<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>228179</bug_id>
          
          <creation_ts>2021-07-22 02:08:05 -0700</creation_ts>
          <short_desc>Stop building WebGPU and the WHLSL compiler to decrease binary size</short_desc>
          <delta_ts>2023-09-15 12:53:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228623</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-bugs.rumbling202</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778671</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 02:08:05 -0700</bug_when>
    <thetext>[Cocoa] Stop building WebGPU and the WHLSL compiler to decrease binary size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778672</commentid>
    <comment_count>1</comment_count>
      <attachid>433998</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 02:09:13 -0700</bug_when>
    <thetext>Created attachment 433998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778750</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-07-22 10:39:38 -0700</bug_when>
    <thetext>Having code that isn&apos;t compiled isn&apos;t usually something we like to do. Perhaps we should instead remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779995</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 01:56:51 -0700</bug_when>
    <thetext>We need a solution for GPU_DRIVER_PREWARMING.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779998</commentid>
    <comment_count>4</comment_count>
      <attachid>434414</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 02:13:01 -0700</bug_when>
    <thetext>Created attachment 434414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779999</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-28 02:16:24 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)

This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780001</commentid>
    <comment_count>6</comment_count>
      <attachid>434415</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 02:24:51 -0700</bug_when>
    <thetext>Created attachment 434415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780286</commentid>
    <comment_count>7</comment_count>
      <attachid>434483</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 18:04:17 -0700</bug_when>
    <thetext>Created attachment 434483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780336</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-29 02:11:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/81260535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780338</commentid>
    <comment_count>9</comment_count>
      <attachid>434506</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 02:22:07 -0700</bug_when>
    <thetext>Created attachment 434506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780349</commentid>
    <comment_count>10</comment_count>
      <attachid>434514</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 04:01:02 -0700</bug_when>
    <thetext>Created attachment 434514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780507</commentid>
    <comment_count>11</comment_count>
      <attachid>434514</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 12:21:02 -0700</bug_when>
    <thetext>Comment on attachment 434514
Patch

GTK failure looks unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780536</commentid>
    <comment_count>12</comment_count>
      <attachid>434565</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 13:26:04 -0700</bug_when>
    <thetext>Created attachment 434565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780543</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-07-29 13:32:07 -0700</bug_when>
    <thetext>The Dawn stuff is currently just stubs so get rid of those as well. The EWS won’t catch any build errors since it’s not enabled by default.

Also you’ll want to grep the CMake stuff for anything ENABLE_WEBGPU. I think you can probably ignore the Source/cmake directory in that since eventually this will all be rebooted and that code would need to go back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780557</commentid>
    <comment_count>14</comment_count>
      <attachid>434569</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 13:55:53 -0700</bug_when>
    <thetext>Created attachment 434569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780568</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-29 14:16:42 -0700</bug_when>
    <thetext>I presume the WHLSL is not coming back, but WebGPU? I am a little confused about the status of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780573</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 14:27:18 -0700</bug_when>
    <thetext>Our current implementation of WebGPU:
1. Is off by default on all platforms
2. Is extremely outdated
3. Has no notion of the GPU Process, and therefore needs to be redesigned and largely rewritten
4. Only implements a fraction of what is in the spec

Removing the code from the tree doesn&apos;t delete it from existence; it&apos;s still in source control. The benefit of reducing binary size seems to outweigh having this code in the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780575</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 14:34:52 -0700</bug_when>
    <thetext>(also https://bugs.webkit.org/show_bug.cgi?id=228179#c2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780585</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-29 15:04:15 -0700</bug_when>
    <thetext>Sure, Myles, I wasn’t questioning the technique.

I was wondering what our WebGPU development strategy was for WebKit. Thanks for filling me in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780597</commentid>
    <comment_count>19</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 15:19:43 -0700</bug_when>
    <thetext>I need to re-revert the changes to Source/WebInspectorUI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780601</commentid>
    <comment_count>20</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-29 15:31:27 -0700</bug_when>
    <thetext>LGTM, but I&apos;d rather let a Webcore developer give this the r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780608</commentid>
    <comment_count>21</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 15:47:48 -0700</bug_when>
    <thetext>I think our intentions may be a bit muddled here; let me try to make them clear.

1. We desire to support WebGPU in WebKit. If somehow an oracle delivered a high-quality implementation of WebGPU today, we would definitely incorporate it and enable it!
2. We do not desire to support WHLSL in WebKit. WGSL is the path forward.
3. I don&apos;t believe there should/will be any development-practices kind of change to the development of WebGPU in WebKit. Development doesn&apos;t need to be done on a branch - our usual process of landing patches one by one to trunk continues to make sense.
4. Any implementation of WebGPU in WebKit would have to be GPU-Process-savvy.
5. It is still a good idea for the implementation of WebGPU to be split into two parts: a frontend part that knows things about IDL and promises and javascript, and a backend part that knows things about the backend APIs (like Metal or D3D or Vulkan). The reason is that we may want to implement future features in WebKit (maybe GPU-accelerated SVG filters???) on top of the backend part, without involving Javascript at all. The current implementation puts the frontend in Modules/WebGPU and the backend in platform/graphics/gpu, but those paths aren&apos;t set in stone.
6. This patch deletes the existing implementation just to reduce binary size in releases of WebKit which don&apos;t enable WebGPU by default. It doesn&apos;t represent a change in direction or policy or anything regarding WebGPU. It&apos;s a (somewhat temporary) pragmatic change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780615</commentid>
    <comment_count>22</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-07-29 16:02:34 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #19)
&gt; I need to re-revert the changes to Source/WebInspectorUI

Yeah, unless your goal is to remove Web Inspector support for WebGPU/WHLSL when inspecting iOS 14.0/14.5/15.0 devices, please undo all your changes inside `Source/WebInspectorUI`.  FWIW it&apos;s not unprecedented to also remove Web Inspector backwards compatibility support for features when they&apos;re removed from ToT, but we usually prefer not to do that with the goal of keeping Web Inspector as much &quot;as it was&quot; (specifically the functionality, not the UI) as possible.

Also, the JSON files you modified are not actually used anywhere in the frontend.  They&apos;re purely for record keeping and archival purposes.  If you did want to do the above, you&apos;d actually want to modify the various `Source/WebInspectorUI/UserInterface/Protocol/Legacy/*/InspectorBackendCommands.js` files as that&apos;s actually used by the frontend.  The JSON files are used to generate the JS files, but the JS file doesn&apos;t have everything in the JSON file so we keep the JSON file around so we can reference it when needed.

I personally think we should keep supporting Web Inspector backwards compatibility, so I&apos;m in favor of allowing the Web Inspector frontend to still see/instrument/etc. WebGPU/WHLSL when inspecting iOS 14.0/14.5/15.0, but that&apos;s just my thoughts.

Also the inspector changes in WebCore look good to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780631</commentid>
    <comment_count>23</comment_count>
      <attachid>434588</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 16:36:12 -0700</bug_when>
    <thetext>Created attachment 434588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780646</commentid>
    <comment_count>24</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 16:57:53 -0700</bug_when>
    <thetext>I added WebGPU to webkit.org/status in https://commits.webkit.org/r280456 with a status of &quot;in progress&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780651</commentid>
    <comment_count>25</comment_count>
      <attachid>434588</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-07-29 17:06:35 -0700</bug_when>
    <thetext>Comment on attachment 434588
Patch

Can you mention in the change log that this isn&apos;t because we don&apos;t want to support WebGPU, but rather that this implementation is incorrect and not serving any purpose (other than slowing down the build). We&apos;ll implement a better version.

Also, you say this is for Cocoa, but also remove the Dawn code that was added by other contributors. I guess this makes sense since you&apos;re removing the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780689</commentid>
    <comment_count>26</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 20:34:51 -0700</bug_when>
    <thetext>I&apos;m probably going to have to land this manually, because the patch is so large</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780692</commentid>
    <comment_count>27</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 20:54:05 -0700</bug_when>
    <thetext>Committed r280467 (240102@main): &lt;https://commits.webkit.org/240102@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977743</commentid>
    <comment_count>28</comment_count>
    <who name="Nezteb">webkit-bugs.rumbling202</who>
    <bug_when>2023-09-15 12:53:53 -0700</bug_when>
    <thetext>I initially was trying to view the WebKit WebGPU demos here: https://webkit.org/demos/webgpu/

However, I get an error &quot;WebGPU not available&quot;, and instructions on how to enable it in Safari.

After looking around WebKit Bugzilla, I was linked to this bug from another: https://bugs.webkit.org/show_bug.cgi?id=243279

Regarding this quote:

&gt; Can you mention in the change log that this isn&apos;t because we don&apos;t want to support WebGPU, but rather that this implementation is incorrect and not serving any purpose (other than slowing down the build). We&apos;ll implement a better version.

Which bug or external page is best to follow the progress of WebGPU in WebKit/Safari?

I found a few open tickets, but am not sure which one to follow: https://bugs.webkit.org/buglist.cgi?bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;component=WebGPU&amp;list_id=9549204&amp;product=WebKit&amp;query_format=advanced</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433998</attachid>
            <date>2021-07-22 02:09:13 -0700</date>
            <delta_ts>2021-07-28 00:52:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210722020912.patch</filename>
            <type>text/plain</type>
            <size>1387</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5Yjc2N2VjZDRkOTJmMjE2YzkyMGQ4
YTgzMjNiZTY4OWVhMDM1NDguLjVkNGU5NzdhODY5NWQ4YjE0MzRlNmNmYzhkNDBkZTU1OGJhZmI0
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDctMjIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2Vi
R1BVIGFuZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3Mgb2ZmIGJ5IGRl
ZmF1bHQgYXQgcnVudGltZS4gVGhlIGNvZGUgc3RpbGwgZXhpc3RzIGlmIHdlIG5lZWQgaXQgZm9y
IGRldmVsb3BtZW50IHB1cnBvc2VzLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaDoKKwogMjAyMS0wNy0yMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVmZXJyZWRWb2ljZUluTGlzdFdpdGhM
b2NhbGUoKSBpcyBkZXByZWNhdGVkIGluIE1vbnRlcmV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKaW5kZXggYTllMTBhMjUxOWUwOTM5MzEzYmYyZjU4ZjRhOTY5NmVlMjFmNTdhZC4u
NmJlNDI0NmRiYWY2NTYwZmRmYWJhMjY5M2NiOTc2ZDNmMDc0ZTE3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtNjE5LDEwICs2MTksNiBAQAogI2RlZmluZSBFTkFCTEVf
V0VCR0wyIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgIShQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxF
X1dITFNMX0NPTVBJTEVSKSAmJiBFTkFCTEUoV0VCR1BVKQogI2RlZmluZSBFTkFCTEVfV0hMU0xf
Q09NUElMRVIgMQogI2VuZGlmCg==
</data>
<flag name="review"
          id="456385"
          type_id="1"
          status="-"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="456387"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434414</attachid>
            <date>2021-07-28 02:13:01 -0700</date>
            <delta_ts>2021-07-28 03:06:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210728021257.patch</filename>
            <type>text/plain</type>
            <size>2955671</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZGQ5ZDNmNTYxNTQ1ZjhjNWU4NzdjMjQwYjQ4NGFjNzAzYWIyZjlkLi5kNDMwYmUzMDNhYzQzNmM3
ZmEyYjk4M2UyZmQxZmVmODU4MWUxMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjcgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtDb2NvYV0gIlJlbW90ZUluc3BlY3RvciBYUEMgY29ubmVjdGlv
biB0byByZWxheSBmYWlsZWQuIiBtZXNzYWdlcyBhcmUgY29uZnVzaW5nIGluIFN0ZEVycgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgyLi42MmYzOGVhMjFiOTll
ZjI0NzQ3ZjhlMjcwYjZlODhmODJhNWM3MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA3
LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRl
Y3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgcmV2ZXJ0
IG9mIHIyODAxOTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjNiYzllODBhYzUzMDAzYTU5N2Q4MjNmN2I0ZWNi
MWUwYWVjNjc4Li41OTA1ODAyMzI4ZDU1MDI2NWQ3MzNhYTY1MjkwYTVhMmUwOGM4MmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDg5IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdl
YkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBM
YXlvdXRCaW5kaW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmlu
ZEdyb3VwTGF5b3V0QmluZGluZy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L05hdmlnYXRvckdQVS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFkZHJlc3NFc2NhcGVNb2RlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlU
eXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QXNzaWdubWVudEV4cHJlc3Npb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRl
cmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QnJlYWsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3Rh
bnRFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29udGludWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHBy
ZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0
aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RW51bWVyYXRpb25NZW1iZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRo
cm91Z2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmli
dXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0
ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbmRleEV4cHJlc3Npb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElu
dGVnZXJMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJU
eXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXBsYWNlV2l0aC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFu
dGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1
Y3R1cmVFbGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3dpdGNoQ2FzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZUFyZ3VtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZURlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRU
eXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGVIYXNoLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlv
bldyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMTWFuZ2xlZE5hbWVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVGdW5jdGlvbldyaXRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVUeXBlV3JpdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3Iu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
VmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFw
LnB5OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tE
dXBsaWNhdGVGdW5jdGlvbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VU
eXBlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hl
Y2tUZXh0dXJlUmVmZXJlbmNlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2NhdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURp
bWVuc2lvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xG
dW5jdGlvblN0YWdlQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SGlnaFpvbWJpZUZpbmRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTE5hbWVDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVM
aWZldGltZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2lvbkNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUmVjdXJzaW9uQ2hlY2tlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2ZU92ZXJsb2FkSW1wbC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eS50eHQ6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFu
ZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGll
cy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXpl
Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNp
dG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBCaW5kaW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5
b3V0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5j
b2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEVuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZUxheW91dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUXVldWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVF1ZXVlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUXVldWUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4
dHVyZVZpZXcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yK0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2Vy
TmF2aWdhdG9yR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9Xb3Jr
ZXJOYXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpnZXRDU1NDYW52YXNDb250ZXh0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVh
dGVDb250ZXh0V2ViR1BVKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0V2ViR1BVKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNXZWJHTCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojppc1dlYkdQVSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVzb2x2ZUNvbnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
YnVpbGRPYmplY3RGb3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
OjpyZWxlYXNlT2JqZWN0Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6YnVpbGRJbml0aWFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FudmFzSWZD
b250ZXh0TWF0Y2hlc0RldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDYW52YXM6OmRldmljZUNvbnRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjppc0RldmljZUZvckNhbnZhc0NvbnRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95V2ViR1BVRGV2aWNlSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2
aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V2ViR1BVUGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnVwZGF0ZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iamVjdEZvclNoYWRl
clByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cGlw
ZWxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVj
dG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRS
ZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BS
ZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENo
YW5nZUNhbnZhc01lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlV2ViR1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRl
V2ViR1BVUGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBwYWdl
L1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpw
cmV3YXJtR2xvYmFsbHkpOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9y
bUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9y
bUNBTGF5ZXJDb2NvYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BV
TGF5ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
UFVMYXllci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QmluZEdyb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJpbmRHcm91cEFsbG9jYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwTGF5b3V0Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyQmluZGluZy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJEZXNj
cmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1
ZmZlclVzYWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbG9yV3JpdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVFcnJvckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNELmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpbWl0cy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMb2FkT3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVT2JqZWN0QmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxh
eW91dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBp
cGVsaW5lTGF5b3V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVQbGF0Zm9ybVR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1
cmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVVGV4dHVyZUZvcm1hdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVUZXh0dXJlVXNhZ2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVXRpbHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW06IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1l
dGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCaW5kR3JvdXBNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRM
YXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU2FtcGxlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRh
bC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VXRpbHNNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6Y29udGVudENoYW5nZWQpOgorCiAyMDIxLTA3LTI3ICBKb29uZ2h1biBQYXJrICA8amg3
MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmUgdGhlIGJ1
aWxkIHdhcm5pbmcgYmVsb3cgc2luY2UgcjI4MDMzMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmlu
ZGV4IGYyNjJhMWQ3MDAxYjhlNTc3YWUxZjI1NTAwNzZkOGM1MjYzNjRhN2MuLjk5MGZjYTA1NDQ0
ODdmZTdmZWMwMTBhNWYzOGUwZmFmNDk1ZmU3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU0IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQg
dGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvQ2FudmFzTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkNhbnZhc01hbmFnZXIucHJvdG90
eXBlLnByb2dyYW1DcmVhdGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DYW52
YXMuanM6CisgICAgICAgIChXSS5DYW52YXMuZnJvbVBheWxvYWQpOgorICAgICAgICAoV0kuQ2Fu
dmFzLmRpc3BsYXlOYW1lRm9yQ29udGV4dFR5cGUpOgorICAgICAgICAoV0kuQ2FudmFzLnN1cHBv
cnRzUmVxdWVzdENvbnRlbnRGb3JDb250ZXh0VHlwZSk6CisgICAgICAgIChXSS5DYW52YXMucHJv
dG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
U2hhZGVyUHJvZ3JhbS5qczoKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0pOgorICAgICAgICAo
V0kuU2hhZGVyUHJvZ3JhbS5jb250ZXh0VHlwZVN1cHBvcnRzUHJvZ3JhbVR5cGUpOgorICAgICAg
ICAoV0kuU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuZ2V0IGNhbnZhcyk6CisgICAgICAgIChXSS5T
aGFkZXJQcm9ncmFtLnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAoV0kuU2hh
ZGVyUHJvZ3JhbS5wcm90b3R5cGUuc2V0IGRpc2FibGVkKToKKyAgICAgICAgKFdJLlNoYWRlclBy
b2dyYW0ucHJvdG90eXBlLmdldCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcik6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTEuMy9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdh
Y3kvMTIuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuNC9JbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kv
MTQuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9MZWdhY3kvMTQuNS9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTUuMC9JbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxz
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUuX3JlZnJlc2hDbGllbnRzU2VjdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQ2FudmFz
T3ZlcnZpZXdDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRWaWV3TW91c2VFbnRlcik6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNTaWRlYmFyUGFuZWwuY3NzOgorICAg
ICAgICAoLnNpZGViYXIgPiAucGFuZWwubmF2aWdhdGlvbi5jYW52YXMgPiAuY29udGVudCA+IC50
cmVlLW91dGxpbmUgLml0ZW0uY2FudmFzOm1hdGNoZXMoLndlYmdsLCAud2ViZ2wyLCAud2VibWV0
YWwpIC5pY29uKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLm5hdmlnYXRpb24uY2FudmFz
ID4gLmNvbnRlbnQgPiAudHJlZS1vdXRsaW5lIC5pdGVtLmNhbnZhczptYXRjaGVzKC53ZWJnbCwg
LndlYmdsMiwgLndlYmdwdSwgLndlYm1ldGFsKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkNh
bnZhc1RyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxlTW91c2VPdmVyKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmNzczoKKyAgICAgICAgKC5j
b250ZW50LXZpZXcudGFiLmdyYXBoaWNzIC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtIC5jYW52YXM6
bWF0Y2hlcygud2ViZ2wsIC53ZWJnbDIsIC53ZWJtZXRhbCkgLmljb24pOgorICAgICAgICAoLmNv
bnRlbnQtdmlldy50YWIuZ3JhcGhpY3MgLm5hdmlnYXRpb24tYmFyID4gLml0ZW0gLmNhbnZhczpt
YXRjaGVzKC53ZWJnbCwgLndlYmdsMiwgLndlYmdwdSwgLndlYm1ldGFsKSAuaWNvbik6IERlbGV0
ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZp
ZXcuanM6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAo
V0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc2F2ZURhdGEpOgorICAg
ICAgICAoV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVmcmVzaENvbnRl
bnQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50KToKKyAgICAgICAg
KFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAg
ICAoV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaCk6CisgICAg
ICAgIChXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4
dE1lbnUpOgorCiAyMDIxLTA3LTI2ICBRaWFvc29uZyBaaG91ICA8cWlhb3NvbmdfemhvdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRm9ybURhdGFFdmVudCBhZGRlZC4gCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczZTE5
OWUxYjdlYjIzZDQ3OWZlMzA1MmNiZmI5NTA5ZDFiYjUyY2MuLjcwMzUxOTQ2ZWZiZWViMmQ3NDIx
ZmJiNjM0ZDZhZmQzYTRlOWQzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDct
MjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVj
cmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3Q6CisgICAgICAg
ICogRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3Q6CisgICAgICAgICogRmVhdHVyZUZsYWdz
L1dlYktpdC1tYWNvcy5wbGlzdDoKKyAgICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNo
b3MucGxpc3Q6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisKIDIwMjEtMDct
MjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4g
TWVkaWEgQ29udHJvbHNdIFttYWNPU10gT3ZlcmZsb3cgYnV0dG9uIHN0aWxsIHNob3dzIGFzIGBv
bmAgZXZlbiBhZnRlciBjb250ZXh0bWVudSBpcyBkaXNtaXNzZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA1YWQ3MDRhM2JhY2I2YWE3OWIyZmVhMDMzYWQ5ODEwNDkyZGQ3ZTg1Li40
NGI0MmI0NTgyNThlMjA3NWM1YzE4Mzg0ZDNjN2Y3OWExNTIyZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRp
bmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyB3ZWJHUFVFbmFibGVkXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFdlYkdQVUVuYWJsZWQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbToKKyAgICAg
ICAgKFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjEtMDctMjYgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TIE1vbnRlcmV5XSBQ
cmVzc2luZyBGbitFIHNob3VsZCBwcmVzZW50IHRoZSBlbW9qaSBwaWNrZXIgd2hlbiBlZGl0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Nh
bnZhcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52
YXMuanNvbgppbmRleCAwOGMxMDA1MTc2YTk2MGU3MzQxZDQwYTlkNzUyNWZhNjUxYjM0YmZmLi41
MTMzYWM3NWJkOGE5NWY1NzQxOTZiYzQyMDQyZWRhNjEzMWEyZmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTEx
LDI1ICsxMSwyNSBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAi
UHJvZ3JhbUlkIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dF
QkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJM
RV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VC
R0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzaGFkZXIgcHJvZ3JhbSBpZGVudGlmaWVy
LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkNvbnRleHRUeXBl
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCi0gICAgICAgICAgICAiZW51bSI6IFsi
Y2FudmFzLTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiIsICJ3ZWJncHUi
XSwKKyAgICAgICAgICAgICJlbnVtIjogWyJjYW52YXMtMmQiLCAiYml0bWFwcmVuZGVyZXIiLCAi
d2ViZ2wiLCAid2ViZ2wyIl0sCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUg
b2YgcmVuZGVyaW5nIGNvbnRleHQgYmFja2luZyB0aGUgY2FudmFzIGVsZW1lbnQuIgogICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiUHJvZ3JhbVR5cGUiLAotICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdM
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsi
Y29tcHV0ZSIsICJyZW5kZXIiXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAi
aWQiOiAiU2hhZGVyVHlwZSIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAm
JiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5n
IiwKICAgICAgICAgICAgICJlbnVtIjogWyJjb21wdXRlIiwgImZyYWdtZW50IiwgInZlcnRleCJd
CiAgICAgICAgIH0sCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwcmVtdWx0aXBsaWVkQWxwaGEiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIiIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIiIH0sCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wy
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG93ZXJQcmVmZXJlbmNlIiwgInR5cGUi
OiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJH
TDIsIFdlYkdQVSIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG93ZXJQcmVmZXJlbmNl
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldl
YkdMLCBXZWJHTDIiIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAt
NjQsMTQgKzY0LDEzIEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6
ICJTaGFkZXJQcm9ncmFtIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlv
biBhYm91dCBhIFdlYkdML1dlYkdMMiBzaGFkZXIgcHJvZ3JhbSBvciBXZWJHUFUgc2hhZGVyIHBp
cGVsaW5lLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVKSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQg
YSBXZWJHTC9XZWJHTDIgc2hhZGVyIHByb2dyYW0uIiwKKyAgICAgICAgICAgICJjb25kaXRpb24i
OiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtVHlwZSIsICIkcmVmIjogIlByb2dyYW1UeXBl
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52
YXNJZCJ9ICwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYXJlc1ZlcnRleEZyYWdtZW50
U2hhZGVyIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIgbW9k
dWxlcyBhcmUgdGhlIHNhbWUgb2JqZWN0IGZvciBhIHJlbmRlciBzaGFkZXIgcGlwbGVpbmUgZm9y
IGEgV2ViR1BVIGRldmljZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbnZhc0lk
IiwgIiRyZWYiOiAiQ2FudmFzSWQifQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwK
QEAgLTE1MSw3ICsxNTAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXF1
ZXN0U2hhZGVyU291cmNlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0
aGUgc291cmNlIG9mIHRoZSBzaGFkZXIgb2YgdGhlIGdpdmVuIHR5cGUgZnJvbSB0aGUgcHJvZ3Jh
bSB3aXRoIHRoZSBnaXZlbiBpZC4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJv
Z3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVm
IjogIlNoYWRlclR5cGUiIH0KQEAgLTE2Myw3ICsxNjIsNyBAQAogICAgICAgICB7CiAgICAgICAg
ICAgICAibmFtZSI6ICJ1cGRhdGVTaGFkZXIiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkNvbXBpbGVzIGFuZCBsaW5rcyB0aGUgc2hhZGVyIHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3
aXRoIHRoZSBnaXZlbiBzb3VyY2UgY29kZS4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIo
ZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxF
X1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJk
ZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYi
OiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIs
ICIkcmVmIjogIlNoYWRlclR5cGUiIH0sCkBAIC0yNDYsMTQgKzI0NSwxNCBAQAogICAgICAgICB9
LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFtQ3JlYXRlZCIsCi0gICAg
ICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dF
QkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAg
ICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VC
R0wiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFkZXJQcm9ncmFtIiwgIiRyZWYiOiAiU2hhZGVyUHJvZ3JhbSIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFt
RGVsZXRlZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdM
KSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0KICAg
ICAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQppbmRleCAyOWEyZGVhNzI0ZjBiYmVj
ZmViYTZkYjkyMDYwODE3MDFlNTEwYzUxLi5iYzQ4NTBiZmY0MzNjNzk2ODRiZTA5NDM0YTBlMGRj
MTgyOWQ0NzAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CkBAIC01MSw3ICs1MSw2IEBAIF9F
TlVNX0lERU5USUZJRVJfUkVOQU1FX01BUCA9IHsKICAgICAnY2FudmFzLXdlYmdsMic6ICdDYW52
YXNXZWJHTDInLCAgIyBSZWNvcmRpbmcuVHlwZS5jYW52YXMtd2ViZ2wyCiAgICAgJ3dlYmdsJzog
J1dlYkdMJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLndlYmdsCiAgICAgJ3dlYmdsMic6ICdXZWJH
TDInLCAgIyBDYW52YXMuQ29udGV4dFR5cGUud2ViZ2wyCi0gICAgJ3dlYmdwdSc6ICdXZWJHUFUn
LCAgIyBDYW52YXMuQ29udGV4dFR5cGUuZ3B1CiAgICAgJ2JpdG1hcHJlbmRlcmVyJzogJ0JpdG1h
cFJlbmRlcmVyJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmJpdG1hcHJlbmRlcmVyCiAgICAgJ21l
ZGlhc291cmNlJzogJ01lZGlhU291cmNlJywgICMgQ29uc29sZS5DaGFubmVsU291cmNlLm1lZGlh
c291cmNlCiAgICAgJ3dlYnJ0Yyc6ICdXZWJSVEMnLCAgIyBDb25zb2xlLkNoYW5uZWxTb3VyY2Uu
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IDRhYWY3NTlhYjA0MWQ5YmJk
NDE5YWIzMmJhNDg1OTM2Y2YyM2ZjN2YuLjUyNTY1NzYwZDQ1ZDhhMjYzNDEyNDg0MzUyOTA0YmZi
M2M0ZDgyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0xMjI1LDE5ICsxMjI1
LDYgQEAgV2ViR0xVc2luZ01ldGFsOgogICAgICAgIkhBVkUoV0VCR0xfQ09NUEFUSUJMRV9NRVRB
TCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogCi1XZWJHUFVFbmFibGVkOgotICB0eXBl
OiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiV2ViR1BVIgotICBodW1hblJlYWRhYmxlRGVz
Y3JpcHRpb246ICJXZWJHUFUgU2tldGNoIHByb3RvdHlwZSIKLSAgY29uZGl0aW9uOiBFTkFCTEUo
V0VCR1BVKQotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVs
dDogV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi0gICAgV2ViS2l0OgotICAgICAgZGVm
YXVsdDogV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi0gICAgV2ViQ29yZToKLSAgICAg
IGRlZmF1bHQ6IGZhbHNlCi0KIFdlYk1Gb3JtYXRSZWFkZXJFbmFibGVkOgogICB0eXBlOiBib29s
CiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGUuaAppbmRleCBkMTBhYTQyYjgwYTJiNTc2YzllOGM1YzY5OWE1ZDhiMGVlMmQ4MDA5Li5k
ODY4OGRjZWI2MDliZTBlNzEyM2U1NDE5OWQ2MmYzMjFjOGFjOGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKQEAgLTkwMiwxMCArOTAyLDYgQEAKICNlcnJvciAiRU5BQkxFKFdFQkdMMikgcmVx
dWlyZXMgRU5BQkxFKFdFQkdMKSIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KSAmJiAhRU5BQkxFKFdFQkdQVSkKLSNlcnJvciAiRU5BQkxFKFdITFNMX0NPTVBJTEVSKSByZXF1
aXJlcyBFTkFCTEUoV0VCR1BVKSIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVNfSU5fV09SS0VSUykgJiYgIUVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogI2Vycm9yICJFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKSByZXF1aXJlcyBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBUykiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCBh
OWUxMGEyNTE5ZTA5MzkzMTNiZjJmNThmNGE5Njk2ZWUyMWY1N2FkLi41ODU3Yjc2NzU4ZDU4OTEw
MWEzODFjOWVlYzc1ZGZmNzU2NjE3NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC0yNjEsMTAgKzI2MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
RU5BQkxFX0dQVV9EUklWRVJfUFJFV0FSTUlORykgJiYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMAotI2RlZmluZSBFTkFCTEVfR1BVX0RS
SVZFUl9QUkVXQVJNSU5HIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0hBUkRXQVJF
X0pQRUcpICYmICEoUExBVEZPUk0oTUFDKSAmJiBDUFUoWDg2XzY0KSkKICNkZWZpbmUgRU5BQkxF
X0hBUkRXQVJFX0pQRUcgMQogI2VuZGlmCkBAIC02MTksMTQgKzYxNSw2IEBACiAjZGVmaW5lIEVO
QUJMRV9XRUJHTDIgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiAh
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQw
MCkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1V
TEFUT1IpCi0jZGVmaW5lIEVOQUJMRV9XRUJHUFUgMQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChF
TkFCTEVfV0hMU0xfQ09NUElMRVIpICYmIEVOQUJMRShXRUJHUFUpCi0jZGVmaW5lIEVOQUJMRV9X
SExTTF9DT01QSUxFUiAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9XRUJQUk9DRVNT
X05TUlVOTE9PUCkgJiYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBFTkFCTEVfV0VCUFJPQ0VTU19O
U1JVTkxPT1AgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA5Nzc1ODliZDI4NzQ0NmY5MDM0YjIyY2ZlMjZiMTkyNTQxNGFj
OTU3Li43YTNjMzM1MjJmNDY5ZmYzNmFhYWVhMmIxN2Y0OGY2ZjZlZDdlY2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTU1MCw3NCAr
NTUwLDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25D
YWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkcml2ZXIv
TmF2aWdhdG9yK1dlYkRyaXZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L0dQVUJ1ZmZlclVzYWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
Q2FudmFzQ29udGV4dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9y
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZUJpdHMuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVPcmlnaW4zRC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVU91
dE9mTWVtb3J5RXJyb3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1
ZXN0QWRhcHRlck9wdGlvbnMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVT
YW1wbGVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVNo
YWRlclN0YWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3Rh
Z2VCaXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAucHkKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3Rh
bmRhcmRMaWJyYXJ5LnR4dAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVRdWV1ZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmVWaWV3LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yK0dQVS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvTmF2aWdhdG9yK1dlYlhSLmlkbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmY0NTdm
YTVlMjkwNTQxYjM2NmJhYmU3ZWQ1NDQ0YTczODdkNjI1Li5lZjMyMjZkY2M2MzAzNDZiNGYyNzg3
ZjA0ZTQxYjAyOThiOTg4ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNTg3LDggKzU4Nyw2IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViRGF0YWJhc2UuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJHUFUu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdp
bmRvd1dlYkdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0RhdGFDdWUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0RhdGFDdWUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEYXRhVHJhbnNmZXIuY3BwCkBAIC04NTMsNjggKzg1MSw2IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9ybURhdGFFdmVudC5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9ybURhdGFFdmVu
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dDT2Jz
ZXJ2YXRpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dDT2JzZXJ2YXRpb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5n
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJsZW5kRGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
QmxlbmREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlclVzYWdlLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJV
c2FnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VUNhbnZhc0NvbnRleHQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVUNhbnZhc0NvbnRleHQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JTdGF0
ZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVDb2xvcldyaXRlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZUJpdHMuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yV3JpdGVCaXRzLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1
bmN0aW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVDb21wYXJlRnVuY3Rpb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlcHRoU3RlbmNpbFN0
YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVUVycm9yRmlsdGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVudDNELmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFeHRlbnQzRC5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUlucHV0U3RhdGVEZXNjcmlw
dG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVJbnB1dFN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUxvYWRPcC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVTG9hZE9wLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3JpZ2luM0QuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU9yaWdpbjNELmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3V0T2ZNZW1vcnlFcnJvci5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3V0
T2ZNZW1vcnlFcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2FtcGxlckRl
c2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2UuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0YWdlLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2VCaXQuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRl
clN0YWdlQml0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVU3RvcmVPcC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVU3RvcmVPcC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVGb3Jt
YXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVRleHR1cmVGb3JtYXQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVUZXh0dXJlVXNhZ2UuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVVbmNhcHR1
cmVkRXJyb3JFdmVudC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVZhbGlkYXRpb25FcnJvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVycm9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhaW5Ob2RlLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluTm9kZS5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhaW5PcHRp
b25zLmNwcApAQCAtMTQxNyw4ICsxMzUzLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrQ3JlZGVudGlhbHMuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitDcmVkZW50aWFs
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmln
YXRvcitFTUUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU05hdmlnYXRvcitFTUUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dhbWVwYWQuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHYW1lcGFk
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdh
dG9yK0dlb2xvY2F0aW9uLmNwcApAQCAtMTQ0Nyw4ICsxMzgxLDYgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
Q3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNOYXZpZ2F0b3JFTUUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvckVNRS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR1BVLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR2FtZXBhZC5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR2Ft
ZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtMjQzNSw3MiArMjM2Nyw2IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUFkYXB0ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdQVUFkYXB0ZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXAuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cC5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cEJpbmRpbmcu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
QmluZEdyb3VwTGF5b3V0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXIuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJ1ZmZlci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJ1ZmZlckJpbmRp
bmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUJ1ZmZlckJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kQnVmZmVyLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tbWFuZEVuY29k
ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUNvbW1hbmRFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVD
b21wdXRlUGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2UuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZS5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUVycm9yU2NvcGVz
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVEZXZpY2VFcnJvclNjb3Blcy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVy
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVQaXBlbGluZUxheW91dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVRdWV1ZS5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
UXVldWUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNhbXBsZXIu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VVNhbXBsZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVTaGFkZXJNb2R1bGUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVN3YXBDaGFpbi5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1cmUuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1
cmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVUZXh0dXJlVmlldy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRB
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0yNTk5LDEyICsyNDY1LDggQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJHbG9iYWxTY29wZS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2Vy
R2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXb3JrZXJMb2NhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IrR1BVLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IrR1BV
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2Vy
TmF2aWdhdG9yLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXb3JrZXJOYXZpZ2F0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvckdQVS5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlclR5cGUuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlclR5cGUu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrbGV0
LmNwcApAQCAtMjcyNyw4ICsyNTg5LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U2NyaXB0cy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRT
Y3JpcHRzRGF0YS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL1VzZXJBZ2VudFN0eWxlU2hlZXRzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRMaWJyYXJ5LmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJD
b3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlSlNCdWlsdGlucy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGViYTFmMTcwMGUxMjVhYzhhMTA4YzNjZDEw
ZjU4MDViYTlmZWVkZDEuLmMzMzIzNDJiNjJmODY4ZTNlYmJhNTQyNzIyYjU3ODUwMGNiM2FjOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDU5LDY4ICs0NTksNiBAQCBKU19C
SU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb2xvcldyaXRlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9H
UFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVMb2FkT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVU9y
aWdpbjNELmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9y
eUVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBs
ZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFk
ZXJTdGFnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3Iu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4
SW5wdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9OYXZp
Z2F0b3IrR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJv
clNjb3Blcy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
RXZlbnRIYW5kbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVR
dWV1ZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTYW1wbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZVZpZXcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
citHUFUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnhyL05hdmlnYXRvcitXZWJYUi5pZGwgXApAQCAt
MTg0NSwxOCArMTc4Myw2IEBAICQoR0VORVJBVEVfU0VUVElOR1MpIDogJSA6ICQoV2ViQ29yZSkv
U2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy8lLmVyYiAkKFdFQl9QUkVGCiAKICMgLS0tLS0tLS0K
IAotIyBXSExTTCBTdGFuZGFyZCBMaWJyYXJ5Ci0KLWFsbCA6IFdITFNMU3RhbmRhcmRMaWJyYXJ5
LmggV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKLQotV0hMU0xTdGFuZGFyZExp
YnJhcnkuaCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAotCWJhc2ggLWMg
IiQoUEVSTCkgJDwgV0hMU0xTdGFuZGFyZExpYnJhcnkgPChnemlwIC1jbiAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCkgJEAiCi0KLVdITFNM
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwIDogJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKLQkkKFBZVEhP
TikgJDwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eS50eHQgJEAKLQotIyAtLS0tLS0tLQotCiAjIENvbW1vbiBnZW5lcmF0b3IgdGhpbmdzCiAKIENP
TU1PTl9CSU5ESU5HU19TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZWQwZWRmM2MyMjI5YzkxODI4MzhhZmVhZjhiMmYwNmNhMzM0OGYx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJTdGFnZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQmluZGluZ1R5cGUgewotICAgIFVuaWZvcm1C
dWZmZXIsCi0gICAgRHluYW1pY1VuaWZvcm1CdWZmZXIsCi0gICAgU2FtcGxlciwKLSAgICBTYW1w
bGVkVGV4dHVyZSwKLSAgICBTdG9yYWdlQnVmZmVyLAotICAgIER5bmFtaWNTdG9yYWdlQnVmZmVy
LAotfTsKLQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgewotICAgIHVuc2lnbmVk
IGJpbmRpbmc7Ci0gICAgR1BVU2hhZGVyU3RhZ2VGbGFncyB2aXNpYmlsaXR5OwotICAgIEdQVUJp
bmRpbmdUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOGQwZmYwN2I5NzEwNjJlNWFjYjE4ZmU4MjI5ZDcyMzA3MTYyYjM2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1MzIgR1BV
U2hhZGVyU3RhZ2VGbGFnczsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVQmluZGluZ1R5cGUK
LV0gZW51bSBHUFVCaW5kaW5nVHlwZSB7Ci0gICAgInVuaWZvcm0tYnVmZmVyIiwKLSAgICAiZHlu
YW1pYy11bmlmb3JtLWJ1ZmZlciIsCi0gICAgInNhbXBsZXIiLAotICAgICJzYW1wbGVkLXRleHR1
cmUiLAotICAgICJzdG9yYWdlLWJ1ZmZlciIsCi0gICAgImR5bmFtaWMtc3RvcmFnZS1idWZmZXIi
Ci0gICAgLy8gVE9ETyBvdGhlciBiaW5kaW5nIHR5cGVzCi19OwotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BV
QmluZEdyb3VwTGF5b3V0QmluZGluZyB7Ci0gICAgcmVxdWlyZWQgdTMyIGJpbmRpbmc7Ci0gICAg
cmVxdWlyZWQgR1BVU2hhZGVyU3RhZ2VGbGFncyB2aXNpYmlsaXR5OwotICAgIHJlcXVpcmVkIEdQ
VUJpbmRpbmdUeXBlIHR5cGU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NjM2YmZlNGQ3MmVkOWE0YjU0MDcwYTU3YTNiMDkzMzk1Y2Rk
NjJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXRCaW5k
aW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8R1BVQmlu
ZEdyb3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZkYTdiZDRjYmIxODkxODg4YzY1MjRj
YzUzNDIzNzc5MGZkMDc3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQmluZEdy
b3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU0MjE5MjM3N2U2Yzg3MTg3ZmZmNmRiN2RiYzUxNTc2YWZmN2FkNjguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVCbGVuZEZhY3RvcgotXSBlbnVtIEdQVUJs
ZW5kRmFjdG9yIHsKLSAgICAiemVybyIsCi0gICAgIm9uZSIsCi0gICAgInNyYy1jb2xvciIsCi0g
ICAgIm9uZS1taW51cy1zcmMtY29sb3IiLAotICAgICJzcmMtYWxwaGEiLAotICAgICJvbmUtbWlu
dXMtc3JjLWFscGhhIiwKLSAgICAiZHN0LWNvbG9yIiwKLSAgICAib25lLW1pbnVzLWRzdC1jb2xv
ciIsCi0gICAgImRzdC1hbHBoYSIsCi0gICAgIm9uZS1taW51cy1kc3QtYWxwaGEiLAotICAgICJz
cmMtYWxwaGEtc2F0dXJhdGVkIiwKLSAgICAiYmxlbmQtY29sb3IiLAotICAgICJvbmUtbWludXMt
YmxlbmQtY29sb3IiCi19OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVCbGVuZE9wZXJhdGlv
bgotXSBlbnVtIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICAiYWRkIiwKLSAgICAic3VidHJhY3Qi
LAotICAgICJyZXZlcnNlLXN1YnRyYWN0IiwKLSAgICAibWluIiwKLSAgICAibWF4IgotfTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BVQmxlbmRGYWN0b3Igc3Jj
RmFjdG9yID0gIm9uZSI7Ci0gICAgR1BVQmxlbmRGYWN0b3IgZHN0RmFjdG9yID0gInplcm8iOwot
ICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbiA9ICJhZGQiOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZGYyNGZlN2YxMWNlODRjM2RjZmE0YzE5MTZh
YTgwZTk0OGRmZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0Owot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVUJ1ZmZlclVzYWdlRmxhZ3M7Ci0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFy
eSBHUFVCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCB1NjQgc2l6ZTsKLSAgICByZXF1
aXJlZCBHUFVCdWZmZXJVc2FnZUZsYWdzIHVzYWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzA4MzE0ZDUyYWYzOTRkZGNjNWJhZWMxNGI2M2EzYzA1M2MyMzJmMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIEdQVUJ1ZmZlclVzYWdlIHsKLSAgICBjb25zdCB1MzIgTk9ORSA9IDA7Ci0gICAgY29u
c3QgdTMyIE1BUF9SRUFEID0gMTsKLSAgICBjb25zdCB1MzIgTUFQX1dSSVRFID0gMjsKLSAgICBj
b25zdCB1MzIgQ09QWV9TUkMgPSA0OwotICAgIGNvbnN0IHUzMiBDT1BZX0RTVCA9IDg7Ci0gICAg
Y29uc3QgdTMyIElOREVYID0gMTY7Ci0gICAgY29uc3QgdTMyIFZFUlRFWCA9IDMyOwotICAgIGNv
bnN0IHUzMiBVTklGT1JNID0gNjQ7Ci0gICAgY29uc3QgdTMyIFNUT1JBR0UgPSAxMjg7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhiMTUyOGZmYzNhOTUyNTg1MGE5NGQ2
NWVkMjc5NGE0ZDgwNGMzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAi
V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdQVUNhbnZhc0NvbnRleHQpOwotCi1zdGQ6OnVu
aXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4gR1BVQ2FudmFzQ29udGV4dDo6Y3JlYXRlKENhbnZh
c0Jhc2UmIGNhbnZhcykKLXsKLSAgICBhdXRvIGNvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8R1BV
Q2FudmFzQ29udGV4dD4obmV3IEdQVUNhbnZhc0NvbnRleHQoY2FudmFzKSk7Ci0gICAgY29udGV4
dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLUdQVUNhbnZh
c0NvbnRleHQ6OkdQVUNhbnZhc0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzKQotICAgIDogR1BV
QmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKLXsKLX0KLQotUmVmPFdlYkdQVVN3
YXBDaGFpbj4gR1BVQ2FudmFzQ29udGV4dDo6Y29uZmlndXJlU3dhcENoYWluKGNvbnN0IFdlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgYXV0byBncHVEZXNjcmlw
dG9yID0gZGVzY3JpcHRvci5hc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdw
dURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShudWxs
cHRyKTsKLSAgICAKLSAgICBhdXRvIGdwdVN3YXBDaGFpbiA9IEdQVVN3YXBDaGFpbjo6dHJ5Q3Jl
YXRlKCpncHVEZXNjcmlwdG9yLCBjYW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgpLmhl
aWdodCgpKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBncHVTd2FwQ2hhaW47Ci0gICAgYXV0byBuZXdT
d2FwQ2hhaW4gPSBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShXVEZNb3ZlKGdwdVN3YXBDaGFpbikp
OwotICAgIAotICAgIC8vIFVwb24gc3VjY2VzcywgaW52YWxpZGF0ZSBhbmQgcmVwbGFjZSBhbnkg
ZXhpc3Rpbmcgc3dhcCBjaGFpbi4KLSAgICBpZiAoc3VjY2VzcykgewotICAgICAgICAvLyBGSVhN
RTogVGVzdCB0aGF0IHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBlcnJvciByZXBvcnRpbmcu
Ci0gICAgICAgIGlmIChtX3N3YXBDaGFpbikKLSAgICAgICAgICAgIG1fc3dhcENoYWluLT5kZXN0
cm95KCk7Ci0KLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJl
U3dhcENoYWluKCp0aGlzLCBuZXdTd2FwQ2hhaW4uZ2V0KCkpOwotCi0gICAgICAgIG1fc3dhcENo
YWluID0gbmV3U3dhcENoYWluLmNvcHlSZWYoKTsKLQotICAgICAgICBub3RpZnlDYW52YXNDb250
ZW50Q2hhbmdlZCgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3U3dhcENoYWluOwotfQot
Ci1QbGF0Zm9ybUxheWVyKiBHUFVDYW52YXNDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSAgICBpZiAobV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKQotICAg
ICAgICByZXR1cm4gbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKG1fc3dhcENoYWluICYmIG1fc3dhcENo
YWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpLT5yZXNo
YXBlKHdpZHRoLCBoZWlnaHQpOwotCi0gICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5nZWQoKTsK
LX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
Ci17Ci0gICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOwotfQotCi12b2lkIEdQVUNh
bnZhc0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKLXsKLSAgICAvLyBG
SVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYg
bV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7Ci0gICAgICAgIG1fc3dh
cENoYWluLT5zd2FwQ2hhaW4oKS0+cHJlc2VudCgpOwotICAgICAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IGZhbHNlOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIw
ZmU3YjBkMDhjZTkzYzdlY2E4Njk0YTAwZDE2MzJlMTNkMGM5OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVDYW52YXNDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIKLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVN3YXBDaGFpbkRl
c2NyaXB0b3I7Ci0KLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQgZmluYWwgOiBwdWJsaWMgR1BVQmFz
ZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdQ
VUNhbnZhc0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R1BV
Q2FudmFzQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmKTsKLQotICAgIEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4o
Y2FudmFzQmFzZSgpKTsgfQotCi0gICAgV2ViR1BVU3dhcENoYWluKiBzd2FwQ2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotICAgIFJlZjxXZWJHUFVTd2FwQ2hhaW4+
IGNvbmZpZ3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7Ci0K
LXByaXZhdGU6Ci0gICAgR1BVQ2FudmFzQ29udGV4dChDYW52YXNCYXNlJik7Ci0KLSAgICAvLyBH
UFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQKLSAgICBib29sIGlzV2ViR1BVKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBm
aW5hbDsKLSAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgZmluYWw7Ci0gICAg
dm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIGZpbmFsOwotCi0gICAgLy8gQWN0
aXZlRE9NT2JqZWN0LgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiR1BVQ2FudmFzQ29udGV4dCI7IH0KLSAgICAvLyBGSVhNRTogU3R1
YnMuCi0gICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9Ci0KLSAgICBib29sIG1faXNEaXNwbGF5aW5n
V2l0aFBhaW50IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8V2ViR1BVU3dhcENoYWluPiBtX3N3YXBD
aGFpbjsKLX07Ci0KLX0gLy8gbgFhbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0LCBp
c1dlYkdQVSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1YTI0MTYxMWQwMGQ2YjE2ZGM1M2ZiNzdlNjBiMjZmYmI5MzJlMDAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVVRleHR1cmVVc2FnZUZsYWdzOwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEltcGxlbWVudGVkQXM9V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5
IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVURldmljZSBk
ZXZpY2U7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7IC8vIEZJWE1FOiBkZWZhdWx0IGlzIEdQVVRleHR1cmVVc2Fn
ZS5PVVRQVVRfQVRUQUNITUVOVC4KLX07Ci0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbENhbnZhc0Jhc2UsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0g
aW50ZXJmYWNlIEdQVUNhbnZhc0NvbnRleHQgewotICAgIC8vIGJhY2stcmVmZXJlbmNlIHRvIHRo
ZSBjYW52YXMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENhbnZhc0VsZW1lbnQgY2FudmFz
OwotCi0gICAgLy8gQ2FsbGluZyBjb25maWd1cmVTd2FwQ2hhaW4gYSBzZWNvbmQgdGltZSBpbnZh
bGlkYXRlcyB0aGUgcHJldmlvdXMgb25lLAotICAgIC8vIGFuZCBhbGwgb2YgdGhlIHRleHR1cmVz
IGl04oCZcyBwcm9kdWNlZC4KLSAgICBXZWJHUFVTd2FwQ2hhaW4gY29uZmlndXJlU3dhcENoYWlu
KFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBOb3QgaW1w
bGVtZW50ZWQgeWV0LgotICAgIC8vIFByb21pc2U8R1BVVGV4dHVyZUZvcm1hdD4gZ2V0U3dhcENo
YWluUHJlZmVycmVkRm9ybWF0KEdQVURldmljZSBkZXZpY2UpOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTI4OTVmNWYyMjNhMzkxZTRkMzE3ZWQyOWVhZDBhZjQ3MjZmYWRjMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb2xvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IEdQVUNvbG9yIHsKLSAgICByZXF1aXJlZCBmbG9hdCByOwotICAgIHJlcXVpcmVkIGZsb2F0IGc7
Ci0gICAgcmVxdWlyZWQgZmxvYXQgYjsKLSAgICByZXF1aXJlZCBmbG9hdCBhOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlw
dG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNj
cmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFhMDMwOTVmNjJlN2Rk
YzgyOGYyNzFhNjhmODM1NGM0MTI4NjUxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIEdQVUNvbG9yV3JpdGVGbGFnczsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLQotICAg
IHJlcXVpcmVkIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJsZW5kOwotICAgIHJlcXVpcmVkIEdQ
VUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNvbG9yV3JpdGVGbGFncyB3cml0
ZU1hc2s7IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTc4ZGM1ODgxYTAxNzk3YjUxMDE0ODM4ZTVlMGM3ZjFkYjk2MmRlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2Ug
R1BVQ29sb3JXcml0ZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUgPSAwOwotICAgIGNvbnN0IHUzMiBS
RUQgPSAxOwotICAgIGNvbnN0IHUzMiBHUkVFTiA9IDI7Ci0gICAgY29uc3QgdTMyIEJMVUUgPSA0
OwotICAgIGNvbnN0IHUzMiBBTFBIQSA9IDg7Ci0gICAgY29uc3QgdTMyIEFMTCA9IDE1OwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5j
dGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rp
b24uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGZmYjRmMWRmMmRkYmU5MzQx
YWNjM2ZkMTFmNWEyNzBhYzRlNDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5j
dGlvbi5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVUNvbXBhcmVGdW5jdGlv
biB7Ci0gICAgIm5ldmVyIiwKLSAgICAibGVzcyIsCi0gICAgImVxdWFsIiwKLSAgICAibGVzcy1l
cXVhbCIsCi0gICAgImdyZWF0ZXIiLAotICAgICJub3QtZXF1YWwiLAotICAgICJncmVhdGVyLWVx
dWFsIiwKLSAgICAiYWx3YXlzIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM5MmZiMGQzODkzNjFhZTI2NmVjZWU5NGQw
NGQwYmZkMGY2YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVz
Y3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbGVhbiBkZXB0aFdyaXRlRW5hYmxlZCA9
IGZhbHNlOwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmUgPSAiYWx3YXlzIjsK
LQotLyogTm90IFlldCBJbXBsZW1lbnRlZAotICAgIEdQVVN0ZW5jaWxTdGF0ZUZhY2VEZXNjcmlw
dG9yIHN0ZW5jaWxGcm9udDsKLSAgICBHUFVTdGVuY2lsU3RhdGVGYWNlRGVzY3JpcHRvciBzdGVu
Y2lsQmFjazsKLQotICAgIHUzMiBzdGVuY2lsUmVhZE1hc2s7Ci0gICAgdTMyIHN0ZW5jaWxXcml0
ZU1hc2s7Ci0qLwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUVycm9yRmlsdGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUVy
cm9yRmlsdGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4ZjQ5YTYxYzI3
OWU5MDI2NDg0YzZlZjkwNjQ1ZWFkNWIxYWJhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJv
ckZpbHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVUVycm9yRmlsdGVy
IHsKLSAgICAibm9uZSIsCi0gICAgIm91dC1vZi1tZW1vcnkiLAotICAgICJ2YWxpZGF0aW9uIgot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNE
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDExOTc2OTczNjA3MTU2NjQ1ZWFmMDMzNWI4MmUw
ODgyMTdiYWMyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVUlu
dGVnZXJDb29yZGluYXRlOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVRXh0ZW50M0QgewotICAgIHJlcXVp
cmVkIEdQVUludGVnZXJDb29yZGluYXRlIHdpZHRoOwotICAgIHJlcXVpcmVkIEdQVUludGVnZXJD
b29yZGluYXRlIGhlaWdodDsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBkZXB0
aDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2Fk
T3AuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MyZDRmYTI4MmZjNjk2MDI3ZTljZmE1ZjM1YTQ2
NzJhNzkzYTczYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZW51bSBHUFVMb2FkT3AgewotICAgICJjbGVhciIsCi0gICAgImxvYWQi
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2lu
M0QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMmI3YjM2ZGRjYTNhYWM1Y2IzNTBlMDA0MDhhMjc0
MTZkMjY1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVU9yaWdpbjNEIHsK
LSAgICB1bnNpZ25lZCB4IHsgMCB9OwotICAgIHVuc2lnbmVkIHkgeyAwIH07Ci0gICAgdW5zaWdu
ZWQgeiB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVPcmlnaW4zRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4z
RC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NzE5YzAyMjRkMzM3YjFhMTY2
MGI4ZDA2MDgxMTI3YjM5NWJjZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBHUFVPcmlnaW4zRCB7Ci0gICAgdTMyIHggPSAwOwotICAgIHUzMiB5ID0gMDsK
LSAgICB1MzIgeiA9IDA7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGE0ODBhZTAyZGExZmM1YjA0MDE3NGVhNzJmOTIzODc1NmNmMWFkMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIEdQVU91dE9mTWVtb3J5RXJyb3IgewotICAgIGNvbnN0cnVjdG9yKCk7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJP
cHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFw
dGVyT3B0aW9ucy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYTAwZDYxYWJm
OGE1MDRhNDAxOTk0YTdjYmRhMTEyYmQzOGU5N2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgSW1w
bGVtZW50ZWRBcz1HUFVQb3dlclByZWZlcmVuY2UKLV0gZW51bSBHUFVQb3dlclByZWZlcmVuY2Ug
ewotICAgICJsb3ctcG93ZXIiLAotICAgICJoaWdoLXBlcmZvcm1hbmNlIgotfTsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyB7Ci0gICAgR1BVUG93ZXJQcmVmZXJlbmNl
PyBwb3dlclByZWZlcmVuY2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0ZTMxMzY4NDk5ZmNlMmY0YmNjODE5MDlkNzNhZDgxMGM1YzNlMTY3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1H
UFVBZGRyZXNzTW9kZQotXSBlbnVtIEdQVUFkZHJlc3NNb2RlIHsKLSAgICAiY2xhbXAtdG8tZWRn
ZSIsCi0gICAgInJlcGVhdCIsCi0gICAgIm1pcnJvci1yZXBlYXQiCi19OwotCi1bCi0gICAgSW1w
bGVtZW50ZWRBcz1HUFVGaWx0ZXJNb2RlCi1dIGVudW0gR1BVRmlsdGVyTW9kZSB7Ci0gICAgIm5l
YXJlc3QiLAotICAgICJsaW5lYXIiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVU2FtcGxlckRlc2Ny
aXB0b3IgewotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVSA9ICJjbGFtcFRvRWRnZSI7
Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVWID0gImNsYW1wVG9FZGdlIjsKLSAgICBH
UFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVcgPSAiY2xhbXBUb0VkZ2UiOwotICAgIEdQVUZpbHRl
ck1vZGUgbWFnRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIEdQVUZpbHRlck1vZGUgbWluRmlsdGVy
ID0gIm5lYXJlc3QiOwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFwRmlsdGVyID0gIm5lYXJlc3Qi
OwotICAgIGZsb2F0IGxvZE1pbkNsYW1wID0gMDsKLSAgICBmbG9hdCBsb2RNYXhDbGFtcCA9IDB4
ZmZmZmZmZmY7IC8vIFRPRE86IFdoYXQgc2hvdWxkIHRoaXMgYmU/IFdhcyBOdW1iZXIuTUFYX1ZB
TFVFLgotICAgIHUzMiBtYXhBbmlzb3Ryb3B5ID0gMTsKLSAgICBHUFVDb21wYXJlRnVuY3Rpb24g
Y29tcGFyZUZ1bmN0aW9uID0gIm5ldmVyIjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTM1YWQ0N2VmZGQ4MGU0Yzk1MjYxZTVkMjllYWMxYTNhYjg5ODI0Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVTaGFkZXJTdGFnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVU2hh
ZGVyU3RhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVTaGFkZXJTdGFnZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdQVVNoYWRlclN0YWdlPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBGbGFncyA6
IEdQVVNoYWRlclN0YWdlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgVmVydGV4
ID0gMSA8PCAwLAotICAgICAgICBGcmFnbWVudCA9IDEgPDwgMSwKLSAgICAgICAgQ29tcHV0ZSA9
IDEgPDwgMiwKLSAgICB9OwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVU2hhZGVyU3RhZ2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzMxYzIz
OTVlM2FiNjJkYTVhMzVhMjMwODU3N2M1ODg3Yzc0YzYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVNoYWRlclN0YWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIERvTm90Q2hlY2tD
b25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVU2hhZGVy
U3RhZ2UgewotICAgIGNvbnN0IHUzMiBOT05FID0gMDsKLSAgICBjb25zdCB1MzIgVkVSVEVYID0g
MTsKLSAgICBjb25zdCB1MzIgRlJBR01FTlQgPSAyOwotICAgIGNvbnN0IHUzMiBDT01QVVRFID0g
NDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTdG9y
ZU9wLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzEyYjk1MmU4NzQ4MDBjZTY2YTlkNzk3ODhm
MDQ1NDUyYWEyYjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVTdG9yZU9wIHsKLSAgICAic3RvcmUiCi19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmEwYzNjMjQ4YmQ4ZmFjMWJj
MTU2OGQ3ZDYxMmJhMzY5NGZlZWYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgR1BVSW50ZWdlckNvb3JkaW5hdGU7Ci10eXBlZGVmIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgR1BVU2l6ZTMyOwotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNp
Z25lZCBsb25nIEdQVVRleHR1cmVVc2FnZUZsYWdzOwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1H
UFVUZXh0dXJlRGltZW5zaW9uCi1dIGVudW0gR1BVVGV4dHVyZURpbWVuc2lvbiB7Ci0gICAgIjFk
IiwKLSAgICAiMmQiLAotICAgICIzZCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVUZXh0dXJlRGVz
Y3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgR1BVRXh0ZW50M0Qgc2l6ZTsKLSAgICBHUFVJbnRlZ2Vy
Q29vcmRpbmF0ZSBtaXBMZXZlbENvdW50ID0gMTsKLSAgICBHUFVTaXplMzIgc2FtcGxlQ291bnQg
PSAxOwotICAgIEdQVVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uID0gIjJkIjsKLSAgICByZXF1
aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlVXNh
Z2VGbGFncyB1c2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVGb3JtYXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWEx
Zjc3NmU0MTc3NTJkMDhiMjhhZDdlZThkNzRlZDJkNTIyMzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVGb3JtYXQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUKLV0gZW51bSBHUFVUZXh0dXJlRm9ybWF0IHsKLSAgICAicmdiYTh1bm9ybSIsCi0g
ICAgInJnYmE4dWludCIsCi0gICAgImJncmE4dW5vcm0iLAotICAgICJkZXB0aDMyZmxvYXQtc3Rl
bmNpbDgiLAotICAgICJiZ3JhOHVub3JtLXNyZ2IiLAotICAgICJyZ2JhMTZmbG9hdCIKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2Uu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FjYzM4ZjdkNjVlOTU1ZTlkNmI3YjkxMzJh
ZmViYTFjNTIzYjZkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0YW50cywKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVUZXh0dXJlVXNhZ2UgewotICAgIGNvbnN0
IHUzMiBDT1BZX1NSQyA9IDE7Ci0gICAgY29uc3QgdTMyIENPUFlfRFNUID0gMjsKLSAgICBjb25z
dCB1MzIgU0FNUExFRCA9IDQ7Ci0gICAgY29uc3QgdTMyIFNUT1JBR0UgPSA4OwotICAgIGNvbnN0
IHUzMiBPVVRQVVRfQVRUQUNITUVOVCA9IDE2OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY5ZDFiYTNhZTQ3NzI5N2ZkZDgzYjdiYWEyMmQxNjM3
OGM4OTllMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgiCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQpOwotCi1SZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYg
aW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3Rl
ZCkpOwotfQotCi1SZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IEdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgR1BVRXJyb3ImJiBlcnJvcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCh0eXBl
LCBXVEZNb3ZlKGVycm9yKSkpOwotfQotCi1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6R1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi0gICAgOiBFdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKQotICAgICwgbV9lcnJvcihpbml0aWFsaXplci5lcnJvcikKLXsKLX0K
LQotR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIEdQVUVycm9yJiYgZXJyb3IpCi0gICAgOiBFdmVudCh0eXBlLCBD
YW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAgICwgbV9lcnJvcihXVEZNb3ZlKGVy
cm9yKSkKLXsKLX0KLQotRXZlbnRJbnRlcmZhY2UgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OmV2
ZW50SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnRJbnRlcmZhY2VUeXBlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI3ZWVlOTVkYWRlZjViYWIzYThiZTZlYzJlZTQzM2Y3YzZmM2YyMzEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkdQVUVycm9yLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVVuY2FwdHVyZWRF
cnJvckV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgSW5pdDog
RXZlbnRJbml0IHsKLSAgICAgICAgR1BVRXJyb3IgZXJyb3I7Ci0gICAgfTsKLQotICAgIHN0YXRp
YyBSZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwotICAgIHN0YXRpYyBSZWY8
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgR1BVRXJy
b3ImJik7Ci0KLSAgICBjb25zdCBHUFVFcnJvciBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYpOwotCi0gICAgLy8gRXZlbnQKLSAg
ICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAg
R1BVRXJyb3IgbV9lcnJvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDBjY2Q4MTVjYmQxNWZiYWNmMmVmMWMxOTg0MGZmNDBkMWZkY2VhMWMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgKEdQVU91dE9mTWVtb3J5RXJyb3Igb3IgR1BVVmFsaWRhdGlvbkVy
cm9yKSBHUFVFcnJvcjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW5p
dCA6IEV2ZW50SW5pdCB7Ci0gICAgcmVxdWlyZWQgR1BVRXJyb3IgZXJyb3I7Ci19OwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCA6IEV2
ZW50IHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnRJbml0IGdwdVVuY2FwdHVyZWRFcnJvckV2ZW50SW5pdERpY3QpOwotCi0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIEdQVUVycm9yIGVycm9yOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzMWM1YjE1NmZiNzI4YzYzMGZkNzNjZWQ2NzIxYTM1YTk5OTY2NDAxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2lu
ZG93Ci1dIGludGVyZmFjZSBHUFVWYWxpZGF0aW9uRXJyb3IgewotICAgIGNvbnN0cnVjdG9yKERP
TVN0cmluZyBtZXNzYWdlKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVz
c2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZDNkMjZjNTMwZTJmNjMzYzBkMjdiYzExMDM2YzUwMzllYTM2NWQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVVZlcnRleEZvcm1h
dAotXSBlbnVtIEdQVVZlcnRleEZvcm1hdCB7Ci0gICAgImZsb2F0IiwKLSAgICAiZmxvYXQyIiwK
LSAgICAiZmxvYXQzIiwKLSAgICAiZmxvYXQ0IgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHU2NCBvZmZzZXQgPSAwOwotICAgIHJlcXVpcmVk
IEdQVVZlcnRleEZvcm1hdCBmb3JtYXQ7Ci0gICAgcmVxdWlyZWQgdTMyIHNoYWRlckxvY2F0aW9u
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRl
eEJ1ZmZlckRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhhZTA4ZjY1ODZkZDg5NTJjMTc3MDc2Y2ZmOTI1YmNkNDEzMTU2OGIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IHU2NDsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVSW5wdXRTdGVwTW9kZQotXSBlbnVtIEdQ
VUlucHV0U3RlcE1vZGUgewotICAgICJ2ZXJ0ZXgiLAotICAgICJpbnN0YW5jZSIKLX07Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCB1NjQg
c3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1vZGUgPSAidmVydGV4IjsKLSAgICBz
ZXF1ZW5jZTxHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yPiBhdHRyaWJ1dGVTZXQ7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElu
cHV0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOTdiMTBl
ZTQxYTgxMWZjM2QyOTI5MzAyZTQyNzc1ZjBlYTczZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVJbmRleEZvcm1h
dAotXSBlbnVtIEdQVUluZGV4Rm9ybWF0IHsKLSAgICAidWludDE2IiwKLSAgICAidWludDMyIgot
fTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVQotXSBkaWN0aW9uYXJ5IEdQVVZlcnRleElucHV0RGVzY3JpcHRvciB7Ci0gICAgR1BVSW5k
ZXhGb3JtYXQgaW5kZXhGb3JtYXQgPSAidWludDMyIjsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxH
UFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yPz4gdmVydGV4QnVmZmVyczsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0MjBmOGYxNzU2OTQ5NDA1YjQ5NGYyNDI3ODE3NDI2OTEwOTNmNDM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI25hdmlnYXRvci1ncHUKLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1OYXZpZ2F0b3JHUFUKLV0g
cGFydGlhbCBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKLSAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkg
YXR0cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L05hdmlnYXRvckdQVS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZmMw
N2JiNjU4ZmQ2MTlhZmYzZDI0OTM4YzYwZDhlMWQ1Y2Y4NTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
TmF2aWdhdG9yR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9yR1BVLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTmF2aWdhdG9yLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTmF2aWdhdG9yR1BVKiBOYXZpZ2F0b3JH
UFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCi17Ci0gICAgTmF2aWdhdG9yR1BVKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+
Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwotICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQ
VT4oKTsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7Ci0gICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotY29uc3QgY2hhciog
TmF2aWdhdG9yR1BVOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJOYXZpZ2F0b3JH
UFUiOwotfQotCi1jb25zdCBXZWJHUFUqIE5hdmlnYXRvckdQVTo6Z3B1KE5hdmlnYXRvciYgbmF2
aWdhdG9yKQotewotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG5hdmlnYXRvci5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLndlYkdQVUVuYWJsZWQpOwotICAgIHJldHVybiBOYXZp
Z2F0b3JHUFU6OmZyb20oJm5hdmlnYXRvciktPmdwdSgpOwotfQotCi1jb25zdCBXZWJHUFUqIE5h
dmlnYXRvckdQVTo6Z3B1KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZ3B1KQotICAgICAgICBtX2dw
dSA9IFdlYkdQVTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1fZ3B1LmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzc1OGQwODQ2Y2Q2NzI5ZjQ4ZWU5NWU3NzIzYjlmZGI5MWY0OGI3OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIE5hdmlnYXRvcjsKLWNsYXNzIFdlYkdQVTsKLQotY2xhc3MgTmF2aWdhdG9yR1BVIGZpbmFs
IDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFdlYkdQVSogZ3B1KE5hdmlnYXRvciYp
OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBOYXZpZ2F0b3JHUFUqIGZyb20oTmF2aWdhdG9yKik7
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7Ci0gICAgCi0gICAgY29u
c3QgV2ViR1BVKiBncHUoKSBjb25zdDsKLQotICAgIG11dGFibGUgUmVmUHRyPFdlYkdQVT4gbV9n
cHU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNULmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ2M2Y5ZTBhMTZkZWVhZTE1
MGJlNTE3MmQxMmIxYjcyN2M0OTI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1QuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFzc2lnbm1lbnRFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNs
dWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQmxvY2suaCIKLSNpbmNs
dWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xCcmVhay5oIgotI2lu
Y2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgiCi0jaW5j
bHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTERvV2hp
bGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRyeVBv
aW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGYWxsdGhyb3VnaC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCi0j
aW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGb3JMb29w
LmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUg
IldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEluZGV4RXhwcmVzc2lvbi5oIgot
I2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJM
aXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCIK
LSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgotI2luY2x1ZGUg
IldITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJl
bmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFJldHVybi5oIgotI2luY2x1
ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCi0jaW5j
bHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudExpc3QuaCIK
LSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0
cnVjdHVyZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKLSNpbmNsdWRl
ICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVu
dC5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3Au
aCIKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NFc2NhcGVNb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNz
RXNjYXBlTW9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2IyOTZkOGQzM2Q1
YmY2YTk0OTZiYjBjMzExNjc3ZGEyOWM5ZTFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWVudW0gY2xhc3MgQWRkcmVzc0VzY2FwZU1vZGUgOiB1aW50OF90IHsKLSAgICBF
c2NhcGVzLCAvLyBDb25zZXJ2YXRpdmVseSwgdGhpcyBhZGRyZXNzLW9mIG9wZXJhdGlvbiBtaWdo
dCBlc2NhcGUuCi0gICAgRG9lc05vdEVzY2FwZSAvLyBUaGlzIGFkZHJlc3Mtb2Ygb3BlcmF0aW9u
IGRlZmluaXRlbHkgZG9lcyBub3QgZXNjYXBlLgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODY2NjhiNjY3ZTg0NjVjNzg5ODlhMDAwNmI2YTBmNmQw
ZDIxOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWVudW0gY2xhc3MgQWRkcmVzc1NwYWNlIDogdWludDhfdCB7Ci0gICAgQ29uc3RhbnQsCi0g
ICAgRGV2aWNlLAotICAgIFRocmVhZGdyb3VwLAotICAgIFRocmVhZAotfTsKLQotQUxXQVlTX0lO
TElORSBTdHJpbmdWaWV3IHRvU3RyaW5nKEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UpCi17Ci0g
ICAgc3dpdGNoIChhZGRyZXNzU3BhY2UpIHsKLSAgICBjYXNlIEFkZHJlc3NTcGFjZTo6Q29uc3Rh
bnQ6Ci0gICAgICAgIHJldHVybiAiY29uc3RhbnQiOwotICAgIGNhc2UgQWRkcmVzc1NwYWNlOjpE
ZXZpY2U6Ci0gICAgICAgIHJldHVybiAiZGV2aWNlIjsKLSAgICBjYXNlIEFkZHJlc3NTcGFjZTo6
VGhyZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFkZ3JvdXAiOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2UgPT0gQWRkcmVzc1NwYWNlOjpUaHJlYWQpOwot
ICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0gICAgfQotfQotCi1zdHJ1Y3QgTGVmdFZhbHVlIHsK
LSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwotfTsKLQotc3RydWN0IEFic3RyYWN0TGVm
dFZhbHVlIHsKLX07Ci0KLXN0cnVjdCBSaWdodFZhbHVlIHsKLX07Ci0KLS8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBt
aWdodCBub3QgYmUgbmVjZXNzYXJ5LgotY2xhc3MgVHlwZUFubm90YXRpb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGVBbm5vdGF0aW9uKCkKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgICAgICA6IG1fZW1wdHkodHJ1ZSkKLSNlbmRpZgotICAgIHsKLSAg
ICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihMZWZ0VmFsdWUgdikKLSAgICAgICAgOiBtX2lubmVy
KHYpCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKEFic3RyYWN0TGVmdFZhbHVl
IHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5ub3Rh
dGlvbihSaWdodFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0K
LSAgICBUeXBlQW5ub3RhdGlvbihjb25zdCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKLSAg
ICBUeXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFR5cGVBbm5vdGF0aW9uJikgPSBkZWZh
dWx0OwotICAgIFR5cGVBbm5vdGF0aW9uJiBvcGVyYXRvcj0oVHlwZUFubm90YXRpb24mJiBvdGhl
cikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpvcHRpb25hbDxBZGRyZXNzU3BhY2U+IGxlZnRBZGRy
ZXNzU3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKLSAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPihtX2lubmVyKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6OmdldDxMZWZ0VmFsdWU+KG1faW5uZXIpLmFkZHJlc3NTcGFjZTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBib29sIGlzUmlnaHRW
YWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSaWdodFZhbHVlPihtX2lubmVyKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNp
dG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZh
bDxWYXJpYW50PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0VmFsdWUsIFJpZ2h0VmFsdWU+Jj4oKSkp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwotICAgICAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWJzdHJhY3RMZWZ0
VmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKLSAgICAgICAg
cmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QWJzdHJhY3RMZWZ0VmFsdWU+KG1faW5uZXIp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYW50PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0
VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBib29s
IG1fZW1wdHkgeyBmYWxzZSB9OwotI2VuZGlmCi19OwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMyNzYwYTE0NWZmOTY2NjgyOWJlNjg5
Zjk2NzFmYjMwOWJhYzZmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIGZpbmFsIDogcHVibGljIFJlZmVyZW5jZVR5cGUgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFy
cmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7Ci0KLSAg
ICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgICAgICA6IEJh
c2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OkFy
cmF5UmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBcnJh
eVJlZmVyZW5jZVR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVJlZmVyZW5jZVR5cGUobG9jYXRpb24sIGFk
ZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsKLSAgICB9Ci0KLSAgICB+QXJyYXlS
ZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy0+QmFzZTo6aGFzaCgpIF4gU3RyaW5nSGFzaGVyOjpj
b21wdXRlTGl0ZXJhbEhhc2goImFycmF5Iik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNlKCkgJiYgZWxlbWVudFR5
cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgp
LnRvU3RyaW5nKCksICJbXSIpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEFycmF5UmVmZXJlbmNl
VHlwZSwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFycmF5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz
ZTViZmNiMzAxZDMxZjk3NmEyZTgwNTQwZjIxYmI4OTQ0Y2M0MjAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBB
cnJheVR5cGUgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5VHlwZSk7Ci0gICAgQXJy
YXlUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlw
ZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24s
IEtpbmQ6OkFycmF5KQotICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RGTW92ZShlbGVtZW50VHlw
ZSkpCi0gICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykKLSAgICB7Ci0gICAgfQot
cHVibGljOgotCi0gICAgc3RhdGljIFJlZjxBcnJheVR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVuc2lnbmVkIG51bUVsZW1l
bnRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlUeXBlKGxvY2F0
aW9uLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgbnVtRWxlbWVudHMpKTsKLSAgICB9Ci0KLSAgICB+
QXJyYXlUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7
IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgdW5zaWduZWQgbnVtRWxlbWVudHMoKSBjb25z
dCB7IHJldHVybiBtX251bUVsZW1lbnRzOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKG1fbnVt
RWxlbWVudHMpIF4gbV9lbGVtZW50VHlwZS0+aGFzaCgpOwotICAgIH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBcnJheVR5cGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG51bUVsZW1lbnRzKCkgPT0gb3RoZXIubnVtRWxlbWVudHMoKSAmJiB0eXBlKCkgPT0gb3Ro
ZXIudHlwZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0eXBlKCkudG9TdHJpbmcoKSwgJ1snLCBudW1FbGVt
ZW50cygpLCAnXScpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1f
ZWxlbWVudFR5cGU7Ci0gICAgdW5zaWduZWQgbV9udW1FbGVtZW50czsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEFycmF5VHlwZSkK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEFycmF5VHlwZSwgaXNBcnJheVR5
cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHBy
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
c3NpZ25tZW50RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDk5
OGI1MjVmYzZmM2E4NTQ0NWQ3ZGJlNDNjZWY2NjNkZTI3N2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgQXNzaWdubWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQXNzaWdubWVudEV4cHJlc3Np
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpBc3NpZ25tZW50KQotICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQot
ICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewotI2lmIENQVShBRERSRVNT
MzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB+
QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBBc3NpZ25tZW50RXhwcmVz
c2lvbihjb25zdCBBc3NpZ25tZW50RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEFzc2lnbm1l
bnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4
cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBFeHByZXNzaW9uJiByaWdo
dCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZVJp
Z2h0KCkgeyByZXR1cm4gV1RGTW92ZShtX3JpZ2h0KTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcmln
aHQ7Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICBjaGFyIG1fcGFkWzFdOwotI2VuZGlmCi19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShB
c3NpZ25tZW50RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBS
RVNTSU9OKEFzc2lnbm1lbnRFeHByZXNzaW9uLCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5j
dGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTU2MjVjOGZk
YzQxODFlYjRjZDRlOTZmNWU2ZjExY2E0ZTMxZmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJhc2VGdW5jdGlvbkF0dHJp
YnV0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9j
YXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkJhc2VGdW5jdGlvbkF0dHJpYnV0
ZSgpID0gZGVmYXVsdDsKLQotICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShjb25zdCBCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKLSAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlJiYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICBDb2RlTG9j
YXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDk4OGE2MGZmZjVhNjg0ZDdiMTM3ZDM1
Y2M3MzlhZmQyMDQ3NmViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VT
ZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jbGFzcyBJbnRyaW5zaWNzOwotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRnVuY3Rpb25EZWZpbml0aW9uOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLWNsYXNzIEJhc2VT
ZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQmFz
ZVNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlv
bihsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QmFzZVNlbWFudGljKCkg
PSBkZWZhdWx0OwotCi0gICAgQmFzZVNlbWFudGljKGNvbnN0IEJhc2VTZW1hbnRpYyYpID0gZGVs
ZXRlOwotICAgIEJhc2VTZW1hbnRpYyhCYXNlU2VtYW50aWMmJikgPSBkZWZhdWx0OwotCi0gICAg
dmlydHVhbCBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJ
bnRyaW5zaWNzJikgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBTaGFkZXJJdGVtRGlyZWN0
aW9uIDogdWludDhfdCB7Ci0gICAgICAgIElucHV0LAotICAgICAgICBPdXRwdXQKLSAgICB9Owot
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRl
ckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29u
c3QgPSAwOwotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCbG9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDkyNGJh
NzVjZmI2ZWRlNGQ4NGNiZWQ1MmQ0ZGQ5MTRjNjViMzczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJsb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEJsb2NrIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQmxvY2soQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24sIEtpbmQ6OkJsb2NrKQotICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVu
dHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+QmxvY2soKSA9IGRlZmF1bHQ7Ci0KLSAgICBCbG9j
ayhjb25zdCBCbG9jayYpID0gZGVsZXRlOwotICAgIEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsK
LQotICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0K
LQotcHJpdmF0ZToKLSAgICBTdGF0ZW1lbnRzIG1fc3RhdGVtZW50czsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEJsb2NrKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChCbG9jaywgaXNCbG9jaygpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFs
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzYwNTE2N2ZiYTVlZTAzYWFmYmM2
N2M4MTMxYzUzMWUwMTA1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9v
bGVhbkxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIEJvb2xlYW5MaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJvb2xlYW5MaXRlcmFsKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgYm9vbCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpCb29sZWFuTGl0ZXJhbCkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAg
IHsKLSAgICB9Ci0KLSAgICB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCb29s
ZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEJvb2xlYW5M
aXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEJvb2xlYW5MaXRlcmFs
JiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBCb29sZWFu
TGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIGJv
b2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBCb29sZWFuTGl0ZXJh
bCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBCb29sZWFuTGl0ZXJhbCByZXN1bHQoY29k
ZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wgbV92YWx1ZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKEJvb2xlYW5MaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oQm9vbGVhbkxpdGVyYWwsIGlzQm9vbGVhbkxpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmYTQ3NjFiYTI4YjdjYjcyNDg0ZDdjNjIzNjdjNDc4YTQyZGFiZjBlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQnJl
YWsgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBCcmVhayhDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCcmVhaykKLSAgICB7Ci0gICAgfQotCi0gICAgfkJy
ZWFrKCkgPSBkZWZhdWx0OwotCi0gICAgQnJlYWsoY29uc3QgQnJlYWsmKSA9IGRlbGV0ZTsKLSAg
ICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShCcmVhaykKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQnJlYWssIGlzQnJlYWsoKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2U0ZGYyZWMxYjQxNGQwY2I4
M2M2OWIyNzY2MjQ0YjliNmI2NzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJ1aWx0SW5TZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1h
bnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotYm9vbCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25z
dAotewotICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgIGNhc2UgVmFyaWFibGU6OlNWSW5z
dGFuY2VJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
dWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0
dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2Fz
ZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBp
bnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgot
ICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBl
KCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmJvb2xUeXBlKCkpOwotICAgIGNhc2UgVmFy
aWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3Zl
cmFnZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWlu
dFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAgY2FzZSBW
YXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkp
OwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICBjYXNl
IFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cElu
ZGV4OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50
VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQ6Ci0gICAgICAgIHJl
dHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAg
fQotfQotCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURp
cmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAotewotICAgIHN3aXRjaCAo
KmVudHJ5UG9pbnRUeXBlKSB7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAg
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rp
b246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxl
OjpTVlZlcnRleElEOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0OgotICAgICAgICAgICAgc3dp
dGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpQU2l6ZToKLSAg
ICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6
OkZyYWdtZW50OgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFNo
YWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxl
KSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJh
Z2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFy
aWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
Q292ZXJhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHN3aXRjaCAo
ZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFi
bGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3Jv
dXBJRDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246Ok91
dHB1dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDg1YTUxODI3MTA1MWM1ZDBjMzk5NTFlYzdhY2IyYWM3NDZiMGNmNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgot
I2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgQnVpbHRJblNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBW
YXJpYWJsZSA6IHVpbnQ4X3QgewotICAgICAgICBTVkluc3RhbmNlSUQsCi0gICAgICAgIFNWVmVy
dGV4SUQsCi0gICAgICAgIFBTaXplLAotICAgICAgICBTVlBvc2l0aW9uLAotICAgICAgICBTVklz
RnJvbnRGYWNlLAotICAgICAgICBTVlNhbXBsZUluZGV4LAotICAgICAgICBTVklubmVyQ292ZXJh
Z2UsCi0gICAgICAgIFNWVGFyZ2V0LAotICAgICAgICBTVkRlcHRoLAotICAgICAgICBTVkNvdmVy
YWdlLAotICAgICAgICBTVkRpc3BhdGNoVGhyZWFkSUQsCi0gICAgICAgIFNWR3JvdXBJRCwKLSAg
ICAgICAgU1ZHcm91cEluZGV4LAotICAgICAgICBTVkdyb3VwVGhyZWFkSUQKLSAgICB9OwotCi0g
ICAgQnVpbHRJblNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGUgdmFyaWFi
bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFyZ2V0SW5kZXggPSBzdGQ6Om51bGxvcHQp
Ci0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgICAgICAsIG1fdmFyaWFibGUo
dmFyaWFibGUpCi0gICAgICAgICwgbV90YXJnZXRJbmRleChXVEZNb3ZlKHRhcmdldEluZGV4KSkK
LSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QnVpbHRJblNlbWFudGljKCkgPSBkZWZhdWx0
OwotCi0gICAgQnVpbHRJblNlbWFudGljKGNvbnN0IEJ1aWx0SW5TZW1hbnRpYyYpID0gZGVsZXRl
OwotICAgIEJ1aWx0SW5TZW1hbnRpYyhCdWlsdEluU2VtYW50aWMmJikgPSBkZWZhdWx0OwotCi0g
ICAgVmFyaWFibGUgdmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlOyB9Ci0gICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mIHRhcmdldEluZGV4KCkgeyByZXR1cm4gbV90YXJnZXRJ
bmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1aWx0SW5TZW1hbnRpYyYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YXJpYWJsZSA9PSBvdGhlci5tX3Zh
cmlhYmxlICYmIG1fdGFyZ2V0SW5kZXggPT0gb3RoZXIubV90YXJnZXRJbmRleDsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQnVpbHRJblNlbWFudGljJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KLSAgICBT
dHJpbmdWaWV3IHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV92YXJp
YWJsZSkgewotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgICAg
ICByZXR1cm4gIlNWSW5zdGFuY2VJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVmVydGV4
SUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWVmVydGV4SUQiOwotICAgICAgICBjYXNlIFZhcmlh
YmxlOjpQU2l6ZToKLSAgICAgICAgICAgIHJldHVybiAiUFNpemUiOwotICAgICAgICBjYXNlIFZh
cmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICAgICAgcmV0dXJuICJTVlBvc2l0aW9uIjsKLSAg
ICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgICAgIHJldHVybiAi
U1ZJc0Zyb250RmFjZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNWU2FtcGxlSW5kZXgiOwotICAgICAgICBjYXNlIFZhcmlhYmxl
OjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSW5uZXJDb3ZlcmFnZSI7
Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICAgICAgcmV0dXJuICJT
VlRhcmdldCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlNWRGVwdGgiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAg
ICAgICAgICAgcmV0dXJuICJTVkNvdmVyYWdlIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZE
aXNwYXRjaFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkRpc3BhdGNoVGhyZWFkSUQi
OwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgICAgICByZXR1cm4g
IlNWR3JvdXBJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAg
ICAgICAgIHJldHVybiAiU1ZHcm91cEluZGV4IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZH
cm91cFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3VwVGhyZWFkSUQiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRU
eXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRl
OgotICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bV90YXJnZXRJbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQxMThlMjFiMzUwOTVjZjg0NWIxMWY2Yjkx
NGQ4ZWVkNzRlNmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHBy
ZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBDYWxsRXhwcmVzc2lvbiBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBDYWxsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUs
IFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgYXJndW1lbnRzKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNhbGwpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUo
bmFtZSkpCi0gICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxsRXhwcmVzc2lvbiYpID0gZGVs
ZXRlOwotICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQot
ICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBhcmd1bWVudHMoKSB7IHJldHVybiBt
X2FyZ3VtZW50czsgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0K
LSAgICB+Q2FsbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHNldENhc3REYXRh
KE5hbWVkVHlwZSYgbmFtZWRUeXBlKQotICAgIHsKLSAgICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9
ICZuYW1lZFR5cGU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Nhc3QoKSB7IHJldHVybiBtX2Nhc3RS
ZXR1cm5UeXBlOyB9Ci0gICAgTmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSgpIHsgcmV0dXJuIG1f
Y2FzdFJldHVyblR5cGU7IH0KLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9mdW5jdGlvbik7Ci0gICAgICAgIHJldHVybiAqbV9mdW5j
dGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZ1bmN0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZnVuY3Rpb24p
OwotICAgICAgICBtX2Z1bmN0aW9uID0gJmZ1bmN0aW9uRGVjbGFyYXRpb247Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4gbV9hcmd1bWVudHM7Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7
IG51bGxwdHIgfTsKLSAgICBOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGUgeyBudWxscHRyIH07
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShDYWxsRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBS
RVNTSU9OKENhbGxFeHByZXNzaW9uLCBpc0NhbGxFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjQ4YmIzODgxNTEzM2Y5NmQxOGI1ZjhiOTAwZmQyNWQz
YTExYzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lv
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBDb21tYUV4
cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ29tbWFFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBsaXN0KQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNvbW1hKQotICAgICAgICAsIG1fbGlzdChXVEZNb3Zl
KGxpc3QpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRl
OwotICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGxpc3QoKSB7IHJldHVybiBtX2xpc3Q7
IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2xpc3Q7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShDb21tYUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihDb21tYUV4cHJlc3Npb24sIGlzQ29tbWFFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDQxMzdlODViZmNjNTgxN2I3ZDI1ZmRm
ZjViNDA2NGUwOGEzNDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgxNTggbWFjT1MgU2llcnJhIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHB1dHRp
bmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAotLy8gc28gdGhpcyBpcyBhIHdyYXBwZXIgY2xh
c3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uIEFzIHNvb24gYXMgd2UgZG9uJ3QK
LS8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2FuIGJlIG1pZ3JhdGVkIHRvIGEgVmFy
aWFudCBwcm9wZXIuCi1jbGFzcyBDb25zdGFudEV4cHJlc3Npb24gZmluYWwgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRl
Z2VyTGl0ZXJhbCYmIGludGVnZXJMaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3Zl
KGludGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9u
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQotICAgICAg
ICA6IG1fdmFyaWFudChXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRMaXRlcmFsJiYgZmxvYXRMaXRlcmFs
KQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGZsb2F0TGl0ZXJhbCkpCi0gICAgewotICAg
IH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihCb29sZWFuTGl0ZXJhbCYmIGJvb2xlYW5MaXRl
cmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGJvb2xlYW5MaXRlcmFsKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCYmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFu
dEV4cHJlc3Npb24oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ29u
c3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBD
b25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShDb25zdGFudEV4cHJl
c3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEludGVnZXJM
aXRlcmFsPihtX3ZhcmlhbnQpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEludGVnZXJMaXRl
cmFsPihtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9y
PiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZpc2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6dmlz
aXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZhcmlhbnQ8SW50ZWdlckxpdGVyYWwsIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwsIEZsb2F0TGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbD4mPigpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZp
c2l0b3IsIG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0
b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgY29uc3QgLT4gZGVjbHR5cGUo
V1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxJbnRlZ2VyTGl0ZXJhbCwg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgRmxvYXRMaXRlcmFsLCBCb29sZWFuTGl0ZXJhbCwgRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsPiY+KCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6
dmlzaXQodmlzaXRvciwgbV92YXJpYW50KTsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Np
b24gY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGludGVnZXJMaXRlcmFsLmNs
b25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAg
cmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNv
bnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewot
ICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0o
Y29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Np
b24gewotICAgICAgICAgICAgcmV0dXJuIGJvb2xlYW5MaXRlcmFsLmNsb25lKCk7Ci0gICAgICAg
IH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSksIG1fdmFyaWFudCk7Ci0g
ICAgfQotCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbiYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKLSAgICAg
ICAgZG91YmxlIHZhbHVlOwotICAgICAgICB2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25z
dCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0g
aW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVl
ID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3Qg
RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gZmxvYXRM
aXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9v
bGVhbkxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJv
b2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
YXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0PEJvb2xlYW5MaXRlcmFsPihvdGhl
ci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJvb2xlYW5MaXRlcmFsLnZh
bHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0sIFsmXShjb25zdCBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAg
ICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgb3Ro
ZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KG90
aGVyLm1fdmFyaWFudCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkgPT0gb3RoZXJNZW1iZXJSZWZlcmVuY2UuZW51
bWVyYXRpb25NZW1iZXIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAg
ICAgICAgIHJldHVybiAqcmVzdWx0OwotCi0gICAgICAgIG90aGVyLnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKGNvbnN0IEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAg
ICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAg
fSwgWyZdKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IHVuc2lnbmVkSW50ZWdlckxpdGVy
YWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRl
cmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSBmbG9hdExpdGVyYWwudmFsdWUo
KTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJikgewotICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSkpOwotCi0g
ICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICByZXR1cm4gKnJlc3VsdDsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgVmFyaWFudDwKLSAgICAgICAgSW50ZWdlckxpdGVyYWwsCi0gICAgICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAg
Qm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbAotICAgICAg
ICA+IG1fdmFyaWFudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMDUxYzI0MmFmMDZmOGMzM2M2NGQwNTZiY2NjOWEzZGQwZjkwZjc2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgQ29udGludWUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDb250aW51ZShDb2RlTG9jYXRp
b24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpDb250aW51
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkNvbnRpbnVlKCkgPSBkZWZhdWx0OwotCi0gICAgQ29u
dGludWUoY29uc3QgQ29udGludWUmKSA9IGRlbGV0ZTsKLSAgICBDb250aW51ZShDb250aW51ZSYm
KSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShDb250aW51ZSkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoQ29udGludWUsIGlzQ29udGludWUoKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiMjUyNTlhMjlmNzc4MjE4YjNhMzlkMjg3YWQwZjc4
NjI2YWQ5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KLQotI2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkgXAotICAgIG5hbWVzcGFj
ZSBzdGQgeyBcCi0gICAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgICBzdHJ1Y3QgZGVmYXVsdF9k
ZWxldGU8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCi0gICAgICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gXAotICAgICAgICAgICAgdm9pZCBjYWxsRGVsZXRlKFQqIHQpIFwKLSAg
ICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIGRlbGV0ZSB0OyBcCi0gICAgICAgICAgICB9
IFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBcCi0gICAgICAgICAgICB2b2lk
IGNhbGxEZXN0cm95KFQqIHQpIFwKLSAgICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIFdl
YkNvcmU6OldITFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3koKnQpOyBcCi0gICAgICAgICAgICB9IFwK
LSAgICAgICAgICAgIGNvbnN0ZXhwciB2b2lkIG9wZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6dHlwZSogdmFsdWUpIFwKLSAgICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19maW5hbDxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlPjo6dmFsdWUp
IFwKLSAgICAgICAgICAgICAgICAgICAgY2FsbERlbGV0ZSh2YWx1ZSk7IFwKLSAgICAgICAgICAg
ICAgICBlbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgY2FsbERlc3Ryb3kodmFsdWUpOyBcCi0g
ICAgICAgICAgICB9IFwKLSAgICAgICAgfTsgXAotICAgIH0gXAotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjMWUxNjQzMWYzMGJkZTk1ZDlkZTUxMTE2
ZGI4YWE2N2I0Yjk0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVy
ZW5jZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Np
b24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpEZXJlZmVyZW5jZSkKLSAgICAgICAgLCBtX3BvaW50ZXIoV1RG
TW92ZShwb2ludGVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkRlcmVmZXJlbmNlRXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKLQotICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oRGVy
ZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHBvaW50
ZXIoKSB7IHJldHVybiBtX3BvaW50ZXI7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gbV9wb2ludGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRGVyZWZlcmVuY2VFeHByZXNzaW9uKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRGVyZWZlcmVuY2VFeHByZXNzaW9uLCBp
c0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERvV2hpbGVMb29wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3
ZWJmZDllODRmMzI5ODMwNmQxNTA5NDRmYmZmZjc4YTU1OTNhY2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIERvV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRl
bWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRG9XaGls
ZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHks
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbiwgS2luZDo6RG9XaGlsZUxvb3ApCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUo
Ym9keSkpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgfkRvV2hpbGVMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgRG9XaGls
ZUxvb3AoY29uc3QgRG9XaGlsZUxvb3AmKSA9IGRlbGV0ZTsKLSAgICBEb1doaWxlTG9vcChEb1do
aWxlTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBt
X2JvZHk7IH0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0
aW9uYWw7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Ci0g
ICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShEb1doaWxlTG9vcCkK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRG9XaGlsZUxvb3AsIGlz
RG9XaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERvdEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RmYjQyMjMw
NDVmZTAyZjk2YzkwYjhjNzU3ZTliM2I2NGJiNzU2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIERvdEV4cHJlc3Np
b24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBEb3RFeHByZXNzaW9uKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwgU3RyaW5nJiYgZmllbGRO
YW1lKQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
RG90LCBXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1fZmllbGROYW1lKFdURk1vdmUoZmllbGRO
YW1lKSkKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZGRpbmcpOwotICAgIH0KLQot
ICAgIH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRG90RXhwcmVzc2lvbihjb25z
dCBEb3RFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgRG90RXhwcmVzc2lvbihEb3RFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZyYgZmllbGROYW1lKCkgeyByZXR1cm4gbV9m
aWVsZE5hbWU7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9maWVsZE5hbWU7Ci0gICAgLy8g
VGhpcyBpcyB1c2VkIHRvIGFsbG93IGZvciByZXBsYWNlV2l0aCBpbnRvIGEgYmlnZ2VyIHR5cGUu
Ci0gICAgY2hhciBtX3BhZGRpbmdbMTJdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRG90RXhwcmVzc2lvbikKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKERvdEV4cHJlc3Npb24sIGlzRG90RXhwcmVz
c2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1ZmJhMWRkNzg4MGU1Yzg2ZTU1ZTZlODdjZTUxYjk3ZGU5MDk5NzdkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJlc3Np
b24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Npb24tPmNvZGVMb2NhdGlv
bigpLCBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICAsIG1fZWZmZWN0ZnVsRXhw
cmVzc2lvbihXVEZNb3ZlKGVmZmVjdGZ1bEV4cHJlc3Npb24pKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIEVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dCYpID0gZGVsZXRlOwotICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoRWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBlZmZl
Y3RmdWxFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9lZmZlY3RmdWxFeHByZXNzaW9uOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQsIGlzRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW50cnlQb2ludFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM3NDQ2ZGYxMGI3NTVkZDZjNjA1YjM5NjQ5ODM2MWYxNmVjNzdiYjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3Mg
RW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKLSAgICBWZXJ0ZXgsCi0gICAgRnJhZ21lbnQsCi0g
ICAgQ29tcHV0ZSwKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyB0b1N0cmluZyhFbnRy
eVBvaW50VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRW50cnlQ
b2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuICJ2ZXJ0ZXgiOwotICAgIGNhc2UgRW50
cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1cm4gImZyYWdtZW50IjsKLSAgICBj
YXNlIEVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAgICByZXR1cm4gImNvbXB1dGUiOwot
ICAgIH0KLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZiZjhkZTVhYzIzZjRhN2FiYzM0NWRjZThhNTFjZWZiNjVmOWQ5NTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2Rl
TG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5j
bHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZp
bmFsIDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
U3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgICAgICA6IE5hbWVkVHlw
ZShLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQot
ICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RW51
bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRW51bWVyYXRpb25EZWZpbml0
aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwotICAgIEVudW1lcmF0
aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAg
VW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGJvb2wgYWRkKEVu
dW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBt
X21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25NZW1iZXI+
KFdURk1vdmUobWVtYmVyKSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7Ci0g
ICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIG1lbWJlckJ5TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9tZW1iZXJzLmZpbmQobmFt
ZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX21lbWJlcnMuZW5kKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
LSAgICB9Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxFbnVtZXJhdGlvbk1l
bWJlcj4+IGVudW1lcmF0aW9uTWVtYmVycygpCi0gICAgewotICAgICAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxFbnVtZXJhdGlvbk1lbWJlcj4+IHJlc3VsdDsKLSAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogbV9tZW1iZXJzKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgqcGFp
ci52YWx1ZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBtX21lbWJlcnM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlvbkRlZmlu
aXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShFbnVtZXJhdGlvbkRl
ZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTI4ODhmMzVhOWUwYzlmOGQ0ZDE3YzE5MjU0YjRjNjlmYzY2
NGI0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2Rl
TG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlciB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRW51bWVyYXRpb25N
ZW1iZXIoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBpbnQ2NF90IHZhbHVl
KQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fbmFtZShX
VEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZhdWx0OwotCi0gICAgRW51bWVy
YXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9IGRlbGV0ZTsKLSAgICBFbnVt
ZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBjb25z
dCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0
aW9uOyB9Ci0gICAgU3RyaW5nIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBpbnQ2NF90
IHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlv
biBtX2NvZGVMb2NhdGlvbjsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIGludDY0X3QgbV92YWx1
ZTsKLX07Ci0KLXVzaW5nIEVudW1lcmF0aW9uTWVtYmVycyA9IFZlY3RvcjxFbnVtZXJhdGlvbk1l
bWJlcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MzRlOTc3YWNjZTkwYWYwZjIx
OThmMTg1ZjFmOTkyMmUxNjA0NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBF
bnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLQotY2xhc3Mg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJp
Z2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAgLCBt
X3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgZXhwbGljaXQgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBk
ZWZhdWx0OwotCi0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3Qg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJiBvcGVyYXRvcj0oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVs
dDsKLQotICAgIHN0YXRpYyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgd3JhcChDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0LCBFbnVtZXJhdGlvbkRl
ZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRpb25NZW1iZXImIGVudW1l
cmF0aW9uTWVtYmVyKQotICAgIHsKLSAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHJl
c3VsdChsb2NhdGlvbiwgV1RGTW92ZShsZWZ0KSwgV1RGTW92ZShyaWdodCkpOwotICAgICAgICBy
ZXN1bHQubV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOwot
ICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJlcjsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGxlZnQo
KSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9yaWdodDsgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGNs
b25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKGNvZGVMb2NhdGlvbigpLCBTdHJpbmcobV9sZWZ0KSwgU3RyaW5nKG1fcmlnaHQp
KTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25NZW1iZXIgPSBtX2VudW1lcmF0aW9uTWVt
YmVyOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uOwotICAg
IH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogZW51bWVyYXRpb25EZWZpbml0aW9uKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAg
ICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgfQotCi0gICAgRW51bWVy
YXRpb25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQotICAgIHZvaWQgc2V0RW51bWVyYXRp
b25NZW1iZXIoRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24sIEVu
dW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7Ci0gICAgICAgIG1fZW51
bWVyYXRpb25EZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICAgICAgbV9l
bnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJlcjsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgU3RyaW5nIG1fbGVmdDsKLSAgICBTdHJpbmcgbV9yaWdodDsKLSAgICBFbnVtZXJhdGlv
bkRlZmluaXRpb24qIG1fZW51bWVyYXRpb25EZWZpbml0aW9uIHsgbnVsbHB0ciB9OwotICAgIEVu
dW1lcmF0aW9uTWVtYmVyKiBtX2VudW1lcmF0aW9uTWVtYmVyIHsgbnVsbHB0ciB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNz
aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFlOGRjMzZhODk0YjM5OWU3
ZjNjYTYzMGI2NmE4ZjI0MTYwYjQ5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFeHByZXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotdm9pZCBFeHByZXNzaW9uOjpkZXN0cm95KEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17
Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBc3NpZ25tZW50RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Qm9vbGVh
bkxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Q2FsbEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkNvbW1hOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PENvbW1hRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RGVyZWZl
cmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihl
eHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpG
bG9hdExpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHBy
ZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRl
Z2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbD4oZXhw
cmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9n
aWNhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNh
bE5vdDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFr
ZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PE1h
a2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PERvdEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25j
YXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5OgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgot
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Np
b24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0
PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi12b2lkIEV4cHJlc3Npb246OmRlc3RydWN0KEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17
Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZG93bmNhc3Q8QXNzaWdubWVudEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pLn5Bc3NpZ25tZW50RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgICAgICBkb3duY2Fz
dDxCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikufkJvb2xlYW5MaXRlcmFsKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKLSAgICAgICAgZG93bmNh
c3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5DYWxsRXhwcmVzc2lvbigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgotICAgICAgICBkb3du
Y2FzdDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Db21tYUV4cHJlc3Npb24oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAg
ICAgICAgZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5+RGVyZWZl
cmVuY2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxGbG9hdExpdGVyYWw+KGV4cHJl
c3Npb24pLn5GbG9hdExpdGVyYWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8SW50ZWdlckxpdGVy
YWw+KGV4cHJlc3Npb24pLn5JbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGRvd25jYXN0PExvZ2ljYWxF
eHByZXNzaW9uPihleHByZXNzaW9uKS5+TG9naWNhbEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgotICAgICAgICBkb3du
Y2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxvZ2ljYWxOb3RFeHByZXNz
aW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFy
cmF5UmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uPihleHByZXNzaW9uKS5+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAg
ICBkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5NYWtlUG9pbnRl
ckV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpEb3Q6Ci0gICAgICAgIGRvd25jYXN0PERvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Eb3RF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PEdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlPihleHByZXNzaW9uKS5+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgZG93
bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5+SW5kZXhFeHByZXNzaW9uKCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRl
OgotICAgICAgICBkb3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9u
KS5+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6Ci0gICAgICAgIGRvd25jYXN0PFRlcm5hcnlFeHBy
ZXNzaW9uPihleHByZXNzaW9uKS5+VGVybmFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgotICAg
ICAgICBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKS5+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVS
ZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9u
KS5+VmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1ib29s
IEV4cHJlc3Npb246Om1heUJlRWZmZWN0ZnVsKCkgY29uc3QKLXsKLSAgICBhdXRvJiBleHByZXNz
aW9uID0gY29uc3RfY2FzdDxFeHByZXNzaW9uJj4oKnRoaXMpOwotCi0gICAgc3dpdGNoIChleHBy
ZXNzaW9uLmtpbmQoKSkgewotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVy
YWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246Oktp
bmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxl
UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RGVyZWZlcmVuY2VF
eHByZXNzaW9uPihleHByZXNzaW9uKS5wb2ludGVyKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0KCkubWF5QmVFZmZlY3RmdWwoKSB8
fCBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikucmlnaHQoKS5tYXlCZUVm
ZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLm9w
ZXJhbmQoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpN
YWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0VmFsdWUoKS5tYXlCZUVmZmVjdGZ1bCgp
OwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikubGVmdFZhbHVl
KCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90Ogot
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuYmFzZSgp
Lm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkluZGV4Ogot
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5iYXNl
KCkubWF5QmVFZmZlY3RmdWwoKSB8fCBkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Np
b24pLmluZGV4RXhwcmVzc2lvbigpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBkZWZhdWx0Ogot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM2YTA0NzM0MmM1MzRmZWQzNzY3ZGYwZjFk
NzUzZWVmNDc2OGFjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNz
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
ZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0K
LXByb3RlY3RlZDoKLSAgICB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotcHVibGljOgotCi0g
ICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0gICAgICAgIEFzc2lnbm1lbnQsCi0gICAg
ICAgIEJvb2xlYW5MaXRlcmFsLAotICAgICAgICBDYWxsLAotICAgICAgICBDb21tYSwKLSAgICAg
ICAgRGVyZWZlcmVuY2UsCi0gICAgICAgIERvdCwKLSAgICAgICAgR2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgSW5kZXgsCi0gICAgICAgIElu
dGVnZXJMaXRlcmFsLAotICAgICAgICBMb2dpY2FsLAotICAgICAgICBMb2dpY2FsTm90LAotICAg
ICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCi0gICAgICAgIE1ha2VQb2ludGVyLAotICAgICAgICBS
ZWFkTW9kaWZ5V3JpdGUsCi0gICAgICAgIFRlcm5hcnksCi0gICAgICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwsCi0gICAgICAgIFZhcmlhYmxlUmVmZXJlbmNlLAotICAgICAgICBFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGNv
ZGVMb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGNvZGVMb2Nh
dGlvbikKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgZGVzdHJveShFeHByZXNzaW9uJik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoRXhw
cmVzc2lvbiYpOwotCi0gICAgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7
Ci0gICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Np
b24mIG9wZXJhdG9yPShjb25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgRXhwcmVzc2lv
biYgb3BlcmF0b3I9KEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUq
IG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV90eXBlID8gJiptX3R5cGUgOiBudWxscHRy
OyB9Ci0KLSAgICBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUpOwotICAgICAgICByZXR1cm4gKm1fdHlwZTsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFt
X3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5cGUpOwotICAgIH0KLQotICAgIGNv
bnN0IFR5cGVBbm5vdGF0aW9uKiBtYXliZVR5cGVBbm5vdGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlQW5ub3RhdGlvbiA/ICYqbV90eXBlQW5ub3RhdGlvbiA6IG51bGxwdHI7IH0KLQotICAg
IGNvbnN0IFR5cGVBbm5vdGF0aW9uJiB0eXBlQW5ub3RhdGlvbigpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIHJldHVybiAqbV90eXBlQW5u
b3RhdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFR5cGVBbm5vdGF0aW9uKFR5cGVBbm5vdGF0
aW9uJiYgdHlwZUFubm90YXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fdHlwZUFubm90
YXRpb24pOwotICAgICAgICBtX3R5cGVBbm5vdGF0aW9uID0gV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bik7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZVRvKEV4cHJlc3Npb24mIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IGNvbnN0X2Nhc3Q8RXhw
cmVzc2lvbio+KHRoaXMpLT5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgb3RoZXIu
c2V0VHlwZSgqcmVzb2x2ZWRUeXBlKTsKLSAgICB9Ci0KLSAgICBib29sIG1heUJlRWZmZWN0ZnVs
KCkgY29uc3Q7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCAgeyByZXR1cm4gbV9raW5kOyB9Ci0g
ICAgYm9vbCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkFzc2lnbm1lbnQ7IH0KLSAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6Qm9vbGVhbkxpdGVyYWw7IH0KLSAgICBib29sIGlzQ2Fs
bEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q2FsbDsgfQotICAg
IGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
Q29tbWE7IH0KLSAgICBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OkRlcmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc0RvdEV4cHJlc3Np
b24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RG90OyB9Ci0gICAgYm9vbCBpc0ds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Okds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGbG9hdExpdGVyYWw7IH0KLSAgICBib29sIGlzSW5k
ZXhFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkluZGV4OyB9Ci0g
ICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWw7IH0KLSAgICBib29sIGlzTG9naWNhbE5v
dEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TG9naWNhbE5vdDsg
fQotICAgIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNNYWtl
UG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TWFrZVBv
aW50ZXI7IH0KLSAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gaXNEb3RFeHByZXNzaW9uKCkgfHwgaXNJbmRleEV4cHJlc3Npb24oKTsgfQotICAgIGJv
b2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OlJlYWRNb2RpZnlXcml0ZTsgfQotICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUZXJuYXJ5OyB9Ci0gICAgYm9vbCBpc1Vu
c2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wgaXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZTsgfQotICAgIGJv
b2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOyB9Ci0KLSAgICBDb2RlTG9jYXRpb24gY29k
ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVw
ZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24g
PSBsb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlv
bjsKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFR5
cGVBbm5vdGF0aW9uPiBtX3R5cGVBbm5vdGF0aW9uOwotICAgIEtpbmQgbV9raW5kOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRXhw
cmVzc2lvbikKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJ
T04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24pIHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0
aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
YWxsdGhyb3VnaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGU0NGZjNTUwZTli
YjM2ZDcyOTFhZGNkMjJhZjk1YmY4Yzg3NGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZhbGx0aHJvdWdoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRmFsbHRocm91Z2gg
ZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBGYWxsdGhyb3VnaChDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAg
IDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpGYWxsdGhyb3VnaCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OwotCi0gICAgRmFsbHRocm91Z2goY29uc3Qg
RmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKLSAgICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9
IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGYWxsdGhyb3VnaCkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoRmFsbHRocm91Z2gsIGlzRmFsbHRocm91Z2goKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MWY5ZDRiMDlkNzhiZDMxOTM0Yzg5MzJlMGFk
OGNlOTEwZjFlNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGbG9hdExpdGVyYWwgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgRmxvYXRMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgZmxvYXQgdmFsdWUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RmxvYXRMaXRlcmFsKQotICAgICAg
ICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0
TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWwo
RmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0ZXJhbCYgb3BlcmF0b3I9
KGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbCYgb3BlcmF0
b3I9KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWxUeXBlJiB0
eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9Ci0KLSAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAg
ICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmVz
dWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpyZXNvbHZl
ZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdExpdGVyYWxUeXBlIG1fdHlwZTsKLSAg
ICBmbG9hdCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0TGl0ZXJhbCgpKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMDhjMDBlNzVmMDRkMmE3
ODNiODkxOTY5OTY1NTQzM2Q1YjgwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1GbG9hdExpdGVyYWxUeXBl
OjpGbG9hdExpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgZmxvYXQgdmFsdWUpCi0g
ICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpGbG9hdExpdGVyYWwpCi0gICAgLCBtX3ZhbHVlKHZh
bHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlv
biwgImZsb2F0Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0KLWJvb2wgRmxvYXRMaXRl
cmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAotewotICAgIGlmICgh
aXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5h
bWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNGbG9hdGlu
ZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRp
b24uY2FuUmVwcmVzZW50RmxvYXQoKShtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBGbG9hdExpdGVyYWxUeXBlOjpjb252ZXJz
aW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0Ci17Ci0gICAgaWYg
KG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiAxOwotfQotCi1GbG9hdExpdGVyYWxUeXBlIEZsb2F0TGl0ZXJhbFR5cGU6
OmNsb25lKCkgY29uc3QKLXsKLSAgICBGbG9hdExpdGVyYWxUeXBlIHJlc3VsdChtX3ByZWZlcnJl
ZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IG1h
eWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNU
OjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7Ci0gICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlwZSA9IG1f
cHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIxNGUwODU5YjdjMDhmNTYyMmRhNGIwZTRlYTc0MjFiNzM3NWY1ZTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJl
bmNlOwotCi1jbGFzcyBGbG9hdExpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVU
eXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGbG9hdExp
dGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgZmxvYXQgdmFsdWUpOwotCi0gICAgfkZsb2F0TGl0ZXJh
bFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWxUeXBlKGNvbnN0IEZsb2F0TGl0
ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5
cGUmJikgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0
IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVy
YXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBmbG9hdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJl
ZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2
ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3Qg
VW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIEZsb2F0TGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIC8vIFRoaXMgaXMgYSB1bmlx
dWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4KLSAgICAvLyBD
b25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBl
QXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAgIFJlZjxUeXBlUmVmZXJlbmNlPiBt
X3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShGbG9hdExpdGVyYWxUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1RZUEUoRmxvYXRMaXRlcmFsVHlwZSwgaXNGbG9hdExpdGVyYWxUeXBlKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YTU3NDBmODc1ZmZkZDc5ZWRhZTcyYWY4MzU4NGE4ODYy
OGZlM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGb3JMb29w
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgRm9yTG9vcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxT
dGF0ZW1lbnQ+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYm
IGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgaW5jcmVtZW50LCBVbmlx
dWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBL
aW5kOjpGb3JMb29wKQotICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24oV1RGTW92ZShpbml0aWFs
aXphdGlvbikpCi0gICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShjb25kaXRpb24pKQotICAg
ICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKLSAgICAgICAgLCBtX2JvZHko
V1RGTW92ZShib2R5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZvckxvb3AoKSA9IGRlZmF1bHQ7
Ci0KLSAgICBGb3JMb29wKGNvbnN0IEZvckxvb3AmKSA9IGRlbGV0ZTsKLSAgICBGb3JMb29wKEZv
ckxvb3AmJikgPSBkZWZhdWx0OwotCi0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4mIGluaXRpYWxp
emF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQotICAgIEV4cHJlc3Npb24qIGNv
bmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uLmdldCgpOyB9Ci0gICAgRXhwcmVzc2lvbiog
aW5jcmVtZW50KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQuZ2V0KCk7IH0KLSAgICBTdGF0ZW1lbnQm
IGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8U3Rh
dGVtZW50PiBtX2luaXRpYWxpemF0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBtX2NvbmRpdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmNyZW1l
bnQ7Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRm9yTG9vcCkKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRm9yTG9vcCwgaXNGb3JMb29wKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25B
dHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJjNWI2NzRmMzRmOTE1
NGIwY2FlMmVhNDI2NWE2MjJjYTczMjljZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdXNpbmcg
RnVuY3Rpb25BdHRyaWJ1dGUgPSBWYXJpYW50PE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZT47
Ci11c2luZyBBdHRyaWJ1dGVCbG9jayA9IFZlY3RvcjxGdW5jdGlvbkF0dHJpYnV0ZT47Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2ViMjRkMmUyOGY2MWNmYjVhZGM5NDJlMjY4OGUzNGE3MjM3MjljNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xQYXJzaW5nTW9kZS5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBdHRy
aWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiBlbnRyeVBvaW50VHlwZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBW
YXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRp
Yz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkK
LSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2F0dHJpYnV0
ZUJsb2NrKFdURk1vdmUoYXR0cmlidXRlQmxvY2spKQotICAgICAgICAsIG1fZW50cnlQb2ludFR5
cGUoZW50cnlQb2ludFR5cGUpCi0gICAgICAgICwgbV9pc09wZXJhdG9yKGlzT3BlcmF0b3IpCi0g
ICAgICAgICwgbV9wYXJzaW5nTW9kZShwYXJzaW5nTW9kZSkKLSAgICAgICAgLCBtX3R5cGUoV1RG
TW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBt
X3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKLSAgICAgICAgLCBtX3NlbWFudGljKFdU
Rk1vdmUoc2VtYW50aWMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRl
Y2xhcmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbihjb25zdCBG
dW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbihG
dW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0Z1
bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0KLSAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBtX2F0dHJp
YnV0ZUJsb2NrOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVu
dHJ5UG9pbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeVBvaW50VHlwZTsgfQotICAgIGNv
bnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgVW5u
YW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVy
biBtX25hbWU7IH0KLSAgICBib29sIGlzQ2FzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSAi
b3BlcmF0b3IgY2FzdCI7IH0KLSAgICBjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1l
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQotICAgIFZhcmlhYmxlRGVjbGFy
YXRpb25zJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Ci0gICAgU2VtYW50
aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5nZXQoKTsgfQotICAgIGJvb2wgaXNP
cGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGVyYXRvcjsgfQotICAgIGNvbnN0IENvZGVM
b2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0K
LQotICAgIFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzaW5n
TW9kZTsgfQotCi0gICAgTmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXROYW1lU3BhY2UoTmFtZVNwYWNlIG5hbWVTcGFjZSkgeyBt
X25hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBt
X2NvZGVMb2NhdGlvbjsKLSAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJsb2NrOwotICAg
IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQb2ludFR5cGU7Ci0gICAgYm9v
bCBtX2lzT3BlcmF0b3I7Ci0gICAgUGFyc2luZ01vZGUgbV9wYXJzaW5nTW9kZTsKLSAgICBSZWY8
VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZhcmlhYmxlRGVj
bGFyYXRpb25zIG1fcGFyYW1ldGVyczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IG1f
c2VtYW50aWM7Ci0gICAgTmFtZVNwYWNlIG1fbmFtZVNwYWNlIHsgTmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2RlZmlu
ZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKFRvVmFs
dWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiB0eXBl
KSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDI0OGZiNWE3
YTQ1NGVlNTI5NzI3YmJmMjdkYTgxOTJhZDc1ZGUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRlZmluaXRpb24o
RnVuY3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2sp
Ci0gICAgICAgIDogRnVuY3Rpb25EZWNsYXJhdGlvbihXVEZNb3ZlKGZ1bmN0aW9uRGVjbGFyYXRp
b24pKQotICAgICAgICAsIG1fYmxvY2soV1RGTW92ZShibG9jaykpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQotICAgIEZ1bmN0
aW9uRGVmaW5pdGlvbihjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBG
dW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKLQotICAg
IGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9Ci0KLXByaXZhdGU6
Ci0gICAgQmxvY2sgbV9ibG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihGdW5j
dGlvbkRlZmluaXRpb24sIGlzRnVuY3Rpb25EZWZpbml0aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJlMWZiNjA4NmQ5ZjBiNmUyNjFh
M2YxZTMzYWU3MmExYWU0Y2E2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xH
bG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwgU3Ry
dWN0dXJlRWxlbWVudCogc3RydWN0RmllbGQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlv
biwgS2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi0gICAgICAgICwgbV9iYXNlKFdURk1v
dmUoYmFzZSkpCi0gICAgICAgICwgbV9zdHJ1Y3RGaWVsZCgqc3RydWN0RmllbGQpCi0gICAgewot
ICAgICAgICBBU1NFUlQoc3RydWN0RmllbGQpOwotICAgIH0KLQotICAgIH5HbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1
Y3RGaWVsZCgpIHsgcmV0dXJuIG1fc3RydWN0RmllbGQ7IH0KLQotICAgIEV4cHJlc3Npb24mIGJh
c2UoKSB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbV9iYXNlOwotICAgIFN0cnVjdHVyZUVsZW1lbnQmIG1fc3RydWN0RmllbGQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLCBpc0dsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZT
dGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlkNmRhM2NkMTYwMWE4
YjlhMTVkM2FhYjE1ZmJmOWJmY2M4MmQwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJZlN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIElmU3RhdGVtZW50IGZpbmFsIDogcHVibGlj
IFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
SWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBzdGQ6OnVuaXF1ZV9w
dHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwg
S2luZDo6SWYpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkK
LSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICAgICAgLCBtX2Vsc2VCb2R5KFdU
Rk1vdmUoZWxzZUJvZHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+SWZTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOwot
ICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Np
b24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQotICAgIFN0YXRlbWVu
dCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotICAgIFN0YXRlbWVudCogZWxzZUJvZHkoKSB7
IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fZWxzZUJvZHk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJZlN0YXRl
bWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoSWZTdGF0ZW1l
bnQsIGlzSWZTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEluZGV4RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUxNzQxNWUzMWI0MzlmMTA3OWUxODRhZGE3ZTJiNzA0MTFmYzM1YzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEluZGV4RXhw
cmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEluZGV4RXhwcmVzc2lvbihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGluZGV4KQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6SW5kZXgsIFdURk1vdmUoYmFzZSkpCi0gICAgICAgICwgbV9pbmRl
eChXVEZNb3ZlKGluZGV4KSkKLSAgICB7Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICAgICAgVU5V
U0VEX1BBUkFNKG1fcGFkZGluZyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB+SW5kZXhFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgSW5kZXhFeHByZXNzaW9uKGNvbnN0IEluZGV4RXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIEluZGV4RXhwcmVzc2lvbihJbmRleEV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKCkgeyByZXR1cm4g
bV9pbmRleDsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgaW5kZXhSZWZlcmVuY2UoKSB7
IHJldHVybiBtX2luZGV4OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VJbmRleCgp
IHsgcmV0dXJuIFdURk1vdmUobV9pbmRleCk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbV9pbmRleDsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgIC8vIFRoaXMgaXMg
dXNlZCB0byBhbGxvdyBmb3IgcmVwbGFjZVdpdGggaW50byBhIGJpZ2dlciB0eXBlLgotICAgIGNo
YXIgbV9wYWRkaW5nWzRdOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbmRleEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbmRleEV4cHJlc3Npb24sIGlzSW5kZXhF
eHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbnRlZ2VyTGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNzI3
YThmOWI4MGE5OTkyMjdkYWU0MTFlMWUzODhjMGE3MjcxM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TEludGVnZXJMaXRlcmFsLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJl
ZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1pbnQ2NF90IEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVj
dGVkVHlwZSgpIGNvbnN0Ci17Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5
cGVSZWZlcmVuY2U+KG1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgYXV0byYgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0aXZlVHlwZURlY2xhcmF0aW9uLmZv
cm1hdFZhbHVlRnJvbUludGVnZXIoKShtX3ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElu
dGVnZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MDlmZWRkZDEz
ZGVhNTE0ODU5OGYyOWEwNTcwNGI5OTJiZjJkZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
SW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+SW50ZWdlckxpdGVy
YWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJh
bCYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFsKEludGVnZXJMaXRlcmFsJiYpID0gZGVm
YXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVy
YWwmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KEludGVnZXJMaXRl
cmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0
dXJuIG1fdHlwZTsgfQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
LQotICAgIEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEludGVn
ZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIHJlc3Vs
dC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlw
ZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmVzdWx0Lm1fdHlw
ZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsK
LSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOwotICAgIGludCBtX3ZhbHVlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
SW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihJbnRlZ2VyTGl0ZXJhbCwgaXNJbnRlZ2VyTGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNjY3NTBiNjQzZWI2NjIwNmEzN2UyOTkwMWE0
NjdjMmJiZGU3ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMSW5mZXJU
eXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotSW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpJbnRl
Z2VyTGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX3ByZWZlcnJlZFR5cGUo
VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50Il9zdHIsIFR5cGVBcmd1bWVudHMo
KSkpCi17Ci19Ci0KLWJvb2wgSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8TmFtZWRUeXBl
Pih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICBpZiAoIW5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50SW50ZWdlcigpKG1fdmFs
dWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2ln
bmVkIEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUm
IHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCBtX3By
ZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotSW50
ZWdlckxpdGVyYWxUeXBlIEludGVnZXJMaXRlcmFsVHlwZTo6Y2xvbmUoKSBjb25zdAotewotICAg
IEludGVnZXJMaXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24o
KSwgbV92YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQot
ICAgICAgICByZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlw
ZSkpOwotICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJl
ZigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0YWVkZjQ3NmIz
MmI3ZmJmNzllOGMwZDdkYzQ3YzgzMTkxYjYwYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci0KLWNsYXNzIElu
dGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlKENv
ZGVMb2NhdGlvbiwgaW50IHZhbHVlKTsKLQotICAgIH5JbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgSW50ZWdlckxpdGVyYWxUeXBl
JikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlKEludGVnZXJMaXRlcmFsVHlwZSYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBJ
bnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9w
ZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgaW50IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVy
cmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQotCi0gICAgYm9vbCBjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25z
dCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgSW50ZWdlckxpdGVyYWxUeXBlIGNsb25lKCkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7Ci0gICAgLy8gVGhpcyBpcyBhIHVu
aXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbgotICAgIC8v
IENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5
cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0gICAgUmVmPFR5cGVSZWZlcmVuY2U+
IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
REVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFsVHlwZSkKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9UWVBFKEludGVnZXJMaXRlcmFsVHlwZSwgaXNJbnRlZ2VyTGl0ZXJh
bFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHBy
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzFlOTMx
MTBmZTJiNTJiZThjNmNhMWYxYzQ2OTRiNDQ3Nzc4MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTG9n
aWNhbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7
Ci0gICAgICAgIEFuZCwKLSAgICAgICAgT3IKLSAgICB9OwotCi0gICAgTG9naWNhbEV4cHJlc3Np
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBUeXBlIHR5cGUsIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCi0gICAgICAgICwgbV90eXBlKHR5cGUpCi0g
ICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEZNb3Zl
KHJpZ2h0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwotCi0gICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKLSAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAg
IEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBFeHByZXNzaW9uJiBy
aWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLQotcHJpdmF0ZToKLSAgICBUeXBlIG1fdHlwZTsK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OwotICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX3JpZ2h0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJ
TkVfREVGQVVMVF9ERUxFVEUoTG9naWNhbEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwgaXNMb2dpY2FsRXhwcmVz
c2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUz
ZWRjMzYzNTJiZWFiMDQ4YTM4ZTk4ZTczZGM1NjkxNzViZmM2YWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBMb2dpY2FsTm90RXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIG9wZXJh
bmQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKLSAg
ICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
fkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgTG9naWNhbE5vdEV4cHJl
c3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBMb2dpY2Fs
Tm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBF
eHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3BlcmFuZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxOb3RFeHByZXNz
aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbE5v
dEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M1ZDY0Y2I5NTcz
MTYwMjA5NTcxN2IyYmFmYzY0YmU3ZTM2MDkyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgiCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwg
QWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6TWFrZUFycmF5UmVmZXJlbmNlKQotICAgICAgICAsIG1fbGVmdFZh
bHVlKFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFk
ZHJlc3NFc2NhcGVNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24oY29uc3QgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xl
ZnRWYWx1ZTsgfQotCi0gICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRk
cmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7IH0KLQotcHJpdmF0
ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7Ci0gICAgQWRkcmVzc0Vz
Y2FwZU1vZGUgbV9hZGRyZXNzRXNjYXBlTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBv
aW50ZXJFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMjdjMjFj
NTA1YTAzNjgzY2JlOTU2MDQ2MjMyOTUxZWIxMTJmZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lv
biBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2Rl
IGFkZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
Ok1ha2VQb2ludGVyKQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkK
LSAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2RlKQotICAgIHsK
LSAgICB9Ci0KLSAgICB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAg
TWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2ludGVyRXhwcmVzc2lvbiYpID0gZGVs
ZXRlOwotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtlUG9pbnRlckV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0
VmFsdWU7IH0KLQotICAgIGJvb2wgbWlnaHRFc2NhcGUoKSBjb25zdCB7IHJldHVybiBtX2FkZHJl
c3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVzOyB9Ci0KLXByaXZhdGU6
Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdFZhbHVlOwotICAgIEFkZHJlc3NFc2Nh
cGVNb2RlIG1fYWRkcmVzc0VzY2FwZU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShNYWtlUG9pbnRlckV4cHJlc3Npb24pCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihNYWtlUG9pbnRlckV4cHJl
c3Npb24sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOYW1lU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjOTQ2ZmRmYTJkMjVkM2E4N2Y1MmFlZDI4MWJlZTYwZDEyOWQ0M2IwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi0vLyBEaWZmZXJlbnQgc2hhZGVyIG1vZHVsZXMgb3BlcmF0ZSBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcy4KLS8vIFRoaXMgbWVhbnMgaXQncyBwb3NzaWJsZSB0byBoYXZl
IHR3byBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBzaWduYXR1cmVzLCBhcyBsb25nIGFzIHRoZXkg
YXJlIGluIGRpZmZlcmVudCBtb2R1bGVzLgotZW51bSBjbGFzcyBOYW1lU3BhY2UgOiB1aW50OF90
IHsKLSAgICBTdGFuZGFyZExpYnJhcnkgPSAwLAotICAgIE5hbWVTcGFjZTEgPSAxLAotICAgIE5h
bWVTcGFjZTIgPSAyCi19OwotCi1jb25zdGV4cHIgdW5zaWduZWQgbmFtZVNwYWNlQ291bnQgPSAz
OwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFt
ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xO
YW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIxMWY4YmEzMDY2ODg5
NDZjYjdmMmYxOTdiNTk2YjVjYjM5NmMyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYW1lZFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNp
bmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYW1lZFR5cGUgOiBwdWJs
aWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAg
ICB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgTmFtZWRUeXBlKEtpbmQg
a2luZCwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lKQotICAgICAgICA6IFR5
cGUoa2luZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBt
X25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICB7Ci0gICAgfQotCi0gICAgTmFtZWRUeXBlKGNvbnN0
IE5hbWVkVHlwZSYpID0gZGVsZXRlOwotICAgIE5hbWVkVHlwZShOYW1lZFR5cGUmJikgPSBkZWZh
dWx0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KLQotICAgIFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgTmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXROYW1lU3BhY2UoTmFtZVNw
YWNlIG5hbWVTcGFjZSkgeyBtX25hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKSB7IHJldHVy
biAqdGhpczsgfQotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBTdHJpbmcg
bV9uYW1lOwotICAgIE5hbWVTcGFjZSBtX25hbWVTcGFjZSB7IE5hbWVTcGFjZTo6U3RhbmRhcmRM
aWJyYXJ5IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShOYW1lZFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
VFlQRShOYW1lZFR5cGUsIGlzTmFtZWRUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZDlhYWY1YmRlMmNhN2E4ZTM5YzU1Y2M1
ODQ4MGIzY2E0MjhiN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHB1Ymxp
YyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24m
JiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICA6IEZ1bmN0aW9uRGVjbGFyYXRpb24oV1RG
TW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRl
OwotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotcHJpdmF0ZToKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9G
VU5DVElPTl9ERUNMQVJBVElPTihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLCBpc05hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU1NGExNjJiNzgxN2Q0NzNhODJkZDk3OTNhMGJlOTEyMzBhMzRlZDMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTmF0aXZlVHlwZURl
Y2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3Vt
ZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBl
QXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0gICAgewotICAgIH0KLQotICAgIH5O
YXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBOYXRpdmVUeXBlRGVjbGFy
YXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAgTmF0aXZl
VHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gbV90eXBlQXJndW1lbnRz
OyB9Ci0KLSAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0ludDsgfQotICAgIGJv
b2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2lzTnVtYmVyOyB9Ci0gICAgYm9vbCBpc0Zs
b2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zsb2F0aW5nOyB9Ci0gICAgYm9vbCBpc0F0b21p
YygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdG9taWM7IH0KLSAgICBib29sIGlzVmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9pc1ZlY3RvcjsgfQotICAgIGJvb2wgaXNNYXRyaXgoKSBjb25zdCB7IHJl
dHVybiBtX2lzTWF0cml4OyB9Ci0gICAgYm9vbCBpc09wYXF1ZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2lzT3BhcXVlVHlwZTsgfQotICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1RleHR1cmU7IH0KLSAgICBib29sIGlzVGV4dHVyZUFycmF5KCkgY29uc3QgeyByZXR1cm4g
bV9pc1RleHR1cmVBcnJheTsgfQotICAgIGJvb2wgaXNEZXB0aFRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2lzRGVwdGhUZXh0dXJlOyB9Ci0gICAgYm9vbCBpc1dyaXRhYmxlVGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNXcml0YWJsZVRleHR1cmU7IH0KLSAgICBib29sIGlzQ3ViZVRleHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ3ViZVRleHR1cmU7IH0KLSAgICB1aW50IHRleHR1cmVE
aW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVEaW1lbnNpb247IH0KLSAgICBib29s
IGlzU2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpZ25lZDsgfQotICAgIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChpbnQpPiYgY2FuUmVwcmVzZW50SW50ZWdlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuUmVwcmVzZW50SW50ZWdlcjsgfQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCh1
bnNpZ25lZCk+JiBjYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoKSBjb25zdCB7IHJldHVybiBt
X2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcjsgfQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChmbG9hdCk+JiBjYW5SZXByZXNlbnRGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUmVw
cmVzZW50RmxvYXQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRfdCk+
JiBzdWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcjsgfQotICAgIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYgZm9ybWF0VmFsdWVGcm9tSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlcjsgfQotICAgIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiBmb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcjsgfQotICAg
IHZvaWQgaXRlcmF0ZUFsbFZhbHVlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50NjRfdCk+
JiBjYWxsYmFjaykgeyBtX2l0ZXJhdGVBbGxWYWx1ZXMoY2FsbGJhY2spOyB9Ci1wcml2YXRlOgot
ICAgIHVuc2lnbmVkIG1hdHJpeERpbWVuc2lvbih1bnNpZ25lZCB0eXBlQXJndW1lbnRJbmRleCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01hdHJpeCgpKTsKLSAgICAgICAgQVNTRVJUKHR5cGVB
cmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbj4odHlwZUFyZ3VtZW50cygpW3R5cGVBcmd1bWVudEluZGV4XSkuaW50
ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLXB1YmxpYzoKLSAgICB1bnNpZ25lZCBudW1i
ZXJPZk1hdHJpeFJvd3MoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1hdHJpeERpbWVuc2lvbigy
KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMSk7Ci0gICAgfQotCi0gICAgVHlwZVJlZmVy
ZW5jZSYgdmVjdG9yVHlwZUFyZ3VtZW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZlY3Rv
cigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+Pih0
eXBlQXJndW1lbnRzKClbMF0pOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHZlY3RvclNpemUoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmVjdG9yKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpn
ZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5cGVBcmd1bWVudHMoKVsxXSkuaW50ZWdlckxp
dGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIG1hdHJpeFR5cGVB
cmd1bWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRyaXgoKSk7Ci0gICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4odHlwZUFyZ3VtZW50cygpWzBd
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldElzSW50KCkgeyBtX2lzSW50ID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0SXNOdW1iZXIoKSB7IG1faXNOdW1iZXIgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJ
c0Zsb2F0aW5nKCkgeyBtX2lzRmxvYXRpbmcgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0F0b21p
YygpIHsgbV9pc0F0b21pYyA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzVmVjdG9yKCkgeyBtX2lz
VmVjdG9yID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNNYXRyaXgoKSB7IG1faXNNYXRyaXggPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRJc09wYXF1ZVR5cGUoKSB7IG1faXNPcGFxdWVUeXBlID0gdHJ1
ZTsgfQotICAgIHZvaWQgc2V0SXNUZXh0dXJlKCkgeyBtX2lzVGV4dHVyZSA9IHRydWU7IH0KLSAg
ICB2b2lkIHNldElzVGV4dHVyZUFycmF5KCkgeyBtX2lzVGV4dHVyZUFycmF5ID0gdHJ1ZTsgfQot
ICAgIHZvaWQgc2V0SXNEZXB0aFRleHR1cmUoKSB7IG1faXNEZXB0aFRleHR1cmUgPSB0cnVlOyB9
Ci0gICAgdm9pZCBzZXRJc1dyaXRhYmxlVGV4dHVyZSgpIHsgbV9pc1dyaXRhYmxlVGV4dHVyZSA9
IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ3ViZVRleHR1cmUoKSB7IG1faXNDdWJlVGV4dHVyZSA9
IHRydWU7IH0KLSAgICB2b2lkIHNldFRleHR1cmVEaW1lbnNpb24odWludCB0ZXh0dXJlRGltZW5z
aW9uKSB7IG1fdGV4dHVyZURpbWVuc2lvbiA9IHRleHR1cmVEaW1lbnNpb247IH0KLSAgICB2b2lk
IHNldElzU2lnbmVkKCkgeyBtX2lzU2lnbmVkID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0Q2FuUmVw
cmVzZW50SW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4mJiBjYW5SZXByZXNlbnQpIHsg
bV9jYW5SZXByZXNlbnRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNlbnQpOyB9Ci0gICAgdm9p
ZCBzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoc3RkOjpmdW5jdGlvbjxib29sKHVuc2ln
bmVkKT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIgPSBX
VEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lkIHNldENhblJlcHJlc2VudEZsb2F0KHN0
ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50
RmxvYXQgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lkIHNldFN1Y2Nlc3Nvcihz
dGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRfdCk+JiYgc3VjY2Vzc29yKSB7IG1fc3VjY2Vzc29y
ID0gV1RGTW92ZShzdWNjZXNzb3IpOyB9Ci0gICAgdm9pZCBzZXRGb3JtYXRWYWx1ZUZyb21JbnRl
Z2VyKHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYmIGZvcm1hdFZhbHVlKSB7IG1fZm9ybWF0
VmFsdWVGcm9tSW50ZWdlciA9IFdURk1vdmUoZm9ybWF0VmFsdWUpOyB9Ci0gICAgdm9pZCBzZXRG
b3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVuc2ln
bmVkKT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlciA9
IFdURk1vdmUoZm9ybWF0VmFsdWUpOyB9Ci0gICAgdm9pZCBzZXRJdGVyYXRlQWxsVmFsdWVzKHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50NjRfdCk+Jik+JiYg
aXRlcmF0ZUFsbFZhbHVlcykgeyBtX2l0ZXJhdGVBbGxWYWx1ZXMgPSBXVEZNb3ZlKGl0ZXJhdGVB
bGxWYWx1ZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1bWVu
dHM7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKGludCk+IG1fY2FuUmVwcmVzZW50SW50ZWdlcjsK
LSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiBtX2NhblJlcHJlc2VudFVuc2lnbmVk
SW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiBtX2NhblJlcHJlc2VudEZs
b2F0OwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4gbV9zdWNjZXNzb3I7Ci0g
ICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+IG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlcjsK
LSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiBtX2Zvcm1hdFZhbHVlRnJvbVVu
c2lnbmVkSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGludDY0X3QpPiYpPiBtX2l0ZXJhdGVBbGxWYWx1ZXM7Ci0gICAgdWludCBtX3RleHR1
cmVEaW1lbnNpb24geyAwIH07Ci0gICAgYm9vbCBtX2lzSW50IHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNOdW1iZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0Zsb2F0aW5nIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faXNBdG9taWMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1ZlY3RvciB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX2lzTWF0cml4IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNPcGFx
dWVUeXBlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUZXh0dXJlIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1faXNUZXh0dXJlQXJyYXkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0RlcHRoVGV4dHVy
ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzV3JpdGFibGVUZXh0dXJlIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1faXNDdWJlVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzU2lnbmVkIHsg
ZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgaXNOYXRpdmVU
eXBlRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NDk5OGIxNDRjMWM0YjE2NGI0ZWYyYzljOTBhYTJjZTRk
MDg1NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBC
YXNlRnVuY3Rpb25BdHRyaWJ1dGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGRlcHRoKQotICAg
ICAgICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShsb2NhdGlvbikKLSAgICAgICAgLCBtX3dpZHRo
KHdpZHRoKQotICAgICAgICAsIG1faGVpZ2h0KGhlaWdodCkKLSAgICAgICAgLCBtX2RlcHRoKGRl
cHRoKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5OdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoY29u
c3QgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7Ci0gICAgTnVtVGhyZWFk
c0Z1bmN0aW9uQXR0cmlidXRlKE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAg
ICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIHVuc2ln
bmVkIGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aDsgfQotCi1wcml2YXRlOgotICAgIHVu
c2lnbmVkIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbV9oZWlnaHQ7Ci0gICAgdW5zaWduZWQgbV9k
ZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NWZiZGI2YWI0YTZmYjgzYmU1ZDM0YzJkODg4YzAxNTA5OGUyNWRiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFBvaW50ZXJUeXBlIGZpbmFsIDog
cHVibGljIFJlZmVyZW5jZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJUeXBlKTsKLSAgICB1c2luZyBCYXNlID0gUmVm
ZXJlbmNlVHlwZTsKLQotICAgIFBvaW50ZXJUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRk
cmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAg
ICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUp
LCBLaW5kOjpQb2ludGVyKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFBvaW50ZXJUeXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgIHsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFBvaW50ZXJUeXBlKGxvY2F0aW9uLCBhZGRy
ZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotCi0gICAgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy0+QmFzZTo6aGFzaCgpIF4g
U3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2goInBvaW50ZXIiKTsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pbnRlclR5cGUmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFjZSgpICYm
IGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZWxl
bWVudFR5cGUoKS50b1N0cmluZygpLCAnKicpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFBvaW50ZXJUeXBlKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUG9pbnRlclR5cGUsIGlzUG9pbnRlclR5
cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDExYTIzZDBhMzU2Y2I3MzQ4YjQzNjAzZTc3NWJiMzg3MmM2Nzc3NGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHJvdGVjdGVkOgotICAgIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24o
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYm
IGJhc2UpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwga2luZCkKLSAgICAgICAgLCBt
X2Jhc2UoV1RGTW92ZShiYXNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKGNvbnN0IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAg
IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJuIG1fYmFzZTsgfQotICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgYmFzZVJlZmVyZW5jZSgpIHsgcmV0dXJuIG1fYmFzZTsg
fQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlQmFzZSgpIHsgcmV0dXJuIFdURk1vdmUo
bV9iYXNlKTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Jhc2U7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sIGlzUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xRdWFsaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFF1YWxpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDg3N2RmMjJl
ZDIxNmQ2ZTBmMDNmNDdmNGNmMWY0ODgzN2I5YzgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFF1YWxpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWVudW0gY2xhc3MgUXVhbGlmaWVyIDogdWludDhfdCB7Ci0gICAgTm9pbnRlcnBvbGF0
aW9uLAotICAgIE5vcGVyc3BlY3RpdmUsCi0gICAgVW5pZm9ybSwKLSAgICBDZW50cm9pZCwKLSAg
ICBTYW1wbGUKLX07Ci0KLXVzaW5nIFF1YWxpZmllcnMgPSBWZWN0b3I8UXVhbGlmaWVyPjsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTAzZWM4ZDE4MGM4YjU5Y2QxZGIxNGNmNWQ1
NjdhYjA1MTY5ZTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8
bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi0vKgotICogIDEuIEV2YWx1YXRlIG1fbGVmdFZhbHVlCi0gKiAgMi4g
QXNzaWduIHRoZSByZXN1bHQgdG8gbV9vbGRWYWx1ZQotICogIDMuIEV2YWx1YXRlIG1fbmV3VmFs
dWVFeHByZXNzaW9uCi0gKiAgNC4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9uZXdWYWx1ZQotICog
IDUuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbGVmdFZhbHVlCi0gKiAgNi4gRXZhbHVhdGUgbV9y
ZXN1bHRFeHByZXNzaW9uCi0gKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQKLSAqLwotY2xhc3MgUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+IGxlZnRW
YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9kaWZ5V3Jp
dGUpCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAs
IG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwg
UXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCi0gICAg
ICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0
aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUsIFVuaXF1ZVJlZjxW
YXJpYWJsZURlY2xhcmF0aW9uPiBvbGRWYWx1ZSwgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRp
b24+IG5ld1ZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlJlYWRN
b2RpZnlXcml0ZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0g
ICAgICAgICwgbV9vbGRWYWx1ZShXVEZNb3ZlKG9sZFZhbHVlKSkKLSAgICAgICAgLCBtX25ld1Zh
bHVlKFdURk1vdmUobmV3VmFsdWUpKQotICAgIHsKLSAgICB9Ci0KLQotICAgIH5SZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKLQotICAgIHZvaWQgc2V0TmV3VmFsdWVFeHByZXNzaW9uKFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIG5ld1ZhbHVlRXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIG1fbmV3VmFsdWVFeHBy
ZXNzaW9uID0gV1RGTW92ZShuZXdWYWx1ZUV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIHZvaWQg
c2V0UmVzdWx0RXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByZXN1bHRFeHByZXNz
aW9uKQotICAgIHsKLSAgICAgICAgbV9yZXN1bHRFeHByZXNzaW9uID0gV1RGTW92ZShyZXN1bHRF
eHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+IG9s
ZFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVm
PFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChtX29sZFZhbHVlKSk7
Ci0gICAgfQotCi0gICAgVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPiBuZXdWYXJpYWJsZVJl
ZmVyZW5jZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJl
ZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOwotICAgIH0KLQot
ICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0gICAg
VW5pcXVlUmVmPEV4cHJlc3Npb24+JiBsZWZ0VmFsdWVSZWZlcmVuY2UoKSB7IHJldHVybiBtX2xl
ZnRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG9sZFZhbHVlKCkgeyByZXR1cm4g
bV9vbGRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG5ld1ZhbHVlKCkgeyByZXR1
cm4gbV9uZXdWYWx1ZTsgfQotICAgIEV4cHJlc3Npb24mIG5ld1ZhbHVlRXhwcmVzc2lvbigpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9uZXdWYWx1ZUV4cHJlc3Npb24pOwotICAgICAgICByZXR1
cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOwotICAgIH0KLSAgICBFeHByZXNzaW9uJiByZXN1bHRF
eHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3VsdEV4cHJlc3Npb24pOwot
ICAgICAgICByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsKLSAgICB9Ci0gICAgVW5pcXVlUmVm
PEV4cHJlc3Npb24+IHRha2VMZWZ0VmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fbGVmdFZhbHVl
KTsgfQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0YWtlT2xkVmFsdWUoKSB7
IHJldHVybiBXVEZNb3ZlKG1fb2xkVmFsdWUpOyB9Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+IHRha2VOZXdWYWx1ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9uZXdWYWx1ZSk7IH0K
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZU5ld1ZhbHVlRXhwcmVzc2lvbigpCi0gICAg
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IFdURk1vdmUobV9uZXdWYWx1ZUV4cHJlc3Npb24udmFs
dWUoKSk7Ci0gICAgICAgIG1fbmV3VmFsdWVFeHByZXNzaW9uLnJlc2V0KCk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlUmVzdWx0
RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IFdURk1vdmUobV9yZXN1
bHRFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX3Jlc3VsdEV4cHJlc3Npb24ucmVzZXQo
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IG1fbGVmdFZhbHVlOwotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xh
cmF0aW9uPiBtX29sZFZhbHVlOwotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBt
X25ld1ZhbHVlOwotICAgIHN0ZDo6b3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX25l
d1ZhbHVlRXhwcmVzc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9u
Pj4gbV9yZXN1bHRFeHByZXNzaW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1NmFjZDMxNWMxYzIxNDM1NzllYTVkMGQyZTAyNWI1ZWM0ZWYwZTY0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNl
LmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZmVyZW5jZVR5cGUpOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgflJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXByb3RlY3RlZDoK
LSAgICBSZWZlcmVuY2VUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSwgS2luZCBraW5kKQotICAg
ICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBraW5kKQotICAgICAgICAsIG1fYWRkcmVzc1Nw
YWNlKGFkZHJlc3NTcGFjZSkKLSAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVu
dFR5cGUpKQotICAgIHsKLSAgICB9Ci0KLQotcHVibGljOgotICAgIEFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsgfQotICAgIGNvbnN0IFVu
bmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0K
LSAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9
Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB+bV9l
bGVtZW50VHlwZS0+aGFzaCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBZGRyZXNzU3BhY2Ug
bV9hZGRyZXNzU3BhY2U7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX2VsZW1lbnRUeXBlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
UmVmZXJlbmNlVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFJlZmVy
ZW5jZVR5cGUsIGlzUmVmZXJlbmNlVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVwbGFjZVdpdGguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJlMTRmYmNjOGU3YmQwMWYzZGYwNTEzYzQwM2VkYmZjYmNhNmY3YWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE5ldywgdHlwZW5hbWUgT2xkLCB0
eXBlbmFtZSAuLi5BcmdzPgotQUxXQVlTX0lOTElORSBOZXcqIHJlcGxhY2VXaXRoKE9sZCYgb2xk
LCBBcmdzJiYuLi4gYXJncykKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXcpIDw9IHNp
emVvZihPbGQpLCAiVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwbGFjZW1lbnQgbmV3IGJlbG93IHRv
IG5vdCBvdmVyd3JpdGUgdW5vd25lZCBtZW1vcnkuIik7Ci0gICAgdm9pZCogbG9jYXRpb24gPSAm
b2xkOwotICAgIE9sZDo6ZGVzdHJ1Y3Qob2xkKTsKLSAgICByZXR1cm4gbmV3IChsb2NhdGlvbikg
TmV3KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlOjpXSExTTDo6QVNUCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvbHZhYmxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTIyYTFkN2VjY2VlMTI0MTg4NTVkZTUxNDc0ZmVlOWEyNGJiNjE2Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
OTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5h
bWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBSZXNvbHZhYmxlVHlwZSA6IHB1YmxpYyBUeXBlIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5SZXNvbHZhYmxlVHlwZSgp
ID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIFJlc29sdmFibGVUeXBlKEtpbmQga2luZCkKLSAg
ICAgICAgOiBUeXBlKGtpbmQpCi0gICAgeyB9Ci0KLQotICAgIFJlc29sdmFibGVUeXBlKGNvbnN0
IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGUoUmVzb2x2YWJs
ZVR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgUmVzb2x2YWJsZVR5cGUmIG9wZXJhdG9yPShjb25z
dCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRv
cj0oUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5h
bWVkVHlwZSYpIGNvbnN0OwotCi0gICAgY29uc3QgVW5uYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1fcmVzb2x2ZWRUeXBlIDog
bnVsbHB0cjsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiByZXNvbHZlZFR5cGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuICpt
X3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICBVbm5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5
cGUoKSB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZlZFR5cGUgOiBudWxscHRy
OyB9Ci0gICAgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwotICAg
IH0KLQotICAgIHZvaWQgcmVzb2x2ZShSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgewotICAg
ICAgICBtX3Jlc29sdmVkVHlwZSA9IFdURk1vdmUodHlwZSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV9yZXNvbHZlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShSZXNvbHZhYmxlVHlw
ZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFJlc29sdmFibGVUeXBlLCBp
c1Jlc29sdmFibGVUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyNDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJiN2Y4YzcyMTFjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xB
cnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExT
TEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBSZXNvdXJjZVNlbWFudGljOjpp
c0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50
cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAg
IGNhc2UgTW9kZTo6VW5vcmRlcmVkQWNjZXNzVmlldzoKLSAgICAgICAgaWYgKGlzPFJlZmVyZW5j
ZVR5cGU+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9
IGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIHJldHVy
biByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NTcGFjZTo6Q29uc3RhbnQg
fHwgcmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3BhY2U6OkRldmljZTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKSB7
Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5j
ZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgaWYgKGlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGNhc2UgTW9kZTo6VGV4dHVyZToKLSAgICAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGU+KHVubmFt
ZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1bm5h
bWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAg
ICAgaWYgKGlzPEFycmF5VHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIGlmIChpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAg
ICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5h
bWVkVHlwZSk7Ci0gICAgICAgICAgICBpZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKS5p
c1RleHR1cmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBN
b2RlOjpCdWZmZXI6Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
LmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlNhbXBsZXI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnNhbXBsZXJUeXBlKCkpOwotICAgIH0KLX0KLQotYm9v
bCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNo
YWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9p
bnRUeXBlPiYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGly
ZWN0aW9uOjpJbnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGQ1ZWQzN2U4YWI5N2ZmN2E1OTAyZDdm
MWVhZWJmYTY1NWVhYzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291
cmNlU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb3VyY2VTZW1hbnRp
YyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3QgewotICAgICAgICBVbm9yZGVy
ZWRBY2Nlc3NWaWV3LAotICAgICAgICBUZXh0dXJlLAotICAgICAgICBCdWZmZXIsCi0gICAgICAg
IFNhbXBsZXIKLSAgICB9OwotCi0gICAgUmVzb3VyY2VTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9j
YXRpb24sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHNwYWNlKQotICAgICAg
ICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICAgICAgLCBtX21vZGUobW9kZSkKLSAgICAg
ICAgLCBtX2luZGV4KGluZGV4KQotICAgICAgICAsIG1fc3BhY2Uoc3BhY2UpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgflJlc291cmNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBS
ZXNvdXJjZVNlbWFudGljKGNvbnN0IFJlc291cmNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBS
ZXNvdXJjZVNlbWFudGljKFJlc291cmNlU2VtYW50aWMmJikgPSBkZWZhdWx0OwotCi0gICAgU3Ry
aW5nVmlldyB0b1N0cmluZygpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAg
ICAgICBjYXNlIE1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc6Ci0gICAgICAgICAgICByZXR1cm4g
IlVub3JkZXJlZEFjY2Vzc1ZpZXciOwotICAgICAgICBjYXNlIE1vZGU6OlRleHR1cmU6Ci0gICAg
ICAgICAgICByZXR1cm4gIlRleHR1cmUiOwotICAgICAgICBjYXNlIE1vZGU6OkJ1ZmZlcjoKLSAg
ICAgICAgICAgIHJldHVybiAiQnVmZmVyIjsKLSAgICAgICAgY2FzZSBNb2RlOjpTYW1wbGVyOgot
ICAgICAgICAgICAgcmV0dXJuICJTYW1wbGVyIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE1v
ZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQotICAgIHVuc2lnbmVkIGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIHVuc2lnbmVkIHNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcGFjZTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlU2Vt
YW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbW9kZSA9PSBvdGhl
ci5tX21vZGUgJiYgbV9pbmRleCA9PSBvdGhlci5tX2luZGV4ICYmIG1fc3BhY2UgPT0gb3RoZXIu
bV9zcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VTZW1h
bnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBl
JiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2NlcHRh
YmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgot
ICAgIE1vZGUgbV9tb2RlOwotICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0gICAgdW5zaWduZWQgbV9z
cGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDIxYmI1NmJjODBmODA1MDliODhmMTRjNmJlYTc5ZjkyODZlZGE0MmEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0
YXRlbWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmV0dXJuIGZpbmFs
IDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgUmV0dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+JiYgdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpS
ZXR1cm4pCi0gICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgflJldHVybigpID0gZGVmYXVsdDsKLQotICAgIFJldHVybihjb25zdCBSZXR1cm4mKSA9
IGRlbGV0ZTsKLSAgICBSZXR1cm4oUmV0dXJuJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Np
b24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmV0dXJuKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1cm4sIGlzUmV0dXJuKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWE3YmE2MmJlMGQ1N2ZiNGFjMTk3ZDcyZDQwNDA4NmQ1MjU3MmU3
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMu
aCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91
dFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdXNpbmcgU2Vt
YW50aWMgPSBWYXJpYW50PEJ1aWx0SW5TZW1hbnRpYywgUmVzb3VyY2VTZW1hbnRpYywgU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljLCBTdGFnZUluT3V0U2VtYW50aWM+OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmMDE1Mzk0ZTFmNjZlYTY3NDU3
NDFkNzA3OTlkNmEyZDViZWE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFt
ZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QKLXsKLSAgICBpZiAoIWlzPFR5cGVSZWZl
cmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIHR5
cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAg
aWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBl
KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNOdW1iZXIoKTsK
LX0KLQotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZv
clNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3QKLXsKLSAgICByZXR1cm4gZGly
ZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjM5ZWMxOTZmODk5NWMyMDk1ZWQxZTJjMDRmODhm
ZTg4ZDFjOGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxv
Y2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5TcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMoY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgPSBkZWxldGU7Ci0g
ICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0
IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNo
YWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxNmRjNjQ5NjViMzIzMTY1NTA5ZWM2MWNjZTJkYjRhOTY4MGViZDMz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5j
dGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1ib29sIFN0YWdlSW5P
dXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAotewotICAgIGlmIChpczxBcnJheVR5cGU+KHVu
bmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFpczxUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiB0eXBl
UmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgIGF1
dG8mIHJlc29sdmVkVHlwZSA9IHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCk7Ci0gICAgaWYg
KGlzPEVudW1lcmF0aW9uRGVmaW5pdGlvbj4ocmVzb2x2ZWRUeXBlKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVkVHlwZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpOwotICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKQotICAg
ICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQotICAgICAgICB8fCBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKLX0KLQotYm9vbCBTdGFnZUluT3V0U2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBv
aW50VHlwZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRyeVBvaW50VHlwZSkgewotICAgIGNh
c2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2Fz
ZSBFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0g
U2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6Q29t
cHV0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzBlMjNjYWE0ZDdlMjEyZjYyYTBjNTM2YTdlM2FjOWY0YTEzNzk3MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBTdGFnZUluT3V0U2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdGFnZUluT3V0U2VtYW50
aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgOiBCYXNl
U2VtYW50aWMobG9jYXRpb24pCi0gICAgICAgICwgbV9pbmRleChpbmRleCkKLSAgICB7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAg
U3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYpID0gZGVsZXRlOwot
ICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2VtYW50aWMmJikgPSBkZWZhdWx0Owot
Ci0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3RhZ2VJbk91dFNlbWFudGljJiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2lj
cyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURp
cmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9p
bnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1faW5k
ZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzOGRjZmQ3NjNmYTFjZTg4Y2NlMjQwODAwNTc2MTc4YjU3MjU2NjA5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFN0YXRlbWVudCB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAgICB+U3RhdGVtZW50KCkg
PSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0g
ICAgICAgIEJsb2NrLAotICAgICAgICBCcmVhaywKLSAgICAgICAgQ29udGludWUsCi0gICAgICAg
IERvV2hpbGVMb29wLAotICAgICAgICBFZmZlY3RmdWxFeHByZXNzaW9uLAotICAgICAgICBGYWxs
dGhyb3VnaCwKLSAgICAgICAgRm9yTG9vcCwKLSAgICAgICAgSWYsCi0gICAgICAgIFJldHVybiwK
LSAgICAgICAgU3RhdGVtZW50TGlzdCwKLSAgICAgICAgU3dpdGNoQ2FzZSwKLSAgICAgICAgU3dp
dGNoLAotICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywKLSAgICAgICAgV2hpbGVMb29wLAot
ICAgIH07Ci0gICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2lu
ZCkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgICAgICwgbV9r
aW5kKGtpbmQpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RhdGVt
ZW50Jik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoU3RhdGVtZW50Jik7Ci0KLSAgICBTdGF0
ZW1lbnQoY29uc3QgU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3RhdGVtZW50KFN0YXRlbWVu
dCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KLQotICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpC
bG9jazsgfQotICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpCcmVhazsgfQotICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpDb250aW51ZTsgfQotICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpEb1doaWxlTG9vcDsgfQotICAgIGJvb2wgaXNFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVmZmVj
dGZ1bEV4cHJlc3Npb247IH0KLSAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6RmFsbHRocm91Z2g7IH0KLSAgICBib29sIGlzRm9yTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGb3JMb29wOyB9Ci0gICAgYm9vbCBpc0lmU3Rh
dGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OklmOyB9Ci0gICAgYm9vbCBp
c1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZXR1cm47IH0KLSAgICBi
b29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTdGF0
ZW1lbnRMaXN0OyB9Ci0gICAgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6U3dpdGNoQ2FzZTsgfQotICAgIGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1Zhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0gICAgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpXaGlsZUxvb3A7IH0KLQotICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQg
dXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlv
biA9IGxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0
aW9uOwotICAgIEtpbmQgbV9raW5kOwotfTsKLQotdXNpbmcgU3RhdGVtZW50cyA9IFZlY3RvcjxV
bmlxdWVSZWY8U3RhdGVtZW50Pj47Ci0KLX0KLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShTdGF0ZW1lbnQpCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9T
VEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudCYg
c3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0
cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2MwMjczODczZjFhNjIwNGU3OTkxZWU3MTczMjcwNzQ0MTVmZjU2MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFN0cnVj
dHVyZURlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgU3RydWN0dXJlRWxlbWVudHMmJiBzdHJ1Y3R1
cmVFbGVtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6U3RydWN0dXJlRGVmaW5pdGlv
biwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9zdHJ1Y3R1cmVFbGVtZW50
cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN0cnVj
dHVyZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKGNv
bnN0IFN0cnVjdHVyZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBTdHJ1Y3R1cmVEZWZpbml0
aW9uKFN0cnVjdHVyZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgU3RydWN0dXJlRWxl
bWVudHMmIHN0cnVjdHVyZUVsZW1lbnRzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVFbGVtZW50czsg
fQotICAgIFN0cnVjdHVyZUVsZW1lbnQqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIHsK
LSAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihtX3N0cnVjdHVyZUVsZW1lbnRz
LmJlZ2luKCksIG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCksIFsmXShTdHJ1Y3R1cmVFbGVtZW50
JiBzdHJ1Y3R1cmVFbGVtZW50KSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1
cmVFbGVtZW50Lm5hbWUoKSA9PSBuYW1lOwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKGl0ZXJh
dG9yID09IG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuICYqaXRlcmF0b3I7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFN0cnVjdHVyZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVudHM7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShTdHJ1Y3R1cmVEZWZp
bml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoU3RydWN0dXJlRGVm
aW5pdGlvbiwgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkzYzI4NmNmMmQwMmYzYzQwZGVkYzZiOGE0YTNlY2QyZmEwZGVjYTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCisr
KyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50
aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3RydWN0dXJlRWxl
bWVudCBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
U3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFF1YWxpZmllcnMmJiBxdWFs
aWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVl
X3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2Nh
dGlvbikKLSAgICAgICAgLCBtX3F1YWxpZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzKSkKLSAgICAg
ICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKLSAgICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+U3RydWN0dXJlRWxlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIFN0cnVjdHVyZUVs
ZW1lbnQoY29uc3QgU3RydWN0dXJlRWxlbWVudCYpID0gZGVsZXRlOwotICAgIFN0cnVjdHVyZUVs
ZW1lbnQoU3RydWN0dXJlRWxlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBjb25zdCBDb2RlTG9j
YXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0g
ICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7
IHJldHVybiBtX3NlbWFudGljLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9u
IG1fY29kZUxvY2F0aW9uOwotICAgIFF1YWxpZmllcnMgbV9xdWFsaWZpZXJzOwotICAgIFJlZjxV
bm5hbWVkVHlwZT4gbV90eXBlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotfTsKLQotdXNpbmcgU3RydWN0dXJlRWxlbWVudHMg
PSBWZWN0b3I8U3RydWN0dXJlRWxlbWVudD47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZGM3YTVjOWVlYTk1NTViZGE3YzQ2NDIx
YjNlODVlYTRlZGYzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hD
YXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJs
b2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTENv
bnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3dpdGNoQ2FzZSBmaW5hbCA6IHB1
YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPENvbnN0
YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKLSAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCi0gICAgICAgICwgbV92YWx1ZShXVEZNb3Zl
KHZhbHVlKSkKLSAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUoYmxvY2spKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKLQotICAgIFN3aXRjaENhc2UoY29uc3Qg
U3dpdGNoQ2FzZSYpID0gZGVsZXRlOwotICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkg
eyByZXR1cm4gbV92YWx1ZTsgfQotICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7
IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4gbV92
YWx1ZTsKLSAgICBCbG9jayBtX2Jsb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3dpdGNoQ2FzZSkKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoQ2FzZSwgaXNTd2l0Y2hDYXNlKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzI5MzJhMzM4Y2E5Y2Y0YjM3NGE1
NjE0ZWZhZmZjZjAxMjU2ZDRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaFN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTFN3aXRjaENhc2UuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3dpdGNoU3RhdGVtZW50IGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgU3dpdGNoU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxTd2l0Y2hDYXNlPiYmIHN3aXRjaENhc2Vz
KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoKQotICAgICAgICAs
IG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV9zd2l0Y2hDYXNlcyhXVEZNb3Zl
KHN3aXRjaENhc2VzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN3aXRjaFN0YXRlbWVudCgpID0g
ZGVmYXVsdDsKLQotICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9
IGRlbGV0ZTsKLSAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVs
dDsKLQotICAgIEV4cHJlc3Npb24mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIFZl
Y3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJldHVybiBtX3N3aXRjaENhc2VzOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fdmFsdWU7Ci0gICAgVmVj
dG9yPFN3aXRjaENhc2U+IG1fc3dpdGNoQ2FzZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hTdGF0ZW1lbnQpCi0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRjaFN0YXRlbWVudCwgaXNT
d2l0Y2hTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRl
cm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwZDhlNDQ5MjIwNWM1ZTcwY2NmNTkyYzg2ZGI1N2IwMzMxNWExMzg1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgVGVybmFyeUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGVybmFyeUV4cHJlc3Npb24o
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUs
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpUZXJuYXJ5KQotICAgICAgICAsIG1fcHJlZGljYXRlKFdURk1vdmUocHJlZGljYXRlKSkK
LSAgICAgICAgLCBtX2JvZHlFeHByZXNzaW9uKFdURk1vdmUoYm9keUV4cHJlc3Npb24pKQotICAg
ICAgICAsIG1fZWxzZUV4cHJlc3Npb24oV1RGTW92ZShlbHNlRXhwcmVzc2lvbikpCi0gICAgewot
ICAgIH0KLQotICAgIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIFRlcm5h
cnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgVGVy
bmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhw
cmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4gbV9wcmVkaWNhdGU7IH0KLSAgICBFeHByZXNz
aW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fYm9keUV4cHJlc3Npb247IH0KLSAgICBF
eHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWxzZUV4cHJlc3Npb247IH0K
LQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wcmVkaWNhdGU7Ci0gICAg
VW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYm9keUV4cHJlc3Npb247Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IG1fZWxzZUV4cHJlc3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUZXJuYXJ5RXhwcmVzc2lvbikKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRlcm5hcnlFeHByZXNzaW9uLCBp
c1Rlcm5hcnlFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmODgyZGQ5OTFiODBkOWY1NWQ1
YTAxYmNiMzhiMDhjNzc4ZGQ5NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5UeXBlKCkgPSBkZWZhdWx0OwotCi1wdWJs
aWM6Ci0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0gICAgICAgIC8vIFVubmFtZWRU
eXBlcwotICAgICAgICBUeXBlUmVmZXJlbmNlLAotICAgICAgICBQb2ludGVyLAotICAgICAgICBB
cnJheVJlZmVyZW5jZSwKLSAgICAgICAgQXJyYXksCi0gICAgICAgIC8vIE5hbWVkVHlwZXMKLSAg
ICAgICAgVHlwZURlZmluaXRpb24sCi0gICAgICAgIFN0cnVjdHVyZURlZmluaXRpb24sCi0gICAg
ICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiwKLSAgICAgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9u
LAotICAgICAgICAvLyBSZXNvbHZhYmxlVHlwZXMKLSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAg
ICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKLSAg
ICB9OwotCi0gICAgVHlwZShLaW5kIGtpbmQpCi0gICAgICAgIDogbV9raW5kKGtpbmQpCi0gICAg
eyB9Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShUeXBlJik7Ci0gICAgc3RhdGljIHZvaWQgZGVz
dHJ1Y3QoVHlwZSYpOwotCi0gICAgZXhwbGljaXQgVHlwZShjb25zdCBUeXBlJikgPSBkZWxldGU7
Ci0gICAgVHlwZShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFR5cGUmIG9wZXJhdG9yPShjb25z
dCBUeXBlJikgPSBkZWxldGU7Ci0gICAgVHlwZSYgb3BlcmF0b3I9KFR5cGUmJikgPSBkZWZhdWx0
OwotCi0gICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0KLSAgICBib29s
IGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6VHlwZVJlZmVy
ZW5jZSAmJiBraW5kKCkgPD0gS2luZDo6QXJyYXk7IH0KLSAgICBib29sIGlzTmFtZWRUeXBlKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVEZWZpbml0aW9uICYmIGtpbmQoKSA8
PSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb247IH0KLSAgICBib29sIGlzUmVzb2x2YWJsZVR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6RmxvYXRMaXRlcmFsICYmIGtpbmQo
KSA8PSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0KLSAgICBib29sIGlzVHlwZVJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUeXBlUmVmZXJlbmNlOyB9
Ci0gICAgYm9vbCBpc1BvaW50ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlBvaW50ZXI7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc0FycmF5VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheTsgfQotICAgIGJvb2wgaXNS
ZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNQb2ludGVyVHlwZSgpIHx8IGlzQXJyYXlS
ZWZlcmVuY2VUeXBlKCk7IH0KLQotICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUeXBlRGVmaW5pdGlvbjsgfQotICAgIGJvb2wgaXNTdHJ1
Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0cnVjdHVy
ZURlZmluaXRpb247IH0KLSAgICBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjsgfQotICAgIGJv
b2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9Ci0KLSAgICBib29sIGlzRmxvYXRMaXRlcmFsVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGbG9hdExpdGVyYWw7IH0KLSAgICBi
b29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7
IH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOwotICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxUeXBlKj4odGhpcyktPnVu
aWZ5Tm9kZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBLaW5kIG1fa2luZDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGUp
Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFRvVmFsdWVUeXBl
TmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRp
Y2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDk0ZTEwYmY3NTQyOWQ4NjZmNjQ0NTUwNTNhOTQzMTEyOGJjN2Y1
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotVHlwZUFyZ3VtZW50cyBjbG9uZShjb25z
dCBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQotewotICAgIFR5cGVBcmd1bWVudHMgcmVz
dWx0OwotICAgIGZvciAoY29uc3QgYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZUFyZ3VtZW50cykK
LSAgICAgICAgcmVzdWx0LmFwcGVuZChjbG9uZSh0eXBlQXJndW1lbnQpKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1UeXBlQXJndW1lbnQgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50JiB0eXBl
QXJndW1lbnQpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShj
b25zdCBDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgLT4gVHlwZUFyZ3Vt
ZW50IHsKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi5jbG9uZSgpOwotICAgIH0s
IFtdKGNvbnN0IFJlZjxUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgLT4gVHlwZUFyZ3Vt
ZW50IHsKLSAgICAgICAgcmV0dXJuIHR5cGVSZWZlcmVuY2UuY29weVJlZigpOwotICAgIH0pLCB0
eXBlQXJndW1lbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTJhMzJlYjZlYjUxODFkZjMwNjgyYmEyZTRkMjNmMjI1
ZDMxNzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFu
dEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVS
ZWZlcmVuY2U7Ci0KLXVzaW5nIFR5cGVBcmd1bWVudCA9IFZhcmlhbnQ8Q29uc3RhbnRFeHByZXNz
aW9uLCBSZWY8VHlwZVJlZmVyZW5jZT4+OwotdXNpbmcgVHlwZUFyZ3VtZW50cyA9IFZlY3RvcjxU
eXBlQXJndW1lbnQ+OwotCi1UeXBlQXJndW1lbnQgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50Jik7
Ci1UeXBlQXJndW1lbnRzIGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudHMmKTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVEZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUy
OTA1NTdiZWVlZmIwZmU0ZTIwY2IxOGYxODZiMjEyYzQzZGI4NzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVEZWZpbml0aW9uIGZpbmFs
IDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgVHlwZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBu
YW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6OlR5
cGVEZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGUo
V1RGTW92ZSh0eXBlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflR5cGVEZWZpbml0aW9uKCkgPSBk
ZWZhdWx0OwotCi0gICAgVHlwZURlZmluaXRpb24oY29uc3QgVHlwZURlZmluaXRpb24mKSA9IGRl
bGV0ZTsKLSAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotCi1wcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgUmVmPFVu
bmFtZWRUeXBlPiBtX3R5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlRGVmaW5pdGlvbikKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9UWVBFKFR5cGVEZWZpbml0aW9uLCBpc1R5cGVEZWZpbml0aW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjMzMWMzMmQ1NTQwZjYzMWMxNDFm
MmJjNDY5MWExODIxODRhZWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1SZWY8
VHlwZVJlZmVyZW5jZT4gVHlwZVJlZmVyZW5jZTo6d3JhcChDb2RlTG9jYXRpb24gbG9jYXRpb24s
IE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotewotICAgIFR5cGVBcmd1bWVudHMgdHlwZUFyZ3Vt
ZW50czsKLSAgICBpZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQot
ICAgICAgICB0eXBlQXJndW1lbnRzID0gQVNUOjpjbG9uZShkb3duY2FzdDxOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KHJlc29sdmVkVHlwZSkudHlwZUFyZ3VtZW50cygpKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgU3RyaW5nKHJlc29sdmVkVHlwZS5u
YW1lKCkpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKTsKLSAgICByZXN1bHQtPnNldFJlc29sdmVk
VHlwZShyZXNvbHZlZFR5cGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZkZWVl
ZmZlYWIwN2QwNDA0OWE4NTQ2Mjc3NzFjZWYzMDYyYmQ0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
bWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYW1lZFR5cGU7Ci0KLWNsYXNz
IFR5cGVSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5cGUgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFR5cGVSZWZlcmVuY2Up
OwotICAgIFR5cGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
LCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAgOiBVbm5hbWVkVHlwZShs
b2NhdGlvbiwgS2luZDo6VHlwZVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShu
YW1lKSkKLSAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkK
LSAgICB7Ci0gICAgfQotcHVibGljOgotICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVyZW5jZT4gY3Jl
YXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYm
IHR5cGVBcmd1bWVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiBuZXcgVHlw
ZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0eXBlQXJndW1lbnRz
KSkpOwotICAgIH0KLQotICAgIH5UeXBlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotCi0gICAgc3Rh
dGljIFJlZjxUeXBlUmVmZXJlbmNlPiB3cmFwKENvZGVMb2NhdGlvbiwgTmFtZWRUeXBlJiByZXNv
bHZlZFR5cGUpOwotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAg
VHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlwZUFyZ3VtZW50czsg
fQotICAgIE5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkVHlwZTsgfQotICAgIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9yZXNv
bHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSZXNvbHZlZFR5cGUoTmFtZWRUeXBlJiBy
ZXNvbHZlZFR5cGUpCi0gICAgewotICAgICAgICBtX3Jlc29sdmVkVHlwZSA9ICZyZXNvbHZlZFR5
cGU7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICAv
LyBDdXJyZW50bHksIHdlIG9ubHkgdXNlIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdGhlIG5hbWUgcmVz
b2x2ZXIgcnVucy4KLSAgICAgICAgLy8gUmVseWluZyBvbiBoYXZpbmcgYSByZXNvbHZlZCB0eXBl
IHNpbXBsaWZpZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2
ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxjb25zdCBUeXBlKj46Omhhc2go
JnVuaWZ5Tm9kZSgpKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZVJl
ZmVyZW5jZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5
cGUpOwotICAgICAgICByZXR1cm4gJnVuaWZ5Tm9kZSgpID09ICZvdGhlci51bmlmeU5vZGUoKTsK
LSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT5uYW1l
KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUm
IHVuaWZ5Tm9kZUltcGwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgbV9uYW1lOwotICAgIFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOwotICAg
IE5hbWVkVHlwZSogbV9yZXNvbHZlZFR5cGUgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlUmVmZXJlbmNl
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVHlwZVJlZmVyZW5jZSwgaXNU
eXBlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbm5hbWVkVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTBlNzg0
MjUxMzc0OWE5OGVhZjZiZmNmZGViYzI2NzAzZDQ3N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi11bnNpZ25lZCBVbm5hbWVkVHlwZTo6aGFzaCgpIGNvbnN0Ci17Ci0gICAgc3dp
dGNoIChraW5kKCkpIHsKLSAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6Ci0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2lu
ZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhpcyku
aGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBk
b3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5k
OjpBcnJheToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRoaXMpLmhhc2go
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLX0KLQotYm9vbCBVbm5hbWVkVHlwZTo6b3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlw
ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG90aGVyLmtpbmQoKSAhPSBraW5kKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoa2luZCgpKSB7Ci0gICAgY2FzZSBLaW5k
OjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4o
KnRoaXMpID09IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6
OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpID09
IGRvd25jYXN0PFBvaW50ZXJUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVy
ZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMp
ID09IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6
QXJyYXk6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKSA9PSBkb3du
Y2FzdDxBcnJheVR5cGU+KG90aGVyKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0g
Ly8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzOTgxZTVlMzg3OTQxYzYyODdlNDg3ZjEyODU1NTY0ZDNlMGRkYjhl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIFVubmFtZWRUeXBlIDogcHVibGljIFR5cGUsIHB1YmxpYyBSZWZD
b3VudGVkPFVubmFtZWRUeXBlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVW5uYW1lZFR5cGUpOwotcHVibGljOgotICAgIFVubmFtZWRU
eXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IFR5cGUoa2lu
ZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbm5h
bWVkVHlwZSYpIGNvbnN0OwotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBD
b2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247
IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBUeXBlJiB1bmlmeU5v
ZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRp
b247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShVbm5hbWVkVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBF
KFVubmFtZWRUeXBlLCBpc1VubmFtZWRUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbm5hbWVkVHlwZUhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5OTY3YzBkNzRiYjI2ZjQxOThkMTZmNjJhN2EzYjY3YTRiYTUyZjQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oCisrKyAvZGV2
L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgVW5uYW1lZFR5cGVLZXkgewotcHVibGljOgotICAgIFVu
bmFtZWRUeXBlS2V5KCkgPSBkZWZhdWx0OwotICAgIFVubmFtZWRUeXBlS2V5KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3R5cGUoYml0d2lzZV9jYXN0PEFTVDo6
VW5uYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgVW5uYW1lZFR5cGVLZXkoQVNUOjpVbm5hbWVkVHlwZSYgdHlwZSkKLSAgICAgICAgOiBt
X3R5cGUoJnR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gIW1fdHlwZTsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gYml0d2lzZV9jYXN0PEFTVDo6VW5uYW1lZFR5cGUq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZS0+aGFzaCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVubmFtZWRUeXBlS2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4gKm1fdHlwZSA9PSAqb3RoZXIu
bV90eXBlOyB9Ci0gICAgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUoKSBjb25zdCB7IHJl
dHVybiAqbV90eXBlOyB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7
IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVW5uYW1lZFR5cGVLZXkmIGEsIGNv
bnN0IFVubmFtZWRUeXBlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBUcmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8VW5u
YW1lZFR5cGVLZXk+IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVl
RnVuY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3Qg
VW5uYW1lZFR5cGVLZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAg
fTsKLQotcHJpdmF0ZToKLSAgICBBU1Q6OlVubmFtZWRUeXBlKiBtX3R5cGUgeyBudWxscHRyIH07
Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8V2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5PiA6IFdlYkNvcmU6OldITFNM
OjpVbm5hbWVkVHlwZUtleTo6VHJhaXRzIHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleT4gOiBXZWJDb3JlOjpXSExTTDo6VW5u
YW1lZFR5cGVLZXk6Okhhc2ggeyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YWZiNDE4MjYyZjc4
YzExOThmM2U4ODEzMGM4MDY2MzA0OTE3NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotaW50NjRfdCBVbnNpZ25lZEludGVnZXJMaXRlcmFs
Ojp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Ci17Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5j
ZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcigpKG1fdmFsdWUpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMDE2ZTVjMjI3MjE5NDYzNGM0YTA3NjRmZjdk
NjEzNDYyZTQ0NzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bChDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHZhbHVlKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi0gICAgICAgICwg
bV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsK
LSAgICB9Ci0KLSAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKLQotICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0g
ZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0o
Y29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYpID0gZGVmYXVs
dDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlOyB9Ci0gICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0K
LSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsK
LSAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9uZSgpOwotICAgICAgICBpZiAoYXV0
byogcmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAg
ICByZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnJl
c29sdmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotCi0gICAgaW50NjRfdCB2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIG1fdHlwZTsK
LSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWQyMWZhYTA0ZTQ3ODFhMDIx
MGMzZDQ0YTk3NjU1YjAyNTQzYTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVU
eXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgOiBSZXNvbHZh
YmxlVHlwZShLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1
ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24s
ICJ1aW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0KLWJvb2wgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKLXsKLSAg
ICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+KHR5cGUpOwotICAgIGlmICghaXM8
TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
SW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5pc1NpZ25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRpdmVU
eXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKCkobV92YWx1ZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBl
JiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9w
cmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLVVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjbG9u
ZSgpIGNvbnN0Ci17Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgcmVzdWx0KG1fcHJl
ZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgIGlmIChhdXRvKiB0eXBl
ID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJlc29sdmUoY29uc3RfY2Fz
dDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQubV9wcmVmZXJyZWRUeXBl
ID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE3ZWQzOWY4OGRmNDg1NTZmMGE3ODNiMjFh
MzRiZDQ4NTQyZjcyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi1jbGFzcyBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uLCB1bnNpZ25lZCB2YWx1ZSk7Ci0KLSAgICB+VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0g
ZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29u
c3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYp
ID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJl
ZmVycmVkVHlwZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsK
LSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0Owot
Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRv
IHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4KLSAgICAvLyBDb25zdGFudEV4
cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRz
IC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAgIFJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJl
ZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZB
VUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9UWVBFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLCBpc1Vuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI5MThiNmNkZGJhNDFjOWM2MDUwMWEyZjkwZTM2OTczOTk2ZDhjOWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5o
IgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotLy8gRmluYWwgYmVjYXVzZSB3ZSBtYWRlIHRoZSBkZXN0cnVjdG9yIG5vbi12aXJ0dWFs
LgotcHVibGljOgotICAgIHN0cnVjdCBSYXJlRGF0YSB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgUmFyZURhdGEoUXVhbGlmaWVycyYmIHF1YWxpZmll
cnNBcmd1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljQXJndW1lbnQp
Ci0gICAgICAgICAgICA6IHF1YWxpZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzQXJndW1lbnQpKQot
ICAgICAgICAgICAgLCBzZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljQXJndW1lbnQpKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLSAgICAgICAgUXVhbGlmaWVycyBxdWFsaWZpZXJzOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IHNlbWFudGljOwotICAgIH07Ci0KLSAgICBWYXJpYWJs
ZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIFF1YWxpZmllcnMmJiBxdWFs
aWZpZXJzLCBSZWZQdHI8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5p
cXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
JiYgaW5pdGlhbGl6ZXIpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uKQot
ICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICAgICAsIG1faW5pdGlhbGl6ZXIo
V1RGTW92ZShpbml0aWFsaXplcikpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0g
ICAgewotICAgICAgICBpZiAoc2VtYW50aWMgfHwgIXF1YWxpZmllcnMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KFdURk1vdmUocXVhbGlm
aWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKLSAgICB9Ci0KLSAgICB+VmFyaWFibGVEZWNsYXJh
dGlvbigpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oY29uc3QgVmFyaWFi
bGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oVmFyaWFi
bGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVy
biBtX25hbWU7IH0KLQotICAgIC8vIFdlIHVzZSB0aGlzIGZvciBSZWFkTW9kaWZ5V3JpdGUgZXhw
cmVzc2lvbnMsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHR5cGUgb2YgdGhlaXIKLSAgICAvLyBp
bnRlcm5hbCB2YXJpYWJsZXMgdW50aWwgdGhlIGNoZWNrZXIgcnVucy4gQWxsIG90aGVyIHZhcmlh
YmxlcyBzaG91bGQgc3RhcnQgbGlmZSBvdXQKLSAgICAvLyB3aXRoIGEgdHlwZS4KLSAgICB2b2lk
IHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFt
X3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5cGUpOwotICAgIH0KLSAgICBjb25z
dCBSZWZQdHI8VW5uYW1lZFR5cGU+JiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0g
ICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVybiBtX3R5cGUgPyAmKm1fdHlwZSA6IG51bGxw
dHI7IH0KLSAgICBFeHByZXNzaW9uKiBpbml0aWFsaXplcigpIHsgcmV0dXJuIG1faW5pdGlhbGl6
ZXIuZ2V0KCk7IH0KLSAgICBib29sIGlzQW5vbnltb3VzKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
LmlzTnVsbCgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IHRha2VJbml0aWFs
aXplcigpIHsgcmV0dXJuIFdURk1vdmUobV9pbml0aWFsaXplcik7IH0KLSAgICB2b2lkIHNldElu
aXRpYWxpemVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBleHByZXNzaW9uKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFpbml0aWFsaXplcigpKTsKLSAgICAgICAgQVNTRVJUKGV4cHJlc3Np
b24pOwotICAgICAgICBtX2luaXRpYWxpemVyID0gV1RGTW92ZShleHByZXNzaW9uKTsKLSAgICB9
Ci0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxv
Y2F0aW9uOyB9Ci0KLSAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3JhcmVEYXRh
ID8gbV9yYXJlRGF0YS0+c2VtYW50aWMuZ2V0KCkgOiBudWxscHRyOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4g
bV90eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2luaXRpYWxpemVyOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YSB7IG51bGxwdHIgfTsKLSAg
ICBTdHJpbmcgbV9uYW1lOwotfTsKLQotdXNpbmcgVmFyaWFibGVEZWNsYXJhdGlvbnMgPSBWZWN0
b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PjsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM3MzI4YzRiMmNmZDQyZTkzMzFhYTg1NmY5NGE2ZjgyNDRlZjVl
OTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlRGVjbGFyYXRpb25zJiYgdmFyaWFi
bGVEZWNsYXJhdGlvbnMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpWYXJp
YWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgLCBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zKFdURk1v
dmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0gZGVs
ZXRlOwotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8VmFyaWFi
bGVEZWNsYXJhdGlvbj4+JiB2YXJpYWJsZURlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fdmFyaWFi
bGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBt
X3ZhcmlhYmxlRGVjbGFyYXRpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQp
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50LCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVu
Y2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNiZDA2YWNhZTFmZWVlYTcwNTE3
YjhkZjhjYjg2N2RkOTM2Yzk2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xW
YXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNl
KQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+
VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJpYWJsZVJlZmVyZW5jZShj
b25zdCBWYXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOwotICAgIFZhcmlhYmxlUmVmZXJlbmNl
KFZhcmlhYmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBWYXJpYWJsZVJl
ZmVyZW5jZSB3cmFwKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi0g
ICAgewotICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSByZXN1bHQodmFyaWFibGVEZWNsYXJhdGlv
bi5jb2RlTG9jYXRpb24oKSk7Ci0gICAgICAgIHJlc3VsdC5tX3ZhcmlhYmxlID0gJnZhcmlhYmxl
RGVjbGFyYXRpb247Ci0gICAgICAgIHJlc3VsdC5tX25hbWUgPSB2YXJpYWJsZURlY2xhcmF0aW9u
Lm5hbWUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBTdHJpbmcmIG5h
bWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlh
YmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsgfQotCi0gICAgdm9pZCBzZXRWYXJpYWJsZShWYXJp
YWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgbV92
YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBW
YXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCi0gICAgewotICAgIH0KLQot
ICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbiogbV92YXJpYWJsZSB7
IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5F
X0RFRkFVTFRfREVMRVRFKFZhcmlhYmxlUmVmZXJlbmNlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oVmFyaWFibGVSZWZlcmVuY2UsIGlzVmFyaWFibGVSZWZlcmVu
Y2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTk2NDliMTU0ZjMwMTljYTg5N2VhYmNi
YjQxYmQ4ZTY0ZGJkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVM
b29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBX
aGlsZUxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4m
JiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6V2hpbGVMb29wKQot
ICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgICAgICwg
bV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgewotICAgIH0KLQotICAgIH5XaGlsZUxvb3AoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBXaGlsZUxvb3AoY29uc3QgV2hpbGVMb29wJikgPSBkZWxldGU7Ci0g
ICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBj
b25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KLSAgICBTdGF0ZW1lbnQmIGJv
ZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4gbV9jb25kaXRpb25hbDsKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShXaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFdo
aWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxMTNhMDYxOGJhMWMyNzEzODhlZjFkNDRiMGFiMGU1
NjE2OTgzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRT
Y2FmZm9sZGluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRTY2FmZm9s
ZGluZy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xC
dWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0YWdlSW5P
dXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMgU3RyaW5nIGF0dHJpYnV0ZUZvclNl
bWFudGljKEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMpCi17Ci0gICAgc3dp
dGNoIChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSkgewotICAgIGNhc2UgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiAiW1tpbnN0
YW5jZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiW1t2ZXJ0ZXhfaWRdXSJfc3RyOwotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgcmV0dXJu
ICJbW3BvaW50X3NpemVdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gIltbcG9zaXRpb25dXSJfc3RyOwot
ICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgot
ICAgICAgICByZXR1cm4gIltbZnJvbnRfZmFjaW5nXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVp
bHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJb
W3NhbXBsZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJbW3NhbXBsZV9tYXNrXV0iX3N0
cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0g
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJbW2NvbG9yKCIsICpidWlsdEluU2VtYW50aWMudGFy
Z2V0SW5kZXgoKSwgIildXSIpOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gIltbZGVwdGgoYW55KV1dIl9zdHI7Ci0gICAg
Y2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAg
IHJldHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJbW3Ro
cmVhZF9wb3NpdGlvbl9pbl9ncmlkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gIltbdGhyZWFkZ3JvdXBf
cG9zaXRpb25faW5fZ3JpZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuICJbW3RocmVhZF9pbmRleF9p
bl90aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGJ1aWx0
SW5TZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuICJbW3RocmVhZF9wb3NpdGlvbl9pbl90
aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgfQotfQotCi1zdGF0aWMgU3RyaW5nIGF0dHJpYnV0ZUZv
clNlbWFudGljKEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgIHJl
dHVybiBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4o
c2VtYW50aWMpKTsKLSAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6
OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCJb
W3VzZXIodXNlciIsIHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpLCAiKV1dIik7Ci19Ci0KLUVu
dHJ5UG9pbnRTY2FmZm9sZGluZzo6RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5
cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFz
aE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6
OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpCi0gICAgOiBtX2Z1bmN0aW9uRGVmaW5pdGlvbihmdW5jdGlvbkRlZmluaXRpb24pCi0gICAg
LCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAsIG1fdHlwZU5hbWVyKHR5cGVOYW1lcikK
LSAgICAsIG1fZW50cnlQb2ludEl0ZW1zKGVudHJ5UG9pbnRJdGVtcykKLSAgICAsIG1fcmVzb3Vy
Y2VNYXAocmVzb3VyY2VNYXApCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi0gICAgLCBtX2dlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpCi17Ci0gICAgbV9u
YW1lZEJpbmRHcm91cHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2xheW91dC5zaXplKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgTmFtZWRCaW5kR3JvdXAgbmFtZWRCaW5kR3JvdXA7Ci0gICAgICAgIG5hbWVkQmluZEdyb3Vw
LnN0cnVjdE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpOwotICAgICAg
ICBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUgPSBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwotICAgICAgICBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4ID0gbV9sYXlv
dXRbaV0ubmFtZTsgLy8gY29udmVydExheW91dCgpIGluIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW0gbWFrZXMgc3VyZSB0aGVzZSBkb24ndCBjb2xsaWRlLgotICAgICAgICBuYW1lZEJpbmRHcm91
cC5uYW1lZEJpbmRpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9sYXlvdXRbaV0uYmluZGlu
Z3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtpXS5i
aW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgTmFtZWRCaW5kaW5nIG5hbWVkQmlu
ZGluZzsKLSAgICAgICAgICAgIG5hbWVkQmluZGluZy5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVy
LmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgICAgICBuYW1lZEJp
bmRpbmcuaW5kZXggPSBtX2xheW91dFtpXS5iaW5kaW5nc1tqXS5pbnRlcm5hbE5hbWU7Ci0gICAg
ICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaWZvcm1CdWZmZXJCaW5k
aW5nJiB1bmlmb3JtQnVmZmVyQmluZGluZykgewotICAgICAgICAgICAgICAgIExlbmd0aEluZm9y
bWF0aW9uIGxlbmd0aEluZm9ybWF0aW9uIHsgbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0
dXJlRWxlbWVudE5hbWUoKSwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgdW5pZm9ybUJ1
ZmZlckJpbmRpbmcubGVuZ3RoTmFtZSB9OwotICAgICAgICAgICAgICAgIG5hbWVkQmluZGluZy5s
ZW5ndGhJbmZvcm1hdGlvbiA9IGxlbmd0aEluZm9ybWF0aW9uOwotICAgICAgICAgICAgfSwgWyZd
KFNhbXBsZXJCaW5kaW5nJikgewotICAgICAgICAgICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nJikg
ewotICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5nJiBzdG9yYWdlQnVmZmVy
QmluZGluZykgewotICAgICAgICAgICAgICAgIExlbmd0aEluZm9ybWF0aW9uIGxlbmd0aEluZm9y
bWF0aW9uIHsgbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKSwg
bV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgc3RvcmFnZUJ1ZmZlckJpbmRpbmcubGVuZ3Ro
TmFtZSB9OwotICAgICAgICAgICAgICAgIG5hbWVkQmluZGluZy5sZW5ndGhJbmZvcm1hdGlvbiA9
IGxlbmd0aEluZm9ybWF0aW9uOwotICAgICAgICAgICAgfSksIG1fbGF5b3V0W2ldLmJpbmRpbmdz
W2pdLmJpbmRpbmcpOwotICAgICAgICAgICAgbmFtZWRCaW5kR3JvdXAubmFtZWRCaW5kaW5ncy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZEJpbmRpbmcpKTsKLSAgICAgICAgfQotICAgICAg
ICBtX25hbWVkQmluZEdyb3Vwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZEJpbmRHcm91
cCkpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRl
bXMuaW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpXS5z
ZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgTmFtZWRCdWlsdEluIG5h
bWVkQnVpbHRJbjsKLSAgICAgICAgbmFtZWRCdWlsdEluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMg
PSBpOwotICAgICAgICBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lID0gbV9nZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbV9uYW1lZEJ1aWx0SW5zLmFwcGVuZChXVEZNb3ZlKG5h
bWVkQnVpbHRJbikpOwotICAgIH0KLQotICAgIG1fcGFyYW1ldGVyVmFyaWFibGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcGFyYW1ldGVyVmFyaWFibGVzLnVuY2hlY2tl
ZEFwcGVuZChtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKTsKLX0KLQotdm9pZCBFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCwgU2hhZGVyU3RhZ2Ugc2hhZGVyU3Rh
Z2UpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkg
ewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJzdHJ1Y3QgIiwgbV9uYW1l
ZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICAgICAgewotICAgICAgICAg
ICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRlbXM7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKTsgKytqKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgYmluZGluZyA9IG1fbGF5b3V0W2ldLmJpbmRpbmdzW2pdOwot
ICAgICAgICAgICAgICAgIGlmICghYmluZGluZy52aXNpYmlsaXR5LmNvbnRhaW5zKHNoYWRlclN0
YWdlKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBh
dXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9uYW1lZEJpbmRHcm91
cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5pbmRleDsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBs
ZW5ndGhJbmZvcm1hdGlvbiA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0u
bGVuZ3RoSW5mb3JtYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgsIG1ha2VTdHJpbmcoInVp
bnQyICIsIGxlbmd0aEluZm9ybWF0aW9uLT5lbGVtZW50TmFtZSwgIiBbW2lkKCIsIGxlbmd0aElu
Zm9ybWF0aW9uLT5pbmRleCwgIildXTsiKSkpOwotCi0gICAgICAgICAgICAgICAgYXV0byBpdGVy
YXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwotICAg
ICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3Jlc291cmNlTWFwLmVuZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGF1dG8mIHR5cGUgPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRl
cmF0b3ItPnZhbHVlXS51bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5
cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5cGUpKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlw
ZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odHlwZSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gYWRkcmVzc1NwYWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2Uo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoYWRkcmVzc1NwYWNlLCAiICIsIG1hbmdsZWRUeXBlTmFt
ZSwgIiogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih0eXBlKSAmJiBpczxB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUp
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBl
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5n
KG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1d
OyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYmluZGluZyBkb2Vzbid0IGFwcGVhciBpbiB0aGUg
c2hhZGVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgd2UgbXVzdCBz
dGlsbCBlbWl0IGEgcGxhY2Vob2xkZXIsIHNvIHN1Y2Nlc3NpdmUgaXRlbXMgaW4gdGhlIGFyZ3Vt
ZW50IGJ1ZmZlciBzdHJ1Y3QgaGF2ZSB0aGUgY29ycmVjdCBvZmZzZXQuCi0gICAgICAgICAgICAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJpbmRpbmcgZG9lc24ndCBhcHBlYXIgaW4gdGhlIHNoYWRl
ciBzb3VyY2UsIHdlIGRvbid0IGtub3cgd2hpY2ggZXhhY3QgdHlwZSB0aGUgYmluZCBwb2ludCBz
aG91bGQgaGF2ZS4KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBtdXN0IHN5
bnRoZXNpemUgYSB0eXBlIG91dCBvZiB0aGluIGFpci4KLSAgICAgICAgICAgICAgICAgICAgV1RG
Ojp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVmZmVyQmluZGluZykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlu
ZGV4LCBtYWtlU3RyaW5nKCJjb25zdGFudCB2b2lkKiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIs
IGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0sIFsmXShTYW1wbGVyQmlu
ZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJzYW1wbGVyICIsIGVsZW1lbnROYW1lLCAiIFtb
aWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSwgWyZdKFRleHR1
cmVCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTM4NCBXZSBkb24ndCBrbm93IHdoaWNo
IHRleHR1cmUgdHlwZSB0aGUgYmluZGluZyByZXByZXNlbnRzLiBUaGlzIGlzIG5vIGdvb2QgdmVy
eSBiYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoInRleHR1cmUyZDxmbG9hdD4gIiwgZWxlbWVudE5h
bWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9LCBb
Jl0oU3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygiZGV2aWNlIHZv
aWQqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSksIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc3RkOjpzb3J0KHN0cnVjdEl0ZW1zLmJlZ2luKCksIHN0
cnVjdEl0ZW1zLmVuZCgpLCBbXShjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQsIFN0cmluZz4mIGxl
ZnQsIGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPiYgcmlnaHQpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbGVmdC5maXJzdCA8IHJpZ2h0LmZpcnN0OwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVtcykK
LSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIHN0cnVjdEl0ZW0u
c2Vjb25kLCAnXG4nKTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
bmRlbnQsICJ9O1xuXG4iKTsKLSAgICB9Ci19Ci0KLWJvb2wgRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5j
bHVkZVByZWNlZGluZ0NvbW1hIGluY2x1ZGVQcmVjZWRpbmdDb21tYSkKLXsKLSAgICBpZiAoIW1f
bGF5b3V0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGluY2x1ZGVQ
cmVjZWRpbmdDb21tYSA9PSBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6OlllcykKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
bGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIGF1dG8mIG5hbWVkQmluZEdyb3VwID0gbV9u
YW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZXZpY2Ug
IiwgbmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRCaW5kR3JvdXAudmFyaWFi
bGVOYW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXgs
ICIpXV0iKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmdWaWV3
IGludGVybmFsVHlwZUZvclNlbWFudGljKGNvbnN0IEFTVDo6QnVpbHRJblNlbWFudGljJiBidWls
dEluU2VtYW50aWMpCi17Ci0gICAgc3dpdGNoIChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSkg
ewotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6
Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplOgotICAgICAgICByZXR1cm4gImZs
b2F0IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlv
bjoKLSAgICAgICAgcmV0dXJuICJmbG9hdDQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50
aWM6OlZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gImJvb2wiOwotICAg
IGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAg
ICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4g
eyB9OwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOgot
ICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAg
ICByZXR1cm4gInVpbnQzIjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJs
ZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAgICBjYXNlIEFTVDo6QnVp
bHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gInVp
bnQiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChidWlsdEluU2VtYW50aWMudmFyaWFi
bGUoKSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7
Ci0gICAgICAgIHJldHVybiAidWludDMiOwotICAgIH0KLX0KLQotYm9vbCBFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmVtaXRCdWlsdEluc1NpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgaW5jbHVkZVByZWNlZGluZ0NvbW1hKQotewotICAg
IGlmICghbV9uYW1lZEJ1aWx0SW5zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGluY2x1ZGVQcmVjZWRpbmdDb21tYSA9PSBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olll
cykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbmFtZWRCdWlsdElucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBhdXRv
JiBuYW1lZEJ1aWx0SW4gPSBtX25hbWVkQnVpbHRJbnNbaV07Ci0gICAgICAgIGF1dG8mIGl0ZW0g
PSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWlsdEluLmluZGV4SW5FbnRyeVBvaW50
SXRlbXNdOwotICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1
aWx0SW5TZW1hbnRpYz4oKml0ZW0uc2VtYW50aWMpOwotICAgICAgICBhdXRvIGludGVybmFsVHlw
ZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIGlm
ICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW50ZXJuYWxUeXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCppdGVtLnVubmFtZWRUeXBl
KSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJywgbmFtZWRCdWlsdEluLnZhcmlh
YmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBWZWN0b3I8
U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1NFUlQoIXBhdGguaXNFbXB0eSgpKTsKLSAgICBib29s
IGZvdW5kID0gZmFsc2U7Ci0gICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1Y3R1cmVE
ZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rp
b25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9m
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT5uYW1lKCkgPT0gcGF0aFswXSkgewot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0p
OwotICAgICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbV9mdW5jdGlvbkRlZmluaXRpb24ucGFy
YW1ldGVycygpW2ldLT50eXBlKCktPnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGlzPEFT
VDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgbmFtZWRU
eXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NF
UlQoZm91bmQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcGF0aC5zaXplKCk7ICsraSkg
ewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGF1dG8qIG5l
eHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKHBhdGhbaV0pOwotICAgICAgICBBU1NFUlQo
bmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7Ci0gICAgICAgIHN0cnVjdHVyZURl
ZmluaXRpb24gPSBudWxscHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0LT50eXBl
KCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2Rl
KSkgewotICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5
cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSAm
ZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRPdXRw
dXRQYXRoKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFZlY3RvcjxTdHJpbmc+JiBwYXRo
KQotewotICAgIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiogc3RydWN0dXJlRGVmaW5pdGlvbiA9
IG51bGxwdHI7Ci0gICAgYXV0byYgdW5pZnlOb2RlID0gbV9mdW5jdGlvbkRlZmluaXRpb24udHlw
ZSgpLnVuaWZ5Tm9kZSgpOwotICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSAmZG93bmNhc3Q8QVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2Rl
KSk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBwYXRoKSB7Ci0gICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmlu
aXRpb24tPmZpbmQoY29tcG9uZW50KTsKLSAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0
dXJlRWxlbWVudCgqbmV4dCkpOwotICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0
cjsKLSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwot
ICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgICAg
IGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwot
ICAgICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkK
LSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0
SW5zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkK
LXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50
LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKVtpXS0+dHlwZSgpKSwgJyAnLCBtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSwgIjtc
biIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkg
ewotICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLnZhcmlh
YmxlTmFtZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtpXS5iaW5k
aW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3Vy
Y2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwotICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yID09IG1fcmVzb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBpZiAobV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5s
ZW5ndGhJbmZvcm1hdGlvbikgewotICAgICAgICAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS5wYXRoOwotICAgICAgICAgICAgICAg
IGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pd
LmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoRWxlbWVudE5hbWUgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uLT5l
bGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGxlbmd0aFRlbXBvcmFyeU5hbWUgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uLT50
ZW1wb3JhcnlOYW1lOwotCi0gICAgICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbV9l
bnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1lZFR5cGU7Ci0gICAg
ICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVu
dFR5cGUoKSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZW50LCAic2l6ZV90ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
PSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueTtcbiIsCi0gICAg
ICAgICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQs
IGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIHwgIiwg
dmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLng7XG4iLAotICAgICAgICAg
ICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1w
b3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBlTmFtZSwgIik7XG4iLAotICAgICAg
ICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA+IDB4
RkZGRkZGRkYpXG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgIiwgbGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA9IDB4RkZGRkZGRkY7XG4iCi0gICAgICAgICAgICAgICAgKTsKLQot
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAgICAgICAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICIgPSB7
ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIpIH07XG4iCi0gICAgICAgICAgICAgICAgKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50
cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7Ci0gICAgICAgICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nb
al0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAgICAgICAgICBlbWl0TWFuZ2xlZElucHV0
UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkQnVp
bHRJbiA6IG1fbmFtZWRCdWlsdElucykgewotICAgICAgICBhdXRvJiBpdGVtID0gbV9lbnRyeVBv
aW50SXRlbXMuaW5wdXRzW25hbWVkQnVpbHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXTsKLSAg
ICAgICAgYXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKLSAgICAgICAgYXV0byYgdmFyaWFibGVOYW1l
ID0gbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKLSAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwot
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAgICAgIGVtaXRNYW5n
bGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4i
KTsKLSAgICB9Ci19Ci0KLVZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRp
b24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBv
aW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVz
b3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5h
bWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8VmVydGV4QXR0cmlidXRl
Kiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAgOiBFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGVudHJ5
UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUpKQotICAgICwgbV9tYXRjaGVkVmVydGV4QXR0cmlidXRlcyhtYXRjaGVkVmVydGV4
QXR0cmlidXRlcykKLSAgICAsIG1fc3RhZ2VJblN0cnVjdE5hbWUodHlwZU5hbWVyLmdlbmVyYXRl
TmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3JldHVyblN0cnVjdE5hbWUodHlwZU5hbWVyLmdlbmVy
YXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lKG1fZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0gICAgbV9uYW1lZFN0YWdlSW5zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9tYXRjaGVkVmVydGV4QXR0cmlidXRlcy5zaXplKCkpOwotICAgIGZvciAo
YXV0byYga2V5VmFsdWVQYWlyIDogbV9tYXRjaGVkVmVydGV4QXR0cmlidXRlcykgewotICAgICAg
ICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwotICAgICAgICBuYW1lZFN0YWdlSW4uaW5kZXhJ
bkVudHJ5UG9pbnRJdGVtcyA9IGtleVZhbHVlUGFpci52YWx1ZTsKLSAgICAgICAgbmFtZWRTdGFn
ZUluLmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVu
dE5hbWUoKTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4ID0ga2V5VmFsdWVQ
YWlyLmtleS0+bWV0YWxMb2NhdGlvbjsKLSAgICAgICAgbV9uYW1lZFN0YWdlSW5zLnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAgIH0KLQotICAgIG1fbmFtZWRPdXRw
dXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXpl
KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRwdXQgbmFtZWRPdXRwdXQ7Ci0gICAg
ICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3Ry
dWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGU7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPigq
b3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBpbnRlcm5hbFR5cGUgPSBpbnRlcm5h
bFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0
ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gaW50ZXJuYWxUeXBlLnRvU3Ry
aW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91dHB1dEl0ZW0udW5uYW1l
ZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShu
YW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRh
dGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAic3Ry
dWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7Ci0gICAgewotICAgICAgICBJbmRl
bnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgbmFtZWRTdGFn
ZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5w
dXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7Ci0g
ICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwot
ICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJ
bmRleDsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbWFuZ2xlZFR5
cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4
LCAiKV1dO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgIGluZGVudCwgIn07XG5cbiIsCi0gICAgICAgIGluZGVudCwgInN0cnVjdCAiLCBt
X3JldHVyblN0cnVjdE5hbWUsICIge1xuIgotICAgICk7Ci0gICAgewotICAgICAgICBJbmRlbnRh
dGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0
byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgICAg
ICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBl
TmFtZTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2Vt
YW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0
dHJpYnV0ZSwgIjtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgIn07XG5cbiIpOwotICAgIAotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVz
KHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OlZlcnRleCk7Ci19Ci0KLXZvaWQg
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRh
dGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAidmVy
dGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFn
ZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5d
XSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJl
Y2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxk
ZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKVxuIik7Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5w
YWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkK
LXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhzdHJpbmdCdWlsZGVy
LCBpbmRlbnQpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJ
bnMpIHsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1l
ZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKLSAgICAgICAgYXV0byYgZWxl
bWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7Ci0gICAgICAgIAotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0
aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9
ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFi
bGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRp
b248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV9yZXR1
cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgIGlmICht
X2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVt
cy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0g
bV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwg
aW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVt
ZW50TmFtZTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRz
W2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJ
dGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxU
eXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGVtaXRNYW5nbGVkT3V0
cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIik7XG4iKTsKLSAgICB9Ci19Ci0KLUZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpG
cmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVu
Y3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVO
YW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyos
IHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5n
bGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lLCBIYXNoTWFwPEF0
dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiYpCi0gICAgOiBFbnRyeVBvaW50U2NhZmZvbGRp
bmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGVudHJ5UG9pbnRJ
dGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpKQotICAgICwgbV9zdGFnZUluU3RydWN0TmFtZSh0eXBlTmFtZXIuZ2VuZXJhdGVOZXh0VHlw
ZU5hbWUoKSkKLSAgICAsIG1fcmV0dXJuU3RydWN0TmFtZSh0eXBlTmFtZXIuZ2VuZXJhdGVOZXh0
VHlwZU5hbWUoKSkKLSAgICAsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUobV9nZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2lu
dEl0ZW1zLmlucHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBpbnB1dEl0ZW0gPSBt
X2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV07Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmlucHV0SXRlbS5zZW1hbnRpYykpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgc3RhZ2VJbk91dFNlbWFudGljID0g
V1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCppbnB1dEl0ZW0uc2VtYW50aWMpOwot
ICAgICAgICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwotICAgICAgICBuYW1lZFN0YWdlSW4u
aW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGk7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5lbGVtZW50
TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0g
ICAgICAgIG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleCA9IHN0YWdlSW5PdXRTZW1hbnRpYy5p
bmRleCgpOwotICAgICAgICBtX25hbWVkU3RhZ2VJbnMuYXBwZW5kKFdURk1vdmUobmFtZWRTdGFn
ZUluKSk7Ci0gICAgfQotCi0gICAgbV9uYW1lZE91dHB1dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAg
ICBOYW1lZE91dHB1dCBuYW1lZE91dHB1dDsKLSAgICAgICAgbmFtZWRPdXRwdXQuZWxlbWVudE5h
bWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAg
ICAgICBTdHJpbmdWaWV3IGludGVybmFsVHlwZTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSkKLSAg
ICAgICAgICAgIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKFdURjo6Z2V0
PEFTVDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRpYykpOwotICAgICAgICBp
ZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVy
bmFsVHlwZU5hbWUgPSBpbnRlcm5hbFR5cGUudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZSgqb3V0cHV0SXRlbS51bm5hbWVkVHlwZSk7Ci0gICAgICAgIG1fbmFtZWRP
dXRwdXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkT3V0cHV0KSk7Ci0gICAgfQotfQot
Ci12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3Ry
aW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3RO
YW1lLCAiIHtcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRl
bnQpOwotICAgICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykg
ewotICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJ
bkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXV0byBlbGVtZW50
TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmli
dXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFt
ZSwgIiBbW3VzZXIodXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgIGluZGVudCwgIn07XG5c
biIsCi0gICAgICAgIGluZGVudCwgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xu
IgotICAgICk7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQ
b2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1l
ID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgICAgIGF1dG8g
ZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAg
IGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50
aWMpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBpbnRlcm5hbFR5
cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn07XG5cbiIpOwot
Ci0gICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRlciwgaW5kZW50LCBTaGFk
ZXJTdGFnZTo6RnJhZ21lbnQpOwotfQotCi12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xk
aW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRG
dW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAiZnJhZ21lbnQgIiwgbV9yZXR1cm5TdHJ1Y3RO
YW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1f
c3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7Ci0gICAgZW1pdFJlc291cmNl
U2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAg
ICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0Nv
bW1hOjpZZXMpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBG
cmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jl
c291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLQotICAgIGZv
ciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgIGF1dG8m
IHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRy
eVBvaW50SXRlbXNdLnBhdGg7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFn
ZUluLmVsZW1lbnROYW1lOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7
Ci0gICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgIH0KLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFt
ZSBvdXRwdXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRW
YXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5z
aXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkg
ewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnRO
YW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxl
TmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Vu
dHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1l
bnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgIGF1dG8mIGlu
dGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwotICAg
ICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwgJy4n
LCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJs
ZU5hbWUpOwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0
aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci0gICAgfQotfQotCi1D
b21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjpDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3Mm
IGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5
UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91
dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpCi0gICAgOiBFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25E
ZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGVudHJ5UG9pbnRJdGVtcywgcmVzb3Vy
Y2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKQotewotfQot
Ci12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAg
ZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRlciwgaW5kZW50LCBTaGFkZXJTdGFn
ZTo6Q29tcHV0ZSk7Ci19Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25O
YW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGluZGVudCwgImtlcm5lbCB2b2lkICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsK
LSAgICBib29sIGFkZGVkVG9TaWduYXR1cmUgPSBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3RyaW5n
QnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2ln
bmF0dXJlKHN0cmluZ0J1aWxkZXIsIGFkZGVkVG9TaWduYXR1cmUgPyBJbmNsdWRlUHJlY2VkaW5n
Q29tbWE6OlllcyA6IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6Tm8pOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+
IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhzdHJp
bmdCdWlsZGVyLCBpbmRlbnQpOwotfQotCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBNYW5nbGVk
VmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYjU2Mjg4Y2JlYTI1NzFhZjFkMDlkMTUxMTIzMTU4MGJkNWViZTVj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xN
YW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1zdHJ1Y3QgRW50cnlQb2lu
dEl0ZW1zOwotY2xhc3MgSW50cmluc2ljczsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3Mg
VHlwZU5hbWVyOwotCi1jbGFzcyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHZpcnR1YWwgfkVudHJ5UG9pbnRTY2FmZm9s
ZGluZygpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3Ry
aW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRT
aWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9u
PDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIElu
ZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxk
ZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFy
aWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotCi0gICAgVmVjdG9yPE1hbmdsZWRWYXJp
YWJsZU5hbWU+JiBwYXJhbWV0ZXJWYXJpYWJsZXMoKSB7IHJldHVybiBtX3BhcmFtZXRlclZhcmlh
YmxlczsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVt
cyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6
OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpOwotCi0gICAgdm9pZCBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwg
SW5kZW50YXRpb248ND4sIFNoYWRlclN0YWdlKTsKLQotICAgIGVudW0gY2xhc3MgSW5jbHVkZVBy
ZWNlZGluZ0NvbW1hIHsKLSAgICAgICAgWWVzLAotICAgICAgICBObwotICAgIH07Ci0gICAgYm9v
bCBlbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIEluY2x1ZGVQcmVjZWRpbmdD
b21tYSk7Ci0gICAgYm9vbCBlbWl0QnVpbHRJbnNTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIElu
Y2x1ZGVQcmVjZWRpbmdDb21tYSk7Ci0KLSAgICB2b2lkIGVtaXRNYW5nbGVkSW5wdXRQYXRoKFN0
cmluZ0J1aWxkZXImLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCk7Ci0gICAgdm9pZCBlbWl0TWFuZ2xl
ZE91dHB1dFBhdGgoU3RyaW5nQnVpbGRlciYsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKTsKLSAgICB2
b2lkIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKFN0cmluZ0J1aWxkZXImLCBJ
bmRlbnRhdGlvbjw0Pik7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgbV9mdW5jdGlv
bkRlZmluaXRpb247Ci0gICAgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotICAgIFR5cGVOYW1l
ciYgbV90eXBlTmFtZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1zJiBtX2VudHJ5UG9pbnRJdGVtczsK
LSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiBtX3Jlc291cmNlTWFwOwotICAgIExheW91
dCYgbV9sYXlvdXQ7Ci0gICAgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+IG1f
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lOwotCi0gICAgc3RydWN0IExlbmd0aEluZm9ybWF0aW9u
IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAg
ICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHRlbXBvcmFyeU5hbWU7Ci0gICAgICAgIHVuc2lnbmVk
IGluZGV4OwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmluZGluZyB7Ci0gICAgICAgIE1hbmds
ZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgdW5zaWduZWQgaW5k
ZXg7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoSW5mb3JtYXRpb24+IGxlbmd0aEluZm9y
bWF0aW9uOwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmluZEdyb3VwIHsKLSAgICAgICAgTWFu
Z2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7Ci0gICAgICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFy
aWFibGVOYW1lOwotICAgICAgICBWZWN0b3I8TmFtZWRCaW5kaW5nPiBuYW1lZEJpbmRpbmdzOwot
ICAgICAgICB1bnNpZ25lZCBhcmd1bWVudEJ1ZmZlckluZGV4OwotICAgIH07Ci0gICAgVmVjdG9y
PE5hbWVkQmluZEdyb3VwPiBtX25hbWVkQmluZEdyb3VwczsgLy8gUGFyYWxsZWwgdG8gbV9sYXlv
dXQKLQotICAgIHN0cnVjdCBOYW1lZEJ1aWx0SW4gewotICAgICAgICBzaXplX3QgaW5kZXhJbkVu
dHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB2YXJpYWJsZU5hbWU7
Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRCdWlsdEluPiBtX25hbWVkQnVpbHRJbnM7Ci0KLSAg
ICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV9wYXJhbWV0ZXJWYXJpYWJsZXM7Ci19Owot
Ci1jbGFzcyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmluYWwgOiBwdWJsaWMgRW50cnlQ
b2ludFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5hbWVyJiwgRW50
cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExh
eW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+JiBtYXRjaGVk
VmVydGV4QXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB+VmVydGV4RW50cnlQb2ludFNjYWZmb2xk
aW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0
cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0U2ln
bmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0
Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRh
dGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFu
Z2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFt
ZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotCi0gICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1
dGUqLCBzaXplX3Q+JiBtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIE1hbmdsZWRUeXBl
TmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRUeXBlTmFtZSBtX3JldHVyblN0
cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1l
OwotCi0gICAgc3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAgICAgIHNpemVfdCBpbmRleEluRW50
cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVu
dE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4OwotICAgIH07Ci0gICAgVmVj
dG9yPE5hbWVkU3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwotCi0gICAgc3RydWN0IE5hbWVkT3V0
cHV0IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwot
ICAgICAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRlcm5hbFR5cGVOYW1lOwotICAgIH07
Ci0gICAgVmVjdG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0cHV0czsKLX07Ci0KLWNsYXNzIEZy
YWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nIGZpbmFsIDogcHVibGljIEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5hbWVyJiwgRW50cnlQb2lu
dEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYs
IHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4mIG1hdGNoZWRD
b2xvckF0dGFjaG1lbnRzKTsKLSAgICB2aXJ0dWFsIH5GcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9s
ZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhT
dHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFNp
Z25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248
ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50
YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1h
bmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5h
bWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLQotICAgIE1hbmdsZWRUeXBlTmFtZSBtX3N0
YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRUeXBlTmFtZSBtX3JldHVyblN0cnVjdE5hbWU7
Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lOwotCi0gICAg
c3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAgICAgIHNpemVfdCBpbmRleEluRW50cnlQb2ludEl0
ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7Ci0g
ICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4OwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVk
U3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwotCi0gICAgc3RydWN0IE5hbWVkT3V0cHV0IHsKLSAg
ICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICBN
YW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRlcm5hbFR5cGVOYW1lOwotICAgIH07Ci0gICAgVmVj
dG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0cHV0czsKLX07Ci0KLWNsYXNzIENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmcgZmluYWwgOiBwdWJsaWMgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsK
LXB1YmxpYzoKLSAgICBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhh
c2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0
aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpOwot
ICAgIHZpcnR1YWwgfkNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVu
dGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2
b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4
aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0Pikg
b3ZlcnJpZGU7Ci19OwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzJiNDU5MGE1NWZjMzE3YjI2MDIzMWRlMzhiNDIwZmZhNjk3ZGEzMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25Xcml0ZXIuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAi
V0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIgotI2lu
Y2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25X
cml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVO
YW1lci5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGlj
IHZvaWQgZGVjbGFyZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgVHlwZU5hbWVyJiB0eXBl
TmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9u
TmFtZT4mIGZ1bmN0aW9uTWFwcGluZykKLXsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5l
bnRyeVBvaW50VHlwZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0g
ZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIEFTU0VSVChp
dGVyYXRvciAhPSBmdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBl
KCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpKTsKLSAgICB9Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLX0KLQotc3RydWN0IFZhcmlhYmxlIHsKLSAg
ICBNYW5nbGVkVmFyaWFibGVOYW1lIG5hbWU7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIHR5cGU7Ci19
OwotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci0g
ICAgY2xhc3MgSG9pc3RlZFZhcmlhYmxlQ29sbGVjdG9yIDogcHVibGljIFZpc2l0b3IgewotICAg
ICAgICBwdWJsaWM6Ci0gICAgICAgIEhvaXN0ZWRWYXJpYWJsZUNvbGxlY3RvcihGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXImIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcikKLSAgICAgICAgICAgIDog
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcikKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9u
JiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgVmVjdG9y
PFZhcmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGNhbGxFeHBy
ZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsKLSAgICAgICAgICAgIGJvb2wgaXNWb2lkID0gbWF0
Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyLm1faW50cmluc2ljcy52b2lkVHlwZSgpKTsKLSAgICAgICAgICAgIGlmICghaXNWb2lkKQot
ICAgICAgICAgICAgICAgICsrc2l6ZTsKLSAgICAgICAgICAgIHZhcmlhYmxlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOwotCi0gICAgICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDog
Y2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHR5cGUg
PSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KGFyZ3VtZW50LT5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBuYW1lID0g
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
ICAgICAgICAgICAgIHZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQoVmFyaWFibGUgeyBuYW1lLCB0
eXBlIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAg
ICAgICAgICAgICB2YXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKFZhcmlhYmxlIHsgZnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBmdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGNhbGxFeHByZXNzaW9u
LnJlc29sdmVkVHlwZSgpKSB9KTsKLQotICAgICAgICAgICAgdG9Ib2lzdC5hZGQoJmNhbGxFeHBy
ZXNzaW9uLCBXVEZNb3ZlKHZhcmlhYmxlcykpOwotCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNp
dChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZpc2l0KEFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBWZWN0b3I8VmFyaWFibGU+IHZhcmlhYmxlczsKLSAgICAgICAg
ICAgIHZhcmlhYmxlcy5hcHBlbmQoVmFyaWFibGUgeyBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIu
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnJlYWRNb2RpZnlXcml0ZS5vbGRWYWx1ZSgpLnR5
cGUoKSkgfSk7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKFZhcmlhYmxlIHsgZnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBmdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpyZWFkTW9kaWZ5
V3JpdGUubmV3VmFsdWUoKS50eXBlKCkpIH0pOwotCi0gICAgICAgICAgICB0b0hvaXN0LmFkZCgm
cmVhZE1vZGlmeVdyaXRlLCBXVEZNb3ZlKHZhcmlhYmxlcykpOwotCi0gICAgICAgICAgICBWaXNp
dG9yOjp2aXNpdChyZWFkTW9kaWZ5V3JpdGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyJiBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI7Ci0gICAgICAgIEhh
c2hNYXA8QVNUOjpFeHByZXNzaW9uKiwgVmVjdG9yPFZhcmlhYmxlPj4gdG9Ib2lzdDsKLSAgICB9
OwotCi1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5h
bWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5h
bWU+JiBmdW5jdGlvbk1hcHBpbmcsIExheW91dCYgbGF5b3V0KQotICAgICAgICA6IG1fc3RyaW5n
QnVpbGRlcihzdHJpbmdCdWlsZGVyKQotICAgICAgICAsIG1faW50cmluc2ljcyhpbnRyaW5zaWNz
KQotICAgICAgICAsIG1fdHlwZU5hbWVyKHR5cGVOYW1lcikKLSAgICAgICAgLCBtX2Z1bmN0aW9u
TWFwcGluZyhmdW5jdGlvbk1hcHBpbmcpCi0gICAgICAgICwgbV9sYXlvdXQobGF5b3V0KQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVy
cmlkZTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9p
bnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJikgPSAwOwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkJyZWFrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbnRpbnVlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRl
bWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5k
ZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0KLSAgICBlbnVtIGNsYXNz
IExvb3BDb25kaXRpb25Mb2NhdGlvbiB7Ci0gICAgICAgIEJlZm9yZUJvZHksCi0gICAgICAgIEFm
dGVyQm9keQotICAgIH07Ci0gICAgdm9pZCBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb24s
IEFTVDo6RXhwcmVzc2lvbiogY29uZGl0aW9uRXhwcmVzc2lvbiwgQVNUOjpFeHByZXNzaW9uKiBp
bmNyZW1lbnQsIEFTVDo6U3RhdGVtZW50JiBib2R5KTsKLQotICAgIHZvaWQgZW1pdENvbnN0YW50
RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpOwotCi0gICAgTWFuZ2xl
ZFZhcmlhYmxlTmFtZSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSB7IHJldHVybiB7IG1fdmFy
aWFibGVDb3VudCsrIH07IH0KLQotICAgIGVudW0gY2xhc3MgQnJlYWtDb250ZXh0IHsKLSAgICAg
ICAgTG9vcCwKLSAgICAgICAgU3dpdGNoCi0gICAgfTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8QnJl
YWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0NvbnRleHQ7Ci0KLSAgICBTdHJpbmdCdWlsZGVyJiBt
X3N0cmluZ0J1aWxkZXI7Ci0gICAgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotICAgIFR5cGVO
YW1lciYgbV90eXBlTmFtZXI7Ci0gICAgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24q
LCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlvbk1hcHBpbmc7Ci0gICAgSGFzaE1hcDxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBNYW5nbGVkVmFyaWFibGVOYW1lPiBtX3ZhcmlhYmxl
TWFwcGluZzsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nOwotICAgIExheW91dCYgbV9sYXlvdXQ7Ci0gICAgdW5zaWdu
ZWQgbV92YXJpYWJsZUNvdW50IHsgMCB9OwotICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlh
YmxlTmFtZT4gbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlOwotICAgIEluZGVu
dGF0aW9uPDQ+IG1faW5kZW50IHsgMCB9OwotICAgIEhhc2hNYXA8QVNUOjpFeHByZXNzaW9uKiwg
VmVjdG9yPFZhcmlhYmxlPj4gbV9ob2lzdGVkVmFyaWFibGVzOwotfTsKLQotdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYp
Ci17Ci0gICAgLy8gV2UgaW5saW5lIG5hdGl2ZSBmdW5jdGlvbiBjYWxscy4KLX0KLQotdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBm
dW5jdGlvbkRlZmluaXRpb24pCi17Ci0KLSAgICB7Ci0gICAgICAgIEhvaXN0ZWRWYXJpYWJsZUNv
bGxlY3RvciBjb2xsZWN0b3IoKnRoaXMpOwotICAgICAgICBjb2xsZWN0b3IuVmlzaXRvcjo6dmlz
aXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgbV9ob2lzdGVkVmFyaWFibGVzID0gV1RG
TW92ZShjb2xsZWN0b3IudG9Ib2lzdCk7Ci0gICAgfQotCi0gICAgYXV0byBkZWZpbmVIb2lzdGVk
VmFyaWFibGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2ZWN0b3IgOiBtX2hv
aXN0ZWRWYXJpYWJsZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB2YXJpYWJs
ZSA6IHZlY3RvcikKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5k
ZW50LCB2YXJpYWJsZS50eXBlLCAnICcsIHZhcmlhYmxlLm5hbWUsICI7XG4iKTsKLSAgICAgICAg
fQotICAgIH07Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9mdW5jdGlvbk1hcHBpbmcuZmluZCgm
ZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1h
cHBpbmcuZW5kKCkpOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUo
KSkgewotICAgICAgICBhdXRvIGVudHJ5UG9pbnRTY2FmZm9sZGluZyA9IGNyZWF0ZUVudHJ5UG9p
bnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoIWVudHJ5UG9p
bnRTY2FmZm9sZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmcgPSBXVEZNb3ZlKGVudHJ5UG9pbnRTY2FmZm9sZGluZyk7Ci0gICAgICAgIAot
ICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdEhlbHBlclR5cGVzKG1fc3RyaW5n
QnVpbGRlciwgbV9pbmRlbnQpOwotICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1p
dFNpZ25hdHVyZShtX3N0cmluZ0J1aWxkZXIsIGl0ZXJhdG9yLT52YWx1ZSwgbV9pbmRlbnQpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAie1xuIik7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotCi0gICAg
ICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFVucGFjayhtX3N0cmluZ0J1aWxk
ZXIsIG1faW5kZW50KTsKLSAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmZnVuY3Rp
b25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnBh
cmFtZXRlclZhcmlhYmxlcygpW2ldKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0KLSAgICAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuXG4iKTsKLQotICAgICAgICBtX2VudHJ5UG9pbnRT
Y2FmZm9sZGluZyA9IG51bGxwdHI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fZW50
cnlQb2ludFNjYWZmb2xkaW5nID09IG51bGxwdHIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25E
ZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBhdXRvJiBwYXJhbWV0ZXIgPSBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwotICAgICAgICAgICAgYXV0byBwYXJhbWV0
ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcGFyYW1ldGVyLCBwYXJhbWV0ZXJOYW1l
KTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRlck5hbWUp
OwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIntcbiIpOwotCi0gICAgICAgIGRlZmluZUhv
aXN0ZWRWYXJpYWJsZXMoKTsKLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uLmJsb2NrKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4i
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9Ci19Ci0KLXZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKLXsKLSAgICBW
aXNpdG9yOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2luZGVudCwgIntcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBz
Y29wZShtX2luZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3Rh
dGVtZW50cygpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7Ci0g
ICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QnJlYWsmKQotewotICAg
IEFTU0VSVChtX2N1cnJlbnRCcmVha0NvbnRleHQpOwotICAgIHN3aXRjaCAoKm1fY3VycmVudEJy
ZWFrQ29udGV4dCkgewotICAgIGNhc2UgQnJlYWtDb250ZXh0OjpTd2l0Y2g6Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJicmVhaztcbiIpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEJyZWFrQ29udGV4dDo6TG9vcDoKLSAgICAgICAgQVNTRVJUKG1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgKm1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFy
bHlWYXJpYWJsZSwgIiA9IHRydWU7XG4iLAotICAgICAgICAgICAgbV9pbmRlbnQsICJicmVhaztc
biIKLSAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpDb250aW51ZSYpCi17Ci0gICAgQVNTRVJUKG1f
YnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgImJyZWFrO1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCI7XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
RmFsbHRocm91Z2gmKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJb
W2NsYW5nOjpmYWxsdGhyb3VnaF1dO1xuIik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA4IE1ha2Ugc3VyZSB0aGlzIGlzIG9rYXkuIEFsdGVy
bmF0aXZlbHksIHdlIGNvdWxkIGRvIG5vdGhpbmcgYW5kIGp1c3QgcmV0dXJuIGhlcmUgaW5zdGVh
ZC4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKExvb3BDb25k
aXRpb25Mb2NhdGlvbiBsb29wQ29uZGl0aW9uTG9jYXRpb24sIEFTVDo6RXhwcmVzc2lvbiogY29u
ZGl0aW9uRXhwcmVzc2lvbiwgQVNUOjpFeHByZXNzaW9uKiBpbmNyZW1lbnQsIEFTVDo6U3RhdGVt
ZW50JiBib2R5KQotewotICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlh
YmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlW
YXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwotCi0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgbV9pbmRlbnQsICJib29sICIsICptX2JyZWFrT3V0T2ZDdXJy
ZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIsCi0gICAgICAgIG1faW5kZW50LCAi
d2hpbGUgKHRydWUpIHtcbiIKLSAgICApOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29w
ZSB3aGlsZVNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0
aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3JlQm9keSAmJiBjb25kaXRpb25FeHBy
ZXNzaW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAgICAgICAgICAgICAgIiAgICBicmVh
aztcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2lu
ZGVudCwgImRvIHtcbiIpOwotICAgICAgICBTZXRGb3JTY29wZTxzdGQ6Om9wdGlvbmFsPEJyZWFr
Q29udGV4dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4
dDo6TG9vcCk7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBkb1Nj
b3BlKG1faW5kZW50KTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChib2R5KTsKLSAg
ICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSB3aGls
ZShmYWxzZSk7IFxuIik7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgIG1faW5kZW50LCAiaWYgKCIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFy
aWFibGUsICIpXG4iLAotICAgICAgICAgICAgbV9pbmRlbnQsICIgICAgYnJlYWs7XG4iKTsKLQot
ICAgICAgICBpZiAoaW5jcmVtZW50KSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmluY3JlbWVudCk7Ci0g
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlv
bjo6QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9pbmRlbnQsICJpZiAoISgiKTsK
LSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0g
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIpKVxu
IiwKLSAgICAgICAgICAgICAgICAiICAgIGJyZWFrO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSBcbiIpOwotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGls
ZUxvb3ApCi17Ci0gICAgZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpBZnRlckJvZHks
ICZkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpLCBudWxscHRyLCBkb1doaWxlTG9vcC5ib2R5KCkp
OwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpXaGlsZUxv
b3AmIHdoaWxlTG9vcCkKLXsKLSAgICBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb246OkJl
Zm9yZUJvZHksICZ3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSwgbnVsbHB0ciwgd2hpbGVMb29wLmJv
ZHkoKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZv
ckxvb3AmIGZvckxvb3ApCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwg
IntcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShtX2luZGVudCk7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmluaXRpYWxpemF0aW9uKCkpOwot
ICAgICAgICBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb246OkJlZm9yZUJvZHksIGZvckxv
b3AuY29uZGl0aW9uKCksIGZvckxvb3AuaW5jcmVtZW50KCksIGZvckxvb3AuYm9keSgpKTsKLSAg
ICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQotCi12
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZT
dGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImlmICgi
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsKLQotICAgIHsKLSAgICAgICAgSW5k
ZW50YXRpb25TY29wZSBpZlNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotCi0gICAgaWYgKGlmU3RhdGVtZW50LmVs
c2VCb2R5KCkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn0g
ZWxzZSB7XG4iKTsKLSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBlbHNl
U2NvcGUobV9pbmRlbnQpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRl
bWVudC5lbHNlQm9keSgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQpCi17Ci0gICAgaWYgKHJl
dHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8gdGVtcFJldHVybk5hbWUgPSBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsgCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShyZXR1cm5TdGF0ZW1l
bnQudmFsdWUoKS0+cmVzb2x2ZWRUeXBlKCkpLCAnICcsIHRlbXBSZXR1cm5OYW1lLCAiID0gIik7
IAotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0KLSAgICAgICAgaWYgKG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nKSB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAgbV9lbnRyeVBvaW50U2Nh
ZmZvbGRpbmctPmVtaXRQYWNrKG1fc3RyaW5nQnVpbGRlciwgdGVtcFJldHVybk5hbWUsIHZhcmlh
YmxlTmFtZSwgbV9pbmRlbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCwgInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAicmV0dXJuICIs
IHRlbXBSZXR1cm5OYW1lLCAiO1xuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm47XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1l
bnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgInN3aXRjaCAoIik7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHsiKTsKLQotICAgIHsKLSAgICAgICAgSW5kZW50YXRp
b25TY29wZSBzd2l0Y2hTY29wZShtX2luZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3dpdGNo
Q2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCi17Ci0gICAgaWYgKHN3aXRjaENh
c2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
Y2FzZSAiKTsKLSAgICAgICAgZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZygqc3dpdGNoQ2Fz
ZS52YWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiOlxuIik7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkZWZhdWx0
OlxuIik7Ci0gICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVh
a0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6OlN3aXRjaCk7Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7Ci0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTIgRmlndXJlIG91
dCB3aGV0aGVyIHdlIG5lZWQgdG8gYnJlYWsgb3IgZmFsbHRocm91Z2guCi19Ci0KLXZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsKLSAgICBWaXNpdG9yOjp2
aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJh
bCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShpbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBpbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRl
cmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4o
IiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJh
bCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShmbG9hdExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgZmxvYXRMaXRl
cmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShib29sZWFuTGl0
ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGlj
X2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8g
InRydWUiIDogImZhbHNlIiwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwpCi17Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbkRlZmluaXRpb24oKSk7Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJlc29s
dmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
Ijo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsKLX0KLQotdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
LXsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UmIGdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBt
YW5nbGVkRmllbGROYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZ2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLT4iLCBt
YW5nbGVkRmllbGROYW1lKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvJiB0eXBl
ID0gZG90RXhwcmVzc2lvbi5iYXNlKCkucmVzb2x2ZWRUeXBlKCkudW5pZnlOb2RlKCk7Ci0KLSAg
ICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKSkgewotICAgICAgICBhdXRv
JiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9u
Pih0eXBlKTsKLSAgICAgICAgYXV0byogc3RydWN0dXJlRWxlbWVudCA9IHN0cnVjdHVyZURlZmlu
aXRpb24uZmluZChkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpzdHJ1Y3R1cmVFbGVtZW50KTsKLQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIikuIiwgZWxlbWVudE5hbWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBlbGVt
ZW50TmFtZSA9IGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCk7Ci0gICAgICAgIGlmIChlbGVtZW50
TmFtZSA9PSAibGVuZ3RoIiAmJiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpIHx8
IGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSB8fCAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5p
c1ZlY3RvcigpKSkpIHsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgp
KTsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLmxlbmd0aCIpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0
eXBlKS5udW1FbGVtZW50cygpLCAiKSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPih0eXBlKS52ZWN0b3JTaXplKCksICIpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAg
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS4iLCBlbGVtZW50TmFtZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6
OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAgIGF1dG8mIHR5cGUgPSBp
bmRleEV4cHJlc3Npb24uYmFzZSgpLnJlc29sdmVkVHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgIGlm
IChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkpIHsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHBy
ZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikucG9pbnRl
clsoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhF
eHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDwgKCIpOwot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikubGVuZ3RoID8gIik7Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAwXSIpOwotICAgIH0gZWxzZSBpZiAoaXM8QVNU
OjpBcnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLmRhdGEoKVsoIik7Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDwgIiwgZG93bmNhc3Q8QVNUOjpBcnJheVR5
cGU+KHR5cGUpLm51bUVsZW1lbnRzKCksICIgPyAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiA6IDBdIik7Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgbmF0aXZlVHlwZSA9IGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsKLSAgICAgICAgdW5zaWduZWQg
c2l6ZTsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUuaXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHNp
emUgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Q29sdW1ucygpOwotICAgICAgICBlbHNlIGlm
IChuYXRpdmVUeXBlLmlzVmVjdG9yKCkpCi0gICAgICAgICAgICBzaXplID0gbmF0aXZlVHlwZS52
ZWN0b3JTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiIDwgIiwgc2l6ZSwgIikgPyAoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogMF0iKTsKLSAgICB9IGVsc2UKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24p
Ci17Ci0gICAgQVNTRVJUKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZ2YXJpYWJsZURlY2xhcmF0aW9uLCB2YXJpYWJs
ZU5hbWUpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTgxNjAgSW1wbGVtZW50IHF1YWxpZmllcnMuCi0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRp
b24uaW5pdGlhbGl6ZXIoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5k
ZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24u
dHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2
YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0geyB9O1xu
Iik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkFzc2ln
bm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHBy
ZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNz
aWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpDYWxs
RXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBpdGVyID0gbV9ob2lzdGVk
VmFyaWFibGVzLmZpbmQoJmNhbGxFeHByZXNzaW9uKTsKLSAgICBSRUxFQVNFX0FTU0VSVChpdGVy
ICE9IG1faG9pc3RlZFZhcmlhYmxlcy5lbmQoKSk7Ci0gICAgYXV0byYgdmFyaWFibGVzID0gaXRl
ci0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCku
c2l6ZSgpIDw9IHZhcmlhYmxlcy5zaXplKCkpOwotICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVO
YW1lPiBhcmd1bWVudE5hbWVzOwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXN1bHROYW1l
OwotICAgIGlmICghbWF0Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwgbV9pbnRy
aW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAgICByZXN1bHROYW1lID0gdmFyaWFibGVzLmxhc3Qo
KS5uYW1lOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgYXJndW1lbnROYW1lcy5hcHBlbmQodmFyaWFibGVzW2ldLm5hbWUpOwotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZhcmlhYmxlc1tpXS5uYW1lLCAiID0gKCIpOwotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKClbaV0pOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiKTsKLSAgICB9Ci0KLSAgICBpZiAo
aXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpKSkgewotICAgICAgICBpbmxpbmVOYXRpdmVGdW5jdGlvbihtX3N0cmluZ0J1aWxkZXIsIGRv
d25jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVu
Y3Rpb24oKSksIGFyZ3VtZW50TmFtZXMsIHJlc3VsdE5hbWUsIG1fdHlwZU5hbWVyKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9mdW5jdGlvbk1hcHBpbmcuZmluZCgm
Y2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSk7Ci0gICAgICAgIEFTU0VSVChpdGVyYXRvciAhPSBt
X2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
aXRlcmF0b3ItPnZhbHVlLCAnKCcpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNh
bGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJsZXNbaV0ubmFtZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgIH0KLQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGJvb2wgcmFuT25jZSA9IGZhbHNl
OwotICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNvbW1hRXhwcmVzc2lvbi5saXN0KCkpIHsK
LSAgICAgICAgaWYgKHJhbk9uY2UpCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotICAgICAgICByYW5PbmNlID0gdHJ1ZTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7
Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiooIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRlcmVmZXJlbmNlRXhw
cmVzc2lvbi5wb2ludGVyKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0K
LQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TG9naWNhbEV4cHJl
c3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IigoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAgc3dpdGNoIChsb2dpY2Fs
RXhwcmVzc2lvbi50eXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5
cGU6OkFuZDoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiICYmICIpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6Ok9yOgotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKSkiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiEoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2lj
YWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQot
ewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1hZGUgdG8gd29yay4gSXQgcHJvYmFi
bHkgc2hvdWxkIGJlIHVzaW5nIHRoZSBsYXN0IGxlZnRWYWx1ZSB0b28uCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODgzOAotICAgIGF1dG8gbWFuZ2xl
ZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmIChpczxBU1Q6OlBvaW50ZXJU
eXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlw
ZSgpKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
InsgIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAx
IH0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBhdXRv
JiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsgIik7Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLmRhdGEoKSwgIiwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCksICIgfSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsgJiIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQ
b2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCImKCIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVlKCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVh
ZE1vZGlmeVdyaXRlKQotewotICAgIC8qCi0gICAgICogIDEuIEV2YWx1YXRlIG1fbGVmdFZhbHVl
Ci0gICAgICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFsdWUKLSAgICAgKiAgMy4g
RXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Npb24KLSAgICAgKiAgNC4gQXNzaWduIHRoZSByZXN1
bHQgdG8gbV9uZXdWYWx1ZQotICAgICAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xlZnRW
YWx1ZQotICAgICAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Npb24KLSAgICAgKiAgNy4g
UmV0dXJuIHRoZSByZXN1bHQKLSAgICAgKi8KLQotICAgIGF1dG8gaXRlciA9IG1faG9pc3RlZFZh
cmlhYmxlcy5maW5kKCZyZWFkTW9kaWZ5V3JpdGUpOwotICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIg
IT0gbV9ob2lzdGVkVmFyaWFibGVzLmVuZCgpKTsKLSAgICBhdXRvJiB2YXJpYWJsZXMgPSBpdGVy
LT52YWx1ZTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YXJpYWJsZXMuc2l6ZSgpID09IDIpOwotCi0g
ICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvbGRWYWx1ZVZhcmlhYmxlID0gdmFyaWFibGVzWzBdLm5h
bWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBuZXdWYWx1ZVZhcmlhYmxlID0gdmFyaWFibGVz
WzFdLm5hbWU7Ci0KLSAgICBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnJlYWRNb2RpZnlXcml0ZS5v
bGRWYWx1ZSgpLCBvbGRWYWx1ZVZhcmlhYmxlKTsKLSAgICBtX3ZhcmlhYmxlTWFwcGluZy5hZGQo
JnJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZSgpLCBuZXdWYWx1ZVZhcmlhYmxlKTsKLQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
b2xkVmFsdWVWYXJpYWJsZSwgIiA9ICIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9k
aWZ5V3JpdGUubGVmdFZhbHVlKCkpOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAi
LCBuZXdWYWx1ZVZhcmlhYmxlLCAiID0gIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRN
b2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubGVm
dFZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG5ld1ZhbHVlVmFy
aWFibGUsICIsICIpOwotCi0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5y
ZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0K
LQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJl
c3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
JygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRl
KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgPyAoIik7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIikgOiAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5h
cnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIEFTU0VSVCh2YXJp
YWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJs
ZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBBU1NFUlQo
aXRlcmF0b3IgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwotCi0gICAgTWFuZ2xlZFZhcmlh
YmxlTmFtZSB2YXJpYWJsZU5hbWUgPSBpdGVyYXRvci0+dmFsdWU7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCh2YXJpYWJsZU5hbWUpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6ZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
biYgY29uc3RhbnRFeHByZXNzaW9uKQotewotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdl
ckxpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoaW50ZWdlckxp
dGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAg
ICAgfSwKLSAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoZmxvYXRMaXRlcmFsLnZhbHVlKCkpOwot
ICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVy
YWwpIHsKLSAgICAgICAgICAgIGlmIChib29sZWFuTGl0ZXJhbC52YWx1ZSgpKQotICAgICAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInRydWUiKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJmYWxzZSIpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgICAgICBBU1NFUlQoZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAiOjoi
LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOwotICAgICAgICB9Ci0gICAgKSk7
Ci19Ci0KLWNsYXNzIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewotcHVibGljOgotICAgIFJlbmRlckZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRj
aGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi0g
ICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIGludHJpbnNp
Y3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlvdXQpCi0gICAgICAgICwgbV9tYXRj
aGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGljcykpCi0gICAgewotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBjcmVh
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlk
ZTsKLQotICAgIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MgbV9tYXRjaGVkU2VtYW50aWNzOwotfTsK
LQotc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRvIGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSA9IFt0aGlzXSgpIC0+IE1hbmdsZWRWYXJpYWJsZU5hbWUgewotICAgICAg
ICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgfTsKLSAgICBp
ZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVy
KQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVk
U2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMp
OwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFn
bWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21h
dGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRD
b2xvckF0dGFjaG1lbnRzKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotY2xhc3MgQ29tcHV0
ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXIgewotcHVibGljOgotICAgIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlw
ZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFu
Z2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTWF0Y2hlZENvbXB1dGVTZW1hbnRp
Y3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLSAgICAgICAgOiBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgaW50cmluc2ljcywgdHlwZU5hbWVyLCBm
dW5jdGlvbk1hcHBpbmcsIGxheW91dCkKLSAgICAgICAgLCBtX21hdGNoZWRTZW1hbnRpY3MoV1RG
TW92ZShtYXRjaGVkU2VtYW50aWNzKSkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0ZUVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgTWF0Y2hl
ZENvbXB1dGVTZW1hbnRpY3MgbV9tYXRjaGVkU2VtYW50aWNzOwotfTsKLQotc3RkOjp1bmlxdWVf
cHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBm
dW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUg
PSBbdGhpc10oKSAtPiBNYW5nbGVkVmFyaWFibGVOYW1lIHsKLSAgICAgICAgcmV0dXJuIHRoaXMt
PmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIH07Ci0gICAgaWYgKCZmdW5jdGlvbkRl
ZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9u
LCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2lu
dEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3Zl
KGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi1z
dGF0aWMgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25O
YW1lPiBnZW5lcmF0ZU1ldGFsRnVuY3Rpb25zTWFwcGluZyhQcm9ncmFtJiBwcm9ncmFtKQotewot
ICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9ucyA9IDA7Ci0gICAgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiBmdW5jdGlvbk1hcHBpbmc7Ci0gICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGZ1bmN0aW9uTWFwcGluZy5hZGQoJmZ1
bmN0aW9uRGVmaW5pdGlvbiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IG51bUZ1bmN0aW9ucysrIH0p
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIH0KLQotICAgIHJldHVybiBmdW5jdGlvbk1hcHBpbmc7Ci19Ci0KLXN0YXRpYyB2b2lk
IGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBQ
cm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgY29uc3QgSGFzaFNldDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiYgcmVhY2hhYmxlRnVuY3Rpb25zLCBIYXNoTWFwPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBp
bmcpCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50
cnlQb2ludFR5cGUoKSAmJiByZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVm
aW5pdGlvbikpCi0gICAgICAgICAgICBkZWNsYXJlRnVuY3Rpb24oc3RyaW5nQnVpbGRlciwgZnVu
Y3Rpb25EZWZpbml0aW9uLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZyk7Ci0gICAgfQotCi0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci19Ci0KLWNsYXNzIFJlYWNoYWJsZUZ1bmN0
aW9uc0dhdGhlcmVyIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQg
dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlYWNoYWJsZUZ1bmN0aW9ucy5h
ZGQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwot
ICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1
bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9
Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+IHRha2VSZWFjaGFibGVG
dW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVuY3Rpb25zKTsgfQotCi1w
cml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4gbV9yZWFjaGFi
bGVGdW5jdGlvbnM7Ci19OwotCi1SZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1l
dGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFByb2dyYW0mIHByb2dy
YW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hl
ZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgYXV0byYgdmVydGV4U2hhZGVyRW50
cnlQb2ludCA9ICptYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcjsKLSAgICBhdXRvKiBmcmFn
bWVudFNoYWRlckVudHJ5UG9pbnQgPSBtYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyOwot
Ci0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVy
ZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6dmlzaXQodmVydGV4
U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCkKLSAg
ICAgICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6dmlzaXQoKmZyYWdtZW50
U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFi
bGVGdW5jdGlvbnNHYXRoZXJlci50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7Ci0KLSAgICBhdXRv
IGZ1bmN0aW9uTWFwcGluZyA9IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBwaW5nKHByb2dyYW0p
OwotICAgIAotICAgIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9n
cmFtLCB0eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9ucywgZnVuY3Rpb25NYXBwaW5nKTsKLQot
ICAgIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5cGVOYW1lciwgZnVuY3Rp
b25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotICAgIGZvciAo
YXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkp
IHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZp
bml0aW9uKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChmdW5j
dGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHJldHVybiB7IGZ1bmN0aW9uTWFwcGluZy5n
ZXQoJnZlcnRleFNoYWRlckVudHJ5UG9pbnQpLCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQgPyBm
dW5jdGlvbk1hcHBpbmcuZ2V0KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCkgOiBNYW5nbGVkRnVu
Y3Rpb25OYW1lIHsgMCB9IH07Ci19Ci0KLUNvbXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMg
ZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFByb2dyYW0m
IHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYm
IG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewotICAgIGF1dG8mIGVudHJ5UG9p
bnQgPSAqbWF0Y2hlZFNlbWFudGljcy5zaGFkZXI7Ci0KLSAgICBSZWFjaGFibGVGdW5jdGlvbnNH
YXRoZXJlciByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlcjsKLSAgICByZWFjaGFibGVGdW5jdGlv
bnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdChlbnRyeVBvaW50KTsKLSAgICBhdXRvIHJlYWNoYWJs
ZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyLnRha2VSZWFjaGFibGVGdW5j
dGlvbnMoKTsKLQotICAgIGF1dG8gZnVuY3Rpb25NYXBwaW5nID0gZ2VuZXJhdGVNZXRhbEZ1bmN0
aW9uc01hcHBpbmcocHJvZ3JhbSk7Ci0gICAgZW1pdFNoYXJlZE1ldGFsRnVuY3Rpb25zKHN0cmlu
Z0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxlRnVuY3Rpb25zLCBmdW5jdGlv
bk1hcHBpbmcpOwotCi0gICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5
cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlv
dXQpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlu
cygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHJldHVybiB7IGZ1
bmN0aW9uTWFwcGluZy5nZXQoJmVudHJ5UG9pbnQpIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1l
dGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ0OTM5ZjE2MTZlOGUxMjNiNTll
M2U3ODBiNWY5NjY5NDcwODgzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVy
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
UHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgVHlwZU5hbWVyOwotCi1zdHJ1
Y3QgUmVuZGVyTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIHsKLSAgICBNYW5nbGVkRnVuY3Rpb25O
YW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1l
IG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLVJlbmRlck1ldGFsRnVuY3Rpb25F
bnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYsIFByb2dyYW0mLCBU
eXBlTmFtZXImLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYsIExheW91dCYpOwotCi1zdHJ1Y3Qg
Q29tcHV0ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyB7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci19OwotQ29tcHV0ZU1ldGFsRnVuY3Rpb25FbnRyeVBv
aW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYsIFByb2dyYW0mLCBUeXBlTmFt
ZXImLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmLCBMYXlvdXQmKTsKLQotfQotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWFuZ2xlZE5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1l
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjYwNGVkNzNlMDI3Mzg2MTNkYzZk
Y2JiM2M0NTgzNGMyMmRlOWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TWFuZ2xlZE5hbWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1l
dGFsIHsKLQotc3RydWN0IE1hbmdsZWRWYXJpYWJsZU5hbWUgewotICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCk7IH0KLSAgICB1bnNpZ25lZCB2YWx1ZSB7IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
cHJlZml4ID0gInZhcmlhYmxlIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVkVHlwZU5hbWUgewotICAg
IHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4
ID0gInR5cGUiOwotfTsKLQotc3RydWN0IE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSB7Ci0g
ICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVm
aXggPSAic3RydWN0dXJlRWxlbWVudCI7Ci19OwotCi1zdHJ1Y3QgTWFuZ2xlZEVudW1lcmF0aW9u
TWVtYmVyTmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcmVmaXggPSAiZW51bWVyYXRpb25NZW1iZXIiOwotfTsKLQotc3RydWN0IE1h
bmdsZWRGdW5jdGlvbk5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gImZ1bmN0aW9uIjsKLQotICAgIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCB2YWx1ZSk7IH0KLX07Ci0K
LXVzaW5nIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lID0gVmFyaWFudDxNYW5nbGVkVHlwZU5hbWUs
IFN0cmluZz47Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIE1hbmdsZWROYW1lVHlwZT4KLWNsYXNzIE1hbmdsZWROYW1lQWRhcHRvciB7Ci1w
dWJsaWM6Ci0gICAgTWFuZ2xlZE5hbWVBZGFwdG9yKE1hbmdsZWROYW1lVHlwZSBuYW1lKQotICAg
ICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBsZW5n
dGgoKSB7IHJldHVybiBzdHJsZW4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVmaXgpICsgbGVuZ3RoT2ZJ
bnRlZ2VyQXNTdHJpbmcobV9uYW1lLnZhbHVlKTsgfQotICAgIGJvb2wgaXM4Qml0KCkgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3Jp
dGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVmaXgpLCBzdHJsZW4oTWFuZ2xlZE5hbWVUeXBlOjpw
cmVmaXgpKTsKLSAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIobV9uYW1lLnZhbHVlLCBkZXN0
aW5hdGlvbiArIHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCkpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBNYW5nbGVkTmFtZVR5cGUgbV9uYW1lOwotfTsKLQotdGVtcGxhdGU8PiBjbGFz
cyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRWYXJpYWJs
ZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6
TWV0YWw6Ok1hbmdsZWRWYXJpYWJsZU5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRh
cHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRWYXJpYWJsZU5hbWUgbmFtZSkKLSAg
ICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLXRlbXBs
YXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5n
bGVkVHlwZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3JlOjpX
SExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lIG5hbWUpCi0gICAg
ICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0
ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFN0cnVjdHVyZUVsZW1lbnROYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVkTmFtZUFkYXB0b3I8
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWU+IHsKLXB1
YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmds
ZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRv
cihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRh
cHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUs
IHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBl
QWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5h
bWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAg
fQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVkTmFtZUFk
YXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lPiB7Ci1wdWJs
aWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVk
RnVuY3Rpb25OYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0g
ICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSwgdm9pZD4gewotcHVi
bGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG5hbWUpCi0gICAgICAgIDogbV9uYW1lIHsgbmFtZSB9
Ci0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJiBtYW5nbGVkVHlwZU5hbWUpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RybGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFR5cGVOYW1lOjpwcmVmaXgpICsgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcobWFuZ2xlZFR5cGVO
YW1lLnZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICBib29sIGlzOEJpdCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJikgewotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLmlz
OEJpdCgpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIFdURjo6c3dpdGNoT24obV9uYW1lLAotICAgICAgICAg
ICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZSYgbWFu
Z2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoZGVzdGluYXRpb24sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihXZWJDb3JlOjpX
SExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSwgc3RybGVuKFdlYkNvcmU6OldI
TFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpKTsKLSAgICAgICAgICAgICAgICB3
cml0ZUludGVnZXJUb0J1ZmZlcihtYW5nbGVkVHlwZU5hbWUudmFsdWUsIGRlc3RpbmF0aW9uICsg
c3RybGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpKTsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB7IHN0cmluZyB9LmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkT3JO
YXRpdmVUeXBlTmFtZSYgbV9uYW1lOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGFmZWJkYTU2ZDZkNjczMDE4ZDgzMWFmNjQzMmYz
N2QxNjE3YjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2Rl
R2VuZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTWV0YWxDb2RlR2VuZXJhdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewot
Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29kZSA9IGZhbHNlOwotCi1zdGF0aWMg
U3RyaW5nVmlldyBtZXRhbENvZGVQcm9sb2d1ZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcg
ewotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj5cbiIKLSAgICAgICAgIiNpbmNsdWRl
IDxtZXRhbF9hdG9taWM+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfbWF0aD5cbiIKLSAg
ICAgICAgIiNpbmNsdWRlIDxtZXRhbF9yZWxhdGlvbmFsPlxuIgotICAgICAgICAiI2luY2x1ZGUg
PG1ldGFsX2NvbXB1dGU+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfdGV4dHVyZT5cbiIK
LSAgICAgICAgIlxuIgotICAgICAgICAidXNpbmcgbmFtZXNwYWNlIG1ldGFsO1xuIgotICAgICAg
ICAiXG4iCi0gICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IENvbHMsIGludCBSb3dz
PlxuIgotICAgICAgICAic3RydWN0IFdTTE1hdHJpeFxuIgotICAgICAgICAie1xuIgotICAgICAg
ICAiICAgIHZlYzxULCBSb3dzPiBjb2x1bW5zW0NvbHNdO1xuIgotICAgICAgICAiICAgIHByaXZh
dGU6XG4iCi0gICAgICAgICIgICAgcHVibGljOlxuIgotICAgICAgICAiICAgIGlubGluZSBXU0xN
YXRyaXgoKSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRy
aXgoKSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJp
eChjb25zdCB0aHJlYWQgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSB0aHJlYWQgPSBk
ZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgZGV2aWNlIFdT
TE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAg
ICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0YW50IFdTTE1hdHJpeDxULCBDb2xz
LCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUg
V1NMTWF0cml4KGNvbnN0IHRocmVhZGdyb3VwIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhh
dCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNv
bnN0IHRocmVhZCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVm
YXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGRldmljZSBXU0xN
YXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAgICAg
ICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0YW50IFdTTE1hdHJpeDxULCBDb2xz
LCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGlu
ZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkZ3JvdXAgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0
aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgcHVibGljOlxuIgotICAg
ICAgICAiICAgIGlubGluZSB0aHJlYWQgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSB0
aHJlYWRcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1
bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgZGV2aWNl
IHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgZGV2aWNlXG4iCi0gICAgICAgICIgICAg
e1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAg
ICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIHRocmVhZGdyb3VwIHZlYzxULCBSb3dzPiAmb3Bl
cmF0b3JbXShpbnQgcikgdGhyZWFkZ3JvdXBcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAg
ICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAg
ICAgIiAgICBpbmxpbmUgY29uc3QgdGhyZWFkIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQg
cikgY29uc3QgdGhyZWFkXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICBy
ZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5s
aW5lIGNvbnN0IGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNvbnN0IGRl
dmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVt
bnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBjb25zdCBj
b25zdGFudCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNvbnN0IGNvbnN0YW50XG4i
Ci0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtc
biIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0IHRocmVhZGdy
b3VwIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgY29uc3QgdGhyZWFkZ3JvdXBcbiIK
LSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xu
IgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn07XG4iCi0KLQotICAgIH07Ci0KLX0KLQot
c3RhdGljIHZvaWQgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIpCi17Ci0gICAgaWYgKGR1bXBNZXRhbENvZGUpIHsKLSAgICAgICAgZGF0YUxvZ0xuKCJH
ZW5lcmF0ZWQgTWV0YWwgY29kZTogIik7Ci0gICAgICAgIGRhdGFMb2dMbihzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkpOwotICAgIH0KLX0KLQotUmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxD
b2RlKFByb2dyYW0mIHByb2dyYW0sIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2Vt
YW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxDb2RlUHJvbG9ndWUoKSk7Ci0KLSAg
ICBUeXBlTmFtZXIgdHlwZU5hbWVyKHByb2dyYW0pOwotICAgIHR5cGVOYW1lci5lbWl0TWV0YWxU
eXBlcyhzdHJpbmdCdWlsZGVyKTsKLSAgICAKLSAgICBhdXRvIG1ldGFsRnVuY3Rpb25FbnRyeVBv
aW50cyA9IE1ldGFsOjplbWl0TWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwg
dHlwZU5hbWVyLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotCi0gICAgZHVt
cE1ldGFsQ29kZUlmTmVlZGVkKHN0cmluZ0J1aWxkZXIpOwotCi0gICAgcmV0dXJuIHsgV1RGTW92
ZShzdHJpbmdCdWlsZGVyKSwgV1RGTW92ZShtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMubWFuZ2xl
ZFZlcnRleEVudHJ5UG9pbnROYW1lKSwgV1RGTW92ZShtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMu
bWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUpIH07Ci19Ci0KLUNvbXB1dGVNZXRhbENvZGUg
Z2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwgTWF0Y2hlZENvbXB1dGVTZW1hbnRp
Y3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxDb2RlUHJv
bG9ndWUoKSk7Ci0KLSAgICBUeXBlTmFtZXIgdHlwZU5hbWVyKHByb2dyYW0pOwotICAgIHR5cGVO
YW1lci5lbWl0TWV0YWxUeXBlcyhzdHJpbmdCdWlsZGVyKTsKLQotICAgIGF1dG8gbWV0YWxGdW5j
dGlvbkVudHJ5UG9pbnRzID0gTWV0YWw6OmVtaXRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVy
LCBwcm9ncmFtLCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7
Ci0KLSAgICBkdW1wTWV0YWxDb2RlSWZOZWVkZWQoc3RyaW5nQnVpbGRlcik7Ci0KLSAgICByZXR1
cm4geyBXVEZNb3ZlKHN0cmluZ0J1aWxkZXIpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25FbnRyeVBv
aW50cy5tYW5nbGVkRW50cnlQb2ludE5hbWUpIH07Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5l
cmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0ODc2MTdjYjkwNWFlMmVi
MDY5NDBhMTc0ZTQwOTU4MmI4YzNiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTE1ldGFsQ29kZUdlbmVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5l
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0K
LXN0cnVjdCBSZW5kZXJNZXRhbENvZGUgewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7
Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWU7Ci0g
ICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZTsKLX07
Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3MgbmVlZCB0byBiZSBkb25lIGVhcmxp
ZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2YgdGhlIGNvbXBpbGVyLgotUmVuZGVy
TWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mLCBNYXRjaGVkUmVuZGVyU2VtYW50
aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0Jik7Ci0KLXN0cnVjdCBDb21wdXRlTWV0YWxD
b2RlIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1hbmdsZWRGdW5jdGlv
bk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotfTsKLS8vIENhbid0IGZhaWwuIEFueSBmYWls
dXJlIGNoZWNrcyBuZWVkIHRvIGJlIGRvbmUgZWFybGllciwgaW4gdGhlIGJhY2tlbmQtYWdub3N0
aWMgcGFydCBvZiB0aGUgY29tcGlsZXIuCi1Db21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxD
b2RlKFByb2dyYW0mLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3Ms
IExheW91dCYpOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkMmM4YTg3YmM2N2M5ZmU2MmNlM2U2NDRhNjY0YTg2
NGM0NjVkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25Xcml0
ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExT
TEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVy
ZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyBTdHJpbmcgbWFwRnVuY3Rpb25OYW1lKFN0
cmluZyYgZnVuY3Rpb25OYW1lKQotewotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImRkeCIpCi0g
ICAgICAgIHJldHVybiAiZGZkeCJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImRkeSIp
Ci0gICAgICAgIHJldHVybiAiZGZkeSJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFz
aW50IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGludDMyX3Q+Il9zdHI7Ci0gICAgaWYgKGZ1
bmN0aW9uTmFtZSA9PSAiYXN1aW50IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPHVpbnQzMl90
PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFzZmxvYXQiKQotICAgICAgICByZXR1
cm4gImFzX3R5cGU8ZmxvYXQ+Il9zdHI7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTsKLX0KLQot
c3RhdGljIFN0cmluZyBhdG9taWNOYW1lKFN0cmluZyBpbnB1dCkKLXsKLSAgICBpZiAoaW5wdXQg
PT0gIkFkZCIpCi0gICAgICAgIHJldHVybiAiZmV0Y2hfYWRkIl9zdHI7Ci0gICAgaWYgKGlucHV0
ID09ICJBbmQiKQotICAgICAgICByZXR1cm4gImZldGNoX2FuZCJfc3RyOwotICAgIGlmIChpbnB1
dCA9PSAiRXhjaGFuZ2UiKQotICAgICAgICByZXR1cm4gImV4Y2hhbmdlIl9zdHI7Ci0gICAgaWYg
KGlucHV0ID09ICJNYXgiKQotICAgICAgICByZXR1cm4gImZldGNoX21heCJfc3RyOwotICAgIGlm
IChpbnB1dCA9PSAiTWluIikKLSAgICAgICAgcmV0dXJuICJmZXRjaF9taW4iX3N0cjsKLSAgICBp
ZiAoaW5wdXQgPT0gIk9yIikKLSAgICAgICAgcmV0dXJuICJmZXRjaF9vciJfc3RyOwotICAgIEFT
U0VSVChpbnB1dCA9PSAiWG9yIik7Ci0gICAgICAgIHJldHVybiAiZmV0Y2hfeG9yIl9zdHI7Ci19
Ci0KLXN0YXRpYyBpbnQgdmVjdG9yTGVuZ3RoKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaW50IHZlY3Rvckxlbmd0aCA9IDE7Ci0gICAg
aWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLmlzRW1wdHkoKSkgewot
ICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXpl
KCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFd
KSk7Ci0gICAgICAgIHZlY3Rvckxlbmd0aCA9IFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKS5pbnRlZ2VyTGl0
ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotICAgIHJldHVybiB2ZWN0b3JMZW5ndGg7Ci19Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiB2ZWN0b3JTdWZmaXgoaW50IHZlY3Rvckxlbmd0aCkKLXsKLSAgICBz
d2l0Y2ggKHZlY3Rvckxlbmd0aCkgewotICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJuICIiOwot
ICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuICIyIjsKLSAgICBjYXNlIDM6Ci0gICAgICAgIHJl
dHVybiAiMyI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA9PSA0
KTsKLSAgICAgICAgcmV0dXJuICI0IjsKLSAgICB9Ci19Ci0KLWVudW0gY2xhc3MgU2FtcGxlVHlw
ZSB7Ci0gICAgU2FtcGxlLAotICAgIFNhbXBsZUxldmVsLAotICAgIFNhbXBsZUJpYXMsCi0gICAg
U2FtcGxlR3JhZAotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2FtcGxlVHlwZT4gc2FtcGxl
VHlwZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBpZiAoZnVuY3Rpb25OYW1l
ID09ICJTYW1wbGUiKQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlOwotICAgIGlm
IChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUxldmVsIikKLSAgICAgICAgcmV0dXJuIFNhbXBsZVR5
cGU6OlNhbXBsZUxldmVsOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUJpYXMiKQot
ICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlQmlhczsKLSAgICBpZiAoZnVuY3Rpb25O
YW1lID09ICJTYW1wbGVHcmFkIikKLSAgICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUdy
YWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBpbmxpbmVOYXRpdmVGdW5j
dGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIGNvbnN0IFZlY3RvcjxNYW5nbGVk
VmFyaWFibGVOYW1lPiYgYXJncywgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXN1bHROYW1lLCBUeXBl
TmFtZXImIHR5cGVOYW1lcikKLXsKLSAgICBhdXRvIGFzTWF0cml4VHlwZSA9IFsmXSAoQVNUOjpV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIC0+IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiB7
Ci0gICAgICAgIGF1dG8mIHJlYWxUeXBlID0gdW5uYW1lZFR5cGUudW5pZnlOb2RlKCk7Ci0gICAg
ICAgIGlmICghcmVhbFR5cGUuaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGF1dG8mIG1heWJlTWF0cml4VHlwZSA9IGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZWFsVHlwZSk7Ci0gICAgICAgIGlmICht
YXliZU1hdHJpeFR5cGUuaXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHJldHVybiAmbWF5YmVNYXRy
aXhUeXBlOwotCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH07Ci0KLSAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5pc0Nhc3QoKSkgewotICAgICAgICBhdXRvJiByZXR1cm5U
eXBlID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCk7Ci0gICAgICAgIGF1dG8gbWV0
YWxSZXR1cm5UeXBlTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJuVHlw
ZSk7Ci0KLSAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsUmV0dXJu
VHlwZU5hbWUsICIgeyB9Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09
IDEpIHsKLSAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKLQotICAgICAgICAgICAgYXV0byBp
c0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0eXBlKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGlzPEFTVDo6TmFtZWRUeXBlPih0eXBlKSAmJiBpczxBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUpKTsKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBhdXRvJiB1bmlmaWVkUmV0dXJuVHlwZSA9IHJldHVyblR5cGUudW5p
ZnlOb2RlKCk7Ci0gICAgICAgICAgICBpZiAoaXNFbnVtZXJhdGlvbkRlZmluaXRpb24odW5pZmll
ZFJldHVyblR5cGUpICYmICFpc0VudW1lcmF0aW9uRGVmaW5pdGlvbihwYXJhbWV0ZXJUeXBlLnVu
aWZ5Tm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlv
biA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5h
bWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIj4oKCIpOwot
ICAgICAgICAgICAgICAgIGJvb2wgbG9vcGVkT25jZSA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1l
bWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobG9vcGVkT25jZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7Ci0gICAgICAgICAgICAgICAgICAgIGhhc1pl
cm9DYXNlIHw9ICFtZW1iZXIuZ2V0KCkudmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoYXJnc1swXSwgIiA9PSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGxvb3BlZE9uY2UgPSB0cnVlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGhhc1plcm9DYXNlLCBoYXNaZXJvQ2Fz
ZSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA/ICIsIGFyZ3Nb
MF0sICIgOiAwKSIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1ldGFsUmV0dXJuVHlwZU5hbWUsICI+KCIs
IGFyZ3NbMF0sICIpIik7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKHJldHVyblR5cGUpKSB7Ci0g
ICAgICAgICAgICAvLyBXZSdyZSBlaXRoZXIgY29uc3RydWN0aW5nIHdpdGggYWxsIGluZGl2aWR1
YWwgZWxlbWVudHMsIG9yIHdpdGgKLSAgICAgICAgICAgIC8vIHZlY3RvcnMgZm9yIGVhY2ggY29s
dW1uLgotCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAg
ICAgaWYgKGFyZ3Muc2l6ZSgpID09IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHdpdGggdmVjdG9ycyBmb3IgZWFj
aCBjb2x1bW4uCi0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICIuY29sdW1uc1siLCBpLCAiXSA9ICIs
IGFyZ3NbaV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHdpdGggYWxsIGVsZW1lbnRzLgotICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3Muc2l6ZSgpID09IG1hdHJpeFR5cGUtPm51bWJlck9m
TWF0cml4Q29sdW1ucygpICogbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhSb3dzKCkpOwotCi0g
ICAgICAgICAgICAgICAgc2l6ZV90IGFyZ051bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbWF0cml4
VHlwZS0+bnVtYmVyT2ZNYXRyaXhSb3dzKCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyZ051bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHJlc3VsdE5hbWUsICIuY29sdW1uc1siLCBpLCAiXVsiLCBqLCAiXSA9ICIsIGFyZ3Nb
YXJnTnVtYmVyXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2FyZ051bWJlcjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ldGFsUmV0dXJuVHlwZU5hbWUsICcoJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzW2ldKTsK
LSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaXNPcGVy
YXRvcigpKSB7Ci0gICAgICAgIGF1dG8gb3BlcmF0b3JOYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciJfc3RyLmxlbmd0aCgpKTsKLQotICAg
ICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09
IDEpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgb2sgdG8gZG8gc2luY2UgdGhlIGFyZ3MgdG8g
dGhpcyBmdW5jdGlvbiBhcmUgYWxsIHRlbXBzLgotICAgICAgICAgICAgLy8gU28gdGhpbmdzIGxp
a2UgKysgYW5kIC0tIGFyZSBvayB0byBkby4KLQotICAgICAgICAgICAgaWYgKGF1dG8qIG1hdHJp
eFR5cGUgPSBhc01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhD
b2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgb3Bl
cmF0b3JOYW1lLCBhcmdzWzBdLCAnWycsIGksICddJyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChvcGVyYXRvck5hbWUsIGFyZ3NbMF0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKSA9PSAyKTsKLSAgICAgICAgaWYgKGF1dG8qIGxlZnRNYXRyaXggPSBhc01hdHJpeFR5
cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogcmlnaHRNYXRyaXggPSBhc01hdHJpeFR5cGUoKm5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gbWF0cml4IDxvcD4gbWF0cml4Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChy
ZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJ1snLCBpLCAiXSAiLCBvcGVyYXRv
ck5hbWUsICcgJywgYXJnc1sxXSwgJ1snLCBpLCAnXScpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBtYXRyaXggPG9wPiBz
Y2FsYXIKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZWZ0TWF0cml4LT5udW1iZXJPZk1h
dHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAi
LCBhcmdzWzBdLCAnWycsIGksICJdICIsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
IiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChh
dXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghYXNNYXRy
aXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgp
KSk7Ci0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBtYXRyaXgKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmlnaHRNYXRyaXgtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiwgIik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwg
J1snLCBpLCAiXSA9ICIsIGFyZ3NbMF0sICcgJywgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0s
ICdbJywgaSwgJ10nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBzY2FsYXIgPG9wPiBzY2FsYXIKLSAgICAgICAgICAgIC8vIHZlY3RvciA8b3A+IHZl
Y3RvcgotICAgICAgICAgICAgLy8gdmVjdG9yIDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAvLyBz
Y2FsYXIgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgICAgICcoJywgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sx
XSwgJyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNvcyIKLSAgICAgICAgfHwgbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNpbiIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRhbiIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFjb3MiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2luIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNvc2giCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJzaW5oIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAidGFuaCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImNlaWwiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJleHAiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJmbG9vciIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkgPT0gImxvZyIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gInJvdW5kIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAidHJ1bmMiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJkZHgiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJkZHkiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJp
c25vcm1hbCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImlzZmluaXRlIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiaXNpbmYiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJpc25hbiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImFzaW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
YXN1aW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
YXNmbG9hdCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
Imxlbmd0aCIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkpLCAnKCcsIGFyZ3NbMF0sICcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInBvdyIgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4yIikgewotICAgICAgICBBU1NFUlQobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpLCAnKCcsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gImNsYW1wIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotCi0gICAgICAgIGlmIChhdXRvKiBtYXRyaXhU
eXBlID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSkgewot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGJvb2wg
cmFuT25jZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
dHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhSb3dz
KCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAocmFuT25jZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAg
ICAgICByYW5PbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHROYW1lLCAnWycsIGksICJdWyIs
IGosICJdID0gY2xhbXAoIiwgYXJnc1swXSwgJ1snLCBpLCAiXVsiLCBqLCAiXSwgIiwgYXJnc1sx
XSwgJ1snLCBpLCAiXVsiLCBqLCAiXSwgIiwgYXJnc1syXSwgJ1snLCBpLCAiXVsiLCBqLCAiXSki
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAiKSIpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgImNsYW1w
KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICcpJyk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKSB7Ci0gICAg
ICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiKHRocmVhZGdy
b3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKSwgdGhyZWFkZ3JvdXBfYmFycmllciht
ZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCksIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdz
OjptZW1fdGV4dHVyZSkpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1lbW9yeUJhcnJpZXJXaXRo
R3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKSIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAg
ICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInRocmVhZGdyb3Vw
X2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3RhcnRz
V2l0aCgiSW50ZXJsb2NrZWQiX3N0cikpIHsKLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSIpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gNCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICAiKGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQoIiwgYXJnc1swXSwg
IiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCksICIsCi0gICAgICAgICAgICAgICAgJyonLCBhcmdzWzNdLCAi
ID0gIiwgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMyk7Ci0gICAgICAgIGF1dG8gbmFtZSA9IGF0b21pY05hbWUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJbnRlcmxvY2tlZCJfc3RyLmxlbmd0aCgpKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgJyonLCBhcmdzWzJd
LCAiID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sx
XSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXV0byBzYW1wbGVUeXBlID0gV0hMU0w6Ok1ldGFsOjpzYW1wbGVUeXBlKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSkgewotICAgICAgICBzaXplX3QgYmFzZUFyZ3Vt
ZW50Q291bnQgPSAwOwotICAgICAgICBzd2l0Y2ggKCpzYW1wbGVUeXBlKSB7Ci0gICAgICAgIGNh
c2UgU2FtcGxlVHlwZTo6U2FtcGxlOgotICAgICAgICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSAz
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlTGV2
ZWw6Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlQmlhczoKLSAgICAgICAgICAgIGJh
c2VBcmd1bWVudENvdW50ID0gNDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNh
bXBsZVR5cGU6OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDU7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJhc2VBcmd1bWVudENvdW50
IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSBiYXNl
QXJndW1lbnRDb3VudCArIDEpOwotICAgICAgICAKLSAgICAgICAgYXV0byYgdGV4dHVyZVR5cGUg
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkt
PnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8mIGxvY2F0aW9uVHlwZSA9IGRvd25jYXN0PEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMl0tPnR5cGUoKS0+dW5pZnlOb2RlKCkp
KTsKLSAgICAgICAgYXV0byBsb2NhdGlvblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChsb2Nh
dGlvblR5cGUpOwotICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIHJldHVyblZl
Y3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKLQotICAgICAgICBpbnQgYXJn
dW1lbnRJbmRleCA9IDA7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbYXJndW1l
bnRJbmRleF0sICIuc2FtcGxlKCIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAiLCAiKTsKLSAg
ICAgICAgYXJndW1lbnRJbmRleCArPSAyOwotCi0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1Rl
eHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGgg
PiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbYXJndW1lbnRJbmRl
eF0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
KSwgIiwgIiwgYXJnc1thcmd1bWVudEluZGV4XSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZyhs
b2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKLSAgICAgICAgICAgICsrYXJndW1lbnRJbmRl
eDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdz
W2FyZ3VtZW50SW5kZXgrK10pOwotCi0gICAgICAgIHN3aXRjaCAoKnNhbXBsZVR5cGUpIHsKLSAg
ICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDoKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIsIGxldmVsKCIsIGFyZ3NbYXJndW1lbnRJbmRleCsrXSwgIikiKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUJpYXM6Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBiaWFzKCIsIGFyZ3NbYXJndW1lbnRJbmRl
eCsrXSwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6
OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNDdWJlVGV4dHVyZSgp
KQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGdyYWRpZW50Y3ViZSgi
LCBhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIiki
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCBncmFkaWVudDJkKCIsIGFyZ3NbYXJndW1lbnRJbmRleF0sICIsICIsIGFyZ3NbYXJndW1l
bnRJbmRleCArIDFdLCAiKSIpOwotICAgICAgICAgICAgYXJndW1lbnRJbmRleCArPSAyOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJhc2VBcmd1bWVudENvdW50ICsgMSkK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbYXJndW1lbnRJbmRl
eCsrXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7Ci0gICAgICAgIGlmICgh
dGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiTG9hZCIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLQotICAgICAgICBhdXRvJiB0
ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byYgbG9jYXRpb25UeXBlID0g
ZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRU
eXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpLT51
bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVmVjdG9yTGVuZ3RoID0gdmVjdG9y
TGVuZ3RoKGxvY2F0aW9uVHlwZSk7Ci0gICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBkb3duY2Fz
dDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1
dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVyblR5cGUpOwotICAgICAg
ICBhdXRvIGxvY2F0aW9uVHlwZU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxv
Y2F0aW9uVHlwZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnLCBhcmdzWzFd
LCAiID0gIik7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAiLCAiLCBsb2NhdGlvblR5
cGVOYW1lLCAnKCcpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZl
Y3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKSwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygnKTsKLQotICAgICAgICAg
ICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsgIndpZHRoIl9zdHIsICJoZWlnaHQiX3N0ciwgImRl
cHRoIl9zdHIgfTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0
b3JMZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0sICIuZ2V0XyIs
IGRpbWVuc2lvbnNbaV0sICIoKSAtIDEiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgIGFyZ3NbMF0sICIuZ2V0X2FycmF5
X3NpemUoKSAtIDEpKSIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGxvY2F0
aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsIDAsICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkgLSAx
KSIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsICIsIGxvY2F0aW9uVHlwZU5hbWUsICIoMCwgMCIp
OwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7Ci0gICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIsIGxvY2F0aW9uVHlwZU5hbWUsICcoJywgYXJn
c1swXSwgIi5nZXRfd2lkdGgoKSAtIDEsICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgpIC0gMSIp
OwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBhcmdzWzBdLCAiLmdldF9k
ZXB0aCgpIC0gMSIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpKSIp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIiwgYXJnc1swXSwgIi5yZWFkKCIpOwotCi0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5p
c1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5n
dGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9y
U3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sxXSwgJy4nLCAieHl6
dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWludCgi
LCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
IC0gMSwgMSksICcpJyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgpLCAnKCcs
IGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAg
ICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUoKSkKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9y
TGVuZ3RoKSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJsb2FkIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICJhdG9taWNfbG9hZF9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCBtZW1v
cnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic3RvcmUiKSB7Ci0gICAgICAgIEFT
U0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgImF0b21pY19zdG9y
ZV9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVs
YXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2V0RGltZW5zaW9ucyIpIHsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4o
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlO
b2RlKCkpKTsKLQotICAgICAgICBzaXplX3QgaW5kZXggPSAxOwotICAgICAgICBib29sIGhhc01p
cExldmVsID0gIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUu
dGV4dHVyZURpbWVuc2lvbigpICE9IDE7Ci0gICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAg
ICAgICAgICsraW5kZXg7Ci0gICAgICAgIGNvbnN0IE1hbmdsZWRWYXJpYWJsZU5hbWUmIHdpZHRo
TmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICArK2luZGV4OwotICAgICAgICBzdGQ6Om9wdGlv
bmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJl
VHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMikgewotICAgICAgICAgICAgaGVpZ2h0TmFtZSA9
IGFyZ3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRlcHRoTmFtZTsKLSAgICAgICAgaWYg
KHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAzKSB7Ci0gICAgICAgICAgICBkZXB0
aE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBlbGVtZW50c05hbWU7Ci0g
ICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBl
bGVtZW50c05hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAg
IH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBudW1iZXJPZkxl
dmVsc05hbWU7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0YWJsZVRleHR1cmUoKSAm
JiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkgewotICAgICAgICAgICAgbnVt
YmVyT2ZMZXZlbHNOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICAgICArK2luZGV4OwotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVChpbmRleCA9PSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKS5zaXplKCkpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgJyonLCB3aWR0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgi
KTsKLSAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0KLSAg
ICAgICAgaWYgKGhlaWdodE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICAgICAgICAgICIsICoiLCAqaGVpZ2h0TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIu
Z2V0X2hlaWdodCgiKTsKLSAgICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlcHRoTmFtZSkgewot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIs
ICpkZXB0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgiKTsKLSAgICAgICAgICAg
IGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChh
cmdzWzFdKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGVsZW1lbnRzTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICplbGVtZW50c05hbWUsICIgPSAiLCBh
cmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobnVt
YmVyT2ZMZXZlbHNOYW1lKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAg
ICAgICAgICAgICAgICAiLCAqIiwgKm51bWJlck9mTGV2ZWxzTmFtZSwgIiA9ICIsIGFyZ3NbMF0s
ICIuZ2V0X251bV9taXBfbGV2ZWxzKCkiKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlciIpIHsKLSAgICAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1w
bGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlclJlZCIpIHsKLSAgICAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4
MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlNhbXBsZUNtcCIpIHsK
LSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlNhbXBsZUNt
cExldmVsWmVybyIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlN0b3JlIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiR2F0aGVyQWxwaGEiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJHYXRoZXJCbHVlIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwot
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQ21wIikgewotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQg
dGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQ21wUmVkIikgewotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJ
bXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyR3JlZW4iKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA4MTEwYWU1OWJhYzAx
NGMzYmI1N2Q0OTAwMWVlMTQyNzgxMThlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3M7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotCi19Ci0KLW5hbWVz
cGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotdm9pZCBpbmxpbmVOYXRpdmVGdW5j
dGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiwgY29u
c3QgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmd1bWVudE5hbWVzLCBNYW5nbGVkVmFy
aWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5cGVOYW1lciYpOwotCi19Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdy
aXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNjhjYmQxZWNkNWVhYzRi
OWZiMzllZGM4NjU5OWIxMTU1MDdkYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZl
VHlwZVdyaXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVN0cmluZyB3cml0
ZU5hdGl2ZVR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidm9pZCIp
Ci0gICAgICAgIHJldHVybiAidm9pZCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJib29sIikKLSAgICAgICAgcmV0dXJuICJib29sIl9zdHI7Ci0gICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICByZXR1cm4g
InVpbnQzMl90Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImludCIpCi0gICAgICAgIHJldHVybiAiaW50MzJfdCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpCi0gICAgICAgIHJldHVybiAiZmxvYXQiX3N0
cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRvbWljX2ludCIp
Ci0gICAgICAgIHJldHVybiAiYXRvbWljX2ludCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfdWludCIpCi0gICAgICAgIHJldHVybiAiYXRvbWlj
X3VpbnQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAic2Ft
cGxlciIpCi0gICAgICAgIHJldHVybiAic2FtcGxlciJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJ2ZWN0b3IiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgQVNT
RVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICAgICAgYXV0byYgdHlw
ZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBl
RGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICAgICAgYXV0byYgdW5pZnlOb2Rl
ID0gdHlwZVJlZmVyZW5jZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9
IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBhdXRvJiBwYXJh
bWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlw
ZSk7Ci0gICAgICAgIGF1dG8gcHJlZml4ID0gKFsmXSgpIC0+IFN0cmluZyB7Ci0gICAgICAgICAg
ICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImJvb2wiKQotICAgICAgICAgICAgICAgIHJl
dHVybiAiYm9vbCI7Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gInVp
bnQiKQotICAgICAgICAgICAgICAgIHJldHVybiAidWludCI7Ci0gICAgICAgICAgICBpZiAocGFy
YW1ldGVyVHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJpbnQi
OwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJmbG9hdCIpOwot
ICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIH0pKCk7Ci0gICAgICAgIEFTU0VS
VChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgICAgIGF1dG8mIGNvbnN0
YW50RXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsKLSAgICAgICAgYXV0byYgaW50ZWdl
ckxpdGVyYWwgPSBjb25zdGFudEV4cHJlc3Npb24uaW50ZWdlckxpdGVyYWwoKTsKLSAgICAgICAg
YXV0byBzdWZmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50
ZWdlckxpdGVyYWwudmFsdWUoKSkgewotICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAg
ICAgIHJldHVybiAiMiJfc3RyOwotICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAg
IHJldHVybiAiMyJfc3RyOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBB
U1NFUlQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSA9PSA0KTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gIjQiX3N0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkoKTsKLSAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcocHJlZml4LCBzdWZmaXgpOwotICAgIH0KLSAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAibWF0cml4IikgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIEFTU0VS
VChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgICAgIGF1dG8mIHR5cGVS
ZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9
IHR5cGVSZWZlcmVuY2UtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgYXV0byYgcGFyYW1l
dGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUp
OwotICAgICAgICBhdXRvIHByZWZpeCA9IChbJl0gewotICAgICAgICAgICAgaWYgKHBhcmFtZXRl
clR5cGUubmFtZSgpID09ICJib29sIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wiOwot
ICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJmbG9hdCIpOwotICAg
ICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIH0pKCk7Ci0KLSAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIldTTE1hdHJpeDwiLCBwcmVmaXgsICIsICIsIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSwgIiwgIiwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm51bWJlck9mTWF0cml4Um93cygpLCAiPiIpOwotICAgIH0KLSAgICBBU1NFUlQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNl
ID0gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi50eXBlQXJndW1lbnRzKClbMF0pOwotICAgIGF1dG8gcHJlZml4ID0gKFsmXSgpIC0+IFN0cmlu
ZyB7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJl
MUQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWQiX3N0cjsKLSAgICAgICAgaWYgKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEIikKLSAgICAgICAgICAg
IHJldHVybiAidGV4dHVyZTFkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1
cmUxZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUxZF9h
cnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
VGV4dHVyZTJEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkIl9zdHI7Ci0gICAgICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyRCIpCi0gICAg
ICAgICAgICByZXR1cm4gInRleHR1cmUyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICAgICAgcmV0dXJu
ICJ0ZXh0dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0
dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlRleHR1cmUzRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUzZCJfc3RyOwot
ICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0Qi
KQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlM2QiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIikKLSAgICAgICAgICAgIHJl
dHVybiAidGV4dHVyZWN1YmUiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEIikKLSAgICAgICAgICAgIHJldHVybiAiZGVwdGgy
ZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4
dHVyZURlcHRoMkRBcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gImRlcHRoMmRfYXJyYXkiX3N0
cjsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1
cmVEZXB0aEN1YmUiKTsKLSAgICAgICAgcmV0dXJuICJkZXB0aGN1YmUiX3N0cjsKLSAgICB9KSgp
OwotICAgIGF1dG8gaW5uZXJUeXBlID0gKFsmXSgpIC0+IFN0cmluZyB7Ci0gICAgICAgIGlmICh0
eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICAgICAgcmV0dXJuICJ1aW50
Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gInVpbnQyIikKLSAg
ICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+
bmFtZSgpID09ICJ1aW50MyIpCi0gICAgICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsKLSAgICAg
ICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDQiKQotICAgICAgICAgICAgcmV0
dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImlu
dCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVy
ZW5jZS0+bmFtZSgpID09ICJpbnQyIikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0g
ICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDMiKQotICAgICAgICAgICAg
cmV0dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAi
aW50NCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJl
ZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdCIpCi0gICAgICAgICAgICByZXR1cm4gImZsb2F0Il9z
dHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0MiIpCi0gICAg
ICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5u
YW1lKCkgPT0gImZsb2F0MyIpCi0gICAgICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAg
ICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0NCIpOwotICAgICAgICBy
ZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgfSkoKTsKLSAgICBhdXRvIGlzUmVhZFdyaXRlID0gbmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMUQiCi0gICAgICAgIHx8IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiCi0gICAgICAg
IHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEIgotICAgICAg
ICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5Igot
ICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCI7
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCAnPCcsIGlubmVyVHlwZSwgIiwgIiwgaXNS
ZWFkV3JpdGUgPyAiYWNjZXNzOjpyZWFkX3dyaXRlIiA6ICJhY2Nlc3M6OnNhbXBsZSIsICc+Jyk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU5MDdlOTYyZDY0MjFlM2ZjZDRiNDNjMTZiOGNlY2NkMGZjNTU4NGMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotCi19Ci0KLW5hbWVzcGFjZSBN
ZXRhbCB7Ci0KLVN0cmluZyB3cml0ZU5hdGl2ZVR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mKTsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
Mjc3MTU0MTQ0NDg2MDMzOGE0ODc2ODVjNWQyZjEwMzlkYTUzNjUwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZU5hbWVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTENhbGxFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBl
RGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCIKLSNpbmNs
dWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
VHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPGFs
Z29yaXRobT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVR5cGVOYW1lcjo6VHlwZU5hbWVyKFBy
b2dyYW0mIHByb2dyYW0pCi0gICAgOiBtX3Byb2dyYW0ocHJvZ3JhbSkKLXsKLX0KLQotVHlwZU5h
bWVyOjp+VHlwZU5hbWVyKCkgPSBkZWZhdWx0OwotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNU
OjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgZ2VuZXJhdGVVbmlxdWVkVHlwZU5h
bWUodW5uYW1lZFR5cGUpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgmZW51bWVyYXRpb25EZWZp
bml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8m
IGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVt
YmVycygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9lbnVtZXJhdGlvbk1lbWJlck1h
cHBpbmcuYWRkKCZzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJj4oZW51bWVyYXRp
b25NZW1iZXIpLCBnZW5lcmF0ZU5leHRFbnVtZXJhdGlvbk1lbWJlck5hbWUoKSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQot
Ci0gICAgVmlzaXRvcjo6dmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLQotICAgIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5hZGQoJmVudW1lcmF0aW9u
RGVmaW5pdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlw
ZT4+IHsgZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci19Ci0KLXZvaWQg
VHlwZU5hbWVyOjp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uKQotewotICAgIC8vIE5hdGl2ZSB0eXBlIGRlY2xhcmF0aW9ucyBhbHJlYWR5IGhh
dmUgbmFtZXMsIGFuZCBhcmUgYWxyZWFkeSBkZWNsYXJlZCBpbiBNZXRhbC4KLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4geyB9KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12
b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVE
ZWZpbml0aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlw
ZU1hcHBpbmcuYWRkKCZzdHJ1Y3R1cmVEZWZpbml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgp
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICB9Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAg
ewotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBl
Pj4gbmVpZ2hib3JzOwotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1
Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGluZy5hZGQoJnN0cnVjdHVyZUVsZW1l
bnQsIGdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCkpOwotICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgICAg
IG5laWdoYm9ycy5hcHBlbmQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwotICAgICAgICB9Ci0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRkKCZzdHJ1Y3R1cmVE
ZWZpbml0aW9uLCBXVEZNb3ZlKG5laWdoYm9ycykpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLX0KLQotdm9pZCBUeXBlTmFt
ZXI6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIHsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlwZU1hcHBpbmcuYWRkKCZ0eXBlRGVm
aW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotICAgIFZpc2l0b3I6OnZp
c2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9k
ZXBlbmRlbmN5R3JhcGguYWRkKCZ0eXBlRGVmaW5pdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHsgdHlwZURlZmluaXRpb24udHlwZSgpIH0pOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgIH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbikKLXsKLSAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShleHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKTsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLX0KLQotdm9pZCBUeXBl
TmFtZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewotICAg
IGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGFyZ3VtZW50KTsKLX0KLQotU3RyaW5nIFR5cGVOYW1lcjo6
bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24pCi17Ci0gICAgcmV0dXJuIHdyaXRlTmF0aXZlVHlwZShuYXRpdmVUeXBlRGVj
bGFyYXRpb24pOwotfQotCi1zdGF0aWMgQVNUOjpVbm5hbWVkVHlwZSogcGFyZW50KEFTVDo6VW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgp
KSB7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOgotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBv
aW50ZXI6Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1l
ZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpB
cnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJl
bmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkFycmF5
VHlwZT4odW5uYW1lZFR5cGUpLnR5cGUoKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OmdlbmVy
YXRlVW5pcXVlZFR5cGVOYW1lKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAg
IGF1dG8qIHBhcmVudFVubmFtZWRUeXBlID0gcGFyZW50KHVubmFtZWRUeXBlKTsKLSAgICBpZiAo
cGFyZW50VW5uYW1lZFR5cGUpCi0gICAgICAgIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKCpwYXJl
bnRVbm5hbWVkVHlwZSk7Ci0KLSAgICBtX3VubmFtZWRUeXBlTWFwcGluZy5lbnN1cmUoVW5uYW1l
ZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9LCBbJl0gewotICAgICAgICByZXR1cm4gZ2VuZXJhdGVO
ZXh0VHlwZU5hbWUoKTsKLSAgICB9KTsKLX0KLQotY2xhc3MgTWV0YWxUeXBlRGVjbGFyYXRpb25X
cml0ZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZShB
U1Q6Ok5hbWVkVHlwZSYpPiYmIG1hbmdsZWROYW1lRm9yTmFtZWRUeXBlKQotICAgICAgICA6IG1f
bWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoV1RGTW92ZShtYW5nbGVkTmFtZUZvck5hbWVkVHlwZSkp
Ci0gICAgICAgICwgbV9zdHJpbmdCdWlsZGVyKHN0cmluZ0J1aWxkZXIpCi0gICAgewotICAgIH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3Ry
dWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKHN0cnVjdHVyZURl
ZmluaXRpb24pLCAiO1xuIik7Ci0gICAgfQotCi0gICAgc3RkOjpmdW5jdGlvbjxNYW5nbGVkT3JO
YXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBl
OwotICAgIFN0cmluZ0J1aWxkZXImIG1fc3RyaW5nQnVpbGRlcjsKLX07Ci0KLXZvaWQgVHlwZU5h
bWVyOjplbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIpCi17Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIgbWV0YWxUeXBlRGVjbGFyYXRp
b25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgWyZdKEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpIC0+
IE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIHsKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lRm9y
VHlwZShuYW1lZFR5cGUpOwotICAgIH0pOwotICAgIG1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVy
LlZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0VW5u
YW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6VW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlLCBNYW5nbGVkVHlwZU5hbWUgbWFuZ2xlZE5hbWUsIEhhc2hT
ZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5
cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKQotewotICAgIGlmIChlbWl0dGVkVW5uYW1lZFR5
cGVzLmNvbnRhaW5zKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUgfSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7Ci0gICAgICAgIGF1dG8mIHR5cGVS
ZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLQot
ICAgICAgICBhdXRvJiBwYXJlbnQgPSB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpOwotICAg
ICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9kZXBlbmRl
bmN5R3JhcGguZmluZCgmcGFyZW50KTsKLSAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZGVw
ZW5kZW5jeUdyYXBoLmVuZCgpKTsKLSAgICAgICAgZW1pdE5hbWVkVHlwZURlZmluaXRpb24oc3Ry
aW5nQnVpbGRlciwgcGFyZW50LCBpdGVyYXRvci0+dmFsdWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBl
bWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlw
ZWRlZiAiLCBwYXJlbnRNYW5nbGVkTmFtZSwgJyAnLCBtYW5nbGVkTmFtZSwgIjtcbiIpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2lu
dGVyOiB7Ci0gICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8mIHBhcmVudCA9IHBvaW50ZXJUeXBl
LmVsZW1lbnRUeXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xlZE5hbWUgPSBtYW5nbGVk
TmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihz
dHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWROYW1lLCBlbWl0dGVkTmFtZWRUeXBl
cywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
InR5cGVkZWYgIiwgdG9TdHJpbmcocG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBh
cmVudE1hbmdsZWROYW1lLCAiKiAiLCBtYW5nbGVkTmFtZSwgIjtcbiIpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5j
ZTogewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8mIHBhcmVudCA9
IGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpOwotICAgICAgICBhdXRvIHBhcmVudE1h
bmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0gICAgICAgIGVtaXRVbm5h
bWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBwYXJlbnRNYW5nbGVkTmFt
ZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInN0cnVjdCAiLCBtYW5nbGVkTmFtZSwg
IiB7XG4iCi0gICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlwZS5h
ZGRyZXNzU3BhY2UoKSksICcgJywgcGFyZW50TWFuZ2xlZE5hbWUsICIqIHBvaW50ZXI7XG4iCi0g
ICAgICAgICAgICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIKLSAgICAgICAgICAgICJ9O1xuIgot
ICAgICAgICApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpBcnJheTogewotICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxB
U1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8mIHBhcmVudCA9IGFy
cmF5VHlwZS50eXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xlZE5hbWUgPSBtYW5nbGVk
TmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihz
dHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWROYW1lLCBlbWl0dGVkTmFtZWRUeXBl
cywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
InR5cGVkZWYgYXJyYXk8IiwgcGFyZW50TWFuZ2xlZE5hbWUsICIsICIsIGFycmF5VHlwZS5udW1F
bGVtZW50cygpLCAiPiAiLCBtYW5nbGVkTmFtZSwgIjtcbiIpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci0KLSAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7IHVu
bmFtZWRUeXBlIH0pOwotfQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRp
b24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlw
ZSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+JiBuZWln
aGJvcnMsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hT
ZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKQotewotICAgIGlmIChlbWl0
dGVkTmFtZWRUeXBlcy5jb250YWlucygmbmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9yIChhdXRvJiB1bm5hbWVUeXBlIDogbmVpZ2hib3JzKQotICAgICAgICBlbWl0VW5uYW1l
ZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHVubmFtZVR5cGUsIG1hbmdsZWROYW1lRm9y
VHlwZSh1bm5hbWVUeXBlKSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMp
OwotCi0gICAgc3dpdGNoIChuYW1lZFR5cGUua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVk
VHlwZTo6S2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGVudW1l
cmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihu
YW1lZFR5cGUpOwotICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9uRGVmaW5pdGlv
bi50eXBlKCkudW5pZnlOb2RlKCk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImVu
dW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICIg
OiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBl
KSksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIo
ZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIuZ2V0KCkudmFsdWUo
KSwgIixcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOiB7Ci0gICAgICAgIC8vIE5hdGl2ZSB0eXBlcyBhbHJlYWR5IGhhdmUgZGVm
aW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGluZyB0byBkby4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OlN0cnVjdHVyZURlZmluaXRpb246IHsKLSAg
ICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
c3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIiB7XG4i
KTsKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5p
dGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpLCAn
ICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVFbGVtZW50KSwgIjtc
biIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6VHlwZURlZmluaXRpb246
IHsKLSAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZp
bml0aW9uPihuYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBl
ZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1h
bmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotCi0gICAgZW1pdHRlZE5hbWVkVHlwZXMuYWRkKCZuYW1lZFR5cGUpOwotfQot
Ci12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURlZmluaXRpb25zKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+IGVtaXR0ZWRO
YW1lZFR5cGVzOwotICAgIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+IGVtaXR0ZWRVbm5hbWVkVHlw
ZXM7Ci0gICAgZm9yIChhdXRvJiBbbmFtZWRUeXBlLCBuZWlnaGJvcnNdIDogbV9kZXBlbmRlbmN5
R3JhcGgpCi0gICAgICAgIGVtaXROYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsICpu
YW1lZFR5cGUsIG5laWdoYm9ycywgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlw
ZXMpOwotICAgIGZvciAoYXV0byYgW3VubmFtZWRUeXBlS2V5LCBtYW5nbGVkTmFtZV0gOiBtX3Vu
bmFtZWRUeXBlTWFwcGluZykKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihzdHJp
bmdCdWlsZGVyLCB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpLCBtYW5nbGVkTmFtZSwgZW1p
dHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotfQotCi1NYW5nbGVkVHlwZU5h
bWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1l
ZFR5cGUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fdW5uYW1lZFR5cGVNYXBwaW5nLmZpbmQo
VW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV91bm5hbWVkVHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7
Ci19Ci0KLU1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JU
eXBlKEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAgaWYgKGlzPEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gbWFuZ2xlZE5hbWVG
b3JUeXBlKGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKTsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9uYW1lZFR5cGVNYXBwaW5nLmZpbmQoJm5hbWVkVHlwZSk7
Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmFtZWRUeXBlTWFwcGluZy5lbmQoKSk7Ci0gICAg
cmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFt
ZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoQVNUOjpFbnVtZXJh
dGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
ZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmZpbmQoJmVudW1lcmF0aW9uTWVtYmVyKTsKLSAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV9lbnVtZXJhdGlvbk1lbWJlck1hcHBpbmcuZW5kKCkpOwotICAg
IHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFt
ZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fc3Ry
dWN0dXJlRWxlbWVudE1hcHBpbmcuZmluZCgmc3RydWN0dXJlRWxlbWVudCk7Ci0gICAgQVNTRVJU
KGl0ZXJhdG9yICE9IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVy
biBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TWV0YWxUeXBlcyhT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIFZpc2l0b3I6OnZpc2l0KG1fcHJv
Z3JhbSk7Ci0KLSAgICBlbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKHN0cmluZ0J1aWxkZXIpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGVtaXRNZXRhbFR5cGVEZWZpbml0
aW9ucyhzdHJpbmdCdWlsZGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdkYWQxYWU4MTA0MDVhY2I1OGRhZjkyN2IxY2M4MjZmNjRjYzEwY2UuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgot
I2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGVIYXNoLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3MgRW51bWVy
YXRpb25NZW1iZXI7Ci1jbGFzcyBOYW1lZFR5cGU7Ci1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRp
b247Ci1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uOwotY2xhc3MgVHlwZURlZmluaXRpb247Ci1j
bGFzcyBVbm5hbWVkVHlwZTsKLQotfQotCi1jbGFzcyBQcm9ncmFtOwotCi1uYW1lc3BhY2UgTWV0
YWwgewotCi1jbGFzcyBCYXNlVHlwZU5hbWVOb2RlOwotCi1jbGFzcyBUeXBlTmFtZXIgOiBwcml2
YXRlIFZpc2l0b3IgewotcHVibGljOgotICAgIFR5cGVOYW1lcihQcm9ncmFtJik7Ci0gICAgdmly
dHVhbCB+VHlwZU5hbWVyKCk7Ci0KLSAgICB2b2lkIGVtaXRNZXRhbFR5cGVzKFN0cmluZ0J1aWxk
ZXImKTsKLQotICAgIC8vIE11c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxpbmcgZW1pdE1ldGFsVHlw
ZXMoKS4KLSAgICBTdHJpbmcgbWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJik7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1hbmdsZWROYW1lRm9yVHlwZShBU1Q6OlVu
bmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgbWFuZ2xlZE5hbWVGb3JU
eXBlKEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSBt
YW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKEFTVDo6RW51bWVyYXRpb25NZW1iZXImKTsK
LSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVF
bGVtZW50KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpOwotCi0gICAgTWFuZ2xlZFR5cGVOYW1lIGdl
bmVyYXRlTmV4dFR5cGVOYW1lKCkgeyByZXR1cm4geyBtX3R5cGVDb3VudCsrIH07IH0KLSAgICBN
YW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5h
bWUoKSB7IHJldHVybiB7IG1fc3RydWN0dXJlRWxlbWVudENvdW50KysgfTsgfQotCi1wcml2YXRl
OgotICAgIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VHlwZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVz
c2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotCi0gICAgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSBnZW5lcmF0ZU5leHRF
bnVtZXJhdGlvbk1lbWJlck5hbWUoKSB7IHJldHVybiB7IG1fZW51bWVyYXRpb25NZW1iZXJDb3Vu
dCsrIH07IH0KLQotICAgIHZvaWQgZW1pdE5hbWVkVHlwZURlZmluaXRpb24oU3RyaW5nQnVpbGRl
ciYsIEFTVDo6TmFtZWRUeXBlJiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpV
bm5hbWVkVHlwZT4+JiwgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBlbWl0dGVkTmFtZWRUeXBl
cywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgIHZv
aWQgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpVbm5hbWVk
VHlwZSYsIE1hbmdsZWRUeXBlTmFtZSwgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBlbWl0dGVk
TmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVkVHlwZXMp
OwotICAgIHZvaWQgZW1pdE1ldGFsVHlwZURlY2xhcmF0aW9ucyhTdHJpbmdCdWlsZGVyJik7Ci0g
ICAgdm9pZCBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoU3RyaW5nQnVpbGRlciYpOwotCi0gICAg
dm9pZCBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShBU1Q6OlVubmFtZWRUeXBlJik7Ci0KLSAgICBQ
cm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgSGFzaE1hcDxVbm5hbWVkVHlwZUtleSwgTWFuZ2xlZFR5
cGVOYW1lPiBtX3VubmFtZWRUeXBlTWFwcGluZzsKLSAgICBIYXNoTWFwPEFTVDo6TmFtZWRUeXBl
KiwgTWFuZ2xlZFR5cGVOYW1lPiBtX25hbWVkVHlwZU1hcHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6
Ok5hbWVkVHlwZSosIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5
cGU+Pj4gbV9kZXBlbmRlbmN5R3JhcGg7Ci0gICAgSGFzaE1hcDxBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyKiwgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZT4gbV9lbnVtZXJhdGlvbk1lbWJlck1h
cHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqLCBNYW5nbGVkU3RydWN0
dXJlRWxlbWVudE5hbWU+IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmc7Ci0gICAgdW5zaWduZWQg
bV90eXBlQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9lbnVtZXJhdGlvbk1lbWJlckNvdW50
IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fc3RydWN0dXJlRWxlbWVudENvdW50IHsgMCB9OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xW
ZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGFkMmQ5ZDdmZmZmYzM0ZWMzNjRmNjEyNTc0
MjYyNmMwODU3NzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4
QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xWZXJ0ZXhC
dWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0
YWwgewotCi11bnNpZ25lZCBjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleCh1bnNpZ25lZCBpbmRl
eCkKLXsKLSAgICAvLyBSZXNlcnZlIHRoZSBmaXJzdCBmZXcgTVRMQnVmZmVyIHNsb3RzIGZvciBh
cmd1bWVudCBidWZmZXJzIGZvciBHUFVCaW5kR3JvdXBzLgotICAgIHJldHVybiBpbmRleCArIDg7
Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1NGQwZjM1YmMyMWE3MDZhNjcyNmRkOTEwOTRm
NDJkYmU4NzU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1
ZmZlckluZGV4Q2FsY3VsYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRh
bCB7Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KHVuc2lnbmVkKTsKLQot
fQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwNGZkMWRmZDRkZWU5ODFmZjcyNjZm
YTdjZDY4NDMyY2IxNGExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBtX291dC5w
cmludGxuKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlVHlw
ZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0ubmF0aXZlVHlwZURlY2xh
cmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygp
LnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
KCkuc2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAg
ICAgICB2aXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3Jh
bS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJcblxuIik7
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlv
bnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLnNpemUo
KSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBpZiAo
cHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291dC5w
cmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS5mdW5j
dGlvbkRlZmluaXRpb25zKClbaV0pOwotCi0gICAgbV9vdXQucHJpbnRsbigpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAg
QmFzZTo6dmlzaXQodW5uYW1lZFR5cGUpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBCYXNlOjp2aXNpdChuYW1lZFR5cGUpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmlu
aXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQoInR5cGVkZWYgIiwgdHlwZURlZmluaXRpb24ubmFt
ZSgpLCAiID0gIik7Ci0gICAgdmlzaXQodHlwZURlZmluaXRpb24udHlwZSgpKTsKLSAgICBtX291
dC5wcmludGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnRsbiht
X2luZGVudCwgInN0cnVjdCAiLCBzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUoKSwgIiB7Iik7Ci0g
ICAgewotICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgZm9yIChh
dXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVt
ZW50cygpKQotICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudCk7Ci0gICAgfQotICAg
IG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7Ci0gICAgbV9vdXQucHJpbnRsbigpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVF
bGVtZW50KQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICB2aXNpdChzdHJ1Y3R1
cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiAiLCBzdHJ1Y3R1cmVFbGVtZW50
Lm5hbWUoKSk7Ci0gICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAg
dmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigi
OyIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBtX291dC5wcmludChtX2luZGVudCwg
ImVudW0gIik7Ci0gICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAg
bV9vdXQucHJpbnQoIiB7Iik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVtcElu
ZGVudCgpOwotICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBl
bnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJl
cnMoKSkgewotICAgICAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICAgICAgbV9vdXQucHJp
bnQoIiwgIik7Ci0gICAgICAgICAgICBtX291dC5wcmludGxuKCk7Ci0gICAgICAgICAgICBtX291
dC5wcmludChtX2luZGVudCk7Ci0gICAgICAgICAgICB2aXNpdChlbnVtZXJhdGlvbk1lbWJlcik7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX291dC5wcmludGxuKCk7Ci0gICAgbV9vdXQucHJp
bnRsbihtX2luZGVudCwgIn0iKTsKLSAgICBtX291dC5wcmludGxuKCk7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikK
LXsKLSAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJlci5uYW1lKCksICIgPSAiLCBlbnVt
ZXJhdGlvbk1lbWJlci52YWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgbV9vdXQucHJp
bnQobV9pbmRlbnQpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgIHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bi5ibG9jaygpKTsKLSAgICBtX291dC5wcmludCgiXG5cbiIpOwotfQotCi12b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICBtX291dC5wcmlu
dCgibmF0aXZlICIpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiY+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLSAgICBtX291dC5wcmludGxuKCk7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1
bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgdmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi5hdHRy
aWJ1dGVCbG9jaygpKTsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlw
ZSgpKQotICAgICAgICBtX291dC5wcmludChBU1Q6OnRvU3RyaW5nKCpmdW5jdGlvbkRlY2xhcmF0
aW9uLmVudHJ5UG9pbnRUeXBlKCkpLCAiICIpOwotICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiICIsIGZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpLCAiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgcGFyYW1l
dGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpIHsKLSAgICAgICAgaWYgKG9u
Y2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgb25jZSA9IHRydWU7
Ci0gICAgICAgIHZpc2l0KHBhcmFtZXRlcik7Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCIpIik7
Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgdmlzaXQo
KmZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiAiKTsK
LX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJuYXRp
dmUgdHlwZWRlZiAiKTsKLSAgICBtX291dC5wcmludChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXpl
KCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIjwiKTsKLSAgICAgICAgYm9vbCBvbmNlID0gZmFs
c2U7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnR5cGVBcmd1bWVudHMoKSkgewotICAgICAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAg
ICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9vdXQucHJp
bnQoIj4iKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAgIG1f
b3V0LnByaW50KHR5cGVSZWZlcmVuY2UubmFtZSgpKTsKLQotICAgIGlmICh0eXBlUmVmZXJlbmNl
LnR5cGVBcmd1bWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0g
ICAgICAgIG1fb3V0LnByaW50KCI8Iik7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50
IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChvbmNl
KQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICAgICAgb25jZSA9
IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOwotICAgICAgICB9Ci0gICAg
ICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRlclR5cGUpKTsKLSAgICBtX291dC5wcmludCgiKiIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFy
cmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5j
ZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLSAgICBtX291dC5wcmludCgiW10iKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17Ci0g
ICAgdmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIlsiLCBhcnJheVR5
cGUubnVtRWxlbWVudHMoKSwgIl0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQodHlwZUFyZ3Vt
ZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVm
ZXJlbmNlVHlwZSkKLXsKLSAgICBtX291dC5wcmludChBU1Q6OnRvU3RyaW5nKHJlZmVyZW5jZVR5
cGUuYWRkcmVzc1NwYWNlKCkpLCAiICIpOwotICAgIHZpc2l0KHJlZmVyZW5jZVR5cGUuZWxlbWVu
dFR5cGUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlNlbWFudGljJiBzZW1h
bnRpYykKLXsKLSAgICBtX291dC5wcmludCgiIDogIik7Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7Ci0g
ICAgICAgIHZpc2l0KGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VT
ZW1hbnRpYyYgcmVzb3VyY2VTZW1hbnRpYykgewotICAgICAgICB2aXNpdChyZXNvdXJjZVNlbWFu
dGljKTsKLSAgICB9LCBbJl0oQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYykgewotICAgICAgICB2aXNpdChzcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlN0YWdlSW5PdXRTZW1hbnRp
YyYgc3RhZ2VJbk91dFNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KHN0YWdlSW5PdXRTZW1hbnRp
Yyk7Ci0gICAgfSksIHNlbWFudGljKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAgQmFzZTo6dmlz
aXQoY29uc3RhbnRFeHByZXNzaW9uKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
QXR0cmlidXRlQmxvY2smIGF0dHJpYnV0ZUJsb2NrKQotewotICAgIGlmIChhdHRyaWJ1dGVCbG9j
ay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fb3V0LnByaW50KCJbIik7Ci0g
ICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGF0dHJpYnV0ZUJsb2NrKQotICAgICAg
ICB2aXNpdChmdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgbV9vdXQucHJpbnQoIl0gIik7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFu
dGljKQotewotICAgIG1fb3V0LnByaW50KGJ1aWx0SW5TZW1hbnRpYy50b1N0cmluZygpKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VT
ZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludChyZXNvdXJjZVNlbWFudGljLnRvU3RyaW5nKCkp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmKQotewotICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcyB3aGVuIHdlIGltcGxlbWVu
dCBpdC4KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGlj
JiBzdGFnZUluT3V0U2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQoImF0dHJpYnV0ZSgiLCBz
dGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSwgIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnBy
aW50KGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQotewot
ICAgIG1fb3V0LnByaW50KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewot
ICAgIG1fb3V0LnByaW50KGZsb2F0TGl0ZXJhbC52YWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKQotewotICAgIGlm
IChib29sZWFuTGl0ZXJhbC52YWx1ZSgpKQotICAgICAgICBtX291dC5wcmludCgidHJ1ZSIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQoImZhbHNlIik7Ci19Ci0KLXZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpCi17Ci19Ci0KLXZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikKLXsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpCi17Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KGVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5sZWZ0KCksICIuIiwgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJpZ2h0KCkpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rpb25B
dHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7
Ci0gICAgICAgIHZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgfSksIGZ1
bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzQXR0cmlidXRlKQotewotICAgIG1fb3V0
LnByaW50KCJudW10aHJlYWRzKCIsIG51bVRocmVhZHNBdHRyaWJ1dGUud2lkdGgoKSwgIiwgIiwg
bnVtVGhyZWFkc0F0dHJpYnV0ZS5oZWlnaHQoKSwgIiwgIiwgbnVtVGhyZWFkc0F0dHJpYnV0ZS5k
ZXB0aCgpLCAiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxv
Y2spCi17Ci0gICAgbV9vdXQucHJpbnRsbigieyIpOwotICAgIHsKLSAgICAgICAgYXV0byBpbmRl
bnQgPSBidW1wSW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2su
c3RhdGVtZW50cygpKSB7Ci0gICAgICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7Ci0gICAg
ICAgICAgICB2aXNpdChzdGF0ZW1lbnQpOwotICAgICAgICAgICAgbV9vdXQucHJpbnRsbigiOyIp
OwotICAgICAgICB9Ci0gICAgfQotICAgIG1fb3V0LnByaW50KG1faW5kZW50LCAifSIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKLXsKLSAg
ICBCYXNlOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpTdGF0ZW1lbnRMaXN0JiBzdGF0ZW1lbnRMaXN0KQotewotICAgIGJvb2wgb25jZSA9IGZhbHNl
OwotICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogc3RhdGVtZW50TGlzdC5zdGF0ZW1lbnRzKCkp
IHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgiO1xuIiwgbV9p
bmRlbnQpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQoc3RhdGVtZW50KTsK
LSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJyZWFrJikKLXsKLSAgICBt
X291dC5wcmludCgiYnJlYWsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q29u
dGludWUmKQotewotICAgIG1fb3V0LnByaW50KCJjb250aW51ZSIpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBtX291dC5wcmlu
dCgid2hpbGUgKCIpOwotICAgIHZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBt
X291dC5wcmludCgiKSIpOwotICAgIHZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAg
bV9vdXQucHJpbnQoImRvICIpOwotICAgIHZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAg
bV9vdXQucHJpbnQoIiB3aGlsZSgiKTsKLSAgICB2aXNpdChkb1doaWxlTG9vcC5jb25kaXRpb25h
bCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIG1fb3V0LnByaW50KCJmb3IgKCIpOwotICAg
IHZpc2l0KGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIjsgIik7
Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0gICAgICAgIHZpc2l0KCpmb3JMb29wLmNv
bmRpdGlvbigpKTsKLSAgICBtX291dC5wcmludCgiOyAiKTsKLSAgICBpZiAoZm9yTG9vcC5pbmNy
ZW1lbnQoKSkKLSAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5jcmVtZW50KCkpOwotICAgIG1fb3V0
LnByaW50KCIpICIpOwotICAgIHZpc2l0KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBib29sIHNr
aXBQYXJlbnMgPSBpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8
fCBpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpJ
bnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8fCBpczxBU1Q6OkVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpDb21tYUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+
KGV4cHJlc3Npb24pOwotCi0gICAgaWYgKGF1dG8qIGFubm90YXRpb24gPSBleHByZXNzaW9uLm1h
eWJlVHlwZUFubm90YXRpb24oKSkgewotICAgICAgICBpZiAoYXV0byBhZGRyZXNzU3BhY2UgPSBh
bm5vdGF0aW9uLT5sZWZ0QWRkcmVzc1NwYWNlKCkpCi0gICAgICAgICAgICBtX291dC5wcmludCgi
PExWOiIsIEFTVDo6dG9TdHJpbmcoKmFkZHJlc3NTcGFjZSkpOwotICAgICAgICBlbHNlIGlmIChh
bm5vdGF0aW9uLT5pc0Fic3RyYWN0TGVmdFZhbHVlKCkpCi0gICAgICAgICAgICBtX291dC5wcmlu
dCgiPEFMViIpOwotICAgICAgICBlbHNlIGlmIChhbm5vdGF0aW9uLT5pc1JpZ2h0VmFsdWUoKSkK
LSAgICAgICAgICAgIG1fb3V0LnByaW50KCI8UlYiKTsKLQotICAgICAgICBtX291dC5wcmludCgi
LCAiLCBleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLnRvU3RyaW5nKCksICI+Iik7Ci0KLSAgICAg
ICAgc2tpcFBhcmVucyA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmICghc2tpcFBhcmVucykKLSAg
ICAgICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKLSAg
ICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0g
ICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihkb3RF
eHByZXNzaW9uKSk7Ci0gICAgbV9vdXQucHJpbnQoIi4iLCBkb3RFeHByZXNzaW9uLmZpZWxkTmFt
ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIHZpc2l0KGdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9vdXQucHJpbnQoIj0+IiwgZ2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKS5uYW1lKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKLXsKLSAgICB2aXNp
dChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGluZGV4RXhwcmVz
c2lvbikpOwotICAgIG1fb3V0LnByaW50KCJbIik7Ci0gICAgdmlzaXQoaW5kZXhFeHByZXNzaW9u
LmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiXSIpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4cHJlc3Npb24p
Ci17Ci0gICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsK
LSAgICBtX291dC5wcmludCgiZmFsbHRocm91Z2giKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIG1fb3V0LnByaW50KCJp
ZiAoIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQu
cHJpbnQoIikgIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICBpZiAoaWZT
dGF0ZW1lbnQuZWxzZUJvZHkoKSkgewotICAgICAgICBtX291dC5wcmludCgiIGVsc2UgIik7Ci0g
ICAgICAgIHZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAgIG1f
b3V0LnByaW50KCJyZXR1cm4iKTsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsK
LSAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICAgICAgdmlzaXQoKnJldHVyblN0YXRlbWVu
dC52YWx1ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN3aXRj
aFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIG1fb3V0LnByaW50KCJzd2l0Y2gg
KCIpOwotICAgIHZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICBtX291dC5wcmlu
dGxuKCIpIHsiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN3aXRj
aENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAgICBpZiAob25j
ZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50bG4oKTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0g
ICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICAgICAgdmlzaXQoc3dpdGNoQ2FzZSk7
Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCJcbiIsIG1faW5kZW50LCAifSIpOwotCi19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCi17Ci0gICAg
aWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX291dC5wcmludCgiY2FzZSAiKTsK
LSAgICAgICAgdmlzaXQoKnN3aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAgIG1fb3V0LnByaW50
KCI6ICIpOwotICAgIH0gZWxzZQotICAgICAgICBtX291dC5wcmludCgiZGVmYXVsdDogIik7Ci0g
ICAgdmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0
KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50KQotewotICAgIEJhc2U6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
biYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi50
eXBlKCkpIHsKLSAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAg
ICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICB9Ci0KLSAgICBpZiAodmFyaWFibGVEZWNsYXJh
dGlvbi5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICBtX291dC5wcmludCgiJCIsIFJhd1BvaW50
ZXIoJnZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICBlbHNlCi0gICAgICAgIG1fb3V0LnByaW50
KHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKTsKLQotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0
aW9uLnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFu
dGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsKLSAg
ICAgICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJh
dGlvbi5pbml0aWFsaXplcigpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICB2
aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAi
KTsKLSAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewot
ICAgIG1fb3V0LnByaW50KGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgIigiKTsKLSAgICBib29sIG9u
Y2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJn
dW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgi
LCAiKTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0KGFyZ3VtZW50KTsKLSAg
ICB9Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQo
IigiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24g
OiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAg
ICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICB2aXNp
dChleHByZXNzaW9uKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4
cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIioiKTsKLSAgICB2aXNpdChkZXJlZmVyZW5j
ZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50
KCIoIik7Ci0gICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBzd2l0Y2gg
KGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewotICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVz
c2lvbjo6VHlwZTo6QW5kOgotICAgICAgICBtX291dC5wcmludCgiICYmICIpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6Ok9yOgotICAgICAg
ICBtX291dC5wcmludCgiIHx8ICIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgdmlzaXQo
bG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxO
b3RFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIhKCIpOwotICAgIHZpc2l0KGxvZ2lj
YWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYg
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiQCIpOwot
ICAgIHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQ
b2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiJiIpOwotICAgIHZpc2l0KG1h
a2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24pCi17Ci0gICAgYXV0byBvbGRWYXJpYWJsZSA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24ub2xkVmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICBhdXRvIG5ld1ZhcmlhYmxlID0gcmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYXJpYWJsZVJlZmVyZW5jZSgpOwotCi0gICAgbV9vdXQu
cHJpbnQoIlJNVygiKTsKLSAgICB2aXNpdChvbGRWYXJpYWJsZS5nZXQoKSk7Ci0gICAgbV9vdXQu
cHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZh
bHVlKCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0gICAgdmlzaXQobmV3VmFyaWFibGUu
Z2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiLCAi
KTsKLQotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwot
ICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChuZXdWYXJpYWJsZS5nZXQoKSk7Ci0g
ICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNz
aW9uKQotewotICAgIHZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBt
X291dC5wcmludCgiID8gIik7Ci0gICAgdmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJl
c3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA6ICIpOwotICAgIHZpc2l0KHRlcm5hcnlFeHBy
ZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgaWYgKHZhcmlh
YmxlUmVmZXJlbmNlLm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIG1fb3V0LnByaW50KCIkIiwg
UmF3UG9pbnRlcih2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX291dC5wcmludCh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWEwMjczNmZjMDJiZDMxNDBmZjM4OGY3ZDUwMmI4YmNlMmM0YmI3Ny4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1jbGFzcyBBU1REdW1wZXIgOiBWaXNpdG9yIHsKLSAgICB1c2luZyBCYXNlID0gVmlzaXRvcjsK
LXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlkZTsKLQotICAgIFN0cmlu
ZyB0b1N0cmluZygpIHsgcmV0dXJuIG1fb3V0LnRvU3RyaW5nKCk7IH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpVbm5hbWVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYW1l
ZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJy
YXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlw
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U2Vt
YW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxp
dGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFz
c2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotCi1w
cml2YXRlOgotICAgIHN0cnVjdCBJbmRlbnQgewotICAgICAgICBJbmRlbnQoQVNURHVtcGVyJiBk
dW1wZXIpCi0gICAgICAgICAgICA6IG1fc2NvcGUoZHVtcGVyLm1faW5kZW50LCBkdW1wZXIubV9p
bmRlbnQgKyAiICAgIikKLSAgICAgICAgeyB9Ci0gICAgICAgIFNldEZvclNjb3BlPFN0cmluZz4g
bV9zY29wZTsKLSAgICB9OwotCi0gICAgSW5kZW50IGJ1bXBJbmRlbnQoKSB7IHJldHVybiBJbmRl
bnQoKnRoaXMpOyB9Ci0KLSAgICBmcmllbmQgc3RydWN0IEluZGVudDsKLQotICAgIFN0cmluZ1By
aW50U3RyZWFtIG1fb3V0OwotICAgIFN0cmluZyBtX2luZGVudDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIGR1bXBBU1ROb2RlKFByaW50U3RyZWFtJiBv
dXQsIFQmIHZhbHVlKQotewotICAgIEFTVER1bXBlciBkdW1wZXI7Ci0gICAgZHVtcGVyLnZpc2l0
KHZhbHVlKTsKLSAgICBvdXQucHJpbnQoZHVtcGVyLnRvU3RyaW5nKCkpOwotfQotTUFLRV9QUklO
VF9BREFQVE9SKEV4cHJlc3Npb25EdW1wZXIsIEFTVDo6RXhwcmVzc2lvbiYsIGR1bXBBU1ROb2Rl
KTsKLU1BS0VfUFJJTlRfQURBUFRPUihTdGF0ZW1lbnREdW1wZXIsIEFTVDo6U3RhdGVtZW50Jiwg
ZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFByb2dyYW1EdW1wZXIsIFByb2dyYW0m
LCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoU3RydWN0dXJlRGVmaW5pdGlvbkR1
bXBlciwgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklO
VF9BREFQVE9SKEZ1bmN0aW9uRGVmaW5pdGlvbkR1bXBlciwgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbkR1bXBlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiwgZHVtcEFTVE5v
ZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFR5cGVEdW1wZXIsIEFTVDo6VW5uYW1lZFR5cGUmLCBk
dW1wQVNUTm9kZSk7Ci0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBkdW1wQVNUKFByb2dy
YW0mIHByb2dyYW0pCi17Ci0gICAgZGF0YUxvZ0xuKFByb2dyYW1EdW1wZXIocHJvZ3JhbSkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhiNzE3ODk1NDQ4OTkwZGM4YWM2ODc3YmMxMDRkOWRiYThlNjkxNDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0j
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotaW1wb3J0IHJl
Ci0KLXJlZ3VsYXJFeHByZXNzaW9uID0gcmUuY29tcGlsZShyIi9cKiBGdW5jdGlvbnMgbmFtZWQg
KC4qKSBcKi8iKQotCi1pbmZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAiciIpCi1jb250ZW50cyA9
IGluZmlsZS5yZWFkKCkKLWluZmlsZS5jbG9zZSgpCi0KLW91dGZpbGUgPSBvcGVuKHN5cy5hcmd2
WzJdLCAidyIpCi1vdXRmaWxlLndyaXRlKCIiIgotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotSGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xvY2F0aW9uPiBjb21wdXRl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKQotewotICAgIEhhc2hNYXA8U3RyaW5nLCBTdWJz
dHJpbmdMb2NhdGlvbj4gcmVzdWx0OwotIiIiKQotCi0jIEZJWE1FOiBDb21wdXRlIFN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9uTWFwIGF0IGJ1aWxkLXRpbWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5OTQ0OAotCi1wcmV2aW91cyA9IDAKLXByZXZpb3VzTmFtZSA9ICIi
Ci1ib3VuZGFyeSA9IDAKLWZvciBtYXRjaCBpbiByZWd1bGFyRXhwcmVzc2lvbi5maW5kaXRlcihj
b250ZW50cyk6Ci0gICAgaWYgcHJldmlvdXMgPT0gMDoKLSAgICAgICAgcHJldmlvdXMgPSBtYXRj
aC5zdGFydCgpCi0gICAgICAgIGJvdW5kYXJ5ID0gcHJldmlvdXMKLSAgICAgICAgcHJldmlvdXNO
YW1lID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgY29udGludWUKLSAgICBvdXRmaWxlLndyaXRl
KCIgICAgcmVzdWx0LmFkZChcIiIgKyBwcmV2aW91c05hbWUgKyAiXCJfc3RyLCBTdWJzdHJpbmdM
b2NhdGlvbiB7ICIgKyBzdHIocHJldmlvdXMpICsgIiwgIiArIHN0cihtYXRjaC5zdGFydCgpKSAr
ICIgfSk7XG4iKQotICAgIHByZXZpb3VzID0gbWF0Y2guc3RhcnQoKQotICAgIHByZXZpb3VzTmFt
ZSA9IG1hdGNoLmdyb3VwKDEpCi1vdXRmaWxlLndyaXRlKCIgICAgcmVzdWx0LmFkZChcIiIgKyBw
cmV2aW91c05hbWUgKyAiXCJfc3RyLCBTdWJzdHJpbmdMb2NhdGlvbiB7ICIgKyBzdHIocHJldmlv
dXMpICsgIiwgIiArIHN0cihsZW4oY29udGVudHMpKSArICIgfSk7XG4iKQotb3V0ZmlsZS53cml0
ZSgiIiIKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi11bnNpZ25lZCBmaXJzdEZ1bmN0aW9uT2Zm
c2V0SW5TdGFuZGFyZExpYnJhcnkoKQotewotIiIiKQotCi1vdXRmaWxlLndyaXRlKCIgICAgcmV0
dXJuICIgKyBzdHIoYm91bmRhcnkpICsgIjtcbiIpCi0KLW91dGZpbGUud3JpdGUoIiIiCi19Ci0K
LX0KLQotfQotCi0jZW5kaWYKLSIiIikKLW91dGZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5
YmVkMWVjZWQ0NmRiMWQ3ZmE3YmZiNGUxYzNlMzQ4M2MzMTczYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgRHVwbGljYXRlRnVuY3Rpb25LZXkgewotcHVibGljOgotICAg
IER1cGxpY2F0ZUZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0OwotICAgIER1cGxpY2F0ZUZ1bmN0aW9u
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICB7Ci0gICAgICAgIG1fZnVu
Y3Rpb24gPSBiaXR3aXNlX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSk7Ci0gICAgfQotCi0gICAgRHVwbGljYXRlRnVuY3Rpb25LZXkoY29u
c3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX2Z1bmN0
aW9uKCZmdW5jdGlvbikKLSAgICB7IH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gIW1fZnVuY3Rpb247IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbiA9PSBiaXR3aXNlX2Nhc3Q8QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KLQotICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaGFzaCA9IEludEhhc2g8
c2l6ZV90Pjo6aGFzaChtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAg
aGFzaCBePSBtX2Z1bmN0aW9uLT5uYW1lKCkuaGFzaCgpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+cGFyYW1ldGVycygpW2ldLT50eXBlKCktPmhhc2goKTsK
LQotICAgICAgICBpZiAobV9mdW5jdGlvbi0+aXNDYXN0KCkpCi0gICAgICAgICAgICBoYXNoIF49
IG1fZnVuY3Rpb24tPnR5cGUoKS5oYXNoKCk7Ci0KLSAgICAgICAgcmV0dXJuIGhhc2g7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6
ZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPm5hbWUoKSAhPSBvdGhl
ci5tX2Z1bmN0aW9uLT5uYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKG1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkKLSAgICAgICAgICAgICYmIG90aGVyLm1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9
IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkKLSAgICAgICAgICAgICYmIG1fZnVuY3Rp
b24tPm5hbWVTcGFjZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIEFTU0VSVChtX2Z1bmN0aW9uLT5pc0Nhc3Qo
KSA9PSBvdGhlci5tX2Z1bmN0aW9uLT5pc0Nhc3QoKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIGlmICghbWF0Y2hlcygqbV9mdW5jdGlvbi0+cGFyYW1ldGVycygpW2ldLT50eXBlKCks
ICpvdGhlci5tX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX2Z1bmN0aW9u
LT5pc0Nhc3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChtYXRj
aGVzKG1fZnVuY3Rpb24tPnR5cGUoKSwgb3RoZXIubV9mdW5jdGlvbi0+dHlwZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IER1cGxp
Y2F0ZUZ1bmN0aW9uS2V5JiBrZXkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrZXku
aGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRHVw
bGljYXRlRnVuY3Rpb25LZXkmIGEsIGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBiKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsK
LSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1YmxpYyBXVEY6OlNpbXBsZUNsYXNzSGFz
aFRyYWl0czxEdXBsaWNhdGVGdW5jdGlvbktleT4gewotICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBib29sIGlz
RW1wdHlWYWx1ZShjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYga2V5KSB7IHJldHVybiBrZXku
aXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAgIGNvbnN0IEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxwdHIgfTsKLX07Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25zdCBQcm9ncmFtJiBwcm9n
cmFtKQotewotICAgIGF1dG8gcGFzc2VzU3RhdGljQ2hlY2tzID0gWyZdIChjb25zdCBBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKSAtPiBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gewot
ICAgICAgICBpZiAoZnVuY3Rpb24ubmFtZSgpID09ICJvcGVyYXRvcj09IgotICAgICAgICAgICAg
JiYgZnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyCi0gICAgICAgICAgICAmJiBpczxB
U1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmPigq
ZnVuY3Rpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKQotICAgICAgICAgICAgJiYgaXM8QVNU
OjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBBU1Q6OlVubmFtZWRUeXBlJj4oKmZ1
bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAgICAgICAgICAgICYmIG1hdGNoZXMo
KmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLCAqZnVuY3Rpb24ucGFyYW1ldGVycygp
WzFdLT50eXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJD
YW5ub3QgZGVmaW5lIG9wZXJhdG9yPT0gb24gdHdvIHJlZmVyZW5jZSB0eXBlcy4iKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGZ1bmN0aW9uLmlzQ2FzdCgpICYmIGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IGZ1bmN0aW9uLnR5cGUo
KS51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKSAmJiBpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICAgICAgICAgICAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlwZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBkZWZpbmUgYSBjYXN0IG9uIGFuIG9wYXF1
ZSB0eXBlLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7
IH07Ci0gICAgfTsKLQotICAgIEhhc2hTZXQ8RHVwbGljYXRlRnVuY3Rpb25LZXksIER1cGxpY2F0
ZUZ1bmN0aW9uS2V5OjpIYXNoLCBEdXBsaWNhdGVGdW5jdGlvbktleTo6VHJhaXRzPiBmdW5jdGlv
bnM7Ci0KLSAgICBhdXRvIGFkZCA9IFsmXSAoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
JiBmdW5jdGlvbikgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHsKLSAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBmdW5jdGlvbnMuYWRkKER1cGxpY2F0ZUZ1bmN0aW9uS2V5IHsgZnVuY3Rpb24gfSk7
Ci0gICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkZvdW5kIGR1cGxpY2F0ZSBmdW5jdGlvbiIpKTsKLSAgICAg
ICAgcmV0dXJuIHBhc3Nlc1N0YXRpY0NoZWNrcyhmdW5jdGlvbik7Ci0gICAgfTsKLQotICAgIGZv
ciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25z
KCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBhZGQoZnVuY3Rpb25EZWZpbml0aW9uLmdl
dCgpKTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gYWRkUmVz
dWx0OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6
IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewotICAgICAgICAvLyBXZSBn
ZW5lcmF0ZSBkdXBsaWNhdGUgbmF0aXZlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiBzeW50aGVz
aXplIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgcmlnaHQ/Ci0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1ODAKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gU2luY2Ugd2UgZG8gdGhhdCwgd2UganVzdCBuZWVkIHRvIG1h
a2Ugc3VyZSBubyBuYXRpdmUgZnVuY3Rpb24gaXMgYSBkdXBsaWNhdGUKLSAgICAgICAgLy8gb2Yg
YSB1c2VyLWRlZmluZWQgZnVuY3Rpb24uCi0KLSAgICAgICAgLy8gRklYTUU6IEFkZCBiYWNrIHRo
aXMgYXNzZXJ0IG9uY2Ugd2UgYmVnaW4gdG8gYXV0byBnZW5lcmF0ZSB0aGVzZSBpbiB0aGUgY29t
cGlsZXIKLSAgICAgICAgLy8gaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBpbiB0aGUgc3RkbGliCi0g
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg4NjEK
LSAgICAgICAgLy8gQVNTRVJUKHBhc3Nlc1N0YXRpY0NoZWNrcyhuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLmdldCgpKSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbnMuY29udGFpbnMoRHVwbGljYXRl
RnVuY3Rpb25LZXkgeyBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmdldCgpIH0pKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmF0aXZlIGZ1bmN0
aW9uLiIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGMwMDdkMzJlNTJlNmE0ZTI3MGIxOThkMjM1OTU3MjY5MzhiYjc2
MGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25zdCBQcm9ncmFtJik7Ci0K
LX0KLQotfQotCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNl
VHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a1JlZmVyZW5jZVR5cGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzMTU0
NzM5NDg2MDQxNmM1YmU3MjJkMjlkNjVlM2I0ZWRjNTU0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TENoZWNrUmVmZXJlbmNlVHlwZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUmVmZXJlbmNlVHlw
ZUNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgUmVmZXJlbmNl
VHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UmVmZXJlbmNlVHlwZUNoZWNr
ZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNr
VHlwZShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBj
b25zdCBjaGFyKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIGF1dG8mIHVuaWZpZWRUeXBlID0gdHlw
ZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4odW5pZmll
ZFR5cGUpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcihlcnJvciwgY29kZUxvY2F0aW9u
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8QVNU
OjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBlKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBjaGVja1R5cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpLCBy
ZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpLCAicmVmZXJlbmNlIHR5cGUgY2Fubm90IGhhdmUg
YW5vdGhlciByZWZlcmVuY2UgdHlwZSBhcyBhbiBpbm5lciB0eXBlIik7Ci0gICAgfQotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgY2hlY2tUeXBlKGFycmF5VHlwZS50eXBlKCksIGFycmF5VHlwZS5jb2RlTG9jYXRpb24o
KSwgImFycmF5IHR5cGUgY2Fubm90IGhhdmUgYSByZWZlcmVuY2UgdHlwZSBhcyBpdHMgaW5uZXIg
dHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBz
dHJ1Y3R1cmVFbGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tUeXBlKHN0cnVj
dHVyZUVsZW1lbnQudHlwZSgpLCBzdHJ1Y3R1cmVFbGVtZW50LmNvZGVMb2NhdGlvbigpLCAiY2Fu
bm90IGhhdmUgYSBzdHJ1Y3R1cmUgZmllbGQgd2hpY2ggaXMgYSByZWZlcmVuY2UgdHlwZSIpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICB9Ci19
OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZlcmVuY2VUeXBlcyhQcm9ncmFtJiBw
cm9ncmFtKQotewotICAgIC8vIFRoaXMgcGFzcyBkb2VzIHRoZXNlIHRoaW5nczoKLSAgICAvLyAx
LiBEaXNhbGxvdyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFyZSByZWZlcmVuY2VzLiBU
aGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCi0gICAgLy8gZmlndXJlIG91dCBob3cgdG8g
ZGVmYXVsdCBpbml0aWFsaXplIHN1Y2ggYSBzdHJ1Y3QuIFdlIGNvdWxkIHJlbGF4IHRoaXMgaW4g
dGhlIGZ1dHVyZSBpZiB3ZQotICAgIC8vIGRpZCBhbiBhbmFseXNpcyBvbiB3aGljaCBzdHJ1Y3Rz
IGNvbnRhaW4gcmVmZXJlbmNlIGZpZWxkcywgYW5kIGVuc3VyZSBzdWNoIHN0cnVjdCB2YXJpYWJs
ZXMKLSAgICAvLyBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMgd291bGQgYWxzbyByZXF1
aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMgd2hpY2gKLSAgICAvLyBp
bml0aWFsaXplIGVhY2ggZmllbGQuCi0gICAgLy8gMi4gV2UgYWxzbyBkbyB0aGUgc2FtZSBmb3Ig
YXJyYXlzLgotICAgIC8vIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUgb25lIGxldmVsIGRlZXAu
IFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2VzIHRvCi0gICAgLy8gcmVm
ZXJlbmNlcywgZXRjLiBUaGlzIGlzIHRvIHN1cHBvcnQgbG9naWNhbCBtb2RlLgotICAgIFJlZmVy
ZW5jZVR5cGVDaGVja2VyIHJlZmVyZW5jZVR5cGVDaGVja2VyOwotICAgIHJlZmVyZW5jZVR5cGVD
aGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICByZXR1cm4gcmVmZXJlbmNl
VHlwZUNoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tS
ZWZlcmVuY2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja1JlZmVyZW5jZVR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1
MzYyYTgwNDQyM2IyYTBmZTI4NTNjMzczMjJlMjYxZTcxODE3NzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVj
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVmZXJlbmNlVHlwZXMo
UHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hl
Y2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjYmNlNmMwMDM4N2VjMWNjOGViYWU1NDQ3N2ViOTYyMzkzOWNkYmIyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCIKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9u
RGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlciBmaW5hbCA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIo
KSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5UZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIoKSA9
IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBjb250YWluc1RleHR1
cmVPclNhbXBsZXIoQVNUOjpVbm5hbWVkVHlwZSYpOwotfTsKLQotY2xhc3MgU2VhcmNoZXIgOiBw
dWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgU2VhcmNoZXIoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB2aXJ0dWFsIH5TZWFyY2hlcigpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgZm91bmQoKSBjb25z
dCB7IHJldHVybiBtX2ZvdW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0gICAgYm9vbCBtX2ZvdW5kIHsgZmFsc2UgfTsKLX07
Ci0KLXZvaWQgU2VhcmNoZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09w
YXF1ZVR5cGUoKSkKLSAgICAgICAgbV9mb3VuZCA9IHRydWU7Ci19Ci0KLWJvb2wgVGV4dHVyZVJl
ZmVyZW5jZXNDaGVja2VyOjpjb250YWluc1RleHR1cmVPclNhbXBsZXIoQVNUOjpVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgU2VhcmNoZXIgc2VhcmNoZXI7Ci0gICAgc2VhcmNoZXIu
Y2hlY2tFcnJvckFuZFZpc2l0KHVubmFtZWRUeXBlKTsKLSAgICByZXR1cm4gc2VhcmNoZXIuZm91
bmQoKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6UG9p
bnRlclR5cGUmIHBvaW50ZXJUeXBlKQotewotICAgIFZpc2l0b3I6OnZpc2l0KHBvaW50ZXJUeXBl
KTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChjb250YWlu
c1RleHR1cmVPclNhbXBsZXIocG9pbnRlclR5cGUuZWxlbWVudFR5cGUoKSkpCi0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhIHBvaW50ZXIgdG8gYSB0ZXh0dXJlIG9yIHNhbXBs
ZXIuIiwgcG9pbnRlclR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVy
ZW5jZVR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlSZWZlcmVuY2VUeXBlKTsKLSAg
ICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChjb250YWluc1RleHR1
cmVPclNhbXBsZXIoYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpKQotICAgICAgICBz
ZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYW4gYXJyYXkgcmVmZXJlbmNlIHRvIGEgdGV4dHVy
ZSBvciBzYW1wbGVyLiIsIGFycmF5UmVmZXJlbmNlVHlwZS5jb2RlTG9jYXRpb24oKSkpOwotfQot
Ci12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFy
cmF5VHlwZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUpOwotICAgIGlmIChoYXNF
cnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNvbnRhaW5zVGV4dHVyZU9yU2FtcGxl
cihhcnJheVR5cGUudHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBoYXZl
IGFuIGFycmF5IG9mIHRleHR1cmVzIG9yIHNhbXBsZXJzLiIsIGFycmF5VHlwZS5jb2RlTG9jYXRp
b24oKSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24p
OwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLX0K
LQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlv
bi5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAg
IFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgVGV4dHVyZVJl
ZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKQot
ewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tUZXh0dXJlUmVmZXJlbmNlcyhQcm9n
cmFtJiBwcm9ncmFtKQotewotICAgIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlciB0ZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXI7Ci0gICAgdGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyLmNoZWNrRXJyb3JB
bmRWaXNpdChwcm9ncmFtKTsKLSAgICByZXR1cm4gdGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyLnJl
c3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5j
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0
dXJlUmVmZXJlbmNlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDY5NDk2ZWU5
ZDI5YTBhNTg5NjUzMWRlYWQ1ZjgyZTNlNzU2ZjcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1RleHR1cmVSZWZlcmVuY2VzKFBy
b2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2Vy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhMjdhNmM4YTk4YzNlNWJmNjdm
ZjI5YzIyYWJhODYwODNmMmQ0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXNzaWdubWVudEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xDb21tYUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERv
dEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMu
aCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xJbmRleEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExT
TExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1l
Q29udGV4dC5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZl
T3ZlcmxvYWRJbXBsLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZpbmdUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBPRENoZWNrZXIg
OiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgUE9EQ2hlY2tlcigpID0gZGVmYXVsdDsK
LQotICAgIHZpcnR1YWwgflBPRENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24p
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICghbmF0aXZl
VHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAgICAgICYmICFuYXRpdmVUeXBlRGVj
bGFyYXRpb24uaXNWZWN0b3IoKQotICAgICAgICAgICAgJiYgIW5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5pc01hdHJpeCgpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVzZSBvZiBuYXRpdmUg
dHlwZSBpcyBub3QgYSBQT0QgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4iLCBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgIH0KLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlUeXBlKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIklsbGVnYWwgdXNlIG9mIHBvaW50ZXIgaW4gZW50cnlw
b2ludCBzZW1hbnRpYy4iLCBwb2ludGVyVHlwZS5jb2RlTG9jYXRpb24oKSkpOwotICAgIH0KLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlw
ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbGxlZ2FsIHVzZSBv
ZiBhcnJheSByZWZlcmVuY2UgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4iLCBhcnJheVJlZmVyZW5j
ZVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlw
ZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICB9Ci19Owot
Ci1jbGFzcyBGdW5jdGlvbktleSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25LZXkoKSA9IGRlZmF1
bHQ7Ci0gICAgRnVuY3Rpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAg
IHsKLSAgICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9IGJpdHdpc2VfY2FzdDxBU1Q6Ok5hbWVkVHlw
ZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotICAgIH0KLQotICAgIEZ1bmN0aW9uS2V5
KFN0cmluZyBuYW1lLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRU
eXBlPj4gdHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51bGxwdHIpCi0g
ICAgICAgIDogbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlcyhXVEZNb3Zl
KHR5cGVzKSkKLSAgICAgICAgLCBtX2Nhc3RSZXR1cm5UeXBlKGNhc3RSZXR1cm5UeXBlKQotICAg
IHsgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUuaXNO
dWxsKCk7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jYXN0UmV0dXJuVHlwZSA9PSBiaXR3aXNlX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICB1bnNpZ25lZCBoYXNoID0gSW50SGFzaDxzaXplX3Q+OjpoYXNoKG1fdHlw
ZXMuc2l6ZSgpKTsKLSAgICAgICAgaGFzaCBePSBtX25hbWUuaGFzaCgpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBoYXNo
IF49IG1fdHlwZXNbaV0uZ2V0KCkuaGFzaCgpICsgaTsKLQotICAgICAgICBpZiAobV9jYXN0UmV0
dXJuVHlwZSkKLSAgICAgICAgICAgIGhhc2ggXj0gV1RGOjpQdHJIYXNoPEFTVDo6VHlwZSo+Ojpo
YXNoKCZtX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSk7Ci0KLSAgICAgICAgcmV0dXJuIGhh
c2g7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uS2V5JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX3R5cGVzLnNpemUoKSAhPSBvdGhlci5tX3R5
cGVzLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV9u
YW1lICE9IG90aGVyLm1fbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmICghbWF0Y2hlcyhtX3R5cGVzW2ldLmdldCgpLCBvdGhlci5tX3R5cGVzW2ldLmdldCgp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8Ym9vbD4obV9jYXN0UmV0dXJuVHlwZSkgIT0gc3RhdGljX2Nhc3Q8Ym9v
bD4ob3RoZXIubV9jYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKCFtX2Nhc3RSZXR1cm5UeXBlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAgICAgaWYgKCZtX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSA9PSAmb3RoZXIu
bV9jYXN0UmV0dXJuVHlwZS0+dW5pZnlOb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3RydWN0IEhhc2ggewotICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGdW5jdGlvbktleSYga2V5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZ1bmN0aW9uS2V5JiBhLCBjb25zdCBGdW5jdGlvbktl
eSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBm
YWxzZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1YmxpYyBXVEY6OlNpbXBsZUNs
YXNzSGFzaFRyYWl0czxGdW5jdGlvbktleT4gewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlWYWx1ZShjb25zdCBGdW5jdGlvbktleSYga2V5KSB7IHJldHVybiBrZXkuaXNFbXB0eVZhbHVl
KCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IG1fdHlwZXM7Ci0gICAg
QVNUOjpOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGU7Ci19OwotCi1zdGF0aWMgQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uIHJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFJlc29sdmluZ1R5cGUmIGZpcnN0QXJndW1lbnQsIFJlc29sdmlu
Z1R5cGUmIHNlY29uZEFyZ3VtZW50LCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewot
ICAgIGNvbnN0IGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0gICAgYXV0byByZXR1cm5UeXBlID0g
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBpbnRyaW5zaWNzLmJvb2xUeXBlKCkp
OwotICAgIGF1dG8gYXJndW1lbnRUeXBlID0gZmlyc3RBcmd1bWVudC52aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0g
ICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mKSAtPiBSZWY8QVNUOjpV
bm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gc2Vjb25kQXJndW1lbnQudmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBSZWY8
QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIHVubmFtZWRUeXBlLmNvcHlS
ZWYoKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mKSAt
PiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgLy8gV2UgZW5jb3VudGVyZWQg
Im51bGwgPT0gbnVsbCIuCi0gICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MiBUaGlzIGNhbiBwcm9iYWJseSBiZSBnZW5lcmFs
aXplZCwgdXNpbmcgdGhlICJwcmVmZXJyZWQgdHlwZSIgaW5mcmFzdHJ1Y3R1cmUgdXNlZCBieSBn
ZW5lcmljIGxpdGVyYWxzCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGludHJpbnNp
Y3MuaW50VHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0pKTsKLSAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMo
KSwgYXJndW1lbnRUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKTsK
LSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBXVEZNb3ZlKGFyZ3VtZW50VHlwZSks
IFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJldHVyblR5cGUpLCBTdHJp
bmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGli
cmFyeSkpOwotfQotCi1lbnVtIGNsYXNzIEFjY2VwdGFiaWxpdHkgewotICAgIFllcywKLSAgICBO
bwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZp
bmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIGlm
IChuYW1lID09ICJvcGVyYXRvcj09IiAmJiB0eXBlcy5zaXplKCkgPT0gMikgewotICAgICAgICBh
dXRvIGFjY2VwdGFiaWxpdHkgPSBbXShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKSAtPiBB
Y2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4g
QWNjZXB0YWJpbGl0eSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gdW5uYW1l
ZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBpczxBU1Q6OlVubmFt
ZWRUeXBlPih1bmlmeU5vZGUpICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oZG93bmNhc3Q8QVNU
OjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkgPyBBY2NlcHRhYmlsaXR5OjpZZXMgOiBBY2NlcHRh
YmlsaXR5OjpObzsKLSAgICAgICAgICAgIH0sIFtdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4mKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXB0
YWJpbGl0eTo6Tm87Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGF1dG8g
bGVmdEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRhYmlsaXR5KHR5cGVzWzBdLmdldCgpKTsKLSAgICAg
ICAgYXV0byByaWdodEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRhYmlsaXR5KHR5cGVzWzFdLmdldCgp
KTsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIGlmIChsZWZ0QWNjZXB0
YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMgJiYgcmlnaHRBY2NlcHRhYmlsaXR5ID09IEFj
Y2VwdGFiaWxpdHk6OlllcykgewotICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUxID0gKnR5
cGVzWzBdLmdldCgpLmdldFVubmFtZWRUeXBlKCk7Ci0gICAgICAgICAgICBhdXRvJiB1bm5hbWVk
VHlwZTIgPSAqdHlwZXNbMV0uZ2V0KCkuZ2V0VW5uYW1lZFR5cGUoKTsKLSAgICAgICAgICAgIHN1
Y2Nlc3MgPSBtYXRjaGVzKHVubmFtZWRUeXBlMSwgdW5uYW1lZFR5cGUyKTsKLSAgICAgICAgfSAK
LSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVdpdGhSZWZl
cmVuY2VDb21wYXJhdG9yKGxvY2F0aW9uLCB0eXBlc1swXS5nZXQoKSwgdHlwZXNbMV0uZ2V0KCks
IGludHJpbnNpY3MpOwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGF0
aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpbnB1dEl0ZW1z
LCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVtcywgY29uc3Qgc3RkOjpvcHRpb25h
bDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3Mm
IGludHJpbnNpY3MpCi17Ci0gICAgewotICAgICAgICBhdXRvIGNoZWNrRHVwbGljYXRlU2VtYW50
aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBpdGVtcy5zaXplKCk7
ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0uc2VtYW50aWMgPT0gaXRl
bXNbal0uc2VtYW50aWMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICghY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRJ
dGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tEdXBs
aWNhdGVTZW1hbnRpY3Mob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1NlbWFudGljVHlwZXMgPSBbJl0oY29u
c3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wgewotICAgICAgICAgICAg
Zm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFjY2VwdGFi
bGUgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEFTVDo6QmFzZVNlbWFu
dGljJiBzZW1hbnRpYykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW1h
bnRpYy5pc0FjY2VwdGFibGVUeXBlKCppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzKTsKLSAg
ICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgIGlmICgh
YWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICgh
Y2hlY2tTZW1hbnRpY1R5cGVzKGlucHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRJdGVtcykpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGNoZWNrU2Vt
YW50aWNGb3JTaGFkZXJUeXBlID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0
ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24pIC0+
IGJvb2wgewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGFjY2VwdGFibGUgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZd
KGNvbnN0IEFTVDo6QmFzZVNlbWFudGljJiBzZW1hbnRpYykgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZW1hbnRpYy5pc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0
aW9uKGRpcmVjdGlvbiwgZW50cnlQb2ludFR5cGUpOwotICAgICAgICAgICAgICAgIH0pLCAqaXRl
bS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhY2NlcHRhYmxlKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljRm9yU2hhZGVy
VHlwZShpbnB1dEl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVySXRlbURpcmVjdGlvbjo6
SW5wdXQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNoZWNrU2Vt
YW50aWNGb3JTaGFkZXJUeXBlKG91dHB1dEl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVy
SXRlbURpcmVjdGlvbjo6T3V0cHV0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gY2hlY2tQT0REYXRhID0gWyZdKGNvbnN0IFZlY3RvcjxF
bnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgUE9EQ2hlY2tlciBwb2RDaGVja2VyOwot
ICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPihpdGVtLnVubmFtZWRUeXBl
KSkKLSAgICAgICAgICAgICAgICAgICAgcG9kQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKml0ZW0udW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPihp
dGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgcG9kQ2hlY2tlci5jaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KCppdGVtLnVubmFt
ZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpczxBU1Q6
OkFycmF5VHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHBvZENo
ZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPigqaXRlbS51
bm5hbWVkVHlwZSkudHlwZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChwb2RDaGVja2VyLmhhc0Vycm9y
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNrUE9E
RGF0YShpbnB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYg
KCFjaGVja1BPRERhdGEob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBjaGVja09wZXJhdG9y
T3ZlcmxvYWQoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlv
bikKLXsKLSAgICBlbnVtIGNsYXNzIENoZWNrS2luZCB7Ci0gICAgICAgIEluZGV4LAotICAgICAg
ICBEb3QKLSAgICB9OwotCi0gICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24uaXNPcGVyYXRvcigp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLmlzQ2Fz
dCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLm5h
bWUoKSA9PSAib3BlcmF0b3IrKyIgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3Bl
cmF0b3ItLSIpIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpID09IDEKLSAgICAgICAgICAgICYmIG1hdGNoZXMoKmZ1bmN0aW9uRGVmaW5pdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSwgZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0g
ICAgfQotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcisiIHx8
IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLSIpCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxIHx8IGZ1bmN0aW9u
RGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7Ci0gICAgaWYgKGZ1bmN0aW9uRGVm
aW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKiIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0
aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IvIgotICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRpb24u
bmFtZSgpID09ICJvcGVyYXRvciUiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1l
KCkgPT0gIm9wZXJhdG9yJiIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9
PSAib3BlcmF0b3J8IgotICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJv
cGVyYXRvcl4iCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJh
dG9yPDwiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9y
Pj4iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3J+
IikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDE7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1jbGFzcyBDaGVja2VyIDogcHVibGljIFZp
c2l0b3IgewotcHVibGljOgotICAgIENoZWNrZXIoY29uc3QgSW50cmluc2ljcyYgaW50cmluc2lj
cywgUHJvZ3JhbSYgcHJvZ3JhbSkKLSAgICAgICAgOiBtX2ludHJpbnNpY3MoaW50cmluc2ljcykK
LSAgICAgICAgLCBtX3Byb2dyYW0ocHJvZ3JhbSkKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkRnVu
Y3Rpb24gPSBbJl0gKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIHsKLSAgICAg
ICAgICAgIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICBpZiAoZnVuY3Rpb24uaXNDYXN0KCkgJiYgaXM8QVNUOjpOYW1lZFR5cGU+KGZ1bmN0aW9u
LnR5cGUoKS51bmlmeU5vZGUoKSkpCi0gICAgICAgICAgICAgICAgY2FzdFJldHVyblR5cGUgPSAm
ZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGZ1bmN0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSk7Ci0K
LSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5
cGU+PiB0eXBlczsKLSAgICAgICAgICAgIHR5cGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnVu
Y3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgcGFy
YW0gOiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkpCi0gICAgICAgICAgICAgICAgdHlwZXMudW5jaGVj
a2VkQXBwZW5kKG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXkoKnBhcmFtLT50eXBlKCkpKTsK
LQotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Z1bmN0aW9ucy5hZGQoRnVuY3Rpb25L
ZXkgeyBmdW5jdGlvbi5uYW1lKCksIFdURk1vdmUodHlwZXMpLCBjYXN0UmV0dXJuVHlwZSB9LCBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAx
PigpKTsKLSAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGZ1bmN0
aW9uKTsKLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9wcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgICAgIGFkZEZ1bmN0aW9uKGZ1bmN0
aW9uLmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fcHJvZ3JhbS5uYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKQotICAgICAgICAgICAgYWRkRnVuY3Rpb24oZnVuY3Rp
b24uZ2V0KCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0K
LSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlkZTsKLQotICAgIEV4cGVjdGVkPHZvaWQs
IEVycm9yPiBhc3NpZ25UeXBlcygpOwotCi1wcml2YXRlOgotICAgIGJvb2wgY2hlY2tTaGFkZXJU
eXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0gICAgYm9vbCBpc0Jvb2xUeXBl
KFJlc29sdmluZ1R5cGUmKTsKLSAgICBzdHJ1Y3QgUmVjdXJzZUluZm8gewotICAgICAgICBSZXNv
bHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlOwotICAgICAgICBjb25zdCBBU1Q6OlR5cGVBbm5vdGF0
aW9uIHR5cGVBbm5vdGF0aW9uOwotICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWN1cnNlSW5m
bz4gcmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRW
YWx1ZSA9IGZhbHNlKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPiBnZXRJbmZvKEFT
VDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAgUmVm
UHRyPEFTVDo6VW5uYW1lZFR5cGU+IHJlY3Vyc2VBbmRXcmFwQmFzZVR5cGUoQVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24mKTsKLSAgICBib29sIHJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUo
QVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdm9pZCBhc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHBy
ZXNzaW9uJiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLSAg
ICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBBU1Q6Ok5hbWVkVHlw
ZSYsIEFTVDo6VHlwZUFubm90YXRpb24pOwotICAgIHZvaWQgYXNzaWduVHlwZShBU1Q6OkV4cHJl
c3Npb24mLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+LCBBU1Q6OlR5cGVBbm5vdGF0
aW9uKTsKLSAgICB2b2lkIGZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYsIFJlc29sdmluZ1R5
cGUmLCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRl
bWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLQotICAg
IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uKFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29kZUxvY2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRy
KTsKLQotICAgIEFTVDo6VW5uYW1lZFR5cGUmIHdyYXBwZWRGbG9hdFR5cGUoKQotICAgIHsKLSAg
ICAgICAgaWYgKCFtX3dyYXBwZWRGbG9hdFR5cGUpCi0gICAgICAgICAgICBtX3dyYXBwZWRGbG9h
dFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoeyB9LCBtX2ludHJpbnNpY3MuZmxvYXRU
eXBlKCkpOwotICAgICAgICByZXR1cm4gKm1fd3JhcHBlZEZsb2F0VHlwZTsKLSAgICB9Ci0KLSAg
ICBBU1Q6OlVubmFtZWRUeXBlJiB3cmFwcGVkVWludFR5cGUoKQotICAgIHsKLSAgICAgICAgaWYg
KCFtX3dyYXBwZWRVaW50VHlwZSkKLSAgICAgICAgICAgIG1fd3JhcHBlZFVpbnRUeXBlID0gQVNU
OjpUeXBlUmVmZXJlbmNlOjp3cmFwKHsgfSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAg
ICAgICByZXR1cm4gKm1fd3JhcHBlZFVpbnRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6VW5uYW1l
ZFR5cGUmIG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXkoQVNUOjpVbm5hbWVkVHlwZSYgdHlw
ZSkKLSAgICB7Ci0gICAgICAgIGF1dG8qIHVuaWZ5Tm9kZSA9ICZ0eXBlLnVuaWZ5Tm9kZSgpOwot
ICAgICAgICBpZiAodW5pZnlOb2RlID09ICZtX2ludHJpbnNpY3MudWludFR5cGUoKSB8fCB1bmlm
eU5vZGUgPT0gJm1faW50cmluc2ljcy5pbnRUeXBlKCkpCi0gICAgICAgICAgICByZXR1cm4gd3Jh
cHBlZEZsb2F0VHlwZSgpOwotCi0gICAgICAgIHJldHVybiB0eXBlOwotICAgIH0KLQotICAgIFJl
ZlB0cjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fd3JhcHBlZEZsb2F0VHlwZTsKLSAgICBSZWZQdHI8
QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3dyYXBwZWRVaW50VHlwZTsKLSAgICBIYXNoTWFwPEFTVDo6
RXhwcmVzc2lvbiosIHN0ZDo6dW5pcXVlX3B0cjxSZXNvbHZpbmdUeXBlPj4gbV90eXBlTWFwOwot
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZlcnRleEVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291
bnRdOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2ZyYWdtZW50RW50cnlQb2ludHNbQVNUOjpuYW1l
U3BhY2VDb3VudF07Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fY29tcHV0ZUVudHJ5UG9pbnRzW0FT
VDo6bmFtZVNwYWNlQ291bnRdOwotICAgIGNvbnN0IEludHJpbnNpY3MmIG1faW50cmluc2ljczsK
LSAgICBQcm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIG1f
Y3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9OwotICAgIEhhc2hNYXA8RnVuY3Rpb25LZXksIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+
LCBGdW5jdGlvbktleTo6SGFzaCwgRnVuY3Rpb25LZXk6OlRyYWl0cz4gbV9mdW5jdGlvbnM7Ci0g
ICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNlIHsgQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeSB9OwotICAgIGJvb2wgbV9pc1Zpc2l0aW5nUGFyYW1ldGVycyB7IGZhbHNl
IH07Ci19OwotCi12b2lkIENoZWNrZXI6OnZpc2l0KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAg
Ly8gVGhlc2UgdmlzaXRpbmcgZnVuY3Rpb25zIG1pZ2h0IGFkZCBuZXcgZ2xvYmFsIHN0YXRlbWVu
dHMsIHNvIGRvbid0IHVzZSBmb3JlYWNoIHN5bnRheC4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsr
aSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlv
bnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9u
RGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHBy
b2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClb
aV0pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5p
dGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0u
ZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
b2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtp
XSk7Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBDaGVja2VyOjphc3NpZ25UeXBlcygpCi17
Ci0gICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtX3R5cGVNYXApIHsKLSAgICAgICAgYXV0
byBzdWNjZXNzID0ga2V5VmFsdWVQYWlyLnZhbHVlLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIGtleVZhbHVlUGFpci5rZXktPnNldFR5cGUodW5uYW1lZFR5cGUuY29weVJlZigpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IGJvb2wgewotICAgICAg
ICAgICAgaWYgKCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5tYXli
ZVJlc29sdmVkVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29s
Pihjb21taXQocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkpKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAga2V5VmFsdWVQYWlyLmtleS0+c2V0VHlwZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVz
b2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfSkpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIGEgY29u
c3RhbnQuIikpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6
Y2hlY2tTaGFkZXJUeXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRl
ZmluaXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBv
aW50VHlwZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3ZlcnRleEVudHJ5UG9pbnRzW2luZGV4XS5h
ZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIGNhc2UgQVNUOjpFbnRyeVBvaW50
VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2ZyYWdt
ZW50RW50cnlQb2ludHNbaW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSk7Ci0g
ICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9jb21wdXRlRW50cnlQb2ludHNbaW5kZXhdLmFkZChmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZSgpKSk7Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBtX2lzVmlz
aXRpbmdQYXJhbWV0ZXJzID0gdHJ1ZTsKLSAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlY2xh
cmF0aW9uKTsKLSAgICBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7Ci19Ci0KLXZvaWQg
Q2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlv
bikKLXsKLSAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBmdW5jdGlvbkRlZmluaXRpb24ubmFtZVNw
YWNlKCk7Ci0gICAgbV9jdXJyZW50RnVuY3Rpb24gPSAmZnVuY3Rpb25EZWZpbml0aW9uOwotICAg
IGlmIChmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSkgewotICAgICAgICBpZiAo
IWNoZWNrU2hhZGVyVHlwZShmdW5jdGlvbkRlZmluaXRpb24pKSB7Ci0gICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiRHVwbGljYXRlIGVudHJ5cG9pbnQgZnVuY3Rpb24uIiwgZnVuY3Rpb25EZWZp
bml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMobV9p
bnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoIWVudHJ5UG9pbnRJ
dGVtcykgewotICAgICAgICAgICAgc2V0RXJyb3IoZW50cnlQb2ludEl0ZW1zLmVycm9yKCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRp
Y3MoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cywgZnVu
Y3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCksIG1faW50cmluc2ljcykpIHsKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJCYWQgc2VtYW50aWNzIGZvciBlbnRyeXBvaW50LiIsIGZ1
bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGlmICghY2hlY2tPcGVyYXRvck92ZXJsb2FkKGZ1bmN0aW9u
RGVmaW5pdGlvbikpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk9wZXJhdG9yIGRvZXMgbm90
IG1hdGNoIGV4cGVjdGVkIHNpZ25hdHVyZS4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGZ1
bmN0aW9uRGVmaW5pdGlvbik7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
bWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYgbGVmdCwgUmVzb2x2aW5nVHlwZSYgcmlnaHQp
Ci17Ci0gICAgcmV0dXJuIGxlZnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6
VW5uYW1lZFR5cGU+JiBsZWZ0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAg
ICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAg
IGlmIChtYXRjaGVzKGxlZnQsIHJpZ2h0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdC5j
b3B5UmVmKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfSwgWyZdKFJl
ZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpVbm5h
bWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KGxlZnQsIHJpZ2h0
LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0sIFsmXShSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
ewotICAgICAgICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAg
ICAgICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChyaWdodCwgbGVmdC0+cmVzb2x2YWJsZVR5
cGUoKSk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBy
aWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAgIHJldHVybiBt
YXRjaEFuZENvbW1pdChsZWZ0LT5yZXNvbHZhYmxlVHlwZSgpLCByaWdodC0+cmVzb2x2YWJsZVR5
cGUoKSk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSk7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwg
QVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5
cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXNv
bHZpbmdUeXBlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICBpZiAobWF0
Y2hlcyh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gJnVu
bmFtZWRUeXBlOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9LCBbJl0oUmVmUHRyPFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2aW5nVHlwZSkgLT4gUmVmUHRyPEFTVDo6VW5u
YW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KHVubmFtZWRUeXBlLCBy
ZXNvbHZpbmdUeXBlLT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICB9KSk7Ci19Ci0KLXN0YXRpYyBi
b29sIG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6TmFt
ZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXNvbHZpbmdUeXBlKSB7
Ci0gICAgICAgIGlmIChtYXRjaGVzKHJlc29sdmluZ1R5cGUsIG5hbWVkVHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sIFsmXShSZWZQ
dHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZpbmdUeXBlKSAtPiBib29sIHsKLSAg
ICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZS0+cmVz
b2x2YWJsZVR5cGUoKSk7Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1l
ZFR5cGU+IGNvbW1pdChSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKQotewotICAgIHJldHVy
biByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAg
ICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiBSZWZQdHI8
QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICBpZiAoIXJlc29sdmFibGVUeXBlUmVmZXJlbmNl
LT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAgICByZXR1
cm4gY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAg
ICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5y
ZXNvbHZlZFR5cGUoKTsKLSAgICB9KSk7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiog
Q2hlY2tlcjo6cmVzb2x2ZUZ1bmN0aW9uKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHVubmFtZWRUeXBlczsKLSAg
ICB1bm5hbWVkVHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwotCi0g
ICAgZm9yIChhdXRvIHJlc29sdmluZ1R5cGUgOiB0eXBlcykgewotICAgICAgICBBU1Q6OlVubmFt
ZWRUeXBlKiB0eXBlID0gcmVzb2x2aW5nVHlwZS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNpdG9y
KFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBBU1Q6OlVubmFtZWRU
eXBlKiB7Ci0gICAgICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUucHRyKCk7Ci0gICAgICAgIH0s
IFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICAgICAgaWYgKHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5
cGUoKS5yZXNvbHZlZFR5cGUoKTsKLQotICAgICAgICAgICAgaWYgKHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzRmxvYXRMaXRlcmFsVHlwZSgpCi0gICAgICAgICAg
ICAgICAgfHwgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuaXNJbnRl
Z2VyTGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8IHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJndyYXBwZWRGbG9hdFR5cGUoKTsKLQotICAgICAgICAgICAg
cmV0dXJuIGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSku
Z2V0KCk7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBpZiAoIXR5cGUpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiBhIGNvbnN0YW50
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAg
dW5uYW1lZFR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxpemVkVHlwZUZvckZ1bmN0aW9uS2V5
KCp0eXBlKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGl0ZXIgPSBtX2Z1bmN0aW9u
cy5maW5kKEZ1bmN0aW9uS2V5IHsgbmFtZSwgV1RGTW92ZSh1bm5hbWVkVHlwZXMpLCBjYXN0UmV0
dXJuVHlwZSB9KTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gbV9mdW5jdGlvbnMuZW5kKCkpIHsKLSAg
ICAgICAgICAgIGlmIChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIGZ1bmN0aW9uID0gcmVzb2x2
ZUZ1bmN0aW9uT3ZlcmxvYWQoaXRlci0+dmFsdWUsIHR5cGVzLCBjYXN0UmV0dXJuVHlwZSwgbV9j
dXJyZW50TmFtZVNwYWNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYXV0byBuZXdGdW5jdGlvbiA9IHJlc29sdmVCeUluc3Rh
bnRpYXRpb24obmFtZSwgbG9jYXRpb24sIHR5cGVzLCBtX2ludHJpbnNpY3MpKSB7Ci0gICAgICAg
IG1fcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmV3RnVuY3Rpb24pKTsKLSAgICAgICAgcmV0dXJu
ICZtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5sYXN0KCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBib29sIGlz
U2lnbmVkOwotICAgIGF1dG8qIGJhc2VUeXBlID0gKFsmXSgpIC0+IEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uKiB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmlu
aXRpb24udHlwZSgpKTsKLSAgICAgICAgYXV0byYgYmFzZVR5cGUgPSBlbnVtZXJhdGlvbkRlZmlu
aXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIWlzPEFTVDo6TmFtZWRUeXBl
PihiYXNlVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byYg
bmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBlKTsKLSAgICAgICAg
aWYgKCFpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICAg
ICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNJbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICBpc1NpZ25lZCA9IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc1Np
Z25lZCgpOwotICAgICAgICByZXR1cm4gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9KSgp
OwotICAgIGlmICghYmFzZVR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQg
YmFzZSB0eXBlIGZvciBlbnVtLiIsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBlbnVtZXJhdGlvbk1lbWJl
cnMgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCk7Ci0KLSAgICBm
b3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVycykgewotICAgICAgICBpbnQ2NF90
IHZhbHVlID0gbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChpc1NpZ25lZCkgewot
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRpY19jYXN0PGludDMyX3Q+
KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiSW52
YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIuZ2V0KCkuY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
SW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIuZ2V0KCkuY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudW1lcmF0aW9uTWVtYmVycy5zaXpl
KCk7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gZW51bWVyYXRpb25NZW1iZXJzW2ldLmdl
dCgpLnZhbHVlKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGVudW1lcmF0
aW9uTWVtYmVycy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgYXV0byBvdGhlclZhbHVlID0g
ZW51bWVyYXRpb25NZW1iZXJzW2pdLmdldCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAodmFs
dWUgPT0gb3RoZXJWYWx1ZSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5u
b3QgZGVjbGFyZSBkdXBsaWNhdGUgZW51bWVyYXRpb24gdmFsdWVzLiIsIGVudW1lcmF0aW9uTWVt
YmVyc1tqXS5nZXQoKS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgZm91bmRaZXJvID0g
ZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbk1lbWJlcnMpIHsKLSAg
ICAgICAgaWYgKCFtZW1iZXIuZ2V0KCkudmFsdWUoKSkgewotICAgICAgICAgICAgZm91bmRaZXJv
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICgh
Zm91bmRaZXJvKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJlbnVtIGRlZmluaXRpb24gbXVz
dCBjb250YWluIGEgemVybyB2YWx1ZS4iLCBlbnVtZXJhdGlvbkRlZmluaXRpb24uY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgQVNTRVJUKHR5cGVS
ZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0KLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1
bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0
SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUp
IC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+Ci17Ci0gICAgVmlzaXRvcjo6dmlzaXQoZXhw
cmVzc2lvbik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgcmV0dXJuIGdldEluZm8oZXhwcmVzc2lvbiwgcmVxdWlyZXNMZWZ0VmFsdWUpOwot
fQotCi1hdXRvIENoZWNrZXI6OmdldEluZm8oQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBi
b29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPgotewot
ICAgIGF1dG8gdHlwZUl0ZXJhdG9yID0gbV90eXBlTWFwLmZpbmQoJmV4cHJlc3Npb24pOwotICAg
IEFTU0VSVCh0eXBlSXRlcmF0b3IgIT0gbV90eXBlTWFwLmVuZCgpKTsKLQotICAgIGNvbnN0IGF1
dG8mIHR5cGVBbm5vdGF0aW9uID0gZXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbigpOwotICAgIGlm
IChyZXF1aXJlc0xlZnRWYWx1ZSAmJiB0eXBlQW5ub3RhdGlvbi5pc1JpZ2h0VmFsdWUoKSkgewot
ICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCBydmFsdWUuIiwgZXhwcmVzc2lvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAg
ICByZXR1cm4ge3sgKnR5cGVJdGVyYXRvci0+dmFsdWUsIHR5cGVBbm5vdGF0aW9uIH19OwotfQot
Ci12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVE
ZWNsYXJhdGlvbikKLXsKLSAgICAvLyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9ucyBhcmUgdGhl
IG9ubHkgcGxhY2Ugd2hlcmUgYW5vbnltb3VzIHZhcmlhYmxlcyBleGlzdCwKLSAgICAvLyBhbmQg
dGhhdCBkb2Vzbid0IHJlY3Vyc2Ugb24gdGhlIGFub255bW91cyB2YXJpYWJsZXMsIHNvIHdlIGNh
biBhc3N1bWUgdGhlIHZhcmlhYmxlIGhhcyBhIHR5cGUuCi0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKG1hdGNoZXMoKnZhcmlhYmxl
RGVjbGFyYXRpb24udHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpIHsKLSAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIlZhcmlhYmxlcyBjYW4ndCBoYXZlIHZvaWQgdHlwZS4iLCB2YXJpYWJs
ZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkgewotICAgICAgICBhdXRv
JiBsaHNUeXBlID0gKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpOwotICAgICAgICBhdXRvIGlu
aXRpYWxpemVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKCp2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpOwotICAgICAgICBpZiAoIWluaXRpYWxpemVySW5mbykKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdChpbml0aWFsaXplckluZm8tPnJl
c29sdmluZ1R5cGUsIGxoc1R5cGUpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRGVj
bGFyZWQgdmFyaWFibGUgdHlwZSBkb2VzIG5vdCBtYXRjaCBpdHMgaW5pdGlhbGl6ZXIncyB0eXBl
LiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIW1faXNWaXNpdGluZ1BhcmFtZXRlcnMg
JiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPih2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKS0+dW5p
ZnlOb2RlKCkpKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih2YXJpYWJsZURl
Y2xhcmF0aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIk11c3QgYXNzaWduIHRvIGEgcG9pbnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBpdHMg
aW5pdGlhbGl6ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcigiTXVzdCBhc3NpZ24gdG8gYW4gYXJyYXkgcmVmZXJlbmNlIHZhcmlh
YmxlIGRlY2xhcmF0aW9uIGluIGl0cyBpbml0aWFsaXplci4iLCB2YXJpYWJsZURlY2xhcmF0aW9u
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90
YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5n
VHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRp
b24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12b2lkIENoZWNrZXI6OmFzc2lnbkNv
bmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIEFTVDo6TmFtZWRUeXBlJiB0
eXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIGFubm90YXRpb24pCi17Ci0gICAgYXV0byB1bm5hbWVk
VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh0eXBlLmNvZGVMb2NhdGlvbigpLCB0eXBl
KTsKLSAgICBWaXNpdG9yOjp2aXNpdCh1bm5hbWVkVHlwZSk7Ci0gICAgYXNzaWduQ29uY3JldGVU
eXBlKGV4cHJlc3Npb24sIFdURk1vdmUodW5uYW1lZFR5cGUpLCBhbm5vdGF0aW9uKTsKLX0KLQot
dm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSwgQVNU
OjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQotewot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1
ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSkpOwotICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgZXhw
cmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBS
ZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5v
dGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCi17Ci0gICAgcmVzb2x2aW5nVHlwZS52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc3VsdCkgewotICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlx
dWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0sIFsmXShSZWZQdHI8
UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+
KHJlc3VsdC5jb3B5UmVmKCkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9KSk7Ci0gICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5u
b3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlz
aXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCi17Ci0g
ICAgYXV0byBsZWZ0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFzc2lnbm1lbnRFeHByZXNzaW9u
LmxlZnQoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0SW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byByaWdodEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhhc3NpZ25tZW50RXhwcmVzc2lv
bi5yaWdodCgpKTsKLSAgICBpZiAoIXJpZ2h0SW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byByZXN1bHRUeXBlID0gbWF0Y2hBbmRDb21taXQobGVmdEluZm8tPnJlc29sdmluZ1R5cGUs
IHJpZ2h0SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFyZXN1bHRUeXBlKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJMZWZ0IGhhbmQgc2lkZSBvZiBhc3NpZ25tZW50IGRvZXMgbm90
IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSByaWdodCBoYW5kIHNpZGUuIiwgYXNzaWdubWVudEV4cHJl
c3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShhc3NpZ25tZW50RXhwcmVzc2lvbiwgKnJlc3VsdFR5cGUpOwotfQot
Ci12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRWYWx1ZUluZm8gPSByZWN1
cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLCB0cnVl
KTsKLSAgICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFsdWUoKS5zZXRUeXBlKCpsZWZ0VmFsdWVJbmZvLT5y
ZXNvbHZpbmdUeXBlLmdldFVubmFtZWRUeXBlKCkpOwotCi0gICAgYXV0byBuZXdWYWx1ZUluZm8g
PSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhw
cmVzc2lvbigpKTsKLSAgICBpZiAoIW5ld1ZhbHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaGVkVHlwZSA9IG1hdGNoQW5kQ29t
bWl0KGxlZnRWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG5ld1ZhbHVlSW5mby0+cmVzb2x2aW5n
VHlwZSkpCi0gICAgICAgIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWUoKS5zZXRU
eXBlKCptYXRjaGVkVHlwZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJC
YXNlIG9mIHRoZSByZWFkLW1vZGlmeS13cml0ZSBleHByZXNzaW9uIGRvZXMgbm90IG1hdGNoIHRo
ZSB0eXBlIG9mIHRoZSBuZXcgdmFsdWUuIiwgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byByZXN1bHRJ
bmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRF
eHByZXNzaW9uKCkpOwotICAgIGlmICghcmVzdWx0SW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9yd2FyZFR5cGUocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgcmVzdWx0SW5mby0+cmVz
b2x2aW5nVHlwZSwgQVNUOjpSaWdodFZhbHVlKCkpOwotfQotCi1zdGF0aWMgQVNUOjpVbm5hbWVk
VHlwZSogZ2V0VW5uYW1lZFR5cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkKLXsKLSAg
ICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiYgdHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICByZXR1
cm4gdHlwZS5wdHIoKTsKLSAgICB9LCBbXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiB0eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
dHlwZSBpc24ndCBjb21taXR0ZWQsIHNob3VsZCB3ZSBqdXN0IGNvbW1pdCgpIGl0IG5vdz8KLSAg
ICAgICAgcmV0dXJuIHR5cGUtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKTsK
LSAgICB9KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJl
c3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIHBvaW50ZXJJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8oZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKSk7Ci0gICAg
aWYgKCFwb2ludGVySW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogdW5uYW1lZFR5
cGUgPSBnZXRVbm5hbWVkVHlwZShwb2ludGVySW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0KLSAgICBh
dXRvKiBwb2ludGVyVHlwZSA9IChbJl0oQVNUOjpVbm5hbWVkVHlwZSogdW5uYW1lZFR5cGUpIC0+
IEFTVDo6UG9pbnRlclR5cGUqIHsKLSAgICAgICAgaWYgKCF1bm5hbWVkVHlwZSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB1bm5hbWVkVHlw
ZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlO
b2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB1bm5hbWVk
VW5pZnlUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAg
ICAgaWYgKCFpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVW5pZnlUeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6UG9pbnRl
clR5cGU+KHVubmFtZWRVbmlmeVR5cGUpOwotICAgIH0pKHVubmFtZWRUeXBlKTsKLSAgICBpZiAo
IXBvaW50ZXJUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVyZWZlcmVu
Y2UgYSBub24tcG9pbnRlciB0eXBlLiIsIGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBl
KGRlcmVmZXJlbmNlRXhwcmVzc2lvbiwgcG9pbnRlclR5cGUtPmVsZW1lbnRUeXBlKCksIEFTVDo6
TGVmdFZhbHVlIHsgcG9pbnRlclR5cGUtPmFkZHJlc3NTcGFjZSgpIH0pOwotfQotCi12b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJl
c3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8obWFr
ZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLCB0cnVlKTsKLSAgICBpZiAoIWxlZnRWYWx1
ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFjZSA9IGxl
ZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAgICBpZiAo
IWxlZnRBZGRyZXNzU3BhY2UpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB0YWtl
IHRoZSBhZGRyZXNzIG9mIGEgbm9uIGx2YWx1ZS4iLCBtYWtlUG9pbnRlckV4cHJlc3Npb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIGxlZnRW
YWx1ZVR5cGUgPSBnZXRVbm5hbWVkVHlwZShsZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKTsK
LSAgICBpZiAoIWxlZnRWYWx1ZVR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5v
dCB0YWtlIHRoZSBhZGRyZXNzIG9mIGEgdmFsdWUgd2l0aG91dCBhIHR5cGUuIiwgbWFrZVBvaW50
ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLCBBU1Q6OlBvaW50
ZXJUeXBlOjpjcmVhdGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCAqbGVm
dEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8o
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgaWYgKCFsZWZ0
VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBsZWZ0VmFsdWVUeXBlID0g
Z2V0VW5uYW1lZFR5cGUobGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFs
ZWZ0VmFsdWVUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgbWFrZSBhbiBh
cnJheSByZWZlcmVuY2Ugb2YgYSB2YWx1ZSB3aXRob3V0IGEgdHlwZS4iLCBtYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhdXRvJiB1bmlmeU5vZGUgPSBsZWZ0VmFsdWVUeXBlLT51bmlmeU5vZGUoKTsKLSAg
ICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICBhdXRvJiB1
bm5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAg
ICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAg
IGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5
cGUpOwotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCks
IHBvaW50ZXJUeXBlLmVsZW1lbnRUeXBlKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFjZSA9IGxlZnRWYWx1ZUluZm8tPnR5
cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAgICAgICAgaWYgKCFsZWZ0QWRkcmVz
c1NwYWNlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJy
YXkgcmVmZXJlbmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4iLCBtYWtlQXJyYXlSZWZlcmVuY2VF
eHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkgewotICAg
ICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFt
ZWRUeXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTYzIFNhdmUgdGhlIG51bWJlciBvZiBlbGVtZW50cy4KLSAgICAg
ICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCksICpsZWZ0QWRkcmVzc1NwYWNlLCBhcnJheVR5cGUudHlwZSgpKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGxlZnRB
ZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5sZWZ0QWRkcmVzc1Nw
YWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJDYW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2UgZnJvbSBhIG5vbi1sZWZ0LXZhbHVl
LiIsIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksICpsZWZ0QWRkcmVzc1NwYWNlLCAq
bGVmdFZhbHVlVHlwZSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVz
c2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGJhc2VJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8oZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgIGlmICghYmFzZUluZm8pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8gYmFzZVVubmFtZWRUeXBlID0gY29tbWl0KGJhc2VJbmZvLT5y
ZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWJhc2VVbm5hbWVkVHlwZSkgewotICAgICAgICBzZXRF
cnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdGhlIHR5cGUgb2YgdGhlIGJhc2Ugb2YgYSBkb3Qg
ZXhwcmVzc2lvbi4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFzZVVubmFtZWRUeXBlLT51bmlmeU5v
ZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKSkgewotICAg
ICAgICBhdXRvJiBzdHJ1Y3R1cmUgPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+
KHR5cGUpOyAgICAKLSAgICAgICAgaWYgKEFTVDo6U3RydWN0dXJlRWxlbWVudCogZWxlbWVudCA9
IHN0cnVjdHVyZS5maW5kKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKQotICAgICAgICAgICAg
YXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGVsZW1lbnQtPnR5cGUoKSwgYmFzZUlu
Zm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzZXRFcnJv
cihFcnJvcihtYWtlU3RyaW5nKCJGaWVsZCBuYW1lOiAnIiwgZG90RXhwcmVzc2lvbi5maWVsZE5h
bWUoKSwgIicgZG9lcyBub3QgZXhpc3Qgb24gc3RydWN0dXJlOiAiLCBzdHJ1Y3R1cmUubmFtZSgp
KSwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpID09ICJs
ZW5ndGgiKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkK
LSAgICAgICAgICAgIHx8IGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKQotICAgICAgICAgICAgfHwg
KGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkpIHsKLSAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCB3cmFwcGVkVWludFR5cGUoKSwgQVNUOjpS
aWdodFZhbHVlKCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIi5sZW5ndGggZmllbGQgaXMgb25seSBhdmFpbGFibGUgb24gYXJyYXlzLCBhcnJheSByZWZl
cmVuY2VzLCBvciB2ZWN0b3JzLiIsIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSB7Ci0gICAgICAgIGlmICghbV9wcm9ncmFtLmlzVmFs
aWRWZWN0b3JQcm9wZXJ0eShkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpKSkgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiJy4iLCBkb3RFeHByZXNzaW9uLmZpZWxkTmFt
ZSgpLCAiJyBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBvbiBhIHZlY3Rvci4iKSwgZG90RXhwcmVz
c2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgYXV0byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbi5p
c1JpZ2h0VmFsdWUoKSA/IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OlJpZ2h0VmFsdWUoKSB9
IDogQVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJhY3RMZWZ0VmFsdWUoKSB9OwotCi0g
ICAgICAgIHNpemVfdCBmaWVsZExlbmd0aCA9IGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkubGVu
Z3RoKCk7Ci0gICAgICAgIGF1dG8mIGlubmVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPih0eXBlKS52ZWN0b3JUeXBlQXJndW1lbnQoKTsKLSAgICAgICAgaWYgKGZp
ZWxkTGVuZ3RoID09IDEpCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVz
c2lvbiwgaW5uZXJUeXBlLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpCi0g
ICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIG1faW50cmlu
c2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7
Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLmlu
dFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Np
b24sIG1faW50cmluc2ljcy5pbnRWZWN0b3JUeXBlRm9yU2l6ZShmaWVsZExlbmd0aCksIHR5cGVB
bm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2lu
dHJpbnNpY3MudWludFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBl
KGRvdEV4cHJlc3Npb24sIG1faW50cmluc2ljcy51aW50VmVjdG9yVHlwZUZvclNpemUoZmllbGRM
ZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaGVzKGlu
bmVyVHlwZSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3Np
Z25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLmZsb2F0VmVjdG9yVHlw
ZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
fQotICAgIH0gZWxzZQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFzZSB2YWx1ZSBvZiBkb3Qg
ZXhwcmVzc2lvbiBtdXN0IGJlIGEgc3RydWN0dXJlLCBhcnJheSwgb3IgdmVjdG9yLiIsIGRvdEV4
cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6
OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAgIHsKLSAgICAgICAgYXV0
byBpbmRleEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhpbmRleEV4cHJlc3Npb24uaW5kZXhFeHBy
ZXNzaW9uKCkpOwotICAgICAgICBpZiAoIWluZGV4SW5mbykKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KGluZGV4SW5mby0+cmVzb2x2aW5nVHlwZSwg
bV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
SW5kZXggaW4gYW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIGEgdWludC4iLCBpbmRleEV4cHJl
c3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGF1dG8gYmFzZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhpbmRleEV4cHJl
c3Npb24uYmFzZSgpKTsKLSAgICBpZiAoIWJhc2VJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGJhc2VVbm5hbWVkVHlwZSA9IGNvbW1pdChiYXNlSW5mby0+cmVzb2x2aW5nVHlwZSk7
Ci0gICAgaWYgKCFiYXNlVW5uYW1lZFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNh
bm5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9mIGFuIGluZGV4IGV4cHJlc3Npb24u
IiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFzZVVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAg
ICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgIGF1dG8m
IGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0
eXBlKTsKLSAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgYXJyYXlS
ZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCksIEFTVDo6TGVmdFZhbHVlIHsgYXJyYXlSZWZlcmVu
Y2VUeXBlLmFkZHJlc3NTcGFjZSgpIH0pOwotICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5
cGU+KHR5cGUpKQotICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9uLCBk
b3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkudHlwZSgpLCBiYXNlSW5mby0+dHlwZUFubm90
YXRpb24pOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBl
KSkgewotICAgICAgICBhdXRvJiBuYXRpdmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KHR5cGUpOwotICAgICAgICBhdXRvIHR5cGVBbm5vdGF0aW9uID0gYmFzZUlu
Zm8tPnR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpID8gQVNUOjpUeXBlQW5ub3RhdGlvbiB7
IEFTVDo6UmlnaHRWYWx1ZSgpIH0gOiBBU1Q6OlR5cGVBbm5vdGF0aW9uIHsgQVNUOjpBYnN0cmFj
dExlZnRWYWx1ZSgpIH07Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlLmlzVmVjdG9yKCkpCi0gICAg
ICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9uLCBuYXRpdmVUeXBlLnZl
Y3RvclR5cGVBcmd1bWVudCgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKG5h
dGl2ZVR5cGUuaXNNYXRyaXgoKSkgewotICAgICAgICAgICAgYXV0byYgaW5uZXJUeXBlID0gbmF0
aXZlVHlwZS5tYXRyaXhUeXBlQXJndW1lbnQoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIG51bVJv
d3MgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Um93cygpOwotICAgICAgICAgICAgaWYgKG1h
dGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpCi0gICAgICAgICAgICAg
ICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLmJvb2xW
ZWN0b3JUeXBlRm9yU2l6ZShudW1Sb3dzKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAg
ZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5mbG9hdFR5cGUoKSkpCi0g
ICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgbV9pbnRy
aW5zaWNzLmZsb2F0VmVjdG9yVHlwZUZvclNpemUobnVtUm93cyksIHR5cGVBbm5vdGF0aW9uKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIklu
ZGV4IGV4cHJlc3Npb24gb24gdW5rbm93biB0eXBlLiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGV4cHJlc3Npb24gb24gYW4gdW5rbm93biBi
YXNlIHR5cGUuIEJhc2UgdHlwZSBtdXN0IGJlIGFuIGFycmF5LCBhcnJheSByZWZlcmVuY2UsIHZl
Y3Rvciwgb3IgbWF0cml4LiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIEFTU0VSVCh2YXJpYWJsZVJl
ZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFi
bGUoKS0+dHlwZSgpKTsKLSAgICAKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUodmFyaWFibGVSZWZl
cmVuY2UsICp2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpLT50eXBlKCksIEFTVDo6TGVmdFZh
bHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLX0KLQotdm9pZCBDaGVja2VyOjp2
aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAgIGlmIChyZXR1cm5TdGF0
ZW1lbnQudmFsdWUoKSkgewotICAgICAgICBhdXRvIHZhbHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJ
bmZvKCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIGlmICghdmFsdWVJbmZvKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KHZhbHVlSW5m
by0+cmVzb2x2aW5nVHlwZSwgbV9jdXJyZW50RnVuY3Rpb24tPnR5cGUoKSkpCi0gICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcigiVHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlIG11c3QgbWF0Y2ggdGhl
IHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4iLCByZXR1cm5TdGF0ZW1lbnQuY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbWF0Y2hlcyhtX2N1
cnJlbnRGdW5jdGlvbi0+dHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpCi0gICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIHZvaWQgZnVuY3Rp
b24uIiwgcmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tl
cjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpCi17Ci0gICAgLy8gRm9sbG93aW5nIHBvaW50ZXIg
dHlwZXMgY2FuIGNhdXNlIGluZmluaXRlIGxvb3BzIGJlY2F1c2Ugb2YgZGF0YSBzdHJ1Y3R1cmVz
Ci0gICAgLy8gbGlrZSBsaW5rZWQgbGlzdHMuCi0gICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlz
IGZ1bmN0aW9uIHNob3VsZCBiZSBlbXB0eQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlJikKLXsKLSAgICAvLyBGb2xsb3dpbmcgYXJyYXkgcmVmZXJlbmNl
IHR5cGVzIGNhbiBjYXVzZSBpbmZpbml0ZSBsb29wcyBiZWNhdXNlIG9mIGRhdGEKLSAgICAvLyBz
dHJ1Y3R1cmVzIGxpa2UgbGlua2VkIGxpc3RzLgotICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhp
cyBmdW5jdGlvbiBzaG91bGQgYmUgZW1wdHkKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6
OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhc3NpZ25UeXBlKGludGVn
ZXJMaXRlcmFsLCBhZG9wdFJlZigqbmV3IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGludGVnZXJM
aXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgYXNzaWduVHlw
ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsLCBhZG9wdFJlZigqbmV3IFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKSkpOwotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgYXNzaWdu
VHlwZShmbG9hdExpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Uo
ZmxvYXRMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkJv
b2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkKLXsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUo
Ym9vbGVhbkxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChib29sZWFuTGl0ZXJhbC5j
b2RlTG9jYXRpb24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKQotewotICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVy
YXRpb25EZWZpbml0aW9uKCkpOwotICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICpl
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCk7Ci0gICAgYXNz
aWduQ29uY3JldGVUeXBlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5jb2RlTG9jYXRpb24oKSwgZW51bWVy
YXRpb25EZWZpbml0aW9uKSk7Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6aXNCb29sVHlwZShSZXNvbHZp
bmdUeXBlJiByZXNvbHZpbmdUeXBlKQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgbGVmdCkgLT4gYm9v
bCB7Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKGxlZnQsIG1faW50cmluc2ljcy5ib29sVHlwZSgp
KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgbGVmdCkgLT4g
Ym9vbCB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCht
X2ludHJpbnNpY3MuYm9vbFR5cGUoKSwgbGVmdC0+cmVzb2x2YWJsZVR5cGUoKSkpOwotICAgIH0p
KTsKLX0KLQotYm9vbCBDaGVja2VyOjpyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGV4cHJlc3Npb25JbmZvID0gcmVjdXJz
ZUFuZEdldEluZm8oZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFleHByZXNzaW9uSW5mbykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNCb29sVHlwZShleHByZXNzaW9uSW5mby0+cmVz
b2x2aW5nVHlwZSkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIGJvb2wgdHlw
ZSBmcm9tIGV4cHJlc3Npb24uIiwgZXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9u
KQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsTm90RXhwcmVz
c2lvbi5vcGVyYW5kKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgYXNzaWduQ29uY3JldGVUeXBl
KGxvZ2ljYWxOb3RFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9naWNhbE5v
dEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYgbG9naWNhbEV4
cHJlc3Npb24pCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGxvZ2ljYWxF
eHByZXNzaW9uLmxlZnQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXJlY3Vyc2VBbmRS
ZXF1aXJlQm9vbFR5cGUobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobG9naWNhbEV4cHJlc3Npb24sIEFTVDo6VHlwZVJl
ZmVyZW5jZTo6d3JhcChsb2dpY2FsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgbV9pbnRyaW5z
aWNzLmJvb2xUeXBlKCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OklmU3RhdGVt
ZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUo
aWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxz
ZUJvZHkoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9k
eSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29w
KQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZSh3aGlsZUxvb3AuY29uZGl0
aW9uYWwoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVM
b29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYg
ZG9XaGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHko
KSk7Ci0gICAgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShkb1doaWxlTG9vcC5jb25kaXRpb25h
bCgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0gICAg
aWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZm9yTG9vcC5jb25kaXRp
b24oKSkgewotICAgICAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUoKmZvckxvb3Au
Y29uZGl0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZm9yTG9v
cC5pbmNyZW1lbnQoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmluY3Jl
bWVudCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotfQotCi12
b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQp
Ci17Ci0gICAgYXV0byogdmFsdWVUeXBlID0gKFsmXSgpIC0+IEFTVDo6TmFtZWRUeXBlKiB7Ci0g
ICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oc3dpdGNoU3RhdGVtZW50
LnZhbHVlKCkpOwotICAgICAgICBpZiAoIXZhbHVlSW5mbykKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBhdXRvKiB2YWx1ZVR5cGUgPSBnZXRVbm5hbWVkVHlwZSh2YWx1ZUlu
Zm8tPnJlc29sdmluZ1R5cGUpOwotICAgICAgICBpZiAoIXZhbHVlVHlwZSkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB2YWx1ZVVuaWZ5Tm9kZSA9IHZhbHVlVHlw
ZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYW1lZFR5cGU+KHZhbHVlVW5p
ZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB2YWx1
ZU5hbWVkVW5pZnlOb2RlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHZhbHVlVW5pZnlOb2Rl
KTsKLSAgICAgICAgaWYgKCEoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHZhbHVlTmFt
ZWRVbmlmeU5vZGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih2YWx1
ZU5hbWVkVW5pZnlOb2RlKS5pc0ludCgpKQotICAgICAgICAgICAgJiYgIWlzPEFTVDo6RW51bWVy
YXRpb25EZWZpbml0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gJnZhbHVlTmFtZWRVbmlmeU5vZGU7Ci0gICAgfSko
KTsKLSAgICBpZiAoIXZhbHVlVHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSW52YWxp
ZCB0eXBlIGZvciB0aGUgZXhwcmVzc2lvbiBjb25kaXRpb24gb2YgdGhlIHN3aXRjaCBzdGF0ZW1l
bnQuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBib29sIGhhc0RlZmF1bHQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN3
aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLSAgICAgICAgaWYgKCFzd2l0Y2hD
YXNlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGhhc0RlZmF1bHQgPSB0cnVlOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBzdWNjZXNzID0gc3dpdGNoQ2Fz
ZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFs
JiBpbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgaW50ZWdlckxpdGVyYWwudHlwZSgp
KSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVk
SW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
dHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFs
KSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFu
ZENvbW1pdCgqdmFsdWVUeXBlLCBmbG9hdExpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsm
XShBU1Q6OkJvb2xlYW5MaXRlcmFsJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0
Y2hlcygqdmFsdWVUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgICAgIH0sIFsm
XShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KSAtPiBib29sIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
ZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZh
bHVlVHlwZSwgKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24o
KSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBz
ZXRFcnJvcihFcnJvcigiSW52YWxpZCB0eXBlIGZvciBzd2l0Y2ggY2FzZS4iLCBzd2l0Y2hDYXNl
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNl
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGZpcnN0Q2FzZSA9IHN3aXRjaFN0YXRl
bWVudC5zd2l0Y2hDYXNlcygpW2ldOwotICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGog
PCBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXplKCk7ICsraikgewotICAgICAgICAg
ICAgYXV0byYgc2Vjb25kQ2FzZSA9IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpW2pdOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oZmlyc3RDYXNl
LnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGJvb2w+KHNlY29uZENhc2UudmFsdWUoKSkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8Ym9v
bD4oZmlyc3RDYXNlLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IkNhbm5vdCBkZWZpbmUgbXVsdGlwbGUgZGVmYXVsdCBjYXNlcyBpbiBzd2l0Y2ggc3RhdGVtZW50
LiIsIHNlY29uZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IGZpcnN0Q2FzZS52
YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBm
aXJzdEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vj
b25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJM
aXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kSW50ZWdlckxp
dGVyYWwudmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0SW50ZWdlckxp
dGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2Vjb25kVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9v
bCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0p
KTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIGZpcnN0
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRl
Z2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3RVbnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHNlY29uZEludGVnZXJMaXRl
cmFsLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmlyc3RVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkg
IT0gc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICAgICAgICAg
IH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIHNlY29uZEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkgIT0gc2Vjb25kRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCk7Ci0gICAgICAgICAgICAgICAg
fSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9vbCB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAg
ICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IGRlZmluZSBkdXBsaWNhdGUgY2FzZSBzdGF0ZW1lbnRzIGluIGEgc3dpdGNoLiIsIHNlY29u
ZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWhhc0RlZmF1bHQpIHsKLSAgICAg
ICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdmFsdWVUeXBlKSkgewotICAg
ICAgICAgICAgSGFzaFNldDxpbnQ2NF90PiB2YWx1ZXM7Ci0gICAgICAgICAgICBib29sIHplcm9W
YWx1ZUV4aXN0czsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0
YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHN3
aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2Vy
TGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAg
ICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVn
ZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAgICAgICAg
ICB9LCBbXShhdXRvJikgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAg
ICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgemVyb1ZhbHVlRXhpc3RzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHZhbHVlcy5hZGQodmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPigqdmFsdWVUeXBlKS5pdGVyYXRlQWxsVmFsdWVzKFsmXShpbnQ2NF90
IHZhbHVlKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghemVyb1ZhbHVlRXhpc3RzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmNvbnRh
aW5zKHZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmICgh
c3VjY2VzcykgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0Y2ggY2FzZXMg
bXVzdCBiZSBleGhhdXN0aXZlIG9yIHlvdSBtdXN0IGRlZmluZSBhIGRlZmF1bHQgY2FzZS4iLCBz
d2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBIYXNoU2V0PEFT
VDo6RW51bWVyYXRpb25NZW1iZXIqPiB2YWx1ZXM7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHN3
aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAgICAgICAg
ICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICB9LCBb
XShhdXRvJikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IGVudW1lcmF0aW9uTWVtYmVyIDogZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+
KCp2YWx1ZVR5cGUpLmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCF2YWx1ZXMuY29udGFpbnMoJmVudW1lcmF0aW9uTWVtYmVyLmdldCgpKSkgewotICAgICAgICAg
ICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dpdGNoIGNhc2VzIG92ZXIgYW4gZW51bSBtdXN0
IGJlIGV4aGF1c3RpdmUgb3IgeW91IG11c3QgZGVmaW5lIGEgZGVmYXVsdCBjYXNlLiIsIHN3aXRj
aFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Np
b24pCi17Ci0gICAgQVNTRVJUKGNvbW1hRXhwcmVzc2lvbi5saXN0KCkuc2l6ZSgpID4gMCk7Ci0g
ICAgVmlzaXRvcjo6dmlzaXQoY29tbWFFeHByZXNzaW9uKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbGFzdEluZm8gPSBnZXRJbmZvKGNvbW1hRXhwcmVz
c2lvbi5saXN0KCkubGFzdCgpKTsKLSAgICBmb3J3YXJkVHlwZShjb21tYUV4cHJlc3Npb24sIGxh
c3RJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIHByZWRpY2F0
ZUluZm8gPSByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKHRlcm5hcnlFeHByZXNzaW9uLnByZWRp
Y2F0ZSgpKTsKLSAgICBpZiAoIXByZWRpY2F0ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gYm9keUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5
RXhwcmVzc2lvbigpKTsKLSAgICBhdXRvIGVsc2VJbmZvID0gcmVjdXJzZUFuZEdldEluZm8odGVy
bmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgCi0gICAgYXV0byByZXN1bHRU
eXBlID0gbWF0Y2hBbmRDb21taXQoYm9keUluZm8tPnJlc29sdmluZ1R5cGUsIGVsc2VJbmZvLT5y
ZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIXJlc3VsdFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoImxocyBhbmQgcmhzIG9mIGEgdGVybmFyeSBleHByZXNzaW9uIG11c3QgbWF0Y2guIiwg
dGVybmFyeUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZSh0ZXJuYXJ5RXhwcmVzc2lvbiwgKnJlc3VsdFR5
cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxF
eHByZXNzaW9uKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmlu
Z1R5cGU+PiB0eXBlczsKLSAgICB0eXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhbGxFeHBy
ZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNh
bGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAgIGF1dG8gYXJndW1lbnRJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8oYXJndW1lbnQpOwotICAgICAgICBpZiAoIWFyZ3VtZW50SW5mbykK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMudW5jaGVja2VkQXBwZW5kKGFyZ3Vt
ZW50SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgfQotICAgIC8vIERvbid0IHJlY3Vyc2Ugb24g
dGhlIGNhc3RSZXR1cm5UeXBlLCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBhIE5hbWVk
VHlwZSwgd2hpY2ggd2lsbCBnZXQgdmlzaXRlZCBsYXRlci4KLSAgICAvLyBXZSBkb24ndCB3YW50
IHRvIHJlY3Vyc2UgdG8gdGhlIHNhbWUgbm9kZSB0d2ljZS4KLQotICAgIGF1dG8qIGZ1bmN0aW9u
ID0gcmVzb2x2ZUZ1bmN0aW9uKHR5cGVzLCBjYWxsRXhwcmVzc2lvbi5uYW1lKCksIGNhbGxFeHBy
ZXNzaW9uLmNvZGVMb2NhdGlvbigpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICBOYW1lQ29udGV4dCYgbmFtZUNv
bnRleHQgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKTsKLSAgICAgICAgYXV0byBjYXN0VHlwZXMg
PSBuYW1lQ29udGV4dC5nZXRUeXBlcyhjYWxsRXhwcmVzc2lvbi5uYW1lKCksIG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgICAgIGlmIChjYXN0VHlwZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAg
ICAgIEFTVDo6TmFtZWRUeXBlJiBjYXN0VHlwZSA9IGNhc3RUeXBlc1swXS5nZXQoKTsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKHR5cGVzLCAib3BlcmF0b3IgY2FzdCJf
c3RyLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgJmNhc3RUeXBlKTsKLSAgICAgICAg
ICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGlmIChmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBjYWxsRXhwcmVzc2lvbi5zZXRDYXN0RGF0
YShjYXN0VHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgYmV0dGVyIGVycm9yIG1lc3NhZ2VzIGZvciB3aHkgd2UgY2Fu
J3QgcmVzb2x2ZSB0byBvbmUgb2YgdGhlIG92ZXJyaWRlcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEzMwotICAgICAgICBzZXRFcnJvcihF
cnJvcigiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCB0byBhIGNvbmNyZXRlIGNhbGxlZS4g
TWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgY29tcGF0aWJsZSB0eXBlcy4iLCBjYWxsRXhwcmVzc2lv
bi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQodHlwZXNbaV0uZ2V0KCksICpmdW5jdGlvbi0+cGFy
YW1ldGVycygpW2ldLT50eXBlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcihtYWtl
U3RyaW5nKCJJbnZhbGlkIHR5cGUgZm9yIHBhcmFtZXRlciBudW1iZXIgIiwgaSArIDEsICIgaW4g
ZnVuY3Rpb24gY2FsbC4iKSwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNhbGxFeHByZXNzaW9uLnNl
dEZ1bmN0aW9uKCpmdW5jdGlvbik7Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoY2FsbEV4cHJl
c3Npb24sIGZ1bmN0aW9uLT50eXBlKCkpOwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hl
Y2soUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBDaGVja2VyIGNoZWNrZXIocHJvZ3JhbS5pbnRy
aW5zaWNzKCksIHByb2dyYW0pOwotICAgIGNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dy
YW0pOwotICAgIGlmIChjaGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBjaGVja2Vy
LnJlc3VsdCgpOwotICAgIHJldHVybiBjaGVja2VyLmFzc2lnblR5cGVzKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2
NjRlM2UxN2E4YzBhMmI3MzA1ZjU4MjQwY2UxZjUyMTc3NGU2OWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsK
LQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWVmZmZkOGQ4N2E5NTQyMDllZjcyOWUyYzcyNTNlZDE5MTVlNGVi
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2NhdGlvbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RydWN0IFRva2Vu
OwotCi1jbGFzcyBDb2RlTG9jYXRpb24gewotcHVibGljOgotICAgIENvZGVMb2NhdGlvbigpCi0g
ICAgICAgIDogbV9zdGFydE9mZnNldCgweDdGRkZGRkZGKQotICAgICAgICAsIG1fZW5kT2Zmc2V0
KDB4N0ZGRkZGRkYpCi0gICAgICAgICwgbV9uYW1lU3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBD
b2RlTG9jYXRpb24odW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgQVNU
OjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZz
ZXQpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgICAgICAsIG1fbmFtZVNw
YWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW1lU3BhY2UpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBDb2RlTG9jYXRpb24oY29uc3QgVG9rZW4mKTsKLQotICAgIENvZGVMb2NhdGlvbihjb25zdCBD
b2RlTG9jYXRpb24mIGxvY2F0aW9uMSwgY29uc3QgQ29kZUxvY2F0aW9uJiBsb2NhdGlvbjIpCi0g
ICAgICAgIDogbV9zdGFydE9mZnNldChsb2NhdGlvbjEuc3RhcnRPZmZzZXQoKSkKLSAgICAgICAg
LCBtX2VuZE9mZnNldChsb2NhdGlvbjIuZW5kT2Zmc2V0KCkpCi0gICAgICAgICwgbV9uYW1lU3Bh
Y2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvY2F0aW9uMS5uYW1lU3BhY2UoKSkpCi0gICAgewot
ICAgICAgICBBU1NFUlQobG9jYXRpb24xLm5hbWVTcGFjZSgpID09IGxvY2F0aW9uMi5uYW1lU3Bh
Y2UoKSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgZW5k
T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VuZE9mZnNldDsKLSAgICB9
Ci0KLSAgICBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEFTVDo6TmFtZVNwYWNlPihtX25hbWVTcGFjZSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVMb2NhdGlvbiYgb3RoZXIpIGNvbnN0IAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQgPT0gb3RoZXIubV9zdGFydE9mZnNl
dAotICAgICAgICAgICAgJiYgbV9lbmRPZmZzZXQgPT0gb3RoZXIubV9lbmRPZmZzZXQKLSAgICAg
ICAgICAgICYmIG1fbmFtZVNwYWNlID09IG90aGVyLm1fbmFtZVNwYWNlOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlTG9jYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICp0aGlzICE9IENvZGVMb2NhdGlvbigpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
dW5zaWduZWQgbV9zdGFydE9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IDog
MzE7Ci0gICAgdW5zaWduZWQgbV9uYW1lU3BhY2UgOiAyOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDcyOThkNDljODg2YTE2NjVjYjk4MDliNWViZTMyZTNlMDBmYjFhOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVk
ZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGVudHJ5UG9pbnQp
Ci17Ci0gICAgc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lv
bnM7Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGJvb2wgZm91bmROdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6
IGZ1bmN0aW9uRGVmaW5pdGlvbi0+YXR0cmlidXRlQmxvY2soKSkgewotICAgICAgICAgICAgYXV0
byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm91bmROdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmICgmZnVuY3Rp
b25EZWZpbml0aW9uID09ICZlbnRyeVBvaW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghY29tcHV0ZURpbWVuc2lvbnMpOwotICAgICAgICAgICAgICAgICAgICBjb21wdXRlRGltZW5z
aW9ucyA9IHt7IG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS53aWR0aCgpLCBudW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaGVpZ2h0KCksIG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5k
ZXB0aCgpIH19OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAvLyBDYW5ub3QgZGVjbGFyZSBtdWx0aXBsZSBu
dW10aHJlYWQgYXR0cmlidXRlcyBvbiBhIHNpbmdsZSBmdW5jdGlvbi4KLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25zOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENvbXB1dGVEaW1lbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEyZGRmMGE4M2FhNjQyN2UzYjM1NzlkYWM1NTI5OTg3YjNlNTM3ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1jbGFzcyBQcm9ncmFtOwotCi1zdGQ6Om9wdGlv
bmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9ucyhQcm9ncmFtJiwgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNzg2ZGZhZmVjOTgzMTBm
MzExNTFiNThhYWVkZWJkMGNhN2Q0OTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xF
cnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xD
b2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIEVycm9yIHsKLXB1YmxpYzoKLSAgICBFcnJvcihTdHJpbmcmJiBt
ZXNzYWdlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKQotICAgICAgICA6IG1fbWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpKQotICAgICAgICAsIG1fbG9jYXRpb24oY29kZUxvY2F0aW9uKQotICAg
IHsKLSAgICB9Ci0KLSAgICBFcnJvcihTdHJpbmcmJiBtZXNzYWdlKQotICAgICAgICA6IG1fbWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQotICAgIFN0cmluZyBt
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3Ry
aW5nIG1fbWVzc2FnZTsKLSAgICBDb2RlTG9jYXRpb24gbV9sb2NhdGlvbjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2M2RlOGRjOGUwYmJhNDU5NzlhNGI4MTA5MTcx
MmIxMzFhZjRhYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAi
V0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY2xhc3MgRnVuY3Rpb25TdGFnZUNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJs
aWM6Ci0gICAgRnVuY3Rpb25TdGFnZUNoZWNrZXIoQVNUOjpFbnRyeVBvaW50VHlwZSBlbnRyeVBv
aW50VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKLSAgICAgICAgOiBtX2VudHJ5
UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQotICAgICAgICAsIG1faW50cmluc2ljcyhpbnRyaW5z
aWNzKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4
cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCgm
Y2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuZGR4KCkgfHwgJmNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmRkeSgpKSAmJiBtX2VudHJ5UG9p
bnRUeXBlICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50KSB7Ci0gICAgICAgICAgICBz
ZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSBkZHggb3IgZGR5IGluIGEgbm9uLWZyYWdtZW50IHNo
YWRlci4iLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkg
PT0gbV9pbnRyaW5zaWNzLmFsbE1lbW9yeUJhcnJpZXIoKSB8fCAmY2FsbEV4cHJlc3Npb24uZnVu
Y3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuZGV2aWNlTWVtb3J5QmFycmllcigpIHx8ICZjYWxsRXhw
cmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5ncm91cE1lbW9yeUJhcnJpZXIoKSkK
LSAgICAgICAgICAgICYmIG1fZW50cnlQb2ludFR5cGUgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6
Q29tcHV0ZSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgbWVtb3J5
IGJhcnJpZXIgaW4gYSBub24tY29tcHV0ZSBzaGFkZXIuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBWaXNp
dG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKTsKLSAgICB9Ci0KLSAgICBBU1Q6
OkVudHJ5UG9pbnRUeXBlIG1fZW50cnlQb2ludFR5cGU7Ci0gICAgY29uc3QgSW50cmluc2ljcyYg
bV9pbnRyaW5zaWNzOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRnVuY3Rpb25T
dGFnZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5p
dGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmICghZnVu
Y3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIEZ1bmN0aW9uU3RhZ2VDaGVja2VyIGZ1bmN0aW9uU3RhZ2VDaGVja2VyKCpmdW5j
dGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCksIHByb2dyYW0uaW50cmluc2ljcygpKTsK
LSAgICAgICAgZnVuY3Rpb25TdGFnZUNoZWNrZXIuVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZp
bml0aW9uKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uU3RhZ2VDaGVja2VyLmhhc0Vycm9yKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZnVuY3Rpb25TdGFnZUNoZWNrZXIucmVz
dWx0KCkuZXJyb3IoKSk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMzZmQ5MmZkZGIxN2Q1NGM4MjNk
OThiYmFlMzJlNTE1MTRlMzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tGdW5jdGlvblN0YWdlcyhQcm9ncmFtJik7Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRy
eVBvaW50SXRlbXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDVlODhhNjAx
YzgyMTFhNzk1ZjBjMTZlODM5NmYwMjY4NzI2MDY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
R2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJy
YXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNs
dWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
VHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIEdhdGhlcmVyIDogcHVibGljIFZpc2l0b3IgewotcHVibGlj
OgotICAgIEdhdGhlcmVyKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIEFTVDo6U2VtYW50
aWMqIHNlbWFudGljID0gbnVsbHB0cikKLSAgICAgICAgOiBtX2ludHJpbnNpY3MoaW50cmluc2lj
cykKLSAgICAgICAgLCBtX2N1cnJlbnRTZW1hbnRpYyhzZW1hbnRpYykKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+R2F0aGVyZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHJlc2V0KCkK
LSAgICB7Ci0gICAgICAgIG1fY3VycmVudFNlbWFudGljID0gbnVsbHB0cjsKLSAgICAgICAgbV9j
dXJyZW50VmFyaWFibGVMb2NhdGlvbiA9IHsgfTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+IHRha2VFbnRyeVBvaW50SXRlbXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobV9lbnRyeVBvaW50SXRlbXMpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbkRlZmluaXRpb24mKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1h
bnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZv
ciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5h
cHBlbmQoRW50cnlQb2ludEl0ZW0obV90eXBlUmVmZXJlbmNlcy5sYXN0KCkuZ2V0KCksICptX2N1
cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZh
cmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobWF0Y2hlcyhuYXRpdmVUeXBlRGVjbGFyYXRpb24sIG1faW50cmluc2ljcy52b2lkVHlw
ZSgpKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhwZWN0ZWQgdm9pZCB0eXBl
IGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZW50cnlQb2ludEl0
ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShtX3R5cGVSZWZlcmVuY2VzLmxhc3QoKS5nZXQoKSwg
Km1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IlVuZXhwZWN0ZWQgc2VtYW50aWMgZm9yIHN0cnVjdCBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1f
Y3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmlu
aXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZUVs
ZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRTZW1hbnRpYyA9IHN0
cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKTsKLSAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3Ry
dWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0
cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgbV9wYXRoLnRha2VMYXN0KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZp
bml0aW9uKQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0aW9u
LnR5cGUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5
cGVSZWZlcmVuY2UpCi0gICAgewotICAgICAgICBtX3R5cGVSZWZlcmVuY2VzLmFwcGVuZCh0eXBl
UmVmZXJlbmNlKTsKLSAgICAgICAgYXV0byBkZXB0aCA9IG1fdHlwZVJlZmVyZW5jZXMuc2l6ZSgp
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZGVwdGgsIG1fdHlwZVJlZmVyZW5jZXMuc2l6ZSgp
ID09IGRlcHRoKTsKLSAgICAgICAgbV90eXBlUmVmZXJlbmNlcy5yZW1vdmVMYXN0KCk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLSAgICB7
Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1
cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKHBvaW50ZXJU
eXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVy
cm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJl
bnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKGFycmF5UmVmZXJl
bmNlVHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1f
Y3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQg
c2VtYW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2Nh
dGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQ
b2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShhcnJheVR5cGUsICptX2N1cnJlbnRTZW1h
bnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1f
Y3VycmVudFNlbWFudGljKTsKLSAgICAgICAgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbiA9IHZh
cmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZURl
Y2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgICAgICBtX2N1cnJlbnRTZW1hbnRpYyA9IHZh
cmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKTsKLSAgICAgICAgQVNTRVJUKHZhcmlhYmxlRGVj
bGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZCh2YXJpYWJsZURlY2xhcmF0
aW9uLm5hbWUoKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJh
dGlvbi50eXBlKCkpOwotICAgICAgICBtX3BhdGgudGFrZUxhc3QoKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9wYXRoOwotICAgIGNvbnN0IEludHJpbnNpY3MmIG1f
aW50cmluc2ljczsKLSAgICBBU1Q6OlNlbWFudGljKiBtX2N1cnJlbnRTZW1hbnRpYyB7IG51bGxw
dHIgfTsKLSAgICBDb2RlTG9jYXRpb24gbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbjsKLSAgICBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlR5cGVSZWZlcmVuY2U+PiBtX3R5cGVS
ZWZlcmVuY2VzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gbV9lbnRyeVBvaW50SXRlbXM7
Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRlbXMsIEVycm9yPiBnYXRoZXJFbnRyeVBvaW50
SXRlbXMoY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcywgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBBU1NFUlQoZnVuY3Rpb25EZWZpbml0aW9u
LmVudHJ5UG9pbnRUeXBlKCkpOwotICAgIEdhdGhlcmVyIGlucHV0R2F0aGVyZXIoaW50cmluc2lj
cyk7Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpKSB7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKLSAgICAgICAgaW5wdXRH
YXRoZXJlci5jaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVyKTsKLSAgICAgICAgaWYgKGlucHV0
R2F0aGVyZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChp
bnB1dEdhdGhlcmVyLnJlc3VsdCgpLmVycm9yKCkpOwotICAgIH0KLSAgICBHYXRoZXJlciBvdXRw
dXRHYXRoZXJlcihpbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24uc2VtYW50aWMoKSk7Ci0g
ICAgaWYgKCpmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSAhPSBBU1Q6OkVudHJ5
UG9pbnRUeXBlOjpDb21wdXRlKQotICAgICAgICBvdXRwdXRHYXRoZXJlci5jaGVja0Vycm9yQW5k
VmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKG91dHB1dEdhdGhlcmVy
Lmhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChvdXRwdXRHYXRoZXJl
ci5yZXN1bHQoKS5lcnJvcigpKTsKLQotICAgIHJldHVybiB7eyBpbnB1dEdhdGhlcmVyLnRha2VF
bnRyeVBvaW50SXRlbXMoKSwgb3V0cHV0R2F0aGVyZXIudGFrZUVudHJ5UG9pbnRJdGVtcygpIH19
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50
SXRlbXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0YjhkOWNlNGM3YzM0NzE5
NTI0NDFkMmI5MzhhYTRmZjI3Mjc3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdh
dGhlckVudHJ5UG9pbnRJdGVtcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1jbGFzcyBJbnRyaW5zaWNzOwot
Y2xhc3MgVW5uYW1lZFR5cGU7Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRlbSB7Ci0gICAgRW50cnlQ
b2ludEl0ZW0oQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIEFTVDo6U2VtYW50aWMmIHNl
bWFudGljLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLSAgICAgICAgOiB1bm5hbWVkVHlwZSgmdW5u
YW1lZFR5cGUpCi0gICAgICAgICwgc2VtYW50aWMoJnNlbWFudGljKQotICAgICAgICAsIHBhdGgo
cGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSogdW5uYW1lZFR5cGU7
Ci0gICAgQVNUOjpTZW1hbnRpYyogc2VtYW50aWM7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGF0aDsK
LX07Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRlbXMgewotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4gaW5wdXRzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gb3V0cHV0czsKLX07Ci0KLUV4
cGVjdGVkPEVudHJ5UG9pbnRJdGVtcywgRXJyb3I+IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhjb25z
dCBJbnRyaW5zaWNzJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU0ZjcwMTE4M2Q1MjJkNWMxZmQ1MDVjNjQ4MThkZTcxMTgxZDZkMjIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xIaWdoWm9tYmllRmluZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IEhpZ2hab21iaWVGaW5kZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUu
bmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1v
ZGlmeVdyaXRlLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IXJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb3RFeHByZXNzaW9uLmJhc2UoKS5t
YXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHBy
ZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVCghaW5kZXhFeHByZXNzaW9uLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKS5tYXlC
ZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci19OwotCi12b2lkIGZpbmRIaWdoWm9tYmllcyhQcm9ncmFt
JiBwcm9ncmFtKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLQotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgSGlnaFpvbWJpZUZpbmRlciBmaW5kZXI7Ci0gICAgZmluZGVyLlZpc2l0b3I6
OnZpc2l0KHByb2dyYW0pOwotI2VuZGlmCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2UwM2IyMWIxMDBkMDE3ZjMxZjFhMDNjYzhkMDUwMTk0NDEyY2FjYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGZpbmRIaWdoWm9tYmllcyhQcm9ncmFt
Jik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBl
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZjM4ZTZkNTQ1NWNmZjVkODY3
ZDRkY2UxNzkyNmRmNmY3YTgzZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZl
clR5cGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgQVNUOjpUeXBlJiB1bmlmeVRoaXMsIGNvbnN0
IEFTVDo6VHlwZSYgdW5pZnlPdGhlcikKLXsKLSAgICBpZiAoJnVuaWZ5VGhpcyA9PSAmdW5pZnlP
dGhlcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+
KHVuaWZ5VGhpcykgJiYgaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5T3RoZXIpKSB7Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICAgICAgYXV0byYgbmFtZWRUaGlzID0gZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5VGhpcyk7Ci0gICAgICAgIGF1dG8mIG5hbWVkT3RoZXIgPSBkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlPdGhlcik7Ci0gICAgICAgIEFTU0VSVCghaXM8QVNUOjpUeXBl
RGVmaW5pdGlvbj4obmFtZWRUaGlzKSAmJiAhaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRP
dGhlcikpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGlz
PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5VGhpcykgJiYgaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5p
ZnlPdGhlcikpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFRoaXMgPSBkb3duY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlPih1bmlmeVRoaXMpOwotICAgICAgICBhdXRvJiB1bm5hbWVkT3RoZXIgPSBkb3du
Y2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU90aGVyKTsKLSAgICAgICAgQVNTRVJUKCFpczxB
U1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUaGlzKSAmJiAhaXM8QVNUOjpUeXBlUmVmZXJlbmNl
Pih1bm5hbWVkT3RoZXIpKTsKLSAgICAgICAgcmV0dXJuIHVubmFtZWRUaGlzID09IHVubmFtZWRP
dGhlcjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIG1hdGNoZXMoY29uc3Qg
QVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmIG90
aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhl
ci51bmlmeU5vZGUoKSk7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6Ok5hbWVkVHlwZSYg
bmFtZWRUeXBlLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYgb3RoZXIpCi17Ci0gICAgcmV0dXJuIG1h
dGNoZXMobmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0KLWJv
b2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgQVNU
OjpOYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLnVu
aWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpUeXBlJiB1bmlmeU5vZGUsIEFTVDo6UmVz
b2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5
cGUubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFyZXNvbHZhYmxlVHlwZS5jYW5SZXNv
bHZlKHVuaWZ5Tm9kZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChpczxBU1Q6
Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICBhdXRvJiBuYW1lZFVuaWZ5Tm9kZSA9
IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChuYW1lZFVuaWZ5Tm9kZS5jb2RlTG9jYXRpb24o
KSwgbmFtZWRVbmlmeU5vZGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKHJlc3Vs
dC5jb3B5UmVmKCkpOwotICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLSAgICB9
Ci0KLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gZG93bmNhc3Q8QVNUOjpVbm5h
bWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKHJlc3VsdC5j
b3B5UmVmKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRU
eXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgQVNUOjpS
ZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgcmV0dXJuIG1hdGNoQW5kQ29t
bWl0KHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCByZXNvbHZhYmxlVHlwZSk7Ci19Ci0KLVJlZlB0
cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRU
eXBlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICByZXR1cm4g
bWF0Y2hBbmRDb21taXQobmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCByZXNvbHZhYmxlVHlwZSk7Ci19
Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlJlc29sdmFi
bGVUeXBlJiByZXNvbHZhYmxlVHlwZTEsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVU
eXBlMikKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlMS5tYXliZVJlc29sdmVkVHlwZSgp
KTsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlMi5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAg
ICBpZiAoaXM8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpICYmIGlzPEFT
VDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKSkgewotICAgICAgICByZXNvbHZh
YmxlVHlwZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFi
bGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUyLnJlc29s
dmUoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpLnByZWZl
cnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxU
eXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlz
PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpICYmIGlzPEFTVDo6SW50
ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpKSB7Ci0gICAgICAgIHJlc29sdmFibGVU
eXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxl
VHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZl
KGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpLnByZWZl
cnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICBpZiAo
aXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKSAmJiBp
czxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpKSB7Ci0g
ICAgICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAg
ICAgcmVzb2x2YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICBy
ZXR1cm4gJmRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFi
bGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJiBy
ZXNvbHZhYmxlVHlwZSkKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlLm1heWJlUmVzb2x2
ZWRUeXBlKCkpOwotICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVU
eXBlKSkgewotICAgICAgICBhdXRvJiBmbG9hdExpdGVyYWxUeXBlID0gZG93bmNhc3Q8QVNUOjpG
bG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBl
LnJlc29sdmUoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1
cm4gJmZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICBpZiAoaXM8
QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKSkgewotICAgICAgICBhdXRv
JiBpbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGludGVnZXJM
aXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4gJmludGVnZXJMaXRl
cmFsVHlwZS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgdW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29s
dmUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAg
cmV0dXJuICZ1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIGluZmVyVHlwZXNGb3JUeXBlQXJndW1l
bnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFTVDo6VHlwZUFyZ3VtZW50cyYgdHlw
ZUFyZ3VtZW50cykKLXsKLSAgICBpZiAoaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4ocG9zc2libGVU
eXBlKQotICAgICAgICB8fCBpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KHBvc3NpYmxlVHlw
ZSkKLSAgICAgICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHBvc3NpYmxlVHlw
ZSkpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHMuaXNFbXB0eSgpOwotICAgIH0KLQot
ICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPihwb3NzaWJsZVR5cGUpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24udHlwZUFyZ3VtZW50cygpLnNpemUoKSAhPSB0eXBlQXJndW1lbnRzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbiogdHlwZUFyZ3VtZW50RXhwcmVzc2lvbiA9IG51bGxwdHI7Ci0gICAg
ICAgIEFTVDo6VHlwZVJlZmVyZW5jZSogdHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSA9IG51bGxw
dHI7Ci0gICAgICAgIEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uKiBuYXRpdmVUeXBlQXJndW1lbnRF
eHByZXNzaW9uID0gbnVsbHB0cjsKLSAgICAgICAgQVNUOjpUeXBlUmVmZXJlbmNlKiBuYXRpdmVU
eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlID0gbnVsbHB0cjsKLQotICAgICAgICBhdXRvIGFzc2ln
biA9IFsmXShBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50LCBBU1Q6OkNvbnN0YW50RXhw
cmVzc2lvbiomIGV4cHJlc3Npb24sIEFTVDo6VHlwZVJlZmVyZW5jZSomIHR5cGVSZWZlcmVuY2Up
IHsKLSAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpDb25z
dGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgewotICAgICAgICAgICAgICAgIGV4
cHJlc3Npb24gPSAmY29uc3RhbnRFeHByZXNzaW9uOwotICAgICAgICAgICAgfSwgWyZdKFJlZjxB
U1Q6OlR5cGVSZWZlcmVuY2U+JiB0aGVUeXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICAgICAg
dHlwZVJlZmVyZW5jZSA9IHRoZVR5cGVSZWZlcmVuY2UucHRyKCk7Ci0gICAgICAgICAgICB9KSwg
dHlwZUFyZ3VtZW50KTsKLSAgICAgICAgfTsKLQotICAgICAgICBhc3NpZ24odHlwZUFyZ3VtZW50
c1tpXSwgdHlwZUFyZ3VtZW50RXhwcmVzc2lvbiwgdHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSk7
Ci0gICAgICAgIGFzc2lnbihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpW2ld
LCBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uLCBuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVm
ZXJlbmNlKTsKLQotICAgICAgICBpZiAodHlwZUFyZ3VtZW50RXhwcmVzc2lvbiAmJiBuYXRpdmVU
eXBlQXJndW1lbnRFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAoIXR5cGVBcmd1bWVudEV4
cHJlc3Npb24tPm1hdGNoZXMoKm5hdGl2ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24pKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlQXJndW1lbnRU
eXBlUmVmZXJlbmNlICYmIG5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpIHsKLSAgICAg
ICAgICAgIGlmICghbWF0Y2hlcygqdHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSwgKm5hdGl2ZVR5
cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZUtpbmQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgaW5mZXJUeXBlc0ZvckNhbGxJbXBs
KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBU
eXBlS2luZCogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgaWYgKHBvc3NpYmxlRnVuY3Rpb24ucGFy
YW1ldGVycygpLnNpemUoKSAhPSBhcmd1bWVudFR5cGVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9zc2libGVGdW5jdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBzdWNjZXNzID0gYXJndW1lbnRU
eXBlc1tpXS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mIHVubmFtZWRUeXBlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVz
KCpwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLCB1bm5hbWVkVHlwZSk7
Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY2FuUmVzb2x2ZShwb3NzaWJsZUZ1bmN0
aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT51bmlmeU5vZGUoKSk7Ci0gICAgICAgIH0pKTsK
LSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICBpZiAoY2FzdFJldHVyblR5cGUgJiYgIW1hdGNoZXMocG9zc2libGVGdW5jdGlvbi50eXBl
KCksICpjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29s
dmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1
cm5UeXBlKQotewotICAgIHJldHVybiBpbmZlclR5cGVzRm9yQ2FsbEltcGwocG9zc2libGVGdW5j
dGlvbiwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUpOwotfQotCi1ib29sIGluZmVyVHlw
ZXNGb3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVz
LCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICByZXR1cm4g
aW5mZXJUeXBlc0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rpb24sIGFyZ3VtZW50VHlwZXMsIGNh
c3RSZXR1cm5UeXBlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyMmYzN2RjMGQ4NmM4NzYwNzVjZDc0YWYw
N2U4YTIxNGE3MDhkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2
aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSA8bWVt
b3J5PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmFtZWRUeXBl
OwotY2xhc3MgUmVzb2x2YWJsZVR5cGU7Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotfQotCi1ib29s
IG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUm
KTsKLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6Ok5hbWVkVHlwZSYsIGNvbnN0IEFTVDo6TmFtZWRU
eXBlJik7Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYsIGNvbnN0IEFTVDo6
TmFtZWRUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNU
OjpVbm5hbWVkVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFt
ZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6Ok5hbWVkVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5
cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlJlc29s
dmFibGVUeXBlJiwgQVNUOjpSZXNvbHZhYmxlVHlwZSYpOwotUmVmUHRyPEFTVDo6VW5uYW1lZFR5
cGU+IGNvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1ib29sIGluZmVyVHlwZXNGb3JUeXBl
QXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFTVDo6VHlwZUFyZ3VtZW50
cyYpOwotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBv
c3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBl
KTsKLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3Nz
aWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBl
KTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0MzdhMmNlMmVjNjA4NGI5NWIz
Y2Q1NjE3YmI2OGIyNGY4OWVlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJp
bnNpY3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBl
UmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGNv
bnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZVR5cGVOYW1lc1tdOwotY29uc3RleHByIGNv
bnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZUlubmVyVHlwZU5hbWVzW107Ci1jb25zdGV4
cHIgY29uc3QgY2hhciogSW50cmluc2ljczo6bV9kZXB0aFRleHR1cmVJbm5lclR5cGVzW107Ci0K
LUludHJpbnNpY3M6OkludHJpbnNpY3MoKQotewotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZChB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24p
Ci17Ci0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJkZHgiKQot
ICAgICAgICBtX2RkeCA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYg
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJkZHkiKQotICAgICAgICBtX2Rk
eSA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIp
Ci0gICAgICAgIG1fYWxsTWVtb3J5QmFycmllciA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
OwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJEZXZp
Y2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fZGV2aWNlTWVtb3J5QmFy
cmllciA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBT
eW5jIikKLSAgICAgICAgbV9ncm91cE1lbW9yeUJhcnJpZXIgPSAmbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbjsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRQcmltaXRpdmUoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ2b2lkIikK
LSAgICAgICAgbV92b2lkVHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgZWxzZSBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAgIG1fYm9v
bFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0ludCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNOdW1i
ZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVn
ZXIoW10oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB4ID49IDA7Ci0gICAgICAgIH0pOwot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRl
Z2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRGbG9hdChbXShm
bG9hdCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0YXRpY19j
YXN0PHVpbnQzMl90Pih4KSkgPT0geDsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRTdWNjZXNzb3IoW10oaW50NjRfdCB4KSAtPiBpbnQ2NF90IHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCArIDEpOwotICAgICAgICB9KTsK
LSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIo
W10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoW10odW5zaWduZWQgeCkgLT4gaW50NjRf
dCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpOwotICAgICAg
ICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEl0ZXJhdGVBbGxWYWx1ZXMo
W10oY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsKLSAgICAg
ICAgICAgIGZvciAoaW50NjRfdCBpID0gMDsgaSA8IDB4MTAwMDAwMDAwOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY2FsbGJhY2soaSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgbV91aW50VHlwZSA9ICZuYXRpdmVU
eXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0ludCgp
OwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNOdW1iZXIoKTsKLSAgICAgICAg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzU2lnbmVkKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCkgewotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkIHgpIHsKLSAgICAgICAg
ICAgIHJldHVybiB4IDw9IDIxNDc0ODM2NDc7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxvYXQgeCkgewotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxpbnQzMl90Pih4KSkg
PT0geDsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRTdWNj
ZXNzb3IoW10oaW50NjRfdCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQzMl90Pih4ICsgMSk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihbXShpbnQgeCkgLT4gaW50NjRf
dCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCk7Ci0gICAgICAg
IH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tVW5z
aWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkIHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldEl0ZXJhdGVBbGxWYWx1ZXMoW10oY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGZvciAoaW50NjRfdCBp
ID0gLTIxNDc0ODM2NDc7IGkgPCAyMTQ3NDgzNjQ4OyArK2kpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY2FsbGJhY2soaSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9KTsKLSAgICAgICAgbV9pbnRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlv
bjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImZsb2F0
IikgewotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNOdW1iZXIoKTsKLSAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzRmxvYXRpbmcoKTsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVnZXIoW10oaW50KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoW10odW5zaWduZWQpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldENhblJlcHJlc2VudEZsb2F0KFtdKGZsb2F0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmxvYXRUeXBlID0gJm5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gImF0b21pY19pbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0F0
b21pYygpOwotICAgICAgICBtX2F0b21pY0ludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9u
OwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRvbWlj
X3VpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0F0b21pYygpOwot
ICAgICAgICBtX2F0b21pY1VpbnRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9
IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNhbXBsZXIiKSB7Ci0g
ICAgICAgIG1fc2FtcGxlclR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFxdWVUeXBlKCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIElu
dHJpbnNpY3M6OmFkZFZlY3RvcihBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpICE9
ICJ2ZWN0b3IiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMik7Ci0gICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgIGF1dG8mIGlubmVyVHlwZSA9IHN0YXRpY19jYXN0
PEFTVDo6VHlwZVJlZmVyZW5jZSY+KFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+Pihu
YXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgYXV0byYgbGVu
Z3RoRXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsKLSAgICBBU1NFUlQoIWlubmVyVHlw
ZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bioqIGFycmF5OwotICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09ICJib29sIikKLSAgICAgICAg
YXJyYXkgPSBtX3ZlY3RvckJvb2w7Ci0gICAgZWxzZSBpZiAoaW5uZXJUeXBlLm5hbWUoKSA9PSAi
dWludCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JVaW50OwotICAgIGVsc2UgaWYgKGlubmVy
VHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JJbnQ7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpbm5lclR5cGUubmFtZSgpID09ICJmbG9hdCIpOwotICAg
ICAgICBhcnJheSA9IG1fdmVjdG9yRmxvYXQ7Ci0gICAgfQotICAgIGludCBsZW5ndGggPSBsZW5n
dGhFeHByZXNzaW9uLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICBBU1NFUlQobGVuZ3Ro
ID49IDIgJiYgbGVuZ3RoIDw9IDQpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1Zl
Y3RvcigpOwotICAgIGFycmF5W2xlbmd0aCAtIDJdID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRNYXRyaXgoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAibWF0cml4IikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzTWF0cml4KCk7Ci0KLSAg
ICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0g
Myk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVy
ZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBB
U1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgIEFTU0VSVChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVj
bGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzJdKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgSW50cmluc2ljczo6YWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNlJiBpbm5lclR5cGUpCi17
Ci0gICAgYXV0byB0ZXh0dXJlVHlwZUluZGV4ID0gc3RkOjpmaW5kKG1fdGV4dHVyZVR5cGVOYW1l
cywgbV90ZXh0dXJlVHlwZU5hbWVzICsgV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFt
ZXMpLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKSAtIG1fdGV4dHVyZVR5cGVOYW1lczsK
LSAgICBpZiAodGV4dHVyZVR5cGVJbmRleCA9PSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5
cGVOYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGlubmVyVHlw
ZUluZGV4ID0gV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcyk7Ci0gICAg
dW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcyk7ICsraSkgewotICAgICAg
ICBpZiAoaW5uZXJUeXBlLm5hbWUoKS5zdGFydHNXaXRoKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVz
W2ldKSkgewotICAgICAgICAgICAgaW5uZXJUeXBlSW5kZXggPSBpOwotICAgICAgICAgICAgaWYg
KGlubmVyVHlwZS5uYW1lKCkgPT0gbV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbaV0pCi0gICAgICAg
ICAgICAgICAgdmVjdG9yTGVuZ3RoID0gMTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlubmVyVHlwZS5uYW1lKCku
bGVuZ3RoKCkgPT0gc3RybGVuKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzW2ldKSArIDEpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlubmVyVHlwZS5u
YW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdID09ICcyJwotICAgICAgICAgICAg
ICAgICAgICB8fCBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkgLSAx
XSA9PSAnMycKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5uZXJUeXBlLm5hbWUoKVtpbm5lclR5
cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzQnKTsKLSAgICAgICAgICAgICAgICB2ZWN0b3JM
ZW5ndGggPSBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkgLSAxXSAt
ICcwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VS
VCh2ZWN0b3JMZW5ndGggJiYgdmVjdG9yTGVuZ3RoIDwgNSk7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaW5uZXJUeXBlSW5kZXggIT0gV1RGX0FSUkFZX0xFTkdUSChtX3Rl
eHR1cmVJbm5lclR5cGVOYW1lcykpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1Rl
eHR1cmUoKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFxdWVUeXBlKCk7Ci0g
ICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxREFycmF5IiB8
fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IiB8fCBu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRBcnJheSIgfHwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1cmVBcnJheSgpOwotICAgIGlmIChuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIlJXVGV4dHVyZTNEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUyREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzV3Jp
dGFibGVUZXh0dXJlKCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlRleHR1cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJl
MUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxREFycmF5IiB8
fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IikKLSAg
ICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24oMSk7Ci0gICAg
aWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyRCIgfHwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJUZXh0dXJlMkRBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRUZXh0dXJlRGltZW5zaW9uKDIpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlM0QiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJX
VGV4dHVyZTNEIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1l
bnNpb24oMyk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1
cmVDdWJlIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQ3ViZVRleHR1cmUo
KTsKLSAgICBtX2Z1bGxUZXh0dXJlc1t0ZXh0dXJlVHlwZUluZGV4XVtpbm5lclR5cGVJbmRleF1b
dmVjdG9yTGVuZ3RoIC0gMV0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZERlcHRoVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2Um
IGlubmVyVHlwZSkKLXsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbioqIHRleHR1cmUg
PSBudWxscHRyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0
dXJlRGVwdGgyRCIpCi0gICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVEZXB0aDJEOwotICAgIGVs
c2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEQXJy
YXkiKQotICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJlRGVwdGgyREFycmF5OwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVy
ZURlcHRoQ3ViZSIpOwotICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJlRGVwdGhDdWJlOwotICAg
IH0KLSAgICBhdXRvIGlubmVyVHlwZUluZGV4ID0gc3RkOjpmaW5kKG1fZGVwdGhUZXh0dXJlSW5u
ZXJUeXBlcywgbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzICsgV1RGX0FSUkFZX0xFTkdUSChtX2Rl
cHRoVGV4dHVyZUlubmVyVHlwZXMpLCBpbm5lclR5cGUubmFtZSgpKSAtIG1fZGVwdGhUZXh0dXJl
SW5uZXJUeXBlczsKLSAgICBBU1NFUlQoaW5uZXJUeXBlSW5kZXggIT0gV1RGX0FSUkFZX0xFTkdU
SChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzT3BhcXVlVHlw
ZSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURlcHRoMkRBcnJheSkKLSAgICAgICAg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZUFycmF5KCk7Ci0gICAgaWYgKHRleHR1
cmUgPT0gbV90ZXh0dXJlRGVwdGhDdWJlKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0SXNDdWJlVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJl
RGltZW5zaW9uKDIpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0RlcHRoVGV4dHVy
ZSgpOwotICAgIHRleHR1cmVbaW5uZXJUeXBlSW5kZXhdID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlv
bjsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgQVNTRVJUKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVj
bGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgYXV0byYgaW5uZXJUeXBlID0gc3Rh
dGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4oV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVy
ZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBB
U1NFUlQoIWlubmVyVHlwZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAgICBpZiAoYWRkRnVs
bFRleHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uLCBpbm5lclR5cGUpKSB7Ci0gICAgICAgIG1f
dGV4dHVyZVNldC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgYWRkRGVwdGhUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgaW5uZXJU
eXBlKTsKLSAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotfQot
Ci12b2lkIEludHJpbnNpY3M6OmFkZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZl
VHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChhZGRQcmltaXRpdmUobmF0aXZlVHlwZURlY2xh
cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhZGRWZWN0b3IobmF0aXZlVHlwZURl
Y2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhZGRNYXRyaXgobmF0aXZlVHlw
ZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFkZFRleHR1cmUobmF0aXZlVHlw
ZURlY2xhcmF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZmZmZhNWU0NGU0MGQzNjk2ODI2YWI4ZDhk
NmFmNzY1Yzg1NTJkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3Mu
aAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3MgewotcHVibGljOgotICAgIEludHJp
bnNpY3MoKTsKLQotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYp
OwotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdm9pZFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdm9pZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fdm9pZFR5cGU7Ci0gICAgfQot
Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGJvb2xUeXBlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2Jvb2xUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX2Jvb2xUeXBl
OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBib29sVmVjdG9yVHlw
ZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJu
ICptX3ZlY3RvckJvb2xbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiB1aW50VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV91aW50
VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV91aW50VHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV9pbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX2ludFR5cGU7Ci0gICAgfQotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnQyVHlwZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV92ZWN0b3JVaW50WzBdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvclVp
bnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnQ0VHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JVaW50WzJdKTsKLSAgICAg
ICAgcmV0dXJuICptX3ZlY3RvclVpbnRbMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIHVpbnRWZWN0b3JUeXBlRm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBz
aXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yVWludFtzaXplIC0gMl07Ci0gICAg
fQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludDJUeXBlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckludFswXSk7Ci0gICAgICAgIHJldHVybiAqbV92
ZWN0b3JJbnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGlu
dDRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckludFsyXSk7Ci0g
ICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRbMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIGludFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0
Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8
IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRbc2l6ZSAtIDJdOwotICAg
IH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBzYW1wbGVyVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9zYW1wbGVyVHlwZSk7Ci0gICAgICAgIHJldHVybiAq
bV9zYW1wbGVyVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
ZmxvYXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Zsb2F0VHlwZSk7Ci0g
ICAgICAgIHJldHVybiAqbV9mbG9hdFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIGZsb2F0MlR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dmVjdG9yRmxvYXRbMF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbMF07Ci0gICAg
fQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0M1R5cGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRbMV0pOwotICAgICAgICByZXR1cm4g
Km1fdmVjdG9yRmxvYXRbMV07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mIGZsb2F0NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yRmxv
YXRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbMl07Ci0gICAgfQotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VmVjdG9yVHlwZUZvclNpemUodW5zaWdu
ZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gMiB8
fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckZsb2F0
W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgbWF5IGhhdmUgYmVl
biBwcnVuZWQgZnJvbSB0aGUgQVNUIGlmIHRoZXkgYXJlIHVudXNlZC4KLSAgICBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRkeCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9kZHg7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBkZHko
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR5OwotICAgIH0KLQotICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogYWxsTWVtb3J5QmFycmllcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hbGxNZW1vcnlCYXJyaWVyOwotICAgIH0KLQotICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGV2aWNlTWVtb3J5QmFycmllcigpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9kZXZpY2VNZW1vcnlCYXJyaWVyOwotICAgIH0KLQotICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZ3JvdXBNZW1vcnlCYXJyaWVyKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyb3VwTWVtb3J5QmFycmllcjsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgYm9vbCBhZGRQcmltaXRpdmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mKTsKLSAgICBib29sIGFkZFZlY3RvcihBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwot
ICAgIGJvb2wgYWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgYm9v
bCBhZGRGdWxsVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYsIEFTVDo6VHlwZVJl
ZmVyZW5jZSYpOwotICAgIHZvaWQgYWRkRGVwdGhUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiwgQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBhZGRUZXh0dXJlKEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBIYXNoU2V0PGNvbnN0IEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uKj4gbV90ZXh0dXJlU2V0OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fdm9pZFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fYm9vbFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fdWludFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1faW50VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiogbV9mbG9hdFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fYXRvbWljSW50VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiogbV9hdG9taWNVaW50VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9zYW1wbGVyVHlwZSB7IG51bGxwdHIgfTsKLQotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3RvckJvb2xbM10geyAwIH07Ci0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yVWludFszXSB7IDAgfTsKLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JJbnRbM10geyAwIH07Ci0gICAgQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yRmxvYXRbM10geyAwIH07Ci0KLSAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1fdGV4dHVyZVR5cGVOYW1lc1tdID0geyAiVGV4dHVy
ZTFEIiwgIlJXVGV4dHVyZTFEIiwgIlRleHR1cmUyRCIsICJSV1RleHR1cmUyRCIsICJUZXh0dXJl
M0QiLCAiUldUZXh0dXJlM0QiLCAiVGV4dHVyZUN1YmUiLCAiVGV4dHVyZTFEQXJyYXkiLCAiUldU
ZXh0dXJlMURBcnJheSIsICJUZXh0dXJlMkRBcnJheSIsICJSV1RleHR1cmUyREFycmF5IiB9Owot
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBtX3RleHR1cmVJbm5lclR5cGVOYW1l
c1tdID0geyAidWludCIsICJpbnQiLCAiZmxvYXQiIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV9mdWxsVGV4dHVyZXNbV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBl
TmFtZXMpXVtXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzKV1bNF0ge3t7
IDAgfX19OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBtX2RlcHRoVGV4dHVy
ZUlubmVyVHlwZXNbXSA9ICB7ICJmbG9hdCIgfTsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEW1dURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJ
bm5lclR5cGVzKV0geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdGV4
dHVyZURlcHRoMkRBcnJheVtXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBl
cyldIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0
aEN1YmVbV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpXSB7IDAgfTsK
LQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9kZHggeyBudWxscHRyIH07
Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2RkeSB7IG51bGxwdHIgfTsK
LSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fYWxsTWVtb3J5QmFycmllciB7
IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZGV2aWNl
TWVtb3J5QmFycmllciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIG1fZ3JvdXBNZW1vcnlCYXJyaWVyIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMZXhlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTExleGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ2YjBl
YWNjZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3NDNiOTdiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTExleGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NDIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY29uc3QgY2hhciogVG9rZW46OnR5cGVOYW1lKFR5cGUgdHlwZSkK
LXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFR5cGU6OkludExpdGVyYWw6Ci0gICAg
ICAgIHJldHVybiAiaW50IGxpdGVyYWwiOwotICAgIGNhc2UgVHlwZTo6VWludExpdGVyYWw6Ci0g
ICAgICAgIHJldHVybiAidWludCBsaXRlcmFsIjsKLSAgICBjYXNlIFR5cGU6OkZsb2F0TGl0ZXJh
bDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCBsaXRlcmFsIjsKLSAgICBjYXNlIFR5cGU6OlN0cnVj
dDoKLSAgICAgICAgcmV0dXJuICJzdHJ1Y3QiOwotICAgIGNhc2UgVHlwZTo6VHlwZWRlZjoKLSAg
ICAgICAgcmV0dXJuICJ0eXBlZGVmIjsKLSAgICBjYXNlIFR5cGU6OkVudW06Ci0gICAgICAgIHJl
dHVybiAiZW51bSI7Ci0gICAgY2FzZSBUeXBlOjpPcGVyYXRvcjoKLSAgICAgICAgcmV0dXJuICJv
cGVyYXRvciI7Ci0gICAgY2FzZSBUeXBlOjpJZjoKLSAgICAgICAgcmV0dXJuICJpZiI7Ci0gICAg
Y2FzZSBUeXBlOjpFbHNlOgotICAgICAgICByZXR1cm4gImVsc2UiOwotICAgIGNhc2UgVHlwZTo6
Q29udGludWU6Ci0gICAgICAgIHJldHVybiAiY29udGludWUiOwotICAgIGNhc2UgVHlwZTo6QnJl
YWs6Ci0gICAgICAgIHJldHVybiAiYnJlYWsiOwotICAgIGNhc2UgVHlwZTo6U3dpdGNoOgotICAg
ICAgICByZXR1cm4gInN3aXRjaCI7Ci0gICAgY2FzZSBUeXBlOjpDYXNlOgotICAgICAgICByZXR1
cm4gImNhc2UiOwotICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJkZWZh
dWx0IjsKLSAgICBjYXNlIFR5cGU6OkZhbGx0aHJvdWdoOgotICAgICAgICByZXR1cm4gImZhbGx0
aHJvdWdoIjsKLSAgICBjYXNlIFR5cGU6OkZvcjoKLSAgICAgICAgcmV0dXJuICJmb3IiOwotICAg
IGNhc2UgVHlwZTo6V2hpbGU6Ci0gICAgICAgIHJldHVybiAid2hpbGUiOwotICAgIGNhc2UgVHlw
ZTo6RG86Ci0gICAgICAgIHJldHVybiAiZG8iOwotICAgIGNhc2UgVHlwZTo6UmV0dXJuOgotICAg
ICAgICByZXR1cm4gInJldHVybiI7Ci0gICAgY2FzZSBUeXBlOjpOdWxsOgotICAgICAgICByZXR1
cm4gIm51bGwiOwotICAgIGNhc2UgVHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0dXJuICJ0cnVlIjsK
LSAgICBjYXNlIFR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4gImZhbHNlIjsKLSAgICBjYXNl
IFR5cGU6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNvbnN0YW50IjsKLSAgICBjYXNlIFR5
cGU6OkRldmljZToKLSAgICAgICAgcmV0dXJuICJkZXZpY2UiOwotICAgIGNhc2UgVHlwZTo6VGhy
ZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFkZ3JvdXAiOwotICAgIGNhc2UgVHlwZTo6
VGhyZWFkOgotICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0gICAgY2FzZSBUeXBlOjpTcGFjZToK
LSAgICAgICAgcmV0dXJuICJzcGFjZSI7Ci0gICAgY2FzZSBUeXBlOjpWZXJ0ZXg6Ci0gICAgICAg
IHJldHVybiAidmVydGV4IjsKLSAgICBjYXNlIFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1
cm4gImZyYWdtZW50IjsKLSAgICBjYXNlIFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVybiAi
Y29tcHV0ZSI7Ci0gICAgY2FzZSBUeXBlOjpOdW1UaHJlYWRzOgotICAgICAgICByZXR1cm4gIm51
bXRocmVhZHMiOwotICAgIGNhc2UgVHlwZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4g
IlNWX0luc3RhbmNlSUQiOwotICAgIGNhc2UgVHlwZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0
dXJuICJTVl9WZXJ0ZXhJRCI7Ci0gICAgY2FzZSBUeXBlOjpQU2l6ZToKLSAgICAgICAgcmV0dXJu
ICJQU0laRSI7Ci0gICAgY2FzZSBUeXBlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gIlNW
X1Bvc2l0aW9uIjsKLSAgICBjYXNlIFR5cGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVy
biAiU1ZfSXNGcm9udEZhY2UiOwotICAgIGNhc2UgVHlwZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAg
ICAgcmV0dXJuICJTVl9TYW1wbGVJbmRleCI7Ci0gICAgY2FzZSBUeXBlOjpTVklubmVyQ292ZXJh
Z2U6Ci0gICAgICAgIHJldHVybiAiU1ZfSW5uZXJDb3ZlcmFnZSI7Ci0gICAgY2FzZSBUeXBlOjpT
VlRhcmdldDoKLSAgICAgICAgcmV0dXJuICJTVl9UYXJnZXQiOwotICAgIGNhc2UgVHlwZTo6U1ZE
ZXB0aDoKLSAgICAgICAgcmV0dXJuICJTVl9EZXB0aCI7Ci0gICAgY2FzZSBUeXBlOjpTVkNvdmVy
YWdlOgotICAgICAgICByZXR1cm4gIlNWX0NvdmVyYWdlIjsKLSAgICBjYXNlIFR5cGU6OlNWRGlz
cGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJTVl9EaXNwYXRjaFRocmVhZElEIjsKLSAg
ICBjYXNlIFR5cGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuICJTVl9Hcm91cElEIjsKLSAg
ICBjYXNlIFR5cGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuICJTVl9Hcm91cEluZGV4
IjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJTVl9H
cm91cFRocmVhZElEIjsKLSAgICBjYXNlIFR5cGU6OkF0dHJpYnV0ZToKLSAgICAgICAgcmV0dXJu
ICJTVl9BdHRyaWJ1dGUiOwotICAgIGNhc2UgVHlwZTo6UmVnaXN0ZXI6Ci0gICAgICAgIHJldHVy
biAicmVnaXN0ZXIiOwotICAgIGNhc2UgVHlwZTo6U3BlY2lhbGl6ZWQ6Ci0gICAgICAgIHJldHVy
biAic3BlY2lhbGl6ZWQiOwotICAgIGNhc2UgVHlwZTo6TmF0aXZlOgotICAgICAgICByZXR1cm4g
Im5hdGl2ZSI7Ci0gICAgY2FzZSBUeXBlOjpSZXN0cmljdGVkOgotICAgICAgICByZXR1cm4gInJl
c3RyaWN0ZWQiOwotICAgIGNhc2UgVHlwZTo6VW5kZXJzY29yZToKLSAgICAgICAgcmV0dXJuICJf
IjsKLSAgICBjYXNlIFR5cGU6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byI7Ci0gICAgY2Fz
ZSBUeXBlOjpQcm90b2NvbDoKLSAgICAgICAgcmV0dXJuICJwcm90b2NvbCI7Ci0gICAgY2FzZSBU
eXBlOjpDb25zdDoKLSAgICAgICAgcmV0dXJuICJjb25zdCI7Ci0gICAgY2FzZSBUeXBlOjpTdGF0
aWM6Ci0gICAgICAgIHJldHVybiAic3RhdGljIjsKLSAgICBjYXNlIFR5cGU6OlF1YWxpZmllcjoK
LSAgICAgICAgcmV0dXJuICJxdWFsaWZpZXIiOwotICAgIGNhc2UgVHlwZTo6SWRlbnRpZmllcjoK
LSAgICAgICAgcmV0dXJuICJpZGVudGlmaWVyIjsKLSAgICBjYXNlIFR5cGU6Ok9wZXJhdG9yTmFt
ZToKLSAgICAgICAgcmV0dXJuICJvcGVyYXRvciBuYW1lIjsKLSAgICBjYXNlIFR5cGU6OkVxdWFs
c1NpZ246Ci0gICAgICAgIHJldHVybiAiPSI7Ci0gICAgY2FzZSBUeXBlOjpTZW1pY29sb246Ci0g
ICAgICAgIHJldHVybiAiOyI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0Q3VybHlCcmFja2V0OgotICAg
ICAgICByZXR1cm4gInsiOwotICAgIGNhc2UgVHlwZTo6UmlnaHRDdXJseUJyYWNrZXQ6Ci0gICAg
ICAgIHJldHVybiAifSI7Ci0gICAgY2FzZSBUeXBlOjpDb2xvbjoKLSAgICAgICAgcmV0dXJuICI6
IjsKLSAgICBjYXNlIFR5cGU6OkNvbW1hOgotICAgICAgICByZXR1cm4gIiwiOwotICAgIGNhc2Ug
VHlwZTo6TGVmdFBhcmVudGhlc2lzOgotICAgICAgICByZXR1cm4gIigiOwotICAgIGNhc2UgVHlw
ZTo6UmlnaHRQYXJlbnRoZXNpczoKLSAgICAgICAgcmV0dXJuICIpIjsKLSAgICBjYXNlIFR5cGU6
OlNxdWFyZUJyYWNrZXRQYWlyOgotICAgICAgICByZXR1cm4gIltdIjsKLSAgICBjYXNlIFR5cGU6
OkxlZnRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4gIlsiOwotICAgIGNhc2UgVHlwZTo6
UmlnaHRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4gIl0iOwotICAgIGNhc2UgVHlwZTo6
U3RhcjoKLSAgICAgICAgcmV0dXJuICIqIjsKLSAgICBjYXNlIFR5cGU6Okxlc3NUaGFuU2lnbjoK
LSAgICAgICAgcmV0dXJuICI8IjsKLSAgICBjYXNlIFR5cGU6OkdyZWF0ZXJUaGFuU2lnbjoKLSAg
ICAgICAgcmV0dXJuICI+IjsKLSAgICBjYXNlIFR5cGU6OkZ1bGxTdG9wOgotICAgICAgICByZXR1
cm4gIi4iOwotICAgIGNhc2UgVHlwZTo6UGx1c0VxdWFsczoKLSAgICAgICAgcmV0dXJuICIrPSI7
Ci0gICAgY2FzZSBUeXBlOjpNaW51c0VxdWFsczoKLSAgICAgICAgcmV0dXJuICItPSI7Ci0gICAg
Y2FzZSBUeXBlOjpUaW1lc0VxdWFsczoKLSAgICAgICAgcmV0dXJuICIqPSI7Ci0gICAgY2FzZSBU
eXBlOjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiLz0iOwotICAgIGNhc2UgVHlwZTo6
TW9kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiU9IjsKLSAgICBjYXNlIFR5cGU6OlhvckVxdWFs
czoKLSAgICAgICAgcmV0dXJuICJePSI7Ci0gICAgY2FzZSBUeXBlOjpBbmRFcXVhbHM6Ci0gICAg
ICAgIHJldHVybiAiJj0iOwotICAgIGNhc2UgVHlwZTo6T3JFcXVhbHM6Ci0gICAgICAgIHJldHVy
biAifD0iOwotICAgIGNhc2UgVHlwZTo6UmlnaHRTaGlmdEVxdWFsczoKLSAgICAgICAgcmV0dXJu
ICI+Pj0iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0RXF1YWxzOgotICAgICAgICByZXR1cm4g
Ijw8PSI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzUGx1czoKLSAgICAgICAgcmV0dXJuICIrKyI7Ci0g
ICAgY2FzZSBUeXBlOjpNaW51c01pbnVzOgotICAgICAgICByZXR1cm4gIi0tIjsKLSAgICBjYXNl
IFR5cGU6OkFycm93OgotICAgICAgICByZXR1cm4gIi0+IjsKLSAgICBjYXNlIFR5cGU6OlF1ZXN0
aW9uTWFyazoKLSAgICAgICAgcmV0dXJuICI/IjsKLSAgICBjYXNlIFR5cGU6Ok9yT3I6Ci0gICAg
ICAgIHJldHVybiAifHwiOwotICAgIGNhc2UgVHlwZTo6QW5kQW5kOgotICAgICAgICByZXR1cm4g
IiYmIjsKLSAgICBjYXNlIFR5cGU6Ok9yOgotICAgICAgICByZXR1cm4gInwiOwotICAgIGNhc2Ug
VHlwZTo6WG9yOgotICAgICAgICByZXR1cm4gIl4iOwotICAgIGNhc2UgVHlwZTo6QW5kOgotICAg
ICAgICByZXR1cm4gIiYiOwotICAgIGNhc2UgVHlwZTo6TGVzc1RoYW5PckVxdWFsVG86Ci0gICAg
ICAgIHJldHVybiAiPD0iOwotICAgIGNhc2UgVHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG86Ci0g
ICAgICAgIHJldHVybiAiPj0iOwotICAgIGNhc2UgVHlwZTo6RXF1YWxDb21wYXJpc29uOgotICAg
ICAgICByZXR1cm4gIj09IjsKLSAgICBjYXNlIFR5cGU6Ok5vdEVxdWFsOgotICAgICAgICByZXR1
cm4gIiE9IjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U2hpZnQ6Ci0gICAgICAgIHJldHVybiAiPj4i
OwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0OgotICAgICAgICByZXR1cm4gIjw8IjsKLSAgICBj
YXNlIFR5cGU6OlBsdXM6Ci0gICAgICAgIHJldHVybiAiKyI7Ci0gICAgY2FzZSBUeXBlOjpNaW51
czoKLSAgICAgICAgcmV0dXJuICItIjsKLSAgICBjYXNlIFR5cGU6OkRpdmlkZToKLSAgICAgICAg
cmV0dXJuICIvIjsKLSAgICBjYXNlIFR5cGU6Ok1vZDoKLSAgICAgICAgcmV0dXJuICIlIjsKLSAg
ICBjYXNlIFR5cGU6OlRpbGRlOgotICAgICAgICByZXR1cm4gIn4iOwotICAgIGNhc2UgVHlwZTo6
RXhjbGFtYXRpb25Qb2ludDoKLSAgICAgICAgcmV0dXJuICIhIjsKLSAgICBjYXNlIFR5cGU6OkF0
OgotICAgICAgICByZXR1cm4gIkAiOwotICAgIGNhc2UgVHlwZTo6RW5kT2ZGaWxlOgotICAgICAg
ICByZXR1cm4gIkVPRiI7Ci0gICAgY2FzZSBUeXBlOjpJbnZhbGlkOgotICAgICAgICByZXR1cm4g
IkxFWElOR19FUlJPUiI7Ci0gICAgfQotfQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlz
VmFsaWRJZGVudGlmaWVyU3RhcnQoVUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1cm4gKHRoZUNo
YXIgPj0gJ2EnICYmIHRoZUNoYXIgPD0gJ3onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnQScg
JiYgdGhlQ2hhciA8PSAnWicpCi0gICAgICAgIHx8ICh0aGVDaGFyID09ICdfJyk7Ci19Ci0KLXN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZE5vblN0YXJ0aW5nSWRlbnRpZmllckNoYXIo
VUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1cm4gKHRoZUNoYXIgPj0gJ2EnICYmIHRoZUNoYXIg
PD0gJ3onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnQScgJiYgdGhlQ2hhciA8PSAnWicpCi0g
ICAgICAgIHx8ICh0aGVDaGFyID49ICcwJyAmJiB0aGVDaGFyIDw9ICc5JykKLSAgICAgICAgfHwg
KHRoZUNoYXIgPT0gJ18nKTsKLX0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0hleGFk
ZWNpbWFsQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICByZXR1cm4gKGNoYXJhY3Rl
ciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykKLSAgICAgICAgfHwgKGNoYXJhY3RlciA+PSAn
YScgJiYgY2hhcmFjdGVyIDw9ICdmJykKLSAgICAgICAgfHwgKGNoYXJhY3RlciA+PSAnQScgJiYg
Y2hhcmFjdGVyIDw9ICdGJyk7Ci19Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEaWdp
dChVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiB0aGVDaGFyID49ICcwJyAmJiB0aGVDaGFy
IDw9ICc5JzsKLX0KLQotYXV0byBMZXhlcjo6Y29uc3VtZVRva2VuRnJvbVN0cmVhbSgpIC0+IFRv
a2VuCi17Ci0gICAgVUNoYXIgY3VycmVudCA9IDA7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9v
ZmZzZXQ7Ci0KLSAgICBhdXRvIHBlZWsgPSBbJl0gKCkgLT4gVUNoYXIgewotICAgICAgICBpZiAo
b2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fc3Ry
aW5nVmlld1tvZmZzZXRdOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9OwotCi0gICAgYXV0byBz
aGlmdCA9IFsmXSB7Ci0gICAgICAgIGlmIChvZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBtX3N0cmluZ1ZpZXdbb2Zmc2V0XTsKLSAgICAgICAg
ICAgICsrb2Zmc2V0OwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgY3VycmVudCA9IDA7Ci0gICAgICAgIHJldHVybiBjdXJyZW50OwotICAgIH07Ci0KLSAg
ICBhdXRvIGNvbnN1bWUgPSBbJl0gKFVDaGFyIHRoZUNoYXIpIHsKLSAgICAgICAgaWYgKHBlZWso
KSA9PSB0aGVDaGFyKSB7Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH07Ci0KLSAgICBh
dXRvIG5leHRJc0lkZW50aWZpZXIgPSBbJl0gewotICAgICAgICByZXR1cm4gaXNWYWxpZE5vblN0
YXJ0aW5nSWRlbnRpZmllckNoYXIocGVlaygpKTsKLSAgICB9OwotCi0gICAgYXV0byB0b2tlbiA9
IFsmXSAoVG9rZW46OlR5cGUgdHlwZSkgLT4gVG9rZW4gewotICAgICAgICBhdXRvIG9sZE9mZnNl
dCA9IG1fb2Zmc2V0OwotICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKLSAgICAgICAgc2tpcFdo
aXRlc3BhY2VBbmRDb21tZW50cygpOwotICAgICAgICByZXR1cm4geyB7IG9sZE9mZnNldCwgb2Zm
c2V0LCBtX25hbWVTcGFjZSB9LCB0eXBlIH07Ci0gICAgfTsKLQotICAgIHN3aXRjaCAoc2hpZnQo
KSkgewotICAgIGNhc2UgJ0EnOgotICAgIGNhc2UgJ0InOgotICAgIGNhc2UgJ0MnOgotICAgIGNh
c2UgJ0QnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ0cnOgotICAg
IGNhc2UgJ0gnOgotICAgIGNhc2UgJ0knOgotICAgIGNhc2UgJ0onOgotICAgIGNhc2UgJ0snOgot
ICAgIGNhc2UgJ0wnOgotICAgIGNhc2UgJ00nOgotICAgIGNhc2UgJ04nOgotICAgIGNhc2UgJ08n
OgotICAgIGNhc2UgJ1EnOgotICAgIGNhc2UgJ1InOgotICAgIGNhc2UgJ1QnOgotICAgIGNhc2Ug
J1UnOgotICAgIGNhc2UgJ1YnOgotICAgIGNhc2UgJ1cnOgotICAgIGNhc2UgJ1gnOgotICAgIGNh
c2UgJ1knOgotICAgIGNhc2UgJ1onOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ2gnOgotICAg
IGNhc2UgJ2onOgotICAgIGNhc2UgJ2snOgotICAgIGNhc2UgJ2wnOgotICAgIGNhc2UgJ20nOgot
ICAgIGNhc2UgJ3EnOgotICAgIGNhc2UgJ3gnOgotICAgIGNhc2UgJ3knOgotICAgIGNhc2UgJ3on
OgotcGFyc2VJZGVudGlmaWVyOgotICAgICAgICB3aGlsZSAoaXNWYWxpZE5vblN0YXJ0aW5nSWRl
bnRpZmllckNoYXIocGVlaygpKSkKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0KLSAgICBjYXNlICdzJzoKLSAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpRdWFsaWZpZXIpOwotCi0gICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6U3dpdGNoKTsKLQotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAncic6Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0cnVjdCk7Ci0gICAg
ICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6U3RhdGljKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6U3BhY2UpOwotICAgICAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgneicpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQpOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICB9Ci0KLSAgICBjYXNlICdTJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdWJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdf
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAgICBzd2l0Y2gg
KHBlZWsoKSkgewotICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAg
ICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ0knOgotICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAg
ICAgICAgICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBJRCk7Ci0gICAgICAgICAgICAgICAgY2FzZSAn
bic6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3VwSW5kZXgpOwotCi0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlICdUJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRj
aCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEZXB0aCk7Ci0gICAgICAgICAgICBjYXNlICdp
JzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdo
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnVCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSAnQyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlKTsKLSAgICAgICAgY2FzZSAnVCc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3In
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWVGFyZ2V0KTsKLSAgICAgICAgY2FzZSAnUyc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnSScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd4JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlNhbXBs
ZUluZGV4KTsKLSAgICAgICAgY2FzZSAnUCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlBvc2l0aW9uKTsKLSAgICAgICAg
Y2FzZSAnVic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3gnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpTVlZlcnRleElEKTsKLSAgICAgICAgY2FzZSAnSSc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAg
IGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdGJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28n
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ0YnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpTVklzRnJvbnRGYWNlKTsKLSAgICAgICAgICAgIGNhc2UgJ24n
OgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwZWVr
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdDJykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2JykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWSW5uZXJDb3Zl
cmFnZSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRCcpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQpOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICd0JzoKLSAgICAgICAg
c3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAncic6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRydWUpOwotICAgICAgICBjYXNlICd5JzoK
LSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZicpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VHlwZWRlZik7Ci0gICAgICAgIGNh
c2UgJ2gnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
cicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBpZiAoIW5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRo
cmVhZCk7Ci0KLSAgICAgICAgICAgIGlmIChwZWVrKCkgIT0gJ2cnKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSAnZycpOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaHJlYWRncm91cCk7Ci0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9
Ci0KLSAgICBjYXNlICdlJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2Fz
ZSAnbic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkVudW0pOwotICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6RWxzZSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnbyc6Ci0gICAg
ICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAg
ICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICcmJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7
Ci0KLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
aWYgKGNvbnN1bWUoJz4nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAg
ICBjYXNlICc8JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoY29uc3Vt
ZSgnPCcpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJysn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoJysnKTsKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAg
ICBjYXNlICctJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBjb25zdW1lKCct
Jyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7
Ci0KLSAgICAgICAgY2FzZSAnfCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2Ug
Jz0nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnPScp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW52YWxpZCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAg
ICAgICAgY2FzZSAnKic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJy8nOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7
Ci0KLSAgICAgICAgY2FzZSAnISc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2Ug
J34nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICdeJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9y
TmFtZSk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvcik7Ci0KLSAgICBj
YXNlICdpJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OklmKTsKLQotICAgIGNhc2UgJ2MnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAg
ICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6Q2FzZSk7Ci0KLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
cicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLSAgICAgICAgY2FzZSAn
byc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgJ20nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29tcHV0ZSk7Ci0gICAgICAgICAg
ICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHN3
aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb250aW51ZSk7
Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkNvbnN0KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29uc3RhbnQpOwotCi0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAn
Yic6Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnaycpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVy
KCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpCcmVhayk7Ci0KLSAgICBjYXNlICdkJzoKLSAgICAgICAgc3dpdGNo
IChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RG8p
OwotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnZic6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZWZh
dWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0K
LQotCi0gICAgY2FzZSAnZic6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNh
c2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
cicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Rm9yKTsKLSAgICAg
ICAgY2FzZSAncic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6RnJhZ21lbnQpOwotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLQotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RmFsbHRocm91Z2gpOwotCi0gICAg
ICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZhbHNlKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGNhc2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVl
aygpKSB7Ci0gICAgICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRlZmF1bHQpOwotICAg
ICAgICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OkRldmljZSk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2Fz
ZSAndyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpXaGlsZSk7Ci0KLSAgICBjYXNlICdyJzoKLSAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmV0dXJuKTsK
LSAgICAgICAgY2FzZSAnZyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJl
Z2lzdGVyKTsKLSAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdjJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZXN0cmljdGVkKTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0K
LSAgICBjYXNlICduJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAn
YSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0Jykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOYXRpdmUpOwotICAgICAgICBjYXNlICd1JzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAg
ICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpOdWxsKTsKLSAgICAgICAgICAgIGNhc2UgJ20nOgotICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6TnVtVGhyZWFkcyk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0gICAgICAg
IGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVl
aygpKSB7Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
aScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVy
KTsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICd2JzoK
LSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlZlcnRleCk7Ci0KLSAgICBjYXNlICdQJzoKLSAgICAgICAgaWYg
KCFjb25zdW1lKCdTJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKCFjb25zdW1lKCdaJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdFJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OlBTaXplKTsKLQotICAgIGNhc2UgJ3UnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2kn
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ2YnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlm
aWVyKTsKLQotICAgIGNhc2UgJ3AnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUo
J3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNv
bnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UHJv
dG9jb2wpOwotCi0gICAgY2FzZSAnXyc6Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpVbmRlcnNjb3JlKTsKLQotICAgIGNhc2UgJ2EnOgotICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkF0dHJpYnV0ZSk7Ci0gICAg
ICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpBdXRvKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICc+JzoKLSAgICAgICAgaWYgKGNvbnN1
bWUoJz4nKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMpOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0KTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6R3JlYXRlclRoYW5TaWduKTsKLSAgICBjYXNlICc8JzoKLSAgICAgICAgaWYgKGNvbnN1
bWUoJzwnKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscyk7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlmdCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6TGVzc1RoYW5PckVxdWFsVG8pOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Okxlc3NUaGFuU2lnbik7Ci0KLSAgICBjYXNlICcrJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0n
KSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UGx1c0VxdWFscyk7Ci0g
ICAgICAgIGlmIChjb25zdW1lKCcrJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlBsdXNQbHVzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQbHVz
KTsKLQotICAgIGNhc2UgJy0nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51c0VxdWFscyk7Ci0gICAgICAgIGlmIChj
b25zdW1lKCctJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1pbnVz
TWludXMpOwotICAgICAgICBpZiAoY29uc3VtZSgnPicpKQotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpBcnJvdyk7Ci0gICAgICAgIGlmIChpc0RpZ2l0KHBlZWsoKSkpIHsK
LSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBnb3RvIHBhcnNlTnVtYmVyOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCcuJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
RmxvYXRBZnRlckRvdDsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51cyk7
Ci0KLSAgICBjYXNlICcqJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMpOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlN0YXIpOwotCi0gICAgY2FzZSAnLyc6Ci0gICAgICAgIGlmIChj
b25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRpdmlk
ZUVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGl2aWRlKTsKLQot
ICAgIGNhc2UgJyUnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2RFcXVhbHMpOwotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok1vZCk7Ci0KLSAgICBjYXNlICdeJzoKLSAgICAgICAgaWYgKGNvbnN1bWUo
Jz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6WG9yRXF1YWxzKTsK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpYb3IpOwotCi0gICAgY2FzZSAnJic6
Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OkFuZEVxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCcmJykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZEFuZCk7Ci0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6QW5kKTsKLQotICAgIGNhc2UgJ3wnOgotICAgICAgICBpZiAoY29u
c3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPckVxdWFs
cyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCd8JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok9yT3IpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9y
KTsKLQotICAgIGNhc2UgJ1snOgotICAgICAgICBpZiAoY29uc3VtZSgnXScpKQotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcik7Ci0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotCi0gICAgY2Fz
ZSAnPSc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFyaXNvbik7Ci0gICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6RXF1YWxzU2lnbik7Ci0KLSAgICBjYXNlICchJzoKLSAgICAgICAgaWYgKGNv
bnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Tm90RXF1
YWwpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQp
OwotCi0gICAgY2FzZSAnOyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U2Vt
aWNvbG9uKTsKLQotICAgIGNhc2UgJ3snOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkxlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgY2FzZSAnfSc6Ci0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQpOwotCi0gICAgY2FzZSAnOic6Ci0g
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29sb24pOwotCi0gICAgY2FzZSAnLCc6
Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29tbWEpOwotCi0gICAgY2FzZSAn
KCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lzKTsK
LQotICAgIGNhc2UgJyknOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0
UGFyZW50aGVzaXMpOwotCi0gICAgY2FzZSAnXSc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KTsKLQotICAgIGNhc2UgJy4nOgotICAgICAgICBp
ZiAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgZ290byBwYXJzZUZsb2F0QWZ0ZXJEb3Q7
Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RnVsbFN0b3ApOwotCi0gICAgY2Fz
ZSAnPyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVlc3Rpb25NYXJrKTsK
LQotICAgIGNhc2UgJ34nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRpbGRl
KTsKLQotICAgIGNhc2UgJ0AnOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkF0
KTsKLQotICAgIGNhc2UgJzAnOgotICAgIGNhc2UgJzEnOgotICAgIGNhc2UgJzInOgotICAgIGNh
c2UgJzMnOgotICAgIGNhc2UgJzQnOgotICAgIGNhc2UgJzUnOgotICAgIGNhc2UgJzYnOgotICAg
IGNhc2UgJzcnOgotICAgIGNhc2UgJzgnOgotICAgIGNhc2UgJzknOiB7Ci1wYXJzZU51bWJlcjoK
LSAgICAgICAgaWYgKGN1cnJlbnQgPT0gJzAnICYmIGNvbnN1bWUoJ3gnKSkgewotICAgICAgICAg
ICAgd2hpbGUgKGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIocGVlaygpKSkKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB3aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgc2hpZnQoKTsKLQotICAgICAg
ICBpZiAoY29uc3VtZSgnLicpKSB7Ci1wYXJzZUZsb2F0QWZ0ZXJEb3Q6Ci0gICAgICAgICAgICB3
aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBjb25zdW1lKCdmJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkZsb2F0TGl0ZXJhbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uc3VtZSgnZicpKQot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwpOwotCi0g
ICAgICAgIGlmIChjb25zdW1lKCd1JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlVpbnRMaXRlcmFsKTsKLQotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkludExpdGVyYWwpOwotICAgIH0KLQotICAgIGRlZmF1bHQ6IAotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBpZiAobV9vZmZzZXQgPT0gbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKQotICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVuZE9mRmlsZSk7Ci0gICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpJbnZhbGlkKTsKLX0KLQotCi0vLyBXZSBjYW4gdGFrZSBhZHZhbnRhZ2Ug
b2YgdHdvIHByb3BlcnRpZXMgb2YgVW5pY29kZToKLS8vIDEuIFRoZSBjb25zaXR1dGVudCBVVEYt
MTYgY29kZSB1bml0cyBmb3IgYWxsIG5vbi1CTVAgY29kZSBwb2ludHMgYXJlIHN1cnJvZ2F0ZXMs
Ci0vLyB3aGljaCBtZWFucyB3ZSdsbCBuZXZlciBzZWUgYSBmYWxzZSBtYXRjaC4gSWYgd2Ugc2Vl
IGEgQk1QIGNvZGUgdW5pdCwgd2UKLS8vIHJlYWxseSBoYXZlIGEgQk1QIGNvZGUgcG9pbnQuCi0v
LyAyLiBFdmVyeXRoaW5nIHdlJ3JlIGxvb2tpbmcgZm9yIGlzIGluIEJNUAotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGNvZGVVbml0KQotewotICAgIHN3aXRjaCAoY29k
ZVVuaXQpIHsKLSAgICBjYXNlICcgJzoKLSAgICBjYXNlICdcdCc6Ci0gICAgY2FzZSAnXHInOgot
ICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzTmV3bGlu
ZShVQ2hhciBjb2RlVW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNvZGVVbml0KSB7Ci0gICAgY2FzZSAn
XHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYXV0byBMZXhlcjo6bGluZUFuZENv
bHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWdu
ZWQgdGFyZ2V0T2Zmc2V0KSAtPiBMaW5lQW5kQ29sdW1uCi17Ci0gICAgLy8gQ291bnRpbmcgZnJv
bSAxIHRvIG1hdGNoIG1vc3QgdGV4dCBlZGl0b3JzLgotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIg
PSAxOwotICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IDE7Ci0gICAgZm9yICh1bnNpZ25lZCBv
ZmZzZXQgPSAwOyBvZmZzZXQgPCBzdGQ6Om1pbihzdHJpbmdWaWV3Lmxlbmd0aCgpLCB0YXJnZXRP
ZmZzZXQpOyArK29mZnNldCkgewotICAgICAgICArK2NvbHVtbk51bWJlcjsKLSAgICAgICAgaWYg
KGlzTmV3bGluZShzdHJpbmdWaWV3W29mZnNldF0pKSB7Ci0gICAgICAgICAgICArK2xpbmVOdW1i
ZXI7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSAxOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiB7IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciB9OwotfQotCi1zdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIG5h
bWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIpCi17
Ci0gICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKLSAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpTdGFu
ZGFyZExpYnJhcnk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSBBU1Q6
Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMToKLSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoc291cmNl
MSk7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMjoKLSAgICAgICAgQVNTRVJU
KHNvdXJjZTIpOwotICAgICAgICByZXR1cm4gU3RyaW5nVmlldygqc291cmNlMik7Ci0gICAgfQot
fQotCi1TdHJpbmcgTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yIGVycm9yLCBjb25zdCBTdHJpbmcm
IHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMikKLXsKLSAgICBpZiAoYXV0byBjb2RlTG9j
YXRpb24gPSBlcnJvci5jb2RlTG9jYXRpb24oKSkgewotICAgICAgICBpZiAoYXV0byBzb3VyY2Ug
PSBzb3VyY2VGcm9tTmFtZVNwYWNlKGNvZGVMb2NhdGlvbi5uYW1lU3BhY2UoKSwgc291cmNlMSwg
c291cmNlMikpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZUFuZENvbHVtbiA9IGxpbmVBbmRDb2x1
bW5OdW1iZXJGcm9tT2Zmc2V0KCpzb3VyY2UsIGVycm9yLmNvZGVMb2NhdGlvbigpLnN0YXJ0T2Zm
c2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobGluZUFuZENvbHVtbi5saW5l
LCAnOicsIGxpbmVBbmRDb2x1bW4uY29sdW1uLCAiOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlcnJvci5tZXNzYWdlKCk7Ci19Ci0KLXZvaWQgTGV4
ZXI6OnNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKQotewotICAgIHdoaWxlIChtX29mZnNldCA8
IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG1fc3Ry
aW5nVmlld1ttX29mZnNldF0pKQotICAgICAgICAgICAgKyttX29mZnNldDsKLSAgICAgICAgZWxz
ZSBpZiAobV9zdHJpbmdWaWV3W21fb2Zmc2V0XSA9PSAnLycgJiYgbV9vZmZzZXQgKyAxIDwgbV9z
dHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAobV9zdHJpbmdWaWV3W21fb2Zm
c2V0ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGluZSBjb21tZW50Ci0gICAg
ICAgICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
aW4gdGhlIGNhc2Ugb2YgXHJcbiB0aGlzIG1ha2VzIHRoZSBjb21tZW50IGVuZCBvbiB0aGUgXHIu
IEl0IGlzIGZpbmUsIGFzIHRoZSBcbiBhZnRlciB0aGF0IGlzIHNpbXBsZSB3aGl0ZXNwYWNlLgot
ICAgICAgICAgICAgICAgIGZvciAoIDsgbV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkg
JiYgIWlzTmV3bGluZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdKTsgKyttX29mZnNldCkgeyB9Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcqJykg
ewotICAgICAgICAgICAgICAgIC8vIExvbmcgY29tbWVudAotICAgICAgICAgICAgICAgIGZvciAo
IDsgbV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkgOyArK21fb2Zmc2V0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdID09ICcqJyAmJiBtX29m
ZnNldCArIDEgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkgJiYgbV9zdHJpbmdWaWV3W21fb2Zmc2V0
ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX29mZnNldCArPSAyOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGV4ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y4NDMx
NzFkMjE4OTI0NjQ0NmVhMGI1ZDMxMTQ3M2Q2NTA4YmFiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTExleGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgTGV4ZXI7Ci0KLXN0cnVjdCBUb2tlbiB7Ci0g
ICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbjsKLSAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50
OF90IHsKLSAgICAgICAgSW50TGl0ZXJhbCwKLSAgICAgICAgVWludExpdGVyYWwsCi0gICAgICAg
IEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgU3RydWN0LAotICAgICAgICBUeXBlZGVmLAotICAgICAg
ICBFbnVtLAotICAgICAgICBPcGVyYXRvciwKLSAgICAgICAgSWYsCi0gICAgICAgIEVsc2UsCi0g
ICAgICAgIENvbnRpbnVlLAotICAgICAgICBCcmVhaywKLSAgICAgICAgU3dpdGNoLAotICAgICAg
ICBDYXNlLAotICAgICAgICBEZWZhdWx0LAotICAgICAgICBGYWxsdGhyb3VnaCwKLSAgICAgICAg
Rm9yLAotICAgICAgICBXaGlsZSwKLSAgICAgICAgRG8sCi0gICAgICAgIFJldHVybiwKLSAgICAg
ICAgTnVsbCwKLSAgICAgICAgVHJ1ZSwKLSAgICAgICAgRmFsc2UsCi0gICAgICAgIENvbnN0YW50
LAotICAgICAgICBEZXZpY2UsCi0gICAgICAgIFRocmVhZGdyb3VwLAotICAgICAgICBUaHJlYWQs
Ci0gICAgICAgIFNwYWNlLAotICAgICAgICBWZXJ0ZXgsCi0gICAgICAgIEZyYWdtZW50LAotICAg
ICAgICBDb21wdXRlLAotICAgICAgICBOdW1UaHJlYWRzLAotICAgICAgICBTVkluc3RhbmNlSUQs
Ci0gICAgICAgIFNWVmVydGV4SUQsCi0gICAgICAgIFBTaXplLAotICAgICAgICBTVlBvc2l0aW9u
LAotICAgICAgICBTVklzRnJvbnRGYWNlLAotICAgICAgICBTVlNhbXBsZUluZGV4LAotICAgICAg
ICBTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFNWVGFyZ2V0LAotICAgICAgICBTVkRlcHRoLAot
ICAgICAgICBTVkNvdmVyYWdlLAotICAgICAgICBTVkRpc3BhdGNoVGhyZWFkSUQsCi0gICAgICAg
IFNWR3JvdXBJRCwKLSAgICAgICAgU1ZHcm91cEluZGV4LAotICAgICAgICBTVkdyb3VwVGhyZWFk
SUQsCi0gICAgICAgIEF0dHJpYnV0ZSwKLSAgICAgICAgUmVnaXN0ZXIsCi0gICAgICAgIFNwZWNp
YWxpemVkLAotICAgICAgICBOYXRpdmUsCi0gICAgICAgIFJlc3RyaWN0ZWQsCi0gICAgICAgIFVu
ZGVyc2NvcmUsCi0gICAgICAgIEF1dG8sCi0gICAgICAgIFByb3RvY29sLAotICAgICAgICBDb25z
dCwKLSAgICAgICAgU3RhdGljLAotICAgICAgICBRdWFsaWZpZXIsCi0gICAgICAgIElkZW50aWZp
ZXIsCi0gICAgICAgIE9wZXJhdG9yTmFtZSwKLSAgICAgICAgRXF1YWxzU2lnbiwKLSAgICAgICAg
U2VtaWNvbG9uLAotICAgICAgICBMZWZ0Q3VybHlCcmFja2V0LAotICAgICAgICBSaWdodEN1cmx5
QnJhY2tldCwKLSAgICAgICAgQ29sb24sCi0gICAgICAgIENvbW1hLAotICAgICAgICBMZWZ0UGFy
ZW50aGVzaXMsCi0gICAgICAgIFJpZ2h0UGFyZW50aGVzaXMsCi0gICAgICAgIFNxdWFyZUJyYWNr
ZXRQYWlyLAotICAgICAgICBMZWZ0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgUmlnaHRTcXVhcmVC
cmFja2V0LAotICAgICAgICBTdGFyLAotICAgICAgICBMZXNzVGhhblNpZ24sCi0gICAgICAgIEdy
ZWF0ZXJUaGFuU2lnbiwKLSAgICAgICAgRnVsbFN0b3AsCi0gICAgICAgIFBsdXNFcXVhbHMsCi0g
ICAgICAgIE1pbnVzRXF1YWxzLAotICAgICAgICBUaW1lc0VxdWFscywKLSAgICAgICAgRGl2aWRl
RXF1YWxzLAotICAgICAgICBNb2RFcXVhbHMsCi0gICAgICAgIFhvckVxdWFscywKLSAgICAgICAg
QW5kRXF1YWxzLAotICAgICAgICBPckVxdWFscywKLSAgICAgICAgUmlnaHRTaGlmdEVxdWFscywK
LSAgICAgICAgTGVmdFNoaWZ0RXF1YWxzLAotICAgICAgICBQbHVzUGx1cywKLSAgICAgICAgTWlu
dXNNaW51cywKLSAgICAgICAgQXJyb3csCi0gICAgICAgIFF1ZXN0aW9uTWFyaywKLSAgICAgICAg
T3JPciwKLSAgICAgICAgQW5kQW5kLAotICAgICAgICBPciwKLSAgICAgICAgWG9yLAotICAgICAg
ICBBbmQsCi0gICAgICAgIExlc3NUaGFuT3JFcXVhbFRvLAotICAgICAgICBHcmVhdGVyVGhhbk9y
RXF1YWxUbywKLSAgICAgICAgRXF1YWxDb21wYXJpc29uLAotICAgICAgICBOb3RFcXVhbCwKLSAg
ICAgICAgUmlnaHRTaGlmdCwKLSAgICAgICAgTGVmdFNoaWZ0LAotICAgICAgICBQbHVzLAotICAg
ICAgICBNaW51cywKLSAgICAgICAgRGl2aWRlLAotICAgICAgICBNb2QsCi0gICAgICAgIFRpbGRl
LAotICAgICAgICBFeGNsYW1hdGlvblBvaW50LAotICAgICAgICBBdCwKLSAgICAgICAgRW5kT2ZG
aWxlLAotICAgICAgICBJbnZhbGlkCi0gICAgfSB0eXBlIHtUeXBlOjpJbnZhbGlkfTsKLQotICAg
IHN0YXRpYyBjb25zdCBjaGFyKiB0eXBlTmFtZShUeXBlKTsKLQotICAgIGlubGluZSBTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcoY29uc3QgTGV4ZXImKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2RlTG9jYXRpb24uc3RhcnRP
ZmZzZXQoKTsKLSAgICB9Ci19OwotCi1pbmxpbmUgQ29kZUxvY2F0aW9uOjpDb2RlTG9jYXRpb24o
Y29uc3QgVG9rZW4mIHRva2VuKQotICAgIDogQ29kZUxvY2F0aW9uKHRva2VuLmNvZGVMb2NhdGlv
bikKLXsKLX0KLQotY2xhc3MgTGV4ZXIgewotcHVibGljOgotICAgIExleGVyKCkgPSBkZWZhdWx0
OwotCi0gICAgTGV4ZXIoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBBU1Q6Ok5hbWVTcGFjZSBuYW1l
U3BhY2UpCi0gICAgICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCi0gICAgICAgICwgbV9u
YW1lU3BhY2UobmFtZVNwYWNlKQotICAgIHsKLSAgICAgICAgc2tpcFdoaXRlc3BhY2VBbmRDb21t
ZW50cygpOwotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBjb25zdW1lVG9rZW5Gcm9tU3RyZWFt
KCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsxXSA9IGNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKTsK
LSAgICB9Ci0KLSAgICBMZXhlcihjb25zdCBMZXhlciYpID0gZGVsZXRlOwotICAgIExleGVyKExl
eGVyJiYpID0gZGVmYXVsdDsKLQotICAgIExleGVyJiBvcGVyYXRvcj0oY29uc3QgTGV4ZXImKSA9
IGRlbGV0ZTsKLSAgICBMZXhlciYgb3BlcmF0b3I9KExleGVyJiYpID0gZGVmYXVsdDsKLQotCi0g
ICAgVG9rZW4gY29uc3VtZVRva2VuKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9y
aW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XTsKLSAgICAgICAgbV9yaW5nQnVmZmVyW21fcmlu
Z0J1ZmZlckluZGV4XSA9IGNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKTsKLSAgICAgICAgbV9yaW5n
QnVmZmVySW5kZXggPSAobV9yaW5nQnVmZmVySW5kZXggKyAxKSAlIDI7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotCi0gICAgVG9rZW4gcGVlaygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XTsKLSAgICB9Ci0KLSAgICBU
b2tlbiBwZWVrRnVydGhlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9yaW5nQnVm
ZmVyWyhtX3JpbmdCdWZmZXJJbmRleCArIDEpICUgMl07Ci0gICAgfQotCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QgbmVlZCB0aGlzCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODM1NwotICAgIHN0cnVjdCBTdGF0ZSB7Ci0gICAgICAgIFRva2Vu
IHJpbmdCdWZmZXJbMl07Ci0gICAgICAgIHVuc2lnbmVkIHJpbmdCdWZmZXJJbmRleDsKLSAgICAg
ICAgdW5zaWduZWQgb2Zmc2V0OwotICAgIH07Ci0KLSAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZlclswXSA9
IG1fcmluZ0J1ZmZlclswXTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZlclsxXSA9IG1fcmluZ0J1
ZmZlclsxXTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZlckluZGV4ID0gbV9yaW5nQnVmZmVySW5k
ZXg7Ci0gICAgICAgIHN0YXRlLm9mZnNldCA9IG1fb2Zmc2V0OwotICAgICAgICByZXR1cm4gc3Rh
dGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdGF0ZShjb25zdCBTdGF0ZSYgc3RhdGUpCi0gICAg
ewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBzdGF0ZS5yaW5nQnVmZmVyWzBdOwotICAgICAg
ICBtX3JpbmdCdWZmZXJbMV0gPSBzdGF0ZS5yaW5nQnVmZmVyWzFdOwotICAgICAgICBtX3JpbmdC
dWZmZXJJbmRleCA9IHN0YXRlLnJpbmdCdWZmZXJJbmRleDsKLSAgICAgICAgbV9vZmZzZXQgPSBz
dGF0ZS5vZmZzZXQ7Ci0KLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0YXRlKFN0YXRlJiYgc3RhdGUp
Ci0gICAgewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBXVEZNb3ZlKHN0YXRlLnJpbmdCdWZm
ZXJbMF0pOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBXVEZNb3ZlKHN0YXRlLnJpbmdCdWZm
ZXJbMV0pOwotICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9IFdURk1vdmUoc3RhdGUucmluZ0J1
ZmZlckluZGV4KTsKLSAgICAgICAgbV9vZmZzZXQgPSBXVEZNb3ZlKHN0YXRlLm9mZnNldCk7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0Z1bGx5Q29uc3VtZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHBlZWsoKS50eXBlID09IFRva2VuOjpUeXBlOjpFbmRPZkZpbGU7Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGVycm9yU3RyaW5nKGNvbnN0IFRva2VuJiB0b2tlbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlBhcnNlIGVycm9yIGF0
IGxpbmUgIiwgbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQobV9zdHJpbmdWaWV3LCB0b2tl
bi5zdGFydE9mZnNldCgpKS5saW5lLCAiOiAiLCBtZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgU3RyaW5nIGVycm9yU3RyaW5nKEVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZTEsIGNvbnN0
IFN0cmluZyogc291cmNlMiA9IG51bGxwdHIpOwotCi0gICAgQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0KLQotcHJpdmF0ZToKLSAgICBmcmll
bmQgc3RydWN0IFRva2VuOwotICAgIFRva2VuIGNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKTsKLQot
ICAgIHZvaWQgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOwotCi0gICAgc3RydWN0IExpbmVB
bmRDb2x1bW4gewotICAgICAgICB1bnNpZ25lZCBsaW5lOwotICAgICAgICB1bnNpZ25lZCBjb2x1
bW47Ci0gICAgfTsKLSAgICBzdGF0aWMgTGluZUFuZENvbHVtbiBsaW5lQW5kQ29sdW1uTnVtYmVy
RnJvbU9mZnNldChjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgb2Zmc2V0KTsKLQotICAgIFN0
cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwotICAgIFRva2VuIG1fcmluZ0J1ZmZlclsyXTsKLSAgICB1
bnNpZ25lZCBtX3JpbmdCdWZmZXJJbmRleCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX29mZnNldCB7
IDAgfTsKLSAgICBBU1Q6Ok5hbWVTcGFjZSBtX25hbWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpT
dGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLVN0cmluZ1ZpZXcgVG9rZW46OnN0cmluZ1ZpZXcoY29u
c3QgTGV4ZXImIGxleGVyKSBjb25zdAotewotICAgIHJldHVybiBsZXhlci5tX3N0cmluZ1ZpZXcu
c3Vic3RyaW5nKGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpLCBjb2RlTG9jYXRpb24uZW5kT2Zm
c2V0KCkgLSBjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGNlNzFjZjU2MjAzNGQ1NzQ3ZWQ5YWUzMzQwNGYwMGMxZDE2N2Y4OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotI2lmIEFTU0VSVF9FTkFCTEVECi1zdGF0aWMgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24q
IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxl
VHlwZSkKLXsKLSAgICBpZiAoIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUu
cmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiB0eXBl
UmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPihyZXNvbHZhYmxlVHlwZS5y
ZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
dHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotfQotCi1jbGFzcyBMaXRlcmFsVHlwZUNoZWNrZXIgOiBw
dWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpG
bG9hdExpdGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9u
KGZsb2F0TGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9u
KTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+Y2FuUmVwcmVzZW50Rmxv
YXQoKShmbG9hdExpdGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJiBpbnRlZ2VyTGl0ZXJhbFR5cGUpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBnZXROYXRpdmVUeXBl
RGVjbGFyYXRpb24oaW50ZWdlckxpdGVyYWxUeXBlKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24tPmNh
blJlcHJlc2VudEludGVnZXIoKShpbnRlZ2VyTGl0ZXJhbFR5cGUudmFsdWUoKSkpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvKiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24gPSBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24odW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsK
LSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+Y2FuUmVwcmVzZW50VW5zaWdu
ZWRJbnRlZ2VyKCkodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUudmFsdWUoKSkpOwotICAgIH0K
LX07Ci0jZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKLQotdm9pZCBjaGVja0xpdGVyYWxUeXBlcyhQ
cm9ncmFtJiBwcm9ncmFtKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgTGl0ZXJhbFR5cGVD
aGVja2VyKCkuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxU
eXBlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFjYWJm
ODhhODkwYjM3MDYzZThhMjAwYTUwZDgxZDJlNjQ1NzkwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IFByb2dyYW07Ci0KLXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMGRhODRiOGY0MTIwMWFmZWI2MDhkNDE0MTA2NWRk
ZTE5NGQ0ZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotTmFt
ZUNvbnRleHQ6Ok5hbWVDb250ZXh0KE5hbWVDb250ZXh0KiBwYXJlbnQpCi0gICAgOiBtX3BhcmVu
dChwYXJlbnQpCi17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRk
KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIGlmIChhdXRvIGV4
aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHModHlwZURlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtIiwg
KmV4aXN0aW5nKSk7Ci0gICAgdHlwZURlZmluaXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJl
bnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRkKHR5cGVE
ZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1l
ZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHR5cGVEZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9
OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgaWYgKGF1dG8gZXhp
c3RpbmcgPSB0b3BMZXZlbEV4aXN0cyhzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUoKSkpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3Jh
bS4iLCAqZXhpc3RpbmcpKTsKLSAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uLnNldE5hbWVTcGFjZSht
X2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdHlwZXNbaW5kZXhd
LmFkZChzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHN0cnVjdHVyZURlZmluaXRp
b24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29u
dGV4dDo6YWRkKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRp
b24pCi17Ci0gICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BMZXZlbEV4aXN0cyhlbnVtZXJhdGlv
bkRlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
KCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsICpleGlzdGluZykpOwotICAgIGVudW1lcmF0
aW9uRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRv
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
YXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoZW51bWVyYXRpb25EZWZpbml0aW9uLm5h
bWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigp
KTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kKGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUg
PSBzZWFyY2hUeXBlcyhmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIHR5cGUt
PmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgZnVuY3Rpb25EZWZpbml0aW9uLnNldE5hbWVTcGFjZSht
X2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9mdW5jdGlvbnNbaW5kZXhd
LmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPigpKTsKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIHJldHVybiB7IH07Ci19
Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBhdXRv
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
aWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5h
bWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24oKSkpOwotICAgIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0
byByZXN1bHQgPSBtX2Z1bmN0aW9uc1tpbmRleF0uYWRkKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24+LCAxPigpKTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
bmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBz
ZWFyY2hGdW5jdGlvbnMobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCBm
dW5jdGlvbi0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0
TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3R5cGVz
W2luZGV4XS5hZGQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmFwcGVuZChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAodmFyaWFibGVE
ZWNsYXJhdGlvbi5uYW1lKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYg
KGF1dG8qIGRlY2xhcmF0aW9uID0gbG9jYWxFeGlzdHModmFyaWFibGVEZWNsYXJhdGlvbi5uYW1l
KCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1l
IGluIHByb2dyYW0uIiwgZGVjbGFyYXRpb24tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX3ZhcmlhYmxlcy5hZGQoU3RyaW5nKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgp
KSwgJnZhcmlhYmxlRGVjbGFyYXRpb24pOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBOYW1lQ29udGV4dDo6Z2V0VHlwZXMoY29u
c3QgU3RyaW5nJiBuYW1lLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKQotewotICAgIC8v
IE5hbWVkIHR5cGVzIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBnbG9iYWwgbmFtZSBjb250
ZXh0LgotICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5nZXRUeXBl
cyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4gcmVzdWx0OwotCi0gICAgdW5zaWduZWQgaW5kZXggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1fdHlwZXNb
aW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZhbHVl
KQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJv
bU5hbWVzcGFjZSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAg
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExp
YnJhcnkpOwotICAgICAgICBpdGVyYXRvciA9IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0g
ICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkgewotICAgICAgICAg
ICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+IE5hbWVDb250ZXh0OjpnZXRGdW5jdGlvbnMoY29uc3QgU3RyaW5nJiBuYW1lLCBB
U1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKQotewotICAgIC8vIEZ1bmN0aW9ucyBjYW4gb25s
eSBiZSBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29udGV4dC4KLSAgICBpZiAobV9wYXJl
bnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVudC0+Z2V0RnVuY3Rpb25zKG5hbWUsIGZyb21OYW1l
c3BhY2UpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uPiwgMT4gcmVzdWx0OwotCi0gICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fZnVu
Y3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyYXRvciAhPSBtX2Z1bmN0aW9u
c1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFs
dWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwotICAgIH0KLQotICAgIGlmIChm
cm9tTmFtZXNwYWNlICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAg
ICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJk
TGlicmFyeSk7Ci0gICAgICAgIGl0ZXJhdG9yID0gbV9mdW5jdGlvbnNbaW5kZXhdLmZpbmQobmFt
ZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1BU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIE5hbWVDb250ZXh0Ojpn
ZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
dmFyaWFibGVzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fdmFyaWFibGVzLmVu
ZCgpKSB7Ci0gICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBtX3BhcmVu
dC0+Z2V0VmFyaWFibGUobmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1BU1Q6Ok5hbWVkVHlwZSogTmFtZUNvbnRl
eHQ6OnNlYXJjaFR5cGVzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fcGFy
ZW50KTsKLSAgICBpZiAobV9jdXJyZW50TmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpTdGFu
ZGFyZExpYnJhcnkpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlcyA6IG1fdHlwZXMpIHsKLSAg
ICAgICAgICAgIGF1dG8gaXRlciA9IHR5cGVzLmZpbmQobmFtZSk7Ci0gICAgICAgICAgICBpZiAo
aXRlciAhPSB0eXBlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVl
WzBdLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNl
KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChp
dGVyICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVl
WzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1l
U3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaXRlciA9IG1fdHlwZXNbaW5kZXhdLmZpbmQo
bmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV90eXBlc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJl
dHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6c2VhcmNoRnVuY3Rpb25zKFN0
cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICBpZiAobV9j
dXJyZW50TmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbnMgOiBtX2Z1bmN0aW9ucykgewotICAgICAgICAgICAg
YXV0byBpdGVyID0gZnVuY3Rpb25zLmZpbmQobmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXRlciAh
PSBmdW5jdGlvbnMuZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVsw
XS5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7
Ci0gICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYg
KGl0ZXIgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXIt
PnZhbHVlWzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNU
OjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaXRlciA9IG1fZnVuY3Rpb25zW2lu
ZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fZnVuY3Rpb25zW2luZGV4XS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1zdGQ6Om9wdGlvbmFsPENvZGVMb2NhdGlvbj4gTmFtZUNvbnRleHQ6OnRv
cExldmVsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogdHlwZSA9
IHNlYXJjaFR5cGVzKG5hbWUpKQotICAgICAgICByZXR1cm4gdHlwZS0+Y29kZUxvY2F0aW9uKCk7
Ci0gICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVuY3Rpb25zKG5hbWUpKQotICAgICAg
ICByZXR1cm4gZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigpOwotICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci19Ci0KLUFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogTmFtZUNvbnRleHQ6OmxvY2FsRXhp
c3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9wYXJlbnQpOwotICAgIGF1
dG8gaXRlciA9IG1fdmFyaWFibGVzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV92YXJp
YWJsZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDA3ZDUwNmEyYzdkMTRkNDIwM2JiZDYxNWNiZTQ2ZWNh
MWUyNmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNp
bmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmFtZWRUeXBlOwotY2xhc3MgRnVu
Y3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVEZWZpbml0aW9uOwotY2xhc3MgU3RydWN0dXJl
RGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEZ1bmN0aW9u
RGVmaW5pdGlvbjsKLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYXRp
dmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uOwotCi19Ci0KLWNs
YXNzIE5hbWVDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBOYW1lQ29udGV4dChOYW1lQ29udGV4dCog
cGFyZW50ID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpO
YW1lU3BhY2UgY3VycmVudE5hbWVTcGFjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9wYXJl
bnQpOwotICAgICAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBjdXJyZW50TmFtZVNwYWNlOwotICAg
IH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpUeXBlRGVmaW5pdGlvbiYp
OwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9u
Jik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBnZXRUeXBlcyhjb25zdCBTdHJpbmcmLCBBU1Q6Ok5hbWVT
cGFjZSBmcm9tTmFtZXNwYWNlKTsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBnZXRGdW5jdGlvbnMoY29uc3QgU3RyaW5nJiwg
QVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uKiBnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmKTsKLQotcHJpdmF0ZToKLSAgICBBU1Q6Ok5h
bWVkVHlwZSogc2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qIHNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAg
IHN0ZDo6b3B0aW9uYWw8Q29kZUxvY2F0aW9uPiB0b3BMZXZlbEV4aXN0cyhTdHJpbmcmIG5hbWUp
IGNvbnN0OwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogbG9jYWxFeGlzdHMoU3RyaW5n
JiBuYW1lKSBjb25zdDsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+PiBtX3R5cGVzW0FTVDo6bmFtZVNwYWNlQ291
bnRdOwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPj4gbV9mdW5jdGlvbnNbQVNUOjpuYW1lU3BhY2VD
b3VudF07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbio+IG1f
dmFyaWFibGVzOwotICAgIE5hbWVDb250ZXh0KiBtX3BhcmVudDsKLSAgICBBU1Q6Ok5hbWVTcGFj
ZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07
Ci19OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJl
c29sdmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwY2E1NTk1ZGQ2NDgx
YzAxY2FiN2NlZjU2MDVhYWJhY2RmNDNiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVSZXNvbHZlci5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxl
TG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5j
bHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2Fk
SW1wbC5oIgotI2luY2x1ZGUgIldITFNMU2NvcGVkU2V0QWRkZXIuaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGls
ZUxvb3AuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1O
YW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQpCi0gICAg
OiBtX25hbWVDb250ZXh0KG5hbWVDb250ZXh0KQotewotfQotCi1OYW1lUmVzb2x2ZXI6Ok5hbWVS
ZXNvbHZlcihOYW1lUmVzb2x2ZXImIHBhcmVudFJlc29sdmVyLCBOYW1lQ29udGV4dCYgbmFtZUNv
bnRleHQpCi0gICAgOiBtX25hbWVDb250ZXh0KG5hbWVDb250ZXh0KQotICAgICwgbV9wYXJlbnRO
YW1lUmVzb2x2ZXIoJnBhcmVudFJlc29sdmVyKQotICAgICwgbV9jdXJyZW50TmFtZVNwYWNlKHBh
cmVudFJlc29sdmVyLm1fY3VycmVudE5hbWVTcGFjZSkKLXsKLX0KLQotTmFtZVJlc29sdmVyOjp+
TmFtZVJlc29sdmVyKCkKLXsKLSAgICBpZiAoaGFzRXJyb3IoKSAmJiBtX3BhcmVudE5hbWVSZXNv
bHZlcikKLSAgICAgICAgbV9wYXJlbnROYW1lUmVzb2x2ZXItPnNldEVycm9yKHJlc3VsdCgpLmVy
cm9yKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNl
JiB0eXBlUmVmZXJlbmNlKQotewotICAgIFNjb3BlZFNldEFkZGVyPEFTVDo6VHlwZVJlZmVyZW5j
ZSo+IGFkZGVyKG1fdHlwZVJlZmVyZW5jZXMsICZ0eXBlUmVmZXJlbmNlKTsKLSAgICBpZiAoIWFk
ZGVyLmlzTmV3RW50cnkoKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSBy
ZWN1cnNpdmUgdHlwZSBhcmd1bWVudHMuIiwgdHlwZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQodHlwZVJlZmVy
ZW5jZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAodHlw
ZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKSAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MSBTaG91bGRuJ3Qgd2Uga25vdyBieSBub3cg
d2hldGhlciB0aGUgdHlwZSBoYXMgYmVlbiByZXNvbHZlZCBvciBub3Q/Ci0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gY2FuZGlkYXRlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXModHlwZVJl
ZmVyZW5jZS5uYW1lKCksIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgZm9yIChhdXRvJiBjYW5k
aWRhdGUgOiBjYW5kaWRhdGVzKQotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYW5kaWRhdGUpOwot
ICAgIGlmIChhdXRvIHJlc3VsdCA9IHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKGNhbmRpZGF0ZXMs
IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKSkKLSAgICAgICAgdHlwZVJlZmVyZW5jZS5z
ZXRSZXNvbHZlZFR5cGUoKnJlc3VsdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJDYW5ub3QgcmVzb2x2ZSB0eXBlIGFyZ3VtZW50cy4iLCB0eXBlUmVmZXJlbmNlLmNvZGVM
b2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgTmFtZVJlc29s
dmVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ewotICAgIE5hbWVDb250ZXh0IG5ld05hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBO
YW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuZXdOYW1lQ29udGV4dCk7Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIGlmICho
YXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBm
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKQotICAgICAgICBuZXdOYW1lUmVzb2x2ZXIu
Y2hlY2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAgbmV3TmFtZVJlc29sdmVyLmNoZWNr
RXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci19Ci0KLXZvaWQgTmFt
ZVJlc29sdmVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKLXsKLSAgICBOYW1lQ29udGV4dCBu
YW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNv
bHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05hbWVSZXNvbHZlci5WaXNpdG9yOjp2
aXNpdChibG9jayk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OklmU3RhdGVt
ZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Y29uZGl0aW9uYWwoKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHsKLSAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwot
ICAgICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7
Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Ym9keSgpKTsKLSAgICB9Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAgIE5hbWVDb250ZXh0IG5h
bWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29sdmVyIG5ld05hbWVS
ZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hl
Y2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgaWYgKGhh
c0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0
KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlz
LCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh3
aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6RG9X
aGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICB7Ci0gICAgICAgIE5hbWVDb250ZXh0IG5hbWVD
b250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNv
bHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tF
cnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAgIH0KLQotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVy
Ojp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgTmFtZUNvbnRleHQgbmFtZUNv
bnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIo
KnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIuVmlzaXRvcjo6dmlzaXQo
Zm9yTG9vcCk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKCFtX25hbWVDb250ZXh0
LmFkZCh2YXJpYWJsZURlY2xhcmF0aW9uKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IGRlY2xhcmUgZHVwbGljYXRlIHZhcmlhYmxlcy4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNv
ZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVmlzaXRvcjo6dmlz
aXQodmFyaWFibGVEZWNsYXJhdGlvbik7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChB
U1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBpZiAodmFy
aWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1
dG8qIHZhcmlhYmxlID0gbV9uYW1lQ29udGV4dC5nZXRWYXJpYWJsZSh2YXJpYWJsZVJlZmVyZW5j
ZS5uYW1lKCkpKQotICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS5zZXRWYXJpYWJsZSgqdmFyaWFi
bGUpOwotICAgIGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGZpbmQgdGhl
IHZhcmlhYmxlIGRlY2xhcmF0aW9uLiIsIHZhcmlhYmxlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNp
dChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAgaWYgKGlzPEFTVDo6
VmFyaWFibGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKSkgewotICAgICAgICBhdXRv
JiB2YXJpYWJsZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGRv
dEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgaWYgKCFtX25hbWVDb250ZXh0LmdldFZhcmlh
YmxlKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSkpIHsKLSAgICAgICAgICAgIGF1dG8gYmFzZU5h
bWUgPSB2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCk7Ci0gICAgICAgICAgICBhdXRvIGVudW1lcmF0
aW9uVHlwZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKGJhc2VOYW1lLCBtX2N1cnJlbnROYW1l
U3BhY2UpOwotICAgICAgICAgICAgaWYgKGVudW1lcmF0aW9uVHlwZXMuc2l6ZSgpID09IDEpIHsK
LSAgICAgICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSA9IGVudW1lcmF0aW9uVHlwZXNb
MF07Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYg
ZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KHR5cGUpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIG1lbWJlck5hbWUgPSBkb3RFeHBy
ZXNzaW9uLmZpZWxkTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogbWVtYmVy
ID0gZW51bWVyYXRpb25EZWZpbml0aW9uLm1lbWJlckJ5TmFtZShtZW1iZXJOYW1lKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgPSBBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6d3JhcChkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlv
bigpLCBXVEZNb3ZlKGJhc2VOYW1lKSwgV1RGTW92ZShtZW1iZXJOYW1lKSwgZW51bWVyYXRpb25E
ZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTVDo6cmVwbGFj
ZVdpdGg8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGRvdEV4cHJlc3Npb24sIFdURk1v
dmUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIk5vIGVudW0gbWVtYmVyIG1hdGNoZXMgdGhlIHVzZWQgbmFtZS4iLCBkb3RFeHBy
ZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBBU1NF
UlQoZW51bWVyYXRpb25UeXBlcy5pc0VtcHR5KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
VmlzaXRvcjo6dmlzaXQoZG90RXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2
aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKQotewotICAgIGlmIChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1i
ZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9u
YW1lQ29udGV4dC5nZXRUeXBlcyhlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwubGVmdCgpLCBtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChlbnVtZXJhdGlvblR5cGVzLnNpemUoKSA9PSAxKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk5MzM1IFRoaXMgbmVlZHMgdG8gd29yayB3aXRoIHR5cGVkZWYnZWQgZW51bXMuCi0gICAg
ICAgIEFTVDo6TmFtZWRUeXBlJiB0eXBlID0gZW51bWVyYXRpb25UeXBlc1swXTsKLSAgICAgICAg
aWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKSkgewotICAgICAgICAgICAg
QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25j
YXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAgICAgIGlmIChh
dXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24ubWVtYmVyQnlOYW1lKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5yaWdodCgpKSkgewotICAgICAgICAgICAgICAgIGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5zZXRFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbkRlZmluaXRpb24s
ICptZW1iZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBlbnVtZXJh
dGlvbiBtZW1iZXIgbGl0ZXJhbC4iLCBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuY29kZUxvY2F0
aW9uKCkpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBOYW1lQ29u
dGV4dCBuZXdOYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5l
d05hbWVSZXNvbHZlcihuZXdOYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFtZVJlc29sdmVyLlZpc2l0
b3I6OnZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotfQotCi0vLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2NyBNYWtlIHN1cmUgYWxs
IHRoZSBuYW1lcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBy
ZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJl
c29sdmVyKQotewotICAgIGZvciAoYXV0byYgdHlwZURlZmluaXRpb24gOiBwcm9ncmFtLnR5cGVE
ZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNl
KHR5cGVEZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVy
LmNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVz
b2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0
KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0u
c3RydWN0dXJlRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVu
dE5hbWVTcGFjZShzdHJ1Y3R1cmVEZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAg
ICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsK
LSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJu
IG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAg
ICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShlbnVtZXJhdGlvbkRlZmluaXRpb24u
Z2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZp
c2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFz
RXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAg
fQotICAgIGZvciAoYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVU
eXBlRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1l
U3BhY2UobmF0aXZlVHlwZURlY2xhcmF0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAg
bmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwot
ICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4g
bmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zKFByb2dyYW0mIHBy
b2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAgIGZvciAoYXV0byYgZnVu
Y3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAg
ICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2UoZnVuY3Rpb25EZWZpbml0aW9uLmdl
dCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNp
dChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9y
KCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAg
ICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnRO
YW1lU3BhY2UobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0g
ICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAg
ICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0YWE0ZWRiZDZhNzg3YzNiZTE0OTE0NjkwZTJhN2U4MjdjMDg2
NDc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQot
Y2xhc3MgTmFtZVJlc29sdmVyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIE5hbWVS
ZXNvbHZlcihOYW1lQ29udGV4dCYpOwotICAgIE5hbWVSZXNvbHZlcihOYW1lUmVzb2x2ZXImLCBO
YW1lQ29udGV4dCYpOwotCi0gICAgdmlydHVhbCB+TmFtZVJlc29sdmVyKCk7Ci0KLSAgICB2b2lk
IHNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKSB7IG1fY3VycmVu
dE5hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpU
eXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLQotICAgIE5h
bWVDb250ZXh0JiBtX25hbWVDb250ZXh0OwotICAgIEhhc2hTZXQ8QVNUOjpUeXBlUmVmZXJlbmNl
Kj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBOYW1lUmVzb2x2ZXIqIG1fcGFyZW50TmFtZVJlc29s
dmVyIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmFtZVNwYWNlIG1fY3VycmVudE5hbWVTcGFjZSB7
IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLUV4cGVjdGVkPHZvaWQs
IEVycm9yPiByZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYs
IE5hbWVSZXNvbHZlciYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZDQ3MjE2YzIzMmM5ZWUwYmRhZTYyODBjNDcwMTFk
ZGYzNTU5ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjA4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMRW50
cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlIDx3dGYv
ZHRvYS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLSNkZWZpbmUgUEFSU0UobmFtZSwgZWxlbWVudCwgLi4uKSBcCi0g
ICAgYXV0byBuYW1lID0gcGFyc2UjI2VsZW1lbnQoX19WQV9BUkdTX18pOyBcCi0gICAgaWYgKCFu
YW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOyBcCi0K
LSNkZWZpbmUgQ09OU1VNRV9UWVBFKG5hbWUsIHR5cGUpIFwKLSAgICBhdXRvIG5hbWUgPSBjb25z
dW1lVHlwZShUb2tlbjo6VHlwZTo6dHlwZSk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLSNkZWZpbmUgUEVFSyhuYW1l
KSBcCi0gICAgYXV0byBuYW1lID0gcGVlaygpOyBcCi0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOwotCi0jZGVmaW5lIFBFRUtfRlVS
VEhFUihuYW1lKSBcCi0gICAgYXV0byBuYW1lID0gcGVla0Z1cnRoZXIoKTsgXAotICAgIGlmICgh
bmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsKLQot
YXV0byBQYXJzZXI6OnBhcnNlKFByb2dyYW0mIHByb2dyYW0sIFN0cmluZ1ZpZXcgc3RyaW5nVmll
dywgUGFyc2luZ01vZGUgbW9kZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKSAtPiBFeHBlY3Rl
ZDx2b2lkLCBFcnJvcj4KLXsKLSAgICBtX2xleGVyID0gTGV4ZXIoc3RyaW5nVmlldywgbmFtZVNw
YWNlKTsKLSAgICBtX21vZGUgPSBtb2RlOwotCi0gICAgd2hpbGUgKCFtX2xleGVyLmlzRnVsbHlD
b25zdW1lZCgpKSB7Ci0gICAgICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICAg
ICAgc3dpdGNoICh0b2tlbi50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkludmFs
aWQ6Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpT
ZW1pY29sb246Ci0gICAgICAgICAgICBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlR5cGVkZWY6IHsKLSAgICAg
ICAgICAgIGF1dG8gdHlwZURlZmluaXRpb24gPSBwYXJzZVR5cGVEZWZpbml0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAoIXR5cGVEZWZpbml0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCh0eXBlRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBw
ZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqdHlwZURlZmluaXRpb24pKTsKLSAg
ICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTdHJ1Y3Q6IHsKLSAgICAgICAg
ICAgIGF1dG8gc3RydWN0dXJlRGVmaW5pdGlvbiA9IHBhcnNlU3RydWN0dXJlRGVmaW5pdGlvbigp
OwotICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVEZWZpbml0aW9uKQotICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChzdHJ1Y3R1cmVEZWZpbml0aW9uLmVycm9yKCkpOwotICAg
ICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpzdHJ1
Y3R1cmVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6RW51bTogewotICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBwYXJz
ZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFlbnVtZXJhdGlvbkRl
ZmluaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVudW1lcmF0
aW9uRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0g
cHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqZW51bWVyYXRpb25EZWZpbml0aW9uKSk7Ci0gICAgICAg
ICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TmF0aXZlOiB7Ci0gICAgICAgICAgICBp
ZiAobV9tb2RlICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiJ25hdGl2ZScgY2FuJ3QgZXhpc3Qgb3V0c2lkZSBv
ZiB0aGUgc3RhbmRhcmQgbGlicmFyeS4iKSk7Ci0gICAgICAgICAgICBhdXRvIGZ1cnRoZXJUb2tl
biA9IHBlZWtGdXJ0aGVyKCk7Ci0gICAgICAgICAgICBpZiAoIWZ1cnRoZXJUb2tlbikKLSAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgaWYgKGZ1cnRoZXJUb2tlbi0+dHlw
ZSA9PSBUb2tlbjo6VHlwZTo6VHlwZWRlZikgewotICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZl
VHlwZURlY2xhcmF0aW9uID0gcGFyc2VOYXRpdmVUeXBlRGVjbGFyYXRpb24oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5lcnJvcigpKTsKLSAg
ICAgICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUo
Km5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAgIGlmICghYXBwZW5kUmVz
dWx0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVz
dWx0LmVycm9yKCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYXV0byBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uID0gcGFyc2VOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3Vs
dCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsK
LSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBhdXRvIGZ1bmN0
aW9uRGVmaW5pdGlvbiA9IHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoZnVuY3Rpb25EZWZpbml0aW9uLmVycm9yKCkpOwotICAgICAgICAgICAgYXV0byBhcHBl
bmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpmdW5jdGlvbkRlZmluaXRpb24pKTsK
LSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQot
YXV0byBQYXJzZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBUcnlUb1BlZWsgdHJ5VG9Q
ZWVrKSAtPiBVbmV4cGVjdGVkPEVycm9yPgotewotICAgIGlmICh0cnlUb1BlZWsgPT0gVHJ5VG9Q
ZWVrOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gbmV4dFRva2VuID0gcGVlaygpKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1fbGV4ZXIuZXJyb3JTdHJpbmcoKm5l
eHRUb2tlbiwgbWVzc2FnZSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBsZXg6ICIsIG1lc3NhZ2UpKSk7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwZWVrKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8gdG9rZW4g
PSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAodG9rZW4udHlwZSAhPSBUb2tlbjo6VHlwZTo6SW52
YWxpZCAmJiB0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpFbmRPZkZpbGUpCi0gICAgICAgIHJl
dHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBjb25zdW1lIHRva2VuIl9z
dHIsIFRyeVRvUGVlazo6Tm8pOwotfQotCi1hdXRvIFBhcnNlcjo6cGVla0Z1cnRoZXIoKSAtPiBF
eHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVla0Z1
cnRoZXIoKTsKLSAgICBpZiAodG9rZW4udHlwZSAhPSBUb2tlbjo6VHlwZTo6SW52YWxpZCAmJiB0
b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpFbmRPZkZpbGUpCi0gICAgICAgIHJldHVybiB7IHRv
a2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBjb25zdW1lIHR3byB0b2tlbnMiX3N0ciwg
VHJ5VG9QZWVrOjpObyk7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZSB0LCBUb2tlbjo6VHlw
ZS4uLiB0cz4KLXN0cnVjdCBUeXBlcyB7Ci0gICAgc3RhdGljIGJvb2wgaW5jbHVkZXMoVG9rZW46
OlR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ID09IHR5cGUgfHwgVHlwZXM8dHMu
Li4+OjppbmNsdWRlcyh0eXBlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmROYW1l
VG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKLSAgICB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7Ci0gICAgICAgIFR5cGVzPHRzLi4uPjo6YXBwZW5k
TmFtZVRvKGJ1aWxkZXIpOwotICAgIH0KLX07Ci10ZW1wbGF0ZSA8VG9rZW46OlR5cGUgdD4KLXN0
cnVjdCBUeXBlczx0PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5jbHVkZXMoVG9rZW46OlR5cGUgdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ID09IHR5cGU7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCi0gICAgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCkpOwotICAgIH0KLX07Ci0KLQotYm9v
bCBQYXJzZXI6OnBlZWtUeXBlKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAgYXV0byB0b2tlbiA9
IG1fbGV4ZXIucGVlaygpOwotICAgIHJldHVybiB0b2tlbi50eXBlID09IHR5cGU7Ci19Ci0KLXRl
bXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLWJvb2wgUGFyc2VyOjpwZWVrVHlwZXMoKQot
ewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICByZXR1cm4gVHlwZXM8dHlw
ZXMuLi4+OjppbmNsdWRlcyh0b2tlbi50eXBlKTsKLX0KLQotc3RkOjpvcHRpb25hbDxUb2tlbj4g
UGFyc2VyOjp0cnlUeXBlKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAgYXV0byB0b2tlbiA9IG1f
bGV4ZXIucGVlaygpOwotICAgIGlmICh0b2tlbi50eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVy
biB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
fQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci1zdGQ6Om9wdGlvbmFsPFRva2Vu
PiBQYXJzZXI6OnRyeVR5cGVzKCkKLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7
Ci0gICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSkpCi0gICAgICAg
IHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGUoVG9rZW46OlR5cGUgdHlwZSkgLT4g
RXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLmNvbnN1
bWVUb2tlbigpOwotICAgIGlmICh0b2tlbi50eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVybiB7
IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiVW5leHBlY3RlZCB0b2tlbiAo
ZXhwZWN0ZWQgIiwgVG9rZW46OnR5cGVOYW1lKHR5cGUpLCAiIGdvdCAiLCBUb2tlbjo6dHlwZU5h
bWUodG9rZW4udHlwZSksICIpIikpOwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlw
ZXM+Ci1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGVzKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9y
PgotewotICAgIGF1dG8gYnVpbGRFeHBlY3RlZFN0cmluZyA9IFsmXSgpIC0+IFN0cmluZyB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlsi
KTsKLSAgICAgICAgVHlwZXM8dHlwZXMuLi4+OjphcHBlbmROYW1lVG8oYnVpbGRlcik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci0gICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwot
ICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRva2VuLnR5cGUpKQotICAgICAgICBy
ZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKG1ha2VTdHJpbmcoIlVuZXhwZWN0ZWQg
dG9rZW4gKGV4cGVjdGVkIG9uZSBvZiAiLCBidWlsZEV4cGVjdGVkU3RyaW5nKCksICIgZ290ICIs
IFRva2VuOjp0eXBlTmFtZSh0b2tlbi50eXBlKSwgIikiKSk7Ci19Ci0KLXN0YXRpYyBpbnQgZGln
aXRWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgaWYgKGNoYXJhY3RlciA+PSAnMCcgJiYg
Y2hhcmFjdGVyIDw9ICc5JykKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciAtICcwJzsKLSAgICBp
ZiAoY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ2YnKQotICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyIC0gJ2EnICsgMTA7Ci0gICAgcmV0dXJuIGNoYXJhY3RlciAtICdBJyArIDEwOwot
fQotCi1zdGF0aWMgRXhwZWN0ZWQ8aW50LCBFcnJvcj4gaW50TGl0ZXJhbFRvSW50KFN0cmluZ1Zp
ZXcgdGV4dCkKLXsKLSAgICBib29sIG5lZ2F0ZSA9IGZhbHNlOwotICAgIGlmICh0ZXh0LnN0YXJ0
c1dpdGgoIi0iX3N0cikpIHsKLSAgICAgICAgbmVnYXRlID0gdHJ1ZTsKLSAgICAgICAgdGV4dCA9
IHRleHQuc3Vic3RyaW5nKDEpOwotICAgIH0KLSAgICBpbnQgYmFzZSA9IDEwOwotICAgIGlmICh0
ZXh0LnN0YXJ0c1dpdGgoIjB4Il9zdHIpKSB7Ci0gICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmlu
ZygyKTsKLSAgICAgICAgYmFzZSA9IDE2OwotICAgIH0KLQotICAgIHVuc2lnbmVkIHJlc3VsdCA9
IDA7Ci0gICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IHRleHQuY29kZVBvaW50cygpKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGRpZ2l0ID0gZGlnaXRWYWx1ZShjb2RlUG9pbnQpOwotICAgICAgICBhdXRv
IHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgZGln
aXQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlz
IG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICBpZiAobmVnYXRlKSB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9mKHVuc2lnbmVkKSAmJiBzaXplb2Yo
aW50NjRfdCkgPiBzaXplb2YoaW50KSwgIlRoaXMgY29kZSB3b3VsZCBiZSB3cm9uZyBvdGhlcndp
c2UiKTsKLSAgICAgICAgaW50NjRfdCBpbnRSZXN1bHQgPSAtc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cmVzdWx0KTsKLSAgICAgICAgaWYgKGludFJlc3VsdCA8IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBsaXRlcmFsICIsIHRleHQsICIgaXMgb3V0
IG9mIGJvdW5kcyIpKSk7Ci0gICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4oaW50UmVz
dWx0KSB9OwotICAgIH0KLSAgICBpZiAocmVzdWx0ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiaW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2Yg
Ym91bmRzIikpKTsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkgfTsKLX0K
LQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4gdWludExpdGVyYWxUb1VpbnQoU3Ry
aW5nVmlldyB0ZXh0KQotewotICAgIHVuc2lnbmVkIGJhc2UgPSAxMDsKLSAgICBpZiAodGV4dC5z
dGFydHNXaXRoKCIweCJfc3RyKSkgewotICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMik7
Ci0gICAgICAgIGJhc2UgPSAxNjsKLSAgICB9Ci0gICAgQVNTRVJUKHRleHQuZW5kc1dpdGgoInUi
KSk7Ci0gICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQubGVuZ3RoKCkgLSAxKTsKLSAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byBjb2RlUG9pbnQgOiB0ZXh0LmNv
ZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdpdCA9IGRpZ2l0VmFsdWUoY29kZVBv
aW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAocmVzdWx0IDwgcHJldmlvdXMpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygidWludCBs
aXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgfQotICAgIHJldHVy
biB7IHJlc3VsdCB9OwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8ZmxvYXQsIEVycm9yPiBmbG9hdExp
dGVyYWxUb0Zsb2F0KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICBzaXplX3QgcGFyc2VkTGVuZ3Ro
OwotICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VEb3VibGUodGV4dCwgcGFyc2VkTGVuZ3RoKTsKLSAg
ICBpZiAocGFyc2VkTGVuZ3RoICE9IHRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3QgcGFyc2UgZmxvYXQgIiwgdGV4dCkp
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc3VsdCk7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8VmFyaWFudDxpbnQsIHVu
c2lnbmVkPiwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3JhbExpdGVyYWxUb2tlbiA9IGNvbnN1
bWVUeXBlczxUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFs
PigpOwotICAgIGlmICghaW50ZWdyYWxMaXRlcmFsVG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWxUb2tlbi5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAo
aW50ZWdyYWxMaXRlcmFsVG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRM
aXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW50TGl0ZXJhbFRvSW50KGludGVncmFs
TGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKHJlc3VsdCkK
LSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19OwotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAg
IEFTU0VSVChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VWludExp
dGVyYWwpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHVpbnRMaXRlcmFsVG9VaW50KGludGVncmFs
TGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKHJlc3VsdCkK
LSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19OwotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2Vy
Ojpjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKSAtPiBFeHBlY3RlZDx1bnNpZ25l
ZCwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3JhbExpdGVyYWwgPSBjb25zdW1lSW50ZWdyYWxM
aXRlcmFsKCk7Ci0gICAgaWYgKCFpbnRlZ3JhbExpdGVyYWwpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWwuZXJyb3IoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBX
VEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oaW50IHgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHsKLSAgICAgICAgaWYgKHggPCAwKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfSwgW10odW5zaWduZWQgeCkgLT4gc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gewotICAgICAgICByZXR1cm4geDsKLSAgICB9KSwgKmludGVncmFs
TGl0ZXJhbCk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0gICAg
cmV0dXJuIGZhaWwoImludCBsaXRlcmFsIGlzIG5lZ2F0aXZlIl9zdHIpOwotfQotCi1zdGF0aWMg
RXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiByZWNvZ25pemVTaW1wbGVVbnNpZ25lZEludGVnZXIo
U3RyaW5nVmlldyBzdHJpbmdWaWV3KQotewotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAg
aWYgKHN0cmluZ1ZpZXcubGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2lnbmVkIGxpdGVyYWwgIiwgc3RyaW5nVmll
dywgIiBpcyB0b28gc2hvcnQiKSkpOwotICAgIGZvciAoYXV0byBjb2RlUG9pbnQgOiBzdHJpbmdW
aWV3LmNvZGVQb2ludHMoKSkgewotICAgICAgICBpZiAoY29kZVBvaW50IDwgJzAnIHx8IGNvZGVQ
b2ludCA+ICc5JykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtl
U3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJhbCAiLCBzdHJpbmdWaWV3LCAiIGlzbid0IG9m
IHRoZSBmb3JtIFswLTldKyIpKSk7Ci0gICAgICAgIGF1dG8gcHJldmlvdXMgPSByZXN1bHQ7Ci0g
ICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgKGNvZGVQb2ludCAtICcwJyk7Ci0gICAgICAg
IGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJhbCAiLCBzdHJpbmdWaWV3
LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VDb25zdGFudEV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0eXBlID0gY29uc3VtZVR5
cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlVpbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6TnVsbCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRydWUsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpGYWxzZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OklkZW50aWZpZXI+
KCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZS5l
cnJvcigpKTsKLQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5
cGU6OkludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGludExpdGVyYWxUb0ludCh0
eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJu
IHt7IEFTVDo6SW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUpIH19OwotICAgIH0KLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0g
dWludExpdGVyYWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlm
ICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3Io
KSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwoeyAqdHlw
ZSB9LCAqdmFsdWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGbG9hdExpdGVy
YWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGZsb2F0TGl0ZXJhbFRvRmxvYXQodHlwZS0+c3Ry
aW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6
OkZsb2F0TGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07Ci0gICAgfQotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OlRydWU6Ci0gICAgICAgIHJldHVybiB7IEFTVDo6Qm9vbGVhbkxpdGVyYWwoV1RG
TW92ZSgqdHlwZSksIHRydWUpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmFsc2U6Ci0gICAg
ICAgIHJldHVybiB7IEFTVDo6Qm9vbGVhbkxpdGVyYWwoV1RGTW92ZSgqdHlwZSksIGZhbHNlKSB9
OwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46OlR5
cGU6OklkZW50aWZpZXIpOwotICAgICAgICBDT05TVU1FX1RZUEUoZnVsbFN0b3AsIEZ1bGxTdG9w
KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKG5leHQsIElkZW50aWZpZXIpOwotICAgICAgICByZXR1
cm4geyBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCh7ICp0eXBlLCAqbmV4dCB9LCB0eXBl
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIG5leHQtPnN0cmluZ1ZpZXcobV9sZXhl
cikudG9TdHJpbmcoKSkgfTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VU
eXBlQXJndW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudCwgRXJyb3I+Ci17Ci0g
ICAgUEVFSyhuZXh0VG9rZW4pOwotICAgIFBFRUtfRlVSVEhFUihmdXJ0aGVyVG9rZW4pOwotICAg
IGlmIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OklkZW50aWZpZXIgfHwgZnVydGhl
clRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpGdWxsU3RvcCkgewotICAgICAgICBQQVJTRShj
b25zdGFudEV4cHJlc3Npb24sIENvbnN0YW50RXhwcmVzc2lvbik7Ci0gICAgICAgIHJldHVybiBB
U1Q6OlR5cGVBcmd1bWVudChXVEZNb3ZlKCpjb25zdGFudEV4cHJlc3Npb24pKTsKLSAgICB9Ci0g
ICAgQ09OU1VNRV9UWVBFKHJlc3VsdCwgSWRlbnRpZmllcik7Ci0gICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKCpyZXN1bHQpOwotICAgIHJldHVybiBBU1Q6OlR5cGVBcmd1bWVudChBU1Q6OlR5cGVS
ZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgcmVzdWx0LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCksIEFTVDo6VHlwZUFyZ3VtZW50cygpKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZVR5cGVBcmd1bWVudHMoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPgot
ewotICAgIEFTVDo6VHlwZUFyZ3VtZW50cyB0eXBlQXJndW1lbnRzOwotICAgIGF1dG8gbGVzc1Ro
YW5TaWduID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWduKTsKLSAgICBpZiAoIWxl
c3NUaGFuU2lnbikKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7Ci0KLSAgICBhdXRvIGdy
ZWF0ZXJUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbik7Ci0g
ICAgaWYgKGdyZWF0ZXJUaGFuU2lnbikKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7Ci0K
LSAgICBQQVJTRSh0eXBlQXJndW1lbnQsIFR5cGVBcmd1bWVudCk7Ci0gICAgdHlwZUFyZ3VtZW50
cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFyZ3VtZW50KSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICBhdXRvIGdyZWF0ZXJUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OkdyZWF0
ZXJUaGFuU2lnbik7Ci0gICAgICAgIGlmIChncmVhdGVyVGhhblNpZ24pCi0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBDT05TVU1FX1RZUEUoY29tbWEsIENvbW1hKTsKLSAgICAgICAgUEFS
U0UodHlwZUFyZ3VtZW50LCBUeXBlQXJndW1lbnQpOwotICAgICAgICB0eXBlQXJndW1lbnRzLmFw
cGVuZChXVEZNb3ZlKCp0eXBlQXJndW1lbnQpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHlwZUFy
Z3VtZW50czsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeEFiYnJldmlhdGVkKCkg
LT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRv
a2VuID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6U3RhciwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVm
dFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYgKCF0b2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKHRva2VuLmVycm9yKCkpOwotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6
VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgYXV0byBudW1FbGVtZW50cyA9IGNv
bnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgICAgICBpZiAoIW51bUVsZW1l
bnRzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9y
KCkpOwotICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFy
ZUJyYWNrZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNr
ZXQgfSwgKnRva2VuLCAqbnVtRWxlbWVudHMgfX07Ci0gICAgfQotICAgIHJldHVybiB7eyB7ICp0
b2tlbiB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9wdCB9fTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJl
dmlhdGVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gY29uc3VtZVR5cGVzPAotICAgICAg
ICBUb2tlbjo6VHlwZTo6U3RhciwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQ
YWlyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYg
KCF0b2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRva2VuLmVycm9yKCkpOwot
ICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsK
LSAgICAgICAgYXV0byBudW1FbGVtZW50cyA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0
ZXJhbCgpOwotICAgICAgICBpZiAoIW51bUVsZW1lbnRzKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9yKCkpOwotICAgICAgICBDT05TVU1FX1RZUEUo
cmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICByZXR1cm4g
e3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCBzdGQ6Om51bGxvcHQs
ICpudW1FbGVtZW50cyB9fTsKLSAgICB9Ci0gICAgYXV0byBhZGRyZXNzU3BhY2VUb2tlbiA9IGNv
bnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkNvbnN0YW50LAotICAgICAgICBUb2tl
bjo6VHlwZTo6RGV2aWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXAsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpUaHJlYWQ+KCk7Ci0gICAgaWYgKCFhZGRyZXNzU3BhY2VUb2tlbikK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFkZHJlc3NTcGFjZVRva2VuLmVycm9yKCkp
OwotICAgIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZTsKLSAgICBzd2l0Y2ggKGFkZHJl
c3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Q29uc3RhbnQ6Ci0g
ICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGV2aWNlOgotICAgICAgICBhZGRyZXNz
U3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cDoKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNU
OjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6
OlRocmVhZCk7Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJl
YWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwgKnRv
a2VuLCB7IGFkZHJlc3NTcGFjZSB9LCBzdGQ6Om51bGxvcHQgfX07Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVR5cGUoKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPgot
ewotICAgIGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46
OlR5cGU6OkNvbnN0YW50LAotICAgICAgICBUb2tlbjo6VHlwZTo6RGV2aWNlLAotICAgICAgICBU
b2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXAsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWQ+KCk7
Ci0KLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0UodHlwZUFy
Z3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0KLSAgICBpZiAoYWRkcmVzc1NwYWNlVG9rZW4pIHsK
LSAgICAgICAgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwotICAgICAgICBzd2l0Y2gg
KGFkZHJlc3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkNv
bnN0YW50OgotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OkNv
bnN0YW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkRl
dmljZToKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpEZXZp
Y2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFk
Z3JvdXA6Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhy
ZWFkZ3JvdXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIEFTU0VSVChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VGhyZWFk
KTsKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGNvbnN0cnVjdFR5
cGVGcm9tU3VmZml4QWJicmV2aWF0ZWQgPSBbJl0oY29uc3QgVHlwZVN1ZmZpeEFiYnJldmlhdGVk
JiB0eXBlU3VmZml4QWJicmV2aWF0ZWQsIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYmIHByZXZpb3Vz
KSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKCphZGRyZXNzU3BhY2VUb2tlbiwgdHlwZVN1ZmZpeEFiYnJldmlhdGVkLmxvY2F0aW9u
KTsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZVN1ZmZpeEFiYnJldmlhdGVkLnRva2VuLnR5cGUp
IHsKLSAgICAgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2Us
IFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3F1
YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3Vz
KSkgfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGVT
dWZmaXhBYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJh
Y2tldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVR5cGU6OmNyZWF0ZShs
b2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksICp0eXBlU3VmZml4QWJicmV2aWF0ZWQubnVtRWxl
bWVudHMpIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIFBBUlNFKGZpcnN0
VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBUeXBlU3VmZml4QWJicmV2aWF0ZWQpOwotICAgICAgICBS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUo
V1RGTW92ZSgqYWRkcmVzc1NwYWNlVG9rZW4pLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsKLSAgICAgICAgYXV0byBuZXh0ID0g
Y29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCgqZmlyc3RUeXBlU3VmZml4QWJicmV2
aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1vdmUobmV4dCk7
Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBQRUVLKG5leHRUb2tlbik7Ci0g
ICAgICAgICAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpTdGFyCi0gICAg
ICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpTcXVhcmVCcmFj
a2V0UGFpcgotICAgICAgICAgICAgICAgICYmIG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFBBUlNFKHR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgVHlwZVN1ZmZp
eEFiYnJldmlhdGVkKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgbmVzdGluZyBoZXJlIG1p
Z2h0IGJlIGluIHRoZSB3cm9uZyBvcmRlci4KLSAgICAgICAgICAgIG5leHQgPSBjb25zdHJ1Y3RU
eXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkKCp0eXBlU3VmZml4QWJicmV2aWF0ZWQsIFdURk1vdmUo
cmVzdWx0KSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKG5leHQpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci0gICAgfQotCi0gICAgYXV0byBjb25z
dHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVkID0gWyZdKGNvbnN0IFR5cGVTdWZmaXhO
b25BYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uKCpuYW1lLCB0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQubG9jYXRp
b24pOwotICAgICAgICBzd2l0Y2ggKHR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC50b2tlbi50eXBl
KSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAgICAgICAgICByZXR1cm4g
eyBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobG9jYXRpb24sICp0eXBlU3VmZml4Tm9uQWJicmV2
aWF0ZWQuYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgICAgICByZXR1cm4geyBBU1Q6
OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCAqdHlwZVN1ZmZpeE5vbkFiYnJl
dmlhdGVkLmFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlQodHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLnRva2VuLnR5
cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAgIHJldHVy
biB7IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCAq
dHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLm51bUVsZW1lbnRzKSB9OwotICAgICAgICB9Ci0gICAg
fTsKLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gQVNUOjpUeXBlUmVmZXJlbmNl
OjpjcmVhdGUoKm5hbWUsIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RG
TW92ZSgqdHlwZUFyZ3VtZW50cykpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFBFRUso
bmV4dFRva2VuKTsKLSAgICAgICAgaWYgKG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6
U3RhcgotICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpTcXVh
cmVCcmFja2V0UGFpcgotICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgUEFSU0UodHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBUeXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQpOwotICAgICAgICAvLyBGSVhNRTogVGhlIG5lc3RpbmcgaGVyZSBtaWdodCBiZSBp
biB0aGUgd3Jvbmcgb3JkZXIuCi0gICAgICAgIGF1dG8gbmV4dCA9IGNvbnN0cnVjdFR5cGVGcm9t
U3VmZml4Tm9uQWJicmV2aWF0ZWQoKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCwgV1RGTW92ZShy
ZXN1bHQpKTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShuZXh0KTsKLSAgICB9Ci0gICAgcmV0
dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZURlZmluaXRp
b24oKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05T
VU1FX1RZUEUob3JpZ2luLCBUeXBlZGVmKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRp
Zmllcik7Ci0gICAgQ09OU1VNRV9UWVBFKGVxdWFscywgRXF1YWxzU2lnbik7Ci0gICAgUEFSU0Uo
dHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAg
ICByZXR1cm4gQVNUOjpUeXBlRGVmaW5pdGlvbih7ICpvcmlnaW4sICpzZW1pY29sb24gfSwgbmFt
ZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlKSk7Ci19Ci0K
LWF1dG8gUGFyc2VyOjpwYXJzZUJ1aWx0SW5TZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6QnVp
bHRJblNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBhdXRvIG9yaWdpbiA9IGNvbnN1bWVUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJRCwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlNWVmVydGV4SUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQU2l6ZSwKLSAgICAgICAgVG9rZW46
OlR5cGU6OlNWUG9zaXRpb24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVklzRnJvbnRGYWNlLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWVGFyZ2V0LAotICAgICAg
ICBUb2tlbjo6VHlwZTo6U1ZEZXB0aCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWQ292ZXJhZ2Us
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpTVkdyb3VwSUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwSW5kZXgsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFkSUQ+KCk7Ci0gICAgaWYgKCFvcmlnaW4p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChvcmlnaW4uZXJyb3IoKSk7Ci0KLSAgICBz
d2l0Y2ggKG9yaWdpbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJ
RDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJRCk7Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGlj
KHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVmVydGV4SUQp
OwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlBTaXplOgotICAgICAgICByZXR1cm4gQVNUOjpCdWls
dEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
UFNpemUpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVy
biBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVlBvc2l0aW9uKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVklzRnJvbnRG
YWNlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZSk7Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNl
bWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWU2Ft
cGxlSW5kZXgpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAg
ICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6U1ZUYXJnZXQ6IHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBjb25zdW1lTm9uTmVnYXRpdmVJ
bnRlZ3JhbExpdGVyYWwoKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTU4MDcgTWFrZSB0aGlzIHdvcmsgd2l0aCBzdHJpbmdzIGxpa2UgIlNWX1Rh
cmdldDAiLgotICAgICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCh0YXJnZXQuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlRhcmdl
dCwgKnRhcmdldCk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWRGVwdGg6Ci0gICAg
ICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkNv
dmVyYWdlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0s
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZDb3ZlcmFnZSk7Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWls
dEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZEaXNwYXRjaFRocmVhZElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkdyb3VwSUQ6Ci0g
ICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWls
dEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9y
aWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJbmRleCk7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKG9yaWdpbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6
U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsg
Km9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJ
RCk7Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VSZXNvdXJjZVNlbWFudGljKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpSZXNvdXJjZVNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZ
UEUob3JpZ2luLCBSZWdpc3Rlcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywg
TGVmdFBhcmVudGhlc2lzKTsKLQotICAgIENPTlNVTUVfVFlQRShpbmZvLCBJZGVudGlmaWVyKTsK
LSAgICBhdXRvIGluZm9TdHJpbmdWaWV3ID0gaW5mby0+c3RyaW5nVmlldyhtX2xleGVyKTsKLSAg
ICBpZiAoaW5mb1N0cmluZ1ZpZXcubGVuZ3RoKCkgPCAyIHx8IChpbmZvU3RyaW5nVmlld1swXSAh
PSAndScKLSAgICAgICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3QnCi0gICAgICAgICYmIGlu
Zm9TdHJpbmdWaWV3WzBdICE9ICdiJwotICAgICAgICAmJiBpbmZvU3RyaW5nVmlld1swXSAhPSAn
cycpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZyhpbmZv
U3RyaW5nVmlldy5zdWJzdHJpbmcoMCwgMSksICIgaXMgbm90IGEga25vd24gcmVzb3VyY2UgdHlw
ZSAoJ3UnLCAndCcsICdiJywgb3IgJ3MnKSIpKSk7Ci0KLSAgICBBU1Q6OlJlc291cmNlU2VtYW50
aWM6Ok1vZGUgbW9kZTsKLSAgICBzd2l0Y2ggKGluZm9TdHJpbmdWaWV3WzBdKSB7Ci0gICAgY2Fz
ZSAndSc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlVub3Jk
ZXJlZEFjY2Vzc1ZpZXc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ3QnOgotICAgICAgICBt
b2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpUZXh0dXJlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlICdiJzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6
TW9kZTo6QnVmZmVyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICdzJzoKLSAgICAgICAgbW9k
ZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6U2FtcGxlcjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gcmVjb2duaXplU2ltcGxlVW5zaWduZWRJbnRlZ2VyKGlu
Zm9TdHJpbmdWaWV3LnN1YnN0cmluZygxKSk7Ci0gICAgaWYgKCFpbmRleCkKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGluZGV4LmVycm9yKCkpOwotCi0gICAgdW5zaWduZWQgc3BhY2Ug
PSAwOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgQ09O
U1VNRV9UWVBFKHNwYWNlVG9rZW4sIElkZW50aWZpZXIpOwotICAgICAgICBhdXRvIHNwYWNlVG9r
ZW5TdHJpbmdWaWV3ID0gc3BhY2VUb2tlbi0+c3RyaW5nVmlldyhtX2xleGVyKTsKLSAgICAgICAg
U3RyaW5nVmlldyBwcmVmaXggeyAic3BhY2UiIH07Ci0gICAgICAgIGlmICghc3BhY2VUb2tlblN0
cmluZ1ZpZXcuc3RhcnRzV2l0aChwcmVmaXgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBhcmd1bWVudCB0byByZXNvdXJjZSBzZW1h
bnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBuZWVkcyBiZSBvZiB0aGUgZm9ybSAnc3Bh
Y2UwJyIpKSk7Ci0gICAgICAgIGlmIChzcGFjZVRva2VuU3RyaW5nVmlldy5sZW5ndGgoKSA8PSBw
cmVmaXgubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
bWFrZVN0cmluZygiU2Vjb25kIGFyZ3VtZW50IHRvIHJlc291cmNlIHNlbWFudGljICIsIHNwYWNl
VG9rZW5TdHJpbmdWaWV3LCAiIG5lZWRzIGJlIG9mIHRoZSBmb3JtICdzcGFjZTAnIikpKTsKLSAg
ICAgICAgYXV0byBzcGFjZVZhbHVlID0gcmVjb2duaXplU2ltcGxlVW5zaWduZWRJbnRlZ2VyKHNw
YWNlVG9rZW5TdHJpbmdWaWV3LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKCkpKTsKLSAgICAgICAg
aWYgKCFzcGFjZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHNwYWNl
VmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHNwYWNlID0gKnNwYWNlVmFsdWU7Ci0gICAgfQotCi0g
ICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotCi0g
ICAgcmV0dXJuIEFTVDo6UmVzb3VyY2VTZW1hbnRpYyh7ICpvcmlnaW4sICpyaWdodFBhcmVudGhl
c2lzIH0sIG1vZGUsICppbmRleCwgc3BhY2UpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OlNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwg
U3BlY2lhbGl6ZWQpOwotICAgIHJldHVybiBBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYygqb3JpZ2luKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3RhZ2VJbk91dFNlbWFudGlj
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWMsIEVycm9yPgotewotICAgIENP
TlNVTUVfVFlQRShvcmlnaW4sIEF0dHJpYnV0ZSk7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJl
bnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gaW5kZXggPSBjb25zdW1lTm9u
TmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWluZGV4KQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoaW5kZXguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUocmln
aHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gQVNUOjpTdGFn
ZUluT3V0U2VtYW50aWMoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCAqaW5kZXgpOwot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPHN0ZDo6dW5pcXVl
X3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+Ci17Ci0gICAgaWYgKCF0cnlUeXBlKFRva2VuOjpU
eXBlOjpDb2xvbikpCi0gICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsKLQotICAgIFBFRUsodG9r
ZW4pOwotICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpB
dHRyaWJ1dGU6IHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBTdGFnZUluT3V0U2VtYW50aWMpOwot
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3Vs
dCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewotICAg
ICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkg
fTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UmVnaXN0ZXI6ICB7Ci0gICAgICAgIFBB
UlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlx
dWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKLSAgICB9Ci0gICAgZGVmYXVs
dDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwotICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0g
ICAgfQotICAgIH0KLX0KLUFTVDo6UXVhbGlmaWVycyBQYXJzZXI6OnBhcnNlUXVhbGlmaWVycygp
Ci17Ci0gICAgQVNUOjpRdWFsaWZpZXJzIHF1YWxpZmllcnM7Ci0gICAgd2hpbGUgKGF1dG8gbmV4
dCA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlF1YWxpZmllcikpIHsKLSAgICAgICAgYXV0byBuZXh0
U3RyaW5nVmlldyA9IG5leHQtPnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgICAgIGlmICgibm9p
bnRlcnBvbGF0aW9uIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAgIHF1YWxpZmllcnMu
YXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpOb2ludGVycG9sYXRpb24pOwotICAgICAgICBlbHNlIGlm
ICgibm9wZXJzcGVjdGl2ZSIgPT0gbmV4dFN0cmluZ1ZpZXcpCi0gICAgICAgICAgICBxdWFsaWZp
ZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Tm9wZXJzcGVjdGl2ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKCJ1bmlmb3JtIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAgIHF1YWxpZmllcnMu
YXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpVbmlmb3JtKTsKLSAgICAgICAgZWxzZSBpZiAoImNlbnRy
b2lkIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAgIHF1YWxpZmllcnMuYXBwZW5kKEFT
VDo6UXVhbGlmaWVyOjpDZW50cm9pZCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNT
RVJUKCJzYW1wbGUiID09IG5leHRTdHJpbmdWaWV3KTsKLSAgICAgICAgICAgIHF1YWxpZmllcnMu
YXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpTYW1wbGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBxdWFsaWZpZXJzOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTdHJ1Y3R1cmVFbGVtZW50
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVFbGVtZW50LCBFcnJvcj4KLXsKLSAgICBQRUVL
KG9yaWdpbik7Ci0KLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVhbGlmaWVycyA9IHBhcnNlUXVhbGlm
aWVycygpOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUs
IElkZW50aWZpZXIpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0gICAgQ09OU1VN
RV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnQoeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIFdURk1vdmUocXVhbGlmaWVycyksIFdU
Rk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1v
dmUoKnNlbWFudGljKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN0cnVjdHVyZURlZmluaXRp
b24oKSAtPiBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24sIEVycm9yPgotewotICAg
IENPTlNVTUVfVFlQRShvcmlnaW4sIFN0cnVjdCk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElk
ZW50aWZpZXIpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFja2V0LCBMZWZ0Q3VybHlC
cmFja2V0KTsKLQotICAgIEFTVDo6U3RydWN0dXJlRWxlbWVudHMgc3RydWN0dXJlRWxlbWVudHM7
Ci0gICAgd2hpbGUgKCFwZWVrVHlwZShUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQpKSB7
Ci0gICAgICAgIFBBUlNFKHN0cnVjdHVyZUVsZW1lbnQsIFN0cnVjdHVyZUVsZW1lbnQpOwotICAg
ICAgICBzdHJ1Y3R1cmVFbGVtZW50cy5hcHBlbmQoV1RGTW92ZSgqc3RydWN0dXJlRWxlbWVudCkp
OwotICAgIH0KLQotICAgIGF1dG8gcmlnaHRDdXJseUJyYWNrZXQgPSBtX2xleGVyLmNvbnN1bWVU
b2tlbigpOwotCi0gICAgcmV0dXJuIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbih7ICpvcmlnaW4s
IHJpZ2h0Q3VybHlCcmFja2V0IH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmco
KSwgV1RGTW92ZShzdHJ1Y3R1cmVFbGVtZW50cykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VF
bnVtZXJhdGlvbkRlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgRW51bSk7Ci0gICAgQ09O
U1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotCi0gICAgYXV0byB0eXBlID0gKFsmXSgpIC0+
IEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHsKLSAgICAgICAgaWYgKHRy
eVR5cGUoVG9rZW46OlR5cGU6OkNvbG9uKSkgewotICAgICAgICAgICAgUEFSU0UocGFyc2VkVHlw
ZSwgVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcGFyc2VkVHlwZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUoKm9yaWdp
biwgImludCJfc3RyLCBBU1Q6OlR5cGVBcmd1bWVudHMoKSkgfTsKLSAgICB9KSgpOwotICAgIGlm
ICghdHlwZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7Ci0K
LSAgICBDT05TVU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7Ci0K
LSAgICBpbnQ2NF90IG5leHRWYWx1ZSA9IDA7Ci0gICAgUEFSU0UoZmlyc3RFbnVtZXJhdGlvbk1l
bWJlciwgRW51bWVyYXRpb25NZW1iZXIsIG5leHRWYWx1ZSk7Ci0gICAgbmV4dFZhbHVlID0gZmly
c3RFbnVtZXJhdGlvbk1lbWJlci0+dmFsdWUoKSArIDE7Ci0KLSAgICBBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiByZXN1bHQoeyB9LCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5n
KCksIFdURk1vdmUoKnR5cGUpKTsKLSAgICBhdXRvIHN1Y2Nlc3MgPSByZXN1bHQuYWRkKFdURk1v
dmUoKmZpcnN0RW51bWVyYXRpb25NZW1iZXIpKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAg
IHJldHVybiBmYWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9uIG1lbWJlciJfc3RyKTsKLQotICAg
IHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgUEFSU0UobWVt
YmVyLCBFbnVtZXJhdGlvbk1lbWJlciwgbmV4dFZhbHVlKTsKLSAgICAgICAgbmV4dFZhbHVlID0g
bWVtYmVyLT52YWx1ZSgpICsgMTsKLSAgICAgICAgc3VjY2VzcyA9IHJlc3VsdC5hZGQoV1RGTW92
ZSgqbWVtYmVyKSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBm
YWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9uIG1lbWJlciJfc3RyKTsKLSAgICB9Ci0KLSAgICBD
T05TVU1FX1RZUEUocmlnaHRDdXJseUJyYWNrZXQsIFJpZ2h0Q3VybHlCcmFja2V0KTsKLSAgICBy
ZXN1bHQudXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdpbiwgKnJpZ2h0Q3VybHlCcmFja2V0fSk7
Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VF
bnVtZXJhdGlvbk1lbWJlcihpbnQ2NF90IGRlZmF1bHRWYWx1ZSkgLT4gRXhwZWN0ZWQ8QVNUOjpF
bnVtZXJhdGlvbk1lbWJlciwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKGlkZW50aWZpZXIs
IElkZW50aWZpZXIpOwotICAgIGF1dG8gbmFtZSA9IGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9s
ZXhlcikudG9TdHJpbmcoKTsKLQotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpFcXVhbHNT
aWduKSkgewotICAgICAgICBQQVJTRShjb25zdGFudEV4cHJlc3Npb24sIENvbnN0YW50RXhwcmVz
c2lvbik7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiB2YWx1ZTsKLSAgICAgICAg
Y29uc3RhbnRFeHByZXNzaW9uLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVn
ZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSBpbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRl
cmFsJikgewotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYpIHsKLSAgICAgICAg
fSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgewotICAgICAgICB9KSk7Ci0K
LSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiZW51bSBpbml0aWFsaXphdGlvbiB2YWx1ZXMgY2FuIG9ubHkgYmUgYW4gaW50IG9yIHVp
bnQgY29uc3RhbnQuIikpOwotICAgICAgICByZXR1cm4gQVNUOjpFbnVtZXJhdGlvbk1lbWJlcigq
aWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgKnZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIEFT
VDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIGRlZmF1bHRW
YWx1ZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIC0+
IEV4cGVjdGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05T
VU1FX1RZUEUob3JpZ2luLCBOYXRpdmUpOwotICAgIENPTlNVTUVfVFlQRShwYXJzZWRUeXBlZGVm
LCBUeXBlZGVmKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFS
U0UodHlwZUFyZ3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWlj
b2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bih7ICpvcmlnaW4sICpzZW1pY29sb24gfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0
cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1lbnRzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZU51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSgpIC0+IEV4cGVjdGVkPEFTVDo6TnVtVGhyZWFk
c0Z1bmN0aW9uQXR0cmlidXRlLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBO
dW1UaHJlYWRzKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50
aGVzaXMpOwotCi0gICAgYXV0byB3aWR0aCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0
ZXJhbCgpOwotICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh3
aWR0aC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShjb21tYSwgQ29tbWEpOwotCi0gICAg
YXV0byBoZWlnaHQgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBp
ZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGhlaWdodC5lcnJvcigp
KTsKLQotICAgIENPTlNVTUVfVFlQRShzZWNvbmRDb21tYSwgQ29tbWEpOwotCi0gICAgYXV0byBk
ZXB0aCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghZGVw
dGgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChkZXB0aC5lcnJvcigpKTsKLQotICAg
IENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAg
IHJldHVybiBBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSh7ICpvcmlnaW4sICpyaWdo
dFBhcmVudGhlc2lzIH0sICp3aWR0aCwgKmhlaWdodCwgKmRlcHRoKTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlQXR0cmlidXRlQmxvY2soKSAtPiBFeHBlY3RlZDxBU1Q6OkF0dHJpYnV0ZUJsb2Nr
LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUobGVmdFNxdWFyZUJyYWNrZXQsIExlZnRTcXVh
cmVCcmFja2V0KTsKLQotICAgIEFTVDo6QXR0cmlidXRlQmxvY2sgcmVzdWx0OwotCi0gICAgd2hp
bGUgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpKSB7Ci0gICAgICAg
IFBBUlNFKG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpudW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VQYXJhbWV0ZXIoKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBtX2xleGVyLnBl
ZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgQVNUOjpRdWFsaWZpZXJzIHF1YWxpZmllcnMgPSBw
YXJzZVF1YWxpZmllcnMoKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLQotICAgIFN0cmluZyBu
YW1lOwotICAgIGlmIChhdXRvIHRva2VuID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmll
cikpCi0gICAgICAgIG5hbWUgPSB0b2tlbi0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygp
OwotCi0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0
ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIHJldHVybiBBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24oeyBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFj
ZSgpIH0sIFdURk1vdmUocXVhbGlmaWVycyksIHsgV1RGTW92ZSgqdHlwZSkgfSwgV1RGTW92ZShu
YW1lKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBudWxscHRyKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlUGFyYW1ldGVycygpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMsIEVy
cm9yPgotewotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLQotICAg
IENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBp
ZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcykpCi0gICAgICAgIHJldHVy
biBXVEZNb3ZlKHBhcmFtZXRlcnMpOwotCi0gICAgUEFSU0UoZmlyc3RQYXJhbWV0ZXIsIFBhcmFt
ZXRlcik7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+KFdURk1vdmUoKmZpcnN0UGFyYW1ldGVyKSkpOwotCi0gICAgd2hpbGUgKHRy
eVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJTRShwYXJhbWV0ZXIsIFBh
cmFtZXRlcik7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpwYXJhbWV0ZXIpKSk7Ci0gICAgfQotCi0gICAg
Q09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAg
cmV0dXJuIFdURk1vdmUocGFyYW1ldGVycyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUZ1bmN0
aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uLCBFcnJv
cj4KLXsKLSAgICBQQVJTRShmdW5jdGlvbkRlY2xhcmF0aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9u
KTsKLSAgICBQQVJTRShibG9jaywgQmxvY2spOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbihXVEZNb3ZlKCpmdW5jdGlvbkRlY2xhcmF0aW9uKSwgV1RGTW92ZSgqYmxvY2spKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBF
eHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIFBFRUsob3Jp
Z2luKTsKLQotICAgIFBBUlNFKGF0dHJpYnV0ZUJsb2NrLCBBdHRyaWJ1dGVCbG9jayk7Ci0gICAg
Q09OU1VNRV9UWVBFKGNvbXB1dGUsIENvbXB1dGUpOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwot
ICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRShwYXJhbWV0ZXJz
LCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0
byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgYm9vbCBp
c09wZXJhdG9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7
IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0s
IFdURk1vdmUoKmF0dHJpYnV0ZUJsb2NrKSwgQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSwg
V1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RG
TW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2Rl
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0aW9uRGVjbGFy
YXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewot
ICAgIGF1dG8gZW50cnlQb2ludCA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6VmVydGV4LCBU
b2tlbjo6VHlwZTo6RnJhZ21lbnQ+KCk7Ci0gICAgaWYgKCFlbnRyeVBvaW50KQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZW50cnlQb2ludC5lcnJvcigpKTsKLSAgICBhdXRvIGVudHJ5
UG9pbnRUeXBlID0gKGVudHJ5UG9pbnQtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlZlcnRleCkgPyBB
U1Q6OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXggOiBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpGcmFnbWVu
dDsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVu
dGlmaWVyKTsKLSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShz
ZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWso
KS5zdGFydE9mZnNldCgpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gZmFsc2U7Ci0gICAgcmV0
dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IGVudHJ5UG9pbnQtPnN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIGVudHJ5UG9pbnRUeXBlLCBX
VEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZN
b3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+
IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhv
cmlnaW4pOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBhdXRvIG5hbWUgPSBjb25z
dW1lVHlwZXM8VG9rZW46OlR5cGU6OklkZW50aWZpZXIsIFRva2VuOjpUeXBlOjpPcGVyYXRvck5h
bWU+KCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFt
ZS5lcnJvcigpKTsKLSAgICBhdXRvIGlzT3BlcmF0b3IgPSBuYW1lLT50eXBlID09IFRva2VuOjpU
eXBlOjpPcGVyYXRvck5hbWU7Ci0KLSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJzKTsK
LSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBt
X2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5h
bWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3Ry
aW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92
ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIE9wZXJhdG9y
KTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0
ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgYm9vbCBpc09wZXJhdG9y
ID0gdHJ1ZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5z
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgeyB9LCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKCpw
YXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAgICBz
d2l0Y2ggKHRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6T3BlcmF0b3I6Ci0g
ICAgICAgIHJldHVybiBwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIGNh
c2UgVG9rZW46OlR5cGU6OlZlcnRleDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGcmFnbWVudDoK
LSAgICAgICAgcmV0dXJuIHBhcnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0aW9uRGVjbGFyYXRpb24o
KTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldDoKLSAgICAgICAgcmV0
dXJuIHBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gcGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIH0KLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVj
dGVkPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VN
RV9UWVBFKG5hdGl2ZSwgTmF0aXZlKTsKLSAgICBQQVJTRShmdW5jdGlvbkRlY2xhcmF0aW9uLCBG
dW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29s
b24pOwotCi0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihXVEZNb3Zl
KCpmdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUJsb2NrKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdp
biwgTGVmdEN1cmx5QnJhY2tldCk7Ci0gICAgUEFSU0UocmVzdWx0LCBCbG9ja0JvZHkpOwotICAg
IENPTlNVTUVfVFlQRShyaWdodEN1cmx5QnJhY2tldCwgUmlnaHRDdXJseUJyYWNrZXQpOwotICAg
IHJlc3VsdC0+dXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdpbiwgKnJpZ2h0Q3VybHlCcmFja2V0
IH0pOwotICAgIHJldHVybiBXVEZNb3ZlKCpyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VCbG9ja0JvZHkoKSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4KLXsKLSAgICBhdXRv
IHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIEFTVDo6
U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwotICAgIHdoaWxlICghcGVla1R5cGVzPFRva2VuOjpUeXBl
OjpSaWdodEN1cmx5QnJhY2tldCwgVG9rZW46OlR5cGU6OkNhc2UsIFRva2VuOjpUeXBlOjpEZWZh
dWx0PigpKSB7Ci0gICAgICAgIFBBUlNFKHN0YXRlbWVudCwgU3RhdGVtZW50KTsKLSAgICAgICAg
c3RhdGVtZW50cy5hcHBlbmQoV1RGTW92ZSgqc3RhdGVtZW50KSk7Ci0gICAgfQotCi0gICAgYXV0
byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgcmV0dXJu
IEFTVDo6QmxvY2soeyBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgp
IH0sIFdURk1vdmUoc3RhdGVtZW50cykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VJZlN0YXRl
bWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6SWZTdGF0ZW1lbnQsIEVycm9yPgotewotICAgIENPTlNV
TUVfVFlQRShvcmlnaW4sIElmKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBM
ZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGNvbmRpdGlvbmFsLCBFeHByZXNzaW9uKTsKLSAg
ICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAg
UEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlN0YXRl
bWVudD4gZWxzZUJvZHkobnVsbHB0cik7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkVs
c2UpKSB7Ci0gICAgICAgIFBBUlNFKHBhcnNlZEVsc2VCb2R5LCBTdGF0ZW1lbnQpOwotICAgICAg
ICBlbHNlQm9keSA9ICgqcGFyc2VkRWxzZUJvZHkpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAgIH0K
LQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQot
ICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FzdEFyZ3VtZW50czsKLSAg
ICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpjb25kaXRpb25hbCkpOwotICAgIGF1dG8g
Ym9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KFRva2VuKCpvcmln
aW4pLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsKLSAgICByZXR1cm4gQVNU
OjpJZlN0YXRlbWVudCh7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVy
Lm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoYm9vbENhc3QpLCBXVEZNb3ZlKCpib2R5KSwgV1RGTW92
ZShlbHNlQm9keSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKSAt
PiBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRlbWVudCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9U
WVBFKG9yaWdpbiwgU3dpdGNoKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBM
ZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKHZhbHVlLCBFeHByZXNzaW9uKTsKLSAgICBDT05T
VU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgQ09OU1VN
RV9UWVBFKGxlZnRDdXJseUJyYWNrZXQsIExlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgVmVjdG9y
PEFTVDo6U3dpdGNoQ2FzZT4gc3dpdGNoQ2FzZXM7Ci0gICAgUEVFSyhuZXh0VG9rZW4pOwotICAg
IHdoaWxlIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlJpZ2h0Q3VybHlCcmFja2V0
KSB7Ci0gICAgICAgIFBBUlNFKHN3aXRjaENhc2UsIFN3aXRjaENhc2UpOwotICAgICAgICBzd2l0
Y2hDYXNlcy5hcHBlbmQoV1RGTW92ZSgqc3dpdGNoQ2FzZSkpOwotICAgICAgICBQRUVLKG5leHRU
b2tlbkluTG9vcCk7Ci0gICAgICAgIG5leHRUb2tlbiA9IG5leHRUb2tlbkluTG9vcDsKLSAgICB9
Ci0KLSAgICBhdXRvIGVuZFRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLQotICAgIHJl
dHVybiBBU1Q6OlN3aXRjaFN0YXRlbWVudCh7ICpvcmlnaW4sIGVuZFRva2VuIH0sIFdURk1vdmUo
KnZhbHVlKSwgV1RGTW92ZShzd2l0Y2hDYXNlcykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VT
d2l0Y2hDYXNlKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hDYXNlLCBFcnJvcj4KLXsKLSAgICBh
dXRvIG9yaWdpbiA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6Q2FzZSwgVG9rZW46OlR5cGU6
OkRlZmF1bHQ+KCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChvcmlnaW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKG9yaWdpbi0+dHlwZSkgewotICAg
IGNhc2UgVG9rZW46OlR5cGU6OkNhc2U6IHsKLSAgICAgICAgUEFSU0UodmFsdWUsIENvbnN0YW50
RXhwcmVzc2lvbik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShjb2xvbiwgQ29sb24pOwotCi0gICAg
ICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAgICAgIHJldHVybiBBU1Q6OlN3aXRj
aENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2RlTG9jYXRpb24oKX0sIFdU
Rk1vdmUoKnZhbHVlKSwgV1RGTW92ZSgqYmxvY2spKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewot
ICAgICAgICBBU1NFUlQob3JpZ2luLT50eXBlID09IFRva2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAg
ICAgICAgQ09OU1VNRV9UWVBFKGNvbG9uLCBDb2xvbik7Ci0KLSAgICAgICAgUEFSU0UoYmxvY2ss
IEJsb2NrQm9keSk7Ci0KLSAgICAgICAgcmV0dXJuIEFTVDo6U3dpdGNoQ2FzZSh7IG9yaWdpbi0+
Y29kZUxvY2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigpfSwgc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKCpibG9jaykpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUZvckxv
b3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkZvckxvb3AsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQ
RShvcmlnaW4sIEZvcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBh
cmVudGhlc2lzKTsKLQotICAgIGF1dG8gcGFyc2VSZW1haW5kZXIgPSBbJl0oVW5pcXVlUmVmPEFT
VDo6U3RhdGVtZW50PiYmIGluaXRpYWxpemF0aW9uKSAtPiBFeHBlY3RlZDxBU1Q6OkZvckxvb3As
IEVycm9yPiB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0K
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gY29uZGl0aW9uKG51bGxw
dHIpOwotICAgICAgICBpZiAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OlNlbWljb2xvbikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKSkKLSAgICAg
ICAgICAgICAgICBjb25kaXRpb24gPSAoKmV4cHJlc3Npb24pLm1vdmVUb1VuaXF1ZVB0cigpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChl
eHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHNlY29uZFNlbWlj
b2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
U1Q6OkV4cHJlc3Npb24+IGluY3JlbWVudChudWxscHRyKTsKLSAgICAgICAgaWYgKCF0cnlUeXBl
KFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
ZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpKQotICAgICAgICAgICAgICAgIGluY3JlbWVu
dCA9ICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7
Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRo
ZXNpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBQQVJTRShib2R5LCBTdGF0ZW1lbnQpOwotICAg
ICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5jb2RlTG9jYXRpb24sICgqYm9keSkt
PmNvZGVMb2NhdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6Rm9yTG9vcChsb2NhdGlvbiwg
V1RGTW92ZShpbml0aWFsaXphdGlvbiksIFdURk1vdmUoY29uZGl0aW9uKSwgV1RGTW92ZShpbmNy
ZW1lbnQpLCBXVEZNb3ZlKCpib2R5KSk7Ci0gICAgfTsKLQotICAgIGF1dG8gdmFyaWFibGVEZWNs
YXJhdGlvbnMgPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50LCBFcnJvcj4+KFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlVmFy
aWFibGVEZWNsYXJhdGlvbnMoKTsKLSAgICB9KTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlv
bnMpIHsKLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiBkZWNsYXJhdGlvblN0YXRl
bWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4o
V1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVt
YWluZGVyKFdURk1vdmUoZGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBQQVJT
RShlZmZlY3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxFeHByZXNzaW9uKTsKLQotICAgIHJldHVy
biBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNzaW9uKSk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZVdoaWxlTG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6V2hpbGVMb29wLCBF
cnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBXaGlsZSk7Ci0gICAgQ09OU1VNRV9U
WVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShjb25kaXRp
b25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJp
Z2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0KLSAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5jb2RlTG9jYXRpb24sICAoKmJvZHkpLT5jb2RlTG9j
YXRpb24oKSk7Ci0gICAgcmV0dXJuIEFTVDo6V2hpbGVMb29wKGxvY2F0aW9uLCBXVEZNb3ZlKCpj
b25kaXRpb25hbCksIFdURk1vdmUoKmJvZHkpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRG9X
aGlsZUxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkRvV2hpbGVMb29wLCBFcnJvcj4KLXsKLSAgICBD
T05TVU1FX1RZUEUob3JpZ2luLCBEbyk7Ci0gICAgUEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLSAg
ICBDT05TVU1FX1RZUEUod2hpbGVLZXl3b3JkLCBXaGlsZSk7Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShjb25kaXRpb25hbCwg
RXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFy
ZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0KLSAg
ICByZXR1cm4gQVNUOjpEb1doaWxlTG9vcCh7ICpvcmlnaW4sICpzZW1pY29sb259LCBXVEZNb3Zl
KCpib2R5KSwgV1RGTW92ZSgqY29uZGl0aW9uYWwpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
VmFyaWFibGVEZWNsYXJhdGlvbihSZWY8QVNUOjpVbm5hbWVkVHlwZT4mJiB0eXBlKSAtPiBFeHBl
Y3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2lu
KTsKLQotICAgIGF1dG8gcXVhbGlmaWVycyA9IHBhcnNlUXVhbGlmaWVycygpOwotCi0gICAgQ09O
U1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRp
Yyk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBpbml0aWFsaXplciA9
IG51bGxwdHI7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24pKSB7Ci0g
ICAgICAgIFBBUlNFKGluaXRpYWxpemluZ0V4cHJlc3Npb24sIFBvc3NpYmxlVGVybmFyeUNvbmRp
dGlvbmFsKTsKLSAgICAgICAgaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXppbmdFeHByZXNzaW9uLnZh
bHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBt
X2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIHJldHVybiBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1l
U3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCB7IFdURk1vdmUodHlwZSkgfSwgbmFtZS0+
c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIFdURk1v
dmUoaW5pdGlhbGl6ZXIpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVmFyaWFibGVEZWNsYXJh
dGlvbnMoKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBF
cnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLQot
ICAgIGF1dG8gZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0
aW9uKHR5cGUtPmNvcHlSZWYoKSk7Ci0gICAgaWYgKCFmaXJzdFZhcmlhYmxlRGVjbGFyYXRpb24p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmaXJzdFZhcmlhYmxlRGVjbGFyYXRpb24u
ZXJyb3IoKSk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpmaXJzdFZhcmlhYmxlRGVjbGFyYXRpb24pKSk7Ci0KLSAg
ICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIGF1dG8gdmFy
aWFibGVEZWNsYXJhdGlvbiA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlLT5jb3B5UmVm
KCkpOwotICAgICAgICBpZiAoIXZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQodmFyaWFibGVEZWNsYXJhdGlvbi5lcnJvcigpKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RG
TW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbikpKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNl
dCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgcmV0dXJuIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHJlc3VsdCkpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1l
bnQ+LCBFcnJvcj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAgICBzd2l0Y2ggKHRva2VuLT50eXBl
KSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdEN1cmx5QnJhY2tldDogewotICAgICAgICBQ
QVJTRShibG9jaywgQmxvY2spOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6
QmxvY2s+KFdURk1vdmUoKmJsb2NrKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
SWY6IHsKLSAgICAgICAgUEFSU0UoaWZTdGF0ZW1lbnQsIElmU3RhdGVtZW50KTsKLSAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OklmU3RhdGVtZW50PihXVEZNb3ZlKCppZlN0YXRl
bWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlN3aXRjaDogewotICAgICAg
ICBQQVJTRShzd2l0Y2hTdGF0ZW1lbnQsIFN3aXRjaFN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWVSZWY8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KFdURk1vdmUoKnN3aXRjaFN0
YXRlbWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZvcjogewotICAgICAg
ICBQQVJTRShmb3JMb29wLCBGb3JMb29wKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkZvckxvb3A+KFdURk1vdmUoKmZvckxvb3ApKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpXaGlsZTogewotICAgICAgICBQQVJTRSh3aGlsZUxvb3AsIFdoaWxlTG9vcCk7
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpXaGlsZUxvb3A+KFdURk1vdmUo
KndoaWxlTG9vcCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkRvOiB7Ci0gICAg
ICAgIFBBUlNFKGRvV2hpbGVMb29wLCBEb1doaWxlTG9vcCk7Ci0gICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpEb1doaWxlTG9vcD4oV1RGTW92ZSgqZG9XaGlsZUxvb3ApKSB9Owot
ICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpCcmVhazogewotICAgICAgICBhdXRvIGJyZWFr
VG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAgICBDT05TVU1FX1RZUEUoc2Vt
aWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGJyZWFrT2JqZWN0ID0gQVNUOjpCcmVh
ayhXVEZNb3ZlKGJyZWFrVG9rZW4pKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxB
U1Q6OkJyZWFrPihXVEZNb3ZlKGJyZWFrT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6Q29udGludWU6IHsKLSAgICAgICAgYXV0byBjb250aW51ZVRva2VuID0gbV9sZXhl
ci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNv
bG9uKTsKLSAgICAgICAgYXV0byBjb250aW51ZU9iamVjdCA9IEFTVDo6Q29udGludWUoV1RGTW92
ZShjb250aW51ZVRva2VuKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpD
b250aW51ZT4oV1RGTW92ZShjb250aW51ZU9iamVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkZhbGx0aHJvdWdoOiB7Ci0gICAgICAgIGF1dG8gZmFsbHRocm91Z2hUb2tlbiA9
IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24s
IFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gZmFsbHRocm91Z2hPYmplY3QgPSBBU1Q6OkZhbGx0
aHJvdWdoKFdURk1vdmUoZmFsbHRocm91Z2hUb2tlbikpOwotICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6RmFsbHRocm91Z2g+KFdURk1vdmUoZmFsbHRocm91Z2hPYmplY3QpKSB9
OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSZXR1cm46IHsKLSAgICAgICAgYXV0byBy
ZXR1cm5Ub2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIGlmIChhdXRvIHNl
bWljb2xvbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlNlbWljb2xvbikpIHsKLSAgICAgICAgICAg
IGF1dG8gcmV0dXJuT2JqZWN0ID0gQVNUOjpSZXR1cm4oV1RGTW92ZShyZXR1cm5Ub2tlbiksIG51
bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlJldHVybj4o
V1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgICAgICB9Ci0gICAgICAgIFBBUlNFKGV4cHJl
c3Npb24sIEV4cHJlc3Npb24pOwotICAgICAgICBDT05TVU1FX1RZUEUoZmluYWxTZW1pY29sb24s
IFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gcmV0dXJuT2JqZWN0ID0gQVNUOjpSZXR1cm4oV1RG
TW92ZShyZXR1cm5Ub2tlbiksICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCkpOwotICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6UmV0dXJuPihXVEZNb3ZlKHJldHVybk9i
amVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkRldmljZToKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWRncm91
cDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWQ6IHsKLSAgICAgICAgUEFSU0UodmFyaWFi
bGVEZWNsYXJhdGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAgICAgICAgQ09OU1VNRV9U
WVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURl
Y2xhcmF0aW9ucykpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OklkZW50aWZpZXI6
IHsKLSAgICAgICAgUEVFS19GVVJUSEVSKG5leHRUb2tlbik7Ci0gICAgICAgIHN3aXRjaCAobmV4
dFRva2VuLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OklkZW50aWZpZXI6Ci0g
ICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbjoKLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6U3RhcjoKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UXVhbGlmaWVyOiB7Ci0g
ICAgICAgICAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNsYXJhdGlv
bnMpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAg
ICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgewotICAgICAgICBhdXRvIGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBiYWNrdHJhY2tpbmdTY29w
ZTxFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4+KFsmXSgpIC0+IEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiB7Ci0gICAgICAgICAgICBQ
QVJTRShyZXN1bHQsIEVmZmVjdGZ1bEV4cHJlc3Npb24pOwotICAgICAgICAgICAgQ09OU1VNRV9U
WVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIH0pOwotICAgICAgICBpZiAoZWZmZWN0ZnVsRXhwcmVzc2lvbikKLSAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBQQVJT
RSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNsYXJhdGlvbnMpOwotICAgIENPTlNV
TUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURl
Y2xhcmF0aW9ucykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUVmZmVjdGZ1bEV4cHJlc3Np
b24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4KLXsKLSAg
ICBQRUVLKG9yaWdpbik7Ci0gICAgaWYgKG9yaWdpbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6U2Vt
aWNvbG9uKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6QmxvY2s+KCpvcmln
aW4sIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+PigpKSB9OwotCi0gICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsKLSAgICBQQVJTRShlZmZl
Y3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxBc3NpZ25tZW50KTsKLSAgICBleHByZXNzaW9ucy5h
cHBlbmQoV1RGTW92ZSgqZWZmZWN0ZnVsRXhwcmVzc2lvbikpOwotCi0gICAgd2hpbGUgKHRyeVR5
cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBFZmZl
Y3RmdWxBc3NpZ25tZW50KTsKLSAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmV4
cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBpZiAoZXhwcmVzc2lvbnMuc2l6ZSgpID09IDEpCi0g
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50PihXVEZNb3ZlKGV4cHJlc3Npb25zWzBdKSkgfTsKLSAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIENvZGVMb2NhdGlvbiBsb2Nh
dGlvbihvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2Uo
KSk7Ci0gICAgYXV0byBjb21tYUV4cHJlc3Npb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q29tbWFF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpOwotICAgIHJldHVybiB7
IG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihXVEZNb3Zl
KGNvbW1hRXhwcmVzc2lvbikpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUVmZmVjdGZ1bEFz
c2lnbm1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgYm9vbCBpc0VmZmVjdGZ1bCA9IGZhbHNlOwot
ICAgIFBBUlNFKGV4cHJlc3Npb24sIFBvc3NpYmxlUHJlZml4LCAmaXNFZmZlY3RmdWwpOwotCi0g
ICAgaWYgKCFpc0VmZmVjdGZ1bCB8fCBwZWVrVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpF
cXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1c0VxdWFscywKLSAgICAgICAgVG9r
ZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpYb3JFcXVhbHMsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpPckVxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpMZWZ0U2hpZnRFcXVhbHMKLSAgICA+KCkpIHsKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlQXNz
aWdubWVudChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGV4cHJl
c3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUxpbWl0ZWRTdWZmaXhPcGVyYXRvcihVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBTdWZmaXhFeHByZXNzaW9uCi17
Ci0gICAgYXV0byB0eXBlID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6RnVs
bFN0b3AsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBcnJvdywKLSAgICAgICAgVG9rZW46OlR5cGU6
OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFN1
ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLQotICAgIHN3aXRjaCAo
dHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxTdG9wOiB7Ci0gICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJl
c3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICBy
ZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4
ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXJy
b3c6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6
OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1
cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBD
b2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRpZmll
cik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpE
b3RFeHByZXNzaW9uPihsb2NhdGlvbiwgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhw
cmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKSwgaWRlbnRpZmllci0+c3RyaW5n
VmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsK
LSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFj
a2V0KTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAg
ICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIGlmIChhdXRvIHJpZ2h0U3F1YXJl
QnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpKSB7
Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlv
bigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHBy
ZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZN
b3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikpLCB0cnVlKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2Up
OwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN1ZmZpeE9wZXJhdG9yKFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IFN1ZmZpeEV4cHJlc3Npb24K
LXsKLSAgICBhdXRvIHN1ZmZpeCA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6
OkZ1bGxTdG9wLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXJyb3csCi0gICAgICAgIFRva2VuOjpU
eXBlOjpMZWZ0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXNQbHVzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNNaW51cz4oKTsKLSAgICBpZiAoIXN1ZmZpeCkKLSAg
ICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsK
LQotICAgIHN3aXRjaCAoc3VmZml4LT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RnVs
bFN0b3A6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5
cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAg
ICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRp
Zmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNU
OjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIGlkZW50aWZpZXIt
PnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRydWUpOwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpBcnJvdzogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1l
VHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikK
LSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBm
YWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0
aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFr
ZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBtYWtlVW5pcXVlUmVmPEFT
VDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihXVEZNb3ZlKCpzdWZmaXgpLCBXVEZNb3ZlKHByZXZp
b3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRydWUp
OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldDogewotICAg
ICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgaWYgKCFl
eHByZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShw
cmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgaWYgKGF1dG8gcmlnaHRTcXVhcmVCcmFja2V0ID0g
Y29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCkpIHsKLSAgICAgICAg
ICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpyaWdo
dFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFr
ZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlv
dXMpLCBXVEZNb3ZlKCpleHByZXNzaW9uKSksIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgfQot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBs
b2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZmaXgpOwotICAgICAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihs
b2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBw
ZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9j
YXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVu
Y2UoKSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocmVzdWx0KSwg
dHJ1ZSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHN1ZmZpeC0+dHlw
ZSA9PSBUb2tlbjo6VHlwZTo6TWludXNNaW51cyk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2Nh
dGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZmaXgpOwotICAgICAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2Nh
dGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5k
KHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TmV3
VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRp
b24sICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2Uo
KSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocmVzdWx0KSwgdHJ1
ZSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbigpIC0+
IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJT
RShmaXJzdCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgIFZlY3RvcjxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSAoKmZpcnN0KS0+Y29kZUxvY2F0aW9uKCkuc3RhcnRPZmZzZXQoKTsKLSAgICBleHByZXNz
aW9ucy5hcHBlbmQoV1RGTW92ZSgqZmlyc3QpKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2Vu
OjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9zc2libGVUZXJu
YXJ5Q29uZGl0aW9uYWwpOwotICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZXhw
cmVzc2lvbikpOwotICAgIH0KLQotICAgIGlmIChleHByZXNzaW9ucy5zaXplKCkgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIFdURk1vdmUoZXhwcmVzc2lvbnNbMF0pOwotICAgIGF1dG8gZW5kT2Zmc2V0
ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRp
b24oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSk7Ci0gICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1v
dmUoZXhwcmVzc2lvbnMpKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVUZXJuYXJ5Q29u
ZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUpIC0+IEV4cGVj
dGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZ
UEUocXVlc3Rpb25NYXJrLCBRdWVzdGlvbk1hcmspOwotICAgIFBBUlNFKGJvZHlFeHByZXNzaW9u
LCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUoY29sb24sIENvbG9uKTsKLSAgICBQQVJT
RShlbHNlRXhwcmVzc2lvbiwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotCi0gICAgQ29k
ZUxvY2F0aW9uIHByZWRpY2F0ZUxvY2F0aW9uID0gcHJlZGljYXRlLT5jb2RlTG9jYXRpb24oKTsK
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhc3RBcmd1bWVudHM7Ci0g
ICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVkaWNhdGUpKTsKLSAgICBhdXRvIGJv
b2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihwcmVkaWNhdGVMb2Nh
dGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJndW1lbnRzKSk7Ci0gICAgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uKHByZWRpY2F0ZUxvY2F0aW9uLCAoKmVsc2VFeHByZXNzaW9uKS0+Y29kZUxv
Y2F0aW9uKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbj4obG9jYXRpb24sIFdURk1vdmUoYm9vbENhc3QpLCBXVEZNb3ZlKCpib2R5RXhwcmVzc2lv
biksIFdURk1vdmUoKmVsc2VFeHByZXNzaW9uKSkgfTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBs
ZXRlQXNzaWdubWVudChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIGxlZnQpIC0+IEV4cGVj
dGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGFzc2ln
bm1lbnRPcGVyYXRvciA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkVxdWFs
c1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6
VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaW1lc0VxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1v
ZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywKLSAgICAgICAgVG9rZW46
OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Okxl
ZnRTaGlmdEVxdWFscz4oKTsKLSAgICBpZiAoIWFzc2lnbm1lbnRPcGVyYXRvcikKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFzc2lnbm1lbnRPcGVyYXRvci5lcnJvcigpKTsKLQotICAg
IFBBUlNFKHJpZ2h0LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uID0geyBsZWZ0LT5jb2RlTG9jYXRpb24oKSwgKCpyaWdodCktPmNvZGVMb2Nh
dGlvbigpIH07Ci0KLSAgICBpZiAoYXNzaWdubWVudE9wZXJhdG9yLT50eXBlID09IFRva2VuOjpU
eXBlOjpFcXVhbHNTaWduKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpLCBXVEZNb3ZlKCpyaWdo
dCkpfTsKLQotICAgIFN0cmluZyBuYW1lOwotICAgIHN3aXRjaCAoYXNzaWdubWVudE9wZXJhdG9y
LT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c0VxdWFsczoKLSAgICAgICAgbmFt
ZSA9ICJvcGVyYXRvcisiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6TWludXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3ItIl9zdHI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzOgotICAgICAgICBuYW1l
ID0gIm9wZXJhdG9yKiJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IvIl9zdHI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1vZEVxdWFsczoKLSAgICAgICAgbmFtZSA9
ICJvcGVyYXRvciUiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
WG9yRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yXiJfc3RyOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpBbmRFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3Bl
cmF0b3ImIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9yRXF1
YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yfCJfc3RyOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzOgotICAgICAgICBuYW1lID0gIm9w
ZXJhdG9yPj4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1
YWxzKTsKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcjw8Il9zdHI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpKTsKLSAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgY2FsbEFyZ3VtZW50
cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwotICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1v
dmUobmFtZSksIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICByZXN1bHQtPnNldFJlc3Vs
dEV4cHJlc3Npb24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICByZXR1cm4g
eyBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVUZXJu
YXJ5Q29uZGl0aW9uYWwoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9zc2libGVQcmVmaXgpOwotCi0gICAg
aWYgKHBlZWtUeXBlczxUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c0VxdWFscywKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRl
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAotICAgICAgICBUb2tlbjo6
VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzPigpKSB7Ci0gICAg
ICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAg
IH0KLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlU2hpZnQoV1RGTW92ZSgqZXhw
cmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQ
b3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Np
b24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwot
Ci0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVBZGQoV1RGTW92ZSgqZXhwcmVzc2lv
bikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQb3NzaWJs
ZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlm
ICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24u
ZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5h
cnlPcGVyYXRpb24oV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAg
ICBQRUVLKG5leHRUb2tlbik7Ci0gICAgaWYgKG5leHRUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6UXVlc3Rpb25NYXJrKQotICAgICAgICByZXR1cm4gY29tcGxldGVUZXJuYXJ5Q29uZGl0aW9u
YWwoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIHJldHVybiBleHByZXNzaW9uOwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oKSAtPiBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UocGFy
c2VkUHJldmlvdXMsIFBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbik7Ci0gICAgcmV0
dXJuIGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKnBhcnNl
ZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJp
bmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUg
KGF1dG8gbG9naWNhbEJpbmFyeU9wZXJhdGlvbiA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6
VHlwZTo6T3JPciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZEFuZCwKLSAgICAgICAgVG9rZW46
OlR5cGU6Ok9yLAotICAgICAgICBUb2tlbjo6VHlwZTo6WG9yLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6QW5kCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZVJlbGF0
aW9uYWxCaW5hcnlPcGVyYXRpb24pOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJl
dmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAg
ICAgc3dpdGNoIChsb2dpY2FsQmluYXJ5T3BlcmF0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6Ok9yT3I6Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFTVDo6TG9naWNhbEV4cHJlc3Npb246
OlR5cGU6Ok9yLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkFuZEFuZDoKLSAgICAgICAgICAg
IHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihsb2NhdGlv
biwgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kLCBXVEZNb3ZlKHByZXZpb3VzKSwg
V1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9rZW46
OlR5cGU6Ok9yOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZN
b3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3Zl
KCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcnwiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1l
bnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpYb3I6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdU
Rk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1v
dmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yXiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1
bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6
IHsKLSAgICAgICAgICAgIEFTU0VSVChsb2dpY2FsQmluYXJ5T3BlcmF0aW9uLT50eXBlID09IFRv
a2VuOjpUeXBlOjpBbmQpOwotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQo
V1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RG
TW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ImIl9zdHIsIFdURk1vdmUoY2FsbEFy
Z3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiB7IFdURk1vdmUocHJldmlvdXMpIH07Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbigpIC0+IEV4cGVjdGVkPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShwYXJzZWRQcmV2
aW91cywgUG9zc2libGVTaGlmdCk7Ci0gICAgcmV0dXJuIGNvbXBsZXRlUG9zc2libGVSZWxhdGlv
bmFsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8gcmVsYXRpb25hbEJpbmFy
eU9wZXJhdGlvbiA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWdu
LAotICAgICAgICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduLAotICAgICAgICBUb2tlbjo6
VHlwZTo6TGVzc1RoYW5PckVxdWFsVG8sCi0gICAgICAgIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhh
bk9yRXF1YWxUbywKLSAgICAgICAgVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFyaXNvbiwKLSAgICAg
ICAgVG9rZW46OlR5cGU6Ok5vdEVxdWFsCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShu
ZXh0LCBQb3NzaWJsZVNoaWZ0KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZp
b3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAg
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBjYWxs
QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAgc3dpdGNoIChyZWxh
dGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
Okxlc3NUaGFuU2lnbjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8Il9zdHIsIFdURk1vdmUoY2Fs
bEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj4i
X3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhhbk9yRXF1YWxUbzogewotICAg
ICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxv
Y2F0aW9uLCAib3BlcmF0b3I8PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkdyZWF0
ZXJUaGFuT3JFcXVhbFRvOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj49Il9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29uOiB7Ci0gICAgICAgICAgICBwcmV2aW91
cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRv
cj09Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgQVNTRVJUKHJlbGF0aW9u
YWxCaW5hcnlPcGVyYXRpb24tPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok5vdEVxdWFsKTsKLSAgICAg
ICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2Nh
dGlvbiwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAg
ICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlU2hpZnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMs
IFBvc3NpYmxlQWRkKTsKLSAgICByZXR1cm4gY29tcGxldGVQb3NzaWJsZVNoaWZ0KFdURk1vdmUo
KnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlU2hp
ZnQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIHNoaWZ0
ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnQsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpSaWdodFNoaWZ0Ci0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0
LCBQb3NzaWJsZUFkZCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+
Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3Vt
ZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRjaCAoc2hpZnQtPnR5
cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0OiB7Ci0gICAgICAgICAg
ICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24s
ICJvcGVyYXRvcjw8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgQVNTRVJU
KHNoaWZ0LT50eXBlID09IFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0KTsKLSAgICAgICAgICAgIHBy
ZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9w
ZXJhdG9yPj4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFdURk1vdmUocHJl
dmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZUFkZCgpIC0+IEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShwYXJzZWRQ
cmV2aW91cywgUG9zc2libGVNdWx0aXBseSk7Ci0gICAgcmV0dXJuIGNvbXBsZXRlUG9zc2libGVB
ZGQoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRl
UG9zc2libGVBZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdoaWxlIChh
dXRvIGFkZCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1cywKLSAgICAgICAg
VG9rZW46OlR5cGU6Ok1pbnVzCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0LCBQ
b3NzaWJsZU11bHRpcGx5KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3Vz
LT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBjYWxsQXJn
dW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAgc3dpdGNoIChhZGQtPnR5
cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1czogewotICAgICAgICAgICAgcHJl
dmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3Bl
cmF0b3IrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgQVNTRVJUKGFkZC0+
dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXMpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItIl9zdHIs
IFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVNdWx0aXBseSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShwYXJzZWRQcmV2aW91cywg
UG9zc2libGVQcmVmaXgpOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoV1RG
TW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRlUG9zc2li
bGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1
dG8gbXVsdGlwbHkgPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpEaXZpZGUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNb2QKLSAgICAg
ICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlUHJlZml4KTsKLSAgICAgICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+
Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92
ZShwcmV2aW91cykpOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0
KSk7Ci0KLSAgICAgICAgc3dpdGNoIChtdWx0aXBseS0+dHlwZSkgewotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTdGFyOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcioiX3N0ciwgV1RGTW92ZShj
YWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFRva2VuOjpUeXBlOjpEaXZpZGU6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLyJfc3RyLCBX
VEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChtdWx0aXBseS0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6TW9kKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yJSJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmlzRWZmZWN0ZnVsKSAtPiBFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgaWYgKGF1dG8gcHJlZml4ID0g
dHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzUGx1cywKLSAgICAgICAgVG9rZW46
OlR5cGU6Ok1pbnVzTWludXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6TWludXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaWxkZSwKLSAgICAgICAg
VG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmQs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpBdCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIKLSAg
ICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVQcmVmaXgpOwotICAgICAgICBD
b2RlTG9jYXRpb24gbG9jYXRpb24oKnByZWZpeCwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwot
Ci0gICAgICAgIHN3aXRjaCAocHJlZml4LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5
cGU6OlBsdXNQbHVzOiB7Ci0gICAgICAgICAgICBpZiAoaXNFZmZlY3RmdWwpCi0gICAgICAgICAg
ICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZN
b3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1
bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdW
YWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlv
biwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAgICAgICAg
ICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3VmFyaWFibGVSZWZlcmVu
Y2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpNaW51c01pbnVzOiB7Ci0gICAgICAgICAgICBp
ZiAoaXNFZmZlY3RmdWwpCi0gICAgICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwot
ICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxB
U1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLS0iX3N0ciwgV1RGTW92ZShj
YWxsQXJndW1lbnRzKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9u
KHJlc3VsdC0+bmV3VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBX
VEZNb3ZlKHJlc3VsdCkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpQ
bHVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNh
bGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpu
ZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykp
IH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TWludXM6IHsKLSAgICAg
ICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsK
LSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAg
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRp
b24sICJvcGVyYXRvci0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkgfTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpUaWxkZTogewotICAgICAgICAgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9y
fiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6IHsKLSAgICAgICAgICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FzdEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNh
c3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIGF1dG8gYm9v
bENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAiYm9v
bCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUo
Ym9vbENhc3QpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkFuZDoK
LSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpNYWtlUG9pbnRlckV4cHJl
c3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6
RXNjYXBlcykgfTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUoKm5leHQpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVz
KSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUKHByZWZpeC0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6U3Rhcik7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpIH07
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFyc2VQb3NzaWJsZVN1ZmZpeChpc0Vm
ZmVjdGZ1bCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlU3VmZml4KGJvb2wgKmlz
RWZmZWN0ZnVsKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
Ci17Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgUEVFS19GVVJUSEVSKG5leHRUb2tlbik7Ci0KLSAg
ICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OklkZW50aWZpZXIgJiYgbmV4dFRva2Vu
LT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpIHsKLSAgICAgICAgUEFSU0Uo
ZXhwcmVzc2lvbiwgQ2FsbEV4cHJlc3Npb24pOwotICAgICAgICBpZiAoaXNFZmZlY3RmdWwpCi0g
ICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgUEVFSyhzdWZmaXhUb2tlbik7Ci0gICAgICAgICAgICBpZiAoc3VmZml4VG9r
ZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9wICYmIHN1ZmZpeFRva2VuLT50eXBlICE9
IFRva2VuOjpUeXBlOjpBcnJvdyAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6
TGVmdFNxdWFyZUJyYWNrZXQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHBhcnNlTGltaXRlZFN1ZmZpeE9wZXJhdG9yKFdURk1vdmUoKmV4cHJlc3Np
b24pKTsKLSAgICAgICAgICAgIGV4cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3VsdC5yZXN1bHQpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBleHByZXNzaW9uOwotICAgIH0KLQotICAgIGlmICh0
b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lzICYmIGlzRWZmZWN0ZnVs
KQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotCi0gICAgUEFSU0UoZXhwcmVzc2lvbiwg
VGVybSk7Ci0gICAgYm9vbCBpc0xhc3RTdWZmaXhUb2tlbkVmZmVjdGZ1bCA9IGZhbHNlOwotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFBFRUsoc3VmZml4VG9rZW4pOwotICAgICAgICBpZiAo
c3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9wCi0gICAgICAgICAgICAm
JiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6QXJyb3cKLSAgICAgICAgICAgICYm
IHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldAotICAg
ICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlBsdXNQbHVzCi0g
ICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6TWludXNNaW51
cykgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaXNMYXN0U3VmZml4
VG9rZW5FZmZlY3RmdWwgPSBzdWZmaXhUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6UGx1c1Bs
dXMgfHwgc3VmZml4VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXM7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VTdWZmaXhPcGVyYXRvcihXVEZNb3ZlKCpleHByZXNzaW9u
KSk7Ci0gICAgICAgIGV4cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3VsdC5yZXN1bHQpOwotICAgIH0K
LSAgICBpZiAoaXNMYXN0U3VmZml4VG9rZW5FZmZlY3RmdWwgJiYgaXNFZmZlY3RmdWwpCi0gICAg
ICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgcmV0dXJuIGV4cHJlc3Npb247Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZUNhbGxFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlm
aWVyKTsKLSAgICBhdXRvIGNhbGxOYW1lID0gbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0
cmluZygpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhl
c2lzKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gYXJndW1lbnRz
OwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKSkKLSAgICAg
ICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihXVEZNb3ZlKCpu
YW1lKSwgV1RGTW92ZShjYWxsTmFtZSksIFdURk1vdmUoYXJndW1lbnRzKSkgfTsKLQotICAgIFBB
UlNFKGZpcnN0QXJndW1lbnQsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICBhcmd1
bWVudHMuYXBwZW5kKFdURk1vdmUoKmZpcnN0QXJndW1lbnQpKTsKLSAgICB3aGlsZSAodHJ5VHlw
ZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKGFyZ3VtZW50LCBQb3NzaWJs
ZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgq
YXJndW1lbnQpKTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywg
UmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpuYW1lLCAqcmln
aHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4
cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGNhbGxOYW1lKSwgV1RGTW92ZShhcmd1bWVudHMp
KSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUZXJtKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBl
czwKLSAgICAgICAgVG9rZW46OlR5cGU6OkludExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpVaW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCwKLSAgICAg
ICAgVG9rZW46OlR5cGU6Ok51bGwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUcnVlLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6RmFsc2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lzPigpOwotICAgIGlmICghdHlwZSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7Ci0KLSAgICBzd2l0
Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+c3RyaW5nVmlldyhtX2xl
eGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpJbnRlZ2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6VWludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHVpbnRMaXRlcmFs
VG9VaW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oKnR5
cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFs
OiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBmbG9hdExpdGVyYWxUb0Zsb2F0KHR5cGUtPnN0cmlu
Z1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6RmxvYXRMaXRlcmFsPigqdHlwZSwgKnZhbHVlKSB9OwotICAgIH0KLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpOdWxsOgotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIidudWxsJyBpcyBhIHJlc2VydmVkIGtleXdvcmQuIiwgdHlwZS0+Y29kZUxvY2F0aW9uKSk7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZVJlZjxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdHlwZSwgdHJ1ZSkgfTsKLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpGYWxzZToKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJvb2xl
YW5MaXRlcmFsPigqdHlwZSwgZmFsc2UpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6SWRlbnRp
ZmllcjogewotICAgICAgICBhdXRvIG5hbWUgPSB0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oKnR5cGUsIFdURk1vdmUobmFtZSkpIH07Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsK
LSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRQYXJlbnRoZXNp
cyk7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIEV4cHJlc3Npb24pOwotICAgICAgICBDT05T
VU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICAgICAg
cmV0dXJuIHsgV1RGTW92ZSgqZXhwcmVzc2lvbikgfTsKLSAgICB9Ci0gICAgfQotfQotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRl
ZWEzMjZkYjQ3NDc3ZTZlOWUzMzY5NjMzN2I2ZTY1ZDMxNzc2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNpbmdNb2RlLmgiCi0jaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotY2xh
c3MgUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gcGFyc2UoUHJv
Z3JhbSYsIFN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlLCBBU1Q6Ok5hbWVTcGFjZSk7Ci0KLXByaXZh
dGU6Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGlzCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM1NwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgYmFja3RyYWNraW5nU2NvcGUoc3RkOjpmdW5jdGlvbjxUKCk+IGNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgYXV0byBzdGF0ZSA9IG1fbGV4ZXIuc3RhdGUoKTsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBjYWxsYmFjaygpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgbV9sZXhlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRl
KSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgZW51bSBjbGFzcyBUcnlU
b1BlZWsgewotICAgICAgICBZZXMsCi0gICAgICAgIE5vCi0gICAgfTsKLSAgICBVbmV4cGVjdGVk
PEVycm9yPiBmYWlsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgVHJ5VG9QZWVrID0gVHJ5VG9QZWVr
OjpZZXMpOwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gcGVlaygpOwotICAgIEV4cGVjdGVk
PFRva2VuLCBFcnJvcj4gcGVla0Z1cnRoZXIoKTsKLSAgICBib29sIHBlZWtUeXBlKFRva2VuOjpU
eXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci0gICAgYm9vbCBwZWVr
VHlwZXMoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0cnlUeXBlKFRva2VuOjpUeXBlKTsK
LSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci0gICAgc3RkOjpvcHRpb25hbDxU
b2tlbj4gdHJ5VHlwZXMoKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IGNvbnN1bWVUeXBl
KFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci0gICAg
RXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZXMoKTsKLQotICAgIEV4cGVjdGVkPFZh
cmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPiBjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCk7Ci0g
ICAgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExp
dGVyYWwoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiwgRXJyb3I+IHBh
cnNlQ29uc3RhbnRFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpUeXBlQXJndW1lbnQs
IEVycm9yPiBwYXJzZVR5cGVBcmd1bWVudCgpOwotICAgIEV4cGVjdGVkPEFTVDo6VHlwZUFyZ3Vt
ZW50cywgRXJyb3I+IHBhcnNlVHlwZUFyZ3VtZW50cygpOwotICAgIHN0cnVjdCBUeXBlU3VmZml4
QWJicmV2aWF0ZWQgewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb247Ci0gICAgICAgIFRv
a2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBudW1FbGVtZW50czsK
LSAgICB9OwotICAgIEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgRXJyb3I+IHBhcnNl
VHlwZVN1ZmZpeEFiYnJldmlhdGVkKCk7Ci0gICAgc3RydWN0IFR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbjsKLSAgICAgICAgVG9rZW4gdG9r
ZW47Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+IGFkZHJlc3NTcGFj
ZTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7Ci0gICAgfTsK
LSAgICBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIEVycm9yPiBwYXJzZVR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZCgpOwotICAgIEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiwgRXJyb3I+IHBhcnNlQWRkcmVzc1NwYWNlVHlwZSgpOwotICAgIEV4cGVjdGVkPFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlTm9uQWRkcmVzc1NwYWNlVHlwZSgpOwotICAgIEV4
cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlVHlwZSgpOwotICAgIEV4
cGVjdGVkPEFTVDo6VHlwZURlZmluaXRpb24sIEVycm9yPiBwYXJzZVR5cGVEZWZpbml0aW9uKCk7
Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCdWlsdEluU2VtYW50aWMsIEVycm9yPiBwYXJzZUJ1aWx0SW5T
ZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6UmVzb3VyY2VTZW1hbnRpYywgRXJyb3I+IHBh
cnNlUmVzb3VyY2VTZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljLCBFcnJvcj4gcGFyc2VTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYywgRXJyb3I+IHBhcnNl
U3RhZ2VJbk91dFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6
U2VtYW50aWM+LCBFcnJvcj4gcGFyc2VTZW1hbnRpYygpOwotICAgIEFTVDo6UXVhbGlmaWVycyBw
YXJzZVF1YWxpZmllcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZUVsZW1lbnQsIEVy
cm9yPiBwYXJzZVN0cnVjdHVyZUVsZW1lbnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24sIEVycm9yPiBwYXJzZVN0cnVjdHVyZURlZmluaXRpb24oKTsKLSAgICBFeHBl
Y3RlZDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlRW51bWVyYXRpb25E
ZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciwgRXJyb3I+
IHBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZhdWx0VmFsdWUpOwotICAgIEV4cGVj
dGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VOYXRpdmVUeXBlRGVj
bGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZSwgRXJyb3I+IHBhcnNlTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCk7Ci0gICAgRXhwZWN0
ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+IHBhcnNlQXR0cmlidXRlQmxvY2soKTsKLSAg
ICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVBhcmFtZXRl
cigpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMsIEVycm9yPiBwYXJz
ZVBhcmFtZXRlcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVy
cm9yPiBwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VWZXJ0ZXhPckZyYWdtZW50RnVuY3Rp
b25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwg
RXJyb3I+IHBhcnNlUmVndWxhckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNs
YXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKLSAgICBFeHBlY3Rl
ZDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZU5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oKTsKLQotICAgIEV4cGVjdGVkPEFTVDo6QmxvY2ssIEVycm9yPiBwYXJz
ZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+IHBhcnNlQmxvY2tCb2R5
KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpJZlN0YXRlbWVudCwgRXJyb3I+IHBhcnNlSWZTdGF0ZW1l
bnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRlbWVudCwgRXJyb3I+IHBhcnNlU3dp
dGNoU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hDYXNlLCBFcnJvcj4gcGFy
c2VTd2l0Y2hDYXNlKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4gcGFyc2VG
b3JMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpXaGlsZUxvb3AsIEVycm9yPiBwYXJzZVdoaWxl
TG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6RG9XaGlsZUxvb3AsIEVycm9yPiBwYXJzZURvV2hp
bGVMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uLCBFcnJvcj4g
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYmKTsKLSAgICBF
eHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBFcnJvcj4gcGFyc2VW
YXJpYWJsZURlY2xhcmF0aW9ucygpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRl
bWVudD4sIEVycm9yPiBwYXJzZVN0YXRlbWVudCgpOwotCi0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+IHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbigpOwotICAg
IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VFZmZlY3Rm
dWxBc3NpZ25tZW50KCk7Ci0gICAgc3RydWN0IFN1ZmZpeEV4cHJlc3Npb24gewotICAgICAgICBT
dWZmaXhFeHByZXNzaW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcmVzdWx0LCBib29s
IHN1Y2Nlc3MpCi0gICAgICAgICAgICA6IHJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpCi0gICAgICAg
ICAgICAsIHN1Y2Nlc3Moc3VjY2VzcykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAg
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4gcmVzdWx0OwotICAgICAgICBib29sIHN1Y2Nlc3M7
Ci0gICAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBzdWNjZXNzOyB9Ci0gICAg
fTsKLSAgICBTdWZmaXhFeHByZXNzaW9uIHBhcnNlTGltaXRlZFN1ZmZpeE9wZXJhdG9yKFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYpOwotICAgIFN1ZmZpeEV4cHJlc3Npb24gcGFyc2VTdWZm
aXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmKTsKLQotICAgIEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VFeHByZXNzaW9uKCk7Ci0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3Np
YmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVRlcm5hcnlDb25kaXRpb25hbChVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZUFzc2lnbm1lbnQoVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4mJiBsZWZ0KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+IHBhcnNlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKCk7Ci0gICAgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxl
TG9naWNhbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZp
b3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBh
cnNlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25h
bEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsK
LSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9z
c2libGVTaGlmdCgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBF
cnJvcj4gY29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYg
cHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4gcGFyc2VQb3NzaWJsZUFkZCgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUFkZChVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+IHBhcnNlUG9zc2libGVNdWx0aXBseSgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVByZWZpeChib29sICppc0Vm
ZmVjdGZ1bCA9IG51bGxwdHIpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVN1ZmZpeChib29sICppc0VmZmVjdGZ1bCA9IG51bGxw
dHIpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFy
c2VDYWxsRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gcGFyc2VUZXJtKCk7Ci0KLSAgICBMZXhlciBtX2xleGVyOwotICAgIFBhcnNp
bmdNb2RlIG1fbW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRmMDczNzZjZjhkNDBlYzdiYThjMGNh
MzcwNzIzNDBkNDYyMDFkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNpbmdN
b2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotZW51bSBjbGFzcyBQYXJzaW5nTW9kZSA6IHVpbnQ4
X3QgewotICAgIFN0YW5kYXJkTGlicmFyeSwKLSAgICBVc2VyCi19OwotCi19IC8vIG5hbWVzcGFj
ZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTI3MDU5ODgwZDUzZGVjYThiNjQyNGZlMjYwNTVmZWEwY2VlZmIyYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1lbnVtIGNsYXNzIFZlcnRleEZv
cm1hdCA6IHVpbnQ4X3QgewotICAgIEZsb2F0UjMyRzMyQjMyQTMyLAotICAgIEZsb2F0UjMyRzMy
QjMyLAotICAgIEZsb2F0UjMyRzMyLAotICAgIEZsb2F0UjMyCi19OwotCi1zdHJ1Y3QgVmVydGV4
QXR0cmlidXRlIHsKLSAgICBWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0OwotICAgIHVuc2lnbmVk
IHNoYWRlckxvY2F0aW9uOwotICAgIHVuc2lnbmVkIG1ldGFsTG9jYXRpb247Ci19OwotCi11c2lu
ZyBWZXJ0ZXhBdHRyaWJ1dGVzID0gVmVjdG9yPFZlcnRleEF0dHJpYnV0ZT47Ci0KLS8vIEZJWE1F
OiBBZGQgYmFjayA8IDMyIGJpdCB0ZXh0dXJlIHZhbHVlcyBhbmQgZmlndXJlIG91dCBob3cgdG8g
Ym94IHRoZW0gaW4gd2lkZXIgdHlwZXMgd2hlbiB3ZSBsb2FkIGZyb20gdGhlbS4KLS8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzMTUKLQotZW51bSBjbGFzcyBU
ZXh0dXJlRm9ybWF0IHsKLSAgICBSOFVub3JtLAotICAgIFI4VW5vcm1TcmdiLAotICAgIFI4U25v
cm0sCi0gICAgUjE2VW5vcm0sCi0gICAgUjE2U25vcm0sCi0gICAgUjE2RmxvYXQsCi0gICAgUkc4
VW5vcm0sCi0gICAgUkc4VW5vcm1TcmdiLAotICAgIFJHOFNub3JtLAotICAgIEI1RzZSNVVub3Jt
LAotICAgIFIzMlVpbnQsCi0gICAgUjMyU2ludCwKLSAgICBSMzJGbG9hdCwKLSAgICBSRzE2VW5v
cm0sCi0gICAgUkcxNlNub3JtLAotICAgIFJHMTZGbG9hdCwKLSAgICBSR0JBOFVub3JtLAotICAg
IFJHQkE4VW5vcm1TcmdiLAotICAgIFJHQkE4U25vcm0sCi0gICAgQkdSQThVbm9ybSwKLSAgICBC
R1JBOFVub3JtU3JnYiwKLSAgICBSR0IxMEEyVW5vcm0sCi0gICAgUkcxMUIxMEZsb2F0LAotICAg
IFJHMzJVaW50LAotICAgIFJHMzJTaW50LAotICAgIFJHMzJGbG9hdCwKLSAgICBSR0JBMTZVbm9y
bSwKLSAgICBSR0JBMTZTbm9ybSwKLSAgICBSR0JBMTZGbG9hdCwKLSAgICBSR0JBMzJVaW50LAot
ICAgIFJHQkEzMlNpbnQsCi0gICAgUkdCQTMyRmxvYXQKLX07Ci0KLXN0cnVjdCBBdHRhY2htZW50
RGVzY3JpcHRvciB7Ci0gICAgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0OwotICAgIHVuc2ln
bmVkIG5hbWU7Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IgewotICAg
IFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4gYXR0YWNobWVudERlc2NyaXB0b3JzOwotICAg
IHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yOwotfTsKLQotZW51bSBjbGFzcyBTaGFkZXJTdGFnZSA6IHVpbnQ4X3Qgewot
ICAgIE5vbmUgPSAwLAotICAgIFZlcnRleCA9IDEgPDwgMCwKLSAgICBGcmFnbWVudCA9IDEgPDwg
MSwKLSAgICBDb21wdXRlID0gMSA8PCAyCi19OwotCi1zdHJ1Y3QgVW5pZm9ybUJ1ZmZlckJpbmRp
bmcgewotICAgIHVuc2lnbmVkIGxlbmd0aE5hbWU7Ci19OwotCi1zdHJ1Y3QgU2FtcGxlckJpbmRp
bmcgewotfTsKLQotc3RydWN0IFRleHR1cmVCaW5kaW5nIHsKLX07Ci0KLXN0cnVjdCBTdG9yYWdl
QnVmZmVyQmluZGluZyB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoTmFtZTsKLX07Ci0KLS8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTY4IEFkZCB0aGUg
ZHluYW1pYyB0eXBlcwotCi1zdHJ1Y3QgQmluZGluZyB7Ci0gICAgdXNpbmcgQmluZGluZ0RldGFp
bHMgPSBWYXJpYW50PFVuaWZvcm1CdWZmZXJCaW5kaW5nLCBTYW1wbGVyQmluZGluZywgVGV4dHVy
ZUJpbmRpbmcsIFN0b3JhZ2VCdWZmZXJCaW5kaW5nPjsKLSAgICBPcHRpb25TZXQ8U2hhZGVyU3Rh
Z2U+IHZpc2liaWxpdHk7Ci0gICAgQmluZGluZ0RldGFpbHMgYmluZGluZzsKLSAgICB1bnNpZ25l
ZCBpbnRlcm5hbE5hbWU7Ci0gICAgdW5zaWduZWQgZXh0ZXJuYWxOYW1lOwotfTsKLQotc3RydWN0
IEJpbmRHcm91cCB7Ci0gICAgVmVjdG9yPEJpbmRpbmc+IGJpbmRpbmdzOwotICAgIHVuc2lnbmVk
IG5hbWU7Ci19OwotCi11c2luZyBMYXlvdXQgPSBWZWN0b3I8QmluZEdyb3VwPjsKLQotc3RydWN0
IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7Ci0gICAgVmVydGV4QXR0cmlidXRlcyB2ZXJ0ZXhB
dHRyaWJ1dGVzOwotICAgIEF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yIGF0dGFjaG1lbnRzU3Rh
dGVEZXNjcmlwdG9yOwotICAgIExheW91dCBsYXlvdXQ7Ci0gICAgU3RyaW5nIHZlcnRleEVudHJ5
UG9pbnROYW1lOwotICAgIFN0cmluZyBmcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLQotc3Ry
dWN0IENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgewotICAgIExheW91dCBsYXlvdXQ7Ci0gICAg
U3RyaW5nIGVudHJ5UG9pbnROYW1lOwotfTsKLQotdXNpbmcgUGlwZWxpbmVEZXNjcmlwdG9yID0g
VmFyaWFudDxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I+OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2QyYzVjYWM0M2M5NTlhM2U3MThkMGEwYjQ4ZWJjMWM0ZTRiODM1OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEFTVER1bXBlci5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tEdXBsaWNhdGVG
dW5jdGlvbnMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNr
ZXIuaCIKLSNpbmNsdWRlICJXSExTTENvbXB1dGVEaW1lbnNpb25zLmgiCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMSGlnaFpvbWJpZUZpbmRl
ci5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hM
U0xNZXRhbENvZGVHZW5lcmF0b3IuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVSZXNvbHZlci5oIgot
I2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKLSNp
bmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCIKLSNpbmNsdWRl
ICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCIKLSNpbmNs
dWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2l2ZVR5
cGVDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpY01hdGNoZXIuaCIKLSNpbmNsdWRl
ICJXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplQ29uc3RydWN0
b3JzLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaCIK
LSNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBTaGFkZXJNb2R1bGUgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgU2hhZGVyTW9kdWxlKGNvbnN0IFN0cmlu
ZyYgd2hsc2xTb3VyY2UpCi0gICAgICAgIDogd2hsc2xTb3VyY2Uod2hsc2xTb3VyY2UpCi0gICAg
ewotICAgIH0KLQotICAgIFN0cmluZyB3aGxzbFNvdXJjZTsKLX07Ci0KLX0KLQotfQotCi1uYW1l
c3BhY2Ugc3RkIHsKLQotdm9pZCBkZWZhdWx0X2RlbGV0ZTxXZWJDb3JlOjpXSExTTDo6U2hhZGVy
TW9kdWxlPjo6b3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6U2hhZGVyTW9kdWxlKiBzaGFkZXJN
b2R1bGUpIGNvbnN0Ci17Ci0gICAgZGVsZXRlIHNoYWRlck1vZHVsZTsKLX0KLQotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsKLXN0YXRpYyBjb25zdGV4cHIgYm9v
bCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVt
cEFTVEF0RW5kID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgYWx3YXlzRHVtcFBhc3NG
YWlsdXJlcyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBQYXNzRmFpbHVyZSA9
IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8fCBkdW1wQVNUQWZ0ZXJQYXJzaW5nIHx8IGR1bXBBU1RB
dEVuZCB8fCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1
bXBQaGFzZVRpbWVzID0gZmFsc2U7Ci0KLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXJzZUZ1bGxT
dGFuZGFyZExpYnJhcnkgPSBmYWxzZTsKLQotc3RhdGljIGJvb2wgZHVtcEFTVElmTmVlZGVkKGJv
b2wgc2hvdWxkRHVtcCwgUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgY2hhciogbWVzc2FnZSkKLXsK
LSAgICBpZiAoc2hvdWxkRHVtcCkgewotICAgICAgICBkYXRhTG9nTG4obWVzc2FnZSk7Ci0gICAg
ICAgIGR1bXBBU1QocHJvZ3JhbSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZ0lmTmVl
ZGVkKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgcmV0dXJuIGR1bXBBU1RJZk5lZWRlZChkdW1w
QVNUQWZ0ZXJQYXJzaW5nLCBwcm9ncmFtLCAiQVNUIGFmdGVyIHBhcnNpbmciKTsKLX0KLQotc3Rh
dGljIGJvb2wgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKFByb2dyYW0mIHByb2dyYW0s
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgcmV0dXJuIGR1bXBBU1RJZk5lZWRlZChkdW1w
QVNUQmVmb3JlRWFjaFBhc3MsIHByb2dyYW0sIG1lc3NhZ2UpOwotfQotCi1zdGF0aWMgYm9vbCBk
dW1wQVNUQXRFbmRJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIHJldHVybiBkdW1w
QVNUSWZOZWVkZWQoZHVtcEFTVEF0RW5kLCBwcm9ncmFtLCAiQVNUIGF0IGVuZCIpOwotfQotCi11
c2luZyBQaGFzZVRpbWVzID0gVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFNlY29uZHM+PjsKLQot
c3RhdGljIHZvaWQgbG9nUGhhc2VUaW1lcyhQaGFzZVRpbWVzJiBwaGFzZVRpbWVzKQotewotICAg
IGlmICghZHVtcFBoYXNlVGltZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYg
ZW50cnkgOiBwaGFzZVRpbWVzKQotICAgICAgICBkYXRhTG9nTG4oZW50cnkuZmlyc3QsICI6ICIs
IGVudHJ5LnNlY29uZC5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotfQotCi1jbGFzcyBQaGFzZVRp
bWVyIHsKLXB1YmxpYzoKLSAgICBQaGFzZVRpbWVyKGNvbnN0IGNoYXIqIHBoYXNlTmFtZSwgUGhh
c2VUaW1lcyYgcGhhc2VUaW1lcykKLSAgICAgICAgOiBtX3BoYXNlVGltZXMocGhhc2VUaW1lcykK
LSAgICB7Ci0gICAgICAgIGlmIChkdW1wUGhhc2VUaW1lcykgewotICAgICAgICAgICAgbV9waGFz
ZU5hbWUgPSBwaGFzZU5hbWU7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gTW9ub3RvbmljVGltZTo6
bm93KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+UGhhc2VUaW1lcigpCi0gICAgewotICAg
ICAgICBpZiAoZHVtcFBoYXNlVGltZXMpIHsKLSAgICAgICAgICAgIGF1dG8gdG90YWxUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0OwotICAgICAgICAgICAgbV9waGFzZVRpbWVz
LmFwcGVuZCh7IG1fcGhhc2VOYW1lLCB0b3RhbFRpbWUgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fcGhhc2VOYW1lOwotICAgIFBoYXNlVGltZXMmIG1fcGhh
c2VUaW1lczsKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnQ7Ci19OwotCi1VbmlxdWVSZWY8U2hh
ZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZSkK
LXsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDg3MiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIGFzIG11Y2ggd29yayBmcm9tIHByZXBh
cmUoKSBpbnRvIGhlcmUgYXMgcG9zc2libGUuCi0gICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8U2hh
ZGVyTW9kdWxlPih3aGxzbFNvdXJjZSk7Ci19Ci0KLSNkZWZpbmUgQ0hFQ0tfUEFTUyhwYXNzLCAu
Li4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVk
KHByb2dyYW0sICJBU1QgYmVmb3JlICIgIyBwYXNzKTsgXAotICAgICAgICBQaGFzZVRpbWVyIHBo
YXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gcGFz
cyhfX1ZBX0FSR1NfXyk7IFwKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsgXAotICAgICAgICAgICAg
aWYgKGR1bXBQYXNzRmFpbHVyZSkgXAotICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiZmFpbGVk
IHBhc3M6ICIgIyBwYXNzLCBMZXhlcjo6ZXJyb3JTdHJpbmcocmVzdWx0LmVycm9yKCksIHdobHNs
U291cmNlMSwgd2hsc2xTb3VyY2UyKSk7IFwKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hs
c2xTb3VyY2UyKSk7IFwKLSAgICAgICAgfSBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBS
VU5fUEFTUyhwYXNzLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgUGhhc2VUaW1lciBwaGFz
ZVRpbWVyKCNwYXNzLCBwaGFzZVRpbWVzKTsgXAotICAgICAgICBkdW1wQVNUQmV0d2VlbkVhY2hQ
YXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBiZWZvcmUgIiAjIHBhc3MpOyBcCi0gICAgICAgIHBh
c3MoX19WQV9BUkdTX18pOyBcCi0gICAgfSB3aGlsZSAoMCkKLQotc3RhdGljIEV4cGVjdGVkPFBy
b2dyYW0sIFN0cmluZz4gcHJlcGFyZVNoYXJlZChQaGFzZVRpbWVzJiBwaGFzZVRpbWVzLCBjb25z
dCBTdHJpbmcmIHdobHNsU291cmNlMSwgY29uc3QgU3RyaW5nKiB3aGxzbFNvdXJjZTIgPSBudWxs
cHRyKQotewotICAgIFByb2dyYW0gcHJvZ3JhbTsKLSAgICBQYXJzZXIgcGFyc2VyOwotCi0gICAg
ewotICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6
Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0KLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVy
KCJwYXJzZSIsIHBoYXNlVGltZXMpOwotICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2Vy
LnBhcnNlKHByb2dyYW0sIHdobHNsU291cmNlMSwgUGFyc2luZ01vZGU6OlVzZXIsIEFTVDo6TmFt
ZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkgewotICAgICAg
ICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImZh
aWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6OmVycm9yU3RyaW5nKHBhcnNlUmVz
dWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHBhcnNlUmVzdWx0LmVycm9y
KCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KHdobHNsU291cmNlMikgewotICAgICAgICAgICAgcHJvZ3JhbS5uYW1lQ29udGV4dCgpLnNldEN1
cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTIpOwotICAgICAgICAgICAg
YXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCAqd2hsc2xTb3VyY2UyLCBQ
YXJzaW5nTW9kZTo6VXNlciwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTIpOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZVJlc3VsdCkgewotICAgICAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1
cmUpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiZmFpbGVkIHRvIHBhcnNlIHRoZSBw
cm9ncmFtOiAiLCBMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQuZXJyb3IoKSwgd2hsc2xT
b3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNl
MSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcHJv
Z3JhbS5uYW1lQ29udGV4dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBQaGFzZVRpbWVyIHBoYXNl
VGltZXIoImluY2x1ZGVTdGFuZGFyZExpYnJhcnkiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgaW5j
bHVkZVN0YW5kYXJkTGlicmFyeShwcm9ncmFtLCBwYXJzZXIsIHBhcnNlRnVsbFN0YW5kYXJkTGli
cmFyeSk7Ci0gICAgfQotCi0gICAgaWYgKCFkdW1wQVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQo
cHJvZ3JhbSwgIkFTVCBhZnRlciBwYXJzaW5nIikpCi0gICAgICAgIGR1bXBBU1RBZnRlclBhcnNp
bmdJZk5lZWRlZChwcm9ncmFtKTsKLQotICAgIE5hbWVSZXNvbHZlciBuYW1lUmVzb2x2ZXIocHJv
Z3JhbS5uYW1lQ29udGV4dCgpKTsKLSAgICBDSEVDS19QQVNTKHJlc29sdmVOYW1lc0luVHlwZXMs
IHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1JlY3Vyc2l2ZVR5
cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0
aW9ucywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhyZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlv
bnMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hFQ0tfUEFTUyhzeW50aGVzaXplQ29u
c3RydWN0b3JzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLCBwcm9ncmFtKTsKLQotICAgIENIRUNLX1BBU1MoY2hlY2ssIHByb2dyYW0pOwotICAgIFJV
Tl9QQVNTKHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMsIHByb2dyYW0p
OwotCi0gICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlwZXMsIHByb2dyYW0pOwotICAgIENIRUNL
X1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhj
aGVja1JlZmVyZW5jZVR5cGVzLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhyZXNvbHZlUHJvcGVy
dGllcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MoZmluZEhpZ2hab21iaWVzLCBwcm9ncmFtKTsK
LSAgICBDSEVDS19QQVNTKGNoZWNrU3RhdGVtZW50QmVoYXZpb3IsIHByb2dyYW0pOwotICAgIENI
RUNLX1BBU1MoY2hlY2tSZWN1cnNpb24sIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tG
dW5jdGlvblN0YWdlcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MocHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcywgcHJvZ3JhbSk7Ci0KLSAgICBkdW1wQVNUQXRFbmRJZk5lZWRlZChwcm9ncmFtKTsK
LQotICAgIHJldHVybiBwcm9ncmFtOwotfQotCi1FeHBlY3RlZDxSZW5kZXJQcmVwYXJlUmVzdWx0
LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVyTW9kdWxlJiB2ZXJ0ZXhTaGFkZXJNb2R1bGUs
IGNvbnN0IFNoYWRlck1vZHVsZSogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQotewotICAgIFBoYXNlVGltZXMg
cGhhc2VUaW1lczsKLSAgICBNZXRhbDo6UmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlZENvZGU7Ci0K
LSAgICB7Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicHJlcGFyZSB0b3RhbCIsIHBo
YXNlVGltZXMpOwotICAgICAgICBjb25zdCBTdHJpbmcqIHNlY29uZFNoYWRlciA9IG51bGxwdHI7
Ci0gICAgICAgIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciA9IGZhbHNlOwotICAgICAgICBp
ZiAoZnJhZ21lbnRTaGFkZXJNb2R1bGUgJiYgZnJhZ21lbnRTaGFkZXJNb2R1bGUgIT0gJnZlcnRl
eFNoYWRlck1vZHVsZSkgewotICAgICAgICAgICAgc2Vjb25kU2hhZGVyID0gJmZyYWdtZW50U2hh
ZGVyTW9kdWxlLT53aGxzbFNvdXJjZTsKLSAgICAgICAgICAgIGRpc3RpbmN0RnJhZ21lbnRTaGFk
ZXIgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gcHJvZ3JhbSA9IHByZXBhcmVTaGFy
ZWQocGhhc2VUaW1lcywgdmVydGV4U2hhZGVyTW9kdWxlLndobHNsU291cmNlLCBzZWNvbmRTaGFk
ZXIpOwotICAgICAgICBpZiAoIXByb2dyYW0pCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hdGNoZWRS
ZW5kZXJTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRpbWVzKTsKLSAg
ICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJvZ3JhbSwgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNo
YWRlck1vZHVsZSk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZWRTZW1hbnRpY3MpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhFcnJvcigi
Q291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3RyKSwgdmVydGV4U2hhZGVyTW9kdWxlLndobHNs
U291cmNlLCBzZWNvbmRTaGFkZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigiZ2VuZXJhdGVNZXRhbENvZGUiLCBwaGFzZVRpbWVz
KTsKLSAgICAgICAgICAgIGdlbmVyYXRlZENvZGUgPSBNZXRhbDo6Z2VuZXJhdGVNZXRhbENvZGUo
KnByb2dyYW0sIFdURk1vdmUoKm1hdGNoZWRTZW1hbnRpY3MpLCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvZ1BoYXNlVGltZXMocGhh
c2VUaW1lcyk7Ci0KLSAgICBSZW5kZXJQcmVwYXJlUmVzdWx0IHJlc3VsdDsKLSAgICByZXN1bHQu
bWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWV0YWxTb3VyY2UpOwotICAgIHJl
c3VsdC5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUu
bWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lKTsKLSAgICByZXN1bHQubWFuZ2xlZEZyYWdtZW50
RW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWFuZ2xlZEZyYWdtZW50RW50
cnlQb2ludE5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUV4cGVjdGVkPENvbXB1dGVQ
cmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVyTW9kdWxlJiBzaGFkZXJN
b2R1bGUsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IpCi17Ci0gICAgUGhhc2VUaW1lcyBwaGFzZVRpbWVzOwotICAgIE1ldGFsOjpDb21wdXRlTWV0
YWxDb2RlIGdlbmVyYXRlZENvZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9u
cz4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICB7Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VU
aW1lcigicHJlcGFyZSB0b3RhbCIsIHBoYXNlVGltZXMpOwotICAgICAgICBhdXRvIHByb2dyYW0g
PSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSk7Ci0g
ICAgICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChw
cm9ncmFtLmVycm9yKCkpOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVT
ZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNl
VGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAg
ICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJvZ3JhbSwgY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZWRTZW1hbnRpY3MpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhF
cnJvcigiQ291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3RyKSwgc2hhZGVyTW9kdWxlLndobHNs
U291cmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVy
IHBoYXNlVGltZXIoImNvbXB1dGVEaW1lbnNpb25zIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAg
ICBjb21wdXRlRGltZW5zaW9ucyA9IFdITFNMOjpjb21wdXRlRGltZW5zaW9ucygqcHJvZ3JhbSwg
Km1hdGNoZWRTZW1hbnRpY3MtPnNoYWRlcik7Ci0gICAgICAgICAgICBpZiAoIWNvbXB1dGVEaW1l
bnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJy
b3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBjb21wdXRlIGRpbWVuc2lvbnMiX3N0ciks
IHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgewotICAg
ICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJnZW5lcmF0ZU1ldGFsQ29kZSIsIHBoYXNl
VGltZXMpOwotICAgICAgICAgICAgZ2VuZXJhdGVkQ29kZSA9IE1ldGFsOjpnZW5lcmF0ZU1ldGFs
Q29kZSgqcHJvZ3JhbSwgV1RGTW92ZSgqbWF0Y2hlZFNlbWFudGljcyksIGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvZ1BoYXNlVGlt
ZXMocGhhc2VUaW1lcyk7Ci0KLSAgICBDb21wdXRlUHJlcGFyZVJlc3VsdCByZXN1bHQ7Ci0gICAg
cmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1ldGFsU291cmNlKTsK
LSAgICByZXN1bHQubWFuZ2xlZEVudHJ5UG9pbnROYW1lID0gV1RGTW92ZShnZW5lcmF0ZWRDb2Rl
Lm1hbmdsZWRFbnRyeVBvaW50TmFtZSk7Ci0gICAgcmVzdWx0LmNvbXB1dGVEaW1lbnNpb25zID0g
V1RGTW92ZSgqY29tcHV0ZURpbWVuc2lvbnMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDlkMzM5YWJiOTQzZThkOGNhODNmZjRmNDE5ODMzYjIzODc2Y2E0M2EuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMu
aCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotLy8gSGlkZSB0aGUgY29udGVudHMgb2YgdGhlIFNoYWRlck1vZHVsZS4g
Q2xpZW50cyBvZiB0aGUgY29tcGlsZXIgc2hvdWxkbid0IGNhcmUgd2hhdCdzIGluc2lkZSBpdC4K
LXN0cnVjdCBTaGFkZXJNb2R1bGU7Ci0KLX0KLQotfQotCi1uYW1lc3BhY2Ugc3RkIHsKLQotdGVt
cGxhdGU8PiBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVs
ZT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6U2hhZGVyTW9kdWxlKikg
Y29uc3Q7Ci19OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29tcGlsZVRpbWVzID0gZmFsc2U7Ci0KLVVu
aXF1ZVJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmIHdo
bHNsU291cmNlKTsKLQotc3RydWN0IFJlbmRlclByZXBhcmVSZXN1bHQgewotICAgIFN0cmluZ0J1
aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xl
ZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lIG1h
bmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLUV4cGVjdGVkPFJlbmRlclByZXBhcmVS
ZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHZlcnRleFNoYWRlck1v
ZHVsZSwgY29uc3QgU2hhZGVyTW9kdWxlKiBmcmFnbWVudFNoYWRlck1vZHVsZSwgUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJik7Ci0KLXN0cnVjdCBDb21wdXRlRGltZW5zaW9ucyB7Ci0gICAgdW5z
aWduZWQgd2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0OwotICAgIHVuc2lnbmVkIGRlcHRoOwot
fTsKLQotc3RydWN0IENvbXB1dGVQcmVwYXJlUmVzdWx0IHsKLSAgICBTdHJpbmdCdWlsZGVyIG1l
dGFsU291cmNlOwotICAgIE1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRFbnRyeVBv
aW50TmFtZTsKLSAgICBDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci1F
eHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRl
ck1vZHVsZSYsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4OWQwN2Q4MDg4NjQ0ZWZhZDQ0NTM0YTkwNmIz
YTU2MzNjNDkwNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJlc2VydmVWYXJpYWJs
ZUxpZmV0aW1lcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5oIgotI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlcGxh
Y2VXaXRoLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gVGhpcyBwYXNzIHdvcmtzIGJ5IGVuc3VyaW5n
IHByb3BlciB2YXJpYWJsZSBsaWZldGltZXMuIEluIFdITFNMLCBlYWNoIHZhcmlhYmxlCi0vLyBo
YXMgZ2xvYmFsIGxpZmV0aW1lLiBTbyByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGEgbG9jYWwgdmFy
aWFibGUgaXMgYSB0b3RhbGx5Ci0vLyBsZWdpdGltYXRlIGFuZCB3ZWxsLXNwZWNpZmllZCB0aGlu
ZyB0byBkby4KLS8vCi0vLyBXZSBpbXBsZW1lbnQgdGhpcyBieToKLS8vIC0gV2Ugbm90ZSBldmVy
eSB2YXJpYWJsZSB3aG9zZSBhZGRyZXNzIHdlIHRha2UuCi0vLyAtIEVhY2ggc3VjaCB2YXJpYWJs
ZSBnZXRzIGRlZmluZWQgYXMgYSBmaWVsZCBpbiBhIHN0cnVjdC4KLS8vIC0gRWFjaCBmdW5jdGlv
biB3aGljaCBpcyBhbiBlbnRyeSBwb2ludCBkZWZpbmVzIHRoaXMgc3RydWN0LgotLy8gLSBFYWNo
IG5vbiBlbnRyeSBwb2ludCB0YWtlcyBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3QgYXMgaXRzIGZp
bmFsIHBhcmFtZXRlci4KLS8vIC0gRWFjaCBjYWxsIHRvIGEgbm9uLW5hdGl2ZSBmdW5jdGlvbiBp
cyByZXdyaXR0ZW4gdG8gcGFzcyBhIHBvaW50ZXIgdG8gdGhlCi0vLyAgIHN0cnVjdCBhcyB0aGUg
bGFzdCBjYWxsIGFyZ3VtZW50LgotLy8gLSBFYWNoIHZhcmlhYmxlIHJlZmVyZW5jZSB0byAieCIs
IHdoZXJlICJ4IiBlbmRzIHVwIGluIHRoZSBzdHJ1Y3QsIGlzCi0vLyAgIG1vZGlmaWVkIHRvIGlu
c3RlYWQgYmUgInN0cnVjdC0+eCIuIFdlIHN0b3JlIHRvICJzdHJ1Y3QtPngiIGFmdGVyIGRlY2xh
cmluZwotLy8gICAieCIuIElmICJ4IiBpcyBhIGZ1bmN0aW9uIHBhcmFtZXRlciwgd2Ugc3RvcmUg
dG8gInN0cnVjdC0+eCIgYXMgdGhlIGZpcnN0Ci0vLyAgIHRoaW5nIHdlIGRvIGluIHRoZSBmdW5j
dGlvbiBib2R5LgotCi1jbGFzcyBFc2NhcGVkVmFyaWFibGVDb2xsZWN0b3IgZmluYWwgOiBwdWJs
aWMgVmlzaXRvciB7Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0KLSAgICB2
b2lkIGVzY2FwZVZhcmlhYmxlVXNlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLSAgICB7
Ci0gICAgICAgIGlmICghaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2UgbWlzc2luZyBhbnkgaW50ZXJlc3RpbmcgcHJv
ZHVjdGlvbnMgaGVyZT8KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgzMTEKLSAgICAgICAgICAgIEJhc2U6OnZpc2l0KGV4cHJlc3Npb24p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byogdmFyaWFi
bGUgPSBkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS52YXJpYWJs
ZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGUpOwotICAgICAgICAvLyBGSVhNRTogV2UgY291
bGQgc2tpcCB0aGlzIGlmIHdlIG1hcmsgYWxsIGludGVybmFsIHZhcmlhYmxlcyB3aXRoIGEgYml0
LCBzaW5jZSB3ZQotICAgICAgICAvLyBuZXZlciBtYWtlIGFueSBpbnRlcm5hbCB2YXJpYWJsZSBl
c2NhcGUgdGhlIGN1cnJlbnQgc2NvcGUgaXQgaXMgZGVmaW5lZCBpbjoKLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM4MwotICAgICAgICBtX2Vz
Y2FwZWRWYXJpYWJsZXMuYWRkKHZhcmlhYmxlLCBtYWtlU3RyaW5nKCJfIiwgdmFyaWFibGUtPm5h
bWUoKSwgIl8iLCBtX2NvdW50KyspKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBpZiAobWFrZVBvaW50ZXJFeHByZXNzaW9uLm1pZ2h0RXNjYXBlKCkpCi0gICAg
ICAgICAgICBlc2NhcGVWYXJpYWJsZVVzZShtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVl
KCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgaWYgKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubWlnaHRFc2NhcGUoKSkKLSAg
ICAgICAgICAgIGVzY2FwZVZhcmlhYmxlVXNlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChm
dW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRhcmRM
aWJyYXJ5KQotICAgICAgICAgICAgQmFzZTo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAg
ICB9Ci0KLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gdGFr
ZUVzY2FwZWRWYXJpYWJsZXMoKSB7IHJldHVybiBXVEZNb3ZlKG1fZXNjYXBlZFZhcmlhYmxlcyk7
IH0KLQotcHJpdmF0ZToKLSAgICBzaXplX3QgbV9jb3VudCB7IDEgfTsKLSAgICBIYXNoTWFwPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gbV9lc2NhcGVkVmFyaWFibGVzOwotfTsK
LQotc3RhdGljIEFMV0FZU19JTkxJTkUgVG9rZW4gYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGUg
dHlwZSkKLXsKLSAgICByZXR1cm4gVG9rZW4geyB7IH0sIHR5cGUgfTsKLX0KLQotY2xhc3MgUHJl
c2VydmVMaWZldGltZXMgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0
b3I7Ci1wdWJsaWM6Ci0gICAgUHJlc2VydmVMaWZldGltZXMoUmVmPEFTVDo6VHlwZVJlZmVyZW5j
ZT4gc3RydWN0VHlwZSwgY29uc3QgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBB
U1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgdmFyaWFibGVNYXBwaW5nKQotICAgICAgICA6IG1fc3Ry
dWN0VHlwZShXVEZNb3ZlKHN0cnVjdFR5cGUpKQotICAgICAgICAsIG1fcG9pbnRlclRvU3RydWN0
VHlwZShBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUoYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6
OklkZW50aWZpZXIpLCBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkLCBtX3N0cnVjdFR5cGUuY29w
eVJlZigpKSkKLSAgICAgICAgLCBtX3ZhcmlhYmxlTWFwcGluZyh2YXJpYWJsZU1hcHBpbmcpCi0g
ICAgeyB9Ci0KLSAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4gbWFrZVN0cnVj
dFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gc3RydWN0VmFyaWFibGVS
ZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFy
aWFibGVSZWZlcmVuY2U6OndyYXAoKm1fc3RydWN0VmFyaWFibGUpKTsKLSAgICAgICAgc3RydWN0
VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoKm1fc3RydWN0VmFyaWFibGUtPnR5cGUoKSk7Ci0g
ICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6Okxl
ZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgIHJldHVybiBz
dHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8QVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbj4gYXNzaWduVmFyaWFibGVJbnRvU3RydWN0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYgdmFyaWFibGUsIEFTVDo6U3RydWN0dXJlRWxlbWVudCogZWxlbWVudCkKLSAg
ICB7Ci0gICAgICAgIGF1dG8gbGhzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6Okdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlPih2YXJpYWJsZS5jb2RlTG9jYXRpb24oKSwgbWFrZVN0cnVjdFZhcmlhYmxlUmVm
ZXJlbmNlKCksIGVsZW1lbnQpOwotICAgICAgICBsaHMtPnNldFR5cGUoKnZhcmlhYmxlLnR5cGUo
KSk7Ci0gICAgICAgIGxocy0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6
OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAgIGF1dG8gcmhzID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFw
KHZhcmlhYmxlKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZSgqdmFyaWFibGUudHlwZSgpKTsKLSAg
ICAgICAgcmhzLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVz
c1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAgICAgICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPih2YXJpYWJsZS5jb2RlTG9jYXRpb24oKSwg
V1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocykpOwotICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBl
KCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlv
bihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnQ7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZp
bml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5w
YXJzaW5nTW9kZSgpID09IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgYm9vbCBpc0VudHJ5UG9pbnQgPSAhIWZ1bmN0aW9uRGVmaW5p
dGlvbi5lbnRyeVBvaW50VHlwZSgpOwotICAgICAgICBpZiAoaXNFbnRyeVBvaW50KSB7Ci0gICAg
ICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigp
LCBBU1Q6OlF1YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAgICBtX3N0cnVjdFR5cGUuY29weVJl
ZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAgICAgICAgIGF1dG8gc3Ry
dWN0VmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoc3RydWN0VmFyaWFibGVEZWNsYXJhdGlv
bikpOwotICAgICAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUobV9zdHJ1
Y3RUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZS0+
c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhy
ZWFkIH0pOwotCi0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHN0cnVjdFZh
cmlhYmxlRGVjbGFyYXRpb25zOwotICAgICAgICAgICAgc3RydWN0VmFyaWFibGVEZWNsYXJhdGlv
bnMuYXBwZW5kKFdURk1vdmUoc3RydWN0VmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAg
ICAgYXV0byBzdHJ1Y3REZWNsYXJhdGlvblN0YXRlbWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2Nh
dGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zKSk7Ci0KLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IG1ha2VQb2ludGVyRXhwcmVzc2lv
bihuZXcgQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVM
b2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKSwgQVNUOjpBZGRyZXNz
RXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSkpOwotICAgICAgICAgICAgbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uLT5zZXRUeXBlKG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCkpOwotICAgICAg
ICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0
VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9uID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2Rl
TG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAgICAgICAgICAgbV9wb2ludGVy
VG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgIndyYXBwZXIiX3MsIG51bGxwdHIsIFdURk1vdmUobWFr
ZVBvaW50ZXJFeHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBtX3N0cnVjdFZhcmlhYmxlID0gJnBv
aW50ZXJEZWNsYXJhdGlvbjsKLQotICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
cyBwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnM7Ci0gICAgICAgICAgICBwb2ludGVyVmFyaWFi
bGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUocG9pbnRlckRlY2xhcmF0aW9uKSk7Ci0gICAg
ICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvblN0YXRlbWVudCA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rpb25EZWZpbml0aW9uLmNv
ZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHBvaW50ZXJWYXJpYWJsZURlY2xhcmF0aW9ucykpOwotCi0g
ICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0ZW1lbnRzKCkuaW5zZXJ0
KDAsIFdURk1vdmUoc3RydWN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAgICAgICAgICAgIGZ1
bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMSwgV1RGTW92ZShw
b2ludGVyRGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFs
aWZpZXJzKCksCi0gICAgICAgICAgICAgICAgbV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYo
KSwgIndyYXBwZXIiX3MsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgbV9zdHJ1Y3RW
YXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0gICAgICAgICAgICBmdW5jdGlvbkRlZmlu
aXRpb24ucGFyYW1ldGVycygpLmFwcGVuZChXVEZNb3ZlKHBvaW50ZXJEZWNsYXJhdGlvbikpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQmFzZTo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLQot
ICAgICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0
ZXJzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQo
JnBhcmFtZXRlcik7Ci0gICAgICAgICAgICBpZiAoaXRlciA9PSBtX3ZhcmlhYmxlTWFwcGluZy5l
bmQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgZnVuY3Rpb25E
ZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydChpc0VudHJ5UG9pbnQgPyAyIDog
MCwKLSAgICAgICAgICAgICAgICBtYWtlVW5pcXVlUmVmPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudD4oYXNzaWduVmFyaWFibGVJbnRvU3RydWN0KHBhcmFtZXRlciwgaXRlci0+dmFs
dWUpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbm5lciBmdW5jdGlvbnMgYXJlIG5vdCBh
bGxvd2VkIGluIFdITFNMLiBTbyB0aGlzIGlzIGZpbmUuCi0gICAgICAgIG1fc3RydWN0VmFyaWFi
bGUgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lv
biYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBCYXNlOjp2aXNpdChjYWxsRXhwcmVzc2lv
bik7Ci0KLSAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGl0J3MgaWxsZWdhbCB0byBjYWxs
IGFuIGVudHJ5cG9pbnQuIFRoZXJlZm9yZSwgd2UgY2FuIG9ubHkKLSAgICAgICAgLy8gY2FsbCBm
dW5jdGlvbnMgd2hlcmUgd2UndmUgYWxyZWFkeSBhcHBlbmRlZCB0aGlzIHN0cnVjdCBhcyBpdHMg
ZmluYWwgcGFyYW1ldGVyLgotICAgICAgICBpZiAoIWNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCku
aXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgJiYgY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24o
KS5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAg
ICAgICBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5hcHBlbmQobWFrZVN0cnVjdFZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBhdXRvIGl0ZXIgPSBtX3Zhcmlh
YmxlTWFwcGluZy5maW5kKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAgICAgICBp
ZiAoaXRlciA9PSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdHlwZSA9ICp2YXJpYWJsZVJlZmVyZW5j
ZS52YXJpYWJsZSgpLT50eXBlKCk7Ci0gICAgICAgIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFu
bm90YXRpb24gPSB2YXJpYWJsZVJlZmVyZW5jZS50eXBlQW5ub3RhdGlvbigpOwotICAgICAgICBh
dXRvKiBpbnRlcm5hbEZpZWxkID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6Okdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlPih2YXJpYWJsZVJlZmVyZW5jZSwgdmFyaWFibGVSZWZlcmVuY2UuY29kZUxvY2F0
aW9uKCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpLCBpdGVyLT52YWx1ZSk7Ci0gICAg
ICAgIGludGVybmFsRmllbGQtPnNldFR5cGUoV1RGTW92ZSh0eXBlKSk7Ci0gICAgICAgIGludGVy
bmFsRmllbGQtPnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0KLSAgICAgICAgQmFzZTo6dmlzaXQo
dmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwotCi0gICAgICAgIEFTVDo6U3RhdGVtZW50
cyBzdGF0ZW1lbnRzOwotICAgICAgICBmb3IgKFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24+JiB2YXJpYWJsZURlY2xhcmF0aW9uIDogdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQudmFyaWFibGVEZWNsYXJhdGlvbnMoKSkgewotICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uJiB2YXJpYWJsZSA9IHZhcmlhYmxlRGVjbGFyYXRpb24uZ2V0KCk7Ci0KLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIGRlY2xh
cmF0aW9uczsKLSAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUodmFy
aWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuYXBwZW5kKG1h
a2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4odmFyaWFibGUu
Y29kZUxvY2F0aW9uKCksIFdURk1vdmUoZGVjbGFyYXRpb25zKSkpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKCZ2YXJpYWJs
ZSk7Ci0gICAgICAgICAgICBpZiAoaXRlciAhPSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSkKLSAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oYXNzaWduVmFyaWFibGVJbnRvU3RydWN0KHZhcmlhYmxl
LCBpdGVyLT52YWx1ZSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFTVDo6cmVwbGFjZVdpdGg8
QVNUOjpTdGF0ZW1lbnRMaXN0Pih2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgdmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RhdGVtZW50
cykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIG1f
c3RydWN0VmFyaWFibGUgeyBudWxscHRyIH07Ci0KLSAgICBSZWY8QVNUOjpUeXBlUmVmZXJlbmNl
PiBtX3N0cnVjdFR5cGU7Ci0gICAgUmVmPEFTVDo6UG9pbnRlclR5cGU+IG1fcG9pbnRlclRvU3Ry
dWN0VHlwZTsKLSAgICAvLyBJZiB0aGlzIG1hcHBpbmcgY29udGFpbnMgdGhlIHZhcmlhYmxlLCBp
dCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSdzIGNhbm9uaWNhbCBsb2NhdGlvbgotICAgIC8vIGlz
IGluIHRoZSBzdHJ1Y3Qgd2UgdXNlIHRvIHByZXNlcnZlIHZhcmlhYmxlIGxpZmV0aW1lcy4KLSAg
ICBjb25zdCBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIEFTVDo6U3RydWN0dXJl
RWxlbWVudCo+JiBtX3ZhcmlhYmxlTWFwcGluZzsKLX07Ci0KLXZvaWQgcHJlc2VydmVWYXJpYWJs
ZUxpZmV0aW1lcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uKiwgU3RyaW5nPiBlc2NhcGVkVmFyaWFibGVzOwotICAgIHsKLSAgICAgICAg
RXNjYXBlZFZhcmlhYmxlQ29sbGVjdG9yIGNvbGxlY3RvcjsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIGNvbGxlY3Rvci52aXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtp
XSk7Ci0gICAgICAgIGVzY2FwZWRWYXJpYWJsZXMgPSBjb2xsZWN0b3IudGFrZUVzY2FwZWRWYXJp
YWJsZXMoKTsKLSAgICB9Ci0KLSAgICBBU1Q6OlN0cnVjdHVyZUVsZW1lbnRzIGVsZW1lbnRzOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IGVzY2FwZWRWYXJpYWJsZXMpIHsKLSAgICAgICAgYXV0byog
dmFyaWFibGUgPSBwYWlyLmtleTsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBwYWlyLnZhbHVlOwot
ICAgICAgICBlbGVtZW50cy5hcHBlbmQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50IHsgdmFyaWFibGUt
PmNvZGVMb2NhdGlvbigpLCB7IH0sICp2YXJpYWJsZS0+dHlwZSgpLCBXVEZNb3ZlKG5hbWUpLCBu
dWxscHRyIH0pOwotICAgIH0KLQotICAgIC8vIE5hbWUgb2YgdGhpcyBkb2Vzbid0IG1hdHRlciwg
c2luY2Ugd2UgZG9uJ3QgdXNlIHN0cnVjdCBuYW1lcyB3aGVuCi0gICAgLy8gZ2VuZXJhdGluZyBN
ZXRhbCB0eXBlIG5hbWVzLiBXZSBqdXN0IHBpY2sgc29tZXRoaW5nIGhlcmUgdG8gbWFrZSBpdAot
ICAgIC8vIGVhc3kgdG8gcmVhZCBpbiBBU1QgZHVtcHMuCi0gICAgYXV0byB3cmFwcGVyU3RydWN0
RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihhbm9u
eW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6U3RydWN0KSwgIl9fV3JhcHBlclN0cnVjdF9fIl9zLCBX
VEZNb3ZlKGVsZW1lbnRzKSk7Ci0KLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
biosIEFTVDo6U3RydWN0dXJlRWxlbWVudCo+IHZhcmlhYmxlTWFwcGluZzsKLSAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogZXNjYXBlZFZhcmlhYmxlcykKLSAg
ICAgICAgdmFyaWFibGVNYXBwaW5nLmFkZChwYWlyLmtleSwgJndyYXBwZXJTdHJ1Y3REZWZpbml0
aW9uLT5zdHJ1Y3R1cmVFbGVtZW50cygpW2luZGV4KytdKTsKLQotICAgIHsKLSAgICAgICAgYXV0
byB3cmFwcGVyU3RydWN0VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChhbm9ueW1vdXNU
b2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllciksIHdyYXBwZXJTdHJ1Y3REZWZpbml0aW9uKTsK
LSAgICAgICAgUHJlc2VydmVMaWZldGltZXMgcHJlc2VydmVMaWZldGltZXMoV1RGTW92ZSh3cmFw
cGVyU3RydWN0VHlwZSksIHZhcmlhYmxlTWFwcGluZyk7Ci0gICAgICAgIHByZXNlcnZlTGlmZXRp
bWVzLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIH0KLQotICAgIHByb2dyYW0uc3RydWN0
dXJlRGVmaW5pdGlvbnMoKS5hcHBlbmQoV1RGTW92ZSh3cmFwcGVyU3RydWN0RGVmaW5pdGlvbikp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTY0ZjdhMjhi
YTg0Y2ZkMGU0Njc4MTAxOTllZDBhYzM5NzQwYmQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNs
YXNzIFByb2dyYW07Ci0KLXZvaWQgcHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcyhQcm9ncmFtJik7
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExYTJlMmMwMzg3MjU1ZDU3ZjA5YmE0ZDFlOTJhYWZm
NGU0ZWVkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaAorKysgL2Rl
di9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVm
aW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUg
IldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbSB7Ci1wdWJsaWM6Ci0gICAgUHJv
Z3JhbSgpID0gZGVmYXVsdDsKLSAgICBQcm9ncmFtKFByb2dyYW0mJikgPSBkZWZhdWx0OwotCi0g
ICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OlR5cGVEZWZpbml0aW9uJiYgdHlw
ZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBtX3R5cGVEZWZpbml0aW9ucy5hcHBlbmQobWFr
ZVVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPihXVEZNb3ZlKHR5cGVEZWZpbml0aW9uKSkp
OwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV90eXBlRGVmaW5pdGlvbnMubGFz
dCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiYmIHN0cnVjdHVyZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBt
X3N0cnVjdHVyZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4oV1RGTW92ZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1
cm4gbV9uYW1lQ29udGV4dC5hZGQobV9zdHJ1Y3R1cmVEZWZpbml0aW9ucy5sYXN0KCkpOwotICAg
IH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24mJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi0gICAgewotICAgICAgICBtX2VudW1l
cmF0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24+KFdURk1vdmUoZW51bWVyYXRpb25EZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1
cm4gbV9uYW1lQ29udGV4dC5hZGQobV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmxhc3QoKSk7Ci0g
ICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYmIGZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb25E
ZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4o
V1RGTW92ZShmdW5jdGlvbkRlZmluaXRpb24pKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250
ZXh0LmFkZChtX2Z1bmN0aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYm
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBtX25hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbj4oV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpOwotICAgICAg
ICBtX2ludHJpbnNpY3MuYWRkKG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKTsK
LSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5k
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotICAg
IHsKLSAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMu
bGFzdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fbmF0aXZlVHlwZURl
Y2xhcmF0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNWYWxpZFZlY3RvclByb3Bl
cnR5KFN0cmluZyk7Ci0KLSAgICBOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQoKSB7IHJldHVybiBt
X25hbWVDb250ZXh0OyB9Ci0gICAgSW50cmluc2ljcyYgaW50cmluc2ljcygpIHsgcmV0dXJuIG1f
aW50cmluc2ljczsgfQotICAgIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MoKSBjb25zdCB7
IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VHlwZURl
ZmluaXRpb24+PiYgdHlwZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV90eXBlRGVmaW5pdGlvbnM7
IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4+JiBzdHJ1
Y3R1cmVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7IH0KLSAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPj4mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7IH0KLSAg
ICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4mIGZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uRGVmaW5pdGlvbnM7IH0K
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4mIGZ1bmN0aW9u
RGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVmaW5pdGlvbnM7IH0KLSAgICBjb25z
dCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4+JiBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbj4+JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPj4mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBt
X25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAgICBOYW1lQ29udGV4dCBt
X25hbWVDb250ZXh0OwotICAgIEludHJpbnNpY3MgbV9pbnRyaW5zaWNzOwotICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlvbj4+IG1fdHlwZURlZmluaXRpb25zOwotICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPj4gbV9zdHJ1Y3R1cmVEZWZp
bml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
Pj4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+PiBtX2Z1bmN0aW9uRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiBtX25hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+PiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTMwZmEwYjk5ZThhNTNiOTBhMzI1NzQxMmFkZWY0YjQ5Y2FjOGQzZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5o
IgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQ
cm9wZXJ0eVJlc29sdmVyIDogcHVibGljIFZpc2l0b3IgewotICAgIHZvaWQgaGFuZGxlTGVmdEhh
bmRTaWRlQmFzZShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiBiYXNlLCBVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiYgc2xvdCwgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiYg
ZXhwcmVzc2lvbnMpCi0gICAgewotICAgICAgICBpZiAoIWJhc2UtPm1heUJlRWZmZWN0ZnVsKCkp
IHsKLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGJhc2UpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gYmFzZS0+dHlw
ZUFubm90YXRpb24oKS5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxlZnRBZGRyZXNzU3BhY2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uID0g
YmFzZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBiYXNl
VHlwZSA9IGJhc2UtPnJlc29sdmVkVHlwZSgpOwotICAgICAgICBSZWY8QVNUOjpQb2ludGVyVHlw
ZT4gcG9pbnRlclR5cGUgPSBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUoY29kZUxvY2F0aW9uLCAq
bGVmdEFkZHJlc3NTcGFjZSwgYmFzZVR5cGUuY29weVJlZigpKTsKLQotICAgICAgICBVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBwb2ludGVyVmFyaWFibGUgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oY29kZUxvY2F0aW9uLCBBU1Q6OlF1YWxpZmll
cnMgeyB9LCBwb2ludGVyVHlwZS5wdHIoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwot
Ci0gICAgICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZdIHsKLSAgICAgICAgICAg
IGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZl
cmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAocG9pbnRlclZhcmlhYmxlKSk7Ci0g
ICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShwb2ludGVyVHlwZS5jb3B5UmVm
KCkpOwotICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFT
VDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLSAgICAgICAgICAg
IHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgfTsKLQotICAgICAgICB7Ci0gICAg
ICAgICAgICBhdXRvIHBvaW50ZXJPZkJhc2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6TWFrZVBvaW50
ZXJFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIFdURk1vdmUoYmFzZSksIEFTVDo6QWRkcmVzc0Vz
Y2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpOwotICAgICAgICAgICAgcG9pbnRlck9mQmFzZS0+c2V0
VHlwZShwb2ludGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgcG9pbnRlck9mQmFzZS0+
c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBhdXRv
IGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGNv
ZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCksIFdURk1vdmUocG9pbnRlck9mQmFz
ZSkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZShwb2ludGVyVHlwZS5jb3B5UmVm
KCkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdo
dFZhbHVlKCkpOwotCi0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShhc3Np
Z25tZW50KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGRlcmVm
ZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oY29kZUxv
Y2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICBkZXJlZmVyZW5j
ZS0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgZGVyZWZlcmVuY2Ut
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgKmxlZnRBZGRyZXNzU3BhY2UgfSk7
Ci0KLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGRlcmVmZXJlbmNlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKHBvaW50ZXJWYXJpYWJsZSkpOwot
ICAgIH0KLQotICAgIHZvaWQgaGFuZGxlUHJvcGVydHlBY2Nlc3MoQVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzLCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4+JiBleHByZXNzaW9ucykKLSAgICB7Ci0gICAgICAgIEFTVDo6UHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKiBjdXJyZW50UHRyID0gJnByb3BlcnR5QWNjZXNzOwotICAgICAgICAvLyBhLmJb
Y10uZCB3aWxsIGdvIGludG8gdGhpcyBhcnJheSBhcyBbLmQsIFtjXSwgLmJdCi0gICAgICAgIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Pj4gY2hhaW47Ci0KLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1cnJlbnRQdHI7Ci0gICAgICAgICAg
ICBjaGFpbi5hcHBlbmQoY3VycmVudCk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpJbmRleEV4
cHJlc3Npb24+KGN1cnJlbnQpKQotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY3VycmVudCkuaW5kZXhFeHByZXNzaW9uKCkp
OwotICAgICAgICAgICAgaWYgKCFpczxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4oY3Vy
cmVudC5iYXNlKCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY3VycmVu
dFB0ciA9ICZkb3duY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4oY3VycmVudC5i
YXNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24mIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
Y3VycmVudC5iYXNlKCkpOwotCi0gICAgICAgIENvZGVMb2NhdGlvbiBiYXNlQ29kZUxvY2F0aW9u
ID0gY3VycmVudC5iYXNlKCkuY29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
Y3VycmVudC5iYXNlKCkudHlwZUFubm90YXRpb24oKS5pc1JpZ2h0VmFsdWUoKSkgewotICAgICAg
ICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4gY29weSA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihiYXNlQ29kZUxvY2F0aW9uLCBBU1Q6OlF1
YWxpZmllcnMgeyB9LCAmY3VycmVudC5iYXNlKCkucmVzb2x2ZWRUeXBlKCksIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBiYXNl
VHlwZSA9IGN1cnJlbnQuYmFzZSgpLnJlc29sdmVkVHlwZSgpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSA9IFsmXSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChjb3B5KSk7Ci0gICAgICAgICAg
ICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoYmFzZVR5cGUuY29weVJlZigpKTsKLSAg
ICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpM
ZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAg
IGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lv
bj4oYmFzZUNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCksIGN1cnJlbnQudGFr
ZUJhc2UoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlKGJhc2VUeXBlLmNvcHlS
ZWYoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJp
Z2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKGFz
c2lnbm1lbnQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY3VycmVudC5iYXNlUmVmZXJl
bmNlKCkgPSBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKTsKLQotICAgICAgICAgICAgbV92YXJpYWJs
ZXMuYXBwZW5kKFdURk1vdmUoY29weSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGhh
bmRsZUxlZnRIYW5kU2lkZUJhc2UoY3VycmVudC50YWtlQmFzZSgpLCBjdXJyZW50LmJhc2VSZWZl
cmVuY2UoKSwgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSBjaGFpbi5z
aXplKCk7IGktLTsgKSB7Ci0gICAgICAgICAgICBhdXRvJiBhY2Nlc3MgPSBjaGFpbltpXS5nZXQo
KTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oYWNjZXNzKSAmJiBk
b3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oYWNjZXNzKS5pbmRleEV4cHJlc3Npb24oKS5t
YXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgaW5kZXhFeHByZXNzaW9u
ID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGFjY2Vzcyk7Ci0KLSAgICAgICAgICAg
ICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gaW5kZXhUeXBlID0gaW5kZXhFeHByZXNzaW9uLmlu
ZGV4RXhwcmVzc2lvbigpLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAgICAgICAgICAgVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4gaW5kZXhWYXJpYWJsZSA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihhY2Nlc3MuY29kZUxvY2F0aW9uKCksIEFTVDo6
UXVhbGlmaWVycyB7IH0sIGluZGV4VHlwZS5wdHIoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBtYWtlVmFyaWFibGVSZWZlcmVuY2UgPSBbJl0g
ewotICAgICAgICAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFw
KGluZGV4VmFyaWFibGUpKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGUoaW5kZXhUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRk
cmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJs
ZVJlZmVyZW5jZTsKLSAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24sIG1ha2VWYXJpYWJsZVJlZmVyZW5j
ZSgpLCBpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwotICAgICAgICAgICAgICAgICAgICBh
c3NpZ25tZW50LT5zZXRUeXBlKGluZGV4VHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgICAg
ICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoYXNzaWdubWVu
dCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGluZGV4RXhwcmVzc2lv
bi5pbmRleFJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0KLSAgICAgICAg
ICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQoV1RGTW92ZShpbmRleFZhcmlhYmxlKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGhhbmRsZVByb3BlcnR5QWNj
ZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2VzcykKLSAgICB7
Ci0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhwcmVzc2lvbnM7
Ci0KLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MocHJvcGVydHlBY2Nlc3MsIGV4cHJlc3Np
b25zKTsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYWNjZXNzVHlwZSA9IHByb3Bl
cnR5QWNjZXNzLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAgIEFTVDo6Q29tbWFFeHByZXNzaW9u
KiBjb21tYTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiA9IHByb3BlcnR5QWNj
ZXNzLmNvZGVMb2NhdGlvbigpOwotICAgICAgICBpZiAoaXM8QVNUOjpJbmRleEV4cHJlc3Npb24+
KHByb3BlcnR5QWNjZXNzKSkgewotICAgICAgICAgICAgYXV0byYgaW5kZXhFeHByZXNzaW9uID0g
ZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKTsKLQotICAgICAg
ICAgICAgYXV0byBuZXdJbmRleEV4cHJlc3Npb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6SW5kZXhF
eHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbi50YWtlQmFzZSgpLCBpbmRl
eEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwotICAgICAgICAgICAgbmV3SW5kZXhFeHByZXNzaW9u
LT5zZXRUeXBlKGluZGV4RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgICAgICBu
ZXdJbmRleEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6VHlwZUFubm90YXRpb24o
aW5kZXhFeHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQotICAgICAgICAgICAgZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUobmV3SW5kZXhFeHByZXNzaW9uKSk7Ci0KLSAgICAgICAgICAg
IGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oaW5kZXhFeHBy
ZXNzaW9uLCBjb2RlTG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzPEFTVDo6RG90RXhwcmVzc2lvbj4o
cHJvcGVydHlBY2Nlc3MpKTsKLSAgICAgICAgICAgIGF1dG8mIGRvdEV4cHJlc3Npb24gPSBkb3du
Y2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKTsKLQotICAgICAgICAgICAg
YXV0byBuZXdEb3RFeHByZXNzaW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+
KGNvZGVMb2NhdGlvbiwgZG90RXhwcmVzc2lvbi50YWtlQmFzZSgpLCBTdHJpbmcoZG90RXhwcmVz
c2lvbi5maWVsZE5hbWUoKSkpOwotICAgICAgICAgICAgbmV3RG90RXhwcmVzc2lvbi0+c2V0VHlw
ZShkb3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgICAgIG5ld0RvdEV4cHJl
c3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6VHlwZUFubm90YXRpb24oZG90RXhwcmVzc2lv
bi50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChX
VEZNb3ZlKG5ld0RvdEV4cHJlc3Npb24pKTsKLQotICAgICAgICAgICAgY29tbWEgPSBBU1Q6OnJl
cGxhY2VXaXRoPEFTVDo6Q29tbWFFeHByZXNzaW9uPihkb3RFeHByZXNzaW9uLCBjb2RlTG9jYXRp
b24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbW1hLT5z
ZXRUeXBlKFdURk1vdmUoYWNjZXNzVHlwZSkpOwotICAgICAgICBjb21tYS0+c2V0VHlwZUFubm90
YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgIH0KLQotcHVibGljOgotICAgIHZvaWQgdmlz
aXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG90RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoaW5kZXhFeHByZXNzaW9uKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYg
cmVhZE1vZGlmeVdyaXRlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsKLQotICAg
ICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwotCi0g
ICAgICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24gPSByZWFkTW9kaWZ5V3JpdGUuY29kZUxv
Y2F0aW9uKCk7Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHR5cGUgPSByZWFkTW9k
aWZ5V3JpdGUucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkpKQotICAgICAgICAg
ICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG93bmNhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24+KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSksIGV4cHJlc3Npb25zKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgaGFuZGxlTGVmdEhhbmRTaWRlQmFzZShyZWFkTW9kaWZ5V3Jp
dGUudGFrZUxlZnRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlUmVmZXJlbmNlKCks
IGV4cHJlc3Npb25zKTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBVbmlxdWVSZWY8QVNUOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBuZXdSZWFkTW9kaWZ5V3JpdGUgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oCi0gICAgICAgICAgICAgICAgcmVh
ZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpLCByZWFkTW9kaWZ5V3JpdGUudGFrZUxlZnRWYWx1
ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU9sZFZhbHVlKCksIHJlYWRNb2RpZnlXcml0ZS50YWtl
TmV3VmFsdWUoKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUtPnNldE5ld1ZhbHVl
RXhwcmVzc2lvbihyZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAg
ICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZWFkTW9k
aWZ5V3JpdGUudGFrZVJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9k
aWZ5V3JpdGUtPnNldFR5cGUodHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgbmV3UmVhZE1v
ZGlmeVdyaXRlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlR5cGVBbm5vdGF0aW9uKHJlYWRNb2Rp
ZnlXcml0ZS50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFw
cGVuZChXVEZNb3ZlKG5ld1JlYWRNb2RpZnlXcml0ZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
YXV0byogY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6Q29tbWFFeHByZXNzaW9uPihyZWFk
TW9kaWZ5V3JpdGUsIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpOwotICAgICAg
ICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKHR5cGUpKTsKLSAgICAgICAgY29tbWEtPnNldFR5cGVB
bm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhcmlhYmxlcy5pc0VtcHR5KCkpOwotCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1
bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLQotICAgICAgICBpZiAoIW1fdmFyaWFibGVzLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVt
ZW50cygpLmluc2VydCgwLCAKLSAgICAgICAgICAgICAgICBtYWtlVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLmNv
ZGVMb2NhdGlvbigpLCBXVEZNb3ZlKG1fdmFyaWFibGVzKSkpOwotICAgICAgICB9Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgbV92YXJpYWJsZXM7Ci19
OwotCi12b2lkIHJlc29sdmVQcm9wZXJ0aWVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgLy8g
VGhlIGdvYWwgb2YgdGhpcyBwaGFzZSBpcyB0d28gYWxsb3cgdHdvIHRoaW5nczoKLSAgICAvLyAx
LiBGb3IgcHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb25zLCBtZXRhbCBjb2RlZ2VuIHNob3VsZCBi
ZSBhbGxvd2VkIHRvIGV2YWx1YXRlCi0gICAgLy8gdGhlIGJhc2UsIGFuZCBpZiBpdCdzIGFuIGlu
ZGV4IGV4cHJlc3Npb24sIHRoZSBpbmRleCwgYXMgbWFueSB0aW1lcyBhcyBuZWVkZWQuCi0gICAg
Ly8gU28gdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgaWYgTWV0YWwgZXZhbHVhdGVzIHN1Y2ggdGhp
bmdzLCBlZmZlY3RzIGFyZW4ndCBwZXJmb3JtZWQKLSAgICAvLyBtb3JlIHRoYW4gb25jZS4KLSAg
ICAvLwotICAgIC8vIDIuIEZvciBSZWFkTW9kaWZ5V3JpdGUgZXhwcmVzc2lvbnMsIG1ldGFsIGNv
ZGVnZW4gc2hvdWxkIGJlIGFibGUgdG8gZXZhbHVhdGUgdGhlCi0gICAgLy8gbGVmdFZhbHVlRXhw
cmVzc2lvbiBhcyBtYW55IHRpbWVzIGFzIGl0J2QgbGlrZSB3aXRob3V0IHBlcmZvcm1pbmcgdGhl
IGVmZmVjdHMgb2YKLSAgICAvLyBsZWZ0VmFsdWVFeHByZXNzaW9uIG1vcmUgdGhhbiBvbmNlLgot
ICAgIC8vCi0gICAgLy8gV2UgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2UgaXQncyBjb252ZW5pZW50
IGZvciBtZXRhbCBjb2RlZ2VuIHRvIGJlIGFibGUgdG8gcmVseSBvbgotICAgIC8vIHRoaXMgd2l0
aCB0aGUgd2F5IGl0IHN0cnVjdHVyZXMgdGhlIGdlbmVyYXRlZCBjb2RlLgotICAgIFByb3BlcnR5
UmVzb2x2ZXIgcmVzb2x2ZXI7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICByZXNvbHZlci52aXNpdChmdW5jdGlvbik7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZWRhYTRlOGQ4YjUwNmEzNmFmZjFiMjBhOGUzOGE4
NjM5ODg3ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCByZXNvbHZlUHJv
cGVydGllcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUx
MTY1NzljMzYwNzUzZmJiYmNlOGY4ZGVjNjVkYmNjMjViMWI3MTcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlz
aXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNs
YXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1
YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZWFjaGFibGVGdW5j
dGlvbnMuYWRkKCZmdW5jdGlvbik7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotICAgICAgICBpZiAo
aXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKQot
ICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUo
bV9yZWFjaGFibGVGdW5jdGlvbnMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgSGFzaFNldDxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOwotfTsKLQotdm9pZCBwcnVu
ZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCi17
Ci0gICAgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9uczsK
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gZnVuY3Rpb25E
ZWZpbml0aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpOwotICAg
IGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7Ci0gICAgICAgIGlm
IChmdW5jdGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
KQotICAgICAgICAgICAgcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnZpc2l0KGZ1bmN0aW9uLmdl
dCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9u
LT5lbnRyeVBvaW50VHlwZSgpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9u
cyA9IHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7Ci0g
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG5ld0Z1bmN0aW9u
RGVmaW5pdGlvbnM7Ci0gICAgZm9yIChVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+
JiBlbnRyeSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1
bmN0aW9ucy5jb250YWlucygmZW50cnkuZ2V0KCkpKQotICAgICAgICAgICAgbmV3RnVuY3Rpb25E
ZWZpbml0aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwotICAgIH0KLQotICAgIHByb2dyYW0u
ZnVuY3Rpb25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdGdW5jdGlvbkRlZmluaXRpb25zKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzdjODQ2OTc1ZWI2M2E4MThlNDhmOWY4OTA1YzBhY2MzN2ZkMzZi
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwot
Ci12b2lkIHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMoUHJvZ3JhbSYp
OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2lvbkNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGVlMTI0Njgw
YWJiZmJhZTY1ODI3NGZiOWJjYTYyZjNjYmE4NzdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJz
aW9uQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi0vLyBNYWtlcyBzdXJlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIHJlY3Vy
c2lvbi4KLWNsYXNzIFJlY3Vyc2lvbkNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1w
cml2YXRlOgotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9m
aW5pc2hlZFZpc2l0aW5nLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdGFydGVkVmlzaXRpbmcu
YWRkKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSByZWN1cnNpb24g
aW4gdGhlIGNhbGwgZ3JhcGguIiwgZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnVuY3Rpb25E
ZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkK
LSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0KLSAgICAg
ICAgewotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZpbmlzaGVkVmlzaXRpbmcuYWRk
KCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIGlmIChp
czxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpCi0g
ICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9zdGFydGVkVmlzaXRpbmc7Ci0gICAgSGFzaFNl
dDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fZmluaXNoZWRWaXNpdGluZzsKLX07Ci0KLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2lvbihQcm9ncmFtJiBwcm9ncmFtKQotewot
ICAgIFJlY3Vyc2lvbkNoZWNrZXIgcmVjdXJzaW9uQ2hlY2tlcjsKLSAgICByZWN1cnNpb25DaGVj
a2VyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIHJldHVybiByZWN1cnNpb25DaGVja2Vy
LnJlc3VsdCgpOwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVjdXJzaW9uQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZWN1cnNpb25DaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0
N2FjMjUwZTRiYzU0YjBhYjkxOTE1ZDFlZjIwODU2MzUzZWU2ZjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
UHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJzaW9uKFByb2dyYW0m
KTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5
cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
ZDFjNTA3YWM1NjgwMTNmZTkzMmZjMDVhMmM1MjY4ZjQ5NjllZTczLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotY2xhc3MgUmVjdXJzaXZlVHlwZUNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaFNl
dDxBU1Q6OlR5cGUqPiBtX3N0YXJ0ZWRWaXNpdGluZzsKLSAgICBIYXNoU2V0PEFTVDo6VHlwZSo+
IG1fZmluaXNoZWRWaXNpdGluZzsKLX07Ci0KLSNkZWZpbmUgU1RBUlRfVklTSVRJTkcodCkgXAot
ZG8geyBcCi0gICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5jb250YWlucyh0KSkgXAotICAgICAg
ICByZXR1cm47IFwKLSAgICBhdXRvIHJlc3VsdFN0YXJ0ZWRWaXNpdGluZyA9IG1fc3RhcnRlZFZp
c2l0aW5nLmFkZCh0KTsgXAotICAgIGlmICghcmVzdWx0U3RhcnRlZFZpc2l0aW5nLmlzTmV3RW50
cnkpIHsgXAotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgcmVjdXJzaXZl
IHR5cGVzLiIsICh0KS0+Y29kZUxvY2F0aW9uKCkpKTsgXAotICAgICAgICByZXR1cm47IFwKLSAg
ICB9IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotI2RlZmluZSBFTkRfVklTSVRJTkcodCkgXAotZG8g
eyBcCi0gICAgYXV0byByZXN1bHRGaW5pc2hlZFZpc2l0aW5nID0gbV9maW5pc2hlZFZpc2l0aW5n
LmFkZCh0KTsgXAotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RmluaXNoZWRWaXNpdGluZywgcmVz
dWx0RmluaXNoZWRWaXNpdGluZy5pc05ld0VudHJ5KTsgXAotfSB3aGlsZSAoZmFsc2UpOwotCi12
b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBl
RGVmaW5pdGlvbikKLXsKLSAgICBTVEFSVF9WSVNJVElORygmdHlwZURlZmluaXRpb24pOwotCi0g
ICAgVmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwotCi0gICAgRU5EX1ZJU0lUSU5HKCZ0
eXBlRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0KEFT
VDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICBTVEFS
VF9WSVNJVElORygmc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChz
dHJ1Y3R1cmVEZWZpbml0aW9uKTsKLQotICAgIEVORF9WSVNJVElORygmc3RydWN0dXJlRGVmaW5p
dGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6VHlwZVJl
ZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBTVEFSVF9WSVNJVElORygmdHlwZVJlZmVy
ZW5jZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlw
ZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsK
LSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKSAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MSBTaG91bGRuJ3Qgd2Ug
a25vdyBieSBub3cgd2hldGhlciB0aGUgdHlwZSBoYXMgYmVlbiByZXNvbHZlZCBvciBub3Q/Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsK
LQotICAgIEVORF9WSVNJVElORygmdHlwZVJlZmVyZW5jZSk7Ci19Ci0KLXZvaWQgUmVjdXJzaXZl
VHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpCi17Ci19Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2l2ZVR5cGVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0g
ICAgUmVjdXJzaXZlVHlwZUNoZWNrZXIgcmVjdXJzaXZlVHlwZUNoZWNrZXI7Ci0gICAgZm9yIChh
dXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkpCi0gICAgICAg
IHJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbik7
Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHJvZ3JhbS5zdHJ1Y3R1cmVE
ZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBlQ2hlY2tlci5jaGVja0Vycm9yQW5k
VmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHJlY3Vyc2l2ZVR5cGVDaGVj
a2VyLnJlc3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMWFjMGY1
NzEzMDRiYmVhYTg4MTc1MGQwZGZjMjA2MmU3ZDI0ODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2l2ZVR5cGVzKFByb2dy
YW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVP
dmVybG9hZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWUzNmM0NzI1ODY5NjQ4Mjk4ZTI4NTU2YTAxYzQzNzNjNzZiNDNlNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgot
I2luY2x1ZGUgPGxpbWl0cz4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1zdGF0aWMgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uJiBjYW5kaWRhdGUsIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcykKLXsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9u
Q29zdCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYW5kaWRhdGUucGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnZlcnNpb25Db3N0ICs9IGFyZ3VtZW50VHlw
ZXNbaV0uZ2V0KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JikgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0sIFsm
XShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZSkgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLT5yZXNvbHZhYmxlVHlwZSgpLmNvbnZlcnNpb25Db3N0KCpjYW5kaWRhdGUucGFyYW1ldGVy
cygpW2ldLT50eXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfQotICAgIC8vIFRoZSByZXR1cm4g
dHlwZSBjYW4gbmV2ZXIgYmUgYSBsaXRlcmFsIHR5cGUsIHNvIGl0cyBjb252ZXJzaW9uIGNvc3Qg
aXMgYWx3YXlzIDAuCi0gICAgcmV0dXJuIGNvbnZlcnNpb25Db3N0OwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVHlwZUtpbmQ+Ci1zdGF0aWMgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZEltcGwoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIFR5cGVL
aW5kKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotewotICAgIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+
IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJsZUZ1bmN0aW9uIDogcG9zc2libGVG
dW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCkuZW50cnlQb2lu
dFR5cGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobmFtZVNwYWNlID09
IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgICAgIGlmIChwb3Nz
aWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSAhPSBBU1Q6
Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5ICYmIHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCkubmFt
ZVNwYWNlKCkgIT0gbmFtZVNwYWNlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yQ2FsbChwb3NzaWJsZUZ1bmN0aW9uLmdldCgp
LCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgICAgICBjYW5kaWRhdGVz
LmFwcGVuZChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBt
aW5pbXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCk7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVzKQotICAgICAgICBtaW5p
bXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om1pbihtaW5pbXVtQ29udmVyc2lvbkNvc3QsIGNvbnZl
cnNpb25Db3N0KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRUeXBlcykpOwotCi0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbWlu
aW11bUNvc3RDYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRl
cykgewotICAgICAgICBpZiAoY29udmVyc2lvbkNvc3QoY2FuZGlkYXRlLmdldCgpLCBhcmd1bWVu
dFR5cGVzKSA9PSBtaW5pbXVtQ29udmVyc2lvbkNvc3QpCi0gICAgICAgICAgICBtaW5pbXVtQ29z
dENhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7Ci0gICAgfQotCi0gICAgaWYgKG1pbmltdW1D
b3N0Q2FuZGlkYXRlcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuICZtaW5pbXVtQ29zdENh
bmRpZGF0ZXNbMF0uZ2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rp
b25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3Vt
ZW50VHlwZXMsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2
ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBhcmd1bWVudFR5cGVzLCBz
dGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KG51bGxwdHIpLCBuYW1lU3BhY2UpOwotfQotCi1B
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlw
ZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUsIEFTVDo6
TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2ZUZ1bmN0aW9uT3Zlcmxv
YWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSwg
bmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rp
b25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpVbm5hbWVkVHlwZSog
Y2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICByZXR1cm4g
cmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBhcmd1bWVudFR5
cGVzLCBjYXN0UmV0dXJuVHlwZSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpOYW1lZFR5cGUqIHJl
c29sdmVUeXBlT3ZlcmxvYWRJbXBsKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
TmFtZWRUeXBlPiwgMT4mIHBvc3NpYmxlVHlwZXMsIEFTVDo6VHlwZUFyZ3VtZW50cyYgdHlwZUFy
Z3VtZW50cykKLXsKLSAgICBBU1Q6Ok5hbWVkVHlwZSogcmVzdWx0ID0gbnVsbHB0cjsKLSAgICBm
b3IgKGF1dG8mIHBvc3NpYmxlVHlwZSA6IHBvc3NpYmxlVHlwZXMpIHsKLSAgICAgICAgaWYgKGlu
ZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHBvc3NpYmxlVHlwZSwgdHlwZUFyZ3VtZW50cykpIHsK
LSAgICAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgICAgICByZXN1bHQgPSAmc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihwb3Nz
aWJsZVR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzMjJlODQ0ZGYzZmI4YmFhYTg2OTA4ODhmNzg5
MmExMTY3MzlmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
UmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1
bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYW1lZFR5cGU7Ci0KLX0KLQotQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlv
bnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1l
bnRUeXBlcywgQVNUOjpOYW1lU3BhY2UpOwotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1l
ZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSk7Ci1BU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5
cGVzLCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2UpOwot
QVNUOjpOYW1lZFR5cGUqIHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4mLCBBU1Q6OlR5cGVBcmd1bWVudHMmKTsK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlw
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2VhNDU3YTg1MzIwYjk5ZDk5OWZk
MTk2ZmIwMTY4NzRkNzZkNTI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2
aW5nVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb2x2YWJsZVR5cGU7Ci0KLX0KLQotLy8gVGhl
cmUgYXJlIGNhc2VzIHdoZXJlIHRoZSB0eXBlIG9mIG9uZSBBU1Qgbm9kZSBzaG91bGQgbWF0Y2gg
dGhlIHR5cGUgb2YgYW5vdGhlciBBU1Qgbm9kZS4KLS8vIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMg
dGhlIGNvbW1hIGV4cHJlc3Npb24gLSB0aGUgdHlwZSBvZiB0aGUgY29tbWEgZXhwcmVzc2lvbiBz
aG91bGQgbWF0Y2ggdGhlIHR5cGUgb2YgaXRzIGxhc3QgaXRlbS4KLS8vIElmIHRoaXMgdHlwZSBo
YXBwZW5zIHRvIGJlIGEgcmVzb2x2YWJsZSB0eXBlLCBpdCB3aWxsIGdldCByZXNvbHZlZCBsYXRl
ci4gV2hlbiB0aGF0IGhhcHBlbnMsCi0vLyBib3RoIG9mIHRoZSBBU1Qgbm9kZXMgaGF2ZSB0byBi
ZSByZXNvbHZlZCB0byB0aGUgcmVzdWx0IHR5cGUuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhCi0v
LyByZWZlcmVuY2UgY291bnRlZCB3cmFwcGVyIGFyb3VuZCBhIHJlc29sdmFibGUgdHlwZSBzbyBi
b3RoIGVudHJpZXMgaW4gdGhlIHR5cGUgbWFwIGNhbiBwb2ludAotLy8gdG8gdGhlIHNhbWUgcmVz
b2x2YWJsZSB0eXBlLCBzbyByZXNvbHZpbmcgaXQgb25jZSByZXNvbHZlcyBib3RoIHRoZSBlbnRy
aWVzIGluIHRoZSBtYXAuCi0vLyBUaGlzIGNsYXNzIGNvdWxkIHByb2JhYmx5IGJlIHJlcHJlc2Vu
dGVkIGFzCi0vLyAiY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlJlc29sdmFibGVUeXBlPiwgcHVibGljIFJlZkNvdW50ZWQ8
UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Uge30iCi0vLyBidXQgSSBkaWRuJ3Qgd2FudCB0byBiZSB0
b28gY2xldmVyLgotY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewotcHVibGljOgotICAgIFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlKEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotICAgICAg
ICA6IG1fcmVzb2x2YWJsZVR5cGUoJnJlc29sdmFibGVUeXBlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShjb25zdCBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYp
ID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlJiYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlJiBvcGVyYXRv
cj0oY29uc3QgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlc29sdmFibGVUeXBlUmVmZXJlbmNlJiYpID0g
ZGVsZXRlOwotCi0gICAgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUoKSB7IHJl
dHVybiAqbV9yZXNvbHZhYmxlVHlwZTsgfQotCi1wcml2YXRlOgotICAgIEFTVDo6UmVzb2x2YWJs
ZVR5cGUqIG1fcmVzb2x2YWJsZVR5cGU7Ci19OwotCi0vLyBUaGlzIGlzIGEgdGhpbiB3cmFwcGVy
IGFyb3VuZCBhIFZhcmlhbnQuCi0vLyBJdCBleGlzdHMgc28gd2UgY2FuIG1ha2Ugc3VyZSB0aGF0
IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgotLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggVGhpcyB3cmFw
cGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi1jbGFzcyBSZXNvbHZpbmdUeXBlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZXNvbHZpbmdUeXBlKCkKLSAg
ICAgICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4oKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZShSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdikKLSAg
ICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAgewotICAgIH0KLQotICAgIFJlc29sdmlu
Z1R5cGUoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB2KQotICAgICAgICA6IG1faW5u
ZXIoV1RGTW92ZSh2KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZShjb25zdCBS
ZXNvbHZpbmdUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2aW5nVHlwZShSZXNvbHZpbmdUeXBl
JiYgb3RoZXIpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3ZlKG90aGVyLm1faW5uZXIpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2aW5n
VHlwZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmluZ1R5cGUmIG9wZXJhdG9yPShSZXNvbHZpbmdU
eXBlJiYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2lubmVyID0gV1RGTW92ZShvdGhlci5tX2lu
bmVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEFTVDo6VW5uYW1lZFR5
cGUqIGdldFVubmFtZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxBU1Q6OlVubmFtZWRUeXBlPj4obV9pbm5lcikpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+PihtX2lubmVyKS5wdHIoKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0
b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4gZGVjbHR5cGUoV1RGOjp2
aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4s
IFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+Jj4oKSkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgVmFyaWFudDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4+IG1faW5uZXI7Ci19OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTIzYzExNWUxYzE0YmE5N2Q3NWNkMGExOGZkMTQ4MzFhMTA1Yjk5Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFNj
b3BlZFNldEFkZGVyIHsKLXB1YmxpYzoKLSAgICBTY29wZWRTZXRBZGRlcihIYXNoU2V0PFQ+JiBz
ZXQsIFQmJiBpdGVtKQotICAgICAgICA6IG1fc2V0KHNldCkKLSAgICAgICAgLCBtX2l0ZW0oV1RG
TW92ZShpdGVtKSkKLSAgICB7Ci0gICAgICAgIG1faXNOZXdFbnRyeSA9IHN0YXRpY19jYXN0PGJv
b2w+KG1fc2V0LmFkZChtX2l0ZW0pKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkU2V0QWRkZXIoKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX2lzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fc2V0LnJlbW92ZShtX2l0ZW0pOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgIH0KLQotICAgIGJvb2wgaXNOZXdFbnRy
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdFbnRyeTsgfQotCi1wcml2YXRlOgotICAgIEhhc2hT
ZXQ8VD4mIG1fc2V0OwotICAgIFQgbV9pdGVtOwotICAgIGJvb2wgbV9pc05ld0VudHJ5OwotfTsK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGlj
TWF0Y2hlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMjA4ODJlOTA1NTMx
MjY0YTA3NzM1MWVlNDkwNTAxOWI0MmY4NTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpY01h
dGNoZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
QnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgotI2luY2x1ZGUgIldITFNM
SW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
c3RhdGljIGJvb2wgbWF0Y2hNb2RlKEJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzIGJpbmRpbmdUeXBl
LCBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGUgbW9kZSkKLXsKLSAgICByZXR1cm4gV1RGOjp2
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVmZmVyQmluZGluZykgLT4gYm9vbCB7
Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6QnVm
ZmVyOwotICAgIH0sIFsmXShTYW1wbGVyQmluZGluZykgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVy
biBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6U2FtcGxlcjsKLSAgICB9LCBb
Jl0oVGV4dHVyZUJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6
OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlRleHR1cmU7Ci0gICAgfSwgWyZdKFN0b3JhZ2VCdWZm
ZXJCaW5kaW5nKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJj
ZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OwotICAgIH0pLCBiaW5kaW5nVHlw
ZSk7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4+
IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGVudHJ5UG9pbnRJdGVtcywg
TGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQotewotICAgIEhhc2hNYXA8
QmluZGluZyosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0SGFz
aDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IGl0
ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgYmluZEdyb3VwIDogbGF5b3V0KSB7Ci0gICAgICAg
IGF1dG8gc3BhY2UgPSBiaW5kR3JvdXAubmFtZTsKLSAgICAgICAgZm9yIChhdXRvJiBiaW5kaW5n
IDogYmluZEdyb3VwLmJpbmRpbmdzKSB7Ci0gICAgICAgICAgICBpZiAoIWJpbmRpbmcudmlzaWJp
bGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5UG9pbnRJdGVtcy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBlbnRyeVBvaW50SXRlbXNbaV07
Ci0gICAgICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAg
ICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpSZXNvdXJjZVNlbWFu
dGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGF1dG8mIHJlc291cmNlU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlJlc291cmNlU2Vt
YW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoTW9kZShiaW5kaW5n
LmJpbmRpbmcsIHJlc291cmNlU2VtYW50aWMubW9kZSgpKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGJpbmRpbmcuZXh0ZXJuYWxOYW1lICE9IHJl
c291cmNlU2VtYW50aWMuaW5kZXgoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNwYWNlICE9IHJlc291cmNlU2VtYW50aWMuc3BhY2UoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFkZCgm
YmluZGluZywgaSk7Ci0gICAgICAgICAgICAgICAgaXRlbUluZGljZXMuYWRkKGkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IGVudHJ5
UG9pbnRJdGVtc1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsK
LSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6UmVzb3VyY2VTZW1hbnRp
Yz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghaXRlbUlu
ZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoSW5wdXRzT3V0
cHV0cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiB2ZXJ0ZXhPdXRwdXRzLCBWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBmcmFnbWVudElucHV0cykKLXsKLSAgICBmb3IgKGF1dG8mIGZyYWdtZW50SW5w
dXQgOiBmcmFnbWVudElucHV0cykgewotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCpmcmFnbWVudElucHV0LnNlbWFudGljKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBmcmFnbWVudElucHV0U3RhZ2VJbk91
dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCpmcmFnbWVudElu
cHV0LnNlbWFudGljKTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGF1dG8mIHZlcnRleE91dHB1dCA6IHZlcnRleE91dHB1dHMpIHsKLSAgICAgICAgICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKnZlcnRleE91
dHB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBh
dXRvJiB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdl
SW5PdXRTZW1hbnRpYz4oKnZlcnRleE91dHB1dC5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBpZiAo
ZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpID09IHZlcnRleE91dHB1dFN0
YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXMo
KmZyYWdtZW50SW5wdXQudW5uYW1lZFR5cGUsICp2ZXJ0ZXhPdXRwdXQudW5uYW1lZFR5cGUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJv
b2wgaXNBY2NlcHRhYmxlRm9ybWF0KFZlcnRleEZvcm1hdCB2ZXJ0ZXhGb3JtYXQsIEFTVDo6VW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIHN3
aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMy
QjMyQTMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5m
bG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMjoKLSAg
ICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgp
KTsKLSAgICBjYXNlIFZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzI6Ci0gICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0MlR5cGUoKSk7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUKHZlcnRleEZvcm1hdCA9PSBWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMy
KTsKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXRU
eXBlKCkpOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhB
dHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMoVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVz
LCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRl
Kiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVf
dD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGlj
ZXM7Ci0gICAgZm9yIChhdXRvJiB2ZXJ0ZXhBdHRyaWJ1dGUgOiB2ZXJ0ZXhBdHRyaWJ1dGVzKSB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVydGV4SW5wdXRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gdmVydGV4SW5wdXRzW2ldOwotICAgICAgICAg
ICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAgICAgIGlmICghV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgc3RhZ2VJbk91dFNl
bWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKTsKLSAg
ICAgICAgICAgIGlmIChzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSAhPSB2ZXJ0ZXhBdHRyaWJ1
dGUuc2hhZGVyTG9jYXRpb24pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdCh2ZXJ0ZXhBdHRyaWJ1dGUudmVydGV4Rm9ybWF0LCAq
aXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoJnZlcnRleEF0dHJpYnV0ZSwgaSk7
Ci0gICAgICAgICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlcnRleElucHV0cy5zaXplKCk7ICsraSkgewotICAg
ICAgICBhdXRvJiBpdGVtID0gdmVydGV4SW5wdXRzW2ldOwotICAgICAgICBhdXRvJiBzZW1hbnRp
YyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0
aWMgYm9vbCBpc0FjY2VwdGFibGVGb3JtYXQoVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0LCBB
U1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgSW50cmluc2ljcyYgaW50cmluc2ljcywgYm9v
bCBpc0NvbG9yKQotewotICAgIGlmIChpc0NvbG9yKSB7Ci0gICAgICAgIHN3aXRjaCAodGV4dHVy
ZUZvcm1hdCkgewotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4VW5vcm06Ci0gICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UjhTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZVbm9ybToKLSAg
ICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSMTZGbG9hdDoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMzJGbG9hdDoK
LSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0
VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhVbm9ybToKLSAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6Ukc4U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNlVub3JtOgot
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSRzE2RmxvYXQ6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkczMkZs
b2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
ZmxvYXQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpCNUc2UjVVbm9ybToK
LSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzExQjEwRmxvYXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6QkdS
QThVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjoKLSAg
ICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFNub3JtOgotICAgICAgICBjYXNlIFRleHR1
cmVGb3JtYXQ6OlJHQjEwQTJVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JB
MTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMTZTbm9ybToKLSAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDoKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSR0JBMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1h
dDo6UjMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRy
aW5zaWNzLnVpbnRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIzMlNpbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5pbnRU
eXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJVaW50OgotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludDJUeXBlKCkpOwot
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJTaW50OgotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50MlR5cGUoKSk7Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnQ0VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSR0JBMzJTaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MuaW50NFR5cGUoKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+PiBtYXRjaENvbG9yQXR0
YWNobWVudHMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRPdXRwdXRzLCBWZWN0b3I8
QXR0YWNobWVudERlc2NyaXB0b3I+JiBhdHRhY2htZW50RGVzY3JpcHRvcnMsIEludHJpbnNpY3Mm
IGludHJpbnNpY3MpCi17Ci0gICAgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVf
dD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAg
IGZvciAoYXV0byYgYXR0YWNobWVudERlc2NyaXB0b3IgOiBhdHRhY2htZW50RGVzY3JpcHRvcnMp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFnbWVudE91dHB1dHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBmcmFnbWVudE91dHB1dHNbaV07Ci0g
ICAgICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICAgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1h
bnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvJiBzdGFn
ZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50
aWMpOwotICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpICE9IGF0dGFj
aG1lbnREZXNjcmlwdG9yLm5hbWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdChhdHRhY2htZW50RGVzY3JpcHRvci50ZXh0dXJl
Rm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcywgdHJ1ZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoJmF0dGFj
aG1lbnREZXNjcmlwdG9yLCBpKTsKLSAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChpKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhZ21lbnRPdXRw
dXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBmcmFnbWVudE91dHB1dHNb
aV07Ci0gICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50
aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghaXRlbUluZGljZXMuY29u
dGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoRGVwdGhBdHRhY2htZW50KFZl
Y3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0cywgc3RkOjpvcHRpb25hbDxBdHRh
Y2htZW50RGVzY3JpcHRvcj4mIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBJbnRy
aW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRfaWYo
ZnJhZ21lbnRPdXRwdXRzLmJlZ2luKCksIGZyYWdtZW50T3V0cHV0cy5lbmQoKSwgWyZdKEVudHJ5
UG9pbnRJdGVtJiBpdGVtKSB7Ci0gICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50
aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1h
bnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBhdXRv
JiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oc2VtYW50
aWMpOwotICAgICAgICByZXR1cm4gYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOwotICAgIH0pOwotICAgIGlmIChpdGVy
YXRvciA9PSBmcmFnbWVudE91dHB1dHMuZW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKSB7Ci0gICAgICAgIEFTU0VS
VCghZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3ItPm5hbWUpOwotICAgICAgICByZXR1
cm4gaXNBY2NlcHRhYmxlRm9ybWF0KGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLT50
ZXh0dXJlRm9ybWF0LCAqaXRlcmF0b3ItPnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLCBmYWxzZSk7
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVu
ZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgYm9vbCBkaXN0aW5jdEZy
YWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKQotewotICAgIGF1dG8gdmVy
dGV4RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpO
YW1lU3BhY2UxKTsKLSAgICBpZiAodmVydGV4RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICF2ZXJ0
ZXhGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgYXV0byYgdmVydGV4U2hhZGVyRW50cnlQb2ludCA9IGRvd25jYXN0
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkpOwotICAg
IGF1dG8gdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1z
KHByb2dyYW0uaW50cmluc2ljcygpLCB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBpZiAo
IXZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBhdXRvIHZlcnRleFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXModmVy
dGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5sYXlvdXQsIFNoYWRlclN0YWdlOjpWZXJ0ZXgpOwotICAgIGlmICghdmVydGV4U2hhZGVyUmVz
b3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBtYXRjaGVk
VmVydGV4QXR0cmlidXRlcyA9IG1hdGNoVmVydGV4QXR0cmlidXRlcyh2ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleEF0dHJp
YnV0ZXMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKLSAgICBpZiAoIW1hdGNoZWRWZXJ0ZXhBdHRy
aWJ1dGVzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZnJhZ21lbnRT
aGFkZXJFeGlzdHMpCi0gICAgICAgIHJldHVybiB7eyAmdmVydGV4U2hhZGVyRW50cnlQb2ludCwg
bnVsbHB0ciwgKnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgRW50cnlQb2ludEl0ZW1zKCks
ICp2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PigpLCAq
bWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMsIEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBz
aXplX3Q+KCkgfX07Ci0KLSAgICBhdXRvIGZyYWdtZW50TmFtZVNwYWNlID0gZGlzdGluY3RGcmFn
bWVudFNoYWRlciA/IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyIDogQVNUOjpOYW1lU3BhY2U6
Ok5hbWVTcGFjZTE7Ci0gICAgYXV0byBmcmFnbWVudEZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNv
bnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmZyYWdtZW50RW50
cnlQb2ludE5hbWUsIGZyYWdtZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoZnJhZ21lbnRGdW5jdGlv
bnMuc2l6ZSgpICE9IDEgfHwgIWZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRU
eXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1sw
XS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byYgZnJhZ21l
bnRTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZy
YWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIGZyYWdtZW50U2hhZGVyRW50cnlQ
b2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCBm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlmICghZnJhZ21lbnRTaGFkZXJFbnRyeVBv
aW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBmcmFnbWVu
dFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXMoZnJhZ21lbnRTaGFkZXJFbnRyeVBv
aW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVy
U3RhZ2U6OkZyYWdtZW50KTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXApCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFtYXRjaElucHV0c091dHB1dHMo
dmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBmcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcy0+aW5wdXRzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBh
dXRvIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzID0gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKGZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0b3JzLCBwcm9n
cmFtLmludHJpbnNpY3MoKSk7Ci0gICAgaWYgKCFtYXRjaGVkQ29sb3JBdHRhY2htZW50cykKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIW1hdGNoRGVwdGhBdHRhY2htZW50
KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3IsIHByb2dyYW0uaW50cmluc2ljcygpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsICZmcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnQsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsICpmcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCAqZnJhZ21l
bnRTaGFkZXJSZXNvdXJjZU1hcCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCAqbWF0Y2hlZENv
bG9yQXR0YWNobWVudHMgfX07Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1h
bnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dyYW0sIENvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3ImIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpCi17Ci0gICAgYXV0byBmdW5jdGlv
bnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuZW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAg
ICBpZiAoZnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQ
b2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZ1bmN0aW9uc1swXS5n
ZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byYgZW50cnlQb2lu
dCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5jdGlvbnNbMF0uZ2V0KCkp
OwotICAgIGF1dG8gZW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKHByb2dy
YW0uaW50cmluc2ljcygpLCBlbnRyeVBvaW50KTsKLSAgICBpZiAoIWVudHJ5UG9pbnRJdGVtcykK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBBU1NFUlQoZW50cnlQb2ludEl0ZW1z
LT5vdXRwdXRzLmlzRW1wdHkoKSk7Ci0gICAgYXV0byByZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3Vy
Y2VzKGVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxh
eW91dCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIGlmICghcmVzb3VyY2VNYXApCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHt7ICZlbnRyeVBvaW50LCAqZW50
cnlQb2ludEl0ZW1zLCAqcmVzb3VyY2VNYXAgfX07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU2VtYW50aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFNlbWFudGljTWF0Y2hlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZGJmNmM2NzNkM2RlYjZjN2ZjMWYzMjM5ZWE4YjBmZDBhMzI3ODcyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgotI2luY2x1
ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9n
cmFtOwotCi1zdHJ1Y3QgTWF0Y2hlZFJlbmRlclNlbWFudGljcyB7Ci0gICAgQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24qIHZlcnRleFNoYWRlcjsKLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiog
ZnJhZ21lbnRTaGFkZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1zIHZlcnRleFNoYWRlckVudHJ5UG9p
bnRJdGVtczsKLSAgICBFbnRyeVBvaW50SXRlbXMgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRl
bXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiB2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1h
cDsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IGZyYWdtZW50U2hhZGVyUmVzb3VyY2VN
YXA7Ci0gICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+IG1hdGNoZWRWZXJ0ZXhB
dHRyaWJ1dGVzOwotICAgIEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+IG1h
dGNoZWRDb2xvckF0dGFjaG1lbnRzOwotfTsKLQotc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVy
U2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yJiwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhp
c3RzKTsKLQotc3RydWN0IE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIHsKLSAgICBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiogc2hhZGVyOwotICAgIEVudHJ5UG9pbnRJdGVtcyBlbnRyeVBvaW50SXRl
bXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiByZXNvdXJjZU1hcDsKLX07Ci0KLXN0
ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dy
YW0mLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTg3YzA1NjIyNjdhN2JiYzFkNWI0ZGI5Yjg5MzlmNWRmNzAxYWEwYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxODAwMyArMCwwIEBACi0vLyBUaGlzIHdhcyBhdXRvZ2VuZXJhdGVkIGZyb20gR2VuZXJhdGVf
U3RhbmRhcmRfTGlicmFyeS5qcy4KLS8vIFRoaXMgc3RhbmRhcmQgbGlicmFyeSBoYXMgYmVlbiBw
cm9jZXNzZWQgc3VjaCB0aGF0IGZ1bmN0aW9ucyB3aGljaCBzaGFyZSBhIG5hbWUgYXJlIG5leHQg
dG8gZWFjaCBvdGhlciwKLS8vIGFuZCBiZWZvcmUgZWFjaCBncm91cCBvZiBmdW5jdGlvbnMsIHRo
ZXJlJ3MgYSBwcmVmaXggdGhhdCBoYXMgdG8gYmUgaW4gYSBwYXJ0aWN1bGFyIGZvcm0uCi0vLyBU
aGUgV2ViS2l0IGJ1aWxkIHByb2Nlc3MgZXhwbG9pdHMgdGhpcyBzdHJ1Y3R1cmUgdG8gYnVpbGQg
YSBtYXAgb2Ygd2hpY2ggZnVuY3Rpb24gbmFtZSBjb3JyZXNwb25kcyB0byB3aGljaAotLy8gcGFy
dCBvZiB0aGlzIGZpbGUuIFRoZW4sIHdoZW4gd2UgcGFyc2UgV0hMU0wgcHJvZ3JhbXMsIHdlIGNh
biBvbmx5IHBhcnNlIHRoZSBwaWVjZXMgb2YgdGhpcyBzdGFuZGFyZCBsaWJyYXJ5Ci0vLyB3aGlj
aCBjb3JyZXNwb25kIHRvIGZ1bmN0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSB1c2VkIGluIHRoZSB1
c2VyIHByb2dyYW0uCi0KLW5hdGl2ZSB0eXBlZGVmIHZvaWQ7Ci1uYXRpdmUgdHlwZWRlZiBib29s
OwotbmF0aXZlIHR5cGVkZWYgdWludDsKLW5hdGl2ZSB0eXBlZGVmIGludDsKLW5hdGl2ZSB0eXBl
ZGVmIGZsb2F0OwotbmF0aXZlIHR5cGVkZWYgYXRvbWljX2ludDsKLW5hdGl2ZSB0eXBlZGVmIGF0
b21pY191aW50OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwotdHlwZWRlZiBib29s
MiA9IHZlY3Rvcjxib29sLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKLXR5
cGVkZWYgYm9vbDMgPSB2ZWN0b3I8Ym9vbCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9v
bCwgND47Ci10eXBlZGVmIGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+OwotbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPHVpbnQsIDI+OwotdHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1aW50LCAyPjsKLW5hdGl2
ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKLXR5cGVkZWYgdWludDMgPSB2ZWN0b3I8dWludCwg
Mz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47Ci10eXBlZGVmIHVpbnQ0ID0gdmVj
dG9yPHVpbnQsIDQ+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgMj47Ci10eXBlZGVmIGlu
dDIgPSB2ZWN0b3I8aW50LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDM+OwotdHlw
ZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCA0
PjsKLXR5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQsIDQ+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGZsb2F0LCAyPjsKLXR5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKLW5hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Ci10eXBlZGVmIGZsb2F0MyA9IHZlY3RvcjxmbG9hdCwg
Mz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwotdHlwZWRlZiBmbG9hdDQgPSB2
ZWN0b3I8ZmxvYXQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIsIDI+Owot
dHlwZWRlZiBmbG9hdDJ4MiA9IG1hdHJpeDxmbG9hdCwgMiwgMj47Ci1uYXRpdmUgdHlwZWRlZiBt
YXRyaXg8ZmxvYXQsIDIsIDM+OwotdHlwZWRlZiBmbG9hdDJ4MyA9IG1hdHJpeDxmbG9hdCwgMiwg
Mz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIsIDQ+OwotdHlwZWRlZiBmbG9hdDJ4
NCA9IG1hdHJpeDxmbG9hdCwgMiwgND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDMs
IDI+OwotdHlwZWRlZiBmbG9hdDN4MiA9IG1hdHJpeDxmbG9hdCwgMywgMj47Ci1uYXRpdmUgdHlw
ZWRlZiBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotdHlwZWRlZiBmbG9hdDN4MyA9IG1hdHJpeDxmbG9h
dCwgMywgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDMsIDQ+OwotdHlwZWRlZiBm
bG9hdDN4NCA9IG1hdHJpeDxmbG9hdCwgMywgND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Zmxv
YXQsIDQsIDI+OwotdHlwZWRlZiBmbG9hdDR4MiA9IG1hdHJpeDxmbG9hdCwgNCwgMj47Ci1uYXRp
dmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotdHlwZWRlZiBmbG9hdDR4MyA9IG1hdHJp
eDxmbG9hdCwgNCwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDQ+OwotdHlw
ZWRlZiBmbG9hdDR4NCA9IG1hdHJpeDxmbG9hdCwgNCwgND47Ci0KLW5hdGl2ZSB0eXBlZGVmIG1h
dHJpeDxib29sLCAyLCAyPjsKLXR5cGVkZWYgYm9vbDJ4MiA9IG1hdHJpeDxib29sLCAyLCAyPjsK
LW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCAzPjsKLXR5cGVkZWYgYm9vbDJ4MyA9IG1h
dHJpeDxib29sLCAyLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCA0PjsKLXR5
cGVkZWYgYm9vbDJ4NCA9IG1hdHJpeDxib29sLCAyLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJp
eDxib29sLCAzLCAyPjsKLXR5cGVkZWYgYm9vbDN4MiA9IG1hdHJpeDxib29sLCAzLCAyPjsKLW5h
dGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCAzPjsKLXR5cGVkZWYgYm9vbDN4MyA9IG1hdHJp
eDxib29sLCAzLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCA0PjsKLXR5cGVk
ZWYgYm9vbDN4NCA9IG1hdHJpeDxib29sLCAzLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxi
b29sLCA0LCAyPjsKLXR5cGVkZWYgYm9vbDR4MiA9IG1hdHJpeDxib29sLCA0LCAyPjsKLW5hdGl2
ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0LCAzPjsKLXR5cGVkZWYgYm9vbDR4MyA9IG1hdHJpeDxi
b29sLCA0LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0LCA0PjsKLXR5cGVkZWYg
Ym9vbDR4NCA9IG1hdHJpeDxib29sLCA0LCA0PjsKLQotbmF0aXZlIHR5cGVkZWYgc2FtcGxlcjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUx
RDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDM+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTFEPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGlu
dDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTFEPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdDI+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8Zmxv
YXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQ+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTFEQXJyYXk8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8
dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWludDQ+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5
PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50Mz47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMURBcnJheTxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5
PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0Mj47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUyRDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWludDM+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUyRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludDI+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludDQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxm
bG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMkQ8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQ+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWludDI+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTJEQXJyYXk8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8aW50PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUyREFycmF5PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8aW50
Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUyREFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZs
b2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDM+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1
aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlM0Q8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQ0PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludDI+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTNEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZsb2F0PjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUzRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZsb2F0Mz47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmVDdWJlPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludDI+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8
dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmVDdWJlPGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50Mz47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVD
dWJlPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0Mj47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8
ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aDJEPGZsb2F0PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZURlcHRoQ3ViZTxmbG9hdD47Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByZXZlcnNlYml0cyAqLwot
dWludCByZXZlcnNlYml0cyh1aW50IHgpIHsKLSAgICByZXR1cm4gdWludCgoKHggJiB1aW50KDEg
PDwgMCkpIDw8IDMxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxKSkgPDwgMjkpIHwK
LSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIpKSA8PCAyNykgfAotICAgICAgICAgICAoKHgg
JiB1aW50KDEgPDwgMykpIDw8IDI1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA0KSkg
PDwgMjMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDUpKSA8PCAyMSkgfAotICAgICAg
ICAgICAoKHggJiB1aW50KDEgPDwgNikpIDw8IDE5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQo
MSA8PCA3KSkgPDwgMTcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDgpKSA8PCAxNSkg
fAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgOSkpIDw8IDEzKSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCAxMCkpIDw8IDExKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAx
MSkpIDw8IDkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEyKSkgPDwgNykgfAotICAg
ICAgICAgICAoKHggJiB1aW50KDEgPDwgMTMpKSA8PCA1KSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCAxNCkpIDw8IDMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDE1KSkgPDwg
MSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTYpKSA+PiAxKSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCAxNykpID4+IDMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDE4KSkgPj4gNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTkpKSA+PiA3KSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMCkpID4+IDkpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDIxKSkgPj4gMTEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIyKSkg
Pj4gMTMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIzKSkgPj4gMTUpIHwKLSAgICAg
ICAgICAgKCh4ICYgdWludCgxIDw8IDI0KSkgPj4gMTcpIHwKLSAgICAgICAgICAgKCh4ICYgdWlu
dCgxIDw8IDI1KSkgPj4gMTkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI2KSkgPj4g
MjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI3KSkgPj4gMjMpIHwKLSAgICAgICAg
ICAgKCh4ICYgdWludCgxIDw8IDI4KSkgPj4gMjUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDI5KSkgPj4gMjcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMwKSkgPj4gMjkp
IHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMxKSkgPj4gMzEpKTsKLX0KLXVpbnQyIHJl
dmVyc2ViaXRzKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
cmV2ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIHJldmVyc2ViaXRzKHVpbnQzIHgpIHsKLSAgICB1
aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmV2ZXJzZWJpdHMo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IHJldmVyc2ViaXRzKHVpbnQ0IHgp
IHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2ZXJzZWJpdHMoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmV2
ZXJzZWJpdHMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcmV2ZXJzZWJpdHMoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNvcmRlcmVkICovCi1i
b29sIGlzb3JkZXJlZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuICh4ID09IHgpICYm
ICh5ID09IHkpOwotfQotYm9vbDIgaXNvcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAg
IGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQoeFswXSwgeVswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sMyBpc29yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgYm9vbDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGlzb3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBpc29yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNvcmRlcmVkKHhb
Ml0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc29yZGVyZWQoZmxvYXQ0
IHgsIGZsb2F0NCB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzb3Jk
ZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc29yZGVyZWQoeFsxXSwgeVsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gaXNvcmRlcmVkKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9
IGlzb3JkZXJlZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgdHJhbnNwb3NlICovCi1mbG9hdCB0cmFuc3Bvc2UoZmxvYXQgeCkgewotICAg
IHJldHVybiB4OwotfQotZmxvYXQyeDIgdHJhbnNwb3NlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzFdID0geFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdHJhbnNwb3Nl
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
eFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9
IHhbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0g
PSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIHRyYW5zcG9zZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFsw
XVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IHhb
MF1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4
WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0g
eFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdHJhbnNwb3NlKGZsb2F0
M3gyIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJd
WzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIHRyYW5zcG9zZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsK
LSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJd
OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyB0cmFuc3Bvc2UoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0g
ICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwot
ICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsK
LSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107
Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFd
OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0geFsyXVsz
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdHJhbnNwb3NlKGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0geFszXVswXTsK
LSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCB0cmFuc3Bvc2UoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAg
cmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzNdWzBdOwot
ICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0geFszXVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdHJhbnNwb3NlKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAg
cmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAg
ICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwot
ICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmVzdWx0WzBdWzNdID0geFszXVswXTsK
LSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJlc3VsdFsyXVszXSA9IHhbM11bMl07
Ci0gICAgcmVzdWx0WzNdWzNdID0geFszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZEFkZCAqLwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRBZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50
LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21p
Y19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRl
dmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY191aW50Kiwg
dWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdy
b3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRl
dmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21p
Y191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBzYXR1cmF0ZSAqLwotZmxvYXQgc2F0dXJhdGUoZmxvYXQgeCkg
ewotICAgIHJldHVybiBjbGFtcCh4LCAwLCAxKTsKLX0KLWZsb2F0MiBzYXR1cmF0ZShmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2F0dXJhdGUoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gc2F0dXJhdGUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBzYXR1cmF0ZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2F0dXJhdGUoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBzYXR1cmF0ZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2F0dXJhdGUoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gc2F0dXJh
dGUoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNhdHVyYXRlKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJh
dGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0
dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNhdHVyYXRl
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIHNhdHVyYXRlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJh
dGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIHNhdHVyYXRlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNhdHVyYXRlKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJh
dGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgzIHNhdHVyYXRlKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2F0dXJhdGUo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNhdHVyYXRlKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJh
dGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0
dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
c2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0dXJhdGUoeFsxXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNhdHVyYXRlKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2F0dXJh
dGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0dXJhdGUoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gc2F0dXJhdGUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IHNhdHVyYXRlKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2F0dXJhdGUo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gc2F0dXJhdGUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2F0dXJh
dGUoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc2F0dXJhdGUoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1hZCAqLwotCi1mbG9hdCBt
YWQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewotICAgIHJldHVybiB4ICogeSArIHo7Ci19
Ci1mbG9hdDIgbWFkKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyBtYWQoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMgeikgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsx
XSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYWQoeFsyXSwgeVsy
XSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtYWQoZmxvYXQ0IHgsIGZs
b2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
bWFkKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1hZCh4WzFdLCB5WzFdLCB6
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYWQoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gbWFkKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4MiBtYWQoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxvYXQyeDIgeikgewotICAgIGZsb2F0
MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1hZChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9h
dDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVsw
XSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtYWQoZmxvYXQ0eDIgeCwgZmxvYXQ0
eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4
WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtYWQoeFszXVsw
XSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlb
MF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFd
LCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWFkKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtYWQoZmxvYXQyeDMgeCwgZmxvYXQy
eDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbWFkKGZsb2F0M3gz
IHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4
WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsx
XSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1hZChmbG9hdDR4MyB4LCBm
bG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1hZCh4
WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsx
XSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlb
MV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFd
LCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsxXSwgeVszXVsxXSwgelsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gbWFkKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtYWQoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQg
eikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtYWQoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQg
eikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBd
LCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBtYWQoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWFk
KHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1hZCh4WzJd
WzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
bWFkKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFk
KHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1hZCh4WzNd
WzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwg
eVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYWQoeFszXVsyXSwgeVszXVsyXSwgelszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gbWFkKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1vZGYgKi8KLQotZmxvYXQgbW9kZihmbG9h
dCB4LCB0aHJlYWQgZmxvYXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQgPSB1aW50KHgpOwotICAg
ICppcCA9IHggLSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVybiBmbG9hdChyZXN1bHQpOwotfQot
ZmxvYXQyIG1vZGYoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHkpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgbW9kZihmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4WzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCogeSkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXSA9IG1v
ZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHkpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVsw
XSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHkpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhb
MV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2RmKGZsb2F0NHgyIHgsIHRocmVhZCBm
bG9hdDR4MiogeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0g
bW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYo
eFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHkp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0g
PSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtb2RmKGZsb2F0M3gzIHgs
IHRocmVhZCBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBmbG9hdCBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2Rm
KHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0g
PSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1vZGYoZmxvYXQ0eDMg
eCwgdGhyZWFkIGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIGZsb2F0
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1v
ZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhb
Ml1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNd
WzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9
IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQy
eDQqIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1b
M10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0g
PSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsy
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
M10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
bW9kZihmbG9hdDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBt
b2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4
WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0g
PSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9k
Zih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVszXSA9IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVszXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0IG1vZGYoZmxvYXQgeCwgZGV2aWNl
IGZsb2F0KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAqaXAgPSB4IC0g
ZmxvYXQocmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZsb2F0MiBtb2Rm
KGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYo
ZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgq
eSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1v
ZGYoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM10gPSBtb2RmKHhbM10sICZi
dWZmZXIpOwotICAgICgqeSlbM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IG1vZGYoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYo
eFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHkp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIG1vZGYoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2Rm
KHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCBkZXZpY2UgZmxv
YXQzeDMqIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAg
IHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1v
ZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhb
MV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIGRldmljZSBm
bG9hdDR4MyogeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0g
bW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYo
eFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5KSB7Ci0g
ICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0g
PSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9k
Zih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlb
MF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBtb2RmKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCogeSkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBt
b2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4
WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1b
M10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1vZGYoZmxvYXQ0
eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9
IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2Rm
KHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsy
XSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bM10gPSBt
b2RmKHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBtb2RmKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0
KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAqaXAgPSB4IC0gZmxvYXQo
cmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZsb2F0MiBtb2RmKGZsb2F0
MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgq
eSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbW9kZihm
bG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBtb2RmKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQqIHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM10gPSBtb2Rm
KHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHkp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBi
dWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1vZGYoZmxvYXQ0eDIgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgZmxv
YXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYo
eFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
M11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxvYXQyeDMgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVm
ZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4
WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
Ml0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MyBtb2RmKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgbW9kZihmbG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1v
ZGYoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHkpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9k
Zih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlb
MV1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1vZGYoZmxv
YXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2Rm
KHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsy
XSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBt
b2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVm
ZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtb2RmKGZsb2F0NHg0IHgsIHRo
cmVhZGdyb3VwIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZsb2F0
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1v
ZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhb
Ml1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNd
WzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9
IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bM10gPSBtb2Rm
KHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRNaW4gKi8KLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX2ludCos
IGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0
b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
TWluKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX2ludCosIGludCwg
dGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91
cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRl
dmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9t
aWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVh
ZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGVuZ3RoICovCi1uYXRpdmUgZmxv
YXQgbGVuZ3RoKGZsb2F0KTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxvYXQyKTsKLW5hdGl2ZSBm
bG9hdCBsZW5ndGgoZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxvYXQ0KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLS0gKi8KLXVpbnQgb3BlcmF0b3ItLSh1aW50IHZhbHVl
KSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLWludCBvcGVyYXRvci0tKGludCB2YWx1ZSkg
ewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19Ci1mbG9hdCBvcGVyYXRvci0tKGZsb2F0IHZhbHVl
KSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJh
dG9yPDwgKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I8PChpbnQsIHVpbnQpOwotbmF0aXZlIHVpbnQg
b3BlcmF0b3I8PCh1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGV4cDIgKi8KLWZs
b2F0IGV4cDIoZmxvYXQgeCkgewotICAgIHJldHVybiBleHAoeCAqIGxvZyhmbG9hdCgyKSkpOwot
fQotZmxvYXQyIGV4cDIoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwMih4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIGV4cDIoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwMih4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgZXhwMihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAyKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGV4cDIoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZXhwMih4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZXhwMihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIGV4cDIoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgZXhwMihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgZXhwMihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBleHAyKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBl
eHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGV4cDIoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cDIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhw
Mih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZXhwMihmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAy
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
ZXhwMihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBl
eHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBleHAyKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBleHAyKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4
cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBleHAyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZXhwMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAyKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGV4cDIoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZXhw
Mih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
aXN1bm9yZGVyZWQgKi8KLQotYm9vbCBpc3Vub3JkZXJlZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0g
ICAgcmV0dXJuIGlzbmFuKHgpIHx8IGlzbmFuKHkpOwotfQotYm9vbDIgaXN1bm9yZGVyZWQoZmxv
YXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlz
dW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzdW5vcmRlcmVkKHhbMV0s
IHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc3Vub3JkZXJlZChmbG9hdDMg
eCwgZmxvYXQzIHkpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXN1bm9y
ZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1bm9yZGVyZWQoeFsxXSwgeVsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2w0IGlzdW5vcmRlcmVkKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAg
IGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJlZCh4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBpc3Vub3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc3Vub3JkZXJlZCh4
WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
YXRhbiAqLwotbmF0aXZlIGZsb2F0IGF0YW4oZmxvYXQpOwotZmxvYXQyIGF0YW4oZmxvYXQyIHgp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGF0YW4oeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGF0
YW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGF0YW4o
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhdGFu
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXRhbihmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4oeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gYXRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgYXRh
bihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGF0YW4oZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYXRhbihmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
dGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgYXRhbihm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0
YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBhdGFuKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhdGFuKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRh
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4oeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGF0YW4oZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4o
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbih4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgYXRhbihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbih4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRhbihmbG9hdDN4NCB4KSB7Ci0gICAg
ZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRh
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbih4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBhdGFuKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
YXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGF0YW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbih4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4o
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXRhbih4WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9nICovCi1uYXRpdmUgZmxvYXQgbG9n
KGZsb2F0KTsKLWZsb2F0MiBsb2coZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2coeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2coZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2coeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgbG9nKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBsb2coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGxvZyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBsb2coeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGxvZyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2co
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9n
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
b2coeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGxvZyhmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBsb2coeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxvZyhmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsb2coZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxv
Zyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9n
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZyh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBs
b2coeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxvZyhmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBsb2coeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxvZyhmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2coeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBsb2coZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2co
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxvZyh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxvZyh4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSBsb2coeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIExvYWQgKi8KLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTFEPHVp
bnQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9hZChUZXh0dXJlMURBcnJheTx1aW50
PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1cmUyRDx1aW50PiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQ+LCBpbnQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTNEPHVpbnQ+LCBpbnQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUxRDx1aW50Mj4sIGludCBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMURBcnJheTx1aW50Mj4sIGludDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTJEPHVpbnQyPiwgaW50MiBsb2NhdGlvbik7Ci1u
YXRpdmUgdWludDIgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTNEPHVpbnQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRp
dmUgdWludDMgTG9hZChUZXh0dXJlMUQ8dWludDM+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQzIExvYWQoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50MyBMb2FkKFRleHR1cmUyRDx1aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQz
IExvYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
MyBMb2FkKFRleHR1cmUzRDx1aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IExv
YWQoVGV4dHVyZTFEPHVpbnQ0PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChU
ZXh0dXJlMkQ8dWludDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0
dXJlM0Q8dWludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJlMUQ8
aW50PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJlMURBcnJheTxpbnQ+
LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJlMkQ8aW50PiwgaW50MiBs
b2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTJEQXJyYXk8aW50PiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTNEPGludD4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIGludDIgTG9hZChUZXh0dXJlMUQ8aW50Mj4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MiBMb2FkKFRleHR1cmUxREFycmF5PGludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBp
bnQyIExvYWQoVGV4dHVyZTJEPGludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExv
YWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9h
ZChUZXh0dXJlM0Q8aW50Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0
dXJlMUQ8aW50Mz4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBMb2FkKFRleHR1cmUxREFy
cmF5PGludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTJEPGlu
dDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0dXJlM0Q8aW50Mz4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlMUQ8aW50ND4sIGludCBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUxREFycmF5PGludDQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEPGludDQ+LCBpbnQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIGludDQgTG9hZChUZXh0dXJlM0Q8aW50ND4sIGludDMgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0IExvYWQoVGV4dHVyZTFEPGZsb2F0PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQgTG9hZChUZXh0dXJlMkQ8ZmxvYXQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBM
b2FkKFRleHR1cmUyREFycmF5PGZsb2F0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQg
TG9hZChUZXh0dXJlM0Q8ZmxvYXQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9h
ZChUZXh0dXJlMUQ8ZmxvYXQyPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9hZChU
ZXh0dXJlMURBcnJheTxmbG9hdDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9h
ZChUZXh0dXJlMkQ8ZmxvYXQyPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExv
YWQoVGV4dHVyZTNEPGZsb2F0Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBMb2Fk
KFRleHR1cmUxRDxmbG9hdDM+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBMb2FkKFRl
eHR1cmUxREFycmF5PGZsb2F0Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBMb2Fk
KFRleHR1cmUyRDxmbG9hdDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9h
ZChUZXh0dXJlM0Q8ZmxvYXQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQo
VGV4dHVyZTFEPGZsb2F0ND4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQo
VGV4dHVyZTJEPGZsb2F0ND4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2Fk
KFRleHR1cmUzRDxmbG9hdDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgaW50MyBsb2NhdGlvbik7Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBzaW4gKi8KLW5hdGl2ZSBmbG9hdCBzaW4oZmxvYXQpOwotZmxvYXQyIHNpbihmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2luKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IHNpbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2lu
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzaW4o
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzaW4oZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IHNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgc2luKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzaW4oZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2lu
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgc2luKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
c2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2luKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIHNpbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzaW4o
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBz
aW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW4oeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNp
bih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2lu
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbih4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgc2luKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
c2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc2luKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBzaW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNpbihmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW4oeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2luKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW4oeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHNpbih4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2luY29z
ICovCi12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHksIHRocmVhZCBmbG9hdCog
eikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5LCB0aHJlYWQgZmxvYXQzKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0KiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFk
IGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIHRocmVhZCBmbG9hdDN4MiogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkIGZsb2F0Mngz
KiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkIGZsb2F0M3gzKiB5
LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0
eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwg
dGhyZWFkIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZCBmbG9hdDN4NCogeSwgdGhy
ZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSwgdGhyZWFkIGZs
b2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkIGZsb2F0KiB5LCBkZXZp
Y2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5LCBkZXZpY2UgZmxvYXQyKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSwgZGV2aWNl
IGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCogeSwgZGV2aWNlIGZsb2F0
NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mngy
IHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCBkZXZpY2UgZmxvYXQzeDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5LCBkZXZpY2UgZmxvYXQ0eDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVh
ZCBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZCBm
bG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0NHgzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgZGV2aWNlIGZsb2F0Mng0KiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQz
eDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHks
IGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZCBmbG9h
dCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9
IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5LCB0aHJl
YWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJl
YWQgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVh
ZCBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgdGhy
ZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0
aHJlYWQgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgs
IHRocmVhZCBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4Myog
eSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkIGZsb2F0M3gz
KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVh
ZCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFk
IGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0IHgsIGRldmljZSBmbG9hdCogeSwgdGhyZWFkIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4o
eCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgZGV2aWNlIGZs
b2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQz
IHgsIGRldmljZSBmbG9hdDMqIHksIHRocmVhZCBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIGRl
dmljZSBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQyeDIqIHksIHRocmVh
ZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIGRldmljZSBm
bG9hdDN4MiogeSwgdGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIGRldmljZSBmbG9h
dDR4MiogeSwgdGhyZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQyeDMqIHksIHRocmVhZCBmbG9hdDJ4
MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHksIHRocmVhZCBmbG9hdDN4Myog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0
eDMqIHksIHRocmVhZCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCBkZXZpY2UgZmxvYXQyeDQqIHks
IHRocmVhZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5LCB0aHJlYWQgZmxvYXQzeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWQgZmxvYXQ0eDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIGRldmljZSBmbG9hdCogeikgewotICAg
ICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgs
IGRldmljZSBmbG9hdDIqIHksIGRldmljZSBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCBkZXZpY2UgZmxvYXQzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCBkZXZpY2UgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0Mngy
KiB5LCBkZXZpY2UgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4
LCBkZXZpY2UgZmxvYXQzeDIqIHksIGRldmljZSBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCBk
ZXZpY2UgZmxvYXQ0eDIqIHksIGRldmljZSBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0MngzKiB5LCBkZXZp
Y2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0M3gzKiB5LCBkZXZpY2Ug
ZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgZGV2
aWNlIGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgZGV2aWNlIGZs
b2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCogeSwgZGV2aWNlIGZsb2F0
M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSwgZGV2aWNlIGZsb2F0NHg0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiB5LCB0aHJlYWRncm91cCBm
bG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBz
aW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRocmVhZGdyb3VwIGZsb2F0Miogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHksIHRocmVh
ZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSwgdGhyZWFk
Z3JvdXAgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIGRldmljZSBmbG9hdDN4MiogeSwg
dGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5
LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0MngzKiB5LCB0aHJlYWRncm91cCBmbG9h
dDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHksIHRocmVhZGdyb3VwIGZs
b2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIGRldmlj
ZSBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgZGV2aWNl
IGZsb2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsz
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5LCB0aHJl
YWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZpY2UgZmxvYXQ0eDQqIHksIHRocmVh
ZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQqIHksIHRocmVhZCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0g
Y29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZGdyb3VwIGZsb2F0MiogeSwg
dGhyZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVh
ZGdyb3VwIGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHks
IHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRo
cmVhZGdyb3VwIGZsb2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQy
eDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWRncm91cCBmbG9h
dDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0eDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIHRocmVhZCBmbG9hdDJ4NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWRn
cm91cCBmbG9hdDR4NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIGRldmljZSBmbG9hdCogeikgewotICAgICp5ID0g
c2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVh
ZGdyb3VwIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwgZGV2aWNlIGZsb2F0Myogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCBkZXZpY2UgZmxvYXQ0KiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQyeDIqIHksIGRldmljZSBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCBkZXZpY2UgZmxvYXQzeDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIGRldmljZSBmbG9hdDR4
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIGRldmljZSBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4
LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5LCBk
ZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIGRl
dmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwgZGV2aWNlIGZsb2F0NHg0KiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIHRocmVhZGdyb3Vw
IGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5LCB0aHJlYWRncm91cCBmbG9h
dDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9h
dDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeSwg
dGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4
LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJl
YWRncm91cCBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgz
KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9h
dDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB5LCB0aHJl
YWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVy
bG9ja2VkQ29tcGFyZUV4Y2hhbmdlICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCB0aHJlYWQgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQq
LCBpbnQsIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJl
RXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdWludCwgZGV2aWNlIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50
KiwgaW50LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFy
ZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIHRocmVhZGdyb3VwIHVp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9t
aWNfaW50KiwgaW50LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBpbnQsIGRldmljZSBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0
b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwg
aW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNtb290aHN0ZXAg
Ki8KLWZsb2F0IHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCBmbG9hdCB4KSB7
Ci0gICAgZmxvYXQgdCA9IGNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLCAx
KTsKLSAgICByZXR1cm4gdCAqIHQgKiAoMyAtIDIgKiB0KTsKLX0KLWZsb2F0MiBzbW9vdGhzdGVw
KGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHNtb290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gc21vb3Roc3RlcCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzIHNtb290aHN0ZXAoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMgeikgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc21vb3Roc3RlcCh4WzBdLCB5WzBdLCB6WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBzbW9vdGhzdGVwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJl
c3VsdFsyXSA9IHNtb290aHN0ZXAoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBzbW9vdGhzdGVwKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNtb290aHN0ZXAoeFswXSwgeVsw
XSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3RlcCh4WzFdLCB5WzFdLCB6WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVwKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3Vs
dFszXSA9IHNtb290aHN0ZXAoeFszXSwgeVszXSwgelszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIHNtb290aHN0ZXAoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxvYXQyeDIg
eikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVw
KHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0
ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Ro
c3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9v
dGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBzbW9vdGhzdGVwKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHksIGZsb2F0M3gyIHop
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVw
KHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0
ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Ro
c3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9v
dGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNt
b290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIHNtb290aHN0ZXAoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIg
eikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVw
KHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0
ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Ro
c3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzbW9v
dGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNt
b290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngzIHNtb290aHN0ZXAoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxv
YXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9v
dGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNt
b290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgc21vb3Roc3RlcChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBm
bG9hdDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNt
b290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzbW9vdGhzdGVwKGZsb2F0NHgzIHgsIGZsb2F0
NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0sIHpb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNtb290aHN0ZXAoeFszXVsyXSwgeVszXVsyXSwg
elszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNtb290aHN0ZXAoZmxv
YXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwg
elswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVwKHhbMF1bM10sIHlbMF1b
M10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0ZXAoeFsxXVszXSwgeVsx
XVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNtb290aHN0
ZXAoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBd
LCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1b
MV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0s
IHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Roc3RlcCh4WzJd
WzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVwKHhb
MF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0ZXAo
eFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc21vb3Roc3Rl
cCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgc21vb3Roc3RlcChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5LCBmbG9hdDR4NCB6KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFd
WzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhb
Ml1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNtb290aHN0ZXAo
eFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3Rl
cCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhz
dGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNtb290
aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc21v
b3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBz
bW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gc21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBzbW9vdGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IHNtb290aHN0ZXAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBzbW9vdGhzdGVwKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IHNtb290aHN0ZXAoeFszXVszXSwgeVszXVszXSwgelszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGV4cCAqLwotbmF0aXZlIGZs
b2F0IGV4cChmbG9hdCk7Ci1mbG9hdDIgZXhwKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwKHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZXhwKGZsb2F0MyB4KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZXhwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IGV4cChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBleHAoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZXhwKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBleHAoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIGV4cChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBleHAo
ZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBl
eHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4
cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBl
eHAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGV4cCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZXhwKGZsb2F0
M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGV4cChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gZXhwKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBleHAo
ZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBl
eHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4
cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBl
eHAoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZXhwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cCh4WzJdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZXhwKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBleHAoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBleHAoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZXhwKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbGwgKi8KLWJvb2wgYWxsKGJvb2wgeCkgewotICAg
IHJldHVybiB4OwotfQotYm9vbCBhbGwoYm9vbDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0IHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbGwodWludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYWxsKHVpbnQyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwodWludDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludDQgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wg
YWxsKGludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQzIHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGludDQgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAhPSAw
OwotfQotYm9vbCBhbGwoZmxvYXQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZs
b2F0NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQyeDIgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0M3gy
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHgyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbGwoZmxvYXQyeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAh
PSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQzeDMgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbGwoZmxvYXQ0eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFszXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxv
YXQyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDN4NCB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsw
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzNdICE9IDApOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsx
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bM10gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFszXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwo
Ym9vbDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3gyIHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYWxsKGJvb2w0eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsx
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbGwoYm9vbDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3gz
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsyXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRy
dWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bM107Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDQgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFszXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVszXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVszXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGxvdyAqLwotdWludCBmaXJzdGJpdGxvdyh1aW50
IHgpIHsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMCkpICE9IDApCi0gICAgICAgIHJldHVybiAz
MTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMSkpICE9IDApCi0gICAgICAgIHJldHVybiAzMDsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMikpICE9IDApCi0gICAgICAgIHJldHVybiAyOTsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMykpICE9IDApCi0gICAgICAgIHJldHVybiAyODsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgNCkpICE9IDApCi0gICAgICAgIHJldHVybiAyNzsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgNSkpICE9IDApCi0gICAgICAgIHJldHVybiAyNjsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgNikpICE9IDApCi0gICAgICAgIHJldHVybiAyNTsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgNykpICE9IDApCi0gICAgICAgIHJldHVybiAyNDsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgOCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMzsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
MTApKSAhPSAwKQotICAgICAgICByZXR1cm4gMjE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEx
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMikp
ICE9IDApCi0gICAgICAgIHJldHVybiAxOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTMpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMTg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE0KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDE3OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNSkpICE9IDAp
Ci0gICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTYpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMTU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE3KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDE0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOCkpICE9IDApCi0gICAg
ICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTkpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMTI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIwKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDExOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMSkpICE9IDApCi0gICAgICAgIHJl
dHVybiAxMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjIpKSAhPSAwKQotICAgICAgICByZXR1
cm4gOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjMpKSAhPSAwKQotICAgICAgICByZXR1cm4g
ODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjQpKSAhPSAwKQotICAgICAgICByZXR1cm4gNzsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjUpKSAhPSAwKQotICAgICAgICByZXR1cm4gNjsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMjYpKSAhPSAwKQotICAgICAgICByZXR1cm4gNTsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgMjcpKSAhPSAwKQotICAgICAgICByZXR1cm4gNDsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMjgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMzsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgMjkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMzApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMzEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMzI7Ci19Ci11
aW50IGZpcnN0Yml0bG93KGludCB4KSB7Ci0gICAgcmV0dXJuIGZpcnN0Yml0bG93KHVpbnQoeCkp
OwotfQotdWludDIgZmlyc3RiaXRsb3codWludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJp
dGxvdyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRsb3codWlu
dDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3Ri
aXRsb3codWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJz
dGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJpdGxv
dyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgZmlyc3RiaXRsb3coaW50MiB4
KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci11aW50MyBmaXJzdGJpdGxvdyhpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRs
b3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KGludDQgeCkgewotICAgIHVpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
aXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBmaXJzdGJpdGxvdyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I8PSAqLwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8
PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9KHVpbnQsIHVpbnQpOwotbmF0aXZl
IGJvb2wgb3BlcmF0b3I8PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPD0o
dWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjw9KHVpbnQzLCB1aW50Myk7Ci1u
YXRpdmUgYm9vbDQgb3BlcmF0b3I8PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPD0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8PShpbnQzLCBpbnQzKTsK
LW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPD0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPD0oZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZl
IGJvb2wyeDIgb3BlcmF0b3I8PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIg
b3BlcmF0b3I8PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I8
PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I8PShmbG9hdDJ4
MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I8PShmbG9hdDN4MywgZmxvYXQz
eDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I8PShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0
aXZlIGJvb2wyeDQgb3BlcmF0b3I8PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wz
eDQgb3BlcmF0b3I8PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0
b3I8PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGR4X2ZpbmUg
Ki8KLWZsb2F0IGRkeF9maW5lKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR4KHgpOwotfQotZmxv
YXQyIGRkeF9maW5lKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBkZHhfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfZmluZSh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeF9maW5lKGZsb2F0MyB4KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhfZmluZSh4WzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeF9maW5lKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhfZmluZSh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBkZHhfZmluZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDIgZGR4X2ZpbmUoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhf
ZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgZGR4X2ZpbmUoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR4X2ZpbmUoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfZmlu
ZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhf
ZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR4X2ZpbmUoZmxvYXQyeDMgeCkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMg
ZGR4X2ZpbmUoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmlu
ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhf
ZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4X2ZpbmUoZmxvYXQ0eDMgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfZmluZSh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgZGR4X2ZpbmUoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhf
ZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBk
ZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR4
X2ZpbmUoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmlu
ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhf
ZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHhfZmluZSh4WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4X2ZpbmUoZmxvYXQ0eDQgeCkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfZmluZSh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmlu
ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHhfZmluZSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHhf
ZmluZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgb3BlcmF0b3IgY2FzdCAqLwotbmF0aXZlIG9wZXJhdG9yIHVpbnQoaW50KTsKLW5hdGl2ZSBv
cGVyYXRvciB1aW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQodWludCk7Ci1uYXRpdmUg
b3BlcmF0b3IgaW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1aW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdChpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludChib29sKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sKHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2woaW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sKGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMihib29sLCBib29s
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVy
YXRvciBib29sMyhib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbCwgYm9v
bDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sNChib29sLCBib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9v
bCwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBib29sMik7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbDQoYm9vbDMsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2ws
IGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Mih1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVy
YXRvciB1aW50Myh1aW50LCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50
MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludCwgdWludDIpOwotbmF0aXZlIG9w
ZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVp
bnQ0KHVpbnQyLCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50
MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludCwgdWludCwgdWludDIpOwotbmF0
aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQo
dWludDMsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQzKTsKLW5hdGl2
ZSBvcGVyYXRvciBpbnQyKGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQzKGludCwgaW50
LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDMoaW50MiwgaW50KTsKLW5hdGl2ZSBvcGVyYXRv
ciBpbnQzKGludCwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQsIGludCwgaW50LCBp
bnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MiwgaW50LCBpbnQpOwotbmF0aXZlIG9wZXJh
dG9yIGludDQoaW50LCBpbnQyLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQs
IGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MiwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0
b3IgaW50NChpbnQzLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQzKTsKLW5h
dGl2ZSBvcGVyYXRvciBmbG9hdDIoZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDMoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0Miwg
ZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJh
dG9yIGZsb2F0NChmbG9hdDIsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0
KGZsb2F0LCBmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZs
b2F0LCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDIsIGZsb2F0Mik7Ci1u
YXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZs
b2F0NChmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MihmbG9hdDIsIGZs
b2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDMoZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDN4MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4Myhm
bG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4NChmbG9hdDQs
IGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MihmbG9hdDIsIGZsb2F0
MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgzKGZsb2F0MywgZmxv
YXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDQoZmxvYXQ0LCBm
bG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MihmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDMoZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQy
eDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MyhmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDN4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDR4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgzKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHg0KGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29s
MngyKGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Myhib29sMywgYm9vbDMp
OwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDQoYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRv
ciBib29sM3gyKGJvb2wyLCBib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDMo
Ym9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4NChib29sNCwgYm9v
bDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgyKGJvb2wyLCBib29sMiwgYm9vbDIs
IGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJvb2wzLCBib29sMywgYm9vbDMsIGJv
b2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHg0KGJvb2w0LCBib29sNCwgYm9vbDQsIGJvb2w0
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2wyeDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7
Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4NChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gyKGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDMoYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDN4NChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgyKGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9w
ZXJhdG9yIGJvb2w0eDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4NChi
b29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIGxvYWQgKi8KLW5hdGl2ZSBpbnQgbG9hZChkZXZpY2UgYXRvbWljX2ludCopOwotbmF0aXZl
IHVpbnQgbG9hZChkZXZpY2UgYXRvbWljX3VpbnQqKTsKLW5hdGl2ZSBpbnQgbG9hZCh0aHJlYWRn
cm91cCBhdG9taWNfaW50Kik7Ci1uYXRpdmUgdWludCBsb2FkKHRocmVhZGdyb3VwIGF0b21pY191
aW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3VudF9iaXRzICovCi0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCByc3FydCAqLwotZmxvYXQgcnNxcnQoZmxvYXQgeCkgewotICAgIHJldHVybiAxIC8g
c3FydCh4KTsKLX0KLWZsb2F0MiByc3FydChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcnNxcnQoeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByc3FydChmbG9hdDMgeCkgewotICAg
IGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcnNxcnQoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByc3FydChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcnNxcnQo
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcnNxcnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcnNx
cnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHJzcXJ0KGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJzcXJ0KGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNx
cnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsy
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJzcXJ0KGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNx
cnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIHJzcXJ0KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIHJzcXJ0KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgzIHJzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcnNxcnQoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNx
cnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IHJzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcnNx
cnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNxcnQoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHJzcXJ0KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNx
cnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNxcnQoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcnNxcnQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IHJzcXJ0KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNx
cnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcnNxcnQoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
cnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNxcnQoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gcnNxcnQoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcnNxcnQo
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHNx
cnQgKi8KLWZsb2F0IHNxcnQoZmxvYXQgeCkgewotICAgIHJldHVybiBwb3coeCwgMC41KTsKLX0K
LWZsb2F0MiBzcXJ0KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNxcnQoeFsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBzcXJ0KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNxcnQoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IHNxcnQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc3FydCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBzcXJ0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNxcnQoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIHNxcnQoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBzcXJ0KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIHNxcnQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBz
cXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngzIHNxcnQoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNx
cnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgc3FydChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3Fy
dCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MyBzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
c3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNxcnQo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNxcnQoZmxvYXQyeDQg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNx
cnQoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3Fy
dCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc3FydCh4WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc3FydChmbG9hdDR4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
c3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc3FydCh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBzcXJ0KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHNxcnQo
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFj
b3MgKi8KLW5hdGl2ZSBmbG9hdCBhY29zKGZsb2F0KTsKLWZsb2F0MiBhY29zKGZsb2F0MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhY29zKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhY29z
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhY29zKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWNvcyh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFjb3MoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFjb3MoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhY29zKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGFjb3MoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGFjb3Mo
ZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
Y29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhY29zKGZsb2F0M3gyIHgpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFj
b3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFjb3MoZmxvYXQ0eDIgeCkgewot
ICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNv
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGFjb3MoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGFjb3MoZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
YWNvcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgYWNvcyhmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3Mo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
Y29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhY29zKHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhY29zKGZsb2F0NHgzIHgpIHsK
LSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFj
b3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWNvcyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBhY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhY29zKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFjb3MoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IGFjb3MoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFjb3MoeFsxXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFjb3MoZmxvYXQzeDQgeCkgewotICAgIGZs
b2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3Mo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFjb3MoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDQgYWNvcyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFj
b3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBhY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFjb3MoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhY29zKHhb
Ml1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFjb3MoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPiAqLwotbmF0aXZlIGJvb2wg
b3BlcmF0b3I+KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LCB1aW50KTsK
LW5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPih1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPih1aW50MywgdWludDMp
OwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPih1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9w
ZXJhdG9yPihpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj4oaW50MywgaW50Myk7
Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPihmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+KGZsb2F0MywgZmxv
YXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGJv
b2wyeDIgb3BlcmF0b3I+KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVy
YXRvcj4oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPihmbG9h
dDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I+KGZsb2F0MngzLCBmbG9h
dDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj4oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5h
dGl2ZSBib29sNHgzIG9wZXJhdG9yPihmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGJvb2wy
eDQgb3BlcmF0b3I+KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRv
cj4oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPihmbG9hdDR4
NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3ImICovCi1ib29sIG9w
ZXJhdG9yJihib29sIGEsIGJvb2wgYikgewotICAgIHJldHVybiBhICYmIGI7Ci19Ci1uYXRpdmUg
aW50IG9wZXJhdG9yJihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvciYodWludCwgdWlu
dCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0YW5oICovCi1uYXRpdmUgZmxvYXQgdGFuaChmbG9h
dCk7Ci1mbG9hdDIgdGFuaChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW5oKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgdGFuaChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW5oKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCB0YW5oKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbmgoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gdGFuaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0YW5oKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiB0YW5oKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgdGFuaChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiB0YW5oKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0YW5oKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIHRhbmgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgdGFuaChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuaCh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0
YW5oKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCB0YW5oKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRh
bmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCB0YW5oKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFu
aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbmgoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHRhbmgoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
dGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IHRhbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSB0YW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbmgoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuaCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSB0
YW5oKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBvcGVyYXRvciogKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IqKGludCwgaW50KTsKLW5hdGl2ZSB1
aW50IG9wZXJhdG9yKih1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvciooZmxvYXQs
IGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1
aW50MiBvcGVyYXRvcioodWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKih1aW50
LCB1aW50Mik7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUg
dWludDMgb3BlcmF0b3IqKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcioodWlu
dCwgdWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50NCwgdWludDQpOwotbmF0aXZl
IHVpbnQ0IG9wZXJhdG9yKih1aW50NCwgdWludCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IqKHVp
bnQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQyLCBpbnQyKTsKLW5hdGl2ZSBp
bnQyIG9wZXJhdG9yKihpbnQyLCBpbnQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IqKGludCwgaW50
Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvciooaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVy
YXRvciooaW50MywgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKihpbnQsIGludDMpOwotbmF0
aXZlIGludDQgb3BlcmF0b3IqKGludDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IqKGlu
dDQsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvciooaW50LCBpbnQ0KTsKLW5hdGl2ZSBmbG9h
dDIgb3BlcmF0b3IqKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IqKGZs
b2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0Mik7Ci1u
YXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9w
ZXJhdG9yKihmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IqKGZsb2F0LCBm
bG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZl
IGZsb2F0NCBvcGVyYXRvciooZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9y
KihmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQyeDIsIGZs
b2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQyeDIsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4
MiBvcGVyYXRvciooZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRv
ciooZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvciooZmxvYXQsIGZs
b2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQ0eDIsIGZsb2F0NHgyKTsK
LW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9h
dDR4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRv
ciooZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvciooZmxvYXQy
eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0MngzKTsK
LW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBm
bG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVy
YXRvciooZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciooZmxvYXQ0
eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciooZmxvYXQ0eDMsIGZsb2F0
KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBm
bG9hdDJ4NCBvcGVyYXRvciooZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBv
cGVyYXRvciooZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciooZmxv
YXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQzeDQsIGZsb2F0
M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBv
cGVyYXRvciooZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcioo
ZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0
NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvcyAqLwotbmF0aXZlIGZsb2F0IGNvcyhmbG9h
dCk7Ci1mbG9hdDIgY29zKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zKHhbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgY29zKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGNvcyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGNvcyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29z
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3Mo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29zKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiBjb3MoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBjb3MoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGNvcyhmbG9h
dDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBjb3MoZmxvYXQ0eDIgeCkg
ewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNv
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29z
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBjb3MoZmxvYXQyeDMg
eCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY29zKGZsb2F0M3gzIHgpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgzIGNvcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3Mo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY29zKHhb
M11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBjb3MoZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNv
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29z
KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBjb3MoZmxvYXQzeDQg
eCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Y29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zKHhbMV1bM10p
OwotICAgIHJlc3VsdFsyXVszXSA9IGNvcyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDQgY29zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjb3MoeFszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3MoeFsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gY29zKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBvcGVyYXRvcj09ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2ws
IGJvb2wpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBv
cGVyYXRvcj09KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0oYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBib29s
MyBvcGVyYXRvcj09KGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9PShib29s
NCwgYm9vbDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0odWludDIsIHVpbnQyKTsKLW5hdGl2
ZSBib29sMyBvcGVyYXRvcj09KHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9
PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0oaW50MiwgaW50Mik7Ci1u
YXRpdmUgYm9vbDMgb3BlcmF0b3I9PShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRv
cj09KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0oZmxvYXQyLCBmbG9hdDIp
OwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0
IG9wZXJhdG9yPT0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I9PShm
bG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I9PShmbG9hdDN4Miwg
ZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9PShmbG9hdDR4MiwgZmxvYXQ0eDIp
OwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I9PShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZl
IGJvb2wzeDMgb3BlcmF0b3I9PShmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMg
b3BlcmF0b3I9PShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I9
PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I9PShmbG9hdDN4
NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I9PShmbG9hdDR4NCwgZmxvYXQ0
eDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I9PShib29sMngyLCBib29sMngyKTsKLW5hdGl2
ZSBib29sM3gyIG9wZXJhdG9yPT0oYm9vbDN4MiwgYm9vbDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBv
cGVyYXRvcj09KGJvb2w0eDIsIGJvb2w0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I9PShi
b29sMngzLCBib29sMngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPT0oYm9vbDN4MywgYm9v
bDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj09KGJvb2w0eDMsIGJvb2w0eDMpOwotbmF0
aXZlIGJvb2wyeDQgb3BlcmF0b3I9PShib29sMng0LCBib29sMng0KTsKLW5hdGl2ZSBib29sM3g0
IG9wZXJhdG9yPT0oYm9vbDN4NCwgYm9vbDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj09
KGJvb2w0eDQsIGJvb2w0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I+PiAqLwot
bmF0aXZlIGludCBvcGVyYXRvcj4+KGludCwgdWludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcj4+
KHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmVmbGVjdCAqLwotZmxvYXQgcmVm
bGVjdChmbG9hdCBpLCBmbG9hdCBuKSB7Ci0gICAgcmV0dXJuIGkgLSAyICogbiAqIGRvdChpLCBu
KTsKLX0KLWZsb2F0MiByZWZsZWN0KGZsb2F0MiBpLCBmbG9hdDIgbikgewotICAgIHJldHVybiBp
IC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDMgcmVmbGVjdChmbG9hdDMgaSwgZmxvYXQz
IG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwotfQotZmxvYXQ0IHJlZmxl
Y3QoZmxvYXQ0IGksIGZsb2F0NCBuKSB7Ci0gICAgcmV0dXJuIGkgLSAyICogbiAqIGRvdChpLCBu
KTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGl0ICovCi1mbG9hdDQgbGl0KGZsb2F0IG5f
ZG90X2wsIGZsb2F0IG5fZG90X2gsIGZsb2F0IG0pIHsKLSAgICBmbG9hdCBhbWJpZW50ID0gMTsK
LSAgICBmbG9hdCBkaWZmdXNlID0gbWF4KDAsIG5fZG90X2wpOwotICAgIGZsb2F0IHNwZWN1bGFy
ID0gbl9kb3RfbCA8IDAgfHwgbl9kb3RfaCA8IDAgPyAwIDogbl9kb3RfaCAqIG07Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IGFtYmllbnQ7Ci0gICAgcmVzdWx0LnkgPSBkaWZm
dXNlOwotICAgIHJlc3VsdC56ID0gc3BlY3VsYXI7Ci0gICAgcmVzdWx0LncgPSAxOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2cyICovCi1mbG9hdCBsb2cy
KGZsb2F0IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9nKGZsb2F0KDIpKTsKLX0KLWZsb2F0
MiBsb2cyKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBs
b2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBsb2cyKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxv
ZzIoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzIo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cy
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzIoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGxvZzIoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBs
b2cyKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGxv
ZzIoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cyKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIGxvZzIoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgbG9nMihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBs
b2cyKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMih4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxv
ZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxvZzIoeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxvZzIoZmxvYXQyeDQgeCkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9n
Mih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGxvZzIoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxvZzIoZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cy
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMih4WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMihmbG9hdDR4NCB4KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMih4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxv
ZzIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMih4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBsb2cyKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxvZzIoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG5vcm1hbGl6
ZSAqLwotZmxvYXQgbm9ybWFsaXplKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAvIGxlbmd0aCh4
KTsKLX0KLWZsb2F0MiBub3JtYWxpemUoZmxvYXQyIHgpIHsKLSAgICByZXR1cm4geCAvIGxlbmd0
aCh4KTsKLX0KLWZsb2F0MyBub3JtYWxpemUoZmxvYXQzIHgpIHsKLSAgICByZXR1cm4geCAvIGxl
bmd0aCh4KTsKLX0KLWZsb2F0NCBub3JtYWxpemUoZmxvYXQ0IHgpIHsKLSAgICByZXR1cm4geCAv
IGxlbmd0aCh4KTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGRleHAgKi8KLWZsb2F0IGxk
ZXhwKGZsb2F0IHgsIGZsb2F0IGUpIHsKLSAgICByZXR1cm4geCAqIHBvdygyLCBlKTsKLX0KLWZs
b2F0MiBsZGV4cChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxkZXhwKHhb
MV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbGRleHAoZmxvYXQzIHgs
IGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZGV4cCh4
WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBsZGV4cCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGxkZXhwKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbGRleHAoeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gbGRleHAoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxk
ZXhwKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFsw
XVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxkZXhwKGZsb2F0M3gyIHgsIGZs
b2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRl
eHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAo
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGxkZXhw
KGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRl
eHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwg
eVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxkZXhwKGZsb2F0Mngz
IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gz
IGxkZXhwKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsx
XVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxkZXhwKGZsb2F0NHgzIHgsIGZs
b2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRl
eHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAo
eFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAoeFsy
XVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGRleHAoeFszXVsyXSwgeVszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxkZXhwKGZsb2F0Mng0IHgsIGZs
b2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRl
eHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAo
eFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxkZXhwKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkp
IHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRl
eHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGRleHAo
eFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsxXVszXSwgeVsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGRleHAoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxkZXhwKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRl
eHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAo
eFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAoeFsyXVsyXSwgeVsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGRleHAoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbGRleHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGRleHAoeFsy
XVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbGRleHAoeFszXVszXSwgeVszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFicyAqLwot
dWludCBhYnModWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQgYWJzKGludCB4KSB7Ci0g
ICAgaWYgKHggPCAwKQotICAgICAgICByZXR1cm4gLXg7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9h
dCBhYnMoZmxvYXQgeCkgewotICAgIGlmICh4IDwgMCkKLSAgICAgICAgcmV0dXJuIC14OwotICAg
IHJldHVybiB4OwotfQotdWludDIgYWJzKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgYWJzKHVpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVp
bnQ0IGFicyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFi
cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJz
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50MiBhYnMoaW50MiB4KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotaW50MyBhYnMoaW50MyB4KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgYWJzKGludDQgeCkgewot
ICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIGFicyhmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGFi
cyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhYnMoZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgYWJzKGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhYnMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgYWJzKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFi
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJz
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgYWJzKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gzIGFicyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gYWJzKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhYnMoZmxv
YXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhYnMoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFicyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgYWJzKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFi
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWJz
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDQgYWJzKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
YWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWJzKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBh
YnMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGFicyhmbG9hdDR4
NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBhYnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhYnMoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWJzKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhYnMoeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFicyh4WzNdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByb3VuZCAq
LwotbmF0aXZlIGZsb2F0IHJvdW5kKGZsb2F0KTsKLWZsb2F0MiByb3VuZChmbG9hdDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcm91bmQoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByb3Vu
ZChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcm91bmQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcm91
bmQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByb3VuZChmbG9hdDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcm91bmQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcm91bmQoeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gcm91bmQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngyIHJvdW5kKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJvdW5k
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IHJvdW5kKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
cm91bmQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIHJvdW5kKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJvdW5kKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
cm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJvdW5kKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9h
dDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
cm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcm91bmQo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcm91bmQoeFszXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJvdW5kKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcm91bmQo
eFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHJvdW5kKGZsb2F0M3g0
IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcm91bmQo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcm91bmQoeFsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJvdW5kKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
cm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcm91bmQoeFszXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcm91
bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcm91bmQoeFsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gcm91bmQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIG11bCAqLwotdWludCBtdWwodWludCB4LCB1aW50IHkpIHsKLSAgICBy
ZXR1cm4geCAqIHk7Ci19Ci1pbnQgbXVsKGludCB4LCBpbnQgeSkgewotICAgIHJldHVybiB4ICog
eTsKLX0KLWZsb2F0IG11bChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIHggKiB5Owot
fQotdWludDIgbXVsKHVpbnQgeCwgdWludDIgeSkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotdWludDIgbXVsKHVpbnQyIHgsIHVpbnQgeSkgewotICAgIHVpbnQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICog
eTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbXVsKHVpbnQgeCwgdWludDMgeSkgewot
ICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRb
MV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludDMgbXVsKHVpbnQzIHgsIHVpbnQgeSkgewotICAgIHVpbnQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAg
ICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgbXVs
KHVpbnQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4
ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICog
eVsyXTsKLSAgICByZXN1bHRbM10gPSB4ICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDQgbXVsKHVpbnQ0IHgsIHVpbnQgeSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRb
Ml0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNdICogeTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotaW50MiBtdWwoaW50IHgsIGludDIgeSkgewotICAgIGludDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1pbnQyIG11bChpbnQyIHgsIGludCB5KSB7Ci0gICAgaW50MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGludCB4LCBpbnQzIHkpIHsKLSAgICBp
bnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4
ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50MyBtdWwoaW50MyB4LCBpbnQgeSkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsy
XSA9IHhbMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IG11bChpbnQgeCwgaW50
NCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAg
cmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmVz
dWx0WzNdID0geCAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgbXVsKGludDQg
eCwgaW50IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsK
LSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAg
ICByZXN1bHRbM10gPSB4WzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11
bChmbG9hdCB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0IHgsIGZsb2F0MyB5KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRb
MV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIG11bChmbG9hdDMgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7
Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBtdWwoZmxvYXQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsy
XSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsK
LSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNdICogeTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0IHgsIGZsb2F0MngyIHkpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIG11bChmbG9hdDJ4MiB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVsw
XSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJl
c3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBtdWwoZmxvYXQgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVs
KGZsb2F0M3gyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsx
XSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0geFsyXVsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11bChmbG9h
dCB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFszXVswXSA9IHggKiB5WzNdWzBd
OwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHgg
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFsz
XVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwo
ZmxvYXQ0eDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAg
ICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBd
ICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0g
PSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1
bHRbM11bMV0gPSB4WzNdWzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
bXVsKGZsb2F0IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFd
WzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChm
bG9hdDJ4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAg
IHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0g
KiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3VsdFsxXVsyXSA9
IHhbMV1bMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQg
eCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1
bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICog
eVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0M3gzIHgsIGZsb2F0IHkpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAq
IHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
eFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVzdWx0
WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIG11bChmbG9hdCB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFszXVsw
XSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFd
OwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHgg
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHggKiB5WzNdWzJdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQgeSkgewot
ICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBd
ICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1
bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzNdWzFdICogeTsK
LSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFd
WzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsKLSAgICByZXN1bHRbM11b
Ml0gPSB4WzNdWzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZs
b2F0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0g
eCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAqIHlbMF1bM107Ci0gICAgcmVzdWx0
WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11
bChmbG9hdDJ4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5Owot
ICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1b
MV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3VsdFsxXVsy
XSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFswXVszXSA9IHhbMF1bM10gKiB5OwotICAgIHJl
c3VsdFsxXVszXSA9IHhbMV1bM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBtdWwoZmxvYXQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsy
XVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10g
PSB4ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4ICogeVsyXVszXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0IHkpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVz
dWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsx
XVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAg
cmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzNdID0geFswXVszXSAq
IHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
eFsyXVszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdCB4
LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFszXVswXSA9IHggKiB5WzNdWzBdOwot
ICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsx
XSA9IHggKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJl
c3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5WzJdWzJd
OwotICAgIHJlc3VsdFszXVsyXSA9IHggKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IHgg
KiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNdOwotICAgIHJlc3VsdFsy
XVszXSA9IHggKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVszXSA9IHggKiB5WzNdWzNdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQgeSkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBd
ICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1
bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzNdWzFdICogeTsK
LSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFd
WzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsKLSAgICByZXN1bHRbM11b
Ml0gPSB4WzNdWzJdICogeTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzBdWzNdICogeTsKLSAgICBy
ZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAgICByZXN1bHRbMl1bM10gPSB4WzJdWzNdICog
eTsKLSAgICByZXN1bHRbM11bM10gPSB4WzNdWzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotdWludCBtdWwodWludDIgeCwgdWludDIgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19
Ci11aW50IG11bCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0K
LXVpbnQgbXVsKHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQot
aW50IG11bChpbnQyIHgsIGludDIgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1pbnQg
bXVsKGludDMgeCwgaW50MyB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWludCBtdWwo
aW50NCB4LCBpbnQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotZmxvYXQgbXVsKGZs
b2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwo
ZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0IG11
bChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotZmxvYXQy
IG11bChmbG9hdDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDIgeSkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0g
eFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJl
c3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3Vs
dFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11
bChmbG9hdDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9
IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBt
dWwoZmxvYXQzeDIgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFsw
XSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0g
ICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAg
cmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICog
eVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDIgeCwgZmxvYXQ0
eDIgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1
bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAg
IHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXSAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsK
LSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1b
MF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBdICogeVszXTsKLSAgICByZXN1bHRb
MV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAg
IHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyIG11bChmbG9hdDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0g
KiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MngzIHgs
IGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAg
IHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAq
IHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlb
MF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IDA7
Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFd
WzJdICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDMgeCwg
ZmxvYXQzeDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAg
ICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV0g
PSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0g
eFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXSAqIHlbMl1bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQzeDMgeCwgZmxvYXQzIHkp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAg
ICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICBy
ZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5
WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMl0gPSAw
OwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsx
XVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9
IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1
bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM10gPSAwOwot
ICAgIHJlc3VsdFszXSArPSB4WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAq
IHlbM11bMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl0gKiB5WzNdWzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICog
eVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9
IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBdICogeVszXTsKLSAgICBy
ZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1
bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJd
OwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICByZXN1bHRbMl0gPSAwOwot
ICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsy
XSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAgIHJlc3VsdFsy
XSArPSB4WzNdWzJdICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChm
bG9hdDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9
IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1
bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFsz
XSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQyeDQg
eCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBd
ICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICog
eVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0g
MDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhb
MV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF1b
M10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICogeVsxXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSAr
PSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdID0gMDsK
LSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml0gKz0geFszXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwo
ZmxvYXQzeDQgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSAr
PSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAg
cmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsy
XTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsK
LSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1b
Ml0gKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF1bM10g
KiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICogeVsxXTsKLSAgICByZXN1bHRbM10g
Kz0geFsyXVszXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxv
YXQ0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4
WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVz
dWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0g
Kz0geFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM10gKiB5WzJdWzNdOwotICAg
IHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBdOwotICAgIHJl
c3VsdFszXSArPSB4WzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM10gKz0geFsyXSAqIHlbM11b
Ml07Ci0gICAgcmVzdWx0WzNdICs9IHhbM10gKiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsK
LSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1b
MF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBdICogeVszXTsKLSAgICByZXN1bHRb
MV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAg
IHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJl
c3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlb
MV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAgIHJlc3VsdFsyXSArPSB4
WzNdWzJdICogeVszXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBd
WzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXVszXSAqIHlbMV07Ci0gICAgcmVzdWx0
WzNdICs9IHhbMl1bM10gKiB5WzJdOwotICAgIHJlc3VsdFszXSArPSB4WzNdWzNdICogeVszXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0MngyIHgsIGZsb2F0Mngy
IHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsx
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0MngyIHgsIGZsb2F0
NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBd
WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFsw
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhb
MF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0Mngz
IHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1b
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11bChmbG9hdDN4MiB4LCBmbG9h
dDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0g
KiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICBy
ZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsx
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVsw
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJd
WzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDR4MiB4LCBmbG9hdDN4NCB5
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJl
c3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJd
WzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
M11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0
NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsw
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAw
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
MF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5
WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1
bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9
IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzNdWzBdICogeVszXVsz
XTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNd
WzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsx
XVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMV0g
PSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0g
KiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFdICogeVszXVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0MngyIHkpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsy
XSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdDJ4
MyB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1b
MF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5
WzJdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1b
MV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsx
XVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsw
XVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQ0eDIg
eSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsK
LSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzFd
ID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsx
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNd
WzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICog
eVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0M3gzIHgs
IGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBd
WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0g
PSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
MF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4
WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsx
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1b
MV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1b
MV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFd
WzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJd
WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSAr
PSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQzeDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsx
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsy
XVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
M11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICBy
ZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhb
Ml1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVz
dWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0g
ICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSAr
PSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVs
KGZsb2F0NHgzIHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsz
XVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJd
ID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlb
MV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdDR4MyB4LCBm
bG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3Vs
dFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNd
OwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11b
MF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJl
c3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBd
WzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
M11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJd
ICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBd
ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVsw
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAw
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11b
MF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5
WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1
bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVsz
XTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNd
WzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJl
c3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsx
XVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwot
ICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMl0g
PSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJd
ICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsx
XVszXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4
WzNdWzJdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsy
XSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlb
M11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3Vs
dFszXVsyXSArPSB4WzNdWzJdICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVszXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3Vs
dFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsy
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0g
eFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJd
WzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSAr
PSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
M11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICBy
ZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4
WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlb
M11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3Vs
dFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAw
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
M10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1
bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1b
M10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVszXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9
IHhbMF1bM10gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzFdWzNdICogeVszXVsx
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0
MngzIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsK
LSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVsw
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1b
MV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0g
MDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBd
WzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsw
XVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwot
ICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bM10g
PSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhb
MF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzNd
ID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzJdWzNd
ICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0M3g0
IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVsw
XSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFd
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJd
WzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFsw
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsy
XVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRb
Ml1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
Ml1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJd
ICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICogeVsz
XVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0
WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4
WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVsz
XSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bM10gKz0g
eFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsKLSAgICByZXN1bHRbM11b
M10gKz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMV1bM10gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzJdWzNdICogeVszXVsyXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0Mng0IHkpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9
IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBd
WzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJd
WzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0g
ICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAq
IHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsw
XVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsK
LSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0
WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4
WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFszXVszXSAqIHlbMV1bM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdDR4NCB4LCBmbG9hdDN4
NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVsw
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5
WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1b
MV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFsw
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsy
XVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
MF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzJd
ICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzBdWzNdICs9IHhbM11bM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsz
XSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAgIHJlc3Vs
dFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bM10gKz0g
eFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbM11bM10gKiB5WzJdWzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQ0
eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1b
MF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1b
MF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAg
ICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICog
eVsyXVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBd
WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSAr
PSB4WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
Ml1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsK
LSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0
WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFd
ICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsy
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMl0gPSAw
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5
WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAgICByZXN1
bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9
IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzNdWzJdICogeVszXVsz
XTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNd
WzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSAr
PSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzNdWzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJl
c3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsx
XVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXVszXSArPSB4WzNdWzNdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bM10g
PSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMl1bM10g
KiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzNdWzNdICogeVszXVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmFkaWFucyAqLwotZmxvYXQg
cmFkaWFucyhmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggKiAzLjE0MTU5IC8gMTgwOwotfQotZmxv
YXQyIHJhZGlhbnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHJhZGlhbnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJhZGlhbnMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
cmFkaWFucyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByYWRpYW5zKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgcmFkaWFucyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFucyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByYWRp
YW5zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJhZGlhbnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gcmFkaWFucyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcmFkaWFu
cyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJhZGlh
bnMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgcmFkaWFucyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcmFk
aWFucyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyByYWRpYW5zKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJhZGlhbnMoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByYWRpYW5zKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gcmFkaWFucyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
cmFkaWFucyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcmFkaWFucyhmbG9hdDN4NCB4
KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSByYWRpYW5zKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCByYWRpYW5zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByYWRpYW5zKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRpYW5zKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMoeFszXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByYWRpYW5zKHhb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJhZGlhbnMoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gcmFkaWFucyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgY2VpbCAqLwotbmF0aXZlIGZsb2F0IGNlaWwoZmxvYXQpOwotZmxvYXQy
IGNlaWwoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNl
aWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGNlaWwoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgY2Vp
bChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY2VpbCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWlsKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNlaWwo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY2VpbCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgY2VpbChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGNl
aWwoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgY2Vp
bChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNlaWwoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDMgY2VpbChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBjZWlsKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGNl
aWwoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjZWlsKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2Vp
bCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY2VpbCh4WzNdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgY2VpbChmbG9hdDJ4NCB4KSB7Ci0g
ICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWls
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
Y2VpbCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgY2VpbChmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBj
ZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjZWlsKHhbMl1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjZWlsKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9h
dDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjZWlsKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY2Vp
bCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjZWlsKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGNlaWwoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gY2VpbCh4WzNdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXNpbiAqLwot
bmF0aXZlIGZsb2F0IGFzaW4oZmxvYXQpOwotZmxvYXQyIGFzaW4oZmxvYXQyIHgpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gYXNpbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGFzaW4oZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW4oeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2luKHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNpbihmbG9hdDQgeCkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
c2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW4oeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
YXNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgYXNpbihmbG9hdDJ4
MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFzaW4oZmxvYXQzeDIgeCkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYXNpbihmbG9hdDR4MiB4KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXNpbih4
WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgYXNpbihmbG9hdDJ4MyB4
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhc2luKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGFzaW4oZmxvYXQ0eDMgeCkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFzaW4o
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gYXNpbih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDQgYXNpbihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFz
aW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXNpbihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNp
bih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4NCBhc2luKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
YXNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFzaW4o
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBhc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFzaW4oeFsyXVszXSk7
Ci0gICAgcmVzdWx0WzNdWzNdID0gYXNpbih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXN1aW50ICovCi11aW50IGFzdWludChpbnQgeCkgewot
ICAgIHJldHVybiB1aW50KHgpOwotfQotdWludDIgYXN1aW50KGludDIgeCkgewotICAgIHVpbnQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
YXN1aW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBhc3VpbnQoaW50MyB4
KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhc3VpbnQoaW50NCB4KSB7Ci0gICAgdWlu
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludCBhc3VpbnQo
dWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50MiBhc3VpbnQodWludDIgeCkgewotICAg
IHJldHVybiB4OwotfQotdWludDMgYXN1aW50KHVpbnQzIHgpIHsKLSAgICByZXR1cm4geDsKLX0K
LXVpbnQ0IGFzdWludCh1aW50NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1uYXRpdmUgdWludCBh
c3VpbnQoZmxvYXQpOwotdWludDIgYXN1aW50KGZsb2F0MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQo
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGFzdWludChmbG9hdDMgeCkgewot
ICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgYXN1aW50KGZsb2F0NCB4KSB7Ci0gICAgdWludDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
c3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgcG93ICovCi1uYXRpdmUgZmxvYXQgcG93KGZsb2F0LCBmbG9hdCk7Ci1mbG9hdDIgcG93
KGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gcG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHBvdyhmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcG93KHhbMl0sIHlb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcG93KGZsb2F0NCB4LCBmbG9hdDQg
eSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcG93KHhbMF0sIHlbMF0p
OwotICAgIHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBwb3co
eFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcG93KHhbM10sIHlbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBwb3coZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3co
eFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHBvdyhm
bG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3co
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBwb3co
ZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBv
dyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBwb3coZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewot
ICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBw
b3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcG93KGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwg
eVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHBvdyhmbG9hdDR4MyB4
LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJd
LCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBwb3coZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0
Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcG93KHhbMV1b
M10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBwb3coZmxvYXQz
eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJd
WzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBwb3coeFsw
XVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcG93KHhbMV1bM10sIHlbMV1bM10p
OwotICAgIHJlc3VsdFsyXVszXSA9IHBvdyh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgcG93KGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcG93KHhb
M11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHBvdyh4
WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBwb3co
eFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBwb3coeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcG93
KHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCB0YW4gKi8KLW5hdGl2ZSBmbG9hdCB0YW4oZmxvYXQpOwotZmxvYXQyIHRhbihmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IHRhbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFu
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0YW4o
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0YW4oZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSB0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IHRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgdGFuKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0YW4oZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFu
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
dGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdGFuKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIHRhbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyB0YW4o
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0
YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW4oeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRh
bih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFu
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRhbih4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgdGFuKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
dGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSB0YW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHRhbihmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW4oeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW4oeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHRhbih4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZm1hICov
Ci1mbG9hdCBmbWEoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewotICAgIHJldHVybiB4ICog
eSArIHo7Ci19Ci1mbG9hdDIgZm1hKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtYSh4WzBdLCB5WzBdLCB6WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBmbWEoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMgeikgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbWEo
eFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBmbWEoZmxv
YXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtYSh4WzFd
LCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbWEoeFsyXSwgeVsyXSwgelsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gZm1hKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBmbWEoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxvYXQyeDIgeikgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVsw
XVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZtYShmbG9hdDN4MiB4LCBmbG9hdDN4
MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
bWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhb
Ml1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0s
IHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmbWEoZmxvYXQ0eDIg
eCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBm
bWEoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhb
MF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFd
LCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsy
XVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1hKHhbM11bMV0sIHlbM11bMV0s
IHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmbWEoZmxvYXQyeDMg
eCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
bWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZm1h
KGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBm
bWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsy
XVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZtYShmbG9h
dDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
bWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhb
MV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFd
LCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbWEoeFszXVsxXSwgeVsz
XVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0s
IHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1hKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbWEoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSwg
ZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0s
IHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbWEoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwg
ZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBd
LCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVsw
XVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0s
IHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGZtYSh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgZm1hKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0s
IHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5
WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbWEoeFszXVsyXSwgeVszXVsy
XSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhbMF1bM10sIHlbMF1bM10sIHpb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gZm1hKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZXRlcm1pbmFudCAqLwotZmxv
YXQgZGV0ZXJtaW5hbnQoZmxvYXQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQgZGV0ZXJt
aW5hbnQoZmxvYXQyeDIgeCkgewotICAgIHJldHVybiB4WzBdWzBdICogeFsxXVsxXSAtIHhbMV1b
MF0gKiB4WzBdWzFdOwotfQotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQzeDMgeCkgewotICAgIHJl
dHVybiB4WzBdWzBdICogeFsxXVsxXSAqIHhbMl1bMl0gKwotICAgICAgICAgICB4WzFdWzBdICog
eFsyXVsxXSAqIHhbMF1bMl0gKwotICAgICAgICAgICB4WzJdWzBdICogeFswXVsxXSAqIHhbMV1b
Ml0gLQotICAgICAgICAgICB4WzBdWzJdICogeFsxXVsxXSAqIHhbMl1bMF0gLQotICAgICAgICAg
ICB4WzFdWzJdICogeFsyXVsxXSAqIHhbMF1bMF0gLQotICAgICAgICAgICB4WzJdWzJdICogeFsw
XVsxXSAqIHhbMV1bMF07Ci19Ci1mbG9hdCBkZXRlcm1pbmFudChmbG9hdDR4NCB4KSB7Ci0gICAg
ZmxvYXQgcmVzdWx0OwotICAgIGZsb2F0M3gzIG1pbm9yOwotICAgIG1pbm9yWzBdWzBdID0geFsx
XVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMl1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4WzNd
WzFdOwotICAgIG1pbm9yWzBdWzFdID0geFsxXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhbMl1b
Ml07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFsxXVsz
XTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMl1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzNdWzNd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCArIHhbMF1bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7Ci0g
ICAgbWlub3JbMF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsyXVsxXTsKLSAg
ICBtaW5vclsyXVswXSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBdWzJdOwotICAg
IG1pbm9yWzFdWzFdID0geFsyXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07Ci0gICAg
bWlub3JbMF1bMl0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsyXVszXTsKLSAgICBt
aW5vclsyXVsyXSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IC0geFsxXVswXSAqIGRl
dGVybWluYW50KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAgbWlub3Jb
MV1bMF0gPSB4WzFdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBtaW5vclsw
XVsxXSA9IHhbMF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzFdWzJdOwotICAgIG1pbm9yWzJd
WzFdID0geFszXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlub3JbMV1b
Ml0gPSB4WzFdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgKyB4WzJdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBdWzBdID0g
eFswXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4
WzJdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhb
MV1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzJdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFsw
XVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzJd
WzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAtIHhbM11bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZsb29yICovCi1u
YXRpdmUgZmxvYXQgZmxvb3IoZmxvYXQpOwotZmxvYXQyIGZsb29yKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9vcih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZsb29yKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9vcih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbG9vcih4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZsb29yKGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9vcih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbG9vcih4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBmbG9vcih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIg
Zmxvb3IoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
bG9vcih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZmxvb3IoZmxv
YXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9v
cih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZmxv
b3IoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9v
cih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgZmxvb3IoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9v
cih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZmxvb3IoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9v
cih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZmxvb3IoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbG9v
cih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbG9vcih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgZmxvb3IoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9v
cih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbG9vcih4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZmxvb3IoZmxvYXQzeDQgeCkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9v
cih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbG9vcih4WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZmxvb3IoZmxvYXQ0eDQgeCkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9v
cih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBm
bG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbG9vcih4WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbG9vcih4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbG9vcih4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBmbG9vcih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgY3Jvc3MgKi8KLWZsb2F0MyBjcm9zcyhmbG9hdDMgdSwgZmxvYXQzIHYpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gdS55ICogdi56IC0gdS56ICogdi55
OwotICAgIHJlc3VsdC55ID0gdS56ICogdi54IC0gdS54ICogdi56OwotICAgIHJlc3VsdC56ID0g
dS54ICogdi55IC0gdS55ICogdi54OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBpc2Zpbml0ZSAqLwotbmF0aXZlIGJvb2wgaXNmaW5pdGUoZmxvYXQpOwotYm9v
bDIgaXNmaW5pdGUoZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXNmaW5pdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzZmluaXRlKGZsb2F0MyB4KSB7Ci0gICAgYm9vbDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGlzZmluaXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzZmluaXRlKHhbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc2Zpbml0ZShmbG9hdDQgeCkgewotICAgIGJvb2w0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zpbml0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBp
c2Zpbml0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc2Zpbml0ZSh4WzJdKTsKLSAgICByZXN1
bHRbM10gPSBpc2Zpbml0ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRPciAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihk
ZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwg
ZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9y
KGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfaW50Kiwg
aW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3Vw
IGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRv
bWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBh
dGFuMiAqLwotbmF0aXZlIGZsb2F0IGF0YW4yKGZsb2F0LCBmbG9hdCk7Ci1mbG9hdDIgYXRhbjIo
ZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuMih4WzFdLCB5WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGF0YW4yKGZsb2F0MyB4LCBmbG9hdDMgeSkg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbjIoeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXRh
bjIoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhdGFuMihmbG9h
dDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGF0
YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4yKHhbMV0sIHlbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGF0YW4yKHhb
M10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhdGFuMihmbG9hdDJ4
MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhb
MV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhdGFuMihmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7
Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4y
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBhdGFuMihmbG9hdDR4MiB4
LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0
YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhdGFuMihmbG9hdDJ4MyB4LCBmbG9hdDJ4
MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1b
Ml0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhdGFuMihmbG9h
dDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4y
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhb
MF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhdGFuMihmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4y
KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhb
MV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhdGFuMihmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4y
KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBhdGFuMihmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0
YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4y
KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhbMF1bM10sIHlb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGF0YW4yKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBhdGFuMihmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0
YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4y
KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGF0YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4yKHhbMl1bM10sIHlbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IGF0YW4yKHhbM11bM10sIHlbM11bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBEZXZpY2VNZW1vcnlCYXJyaWVy
V2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZvaWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91
cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGZtb2QgKi8KLQotZmxvYXQgZm1vZChmbG9h
dCB4LCBmbG9hdCB5KSB7Ci0gICAgdWludCB3aG9sZSA9IHVpbnQoeCAvIHkpOwotICAgIGZsb2F0
IG11bHRpcGxlID0gZmxvYXQod2hvbGUpICogeTsKLSAgICByZXR1cm4geCAtIG11bHRpcGxlOwot
fQotZmxvYXQyIGZtb2QoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtb2Qo
eFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmbW9kKGZsb2F0MyB4
LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1vZCh4
WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBm
bW9kKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gZm1vZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZm1v
ZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZm1vZChmbG9h
dDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZtb2QoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZm1vZChmbG9hdDR4MiB4LCBmbG9hdDR4
MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1v
ZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgZm1vZChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsx
XVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbW9kKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Zm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtb2QoeFsy
XVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZtb2QoZmxv
YXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2Qo
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
Zm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2QoeFszXVsxXSwgeVszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtb2QoeFsy
XVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1vZCh4WzNdWzJdLCB5WzNdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZm1vZChmbG9hdDJ4NCB4LCBmbG9h
dDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2Qo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2QoeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgZm1vZChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2Qo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0s
IHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2QoeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBmbW9kKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4NCBmbW9kKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2Qo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1vZCh4WzNdWzBdLCB5WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
Zm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbW9kKHhbM11bMV0s
IHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZtb2QoeFsz
XVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1vZCh4WzBdWzNdLCB5WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGZtb2QoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZm1v
ZCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgb3BlcmF0b3ItICovCi1uYXRpdmUgaW50IG9wZXJhdG9yLShpbnQsIGludCk7Ci1u
YXRpdmUgdWludCBvcGVyYXRvci0odWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3It
KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgaW50IG9wZXJhdG9yLShpbnQpOwotbmF0aXZlIGZsb2F0
IG9wZXJhdG9yLShmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQyLCB1aW50Mik7
Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVy
YXRvci0odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50MywgdWludDMp
OwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3Bl
cmF0b3ItKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludDQsIHVpbnQ0
KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9w
ZXJhdG9yLSh1aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50MiwgaW50Mik7
Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9y
LShpbnQyLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMsIGludDMpOwotbmF0aXZl
IGludDMgb3BlcmF0b3ItKGludCwgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50Mywg
aW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9w
ZXJhdG9yLShpbnQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGludDQsIGludCk7Ci1u
YXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9w
ZXJhdG9yLShmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZsb2F0Miwg
ZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZl
IGZsb2F0MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9y
LShmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0NCwgZmxvYXQ0
KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0
NCBvcGVyYXRvci0oZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50Mik7
Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50Myk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50
NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVy
YXRvci0oZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0NCk7Ci1uYXRpdmUg
ZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIg
b3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZs
b2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyKTsKLW5h
dGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9h
dDN4MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRv
ci0oZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIp
OwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZl
IGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9w
ZXJhdG9yLShmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9h
dDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1u
YXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQy
eDMgb3BlcmF0b3ItKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3It
KGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMsIGZsb2F0M3gz
KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBm
bG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVy
YXRvci0oZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4MywgZmxv
YXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDMpOwotbmF0
aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgz
IG9wZXJhdG9yLShmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0
LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDJ4NCk7
Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxv
YXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0
M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9y
LShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdCwg
ZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCwgZmxvYXQpOwot
bmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBtaW4gKi8KLXVpbnQgbWluKHVpbnQgeCwgdWludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8g
eSA6IHg7Ci19Ci11aW50MiBtaW4odWludDIgeCwgdWludDIgeSkgewotICAgIHVpbnQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWlu
KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBtaW4odWludDMgeCwg
dWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwg
eVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9
IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgbWluKHVpbnQ0
IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWluKHhbM10sIHlbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgbWluKGludCB4LCBpbnQgeSkgewotICAgIHJldHVy
biB4ID4geSA/IHkgOiB4OwotfQotaW50MiBtaW4oaW50MiB4LCBpbnQyIHkpIHsKLSAgICBpbnQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIG1pbihpbnQz
IHgsIGludDMgeSkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IG1pbihpbnQ0
IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgbWluKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICBy
ZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLWZsb2F0MiBtaW4oZmxvYXQyIHgsIGZsb2F0MiB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgbWluKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBtaW4oZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWlu
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXN1
bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IG1pbihmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbWluKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkp
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1pbihmbG9hdDR4MiB4LCBmbG9hdDR4MiB5
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIG1pbihmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBtaW4oZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFsw
XVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDMgbWluKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWluKHhb
M11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1pbih4
WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtaW4o
eFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1pbihm
bG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4o
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWlu
KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBdWzNdLCB5WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1pbihmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1p
bih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBt
aW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWluKHhbMl1bMl0sIHlb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
bWluKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBt
aW4oZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwgeVszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0sIHlbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWluKHhbMl1bMl0s
IHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1pbih4WzNdWzJdLCB5WzNdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbWluKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1pbih4WzJdWzNd
LCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBtaW4oeFszXVszXSwgeVszXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkWG9y
ICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21p
Y19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRl
dmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3Jv
dXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhy
ZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1
aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIEdyb3VwTWVtb3J5QmFy
cmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIEdyb3VwTWVtb3J5QmFycmllcldpdGhH
cm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHRydW5jICovCi1uYXRpdmUgZmxvYXQg
dHJ1bmMoZmxvYXQpOwotZmxvYXQyIHRydW5jKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0cnVuYyh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHRydW5jKGZsb2F0MyB4KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0cnVuYyh4WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHRydW5jKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0cnVu
Yyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0cnVuYyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0
cnVuYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgdHJ1bmMoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdHJ1bmMoZmxvYXQzeDIgeCkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0
cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdHJ1bmMoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0
cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgdHJ1bmMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgdHJ1bmMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVu
Yyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgdHJ1bmMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVu
Yyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0cnVuYyh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0
cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgdHJ1bmMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0
cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0cnVuYyh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJ1bmMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0
cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0cnVuYyh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0cnVuYyh4WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgdHJ1bmMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0
cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0cnVuYyh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0cnVuYyh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSB0cnVuYyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSB0cnVu
Yyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
bWF4ICovCi11aW50IG1heCh1aW50IHgsIHVpbnQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHgg
OiB5OwotfQotdWludDIgbWF4KHVpbnQyIHgsIHVpbnQyIHkpIHsKLSAgICB1aW50MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4
WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbWF4KHVpbnQzIHgsIHVp
bnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlb
MF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBt
YXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG1heCh1aW50NCB4
LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1heCh4WzNdLCB5WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0KLQotaW50IG1heChpbnQgeCwgaW50IHkpIHsKLSAgICBy
ZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLWludDIgbWF4KGludDIgeCwgaW50MiB5KSB7Ci0gICAg
aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBtYXgo
aW50MyB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgo
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBtYXgo
aW50NCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgo
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtYXgoeFszXSwgeVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBtYXgoZmxvYXQgeCwgZmxvYXQgeSkg
ewotICAgIHJldHVybiB4ID4geSA/IHggOiB5OwotfQotZmxvYXQyIG1heChmbG9hdDIgeCwgZmxv
YXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBtYXgoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1heChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwot
ICAgIHJlc3VsdFszXSA9IG1heCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgbWF4KGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtYXgoZmxvYXQzeDIgeCwgZmxv
YXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbWF4KGZsb2F0NHgyIHgsIGZs
b2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4
KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1h
eCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgbWF4KGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBt
YXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gzIG1heChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtYXgoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJd
LCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDQgbWF4KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWF4KHhbMF1b
M10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWF4KGZsb2F0M3g0IHgsIGZsb2F0M3g0
IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYXgoeFsy
XVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWF4KHhbMF1bM10sIHlbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSBtYXgoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IG1heChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgoeFszXVsxXSwgeVszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYXgo
eFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWF4KHhbM11bMl0sIHlbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWF4
KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1heCh4WzNdWzNdLCB5WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc2lu
dCAqLwotaW50IGFzaW50KGludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQyIGFzaW50KGlu
dDIgeCkgewotICAgIHJldHVybiB4OwotfQotaW50MyBhc2ludChpbnQzIHgpIHsKLSAgICByZXR1
cm4geDsKLX0KLWludDQgYXNpbnQoaW50NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQgYXNp
bnQodWludCB4KSB7Ci0gICAgcmV0dXJuIGludCh4KTsKLX0KLWludDIgYXNpbnQodWludDIgeCkg
ewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIGFzaW50
KHVpbnQzIHgpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2ludCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBhc2ludCh1aW50NCB4KSB7Ci0gICAg
aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW5hdGl2ZSBpbnQgYXNp
bnQoZmxvYXQpOwotaW50MiBhc2ludChmbG9hdDIgeCkgewotICAgIGludDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIGFzaW50KGZsb2F0MyB4KSB7Ci0gICAgaW50MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNp
bnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWludDQgYXNpbnQoZmxvYXQ0IHgpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2ludCh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY2xhbXAgKi8KLW5hdGl2
ZSB1aW50IGNsYW1wKHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0aXZlIHVpbnQyIGNsYW1wKHVpbnQy
LCB1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQzIGNsYW1wKHVpbnQzLCB1aW50MywgdWludDMp
OwotbmF0aXZlIHVpbnQ0IGNsYW1wKHVpbnQ0LCB1aW50NCwgdWludDQpOwotbmF0aXZlIGludCBj
bGFtcChpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBpbnQyIGNsYW1wKGludDIsIGludDIsIGludDIp
OwotbmF0aXZlIGludDMgY2xhbXAoaW50MywgaW50MywgaW50Myk7Ci1uYXRpdmUgaW50NCBjbGFt
cChpbnQ0LCBpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdCBjbGFtcChmbG9hdCwgZmxvYXQsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDIgY2xhbXAoZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci1uYXRp
dmUgZmxvYXQzIGNsYW1wKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBj
bGFtcChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBjbGFtcChmbG9h
dDJ4MiwgZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBjbGFtcChmbG9hdDN4
MiwgZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBjbGFtcChmbG9hdDR4Miwg
ZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBjbGFtcChmbG9hdDJ4MywgZmxv
YXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBjbGFtcChmbG9hdDN4MywgZmxvYXQz
eDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBjbGFtcChmbG9hdDR4MywgZmxvYXQ0eDMs
IGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBjbGFtcChmbG9hdDJ4NCwgZmxvYXQyeDQsIGZs
b2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBjbGFtcChmbG9hdDN4NCwgZmxvYXQzeDQsIGZsb2F0
M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBjbGFtcChmbG9hdDR4NCwgZmxvYXQ0eDQsIGZsb2F0NHg0
KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPCAqLwotbmF0aXZlIGJvb2wgb3BlcmF0
b3I8KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LCB1aW50KTsKLW5hdGl2
ZSBib29sIG9wZXJhdG9yPChmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPCh1
aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPCh1aW50MywgdWludDMpOwotbmF0
aXZlIGJvb2w0IG9wZXJhdG9yPCh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9y
PChpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjwoaW50MywgaW50Myk7Ci1uYXRp
dmUgYm9vbDQgb3BlcmF0b3I8KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPChm
bG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8KGZsb2F0MywgZmxvYXQzKTsK
LW5hdGl2ZSBib29sNCBvcGVyYXRvcjwoZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGJvb2wyeDIg
b3BlcmF0b3I8KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcjwo
ZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPChmbG9hdDR4Miwg
ZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I8KGZsb2F0MngzLCBmbG9hdDJ4Myk7
Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcjwoZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBi
b29sNHgzIG9wZXJhdG9yPChmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3Bl
cmF0b3I8KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcjwoZmxv
YXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPChmbG9hdDR4NCwgZmxv
YXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNuYW4gKi8KLW5hdGl2ZSBib29sIGlzbmFu
KGZsb2F0KTsKLQotYm9vbDIgaXNuYW4oZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNuYW4oeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzbmFuKGZsb2F0MyB4KSB7Ci0gICAgYm9v
bDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGlzbmFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbmFuKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sNCBpc25hbihmbG9hdDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBpc25hbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25hbih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBpc25hbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc25hbih4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgQWxsTWVtb3J5
QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIEFsbE1lbW9yeUJhcnJpZXJXaXRo
R3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcl4gKi8KLWJvb2wgb3Bl
cmF0b3JeKGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAgaWYgKGEpCi0gICAgICAgIHJldHVybiAhYjsK
LSAgICByZXR1cm4gYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3JeKGludCwgaW50KTsKLW5hdGl2
ZSB1aW50IG9wZXJhdG9yXih1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzaW5m
ICovCi1uYXRpdmUgYm9vbCBpc2luZihmbG9hdCk7Ci1ib29sMiBpc2luZihmbG9hdDIgeCkgewot
ICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2luZih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNpbmYo
ZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNpbmYoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNpbmYo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzaW5mKGZsb2F0NCB4KSB7Ci0g
ICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzaW5mKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGlzaW5mKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzaW5mKHhbMl0pOwotICAgIHJl
c3VsdFszXSA9IGlzaW5mKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBvcGVyYXRvcnwgKi8KLWJvb2wgb3BlcmF0b3J8KGJvb2wgYSwgYm9vbCBiKSB7
Ci0gICAgcmV0dXJuIGEgfHwgYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3J8KGludCwgaW50KTsK
LW5hdGl2ZSB1aW50IG9wZXJhdG9yfCh1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVk
IGRlZ3JlZXMgKi8KLWZsb2F0IGRlZ3JlZXMoZmxvYXQgeCkgewotICAgIHJldHVybiB4ICogMTgw
IC8gMy4xNDE1OTsKLX0KLWZsb2F0MiBkZWdyZWVzKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRl
Z3JlZXMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZWdyZWVzKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGVncmVl
cyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRlZ3JlZXMoZmxvYXQ0IHgp
IHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRlZ3JlZXMoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZWdyZWVzKHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGRlZ3JlZXMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGRlZ3JlZXMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiBkZWdyZWVzKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRlZ3JlZXMoZmxvYXQ0eDIgeCkgewot
ICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZWdyZWVzKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngzIGRlZ3JlZXMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGVncmVlcyhmbG9hdDN4MyB4KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBk
ZWdyZWVzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZWdyZWVzKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRlZ3JlZXMoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IGRlZ3JlZXMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IGRlZ3JlZXMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGVncmVlcyh4WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgZGVncmVlcyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZWdyZWVzKHhb
M11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3JlZXMoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZWdyZWVzKHhb
Ml1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRlZ3JlZXMoeFszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBsZSAqLwotbmF0aXZlIHVpbnQg
U2FtcGxlKFRleHR1cmUxRDx1aW50Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1
cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQg
U2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlM0Q8dWludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTNEPHVpbnQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBs
ZShUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50MiBTYW1wbGUoVGV4dHVyZTFEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyRDx1aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUz
RDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxl
KFRleHR1cmUzRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQp
OwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUxRDx1aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8
dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShU
ZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQz
IFNhbXBsZShUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZUN1YmU8
dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShU
ZXh0dXJlMUQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQg
U2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1
cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTNEPHVpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTNEPHVp
bnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDQgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUxRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlv
bik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMkQ8aW50Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShU
ZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGlu
dCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlM0Q8aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUzRDxpbnQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRl
eHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBT
YW1wbGUoVGV4dHVyZTFEPGludDI+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MiBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
bik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBT
YW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUzRDxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlM0Q8aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxl
KFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDMgU2FtcGxlKFRleHR1cmUxRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0
aXZlIGludDMgU2FtcGxlKFRleHR1cmUxREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkQ8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlKFRl
eHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlM0Q8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTNEPGludDM+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNh
bXBsZShUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMUQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsK
LW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEPGludDQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBs
ZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTNEPGludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUzRDxp
bnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgaW50
NCBTYW1wbGUoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUxRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJl
MkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShU
ZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMg
b2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTFEPGZsb2F0
Mj4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQyIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNh
bXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTNEPGZs
b2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0MiBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9h
dCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVy
ZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZShUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1
cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0
IFNhbXBsZShUZXh0dXJlMUQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0
aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTJEPGZs
b2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUo
VGV4dHVyZTNEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQ0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBp
bnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVw
dGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlTGV2ZWwgKi8K
LW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUy
RDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1
aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludD4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8
aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50
MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1w
bGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChU
ZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDQgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3Vi
ZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1
cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQy
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBT
YW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQzPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9h
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0
IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGZs
b2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgy
RDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVMZXZlbChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChU
ZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBM
T0QpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlQmlhcyAqLwotbmF0aXZlIHVpbnQgU2Ft
cGxlQmlhcyhUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBT
YW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJE
PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1
aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMgU2Ft
cGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxl
QmlhcyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMo
VGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDQg
U2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4
dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwot
bmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1
cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNh
bXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMo
VGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MyBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1
YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUy
RDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZl
IGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVy
ZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0
dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5h
dGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBTYW1wbGVHcmFkICovCi1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUy
RDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4
dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxv
YXQzIEREWSk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDI+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVp
bnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1
YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBE
RFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50MyBT
YW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDQgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVp
bnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRp
dmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGlu
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1u
YXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChU
ZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBm
bG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDM+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGlu
dDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5h
dGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChU
ZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVHcmFkKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdy
YWQoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0
Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdDMgU2Ft
cGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0
NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1
cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFkpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3Jh
ZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBm
bG9hdDMgRERZKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNpbmggKi8KLW5hdGl2ZSBmbG9hdCBz
aW5oKGZsb2F0KTsKLWZsb2F0MiBzaW5oKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbmgoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW5oKGZsb2F0MyB4KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IHNpbmgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luaCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBzaW5oKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNpbmgoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNpbmgoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBzaW5oKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
aW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIHNpbmgoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNp
bmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgoeFszXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNpbmgoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc2luaChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBzaW5oKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
aW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzaW5oKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHNpbmgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNp
bmgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW5oKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3g0IHNpbmgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5o
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW5oKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
c2luaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc2luaChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbmgoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
aW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW5oKHhbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IHNpbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luaCh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW5oKHhbMl1bM10pOwotICAgIHJlc3VsdFsz
XVszXSA9IHNpbmgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGRkeSAqLwotbmF0aXZlIGZsb2F0IGRkeShmbG9hdCk7Ci1mbG9hdDIgZGR5KGZs
b2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHkoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgZGR5KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBk
ZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRk
eSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeShmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHkoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gZGR5KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHkoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHko
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeShmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHkoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHkoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgZGR5KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRk
eShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeSh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBk
ZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5KHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHkoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHkoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHkoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGRkeSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR5KGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5KHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHko
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeSh4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHkoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeSh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR5KHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVy
YXRvcj49ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KGludCwgaW50KTsKLW5hdGl2ZSBib29s
IG9wZXJhdG9yPj0odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PSh1aW50MiwgdWludDIpOwotbmF0aXZlIGJv
b2wzIG9wZXJhdG9yPj0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj49KHVp
bnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PShpbnQyLCBpbnQyKTsKLW5hdGl2
ZSBib29sMyBvcGVyYXRvcj49KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0o
aW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PShmbG9hdDIsIGZsb2F0Mik7Ci1u
YXRpdmUgYm9vbDMgb3BlcmF0b3I+PShmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3Bl
cmF0b3I+PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj49KGZsb2F0
MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj49KGZsb2F0M3gyLCBmbG9h
dDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj49KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1u
YXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj49KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9v
bDN4MyBvcGVyYXRvcj49KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVy
YXRvcj49KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcj49KGZs
b2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcj49KGZsb2F0M3g0LCBm
bG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj49KGZsb2F0NHg0LCBmbG9hdDR4NCk7
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkc3QgKi8KLXVpbnQ0IGRzdCh1aW50NCBzcmMwLCB1aW50
NCBzcmMxKSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gMTsKLSAgICByZXN1
bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAgICByZXN1bHQueiA9IHNyYzAuejsKLSAgICByZXN1
bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBkc3QoaW50NCBzcmMw
LCBpbnQ0IHNyYzEpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IDE7Ci0gICAg
cmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAgcmVzdWx0LnogPSBzcmMwLno7Ci0gICAg
cmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkc3QoZmxv
YXQ0IHNyYzAsIGZsb2F0NCBzcmMxKSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHQu
eCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAgcmVzdWx0LnogPSBz
cmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgZG90ICovCi11aW50IGRvdCh1aW50IGEsIHVpbnQgYikgewot
ICAgIHJldHVybiBhICogYjsKLX0KLXVpbnQgZG90KHVpbnQyIGEsIHVpbnQyIGIpIHsKLSAgICB1
aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVp
bnQgZG90KHVpbnQzIGEsIHVpbnQzIGIpIHsKLSAgICB1aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAq
IGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLXVpbnQgZG90KHVpbnQ0IGEsIHVpbnQ0IGIpIHsKLSAgICB1aW50IHJlc3VsdCA9
IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICsgYVszXSAqIGJbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWludCBkb3QoaW50IGEsIGludCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotaW50IGRvdChp
bnQyIGEsIGludDIgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludDMgYSwgaW50MyBiKSB7Ci0gICAgaW50IHJl
c3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJb
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50NCBhLCBpbnQ0IGIpIHsKLSAg
ICBpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBh
WzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICogYlszXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQgZG90KGZsb2F0IGEsIGZsb2F0IGIpIHsKLSAgICByZXR1cm4g
YSAqIGI7Ci19Ci1mbG9hdCBkb3QoZmxvYXQyIGEsIGZsb2F0MiBiKSB7Ci0gICAgZmxvYXQgcmVz
dWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgZG90
KGZsb2F0MyBhLCBmbG9hdDMgYikgewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJb
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0IGRvdChmbG9hdDQgYSwgZmxvYXQ0IGIpIHsKLSAgICBmbG9hdCByZXN1bHQg
PSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBiWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc2Zsb2F0ICovCi1uYXRpdmUgZmxvYXQgYXNmbG9hdChp
bnQpOwotZmxvYXQyIGFzZmxvYXQoaW50MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhc2Zsb2F0KGludDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhc2Zsb2F0KGludDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
c2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gYXNmbG9hdCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotbmF0aXZlIGZsb2F0
IGFzZmxvYXQodWludCk7Ci1mbG9hdDIgYXNmbG9hdCh1aW50MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFz
ZmxvYXQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhc2Zsb2F0KHVpbnQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2Zsb2F0
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNmbG9hdCh1aW50NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJd
KTsKLSAgICByZXN1bHRbM10gPSBhc2Zsb2F0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdCBhc2Zsb2F0KGZsb2F0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MiBhc2Zs
b2F0KGZsb2F0MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDMgYXNmbG9hdChmbG9hdDMg
eCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0IGFzZmxvYXQoZmxvYXQ0IHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLWZsb2F0MngyIGFzZmxvYXQoZmxvYXQyeDIgeCkgewotICAgIHJldHVybiB4
OwotfQotZmxvYXQzeDIgYXNmbG9hdChmbG9hdDN4MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1m
bG9hdDR4MiBhc2Zsb2F0KGZsb2F0NHgyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0Mngz
IGFzZmxvYXQoZmxvYXQyeDMgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDMgYXNmbG9h
dChmbG9hdDN4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDR4MyBhc2Zsb2F0KGZsb2F0
NHgzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0Mng0IGFzZmxvYXQoZmxvYXQyeDQgeCkg
ewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDQgYXNmbG9hdChmbG9hdDN4NCB4KSB7Ci0gICAg
cmV0dXJuIHg7Ci19Ci1mbG9hdDR4NCBhc2Zsb2F0KGZsb2F0NHg0IHgpIHsKLSAgICByZXR1cm4g
eDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzbm9ybWFsICovCi1uYXRpdmUgYm9vbCBpc25v
cm1hbChmbG9hdCk7Ci0KLWJvb2wyIGlzbm9ybWFsKGZsb2F0MiB4KSB7Ci0gICAgYm9vbDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlz
bm9ybWFsKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc25vcm1hbChmbG9h
dDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25vcm1hbCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc25v
cm1hbCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNub3JtYWwoZmxvYXQ0
IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNub3JtYWwoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNub3Jt
YWwoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNub3JtYWwoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRFeGNoYW5nZSAqLwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2Ug
YXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRF
eGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNl
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4
Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwg
dGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBHZXREaW1lbnNpb25zICov
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJl
YWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWlu
dD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0K
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWQgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0
aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgZGV2aWNl
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQz
PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFk
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4s
IGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIGRl
dmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxp
bnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgZGV2aWNlIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+
LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgZGV2aWNl
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0
Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQz
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8Zmxv
YXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0K
LQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcisgKi8KLW5hdGl2ZSBp
bnQgb3BlcmF0b3IrKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yKyh1aW50LCB1aW50
KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBv
cGVyYXRvcisodWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcisodWludCwgdWlu
dDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50MiwgdWludCk7Ci1uYXRpdmUgdWludDMg
b3BlcmF0b3IrKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IrKHVpbnQsIHVp
bnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcisodWludDMsIHVpbnQpOwotbmF0aXZlIHVpbnQ0
IG9wZXJhdG9yKyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50LCB1
aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSBpbnQy
IG9wZXJhdG9yKyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQsIGludDIp
OwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludDIsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRv
cisoaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50LCBpbnQzKTsKLW5hdGl2
ZSBpbnQzIG9wZXJhdG9yKyhpbnQzLCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludDQs
IGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludCwgaW50NCk7Ci1uYXRpdmUgaW50NCBv
cGVyYXRvcisoaW50NCwgaW50KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0MiwgZmxv
YXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIGZs
b2F0MiBvcGVyYXRvcisoZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhm
bG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQzKTsK
LW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NCBv
cGVyYXRvcisoZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxvYXQs
IGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9hdDQsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4
MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciso
ZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIsIGZs
b2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0M3gyKTsKLW5h
dGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4
MiBvcGVyYXRvcisoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRv
cisoZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvcisoZmxvYXQ0eDIs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMsIGZsb2F0MngzKTsK
LW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9h
dDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRv
cisoZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxvYXQs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBm
bG9hdDR4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVy
YXRvcisoZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQy
eDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBv
cGVyYXRvcisoZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxv
YXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQ0eDQsIGZsb2F0
NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHg0KTsKLW5hdGl2
ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVy
YXRvcisodWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50Myk7Ci1uYXRpdmUgdWlu
dDQgb3BlcmF0b3IrKHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQyKTsKLW5hdGl2
ZSBpbnQzIG9wZXJhdG9yKyhpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKyhpbnQ0KTsKLW5h
dGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhm
bG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4
MiBvcGVyYXRvcisoZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKyhmbG9hdDN4
Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4
MyBvcGVyYXRvcisoZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKyhmbG9hdDN4
Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4
NCBvcGVyYXRvcisoZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKyhmbG9hdDN4
NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIGZyYWMgKi8KLWZsb2F0IGZyYWMoZmxvYXQgeCkgewotICAgIHJldHVybiB4IC0gZmxv
b3IoeCk7Ci19Ci1mbG9hdDIgZnJhYyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmcmFjKHhbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZnJhYyhmbG9hdDMgeCkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
cmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBmcmFjKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZyYWMoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZnJhYyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmcmFjKHhbM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmcmFjKGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDIgZnJhYyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJh
Yyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MiBmcmFjKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFj
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmcmFjKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBm
cmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZyYWMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZy
YWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDMgZnJhYyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJh
Yyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZnJhYyh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBmcmFjKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmcmFj
KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJhYyh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCBmcmFjKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJhYyh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZy
YWMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZyYWMoZmxvYXQ0
eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmcmFjKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJh
Yyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZnJhYyh4WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBmcmFjKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZyYWMoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZnJhYyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11b
M10gPSBmcmFjKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBzdG9yZSAqLwotbmF0aXZlIHZvaWQgc3RvcmUoZGV2aWNlIGF0b21pY19pbnQqLCBp
bnQpOwotbmF0aXZlIHZvaWQgc3RvcmUoZGV2aWNlIGF0b21pY191aW50KiwgdWludCk7Ci1uYXRp
dmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50KTsKLW5hdGl2ZSB2b2lk
IHN0b3JlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCByZWZyYWN0ICovCi1mbG9hdCByZWZyYWN0KGZsb2F0IGksIGZsb2F0IG4sIGZsb2F0IGV0
YSkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBmbG9hdCBrID0gMSAtIGV0YSAqIGV0YSAqICgx
IC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8IDApCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICogZG90KG4sIGkpICsgc3FydChr
KSkgKiBuOwotfQotZmxvYXQyIHJlZnJhY3QoZmxvYXQyIGksIGZsb2F0MiBuLCBmbG9hdCBldGEp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGsgPSAxIC0gZXRhICogZXRhICogKDEg
LSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlmIChrIDwgMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChldGEgKiBkb3QobiwgaSkgKyBzcXJ0KGsp
KSAqIG47Ci19Ci1mbG9hdDMgcmVmcmFjdChmbG9hdDMgaSwgZmxvYXQzIG4sIGZsb2F0IGV0YSkg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAt
IGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAgaWYgKGsgPCAwKQotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0gKGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykp
ICogbjsKLX0KLWZsb2F0NCByZWZyYWN0KGZsb2F0NCBpLCBmbG9hdDQgbiwgZmxvYXQgZXRhKSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0g
ZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8IDApCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICogZG90KG4sIGkpICsgc3FydChrKSkg
KiBuOwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9nMTAgKi8KLWZsb2F0IGxvZzEwKGZsb2F0
IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9nKGZsb2F0KDEwKSk7Ci19Ci1mbG9hdDIgbG9n
MTAoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzEw
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgbG9nMTAoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGxvZzEwKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQg
bG9nMTAoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxv
ZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGxvZzEwKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzEwKHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cxMChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBsb2cxMChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEw
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBsb2cxMChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEw
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2cxMChmbG9hdDJ4MyB4KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEw
KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsb2cxMChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEw
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsb2cxMChmbG9hdDR4
MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzEwKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEw
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxvZzEwKHhbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBsb2cxMChmbG9hdDJ4NCB4KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEw
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEwKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBsb2cxMChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEw
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEwKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGxvZzEwKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsb2cx
MChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzEw
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxv
ZzEwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEwKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxvZzEwKHhb
Ml1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxvZzEwKHhbM11bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvci8gKi8KLW5hdGl2ZSBpbnQg
b3BlcmF0b3IvKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LCB1aW50KTsK
LW5hdGl2ZSBmbG9hdCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVy
YXRvci8odWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci8odWludDIsIHVpbnQp
OwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLyh1aW50LCB1aW50Mik7Ci1uYXRpdmUgdWludDMgb3Bl
cmF0b3IvKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IvKHVpbnQzLCB1aW50
KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci8odWludCwgdWludDMpOwotbmF0aXZlIHVpbnQ0IG9w
ZXJhdG9yLyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLyh1aW50NCwgdWlu
dCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IvKHVpbnQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9w
ZXJhdG9yLyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLyhpbnQyLCBpbnQpOwot
bmF0aXZlIGludDIgb3BlcmF0b3IvKGludCwgaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8o
aW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8oaW50MywgaW50KTsKLW5hdGl2ZSBp
bnQzIG9wZXJhdG9yLyhpbnQsIGludDMpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludDQsIGlu
dDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludDQsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVy
YXRvci8oaW50LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0MiwgZmxvYXQy
KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLyhmbG9h
dDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLyhmbG9hdDMsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVy
YXRvci8oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci8oZmxvYXQ0LCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBm
bG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBv
cGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci8oZmxv
YXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQzeDIsIGZsb2F0
M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBv
cGVyYXRvci8oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci8o
ZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0
NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5h
dGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4
MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci8o
ZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci8oZmxvYXQzeDMs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0M3gzKTsKLW5h
dGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9h
dDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRv
ci8oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxvYXQyeDQs
IGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxvYXQyeDQsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9h
dDN4NCBvcGVyYXRvci8oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVy
YXRvci8oZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci8oZmxvYXQs
IGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQ0eDQsIGZsb2F0NHg0
KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDR4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVk
IGRkeV9maW5lICovCi1mbG9hdCBkZHlfZmluZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGRkeSh4
KTsKLX0KLWZsb2F0MiBkZHlfZmluZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZGR5X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUo
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHlfZmluZShmbG9hdDMgeCkg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2ZpbmUoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR5X2ZpbmUo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHlfZmluZShmbG9hdDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2ZpbmUoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR5X2ZpbmUo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2ZpbmUoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGRkeV9maW5lKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeV9maW5lKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2Zp
bmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeV9maW5l
KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2ZpbmUoeFsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeV9maW5lKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2Zp
bmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIGRkeV9maW5lKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2ZpbmUoeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeV9maW5lKGZsb2F0NHgz
IHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2Zp
bmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2ZpbmUoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2ZpbmUoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGRkeV9maW5lKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IGRkeV9maW5lKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5
X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2ZpbmUoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2ZpbmUoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeV9maW5lKGZsb2F0NHg0
IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2Zp
bmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2ZpbmUoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2ZpbmUoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZGR5X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNd
WzNdID0gZGR5X2ZpbmUoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGFueSAqLwotYm9vbCBhbnkoYm9vbCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19
Ci1ib29sIGFueShib29sMiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wzIHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFsxXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueSh1aW50
IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkodWludDIgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkodWludDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkoaW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkoaW50
MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDAp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQ0IHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19
Ci1ib29sIGFueShmbG9hdDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9h
dDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDJ4MiB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0M3gy
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFueShmbG9hdDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsy
XSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQzeDMgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NHgzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzNdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eShmbG9hdDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9h
dDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsyXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVszXSAhPSAw
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0eDQgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsz
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzNdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFueShib29sMngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sM3gyIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHgyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzFdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMngzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFueShib29sM3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHgzIHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMng0IHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFd
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sM3g0IHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHg0
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHlfY29hcnNlICovCi1mbG9hdCBk
ZHlfY29hcnNlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR5KHgpOwotfQotZmxvYXQyIGRkeV9j
b2Fyc2UoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRk
eV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJzZSh4WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeV9jb2Fyc2UoZmxvYXQzIHgpIHsKLSAgICBmbG9h
dDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZGR5X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHlfY29hcnNlKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR5X2NvYXJzZShmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2NvYXJzZSh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeV9jb2Fy
c2UoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2NvYXJzZSh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZGR5X2NvYXJzZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeV9jb2Fyc2UoZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNl
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5X2NvYXJzZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBk
ZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9jb2Fyc2UoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fy
c2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2NvYXJzZSh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5X2NvYXJzZShmbG9hdDJ4MyB4KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fy
c2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyBkZHlfY29hcnNlKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fy
c2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGRkeV9jb2Fyc2UoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2Nv
YXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gZGR5X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgZGR5X2NvYXJzZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlf
Y29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9jb2Fyc2UoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgZGR5X2NvYXJzZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlf
Y29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2Uo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRk
eV9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfY29hcnNlKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHlfY29hcnNlKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2NvYXJzZSh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJz
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfY29hcnNlKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fyc2UoeFszXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfY29h
cnNlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9jb2Fyc2UoeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gZGR5X2NvYXJzZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IrKyAqLwotdWludCBvcGVyYXRvcisr
KHVpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfQotaW50IG9wZXJhdG9yKyso
aW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlICsgMTsKLX0KLWZsb2F0IG9wZXJhdG9yKyso
ZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgSW50ZXJsb2NrZWRBbmQgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmlj
ZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBk
ZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFu
ZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50
KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRn
cm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQs
IHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdy
b3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgb3BlcmF0b3J+ICovCi1ib29sIG9wZXJhdG9yfihib29sIHZhbHVlKSB7Ci0gICAgcmV0
dXJuICF2YWx1ZTsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3J+KGludCk7Ci1uYXRpdmUgdWludCBv
cGVyYXRvcn4odWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHggKi8KLW5hdGl2ZSBmbG9h
dCBkZHgoZmxvYXQpOwotZmxvYXQyIGRkeChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeCh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeChmbG9hdDMgeCkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRk
eCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBkZHgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR4KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeCh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZGR4KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBkZHgoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR4KGZs
b2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4KHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR4
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBk
ZHgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHgoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4KHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGRkeCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR4KGZs
b2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR4
KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRk
eCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHgoeFsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
ZGR4KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4KHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGRkeCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRNYXggKi8KLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFk
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBh
dG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1h
eChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAg
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfdWlu
dCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJl
YWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBh
dG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCop
OwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY29zaCAqLwotbmF0aXZlIGZsb2F0IGNvc2goZmxvYXQp
OwotZmxvYXQyIGNvc2goZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zaCh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIGNvc2goZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zaCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgY29zaChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3NoKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGNvc2goeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29zaCh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgY29zaChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIGNvc2goZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgY29zaChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgY29zaChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Y29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBjb3NoKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBj
b3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGNvc2goZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvc2goeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY29z
aCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgY29zaChmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3No
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
Y29zaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2go
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBj
b3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3NoKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjb3NoKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNv
c2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBjb3NoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gY29zaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3NoKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGNvc2goeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gY29z
aCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
ZGR4X2NvYXJzZSAqLwotZmxvYXQgZGR4X2NvYXJzZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGRk
eCh4KTsKLX0KLWZsb2F0MiBkZHhfY29hcnNlKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRk
eF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHhfY29hcnNl
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29h
cnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR4X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRk
eF9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGRkeF9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2NvYXJzZSh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBkZHhfY29hcnNlKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeF9jb2Fy
c2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeF9jb2Fyc2UoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhf
Y29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBkZHhfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhf
Y29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2Uo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeF9jb2Fyc2UoZmxv
YXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhf
Y29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2Uo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRk
eF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeF9j
b2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2Uo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRk
eF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR4X2NvYXJzZShmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2Uo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRk
eF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJz
ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHhfY29hcnNlKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2NvYXJz
ZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfY29hcnNlKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfY29h
cnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeF9jb2Fyc2UoeFszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9jb2Fyc2UoZmxvYXQyeDQgeCkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29h
cnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9jb2Fyc2UoeFsx
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeF9jb2Fyc2UoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29h
cnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9j
b2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGRkeF9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2NvYXJzZSh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4X2NvYXJzZShmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9j
b2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4
X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHhfY29hcnNl
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9jb2Fyc2UoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBk
ZHhfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeF9jb2Fyc2UoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZpcnN0Yml0
aGlnaCAqLwotdWludCBmaXJzdGJpdGhpZ2godWludCB4KSB7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDMxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDMwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI5
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI4KSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI3KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI2KSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI1KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI0KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIzKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIyKSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDEwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMCkpICE9IDApCi0gICAgICAgIHJldHVybiAx
MTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTI7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEzOwot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNykpICE9IDApCi0gICAgICAgIHJldHVybiAxNDsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMTYpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTU7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDE1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE2OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAgIHJldHVybiAxNzsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMTMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTg7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDEyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE5OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMDsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMTApKSAhPSAwKQotICAgICAgICByZXR1cm4gMjE7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjI7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDcpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDYp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMjU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDUpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDQpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDApKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMzE7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBmaXJzdGJpdGhpZ2goaW50IHgpIHsK
LSAgICByZXR1cm4gZmlyc3RiaXRoaWdoKHVpbnQoeCkpOwotfQotdWludDIgZmlyc3RiaXRoaWdo
KHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRo
aWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKHVpbnQzIHgpIHsKLSAgICB1aW50MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGhpZ2goeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0aGlnaCh1aW50NCB4KSB7
Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmly
c3RiaXRoaWdoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0aGlnaCh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgZmlyc3RiaXRoaWdoKGludDIgeCkgewotICAgIHVp
bnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50
MyBmaXJzdGJpdGhpZ2goaW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGhpZ2goaW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJz
dGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IGZpcnN0Yml0aGlnaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgcmNwICovCi1mbG9hdCByY3AoZmxvYXQgeCkgewotICAgIHJl
dHVybiAxIC8geDsKLX0KLWZsb2F0MiByY3AoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByY3AoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByY3AoZmxvYXQzIHgpIHsKLSAgICBmbG9h
dDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBy
Y3AoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmNwKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgcmNwKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSByY3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IHJjcCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSByY3AoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIHJjcChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDIgcmNwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJjcChm
bG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJj
cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJjcCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJj
cChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
cmNwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByY3AoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcmNwKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJjcCh4WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSByY3AoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJjcChm
bG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJj
cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNw
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHJj
cChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBy
Y3AoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmNwKHhbMl1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByY3AoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IHJjcCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByY3AoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJjcCh4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSByY3AoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZ3aWR0aCAqLwotCi1mbG9hdCBmd2lkdGgoZmxvYXQg
eCkgewotICAgIHJldHVybiBhYnMoZGR4KHgpKSArIGFicyhkZHkoeCkpOwotfQotZmxvYXQyIGZ3
aWR0aChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZndp
ZHRoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZ3aWR0aCh4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIGZ3aWR0aChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZ3aWR0aCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBmd2lkdGgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBmd2lkdGgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmd2lkdGgoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZndpZHRoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZ3aWR0aCh4WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZndpZHRoKGZsb2F0MngyIHgpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
d2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmd2lkdGgoZmxvYXQzeDIgeCkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0
aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZndpZHRoKGZsb2F0NHgy
IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZndpZHRoKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgZndpZHRoKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3
aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZ3aWR0aChmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRo
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmd2lkdGgoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmd2lkdGgoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3
aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZ3aWR0
aCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZndpZHRoKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRo
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZ3aWR0aCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgZndpZHRoKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3
aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZ3aWR0
aCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmd2lkdGgoeFsyXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZ3aWR0aChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBmd2lkdGgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZndpZHRoKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBm
d2lkdGgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZndpZHRoKHhbMl1bM10pOwotICAg
IHJlc3VsdFszXVszXSA9IGZ3aWR0aCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgbGVycCAqLwotZmxvYXQgbGVycChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCBzKSB7Ci0gICAgcmV0dXJuIHggKiAoMSAtIHMpICsgeSAqIHM7Ci19Ci1mbG9hdDIg
bGVycChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBs
ZXJwKGZsb2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0g
bGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZXJwKHhbMl0sIHlbMl0s
IHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbGVycChmbG9hdDQgeCwgZmxv
YXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBs
ZXJwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwg
elsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGVycCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXN1
bHRbM10gPSBsZXJwKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MiBsZXJwKGZsb2F0MngyIHgsIGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBm
bG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBd
LCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbGVycChmbG9hdDN4MiB4LCBmbG9hdDN4
MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJw
KHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFsw
XVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFd
LCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlb
Ml1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsZXJwKGZs
b2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVy
cCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZXJwKHhb
M11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBsZXJwKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGxlcnAoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMg
eikgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJd
WzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0s
IHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbGVycChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9h
dDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAo
eFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFd
WzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0s
IHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxlcnAoeFszXVswXSwgeVsz
XVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBsZXJwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBsZXJwKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHop
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBd
LCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsx
XSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsZXJwKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZs
b2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVy
cCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVsw
XSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5
WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwg
elsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IGxlcnAoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSwgZmxvYXQ0eDQg
eikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJd
WzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0s
IHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGxlcnAoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gbGVycCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBs
ZXJwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxlcnAo
eFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGVycCh4WzJd
WzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsZXJwKHhbM11bM10s
IHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBkaXN0YW5jZSAqLwotZmxvYXQgZGlzdGFuY2UoZmxvYXQgeCwgZmxvYXQgeSkgewot
ICAgIHJldHVybiBsZW5ndGgoeCAtIHkpOwotfQotZmxvYXQgZGlzdGFuY2UoZmxvYXQyIHgsIGZs
b2F0MiB5KSB7Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1mbG9hdCBkaXN0YW5jZShm
bG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KLWZsb2F0
IGRpc3RhbmNlKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIHJldHVybiBsZW5ndGgoeCAtIHkp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMDkwYzI5OWEyZjBmOGUwZWM3MDZkOTFkM2NmYWNlMWM4ODA3
ZDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLXN0cnVjdCBTdWJzdHJpbmdMb2NhdGlvbiB7Ci0gICAgdW5zaWduZWQgc3RhcnQ7
Ci0gICAgdW5zaWduZWQgZW5kOwotfTsKLQotSGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xvY2F0
aW9uPiBjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKTsKLQotdW5zaWduZWQgZmly
c3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNkNDMzMGQwMTkzNjQzYWFiZTk0MGU5OWIwNTY5MDNj
MTJmYTMwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0
aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxp
dGllcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xD
YWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0jaW5jbHVkZSAiV0hM
U0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnkuaCIKLSNpbmNsdWRl
ICJXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNp
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHBhbC9HdW56aXAu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jb25zdGV4
cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0KLXN0YXRpYyBTdHJpbmcgZGVjb21wcmVzc0FuZERl
Y29kZVN0YW5kYXJkTGlicmFyeSgpCi17Ci0gICAgYXV0byBkZWNvbXByZXNzZWRTdGFuZGFyZExp
YnJhcnkgPSBndW56aXAoV0hMU0xTdGFuZGFyZExpYnJhcnksIHNpemVvZihXSExTTFN0YW5kYXJk
TGlicmFyeSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRlY29tcHJlc3NlZFN0YW5k
YXJkTGlicmFyeS5kYXRhKCksIGRlY29tcHJlc3NlZFN0YW5kYXJkTGlicmFyeS5zaXplKCkpOwot
fQotCi1jbGFzcyBOYW1lRmluZGVyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIEhh
c2hTZXQ8U3RyaW5nPiB0YWtlRnVuY3Rpb25OYW1lcygpCi0gICAgewotICAgICAgICBIYXNoU2V0
PFN0cmluZz4gcmVzdWx0OwotICAgICAgICBzdGQ6OnN3YXAocmVzdWx0LCBtX2Z1bmN0aW9uTmFt
ZXMpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgbV9mdW5jdGlvbk5hbWVzLmFkZChjYWxsRXhwcmVzc2lvbi5uYW1lKCkpOwot
ICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgSGFz
aFNldDxTdHJpbmc+IG1fZnVuY3Rpb25OYW1lczsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9y
PiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mIHByb2dyYW0sIFBhcnNlciYgcGFyc2Vy
LCBib29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzdGFuZGFyZExpYnJhcnkoZGVjb21wcmVzc0FuZERlY29kZVN0YW5kYXJk
TGlicmFyeSgpKTsKLSAgICBpZiAocGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3RhbmRhcmRMaWJyYXJ5
LmdldCgpLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5LCBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcs
IFN1YnN0cmluZ0xvY2F0aW9uPj4gc3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoY29tcHV0ZVN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKCkpOwotCi0gICAgYXV0byBzdHJpbmdWaWV3ID0gU3Ry
aW5nVmlldyhzdGFuZGFyZExpYnJhcnkuZ2V0KCkpLnN1YnN0cmluZygwLCBmaXJzdEZ1bmN0aW9u
T2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNl
ci5wYXJzZShwcm9ncmFtLCBzdHJpbmdWaWV3LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
LCBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICBpZiAoIXBhcnNlUmVzdWx0
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFyc2VSZXN1bHQuZXJyb3IoKSk7Ci0K
LSAgICBOYW1lRmluZGVyIG5hbWVGaW5kZXI7Ci0gICAgbmFtZUZpbmRlci5WaXNpdG9yOjp2aXNp
dChwcm9ncmFtKTsKLSAgICBIYXNoU2V0PFN0cmluZz4gZnVuY3Rpb25OYW1lcyA9IG5hbWVGaW5k
ZXIudGFrZUZ1bmN0aW9uTmFtZXMoKTsKLSAgICBIYXNoU2V0PFN0cmluZz4gYWxsRnVuY3Rpb25O
YW1lczsKLSAgICAvLyBUaGUgbmFtZSBvZiBhIGNhbGwgdG8gYSBjYXN0IG9wZXJhdG9yIGlzIHRo
ZSBuYW1lIG9mIHRoZSB0eXBlLCBzbyB3ZSBjYW4ndCBtYXRjaCB0aGVtIHVwIGNvcnJlY3RseS4K
LSAgICAvLyBJbnN0ZWFkLCBqdXN0IGluY2x1ZGUgYWxsIGNhc3Rpbmcgb3BlcmF0b3JzLgotICAg
IGZ1bmN0aW9uTmFtZXMuYWRkKCJvcGVyYXRvciBjYXN0Il9zdHIpOwotICAgIC8vIFdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgYW4gYXV0aG9yIGNhbid0IHdyaXRlIGEgZnVuY3Rpb24gd2l0aCB0
aGUgc2FtZSBzaWduYXR1cmUgYXMgYW55dGhpbmcgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0g
ICAgLy8gSWYgdGhleSBkbyBzbywgd2UgbmVlZCB0byBtYWtlIHN1cmUgaXQgY29sbGlkZXMsIHNv
IHdlIGluY2x1ZGUgYWxsIHBvdGVudGlhbCBkdXBsaWNhdGVzIGhlcmUsIGFuZCB0aGUgImNoZWNr
RHVwbGljYXRlRnVuY3Rpb25zIiBwYXNzIGVuZm9yY2VzIGl0LgotICAgIGZvciAoYXV0byYgZnVu
Y3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAg
IGZ1bmN0aW9uTmFtZXMuYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi0+bmFtZSgpKTsKLSAgICB3aGls
ZSAoIWZ1bmN0aW9uTmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnNDb3VudCA9IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMo
KS5zaXplKCk7Ci0gICAgICAgIGF1dG8gZnVuY3Rpb25EZWZpbml0aW9uc0NvdW50ID0gcHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG5hbWUgOiBmdW5jdGlvbk5hbWVzKSB7Ci0gICAgICAgICAgICBpZiAoYWxsRnVuY3Rpb25OYW1l
cy5jb250YWlucyhuYW1lKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5nZXQoKS5maW5kKG5h
bWUpOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IHN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
TWFwLmdldCgpLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
YXV0byBzdHJpbmdWaWV3ID0gU3RyaW5nVmlldyhzdGFuZGFyZExpYnJhcnkuZ2V0KCkpLnN1YnN0
cmluZyhpdGVyYXRvci0+dmFsdWUuc3RhcnQsIGl0ZXJhdG9yLT52YWx1ZS5lbmQgLSBpdGVyYXRv
ci0+dmFsdWUuc3RhcnQpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbihzdHJpbmdWaWV3KTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYXV0byBzdGFydCA9IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsKLSAg
ICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3RyaW5n
VmlldywgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5k
YXJkTGlicmFyeSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uZnVuY3Rpb25E
ZWZpbml0aW9ucygpLnNpemUoKSAhPSBzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJub24gbmF0aXZlIHN0ZGxpYiBmdW5jdGlvbjogJyIsIG5hbWUsICInIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBhbGxGdW5jdGlvbk5hbWVzLmFkZChuYW1lKTsKLSAgICAgICAg
fQotICAgICAgICBmb3IgKCA7IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQgPCBwcm9n
cmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK25hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb25zQ291bnQpCi0gICAgICAgICAgICBuYW1lRmluZGVyLlZpc2l0b3I6OnZpc2l0
KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uc0NvdW50XSk7Ci0gICAgICAgIGZvciAoIDsgZnVuY3Rpb25EZWZpbml0aW9uc0NvdW50
IDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2Z1bmN0aW9uRGVmaW5p
dGlvbnNDb3VudCkKLSAgICAgICAgICAgIG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKClbZnVuY3Rpb25EZWZpbml0aW9uc0NvdW50XSk7Ci0gICAg
ICAgIGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VGdW5jdGlvbk5hbWVzKCk7Ci0gICAg
fQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRM
aWJyYXJ5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNjJmMzgyNDcxYTYwNDc4N2IwNzI0MGYzOWI2Mjc1ZTUyMjk1YTY5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUGFyc2VyOwot
Y2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGluY2x1ZGVTdGFuZGFyZExp
YnJhcnkoUHJvZ3JhbSYsIFBhcnNlciYsIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5KTsK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc1ODMyZmQxNzY0Y2Q5NmIwYmI1ZjhmNDFhODJmZTUxOWZjMjkxMGMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmxvY2suaCIKLSNpbmNsdWRlICJX
SExTTEJyZWFrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb250aW51ZS5oIgotI2luY2x1ZGUgIldITFNM
RG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQuaCIKLSNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCi0jaW5jbHVkZSAiV0hMU0xGb3JM
b29wLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMSW5m
ZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmV0
dXJuLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0
Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGlsZUxv
b3AuaCIKLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotY2xhc3MgU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyIDogcHVibGljIFZpc2l0
b3IgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgQmVoYXZpb3IgOiB1aW50OF90IHsKLSAgICAg
ICAgUmV0dXJuID0gMSA8PCAwLAotICAgICAgICBCcmVhayA9IDEgPDwgMSwKLSAgICAgICAgQ29u
dGludWUgPSAxIDw8IDIsCi0gICAgICAgIEZhbGx0aHJvdWdoID0gMSA8PCAzLAotICAgICAgICBO
b3RoaW5nID0gMSA8PCA0Ci0gICAgfTsKLQotICAgIE9wdGlvblNldDxCZWhhdmlvcj4gdGFrZUZ1
bmN0aW9uQmVoYXZpb3IoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc3RhY2suc2l6ZSgpID09
IDEpOwotICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFzdCgpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
bV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6QnJlYWsgfSk7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2su
YXBwZW5kKHsgQmVoYXZpb3I6OkZhbGx0aHJvdWdoIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVu
ZCh7IEJlaGF2aW9yOjpDb250aW51ZSB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
UmV0dXJuJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZp
b3I6OlJldHVybiB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3Am
IGRvV2hpbGVMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAg
IGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpD
b250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgbV9z
dGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmIGZv
ckxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBUaGUgaW5pdGlhbGl6YXRpb24gYWx3
YXlzIGhhcyBhIGJlaGF2aW9yIG9mIE5vdGhpbmcsIHdoaWNoIHdlIGFscmVhZHkgYWRkIHVuY29u
ZGl0aW9uYWxseSBiZWxvdywKLSAgICAgICAgLy8gc28gd2UgY2FuIGp1c3QgaWdub3JlIHRoZSBp
bml0aWFsaXphdGlvbi4KLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5
KCkpOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlv
cjo6QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOwotICAgICAg
ICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsK
LSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1
dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJy
ZWFrKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKLSAgICAgICAgYi5h
ZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChiKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGlmIChzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBPcHRpb25TZXQ8
QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNl
IDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxh
c3QoKTsKLSAgICAgICAgICAgIHJlZHVjdGlvbiA9IHJlZHVjdGlvbiB8IGI7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHJlZHVjdGlvbi5jb250YWlucyhCZWhhdmlvcjo6Tm90aGluZykpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0Y2ggc3RhdGVtZW50IG11c3QgZW5kIGluIGEg
YnJlYWsvZmFsbHRocm91Z2gvcmV0dXJuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVkdWN0aW9uLnJl
bW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICByZWR1Y3Rpb24ucmVtb3ZlKEJlaGF2aW9y
OjpGYWxsdGhyb3VnaCk7Ci0gICAgICAgIHJlZHVjdGlvbi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcp
OwotICAgICAgICBtX3N0YWNrLmFwcGVuZChyZWR1Y3Rpb24pOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICAgICAgaWYg
KGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3Rh
Y2sudGFrZUxhc3QoKTsKLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiBiUHJpbWU7Ci0gICAg
ICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotICAgICAgICAgICAgaWYgKGhhc0Vy
cm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYlByaW1lID0gbV9z
dGFjay50YWtlTGFzdCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJQcmltZSA9IHsg
QmVoYXZpb3I6Ok5vdGhpbmcgfTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoYiB8IGJQcmltZSk7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6
Tm90aGluZyB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLnN0YXRlbWVudHMoKS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBPcHRpb25TZXQ8QmVoYXZp
b3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMTsgKytpKSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2ldKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGF1dG8gYiA9IG1fc3Rh
Y2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIGlmICghYi5jb250YWlucyhCZWhhdmlvcjo6Tm90
aGluZykpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3RhdGVtZW50IGluc2lk
ZSBhbiBpbm5lciBibG9jayBtdXN0IGJlIHJlYWNoYWJsZS4iLCBibG9jay5zdGF0ZW1lbnRzKClb
aV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICAg
ICAgaWYgKGIuY29udGFpbnMoQmVoYXZpb3I6OkZhbGx0aHJvdWdoKSkgewotICAgICAgICAgICAg
ICAgIHNldEVycm9yKEVycm9yKCJGYWxsdGhyb3VnaCBtdXN0IGJlIHRoZSBsYXN0IHN0YXRlbWVu
dCBpbiBhIGJsb2NrLiIsIGJsb2NrLnN0YXRlbWVudHMoKVtpXS0+Y29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWR1
Y3Rpb24gPSByZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChibG9jay5zdGF0ZW1lbnRzKClbYmxvY2suc3RhdGVtZW50cygpLnNpemUoKSAtIDFdKTsK
LSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1
dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQocmVkdWN0
aW9uIHwgYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsg
QmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPE9wdGlvblNldDxCZWhh
dmlvcj4+IG1fc3RhY2s7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tTdGF0ZW1l
bnRCZWhhdmlvcihQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFN0YXRlbWVudEJlaGF2aW9yQ2hl
Y2tlciBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBzdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsK
LSAgICAgICAgaWYgKHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5yZXN1bHQoKTsKLSAgICAgICAg
YXV0byBiZWhhdmlvciA9IHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci50YWtlRnVuY3Rpb25CZWhh
dmlvcigpOwotICAgICAgICBpZiAobWF0Y2hlcyhmdW5jdGlvbkRlZmluaXRpb24tPnR5cGUoKSwg
cHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5cGUoKSkpIHsKLSAgICAgICAgICAgIGJlaGF2aW9y
LnJlbW92ZShTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpSZXR1cm4pOwotICAg
ICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZp
b3I6Ok5vdGhpbmcpOwotICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9IE9wdGlvblNldDxTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yPigpKQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGVuZCBhIHZvaWQgZnVuY3Rpb24gd2l0aCBh
IGJyZWFrLCBjb250aW51ZSwgb3IgZmFsbHRocm91Z2guIikpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9IFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVo
YXZpb3I6OlJldHVybikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIk5vbi12b2lkIGZ1bmN0aW9ucyBtdXN0IHJldHVybiBhIHZhbHVlIG9uIGFsbCBjb2RlIHBh
dGhzLiIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlZTAzZDY2NDU0ZjZjZDBjNjYzNjg4OTM5
ZTFmOGZmMjdkMDg1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVj
dGVkPHZvaWQsIEVycm9yPiBjaGVja1N0YXRlbWVudEJlaGF2aW9yKFByb2dyYW0mKTsKLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVz
aXplQ29uc3RydWN0b3JzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjOTBh
MzY0MDVhMmVkMTc0ZGQzNTYzMmQ2NjlhNDk3MTI4YmYyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlS
ZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0u
aCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlSGFzaC5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IEZpbmRBbGxUeXBlcyA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5G
aW5kQWxsVHlwZXMoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5
cGUmIHBvaW50ZXJUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMu
YWRkKFVubmFtZWRUeXBlS2V5IHsgcG9pbnRlclR5cGUgfSk7Ci0gICAgICAgIFZpc2l0b3I6OnZp
c2l0KHBvaW50ZXJUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBt
X3VubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBhcnJheVJlZmVyZW5jZVR5cGUgfSk7
Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5IHsgYXJyYXlUeXBlIH0p
OwotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUpOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGFwcGVuZE5hbWVkVHlwZShlbnVtZXJhdGlvbkRlZmlu
aXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24pOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1
cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5kTmFtZWRUeXBlKHN0
cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZp
bml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhcHBl
bmROYW1lZFR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0PFVubmFtZWRU
eXBlS2V5PiB0YWtlVW5uYW1lZFR5cGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3Zl
KG1fdW5uYW1lZFR5cGVzKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IHRha2VOYW1lZFR5cGVzKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKG1fbmFtZWRUeXBlcyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQg
YXBwZW5kTmFtZWRUeXBlKEFTVDo6TmFtZWRUeXBlJiB0eXBlKQotICAgIHsKLSAgICAgICAgLy8g
VGhlIHdheSB3ZSB3YWxrIHRoZSBBU1QgZW5zdXJlcyB3ZSBzaG91bGQgbmV2ZXIgdmlzaXQgYSBu
YW1lZCB0eXBlIHR3aWNlLgotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX25hbWVkVHlwZXMpCi0gICAgICAgICAgICBBU1NFUlQoJmVudHJ5LmdldCgpLnVu
aWZ5Tm9kZSgpICE9ICZ0eXBlLnVuaWZ5Tm9kZSgpKTsKLSNlbmRpZgotICAgICAgICBtX25hbWVk
VHlwZXMuYXBwZW5kKHR5cGUpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+
IG1fdW5uYW1lZFR5cGVzOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
TmFtZWRUeXBlPj4gbV9uYW1lZFR5cGVzOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5
bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBGaW5kQWxsVHlw
ZXMgZmluZEFsbFR5cGVzOwotICAgIGZpbmRBbGxUeXBlcy5jaGVja0Vycm9yQW5kVmlzaXQocHJv
Z3JhbSk7Ci0gICAgYXV0byB1bm5hbWVkVHlwZXMgPSBmaW5kQWxsVHlwZXMudGFrZVVubmFtZWRU
eXBlcygpOwotICAgIGF1dG8gbmFtZWRUeXBlcyA9IGZpbmRBbGxUeXBlcy50YWtlTmFtZWRUeXBl
cygpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLQotICAgIGZvciAoYXV0byYgdW5u
YW1lZFR5cGVLZXkgOiB1bm5hbWVkVHlwZXMpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUg
PSB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpOwotICAgICAgICBhdXRvIGxvY2F0aW9uID0g
dW5uYW1lZFR5cGUuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0
byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgJnVubmFtZWRUeXBlLCBTdHJpbmco
KSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZh
cmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9u
LCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgdW5uYW1lZFR5cGUsICJvcGVy
YXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3Is
IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAgIHByb2dyYW0uYXBw
ZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxv
cHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnkpKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1
Y3RvcikpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBu
b3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwotICAgIH0KLQotICAgIGZvciAo
YXV0byYgbmFtZWRUeXBlIDogbmFtZWRUeXBlcykgewotICAgICAgICBpZiAobWF0Y2hlcyhuYW1l
ZFR5cGUsIHByb2dyYW0uaW50cmluc2ljcygpLnZvaWRUeXBlKCkpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGlj
X2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSAmJiBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUp
KS5pc0F0b21pYygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0byBsb2Nh
dGlvbiA9IG5hbWVkVHlwZS5nZXQoKS5jb2RlTG9jYXRpb24oKTsKLQotICAgICAgICBhdXRvIHZh
cmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
bG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsK
LSAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICBw
YXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAg
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxs
b3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSks
ICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3Bl
cmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsKLQotICAgICAgICBpZiAoaXM8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRU
eXBlKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlw
ZSY+KG5hbWVkVHlwZSkpOwotICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5p
c09wYXF1ZVR5cGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAg
ICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0cnVjdG9yKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBz
dGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBl
LmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygp
LCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0g
ICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRo
ZXNpemUgZGVmYXVsdCBjb25zdHJ1Y3RvciIpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEyMjU1MGVhMmZiZDJiYjIxNjIw
ZGEwMjVmODFkYWUxZDRmZGE1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1F
eHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJik7Ci0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVy
YXRpb25GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMDUwNzM4MjNjN2RhMWQ3YTEyN2YzZDU2YmI2ZjIwNTFhOWRmZmQ5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
QWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0
aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0g
ICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9u
RGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGxvY2F0aW9uID0gZW51bWVyYXRpb25EZWZp
bml0aW9uLT5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byB2YXJp
YWJsZURlY2xhcmF0aW9uMSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
Pihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChs
b2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIpOwotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uMiA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCks
IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9u
KSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQo
V1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMSkpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMikpOwotICAgICAgICAgICAgQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6
bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBwcm9ncmFtLmludHJp
bnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwot
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
IkNhbm5vdCBjcmVhdGUgb3BlcmF0b3I9PSBmb3IgZW51bSB0eXBlLiIpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZp
ZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZp
bml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpu
dWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgIm9wZXJhdG9yIGNhc3QiX3N0
ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgY29weSBjb25zdHJ1Y3RvciBmb3Ig
ZW51bSB0eXBlLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8g
dmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksICZlbnVtZXJhdGlvbkRlZmluaXRpb24t
PnR5cGUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpu
dWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVm
aW5pdGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxw
dHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAg
ICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3Qg
Y3JlYXRlICdvcGVyYXRvciBjYXN0JyBmb3IgZW51bSB0eXBlLiIpKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNp
emVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmM1YmUxNGVjMTNiYzYwMDk0YmZhY2QxNTY0NzdkYWNkMDgwM2E3
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1
bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZv
aWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYpOwotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODBmZDUwOGM2Y2EyZDI0OWNmZjA0ZTYyNjFiZmYxNWM3
NjBkNzQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZXNlIHZpc2l0aW5nIGZ1bmN0
aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBkb24ndCB1c2UgZm9yZWFj
aCBzeW50YXguCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS50
eXBlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFt
LnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5p
dGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9u
RGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHBy
b2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBpZiAoaXM8QVNUOjpU
eXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFt
ZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBpZiAoaXM8QVNUOjpUeXBlRGVmaW5p
dGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgZWxz
ZSBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4o
bmFtZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlv
bikKLXsKLSAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0
aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1
Y3R1cmVFbGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICBmb3IgKGF1dG8mIGVudW1l
cmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmlu
aXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJn
dW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlw
ZVJlZmVyZW5jZSkKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVu
Y2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3Vt
ZW50KTsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpICYmIGlzPEFT
VDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKSB7Ci0gICAg
ICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4o
dHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRlclR5cGUpKTsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVu
Y2VUeXBlKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVy
ZW5jZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChh
cnJheVR5cGUudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0
cnVjdHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICBpZiAoc3RydWN0dXJlRWxlbWVudC5zZW1hbnRp
YygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50
aWMoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYp
Ci17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBm
dW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRl
Y2xhcmF0aW9uLmF0dHJpYnV0ZUJsb2NrKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5j
dGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHBhcmFtZXRlcik7Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGljKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1l
bnQpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkNvbnN0YW50
RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChjb25zdGFudEV4cHJlc3Npb24pOwotICAgIH0sIFsmXShSZWY8QVNUOjpUeXBlUmVmZXJl
bmNlPiYgdHlwZVJlZmVyZW5jZSkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJl
ZmVyZW5jZSk7Ci0gICAgfSksIHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBlKQotewotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewotICAgIFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykgewot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYnVpbHRJblNlbWFudGljKTsKLSAgICB9LCBbJl0o
QVNUOjpSZXNvdXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZXNvdXJjZVNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYykg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljKTsKLSAgICB9LCBbJl0oQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1h
bnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhZ2VJbk91dFNlbWFudGljKTsK
LSAgICB9KSwgc2VtYW50aWMpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAgY29uc3RhbnRFeHByZXNz
aW9uLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVn
ZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbCk7
Ci0gICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6
Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChib29sZWFuTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk7Ci0gICAgfSkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0dHJpYnV0ZUJsb2NrKQotewotICAg
IGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVCbG9jaykKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpCi17Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC50eXBl
KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExp
dGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbC50eXBlKCkpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKQotewotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJiBpbnRlZ2VyTGl0ZXJh
bFR5cGUpCi17Ci0gICAgaWYgKGludGVnZXJMaXRlcmFsVHlwZS5tYXliZVJlc29sdmVkVHlwZSgp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVk
VHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWxUeXBlLnByZWZl
cnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpCi17Ci0gICAgaWYgKHVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnBy
ZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVy
YWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKQotewotICAgIGlmIChmbG9hdExpdGVyYWxUeXBlLm1h
eWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9hdExpdGVy
YWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRl
cmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJpYnV0ZSkKLXsKLSAgICBXVEY6OnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
JiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgfSksIGZ1bmN0aW9uQXR0cmli
dXRlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxvY2sp
Ci17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9jay5zdGF0ZW1lbnRzKCkpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3RhdGVtZW50TGlzdCkKLXsKLSAgICBmb3IgKGF1dG8m
IHN0YXRlbWVudCA6IHN0YXRlbWVudExpc3Quc3RhdGVtZW50cygpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0
YXRlbWVudCYgc3RhdGVtZW50KQotewotICAgIHN3aXRjaCAoc3RhdGVtZW50LmtpbmQoKSkgewot
ICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJsb2NrOgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJyZWFrOgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkNvbnRpbnVlOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkRvV2hpbGVMb29w
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb1doaWxlTG9vcD4o
c3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6Oktp
bmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb246Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpGYWxsdGhyb3VnaDoK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RmFsbHRocm91Z2g+KHN0
YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpGb3JMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGb3JM
b29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVu
dDo6S2luZDo6SWY6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Oklm
U3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6UmV0dXJuOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpTdGF0ZW1lbnRMaXN0OgotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3dpdGNoQ2FzZToKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRj
aDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3dpdGNoU3RhdGVt
ZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVu
dDo6S2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6V2hpbGVM
b29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpXaGlsZUxvb3A+
KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpCcmVhayYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb250
aW51ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9X
aGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAg
ICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Np
b24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNh
bGw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpGbG9h
dExpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZsb2F0
TGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
TG9naWNhbE5vdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkluZGV4OgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlX
cml0ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lv
biYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihkb3RFeHByZXNzaW9uKSk7Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYgZ2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlLmJhc2UoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbmRleEV4
cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5k
ZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihpbmRleEV4cHJlc3Np
b24pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbi5i
YXNlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5lZmZlY3RmdWxFeHByZXNz
aW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQotewot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAgICBpZiAoZm9y
TG9vcC5jb25kaXRpb24oKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmNv
bmRpdGlvbigpKTsKLSAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZm9yTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SWZTdGF0
ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVu
dC5jb25kaXRpb25hbCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9k
eSgpKTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAgIGlmIChyZXR1cm5TdGF0
ZW1lbnQudmFsdWUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpyZXR1cm5TdGF0ZW1l
bnQudmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBz
d2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCgqc3dpdGNoQ2FzZS52YWx1ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN3
aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDog
c3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzd2l0Y2hDYXNlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsKLSAg
ICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodmFyaWFibGVEZWNsYXJhdGlvbi5nZXQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hp
bGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3Au
Ym9keSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24u
dHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24u
dHlwZSgpKTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci0g
ICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRF
eHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lv
bi5sZWZ0KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5y
aWdodCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBj
YWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJlc3Np
b24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhcmd1bWVudCk7Ci0g
ICAgaWYgKGNhbGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lvbikKLXsK
LSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIo
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYgbG9n
aWNhbEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNz
aW9uLmxlZnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJp
Z2h0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Np
b24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dp
Y2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChy
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHBy
ZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Np
b24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5
RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlF
eHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJu
YXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3YzI1NTkxZjY0MWFlNGJk
NzZhY2I1Mjc0ZjliNjhhZDdkNmNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUg
IldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBl
RGVmaW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgVHlw
ZVJlZmVyZW5jZTsKLWNsYXNzIFBvaW50ZXJUeXBlOwotY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBl
OwotY2xhc3MgQXJyYXlUeXBlOwotY2xhc3MgU3RydWN0dXJlRWxlbWVudDsKLWNsYXNzIEVudW1l
cmF0aW9uTWVtYmVyOwotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIFJlZmVyZW5j
ZVR5cGU7Ci1jbGFzcyBDb25zdGFudEV4cHJlc3Npb247Ci1jbGFzcyBCdWlsdEluU2VtYW50aWM7
Ci1jbGFzcyBSZXNvdXJjZVNlbWFudGljOwotY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljOwotY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljOwotY2xhc3MgSW50ZWdlckxpdGVyYWw7
Ci1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsOwotY2xhc3MgRmxvYXRMaXRlcmFsOwotY2xh
c3MgQm9vbGVhbkxpdGVyYWw7Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw7Ci1jbGFz
cyBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU7Ci1jbGFzcyBCbG9jazsKLWNsYXNzIFN0YXRl
bWVudExpc3Q7Ci1jbGFzcyBTdGF0ZW1lbnQ7Ci1jbGFzcyBCcmVhazsKLWNsYXNzIENvbnRpbnVl
OwotY2xhc3MgRG9XaGlsZUxvb3A7Ci1jbGFzcyBFeHByZXNzaW9uOwotY2xhc3MgRG90RXhwcmVz
c2lvbjsKLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOwotY2xhc3MgSW5kZXhFeHByZXNz
aW9uOwotY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwotY2xhc3MgRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudDsKLWNsYXNzIEZhbGx0aHJvdWdoOwotY2xhc3MgRm9yTG9vcDsKLWNs
YXNzIElmU3RhdGVtZW50OwotY2xhc3MgUmV0dXJuOwotY2xhc3MgU3dpdGNoQ2FzZTsKLWNsYXNz
IFN3aXRjaFN0YXRlbWVudDsKLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Owot
Y2xhc3MgV2hpbGVMb29wOwotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbjsKLWNsYXNzIEFzc2ln
bm1lbnRFeHByZXNzaW9uOwotY2xhc3MgQ2FsbEV4cHJlc3Npb247Ci1jbGFzcyBDb21tYUV4cHJl
c3Npb247Ci1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb247Ci1jbGFzcyBMb2dpY2FsRXhwcmVz
c2lvbjsKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uOwotY2xhc3MgTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbjsKLWNsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lvbjsKLWNsYXNzIFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb247Ci1jbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbjsKLWNsYXNzIFZh
cmlhYmxlUmVmZXJlbmNlOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci1jbGFzcyBOYW1lZFR5cGU7Ci0K
LX0KLQotY2xhc3MgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+VmlzaXRvcigpID0g
ZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTcxIEFkZCBhIHdheSB0byB2aXNpdCBhIGNvbnN0IFByb2dyYW0KLQotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6VW5uYW1lZFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOYW1lZFR5cGUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6VHlwZVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlBvaW50
ZXJUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5
cGVBcmd1bWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
QnVpbHRJblNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmVzb3VyY2VT
ZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpGbG9hdExpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rp
b25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpCcmVhayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnRpbnVlJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RG90
RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OklmU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmV0dXJu
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkFzc2ln
bm1lbnRFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJl
c3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJik7Ci0KLSAgICBib29sIGhhc0Vycm9yKCkgY29u
c3QgeyByZXR1cm4gIW1fZXhwZWN0ZWRFcnJvcjsgfQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9y
PiByZXN1bHQoKSB7IHJldHVybiBtX2V4cGVjdGVkRXJyb3I7IH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KFQmIHgpCi0gICAgewotICAgICAgICBp
ZiAoIWhhc0Vycm9yKCkpCi0gICAgICAgICAgICB2aXNpdCh4KTsKLSAgICB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICB2b2lkIHNldEVycm9yKEVycm9yIGVycm9yKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KCFoYXNFcnJvcigpKTsKLSAgICAgICAgbV9leHBlY3RlZEVycm9yID0gbWFrZVVuZXhwZWN0ZWQo
ZXJyb3IpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gbV9l
eHBlY3RlZEVycm9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRkZDU4OWNhZjc2NzIxMTliOGE1NDU4YmI1N2EzYmRlZDZhZWU0ZTYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVUFkYXB0
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVPiBXZWJHUFU6OmNyZWF0
ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVKTsKLX0KLQotdm9pZCBXZWJH
UFU6OnJlcXVlc3RBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
PiYmIG9wdGlvbnMsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYgZGVmZXJyZWQpIGNvbnN0Ci17Ci0g
ICAgYXV0byBhZGFwdGVyID0gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKFdURk1vdmUob3B0aW9ucykp
OwotICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjA1MjQw
ZDAwNmIzYzQyNGI0OTA2N2MyM2UxNDkzY2FiZDIzMDgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQWRhcHRlcjsKLQotc3RydWN0IEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9uczsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xh
c3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJHUFUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJHUFU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVT4gY3JlYXRlKCk7Ci0K
LSAgICB1c2luZyBXZWJHUFVBZGFwdGVyUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+OwotCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiwgV2ViR1BVQWRhcHRlclByb21p
c2UmJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVKCkgPSBkZWZhdWx0OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZmUyNWQ4NmEyY2EyNDg5ZGIxMzI0M2IzYzY3NTIwYWRkMDk4ZTdiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVLAotICAgIEV4cG9z
ZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFUgewotICAgIFByb21pc2U8V2ViR1BVQWRhcHRl
cj4gcmVxdWVzdEFkYXB0ZXIob3B0aW9uYWwgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlv
bnMpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNmY5OTRmYjIwMzU0YjNlYTk4
OTMyMzdkY2MxMTExYjZlZWIxNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAi
SlNXZWJHUFVEZXZpY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQWRh
cHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
QWRhcHRlcihXVEZNb3ZlKG9wdGlvbnMpKSk7Ci19Ci0KLVdlYkdQVUFkYXB0ZXI6OldlYkdQVUFk
YXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYgb3B0aW9ucykK
LSAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQotewotfQotCi12b2lkIFdlYkdQVUFk
YXB0ZXI6OnJlcXVlc3REZXZpY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBEZXZpY2VSZXF1ZXN0UHJv
bWlzZSYmIHByb21pc2UpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQucG9zdFRhc2soW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8g
ZGV2aWNlID0gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29udGV4dCwgcHJvdGVjdGVkVGhpcy5n
ZXQoKSkpIHsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V2ViR1BVRGV2aWNlKCpkZXZpY2UpOwotCi0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoZGV2
aWNlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVBZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MTljZWQ0NjI0
MmZhOGE0MTcxYjdlM2Y4NTgxY2VhZTQ2ZTU5NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QWRhcHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
Zi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xhc3MgV2ViR1BVQWRh
cHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0ZXI+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucz4mJik7Ci0KLSAgICB1c2luZyBEZXZpY2VSZXF1ZXN0UHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVRGV2aWNlPj47Ci0gICAgdm9pZCBy
ZXF1ZXN0RGV2aWNlKERvY3VtZW50JiwgRGV2aWNlUmVxdWVzdFByb21pc2UmJikgY29uc3Q7Ci0g
ICAgCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBv
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViR1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cz4mJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4gbV9v
cHRpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRl
ci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2NjFhYjAwNjQzOTBkOWZmYTky
MTQ2YmY5YTE5MDY1NzI4OGMzNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEludGVyZmFjZU5hbWU9R1BVQWRhcHRlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgV2ViR1BVQWRhcHRlciB7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBuYW1lOwotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVFeHRlbnNpb25zIGV4
dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUxpbWl0cyBsaW1pdHM7
IERvbid0IGV4cG9zZSBoaWdoZXIgbGltaXRzIGZvciBub3cuCi0KLSAgICAvLyBNYXkgcmVqZWN0
IHdpdGggRE9NRXhjZXB0aW9uICAvLyBUT0RPOiBET01FeGNlcHRpb24oIk9wZXJhdGlvbkVycm9y
Iik/Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPFdlYkdQVURldmljZT4gcmVxdWVz
dERldmljZSgvKkdQVURldmljZURlc2NyaXB0b3IgZGVzY3JpcHRvciovKTsKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ4ZmUxZGYxNjNmYzU1YWNiY2M1MWE3NDIwOTA2ZjJk
YzE2NGY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJpbmRHcm91cD4gV2ViR1BVQmluZEdyb3Vw
OjpjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5kR3JvdXApCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR1BVQmluZEdyb3VwKFdURk1vdmUoYmluZEdyb3VwKSkpOwotfQot
Ci1XZWJHUFVCaW5kR3JvdXA6OldlYkdQVUJpbmRHcm91cChSZWZQdHI8R1BVQmluZEdyb3VwPiYm
IGJpbmRHcm91cCkKLSAgICA6IG1fYmluZEdyb3VwKFdURk1vdmUoYmluZEdyb3VwKSkKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzI1ZmIyYWVmNTU0MWIwMzRkMmQ5MWU1YTY3MWM1
YzI2ZmE3MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgV2ViR1BVQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BV
QmluZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVCaW5kR3JvdXA+IGNy
ZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwPiYmKTsKLQotICAgIEdQVUJpbmRHcm91cCogYmluZEdy
b3VwKCkgeyByZXR1cm4gbV9iaW5kR3JvdXAuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBXZWJHUFVCaW5kR3JvdXAoUmVmUHRyPEdQVUJpbmRHcm91cD4mJik7Ci0KLSAgICBSZWZQ
dHI8R1BVQmluZEdyb3VwPiBtX2JpbmRHcm91cDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzc5MzAyOTQ4YjQ1M2IzZWU3Zjk1NmM2NGFmMzhiNGZjOTBlOWQ0Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUJpbmRH
cm91cCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQmluZEdyb3VwIHsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ODAwMTAzYzlh
N2UzNWY0NzYyNjY1MzFmNTEyYThjYmU3OWZiM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwQmluZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldl
YkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVTYW1wbGVyLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIFdlYkdQVUJpbmRpbmdSZXNvdXJjZSA9IFZhcmlhbnQ8
UmVmUHRyPFdlYkdQVVNhbXBsZXI+LCBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+LCBXZWJHUFVC
dWZmZXJCaW5kaW5nPjsKLQotc3RydWN0IFdlYkdQVUJpbmRHcm91cEJpbmRpbmcgewotICAgIHVu
c2lnbmVkIGJpbmRpbmc7Ci0gICAgV2ViR1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJp
bmRpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
QmluZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZjZhZWVmODM5Mzlh
YTUyMzUwZDljMDlhOWMwNWRjZmU5YzM1NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwQmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHUzMjsKLXR5cGVkZWYgKFdlYkdQVVNhbXBsZXIgb3IgV2ViR1BVVGV4dHVyZVZpZXcg
b3IgV2ViR1BVQnVmZmVyQmluZGluZykgV2ViR1BVQmluZGluZ1Jlc291cmNlOwotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rp
b25hcnkgV2ViR1BVQmluZEdyb3VwQmluZGluZyB7Ci0gICAgcmVxdWlyZWQgdTMyIGJpbmRpbmc7
Ci0gICAgcmVxdWlyZWQgV2ViR1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNlOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YzhlZDkzYTE4
MDRjMDk4Nzk3MWE5ZTdmYjEyYTZhMzUxNzY5NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBib29sIHZhbGlkYXRlQnVmZmVyQmluZGluZ1R5cGUoY29uc3QgR1BVQnVmZmVy
KiBidWZmZXIsIGNvbnN0IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcmIGJpbmRpbmcsIGNvbnN0
IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVT
RURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0gICAgc3dpdGNoIChiaW5kaW5nLnR5
cGUpIHsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVmZmVyOgotICAgICAgICBp
ZiAoIWJ1ZmZlci0+aXNVbmlmb3JtKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczog
R1BVQnVmZmVyIHJlc291cmNlIGZvciBiaW5kaW5nICV1IGRvZXMgbm90IGhhdmUgVU5JRk9STSB1
c2FnZSEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBHUFVC
aW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgaWYgKCFidWZmZXItPmlzU3RvcmFn
ZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlciByZXNvdXJjZSBm
b3IgYmluZGluZyAldSBkb2VzIG5vdCBoYXZlIFNUT1JBR0UgdXNhZ2UhIiwgZnVuY3Rpb25OYW1l
LCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPRyhXZWJHUFUs
ICIlczogTGF5b3V0IGJpbmRpbmcgJXUgaXMgbm90IGEgYnVmZmVyLXR5cGUgcmVzb3VyY2UhIiwg
ZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25z
dAotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cCgpIjsKLQotICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXQtPmJpbmRHcm91
cExheW91dCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVCaW5kR3Jv
dXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICB9Ci0KLSAgICBpZiAoYmluZGluZ3Muc2l6ZSgpICE9IGxheW91dC0+YmluZEdyb3VwTGF5
b3V0KCktPmJpbmRpbmdzTWFwKCkuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczog
TWlzbWF0Y2hlZCBudW1iZXIgb2YgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZ3MgYW5kIEdQVUJp
bmRHcm91cEJpbmRpbmdzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBsYXlvdXRNYXAgPSBsYXlvdXQtPmJpbmRHcm91cExh
eW91dCgpLT5iaW5kaW5nc01hcCgpOwotCi0gICAgVmVjdG9yPEdQVUJpbmRHcm91cEJpbmRpbmc+
IGJpbmRHcm91cEJpbmRpbmdzOwotICAgIGJpbmRHcm91cEJpbmRpbmdzLnJlc2VydmVDYXBhY2l0
eShiaW5kaW5ncy5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBiaW5kaW5nIDogYmlu
ZGluZ3MpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IGxheW91dE1hcC5maW5kKGJpbmRpbmcu
YmluZGluZyk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBsYXlvdXRNYXAuZW5kKCkpIHsKLSAg
ICAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyAldSBu
b3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5i
aW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb25zdCBhdXRvIGxheW91dEJpbmRpbmcgPSBpdGVyYXRvci0+dmFsdWU7Ci0KLSAg
ICAgICAgYXV0byBiaW5kaW5nUmVzb3VyY2VWaXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShj
b25zdCBSZWZQdHI8V2ViR1BVU2FtcGxlcj4mIHNhbXBsZXIpIC0+IHN0ZDo6b3B0aW9uYWw8R1BV
QmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAgICBpZiAoIXNhbXBsZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGF1dG8gZ3B1U2FtcGxlciA9
IHNhbXBsZXItPnNhbXBsZXIoKTsKLSAgICAgICAgICAgIGlmICghZ3B1U2FtcGxlcikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCpncHVTYW1wbGVyKSk7Ci0gICAg
ICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4mIHZpZXcpIC0+IHN0ZDo6
b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAgICBpZiAoIXZpZXcpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGF1dG8gdGV4
dHVyZSA9IHZpZXctPnRleHR1cmUoKTsKLSAgICAgICAgICAgIGlmICghdGV4dHVyZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCp0ZXh0dXJlKSk7Ci0gICAgICAg
IH0sIFsmbGF5b3V0QmluZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BVQnVmZmVyQmluZGluZyBi
dWZmZXJCaW5kaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewotICAg
ICAgICAgICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBidWZmZXJCaW5kaW5n
LmJ1ZmZlci0+YnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICBpZiAoIXZhbGlkYXRlQnVm
ZmVyQmluZGluZ1R5cGUoYnVmZmVyLCBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZywgZnVu
Y3Rpb25OYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihHUFVCdWZmZXJC
aW5kaW5nIHsgbWFrZVJlZigqYnVmZmVyKSwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJp
bmRpbmcuc2l6ZSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgYXV0byBiaW5kaW5nUmVzb3Vy
Y2UgPSBXVEY6OnZpc2l0KGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IsIGJpbmRpbmcucmVzb3VyY2Up
OwotICAgICAgICBpZiAoIWJpbmRpbmdSZXNvdXJjZSkgewotICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBJbnZhbGlkIHJlc291cmNlIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwg
bGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgYmluZEdyb3VwQmluZGluZ3Mu
dW5jaGVja2VkQXBwZW5kKEdQVUJpbmRHcm91cEJpbmRpbmcgeyBiaW5kaW5nLmJpbmRpbmcsIFdU
Rk1vdmUoYmluZGluZ1Jlc291cmNlLnZhbHVlKCkpIH0pOwotICAgIH0KLQotICAgIHJldHVybiBH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsgbWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQo
KSksIFdURk1vdmUoYmluZEdyb3VwQmluZGluZ3MpIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjUyMTA4ZTA1ZWU3Y2RlNzVkNzU3MDVlZmQ0ZDYx
YTdhZTUyMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
PiB0cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8
Y29uc3QgV2ViR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7Ci0gICAgVmVjdG9yPFdlYkdQVUJp
bmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNzVjNjMyNTkwMDI5OTFhMTY2ZGE1MDBlZDIyYjc0Zjg1
YTVhNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVUJpbmRHcm91cExheW91dCBsYXlvdXQ7Ci0gICAg
cmVxdWlyZWQgc2VxdWVuY2U8V2ViR1BVQmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZDJmODc5MDE0ZTU2
M2RmOTE1MzYwNWJiMGUzMDVmNjNmZDE3NTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwTGF5b3V0
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxX
ZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVUJpbmRHcm91cExheW91dDo6Y3JlYXRlKFJlZlB0
cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUJpbmRHcm91cExheW91dChXVEZNb3ZlKGxheW91dCkpKTsKLX0KLQotV2ViR1BV
QmluZEdyb3VwTGF5b3V0OjpXZWJHUFVCaW5kR3JvdXBMYXlvdXQoUmVmUHRyPEdQVUJpbmRHcm91
cExheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX2JpbmRHcm91cExheW91dChXVEZNb3ZlKGxheW91
dCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWNjNWE3NTEy
YmMwN2FhNWI5NTI4NjA3YWYyY2Q4NDFhOTIyMDAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cExheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJp
bmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJpbmRHcm91cExheW91dD4g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBjcmVhdGUo
UmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJik7Ci0KLSAgICBjb25zdCBHUFVCaW5kR3JvdXBM
YXlvdXQqIGJpbmRHcm91cExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEdyb3VwTGF5b3V0
LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQmluZEdyb3VwTGF5b3V0
KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYpOwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91
cExheW91dD4gbV9iaW5kR3JvdXBMYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFlZTNlMjRmMTJhM2FlODFhZGNlY2M1ZTVlMThmMGJhNzhiMTI3ZmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJm
YWNlTmFtZT1HUFVCaW5kR3JvdXBMYXlvdXQsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJm
YWNlIFdlYkdQVUJpbmRHcm91cExheW91dCB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEwNjYyNjQ5NDE4YjQ2OGRiNGYwOTMwMjg2YjcxYjIzYzIzOTc3YTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVCdWZm
ZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVCdWZmZXI+JiYgYnVmZmVyLCBHUFVF
cnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZXJyb3JTY29wZXMpKTsKLX0KLQotV2ViR1BVQnVm
ZmVyOjpXZWJHUFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4mJiBidWZmZXIsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKLSAgICA6IEdQVU9iamVjdEJhc2UobWFrZVJlZihlcnJvclNjb3Bl
cykpCi0gICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLXZvaWQgV2ViR1BV
QnVmZmVyOjptYXBSZWFkQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJiBwcm9taXNlKQotewot
ICAgIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJhY2soV1RGTW92ZShwcm9taXNlKSwgdHJ1
ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjptYXBXcml0ZUFzeW5jKEJ1ZmZlck1hcHBpbmdQ
cm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNhbGxiYWNr
KFdURk1vdmUocHJvbWlzZSksIGZhbHNlKTsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6OnVubWFw
KCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KCJHUFVCdWZmZXIudW5tYXAo
KTogIik7Ci0KLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBlcnJvclNjb3BlcygpLmdlbmVy
YXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb246IGludmFsaWQgR1BVQnVmZmVyISIp
OwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPnVubWFwKCZlcnJvclNjb3BlcygpKTsKLX0K
LQotdm9pZCBXZWJHUFVCdWZmZXI6OmRlc3Ryb3koKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0
RXJyb3JQcmVmaXgoIkdQVUJ1ZmZlci5kZXN0cm95KCk6ICIpOwotCi0gICAgaWYgKCFtX2J1ZmZl
cikKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQg
b3BlcmF0aW9uISIpOwotICAgIGVsc2UgewotICAgICAgICBtX2J1ZmZlci0+ZGVzdHJveSgmZXJy
b3JTY29wZXMoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KLXZv
aWQgV2ViR1BVQnVmZmVyOjpyZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNhbGxiYWNrKEJ1ZmZlck1h
cHBpbmdQcm9taXNlJiYgcHJvbWlzZSwgYm9vbCBpc1JlYWQpCi17Ci0gICAgZXJyb3JTY29wZXMo
KS5zZXRFcnJvclByZWZpeChtYWtlU3RyaW5nKCJHUFVCdWZmZXIubWFwIiwgaXNSZWFkID8gIlJl
YWQiIDogIldyaXRlIiwgIkFzeW5jKCk6ICIpKTsKLQotICAgIGlmICghbV9idWZmZXIpIHsKLSAg
ICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0
aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYnVmZmVyLT5yZWdpc3Rlck1hcHBpbmdDYWxs
YmFjayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHByb3RlY3RlZEVycm9yU2NvcGVzID0g
bWFrZVJlZihlcnJvclNjb3BlcygpKV0gKEpTQzo6QXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKGFycmF5QnVmZmVyKQotICAgICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCphcnJheUJ1ZmZlcik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gRklY
TUU6IEl0J3MgcG9zc2libGUgdG8gaGl0IHRoaXMgY29kZSBwYXRoIGluIHJlc3BvbnNlIHRvIGFu
IHVubWFwIGNhbGwsIHdoZXJlCi0gICAgICAgICAgICAvLyB0aGUgQXJyYXlCdWZmZXIgd2lsbCBk
ZWZpbml0ZWx5IGJlIG51bGwsIGFuZCB0aHVzIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgbWFrZXMg
bm8gc2Vuc2UuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MTY2Ci0gICAgICAgICAgICBwcm90ZWN0ZWRFcnJvclNjb3Blcy0+Z2VuZXJh
dGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICB9LCBpc1JlYWQsIGVycm9yU2NvcGVzKCkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJlZWUyMDkyYTNkZWRmN2I3MzUyNmQ5ZWQ4YTMyOTIz
YWVmNGI3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJV
c2FnZS5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKLSNpbmNsdWRlICJJRExUeXBlcy5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJh
eUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQnVmZmVyRGVz
Y3JpcHRvcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURl
ZmVycmVkOwotCi1jbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgR1BVT2JqZWN0QmFzZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWZQdHI8R1BVQnVm
ZmVyPiYmLCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgR1BVQnVmZmVyKiBidWZmZXIoKSB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEdQVUJ1ZmZlciogYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLQotICAgIHVzaW5nIEJ1ZmZlck1hcHBpbmdQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxKU0M6OkFycmF5QnVmZmVy
Pj47Ci0gICAgdm9pZCBtYXBSZWFkQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJik7Ci0gICAg
dm9pZCBtYXBXcml0ZUFzeW5jKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYpOwotICAgIHZvaWQgdW5t
YXAoKTsKLSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJH
UFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIHZv
aWQgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhCdWZmZXJNYXBwaW5nUHJvbWlzZSYm
LCBib29sKTsKLQotICAgIFJlZlB0cjxHUFVCdWZmZXI+IG1fYnVmZmVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YjBhOTBjNDExN2MxZjA0N2NjZDRjOWUxNTQzODJlNzg1MTIzNmRjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9
R1BVQnVmZmVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVCdWZmZXIg
ewotICAgIFByb21pc2U8QXJyYXlCdWZmZXI+IG1hcFJlYWRBc3luYygpOwotICAgIFByb21pc2U8
QXJyYXlCdWZmZXI+IG1hcFdyaXRlQXN5bmMoKTsKLSAgICB1bmRlZmluZWQgdW5tYXAoKTsKLQot
ICAgIHVuZGVmaW5lZCBkZXN0cm95KCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkN2Q4YjhjODBmOWQwZWY4ZmZlNTRjYzA0NmY2MDY4M2U2YzY3YTRkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVUJ1ZmZlckJpbmRpbmcgewotICAg
IFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAg
dWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MWQ4MjZkZGY2YTBmNmViODRlOTk1ZTUyYzVhMmE1N2JjYjdmMzk2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUJ1ZmZlckJp
bmRpbmcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZlciBidWZmZXI7Ci0gICAgdTY0IG9mZnNl
dCA9IDA7Ci0gICAgcmVxdWlyZWQgdTY0IHNpemU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTUxMDUxMTc3NmQ4N2ViNTI3MTg3NTUyMjYwMzUzODAzOWUxZmM2
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29t
bWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkpOwotfQotCi1XZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5kQnVmZmVyKFJl
ZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgz
YTFkYTRlYTNjMDliY2Q5N2E3Yzg2ZDc2Y2ViOGIwMDliZmUzNDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJH
UFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFJl
ZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1hbmRCdWZmZXIqIGNvbW1h
bmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToK
LSAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQot
ICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFlMmYyZGNiY2IyYjE1NzZhMWYxOGVlM2Jh
NjIwMGNmNTdiZTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
Ci0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kQnVmZmVyLAotICAgIEV4cG9zZWQ9V2luZG93
Ci1dIGludGVyZmFjZSBXZWJHUFVDb21tYW5kQnVmZmVyIHsKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkM2U0N2Q3MDU2ZTUxNmQwZDQ5NjJjYmUzYTg4ZjAw
NTM5ZjVhYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIK
LSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rk
OjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNy
ZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1ZmZlciB8fCAhYnVm
ZmVyLT5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29k
ZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0g
ICAgcmV0dXJuIEdQVUJ1ZmZlckNvcHlWaWV3IHsgbWFrZVJlZigqYnVmZmVyLT5idWZmZXIoKSks
ICp0aGlzIH07Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVU
ZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0Ci17Ci0g
ICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICByZXR1cm4gR1BVVGV4dHVyZUNvcHlWaWV3IHsg
bWFrZVJlZigqdGV4dHVyZS0+dGV4dHVyZSgpKSwgKnRoaXMgfTsKLX0KLQotUmVmPFdlYkdQVUNv
bW1hbmRFbmNvZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21t
YW5kQnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVD
b21tYW5kRW5jb2RlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OldlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLVJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVy
UGFzcyhjb25zdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAg
ICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29t
bWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAg
ICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobnVsbHB0cik7Ci0g
ICAgfQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJl
dHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG51bGxwdHIpOwotCi0gICAgYXV0
byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0ZShtYWtlUmVmKCptX2Nv
bW1hbmRCdWZmZXIpLCBXVEZNb3ZlKCpncHVEZXNjcmlwdG9yKSk7Ci0gICAgcmV0dXJuIFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLVJlZjxX
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1
dGVQYXNzKCkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNy
ZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAgYXV0byBlbmNvZGVyID0gR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVmZmVyKSk7Ci0gICAgcmV0dXJu
IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKFdURk1vdmUoZW5jb2RlcikpOwotfQot
Ci12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoV2ViR1BVQnVm
ZmVyJiBzcmMsIHVpbnQ2NF90IHNyY09mZnNldCwgV2ViR1BVQnVmZmVyJiBkc3QsIHVpbnQ2NF90
IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikg
ewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJU
b0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoIXNyYy5idWZmZXIoKSB8fCAhZHN0LmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFs
aWQgR1BVQnVmZmVyISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6
IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlCdWZm
ZXJUb0J1ZmZlcihtYWtlUmVmKCpzcmMuYnVmZmVyKCkpLCBzcmNPZmZzZXQsIG1ha2VSZWYoKmRz
dC5idWZmZXIoKSksIGRzdE9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVu
Y29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmIHNy
Y0J1ZmZlciwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBkc3RUZXh0dXJlLCBjb25zdCBH
UFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAg
ICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0
byBncHVCdWZmZXJWaWV3ID0gc3JjQnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7
Ci0gICAgYXV0byBncHVUZXh0dXJlVmlldyA9IGRzdFRleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVy
ZUNvcHlWaWV3KCk7Ci0KLSAgICBpZiAoIWdwdUJ1ZmZlclZpZXcgfHwgIWdwdVRleHR1cmVWaWV3
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlv
bi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlclRvVGV4dHVyZShXVEZNb3ZlKCpn
cHVCdWZmZXJWaWV3KSwgV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBzaXplKTsKLX0KLQotdm9p
ZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVU
ZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBk
c3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmICghbV9jb21tYW5k
QnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gc3JjVGV4dHVyZS50cnlDcmVhdGVH
UFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBkc3RCdWZmZXIu
dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1VGV4dHVyZVZpZXcg
fHwgIWdwdUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBBZGQg
V2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4dHVyZVRv
QnVmZmVyKFdURk1vdmUoKmdwdVRleHR1cmVWaWV3KSwgV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyks
IHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4
dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyYywgY29uc3QgV2ViR1BVVGV4dHVy
ZUNvcHlWaWV3JiBkc3QsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmICghbV9j
b21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVTcmNWaWV3ID0gc3JjLnRyeUNyZWF0ZUdQVVRl
eHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1RHN0VmlldyA9IGRzdC50cnlDcmVhdGVHUFVU
ZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1U3JjVmlldyB8fCAhZ3B1RHN0VmlldykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24u
Ci0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJlVG9UZXh0dXJlKFdURk1vdmUoKmdw
dVNyY1ZpZXcpLCBXVEZNb3ZlKCpncHVEc3RWaWV3KSwgc2l6ZSk7Ci19Ci0gICAgCi1SZWY8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmZpbmlzaCgpCi17Ci0gICAg
aWYgKCFtX2NvbW1hbmRCdWZmZXIgfHwgbV9jb21tYW5kQnVmZmVyLT5pc0VuY29kaW5nUGFzcygp
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZl
cjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICAvLyBQYXNzZXMgdGhlIHJlZmVyZW5jZWQg
R1BVQ29tbWFuZEJ1ZmZlciB0byB0aGUgV2ViR1BVQ29tbWFuZEJ1ZmZlciwgaW52YWxpZGF0aW5n
IHRoaXMgV2ViR1BVQ29tbWFuZEVuY29kZXIuCi0gICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZlMTg0YTExNGYyZGRkZmY5MGJlMzMyOGY1ZDFl
NjA3NDVjYjczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNp
bmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOwotY2xhc3Mg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1Y3Qg
R1BVRXh0ZW50M0Q7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLXN0cnVj
dCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Ci0gICAgc3Rk
OjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXco
KSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKLX07Ci0KLXN0cnVj
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlW
aWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZTsKLX07Ci0K
LWNsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29t
bWFuZEVuY29kZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRFbmNv
ZGVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgUmVmPFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3ImKTsKLSAgICBSZWY8V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBiZWdpbkNv
bXB1dGVQYXNzKCk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoV2ViR1BVQnVmZmVyJiwg
dWludDY0X3Qgc3JjT2Zmc2V0LCBXZWJHUFVCdWZmZXImLCB1aW50NjRfdCBkc3RPZmZzZXQsIHVp
bnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVC
dWZmZXJDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4
dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdlYkdQVVRleHR1
cmVDb3B5VmlldyYsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50
M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVD
b3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNE
Jik7Ci0gICAgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGZpbmlzaCgpOwotCi1wcml2YXRlOgot
ICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQot
ICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQyMmUwNDg0OGQyODU0YjhmNWMxMzI0
NWM0NjIxNjg4NjIyOTEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVy
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2Vi
R1BVQnVmZmVyQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVCdWZmZXJDb3B5VmlldyB7Ci0gICAg
cmVxdWlyZWQgV2ViR1BVQnVmZmVyIGJ1ZmZlcjsKLSAgICB1NjQgb2Zmc2V0ID0gMDsKLSAgICBy
ZXF1aXJlZCB1MzIgcm93UGl0Y2g7Ci0gICAgcmVxdWlyZWQgdTMyIGltYWdlSGVpZ2h0OwotfTsK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5VmlldwotXSBkaWN0aW9uYXJ5
IEdQVVRleHR1cmVDb3B5VmlldyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVVGV4dHVyZSB0ZXh0dXJl
OwotICAgIHUzMiBtaXBMZXZlbCA9IDA7Ci0gICAgdTMyIGFycmF5TGF5ZXIgPSAwOwotICAgIEdQ
VU9yaWdpbjNEIG9yaWdpbjsgLy8ge3g6IDAsIHk6IDAsIHo6IDB9Ci19OwotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kRW5jb2Rl
ciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZEVuY29kZXIg
ewotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXIgYmVnaW5Db21wdXRlUGFzcygpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlCdWZmZXJUb0J1ZmZl
cigKLSAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKLSAgICAgICAgdTY0IHNyY09mZnNldCwKLSAg
ICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKLSAgICAgICAgdTY0IGRzdE9mZnNldCwKLSAgICAgICAg
dTY0IHNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlCdWZmZXJUb1RleHR1cmUoCi0gICAgICAg
IEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IGRl
c3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICB1bmRlZmlu
ZWQgY29weVRleHR1cmVUb0J1ZmZlcigKLSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJj
ZSwKLSAgICAgICAgR1BVQnVmZmVyQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4
dGVudDNEIGNvcHlTaXplKTsKLQotICAgIHVuZGVmaW5lZCBjb3B5VGV4dHVyZVRvVGV4dHVyZSgK
LSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BVVGV4dHVyZUNv
cHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAg
ICBXZWJHUFVDb21tYW5kQnVmZmVyIGZpbmlzaCgpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZhNzg4Yzg2YmM5MWI4YjA3M2E2ZDViM2Q1
NTE1NzcyNzIzY2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgot
I2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IFdlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+JiYgZW5jb2RlcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIoV1RG
TW92ZShlbmNvZGVyKSkpOwotfQotCi1XZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OldlYkdQVUNv
bXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiYmIGVuY29kZXIp
Ci0gICAgOiBtX3Bhc3NFbmNvZGVyIHsgV1RGTW92ZShlbmNvZGVyKSB9Ci17Ci19Ci0KLXZvaWQg
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRl
UGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXBpcGVs
aW5lLmNvbXB1dGVQaXBlbGluZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgcGlwZWxpbmUhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUobWFrZVJlZigq
cGlwZWxpbmUuY29tcHV0ZVBpcGVsaW5lKCkpKTsKLX0KLQotdm9pZCBXZWJHUFVDb21wdXRlUGFz
c0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopCi17
Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21w
dXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24u
Ci0gICAgbV9wYXNzRW5jb2Rlci0+ZGlzcGF0Y2goeCwgeSwgeik7Ci19Ci0KLUdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkK
LXsKLSAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotY29uc3QgR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6cGFzc0VuY29kZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlZGMxMmUyZmMzMjhkOWE5NzYxOGI1
YzkwZTM1MzliZjQzZTc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGFzc0VuY29kZXI7Ci1jbGFzcyBHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVUNvbXB1dGVQaXBlbGluZTsKLQotY2xh
c3MgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGljIFdlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+JiYpOwotCi0gICAgdm9p
ZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIGRp
c3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopOwotCi1wcml2YXRlOgot
ICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVy
PiYmKTsKLQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGZp
bmFsOwotICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2Rlcigp
IGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gbV9wYXNz
RW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTM0NmM5NDg3Y2QxNjYyOTM4ODRiYWRlOTRiNTMwOTZiMDYwYjhjNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVD
b21wdXRlUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgRXhwb3Nl
ZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciA6IFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICB1bmRlZmluZWQgc2V0UGlwZWxpbmUoV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKTsKLSAgICB1bmRlZmluZWQgZGlzcGF0Y2godTMyIHgs
IHUzMiB5LCB1MzIgeik7Ci0KLSAgICAvLyBUT0RPIGFkZCBtaXNzaW5nIGNvbW1hbmRzCi19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQ
aXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZmZhMjgwYjljZThk
NzQ2MThhNjgwNzI5Y2E2ODA1MDgxNjAzODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5l
LmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZS5o
IgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1
bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
PFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoV2Vi
R1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUs
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEm
JiBjb21wdXRlU2hhZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbXB1
dGVQaXBlbGluZShkZXZpY2UsIFdURk1vdmUocGlwZWxpbmUpLCBlcnJvclNjb3BlcywgV1RGTW92
ZShjb21wdXRlU2hhZGVyKSkpOwotfQotCi1XZWJHUFVDb21wdXRlUGlwZWxpbmU6OldlYkdQVUNv
bXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVUNvbXB1dGVQaXBl
bGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBl
bGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpCi0gICAgOiBXZWJHUFVQaXBlbGluZShk
ZXZpY2UsIGVycm9yU2NvcGVzKQotICAgICwgbV9jb21wdXRlUGlwZWxpbmUoV1RGTW92ZShwaXBl
bGluZSkpCi0gICAgLCBtX2NvbXB1dGVTaGFkZXIoV1RGTW92ZShjb21wdXRlU2hhZGVyKSkKLXsK
LX0KLQotV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjp+V2ViR1BVQ29tcHV0ZVBpcGVsaW5lKCkgPSBk
ZWZhdWx0OwotCi1ib29sIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y2xvbmVTaGFkZXJNb2R1bGVz
KGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChtX2NvbXB1dGVTaGFkZXIu
bW9kdWxlKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNvbXB1dGVTb3VyY2UgPSBtX2NvbXB1dGVT
aGFkZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgbV9jb21wdXRlU2hhZGVyLm1vZHVsZSA9
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRl
dmljZS5kZXZpY2UoKSwgeyBjb21wdXRlU291cmNlIH0pLCBjb21wdXRlU291cmNlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJH
UFVDb21wdXRlUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkK
LXsKLSAgICBpZiAobV9jb21wdXRlUGlwZWxpbmUgJiYgbV9jb21wdXRlU2hhZGVyLm1vZHVsZSkg
ewotICAgICAgICBpZiAoYXV0byogZ3B1Q29tcHV0ZVNoYWRlck1vZHVsZSA9IG1fY29tcHV0ZVNo
YWRlci5tb2R1bGUtPm1vZHVsZSgpKSB7Ci0gICAgICAgICAgICBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlKG1ha2VSZWYoKmdwdUNvbXB1dGVTaGFkZXJNb2R1bGUp
LCB7IG1fY29tcHV0ZVNoYWRlci5lbnRyeVBvaW50IH0pOwotICAgICAgICAgICAgcmV0dXJuIG1f
Y29tcHV0ZVBpcGVsaW5lLT5yZWNvbXBpbGUoZGV2aWNlLmRldmljZSgpLCBXVEZNb3ZlKGNvbXB1
dGVTdGFnZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDcxMzUyZTI4MmE0YmVkODlkNmQ4N2Fi
ODJiYmUwZDlkODgwNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIEdQVVBpcGVsaW5lOwotY2xhc3MgR1BVRXJyb3JT
Y29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7Ci0K
LWNsYXNzIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQaXBlbGlu
ZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVQ29tcHV0ZVBpcGVsaW5lKCk7Ci0KLSAg
ICBzdGF0aWMgUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlKFdlYkdQVURldmljZSYs
IFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVzJiwgV2ViR1BVUGlw
ZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKTsKLQotICAgIGJvb2wgaXNDb21wdXRl
UGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBjb21wdXRlUGlwZWxpbmUoKTsgfQotICAgIGNvbnN0IEdQVUNvbXB1dGVQ
aXBlbGluZSogY29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlUGlwZWxp
bmUuZ2V0KCk7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBjb21wdXRlU2hhZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlU2hhZGVyLm1vZHVsZTsgfQotCi0gICAgYm9vbCBj
bG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0gICAgYm9vbCByZWNvbXBp
bGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYsIEdQVUVy
cm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKTsK
LQotICAgIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IG1fY29tcHV0ZVBpcGVsaW5lOwotCi0g
ICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgV2Vi
R1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgbV9jb21wdXRlU2hhZGVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQVVBJUEVMSU5FKFdl
YkNvcmU6OldlYkdQVUNvbXB1dGVQaXBlbGluZSwgaXNDb21wdXRlUGlwZWxpbmUoKSkKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWVhMmNlMmY0MjljNzU2YmM5YmJkMGY4ZDc5YjJiMzNiYzZjNDAwZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21wdXRlUGlwZWxpbmUsCi0gICAgRXhwb3Nl
ZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQaXBlbGluZSB7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDhkYjdkMzU4OGI3ZjFhZjgyMDMwYjQ5YTg1MTExMDgxZjkxYjM1OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9u
YWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxh
eW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7Ci0K
LSAgICBhdXRvIGNvbXB1dGUgPSBjb21wdXRlU3RhZ2UudHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFjb21wdXRlKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlRXJyb3IoIkdQVURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IElu
dmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZShwaXBlbGluZUxheW91dCksIFdURk1vdmUoKmNvbXB1dGUpIH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlYjdlZjM2OTQyYTJhOTZiNjk3YjA0ODZiYjg1NWUwMGUzZjNlOGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCIKLSNpbmNs
dWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0IEdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
IDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAgICBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxYmM2NzNjOTVlMjgyMmI1ZWVi
NmVkYzMxYWZmZDhmNjZiMzgxMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0
b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Ig
Y29tcHV0ZVN0YWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWJlNzNmNTdjMDZj
MWNkMDAyZGI1NTkzNTVkOGNkMzc2ZmJmMjQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNs
dWRlICJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJCaW5kaW5nLmgiCi0jaW5j
bHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIu
aCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5j
bHVkZSAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiSlNHUFVPdXRPZk1lbW9yeUVy
cm9yLmgiCi0jaW5jbHVkZSAiSlNHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLSNpbmNsdWRlICJKU1dl
YkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5k
R3JvdXAuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAi
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExh
eW91dC5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJH
UFVDb21tYW5kRW5jb2Rlci5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgot
I2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJX
ZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0jaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIK
LSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVNhbXBsZXIuaCIKLSNpbmNs
dWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+
Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViR1BVRGV2aWNlKTsKLQotTG9jayBXZWJHUFVEZXZpY2U6OnNfaW5zdGFuY2Vz
TG9jazsKLQotUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYg
YWRhcHRlcikKLXsKLSAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OnRyeUNyZWF0ZShh
ZGFwdGVyLT5vcHRpb25zKCkpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3
IFdlYkdQVURldmljZShjb250ZXh0LCBXVEZNb3ZlKGFkYXB0ZXIpLCBtYWtlUmVmKCpkZXZpY2Up
KSk7Ci0gICAgICAgIGRldmljZS0+c2V0RXJyb3JTY29wZXMocmVzdWx0LT5tX2Vycm9yU2NvcGVz
LmNvcHlSZWYoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1IYXNoU2V0PFdlYkdQVURldmljZSo+JiBXZWJHUFVEZXZpY2U6Omluc3Rh
bmNlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViR1BVRGV2aWNl
Kj4+IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotfQotCi1Mb2NrJiBXZWJHUFVE
ZXZpY2U6Omluc3RhbmNlc0xvY2soKQotewotICAgIHJldHVybiBzX2luc3RhbmNlc0xvY2s7Ci19
Ci0KLVdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+
JiYgZGV2aWNlKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKLSAgICAsIG1fZGV2aWNlKFdURk1vdmUoZGV2
aWNlKSkKLSAgICAsIG1fZXJyb3JTY29wZXMoR1BVRXJyb3JTY29wZXM6OmNyZWF0ZShbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEdQVUVycm9yJiYgZXJyb3IpIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoV1RG
TW92ZShlcnJvcikpOwotICAgIH0pKQotewotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaXNEb2N1bWVudCgpKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlu
c3RhbmNlc0xvY2soKSB9OwotICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcyk7Ci0gICAgfQot
fQotCi1XZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZpY2UoKQotewotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoKnRoaXMpOwotCi0gICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKSB9Owot
ICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpKSB7
Ci0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewotICAgICAgICAgICAgICAg
IC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR1BVUGlwZWxpbmUgZnJvbSB0aGUgaW5zdGFuY2VzIGxp
c3QsIGFzIHRoZXkgbWF5IHN0aWxsIGV4aXN0LgotICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVt
b3ZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIGEgV2ViR1BVIGRldmljZS4KLSAgICAgICAgICAgICAg
ICBlbnRyeS52YWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAg
ICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaW5zdGFu
Y2VzKCkucmVtb3ZlKHRoaXMpOwotICAgIH0KLX0KLQotUmVmPFdlYkdQVUJ1ZmZlcj4gV2ViR1BV
RGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNl
LmNyZWF0ZUJ1ZmZlcigpOiAiKTsKLQotICAgIGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPnRyeUNy
ZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb246Ok5vdE1hcHBlZCwg
bV9lcnJvclNjb3Blcyk7Ci0gICAgcmV0dXJuIFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSwgbV9lcnJvclNjb3Blcyk7Ci19Ci0KLVZlY3RvcjxKU0M6OkpTVmFsdWU+IFdlYkdQ
VURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0
Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVC
dWZmZXJNYXBwZWQoKTogIik7Ci0KLSAgICBKU0M6OkpTVmFsdWUgd3JhcHBlZEFycmF5QnVmZmVy
ID0gSlNDOjpqc051bGwoKTsKLQotICAgIGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPnRyeUNyZWF0
ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb246OklzTWFwcGVkLCBtX2Vy
cm9yU2NvcGVzKTsKLSAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBidWZmZXItPm1hcE9uQ3JlYXRpb24oKTsKLSAgICAgICAgd3JhcHBlZEFycmF5QnVmZmVyID0g
dG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PigmbGV4aWNhbEdsb2JhbE9iamVjdCksIGFycmF5QnVmZmVyKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHdlYkJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgbV9lcnJv
clNjb3Blcyk7Ci0gICAgYXV0byB3cmFwcGVkV2ViQnVmZmVyID0gdG9KUygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCksIHdlYkJ1ZmZlcik7Ci0KLSAgICByZXR1cm4geyB3cmFwcGVkV2ViQnVmZmVyLCB3cmFw
cGVkQXJyYXlCdWZmZXIgfTsKLX0KLQotUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVURldmljZTo6
Y3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29u
c3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0
ZVRleHR1cmUoKTogIik7Ci0KLSAgICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRl
VGV4dHVyZShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdU
Rk1vdmUodGV4dHVyZSkpOwotfQotCi1SZWY8V2ViR1BVU2FtcGxlcj4gV2ViR1BVRGV2aWNlOjpj
cmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25z
dAotewotICAgIGF1dG8gc2FtcGxlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVTYW1wbGVyKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBXZWJHUFVTYW1wbGVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGVy
KSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRl
QmluZEdyb3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBsYXlvdXQgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBXZWJHUFVCaW5kR3JvdXBMYXlv
dXQ6OmNyZWF0ZShXVEZNb3ZlKGxheW91dCkpOwotfQotCi1SZWY8V2ViR1BVUGlwZWxpbmVMYXlv
dXQ+IFdlYkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gZ3B1RGVz
Y3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVUGlwZWxp
bmVMYXlvdXQ6OmNyZWF0ZShudWxscHRyKTsKLSAgICAKLSAgICBhdXRvIGxheW91dCA9IG1fZGV2
aWNlLT5jcmVhdGVQaXBlbGluZUxheW91dChXVEZNb3ZlKCpncHVEZXNjcmlwdG9yKSk7Ci0gICAg
cmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUoV1RGTW92ZShsYXlvdXQpKTsKLX0K
LQotUmVmPFdlYkdQVUJpbmRHcm91cD4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29u
c3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBh
dXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2Ny
aXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVC
aW5kR3JvdXA6OmNyZWF0ZShudWxscHRyKTsKLQotICAgIGF1dG8gYmluZEdyb3VwID0gbV9kZXZp
Y2UtPnRyeUNyZWF0ZUJpbmRHcm91cCgqZ3B1RGVzY3JpcHRvciwgbV9lcnJvclNjb3Blcyk7Ci0g
ICAgcmV0dXJuIFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFdURk1vdmUoYmluZEdyb3VwKSk7Ci19
Ci0KLVJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9k
dWxlKGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgY2FuIGJlIHZhbGlkYXRlZCBoZXJlPwotICAgIGF1dG8g
bW9kdWxlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pOwotICAgIHJldHVybiBXZWJHUFVTaGFkZXJN
b2R1bGU6OmNyZWF0ZShXVEZNb3ZlKG1vZHVsZSksIGRlc2NyaXB0b3IuY29kZSk7Ci19Ci0KLVJl
ZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0g
ICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5
Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKG1fZXJyb3JTY29wZXMpOwotICAgIGlm
ICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpj
cmVhdGUoKnRoaXMsIG51bGxwdHIsIG1fZXJyb3JTY29wZXMsIHsgfSwgeyB9KTsKLQotICAgIGF1
dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoKmdwdURl
c2NyaXB0b3IsIG1fZXJyb3JTY29wZXMpOwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRh
dGEgdmVydGV4U2hhZGVyID0geyBkZXNjcmlwdG9yLnZlcnRleFN0YWdlLm1vZHVsZSwgZGVzY3Jp
cHRvci52ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50IH07Ci0KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hh
ZGVyRGF0YSBmcmFnbWVudFNoYWRlcjsKLSAgICBpZiAoZGVzY3JpcHRvci5mcmFnbWVudFN0YWdl
KQotICAgICAgICBmcmFnbWVudFNoYWRlciA9IHsgZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlLnZh
bHVlKCkubW9kdWxlLCBkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UudmFsdWUoKS5lbnRyeVBvaW50
IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5lID0gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShncHVQaXBlbGluZSksIG1fZXJyb3JTY29wZXMsIFdURk1vdmUo
dmVydGV4U2hhZGVyKSwgV1RGTW92ZShmcmFnbWVudFNoYWRlcikpOwotICAgIGlmICh3ZWJHUFVQ
aXBlbGluZS0+aXNWYWxpZCgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCp0aGlzLCB3ZWJHUFVQaXBlbGluZS5nZXQoKSk7Ci0gICAg
cmV0dXJuIHdlYkdQVVBpcGVsaW5lOwotfQotCi1SZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVy
cm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6ICIpOwotCi0gICAg
YXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKG1fZXJyb3JTY29wZXMpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAg
ICAgICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRy
LCBtX2Vycm9yU2NvcGVzLCB7IH0pOwotCi0gICAgYXV0byBncHVQaXBlbGluZSA9IG1fZGV2aWNl
LT50cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoKmdwdURlc2NyaXB0b3IsIG1fZXJyb3JTY29wZXMp
OwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgY29tcHV0ZVNoYWRlciA9IHsgZGVz
Y3JpcHRvci5jb21wdXRlU3RhZ2UubW9kdWxlLCBkZXNjcmlwdG9yLmNvbXB1dGVTdGFnZS5lbnRy
eVBvaW50IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5lID0gV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZ3B1UGlwZWxpbmUpLCBtX2Vycm9yU2NvcGVzLCBX
VEZNb3ZlKGNvbXB1dGVTaGFkZXIpKTsKLSAgICBpZiAod2ViR1BVUGlwZWxpbmUtPmlzVmFsaWQo
KSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBl
bGluZSgqdGhpcywgd2ViR1BVUGlwZWxpbmUuZ2V0KCkpOwotICAgIHJldHVybiB3ZWJHUFVQaXBl
bGluZTsKLX0KLQotUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCkgY29uc3QKLXsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rl
dmljZS0+dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6Y3JlYXRlKFdURk1vdmUoY29tbWFuZEJ1ZmZlcikpOwotfQotCi1SZWY8V2ViR1BV
UXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKSBjb25zdAotewotICAgIGlmICghbV9xdWV1
ZSkKLSAgICAgICAgbV9xdWV1ZSA9IFdlYkdQVVF1ZXVlOjpjcmVhdGUobV9kZXZpY2UtPnRyeUdl
dFF1ZXVlKCkpOwotCi0gICAgcmV0dXJuIG1ha2VSZWYoKm1fcXVldWUuZ2V0KCkpOwotfQotCi12
b2lkIFdlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJiBwcm9taXNlKQot
ewotICAgIFN0cmluZyBmYWlsTWVzc2FnZTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBl
cnJvciA9IG1fZXJyb3JTY29wZXMtPnBvcEVycm9yU2NvcGUoZmFpbE1lc3NhZ2UpOwotICAgIGlm
IChmYWlsTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShlcnJvcik7
Ci0gICAgZWxzZQotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciwgIkdQVURldmljZTo6cG9wRXJyb3JTY29wZSgpOiAiICsgZmFpbE1lc3NhZ2UgfSk7Ci19
Ci0KLS8vIEVycm9ycyByZXBvcnRlZCB2aWEgdGhlIHZhbGlkYXRpb24gZXJyb3IgZXZlbnQgc2hv
dWxkIGFsc28gYXBwZWFyIGluIHRoZSBjb25zb2xlIGFzIHdhcm5pbmdzLgotc3RhdGljIHZvaWQg
cHJpbnRWYWxpZGF0aW9uRXJyb3JUb0NvbnNvbGUoR1BVRXJyb3ImIGVycm9yLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIHZhbGlkYXRpb25FcnJvciA9IFdURjo6Z2V0PFJlZlB0cjxHUFVWYWxpZGF0aW9u
RXJyb3I+PihlcnJvcik7Ci0gICAgaWYgKCF2YWxpZGF0aW9uRXJyb3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gbWVzc2FnZSA9IHZhbGlkYXRpb25FcnJvci0+bWVzc2FnZSgpOwotICAg
IGF1dG8gY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKLQotICAgIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKGNvbnNvbGVNZXNzYWdlKSk7Ci19Ci0KLXZvaWQg
V2ViR1BVRGV2aWNlOjpkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihHUFVFcnJvciYmIGVycm9yKQot
ewotICAgIHByaW50VmFsaWRhdGlvbkVycm9yVG9Db25zb2xlKGVycm9yLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgZGlzcGF0Y2hFdmVudChHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS51bmNhcHR1cmVkZXJyb3JFdmVudCwgV1RGTW92ZShlcnJvcikpKTsKLSAgICB9
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YWIwOTJmOTY2MWRhYzIzYjYxMDE1NTk4ZjhjMjY4
YmEyMjFjNjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR1BVRGV2
aWNlLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJJRExUeXBlcy5o
IgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVRdWV1ZS5oIgot
I2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFy
cmF5QnVmZmVyOwotY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHUFVPdXRPZk1lbW9yeUVycm9yOwotY2xhc3MgR1BVVmFsaWRhdGlvbkVycm9yOwotY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdlYkdQVUJpbmRHcm91cDsKLWNsYXNz
IFdlYkdQVUJpbmRHcm91cExheW91dDsKLWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNsYXNzIFdlYkdQ
VUNvbW1hbmRFbmNvZGVyOwotY2xhc3MgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgV2Vi
R1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKLWNsYXNzIFdl
YkdQVVNhbXBsZXI7Ci1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7Ci1jbGFzcyBXZWJHUFVTd2Fw
Q2hhaW47Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVVNhbXBs
ZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjsKLXN0cnVjdCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotdXNpbmcgRXJyb3JJRExV
bmlvbiA9IElETFVuaW9uPElETEludGVyZmFjZTxHUFVPdXRPZk1lbW9yeUVycm9yPiwgSURMSW50
ZXJmYWNlPEdQVVZhbGlkYXRpb25FcnJvcj4+OwotdXNpbmcgRXJyb3JQcm9taXNlID0gRE9NUHJv
bWlzZURlZmVycmVkPElETE51bGxhYmxlPEVycm9ySURMVW5pb24+PjsKLQotY2xhc3MgV2ViR1BV
RGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEgewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViR1BVRGV2
aWNlKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVEZXZpY2UoKTsKLQotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVRGV2aWNlPiB0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmKTsKLQotICAgIHN0YXRpYyBIYXNoU2V0PFdlYkdQ
VURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkp
OwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2lu
c3RhbmNlc0xvY2spOwotCi0gICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQotICAgIEdQVURldmljZSYgZGV2aWNlKCkgeyBy
ZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KLSAgICBjb25zdCBHUFVEZXZpY2UmIGRldmljZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0KLSAgICBSZWY8V2ViR1BVQnVmZmVyPiBj
cmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFZlY3Rv
cjxKU0M6OkpTVmFsdWU+IGNyZWF0ZUJ1ZmZlck1hcHBlZChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAg
UmVmPFdlYkdQVVNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2FtcGxlckRlc2NyaXB0
b3ImKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZUJpbmRH
cm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJikgY29uc3Q7Ci0g
ICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBX
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8V2ViR1BVQmlu
ZEdyb3VwPiBjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciYp
IGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxl
KGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8V2Vi
R1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIFJlZjxXZWJHUFVDb21wdXRlUGlwZWxpbmU+IGNy
ZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
Jik7Ci0KLSAgICBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IGNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCkgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVUXVldWU+IGdldFF1ZXVlKCkgY29uc3Q7Ci0KLSAg
ICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikgeyBtX2Vycm9yU2Nv
cGVzLT5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOyB9Ci0gICAgdm9pZCBwb3BFcnJvclNjb3BlKEVy
cm9yUHJvbWlzZSYmKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRl
ZDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiwgUmVmPEdQVURldmljZT4mJik7Ci0K
LSAgICAvLyBFdmVudFRhcmdldAotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViR1BVRGV2aWNlRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KLQotICAg
IHZvaWQgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJyb3ImJik7Ci0KLSAgICBzdGF0aWMg
TG9jayBzX2luc3RhbmNlc0xvY2s7Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLSAgICBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4gbV9h
ZGFwdGVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwotICAgIG11dGFibGUgUmVmUHRy
PFdlYkdQVVF1ZXVlPiBtX3F1ZXVlOwotCi0gICAgUmVmPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9y
U2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzdiNDZkNDVkNzk2NThkMDMxMGJh
ZDRhYTMwYzM0ZGUxZjM1ZWIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBzZXF1ZW5jZTxhbnk+IEdQVU1hcHBlZEJ1
ZmZlcjsgIC8vIFtHUFVCdWZmZXIsIEFycmF5QnVmZmVyXQotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9
R1BVRGV2aWNlLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93
Ci1dIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKLQotICAgIFdlYkdQVUJ1ZmZlciBjcmVh
dGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBbQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBHUFVNYXBwZWRCdWZmZXIgY3JlYXRlQnVmZmVyTWFwcGVkKEdQVUJ1ZmZl
ckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVVGV4dHVyZSBjcmVhdGVUZXh0dXJl
KEdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVVNhbXBsZXIgY3Jl
YXRlU2FtcGxlcihHUFVTYW1wbGVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIFdlYkdQ
VUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVQaXBlbGluZUxheW91dCBjcmVhdGVQ
aXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7
Ci0gICAgV2ViR1BVQmluZEdyb3VwIGNyZWF0ZUJpbmRHcm91cChXZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgV2ViR1BVU2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRl
ck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdl
YkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVDb21wdXRlUGlwZWxpbmUgY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgZGVzY3Jp
cHRvcik7Ci0KLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBHUFVDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3IgaXMgYW4gZW1wdHkgZGljdGlvbmFyeS4KLSAgICBXZWJHUFVDb21tYW5kRW5jb2RlciBj
cmVhdGVDb21tYW5kRW5jb2RlcigvKkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciBkZXNjcmlw
dG9yKi8pOwotCi0gICAgV2ViR1BVUXVldWUgZ2V0UXVldWUoKTsKLQotICAgIC8vIEZJWE1FOiBV
bmltcGxlbWVudGVkLgotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVFeHRlbnNpb25z
IGV4dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUxpbWl0cyBsaW1p
dHM7Ci0KLSAgICAvLyBXZWJHUFVGZW5jZSBjcmVhdGVGZW5jZShXZWJHUFVGZW5jZURlc2NyaXB0
b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBhdHRyaWJ1dGUgV2ViR1BVTG9nQ2FsbGJhY2sgb25M
b2c7Ci0gICAgLy8gV2ViR1BVT2JqZWN0U3RhdHVzUXVlcnkgZ2V0T2JqZWN0U3RhdHVzKFN0YXR1
c2FibGVPYmplY3Qgc3RhdHVzYWJsZU9iamVjdCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTMxMTAwZGI1NDUxMzg3OTQ0NzU2YzBmYjAxZmQ4
ODJhMzAxYTgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVRGV2aWNlRXJyb3JTY29wZXM6OnB1c2hFcnJvclNjb3Bl
KFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCi17Ci0gICAgZGV2
aWNlLnB1c2hFcnJvclNjb3BlKGZpbHRlcik7Ci19Ci0KLXZvaWQgV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXM6OnBvcEVycm9yU2NvcGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEVycm9yUHJvbWlzZSYm
IHByb21pc2UpCi17Ci0gICAgZGV2aWNlLnBvcEVycm9yU2NvcGUoV1RGTW92ZShwcm9taXNlKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VF
cnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwZjA3YWJlMzk4
YmY5YTczNGQ0NDZhZjU4OTQ1M2MwZGIwYzEwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2VFcnJvclNjb3Blcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVRXJy
b3JGaWx0ZXI7Ci0KLWNsYXNzIFdlYkdQVURldmljZUVycm9yU2NvcGVzIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBwdXNoRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmLCBHUFVFcnJvckZpbHRl
cik7Ci0gICAgc3RhdGljIHZvaWQgcG9wRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmLCBFcnJvclBy
b21pc2UmJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyZGM2MDJmYWIwZTJkZmZlMmI2ZGE0MTI2YTI5MDg2ZDUzNjZkYTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci10eXBlZGVmIChHUFVPdXRPZk1lbW9yeUVycm9yIG9yIEdQVVZhbGlkYXRpb25FcnJvcikgR1BV
RXJyb3I7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1XZWJHUFVEZXZpY2VFcnJvclNjb3BlcwotXSBw
YXJ0aWFsIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgewotICAgIHVuZGVmaW5lZCBwdXNoRXJyb3JT
Y29wZShHUFVFcnJvckZpbHRlciBmaWx0ZXIpOwotICAgIFByb21pc2U8R1BVRXJyb3I/PiBwb3BF
cnJvclNjb3BlKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUzNDQzNDMyNGQ0NWMzMzU3NDAzMWZhYTJhYjg1YWUzMDZjYzNiYjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyCi1d
IHBhcnRpYWwgaW50ZXJmYWNlIFdlYkdQVURldmljZSB7Ci0gICAgW0V4cG9zZWQ9V2luZG93XSBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udW5jYXB0dXJlZGVycm9yOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODRiNzgxMzMwYzY2NDI0YjU0YWMzODE3YmE2ZGQ4NTg2MzkwMzMx
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2
aWNlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1Mb2NrIFdlYkdQVVBpcGVsaW5lOjpzX2luc3RhbmNlc0xv
Y2s7Ci0KLUhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2VzOwotICAgIHJldHVybiBp
bnN0YW5jZXM7Ci19Ci0KLUxvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkKLXsK
LSAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1XZWJHUFVQaXBlbGluZTo6V2ViR1BV
UGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Bl
cykKLSAgICA6IEdQVU9iamVjdEJhc2UobWFrZVJlZihlcnJvclNjb3BlcykpCi0gICAgLCBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkZXZpY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ewotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotCi0gICAgewotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGluc3RhbmNlcygp
LmFkZCh0aGlzLCAmZGV2aWNlKTsKLSAgICB9Ci19Ci0KLVdlYkdQVVBpcGVsaW5lOjp+V2ViR1BV
UGlwZWxpbmUoKQotewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lX
ZWJHUFVQaXBlbGluZSgqdGhpcyk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBp
bnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRo
aXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwotICAgIH0KLX0KLQotdm9p
ZCBXZWJHUFVQaXBlbGluZTo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKCp0aGlzKTsKLQotICAgIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjg0Y2JjN2FmYWFiMmVhODEzZjdlNTY0YWJlMTliZWFlNjRjMTc5ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAi
R1BVT2JqZWN0QmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgR1BVRXJyb3JT
Y29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0KLWNsYXNzIFdlYkdQVVBpcGVsaW5lIDogcHVi
bGljIEdQVU9iamVjdEJhc2UsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUGlwZWxpbmUoKTsKLQotICAgIHN0YXRpYyBIYXNo
TWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFV
SVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc0xv
Y2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9jayk7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwotCi0gICAgc3RydWN0IFNoYWRlckRh
dGEgewotICAgICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBtb2R1bGU7Ci0gICAgICAg
IFN0cmluZyBlbnRyeVBvaW50OwotICAgIH07Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2xvbmVTaGFk
ZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVj
b21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsKLQotICAgIHZvaWQgY29udGV4dERlc3Ry
b3llZCgpIGZpbmFsOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2
aWNlJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgTG9jayBzX2lu
c3RhbmNlc0xvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShUb1ZhbHVlVHlwZU5hbWUsIHByZWRp
Y2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V2ViR1BVUGlwZWxpbmUmIHBp
cGVsaW5lKSB7IHJldHVybiBwaXBlbGluZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhhMGI4NDVlNDI4OTBjNTky
M2NkZmRkNDhlMDhkYTE1N2Q3MjhlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2Vi
R1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2Vi
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdlYkdQVVBpcGVsaW5lTGF5
b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFiMzJjNzA0MzllYTFlMjQ4ZGIwM2FiYjAxMDZmNjYyNzQxNzFhMTUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Ugewot
ICAgIFdlYkdQVVBpcGVsaW5lTGF5b3V0PyBsYXlvdXQgPSBudWxsOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiNWQ0Y2I0ZjlmMThmZGQ4ODczNzY5MDBi
YjUxM2RlOGUyYjEyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVQaXBlbGluZUxh
eW91dD4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShSZWZQdHI8R1BVUGlwZWxpbmVMYXlv
dXQ+JiYgbGF5b3V0KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVBpcGVsaW5l
TGF5b3V0KFdURk1vdmUobGF5b3V0KSkpOwotfQotCi1XZWJHUFVQaXBlbGluZUxheW91dDo6V2Vi
R1BVUGlwZWxpbmVMYXlvdXQoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91dCkKLSAg
ICA6IG1fcGlwZWxpbmVMYXlvdXQoV1RGTW92ZShsYXlvdXQpKQotewotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTZmODlkY2RlMTFiYTk0M2VhYTg2Y2M5MzIwY2JlZDI3
MjA5MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaW5j
bHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVQaXBlbGluZUxheW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYpOwot
Ci0gICAgR1BVUGlwZWxpbmVMYXlvdXQqIHBpcGVsaW5lTGF5b3V0KCkgeyByZXR1cm4gbV9waXBl
bGluZUxheW91dC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVVBpcGVs
aW5lTGF5b3V0KFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJik7Ci0KLSAgICBSZWZQdHI8R1BV
UGlwZWxpbmVMYXlvdXQ+IG1fcGlwZWxpbmVMYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzY2Q4NDVjNzA2ZTkxZWZkZWQ0YmYyMGRkNGRkNzBiNjMwM2Fh
ODAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50
ZXJmYWNlTmFtZT1HUFVQaXBlbGluZUxheW91dCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRl
cmZhY2UgV2ViR1BVUGlwZWxpbmVMYXlvdXQgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMThjMjhlYjE1NDFjY2NiYjlh
MGJlODBkZTZjNDIzY2M1YzAyODVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotc3RkOjpvcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8UmVmPGNvbnN0IEdQVUJp
bmRHcm91cExheW91dD4+IGdwdUxheW91dHM7Ci0gICAgZ3B1TGF5b3V0cy5yZXNlcnZlQ2FwYWNp
dHkoYmluZEdyb3VwTGF5b3V0cy5zaXplKCkpOwotICAgIAotICAgIGZvciAoY29uc3QgYXV0byYg
bGF5b3V0IDogYmluZEdyb3VwTGF5b3V0cykgewotICAgICAgICBpZiAoIWxheW91dCB8fCAhbGF5
b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVURl
dmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKTogSW52YWxpZCBHUFVCaW5kR3JvdXBMYXlvdXQh
Iik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBncHVMYXlvdXRzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpsYXlvdXQtPmJp
bmRHcm91cExheW91dCgpKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgeyBXVEZNb3ZlKGdwdUxheW91dHMpIH07Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzRjNzk1NGYzNzdhYTJh
NzkyNzdiZDU0YTA5NjdhOTcyNjkzNDYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IldlYkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVjdCBH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yPiB0cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IoKSBjb25zdDsKLQotICAg
IFZlY3RvcjxSZWZQdHI8V2ViR1BVQmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjVmZTU1MmE4ZGFjMjRkNGRjMTI4MjkwZGIwY2E1M2UxNTc5YzBkMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
ewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdlYkdQVUJpbmRHcm91cExheW91dD4gYmluZEdyb3Vw
TGF5b3V0czsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQzNDNjYTcxNDkzYjkwNjczZDg0N2JiNWVlN2I0M2Q5NTE0YjU1NmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgi
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6
OmVuZFBhc3MoKQotewotICAgIGlmICghcGFzc0VuY29kZXIoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKTogSW52YWxpZCBvcGVy
YXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcGFzc0VuY29kZXIoKS0+ZW5k
UGFzcygpOwotfQotCi12b2lkIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5k
R3JvdXAodW5zaWduZWQgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCYgYmluZEdyb3VwKQotewotICAg
IGlmICghcGFzc0VuY29kZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBiaW5kIGdyb3Vw
cyBzdXBwb3J0ZWQgaW4gV2ViIEdQVS4KLSAgICBpZiAoaW5kZXggPj0gNCkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJ
bnZhbGlkIGluZGV4ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghYmluZEdy
b3VwLmJpbmRHcm91cCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgV2ViR1BVQmluZEdyb3VwISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1FOiBBbnkgdmFsaWRhdGlvbiAoZS5n
LiBpbmRleCBkdXBsaWNhdGVzLCBub3QgaW4gcGlwZWxpbmUgbGF5b3V0KS4KLSAgICBwYXNzRW5j
b2RlcigpLT5zZXRCaW5kR3JvdXAoaW5kZXgsICpiaW5kR3JvdXAuYmluZEdyb3VwKCkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NWY1
MGE0MzIzM2IyNjE1OWQ1NTc3NmY2MDAzNjgwMzFkMWViNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVQmluZEdyb3VwOwot
Ci1jbGFzcyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGVu
ZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNpZ25lZCwgV2ViR1BVQmluZEdyb3Vw
Jik7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0g
ZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NF
bmNvZGVyKCkgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ODc1YmM0MDgyNjY3Zjk1YmM5ZDhh
YTI3YWRkOTgyYTk2MGE0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBs
b25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVy
ZmFjZSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgdW5kZWZpbmVkIGVuZFBh
c3MoKTsKLSAgICB1bmRlZmluZWQgc2V0QmluZEdyb3VwKHUzMiBpbmRleCwgV2ViR1BVQmluZEdy
b3VwIGJpbmRHcm91cC8qLCBvcHRpb25hbCBzZXF1ZW5jZTx1MzI+IGR5bmFtaWNPZmZzZXRzKi8p
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNmE0ZjdmYmU5Y2IzMGNjZjk3OTYwYjMzMTQxOGI0MmVlYzQ1MzY3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9w
dGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Io
KSBjb25zdAotewotICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUtPm1vZHVsZSgpIHx8IGVudHJ5
UG9pbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0
dXJuIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7IG1ha2VSZWYoKm1vZHVsZS0+bW9k
dWxlKCkpLCAqdGhpcyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFiNjkwMjQ2NzA2MGI1NmZjYjNiNDFhYmRiODBiMDI5
ZGM5NjkyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPiB0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdDsK
LQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IG1vZHVsZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ4
ZWQ1ZDMyMzdlY2VmYzhjOTMxOTExMzNhYzJhMGRkODJlNDg3Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXZWJHUFVTaGFkZXJTdGFnZUVudW07Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgewotICAgIHJlcXVp
cmVkIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7Ci0gICAgcmVxdWlyZWQgRE9NU3RyaW5nIGVu
dHJ5UG9pbnQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVl
dWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2FjYTdiMmQwZDE1YzZmMTJm
MGMxOTY1ZjJjM2M0NDQ2YjZjM2FhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUXVldWUuaCIK
LSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVRdWV1ZT4gV2ViR1BVUXVldWU6OmNy
ZWF0ZShSZWZQdHI8R1BVUXVldWU+JiYgcXVldWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR1BVUXVldWUoV1RGTW92ZShxdWV1ZSkpKTsKLX0KLQotV2ViR1BVUXVldWU6OldlYkdQ
VVF1ZXVlKFJlZlB0cjxHUFVRdWV1ZT4mJiBxdWV1ZSkKLSAgICA6IG1fcXVldWUoV1RGTW92ZShx
dWV1ZSkpCi17Ci19Ci0KLXZvaWQgV2ViR1BVUXVldWU6OnN1Ym1pdChjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYgYnVmZmVycykKLXsKLSAgICBpZiAoIW1fcXVldWUp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBvcGVy
YXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVmVjdG9yPFJlZjxHUFVDb21t
YW5kQnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZmZXJzLnJlc2VydmVDYXBhY2l0eShi
dWZmZXJzLnNpemUoKSk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7
Ci0gICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmNvbW1hbmRCdWZmZXIoKSkgewotICAg
ICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBHUFVDb21t
YW5kQnVmZmVyIGluIGxpc3QhIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgZ3B1QnVmZmVycy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqYnVmZmVyLT5jb21tYW5k
QnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAgICBtX3F1ZXVlLT5zdWJtaXQoV1RGTW92ZShncHVCdWZm
ZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk4OTIyN2U0MGI4MjllMTcwMTRmOWY4YzNkYzQ4
NDcxZjUzMzg1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7Ci0KLWNsYXNzIFdlYkdQVVF1ZXVlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVVF1ZXVlPiBjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYmKTsKLQotICAgIHZvaWQgc3VibWl0
KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+Jik7Ci0KLSAgICBTdHJp
bmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLT5sYWJlbCgpOyB9Ci0gICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSB7IG1fcXVldWUtPnNldExhYmVsKGxhYmVsKTsg
fQotCi1wcml2YXRlOgotICAgIFdlYkdQVVF1ZXVlKFJlZlB0cjxHUFVRdWV1ZT4mJik7Ci0KLSAg
ICBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUXVldWUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzU1
Y2VhOTY1OTFlNDI2ZGY5MzhmOTYyNDZhMTQ5ODcwYjM2NWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVF1ZXVlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVRdWV1ZSwKLSAgICBFeHBvc2Vk
PVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUXVldWUgewotICAgIHVuZGVmaW5lZCBzdWJtaXQo
c2VxdWVuY2U8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gYnVmZmVycyk7Ci0KLSAgICAvLyBGSVhNRTog
VW5pbXBsZW1lbnRlZC4KLSAgICAvLyB1bmRlZmluZWQgc2lnbmFsKFdlYkdQVUZlbmNlIGZlbmNl
LCB1NjQgc2lnbmFsVmFsdWUpOwotICAgIC8vIHVuZGVmaW5lZCB3YWl0KFdlYkdQVUZlbmNlIGZl
bmNlLCB1NjQgdmFsdWVUb1dhaXQpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4YjQ3ODJjN2U3MzVhYWM0MWIzMTdkNDAzMzBhNzMy
ZTMzNGU4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIGNvbnN0IEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICA6IEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICwgYXR0YWNobWVudChX
VEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcihSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlLCBjb25zdCBHUFVSZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAgIDogR1BVUmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICwgYXR0YWNo
bWVudChXVEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1zdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBJbXByb3ZlIGVycm9y
IGNoZWNraW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGlzIGFkZGVkIHRvIHNwZWMu
Ci0gICAgaWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogTm8gY29sb3IgYXR0YWNobWVudHMgc3BlY2lm
aWVkIGZvciBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IGdwdUNvbG9yQXR0YWNobWVudHM7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvbG9yQXR0YWNobWVudCA6IGNvbG9yQXR0YWNobWVudHMpIHsKLSAgICAgICAgaWYgKCFjb2xv
ckF0dGFjaG1lbnQuYXR0YWNobWVudAotICAgICAgICAgICAgfHwgIWNvbG9yQXR0YWNobWVudC5h
dHRhY2htZW50LT50ZXh0dXJlKCkKLSAgICAgICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0
YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkgewotICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQg
aW4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IhIik7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgICAgIGdwdUNvbG9yQXR0YWNo
bWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFr
ZVJlZigqY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSksIGNvbG9yQXR0YWNo
bWVudCB9KTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2htZW50OwotCi0gICAgaWYg
KGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKLSAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LT5hdHRhY2htZW50Ci0gICAgICAgICAgICB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC0+YXR0YWNobWVudC0+dGV4dHVyZSgpCi0gICAgICAgICAgICB8fCAhZGVwdGhTdGVuY2lsQXR0
YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkgewot
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZhbGlk
IGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotICAg
ICAgICBncHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3IgeyBtYWtlUmVmKCpkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2ht
ZW50LT50ZXh0dXJlKCkpLCAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCB9OwotICAgIH0KLQotICAg
IHJldHVybiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7IFdURk1vdmUoZ3B1Q29sb3JBdHRhY2ht
ZW50cyksIFdURk1vdmUoZ3B1RGVwdGhBdHRhY2htZW50KSB9OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1Zjk0YTRjZmYwZDBlMzY2MzExNzU4NTBk
Nzc3NmJhZDgxNzZjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBh
dHRhY2htZW50OwotfTsKLQotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvciA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UgewotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gYXR0YWNobWVudDsK
LX07Ci0KLXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRp
b25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKSBjb25zdDsKLQotICAgIFZlY3RvcjxXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQ
VVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2ls
QXR0YWNobWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZjODMyNDgyZTVhMTMwZWQzZDUzNWZkMmRiN2RmNWVmMDNlNmViMjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVUZXh0dXJlVmlldyBhdHRhY2htZW50
OwotICAgIC8vIEdQVVRleHR1cmVWaWV3PyByZXNvbHZlVGFyZ2V0OwotCi0gICAgcmVxdWlyZWQg
R1BVTG9hZE9wIGxvYWRPcDsKLSAgICByZXF1aXJlZCBHUFVTdG9yZU9wIHN0b3JlT3A7Ci0gICAg
R1BVQ29sb3IgY2xlYXJDb2xvcjsgLy8ge3I6IDAuMCwgZzogMC4wLCBiOiAwLjAsIGE6IDEuMH0K
LX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudERlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVVRleHR1cmVWaWV3IGF0
dGFjaG1lbnQ7Ci0KLSAgICByZXF1aXJlZCBHUFVMb2FkT3AgZGVwdGhMb2FkT3A7Ci0gICAgcmVx
dWlyZWQgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7Ci0gICAgcmVxdWlyZWQgZmxvYXQgY2xlYXJE
ZXB0aDsKLQotLyogTm90IHlldCBpbXBsZW1lbnRlZAotICAgIEdQVUxvYWRPcCBzdGVuY2lsTG9h
ZE9wOwotICAgIEdQVVN0b3JlT3Agc3RlbmNpbFN0b3JlT3A7Ci0gICAgdTMyIGNsZWFyU3RlbmNp
bDsKLSovCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Igewot
ICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcj8gZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmY3YTBkNDBmZmFm
YzRhYjQ0MmIxYjQzNTk4NmFlMmUyNGM5ZTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29sb3IuaCIK
LSNpbmNsdWRlICJHUFVMaW1pdHMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBpcGVsaW5lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZlB0cjxHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKLX0KLQotV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZlB0cjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNzRW5jb2RlciB7IFdURk1vdmUoZW5j
b2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGlu
ZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3Bh
c3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKCFwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBwaXBl
bGluZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRQ
aXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgpKSk7Ci19Ci0KLXZvaWQg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImIGNv
bG9yKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0QmxlbmRD
b2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1p
bkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydCgpOiBJ
bnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NF
bmNvZGVyLT5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwgbWF4RGVw
dGgpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCh1
bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQot
ewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KCk6
IFdpZHRoIG9yIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNldFNjaXNzb3JSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1
ZmZlcihXZWJHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0KQotewotICAgIGlmICgh
bV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmICghYnVmZmVyLmJ1ZmZlcigpIHx8ICFidWZmZXIuYnVmZmVyKCkt
PmlzSW5kZXgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgR1BVQnVmZmVyISIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9wYXNzRW5jb2Rlci0+c2V0SW5kZXhCdWZmZXIoKmJ1ZmZlci5idWZm
ZXIoKSwgb2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVy
dGV4QnVmZmVycyh1bnNpZ25lZCBzdGFydFNsb3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BV
QnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9mZnNldHMpCi17Ci0j
aWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycygpIjsKLSNlbmRpZgotICAgIGlm
ICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3Bl
cmF0aW9uISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGJ1ZmZlcnMuaXNFbXB0eSgpIHx8IGJ1ZmZlcnMuc2l6ZSgpICE9IG9mZnNldHMuc2l6ZSgpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBudW1iZXIgb2YgYnVmZmVycyBvciBv
ZmZzZXRzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KHN0YXJ0U2xvdCArIGJ1ZmZlcnMuc2l6ZSgpID4gbWF4VmVydGV4QnVmZmVycykgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc3RhcnRTbG90ICV1IGZvciAlbHUgYnVmZmVycyEi
LCBmdW5jdGlvbk5hbWUsIHN0YXJ0U2xvdCwgYnVmZmVycy5zaXplKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiBncHVCdWZmZXJzOwotICAg
IGdwdUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAgIGZvciAo
YXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVy
LT5idWZmZXIoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9yIGRl
c3Ryb3llZCBidWZmZXIgaW4gbGlzdCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFidWZmZXItPmJ1ZmZlcigpLT5pc1ZlcnRl
eCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEJ1ZmZlciB3YXMgbm90IGNyZWF0
ZWQgd2l0aCBWRVJURVggdXNhZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGdwdUJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VS
ZWYoKmJ1ZmZlci0+YnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRW
ZXJ0ZXhCdWZmZXJzKHN0YXJ0U2xvdCwgZ3B1QnVmZmVycywgb2Zmc2V0cyk7Ci19Ci0KLXZvaWQg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2ln
bmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdElu
c3RhbmNlKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFdoYXQga2luZCBvZiB2YWxpZGF0
aW9uIGRvIHdlIG5lZWQgdG8gaGFuZGxlIGhlcmU/Ci0gICAgbV9wYXNzRW5jb2Rlci0+ZHJhdyh2
ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwot
fQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZCh1bnNpZ25lZCBp
bmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBp
bnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAoIW1fcGFz
c0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpk
cmF3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotICAgIG1fcGFzc0VuY29kZXItPmRy
YXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0
ZXgsIGZpcnN0SW5zdGFuY2UpOwotfQotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkKLXsKLSAgICByZXR1cm4gbV9wYXNz
RW5jb2Rlci5nZXQoKTsKLX0KLQotY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjhjMDJhYmE3OGFlYzhhZTJhZjE2N2IyNTBjNTkxZGQxOTQ4MzE5NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKLWNsYXNzIEdQ
VVJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2ViR1BVUmVu
ZGVyUGlwZWxpbmU7Ci0KLXN0cnVjdCBHUFVDb2xvcjsKLQotY2xhc3MgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShS
ZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShj
b25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYpOwotICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25z
dCBHUFVDb2xvciYpOwotICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsK
LSAgICB2b2lkIHNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwotICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoV2ViR1BV
QnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0KTsKLSAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5z
aWduZWQgc3RhcnRTbG90LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBkcmF3KHVuc2lnbmVkIHZl
cnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwg
dW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZCh1bnNpZ25lZCBp
bmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBp
bnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0KLXByaXZhdGU6Ci0gICAg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsK
LQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGZpbmFsOwot
ICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGNvbnN0
IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiBtX3Bhc3NFbmNvZGVy
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA2Zjlj
YjVjMmUzZDU1YzlkMTYzY2I3ODM1NmVlMmFhOWI0OWRhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRl
ZiBsb25nIGkzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVSZW5kZXJQYXNzRW5jb2Rl
ciwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRl
cmZhY2UgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgOiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciB7Ci0gICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lIHBp
cGVsaW5lKTsKLSAgICB1bmRlZmluZWQgc2V0QmxlbmRDb2xvcihHUFVDb2xvciBjb2xvcik7Ci0K
LSAgICAvLyBUaGUgZGVmYXVsdCB2aWV3cG9ydCBpcyAoMC4wLCAwLjAsIHcsIGgsIDAuMCwgMS4w
KSwgd2hlcmUgdyBhbmQgaCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgYmFjayBidWZmZXIKLSAgICB1
bmRlZmluZWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKLQotICAgIC8vIFRoZSBk
ZWZhdWx0IHNjaXNzb3IgcmVjdGFuZ2xlIGlzICgwLCAwLCB3LCBoKSwgd2hlcmUgdyBhbmQgaCBh
cmUgdGhlIGRpbWVuc2lvbnMgb2YgYmFjayBidWZmZXIuCi0gICAgLy8gV2lkdGggYW5kIGhlaWdo
dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLiBPdGhlcndpc2UsIGFuIGVycm9yIHdpbGwgYmUgZ2Vu
ZXJhdGVkLgotICAgIHVuZGVmaW5lZCBzZXRTY2lzc29yUmVjdCh1MzIgeCwgdTMyIHksIHUzMiB3
aWR0aCwgdTMyIGhlaWdodCk7Ci0KLSAgICB1bmRlZmluZWQgc2V0SW5kZXhCdWZmZXIoV2ViR1BV
QnVmZmVyIGJ1ZmZlciwgdTY0IG9mZnNldCk7Ci0gICAgdW5kZWZpbmVkIHNldFZlcnRleEJ1ZmZl
cnModTMyIHN0YXJ0U2xvdCwgc2VxdWVuY2U8V2ViR1BVQnVmZmVyPiBidWZmZXJzLCBzZXF1ZW5j
ZTx1NjQ+IG9mZnNldHMpOwotCi0gICAgdW5kZWZpbmVkIGRyYXcodTMyIHZlcnRleENvdW50LCB1
MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0VmVydGV4LCB1MzIgZmlyc3RJbnN0YW5jZSk7Ci0g
ICAgdW5kZWZpbmVkIGRyYXdJbmRleGVkKHUzMiBpbmRleENvdW50LCB1MzIgaW5zdGFuY2VDb3Vu
dCwgdTMyIGZpcnN0SW5kZXgsIGkzMiBiYXNlVmVydGV4LCB1MzIgZmlyc3RJbnN0YW5jZSk7Ci0K
LS8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICB1bmRlZmluZWQgc2V0U3RlbmNpbFJlZmVyZW5j
ZSh1MzIgcmVmZXJlbmNlKTsKLSovCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2ODVjNmJmYTBhMjA0NTRhMTdiNjI2NzMwNmY5YjU3OTlkMDQ3N2EzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVk
ZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVy
UGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5j
bHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVy
UGlwZWxpbmU6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMsIFdlYkdQVVBp
cGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVy
RGF0YSYmIGZyYWdtZW50U2hhZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQ
VVJlbmRlclBpcGVsaW5lKGRldmljZSwgV1RGTW92ZShwaXBlbGluZSksIGVycm9yU2NvcGVzLCBX
VEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1vdmUoZnJhZ21lbnRTaGFkZXIpKSk7Ci19Ci0KLVdl
YkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRl
dmljZSwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3Bl
cyYgZXJyb3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVy
LCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKQotICAgIDogV2Vi
R1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykKLSAgICAsIG1fcmVuZGVyUGlwZWxpbmUo
V1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3ZlcnRleFNoYWRlcihXVEZNb3ZlKHZlcnRleFNo
YWRlcikpCi0gICAgLCBtX2ZyYWdtZW50U2hhZGVyKFdURk1vdmUoZnJhZ21lbnRTaGFkZXIpKQot
ewotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6fldlYkdQVVJlbmRlclBpcGVsaW5lKCkgPSBk
ZWZhdWx0OwotCi1ib29sIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjbG9uZVNoYWRlck1vZHVsZXMo
Y29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fdmVydGV4U2hhZGVyLm1v
ZHVsZSkgewotICAgICAgICBib29sIHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyTW9kdWxlID0g
bV9mcmFnbWVudFNoYWRlci5tb2R1bGUgPT0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8mIHZlcnRleFNvdXJjZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZS0+c291
cmNlKCk7Ci0gICAgICAgIG1fdmVydGV4U2hhZGVyLm1vZHVsZSA9IFdlYkdQVVNoYWRlck1vZHVs
ZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyB2
ZXJ0ZXhTb3VyY2UgfSksIHZlcnRleFNvdXJjZSk7Ci0KLSAgICAgICAgaWYgKG1fZnJhZ21lbnRT
aGFkZXIubW9kdWxlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFk
ZXJNb2R1bGUpCi0gICAgICAgICAgICAgICAgbV9mcmFnbWVudFNoYWRlci5tb2R1bGUgPSBtX3Zl
cnRleFNoYWRlci5tb2R1bGU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBhdXRvJiBmcmFnbWVudFNvdXJjZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5zb3Vy
Y2UoKTsKLSAgICAgICAgICAgICAgICBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSA9IFdlYkdQVVNo
YWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZp
Y2UoKSwgeyBmcmFnbWVudFNvdXJjZSB9KSwgZnJhZ21lbnRTb3VyY2UpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBXZWJHUFVSZW5kZXJQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IFdl
YkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChtX3JlbmRlclBpcGVsaW5lICYmIG1fdmVy
dGV4U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBpZiAoYXV0byogZ3B1VmVydGV4U2hhZGVyTW9k
dWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkgewotICAgICAgICAgICAgR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlKG1ha2VSZWYoKmdwdVZlcnRl
eFNoYWRlck1vZHVsZSksIHsgbV92ZXJ0ZXhTaGFkZXIuZW50cnlQb2ludCB9KTsKLSAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVu
dFN0YWdlOwotICAgICAgICAgICAgaWYgKG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGdwdUZyYWdtZW50U2hhZGVyTW9kdWxlID0gbV9mcmFnbWVu
dFNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFnbWVudFN0
YWdlID0gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKG1ha2VSZWYoKmdwdUZyYWdtZW50
U2hhZGVyTW9kdWxlKSwgeyBtX2ZyYWdtZW50U2hhZGVyLmVudHJ5UG9pbnQgfSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGluZS0+cmVjb21waWxlKGRl
dmljZS5kZXZpY2UoKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFn
ZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDYwYjEzNzkzZmNiZDI1MzQ1N2M0MjgxMWM4MmQ5MmNk
NTEyMmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVBpcGVs
aW5lOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNs
YXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZTsKLQotY2xhc3MgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgV2ViR1BVUGlwZWxpbmUgewotcHVibGlj
OgotICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgUmVm
PFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJE
YXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50
U2hhZGVyKTsKLQotICAgIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlclBpcGVsaW5l
KCk7IH0KLSAgICBjb25zdCBHUFVSZW5kZXJQaXBlbGluZSogcmVuZGVyUGlwZWxpbmUoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmdldCgpOyB9Ci0gICAgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gdmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIu
bW9kdWxlOyB9Ci0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gZnJhZ21lbnRTaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZTsgfQotCi0gICAgYm9vbCBj
bG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0gICAgYm9vbCByZWNvbXBp
bGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmLCBHUFVFcnJv
clNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJH
UFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKTsKLQotICAgIFJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQaXBlbGluZTsKLQotICAgIC8vIFByZXNlcnZlZCBm
b3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFk
ZXJEYXRhIG1fdmVydGV4U2hhZGVyOwotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIG1f
ZnJhZ21lbnRTaGFkZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQRUxJTkUoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlwZWxp
bmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZjgyYzJkMjhjNzVjNTQ3Njgy
NDg1YWFiMGZmZmE3ZjFhOThiMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVS
ZW5kZXJQaXBlbGluZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmJjZGI5ZGY5MGM4NDU5MDczMTM0N2Y4ZDVhOTY1ODdj
OTFjNzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QK
LXsKLSAgICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0gbGF5b3V0ID8gbWFrZVJlZlB0cihsYXlvdXQt
PnBpcGVsaW5lTGF5b3V0KCkpIDogbnVsbHB0cjsKLQotICAgIGF1dG8gdmVydGV4ID0gdmVydGV4
U3RhZ2UudHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7Ci0KLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnQ7Ci0g
ICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgIGZyYWdtZW50ID0gZnJhZ21lbnRTdGFnZS0+
dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoIXZl
cnRleCB8fCAoZnJhZ21lbnRTdGFnZSAmJiAhZnJhZ21lbnQpKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAg
Ly8gRklYTUU6IFdlYiBHUFUgdmFsaWRhdGlvbiwgZS5nLiBmYWlsIGlmIGNvbG9yU3RhdGVzIGlz
IGxhcmdlciB0aGFuIChtYXggbnVtYmVyIG9mIHN1cHBvcnRlZCBjb2xvciBzdGF0ZXMpLgotCi0g
ICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUocGlwZWxpbmVM
YXlvdXQpLCBXVEZNb3ZlKCp2ZXJ0ZXgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgKnRoaXMgfTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBi
NjBkMmViZTY5Mzk1ZTM1MWYxYTlkOGM1MDA2MzQ4NDY4YmIwZjMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDog
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHRy
eUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0
OwotCi0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFn
bWVudFN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhNDBkOTQ2ZmVmZjllNTVjYjBkNzBhZDY3Mjg3Mjk3YTk5ZDA3MWVk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVUHJpbWl0aXZl
VG9wb2xvZ3kKLV0gZW51bSBHUFVQcmltaXRpdmVUb3BvbG9neSB7Ci0gICAgInBvaW50LWxpc3Qi
LAotICAgICJsaW5lLWxpc3QiLAotICAgICJsaW5lLXN0cmlwIiwKLSAgICAidHJpYW5nbGUtbGlz
dCIsCi0gICAgInRyaWFuZ2xlLXN0cmlwIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAg
IHJlcXVpcmVkIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsK
LSAgICBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I/IGZyYWdtZW50U3RhZ2UgPSBu
dWxsOwotCi0gICAgcmVxdWlyZWQgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xv
Z3k7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+IGNvbG9y
U3RhdGVzOwotICAgIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj8gZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIHJlcXVpcmVkIEdQVVZlcnRleElucHV0RGVzY3JpcHRvciB2ZXJ0
ZXhJbnB1dDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNh
bXBsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTUyMGU2M2ExYTAwNTQ5
MDk3ZTQwMWFlZWI4YjQzMmQ1ZDEyNjAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBs
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTYW1wbGVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVTYW1wbGVyPiBXZWJH
UFVTYW1wbGVyOjpjcmVhdGUoUmVmUHRyPEdQVVNhbXBsZXI+JiYgc2FtcGxlcikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpKTsKLX0K
LQotV2ViR1BVU2FtcGxlcjo6V2ViR1BVU2FtcGxlcihSZWZQdHI8R1BVU2FtcGxlcj4mJiBzYW1w
bGVyKQotICAgIDogbV9zYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpCi17Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM0MjQ5NjZjNjk3YTU2NTU4YzY2MzRjYmM0Y2YzN2YzZDI1ZWEwNGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJH
UFVTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2FtcGxlcj4gewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViR1BVU2FtcGxlcj4gY3JlYXRlKFJlZlB0cjxHUFVTYW1wbGVyPiYm
KTsKLQotICAgIGNvbnN0IEdQVVNhbXBsZXIqIHNhbXBsZXIoKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTYW1wbGVyKFJlZlB0cjxHUFVT
YW1wbGVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVTYW1wbGVyPiBtX3NhbXBsZXI7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzYWFjMjY5YTE1OGViNTg3YmFmNWQ0MTRkMGYyZTIxZmI0
MmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNl
TmFtZT1HUFVTYW1wbGVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVT
YW1wbGVyIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxNDU0
NWRkM2Y0NmNlODYyMDhmM2Q1NDZhZmY3MTQ0MjczM2M5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1
bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9k
dWxlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpLCBzb3VyY2UpKTsKLX0KLQotV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4m
JiBtb2R1bGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQotICAgIDogbV9tb2R1bGUoV1RGTW92ZSht
b2R1bGUpKQotICAgICwgbV9zb3VyY2Uoc291cmNlKQotewotfQotCi12b2lkIFdlYkdQVVNoYWRl
ck1vZHVsZTo6dXBkYXRlKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSkKLXsKLSAgICBtX3NvdXJjZSA9IHNvdXJjZTsKLSAgICBtX21vZHVsZSA9IEdQVVNo
YWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyBtX3NvdXJjZSB9KTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MGJiOGQyZjYzNjRjMjRlMWRhNWRjYjQ1
NTA1MDFhNGYyZDAxNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0KLWNsYXNz
IFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVNoYWRlck1vZHVs
ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUo
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotCi0gICAg
R1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsg
fQotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0K
LQotICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdlYkdQVURldmljZSYsIGNvbnN0IFN0cmluZyYgc291
cmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQVVNoYWRl
ck1vZHVsZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotCi0gICAgUmVmUHRyPEdQVVNoYWRl
ck1vZHVsZT4gbV9tb2R1bGU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3Ig
cmVjb21waWxhdGlvbi4KLSAgICBTdHJpbmcgbV9zb3VyY2U7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkNzdmMDc5ZTMyOWQ2NWQzODQ0ZjhiZWY1M2Q4MzA1YTU0
Yjg5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRl
cmZhY2VOYW1lPUdQVVNoYWRlck1vZHVsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZh
Y2UgV2ViR1BVU2hhZGVyTW9kdWxlIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMzJhOTg5ZWQ1YzUwNmRmM2E3ZGNiMDkzNTVjZTUy
Njg0YzMwOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yIHsKLSAgICBTdHJpbmcgY29kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE3YTlkNGM4ZGE0NTM3NjYwMGY5YmEw
YmY2ZmUyY2ExNmQ0NzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCAvKkFycmF5QnVmZmVyKi8gRE9N
U3RyaW5nIGNvZGU7IC8vIEZJWE1FOiBET01TdHJpbmcgZm9yIE1UTCBwcm90b3R5cGluZyBvbmx5
LgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI1OWQ3ZjZlMTNiZDYyNjA2
MjA4MDc3YWVjOTdlNDMzZTAyMzljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVN3YXBD
aGFpbj4gV2ViR1BVU3dhcENoYWluOjpjcmVhdGUoUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2Fw
Q2hhaW4pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU3dhcENoYWluKFdURk1v
dmUoc3dhcENoYWluKSkpOwotfQotCi1XZWJHUFVTd2FwQ2hhaW46OldlYkdQVVN3YXBDaGFpbihS
ZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLSAgICA6IG1fc3dhcENoYWluKFdURk1v
dmUoc3dhcENoYWluKSkKLXsKLX0KLQotUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVN3YXBDaGFp
bjo6Z2V0Q3VycmVudFRleHR1cmUoKQotewotICAgIGlmICghbV9zd2FwQ2hhaW4pIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUoKTogSW52YWxp
ZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlOjpjcmVhdGUobnVs
bHB0cik7Ci0gICAgfQotICAgIG1fY3VycmVudFRleHR1cmUgPSBXZWJHUFVUZXh0dXJlOjpjcmVh
dGUobV9zd2FwQ2hhaW4tPnRyeUdldEN1cnJlbnRUZXh0dXJlKCkpOwotICAgIHJldHVybiBtYWtl
UmVmKCptX2N1cnJlbnRUZXh0dXJlKTsKLX0KLQotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmRlc3Ry
b3koKQotewotICAgIGlmICghbV9zd2FwQ2hhaW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
c3dhcENoYWluLT5kZXN0cm95KCk7Ci0gICAgbV9zd2FwQ2hhaW4gPSBudWxscHRyOwotCi0gICAg
aWYgKG1fY3VycmVudFRleHR1cmUgJiYgbV9jdXJyZW50VGV4dHVyZS0+dGV4dHVyZSgpKQotICAg
ICAgICBtX2N1cnJlbnRUZXh0dXJlLT5kZXN0cm95KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3OGExZTBkZjY0ODA0ZjExMTlmMzE1ZTMwZTFhMDYxMDhjMzQyN2IzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcjsKLQotY2xh
c3MgV2ViR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU3dhcENoYWluPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTd2FwQ2hhaW4+IGNyZWF0ZShSZWZQdHI8
R1BVU3dhcENoYWluPiYmKTsKLQotICAgIEdQVVN3YXBDaGFpbiogc3dhcENoYWluKCkgeyByZXR1
cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7IH0KLQotICAgIFJlZjxXZWJHUFVUZXh0dXJlPiBnZXRDdXJy
ZW50VGV4dHVyZSgpOwotCi0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgV2Vi
R1BVU3dhcENoYWluKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwotCi0gICAgUmVmUHRyPEdQVVN3
YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci0gICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IG1fY3VycmVu
dFRleHR1cmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzJjZjNhNGU0NTA0
YzhiYTFmYWZkOWFjYWI2ZGRiYjFlMmZkMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BV
U3dhcENoYWluLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIEV4cG9zZWQ9V2luZG93
Ci1dIGludGVyZmFjZSBXZWJHUFVTd2FwQ2hhaW4gewotICAgIFdlYkdQVVRleHR1cmUgZ2V0Q3Vy
cmVudFRleHR1cmUoKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxMTM0ZmNkMzMzNzM5OTVmNmE5OGQ0NzlhZjQwMmY3Y2Q5N2IwNjUyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4gV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvcjo6YXNHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBpZiAoIWRldmlj
ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ2FudmFzQ29udGV4dDo6Y29uZmlndXJlU3dh
cENoYWluKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gR1BVU3dhcENoYWluRGVzY3JpcHRvciB7IG1h
a2VSZWYoZGV2aWNlLT5kZXZpY2UoKSksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjg3NGQ2ZjcwMDAwMzk1OWRiNTg5MTE5YjRkYjAw
MmU5YzMyMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IgOiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yPiBhc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdDsKLQot
ICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwN2RhMDYwMTIzMWU3ZThmNTgzOTRjN2M0MjM5NTE4NGViN2EzN2M2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0
dXJlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVUZXh0dXJlOjpj
cmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpKTsKLX0KLQotV2ViR1BVVGV4
dHVyZTo6V2ViR1BVVGV4dHVyZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQotICAgIDog
bV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0KLVJlZjxXZWJHUFVUZXh0dXJlVmll
dz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKQotewotICAgIGlmICghbV90ZXh0
dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0Vmll
dygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmVW
aWV3OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotCi0gICAgYXV0byB2aWV3ID0gV2ViR1BVVGV4
dHVyZVZpZXc6OmNyZWF0ZShtX3RleHR1cmUtPnRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygp
KTsKLSAgICBtX3RleHR1cmVWaWV3cy5hcHBlbmQodmlldy5jb3B5UmVmKCkpOwotICAgIHJldHVy
biB2aWV3OwotfQotCi12b2lkIFdlYkdQVVRleHR1cmU6OmRlc3Ryb3koKQotewotICAgIGlmICgh
bV90ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjpkZXN0cm95KCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAo
YXV0byYgdmlldyA6IG1fdGV4dHVyZVZpZXdzKQotICAgICAgICB2aWV3LT5kZXN0cm95KCk7Ci0g
ICAgbV90ZXh0dXJlVmlld3MuY2xlYXIoKTsKLQotICAgIG1fdGV4dHVyZS0+ZGVzdHJveSgpOwot
ICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZDU4YzI2
NDJmY2M2YTYyZjM3MmFjYjRhMjczOGUxYzZiNzI1MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVRleHR1
cmUuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVUZXh0dXJlIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
R1BVVGV4dHVyZT4gY3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKLQotICAgIEdQVVRleHR1
cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLQotICAgIFJlZjxXZWJH
UFVUZXh0dXJlVmlldz4gY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAgICB2b2lkIGRlc3Ryb3koKTsK
LQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJlKFJlZlB0cjxHUFVUZXh0dXJl
PiYmKTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgVmVjdG9yPFJl
ZjxXZWJHUFVUZXh0dXJlVmlldz4+IG1fdGV4dHVyZVZpZXdzOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzZTRhNWY5OTNiNjQ1ZGE5NWMyYTNkNzhjOGRmMWMyYzM3MzdkMjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwK
LSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVVGV4
dHVyZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVVGV4dHVyZSB7Ci0g
ICAgV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAgICB1bmRlZmluZWQg
ZGVzdHJveSgpOwotCi0gICAgLy8gTm90IFlldCBJbXBsZW1lbnRlZDoKLSAgICAvLyBXZWJHUFVU
ZXh0dXJlVmlldyBjcmVhdGVUZXh0dXJlVmlldyhXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Ig
ZGVzYyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZVZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTAzMmFmMGMw
MTZkYzVlYmQ1YWU0ZGRkNmM2NGIyMzRiNDA1Mzk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmVWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQ
VVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJl
PiYmIHZpZXcpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXco
V1RGTW92ZSh2aWV3KSkpOwotfQotCi1XZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZp
ZXcoUmVmUHRyPEdQVVRleHR1cmU+JiYgdmlldykKLSAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHZp
ZXcpKQotewotfQotCi12b2lkIFdlYkdQVVRleHR1cmVWaWV3OjpkZXN0cm95KCkKLXsKLSAgICBp
ZiAoIW1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90ZXh0dXJlLT5kZXN0cm95
KCk7Ci0gICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQyNTBlMjE4NGM1MjNjZjg1ZmRlZDZhYmRjZmViZmMyMzZmMTI5MDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BV
VGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlVmlldz4gewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWZQdHI8R1BV
VGV4dHVyZT4mJik7Ci0gICAgfldlYkdQVVRleHR1cmVWaWV3KCkgeyBkZXN0cm95KCk7IH0KLQot
ICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLQot
ICAgIHZvaWQgZGVzdHJveSgpOwotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJl
VmlldyhSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0gICAgCi0gICAgUmVmUHRyPEdQVVRleHR1cmU+
IG1fdGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZmJkZWJi
YzkwNWFjZjZkNzEzZWQwNDI3NzVmYWQzNGVlM2I1MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVRleHR1cmVWaWV3LAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVUZXh0dXJlVmlldyB7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQ
VS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BV
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyZGFlZTY0Mjc1YjVmNzkzMjcw
Y2UzZDVmNDUzNzExNDJmMTJlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3Ir
R1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZpZ2F0b3ItZ3B1Ci0vLyBGSVhNRTog
VGhlIHNwZWMgc2F5cyB0aGlzIHNob3VsZCBvbmx5IGJlIGV4cG9zZWQgdG8gRGVkaWNhdGVkV29y
a2Vycy4KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1Xb3JrZXJOYXZpZ2F0b3JHUFUKLV0gcGFydGlhbCBp
bnRlcmZhY2UgV29ya2VyTmF2aWdhdG9yIHsKLSAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0
cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJiMDdmMzY2ODNkYzMwMzg0MzI0ZjVhNzI0YjIyMTBiOTFkOGVkNDguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya2Vy
TmF2aWdhdG9yR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgotI2luY2x1ZGUgIldvcmtl
ck5hdmlnYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlck5hdmlnYXRvckdQ
VSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yKQot
ewotICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtl
ck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKLSAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7Ci0g
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92aWRl
VG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0KLWNvbnN0IGNoYXIqIFdvcmtlck5h
dmlnYXRvckdQVTo6c3VwcGxlbWVudE5hbWUoKQotewotICAgIHJldHVybiAiV29ya2VyTmF2aWdh
dG9yR1BVIjsKLX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmdwdShXb3Jr
ZXJOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRvIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS53ZWJHUFVFbmFibGVkKTsK
LSAgICByZXR1cm4gV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKCZuYXZpZ2F0b3IpLT5ncHUoKTsK
LX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmdwdSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJHUFU6OmNyZWF0ZSgpOwotICAgIHJl
dHVybiBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dvcmtlck5hdmlnYXRvckdQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V29ya2VyTmF2aWdhdG9yR1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NzQ1
M2Y5NGJiY2E2Yjk4OWJkNThmNTk1YzgzOGIwMWExMjBhNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V29ya2VyTmF2aWdhdG9yR1BVLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFU7
Ci1jbGFzcyBXb3JrZXJOYXZpZ2F0b3I7Ci0KLWNsYXNzIFdvcmtlck5hdmlnYXRvckdQVSBmaW5h
bCA6IHB1YmxpYyBTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj4gewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBXZWJHUFUqIGdwdShXb3Jr
ZXJOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgV29ya2VyTmF2aWdhdG9yR1BV
KiBmcm9tKFdvcmtlck5hdmlnYXRvciopOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSogZ3B1KCkgY29uc3Q7Ci0KLSAgICBt
dXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYmVlMjM2NGU4
YmFlOGEwZTk4NTJkNmM0MjNkZDE5Y2EyNjBhYzQ2Mi4uMjYzY2NmYmViNTg2NTkwMWNhMDE1YTQ4
MzI5Zjg1ZDMyNTkzMWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMyMCw5MSArMzIwLDYgQEAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCiBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcAogTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdh
dG9yV2ViRHJpdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAotTW9kdWxlcy93ZWJncHUv
TmF2aWdhdG9yR1BVLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNl
bWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAotTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAotTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAotTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tS
ZWZlcmVuY2VUeXBlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJl
UmVmZXJlbmNlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTElu
ZmVyVHlwZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVDb250ZXh0LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVW
YXJpYWJsZUxpZmV0aW1lcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVmlzaXRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVm
ZmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZUVycm9yU2NvcGVzLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcAotTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
Vmlldy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKIE1vZHVsZXMv
d2Vic29ja2V0cy9DbG9zZUV2ZW50LmNwcAogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTIwNzksMTQgKzE5OTQsNiBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2Uu
Y3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5jcHAK
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGlu
ZUxheW91dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T09yaWdpbmFsRm9ybWF0Qm94LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TY2hlbWVJbmZvQm94LmNwcApAQCAtMzA3MiwzNCArMjk3OSw2IEBAIEpTRm9jdXNPcHRpb25z
LmNwcAogSlNGb250RmFjZS5jcHAKIEpTRm9udEZhY2VTZXQuY3BwCiBKU0Zvcm1EYXRhRXZlbnQu
Y3BwCi1KU0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuY3BwCi1KU0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuY3BwCi1KU0dQVUJsZW5kRGVzY3JpcHRvci5jcHAKLUpTR1BVQnVmZmVyRGVz
Y3JpcHRvci5jcHAKLUpTR1BVQnVmZmVyVXNhZ2UuY3BwCi1KU0dQVUNhbnZhc0NvbnRleHQuY3Bw
Ci1KU0dQVUNvbG9yLmNwcAotSlNHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5jcHAKLUpTR1BVQ29s
b3JXcml0ZS5jcHAKLUpTR1BVQ29tcGFyZUZ1bmN0aW9uLmNwcAotSlNHUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUVycm9yRmlsdGVyLmNwcAotSlNHUFVFeHRlbnQzRC5j
cHAKLUpTR1BVTG9hZE9wLmNwcAotSlNHUFVPcmlnaW4zRC5jcHAKLUpTR1BVT3V0T2ZNZW1vcnlF
cnJvci5jcHAKLUpTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAotSlNHUFVTYW1wbGVyRGVz
Y3JpcHRvci5jcHAKLUpTR1BVU2hhZGVyU3RhZ2UuY3BwCi1KU0dQVVN0b3JlT3AuY3BwCi1KU0dQ
VVRleHR1cmVEZXNjcmlwdG9yLmNwcAotSlNHUFVUZXh0dXJlRm9ybWF0LmNwcAotSlNHUFVUZXh0
dXJlVXNhZ2UuY3BwCi1KU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAotSlNHUFVWYWxpZGF0
aW9uRXJyb3IuY3BwCi1KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVVZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5jcHAK
IEpTR2Fpbk5vZGUuY3BwCiBKU0dhaW5PcHRpb25zLmNwcAogSlNHYW1lcGFkLmNwcApAQCAtMzc2
MCwzOCArMzYzOSw2IEBAIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKIEpTV2ViR0xVbmlm
b3JtTG9jYXRpb24uY3BwCiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCiBKU1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwCi1KU1dlYkdQVS5jcHAKLUpTV2ViR1BVQWRhcHRlci5jcHAK
LUpTV2ViR1BVQmluZEdyb3VwLmNwcAotSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmNwcAotSlNX
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3Bw
Ci1KU1dlYkdQVUJ1ZmZlci5jcHAKLUpTV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKLUpTV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAKLUpTV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCi1KU1dlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAotSlNXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVEZXZpY2UuY3BwCi1KU1dl
YkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotSlNXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuY3Bw
Ci1KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCi1KU1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuY3BwCi1KU1dlYkdQVVF1ZXVlLmNwcAotSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5jcHAKLUpTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi1KU1dlYkdQVVJlbmRlclBpcGVs
aW5lLmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVNh
bXBsZXIuY3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLUpTV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVU3dhcENoYWluLmNwcAotSlNXZWJHUFVUZXh0dXJlLmNw
cAotSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCiBK
U1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwCiBKU1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjgyZGJjYzA2Y2VhZTdkNzZjMWUwZTlhNjZh
YmY0MjdlMWNjYjQ5Yi4uMGNmOGZiZTQzMzRlMWMyZGIxNTZlNjU4Mjc2NzE4ZDA2YzlkNzBkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zODcsNyArMzg3LDYgQEAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXll
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKQEAgLTM5OCwyNCArMzk3LDYg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2Nh
dG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlv
dXRNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFs
Lm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KLXBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVTd2FwQ2hhaW5NZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1
cmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JN
YWMubW0KQEAgLTYxNiw3ICs1OTcsMyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBAbm8tdW5pZnkKLQotLy8g
RGVyaXZlZCBTb3VyY2VzCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWI2MzU4YjFiMGYxNjFiNjZlNzc3YTkxZGI0Yzc2ZGQxZjZmNmRlYi4uNTVlMDAyZmEyYmMx
ZjQwY2QxMjFiMjliNmRmZDgwODk3ZDE2ZjJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTExLDE4ICs5MTEsNiBAQAogCQkz
MTI4OEU3NTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyODhFNzEwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCAqLzsgfTsKIAkJMzEyOENBNkIxNDczMzE2MzAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmlj
YXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5vdGlmaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEYwRkI0
OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxMkZGOTExMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVD
b21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovOyB9
OwotCQkzMTJGRjkxMjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVRGV2aWNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCRTIxQTRDMkYxMDBFQjE5
OUQgLyogR1BVRGV2aWNlLmggKi87IH07Ci0JCTMxMkZGOTEzMjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5oICovOyB9OwotCQkzMTJGRjkxNDIxQTRDMzY1MDBFQjE5OUQgLyogR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxMkZGOTE1MjFBNEMzNjUwMEVCMTk5
RCAvKiBHUFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi87IH07Ci0JCTMx
MkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QjkyMUE0QzJFRjAwRUIx
OTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi87IH07Ci0JCTMxMkZGOTE3MjFBNEMzNjUwMEVC
MTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzEyRkY5MTgyMUE0QzM2NTAw
RUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVNoYWRlck1v
ZHVsZS5oICovOyB9OwotCQkzMTJGRjkxOTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCAqLzsgfTsKLQkJMzEyRkY5MUEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkEy
MUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovOyB9OwotCQkzMTJGRjkxQjIxQTRD
MzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUu
aCAqLzsgfTsKLQkJMzEyRkY5MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMz
MjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggKi87IH07CiAJCTMxMzE3MTU2
MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxNzE1NDFGQjA3OUQxMDA4RDkxRkMgLyogQ2FudmFz
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTMxMzU5MTA2MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzU5MTAwMUU3RERD
NjAwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3RhdGUuaCAqLzsgfTsKIAkJMzEzNTkxMDcx
RTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM1OTEwMTFFN0REQzYwMDBGMzA2MzAg
LyogUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCAqLzsgfTsKQEAgLTk1Nyw3ICs5NDUsNiBAQAogCQkz
MTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTc0MUFBQjE2NjM1RTQ1
MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE3RDNGRjMyMTU1OTlGNDAwMzRFM0I5IC8q
IFBvaW50ZXJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE3RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxODE1QTMxMUY5QTZD
OEYwMEZDQkY4OSAvKiBJbWFnZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFEMjZCQkYxRjg2RDE4OTAwOEZGMjU1IC8qIEltYWdlQml0bWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE4
NDM2REUyMUI5REFBRjAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTg0MzZEQjIxQjlEQUEwMDBFRDM4M0UgLyog
V2ViR1BVTGF5ZXIuaCAqLzsgfTsKIAkJMzE4ODkxNjExQUI3RUVBMTAwRUE2MjdCIC8qIG1pc3Np
bmdJbWFnZUAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERjQxOTk5MUFCMERBMTQwMDRFNjRFMSAvKiBtaXNzaW5nSW1hZ2VAM3gucG5nICov
OyB9OwogCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxOEVBRDRBMUZBOTExNTcwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5ODQ3RkYxQTFE
ODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmggKi87IH07CkBAIC0zMjY4LDkgKzMyNTUs
NiBAQAogCQlBMTg4OTBBRjFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExODg5MEFEMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
OTU2RjFDMjMzMUE2NzcwMDU3RTlEMiAvKiBKU0FwcGxlUGF5Q2FuY2VsRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOTU2RjFCMjMzMUE2NDYw
MDU3RTlEMiAvKiBKU0FwcGxlUGF5Q2FuY2VsRXZlbnQuaCAqLzsgfTsKIAkJQTE5NTZGMjAyMzMx
QThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTk1NkYxRDIzMzFBOEM3MDA1N0U5RDIgLyog
QXBwbGVQYXlTZXNzaW9uRXJyb3IuaCAqLzsgfTsKLQkJQTE5NTZGMjMyMzMxQUNGMjAwNTdFOUQy
IC8qIFdITFNMUmVwbGFjZVdpdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAvKiBXSExTTFJlcGxhY2VXaXRo
LmggKi87IH07Ci0JCUExOTU2RjI0MjMzMUFEMjEwMDU3RTlEMiAvKiBXSExTTFByb2dyYW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMUJGNzNBMjFD
RDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLzsgfTsKLQkJQTE5NTZGMjUyMzMxQUQ1
MzAwNTdFOUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjFCRjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyog
V0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLzsgfTsKIAkJQTE5QUVBMjExQUFBODA4NjAwQjUy
QjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5QUVBMUUxQUFBODA2RTAwQjUyQjI1IC8qIEpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyB9OwogCQlBMTlBRUEyMjFBQUE4MDhBMDBC
NTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUFFQTFEMUFBQTgwNkUwMEI1MkIyNSAv
KiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwogCQlBMTlEOTM0QjFBQTEx
QjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUQ5MzQ5MUFBMTFCMUUwMEI0
NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02OTUwLDIwICs2OTM0LDE0IEBACiAJ
CTFDMjRFRUE2MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRm9udEZhY2VTZXQuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyNEVFQTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZh
Y2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNGb250RmFjZVNldC5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAv
KiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDMjgxQzZEMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8q
IFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNr
VGV4dHVyZVJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5
MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xO
YW1lZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lZFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1l
ZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hl
Q29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2ODIyQUI0
QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2QTIyQUI0QjhBMDAxNTI3RDkgLyogTG9j
YWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhCdWZmZXJN
ZW1iZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoQnVmZmVyTWVtYmVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0QkUgLyogV0hMU0xTdGFu
ZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xTY29wZWRTZXRBZGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzY2MjYwRjFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM2Qjk1REQyMkM4NThBNDAwRTZGMTRGIC8qIFdITFNMQnVpbGRTdGFu
ZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IFdITFNMQnVpbGRT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM2RkQ4QUMyNTBBMjk0RDAwRDZFOTIwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhBRDI1MEEyRTUzMDBENkU5MjAgLyogR2x5
cGhQYWdlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2x5cGhQYWdlQ29yZVRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhBRTI1MEEzMTE1MDBENkU5
MjAgLyogRm9udENhc2NhZGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2Fz
Y2FkZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NzIsNDgg
KzY5NTAsMTcgQEAKIAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1NzBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8qIFdI
TFNMRW50cnlQb2ludFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50VHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQg
LyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBZGRyZXNzU3BhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOTcyMUVDNDAwNzAwRDA1MDBE
IC8qIFdITFNMQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOTkyMUVDNDAwODAwRDA1MDBEIC8qIFdITFNM
R2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMR2F0aGVy
RW50cnlQb2ludEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBC
OUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVu
c2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRDMjJBQTE5RkYwMDFCRjk2MSAv
KiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29tcHV0ZURp
bWVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEUyMkFBMjND
OTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5l
TWV0YWxDb252ZXJ0TGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lTWV0YWxDb252
ZXJ0TGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEQyNkM5MjJDMDk0
NTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlV
dGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhEMjZEMDIyQzA5
Q0RFMDBEMTI1RjMgLyogbGliY29tcHJlc3Npb24udGJkICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxpYi1k
ZWZpbml0aW9uIjsgbmFtZSA9IGxpYmNvbXByZXNzaW9uLnRiZDsgcGF0aCA9IHVzci9saWIvbGli
Y29tcHJlc3Npb24udGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJMUM5MDRERjkwQkE5
RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9t
YmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4NjAgLyogV0hM
U0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFMDIxRUVCNUY1MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
UmVjdXJzaW9uQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkVBMjFFRUQ2RjUwMEEx
MTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExp
dGVyYWxUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJF
QzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0FBODJGNjIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJl
c29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE4MkY3MjI0MkFFMDUwMEU4NEJCQiAv
KiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eVJl
c29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdFMEE2QzQwNTIw
MEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjU2
RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkRFMjUzMDI0NUEwMDE3QjQ3MiAvKiBEaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIgLyogV0hMU0xFcnJvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
QjY5QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUmVzb2x2YWJsZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNC
NjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzQjIxREYwNDFFMDA2RTg0
NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBU
ZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVbmRlcmxpbmVPZmZzZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFE
IC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENv
bnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNEQUJENkIyMkM4NDc5
QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkw
MTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
V2ViQ29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTYw
QkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcw
MjIsMjAgKzY5NjksNiBAQAogCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1C
dWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRThEMTJC
MjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBOTIxRjJCNjczMDBGNDQ1
NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjAyMUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNM
VHlwZU5hbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZU5hbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IxMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVO
YW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVOYW1lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IyMjFGMkI5ODYwMEY0NDU0MiAvKiBXSExTTEZ1
bmN0aW9uV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25Xcml0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjUyMUY1MEFDNzAwRjQ0NTQyIC8qIFdI
TFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTWV0YWxD
b2RlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjYy
MUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIgLyog
V0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hdGl2ZUZ1
bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0JBMjFG
NTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUNCM0JCMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNDNjIxRjU5Qzg3MDBGNDQ1
NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
TmF0aXZlVHlwZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNC
M0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRjBCRkQ0MjI5ODcwNjgwMEVEMjA3NCAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGV4dFNpemVBZGp1c3RtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9s
aWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxRDAwMjZBMjIz
NzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2NSwyMiArNzM5OCw2IEBACiAJCTMxMjg4RTcxMEUz
MDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU0tleWZyYW1lc1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjhDQTZBMTQ3MzMx
NjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJBMjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJEMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVD
b21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURl
dmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzEyRkY4QkYyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEMxMjFBNEMyRjIwMEVCMTk5RCAvKiBHUFVRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyog
R1BVVGV4dHVyZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzUyMUE0
QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjkzOTIxQTYxQzlGMDBFQjE5OUQg
LyogV2ViR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY5M0IyMUE2MUNBMDAw
RUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVR
dWV1ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOTNDMjFBNjFDQTEw
MEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MkZGOTNEMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyRkY5M0UyMUE2MUYwNzAwRUIxOTlEIC8qIEpTV2ViR1BVUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU0MUZCMDc5RDEwMDhEOTFGQyAvKiBD
YW52YXNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0Jhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NjMsOCArNzQ4MCw2IEBACiAJCTMx
N0QzRkVGMjE1NTk5RTEwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvaW50ZXJF
dmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxN0QzRkYxMjE1NTk5RTIw
MDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3RDNGRjIyMTU1OTlFMzAw
MzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2ludGVyRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8q
IFdlYkdQVUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUxh
eWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxODQzNkREMjFCOURBQTAwMEVE
MzgzRSAvKiBXZWJHUFVMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkdQVUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTg5
RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsg
cGF0aCA9IHBsdWdJbnMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMThFQUQ0
QTFGQTkxMTU3MDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFENEMxRkE5MTM1MjAwOENFRjg2IC8q
IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NjcyLDcgKzc1ODcsNiBAQAogCQkzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNO
b3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0NBMDEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMzUxRjcwQjIyQ0FEOERBMDAxNUI0MEQgLyogV0hMU0xSZXBs
YWNlV2l0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlcGxhY2VXaXRoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM1Qzc0RkQzMjI4QTE5MTIwMDBDMjFBMCAvKiBDU1NHcmlkSW50
ZWdlclJlcGVhdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0dyaWRJbnRlZ2VyUmVw
ZWF0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNUM3NEZENzIyOEEx
OUE2MDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM2NjJGOTg0MDQ3Q0VEQkU1REREQUZBQSAvKiBSZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTEzLDE5ICs5MDI3LDggQEAK
IAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjY3REEx
QUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVBMUM0RjE1NjEwMDMzRjgwMiAvKiBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyMTU4NjJDMjI5Mzc3QjcwMDU5MjVFRiAvKiBXSExTTEFTVC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEFTVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MjI1NkNBQTIzMEYxNEFEMDA0M0UxMkYgLyogV0hMU0xOYW1lU3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0hMU0xOYW1lU3BhY2UuaDsgcGF0aCA9IEFTVC9XSExTTE5hbWVTcGFjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJCQUI5NjIyRTZBMzYyMDBDNTRDRTkgLyogV0hM
U0xDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb2RlTG9jYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRDA3QTMyMkZCQUI0MzAwQjkwNUJFIC8qIFdI
TFNMRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEV4cHJlc3Npb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJEQTNEMzIyOUUxRDM5MDA0MkQxNTEg
LyogV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
MkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRTFBMTkyMjk3RDZENDAwRTVEMzZB
IC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hM
U0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tSZWZlcmVu
Y2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2
MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0
RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hM
U0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NDI1NjEwM0NGMDA4NTAwMDcgLyogUGxh
dGZvcm1YUkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUkNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NTI1NjEwM0NGMDA4NTAwMDcg
LyogUGxhdGZvcm1YUkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJDb2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M5QTI1NjNCMjEyMDA4NTAwMDcgLyog
SlNXZWJYUlRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJYUlRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTEzNywxMiArOTA0
MCw5IEBACiAJCTUyNzNDQ0FEMjU2NDU3NkMwMDg1MDAwNyAvKiBKU0Zha2VYUkJ1dHRvblN0YXRl
SW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUkJ1
dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzNDQ0FF
MjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1
MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRmFrZVhSVmlld0luaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQYXJzaW5nTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQ0IxMURC
MjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xEZWZhdWx0RGVsZXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVB
MThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0xheWVyTWFuYWdlck9iakMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAv
KiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NzYsMTMgKzEwNjc2LDEwIEBACiAJCTdDN0JG
OTQ5MjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M3QkY5NEIyNTE2RkE1NDAwODA4NjgyIC8qIFBlcmZvcm1hbmNlTWVhc3Vy
ZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzdCRjk1MDI1MTZGQjU0MDA4MDg2ODIgLyogUGVyZm9y
bWFuY2VNZWFzdXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDN0M3NjlDMjJGNjdFQ0QwMDMyQkND
RCAvKiBXSExTTE1hbmdsZWROYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1hbmdsZWROYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBMzFFRDYyODFEMDBDRTI2
RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTQx
RUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01PcGVyYXRpb25S
ZXR1cm5pbmdQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODNERTg1
MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZUhhc2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4ODI0QzQyNDlEN0IwNTAwRUQ4RkM0IC8qIFNWR1BhdGhTZWdWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnVmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RTM0OTIxRTRBMzM4RTAwNTRDRTIzIC8q
IEpTRE9NQ29udmVydEFueS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TUNvbnZlcnRBbnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RTM0OTMxRTRB
MzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01Db252ZXJ0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsMTAgKzExNDIzLDYgQEAKIAkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8q
IEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNFNUEyMUUyODFFRDAwREYy
QzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNFNUEyMUUyODFFRDAwREYyQzI4IC8q
IEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0IzMjMyOUZCMDUwMEFGRjg1NyAvKiBH
UFVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGlu
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MTg2RjNCNjIzMjlGQjRFMDBBRkY4
NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
MTg2RjNCNzIzMjlGQjRGMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQVVBpcGVsaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVsaW5lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOEYwQjMyMTk1M0Q2NTAwMEMyQjAwIC8qIENl
cnRpZmljYXRlU3VtbWFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZXJ0
aWZpY2F0ZVN1bW1hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOTUyMjIx
RjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlY29yZGluZ1N3aXp6bGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkx
QzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI3MTAsNyArMTI2MDMsNiBAQAogCQlBMzdBNDJFMDI1MjdCNDlDMDBGNzVB
RkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTIyNTI3QjQ5RDAwRjc1QUZGIC8qIEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzdBNDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzOEE4N0EzMjUzOEJFRTcwMDM3QTQ3MiAvKiBH
UFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGxhdGZvcm1UeXBlc01l
dGFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUY5RDgxMjAzMjUyRUUwMDZD
QUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNlckFnZW50SU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckFnZW50SU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTgsNyArMTI2MTAsNiBAQAogCQlBM0JGN0VGMjI1
NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzQkY3RUY0MjU2QzhENzIwMDQ0QkM3NSAvKiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY1MjU2QzhENzQwMDQ0QkM3NSAvKiBL
SFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzQzNEQzVEMjUzQTE5OTIwMDYx
RjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVVBsYXRmb3JtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNE
NDJBODQxRjMzQkEzNjAwQTY0QjYyIC8qIExheW91dFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzA0
LDEyMSArMTQ1OTUsMTYgQEAKIAkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBp
bGVyU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBR1hDb21waWxlclNlcnZpY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcg
LyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFHWENvbXBpbGVyU2Vydmlj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAxNUMwOTFCRTZGRTJDMDA4MjIz
ODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRWYXJpYW50QnVp
bGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NDIxREZCRTVDMDA3
MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
VHlwZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMEY0RjY2
MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMEY4OEFBMjI5NjZCMEUwMEQ2MTBG
QSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEFTVER1bXBl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMEY4OEFDMjI5NjZCMEYwMEQ2
MTBGQSAvKiBXSExTTEFTVER1bXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFTVER1bXBlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0Qg
LyogV0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExleGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdI
TFNMTGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWlsdEluU2Vt
YW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyog
V0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMTM4QTE2MjFE
REVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZC
QSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbnRpbnVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQm9vbGVhbkxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8qIFdITFNMSW5kZXhFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW5kZXhFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY4MjFDRDg5QkIwMDIyNzk3OSAvKiBXSExTTEludGVnZXJM
aXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2Vt
YW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50
aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb1doaWxlTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRl
Y2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyog
V0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RydWN0dXJlRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRjIxQ0Q4OUMyMDAy
Mjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElmU3RhdGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAwMjFDRDg5QzIwMDIy
Nzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmFsbHRocm91
Z2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3
OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
RGVyZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMzIxQ0Q4OUM1MDAyMjc5NzkgLyogV0hMU0xS
ZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmlidXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFF
eHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29tbWFFeHByZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA4MjFDRDg5QzkwMDIyNzk3OSAvKiBXSExT
TFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXNvdXJjZVNlbWFudGlj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA5MjFDRDg5Q0EwMDIyNzk3
OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5VHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyog
V0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MEIy
MUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBDMjFDRDg5
Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFeHBy
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBEMjFDRDg5Q0Qw
MDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZWZl
cmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBFMjFDRDg5
Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xUeXBlQXJndW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJl
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4cHJlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMRG90
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERvdEV4cHJlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTkyMUNEODlENzAwMjI3OTc5IC8qIFdITFNM
U3dpdGNoQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3aXRjaENhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJl
YWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCcmVhay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxQzIxQ0Q4OURBMDAyMjc5
NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFRlcm5h
cnlFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFEMjFD
RDg5REIwMDIyNzk3OSAvKiBXSExTTFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3OSAv
KiBXSExTTEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmxvY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUYyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMVHlwZVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25EZWZp
bml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIxMjFDRDg5REUw
MDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2Vt
YW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCdWlsdEluU2VtYW50aWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjUy
MUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1iZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJl
RGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8q
IFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcyQTIxQ0Q4OUU3MDAyMjc5NzkgLyogV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8q
IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJFMjFD
RDg5RUEwMDIyNzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5NzkgLyogV0hMU0xQb2ludGVyVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBvaW50ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMUJGNzMwMjFDRDg5RUQwMDIyNzk3OSAvKiBXSExTTEFzc2lnbm1lbnRF
eHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8q
IFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3dpdGNoU3RhdGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMyMjFDRDg5RUYwMDIy
Nzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTG9n
aWNhbEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzMy
MUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAvKiBXSExTTEZvckxvb3AuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xGb3JMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEZsb2F0TGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5
IC8qIFdITFNMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzgyMUNEOEEwMzAwMjI3OTc5IC8q
IFdITFNMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUGFyc2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dy
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMUJGNzQyMjFDRDk2M0IwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFy
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXSExTTFN0YW5kYXJkTGlicmFyeS5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJkTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwotCQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xT
dGFuZGFyZExpYnJhcnkudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0Zv
bnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4NTIxRTg4NkE5MDAzQzk4NEQgLyog
V0hMU0xWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVmlzaXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTg3MjFFODg2QUQwMDNDOTg0RCAvKiBX
SExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVS
ZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hbWVSZXNvbHZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThDMjFFODg4M0UwMDNDOTg0RCAvKiBX
SExTTE5hbWVSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hbWVSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4RDIxRTg4ODg0MDAzQzk4NEQgLyog
V0hMU0xOYW1lQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hbWVDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OEUyMUU4ODg4NTAwM0M5
ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5NzIxRTkwRjI4MDAzQzk4
NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVz
b2x2ZU92ZXJsb2FkSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5
OTIxRTkwRjI5MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlBMjFFOTBGNTYwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlw
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbmZlclR5cGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUIyMUU5MEY1NzAwM0M5ODREIC8qIFdITFNMSW5m
ZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZmVyVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUQyMUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2
aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmluZ1R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUIyMUU5MkMxODAwM0M5ODREIC8qIFdITFNMUmVj
dXJzaXZlVHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZWN1cnNpdmVUeXBlQ2hl
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTlBQzIxRTkyQzE5MDAz
Qzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUQyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMUmVjdXJz
aXZlVHlwZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xSZWN1cnNpdmVUeXBl
Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFFMjFFOTJD
MUEwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTlCMTIxRTkyQzFEMDAz
Qzk4NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjMyMUU5MkMyMTAwM0M5ODRE
IC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjYyMUU5MkNDMDAwM0M5ODREIC8qIFdITFNMSW50
cmluc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludHJpbnNpY3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjcyMUU5MkNDMTAwM0M5ODREIC8qIFdITFNMSW50cmlu
c2ljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludHJpbnNpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM5OEVCRDIzMEExQjc2MDA2NDE1MDcgLyogV0hMU0xO
YW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThFNjExRkU4OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNv
cmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBXSExTTFBpcGVs
aW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdCMjIxRkI4RERBMDA0QzZERDEg
LyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTZW1h
bnRpY01hdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdCMzIx
RkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTZW1hbnRpY01hdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0
QTU3QkEyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFyZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFByZXBhcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRB
NTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMUHJlcGFyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMTFDNzJE
Qzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0MxQzZEQjE5NDAwMTQ1MUI2IC8qIEZvbnRGYWNl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFjZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyODA4MzNEMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRm9udEZhY2UuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpT
Rm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNGb250RmFjZS5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODBCM0ZEMUVGNDYwODkwMEQzNTEzNSAvKiBG
b250RmFtaWx5U3BlY2lmaWNhdGlvbk51bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8qIFdITFNMVHlwZUFy
Z3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZUFyZ3VtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBBRjQxRTZCM0M2QzAwMTM0OEM1IC8qIEZv
bnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyQUIwQUY1MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGht
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdvcml0
aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBCMDMxRTZERTkyQzAwMTM0
OEM1IC8qIEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNl
bGVjdGlvblZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0
MjUsMjI5ICsxNTIxMSwyOCBAQAogCQlEMDAwRUJBMTExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVM
b2FkZXJTdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAw
MEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YmZyYW1lTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YmZyYW1lTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDFEOUFCMjFCMEM3QkYwMDIzQjlCQyAv
KiBHUFVDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDAzMjg3OTIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cExheW91dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3QTIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BV
QmluZEdyb3VwTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cExh
eW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDMyODdCMjFDODY0NUIw
MDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91
cExheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDMyODg0MjFDOUEy
MEQwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMDMyODg2MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZUxheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDAzMjg4NzIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDAzOTE0MTIyMjQ4RDQwMDA5ODk5OEMgLyogR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdEMjIyNDU3
QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0U1MjI2QTYzNDIwMEVFRDdEOSAvKiBXZWJHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdFQjIy
NzQyODEyMDBFRUQ3RDkgLyogTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIk5hdmlnYXRvcitHUFUu
aWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUQyMjc0MjgxMzAwRUVE
N0Q5IC8qIE5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JHUFUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdFRTIyNzQyODE0MDBFRUQ3
RDkgLyogTmF2aWdhdG9yR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvckdQVS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdGRDIyNzdBRjgxMDBFRUQ3RDkgLyogV29y
a2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIldvcmtlck5hdmlnYXRvcitHUFUuaWRsIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RkUyMjc3QUY4MjAwRUVEN0Q5IC8qIFdv
cmtlck5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3JHUFUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkQyMjQyRUQ0NTAwNDNGMTJDIC8q
IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkUyMjQy
RUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTQ4MjE2RUZF
NTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVBZGFwdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAw
RjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTMyMTcw
MUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk1NDIxNzAx
RDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXZpY2UuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAx
QTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDFCODExMjIyMTI1QUZDMDA2MjdCNkMgLyogR1BVQ29sb3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEdQVUNvbG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMTky
MjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJ1ZmZl
ckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDFCODExQzIy
MTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJ1ZmZlclVzYWdl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMUQyMjEzNjM2RTAwNjI3
QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlclVzYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjMyQjU4MjFDQjQ5QjcwMDk0ODNCOSAv
KiBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJp
bmRHcm91cExheW91dE1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI0
NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3VwTGF5b3V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUJpbmRHcm91cExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVRXh0ZW50M0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0ODAyMjBB
MkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVFeHRlbnQzRC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgzMjIwQTQ3MkYwMEFDNUY0OSAvKiBH
UFVUZXh0dXJlVXNhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVVc2FnZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDg1MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJl
VXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZVVzYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMjZGNDhCMjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVz
Y3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDI2RjQ4QzIyMEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgxOEU0IC8qIEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzMjExQ0UyMUFDOTU0RTAwNzYzQ0Yy
IC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NF
bmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzIxMUNGMjFBQzk1NEUw
MDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yU2NvcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvclNjb3Blcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwMzZERDhEMjA4RkZDMEMwMEY5RjRCMiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5QTIxRkZDNjY3MDAwMjIyN0YgLyogR1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURlcHRoU3Rl
bmNpbFN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDND
ODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUNvbXBhcmVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDNDODQ5RTIxRkZDRjAwMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
UFVDb21wYXJlRnVuY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDND
ODRBMjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDVBOTlFMTIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFMjIxQzlC
NTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5l
TGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTYyMUM5QkYyQzAwMDMyQjc1IC8q
IFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAv
KiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVERDZERDIyMzg4NDA2MDA5N0E4MzQgLyogV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1REQ2REUyMjM4ODQwNzAw
OTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVERDZERjIyMzg4
NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg0MjE4MjVE
NUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2Vi
R1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyog
V2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVNoYWRlck1v
ZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjE1RkNFMjE3RkU1QzYw
MDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVs
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjVCRTU3MjJGQjYxNkQwMDc2
REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdy
b3VwQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjVCRTU4MjJG
QjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDZBOUEyMTIyMDI2QzdBMDA4M0M2NjIgLyogR1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RDBDRkQxMTQ2MDA2NUY0M0Yg
LyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
NkMwRDhFMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZFRjU1MjIyMEJBMjZBMDAxODcyNEUgLyog
R1BVVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA2RUY1NTMyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVVdGlsc01ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDdERUFCNzBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1h
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydExpc3RD
b21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjgwQTM2NTU0
QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
ODQwMzNEMjIxRTE4NjQwMDAwNzIwNSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg0M0E0QzIwRkVDMTY1MDBGRTg2MEUgLyogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwODVFNjRBMjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5kR3JvdXBNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cE1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDg2RkU5NjA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtDb21tYW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODZGRTk3MDlENTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtD
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua0Nv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzODIxQUNBOTQy
MDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVldWVNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVVF1ZXVlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0IyMUFDQTk0MjAwQkRFMTc0IC8q
IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDg3Q0UzQzIxQUNBOTQyMDBCREUxNzQgLyogR1BVRGV2aWNlTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0QyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVJlbmRlclBpcGVs
aW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzRTIxQUNBOTQyMDBCREUx
NzQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2Fw
Q2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0YyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdQVVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NF
NDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzUyMjQwNjAxRDAw
RjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDg5MDMzNzIyNDA2MUFDMDBGM0Y0NDAgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM4MjI0
MDYyODkwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzOTIyNDA2NDJEMDBGM0Y0NDAgLyogR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzNB
MjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVQ29tcHV0ZVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkw
MzNCMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDg5MDMzQzIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRDIyNDFBOTlGMDBGM0Y0NDAgLyogV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQ
aXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzNFMjI0MUE5
OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbXB1
dGVQaXBlbGluZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzNGMjI0
MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
ODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRDIyMEQwQjlDMDA1OEM1MDIgLyogR1BV
TG9hZE9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHUFVMb2FkT3AuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDhBQTAyRjIyMEQwQkQ1MDA1OEM1MDIgLyogR1BVTG9hZE9wLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUxvYWRPcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAzMTIy
MEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVU3RvcmVPcC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDMyMjIwRDBEMEIwMDU4QzUwMiAvKiBH
UFVTdG9yZU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN0b3JlT3AuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzYyMjBEMTlEQTAwNThDNTAyIC8qIFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM3MjIwRDFEMDUwMDU4QzUwMiAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
OTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUNhbnZhc0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5
M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNh
bnZhc0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDkzRDIyOTIx
Nzk1NDE2MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHUFVDYW52YXNDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5
QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA3MjMxNzFGNTIwMDE4Nzc2MiAv
KiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBQzAwQTIzMTczNUJFMDAx
ODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VURldmljZUV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
QzAwQjIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDEyMkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVURldmljZUVycm9yU2Nv
cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDIyMkQwNDcxOTAw
QzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUVycm9yRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFG
QjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDlBRkIwNjIyRDQxN0IzMDBDNDUzOEMgLyogR1BVRXJyb3JGaWx0ZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQ
VUVycm9yRmlsdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDcy
MkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjA4MjJENTU0MjgwMEM0NTM4QyAv
KiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4QyAvKiBHUFVWYWxp
ZGF0aW9uRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBEMjJENTVGM0IwMEM0NTM4QyAvKiBHUFVWYWxpZGF0
aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmFsaWRhdGlvbkVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBFMjJENTVGRjUwMEM0NTM4QyAvKiBHUFVWYWxp
ZGF0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVVmFsaWRhdGlvbkVycm9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMTcyMkQ2Njk0RTAwQzQ1MzhD
IC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU91dE9mTWVtb3J5RXJyb3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIxOTIyRDY2OThBMDBDNDUzOEMg
LyogR1BVT3V0T2ZNZW1vcnlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVPdXRPZk1lbW9yeUVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjJEMjJENkMwMTQwMEM0
NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjM3MjJEN0Q1QzYwMEM0NTM4QyAvKiBH
UFVPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVU9iamVjdEJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwQTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTNBNzMwMTQw
NUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQURCMjYyMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTYW1wbGVyRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MzIyMzA5RDc2MDBBMjI5MzUgLyogR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjgyMjMwQUFDQjAwQTIyOTM1IC8qIEdQVVNh
bXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUgLyogR1BVU2FtcGxlck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2FtcGxlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEFEQjI2QzIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BVU2FtcGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEFEQjI2RjIyMzBDMUYxMDBBMjI5MzUgLyogV2ViR1BVU2FtcGxlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVU2FtcGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
QURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBBREIyN0YyMjMyRjE3MzAwQTIyOTM1IC8qIEdQVVN3YXBDaGFpbkRl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVU3dhcENoYWluRGVzY3JpcHRvci5oOyBwYXRo
ID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyogV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwQURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEFEQjI4QzIyMzc4NDJFMDBBMjI5MzUgLyogR1BVQ29sb3JTdGF0
ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0
ZUxpbmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWF0ZUxp
bmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY3MDlDNjcw
MDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmxlbmREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFCMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdQVUNvbG9yV3JpdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI4QkIw
MTIxQzQ2RTc4MDAwQzc2ODEgLyogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCRDRGNUExNDA4ODUwRjAw
NjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5k
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEEyMUU2ODcyRjAwRTQy
QTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQnVmZmVyQmluZGlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA0QzIxRTY4RjE1MDBFNDJB
ODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCdWZmZXJC
aW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDREMjFFNjhGMTUw
MEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCdWZmZXJCaW5k
aW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEUyMUU2OTVFMjAw
RTQyQTg5IC8qIEdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdy
b3VwQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA0RjIxRTY5
RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
QkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEJFMTA1MjIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUzMjFFNkFBMEQwMEU0MkE4OSAv
KiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNUUyMUU2QkFE
MzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjAyMUU2QzBFQjAwRTQyQTg5
IC8qIFdlYkdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjEyMUU2QzBFQjAwRTQyQTg5IC8q
IFdlYkdQVUJpbmRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA2MjIxRTZDMEVCMDBFNDJB
ODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXAuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyog
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQx
OUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjMyMTgzRUZFQzAw
OUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENBQUQ1MzIyNzdDMkE2MDA4MDFDREYgLyogV29y
a2VyTmF2aWdhdG9yR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck5hdmlnYXRvckdQ
VS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQ0NBOTQ5MjIyOTlGOTcwMDY5
NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVPcmlnaW4zRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0QTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BV
T3JpZ2luM0QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVU9yaWdpbjNELmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ2OUM5RDIyMkUwMEMyMDAzMjkyN0Ug
LyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDY5QzlG
MjIyRTAxNUUwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
UFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBEODY0ODcyMUI2NENBQTAwM0M5ODNDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQnVmZmVyRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RDg2NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUJ1
ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDkxMjFCNzYwQzQw
MDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJ1
ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5MjIxQjc2
MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5NDIxQkExNzNEMDAzQzk4M0MgLyog
R1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5NjIxQkExOEY0MDAz
Qzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RDg2NDk4MjFCQTE5QTcwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUIyMUJBMUMyRDAwM0M5ODNDIC8qIEdQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5QzIx
QkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREU4
RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFnZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVU2hhZGVy
U3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y3NjIxOTM3MjI4
MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
Q29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzcy
MTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwRUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGODcyMTkz
RUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVRleHR1cmVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg4MjE5
M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVUZXh0dXJlVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVVGV4dHVyZVZpZXcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4
QzIxOTQwM0M5MDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhGMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkwMjE5
NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVB
Q0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTIyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBF
QUNGOTMyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwRUFDRkFFMjE5RTMwRkQwMDBGQTc1QyAvKiBHUFVUZXh0dXJlRm9y
bWF0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHUFVUZXh0dXJlRm9ybWF0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzMxNDNFMzAzQzAwMjhF
MzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
Rjc1NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgwNTggLyog
V0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTggLyogR1BVTGltaXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUxpbWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZG
MkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGluZ0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMkNEQjVFRDYzOEY0M0FGODZGMDdBQTIgLyogSlNFcnJvckV2ZW50Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXJyb3JFdmVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTE2NSwxMDMgKzE4
NzUwLDYgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKLQkJMUNB
MEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNTI5MTRDMkMyMkY5M0U1RDAwNTc4MTUwIC8qIFdITFNMQWRk
cmVzc0VzY2FwZU1vZGUuaCAqLywKLQkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hM
U0xBZGRyZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hM
U0xBcnJheVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5Nzkg
LyogV0hMU0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyog
V0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJCTUyMTU4NjJDMjI5Mzc3QjcwMDU5
MjVFRiAvKiBXSExTTEFTVC5oICovLAotCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAvKiBX
SExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZBMjFDRDg5QkUwMDIy
Nzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzFFMjFDRDg5REMwMDIy
Nzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5IC8q
IFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5Nzkg
LyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBXSExT
TEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8q
IFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3OTc5
IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5
NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjczMzIxQ0Q4OUYwMDAy
Mjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjZGNTIxQ0Q4
OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAotCQkJCTUyQ0IxMURCMjJGRERCMkUw
MDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAqLywKLQkJCQlDMjFCRjcwMTIxQ0Q4OUM0
MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcx
ODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY2
RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKLQkJCQlDMjFCRjcy
ODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmgg
Ki8sCi0JCQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8qIFdITFNMRW50cnlQb2ludFR5cGUu
aCAqLywKLQkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRl
ZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVt
ZXJhdGlvbk1lbWJlci5oICovLAotCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExT
TEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJCTUyMkQwN0EzMjJGQkFCNDMwMEI5
MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovLAotCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIy
Nzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5
NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovLAotCQkJCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3
OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2
QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM0MjFERUQ2M0Ew
MDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLywKLQkJCQlDMjFCRjczNDIxQ0Q4
OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCi0JCQkJQzIxQkY3MDUyMUNEODlDNzAw
MjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjZGRDIxQ0Q4
OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY2
RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8sCi0JCQkJ
NTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uu
aCAqLywKLQkJCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5o
ICovLAotCQkJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lv
bi5oICovLAotCQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRl
cmFsLmNwcCAqLywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2Vy
TGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVn
ZXJMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzIyMUNEODlFRjAwMjI3OTc5
IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAy
Mjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzJEMjFD
RDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywK
LQkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Np
b24uaCAqLywKLQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUu
aCAqLywKLQkJCQlDMjM5OEVCRDIzMEExQjc2MDA2NDE1MDcgLyogV0hMU0xOYW1lU3BhY2UuaCAq
LywKLQkJCQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjEyMUNEODlERTAwMjI3OTc5IC8q
IFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggKi8sCi0JCQkJQzIxQkY3MkYyMUNE
ODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLywKLQkJCQlDMjFCRjcyRTIxQ0Q4
OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xRdWFsaWZpZXIuaCAqLywKLQkJCQlDMjFC
RjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgg
Ki8sCi0JCQkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5IC8qIFdITFNMUmVmZXJlbmNlVHlwZS5o
ICovLAotCQkJCTMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAvKiBXSExTTFJlcGxhY2VXaXRoLmgg
Ki8sCi0JCQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUu
aCAqLywKLQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0
dXJuLmggKi8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMu
aCAqLywKLQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAv
KiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovLAotCQkJCUMyMTM4QTE3
MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8sCi0JCQkJ
QzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmggKi8s
Ci0JCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8sCi0J
CQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5o
ICovLAotCQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZUVsZW1l
bnQuaCAqLywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNl
LmggKi8sCi0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVt
ZW50LmggKi8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4
cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBl
LmggKi8sCi0JCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8qIFdITFNMVHlwZUFyZ3VtZW50
LmNwcCAqLywKLQkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xUeXBlQXJndW1l
bnQuaCAqLywKLQkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5NzkgLyogV0hMU0xUeXBlRGVmaW5p
dGlvbi5oICovLAotCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcwQzQ1QSAvKiBXSExTTFR5cGVSZWZl
cmVuY2UuY3BwICovLAotCQkJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVS
ZWZlcmVuY2UuaCAqLywKLQkJCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5h
bWVkVHlwZS5jcHAgKi8sCi0JCQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5u
YW1lZFR5cGUuaCAqLywKLQkJCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4NEYgLyogV0hMU0xVbm5h
bWVkVHlwZUhhc2guaCAqLywKLQkJCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5
NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCM0IyMURG
MDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAot
CQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MTMyMUNEODlE
MjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKLQkJCQlDMjFCRjcwNDIx
Q0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0g
QVNUOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMUNERDQ0NjYwQkE5Qzgw
MDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE5MjgxLDI4ICsxODc2OSw2IEBACiAJCQl0YWJXaWR0aCA9IDQ7
CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDRUNCM0FEMjFGMkI5NjQwMEY0NDU0MiAvKiBN
ZXRhbCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNF
Q0IzQkEyMUY1MTFBQTAwRjQ0NTQyIC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcCAq
LywKLQkJCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50U2NhZmZv
bGRpbmcuaCAqLywKLQkJCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlv
bldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjIyMUYyQjk4NjAwRjQ0NTQyIC8qIFdITFNMRnVu
Y3Rpb25Xcml0ZXIuaCAqLywKLQkJCQk3QzdDNzY5QzIyRjY3RUNEMDAzMkJDQ0QgLyogV0hMU0xN
YW5nbGVkTmFtZXMuaCAqLywKLQkJCQkxQ0VDQjNCNTIxRjUwQUM3MDBGNDQ1NDIgLyogV0hMU0xN
ZXRhbENvZGVHZW5lcmF0b3IuY3BwICovLAotCQkJCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAv
KiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAotCQkJCTFDRUNCM0I4MjFGNTBEMTAwMEY0
NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywKLQkJCQkxQ0VDQjNCOTIx
RjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovLAotCQkJCTFD
RUNCM0M2MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwICovLAot
CQkJCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCAq
LywKLQkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuY3BwICov
LAotCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICovLAot
CQkJCUQwRjc1NTk5MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2Fs
Y3VsYXRvci5jcHAgKi8sCi0JCQkJRDBGNzU1OTgyMjAzOTFDMzAwMTE4MDU4IC8qIFdITFNMVmVy
dGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IE1ldGFsOwot
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMUQwMDI2OUEyMzc0QjlGODAwQ0E2
Q0RGIC8qIFBpY3R1cmVJblBpY3R1cmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtMjA1MDEsODAgKzE5OTY3LDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZC
QSAvKiBncHUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJ
CUQwODdDRTM3MjFBQ0E5NDIwMEJERTE3NCAvKiBjb2NvYSAqLywKLQkJCQlEMEJFMTA1RTIxRTZC
QUQzMDBFNDJBODkgLyogR1BVQmluZEdyb3VwLmggKi8sCi0JCQkJRDA2NUJFNTcyMkZCNjE2RDAw
NzZERDYwIC8qIEdQVUJpbmRHcm91cEFsbG9jYXRvci5oICovLAotCQkJCUQwQkUxMDRFMjFFNjk1
RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5nLmggKi8sCi0JCQkJRDBCRTEwNTEyMUU2
QTcwRTAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDI0NTRE
MDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3VwTGF5b3V0LmggKi8sCi0JCQkJRDBCNTZF
QUEyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5oICovLAotCQkJCUQwODQw
MzNBMjIxQ0JGNTQwMDAwNzIwNSAvKiBHUFVCdWZmZXIuY3BwICovLAotCQkJCUQwRDg2NDkyMjFC
NzYwRjIwMDNDOTgzQyAvKiBHUFVCdWZmZXIuaCAqLywKLQkJCQlEMEJFMTA0QTIxRTY4NzJGMDBF
NDJBODkgLyogR1BVQnVmZmVyQmluZGluZy5oICovLAotCQkJCUQwRDg2NDg3MjFCNjRDQUEwMDND
OTgzQyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAxQjgxMUQyMjEzNjM2RTAw
NjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8sCi0JCQkJRDAwMUQ5QUIyMUIwQzdCRjAwMjNC
OUJDIC8qIEdQVUNvbG9yLmggKi8sCi0JCQkJRDBBREIyOEIyMjM3ODQyRTAwQTIyOTM1IC8qIEdQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBCNTZFQUQyMjRFQ0UyMDAwNjEwNDlD
IC8qIEdQVUNvbG9yV3JpdGUuaCAqLywKLQkJCQkzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyog
R1BVQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCUQwM0M4NDlDMjFGRkM3RkMwMDAyMjI3RiAvKiBH
UFVDb21wYXJlRnVuY3Rpb24uaCAqLywKLQkJCQlEMDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAgLyog
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8sCi0JCQkJRDA4OTAzM0EyMjQxNzlCNTAwRjNGNDQw
IC8qIEdQVUNvbXB1dGVQaXBlbGluZS5oICovLAotCQkJCUQwODkwMzM5MjI0MDY0MkQwMEYzRjQ0
MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAzQzg0OUEyMUZG
QzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oICovLAotCQkJ
CTMxMkZGOEJGMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuY3BwICovLAotCQkJCTMxMkZG
OEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDlBRkIwODIyRDU1
NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjJEMjJENkMwMTQwMEM0
NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8sCi0JCQkJRDA5QUZCMDcyMkQ1MzkxQjAwQzQ1MzhDIC8q
IEdQVUVycm9yLmggKi8sCi0JCQkJRDA5QUZCMDIyMkQwNDcxOTAwQzQ1MzhDIC8qIEdQVUVycm9y
RmlsdGVyLmggKi8sCi0JCQkJRDAzNTg2QjIyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2Nv
cGVzLmNwcCAqLywKLQkJCQlEMDM1ODZCMTIyRDdGMkVBMDBEQTAyODQgLyogR1BVRXJyb3JTY29w
ZXMuaCAqLywKLQkJCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaCAq
LywKLQkJCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTggLyogR1BVTGltaXRzLmggKi8sCi0JCQkJ
RDA4QUEwMkYyMjBEMEJENTAwNThDNTAyIC8qIEdQVUxvYWRPcC5oICovLAotCQkJCUQwOUFGQjM3
MjJEN0Q1QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8sCi0JCQkJRDA5QUZCMTkyMkQ2
Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLywKLQkJCQk5MTg2RjNCQTIz
MjlGRTY4MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuY3BwICovLAotCQkJCTkxODZGM0IzMjMyOUZC
MDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovLAotCQkJCTMxMkZGOEM0MjFBNEMyRjQwMEVC
MTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0JCQkJRDAwMzI4ODcyMUM5
QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJCQlEMDAzMjg4NjIx
QzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywKLQkJCQlEMDAzMjg4NDIx
QzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJ
QTNDM0RDNUQyNTNBMTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRmb3JtVHlwZXMuaCAqLywKLQkJCQlE
MDAzOTE0MTIyMjQ4RDQwMDA5ODk5OEMgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3Bw
ICovLAotCQkJCUQwMzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oICovLAotCQkJCTMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQg
LyogR1BVUXVldWUuaCAqLywKLQkJCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDMyMTFDRTIxQUM5NTRFMDA3NjNDRjIgLyog
R1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhCOTIxQTRDMkVGMDBFQjE5OUQg
LyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKLQkJCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQg
LyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA2QTlBMjEyMjAyNkM3
QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICovLAotCQkJCUQwQURCMjY4
MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8sCi0JCQkJRDBBREIyNjIyMjMwOUQ3
NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzEyRkY4QkIyMUE0
QzJGMDAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAotCQkJCTMxMkZGOEMwMjFBNEMy
RjIwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4QUEw
MzIyMjBEMEQwQjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaCAqLywKLQkJCQkzMTJGRjhCQTIxQTRD
MkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBBREIyN0YyMjMyRjE3MzAw
QTIyOTM1IC8qIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDNTIxQTRD
MkY0MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oICovLAotCQkJCUQwMjZGNDhDMjIwQTVCQUQwMEFD
NUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovLAotCQkJCTMxMkZGOEMzMjFBNEMyRjMw
MEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggKi8sCi0JCQkJRDAyNkY0ODUyMjBBNDc3MjAw
QUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5oICovLAotCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4
NzI0RSAvKiBHUFVVdGlscy5oICovLAotCQkJCUQwOUFGQjBFMjJENTVGRjUwMEM0NTM4QyAvKiBH
UFVWYWxpZGF0aW9uRXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjBEMjJENTVGM0IwMEM0NTM4QyAv
KiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLywKLQkJCQlEMEQ4NjQ5QjIxQkExQzJEMDAzQzk4M0Mg
LyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oICovLAotCQkJCUQwRDg2NDlDMjFCQTFD
RTgwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBEODY0
OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5oICovLAotCQkJ
KTsKLQkJCXBhdGggPSBncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk0
OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMjQzMzQsNyArMjM3MjYsNiBAQAogCQkJCTU3RDg0NjJBMUZF
QUY1N0YwMENBMzY4MiAvKiB3ZWJhdXRobiAqLywKIAkJCQk5N0JDNjlENTE1MDVGMDU0MDAxQjc0
QUMgLyogd2ViZGF0YWJhc2UgKi8sCiAJCQkJOTk2RTU5REExREYwMEQ0NTAwNjYxMkI5IC8qIHdl
YmRyaXZlciAqLywKLQkJCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIgLyogd2ViZ3B1ICovLAog
CQkJCTk3QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRzICovLAogCQkJCUUxRUU4
QUM2MjQxMkIxNkYwMEU3OTRENiAvKiB3ZWJ4ciAqLywKIAkJCSk7CkBAIC0yNzAyMiw3ICsyNjQx
Myw2IEBACiAJCQkJQ0Q5RDgyN0MxQzdCQjJFRDAwNkZGMDY2IC8qIGN2ICovLAogCQkJCTBGRTVG
QkM5MUMzREQ1MDYwMDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMgKi8sCiAJCQkJQTc1RThCN0YwRTFE
RTJCMDAwN0YyNDgxIC8qIGZpbHRlcnMgKi8sCi0JCQkJNDk4NzcwQzExMjQyQzUwRDAwMjIyNkJB
IC8qIGdwdSAqLywKIAkJCQk0NDFBRjBBNzBFQkE3QkJGMDA0NEVENEIgLyogaW9zICovLAogCQkJ
CUNEODkyRjVBMUZCNTJBQ0YwMDkzMzNEMiAvKiBpc28gKi8sCiAJCQkJQjI3NTM1NDkwQjA1Mzgx
NDAwMkNFNjRGIC8qIG1hYyAqLywKQEAgLTI3NDU5LDggKzI2ODQ5LDYgQEAKIAkJCQlDRDVEMjc3
NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAog
CQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCiAJCQkJNDlG
RkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCi0JCQkJMzE4NDM2REIy
MUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8sCi0JCQkJMzE4NDM2REQyMUI5REFB
MDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2
MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0
RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCSk7CkBAIC0y
ODMxOSw4NCArMjc3MDcsNiBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07Ci0JCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAvKiBXSExTTCAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBMEMyRjYyMUVFREFE
MjAwQTExODYwIC8qIEFTVCAqLywKLQkJCQkxQ0VDQjNBRDIxRjJCOTY0MDBGNDQ1NDIgLyogTWV0
YWwgKi8sCi0JCQkJQzIwRjg4QUEyMjk2NkIwRTAwRDYxMEZBIC8qIFdITFNMQVNURHVtcGVyLmNw
cCAqLywKLQkJCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuaCAq
LywKLQkJCQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyogV0hMU0xCdWlsZFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLnB5ICovLAotCQkJCUMyMzRBOUIyMjFFOTJDMUYwMDNDOTg0RCAvKiBX
SExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCAqLywKLQkJCQlDMjM0QTlBRTIxRTkyQzFB
MDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oICovLAotCQkJCTFDODQw
QjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuY3BwICovLAotCQkJCTFDODQwQjk3
MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLywKLQkJCQk1MjRCRDQ3RTIzMjc3
RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCAqLywKLQkJCQk1MjRC
RDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8sCi0J
CQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNl
cy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0
dXJlUmVmZXJlbmNlcy5oICovLAotCQkJCTUyMkJBQjk2MjJFNkEzNjIwMEM1NENFOSAvKiBXSExT
TENvZGVMb2NhdGlvbi5oICovLAotCQkJCTFDODZDQTRCMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExT
TENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEg
LyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovLAotCQkJCTFDQjVGRTg4MjJERUJDOEIwMDk0
NDBFMiAvKiBXSExTTEVycm9yLmggKi8sCi0JCQkJMUNBMEMyRTQyMUVFRDEyQTAwQTExODYwIC8q
IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkU1MjFFRUQxMkEw
MEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8sCi0JCQkJMUM4NDBCOTky
MUVDNDAwODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCAqLywKLQkJ
CQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMu
aCAqLywKLQkJCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmNwcCAqLywKLQkJCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9t
YmllRmluZGVyLmggKi8sCi0JCQkJQzIzNEE5OUEyMUU5MEY1NjAwM0M5ODREIC8qIFdITFNMSW5m
ZXJUeXBlcy5jcHAgKi8sCi0JCQkJQzIzNEE5OUIyMUU5MEY1NzAwM0M5ODREIC8qIFdITFNMSW5m
ZXJUeXBlcy5oICovLAotCQkJCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJp
bnNpY3MuY3BwICovLAotCQkJCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJp
bnNpY3MuaCAqLywKLQkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5j
cHAgKi8sCi0JCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLywK
LQkJCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIu
Y3BwICovLAotCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5oICovLAotCQkJCUMyMzRBOThEMjFFODg4ODQwMDNDOTg0RCAvKiBXSExTTE5hbWVD
b250ZXh0LmNwcCAqLywKLQkJCQlDMjM0QTk4RTIxRTg4ODg1MDAzQzk4NEQgLyogV0hMU0xOYW1l
Q29udGV4dC5oICovLAotCQkJCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVS
ZXNvbHZlci5jcHAgKi8sCi0JCQkJQzIzNEE5OEMyMUU4ODgzRTAwM0M5ODREIC8qIFdITFNMTmFt
ZVJlc29sdmVyLmggKi8sCi0JCQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNFMTJGIC8qIFdITFNMTmFt
ZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2Vy
LmNwcCAqLywKLQkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuaCAq
LywKLQkJCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQYXJzaW5nTW9kZS5oICov
LAotCQkJCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBXSExTTFBpcGVsaW5lRGVzY3JpcHRv
ci5oICovLAotCQkJCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuY3Bw
ICovLAotCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuaCAqLywK
LQkJCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlm
ZXRpbWVzLmNwcCAqLywKLQkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVz
ZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5
IC8qIFdITFNMUHJvZ3JhbS5oICovLAotCQkJCTFDQUE4MkY2MjI0MkFFMDUwMEU4NEJCQiAvKiBX
SExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAotCQkJCTFDQUE4MkY3MjI0MkFFMDUwMEU4NEJC
QiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywKLQkJCQk1MjZCM0YwMTIyRkI3QkREMDA3
NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNw
cCAqLywKLQkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCi0JCQkJMUNBMEMyRTAyMUVFQjVGNTAw
QTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNBMEMyREUyMUVF
QjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOUFE
MjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCAqLywKLQkJ
CQlDMjM0QTlBQjIxRTkyQzE4MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5o
ICovLAotCQkJCUMyMzRBOTk5MjFFOTBGMjkwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuY3BwICovLAotCQkJCUMyMzRBOTk3MjFFOTBGMjgwMDNDOTg0RCAvKiBXSExTTFJlc29s
dmVPdmVybG9hZEltcGwuaCAqLywKLQkJCQlDMjM0QTk5RDIxRTkxMEJEMDAzQzk4NEQgLyogV0hM
U0xSZXNvbHZpbmdUeXBlLmggKi8sCi0JCQkJMUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdI
TFNMU2NvcGVkU2V0QWRkZXIuaCAqLywKLQkJCQlDMjRBNTdCMjIxRkI4RERBMDA0QzZERDEgLyog
V0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovLAotCQkJCUMyNEE1N0IzMjFGQjhEREEwMDRDNkRE
MSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5oICovLAotCQkJCUMyMUJGNzQ1MjFDRDk2OTgwMDIy
Nzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCi0JCQkJMUNEQUJENkIyMkM4NDc5
QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCAqLywKLQkJCQkx
QzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMu
Y3BwICovLAotCQkJCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGli
cmFyeVV0aWxpdGllcy5oICovLAotCQkJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQTgyMUYyQjY3MzAw
RjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8sCi0JCQkJQzIzNEE5
QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8s
Ci0JCQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5oICovLAotCQkJCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNp
emVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJQzIzNEE5QUMyMUU5MkMxOTAwM0M5
ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmggKi8sCi0JCQkJQzIz
NEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8sCi0JCQkJQzIzNEE5
ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovLAotCQkJKTsKLQkJCXBhdGgg
PSBXSExTTDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUNEMERCQjNFMTQy
Mjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0yODg4MSwxNzggKzI4MTkxLDYgQEAKIAkJCXBhdGggPSBpb3M7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIg
Lyogd2ViZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQlDMjEwRTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8sCi0JCQkJRDBCOEJCMDEyMUM0
NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaCAqLywKLQkJCQlEMEQ2
OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgKi8s
Ci0JCQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IuaCAqLywKLQkJCQlEMEQ2OUM5RDIyMkUwMEMyMDAzMjkyN0UgLyogR1BVQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBCNTZFQUIyMjRFQzYyNDAwNjEwNDlDIC8q
IEdQVUJsZW5kRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAxQjgxMTkyMjEzNUVCOTAwNjI3QjZD
IC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwMUI4MTFDMjIxMzYyNzMwMDYy
N0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCi0JCQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5
MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovLAotCQkJCUQwOTNEMjI1MjE3OTUxRDQwMDMy
OTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmggKi8sCi0JCQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5
MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaWRsICovLAotCQkJCUQwMUI4MTEyMjIxMjVBRkMwMDYy
N0I2QyAvKiBHUFVDb2xvci5pZGwgKi8sCi0JCQkJRDBBREIyOEMyMjM3ODQyRTAwQTIyOTM1IC8q
IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEI1NkVBRTIyNEVDRTIwMDA2
MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5pZGwgKi8sCi0JCQkJRDAzQzg0OUUyMUZGQ0YwMDAwMDIy
MjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8sCi0JCQkJRDAzQzg0QTIyMUZGRDcyMzAw
MDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDA5
QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmlkbCAqLywKLQkJCQlEMDI2
RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRsICovLAotCQkJCUQwOEFBMDJE
MjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAotCQkJCUQwQ0NBOTQ5MjIyOTlG
OTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAotCQkJCUQwQ0NBOTRBMjIyOTlGOTcwMDY5
NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCi0JCQkJRDA5QUZCMTcyMkQ2Njk0RTAwQzQ1MzhD
IC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovLAotCQkJCUQwMkMyNjkyMjE4MTQxNkQwMEQ4
MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovLAotCQkJCUQwQURCMjYzMjIz
MDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBERThG
QjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmggKi8sCi0JCQkJRDBERThGQjky
MjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmlkbCAqLywKLQkJCQlEMDhBQTAzMTIy
MEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8sCi0JCQkJRDAyNkY0OEIyMjBBNUIw
QjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVBQ0ZBRTIx
OUUzMEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8sCi0JCQkJRDAyNkY0ODMy
MjBBNDcyRjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5pZGwgKi8sCi0JCQkJRDA5QUMwMDYy
MzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcCAqLywKLQkJCQlE
MDlBQzAwNTIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCAqLywK
LQkJCQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsICovLAotCQkJCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJy
b3IuaWRsICovLAotCQkJCUQwRDg2NDk2MjFCQTE4RjQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRy
aWJ1dGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5ODIxQkExOUE3MDAzQzk4M0MgLyog
R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBEODY0OTQyMUJBMTczRDAw
M0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAwNDg3RUIy
Mjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRsICovLAotCQkJCUQwMDQ4N0VEMjI3
NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovLAotCQkJCUQwMDQ4N0VFMjI3NDI4
MTQwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuaCAqLywKLQkJCQlEMDBGNTk0NzIxNkVGRTU0MDAw
RDcxREIgLyogV2ViR1BVLmNwcCAqLywKLQkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyog
V2ViR1BVLmggKi8sCi0JCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwg
Ki8sCi0JCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3BwICov
LAotCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8sCi0J
CQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaWRsICovLAotCQkJ
CUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuY3BwICovLAotCQkJ
CUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuaCAqLywKLQkJCQlE
MEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLywKLQkJCQlE
MEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5oICovLAot
CQkJCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlk
bCAqLywKLQkJCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5jcHAgKi8sCi0JCQkJRDBCRTEwNTIyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEJFMTA1MzIxRTZBQTBEMDBFNDJBODkgLyog
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAwMzI4N0EyMUM4NjQ1QjAw
NjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8sCi0JCQkJRDAwMzI4NzkyMUM4
NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICovLAotCQkJCUQwMDMyODdC
MjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsICovLAotCQkJCUQw
RDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuY3BwICovLAotCQkJCUQwRDg2
NDhDMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaCAqLywKLQkJCQlEMEQ4NjQ4RTIx
QjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKLQkJCQlEMEJFMTA0QzIxRTY4
RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovLAotCQkJCUQwQkUxMDREMjFF
NjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAqLywKLQkJCQlEMDVERDZE
RDIyMzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCi0JCQkJRDA1
REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQlE
MDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCi0J
CQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCAq
LywKLQkJCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIu
aCAqLywKLQkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29k
ZXIuaWRsICovLAotCQkJCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMg
LyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLywKLQkJCQlEMDg5MDMzRDIyNDFBOTlG
MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLywKLQkJCQlEMDg5MDMzQzIy
NDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8sCi0JCQkJRDA4OTAz
M0UyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwgKi8sCi0JCQkJ
RDA4OTAzMzgyMjQwNjI4OTAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuY3BwICovLAotCQkJCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4OTAzMzUyMjQwNjAxRDAwRjNGNDQwIC8q
IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwMEY1OTUzMjE3
MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovLAotCQkJCUQwMEY1OTUyMjE3MDFE
OEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDBGNTk1NDIxNzAxRDhDMDAw
RDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKLQkJCQlEMDlBRkIwMTIyRDAyRTUzMDBDNDUz
OEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwICovLAotCQkJCUQwOUFGQUZGMjJEMDJF
NTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oICovLAotCQkJCUQwOUFGQjAz
MjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgKi8sCi0JCQkJ
RDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oICov
LAotCQkJCUQwOUFDMDBCMjMxNzM1QkUwMDE4Nzc2MiAvKiBXZWJHUFVEZXZpY2VFdmVudEhhbmRs
ZXIuaWRsICovLAotCQkJCTkxODZGM0I2MjMyOUZCNEUwMEFGRjg1NyAvKiBXZWJHUFVQaXBlbGlu
ZS5jcHAgKi8sCi0JCQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5l
LmggKi8sCi0JCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaCAqLywKLQkJCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCi0JCQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMy
Qjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJCQlEMDVBOTlFNDIxQzlCRjJD
MDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywKLQkJCQlEMDVBOTlFNjIxQzlC
RjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsICovLAotCQkJCUQwMDQ4N0Qy
MjI0NTdCRUEwMEVFRDdEOSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwICov
LAotCQkJCUQwNUE5OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuaCAqLywKLQkJCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVBQ0Y5MjIxOTQwQTVCMDAwRkE3
NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwRUFDRjkx
MjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovLAot
CQkJCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5pZGwgKi8sCi0JCQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQwIC8qIFdlYkdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVD
MURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovLAotCQkJCUQwQzQx
OUVDMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aWRsICovLAotCQkJCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAg
Ki8sCi0JCQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmggKi8sCi0J
CQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLywKLQkJCQlE
MDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
ICovLAotCQkJCUQwRUFDRjhDMjE5NDAzQzkwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwOEFBMDM2MjIwRDE5REEwMDU4QzUwMiAvKiBXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBFQUNGOEYyMTk0MEEyMjAwMEZBNzVDIC8q
IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y4RTIxOTQwQTIyMDAw
RkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y5MDIxOTQw
QTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsICovLAotCQkJCUQwQzQx
OUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8sCi0JCQkJ
RDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0J
CQkJRDBDNDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCAq
LywKLQkJCQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEM0MTlGMjIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBDNDE5RjMyMTgzRUZFQzAwOUVD
MURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBBREIy
NkQyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuY3BwICovLAotCQkJCUQwQURCMjZD
MjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmggKi8sCi0JCQkJRDBBREIyNkYyMjMw
QzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovLAotCQkJCUQwNjE1RkNEMjE3RkU1
QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAotCQkJCUQwNjE1RkNDMjE3
RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywKLQkJCQlEMDYxNUZDRTIx
N0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLywKLQkJCQlEMDYwRDg4
NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAot
CQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmlkbCAqLywKLQkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENo
YWluLmNwcCAqLywKLQkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENo
YWluLmggKi8sCi0JCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFp
bi5pZGwgKi8sCi0JCQkJRDAwNDg3RTUyMjZBNjM0MjAwRUVEN0Q5IC8qIFdlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVD
IC8qIFdlYkdQVVRleHR1cmUuY3BwICovLAotCQkJCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAv
KiBXZWJHUFVUZXh0dXJlLmggKi8sCi0JCQkJRDBFQUNGODYyMTkzQjAyRTAwMEZBNzVDIC8qIFdl
YkdQVVRleHR1cmUuaWRsICovLAotCQkJCUQwRUFDRjg4MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJH
UFVUZXh0dXJlVmlldy5jcHAgKi8sCi0JCQkJRDBFQUNGODcyMTkzRUU0RTAwMEZBNzVDIC8qIFdl
YkdQVVRleHR1cmVWaWV3LmggKi8sCi0JCQkJRDBFQUNGODkyMTkzRUU0RTAwMEZBNzVDIC8qIFdl
YkdQVVRleHR1cmVWaWV3LmlkbCAqLywKLQkJCQlEMDA0ODdGRDIyNzdBRjgxMDBFRUQ3RDkgLyog
V29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8sCi0JCQkJRDBDQUFENTMyMjc3QzJBNjAwODAxQ0RG
IC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8sCi0JCQkJRDAwNDg3RkUyMjc3QUY4MjAwRUVE
N0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovLAotCQkJKTsKLQkJCXBhdGggPSB3ZWJncHU7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlEMDg3Q0UzNzIxQUNBOTQyMDBC
REUxNzQgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0g
KAotCQkJCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3JN
ZXRhbC5tbSAqLywKLQkJCQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkgLyogR1BVQmluZEdyb3Vw
TGF5b3V0TWV0YWwubW0gKi8sCi0JCQkJRDA4NUU2NEEyMjM2REVBRTAwQzNFMUUyIC8qIEdQVUJp
bmRHcm91cE1ldGFsLm1tICovLAotCQkJCUQwRDg2NDkxMjFCNzYwQzQwMDNDOTgzQyAvKiBHUFVC
dWZmZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzODIxQUNBOTQyMDBCREUxNzQgLyogR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBH
UFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg5MDMzQjIyNDE3OUI1MDBG
M0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFM0MyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovLAotCQkJCTFDODZDQTRFMjJBQTIz
QzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAgKi8sCi0JCQkJ
MUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0
LmggKi8sCi0JCQkJQTM4QTg3QTMyNTM4QkVFNzAwMzdBNDcyIC8qIEdQVVBsYXRmb3JtVHlwZXNN
ZXRhbC5oICovLAotCQkJCUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTM5MjFBQ0E5NDIwMEJERTE3NCAv
KiBHUFVRdWV1ZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBH
UFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTNEMjFBQ0E5NDIwMEJE
RTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAotCQkJCUQwQURCMjZCMjIzMEFD
QzAwMEEyMjkzNSAvKiBHUFVTYW1wbGVyTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFNDAyMUFDQTk0
MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNFMjFB
Q0E5NDIwMEJERTE3NCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzRjIx
QUNBOTQyMDBCREUxNzQgLyogR1BVVGV4dHVyZU1ldGFsLm1tICovLAotCQkJCUQwNkVGNTUzMjIw
QkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBj
b2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTMyODc4LDE4ICszMjAxNiw2IEBACiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlD
QTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYw
NjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzExNTE4RkMx
RTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVE
ZXZpY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEzMjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNDIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUXVldWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBl
bGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTcyMUE0QzM2NTAwRUIxOTlEIC8qIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTgy
MUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzEyRkY5MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFBMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTd2FwQ2hh
aW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFCMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVU
ZXh0dXJlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQzIxQTRDMzY1MDBFQjE5OUQgLyog
R1BVVGV4dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0M1RjUwREE1NkI5MjAw
MjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NDBEMDBCRjIy
MDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4
MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNjA2Nyw3ICszNTE5Myw2IEBACiAJCQkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Rjk5NUEyNjFBNzA3OEIx
MDBBNzM1RjQgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxODQzNkRFMjFCOURBQUYwMEVEMzgzRSAvKiBXZWJHUFVMYXll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjcxRkFBNDQ2MjAwMzdEMUU2IC8qIFdlYkhl
YXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8q
IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzAxODY0
Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNjE0MSw5ICszNTI2Niw2IEBACiAJCQkJMkVCQkMzRDgxQjY1OTg4MzAwRjUyNTNEIC8q
IFdoZWVsRXZlbnREZWx0YUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5QjVEOEYxQjY2
QTk0RTAwOEM2QTI0IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0TW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTE5NTZGMjUyMzMxQUQ1MzAwNTdFOUQyIC8qIFdITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1NkYyNDIzMzFBRDIxMDA1
N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1NkYyMzIzMzFB
Q0YyMDA1N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4
MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQx
MURDQjExNjRDMzlBODAwRDQ5QkMxIC8qIFdpZHRoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aAppbmRleCAwYjVmOGVlMjNlOTNiODRmMWFhNjczZTY5NDgyZWUxZjY3YzdmMDQ2Li5jOGRiNjg3
OTlmOTYyMDAxNGMyYjQ0NTcyZGRkMmE1MzI3Mzg5N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0xMDQsMzQgKzEwNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHYW1lcGFkKSBcCiAgICAgbWFjcm8oR2Ft
ZXBhZEJ1dHRvbikgXAogICAgIG1hY3JvKEdhbWVwYWRFdmVudCkgXAotICAgIG1hY3JvKEdQVSkg
XAotICAgIG1hY3JvKEdQVUFkYXB0ZXIpIFwKLSAgICBtYWNybyhHUFVCaW5kR3JvdXApIFwKLSAg
ICBtYWNybyhHUFVCaW5kR3JvdXBMYXlvdXQpIFwKLSAgICBtYWNybyhHUFVCdWZmZXIpIFwKLSAg
ICBtYWNybyhHUFVCdWZmZXJVc2FnZSkgXAotICAgIG1hY3JvKEdQVUNhbnZhc0NvbnRleHQpIFwK
LSAgICBtYWNybyhHUFVDb2xvcldyaXRlKSBcCi0gICAgbWFjcm8oR1BVQ29tbWFuZEJ1ZmZlcikg
XAotICAgIG1hY3JvKEdQVUNvbW1hbmRFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBpcGVsaW5lKSBcCi0gICAgbWFjcm8o
R1BVRGV2aWNlKSBcCi0gICAgbWFjcm8oR1BVT3V0T2ZNZW1vcnlFcnJvcikgXAotICAgIG1hY3Jv
KEdQVVBpcGVsaW5lTGF5b3V0KSBcCi0gICAgbWFjcm8oR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIpIFwKLSAgICBtYWNybyhHUFVRdWV1ZSkgXAotICAgIG1hY3JvKEdQVVJlbmRlclBhc3NFbmNv
ZGVyKSBcCi0gICAgbWFjcm8oR1BVUmVuZGVyUGlwZWxpbmUpIFwKLSAgICBtYWNybyhHUFVTYW1w
bGVyKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxlKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVy
U3RhZ2UpIFwKLSAgICBtYWNybyhHUFVTd2FwQ2hhaW4pIFwKLSAgICBtYWNybyhHUFVUZXh0dXJl
KSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdlKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVZp
ZXcpIFwKLSAgICBtYWNybyhHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCkgXAotICAgIG1hY3JvKEdQ
VVZhbGlkYXRpb25FcnJvcikgXAogICAgIG1hY3JvKEhpZ2hsaWdodFJlZ2lzdGVyKSBcCiAgICAg
bWFjcm8oSGlnaGxpZ2h0KSBcCiAgICAgbWFjcm8oSFRNTEF0dGFjaG1lbnRFbGVtZW50KSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzNGJlNWM1NWYzMTZmOTY1YTU3YzBmZWU0OGFlZjVl
OGJjNDYzZGI4Li5kOTYxYzVmOTQ3NWY1MGRhMjI2OWQ0ZTJjNTllMWEzNGE2YWVjMTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMzNiw5ICszMzYsNiBAQAogI2lmIEVOQUJMRShXRUJH
TDIpCiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCi0jZW5kaWYKIAogI2lm
IEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1l
bnQuaCIKQEAgLTYzOTQsMTAgKzYzOTEsNiBAQCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZQogICAg
IGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkpCiAgICAgICAgIHJldHVy
biBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRv
d25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0PigqY29udGV4dCkp
Ci0gICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRl
eHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpjb250ZXh0KSB9IH07Ci0jZW5kaWYK
IAogICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRD4geyAmZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqY29udGV4dCkg
fSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjOThlMjA1ZmFmNzRlNDhhNmRkZmI5ZWZm
ZWRiZTE4MjdmZWE5ZjM4Li5jNGRmMDM3YjM5NDM5ZDkxNjdjYTdmYTNkYzA4YjhjNWJkMWVmNmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzE4LDkgKzMxOCw2IEBAIHVzaW5nIFJlbmRlcmlu
Z0NvbnRleHQgPSBWYXJpYW50PAogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBSZWZQ
dHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiwKICNlbmRpZgogICAgIFJlZlB0cjxJbWFnZUJp
dG1hcFJlbmRlcmluZ0NvbnRleHQ+LAogICAgIFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3NTc0MTQwODdhNmJjYTYzNWEzZmNjOTVl
ZmZmNmUyNGRlM2RmMjVlLi42ODA0YjBmNTU2Y2U2NDAwNTQ0NDIxZmVlNmFmYzc0MmVjZDFmZjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0LDkgKzI0LDYgQEAgdHlwZWRlZiAoCiAj
ZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYmIEVOQUJMRV9XRUJHTDIKICAgICBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9XRUJH
UFUpICYmIEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXNDb250ZXh0IG9yCiAjZW5kaWYKICAg
ICBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCAx
NjAxMWFmNmVmMjMwNDc2OTUyNTgxMThjNjQ5MmIwYmVhMDlkYTJiLi4yYmNkNzNjM2I4MzgwNmJk
MWI3ZTEwOWU2ZmM4OTY3YjFiY2Y5OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAt
OTAsNyArOTAsNiBAQCBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50IGNvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTQogTWVkaWFFbmNyeXB0ZWRFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEK
IE1lZGlhS2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogUG9pbnRl
ckV2ZW50Ci1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBjb25kaXRpb25hbD1XRUJHUFUKIEVudGVy
UGljdHVyZUluUGljdHVyZUV2ZW50IGNvbmRpdGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEkK
IFhSSW5wdXRTb3VyY2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgogWFJJbnB1dFNvdXJjZXNDaGFu
Z2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KaW5kZXggZjYwYzg5MjdhNTZiYzM1OGQxMDdiOWRiOGVjZTlhNGMzNzEyMzZjMi4u
MWQ4YmE2NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNkMjUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Niw3ICs1Niw2IEBAIFRleHRUcmFja0xp
c3QgY29uZGl0aW9uYWw9VklERU8KIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBW
aXN1YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCi1XZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VC
R1BVCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9N
RURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKaW5kZXggNTAxM2NlZGEwMzU3YWMxYWQyMGU1NTZmZjI3NzZhMzEzY2M1ZWUzNi4u
NzRmOGEyZWJkNzAyNTRkYjk4YzcyZWFjZTNmMDc2YTYxMzI5NjcxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTgxLDEwICs4MSw2IEBACiAjaW5jbHVk
ZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdF
QlhSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAt
MjcwLDE0ICsyNjYsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OgogICAgICAgICB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmlzV2ViR1BV
KCkpIHsKLSAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51
bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRl
eHQ+KCptX2NvbnRleHQpIH0gfTsKLSAgICAgICAgfQotI2VuZGlmCi0KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQpAQCAtMzIzLDE1ICszMTEsNiBAQCBFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dChKU0M6OgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LSAgICBpZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsKLSAgICAgICAgYXV0byBjb250ZXh0
ID0gY3JlYXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwotICAgICAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0
ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7IGNvbnRleHQgfSB9OwotICAgIH0KLSNl
bmRpZgotCiAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6
Om51bGxvcHQgfTsKIH0KIApAQCAtMzQ4LDExICszMjcsNiBAQCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCiAg
ICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR0woSFRNTENhbnZhc0VsZW1lbnQ6OnRvV2ViR0xW
ZXJzaW9uKHR5cGUpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoSFRN
TENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIGdldENv
bnRleHRXZWJHUFUodHlwZSk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC00OTUsNDcgKzQ2OSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIEhUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUsCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29sIEhUTUxDYW52YXNFbGVt
ZW50Ojppc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQotewotICAgIHJldHVybiB0eXBl
ID09ICJncHUiOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Y3Jl
YXRlQ29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgQVNTRVJUX1VOVVNF
RCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKLSAgICBBU1NF
UlQoIW1fY29udGV4dCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJHUFVF
bmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgbV9jb250ZXh0ID0gR1BV
Q2FudmFzQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAobV9jb250ZXh0KSB7Ci0gICAg
ICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxh
eWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgotICAgICAgICBpbnZhbGlkYXRlU3R5bGVB
bmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQ
VUNhbnZhc0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwotfQotCi1HUFVDYW52YXNDb250ZXh0
KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUp
Ci17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVU
eXBlKHR5cGUpKTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLndlYkdQVUVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAobV9jb250ZXh0ICYmICFt
X2NvbnRleHQtPmlzV2ViR1BVKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYg
KCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBjcmVhdGVDb250ZXh0V2ViR1BVKHR5cGUpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0Kj4obV9jb250ZXh0LmdldCgp
KTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIGJvb2wgSFRNTENhbnZhc0VsZW1l
bnQ6OmlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICByZXR1
cm4gdHlwZSA9PSAiYml0bWFwcmVuZGVyZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oCmluZGV4IGY2NzhmMGVkYTNkOTI1NDZiNjUxMWZjYzA4MjlkM2FkYjg4NjE5M2Iu
LjBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFlODk3OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTg5LDEyICs4OSw2IEBAIHB1YmxpYzoKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9u
IHR5cGUsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsgfSk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShXRUJHUFUpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYp
OwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGNyZWF0ZUNvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5n
Jik7Ci0gICAgR1BVQ2FudmFzQ29udGV4dCogZ2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcm
KTsKLSNlbmRpZgotCiAgICAgc3RhdGljIGJvb2wgaXNCaXRtYXBSZW5kZXJlclR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBjcmVhdGVDb250ZXh0
Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
U2V0dGluZ3MmJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0
Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
U2V0dGluZ3MmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCmlu
ZGV4IGM2ZjFkMGZjNDBkZWUxNTQ3Y2ZmZDdjN2NjYzQ1ZTdhY2I3MmEwNjYuLmE2Nzc5ZmRhOTk1
N2RlYmYwOTIzYzcyNWFkMjNmZWIxMGM2ODQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCkBAIC0zMCw5ICszMCw2IEBAIHR5cGVkZWYgKAogI2VuZGlmCiAj
aWYgZGVmaW5lZChFTkFCTEVfV0VCR0wyKSAmJiBFTkFCTEVfV0VCR0wyCiAgICAgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dCBvcgotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBF
TkFCTEVfV0VCR1BVCi0gICAgR1BVQ2FudmFzQ29udGV4dCBvcgogI2VuZGlmCiAgICAgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0IG9yIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkg
UmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5MmMwM2MxOWU0ZjcxNjRlOGFkODdhODllYmQ2
ZDUwNDNmNWI1Y2IyLi43MTliNjMxZTAyNTI2ODdkMDM0YzZlNDFlMWU3ZmM5MjdkYjFjMDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oCkBAIC02NCw5ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJH
TDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1dlYkdMKCkgY29uc3QgeyByZXR1
cm4gaXNXZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICB2
aXJ0dWFsIGJvb2wgaXNXZWJHUFUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCiAg
ICAgdmlydHVhbCBib29sIGlzR1BVQmFzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGM1
ODc0YzcwODc0MTc3OTAyOTQ1OGZiOTJjZWNhNmQ0NmJmNmNhMGYuLjYxZjc2YzFjZDU4OGY2ODcx
ZTYwYjM1ZWViMGJkNWVhZDVlYTVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1
ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAt
NjIsNyArNjEsNiBAQAogI2luY2x1ZGUgIkpTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmgiCiAjaW5j
bHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIk9m
ZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgogI2luY2x1ZGUgIlBhdHRlcm4u
aCIKQEAgLTg1LDcgKzgzLDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgi
CiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRl
eEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rv
cnkuaD4KQEAgLTEwMSw1MyArOTgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLXN0YXRpYyBIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZShDYW52YXNSZW5kZXJpbmdD
b250ZXh0JiBjb250ZXh0LCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoaXM8R1BV
Q2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsKLSAgICAgICAgYXV0byYgY29udGV4dEdQVSA9IGRv
d25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpOwotICAgICAgICBpZiAoYXV0byogd2Vi
R1BVU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8qIGdwdVN3YXBDaGFpbiA9IHdlYkdQVVN3YXBDaGFpbi0+c3dhcENoYWluKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZ3B1U3dhcENoYWluID09IGRldmljZS5kZXZpY2UoKS5zd2FwQ2hh
aW4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNv
bnRleHRHUFUuY2FudmFzQmFzZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAm
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2FudmFzQmFzZSgpKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogUmVmPEluc3BlY3RvckNhbnZhcz4gSW5zcGVjdG9y
Q2FudmFzOjpjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoY29udGV4dCkpOwogfQogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhczo6Y3Jl
YXRlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3RvckNhbnZhcyhkZXZpY2UpKTsKLX0KLSNlbmRpZgotCiBJbnNwZWN0b3JDYW52YXM6Oklu
c3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIDogbV9p
ZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAg
ICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNl
YCwgbm90IHRoZSA8Y2FudmFzPi4KLSAgICBBU1NFUlQoIWlzPEdQVUNhbnZhc0NvbnRleHQ+KGNv
bnRleHQpKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvckNhbnZh
czo6SW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNlKQotICAgIDogbV9pZGVudGlm
aWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQot
ICAgICwgbV9jb250ZXh0KGRldmljZSkKLXsKIH0KLSNlbmRpZgogCiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQoKSBjb25zdAogewpAQCAtMTY1
LDE5ICsxMjUsNiBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNF
bGVtZW50KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52
YXNFbGVtZW50Pihjb250ZXh0LmNhbnZhc0Jhc2UoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSAtPiBIVE1MQ2Fu
dmFzRWxlbWVudCogewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5n
ZXQoKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgICAgICAgICAg
Zm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0Vs
ZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250
ZXh0LCBkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1l
bnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE4NiwyMiArMTMzLDYgQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNh
bnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotV2ViR1BVRGV2aWNlKiBJbnNwZWN0b3JDYW52YXM6OmRldmljZUNv
bnRleHQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBkZXZpY2VXcmFwcGVyID0gV1RGOjpnZXRf
aWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+PihtX2NvbnRleHQpKQotICAg
ICAgICByZXR1cm4gJmRldmljZVdyYXBwZXItPmdldCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1ib29sIEluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZh
c1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIGRldmlj
ZSA9IGRldmljZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGNhbnZhc0lmQ29udGV4dE1hdGNo
ZXNEZXZpY2UoY29udGV4dCwgKmRldmljZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlm
Ci0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZXh0
LApAQCAtMjA5LDEyICsxNDAsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJbnNwZWN0b3JD
YW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgICAgICAgICAgYXV0byYg
Y29udGV4dCA9IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgfSwKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJH
UFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRl
dmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gZGV2aWNlLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRl
KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjQ1LDExICsxNzAsNiBAQCBKU0M6OkpTVmFsdWUgSW5zcGVjdG9yQ2Fu
dmFzOjpyZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjKSBjb25zdAogI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKCk7CiAgICAgICAgIH0sCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQ
VURldmljZT4gZGV2aWNlV3JhcHBlcikgewotICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBkZXZpY2VXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgfSwKLSNlbmRpZgog
ICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUoKTsKQEAgLTI2NCwyMSArMTg0LDYg
QEAgSGFzaFNldDxFbGVtZW50Kj4gSW5zcGVjdG9yQ2FudmFzOjpjbGllbnROb2RlcygpIGNvbnN0
CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdyYXBwZXIuZ2V0KCk7CiAgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCkuY3NzQ2FudmFzQ2xpZW50cygpOwog
ICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAgIGF1
dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0KLSAgICAgICAgICAgIEhhc2hTZXQ8
RWxlbWVudCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNM
b2NrKCkgfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZhc0lmQ29udGV4dE1hdGNoZXNE
ZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjYW52YXNFbGVtZW50Q2xpZW50cy5hZGQoY2FudmFzRWxlbWVudCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1l
bnRDbGllbnRzOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8RWxlbWVudCo+KCk7CkBAIC0zMTcsNyArMjIyLDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52
YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSgpCiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29u
dGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyBy
ZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGNvbnRleHQtPnNldEhhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQpAQCAtODQ0LDcgKzc0OCw2IEBAIHZv
aWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvCiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4
dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNv
cmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGlmIChpczxJbWFnZUJpdG1hcFJlbmRlcmlu
Z0NvbnRleHQ+KGNvbnRleHQpICYmIHNob3VsZFNuYXBzaG90Qml0bWFwUmVuZGVyZXJBY3Rpb24o
bmFtZSkpCiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVlOwpAQCAtOTI4LDExICs4MzEs
NiBAQCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
T2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFtd
IChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsKLSAgICAgICAgICAgIHJl
dHVybiBQcm90b2NvbDo6Q2FudmFzOjpDb250ZXh0VHlwZTo6V2ViR1BVOwotICAgICAgICB9LAot
I2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk5NiwyOCAr
ODk0LDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpi
dWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNlbmRpZgogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgW10g
KHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSAtPiBD
b250ZXh0QXR0cmlidXRlc1R5cGUgewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNl
V3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBvcHRpb25zID0gZGV2
aWNlLmFkYXB0ZXIoKS5vcHRpb25zKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbnRleHRB
dHRyaWJ1dGVzUGF5bG9hZCA9IFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRBdHRyaWJ1dGVzOjpj
cmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAg
IGlmIChjb25zdCBhdXRvJiBwb3dlclByZWZlcmVuY2UgPSBvcHRpb25zLT5wb3dlclByZWZlcmVu
Y2UpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwb3dlclByZWZlcmVuY2UudmFsdWUo
KSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2VyUHJlZmVyZW5jZTo6TG93UG93
ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNl
dFBvd2VyUHJlZmVyZW5jZSgibG93LXBvd2VyIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2VyUHJlZmVyZW5jZTo6SGln
aFBlcmZvcm1hbmNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dEF0dHJpYnV0ZXNQ
YXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImhpZ2gtcGVyZm9ybWFuY2UiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnRleHRBdHRyaWJ1dGVz
UGF5bG9hZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0
OSw3ICs5MjUsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6UmVjb3JkaW5nPiBJbnNwZWN0
b3JDYW52YXM6OnJlbGVhc2VPYmplY3RGb3JSZWNvcmRpbmcoKQogCiAgICAgYXV0byogY29udGV4
dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3Vw
cG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICBQcm90b2NvbDo6
UmVjb3JkaW5nOjpUeXBlIHR5cGU7CiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RD4oY29udGV4dCkpCkBAIC0xMjgxLDcgKzExNTYsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGlu
Zzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKIHsK
ICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0
KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UK
IAogICAgIGF1dG8gaW5pdGlhbFN0YXRlUGF5bG9hZCA9IFByb3RvY29sOjpSZWNvcmRpbmc6Oklu
aXRpYWxTdGF0ZTo6Y3JlYXRlKCkucmVsZWFzZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggOGE0N2RlYzI1YWQ2Yzg4MzEzYzdkNGFkNmYyNTA5
NjFjMDA2MmVmZi4uNmE5OWVjZmY0N2I1ODBlYzRjNjk2MTAxMGZkNjUwMWZkYTM1MzY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaApAQCAtMzYsMTAgKzM2
LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CkBA
IC02MCwyMCArNTYsMTIgQEAgY2xhc3MgVHlwZWRPTUNTU0ltYWdlVmFsdWU7CiBjbGFzcyBJbnNw
ZWN0b3JDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JDYW52YXM+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZhcz4gY3JlYXRlKENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5z
cGVjdG9yQ2FudmFzPiBjcmVhdGUoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYKIAogICAgIGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzQ29udGV4dCgpIGNvbnN0OwogICAgIEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgIFdlYkdQVURldmljZSogZGV2aWNlQ29udGV4dCgpIGNvbnN0OwotICAgIGJvb2wg
aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsK
LSNlbmRpZgotCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OwogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc29sdmVDb250ZXh0KEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTExNSw5ICsxMDMsNiBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBF
TkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyhXZWJHUFVEZXZpY2UmKTsKLSNlbmRp
ZgogCiAgICAgdm9pZCBhcHBlbmRBY3Rpb25TbmFwc2hvdElmTmVlZGVkKCk7CiAKQEAgLTE1NSw5
ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgVmFyaWFudDwKICAgICAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiwKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4sCi0jZW5kaWYKICAg
ICAgICAgTW9ub3N0YXRlCiAgICAgPiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzEyMTUy
MzA3MWEwMjY4ODhjYmQ2MDgwMzFhZDE1ZGM4NWFmMTcxOS4uZmUyMDZhZWEzNWU2NzkzM2UyMDE5
ZmM1YWYxZTkzYWZkYTBlMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNs
dWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVURl
dmljZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgiCkBAIC04MCwxMCArNzksNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIEVOQUJMRShX
RUJHUFUpCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtMTEyMiw0MyArMTEx
Nyw2IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hs
aWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShX
RUJHUFUpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2
aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVE
ZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+ZGlk
Q3JlYXRlV2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGF1
dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQo
KSkKLSAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKGRldmljZSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENo
YWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBHUFVDYW52
YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsK
LSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRD
YW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+d2lsbENvbmZpZ3VyZVN3YXBDaGFp
bihjb250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2aWNlLCBXZWJHUFVQaXBlbGlu
ZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdlbnQtPmRpZENy
ZWF0ZVdlYkdQVVBpcGVsaW5lKGRldmljZSwgcGlwZWxpbmUpOwotfQotCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5l
KQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT53aWxsRGVzdHJveVdlYkdQ
VVBpcGVsaW5lKHBpcGVsaW5lKTsKLX0KLQotSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYgZGV2aWNl
KQotewotICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmljZS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwotfQotI2VuZGlmCi0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBD
b21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBpZiAoYXV0byogYW5p
bWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nQW5pbWF0aW9uQWdlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCA3ZDVlN2Q1N2JmOTExZmRkZjkwZWQ0MDBhMjI1YWZhMDgzZTZjODcxLi4z
MWYwNWM1MGY4MDVkYjU3OWI4YzkzMGJjOTBiOWY2MWE5MmZhYzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC01OSwx
MSArNTksNiBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCi0j
aW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwpAQCAtMTA0
LDExICs5OSw2IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgV2Vi
R0xQcm9ncmFtOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotY2xhc3MgV2ViR1BVRGV2
aWNlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotI2VuZGlmCi0KIGVudW0gY2xhc3MgU3RvcmFn
ZVR5cGUgOiB1aW50OF90OwogCiBzdHJ1Y3QgQ29tcHV0ZWRFZmZlY3RUaW1pbmc7CkBAIC0zMDMs
MTMgKzI5Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2Fi
bGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICAgICBzdGF0
aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmLCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3Rh
dGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHN0YXRp
YyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYsIFdlYkdQVVN3
YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQ
VURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lX
ZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21w
dXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9u
TmFtZShXZWJBbmltYXRpb24mKTsKQEAgLTUxMywxNCArNDk2LDYgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGln
aHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJHUFVEZXZpY2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9p
ZCB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdQ
VURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBHUFVDYW52YXNDb250ZXh0JiwgV2ViR1BVU3dhcENoYWluJik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyB2
b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBX
ZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCB3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQm
LCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2Vi
QW5pbWF0aW9uJik7CkBAIC0xNDc1LDQzICsxNDUwLDYgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5n
Q28KIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYgZGV2
aWNlKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlm
IChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmljZSkpCi0gICAgICAgIGRp
ZENyZWF0ZVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNlKTsKLX0KLQotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZShXZWJH
UFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9p
ZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2Up
KQotICAgICAgICB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNlKTsK
LX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJl
U3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUsIFdlYkdQVVN3YXBDaGFpbiYg
bmV3U3dhcENoYWluKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHRHUFUu
Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgIHdpbGxDb25m
aWd1cmVTd2FwQ2hhaW5JbXBsKCphZ2VudHMsIGNvbnRleHRHUFUsIG5ld1N3YXBDaGFpbik7Ci19
Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BV
UGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkK
LXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0
byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2UpKQotICAgICAgICBkaWRDcmVh
dGVXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgZGV2aWNlLCBwaXBlbGluZSk7Ci19Ci0KLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBl
bGluZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHMocGlwZWxpbmUuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgd2lsbERl
c3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgcGlwZWxpbmUpOwotfQotI2VuZGlmCi0K
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVF
ZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVm
ZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA1NGVkODQwYmUwMTgyN2QxNzJhNGY4ZjliMzFiOTQ0
MDY2NWE3NzcwLi5hMzBlMjE2NDNhMTU3YTgyYzVkZDdlNWI0ZDg1ODQwYjc0ZmE1MDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0u
Y3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbS5oIgogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VC
R1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhcy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtNDIsMTUg
KzQyLDYgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIldITFNMUHJl
cGFyZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldl
YkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNs
dWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02MiwxMyArNTMsNiBAQCBSZWY8SW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmPElu
c3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmNyZWF0ZShXZWJH
UFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclNoYWRlclByb2dyYW0ocGlwZWxp
bmUsIGluc3BlY3RvckNhbnZhcykpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdMUHJvZ3Jh
bSYgcHJvZ3JhbSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiAgICAgOiBtX2lk
ZW50aWZpZXIoInByb2dyYW06IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpKQpAQCAtNzksMTYgKzYzLDYgQEAgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3RvckMKIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvclNoYWRlclByb2dyYW06Okluc3BlY3Rv
clNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0b3JDYW52YXMm
IGluc3BlY3RvckNhbnZhcykKLSAgICA6IG1faWRlbnRpZmllcigicGlwZWxpbmU6IiArIElkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwgbV9jYW52YXMoaW5zcGVj
dG9yQ2FudmFzKQotICAgICwgbV9wcm9ncmFtKHBpcGVsaW5lKQotewotICAgIEFTU0VSVChtX2Nh
bnZhcy5kZXZpY2VDb250ZXh0KCkpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBX
ZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06OnByb2dyYW0oKSBjb25zdAogewpA
QCAtOTgsMTUgKzcyLDYgQEAgV2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpw
cm9ncmFtKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVdlYkdQVVBp
cGVsaW5lKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwaXBlbGluZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKGF1dG8qIHBpcGVsaW5lV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8V2ViR1BVUGlwZWxpbmU+PihtX3Byb2dyYW0pKQotICAgICAgICByZXR1cm4gJnBpcGVs
aW5lV3JhcHBlci0+Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShXRUJHTCkKIHN0YXRpYyBXZWJHTFNoYWRlciogc2hhZGVyRm9yVHlwZShXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBz
aGFkZXJUeXBlKQogewpAQCAtMTI3LDMxICs5Miw2IEBAIHN0YXRpYyBXZWJHTFNoYWRlciogc2hh
ZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNh
CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1zdGF0aWMgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gc2hhZGVyRm9yVHlwZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQotewotICAgIHN3
aXRjaCAoc2hhZGVyVHlwZSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjpTaGFkZXJUeXBlOjpDb21wdXRlOgotICAgICAgICBpZiAoaXM8V2ViR1BVQ29tcHV0ZVBpcGVs
aW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVQ29tcHV0
ZVBpcGVsaW5lPihwaXBlbGluZSkuY29tcHV0ZVNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBl
OjpGcmFnbWVudDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGlu
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVUmVuZGVyUGlwZWxpbmU+KHBp
cGVsaW5lKS5mcmFnbWVudFNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpWZXJ0ZXg6Ci0g
ICAgICAgIGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkudmVydGV4
U2hhZGVyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotI2VuZGlmCi0KIFN0cmluZyBJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcHJvZ3JhbSwKQEAgLTE2MiwxNyArMTAyLDkgQEAgU3RyaW5nIEluc3BlY3Rv
clNoYWRlclByb2dyYW06OnJlcXVlc3RTaGFkZXJTb3VyY2UoSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q2FudmFzOjoKICAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVyLT5nZXRTb3VyY2UoKTsKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBl
bGluZT4gcGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAgICAgICAgICBhdXRvJiBwaXBlbGluZSA9IHBp
cGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHNoYWRlciA9IHNoYWRl
ckZvclR5cGUocGlwZWxpbmUsIHNoYWRlclR5cGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBz
aGFkZXItPnNvdXJjZSgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9
LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSB7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8
fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0y
MDEsMjQgKzEzMyw5IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6dXBkYXRlU2hhZGVy
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUo
V0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxp
bmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAgICAgICAgICAgYXV0byYgcGlwZWxpbmUgPSBwaXBl
bGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoYXV0byogZGV2aWNlID0gbV9jYW52
YXMuZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBpcGVsaW5lLmNsb25l
U2hhZGVyTW9kdWxlcygqZGV2aWNlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBz
aGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJUeXBlKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc2hhZGVyLT51cGRhdGUoKmRldmljZSwgc291cmNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwaXBlbGluZS5yZWNvbXBpbGUoKmRldmljZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25vc3RhdGUpIHsKLSNpZiBF
TkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIyOCwzMSArMTQ1LDE1IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6
dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwCiAKIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclByb2dyYW0+IEluc3BlY3RvclNo
YWRlclByb2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSgpCiB7Ci0gICAgYm9vbCBz
aGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IGZhbHNlOwotCiAgICAgdXNpbmcgUHJvZ3JhbVR5
cGVUeXBlID0gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dy
YW1UeXBlPjsKICAgICBhdXRvIHByb2dyYW1UeXBlID0gV1RGOjpzd2l0Y2hPbihtX3Byb2dyYW0s
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
V2ViR0xQcm9ncmFtPikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKICAgICAgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpSZW5kZXI7CiAgICAgICAg
IH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgLT4gUHJvZ3JhbVR5
cGVUeXBlIHsKLSAgICAgICAgICAgIGF1dG8mIHBpcGVsaW5lID0gcGlwZWxpbmVXcmFwcGVyLmdl
dCgpOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUp
KQotICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlBy
b2dyYW1UeXBlOjpDb21wdXRlOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBpcGVs
aW5lPihwaXBlbGluZSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJQaXBlbGluZSA9
IGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlbmRlclBpcGVsaW5lLnZlcnRleFNoYWRlcigpID09IHJlbmRlclBpcGVsaW5lLmZy
YWdtZW50U2hhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAgIHNoYXJlc1ZlcnRleEZyYWdtZW50
U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVyOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwKICNlbmRpZgogICAgICAgICBbJl0g
KE1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
NjgsMTEgKzE2OSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclBy
b2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqCiAgICAgICAgIC5zZXRQcm9n
cmFtVHlwZShwcm9ncmFtVHlwZS52YWx1ZSgpKQogICAgICAgICAuc2V0Q2FudmFzSWQobV9jYW52
YXMuaWRlbnRpZmllcigpKQogICAgICAgICAucmVsZWFzZSgpOwotICAgIGlmIChzaGFyZXNWZXJ0
ZXhGcmFnbWVudFNoYWRlcikKLSAgICAgICAgcGF5bG9hZC0+c2V0U2hhcmVzVmVydGV4RnJhZ21l
bnRTaGFkZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHBheWxvYWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclNoYWRlclByb2dyYW0uaAppbmRleCBjY2M3M2NlZjM3NDY3MDY3MGQ1OTZhOTNiMzJm
ZTA5YTU1ZDQzNWJiLi5jOTJkZWJiNzdjYzQ1MThjNDE1YmQzYWZiMzAzYjJmMzcxNGMyOGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFt
LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoV0VCR0wp
IHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTQxLDE4ICs0MSwxMSBAQCBjbGFzcyBXZWJHTFByb2dyYW07CiBjbGFzcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotY2xh
c3MgV2ViR1BVUGlwZWxpbmU7Ci0jZW5kaWYKLQogY2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclNoYWRlclByb2dyYW0+IHsKIHB1
YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtPiBjcmVhdGUoV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bT4gY3JlYXRlKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2FudmFzJik7Ci0jZW5kaWYKIAog
ICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogICAgIEluc3BlY3RvckNhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9jYW52
YXM7IH0KQEAgLTYwLDkgKzUzLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICBX
ZWJHTFByb2dyYW0qIHByb2dyYW0oKSBjb25zdDsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUp
Ci0gICAgV2ViR1BVUGlwZWxpbmUqIHBpcGVsaW5lKCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgIFN0
cmluZyByZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hh
ZGVyVHlwZSk7CiAgICAgYm9vbCB1cGRhdGVTaGFkZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2Fu
dmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CkBAIC03OSw5ICs2OSw2IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0o
V2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmLCBJbnNwZWN0
b3JDYW52YXMmKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBJbnNw
ZWN0b3JDYW52YXMmIG1fY2FudmFzOwpAQCAtODksOSArNzYsNiBAQCBwcml2YXRlOgogICAgIFZh
cmlhbnQ8CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFdlYkdMUHJvZ3JhbT4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiwKICNlbmRpZgogICAgICAgICBXVEY6
Ok1vbm9zdGF0ZQogICAgID4gbV9wcm9ncmFtOwpAQCAtMTAyLDQgKzg2LDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBF
TkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5k
ZXggYTQwMmMzYjk4NDAzMGNmMGY4ZGQ2NWI2ZTEzYjkwOGZiZmJmOTZhMy4uNTlmNGQzOWI1YTcx
OWUzZTE3ZTU3MzhmMmM2N2VmYzM4ZWFlNDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTM2LDcg
KzM2LDYgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjgsMTEgKzY3LDYgQEAKICNpbmNsdWRl
ICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgot
I2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fy
cmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CkBAIC0xMDAs
OSArOTQsOSBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNv
bnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2FudmFzRGVzdHJveWVkVGltZXIoKnRoaXMsICZJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCkKLSNpZiBFTkFC
TEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICwgbV9w
cm9ncmFtRGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvZ3Jh
bURlc3Ryb3llZFRpbWVyRmlyZWQpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIHsKIH0KIApAQCAtMTQxLDI3ICsxMzUs
MTIgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmVuYWJsZSgpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byogY29udGV4dCA6
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7Ci0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQiIGZvciBXZWJHUFUgaXMgdGhl
IGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgotICAgICAgICAgICAgaWYgKGlzPEdQ
VUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAgICAgICAgIGlmIChleGlzdHNJbkN1cnJlbnRQ
YWdlKGNvbnRleHQtPmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogICAg
ICAgICAgICAgICAgIGJpbmRDYW52YXMoKmNvbnRleHQsIGZhbHNlKTsKICAgICAgICAgfQogICAg
IH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
V2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgZm9yIChhdXRvKiBkZXZp
Y2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBpZiAoZXhpc3Rz
SW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAg
ICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7CiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2soKSB9OwpAQCAt
MTcyLDE2ICsxNTEsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGZvciAoYXV0byYgW3BpcGVsaW5l
LCBkZXZpY2VdIDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBp
ZiAoZGV2aWNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpICYmIHBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgZGlkQ3Jl
YXRlV2ViR1BVUGlwZWxpbmUoKmRldmljZSwgKnBpcGVsaW5lKTsKLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjk3
LDcgKzI2Niw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZh
c0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAKICAgICBhdXRvKiBjb250ZXh0
ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAKLSAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0
IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKICAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiAKQEAgLTMy
NCw3ICsyOTIsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2NvbAogCiAgICAgYXV0byogY29udGV4
dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwogCi0gICAgLy8gRklYTUU6IDxo
dHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9y
dCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCkBAIC0z
MzYsNyArMzAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJvdG9jb2wKICAgICByZXR1cm4geyB9Owog
fQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJH
TCkKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OnJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiBw
cm9ncmFtSWQsIFByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSkKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zNjYsNyArMzMzLDYgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0
ZVNoYWRlcihjb25zdCBQcm90b2NvbDoKICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgRU5BQkxF
KFdFQkdMKQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBQcm90b2NvbDo6Q2FudmFzOjpQcm9n
cmFtSWQmIHByb2dyYW1JZCwgYm9vbCBkaXNhYmxlZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zOTMsNyArMzU5LDYgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRlclByb2dyYW1IaWdobGln
aHRlZCgKICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCiAKIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKQEAgLTQ1MCwxNyArNDE1
LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5KENh
bnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2Fu
dmFzPiBpbnNwZWN0b3JDYW52YXM7CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxH
UFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBt
X2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYg
KGl0ZW0tPmlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChjb250ZXh0KSkgewotICAgICAgICAgICAg
ICAgIGluc3BlY3RvckNhbnZhcyA9IGl0ZW07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICghaW5zcGVjdG9y
Q2FudmFzKQogICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNv
bnRleHQpOwogCkBAIC02MTcsNjkgKzU3MSw2IEBAIGJvb2wgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUpCi12b2lkIEluc3BlY3Rv
ckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2Up
Ci17Ci0gICAgaWYgKGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNlKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJpbmRDYW52
YXMoZGV2aWNlLCB0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERl
c3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgYXV0byBpbnNw
ZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRldmljZSk7Ci0gICAgQVNTRVJUKGlu
c3BlY3RvckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHVuYmluZENhbnZhcygqaW5zcGVjdG9yQ2FudmFzKTsKLX0KLQotdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0
JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBhdXRv
IG5vdGlmeURldmljZUZvclN3YXBDaGFpbiA9IFsmXSAoV2ViR1BVU3dhcENoYWluJiB3ZWJHUFVT
d2FwQ2hhaW4pIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JDYW52YXMgOiBtX2lkZW50
aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8q
IGRldmljZSA9IGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGRldmljZS0+ZGV2aWNlKCkuc3dhcENoYWluKCkgPT0gd2ViR1BVU3dhcENoYWlu
LnN3YXBDaGFpbigpKQotICAgICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2xpZW50Tm9kZXNDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAoYXV0byogZXhpc3RpbmdTd2Fw
Q2hhaW4gPSBjb250ZXh0R1BVLnN3YXBDaGFpbigpKQotICAgICAgICBub3RpZnlEZXZpY2VGb3JT
d2FwQ2hhaW4oKmV4aXN0aW5nU3dhcENoYWluKTsKLQotICAgIG5vdGlmeURldmljZUZvclN3YXBD
aGFpbihuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRD
cmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgV2ViR1BVUGlwZWxpbmUm
IHBpcGVsaW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNh
bnZhcyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAgIGlmICghaW5z
cGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQocGlwZWxpbmUuaXNW
YWxpZCgpKTsKLQotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbVJlZiA9IEluc3BlY3RvclNoYWRl
clByb2dyYW06OmNyZWF0ZShwaXBlbGluZSwgKmluc3BlY3RvckNhbnZhcyk7Ci0gICAgYXV0byYg
aW5zcGVjdG9yUHJvZ3JhbSA9IGluc3BlY3RvclByb2dyYW1SZWYuZ2V0KCk7Ci0gICAgbV9pZGVu
dGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnNldChpbnNwZWN0b3JQcm9ncmFtLmlkZW50aWZpZXIo
KSwgV1RGTW92ZShpbnNwZWN0b3JQcm9ncmFtUmVmKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnByb2dyYW1DcmVhdGVkKGluc3BlY3RvclByb2dyYW0uYnVpbGRPYmplY3RGb3JTaGFkZXJQ
cm9ncmFtKCkpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdl
YkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBhdXRvIGluc3Bl
Y3RvclByb2dyYW0gPSBmaW5kSW5zcGVjdG9yUHJvZ3JhbShwaXBlbGluZSk7Ci0gICAgaWYgKCFp
bnNwZWN0b3JQcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bmJpbmRQcm9ncmFtKCpp
bnNwZWN0b3JQcm9ncmFtKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAjZGVmaW5l
IFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVudFR5cGUpIFwKIHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50KSBcCiB7IFwKQEAgLTcx
NSw3ICs2MDYsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRBY3Rpb24oQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQwogCiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZh
c0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQpOwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRp
bmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzUmVu
ZGVyaW5nQ29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFz
RnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwpAQCAtNzM4LDcgKzYyOCw2IEBAIHZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKEluc3BlY3RvckNhbnZhcyYgaW5z
cGVjdG9yQ2FudmFzLCBQcm90CiB7CiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZh
cy5jYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBv
cnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAgICAgaWYgKCFpczxDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpCiAgICAgICAgICYmICFpczxJbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpCkBAIC03NzcsNyArNjY2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCgpCiAgICAgbV9yZW1v
dmVkQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50Ojpwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFtX3JlbW92ZWRQ
cm9ncmFtSWRlbnRpZmllcnMuc2l6ZSgpKQpAQCAtNzg4LDcgKzY3Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZpcmVkKCkKIAogICAgIG1fcmVt
b3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwogfQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKIHsKQEAgLTgwMiwxMiArNjkxLDEyIEBAIHZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKICAgICBpZiAobV9jYW52YXNEZXN0cm95ZWRU
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NhbnZhc0Rlc3Ryb3llZFRpbWVyLnN0b3AoKTsK
IAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9yZW1v
dmVkUHJvZ3JhbUlkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAgaWYgKG1fcHJvZ3JhbURlc3Ryb3ll
ZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyLnN0b3Ao
KTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCiAgICAgbV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycy5jbGVhcigp
OwogfQpAQCAtODM2LDE4ICs3MjUsNiBAQCBJbnNwZWN0b3JDYW52YXMmIEluc3BlY3RvckNhbnZh
c0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleAogICAgIHJl
dHVybiBpbnNwZWN0b3JDYW52YXM7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotSW5zcGVjdG9y
Q2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZhcyhXZWJHUFVEZXZpY2UmIGRl
dmljZSwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFz
ID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoZGV2aWNlKTsKLSAgICBtX2lkZW50aWZpZXJUb0lu
c3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3Rv
ckNhbnZhcy5jb3B5UmVmKCkpOwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNhbnZhc0Fk
ZGVkKGluc3BlY3RvckNhbnZhcy0+YnVpbGRPYmplY3RGb3JDYW52YXMoY2FwdHVyZUJhY2t0cmFj
ZSkpOwotCi0gICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLX0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQotCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1bmJpbmRDYW52YXMoSW5zcGVj
dG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiB7CiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtODk1
LDE4ICs3NzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6ZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbgogICAgIHJldHVybiBudWxscHRy
OwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNl
KQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9JbnNw
ZWN0b3JDYW52YXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGluc3BlY3RvckNhbnZhcy0+ZGV2
aWNlQ29udGV4dCgpID09ICZkZXZpY2UpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ2Fu
dmFzOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQotCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShX
RUJHTCkKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVuYmluZFByb2dyYW0oSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbSYgaW5zcGVjdG9yUHJvZ3JhbSkKIHsKICAgICBTdHJpbmcgaWRlbnRpZmll
ciA9IGluc3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpOwpAQCAtOTMxLDcgKzc5Nyw2IEBAIFJl
ZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0
SW5zcGVjdG9yUHJvZ3JhbShQcm90CiAgICAgcmV0dXJuIGluc3BlY3RvclByb2dyYW07CiB9CiAK
LSNpZiBFTkFCTEUoV0VCR0wpCiBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3Jh
bSkKIHsKICAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dyYW0gOiBtX2lkZW50aWZpZXJUb0lu
c3BlY3RvclByb2dyYW0udmFsdWVzKCkpIHsKQEAgLTk0MiwxNiArODA3LDQgQEAgUmVmUHRyPElu
c3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9y
UHJvZ3JhbShXZWJHTFAKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0g
ICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQ
cm9ncmFtLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpbnNwZWN0b3JQcm9ncmFtLT5waXBlbGlu
ZSgpID09ICZwaXBlbGluZSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JQcm9ncmFtOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGQ3YmRlZjNjODQ0NTU1MjU1ZGM2ZDIyZjYyZjI3
OTg3OTI2ZDUzMjMuLjdmMTAxMmFhMmEyNGY2ODJjZjY4OTFkMTM2NmRkNGQyNjE1NzMwZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmgKQEAgLTQ0LDE5ICs0NCwxMSBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7
Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQotY2xhc3MgSW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbTsKICNpZiBFTkFCTEUoV0VCR0wpCitjbGFzcyBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWNsYXNzIEdQ
VUNhbnZhc0NvbnRleHQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVQaXBlbGlu
ZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKIAogY2xhc3MgSW5zcGVjdG9y
Q2FudmFzQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIsIHB1YmxpYyBDYW52YXNPYnNl
cnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEluc3BlY3RvckNhbnZhc0FnZW50PiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ2FudmFzQWdlbnQpOwpAQCAtODAsMTQgKzcy
LDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IHNldFJlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudChpbnQpOwogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnRSZWNvcmRpbmcoY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIHN0ZDo6b3B0aW9uYWw8aW50PiYm
IGZyYW1lQ291bnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1lbW9yeUxpbWl0KTsKICAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BSZWNvcmRpbmcoY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYpOwotI2lmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IHJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gdXBkYXRlU2hhZGVyKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNh
bnZhczo6UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0jaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hhZGVyUHJvZ3JhbURpc2FibGVk
KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgYm9vbCBkaXNh
YmxlZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRT
aGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjpQcm9ncmFtSWQmLCBib29sIGhpZ2hsaWdodGVkKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAgICAgLy8gQ2Fu
dmFzT2JzZXJ2ZXIKICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwpAQCAtMTA5LDEzICs5OSw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQoV2ViR0xQcm9ncmFtJik7CiAgICAg
Ym9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHZvaWQgZGlkQ3JlYXRlV2Vi
R1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVEZXZp
Y2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgdm9pZCB3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQVUNh
bnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICB2b2lkIGRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgdm9pZCB3aWxs
RGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJik7Ci0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIKICNkZWZpbmUgUFJP
Q0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUpIFwKQEAgLTEzNCwzMiArMTE3
LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMm
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvciwgUmVjb3JkaW5nT3B0
aW9ucyYmID0geyB9KTsKIAogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCgpOwot
I2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdm9pZCBwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9p
ZCByZXNldCgpOwogCiAgICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwotI2lmIEVOQUJMRShXRUJHUFUp
Ci0gICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKFdlYkdQVURldmljZSYsIGJvb2wgY2Fw
dHVyZUJhY2t0cmFjZSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKICAgICB2b2lkIHVuYmlu
ZENhbnZhcyhJbnNwZWN0b3JDYW52YXMmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBh
c3NlcnRJbnNwZWN0b3JDYW52YXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBmaW5k
SW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZpbmRJbnNwZWN0b3JDYW52YXMoV2Vi
R1BVRGV2aWNlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAotI2lmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCB1bmJpbmRQ
cm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkKTsKLSNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGZpbmRJbnNwZWN0b3JQcm9ncmFt
KFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBmaW5kSW5zcGVjdG9yUHJv
Z3JhbShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKQEAgLTE3MSwxMSArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnM7CiAgICAgVGltZXIgbV9jYW52YXNE
ZXN0cm95ZWRUaW1lcjsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtPj4gbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtOwogICAgIFZlY3RvcjxT
dHJpbmc+IG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVyczsKICAgICBUaW1lciBtX3Byb2dyYW1E
ZXN0cm95ZWRUaW1lcjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUp
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVjb3Jk
aW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5j
cHAKaW5kZXggYzNhYWM1NGM1N2YyNDA3YjM4ZjAzNmQ4NjUxNWRmYjIwYWRiZjQ5MS4uMGMzMGQ5
YjgwMmMxNmU1NTNiMzg4NWZjZjU1YTdkMGVjZmQwNDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cm9jZXNzV2FybWluZy5jcHAKQEAgLTQyLDExICs0Miw2IEBACiAjaW5jbHVkZSAiWE1MTlNOYW1l
cy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAKLSNpZiBFTkFCTEUoR1BVX0RSSVZFUl9QUkVX
QVJNSU5HKQotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgIkdQVVJlcXVlc3RBZGFw
dGVyT3B0aW9ucy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQcm9j
ZXNzV2FybWluZzo6aW5pdGlhbGl6ZU5hbWVzKCkKQEAgLTc5LDEwICs3NCw2IEBAIHZvaWQgUHJv
Y2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKQogICAgIFRlbGVwaG9uZU51bWJlckRldGVjdG9yOjpwcmV3YXJtKCk7CiAj
ZW5kaWYKLQotI2lmIEVOQUJMRShHUFVfRFJJVkVSX1BSRVdBUk1JTkcpCi0gICAgR1BVRGV2aWNl
OjpwcmV3YXJtKCk7Ci0jZW5kaWYKIH0KIAogV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIFBy
b2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaAppbmRleCAwNzA4NDdjMTM0YjU2MTYzZjRhMDYxMzkzOThmMDNhMDU1OWE4Nzhi
Li44MjM1ODQzZmE1MTI5NTVjN2NlYjVlZmRmY2RmOTNkZTRhNTllMjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC0xMjAsNyArMTIwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIE0oVmlld3BvcnRzKSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKLSAg
ICBNKFdlYkdQVSkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAogICAg
IE0oWFIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggNWE2MGJjYzFl
NmI1MzJhNjFkNDhhY2MzNDRiYmFhMmFmOGQwMTZkZC4uMDJhMjZkNTdiNTVlY2FkZTQzYzVmMmVl
Mzk1ZjgzMzI5MjY4NzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAg
LTU3LDEwICs1Nyw2IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW1wb3J0ICJXZWJH
UFVMYXllci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAi
Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgpAQCAt
MjE4LDExICsyMTQsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgIGlmIChbbGF5ZXIg
aXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQogICAgICAgICByZXR1cm4gTGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOwogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAo
W2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdQVUxheWVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVy
biBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0jZW5kaWYKLQogICAgIHJldHVybiBM
YXllclR5cGVDdXN0b207CiB9CiAKQEAgLTI3NSw3ICsyNjYsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNs
YXNzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2Fz
IHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzIG9yIFdlYkdQVUxheWVycy4KKyAgICAgICAgLy8g
V2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJH
TExheWVycy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFhMjhmNzNhMDg2MWQxNTJiNzEzY2ViOWU5MzMyODNjYTgyNmE1ZDcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHUFVT
d2FwQ2hhaW47Ci19Ci0KLUBpbnRlcmZhY2UgV2ViR1BVTGF5ZXIgOiBDQU1ldGFsTGF5ZXIgewot
ICAgIFdlYkNvcmU6OkdQVVN3YXBDaGFpbiogX3N3YXBDaGFpbjsKLSAgICBmbG9hdCBfZGV2aWNl
U2NhbGVGYWN0b3I7Ci19Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJDb3JlOjpHUFVTd2Fw
Q2hhaW4qIHN3YXBDaGFpbjsKLQotLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhD
b2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKLQotQGVuZAotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQ
VUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BV
TGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMjM4MmU0ZWJiMmMxZjAw
ZjliYmNkMzVlMGU2MDJkYjljYTQ2OGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R1BVTGF5ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJXZWJHUFVMYXllci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BV
U3dhcENoYWluLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotCi1AaW1wbGVtZW50
YXRpb24gV2ViR1BVTGF5ZXIKLQotQHN5bnRoZXNpemUgc3dhcENoYWluID0gX3N3YXBDaGFpbjsK
LQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0KLSAgICAvLyBGSVhN
RTogV2ViR1BVIC0gaGFuZGxlIHJldGluYSBjb3JyZWN0bHkuCi0gICAgX2RldmljZVNjYWxlRmFj
dG9yID0gMTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBf
ZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgc2VsZi5jb2xvcnNwYWNlID0gV2ViQ29yZTo6c1JHQkNv
bG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChDR0ltYWdl
UmVmKWNvcHlJbWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xv
clNwYWNlCi17Ci0gICAgaWYgKCFfc3dhcENoYWluKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCaW5kR3JvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5
MmYxMzQ0YjU0YjIyYjllOWQ4MWYxOTE2ZmJmYjIxMjExODE2YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQmluZEdyb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5j
bHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNs
dWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3I7Ci0KLXVzaW5nIEFyZ3VtZW50QnVm
ZmVyID0gc3RkOjpwYWlyPGNvbnN0IFBsYXRmb3JtQnVmZmVyKiwgY29uc3QgR1BVQmluZEdyb3Vw
QWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMmPjsKLQotY2xhc3MgR1BVQmluZEdyb3Vw
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZShjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yJiwgR1BVQmluZEdyb3VwQWxsb2NhdG9yJik7Ci0KLSAgICB+R1BVQmluZEdyb3VwKCk7Ci0g
ICAgCi0gICAgY29uc3QgQXJndW1lbnRCdWZmZXIgYXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiB7IG1fYWxsb2NhdG9yLT5hcmd1bWVudEJ1ZmZlcigpLCBtX2FyZ3VtZW50QnVmZmVyT2Zm
c2V0cyB9OyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4mIGJvdW5kQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRCdWZmZXJzOyB9Ci0gICAgY29uc3QgSGFzaFNldDxS
ZWY8R1BVVGV4dHVyZT4+JiBib3VuZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZFRl
eHR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9j
YXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYsIEhh
c2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYsIEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYmKTsKLSAg
ICAKLSAgICBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyBtX2Fy
Z3VtZW50QnVmZmVyT2Zmc2V0czsKLSAgICBSZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBtX2Fs
bG9jYXRvcjsKLSAgICBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiBtX2JvdW5kQnVmZmVyczsKLSAg
ICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gbV9ib3VuZFRleHR1cmVzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBB
bGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MzE5N2JmMzMyODMw
MjMxNDM0N2IzNzgzZGE4NzRhZjYzNTQwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QmluZEdyb3VwQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1jbGFzcyBHUFVCaW5kR3JvdXBBbGxvY2F0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gY3JlYXRlKEdQVUVycm9yU2Nv
cGVzJik7Ci0KLSAgICBzdHJ1Y3QgQXJndW1lbnRCdWZmZXJPZmZzZXRzIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gdmVydGV4OwotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0PiBmcmFnbWVudDsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsKLSAgICB9OwotCi0j
aWYgVVNFKE1FVEFMKQotICAgIHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBh
bGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFyZ3VtZW50RW5jb2RlciAqdmVydGV4LCBNVExBcmd1
bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGUpOwotI2Vu
ZGlmCi0KLSAgICB2b2lkIHRyeVJlc2V0KCk7Ci0KLSAgICBjb25zdCBQbGF0Zm9ybUJ1ZmZlciog
YXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVQmluZEdyb3VwQWxsb2NhdG9yKEdQVUVycm9y
U2NvcGVzJik7Ci0KLSAgICBib29sIHJlYWxsb2NhdGUoUGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQp
OwotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX2FyZ3VtZW50QnVmZmVyOwotICAgIFBs
YXRmb3JtR1BVQnVmZmVyT2Zmc2V0IG1fbGFzdE9mZnNldCB7IDAgfTsKLQotICAgIFJlZjxHUFVF
cnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLSAgICBpbnQgbV9udW1CaW5kR3JvdXBzIHsgMCB9
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmMz
YTIzNjY4ODc1NmE3ZmNjZThjMzQzZTBmNWRmNjNhZmIxYWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVCaW5kaW5nUmVzb3VyY2UgPSBWYXJpYW50PFJlZjxj
b25zdCBHUFVTYW1wbGVyPiwgUmVmPEdQVVRleHR1cmU+LCBHUFVCdWZmZXJCaW5kaW5nPjsKLQot
c3RydWN0IEdQVUJpbmRHcm91cEJpbmRpbmcgewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAg
R1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA4YTk3OGE5ZTg2YTFlYjk2ZTJmY2ZkZTk0
NWJjZmNhZWFkNTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3Vw
QmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIFJlZjxjb25zdCBHUFVCaW5k
R3JvdXBMYXlvdXQ+IGxheW91dDsKLSAgICBWZWN0b3I8R1BVQmluZEdyb3VwQmluZGluZz4gYmlu
ZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJpbmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MDE2ZmM5ODQ4MWUxYzQ3ODI1ZjUwODNlZmZlMjZkY2U4NjZhODUyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BV
UGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNs
YXNzIEdQVUJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRHcm91cExh
eW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiB0
cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciYpOwotCi0gICAgc3RydWN0IFVuaWZvcm1CdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBp
bnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBEeW5hbWljVW5pZm9ybUJ1
ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0g
ICAgc3RydWN0IFNhbXBsZXIgewotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU2FtcGxlZFRleHR1cmUg
ewotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU3RvcmFnZUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVk
IGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAgc3RydWN0IER5bmFtaWNTdG9yYWdl
QnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lOwotICAgIH07Ci0K
LSAgICB1c2luZyBJbnRlcm5hbEJpbmRpbmdEZXRhaWxzID0gVmFyaWFudDxVbmlmb3JtQnVmZmVy
LCBEeW5hbWljVW5pZm9ybUJ1ZmZlciwgU2FtcGxlciwgU2FtcGxlZFRleHR1cmUsIFN0b3JhZ2VC
dWZmZXIsIER5bmFtaWNTdG9yYWdlQnVmZmVyPjsKLQotICAgIHN0cnVjdCBCaW5kaW5nIHsKLSAg
ICAgICAgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyBleHRlcm5hbEJpbmRpbmc7Ci0gICAgICAg
IHVuc2lnbmVkIGludGVybmFsTmFtZTsKLSAgICAgICAgSW50ZXJuYWxCaW5kaW5nRGV0YWlscyBp
bnRlcm5hbEJpbmRpbmdEZXRhaWxzOwotICAgIH07Ci0KLSAgICB1c2luZyBCaW5kaW5nc01hcFR5
cGUgPSBIYXNoTWFwPHVpbnQ2NF90LCBCaW5kaW5nLCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47Ci0gICAgY29uc3Qg
QmluZGluZ3NNYXBUeXBlJiBiaW5kaW5nc01hcCgpIGNvbnN0IHsgcmV0dXJuIG1fYmluZGluZ3NN
YXA7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXhFbmNv
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhFbmNvZGVyLmdldCgpOyB9Ci0gICAgTVRMQXJn
dW1lbnRFbmNvZGVyICpmcmFnbWVudEVuY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50
RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVFbmNvZGVyLmdldCgpOyB9Ci0jZW5kaWYgLy8gVVNF
KE1FVEFMKQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVCaW5kR3JvdXBMYXlv
dXQoQmluZGluZ3NNYXBUeXBlJiYsIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+JiYgdmVy
dGV4LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIGZyYWdtZW50LCBSZXRhaW5QdHI8
TVRMQXJndW1lbnRFbmNvZGVyPiYmIGNvbXB1dGUpOwotCi0gICAgUmV0YWluUHRyPE1UTEFyZ3Vt
ZW50RW5jb2Rlcj4gbV92ZXJ0ZXhFbmNvZGVyOwotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVu
Y29kZXI+IG1fZnJhZ21lbnRFbmNvZGVyOwotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29k
ZXI+IG1fY29tcHV0ZUVuY29kZXI7Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotICAgIGNvbnN0IEJp
bmRpbmdzTWFwVHlwZSBtX2JpbmRpbmdzTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMzNhYzJlOWFjZDE1YzIwYzYxYzgwMDAxOWU5Yjk4YmQ1
ZmQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmREZXNjcmlwdG9yLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3Mg
R1BVQmxlbmRGYWN0b3IgewotICAgIFplcm8sCi0gICAgT25lLAotICAgIFNyY0NvbG9yLAotICAg
IE9uZU1pbnVzU3JjQ29sb3IsCi0gICAgU3JjQWxwaGEsCi0gICAgT25lTWludXNTcmNBbHBoYSwK
LSAgICBEc3RDb2xvciwKLSAgICBPbmVNaW51c0RzdENvbG9yLAotICAgIERzdEFscGhhLAotICAg
IE9uZU1pbnVzRHN0QWxwaGEsCi0gICAgU3JjQWxwaGFTYXR1cmF0ZWQsCi0gICAgQmxlbmRDb2xv
ciwKLSAgICBPbmVNaW51c0JsZW5kQ29sb3IsCi19OwotCi1lbnVtIGNsYXNzIEdQVUJsZW5kT3Bl
cmF0aW9uIHsKLSAgICBBZGQsCi0gICAgU3VidHJhY3QsCi0gICAgUmV2ZXJzZVN1YnRyYWN0LAot
ICAgIE1pbiwKLSAgICBNYXgsCi19OwotCi1zdHJ1Y3QgR1BVQmxlbmREZXNjcmlwdG9yIHsKLSAg
ICBHUFVCbGVuZEZhY3RvciBzcmNGYWN0b3I7Ci0gICAgR1BVQmxlbmRGYWN0b3IgZHN0RmFjdG9y
OwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxMTc1NTk0NzEzMzAyZDA5MzdjZGU4NDgxZTVhMzQzOGZjMmY3N2RmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotR1BVQnVmZmVyOjpQZW5kaW5nTWFwcGluZ0NhbGxiYWNrOjpQZW5kaW5nTWFwcGluZ0Nh
bGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIHBlbmRpbmcpCi0gICAgOiBjYWxsYmFjayhXVEZNb3Zl
KHBlbmRpbmcpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzVhNWMzYWZjNGM4
NjIyZWQzNjA0ZGFmZWYyMzZjZDcyMjVlMmM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRGVmZXJyYWJs
ZVRhc2suaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRm
b3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFy
cmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsK
LWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKLQot
ZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247Ci0KLWNsYXNzIEdQVUJ1ZmZlciA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlcj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgU3Rh
dGUgewotICAgICAgICBNYXBwZWQsCi0gICAgICAgIFVubWFwcGVkLAotICAgICAgICBEZXN0cm95
ZWQKLSAgICB9OwotCi0gICAgfkdQVUJ1ZmZlcigpOwotCi0gICAgc3RhdGljIFJlZlB0cjxHUFVC
dWZmZXI+IHRyeUNyZWF0ZShHUFVEZXZpY2UmLCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiwg
R1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgUGxhdGZvcm1C
dWZmZXIqIHBsYXRmb3JtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUJ1ZmZlci5n
ZXQoKTsgfQotICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVu
Z3RoOyB9Ci0gICAgYm9vbCBpc0NvcHlTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNv
bnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7IH0KLSAgICBib29sIGlz
Q29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZm
ZXJVc2FnZTo6RmxhZ3M6OkNvcHlEZXN0aW5hdGlvbik7IH0KLSAgICBib29sIGlzSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6SW5k
ZXgpOyB9Ci0gICAgYm9vbCBpc1ZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFp
bnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgpOyB9Ci0gICAgYm9vbCBpc1VuaWZvcm0o
KSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6
VW5pZm9ybSk7IH0KLSAgICBib29sIGlzU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Uu
Y29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKTsgfQotICAgIGJvb2wgaXNS
ZWFkT25seSgpIGNvbnN0OwotICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNhZ2UuY29udGFpbnNBbnkoeyBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlLCBHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQgfSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVz
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVVzYWdlOyB9Ci0gICAgU3RhdGUgc3RhdGUo
KSBjb25zdDsKLQotICAgIEpTQzo6QXJyYXlCdWZmZXIqIG1hcE9uQ3JlYXRpb24oKTsKLQotI2lm
IFVTRShNRVRBTCkKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21taXR0ZWQoTVRMQ29tbWFuZEJ1
ZmZlciAqKTsKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21wbGV0ZWQoKTsKLSNlbmRpZgotCi0g
ICAgdXNpbmcgTWFwcGluZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEpTQzo6QXJyYXlC
dWZmZXIqKT47Ci0gICAgdm9pZCByZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJh
Y2smJiwgYm9vbCwgR1BVRXJyb3JTY29wZXMmKTsKLSAgICB2b2lkIHVubWFwKEdQVUVycm9yU2Nv
cGVzKik7Ci0gICAgdm9pZCBkZXN0cm95KEdQVUVycm9yU2NvcGVzKik7Ci0KLXByaXZhdGU6Ci0g
ICAgc3RydWN0IFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5k
aW5nTWFwcGluZ0NhbGxiYWNrPiB7Ci0gICAgICAgIHN0YXRpYyBSZWY8UGVuZGluZ01hcHBpbmdD
YWxsYmFjaz4gY3JlYXRlKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBNYXBwaW5nQ2FsbGJhY2sg
Y2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nTWFwcGluZ0NhbGxiYWNr
KE1hcHBpbmdDYWxsYmFjayYmKTsKLSAgICB9OwotCi0gICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVm
ZmVyU21hcnRQdHImJiwgR1BVRGV2aWNlJiwgc2l6ZV90LCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNh
Z2U6OkZsYWdzPiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uKTsKLSAgICBzdGF0aWMgYm9vbCB2YWxp
ZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURldmljZSYsIE9wdGlvblNldDxHUFVCdWZmZXJVc2Fn
ZTo6RmxhZ3M+LCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgSlNDOjpBcnJheUJ1ZmZlciogc3Rh
Z2luZ0J1ZmZlckZvclJlYWQoKTsKLSAgICBKU0M6OkFycmF5QnVmZmVyKiBzdGFnaW5nQnVmZmVy
Rm9yV3JpdGUoKTsKLSAgICB2b2lkIHJ1bk1hcHBpbmdDYWxsYmFjaygpOwotICAgIHZvaWQgY29w
eVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyopOwotCi0gICAgYm9vbCBpc01hcFdy
aXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6Rmxh
Z3M6Ok1hcFdyaXRlKTsgfQotICAgIGJvb2wgaXNNYXBSZWFkKCkgY29uc3QgeyByZXR1cm4gbV91
c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQpOyB9Ci0gICAgYm9v
bCBpc01hcFdyaXRlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzTWFwV3JpdGUoKSAmJiBzdGF0ZSgp
ID09IFN0YXRlOjpVbm1hcHBlZDsgfQotICAgIGJvb2wgaXNNYXBSZWFkYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGlzTWFwUmVhZCgpICYmIHN0YXRlKCkgPT0gU3RhdGU6OlVubWFwcGVkOyB9Ci0KLSAg
ICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG1fcGxhdGZvcm1CdWZmZXI7Ci0gICAgUmVmPEdQVURl
dmljZT4gbV9kZXZpY2U7Ci0KLSAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9zdGFnaW5n
QnVmZmVyOwotICAgIFJlZlB0cjxQZW5kaW5nTWFwcGluZ0NhbGxiYWNrPiBtX21hcHBpbmdDYWxs
YmFjazsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgbV9tYXBwaW5nQ2FsbGJhY2tUYXNr
OwotCi0gICAgc2l6ZV90IG1fYnl0ZUxlbmd0aDsKLSAgICBPcHRpb25TZXQ8R1BVQnVmZmVyVXNh
Z2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVuc2lnbmVkIG1fcGxhdGZvcm1Vc2FnZTsKLSAgICB1
bnNpZ25lZCBtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzIHsgMCB9OwotICAgIGJvb2wgbV9p
c01hcHBlZEZyb21DcmVhdGlvbiB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJCaW5kaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJhNmVlMDExMTAxZDQ3YzA0MWI1Zjk2OTUwNjgzZTRkODNlYzZk
YjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckJpbmRpbmcg
ewotICAgIFJlZjxHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAg
dWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzIwNzJkOWVmZjAyN2QyOWU5Mzc3OWJjOGYwNmJkNjQyYzQzODU2ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlclVzYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3IgewotICAgIHVpbnQ2NF90IHNpemU7
Ci0gICAgR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZTsKLX07Ci0KLWVudW0gY2xhc3MgR1BVQnVm
ZmVyTWFwcGVkT3B0aW9uIHsKLSAgICBJc01hcHBlZCwKLSAgICBOb3RNYXBwZWQKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGUxNDFlOGZmMzUxYWVmOWUwMjA1MjI0
NjVlNjZiNTRhNDI0ZDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2Fn
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVQnVmZmVyVXNhZ2VGbGFncyA9IHVu
c2lnbmVkOwotCi1jbGFzcyBHUFVCdWZmZXJVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1
ZmZlclVzYWdlPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBGbGFncyA6IEdQVUJ1ZmZlclVz
YWdlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgTWFwUmVhZCA9IDEgPDwgMCwK
LSAgICAgICAgTWFwV3JpdGUgPSAxIDw8IDEsCi0gICAgICAgIENvcHlTb3VyY2UgPSAxIDw8IDIs
Ci0gICAgICAgIENvcHlEZXN0aW5hdGlvbiA9IDEgPDwgMywKLSAgICAgICAgSW5kZXggPSAxIDw8
IDQsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgNSwKLSAgICAgICAgVW5pZm9ybSA9IDEgPDwgNiwK
LSAgICAgICAgU3RvcmFnZSA9IDEgPDwgNywKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAyZGE1MjY1NmRlMjNkMjYyNGQ2YTFiOGUzNTZiZDI2NGFkYzE2MTkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xvciB7Ci0gICAgZmxvYXQgcjsKLSAg
ICBmbG9hdCBnOwotICAgIGZsb2F0IGI7Ci0gICAgZmxvYXQgYTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVz
Y3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDU1MjcyOGJjYzliMzgw
NTc0NTU5OWU2YjU4NjgxOTFhYjEzNmU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVD
b2xvclN0YXRlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVUJsZW5kRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNvbG9yV3JpdGUuaCIKLSNpbmNs
dWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0
IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsK
LQotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJsZW5kOwotICAgIEdQVUJsZW5kRGVzY3Jp
cHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNvbG9yV3JpdGVGbGFncyB3cml0ZU1hc2sgeyBzdGF0
aWNfY2FzdDxHUFVDb2xvcldyaXRlRmxhZ3M+KEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpBbGwpIH07
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bG9yV3JpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xv
cldyaXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNmQ1YzhjOWRlNjFmNDMy
ODE0NWI0ZjM1NTEyZGZhN2IzMmExOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bG9yV3JpdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQVUNvbG9yV3JpdGVGbGFn
cyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVDb2xvcldyaXRlIDogcHVibGljIFJlZkNvdW50ZWQ8
R1BVQ29sb3JXcml0ZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVDb2xv
cldyaXRlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgUmVkID0gMSA8PCAwLAot
ICAgICAgICBHcmVlbiA9IDEgPDwgMSwKLSAgICAgICAgQmx1ZSA9IDEgPDwgMiwKLSAgICAgICAg
QWxwaGEgPSAxIDw8IDMsCi0gICAgICAgIEFsbCA9ICgxIDw8IDQpIC0gMSwKLSAgICB9OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5k
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFu
ZEJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmZiNjJkNDRjMDViOTE1
YTc1MjZiMjMxNTZmOTE5Njg0MDhhNWEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVD
b21tYW5kQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1
ZmZlci5oIgotI2luY2x1ZGUgIkdQVU9yaWdpbjNELmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1U
eXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVUV4
dGVudDNEOwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKLSAgICB1aW50NjRfdCBv
ZmZzZXQ7Ci0gICAgdW5zaWduZWQgcm93UGl0Y2g7Ci0gICAgdW5zaWduZWQgaW1hZ2VIZWlnaHQ7
Ci19OwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXcgZmluYWwgOiBHUFVCdWZmZXJDb3B5Vmll
d0Jhc2UgewotICAgIEdQVUJ1ZmZlckNvcHlWaWV3KFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyQ29w
eSwgY29uc3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVUJ1ZmZl
ckNvcHlWaWV3QmFzZShiYXNlKQotICAgICAgICAsIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlckNvcHkp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1
Y3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgdW5zaWduZWQgbWlwTGV2ZWw7Ci0gICAg
dW5zaWduZWQgYXJyYXlMYXllcjsKLSAgICBHUFVPcmlnaW4zRCBvcmlnaW47Ci19OwotCi1zdHJ1
Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFsIDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0g
ICAgR1BVVGV4dHVyZUNvcHlWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmVDb3B5LCBjb25z
dCBHUFVUZXh0dXJlQ29weVZpZXdCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVRleHR1cmVDb3B5
Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCB0ZXh0dXJlKFdURk1vdmUodGV4dHVyZUNvcHkpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZTsKLX07Ci0KLWNsYXNz
IEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kQnVmZmVyPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiB0cnlDcmVhdGUo
Y29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIqIHBsYXRmb3Jt
Q29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyLmdl
dCgpOyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4mIHVzZWRCdWZmZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVyczsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQ
VVRleHR1cmU+PiYgdXNlZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkVGV4dHVyZXM7
IH0KLSAgICBib29sIGlzRW5jb2RpbmdQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuY29kaW5n
UGFzczsgfQotCi0gICAgdm9pZCBzZXRJc0VuY29kaW5nUGFzcyhib29sIGlzRW5jb2RpbmcpIHsg
bV9pc0VuY29kaW5nUGFzcyA9IGlzRW5jb2Rpbmc7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAgfkdQ
VUNvbW1hbmRCdWZmZXIoKTsKLSAgICB2b2lkIGVuZEJsaXRFbmNvZGluZygpOwotI2VuZGlmCi0K
LSAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmLCB1aW50NjRfdCBz
cmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYsIHVpbnQ2NF90IGRzdE9mZnNldCwgdWludDY0X3Qg
c2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKEdQVUJ1ZmZlckNvcHlWaWV3JiYs
IEdQVVRleHR1cmVDb3B5VmlldyYmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQgY29w
eVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcmJiwgR1BVQnVmZmVyQ29weVZpZXcm
JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKEdQ
VVRleHR1cmVDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50
M0QmKTsKLQotICAgIHZvaWQgdXNlQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
dXNlZEJ1ZmZlcnMuYWRkVm9pZChXVEZNb3ZlKGJ1ZmZlcikpOyB9Ci0gICAgdm9pZCB1c2VUZXh0
dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpIHsgbV91c2VkVGV4dHVyZXMuYWRkVm9pZChX
VEZNb3ZlKHRleHR1cmUpKTsgfQotCi1wcml2YXRlOgotICAgIEdQVUNvbW1hbmRCdWZmZXIoUGxh
dGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZm
ZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsKLSAgICBIYXNoU2V0PFJlZjxHUFVC
dWZmZXI+PiBtX3VzZWRCdWZmZXJzOwotICAgIEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiBtX3Vz
ZWRUZXh0dXJlczsKLSAgICBib29sIG1faXNFbmNvZGluZ1Bhc3MgeyBmYWxzZSB9OwotI2lmIFVT
RShNRVRBTCkKLSAgICBNVExCbGl0Q29tbWFuZEVuY29kZXIgKmJsaXRFbmNvZGVyKCkgY29uc3Q7
Ci0gICAgbXV0YWJsZSBSZXRhaW5QdHI8TVRMQmxpdENvbW1hbmRFbmNvZGVyPiBtX2JsaXRFbmNv
ZGVyOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZTBiYmEzOWM5ZGZlNGQwMDI4OTNjOWFiNWMyOGQxMmZlNGMyOGZjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVDb21wYXJlRnVuY3Rp
b24gewotICAgIE5ldmVyLAotICAgIExlc3MsCi0gICAgRXF1YWwsCi0gICAgTGVzc0VxdWFsLAot
ICAgIEdyZWF0ZXIsCi0gICAgTm90RXF1YWwsCi0gICAgR3JlYXRlckVxdWFsLAotICAgIEFsd2F5
cwotfTsKLQotdXNpbmcgUGxhdGZvcm1Db21wYXJlRnVuY3Rpb24gPSB1bnNpZ25lZDsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRl
UGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEwNDE1ZDkwZDhj
YmNmODdkYmNhMmEyYWNjZDI1YmExNGViOGE2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGFzc0VuY29k
ZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiB0cnlDcmVhdGUoUmVmPEdQVUNvbW1h
bmRCdWZmZXI+JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVQ29tcHV0
ZVBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIGRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHks
IHVuc2lnbmVkIHopOwotCi1wcml2YXRlOgotICAgIEdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0ciYm
KTsKLSAgICB+R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKCkgeyBlbmRQYXNzKCk7IH0KLQotICAgIC8v
IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyCi0gICAgY29uc3QgUGxhdGZvcm1Qcm9ncmFtbWFi
bGVQYXNzRW5jb2RlciogcGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgaW52YWxpZGF0ZUVuY29kZXIoKSBmaW5hbCB7IG1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29k
ZXIgPSBudWxscHRyOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2UoY29u
c3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQgdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29t
cHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVk
IGluZGV4KSBmaW5hbDsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJT
bWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyOwotICAgIFJlZlB0cjxjb25zdCBH
UFVDb21wdXRlUGlwZWxpbmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ5YzI3ZTMzMDQyODNhYjNlNTA4ODlkODdiODdlYzg4
ZmE1OGNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1
ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSNpbmNsdWRlICJXSExTTFBy
ZXBhcmUuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmlj
ZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci0KLXN0
cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVDb21wdXRlUGlw
ZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwg
fkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZlB0cjxHUFVDb21wdXRlUGlw
ZWxpbmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIGJvb2wgaXNDb21wdXRlUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIHJlY29tcGlsZShjb25z
dCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiBjb21wdXRlU3Rh
Z2UpOwotCi0gICAgY29uc3QgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmUqIHBsYXRmb3JtQ29tcHV0
ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZS5nZXQo
KTsgfQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotICAgIFdITFNMOjpDb21wdXRlRGlt
ZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZURpbWVu
c2lvbnM7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LSAgICBHUFVDb21wdXRlUGlwZWxpbmUoUGxhdGZvcm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciYm
LCBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMsIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91
dD4mKTsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciBtX3Bs
YXRmb3JtQ29tcHV0ZVBpcGVsaW5lOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBX
SExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgbV9jb21wdXRlRGltZW5zaW9ucyB7IDAsIDAsIDAgfTsK
LSNlbmRpZgotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRp
b24uCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91dDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShX
ZWJDb3JlOjpHUFVDb21wdXRlUGlwZWxpbmUsIGlzQ29tcHV0ZVBpcGVsaW5lKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMzkxNTA1ZWVjMjU5YTIzZDgxODFmNjc0
ZGRkODdmYzA1MDYyNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlv
dXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIGNvbXB1dGUpCi0gICAgICAgIDog
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUobGF5b3V0KSB9Ci0gICAgICAgICwg
Y29tcHV0ZVN0YWdlIHsgV1RGTW92ZShjb21wdXRlKSB9Ci0gICAgewotICAgIH0KLQotICAgIEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2U7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRl
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0YTQ3ZDAzYjM2MmE2ODhiMmQ3OTEwYzdmYjE3OWJiMWU5OWUwNmU0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wYXJlRnVuY3Rpb24uaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yIHsK
LSAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkOwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0
aENvbXBhcmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NmNTJiOWU1ZGNh
NGIxMTlkZWFkZTQyZGVmYTliZWJmZjU0NDdlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVRGV2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cC5oIgotI2luY2x1ZGUgIkdQVUJp
bmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BV
QnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNs
dWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJHUFVQ
aXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIkdQ
VVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5j
bHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiR1BVVGV4
dHVyZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQnVmZmVy
PiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1cm4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoKnRoaXMs
IGRlc2NyaXB0b3IsIGlzTWFwcGVkLCBlcnJvclNjb3Blcyk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25l
ZCBtYXhpbXVtTWlwTGV2ZWxDb3VudChHUFVUZXh0dXJlRGltZW5zaW9uIGRpbWVuc2lvbiwgR1BV
RXh0ZW50M0Qgc2l6ZSkKLXsKLSAgICB1bnNpZ25lZCB3aWR0aCA9IHNpemUud2lkdGg7Ci0gICAg
dW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNpZ25lZCBkZXB0aCA9IDE7Ci0gICAgc3dpdGNo
IChkaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6Ci0gICAgICAgIGhl
aWdodCA9IHNpemUuaGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVE
aW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGRl
cHRoID0gc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byBtYXhE
aW1lbnNpb24gPSBzdGQ6Om1heChzdGQ6Om1heCh3aWR0aCwgaGVpZ2h0KSwgZGVwdGgpOwotICAg
IGludCBpID0gc2l6ZW9mKEdQVUV4dGVudDNEOjpJbm5lclR5cGUpICogOCAtIDE7Ci0gICAgd2hp
bGUgKCEobWF4RGltZW5zaW9uICYgKDEgPDwgaSkpICYmIGkgPj0gMCkKLSAgICAgICAgLS1pOwot
ICAgIEFTU0VSVChpID49IDApOwotICAgIHJldHVybiBpICsgMTsKLX0KLQotUmVmUHRyPEdQVVRl
eHR1cmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2l6ZS53aWR0
aCB8fCAhZGVzY3JpcHRvci5zaXplLmhlaWdodCB8fCAhZGVzY3JpcHRvci5zaXplLmRlcHRoKSB7
Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZXMg
Y2FuJ3QgaGF2ZSAwIGRpbWVuc2lvbnMuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpIHsKLSAgICAgICAgbV9lcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAgbWlwbGV2
ZWxzLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmICghZGVzY3JpcHRv
ci5zYW1wbGVDb3VudCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBzYW1wbGVzLiIpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9tZXRhbC9N
ZXRhbC1GZWF0dXJlLVNldC1UYWJsZXMucGRmCi0gICAgdW5zaWduZWQgbWF4UmVndWxhclNpemUg
PSA4MTkyOwotICAgIHVuc2lnbmVkIG1heERlcHRoU2l6ZSA9IDIwNDg7Ci0gICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFk
OgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbWF4UmVndWxhclNpemUpIHsK
LSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3Ry
aW5nKCIxRCB0ZXh0dXJlIGlzIHRvbyB3aWRlOiAiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIg
bmVlZHMgdG8gYmUgPD0gIiwgbWF4UmVndWxhclNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA+
IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVm
aXhlZEVycm9yKG1ha2VTdHJpbmcoIjFEIHRleHR1cmUgYXJyYXkgaGFzIHRvbyBtYW55IGxheWVy
czogIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhEZXB0
aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAgaWYg
KGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heFJlZ3VsYXJTaXplIHx8IGRlc2NyaXB0b3Iuc2l6
ZS5oZWlnaHQgPiBtYXhSZWd1bGFyU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJEIHRleHR1cmUgaXMgdG9vIGxhcmdl
OiIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiBhbmQgIiwgZGVzY3JpcHRvci5zaXplLmhlaWdo
dCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXplLCAiLiIpKTsKLSAgICAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0
aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQ
cmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJEIHRleHR1cmUgYXJyYXkgaGFzIHRvbyBtYW55IGxh
eWVyczogIiwgZGVzY3JpcHRvci5zaXplLmRlcHRoLCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heERl
cHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBp
ZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbWF4RGVwdGhTaXplIHx8IGRlc2NyaXB0b3Iuc2l6
ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUgfHwgZGVzY3JpcHRvci5zaXplLmRlcHRoID4gbWF4RGVw
dGhTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IobWFrZVN0cmluZygiM0QgdGV4dHVyZSBpcyB0b28gbGFyZ2U6ICIsIGRlc2NyaXB0b3Iuc2l6
ZS53aWR0aCwgIiwgIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiwgYW5kICIsIGRlc2NyaXB0
b3Iuc2l6ZS5kZXB0aCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heERlcHRoU2l6ZSwgIi4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBHUFVUZXh0dXJlRGltZW5zaW9uOjpf
MWQgJiYgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ICE9IDEpIHsKLSAgICAgICAgbV9lcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0dXJlcyBjYW4ndCBoYXZlIG1pcG1h
cHMiKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBhdXRvIG1heExldmVscyA9
IG1heGltdW1NaXBMZXZlbENvdW50KGRlc2NyaXB0b3IuZGltZW5zaW9uLCBkZXNjcmlwdG9yLnNp
emUpOwotICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgPiBtYXhMZXZlbHMpIHsKLSAg
ICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIlRv
byBtYW55IG1pcGxldmVsczogIiwgZGVzY3JpcHRvci5taXBMZXZlbENvdW50LCAiIG5lZWRzIHRv
IGJlIDw9ICIsIG1heExldmVscywgIi4iKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSAmJiBkZXNjcmlwdG9yLnNhbXBs
ZUNvdW50ICE9IDQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVy
cm9yKCJUZXh0dXJlIHNhbXBsZUNvdW50IGNhbiBvbmx5IGJlIDEgb3IgNC4iKTsKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAx
KSB7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBHUFVUZXh0dXJlRGltZW5z
aW9uOjpfMmQpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRF
cnJvcigiVGV4dHVyZSBkaW1lbnNpb24gaW5jb21wYXRpYmxlIHdpdGggbXVsdGlzYW1wbGluZy4i
KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2Ny
aXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2FtcGxlZCB0ZXh0dXJlcyBjYW4ndCBoYXZlIG1p
cG1hcHMuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlm
IChkZXNjcmlwdG9yLnNpemUuZGVwdGggIT0gMSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJBcnJheSB0ZXh0dXJlcyBjYW4ndCBiZSBtdWx0aXNh
bXBsZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlm
IChkZXNjcmlwdG9yLnVzYWdlICYgc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2Nv
cGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2FtcGxlZCB0ZXh0dXJlcyBjYW4ndCBo
YXZlIFNUT1JBR0UgdXNhZ2UuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBPbmx5IHNvbWUgcGl4ZWwgZm9ybWF0cyBhcmUgY2FwYWJsZSBv
ZiBNU0FBLiBXaGVuIHdlIGFkZCB0aG9zZSBuZXcgcGl4ZWwgZm9ybWF0cywgd2UnbGwgaGF2ZSB0
byBhZGQgZmlsdGVyaW5nIGNvZGUgaGVyZS4KLSAgICB9Ci0KLSAgICAvLyBUaGUgaGVpZ2h0IGNv
bXBvbmVudCBmb3IgMWQgdGV4dHVyZXMgaXMgdGhlIGFycmF5IGxlbmd0aC4KLSAgICAvLyBUaGUg
ZGVwdGggY29tcG9uZW50IGZvciAyZCB0ZXh0dXJlcyBpcyB0aGUgYXJyYXkgbGVuZ3RoLgotICAg
IGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMWQgJiYg
ZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0dXJlcyBjYW4ndCBoYXZlIGRlcHRoICE9IDEuIik7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0
ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2NyaXB0b3Iu
ZGltZW5zaW9uICE9IEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZCkgewotICAgICAgICBtX2Vycm9y
U2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMgbXVz
dCBiZSAyZC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3Jp
cHRvci5mb3JtYXQgPT0gR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDggJiYg
ZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiRGVwdGgvc3RlbmNpbCB0ZXh0dXJlcyBjYW4ndCBiZSBtdWx0
aXNhbXBsZWQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKHN0YXRp
Y19jYXN0PEdQVVRleHR1cmVVc2FnZUZsYWdzPihkZXNjcmlwdG9yLnVzYWdlKSA+PSBzdGF0aWNf
Y2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6TWF4aW11
bVZhbHVlKSkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IkludmFsaWQgdXNhZ2UgZmxhZ3MuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEdQVVRleHR1cmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgbWFrZVJl
ZigqbV9lcnJvclNjb3BlcykpOwotfQotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BVRGV2aWNlOjp0
cnlDcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBj
b25zdAotewotICAgIHJldHVybiBHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0
b3IpOwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVEZXZpY2U6OnRyeUNyZWF0
ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0
ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJlZjxHUFVQaXBlbGluZUxheW91dD4gR1BVRGV2
aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRl
KFdURk1vdmUoZGVzY3JpcHRvcikpOwotfQotCi1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVE
ZXZpY2U6OnRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OnRy
eUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Blcykg
Y29uc3QKLXsKLSAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywg
ZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5l
PiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKCp0aGlz
LCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci19Ci0KLVJlZlB0cjxHUFVCaW5kR3JvdXA+IEdQ
VURldmljZTo6dHJ5Q3JlYXRlQmluZEdyb3VwKGNvbnN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICBp
ZiAoIW1fYmluZEdyb3VwQWxsb2NhdG9yKQotICAgICAgICBtX2JpbmRHcm91cEFsbG9jYXRvciA9
IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKGVycm9yU2NvcGVzKTsKLQotICAgIHJldHVy
biBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShkZXNjcmlwdG9yLCAqbV9iaW5kR3JvdXBBbGxvY2F0
b3IpOwotfQotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5
Q3JlYXRlKCp0aGlzKTsKLX0KLQotUmVmUHRyPEdQVVF1ZXVlPiBHUFVEZXZpY2U6OnRyeUdldFF1
ZXVlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBHUFVR
dWV1ZTo6dHJ5Q3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVybiBtX3F1ZXVlOwotfQotICAgIAot
dm9pZCBHUFVEZXZpY2U6OnNldFN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBD
aGFpbikKLXsKLSAgICBtX3N3YXBDaGFpbiA9IFdURk1vdmUoc3dhcENoYWluKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiYmJlMzA0ZmYwYjZhNzYyYjlmNDhjNDQxM2ZhMTVlZjVm
NDE1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1
ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2lu
Y2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCi0jaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmluZEdyb3VwOwotY2xhc3Mg
R1BVQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgR1BVQnVmZmVyOwotY2xhc3MgR1BVQ29tbWFuZEJ1
ZmZlcjsKLWNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwot
Y2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKLWNsYXNz
IEdQVVNhbXBsZXI7Ci1jbGFzcyBHUFVTaGFkZXJNb2R1bGU7Ci1jbGFzcyBHUFVUZXh0dXJlOwot
Ci1zdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yOwotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IEdQVVJlcXVl
c3RBZGFwdGVyT3B0aW9uczsKLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKLXN0cnVjdCBH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotc3RydWN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7
Ci1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFw
cGVkT3B0aW9uOwotCi1jbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEZXZp
Y2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNlPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxHUFVEZXZpY2U+IHRyeUNyZWF0ZShjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucz4mKTsKLSAgICBzdGF0aWMgdm9pZCBwcmV3YXJtKCk7Ci0KLSAg
ICBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3Jp
cHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJyb3JTY29wZXMmKTsKLSAgICBSZWZQ
dHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRv
ciYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVTYW1wbGVyPiB0cnlDcmVhdGVTYW1wbGVyKGNvbnN0
IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBSZWZQdHI8R1BVQmluZEdyb3Vw
TGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxHUFVQaXBlbGluZUxheW91dD4gY3JlYXRlUGlw
ZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYpIGNvbnN0OwotICAgIFJl
ZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZUJpbmRHcm91cChjb25zdCBHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVTaGFk
ZXJNb2R1bGU+IHRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiB0cnlDcmVhdGVS
ZW5kZXJQaXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBHUFVFcnJv
clNjb3BlcyYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IHRyeUNyZWF0
ZUNvbXB1dGVQaXBlbGluZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BV
RXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiB0cnlD
cmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8R1BVUXVldWU+IHRyeUdl
dFF1ZXVlKCkgY29uc3Q7Ci0gICAgCi0gICAgUGxhdGZvcm1EZXZpY2UqIHBsYXRmb3JtRGV2aWNl
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQotICAgIEdQVVN3YXBD
aGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldFN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWluPiYmKTsKLQotICAgIHZvaWQg
c2V0RXJyb3JTY29wZXMoUmVmPEdQVUVycm9yU2NvcGVzPiYmIGVycm9yU2NvcGVzKSB7IG1fZXJy
b3JTY29wZXMgPSBXVEZNb3ZlKGVycm9yU2NvcGVzKTsgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHVzZVdITFNMID0gdHJ1ZTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVEZXZp
Y2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtRGV2aWNlU21hcnRQ
dHIgbV9wbGF0Zm9ybURldmljZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxHUFVRdWV1ZT4gbV9xdWV1
ZTsKLSAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsKLSAgICBtdXRhYmxlIFJl
ZlB0cjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IG1fYmluZEdyb3VwQWxsb2NhdG9yOwotICAgIFJl
ZlB0cjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmIyOGQ0ZmMxMmM4YTI0NzI4Y2UyMDY1YmQyNzIxZGJhZjgyYmZlZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVFcnJvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yRmls
dGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BV
RXJyb3JGaWx0ZXIgZmlsdGVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgc3dpdGNo
IChmaWx0ZXIpIHsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeToKLSAgICAg
ICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVPdXRPZk1lbW9yeUVycm9yPihHUFVPdXRPZk1l
bW9yeUVycm9yOjpjcmVhdGUoKSkpOwotICAgIGNhc2UgR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRp
b246Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPihH
UFVWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSkpOwotICAgIGNhc2UgR1BVRXJyb3JG
aWx0ZXI6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gR1BVRXJyb3IoUmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlvbkVycm9y
OjpjcmVhdGUoIkJhZCBlcnJvciEiKSkpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY5ZmM4ZmFmYWZhNDVmMGZmMTQ3Y2I4YmJiNDcxMzMyMjc1MmMyOWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkdQVVZhbGlkYXRpb25FcnJv
ci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLXVzaW5nIEdQVUVycm9yID0gVmFyaWFudDxS
ZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+PjsK
LQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXIsIGNvbnN0IFN0cmluZyYpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDU2OWZlZjMyNzA1ZDk5YmZlY2VhMDA4OTFmZjE2NDRhMGE0ZDE3
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWVudW0gY2xhc3MgR1BV
RXJyb3JGaWx0ZXIgewotICAgIE5vbmUsCi0gICAgT3V0T2ZNZW1vcnksCi0gICAgVmFsaWRhdGlv
biwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJlZTljZjFi
ZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRXJyb3JTY29wZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCB1
bnNpZ25lZCBtYXhVbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkID0gMjU2OwotCi1SZWY8R1BV
RXJyb3JTY29wZXM+IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoVW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2smJiBjYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVFcnJvclNjb3Bl
cyhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1HUFVFcnJvclNjb3Blczo6R1BVRXJyb3JTY29w
ZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fdW5jYXB0dXJl
ZEVycm9yQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBtX251bVVuY2FwdHVyZWRF
cnJvckV2ZW50c0FsbG93ZWQobWF4VW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkKLXsKLX0K
LQotdm9pZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmls
dGVyKQotewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIHN0
ZDo6bnVsbG9wdCB9KTsKLX0KLQotc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gR1BVRXJyb3JTY29w
ZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVzc2FnZSkKLXsKLSAgICBpZiAobV9lcnJv
clNjb3Blcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmFpbE1lc3NhZ2UgPSAiTm8gZXJyb3Igc2Nv
cGUgZXhpc3RzISI7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAg
YXV0byBzY29wZSA9IG1fZXJyb3JTY29wZXMudGFrZUxhc3QoKTsKLSAgICByZXR1cm4gc2NvcGUu
ZmlsdGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxsb3B0IDogc2NvcGUuZXJy
b3I7Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJyb3IoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IHN0ZDo6ZmluZF9pZihtX2Vycm9yU2NvcGVzLnJiZWdpbigpLCBtX2Vycm9yU2NvcGVzLnJlbmQo
KSwgW2ZpbHRlcl0oY29uc3QgRXJyb3JTY29wZSYgc2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIHNj
b3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSB8fCBzY29wZS5maWx0ZXIgPT0gZmls
dGVyOwotICAgIH0pOwotCi0gICAgaWYgKGl0ZXJhdG9yID09IG1fZXJyb3JTY29wZXMucmVuZCgp
KSB7Ci0gICAgICAgIGlmICghbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soY3Jl
YXRlRXJyb3IoZmlsdGVyLCBtZXNzYWdlKSk7Ci0gICAgICAgIGlmICghKC0tbV9udW1VbmNhcHR1
cmVkRXJyb3JFdmVudHNBbGxvd2VkKSkKLSAgICAgICAgICAgIG1fdW5jYXB0dXJlZEVycm9yQ2Fs
bGJhY2soY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24sICJXZWJHUFU6IFRv
byBtYW55IGVycm9yczsgbm8gbW9yZSBlcnJvciBldmVudHMgd2lsbCBmaXJlIG9uIHRoaXMgR1BV
RGV2aWNlLiIpKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHNj
b3BlIGhhcyBhbHJlYWR5IGNhcHR1cmVkIGFuIGVycm9yLCBpZ25vcmUgdGhpcyBuZXcgb25lLgot
ICAgIGlmIChpdGVyYXRvci0+ZXJyb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIGl0ZXJhdG9y
LT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgR1BVRXJy
b3JTY29wZXM6OmdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17
Ci0gICAgZ2VuZXJhdGVFcnJvcihtX3ByZWZpeCArIG1lc3NhZ2UsIEdQVUVycm9yRmlsdGVyOjpW
YWxpZGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MDlj
Njg0YTkzYzc2YjM3ZGY3Y2QwNzM1ZjdkZmU3OGUyYWM3ZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlcyA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVUVycm9yU2NvcGVzPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEdQVUVycm9yJiYpPjsKLSAg
ICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUoVW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2smJik7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyKTsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2Up
OwotCi0gICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYsIEdQVUVycm9yRmlsdGVy
ID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwotICAgIHZvaWQgZ2VuZXJhdGVQcmVmaXhl
ZEVycm9yKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0RXJyb3JQcmVmaXgoY29uc3QgU3Ry
aW5nJiBwcmVmaXgpIHsgbV9wcmVmaXggPSBwcmVmaXg7IH0KLQotcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgRXJyb3JTY29wZSB7Ci0gICAgICAgIGNvbnN0IEdQVUVycm9yRmlsdGVyIGZpbHRlcjsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7Ci0gICAgfTsKLQotICAgIEdQVUVy
cm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0gICAgVW5jYXB0dXJlZEVy
cm9yQ2FsbGJhY2sgbV91bmNhcHR1cmVkRXJyb3JDYWxsYmFjazsKLQotICAgIFZlY3RvcjxFcnJv
clNjb3BlPiBtX2Vycm9yU2NvcGVzOwotICAgIFN0cmluZyBtX3ByZWZpeDsKLSAgICB1bnNpZ25l
ZCBtX251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTQ0ODI2NTIwY2M1ZTdlMGNjOWZmNDNmZDE0MjgwZjUwNDRiN2ViZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVjdCBHUFVFeHRlbnQzRCB7
Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gdW5zaWduZWQ7Ci0gICAgSW5uZXJUeXBlIHdpZHRoOwot
ICAgIElubmVyVHlwZSBoZWlnaHQ7Ci0gICAgSW5uZXJUeXBlIGRlcHRoOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTIyZTUxYzNlNzNiOTU2MWNiYzgxNTRmZDA5NzZkNzhlOWVmODJh
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGltaXRzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IHVuc2lnbmVkIG1heFZlcnRl
eEJ1ZmZlcnMgPSAxNjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMb2FkT3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEyNGVlZjUyNzRmYmMw
YWQ3Njc0ZjZiYzU2ZThmMTk2ZTFjOTYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TG9hZE9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVTG9hZE9wIHsKLSAgICBDbGVhciwKLSAgICBMb2FkCi19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjJkOTE4YzJlNTQ1MTdjYjM3ZmZmZWE2YjI2
MmQ0NWY4MmZhOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVT2JqZWN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVU9iamVjdEJhc2U+IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5HUFVPYmplY3RCYXNlKCkgPSBkZWZhdWx0OwotCi1wcm90ZWN0ZWQ6
Ci0gICAgR1BVT2JqZWN0QmFzZShSZWY8R1BVRXJyb3JTY29wZXM+JiYgcmVwb3J0ZXIpCi0gICAg
ICAgIDogbV9lcnJvclNjb3BlcyhXVEZNb3ZlKHJlcG9ydGVyKSkgeyB9Ci0KLSAgICBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU2NvcGVzOyB9Ci0K
LXByaXZhdGU6Ci0gICAgUmVmPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9yU2NvcGVzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPdXRPZk1lbW9y
eUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZN
ZW1vcnlFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjQyMGU5N2RmZTNi
ZjA3NTY2YzViNmEwZmRlYzQ2Njg5NjE3OTQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVPdXRPZk1lbW9yeUVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8
d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VU91dE9mTWVtb3J5RXJyb3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVU91dE9mTWVt
b3J5RXJyb3I+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVT3V0T2ZNZW1vcnlF
cnJvcik7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4ODE2NTU0
MzU3MTIzMTA1YjZlOWU3Yzg4MzM0MWZjMmJkODI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVQaXBlbGluZTo6
fkdQVVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTQyZWU4ZDdhM2I3ZWZmMTk5MDZlOTUwMDgxMGYzNDQyYzNjZWI0NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VVBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmU+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5HUFVQaXBlbGluZSgpOwotCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1
dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShU
b1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6R1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBwaXBlbGluZS5wcmVkaWNhdGU7IH0g
XAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1ZDEyMmJhOTM2ZGY0ZDAwNmViNjEzZTk2MTY5NjYwYzExZjk5ZDQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8R1BVUGlwZWxpbmVM
YXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2IxOTkzYTllMmYwMGI0MmU0Mzg0MzE3Y2E2NWRhNGVkNGRlYTFlYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IEdQVVBpcGVsaW5lTGF5b3V0
OjpjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVQaXBlbGluZUxheW91dChXVEZNb3ZlKGRlc2NyaXB0
b3IuYmluZEdyb3VwTGF5b3V0cykpKTsKLX0KLQotR1BVUGlwZWxpbmVMYXlvdXQ6OkdQVVBpcGVs
aW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mJiBsYXlvdXRz
KQotICAgIDogbV9iaW5kR3JvdXBMYXlvdXRzKFdURk1vdmUobGF5b3V0cykpCi17Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlv
dXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxh
eW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk5OTQ2ZmNiYTAxMmNjZWQ0
NmE3ZjE3MjM5Mjk2NzQ1OTE4ZmMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBl
bGluZUxheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVBpcGVs
aW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmVMYXlvdXQ+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yJiYpOwotCi0gICAgY29uc3QgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5k
R3JvdXBMYXlvdXQ+PiYgYmluZEdyb3VwTGF5b3V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEdy
b3VwTGF5b3V0czsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVBpcGVsaW5lTGF5b3V0
KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mJik7Ci0KLSAgICBWZWN0b3I8
UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IG1fYmluZEdyb3VwTGF5b3V0czsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4YTFlZTJjNzc1MWY0NzFmZDc1NDU4MTBiNzc4YTU0MzIyZjU4MjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IgewotICAgIFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3Vw
TGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTJjNzY3MjY3ODYyYTVlODAwN2ZkOGUzMzMxZGU3NmU2OWRlM2IxNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IFVTRShNRVRBTCkKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCIKLSNlbGlmIFVT
RShEQVdOKQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXNEYXduLmgiCi0jZWxzZQotI2Vycm9y
ICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSBmb3IgV2ViR1BVIgotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIw
OWZhNGEwNTI2MzM0ZjBmN2QzZjdkOWRlODkxMWVlZDljY2EwMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZl
cihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotewotICAgIG1fY29tbWFuZEJ1ZmZlci0+c2V0SXNF
bmNvZGluZ1Bhc3ModHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTcyNDRmMmVlMWZkY2Q1ZDFiMTczNzVjOWU0MTFk
MGY2NmRjNWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BV
UGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmluZEdyb3VwOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxp
bmU7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgZW5kUGFz
cygpOwotICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVkLCBHUFVCaW5kR3JvdXAmKTsKLQot
cHJvdGVjdGVkOgotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5k
QnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBs
YXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25z
dCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkg
PSAwOwotI2lmIFVTRShNRVRBTCkKLSAgICB2aXJ0dWFsIHZvaWQgdXNlUmVzb3VyY2UoY29uc3Qg
TVRMUmVzb3VyY2UgKiwgdW5zaWduZWQpID0gMDsKLQotICAgIC8vIFJlbmRlciBjb21tYW5kIGVu
Y29kZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0IE1U
TEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkg
eyB9Ci0gICAgLy8gQ29tcHV0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcHV0ZUJ1ZmZlcihj
b25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotI2VuZGlmIC8vIFVT
RShNRVRBTCkKLQotICAgIFJlZjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyN2MwNjI4ZWY3YTMwMzVlNTkyMjFmZWQ5ODdkNWY1N2RiMDdhZDE2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvckJhc2UgewotICAgIFN0cmluZyBlbnRyeVBvaW50OwotfTsKLQotc3RydWN0IEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvckJh
c2UgewotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcihSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmIG1vZHVsZSwgY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZSYg
YmFzZSkKLSAgICAgICAgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlKGJhc2Up
Ci0gICAgICAgICwgbW9kdWxlIHsgV1RGTW92ZShtb2R1bGUpIH0KLSAgICB7Ci0gICAgfQotCi0g
ICAgUmVmPEdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc0ZDUyNzg1M2EzNGFmZTAzNTNjNGY3ODc3OTljY2JkNDY2ZDhlYjEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIEdQVURldmljZTsK
LQotY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVRdWV1ZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
KTsKLQotICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVldWUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0KLQotICAgIHZvaWQgc3VibWl0KFZlY3RvcjxSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4+JiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHUFVRdWV1
ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiwgY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0
Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1ZXVlOwotICAgIFdlYWtQdHI8Y29uc3QgR1BV
RGV2aWNlPiBtX2RldmljZTsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgbV9wcmVzZW50
VGFzazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZWE2NGI0NTk0YWUxM2I0YzQ2ZDhlNWM2NmE3MjQ1YjcwMTE3OTY5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5jbHVkZSAiR1BVTG9hZE9w
LmgiCi0jaW5jbHVkZSAiR1BVU3RvcmVPcC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVTG9hZE9w
IGxvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0b3JlT3A7Ci0gICAgR1BVQ29sb3IgY2xlYXJDb2xv
ciB7IDAsIDAsIDAsIDEgfTsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoUmVm
PEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQmFzZSYpOwotCi0gICAgUmVmPEdQVVRleHR1cmU+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1
Y3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgR1BVTG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIEdQVVN0b3JlT3AgZGVwdGhTdG9yZU9wOwot
ICAgIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHN0ZW5jaWwgc3VwcG9y
dC4KLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3JCYXNlIHsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0dXJlPiBhdHRhY2htZW50
OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8R1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0g
ICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0NDNmNWQ0YzEyNDUwMGY4ZmUzYzUxMjg3N2Mw
ZTE1MzhhYmVjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVz
LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJH
UFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotCi1z
dHJ1Y3QgR1BVQ29sb3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLWNsYXNz
IEdQVVJlbmRlclBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiB0cnlD
cmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYp
OwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmU+JiYp
OwotICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYpOwotICAgIHZvaWQgc2V0
Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNldFNjaXNzb3JSZWN0KHVu
c2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwot
ICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoR1BVQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0KTsKLSAg
ICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxSZWY8
R1BVQnVmZmVyPj4mLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKTsKLSAgICB2b2lk
IGRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2ln
bmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsKLSAgICB2b2lkIGRyYXdJ
bmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2ln
bmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsK
LQotcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZl
cj4mJiwgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyJiYpOwotICAgIH5HUFVSZW5k
ZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcgotICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBs
YXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVFbmNv
ZGVyKCkgZmluYWwgeyBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgPSBudWxscHRyOyB9Ci0j
aWYgVVNFKE1FVEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwg
dW5zaWduZWQgdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0IE1U
TEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGZpbmFsOwotICAg
IHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIgb2Zm
c2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BVQnVmZmVyPiBtX2lu
ZGV4QnVmZmVyOwotICAgIHVpbnQ2NF90IG1faW5kZXhCdWZmZXJPZmZzZXQ7Ci0jZW5kaWYgLy8g
VVNFKE1FVEFMKQotCi0gICAgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyIG1fcGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlcjsKLSAgICBSZWZQdHI8Y29uc3QgR1BVUmVuZGVyUGlwZWxp
bmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzgxNmEyNDFjMDQ1MzA4OWIwYmFhMTUwMWI4OTU3YjRiMmVjOGZhMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlw
ZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotY2xhc3MgR1BVUmVu
ZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZp
cnR1YWwgfkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIGJvb2wgaXNSZW5kZXJQ
aXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgcmVjb21waWxlKGNv
bnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0
YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFn
bWVudFN0YWdlKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
ZGVwdGhTdGVuY2lsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoU3RlbmNpbFN0YXRlLmdl
dCgpOyB9Ci0jZW5kaWYKLSAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lKiBwbGF0Zm9ybVJlbmRl
clBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgp
OyB9Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdCB7
IHJldHVybiBtX3ByaW1pdGl2ZVRvcG9sb2d5OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVJbmRl
eEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4Rm9ybWF0OyB9Ci0K
LXByaXZhdGU6Ci0jaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0
cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRy
JiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0Piwg
Y29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4g
bV9kZXB0aFN0ZW5jaWxTdGF0ZTsKLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0gICAgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZTsKLSAgICBHUFVQ
cmltaXRpdmVUb3BvbG9neSBtX3ByaW1pdGl2ZVRvcG9sb2d5OwotICAgIHN0ZDo6b3B0aW9uYWw8
R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdl
YiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+
IG1fbGF5b3V0OwotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgbV9yZW5kZXJE
ZXNjcmlwdG9yQmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZSwgaXNS
ZW5kZXJQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Rl
MmRhOWFhYTMzNmE3YWYwMWQ5MzI4MmRlZmUwMmFjOWE3MzkzMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVUHJpbWl0
aXZlVG9wb2xvZ3kgewotICAgIFBvaW50TGlzdCwKLSAgICBMaW5lTGlzdCwKLSAgICBMaW5lU3Ry
aXAsCi0gICAgVHJpYW5nbGVMaXN0LAotICAgIFRyaWFuZ2xlU3RyaXAKLX07Ci0KLXN0cnVjdCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQcmltaXRpdmVUb3BvbG9n
eSBwcmltaXRpdmVUb3BvbG9neTsKLSAgICBWZWN0b3I8R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+
IGNvbG9yU3RhdGVzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNj
cmlwdG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3Ig
dmVydGV4SW5wdXQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDog
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSB7Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0cjxHUFVQaXBlbGluZUxh
eW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleCwg
c3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnQs
IGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgICAgIDog
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUobGF5b3V0KSB9Ci0gICAgICAgICwg
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIHZlcnRleFN0
YWdlKFdURk1vdmUodmVydGV4KSkKLSAgICAgICAgLCBmcmFnbWVudFN0YWdlKFdURk1vdmUoZnJh
Z21lbnQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IgdmVydGV4U3RhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmEwYmQxMDY2YjAxYTA2M2NmYzM4NmNiYzFk
ZDRjOTNkODRiMTYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDxvcHRpb25hbD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVBvd2VyUHJlZmVyZW5jZSA6
IGJvb2wgeyBMb3dQb3dlciwgSGlnaFBlcmZvcm1hbmNlIH07Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUG93ZXJQcmVmZXJlbmNlPiBw
b3dlclByZWZlcmVuY2U7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU2FtcGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWE2
NDQ2OWZjY2ViNjc0ZDg5ZmVlYTBiYmExMmNlM2ZmM2YyYTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTYW1wbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmlj
ZTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVTYW1wbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVU2FtcGxlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8R1BVU2FtcGxlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVNhbXBs
ZXJEZXNjcmlwdG9yJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXIqIHBsYXRmb3JtU2FtcGxlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1TYW1wbGVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgR1BVU2FtcGxlcihQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3Jt
U2FtcGxlclNtYXJ0UHRyIG1fcGxhdGZvcm1TYW1wbGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzcwZmVkZDQwOWNmZTJiZDM3NjAxNTgy
NjZlMDAzNDAxNzExYTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXJEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcGFyZUZ1
bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVBZGRyZXNz
TW9kZSB7Ci0gICAgQ2xhbXBUb0VkZ2UsCi0gICAgUmVwZWF0LAotICAgIE1pcnJvclJlcGVhdCwK
LX07Ci0KLWVudW0gY2xhc3MgR1BVRmlsdGVyTW9kZSB7Ci0gICAgTmVhcmVzdCwKLSAgICBMaW5l
YXIsCi19OwotCi1zdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3IgewotICAgIEdQVUFkZHJlc3NN
b2RlIGFkZHJlc3NNb2RlVSB7IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9OwotICAgIEdQ
VUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlViB7IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9
OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyB7IEdQVUFkZHJlc3NNb2RlOjpDbGFt
cFRvRWRnZSB9OwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmlsdGVyIHsgR1BVRmlsdGVyTW9kZTo6
TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWluRmlsdGVyIHsgR1BVRmlsdGVyTW9kZTo6
TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFwRmlsdGVyIHsgR1BVRmlsdGVyTW9k
ZTo6TmVhcmVzdCB9OwotICAgIGZsb2F0IGxvZE1pbkNsYW1wIHsgMCB9OwotICAgIGZsb2F0IGxv
ZE1heENsYW1wIHsgMHhmZmZmZmZmZiB9OwotICAgIHVuc2lnbmVkIG1heEFuaXNvdHJvcHkgeyAx
IH07Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbiB7IEdQVUNvbXBhcmVG
dW5jdGlvbjo6TmV2ZXIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU1YTU2ZDExODY5YTJmOTMwOTk3MzE0ZmEwZDY2NDFlYTIwMGMxOGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3ImKTsKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAg
ICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3dobHNsTW9kdWxlID8gbnVsbHB0ciA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUuZ2V0
KCk7IH0KLSAgICBjb25zdCBXSExTTDo6U2hhZGVyTW9kdWxlKiB3aGxzbE1vZHVsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2hsc2xNb2R1bGUuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYpOwotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVTaGFkZXJNb2R1bGUoVW5pcXVlUmVmPFdITFNM
OjpTaGFkZXJNb2R1bGU+JiYgd2hsc2xNb2R1bGUpOwotI2VuZGlmCi0KLSAgICBQbGF0Zm9ybVNo
YWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7Ci0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXSExTTDo6U2hhZGVyTW9kdWxlPiBt
X3dobHNsTW9kdWxlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZmUwYWQ1YTg3YjMyYzQ4YWUzNGJkNzZkMmYx
YzU5ODFiZTdkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYyNzgzMjQ4OTEzZTQ1MWRjMzZhNDdhYjVmMGUyM2NhMjRhZGMzMGYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVTdG9yZU9wIHsKLSAgICBT
dG9yZQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVT
d2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNzc0N2UzZTdlMjZk
ZGJlMTI3MDcwMDA4MGRhZDIwMTRhYWZhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGxhdGZv
cm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotLy8gUGxhdGZvcm1MYXllciBpbXBsZW1lbnRhdGlvbiBuZWVkZWQgb3RoZXJ3aXNlIGNv
bXBpbGluZyBkZXJpdmVkIHNvdXJjZXMgd2lsbCBmYWlsLgotI2lmIFVTRShOSUNPU0lBKQotI2lu
Y2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCi0jZWxpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVy
LmgiCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VURldmljZTsKLQotc3RydWN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3Mg
R1BVVGV4dHVyZUZvcm1hdDsKLQotY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hh
aW4+IHRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlHZXRDdXJyZW50VGV4dHVy
ZSgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIFJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IHRh
a2VEcmF3YWJsZSgpOwotI2VuZGlmCi0KLSAgICAvLyBGb3IgR1BVQ2FudmFzQ29udGV4dC4KLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHByZXNl
bnQoKTsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICB2b2lk
IGRlc3Ryb3koKSB7IG1fY3VycmVudERyYXdhYmxlID0gbnVsbHB0cjsgfQotCi1wcml2YXRlOgot
ICAgIEdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYsIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRy
IG1fcGxhdGZvcm1Td2FwTGF5ZXI7Ci0gICAgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyIG1fY3Vy
cmVudERyYXdhYmxlOwotICAgIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3Vz
YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2NTcwNDIwNDYzY2FhYmExNWZlN2Q3MzE2MmFhOGVhN2JkNDgxZjkzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZv
cm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBzdGF0aWNf
Y2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0
QXR0YWNobWVudCkgfTsKLX07Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIDogR1BV
U3dhcENoYWluRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IoUmVm
PEdQVURldmljZT4mJiBncHVEZXZpY2UsIGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNl
JiBiYXNlKQotICAgICAgICA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlKGJhc2UpCi0gICAg
ICAgICwgZGV2aWNlKFdURk1vdmUoZ3B1RGV2aWNlKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IFJlZjxHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWVmY2Q1NmY0MTg1NTgzYmY5MGM2ZGE3YjQ0YWM3ZjZjMDRiODUwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RGV2aWNlOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvcjsKLQotY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmU+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVz
Jik7Ci0gICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21h
cnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsKLQotICAgIFBsYXRm
b3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVRl
eHR1cmUuZ2V0KCk7IH0KLSAgICBib29sIGlzQ29weVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7IH0KLSAg
ICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24pOyB9Ci0gICAgYm9vbCBp
c091dHB1dEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpOyB9Ci0gICAgYm9vbCBpc1JlYWRP
bmx5KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSk7
IH0KLSAgICBib29sIGlzU2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMo
R1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCk7IH0KLSAgICBib29sIGlzU3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6
U3RvcmFnZSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVVzYWdlOyB9Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlRGVm
YXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBtX3BsYXRmb3JtVGV4dHVy
ZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBsYXRm
b3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7
Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKLQotICAg
IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVuc2lnbmVk
IG1fcGxhdGZvcm1Vc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMmE2ODVhMjE5ZjMyOWI2MDcwNGQzZTY1NjIzYjVhNmFiN2VkZTIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUV4dGVudDNELmgiCi0jaW5jbHVkZSAiR1BV
VGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZURpbWVuc2lvbiB7Ci0gICAgXzFk
LAotICAgIF8yZCwKLSAgICBfM2QKLX07Ci0gICAgCi1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0
b3IgewotICAgIEdQVUV4dGVudDNEIHNpemU7Ci0gICAgdW5zaWduZWQgbWlwTGV2ZWxDb3VudDsK
LSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudDsKLSAgICBHUFVUZXh0dXJlRGltZW5zaW9uIGRpbWVu
c2lvbjsKLSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICBHUFVUZXh0dXJlVXNhZ2VG
bGFncyB1c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjZkMGZkYTE2NmI4MzAzODg4NWZiMTIyZGM0YjdlM2E4NmE0YTllMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXQgewotICAg
IFJnYmE4dW5vcm0sCi0gICAgUmdiYTh1aW50LAotICAgIEJncmE4dW5vcm0sCi0gICAgRGVwdGgz
MmZsb2F0U3RlbmNpbDgsCi0gICAgQmdyYTh1bm9ybVNSR0IsCi0gICAgUmdiYTE2ZmxvYXQsCi19
OwotCi11c2luZyBQbGF0Zm9ybVRleHR1cmVGb3JtYXQgPSB1bnNpZ25lZDsKLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjQzZTZmYmFlOWVlNDA5NTFlODU0OGExNmE4YmQ3MjlhZDg4YmFkNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotdXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKLSAgICAKLWNsYXNz
IEdQVVRleHR1cmVVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmVVc2FnZT4gewot
cHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVUZXh0dXJlVXNhZ2VGbGFncyB7Ci0g
ICAgICAgIENvcHlTb3VyY2UgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIENvcHlEZXN0aW5hdGlv
biAgPSAxIDw8IDEsCi0gICAgICAgIFNhbXBsZWQgICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAg
IFN0b3JhZ2UgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAgIE91dHB1dEF0dGFjaG1lbnQgPSAx
IDw8IDQsCi0gICAgICAgIE1heGltdW1WYWx1ZSAgICAgPSAxIDw8IDUsCi0gICAgfTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ5YTVjNzA3NGM0YWU2MzNlOGU2MDEyYzVjYzg3Njhi
ZmI0ZjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkdQVVRleHR1cmVGb3JtYXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9ybVRl
eHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVU
ZXh0dXJlRm9ybWF0KTsKLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBsYXRmb3JtQ29tcGFyZUZ1
bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbik7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTdlNTQ1NDYxMzg2Y2Zm
Y2Q0MTA4NzdkYzM2MTRmNmRmMTgyODc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVWYWxpZGF0aW9uRXJyb3Iu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQ
VVZhbGlkYXRpb25FcnJvcj4gR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVZhbGlkYXRpb25FcnJv
cihtZXNzYWdlKSk7Ci19Ci0KLUdQVVZhbGlkYXRpb25FcnJvcjo6R1BVVmFsaWRhdGlvbkVycm9y
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQotewotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRp
b25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlk
YXRpb25FcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjI1YWMyMDdmY2Ez
YmVkYmU2MTE1NWE3NTk3YWRhNTU2NzM4NWUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVWYWxpZGF0aW9uRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3
dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVWYWxpZGF0
aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVWYWxpZGF0aW9uRXJyb3I+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdQVVZhbGlkYXRpb25FcnJvcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVZhbGlkYXRpb25FcnJvcihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1fbWVzc2FnZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDNhYzYzNWU4ZTVkNjc5ODQyNmNlNWNmZGJmZWNkZWUzMTI5ODA1My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotZW51bSBjbGFzcyBHUFVWZXJ0ZXhGb3JtYXQgewotICAgIEZsb2F0LAotICAgIEZs
b2F0MiwKLSAgICBGbG9hdDMsCi0gICAgRmxvYXQ0LAotfTsKLQotc3RydWN0IEdQVVZlcnRleEF0
dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHVpbnQ2NF90IG9mZnNldDsKLSAgICBHUFVWZXJ0ZXhG
b3JtYXQgZm9ybWF0OwotICAgIHVuc2lnbmVkIHNoYWRlckxvY2F0aW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGJhM2Yy
MzU0ODQxZDhhZDRlZThmMTI3MjJmNDIwMDgyNDRmMTAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUlucHV0
U3RlcE1vZGUgewotICAgIFZlcnRleCwKLSAgICBJbnN0YW5jZSwKLX07Ci0KLXN0cnVjdCBHUFVW
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRfdCBzdHJpZGU7Ci0gICAgR1BVSW5w
dXRTdGVwTW9kZSBzdGVwTW9kZTsKLSAgICBWZWN0b3I8R1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcj4gYXR0cmlidXRlU2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyMzJmZTU5OTE1ZWY1YTkxYThhYTVhYTU4ZTc0YzA2
NDM5ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlw
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1lbnVtIGNsYXNzIEdQVUluZGV4Rm9ybWF0IHsKLSAgICBVaW50MTYsCi0gICAgVWlu
dDMyLAotfTsKLQotc3RydWN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRvciB7Ci0gICAgR1BVSW5k
ZXhGb3JtYXQgaW5kZXhGb3JtYXQ7Ci0gICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8R1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJp
bmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgzNWU3ZDQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVCaW5kR3JvdXBBbGxv
Y2F0b3I+IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKEdQVUVycm9yU2NvcGVzJiBlcnJv
cnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQmluZEdyb3VwQWxsb2NhdG9yKGVy
cm9ycykpOwotfQotCi1HUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJpbmRHcm91cEFsbG9jYXRv
cihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotICAgIDogbV9lcnJvclNjb3BlcyhtYWtlUmVmKGVy
cm9ycykpCi17Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXN0ZDo6b3B0aW9uYWw8R1BVQmluZEdy
b3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHM+IEdQVUJpbmRHcm91cEFsbG9jYXRv
cjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRM
QXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKQot
ewotICAgIGlkPE1UTERldmljZT4gZGV2aWNlID0gbmlsOwotICAgIGF1dG8gY2hlY2tlZE9mZnNl
dCA9IENoZWNrZWQ8TlNVSW50ZWdlcj4obV9sYXN0T2Zmc2V0KTsKLQotICAgIGlmICh2ZXJ0ZXgp
IHsKLSAgICAgICAgZGV2aWNlID0gdmVydGV4LmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNl
dCArPSB2ZXJ0ZXguZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0gICAgaWYgKGZyYWdtZW50KSB7Ci0g
ICAgICAgIGRldmljZSA9IGZyYWdtZW50LmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNldCAr
PSBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLSAgICBpZiAoY29tcHV0ZSkgewotICAg
ICAgICBkZXZpY2UgPSBjb21wdXRlLmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNldCArPSBj
b21wdXRlLmVuY29kZWRMZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gTm8gYXJndW1lbnRzOyBub3Ro
aW5nIHRvIGJlIGRvbmUuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICBpZiAoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgbV9lcnJv
clNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsK
LSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBhdXRvIG5ld09mZnNldCA9IGNoZWNr
ZWRPZmZzZXQudmFsdWUoKTsKLQotICAgIGlmIChtX2FyZ3VtZW50QnVmZmVyICYmIG5ld09mZnNl
dCA+IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKSB7Ci0gICAgICAgIGlmICghcmVhbGxv
Y2F0ZShuZXdPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9IGVsc2UgaWYg
KCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgIC8vIEJhc2VkIG9mZiBtaW1pbXVtIGFsbG9j
YXRpb24gZm9yIGEgc2hhcmVkLW1lbW9yeSBNVExCdWZmZXIgb24gbWFjT1MuCi0gICAgICAgIE5T
VUludGVnZXIgbWluaW11bVNpemUgPSA0MDk2OwotICAgICAgICBpZiAobWluaW11bVNpemUgPCBu
ZXdPZmZzZXQpCi0gICAgICAgICAgICBtaW5pbXVtU2l6ZSA9IG5ld09mZnNldDsKLQotICAgICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9hcmd1bWVudEJ1ZmZlciA9
IGFkb3B0TlMoW2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm1pbmltdW1TaXplIG9wdGlvbnM6
MF0pOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYgKCFt
X2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVy
cm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFyZ3VtZW50QnVmZmVyT2Zmc2V0cyBvZmZz
ZXRzOwotCi0gICAgLy8gTWF0aCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24gaXMgZ3VhcmRlZCBh
Z2FpbnN0IG92ZXJmbG93IGJ5IG5ld09mZnNldCBjYWxjdWxhdGlvbi4KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICh2ZXJ0ZXgpIHsKLSAgICAgICAgb2Zmc2V0cy52
ZXJ0ZXggPSBtX2xhc3RPZmZzZXQ7Ci0gICAgICAgIFt2ZXJ0ZXggc2V0QXJndW1lbnRCdWZmZXI6
bV9hcmd1bWVudEJ1ZmZlci5nZXQoKSBvZmZzZXQ6Km9mZnNldHMudmVydGV4XTsKLSAgICB9Ci0g
ICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIG9mZnNldHMuZnJhZ21lbnQgPSAodmVydGV4ID8g
dmVydGV4LmVuY29kZWRMZW5ndGggOiAwKSArIG1fbGFzdE9mZnNldDsKLSAgICAgICAgW2ZyYWdt
ZW50IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0OipvZmZz
ZXRzLmZyYWdtZW50XTsKLSAgICB9Ci0gICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgb2Zmc2V0
cy5jb21wdXRlID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3RoIDogMCkgKyAoZnJhZ21l
bnQgPyBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBtX2xhc3RPZmZzZXQ7Ci0gICAgICAg
IFtjb21wdXRlIHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0
OipvZmZzZXRzLmNvbXB1dGVdOwotICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIG1fbGFzdE9mZnNldCA9IG5ld09mZnNldDsKLSAgICArK21fbnVtQmluZEdyb3Vw
czsKLQotICAgIHJldHVybiBvZmZzZXRzOwotfQotCi0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi0v
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY1Nywg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY1OCBPcHRpbWl6ZSBy
ZWFsbG9jYXRpb24gYW5kIHJlc2V0IGJlaGF2aW9yLgotYm9vbCBHUFVCaW5kR3JvdXBBbGxvY2F0
b3I6OnJlYWxsb2NhdGUoTlNVSW50ZWdlciBuZXdPZmZzZXQpCi17Ci0gICAgTVRMQnVmZmVyICpu
ZXdCdWZmZXIgPSBuaWw7Ci0KLSAgICBhdXRvIG5ld0xlbmd0aCA9IENoZWNrZWQ8TlNVSW50ZWdl
cj4obV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5sZW5ndGgpOwotICAgIHdoaWxlIChuZXdMZW5ndGgg
PCBuZXdPZmZzZXQpIHsKLSAgICAgICAgbmV3TGVuZ3RoICs9IG5ld0xlbmd0aCAvIDRVOwotCi0g
ICAgICAgIGlmIChuZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAgICAgICBuZXdM
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPE5TVUludGVnZXI+OjptYXgoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBuZXdCdWZmZXIgPSBbbV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5kZXZpY2Ug
bmV3QnVmZmVyV2l0aExlbmd0aDpuZXdMZW5ndGgudmFsdWUoKSBvcHRpb25zOjBdOwotICAgIG1l
bWNweShuZXdCdWZmZXIuY29udGVudHMsIG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkuY29udGVudHMs
IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbmV3QnVmZmVyKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2FyZ3VtZW50QnVmZmVyID0gYWRvcHROUyhu
ZXdCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdQVUJpbmRHcm91cEFsbG9j
YXRvcjo6dHJ5UmVzZXQoKQotewotICAgIC0tbV9udW1CaW5kR3JvdXBzOwotICAgIAotICAgIEFT
U0VSVChtX251bUJpbmRHcm91cHMgPiAtMSk7Ci0KLSAgICBpZiAoIW1fbnVtQmluZEdyb3Vwcykg
ewotICAgICAgICBtX2FyZ3VtZW50QnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9sYXN0T2Zm
c2V0ID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWFjZjc4NmJiYmVlN2E5MWEwN2EzNDZl
N2YwMWU0ZTFjMDBkZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRH
cm91cExheW91dE1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cExheW91dC5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTERhdGFUeXBlIE1UTERhdGFUeXBlRm9y
QmluZGluZ1R5cGUoR1BVQmluZGluZ1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAgICByZXR1cm4gTVRMRGF0
YVR5cGVTYW1wbGVyOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlNhbXBsZWRUZXh0dXJlOgot
ICAgICAgICByZXR1cm4gTVRMRGF0YVR5cGVUZXh0dXJlOwotICAgIGNhc2UgR1BVQmluZGluZ1R5
cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1VuaWZv
cm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICBj
YXNlIEdQVUJpbmRpbmdUeXBlOjpEeW5hbWljU3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IE1UTERhdGFUeXBlUG9pbnRlcjsKLSAgICB9Ci19Ci0KLXVzaW5nIEFyZ3VtZW50QXJyYXkgPSBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnREZXNjcmlwdG9yICo+PjsKLXN0YXRp
YyB2b2lkIGFwcGVuZEFyZ3VtZW50VG9BcnJheShBcmd1bWVudEFycmF5JiBhcnJheSwgUmV0YWlu
UHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnQpCi17Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgaWYgKCFhcnJheSkKLSAgICAgICAgYXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czphcmd1bWVudC5nZXQoKSwg
bmlsXSk7Ci0gICAgZWxzZQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmFyZ3VtZW50LmdldCgp
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
TVRMQXJndW1lbnRFbmNvZGVyPiB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UsIEFyZ3VtZW50QXJyYXkgYXJyYXkpCi17Ci0gICAgUmV0YWluUHRyPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gZW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIGVuY29kZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdB
cmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOmFycmF5LmdldCgpXSk7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghZW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExB
cmd1bWVudEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBy
ZXR1cm4gZW5jb2RlcjsKLX07Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMQXJndW1lbnREZXNjcmlw
dG9yPiBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGUgZGF0YVR5cGUsIE5TVUludGVnZXIg
aW5kZXgpCi17Ci0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gbXRsQXJndW1l
bnQ7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsQXJndW1lbnQgPSBh
ZG9wdE5TKFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEzODQgVGhpcyBuZWVkcyB0byBzZXQgdGhlICJ0ZXh0dXJlVHlwZSIgZmll
bGQKLSAgICBbbXRsQXJndW1lbnQgc2V0RGF0YVR5cGU6ZGF0YVR5cGVdOwotICAgIFttdGxBcmd1
bWVudCBzZXRJbmRleDppbmRleF07Ci0gICAgcmV0dXJuIG10bEFyZ3VtZW50OwotfQotCi1SZWZQ
dHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBJbnZhbGlk
IE1UTERldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgQXJn
dW1lbnRBcnJheSB2ZXJ0ZXhBcmdzLCBmcmFnbWVudEFyZ3MsIGNvbXB1dGVBcmdzLCB2ZXJ0ZXhM
ZW5ndGhzLCBmcmFnbWVudExlbmd0aHMsIGNvbXB1dGVMZW5ndGhzOwotICAgIEJpbmRpbmdzTWFw
VHlwZSBiaW5kaW5nc01hcDsKLQotICAgIHVuc2lnbmVkIGludGVybmFsTmFtZSA9IDA7Ci0gICAg
dW5zaWduZWQgaW50ZXJuYWxMZW5ndGhCYXNlID0gZGVzY3JpcHRvci5iaW5kaW5ncy5zaXplKCk7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBiaW5kaW5nIDogZGVzY3JpcHRvci5iaW5kaW5ncykgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OwotICAgICAgICBhdXRv
IGludGVybmFsRGV0YWlscyA9IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFs
QmluZGluZ0RldGFpbHMgewotICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgICAgICAg
ICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFzZSsrOwotICAgICAgICAgICAgICAg
IHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgeyAqZXh0cmFJbmRleCB9
OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1VuaWZvcm1CdWZmZXI6
Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFzZSsrOwotICAg
ICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVm
ZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlNh
bXBsZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxl
ciB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVkVGV4dHVyZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVy
ZSB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTdG9yYWdlQnVmZmVyOgot
ICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyIHsgKmV4
dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGJpbmRpbmcudHlwZSA9PSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpOwot
ICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZl
ciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pKCk7Ci0gICAgICAg
IEJpbmRpbmcgYmluZGluZ0RldGFpbHMgPSB7IGJpbmRpbmcsIGludGVybmFsTmFtZSsrLCBXVEZN
b3ZlKGludGVybmFsRGV0YWlscykgfTsKLSAgICAgICAgaWYgKCFiaW5kaW5nc01hcC5hZGQoYmlu
ZGluZy5iaW5kaW5nLCBiaW5kaW5nRGV0YWlscykpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBEdXBsaWNhdGUgYmluZGluZyAldSBm
b3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yISIsIGJpbmRpbmcuYmluZGluZyk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFJldGFp
blB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1lbnREZXNjcmlw
dG9yKE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoYmluZGluZy50eXBlKSwgYmluZGluZ0RldGFp
bHMuaW50ZXJuYWxOYW1lKTsKLQotICAgICAgICBpZiAoIW10bEFyZ3VtZW50KSB7Ci0gICAgICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogVW5hYmxl
IHRvIGNyZWF0ZSBNVExBcmd1bWVudERlc2NyaXB0b3IgZm9yIGJpbmRpbmcgJXUhIiwgYmluZGlu
Zy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYXV0byBhZGRJbmRpY2VzID0gWyZdKEFyZ3VtZW50QXJyYXkmIGFyZ3MsIEFyZ3VtZW50
QXJyYXkmIGxlbmd0aHMpIC0+IGJvb2wgewotICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRUb0Fy
cmF5KGFyZ3MsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAgIGlmIChleHRyYUluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gbXRsQXJndW1l
bnQgPSBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGVVSW50MiwgKmV4dHJhSW5kZXgpOwot
ICAgICAgICAgICAgICAgIGlmICghbXRsQXJndW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBj
cmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9yIGZvciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmlu
ZGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRUb0FycmF5KGxlbmd0aHMsIG10bEFy
Z3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpG
bGFnczo6VmVydGV4KSAmJiAhYWRkSW5kaWNlcyh2ZXJ0ZXhBcmdzLCB2ZXJ0ZXhMZW5ndGhzKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJp
bGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6RnJhZ21lbnQpICYmICFhZGRJbmRpY2VzKGZy
YWdtZW50QXJncywgZnJhZ21lbnRMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFn
czo6Q29tcHV0ZSkgJiYgIWFkZEluZGljZXMoY29tcHV0ZUFyZ3MsIGNvbXB1dGVMZW5ndGhzKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFt2ZXJ0ZXhBcmdzIGFkZE9iamVjdHNGcm9tQXJyYXk6dmVydGV4
TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2ZyYWdtZW50QXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmZy
YWdtZW50TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2NvbXB1dGVBcmdzIGFkZE9iamVjdHNGcm9tQXJy
YXk6Y29tcHV0ZUxlbmd0aHMuZ2V0KCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleCwgZnJhZ21lbnQsIGNv
bXB1dGU7Ci0KLSAgICBpZiAodmVydGV4QXJncyAmJiAhKHZlcnRleCA9IHRyeUNyZWF0ZU10bEFy
Z3VtZW50RW5jb2RlcihkZXZpY2UsIHZlcnRleEFyZ3MpKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgaWYgKGZyYWdtZW50QXJncyAmJiAhKGZyYWdtZW50ID0gdHJ5Q3JlYXRlTXRsQXJn
dW1lbnRFbmNvZGVyKGRldmljZSwgZnJhZ21lbnRBcmdzKSkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmIChjb21wdXRlQXJncyAmJiAhKGNvbXB1dGUgPSB0cnlDcmVhdGVNdGxBcmd1
bWVudEVuY29kZXIoZGV2aWNlLCBjb21wdXRlQXJncykpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmluZEdyb3VwTGF5b3V0KFdURk1vdmUo
YmluZGluZ3NNYXApLCBXVEZNb3ZlKHZlcnRleCksIFdURk1vdmUoZnJhZ21lbnQpLCBXVEZNb3Zl
KGNvbXB1dGUpKSk7Ci19Ci0KLUdQVUJpbmRHcm91cExheW91dDo6R1BVQmluZEdyb3VwTGF5b3V0
KEJpbmRpbmdzTWFwVHlwZSYmIGJpbmRpbmdzTWFwLCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNv
ZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBmcmFnbWVudCwg
UmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKQotICAgIDogbV92ZXJ0ZXhF
bmNvZGVyKFdURk1vdmUodmVydGV4KSkKLSAgICAsIG1fZnJhZ21lbnRFbmNvZGVyKFdURk1vdmUo
ZnJhZ21lbnQpKQotICAgICwgbV9jb21wdXRlRW5jb2RlcihXVEZNb3ZlKGNvbXB1dGUpKQotICAg
ICwgbV9iaW5kaW5nc01hcChXVEZNb3ZlKGJpbmRpbmdzTWFwKSkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5k
R3JvdXBNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA2OThiMTlhZWNi
ZjJlOTQ5ODM4ZThjNjFkZGRkMjlmMDU5ZTFiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQmluZEdyb3Vw
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0
b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbXBvcnQgIkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cExheW91dC5oIgotI2ltcG9y
dCAiR1BVU2FtcGxlci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJp
bmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShm
dW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEdQ
VUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJl
c291cmNlIGlzIG5vdCBhIGJ1ZmZlciB0eXBlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIGF1dG8mIGJ1ZmZlckJpbmRpbmcgPSBXVEY6
OmdldDxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSk7Ci0gICAgaWYgKCFidWZmZXJCaW5kaW5n
LmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgTVRMQnVmZmVyIGluIEdQVUJ1ZmZlckJpbmRpbmchIiwgZnVuY3Rpb25OYW1lKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgaWYgKCFpc0luQm91bmRzPE5T
VUludGVnZXI+KGJ1ZmZlckJpbmRpbmcuc2l6ZSkgfHwgYnVmZmVyQmluZGluZy5zaXplID4gYnVm
ZmVyQmluZGluZy5idWZmZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEdQVUJ1ZmZlckJpbmRpbmcgc2l6ZSBpcyB0b28gbGFyZ2UhIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNp
emUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgaWYgKCFp
c0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcub2Zmc2V0KSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IEJ1ZmZlciBvZmZzZXQgaXMgdG9vIGxhcmdlISIsIGZ1bmN0aW9uTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIHJldHVybiBHUFVC
dWZmZXJCaW5kaW5nIHsgYnVmZmVyQmluZGluZy5idWZmZXIuY29weVJlZigpLCBidWZmZXJCaW5k
aW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEJ1
ZmZlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50RW5jb2RlciwgY29uc3Qg
R1BVQnVmZmVyQmluZGluZyYgYnVmZmVyQmluZGluZywgdW5zaWduZWQgbmFtZSwgdW5zaWduZWQg
bGVuZ3RoTmFtZSkKLXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIGJ1ZmZlckJpbmRp
bmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIC8vIEJvdW5kcyBjaGVjayB3aGVuIGNvbnZlcnRpbmcgR1BVQnVmZmVyQmlu
ZGluZyBlbnN1cmVzIHRoYXQgTlNVSW50ZWdlciBjYXN0IG9mIHVpbnQ2NF90IG9mZnNldCBpcyBz
YWZlLgotICAgIFthcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZlckJpbmRpbmcuYnVmZmVy
LT5wbGF0Zm9ybUJ1ZmZlcigpIG9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihidWZmZXJC
aW5kaW5nLm9mZnNldCkgYXRJbmRleDpuYW1lXTsKLSAgICB2b2lkKiBsZW5ndGhQb2ludGVyID0g
W2FyZ3VtZW50RW5jb2RlciBjb25zdGFudERhdGFBdEluZGV4Omxlbmd0aE5hbWVdOwotICAgIG1l
bWNweShsZW5ndGhQb2ludGVyLCAmYnVmZmVyQmluZGluZy5zaXplLCBzaXplb2YodWludDY0X3Qp
KTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0gICAgCi1zdGF0aWMgTVRMU2Ft
cGxlclN0YXRlICp0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihjb25zdCBHUFVCaW5kaW5nUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYg
TE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IEdQVVNhbXBsZXI+PihyZXNv
dXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBHUFVT
YW1wbGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICBhdXRvIHNhbXBsZXJTdGF0ZSA9IFdURjo6Z2V0PFJlZjxjb25zdCBHUFVTYW1wbGVyPj4o
cmVzb3VyY2UpLT5wbGF0Zm9ybVNhbXBsZXIoKTsKLSAgICBpZiAoIXNhbXBsZXJTdGF0ZSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMU2FtcGxlclN0YXRlIGluIEdQVVNh
bXBsZXIgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0gICAgcmV0dXJuIHNhbXBsZXJTdGF0ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0U2Ft
cGxlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50RW5jb2RlciwgTVRMU2Ft
cGxlclN0YXRlICpzYW1wbGVyLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQoYXJndW1l
bnRFbmNvZGVyICYmIHNhbXBsZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRTYW1wbGVyU3RhdGU6c2FtcGxlciBhdEluZGV4Omlu
ZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBSZWZQdHI8
R1BVVGV4dHVyZT4gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUoY29uc3QgR1BVQmluZGluZ1Jlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotICAgIHsKLSNp
ZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgot
ICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8R1BVVGV4dHVyZT4+KHJlc291cmNl
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJlc291cmNlIGlzIG5vdCBhIEdQVVRleHR1
cmVWaWV3ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICBhdXRvJiB0ZXh0dXJlUmVmID0gV1RGOjpnZXQ8UmVmPEdQVVRleHR1cmU+PihyZXNvdXJj
ZSk7Ci0gICAgaWYgKCF0ZXh0dXJlUmVmLT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBpbiBHUFVUZXh0dXJlVmlldyBiaW5k
aW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAg
ICByZXR1cm4gdGV4dHVyZVJlZi5jb3B5UmVmKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFRleHR1
cmVPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1bWVudEVuY29kZXIsIE1UTFRleHR1
cmUgKnRleHR1cmUsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChhcmd1bWVudEVuY29k
ZXIgJiYgdGV4dHVyZSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
YXJndW1lbnRFbmNvZGVyIHNldFRleHR1cmU6dGV4dHVyZSBhdEluZGV4OmluZGV4XTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLVJlZlB0cjxHUFVCaW5kR3JvdXA+IEdQVUJp
bmRHcm91cDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZSgpIjsKLSAgICAK
LSAgICBNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleEVuY29kZXIgPSBkZXNjcmlwdG9yLmxheW91
dC0+dmVydGV4RW5jb2RlcigpOwotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnRFbmNv
ZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPmZyYWdtZW50RW5jb2RlcigpOwotICAgIE1UTEFyZ3Vt
ZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIgPSBkZXNjcmlwdG9yLmxheW91dC0+Y29tcHV0ZUVu
Y29kZXIoKTsKLQotICAgIGF1dG8gb2Zmc2V0cyA9IGFsbG9jYXRvci5hbGxvY2F0ZUFuZFNldEVu
Y29kZXJzKHZlcnRleEVuY29kZXIsIGZyYWdtZW50RW5jb2RlciwgY29tcHV0ZUVuY29kZXIpOwot
ICAgIGlmICghb2Zmc2V0cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgSGFz
aFNldDxSZWY8R1BVQnVmZmVyPj4gYm91bmRCdWZmZXJzOwotICAgIEhhc2hTZXQ8UmVmPEdQVVRl
eHR1cmU+PiBib3VuZFRleHR1cmVzOwotCi0gICAgLy8gU2V0IGVhY2ggcmVzb3VyY2Ugb24gZWFj
aCBNVExBcmd1bWVudEVuY29kZXIgaXQgc2hvdWxkIGJlIHZpc2libGUgb24uCi0gICAgY29uc3Qg
YXV0byYgbGF5b3V0QmluZGluZ3NNYXAgPSBkZXNjcmlwdG9yLmxheW91dC0+YmluZGluZ3NNYXAo
KTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNlQmluZGluZyA6IGRlc2NyaXB0b3IuYmlu
ZGluZ3MpIHsKLSAgICAgICAgYXV0byBpbmRleCA9IHJlc291cmNlQmluZGluZy5iaW5kaW5nOwot
ICAgICAgICBhdXRvIGxheW91dEl0ZXJhdG9yID0gbGF5b3V0QmluZGluZ3NNYXAuZmluZChpbmRl
eCk7Ci0gICAgICAgIGlmIChsYXlvdXRJdGVyYXRvciA9PSBsYXlvdXRCaW5kaW5nc01hcC5lbmQo
KSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCaW5kR3JvdXBCaW5kaW5nICV1
IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lLCBpbmRleCk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGxh
eW91dEJpbmRpbmcgPSBsYXlvdXRJdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGlmIChsYXlvdXRC
aW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ID09IEdQVVNoYWRlclN0YWdlOjpGbGFn
czo6Tm9uZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGJvb2wgaXNGb3JWZXJ0
ZXggPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYgR1BVU2hhZGVy
U3RhZ2U6OkZsYWdzOjpWZXJ0ZXg7Ci0gICAgICAgIGJvb2wgaXNGb3JGcmFnbWVudCA9IGxheW91
dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6Rmxh
Z3M6OkZyYWdtZW50OwotICAgICAgICBib29sIGlzRm9yQ29tcHV0ZSA9IGxheW91dEJpbmRpbmcu
ZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1
dGU7Ci0KLSAgICAgICAgaWYgKGlzRm9yVmVydGV4ICYmICF2ZXJ0ZXhFbmNvZGVyKSB7Ci0gICAg
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBhcmd1bWVudCBlbmNvZGVyIGZvdW5k
IGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQgJiYgIWZy
YWdtZW50RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyBmcmFnbWVu
dCBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwg
aW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzRm9yQ29tcHV0ZSAmJiAhY29tcHV0ZUVuY29kZXIpIHsKLSAgICAgICAgICAgIExPRyhX
ZWJHUFUsICIlczogTm8gY29tcHV0ZSBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5n
ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGhhbmRsZUJ1ZmZlciA9IFsmXSh1bnNpZ25lZCBp
bnRlcm5hbExlbmd0aE5hbWUpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0byBidWZmZXJSZXNv
dXJjZSA9IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKHJlc291cmNlQmluZGluZy5yZXNv
dXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlmICghYnVmZmVyUmVzb3VyY2UpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzRm9yVmVydGV4
KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVyLCAqYnVm
ZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lLCBpbnRlcm5hbExlbmd0aE5h
bWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgc2V0
QnVmZmVyT25FbmNvZGVyKGZyYWdtZW50RW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRC
aW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGlm
IChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0QnVmZmVyT25FbmNvZGVyKGNvbXB1
dGVFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lLCBp
bnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgYm91bmRCdWZmZXJzLmFkZFZvaWQoV1RG
TW92ZShidWZmZXJSZXNvdXJjZS0+YnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBXVEY6OnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciYgdW5pZm9ybUJ1
ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlQnVmZmVyKHVuaWZvcm1C
dWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXImIGR5bmFtaWNVbmlmb3JtQnVmZmVyKSAtPiBib29s
IHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIoZHluYW1pY1VuaWZvcm1CdWZmZXIu
aW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U2FtcGxlciYpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0byBzYW1wbGVyU3RhdGUgPSB0cnlH
ZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaXNGb3JWZXJ0ZXgpCi0gICAgICAgICAgICAg
ICAgc2V0U2FtcGxlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVyLCBzYW1wbGVyU3RhdGUsIGxheW91
dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50KQot
ICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIoZnJhZ21lbnRFbmNvZGVyLCBzYW1w
bGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChp
c0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0U2FtcGxlck9uRW5jb2Rlcihjb21wdXRl
RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U2FtcGxlZFRleHR1cmUmKSAtPiBib29sIHsKLSAgICAgICAgICAgIGF1dG8gdGV4dHVyZVJlc291
cmNlID0gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUocmVzb3VyY2VCaW5kaW5nLnJlc291cmNlLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCF0ZXh0dXJlUmVzb3VyY2UpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzRm9yVmVydGV4KQotICAg
ICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIodmVydGV4RW5jb2RlciwgdGV4dHVyZVJl
c291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUpOwot
ICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVy
ZU9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0
dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0Zv
ckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVyZU9uRW5jb2Rlcihjb21wdXRlRW5j
b2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0QmluZGluZy5p
bnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgYm91bmRUZXh0dXJlcy5hZGRWb2lkKHRleHR1cmVS
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyJiBzdG9yYWdlQnVm
ZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIoc3RvcmFnZUJ1
ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5
b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZlciYgZHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IGJvb2wg
ewotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUJ1ZmZlcihkeW5hbWljU3RvcmFnZUJ1ZmZlci5p
bnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9KSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbEJp
bmRpbmdEZXRhaWxzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmluZEdy
b3VwKFdURk1vdmUoKm9mZnNldHMpLCBhbGxvY2F0b3IsIFdURk1vdmUoYm91bmRCdWZmZXJzKSwg
V1RGTW92ZShib3VuZFRleHR1cmVzKSkpOwotfQotICAgIAotR1BVQmluZEdyb3VwOjpHUFVCaW5k
R3JvdXAoR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMmJiBvZmZz
ZXRzLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgSGFzaFNldDxSZWY8R1BVQnVm
ZmVyPj4mJiBidWZmZXJzLCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mJiB0ZXh0dXJlcykKLSAg
ICA6IG1fYXJndW1lbnRCdWZmZXJPZmZzZXRzKFdURk1vdmUob2Zmc2V0cykpCi0gICAgLCBtX2Fs
bG9jYXRvcihtYWtlUmVmKGFsbG9jYXRvcikpCi0gICAgLCBtX2JvdW5kQnVmZmVycyhXVEZNb3Zl
KGJ1ZmZlcnMpKQotICAgICwgbV9ib3VuZFRleHR1cmVzKFdURk1vdmUodGV4dHVyZXMpKQotewot
fQotCi1HUFVCaW5kR3JvdXA6On5HUFVCaW5kR3JvdXAoKQotewotICAgIG1fYWxsb2NhdG9yLT50
cnlSZXNldCgpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRkMDVkYThiMTMwM2JlOTNiZjBkNDkyNzhiMGRjZjljNmEyODQ5MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJH
UFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQ
VUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgY29uc3RleHByIGF1dG8gcmVhZE9ubHlGbGFncyA9IE9wdGlvblNldDxHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M+IHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpJbmRleCwgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSwg
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlIH07Ci0KLQotYm9vbCBHUFVCdWZmZXI6
OnZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIE9wdGlvblNldDxH
UFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMp
Ci17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJvclNj
b3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHVzYWdlLmNvbnRhaW5zQWxsKHsgR1BV
QnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBS
ZWFkIH0pKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiQnVm
ZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1SZWZQ
dHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShHUFVEZXZpY2UmIGRldmljZSwgY29u
c3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
IGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgLy8gTVRMQnVm
ZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAg
TlNVSW50ZWdlciBzaXplID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShkZXNjcmlw
dG9yLnNpemUsIHNpemUpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIs
IEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdz
Pjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXZhbGlkYXRlQnVmZmVyVXNh
Z2UoZGV2aWNlLCB1c2FnZSwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIC8vIGNvcHlCdWZmZXJUb0J1ZmZlciBjYWxscyByZXF1aXJlIDQtYnl0ZSBhbGlnbm1l
bnQuICJVbm1hcHBpbmciIGEgbWFwcGVkLW9uLWNyZWF0aW9uIEdQVUJ1ZmZlcgotICAgIC8vIHRo
YXQgaXMgb3RoZXJ3aXNlIHVubWFwcGFibGUgcmVxdWlyZXMgc3VjaCBhIGNvcHkgdG8gdXBsb2Fk
IGRhdGEuCi0gICAgaWYgKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBw
ZWQKLSAgICAgICAgJiYgIXVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdz
OjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pCi0gICAgICAgICYm
IGRlc2NyaXB0b3Iuc2l6ZSAlIDQpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJEYXRhIG11c3QgYmUgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMh
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBNZXRh
bCBiZXN0IHByYWN0aWNlczogUmVhZC1vbmx5IG9uZS10aW1lLXVzZSBkYXRhIGxlc3MgdGhhbiA0
IEtCIHNob3VsZCBub3QgYWxsb2NhdGUgYSBNVExCdWZmZXIgYW5kIGJlIHVzZWQgaW4gW01UTENv
bW1hbmRFbmNvZGVyIHNldCpCeXRlc10gY2FsbHMgaW5zdGVhZC4KLQotICAgIE1UTFJlc291cmNl
T3B0aW9ucyByZXNvdXJjZU9wdGlvbnMgPSBNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRD
YWNoZTsKLQotICAgIC8vIE1hcHBhYmxlIGJ1ZmZlcnMgdXNlIHNoYXJlZCBzdG9yYWdlIGFsbG9j
YXRpb24uCi0gICAgcmVzb3VyY2VPcHRpb25zIHw9IHVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFk
IH0pID8gTVRMUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA6IE1UTFJlc291cmNlU3RvcmFnZU1v
ZGVQcml2YXRlOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbXRsQnVmZmVyOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxCdWZmZXIgPSBhZG9wdE5TKFtk
ZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoTGVuZ3RoOnN0YXRpY19jYXN0PE5T
VUludGVnZXI+KGRlc2NyaXB0b3Iuc2l6ZSkgb3B0aW9uczpyZXNvdXJjZU9wdGlvbnNdKTsKLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsQnVmZmVyKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRP
Zk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10bEJ1ZmZlciksIGRldmljZSwgc2l6ZSwg
dXNhZ2UsIGlzTWFwcGVkKSk7Ci19Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKFJldGFpblB0cjxN
VExCdWZmZXI+JiYgYnVmZmVyLCBHUFVEZXZpY2UmIGRldmljZSwgc2l6ZV90IHNpemUsIE9wdGlv
blNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24g
aXNNYXBwZWQpCi0gICAgOiBtX3BsYXRmb3JtQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAs
IG1fZGV2aWNlKG1ha2VSZWYoZGV2aWNlKSkKLSAgICAsIG1fYnl0ZUxlbmd0aChzaXplKQotICAg
ICwgbV91c2FnZSh1c2FnZSkKLSAgICAsIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24oaXNNYXBwZWQg
PT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCkKLXsKLSAgICBtX3BsYXRmb3JtVXNh
Z2UgPSBNVExSZXNvdXJjZVVzYWdlUmVhZDsKLSAgICBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAg
IG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7Ci19Ci0KLUdQVUJ1ZmZl
cjo6fkdQVUJ1ZmZlcigpCi17Ci0gICAgZGVzdHJveShudWxscHRyKTsKLX0KLQotYm9vbCBHUFVC
dWZmZXI6OmlzUmVhZE9ubHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzYWdlLmNvbnRhaW5z
QW55KHJlYWRPbmx5RmxhZ3MpOwotfQotCi1HUFVCdWZmZXI6OlN0YXRlIEdQVUJ1ZmZlcjo6c3Rh
dGUoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybUJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IFN0YXRlOjpEZXN0cm95ZWQ7Ci0gICAgaWYgKG1faXNNYXBwZWRGcm9tQ3JlYXRpb24gfHwgbV9t
YXBwaW5nQ2FsbGJhY2spCi0gICAgICAgIHJldHVybiBTdGF0ZTo6TWFwcGVkOwotCi0gICAgcmV0
dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpt
YXBPbkNyZWF0aW9uKCkKLXsKLSAgICBBU1NFUlQobV9pc01hcHBlZEZyb21DcmVhdGlvbik7Ci0g
ICAgcmV0dXJuIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpOwotfQotCi0jaWYgVVNFKE1FVEFMKQot
dm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoTVRMQ29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICsrbV9u
dW1TY2hlZHVsZWRDb21tYW5kQnVmZmVyczsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIC8vIE1ha2Ugc3VyZSB8dGhpc3wgb25seSBnZXRzIHJlZidkIC8gZGVyZWYnZCBv
biB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaXMgbm90IFRocmVhZFNhZmVSZWZDb3VudGVkLgot
ICAgIFtjb21tYW5kQnVmZmVyIGFkZENvbXBsZXRlZEhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGlkPE1UTENvbW1hbmRCdWZmZXI+KSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGNvbW1hbmRCdWZmZXJDb21w
bGV0ZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuZ2V0KCldOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21wbGV0ZWQo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbnVtU2NoZWR1
bGVkQ29tbWFuZEJ1ZmZlcnMpOwotCi0gICAgaWYgKG1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZl
cnMgPT0gMSAmJiBzdGF0ZSgpID09IFN0YXRlOjpNYXBwZWQpCi0gICAgICAgIHJ1bk1hcHBpbmdD
YWxsYmFjaygpOwotCi0gICAgLS1tX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzOwotfQotI2Vu
ZGlmIC8vIFVTRShNRVRBTCkKLQotdm9pZCBHUFVCdWZmZXI6OnJlZ2lzdGVyTWFwcGluZ0NhbGxi
YWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29sIGlzUmVhZCwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIFJlamVjdCBpZiByZXF1ZXN0IGlzIGludmFsaWQu
Ci0gICAgaWYgKGlzUmVhZCAmJiAhaXNNYXBSZWFkYWJsZSgpKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXNS
ZWFkICYmICFpc01hcFdyaXRlYWJsZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRl
UHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIGNhbGxiYWNrKG51
bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX21hcHBpbmdD
YWxsYmFjayAmJiAhbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmlzUGVuZGluZygpKTsKLQotICAgIC8v
IEFuIGV4aXN0aW5nIGNhbGxiYWNrIG1lYW5zIHRoaXMgYnVmZmVyIGlzIGluIHRoZSBtYXBwZWQg
c3RhdGUuCi0gICAgbV9tYXBwaW5nQ2FsbGJhY2sgPSBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgLy8gSWYgR1BVIGlzIG5vdCB1c2luZyB0
aGlzIGJ1ZmZlciwgcnVuIHRoZSBjYWxsYmFjayBBU0FQLgotICAgIGlmICghbV9udW1TY2hlZHVs
ZWRDb21tYW5kQnVmZmVycykgewotICAgICAgICBtX21hcHBpbmdDYWxsYmFja1Rhc2suc2NoZWR1
bGVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUg
ewotICAgICAgICAgICAgcnVuTWFwcGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0K
LX0KLQotdm9pZCBHUFVCdWZmZXI6OnJ1bk1hcHBpbmdDYWxsYmFjaygpCi17Ci0gICAgaWYgKG1f
bWFwcGluZ0NhbGxiYWNrKQotICAgICAgICBtX21hcHBpbmdDYWxsYmFjay0+Y2FsbGJhY2soaXNN
YXBSZWFkKCkgPyBzdGFnaW5nQnVmZmVyRm9yUmVhZCgpIDogc3RhZ2luZ0J1ZmZlckZvcldyaXRl
KCkpOwotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6OnN0YWdpbmdCdWZmZXJGb3JS
ZWFkKCkKLXsKLSAgICBpZiAoIW1fc3RhZ2luZ0J1ZmZlcikKLSAgICAgICAgbV9zdGFnaW5nQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRz
LCBtX2J5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KG1fc3RhZ2luZ0J1ZmZl
ci0+ZGF0YSgpLCBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2J5dGVMZW5ndGgp
OwotCi0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0KLQotSlNDOjpBcnJheUJ1
ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKQotewotICAgIG1fc3RhZ2lu
Z0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoMSwgbV9ieXRlTGVuZ3RoKTsKLSAgICByZXR1
cm4gbV9zdGFnaW5nQnVmZmVyLmdldCgpOwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6Y29weVN0YWdp
bmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci0gICAgTVRMQ29t
bWFuZFF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIW1fZGV2aWNlLT50cnlHZXRRdWV1ZSgpIHx8ICEo
cXVldWUgPSBtX2RldmljZS0+dHJ5R2V0UXVldWUoKS0+cGxhdGZvcm1RdWV1ZSgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gc3RhZ2luZ010bEJ1ZmZlcjsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIEdQVUJ1ZmZlciBjcmVh
dGlvbiB2YWxpZGF0aW9uIGVuc3VyZXMgbV9ieXRlU2l6ZSBmaXRzIGluIE5TVUludGVnZXIuCi0g
ICAgc3RhZ2luZ010bEJ1ZmZlciA9IGFkb3B0TlMoW21fZGV2aWNlLT5wbGF0Zm9ybURldmljZSgp
IG5ld0J1ZmZlcldpdGhCeXRlczptX3N0YWdpbmdCdWZmZXItPmRhdGEoKSBsZW5ndGg6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKSBvcHRpb25zOk1UTFJlc291cmNlQ1BVQ2Fj
aGVNb2RlRGVmYXVsdENhY2hlXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgaWYgKCFzdGFnaW5nTXRsQnVmZmVyICYmIGVycm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9y
U2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSByZXRhaW5QdHIoW3F1ZXVlIGNvbW1hbmRCdWZm
ZXJdKTsKLSAgICBhdXRvIGJsaXRFbmNvZGVyID0gcmV0YWluUHRyKFtjb21tYW5kQnVmZmVyIGJs
aXRDb21tYW5kRW5jb2Rlcl0pOwotCi0gICAgW2JsaXRFbmNvZGVyIGNvcHlGcm9tQnVmZmVyOnN0
YWdpbmdNdGxCdWZmZXIuZ2V0KCkgc291cmNlT2Zmc2V0OjAgdG9CdWZmZXI6bV9wbGF0Zm9ybUJ1
ZmZlci5nZXQoKSBkZXN0aW5hdGlvbk9mZnNldDowIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50ZWdl
cj4obV9ieXRlTGVuZ3RoKV07Ci0gICAgW2JsaXRFbmNvZGVyIGVuZEVuY29kaW5nXTsKLSAgICBb
Y29tbWFuZEJ1ZmZlciBjb21taXRdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi12b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JTY29wZXMqIGVycm9yU2NvcGVzKQot
ewotICAgIGlmICghbV9pc01hcHBlZEZyb21DcmVhdGlvbiAmJiAhaXNNYXBwYWJsZSgpICYmIGVy
cm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IkludmFsaWQgb3BlcmF0aW9uOiBHUFVCdWZmZXIgaXMgbm90IG1hcHBhYmxlISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhZ2luZ0J1ZmZlcikgewotICAgICAgICBp
ZiAoaXNNYXBwYWJsZSgpKSB7Ci0gICAgICAgICAgICAvLyBNQVBfV1JJVEUgYW5kIE1BUF9SRUFE
IGJ1ZmZlcnMgaGF2ZSBzaGFyZWQsIENQVS1hY2Nlc3NpYmxlIHN0b3JhZ2UuCi0gICAgICAgICAg
ICBBU1NFUlQobV9wbGF0Zm9ybUJ1ZmZlciAmJiBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRl
bnRzKTsKLSAgICAgICAgICAgIG1lbWNweShtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRz
LCBtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9ieXRlTGVuZ3RoKTsKLSAgICAgICAgfSBlbHNl
IGlmIChtX2lzTWFwcGVkRnJvbUNyZWF0aW9uKQotICAgICAgICAgICAgY29weVN0YWdpbmdCdWZm
ZXJUb0dQVShlcnJvclNjb3Blcyk7Ci0KLSAgICAgICAgbV9pc01hcHBlZEZyb21DcmVhdGlvbiA9
IGZhbHNlOwotICAgICAgICBtX3N0YWdpbmdCdWZmZXIgPSBudWxscHRyOwotICAgIH0KLQotICAg
IGlmIChtX21hcHBpbmdDYWxsYmFjaykgewotICAgICAgICBtX21hcHBpbmdDYWxsYmFja1Rhc2su
Y2FuY2VsVGFzaygpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFjay0+Y2FsbGJhY2sobnVsbHB0
cik7Ci0gICAgICAgIG1fbWFwcGluZ0NhbGxiYWNrID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KLXZv
aWQgR1BVQnVmZmVyOjpkZXN0cm95KEdQVUVycm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVkKQotICAgICAgICB1bm1hcChlcnJvclNjb3Bl
cyk7Ci0KLSAgICBtX3BsYXRmb3JtQnVmZmVyID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFkY2M2
YjE2ZDAyMzRiM2VjNGQxYzMzMDdkYzhkYzVlYWUxYzE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwy
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
Q29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2
aWNlLmgiCi0jaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgotI2ltcG9ydCAiR1BVUXVldWUuaCIKLSNp
bXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BV
Q29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewotICAg
IGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBncHVDb21tYW5kUXVldWUgPSBkZXZp
Y2UudHJ5R2V0UXVldWUoKTsKLSAgICBpZiAoIWdwdUNvbW1hbmRRdWV1ZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG10bFF1ZXVlID0gZ3B1Q29tbWFuZFF1ZXVlLT5wbGF0
Zm9ybVF1ZXVlKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj4gYnVmZmVyOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBidWZmZXIgPSBbbXRsUXVl
dWUgY29tbWFuZEJ1ZmZlcl07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21t
YW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1HUFVDb21tYW5kQnVmZmVyOjpHUFVD
b21tYW5kQnVmZmVyKFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6
IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotR1BVQ29t
bWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKQotewotICAgIGVuZEJsaXRFbmNvZGluZygp
OwotfQotCi1NVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNvbW1hbmRCdWZmZXI6OmJsaXRFbmNv
ZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ibGl0RW5jb2RlciA/IG1fYmxpdEVuY29kZXIu
Z2V0KCkgOiAobV9ibGl0RW5jb2RlciA9IFttX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlciBibGl0Q29t
bWFuZEVuY29kZXJdKS5nZXQoKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjplbmRCbGl0
RW5jb2RpbmcoKQotewotICAgIGlmICghbV9ibGl0RW5jb2RlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2JsaXRFbmNvZGVyIGVuZEVu
Y29kaW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9ibGl0RW5jb2Rl
ciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZm
ZXI+JiYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgaWYg
KGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyYy0+aXNDb3B5U291cmNlKCkgfHwgIWRzdC0+aXNDb3B5
RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChzaXplICUgNCB8fCBzcmNP
ZmZzZXQgJSA0IHx8IGRzdE9mZnNldCAlIDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBDb3B5IG11c3QgYmUgYWxpZ25lZCB0
byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQgc2l6ZSwgb2Zmc2V0LCBhbmQgc2l6
ZSArIG9mZnNldCBjYW4gc2FmZWx5IGZpdCBpbiBOU1VJbnRlZ2VyIHJlZ2FyZGxlc3Mgb2YgcGxh
dGZvcm0uCi0gICAgYXV0byBzcmNMZW5ndGggPSBjaGVja2VkU3VtPE5TVUludGVnZXI+KHNpemUs
IHNyY09mZnNldCk7Ci0gICAgYXV0byBkc3RMZW5ndGggPSBjaGVja2VkU3VtPE5TVUludGVnZXI+
KHNpemUsIGRzdE9mZnNldCk7Ci0gICAgaWYgKHNyY0xlbmd0aC5oYXNPdmVyZmxvd2VkKCkgfHwg
ZHN0TGVuZ3RoLmhhc092ZXJmbG93ZWQoKQotICAgICAgICB8fCBzcmNMZW5ndGggPiBzcmMtPmJ5
dGVMZW5ndGgoKSB8fCBkc3RMZW5ndGggPiBkc3QtPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFs
aWQgb2Zmc2V0IG9yIGNvcHkgc2l6ZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gVGhlc2UgY2FzdHMgYXJlIHNh
ZmUgZHVlIHRvIGVhcmxpZXIgY2hlY2tlZFN1bSgpIGNoZWNrcy4KLSAgICBbYmxpdEVuY29kZXIo
KQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmMtPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAg
c291cmNlT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNyY09mZnNldCkKLSAgICAgICAg
dG9CdWZmZXI6ZHN0LT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0
OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRzdE9mZnNldCkKLSAgICAgICAgc2l6ZTpzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihzaXplKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICB1c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShk
c3QpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKEdQ
VUJ1ZmZlckNvcHlWaWV3JiYgc3JjQnVmZmVyLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3RUZXh0
dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bhc3Mo
KSB8fCAhc3JjQnVmZmVyLmJ1ZmZlci0+aXNDb3B5U291cmNlKCkgfHwgIWRzdFRleHR1cmUudGV4
dHVyZS0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29t
bWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRl
Z2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIgc291cmNl
T2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShzcmNCdWZmZXIub2Zmc2V0
LCBzb3VyY2VPZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVy
Ojpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IFNvdXJjZSBvZmZzZXQgaXMgdG9vIGxhcmdlISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBNZXRhbCB2YWxpZGF0
aW9uLgotCi0gICAgLy8gR1BVQnVmZmVyQ29weVZpZXc6Om9mZnNldDogVGhlIGxvY2F0aW9uIG11
c3QgYmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBp
eGVsIGZvcm1hdC4gVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAgLy8gR1BVQnVmZmVyQ29w
eVZpZXc6OnJvd1BpdGNoOiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBkZXN0
aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuIFRoZSB2YWx1ZSBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byAzMiw3NjcgbXVsdGlwbGllZCBieSB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZeKAmXMgcGl4ZWwgc2l6ZS4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpp
bWFnZUhlaWdodDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAgLy8gR1BVRXh0ZW50M0Q6
IFdoZW4geW91IGNvcHkgdG8gYSAxRCB0ZXh0dXJlLCBoZWlnaHQgYW5kIGRlcHRoIG11c3QgYmUg
MS4gV2hlbiB5b3UgY29weSB0byBhIDJEIHRleHR1cmUsIGRlcHRoIG11c3QgYmUgMS4KLQotICAg
IC8vIEdQVVRleHR1cmVDb3B5Vmlldzo6dGV4dHVyZTogVGhlIHZhbHVlIG11c3Qgbm90IGJlIGEg
ZnJhbWVidWZmZXJPbmx5IHRleHR1cmUgYW5kIG11c3Qgbm90IGhhdmUgYSBQVlJUQyBwaXhlbCBm
b3JtYXQuCi0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5j
b2RlcigpCi0gICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyY0J1ZmZlci5idWZmZXItPnBsYXRmb3Jt
QnVmZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnNvdXJjZU9mZnNldAotICAgICAgICBzb3Vy
Y2VCeXRlc1BlclJvdzpzcmNCdWZmZXIucm93UGl0Y2gKLSAgICAgICAgc291cmNlQnl0ZXNQZXJJ
bWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWlnaHQKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFr
ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJl
OmRzdFRleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgZGVzdGluYXRp
b25TbGljZTpkc3RUZXh0dXJlLmFycmF5TGF5ZXIKLSAgICAgICAgZGVzdGluYXRpb25MZXZlbDpk
c3RUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1h
a2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwgZHN0VGV4dHVyZS5vcmlnaW4ueSwgZHN0VGV4dHVyZS5v
cmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlQnVm
ZmVyKFdURk1vdmUoc3JjQnVmZmVyLmJ1ZmZlcikpOwotICAgIHVzZVRleHR1cmUoV1RGTW92ZShk
c3RUZXh0dXJlLnRleHR1cmUpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4
dHVyZVRvQnVmZmVyKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyY1RleHR1cmUsIEdQVUJ1ZmZlckNv
cHlWaWV3JiYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAo
aXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjVGV4dHVyZS50ZXh0dXJlLT5pc0NvcHlTb3VyY2UoKSB8
fCAhZHN0QnVmZmVyLmJ1ZmZlci0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBNVExCdWZmZXIg
c2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jtcy4KLSAgICBOU1VJ
bnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVs
eShkc3RCdWZmZXIub2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogRGVzdGluYXRp
b24gb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21UZXh0dXJl
OnNyY1RleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgc291cmNlU2xp
Y2U6c3JjVGV4dHVyZS5hcnJheUxheWVyCi0gICAgICAgIHNvdXJjZUxldmVsOnNyY1RleHR1cmUu
bWlwTGV2ZWwKLSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjVGV4dHVyZS5v
cmlnaW4ueCwgc3JjVGV4dHVyZS5vcmlnaW4ueSwgc3JjVGV4dHVyZS5vcmlnaW4ueikKLSAgICAg
ICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5k
ZXB0aCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0QnVmZmVyLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIo
KQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbk9mZnNldAotICAgICAgICBk
ZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5yb3dQaXRjaAotICAgICAgICBkZXN0aW5h
dGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdlSGVpZ2h0XTsKLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmNUZXh0dXJlLnRl
eHR1cmUpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShkc3RCdWZmZXIuYnVmZmVyKSk7Ci19Ci0K
LXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoR1BVVGV4dHVyZUNv
cHlWaWV3JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3QsIGNvbnN0IEdQVUV4dGVudDNE
JiBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFzcmMudGV4dHVyZS0+aXND
b3B5U291cmNlKCkgfHwgIWRzdC50ZXh0dXJlLT5pc0NvcHlEZXN0aW5hdGlvbigpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21UZXh0dXJlOnNy
Yy50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAgICBzb3VyY2VTbGljZTpzcmMuYXJy
YXlMYXllcgotICAgICAgICBzb3VyY2VMZXZlbDpzcmMubWlwTGV2ZWwKLSAgICAgICAgc291cmNl
T3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjLm9yaWdpbi54LCBzcmMub3JpZ2luLnksIHNyYy5vcmln
aW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhl
aWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJlOmRzdC50ZXh0dXJlLT5wbGF0Zm9y
bVRleHR1cmUoKQotICAgICAgICBkZXN0aW5hdGlvblNsaWNlOmRzdC5hcnJheUxheWVyCi0gICAg
ICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0Lm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0aW9uT3Jp
Z2luOk1UTE9yaWdpbk1ha2UoZHN0Lm9yaWdpbi54LCBkc3Qub3JpZ2luLnksIGRzdC5vcmlnaW4u
eildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlVGV4dHVyZShX
VEZNb3ZlKHNyYy50ZXh0dXJlKSk7Ci0gICAgdXNlVGV4dHVyZShXVEZNb3ZlKGRzdC50ZXh0dXJl
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzYwZTQ1M2U3ZmMyZjVlNGI5NjI2NWExZWM3M2Y5
ZWQ5YTJhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNz
RW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgi
Ci0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRyeUNyZWF0
ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgaWYgKGJ1ZmZlci0+aXNF
bmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyOjp0cnlDcmVhdGUoKTogRXhpc3RpbmcgcGFzcyBlbmNvZGVyIG11c3QgYmUgZW5kZWQgZmly
c3QhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGJ1ZmZlci0+ZW5k
QmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
PiBtdGxFbmNvZGVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRs
RW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbXB1dGVDb21tYW5k
RW5jb2Rlcl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxF
bmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRy
eUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVDb21tYW5kRW5jb2RlciEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHUFVDb21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKG10bEVuY29k
ZXIpKSk7Ci19Ci0KLUdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgUmV0YWluUHRyPE1UTENvbXB1dGVDb21t
YW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIo
V1RGTW92ZShidWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcihXVEZN
b3ZlKGVuY29kZXIpKQotewotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlw
ZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSkKLXsKLSAgICBp
ZiAoIW1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQocGlwZWxpbmUtPnBsYXRm
b3JtQ29tcHV0ZVBpcGVsaW5lKCkpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW21fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGU6cGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCldOwotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIG1fcGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLX0K
LQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2ln
bmVkIHksIHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNv
ZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFz
c0VuY29kZXI6OmRpc3BhdGNoKCk6IE5vIHZhbGlkIEdQVUNvbXB1dGVQaXBlbGluZSBmb3VuZCEi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX3BpcGVsaW5lLT5wbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgYXV0byB0aHJlYWRzUGVyVGhyZWFkZ3JvdXAgPSBNVExTaXplTWFrZShtX3BpcGVs
aW5lLT5jb21wdXRlRGltZW5zaW9ucygpLndpZHRoLCBtX3BpcGVsaW5lLT5jb21wdXRlRGltZW5z
aW9ucygpLmhlaWdodCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5kZXB0aCk7Ci0K
LSAgICBhdXRvIHRocmVhZGdyb3Vwc1BlckdyaWQgPSBNVExTaXplTWFrZSh4LCB5LCB6KTsKLQot
ICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIGRpc3BhdGNoVGhyZWFkZ3JvdXBzOnRo
cmVhZGdyb3Vwc1BlckdyaWQgdGhyZWFkc1BlclRocmVhZGdyb3VwOnRocmVhZHNQZXJUaHJlYWRn
cm91cF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLWNvbnN0IE1UTENv
bW1hbmRFbmNvZGVyICpHUFVDb21wdXRlUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyLmdldCgp
OwotfQotCi0jaWYgVVNFKE1FVEFMKQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dXNl
UmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsK
LSAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciB1
c2VSZXNvdXJjZTpyZXNvdXJjZSB1c2FnZTp1c2FnZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0Q29tcHV0ZUJ1ZmZl
cihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NF
bmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWNh
Mzc4YTBlYWZkYjNmYTYzNjNlZGExZmEwYzBmZjFmMTkzOTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDIyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgot
I2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVVBpcGVsaW5lTGF5b3V0Lmgi
Ci0jaW1wb3J0ICJHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgotI2ltcG9ydCAiV0hM
U0xQcmVwYXJlLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+Ci0jaW1wb3J0IDx3dGYv
TW9ub3RvbmljVGltZS5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9u
cyhNVExMaWJyYXJ5ICpjb21wdXRlTWV0YWxMaWJyYXJ5LCBNVExDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBTdHJpbmcmIGNvbXB1dGVFbnRyeVBvaW50TmFt
ZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFjb21wdXRlTWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiTVRMTGlicmFyeSBmb3IgY29tcHV0ZSBz
dGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtjb21wdXRlTWV0YWxMaWJyYXJ5IG5ld0Z1bmN0
aW9uV2l0aE5hbWU6Y29tcHV0ZUVudHJ5UG9pbnROYW1lXSk7Ci0gICAgaWYgKCFmdW5jdGlvbikg
ewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygi
Q2Fubm90IGNyZWF0ZSBjb21wdXRlIE1UTEZ1bmN0aW9uICciLCBjb21wdXRlRW50cnlQb2ludE5h
bWUsICInISIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFttdGxEZXNj
cmlwdG9yIHNldENvbXB1dGVGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zPiB0cnlTZXRGdW5jdGlvbnMoY29uc3Qg
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiBjb21wdXRlU3RhZ2UsIGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9y
LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xE
ZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgUmV0YWluUHRy
PE1UTExpYnJhcnk+IGNvbXB1dGVMaWJyYXJ5OwotICAgIFN0cmluZyBjb21wdXRlRW50cnlQb2lu
dDsKLQotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucyB7IDEs
IDEsIDEgfTsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKGNv
bXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3Jp
cHRvci0+ZW50cnlQb2ludE5hbWUgPSBjb21wdXRlU3RhZ2UuZW50cnlQb2ludDsKLQotICAgICAg
ICBhdXRvIHdobHNsQ29tcGlsZVJlc3VsdCA9IFdITFNMOjpwcmVwYXJlKCpjb21wdXRlU3RhZ2Uu
bW9kdWxlLT53aGxzbE1vZHVsZSgpLCAqd2hsc2xEZXNjcmlwdG9yKTsKLSAgICAgICAgaWYgKCF3
aGxzbENvbXBpbGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExTTCBjb21waWxlIGVycm9yOiAiLCB3aGxzbENvbXBp
bGVSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hsc2xDb21waWxlUmVzdWx0
LT5jb21wdXRlRGltZW5zaW9uczsKLQotICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLQot
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgTW9ub3RvbmljVGlt
ZSBzdGFydFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQot
ICAgICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIC8v
IEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQgQWRkIGRpcmVjdCBTdHJpbmdCdWls
ZGVyIC0+IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQgZXh0cmEgY29weSBpbnRvIGEgV1RG
OjpTdHJpbmcKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTp3aGxzbENvbXBpbGVSZXN1bHQtPm1ldGFs
U291cmNlLnRvU3RyaW5nKCkgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgICAgIGlm
IChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJN
ZXRhbCBjb21waWxlIHRpbWVzOiAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUp
Lm1pbGxpc2Vjb25kcygpLCAiIG1zIik7Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmICghY29tcHV0ZUxpYnJhcnkpCi0gICAgICAg
ICAgICBOU0xvZyhAIiVAIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgICAgIEFTU0VSVChjb21wdXRl
TGlicmFyeSk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxsIHZhcmlhYmxlcywgdGhlcmUgc2hv
dWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWVycm9y
KSBoZXJlLgotCi0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0
LT5tYW5nbGVkRW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBjb21wdXRlTGlicmFyeSA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9k
dWxlKCk7Ci0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gY29tcHV0ZVN0YWdlLmVudHJ5UG9p
bnQ7Ci0gICAgfQotCi0gICAgaWYgKHRyeVNldE1ldGFsRnVuY3Rpb25zKGNvbXB1dGVMaWJyYXJ5
LmdldCgpLCBtdGxEZXNjcmlwdG9yLCBjb21wdXRlRW50cnlQb2ludCwgZXJyb3JTY29wZXMpKQot
ICAgICAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotfQotCi1zdHJ1Y3QgQ29udmVydFJlc3VsdCB7Ci0gICAgUmV0YWluUHRyPE1UTENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I+IHBpcGVsaW5lRGVzY3JpcHRvcjsKLSAgICBXSExTTDo6Q29t
cHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25z
dCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0
cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01U
TENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVz
LmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICBjb25zdCBhdXRvJiBjb21wdXRlU3RhZ2UgPSBkZXNjcmlwdG9yLmNvbXB1dGVTdGFnZTsKLQot
ICAgIGJvb2wgaXNXaGxzbCA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB3aGxz
bERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hsc2wpCi0gICAgICAgIHdobHNsRGVzY3JpcHRvciA9
IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoZGVzY3JpcHRv
ci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9
IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVz
Y3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRp
bmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSB0
cnlTZXRGdW5jdGlvbnMoY29tcHV0ZVN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCks
IHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4ge3sgbXRsRGVz
Y3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19OwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLX0KLQotc3RydWN0IENyZWF0ZVJlc3VsdCB7Ci0gICAgUmV0YWluUHRyPE1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlPiBwaXBlbGluZVN0YXRlOwotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9u
cyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPENyZWF0ZVJl
c3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURl
dmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgYXV0byBjb252ZXJ0UmVzdWx0ID0gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFjb252ZXJ0UmVz
dWx0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIEFTU0VSVChjb252ZXJ0UmVz
dWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwotICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IGNvbnZl
cnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKLQotICAgIFJldGFpblB0cjxNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIHBpcGVsaW5lID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIG9wdGlvbnM6TVRMUGlwZWxpbmVPcHRpb25Ob25lIHJl
ZmxlY3Rpb246bmlsIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlwZWxpbmUpIHsKLSAgICAg
ICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yID8gZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyA6ICJVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiB7eyBwaXBlbGluZSwg
Y29udmVydFJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMgfX07Ci19Ci0KLVJlZlB0cjxHUFVDb21w
dXRlUGlwZWxpbmU+IEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQg
PSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIWNyZWF0ZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbXB1dGVQaXBlbGluZShXVEZNb3Zl
KGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSksIGNyZWF0ZVJlc3VsdC0+Y29tcHV0ZURpbWVu
c2lvbnMsIGRlc2NyaXB0b3IubGF5b3V0KSk7Ci19Ci0KLUdQVUNvbXB1dGVQaXBlbGluZTo6R1BV
Q29tcHV0ZVBpcGVsaW5lKFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4mJiBwaXBl
bGluZSwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25zLCBjb25zdCBS
ZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQpCi0gICAgOiBHUFVQaXBlbGluZSgpCi0g
ICAgLCBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwg
bV9jb21wdXRlRGltZW5zaW9ucyhjb21wdXRlRGltZW5zaW9ucykKLSAgICAsIG1fbGF5b3V0KGxh
eW91dCkKLXsKLX0KLQotR1BVQ29tcHV0ZVBpcGVsaW5lOjp+R1BVQ29tcHV0ZVBpcGVsaW5lKCkg
PSBkZWZhdWx0OwotCi1ib29sIEdQVUNvbXB1dGVQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiBjb21wdXRl
U3RhZ2UpCi17Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKG1h
a2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKGNvbXB1dGVTdGFnZSkpOwotICAgIGF1
dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtdIChHUFVFcnJvciYmKSB7
IH0pOwotICAgIGlmIChhdXRvIGNyZWF0ZVJlc3VsdCA9IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBl
bGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1f
cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBXVEZNb3ZlKGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVT
dGF0ZSk7Ci0gICAgICAgIG1fY29tcHV0ZURpbWVuc2lvbnMgPSBjcmVhdGVSZXN1bHQtPmNvbXB1
dGVEaW1lbnNpb25zOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzOGY2OTVhODczMDJmOTUwMTEyM2U4YjVlM2YyYTlhYzBlMGM4YWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9NZXRhbFNQSS5oPgotI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
Ym9vbCBpc0FjY2VwdGFibGVEZXZpY2UoaWQgPE1UTERldmljZT4gZGV2aWNlKQotewotICAgIFVO
VVNFRF9QQVJBTShkZXZpY2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdQVURldmlj
ZTo6cHJld2FybSgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENhbGwgTVRMQ29weUFs
bERldmljZXMoKSBvbiBhIGJhY2tncm91bmQgdGhyZWFkIHRvIGF2b2lkIGhhbmdpbmcgdGhlIG1h
aW4gdGhyZWFkLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUo
MCwgMCksIF57Ci0gICAgICAgIGF1dG8gZGV2aWNlcyA9IGFkb3B0TlMoTVRMQ29weUFsbERldmlj
ZXMoKSk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQotUmVmUHRyPEdQVURldmljZT4gR1BVRGV2aWNl
Ojp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxNVExEZXZpY2U+IGRldmljZVB0cjsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMtPnBvd2VyUHJlZmVyZW5jZSB8fCBvcHRpb25zLT5w
b3dlclByZWZlcmVuY2UgPT0gR1BVUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcikgewotICAgICAg
ICBhdXRvIGRldmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOwotICAgICAgICAK
LSAgICAgICAgZm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2UgOiBkZXZpY2VzLmdldCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZURldmljZShkZXZpY2UpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGRldmljZS5sb3dQb3dlcikgewotICAgICAg
ICAgICAgICAgIGRldmljZVB0ciA9IGRldmljZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9w
dGlvbnMpOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWRldmljZVB0cikKLSAg
ICAgICAgZGV2aWNlUHRyID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkp
OwotCi0gICAgaWYgKCFpc0FjY2VwdGFibGVEZXZpY2UoZGV2aWNlUHRyLmdldCgpKSkKLSAgICAg
ICAgZGV2aWNlUHRyLmNsZWFyKCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBpZiAoIWRldmljZVB0cikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVRGV2aWNlOjpH
UFVEZXZpY2UoKTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OkdQVURldmlj
ZSgpOiBNVExEZXZpY2UgaXMgJXAiLCBkZXZpY2VQdHIuZ2V0KCkpOwotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlUHRyKSkpOwotfQotCi1HUFVEZXZpY2U6
OkdQVURldmljZShSZXRhaW5QdHI8TVRMRGV2aWNlPiYmIGRldmljZSkKLSAgICA6IG1fcGxhdGZv
cm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBl
bGluZU1ldGFsQ29udmVydExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVlZTA5ODhjOTMwYTAwYjc0Njc3N2M3YTA2YjdkOWQxZjQxMzE2NjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUg
IkdQVVNoYWRlclN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE9wdGlv
blNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRl
clN0YWdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PFdITFNMOjpTaGFkZXJTdGFnZT4g
cmVzdWx0OwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4KQot
ICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVydGV4KTsKLSAgICBpZiAo
ZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50KQotICAgICAgICByZXN1bHQu
YWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlmIChmbGFncyAmIEdQVVNo
YWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hh
ZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gY29udmVydEJpbmRpbmdU
eXBlKEdQVUJpbmRHcm91cExheW91dDo6SW50ZXJuYWxCaW5kaW5nRGV0YWlscyBpbnRlcm5hbEJp
bmRpbmdEZXRhaWxzKQotewotICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciB1bmlmb3JtQnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICBy
ZXR1cm4geyBXSExTTDo6VW5pZm9ybUJ1ZmZlckJpbmRpbmcgeyB1bmlmb3JtQnVmZmVyLmludGVy
bmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1p
Y1VuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdE
ZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6
QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlNhbXBsZXJCaW5kaW5n
IHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlKSAt
PiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAg
ICByZXR1cm4geyBXSExTTDo6VGV4dHVyZUJpbmRpbmcgeyB9IH07Ci0gICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBX
SExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3Ro
TmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VC
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSksIGludGVybmFsQmluZGluZ0Rl
dGFpbHMpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlvdXQo
Y29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKLXsKLSAgICBXSExTTDo6TGF5b3V0IHJl
c3VsdDsKLSAgICBpZiAobGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygp
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGJpbmRHcm91cExheW91dCA9IGxh
eW91dC5iaW5kR3JvdXBMYXlvdXRzKClbaV07Ci0gICAgICAgIFdITFNMOjpCaW5kR3JvdXAgYmlu
ZEdyb3VwOwotICAgICAgICBiaW5kR3JvdXAubmFtZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIgOiBiaW5kR3JvdXBMYXlv
dXQtPmJpbmRpbmdzTWFwKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJpbmRpbmdEZXRh
aWxzID0ga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICAgICAgV0hMU0w6OkJpbmRpbmcgYmlu
ZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcudmlzaWJpbGl0eSA9IGNvbnZlcnRTaGFkZXJTdGFn
ZUZsYWdzKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5KTsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRpbmdUeXBlKGJpbmRpbmdE
ZXRhaWxzLmludGVybmFsQmluZGluZ0RldGFpbHMpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcu
YmluZGluZyA9ICpiaW5kaW5nVHlwZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgaWYgKGJpbmRpbmdEZXRhaWxzLmV4
dGVybmFsQmluZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBi
aW5kaW5nLmV4dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy5iaW5k
aW5nOwotICAgICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5hbWUgPSBiaW5kaW5nRGV0YWlscy5p
bnRlcm5hbE5hbWU7Ci0gICAgICAgICAgICBiaW5kR3JvdXAuYmluZGluZ3MuYXBwZW5kKFdURk1v
dmUoYmluZGluZykpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShi
aW5kR3JvdXApKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29u
dmVydExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU5N2RkNTJkZDdlNWRhMmFkMWQ0YTFjZGNmMmJjMTIxNWU4MzUzM2MuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0
b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dDsK
LQotc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBp
cGVsaW5lTGF5b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBl
c01ldGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzOWFiNTQzNTg2ZTE0ZWU4
ZmQ1NjA4YzA0ZWQzNmUxNzk4MWQzYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG9iamMvTlNPYmpDUnVu
dGltZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBDQU1ldGFs
RHJhd2FibGU7Ci1PQkpDX0NMQVNTIFdlYkdQVUxheWVyOwotCi1PQkpDX1BST1RPQ09MKE1UTEFy
Z3VtZW50RW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJsaXRDb21tYW5kRW5jb2Rlcik7Ci1P
QkpDX1BST1RPQ09MKE1UTEJ1ZmZlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbW1hbmRCdWZmZXIp
OwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENv
bW1hbmRRdWV1ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcik7Ci1P
QkpDX1BST1RPQ09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRM
RGVwdGhTdGVuY2lsU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExEZXZpY2UpOwotT0JKQ19QUk9U
T0NPTChNVExMaWJyYXJ5KTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIp
OwotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKLU9CSkNfUFJPVE9DT0wo
TVRMUmVzb3VyY2UpOwotT0JKQ19QUk9UT0NPTChNVExTYW1wbGVyU3RhdGUpOwotT0JKQ19QUk9U
T0NPTChNVExUZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBQbGF0Zm9y
bUdQVUJ1ZmZlck9mZnNldCA9IE5TVUludGVnZXI7Ci0KLS8vIE1ldGFsIHR5cGVzCi11c2luZyBQ
bGF0Zm9ybUJ1ZmZlciA9IE1UTEJ1ZmZlcjsKLXVzaW5nIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1CdWZmZXI+OwotCi11c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZm
ZXIgPSBNVExDb21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQ
dHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVyPjsKLQotdXNpbmcgUGxhdGZvcm1D
b21wdXRlUGFzc0VuY29kZXIgPSBNVExDb21wdXRlQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0
Zm9ybUNvbXB1dGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tcHV0
ZVBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBNVExDb21w
dXRlUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+OwotCi11c2luZyBQbGF0Zm9ybURl
dmljZSA9IE1UTERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5Q
dHI8UGxhdGZvcm1EZXZpY2U+OwotCi11c2luZyBQbGF0Zm9ybURyYXdhYmxlID0gQ0FNZXRhbERy
YXdhYmxlOwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRm
b3JtRHJhd2FibGU+OwotCi11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyID0g
TVRMQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rlcj47Ci0K
LXVzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Ci11c2luZyBQbGF0Zm9ybVF1
ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1RdWV1ZT47Ci0KLXVzaW5nIFBsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXIgPSBNVExSZW5kZXJDb21tYW5kRW5jb2RlcjsKLXVzaW5nIFBsYXRm
b3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVJlbmRlclBh
c3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IE1UTFJlbmRlclBp
cGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZXRh
aW5QdHI8UGxhdGZvcm1SZW5kZXJQaXBlbGluZT47Ci0KLXVzaW5nIFBsYXRmb3JtU2FtcGxlciA9
IE1UTFNhbXBsZXJTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyID0gUmV0YWlu
UHRyPFBsYXRmb3JtU2FtcGxlcj47Ci0KLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gTVRM
TGlicmFyeTsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBSZXRhaW5QdHI8
UGxhdGZvcm1TaGFkZXJNb2R1bGU+OwotCi11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IFdlYkdQ
VUxheWVyOwotdXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0
Zm9ybVN3YXBMYXllcj47Ci0KLXVzaW5nIFBsYXRmb3JtVGV4dHVyZSA9IE1UTFRleHR1cmU7Ci11
c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVRleHR1cmU+
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzY2I3OWRiODNiYTFlYjZlMGNiZGNiZTlkMGJhOWM5MDI0OWQ3OTg3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFtw
bGF0Zm9ybVBhc3NFbmNvZGVyKCkgZW5kRW5jb2RpbmddOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGludmFsaWRhdGVFbmNvZGVyKCk7Ci0gICAgbV9jb21tYW5kQnVmZmVy
LT5zZXRJc0VuY29kaW5nUGFzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgR1BVQmluZEdyb3VwJiBiaW5k
R3JvdXApCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52
YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBhcmd1bWVudEJ1ZmZlciA9IGJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
cigpOwotICAgIGlmICghYXJndW1lbnRCdWZmZXIuZmlyc3QpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChhcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4KQotICAgICAgICBzZXRWZXJ0ZXhC
dWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4
LCBpbmRleCk7Ci0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5mcmFnbWVudCkKLSAgICAg
ICAgc2V0RnJhZ21lbnRCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZl
ci5zZWNvbmQuZnJhZ21lbnQsIGluZGV4KTsKLSAgICBpZiAoYXJndW1lbnRCdWZmZXIuc2Vjb25k
LmNvbXB1dGUpCi0gICAgICAgIHNldENvbXB1dGVCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3Qs
ICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSwgaW5kZXgpOwotCi0gICAgZm9yIChhdXRv
JiBidWZmZXIgOiBiaW5kR3JvdXAuYm91bmRCdWZmZXJzKCkpIHsKLSAgICAgICAgdXNlUmVzb3Vy
Y2UoYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxNVExSZXNvdXJjZVVzYWdl
PihidWZmZXItPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAgICBtX2NvbW1hbmRCdWZmZXItPnVz
ZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiB0ZXh0dXJl
IDogYmluZEdyb3VwLmJvdW5kVGV4dHVyZXMoKSkgewotICAgICAgICB1c2VSZXNvdXJjZSh0ZXh0
dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSwgc3RhdGljX2Nhc3Q8TVRMUmVzb3VyY2VVc2FnZT4odGV4
dHVyZS0+cGxhdGZvcm1Vc2FnZSgpKSk7Ci0gICAgICAgIG1fY29tbWFuZEJ1ZmZlci0+dXNlVGV4
dHVyZSh0ZXh0dXJlLmNvcHlSZWYoKSk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxYjQyYjU5NDRmNDZiOWYyN2RhOTBlNjQxNmM2
ZGJmMGIwNWExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0j
aW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsID0gQCJjb20uYXBwbGUu
V2ViS2l0IjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4
ID0gQCJjb20uYXBwbGUuV2ViS2l0LiI7Ci0KLVJlZlB0cjxHUFVRdWV1ZT4gR1BVUXVldWU6OnRy
eUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0
Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6dHJ5Q3JlYXRl
KCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBxdWV1ZTsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcXVldWUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSBuZXdDb21tYW5kUXVldWVdKTsKLSAgICBbcXVldWUgc2V0TGFiZWw6Y29tbWFu
ZFF1ZXVlRGVmYXVsdExhYmVsXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjp0cnlDcmVh
dGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kUXVldWUhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUXVldWUoV1RG
TW92ZShxdWV1ZSksIGRldmljZSkpOwotfQotCi1HUFVRdWV1ZTo6R1BVUXVldWUoUmV0YWluUHRy
PE1UTENvbW1hbmRRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCi0gICAg
OiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBtX2RldmljZShtYWtlV2Vh
a1B0cihkZXZpY2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFJlZjxH
UFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKLXsKLSAgICBmb3IgKGF1dG8mIGNv
bW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVycykgewotICAgICAgICAvLyBWYWxpZGF0ZSByZXNv
dXJjZSBpbnRlZ3JpdHkuCi0gICAgICAgIGZvciAoYXV0byYgYnVmZmVyIDogY29tbWFuZEJ1ZmZl
ci0+dXNlZEJ1ZmZlcnMoKSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlci0+c3RhdGUoKSAhPSBH
UFVCdWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQnVmZmVyIHNldCBvbiBhIEdQVUNvbW1h
bmRCdWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGNvbW1hbmRCdWZmZXItPnVzZWRU
ZXh0dXJlcygpKSB7Ci0gICAgICAgICAgICBpZiAoIXRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgp
KSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52
YWxpZCBHUFVUZXh0dXJlIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNvbW1hbmRC
dWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotICAgICAgICAvLyBPa2F5IHRvIGNvbW1pdDsgcHJl
dmVudCBhbnkgYnVmZmVyIG1hcHBpbmcgY2FsbGJhY2tzIGZyb20gZXhlY3V0aW5nIHVudGlsIGNv
bW1hbmQgYnVmZmVyIGlzIGNvbXBsZXRlLgotICAgICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGNv
bW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpCi0gICAgICAgICAgICBidWZmZXItPmNvbW1hbmRC
dWZmZXJDb21taXR0ZWQoY29tbWFuZEJ1ZmZlci0+cGxhdGZvcm1Db21tYW5kQnVmZmVyKCkpOwot
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW2NvbW1hbmRCdWZm
ZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1pdF07Ci0gICAgICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICBpZiAobV9wcmVzZW50VGFzay5pc1BlbmRpbmco
KSB8fCAhbV9kZXZpY2UgfHwgIW1fZGV2aWNlLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gSWYgYSBHUFVTd2FwQ2hhaW4gZXhpc3RzLCBlbnN1cmUgdGhhdCBhIHByZXNl
bnQgaXMgc2NoZWR1bGVkIGFmdGVyIGFsbCBjb21tYW5kIGJ1ZmZlcnMuCi0gICAgbV9wcmVzZW50
VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c3dhcENoYWluID0gbWFrZVJlZigqbV9kZXZpY2UtPnN3YXBDaGFpbigpKV0gKCkgewotICAgICAg
ICBhdXRvIGN1cnJlbnREcmF3YWJsZSA9IHN3YXBDaGFpbi0+dGFrZURyYXdhYmxlKCk7Ci0gICAg
ICAgIC8vIElmIHRoZSBHUFVTd2FwQ2hhaW4gaGFzIG5vIGRyYXdhYmxlLCBpdCB3YXMgaW52YWxp
ZGF0ZWQgYmV0d2VlbiBjb21tYW5kIHN1Ym1pc3Npb24gYW5kIHRoaXMgdGFzay4KLSAgICAgICAg
aWYgKCFjdXJyZW50RHJhd2FibGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0
byBwcmVzZW50Q29tbWFuZEJ1ZmZlciA9IFttX3BsYXRmb3JtUXVldWUgY29tbWFuZEJ1ZmZlcl07
Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBwcmVzZW50RHJhd2FibGU6c3RhdGljX2Nh
c3Q8aWQ8TVRMRHJhd2FibGU+PihjdXJyZW50RHJhd2FibGUuZ2V0KCkpXTsKLSAgICAgICAgW3By
ZXNlbnRDb21tYW5kQnVmZmVyIGNvbW1pdF07Ci0gICAgfSk7Ci19Ci0KLVN0cmluZyBHUFVRdWV1
ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybVF1ZXVlKQotICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwcmVmaXhlZExhYmVsID0gW21f
cGxhdGZvcm1RdWV1ZSBsYWJlbF07Ci0KLSAgICBpZiAoW3ByZWZpeGVkTGFiZWwgaXNFcXVhbFRv
U3RyaW5nOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF0pCi0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotCi0gICAgQVNTRVJUKHByZWZpeGVkTGFiZWwubGVuZ3RoID4gY29tbWFuZFF1ZXVl
TGFiZWxQcmVmaXgubGVuZ3RoKTsKLSAgICByZXR1cm4gW3ByZWZpeGVkTGFiZWwgc3Vic3RyaW5n
RnJvbUluZGV4OmNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aF07Ci19Ci0KLXZvaWQgR1BV
UXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxh
YmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpjb21tYW5k
UXVldWVEZWZhdWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBz
ZXRMYWJlbDpbY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
bGFiZWxdXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMzU1ZTIzYTE4MDk3MTA3N2QxZmExYmNkMTU5
Y2Q4ZmJiYjk2ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBh
c3NFbmNvZGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0VuY29kZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9y
dCAiR1BVQ29sb3IuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbXBvcnQgIkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZS5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1
bGF0b3IuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgTVRMTG9hZEFjdGlvbiBsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKEdQVUxvYWRPcCBvcCkKLXsK
LSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVMb2FkT3A6OkNsZWFyOgotICAgICAgICBy
ZXR1cm4gTVRMTG9hZEFjdGlvbkNsZWFyOwotICAgIGNhc2UgR1BVTG9hZE9wOjpMb2FkOgotICAg
ICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkxvYWQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbkZvckdQVVN0
b3JlT3AoR1BVU3RvcmVPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVT
dG9yZU9wOjpTdG9yZToKLSAgICAgICAgcmV0dXJuIE1UTFN0b3JlQWN0aW9uU3RvcmU7Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBib29sIHBvcHVsYXRl
TXRsQ29sb3JBdHRhY2htZW50c0FycmF5KE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkgKmFycmF5LCBjb25zdCBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUp
OwotI2VuZGlmCi0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3Jz
W2ldOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJl
KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBNVExUZXh0dXJlIGZv
ciBjb2xvciBhdHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXV0byYgY29sb3IgPSBkZXNj
cmlwdG9yLmNsZWFyQ29sb3I7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICAgICAgYXV0byBtdGxBdHRhY2htZW50ID0gcmV0YWluUHRyKFthcnJheSBvYmplY3RB
dEluZGV4ZWRTdWJzY3JpcHQ6aV0pOwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRUZXh0dXJl
OmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCldOwotICAgICAgICBbbXRs
QXR0YWNobWVudCBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtlKGNvbG9yLnIsIGNvbG9y
LmcsIGNvbG9yLmIsIGNvbG9yLmEpXTsKLSAgICAgICAgW210bEF0dGFjaG1lbnQgc2V0TG9hZEFj
dGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IubG9hZE9wKV07Ci0gICAgICAg
IFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChk
ZXNjcmlwdG9yLnN0b3JlT3ApXTsKLQotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHBvcHVsYXRlTXRs
RGVwdGhTdGVuY2lsQXR0YWNobWVudChNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvciAqbXRsQXR0YWNobWVudCwgY29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5h
bWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7
Ci0jZW5kaWYKLQotICAgIGlmICghZGVzY3JpcHRvci5hdHRhY2htZW50LT5wbGF0Zm9ybVRleHR1
cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBmb3Ig
ZGVwdGggYXR0YWNobWVudCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBbbXRsQXR0
YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJl
KCldOwotICAgIFttdGxBdHRhY2htZW50IHNldENsZWFyRGVwdGg6ZGVzY3JpcHRvci5jbGVhckRl
cHRoXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0aW9uOmxvYWRBY3Rpb25Gb3JHUFVM
b2FkT3AoZGVzY3JpcHRvci5kZXB0aExvYWRPcCldOwotICAgIFttdGxBdHRhY2htZW50IHNldFN0
b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlwdG9yLmRlcHRoU3RvcmVP
cCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXN0YXRpYyB2b2lkIHVzZUF0dGFjaG1lbnRzKEdQVUNvbW1hbmRCdWZmZXImIGJ1ZmZl
ciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQotewotICAgIGZvciAoYXV0
byYgY29sb3JBdHRhY2htZW50IDogZGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzKQotICAgICAg
ICBidWZmZXIudXNlVGV4dHVyZShXVEZNb3ZlKGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50KSk7
Ci0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudCkKLSAgICAgICAgYnVm
ZmVyLnVzZVRleHR1cmUoV1RGTW92ZSgoKmRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCkuYXR0YWNobWVudCkpOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IEdQVVJl
bmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVy
LCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUo
KSI7Ci0KLSAgICAvLyBPbmx5IG9uZSBjb21tYW5kIGVuY29kZXIgbWF5IGJlIGFjdGl2ZSBhdCBh
IHRpbWUuCi0gICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGFzc0Rlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQYXNz
RGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
IGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0
byBjcmVhdGUgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFwb3B1bGF0ZU10bENvbG9yQXR0
YWNobWVudHNBcnJheShtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHMsIGRlc2Ny
aXB0b3IuY29sb3JBdHRhY2htZW50cywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50Ci0gICAg
ICAgICYmICFwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQobXRsRGVzY3JpcHRvci5n
ZXQoKS5kZXB0aEF0dGFjaG1lbnQsICpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQs
IGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYnVmZmVyLT5l
bmRCbGl0RW5jb2RpbmcoKTsKLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5jb2Rl
cj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
bXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIHJlbmRlckNvbW1h
bmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bEVuY29kZXIpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IC8vIEFsbCBpcyB3ZWxsOyBlbnN1cmUgR1BVQ29tbWFuZEJ1ZmZlciBpcyBhd2FyZSBvZiBuZXcg
YXR0YWNobWVudHMuCi0gICAgdXNlQXR0YWNobWVudHMoYnVmZmVyLCBXVEZNb3ZlKGRlc2NyaXB0
b3IpKTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBhc3NFbmNvZGVy
KFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQotCi1HUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
Y29tbWFuZEJ1ZmZlciwgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiYmIGVuY29k
ZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZm
ZXIpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2Rlcikp
Ci17Ci19Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQotewotICAg
IGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb246
IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
RklYTUU6IE1ldGFsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgTVRMUGlwZWxpbmVTdGF0ZSdzIGF0
dGFjaG1lbnQgZm9ybWF0cyBkbyBub3QgbWF0Y2ggdGhlIE1UTENvbW1hbmRFbmNvZGVyJ3MgYXR0
YWNobWVudCBmb3JtYXRzLgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAocGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCkpCi0gICAgICAgIFttX3BsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXIgc2V0RGVwdGhTdGVuY2lsU3RhdGU6cGlwZWxpbmUtPmRlcHRoU3Rl
bmNpbFN0YXRlKCldOwotCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRSZW5k
ZXJQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCldOwotCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9waXBlbGluZSA9IFdURk1vdmUo
cGlwZWxpbmUpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbG9y
KGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNl
dEJsZW5kQ29sb3IoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRCbGVuZENvbG9yUmVkOmNvbG9y
LnIgZ3JlZW46Y29sb3IuZyBibHVlOmNvbG9yLmIgYWxwaGE6Y29sb3IuYV07Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRW
aWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZpZXdwb3J0OiB7IHgsIHks
IHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCB9XTsKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JS
ZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCgpOiBJbnZh
bGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyIHNldFNjaXNzb3JSZWN0OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfV07
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0
KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxp
ZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmIChvZmZzZXQgPj0gYnVmZmVyLmJ5dGVMZW5ndGgoKSB8fCBvZmZzZXQgJSA0KSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZm
ZXIoKTogSW52YWxpZCBvZmZzZXQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNT
RVJUKGJ1ZmZlci5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAvLyBCdWZmZXIgbXVzdCBiZSBjYWNo
ZWQgdG8gcHJvdmlkZSBpdCB0byBNZXRhbCB2aWEgZHJhd0luZGV4ZWRQcmltaXRpdmVzLgotICAg
IG1faW5kZXhCdWZmZXIgPSBtYWtlUmVmUHRyKGJ1ZmZlcik7Ci0gICAgbV9pbmRleEJ1ZmZlck9m
ZnNldCA9IG9mZnNldDsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4
QnVmZmVycyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiYgYnVm
ZmVycywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsKLSAgICBpZiAoIW1fcGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29k
aW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGJ1
ZmZlcnMuc2l6ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBtdGxCdWZmZXJzID0gYnVm
ZmVycy5tYXAoW3RoaXNdIChhdXRvJiBidWZmZXIpIHsKLSAgICAgICAgY29tbWFuZEJ1ZmZlcigp
LnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci0+cGxh
dGZvcm1CdWZmZXIoKSk7Ci0gICAgICAgIHJldHVybiBidWZmZXItPnBsYXRmb3JtQnVmZmVyKCk7
Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGluZGV4UmFuZ2VzID0gTlNNYWtlUmFuZ2UoV0hMU0w6Ok1l
dGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCksIGJ1ZmZlcnMuc2l6ZSgpKTsK
LQotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0VmVydGV4QnVmZmVyczptdGxC
dWZmZXJzLmRhdGEoKSBvZmZzZXRzOihjb25zdCBOU1VJbnRlZ2VyICopb2Zmc2V0cy5kYXRhKCkg
d2l0aFJhbmdlOmluZGV4UmFuZ2VzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LX0KLQotc3RhdGljIE1UTFByaW1pdGl2ZVR5cGUgbXRsUHJpbWl0aXZlVHlwZUZvckdQVVByaW1p
dGl2ZVRvcG9sb2d5KEdQVVByaW1pdGl2ZVRvcG9sb2d5IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6UG9pbnRMaXN0OgotICAgICAg
ICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVBvaW50OwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9w
b2xvZ3k6OkxpbmVMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZUxpbmU7Ci0g
ICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6TGluZVN0cmlwOgotICAgICAgICByZXR1cm4g
TVRMUHJpbWl0aXZlVHlwZUxpbmVTdHJpcDsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5
OjpUcmlhbmdsZUxpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlVHJpYW5nbGU7
Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVTdHJpcDoKLSAgICAgICAg
cmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVUcmlhbmdsZVN0cmlwOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVu
c2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJz
dFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1S
ZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogTm8gdmFsaWQgR1BVUmVu
ZGVyUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
IAotICAgICAgICBkcmF3UHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZl
VG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAgdmVydGV4
U3RhcnQ6Zmlyc3RWZXJ0ZXgKLSAgICAgICAgdmVydGV4Q291bnQ6dmVydGV4Q291bnQKLSAgICAg
ICAgaW5zdGFuY2VDb3VudDppbnN0YW5jZUNvdW50Ci0gICAgICAgIGJhc2VJbnN0YW5jZTpmaXJz
dEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBN
VExJbmRleFR5cGUgbXRsSW5kZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQoR1BVSW5kZXhGb3JtYXQg
Zm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVJbmRleEZvcm1h
dDo6VWludDE2OgotICAgICAgICByZXR1cm4gTVRMSW5kZXhUeXBlVUludDE2OwotICAgIGNhc2Ug
R1BVSW5kZXhGb3JtYXQ6OlVpbnQzMjoKLSAgICAgICAgcmV0dXJuIE1UTEluZGV4VHlwZVVJbnQz
MjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQg
aW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2ln
bmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQo
KSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRl
ZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9w
aXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZhbGlkIEdQVVJlbmRlclBp
cGVsaW5lIGZvdW5kISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKCFtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICIlczogTm8gR1BVSW5kZXhGb3JtYXQgc3BlY2lmaWVkISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2luZGV4QnVmZmVyIHx8ICFtX2luZGV4QnVm
ZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gdmFs
aWQgaW5kZXggYnVmZmVyIHNldCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBpbmRleEJ5dGVTaXplID0gKG1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0
KCkgPT0gR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNikgPyBzaXplb2YodWludDE2X3QpIDogc2l6ZW9m
KHVpbnQzMl90KTsKLQotICAgIC8vIFRoaXMgY2FsY3VsYXRpb24gY2Fubm90IG92ZXJmbG93IGFz
IGZpcnN0SW5kZXggaXMgYm91bmRlZCB0byAzMiBiaXRzLCBhbmQgaW5kZXhCeXRlU2l6ZSB0byBz
aXplb2YodWludDMyX3QpLgotICAgIHVpbnQ2NF90IGZpcnN0SW5kZXhPZmZzZXQgPSBmaXJzdElu
ZGV4ICogaW5kZXhCeXRlU2l6ZTsKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQgbmVp
dGhlciBhcmd1bWVudCBub3IgdGhlaXIgc3VtIHdpbGwgb3ZlcmZsb3cgTlNVSW50ZWdlci4KLSAg
ICBhdXRvIHRvdGFsT2Zmc2V0ID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihmaXJzdEluZGV4T2Zm
c2V0LCBtX2luZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBpZiAodG90YWxPZmZzZXQuaGFzT3ZlcmZs
b3dlZCgpIHx8IHRvdGFsT2Zmc2V0ID49IG1faW5kZXhCdWZmZXItPmJ5dGVMZW5ndGgoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgZmlyc3RJbmRleCEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tbWFuZEJ1ZmZlcigpLnVzZUJ1
ZmZlcihtYWtlUmVmKCptX2luZGV4QnVmZmVyKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyCi0gICAgICAgIGRyYXdJ
bmRleGVkUHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3ko
bV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAgaW5kZXhDb3VudDppbmRl
eENvdW50Ci0gICAgICAgIGluZGV4VHlwZTptdGxJbmRleFR5cGVGb3JHUFVJbmRleEZvcm1hdCgq
bV9waXBlbGluZS0+aW5kZXhGb3JtYXQoKSkKLSAgICAgICAgaW5kZXhCdWZmZXI6bV9pbmRleEJ1
ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBpbmRleEJ1ZmZlck9mZnNldDp0b3RhbE9m
ZnNldC52YWx1ZSgpCi0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFuY2VDb3VudAotICAgICAg
ICBiYXNlVmVydGV4OmJhc2VWZXJ0ZXgKLSAgICAgICAgYmFzZUluc3RhbmNlOmZpcnN0SW5zdGFu
Y2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2lmIFVTRShNRVRBTCkK
LQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3Vy
Y2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6cmVzb3VyY2UgdXNhZ2U6
dXNhZ2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBO
U1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZv
cm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIg
b2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKGNv
bnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgp
Ci17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
IHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2VuZGlmIC8vIFVTRShNRVRBTCkK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI2ZTc3ZTY5NTdiZmI0OTU0NDEyMjUxYTAzOTg1NjljOTY0M2E4YTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNp
bXBvcnQgIkdQVUxpbWl0cy5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlv
dXQuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAi
R1BVVXRpbHMuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0
ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgotI2ltcG9ydCA8d3RmL0hhc2hTZXQu
aD4KLSNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IHRyeUNy
ZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IgbmV3
XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2Ny
aXB0b3IpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJVbmFi
bGUgdG8gY3JlYXRlIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbXRsRGVwdGhDb21wYXJlID0gc3RhdGljX2Nh
c3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBh
cmVGdW5jdGlvbihkZXNjcmlwdG9yLmRlcHRoQ29tcGFyZSkpOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOm10bERlcHRoQ29tcGFyZV07Ci0gICAgW210bERlc2Ny
aXB0b3Igc2V0RGVwdGhXcml0ZUVuYWJsZWQ6ZGVzY3JpcHRvci5kZXB0aFdyaXRlRW5hYmxlZF07
Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJhY2svZnJvbnRGYWNlU3RlbmNpbC4KLQotICAg
IFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gc3RhdGU7Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHN0YXRlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9y
LmdldCgpXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXN0
YXRlKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3Ig
Y3JlYXRpbmcgTVRMRGVwdGhTdGVuY2lsU3RhdGUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIHJldHVybiBzdGF0ZTsKLX0KLQotc3RhdGljIFdITFNMOjpWZXJ0ZXhG
b3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KQot
ewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6
OkZsb2F0NDoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMy
QjMyQTMyOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDM6Ci0gICAgICAgIHJldHVy
biBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMjsKLSAgICBjYXNlIEdQVVZlcnRl
eEZvcm1hdDo6RmxvYXQyOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6Rmxv
YXRSMzJHMzI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZlcnRleEZvcm1hdCA9PSBH
UFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0KTsKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3Jt
YXQ6OkZsb2F0UjMyOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlRl
eHR1cmVGb3JtYXQ+IGNvbnZlcnRUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0
KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpS
Z2JhOHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OlJHQkE4VW5v
cm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgotICAgICAgICByZXR1
cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJl
Rm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRoaXMuCi0gICAgY2FzZSBH
UFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpU
ZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6
OlJnYmExNmZsb2F0OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OlJHQkEx
NkZsb2F0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotfQotCi1zdGF0aWMgTVRMVmVydGV4Rm9ybWF0IG10bFZlcnRleEZvcm1hdEZvckdQVVZlcnRl
eEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7
Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0OgotICAgICAgICByZXR1cm4gTVRMVmVy
dGV4Rm9ybWF0RmxvYXQ7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MjoKLSAgICAg
ICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0MjsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1h
dDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQzOwotICAgIGNh
c2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhGb3Jt
YXRGbG9hdDQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRp
YyBNVExWZXJ0ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0aW9uRm9yR1BVSW5wdXRTdGVwTW9k
ZShHUFVJbnB1dFN0ZXBNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2Fz
ZSBHUFVJbnB1dFN0ZXBNb2RlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhTdGVw
RnVuY3Rpb25QZXJWZXJ0ZXg7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBNb2RlOjpJbnN0YW5jZToK
LSAgICAgICAgcmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlvblBlckluc3RhbmNlOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0vLyBGSVhNRTogTW92ZSB0aGlzIGlu
dG8gR1BVTGltaXRzIHdoZW4gdGhhdCBpcyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KLWNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7Ci0KLXN0YXRpYyBib29sIHRyeVNl
dFZlcnRleElucHV0KGNvbnN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVy
cm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBjb25zdCBhdXRvJiBidWZmZXJzID0gZGVz
Y3JpcHRvci52ZXJ0ZXhCdWZmZXJzOwotCi0gICAgaWYgKGJ1ZmZlcnMuc2l6ZSgpID4gbWF4VmVy
dGV4QnVmZmVycykgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IlRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzISIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBtdGxWZXJ0ZXhEZXNjcmlwdG9yID0gYWRvcHROUyhb
TVRMVmVydGV4RGVzY3JpcHRvciBuZXddKTsKLQotICAgIGF1dG8gbGF5b3V0QXJyYXkgPSByZXRh
aW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzKTsKLSAgICBhdXRvIGF0dHJp
YnV0ZUFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCkuYXR0cmlidXRl
cyk7Ci0KLSAgICAvLyBBdHRyaWJ1dGUgc2hhZGVyTG9jYXRpb25zIG11c3QgYmUgdW5pcXVlbHkg
ZmxhdC1tYXBwZWQgdG8gWzAsIHttYXggbnVtYmVyIG9mIHZlcnRleCBhdHRyaWJ1dGVzfV0uCi0g
ICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXggPSAwOwotICAgIEhhc2hTZXQ8dW5zaWduZWQsIElu
dEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4gbG9jYXRpb25zOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGJ1
ZmZlcnMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmICghYnVmZmVyc1tpbmRleF0pCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBhdHRyaWJ1dGVzID0g
YnVmZmVyc1tpbmRleF0tPmF0dHJpYnV0ZVNldDsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcy5z
aXplKCkgKyBhdHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAg
ICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9vIG1hbnkgR1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvcnMhIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBOU1VJbnRlZ2VyIGlucHV0U3RyaWRlID0gMDsKLSAgICAgICAgaWYg
KCFXVEY6OmNvbnZlcnRTYWZlbHkoYnVmZmVyc1tpbmRleF0tPnN0cmlkZSwgaW5wdXRTdHJpZGUp
KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0
cmluZygiU3RyaWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yICIsIGluZGV4LCAiIGlz
IHRvbyBsYXJnZSEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlckluZGV4ID0gV0hMU0w6Ok1ldGFsOjpjYWxjdWxh
dGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCk7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgICAgIGF1dG8gbXRsTGF5b3V0RGVzYyA9IHJldGFpblB0cihbbGF5b3V0
QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmNvbnZlcnRlZEJ1ZmZlckluZGV4XSk7Ci0g
ICAgICAgIFttdGxMYXlvdXREZXNjIHNldFN0ZXBGdW5jdGlvbjptdGxTdGVwRnVuY3Rpb25Gb3JH
UFVJbnB1dFN0ZXBNb2RlKGJ1ZmZlcnNbaW5kZXhdLT5zdGVwTW9kZSldOwotICAgICAgICBbbXRs
TGF5b3V0RGVzYyBzZXRTdHJpZGU6aW5wdXRTdHJpZGVdOwotICAgICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiBhdHRy
aWJ1dGVzKSB7Ci0gICAgICAgICAgICBpZiAoIWxvY2F0aW9ucy5hZGQoYXR0cmlidXRlLnNoYWRl
ckxvY2F0aW9uKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxpY2F0ZSBzaGFkZXJMb2NhdGlvbiAi
LCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZlcnRleCBhdHRyaWJ1dGUhIikpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgTlNVSW50ZWdlciBvZmZzZXQgPSAwOwotICAgICAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRT
YWZlbHkoYXR0cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewotICAgICAgICAgICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJCdWZmZXIgb2Zmc2V0IGZv
ciB2ZXJ0ZXggYXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiwgIiBpcyB0b28g
bGFyZ2UhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgICAgICBh
dXRvIG10bEF0dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0dHJpYnV0ZUFycmF5IG9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDphdHRyaWJ1dGVJbmRleF0pOwotICAgICAgICAgICAgW210bEF0dHJp
YnV0ZURlc2Mgc2V0Rm9ybWF0Om10bFZlcnRleEZvcm1hdEZvckdQVVZlcnRleEZvcm1hdChhdHRy
aWJ1dGUuZm9ybWF0KV07Ci0gICAgICAgICAgICBbbXRsQXR0cmlidXRlRGVzYyBzZXRPZmZzZXQ6
b2Zmc2V0XTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNldEJ1ZmZlckluZGV4OmNv
bnZlcnRlZEJ1ZmZlckluZGV4XTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgICAgICAgICAgaWYgKHdobHNsRGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICB3
aGxzbERlc2NyaXB0b3ItPnZlcnRleEF0dHJpYnV0ZXMuYXBwZW5kKHsgY29udmVydFZlcnRleEZv
cm1hdChhdHRyaWJ1dGUuZm9ybWF0KSwgYXR0cmlidXRlLnNoYWRlckxvY2F0aW9uLCBhdHRyaWJ1
dGVJbmRleCB9KTsKLQotICAgICAgICAgICAgKythdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleERlc2NyaXB0b3I6bXRsVmVydGV4
RGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIE1UTENv
bG9yV3JpdGVNYXNrIG10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JXcml0ZUZsYWdzKEdQVUNv
bG9yV3JpdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxhZ3MgPT0gc3RhdGljX2Nhc3Q8R1BV
Q29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxsKSkKLSAgICAgICAgcmV0
dXJuIE1UTENvbG9yV3JpdGVNYXNrQWxsOwotCi0gICAgYXV0byBvcHRpb25zID0gT3B0aW9uU2V0
PEdQVUNvbG9yV3JpdGU6OkZsYWdzPjo6ZnJvbVJhdyhmbGFncyk7Ci0KLSAgICBNVExDb2xvcldy
aXRlTWFzayBtYXNrID0gTVRMQ29sb3JXcml0ZU1hc2tOb25lOwotICAgIGlmIChvcHRpb25zICYg
R1BVQ29sb3JXcml0ZTo6RmxhZ3M6OlJlZCkKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRl
TWFza1JlZDsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpHcmVlbikK
LSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza0dyZWVuOwotICAgIGlmIChvcHRpb25z
ICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkJsdWUpCi0gICAgICAgIG1hc2sgfD0gTVRMQ29sb3JX
cml0ZU1hc2tCbHVlOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkFs
cGhhKQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQWxwaGE7Ci0KLSAgICByZXR1
cm4gbWFzazsKLX0KLQotc3RhdGljIE1UTEJsZW5kT3BlcmF0aW9uIG10bEJsZW5kT3BlcmF0aW9u
Rm9yR1BVQmxlbmRPcGVyYXRpb24oR1BVQmxlbmRPcGVyYXRpb24gb3ApCi17Ci0gICAgc3dpdGNo
IChvcCkgewotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OkFkZDoKLSAgICAgICAgcmV0dXJu
IE1UTEJsZW5kT3BlcmF0aW9uQWRkOwotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OlN1YnRy
YWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25TdWJ0cmFjdDsKLSAgICBjYXNl
IEdQVUJsZW5kT3BlcmF0aW9uOjpSZXZlcnNlU3VidHJhY3Q6Ci0gICAgICAgIHJldHVybiBNVExC
bGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9u
OjpNaW46Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1pbjsKLSAgICBjYXNlIEdQ
VUJsZW5kT3BlcmF0aW9uOjpNYXg6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1h
eDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTEJs
ZW5kRmFjdG9yIG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3IoR1BVQmxlbmRGYWN0b3Ig
ZmFjdG9yKQotewotICAgIHN3aXRjaCAoZmFjdG9yKSB7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rv
cjo6WmVybzoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yWmVybzsKLSAgICBjYXNlIEdQ
VUJsZW5kRmFjdG9yOjpPbmU6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3Rvck9uZTsKLSAg
ICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5k
RmFjdG9yU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNTcmND
b2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2VDb2xvcjsK
LSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJs
ZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNT
cmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2VBbHBo
YTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpEc3RDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1U
TEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvcjsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpP
bmVNaW51c0RzdENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JPbmVNaW51c0Rl
c3RpbmF0aW9uQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6RHN0QWxwaGE6Ci0gICAg
ICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGE7Ci0gICAgY2FzZSBHUFVC
bGVuZEZhY3Rvcjo6T25lTWludXNEc3RBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OlNy
Y0FscGhhU2F0dXJhdGVkOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JTb3VyY2VBbHBo
YTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpCbGVuZENvbG9yOgotICAgICAgICByZXR1cm4g
TVRMQmxlbmRGYWN0b3JCbGVuZENvbG9yOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1p
bnVzQmxlbmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNCbGVu
ZENvbG9yOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMg
Ym9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8R1BVQ29sb3JTdGF0ZURlc2NyaXB0
b3I+JiBjb2xvclN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqIGFycmF5LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsK
LSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0gbnVtYmVyIG9mIGNvbG9yIGF0dGFj
aG1lbnRzIHBlciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0cy4KLSAgICBpZiAoY29sb3JTdGF0
ZXMuc2l6ZSgpID4gNCkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyEiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbG9yU3RhdGVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGF1dG8mIHN0YXRlID0gY29sb3JTdGF0ZXNbaV07Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRv
ciA9IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmldKTsKLSAgICAg
ICAgW2Rlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+
KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoc3RhdGUuZm9ybWF0KSld
OwotICAgICAgICBbZGVzY3JpcHRvciBzZXRXcml0ZU1hc2s6bXRsQ29sb3JXcml0ZU1hc2tGb3JH
UFVDb2xvcldyaXRlRmxhZ3Moc3RhdGUud3JpdGVNYXNrKV07Ci0gICAgICAgIFtkZXNjcmlwdG9y
IHNldEJsZW5kaW5nRW5hYmxlZDpZRVNdOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRBbHBoYUJs
ZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRPcGVyYXRpb24oc3RhdGUu
YWxwaGFCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0UmdiQmxlbmRP
cGVyYXRpb246bXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVuZE9wZXJhdGlvbihzdGF0ZS5jb2xv
ckJsZW5kLm9wZXJhdGlvbildOwotICAgICAgICBbZGVzY3JpcHRvciBzZXREZXN0aW5hdGlvbkFs
cGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZhY3RvcihzdGF0ZS5hbHBo
YUJsZW5kLmRzdEZhY3RvcildOwotICAgICAgICBbZGVzY3JpcHRvciBzZXREZXN0aW5hdGlvblJH
QkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29sb3JC
bGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0U291cmNlQWxwaGFCbGVu
ZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFjdG9yKHN0YXRlLmFscGhhQmxlbmQu
c3JjRmFjdG9yKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFNvdXJjZVJHQkJsZW5kRmFjdG9y
Om10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29sb3JCbGVuZC5zcmNGYWN0
b3IpXTsKLQotICAgICAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBmb3JtYXQgPSBjb252ZXJ0VGV4dHVyZUZvcm1hdChzdGF0ZS5mb3JtYXQpKQotICAgICAg
ICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+YXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0
YWNobWVudERlc2NyaXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwgaX0pOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1h
a2VTdHJpbmcoIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBmb3IgR1BVQ29sb3JTdGF0ZURlc2Ny
aXB0b3IgIiwgaSwgIiEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldE1ldGFsRnVuY3Rp
b25zKE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwgTVRMTGlicmFyeSAqZnJhZ21lbnRN
ZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwg
Y29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVu
dEVudHJ5UG9pbnROYW1lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgewot
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICAvLyBNZXRhbCBy
ZXF1aXJlcyBhIHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBlbGluZXMuCi0gICAgICAg
IGlmICghdmVydGV4TWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIHZlcnRleCBzdGFnZSBkb2VzIG5vdCBl
eGlzdCEiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFt2ZXJ0ZXhNZXRhbExpYnJhcnkgbmV3RnVuY3Rpb25X
aXRoTmFtZTp2ZXJ0ZXhFbnRyeVBvaW50TmFtZV0pOwotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7
Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmlu
ZygiQ2Fubm90IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gJyIsIHZlcnRleEVudHJ5UG9pbnRO
YW1lLCAiJyEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICBbbXRsRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0K
LSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgLy8gSG93ZXZlciwgZnJh
Z21lbnQgc2hhZGVycyBhcmUgb3B0aW9uYWwuCi0gICAgICAgIGlmICghZnJhZ21lbnRNZXRhbExp
YnJhcnkgfHwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtmcmFnbWVudE1l
dGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdtZW50RW50cnlQb2ludE5hbWVdKTsK
LQotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSBmcmFnbWVudCBNVExG
dW5jdGlvbiAnIiwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgIichIikpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERlc2NyaXB0b3Igc2V0RnJh
Z21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mIGZyYWdtZW50U3RhZ2UsIGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIG10bERlc2NyaXB0b3IsIHN0
ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3Jp
cHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0cjxNVExM
aWJyYXJ5PiB2ZXJ0ZXhMaWJyYXJ5LCBmcmFnbWVudExpYnJhcnk7Ci0gICAgU3RyaW5nIHZlcnRl
eEVudHJ5UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludDsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0
b3IpIHsKLSAgICAgICAgQVNTRVJUKHZlcnRleFN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSk7
Ci0gICAgICAgIEFTU0VSVCghZnJhZ21lbnRTdGFnZSB8fCBmcmFnbWVudFN0YWdlLT5tb2R1bGUt
PndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3JpcHRvci0+dmVydGV4RW50cnlQ
b2ludE5hbWUgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAgICBpZiAoZnJhZ21lbnRT
dGFnZSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZnJhZ21lbnRFbnRyeVBvaW50TmFt
ZSA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBp
bGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgqdmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVs
ZSgpLCBmcmFnbWVudFN0YWdlID8gZnJhZ21lbnRTdGFnZS0+bW9kdWxlLT53aGxzbE1vZHVsZSgp
IDogbnVsbHB0ciwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxl
UmVzdWx0KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
bWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVy
cm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwotCi0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAgICAgICAgaWYgKFdITFNM
OjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIw
MDQ3NCBBZGQgZGlyZWN0IFN0cmluZ0J1aWxkZXIgLT4gTlNTdHJpbmcgY29udmVyc2lvbiB0byBh
dm9pZCBleHRyYSBjb3B5IGludG8gYSBXVEY6OlN0cmluZwotICAgICAgICB2ZXJ0ZXhMaWJyYXJ5
ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6
d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygpIG9wdGlvbnM6bmlsIGVy
cm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykK
LSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1lczogIiwgKE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYgKCF2ZXJ0ZXhMaWJyYXJ5
ICYmIGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7Ci0jaWZuZGVmIE5ERUJV
RwotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRpZgotICAgICAgICB9Ci0K
LSAgICAgICAgQVNTRVJUKHZlcnRleExpYnJhcnkpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBPbmNlIHdlIHplcm8tZmls
bCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywgc28gd2Ugc2hvdWxkIGJl
IGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBmcmFnbWVudExpYnJhcnkg
PSB2ZXJ0ZXhMaWJyYXJ5OwotICAgICAgICB2ZXJ0ZXhFbnRyeVBvaW50ID0gd2hsc2xDb21waWxl
UmVzdWx0LT5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICAgICAg
aWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICBmcmFnbWVudEVudHJ5UG9pbnQgPSB3aGxz
bENvbXBpbGVSZXN1bHQtPm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lLnRvU3RyaW5nKCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IHZlcnRleFN0YWdlLm1vZHVs
ZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAgdmVydGV4RW50cnlQb2ludCA9IHZl
cnRleFN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgICAgIGlmIChmcmFnbWVudFN0YWdlKSB7Ci0gICAg
ICAgICAgICBmcmFnbWVudExpYnJhcnkgPSBmcmFnbWVudFN0YWdlLT5tb2R1bGUtPnBsYXRmb3Jt
U2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgICAgICBmcmFnbWVudEVudHJ5UG9pbnQgPSBmcmFnbWVu
dFN0YWdlLT5lbnRyeVBvaW50OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRyeVNl
dE1ldGFsRnVuY3Rpb25zKHZlcnRleExpYnJhcnkuZ2V0KCksIGZyYWdtZW50TGlicmFyeS5nZXQo
KSwgbXRsRGVzY3JpcHRvciwgdmVydGV4RW50cnlQb2ludCwgZnJhZ21lbnRFbnRyeVBvaW50LCBl
cnJvclNjb3Blcyk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yPiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHNoYWRlciBzb3VyY2Ug
aXMgaW4gV0hMU0wgb3IgTVNMLgotICAgIGNvbnN0IGF1dG8mIHZlcnRleFN0YWdlID0gZGVzY3Jp
cHRvci52ZXJ0ZXhTdGFnZTsKLSAgICBjb25zdCBhdXRvJiBmcmFnbWVudFN0YWdlID0gZGVzY3Jp
cHRvci5mcmFnbWVudFN0YWdlOwotCi0gICAgaWYgKGZyYWdtZW50U3RhZ2UgJiYgc3RhdGljX2Nh
c3Q8Ym9vbD4odmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpKSAhPSBzdGF0aWNfY2Fz
dDxib29sPihmcmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPndo
bHNsTW9kdWxlKCk7Ci0KLSAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1ldGFsIHBpcGVsaW5lIGRl
c2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIHN0ZDo6b3B0aW9uYWw8V0hM
U0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9yOwotICAgIGlmIChp
c1dobHNsKQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoIXRyeVNldFZlcnRleElucHV0KGRlc2NyaXB0b3IudmVy
dGV4SW5wdXQsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29w
ZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghdHJ5U2V0Q29sb3JTdGF0
ZXMoZGVzY3JpcHRvci5jb2xvclN0YXRlcywgbXRsRGVzY3JpcHRvci5nZXQoKS5jb2xvckF0dGFj
aG1lbnRzLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7
Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5
b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5
b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghdHJ5
U2V0RnVuY3Rpb25zKHZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBkZXZpY2UsIG10bERlc2Ny
aXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwotfQotCi1zdGF0aWMgUmV0
YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNyZWF0ZU10bFJlbmRlclBpcGVsaW5l
U3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAg
IGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gY29udmVydFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZpY2UsIGVycm9yU2NvcGVzKTsKLSAg
ICBpZiAoIW10bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0
YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwotCi0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBwaXBl
bGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOiZlcnJvcl0pOwot
ICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRF
cnJvcihlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBwaXBlbGluZTsKLX0KLQotUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5w
bGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRF
cnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gZGVwdGhTdGVuY2lsOwot
Ci0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUgJiYgIShkZXB0aFN0ZW5jaWwg
PSB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSgqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxT
dGF0ZSwgZGV2aWNlLCBlcnJvclNjb3BlcykpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
Mzg3IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGlzbid0IGltcGxlbWVudGVkIHll
dCBmb3IgV0hMU0wgY29tcGlsZXIuCi0KLSAgICBhdXRvIHBpcGVsaW5lID0gdHJ5Q3JlYXRlTXRs
UmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLSAg
ICBpZiAoIXBpcGVsaW5lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZN
b3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52
ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5sYXlvdXQsIGRlc2NyaXB0b3IpKTsK
LX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExE
ZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBl
bGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9neSB0b3BvbG9neSwgc3Rk
OjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gZm9ybWF0LCBjb25zdCBSZWZQdHI8R1BVUGlwZWxp
bmVMYXlvdXQ+JiBsYXlvdXQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2Um
IHJlbmRlckRlc2NyaXB0b3JCYXNlKQotICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9kZXB0
aFN0ZW5jaWxTdGF0ZShXVEZNb3ZlKGRlcHRoU3RlbmNpbCkpCi0gICAgLCBtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3ByaW1pdGl2ZVRvcG9sb2d5
KHRvcG9sb2d5KQotICAgICwgbV9pbmRleEZvcm1hdChmb3JtYXQpCi0gICAgLCBtX2xheW91dChs
YXlvdXQpCi0gICAgLCBtX3JlbmRlckRlc2NyaXB0b3JCYXNlKHJlbmRlckRlc2NyaXB0b3JCYXNl
KQotewotfQotCi1HUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBpcGVsaW5lKCkgPSBkZWZh
dWx0OwotCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBz
dGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0
YWdlKQotewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKG1ha2VS
ZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFn
bWVudFN0YWdlKSwgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZSk7Ci0gICAgYXV0byBlcnJvclNjb3Bl
cyA9IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoW10gKEdQVUVycm9yJiYpIHsgfSk7Ci0gICAgaWYg
KGF1dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGRldmljZSwg
ZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1SZW5kZXJQaXBl
bGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmFmOTczNTQ1YmRkNzhjNjhjZjI4MzA4ZGJjNjAyZDAxNzZlMGRh
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKLSNp
bXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgTVRMU2FtcGxlckFkZHJlc3NNb2RlIG10bEFkZHJlc3NNb2Rl
Rm9yQWRkcmVzc01vZGUoR1BVQWRkcmVzc01vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUp
IHsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZToKLSAgICAgICAgcmV0dXJu
IE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOwotICAgIGNhc2UgR1BVQWRkcmVzc01v
ZGU6OlJlcGVhdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdDsK
LSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpNaXJyb3JSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBN
VExTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWluTWFnRmlsdGVyIG10bE1pbk1h
Z0ZpbHRlckZvckZpbHRlck1vZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAo
bW9kZSkgewotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoKLSAgICAgICAgcmV0dXJu
IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OwotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6
TGluZWFyOgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTFNhbXBsZXJN
aXBGaWx0ZXIgbXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShHUFVGaWx0ZXJNb2RlIG1vZGUpCi17
Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpOZWFyZXN0Ogot
ICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlck5lYXJlc3Q7Ci0gICAgY2FzZSBHUFVG
aWx0ZXJNb2RlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyTWlwRmlsdGVyTGlu
ZWFyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgUmV0
YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gdHJ5Q3JlYXRlTXRsU2FtcGxlclN0YXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
LXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExTYW1wbGVyRGVz
Y3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExTYW1wbGVyRGVzY3JpcHRvciBuZXdd
KTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0
b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRyeUNyZWF0ZSgpOiBFcnJv
ciBjcmVhdGluZyBNVExTYW1wbGVyRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxlcjsKLQot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttdGxEZXNjcmlwdG9yIHNldFJB
ZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVz
c01vZGVVKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOm10bEFkZHJlc3NN
b2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVYpXTsKLSAgICBbbXRsRGVz
Y3JpcHRvciBzZXRUQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JBZGRyZXNzTW9kZShkZXNj
cmlwdG9yLmFkZHJlc3NNb2RlVyldOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjpt
dGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWluRmlsdGVyKV07Ci0gICAg
W210bERlc2NyaXB0b3Igc2V0TWFnRmlsdGVyOm10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUo
ZGVzY3JpcHRvci5tYWdGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNaXBGaWx0ZXI6
bXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9yLm1pcG1hcEZpbHRlcildOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldExvZE1pbkNsYW1wOmRlc2NyaXB0b3IubG9kTWluQ2xhbXBdOwot
ICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1heENsYW1wOmRlc2NyaXB0b3IubG9kTWF4Q2xhbXBd
OwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1heEFuaXNvdHJvcHk6ZGVzY3JpcHRvci5tYXhBbmlz
b3Ryb3B5XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wYXJlRnVuY3Rpb246c3RhdGljX2Nh
c3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBh
cmVGdW5jdGlvbihkZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlvbikpXTsKLQotICAgIFttdGxEZXNj
cmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6WUVTXTsKLQotICAgIHNhbXBsZXIgPSBh
ZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3Jp
cHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgaWYgKCFzYW1wbGVyKQotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU2FtcGxlcjo6
dHJ5Q3JlYXRlKCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBsZXJTdGF0ZSEiKTsKLQotICAgIHJl
dHVybiBzYW1wbGVyOwotfQotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BVU2FtcGxlcjo6dHJ5Q3Jl
YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSB0cnlDcmVhdGVNdGxTYW1wbGVyU3Rh
dGUoZGV2aWNlLCBkZXNjcmlwdG9yKTsKLSAgICBpZiAoIXNhbXBsZXIpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTYW1wbGVyKFdURk1vdmUo
c2FtcGxlcikpKTsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihSZXRhaW5QdHI8TVRMU2Ft
cGxlclN0YXRlPiYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2FtcGxlcihXVEZNb3ZlKHNh
bXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NjY0NGMzNWIwYjAwOWQxZDlmNjEwOTFhM2ZmYmY3ZmQ2M2I5
MGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5o
IgotI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAo
IWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTaGFk
ZXJNb2R1bGU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChHUFVEZXZpY2U6OnVzZVdITFNMKQotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXSExTTDo6Y3JlYXRlU2hh
ZGVyTW9kdWxlKGRlc2NyaXB0b3IuY29kZSkpKTsKLQotICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxl
U21hcnRQdHIgbW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5X
ZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtb2R1bGUgPSBhZG9wdE5TKFtk
ZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpkZXNjcmlwdG9yLmNv
ZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtb2R1bGUpCi0gICAgICAg
IExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJyb3I6ICVzIiwgW1tlcnJvciBsb2Nh
bGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgcmV0dXJuIG1vZHVsZSA/IGFkb3B0UmVmKG5ldyBHUFVTaGFkZXJNb2R1
bGUoV1RGTW92ZShtb2R1bGUpKSkgOiBudWxscHRyOwotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQ
VVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQotICAg
IDogbV9wbGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCi17Ci19Ci0KLUdQVVNo
YWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9kdWxl
PiYmIHdobHNsTW9kdWxlKQotICAgIDogbV93aGxzbE1vZHVsZSh3aGxzbE1vZHVsZS5tb3ZlVG9V
bmlxdWVQdHIoKSkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2Fw
Q2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZj
Yzg5MzUzMjBhMDQ5MmQyZmNkNTM0OTNhNjJhMDJjNDAxOWZjOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
NzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
U3dhcENoYWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVRleHR1
cmVGb3JtYXQuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0j
aW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNVExQ
aXhlbEZvcm1hdD4gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBm
b3JtYXQpCi17Ci0gICAgYXV0byBtdGxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1h
dD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChmb3JtYXQpKTsKLQot
ICAgIHN3aXRjaCAobXRsRm9ybWF0KSB7Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5v
cm06Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JHQjoKLSAgICBjYXNlIE1U
TFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBtdGxGb3JtYXQ7Ci0gICAg
ZGVmYXVsdDogewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUo
KTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc2V0TGF5ZXJTaGFwZShXZWJH
UFVMYXllciAqbGF5ZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBbbGF5ZXIgc2V0
Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOwotICAgIFtsYXllciBzZXRE
cmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci19Ci0KLXN0YXRpYyBSZXRh
aW5QdHI8V2ViR1BVTGF5ZXI+IHRyeUNyZWF0ZVdlYkdQVUxheWVyKE1UTERldmljZSAqZGV2aWNl
LCBNVExQaXhlbEZvcm1hdCBmb3JtYXQsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
PiB1c2FnZSkKLXsKLQotICAgIFJldGFpblB0cjxXZWJHUFVMYXllcj4gbGF5ZXI7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1dlYkdQVUxh
eWVyIG5ld10pOwotCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWIgR1BVIExheWVyIl07Ci0gICAg
W2xheWVyIHNldE9wYXF1ZTowXTsKLQotICAgIFtsYXllciBzZXREZXZpY2U6ZGV2aWNlXTsKLSAg
ICBbbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5Oih1c2FnZSA9PSBHUFVUZXh0dXJlVXNhZ2U6OkZs
YWdzOjpPdXRwdXRBdHRhY2htZW50KV07Ci0gICAgW2xheWVyIHNldFBpeGVsRm9ybWF0OmZvcm1h
dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFsYXllcikKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBj
cmVhdGUgQ0FNZXRhbExheWVyISIpOwotCi0gICAgcmV0dXJuIGxheWVyOwotfQotCi1SZWZQdHI8
R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYg
KCFkZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSB0
cnlHZXRTdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCk7Ci0gICAgaWYgKCFw
aXhlbEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHVzYWdlT3B0
aW9ucyA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6ZnJvbVJhdyhkZXNjcmlw
dG9yLnVzYWdlKTsKLSAgICBpZiAoIXVzYWdlT3B0aW9ucy5jb250YWlucyhHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
U3dhcENoYWluOjp0cnlDcmVhdGUoKTogU3dhcCBjaGFpbiB1c2FnZSBtdXN0IGluY2x1ZGUgT1VU
UFVUX0FUVEFDSE1FTlQhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IGF1dG8gbGF5ZXIgPSB0cnlDcmVhdGVXZWJHUFVMYXllcihkZXNjcmlwdG9yLmRldmljZS0+cGxh
dGZvcm1EZXZpY2UoKSwgKnBpeGVsRm9ybWF0LCB1c2FnZU9wdGlvbnMpOwotICAgIGlmICghbGF5
ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc2V0TGF5ZXJTaGFwZShsYXllci5n
ZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhdXRvIHN3YXBDaGFpbiA9IGFkb3B0UmVmKG5l
dyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShsYXllciksIHVzYWdlT3B0aW9ucykpOwotICAgIGRlc2Ny
aXB0b3IuZGV2aWNlLT5zZXRTd2FwQ2hhaW4oc3dhcENoYWluLmNvcHlSZWYoKSk7Ci0gICAgcmV0
dXJuIHN3YXBDaGFpbjsKLX0KLQotR1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4oUmV0YWluUHRy
PFdlYkdQVUxheWVyPiYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzPiB1c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRmb3JtU3dhcExheWVyKFdURk1vdmUo
cGxhdGZvcm1MYXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdlT3B0aW9ucykKLXsKLSAgICBbbV9w
bGF0Zm9ybVN3YXBMYXllciBzZXRTd2FwQ2hhaW46dGhpc107Ci19Ci0KLVJlZlB0cjxHUFVUZXh0
dXJlPiBHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAgICBSZXRhaW5Q
dHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAgIG1fY3VycmVudERyYXdh
YmxlID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVyIG5leHREcmF3YWJsZV0pOwotICAg
IG10bFRleHR1cmUgPSBbbV9jdXJyZW50RHJhd2FibGUgdGV4dHVyZV07Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUoKTogVW5hYmxlIHRvIGdl
dCBjdXJyZW50IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZShtdGxUZXh0dXJlKSwgbV91
c2FnZSk7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkKLXsKLSAgICBpZiAoIW1f
Y3VycmVudERyYXdhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9jdXJyZW50RHJhd2Fi
bGUgcHJlc2VudF07Ci0gICAgbV9jdXJyZW50RHJhd2FibGUgPSBudWxscHRyOwotfQotCi12b2lk
IEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgc2V0
TGF5ZXJTaGFwZShtX3BsYXRmb3JtU3dhcExheWVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQotUGxhdGZvcm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsKLX0KLQotI2lmIFVTRShNRVRB
TCkKLVJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IEdQVVN3YXBDaGFpbjo6dGFrZURyYXdhYmxl
KCkKLXsKLSAgICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiBwdHI7Ci0gICAgcHRyLnN3YXAo
bV9jdXJyZW50RHJhd2FibGUpOwotICAgIHJldHVybiBwdHI7Ci19Ci0jZW5kaWYKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4
dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODIwMGViYjA1OTM0
NTNjZGM4NWE2YzcwMjljNTMxYWE2YzBiZTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVUZXh0dXJlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExUZXh0dXJl
VHlwZSBtdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IEdQVVRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1l
bnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgcmV0
dXJuIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID09IDEpID8gTVRMVGV4dHVyZVR5cGUxRCA6IE1U
TFRleHR1cmVUeXBlMURBcnJheTsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDog
ewotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoID09IDEpCi0gICAgICAgICAgICBy
ZXR1cm4gKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkgPyBNVExUZXh0dXJlVHlwZTJEIDog
TVRMVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlOwotICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5
cGUyREFycmF5OyAvLyBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheSBpcyB1bmF2YWls
YWJsZSBvbiBpT1MuCi0gICAgfQotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgot
ICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVz
YWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBj
aGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VE
X1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmIChmbGFncy5jb250YWluc0Fu
eSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M6OlNhbXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3Rv
cmFnZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJlIGNhbm5vdCBoYXZlIGJv
dGggU1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBNVExUZXh0dXJlVXNhZ2UgcmVz
dWx0ID0gMDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6
T3V0cHV0QXR0YWNobWVudCkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExUZXh0dXJlVXNhZ2VSZW5k
ZXJUYXJnZXQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BVVGV4dHVyZVVzYWdlOjpG
bGFnczo6U3RvcmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCB9KSkKLSAgICAg
ICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQ7Ci0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKQotICAgICAgICByZXN1bHQg
fD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0jaWYgIVBMQVRGT1JNKE1BQykKLXN0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZUZv
clBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxGb3JtYXQgZm9ybWF0LCB1bnNpZ25l
ZCBzYW1wbGVzKQotewotICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0aFN0ZW5jaWwsIGFuZCBN
dWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRoIHRoZSBNVExTdG9yYWdl
TW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgotICAgIGlmIChmb3JtYXQgPT0gTVRMUGl4ZWxG
b3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEpCi0gICAgICAgIHJldHVy
biBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0KLSAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVTaGFy
ZWQ7Ci19Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4g
dHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgT3B0aW9uU2V0PEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJl
RGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFRleHR1cmVEZXNjcmlwdG9y
IG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxE
ZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0ZSBu
ZXcgTVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2lkdGggPSBkZXNjcmlwdG9yLnNpemUu
d2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNpZ25lZCBkZXB0aCA9IDE7
Ci0gICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSAxOwotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5k
aW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAg
YXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAgaGVpZ2h0ID0gZGVzY3Jp
cHRvci5zaXplLmhlaWdodDsKLSAgICAgICAgYXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUu
ZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNk
OgotICAgICAgICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAgICAgICBkZXB0
aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
YXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRl
eHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSk7Ci0KLSAg
ICBhdXRvIG10bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3Mo
dXNhZ2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgaWYgKCFtdGxVc2FnZSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBzdG9yYWdlTW9kZSA9IE1U
TFN0b3JhZ2VNb2RlUHJpdmF0ZTsKLSNlbHNlCi0gICAgYXV0byBzdG9yYWdlTW9kZSA9IHN0b3Jh
Z2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChwaXhlbEZvcm1hdCwgZGVzY3JpcHRv
ci5zYW1wbGVDb3VudCk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0V2lkdGg6d2lkdGhdOwotICAgIFttdGxEZXNjcmlw
dG9yIHNldEhlaWdodDpoZWlnaHRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRoOmRlcHRo
XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRBcnJheUxlbmd0aDphcnJheUxlbmd0aF07Ci0gICAg
W210bERlc2NyaXB0b3Igc2V0TWlwbWFwTGV2ZWxDb3VudDpkZXNjcmlwdG9yLm1pcExldmVsQ291
bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFNhbXBsZUNvdW50OmRlc2NyaXB0b3Iuc2FtcGxl
Q291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBlOm10bFRleHR1cmVUeXBl
Rm9yR1BVVGV4dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcildOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldFBpeGVsRm9ybWF0OnBpeGVsRm9ybWF0XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2Fn
ZToqbXRsVXNhZ2VdOwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0U3RvcmFnZU1vZGU6c3RvcmFn
ZU1vZGVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIG10
bERlc2NyaXB0b3I7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNyZWF0ZSgpIjsKLQotICAg
IGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBJbnZhbGlkIEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIVtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBzdXBwb3J0
c1RleHR1cmVTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XSkgewotICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiRGV2aWNlIGRvZXMg
bm90IHN1cHBvcnQgIiwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCwgIiBzYW1wbGUgY291bnQuIikp
OwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25T
ZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0g
ICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoZnVu
Y3Rpb25OYW1lLCBkZXNjcmlwdG9yLCB1c2FnZSk7Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiBtdGxU
ZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxUZXh0
dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3VGV4dHVyZVdpdGhEZXNj
cmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmICghbXRsVGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1
cmUoV1RGTW92ZShtdGxUZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQotUmVmPEdQVVRleHR1cmU+IEdQ
VVRleHR1cmU6OmNyZWF0ZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4mJiB0ZXh0dXJlLCBPcHRpb25T
ZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkpOwotfQotCi1HUFVUZXh0
dXJlOjpHUFVUZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJlPiYmIHRleHR1cmUsIE9wdGlvblNl
dDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAgICA6IG1fcGxhdGZvcm1UZXh0dXJl
KFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVzYWdlKQotewotICAgIG1fcGxhdGZv
cm1Vc2FnZSA9IE1UTFJlc291cmNlVXNhZ2VSZWFkOwotICAgIGlmIChpc1NhbXBsZWQoKSkKLSAg
ICAgICAgbV9wbGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNlVXNhZ2VTYW1wbGU7Ci0gICAgZWxz
ZSBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJj
ZVVzYWdlV3JpdGU7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVh
dGVEZWZhdWx0VGV4dHVyZVZpZXcoKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiB0ZXh0
dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB0ZXh0dXJlID0g
YWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6
bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKLQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghdGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6IFVuYWJsZSB0byBjcmVh
dGUgTVRMVGV4dHVyZSB2aWV3ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSksIG1fdXNhZ2Up
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVV0aWxzTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVXRpbHNNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMw
ODlmNGE0YzZiMjgzNGE5YWU2ZmFkNDA3NTcxNmFlNWRjNzA5Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVV0aWxz
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsYXRmb3JtVGV4dHVyZUZvcm1hdCBwbGF0Zm9ybVRleHR1
cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewot
ICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhOHVu
b3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVub3JtOwotICAgIGNhc2Ug
R1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1aW50OgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3Jt
YXRSR0JBOFVpbnQ7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgotICAg
ICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZv
cm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJn
cmE4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtX3NS
R0I7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKLSAgICAgICAgcmV0
dXJuIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBsYXRmb3JtQ29tcGFyZUZ1
bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbiBmdW5jKQotewot
ICAgIHN3aXRjaCAoZnVuYykgewotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjoK
LSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbk5ldmVyOwotICAgIGNhc2UgR1BVQ29t
cGFyZUZ1bmN0aW9uOjpMZXNzOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uTGVz
czsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw6Ci0gICAgICAgIHJldHVybiBN
VExDb21wYXJlRnVuY3Rpb25FcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVz
c0VxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uTGVzc0VxdWFsOwotICAg
IGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOgotICAgICAgICByZXR1cm4gTVRMQ29t
cGFyZUZ1bmN0aW9uR3JlYXRlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90RXF1
YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25Ob3RFcXVhbDsKLSAgICBjYXNl
IEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29t
cGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpB
bHdheXM6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25BbHdheXM7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJl
ck1hYy5tbQppbmRleCAxMjkzZGE1NTlmOTI5YTdhZWVjNTRkMDdhYTlhZTRmOTk0Zjk1YjQ0Li5m
MDJjZThmZGYwZjBjNThmNDA3MGQ0YjRiNzgxZWRiNWYxZWMyMWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDZkMWJlNjEz
YTEyOTRiNWFmMjkxOGQ2MTY5MGZjYzdmZTIxZGI0MjIuLmNlNzY5Zjg1ZDYxYTk0YTQ4YTJkNzI4
ZDcxMDA5ZmMxOGZlOTA2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRp
bmdBbmNlcwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3RzKCk7CiAgICAgfQogI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NB
TlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAg
IGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0
ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52
YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKQEAgLTI4ODUsNyArMjg4NSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VUeXBl
KQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBNYXNrSW1hZ2VDaGFuZ2VkKSAmJiBtX21hc2tMYXll
cikKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlv
blVwZGF0ZSgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTKQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBDYW52YXNDaGFuZ2VkIHx8IGNoYW5n
ZVR5cGUgPT0gQ2FudmFzUGl4ZWxzQ2hhbmdlZCkgJiYgcmVuZGVyZXIoKS5pc0NhbnZhcygpICYm
IGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNv
bnRlbnRzKSB7CiAgICAgICAgIGlmIChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQpCiAgICAg
ICAgICAgICBjb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9DYW52YXNNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcwppbmRleCA0YzkxOTc5OWRlMmU1YjNkNzJmMWJj
OTQxMjU4NjMxNTE4YTVmNjI2Li43ZDAxZGVjOWY2MjQwY2E5NmMyYTVkZGFiMmNlZmUxYTc0NGU0
YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMKQEAgLTI1OSwxMCArMjU5LDYg
QEAgV0kuQ2FudmFzTWFuYWdlciA9IGNsYXNzIENhbnZhc01hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OwogCi0gICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMy4wKTogYENhbnZhcy5TaGFkZXJQcm9ncmFtLnNoYXJlc1ZlcnRleEZyYWdtZW50
U2hhZGVyYCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHNoYWRlclByb2dyYW1QYXls
b2FkLnNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyKQotICAgICAgICAgICAgb3B0aW9ucy5zaGFy
ZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRydWU7Ci0KICAgICAgICAgbGV0IHByb2dyYW0gPSBu
ZXcgV0kuU2hhZGVyUHJvZ3JhbShwcm9ncmFtSWQsIHByb2dyYW1UeXBlLCBjYW52YXMsIG9wdGlv
bnMpOwogICAgICAgICB0aGlzLl9zaGFkZXJQcm9ncmFtSWRlbnRpZmllck1hcC5zZXQocHJvZ3Jh
bS5pZGVudGlmaWVyLCBwcm9ncmFtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKaW5kZXggZmY3MWFmNmQ0M2QyNzZjMTFm
NzQzNjIzYjgzMmY5NGI2MWVmZTJmZi4uODNhN2Q2NjhhM2ZkMTU5NTJiZjdmMjQ0YjY3NzQwYjU4
YmFkMDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NhbnZhcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ2FudmFzLmpzCkBAIC03Miw5ICs3Miw2IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENh
bnZhcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51
bS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyOgogICAgICAgICAgICAgY29udGV4dFR5cGUgPSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFU6Ci0g
ICAgICAgICAgICBjb250ZXh0VHlwZSA9IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFU7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uQ2Fu
dmFzLkNvbnRleHRUeXBlLldlYk1ldGFsOgogICAgICAgICAgICAgY29udGV4dFR5cGUgPSBXSS5D
YW52YXMuQ29udGV4dFR5cGUuV2ViTWV0YWw7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMiw4
ICs5OSw2IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgcmV0dXJuIFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJHTCIpOwogICAgICAgICBj
YXNlIFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHTDI6CiAgICAgICAgICAgICByZXR1cm4gV0ku
dW5sb2NhbGl6ZWRTdHJpbmcoIldlYkdMMiIpOwotICAgICAgICBjYXNlIFdJLkNhbnZhcy5Db250
ZXh0VHlwZS5XZWJHUFU6Ci0gICAgICAgICAgICByZXR1cm4gV0kudW5sb2NhbGl6ZWRTdHJpbmco
IldlYiBHUFUiKTsKICAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViTWV0YWw6
CiAgICAgICAgICAgICByZXR1cm4gV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYk1ldGFsIik7CiAg
ICAgICAgIH0KQEAgLTEyMSw3ICsxMTYsNiBAQCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICBzdGF0aWMgc3VwcG9ydHNSZXF1ZXN0Q29udGVudEZvckNvbnRl
eHRUeXBlKGNvbnRleHRUeXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb250ZXh0VHlwZSkg
ewotICAgICAgICBjYXNlIENhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFU6CiAgICAgICAgIGNhc2Ug
Q2FudmFzLkNvbnRleHRUeXBlLldlYk1ldGFsOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0xNzIsMTIgKzE2Niw2IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiQ2Fu
dmFzICVzIikuZm9ybWF0KGlkU2VsZWN0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRo
aXMuX2NvbnRleHRUeXBlID09PSBDYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKSB7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKQotICAgICAgICAgICAgICAg
IHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gQ2FudmFzLl9uZXh0RGV2aWNlVW5pcXVl
RGlzcGxheU5hbWVOdW1iZXIrKzsKLSAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiRGV2
aWNlICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsKLSAgICAgICAg
fQotCiAgICAgICAgIGlmICghdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIpCiAgICAgICAg
ICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IENhbnZhcy5fbmV4dENvbnRleHRV
bmlxdWVEaXNwbGF5TmFtZU51bWJlcisrOwogICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkNh
bnZhcyAlZCIpLmZvcm1hdCh0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlcik7CkBAIC00NTAs
NyArNDM4LDYgQEAgV0kuQ2FudmFzLkNvbnRleHRUeXBlID0gewogICAgIEJpdG1hcFJlbmRlcmVy
OiAiYml0bWFwcmVuZGVyZXIiLAogICAgIFdlYkdMOiAid2ViZ2wiLAogICAgIFdlYkdMMjogIndl
YmdsMiIsCi0gICAgV2ViR1BVOiAid2ViZ3B1IiwKICAgICBXZWJNZXRhbDogIndlYm1ldGFsIiwK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9TaGFkZXJQcm9ncmFtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NoYWRlclByb2dyYW0uanMKaW5kZXggZGZiODdhMTM4NmNmNmQyY2NkMzM3YTdi
NmMxOWI4ZTJkZjQ1YTRkMy4uY2IwNGY0ZGU5MjZhM2FkNTI0ZTU5ZjkwMDdiZWQwY2JiOTIyOWE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NoYWRlclByb2dyYW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NoYWRlclByb2dyYW0uanMKQEAgLTI1LDcgKzI1LDcgQEAKIAogV0kuU2hhZGVy
UHJvZ3JhbSA9IGNsYXNzIFNoYWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBj
b25zdHJ1Y3RvcihpZGVudGlmaWVyLCBwcm9ncmFtVHlwZSwgY2FudmFzLCB7c2hhcmVzVmVydGV4
RnJhZ21lbnRTaGFkZXJ9ID0ge30pCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgcHJvZ3Jh
bVR5cGUsIGNhbnZhcykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIp
OwogICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFNoYWRlclByb2dyYW0uUHJv
Z3JhbVR5cGUpLmluY2x1ZGVzKHByb2dyYW1UeXBlKSk7CkBAIC0zOCw5ICszOCw2IEBAIFdJLlNo
YWRlclByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFtIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIHRoaXMuX3Byb2dyYW1UeXBlID0gcHJvZ3JhbVR5cGU7CiAgICAgICAgIHRoaXMuX2NhbnZh
cyA9IGNhbnZhczsKIAotICAgICAgICB0aGlzLl9zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9
ICEhc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXI7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0
aGlzLl9zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciB8fCAodGhpcy5fY2FudmFzLmNvbnRleHRU
eXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVICYmIHRoaXMuX3Byb2dyYW1UeXBl
ID09PSBTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcikpOwotCiAgICAgICAgIHRoaXMu
X2Rpc2FibGVkID0gZmFsc2U7CiAgICAgfQogCkBAIC01MiwxMCArNDksNiBAQCBXSS5TaGFkZXJQ
cm9ncmFtID0gY2xhc3MgU2hhZGVyUHJvZ3JhbSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBj
YXNlIFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHTDoKICAgICAgICAgY2FzZSBXSS5DYW52YXMu
Q29udGV4dFR5cGUuV2ViR0wyOgogICAgICAgICAgICAgcmV0dXJuIHByb2dyYW1UeXBlID09PSBT
aGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcjsKLQotICAgICAgICBjYXNlIFdJLkNhbnZh
cy5Db250ZXh0VHlwZS5XZWJHUFU6Ci0gICAgICAgICAgICByZXR1cm4gcHJvZ3JhbVR5cGUgPT09
IFNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZQotICAgICAgICAgICAgICAgIHx8IHBy
b2dyYW1UeXBlID09PSBTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcjsKICAgICAgICAg
fQogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCk7CkBAIC04Miw3ICs3NSw2IEBAIFdJLlNoYWRl
clByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFtIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0
IGlkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9pZGVudGlmaWVyOyB9CiAgICAgZ2V0IHByb2dy
YW1UeXBlKCkgeyByZXR1cm4gdGhpcy5fcHJvZ3JhbVR5cGU7IH0KICAgICBnZXQgY2FudmFzKCkg
eyByZXR1cm4gdGhpcy5fY2FudmFzOyB9Ci0gICAgZ2V0IHNoYXJlc1ZlcnRleEZyYWdtZW50U2hh
ZGVyKCkgeyByZXR1cm4gdGhpcy5fc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXI7IH0KIAogICAg
IGdldCBkaXNwbGF5TmFtZSgpCiAgICAgewpAQCAtOTIsMTYgKzg0LDYgQEAgV0kuU2hhZGVyUHJv
Z3JhbSA9IGNsYXNzIFNoYWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY2Fz
ZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyOgogICAgICAgICAgICAgZm9ybWF0ID0gV0ku
VUlTdHJpbmcoIlByb2dyYW0gJWQiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHRoaXMu
X3Byb2dyYW1UeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNoYWRlclByb2dyYW0uUHJvZ3JhbVR5
cGUuQ29tcHV0ZToKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBXSS5VSVN0cmluZygiQ29tcHV0
ZSBQaXBlbGluZSAlZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcjoKLSAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBXSS5VSVN0cmluZygiUmVuZGVyIFBpcGVsaW5lICVkIik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjb25zb2xlLmFzc2VydChmb3JtYXQpOwogICAgICAgICBpZiAoIXRoaXMuX3VuaXF1ZURp
c3BsYXlOdW1iZXIpCkBAIC0xMTksOSArMTAxLDYgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNsYXNz
IFNoYWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fcHJvZ3JhbVR5cGUgPT09IFNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY2FudmFzLmNvbnRleHRUeXBlID09PSBXSS5D
YW52YXMuQ29udGV4dFR5cGUuV2ViR0wgfHwgdGhpcy5fY2FudmFzLmNvbnRleHRUeXBlID09PSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyKTsKIAotICAgICAgICBpZiAodGhpcy5fY2FudmFz
LmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKQotICAgICAgICAg
ICAgcmV0dXJuOwotCiAgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlzYWJsZWQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMS4zL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2Fj
eS8xMS4zL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwppbmRleCAyMTI1ZDNkNjIyZDI3YTg2
N2Q0YzQ5MmNmYThjYWU2YzdjMWQ1NTg2Li42M2NmYzk4NzI0YjdlNzQzMWU1YmQ1ZGU1YmFiYTQx
YmM5NmFjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9MZWdhY3kvMTEuMy9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzExLjMv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCkBAIC02OSw3ICs2OSw3IEBAIEluc3BlY3RvckJh
Y2tlbmQuYWN0aXZhdGVEb21haW4oIkNTUyIsIFsiaXRtbCIsICJwYWdlIl0pOwogCiAvLyBDYW52
YXMKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW4oIkNhbnZhcyIsIFsicGFnZSJdKTsK
LUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2Fu
dmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2Vi
R0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiIsIFdlYkdQVTogIndlYmdwdSJ9KTsKK0luc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6
ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3
ZWJnbCIsIFdlYkdMMjogIndlYmdsMiJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVt
KCJDYW52YXMuU2hhZGVyVHlwZSIsIHtGcmFnbWVudDogImZyYWdtZW50IiwgVmVydGV4OiAidmVy
dGV4In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZhcy5lbmFibGUi
LCBudWxsLCBbXSwgW10pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZh
cy5kaXNhYmxlIiwgbnVsbCwgW10sIFtdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMi4wL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0xlZ2FjeS8xMi4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwppbmRleCA1NjYxYWE1NmM1
NTIyMDk3MWZjZDk0MTVhZmI5MDRiMWNjYzU1MWQ1Li5jMjU0MmU4MWJmOTE0Y2UzZTVjOTdkYTBl
Mjk3NzYzNGRkZTlmZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTIuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5
LzEyLjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCkBAIC02OSw3ICs2OSw3IEBAIEluc3Bl
Y3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIkNTUyIsIFsiaXRtbCIsICJwYWdlIl0pOwogCiAv
LyBDYW52YXMKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW4oIkNhbnZhcyIsIFsicGFn
ZSJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUi
LCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVy
IiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiIsIFdlYkdQVTogIndlYmdwdSJ9KTsK
K0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2Fu
dmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2Vi
R0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJFbnVtKCJDYW52YXMuU2hhZGVyVHlwZSIsIHtGcmFnbWVudDogImZyYWdtZW50IiwgVmVydGV4
OiAidmVydGV4In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZhcy5l
bmFibGUiLCBudWxsLCBbXSwgW10pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQo
IkNhbnZhcy5kaXNhYmxlIiwgbnVsbCwgW10sIFtdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMy4wL0luc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0xlZ2FjeS8xMy4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwppbmRleCA0ODk0
NGRjMzdhMzhkOGZmMGJmYzVhNWZmZWU0ZWViYTJiZmQ1NTE5Li41ZThhMTQxNGNmNGZkZTAwMzQx
MjFiODE0YjQ3ZGRiNzI2NDllODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TGVnYWN5LzEzLjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCkBAIC04OSw3ICs4OSw3IEBA
IEluc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIkNTUyIsIFsiaXRtbCIsICJwYWdlIiwg
IndlYi1wYWdlIl0pOwogCiAvLyBDYW52YXMKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21h
aW4oIkNhbnZhcyIsIFsicGFnZSJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJD
YW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJl
cjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiIsIFdl
YkdQVTogIndlYmdwdSJ9KTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMu
Q29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJp
dG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiJ9KTsKIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuU2hhZGVyVHlwZSIsIHtGcmFnbWVudDog
ImZyYWdtZW50IiwgVmVydGV4OiAidmVydGV4In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckNvbW1hbmQoIkNhbnZhcy5lbmFibGUiLCBudWxsLCBbXSwgW10pOwogSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZhcy5kaXNhYmxlIiwgbnVsbCwgW10sIFtdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2Fj
eS8xMy40L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMy40L0luc3BlY3RvckJhY2tlbmRDb21t
YW5kcy5qcwppbmRleCBiOWRmNjE1YTc5M2NmYzgxYWNlYzdiOTBkMDE2ZjQxYTVhZWUwNTY4Li5h
ODlkNjMwNGY3M2Y1ZTdiNWM4MjBkOWUyMmI2YTg2NzZjZDg1NmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuNC9JbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzEzLjQvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
CkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiQ1NT
IiwgWyJpdG1sIiwgInBhZ2UiLCAid2ViLXBhZ2UiXSk7CiAKIC8vIENhbnZhcwogSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckRvbWFpbigiQ2FudmFzIiwgWyJwYWdlIl0pOwotSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5Db250ZXh0VHlwZSIsIHtDYW52YXMyRDogImNhbnZh
cy0yZCIsIEJpdG1hcFJlbmRlcmVyOiAiYml0bWFwcmVuZGVyZXIiLCBXZWJHTDogIndlYmdsIiwg
V2ViR0wyOiAid2ViZ2wyIiwgV2ViR1BVOiAid2ViZ3B1In0pOworSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckVudW0oIkNhbnZhcy5Db250ZXh0VHlwZSIsIHtDYW52YXMyRDogImNhbnZhcy0yZCIs
IEJpdG1hcFJlbmRlcmVyOiAiYml0bWFwcmVuZGVyZXIiLCBXZWJHTDogIndlYmdsIiwgV2ViR0wy
OiAid2ViZ2wyIn0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5Qcm9n
cmFtVHlwZSIsIHtDb21wdXRlOiAiY29tcHV0ZSIsIFJlbmRlcjogInJlbmRlciJ9KTsKIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuU2hhZGVyVHlwZSIsIHtDb21wdXRlOiAi
Y29tcHV0ZSIsIEZyYWdtZW50OiAiZnJhZ21lbnQiLCBWZXJ0ZXg6ICJ2ZXJ0ZXgifSk7CiBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ2FudmFzLmVuYWJsZSIsIG51bGwsIFtdLCBb
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9MZWdhY3kvMTQuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTQuMC9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKaW5kZXggNjg1ZTk4ZWU1ZTU1MjkwNWI3ZWU4NzdlNGE2MDRlZWJl
NmU3ZDBmMy4uNjM4OTQwZmZjYTMxN2MxNjA3MWM4NGIwNGQ1Njg3MGU1Mzc5MjViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5
LzE0LjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNC4wL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwpAQCAtMTIwLDcgKzEyMCw3IEBAIEluc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVE
b21haW4oIkNTUyIsIFsiaXRtbCIsICJwYWdlIiwgIndlYi1wYWdlIl0pOwogCiAvLyBDYW52YXMK
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW4oIkNhbnZhcyIsIFsicGFnZSJdKTsKLUlu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFz
MkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6
ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiIsIFdlYkdQVTogIndlYmdwdSJ9KTsKK0luc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJj
YW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJn
bCIsIFdlYkdMMjogIndlYmdsMiJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJD
YW52YXMuUHJvZ3JhbVR5cGUiLCB7Q29tcHV0ZTogImNvbXB1dGUiLCBSZW5kZXI6ICJyZW5kZXIi
fSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLlNoYWRlclR5cGUiLCB7
Q29tcHV0ZTogImNvbXB1dGUiLCBGcmFnbWVudDogImZyYWdtZW50IiwgVmVydGV4OiAidmVydGV4
In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZhcy5lbmFibGUiLCBu
dWxsLCBbXSwgW10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE0LjUvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE0LjUv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCmluZGV4IGQ5M2RjOWViMTY3YjlmNmI5N2JjZjNm
YzY0OWE2NTA2MmJmODg5MTkuLjUyMDZmNzNhNThlY2M4NzQ4NDk2MTA3Y2IzN2NhMjZhMDEwODVi
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0xlZ2FjeS8xNC41L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTQuNS9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMKQEAgLTEyMSw3ICsxMjEsNyBAQCBJbnNwZWN0b3JCYWNrZW5k
LmFjdGl2YXRlRG9tYWluKCJDU1MiLCBbIml0bWwiLCAicGFnZSIsICJ3ZWItcGFnZSJdKTsKIAog
Ly8gQ2FudmFzCiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluKCJDYW52YXMiLCBbInBh
Z2UiXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLkNvbnRleHRUeXBl
Iiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6ICJiaXRtYXByZW5kZXJl
ciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIiLCBXZWJHUFU6ICJ3ZWJncHUifSk7
CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0Nh
bnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdl
YkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIifSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVyRW51bSgiQ2FudmFzLlByb2dyYW1UeXBlIiwge0NvbXB1dGU6ICJjb21wdXRlIiwgUmVuZGVy
OiAicmVuZGVyIn0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5TaGFk
ZXJUeXBlIiwge0NvbXB1dGU6ICJjb21wdXRlIiwgRnJhZ21lbnQ6ICJmcmFnbWVudCIsIFZlcnRl
eDogInZlcnRleCJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMu
ZW5hYmxlIiwgbnVsbCwgW10sIFtdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNS4wL0luc3BlY3RvckJhY2tlbmRDb21t
YW5kcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xl
Z2FjeS8xNS4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwppbmRleCA5MmJjNzhkMjdhMDQ3
OWZiZTM5MDZlMDYzNDY3YTQ1YTI2ZGMyNDVmLi44OWZmOGI4ZGNjNDk0MjJhNjMxZjM1Njk1NjE3
ZTdhMDMwYzUwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTUuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE1
LjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCkBAIC0xMjUsNyArMTI1LDcgQEAgSW5zcGVj
dG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiQ1NTIiwgWyJpdG1sIiwgInBhZ2UiLCAid2ViLXBh
Z2UiXSk7CiAKIC8vIENhbnZhcwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbigiQ2Fu
dmFzIiwgWyJwYWdlIl0pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5D
b250ZXh0VHlwZSIsIHtDYW52YXMyRDogImNhbnZhcy0yZCIsIEJpdG1hcFJlbmRlcmVyOiAiYml0
bWFwcmVuZGVyZXIiLCBXZWJHTDogIndlYmdsIiwgV2ViR0wyOiAid2ViZ2wyIiwgV2ViR1BVOiAi
d2ViZ3B1In0pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5Db250ZXh0
VHlwZSIsIHtDYW52YXMyRDogImNhbnZhcy0yZCIsIEJpdG1hcFJlbmRlcmVyOiAiYml0bWFwcmVu
ZGVyZXIiLCBXZWJHTDogIndlYmdsIiwgV2ViR0wyOiAid2ViZ2wyIn0pOwogSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5Qcm9ncmFtVHlwZSIsIHtDb21wdXRlOiAiY29tcHV0
ZSIsIFJlbmRlcjogInJlbmRlciJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJD
YW52YXMuU2hhZGVyVHlwZSIsIHtDb21wdXRlOiAiY29tcHV0ZSIsIEZyYWdtZW50OiAiZnJhZ21l
bnQiLCBWZXJ0ZXg6ICJ2ZXJ0ZXgifSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFu
ZCgiQ2FudmFzLmVuYWJsZSIsIG51bGwsIFtdLCBbXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCBkOTkzYjA1YjIwMWI5ODZlNWRhNTZjODYwYTYxN2U4
NTJkM2Q3MGE2Li4wYzRlZDdjNTdiZjhiZmVkOWU3NjdjMTIyZTg1ZGM2MzA3YTU1OTE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTE5NCw3ICsxOTQs
NyBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogICAgICAgICBpZiAoIXRoaXMuZGlkSW5pdGlh
bExheW91dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgaGlkZU5vZGUgPSB0
aGlzLl9jYW52YXMuY3NzQ2FudmFzTmFtZSB8fCB0aGlzLl9jYW52YXMuY29udGV4dFR5cGUgPT09
IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFU7CisgICAgICAgIGxldCBoaWRlTm9kZSA9IHRo
aXMuX2NhbnZhcy5jc3NDYW52YXNOYW1lOwogCiAgICAgICAgIHRoaXMuX25vZGVSb3cudmFsdWUg
PSBoaWRlTm9kZSA/IG51bGwgOiBlbURhc2g7CiAgICAgICAgIHRoaXMuX2Nzc0NhbnZhc1Jvdy52
YWx1ZSA9IHRoaXMuX2NhbnZhcy5jc3NDYW52YXNOYW1lIHx8IG51bGw7CkBAIC0zMDgsNyArMzA4
LDcgQEAgV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENhbnZhc0RldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgaWYgKCF0aGlzLmRpZEluaXRp
YWxMYXlvdXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF0aGlzLl9jYW52
YXMuY3NzQ2FudmFzTmFtZSAmJiB0aGlzLl9jYW52YXMuY29udGV4dFR5cGUgIT09IFdJLkNhbnZh
cy5Db250ZXh0VHlwZS5XZWJHUFUpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jYW52YXMuY3NzQ2Fu
dmFzTmFtZSkgewogICAgICAgICAgICAgdGhpcy5fY2xpZW50c1NlY3Rpb24uZWxlbWVudC5oaWRk
ZW4gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNPdmVydmlld0Nv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5qcwppbmRleCBiODc3OTFjYjg5MDc5ZDY5MzViMjJj
NjE4YzExMDkxMzRmYzFlNjAwLi4zODM0ZjliZDBkM2QxYTNiZTNmZjYwZTVmZGMyMTFjN2M2Nzc2
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcuanMKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBXSS5DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3ID0gY2xhc3MgQ2FudmFz
T3ZlcnZpZXdDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbGxlYwogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGxldCBjYW52YXMgPSBjb250ZW50Vmlldy5yZXByZXNlbnRlZE9iamVjdDsK
LSAgICAgICAgaWYgKGNhbnZhcy5jc3NDYW52YXNOYW1lIHx8IGNhbnZhcy5jb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSkgeworICAgICAgICBpZiAoY2FudmFzLmNz
c0NhbnZhc05hbWUpIHsKICAgICAgICAgICAgIGNhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMoKGNs
aWVudE5vZGVzKSA9PiB7CiAgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRE
T01Ob2RlTGlzdChjbGllbnROb2Rlcyk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1NpZGViYXJQYW5l
bC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNT
aWRlYmFyUGFuZWwuY3NzCmluZGV4IDljMzhiY2NhMDZiZWJjYmZhNDBkYzEzMmQ5OTEzNjNkOWJk
MjE5NGUuLjcxNmZmNjNiNTI5MWNlMjk3MzFjM2YxMGQ5MzhkZDhlOGZmNDNmZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1NpZGVi
YXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ2FudmFzU2lkZWJhclBhbmVsLmNzcwpAQCAtMzksNyArMzksNyBAQAogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvQ2FudmFzMkQuc3ZnKTsKIH0KIAotLnNpZGViYXIgPiAucGFuZWwubmF2
aWdhdGlvbi5jYW52YXMgPiAuY29udGVudCA+IC50cmVlLW91dGxpbmUgLml0ZW0uY2FudmFzOm1h
dGNoZXMoLndlYmdsLCAud2ViZ2wyLCAud2ViZ3B1LCAud2VibWV0YWwpIC5pY29uIHsKKy5zaWRl
YmFyID4gLnBhbmVsLm5hdmlnYXRpb24uY2FudmFzID4gLmNvbnRlbnQgPiAudHJlZS1vdXRsaW5l
IC5pdGVtLmNhbnZhczptYXRjaGVzKC53ZWJnbCwgLndlYmdsMiwgLndlYm1ldGFsKSAuaWNvbiB7
CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9DYW52YXMzRC5zdmcpOwogfQogCkBAIC0xMjIs
NCArMTIyLDQgQEAgYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5h
Y3RpdmUpIC5zaWRlYmFyID4gLnBhbmVsLm5hdmlnYXRpb24KICAgICAuc2lkZWJhciA+IC5wYW5l
bC5uYXZpZ2F0aW9uLmNhbnZhcyA+IC5jb250ZW50ID4gLnJlY29yZGluZy1jb250ZW50ID4gLnRy
ZWUtb3V0bGluZSAuaXRlbS5mb2xkZXItaWNvbiA+IC5pY29uIHsKICAgICAgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1JlbmRlcmluZ0ZyYW1lLWRhcmspOwogICAgIH0K
LX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1RyZWVFbGVtZW50
LmpzCmluZGV4IDkxZjI2YTdjMzAxY2U5ZTI5YmZlYjVjMTViMjRiNzE3Y2E0M2JlNjMuLmM1ZTU0
MDIzYzYzMGZmZjhjMTZhNzMxOWIwY2FiNGJjZjFkNzY1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1RyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1RyZWVF
bGVtZW50LmpzCkBAIC0xMTUsNyArMTE1LDcgQEAgV0kuQ2FudmFzVHJlZUVsZW1lbnQgPSBjbGFz
cyBDYW52YXNUcmVlRWxlbWVudCBleHRlbmRzIFdJLkZvbGRlcml6ZWRUcmVlRWxlbWVudAogCiAg
ICAgX2hhbmRsZU1vdXNlT3ZlcihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmNzc0NhbnZhc05hbWUgfHwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250
ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSkgeworICAgICAgICBpZiAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5jc3NDYW52YXNOYW1lKSB7CiAgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnJlcXVlc3RDbGllbnROb2RlcygoY2xpZW50Tm9kZXMpID0+IHsK
ICAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGVMaXN0KGNsaWVu
dE5vZGVzKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMK
aW5kZXggZTEzOTBjZDcxOWY0MzM4Njg2YTdlM2Q3MzVhZjQ0OWQ5ZWVkYzFhNC4uMWE5NDg3NDg2
M2ZjYWRiNjkyMTI0ZTVhZjI1M2UzMTJlMWZmYTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRk
aXRpb25zLmpzCkBAIC02ODMsNyArNjgzLDYgQEAKICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVN
SU1FKHR5cGUsIHtuYW1lOiAiamF2YXNjcmlwdCIsIGpzb246IHRydWV9KTsKICAgICB9KTsKIAot
ICAgIC8vIEZJWE1FOiBBZGQgV0hMU0wgc3BlY2lmaWMgbW9kZXMuCiAgICAgQ29kZU1pcnJvci5k
ZWZpbmVNSU1FKCJ4LXBpcGVsaW5lL3gtY29tcHV0ZSIsIENvZGVNaXJyb3IucmVzb2x2ZU1vZGUo
Ingtc2hhZGVyL3gtdmVydGV4IikpOwogICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgieC1waXBl
bGluZS94LXJlbmRlciIsIENvZGVNaXJyb3IucmVzb2x2ZU1vZGUoIngtc2hhZGVyL3gtdmVydGV4
IikpOwogfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmlldy5jc3MKaW5kZXgg
M2ZlODRiMDU5MzI2ZWYyZDhmYWY3N2I5ZDkxZWUwZGJmNGNmZjU2Mi4uNGExYTdkOWQ5ZTNlMzZj
M2FhY2Q3MmE5M2NhNzA5N2JiNWEwNjY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmlldy5jc3MKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250
ZW50Vmlldy5jc3MKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L0NhbnZhczJELnN2Zyk7CiB9CiAKLS5jb250ZW50LXZpZXcudGFiLmdyYXBoaWNzIC5uYXZpZ2F0
aW9uLWJhciA+IC5pdGVtIC5jYW52YXM6bWF0Y2hlcygud2ViZ2wsIC53ZWJnbDIsIC53ZWJncHUs
IC53ZWJtZXRhbCkgLmljb24geworLmNvbnRlbnQtdmlldy50YWIuZ3JhcGhpY3MgLm5hdmlnYXRp
b24tYmFyID4gLml0ZW0gLmNhbnZhczptYXRjaGVzKC53ZWJnbCwgLndlYmdsMiwgLndlYm1ldGFs
KSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9DYW52YXMzRC5zdmcpOwogfQog
CkBAIC01Niw0ICs1Niw0IEBACiAgICAgLmNvbnRlbnQtdmlldy50YWIuZ3JhcGhpY3MgLm5hdmln
YXRpb24tYmFyID4gLml0ZW0gLnNoYWRlci1wcm9ncmFtID4gLmljb24gewogICAgICAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL0RvY3VtZW50SWNvbnMuc3ZnI2dsLWRhcmspOwogICAgIH0KLX0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFt
Q29udGVudFZpZXcuanMKaW5kZXggZTIyYTRkYmY4OWU2OTY2ZDEzYjFiNTdhNTg5MGRmZWJiN2Y3
YzM1MC4uMTIwNWRiMDdjNDQ2ZjI0ZDI1M2QwNzcyMWM5Y2YzNjc3ZmU5NzZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3Jh
bUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcwpAQCAtMzEsOSArMzEsNiBAQCBXSS5T
aGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFtQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50VgogCiAgICAgICAgIHN1cGVyKHNoYWRlclByb2dyYW0pOwogCi0g
ICAgICAgIGxldCBpc1dlYkdQVSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY2FudmFzLmNvbnRl
eHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVOwotICAgICAgICBsZXQgc2hh
cmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSBpc1dlYkdQVSAmJiB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LnNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyOwotCiAgICAgICAgIHRoaXMuX3JlZnJlc2hC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVmcmVz
aCIsIFdJLlVJU3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMvUmVsb2FkRnVsbC5zdmciLCAxMywg
MTMpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0udmlzaWJpbGl0
eVByaW9yaXR5ID0gV0kuTmF2aWdhdGlvbkl0ZW0uVmlzaWJpbGl0eVByaW9yaXR5LkxvdzsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVmcmVzaENvbnRl
bnQsIHRoaXMpOwpAQCAtNjMsMjcgKzYwLDIzIEBAIFdJLlNoYWRlclByb2dyYW1Db250ZW50Vmll
dyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAg
ICAgICAgICAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgV0kuU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkNvbXB1dGU6CiAgICAgICAgICAgICAgICAgc2hhZGVyVHlw
ZUNvbnRhaW5lci50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJDb21wdXRlIFNoYWRlciIpOwot
ICAgICAgICAgICAgICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSBpc1dlYkdQVSA/ICJ4LXBpcGVs
aW5lL3gtY29tcHV0ZSIgOiAieC1zaGFkZXIveC1jb21wdXRlIjsKKyAgICAgICAgICAgICAgICB0
ZXh0RWRpdG9yLm1pbWVUeXBlID0gIngtc2hhZGVyL3gtY29tcHV0ZSI7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBl
LkZyYWdtZW50OgogICAgICAgICAgICAgICAgIHNoYWRlclR5cGVDb250YWluZXIudGV4dENvbnRl
bnQgPSBXSS5VSVN0cmluZygiRnJhZ21lbnQgU2hhZGVyIik7Ci0gICAgICAgICAgICAgICAgdGV4
dEVkaXRvci5taW1lVHlwZSA9IGlzV2ViR1BVID8gIngtcGlwZWxpbmUveC1yZW5kZXIiIDogIngt
c2hhZGVyL3gtZnJhZ21lbnQiOworICAgICAgICAgICAgICAgIHRleHRFZGl0b3IubWltZVR5cGUg
PSAieC1zaGFkZXIveC1mcmFnbWVudCI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgIGNhc2UgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleDoKLSAgICAgICAg
ICAgICAgICBpZiAoc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIpCi0gICAgICAgICAgICAgICAg
ICAgIHNoYWRlclR5cGVDb250YWluZXIudGV4dENvbnRlbnQgPSBXSS5VSVN0cmluZygiVmVydGV4
L0ZyYWdtZW50IFNoYWRlciIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgc2hhZGVyVHlwZUNvbnRhaW5lci50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJWZXJ0
ZXggU2hhZGVyIik7Ci0gICAgICAgICAgICAgICAgdGV4dEVkaXRvci5taW1lVHlwZSA9IGlzV2Vi
R1BVID8gIngtcGlwZWxpbmUveC1yZW5kZXIiIDogIngtc2hhZGVyL3gtdmVydGV4IjsKKyAgICAg
ICAgICAgICAgICBzaGFkZXJUeXBlQ29udGFpbmVyLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmco
IlZlcnRleCBTaGFkZXIiKTsKKyAgICAgICAgICAgICAgICB0ZXh0RWRpdG9yLm1pbWVUeXBlID0g
Ingtc2hhZGVyL3gtdmVydGV4IjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRleHRFZGl0b3IpOwogICAgICAgICAg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRleHRFZGl0b3IuZWxlbWVudCk7CiAgICAgICAgICAg
ICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgic2hhZGVyIiwgc2hhZGVyVHlwZSk7Ci0gICAgICAg
ICAgICBjb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgic2hhcmVzLXZlcnRleC1mcmFnbWVudC1z
aGFkZXIiLCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcik7CiAKICAgICAgICAgICAgIHJldHVy
biB0ZXh0RWRpdG9yOwogICAgICAgICB9OwpAQCAtOTksOSArOTIsNyBAQCBXSS5TaGFkZXJQcm9n
cmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VgogICAgICAgICBjYXNlIFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVu
ZGVyOiB7CiAgICAgICAgICAgICB0aGlzLl92ZXJ0ZXhFZGl0b3IgPSBjcmVhdGVFZGl0b3IoV0ku
U2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCk7CiAKLSAgICAgICAgICAgIGlmICghc2hh
cmVzVmVydGV4RnJhZ21lbnRTaGFkZXIpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9mcmFnbWVu
dEVkaXRvciA9IGNyZWF0ZUVkaXRvcihXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21l
bnQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fZnJhZ21lbnRFZGl0b3IgPSBj
cmVhdGVFZGl0b3IoV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50KTsKIAogICAg
ICAgICAgICAgdGhpcy5fbGFzdEFjdGl2ZUVkaXRvciA9IHRoaXMuX3ZlcnRleEVkaXRvcjsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTUyLDkgKzE0Myw2IEBAIFdJLlNoYWRlclByb2dyYW1Db250
ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWCiAgICAgICAgIGNhc2UgV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMjoKICAgICAgICAg
ICAgIGV4dGVuc2lvbiA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCIuZ2xzbCIpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVToKLSAg
ICAgICAgICAgIGV4dGVuc2lvbiA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCIud3NsIik7Ci0gICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjb25zb2xlLmFzc2VydChleHRlbnNp
b24pOwogCkBAIC0yNTQsOCArMjQyLDcgQEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3ID0g
Y2xhc3MgU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAg
ICAgICBjYXNlIFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyOgogICAgICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1ZXN0U2hhZGVyU291cmNlKFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgsIGNyZWF0ZUNhbGxiYWNrKHRoaXMuX3ZlcnRleEVkaXRv
cikpOwotICAgICAgICAgICAgaWYgKCF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNoYXJlc1ZlcnRl
eEZyYWdtZW50U2hhZGVyKQotICAgICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
cmVxdWVzdFNoYWRlclNvdXJjZShXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQs
IGNyZWF0ZUNhbGxiYWNrKHRoaXMuX2ZyYWdtZW50RWRpdG9yKSk7CisgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnJlcXVlc3RTaGFkZXJTb3VyY2UoV0kuU2hhZGVyUHJvZ3JhbS5T
aGFkZXJUeXBlLkZyYWdtZW50LCBjcmVhdGVDYWxsYmFjayh0aGlzLl9mcmFnbWVudEVkaXRvcikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1UcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclBy
b2dyYW1UcmVlRWxlbWVudC5qcwppbmRleCBjMmQzZjc1MzRkZDdhNmY0NGEzZTAxYjE5YzUxOTAx
Mzc1Nzg2YjViLi44N2Q5ZTQ4NDVhZmFiMzY3MDQyOTA5NjUyZTI0NmU4NDhlY2QwNDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQ
cm9ncmFtVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LmpzCkBAIC0zMiw3ICszMiw2IEBA
IFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxl
bWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsK
ICAgICAgICAgc3VwZXIoInNoYWRlci1wcm9ncmFtIiwgc2hhZGVyUHJvZ3JhbS5kaXNwbGF5TmFt
ZSwgc3VidGl0bGUsIHNoYWRlclByb2dyYW0pOwogCi0gICAgICAgIC8vIEZJWE1FOiBhZGQgc3Vw
cG9ydCBmb3IgZGlzYWJsaW5nL2hpZ2hsaWdodGluZyBXZWJHUFUgc2hhZGVyIHBpcGVsaW5lcy4K
ICAgICAgICAgbGV0IGNvbnRleHRUeXBlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5jYW52YXMu
Y29udGV4dFR5cGU7CiAgICAgICAgIGlmIChjb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdMIHx8IGNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2Vi
R0wyKSB7CiAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlZEltYWdlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImltZyIpOwpAQCAtNDgsNyArNDcsNiBAQCBXSS5TaGFkZXJQcm9ncmFt
VHJlZUVsZW1lbnQgPSBjbGFzcyBTaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5H
ZW5lcmFsVAogICAgIHsKICAgICAgICAgc3VwZXIub25hdHRhY2goKTsKIAotICAgICAgICAvLyBG
SVhNRTogYWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZy9oaWdobGlnaHRpbmcgV2ViR1BVIHNoYWRl
ciBwaXBlbGluZXMuCiAgICAgICAgIGxldCBjb250ZXh0VHlwZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuY2FudmFzLmNvbnRleHRUeXBlOwogICAgICAgICBpZiAoY29udGV4dFR5cGUgPT09IFdJ
LkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHTCB8fCBjb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNv
bnRleHRUeXBlLldlYkdMMikgewogICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5h
ZGRFdmVudExpc3RlbmVyKFdJLlNoYWRlclByb2dyYW0uRXZlbnQuRGlzYWJsZWRDaGFuZ2VkLCB0
aGlzLl9oYW5kbGVTaGFkZXJQcm9ncmFtRGlzYWJsZWRDaGFuZ2VkLCB0aGlzKTsKQEAgLTYwLDcg
KzU4LDYgQEAgV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50ID0gY2xhc3MgU2hhZGVyUHJvZ3Jh
bVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFQKIAogICAgIG9uZGV0YWNoKCkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nL2hpZ2hsaWdodGlu
ZyBXZWJHUFUgc2hhZGVyIHBpcGVsaW5lcy4KICAgICAgICAgbGV0IGNvbnRleHRUeXBlID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5jYW52YXMuY29udGV4dFR5cGU7CiAgICAgICAgIGlmIChjb250
ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMIHx8IGNvbnRleHRUeXBlID09
PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyKQogICAgICAgICAgICAgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNoYWRlclByb2dyYW0uRXZlbnQuRGlz
YWJsZWRDaGFuZ2VkLCB0aGlzLl9oYW5kbGVTaGFkZXJQcm9ncmFtRGlzYWJsZWRDaGFuZ2VkLCB0
aGlzKTsKQEAgLTc3LDcgKzc0LDYgQEAgV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50ID0gY2xh
c3MgU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFQKIAogICAgIHBv
cHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBkaXNhYmxpbmcvaGlnaGxpZ2h0aW5nIFdlYkdQVSBzaGFk
ZXIgcGlwZWxpbmVzLgogICAgICAgICBsZXQgY29udGV4dFR5cGUgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmNhbnZhcy5jb250ZXh0VHlwZTsKICAgICAgICAgaWYgKGNvbnRleHRUeXBlID09PSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wgfHwgY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5D
b250ZXh0VHlwZS5XZWJHTDIpIHsKICAgICAgICAgICAgIGxldCBkaXNhYmxlZCA9IHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1
cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxh
Z3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdAppbmRleCBhZTRlZTQ1N2EyMTMxMzM4ZjZhNWI3NWVk
NzVmNjM2ZjNhMGY1MjYwLi4yMDI0ODNjNjVmMTA1ODU4YWRhMmM5NmUwNjJhMjY0NmI1ODY2YTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9z
LnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3Mu
cGxpc3QKQEAgLTIsOTUgKzIsOTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxl
Ly9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlM
aXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFz
eW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0
cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmli
dXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5
PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0g
ICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmluY3Jl
bWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29u
X2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5X2RlY29kZXI8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9mb3JtYXRfcmVhZGVy
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+
CisJPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3By
b2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5
PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxr
ZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJ
PHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8ZmFsc2UvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8
a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0Pgor
CTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtl
eT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+
V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJ
PC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJ
PGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QKaW5kZXggNjIxYzkyMTY2Yzg5
MmNiNTQxY2ZhNzZiNjIzODE1NjY4YTFlYzI3Ny4uMTc0NWEyZTk1NWI1NjE2MmZmNjRmYjZmYjZm
YzNlNTIxOThkM2Q1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2Vi
S2l0LWlvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9z
LnBsaXN0CkBAIC0yLDk1ICsyLDkwIEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBs
ZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5
TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5h
c3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21w
bGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9k
aWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJp
YnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0
ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5
PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0g
ICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmluY3Jl
bWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29u
X2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5X2RlY29kZXI8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9mb3JtYXRfcmVhZGVy
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+
CisJPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3By
b2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5
PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxr
ZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJ
PHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJ
PGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5
PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5X
ZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8
L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8
a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QgYi9Tb3Vy
Y2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QKaW5kZXggNjIxYzkyMTY2
Yzg5MmNiNTQxY2ZhNzZiNjIzODE1NjY4YTFlYzI3Ny4uMTc0NWEyZTk1NWI1NjE2MmZmNjRmYjZm
YjZmYzNlNTIxOThkM2Q1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3Mv
V2ViS2l0LW1hY29zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1tYWNvcy5wbGlzdApAQCAtMiw5NSArMiw5MCBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAi
LS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Q
cm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAg
IDxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAg
PGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5D
b2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0Pgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAg
ICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtl
eT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2Rl
Q29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0
ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwv
a2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0Pgot
ICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVj
b2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVy
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0
X3JlYWRlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAg
PC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5
PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0Pgor
CQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGlj
dD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
bWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJ
PGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tl
eT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dl
YmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+
CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9k
aWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+
CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0Pgor
CTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxz
ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJ
CTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJz
ZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdAppbmRl
eCBhZTRlZTQ1N2EyMTMxMzM4ZjZhNWI3NWVkNzVmNjM2ZjNhMGY1MjYwLi4yMDI0ODNjNjVmMTA1
ODU4YWRhMmM5NmUwNjJhMjY0NmI1ODY2YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Zl
YXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1
cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdApAQCAtMiw5NSArMiw5MCBAQAogPCFET0NUWVBF
IHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5h
cHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4w
Ij4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAg
ICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAg
ICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5k
ZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVl
Lz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAg
ICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAg
ICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2Uv
PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxk
aWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICAg
ICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtl
eT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0
PgotICAgIDwvZGljdD4KLSAgICA8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT52cDlfZGVjb2Rlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8
L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJt
X3BhcnNlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pl
dHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19z
Y3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4K
Kwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwv
a2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJ
CTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+
Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtl
eT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJCTxrZXk+QXR0cmlidXRl
czwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+
CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5
PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxr
ZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0
cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+
CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KIDwv
ZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAppbmRleCAyYmE2Mjg3M2YzMmIzMWMwMzY5YTFhNTE0ZmYx
Y2IwMzg5MjRlYjczLi43MDU3MjViMzE5N2I2YTNjN2E4Y2QxZjdhOTJlMjA2OWQ5MWQxZGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlcy5jcHAKQEAgLTIzMiwxOSArMjMyLDYgQEAgYm9vbCBkZWZhdWx0V2ViUlRDQ29kZWNzSW5H
UFVQcm9jZXNzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi17Ci0jaWYgSEFWRShTWVNURU1f
RkVBVFVSRV9GTEFHUykKLSAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWQoIldlYkdQVSIp
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQotCiBib29sIGRlZmF1bHRJbkFwcEJyb3dzZXJQcml2YWN5KCkKIHsKICNpZiBIQVZFKFNZ
U1RFTV9GRUFUVVJFX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAppbmRleCAzNWEyZjZmZGRkNzU1NDdlNjQ3OGFhMTY5ZmUw
ZmI5MjhjNGIxYTQ4Li5jZTdmNGZmZDY4N2IzYzUwOWI0ZjgzZGIyMDM2ZTAxOTM5ODU5Y2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaApAQCAtODUsMTAgKzg1LDYgQEAgYm9vbCBkZWZhdWx0Q2FwdHVyZVZpZGVvSW5HUFVQcm9j
ZXNzRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0V2ViUlRDQ29kZWNzSW5HUFVQcm9jZXNzKCk7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCk7
Ci0jZW5kaWYKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93c2VyUHJpdmFjeSgpOwogCiAjaWYgSEFW
RShJTkNSRU1FTlRBTF9QREZfQVBJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IDdhZWUzYzVi
MGU0NTk1ZTliNmExZWQ2OTllMTNkODI1MzU1NmY5ZGEuLmMyMWQ4MmJmMmFlMDhiZDQ1NDM1Mjk5
MTk0MTE2MjgxOWE5MzZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMjYxLDcgKzI2MSw2
IEBACiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0Vu
YWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJs
ZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2Vi
R0wyRW5hYmxlZCIKLSNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRXZWJHUFVFbmFibGVkIgogI2RlZmluZSBXZWJLaXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZCIKICNkZWZpbmUg
V2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkIgogI2RlZmluZSBXZWJLaXRTZXJ2ZXJU
aW1pbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFNlcnZlclRpbWluZ0VuYWJsZWQiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpp
bmRleCBmZjczODg1YjE4NTRiY2U0ZGMzOTRlNzkxODkxYWRjOTE0MGNmZDMwLi42ZGU0YWMxYzgw
YzNkYWQzYTA5ZmRlNTdiYWM3NGZlNzk0NWVmNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTMxNzAsMTYgKzMxNzAsNiBA
QCAtICh2b2lkKXNldFdlYkdMMkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIFtzZWxmIF9zZXRC
b29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR0wyRW5hYmxlZFByZWZlcmVuY2VLZXld
OwogfQogCi0tIChCT09MKXdlYkdQVUVuYWJsZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Jvb2xW
YWx1ZUZvcktleTpXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5jZUtleV07Ci19Ci0KLS0gKHZv
aWQpc2V0V2ViR1BVRW5hYmxlZDooQk9PTCllbmFibGVkCi17Ci0gICAgW3NlbGYgX3NldEJvb2xW
YWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5jZUtleV07Ci19
Ci0KIC0gKEJPT0wpbWFza1dlYkdMU3RyaW5nc0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZFByZWZlcmVuY2VL
ZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXggYTU5Mjk3YWYzZmRhNTVjZjUzZDlk
OTA4MWFiOTk3YzRmN2JlNTQ5Yy4uNTBjN2I4YjU3NjFiNDdlYTRjZTJjMWY0YWQ3NmRhZGNmNmVj
MzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC0zOSwxMCArMzksNiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGJvb2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVk
KCk7Ci0jZW5kaWYKLQogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiBib29sIGRlZmF1
bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
cy5tbQppbmRleCAzNTJmZGM1ZTE4YWYyYzU4YjQyZmU0ZTBlN2NmNjczNzFkNjhjZTZjLi40ZThh
NTg5Mzg5YjNhZjA2MWNiODQxM2ExYWI1MjA4YjBkNGIzNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5tbQpAQCAtNjIsMTkgKzYyLDYgQEAgYm9vbCBpc0ZlYXR1cmVGbGFnRW5hYmxlZChj
b25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKQotewotI2lmIEhBVkUoU1lTVEVNX0ZFQVRV
UkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVhdHVyZUZsYWdFbmFibGVkKCJXZWJHUFUiKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
LQogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAKIGJvb2wgZGVmYXVsdEluY3JlbWVu
dGFsUERGRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA1MDc5NzUxNDg4ZTU1MWNmY2IyYjk0
YjliNTgwM2Y2ZjNlOThjNzlmLi41YjI3MWYwOWEzMzU5M2EzZjU3ODFhYTBlYmI3ZWRmMmRjYzBm
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTMzNSw3ICszMzUsNiBAQCBleHRlcm4gTlNTdHJpbmcg
KldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBXRUJL
SVRfREVQUgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQW5pbWF0aW9uc0NvbXBvc2l0
ZU9wZXJhdGlvbnNFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQW5pbWF0
aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
d2ViR0wyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkdQVUVuYWJsZWQ7
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBtYXNrV2ViR0xTdHJpbmdzRW5hYmxlZDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVuYWJsZWQ7
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzZXJ2ZXJUaW1pbmdFbmFibGVkOwo=
</data>
<flag name="commit-queue"
          id="456904"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434415</attachid>
            <date>2021-07-28 02:24:51 -0700</date>
            <delta_ts>2021-07-28 18:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210728022446.patch</filename>
            <type>text/plain</type>
            <size>2955699</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZGQ5ZDNmNTYxNTQ1ZjhjNWU4NzdjMjQwYjQ4NGFjNzAzYWIyZjlkLi5kNDMwYmUzMDNhYzQzNmM3
ZmEyYjk4M2UyZmQxZmVmODU4MWUxMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjcgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtDb2NvYV0gIlJlbW90ZUluc3BlY3RvciBYUEMgY29ubmVjdGlv
biB0byByZWxheSBmYWlsZWQuIiBtZXNzYWdlcyBhcmUgY29uZnVzaW5nIGluIFN0ZEVycgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgyLi42MmYzOGVhMjFiOTll
ZjI0NzQ3ZjhlMjcwYjZlODhmODJhNWM3MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA3
LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRl
Y3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgcmV2ZXJ0
IG9mIHIyODAxOTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjNiYzllODBhYzUzMDAzYTU5N2Q4MjNmN2I0ZWNi
MWUwYWVjNjc4Li43MDU2NGY4NzQxMzNhZDAwOGZlZjk0ZjZhNWVjZGVjYjc2NDdiYzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDg5IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdl
YkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
YmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVC
bGVuZERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VUJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVUJ1ZmZlclVzYWdlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BV
Q2FudmFzQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BV
Q29sb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3Rh
dGVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVD
b2xvcldyaXRlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb21w
YXJlRnVuY3Rpb24uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVUV4dGVudDNELmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9HUFVMb2FkT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9y
aWdpbjNELmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0Qu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJy
b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFw
dGVyT3B0aW9ucy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVNoYWRlclN0YWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hh
ZGVyU3RhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3Jl
T3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJl
Rm9ybWF0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJl
VXNhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9k
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFk
ZHJlc3NTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9u
QXR0cmlidXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmFzZVNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmxvY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
YWxsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnRyeVBvaW50VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRXhwcmVzc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZvckxvb3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmlu
aXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElu
dGVnZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lv
bi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExv
Z2ljYWxOb3RFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE5hbWVTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmll
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNl
U2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1l
bnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
ZXJuYXJ5RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5j
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xW
YXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2Vu
ZXJhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1l
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
VmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1
bXBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVp
bGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
aGVja1JlZmVyZW5jZVR5cGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVm
ZXJlbmNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDb2RlTG9jYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNo
ZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdh
dGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBl
cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZl
clR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJ
bnRyaW5zaWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEludHJpbnNpY3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTExleGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTExleGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2lu
Z01vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBp
cGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5
UmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJvcGVydHlSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVD
aGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFk
ZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1h
bnRpY01hdGNoZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU2VtYW50aWNNYXRjaGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0OiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eVV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVCdWZmZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29w
ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJv
clNjb3Blcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlRXZlbnRIYW5kbGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2FtcGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNhbXBsZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmg6IFJlbW92ZWQuCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6IERl
bGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6OmlzV2ViR0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6aXNXZWJHUFUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpJbnNw
ZWN0b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNF
bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OnJlc29sdmVDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJlY29yZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VG
b3JDYW52YXNDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29u
ZmlndXJlU3dhcENoYWluSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bENvbmZpZ3VyZVN3YXBDaGFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJH
UFVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclNoYWRl
clByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6
cmVxdWVzdFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtOjp1cGRhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclNoYWRlclByb2dyYW06OnBpcGVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVE
ZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OndpbGxDb25maWd1cmVTd2FwQ2hhaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBp
cGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50Lmg6CisgICAgICAgICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0
aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1
dGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb21wdXRlUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNj
b3Blcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFeHRl
bnQzRC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1p
dHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9w
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJh
c2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZN
ZW1vcnlFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1U
eXBlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlckRlc2NyaXB0
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVy
TW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU3RvcmVPcC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25F
cnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFs
bG9jYXRvck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21t
YW5kQnVmZmVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2
aWNlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlv
dXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UGxhdGZvcm1UeXBlc01ldGFsLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRl
clBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVN3YXBDaGFpbk1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW06IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5t
bToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2VkKToKKwogMjAy
MS0wNy0yNyAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHRoZSBidWlsZCB3YXJuaW5nIGJlbG93IHNpbmNlIHIyODAz
MzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBmMjYyYTFkNzAwMWI4ZTU3N2FlMWYyNTUw
MDc2ZDhjNTI2MzY0YTdjLi45OTBmY2EwNTQ0NDg3ZmU3ZmVjMDEwYTVmMzhlMGZhZjQ5NWZlN2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAyMS0wNy0yOCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFz
ZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanM6CisgICAg
ICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5wcm9ncmFtQ3JlYXRlZCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzOgorICAgICAgICAoV0kuQ2FudmFzLmZy
b21QYXlsb2FkKToKKyAgICAgICAgKFdJLkNhbnZhcy5kaXNwbGF5TmFtZUZvckNvbnRleHRUeXBl
KToKKyAgICAgICAgKFdJLkNhbnZhcy5zdXBwb3J0c1JlcXVlc3RDb250ZW50Rm9yQ29udGV4dFR5
cGUpOgorICAgICAgICAoV0kuQ2FudmFzLnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NoYWRlclByb2dyYW0uanM6CisgICAgICAgIChX
SS5TaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0uY29udGV4dFR5cGVT
dXBwb3J0c1Byb2dyYW1UeXBlKToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90eXBl
LmdldCBjYW52YXMpOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuZ2V0IGRp
c3BsYXlOYW1lKToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90eXBlLnNldCBkaXNh
YmxlZCk6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5nZXQgc2hhcmVzVmVy
dGV4RnJhZ21lbnRTaGFkZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvTGVnYWN5LzExLjMvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzEyLjAvSW5zcGVjdG9yQmFja2VuZENvbW1h
bmRzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzEzLjAvSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTGVnYWN5LzEzLjQvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE0LjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE0LjUvSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TGVnYWN5LzE1LjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJ
LkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoQ2xpZW50c1NlY3Rp
b24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLkNhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcucHJvdG90eXBl
Ll9jb250ZW50Vmlld01vdXNlRW50ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q2FudmFzU2lkZWJhclBhbmVsLmNzczoKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLm5hdmln
YXRpb24uY2FudmFzID4gLmNvbnRlbnQgPiAudHJlZS1vdXRsaW5lIC5pdGVtLmNhbnZhczptYXRj
aGVzKC53ZWJnbCwgLndlYmdsMiwgLndlYm1ldGFsKSAuaWNvbik6CisgICAgICAgICguc2lkZWJh
ciA+IC5wYW5lbC5uYXZpZ2F0aW9uLmNhbnZhcyA+IC5jb250ZW50ID4gLnRyZWUtb3V0bGluZSAu
aXRlbS5jYW52YXM6bWF0Y2hlcygud2ViZ2wsIC53ZWJnbDIsIC53ZWJncHUsIC53ZWJtZXRhbCkg
Lmljb24pOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzVHJl
ZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5DYW52YXNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2hh
bmRsZU1vdXNlT3Zlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9y
QWRkaXRpb25zLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJD
b250ZW50Vmlldy5jc3M6CisgICAgICAgICguY29udGVudC12aWV3LnRhYi5ncmFwaGljcyAubmF2
aWdhdGlvbi1iYXIgPiAuaXRlbSAuY2FudmFzOm1hdGNoZXMoLndlYmdsLCAud2ViZ2wyLCAud2Vi
bWV0YWwpIC5pY29uKToKKyAgICAgICAgKC5jb250ZW50LXZpZXcudGFiLmdyYXBoaWNzIC5uYXZp
Z2F0aW9uLWJhciA+IC5pdGVtIC5jYW52YXM6bWF0Y2hlcygud2ViZ2wsIC53ZWJnbDIsIC53ZWJn
cHUsIC53ZWJtZXRhbCkgLmljb24pOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJv
Z3JhbUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1Db250ZW50Vmlldy5w
cm90b3R5cGUuZ2V0IHNhdmVEYXRhKToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1Db250ZW50
Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hDb250ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1NoYWRlclByb2dyYW1UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLlNoYWRlclBy
b2dyYW1UcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVu
dC5wcm90b3R5cGUub25kZXRhY2gpOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKwogMjAyMS0wNy0yNiAgUWlhb3Nv
bmcgWmhvdSAgPHFpYW9zb25nX3pob3VAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcm1EYXRhRXZl
bnQgYWRkZWQuIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3M2UxOTllMWI3ZWIyM2Q0NzlmZTMwNTJjYmZiOTUwOWQx
YmI1MmNjLi43MDM1MTk0NmVmYmVlYjJkNzQyMWZiYjYzNGQ2YWZkM2E0ZTlkMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBh
bmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJL
aXQtYXBwbGV0dm9zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBs
aXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3Q6CisgICAgICAg
ICogRmVhdHVyZUZsYWdzL1dlYktpdC13YXRjaG9zLnBsaXN0OgorICAgICAgICAqIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZhdWx0
V2ViR1BVRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5oOgorCiAyMDIxLTA3LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBbbWFjT1NdIE92ZXJm
bG93IGJ1dHRvbiBzdGlsbCBzaG93cyBhcyBgb25gIGV2ZW4gYWZ0ZXIgY29udGV4dG1lbnUgaXMg
ZGlzbWlzc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNWFkNzA0YTNiYWNiNmFh
NzliMmZlYTAzM2FkOTgxMDQ5MmRkN2U4NS4uNDRiNDJiNDU4MjU4ZTIwNzVjNWMxODM4NGQzYzdm
NzlhMTUyMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBp
bGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgd2ViR1BVRW5hYmxlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmVmZXJl
bmNlcyBzZXRXZWJHUFVFbmFibGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXMubW06CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
OgorCiAyMDIxLTA3LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPUyBNb250ZXJleV0gUHJlc3NpbmcgRm4rRSBzaG91bGQgcHJlc2VudCB0
aGUgZW1vamkgcGlja2VyIHdoZW4gZWRpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KaW5kZXggMDhjMTAwNTE3NmE5NjBl
NzM0MWQ0MGE5ZDc1MjVmYTY1MWIzNGJmZi4uNTEzM2FjNzViZDhhOTVmNTc0MTk2YmM0MjA0MmVk
YTYxMzFhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9DYW52YXMuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0NhbnZhcy5qc29uCkBAIC0xMSwyNSArMTEsMjUgQEAKICAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAiY29u
ZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVm
aW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29u
ZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAg
ICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlx
dWUgc2hhZGVyIHByb2dyYW0gaWRlbnRpZmllci4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAg
ICAgICAgICAgICJpZCI6ICJDb250ZXh0VHlwZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJp
bmciLAotICAgICAgICAgICAgImVudW0iOiBbImNhbnZhcy0yZCIsICJiaXRtYXByZW5kZXJlciIs
ICJ3ZWJnbCIsICJ3ZWJnbDIiLCAid2ViZ3B1Il0sCisgICAgICAgICAgICAiZW51bSI6IFsiY2Fu
dmFzLTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiJdLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIHJlbmRlcmluZyBjb250ZXh0IGJhY2tpbmcg
dGhlIGNhbnZhcyBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAg
ImlkIjogIlByb2dyYW1UeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQo
RU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUp
ICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJp
bmciLAogICAgICAgICAgICAgImVudW0iOiBbImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAgICAg
fSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlNoYWRlclR5cGUiLAotICAgICAgICAg
ICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkg
fHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAg
ICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwK
ICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiY29t
cHV0ZSIsICJmcmFnbWVudCIsICJ2ZXJ0ZXgiXQogICAgICAgICB9LApAQCAtNDUsNyArNDUsNyBA
QAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlbXVsdGlwbGllZEFscGhhIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2Vi
R0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc2VydmVEcmF3aW5nQnVmZmVy
IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJX
ZWJHTCwgV2ViR0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmFpbElmTWFqb3JQ
ZXJmb3JtYW5jZUNhdmVhdCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyLCBXZWJHUFUiIH0KKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyIiB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTY0LDE0ICs2NCwxMyBAQAogICAgICAgICB9LAog
ICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiU2hhZGVyUHJvZ3JhbSIsCi0gICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBXZWJHTC9XZWJHTDIgc2hhZGVy
IHByb2dyYW0gb3IgV2ViR1BVIHNoYWRlciBwaXBlbGluZS4iLAotICAgICAgICAgICAgImNvbmRp
dGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmlu
ZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFt
LiIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBF
TkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwg
IiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3Jh
bVR5cGUiLCAiJHJlZiI6ICJQcm9ncmFtVHlwZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQifSAsCi0gICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciIsICJ0eXBlIjogImJvb2xlYW4iLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZl
cnRleCBhbmQgZnJhZ21lbnQgc2hhZGVyIG1vZHVsZXMgYXJlIHRoZSBzYW1lIG9iamVjdCBmb3Ig
YSByZW5kZXIgc2hhZGVyIHBpcGxlaW5lIGZvciBhIFdlYkdQVSBkZXZpY2UuIiB9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJjYW52YXNJZCIsICIkcmVmIjogIkNhbnZhc0lkIn0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC0xNTEsNyArMTUwLDcgQEAKICAgICAgICAg
ewogICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdFNoYWRlclNvdXJjZSIsCiAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhlIHNvdXJjZSBvZiB0aGUgc2hhZGVyIG9mIHRo
ZSBnaXZlbiB0eXBlIGZyb20gdGhlIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gaWQuIiwKLSAgICAg
ICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VC
R0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAg
ICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9CkBAIC0xNjMsNyAr
MTYyLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRlU2hhZGVyIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3MgdGhlIHNoYWRl
ciB3aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUuIiwK
LSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFC
TEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwK
KyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJM
RV9XRUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9LApAQCAt
MjQ2LDE0ICsyNDUsMTQgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5h
bWUiOiAicHJvZ3JhbUNyZWF0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyUHJvZ3JhbSIsICIkcmVmIjog
IlNoYWRlclByb2dyYW0iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbURlbGV0ZWQiLAotICAgICAgICAgICAgImNvbmRp
dGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmlu
ZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRp
dGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlk
IiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9CiAgICAgICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
b3IucHkKaW5kZXggMjlhMmRlYTcyNGYwYmJlY2ZlYmE2ZGI5MjA2MDgxNzAxZTUxMGM1MS4uYmM0
ODUwYmZmNDMzYzc5Njg0YmUwOTQzNGEwZTBkYzE4MjlkNDcwMCAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRvci5weQpAQCAtNTEsNyArNTEsNiBAQCBfRU5VTV9JREVOVElGSUVSX1JFTkFNRV9NQVAgPSB7
CiAgICAgJ2NhbnZhcy13ZWJnbDInOiAnQ2FudmFzV2ViR0wyJywgICMgUmVjb3JkaW5nLlR5cGUu
Y2FudmFzLXdlYmdsMgogICAgICd3ZWJnbCc6ICdXZWJHTCcsICAjIENhbnZhcy5Db250ZXh0VHlw
ZS53ZWJnbAogICAgICd3ZWJnbDInOiAnV2ViR0wyJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLndl
YmdsMgotICAgICd3ZWJncHUnOiAnV2ViR1BVJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmdwdQog
ICAgICdiaXRtYXByZW5kZXJlcic6ICdCaXRtYXBSZW5kZXJlcicsICAjIENhbnZhcy5Db250ZXh0
VHlwZS5iaXRtYXByZW5kZXJlcgogICAgICdtZWRpYXNvdXJjZSc6ICdNZWRpYVNvdXJjZScsICAj
IENvbnNvbGUuQ2hhbm5lbFNvdXJjZS5tZWRpYXNvdXJjZQogICAgICd3ZWJydGMnOiAnV2ViUlRD
JywgICMgQ29uc29sZS5DaGFubmVsU291cmNlLndlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAppbmRleCA0YWFmNzU5YWIwNDFkOWJiZDQxOWFiMzJiYTQ4NTkzNmNmMjNmYzdmLi41MjU2
NTc2MGQ0NWQ4YTI2MzQxMjQ4NDM1MjkwNGJmYjNjNGQ4MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAor
KysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmlt
ZW50YWwueWFtbApAQCAtMTIyNSwxOSArMTIyNSw2IEBAIFdlYkdMVXNpbmdNZXRhbDoKICAgICAg
ICJIQVZFKFdFQkdMX0NPTVBBVElCTEVfTUVUQUwpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFs
c2UKIAotV2ViR1BVRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFtZTog
IldlYkdQVSIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiV2ViR1BVIFNrZXRjaCBwcm90
b3R5cGUiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkKLSAgZGVmYXVsdFZhbHVlOgotICAg
IFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJs
ZWQoKQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVu
YWJsZWQoKQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBXZWJNRm9ybWF0
UmVhZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVu
YWJsZWRGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZDEwYWE0MmI4MGEyYjU3
NmM5ZThjNWM2OTlhNWQ4YjBlZTJkODAwOS4uZDg2ODhkY2ViNjA5YmUwZTcxMjNlNTQxOTlkNjJm
MzIxYzhhYzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC05MDIsMTAgKzkwMiw2IEBA
CiAjZXJyb3IgIkVOQUJMRShXRUJHTDIpIHJlcXVpcmVzIEVOQUJMRShXRUJHTCkiCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikgJiYgIUVOQUJMRShXRUJHUFUpCi0jZXJyb3Ig
IkVOQUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCi0jZW5kaWYK
LQogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpICYmICFFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBUykKICNlcnJvciAiRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VS
UykgcmVxdWlyZXMgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpIgogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYTllMTBhMjUxOWUwOTM5MzEzYmYyZjU4ZjRhOTY5
NmVlMjFmNTdhZC4uNTg1N2I3Njc1OGQ1ODkxMDFhMzgxYzllZWM3NWRmZjc1NjYxNzQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjYxLDEwICsyNjEsNiBAQAogI2Vu
ZGlmCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9HUFVfRFJJVkVSX1BSRVdBUk1JTkcp
ICYmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE2MDAKLSNkZWZpbmUgRU5BQkxFX0dQVV9EUklWRVJfUFJFV0FSTUlORyAxCi0jZW5kaWYKLQog
I2lmICFkZWZpbmVkKEVOQUJMRV9IQVJEV0FSRV9KUEVHKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYg
Q1BVKFg4Nl82NCkpCiAjZGVmaW5lIEVOQUJMRV9IQVJEV0FSRV9KUEVHIDEKICNlbmRpZgpAQCAt
NjE5LDE0ICs2MTUsNiBAQAogI2RlZmluZSBFTkFCTEVfV0VCR0wyIDEKICNlbmRpZgogCi0jaWYg
IWRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BV
IDEKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dITFNMX0NPTVBJTEVSKSAmJiBFTkFC
TEUoV0VCR1BVKQotI2RlZmluZSBFTkFCTEVfV0hMU0xfQ09NUElMRVIgMQotI2VuZGlmCi0KICNp
ZiAhZGVmaW5lZChFTkFCTEVfV0VCUFJPQ0VTU19OU1JVTkxPT1ApICYmIFBMQVRGT1JNKE1BQykK
ICNkZWZpbmUgRU5BQkxFX1dFQlBST0NFU1NfTlNSVU5MT09QIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggOTc3NTg5YmQy
ODc0NDZmOTAzNGIyMmNmZTI2YjE5MjU0MTRhYzk1Ny4uN2EzYzMzNTIyZjQ2OWZmMzZhYWFlYTJi
MTdmNDhmNmY2ZWQ3ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC01NTAsNzQgKzU1MCw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJEcml2ZXIuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbG9yV3JpdGVCaXRzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
Q29tcGFyZUZ1bmN0aW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVRGVw
dGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvR1BVRXJyb3JGaWx0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVF
eHRlbnQzRC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUlucHV0U3RhdGVE
ZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlQml0LmlkbAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZUZvcm1hdC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVRl
eHR1cmVVc2FnZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRh
dGlvbkVycm9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0
cmlidXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3IrR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5Ci0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXAuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cExheW91dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJ1ZmZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJp
bmRpbmcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29k
ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJy
b3JTY29wZXMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VF
dmVudEhhbmRsZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL05h
dmlnYXRvcitXZWJYUi5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMjZmNDU3ZmE1ZTI5MDU0MWIzNjZiYWJlN2VkNTQ0NGE3Mzg3
ZDYyNS4uZWYzMjI2ZGNjNjMwMzQ2YjRmMjc4N2YwNGU0MWIwMjk4Yjk4OGVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTU4Nyw4
ICs1ODcsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RP
TVdpbmRvd1dlYkRhdGFiYXNlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRE9NV2luZG93V2ViR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJHUFUuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGF0YVRyYW5zZmVyLmNwcApAQCAt
ODUzLDY4ICs4NTEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0Zvcm1EYXRhRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0Zvcm1EYXRhRXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0
QmluZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVCbGVuZERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJsZW5kRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlckRlc2NyaXB0b3Iu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1
ZmZlckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVCdWZmZXJVc2FnZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXNDb250ZXh0LmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXNDb250ZXh0LmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3Iu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNv
bG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
Q29sb3JTdGF0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZS5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZS5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9y
V3JpdGVCaXRzLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVDb2xvcldyaXRlQml0cy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0aW9uLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRGVwdGhTdGVuY2ls
U3RhdGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRlci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXJyb3JGaWx0
ZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVF
eHRlbnQzRC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVRXh0ZW50M0QuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVMb2FkT3AuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUxvYWRP
cC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU9y
aWdpbjNELmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVPcmlnaW4zRC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnMuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTYW1wbGVyRGVzY3JpcHRvci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0
YWdlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVTaGFkZXJTdGFnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVNoYWRlclN0YWdlQml0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFnZUJpdC5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3AuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3AuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRGVzY3Jp
cHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVVGV4dHVyZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVzYWdlLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJl
VXNhZ2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWYWxpZGF0aW9uRXJyb3IuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZhbGlk
YXRpb25FcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Iu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4SW5wdXREZXNjcmlwdG9y
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHYWluTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR2Fpbk5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluT3B0aW9ucy5jcHAKQEAgLTE0MTcsOCArMTM1Myw2IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
K0NyZWRlbnRpYWxzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNOYXZpZ2F0b3IrQ3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dQVS5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
K0dQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05h
dmlnYXRvcitHYW1lcGFkLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNOYXZpZ2F0b3IrR2FtZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHZW9sb2NhdGlvbi5jcHAKQEAgLTE0NDcs
OCArMTM4MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckNyZWRlbnRpYWxzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yRU1FLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JFTUUuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JH
UFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05h
dmlnYXRvckdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU05hdmlnYXRvckdhbWVwYWQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdhbWVwYWQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTI0
MzUsNzIgKzIzNjcsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVyLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVyLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3Vw
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVCaW5kR3JvdXAuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwTGF5
b3V0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVQnVmZmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVCdWZmZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kRW5jb2Rlci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxp
bmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2
aWNlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVEZXZpY2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFdmVu
dEhhbmRsZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlvdXQuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVUXVldWUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVF1ZXVlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJN
b2R1bGUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU3dhcENo
YWluLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVTd2FwQ2hhaW4uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVUZXh0dXJlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1cmVWaWV3LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAt
MjU5OSwxMiArMjQ2NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckdsb2JhbFNjb3BlLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24uY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckxvY2F0aW9u
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2Vy
TmF2aWdhdG9yK0dQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yK0dQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9y
R1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
b3JrZXJOYXZpZ2F0b3JHUFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXb3JrZXJUeXBlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2xldC5jcHAKQEAgLTI3MjcsOCArMjU4OSw2IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1RyYW5zZm9ybVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL1VzZXJBZ2VudFNjcmlwdHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTdHlsZVNoZWV0cy5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJk
TGlicmFyeS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9X
SExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNvcmVKU0J1aWx0
aW5JbnRlcm5hbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvV2ViQ29yZUpTQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBlYmExZjE3MDBlMTI1YWM4YTEwOGMzY2QxMGY1ODA1YmE5ZmVlZGQxLi5jMzMyMzQyYjYyZjg2
OGUzZWJiYTU0MjcyMmI1Nzg1MDBjYjNhYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTQ1OSw2OCArNDU5LDYgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJE
cml2ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRl
eHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlw
dG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlw
dG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmls
dGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXAuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJ4
ci9OYXZpZ2F0b3IrV2ViWFIuaWRsIFwKQEAgLTE4NDUsMTggKzE3ODMsNiBAQCAkKEdFTkVSQVRF
X1NFVFRJTkdTKSA6ICUgOiAkKFdlYkNvcmUpL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvJS5l
cmIgJChXRUJfUFJFRgogCiAjIC0tLS0tLS0tCiAKLSMgV0hMU0wgU3RhbmRhcmQgTGlicmFyeQot
Ci1hbGwgOiBXSExTTFN0YW5kYXJkTGlicmFyeS5oIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuY3BwCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5LmggOiAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS94eGQucGwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YW5kYXJkTGlicmFyeS50eHQKLQliYXNoIC1jICIkKFBFUkwpICQ8IFdITFNMU3RhbmRhcmRMaWJy
YXJ5IDwoZ3ppcCAtY24gJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5k
YXJkTGlicmFyeS50eHQpICRAIgotCi1XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNw
cCA6ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLnB5ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
dGFuZGFyZExpYnJhcnkudHh0Ci0JJChQWVRIT04pICQ8ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICRACi0KLSMgLS0tLS0tLS0KLQogIyBD
b21tb24gZ2VuZXJhdG9yIHRoaW5ncwogCiBDT01NT05fQklORElOR1NfU0NSSVBUUyA9IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExh
eW91dEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkMGVkZjNjMjIy
OWM5MTgyODM4YWZlYWY4YjJmMDZjYTMzNDhmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5k
R3JvdXBMYXlvdXRCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVU2hhZGVyU3RhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQ
VUJpbmRpbmdUeXBlIHsKLSAgICBVbmlmb3JtQnVmZmVyLAotICAgIER5bmFtaWNVbmlmb3JtQnVm
ZmVyLAotICAgIFNhbXBsZXIsCi0gICAgU2FtcGxlZFRleHR1cmUsCi0gICAgU3RvcmFnZUJ1ZmZl
ciwKLSAgICBEeW5hbWljU3RvcmFnZUJ1ZmZlciwKLX07Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBM
YXlvdXRCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVVNoYWRlclN0YWdl
RmxhZ3MgdmlzaWJpbGl0eTsKLSAgICBHUFVCaW5kaW5nVHlwZSB0eXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMGZmMDdiOTcxMDYyZTVh
Y2IxOGZlODIyOWQ3MjMwNzE2MmIzNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3Vw
TGF5b3V0QmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHUzMjsKLXR5cGVkZWYgdTMyIEdQVVNoYWRlclN0YWdlRmxhZ3M7Ci0KLVsKLSAgICBJ
bXBsZW1lbnRlZEFzPUdQVUJpbmRpbmdUeXBlCi1dIGVudW0gR1BVQmluZGluZ1R5cGUgewotICAg
ICJ1bmlmb3JtLWJ1ZmZlciIsCi0gICAgImR5bmFtaWMtdW5pZm9ybS1idWZmZXIiLAotICAgICJz
YW1wbGVyIiwKLSAgICAic2FtcGxlZC10ZXh0dXJlIiwKLSAgICAic3RvcmFnZS1idWZmZXIiLAot
ICAgICJkeW5hbWljLXN0b3JhZ2UtYnVmZmVyIgotICAgIC8vIFRPRE8gb3RoZXIgYmluZGluZyB0
eXBlcwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgewotICAg
IHJlcXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIEdQVVNoYWRlclN0YWdlRmxhZ3Mg
dmlzaWJpbGl0eTsKLSAgICByZXF1aXJlZCBHUFVCaW5kaW5nVHlwZSB0eXBlOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzNmJmZTRk
NzJlZDlhNGI1NDA3MGE1N2EzYjA5MzM5NWNkZDYyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciB7Ci0gICAgVmVjdG9yPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+IGJpbmRpbmdz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRmZGE3YmQ0Y2JiMTg5MTg4OGM2NTI0Y2M1MzQyMzc3OTBmZDA3NzUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgewotICAg
IHJlcXVpcmVkIHNlcXVlbmNlPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+IGJpbmRpbmdzOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVz
Y3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2Ny
aXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDIxOTIzNzdlNmM4NzE4
N2ZmZjZkYjdkYmM1MTU3NmFmZjdhZDY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVz
Y3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9
R1BVQmxlbmRGYWN0b3IKLV0gZW51bSBHUFVCbGVuZEZhY3RvciB7Ci0gICAgInplcm8iLAotICAg
ICJvbmUiLAotICAgICJzcmMtY29sb3IiLAotICAgICJvbmUtbWludXMtc3JjLWNvbG9yIiwKLSAg
ICAic3JjLWFscGhhIiwKLSAgICAib25lLW1pbnVzLXNyYy1hbHBoYSIsCi0gICAgImRzdC1jb2xv
ciIsCi0gICAgIm9uZS1taW51cy1kc3QtY29sb3IiLAotICAgICJkc3QtYWxwaGEiLAotICAgICJv
bmUtbWludXMtZHN0LWFscGhhIiwKLSAgICAic3JjLWFscGhhLXNhdHVyYXRlZCIsCi0gICAgImJs
ZW5kLWNvbG9yIiwKLSAgICAib25lLW1pbnVzLWJsZW5kLWNvbG9yIgotfTsKLQotWwotICAgIElt
cGxlbWVudGVkQXM9R1BVQmxlbmRPcGVyYXRpb24KLV0gZW51bSBHUFVCbGVuZE9wZXJhdGlvbiB7
Ci0gICAgImFkZCIsCi0gICAgInN1YnRyYWN0IiwKLSAgICAicmV2ZXJzZS1zdWJ0cmFjdCIsCi0g
ICAgIm1pbiIsCi0gICAgIm1heCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCbGVuZERlc2NyaXB0
b3IgewotICAgIEdQVUJsZW5kRmFjdG9yIHNyY0ZhY3RvciA9ICJvbmUiOwotICAgIEdQVUJsZW5k
RmFjdG9yIGRzdEZhY3RvciA9ICJ6ZXJvIjsKLSAgICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVyYXRp
b24gPSAiYWRkIjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
MGRmMjRmZTdmMTFjZTg0YzNkY2ZhNGMxOTE2YWE4MGU5NDhkZmU5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHUFVCdWZm
ZXJVc2FnZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQnVmZmVyRGVzY3JpcHRvciB7Ci0gICAg
cmVxdWlyZWQgdTY0IHNpemU7Ci0gICAgcmVxdWlyZWQgR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2Fn
ZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZm
ZXJVc2FnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2Fn
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwODMxNGQ1MmFmMzk0ZGRjYzVi
YWVjMTRiNjNhM2MwNTNjMjMyZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2Uu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0YW50cywKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVCdWZmZXJVc2FnZSB7Ci0gICAg
Y29uc3QgdTMyIE5PTkUgPSAwOwotICAgIGNvbnN0IHUzMiBNQVBfUkVBRCA9IDE7Ci0gICAgY29u
c3QgdTMyIE1BUF9XUklURSA9IDI7Ci0gICAgY29uc3QgdTMyIENPUFlfU1JDID0gNDsKLSAgICBj
b25zdCB1MzIgQ09QWV9EU1QgPSA4OwotICAgIGNvbnN0IHUzMiBJTkRFWCA9IDE2OwotICAgIGNv
bnN0IHUzMiBWRVJURVggPSAzMjsKLSAgICBjb25zdCB1MzIgVU5JRk9STSA9IDY0OwotICAgIGNv
bnN0IHUzMiBTVE9SQUdFID0gMTI4OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4YjE1MjhmZmMzYTk1MjU4NTBhOTRkNjVlZDI3OTRhNGQ4MDRjMzUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDYW52
YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChH
UFVDYW52YXNDb250ZXh0KTsKLQotc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+IEdQ
VUNhbnZhc0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCi17Ci0gICAgYXV0byBj
b250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+KG5ldyBHUFVDYW52YXND
b250ZXh0KGNhbnZhcykpOwotICAgIGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJl
dHVybiBjb250ZXh0OwotfQotCi1HUFVDYW52YXNDb250ZXh0OjpHUFVDYW52YXNDb250ZXh0KENh
bnZhc0Jhc2UmIGNhbnZhcykKLSAgICA6IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dChj
YW52YXMpCi17Ci19Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IEdQVUNhbnZhc0NvbnRleHQ6OmNv
bmZpZ3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQotewotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IuYXNHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4g
V2ViR1BVU3dhcENoYWluOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgCi0gICAgYXV0byBncHVTd2Fw
Q2hhaW4gPSBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgqZ3B1RGVzY3JpcHRvciwgY2FudmFzQmFz
ZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSk7Ci0gICAgYm9vbCBzdWNjZXNzID0g
Z3B1U3dhcENoYWluOwotICAgIGF1dG8gbmV3U3dhcENoYWluID0gV2ViR1BVU3dhcENoYWluOjpj
cmVhdGUoV1RGTW92ZShncHVTd2FwQ2hhaW4pKTsKLSAgICAKLSAgICAvLyBVcG9uIHN1Y2Nlc3Ms
IGludmFsaWRhdGUgYW5kIHJlcGxhY2UgYW55IGV4aXN0aW5nIHN3YXAgY2hhaW4uCi0gICAgaWYg
KHN1Y2Nlc3MpIHsKLSAgICAgICAgLy8gRklYTUU6IFRlc3QgdGhhdCB0aGlzIHdvcmtzIGFzIGV4
cGVjdGVkIHdpdGggZXJyb3IgcmVwb3J0aW5nLgotICAgICAgICBpZiAobV9zd2FwQ2hhaW4pCi0g
ICAgICAgICAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgpOwotCi0gICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbigqdGhpcywgbmV3U3dhcENoYWlu
LmdldCgpKTsKLQotICAgICAgICBtX3N3YXBDaGFpbiA9IG5ld1N3YXBDaGFpbi5jb3B5UmVmKCk7
Ci0KLSAgICAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5nZWQoKTsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIG5ld1N3YXBDaGFpbjsKLX0KLQotUGxhdGZvcm1MYXllciogR1BVQ2FudmFzQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3dhcENoYWluICYmIG1f
c3dhcENoYWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgcmV0dXJuIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lk
IEdQVUNhbnZhc0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAg
IGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCi0gICAgICAgIG1f
c3dhcENoYWluLT5zd2FwQ2hhaW4oKS0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKLQotICAgIG5v
dGlmeUNhbnZhc0NvbnRlbnRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgR1BVQ2FudmFzQ29udGV4dDo6
cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQotewotICAgIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50ID0gdHJ1ZTsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpCi17Ci0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAgaWYg
KG1faXNEaXNwbGF5aW5nV2l0aFBhaW50ICYmIG1fc3dhcENoYWluICYmIG1fc3dhcENoYWluLT5z
d2FwQ2hhaW4oKSkgewotICAgICAgICBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCktPnByZXNlbnQo
KTsKLSAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBmYWxzZTsKLSAgICB9Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEwMGQxNjMy
ZTEzZDBjOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dh
cENoYWluLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVDYW52YXND
b250ZXh0IGZpbmFsIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7Ci0g
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVDYW52YXNDb250ZXh0KTsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+IGNyZWF0ZShDYW52YXNC
YXNlJik7Ci0KLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7IH0KLQotICAgIFdlYkdQ
VVN3YXBDaGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7
IH0KLSAgICBSZWY8V2ViR1BVU3dhcENoYWluPiBjb25maWd1cmVTd2FwQ2hhaW4oY29uc3QgV2Vi
R1BVU3dhcENoYWluRGVzY3JpcHRvciYpOwotCi1wcml2YXRlOgotICAgIEdQVUNhbnZhc0NvbnRl
eHQoQ2FudmFzQmFzZSYpOwotCi0gICAgLy8gR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
Ci0gICAgYm9vbCBpc1dlYkdQVSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlz
cGxheVdpdGhQYWludCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoKSBmaW5hbDsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkdQVUNhbnZhc0Nv
bnRleHQiOyB9Ci0gICAgLy8gRklYTUU6IFN0dWJzLgotICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsg
fQotCi0gICAgYm9vbCBtX2lzRGlzcGxheWluZ1dpdGhQYWludCB7IGZhbHNlIH07Ci0gICAgUmVm
UHRyPFdlYkdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci19OwotCi19IC8vIG4BYW1lc3BhY2Ug
V2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQo
V2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dCwgaXNXZWJHUFUoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVD
YW52YXNDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZh
c0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWEyNDE2MTFkMDBk
NmIxNmRjNTNmYjc3ZTYwYjI2ZmJiOTMyZTAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZh
c0NvbnRleHQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBHUFVUZXh0dXJlVXNhZ2VGbGFnczsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsK
LSAgICByZXF1aXJlZCBXZWJHUFVEZXZpY2UgZGV2aWNlOwotICAgIHJlcXVpcmVkIEdQVVRleHR1
cmVGb3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOyAvLyBGSVhN
RTogZGVmYXVsdCBpcyBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQuCi19OwotCi1b
Ci0gICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDYW52YXNC
YXNlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVDYW52YXNDb250ZXh0IHsK
LSAgICAvLyBiYWNrLXJlZmVyZW5jZSB0byB0aGUgY2FudmFzCi0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhczsKLQotICAgIC8vIENhbGxpbmcgY29uZmlndXJl
U3dhcENoYWluIGEgc2Vjb25kIHRpbWUgaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzIG9uZSwKLSAg
ICAvLyBhbmQgYWxsIG9mIHRoZSB0ZXh0dXJlcyBpdOKAmXMgcHJvZHVjZWQuCi0gICAgV2ViR1BV
U3dhcENoYWluIGNvbmZpZ3VyZVN3YXBDaGFpbihXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOwotCi0gICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KLSAgICAvLyBQcm9taXNl
PEdQVVRleHR1cmVGb3JtYXQ+IGdldFN3YXBDaGFpblByZWZlcnJlZEZvcm1hdChHUFVEZXZpY2Ug
ZGV2aWNlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDb2xvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODk1ZjVmMjIzYTM5MWU0ZDMxN2VkMjll
YWQwYWY0NzI2ZmFkYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVDb2xvciB7Ci0gICAgcmVxdWlyZWQgZmxv
YXQgcjsKLSAgICByZXF1aXJlZCBmbG9hdCBnOwotICAgIHJlcXVpcmVkIGZsb2F0IGI7Ci0gICAg
cmVxdWlyZWQgZmxvYXQgYTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUxYTAzMDk1ZjYyZTdkZGM4MjhmMjcxYTY4ZjgzNTRjNDEyODY1MTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHUFVDb2xvcldyaXRlRmxhZ3M7Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUK
LV0gZGljdGlvbmFyeSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgR1BV
VGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICByZXF1aXJlZCBHUFVCbGVuZERlc2NyaXB0b3Ig
YWxwaGFCbGVuZDsKLSAgICByZXF1aXJlZCBHUFVCbGVuZERlc2NyaXB0b3IgY29sb3JCbGVuZDsK
LSAgICBHUFVDb2xvcldyaXRlRmxhZ3Mgd3JpdGVNYXNrOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3Jp
dGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGRjNTg4MWEwMTc5N2I1MTAxNDgzOGU1
ZTBjN2YxZGI5NjJkZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUNvbG9yV3JpdGUgewotICAgIGNvbnN0IHUz
MiBOT05FID0gMDsKLSAgICBjb25zdCB1MzIgUkVEID0gMTsKLSAgICBjb25zdCB1MzIgR1JFRU4g
PSAyOwotICAgIGNvbnN0IHUzMiBCTFVFID0gNDsKLSAgICBjb25zdCB1MzIgQUxQSEEgPSA4Owot
ICAgIGNvbnN0IHUzMiBBTEwgPSAxNTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTBmZmI0ZjFkZjJkZGJlOTM0MWFjYzNmZDExZjVhMjcwYWM0ZTQwMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZW51bSBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgICJuZXZlciIsCi0gICAgImxlc3Mi
LAotICAgICJlcXVhbCIsCi0gICAgImxlc3MtZXF1YWwiLAotICAgICJncmVhdGVyIiwKLSAgICAi
bm90LWVxdWFsIiwKLSAgICAiZ3JlYXRlci1lcXVhbCIsCi0gICAgImFsd2F5cyIKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0
ZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhT
dGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjBjOTJmYjBkMzg5MzYxYWUyNjZlY2VlOTRkMDRkMGJmZDBmNmE0YS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IgewotICAg
IGJvb2xlYW4gZGVwdGhXcml0ZUVuYWJsZWQgPSBmYWxzZTsKLSAgICBHUFVDb21wYXJlRnVuY3Rp
b24gZGVwdGhDb21wYXJlID0gImFsd2F5cyI7Ci0KLS8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAg
ICBHUFVTdGVuY2lsU3RhdGVGYWNlRGVzY3JpcHRvciBzdGVuY2lsRnJvbnQ7Ci0gICAgR1BVU3Rl
bmNpbFN0YXRlRmFjZURlc2NyaXB0b3Igc3RlbmNpbEJhY2s7Ci0KLSAgICB1MzIgc3RlbmNpbFJl
YWRNYXNrOwotICAgIHUzMiBzdGVuY2lsV3JpdGVNYXNrOwotKi8KLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDViOGY0OWE2MWMyNzllOTAyNjQ4NGM2ZWY5MDY0NWVhZDViMWFiYTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUKLV0gZW51bSBHUFVFcnJvckZpbHRlciB7Ci0gICAgIm5vbmUiLAotICAgICJvdXQtb2Yt
bWVtb3J5IiwKLSAgICAidmFsaWRhdGlvbiIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQx
MTk3Njk3MzYwNzE1NjY0NWVhZjAzMzViODJlMDg4MjE3YmFjMmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVRXh0ZW50M0QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgW0VuZm9y
Y2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVJbnRlZ2VyQ29vcmRpbmF0ZTsKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9u
YXJ5IEdQVUV4dGVudDNEIHsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSB3aWR0
aDsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQ7Ci0gICAgcmVxdWly
ZWQgR1BVSW50ZWdlckNvb3JkaW5hdGUgZGVwdGg7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdj
MmQ0ZmEyODJmYzY5NjAyN2U5Y2ZhNWYzNWE0NjcyYTc5M2E3M2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVTG9hZE9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVTG9hZE9w
IHsKLSAgICAiY2xlYXIiLAotICAgICJsb2FkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVPcmlnaW4zRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjJi
N2IzNmRkY2EzYWFjNWNiMzUwZTAwNDA4YTI3NDE2ZDI2NWRmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVU9yaWdpbjNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVPcmlnaW4zRCB7Ci0gICAgdW5zaWduZWQgeCB7IDAgfTsKLSAgICB1
bnNpZ25lZCB5IHsgMCB9OwotICAgIHVuc2lnbmVkIHogeyAwIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNzcxOWMwMjI0ZDMzN2IxYTE2NjBiOGQwNjA4MTEyN2IzOTViY2VkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVT3JpZ2luM0QgewotICAg
IHUzMiB4ID0gMDsKLSAgICB1MzIgeSA9IDA7Ci0gICAgdTMyIHogPSAwOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDgwYWUwMmRhMWZjNWIwNDAxNzRlYTcy
ZjkyMzg3NTZjZjFhZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVPdXRPZk1lbW9yeUVycm9yIHsK
LSAgICBjb25zdHJ1Y3RvcigpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZWEwMGQ2MWFiZjhhNTA0YTQwMTk5NGE3Y2JkYTExMmJkMzhlOTdl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVUG93ZXJQcmVmZXJlbmNl
Ci1dIGVudW0gR1BVUG93ZXJQcmVmZXJlbmNlIHsKLSAgICAibG93LXBvd2VyIiwKLSAgICAiaGln
aC1wZXJmb3JtYW5jZSIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnMgewotICAgIEdQVVBvd2VyUHJlZmVyZW5jZT8gcG93ZXJQcmVmZXJlbmNlOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9y
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzMTM2ODQ5OWZjZTJmNGJjYzgx
OTA5ZDczYWQ4MTBjNWMzZTE2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3Jp
cHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUz
MjsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVQWRkcmVzc01vZGUKLV0gZW51bSBHUFVBZGRy
ZXNzTW9kZSB7Ci0gICAgImNsYW1wLXRvLWVkZ2UiLAotICAgICJyZXBlYXQiLAotICAgICJtaXJy
b3ItcmVwZWF0IgotfTsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVRmlsdGVyTW9kZQotXSBl
bnVtIEdQVUZpbHRlck1vZGUgewotICAgICJuZWFyZXN0IiwKLSAgICAibGluZWFyIgotfTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVVNhbXBsZXJEZXNjcmlwdG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBh
ZGRyZXNzTW9kZVUgPSAiY2xhbXBUb0VkZ2UiOwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NN
b2RlViA9ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVXID0g
ImNsYW1wVG9FZGdlIjsKLSAgICBHUFVGaWx0ZXJNb2RlIG1hZ0ZpbHRlciA9ICJuZWFyZXN0IjsK
LSAgICBHUFVGaWx0ZXJNb2RlIG1pbkZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBHUFVGaWx0ZXJN
b2RlIG1pcG1hcEZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBmbG9hdCBsb2RNaW5DbGFtcCA9IDA7
Ci0gICAgZmxvYXQgbG9kTWF4Q2xhbXAgPSAweGZmZmZmZmZmOyAvLyBUT0RPOiBXaGF0IHNob3Vs
ZCB0aGlzIGJlPyBXYXMgTnVtYmVyLk1BWF9WQUxVRS4KLSAgICB1MzIgbWF4QW5pc290cm9weSA9
IDE7Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbiA9ICJuZXZlciI7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3Rh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWFkNDdlZmRkODBlNGM5NTI2MWU1ZDI5ZWFj
MWEzYWI4OTgyNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQVVNoYWRlclN0YWdlRmxhZ3MgPSB1bnNpZ25lZDsKLQot
Y2xhc3MgR1BVU2hhZGVyU3RhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJTdGFnZT4g
ewotcHVibGljOgotICAgIGVudW0gRmxhZ3MgOiBHUFVTaGFkZXJTdGFnZUZsYWdzIHsKLSAgICAg
ICAgTm9uZSA9IDAsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgMCwKLSAgICAgICAgRnJhZ21lbnQg
PSAxIDw8IDEsCi0gICAgICAgIENvbXB1dGUgPSAxIDw8IDIsCi0gICAgfTsKLX07Ci0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGMzMWMyMzk1ZTNhYjYyZGE1YTM1YTIzMDg1NzdjNTg4N2M3
NGM2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIEdQVVNoYWRlclN0YWdlIHsKLSAgICBjb25zdCB1MzIgTk9ORSA9
IDA7Ci0gICAgY29uc3QgdTMyIFZFUlRFWCA9IDE7Ci0gICAgY29uc3QgdTMyIEZSQUdNRU5UID0g
MjsKLSAgICBjb25zdCB1MzIgQ09NUFVURSA9IDQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2MxMmI5NTJlODc0ODAwY2U2NmE5ZDc5Nzg4ZjA0NTQ1MmFhMmI4MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVTdG9yZU9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVU3Rv
cmVPcCB7Ci0gICAgInN0b3JlIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGZhMGMzYzI0OGJkOGZhYzFiYzE1NjhkN2Q2MTJiYTM2OTRmZWVmMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVUludGVnZXJDb29y
ZGluYXRlOwotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVVNpemUzMjsK
LXR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVUZXh0dXJlVXNhZ2VGbGFn
czsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVVGV4dHVyZURpbWVuc2lvbgotXSBlbnVtIEdQ
VVRleHR1cmVEaW1lbnNpb24gewotICAgICIxZCIsCi0gICAgIjJkIiwKLSAgICAiM2QiCi19Owot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
Ci1dIGRpY3Rpb25hcnkgR1BVVGV4dHVyZURlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIEdQVUV4
dGVudDNEIHNpemU7Ci0gICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgbWlwTGV2ZWxDb3VudCA9IDE7
Ci0gICAgR1BVU2l6ZTMyIHNhbXBsZUNvdW50ID0gMTsKLSAgICBHUFVUZXh0dXJlRGltZW5zaW9u
IGRpbWVuc2lvbiA9ICIyZCI7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7
Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhMWY3NzZlNDE3NzUyZDA4YjI4YWQ3ZWU4ZDc0ZWQy
ZDUyMjM3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVVGV4dHVyZUZv
cm1hdCB7Ci0gICAgInJnYmE4dW5vcm0iLAotICAgICJyZ2JhOHVpbnQiLAotICAgICJiZ3JhOHVu
b3JtIiwKLSAgICAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAiYmdyYTh1bm9ybS1zcmdi
IiwKLSAgICAicmdiYTE2ZmxvYXQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNhY2MzOGY3ZDY1ZTk1NWU5ZDZiN2I5MTMyYWZlYmExYzUyM2I2ZGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2Ug
R1BVVGV4dHVyZVVzYWdlIHsKLSAgICBjb25zdCB1MzIgQ09QWV9TUkMgPSAxOwotICAgIGNvbnN0
IHUzMiBDT1BZX0RTVCA9IDI7Ci0gICAgY29uc3QgdTMyIFNBTVBMRUQgPSA0OwotICAgIGNvbnN0
IHUzMiBTVE9SQUdFID0gODsKLSAgICBjb25zdCB1MzIgT1VUUFVUX0FUVEFDSE1FTlQgPSAxNjsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1
cmVkRXJyb3JFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmOWQx
YmEzYWU0NzcyOTdmZGQ4M2I3YmFhMjJkMTYzNzhjODk5ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVVbmNhcHR1
cmVkRXJyb3JFdmVudC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLQotUmVmPEdQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVz
dGVkKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50
KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKLX0KLQotUmVmPEdQVVVuY2FwdHVyZWRF
cnJvckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIEdQVUVycm9yJiYgZXJyb3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwgV1RGTW92ZShlcnJvcikpKTsKLX0KLQotR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
KQotICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKLSAgICAsIG1fZXJy
b3IoaW5pdGlhbGl6ZXIuZXJyb3IpCi17Ci19Ci0KLUdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBHUFVFcnJvciYm
IGVycm9yKQotICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpO
bykKLSAgICAsIG1fZXJyb3IoV1RGTW92ZShlcnJvcikpCi17Ci19Ci0KLUV2ZW50SW50ZXJmYWNl
IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW50ZXJmYWNlVHlwZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZTk1ZGFkZWY1YmFiM2E4YmU2ZWMy
ZWU0MzNmN2M2ZjNmMjMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNs
dWRlICJHUFVFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVu
dCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCk7
Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEluaXQ6IEV2ZW50SW5pdCB7Ci0gICAgICAgIEdQVUVycm9y
IGVycm9yOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50
PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQgPSBJc1Ry
dXN0ZWQ6Ok5vKTsKLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYpOwotCi0gICAgY29uc3QgR1BVRXJyb3Ig
ZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwotICAgIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBHUFVF
cnJvciYmKTsKLQotICAgIC8vIEV2ZW50Ci0gICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEdQVUVycm9yIG1fZXJyb3I7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2NkODE1Y2JkMTVmYmFjZjJl
ZjFjMTk4NDBmZjQwZDFmZGNlYTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRF
cnJvckV2ZW50LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIChHUFVPdXRPZk1l
bW9yeUVycm9yIG9yIEdQVVZhbGlkYXRpb25FcnJvcikgR1BVRXJyb3I7Ci0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFy
eSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgOiBFdmVudEluaXQgewotICAgIHJlcXVpcmVk
IEdQVUVycm9yIGVycm9yOwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2Ug
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgOiBFdmVudCB7Ci0gICAgY29uc3RydWN0b3IoRE9NU3Ry
aW5nIHR5cGUsIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW5pdCBncHVVbmNhcHR1cmVkRXJyb3JF
dmVudEluaXREaWN0KTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHUFVFcnJvciBlcnJvcjsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0
aW9uRXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjNWIxNTZmYjcyOGM2
MzBmZDczY2VkNjcyMWEzNWE5OTk2NjQwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0
aW9uRXJyb3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVVmFsaWRhdGlv
bkVycm9yIHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgbWVzc2FnZSk7Ci0KLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQzZDI2YzUzMGUyZjYzM2Mw
ZDI3YmMxMTAzNmM1MDM5ZWEzNjVkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRy
aWJ1dGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAg
SW1wbGVtZW50ZWRBcz1HUFVWZXJ0ZXhGb3JtYXQKLV0gZW51bSBHUFVWZXJ0ZXhGb3JtYXQgewot
ICAgICJmbG9hdCIsCi0gICAgImZsb2F0MiIsCi0gICAgImZsb2F0MyIsCi0gICAgImZsb2F0NCIK
LX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIHsKLSAgICB1
NjQgb2Zmc2V0ID0gMDsKLSAgICByZXF1aXJlZCBHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0OwotICAg
IHJlcXVpcmVkIHUzMiBzaGFkZXJMb2NhdGlvbjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWUwOGY2NTg2ZGQ4OTUyYzE3NzA3NmNmZjky
NWJjZDQxMzE1NjhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFz
PUdQVUlucHV0U3RlcE1vZGUKLV0gZW51bSBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAgICAidmVydGV4
IiwKLSAgICAiaW5zdGFuY2UiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgdTY0IHN0cmlkZTsKLSAgICBHUFVJbnB1dFN0ZXBNb2Rl
IHN0ZXBNb2RlID0gInZlcnRleCI7Ci0gICAgc2VxdWVuY2U8R1BVVmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvcj4gYXR0cmlidXRlU2V0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjZjk3YjEwZWU0MWE4MTFmYzNkMjkyOTMwMmU0Mjc3NWYwZWE3
M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAg
IEltcGxlbWVudGVkQXM9R1BVSW5kZXhGb3JtYXQKLV0gZW51bSBHUFVJbmRleEZvcm1hdCB7Ci0g
ICAgInVpbnQxNiIsCi0gICAgInVpbnQzMiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0ID0gInVpbnQz
MiI7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj8+IHZl
cnRleEJ1ZmZlcnM7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvTmF2aWdhdG9yK0dQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZp
Z2F0b3IrR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIwZjhmMTc1Njk0
OTQwNWI0OTRmMjQyNzgxNzQyNjkxMDkzZjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0
b3IrR1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZpZ2F0b3ItZ3B1Ci1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIElt
cGxlbWVudGVkQnk9TmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7
Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1OwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2ZjMDdiYjY1OGZkNjE5YWZmM2QyNDkzOGM2MGQ4ZTFk
NWNmODUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk5hdmlnYXRvckdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
Ik5hdmlnYXRvci5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLU5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9y
KQotewotICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRv
ckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCkpKTsKLSAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1
cHBsZW1lbnQ7Ci19Ci0KLWNvbnN0IGNoYXIqIE5hdmlnYXRvckdQVTo6c3VwcGxlbWVudE5hbWUo
KQotewotICAgIHJldHVybiAiTmF2aWdhdG9yR1BVIjsKLX0KLQotY29uc3QgV2ViR1BVKiBOYXZp
Z2F0b3JHUFU6OmdwdShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRvIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS53ZWJH
UFVFbmFibGVkKTsKLSAgICByZXR1cm4gTmF2aWdhdG9yR1BVOjpmcm9tKCZuYXZpZ2F0b3IpLT5n
cHUoKTsKLX0KLQotY29uc3QgV2ViR1BVKiBOYXZpZ2F0b3JHUFU6OmdwdSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJHUFU6OmNyZWF0ZSgpOwotICAgIHJl
dHVybiBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L05hdmlnYXRvckdQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdh
dG9yR1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NThkMDg0NmNkNjcyOWY0
OGVlOTVlNzcyM2I5ZmRiOTFmNDhiNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BV
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOYXZpZ2F0b3I7Ci1jbGFzcyBXZWJHUFU7
Ci0KLWNsYXNzIE5hdmlnYXRvckdQVSBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRv
cj4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBXZWJHUFUqIGdwdShOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgTmF2
aWdhdG9yR1BVKiBmcm9tKE5hdmlnYXRvciopOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSogZ3B1KCkgY29uc3Q7Ci0KLSAg
ICBtdXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY0NjNmOWUwYTE2ZGVlYWUxNTBiZTUxNzJkMTJiMWI3MjdjNDkyOTIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJX
SExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgot
I2luY2x1ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5o
IgotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENvbW1h
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xDb250aW51ZS5oIgotI2luY2x1ZGUgIldITFNMRGVyZWZlcmVuY2VFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIu
aCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2guaCIKLSNpbmNs
dWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlw
ZS5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25B
dHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMR2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFs
LmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1l
ZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xRdWFsaWZpZXIuaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJl
c29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCi0jaW5j
bHVkZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xTdGF0ZW1lbnRMaXN0LmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSAi
V0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNp
bmNsdWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5o
IgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5o
IgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTNiMjk2ZDhkMzNkNWJmNmE5NDk2YmIwYzMxMTY3N2RhMjljOWUxZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEFkZHJlc3NF
c2NhcGVNb2RlIDogdWludDhfdCB7Ci0gICAgRXNjYXBlcywgLy8gQ29uc2VydmF0aXZlbHksIHRo
aXMgYWRkcmVzcy1vZiBvcGVyYXRpb24gbWlnaHQgZXNjYXBlLgotICAgIERvZXNOb3RFc2NhcGUg
Ly8gVGhpcyBhZGRyZXNzLW9mIG9wZXJhdGlvbiBkZWZpbml0ZWx5IGRvZXMgbm90IGVzY2FwZS4K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
ZGRyZXNzU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFkZHJlc3NTcGFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTg2NjY4
YjY2N2U4NDY1Yzc4OTg5YTAwMDZiNmEwZjZkMGQyMTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEFkZHJlc3NTcGFjZSA6
IHVpbnQ4X3QgewotICAgIENvbnN0YW50LAotICAgIERldmljZSwKLSAgICBUaHJlYWRncm91cCwK
LSAgICBUaHJlYWQKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyB0b1N0cmluZyhBZGRy
ZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotewotICAgIHN3aXRjaCAoYWRkcmVzc1NwYWNlKSB7Ci0g
ICAgY2FzZSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNvbnN0YW50
IjsKLSAgICBjYXNlIEFkZHJlc3NTcGFjZTo6RGV2aWNlOgotICAgICAgICByZXR1cm4gImRldmlj
ZSI7Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOgotICAgICAgICByZXR1cm4g
InRocmVhZGdyb3VwIjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNl
ID09IEFkZHJlc3NTcGFjZTo6VGhyZWFkKTsKLSAgICAgICAgcmV0dXJuICJ0aHJlYWQiOwotICAg
IH0KLX0KLQotc3RydWN0IExlZnRWYWx1ZSB7Ci0gICAgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFj
ZTsKLX07Ci0KLXN0cnVjdCBBYnN0cmFjdExlZnRWYWx1ZSB7Ci19OwotCi1zdHJ1Y3QgUmlnaHRW
YWx1ZSB7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLWNsYXNz
IFR5cGVBbm5vdGF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBUeXBlQW5ub3RhdGlvbigpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgOiBtX2Vt
cHR5KHRydWUpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oTGVm
dFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBl
QW5ub3RhdGlvbihBYnN0cmFjdExlZnRWYWx1ZSB2KQotICAgICAgICA6IG1faW5uZXIodikKLSAg
ICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oUmlnaHRWYWx1ZSB2KQotICAgICAgICA6
IG1faW5uZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oY29uc3QgVHlw
ZUFubm90YXRpb24mKSA9IGRlZmF1bHQ7Ci0gICAgVHlwZUFubm90YXRpb24oVHlwZUFubm90YXRp
b24mJiBvdGhlcikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFubm90YXRpb24mIG9wZXJhdG9yPShj
b25zdCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKLSAgICBUeXBlQW5ub3RhdGlvbiYgb3Bl
cmF0b3I9KFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVmYXVsdDsKLQotICAgIHN0ZDo6b3B0
aW9uYWw8QWRkcmVzc1NwYWNlPiBsZWZ0QWRkcmVzc1NwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PExlZnRWYWx1ZT4obV9pbm5lcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TGVmdFZh
bHVlPihtX2lubmVyKS5hZGRyZXNzU3BhY2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgYm9vbCBpc1JpZ2h0VmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKCFtX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmlnaHRWYWx1ZT4obV9pbm5lcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZp
c2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4gZGVjbHR5cGUoV1RG
Ojp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxMZWZ0VmFsdWUsIEFic3RyYWN0
TGVmdFZhbHVlLCBSaWdodFZhbHVlPiY+KCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vt
cHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbm5lcik7Ci0gICAg
fQotCi0gICAgYm9vbCBpc0Fic3RyYWN0TGVmdFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEFic3RyYWN0TGVmdFZhbHVlPihtX2lubmVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFy
aWFudDxMZWZ0VmFsdWUsIEFic3RyYWN0TGVmdFZhbHVlLCBSaWdodFZhbHVlPiBtX2lubmVyOwot
I2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYm9vbCBtX2VtcHR5IHsgZmFsc2UgfTsKLSNlbmRpZgot
fTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFy
cmF5UmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDEzMjc2MGExNDVmZjk2NjY4MjliZTY4OWY5NjcxZmIzMDliYWM2ZjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZSBmaW5h
bCA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheVJlZmVyZW5jZVR5cGUpOwotICAgIHVzaW5n
IEJhc2UgPSBSZWZlcmVuY2VUeXBlOwotCi0gICAgQXJyYXlSZWZlcmVuY2VUeXBlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBl
PiBlbGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdU
Rk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJheVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgfQot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8QXJyYXlSZWZlcmVuY2VUeXBlPiBjcmVhdGUoQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5
cGU+IGVsZW1lbnRUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJy
YXlSZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5
cGUpKSk7Ci0gICAgfQotCi0gICAgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKLQot
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPkJh
c2U6Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoKCJhcnJheSIpOwot
ICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVy
LmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsK
LSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50b1N0cmluZygpLCAiW10iKTsKLSAgICB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShBcnJheVJlZmVyZW5jZVR5cGUsIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U1YmZjYjMwMWQzMWY5NzZhMmU4MDU0MGYyMWJi
ODk0NGNjNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNM
VW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQXJyYXlUeXBlIGZpbmFsIDogcHVibGljIFVubmFt
ZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBcnJheVR5cGUpOwotICAgIEFycmF5VHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQotICAg
ICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKLSAgICAgICAgLCBtX2Vs
ZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQotICAgICAgICAsIG1fbnVtRWxlbWVudHMo
bnVtRWxlbWVudHMpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLQotICAgIHN0YXRpYyBSZWY8QXJy
YXlUeXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVs
ZW1lbnRUeXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFycmF5VHlwZShsb2NhdGlvbiwgV1RGTW92ZShlbGVtZW50VHlwZSksIG51
bUVsZW1lbnRzKSk7Ci0gICAgfQotCi0gICAgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKLQotICAg
IGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsg
fQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotICAg
IHVuc2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50czsgfQot
Ci0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpJ
bnRIYXNoPHVuc2lnbmVkPjo6aGFzaChtX251bUVsZW1lbnRzKSBeIG1fZWxlbWVudFR5cGUtPmhh
c2goKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJyYXlUeXBlJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBudW1FbGVtZW50cygpID09IG90aGVyLm51
bUVsZW1lbnRzKCkgJiYgdHlwZSgpID09IG90aGVyLnR5cGUoKTsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlw
ZSgpLnRvU3RyaW5nKCksICdbJywgbnVtRWxlbWVudHMoKSwgJ10nKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX2VsZW1lbnRUeXBlOwotICAgIHVuc2lnbmVkIG1f
bnVtRWxlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklO
RV9ERUZBVUxUX0RFTEVURShBcnJheVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfVFlQRShBcnJheVR5cGUsIGlzQXJyYXlUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q5OThiNTI1ZmM2ZjNhODU0NDVkN2RiZTQzY2VmNjYz
ZGUyNzdhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhw
cmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6QXNzaWdubWVudCkKLSAgICAg
ICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmln
aHQpKQotICAgIHsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgICAgICBVTlVTRURfUEFSQU0obV9w
YWQpOwotI2VuZGlmCi0gICAgfQotCi0gICAgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwotCi0gICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKLSAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9s
ZWZ0OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9Ci0gICAg
VW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1vdmUobV9yaWdo
dCk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OwotICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0OwotI2lmIENQVShBRERSRVNTMzIpCi0gICAg
Y2hhciBtX3BhZFsxXTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQXNzaWdubWVudEV4cHJlc3Npb24pCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhwcmVzc2lvbiwg
aXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTU1NjI1YzhmZGM0MTgxZWI0Y2Q0ZTk2ZjVlNmYxMWNhNGUzMWZj
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29k
ZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
QmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQot
ICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5CYXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7Ci0g
ICAgQmFzZUZ1bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQmFzZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODA5ODhhNjBmZmY1YTY4NGQ3YjEzN2QzNWNjNzM5YWZkMjA0NzZlYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSW50cmluc2lj
czsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLWNsYXNz
IFVubmFtZWRUeXBlOwotCi1jbGFzcyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIEJhc2VTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRp
b24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJhc2VTZW1hbnRp
Yyhjb25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCYXNlU2VtYW50aWMoQmFzZVNl
bWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVUeXBl
KGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0ID0gMDsKLQotICAg
IGVudW0gY2xhc3MgU2hhZGVySXRlbURpcmVjdGlvbiA6IHVpbnQ4X3QgewotICAgICAgICBJbnB1
dCwKLSAgICAgICAgT3V0cHV0Ci0gICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0ID0gMDsKLQotcHJpdmF0ZToKLSAgICBDb2Rl
TG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ5MjRiYTc1Y2ZiNmVkZTRkODRjYmVkNTJkNGRkOTE0YzY1
YjM3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCbG9jayBmaW5hbCA6IHB1
YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIEJsb2NrKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMp
Ci0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCbG9jaykKLSAgICAgICAgLCBt
X3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkJs
b2NrKCkgPSBkZWZhdWx0OwotCi0gICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRlbGV0ZTsKLSAg
ICBCbG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1lbnRzJiBzdGF0ZW1lbnRz
KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RhdGVtZW50cyBt
X3N0YXRlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklO
RV9ERUZBVUxUX0RFTEVURShCbG9jaykKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9T
VEFURU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJvb2xlYW5MaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzODM2MDUxNjdmYmE1ZWUwM2FhZmJjNjdjODEzMWM1MzFlMDEwNTE0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCb29sZWFuTGl0ZXJhbCBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBCb29sZWFuTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGJvb2wgdmFsdWUp
Ci0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxpdGVyYWwpCi0g
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkJvb2xlYW5MaXRl
cmFsKCkgPSBkZWZhdWx0OwotCi0gICAgQm9vbGVhbkxpdGVyYWwoY29uc3QgQm9vbGVhbkxpdGVy
YWwmKSA9IGRlbGV0ZTsKLSAgICBCb29sZWFuTGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEJvb2xlYW5MaXRl
cmFsJikgPSBkZWxldGU7Ci0gICAgQm9vbGVhbkxpdGVyYWwmIG9wZXJhdG9yPShCb29sZWFuTGl0
ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQotCi0gICAgQm9vbGVhbkxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQm9vbGVhbkxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICAg
ICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBib29sIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xl
YW5MaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NzYxYmEyOGI3Y2I3MjQ4NGQ3YzYyMzY3
YzQ3OGE0MmRhYmYwZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJyZWFrIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQnJlYWsoQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6QnJl
YWspCi0gICAgewotICAgIH0KLQotICAgIH5CcmVhaygpID0gZGVmYXVsdDsKLQotICAgIEJyZWFr
KGNvbnN0IEJyZWFrJikgPSBkZWxldGU7Ci0gICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0Owot
Ci1wcml2YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoQnJlYWspCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKEJyZWFrLCBpc0JyZWFrKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCdWlsdEluU2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzNlNGRmMmVjMWI0MTRkMGNiODNjNjliMjc2NjI0NGI5YjZiNjcyMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWJvb2wgQnVpbHRJblNlbWFudGlj
Ojppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3Qg
SW50cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fdmFyaWFibGUp
IHsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiBtYXRj
aGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFi
bGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRy
aW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAg
Y2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVklz
RnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5ib29sVHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAg
ICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAg
ICBjYXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6
OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0gICAgICAgIHJl
dHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICBj
YXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVk
VHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3Bh
dGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5z
aWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAg
ICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwot
ICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6
U1ZHcm91cFRocmVhZElEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50
cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAgIH0KLX0KLQotYm9vbCBCdWlsdEluU2VtYW50aWM6
OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBk
aXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50
VHlwZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRyeVBvaW50VHlwZSkgewotICAgIGNhc2Ug
RW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAgICAgICAgICAgIHN3aXRj
aCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbnN0YW5jZUlE
OgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rp
b246Ok91dHB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlBv
c2l0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgc3dpdGNoIChk
aXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAg
ICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246
Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICAgICAg
Y2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0
OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZh
cmlhYmxlOjpTVlRhcmdldDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0g
ICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBl
OjpDb21wdXRlOgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFNo
YWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxl
KSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAg
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhy
ZWFkSUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFu
dGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NWE1MTgyNzEwNTFjNWQwYzM5
OTUxZWM3YWNiMmFjNzQ2YjBjZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QnVpbHRJblNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJ1aWx0SW5TZW1h
bnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIGVudW0gY2xhc3MgVmFyaWFibGUgOiB1aW50OF90IHsKLSAgICAgICAg
U1ZJbnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElELAotICAgICAgICBQU2l6ZSwKLSAgICAg
ICAgU1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250RmFjZSwKLSAgICAgICAgU1ZTYW1wbGVJ
bmRleCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBTVlRhcmdldCwKLSAgICAg
ICAgU1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwKLSAgICAgICAgU1ZEaXNwYXRjaFRocmVh
ZElELAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAgIFNWR3JvdXBJbmRleCwKLSAgICAgICAg
U1ZHcm91cFRocmVhZElECi0gICAgfTsKLQotICAgIEJ1aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYm
IHRhcmdldEluZGV4ID0gc3RkOjpudWxsb3B0KQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2Nh
dGlvbikKLSAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQotICAgICAgICAsIG1fdGFyZ2V0
SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
fkJ1aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJ1aWx0SW5TZW1hbnRpYyhjb25z
dCBCdWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCdWlsdEluU2VtYW50aWMoQnVpbHRJ
blNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlIHZhcmlhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYWJsZTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiB0YXJn
ZXRJbmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fdmFyaWFibGUgPT0gb3RoZXIubV92YXJpYWJsZSAmJiBtX3RhcmdldEluZGV4ID09IG90
aGVyLm1fdGFyZ2V0SW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJ1
aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgU3RyaW5nVmlldyB0b1N0cmluZygpIGNvbnN0Ci0g
ICAgewotICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICAgICAgcmV0dXJuICJTVkluc3RhbmNlSUQiOwotICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICAgICAgcmV0dXJuICJTVlZl
cnRleElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgICAgICByZXR1
cm4gIlBTaXplIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAg
ICAgIHJldHVybiAiU1ZQb3NpdGlvbiI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9u
dEZhY2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSXNGcm9udEZhY2UiOwotICAgICAgICBjYXNl
IFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICAgICAgcmV0dXJuICJTVlNhbXBsZUlu
ZGV4IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICAg
ICAgcmV0dXJuICJTVklubmVyQ292ZXJhZ2UiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlRh
cmdldDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZUYXJnZXQiOwotICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkRlcHRoOgotICAgICAgICAgICAgcmV0dXJuICJTVkRlcHRoIjsKLSAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgICAgIHJldHVybiAiU1ZDb3ZlcmFnZSI7
Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgICAg
IHJldHVybiAiU1ZEaXNwYXRjaFRocmVhZElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZH
cm91cElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3VwSUQiOwotICAgICAgICBjYXNlIFZh
cmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWR3JvdXBJbmRleCI7
Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAgICAgICAgIHJl
dHVybiAiU1ZHcm91cFRocmVhZElEIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgaXNB
Y2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24o
U2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4m
KSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBWYXJpYWJsZSBtX3ZhcmlhYmxlOwot
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFyZ2V0SW5kZXg7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDYWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmQ0MTE4ZTIxYjM1MDk1Y2Y4NDViMTFmNmI5MTRkOGVlZDc0ZTZlMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
OTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlwZTsKLQotY2xh
c3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+
PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpDYWxs
KQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fYXJndW1lbnRz
KFdURk1vdmUoYXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ2FsbEV4cHJlc3Npb24o
Y29uc3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDYWxsRXhwcmVzc2lvbihDYWxs
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Np
b24+PiYgYXJndW1lbnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KLQotICAgIFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgfkNhbGxFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwotCi0gICAgdm9pZCBzZXRDYXN0RGF0YShOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLSAgICB7
Ci0gICAgICAgIG1fY2FzdFJldHVyblR5cGUgPSAmbmFtZWRUeXBlOwotICAgIH0KLQotICAgIGJv
b2wgaXNDYXN0KCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIE5hbWVkVHlwZSog
Y2FzdFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9Ci0gICAgRnVuY3Rp
b25EZWNsYXJhdGlvbiYgZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZnVuY3Rp
b24pOwotICAgICAgICByZXR1cm4gKm1fZnVuY3Rpb247Ci0gICAgfQotCi0gICAgdm9pZCBzZXRG
dW5jdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFtX2Z1bmN0aW9uKTsKLSAgICAgICAgbV9mdW5jdGlvbiA9ICZmdW5j
dGlvbkRlY2xhcmF0aW9uOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwotICAgIEZ1bmN0
aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07Ci0gICAgTmFtZWRUeXBlKiBt
X2Nhc3RSZXR1cm5UeXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24pCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxs
RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFF
eHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDb21tYUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI0OGJi
Mzg4MTUxMzNmOTZkMThiNWY4YjkwMGZkMjVkM2ExMWM3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgQ29tbWFFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJl
c3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENvbW1h
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVz
c2lvbj4+JiYgbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpDb21t
YSkKLSAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKLSAgICB7Ci0gICAgfQotCi0gICAg
fkNvbW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIENvbW1hRXhwcmVzc2lvbihjb25z
dCBDb21tYUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb21tYUV4cHJlc3Npb24oQ29tbWFF
eHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lv
bj4+JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFVu
aXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9saXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29tbWFFeHByZXNzaW9uKQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBpc0Nv
bW1hRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2Q0MTM3ZTg1YmZjYzU4MTdiN2QyNWZkZmY1YjQwNjRlMDhhMzQ2Ni4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCi0j
aW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExT
TEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNs
dWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLS8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IG1hY09TIFNpZXJyYSBk
b2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywK
LS8vIHNvIHRoaXMgaXMgYSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3Qg
aGFwcGVuLiBBcyBzb29uIGFzIHdlIGRvbid0Ci0vLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0
aGlzIGNhbiBiZSBtaWdyYXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgotY2xhc3MgQ29uc3RhbnRF
eHByZXNzaW9uIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwmJiBpbnRlZ2VyTGl0ZXJhbCkK
LSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0ZXJhbCkpCi0gICAgewotICAg
IH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYgdW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9u
KEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZShmbG9hdExpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24o
Qm9vbGVhbkxpdGVyYWwmJiBib29sZWFuTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RG
TW92ZShib29sZWFuTGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVz
c2lvbihFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwp
Ci0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKGNvbnN0IENvbnN0YW50RXhw
cmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENvbnN0YW50RXhwcmVzc2lvbihDb25zdGFudEV4cHJl
c3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uJiBvcGVyYXRvcj0o
Y29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ29uc3RhbnRFeHByZXNz
aW9uJiBvcGVyYXRvcj0oQ29uc3RhbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIElu
dGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCgpCi0gICAgewotICAgICAgICBBU1NFUlQoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KSk7Ci0gICAgICAg
IHJldHVybiBXVEY6OmdldDxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2
aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJp
YW50PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBGbG9hdExpdGVyYWws
IEJvb2xlYW5MaXRlcmFsLCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+Jj4oKSkpCi0gICAgewot
ICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhcmlhbnQpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3Im
IHZpc2l0b3IpIGNvbnN0IC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNs
dmFsPFZhcmlhbnQ8SW50ZWdlckxpdGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIEZsb2F0
TGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFyaWFudCk7Ci0g
ICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEludGVnZXJM
aXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAg
ICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3Qg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gQ29uc3Rh
bnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFs
LmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJh
bCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdExpdGVy
YWwuY2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBib29sZWFu
TGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBib29s
ZWFuTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lv
biB7Ci0gICAgICAgICAgICByZXR1cm4gZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmNsb25lKCk7
Ci0gICAgICAgIH0pLCBtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIGJvb2wgbWF0Y2hlcyhjb25z
dCBDb25zdGFudEV4cHJlc3Npb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxib29sPiByZXN1bHQ7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgdmlz
aXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRl
cmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAg
ICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFs
dWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7
Ci0gICAgICAgICAgICB2YWx1ZSA9IGZsb2F0TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBb
Jl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxCb29sZWFuTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50
KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyQm9vbGVhbkxpdGVyYWwgPSBX
VEY6OmdldDxCb29sZWFuTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID09IG90aGVyQm9vbGVhbkxpdGVyYWwu
dmFsdWUoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZh
bHNlOwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyTWVtYmVyUmVmZXJlbmNlID0gV1RGOjpnZXQ8
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigp
ID09IG90aGVyTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVtYmVyKCk7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSkpOwot
Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKLQotICAg
ICAgICBvdGhlci52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJh
bCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IGludGVn
ZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJM
aXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2
YWx1ZSA9PSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShj
b25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0g
dmFsdWUgPT0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBCb29s
ZWFuTGl0ZXJhbCYpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9LCBb
Jl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgewotICAgICAgICAgICAgcmVzdWx0
ID0gZmFsc2U7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuICpyZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8Ci0gICAg
ICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAg
ICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAgIEJvb2xlYW5MaXRlcmFsLAotICAgICAgICBFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwKLSAgICAgICAgPiBtX3ZhcmlhbnQ7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDb250aW51ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQ29udGludWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA1MWMyNDJhZjA2
ZjhjMzNjNjRkMDU2YmNjYzlhM2RkMGY5MGY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb250aW51ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIENvbnRpbnVlIGZpbmFs
IDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6Q29udGludWUpCi0gICAgewotICAgIH0KLQotICAgIH5Db250
aW51ZSgpID0gZGVmYXVsdDsKLQotICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxl
dGU7Ci0gICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
Q29udGludWUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKENvbnRp
bnVlLCBpc0NvbnRpbnVlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xE
ZWZhdWx0RGVsZXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xEZWZhdWx0RGVsZXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYjI1
MjU5YTI5Zjc3ODIxOGIzYTM5ZDI4N2FkMGY3ODYyNmFkOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0KLSNkZWZpbmUgREVGSU5FX0RFRkFVTFRf
REVMRVRFKHR5cGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0ZW1wbGF0ZTw+
IFwKLSAgICAgICAgc3RydWN0IGRlZmF1bHRfZGVsZXRlPFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5
cGU+IHsgXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFwKLSAgICAgICAgICAg
IHZvaWQgY2FsbERlbGV0ZShUKiB0KSBcCi0gICAgICAgICAgICB7IFwKLSAgICAgICAgICAgICAg
ICBkZWxldGUgdDsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gXAotICAgICAgICAgICAgdm9pZCBjYWxsRGVzdHJveShUKiB0KSBcCi0gICAgICAg
ICAgICB7IFwKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlOjpkZXN0
cm95KCp0KTsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICBjb25zdGV4cHIgdm9pZCBv
cGVyYXRvcigpKFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGUqIHZhbHVlKSBcCi0gICAgICAgICAg
ICB7IFwKLSAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmluYWw8V2ViQ29y
ZTo6V0hMU0w6OkFTVDo6dHlwZT46OnZhbHVlKSBcCi0gICAgICAgICAgICAgICAgICAgIGNhbGxE
ZWxldGUodmFsdWUpOyBcCi0gICAgICAgICAgICAgICAgZWxzZSBcCi0gICAgICAgICAgICAgICAg
ICAgIGNhbGxEZXN0cm95KHZhbHVlKTsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgIH07IFwK
LSAgICB9IFwKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNl
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDkyYzFlMTY0MzFmMzBiZGU5NWQ5ZGU1MTExNmRiOGFhNjdiNGI5NGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgRGVyZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERlcmVmZXJlbmNl
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYm
IHBvaW50ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RGVyZWZlcmVu
Y2UpCi0gICAgICAgICwgbV9wb2ludGVyKFdURk1vdmUocG9pbnRlcikpCi0gICAgewotICAgIH0K
LQotICAgIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBEZXJlZmVy
ZW5jZUV4cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0g
ICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9Ci0K
LXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcG9pbnRlcjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKERlcmVm
ZXJlbmNlRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2ViZmQ5ZTg0ZjMyOTgzMDZkMTUwOTQ0ZmJmZmY3
OGE1NTkzYWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29w
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBEb1do
aWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIERvV2hpbGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25k
aXRpb25hbCkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29w
KQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIG1fY29uZGl0aW9u
YWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgewotICAgIH0KLQotICAgIH5Eb1doaWxlTG9v
cCgpID0gZGVmYXVsdDsKLQotICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBk
ZWxldGU7Ci0gICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OwotCi0gICAg
U3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0gICAgRXhwcmVzc2lvbiYgY29u
ZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5p
cXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Nv
bmRpdGlvbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNkZmI0MjIzMDQ1ZmUwMmY5NmM5MGI4Yzc1N2U5YjNiNjRiYjc1
NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBEb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgRG90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIGJhc2UsIFN0cmluZyYmIGZpZWxkTmFtZSkKLSAgICAgICAgOiBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkKLSAgICAgICAg
LCBtX2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCi0gICAgewotICAgICAgICBVTlVTRURf
UEFSQU0obV9wYWRkaW5nKTsKLSAgICB9Ci0KLSAgICB+RG90RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKLQotICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0gZGVsZXRlOwot
ICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJp
bmcmIGZpZWxkTmFtZSgpIHsgcmV0dXJuIG1fZmllbGROYW1lOyB9Ci0KLXByaXZhdGU6Ci0gICAg
U3RyaW5nIG1fZmllbGROYW1lOwotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBmb3IgcmVw
bGFjZVdpdGggaW50byBhIGJpZ2dlciB0eXBlLgotICAgIGNoYXIgbV9wYWRkaW5nWzEyXTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KERvdEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihEb3RFeHByZXNzaW9uLCBpc0RvdEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiYTFkZDc4ODBlNWM4
NmU1NWU2ZTg3Y2U1MWI5N2RlOTA5OTc3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExT
TFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBlZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICA6IFN0YXRlbWVudChlZmZl
Y3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lv
bikKLSAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHBy
ZXNzaW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KGNvbnN0
IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmJikgPSBkZWZh
dWx0OwotCi0gICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1f
ZWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50LCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzQ0NmRmMTBiNzU1ZGQ2YzYwNWIzOTY0
OTgzNjFmMTZlYzc3YmIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5
UG9pbnRUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDxj
c3RkaW50PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEVudHJ5UG9pbnRUeXBlIDogdWludDhfdCB7Ci0g
ICAgVmVydGV4LAotICAgIEZyYWdtZW50LAotICAgIENvbXB1dGUsCi19OwotCi1BTFdBWVNfSU5M
SU5FIFN0cmluZ1ZpZXcgdG9TdHJpbmcoRW50cnlQb2ludFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHJl
dHVybiAidmVydGV4IjsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAg
ICAgcmV0dXJuICJmcmFnbWVudCI7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToK
LSAgICAgICAgcmV0dXJuICJjb21wdXRlIjsKLSAgICB9Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmY4ZGU1YWMyM2Y0
YTdhYmMzNDVkY2U4YTUxY2VmYjY1ZjlkOTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVudW1lcmF0aW9uRGVmaW5p
dGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlw
ZT4gdHlwZSkKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9u
LCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBl
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRp
b24mKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZp
bml0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4g
bV90eXBlOyB9Ci0KLSAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKLSAg
ICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBt
YWtlVW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5OwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVy
KiBtZW1iZXJCeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fbWVtYmVycy5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9tZW1iZXJzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci0gICAgfQotCi0gICAgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8RW51bWVyYXRpb25NZW1iZXI+PiBlbnVtZXJhdGlvbk1lbWJlcnMoKQot
ICAgIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RW51bWVyYXRpb25N
ZW1iZXI+PiByZXN1bHQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fbWVtYmVycykKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKnBhaXIudmFsdWUpOwotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEVudW1lcmF0aW9uTWVtYmVyPj4gbV9t
ZW1iZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoRW51bWVyYXRpb25EZWZpbml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1RZUEUoRW51bWVyYXRpb25EZWZpbml0aW9uLCBpc0VudW1lcmF0aW9uRGVmaW5p
dGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25N
ZW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uTWVtYmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODg4ZjM1
YTllMGM5ZjhkNGQxN2MxOTI1NGI0YzY5ZmM2NjRiNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xD
b25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIEVudW1lcmF0aW9uTWVtYmVyKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
U3RyaW5nJiYgbmFtZSwgaW50NjRfdCB2YWx1ZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihs
b2NhdGlvbikKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3Zh
bHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5FbnVtZXJhdGlvbk1lbWJl
cigpID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKGNvbnN0IEVudW1lcmF0aW9u
TWVtYmVyJikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25NZW1i
ZXImJikgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFN0cmluZyBuYW1lKCkgeyBy
ZXR1cm4gbV9uYW1lOyB9Ci0gICAgaW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0K
LQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBpbnQ2NF90IG1fdmFsdWU7Ci19OwotCi11c2luZyBFbnVtZXJhdGlvbk1l
bWJlcnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxODM0ZTk3N2FjY2U5MGFmMGYyMTk4ZjE4NWYxZjk5MjJlMTYwNDQ3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3Mg
RW51bWVyYXRpb25NZW1iZXI7Ci0KLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxv
Y2F0aW9uLCBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0gICAgICAgICwgbV9sZWZ0
KFdURk1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKLSAgICB7
Ci0gICAgfQotCi0gICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKLQot
ICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0g
ZGVsZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGF0aWMgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBT
dHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRp
b24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7Ci0gICAgICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQobG9jYXRpb24sIFdURk1vdmUobGVmdCks
IFdURk1vdmUocmlnaHQpKTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25EZWZpbml0aW9u
ID0gJmVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25N
ZW1iZXIgPSAmZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCi0gICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KLQotICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBh
dXRvIHJlc3VsdCA9IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb2RlTG9jYXRpb24oKSwgU3Ry
aW5nKG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7Ci0gICAgICAgIHJlc3VsdC5tX2VudW1lcmF0
aW9uTWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1
bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVm
aW5pdGlvbiogZW51bWVyYXRpb25EZWZpbml0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2VudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmluaXRp
b24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9lbnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIq
IGVudW1lcmF0aW9uTWVtYmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9u
TWVtYmVyOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJl
cigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldEVudW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9uRGVmaW5pdGlv
biYgZW51bWVyYXRpb25EZWZpbml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25N
ZW1iZXIpCi0gICAgewotICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICZlbnVtZXJh
dGlvbkRlZmluaXRpb247Ci0gICAgICAgIG1fZW51bWVyYXRpb25NZW1iZXIgPSAmZW51bWVyYXRp
b25NZW1iZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2xlZnQ7Ci0gICAgU3Ry
aW5nIG1fcmlnaHQ7Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBtX2VudW1lcmF0aW9uRGVm
aW5pdGlvbiB7IG51bGxwdHIgfTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlciogbV9lbnVtZXJhdGlv
bk1lbWJlciB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkxZThkYzM2YTg5NGIzOTllN2YzY2E2MzBiNjZhOGYyNDE2MGI0OTcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXZvaWQgRXhwcmVzc2lvbjo6ZGVzdHJv
eShFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5k
KCkpIHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PEJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25j
YXN0PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoK
LSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Np
b24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4o
ZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
SW5kZXg6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNz
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9k
aWZ5V3JpdGU6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6VGVybmFyeToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxVbnNp
Z25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5j
ZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lv
bik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBFeHByZXNzaW9uOjpkZXN0cnVj
dChFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5k
KCkpIHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGRv
d25jYXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKS5+QXNzaWdubWVudEV4cHJl
c3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpCb29s
ZWFuTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24p
Ln5Cb29sZWFuTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkNhbGw6Ci0gICAgICAgIGRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9u
KS5+Q2FsbEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpDb21tYToKLSAgICAgICAgZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9uPihleHByZXNz
aW9uKS5+Q29tbWFFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PERlcmVmZXJlbmNlRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikufkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAg
ZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKS5+RmxvYXRMaXRlcmFsKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0g
ICAgICAgIGRvd25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+SW50ZWdlckxpdGVy
YWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2Fs
OgotICAgICAgICBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxvZ2lj
YWxFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6TG9naWNhbE5vdDoKLSAgICAgICAgZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pLn5Mb2dpY2FsTm90RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgZG93bmNh
c3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAgZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNz
aW9uPihleHByZXNzaW9uKS5+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBkb3duY2FzdDxEb3RF
eHByZXNzaW9uPihleHByZXNzaW9uKS5+RG90RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAg
ICAgICBkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikufkdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6SW5kZXg6Ci0gICAgICAgIGRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikufkluZGV4RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgZG93bmNhc3Q8UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5Ogot
ICAgICAgICBkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuflRlcm5hcnlF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbD4oZXhwcmVzc2lvbikuflVuc2lnbmVkSW50ZWdlckxpdGVyYWwoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWw6Ci0gICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lv
bikufkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxW
YXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikuflZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBFeHByZXNzaW9uOjptYXlCZUVmZmVjdGZ1bCgp
IGNvbnN0Ci17Ci0gICAgYXV0byYgZXhwcmVzc2lvbiA9IGNvbnN0X2Nhc3Q8RXhwcmVzc2lvbiY+
KCp0aGlzKTsKLQotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKLSAgICBjYXNlIEV4
cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6RmxvYXRMaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVy
YWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikucG9pbnRl
cigpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2lj
YWw6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikubGVmdCgpLm1heUJlRWZmZWN0ZnVsKCkgfHwgZG93bmNhc3Q8TG9naWNhbEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pLnJpZ2h0KCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PExvZ2ljYWxO
b3RFeHByZXNzaW9uPihleHByZXNzaW9uKS5vcGVyYW5kKCkubWF5QmVFZmZlY3RmdWwoKTsKLQot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
bGVmdFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLmxlZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCkgfHwgZG93bmNh
c3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5pbmRleEV4cHJlc3Npb24oKS5tYXlCZUVm
ZmVjdGZ1bCgpOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEzNmEwNDczNDJjNTM0ZmVkMzc2N2RmMGYxZDc1M2VlZjQ3NjhhYzMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEV4cHJlc3Npb24gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfkV4cHJlc3Npb24o
KSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLQotICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3Qg
ewotICAgICAgICBBc3NpZ25tZW50LAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAg
Q2FsbCwKLSAgICAgICAgQ29tbWEsCi0gICAgICAgIERlcmVmZXJlbmNlLAotICAgICAgICBEb3Qs
Ci0gICAgICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLAotICAgICAgICBGbG9hdExpdGVyYWws
Ci0gICAgICAgIEluZGV4LAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgTG9naWNh
bCwKLSAgICAgICAgTG9naWNhbE5vdCwKLSAgICAgICAgTWFrZUFycmF5UmVmZXJlbmNlLAotICAg
ICAgICBNYWtlUG9pbnRlciwKLSAgICAgICAgUmVhZE1vZGlmeVdyaXRlLAotICAgICAgICBUZXJu
YXJ5LAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBWYXJpYWJsZVJl
ZmVyZW5jZSwKLSAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLAotICAgIH07Ci0KLSAg
ICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKLSAgICAg
ICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgICAgICwgbV9raW5kKGtpbmQp
Ci0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koRXhwcmVzc2lvbiYpOwot
ICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KEV4cHJlc3Npb24mKTsKLQotICAgIEV4cHJlc3Npb24o
Y29uc3QgRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0oY29uc3QgRXhwcmVzc2lv
biYpID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24mIG9wZXJhdG9yPShFeHByZXNzaW9uJiYpID0g
ZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIHsgcmV0dXJu
IG1fdHlwZSA/ICYqbV90eXBlIDogbnVsbHB0cjsgfQotCi0gICAgVW5uYW1lZFR5cGUmIHJlc29s
dmVkVHlwZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlKTsKLSAgICAgICAgcmV0dXJu
ICptX3R5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVkVHlwZT4gdHlw
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90eXBlID0gV1RG
TW92ZSh0eXBlKTsKLSAgICB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlvbiogbWF5YmVUeXBl
QW5ub3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUFubm90YXRpb24gPyAmKm1fdHlwZUFu
bm90YXRpb24gOiBudWxscHRyOyB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlvbiYgdHlwZUFu
bm90YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZUFubm90YXRpb24p
OwotICAgICAgICByZXR1cm4gKm1fdHlwZUFubm90YXRpb247Ci0gICAgfQotCi0gICAgdm9pZCBz
ZXRUeXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIHR5cGVBbm5vdGF0aW9uKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFtX3R5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgbV90eXBlQW5ub3Rh
dGlvbiA9IFdURk1vdmUodHlwZUFubm90YXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgY29weVR5
cGVUbyhFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvbHZlZFR5cGUgPSBjb25zdF9jYXN0PEV4cHJlc3Npb24qPih0aGlzKS0+bWF5YmVSZXNvbHZl
ZFR5cGUoKSkKLSAgICAgICAgICAgIG90aGVyLnNldFR5cGUoKnJlc29sdmVkVHlwZSk7Ci0gICAg
fQotCi0gICAgYm9vbCBtYXlCZUVmZmVjdGZ1bCgpIGNvbnN0OwotCi0gICAgS2luZCBraW5kKCkg
Y29uc3QgIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9Ci0gICAgYm9v
bCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJvb2xl
YW5MaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkNhbGw7IH0KLSAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbW1hOyB9Ci0gICAgYm9vbCBpc0RlcmVmZXJl
bmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJlZmVyZW5j
ZTsgfQotICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkRvdDsgfQotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsgfQotICAg
IGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Rmxv
YXRMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpJbmRleDsgfQotICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wg
aXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dp
Y2FsOyB9Ci0gICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7IH0KLSAgICBib29sIGlzTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlQXJyYXlS
ZWZlcmVuY2U7IH0KLSAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQb2ludGVyOyB9Ci0gICAgYm9vbCBpc1Byb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90RXhwcmVzc2lvbigpIHx8IGlz
SW5kZXhFeHByZXNzaW9uKCk7IH0KLSAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFkTW9kaWZ5V3JpdGU7IH0KLSAg
ICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6VGVybmFyeTsgfQotICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KLSAgICBi
b29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
VmFyaWFibGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bDsgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAg
ICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBlPiBt
X3R5cGU7Ci0gICAgc3RkOjpvcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlv
bjsKLSAgICBLaW5kIG1fa2luZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJlc3Npb24pCi0KLSNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRv
VmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpX
SExTTDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSB7IHJldHVybiBleHByZXNzaW9uLnBy
ZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGRlNDRmYzU1MGU5YmIzNmQ3MjkxYWRjZDIyYWY5NWJmOGM4NzRmZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEZhbGx0aHJvdWdoIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmFsbHRocm91Z2goQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6
RmFsbHRocm91Z2gpCi0gICAgewotICAgIH0KLQotICAgIH5GYWxsdGhyb3VnaCgpID0gZGVmYXVs
dDsKLQotICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZhbGx0aHJvdWdoJikgPSBkZWxldGU7Ci0gICAg
RmFsbHRocm91Z2goRmFsbHRocm91Z2gmJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmFs
bHRocm91Z2gpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0
aHJvdWdoLCBpc0ZhbGx0aHJvdWdoKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGbG9hdExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NjFmOWQ0YjA5ZDc4YmQzMTkzNGM4OTMyZTBhZDhjZTkxMGYxZTZkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgRmxvYXRMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZsb2F0TGl0ZXJhbChDb2RlTG9jYXRp
b24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24s
IEtpbmQ6OkZsb2F0TGl0ZXJhbCkKLSAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQot
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5GbG9hdExpdGVy
YWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWwoY29uc3QgRmxvYXRMaXRlcmFsJikg
PSBkZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsKEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0
ZTsKLSAgICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0
OwotCi0gICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAg
IGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgRmxvYXRMaXRl
cmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEZsb2F0TGl0ZXJhbCByZXN1bHQoY29k
ZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNs
b25lKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNv
bHZlZFR5cGUoKSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0
PEFTVDo6VW5uYW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8o
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
RmxvYXRMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgZmxvYXQgbV92YWx1ZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEZsb2F0TGl0
ZXJhbCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEZsb2F0TGl0
ZXJhbCwgaXNGbG9hdExpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM3MzA4YzAwZTc1ZjA0ZDJhNzgzYjg5MTk2OTk2NTU0MzNkNWI4MDkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6Rmxv
YXRMaXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShU
eXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sICJmbG9hdCJfc3RyLCBUeXBlQXJndW1lbnRz
KCkpKQotewotfQotCi1ib29sIEZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlw
ZSYgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+
KHR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0g
ZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0
aXZlVHlwZURlY2xhcmF0aW9uLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudEZsb2F0KCkobV92YWx1
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWdu
ZWQgRmxvYXRMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCBtX3ByZWZl
cnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotRmxvYXRM
aXRlcmFsVHlwZSBGbG9hdExpdGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0gICAgRmxvYXRM
aXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24oKSwgbV92YWx1
ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBy
ZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlwZSkpOwotICAg
IHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJlZigpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTRlMDg1OWI3YzA4ZjU2MjJkYTRi
MGU0ZWE3NDIxYjczNzVmNWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZs
b2F0TGl0ZXJhbFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLQotY2xhc3MgRmxvYXRMaXRlcmFsVHlw
ZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGZsb2F0
IHZhbHVlKTsKLQotICAgIH5GbG9hdExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgRmxv
YXRMaXRlcmFsVHlwZShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgRmxv
YXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0
TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7
Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBk
ZWZhdWx0OwotCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0K
LSAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRU
eXBlOyB9Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBG
bG9hdExpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZmxvYXQgbV92
YWx1ZTsKLSAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxU
eXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Np
b24KLSAgICBSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRl
cmFsVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEZsb2F0TGl0ZXJh
bFR5cGUsIGlzRmxvYXRMaXRlcmFsVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRm9yTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGE1NzQw
Zjg3NWZmZGQ3OWVkYWU3MmFmODM1ODRhODg2MjhmZTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZvckxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50Lmgi
Ci0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1
ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZvckxvb3AoQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGluaXRpYWxpemF0aW9uLCBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBjb25kaXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxF
eHByZXNzaW9uPiYmIGluY3JlbWVudCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5KQotICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Rm9yTG9vcCkKLSAgICAgICAgLCBtX2lu
aXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRpb24pKQotICAgICAgICAsIG1fY29uZGl0
aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKLSAgICAgICAgLCBtX2luY3JlbWVudChXVEZNb3ZlKGlu
Y3JlbWVudCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgewotICAgIH0K
LQotICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgRm9yTG9vcChjb25zdCBGb3JMb29w
JikgPSBkZWxldGU7Ci0gICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKLQotICAgIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+JiBpbml0aWFsaXphdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbGl6
YXRpb247IH0KLSAgICBFeHByZXNzaW9uKiBjb25kaXRpb24oKSB7IHJldHVybiBtX2NvbmRpdGlv
bi5nZXQoKTsgfQotICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJuIG1faW5jcmVt
ZW50LmdldCgpOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0K
LXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9pbml0aWFsaXphdGlvbjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb247Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+IG1faW5jcmVtZW50OwotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+
IG1fYm9keTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKEZvckxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKEZvckxvb3AsIGlzRm9yTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRiYzViNjc0ZjM0ZjkxNTRiMGNhZTJlYTQyNjVhNjIyY2E3MzI5Y2QuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTnVtVGhyZWFkc0Z1
bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIEZ1bmN0aW9uQXR0cmlidXRlID0gVmFyaWFudDxO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+OwotdXNpbmcgQXR0cmlidXRlQmxvY2sgPSBWZWN0
b3I8RnVuY3Rpb25BdHRyaWJ1dGU+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRl
Y2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYjI0ZDJlMjhmNjFj
ZmI1YWRjOTQyZTI2ODhlMzRhNzIzNzI5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRy
eVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNs
dWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMUGFyc2luZ01vZGUuaCIKLSNp
bmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1dGVCbG9jaywg
c3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFJlZjxVbm5hbWVk
VHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiBwYXJhbWV0
ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgaXNPcGVyYXRv
ciwgUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9j
YXRpb24pCi0gICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2Nr
KSkKLSAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQotICAgICAgICAs
IG1faXNPcGVyYXRvcihpc09wZXJhdG9yKQotICAgICAgICAsIG1fcGFyc2luZ01vZGUocGFyc2lu
Z01vZGUpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgICAgICwgbV9uYW1l
KFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVy
cykpCi0gICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+RnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAg
IEZ1bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRl
OwotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgQXR0cmlidXRlQmxvY2smIGF0dHJp
YnV0ZUJsb2NrKCkgeyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQotICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZW50cnlQb2ludFR5cGU7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
Ci0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgYm9vbCBpc0Nhc3Qo
KSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9Ci0gICAgY29uc3Qg
VmFyaWFibGVEZWNsYXJhdGlvbnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnM7IH0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIHsgcmV0dXJu
IG1fcGFyYW1ldGVyczsgfQotICAgIFNlbWFudGljKiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2Vt
YW50aWMuZ2V0KCk7IH0KLSAgICBib29sIGlzT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2lz
T3BlcmF0b3I7IH0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLSAgICBQYXJzaW5nTW9kZSBwYXJzaW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2luZ01vZGU7IH0KLQotICAgIE5hbWVTcGFjZSBuYW1l
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQotICAgIHZvaWQgc2V0TmFtZVNw
YWNlKE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9uYW1lU3BhY2UgPSBuYW1lU3BhY2U7IH0KLQot
cHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgQXR0cmlidXRl
QmxvY2sgbV9hdHRyaWJ1dGVCbG9jazsKLSAgICBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiBtX2VudHJ5UG9pbnRUeXBlOwotICAgIGJvb2wgbV9pc09wZXJhdG9yOwotICAgIFBhcnNpbmdN
b2RlIG1fcGFyc2luZ01vZGU7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgU3Ry
aW5nIG1fbmFtZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRlcnM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotICAgIE5hbWVTcGFjZSBtX25h
bWVTcGFjZSB7IE5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9GVU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlw
ZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0g
XAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAyNDhmYjVhN2E0NTRlZTUyOTcyN2JiZjI3ZGE4MTkyYWQ3NWRl
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmxvY2su
aCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb24gOiBwdWJsaWMg
RnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJiBmdW5jdGlv
bkRlY2xhcmF0aW9uLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IEZ1bmN0aW9uRGVjbGFyYXRp
b24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICAgICAgLCBtX2Jsb2NrKFdURk1v
dmUoYmxvY2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlZmluaXRp
b24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgRnVuY3Rpb25E
ZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVm
aW5pdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzRnVuY3Rpb25EZWZpbml0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgQmxvY2smIGJsb2NrKCkgeyBy
ZXR1cm4gbV9ibG9jazsgfQotCi1wcml2YXRlOgotICAgIEJsb2NrIG1fYmxvY2s7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRlVOQ1RJT05fREVDTEFSQVRJT04oRnVuY3Rpb25EZWZpbml0aW9uLCBpc0Z1bmN0aW9uRGVm
aW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkyZTFmYjYwODZkOWYwYjZlMjYxYTNmMWUzM2FlNzJhMWFlNGNhNmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxl
bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVjdEZpZWxkKQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlKQotICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1fc3RydWN0
RmllbGQoKnN0cnVjdEZpZWxkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdEZpZWxkKTsK
LSAgICB9Ci0KLSAgICB+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAg
Ci0gICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0RmllbGQoKSB7IHJldHVybiBtX3N0cnVjdEZp
ZWxkOyB9Ci0KLSAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gbV9iYXNlLmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKLSAgICBTdHJ1
Y3R1cmVFbGVtZW50JiBtX3N0cnVjdEZpZWxkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoR2xvYmFsVmFyaWFibGVSZWZlcmVuY2Up
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihHbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSwgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk5ZDZkYTNjZDE2MDFhOGI5YTE1ZDNhYWIxNWZiZjliZmNjODJkMDMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBJZlN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIElmU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0
ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBlbHNlQm9keSkKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQotICAgICAgICAsIG1fY29uZGl0
aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9k
eSkpCi0gICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKLSAgICB7Ci0gICAg
fQotCi0gICAgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgSWZTdGF0ZW1lbnQoY29u
c3QgSWZTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBJZlN0YXRlbWVudChJZlN0YXRlbWVudCYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1f
Y29uZGl0aW9uYWw7IH0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0K
LSAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwotICAg
IFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVt
ZW50PiBtX2Vsc2VCb2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoSWZTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lmU3RhdGVtZW50KCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTc0MTVlMzFiNDM5ZjEwNzllMTg0YWRhN2Uy
YjcwNDExZmMzNWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhw
cmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBJbmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAg
ICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkluZGV4LCBXVEZN
b3ZlKGJhc2UpKQotICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCi0gICAgewotI2lm
IENQVShBRERSRVNTMzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZGRpbmcpOwotI2VuZGlm
Ci0gICAgfQotCi0gICAgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIEluZGV4
RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBJbmRleEV4
cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24m
IGluZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mIGluZGV4UmVmZXJlbmNlKCkgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiB0YWtlSW5kZXgoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5kZXgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1faW5kZXg7Ci0jaWYgQ1BV
KEFERFJFU1MzMikKLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgZm9yIHJlcGxhY2VXaXRo
IGludG8gYSBiaWdnZXIgdHlwZS4KLSAgICBjaGFyIG1fcGFkZGluZ1s0XTsKLSNlbmRpZgotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
SW5kZXhFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJ
T04oSW5kZXhFeHByZXNzaW9uLCBpc0luZGV4RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTcyN2E4ZjliODBhOTk5MjI3ZGFlNDExZTFlMzg4YzBh
NzI3MTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFs
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotaW50NjRfdCBJ
bnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdAotewotICAgIGF1dG8m
IHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihtX3R5cGUucmVzb2x2ZWRU
eXBlKCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgcmV0
dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKCkobV92YWx1
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NzA5ZmVkZGQxM2RlYTUxNDg1OThmMjlhMDU3MDRiOTkyYmYyZGVi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEludGVnZXJMaXRlcmFsIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQotICAgICAgICAs
IG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdl
ckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0
ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbCYg
b3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxp
dGVyYWwmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRl
Z2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBpbnQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9u
KCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNsb25lKCk7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNvbHZlZFR5cGUo
KSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5u
YW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0KTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBpbnQ2NF90IHZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlIG1f
dHlwZTsKLSAgICBpbnQgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxp
dGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZTY2NzUwYjY0M2ViNjYyMDZhMzdlMjk5MDFhNDY3YzJiYmRlN2RlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLUludGVnZXJMaXRlcmFsVHlwZTo6
SW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAg
IDogUmVzb2x2YWJsZVR5cGUoS2luZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgLCBtX3ZhbHVlKHZh
bHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlv
biwgImludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQotewotfQotCi1ib29sIEludGVnZXJMaXRl
cmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAotewotICAgIGlmICgh
aXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5h
bWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9u
LmNhblJlcHJlc2VudEludGVnZXIoKShtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZl
cnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBp
ZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLUludGVnZXJMaXRlcmFsVHlwZSBJbnRlZ2VyTGl0ZXJh
bFR5cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgcmVzdWx0KG1f
cHJlZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgIGlmIChhdXRvKiB0
eXBlID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJlc29sdmUoY29uc3Rf
Y2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQubV9wcmVmZXJyZWRU
eXBlID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NGFlZGY0NzZiMzJiN2ZiZjc5ZThjMGQ3ZGM0N2M4MzE5MWI2MGFk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZh
YmxlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBUeXBlUmVmZXJlbmNlOwotCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJs
aWMgUmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGludCB2YWx1ZSk7Ci0KLSAg
ICB+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWxU
eXBlKGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRl
cmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxp
dGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7
Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBlJiYp
ID0gZGVmYXVsdDsKLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
LQotICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJl
ZFR5cGU7IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAg
dW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAg
IEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGludCBt
X3ZhbHVlOwotICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxh
ciBkZXBlbmRlbmN5IGJldHdlZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJh
bFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVz
c2lvbgotICAgIFJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbnRlZ2Vy
TGl0ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShJbnRlZ2Vy
TGl0ZXJhbFR5cGUsIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxZTkzMTEwZmUyYjUyYmU4YzZjYTFmMWM0Njk0YjQ0Nzc3
ODBhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lv
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBBbmQsCi0gICAgICAgIE9yCi0g
ICAgfTsKLQotICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVHlw
ZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpMb2dpY2Fs
KQotICAgICAgICAsIG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQp
KQotICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewotICAgIH0KLQotICAg
IH5Mb2dpY2FsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIExvZ2ljYWxFeHByZXNzaW9u
KGNvbnN0IExvZ2ljYWxFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTG9naWNhbEV4cHJlc3Np
b24oTG9naWNhbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4g
bV9sZWZ0OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9Ci0K
LXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1f
bGVmdDsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9yaWdodDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxFeHBy
ZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNh
bEV4cHJlc3Npb24sIGlzTG9naWNhbEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2VkYzM2MzUyYmVhYjA0OGEzOGU5OGU3M2RjNTY5
MTc1YmZjNmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RF
eHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OkxvZ2ljYWxOb3QpCi0gICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3Bl
cmFuZCkpCi0gICAgewotICAgIH0KLQotICAgIH5Mb2dpY2FsTm90RXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKLQotICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RFeHByZXNz
aW9uJikgPSBkZWxldGU7Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5vdEV4cHJl
c3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgb3BlcmFuZCgpIHsgcmV0dXJu
IG1fb3BlcmFuZDsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX29w
ZXJhbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZB
VUxUX0RFTEVURShMb2dpY2FsTm90RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9uLCBpc0xvZ2ljYWxOb3RFeHBy
ZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNjNWQ2NGNiOTU3MzE2MDIwOTU3MTdiMmJhZmM2NGJlN2UzNjA5MjQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xBZGRyZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2Nh
cGVNb2RlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VBcnJheVJl
ZmVyZW5jZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAg
ICAgICwgbV9hZGRyZXNzRXNjYXBlTW9kZShhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lv
biYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLQotICAgIGJvb2wgbWlnaHRF
c2NhcGUoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2Nh
cGVNb2RlOjpFc2NhcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+
IG1fbGVmdFZhbHVlOwotICAgIEFkZHJlc3NFc2NhcGVNb2RlIG1fYWRkcmVzc0VzY2FwZU1vZGU7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYTI3YzIxYzUwNWEwMzY4M2NiZTk1NjA0NjIzMjk1MWViMTEy
ZmZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
ZGRyZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFrZVBvaW50ZXJF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
bGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlUG9pbnRlcikKLSAgICAgICAgLCBtX2xl
ZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9hZGRyZXNzRXNjYXBlTW9k
ZShhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfk1ha2VQb2ludGVyRXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBN
YWtlUG9pbnRlckV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlUG9pbnRlckV4cHJlc3Np
b24oTWFrZVBvaW50ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24m
IGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0KLSAgICBib29sIG1pZ2h0RXNj
YXBlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzRXNjYXBlTW9kZSA9PSBBZGRyZXNzRXNjYXBl
TW9kZTo6RXNjYXBlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBt
X2xlZnRWYWx1ZTsKLSAgICBBZGRyZXNzRXNjYXBlTW9kZSBtX2FkZHJlc3NFc2NhcGVNb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhwcmVzc2lv
bigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3BhY2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0NmZkZmEyZDI1ZDNhODdmNTJhZWQyODFi
ZWU2MGQxMjlkNDNiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3Bh
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLy8gRGlmZmVyZW50
IHNoYWRlciBtb2R1bGVzIG9wZXJhdGUgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCi0vLyBUaGlz
IG1lYW5zIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUg
c2lnbmF0dXJlcywgYXMgbG9uZyBhcyB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgbW9kdWxlcy4KLWVu
dW0gY2xhc3MgTmFtZVNwYWNlIDogdWludDhfdCB7Ci0gICAgU3RhbmRhcmRMaWJyYXJ5ID0gMCwK
LSAgICBOYW1lU3BhY2UxID0gMSwKLSAgICBOYW1lU3BhY2UyID0gMgotfTsKLQotY29uc3RleHBy
IHVuc2lnbmVkIG5hbWVTcGFjZUNvdW50ID0gMzsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJiMTFmOGJhMzA2Njg4OTQ2Y2I3ZjJmMTk3YjU5NmI1Y2IzOTZjMjQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQot
cHVibGljOgotICAgIE5hbWVkVHlwZShLaW5kIGtpbmQsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
U3RyaW5nJiYgbmFtZSkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwgbV9jb2RlTG9j
YXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgewot
ICAgIH0KLQotICAgIE5hbWVkVHlwZShjb25zdCBOYW1lZFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBO
YW1lZFR5cGUoTmFtZWRUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIENvZGVMb2NhdGlvbiBjb2Rl
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBk
YXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9
IGxvY2F0aW9uOyB9Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQot
ICAgIE5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQot
ICAgIHZvaWQgc2V0TmFtZVNwYWNlKE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9uYW1lU3BhY2Ug
PSBuYW1lU3BhY2U7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBU
eXBlJiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2RlTG9jYXRpb24g
bV9jb2RlTG9jYXRpb247Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBOYW1lU3BhY2UgbV9uYW1l
U3BhY2UgeyBOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTmFtZWRUeXBlKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmFtZWRUeXBlLCBpc05hbWVkVHlwZSgp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwZGQ5YWFmNWJkZTJjYTdhOGUzOWM1NWNjNTg0ODBiM2NhNDI4YjdlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgL2Rl
di9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICAg
ICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNsYXJhdGlvbikpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9
IGRlZmF1bHQ7Ci0KLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBp
c05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04oTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiwgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRhMTYyYjc4MTdkNDcz
YTgyZGQ5NzkzYTBiZTkxMjMwYTM0ZWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1l
ZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNM
VHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAg
ICA6IE5hbWVkVHlwZShLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGxvY2F0aW9uLCBXVEZN
b3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVu
dHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZh
dWx0OwotCi0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYpID0gZGVsZXRlOwotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVj
bGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50
cygpIHsgcmV0dXJuIG1fdHlwZUFyZ3VtZW50czsgfQotCi0gICAgYm9vbCBpc0ludCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJbnQ7IH0KLSAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9pc051bWJlcjsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNG
bG9hdGluZzsgfQotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2lzQXRvbWlj
OyB9Ci0gICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNWZWN0b3I7IH0KLSAg
ICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9pc01hdHJpeDsgfQotICAgIGJvb2wg
aXNPcGFxdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc09wYXF1ZVR5cGU7IH0KLSAgICBib29s
IGlzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlOyB9Ci0gICAgYm9vbCBpc1Rl
eHR1cmVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlQXJyYXk7IH0KLSAgICBib29s
IGlzRGVwdGhUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoVGV4dHVyZTsgfQotICAg
IGJvb2wgaXNXcml0YWJsZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzV3JpdGFibGVUZXh0
dXJlOyB9Ci0gICAgYm9vbCBpc0N1YmVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1YmVU
ZXh0dXJlOyB9Ci0gICAgdWludCB0ZXh0dXJlRGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0dXJlRGltZW5zaW9uOyB9Ci0gICAgYm9vbCBpc1NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTaWduZWQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4mIGNhblJlcHJl
c2VudEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEludGVnZXI7IH0KLSAg
ICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYgY2FuUmVwcmVzZW50VW5zaWdu
ZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7
IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYgY2FuUmVwcmVzZW50Rmxv
YXQoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEZsb2F0OyB9Ci0gICAgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiYgc3VjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4g
bV9zdWNjZXNzb3I7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50KT4mIGZv
cm1hdFZhbHVlRnJvbUludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZhbHVlRnJvbUlu
dGVnZXI7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiYgZm9y
bWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXRWYWx1
ZUZyb21VbnNpZ25lZEludGVnZXI7IH0KLSAgICB2b2lkIGl0ZXJhdGVBbGxWYWx1ZXMoY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsgbV9pdGVyYXRlQWxsVmFs
dWVzKGNhbGxiYWNrKTsgfQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtYXRyaXhEaW1lbnNpb24o
dW5zaWduZWQgdHlwZUFyZ3VtZW50SW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRy
aXgoKSk7Ci0gICAgICAgIEFTU0VSVCh0eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5cGVBcmd1bWVu
dHMoKVt0eXBlQXJndW1lbnRJbmRleF0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICB9
Ci1wdWJsaWM6Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRyaXhSb3dzKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMik7Ci0gICAgfQotICAgIHVuc2lnbmVkIG51bWJl
ck9mTWF0cml4Q29sdW1ucygpCi0gICAgewotICAgICAgICByZXR1cm4gbWF0cml4RGltZW5zaW9u
KDEpOwotICAgIH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHZlY3RvclR5cGVBcmd1bWVudCgpCi0g
ICAgewotICAgICAgICBBU1NFUlQoaXNWZWN0b3IoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Omdl
dDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4odHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCB2ZWN0b3JTaXplKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZlY3Rv
cigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPih0
eXBlQXJndW1lbnRzKClbMV0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICB9Ci0KLSAg
ICBUeXBlUmVmZXJlbmNlJiBtYXRyaXhUeXBlQXJndW1lbnQoKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzTWF0cml4KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJl
ZmVyZW5jZT4+KHR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRJc0lu
dCgpIHsgbV9pc0ludCA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzTnVtYmVyKCkgeyBtX2lzTnVt
YmVyID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNGbG9hdGluZygpIHsgbV9pc0Zsb2F0aW5nID0g
dHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNBdG9taWMoKSB7IG1faXNBdG9taWMgPSB0cnVlOyB9Ci0g
ICAgdm9pZCBzZXRJc1ZlY3RvcigpIHsgbV9pc1ZlY3RvciA9IHRydWU7IH0KLSAgICB2b2lkIHNl
dElzTWF0cml4KCkgeyBtX2lzTWF0cml4ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNPcGFxdWVU
eXBlKCkgeyBtX2lzT3BhcXVlVHlwZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzVGV4dHVyZSgp
IHsgbV9pc1RleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1RleHR1cmVBcnJheSgpIHsg
bV9pc1RleHR1cmVBcnJheSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzRGVwdGhUZXh0dXJlKCkg
eyBtX2lzRGVwdGhUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNXcml0YWJsZVRleHR1
cmUoKSB7IG1faXNXcml0YWJsZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0N1YmVU
ZXh0dXJlKCkgeyBtX2lzQ3ViZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRUZXh0dXJl
RGltZW5zaW9uKHVpbnQgdGV4dHVyZURpbWVuc2lvbikgeyBtX3RleHR1cmVEaW1lbnNpb24gPSB0
ZXh0dXJlRGltZW5zaW9uOyB9Ci0gICAgdm9pZCBzZXRJc1NpZ25lZCgpIHsgbV9pc1NpZ25lZCA9
IHRydWU7IH0KLSAgICB2b2lkIHNldENhblJlcHJlc2VudEludGVnZXIoc3RkOjpmdW5jdGlvbjxi
b29sKGludCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50SW50ZWdlciA9IFdURk1v
dmUoY2FuUmVwcmVzZW50KTsgfQotICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRl
Z2VyKHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2Fu
UmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNlbnQpOyB9Ci0gICAg
dm9pZCBzZXRDYW5SZXByZXNlbnRGbG9hdChzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYmIGNh
blJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEZsb2F0ID0gV1RGTW92ZShjYW5SZXByZXNlbnQp
OyB9Ci0gICAgdm9pZCBzZXRTdWNjZXNzb3Ioc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3Qp
PiYmIHN1Y2Nlc3NvcikgeyBtX3N1Y2Nlc3NvciA9IFdURk1vdmUoc3VjY2Vzc29yKTsgfQotICAg
IHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50
KT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXIgPSBXVEZNb3ZlKGZv
cm1hdFZhbHVlKTsgfQotICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2Vy
KHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3Jt
YXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIgPSBXVEZNb3ZlKGZvcm1hdFZhbHVlKTsgfQotICAg
IHZvaWQgc2V0SXRlcmF0ZUFsbFZhbHVlcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpm
dW5jdGlvbjxib29sKGludDY0X3QpPiYpPiYmIGl0ZXJhdGVBbGxWYWx1ZXMpIHsgbV9pdGVyYXRl
QWxsVmFsdWVzID0gV1RGTW92ZShpdGVyYXRlQWxsVmFsdWVzKTsgfQotCi1wcml2YXRlOgotICAg
IFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChp
bnQpPiBtX2NhblJlcHJlc2VudEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKHVuc2ln
bmVkKT4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxi
b29sKGZsb2F0KT4gbV9jYW5SZXByZXNlbnRGbG9hdDsKLSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0
X3QoaW50NjRfdCk+IG1fc3VjY2Vzc29yOwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQp
PiBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVu
c2lnbmVkKT4gbV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7Ci0gICAgc3RkOjpmdW5j
dGlvbjx2b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4gbV9pdGVyYXRl
QWxsVmFsdWVzOwotICAgIHVpbnQgbV90ZXh0dXJlRGltZW5zaW9uIHsgMCB9OwotICAgIGJvb2wg
bV9pc0ludCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTnVtYmVyIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1faXNGbG9hdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQXRvbWljIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNWZWN0b3IgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc01hdHJpeCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzT3BhcXVlVHlwZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzVGV4dHVyZUFycmF5IHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNEZXB0aFRleHR1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1dy
aXRhYmxlVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ3ViZVRleHR1cmUgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9pc1NpZ25lZCB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShOYXRp
dmVUeXBlRGVjbGFyYXRpb24sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQ5OThi
MTQ0YzFjNGIxNjRiNGVmMmM5YzkwYWEyY2U0ZDA4NTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUgOiBwdWJsaWMgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCB1bnNpZ25lZCBkZXB0aCkKLSAgICAgICAgOiBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUo
bG9jYXRpb24pCi0gICAgICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAgICAgLCBtX2hlaWdodCho
ZWlnaHQpCi0gICAgICAgICwgbV9kZXB0aChkZXB0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OwotCi0gICAgTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKGNvbnN0IE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZSYpID0gZGVsZXRlOwotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB1bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVwdGg7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3dpZHRoOwotICAgIHVuc2lnbmVk
IG1faGVpZ2h0OwotICAgIHVuc2lnbmVkIG1fZGVwdGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVy
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9p
bnRlclR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVmYmRiNmFiNGE2ZmI4
M2JlNWQzNGMyZDg4OGMwMTUwOThlMjVkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xQb2ludGVyVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2ludGVy
VHlwZSk7Ci0gICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7Ci0KLSAgICBQb2ludGVyVHlw
ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxV
bm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVz
c1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKLSAgICB7Ci0gICAg
fQotCi1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQb2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBl
PiBlbGVtZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5l
dyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBl
KSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIH5Qb2ludGVyVHlwZSgp
ID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMtPkJhc2U6Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxI
YXNoKCJwb2ludGVyIik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaW50
ZXJUeXBlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2Uo
KSA9PSBvdGhlci5hZGRyZXNzU3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90aGVyLmVsZW1l
bnRUeXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJpbmcoKSwgJyonKTsK
LSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZB
VUxUX0RFTEVURShQb2ludGVyVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9U
WVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWEyM2QwYTM1NmNiNzM0OGI0MzYwM2U3
NzViYjM4NzJjNjc3NzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXByb3RlY3RlZDoK
LSAgICB+UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0g
ICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBr
aW5kLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIGtpbmQpCi0gICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCi0gICAgewot
ICAgIH0KLQotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGJh
c2UoKSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mIGJhc2VS
ZWZlcmVuY2UoKSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
dGFrZUJhc2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fYmFzZSk7IH0KLQotcHJpdmF0ZToKLSAgICBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uLCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDQ4NzdkZjIyZWQyMTZkNmUwZjAzZjQ3ZjRjZjFmNDg4MzdiOWM4
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIFF1YWxpZmllciA6
IHVpbnQ4X3QgewotICAgIE5vaW50ZXJwb2xhdGlvbiwKLSAgICBOb3BlcnNwZWN0aXZlLAotICAg
IFVuaWZvcm0sCi0gICAgQ2VudHJvaWQsCi0gICAgU2FtcGxlCi19OwotCi11c2luZyBRdWFsaWZp
ZXJzID0gVmVjdG9yPFF1YWxpZmllcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTEwM2VjOGQxODBjOGI1OWNkMWRiMTRjZjVkNTY3YWIwNTE2OWU1Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLyoKLSAqICAxLiBF
dmFsdWF0ZSBtX2xlZnRWYWx1ZQotICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFs
dWUKLSAqICAzLiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgotICogIDQuIEFzc2lnbiB0
aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xl
ZnRWYWx1ZQotICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgotICogIDcuIFJldHVy
biB0aGUgcmVzdWx0Ci0gKi8KLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6UmVhZE1vZGlmeVdyaXRlKQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdU
Rk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX29sZFZhbHVlKG1ha2VVbmlxdWVSZWY8VmFy
aWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5n
KCksIG51bGxwdHIsIG51bGxwdHIpKQotICAgICAgICAsIG1fbmV3VmFsdWUobWFrZVVuaXF1ZVJl
ZjxWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBT
dHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCi0gICAgewotICAgIH0KLQotICAgIFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4gbGVmdFZhbHVlLCBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gb2xkVmFsdWUs
IFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYWx1ZSkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9kaWZ5V3JpdGUpCi0gICAgICAgICwgbV9sZWZ0
VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUoV1RGTW92ZShv
bGRWYWx1ZSkpCi0gICAgICAgICwgbV9uZXdWYWx1ZShXVEZNb3ZlKG5ld1ZhbHVlKSkKLSAgICB7
Ci0gICAgfQotCi0KLSAgICB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
LQotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbiYpID0gZGVsZXRlOwotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHNldE5ld1ZhbHVl
RXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJlc3Npb24pCi0g
ICAgewotICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3VmFsdWVFeHBy
ZXNzaW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24oVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIG1fcmVzdWx0
RXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgVW5p
cXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVS
ZWZlcmVuY2U6OndyYXAobV9vbGRWYWx1ZSkpOwotICAgIH0KLQotICAgIFVuaXF1ZVJlZjxWYXJp
YWJsZVJlZmVyZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3
cmFwKG1fbmV3VmFsdWUpKTsKLSAgICB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7
IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgbGVmdFZh
bHVlUmVmZXJlbmNlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLSAgICBWYXJpYWJsZURlY2xh
cmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KLSAgICBWYXJpYWJsZURl
Y2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAgICBFeHByZXNz
aW9uJiBuZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbmV3VmFs
dWVFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAg
ICB9Ci0gICAgRXhwcmVzc2lvbiYgcmVzdWx0RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9yZXN1bHRFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX3Jlc3VsdEV4cHJl
c3Npb247Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlTGVmdFZhbHVlKCkg
eyByZXR1cm4gV1RGTW92ZShtX2xlZnRWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8VmFyaWFibGVE
ZWNsYXJhdGlvbj4gdGFrZU9sZFZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX29sZFZhbHVlKTsg
fQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0YWtlTmV3VmFsdWUoKSB7IHJl
dHVybiBXVEZNb3ZlKG1fbmV3VmFsdWUpOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRh
a2VOZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBXVEZN
b3ZlKG1fbmV3VmFsdWVFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX25ld1ZhbHVlRXhw
cmVzc2lvbi5yZXNldCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4gdGFrZVJlc3VsdEV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbi52YWx1ZSgpKTsKLSAgICAg
ICAgbV9yZXN1bHRFeHByZXNzaW9uLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnRWYWx1ZTsK
LSAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9vbGRWYWx1ZTsKLSAgICBVbmlx
dWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9uZXdWYWx1ZTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247Ci0gICAgc3RkOjpv
cHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lvbjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhY2QzMTVjMWMy
MTQzNTc5ZWE1ZDBkMmUwMjViNWVjNGVmMGU2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVubmFt
ZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZWZlcmVuY2VUeXBlKTsKLQotcHJvdGVjdGVkOgotICAgIH5SZWZlcmVuY2VUeXBl
KCkgPSBkZWZhdWx0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVmZXJlbmNlVHlwZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4g
ZWxlbWVudFR5cGUsIEtpbmQga2luZCkKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwg
a2luZCkKLSAgICAgICAgLCBtX2FkZHJlc3NTcGFjZShhZGRyZXNzU3BhY2UpCi0gICAgICAgICwg
bV9lbGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKLSAgICB7Ci0gICAgfQotCi0KLXB1
YmxpYzoKLSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9h
ZGRyZXNzU3BhY2U7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBl
KCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gfm1fZWxlbWVudFR5cGUtPmhhc2goKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQWRkcmVzc1NwYWNlIG1fYWRkcmVzc1NwYWNlOwotICAgIFJlZjxVbm5h
bWVkVHlwZT4gbV9lbGVtZW50VHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJlZmVyZW5jZVR5cGUpCi0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfVFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTE0ZmJjYzhlN2JkMDFmM2RmMDUxM2M0MDNl
ZGJmY2JjYTZmN2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VX
aXRoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBOZXcsIHR5cGVuYW1lIE9sZCwgdHlwZW5hbWUgLi4uQXJncz4KLUFMV0FZU19JTkxJ
TkUgTmV3KiByZXBsYWNlV2l0aChPbGQmIG9sZCwgQXJncyYmLi4uIGFyZ3MpCi17Ci0gICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoTmV3KSA8PSBzaXplb2YoT2xkKSwgIlRoaXMgaXMgbmVlZGVkIGZv
ciB0aGUgcGxhY2VtZW50IG5ldyBiZWxvdyB0byBub3Qgb3ZlcndyaXRlIHVub3duZWQgbWVtb3J5
LiIpOwotICAgIHZvaWQqIGxvY2F0aW9uID0gJm9sZDsKLSAgICBPbGQ6OmRlc3RydWN0KG9sZCk7
Ci0gICAgcmV0dXJuIG5ldyAobG9jYXRpb24pIE5ldyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6V0hMU0w6OkFTVAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMmExZDdlY2NlZTEyNDE4ODU1ZGU1MTQ3NGZl
ZTlhMjRiYjYxNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJs
ZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
VHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb2x2YWJsZVR5
cGUgOiBwdWJsaWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3Rl
Y3RlZDoKLSAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBS
ZXNvbHZhYmxlVHlwZShLaW5kIGtpbmQpCi0gICAgICAgIDogVHlwZShraW5kKQotICAgIHsgfQot
Ci0KLSAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwot
ICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFJl
c29sdmFibGVUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsK
LSAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVs
dDsKLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWdu
ZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIGNvbnN0
IFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRUeXBlID8gJiptX3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KLSAgICBjb25zdCBVbm5hbWVk
VHlwZSYgcmVzb2x2ZWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29s
dmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAg
VW5uYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUg
PyAmKm1fcmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQotICAgIFVubmFtZWRUeXBlJiByZXNvbHZl
ZFR5cGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAg
cmV0dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc29sdmUoUmVmPFVu
bmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAgICAgICAgbV9yZXNvbHZlZFR5cGUgPSBXVEZNb3Zl
KHR5cGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fcmVz
b2x2ZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoUmVzb2x2YWJsZVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfVFlQRShSZXNvbHZhYmxlVHlwZSwgaXNSZXNvbHZhYmxlVHlwZSgpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ2ZTdhMmJmZjhiMTRmZGI2MDhhYTQ0
N2RhYzhiYjdmOGM3MjExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNv
dXJjZVNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJl
c3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xJ
bmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hM
U0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVk
VHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpIGNvbnN0Ci17
Ci0gICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIE1vZGU6OlVub3JkZXJlZEFjY2Vzc1Zp
ZXc6Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAg
ICAgICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1bm5h
bWVkVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2Uo
KSA9PSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50IHx8IHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNl
KCkgPT0gQWRkcmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzPFR5
cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgdHlwZVJlZmVy
ZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAg
IGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBl
KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLmlzVGV4dHVyZSgpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlRleHR1cmU6Ci0gICAgICAg
IGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmFkZHJlc3NTcGFjZSgpID09IEFk
ZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoaXM8VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0g
ZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgaWYgKGlz
PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlw
ZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6QnVmZmVyOgotICAgICAgICBpZiAoaXM8
UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3Bh
Y2U6OkNvbnN0YW50OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBNb2RlOjpTYW1w
bGVyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5zYW1w
bGVyVHlwZSgpKTsKLSAgICB9Ci19Ci0KLWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRh
YmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAotewotICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjhkNWVkMzdlOGFiOTdmZjdhNTkwMmQ3ZjFlYWViZmE2NTVlYWMxMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFJlc291cmNlU2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIE1vZGUg
OiB1aW50OF90IHsKLSAgICAgICAgVW5vcmRlcmVkQWNjZXNzVmlldywKLSAgICAgICAgVGV4dHVy
ZSwKLSAgICAgICAgQnVmZmVyLAotICAgICAgICBTYW1wbGVyCi0gICAgfTsKLQotICAgIFJlc291
cmNlU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBNb2RlIG1vZGUsIHVuc2lnbmVkIGlu
ZGV4LCB1bnNpZ25lZCBzcGFjZSkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0g
ICAgICAgICwgbV9tb2RlKG1vZGUpCi0gICAgICAgICwgbV9pbmRleChpbmRleCkKLSAgICAgICAg
LCBtX3NwYWNlKHNwYWNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5SZXNvdXJjZVNl
bWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAgUmVzb3VyY2VTZW1hbnRpYyhjb25zdCBSZXNvdXJj
ZVNlbWFudGljJikgPSBkZWxldGU7Ci0gICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNvdXJjZVNlbWFu
dGljJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZ1ZpZXcgdG9TdHJpbmcoKQotICAgIHsKLSAg
ICAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICAgICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nl
c3NWaWV3OgotICAgICAgICAgICAgcmV0dXJuICJVbm9yZGVyZWRBY2Nlc3NWaWV3IjsKLSAgICAg
ICAgY2FzZSBNb2RlOjpUZXh0dXJlOgotICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlIjsKLSAg
ICAgICAgY2FzZSBNb2RlOjpCdWZmZXI6Ci0gICAgICAgICAgICByZXR1cm4gIkJ1ZmZlciI7Ci0g
ICAgICAgIGNhc2UgTW9kZTo6U2FtcGxlcjoKLSAgICAgICAgICAgIHJldHVybiAiU2FtcGxlciI7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAg
ICB1bnNpZ25lZCBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX21vZGUgPT0gb3RoZXIubV9tb2RlICYmIG1faW5kZXggPT0gb3RoZXIu
bV9pbmRleCAmJiBtX3NwYWNlID09IG90aGVyLm1fc3BhY2U7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2Nl
cHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hh
ZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBj
b25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBNb2RlIG1fbW9kZTsKLSAgICB1bnNpZ25l
ZCBtX2luZGV4OwotICAgIHVuc2lnbmVkIG1fc3BhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiNTZiYzgwZjgwNTA5Yjg4ZjE0YzZi
ZWE3OWY5Mjg2ZWRhNDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVy
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFJldHVybiBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFJldHVybihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHZhbHVlKQotICAgICAgICA6
IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQotICAgICAgICAsIG1fdmFsdWUoV1RG
TW92ZSh2YWx1ZSkpCi0gICAgewotICAgIH0KLQotICAgIH5SZXR1cm4oKSA9IGRlZmF1bHQ7Ci0K
LSAgICBSZXR1cm4oY29uc3QgUmV0dXJuJikgPSBkZWxldGU7Ci0gICAgUmV0dXJuKFJldHVybiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWUu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92
YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKFJldHVybikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1F
TlQoUmV0dXJuLCBpc1JldHVybigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhN2JhNjJiZTBk
NTdmYjRhYzE5N2Q3MmQ0MDQwODZkNTI1NzJlNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNl
bWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
aCIKLSNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIFNlbWFudGljID0gVmFyaWFudDxCdWlsdEluU2VtYW50
aWMsIFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgU3Rh
Z2VJbk91dFNlbWFudGljPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE0ZjAxNTM5NGUxZjY2ZWE2NzQ1NzQxZDcwNzk5ZDZhMmQ1YmVhNGQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVU
eXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50cmluc2ljcyYpIGNv
bnN0Ci17Ci0gICAgaWYgKCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJl
ZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9u
Pih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2Uu
cmVzb2x2ZWRUeXBlKCkpLmlzTnVtYmVyKCk7Ci19Ci0KLWJvb2wgU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0
ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9u
OjpJbnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYz
OWVjMTk2Zjg5OTVjMjA5NWVkMWUyYzA0Zjg4ZmU4OGQxYzhmMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMgOiBwdWJs
aWMgQmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB+U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0g
ICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKGNvbnN0IFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYyhTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmJikgPSBkZWZhdWx0OwotCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0YWJsZVR5
cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1E
aXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3Zl
cnJpZGU7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91
dFNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkYzY0OTY1YjMy
MzE2NTUwOWVjNjFjY2UyZGI0YTk2ODBlYmQzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0
YWdlSW5PdXRTZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVu
Y2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotYm9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUo
Y29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QK
LXsKLSAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICghaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZl
cmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICBhdXRvJiByZXNvbHZlZFR5cGUgPSB0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpOwotICAgIGlmIChpczxFbnVtZXJhdGlvbkRlZmluaXRpb24+KHJl
c29sdmVkVHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LmlzVmVjdG9yKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTWF0cml4KCk7
Ci19Ci0KLWJvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNo
ICgqZW50cnlQb2ludFR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50Ogot
ICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0Owot
ICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTIzY2FhNGQ3ZTIxMmY2MmEwYzUzNmE3ZTNh
YzlmNGExMzc5NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91
dFNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3RhZ2VJbk91dFNlbWFudGlj
IDogcHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgU3RhZ2VJbk91dFNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5z
aWduZWQgaW5kZXgpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgICAgICAs
IG1faW5kZXgoaW5kZXgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflN0YWdlSW5PdXRT
ZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhjb25zdCBTdGFn
ZUluT3V0U2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBTdGFnZUluT3V0U2VtYW50aWMoU3RhZ2VJ
bk91dFNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0YWdlSW5P
dXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA9
PSBvdGhlci5tX2luZGV4OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdGFn
ZUluT3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBV
bm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29s
IGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQot
cHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1l
bnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhkY2ZkNzYzZmExY2U4OGNjZTI0
MDgwMDU3NjE3OGI1NzI1NjYwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIGVu
dW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgewotICAgICAgICBCbG9jaywKLSAgICAgICAgQnJlYWss
Ci0gICAgICAgIENvbnRpbnVlLAotICAgICAgICBEb1doaWxlTG9vcCwKLSAgICAgICAgRWZmZWN0
ZnVsRXhwcmVzc2lvbiwKLSAgICAgICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZvckxvb3AsCi0g
ICAgICAgIElmLAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIFN0YXRlbWVudExpc3QsCi0gICAg
ICAgIFN3aXRjaENhc2UsCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgVmFyaWFibGVEZWNsYXJh
dGlvbnMsCi0gICAgICAgIFdoaWxlTG9vcCwKLSAgICB9OwotICAgIFN0YXRlbWVudChDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24o
Y29kZUxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KFN0YXRlbWVudCYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ry
dWN0KFN0YXRlbWVudCYpOwotCi0gICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVudCYpID0gZGVs
ZXRlOwotICAgIFN0YXRlbWVudChTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0gICAgS2luZCBr
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0KLSAgICBib29sIGlzQmxvY2soKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QmxvY2s7IH0KLSAgICBib29sIGlzQnJlYWsoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QnJlYWs7IH0KLSAgICBib29sIGlzQ29udGlu
dWUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29udGludWU7IH0KLSAgICBib29s
IGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RG9XaGlsZUxv
b3A7IH0KLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOyB9Ci0gICAgYm9vbCBp
c0ZhbGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZhbGx0aHJvdWdo
OyB9Ci0gICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
Rm9yTG9vcDsgfQotICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpJZjsgfQotICAgIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6UmV0dXJuOyB9Ci0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RhdGVtZW50TGlzdDsgfQotICAgIGJvb2wgaXNTd2l0
Y2hDYXNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3aXRjaENhc2U7IH0KLSAg
ICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlN3aXRjaDsgfQotICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczsgfQotICAg
IGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6V2hpbGVM
b29wOyB9Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi1wcml2YXRlOgot
ICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBLaW5kIG1fa2luZDsKLX07Ci0K
LXVzaW5nIFN0YXRlbWVudHMgPSBWZWN0b3I8VW5pcXVlUmVmPFN0YXRlbWVudD4+OwotCi19Ci0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3RhdGVtZW50KQotCi0jZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkgeyByZXR1cm4gc3RhdGVtZW50
LnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMDI3Mzg3M2YxYTYyMDRlNzk5MWVl
NzE3MzI3MDc0NDE1ZmY1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Ry
dWN0dXJlRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIGZpbmFsIDogcHVibGlj
IE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
U3RydWN0dXJlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUs
IFN0cnVjdHVyZUVsZW1lbnRzJiYgc3RydWN0dXJlRWxlbWVudHMpCi0gICAgICAgIDogTmFtZWRU
eXBlKEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQot
ICAgICAgICAsIG1fc3RydWN0dXJlRWxlbWVudHMoV1RGTW92ZShzdHJ1Y3R1cmVFbGVtZW50cykp
Ci0gICAgewotICAgIH0KLQotICAgIH5TdHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBkZWZhdWx0Owot
Ci0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBk
ZWxldGU7Ci0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0g
ZGVmYXVsdDsKLQotICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50cygpIHsg
cmV0dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50KiBmaW5k
KGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6
OmZpbmRfaWYobV9zdHJ1Y3R1cmVFbGVtZW50cy5iZWdpbigpLCBtX3N0cnVjdHVyZUVsZW1lbnRz
LmVuZCgpLCBbJl0oU3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkgLT4gYm9vbCB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlRWxlbWVudC5uYW1lKCkgPT0gbmFtZTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3N0cnVjdHVyZUVsZW1lbnRzLmVu
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAmKml0ZXJh
dG9yOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJ1Y3R1cmVFbGVtZW50cyBtX3N0cnVjdHVy
ZUVsZW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoU3RydWN0dXJlRGVmaW5pdGlvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9UWVBFKFN0cnVjdHVyZURlZmluaXRpb24sIGlzU3RydWN0dXJlRGVmaW5pdGlv
bigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0
dXJlRWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MyODZjZjJkMDJm
M2M0MGRlZGM2YjhhNGEzZWNkMmZhMGRlY2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xRdWFsaWZp
ZXIuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQgZmluYWwgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0cnVjdHVyZUVsZW1lbnQoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmPFVubmFtZWRUeXBlPiB0eXBl
LCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMpCi0g
ICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9xdWFsaWZpZXJz
KFdURk1vdmUocXVhbGlmaWVycykpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0g
ICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9zZW1hbnRpYyhXVEZN
b3ZlKHNlbWFudGljKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN0cnVjdHVyZUVsZW1lbnQoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVyZUVsZW1lbnQm
KSA9IGRlbGV0ZTsKLSAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1lbnQmJikgPSBk
ZWZhdWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9
Ci0gICAgU2VtYW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBRdWFsaWZp
ZXJzIG1fcXVhbGlmaWVyczsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBTdHJp
bmcgbV9uYW1lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKLX07
Ci0KLXVzaW5nIFN0cnVjdHVyZUVsZW1lbnRzID0gVmVjdG9yPFN0cnVjdHVyZUVsZW1lbnQ+Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRkYWRjN2E1YzllZWE5NTU1YmRhN2M0NjQyMWIzZTg1ZWE0ZWRmMzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxv
Y2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUsIEJsb2Nr
JiYgYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2hDYXNl
KQotICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV9ibG9jayhX
VEZNb3ZlKGJsb2NrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN3aXRjaENhc2UoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0ZTsKLSAgICBT
d2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpvcHRpb25hbDxD
b25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBCbG9j
ayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpvcHRp
b25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Ci0gICAgQmxvY2sgbV9ibG9jazsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KFN3aXRjaENhc2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3
aXRjaENhc2UsIGlzU3dpdGNoQ2FzZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3dpdGNoU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjMyOTMyYTMzOGNhOWNmNGIzNzRhNTYxNGVmYWZmY2YwMTI1NmQ0Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIFN3aXRjaFN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN3aXRjaFN0YXRlbWVudChD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZhbHVlLCBWZWN0
b3I8U3dpdGNoQ2FzZT4mJiBzd2l0Y2hDYXNlcykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24sIEtpbmQ6OlN3aXRjaCkKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAg
ICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCi0gICAgewotICAgIH0K
LQotICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTd2l0Y2hTdGF0ZW1l
bnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3dpdGNoU3RhdGVtZW50
KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiB2YWx1ZSgp
IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBWZWN0b3I8U3dpdGNoQ2FzZT4mIHN3aXRjaENhc2Vz
KCkgeyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiBtX3ZhbHVlOwotICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBtX3N3aXRjaENhc2Vz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9E
RUxFVEUoU3dpdGNoU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NU
QVRFTUVOVChTd2l0Y2hTdGF0ZW1lbnQsIGlzU3dpdGNoU3RhdGVtZW50KCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ4ZTQ0OTIyMDVjNWU3MGNjZjU5MmM4NmRi
NTdiMDMzMTVhMTM4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5
RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFRlcm5hcnlFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBib2R5
RXhwcmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWxzZUV4cHJlc3Npb24pCi0gICAg
ICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VGVybmFyeSkKLSAgICAgICAgLCBtX3By
ZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCi0gICAgICAgICwgbV9ib2R5RXhwcmVzc2lvbihX
VEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKLSAgICAgICAgLCBtX2Vsc2VFeHByZXNzaW9uKFdURk1v
dmUoZWxzZUV4cHJlc3Npb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VGVybmFyeUV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25zdCBUZXJuYXJ5RXhw
cmVzc2lvbiYpID0gZGVsZXRlOwotICAgIFRlcm5hcnlFeHByZXNzaW9uKFRlcm5hcnlFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0dXJu
IG1fcHJlZGljYXRlOyB9Ci0gICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVy
biBtX2JvZHlFeHByZXNzaW9uOyB9Ci0gICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7
IHJldHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IG1fcHJlZGljYXRlOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2JvZHlF
eHByZXNzaW9uOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Vsc2VFeHByZXNzaW9uOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoVGVybmFyeUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihUZXJuYXJ5RXhwcmVzc2lvbiwgaXNUZXJuYXJ5RXhwcmVzc2lvbigpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxZjg4MmRkOTkxYjgwZDlmNTVkNWEwMWJjYjM4YjA4Yzc3OGRkOTZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEy
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAg
ICB+VHlwZSgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCA6IHVp
bnQ4X3QgewotICAgICAgICAvLyBVbm5hbWVkVHlwZXMKLSAgICAgICAgVHlwZVJlZmVyZW5jZSwK
LSAgICAgICAgUG9pbnRlciwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2UsCi0gICAgICAgIEFycmF5
LAotICAgICAgICAvLyBOYW1lZFR5cGVzCi0gICAgICAgIFR5cGVEZWZpbml0aW9uLAotICAgICAg
ICBTdHJ1Y3R1cmVEZWZpbml0aW9uLAotICAgICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24sCi0g
ICAgICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwKLSAgICAgICAgLy8gUmVzb2x2YWJsZVR5cGVz
Ci0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgSW50ZWdlckxpdGVyYWwsCi0gICAgICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIFR5cGUoS2luZCBraW5kKQot
ICAgICAgICA6IG1fa2luZChraW5kKQotICAgIHsgfQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
VHlwZSYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFR5cGUmKTsKLQotICAgIGV4cGxpY2l0
IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwotICAgIFR5cGUoVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRlOwotICAgIFR5cGUm
IG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQotCi0gICAgYm9vbCBpc1VubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID49IEtpbmQ6OlR5cGVSZWZlcmVuY2UgJiYga2luZCgpIDw9IEtpbmQ6OkFycmF5
OyB9Ci0gICAgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5k
OjpUeXBlRGVmaW5pdGlvbiAmJiBraW5kKCkgPD0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
OyB9Ci0gICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49
IEtpbmQ6OkZsb2F0TGl0ZXJhbCAmJiBraW5kKCkgPD0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbDsgfQotCi0gICAgYm9vbCBpc1R5cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6VHlwZVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpQb2ludGVyOyB9Ci0gICAgYm9vbCBpc0FycmF5
UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheVJlZmVy
ZW5jZTsgfQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6QXJyYXk7IH0KLSAgICBib29sIGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGlzUG9pbnRlclR5cGUoKSB8fCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpOyB9Ci0KLSAgICBib29s
IGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZURl
ZmluaXRpb247IH0KLSAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOyB9Ci0gICAgYm9vbCBpc0Vu
dW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb247IH0KLSAgICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQot
Ci0gICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6RmxvYXRMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wg
aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKTsK
LSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8VHlwZSo+KHRoaXMpLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgS2luZCBtX2tpbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlKQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUp
IFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlw
ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVBcmd1bWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGUxMGJmNzU0
MjlkODY2ZjY0NDU1MDUzYTk0MzExMjhiYzdmNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJn
dW1lbnQuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
Q29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0j
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLVR5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50
cykKLXsKLSAgICBUeXBlQXJndW1lbnRzIHJlc3VsdDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHR5
cGVBcmd1bWVudCA6IHR5cGVBcmd1bWVudHMpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoY2xvbmUo
dHlwZUFyZ3VtZW50KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVHlwZUFyZ3VtZW50IGNs
b25lKGNvbnN0IFR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIHJldHVybiBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJiBjb25z
dGFudEV4cHJlc3Npb24pIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVybiBjb25zdGFu
dEV4cHJlc3Npb24uY2xvbmUoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8VHlwZVJlZmVyZW5jZT4m
IHR5cGVSZWZlcmVuY2UpIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVybiB0eXBlUmVm
ZXJlbmNlLmNvcHlSZWYoKTsKLSAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlQXJndW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEyYTMy
ZWI2ZWI1MTgxZGYzMDY4MmJhMmU0ZDIzZjIyNWQzMTcxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi11c2luZyBUeXBlQXJndW1l
bnQgPSBWYXJpYW50PENvbnN0YW50RXhwcmVzc2lvbiwgUmVmPFR5cGVSZWZlcmVuY2U+PjsKLXVz
aW5nIFR5cGVBcmd1bWVudHMgPSBWZWN0b3I8VHlwZUFyZ3VtZW50PjsKLQotVHlwZUFyZ3VtZW50
IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYpOwotVHlwZUFyZ3VtZW50cyBjbG9uZShjb25zdCBU
eXBlQXJndW1lbnRzJik7Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjkwNTU3YmVlZWZiMGZlNGUyMGNiMThmMTg2YjIx
MmM0M2RiODc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGVEZWZpbml0aW9uKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlKQot
ICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpUeXBlRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1v
dmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgewotICAgIH0K
LQotICAgIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFR5cGVEZWZpbml0aW9u
KGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgVHlwZURlZmluaXRpb24oVHlw
ZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJl
dHVybiBtX3R5cGU7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBU
eXBlJiB1bmlmeU5vZGVJbXBsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUtPnVuaWZ5
Tm9kZSgpOwotICAgIH0KLQotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZURl
ZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUeXBlRGVmaW5p
dGlvbiwgaXNUeXBlRGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmIzMzFjMzJkNTU0MGY2MzFjMTQxZjJiYzQ2OTFhMTgyMTg0YWViZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotUmVmPFR5cGVSZWZlcmVuY2U+IFR5cGVSZWZlcmVuY2U6
OndyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSkKLXsK
LSAgICBUeXBlQXJndW1lbnRzIHR5cGVBcmd1bWVudHM7Ci0gICAgaWYgKGlzPE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKSkKLSAgICAgICAgdHlwZUFyZ3VtZW50cyA9IEFTVDo6
Y2xvbmUoZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpLnR5cGVB
cmd1bWVudHMoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9j
YXRpb24sIFN0cmluZyhyZXNvbHZlZFR5cGUubmFtZSgpKSwgV1RGTW92ZSh0eXBlQXJndW1lbnRz
KSk7Ci0gICAgcmVzdWx0LT5zZXRSZXNvbHZlZFR5cGUocmVzb2x2ZWRUeXBlKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZGVlZWZmZWFiMDdkMDQwNDlhODU0NjI3NzcxY2VmMzA2
MmJkNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxv
Y2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBUeXBlUmVmZXJlbmNlIGZpbmFsIDogcHVibGlj
IFVubmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShUeXBlUmVmZXJlbmNlKTsKLSAgICBUeXBlUmVmZXJlbmNlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVu
dHMpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6OlR5cGVSZWZlcmVuY2Up
Ci0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlQXJndW1l
bnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0
cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFR5cGVSZWZlcmVuY2UobG9jYXRpb24sIFdURk1vdmUo
bmFtZSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpKTsKLSAgICB9Ci0KLSAgICB+VHlwZVJlZmVy
ZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVyZW5jZT4gd3JhcChD
b2RlTG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKTsKLQotICAgIFN0cmluZyYgbmFt
ZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMo
KSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KLSAgICBOYW1lZFR5cGUqIG1heWJlUmVzb2x2
ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGU7IH0KLSAgICBOYW1lZFR5cGUm
IHJlc29sdmVkVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5
cGUpOwotICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHZvaWQg
c2V0UmVzb2x2ZWRUeXBlKE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotICAgIHsKLSAgICAgICAg
bV9yZXNvbHZlZFR5cGUgPSAmcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHVzZSB0aGlz
IGZ1bmN0aW9uIGFmdGVyIHRoZSBuYW1lIHJlc29sdmVyIHJ1bnMuCi0gICAgICAgIC8vIFJlbHlp
bmcgb24gaGF2aW5nIGEgcmVzb2x2ZWQgdHlwZSBzaW1wbGlmaWVzIHRoaXMgaW1wbGVtZW50YXRp
b24uCi0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBXVEY6
OlB0ckhhc2g8Y29uc3QgVHlwZSo+OjpoYXNoKCZ1bmlmeU5vZGUoKSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGVSZWZlcmVuY2UmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuICZ1bmlmeU5v
ZGUoKSA9PSAmb3RoZXIudW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAg
IHJldHVybiBtX3Jlc29sdmVkVHlwZS0+bmFtZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgVHlwZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlw
ZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBUeXBlQXJn
dW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKLSAgICBOYW1lZFR5cGUqIG1fcmVzb2x2ZWRUeXBlIHsg
bnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoVHlwZVJlZmVyZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9UWVBFKFR5cGVSZWZlcmVuY2UsIGlzVHlwZVJlZmVyZW5jZSgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhZDkwZTc4NDI1MTM3NDlhOThlYWY2YmZjZmRlYmMyNjcwM2Q0
NzdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdW5zaWduZWQgVW5uYW1lZFR5
cGU6Omhhc2goKSBjb25zdAotewotICAgIHN3aXRjaCAoa2luZCgpKSB7Ci0gICAgY2FzZSBLaW5k
OjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4o
KnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBk
b3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5
UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigq
dGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXk6Ci0gICAgICAgIHJldHVybiBkb3du
Y2FzdDxBcnJheVR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLWJvb2wgVW5uYW1lZFR5cGU6
Om9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmIG90aGVyKSBjb25zdAotewotICAgIGlmIChv
dGhlci5raW5kKCkgIT0ga2luZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0
Y2ggKGtpbmQoKSkgewotICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxUeXBlUmVmZXJl
bmNlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxQb2ludGVyVHlwZT4ob3RoZXIp
OwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2Fz
dDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5
cGU+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5OgotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8QXJyYXlUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlUeXBlPihvdGhlcik7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk4MWU1ZTM4Nzk0
MWM2Mjg3ZTQ4N2YxMjg1NTU2NGQzZTBkZGI4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbm5hbWVkVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBVbm5hbWVkVHlw
ZSA6IHB1YmxpYyBUeXBlLCBwdWJsaWMgUmVmQ291bnRlZDxVbm5hbWVkVHlwZT4gewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVubmFtZWRU
eXBlKTsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtp
bmQga2luZCkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwgbV9jb2RlTG9jYXRpb24o
bG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0dXJuICp0aGlzOyB9Ci0g
ICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5uYW1lZFR5cGUpCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShVbm5hbWVkVHlwZSwgaXNVbm5hbWVkVHlwZSgp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGVIYXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlw
ZUhhc2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2N2MwZDc0YmIyNmY0MTk4
ZDE2ZjYyYTdhM2I2N2E0YmE1MmY0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbm5hbWVkVHlwZUhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFVubmFt
ZWRUeXBlS2V5IHsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZUtleSgpID0gZGVmYXVsdDsKLSAg
ICBVbm5hbWVkVHlwZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAg
IDogbV90eXBlKGJpdHdpc2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSkpCi0gICAgewotICAgIH0KLQotICAgIFVubmFtZWRUeXBlS2V5KEFTVDo6VW5u
YW1lZFR5cGUmIHR5cGUpCi0gICAgICAgIDogbV90eXBlKCZ0eXBlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3R5cGU7IH0KLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IGJp
dHdpc2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX3R5cGUtPmhhc2goKTsg
fQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlwZUtleSYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICptX3R5cGUgPT0gKm90aGVyLm1fdHlwZTsgfQotICAgIEFTVDo6VW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gKm1fdHlwZTsgfQotCi0gICAgc3RydWN0
IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVbm5hbWVkVHlwZUtl
eSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFVubmFtZWRUeXBlS2V5JiBhLCBjb25zdCBVbm5hbWVkVHlwZUtleSYgYikgeyByZXR1
cm4gYSA9PSBiOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSB0cnVlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDogcHVibGljIFdU
Rjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFVubmFtZWRUeXBlS2V5PiB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkpIHsgcmV0dXJu
IGtleS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpVbm5h
bWVkVHlwZSogbV90eXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi19Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OldITFNMOjpVbm5h
bWVkVHlwZUtleT4gOiBXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk6OlRyYWl0cyB7IH07
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5
cGVLZXk+IDogV2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5OjpIYXNoIHsgfTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkN2FmYjQxODI2MmY3OGMxMTk4ZjNlODgxMzBjODA2NjMwNDkxNzcyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWlu
dDY0X3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25z
dAotewotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPiht
X3R5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSk7Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21V
bnNpZ25lZEludGVnZXIoKShtX3ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MDAxNmU1YzIyNzIxOTQ2MzRjNGEwNzY0ZmY3ZDYxMzQ2MmU0NDc5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAorKysgL2Rldi9udWxs
CkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNp
Z25lZCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsKQotICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgflVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKGNvbnN0
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwm
KSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0oVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHVuc2lnbmVkIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBj
bG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIHJlc3Vs
dChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5
cGUuY2xvbmUoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXli
ZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0
X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5
cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGludDY0
X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgdW5zaWduZWQgbV92YWx1ZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwo
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTVkMjFmYWEwNGU0NzgxYTAyMTBjM2Q0NGE5NzY1NWIwMjU0M2E2Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBl
cy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVu
c2lnbmVkIHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlw
ZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAidWludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkp
KQotewotfQotCi1ib29sIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8TmFt
ZWRUeXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRU
eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICBp
ZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0ludCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudFVu
c2lnbmVkSW50ZWdlcigpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjb252
ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0Ci17Ci0gICAg
aWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiAxOwotfQotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y2xvbmUoKSBjb25zdAotewotICAgIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlIHJlc3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBt
X3ZhbHVlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAg
ICAgIHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7
Ci0gICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBhN2VkMzlmODhkZjQ4NTU2ZjBhNzgzYjIxYTM0YmQ0ODU0MmY3MjUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZVJl
ZmVyZW5jZTsKLQotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJs
aWMgUmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgdW5zaWduZWQg
dmFsdWUpOwotCi0gICAgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0Owot
Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JikgPSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHBy
ZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KLQotICAgIGJvb2wgY2Fu
UmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3Qo
Y29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV92YWx1ZTsKLSAg
ICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIgZGVwZW5kZW5j
eSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxUeXBlIC0+IFR5
cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Npb24KLSAgICBS
ZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSwgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJh
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTE4YjZjZGRiYTQxYzljNjA1
MDFhMmY5MGUzNjk3Mzk5NmQ4YzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5o
IgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGZpbmFs
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLS8vIEZpbmFsIGJlY2F1c2Ugd2UgbWFk
ZSB0aGUgZGVzdHJ1Y3RvciBub24tdmlydHVhbC4KLXB1YmxpYzoKLSAgICBzdHJ1Y3QgUmFyZURh
dGEgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFJh
cmVEYXRhKFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzQXJndW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxT
ZW1hbnRpYz4mJiBzZW1hbnRpY0FyZ3VtZW50KQotICAgICAgICAgICAgOiBxdWFsaWZpZXJzKFdU
Rk1vdmUocXVhbGlmaWVyc0FyZ3VtZW50KSkKLSAgICAgICAgICAgICwgc2VtYW50aWMoV1RGTW92
ZShzZW1hbnRpY0FyZ3VtZW50KSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFF1YWxp
ZmllcnMgcXVhbGlmaWVyczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBzZW1h
bnRpYzsKLSAgICB9OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gY29k
ZUxvY2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmUHRyPFVubmFtZWRUeXBlPiB0
eXBlLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMs
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluaXRpYWxpemVyKQotICAgICAgICA6IG1f
Y29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBl
KSkKLSAgICAgICAgLCBtX2luaXRpYWxpemVyKFdURk1vdmUoaW5pdGlhbGl6ZXIpKQotICAgICAg
ICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAgICAgICAgaWYgKHNlbWFudGljIHx8
ICFxdWFsaWZpZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5p
cXVlPFJhcmVEYXRhPihXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKHNlbWFudGljKSk7Ci0g
ICAgfQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJp
YWJsZURlY2xhcmF0aW9uKGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAg
ICBWYXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0Owot
Ci0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICAvLyBXZSB1c2Ug
dGhpcyBmb3IgUmVhZE1vZGlmeVdyaXRlIGV4cHJlc3Npb25zLCBzaW5jZSB3ZSBkb24ndCBrbm93
IHRoZSB0eXBlIG9mIHRoZWlyCi0gICAgLy8gaW50ZXJuYWwgdmFyaWFibGVzIHVudGlsIHRoZSBj
aGVja2VyIHJ1bnMuIEFsbCBvdGhlciB2YXJpYWJsZXMgc2hvdWxkIHN0YXJ0IGxpZmUgb3V0Ci0g
ICAgLy8gd2l0aCBhIHR5cGUuCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVkVHlwZT4gdHlw
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90eXBlID0gV1RG
TW92ZSh0eXBlKTsKLSAgICB9Ci0gICAgY29uc3QgUmVmUHRyPFVubmFtZWRUeXBlPiYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlID8gJiptX3R5cGUgOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lvbiogaW5pdGlh
bGl6ZXIoKSB7IHJldHVybiBtX2luaXRpYWxpemVyLmdldCgpOyB9Ci0gICAgYm9vbCBpc0Fub255
bW91cygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5pc051bGwoKTsgfQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiB0YWtlSW5pdGlhbGl6ZXIoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5p
dGlhbGl6ZXIpOyB9Ci0gICAgdm9pZCBzZXRJbml0aWFsaXplcihzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaW5pdGlhbGl6ZXIo
KSk7Ci0gICAgICAgIEFTU0VSVChleHByZXNzaW9uKTsKLSAgICAgICAgbV9pbml0aWFsaXplciA9
IFdURk1vdmUoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotCi0gICAgU2VtYW50aWMqIHNl
bWFudGljKCkgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPnNlbWFudGljLmdldCgp
IDogbnVsbHB0cjsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlv
bjsKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbV9pbml0aWFsaXplcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+
IG1fcmFyZURhdGEgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLX07Ci0KLXVzaW5n
IFZhcmlhYmxlRGVjbGFyYXRpb25zID0gVmVjdG9yPFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0
aW9uPj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzMyOGM0YjJj
ZmQ0MmU5MzMxYWE4NTZmOTRhNmY4MjQ0ZWY1ZTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVi
bGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBW
YXJpYWJsZURlY2xhcmF0aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnMpCi0gICAgICAgICwg
bV92YXJpYWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb25zKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZh
dWx0OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoY29uc3QgVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBWZWN0b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PiYgdmFyaWFibGVEZWNs
YXJhdGlvbnMoKSB7IHJldHVybiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0KLXByaXZhdGU6
Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnMgbV92YXJpYWJsZURlY2xhcmF0aW9uczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgaXNWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVmFyaWFibGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhjYmQwNmFjYWUxZmVlZWE3MDUxN2I4ZGY4Y2I4NjdkZDkzNmM5NmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFZh
cmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShu
YW1lKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OwotCi0gICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRl
bGV0ZTsKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBzdGF0aWMgVmFyaWFibGVSZWZlcmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0
aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgVmFyaWFibGVSZWZlcmVu
Y2UgcmVzdWx0KHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpOwotICAgICAgICBy
ZXN1bHQubV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAgICByZXN1bHQu
bV9uYW1lID0gdmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAg
ICBWYXJpYWJsZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFyaWFibGU7IH0K
LQotICAgIHZvaWQgc2V0VmFyaWFibGUoVmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNs
YXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fdmFyaWFibGUgPSAmdmFyaWFibGVEZWNsYXJhdGlv
bjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxl
UmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZhcmlh
YmxlRGVjbGFyYXRpb24qIG1fdmFyaWFibGUgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVy
ZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxl
UmVmZXJlbmNlLCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkNDE5NjQ5YjE1NGYzMDE5Y2E4OTdlYWJjYmI0MWJkOGU2NGRiZDI0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRl
bWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2hpbGVM
b29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0
aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQo
bG9jYXRpb24sIEtpbmQ6OldoaWxlTG9vcCkKLSAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1v
dmUoY29uZGl0aW9uYWwpKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgIHsK
LSAgICB9Ci0KLSAgICB+V2hpbGVMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgV2hpbGVMb29wKGNv
bnN0IFdoaWxlTG9vcCYpID0gZGVsZXRlOwotICAgIFdoaWxlTG9vcChXaGlsZUxvb3AmJikgPSBk
ZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRp
dGlvbmFsOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci0gICAgVW5p
cXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoV2hpbGVMb29wKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGlsZUxvb3AsIGlzV2hpbGVMb29wKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MTEz
YTA2MThiYTFjMjcxMzg4ZWYxZDQ0YjBhYjBlNTYxNjk4MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAi
V0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExT
TFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQot
c3RhdGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYg
YnVpbHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAoYnVpbHRJblNlbWFudGljLnZhcmlhYmxl
KCkpIHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5j
ZUlEOgotICAgICAgICByZXR1cm4gIltbaW5zdGFuY2VfaWRdXSJfc3RyOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICByZXR1cm4g
IltbdmVydGV4X2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiW1twb2ludF9zaXplXV0iX3N0cjsKLSAgICBj
YXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAg
cmV0dXJuICJbW3Bvc2l0aW9uXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuICJbW2Zyb250X2ZhY2lu
Z11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWU2Ft
cGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfaWRdXSJfc3RyOwotICAgIGNhc2Ug
QVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAg
IHJldHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiW1tj
b2xvcigiLCAqYnVpbHRJblNlbWFudGljLnRhcmdldEluZGV4KCksICIpXV0iKTsKLSAgICBjYXNl
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJu
ICJbW2RlcHRoKGFueSldXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIltbc2FtcGxlX21hc2tdXSJfc3Ry
OwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRpc3BhdGNoVGhy
ZWFkSUQ6Ci0gICAgICAgIHJldHVybiAiW1t0aHJlYWRfcG9zaXRpb25faW5fZ3JpZF1dIl9zdHI7
Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAg
ICAgICAgcmV0dXJuICJbW3RocmVhZGdyb3VwX3Bvc2l0aW9uX2luX2dyaWRdXSJfc3RyOwotICAg
IGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAg
ICAgIHJldHVybiAiW1t0aHJlYWRfaW5kZXhfaW5fdGhyZWFkZ3JvdXBdXSJfc3RyOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJl
dHVybiAiW1t0aHJlYWRfcG9zaXRpb25faW5fdGhyZWFkZ3JvdXBdXSJfc3RyOwotICAgIH0KLX0K
LQotc3RhdGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OlNlbWFudGljJiBzZW1h
bnRpYykKLXsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1h
bnRpYz4oc2VtYW50aWMpKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlRm9yU2VtYW50aWMoV1RG
OjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSk7Ci0gICAgYXV0byYgc3RhZ2VJ
bk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGlj
KTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiW1t1c2VyKHVzZXIiLCBzdGFnZUluT3V0U2VtYW50
aWMuaW5kZXgoKSwgIildXSIpOwotfQotCi1FbnRyeVBvaW50U2NhZmZvbGRpbmc6OkVudHJ5UG9p
bnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9u
LCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2lu
dEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291
cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1l
KCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotICAgIDogbV9mdW5jdGlvbkRlZmluaXRp
b24oZnVuY3Rpb25EZWZpbml0aW9uKQotICAgICwgbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0g
ICAgLCBtX3R5cGVOYW1lcih0eXBlTmFtZXIpCi0gICAgLCBtX2VudHJ5UG9pbnRJdGVtcyhlbnRy
eVBvaW50SXRlbXMpCi0gICAgLCBtX3Jlc291cmNlTWFwKHJlc291cmNlTWFwKQotICAgICwgbV9s
YXlvdXQobGF5b3V0KQotICAgICwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKQotewotICAgIG1fbmFtZWRCaW5kR3JvdXBzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobV9sYXlvdXQuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
bGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5hbWVkQmluZEdyb3VwIG5hbWVkQmluZEdy
b3VwOwotICAgICAgICBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lID0gbV90eXBlTmFtZXIuZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVOYW1l
ID0gbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAu
YXJndW1lbnRCdWZmZXJJbmRleCA9IG1fbGF5b3V0W2ldLm5hbWU7IC8vIGNvbnZlcnRMYXlvdXQo
KSBpbiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIG1ha2VzIHN1cmUgdGhlc2UgZG9uJ3QgY29s
bGlkZS4KLSAgICAgICAgbmFtZWRCaW5kR3JvdXAubmFtZWRCaW5kaW5ncy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsKLSAgICAg
ICAgICAgIE5hbWVkQmluZGluZyBuYW1lZEJpbmRpbmc7Ci0gICAgICAgICAgICBuYW1lZEJpbmRp
bmcuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50
TmFtZSgpOwotICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmluZGV4ID0gbV9sYXlvdXRbaV0uYmlu
ZGluZ3Nbal0uaW50ZXJuYWxOYW1lOwotICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShVbmlmb3JtQnVmZmVyQmluZGluZyYgdW5pZm9ybUJ1ZmZlckJpbmRpbmcpIHsK
LSAgICAgICAgICAgICAgICBMZW5ndGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1hdGlvbiB7IG1f
dHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1fZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCksIHVuaWZvcm1CdWZmZXJCaW5kaW5nLmxlbmd0aE5hbWUgfTsKLSAg
ICAgICAgICAgICAgICBuYW1lZEJpbmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBsZW5ndGhJbmZv
cm1hdGlvbjsKLSAgICAgICAgICAgIH0sIFsmXShTYW1wbGVyQmluZGluZyYpIHsKLSAgICAgICAg
ICAgIH0sIFsmXShUZXh0dXJlQmluZGluZyYpIHsKLSAgICAgICAgICAgIH0sIFsmXShTdG9yYWdl
QnVmZmVyQmluZGluZyYgc3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICBM
ZW5ndGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1hdGlvbiB7IG1fdHlwZU5hbWVyLmdlbmVyYXRl
TmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCks
IHN0b3JhZ2VCdWZmZXJCaW5kaW5nLmxlbmd0aE5hbWUgfTsKLSAgICAgICAgICAgICAgICBuYW1l
ZEJpbmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBsZW5ndGhJbmZvcm1hdGlvbjsKLSAgICAgICAg
ICAgIH0pLCBtX2xheW91dFtpXS5iaW5kaW5nc1tqXS5iaW5kaW5nKTsKLSAgICAgICAgICAgIG5h
bWVkQmluZEdyb3VwLm5hbWVkQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRC
aW5kaW5nKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lZEJpbmRHcm91cHMudW5jaGVja2Vk
QXBwZW5kKFdURk1vdmUobmFtZWRCaW5kR3JvdXApKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0cy5zaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpt
X2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV0uc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIE5hbWVkQnVpbHRJbiBuYW1lZEJ1aWx0SW47Ci0gICAgICAgIG5hbWVkQnVp
bHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0gaTsKLSAgICAgICAgbmFtZWRCdWlsdEluLnZh
cmlhYmxlTmFtZSA9IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fbmFt
ZWRCdWlsdElucy5hcHBlbmQoV1RGTW92ZShuYW1lZEJ1aWx0SW4pKTsKLSAgICB9Ci0KLSAgICBt
X3BhcmFtZXRlclZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZnVuY3Rpb25EZWZp
bml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBt
X3BhcmFtZXRlclZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQobV9nZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKSk7Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VI
ZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBp
bmRlbnQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCAic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0cnVjdE5hbWUsICIg
e1xuIik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5k
ZW50KTsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIFN0cmluZz4+IHN0
cnVjdEl0ZW1zOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtp
XS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGF1dG8mIGJpbmRpbmcg
PSBtX2xheW91dFtpXS5iaW5kaW5nc1tqXTsKLSAgICAgICAgICAgICAgICBpZiAoIWJpbmRpbmcu
dmlzaWJpbGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5k
R3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAg
YXV0byBpbmRleCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uaW5kZXg7
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gbGVuZ3RoSW5mb3JtYXRpb24gPSBtX25hbWVkQmlu
ZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uKQotICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobGVuZ3RoSW5mb3Jt
YXRpb24tPmluZGV4LCBtYWtlU3RyaW5nKCJ1aW50MiAiLCBsZW5ndGhJbmZvcm1hdGlvbi0+ZWxl
bWVudE5hbWUsICIgW1tpZCgiLCBsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgsICIpXV07IikpKTsK
LQotICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1f
bGF5b3V0W2ldLmJpbmRpbmdzW2pdKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0g
bV9yZXNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiB0eXBlID0g
bV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1lZFR5cGUtPnVu
aWZ5Tm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4o
dHlwZSkgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBl
Pih0eXBlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUg
PSBkb3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+
KHR5cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0g
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZHJlc3NTcGFjZSA9IHRvU3RyaW5n
KHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKGFkZHJl
c3NTcGFjZSwgIiAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQo
IiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxB
U1Q6Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRv
d25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmFt
ZWRUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVu
dE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJp
bmRpbmcgZG9lc24ndCBhcHBlYXIgaW4gdGhlIHNoYWRlciBzb3VyY2UuCi0gICAgICAgICAgICAg
ICAgICAgIC8vIEhvd2V2ZXIsIHdlIG11c3Qgc3RpbGwgZW1pdCBhIHBsYWNlaG9sZGVyLCBzbyBz
dWNjZXNzaXZlIGl0ZW1zIGluIHRoZSBhcmd1bWVudCBidWZmZXIgc3RydWN0IGhhdmUgdGhlIGNv
cnJlY3Qgb2Zmc2V0LgotICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBiaW5kaW5n
IGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBzaGFkZXIgc291cmNlLCB3ZSBkb24ndCBrbm93IHdoaWNo
IGV4YWN0IHR5cGUgdGhlIGJpbmQgcG9pbnQgc2hvdWxkIGhhdmUuCi0gICAgICAgICAgICAgICAg
ICAgIC8vIFRoZXJlZm9yZSwgd2UgbXVzdCBzeW50aGVzaXplIGEgdHlwZSBvdXQgb2YgdGhpbiBh
aXIuCi0gICAgICAgICAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0o
VW5pZm9ybUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0
ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygiY29uc3RhbnQgdm9p
ZCogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAg
ICAgICAgICAgICB9LCBbJl0oU2FtcGxlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygi
c2FtcGxlciAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0sIFsmXShUZXh0dXJlQmluZGluZykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEzODQgV2UgZG9uJ3Qga25vdyB3aGljaCB0ZXh0dXJlIHR5cGUgdGhlIGJpbmRpbmcgcmVw
cmVzZW50cy4gVGhpcyBpcyBubyBnb29kIHZlcnkgYmFkLgotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJ0
ZXh0dXJlMmQ8ZmxvYXQ+ICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07Iikp
KTsKLSAgICAgICAgICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
aW5kZXgsIG1ha2VTdHJpbmcoImRldmljZSB2b2lkKiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIs
IGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pLCBiaW5kaW5nLmJpbmRp
bmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6
c29ydChzdHJ1Y3RJdGVtcy5iZWdpbigpLCBzdHJ1Y3RJdGVtcy5lbmQoKSwgW10oY29uc3Qgc3Rk
OjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+JiBsZWZ0LCBjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQs
IFN0cmluZz4mIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQuZmlyc3QgPCBy
aWdodC5maXJzdDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBzdHJ1Y3RJdGVtIDogc3RydWN0SXRlbXMpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCBzdHJ1Y3RJdGVtLnNlY29uZCwgJ1xuJyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0gICAgfQotfQot
Ci1ib29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlU2lnbmF0dXJlKFN0cmlu
Z0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSBpbmNsdWRlUHJl
Y2VkaW5nQ29tbWEpCi17Ci0gICAgaWYgKCFtX2xheW91dC5zaXplKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2VkaW5nQ29tbWEgPT0gSW5jbHVkZVByZWNl
ZGluZ0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAg
ICBhdXRvJiBuYW1lZEJpbmRHcm91cCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUs
ICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJp
bmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIik7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1zdGF0aWMgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhjb25z
dCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAo
YnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkpIHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAg
IGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAg
ICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpQU2l6ZToKLSAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiAiZmxvYXQ0IjsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToK
LSAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNl
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAg
ICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNl
bWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAg
Y2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAg
IHJldHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50MyI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJu
ICJ1aW50MyI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3Jv
dXBJbmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlQoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAg
ICB9Ci19Ci0KLWJvb2wgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJbnNTaWduYXR1
cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hIGlu
Y2x1ZGVQcmVjZWRpbmdDb21tYSkKLXsKLSAgICBpZiAoIW1fbmFtZWRCdWlsdElucy5zaXplKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2VkaW5nQ29tbWEg
PT0gSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsICIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25hbWVkQnVpbHRJbnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgYXV0byYgbmFtZWRCdWlsdEluID0gbV9uYW1lZEJ1aWx0
SW5zW2ldOwotICAgICAgICBhdXRvJiBpdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25h
bWVkQnVpbHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXTsKLSAgICAgICAgYXV0byYgYnVpbHRJ
blNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCppdGVtLnNlbWFudGlj
KTsKLSAgICAgICAgYXV0byBpbnRlcm5hbFR5cGUgPSBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhi
dWlsdEluU2VtYW50aWMpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVybmFsVHlwZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnICcsIG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2Vt
YW50aWMoYnVpbHRJblNlbWFudGljKSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJbnB1dFBhdGgoU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlciwgVmVjdG9yPFN0cmluZz4mIHBhdGgpCi17Ci0gICAgQVNTRVJU
KCFwYXRoLmlzRW1wdHkoKSk7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiogc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMo
KVtpXS0+bmFtZSgpID09IHBhdGhbMF0pIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZ5Tm9k
ZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT51bmlmeU5v
ZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBl
Pih1bmlmeU5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZURlZmluaXRp
b24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IHBhdGguc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURl
ZmluaXRpb24pOwotICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+Zmlu
ZChwYXRoW2ldKTsKLSAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgq
bmV4dCkpOwotICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICAgICAg
YXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAo
aXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hbWVk
VHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICAgICAg
aWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkT3V0cHV0UGF0aChTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgIGF1dG8mIHVuaWZ5Tm9k
ZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICBzdHJ1Y3R1
cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50
IDogcGF0aCkgewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAg
IGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVudCk7Ci0gICAg
ICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsKLSAgICAgICAg
c3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9
IG5leHQtPnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBl
Pih1bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlRGVm
aW5pdGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywg
bV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUg
PSBtX25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsKLSAgICAgICAg
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1fbGF5b3V0W2ldLmJpbmRp
bmdzW2pdKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNlTWFwLmVuZCgp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fbmFtZWRCaW5k
R3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pIHsKLSAgICAgICAg
ICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52
YWx1ZV0ucGF0aDsKLSAgICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJp
bmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAg
ICBhdXRvIGxlbmd0aEVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5k
aW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+ZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAg
YXV0byBsZW5ndGhUZW1wb3JhcnlOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5k
aW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+dGVtcG9yYXJ5TmFtZTsKLQotICAgICAgICAgICAg
ICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRv
ci0+dmFsdWVdLnVubmFtZWRUeXBlOwotICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVO
YW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6UmVmZXJl
bmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotCi0gICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgInNpemVf
dCAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0
aEVsZW1lbnROYW1lLCAiLnk7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIiwK
LSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwg
bGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVt
ZW50TmFtZSwgIi54O1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1w
b3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAvIHNpemVvZigiLCBtYW5n
bGVkVHlwZU5hbWUsICIpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiaWYgKCIs
IGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKVxuIiwKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZW50LCAiICAgICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZG
O1xuIgotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbmRlbnQpOwotICAgICAgICAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0
cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVu
dE5hbWUsICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAi
KSB9O1xuIgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3It
PnZhbHVlXS5wYXRoOwotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVk
QmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAg
ICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIHZhcmlhYmxlTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZm9yIChhdXRvJiBuYW1lZEJ1aWx0SW4gOiBtX25hbWVkQnVpbHRJbnMpIHsKLSAg
ICAgICAgYXV0byYgaXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZEJ1aWx0SW4u
aW5kZXhJbkVudHJ5UG9pbnRJdGVtc107Ci0gICAgICAgIGF1dG8mIHBhdGggPSBpdGVtLnBhdGg7
Ci0gICAgICAgIGF1dG8mIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWU7
Ci0gICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCppdGVtLnVubmFtZWRUeXBlKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBw
YXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1hbmdsZWRUeXBlTmFt
ZSwgJygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIik7Ci0gICAgfQotfQotCi1WZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBU
eXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhh
c2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3Rk
OjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lLCBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4mIG1hdGNoZWRWZXJ0ZXhBdHRy
aWJ1dGVzKQotICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwg
aW50cmluc2ljcywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlv
dXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1fbWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMobWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAgLCBtX3N0YWdlSW5T
dHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9yZXR1
cm5TdHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9z
dGFnZUluUGFyYW1ldGVyTmFtZShtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKQotewotICAg
IG1fbmFtZWRTdGFnZUlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFZlcnRleEF0
dHJpYnV0ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG1fbWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgTmFtZWRTdGFnZUluIG5hbWVkU3RhZ2VJbjsK
LSAgICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBrZXlWYWx1ZVBh
aXIudmFsdWU7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVy
LmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIG5hbWVkU3RhZ2VJ
bi5hdHRyaWJ1dGVJbmRleCA9IGtleVZhbHVlUGFpci5rZXktPm1ldGFsTG9jYXRpb247Ci0gICAg
ICAgIG1fbmFtZWRTdGFnZUlucy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZFN0YWdlSW4p
KTsKLSAgICB9Ci0KLSAgICBtX25hbWVkT3V0cHV0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
ZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgIE5h
bWVkT3V0cHV0IG5hbWVkT3V0cHV0OwotICAgICAgICBuYW1lZE91dHB1dC5lbGVtZW50TmFtZSA9
IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAg
IFN0cmluZ1ZpZXcgaW50ZXJuYWxUeXBlOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAg
ICAgICAgaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoV1RGOjpnZXQ8QVNU
OjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSk7Ci0gICAgICAgIGlmICgh
aW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxU
eXBlTmFtZSA9IGludGVybmFsVHlwZS50b1N0cmluZygpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgbV9uYW1lZE91dHB1
dHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRPdXRwdXQpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAi
IHtcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwot
ICAgICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewotICAg
ICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5
UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9
IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlSW5k
ZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBb
W2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwotICAgICAgICB9Ci0gICAg
fQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICBpbmRlbnQsICJ9O1xuXG4iLAot
ICAgICAgICBpbmRlbnQsICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKLSAg
ICApOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJ
dGVtcy5vdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1f
bmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgICAgICBhdXRvIGVsZW1l
bnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRv
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgaW50ZXJuYWxUeXBlTmFt
ZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLSAgICAK
LSAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQsIFNoYWRl
clN0YWdlOjpWZXJ0ZXgpOwotfQotCi12b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6
ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rp
b25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcg
JywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUlu
UGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKLSAgICBlbWl0UmVzb3VyY2VTaWduYXR1
cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIGVtaXRC
dWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olll
cyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lkIFZlcnRleEVu
dHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jlc291cmNlc0Fu
ZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLQotICAgIGZvciAoYXV0byYg
bmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgIGF1dG8mIHBhdGggPSBt
X2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRl
bXNdLnBhdGg7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1l
bnROYW1lOwotICAgICAgICAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsK
LSAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiO1xuIik7Ci0gICAgfQotfQotCi12b2lkIFZlcnRleEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFu
Z2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBv
dXRwdXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJp
YWJsZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXpl
KCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewot
ICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1l
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFt
ZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5
UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnRO
YW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgIGF1dG8mIGludGVy
bmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwotICAgICAg
ICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBl
bGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5h
bWUpOwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci0gICAgfQotfQotCi1GcmFn
bWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmco
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50cmluc2ljcyYg
aW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50cnlQ
b2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0
JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4m
KQotICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50cmlu
c2ljcywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQsIFdU
Rk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1fc3RhZ2VJblN0cnVjdE5h
bWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3JldHVyblN0cnVj
dE5hbWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3N0YWdlSW5Q
YXJhbWV0ZXJOYW1lKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgYXV0byYgaW5wdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2ldOwot
ICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50
aWM+KCppbnB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljPigqaW5wdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgTmFtZWRTdGFnZUluIG5hbWVkU3Rh
Z2VJbjsKLSAgICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBpOwot
ICAgICAgICBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5l
eHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBuYW1lZFN0YWdlSW4uYXR0cmlidXRl
SW5kZXggPSBzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKTsKLSAgICAgICAgbV9uYW1lZFN0YWdl
SW5zLmFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAgIH0KLQotICAgIG1fbmFtZWRP
dXRwdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5z
aXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRwdXQgbmFtZWRPdXRwdXQ7Ci0g
ICAgICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0
U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGU7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGlj
Pigqb3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBpbnRlcm5hbFR5cGUgPSBpbnRl
cm5hbFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1
dEl0ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0g
ICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gaW50ZXJuYWxUeXBlLnRv
U3RyaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFs
VHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91dHB1dEl0ZW0udW5u
YW1lZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZShuYW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIElu
ZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQs
ICJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICB7Ci0gICAgICAg
IEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBuYW1l
ZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5
cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVt
cy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBl
KTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5h
bWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJp
YnV0ZUluZGV4OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtYW5n
bGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBhdHRyaWJ1dGVJ
bmRleCwgIildXTtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICBpbmRlbnQsICJ9O1xuXG4iLAotICAgICAgICBpbmRlbnQsICJzdHJ1Y3Qg
IiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKLSAgICApOwotICAgIHsKLSAgICAgICAgSW5k
ZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAg
ICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFs
VHlwZU5hbWU7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZv
clNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGluZGVudCwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAn
LCBhdHRyaWJ1dGUsICI7XG4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLQotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVz
KHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsKLX0KLQotdm9p
ZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5k
ZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwg
ImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywg
bV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3Rh
Z2VfaW5dXSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNs
dWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmlu
Z0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4g
aW5kZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKHN0cmlu
Z0J1aWxkZXIsIGluZGVudCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFt
ZWRTdGFnZUlucykgewotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5w
dXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwotICAgICAgICBh
dXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0
aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9
ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJp
YWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgb3V0cHV0VmFyaWFibGVOYW1lLCBJbmRlbnRh
dGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtX3Jl
dHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAgaWYg
KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUg
PSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7
ICsraSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVs
ZW1lbnROYW1lOwotICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1
dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2lu
dEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5h
bFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKLSAgICAgICAgZW1pdE1hbmdsZWRP
dXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKTtcbiIpOwotICAgIH0KLX0KLQotQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6
Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVu
Y3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVO
YW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyos
IHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5n
bGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotICAgIDogRW50
cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50cmluc2ljcywgdHlwZU5h
bWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQsIFdURk1vdmUoZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKSkKLXsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5k
ZW50YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0cmlu
Z0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotfQotCi12b2lkIENvbXB1
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3Ry
aW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVudGF0aW9u
PDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJrZXJuZWwg
dm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7Ci0gICAgYm9vbCBhZGRlZFRvU2lnbmF0dXJlID0g
ZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21t
YTo6Tm8pOwotICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBhZGRlZFRv
U2lnbmF0dXJlID8gSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMgOiBJbmNsdWRlUHJlY2VkaW5n
Q29tbWE6Ok5vKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQg
Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jl
c291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLX0KLQotdm9p
ZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4p
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50
U2NhZmZvbGRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI1NjI4OGNiZWEy
NTcxYWYxZDA5ZDE1MTEyMzE1ODBiZDVlYmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTky
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hM
U0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRp
b247Ci0KLX0KLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtczsKLWNsYXNzIEludHJpbnNpY3M7Ci0K
LW5hbWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotY2xhc3MgRW50cnlQb2lu
dFNjYWZmb2xkaW5nIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5n
bGVkRnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
bWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlz
dGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pID0g
MDsKLQotICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgcGFyYW1ldGVyVmFyaWFibGVz
KCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJWYXJpYWJsZXM7IH0KLQotcHJvdGVjdGVkOgotICAgIEVu
dHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3Mm
LCBUeXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+
JiByZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1l
KCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLQotICAgIHZvaWQgZW1pdFJlc291cmNl
SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+LCBTaGFkZXJTdGFnZSk7
Ci0KLSAgICBlbnVtIGNsYXNzIEluY2x1ZGVQcmVjZWRpbmdDb21tYSB7Ci0gICAgICAgIFllcywK
LSAgICAgICAgTm8KLSAgICB9OwotICAgIGJvb2wgZW1pdFJlc291cmNlU2lnbmF0dXJlKFN0cmlu
Z0J1aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEpOwotICAgIGJvb2wgZW1pdEJ1aWx0SW5z
U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEpOwotCi0gICAg
dm9pZCBlbWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVjdG9yPFN0cmluZz4m
IHBhdGgpOwotICAgIHZvaWQgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKFN0cmluZ0J1aWxkZXImLCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aCk7Ci0gICAgdm9pZCBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFt
ZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pOwotCi0gICAgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mIG1fZnVuY3Rpb25EZWZpbml0aW9uOwotICAgIEludHJpbnNpY3Mm
IG1faW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwotICAgIEVudHJ5UG9p
bnRJdGVtcyYgbV9lbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90
PiYgbV9yZXNvdXJjZU1hcDsKLSAgICBMYXlvdXQmIG1fbGF5b3V0OwotICAgIHN0ZDo6ZnVuY3Rp
b248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZTsKLQot
ICAgIHN0cnVjdCBMZW5ndGhJbmZvcm1hdGlvbiB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVF
bGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB0ZW1w
b3JhcnlOYW1lOwotICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICB9OwotICAgIHN0cnVjdCBO
YW1lZEJpbmRpbmcgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVu
dE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPExl
bmd0aEluZm9ybWF0aW9uPiBsZW5ndGhJbmZvcm1hdGlvbjsKLSAgICB9OwotICAgIHN0cnVjdCBO
YW1lZEJpbmRHcm91cCB7Ci0gICAgICAgIE1hbmdsZWRUeXBlTmFtZSBzdHJ1Y3ROYW1lOwotICAg
ICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHZhcmlhYmxlTmFtZTsKLSAgICAgICAgVmVjdG9yPE5h
bWVkQmluZGluZz4gbmFtZWRCaW5kaW5nczsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRCdWZm
ZXJJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZEJpbmRHcm91cD4gbV9uYW1lZEJpbmRH
cm91cHM7IC8vIFBhcmFsbGVsIHRvIG1fbGF5b3V0Ci0KLSAgICBzdHJ1Y3QgTmFtZWRCdWlsdElu
IHsKLSAgICAgICAgc2l6ZV90IGluZGV4SW5FbnRyeVBvaW50SXRlbXM7Ci0gICAgICAgIE1hbmds
ZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lOwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkQnVp
bHRJbj4gbV9uYW1lZEJ1aWx0SW5zOwotCi0gICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+
IG1fcGFyYW1ldGVyVmFyaWFibGVzOwotfTsKLQotY2xhc3MgVmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nIGZpbmFsIDogcHVibGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0g
ICAgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwg
SW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGlu
ZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRW
YXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8VmVydGV4
QXR0cmlidXRlKiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1
YWwgflZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4p
IG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xl
ZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVu
cGFjayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQg
ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJp
YWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsK
LQotICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbV9tYXRjaGVkVmVydGV4
QXR0cmlidXRlczsKLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0TmFtZTsKLSAg
ICBNYW5nbGVkVHlwZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRWYXJpYWJs
ZU5hbWUgbV9zdGFnZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1lZFN0YWdlSW4g
ewotICAgICAgICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xl
ZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1fbmFtZWRTdGFn
ZUluczsKLQotICAgIHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1
cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5h
bWUgaW50ZXJuYWxUeXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91dHB1dD4gbV9u
YW1lZE91dHB1dHM7Ci19OwotCi1jbGFzcyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyBm
aW5hbCA6IHB1YmxpYyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgotICAgIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmlu
c2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJs
ZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8QXR0YWNobWVudERl
c2NyaXB0b3IqLCBzaXplX3Q+JiBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0gICAgdmlydHVh
bCB+RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+
KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmds
ZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRV
bnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lk
IGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFy
aWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7
Ci0KLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0TmFtZTsKLSAgICBNYW5nbGVk
VHlwZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgbV9z
dGFnZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1lZFN0YWdlSW4gewotICAgICAg
ICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVy
ZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVJbmRl
eDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1fbmFtZWRTdGFnZUluczsKLQot
ICAgIHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50
TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgaW50ZXJu
YWxUeXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91dHB1dD4gbV9uYW1lZE91dHB1
dHM7Ci19OwotCi1jbGFzcyBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nIGZpbmFsIDogcHVi
bGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgQ29tcHV0ZUVudHJ5UG9p
bnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3MmLCBUeXBl
TmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNv
dXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYg
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLSAgICB2aXJ0dWFsIH5Db21wdXRlRW50cnlQb2lu
dFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQgZW1pdEhlbHBl
clR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1lLCBJbmRl
bnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXIm
LCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWls
ZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZh
cmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotfTsKLQotfQotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlv
bldyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYjQ1OTBhNTVmYzMx
N2IyNjAyMzFkZTM4YjQyMGZmYTY5N2RhMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NzAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnRyeVBvaW50U2NhZmZvbGRpbmcuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNp
bmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyB2b2lkIGRlY2xhcmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9u
RGVjbGFyYXRpb24sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcpCi17Ci0g
ICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBpdGVyYXRvciA9IGZ1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlv
bkRlY2xhcmF0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gZnVuY3Rpb25NYXBwaW5nLmVu
ZCgpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICco
Jyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVtpXS0+dHlwZSgpKSk7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7
Ci19Ci0KLXN0cnVjdCBWYXJpYWJsZSB7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBuYW1lOwot
ICAgIE1hbmdsZWRUeXBlTmFtZSB0eXBlOwotfTsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyIDogcHVibGljIFZpc2l0b3IgewotICAgIGNsYXNzIEhvaXN0ZWRWYXJpYWJsZUNvbGxl
Y3RvciA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICBIb2lzdGVk
VmFyaWFibGVDb2xsZWN0b3IoRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyJiBmdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIpCi0gICAgICAgICAgICA6IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvcjxWYXJpYWJsZT4gdmFyaWFibGVzOwotICAgICAg
ICAgICAgc2l6ZV90IHNpemUgPSBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCk7Ci0g
ICAgICAgICAgICBib29sIGlzVm9pZCA9IG1hdGNoZXMoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRU
eXBlKCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX2ludHJpbnNpY3Mudm9pZFR5cGUoKSk7
Ci0gICAgICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAgICAgICAgICAgICArK3NpemU7Ci0gICAg
ICAgICAgICB2YXJpYWJsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLQotICAgICAg
ICAgICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byB0eXBlID0gZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShhcmd1bWVudC0+cmVzb2x2ZWRUeXBlKCkpOwot
ICAgICAgICAgICAgICAgIGF1dG8gbmFtZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMudW5jaGVj
a2VkQXBwZW5kKFZhcmlhYmxlIHsgbmFtZSwgdHlwZSB9KTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCFpc1ZvaWQpCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzLnVuY2hlY2tl
ZEFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSkgfSk7Ci0KLSAgICAg
ICAgICAgIHRvSG9pc3QuYWRkKCZjYWxsRXhwcmVzc2lvbiwgV1RGTW92ZSh2YXJpYWJsZXMpKTsK
LQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJl
YWRNb2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgVmVjdG9yPFZh
cmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKFZhcmlhYmxl
IHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBm
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpy
ZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWUoKS50eXBlKCkpIH0pOwotICAgICAgICAgICAgdmFyaWFi
bGVzLmFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlKCkudHlwZSgpKSB9KTsK
LQotICAgICAgICAgICAgdG9Ib2lzdC5hZGQoJnJlYWRNb2RpZnlXcml0ZSwgV1RGTW92ZSh2YXJp
YWJsZXMpKTsKLQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQocmVhZE1vZGlmeVdyaXRlKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciYgZnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOwotICAgICAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3Rv
cjxWYXJpYWJsZT4+IHRvSG9pc3Q7Ci0gICAgfTsKLQotcHVibGljOgotICAgIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBMYXlvdXQm
IGxheW91dCkKLSAgICAgICAgOiBtX3N0cmluZ0J1aWxkZXIoc3RyaW5nQnVpbGRlcikKLSAgICAg
ICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX3R5cGVOYW1lcih0eXBl
TmFtZXIpCi0gICAgICAgICwgbV9mdW5jdGlvbk1hcHBpbmcoZnVuY3Rpb25NYXBwaW5nKQotICAg
ICAgICAsIG1fbGF5b3V0KGxheW91dCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0ZUVudHJ5UG9p
bnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gMDsKLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpE
b1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJv
dWdoJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0
YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpC
b29sZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkNvbW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbEV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYp
IG92ZXJyaWRlOwotCi0gICAgZW51bSBjbGFzcyBMb29wQ29uZGl0aW9uTG9jYXRpb24gewotICAg
ICAgICBCZWZvcmVCb2R5LAotICAgICAgICBBZnRlckJvZHkKLSAgICB9OwotICAgIHZvaWQgZW1p
dExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNvbmRpdGlvbkV4
cHJlc3Npb24sIEFTVDo6RXhwcmVzc2lvbiogaW5jcmVtZW50LCBBU1Q6OlN0YXRlbWVudCYgYm9k
eSk7Ci0KLSAgICB2b2lkIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoQVNUOjpDb25zdGFu
dEV4cHJlc3Npb24mKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKCkgeyByZXR1cm4geyBtX3ZhcmlhYmxlQ291bnQrKyB9OyB9Ci0KLSAgICBlbnVt
IGNsYXNzIEJyZWFrQ29udGV4dCB7Ci0gICAgICAgIExvb3AsCi0gICAgICAgIFN3aXRjaAotICAg
IH07Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4gbV9jdXJyZW50QnJlYWtDb250
ZXh0OwotCi0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdCdWlsZGVyOwotICAgIEludHJpbnNp
Y3MmIG1faW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwotICAgIEhhc2hN
YXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIG1fZnVu
Y3Rpb25NYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgTWFu
Z2xlZFZhcmlhYmxlTmFtZT4gbV92YXJpYWJsZU1hcHBpbmc7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZzsKLSAgICBM
YXlvdXQmIG1fbGF5b3V0OwotICAgIHVuc2lnbmVkIG1fdmFyaWFibGVDb3VudCB7IDAgfTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZTsKLSAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVudCB7IDAgfTsKLSAg
ICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxWYXJpYWJsZT4+IG1faG9pc3RlZFZh
cmlhYmxlczsKLX07Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKQotewotICAgIC8vIFdlIGlubGluZSBuYXRpdmUg
ZnVuY3Rpb24gY2FsbHMuCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotCi0gICAg
ewotICAgICAgICBIb2lzdGVkVmFyaWFibGVDb2xsZWN0b3IgY29sbGVjdG9yKCp0aGlzKTsKLSAg
ICAgICAgY29sbGVjdG9yLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAg
ICAgIG1faG9pc3RlZFZhcmlhYmxlcyA9IFdURk1vdmUoY29sbGVjdG9yLnRvSG9pc3QpOwotICAg
IH0KLQotICAgIGF1dG8gZGVmaW5lSG9pc3RlZFZhcmlhYmxlcyA9IFsmXSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdmVjdG9yIDogbV9ob2lzdGVkVmFyaWFibGVzLnZhbHVlcygpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8gdmFyaWFibGUgOiB2ZWN0b3IpCi0gICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgdmFyaWFibGUudHlwZSwgJyAnLCB2YXJp
YWJsZS5uYW1lLCAiO1xuIik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgYXV0byBpdGVyYXRv
ciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgQVNT
RVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAgICBpZiAoZnVuY3Rp
b25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICAgICAgYXV0byBlbnRyeVBvaW50
U2NhZmZvbGRpbmcgPSBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0
aW9uKTsKLSAgICAgICAgaWYgKCFlbnRyeVBvaW50U2NhZmZvbGRpbmcpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gV1RGTW92ZShlbnRyeVBv
aW50U2NhZmZvbGRpbmcpOwotICAgICAgICAKLSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRp
bmctPmVtaXRIZWxwZXJUeXBlcyhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsKLSAgICAgICAg
bV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRTaWduYXR1cmUobV9zdHJpbmdCdWlsZGVyLCBp
dGVyYXRvci0+dmFsdWUsIG1faW5kZW50KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX2luZGVudCwgIntcbiIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRlbnRhdGlvblNj
b3BlIHNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRp
bmctPmVtaXRVbnBhY2sobV9zdHJpbmdCdWlsZGVyLCBtX2luZGVudCk7Ci0gICAgICAgIAotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3ZhcmlhYmxlTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0s
IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtpXSk7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmaW5lSG9pc3RlZFZhcmlhYmxlcygp
OwotCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJs
b2NrKCkpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cblxu
Iik7Ci0KLSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRyOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9PSBudWxscHRy
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJh
dG9yLT52YWx1ZSwgJygnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlv
bkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAg
ICAgICAgYXV0byYgcGFyYW1ldGVyID0gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtp
XTsKLSAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5h
ZGQoJnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+
dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ7XG4iKTsKLQotICAgICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0KLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RhdGVtZW50KTsKLX0K
LQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2Nr
KQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICB7
Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAgICAgICBmb3Ig
KGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAgICAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkJyZWFrJikKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50QnJlYWtDb250ZXh0
KTsKLSAgICBzd2l0Y2ggKCptX2N1cnJlbnRCcmVha0NvbnRleHQpIHsKLSAgICBjYXNlIEJyZWFr
Q29udGV4dDo6U3dpdGNoOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50
LCAiYnJlYWs7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCcmVha0NvbnRleHQ6Okxv
b3A6Ci0gICAgICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUp
OwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbV9pbmRlbnQs
ICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVlO1xuIiwKLSAg
ICAgICAgICAgIG1faW5kZW50LCAiYnJlYWs7XG4iCi0gICAgICAgICk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
Q29udGludWUmKQotewotICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFy
aWFibGUpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJicmVhaztcbiIp
OwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpFZmZlY3Rm
dWxFeHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmVmZmVjdGZ1bEV4cHJlc3Npb24oKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiW1tjbGFuZzo6ZmFsbHRocm91Z2hdXTtcbiIpOyAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgwOCBN
YWtlIHN1cmUgdGhpcyBpcyBva2F5LiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBkbyBub3RoaW5n
IGFuZCBqdXN0IHJldHVybiBoZXJlIGluc3RlYWQuCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjplbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb24gbG9vcENvbmRpdGlvbkxv
Y2F0aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNvbmRpdGlvbkV4cHJlc3Npb24sIEFTVDo6RXhwcmVz
c2lvbiogaW5jcmVtZW50LCBBU1Q6OlN0YXRlbWVudCYgYm9keSkKLXsKLSAgICBTZXRGb3JTY29w
ZTxzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+PiBsb29wVmFyaWFibGVTY29wZSht
X2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsIGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgIG1faW5kZW50
LCAiYm9vbCAiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gZmFs
c2U7XG4iLAotICAgICAgICBtX2luZGVudCwgIndoaWxlICh0cnVlKSB7XG4iCi0gICAgKTsKLSAg
ICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgd2hpbGVTY29wZShtX2luZGVudCk7Ci0KLSAg
ICAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246
OkJlZm9yZUJvZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgewotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2luZGVudCwgImlmICghKCIpOwot
ICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIikpXG4i
LAotICAgICAgICAgICAgICAgICIgICAgYnJlYWs7XG4iKTsKLSAgICAgICAgfQotCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkbyB7XG4iKTsKLSAgICAgICAgU2V0
Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJy
ZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6Okxvb3ApOwotCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluZGVudGF0aW9uU2NvcGUgZG9TY29wZShtX2luZGVudCk7Ci0gICAgICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX2luZGVudCwgIn0gd2hpbGUoZmFsc2UpOyBcbiIpOwotCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgImlmICgiLCAqbV9i
cmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKVxuIiwKLSAgICAgICAgICAgIG1f
aW5kZW50LCAiICAgIGJyZWFrO1xuIik7Ci0KLSAgICAgICAgaWYgKGluY3JlbWVudCkgewotICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKCIpOwotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCppbmNyZW1lbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKTtcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2Nh
dGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25kaXRpb25FeHBy
ZXNzaW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAgICAgICAgICAgICAgIiAgICBicmVh
aztcbiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCwgIn0gXG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGVtaXRMb29wKExvb3BD
b25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5LCAmZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSwg
bnVsbHB0ciwgZG9XaGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgZW1pdExv
b3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5LCAmd2hpbGVMb29wLmNvbmRpdGlv
bmFsKCksIG51bGxwdHIsIHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICB7Ci0gICAgICAgIEluZGVu
dGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
Zm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAgICAgICAgZW1pdExvb3AoTG9vcENvbmRpdGlv
bkxvY2F0aW9uOjpCZWZvcmVCb2R5LCBmb3JMb29wLmNvbmRpdGlvbigpLCBmb3JMb29wLmluY3Jl
bWVudCgpLCBmb3JMb29wLmJvZHkoKSk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV9pbmRlbnQsICJpZiAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlm
U3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikg
e1xuIik7Ci0KLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgaWZTY29wZShtX2luZGVu
dCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAg
IH0KLQotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9IGVsc2Uge1xuIik7Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluZGVudGF0aW9uU2NvcGUgZWxzZVNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19
Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0
dXJuU3RhdGVtZW50KQotewotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkgewotICAg
ICAgICBhdXRvIHRlbXBSZXR1cm5OYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7IAot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUocmV0dXJuU3RhdGVtZW50LnZhbHVlKCktPnJlc29sdmVkVHlwZSgpKSwg
JyAnLCB0ZW1wUmV0dXJuTmFtZSwgIiA9ICIpOyAKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIjtcbiIpOwotCi0gICAgICAgIGlmIChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZykgewotICAg
ICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsK
LSAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0UGFjayhtX3N0cmluZ0J1
aWxkZXIsIHRlbXBSZXR1cm5OYW1lLCB2YXJpYWJsZU5hbWUsIG1faW5kZW50KTsKLSAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm4gIiwgdmFyaWFibGVO
YW1lLCAiO1xuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgInJldHVybiAiLCB0ZW1wUmV0dXJuTmFtZSwgIjtcbiIpOwotICAg
IH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAicmV0dXJu
O1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3
aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJzd2l0Y2ggKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0
Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7Iik7
Ci0KLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc3dpdGNoU2NvcGUobV9pbmRlbnQp
OwotICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNo
Q2FzZXMoKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLSAg
ICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQotCi12
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0
Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImNhc2UgIik7Ci0gICAgICAgIGVtaXRDb25zdGFu
dEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIjpcbiIpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCAiZGVmYXVsdDpcbiIpOwotICAgIFNldEZvclNjb3BlPHN0ZDo6
b3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4
dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hD
YXNlLmJsb2NrKCkpOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1ODEyIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRvIGJyZWFrIG9y
IGZhbGx0aHJvdWdoLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJ
bnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaW50ZWdlckxpdGVyYWwucmVzb2x2
ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1h
bmdsZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIikiKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBl
TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh1bnNpZ25lZEludGVnZXJMaXRl
cmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFs
dWUoKSwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29sdmVk
VHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtYW5n
bGVkVHlwZU5hbWUsICI+KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9v
bGVhbkxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4o
IiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsICIpIik7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIEFTU0VSVChlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgIEFTU0VS
VChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAg
IGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVz
c2lvbik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Okds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBN
YW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFuZ2xlZEZpZWxkTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5z
dHJ1Y3RGaWVsZCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKS0+IiwgbWFuZ2xlZEZpZWxkTmFtZSk7Ci19Ci0KLXZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4
cHJlc3Npb24pCi17Ci0gICAgYXV0byYgdHlwZSA9IGRvdEV4cHJlc3Npb24uYmFzZSgpLnJlc29s
dmVkVHlwZSgpLnVuaWZ5Tm9kZSgpOwotCi0gICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25j
YXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSk7Ci0gICAgICAgIGF1dG8qIHN0cnVj
dHVyZUVsZW1lbnQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLmZpbmQoZG90RXhwcmVzc2lvbi5maWVs
ZE5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgYXV0
byBlbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVu
dCgqc3RydWN0dXJlRWxlbWVudCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLiIsIGVsZW1lbnROYW1lKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgPSBkb3RFeHByZXNzaW9uLmZpZWxk
TmFtZSgpOwotICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImxlbmd0aCIgJiYgKGlzPEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKSB8fCBpczxBU1Q6OkFycmF5VHlwZT4odHlwZSkgfHwg
KGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkpKSB7Ci0gICAgICAgICAgICBp
ZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKS5sZW5ndGgiKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8QVNU
OjpBcnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNz
aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAi
LCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkubnVtRWxlbWVudHMoKSwgIikiKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9u
LmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBk
b3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkudmVjdG9yU2l6ZSgpLCAi
KSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
dEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IikuIiwgZWxlbWVudE5hbWUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVz
c2lvbikKLXsKLSAgICBhdXRvJiB0eXBlID0gaW5kZXhFeHByZXNzaW9uLmJhc2UoKS5yZXNvbHZl
ZFR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KHR5cGUpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCIpLnBvaW50ZXJbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKSA8ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlu
ZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
Lmxlbmd0aCA/ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9u
LmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIDog
MF0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkgewotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKS5kYXRhKClbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNz
aW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
KSA8ICIsIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS5udW1FbGVtZW50cygpLCAiID8g
Iik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHBy
ZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAwXSIpOwotICAg
IH0gZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpKSB7Ci0gICAg
ICAgIGF1dG8mIG5hdGl2ZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4odHlwZSk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemU7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBl
LmlzTWF0cml4KCkpCi0gICAgICAgICAgICBzaXplID0gbmF0aXZlVHlwZS5udW1iZXJPZk1hdHJp
eENvbHVtbnMoKTsKLSAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZS5pc1ZlY3RvcigpKQotICAg
ICAgICAgICAgc2l6ZSA9IG5hdGl2ZVR5cGUudmVjdG9yU2l6ZSgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4
RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpWygi
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJl
c3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA8ICIsIHNpemUsICIp
ID8gKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4
RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA6IDBdIik7
Ci0gICAgfSBlbHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IAotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIEFTU0VSVCh2YXJpYWJsZURlY2xh
cmF0aW9uLnR5cGUoKSk7Ci0gICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgm
dmFyaWFibGVEZWNsYXJhdGlvbiwgdmFyaWFibGVOYW1lKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBxdWFsaWZpZXJz
LgotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5p
bml0aWFsaXplcigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAn
ICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgfTtcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4
cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAoIik7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQot
ewotICAgIGF1dG8gaXRlciA9IG1faG9pc3RlZFZhcmlhYmxlcy5maW5kKCZjYWxsRXhwcmVzc2lv
bik7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZW5kKCkp
OwotICAgIGF1dG8mIHZhcmlhYmxlcyA9IGl0ZXItPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSA8PSB2YXJpYWJsZXMuc2l6ZSgpKTsK
LSAgICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gYXJndW1lbnROYW1lczsKLQotICAgIE1h
bmdsZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZTsKLSAgICBpZiAoIW1hdGNoZXMoY2FsbEV4cHJl
c3Npb24ucmVzb2x2ZWRUeXBlKCksIG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkKLSAgICAgICAg
cmVzdWx0TmFtZSA9IHZhcmlhYmxlcy5sYXN0KCkubmFtZTsKLQotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJygnKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxFeHByZXNzaW9u
LmFyZ3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGFyZ3VtZW50TmFtZXMuYXBwZW5k
KHZhcmlhYmxlc1tpXS5uYW1lKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJp
YWJsZXNbaV0ubmFtZSwgIiA9ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxF
eHByZXNzaW9uLmFyZ3VtZW50cygpW2ldKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSwgIik7Ci0gICAgfQotCi0gICAgaWYgKGlzPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpIHsKLSAgICAgICAgaW5saW5lTmF0aXZl
RnVuY3Rpb24obV9zdHJpbmdCdWlsZGVyLCBkb3duY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpLCBhcmd1bWVudE5hbWVzLCByZXN1
bHROYW1lLCBtX3R5cGVOYW1lcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwot
ICAgICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
dmFyaWFibGVzW2ldLm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJyknKTsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19
Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVz
c2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24g
OiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAgIGlmIChyYW5PbmNlKQotICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgcmFuT25jZSA9IHRy
dWU7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uKTsKLSAgICB9Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhw
cmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIqKCIpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKLXsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIoKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyknKTsKLQotICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7Ci0gICAgY2Fz
ZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkxvZ2lj
YWxFeHByZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
IHx8ICIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0
KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikpIik7Ci19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dp
Y2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIhKCIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0
byBiZSBtYWRlIHRvIHdvcmsuIEl0IHByb2JhYmx5IHNob3VsZCBiZSB1c2luZyB0aGUgbGFzdCBs
ZWZ0VmFsdWUgdG9vLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTg4MzgKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgp
KTsKLSAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICJ7ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6
OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNv
bHZlZFR5cGUoKSkpIHsKLSAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpB
cnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2
ZWRUeXBlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFt
ZSwgIiB7ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ii5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH0iKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgIiB7ICYi
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24ubGVmdFZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIDEgfSIp
OwotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiJigiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBv
aW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkKLXsKLSAgICAvKgotICAg
ICAqICAxLiBFdmFsdWF0ZSBtX2xlZnRWYWx1ZQotICAgICAqICAyLiBBc3NpZ24gdGhlIHJlc3Vs
dCB0byBtX29sZFZhbHVlCi0gICAgICogIDMuIEV2YWx1YXRlIG1fbmV3VmFsdWVFeHByZXNzaW9u
Ci0gICAgICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAgICAgKiAgNS4g
QXNzaWduIHRoZSByZXN1bHQgdG8gbV9sZWZ0VmFsdWUKLSAgICAgKiAgNi4gRXZhbHVhdGUgbV9y
ZXN1bHRFeHByZXNzaW9uCi0gICAgICogIDcuIFJldHVybiB0aGUgcmVzdWx0Ci0gICAgICovCi0K
LSAgICBhdXRvIGl0ZXIgPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZmluZCgmcmVhZE1vZGlmeVdyaXRl
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1faG9pc3RlZFZhcmlhYmxlcy5lbmQoKSk7
Ci0gICAgYXV0byYgdmFyaWFibGVzID0gaXRlci0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
dmFyaWFibGVzLnNpemUoKSA9PSAyKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgb2xkVmFs
dWVWYXJpYWJsZSA9IHZhcmlhYmxlc1swXS5uYW1lOwotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUg
bmV3VmFsdWVWYXJpYWJsZSA9IHZhcmlhYmxlc1sxXS5uYW1lOwotCi0gICAgbV92YXJpYWJsZU1h
cHBpbmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWUoKSwgb2xkVmFsdWVWYXJpYWJsZSk7
Ci0gICAgbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWUoKSwg
bmV3VmFsdWVWYXJpYWJsZSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0K
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG9sZFZhbHVlVmFyaWFibGUsICIgPSAiKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKTsKLQotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgbmV3VmFsdWVWYXJpYWJsZSwgIiA9ICIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVFeHByZXNzaW9u
KCkpOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgPSAiLCBuZXdWYWx1ZVZhcmlhYmxlLCAiLCAiKTsKLQotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHRlcm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpID8gKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5i
b2R5RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogKCIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigp
KTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJl
ZmVyZW5jZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVu
Y2UudmFyaWFibGUoKSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFibGVNYXBwaW5n
LmVuZCgpKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lID0gaXRlcmF0
b3ItPnZhbHVlOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFyaWFibGVOYW1lKTsKLX0K
LQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRDb25zdGFudEV4cHJlc3Npb25T
dHJpbmcoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKLXsKLSAg
ICBjb25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgWyZd
KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICB9LAot
ICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHVuc2lnbmVkSW50
ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkZsb2F0
TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKGZsb2F0TGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6
Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgICAgICBpZiAoYm9vbGVh
bkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ0cnVlIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiZmFsc2UiKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9u
KCkpOwotICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JF
bnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVt
YmVyKCkpKTsKLSAgICAgICAgfQotICAgICkpOwotfQotCi1jbGFzcyBSZW5kZXJGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsK
LXB1YmxpYzoKLSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBl
TmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9u
TmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRT
ZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotICAgICAgICA6IEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcihzdHJpbmdCdWlsZGVyLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGlu
ZywgbGF5b3V0KQotICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZNb3ZlKG1hdGNoZWRT
ZW1hbnRpY3MpKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBNYXRjaGVkUmVuZGVyU2VtYW50
aWNzIG1fbWF0Y2hlZFNlbWFudGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50
U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRp
b24pCi17Ci0gICAgYXV0byBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhpc10oKSAtPiBN
YW5nbGVkVmFyaWFibGVOYW1lIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSgpOwotICAgIH07Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmlu
c2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBv
aW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9s
YXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50
aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlv
biA9PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
UmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSks
IG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLWNsYXNzIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZmlu
YWwgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKLXB1YmxpYzoKLSAgICBDb21w
dXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1h
cHBpbmcsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0
JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxk
ZXIsIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlvdXQpCi0gICAg
ICAgICwgbV9tYXRjaGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGljcykpCi0gICAg
ewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZm
b2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mKSBvdmVycmlkZTsKLQotICAgIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIG1fbWF0Y2hlZFNl
bWFudGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENv
bXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
ZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1
dG8gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gTWFuZ2xlZFZhcmlhYmxl
TmFtZSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsK
LSAgICB9OwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGlj
cy5zaGFkZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwg
bV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJl
c291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4gZ2VuZXJhdGVNZXRhbEZ1bmN0aW9uc01h
cHBpbmcoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICB1bnNpZ25lZCBudW1GdW5jdGlvbnMgPSAw
OwotICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9u
TmFtZT4gZnVuY3Rpb25NYXBwaW5nOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9u
IDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBmdW5jdGlvbk1hcHBpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24sIE1hbmdsZWRGdW5j
dGlvbk5hbWUgeyBudW1GdW5jdGlvbnMrKyB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZnVuY3Rp
b25NYXBwaW5nOwotfQotCi1zdGF0aWMgdm9pZCBlbWl0U2hhcmVkTWV0YWxGdW5jdGlvbnMoU3Ry
aW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0
eXBlTmFtZXIsIGNvbnN0IEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4mIHJlYWNo
YWJsZUZ1bmN0aW9ucywgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVk
RnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotewotICAgIGZvciAoYXV0byYgZnVuY3Rp
b25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAg
aWYgKCFmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkgJiYgcmVhY2hhYmxlRnVu
Y3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAgICAgZGVjbGFy
ZUZ1bmN0aW9uKHN0cmluZ0J1aWxkZXIsIGZ1bmN0aW9uRGVmaW5pdGlvbiwgdHlwZU5hbWVyLCBm
dW5jdGlvbk1hcHBpbmcpOwotICAgIH0KLQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicp
OwotfQotCi1jbGFzcyBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciBmaW5hbCA6IHB1YmxpYyBW
aXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biYgZnVuY3Rpb25EZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAg
ICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQo
ZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxF
eHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0
b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJl
c3Npb24uZnVuY3Rpb24oKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhw
cmVzc2lvbi5mdW5jdGlvbigpKSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qPiB0YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGTW92ZSht
X3JlYWNoYWJsZUZ1bmN0aW9ucyk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOwotfTsKLQotUmVuZGVyTWV0
YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgTWF0
Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQot
ewotICAgIGF1dG8mIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSAqbWF0Y2hlZFNlbWFudGljcy52
ZXJ0ZXhTaGFkZXI7Ci0gICAgYXV0byogZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID0gbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcjsKLQotICAgIFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhl
cmVyIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyOwotICAgIHJlYWNoYWJsZUZ1bmN0aW9uc0dh
dGhlcmVyLlZpc2l0b3I6OnZpc2l0KHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlmIChm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnQpCi0gICAgICAgIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhl
cmVyLlZpc2l0b3I6OnZpc2l0KCpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGF1dG8g
cmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIudGFrZVJlYWNo
YWJsZUZ1bmN0aW9ucygpOwotCi0gICAgYXV0byBmdW5jdGlvbk1hcHBpbmcgPSBnZW5lcmF0ZU1l
dGFsRnVuY3Rpb25zTWFwcGluZyhwcm9ncmFtKTsKLSAgICAKLSAgICBlbWl0U2hhcmVkTWV0YWxG
dW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFjaGFibGVGdW5j
dGlvbnMsIGZ1bmN0aW9uTWFwcGluZyk7Ci0KLSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0uaW50
cmluc2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2Vt
YW50aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmIChyZWFjaGFibGVGdW5j
dGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAgICBmdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50KSwg
ZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID8gZnVuY3Rpb25NYXBwaW5nLmdldChmcmFnbWVudFNo
YWRlckVudHJ5UG9pbnQpIDogTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IDAgfSB9OwotfQotCi1Db21w
dXRlTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1l
ciwgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxh
eW91dCkKLXsKLSAgICBhdXRvJiBlbnRyeVBvaW50ID0gKm1hdGNoZWRTZW1hbnRpY3Muc2hhZGVy
OwotCi0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVhY2hhYmxlRnVuY3Rpb25zR2F0
aGVyZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6dmlzaXQoZW50
cnlQb2ludCk7Ci0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVGdW5jdGlv
bnNHYXRoZXJlci50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9u
TWFwcGluZyA9IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBwaW5nKHByb2dyYW0pOwotICAgIGVt
aXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIs
IHJlYWNoYWJsZUZ1bmN0aW9ucywgZnVuY3Rpb25NYXBwaW5nKTsKLQotICAgIENvbXB1dGVGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxk
ZXIsIHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgV1RG
TW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
RGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlm
IChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAg
ICAgICAgICBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZlbnRyeVBvaW50
KSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU0NDkzOWYxNjE2ZThlMTIzYjU5ZTNlNzgwYjVmOTY2OTQ3MDg4MzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNp
bmNsdWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBNZXRhbCB7
Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotc3RydWN0IFJlbmRlck1ldGFsRnVuY3Rpb25FbnRyeVBv
aW50cyB7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50cnlQb2ludE5h
bWU7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFt
ZTsKLX07Ci1SZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25z
KFN0cmluZ0J1aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZFJlbmRlclNlbWFu
dGljcyYmLCBMYXlvdXQmKTsKLQotc3RydWN0IENvbXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2lu
dHMgewotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotfTsK
LUNvbXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmlu
Z0J1aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3Mm
JiwgTGF5b3V0Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xNYW5nbGVkTmFtZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGI2MDRlZDczZTAyNzM4NjEzZGM2ZGNiYjNjNDU4MzRjMjJkZTllYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0cnVjdCBNYW5nbGVkVmFyaWFi
bGVOYW1lIHsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFs
dWUgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0gICAgdW5zaWdu
ZWQgdmFsdWUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ2YXJpYWJsZSI7Ci19OwotCi1z
dHJ1Y3QgTWFuZ2xlZFR5cGVOYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ0eXBlIjsKLX07Ci0KLXN0cnVjdCBNYW5n
bGVkU3RydWN0dXJlRWxlbWVudE5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gInN0cnVjdHVyZUVsZW1lbnQiOwotfTsK
LQotc3RydWN0IE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgewotICAgIHVuc2lnbmVkIHZh
bHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gImVudW1lcmF0
aW9uTWVtYmVyIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVkRnVuY3Rpb25OYW1lIHsKLSAgICB1bnNp
Z25lZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJm
dW5jdGlvbiI7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3Ry
aW5nKHByZWZpeCwgdmFsdWUpOyB9Ci19OwotCi11c2luZyBNYW5nbGVkT3JOYXRpdmVUeXBlTmFt
ZSA9IFZhcmlhbnQ8TWFuZ2xlZFR5cGVOYW1lLCBTdHJpbmc+OwotCi19IC8vIG5hbWVzcGFjZSBN
ZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYW5nbGVkTmFtZVR5cGU+Ci1j
bGFzcyBNYW5nbGVkTmFtZUFkYXB0b3IgewotcHVibGljOgotICAgIE1hbmdsZWROYW1lQWRhcHRv
cihNYW5nbGVkTmFtZVR5cGUgbmFtZSkKLSAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KLSAgICB7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gc3RybGVuKE1hbmdsZWRO
YW1lVHlwZTo6cHJlZml4KSArIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKG1fbmFtZS52YWx1ZSk7
IH0KLSAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRp
b24pCi0gICAgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlv
biwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KE1hbmdsZWROYW1lVHlwZTo6cHJlZml4
KSwgc3RybGVuKE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSk7Ci0gICAgICAgIHdyaXRlSW50ZWdl
clRvQnVmZmVyKG1fbmFtZS52YWx1ZSwgZGVzdGluYXRpb24gKyBzdHJsZW4oTWFuZ2xlZE5hbWVU
eXBlOjpwcmVmaXgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWFuZ2xlZE5hbWVUeXBlIG1f
bmFtZTsKLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVk
TmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lPiB7
Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkVmFyaWFibGVOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5h
bWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVy
PFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lLCB2b2lkPiA6IHB1YmxpYyBN
YW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU+
IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRUeXBlTmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1l
KQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSwgdm9pZD4g
OiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFN0cnVjdHVyZUVsZW1lbnROYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbmFtZSkK
LSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLXRl
bXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVkTmFtZUFk
YXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1l
PiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFs
OjpNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5h
bWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmlu
Z1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSwg
dm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
TWFuZ2xlZEZ1bmN0aW9uTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBuYW1lKQotICAgICAgICA6
IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+
IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9y
TmF0aXZlVHlwZU5hbWUsIHZvaWQ+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihj
b25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lJiBuYW1l
KQotICAgICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9uYW1lLAot
ICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBl
TmFtZSYgbWFuZ2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmxlbihX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSArIGxlbmd0aE9m
SW50ZWdlckFzU3RyaW5nKG1hbmdsZWRUeXBlTmFtZS52YWx1ZSk7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAg
IHJldHVybiBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAg
fQotCi0gICAgYm9vbCBpczhCaXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9uYW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRUeXBlTmFtZSYpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBXVEY6
OnN3aXRjaE9uKG1fbmFtZSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUmIG1hbmdsZWRUeXBlTmFtZSkgewotICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6
OnByZWZpeCksIHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6
cHJlZml4KSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIobWFuZ2xlZFR5
cGVOYW1lLnZhbHVlLCBkZXN0aW5hdGlvbiArIHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
WyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcg
eyBzdHJpbmcgfS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG1fbmFtZTsKLX07Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TWV0YWxDb2RlR2VuZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhh
ZmViZGE1NmQ2ZDY3MzAxOGQ4MzFhZjY0MzJmMzdkMTYxN2IyMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbldyaXRlci5oIgotI2luY2x1ZGUgIldITFNM
VHlwZU5hbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBN
ZXRhbENvZGUgPSBmYWxzZTsKLQotc3RhdGljIFN0cmluZ1ZpZXcgbWV0YWxDb2RlUHJvbG9ndWUo
KQotewotICAgIHJldHVybiBTdHJpbmdWaWV3IHsKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9z
dGRsaWI+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIgotICAgICAgICAi
I2luY2x1ZGUgPG1ldGFsX21hdGg+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfcmVsYXRp
b25hbD5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIgotICAgICAgICAi
I2luY2x1ZGUgPG1ldGFsX3RleHR1cmU+XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInVzaW5n
IG5hbWVzcGFjZSBtZXRhbDtcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidGVtcGxhdGUgPHR5
cGVuYW1lIFQsIGludCBDb2xzLCBpbnQgUm93cz5cbiIKLSAgICAgICAgInN0cnVjdCBXU0xNYXRy
aXhcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM8VCwgUm93cz4gY29sdW1uc1tD
b2xzXTtcbiIKLSAgICAgICAgIiAgICBwcml2YXRlOlxuIgotICAgICAgICAiICAgIHB1YmxpYzpc
biIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgdGhyZWFkID0gZGVmYXVsdDtcbiIK
LSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgot
ICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkIFdTTE1hdHJpeDxULCBD
b2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxp
bmUgV1NMTWF0cml4KGNvbnN0IGRldmljZSBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQp
IHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25z
dCBjb25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1
bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWRncm91cCBX
U0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAg
ICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWQgV1NMTWF0cml4PFQsIENvbHMs
IFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5l
IFdTTE1hdHJpeChjb25zdCBkZXZpY2UgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSBj
b25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25z
dCBjb25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVm
YXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZGdyb3Vw
IFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgot
ICAgICAgICAiICAgIHB1YmxpYzpcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgdGhyZWFkIHZlYzxU
LCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgdGhyZWFkXG4iCi0gICAgICAgICIgICAge1xuIgot
ICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4i
Ci0gICAgICAgICIgICAgaW5saW5lIGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50
IHIpIGRldmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJu
IGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSB0
aHJlYWRncm91cCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIHRocmVhZGdyb3VwXG4i
Ci0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtc
biIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0IHRocmVhZCB2
ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNvbnN0IHRocmVhZFxuIgotICAgICAgICAi
ICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAg
ICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBjb25zdCBkZXZpY2UgdmVjPFQsIFJvd3M+
ICZvcGVyYXRvcltdKGludCByKSBjb25zdCBkZXZpY2VcbiIKLSAgICAgICAgIiAgICB7XG4iCi0g
ICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIK
LSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgY29uc3RhbnQgdmVjPFQsIFJvd3M+ICZvcGVyYXRv
cltdKGludCByKSBjb25zdCBjb25zdGFudFxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAg
IiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAg
ICAiICAgIGlubGluZSBjb25zdCB0aHJlYWRncm91cCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10o
aW50IHIpIGNvbnN0IHRocmVhZGdyb3VwXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAi
ICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAg
ICJ9O1xuIgotCi0KLSAgICB9OwotCi19Ci0KLXN0YXRpYyB2b2lkIGR1bXBNZXRhbENvZGVJZk5l
ZWRlZChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIGlmIChkdW1wTWV0YWxD
b2RlKSB7Ci0gICAgICAgIGRhdGFMb2dMbigiR2VuZXJhdGVkIE1ldGFsIGNvZGU6ICIpOwotICAg
ICAgICBkYXRhTG9nTG4oc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9Ci19Ci0KLVJl
bmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9ncmFtLCBNYXRjaGVk
UmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0g
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ldGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlwZU5hbWVyIHR5cGVOYW1lcihwcm9ncmFt
KTsKLSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMoc3RyaW5nQnVpbGRlcik7Ci0gICAgCi0g
ICAgYXV0byBtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgPSBNZXRhbDo6ZW1pdE1ldGFsRnVuY3Rp
b25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgV1RGTW92ZShtYXRjaGVkU2Vt
YW50aWNzKSwgbGF5b3V0KTsKLQotICAgIGR1bXBNZXRhbENvZGVJZk5lZWRlZChzdHJpbmdCdWls
ZGVyKTsKLQotICAgIHJldHVybiB7IFdURk1vdmUoc3RyaW5nQnVpbGRlciksIFdURk1vdmUobWV0
YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSksIFdURk1v
dmUobWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1l
KSB9OwotfQotCi1Db21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHBy
b2dyYW0sIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0
JiBsYXlvdXQpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ldGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlwZU5hbWVyIHR5
cGVOYW1lcihwcm9ncmFtKTsKLSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMoc3RyaW5nQnVp
bGRlcik7Ci0KLSAgICBhdXRvIG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyA9IE1ldGFsOjplbWl0
TWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCBXVEZNb3Zl
KG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotCi0gICAgZHVtcE1ldGFsQ29kZUlmTmVlZGVk
KHN0cmluZ0J1aWxkZXIpOwotCi0gICAgcmV0dXJuIHsgV1RGTW92ZShzdHJpbmdCdWlsZGVyKSwg
V1RGTW92ZShtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMubWFuZ2xlZEVudHJ5UG9pbnROYW1lKSB9
OwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xNZXRhbENvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNjNDg3NjE3Y2I5MDVhZTJlYjA2OTQwYTE3NGU0MDk1ODJiOGMzYmIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVz
LmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExT
TFNlbWFudGljTWF0Y2hlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9n
cmFtOwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdHJ1Y3QgUmVuZGVyTWV0YWxDb2RlIHsKLSAg
ICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFu
Z2xlZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xl
ZEZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotLy8gQ2FuJ3QgZmFpbC4gQW55IGZhaWx1cmUg
Y2hlY2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJsaWVyLCBpbiB0aGUgYmFja2VuZC1hZ25vc3RpYyBw
YXJ0IG9mIHRoZSBjb21waWxlci4KLVJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQ
cm9ncmFtJiwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91
dCYpOwotCi1zdHJ1Y3QgQ29tcHV0ZU1ldGFsQ29kZSB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRh
bFNvdXJjZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsK
LX07Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3MgbmVlZCB0byBiZSBkb25lIGVh
cmxpZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2YgdGhlIGNvbXBpbGVyLgotQ29t
cHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiwgTWF0Y2hlZENvbXB1dGVT
ZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmKTsKLQotfQotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVGdW5jdGlvbldyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZDJj
OGE4N2JjNjdjOWZlNjJjZTNlNjQ0YTY2NGE4NjRjNDY1ZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldITFNMQWRk
cmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgot
I2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVk
ZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0
aWMgU3RyaW5nIG1hcEZ1bmN0aW9uTmFtZShTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBp
ZiAoZnVuY3Rpb25OYW1lID09ICJkZHgiKQotICAgICAgICByZXR1cm4gImRmZHgiX3N0cjsKLSAg
ICBpZiAoZnVuY3Rpb25OYW1lID09ICJkZHkiKQotICAgICAgICByZXR1cm4gImRmZHkiX3N0cjsK
LSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJhc2ludCIpCi0gICAgICAgIHJldHVybiAiYXNfdHlw
ZTxpbnQzMl90PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFzdWludCIpCi0gICAg
ICAgIHJldHVybiAiYXNfdHlwZTx1aW50MzJfdD4iX3N0cjsKLSAgICBpZiAoZnVuY3Rpb25OYW1l
ID09ICJhc2Zsb2F0IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGZsb2F0PiJfc3RyOwotICAg
IHJldHVybiBmdW5jdGlvbk5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYXRvbWljTmFtZShTdHJp
bmcgaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0ID09ICJBZGQiKQotICAgICAgICByZXR1cm4gImZl
dGNoX2FkZCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiQW5kIikKLSAgICAgICAgcmV0dXJuICJm
ZXRjaF9hbmQiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIkV4Y2hhbmdlIikKLSAgICAgICAgcmV0
dXJuICJleGNoYW5nZSJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiTWF4IikKLSAgICAgICAgcmV0
dXJuICJmZXRjaF9tYXgiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk1pbiIpCi0gICAgICAgIHJl
dHVybiAiZmV0Y2hfbWluIl9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJPciIpCi0gICAgICAgIHJl
dHVybiAiZmV0Y2hfb3IiX3N0cjsKLSAgICBBU1NFUlQoaW5wdXQgPT0gIlhvciIpOwotICAgICAg
ICByZXR1cm4gImZldGNoX3hvciJfc3RyOwotfQotCi1zdGF0aWMgaW50IHZlY3Rvckxlbmd0aChB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAg
IGludCB2ZWN0b3JMZW5ndGggPSAxOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5
cGVBcmd1bWVudHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBBU1NFUlQoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgICAgICB2ZWN0b3JMZW5ndGggPSBX
VEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5
cGVBcmd1bWVudHMoKVsxXSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLSAgICBy
ZXR1cm4gdmVjdG9yTGVuZ3RoOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogdmVjdG9yU3VmZml4
KGludCB2ZWN0b3JMZW5ndGgpCi17Ci0gICAgc3dpdGNoICh2ZWN0b3JMZW5ndGgpIHsKLSAgICBj
YXNlIDE6Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiAi
MiI7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gIjMiOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGggPT0gNCk7Ci0gICAgICAgIHJldHVybiAiNCI7Ci0gICAg
fQotfQotCi1lbnVtIGNsYXNzIFNhbXBsZVR5cGUgewotICAgIFNhbXBsZSwKLSAgICBTYW1wbGVM
ZXZlbCwKLSAgICBTYW1wbGVCaWFzLAotICAgIFNhbXBsZUdyYWQKLX07Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUpCi17Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlIikKLSAgICAgICAgcmV0dXJu
IFNhbXBsZVR5cGU6OlNhbXBsZTsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVMZXZl
bCIpCi0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDsKLSAgICBpZiAoZnVu
Y3Rpb25OYW1lID09ICJTYW1wbGVCaWFzIikKLSAgICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNh
bXBsZUJpYXM7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlR3JhZCIpCi0gICAgICAg
IHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIGFyZ3MsIE1hbmdsZWRW
YXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIpCi17Ci0gICAgYXV0
byBhc01hdHJpeFR5cGUgPSBbJl0gKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSAtPiBB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAgICBhdXRvJiByZWFsVHlwZSA9IHVu
bmFtZWRUeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIXJlYWxUeXBlLmlzTmF0aXZlVHlw
ZURlY2xhcmF0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBh
dXRvJiBtYXliZU1hdHJpeFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4ocmVhbFR5cGUpOwotICAgICAgICBpZiAobWF5YmVNYXRyaXhUeXBlLmlzTWF0cml4KCkpCi0g
ICAgICAgICAgICByZXR1cm4gJm1heWJlTWF0cml4VHlwZTsKLQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9OwotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaXNDYXN0
KCkpIHsKLSAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpOwotICAgICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZU5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUpOwotCi0gICAgICAgIGlmICghbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVOYW1lLCAiIHsgfSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBhdXRvJiBwYXJh
bWV0ZXJUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50
eXBlKCk7Ci0KLSAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRlZmluaXRpb24gPSBbXSAo
YXV0byYgdHlwZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBpczxBU1Q6Ok5hbWVkVHlwZT4o
dHlwZSkgJiYgaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYXV0byYgdW5pZmll
ZFJldHVyblR5cGUgPSByZXR1cm5UeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGlz
RW51bWVyYXRpb25EZWZpbml0aW9uKHVuaWZpZWRSZXR1cm5UeXBlKSAmJiAhaXNFbnVtZXJhdGlv
bkRlZmluaXRpb24ocGFyYW1ldGVyVHlwZS51bmlmeU5vZGUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZpZWRSZXR1cm5UeXBlKSk7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1l
dGFsUmV0dXJuVHlwZU5hbWUsICI+KCgiKTsKLSAgICAgICAgICAgICAgICBib29sIGxvb3BlZE9u
Y2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBib29sIGhhc1plcm9DYXNlID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24u
ZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3BlZE9u
Y2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIHx8ICIp
OwotICAgICAgICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMF0sICIg
PT0gIiwgbWVtYmVyLmdldCgpLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBsb29wZWRP
bmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwotCi0gICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIikgPyAiLCBhcmdzWzBdLCAiIDogMCkiKTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwi
LCBtZXRhbFJldHVyblR5cGVOYW1lLCAiPigiLCBhcmdzWzBdLCAiKSIpOwotCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFz
TWF0cml4VHlwZShyZXR1cm5UeXBlKSkgewotICAgICAgICAgICAgLy8gV2UncmUgZWl0aGVyIGNv
bnN0cnVjdGluZyB3aXRoIGFsbCBpbmRpdmlkdWFsIGVsZW1lbnRzLCBvciB3aXRoCi0gICAgICAg
ICAgICAvLyB2ZWN0b3JzIGZvciBlYWNoIGNvbHVtbi4KLQotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGlmIChhcmdzLnNpemUoKSA9PSBtYXRyaXhU
eXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSkgewotICAgICAgICAgICAgICAgIC8vIENvbnN0
cnVjdGluZyB3aXRoIHZlY3RvcnMgZm9yIGVhY2ggY29sdW1uLgotICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHRO
YW1lLCAiLmNvbHVtbnNbIiwgaSwgIl0gPSAiLCBhcmdzW2ldKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGluZyB3
aXRoIGFsbCBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmdzLnNp
emUoKSA9PSBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSAqIG1hdHJpeFR5cGUt
Pm51bWJlck9mTWF0cml4Um93cygpKTsKLQotICAgICAgICAgICAgICAgIHNpemVfdCBhcmdOdW1i
ZXIgPSAwOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0cml4VHlw
ZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpOyAr
K2opIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdOdW1iZXIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAiLmNvbHVtbnNb
IiwgaSwgIl1bIiwgaiwgIl0gPSAiLCBhcmdzW2FyZ051bWJlcl0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgKythcmdOdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVOYW1lLCAnKCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoYXJnc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLmlzT3BlcmF0b3IoKSkgewotICAgICAgICBhdXRvIG9wZXJh
dG9yTmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygib3Bl
cmF0b3IiX3N0ci5sZW5ndGgoKSk7Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlz
IG9rIHRvIGRvIHNpbmNlIHRoZSBhcmdzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIGFsbCB0ZW1wcy4K
LSAgICAgICAgICAgIC8vIFNvIHRoaW5ncyBsaWtlICsrIGFuZCAtLSBhcmUgb2sgdG8gZG8uCi0K
LSAgICAgICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSkgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVz
dWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIG9wZXJhdG9yTmFtZSwgYXJnc1swXSwgJ1snLCBpLCAn
XScpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3BlcmF0b3JOYW1lLCBhcmdzWzBdKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIGlmIChh
dXRvKiBsZWZ0TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHJpZ2h0
TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKVsxXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8b3A+IG1hdHJp
eAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlZnRNYXRyaXgtPm51bWJlck9mTWF0cml4
Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIGFy
Z3NbMF0sICdbJywgaSwgIl0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICdbJywgaSwg
J10nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gbWF0cml4IDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJ1snLCBpLCAiXSAiLCBvcGVy
YXRvck5hbWUsICcgJywgYXJnc1sxXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYXV0byogcmlnaHRNYXRyaXggPSBhc01hdHJpeFR5
cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoIWFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwotICAgICAgICAgICAgLy8gc2NhbGFyIDxv
cD4gbWF0cml4Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJpZ2h0TWF0cml4LT5udW1iZXJPZk1hdHJp
eENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdzWzBdLCAnICcs
IG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnWycsIGksICddJyk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4gc2NhbGFyCi0g
ICAgICAgICAgICAvLyB2ZWN0b3IgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIC8vIHZlY3RvciA8
b3A+IHNjYWxhcgotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4gdmVjdG9yCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAnKCcsIGFyZ3NbMF0sICcg
Jywgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJjb3MiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJzaW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJ0YW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJh
Y29zIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXNp
biIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4i
Ci0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjb3NoIgot
ICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic2luaCIKLSAg
ICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRhbmgiCi0gICAg
ICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjZWlsIgotICAgICAg
ICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZXhwIgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvb3IiCi0gICAgICAgIHx8
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsb2ciCi0gICAgICAgIHx8IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJyb3VuZCIKLSAgICAgICAgfHwgbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRydW5jIgotICAgICAgICB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR4IgotICAgICAgICB8fCBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR5IgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNub3JtYWwiCi0gICAgICAgIHx8IG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJpc2Zpbml0ZSIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzaW5mIgotICAgICAgICB8fCBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNuYW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2ludCIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzdWludCIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzZmxvYXQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsZW5ndGgiKSB7Ci0gICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbWFwRnVuY3Rpb25OYW1lKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygnLCBhcmdzWzBdLCAnKScpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJwb3ciIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJh
dGFuMiIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAg
ICAgICAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgJygnLCBhcmdzWzBdLCAi
LCAiLCBhcmdzWzFdLCAnKScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjbGFtcCIpIHsKLSAgICAgICAgQVNT
RVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsK
LQotICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcoJyk7Ci0gICAgICAgICAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVt
bnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG1h
dHJpeFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpOyArK2opIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHJhbk9uY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgcmFuT25jZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0TmFtZSwgJ1snLCBpLCAiXVsiLCBqLCAiXSA9IGNsYW1wKCIsIGFyZ3NbMF0sICdb
JywgaSwgIl1bIiwgaiwgIl0sICIsIGFyZ3NbMV0sICdbJywgaSwgIl1bIiwgaiwgIl0sICIsIGFy
Z3NbMl0sICdbJywgaSwgIl1bIiwgaiwgIl0pIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFt
ZSwgIikiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgICAgICJjbGFtcCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAi
LCAiLCBhcmdzWzJdLCAnKScpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkFsbE1lbW9yeUJh
cnJpZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgIih0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2Rl
dmljZSksIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApLCB0
aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RleHR1cmUpKSIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJU
KCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJ0aHJlYWRncm91cF9iYXJyaWVy
KG1lbV9mbGFnczo6bWVtX2RldmljZSkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3JvdXBNZW1vcnlCYXJy
aWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICJ0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVh
ZGdyb3VwKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVybG9ja2VkIl9zdHIpKSB7Ci0g
ICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiSW50ZXJsb2Nr
ZWRDb21wYXJlRXhjaGFuZ2UiKSB7Ci0gICAgICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIihhdG9taWNfY29tcGFyZV9leGNoYW5n
ZV93ZWFrX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICYiLCBhcmdzWzFdLCAiLCAiLCBhcmdzWzJd
LCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpLCAiLAotICAg
ICAgICAgICAgICAgICcqJywgYXJnc1szXSwgIiA9ICIsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotICAgICAgICBhdXRvIG5hbWUg
PSBhdG9taWNOYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygi
SW50ZXJsb2NrZWQiX3N0ci5sZW5ndGgoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICcqJywgYXJnc1syXSwgIiA9IGF0b21pY18iLCBuYW1lLCAiX2V4cGxp
Y2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gc2FtcGxlVHlwZSA9IFdI
TFNMOjpNZXRhbDo6c2FtcGxlVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSkp
IHsKLSAgICAgICAgc2l6ZV90IGJhc2VBcmd1bWVudENvdW50ID0gMDsKLSAgICAgICAgc3dpdGNo
ICgqc2FtcGxlVHlwZSkgewotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZToKLSAgICAg
ICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gMzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6
OlNhbXBsZUJpYXM6Ci0gICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgotICAgICAg
ICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSA1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgKyAxKTsKLSAgICAgICAg
Ci0gICAgICAgIGF1dG8mIHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRv
JiBsb2NhdGlvblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpWzJdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gbG9jYXRpb25WZWN0
b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgobG9jYXRpb25UeXBlKTsKLSAgICAgICAgYXV0byYgcmV0
dXJuVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkudW5pZnlOb2Rl
KCkpKTsKLSAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgocmV0
dXJuVHlwZSk7Ci0KLSAgICAgICAgaW50IGFyZ3VtZW50SW5kZXggPSAwOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLnNhbXBsZSgiLCBhcmdzW2Fy
Z3VtZW50SW5kZXggKyAxXSwgIiwgIik7Ci0gICAgICAgIGFyZ3VtZW50SW5kZXggKz0gMjsKLQot
ICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbYXJndW1lbnRJbmRleF0s
ICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7
Ci0gICAgICAgICAgICArK2FyZ3VtZW50SW5kZXg7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4KytdKTsKLQotICAgICAg
ICBzd2l0Y2ggKCpzYW1wbGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxl
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlTGV2
ZWw6Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBsZXZlbCgiLCBhcmdzW2Fy
Z3VtZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
YW1wbGVUeXBlOjpTYW1wbGVCaWFzOgotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiwgYmlhcygiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgotICAgICAgICAgICAgaWYg
KHRleHR1cmVUeXBlLmlzQ3ViZVRleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCBncmFkaWVudGN1YmUoIiwgYXJnc1thcmd1bWVudEluZGV4XSwgIiwgIiwg
YXJnc1thcmd1bWVudEluZGV4ICsgMV0sICIpIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnQyZCgiLCBhcmdzW2FyZ3Vt
ZW50SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIikiKTsKLSAgICAgICAg
ICAgIGFyZ3VtZW50SW5kZXggKz0gMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSBiYXNlQXJndW1lbnRDb3VudCArIDEpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKSIpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkp
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIsICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkxvYWQiKSB7Ci0g
ICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMik7Ci0KLSAgICAgICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0g
ICAgICAgIGF1dG8mIGxvY2F0aW9uVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byBs
b2NhdGlvblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChsb2NhdGlvblR5cGUpOwotICAgICAg
ICBhdXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUo
KS51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9IHZlY3Rv
ckxlbmd0aChyZXR1cm5UeXBlKTsKLSAgICAgICAgYXV0byBsb2NhdGlvblR5cGVOYW1lID0gdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2NhdGlvblR5cGUpOwotCi0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcoJywgYXJnc1sxXSwgIiA9ICIpOwotICAgICAgICBpZiAodGV4dHVy
ZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVj
dG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiY2xhbXAo
IiwgYXJnc1sxXSwgIiwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygnKTsKLSAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnMCcpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIsIGxvY2F0aW9u
VHlwZU5hbWUsICcoJyk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3
aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkgLSAxIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAg
ICAgICAgICBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkgLSAxKSkiKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAiLCAwLCAi
LCBhcmdzWzBdLCAiLmdldF93aWR0aCgpIC0gMSkiKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAiLCAi
LCBsb2NhdGlvblR5cGVOYW1lLCAiKDAsIDAiKTsKLSAgICAgICAgICAgICAgICBpZiAobG9jYXRp
b25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgMCIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAi
LCBsb2NhdGlvblR5cGVOYW1lLCAnKCcsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkgLSAxLCAiLCBh
cmdzWzBdLCAiLmdldF9oZWlnaHQoKSAtIDEiKTsKLSAgICAgICAgICAgICAgICBpZiAobG9jYXRp
b25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSAtIDEiKTsKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbMF0sICIucmVhZCgiKTsK
LQotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAg
ICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDEpLCAnKCcsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25W
ZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1
YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzFdLCAnKScpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhU
ZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsICJ4eXp3Il9z
dHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKLSAgICAgICAgQVNT
RVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiYXRvbWljX2xvYWRf
ZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gInN0b3JlIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICJhdG9taWNfc3RvcmVfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgIiwg
YXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdldERp
bWVuc2lvbnMiKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0KLSAgICAg
ICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0KLSAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gMTsKLSAgICAgICAgYm9vbCBoYXNNaXBMZXZlbCA9ICF0ZXh0dXJlVHlwZS5pc1dyaXRh
YmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxOwotICAg
ICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICBjb25z
dCBNYW5nbGVkVmFyaWFibGVOYW1lJiB3aWR0aE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAg
KytpbmRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBoZWln
aHROYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpID49IDIp
IHsKLSAgICAgICAgICAgIGhlaWdodE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsr
aW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVO
YW1lPiBkZXB0aE5hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9u
KCkgPj0gMykgewotICAgICAgICAgICAgZGVwdGhOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAg
ICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZh
cmlhYmxlTmFtZT4gZWxlbWVudHNOYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0
dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgZWxlbWVudHNOYW1lID0gYXJnc1tpbmRleF07Ci0g
ICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFu
Z2xlZFZhcmlhYmxlTmFtZT4gbnVtYmVyT2ZMZXZlbHNOYW1lOwotICAgICAgICBpZiAoIXRleHR1
cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lv
bigpICE9IDEpIHsKLSAgICAgICAgICAgIG51bWJlck9mTGV2ZWxzTmFtZSA9IGFyZ3NbaW5kZXhd
OwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoaW5kZXgg
PT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLQotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICcqJywgd2lkdGhOYW1lLCAi
ID0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoIik7Ci0gICAgICAgIGlmIChoYXNNaXBMZXZlbCkK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAgICAgIGlmIChoZWlnaHROYW1lKSB7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKmhl
aWdodE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoIik7Ci0gICAgICAgICAgICBp
ZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJn
c1sxXSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChkZXB0aE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgICAgICIsICoiLCAqZGVwdGhOYW1lLCAiID0gIiwgYXJnc1swXSwg
Ii5nZXRfZGVwdGgoIik7Ci0gICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlbGVtZW50c05hbWUp
IHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIs
ICoiLCAqZWxlbWVudHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpIik7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG51bWJlck9mTGV2ZWxzTmFtZSkgewotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICpudW1iZXJP
ZkxldmVsc05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9udW1fbWlwX2xldmVscygpIik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJHYXRoZXIiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJHYXRoZXJSZWQiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJTYW1wbGVDbXAiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJTYW1wbGVDbXBMZXZlbFplcm8iKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxl
bWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJTdG9yZSIpIHsKLSAgICAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1w
bGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckFscGhhIikgewotICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQmx1ZSIp
IHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhl
ckNtcCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IkdhdGhlckNtcFJlZCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIkdhdGhlckdyZWVuIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIwODExMGFlNTliYWMwMTRjM2JiNTdkNDkwMDFlZTE0Mjc4MTE4ZWYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVk
TmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBJbnRyaW5zaWNzOwotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBUeXBlTmFt
ZXI7Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYsIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1l
PiYgYXJndW1lbnROYW1lcywgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXN1bHROYW1lLCBUeXBlTmFt
ZXImKTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhYTY4Y2JkMWVjZDVlYWM0YjlmYjM5ZWRjODY1OTliMTE1NTA3ZGM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVu
Y2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgTWV0YWwgewotCi1TdHJpbmcgd3JpdGVOYXRpdmVUeXBlKEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gInZvaWQiKQotICAgICAgICByZXR1cm4gInZvaWQiX3N0cjsK
LSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAg
IHJldHVybiAiYm9vbCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJ1aW50IikKLSAgICAgICAgcmV0dXJuICJ1aW50MzJfdCJfc3RyOwotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJpbnQiKQotICAgICAgICByZXR1cm4gImludDMy
X3QiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvYXQi
KQotICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImF0b21pY19pbnQiKQotICAgICAgICByZXR1cm4gImF0b21pY19pbnQi
X3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRvbWljX3Vp
bnQiKQotICAgICAgICByZXR1cm4gImF0b21pY191aW50Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNhbXBsZXIiKQotICAgICAgICByZXR1cm4gInNhbXBs
ZXIiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidmVjdG9y
IikgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KS5zaXplKCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50
cygpWzBdKSk7Ci0gICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNU
OjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsw
XSk7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHR5cGVSZWZlcmVuY2UtPnVuaWZ5Tm9kZSgp
OwotICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKTsKLSAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvIHByZWZpeCA9IChb
Jl0oKSAtPiBTdHJpbmcgewotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09
ICJib29sIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wiOwotICAgICAgICAgICAgaWYg
KHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJ1aW50IikKLSAgICAgICAgICAgICAgICByZXR1cm4g
InVpbnQiOwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJpbnQiKQot
ICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKLSAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0
ZXJUeXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwot
ICAgICAgICB9KSgpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KVsxXSkpOwotICAgICAgICBhdXRvJiBjb25zdGFudEV4cHJlc3Npb24gPSBXVEY6OmdldDxBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KVsxXSk7Ci0gICAgICAgIGF1dG8mIGludGVnZXJMaXRlcmFsID0gY29uc3RhbnRFeHByZXNzaW9u
LmludGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGF1dG8gc3VmZml4ID0gKFsmXSgpIC0+IFN0cmlu
ZyB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjIiX3N0cjsKLSAgICAgICAg
ICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjMiX3N0cjsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGludGVnZXJMaXRlcmFsLnZhbHVlKCkg
PT0gNCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICI0Il9zdHI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0pKCk7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwgc3VmZml4KTsK
LSAgICB9Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIm1hdHJpeCIp
IHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCku
c2l6ZSgpID09IDMpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KVswXSkpOwotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6
VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0p
OwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsK
LSAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSk7Ci0gICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byBwcmVmaXggPSAoWyZd
IHsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJU
eXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAg
ICAgICB9KSgpOwotCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJXU0xNYXRyaXg8IiwgcHJl
Zml4LCAiLCAiLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCks
ICIsICIsIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5udW1iZXJPZk1hdHJpeFJvd3MoKSwgIj4iKTsK
LSAgICB9Ci0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCku
c2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6
OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBd
KSk7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZl
cmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICBh
dXRvIHByZWZpeCA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4
dHVyZTFkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUxRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUxZCJfc3RyOwotICAg
ICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEQXJyYXki
KQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiKQotICAg
ICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyRCIpCi0gICAgICAgICAgICByZXR1
cm4gInRleHR1cmUyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiUldUZXh0dXJlMkQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmQiX3N0
cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUy
REFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9zdHI7Ci0gICAg
ICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5
IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9zdHI7Ci0gICAgICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlM0QiKQotICAgICAgICAg
ICAgcmV0dXJuICJ0ZXh0dXJlM2QiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVy
ZTNkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJU
ZXh0dXJlQ3ViZSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmVjdWJlIl9zdHI7Ci0gICAg
ICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGgyRCIp
Ci0gICAgICAgICAgICByZXR1cm4gImRlcHRoMmQiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEQXJyYXkiKQotICAgICAgICAg
ICAgcmV0dXJuICJkZXB0aDJkX2FycmF5Il9zdHI7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGhDdWJlIik7Ci0gICAgICAgIHJldHVy
biAiZGVwdGhjdWJlIl9zdHI7Ci0gICAgfSkoKTsKLSAgICBhdXRvIGlubmVyVHlwZSA9IChbJl0o
KSAtPiBTdHJpbmcgewotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50
IikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVy
ZW5jZS0+bmFtZSgpID09ICJ1aW50MiIpCi0gICAgICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsK
LSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDMiKQotICAgICAgICAg
ICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkg
PT0gInVpbnQ0IikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAo
dHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQiKQotICAgICAgICAgICAgcmV0dXJuICJpbnQi
X3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50MiIpCi0gICAg
ICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFt
ZSgpID09ICJpbnQzIikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0gICAgICAgIGlm
ICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDQiKQotICAgICAgICAgICAgcmV0dXJuICJp
bnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiZmxvYXQiKQot
ICAgICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5j
ZS0+bmFtZSgpID09ICJmbG9hdDIiKQotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwot
ICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdDMiKQotICAgICAgICAg
ICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBBU1NFUlQodHlwZVJlZmVyZW5jZS0+bmFt
ZSgpID09ICJmbG9hdDQiKTsKLSAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgIH0pKCk7
Ci0gICAgYXV0byBpc1JlYWRXcml0ZSA9IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlJXVGV4dHVyZTFEIgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUxREFycmF5IgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJSV1RleHR1cmUyRCIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZp
eCwgJzwnLCBpbm5lclR5cGUsICIsICIsIGlzUmVhZFdyaXRlID8gImFjY2Vzczo6cmVhZF93cml0
ZSIgOiAiYWNjZXNzOjpzYW1wbGUiLCAnPicpOwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTA3ZTk2MmQ2NDIxZTNmY2Q0YjQz
YzE2YjhjZWNjZDBmYzU1ODRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TmF0aXZlVHlwZVdyaXRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1TdHJpbmcgd3JpdGVOYXRpdmVU
eXBlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFs
Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3NzE1NDE0NDQ4NjAzMzhhNDg3Njg1YzVkMmYx
MDM5ZGE1MzY1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1l
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNs
dWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5o
IgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURl
ZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJX
SExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwg
ewotCi1UeXBlTmFtZXI6OlR5cGVOYW1lcihQcm9ncmFtJiBwcm9ncmFtKQotICAgIDogbV9wcm9n
cmFtKHByb2dyYW0pCi17Ci19Ci0KLVR5cGVOYW1lcjo6flR5cGVOYW1lcigpID0gZGVmYXVsdDsK
LQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQot
ewotICAgIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKHVubmFtZWRUeXBlKTsKLX0KLQotdm9pZCBU
eXBlTmFtZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmFtZWRUeXBl
TWFwcGluZy5hZGQoJmVudW1lcmF0aW9uRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0
aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmFkZCgmc3RhdGljX2Nhc3Q8QVNUOjpF
bnVtZXJhdGlvbk1lbWJlciY+KGVudW1lcmF0aW9uTWVtYmVyKSwgZ2VuZXJhdGVOZXh0RW51bWVy
YXRpb25NZW1iZXJOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGVudW1lcmF0
aW9uRGVmaW5pdGlvbik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBl
bmRlbmN5R3JhcGguYWRkKCZlbnVtZXJhdGlvbkRlZmluaXRpb24sIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50
eXBlKCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICAvLyBOYXRpdmUg
dHlwZSBkZWNsYXJhdGlvbnMgYWxyZWFkeSBoYXZlIG5hbWVzLCBhbmQgYXJlIGFscmVhZHkgZGVj
bGFyZWQgaW4gTWV0YWwuCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5h
ZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpVbm5hbWVkVHlwZT4+IHsgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgmc3RydWN0dXJlRGVmaW5p
dGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotICAgIFZpc2l0b3I6OnZpc2l0
KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IG5laWdoYm9yczsKLSAgICAgICAgZm9yIChh
dXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVt
ZW50cygpKSB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RydWN0dXJlRWxlbWVu
dE1hcHBpbmcuYWRkKCZzdHJ1Y3R1cmVFbGVtZW50LCBnZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVt
ZW50TmFtZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICBuZWlnaGJvcnMuYXBwZW5kKHN0cnVjdHVyZUVs
ZW1lbnQudHlwZSgpKTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVw
ZW5kZW5jeUdyYXBoLmFkZCgmc3RydWN0dXJlRGVmaW5pdGlvbiwgV1RGTW92ZShuZWlnaGJvcnMp
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9u
JiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9u
YW1lZFR5cGVNYXBwaW5nLmFkZCgmdHlwZURlZmluaXRpb24sIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAgewot
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmdHlwZURlZmlu
aXRpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7
IHR5cGVEZWZpbml0aW9uLnR5cGUoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2
aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgZ2VuZXJhdGVVbmlxdWVk
VHlwZU5hbWUoZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgVmlzaXRvcjo6dmlzaXQo
ZXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNz
aW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4
cHJlc3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhcmd1bWVu
dCk7Ci19Ci0KLVN0cmluZyBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIHJldHVybiB3
cml0ZU5hdGl2ZVR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotc3RhdGljIEFTVDo6
VW5uYW1lZFR5cGUqIHBhcmVudChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAg
ICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlw
ZTo6S2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gJmRvd25j
YXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpOwotICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVy
biAmZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50
VHlwZSgpOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6Ci0gICAgICAg
IHJldHVybiAmZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCk7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjpnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShBU1Q6OlVubmFt
ZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBhdXRvKiBwYXJlbnRVbm5hbWVkVHlwZSA9IHBh
cmVudCh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKHBhcmVudFVubmFtZWRUeXBlKQotICAgICAgICBn
ZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZSgqcGFyZW50VW5uYW1lZFR5cGUpOwotCi0gICAgbV91bm5h
bWVkVHlwZU1hcHBpbmcuZW5zdXJlKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUgfSwgWyZd
IHsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCk7Ci0gICAgfSk7Ci19Ci0K
LWNsYXNzIE1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyIGZpbmFsIDogcHVibGljIFZpc2l0b3Ig
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1ldGFsVHlwZURl
Y2xhcmF0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIHN0ZDo6ZnVuY3Rp
b248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUmKT4mJiBtYW5nbGVkTmFt
ZUZvck5hbWVkVHlwZSkKLSAgICAgICAgOiBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKFdURk1v
dmUobWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUpKQotICAgICAgICAsIG1fc3RyaW5nQnVpbGRlcihz
dHJpbmdCdWlsZGVyKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbV9tYW5nbGVk
TmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwotICAgIH0KLQot
ICAgIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUm
KT4gbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZTsKLSAgICBTdHJpbmdCdWlsZGVyJiBtX3N0cmlu
Z0J1aWxkZXI7Ci19OwotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURlY2xhcmF0aW9u
cyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIE1ldGFsVHlwZURlY2xhcmF0
aW9uV3JpdGVyIG1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIFsmXShB
U1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKSAtPiBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSB7Ci0g
ICAgICAgIHJldHVybiBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKTsKLSAgICB9KTsKLSAg
ICBtZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlci5WaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwot
fQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgTWFuZ2xl
ZFR5cGVOYW1lIG1hbmdsZWROYW1lLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4mIGVtaXR0ZWRO
YW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFtZWRUeXBlcykK
LXsKLSAgICBpZiAoZW1pdHRlZFVubmFtZWRUeXBlcy5jb250YWlucyhVbm5hbWVkVHlwZUtleSB7
IHVubmFtZWRUeXBlIH0pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKHVubmFtZWRU
eXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVy
ZW5jZTogewotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBl
UmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50ID0gdHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9
IG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG1fZGVwZW5kZW5jeUdyYXBoLmZpbmQoJnBhcmVudCk7Ci0gICAg
ICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2RlcGVuZGVuY3lHcmFwaC5lbmQoKSk7Ci0gICAgICAg
IGVtaXROYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgaXRlcmF0b3It
PnZhbHVlLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgcGFyZW50TWFuZ2xlZE5hbWUsICcg
JywgbWFuZ2xlZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewotICAgICAgICBhdXRvJiBwb2ludGVy
VHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLQotICAgICAg
ICBhdXRvJiBwYXJlbnQgPSBwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpOwotICAgICAgICBhdXRv
IHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0gICAgICAg
IGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBwYXJlbnRN
YW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJU
eXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwYXJlbnRNYW5nbGVkTmFtZSwgIiogIiwgbWFuZ2xl
ZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpVbm5h
bWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKLSAgICAgICAgYXV0byYgYXJyYXlSZWZl
cmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBl
KTsKLQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVJlZmVyZW5jZVR5cGUuZWxlbWVudFR5
cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lRm9yVHlw
ZShwYXJlbnQpOwotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxk
ZXIsIHBhcmVudCwgcGFyZW50TWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVk
VW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAg
ICAgICJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWUsICIge1xuIgotICAgICAgICAgICAgIiAgICAiLCB0
b1N0cmluZyhhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBhcmVudE1h
bmdsZWROYW1lLCAiKiBwb2ludGVyO1xuIgotICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5n
dGg7XG4iCi0gICAgICAgICAgICAifTtcbiIKLSAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKLSAgICAgICAg
YXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsK
LQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVR5cGUudHlwZSgpOwotICAgICAgICBhdXRv
IHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0gICAgICAg
IGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBwYXJlbnRN
YW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmIGFycmF5PCIsIHBhcmVudE1hbmds
ZWROYW1lLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwgbWFuZ2xlZE5hbWUs
ICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgZW1pdHRlZFVubmFtZWRU
eXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLX0KLQotdm9pZCBUeXBl
TmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIsIEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEFTVDo6VW5uYW1lZFR5cGU+PiYgbmVpZ2hib3JzLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBl
Kj4mIGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVu
bmFtZWRUeXBlcykKLXsKLSAgICBpZiAoZW1pdHRlZE5hbWVkVHlwZXMuY29udGFpbnMoJm5hbWVk
VHlwZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgdW5uYW1lVHlwZSA6IG5l
aWdoYm9ycykKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVy
LCB1bm5hbWVUeXBlLCBtYW5nbGVkTmFtZUZvclR5cGUodW5uYW1lVHlwZSksIGVtaXR0ZWROYW1l
ZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgIHN3aXRjaCAobmFtZWRUeXBlLmtp
bmQoKSkgewotICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbjogewotICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byYgYmFz
ZVR5cGUgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlw
ZShlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25j
YXN0PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwotICAgICAgICBmb3IgKGF1
dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9u
TWVtYmVycygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5n
bGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVu
dW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIsXG4iKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNU
OjpOYW1lZFR5cGU6OktpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjogewotICAgICAgICAvLyBO
YXRpdmUgdHlwZXMgYWxyZWFkeSBoYXZlIGRlZmluaXRpb25zLiBUaGVyZSdzIG5vdGhpbmcgdG8g
ZG8uCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRUeXBlOjpLaW5k
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRp
b24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0KLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUo
c3RydWN0dXJlRGVmaW5pdGlvbiksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0
dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JUeXBl
KHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVs
ZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpOYW1l
ZFR5cGU6OktpbmQ6OlR5cGVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHR5cGVEZWZpbml0
aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLQotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlw
ZURlZmluaXRpb24udHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRp
b24pLCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGVtaXR0ZWROYW1l
ZFR5cGVzLmFkZCgmbmFtZWRUeXBlKTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OmVtaXRNZXRhbFR5
cGVEZWZpbml0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIEhhc2hT
ZXQ8QVNUOjpOYW1lZFR5cGUqPiBlbWl0dGVkTmFtZWRUeXBlczsKLSAgICBIYXNoU2V0PFVubmFt
ZWRUeXBlS2V5PiBlbWl0dGVkVW5uYW1lZFR5cGVzOwotICAgIGZvciAoYXV0byYgW25hbWVkVHlw
ZSwgbmVpZ2hib3JzXSA6IG1fZGVwZW5kZW5jeUdyYXBoKQotICAgICAgICBlbWl0TmFtZWRUeXBl
RGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCAqbmFtZWRUeXBlLCBuZWlnaGJvcnMsIGVtaXR0ZWRO
YW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICBmb3IgKGF1dG8mIFt1bm5hbWVk
VHlwZUtleSwgbWFuZ2xlZE5hbWVdIDogbV91bm5hbWVkVHlwZU1hcHBpbmcpCi0gICAgICAgIGVt
aXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgdW5uYW1lZFR5cGVLZXkudW5u
YW1lZFR5cGUoKSwgbWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1l
ZFR5cGVzKTsKLX0KLQotTWFuZ2xlZFR5cGVOYW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JU
eXBlKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX3VubmFtZWRUeXBlTWFwcGluZy5maW5kKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUg
fSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdW5uYW1lZFR5cGVNYXBwaW5nLmVuZCgpKTsK
LSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1NYW5nbGVkT3JOYXRpdmVUeXBlTmFt
ZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBl
KQotewotICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkK
LSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fbmFtZWRU
eXBlTWFwcGluZy5maW5kKCZuYW1lZFR5cGUpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX25h
bWVkVHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0K
LU1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvckVu
dW1lcmF0aW9uTWVtYmVyKEFTVDo6RW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVy
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VudW1lcmF0aW9uTWVtYmVyTWFwcGluZy5maW5k
KCZlbnVtZXJhdGlvbk1lbWJlcik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZW51bWVyYXRp
b25NZW1iZXJNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQot
Ci1NYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclN0
cnVjdHVyZUVsZW1lbnQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3N0cnVjdHVyZUVsZW1lbnRNYXBwaW5nLmZpbmQoJnN0
cnVjdHVyZUVsZW1lbnQpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3N0cnVjdHVyZUVsZW1l
bnRNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lk
IFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikK
LXsKLSAgICBWaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwotCi0gICAgZW1pdE1ldGFsVHlwZURl
Y2xhcmF0aW9ucyhzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4n
KTsKLSAgICBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoc3RyaW5nQnVpbGRlcik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5h
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5
cGVOYW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFkMWFlODEwNDA1YWNi
NThkYWY5MjdiMWNjODI2ZjY0Y2MxMGNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlSGFz
aC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEVudW1lcmF0
aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotY2xhc3MgTmFtZWRUeXBl
OwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlv
bjsKLWNsYXNzIFR5cGVEZWZpbml0aW9uOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLX0KLQotY2xh
c3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgQmFzZVR5cGVOYW1lTm9k
ZTsKLQotY2xhc3MgVHlwZU5hbWVyIDogcHJpdmF0ZSBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBU
eXBlTmFtZXIoUHJvZ3JhbSYpOwotICAgIHZpcnR1YWwgflR5cGVOYW1lcigpOwotCi0gICAgdm9p
ZCBlbWl0TWV0YWxUeXBlcyhTdHJpbmdCdWlsZGVyJik7Ci0KLSAgICAvLyBNdXN0IGJlIGNhbGxl
ZCBhZnRlciBjYWxsaW5nIGVtaXRNZXRhbFR5cGVzKCkuCi0gICAgU3RyaW5nIG1hbmdsZWROYW1l
Rm9yVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIE1hbmdsZWRUeXBlTmFt
ZSBtYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpVbm5hbWVkVHlwZSYpOwotICAgIE1hbmdsZWRPck5h
dGl2ZVR5cGVOYW1lIG1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYpOwotICAgIE1h
bmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJl
cihBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnRO
YW1lIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQm
KTsKLQotICAgIE1hbmdsZWRUeXBlTmFtZSBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpIHsgcmV0dXJu
IHsgbV90eXBlQ291bnQrKyB9OyB9Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGdl
bmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCkgeyByZXR1cm4geyBtX3N0cnVjdHVyZUVs
ZW1lbnRDb3VudCsrIH07IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5uYW1l
ZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLQotICAgIE1hbmdsZWRFbnVtZXJh
dGlvbk1lbWJlck5hbWUgZ2VuZXJhdGVOZXh0RW51bWVyYXRpb25NZW1iZXJOYW1lKCkgeyByZXR1
cm4geyBtX2VudW1lcmF0aW9uTWVtYmVyQ291bnQrKyB9OyB9Ci0KLSAgICB2b2lkIGVtaXROYW1l
ZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6Ok5hbWVkVHlwZSYsIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiYsIEhhc2hTZXQ8QVNUOjpO
YW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBl
bWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24o
U3RyaW5nQnVpbGRlciYsIEFTVDo6VW5uYW1lZFR5cGUmLCBNYW5nbGVkVHlwZU5hbWUsIEhhc2hT
ZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5
cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRNZXRhbFR5cGVEZWNs
YXJhdGlvbnMoU3RyaW5nQnVpbGRlciYpOwotICAgIHZvaWQgZW1pdE1ldGFsVHlwZURlZmluaXRp
b25zKFN0cmluZ0J1aWxkZXImKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVVbmlxdWVkVHlwZU5hbWUo
QVNUOjpVbm5hbWVkVHlwZSYpOwotCi0gICAgUHJvZ3JhbSYgbV9wcm9ncmFtOwotICAgIEhhc2hN
YXA8VW5uYW1lZFR5cGVLZXksIE1hbmdsZWRUeXBlTmFtZT4gbV91bm5hbWVkVHlwZU1hcHBpbmc7
Ci0gICAgSGFzaE1hcDxBU1Q6Ok5hbWVkVHlwZSosIE1hbmdsZWRUeXBlTmFtZT4gbV9uYW1lZFR5
cGVNYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpOYW1lZFR5cGUqLCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4+IG1fZGVwZW5kZW5jeUdyYXBoOwotICAg
IEhhc2hNYXA8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciosIE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJl
ck5hbWU+IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpTdHJ1
Y3R1cmVFbGVtZW50KiwgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lPiBtX3N0cnVjdHVyZUVs
ZW1lbnRNYXBwaW5nOwotICAgIHVuc2lnbmVkIG1fdHlwZUNvdW50IHsgMCB9OwotICAgIHVuc2ln
bmVkIG1fZW51bWVyYXRpb25NZW1iZXJDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX3N0cnVj
dHVyZUVsZW1lbnRDb3VudCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0g
Ly8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4
QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTRhZDJkOWQ3ZmZmZmMzNGVjMzY0ZjYxMjU3NDI2MjZjMDg1Nzc1Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotdW5zaWduZWQgY2FsY3VsYXRlVmVy
dGV4QnVmZmVySW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gUmVzZXJ2ZSB0aGUgZmly
c3QgZmV3IE1UTEJ1ZmZlciBzbG90cyBmb3IgYXJndW1lbnQgYnVmZmVycyBmb3IgR1BVQmluZEdy
b3Vwcy4KLSAgICByZXR1cm4gaW5kZXggKyA4OwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4
QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMw
NTRkMGYzNWJjMjFhNzA2YTY3MjZkZDkxMDk0ZjQyZGJlODc1NzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi11bnNpZ25lZCBjYWxjdWxhdGVWZXJ0
ZXhCdWZmZXJJbmRleCh1bnNpZ25lZCk7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDEwMDRmZDFkZmQ0ZGVlOTgxZmY3MjY2ZmE3Y2Q2ODQzMmNiMTRhMWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xBU1REdW1wZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KFByb2dy
YW0mIHByb2dyYW0pCi17Ci0gICAgbV9vdXQucHJpbnRsbigpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkK
LSAgICAgICAgdmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClbaV0pOwotICAg
IGlmIChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1f
b3V0LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0u
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQo
cHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3Jh
bS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJp
bnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS50eXBlRGVm
aW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS50eXBlRGVmaW5p
dGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpKQot
ICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZp
c2l0KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0u
c3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJcblxu
Iik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVyYXRpb25EZWZp
bml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLmVudW1lcmF0aW9u
RGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9u
cygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIHZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLQotICAg
IG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5uYW1l
ZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIEJhc2U6OnZpc2l0KHVubmFtZWRUeXBlKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0g
ICAgQmFzZTo6dmlzaXQobmFtZWRUeXBlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50KCJ0
eXBlZGVmICIsIHR5cGVEZWZpbml0aW9uLm5hbWUoKSwgIiA9ICIpOwotICAgIHZpc2l0KHR5cGVE
ZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0
aW9uKQotewotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJzdHJ1Y3QgIiwgc3RydWN0dXJl
RGVmaW5pdGlvbi5uYW1lKCksICIgeyIpOwotICAgIHsKLSAgICAgICAgYXV0byBpbmRlbnQgPSBi
dW1wSW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVj
dHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgICAgIHZpc2l0KHN0
cnVjdHVyZUVsZW1lbnQpOwotICAgIH0KLSAgICBtX291dC5wcmludGxuKG1faW5kZW50LCAifSIp
OwotICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsKLSAgICBtX291dC5wcmludCht
X2luZGVudCk7Ci0gICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwotICAgIG1fb3V0
LnByaW50KCIgIiwgc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgIGlmIChzdHJ1Y3R1cmVF
bGVtZW50LnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpzdHJ1Y3R1cmVFbGVtZW50LnNlbWFu
dGljKCkpOwotICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi17
Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJlbnVtICIpOwotICAgIHZpc2l0KGVudW1lcmF0
aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCIgeyIpOwotCi0gICAgewot
ICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgYm9vbCBvbmNlID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlv
bkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgIGlmIChvbmNl
KQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICAgICAgbV9vdXQu
cHJpbnRsbigpOwotICAgICAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICAg
ICAgdmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9v
dXQucHJpbnRsbigpOwotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7Ci0gICAgbV9v
dXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0gICAgbV9vdXQucHJpbnQoZW51bWVyYXRp
b25NZW1iZXIubmFtZSgpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25E
ZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICB2aXNpdChzdGF0
aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsK
LSAgICB2aXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgbV9vdXQucHJpbnQo
IlxuXG4iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBtX291dC5wcmlu
dChtX2luZGVudCk7Ci0gICAgbV9vdXQucHJpbnQoIm5hdGl2ZSAiKTsKLSAgICB2aXNpdChzdGF0
aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKSk7Ci0gICAgbV9vdXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIHZp
c2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Ci0gICAgaWYgKGZ1bmN0
aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoQVNU
Ojp0b1N0cmluZygqZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKSwgIiAiKTsK
LSAgICB2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQo
IiAiLCBmdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIigiKTsKLSAgICBib29sIG9uY2UgPSBm
YWxzZTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnQo
IiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICB2aXNpdChwYXJhbWV0ZXIpOwot
ICAgIH0KLSAgICBtX291dC5wcmludCgiKSIpOwotICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9u
LnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGlj
KCkpOwotICAgIG1fb3V0LnByaW50KCIgIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAg
IG1fb3V0LnByaW50KG1faW5kZW50LCAibmF0aXZlIHR5cGVkZWYgIik7Ci0gICAgbV9vdXQucHJp
bnQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCI8
Iik7Ci0gICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGVB
cmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkpIHsKLSAgICAg
ICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAg
ICAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotICAgIG1fb3V0LnBy
aW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5j
ZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBtX291dC5wcmludCh0eXBlUmVmZXJlbmNlLm5hbWUo
KSk7Ci0KLSAgICBpZiAodHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKSB7Ci0g
ICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBtX291dC5wcmludCgiPCIpOwotICAg
ICAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50
cygpKSB7Ci0gICAgICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgICAgICBtX291dC5wcmlu
dCgiLCAiKTsKLSAgICAgICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICAgICAgdmlzaXQodHlw
ZUFyZ3VtZW50KTsKLSAgICAgICAgfQotICAgICAgICBtX291dC5wcmludCgiPiIpOwotICAgIH0K
LX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBl
KQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+KHBvaW50ZXJU
eXBlKSk7Ci0gICAgbV9vdXQucHJpbnQoIioiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0
KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17Ci0gICAgdmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7
Ci0gICAgbV9vdXQucHJpbnQoIltdIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIHZpc2l0KGFycmF5VHlwZS50eXBlKCkpOwot
ICAgIG1fb3V0LnByaW50KCJbIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICJdIik7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQot
ewotICAgIEJhc2U6OnZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCi17Ci0gICAgbV9vdXQucHJp
bnQoQVNUOjp0b1N0cmluZyhyZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgIiAiKTsKLSAg
ICB2aXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotfQotCi12b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQoIiA6
ICIpOwotICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpCdWlsdEluU2Vt
YW50aWMmIGJ1aWx0SW5TZW1hbnRpYykgewotICAgICAgICB2aXNpdChidWlsdEluU2VtYW50aWMp
OwotICAgIH0sIFsmXShBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpIHsK
LSAgICAgICAgdmlzaXQocmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMp
IHsKLSAgICAgICAgdmlzaXQoc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICB9
LCBbJl0oQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykgewotICAg
ICAgICB2aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOwotICAgIH0pLCBzZW1hbnRpYyk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRF
eHByZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9j
aykKLXsKLSAgICBpZiAoYXR0cmlidXRlQmxvY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX291dC5wcmludCgiWyIpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1
dGUgOiBhdHRyaWJ1dGVCbG9jaykKLSAgICAgICAgdmlzaXQoZnVuY3Rpb25BdHRyaWJ1dGUpOwot
ICAgIG1fb3V0LnByaW50KCJdICIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpC
dWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludChidWls
dEluU2VtYW50aWMudG9TdHJpbmcoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQo
cmVzb3VyY2VTZW1hbnRpYy50b1N0cmluZygpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0
KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikKLXsKLSAgICAvLyBGSVhNRTog
SGFuZGxlIHRoaXMgd2hlbiB3ZSBpbXBsZW1lbnQgaXQuCi19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKQotewotICAg
IG1fb3V0LnByaW50KCJhdHRyaWJ1dGUoIiwgc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCksICIp
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRl
Z2VyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsK
LX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYg
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludCh1bnNpZ25lZEludGVn
ZXJMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGbG9h
dExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChmbG9hdExpdGVyYWwu
dmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFs
JiBib29sZWFuTGl0ZXJhbCkKLXsKLSAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAg
ICAgICAgbV9vdXQucHJpbnQoInRydWUiKTsKLSAgICBlbHNlCi0gICAgICAgIG1fb3V0LnByaW50
KCJmYWxzZSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJh
bFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYpCi17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZsb2F0
TGl0ZXJhbFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBtX291
dC5wcmludChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwubGVmdCgpLCAiLiIsIGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5yaWdodCgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRlKQotewotICAgIFdURjo6dmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUpOwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhy
ZWFkc0F0dHJpYnV0ZSkKLXsKLSAgICBtX291dC5wcmludCgibnVtdGhyZWFkcygiLCBudW1UaHJl
YWRzQXR0cmlidXRlLndpZHRoKCksICIsICIsIG51bVRocmVhZHNBdHRyaWJ1dGUuaGVpZ2h0KCks
ICIsICIsIG51bVRocmVhZHNBdHRyaWJ1dGUuZGVwdGgoKSwgIikiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIG1fb3V0LnByaW50bG4oInsi
KTsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVtcEluZGVudCgpOwotICAgICAgICBm
b3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkgewotICAgICAgICAgICAg
bV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICAgICAgdmlzaXQoc3RhdGVtZW50KTsKLSAg
ICAgICAgICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX291
dC5wcmludChtX2luZGVudCwgIn0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
U3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoc3RhdGVtZW50KTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3RhdGVtZW50TGlz
dCkKLXsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6
IHN0YXRlbWVudExpc3Quc3RhdGVtZW50cygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAg
ICAgICAgbV9vdXQucHJpbnQoIjtcbiIsIG1faW5kZW50KTsKLSAgICAgICAgb25jZSA9IHRydWU7
Ci0gICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpCcmVhayYpCi17Ci0gICAgbV9vdXQucHJpbnQoImJyZWFrIik7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKLXsKLSAgICBtX291dC5wcmludCgi
Y29udGludWUiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3
aGlsZUxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoIndoaWxlICgiKTsKLSAgICB2aXNpdCh3aGls
ZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLSAgICB2aXNpdCh3
aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RG9XaGls
ZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIG1fb3V0LnByaW50KCJkbyAiKTsKLSAgICB2aXNp
dChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIG1fb3V0LnByaW50KCIgd2hpbGUoIik7Ci0gICAg
dmlzaXQoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsK
LX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAg
ICBtX291dC5wcmludCgiZm9yICgiKTsKLSAgICB2aXNpdChmb3JMb29wLmluaXRpYWxpemF0aW9u
KCkpOwotICAgIG1fb3V0LnByaW50KCI7ICIpOwotICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigp
KQotICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgbV9vdXQucHJpbnQo
IjsgIik7Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIHZpc2l0KCpmb3JM
b29wLmluY3JlbWVudCgpKTsKLSAgICBtX291dC5wcmludCgiKSAiKTsKLSAgICB2aXNpdChmb3JM
b29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24m
IGV4cHJlc3Npb24pCi17Ci0gICAgYm9vbCBza2lwUGFyZW5zID0gaXM8QVNUOjpCb29sZWFuTGl0
ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJl
c3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0g
ICAgICAgIHx8IGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAg
ICAgICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0g
ICAgICAgIHx8IGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKQotICAgICAgICB8
fCBpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLQotICAgIGlmIChhdXRv
KiBhbm5vdGF0aW9uID0gZXhwcmVzc2lvbi5tYXliZVR5cGVBbm5vdGF0aW9uKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gYWRkcmVzc1NwYWNlID0gYW5ub3RhdGlvbi0+bGVmdEFkZHJlc3NTcGFjZSgp
KQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxMVjoiLCBBU1Q6OnRvU3RyaW5nKCphZGRyZXNz
U3BhY2UpKTsKLSAgICAgICAgZWxzZSBpZiAoYW5ub3RhdGlvbi0+aXNBYnN0cmFjdExlZnRWYWx1
ZSgpKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxBTFYiKTsKLSAgICAgICAgZWxzZSBpZiAo
YW5ub3RhdGlvbi0+aXNSaWdodFZhbHVlKCkpCi0gICAgICAgICAgICBtX291dC5wcmludCgiPFJW
Iik7Ci0KLSAgICAgICAgbV9vdXQucHJpbnQoIiwgIiwgZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUo
KS50b1N0cmluZygpLCAiPiIpOwotCi0gICAgICAgIHNraXBQYXJlbnMgPSBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAg
QmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFza2lwUGFyZW5zKQotICAgICAgICBt
X291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEb3RFeHBy
ZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oZG90RXhwcmVzc2lvbikpOwotICAgIG1fb3V0LnByaW50
KCIuIiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSkKLXsKLSAgICB2aXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1f
b3V0LnByaW50KCI9PiIsIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkubmFt
ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBp
bmRleEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24mPihpbmRleEV4cHJlc3Npb24pKTsKLSAgICBtX291dC5wcmludCgiWyIp
OwotICAgIHZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgbV9v
dXQucHJpbnQoIl0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0KGV4cHJlc3Np
b24pOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewotICAgIEJhc2U6OnZp
c2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17Ci0gICAgbV9vdXQucHJpbnQoImZhbGx0aHJvdWdo
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRl
bWVudCkKLXsKLSAgICBtX291dC5wcmludCgiaWYgKCIpOwotICAgIHZpc2l0KGlmU3RhdGVtZW50
LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpICIpOwotICAgIHZpc2l0KGlmU3Rh
dGVtZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAg
ICAgbV9vdXQucHJpbnQoIiBlbHNlICIpOwotICAgICAgICB2aXNpdCgqaWZTdGF0ZW1lbnQuZWxz
ZUJvZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZXR1cm4m
IHJldHVyblN0YXRlbWVudCkKLXsKLSAgICBtX291dC5wcmludCgicmV0dXJuIik7Ci0gICAgaWYg
KHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgIik7Ci0g
ICAgICAgIHZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgfQotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkK
LXsKLSAgICBtX291dC5wcmludCgic3dpdGNoICgiKTsKLSAgICB2aXNpdChzd2l0Y2hTdGF0ZW1l
bnQudmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiKSB7Iik7Ci0gICAgYm9vbCBvbmNlID0g
ZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRj
aENhc2VzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludGxu
KCk7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7
Ci0gICAgICAgIHZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAgICBtX291dC5wcmludCgiXG4i
LCBtX2luZGVudCwgIn0iKTsKLQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTd2l0
Y2hDYXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAg
ICAgICAgbV9vdXQucHJpbnQoImNhc2UgIik7Ci0gICAgICAgIHZpc2l0KCpzd2l0Y2hDYXNlLnZh
bHVlKCkpOwotICAgICAgICBtX291dC5wcmludCgiOiAiKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
bV9vdXQucHJpbnQoImRlZmF1bHQ6ICIpOwotICAgIHZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNp
dCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0g
ICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSB7Ci0gICAgICAgIHZpc2l0KCp2YXJp
YWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgIik7Ci0gICAg
fQotCi0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9vdXQucHJpbnQoIiQiLCBSYXdQb2ludGVyKCZ2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX291dC5wcmludCh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSk7
Ci0KLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAgICB2aXNp
dCgqdmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLSAgICBpZiAodmFyaWFibGVEZWNs
YXJhdGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAg
ICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci0gICAgfQot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNz
aWdubWVudEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVm
dCgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgdmlzaXQoYXNzaWdubWVudEV4cHJl
c3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludChjYWxsRXhwcmVzc2lv
bi5uYW1lKCksICIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBh
cmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAgIGlmIChvbmNl
KQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwot
ICAgICAgICB2aXNpdChhcmd1bWVudCk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCIpIik7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYgY29tbWFFeHBy
ZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7
Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkgewot
ICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAg
ICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIG1f
b3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50
KCIqIik7Ci0gICAgdmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKSk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhw
cmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiKCIpOwotICAgIHZpc2l0KGxvZ2ljYWxFeHBy
ZXNzaW9uLmxlZnQoKSk7Ci0gICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsK
LSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKLSAgICAgICAgbV9v
dXQucHJpbnQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkxvZ2ljYWxF
eHByZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9vdXQucHJpbnQoIiB8fCAiKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwot
ICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Okxv
Z2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5w
cmludCgiISgiKTsKLSAgICB2aXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwot
ICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24p
Ci17Ci0gICAgbV9vdXQucHJpbnQoIkAiKTsKLSAgICB2aXNpdChtYWtlQXJyYXlSZWZlcmVuY2VF
eHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgbV9v
dXQucHJpbnQoIiYiKTsKLSAgICB2aXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVl
KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGF1dG8gb2xkVmFyaWFi
bGUgPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0g
ICAgYXV0byBuZXdWYXJpYWJsZSA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFyaWFi
bGVSZWZlcmVuY2UoKTsKLQotICAgIG1fb3V0LnByaW50KCJSTVcoIik7Ci0gICAgdmlzaXQob2xk
VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChyZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5wcmludCgiLCAi
KTsKLQotICAgIHZpc2l0KG5ld1ZhcmlhYmxlLmdldCgpKTsKLSAgICBtX291dC5wcmludCgiID0g
Iik7Ci0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Np
b24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAg
dmlzaXQobmV3VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0gICAg
dmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAg
IG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlRlcm5h
cnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhw
cmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA/ICIpOwotICAgIHZpc2l0
KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0LnByaW50KCIg
OiAiKTsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxl
UmVmZXJlbmNlKQotewotICAgIGlmICh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkuaXNFbXB0eSgp
KQotICAgICAgICBtX291dC5wcmludCgiJCIsIFJhd1BvaW50ZXIodmFyaWFibGVSZWZlcmVuY2Uu
dmFyaWFibGUoKSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQodmFyaWFibGVSZWZl
cmVuY2UubmFtZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMDI3MzZmYzAyYmQzMTQwZmYzODhmN2Q1MDJi
OGJjZTJjNGJiNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3Bl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgQVNURHVtcGVyIDogVmlzaXRvciB7
Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChQcm9n
cmFtJikgb3ZlcnJpZGU7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSB7IHJldHVybiBtX291dC50
b1N0cmluZygpOyB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJl
bmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbk1lbWJlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVBcmd1bWVu
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpBdHRyaWJ1dGVCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCdWls
dEluU2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVzb3VyY2VTZW1h
bnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNl
bWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpGdW5jdGlvbkF0dHJpYnV0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
QmxvY2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29u
dGludWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpTd2l0Y2hDYXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRl
bWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Okxv
Z2ljYWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
TWFrZVBvaW50ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
VGVybmFyeUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgSW5kZW50IHsK
LSAgICAgICAgSW5kZW50KEFTVER1bXBlciYgZHVtcGVyKQotICAgICAgICAgICAgOiBtX3Njb3Bl
KGR1bXBlci5tX2luZGVudCwgZHVtcGVyLm1faW5kZW50ICsgIiAgICIpCi0gICAgICAgIHsgfQot
ICAgICAgICBTZXRGb3JTY29wZTxTdHJpbmc+IG1fc2NvcGU7Ci0gICAgfTsKLQotICAgIEluZGVu
dCBidW1wSW5kZW50KCkgeyByZXR1cm4gSW5kZW50KCp0aGlzKTsgfQotCi0gICAgZnJpZW5kIHN0
cnVjdCBJbmRlbnQ7Ci0KLSAgICBTdHJpbmdQcmludFN0cmVhbSBtX291dDsKLSAgICBTdHJpbmcg
bV9pbmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9p
ZCBkdW1wQVNUTm9kZShQcmludFN0cmVhbSYgb3V0LCBUJiB2YWx1ZSkKLXsKLSAgICBBU1REdW1w
ZXIgZHVtcGVyOwotICAgIGR1bXBlci52aXNpdCh2YWx1ZSk7Ci0gICAgb3V0LnByaW50KGR1bXBl
ci50b1N0cmluZygpKTsKLX0KLU1BS0VfUFJJTlRfQURBUFRPUihFeHByZXNzaW9uRHVtcGVyLCBB
U1Q6OkV4cHJlc3Npb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoU3RhdGVt
ZW50RHVtcGVyLCBBU1Q6OlN0YXRlbWVudCYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURB
UFRPUihQcm9ncmFtRHVtcGVyLCBQcm9ncmFtJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9B
REFQVE9SKFN0cnVjdHVyZURlZmluaXRpb25EdW1wZXIsIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
biYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihGdW5jdGlvbkRlZmluaXRpb25E
dW1wZXIsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklO
VF9BREFQVE9SKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25EdW1wZXIsIEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihUeXBl
RHVtcGVyLCBBU1Q6OlVubmFtZWRUeXBlJiwgZHVtcEFTVE5vZGUpOwotCi0KLXN0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQgZHVtcEFTVChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGRhdGFMb2dM
bihQcm9ncmFtRHVtcGVyKHByb2dyYW0pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xC
dWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5IGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjcxNzg5NTQ0ODk5MGRjOGFjNjg3N2JjMTA0
ZDlkYmE4ZTY5MTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbk1hcC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCByZQotCi1yZWd1bGFyRXhwcmVzc2lvbiA9IHJlLmNv
bXBpbGUociIvXCogRnVuY3Rpb25zIG5hbWVkICguKikgXCovIikKLQotaW5maWxlID0gb3Blbihz
eXMuYXJndlsxXSwgInIiKQotY29udGVudHMgPSBpbmZpbGUucmVhZCgpCi1pbmZpbGUuY2xvc2Uo
KQotCi1vdXRmaWxlID0gb3BlbihzeXMuYXJndlsyXSwgInciKQotb3V0ZmlsZS53cml0ZSgiIiIK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbk1hcC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUhhc2hNYXA8U3RyaW5n
LCBTdWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKCkK
LXsKLSAgICBIYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+IHJlc3VsdDsKLSIiIikK
LQotIyBGSVhNRTogQ29tcHV0ZSBTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCBhdCBidWlsZC10
aW1lIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NDgKLQotcHJl
dmlvdXMgPSAwCi1wcmV2aW91c05hbWUgPSAiIgotYm91bmRhcnkgPSAwCi1mb3IgbWF0Y2ggaW4g
cmVndWxhckV4cHJlc3Npb24uZmluZGl0ZXIoY29udGVudHMpOgotICAgIGlmIHByZXZpb3VzID09
IDA6Ci0gICAgICAgIHByZXZpb3VzID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBib3VuZGFyeSA9
IHByZXZpb3VzCi0gICAgICAgIHByZXZpb3VzTmFtZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAg
IGNvbnRpbnVlCi0gICAgb3V0ZmlsZS53cml0ZSgiICAgIHJlc3VsdC5hZGQoXCIiICsgcHJldmlv
dXNOYW1lICsgIlwiX3N0ciwgU3Vic3RyaW5nTG9jYXRpb24geyAiICsgc3RyKHByZXZpb3VzKSAr
ICIsICIgKyBzdHIobWF0Y2guc3RhcnQoKSkgKyAiIH0pO1xuIikKLSAgICBwcmV2aW91cyA9IG1h
dGNoLnN0YXJ0KCkKLSAgICBwcmV2aW91c05hbWUgPSBtYXRjaC5ncm91cCgxKQotb3V0ZmlsZS53
cml0ZSgiICAgIHJlc3VsdC5hZGQoXCIiICsgcHJldmlvdXNOYW1lICsgIlwiX3N0ciwgU3Vic3Ry
aW5nTG9jYXRpb24geyAiICsgc3RyKHByZXZpb3VzKSArICIsICIgKyBzdHIobGVuKGNvbnRlbnRz
KSkgKyAiIH0pO1xuIikKLW91dGZpbGUud3JpdGUoIiIiCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdW5zaWduZWQgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCkKLXsKLSIi
IikKLQotb3V0ZmlsZS53cml0ZSgiICAgIHJldHVybiAiICsgc3RyKGJvdW5kYXJ5KSArICI7XG4i
KQotCi1vdXRmaWxlLndyaXRlKCIiIgotfQotCi19Ci0KLX0KLQotI2VuZGlmCi0iIiIpCi1vdXRm
aWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWJlZDFlY2VkNDZkYjFkN2ZhN2JmYjRlMWMzZTM0
ODNjMzE3M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1
bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFy
cmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIER1cGxpY2F0
ZUZ1bmN0aW9uS2V5IHsKLXB1YmxpYzoKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleSgpID0gZGVm
YXVsdDsKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uID0gYml0d2lzZV9jYXN0PEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbio+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotICAgIH0KLQot
ICAgIER1cGxpY2F0ZUZ1bmN0aW9uS2V5KGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYg
ZnVuY3Rpb24pCi0gICAgICAgIDogbV9mdW5jdGlvbigmZnVuY3Rpb24pCi0gICAgeyB9Ci0KLSAg
ICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bmN0aW9uOyB9Ci0gICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb24g
PT0gYml0d2lzZV9jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGhhc2ggPSBJbnRIYXNoPHNpemVfdD46Omhhc2gobV9mdW5jdGlvbi0+cGFy
YW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+bmFtZSgpLmhh
c2goKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uLT5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBoYXNoIF49IG1fZnVuY3Rpb24tPnBhcmFt
ZXRlcnMoKVtpXS0+dHlwZSgpLT5oYXNoKCk7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPmlz
Q2FzdCgpKQotICAgICAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT50eXBlKCkuaGFzaCgpOwot
Ci0gICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBEdXBsaWNhdGVGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
bV9mdW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKSAhPSBvdGhlci5tX2Z1bmN0aW9uLT5wYXJh
bWV0ZXJzKCkuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlm
IChtX2Z1bmN0aW9uLT5uYW1lKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+bmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5uYW1lU3BhY2Uo
KSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5Ci0gICAgICAgICAgICAmJiBvdGhl
ci5tX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJy
YXJ5Ci0gICAgICAgICAgICAmJiBtX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBvdGhlci5tX2Z1
bmN0aW9uLT5uYW1lU3BhY2UoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBBU1NFUlQobV9mdW5jdGlvbi0+aXNDYXN0KCkgPT0gb3RoZXIubV9mdW5jdGlvbi0+aXNDYXN0
KCkpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbi0+cGFyYW1l
dGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMoKm1fZnVuY3Rp
b24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLCAqb3RoZXIubV9mdW5jdGlvbi0+cGFyYW1ldGVy
cygpW2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghbV9mdW5jdGlvbi0+aXNDYXN0KCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgICAgICBpZiAobWF0Y2hlcyhtX2Z1bmN0aW9uLT50eXBlKCksIG90aGVy
Lm1fZnVuY3Rpb24tPnR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYga2V5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBhLCBjb25zdCBE
dXBsaWNhdGVGdW5jdGlvbktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
PT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUcmFpdHMg
OiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RHVwbGljYXRlRnVuY3Rpb25LZXk+
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0
cnVlOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRHVwbGljYXRlRnVu
Y3Rpb25LZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQot
cHJpdmF0ZToKLSAgICBjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24g
eyBudWxscHRyIH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tEdXBsaWNhdGVG
dW5jdGlvbnMoY29uc3QgUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBhdXRvIHBhc3Nlc1N0YXRp
Y0NoZWNrcyA9IFsmXSAoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikg
LT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLm5hbWUoKSA9
PSAib3BlcmF0b3I9PSIKLSAgICAgICAgICAgICYmIGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMgotICAgICAgICAgICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2Fz
dDxjb25zdCBBU1Q6OlVubmFtZWRUeXBlJj4oKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpKSkKLSAgICAgICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8
Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUo
KSkpCi0gICAgICAgICAgICAmJiBtYXRjaGVzKCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5
cGUoKSwgKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGRlZmluZSBvcGVyYXRvcj09IG9uIHR3
byByZWZlcmVuY2UgdHlwZXMuIikpOwotICAgICAgICBlbHNlIGlmIChmdW5jdGlvbi5pc0Nhc3Qo
KSAmJiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhdXRv
JiB1bmlmeU5vZGUgPSBmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICBp
ZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUo
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5u
b3QgZGVmaW5lIGEgY2FzdCBvbiBhbiBvcGFxdWUgdHlwZS4iKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4geyB9OwotICAgIH07Ci0KLSAgICBIYXNoU2V0PER1
cGxpY2F0ZUZ1bmN0aW9uS2V5LCBEdXBsaWNhdGVGdW5jdGlvbktleTo6SGFzaCwgRHVwbGljYXRl
RnVuY3Rpb25LZXk6OlRyYWl0cz4gZnVuY3Rpb25zOwotCi0gICAgYXV0byBhZGQgPSBbJl0gKGNv
bnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIC0+IEV4cGVjdGVkPHZvaWQs
IEVycm9yPiB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZnVuY3Rpb25zLmFkZChEdXBsaWNh
dGVGdW5jdGlvbktleSB7IGZ1bmN0aW9uIH0pOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJGb3VuZCBk
dXBsaWNhdGUgZnVuY3Rpb24iKSk7Ci0gICAgICAgIHJldHVybiBwYXNzZXNTdGF0aWNDaGVja3Mo
ZnVuY3Rpb24pOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6
IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKSk7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0
KQotICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdDsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8m
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKCkpIHsKLSAgICAgICAgLy8gV2UgZ2VuZXJhdGUgZHVwbGljYXRlIG5hdGl2ZSBmdW5j
dGlvbiBkZWNsYXJhdGlvbnMgaW4gc3ludGhlc2l6ZSBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIC8v
IEZJWE1FOiBpcyB0aGlzIHJpZ2h0PwotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTgwCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFNpbmNlIHdl
IGRvIHRoYXQsIHdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgbm8gbmF0aXZlIGZ1bmN0aW9uIGlz
IGEgZHVwbGljYXRlCi0gICAgICAgIC8vIG9mIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uLgotCi0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgYmFjayB0aGlzIGFzc2VydCBvbmNlIHdlIGJlZ2luIHRvIGF1
dG8gZ2VuZXJhdGUgdGhlc2UgaW4gdGhlIGNvbXBpbGVyCi0gICAgICAgIC8vIGluc3RlYWQgb2Yg
aGF2aW5nIHRoZW0gaW4gdGhlIHN0ZGxpYgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODYxCi0gICAgICAgIC8vIEFTU0VSVChwYXNzZXNTdGF0
aWNDaGVja3MobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKSkpOwotICAgICAgICBpZiAo
ZnVuY3Rpb25zLmNvbnRhaW5zKER1cGxpY2F0ZUZ1bmN0aW9uS2V5IHsgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5nZXQoKSB9KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiRHVwbGljYXRlIG5hdGl2ZSBmdW5jdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxp
Y2F0ZUZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDA3ZDMyZTUy
ZTZhNGUyNzBiMTk4ZDIzNTk1NzI2OTM4YmI3NjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0u
aCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tEdXBsaWNhdGVG
dW5jdGlvbnMoY29uc3QgUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzE1NDczOTQ4NjA0MTZjNWJlNzIyZDI5ZDY1ZTNiNGVk
YzU1NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1
ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFJlZmVyZW5jZVR5cGVDaGVja2VyIGZpbmFsIDogcHVibGljIFZpc2l0
b3IgewotcHVibGljOgotICAgIFJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZhdWx0OwotICAg
IHZpcnR1YWwgflJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja1R5cGUoQVNUOjpVbm5hbWVkVHlwZSYgdHlwZSwg
Q29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgY29uc3QgY2hhciogZXJyb3IpCi0gICAgewotICAg
ICAgICBhdXRvJiB1bmlmaWVkVHlwZSA9IHR5cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChp
czxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVuaWZpZWRUeXBlKSkgewotICAgICAgICAgICAgc2V0RXJy
b3IoRXJyb3IoZXJyb3IsIGNvZGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBlKSkK
LSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBl
Pih1bmlmaWVkVHlwZSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VU
eXBlJiByZWZlcmVuY2VUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tUeXBlKHJl
ZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSwgcmVmZXJlbmNlVHlwZS5jb2RlTG9jYXRpb24oKSwg
InJlZmVyZW5jZSB0eXBlIGNhbm5vdCBoYXZlIGFub3RoZXIgcmVmZXJlbmNlIHR5cGUgYXMgYW4g
aW5uZXIgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmIGFy
cmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShhcnJheVR5cGUudHlw
ZSgpLCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCksICJhcnJheSB0eXBlIGNhbm5vdCBoYXZlIGEg
cmVmZXJlbmNlIHR5cGUgYXMgaXRzIGlubmVyIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGNoZWNrVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSwgc3RydWN0dXJl
RWxlbWVudC5jb2RlTG9jYXRpb24oKSwgImNhbm5vdCBoYXZlIGEgc3RydWN0dXJlIGZpZWxkIHdo
aWNoIGlzIGEgcmVmZXJlbmNlIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6
OnZpc2l0KGV4cHJlc3Npb24pOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lv
bi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNo
ZWNrUmVmZXJlbmNlVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAvLyBUaGlzIHBhc3Mg
ZG9lcyB0aGVzZSB0aGluZ3M6Ci0gICAgLy8gMS4gRGlzYWxsb3cgc3RydWN0cyB0byBoYXZlIGZp
ZWxkcyB3aGljaCBhcmUgcmVmZXJlbmNlcy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGhhdmluZyB0
bwotICAgIC8vIGZpZ3VyZSBvdXQgaG93IHRvIGRlZmF1bHQgaW5pdGlhbGl6ZSBzdWNoIGEgc3Ry
dWN0LiBXZSBjb3VsZCByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgaWYgd2UKLSAgICAvLyBkaWQg
YW4gYW5hbHlzaXMgb24gd2hpY2ggc3RydWN0cyBjb250YWluIHJlZmVyZW5jZSBmaWVsZHMsIGFu
ZCBlbnN1cmUgc3VjaCBzdHJ1Y3QgdmFyaWFibGVzCi0gICAgLy8gYWx3YXlzIGhhdmUgaW5pdGlh
bGl6ZXJzLiBUaGlzIHdvdWxkIGFsc28gcmVxdWlyZSB1cyB0byBjcmVhdGUgY29uc3RydWN0b3Jz
IGZvciBzdHJ1Y3RzIHdoaWNoCi0gICAgLy8gaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLgotICAgIC8v
IDIuIFdlIGFsc28gZG8gdGhlIHNhbWUgZm9yIGFycmF5cy4KLSAgICAvLyAzLiBSZWZlcmVuY2Vz
IGNhbiBvbmx5IGJlIG9uZSBsZXZlbCBkZWVwLiBTbyBubyBwb2ludGVycyB0byBwb2ludGVycy4g
Tm8gcmVmZXJlbmNlcyB0bwotICAgIC8vIHJlZmVyZW5jZXMsIGV0Yy4gVGhpcyBpcyB0byBzdXBw
b3J0IGxvZ2ljYWwgbW9kZS4KLSAgICBSZWZlcmVuY2VUeXBlQ2hlY2tlciByZWZlcmVuY2VUeXBl
Q2hlY2tlcjsKLSAgICByZWZlcmVuY2VUeXBlQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJv
Z3JhbSk7Ci0gICAgcmV0dXJuIHJlZmVyZW5jZVR5cGVDaGVja2VyLnJlc3VsdCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTM2MmE4MDQ0MjNiMmEwZmUyODUzYzM3MzIyZTI2
MWU3MTgxNzc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VU
eXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xF
cnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQs
IEVycm9yPiBjaGVja1JlZmVyZW5jZVR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVu
Y2VzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjZTZjMDAzODdlYzFjYzhl
YmFlNTQ0NzdlYjk2MjM5MzljZGJiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1Rl
eHR1cmVSZWZlcmVuY2VzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBUZXh0
dXJlUmVmZXJlbmNlc0NoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0g
ICAgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+
VGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZv
aWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpBcnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJy
YXlUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlk
ZTsKLQotICAgIGJvb2wgY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKEFTVDo6VW5uYW1lZFR5cGUm
KTsKLX07Ci0KLWNsYXNzIFNlYXJjaGVyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAg
IFNlYXJjaGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+U2VhcmNoZXIoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBib29sIGZvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9mb3VuZDsgfQotCi1wcml2
YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotICAg
IGJvb2wgbV9mb3VuZCB7IGZhbHNlIH07Ci19OwotCi12b2lkIFNlYXJjaGVyOjp2aXNpdChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAgIG1fZm91bmQg
PSB0cnVlOwotfQotCi1ib29sIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6Y29udGFpbnNUZXh0
dXJlT3JTYW1wbGVyKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIFNlYXJj
aGVyIHNlYXJjaGVyOwotICAgIHNlYXJjaGVyLmNoZWNrRXJyb3JBbmRWaXNpdCh1bm5hbWVkVHlw
ZSk7Ci0gICAgcmV0dXJuIHNlYXJjaGVyLmZvdW5kKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVy
ZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsKLSAg
ICBWaXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKHBvaW50ZXJUeXBl
LmVsZW1lbnRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYSBw
b2ludGVyIHRvIGEgdGV4dHVyZSBvciBzYW1wbGVyLiIsIHBvaW50ZXJUeXBlLmNvZGVMb2NhdGlv
bigpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIFZpc2l0b3I6OnZp
c2l0KGFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKGFycmF5UmVmZXJlbmNlVHlw
ZS5lbGVtZW50VHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBoYXZlIGFu
IGFycmF5IHJlZmVyZW5jZSB0byBhIHRleHR1cmUgb3Igc2FtcGxlci4iLCBhcnJheVJlZmVyZW5j
ZVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNr
ZXI6OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlz
aXQoYXJyYXlUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChjb250YWluc1RleHR1cmVPclNhbXBsZXIoYXJyYXlUeXBlLnR5cGUoKSkpCi0gICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhbiBhcnJheSBvZiB0ZXh0dXJlcyBvciBzYW1w
bGVycy4iLCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAg
ICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhw
cmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVj
a2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ewotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9k
ZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmlu
aXRpb24pOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBUZXh0dXJl
UmVmZXJlbmNlc0NoZWNrZXIgdGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOwotICAgIHRleHR1cmVS
ZWZlcmVuY2VzQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJu
IHRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDA2OTQ5NmVlOWQyOWEwYTU4OTY1MzFkZWFkNWY4MmUzZTc1NmY3
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3Iu
aCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJv
cj4gY2hlY2tUZXh0dXJlUmVmZXJlbmNlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdhYTI3YTZjOGE5OGMzZTViZjY3ZmYyOWMyMmFiYTg2MDgzZjJkNGYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0
NTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTENoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xD
YWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTERvV2hp
bGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUg
IldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVu
dC5oIgotI2luY2x1ZGUgIldITFNMSW5kZXhFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJ
bmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExTTFBv
aW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlw
ZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgotI2luY2x1ZGUgIldI
TFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5jbHVkZSAi
V0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3Au
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1jbGFzcyBQT0RDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgot
ICAgIFBPRENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5QT0RDaGVja2VyKCkg
PSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYg
ZW51bWVyYXRpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6
dmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpCi0g
ICAgICAgICAgICAmJiAhbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzVmVjdG9yKCkKLSAgICAgICAg
ICAgICYmICFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHNl
dEVycm9yKEVycm9yKCJVc2Ugb2YgbmF0aXZlIHR5cGUgaXMgbm90IGEgUE9EIGluIGVudHJ5cG9p
bnQgc2VtYW50aWMuIiwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVy
ZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChzdHJ1
Y3R1cmVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmlu
aXRpb24mIHR5cGVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6
dmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJh
eVR5cGUmIGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0
KGFycmF5VHlwZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBw
b2ludGVyVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbGxl
Z2FsIHVzZSBvZiBwb2ludGVyIGluIGVudHJ5cG9pbnQgc2VtYW50aWMuIiwgcG9pbnRlclR5cGUu
Y29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBz
ZXRFcnJvcihFcnJvcigiSWxsZWdhbCB1c2Ugb2YgYXJyYXkgcmVmZXJlbmNlIGluIGVudHJ5cG9p
bnQgc2VtYW50aWMuIiwgYXJyYXlSZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5jZS5y
ZXNvbHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotY2xhc3MgRnVuY3Rpb25LZXkgewotcHVibGlj
OgotICAgIEZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0OwotICAgIEZ1bmN0aW9uS2V5KFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICB7Ci0gICAgICAgIG1fY2FzdFJldHVyblR5cGUg
PSBiaXR3aXNlX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KTsKLSAgICB9Ci0KLSAgICBGdW5jdGlvbktleShTdHJpbmcgbmFtZSwgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSog
Y2FzdFJldHVyblR5cGUgPSBudWxscHRyKQotICAgICAgICA6IG1fbmFtZShXVEZNb3ZlKG5hbWUp
KQotICAgICAgICAsIG1fdHlwZXMoV1RGTW92ZSh0eXBlcykpCi0gICAgICAgICwgbV9jYXN0UmV0
dXJuVHlwZShjYXN0UmV0dXJuVHlwZSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGUgPT0gYml0d2lz
ZV9jYXN0PEFTVDo6TmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KLQot
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaGFzaCA9
IEludEhhc2g8c2l6ZV90Pjo6aGFzaChtX3R5cGVzLnNpemUoKSk7Ci0gICAgICAgIGhhc2ggXj0g
bV9uYW1lLmhhc2goKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3R5cGVzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgaGFzaCBePSBtX3R5cGVzW2ldLmdldCgpLmhhc2goKSAr
IGk7Ci0KLSAgICAgICAgaWYgKG1fY2FzdFJldHVyblR5cGUpCi0gICAgICAgICAgICBoYXNoIF49
IFdURjo6UHRySGFzaDxBU1Q6OlR5cGUqPjo6aGFzaCgmbV9jYXN0UmV0dXJuVHlwZS0+dW5pZnlO
b2RlKCkpOwotCi0gICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
bV90eXBlcy5zaXplKCkgIT0gb3RoZXIubV90eXBlcy5zaXplKCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3R5
cGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMobV90eXBlc1tpXS5n
ZXQoKSwgb3RoZXIubV90eXBlc1tpXS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KG1fY2FzdFJl
dHVyblR5cGUpICE9IHN0YXRpY19jYXN0PGJvb2w+KG90aGVyLm1fY2FzdFJldHVyblR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICghbV9jYXN0UmV0dXJuVHlw
ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmICgmbV9jYXN0UmV0dXJu
VHlwZS0+dW5pZnlOb2RlKCkgPT0gJm90aGVyLm1fY2FzdFJldHVyblR5cGUtPnVuaWZ5Tm9kZSgp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgRnVuY3Rpb25LZXkmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5o
YXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGdW5j
dGlvbktleSYgYSwgY29uc3QgRnVuY3Rpb25LZXkmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBU
cmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RnVuY3Rpb25LZXk+IHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVl
OwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRnVuY3Rpb25LZXkmIGtl
eSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAg
ICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
VW5uYW1lZFR5cGU+PiBtX3R5cGVzOwotICAgIEFTVDo6TmFtZWRUeXBlKiBtX2Nhc3RSZXR1cm5U
eXBlOwotfTsKLQotc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiByZXNvbHZl
V2l0aFJlZmVyZW5jZUNvbXBhcmF0b3IoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZXNvbHZpbmdU
eXBlJiBmaXJzdEFyZ3VtZW50LCBSZXNvbHZpbmdUeXBlJiBzZWNvbmRBcmd1bWVudCwgY29uc3Qg
SW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBjb25zdCBib29sIGlzT3BlcmF0b3IgPSB0
cnVlOwotICAgIGF1dG8gcmV0dXJuVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2Nh
dGlvbiwgaW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICBhdXRvIGFyZ3VtZW50VHlwZSA9IGZp
cnN0QXJndW1lbnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4mIHVubmFtZWRUeXBlKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1
cm4gdW5uYW1lZFR5cGUuY29weVJlZigpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5
cGVSZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJu
IHNlY29uZEFyZ3VtZW50LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAg
ICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8
UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAg
ICAgICAgICAgIC8vIFdlIGVuY291bnRlcmVkICJudWxsID09IG51bGwiLgotICAgICAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjIg
VGhpcyBjYW4gcHJvYmFibHkgYmUgZ2VuZXJhbGl6ZWQsIHVzaW5nIHRoZSAicHJlZmVycmVkIHR5
cGUiIGluZnJhc3RydWN0dXJlIHVzZWQgYnkgZ2VuZXJpYyBsaXRlcmFscwotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGxvY2F0aW9uLCBpbnRyaW5zaWNzLmludFR5cGUoKSk7Ci0gICAgICAgIH0pKTsK
LSAgICB9KSk7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAg
IHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
Pihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIGFyZ3VtZW50VHlwZS5jb3B5UmVmKCksIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmll
cnMoKSwgV1RGTW92ZShhcmd1bWVudFR5cGUpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OwotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9w
dCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVyYXRvcj09IiwgU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0
b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLX0KLQotZW51bSBjbGFzcyBBY2Nl
cHRhYmlsaXR5IHsKLSAgICBZZXMsCi0gICAgTm8KLX07Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihj
b25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgY29uc3QgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgSW50cmlu
c2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBpZiAobmFtZSA9PSAib3BlcmF0b3I9PSIgJiYgdHlw
ZXMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgYXV0byBhY2NlcHRhYmlsaXR5ID0gW10oUmVzb2x2
aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IEFjY2VwdGFiaWxpdHkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSAmJiBpczxBU1Q6
OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpID8g
QWNjZXB0YWJpbGl0eTo6WWVzIDogQWNjZXB0YWJpbGl0eTo6Tm87Ci0gICAgICAgICAgICB9LCBb
XShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gQWNjZXB0YWJpbGl0eSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEFjY2VwdGFiaWxpdHk6Ok5vOwotICAgICAgICAgICAgfSkp
OwotICAgICAgICB9OwotICAgICAgICBhdXRvIGxlZnRBY2NlcHRhYmlsaXR5ID0gYWNjZXB0YWJp
bGl0eSh0eXBlc1swXS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmlnaHRBY2NlcHRhYmlsaXR5ID0g
YWNjZXB0YWJpbGl0eSh0eXBlc1sxXS5nZXQoKSk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOwotICAgICAgICBpZiAobGVmdEFjY2VwdGFiaWxpdHkgPT0gQWNjZXB0YWJpbGl0eTo6WWVz
ICYmIHJpZ2h0QWNjZXB0YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMpIHsKLSAgICAgICAg
ICAgIGF1dG8mIHVubmFtZWRUeXBlMSA9ICp0eXBlc1swXS5nZXQoKS5nZXRVbm5hbWVkVHlwZSgp
OwotICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUyID0gKnR5cGVzWzFdLmdldCgpLmdldFVu
bmFtZWRUeXBlKCk7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcyh1bm5hbWVkVHlwZTEs
IHVubmFtZWRUeXBlMik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAg
ICAgICAgcmV0dXJuIHJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihsb2NhdGlvbiwgdHlw
ZXNbMF0uZ2V0KCksIHR5cGVzWzFdLmdldCgpLCBpbnRyaW5zaWNzKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RhdGljIGJvb2wgY2hlY2tTZW1hbnRpY3MoVmVjdG9y
PEVudHJ5UG9pbnRJdGVtPiYgaW5wdXRJdGVtcywgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgb3V0
cHV0SXRlbXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QVNUOjpFbnRyeVBvaW50VHlwZT4mIGVudHJ5
UG9pbnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIHsKLSAgICAg
ICAgYXV0byBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBpdGVtcykgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IGkgKyAxOyBqIDwgaXRlbXMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZW1zW2ldLnNlbWFudGljID09IGl0ZW1zW2pdLnNlbWFudGljKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNo
ZWNrRHVwbGljYXRlU2VtYW50aWNzKGlucHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoIWNoZWNrRHVwbGljYXRlU2VtYW50aWNzKG91dHB1dEl0ZW1zKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8g
Y2hlY2tTZW1hbnRpY1R5cGVzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0
ZW1zKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBhY2NlcHRhYmxlID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShjb25zdCBBU1Q6OkJhc2VTZW1hbnRpYyYgc2VtYW50aWMpIC0+IGJvb2wgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWMuaXNBY2NlcHRhYmxlVHlwZSgqaXRlbS51
bm5hbWVkVHlwZSwgaW50cmluc2ljcyk7Ci0gICAgICAgICAgICAgICAgfSksICppdGVtLnNlbWFu
dGljKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdGFibGUpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEl0ZW1z
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGlj
VHlwZXMob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgYXV0byBjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZSA9IFsmXShjb25z
dCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcywgQVNUOjpCYXNlU2VtYW50aWM6OlNoYWRl
ckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhY2NlcHRhYmxlID0gV1RG
Ojp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBBU1Q6OkJhc2VTZW1hbnRpYyYgc2Vt
YW50aWMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWMuaXNB
Y2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihkaXJlY3Rpb24sIGVudHJ5UG9pbnRUeXBl
KTsKLSAgICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgICAg
IGlmICghYWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAg
IGlmICghY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaW5wdXRJdGVtcywgQVNUOjpCYXNlU2Vt
YW50aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0KSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShvdXRwdXRJdGVt
cywgQVNUOjpCYXNlU2VtYW50aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1dCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGNoZWNr
UE9ERGF0YSA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcykgLT4gYm9v
bCB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICAgICAg
ICAgIFBPRENoZWNrZXIgcG9kQ2hlY2tlcjsKLSAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpQ
b2ludGVyVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHBvZENo
ZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCppdGVt
LnVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChp
czxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAg
ICAgICAgICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJy
YXlSZWZlcmVuY2VUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KGl0ZW0udW5uYW1lZFR5cGUp
KQotICAgICAgICAgICAgICAgICAgICBwb2RDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkFycmF5VHlwZT4oKml0ZW0udW5uYW1lZFR5cGUpLnR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICBpZiAocG9kQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfTsKLSAgICAgICAgaWYgKCFjaGVja1BPRERhdGEoaW5wdXRJdGVtcykpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tQT0REYXRhKG91dHB1dEl0ZW1zKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGJvb2wgY2hlY2tPcGVyYXRvck92ZXJsb2FkKGNvbnN0IEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgZW51bSBjbGFzcyBDaGVja0tp
bmQgewotICAgICAgICBJbmRleCwKLSAgICAgICAgRG90Ci0gICAgfTsKLQotICAgIGlmICghZnVu
Y3Rpb25EZWZpbml0aW9uLmlzT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5pc0Nhc3QoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKysiIHx8IGZ1bmN0
aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLS0iKSB7Ci0gICAgICAgIHJldHVybiBm
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxCi0gICAgICAgICAgICAm
JiBtYXRjaGVzKCpmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCksIGZ1
bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0
aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IrIiB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09
ICJvcGVyYXRvci0iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMSB8fCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSAyOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcioi
Ci0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLyIKLSAg
ICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IlIgotICAgICAg
ICB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvciYiCi0gICAgICAgIHx8
IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfCIKLSAgICAgICAgfHwgZnVu
Y3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3JeIgotICAgICAgICB8fCBmdW5jdGlv
bkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcjw8IgotICAgICAgICB8fCBmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcj4+IikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
RGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7Ci0gICAgaWYgKGZ1bmN0aW9uRGVm
aW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfiIpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbkRl
ZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotY2xhc3MgQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBDaGVja2Vy
KGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIFByb2dyYW0mIHByb2dyYW0pCi0gICAgICAg
IDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9wcm9ncmFtKHByb2dyYW0p
Ci0gICAgewotICAgICAgICBhdXRvIGFkZEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24mIGZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJl
dHVyblR5cGUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLmlzQ2FzdCgpICYm
IGlzPEFTVDo6TmFtZWRUeXBlPihmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCkpKQotICAgICAg
ICAgICAgICAgIGNhc3RSZXR1cm5UeXBlID0gJmRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihmdW5j
dGlvbi50eXBlKCkudW5pZnlOb2RlKCkpOwotCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gdHlwZXM7Ci0gICAgICAgICAgICB0eXBl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwot
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHBhcmFtIDogZnVuY3Rpb24ucGFyYW1ldGVycygpKQot
ICAgICAgICAgICAgICAgIHR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxpemVkVHlwZUZvckZ1
bmN0aW9uS2V5KCpwYXJhbS0+dHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9mdW5jdGlvbnMuYWRkKEZ1bmN0aW9uS2V5IHsgZnVuY3Rpb24ubmFtZSgpLCBXVEZNb3Zl
KHR5cGVzKSwgY2FzdFJldHVyblR5cGUgfSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0g
ICAgICAgICAgICBhZGRGdW5jdGlvbihmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAgIGZvciAoYXV0
byYgZnVuY3Rpb24gOiBtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkKLSAg
ICAgICAgICAgIGFkZEZ1bmN0aW9uKGZ1bmN0aW9uLmdldCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIH5DaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChQcm9ncmFtJikgb3Zl
cnJpZGU7Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXNzaWduVHlwZXMoKTsKLQotcHJp
dmF0ZToKLSAgICBib29sIGNoZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYpOwotICAgIGJvb2wgaXNCb29sVHlwZShSZXNvbHZpbmdUeXBlJik7Ci0gICAgc3RydWN0
IFJlY3Vyc2VJbmZvIHsKLSAgICAgICAgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZTsKLSAg
ICAgICAgY29uc3QgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbjsKLSAgICB9Owot
ICAgIHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJbmZvKEFTVDo6RXhw
cmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAgc3RkOjpvcHRp
b25hbDxSZWN1cnNlSW5mbz4gZ2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29sIHJlcXVpcmVz
TGVmdFZhbHVlID0gZmFsc2UpOwotICAgIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiByZWN1cnNl
QW5kV3JhcEJhc2VUeXBlKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJik7Ci0gICAgYm9v
bCByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYpOwotICAgIHZvaWQg
YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYsIFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBhc3NpZ25Db25jcmV0ZVR5cGUoQVNU
OjpFeHByZXNzaW9uJiwgQVNUOjpOYW1lZFR5cGUmLCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLSAg
ICB2b2lkIGFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmUHRyPFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlPiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBmb3J3YXJkVHlwZShB
U1Q6OkV4cHJlc3Npb24mLCBSZXNvbHZpbmdUeXBlJiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVm
ZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVn
ZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpXaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3Am
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlRlcm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJl
c29sdmVGdW5jdGlvbihWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiwgQVNUOjpOYW1lZFR5
cGUqIGNhc3RSZXR1cm5UeXBlID0gbnVsbHB0cik7Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiB3
cmFwcGVkRmxvYXRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVkRmxvYXRUeXBl
KQotICAgICAgICAgICAgbV93cmFwcGVkRmxvYXRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKHsgfSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICptX3dy
YXBwZWRGbG9hdFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYgd3JhcHBlZFVp
bnRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVkVWludFR5cGUpCi0gICAgICAg
ICAgICBtX3dyYXBwZWRVaW50VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh7IH0sIG1f
aW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICptX3dyYXBwZWRVaW50VHlw
ZTsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiBub3JtYWxpemVkVHlwZUZvckZ1bmN0
aW9uS2V5KEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpCi0gICAgewotICAgICAgICBhdXRvKiB1bmlm
eU5vZGUgPSAmdHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKHVuaWZ5Tm9kZSA9PSAmbV9p
bnRyaW5zaWNzLnVpbnRUeXBlKCkgfHwgdW5pZnlOb2RlID09ICZtX2ludHJpbnNpY3MuaW50VHlw
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRGbG9hdFR5cGUoKTsKLQotICAgICAgICBy
ZXR1cm4gdHlwZTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3dy
YXBwZWRGbG9hdFR5cGU7Ci0gICAgUmVmUHRyPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV93cmFwcGVk
VWludFR5cGU7Ci0gICAgSGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVzb2x2aW5nVHlwZT4+IG1fdHlwZU1hcDsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV92ZXJ0ZXhF
bnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9m
cmFnbWVudEVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2NvbXB1dGVFbnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBjb25z
dCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgUHJvZ3JhbSYgbV9wcm9ncmFtOwotICAg
IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiBtX2N1cnJlbnRGdW5jdGlvbiB7IG51bGxwdHIgfTsK
LSAgICBIYXNoTWFwPEZ1bmN0aW9uS2V5LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiwgRnVuY3Rpb25LZXk6Okhhc2gsIEZ1bmN0aW9u
S2V5OjpUcmFpdHM+IG1fZnVuY3Rpb25zOwotICAgIEFTVDo6TmFtZVNwYWNlIG1fY3VycmVudE5h
bWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLSAgICBib29sIG1f
aXNWaXNpdGluZ1BhcmFtZXRlcnMgeyBmYWxzZSB9OwotfTsKLQotdm9pZCBDaGVja2VyOjp2aXNp
dChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZXNlIHZpc2l0aW5nIGZ1bmN0aW9ucyBt
aWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBkb24ndCB1c2UgZm9yZWFjaCBzeW50
YXguCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygp
LnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS50eXBlRGVm
aW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnN0cnVj
dHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMo
KVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNs
YXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dy
YW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJv
cj4gQ2hlY2tlcjo6YXNzaWduVHlwZXMoKQotewotICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWly
IDogbV90eXBlTWFwKSB7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IGtleVZhbHVlUGFpci52YWx1
ZS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5h
bWVkVHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBrZXlWYWx1ZVBhaXIua2V5LT5zZXRUeXBl
KHVubmFtZWRUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBl
UmVmZXJlbmNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIGlmICghcmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKSkgewotICAgICAgICAg
ICAgICAgIGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4oY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLT5yZXNvbHZhYmxlVHlwZSgpKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleVZhbHVlUGFpci5rZXktPnNldFR5cGUo
cmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBu
b3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiBhIGNvbnN0YW50LiIpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4geyB9OwotfQotCi1ib29sIENoZWNrZXI6OmNoZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1dG8gaW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBzd2l0Y2gg
KCpmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSkgewotICAgIGNhc2UgQVNUOjpF
bnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV92ZXJ0ZXhFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkp
KTsKLSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9mcmFnbWVudEVudHJ5UG9pbnRzW2luZGV4XS5hZGQoZnVu
Y3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIGNhc2UgQVNUOjpFbnRyeVBvaW50VHlwZTo6
Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29tcHV0ZUVudHJ5
UG9pbnRzW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIH0KLX0K
LQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9u
RGVjbGFyYXRpb24pCi17Ci0gICAgbV9pc1Zpc2l0aW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAg
VmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgbV9pc1Zpc2l0aW5nUGFy
YW1ldGVycyA9IGZhbHNlOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgbV9jdXJyZW50TmFtZVNwYWNl
ID0gZnVuY3Rpb25EZWZpbml0aW9uLm5hbWVTcGFjZSgpOwotICAgIG1fY3VycmVudEZ1bmN0aW9u
ID0gJmZ1bmN0aW9uRGVmaW5pdGlvbjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5
UG9pbnRUeXBlKCkpIHsKLSAgICAgICAgaWYgKCFjaGVja1NoYWRlclR5cGUoZnVuY3Rpb25EZWZp
bml0aW9uKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkR1cGxpY2F0ZSBlbnRyeXBv
aW50IGZ1bmN0aW9uLiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gZW50cnlQb2ludEl0ZW1z
ID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKG1faW50cmluc2ljcywgZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICAgICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KGVudHJ5UG9pbnRJdGVtcy5lcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNzKGVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCBl
bnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlw
ZSgpLCBtX2ludHJpbnNpY3MpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFkIHNl
bWFudGljcyBmb3IgZW50cnlwb2ludC4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWNo
ZWNrT3BlcmF0b3JPdmVybG9hZChmdW5jdGlvbkRlZmluaXRpb24pKSB7Ci0gICAgICAgIHNldEVy
cm9yKEVycm9yKCJPcGVyYXRvciBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBzaWduYXR1cmUuIiwg
ZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotfQotCi1zdGF0
aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUm
IGxlZnQsIFJlc29sdmluZ1R5cGUmIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0LnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgbGVmdCkgLT4gUmVmUHRy
PEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJpZ2h0LnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlcyhsZWZ0LCByaWdodCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQuY29weVJlZigpOwotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAgIHJldHVy
biBtYXRjaEFuZENvbW1pdChsZWZ0LCByaWdodC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAg
IH0pKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgbGVmdCkg
LT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJpZ2h0LnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmlnaHQpIC0+IFJl
ZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21t
aXQocmlnaHQsIGxlZnQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9LCBbJl0oUmVmUHRy
PFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRU
eXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobGVmdC0+cmVzb2x2YWJs
ZVR5cGUoKSwgcmlnaHQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfSkp
OwotfQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KFJl
c29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBl
KQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZd
KFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgLT4gUmVmUHRyPEFTVDo6VW5u
YW1lZFR5cGU+IHsKLSAgICAgICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIHJlc29sdmluZ1R5
cGUpKQotICAgICAgICAgICAgcmV0dXJuICZ1bm5hbWVkVHlwZTsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29s
dmluZ1R5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiBt
YXRjaEFuZENvbW1pdCh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZS0+cmVzb2x2YWJsZVR5cGUo
KSk7Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgYm9vbCBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdU
eXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewotICAgIHJl
dHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgewotICAgICAgICBpZiAobWF0Y2hlcyhyZXNvbHZp
bmdUeXBlLCBuYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYg
cmVzb2x2aW5nVHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChu
YW1lZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFibGVUeXBlKCkpOwotICAgIH0pKTsKLX0K
LQotc3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoUmVzb2x2aW5nVHlwZSYg
cmVzb2x2aW5nVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBSZWZQ
dHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUuY29weVJl
ZigpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAg
aWYgKCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5tYXliZVJlc29s
dmVkVHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmcmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0gICAgfSkpOwotfQot
Ci1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIENoZWNrZXI6OnJlc29sdmVGdW5jdGlvbihWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQVNUOjpOYW1lZFR5cGUqIGNhc3RS
ZXR1cm5UeXBlKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5u
YW1lZFR5cGU+PiB1bm5hbWVkVHlwZXM7Ci0gICAgdW5uYW1lZFR5cGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsKLQotICAgIGZvciAoYXV0byByZXNvbHZpbmdUeXBlIDog
dHlwZXMpIHsKLSAgICAgICAgQVNUOjpVbm5hbWVkVHlwZSogdHlwZSA9IHJlc29sdmluZ1R5cGUu
Z2V0KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1
bm5hbWVkVHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICAgICAgcmV0dXJuIHVu
bmFtZWRUeXBlLnB0cigpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsK
LSAgICAgICAgICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUo
KS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAmcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAg
ICAgICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5pc0Zs
b2F0TGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8IHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzSW50ZWdlckxpdGVyYWxUeXBlKCkKLSAgICAgICAgICAg
ICAgICB8fCByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5pc1Vuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICZ3cmFwcGVk
RmxvYXRUeXBlKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb21taXQocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkpLmdldCgpOwotICAgICAgICB9KSk7Ci0KLSAgICAg
ICAgaWYgKCF0eXBlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ291bGQgbm90IHJl
c29sdmUgdGhlIHR5cGUgb2YgYSBjb25zdGFudC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHVubmFtZWRUeXBlcy51bmNoZWNrZWRBcHBlbmQo
bm9ybWFsaXplZFR5cGVGb3JGdW5jdGlvbktleSgqdHlwZSkpOwotICAgIH0KLQotICAgIHsKLSAg
ICAgICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnMuZmluZChGdW5jdGlvbktleSB7IG5hbWUsIFdU
Rk1vdmUodW5uYW1lZFR5cGVzKSwgY2FzdFJldHVyblR5cGUgfSk7Ci0gICAgICAgIGlmIChpdGVy
ICE9IG1fZnVuY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAoQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKGl0ZXItPnZhbHVl
LCB0eXBlcywgY2FzdFJldHVyblR5cGUsIG1fY3VycmVudE5hbWVTcGFjZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8g
bmV3RnVuY3Rpb24gPSByZXNvbHZlQnlJbnN0YW50aWF0aW9uKG5hbWUsIGxvY2F0aW9uLCB0eXBl
cywgbV9pbnRyaW5zaWNzKSkgewotICAgICAgICBtX3Byb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5l
d0Z1bmN0aW9uKSk7Ci0gICAgICAgIHJldHVybiAmbV9wcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zKCkubGFzdCgpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi12
b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24pCi17Ci0gICAgYm9vbCBpc1NpZ25lZDsKLSAgICBhdXRvKiBiYXNlVHlwZSA9
IChbJl0oKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgICAgIGF1dG8m
IGJhc2VUeXBlID0gZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAg
ICAgICAgaWYgKCFpczxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPihiYXNlVHlwZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9u
LmlzSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaXNTaWduZWQg
PSBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKTsKLSAgICAgICAgcmV0dXJuICZuYXRp
dmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSkoKTsKLSAgICBpZiAoIWJhc2VUeXBlKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIGJhc2UgdHlwZSBmb3IgZW51bS4iLCBlbnVtZXJh
dGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGF1dG8gZW51bWVyYXRpb25NZW1iZXJzID0gZW51bWVyYXRpb25EZWZpbml0aW9uLmVu
dW1lcmF0aW9uTWVtYmVycygpOwotCi0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlv
bk1lbWJlcnMpIHsKLSAgICAgICAgaW50NjRfdCB2YWx1ZSA9IG1lbWJlci5nZXQoKS52YWx1ZSgp
OwotICAgICAgICBpZiAoaXNTaWduZWQpIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQ2NF90PihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24gdmFsdWUuIiwgbWVt
YmVyLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PGludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24gdmFsdWUuIiwg
bWVtYmVyLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IGVudW1lcmF0aW9uTWVtYmVyc1tpXS5nZXQoKS52YWx1ZSgpOwotICAgICAgICBmb3IgKHNp
emVfdCBqID0gaSArIDE7IGogPCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyArK2opIHsKLSAg
ICAgICAgICAgIGF1dG8gb3RoZXJWYWx1ZSA9IGVudW1lcmF0aW9uTWVtYmVyc1tqXS5nZXQoKS52
YWx1ZSgpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IG90aGVyVmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRlIGVudW1lcmF0
aW9uIHZhbHVlcy4iLCBlbnVtZXJhdGlvbk1lbWJlcnNbal0uZ2V0KCkuY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBib29sIGZvdW5kWmVybyA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgbWVtYmVy
IDogZW51bWVyYXRpb25NZW1iZXJzKSB7Ci0gICAgICAgIGlmICghbWVtYmVyLmdldCgpLnZhbHVl
KCkpIHsKLSAgICAgICAgICAgIGZvdW5kWmVybyA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWZvdW5kWmVybykgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiZW51bSBkZWZpbml0aW9uIG11c3QgY29udGFpbiBhIHplcm8gdmFsdWUuIiwgZW51
bWVyYXRpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVm
ZXJlbmNlKQotewotICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkp
OwotCi0gICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1
bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0K
LWF1dG8gQ2hlY2tlcjo6cmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiBleHByZXNz
aW9uLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZv
PgotewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgIGlmIChoYXNFcnJvcigp
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBnZXRJbmZvKGV4cHJl
c3Npb24sIHJlcXVpcmVzTGVmdFZhbHVlKTsKLX0KLQotYXV0byBDaGVja2VyOjpnZXRJbmZvKEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4gc3Rk
OjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KLXsKLSAgICBhdXRvIHR5cGVJdGVyYXRvciA9IG1fdHlw
ZU1hcC5maW5kKCZleHByZXNzaW9uKTsKLSAgICBBU1NFUlQodHlwZUl0ZXJhdG9yICE9IG1fdHlw
ZU1hcC5lbmQoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiB0eXBlQW5ub3RhdGlvbiA9IGV4cHJlc3Np
b24udHlwZUFubm90YXRpb24oKTsKLSAgICBpZiAocmVxdWlyZXNMZWZ0VmFsdWUgJiYgdHlwZUFu
bm90YXRpb24uaXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhw
ZWN0ZWQgcnZhbHVlLiIsIGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgcmV0dXJuIHt7ICp0eXBlSXRlcmF0b3ItPnZh
bHVlLCB0eXBlQW5ub3RhdGlvbiB9fTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgLy8gUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbnMgYXJlIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGFub255bW91cyB2
YXJpYWJsZXMgZXhpc3QsCi0gICAgLy8gYW5kIHRoYXQgZG9lc24ndCByZWN1cnNlIG9uIHRoZSBh
bm9ueW1vdXMgdmFyaWFibGVzLCBzbyB3ZSBjYW4gYXNzdW1lIHRoZSB2YXJpYWJsZSBoYXMgYSB0
eXBlLgotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkp
OwotICAgIGlmIChtYXRjaGVzKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSwgbV9pbnRyaW5z
aWNzLnZvaWRUeXBlKCkpKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJWYXJpYWJsZXMgY2Fu
J3QgaGF2ZSB2b2lkIHR5cGUuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpIHsKLSAgICAgICAgYXV0byYgbGhzVHlwZSA9ICp2YXJpYWJsZURlY2xhcmF0
aW9uLnR5cGUoKTsKLSAgICAgICAgYXV0byBpbml0aWFsaXplckluZm8gPSByZWN1cnNlQW5kR2V0
SW5mbygqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAgICAgaWYgKCFp
bml0aWFsaXplckluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghbWF0Y2hB
bmRDb21taXQoaW5pdGlhbGl6ZXJJbmZvLT5yZXNvbHZpbmdUeXBlLCBsaHNUeXBlKSkgewotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkRlY2xhcmVkIHZhcmlhYmxlIHR5cGUgZG9lcyBub3Qg
bWF0Y2ggaXRzIGluaXRpYWxpemVyJ3MgdHlwZS4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVM
b2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
aWYgKCFtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4odmFy
aWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgpKSkgewotICAgICAgICBpZiAoaXM8
QVNUOjpQb2ludGVyVHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgp
KSkKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJNdXN0IGFzc2lnbiB0byBhIHBvaW50ZXIg
dmFyaWFibGUgZGVjbGFyYXRpb24gaW4gaXRzIGluaXRpYWxpemVyLiIsIHZhcmlhYmxlRGVjbGFy
YXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NF
UlQoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgp
LT51bmlmeU5vZGUoKSkpOwotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk11c3QgYXNzaWdu
IHRvIGFuIGFycmF5IHJlZmVyZW5jZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBpdHMgaW5pdGlh
bGl6ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWduQ29uY3Jl
dGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpS
aWdodFZhbHVlKCkpCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHBy
ZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7
Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAg
ICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsK
LX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uLCBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiBhbm5v
dGF0aW9uKQotewotICAgIGF1dG8gdW5uYW1lZFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAodHlwZS5jb2RlTG9jYXRpb24oKSwgdHlwZSk7Ci0gICAgVmlzaXRvcjo6dmlzaXQodW5uYW1l
ZFR5cGUpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShleHByZXNzaW9uLCBXVEZNb3ZlKHVubmFt
ZWRUeXBlKSwgYW5ub3RhdGlvbik7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4g
cmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRp
b24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1h
cC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RG
TW92ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwg
QVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQot
ewotICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6
VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5
UmVmKCkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVz
dWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfSkp
OwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24m
IGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdEluZm8gPSByZWN1cnNlQW5k
R2V0SW5mbyhhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCksIHRydWUpOwotICAgIGlmICghbGVm
dEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmlnaHRJbmZvID0gcmVjdXJzZUFu
ZEdldEluZm8oYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgaWYgKCFyaWdodElu
Zm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1hdGNoQW5kQ29t
bWl0KGxlZnRJbmZvLT5yZXNvbHZpbmdUeXBlLCByaWdodEluZm8tPnJlc29sdmluZ1R5cGUpOwot
ICAgIGlmICghcmVzdWx0VHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiTGVmdCBoYW5k
IHNpZGUgb2YgYXNzaWdubWVudCBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgcmlnaHQg
aGFuZCBzaWRlLiIsIGFzc2lnbm1lbnRFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoYXNzaWdubWVudEV4
cHJlc3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0g
ICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVl
KCkuc2V0VHlwZSgqbGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZS5nZXRVbm5hbWVkVHlwZSgp
KTsKLQotICAgIGF1dG8gbmV3VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgaWYgKCFuZXdWYWx1
ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChSZWZQdHI8QVNUOjpVbm5hbWVkVHlw
ZT4gbWF0Y2hlZFR5cGUgPSBtYXRjaEFuZENvbW1pdChsZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdU
eXBlLCBuZXdWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpKQotICAgICAgICByZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkuc2V0VHlwZSgqbWF0Y2hlZFR5cGUpOwotICAgIGVsc2Ug
ewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFzZSBvZiB0aGUgcmVhZC1tb2RpZnktd3JpdGUg
ZXhwcmVzc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgbmV3IHZhbHVlLiIsIHJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGF1dG8gcmVzdWx0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBpZiAoIXJlc3Vs
dEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvcndhcmRUeXBlKHJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24sIHJlc3VsdEluZm8tPnJlc29sdmluZ1R5cGUsIEFTVDo6UmlnaHRWYWx1ZSgp
KTsKLX0KLQotc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIGdldFVubmFtZWRUeXBlKFJlc29sdmlu
Z1R5cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHR5cGUpIC0+IEFTVDo6
VW5uYW1lZFR5cGUqIHsKLSAgICAgICAgcmV0dXJuIHR5cGUucHRyKCk7Ci0gICAgfSwgW10oUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgdHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSog
ewotICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHR5cGUgaXNuJ3QgY29tbWl0dGVkLCBzaG91bGQg
d2UganVzdCBjb21taXQoKSBpdCBub3c/Ci0gICAgICAgIHJldHVybiB0eXBlLT5yZXNvbHZhYmxl
VHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCk7Ci0gICAgfSkpOwotfQotCi12b2lkIENoZWNrZXI6
OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24p
Ci17Ci0gICAgYXV0byBwb2ludGVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRlcmVmZXJlbmNl
RXhwcmVzc2lvbi5wb2ludGVyKCkpOwotICAgIGlmICghcG9pbnRlckluZm8pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8qIHVubmFtZWRUeXBlID0gZ2V0VW5uYW1lZFR5cGUocG9pbnRlcklu
Zm8tPnJlc29sdmluZ1R5cGUpOwotCi0gICAgYXV0byogcG9pbnRlclR5cGUgPSAoWyZdKEFTVDo6
VW5uYW1lZFR5cGUqIHVubmFtZWRUeXBlKSAtPiBBU1Q6OlBvaW50ZXJUeXBlKiB7Ci0gICAgICAg
IGlmICghdW5uYW1lZFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
YXV0byYgdW5pZnlOb2RlID0gdW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAo
IWlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgYXV0byYgdW5uYW1lZFVuaWZ5VHlwZSA9IGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpQb2ludGVyVHlwZT4o
dW5uYW1lZFVuaWZ5VHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVW5pZnlUeXBlKTsKLSAg
ICB9KSh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKCFwb2ludGVyVHlwZSkgewotICAgICAgICBzZXRF
cnJvcihFcnJvcigiQ2Fubm90IGRlcmVmZXJlbmNlIGEgbm9uLXBvaW50ZXIgdHlwZS4iLCBkZXJl
ZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24sIHBvaW50
ZXJUeXBlLT5lbGVtZW50VHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IHBvaW50ZXJUeXBlLT5hZGRy
ZXNzU3BhY2UoKSB9KTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6Ok1ha2VQb2ludGVy
RXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdFZhbHVl
SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUo
KSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5s
ZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhIG5vbiBsdmFsdWUu
IiwgbWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvKiBsZWZ0VmFsdWVUeXBlID0gZ2V0VW5uYW1lZFR5cGUobGVm
dFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVUeXBlKSB7Ci0g
ICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhIHZhbHVl
IHdpdGhvdXQgYSB0eXBlLiIsIG1ha2VQb2ludGVyRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VQ
b2ludGVyRXhwcmVzc2lvbiwgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKG1ha2VQb2ludGVyRXhw
cmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNzU3BhY2UsICpsZWZ0VmFsdWVUeXBl
KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdFZh
bHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byogbGVmdFZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKGxlZnRWYWx1ZUluZm8t
PnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghbGVmdFZhbHVlVHlwZSkgewotICAgICAgICBzZXRF
cnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVmZXJlbmNlIG9mIGEgdmFsdWUgd2l0
aG91dCBhIHR5cGUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdW5pZnlOb2RlID0gbGVm
dFZhbHVlVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVu
aWZ5Tm9kZSkpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4o
dW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0
PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGFzc2lnbkNvbmNy
ZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCks
IHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpLCBwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGxlZnRBZGRy
ZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5sZWZ0QWRkcmVzc1NwYWNl
KCk7Ci0gICAgICAgIGlmICghbGVmdEFkZHJlc3NTcGFjZSkgewotICAgICAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVyZW5jZSBmcm9tIGEgbm9uLWxlZnQt
dmFsdWUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6QXJy
YXlUeXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRv
d25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MyBTYXZlIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMuCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0
ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCAqbGVmdEFkZHJl
c3NTcGFjZSwgYXJyYXlUeXBlLnR5cGUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gbGVmdFZhbHVlSW5mby0+
dHlwZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgpOwotICAgIGlmICghbGVmdEFkZHJlc3NT
cGFjZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVm
ZXJlbmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4iLCBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3Np
Z25Db25jcmV0ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2Nh
dGlvbigpLCAqbGVmdEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0KLQotdm9pZCBD
aGVja2VyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAg
YXV0byBiYXNlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRvdEV4cHJlc3Npb24uYmFzZSgpKTsK
LSAgICBpZiAoIWJhc2VJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJhc2VVbm5h
bWVkVHlwZSA9IGNvbW1pdChiYXNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFiYXNl
VW5uYW1lZFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHRo
ZSB0eXBlIG9mIHRoZSBiYXNlIG9mIGEgZG90IGV4cHJlc3Npb24uIiwgZG90RXhwcmVzc2lvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdHlw
ZSA9IGJhc2VVbm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlID0gZG93bmNh
c3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsgICAgCi0gICAgICAgIGlmIChBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQqIGVsZW1lbnQgPSBzdHJ1Y3R1cmUuZmluZChkb3RFeHByZXNzaW9u
LmZpZWxkTmFtZSgpKSkKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNz
aW9uLCBlbGVtZW50LT50eXBlKCksIGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbik7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiRmllbGQgbmFt
ZTogJyIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCksICInIGRvZXMgbm90IGV4aXN0IG9uIHN0
cnVjdHVyZTogIiwgc3RydWN0dXJlLm5hbWUoKSksIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZG90
RXhwcmVzc2lvbi5maWVsZE5hbWUoKSA9PSAibGVuZ3RoIikgewotICAgICAgICBpZiAoaXM8QVNU
OjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpCi0gICAgICAgICAgICB8fCBpczxBU1Q6OkFycmF5
VHlwZT4odHlwZSkKLSAgICAgICAgICAgIHx8IChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4odHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLmlz
VmVjdG9yKCkpKSB7Ci0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lv
biwgd3JhcHBlZFVpbnRUeXBlKCksIEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCIubGVuZ3RoIGZpZWxkIGlzIG9ubHkgYXZh
aWxhYmxlIG9uIGFycmF5cywgYXJyYXkgcmVmZXJlbmNlcywgb3IgdmVjdG9ycy4iLCBkb3RFeHBy
ZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBk
b3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkgewot
ICAgICAgICBpZiAoIW1fcHJvZ3JhbS5pc1ZhbGlkVmVjdG9yUHJvcGVydHkoZG90RXhwcmVzc2lv
bi5maWVsZE5hbWUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKG1ha2VTdHJpbmco
IicuIiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSwgIicgaXMgbm90IGEgdmFsaWQgcHJvcGVy
dHkgb24gYSB2ZWN0b3IuIiksIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdHlwZUFubm90YXRpb24g
PSBiYXNlSW5mby0+dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkgPyBBU1Q6OlR5cGVBbm5v
dGF0aW9uIHsgQVNUOjpSaWdodFZhbHVlKCkgfSA6IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6
OkFic3RyYWN0TGVmdFZhbHVlKCkgfTsKLQotICAgICAgICBzaXplX3QgZmllbGRMZW5ndGggPSBk
b3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpLmxlbmd0aCgpOwotICAgICAgICBhdXRvJiBpbm5lclR5
cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkudmVjdG9yVHlw
ZUFyZ3VtZW50KCk7Ci0gICAgICAgIGlmIChmaWVsZExlbmd0aCA9PSAxKQotICAgICAgICAgICAg
YXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGlubmVyVHlwZSwgdHlwZUFubm90YXRp
b24pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlubmVyVHlwZSwg
bV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRl
VHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuYm9vbFZlY3RvclR5cGVGb3JTaXplKGZp
ZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hl
cyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5pbnRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuaW50VmVjdG9yVHlw
ZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNl
IGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpKQotICAgICAg
ICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3Mu
dWludFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAg
ICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5mbG9hdFR5
cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24s
IG1faW50cmluc2ljcy5mbG9hdFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFu
bm90YXRpb24pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkJhc2UgdmFsdWUgb2YgZG90IGV4cHJlc3Npb24gbXVzdCBiZSBhIHN0cnVjdHVy
ZSwgYXJyYXksIG9yIHZlY3Rvci4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVz
c2lvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZXhJbmZvID0gcmVjdXJzZUFuZEdldElu
Zm8oaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgaWYgKCFpbmRl
eEluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1p
dChpbmRleEluZm8tPnJlc29sdmluZ1R5cGUsIG1faW50cmluc2ljcy51aW50VHlwZSgpKSkgewot
ICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGluIGFuIGluZGV4IGV4cHJlc3Npb24g
bXVzdCBiZSBhIHVpbnQuIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGJhc2VJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8oaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgaWYgKCFiYXNl
SW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBiYXNlVW5uYW1lZFR5cGUgPSBjb21t
aXQoYmFzZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghYmFzZVVubmFtZWRUeXBlKSB7
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiB0aGUg
YmFzZSBvZiBhbiBpbmRleCBleHByZXNzaW9uLiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdHlwZSA9IGJhc2VV
bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VU
eXBlPih0eXBlKSkgewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2Fz
dDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSk7Ci0gICAgICAgIGFzc2lnbkNvbmNyZXRl
VHlwZShpbmRleEV4cHJlc3Npb24sIGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpLCBB
U1Q6OkxlZnRWYWx1ZSB7IGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSB9KTsKLSAg
ICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkKLSAgICAgICAgYXNzaWduQ29u
Y3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHR5cGUp
LnR5cGUoKSwgYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgbmF0aXZlVHlw
ZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsKLSAgICAgICAg
YXV0byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbi5pc1JpZ2h0VmFs
dWUoKSA/IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OlJpZ2h0VmFsdWUoKSB9IDogQVNUOjpU
eXBlQW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJhY3RMZWZ0VmFsdWUoKSB9OwotICAgICAgICBpZiAo
bmF0aXZlVHlwZS5pc1ZlY3RvcigpKQotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGlu
ZGV4RXhwcmVzc2lvbiwgbmF0aXZlVHlwZS52ZWN0b3JUeXBlQXJndW1lbnQoKSwgdHlwZUFubm90
YXRpb24pOwotICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlLmlzTWF0cml4KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8mIGlubmVyVHlwZSA9IG5hdGl2ZVR5cGUubWF0cml4VHlwZUFyZ3VtZW50KCk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gbmF0aXZlVHlwZS5udW1iZXJPZk1hdHJp
eFJvd3MoKTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNz
LmJvb2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShpbmRleEV4
cHJlc3Npb24sIG1faW50cmluc2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUobnVtUm93cyksIHR5
cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBt
X2ludHJpbnNpY3MuZmxvYXRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRl
VHlwZShpbmRleEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5mbG9hdFZlY3RvclR5cGVGb3JTaXpl
KG51bVJvd3MpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRleCBleHByZXNzaW9uIG9uIHVua25vd24gdHlw
ZS4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRl
eCBleHByZXNzaW9uIG9uIGFuIHVua25vd24gYmFzZSB0eXBlLiBCYXNlIHR5cGUgbXVzdCBiZSBh
biBhcnJheSwgYXJyYXkgcmVmZXJlbmNlLCB2ZWN0b3IsIG9yIG1hdHJpeC4iLCBpbmRleEV4cHJl
c3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5j
ZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0gICAgQVNT
RVJUKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCktPnR5cGUoKSk7Ci0gICAgCi0gICAgYXNz
aWduQ29uY3JldGVUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLCAqdmFyaWFibGVSZWZlcmVuY2UudmFy
aWFibGUoKS0+dHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJl
YWQgfSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRl
bWVudCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsKLSAgICAgICAgYXV0
byB2YWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbygqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkp
OwotICAgICAgICBpZiAoIXZhbHVlSW5mbykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKCFtYXRjaEFuZENvbW1pdCh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG1fY3VycmVudEZ1
bmN0aW9uLT50eXBlKCkpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlR5cGUgb2YgdGhl
IHJldHVybiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24u
IiwgcmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1hdGNoZXMobV9jdXJyZW50RnVuY3Rpb24tPnR5cGUoKSwgbV9pbnRy
aW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJldHVy
biBhIHZhbHVlIGZyb20gYSB2b2lkIGZ1bmN0aW9uLiIsIHJldHVyblN0YXRlbWVudC5jb2RlTG9j
YXRpb24oKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKQot
ewotICAgIC8vIEZvbGxvd2luZyBwb2ludGVyIHR5cGVzIGNhbiBjYXVzZSBpbmZpbml0ZSBsb29w
cyBiZWNhdXNlIG9mIGRhdGEgc3RydWN0dXJlcwotICAgIC8vIGxpa2UgbGlua2VkIGxpc3RzLgot
ICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZW1wdHkKLX0K
LQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpCi17Ci0gICAg
Ly8gRm9sbG93aW5nIGFycmF5IHJlZmVyZW5jZSB0eXBlcyBjYW4gY2F1c2UgaW5maW5pdGUgbG9v
cHMgYmVjYXVzZSBvZiBkYXRhCi0gICAgLy8gc3RydWN0dXJlcyBsaWtlIGxpbmtlZCBsaXN0cy4K
LSAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGVtcHR5Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVy
YWwpCi17Ci0gICAgYXNzaWduVHlwZShpbnRlZ2VyTGl0ZXJhbCwgYWRvcHRSZWYoKm5ldyBSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZShpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKSk7Ci19Ci0KLXZvaWQg
Q2hlY2tlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVn
ZXJMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgYWRv
cHRSZWYoKm5ldyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSh1bnNpZ25lZEludGVnZXJMaXRlcmFs
LnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYg
ZmxvYXRMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUoZmxvYXRMaXRlcmFsLCBhZG9wdFJlZigq
bmV3IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGZsb2F0TGl0ZXJhbC50eXBlKCkpKSk7Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwp
Ci17Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGJvb2xlYW5MaXRlcmFsLCBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAoYm9vbGVhbkxpdGVyYWwuY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5i
b29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBBU1NFUlQoZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBhdXRv
JiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSAqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChlbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuY29kZUxvY2F0aW9uKCksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikpOwotfQotCi1ib29s
IENoZWNrZXI6OmlzQm9vbFR5cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkKLXsKLSAg
ICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNU
OjpVbm5hbWVkVHlwZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbWF0Y2hlcyhs
ZWZ0LCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQobV9pbnRyaW5zaWNzLmJvb2xUeXBlKCksIGxlZnQt
PnJlc29sdmFibGVUeXBlKCkpKTsKLSAgICB9KSk7Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6cmVjdXJz
ZUFuZFJlcXVpcmVCb29sVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAg
YXV0byBleHByZXNzaW9uSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGV4cHJlc3Npb24pOwotICAg
IGlmICghZXhwcmVzc2lvbkluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlz
Qm9vbFR5cGUoZXhwcmVzc2lvbkluZm8tPnJlc29sdmluZ1R5cGUpKSB7Ci0gICAgICAgIHNldEVy
cm9yKEVycm9yKCJFeHBlY3RlZCBib29sIHR5cGUgZnJvbSBleHByZXNzaW9uLiIsIGV4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHBy
ZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1
aXJlQm9vbFR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbiwgQVNUOjpU
eXBlUmVmZXJlbmNlOjp3cmFwKGxvZ2ljYWxOb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBt
X2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIGlmICghcmVjdXJz
ZUFuZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGxvZ2ljYWxFeHByZXNz
aW9uLnJpZ2h0KCkpKQotICAgICAgICByZXR1cm47Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGxv
Z2ljYWxFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9naWNhbEV4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQg
Q2hlY2tlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgaWYg
KCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHko
KSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlz
aXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1
aXJlQm9vbFR5cGUod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpKQotICAgICAgICByZXR1cm47Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIHJlY3Vyc2VBbmRSZXF1aXJlQm9v
bFR5cGUoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlz
aXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JM
b29wLmluaXRpYWxpemF0aW9uKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpIHsKLSAgICAgICAgaWYgKCFyZWN1cnNl
QW5kUmVxdWlyZUJvb2xUeXBlKCpmb3JMb29wLmNvbmRpdGlvbigpKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5pbmNyZW1lbnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlN3aXRj
aFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIGF1dG8qIHZhbHVlVHlwZSA9IChb
Jl0oKSAtPiBBU1Q6Ok5hbWVkVHlwZSogewotICAgICAgICBhdXRvIHZhbHVlSW5mbyA9IHJlY3Vy
c2VBbmRHZXRJbmZvKHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCF2YWx1
ZUluZm8pCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byogdmFsdWVU
eXBlID0gZ2V0VW5uYW1lZFR5cGUodmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICAgICAg
aWYgKCF2YWx1ZVR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0
byYgdmFsdWVVbmlmeU5vZGUgPSB2YWx1ZVR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAo
IWlzPEFTVDo6TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgYXV0byYgdmFsdWVOYW1lZFVuaWZ5Tm9kZSA9IGRvd25jYXN0PEFT
VDo6TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghKGlzPEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKSAmJiBkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odmFsdWVOYW1lZFVuaWZ5Tm9kZSkuaXNJbnQoKSkKLSAg
ICAgICAgICAgICYmICFpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odmFsdWVOYW1lZFVu
aWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICZ2
YWx1ZU5hbWVkVW5pZnlOb2RlOwotICAgIH0pKCk7Ci0gICAgaWYgKCF2YWx1ZVR5cGUpIHsKLSAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgdHlwZSBmb3IgdGhlIGV4cHJlc3Npb24gY29u
ZGl0aW9uIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBoYXNEZWZhdWx0
ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3
aXRjaENhc2VzKCkpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxv
Y2soKSk7Ci0gICAgICAgIGlmICghc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBo
YXNEZWZhdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gc3VjY2VzcyA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1
ZVR5cGUsIGludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVU
eXBlLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNU
OjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRl
cmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYpIC0+IGJv
b2wgewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgbV9pbnRyaW5zaWNz
LmJvb2xUeXBlKCkpOwotICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBBU1NF
UlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAg
ICAgICAgICAgIHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsICplbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlm
ICghc3VjY2VzcykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgdHlwZSBm
b3Igc3dpdGNoIGNhc2UuIiwgc3dpdGNoQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBh
dXRvJiBmaXJzdENhc2UgPSBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKVtpXTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2Vz
KCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgIGF1dG8mIHNlY29uZENhc2UgPSBzd2l0Y2hT
dGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKVtqXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxib29s
PihzZWNvbmRDYXNlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGRlZmF1
bHQgY2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudC4iLCBzZWNvbmRDYXNlLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBmaXJzdENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgZmlyc3RJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwp
IC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RJbnRlZ2VyTGl0ZXJh
bC52YWx1ZSgpICE9IHNlY29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAg
ICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0
PGludDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAg
ICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBbJl0oQVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsJiBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJv
b2wgewotICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVlKCktPnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZEludGVnZXJMaXRl
cmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAhPSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAg
ICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVn
ZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwudmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAg
ICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZmlyc3RFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiBzZWNv
bmRDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsJiBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wg
ewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmlyc3RFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChzZWNv
bmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbk1lbWJlcigpICE9IHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAg
ICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWZpbmUgZHVwbGljYXRlIGNhc2Ugc3Rh
dGVtZW50cyBpbiBhIHN3aXRjaC4iLCBzZWNvbmRDYXNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKCFoYXNEZWZhdWx0KSB7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4oKnZhbHVlVHlwZSkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8aW50NjRfdD4gdmFs
dWVzOwotICAgICAgICAgICAgYm9vbCB6ZXJvVmFsdWVFeGlzdHM7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAg
ICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBp
bnQ2NF90IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVnZXJMaXRlcmFsLnZhbHVl
Rm9yU2VsZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGludDY0X3Qgewot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgIGlm
ICghdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHplcm9WYWx1ZUV4aXN0cyA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKHZhbHVl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAg
ICAgICAgICBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnZhbHVlVHlwZSku
aXRlcmF0ZUFsbFZhbHVlcyhbJl0oaW50NjRfdCB2YWx1ZSkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXplcm9WYWx1ZUV4
aXN0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoIXZhbHVlcy5jb250YWlucyh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBz
ZXRFcnJvcihFcnJvcigiU3dpdGNoIGNhc2VzIG11c3QgYmUgZXhoYXVzdGl2ZSBvciB5b3UgbXVz
dCBkZWZpbmUgYSBkZWZhdWx0IGNhc2UuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgSGFzaFNldDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKj4gdmFsdWVz
OwotICAgICAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3
aXRjaENhc2VzKCkpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgdmFsdWVzLmFkZChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1i
ZXIoKSk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKLSAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGRvd25jYXN0
PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPigqdmFsdWVUeXBlKS5lbnVtZXJhdGlvbk1lbWJl
cnMoKSkgewotICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmNvbnRhaW5zKCZlbnVtZXJhdGlv
bk1lbWJlci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlN3
aXRjaCBjYXNlcyBvdmVyIGFuIGVudW0gbXVzdCBiZSBleGhhdXN0aXZlIG9yIHlvdSBtdXN0IGRl
ZmluZSBhIGRlZmF1bHQgY2FzZS4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkNv
bW1hRXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIEFTU0VSVChjb21tYUV4cHJl
c3Npb24ubGlzdCgpLnNpemUoKSA+IDApOwotICAgIFZpc2l0b3I6OnZpc2l0KGNvbW1hRXhwcmVz
c2lvbik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGxh
c3RJbmZvID0gZ2V0SW5mbyhjb21tYUV4cHJlc3Npb24ubGlzdCgpLmxhc3QoKSk7Ci0gICAgZm9y
d2FyZFR5cGUoY29tbWFFeHByZXNzaW9uLCBsYXN0SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJl
c3Npb24pCi17Ci0gICAgYXV0byBwcmVkaWNhdGVJbmZvID0gcmVjdXJzZUFuZFJlcXVpcmVCb29s
VHlwZSh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgaWYgKCFwcmVkaWNhdGVJ
bmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJvZHlJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8odGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgYXV0byBlbHNl
SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9u
KCkpOwotICAgIAotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1hdGNoQW5kQ29tbWl0KGJvZHlJbmZv
LT5yZXNvbHZpbmdUeXBlLCBlbHNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFyZXN1
bHRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJsaHMgYW5kIHJocyBvZiBhIHRlcm5h
cnkgZXhwcmVzc2lvbiBtdXN0IG1hdGNoLiIsIHRlcm5hcnlFeHByZXNzaW9uLmNvZGVMb2NhdGlv
bigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUo
dGVybmFyeUV4cHJlc3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gdHlwZXM7Ci0gICAgdHlwZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCkpOwot
ICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkgewot
ICAgICAgICBhdXRvIGFyZ3VtZW50SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFyZ3VtZW50KTsK
LSAgICAgICAgaWYgKCFhcmd1bWVudEluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHR5cGVzLnVuY2hlY2tlZEFwcGVuZChhcmd1bWVudEluZm8tPnJlc29sdmluZ1R5cGUpOwotICAg
IH0KLSAgICAvLyBEb24ndCByZWN1cnNlIG9uIHRoZSBjYXN0UmV0dXJuVHlwZSwgYmVjYXVzZSBp
dCdzIGd1YXJhbnRlZWQgdG8gYmUgYSBOYW1lZFR5cGUsIHdoaWNoIHdpbGwgZ2V0IHZpc2l0ZWQg
bGF0ZXIuCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZWN1cnNlIHRvIHRoZSBzYW1lIG5vZGUg
dHdpY2UuCi0KLSAgICBhdXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbih0eXBlcywgY2Fs
bEV4cHJlc3Npb24ubmFtZSgpLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSk7Ci0gICAg
aWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZnVuY3Rpb24pIHsK
LSAgICAgICAgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0ID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0
KCk7Ci0gICAgICAgIGF1dG8gY2FzdFR5cGVzID0gbmFtZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4
cHJlc3Npb24ubmFtZSgpLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgICAgICBpZiAoY2FzdFR5
cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgY2FzdFR5cGUg
PSBjYXN0VHlwZXNbMF0uZ2V0KCk7Ci0gICAgICAgICAgICBmdW5jdGlvbiA9IHJlc29sdmVGdW5j
dGlvbih0eXBlcywgIm9wZXJhdG9yIGNhc3QiX3N0ciwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0
aW9uKCksICZjYXN0VHlwZSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24pCi0gICAgICAgICAgICAg
ICAgY2FsbEV4cHJlc3Npb24uc2V0Q2FzdERhdGEoY2FzdFR5cGUpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICAvLyBGSVhNRTogQWRkIGJldHRlciBl
cnJvciBtZXNzYWdlcyBmb3Igd2h5IHdlIGNhbid0IHJlc29sdmUgdG8gb25lIG9mIHRoZSBvdmVy
cmlkZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDAxMzMKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9u
IGNhbGwgdG8gYSBjb25jcmV0ZSBjYWxsZWUuIE1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIGNvbXBh
dGlibGUgdHlwZXMuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPnBh
cmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KHR5
cGVzW2ldLmdldCgpLCAqZnVuY3Rpb24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSkgewotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiSW52YWxpZCB0eXBlIGZvciBwYXJh
bWV0ZXIgbnVtYmVyICIsIGkgKyAxLCAiIGluIGZ1bmN0aW9uIGNhbGwuIiksIGNhbGxFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBjYWxsRXhwcmVzc2lvbi5zZXRGdW5jdGlvbigqZnVuY3Rpb24pOwotCi0gICAg
YXNzaWduQ29uY3JldGVUeXBlKGNhbGxFeHByZXNzaW9uLCBmdW5jdGlvbi0+dHlwZSgpKTsKLX0K
LQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAg
Q2hlY2tlciBjaGVja2VyKHByb2dyYW0uaW50cmluc2ljcygpLCBwcm9ncmFtKTsKLSAgICBjaGVj
a2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICBpZiAoY2hlY2tlci5oYXNFcnJv
cigpKQotICAgICAgICByZXR1cm4gY2hlY2tlci5yZXN1bHQoKTsKLSAgICByZXR1cm4gY2hlY2tl
ci5hc3NpZ25UeXBlcygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY0ZTNlMTdhOGMwYTJiNzMwNWY1ODI0MGNlMWY1
MjE3NzRlNjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVj
ayhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
b2RlTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q29kZUxvY2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZmZmZDhkODdh
OTU0MjA5ZWY3MjllMmM3MjUzZWQxOTE1ZTRlYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xDb2RlTG9jYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBUb2tlbjsKLQotY2xhc3MgQ29kZUxvY2F0aW9uIHsKLXB1
YmxpYzoKLSAgICBDb2RlTG9jYXRpb24oKQotICAgICAgICA6IG1fc3RhcnRPZmZzZXQoMHg3RkZG
RkZGRikKLSAgICAgICAgLCBtX2VuZE9mZnNldCgweDdGRkZGRkZGKQotICAgICAgICAsIG1fbmFt
ZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJy
YXJ5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLSAgICAg
ICAgOiBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVu
ZE9mZnNldCkKLSAgICAgICAgLCBtX25hbWVTcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmFt
ZVNwYWNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKGNvbnN0IFRva2VuJik7
Ci0KLSAgICBDb2RlTG9jYXRpb24oY29uc3QgQ29kZUxvY2F0aW9uJiBsb2NhdGlvbjEsIGNvbnN0
IENvZGVMb2NhdGlvbiYgbG9jYXRpb24yKQotICAgICAgICA6IG1fc3RhcnRPZmZzZXQobG9jYXRp
b24xLnN0YXJ0T2Zmc2V0KCkpCi0gICAgICAgICwgbV9lbmRPZmZzZXQobG9jYXRpb24yLmVuZE9m
ZnNldCgpKQotICAgICAgICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2Nh
dGlvbjEubmFtZVNwYWNlKCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxvY2F0aW9uMS5uYW1l
U3BhY2UoKSA9PSBsb2NhdGlvbjIubmFtZVNwYWNlKCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YXJ0T2Zmc2V0
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9lbmRPZmZzZXQ7Ci0gICAgfQotCi0gICAgQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVT
cGFjZT4obV9uYW1lU3BhY2UpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b2RlTG9jYXRpb24mIG90aGVyKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YXJ0
T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKLSAgICAgICAgICAgICYmIG1fZW5kT2Zmc2V0
ID09IG90aGVyLm1fZW5kT2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX25hbWVTcGFjZSA9PSBvdGhl
ci5tX25hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZUxv
Y2F0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBDb2RlTG9j
YXRpb24oKTsgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgOiAzMTsK
LSAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1fbmFtZVNwYWNl
IDogMjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5z
aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3Mjk4ZDQ5Yzg4NmExNjY1
Y2I5ODA5YjVlYmUzMmUzZTAwZmIxYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
b21wdXRlRGltZW5zaW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ29tcHV0ZURpbWVu
c2lvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1
ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0ZDo6b3B0aW9uYWw8Q29tcHV0
ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0sIEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQotewotICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0
ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgZm9yIChhdXRvJiBmdW5jdGlv
bkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBi
b29sIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gZmFsc2U7Ci0gICAgICAgIGZv
ciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBmdW5jdGlvbkRlZmluaXRpb24tPmF0dHJpYnV0
ZUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3VuZE51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSAmZW50cnlQb2ludCkg
ewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNvbXB1dGVEaW1lbnNpb25zKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSB7eyBudW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUud2lkdGgoKSwgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmhlaWdodCgpLCBu
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuZGVwdGgoKSB9fTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9KSwgZnVuY3Rpb25B
dHRyaWJ1dGUpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gQ2Fubm90IGRlY2xhcmUgbXVsdGlwbGUgbnVtdGhyZWFkIGF0dHJpYnV0ZXMgb24gYSBzaW5n
bGUgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBjb21wdXRlRGltZW5zaW9u
czsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmRkZjBhODNhYTY0MjdlM2IzNTc5ZGFj
NTUyOTk4N2IzZTUzN2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURp
bWVuc2lvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMUHJlcGFyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci0KLX0KLQot
Y2xhc3MgUHJvZ3JhbTsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0
ZURpbWVuc2lvbnMoUHJvZ3JhbSYsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxYjc4NmRmYWZlYzk4MzEwZjMxMTUxYjU4YWFlZGViZDBjYTdkNDk2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBFcnJvciB7Ci1w
dWJsaWM6Ci0gICAgRXJyb3IoU3RyaW5nJiYgbWVzc2FnZSwgQ29kZUxvY2F0aW9uIGNvZGVMb2Nh
dGlvbikKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKLSAgICAgICAgLCBt
X2xvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgRXJyb3IoU3RyaW5n
JiYgbWVzc2FnZSkKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYXRpb247IH0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX21lc3NhZ2U7Ci0gICAgQ29kZUxvY2F0
aW9uIG1fbG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3Rh
Z2VDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
RnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NjNkZThkYzhlMGJiYTQ1OTc5YTRiODEwOTE3MTJiMTMxYWY0YWI3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUg
IldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEZ1bmN0aW9uU3RhZ2VDaGVj
a2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIEZ1bmN0aW9uU3RhZ2VDaGVja2Vy
KEFTVDo6RW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGlu
dHJpbnNpY3MpCi0gICAgICAgIDogbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKLSAg
ICAgICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICB7Ci0gICAgfQotCi1wdWJsaWM6
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICgoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0g
bV9pbnRyaW5zaWNzLmRkeCgpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50
cmluc2ljcy5kZHkoKSkgJiYgbV9lbnRyeVBvaW50VHlwZSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBl
OjpGcmFnbWVudCkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgZGR4
IG9yIGRkeSBpbiBhIG5vbi1mcmFnbWVudCBzaGFkZXIuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
KCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5hbGxNZW1vcnlCYXJy
aWVyKCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmRldmlj
ZU1lbW9yeUJhcnJpZXIoKSB8fCAmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJp
bnNpY3MuZ3JvdXBNZW1vcnlCYXJyaWVyKCkpCi0gICAgICAgICAgICAmJiBtX2VudHJ5UG9pbnRU
eXBlICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUpIHsKLSAgICAgICAgICAgIHNldEVy
cm9yKEVycm9yKCJDYW5ub3QgdXNlIG1lbW9yeSBiYXJyaWVyIGluIGEgbm9uLWNvbXB1dGUgc2hh
ZGVyLiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24uZnVu
Y3Rpb24oKSk7Ci0gICAgfQotCi0gICAgQVNUOjpFbnRyeVBvaW50VHlwZSBtX2VudHJ5UG9pbnRU
eXBlOwotICAgIGNvbnN0IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLX07Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja0Z1bmN0aW9uU3RhZ2VzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0g
ICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5p
dGlvbnMoKSkgewotICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5
cGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBGdW5jdGlvblN0YWdlQ2hlY2tl
ciBmdW5jdGlvblN0YWdlQ2hlY2tlcigqZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlw
ZSgpLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0gICAgICAgIGZ1bmN0aW9uU3RhZ2VDaGVja2Vy
LlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChmdW5jdGlv
blN0YWdlQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGZ1bmN0aW9uU3RhZ2VDaGVja2VyLnJlc3VsdCgpLmVycm9yKCkpOwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
RnVuY3Rpb25TdGFnZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTEzM2ZkOTJmZGRiMTdkNTRjODIzZDk4YmJhZTMyZTUxNTE0ZTM1Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRnVuY3Rp
b25TdGFnZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTA1ZTg4YTYwMWM4MjExYTc5NWYwYzE2ZTgzOTZmMDI2ODcyNjA2
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5j
ZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURl
ZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJX
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBHYXRoZXJl
ciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBHYXRoZXJlcihjb25zdCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzLCBBU1Q6OlNlbWFudGljKiBzZW1hbnRpYyA9IG51bGxwdHIpCi0gICAg
ICAgIDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9jdXJyZW50U2VtYW50
aWMoc2VtYW50aWMpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkdhdGhlcmVyKCkgPSBk
ZWZhdWx0OwotCi0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRTZW1h
bnRpYyA9IG51bGxwdHI7Ci0gICAgICAgIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24gPSB7IH07
Ci0gICAgfQotCi0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiB0YWtlRW50cnlQb2ludEl0ZW1z
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnlQb2ludEl0ZW1zKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikKLSAgICB7
Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1
cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKG1fdHlwZVJl
ZmVyZW5jZXMubGFzdCgpLmdldCgpLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsK
LSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlw
b2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1hdGNoZXMobmF0aXZlVHlwZURlY2xh
cmF0aW9uLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJVbmV4cGVjdGVkIHZvaWQgdHlwZSBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBt
X2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0obV90
eXBlUmVmZXJlbmNlcy5sYXN0KCkuZ2V0KCksICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVj
dHVyZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBpZiAobV9jdXJyZW50U2VtYW50aWMpIHsK
LSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJVbmV4cGVjdGVkIHNlbWFudGljIGZvciBzdHJ1
Y3QgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIHN0cnVj
dHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpIHsK
LSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCi0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSBzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCk7Ci0g
ICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpKTsKLSAgICAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgICAg
IG1fcGF0aC50YWtlTGFzdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotICAgIHsKLSAgICAgICAg
bV90eXBlUmVmZXJlbmNlcy5hcHBlbmQodHlwZVJlZmVyZW5jZSk7Ci0gICAgICAgIGF1dG8gZGVw
dGggPSBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGRl
cHRoLCBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKSA9PSBkZXB0aCk7Ci0gICAgICAgIG1fdHlwZVJl
ZmVyZW5jZXMucmVtb3ZlTGFzdCgpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2lu
dGVyVHlwZSYgcG9pbnRlclR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFu
dGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9y
IGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFw
cGVuZChFbnRyeVBvaW50SXRlbShwb2ludGVyVHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3Bh
dGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZVR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGlj
KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVu
dHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVu
ZChFbnRyeVBvaW50SXRlbShhcnJheVJlZmVyZW5jZVR5cGUsICptX2N1cnJlbnRTZW1hbnRpYywg
bV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlU
eXBlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3Vt
ZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0
ZW0oYXJyYXlUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9u
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRTZW1hbnRpYyk7Ci0gICAgICAgIG1f
Y3VycmVudFZhcmlhYmxlTG9jYXRpb24gPSB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlv
bigpOwotICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAg
ICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSB2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCk7
Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1f
cGF0aC5hcHBlbmQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOwotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9wYXRo
LnRha2VMYXN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxTdHJpbmc+IG1fcGF0
aDsKLSAgICBjb25zdCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgQVNUOjpTZW1hbnRp
YyogbV9jdXJyZW50U2VtYW50aWMgeyBudWxscHRyIH07Ci0gICAgQ29kZUxvY2F0aW9uIG1fY3Vy
cmVudFZhcmlhYmxlTG9jYXRpb247Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpUeXBlUmVmZXJlbmNlPj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+IG1fZW50cnlQb2ludEl0ZW1zOwotfTsKLQotRXhwZWN0ZWQ8RW50cnlQb2ludEl0
ZW1zLCBFcnJvcj4gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKGNvbnN0IEludHJpbnNpY3MmIGludHJp
bnNpY3MsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0g
ICAgQVNTRVJUKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKTsKLSAgICBHYXRo
ZXJlciBpbnB1dEdhdGhlcmVyKGludHJpbnNpY3MpOwotICAgIGZvciAoYXV0byYgcGFyYW1ldGVy
IDogZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKSkgewotICAgICAgICBpbnB1dEdhdGhl
cmVyLnJlc2V0KCk7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KHBh
cmFtZXRlcik7Ci0gICAgICAgIGlmIChpbnB1dEdhdGhlcmVyLmhhc0Vycm9yKCkpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5wdXRHYXRoZXJlci5yZXN1bHQoKS5lcnJvcigp
KTsKLSAgICB9Ci0gICAgR2F0aGVyZXIgb3V0cHV0R2F0aGVyZXIoaW50cmluc2ljcywgZnVuY3Rp
b25EZWZpbml0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICgqZnVuY3Rpb25EZWZpbml0aW9uLmVu
dHJ5UG9pbnRUeXBlKCkgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkKLSAgICAgICAg
b3V0cHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBl
KCkpOwotICAgIGlmIChvdXRwdXRHYXRoZXJlci5oYXNFcnJvcigpKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQob3V0cHV0R2F0aGVyZXIucmVzdWx0KCkuZXJyb3IoKSk7Ci0KLSAgICBy
ZXR1cm4ge3sgaW5wdXRHYXRoZXJlci50YWtlRW50cnlQb2ludEl0ZW1zKCksIG91dHB1dEdhdGhl
cmVyLnRha2VFbnRyeVBvaW50SXRlbXMoKSB9fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdiNGI4ZDljZTRjN2MzNDcxOTUyNDQxZDJiOTM4YWE0ZmYyNzI3NzMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNs
dWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247
Ci0KLX0KLQotY2xhc3MgSW50cmluc2ljczsKLWNsYXNzIFVubmFtZWRUeXBlOwotCi1zdHJ1Y3Qg
RW50cnlQb2ludEl0ZW0gewotICAgIEVudHJ5UG9pbnRJdGVtKEFTVDo6VW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBBU1Q6OlNlbWFudGljJiBzZW1hbnRpYywgVmVjdG9yPFN0cmluZz4mIHBhdGgp
Ci0gICAgICAgIDogdW5uYW1lZFR5cGUoJnVubmFtZWRUeXBlKQotICAgICAgICAsIHNlbWFudGlj
KCZzZW1hbnRpYykKLSAgICAgICAgLCBwYXRoKHBhdGgpCi0gICAgewotICAgIH0KLQotICAgIEFT
VDo6VW5uYW1lZFR5cGUqIHVubmFtZWRUeXBlOwotICAgIEFTVDo6U2VtYW50aWMqIHNlbWFudGlj
OwotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGg7Ci19OwotCi1zdHJ1Y3QgRW50cnlQb2ludEl0ZW1z
IHsKLSAgICBWZWN0b3I8RW50cnlQb2ludEl0ZW0+IGlucHV0czsKLSAgICBWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+IG91dHB1dHM7Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRlbXMsIEVycm9y
PiBnYXRoZXJFbnRyeVBvaW50SXRlbXMoY29uc3QgSW50cmluc2ljcyYsIEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVG
aW5kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGY3MDExODNkNTIyZDVj
MWZkNTA1YzY0ODE4ZGU3MTE4MWQ2ZDIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SGlnaFpvbWJpZUZpbmRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSGlnaFpvbWJpZUZp
bmRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
U1QuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBIaWdoWm9tYmllRmluZGVyIDogcHVibGljIFZp
c2l0b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHByZXNzaW9uKCkp
OwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCku
bWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJl
c3Npb24mIGRvdEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVCghZG90RXhwcmVzc2lvbi5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVzc2lvbi5iYXNl
KCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbmRleEV4cHJl
c3Npb24uaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotfTsKLQot
dm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBVTlVTRURfUEFS
QU0ocHJvZ3JhbSk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEhpZ2hab21iaWVGaW5kZXIg
ZmluZGVyOwotICAgIGZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSNlbmRpZgotfQot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmll
RmluZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMDNiMjFiMTAwZDAxN2Yz
MWYxYTAzY2M4ZDA1MDE5NDQxMmNhY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xI
aWdoWm9tYmllRmluZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQot
dm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZGYzOGU2ZDU0NTVjZmY1ZDg2N2Q0ZGNlMTc5MjZkZjZmN2E4M2YxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTEluZmVyVHlwZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1
ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0
IEFTVDo6VHlwZSYgdW5pZnlUaGlzLCBjb25zdCBBU1Q6OlR5cGUmIHVuaWZ5T3RoZXIpCi17Ci0g
ICAgaWYgKCZ1bmlmeVRoaXMgPT0gJnVuaWZ5T3RoZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFTVDo6TmFtZWRU
eXBlPih1bmlmeU90aGVyKSkgewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGF1dG8mIG5h
bWVkVGhpcyA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpOwotICAgICAgICBh
dXRvJiBuYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5T3RoZXIpOwot
ICAgICAgICBBU1NFUlQoIWlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVGhpcykgJiYgIWlz
PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkT3RoZXIpKTsKLSNlbmRpZgotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeVRoaXMp
ICYmIGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5T3RoZXIpKSB7Ci0gICAgICAgIGF1dG8mIHVu
bmFtZWRUaGlzID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlUaGlzKTsKLSAgICAg
ICAgYXV0byYgdW5uYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlP
dGhlcik7Ci0gICAgICAgIEFTU0VSVCghaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVGhp
cykgJiYgIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZE90aGVyKSk7Ci0gICAgICAgIHJl
dHVybiB1bm5hbWVkVGhpcyA9PSB1bm5hbWVkT3RoZXI7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBl
LCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICByZXR1cm4gbWF0Y2hlcyh1
bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkpOwotfQotCi1ib29sIG1h
dGNoZXMoY29uc3QgQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgY29uc3QgQVNUOjpOYW1lZFR5
cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKG5hbWVkVHlwZS51bmlmeU5vZGUoKSwg
b3RoZXIudW5pZnlOb2RlKCkpOwotfQotCi1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVk
VHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkp
OwotfQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFT
VDo6VHlwZSYgdW5pZnlOb2RlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkK
LXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAg
IGlmICghcmVzb2x2YWJsZVR5cGUuY2FuUmVzb2x2ZSh1bmlmeU5vZGUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAg
ICAgICAgYXV0byYgbmFtZWRVbmlmeU5vZGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
bmFtZWRVbmlmeU5vZGUuY29kZUxvY2F0aW9uKCksIG5hbWVkVW5pZnlOb2RlKTsKLSAgICAgICAg
cmVzb2x2YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICAgICAgcmV0dXJu
IHsgV1RGTW92ZShyZXN1bHQpIH07Ci0gICAgfQotCi0gICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHJlc3VsdCA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgcmVz
b2x2YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpVbm5h
bWVkVHlwZSYgdW5uYW1lZFR5cGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBl
KQotewotICAgIHJldHVybiBtYXRjaEFuZENvbW1pdCh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwg
cmVzb2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRD
b21taXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVz
b2x2YWJsZVR5cGUpCi17Ci0gICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVkVHlwZS51bmlm
eU5vZGUoKSwgcmVzb2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
bWF0Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUxLCBBU1Q6
OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZTIpCi17Ci0gICAgQVNTRVJUKCFyZXNvbHZh
YmxlVHlwZTEubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgQVNTRVJUKCFyZXNvbHZhYmxlVHlw
ZTIubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlw
ZT4ocmVzb2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFi
bGVUeXBlMikpIHsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUoZG93bmNhc3Q8QVNU
OjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0g
ICAgICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZlKGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFs
VHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJy
ZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVz
b2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5
cGUyKSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6Oklu
dGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCkpOwotICAg
ICAgICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFs
VHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZl
cnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZT4ocmVzb2x2YWJsZVR5cGUyKSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2
ZShkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlw
ZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZlKGRv
d25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMiku
cHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBj
b21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgQVNTRVJU
KCFyZXNvbHZhYmxlVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoaXM8QVNUOjpG
bG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgZmxvYXRM
aXRlcmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5
cGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGZsb2F0TGl0ZXJhbFR5cGUucHJl
ZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJl
ZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNv
bHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgaW50ZWdlckxpdGVyYWxUeXBlID0gZG93bmNh
c3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAgICAgICAgcmVz
b2x2YWJsZVR5cGUucmVzb2x2ZShpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsK
LSAgICAgICAgcmV0dXJuICZpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAg
IH0KLSAgICBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJs
ZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlID0gZG93
bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpOwot
ICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
Ym9vbCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVkVHlwZSYgcG9zc2libGVU
eXBlLCBBU1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgaWYgKGlzPEFT
VDo6VHlwZURlZmluaXRpb24+KHBvc3NpYmxlVHlwZSkKLSAgICAgICAgfHwgaXM8QVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpCi0gICAgICAgIHx8IGlzPEFTVDo6RW51bWVy
YXRpb25EZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpKSB7Ci0gICAgICAgIHJldHVybiB0eXBlQXJn
dW1lbnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2libGVUeXBlKTsK
LSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgIT0g
dHlwZUFyZ3VtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qIHR5cGVBcmd1bWVu
dEV4cHJlc3Npb24gPSBudWxscHRyOwotICAgICAgICBBU1Q6OlR5cGVSZWZlcmVuY2UqIHR5cGVB
cmd1bWVudFR5cGVSZWZlcmVuY2UgPSBudWxscHRyOwotICAgICAgICBBU1Q6OkNvbnN0YW50RXhw
cmVzc2lvbiogbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbiA9IG51bGxwdHI7Ci0gICAgICAg
IEFTVDo6VHlwZVJlZmVyZW5jZSogbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSA9IG51
bGxwdHI7Ci0KLSAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0oQVNUOjpUeXBlQXJndW1lbnQmIHR5
cGVBcmd1bWVudCwgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qJiBleHByZXNzaW9uLCBBU1Q6OlR5
cGVSZWZlcmVuY2UqJiB0eXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBXVEY6OnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJl
c3Npb24pIHsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gJmNvbnN0YW50RXhwcmVzc2lv
bjsKLSAgICAgICAgICAgIH0sIFsmXShSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdGhlVHlwZVJl
ZmVyZW5jZSkgewotICAgICAgICAgICAgICAgIHR5cGVSZWZlcmVuY2UgPSB0aGVUeXBlUmVmZXJl
bmNlLnB0cigpOwotICAgICAgICAgICAgfSksIHR5cGVBcmd1bWVudCk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgYXNzaWduKHR5cGVBcmd1bWVudHNbaV0sIHR5cGVBcmd1bWVudEV4cHJlc3Npb24s
IHR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpOwotICAgICAgICBhc3NpZ24obmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVtpXSwgbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lv
biwgbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSk7Ci0KLSAgICAgICAgaWYgKHR5cGVB
cmd1bWVudEV4cHJlc3Npb24gJiYgbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbikgewotICAg
ICAgICAgICAgaWYgKCF0eXBlQXJndW1lbnRFeHByZXNzaW9uLT5tYXRjaGVzKCpuYXRpdmVUeXBl
QXJndW1lbnRFeHByZXNzaW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0gZWxzZSBpZiAodHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSAmJiBuYXRpdmVUeXBlQXJn
dW1lbnRUeXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMoKnR5cGVBcmd1
bWVudFR5cGVSZWZlcmVuY2UsICpuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgotQUxXQVlTX0lOTElO
RSBib29sIGluZmVyVHlwZXNGb3JDYWxsSW1wbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBv
c3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgVHlwZUtpbmQqIGNhc3RSZXR1cm5UeXBlKQotewot
ICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgIT0gYXJndW1lbnRU
eXBlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gc3VjY2VzcyA9IGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkudmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gYm9vbCB7
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygqcG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJz
KClbaV0tPnR5cGUoKSwgdW5uYW1lZFR5cGUpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlw
ZSgpLmNhblJlc29sdmUocG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+
dW5pZnlOb2RlKCkpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGNhc3RSZXR1cm5UeXBlICYmICFt
YXRjaGVzKHBvc3NpYmxlRnVuY3Rpb24udHlwZSgpLCAqY2FzdFJldHVyblR5cGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaW5mZXJUeXBlc0Zv
ckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNv
bnN0IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICByZXR1cm4gaW5mZXJU
eXBlc0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rpb24sIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1
cm5UeXBlKTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpVbm5hbWVkVHlwZSogY2Fz
dFJldHVyblR5cGUpCi17Ci0gICAgcmV0dXJuIGluZmVyVHlwZXNGb3JDYWxsSW1wbChwb3NzaWJs
ZUZ1bmN0aW9uLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGMzMjJmMzdkYzBkODZjODc2MDc1Y2Q3NGFmMDdlOGEyMTRhNzA4ZGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25E
ZWNsYXJhdGlvbjsKLWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIFJlc29sdmFibGVUeXBlOwotY2xh
c3MgVW5uYW1lZFR5cGU7Ci0KLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5
cGUmLCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlJik7Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpO
YW1lZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotYm9vbCBtYXRjaGVzKGNvbnN0IEFT
VDo6VW5uYW1lZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotUmVmUHRyPEFTVDo6VW5u
YW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6VW5uYW1lZFR5cGUmLCBBU1Q6OlJlc29sdmFi
bGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpO
YW1lZFR5cGUmLCBBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlw
ZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5
cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoQVNUOjpSZXNvbHZhYmxlVHlw
ZSYpOwotYm9vbCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVkVHlwZSYgcG9z
c2libGVUeXBlLCBBU1Q6OlR5cGVBcmd1bWVudHMmKTsKLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwo
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFT
VDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6
OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZkNDM3YTJjZTJlYzYwODRiOTViM2NkNTYxN2JiNjhiMjRmODllZTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMSW50cmluc2ljcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1
bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX3RleHR1
cmVUeXBlTmFtZXNbXTsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX3RleHR1
cmVJbm5lclR5cGVOYW1lc1tdOwotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1f
ZGVwdGhUZXh0dXJlSW5uZXJUeXBlc1tdOwotCi1JbnRyaW5zaWNzOjpJbnRyaW5zaWNzKCkKLXsK
LX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR4IikKLSAgICAgICAgbV9kZHggPSAmbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiZGR5IikKLSAgICAgICAgbV9kZHkgPSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxs
TWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKQotICAgICAgICBtX2FsbE1lbW9yeUJhcnJpZXIg
PSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMi
KQotICAgICAgICBtX2RldmljZU1lbW9yeUJhcnJpZXIgPSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
R3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fZ3JvdXBNZW1vcnlC
YXJyaWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci19Ci0KLWJvb2wgSW50cmluc2lj
czo6YWRkUHJpbWl0aXZlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVj
bGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRz
KCkuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAidm9pZCIpCi0gICAgICAgIG1fdm9pZFR5cGUgPSAmbmF0aXZl
VHlwZURlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gImJvb2wiKQotICAgICAgICBtX2Jvb2xUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlv
bjsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ1aW50Iikg
ewotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAgICAgICAgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCB4KSB7Ci0gICAgICAgICAgICBy
ZXR1cm4geCA+PSAwOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCkgewotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRp
b24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxvYXQgeCkgewotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkpID09IHg7Ci0gICAg
ICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vzc29yKFtdKGlu
dDY0X3QgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHggKyAxKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKFtdKGludCB4KSAtPiBpbnQ2NF90IHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCk7Ci0gICAgICAgIH0pOwotICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRl
Z2VyKFtdKHVuc2lnbmVkIHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJdGVyYXRlQWxsVmFsdWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChp
bnQ2NF90KT4mIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBmb3IgKGludDY0X3QgaSA9IDA7IGkg
PCAweDEwMDAwMDAwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0g
ICAgICAgIG1fdWludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaW50IikgewotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1Np
Z25lZCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50SW50
ZWdlcihbXShpbnQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAg
ICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdl
cihbXSh1bnNpZ25lZCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geCA8PSAyMTQ3NDgzNjQ3Owot
ICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2Vu
dEZsb2F0KFtdKGZsb2F0IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCkpID09IHg7Ci0gICAgICAgIH0pOwotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vzc29yKFtdKGludDY0X3QgeCkgLT4gaW50NjRf
dCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCArIDEpOwotICAg
ICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZhbHVlRnJv
bUludGVnZXIoW10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCB4KSAt
PiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJdGVyYXRlQWxs
VmFsdWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mIGNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICBmb3IgKGludDY0X3QgaSA9IC0yMTQ3NDgzNjQ3OyBpIDwgMjE0NzQ4MzY0
ODsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIG1faW50
VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJ
c0Zsb2F0aW5nKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNl
bnRJbnRlZ2VyKFtdKGludCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0p
OwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJ
bnRlZ2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRGbG9hdChb
XShmbG9hdCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAg
ICBtX2Zsb2F0VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfaW50IikgewotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9hdG9taWNJbnRU
eXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY191aW50IikgewotICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9hdG9taWNVaW50VHlwZSA9ICZu
YXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJzYW1wbGVyIikgewotICAgICAgICBtX3NhbXBsZXJUeXBlID0gJm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzT3Bh
cXVlVHlwZSgpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRWZWN0b3IoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAidmVjdG9yIikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCku
c2l6ZSgpID09IDIpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6
OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBd
KSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJl
c3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pKTsKLSAgICBh
dXRvJiBpbm5lclR5cGUgPSBzdGF0aWNfY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2UmPihXVEY6Omdl
dDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1
bWVudHMoKVswXSkpOwotICAgIGF1dG8mIGxlbmd0aEV4cHJlc3Npb24gPSBXVEY6OmdldDxBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KVsxXSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlwZUFyZ3VtZW50cygpLnNpemUoKSk7Ci0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qKiBhcnJheTsKLSAgICBpZiAoaW5uZXJUeXBl
Lm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JCb29sOwotICAgIGVs
c2UgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICBhcnJheSA9IG1fdmVj
dG9yVWludDsKLSAgICBlbHNlIGlmIChpbm5lclR5cGUubmFtZSgpID09ICJpbnQiKQotICAgICAg
ICBhcnJheSA9IG1fdmVjdG9ySW50OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoaW5uZXJU
eXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvckZsb2F0Owot
ICAgIH0KLSAgICBpbnQgbGVuZ3RoID0gbGVuZ3RoRXhwcmVzc2lvbi5pbnRlZ2VyTGl0ZXJhbCgp
LnZhbHVlKCk7Ci0gICAgQVNTRVJUKGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA0KTsKLSAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNWZWN0b3IoKTsKLSAgICBhcnJheVtsZW5ndGggLSAy
XSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
SW50cmluc2ljczo6YWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
IT0gIm1hdHJpeCIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc01hdHJpeCgpOwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24u
dHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1l
bnRzKClbMV0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0
YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsyXSkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZEZ1bGxUZXh0dXJl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24sIEFTVDo6
VHlwZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQotewotICAgIGF1dG8gdGV4dHVyZVR5cGVJbmRleCA9
IHN0ZDo6ZmluZChtX3RleHR1cmVUeXBlTmFtZXMsIG1fdGV4dHVyZVR5cGVOYW1lcyArIFdURl9B
UlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKSwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSkgLSBtX3RleHR1cmVUeXBlTmFtZXM7Ci0gICAgaWYgKHRleHR1cmVUeXBlSW5kZXggPT0g
V1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICB1bnNpZ25lZCBpbm5lclR5cGVJbmRleCA9IFdURl9BUlJBWV9MRU5HVEgobV90
ZXh0dXJlSW5uZXJUeXBlTmFtZXMpOwotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IDA7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5u
ZXJUeXBlTmFtZXMpOyArK2kpIHsKLSAgICAgICAgaWYgKGlubmVyVHlwZS5uYW1lKCkuc3RhcnRz
V2l0aChtX3RleHR1cmVJbm5lclR5cGVOYW1lc1tpXSkpIHsKLSAgICAgICAgICAgIGlubmVyVHlw
ZUluZGV4ID0gaTsKLSAgICAgICAgICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09IG1fdGV4dHVy
ZUlubmVyVHlwZU5hbWVzW2ldKQotICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IDE7Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpID09IHN0cmxlbihtX3RleHR1cmVJ
bm5lclR5cGVOYW1lc1tpXSkgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCkubGVuZ3Ro
KCkgLSAxXSA9PSAnMicKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5uZXJUeXBlLm5hbWUoKVtp
bm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzMnCi0gICAgICAgICAgICAgICAgICAg
IHx8IGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdID09ICc0
Jyk7Ci0gICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gaW5uZXJUeXBlLm5hbWUoKVtpbm5l
clR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gLSAnMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQodmVjdG9yTGVuZ3RoICYmIHZlY3Rvckxlbmd0
aCA8IDUpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlubmVyVHlwZUlu
ZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXMpKTsKLSAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldElzT3BhcXVlVHlwZSgpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiVGV4dHVyZTJEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJX
VGV4dHVyZTJEQXJyYXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0
dXJlQXJyYXkoKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldU
ZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJE
IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIgfHwgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1dyaXRhYmxlVGV4dHVyZSgpOwotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRUZXh0dXJlRGltZW5zaW9uKDEpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJX
VGV4dHVyZTJEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlQ3Vi
ZSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXkiIHx8
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigyKTsKLSAgICBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTNEIiB8fCBuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIpCi0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDMpOwotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlQ3ViZSIpCi0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRJc0N1YmVUZXh0dXJlKCk7Ci0gICAgbV9mdWxsVGV4dHVyZXNbdGV4dHVy
ZVR5cGVJbmRleF1baW5uZXJUeXBlSW5kZXhdW3ZlY3Rvckxlbmd0aCAtIDFdID0gJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjph
ZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNlJiBpbm5lclR5cGUpCi17Ci0gICAgQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24qKiB0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICBpZiAobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQotICAgICAgICB0ZXh0dXJl
ID0gbV90ZXh0dXJlRGVwdGgyRDsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJUZXh0dXJlRGVwdGgyREFycmF5IikKLSAgICAgICAgdGV4dHVyZSA9IG1fdGV4
dHVyZURlcHRoMkRBcnJheTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aEN1YmUiKTsKLSAgICAgICAgdGV4dHVy
ZSA9IG1fdGV4dHVyZURlcHRoQ3ViZTsKLSAgICB9Ci0gICAgYXV0byBpbm5lclR5cGVJbmRleCA9
IHN0ZDo6ZmluZChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMsIG1fZGVwdGhUZXh0dXJlSW5uZXJU
eXBlcyArIFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKSwgaW5uZXJU
eXBlLm5hbWUoKSkgLSBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXM7Ci0gICAgQVNTRVJUKGlubmVy
VHlwZUluZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKSk7
Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsKLSAgICBpZiAodGV4dHVyZSA9PSBtX3Rl
eHR1cmVEZXB0aDJEQXJyYXkpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1Rl
eHR1cmVBcnJheSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURlcHRoQ3ViZSkKLSAg
ICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQ3ViZVRleHR1cmUoKTsKLSAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigyKTsKLSAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0SXNEZXB0aFRleHR1cmUoKTsKLSAgICB0ZXh0dXJlW2lubmVyVHlwZUlu
ZGV4XSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRk
VGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
KQotewotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSA9PSAxKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpU
eXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkp
OwotICAgIGF1dG8mIGlubmVyVHlwZSA9IHN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZSY+
KFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24u
dHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlwZUFyZ3VtZW50
cygpLnNpemUoKSk7Ci0gICAgaWYgKGFkZEZ1bGxUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biwgaW5uZXJUeXBlKSkgewotICAgICAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRpdmVUeXBlRGVj
bGFyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGFkZERlcHRoVGV4dHVyZShu
YXRpdmVUeXBlRGVjbGFyYXRpb24sIGlubmVyVHlwZSk7Ci0gICAgbV90ZXh0dXJlU2V0LmFkZCgm
bmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGQoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAo
YWRkUHJpbWl0aXZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoYWRkVmVjdG9yKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoYWRkTWF0cml4KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhZGRUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW50cmluc2ljcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJmZmZmYTVlNDRlNDBkMzY5NjgyNmFiOGQ4ZDZhZjc2NWM4NTUyZGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDxjc3RyaW5nPgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBJbnRy
aW5zaWNzIHsKLXB1YmxpYzoKLSAgICBJbnRyaW5zaWNzKCk7Ci0KLSAgICB2b2lkIGFkZChBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICB2b2lkIGFkZChBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYpOwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHZvaWRU
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZvaWRUeXBlKTsKLSAgICAgICAg
cmV0dXJuICptX3ZvaWRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBib29sVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9ib29sVHlwZSk7
Ci0gICAgICAgIHJldHVybiAqbV9ib29sVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgYm9vbFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0
Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8
IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JCb29sW3NpemUgLSAyXTsKLSAg
ICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludFR5cGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdWludFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fdWlu
dFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludFR5cGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW50VHlwZSk7Ci0gICAgICAgIHJldHVy
biAqbV9pbnRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1
aW50MlR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yVWludFswXSk7
Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50WzBdOwotICAgIH0KLQotICAgIEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdmVjdG9yVWludFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50WzJdOwot
ICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VmVjdG9yVHlwZUZv
clNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJuICpt
X3ZlY3RvclVpbnRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBpbnQyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JJ
bnRbMF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9ySW50WzBdOwotICAgIH0KLQotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnQ0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV92ZWN0b3JJbnRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9ySW50WzJd
OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRWZWN0b3JUeXBl
Rm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1cm4g
Km1fdmVjdG9ySW50W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgc2FtcGxlclR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2Ft
cGxlclR5cGUpOwotICAgICAgICByZXR1cm4gKm1fc2FtcGxlclR5cGU7Ci0gICAgfQotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VHlwZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV9mbG9hdFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fZmxvYXRUeXBlOwot
ICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDJUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzBdKTsKLSAgICAgICAgcmV0
dXJuICptX3ZlY3RvckZsb2F0WzBdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBmbG9hdDNUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3Rv
ckZsb2F0WzFdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckZsb2F0WzFdOwotICAgIH0KLQot
ICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDRUeXBlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzJdKTsKLSAgICAgICAgcmV0dXJuICptX3Zl
Y3RvckZsb2F0WzJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBm
bG9hdFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0gICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0g
ICAgICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFtzaXplIC0gMl07Ci0gICAgfQotCi0gICAgLy8g
VGhlc2UgZnVuY3Rpb25zIG1heSBoYXZlIGJlZW4gcHJ1bmVkIGZyb20gdGhlIEFTVCBpZiB0aGV5
IGFyZSB1bnVzZWQuCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBkZHgoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR4OwotICAgIH0KLQotICAgIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2RkeTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGFs
bE1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWxsTWVtb3J5
QmFycmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRl
dmljZU1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGV2aWNl
TWVtb3J5QmFycmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24qIGdyb3VwTWVtb3J5QmFycmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9n
cm91cE1lbW9yeUJhcnJpZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wgYWRkUHJpbWl0
aXZlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgYm9vbCBhZGRWZWN0b3IoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZE1hdHJpeChBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mLCBBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2b2lkIGFkZERlcHRo
VGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYsIEFTVDo6VHlwZVJlZmVyZW5jZSYp
OwotICAgIHZvaWQgYWRkVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0g
ICAgSGFzaFNldDxjb25zdCBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbio+IG1fdGV4dHVyZVNl
dDsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZvaWRUeXBlIHsgbnVsbHB0
ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2Jvb2xUeXBlIHsgbnVsbHB0
ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3VpbnRUeXBlIHsgbnVsbHB0
ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2ludFR5cGUgeyBudWxscHRy
IH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZmxvYXRUeXBlIHsgbnVsbHB0
ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2F0b21pY0ludFR5cGUgeyBu
dWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYXRvbWljVWludFR5
cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fc2FtcGxl
clR5cGUgeyBudWxscHRyIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92
ZWN0b3JCb29sWzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3Zl
Y3RvclVpbnRbM10geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVj
dG9ySW50WzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3Rv
ckZsb2F0WzNdIHsgMCB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBtX3Rl
eHR1cmVUeXBlTmFtZXNbXSA9IHsgIlRleHR1cmUxRCIsICJSV1RleHR1cmUxRCIsICJUZXh0dXJl
MkQiLCAiUldUZXh0dXJlMkQiLCAiVGV4dHVyZTNEIiwgIlJXVGV4dHVyZTNEIiwgIlRleHR1cmVD
dWJlIiwgIlRleHR1cmUxREFycmF5IiwgIlJXVGV4dHVyZTFEQXJyYXkiLCAiVGV4dHVyZTJEQXJy
YXkiLCAiUldUZXh0dXJlMkRBcnJheSIgfTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogbV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbXSA9IHsgInVpbnQiLCAiaW50IiwgImZsb2F0
IiB9OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZnVsbFRleHR1cmVzW1dU
Rl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKV1bV1RGX0FSUkFZX0xFTkdUSChtX3Rl
eHR1cmVJbm5lclR5cGVOYW1lcyldWzRdIHt7eyAwIH19fTsKLQotICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzW10gPSAgeyAiZmxvYXQiIH07
Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGgyRFtXVEZf
QVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9OwotICAgIEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEQXJyYXlbV1RGX0FSUkFZX0xF
TkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGhDdWJlW1dURl9BUlJBWV9MRU5HVEgobV9kZXB0
aFRleHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24qIG1fZGR4IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiogbV9kZHkgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKiBtX2FsbE1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKiBtX2RldmljZU1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci0g
ICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2dyb3VwTWVtb3J5QmFycmllciB7
IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNmIwZWFjY2Q5NWUxMzE5OGU2ODYzM2ZjYTk2ZmI0NzQz
Yjk3YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNzQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0IGNoYXIq
IFRva2VuOjp0eXBlTmFtZShUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBUeXBlOjpJbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gImludCBsaXRlcmFsIjsKLSAg
ICBjYXNlIFR5cGU6OlVpbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gInVpbnQgbGl0ZXJhbCI7
Ci0gICAgY2FzZSBUeXBlOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAiZmxvYXQgbGl0
ZXJhbCI7Ci0gICAgY2FzZSBUeXBlOjpTdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiAic3RydWN0IjsK
LSAgICBjYXNlIFR5cGU6OlR5cGVkZWY6Ci0gICAgICAgIHJldHVybiAidHlwZWRlZiI7Ci0gICAg
Y2FzZSBUeXBlOjpFbnVtOgotICAgICAgICByZXR1cm4gImVudW0iOwotICAgIGNhc2UgVHlwZTo6
T3BlcmF0b3I6Ci0gICAgICAgIHJldHVybiAib3BlcmF0b3IiOwotICAgIGNhc2UgVHlwZTo6SWY6
Ci0gICAgICAgIHJldHVybiAiaWYiOwotICAgIGNhc2UgVHlwZTo6RWxzZToKLSAgICAgICAgcmV0
dXJuICJlbHNlIjsKLSAgICBjYXNlIFR5cGU6OkNvbnRpbnVlOgotICAgICAgICByZXR1cm4gImNv
bnRpbnVlIjsKLSAgICBjYXNlIFR5cGU6OkJyZWFrOgotICAgICAgICByZXR1cm4gImJyZWFrIjsK
LSAgICBjYXNlIFR5cGU6OlN3aXRjaDoKLSAgICAgICAgcmV0dXJuICJzd2l0Y2giOwotICAgIGNh
c2UgVHlwZTo6Q2FzZToKLSAgICAgICAgcmV0dXJuICJjYXNlIjsKLSAgICBjYXNlIFR5cGU6OkRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiZGVmYXVsdCI7Ci0gICAgY2FzZSBUeXBlOjpGYWxsdGhy
b3VnaDoKLSAgICAgICAgcmV0dXJuICJmYWxsdGhyb3VnaCI7Ci0gICAgY2FzZSBUeXBlOjpGb3I6
Ci0gICAgICAgIHJldHVybiAiZm9yIjsKLSAgICBjYXNlIFR5cGU6OldoaWxlOgotICAgICAgICBy
ZXR1cm4gIndoaWxlIjsKLSAgICBjYXNlIFR5cGU6OkRvOgotICAgICAgICByZXR1cm4gImRvIjsK
LSAgICBjYXNlIFR5cGU6OlJldHVybjoKLSAgICAgICAgcmV0dXJuICJyZXR1cm4iOwotICAgIGNh
c2UgVHlwZTo6TnVsbDoKLSAgICAgICAgcmV0dXJuICJudWxsIjsKLSAgICBjYXNlIFR5cGU6OlRy
dWU6Ci0gICAgICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgY2FzZSBUeXBlOjpGYWxzZToKLSAgICAg
ICAgcmV0dXJuICJmYWxzZSI7Ci0gICAgY2FzZSBUeXBlOjpDb25zdGFudDoKLSAgICAgICAgcmV0
dXJuICJjb25zdGFudCI7Ci0gICAgY2FzZSBUeXBlOjpEZXZpY2U6Ci0gICAgICAgIHJldHVybiAi
ZGV2aWNlIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICByZXR1cm4gInRo
cmVhZGdyb3VwIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZDoKLSAgICAgICAgcmV0dXJuICJ0aHJl
YWQiOwotICAgIGNhc2UgVHlwZTo6U3BhY2U6Ci0gICAgICAgIHJldHVybiAic3BhY2UiOwotICAg
IGNhc2UgVHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gInZlcnRleCI7Ci0gICAgY2FzZSBU
eXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuICJmcmFnbWVudCI7Ci0gICAgY2FzZSBUeXBl
OjpDb21wdXRlOgotICAgICAgICByZXR1cm4gImNvbXB1dGUiOwotICAgIGNhc2UgVHlwZTo6TnVt
VGhyZWFkczoKLSAgICAgICAgcmV0dXJuICJudW10aHJlYWRzIjsKLSAgICBjYXNlIFR5cGU6OlNW
SW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuICJTVl9JbnN0YW5jZUlEIjsKLSAgICBjYXNlIFR5
cGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfVmVydGV4SUQiOwotICAgIGNhc2Ug
VHlwZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiUFNJWkUiOwotICAgIGNhc2UgVHlwZTo6U1ZQ
b3NpdGlvbjoKLSAgICAgICAgcmV0dXJuICJTVl9Qb3NpdGlvbiI7Ci0gICAgY2FzZSBUeXBlOjpT
VklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gIlNWX0lzRnJvbnRGYWNlIjsKLSAgICBjYXNl
IFR5cGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAiU1ZfU2FtcGxlSW5kZXgiOwot
ICAgIGNhc2UgVHlwZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIlNWX0lubmVy
Q292ZXJhZ2UiOwotICAgIGNhc2UgVHlwZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiAiU1Zf
VGFyZ2V0IjsKLSAgICBjYXNlIFR5cGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiAiU1ZfRGVw
dGgiOwotICAgIGNhc2UgVHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJTVl9Db3Zl
cmFnZSI7Ci0gICAgY2FzZSBUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVy
biAiU1ZfRGlzcGF0Y2hUaHJlYWRJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwSUQ6Ci0gICAg
ICAgIHJldHVybiAiU1ZfR3JvdXBJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwSW5kZXg6Ci0g
ICAgICAgIHJldHVybiAiU1ZfR3JvdXBJbmRleCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwVGhy
ZWFkSUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfR3JvdXBUaHJlYWRJRCI7Ci0gICAgY2FzZSBUeXBl
OjpBdHRyaWJ1dGU6Ci0gICAgICAgIHJldHVybiAiU1ZfQXR0cmlidXRlIjsKLSAgICBjYXNlIFR5
cGU6OlJlZ2lzdGVyOgotICAgICAgICByZXR1cm4gInJlZ2lzdGVyIjsKLSAgICBjYXNlIFR5cGU6
OlNwZWNpYWxpemVkOgotICAgICAgICByZXR1cm4gInNwZWNpYWxpemVkIjsKLSAgICBjYXNlIFR5
cGU6Ok5hdGl2ZToKLSAgICAgICAgcmV0dXJuICJuYXRpdmUiOwotICAgIGNhc2UgVHlwZTo6UmVz
dHJpY3RlZDoKLSAgICAgICAgcmV0dXJuICJyZXN0cmljdGVkIjsKLSAgICBjYXNlIFR5cGU6OlVu
ZGVyc2NvcmU6Ci0gICAgICAgIHJldHVybiAiXyI7Ci0gICAgY2FzZSBUeXBlOjpBdXRvOgotICAg
ICAgICByZXR1cm4gImF1dG8iOwotICAgIGNhc2UgVHlwZTo6UHJvdG9jb2w6Ci0gICAgICAgIHJl
dHVybiAicHJvdG9jb2wiOwotICAgIGNhc2UgVHlwZTo6Q29uc3Q6Ci0gICAgICAgIHJldHVybiAi
Y29uc3QiOwotICAgIGNhc2UgVHlwZTo6U3RhdGljOgotICAgICAgICByZXR1cm4gInN0YXRpYyI7
Ci0gICAgY2FzZSBUeXBlOjpRdWFsaWZpZXI6Ci0gICAgICAgIHJldHVybiAicXVhbGlmaWVyIjsK
LSAgICBjYXNlIFR5cGU6OklkZW50aWZpZXI6Ci0gICAgICAgIHJldHVybiAiaWRlbnRpZmllciI7
Ci0gICAgY2FzZSBUeXBlOjpPcGVyYXRvck5hbWU6Ci0gICAgICAgIHJldHVybiAib3BlcmF0b3Ig
bmFtZSI7Ci0gICAgY2FzZSBUeXBlOjpFcXVhbHNTaWduOgotICAgICAgICByZXR1cm4gIj0iOwot
ICAgIGNhc2UgVHlwZTo6U2VtaWNvbG9uOgotICAgICAgICByZXR1cm4gIjsiOwotICAgIGNhc2Ug
VHlwZTo6TGVmdEN1cmx5QnJhY2tldDoKLSAgICAgICAgcmV0dXJuICJ7IjsKLSAgICBjYXNlIFR5
cGU6OlJpZ2h0Q3VybHlCcmFja2V0OgotICAgICAgICByZXR1cm4gIn0iOwotICAgIGNhc2UgVHlw
ZTo6Q29sb246Ci0gICAgICAgIHJldHVybiAiOiI7Ci0gICAgY2FzZSBUeXBlOjpDb21tYToKLSAg
ICAgICAgcmV0dXJuICIsIjsKLSAgICBjYXNlIFR5cGU6OkxlZnRQYXJlbnRoZXNpczoKLSAgICAg
ICAgcmV0dXJuICIoIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0UGFyZW50aGVzaXM6Ci0gICAgICAg
IHJldHVybiAiKSI7Ci0gICAgY2FzZSBUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoKLSAgICAgICAg
cmV0dXJuICJbXSI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldDoKLSAgICAgICAg
cmV0dXJuICJbIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldDoKLSAgICAgICAg
cmV0dXJuICJdIjsKLSAgICBjYXNlIFR5cGU6OlN0YXI6Ci0gICAgICAgIHJldHVybiAiKiI7Ci0g
ICAgY2FzZSBUeXBlOjpMZXNzVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPCI7Ci0gICAgY2Fz
ZSBUeXBlOjpHcmVhdGVyVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPiI7Ci0gICAgY2FzZSBU
eXBlOjpGdWxsU3RvcDoKLSAgICAgICAgcmV0dXJuICIuIjsKLSAgICBjYXNlIFR5cGU6OlBsdXNF
cXVhbHM6Ci0gICAgICAgIHJldHVybiAiKz0iOwotICAgIGNhc2UgVHlwZTo6TWludXNFcXVhbHM6
Ci0gICAgICAgIHJldHVybiAiLT0iOwotICAgIGNhc2UgVHlwZTo6VGltZXNFcXVhbHM6Ci0gICAg
ICAgIHJldHVybiAiKj0iOwotICAgIGNhc2UgVHlwZTo6RGl2aWRlRXF1YWxzOgotICAgICAgICBy
ZXR1cm4gIi89IjsKLSAgICBjYXNlIFR5cGU6Ok1vZEVxdWFsczoKLSAgICAgICAgcmV0dXJuICIl
PSI7Ci0gICAgY2FzZSBUeXBlOjpYb3JFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiXj0iOwotICAg
IGNhc2UgVHlwZTo6QW5kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiY9IjsKLSAgICBjYXNlIFR5
cGU6Ok9yRXF1YWxzOgotICAgICAgICByZXR1cm4gInw9IjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0
U2hpZnRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiPj49IjsKLSAgICBjYXNlIFR5cGU6OkxlZnRT
aGlmdEVxdWFsczoKLSAgICAgICAgcmV0dXJuICI8PD0iOwotICAgIGNhc2UgVHlwZTo6UGx1c1Bs
dXM6Ci0gICAgICAgIHJldHVybiAiKysiOwotICAgIGNhc2UgVHlwZTo6TWludXNNaW51czoKLSAg
ICAgICAgcmV0dXJuICItLSI7Ci0gICAgY2FzZSBUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJu
ICItPiI7Ci0gICAgY2FzZSBUeXBlOjpRdWVzdGlvbk1hcms6Ci0gICAgICAgIHJldHVybiAiPyI7
Ci0gICAgY2FzZSBUeXBlOjpPck9yOgotICAgICAgICByZXR1cm4gInx8IjsKLSAgICBjYXNlIFR5
cGU6OkFuZEFuZDoKLSAgICAgICAgcmV0dXJuICImJiI7Ci0gICAgY2FzZSBUeXBlOjpPcjoKLSAg
ICAgICAgcmV0dXJuICJ8IjsKLSAgICBjYXNlIFR5cGU6OlhvcjoKLSAgICAgICAgcmV0dXJuICJe
IjsKLSAgICBjYXNlIFR5cGU6OkFuZDoKLSAgICAgICAgcmV0dXJuICImIjsKLSAgICBjYXNlIFR5
cGU6Okxlc3NUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIjw9IjsKLSAgICBjYXNlIFR5
cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIj49IjsKLSAgICBjYXNl
IFR5cGU6OkVxdWFsQ29tcGFyaXNvbjoKLSAgICAgICAgcmV0dXJuICI9PSI7Ci0gICAgY2FzZSBU
eXBlOjpOb3RFcXVhbDoKLSAgICAgICAgcmV0dXJuICIhPSI7Ci0gICAgY2FzZSBUeXBlOjpSaWdo
dFNoaWZ0OgotICAgICAgICByZXR1cm4gIj4+IjsKLSAgICBjYXNlIFR5cGU6OkxlZnRTaGlmdDoK
LSAgICAgICAgcmV0dXJuICI8PCI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzOgotICAgICAgICByZXR1
cm4gIisiOwotICAgIGNhc2UgVHlwZTo6TWludXM6Ci0gICAgICAgIHJldHVybiAiLSI7Ci0gICAg
Y2FzZSBUeXBlOjpEaXZpZGU6Ci0gICAgICAgIHJldHVybiAiLyI7Ci0gICAgY2FzZSBUeXBlOjpN
b2Q6Ci0gICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBUeXBlOjpUaWxkZToKLSAgICAgICAg
cmV0dXJuICJ+IjsKLSAgICBjYXNlIFR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6Ci0gICAgICAgIHJl
dHVybiAiISI7Ci0gICAgY2FzZSBUeXBlOjpBdDoKLSAgICAgICAgcmV0dXJuICJAIjsKLSAgICBj
YXNlIFR5cGU6OkVuZE9mRmlsZToKLSAgICAgICAgcmV0dXJuICJFT0YiOwotICAgIGNhc2UgVHlw
ZTo6SW52YWxpZDoKLSAgICAgICAgcmV0dXJuICJMRVhJTkdfRVJST1IiOwotICAgIH0KLX0KLQot
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkSWRlbnRpZmllclN0YXJ0KFVDaGFyIHRo
ZUNoYXIpCi17Ci0gICAgcmV0dXJuICh0aGVDaGFyID49ICdhJyAmJiB0aGVDaGFyIDw9ICd6JykK
LSAgICAgICAgfHwgKHRoZUNoYXIgPj0gJ0EnICYmIHRoZUNoYXIgPD0gJ1onKQotICAgICAgICB8
fCAodGhlQ2hhciA9PSAnXycpOwotfQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFs
aWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKFVDaGFyIHRoZUNoYXIpCi17Ci0gICAgcmV0dXJu
ICh0aGVDaGFyID49ICdhJyAmJiB0aGVDaGFyIDw9ICd6JykKLSAgICAgICAgfHwgKHRoZUNoYXIg
Pj0gJ0EnICYmIHRoZUNoYXIgPD0gJ1onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnMCcgJiYg
dGhlQ2hhciA8PSAnOScpCi0gICAgICAgIHx8ICh0aGVDaGFyID09ICdfJyk7Ci19Ci0KLXN0YXRp
YyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNIZXhhZGVjaW1hbENoYXJhY3RlcihVQ2hhciBjaGFyYWN0
ZXIpCi17Ci0gICAgcmV0dXJuIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScp
Ci0gICAgICAgIHx8IChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAnZicpCi0gICAg
ICAgIHx8IChjaGFyYWN0ZXIgPj0gJ0EnICYmIGNoYXJhY3RlciA8PSAnRicpOwotfQotCi1zdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzRGlnaXQoVUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1
cm4gdGhlQ2hhciA+PSAnMCcgJiYgdGhlQ2hhciA8PSAnOSc7Ci19Ci0KLWF1dG8gTGV4ZXI6OmNv
bnN1bWVUb2tlbkZyb21TdHJlYW0oKSAtPiBUb2tlbgotewotICAgIFVDaGFyIGN1cnJlbnQgPSAw
OwotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fb2Zmc2V0OwotCi0gICAgYXV0byBwZWVrID0gWyZd
ICgpIC0+IFVDaGFyIHsKLSAgICAgICAgaWYgKG9mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgo
KSkKLSAgICAgICAgICAgIHJldHVybiBtX3N0cmluZ1ZpZXdbb2Zmc2V0XTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfTsKLQotICAgIGF1dG8gc2hpZnQgPSBbJl0gewotICAgICAgICBpZiAob2Zm
c2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBjdXJyZW50ID0gbV9z
dHJpbmdWaWV3W29mZnNldF07Ci0gICAgICAgICAgICArK29mZnNldDsKLSAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50OwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnQgPSAwOwotICAgICAgICBy
ZXR1cm4gY3VycmVudDsKLSAgICB9OwotCi0gICAgYXV0byBjb25zdW1lID0gWyZdIChVQ2hhciB0
aGVDaGFyKSB7Ci0gICAgICAgIGlmIChwZWVrKCkgPT0gdGhlQ2hhcikgewotICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBuZXh0SXNJZGVudGlmaWVyID0gWyZdIHsK
LSAgICAgICAgcmV0dXJuIGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKHBlZWsoKSk7
Ci0gICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBbJl0gKFRva2VuOjpUeXBlIHR5cGUpIC0+IFRv
a2VuIHsKLSAgICAgICAgYXV0byBvbGRPZmZzZXQgPSBtX29mZnNldDsKLSAgICAgICAgbV9vZmZz
ZXQgPSBvZmZzZXQ7Ci0gICAgICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKLSAgICAg
ICAgcmV0dXJuIHsgeyBvbGRPZmZzZXQsIG9mZnNldCwgbV9uYW1lU3BhY2UgfSwgdHlwZSB9Owot
ICAgIH07Ci0KLSAgICBzd2l0Y2ggKHNoaWZ0KCkpIHsKLSAgICBjYXNlICdBJzoKLSAgICBjYXNl
ICdCJzoKLSAgICBjYXNlICdDJzoKLSAgICBjYXNlICdEJzoKLSAgICBjYXNlICdFJzoKLSAgICBj
YXNlICdGJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICdIJzoKLSAgICBjYXNlICdJJzoKLSAg
ICBjYXNlICdKJzoKLSAgICBjYXNlICdLJzoKLSAgICBjYXNlICdMJzoKLSAgICBjYXNlICdNJzoK
LSAgICBjYXNlICdOJzoKLSAgICBjYXNlICdPJzoKLSAgICBjYXNlICdRJzoKLSAgICBjYXNlICdS
JzoKLSAgICBjYXNlICdUJzoKLSAgICBjYXNlICdVJzoKLSAgICBjYXNlICdWJzoKLSAgICBjYXNl
ICdXJzoKLSAgICBjYXNlICdYJzoKLSAgICBjYXNlICdZJzoKLSAgICBjYXNlICdaJzoKLSAgICBj
YXNlICdnJzoKLSAgICBjYXNlICdoJzoKLSAgICBjYXNlICdqJzoKLSAgICBjYXNlICdrJzoKLSAg
ICBjYXNlICdsJzoKLSAgICBjYXNlICdtJzoKLSAgICBjYXNlICdxJzoKLSAgICBjYXNlICd4JzoK
LSAgICBjYXNlICd5JzoKLSAgICBjYXNlICd6JzoKLXBhcnNlSWRlbnRpZmllcjoKLSAgICAgICAg
d2hpbGUgKGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKHBlZWsoKSkpCi0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OklkZW50aWZp
ZXIpOwotCi0gICAgY2FzZSAncyc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAg
IGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLQotICAgICAgICBj
YXNlICd3JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN3aXRjaCk7Ci0KLSAgICAgICAgY2FzZSAn
dCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpTdHJ1Y3QpOwotICAgICAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0YXRpYyk7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAncCc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAg
IGNhc2UgJ2EnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNwYWNlKTsKLSAgICAgICAgICAg
IGNhc2UgJ2UnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2En
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3onKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNw
ZWNpYWxpemVkKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnUyc6Ci0g
ICAgICAgIGlmICghY29uc3VtZSgnVicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnXycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnRyc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0g
ICAgICAgICAgICBjYXNlICdJJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAnRCc6Ci0gICAg
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3Vw
SUQpOwotICAgICAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6U1ZHcm91cEluZGV4KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgY2FzZSAnVCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFk
SUQpOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2Fz
ZSAnZSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNW
RGVwdGgpOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ1QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEKTsK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ0MnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2JykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZSk7
Ci0gICAgICAgIGNhc2UgJ1QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpT
VlRhcmdldCk7Ci0gICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCk7Ci0gICAgICAgIGNhc2UgJ1AnOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdzJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6U1ZQb3NpdGlvbik7Ci0gICAgICAgIGNhc2UgJ1YnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
RCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZWZXJ0ZXhJRCk7
Ci0gICAgICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3
aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRicpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdGJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
YScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJc0Zyb250
RmFjZSk7Ci0gICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAn
bic6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnQycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UpOwotICAgICAgICAgICAgICAgIGNhc2Ug
J3MnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJbnN0YW5jZUlEKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
fQotCi0gICAgY2FzZSAndCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNh
c2UgJ3InOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpUcnVlKTsKLSAgICAgICAgY2FzZSAneSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlR5cGVkZWYpOwotICAgICAgICBjYXNlICdoJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdh
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LQotICAgICAgICAgICAgaWYgKCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaHJlYWQpOwotCi0gICAgICAgICAgICBpZiAocGVl
aygpICE9ICdnJykKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnQgPT0g
J2cnKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6VGhyZWFkZ3JvdXApOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnZSc6Ci0gICAgICAgIHN3
aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbnVtKTsKLSAgICAgICAgY2FzZSAnbCc6Ci0g
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVsc2UpOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIH0KLQotICAgIGNhc2UgJ28nOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUo
J3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNv
bnN1bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAg
Y2FzZSAnJic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJz4nOgotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc+JykpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotICAgICAgICAg
ICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJzwnKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3Bl
cmF0b3JOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLQotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBjb25zdW1lKCcrJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgY29uc3VtZSgnLScpOwotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJ3wnOgotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3Bl
cmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICc9JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkludmFsaWQpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyonOgotICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JO
YW1lKTsKLQotICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAg
Y2FzZSAnJSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyEnOgotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3Bl
cmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICd+JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAg
ICAgICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6T3BlcmF0b3IpOwotCi0gICAgY2FzZSAnaSc6Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgnZicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJZik7Ci0KLSAgICBjYXNlICdjJzoKLSAg
ICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNhc2UpOwotCi0gICAgICAgIGNh
c2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdp
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OlF1YWxpZmllcik7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdtJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkNvbXB1dGUpOwotICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6Q29udGludWUpOwotICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgot
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb25zdCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5l
eHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNv
bnN0YW50KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ2InOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3In
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2snKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QnJlYWspOwotCi0g
ICAgY2FzZSAnZCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ28n
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVy
KCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRvKTsKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAg
IGNhc2UgJ2YnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgICAgICBjYXNlICd2JzoK
LSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
aScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGV2aWNlKTsK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLQotICAgIGNhc2UgJ2YnOgotICAgICAgICBz
d2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkZvcik7Ci0gICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZyYWdtZW50KTsKLSAgICAgICAgY2Fz
ZSAnYSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCds
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAg
IHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkZhbGx0aHJvdWdoKTsKLQotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGYWxzZSk7
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnZic6
Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ3cnOgotICAgICAgICBpZiAoIWNvbnN1bWUo
J2gnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNv
bnN1bWUoJ2knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6V2hpbGUpOwot
Ci0gICAgY2FzZSAncic6Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAg
IGNhc2UgJ3QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlJldHVybik7Ci0gICAgICAgIGNhc2UgJ2cnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZWdpc3Rlcik7Ci0gICAgICAgIGNhc2UgJ3MnOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6UmVzdHJpY3RlZCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnbic6Ci0gICAgICAgIHN3aXRj
aCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TmF0
aXZlKTsKLSAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TnVsbCk7Ci0g
ICAgICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok51bVRocmVhZHMpOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnaSc6
Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J24nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAg
ICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCd2JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
fQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgfQotCi0gICAgY2FzZSAndic6Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
cicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpWZXJ0ZXgpOwot
Ci0gICAgY2FzZSAnUCc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnUycpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnWicpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
RScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQU2l6ZSk7Ci0KLSAgICBjYXNlICd1JzoKLSAg
ICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0KLSAgICBjYXNlICdwJzoKLSAgICAg
ICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdsJykp
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlByb3RvY29sKTsKLQotICAgIGNhc2UgJ18nOgotICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VW5kZXJzY29yZSk7Ci0K
LSAgICBjYXNlICdhJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAn
dCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0Jykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdiJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpBdHRyaWJ1dGUpOwotICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXV0byk7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAg
Y2FzZSAnPic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc+JykpIHsKLSAgICAgICAgICAgIGlmIChj
b25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpS
aWdodFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
UmlnaHRTaGlmdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG8pOwot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbik7Ci0gICAg
Y2FzZSAnPCc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc8JykpIHsKLSAgICAgICAgICAgIGlmIChj
b25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpM
ZWZ0U2hpZnRFcXVhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpM
ZWZ0U2hpZnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvKTsKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ24pOwotCi0gICAgY2FzZSAn
Kyc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OlBsdXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnKycpKQotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQbHVzUGx1cyk7Ci0gICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UGx1cyk7Ci0KLSAgICBjYXNlICctJzoKLSAgICAgICAg
aWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
TWludXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnLScpKQotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUo
Jz4nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXJyb3cpOwotICAg
ICAgICBpZiAoaXNEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgZ290byBwYXJzZU51bWJlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29uc3VtZSgn
LicpKQotICAgICAgICAgICAgZ290byBwYXJzZUZsb2F0QWZ0ZXJEb3Q7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6TWludXMpOwotCi0gICAgY2FzZSAnKic6Ci0gICAgICAgIGlm
IChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRp
bWVzRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTdGFyKTsKLQot
ICAgIGNhc2UgJy8nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMpOwotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkRpdmlkZSk7Ci0KLSAgICBjYXNlICclJzoKLSAgICAgICAgaWYgKGNv
bnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TW9kRXF1
YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2QpOwotCi0gICAgY2Fz
ZSAnXic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlhvckVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6WG9yKTsKLQotICAgIGNhc2UgJyYnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBbmRFcXVhbHMpOwotICAgICAg
ICBpZiAoY29uc3VtZSgnJicpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpBbmRBbmQpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZCk7Ci0KLSAg
ICBjYXNlICd8JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6T3JFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnfCcp
KQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPck9yKTsKLSAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcik7Ci0KLSAgICBjYXNlICdbJzoKLSAgICAgICAg
aWYgKGNvbnN1bWUoJ10nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
U3F1YXJlQnJhY2tldFBhaXIpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Okxl
ZnRTcXVhcmVCcmFja2V0KTsKLQotICAgIGNhc2UgJz0nOgotICAgICAgICBpZiAoY29uc3VtZSgn
PScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFcXVhbENvbXBhcmlz
b24pOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24pOwotCi0g
ICAgY2FzZSAnISc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok5vdEVxdWFsKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpFeGNsYW1hdGlvblBvaW50KTsKLQotICAgIGNhc2UgJzsnOgotICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNlbWljb2xvbik7Ci0KLSAgICBjYXNlICd7JzoKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAg
IGNhc2UgJ30nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0Q3VybHlC
cmFja2V0KTsKLQotICAgIGNhc2UgJzonOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkNvbG9uKTsKLQotICAgIGNhc2UgJywnOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkNvbW1hKTsKLQotICAgIGNhc2UgJygnOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OkxlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBjYXNlICcpJzoKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIGNhc2UgJ10n
OgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCk7
Ci0KLSAgICBjYXNlICcuJzoKLSAgICAgICAgaWYgKGlzRGlnaXQocGVlaygpKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VGbG9hdEFmdGVyRG90OwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkZ1bGxTdG9wKTsKLQotICAgIGNhc2UgJz8nOgotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OlF1ZXN0aW9uTWFyayk7Ci0KLSAgICBjYXNlICd+JzoKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaWxkZSk7Ci0KLSAgICBjYXNlICdAJzoKLSAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBdCk7Ci0KLSAgICBjYXNlICcwJzoKLSAgICBjYXNl
ICcxJzoKLSAgICBjYXNlICcyJzoKLSAgICBjYXNlICczJzoKLSAgICBjYXNlICc0JzoKLSAgICBj
YXNlICc1JzoKLSAgICBjYXNlICc2JzoKLSAgICBjYXNlICc3JzoKLSAgICBjYXNlICc4JzoKLSAg
ICBjYXNlICc5JzogewotcGFyc2VOdW1iZXI6Ci0gICAgICAgIGlmIChjdXJyZW50ID09ICcwJyAm
JiBjb25zdW1lKCd4JykpIHsKLSAgICAgICAgICAgIHdoaWxlIChpc0hleGFkZWNpbWFsQ2hhcmFj
dGVyKHBlZWsoKSkpCi0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChj
b25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpV
aW50TGl0ZXJhbCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkludExp
dGVyYWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVlaygpKSkKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnN1bWUoJy4nKSkgewotcGFyc2VG
bG9hdEFmdGVyRG90OgotICAgICAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVlaygpKSkKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgY29uc3VtZSgnZicpOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6RmxvYXRMaXRlcmFsKTsKLQotICAgICAgICBpZiAoY29uc3VtZSgndScpKQotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCk7Ci0KLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsKTsKLSAgICB9Ci0KLSAgICBk
ZWZhdWx0OiAKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1fb2Zmc2V0ID09IG1f
c3RyaW5nVmlldy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpF
bmRPZkZpbGUpOwotICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW52YWxpZCk7Ci19Ci0K
LQotLy8gV2UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHR3byBwcm9wZXJ0aWVzIG9mIFVuaWNvZGU6
Ci0vLyAxLiBUaGUgY29uc2l0dXRlbnQgVVRGLTE2IGNvZGUgdW5pdHMgZm9yIGFsbCBub24tQk1Q
IGNvZGUgcG9pbnRzIGFyZSBzdXJyb2dhdGVzLAotLy8gd2hpY2ggbWVhbnMgd2UnbGwgbmV2ZXIg
c2VlIGEgZmFsc2UgbWF0Y2guIElmIHdlIHNlZSBhIEJNUCBjb2RlIHVuaXQsIHdlCi0vLyByZWFs
bHkgaGF2ZSBhIEJNUCBjb2RlIHBvaW50LgotLy8gMi4gRXZlcnl0aGluZyB3ZSdyZSBsb29raW5n
IGZvciBpcyBpbiBCTVAKLQotc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBj
b2RlVW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNvZGVVbml0KSB7Ci0gICAgY2FzZSAnICc6Ci0gICAg
Y2FzZSAnXHQnOgotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBpc05ld2xpbmUoVUNoYXIgY29kZVVuaXQpCi17Ci0gICAgc3dp
dGNoIChjb2RlVW5pdCkgewotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci19Ci0KLWF1dG8gTGV4ZXI6OmxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0
cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkgLT4gTGluZUFuZENv
bHVtbgotewotICAgIC8vIENvdW50aW5nIGZyb20gMSB0byBtYXRjaCBtb3N0IHRleHQgZWRpdG9y
cy4KLSAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gMTsKLSAgICB1bnNpZ25lZCBjb2x1bW5OdW1i
ZXIgPSAxOwotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgc3RkOjptaW4o
c3RyaW5nVmlldy5sZW5ndGgoKSwgdGFyZ2V0T2Zmc2V0KTsgKytvZmZzZXQpIHsKLSAgICAgICAg
Kytjb2x1bW5OdW1iZXI7Ci0gICAgICAgIGlmIChpc05ld2xpbmUoc3RyaW5nVmlld1tvZmZzZXRd
KSkgewotICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAgICAgICAgICAgY29sdW1uTnVtYmVy
ID0gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nVmlldz4gc291cmNlRnJv
bU5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UsIGNvbnN0IFN0cmluZyYgc291cmNl
MSwgY29uc3QgU3RyaW5nKiBzb3VyY2UyKQotewotICAgIHN3aXRjaCAobmFtZVNwYWNlKSB7Ci0g
ICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5OgotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTE6Ci0gICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KHNvdXJjZTEpOwotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6
Ok5hbWVTcGFjZTI6Ci0gICAgICAgIEFTU0VSVChzb3VyY2UyKTsKLSAgICAgICAgcmV0dXJuIFN0
cmluZ1ZpZXcoKnNvdXJjZTIpOwotICAgIH0KLX0KLQotU3RyaW5nIExleGVyOjplcnJvclN0cmlu
ZyhFcnJvciBlcnJvciwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJj
ZTIpCi17Ci0gICAgaWYgKGF1dG8gY29kZUxvY2F0aW9uID0gZXJyb3IuY29kZUxvY2F0aW9uKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gc291cmNlID0gc291cmNlRnJvbU5hbWVTcGFjZShjb2RlTG9j
YXRpb24ubmFtZVNwYWNlKCksIHNvdXJjZTEsIHNvdXJjZTIpKSB7Ci0gICAgICAgICAgICBhdXRv
IGxpbmVBbmRDb2x1bW4gPSBsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldCgqc291cmNlLCBl
cnJvci5jb2RlTG9jYXRpb24oKS5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKGxpbmVBbmRDb2x1bW4ubGluZSwgJzonLCBsaW5lQW5kQ29sdW1uLmNvbHVtbiwg
IjogIiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZXJy
b3IubWVzc2FnZSgpOwotfQotCi12b2lkIExleGVyOjpza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRz
KCkKLXsKLSAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpIHsKLSAg
ICAgICAgaWYgKGlzV2hpdGVzcGFjZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdKSkKLSAgICAgICAg
ICAgICsrbV9vZmZzZXQ7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldF0g
PT0gJy8nICYmIG1fb2Zmc2V0ICsgMSA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAg
ICAgICAgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewotICAgICAgICAg
ICAgICAgIC8vIExpbmUgY29tbWVudAotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ICs9IDI7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIFxyXG4gdGhpcyBtYWtl
cyB0aGUgY29tbWVudCBlbmQgb24gdGhlIFxyLiBJdCBpcyBmaW5lLCBhcyB0aGUgXG4gYWZ0ZXIg
dGhhdCBpcyBzaW1wbGUgd2hpdGVzcGFjZS4KLSAgICAgICAgICAgICAgICBmb3IgKCA7IG1fb2Zm
c2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpICYmICFpc05ld2xpbmUobV9zdHJpbmdWaWV3W21f
b2Zmc2V0XSk7ICsrbV9vZmZzZXQpIHsgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0cmlu
Z1ZpZXdbbV9vZmZzZXQgKyAxXSA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICAvLyBMb25nIGNv
bW1lbnQKLSAgICAgICAgICAgICAgICBmb3IgKCA7IG1fb2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxl
bmd0aCgpIDsgKyttX29mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdHJpbmdW
aWV3W21fb2Zmc2V0XSA9PSAnKicgJiYgbV9vZmZzZXQgKyAxIDwgbV9zdHJpbmdWaWV3Lmxlbmd0
aCgpICYmIG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODQzMTcxZDIxODkyNDY0NDZlYTBiNWQzMTE0NzNkNjUw
OGJhYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IExleGVyOwotCi1zdHJ1Y3QgVG9rZW4gewotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb247
Ci0gICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7Ci0gICAgICAgIEludExpdGVyYWwsCi0g
ICAgICAgIFVpbnRMaXRlcmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAgIFN0cnVj
dCwKLSAgICAgICAgVHlwZWRlZiwKLSAgICAgICAgRW51bSwKLSAgICAgICAgT3BlcmF0b3IsCi0g
ICAgICAgIElmLAotICAgICAgICBFbHNlLAotICAgICAgICBDb250aW51ZSwKLSAgICAgICAgQnJl
YWssCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgQ2FzZSwKLSAgICAgICAgRGVmYXVsdCwKLSAg
ICAgICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZvciwKLSAgICAgICAgV2hpbGUsCi0gICAgICAg
IERvLAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIE51bGwsCi0gICAgICAgIFRydWUsCi0gICAg
ICAgIEZhbHNlLAotICAgICAgICBDb25zdGFudCwKLSAgICAgICAgRGV2aWNlLAotICAgICAgICBU
aHJlYWRncm91cCwKLSAgICAgICAgVGhyZWFkLAotICAgICAgICBTcGFjZSwKLSAgICAgICAgVmVy
dGV4LAotICAgICAgICBGcmFnbWVudCwKLSAgICAgICAgQ29tcHV0ZSwKLSAgICAgICAgTnVtVGhy
ZWFkcywKLSAgICAgICAgU1ZJbnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElELAotICAgICAg
ICBQU2l6ZSwKLSAgICAgICAgU1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250RmFjZSwKLSAg
ICAgICAgU1ZTYW1wbGVJbmRleCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBT
VlRhcmdldCwKLSAgICAgICAgU1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwKLSAgICAgICAg
U1ZEaXNwYXRjaFRocmVhZElELAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAgIFNWR3JvdXBJ
bmRleCwKLSAgICAgICAgU1ZHcm91cFRocmVhZElELAotICAgICAgICBBdHRyaWJ1dGUsCi0gICAg
ICAgIFJlZ2lzdGVyLAotICAgICAgICBTcGVjaWFsaXplZCwKLSAgICAgICAgTmF0aXZlLAotICAg
ICAgICBSZXN0cmljdGVkLAotICAgICAgICBVbmRlcnNjb3JlLAotICAgICAgICBBdXRvLAotICAg
ICAgICBQcm90b2NvbCwKLSAgICAgICAgQ29uc3QsCi0gICAgICAgIFN0YXRpYywKLSAgICAgICAg
UXVhbGlmaWVyLAotICAgICAgICBJZGVudGlmaWVyLAotICAgICAgICBPcGVyYXRvck5hbWUsCi0g
ICAgICAgIEVxdWFsc1NpZ24sCi0gICAgICAgIFNlbWljb2xvbiwKLSAgICAgICAgTGVmdEN1cmx5
QnJhY2tldCwKLSAgICAgICAgUmlnaHRDdXJseUJyYWNrZXQsCi0gICAgICAgIENvbG9uLAotICAg
ICAgICBDb21tYSwKLSAgICAgICAgTGVmdFBhcmVudGhlc2lzLAotICAgICAgICBSaWdodFBhcmVu
dGhlc2lzLAotICAgICAgICBTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgTGVmdFNxdWFyZUJy
YWNrZXQsCi0gICAgICAgIFJpZ2h0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgU3RhciwKLSAgICAg
ICAgTGVzc1RoYW5TaWduLAotICAgICAgICBHcmVhdGVyVGhhblNpZ24sCi0gICAgICAgIEZ1bGxT
dG9wLAotICAgICAgICBQbHVzRXF1YWxzLAotICAgICAgICBNaW51c0VxdWFscywKLSAgICAgICAg
VGltZXNFcXVhbHMsCi0gICAgICAgIERpdmlkZUVxdWFscywKLSAgICAgICAgTW9kRXF1YWxzLAot
ICAgICAgICBYb3JFcXVhbHMsCi0gICAgICAgIEFuZEVxdWFscywKLSAgICAgICAgT3JFcXVhbHMs
Ci0gICAgICAgIFJpZ2h0U2hpZnRFcXVhbHMsCi0gICAgICAgIExlZnRTaGlmdEVxdWFscywKLSAg
ICAgICAgUGx1c1BsdXMsCi0gICAgICAgIE1pbnVzTWludXMsCi0gICAgICAgIEFycm93LAotICAg
ICAgICBRdWVzdGlvbk1hcmssCi0gICAgICAgIE9yT3IsCi0gICAgICAgIEFuZEFuZCwKLSAgICAg
ICAgT3IsCi0gICAgICAgIFhvciwKLSAgICAgICAgQW5kLAotICAgICAgICBMZXNzVGhhbk9yRXF1
YWxUbywKLSAgICAgICAgR3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAgIEVxdWFsQ29tcGFy
aXNvbiwKLSAgICAgICAgTm90RXF1YWwsCi0gICAgICAgIFJpZ2h0U2hpZnQsCi0gICAgICAgIExl
ZnRTaGlmdCwKLSAgICAgICAgUGx1cywKLSAgICAgICAgTWludXMsCi0gICAgICAgIERpdmlkZSwK
LSAgICAgICAgTW9kLAotICAgICAgICBUaWxkZSwKLSAgICAgICAgRXhjbGFtYXRpb25Qb2ludCwK
LSAgICAgICAgQXQsCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICAgICAgSW52YWxpZAotICAgIH0g
dHlwZSB7VHlwZTo6SW52YWxpZH07Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogdHlwZU5hbWUo
VHlwZSk7Ci0KLSAgICBpbmxpbmUgU3RyaW5nVmlldyBzdHJpbmdWaWV3KGNvbnN0IExleGVyJikg
Y29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgfQotfTsKLQotaW5saW5l
IENvZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKGNvbnN0IFRva2VuJiB0b2tlbikKLSAgICA6IENv
ZGVMb2NhdGlvbih0b2tlbi5jb2RlTG9jYXRpb24pCi17Ci19Ci0KLWNsYXNzIExleGVyIHsKLXB1
YmxpYzoKLSAgICBMZXhlcigpID0gZGVmYXVsdDsKLQotICAgIExleGVyKFN0cmluZ1ZpZXcgc3Ry
aW5nVmlldywgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1fc3RyaW5nVmll
dyhzdHJpbmdWaWV3KQotICAgICAgICAsIG1fbmFtZVNwYWNlKG5hbWVTcGFjZSkKLSAgICB7Ci0g
ICAgICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVy
WzBdID0gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0g
PSBjb25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgfQotCi0gICAgTGV4ZXIoY29uc3QgTGV4
ZXImKSA9IGRlbGV0ZTsKLSAgICBMZXhlcihMZXhlciYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBMZXhl
ciYgb3BlcmF0b3I9KGNvbnN0IExleGVyJikgPSBkZWxldGU7Ci0gICAgTGV4ZXImIG9wZXJhdG9y
PShMZXhlciYmKSA9IGRlZmF1bHQ7Ci0KLQotICAgIFRva2VuIGNvbnN1bWVUb2tlbigpCi0gICAg
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmluZ0J1ZmZlclttX3JpbmdCdWZmZXJJbmRleF07
Ci0gICAgICAgIG1fcmluZ0J1ZmZlclttX3JpbmdCdWZmZXJJbmRleF0gPSBjb25zdW1lVG9rZW5G
cm9tU3RyZWFtKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlckluZGV4ID0gKG1fcmluZ0J1ZmZlcklu
ZGV4ICsgMSkgJSAyOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFRva2Vu
IHBlZWsoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZlclttX3JpbmdC
dWZmZXJJbmRleF07Ci0gICAgfQotCi0gICAgVG9rZW4gcGVla0Z1cnRoZXIoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZlclsobV9yaW5nQnVmZmVySW5kZXggKyAxKSAl
IDJdOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdGhpcwotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzNTcKLSAgICBz
dHJ1Y3QgU3RhdGUgewotICAgICAgICBUb2tlbiByaW5nQnVmZmVyWzJdOwotICAgICAgICB1bnNp
Z25lZCByaW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldDsKLSAgICB9Owot
Ci0gICAgU3RhdGUgc3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgU3RhdGUgc3RhdGU7Ci0g
ICAgICAgIHN0YXRlLnJpbmdCdWZmZXJbMF0gPSBtX3JpbmdCdWZmZXJbMF07Ci0gICAgICAgIHN0
YXRlLnJpbmdCdWZmZXJbMV0gPSBtX3JpbmdCdWZmZXJbMV07Ci0gICAgICAgIHN0YXRlLnJpbmdC
dWZmZXJJbmRleCA9IG1fcmluZ0J1ZmZlckluZGV4OwotICAgICAgICBzdGF0ZS5vZmZzZXQgPSBt
X29mZnNldDsKLSAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Rh
dGUoY29uc3QgU3RhdGUmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzBdID0g
c3RhdGUucmluZ0J1ZmZlclswXTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFdID0gc3RhdGUucmlu
Z0J1ZmZlclsxXTsKLSAgICAgICAgbV9yaW5nQnVmZmVySW5kZXggPSBzdGF0ZS5yaW5nQnVmZmVy
SW5kZXg7Ci0gICAgICAgIG1fb2Zmc2V0ID0gc3RhdGUub2Zmc2V0OwotCi0gICAgfQotCi0gICAg
dm9pZCBzZXRTdGF0ZShTdGF0ZSYmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9yaW5nQnVmZmVy
WzBdID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzBdKTsKLSAgICAgICAgbV9yaW5nQnVmZmVy
WzFdID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzFdKTsKLSAgICAgICAgbV9yaW5nQnVmZmVy
SW5kZXggPSBXVEZNb3ZlKHN0YXRlLnJpbmdCdWZmZXJJbmRleCk7Ci0gICAgICAgIG1fb2Zmc2V0
ID0gV1RGTW92ZShzdGF0ZS5vZmZzZXQpOwotICAgIH0KLQotICAgIGJvb2wgaXNGdWxseUNvbnN1
bWVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwZWVrKCkudHlwZSA9PSBUb2tlbjo6
VHlwZTo6RW5kT2ZGaWxlOwotICAgIH0KLQotICAgIFN0cmluZyBlcnJvclN0cmluZyhjb25zdCBU
b2tlbiYgdG9rZW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJQYXJzZSBlcnJvciBhdCBsaW5lICIsIGxpbmVBbmRDb2x1bW5OdW1iZXJG
cm9tT2Zmc2V0KG1fc3RyaW5nVmlldywgdG9rZW4uc3RhcnRPZmZzZXQoKSkubGluZSwgIjogIiwg
bWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBlcnJvclN0cmluZyhFcnJvciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIgPSBudWxscHRyKTsK
LQotICAgIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNw
YWNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0cnVjdCBUb2tlbjsKLSAgICBUb2tlbiBj
b25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0KLSAgICB2b2lkIHNraXBXaGl0ZXNwYWNlQW5kQ29t
bWVudHMoKTsKLQotICAgIHN0cnVjdCBMaW5lQW5kQ29sdW1uIHsKLSAgICAgICAgdW5zaWduZWQg
bGluZTsKLSAgICAgICAgdW5zaWduZWQgY29sdW1uOwotICAgIH07Ci0gICAgc3RhdGljIExpbmVB
bmRDb2x1bW4gbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3RyaW5nVmlldyYs
IHVuc2lnbmVkIG9mZnNldCk7Ci0KLSAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKLSAgICBU
b2tlbiBtX3JpbmdCdWZmZXJbMl07Ci0gICAgdW5zaWduZWQgbV9yaW5nQnVmZmVySW5kZXggeyAw
IH07Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9u
YW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi1TdHJp
bmdWaWV3IFRva2VuOjpzdHJpbmdWaWV3KGNvbnN0IExleGVyJiBsZXhlcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gbGV4ZXIubV9zdHJpbmdWaWV3LnN1YnN0cmluZyhjb2RlTG9jYXRpb24uc3RhcnRP
ZmZzZXQoKSwgY29kZUxvY2F0aW9uLmVuZE9mZnNldCgpIC0gY29kZUxvY2F0aW9uLnN0YXJ0T2Zm
c2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTcxY2Y1NjIwMzRk
NTc0N2VkOWFlMzM0MDRmMDBjMWQxNjdmODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTExpdGVyYWxU
eXBlQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotc3RhdGlj
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24oQVNU
OjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgaWYgKCFpczxBU1Q6OlR5
cGVSZWZlcmVuY2U+KHJlc29sdmFibGVUeXBlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlw
ZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmICghaXM8
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLX0KLQot
Y2xhc3MgTGl0ZXJhbFR5cGVDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotcHJp
dmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxvYXRMaXRlcmFs
VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biA9IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihmbG9hdExpdGVyYWxUeXBlKTsKLSAgICAgICAg
QVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBl
RGVjbGFyYXRpb24tPmNhblJlcHJlc2VudEZsb2F0KCkoZmxvYXRMaXRlcmFsVHlwZS52YWx1ZSgp
KSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYgaW50
ZWdlckxpdGVyYWxUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlw
ZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKGludGVnZXJMaXRlcmFsVHlw
ZSk7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NF
UlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLT5jYW5SZXByZXNlbnRJbnRlZ2VyKCkoaW50ZWdlckxp
dGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZl
VHlwZURlY2xhcmF0aW9uKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKTsKLSAgICAgICAgQVNT
RVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVj
bGFyYXRpb24tPmNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci19OwotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVE
Ci0KLXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIExpdGVyYWxUeXBlQ2hlY2tlcigpLlZpc2l0b3I6OnZpc2l0KHByb2dy
YW0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxY2FiZjg4YTg5MGIzNzA2M2U4YTIwMGE1MGQ4MWQyZTY0
NTc5MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGNoZWNrTGl0ZXJh
bFR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDBk
YTg0YjhmNDEyMDFhZmViNjA4ZDQxNDEwNjVkZGUxOTRkNGU5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjY1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1l
Q29udGV4dC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLU5hbWVDb250ZXh0OjpOYW1lQ29udGV4dChOYW1lQ29u
dGV4dCogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVm
aW5pdGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9IHRvcExldmVsRXhpc3RzKHR5cGVE
ZWZpbml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigi
RHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbSIsICpleGlzdGluZykpOwotICAgIHR5cGVEZWZpbml0
aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fdHlwZXNbaW5kZXhdLmFkZCh0eXBlRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCh0eXBl
RGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IE5hbWVDb250ZXh0OjphZGQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZp
bml0aW9uKQotewotICAgIGlmIChhdXRvIGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHMoc3RydWN0
dXJlRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgKmV4aXN0aW5nKSk7Ci0gICAgc3RydWN0
dXJlRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRv
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
YXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoc3RydWN0dXJlRGVmaW5pdGlvbi5uYW1l
KCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7
Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmFwcGVuZChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1F
eHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIGlmIChhdXRvIGV4aXN0aW5n
ID0gdG9wTGV2ZWxFeGlzdHMoZW51bWVyYXRpb25EZWZpbml0aW9uLm5hbWUoKSkpCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4i
LCAqZXhpc3RpbmcpKTsKLSAgICBlbnVtZXJhdGlvbkRlZmluaXRpb24uc2V0TmFtZVNwYWNlKG1f
Y3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0u
YWRkKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChlbnVtZXJhdGlvbkRlZmlu
aXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1l
Q29udGV4dDo6YWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
Ci17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1l
U3BhY2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMoZnVuY3Rpb25EZWZpbml0
aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGlj
YXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24oKSkpOwotICAgIGZ1bmN0
aW9uRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fZnVuY3Rpb25zW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUo
KSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
PiwgMT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZnVuY3Rpb25EZWZp
bml0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFt
ZUNvbnRleHQ6OmFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgdHlwZS0+Y29kZUxv
Y2F0aW9uKCkpKTsKLSAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnNldE5hbWVTcGFjZSht
X2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9mdW5jdGlvbnNbaW5kZXhd
LmFkZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQo
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAg
ICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7
Ci0gICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVuY3Rpb25zKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1
cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2Up
OwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRkKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBl
PiwgMT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0aXZlVHlwZURl
Y2xhcmF0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
TmFtZUNvbnRleHQ6OmFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFy
YXRpb24pCi17Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4geyB9OwotICAgIGlmIChhdXRvKiBkZWNsYXJhdGlvbiA9IGxvY2FsRXhp
c3RzKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIGRlY2xhcmF0aW9uLT5j
b2RlTG9jYXRpb24oKSkpOwotICAgIGF1dG8gcmVzdWx0ID0gbV92YXJpYWJsZXMuYWRkKFN0cmlu
Zyh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSksICZ2YXJpYWJsZURlY2xhcmF0aW9uKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVybiB7
IH07Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwg
MT4gTmFtZUNvbnRleHQ6OmdldFR5cGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNUOjpOYW1lU3Bh
Y2UgZnJvbU5hbWVzcGFjZSkKLXsKLSAgICAvLyBOYW1lZCB0eXBlcyBjYW4gb25seSBiZSBkZWNs
YXJlZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29udGV4dC4KLSAgICBpZiAobV9wYXJlbnQpCi0gICAg
ICAgIHJldHVybiBtX3BhcmVudC0+Z2V0VHlwZXMobmFtZSwgZnJvbU5hbWVzcGFjZSk7Ci0KLSAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+IHJlc3Vs
dDsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21OYW1l
c3BhY2UpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwot
ICAgIGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkgewotICAgICAgICBmb3Ig
KGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
dHlwZSk7Ci0gICAgfQotCi0gICAgaWYgKGZyb21OYW1lc3BhY2UgIT0gQVNUOjpOYW1lU3BhY2U6
OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaXRlcmF0b3IgPSBt
X3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV90eXBl
c1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3It
PnZhbHVlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1WZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBOYW1lQ29udGV4dDo6Z2V0RnVu
Y3Rpb25zKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSkK
LXsKLSAgICAvLyBGdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbCBu
YW1lIGNvbnRleHQuCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICByZXR1cm4gbV9wYXJlbnQt
PmdldEZ1bmN0aW9ucyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IHJlc3VsdDsKLQot
ICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21OYW1lc3BhY2Up
OwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAg
ICBpZiAoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCh0eXBlKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbU5hbWVzcGFjZSAhPSBBU1Q6Ok5hbWVTcGFj
ZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpdGVyYXRvciA9
IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0g
bV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdHlwZSA6
IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6Z2V0VmFyaWFibGUoY29uc3QgU3RyaW5nJiBuYW1l
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3ZhcmlhYmxlcy5maW5kKG5hbWUpOwotICAgIGlm
IChpdGVyYXRvciA9PSBtX3ZhcmlhYmxlcy5lbmQoKSkgewotICAgICAgICBpZiAobV9wYXJlbnQp
Ci0gICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPmdldFZhcmlhYmxlKG5hbWUpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0K
LQotQVNUOjpOYW1lZFR5cGUqIE5hbWVDb250ZXh0OjpzZWFyY2hUeXBlcyhTdHJpbmcmIG5hbWUp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3VycmVudE5hbWVT
cGFjZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGZvciAo
YXV0byYgdHlwZXMgOiBtX3R5cGVzKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSB0eXBlcy5m
aW5kKG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gdHlwZXMuZW5kKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpdGVyID0gbV90eXBlc1tp
bmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkK
LSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAg
IGl0ZXIgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fdHlw
ZXNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwot
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogTmFt
ZUNvbnRleHQ6OnNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3VycmVudE5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVT
cGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25zIDog
bV9mdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IGZ1bmN0aW9ucy5maW5kKG5h
bWUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gZnVuY3Rpb25zLmVuZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaXRlciA9IG1fZnVuY3Rpb25z
W2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fZnVuY3Rpb25zW2luZGV4XS5l
bmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIGluZGV4
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkp
OwotICAgIGl0ZXIgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRl
ciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFs
dWVbMF0uZ2V0KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RkOjpvcHRpb25hbDxD
b2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNv
bnN0Ci17Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYW1lKSkKLSAgICAgICAg
cmV0dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwotICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IHNl
YXJjaEZ1bmN0aW9ucyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jb2RlTG9jYXRp
b24oKTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1BU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24qIE5hbWVDb250ZXh0Ojpsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fcGFyZW50KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlcy5maW5kKG5h
bWUpOwotICAgIGlmIChpdGVyICE9IG1fdmFyaWFibGVzLmVuZCgpKQotICAgICAgICByZXR1cm4g
aXRlci0+dmFsdWU7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwN2Q1
MDZhMmM3ZDE0ZDQyMDNiYmQ2MTVjYmU0NmVjYTFlMjZlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLQot
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBUeXBl
RGVmaW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgVmFy
aWFibGVEZWNsYXJhdGlvbjsKLQotfQotCi1jbGFzcyBOYW1lQ29udGV4dCB7Ci1wdWJsaWM6Ci0g
ICAgTmFtZUNvbnRleHQoTmFtZUNvbnRleHQqIHBhcmVudCA9IG51bGxwdHIpOwotCi0gICAgdm9p
ZCBzZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIGN1cnJlbnROYW1lU3BhY2UpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICAgICAgbV9jdXJyZW50TmFtZVNw
YWNlID0gY3VycmVudE5hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gYWRkKEFTVDo6VHlwZURlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YWRkKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9y
PiBhZGQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gYWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwg
RXJyb3I+IGFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICBFeHBlY3Rl
ZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKTsKLQotICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4gZ2V0VHlw
ZXMoY29uc3QgU3RyaW5nJiwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7Ci0gICAgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4g
Z2V0RnVuY3Rpb25zKGNvbnN0IFN0cmluZyYsIEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2Up
OwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogZ2V0VmFyaWFibGUoY29uc3QgU3RyaW5n
Jik7Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpOYW1lZFR5cGUqIHNlYXJjaFR5cGVzKFN0cmluZyYg
bmFtZSkgY29uc3Q7Ci0gICAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBzZWFyY2hGdW5jdGlv
bnMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPENvZGVMb2NhdGlvbj4g
dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24qIGxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0KLSAgICBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAx
Pj4gbV90eXBlc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+
IG1fZnVuY3Rpb25zW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hNYXA8U3RyaW5nLCBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qPiBtX3ZhcmlhYmxlczsKLSAgICBOYW1lQ29udGV4dCog
bV9wYXJlbnQ7Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNlIHsgQVNUOjpO
YW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMwMGNhNTU5NWRkNjQ4MWMwMWNhYjdjZWY1NjA1YWFiYWNkZjQzYmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERvdEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xG
b3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNp
bmNsdWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKLSNpbmNsdWRlICJXSExTTFNjb3Bl
ZFNldEFkZGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFt
ZUNvbnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1lQ29udGV4dChuYW1lQ29udGV4dCkK
LXsKLX0KLQotTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiBwYXJlbnRS
ZXNvbHZlciwgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1lQ29udGV4dChu
YW1lQ29udGV4dCkKLSAgICAsIG1fcGFyZW50TmFtZVJlc29sdmVyKCZwYXJlbnRSZXNvbHZlcikK
LSAgICAsIG1fY3VycmVudE5hbWVTcGFjZShwYXJlbnRSZXNvbHZlci5tX2N1cnJlbnROYW1lU3Bh
Y2UpCi17Ci19Ci0KLU5hbWVSZXNvbHZlcjo6fk5hbWVSZXNvbHZlcigpCi17Ci0gICAgaWYgKGhh
c0Vycm9yKCkgJiYgbV9wYXJlbnROYW1lUmVzb2x2ZXIpCi0gICAgICAgIG1fcGFyZW50TmFtZVJl
c29sdmVyLT5zZXRFcnJvcihyZXN1bHQoKS5lcnJvcigpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2
ZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBTY29w
ZWRTZXRBZGRlcjxBU1Q6OlR5cGVSZWZlcmVuY2UqPiBhZGRlcihtX3R5cGVSZWZlcmVuY2VzLCAm
dHlwZVJlZmVyZW5jZSk7Ci0gICAgaWYgKCFhZGRlci5pc05ld0VudHJ5KCkpIHsKLSAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgcmVjdXJzaXZlIHR5cGUgYXJndW1lbnRzLiIsIHR5
cGVSZWZlcmVuY2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIGlmIChoYXNFcnJvcigpKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUo
KSkgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgx
NjEgU2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIgdGhlIHR5cGUgaGFzIGJlZW4gcmVz
b2x2ZWQgb3Igbm90PwotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNhbmRpZGF0ZXMgPSBt
X25hbWVDb250ZXh0LmdldFR5cGVzKHR5cGVSZWZlcmVuY2UubmFtZSgpLCBtX2N1cnJlbnROYW1l
U3BhY2UpOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlcykKLSAgICAgICAg
VmlzaXRvcjo6dmlzaXQoY2FuZGlkYXRlKTsKLSAgICBpZiAoYXV0byByZXN1bHQgPSByZXNvbHZl
VHlwZU92ZXJsb2FkSW1wbChjYW5kaWRhdGVzLCB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMo
KSkpCi0gICAgICAgIHR5cGVSZWZlcmVuY2Uuc2V0UmVzb2x2ZWRUeXBlKCpyZXN1bHQpOwotICAg
IGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdHlwZSBhcmd1
bWVudHMuIiwgdHlwZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBOYW1lQ29udGV4dCBuZXdOYW1lQ29u
dGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigq
dGhpcywgbmV3TmFtZUNvbnRleHQpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRl
ZmluaXRpb24udHlwZSgpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMo
KSkKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIp
OwotICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0
aW9uLmJsb2NrKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpCbG9jayYg
YmxvY2spCi17Ci0gICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwot
ICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAg
ICBuZXdOYW1lUmVzb2x2ZXIuVmlzaXRvcjo6dmlzaXQoYmxvY2spOwotfQotCi12b2lkIE5hbWVS
ZXNvbHZlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIGlmIChoYXNF
cnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIE5hbWVDb250ZXh0IG5h
bWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29sdmVyIG5ld05hbWVS
ZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hl
Y2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotICAgIGlmIChoYXNF
cnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSkgewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0g
ICAgICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsK
LSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQu
ZWxzZUJvZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpX
aGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29w
LmNvbmRpdGlvbmFsKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJl
c29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05hbWVS
ZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAg
ewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAg
ICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAg
ICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgp
KTsKLSAgICB9Ci0KLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmNvbmRpdGlvbmFs
KCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29w
KQotewotICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBO
YW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3
TmFtZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KGZvckxvb3ApOwotfQotCi12b2lkIE5hbWVSZXNv
bHZlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9u
KQotewotICAgIGlmICghbV9uYW1lQ29udGV4dC5hZGQodmFyaWFibGVEZWNsYXJhdGlvbikpIHsK
LSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWNsYXJlIGR1cGxpY2F0ZSB2YXJpYWJs
ZXMuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIFZpc2l0b3I6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb24pOwotfQot
Ci12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFi
bGVSZWZlcmVuY2UpCi17Ci0gICAgaWYgKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvKiB2YXJpYWJsZSA9IG1fbmFtZUNvbnRleHQu
Z2V0VmFyaWFibGUodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpKSkKLSAgICAgICAgdmFyaWFibGVS
ZWZlcmVuY2Uuc2V0VmFyaWFibGUoKnZhcmlhYmxlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkNhbm5vdCBmaW5kIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4iLCB2YXJp
YWJsZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
fQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHBy
ZXNzaW9uKQotewotICAgIGlmIChpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNz
aW9uLmJhc2UoKSkpIHsKLSAgICAgICAgYXV0byYgdmFyaWFibGVSZWZlcmVuY2UgPSBkb3duY2Fz
dDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAg
IGlmICghbV9uYW1lQ29udGV4dC5nZXRWYXJpYWJsZSh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkp
KSB7Ci0gICAgICAgICAgICBhdXRvIGJhc2VOYW1lID0gdmFyaWFibGVSZWZlcmVuY2UubmFtZSgp
OwotICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRU
eXBlcyhiYXNlTmFtZSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICAgICAgICAgIGlmIChlbnVt
ZXJhdGlvblR5cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgQVNUOjpOYW1lZFR5
cGUmIHR5cGUgPSBlbnVtZXJhdGlvblR5cGVzWzBdOwotICAgICAgICAgICAgICAgIGlmIChpczxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25j
YXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBtZW1iZXJOYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5tZW1i
ZXJCeU5hbWUobWVtYmVyTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsID0gQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ondy
YXAoZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShiYXNlTmFtZSksIFdURk1v
dmUobWVtYmVyTmFtZSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgKm1lbWJlcik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsPihkb3RFeHByZXNzaW9uLCBXVEZNb3ZlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJObyBlbnVtIG1lbWJlciBtYXRj
aGVzIHRoZSB1c2VkIG5hbWUuIiwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uVHlwZXMuaXNFbXB0eSgp
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGRvdEV4cHJlc3Npb24p
OwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBpZiAoZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmxlZnQoKSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoZW51
bWVyYXRpb25UeXBlcy5zaXplKCkgPT0gMSkgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzNSBUaGlzIG5lZWRzIHRvIHdvcmsg
d2l0aCB0eXBlZGVmJ2VkIGVudW1zLgotICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSA9IGVu
dW1lcmF0aW9uVHlwZXNbMF07Ci0gICAgICAgIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbj4odHlwZSkpIHsKLSAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBl
bnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bj4odHlwZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZp
bml0aW9uLm1lbWJlckJ5TmFtZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmlnaHQoKSkpIHsK
LSAgICAgICAgICAgICAgICBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuc2V0RW51bWVyYXRpb25N
ZW1iZXIoZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRFcnJvcihF
cnJvcigiQ2Fubm90IHJlc29sdmUgZW51bWVyYXRpb24gbWVtYmVyIGxpdGVyYWwuIiwgZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29s
dmVyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pCi17Ci0gICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRleHQoJm1fbmFtZUNv
bnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIobmV3TmFtZUNvbnRleHQp
OwotICAgIG5ld05hbWVSZXNvbHZlci5WaXNpdG9yOjp2aXNpdChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKTsKLX0KLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgxNjcgTWFrZSBzdXJlIGFsbCB0aGUgbmFtZXMgaGF2ZSBiZWVuIHJlc29sdmVk
LgotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVzSW5UeXBlcyhQcm9ncmFtJiBw
cm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKLXsKLSAgICBmb3IgKGF1dG8mIHR5
cGVEZWZpbml0aW9uIDogcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1l
UmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZSh0eXBlRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3Bh
Y2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmlu
aXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHN0
cnVjdHVyZURlZmluaXRpb24gOiBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkpIHsKLSAg
ICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2Uoc3RydWN0dXJlRGVmaW5pdGlv
bi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5k
VmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFz
RXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAg
fQotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5lbnVtZXJh
dGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1l
U3BhY2UoZW51bWVyYXRpb25EZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAg
bmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24pOwot
ICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4g
bmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKSB7Ci0gICAgICAg
IG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5n
ZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlz
aXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNF
cnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVUeXBl
TmFtZXNJbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNv
bHZlcikKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFt
ZVNwYWNlKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5h
bWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAg
ICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVS
ZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKSB7Ci0gICAg
ICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJv
ckFuZFZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBpZiAobmFtZVJl
c29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3Vs
dCgpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lUmVzb2x2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFhNGVkYmQ2
YTc4N2MzYmUxNDkxNDY5MGUyYTdlODI3YzA4NjQ3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTE5hbWVSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNp
bmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIE5hbWVSZXNvbHZlciA6IHB1YmxpYyBW
aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBOYW1lUmVzb2x2ZXIoTmFtZUNvbnRleHQmKTsKLSAgICBO
YW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiwgTmFtZUNvbnRleHQmKTsKLQotICAgIHZpcnR1YWwg
fk5hbWVSZXNvbHZlcigpOwotCi0gICAgdm9pZCBzZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFt
ZVNwYWNlIG5hbWVTcGFjZSkgeyBtX2N1cnJlbnROYW1lU3BhY2UgPSBuYW1lU3BhY2U7IH0KLQot
cHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJ
ZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0KLSAgICBOYW1lQ29udGV4dCYgbV9uYW1lQ29udGV4dDsKLSAg
ICBIYXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7Ci0gICAgTmFt
ZVJlc29sdmVyKiBtX3BhcmVudE5hbWVSZXNvbHZlciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5h
bWVTcGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJy
YXJ5IH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVzSW5UeXBlcyhQ
cm9ncmFtJiwgTmFtZVJlc29sdmVyJik7Ci1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZVR5
cGVOYW1lc0luRnVuY3Rpb25zKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmQ0
NzIxNmMyMzJjOWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwODggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNlci5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNz
U3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xQcm9ncmFtLmgiCi0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0jZGVmaW5lIFBB
UlNFKG5hbWUsIGVsZW1lbnQsIC4uLikgXAotICAgIGF1dG8gbmFtZSA9IHBhcnNlIyNlbGVtZW50
KF9fVkFfQVJHU19fKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsgXAotCi0jZGVmaW5lIENPTlNVTUVfVFlQRShuYW1lLCB0
eXBlKSBcCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OnR5cGUpOyBc
Ci0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVy
cm9yKCkpOwotCi0jZGVmaW5lIFBFRUsobmFtZSkgXAotICAgIGF1dG8gbmFtZSA9IHBlZWsoKTsg
XAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5l
cnJvcigpKTsKLQotI2RlZmluZSBQRUVLX0ZVUlRIRVIobmFtZSkgXAotICAgIGF1dG8gbmFtZSA9
IHBlZWtGdXJ0aGVyKCk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZShQcm9ncmFtJiBw
cm9ncmFtLCBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlIG1vZGUsIEFTVDo6TmFt
ZVNwYWNlIG5hbWVTcGFjZSkgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+Ci17Ci0gICAgbV9sZXhl
ciA9IExleGVyKHN0cmluZ1ZpZXcsIG5hbWVTcGFjZSk7Ci0gICAgbV9tb2RlID0gbW9kZTsKLQot
ICAgIHdoaWxlICghbV9sZXhlci5pc0Z1bGx5Q29uc3VtZWQoKSkgewotICAgICAgICBhdXRvIHRv
a2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkgewotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnZhbGlkOgotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U2VtaWNvbG9uOgotICAgICAgICAgICAgbV9sZXhl
ci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpUeXBlZGVmOiB7Ci0gICAgICAgICAgICBhdXRvIHR5cGVEZWZpbml0aW9uID0g
cGFyc2VUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCF0eXBlRGVmaW5pdGlvbikK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZURlZmluaXRpb24uZXJy
b3IoKSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdU
Rk1vdmUoKnR5cGVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9y
KCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6U3RydWN0OiB7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdHVyZURlZmluaXRpb24g
PSBwYXJzZVN0cnVjdHVyZURlZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICghc3RydWN0dXJl
RGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc3RydWN0
dXJlRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0g
cHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqc3RydWN0dXJlRGVmaW5pdGlvbikpOwotICAgICAgICAg
ICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVudW06IHsKLSAgICAgICAgICAgIGF1dG8g
ZW51bWVyYXRpb25EZWZpbml0aW9uID0gcGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oKTsKLSAg
ICAgICAgICAgIGlmICghZW51bWVyYXRpb25EZWZpbml0aW9uKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChlbnVtZXJhdGlvbkRlZmluaXRpb24uZXJyb3IoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKmVudW1l
cmF0aW9uRGVmaW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5
cGU6Ok5hdGl2ZTogewotICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBQYXJzaW5nTW9kZTo6U3Rh
bmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKG1ha2VTdHJpbmcoIidu
YXRpdmUnIGNhbid0IGV4aXN0IG91dHNpZGUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkuIikpOwot
ICAgICAgICAgICAgYXV0byBmdXJ0aGVyVG9rZW4gPSBwZWVrRnVydGhlcigpOwotICAgICAgICAg
ICAgaWYgKCFmdXJ0aGVyVG9rZW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgICAgIGlmIChmdXJ0aGVyVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlR5cGVkZWYpIHsK
LSAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IHBhcnNlTmF0aXZl
VHlwZURlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFy
YXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYXRpdmVU
eXBlRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1
bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuYXRpdmVUeXBlRGVjbGFyYXRpb24pKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiA9IHBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgICAg
ICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmVycm9yKCkpOwot
ICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3Vs
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVy
cm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVs
dDogewotICAgICAgICAgICAgYXV0byBmdW5jdGlvbkRlZmluaXRpb24gPSBwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGZ1bmN0aW9uRGVmaW5pdGlvbi5lcnJv
cigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RG
TW92ZSgqZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3Vs
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVy
cm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpmYWlsKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgVHJ5VG9QZWVrIHRyeVRvUGVlaykgLT4gVW5leHBlY3RlZDxFcnJvcj4KLXsK
LSAgICBpZiAodHJ5VG9QZWVrID09IFRyeVRvUGVlazo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRv
IG5leHRUb2tlbiA9IHBlZWsoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcihtX2xleGVyLmVycm9yU3RyaW5nKCpuZXh0VG9rZW4sIG1lc3NhZ2UpKSk7Ci0gICAgfQot
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3QgbGV4OiAi
LCBtZXNzYWdlKSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGVlaygpIC0+IEV4cGVjdGVkPFRva2Vu
LCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKHRv
a2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAhPSBUb2tlbjo6
VHlwZTo6RW5kT2ZGaWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBm
YWlsKCJDYW5ub3QgY29uc3VtZSB0b2tlbiJfc3RyLCBUcnlUb1BlZWs6Ok5vKTsKLX0KLQotYXV0
byBQYXJzZXI6OnBlZWtGdXJ0aGVyKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAg
IGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWtGdXJ0aGVyKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUg
IT0gVG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAhPSBUb2tlbjo6VHlwZTo6RW5k
T2ZGaWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKCJDYW5u
b3QgY29uc3VtZSB0d28gdG9rZW5zIl9zdHIsIFRyeVRvUGVlazo6Tm8pOwotfQotCi10ZW1wbGF0
ZSA8VG9rZW46OlR5cGUgdCwgVG9rZW46OlR5cGUuLi4gdHM+Ci1zdHJ1Y3QgVHlwZXMgewotICAg
IHN0YXRpYyBib29sIGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdCA9PSB0eXBlIHx8IFR5cGVzPHRzLi4uPjo6aW5jbHVkZXModHlwZSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCi0g
ICAgewotICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIsICIpOwot
ICAgICAgICBUeXBlczx0cy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKLSAgICB9Ci19Owot
dGVtcGxhdGUgPFRva2VuOjpUeXBlIHQ+Ci1zdHJ1Y3QgVHlwZXM8dD4gewotICAgIHN0YXRpYyBi
b29sIGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gdCA9
PSB0eXBlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyKQotICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9rZW46OnR5cGVO
YW1lKHQpKTsKLSAgICB9Ci19OwotCi0KLWJvb2wgUGFyc2VyOjpwZWVrVHlwZShUb2tlbjo6VHlw
ZSB0eXBlKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICByZXR1cm4g
dG9rZW4udHlwZSA9PSB0eXBlOwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+
Ci1ib29sIFBhcnNlcjo6cGVla1R5cGVzKCkKLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5w
ZWVrKCk7Ci0gICAgcmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSk7
Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShUb2tlbjo6VHlwZSB0
eXBlKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAodG9rZW4u
dHlwZSA9PSB0eXBlKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tlbigpIH07
Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4u
IHR5cGVzPgotc3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygpCi17Ci0gICAg
YXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmIChUeXBlczx0eXBlcy4uLj46Omlu
Y2x1ZGVzKHRva2VuLnR5cGUpKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tl
bigpIH07Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotYXV0byBQYXJzZXI6OmNvbnN1
bWVUeXBlKFRva2VuOjpUeXBlIHR5cGUpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAg
ICBhdXRvIHRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAodG9rZW4udHlw
ZSA9PSB0eXBlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKG1h
a2VTdHJpbmcoIlVuZXhwZWN0ZWQgdG9rZW4gKGV4cGVjdGVkICIsIFRva2VuOjp0eXBlTmFtZSh0
eXBlKSwgIiBnb3QgIiwgVG9rZW46OnR5cGVOYW1lKHRva2VuLnR5cGUpLCAiKSIpKTsKLX0KLQot
dGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotYXV0byBQYXJzZXI6OmNvbnN1bWVUeXBl
cygpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBhdXRvIGJ1aWxkRXhwZWN0ZWRT
dHJpbmcgPSBbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJbIik7Ci0gICAgICAgIFR5cGVzPHR5cGVzLi4uPjo6
YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXSIpOwotICAg
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBhdXRvIHRva2Vu
ID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAoVHlwZXM8dHlwZXMuLi4+OjppbmNs
dWRlcyh0b2tlbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4g
ZmFpbChtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHRva2VuIChleHBlY3RlZCBvbmUgb2YgIiwgYnVp
bGRFeHBlY3RlZFN0cmluZygpLCAiIGdvdCAiLCBUb2tlbjo6dHlwZU5hbWUodG9rZW4udHlwZSks
ICIpIikpOwotfQotCi1zdGF0aWMgaW50IGRpZ2l0VmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotewot
ICAgIGlmIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScpCi0gICAgICAgIHJl
dHVybiBjaGFyYWN0ZXIgLSAnMCc7Ci0gICAgaWYgKGNoYXJhY3RlciA+PSAnYScgJiYgY2hhcmFj
dGVyIDw9ICdmJykKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciAtICdhJyArIDEwOwotICAgIHJl
dHVybiBjaGFyYWN0ZXIgLSAnQScgKyAxMDsKLX0KLQotc3RhdGljIEV4cGVjdGVkPGludCwgRXJy
b3I+IGludExpdGVyYWxUb0ludChTdHJpbmdWaWV3IHRleHQpCi17Ci0gICAgYm9vbCBuZWdhdGUg
PSBmYWxzZTsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCItIl9zdHIpKSB7Ci0gICAgICAgIG5l
Z2F0ZSA9IHRydWU7Ci0gICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygxKTsKLSAgICB9Ci0g
ICAgaW50IGJhc2UgPSAxMDsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCIweCJfc3RyKSkgewot
ICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMik7Ci0gICAgICAgIGJhc2UgPSAxNjsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byBjb2RlUG9pbnQg
OiB0ZXh0LmNvZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdpdCA9IGRpZ2l0VmFs
dWUoY29kZVBvaW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0ID0gcmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAocmVzdWx0IDwgcHJl
dmlvdXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmlu
ZygiaW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICB9Ci0g
ICAgaWYgKG5lZ2F0ZSkgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQ2NF90KSA+
IHNpemVvZih1bnNpZ25lZCkgJiYgc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9mKGludCksICJUaGlz
IGNvZGUgd291bGQgYmUgd3Jvbmcgb3RoZXJ3aXNlIik7Ci0gICAgICAgIGludDY0X3QgaW50UmVz
dWx0ID0gLXN0YXRpY19jYXN0PGludDY0X3Q+KHJlc3VsdCk7Ci0gICAgICAgIGlmIChpbnRSZXN1
bHQgPCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigp
KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJp
bnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgICAgICByZXR1
cm4geyBzdGF0aWNfY2FzdDxpbnQ+KGludFJlc3VsdCkgfTsKLSAgICB9Ci0gICAgaWYgKHJlc3Vs
dCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBs
aXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQpIH07Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDx1bnNpZ25lZCwg
RXJyb3I+IHVpbnRMaXRlcmFsVG9VaW50KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICB1bnNpZ25l
ZCBiYXNlID0gMTA7Ci0gICAgaWYgKHRleHQuc3RhcnRzV2l0aCgiMHgiX3N0cikpIHsKLSAgICAg
ICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDIpOwotICAgICAgICBiYXNlID0gMTY7Ci0gICAgfQot
ICAgIEFTU0VSVCh0ZXh0LmVuZHNXaXRoKCJ1IikpOwotICAgIHRleHQgPSB0ZXh0LnN1YnN0cmlu
ZygwLCB0ZXh0Lmxlbmd0aCgpIC0gMSk7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBm
b3IgKGF1dG8gY29kZVBvaW50IDogdGV4dC5jb2RlUG9pbnRzKCkpIHsKLSAgICAgICAgdW5zaWdu
ZWQgZGlnaXQgPSBkaWdpdFZhbHVlKGNvZGVQb2ludCk7Ci0gICAgICAgIGF1dG8gcHJldmlvdXMg
PSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgKyBkaWdpdDsKLSAgICAg
ICAgaWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEVycm9yKG1ha2VTdHJpbmcoInVpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBi
b3VuZHMiKSkpOwotICAgIH0KLSAgICByZXR1cm4geyByZXN1bHQgfTsKLX0KLQotc3RhdGljIEV4
cGVjdGVkPGZsb2F0LCBFcnJvcj4gZmxvYXRMaXRlcmFsVG9GbG9hdChTdHJpbmdWaWV3IHRleHQp
Ci17Ci0gICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICBhdXRvIHJlc3VsdCA9IHBhcnNlRG91
YmxlKHRleHQsIHBhcnNlZExlbmd0aCk7Ci0gICAgaWYgKHBhcnNlZExlbmd0aCAhPSB0ZXh0Lmxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygi
Q2Fubm90IHBhcnNlIGZsb2F0ICIsIHRleHQpKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZUludGVncmFsTGl0ZXJhbCgp
IC0+IEV4cGVjdGVkPFZhcmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPgotewotICAgIGF1dG8g
aW50ZWdyYWxMaXRlcmFsVG9rZW4gPSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6OkludExpdGVy
YWwsIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbD4oKTsKLSAgICBpZiAoIWludGVncmFsTGl0ZXJh
bFRva2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxMaXRlcmFsVG9r
ZW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKGludGVncmFsTGl0ZXJhbFRva2VuLT50eXBlKSB7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGludExpdGVyYWxUb0ludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5nVmlldyhtX2xl
eGVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4ge3sgKnJlc3Vs
dCB9fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLSAg
ICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQoaW50ZWdyYWxMaXRlcmFsVG9rZW4t
PnR5cGUgPT0gVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLSAgICAgICAgYXV0byByZXN1bHQg
PSB1aW50TGl0ZXJhbFRvVWludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5nVmlldyhtX2xl
eGVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4ge3sgKnJlc3Vs
dCB9fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLSAg
ICB9Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxM
aXRlcmFsKCkgLT4gRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPgotewotICAgIGF1dG8gaW50ZWdy
YWxMaXRlcmFsID0gY29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghaW50ZWdyYWxM
aXRlcmFsKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxMaXRlcmFsLmVy
cm9yKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtd
KGludCB4KSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB7Ci0gICAgICAgIGlmICh4IDwgMCkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiB4OwotICAg
IH0sIFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKLSAgICAgICAg
cmV0dXJuIHg7Ci0gICAgfSksICppbnRlZ3JhbExpdGVyYWwpOwotICAgIGlmIChyZXN1bHQpCi0g
ICAgICAgIHJldHVybiAqcmVzdWx0OwotICAgIHJldHVybiBmYWlsKCJpbnQgbGl0ZXJhbCBpcyBu
ZWdhdGl2ZSJfc3RyKTsKLX0KLQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4gcmVj
b2duaXplU2ltcGxlVW5zaWduZWRJbnRlZ2VyKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKLXsKLSAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGlmIChzdHJpbmdWaWV3Lmxlbmd0aCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNpbXBsZSB1
bnNpZ25lZCBsaXRlcmFsICIsIHN0cmluZ1ZpZXcsICIgaXMgdG9vIHNob3J0IikpKTsKLSAgICBm
b3IgKGF1dG8gY29kZVBvaW50IDogc3RyaW5nVmlldy5jb2RlUG9pbnRzKCkpIHsKLSAgICAgICAg
aWYgKGNvZGVQb2ludCA8ICcwJyB8fCBjb2RlUG9pbnQgPiAnOScpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2lnbmVkIGxpdGVy
YWwgIiwgc3RyaW5nVmlldywgIiBpc24ndCBvZiB0aGUgZm9ybSBbMC05XSsiKSkpOwotICAgICAg
ICBhdXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxMCAr
IChjb2RlUG9pbnQgLSAnMCcpOwotICAgICAgICBpZiAocmVzdWx0IDwgcHJldmlvdXMpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVu
c2lnbmVkIGxpdGVyYWwgIiwgc3RyaW5nVmlldywgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ29uc3RhbnRF
eHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24sIEVycm9yPgot
ewotICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6Oklu
dExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok51bGwsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpUcnVlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmFsc2UsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyPigpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUt
PnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0g
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFs
dWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OkludGVnZXJMaXRlcmFsKHsgKnR5
cGUgfSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VWludExpdGVy
YWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5cGUtPnN0cmlu
Z1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4ge3sgQVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsKHsgKnR5cGUgfSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBm
bG9hdExpdGVyYWxUb0Zsb2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9y
KCkpOwotICAgICAgICByZXR1cm4ge3sgQVNUOjpGbG9hdExpdGVyYWwoeyAqdHlwZSB9LCAqdmFs
dWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUcnVlOgotICAgICAgICByZXR1
cm4geyBBU1Q6OkJvb2xlYW5MaXRlcmFsKFdURk1vdmUoKnR5cGUpLCB0cnVlKSB9OwotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4geyBBU1Q6OkJvb2xlYW5MaXRl
cmFsKFdURk1vdmUoKnR5cGUpLCBmYWxzZSkgfTsKLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFT
U0VSVCh0eXBlLT50eXBlID09IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgQ09O
U1VNRV9UWVBFKGZ1bGxTdG9wLCBGdWxsU3RvcCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShuZXh0
LCBJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwoeyAqdHlwZSwgKm5leHQgfSwgdHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmlu
ZygpLCBuZXh0LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpIH07Ci0gICAgfQotICAg
IH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZUFyZ3VtZW50KCkgLT4gRXhwZWN0ZWQ8QVNU
OjpUeXBlQXJndW1lbnQsIEVycm9yPgotewotICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICBQRUVL
X0ZVUlRIRVIoZnVydGhlclRva2VuKTsKLSAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRva2Vu
OjpUeXBlOjpJZGVudGlmaWVyIHx8IGZ1cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6
RnVsbFN0b3ApIHsKLSAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNzaW9uLCBDb25zdGFudEV4
cHJlc3Npb24pOwotICAgICAgICByZXR1cm4gQVNUOjpUeXBlQXJndW1lbnQoV1RGTW92ZSgqY29u
c3RhbnRFeHByZXNzaW9uKSk7Ci0gICAgfQotICAgIENPTlNVTUVfVFlQRShyZXN1bHQsIElkZW50
aWZpZXIpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqcmVzdWx0KTsKLSAgICByZXR1cm4g
QVNUOjpUeXBlQXJndW1lbnQoQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sIHJl
c3VsdC0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBBU1Q6OlR5cGVBcmd1bWVudHMo
KSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnRzKCkgLT4gRXhwZWN0ZWQ8
QVNUOjpUeXBlQXJndW1lbnRzLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlR5cGVBcmd1bWVudHMgdHlw
ZUFyZ3VtZW50czsKLSAgICBhdXRvIGxlc3NUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6
Okxlc3NUaGFuU2lnbik7Ci0gICAgaWYgKCFsZXNzVGhhblNpZ24pCi0gICAgICAgIHJldHVybiB0
eXBlQXJndW1lbnRzOwotCi0gICAgYXV0byBncmVhdGVyVGhhblNpZ24gPSB0cnlUeXBlKFRva2Vu
OjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgIGlmIChncmVhdGVyVGhhblNpZ24pCi0gICAg
ICAgIHJldHVybiB0eXBlQXJndW1lbnRzOwotCi0gICAgUEFSU0UodHlwZUFyZ3VtZW50LCBUeXBl
QXJndW1lbnQpOwotICAgIHR5cGVBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnR5cGVBcmd1bWVu
dCkpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYXV0byBncmVhdGVyVGhhblNpZ24g
PSB0cnlUeXBlKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgICAgICBpZiAoZ3Jl
YXRlclRoYW5TaWduKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQ09OU1VNRV9UWVBF
KGNvbW1hLCBDb21tYSk7Ci0gICAgICAgIFBBUlNFKHR5cGVBcmd1bWVudCwgVHlwZUFyZ3VtZW50
KTsKLSAgICAgICAgdHlwZUFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFyZ3VtZW50KSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZp
YXRlZCwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlN0YXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFp
ciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICgh
dG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0b2tlbi5lcnJvcigpKTsKLSAg
ICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0g
ICAgICAgIGF1dG8gbnVtRWxlbWVudHMgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVy
YWwoKTsKLSAgICAgICAgaWYgKCFudW1FbGVtZW50cykKLSAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChudW1FbGVtZW50cy5lcnJvcigpKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJp
Z2h0U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7
IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgKm51bUVsZW1lbnRzIH19
OwotICAgIH0KLSAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwgKnRva2VuLCBzdGQ6Om51bGxvcHQg
fX07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+
IEV4cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCwgRXJyb3I+Ci17Ci0gICAgYXV0byB0
b2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgVG9rZW46OlR5cGU6Okxl
ZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCh0b2tlbi5lcnJvcigpKTsKLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAgICAgIGF1dG8gbnVtRWxlbWVudHMgPSBj
b25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICAgICAgaWYgKCFudW1FbGVt
ZW50cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChudW1FbGVtZW50cy5lcnJv
cigpKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVh
cmVCcmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFj
a2V0IH0sICp0b2tlbiwgc3RkOjpudWxsb3B0LCAqbnVtRWxlbWVudHMgfX07Ci0gICAgfQotICAg
IGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpU
eXBlOjpDb25zdGFudCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkRldmljZSwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlRocmVhZGdyb3VwLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkPigpOwot
ICAgIGlmICghYWRkcmVzc1NwYWNlVG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChhZGRyZXNzU3BhY2VUb2tlbi5lcnJvcigpKTsKLSAgICBBU1Q6OkFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2U7Ci0gICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkgewotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFk
ZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5
cGU6OkRldmljZToKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OkRl
dmljZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6
Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWRncm91cDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGFkZHJlc3NTcGFj
ZVRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpUaHJlYWQpOwotICAgICAgICBhZGRyZXNzU3Bh
Y2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2UgfSwgc3RkOjpu
dWxsb3B0IH19OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gRXhwZWN0ZWQ8UmVm
PEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGFkZHJlc3NTcGFjZVRva2Vu
ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpDb25zdGFudCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OkRldmljZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkPigpOwotCi0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElk
ZW50aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5cGVBcmd1bWVudHMpOwotCi0g
ICAgaWYgKGFkZHJlc3NTcGFjZVRva2VuKSB7Ci0gICAgICAgIEFTVDo6QWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZTsKLSAgICAgICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkgewot
ICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICAgICAgICAgIGFkZHJlc3NT
cGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAgICAgICAgICBhZGRyZXNzU3Bh
Y2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICAgICAgYWRkcmVzc1Nw
YWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlVG9rZW4t
PnR5cGUgPT0gVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2Ug
PSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgYXV0byBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkID0gWyZd
KGNvbnN0IFR5cGVTdWZmaXhBYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBSZWY8
QVNUOjpVbm5hbWVkVHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsK
LSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqYWRkcmVzc1NwYWNlVG9rZW4sIHR5
cGVTdWZmaXhBYmJyZXZpYXRlZC5sb2NhdGlvbik7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVT
dWZmaXhBYmJyZXZpYXRlZC50b2tlbi50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFRva2VuOjpU
eXBlOjpTdGFyOgotICAgICAgICAgICAgICAgIHJldHVybiB7IEFTVDo6UG9pbnRlclR5cGU6OmNy
ZWF0ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAg
ICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgotICAgICAgICAgICAg
ICAgIHJldHVybiB7IEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobG9jYXRpb24sIGFk
ZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlU3VmZml4QWJicmV2aWF0ZWQudG9rZW4udHlwZSA9
PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgICAgIHJldHVy
biB7IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCAq
dHlwZVN1ZmZpeEFiYnJldmlhdGVkLm51bUVsZW1lbnRzKSB9OwotICAgICAgICAgICAgfQotICAg
ICAgICB9OwotICAgICAgICBQQVJTRShmaXJzdFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgVHlwZVN1
ZmZpeEFiYnJldmlhdGVkKTsKLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHJlc3VsdCA9
IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKFdURk1vdmUoKmFkZHJlc3NTcGFjZVRva2VuKSwg
bmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1l
bnRzKSk7Ci0gICAgICAgIGF1dG8gbmV4dCA9IGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4QWJicmV2
aWF0ZWQoKmZpcnN0VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAg
ICAgICByZXN1bHQgPSBXVEZNb3ZlKG5leHQpOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICAgICAgUEVFSyhuZXh0VG9rZW4pOwotICAgICAgICAgICAgaWYgKG5leHRUb2tlbi0+dHlw
ZSAhPSBUb2tlbjo6VHlwZTo6U3RhcgotICAgICAgICAgICAgICAgICYmIG5leHRUb2tlbi0+dHlw
ZSAhPSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAgICAgICAgICAgICAmJiBu
ZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQQVJTRSh0eXBl
U3VmZml4QWJicmV2aWF0ZWQsIFR5cGVTdWZmaXhBYmJyZXZpYXRlZCk7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVGhlIG5lc3RpbmcgaGVyZSBtaWdodCBiZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCi0g
ICAgICAgICAgICBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCgqdHlw
ZVN1ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gV1RGTW92ZShuZXh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOwotICAgIH0KLQotICAgIGF1dG8gY29uc3RydWN0VHlwZUZyb21TdWZmaXhOb25BYmJyZXZp
YXRlZCA9IFsmXShjb25zdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQmIHR5cGVTdWZmaXhOb25B
YmJyZXZpYXRlZCwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYgcHJldmlvdXMpIC0+IFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqbmFtZSwgdHlw
ZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmxvY2F0aW9uKTsKLSAgICAgICAgc3dpdGNoICh0eXBlU3Vm
Zml4Tm9uQWJicmV2aWF0ZWQudG9rZW4udHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpTdGFyOgotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGxv
Y2F0aW9uLCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmFkZHJlc3NTcGFjZSwgV1RGTW92ZShw
cmV2aW91cykpIH07Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWly
OgotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShs
b2NhdGlvbiwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5hZGRyZXNzU3BhY2UsIFdURk1vdmUo
cHJldmlvdXMpKSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUKHR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJl
QnJhY2tldCk7Ci0gICAgICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5VHlwZTo6Y3JlYXRlKGxv
Y2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5udW1F
bGVtZW50cykgfTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHJlc3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKCpuYW1lLCBuYW1lLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsKLSAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgICAgIGlmIChuZXh0
VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlN0YXIKLSAgICAgICAgICAgICYmIG5leHRUb2tl
bi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAgICAgICAgICYm
IG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFBBUlNFKHR5cGVTdWZmaXhOb25B
YmJyZXZpYXRlZCwgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKTsKLSAgICAgICAgLy8gRklYTUU6
IFRoZSBuZXN0aW5nIGhlcmUgbWlnaHQgYmUgaW4gdGhlIHdyb25nIG9yZGVyLgotICAgICAgICBh
dXRvIG5leHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVkKCp0eXBlU3Vm
Zml4Tm9uQWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJlc3VsdCA9IFdU
Rk1vdmUobmV4dCk7Ci0gICAgfQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZVR5cGVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpUeXBlRGVm
aW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgVHlwZWRlZik7Ci0g
ICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIENPTlNVTUVfVFlQRShlcXVh
bHMsIEVxdWFsc1NpZ24pOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQ
RShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgcmV0dXJuIEFTVDo6VHlwZURlZmluaXRpb24o
eyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJp
bmcoKSwgV1RGTW92ZSgqdHlwZSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VCdWlsdEluU2Vt
YW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAg
YXV0byBvcmlnaW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTVkluc3Rh
bmNlSUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlZlcnRleElELAotICAgICAgICBUb2tlbjo6
VHlwZTo6UFNpemUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlBvc2l0aW9uLAotICAgICAgICBU
b2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFjZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWU2FtcGxl
SW5kZXgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpTVlRhcmdldCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWRGVwdGgsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZEaXNw
YXRjaFRocmVhZElELAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cElELAotICAgICAgICBU
b2tlbjo6VHlwZTo6U1ZHcm91cEluZGV4LAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cFRo
cmVhZElEPigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQob3JpZ2luLmVycm9yKCkpOwotCi0gICAgc3dpdGNoIChvcmlnaW4tPnR5cGUpIHsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
Vkluc3RhbmNlSUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVmVydGV4SUQ6Ci0gICAgICAg
IHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2Vt
YW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpQU2l6
ZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplKTsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3Jp
Z2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlvbik7Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVp
bHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWSXNGcm9udEZhY2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWU2FtcGxlSW5kZXg6Ci0g
ICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWls
dEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4KTsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292
ZXJhZ2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVGFyZ2V0OiB7Ci0gICAgICAgIGF1dG8g
dGFyZ2V0ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7IC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA3IE1ha2UgdGhpcyB3
b3JrIHdpdGggc3RyaW5ncyBsaWtlICJTVl9UYXJnZXQwIi4KLSAgICAgICAgaWYgKCF0YXJnZXQp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodGFyZ2V0LmVycm9yKCkpOwotICAg
ICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQsICp0YXJnZXQpOwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aCk7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIEFTVDo6
QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWQ292ZXJhZ2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJ
RDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCk7Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2Vt
YW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91
cElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgIHJldHVy
biBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChv
cmlnaW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJl
dHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50
aWM6OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6
OnBhcnNlUmVzb3VyY2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6UmVzb3VyY2VTZW1hbnRp
YywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgUmVnaXN0ZXIpOwotICAgIENP
TlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBDT05T
VU1FX1RZUEUoaW5mbywgSWRlbnRpZmllcik7Ci0gICAgYXV0byBpbmZvU3RyaW5nVmlldyA9IGlu
Zm8tPnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgaWYgKGluZm9TdHJpbmdWaWV3Lmxlbmd0aCgp
IDwgMiB8fCAoaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3UnCi0gICAgICAgICYmIGluZm9TdHJpbmdW
aWV3WzBdICE9ICd0JwotICAgICAgICAmJiBpbmZvU3RyaW5nVmlld1swXSAhPSAnYicKLSAgICAg
ICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3MnKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoaW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5nKDAsIDEpLCAi
IGlzIG5vdCBhIGtub3duIHJlc291cmNlIHR5cGUgKCd1JywgJ3QnLCAnYicsIG9yICdzJykiKSkp
OwotCi0gICAgQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlIG1vZGU7Ci0gICAgc3dpdGNoIChp
bmZvU3RyaW5nVmlld1swXSkgewotICAgIGNhc2UgJ3UnOgotICAgICAgICBtb2RlID0gQVNUOjpS
ZXNvdXJjZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OwotICAgICAgICBicmVh
azsKLSAgICBjYXNlICd0JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6
TW9kZTo6VGV4dHVyZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnYic6Ci0gICAgICAgIG1v
ZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSAncyc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1v
ZGU6OlNhbXBsZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHJlY29n
bml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihpbmZvU3RyaW5nVmlldy5zdWJzdHJpbmcoMSkpOwot
ICAgIGlmICghaW5kZXgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbmRleC5lcnJv
cigpKTsKLQotICAgIHVuc2lnbmVkIHNwYWNlID0gMDsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6
VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzcGFjZVRva2VuLCBJZGVudGlm
aWVyKTsKLSAgICAgICAgYXV0byBzcGFjZVRva2VuU3RyaW5nVmlldyA9IHNwYWNlVG9rZW4tPnN0
cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgICAgIFN0cmluZ1ZpZXcgcHJlZml4IHsgInNwYWNlIiB9
OwotICAgICAgICBpZiAoIXNwYWNlVG9rZW5TdHJpbmdWaWV3LnN0YXJ0c1dpdGgocHJlZml4KSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTZWNv
bmQgYXJndW1lbnQgdG8gcmVzb3VyY2Ugc2VtYW50aWMgIiwgc3BhY2VUb2tlblN0cmluZ1ZpZXcs
ICIgbmVlZHMgYmUgb2YgdGhlIGZvcm0gJ3NwYWNlMCciKSkpOwotICAgICAgICBpZiAoc3BhY2VU
b2tlblN0cmluZ1ZpZXcubGVuZ3RoKCkgPD0gcHJlZml4Lmxlbmd0aCgpKQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBhcmd1bWVudCB0
byByZXNvdXJjZSBzZW1hbnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBuZWVkcyBiZSBv
ZiB0aGUgZm9ybSAnc3BhY2UwJyIpKSk7Ci0gICAgICAgIGF1dG8gc3BhY2VWYWx1ZSA9IHJlY29n
bml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihzcGFjZVRva2VuU3RyaW5nVmlldy5zdWJzdHJpbmco
cHJlZml4Lmxlbmd0aCgpKSk7Ci0gICAgICAgIGlmICghc3BhY2VWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChzcGFjZVZhbHVlLmVycm9yKCkpOwotICAgICAgICBzcGFj
ZSA9ICpzcGFjZVZhbHVlOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhl
c2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6OlJlc291cmNlU2VtYW50
aWMoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCBtb2RlLCAqaW5kZXgsIHNwYWNlKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMsIEVycm9yPgot
ewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFNwZWNpYWxpemVkKTsKLSAgICByZXR1cm4gQVNU
OjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKm9yaWdpbik7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6U3RhZ2VJbk91
dFNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBBdHRyaWJ1dGUp
OwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0K
LSAgICBhdXRvIGluZGV4ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0g
ICAgaWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGluZGV4LmVycm9y
KCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVz
aXMpOwotCi0gICAgcmV0dXJuIEFTVDo6U3RhZ2VJbk91dFNlbWFudGljKHsgKm9yaWdpbiwgKnJp
Z2h0UGFyZW50aGVzaXMgfSwgKmluZGV4KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU2VtYW50
aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgot
ewotICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29sb24pKQotICAgICAgICByZXR1cm4g
eyBudWxscHRyIH07Ci0KLSAgICBQRUVLKHRva2VuKTsKLSAgICBzd2l0Y2ggKHRva2VuLT50eXBl
KSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7Ci0gICAgICAgIFBBUlNFKHJl
c3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpTcGVjaWFsaXplZDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6
U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5
cGU6OlJlZ2lzdGVyOiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291cmNlU2VtYW50aWMp
OwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07Ci0gICAgfQotICAgIGRlZmF1bHQ6ICB7Ci0gICAgICAgIFBBUlNFKHJlc3VsdCwg
QnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFu
dGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICB9Ci19Ci1BU1Q6OlF1YWxpZmll
cnMgUGFyc2VyOjpwYXJzZVF1YWxpZmllcnMoKQotewotICAgIEFTVDo6UXVhbGlmaWVycyBxdWFs
aWZpZXJzOwotICAgIHdoaWxlIChhdXRvIG5leHQgPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpRdWFs
aWZpZXIpKSB7Ci0gICAgICAgIGF1dG8gbmV4dFN0cmluZ1ZpZXcgPSBuZXh0LT5zdHJpbmdWaWV3
KG1fbGV4ZXIpOwotICAgICAgICBpZiAoIm5vaW50ZXJwb2xhdGlvbiIgPT0gbmV4dFN0cmluZ1Zp
ZXcpCi0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Tm9pbnRl
cnBvbGF0aW9uKTsKLSAgICAgICAgZWxzZSBpZiAoIm5vcGVyc3BlY3RpdmUiID09IG5leHRTdHJp
bmdWaWV3KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6Ok5v
cGVyc3BlY3RpdmUpOwotICAgICAgICBlbHNlIGlmICgidW5pZm9ybSIgPT0gbmV4dFN0cmluZ1Zp
ZXcpCi0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6VW5pZm9y
bSk7Ci0gICAgICAgIGVsc2UgaWYgKCJjZW50cm9pZCIgPT0gbmV4dFN0cmluZ1ZpZXcpCi0gICAg
ICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Q2VudHJvaWQpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCgic2FtcGxlIiA9PSBuZXh0U3RyaW5nVmll
dyk7Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6U2FtcGxl
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcXVhbGlmaWVyczsKLX0KLQotYXV0byBQ
YXJzZXI6OnBhcnNlU3RydWN0dXJlRWxlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6U3RydWN0dXJl
RWxlbWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgQVNUOjpRdWFsaWZp
ZXJzIHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLQotICAgIFBBUlNFKHR5cGUsIFR5
cGUpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRShzZW1h
bnRpYywgU2VtYW50aWMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7
Ci0KLSAgICByZXR1cm4gQVNUOjpTdHJ1Y3R1cmVFbGVtZW50KHsgKm9yaWdpbiwgKnNlbWljb2xv
biB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpzZW1hbnRpYykpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBTdHJ1Y3Qp
OwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBDT05TVU1FX1RZUEUo
bGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnRzIHN0cnVjdHVyZUVsZW1lbnRzOwotICAgIHdoaWxlICghcGVla1R5cGUoVG9rZW46
OlR5cGU6OlJpZ2h0Q3VybHlCcmFja2V0KSkgewotICAgICAgICBQQVJTRShzdHJ1Y3R1cmVFbGVt
ZW50LCBTdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgc3RydWN0dXJlRWxlbWVudHMuYXBwZW5k
KFdURk1vdmUoKnN0cnVjdHVyZUVsZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHJpZ2h0Q3Vy
bHlCcmFja2V0ID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLQotICAgIHJldHVybiBBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24oeyAqb3JpZ2luLCByaWdodEN1cmx5QnJhY2tldCB9LCBuYW1lLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoc3RydWN0dXJlRWxlbWVudHMp
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVf
VFlQRShvcmlnaW4sIEVudW0pOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsK
LQotICAgIGF1dG8gdHlwZSA9IChbJl0oKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4sIEVycm9yPiB7Ci0gICAgICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb2xvbikpIHsK
LSAgICAgICAgICAgIFBBUlNFKHBhcnNlZFR5cGUsIFR5cGUpOwotICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUoKnBhcnNlZFR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IEFTVDo6
VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKCpvcmlnaW4sICJpbnQiX3N0ciwgQVNUOjpUeXBlQXJndW1l
bnRzKCkpIH07Ci0gICAgfSkoKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCh0eXBlLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRDdXJseUJy
YWNrZXQsIExlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgaW50NjRfdCBuZXh0VmFsdWUgPSAwOwot
ICAgIFBBUlNFKGZpcnN0RW51bWVyYXRpb25NZW1iZXIsIEVudW1lcmF0aW9uTWVtYmVyLCBuZXh0
VmFsdWUpOwotICAgIG5leHRWYWx1ZSA9IGZpcnN0RW51bWVyYXRpb25NZW1iZXItPnZhbHVlKCkg
KyAxOwotCi0gICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24gcmVzdWx0KHsgfSwgbmFtZS0+
c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlKSk7Ci0gICAgYXV0
byBzdWNjZXNzID0gcmVzdWx0LmFkZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9uTWVtYmVyKSk7
Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVt
ZXJhdGlvbiBtZW1iZXIiX3N0cik7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6
Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKG1lbWJlciwgRW51bWVyYXRpb25NZW1iZXIsIG5leHRW
YWx1ZSk7Ci0gICAgICAgIG5leHRWYWx1ZSA9IG1lbWJlci0+dmFsdWUoKSArIDE7Ci0gICAgICAg
IHN1Y2Nlc3MgPSByZXN1bHQuYWRkKFdURk1vdmUoKm1lbWJlcikpOwotICAgICAgICBpZiAoIXN1
Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVtZXJhdGlvbiBt
ZW1iZXIiX3N0cik7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0Q3VybHlCcmFja2V0
LCBSaWdodEN1cmx5QnJhY2tldCk7Ci0gICAgcmVzdWx0LnVwZGF0ZUNvZGVMb2NhdGlvbih7ICpv
cmlnaW4sICpyaWdodEN1cmx5QnJhY2tldH0pOwotCi0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZh
dWx0VmFsdWUpIC0+IEV4cGVjdGVkPEFTVDo6RW51bWVyYXRpb25NZW1iZXIsIEVycm9yPgotewot
ICAgIENPTlNVTUVfVFlQRShpZGVudGlmaWVyLCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIG5hbWUg
PSBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0KLSAgICBpZiAo
dHJ5VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsKLSAgICAgICAgUEFSU0UoY29uc3Rh
bnRFeHByZXNzaW9uLCBDb25zdGFudEV4cHJlc3Npb24pOwotCi0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gdmFsdWU7Ci0gICAgICAgIGNvbnN0YW50RXhwcmVzc2lvbi0+dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwg
WyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkg
ewotICAgICAgICAgICAgdmFsdWUgPSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0g
ICAgICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0ZXJhbCYpIHsKLSAgICAgICAgfSwgWyZdKEFTVDo6
Qm9vbGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYpIHsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoImVudW0gaW5pdGlhbGl6YXRpb24gdmFs
dWVzIGNhbiBvbmx5IGJlIGFuIGludCBvciB1aW50IGNvbnN0YW50LiIpKTsKLSAgICAgICAgcmV0
dXJuIEFTVDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdURk1vdmUobmFtZSksICp2
YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKCppZGVudGlm
aWVyLCBXVEZNb3ZlKG5hbWUpLCBkZWZhdWx0VmFsdWUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTmF0aXZlKTsKLSAg
ICBDT05TVU1FX1RZUEUocGFyc2VkVHlwZWRlZiwgVHlwZWRlZik7Ci0gICAgQ09OU1VNRV9UWVBF
KG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5cGVBcmd1bWVu
dHMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0KLSAgICByZXR1
cm4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24oeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIG5h
bWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50
cykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUo
KSAtPiBFeHBlY3RlZDxBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwgRXJyb3I+Ci17
Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTnVtVGhyZWFkcyk7Ci0gICAgQ09OU1VNRV9UWVBF
KGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gd2lkdGggPSBj
b25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIXdpZHRoKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQod2lkdGguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1F
X1RZUEUoY29tbWEsIENvbW1hKTsKLQotICAgIGF1dG8gaGVpZ2h0ID0gY29uc3VtZU5vbk5lZ2F0
aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFoZWlnaHQpCi0gICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChoZWlnaHQuZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUoc2Vjb25k
Q29tbWEsIENvbW1hKTsKLQotICAgIGF1dG8gZGVwdGggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRl
Z3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWRlcHRoKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoZGVwdGguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNp
cywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gQVNUOjpOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCAqd2lkdGgsICpoZWln
aHQsICpkZXB0aCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUF0dHJpYnV0ZUJsb2NrKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBF
KGxlZnRTcXVhcmVCcmFja2V0LCBMZWZ0U3F1YXJlQnJhY2tldCk7Ci0KLSAgICBBU1Q6OkF0dHJp
YnV0ZUJsb2NrIHJlc3VsdDsKLQotICAgIHdoaWxlICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6Umln
aHRTcXVhcmVCcmFja2V0KSkgewotICAgICAgICBQQVJTRShudW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUsIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoV1RGTW92ZSgqbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUGFyYW1ldGVy
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBh
dXRvIHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIEFT
VDo6UXVhbGlmaWVycyBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7Ci0gICAgUEFSU0Uo
dHlwZSwgVHlwZSk7Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAgICBpZiAoYXV0byB0b2tlbiA9IHRy
eVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpKQotICAgICAgICBuYW1lID0gdG9rZW4tPnN0
cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIFBBUlNFKHNlbWFudGljLCBTZW1h
bnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0
KCk7Ci0KLSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCB7
IFdURk1vdmUoKnR5cGUpIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUoKnNlbWFudGljKSwgbnVs
bHB0cik7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBhcmFtZXRlcnMoKSAtPiBFeHBlY3RlZDxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lz
LCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0
UGFyZW50aGVzaXMpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsKLQotICAg
IFBBUlNFKGZpcnN0UGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgIHBhcmFtZXRlcnMuYXBwZW5k
KG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpmaXJzdFBh
cmFtZXRlcikpKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsK
LSAgICAgICAgUEFSU0UocGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgq
cGFyYW1ldGVyKSkpOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lz
LCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZnVuY3Rpb25EZWNs
YXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgUEFSU0UoYmxvY2ssIEJsb2NrKTsK
LSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlZmluaXRpb24oV1RGTW92ZSgqZnVuY3Rpb25EZWNs
YXJhdGlvbiksIFdURk1vdmUoKmJsb2NrKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNvbXB1
dGVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRShhdHRyaWJ1dGVC
bG9jaywgQXR0cmlidXRlQmxvY2spOwotICAgIENPTlNVTUVfVFlQRShjb21wdXRlLCBDb21wdXRl
KTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRp
Zmllcik7Ci0gICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2Vt
YW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCku
c3RhcnRPZmZzZXQoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IGZhbHNlOwotICAgIHJldHVy
biBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKCphdHRyaWJ1dGVCbG9jayksIEFT
VDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUsIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpz
ZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZl
cnRleE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBhdXRvIGVudHJ5UG9pbnQgPSBjb25zdW1l
VHlwZXM8VG9rZW46OlR5cGU6OlZlcnRleCwgVG9rZW46OlR5cGU6OkZyYWdtZW50PigpOwotICAg
IGlmICghZW50cnlQb2ludCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVudHJ5UG9p
bnQuZXJyb3IoKSk7Ci0gICAgYXV0byBlbnRyeVBvaW50VHlwZSA9IChlbnRyeVBvaW50LT50eXBl
ID09IFRva2VuOjpUeXBlOjpWZXJ0ZXgpID8gQVNUOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4IDog
QVNUOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsK
LSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0UocGFyYW1ldGVy
cywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1
dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIGJvb2wg
aXNPcGVyYXRvciA9IGZhbHNlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
eyBlbnRyeVBvaW50LT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNl
KCkgfSwgeyB9LCBlbnRyeVBvaW50VHlwZSwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1Zp
ZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNl
bWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUmVn
dWxhckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNFKHR5cGUsIFR5
cGUpOwotCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBlOjpJZGVudGlm
aWVyLCBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lPigpOwotICAgIGlmICghbmFtZSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0gICAgYXV0byBpc09wZXJh
dG9yID0gbmFtZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lOwotCi0gICAgUEFS
U0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGlj
KTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsK
LQotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9w
dCwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwg
V1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9t
b2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlT3BlcmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9u
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBD
T05TVU1FX1RZUEUob3JpZ2luLCBPcGVyYXRvcik7Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0g
ICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNl
bWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZz
ZXQoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0gICAgcmV0dXJuIEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xl
eGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGlj
KSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
Ci17Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNh
c2UgVG9rZW46OlR5cGU6Ok9wZXJhdG9yOgotICAgICAgICByZXR1cm4gcGFyc2VPcGVyYXRvckZ1
bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpWZXJ0ZXg6Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBwYXJzZVZlcnRleE9y
RnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVm
dFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiBwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xh
cmF0aW9uKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVndWxhckZ1bmN0
aW9uRGVjbGFyYXRpb24oKTsKLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShuYXRpdmUsIE5hdGl2ZSk7Ci0gICAg
UEFSU0UoZnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgQ09O
U1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oV1RGTW92ZSgqZnVuY3Rpb25EZWNsYXJhdGlvbikpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VCbG9jaygpIC0+IEV4cGVjdGVkPEFTVDo6QmxvY2ssIEVycm9y
PgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIExlZnRDdXJseUJyYWNrZXQpOwotICAgIFBB
UlNFKHJlc3VsdCwgQmxvY2tCb2R5KTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRDdXJseUJyYWNr
ZXQsIFJpZ2h0Q3VybHlCcmFja2V0KTsKLSAgICByZXN1bHQtPnVwZGF0ZUNvZGVMb2NhdGlvbih7
ICpvcmlnaW4sICpyaWdodEN1cmx5QnJhY2tldCB9KTsKLSAgICByZXR1cm4gV1RGTW92ZSgqcmVz
dWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQmxvY2tCb2R5KCkgLT4gRXhwZWN0ZWQ8QVNU
OjpCbG9jaywgRXJyb3I+Ci17Ci0gICAgYXV0byBzdGFydE9mZnNldCA9IG1fbGV4ZXIucGVlaygp
LnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKLSAgICB3
aGlsZSAoIXBlZWtUeXBlczxUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQsIFRva2VuOjpU
eXBlOjpDYXNlLCBUb2tlbjo6VHlwZTo6RGVmYXVsdD4oKSkgewotICAgICAgICBQQVJTRShzdGF0
ZW1lbnQsIFN0YXRlbWVudCk7Ci0gICAgICAgIHN0YXRlbWVudHMuYXBwZW5kKFdURk1vdmUoKnN0
YXRlbWVudCkpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCku
c3RhcnRPZmZzZXQoKTsKLQotICAgIHJldHVybiBBU1Q6OkJsb2NrKHsgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHN0YXRlbWVudHMpKTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OklmU3Rh
dGVtZW50LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBJZik7Ci0gICAgQ09O
U1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShj
b25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVz
aXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTdGF0ZW1lbnQ+IGVsc2VCb2R5KG51bGxwdHIpOwotICAg
IGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpFbHNlKSkgewotICAgICAgICBQQVJTRShwYXJzZWRF
bHNlQm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgZWxzZUJvZHkgPSAoKnBhcnNlZEVsc2VCb2R5
KS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4
ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4+IGNhc3RBcmd1bWVudHM7Ci0gICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92
ZSgqY29uZGl0aW9uYWwpKTsKLSAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OkNhbGxFeHByZXNzaW9uPihUb2tlbigqb3JpZ2luKSwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0
QXJndW1lbnRzKSk7Ci0gICAgcmV0dXJuIEFTVDo6SWZTdGF0ZW1lbnQoeyBvcmlnaW4tPnN0YXJ0
T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKGJvb2xD
YXN0KSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoZWxzZUJvZHkpKTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlU3dpdGNoU3RhdGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hTdGF0ZW1l
bnQsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFN3aXRjaCk7Ci0gICAgQ09O
U1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRSh2
YWx1ZSwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJp
Z2h0UGFyZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFja2V0LCBMZWZ0
Q3VybHlCcmFja2V0KTsKLQotICAgIFZlY3RvcjxBU1Q6OlN3aXRjaENhc2U+IHN3aXRjaENhc2Vz
OwotICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICB3aGlsZSAobmV4dFRva2VuLT50eXBlICE9IFRv
a2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCkgewotICAgICAgICBQQVJTRShzd2l0Y2hDYXNl
LCBTd2l0Y2hDYXNlKTsKLSAgICAgICAgc3dpdGNoQ2FzZXMuYXBwZW5kKFdURk1vdmUoKnN3aXRj
aENhc2UpKTsKLSAgICAgICAgUEVFSyhuZXh0VG9rZW5Jbkxvb3ApOwotICAgICAgICBuZXh0VG9r
ZW4gPSBuZXh0VG9rZW5Jbkxvb3A7Ci0gICAgfQotCi0gICAgYXV0byBlbmRUb2tlbiA9IG1fbGV4
ZXIuY29uc3VtZVRva2VuKCk7Ci0KLSAgICByZXR1cm4gQVNUOjpTd2l0Y2hTdGF0ZW1lbnQoeyAq
b3JpZ2luLCBlbmRUb2tlbiB9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1vdmUoc3dpdGNoQ2FzZXMp
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoQ2FzZSgpIC0+IEV4cGVjdGVkPEFTVDo6
U3dpdGNoQ2FzZSwgRXJyb3I+Ci17Ci0gICAgYXV0byBvcmlnaW4gPSBjb25zdW1lVHlwZXM8VG9r
ZW46OlR5cGU6OkNhc2UsIFRva2VuOjpUeXBlOjpEZWZhdWx0PigpOwotICAgIGlmICghb3JpZ2lu
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQob3JpZ2luLmVycm9yKCkpOwotCi0gICAg
c3dpdGNoIChvcmlnaW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpDYXNlOiB7Ci0g
ICAgICAgIFBBUlNFKHZhbHVlLCBDb25zdGFudEV4cHJlc3Npb24pOwotICAgICAgICBDT05TVU1F
X1RZUEUoY29sb24sIENvbG9uKTsKLQotICAgICAgICBQQVJTRShibG9jaywgQmxvY2tCb2R5KTsK
LQotICAgICAgICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9jYXRpb24s
ICBibG9jay0+Y29kZUxvY2F0aW9uKCl9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1vdmUoKmJsb2Nr
KSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKG9yaWdpbi0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShjb2xvbiwgQ29s
b24pOwotCi0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAgICAgIHJldHVy
biBBU1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2RlTG9j
YXRpb24oKX0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqYmxvY2spKTsKLSAgICB9Ci0gICAgfQot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGb3JMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29w
LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBGb3IpOwotICAgIENPTlNVTUVf
VFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBhdXRvIHBhcnNl
UmVtYWluZGVyID0gWyZdKFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4mJiBpbml0aWFsaXphdGlv
bikgLT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4gewotICAgICAgICBDT05TVU1FX1RZ
UEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OkV4cHJlc3Npb24+IGNvbmRpdGlvbihudWxscHRyKTsKLSAgICAgICAgaWYgKCF0cnlUeXBlKFRv
a2VuOjpUeXBlOjpTZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBleHByZXNzaW9u
ID0gcGFyc2VFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAgY29uZGl0aW9uID0gKCpleHBy
ZXNzaW9uKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLSAgICAgICAg
ICAgIENPTlNVTUVfVFlQRShzZWNvbmRTZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBpbmNyZW1lbnQobnVs
bHB0cik7Ci0gICAgICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNp
cykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24o
KSkKLSAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAoKmV4cHJlc3Npb24pLm1vdmVUb1VuaXF1
ZVB0cigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHJp
Z2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAg
UEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9y
aWdpbi0+Y29kZUxvY2F0aW9uLCAoKmJvZHkpLT5jb2RlTG9jYXRpb24oKSk7Ci0gICAgICAgIHJl
dHVybiBBU1Q6OkZvckxvb3AobG9jYXRpb24sIFdURk1vdmUoaW5pdGlhbGl6YXRpb24pLCBXVEZN
b3ZlKGNvbmRpdGlvbiksIFdURk1vdmUoaW5jcmVtZW50KSwgV1RGTW92ZSgqYm9keSkpOwotICAg
IH07Ci0KLSAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb25zID0gYmFja3RyYWNraW5nU2NvcGU8
RXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+PihbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7Ci0gICAgfSk7
Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb25zKSB7Ci0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6
OlN0YXRlbWVudD4gZGVjbGFyYXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb25z
KSk7Ci0gICAgICAgIHJldHVybiBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKGRlY2xhcmF0aW9uU3Rh
dGVtZW50KSk7Ci0gICAgfQotCi0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lvbiwgRWZmZWN0
ZnVsRXhwcmVzc2lvbik7Ci0KLSAgICByZXR1cm4gcGFyc2VSZW1haW5kZXIoV1RGTW92ZSgqZWZm
ZWN0ZnVsRXhwcmVzc2lvbikpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VXaGlsZUxvb3AoKSAt
PiBFeHBlY3RlZDxBU1Q6OldoaWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9y
aWdpbiwgV2hpbGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJl
bnRoZXNpcyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENPTlNV
TUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShi
b2R5LCBTdGF0ZW1lbnQpOwotCi0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9yaWdpbi0+Y29k
ZUxvY2F0aW9uLCAgKCpib2R5KS0+Y29kZUxvY2F0aW9uKCkpOwotICAgIHJldHVybiBBU1Q6Oldo
aWxlTG9vcChsb2NhdGlvbiwgV1RGTW92ZSgqY29uZGl0aW9uYWwpLCBXVEZNb3ZlKCpib2R5KSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZURvV2hpbGVMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpE
b1doaWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgRG8pOwotICAg
IFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0gICAgQ09OU1VNRV9UWVBFKHdoaWxlS2V5d29yZCwg
V2hpbGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNp
cyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQ
RShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDT05TVU1FX1RZUEUo
c2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6RG9XaGlsZUxvb3AoeyAq
b3JpZ2luLCAqc2VtaWNvbG9ufSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoKmNvbmRpdGlvbmFs
KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oUmVmPEFTVDo6
VW5uYW1lZFR5cGU+JiYgdHlwZSkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBhdXRvIHF1YWxpZmllcnMgPSBw
YXJzZVF1YWxpZmllcnMoKTsKLQotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsK
LSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFT
VDo6RXhwcmVzc2lvbj4gaW5pdGlhbGl6ZXIgPSBudWxscHRyOwotICAgIGlmICh0cnlUeXBlKFRv
a2VuOjpUeXBlOjpFcXVhbHNTaWduKSkgewotICAgICAgICBQQVJTRShpbml0aWFsaXppbmdFeHBy
ZXNzaW9uLCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGluaXRpYWxpemVy
ID0gaW5pdGlhbGl6aW5nRXhwcmVzc2lvbi52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAg
IH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsK
LSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShxdWFsaWZpZXJz
KSwgeyBXVEZNb3ZlKHR5cGUpIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmco
KSwgV1RGTW92ZSgqc2VtYW50aWMpLCBXVEZNb3ZlKGluaXRpYWxpemVyKSk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwot
Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBhdXRvIGZpcnN0VmFyaWFibGVEZWNsYXJh
dGlvbiA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlLT5jb3B5UmVmKCkpOwotICAgIGlm
ICghZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uLmVycm9yKCkpOwotCi0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVu
ZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqZmlyc3RW
YXJpYWJsZURlY2xhcmF0aW9uKSkpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6
OkNvbW1hKSkgewotICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBwYXJzZVZhcmlh
YmxlRGVjbGFyYXRpb24odHlwZS0+Y29weVJlZigpKTsKLSAgICAgICAgaWYgKCF2YXJpYWJsZURl
Y2xhcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhcmlhYmxlRGVj
bGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobWFrZVVuaXF1ZVJlZjxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb24pKSk7
Ci0gICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNl
dCgpOwotICAgIHJldHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KHsgb3Jp
Z2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RG
TW92ZShyZXN1bHQpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3RhdGVtZW50KCkgLT4gRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAgUEVFSyh0b2tl
bik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6Okxl
ZnRDdXJseUJyYWNrZXQ6IHsKLSAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrKTsKLSAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJsb2NrPihXVEZNb3ZlKCpibG9jaykpIH07Ci0g
ICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OklmOiB7Ci0gICAgICAgIFBBUlNFKGlmU3RhdGVt
ZW50LCBJZlN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpJ
ZlN0YXRlbWVudD4oV1RGTW92ZSgqaWZTdGF0ZW1lbnQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTd2l0Y2g6IHsKLSAgICAgICAgUEFSU0Uoc3dpdGNoU3RhdGVtZW50LCBTd2l0
Y2hTdGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6U3dpdGNo
U3RhdGVtZW50PihXVEZNb3ZlKCpzd2l0Y2hTdGF0ZW1lbnQpKSB9OwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpGb3I6IHsKLSAgICAgICAgUEFSU0UoZm9yTG9vcCwgRm9yTG9vcCk7Ci0g
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpGb3JMb29wPihXVEZNb3ZlKCpmb3JM
b29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6V2hpbGU6IHsKLSAgICAgICAg
UEFSU0Uod2hpbGVMb29wLCBXaGlsZUxvb3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6V2hpbGVMb29wPihXVEZNb3ZlKCp3aGlsZUxvb3ApKSB9OwotICAgIH0KLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpEbzogewotICAgICAgICBQQVJTRShkb1doaWxlTG9vcCwgRG9XaGls
ZUxvb3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RG9XaGlsZUxvb3A+
KFdURk1vdmUoKmRvV2hpbGVMb29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
QnJlYWs6IHsKLSAgICAgICAgYXV0byBicmVha1Rva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4o
KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAg
YXV0byBicmVha09iamVjdCA9IEFTVDo6QnJlYWsoV1RGTW92ZShicmVha1Rva2VuKSk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCcmVhaz4oV1RGTW92ZShicmVha09iamVj
dCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNvbnRpbnVlOiB7Ci0gICAgICAg
IGF1dG8gY29udGludWVUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENP
TlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gY29udGludWVP
YmplY3QgPSBBU1Q6OkNvbnRpbnVlKFdURk1vdmUoY29udGludWVUb2tlbikpOwotICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q29udGludWU+KFdURk1vdmUoY29udGludWVPYmpl
Y3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxsdGhyb3VnaDogewotICAg
ICAgICBhdXRvIGZhbGx0aHJvdWdoVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAg
ICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGZh
bGx0aHJvdWdoT2JqZWN0ID0gQVNUOjpGYWxsdGhyb3VnaChXVEZNb3ZlKGZhbGx0aHJvdWdoVG9r
ZW4pKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZhbGx0aHJvdWdoPihX
VEZNb3ZlKGZhbGx0aHJvdWdoT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6UmV0dXJuOiB7Ci0gICAgICAgIGF1dG8gcmV0dXJuVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVU
b2tlbigpOwotICAgICAgICBpZiAoYXV0byBzZW1pY29sb24gPSB0cnlUeXBlKFRva2VuOjpUeXBl
OjpTZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBhdXRvIHJldHVybk9iamVjdCA9IEFTVDo6UmV0
dXJuKFdURk1vdmUocmV0dXJuVG9rZW4pLCBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWVSZWY8QVNUOjpSZXR1cm4+KFdURk1vdmUocmV0dXJuT2JqZWN0KSkgfTsKLSAg
ICAgICAgfQotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBFeHByZXNzaW9uKTsKLSAgICAgICAg
Q09OU1VNRV9UWVBFKGZpbmFsU2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIHJl
dHVybk9iamVjdCA9IEFTVDo6UmV0dXJuKFdURk1vdmUocmV0dXJuVG9rZW4pLCAoKmV4cHJlc3Np
b24pLm1vdmVUb1VuaXF1ZVB0cigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxB
U1Q6OlJldHVybj4oV1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhy
ZWFkOiB7Ci0gICAgICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJpYWJsZURlY2xh
cmF0aW9ucyk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0g
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotICAgIH0KLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOiB7Ci0gICAgICAgIFBFRUtfRlVSVEhFUihuZXh0
VG9rZW4pOwotICAgICAgICBzd2l0Y2ggKG5leHRUb2tlbi0+dHlwZSkgewotICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOgotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNz
VGhhblNpZ246Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlF1YWxpZmllcjogewotICAgICAgICAgICAgUEFSU0UodmFyaWFibGVEZWNs
YXJhdGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQ
RShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxl
RGVjbGFyYXRpb25zKSkgfTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBlZmZlY3RmdWxF
eHByZXNzaW9uID0gYmFja3RyYWNraW5nU2NvcGU8RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3Rh
dGVtZW50PiwgRXJyb3I+PihbJl0oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1l
bnQ+LCBFcnJvcj4gewotICAgICAgICAgICAgUEFSU0UocmVzdWx0LCBFZmZlY3RmdWxFeHByZXNz
aW9uKTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKGVmZmVj
dGZ1bEV4cHJlc3Npb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqZWZmZWN0ZnVsRXhw
cmVzc2lvbik7Ci0gICAgfQotCi0gICAgUEFSU0UodmFyaWFibGVEZWNsYXJhdGlvbnMsIFZhcmlh
YmxlRGVjbGFyYXRpb25zKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24p
OwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFT
VDo6U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotICAgIGlmIChvcmln
aW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlNlbWljb2xvbikKLSAgICAgICAgcmV0dXJuIHsgbWFr
ZVVuaXF1ZVJlZjxBU1Q6OkJsb2NrPigqb3JpZ2luLCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3Rh
dGVtZW50Pj4oKSkgfTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
ZXhwcmVzc2lvbnM7Ci0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lvbiwgRWZmZWN0ZnVsQXNz
aWdubWVudCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmVmZmVjdGZ1bEV4cHJl
c3Npb24pKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAg
ICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgRWZmZWN0ZnVsQXNzaWdubWVudCk7Ci0gICAgICAgIGV4
cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgaWYg
KGV4cHJlc3Npb25zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShleHByZXNzaW9uc1sw
XSkpIH07Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZz
ZXQoKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5zdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkpOwotICAgIGF1dG8gY29tbWFFeHByZXNzaW9u
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUo
ZXhwcmVzc2lvbnMpKTsKLSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShjb21tYUV4cHJlc3Npb24pKSB9OwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VFZmZlY3RmdWxBc3NpZ25tZW50KCkgLT4gRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAg
IGJvb2wgaXNFZmZlY3RmdWwgPSBmYWxzZTsKLSAgICBQQVJTRShleHByZXNzaW9uLCBQb3NzaWJs
ZVByZWZpeCwgJmlzRWZmZWN0ZnVsKTsKLQotICAgIGlmICghaXNFZmZlY3RmdWwgfHwgcGVla1R5
cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c0VxdWFscywKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRl
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAotICAgICAgICBUb2tlbjo6
VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzCi0gICAgPigpKSB7
Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92ZSgqZXhwcmVzc2lvbikp
OwotICAgIH0KLQotICAgIHJldHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VMaW1pdGVkU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2
aW91cykgLT4gU3VmZml4RXhwcmVzc2lvbgotewotICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBl
czwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZ1bGxTdG9wLAotICAgICAgICBUb2tlbjo6VHlwZTo6
QXJyb3csCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldD4oKTsKLSAgICBp
ZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlv
dXMpLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpGdWxsU3RvcDogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1lVHlw
ZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKLSAg
ICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxz
ZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9u
KCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVu
aXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwg
aWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAg
fQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkFycm93OiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShw
cmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3Vz
LT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIG1ha2VV
bmlxdWVSZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHBy
ZXZpb3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRy
dWUpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBlLT50eXBlID09
IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgIGF1dG8gZXhwcmVzc2lv
biA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAg
ICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwot
ICAgICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJyYWNrZXQgPSBjb25zdW1lVHlwZShUb2tlbjo6
VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewotICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0g
ICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6SW5k
ZXhFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKmV4cHJl
c3Npb24pKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Np
b24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHBy
ZXZpb3VzKSAtPiBTdWZmaXhFeHByZXNzaW9uCi17Ci0gICAgYXV0byBzdWZmaXggPSBjb25zdW1l
VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpGdWxsU3RvcCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OkFycm93LAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpQbHVzUGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzTWlu
dXM+KCk7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHN1ZmZpeC0+dHlwZSkg
ewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxTdG9wOiB7Ci0gICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYg
KCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92
ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZp
b3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4
RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdU
Rk1vdmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5n
KCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXJyb3c6IHsKLSAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIp
OwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAg
IHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9u
Pihsb2NhdGlvbiwgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oV1RG
TW92ZSgqc3VmZml4KSwgV1RGTW92ZShwcmV2aW91cykpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3
KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQ6IHsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgIHJldHVy
biBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIGlm
IChhdXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpSaWdo
dFNxdWFyZUJyYWNrZXQpKSB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJl
dmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAg
IHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Np
b24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikpLCB0
cnVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3Zl
KHByZXZpb3VzKSwgZmFsc2UpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1
czogewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlv
bigpLCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsK
LSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRz
OwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJl
bmNlKCkpOwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVl
UmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZN
b3ZlKGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lv
bihyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1cm4gU3VmZml4
RXhwcmVzc2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7
Ci0gICAgICAgIEFTU0VSVChzdWZmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXMp
OwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigp
LCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAg
ICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwot
ICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNl
KCkpOwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihy
ZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZmlyc3QsIFBvc3NpYmxlVGVybmFyeUNvbmRp
dGlvbmFsKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Np
b25zOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gKCpmaXJzdCktPmNvZGVMb2NhdGlvbigp
LnN0YXJ0T2Zmc2V0KCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmZpcnN0KSk7
Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBB
UlNFKGV4cHJlc3Npb24sIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAgZXhw
cmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBpZiAo
ZXhwcmVzc2lvbnMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKGV4cHJlc3Np
b25zWzBdKTsKLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0
KCk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1f
bGV4ZXIubmFtZVNwYWNlKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDb21t
YUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSkgfTsKLX0KLQotYXV0
byBQYXJzZXI6OmNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYgcHJlZGljYXRlKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKHF1ZXN0aW9uTWFyaywgUXVlc3Rpb25NYXJr
KTsKLSAgICBQQVJTRShib2R5RXhwcmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9U
WVBFKGNvbG9uLCBDb2xvbik7Ci0gICAgUEFSU0UoZWxzZUV4cHJlc3Npb24sIFBvc3NpYmxlVGVy
bmFyeUNvbmRpdGlvbmFsKTsKLQotICAgIENvZGVMb2NhdGlvbiBwcmVkaWNhdGVMb2NhdGlvbiA9
IHByZWRpY2F0ZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+PiBjYXN0QXJndW1lbnRzOwotICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1v
dmUocHJlZGljYXRlKSk7Ci0gICAgYXV0byBib29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4ocHJlZGljYXRlTG9jYXRpb24sICJib29sIl9zdHIsIFdURk1vdmUoY2Fz
dEFyZ3VtZW50cykpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmVkaWNhdGVMb2NhdGlv
biwgKCplbHNlRXhwcmVzc2lvbiktPmNvZGVMb2NhdGlvbigpKTsKLSAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGJvb2xD
YXN0KSwgV1RGTW92ZSgqYm9keUV4cHJlc3Npb24pLCBXVEZNb3ZlKCplbHNlRXhwcmVzc2lvbikp
IH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZUFzc2lnbm1lbnQoVW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4mJiBsZWZ0KSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+Ci17Ci0gICAgYXV0byBhc3NpZ25tZW50T3BlcmF0b3IgPSBjb25zdW1lVHlwZXM8
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6
UGx1c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVh
bHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpYb3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVh
bHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHM+KCk7Ci0gICAgaWYgKCFh
c3NpZ25tZW50T3BlcmF0b3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhc3NpZ25t
ZW50T3BlcmF0b3IuZXJyb3IoKSk7Ci0KLSAgICBQQVJTRShyaWdodCwgUG9zc2libGVUZXJuYXJ5
Q29uZGl0aW9uYWwpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbiA9IHsgbGVmdC0+Y29kZUxv
Y2F0aW9uKCksICgqcmlnaHQpLT5jb2RlTG9jYXRpb24oKSB9OwotCi0gICAgaWYgKGFzc2lnbm1l
bnRPcGVyYXRvci0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihsb2NhdGlvbiwg
V1RGTW92ZShsZWZ0KSwgV1RGTW92ZSgqcmlnaHQpKX07Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAg
ICBzd2l0Y2ggKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5
cGU6OlBsdXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IrIl9zdHI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzOgotICAgICAgICBuYW1l
ID0gIm9wZXJhdG9yLSJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpUaW1lc0VxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcioiX3N0cjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzOgotICAgICAgICBuYW1l
ID0gIm9wZXJhdG9yLyJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpNb2RFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IlIl9zdHI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlhvckVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJv
cGVyYXRvcl4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QW5k
RXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yJiJfc3RyOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpPckVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRv
cnwiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UmlnaHRTaGlm
dEVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcj4+Il9zdHI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhc3NpZ25tZW50T3BlcmF0b3ItPnR5cGUg
PT0gVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscyk7Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0
b3I8PCJfc3RyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZShsZWZ0KSk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxs
QXJndW1lbnRzOwotICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVS
ZWZlcmVuY2UoKSk7Ci0gICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqcmlnaHQpKTsK
LSAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2Fs
bEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNhbGxBcmd1bWVu
dHMpKSk7Ci0gICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3VmFyaWFi
bGVSZWZlcmVuY2UoKSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCkgLT4gRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKGV4cHJlc3Np
b24sIFBvc3NpYmxlUHJlZml4KTsKLQotICAgIGlmIChwZWVrVHlwZXM8VG9rZW46OlR5cGU6OkVx
dWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaW1lc0VxdWFscywK
LSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6
Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywKLSAgICAgICAgVG9r
ZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yRXF1YWxzLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6
OkxlZnRTaGlmdEVxdWFscz4oKSkgewotICAgICAgICByZXR1cm4gY29tcGxldGVBc3NpZ25tZW50
KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxl
dGVQb3NzaWJsZVNoaWZ0KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Np
b24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwot
Ci0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVNdWx0aXBseShXVEZNb3ZlKCpleHBy
ZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBv
c3NpYmxlQWRkKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0g
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAg
ZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFdU
Rk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgZXhwcmVzc2lvbiA9
IGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKmV4cHJlc3Np
b24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgUEVFSyhuZXh0VG9rZW4pOwotICAgIGlmIChu
ZXh0VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlF1ZXN0aW9uTWFyaykKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAg
ICByZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVMb2dp
Y2FsQmluYXJ5T3BlcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4sIEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZVJlbGF0aW9u
YWxCaW5hcnlPcGVyYXRpb24pOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJp
bmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNl
cjo6Y29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIGxvZ2ljYWxCaW5hcnlPcGVyYXRpb24g
PSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yT3IsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpBbmRBbmQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpPciwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlhvciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZAotICAgICAgICA+KCkpIHsKLSAgICAg
ICAgUEFSU0UobmV4dCwgUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKTsKLSAgICAg
ICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0
KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIHN3aXRjaCAobG9naWNhbEJpbmFyeU9wZXJh
dGlvbi0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPck9yOgotICAgICAgICAg
ICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGxvY2F0
aW9uLCBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpPciwgV1RGTW92ZShwcmV2aW91cyks
IFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpBbmRBbmQ6Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpMb2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5
cGU6OkFuZCwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPcjogewotICAgICAgICAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlv
dXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0
b3J8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6WG9yOiB7Ci0gICAgICAgICAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAg
ICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2
aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvcl4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NFUlQobG9naWNh
bEJpbmFyeU9wZXJhdGlvbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6QW5kKTsKLSAgICAgICAgICAg
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAg
ICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAg
ICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHBy
ZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9w
ZXJhdG9yJiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHBy
ZXZpb3VzKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxCaW5h
cnlPcGVyYXRpb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJy
b3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlU2hpZnQpOwotICAgIHJl
dHVybiBjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpw
YXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZVJlbGF0
aW9uYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91
cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAg
IHdoaWxlIChhdXRvIHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24gPSB0cnlUeXBlczwKLSAgICAg
ICAgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6OkdyZWF0
ZXJUaGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAgIFRva2VuOjpU
eXBlOjpFcXVhbENvbXBhcmlzb24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpOb3RFcXVhbAotICAg
ICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVTaGlmdCk7Ci0gICAgICAg
IENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCkt
PmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1v
dmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4
dCkpOwotCi0gICAgICAgIHN3aXRjaCAocmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbi0+dHlwZSkg
ewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ246IHsKLSAgICAgICAgICAg
IHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwg
Im9wZXJhdG9yPCJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2ln
bjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I+Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6TGVzc1RoYW5PckVxdWFsVG86IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPD0iX3N0ciwgV1RG
TW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbzogewotICAgICAgICAg
ICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9u
LCAib3BlcmF0b3I+PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFy
aXNvbjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4
cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVu
dHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsK
LSAgICAgICAgICAgIEFTU0VSVChyZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50eXBlID09IFRv
a2VuOjpUeXBlOjpOb3RFcXVhbCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj09Il9zdHIsIFdURk1v
dmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJs
ZVNoaWZ0KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgot
ewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZUFkZCk7Ci0gICAgcmV0dXJuIGNv
bXBsZXRlUG9zc2libGVTaGlmdChXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRv
IFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICB3aGlsZSAoYXV0byBzaGlmdCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6
VHlwZTo6TGVmdFNoaWZ0LAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdAotICAgICAg
ICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVBZGQpOwotICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2Rl
TG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHBy
ZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsK
LQotICAgICAgICBzd2l0Y2ggKHNoaWZ0LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5
cGU6OkxlZnRTaGlmdDogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8PCJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChzaGlmdC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6
UmlnaHRTaGlmdCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj4+Il9zdHIsIFdURk1vdmUoY2FsbEFy
Z3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlUG9zc2libGVBZGQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlTXVsdGlwbHkpOwot
ICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlQWRkKFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlQWRkKFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBhZGQgPSB0cnlUeXBlczwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlBsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51cwotICAgICAgICA+
KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVNdWx0aXBseSk7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNv
ZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
cHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkp
OwotCi0gICAgICAgIHN3aXRjaCAoYWRkLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5
cGU6OlBsdXM6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1
bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6
IHsKLSAgICAgICAgICAgIEFTU0VSVChhZGQtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1pbnVzKTsK
LSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9u
Pihsb2NhdGlvbiwgIm9wZXJhdG9yLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlTXVs
dGlwbHkoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17
Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlUHJlZml4KTsKLSAgICByZXR1cm4g
Y29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0K
LWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIG11bHRpcGx5ID0gdHJ5VHlwZXM8Ci0gICAg
ICAgIFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRlLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6TW9kCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0
LCBQb3NzaWJsZVByZWZpeCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91
cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFy
Z3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRjaCAobXVsdGlw
bHktPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjogewotICAgICAgICAg
ICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9u
LCAib3BlcmF0b3IqIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2aWRlOiB7Ci0g
ICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvci8iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAg
ICBBU1NFUlQobXVsdGlwbHktPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1vZCk7Ci0gICAgICAgICAg
ICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24s
ICJvcGVyYXRvciUiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFdURk1vdmUo
cHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVByZWZpeChib29sICpp
c0VmZmVjdGZ1bCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9y
PgotewotICAgIGlmIChhdXRvIHByZWZpeCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlw
ZTo6UGx1c1BsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c01pbnVzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6VGlsZGUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpFeGNsYW1hdGlvblBvaW50
LAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXQsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpTdGFyCi0gICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQs
IFBvc3NpYmxlUHJlZml4KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpwcmVmaXgs
ICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBzd2l0Y2ggKHByZWZpeC0+dHlw
ZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czogewotICAgICAgICAgICAg
aWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0g
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsK
LSAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lv
bihyZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZShyZXN1bHQpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
TWludXNNaW51czogewotICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAg
ICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92
ZSgqbmV4dCkpOwotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0
LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFs
dWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24s
ICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICAgICAgICAg
IHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNl
KCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1czogewotICAgICAgICAgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2Fs
bEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIHsg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKyJf
c3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6Ok1pbnVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFw
cGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItIl9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
VGlsZGU6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
Km5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhw
cmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcn4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpFeGNsYW1hdGlvblBv
aW50OiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNh
c3RBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpu
ZXh0KSk7Ci0gICAgICAgICAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihsb2NhdGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJndW1lbnRz
KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbE5vdEV4
cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGJvb2xDYXN0KSkgfTsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpBbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4
dCksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXMpIH07Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkF0OgotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6Ok1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSwgQVNU
OjpBZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlcykgfTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIEFTU0VSVChwcmVmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlN0YXIpOwotICAgICAg
ICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUoKm5leHQpKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoaXNFZmZlY3RmdWwpOwotfQotCi1hdXRvIFBhcnNlcjo6
cGFyc2VQb3NzaWJsZVN1ZmZpeChib29sICppc0VmZmVjdGZ1bCkgLT4gRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4pOwotICAgIFBF
RUtfRlVSVEhFUihuZXh0VG9rZW4pOwotCi0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpU
eXBlOjpJZGVudGlmaWVyICYmIG5leHRUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBh
cmVudGhlc2lzKSB7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIENhbGxFeHByZXNzaW9uKTsK
LSAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1
ZTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIFBFRUsoc3VmZml4VG9rZW4p
OwotICAgICAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpGdWxs
U3RvcCAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6QXJyb3cgJiYgc3VmZml4
VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZUxpbWl0ZWRTdWZm
aXhPcGVyYXRvcihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBleHByZXNzaW9u
ID0gV1RGTW92ZShyZXN1bHQucmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhw
cmVzc2lvbjsKLSAgICB9Ci0KLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6Okxl
ZnRQYXJlbnRoZXNpcyAmJiBpc0VmZmVjdGZ1bCkKLSAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1
ZTsKLQotICAgIFBBUlNFKGV4cHJlc3Npb24sIFRlcm0pOwotICAgIGJvb2wgaXNMYXN0U3VmZml4
VG9rZW5FZmZlY3RmdWwgPSBmYWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBQRUVL
KHN1ZmZpeFRva2VuKTsKLSAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpGdWxsU3RvcAotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46
OlR5cGU6OkFycm93Ci0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6
VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQKLSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBl
ICE9IFRva2VuOjpUeXBlOjpQbHVzUGx1cwotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5
cGUgIT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXMpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGlzTGFzdFN1ZmZpeFRva2VuRWZmZWN0ZnVsID0gc3VmZml4VG9rZW4t
PnR5cGUgPT0gVG9rZW46OlR5cGU6OlBsdXNQbHVzIHx8IHN1ZmZpeFRva2VuLT50eXBlID09IFRv
a2VuOjpUeXBlOjpNaW51c01pbnVzOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlU3VmZml4
T3BlcmF0b3IoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgICAgICBleHByZXNzaW9uID0gV1RG
TW92ZShyZXN1bHQucmVzdWx0KTsKLSAgICB9Ci0gICAgaWYgKGlzTGFzdFN1ZmZpeFRva2VuRWZm
ZWN0ZnVsICYmIGlzRWZmZWN0ZnVsKQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAg
IHJldHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDYWxsRXhwcmVzc2lv
bigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAg
ICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgYXV0byBjYWxsTmFtZSA9IG5h
bWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIENPTlNVTUVfVFlQRShs
ZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4+IGFyZ3VtZW50czsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlw
ZTo6UmlnaHRQYXJlbnRoZXNpcykpCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpDYWxsRXhwcmVzc2lvbj4oV1RGTW92ZSgqbmFtZSksIFdURk1vdmUoY2FsbE5hbWUpLCBXVEZN
b3ZlKGFyZ3VtZW50cykpIH07Ci0KLSAgICBQQVJTRShmaXJzdEFyZ3VtZW50LCBQb3NzaWJsZVRl
cm5hcnlDb25kaXRpb25hbCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpmaXJzdEFy
Z3VtZW50KSk7Ci0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAg
ICAgICBQQVJTRShhcmd1bWVudCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmFyZ3VtZW50KSk7Ci0gICAgfQotCi0gICAgQ09O
U1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIENvZGVM
b2NhdGlvbiBsb2NhdGlvbigqbmFtZSwgKnJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShj
YWxsTmFtZSksIFdURk1vdmUoYXJndW1lbnRzKSkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
VGVybSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsK
LSAgICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpJbnRM
aXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6VWludExpdGVyYWwsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpGbG9hdExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpOdWxsLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6VHJ1ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZhbHNlLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6SWRlbnRpZmllciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRQYXJl
bnRoZXNpcz4oKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCh0eXBlLmVycm9yKCkpOwotCi0gICAgc3dpdGNoICh0eXBlLT50eXBlKSB7Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gaW50TGl0ZXJh
bFRvSW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6SW50ZWdlckxpdGVyYWw+KCp0eXBlLCAqdmFs
dWUpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsOiB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB1aW50TGl0ZXJhbFRvVWludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4
ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KCp0eXBlLCAqdmFsdWUpIH07Ci0gICAgfQotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gZmxv
YXRMaXRlcmFsVG9GbG9hdCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigp
KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZsb2F0TGl0ZXJhbD4oKnR5
cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TnVsbDoKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCInbnVsbCcgaXMgYSByZXNlcnZlZCBrZXl3
b3JkLiIsIHR5cGUtPmNvZGVMb2NhdGlvbikpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRydWU6
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0ZXJhbD4oKnR5
cGUsIHRydWUpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmFsc2U6Ci0gICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0ZXJhbD4oKnR5cGUsIGZhbHNlKSB9Owot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OklkZW50aWZpZXI6IHsKLSAgICAgICAgYXV0byBuYW1lID0g
dHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KCp0eXBlLCBXVEZNb3ZlKG5hbWUp
KSB9OwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBlLT50eXBlID09
IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpOwotICAgICAgICBQQVJTRShleHByZXNzaW9u
LCBFeHByZXNzaW9uKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJp
Z2h0UGFyZW50aGVzaXMpOwotCi0gICAgICAgIHJldHVybiB7IFdURk1vdmUoKmV4cHJlc3Npb24p
IH07Ci0gICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZWVhMzI2ZGI0NzQ3N2U2ZTllMzM2OTYzMzdiNmU2
NWQzMTc3NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1
ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5jbHVkZSAiV0hM
U0xQYXJzaW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IHBhcnNlKFByb2dyYW0mLCBTdHJpbmdWaWV3LCBQYXJzaW5nTW9k
ZSwgQVNUOjpOYW1lU3BhY2UpOwotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdGhpcwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgzNTcKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGJhY2t0cmFja2luZ1Njb3Bl
KHN0ZDo6ZnVuY3Rpb248VCgpPiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGF1dG8gc3RhdGUg
PSBtX2xleGVyLnN0YXRlKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsbGJhY2soKTsKLSAg
ICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIG1f
bGV4ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQotICAgIGVudW0gY2xhc3MgVHJ5VG9QZWVrIHsKLSAgICAgICAgWWVzLAotICAgICAg
ICBObwotICAgIH07Ci0gICAgVW5leHBlY3RlZDxFcnJvcj4gZmFpbChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFRyeVRvUGVlayA9IFRyeVRvUGVlazo6WWVzKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwg
RXJyb3I+IHBlZWsoKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IHBlZWtGdXJ0aGVyKCk7
Ci0gICAgYm9vbCBwZWVrVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRva2VuOjpU
eXBlLi4uIHR5cGVzPgotICAgIGJvb2wgcGVla1R5cGVzKCk7Ci0gICAgc3RkOjpvcHRpb25hbDxU
b2tlbj4gdHJ5VHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4u
IHR5cGVzPgotICAgIHN0ZDo6b3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVzKCk7Ci0gICAgRXhwZWN0
ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUg
PFRva2VuOjpUeXBlLi4uIHR5cGVzPgotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gY29uc3Vt
ZVR5cGVzKCk7Ci0KLSAgICBFeHBlY3RlZDxWYXJpYW50PGludCwgdW5zaWduZWQ+LCBFcnJvcj4g
Y29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4g
Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpD
b25zdGFudEV4cHJlc3Npb24sIEVycm9yPiBwYXJzZUNvbnN0YW50RXhwcmVzc2lvbigpOwotICAg
IEV4cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50LCBFcnJvcj4gcGFyc2VUeXBlQXJndW1lbnQoKTsK
LSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPiBwYXJzZVR5cGVBcmd1bWVu
dHMoKTsKLSAgICBzdHJ1Y3QgVHlwZVN1ZmZpeEFiYnJldmlhdGVkIHsKLSAgICAgICAgQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uOwotICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7Ci0gICAgfTsKLSAgICBFeHBlY3RlZDxUeXBlU3Vm
Zml4QWJicmV2aWF0ZWQsIEVycm9yPiBwYXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgpOwotICAg
IHN0cnVjdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQgewotICAgICAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb247Ci0gICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPEFT
VDo6QWRkcmVzc1NwYWNlPiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IG51bUVsZW1lbnRzOwotICAgIH07Ci0gICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFi
YnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKTsKLSAgICBF
eHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZUFkZHJlc3NTcGFjZVR5
cGUoKTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZU5v
bkFkZHJlc3NTcGFjZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4s
IEVycm9yPiBwYXJzZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZpbml0aW9uLCBF
cnJvcj4gcGFyc2VUeXBlRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6QnVpbHRJblNl
bWFudGljLCBFcnJvcj4gcGFyc2VCdWlsdEluU2VtYW50aWMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6
OlJlc291cmNlU2VtYW50aWMsIEVycm9yPiBwYXJzZVJlc291cmNlU2VtYW50aWMoKTsKLSAgICBF
eHBlY3RlZDxBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+IHBhcnNl
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTdGFn
ZUluT3V0U2VtYW50aWMsIEVycm9yPiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpOwotICAgIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+IHBhcnNlU2VtYW50
aWMoKTsKLSAgICBBU1Q6OlF1YWxpZmllcnMgcGFyc2VRdWFsaWZpZXJzKCk7Ci0gICAgRXhwZWN0
ZWQ8QVNUOjpTdHJ1Y3R1cmVFbGVtZW50LCBFcnJvcj4gcGFyc2VTdHJ1Y3R1cmVFbGVtZW50KCk7
Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VTdHJ1
Y3R1cmVEZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24sIEVycm9yPiBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFT
VDo6RW51bWVyYXRpb25NZW1iZXIsIEVycm9yPiBwYXJzZUVudW1lcmF0aW9uTWVtYmVyKGludDY0
X3QgZGVmYXVsdFZhbHVlKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biwgRXJyb3I+IHBhcnNlTmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNU
OjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUsIEVycm9yPiBwYXJzZU51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZSgpOwotICAgIEV4cGVjdGVkPEFTVDo6QXR0cmlidXRlQmxvY2ssIEVycm9y
PiBwYXJzZUF0dHJpYnV0ZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXIoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAgRXhwZWN0ZWQ8
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VDb21wdXRlRnVuY3Rpb25EZWNs
YXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
IHBhcnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3Rl
ZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVJlZ3VsYXJGdW5jdGlvbkRl
Y2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJv
cj4gcGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsK
LSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlRnVuY3Rp
b25EZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLCBFcnJvcj4gcGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0KLSAgICBFeHBl
Y3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4gcGFyc2VCbG9jaygpOwotICAgIEV4cGVjdGVkPEFTVDo6
QmxvY2ssIEVycm9yPiBwYXJzZUJsb2NrQm9keSgpOwotICAgIEV4cGVjdGVkPEFTVDo6SWZTdGF0
ZW1lbnQsIEVycm9yPiBwYXJzZUlmU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTd2l0
Y2hTdGF0ZW1lbnQsIEVycm9yPiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpOwotICAgIEV4cGVjdGVk
PEFTVDo6U3dpdGNoQ2FzZSwgRXJyb3I+IHBhcnNlU3dpdGNoQ2FzZSgpOwotICAgIEV4cGVjdGVk
PEFTVDo6Rm9yTG9vcCwgRXJyb3I+IHBhcnNlRm9yTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6
V2hpbGVMb29wLCBFcnJvcj4gcGFyc2VXaGlsZUxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkRv
V2hpbGVMb29wLCBFcnJvcj4gcGFyc2VEb1doaWxlTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihSZWY8
QVNUOjpVbm5hbWVkVHlwZT4mJik7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMoKTsKLSAgICBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4gcGFyc2VTdGF0ZW1lbnQo
KTsKLQotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiBwYXJz
ZUVmZmVjdGZ1bEV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+IHBhcnNlRWZmZWN0ZnVsQXNzaWdubWVudCgpOwotICAgIHN0cnVjdCBT
dWZmaXhFeHByZXNzaW9uIHsKLSAgICAgICAgU3VmZml4RXhwcmVzc2lvbihVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiYmIHJlc3VsdCwgYm9vbCBzdWNjZXNzKQotICAgICAgICAgICAgOiByZXN1
bHQoV1RGTW92ZShyZXN1bHQpKQotICAgICAgICAgICAgLCBzdWNjZXNzKHN1Y2Nlc3MpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+IHJl
c3VsdDsKLSAgICAgICAgYm9vbCBzdWNjZXNzOwotICAgICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gc3VjY2VzczsgfQotICAgIH07Ci0gICAgU3VmZml4RXhwcmVzc2lvbiBwYXJz
ZUxpbWl0ZWRTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmKTsKLSAg
ICBTdWZmaXhFeHByZXNzaW9uIHBhcnNlU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4mJik7Ci0KLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+IHBhcnNlRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCgpOwotICAg
IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVUZXJu
YXJ5Q29uZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUpOwot
ICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVB
c3NpZ25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgbGVmdCk7Ci0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlTG9naWNh
bEJpbmFyeU9wZXJhdGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9w
ZXJhdGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4gY29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlU2hpZnQoKTsKLSAgICBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2libGVTaGlmdChV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVBZGQoKTsKLSAgICBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2li
bGVBZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlTXVsdGlw
bHkoKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNv
bXBsZXRlUG9zc2libGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZp
b3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBh
cnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsKLSAgICBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVTdWZm
aXgoYm9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKLSAgICBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlVGVybSgpOwotCi0g
ICAgTGV4ZXIgbV9sZXhlcjsKLSAgICBQYXJzaW5nTW9kZSBtX21vZGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJkZjA3Mzc2Y2Y4ZDQwZWM3YmE4YzBjYTM3MDcyMzQwZDQ2MjAxZDMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWVu
dW0gY2xhc3MgUGFyc2luZ01vZGUgOiB1aW50OF90IHsKLSAgICBTdGFuZGFyZExpYnJhcnksCi0g
ICAgVXNlcgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNj
cmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNzA1OTg4MGQ1M2RlY2E4
YjY0MjRmZTI2MDU1ZmVhMGNlZWZiMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotZW51bSBjbGFzcyBWZXJ0ZXhGb3JtYXQgOiB1aW50OF90IHsKLSAgICBGbG9hdFIz
MkczMkIzMkEzMiwKLSAgICBGbG9hdFIzMkczMkIzMiwKLSAgICBGbG9hdFIzMkczMiwKLSAgICBG
bG9hdFIzMgotfTsKLQotc3RydWN0IFZlcnRleEF0dHJpYnV0ZSB7Ci0gICAgVmVydGV4Rm9ybWF0
IHZlcnRleEZvcm1hdDsKLSAgICB1bnNpZ25lZCBzaGFkZXJMb2NhdGlvbjsKLSAgICB1bnNpZ25l
ZCBtZXRhbExvY2F0aW9uOwotfTsKLQotdXNpbmcgVmVydGV4QXR0cmlidXRlcyA9IFZlY3RvcjxW
ZXJ0ZXhBdHRyaWJ1dGU+OwotCi0vLyBGSVhNRTogQWRkIGJhY2sgPCAzMiBiaXQgdGV4dHVyZSB2
YWx1ZXMgYW5kIGZpZ3VyZSBvdXQgaG93IHRvIGJveCB0aGVtIGluIHdpZGVyIHR5cGVzIHdoZW4g
d2UgbG9hZCBmcm9tIHRoZW0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwMzE1Ci0KLWVudW0gY2xhc3MgVGV4dHVyZUZvcm1hdCB7Ci0gICAgUjhVbm9ybSwK
LSAgICBSOFVub3JtU3JnYiwKLSAgICBSOFNub3JtLAotICAgIFIxNlVub3JtLAotICAgIFIxNlNu
b3JtLAotICAgIFIxNkZsb2F0LAotICAgIFJHOFVub3JtLAotICAgIFJHOFVub3JtU3JnYiwKLSAg
ICBSRzhTbm9ybSwKLSAgICBCNUc2UjVVbm9ybSwKLSAgICBSMzJVaW50LAotICAgIFIzMlNpbnQs
Ci0gICAgUjMyRmxvYXQsCi0gICAgUkcxNlVub3JtLAotICAgIFJHMTZTbm9ybSwKLSAgICBSRzE2
RmxvYXQsCi0gICAgUkdCQThVbm9ybSwKLSAgICBSR0JBOFVub3JtU3JnYiwKLSAgICBSR0JBOFNu
b3JtLAotICAgIEJHUkE4VW5vcm0sCi0gICAgQkdSQThVbm9ybVNyZ2IsCi0gICAgUkdCMTBBMlVu
b3JtLAotICAgIFJHMTFCMTBGbG9hdCwKLSAgICBSRzMyVWludCwKLSAgICBSRzMyU2ludCwKLSAg
ICBSRzMyRmxvYXQsCi0gICAgUkdCQTE2VW5vcm0sCi0gICAgUkdCQTE2U25vcm0sCi0gICAgUkdC
QTE2RmxvYXQsCi0gICAgUkdCQTMyVWludCwKLSAgICBSR0JBMzJTaW50LAotICAgIFJHQkEzMkZs
b2F0Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIFRleHR1cmVGb3Jt
YXQgdGV4dHVyZUZvcm1hdDsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotc3RydWN0IEF0dGFj
aG1lbnRzU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8QXR0YWNobWVudERlc2NyaXB0b3I+
IGF0dGFjaG1lbnREZXNjcmlwdG9yczsKLSAgICBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREZXNj
cmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKLX07Ci0KLWVudW0gY2xh
c3MgU2hhZGVyU3RhZ2UgOiB1aW50OF90IHsKLSAgICBOb25lID0gMCwKLSAgICBWZXJ0ZXggPSAx
IDw8IDAsCi0gICAgRnJhZ21lbnQgPSAxIDw8IDEsCi0gICAgQ29tcHV0ZSA9IDEgPDwgMgotfTsK
LQotc3RydWN0IFVuaWZvcm1CdWZmZXJCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBsZW5ndGhOYW1l
OwotfTsKLQotc3RydWN0IFNhbXBsZXJCaW5kaW5nIHsKLX07Ci0KLXN0cnVjdCBUZXh0dXJlQmlu
ZGluZyB7Ci19OwotCi1zdHJ1Y3QgU3RvcmFnZUJ1ZmZlckJpbmRpbmcgewotICAgIHVuc2lnbmVk
IGxlbmd0aE5hbWU7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODE2OCBBZGQgdGhlIGR5bmFtaWMgdHlwZXMKLQotc3RydWN0IEJpbmRp
bmcgewotICAgIHVzaW5nIEJpbmRpbmdEZXRhaWxzID0gVmFyaWFudDxVbmlmb3JtQnVmZmVyQmlu
ZGluZywgU2FtcGxlckJpbmRpbmcsIFRleHR1cmVCaW5kaW5nLCBTdG9yYWdlQnVmZmVyQmluZGlu
Zz47Ci0gICAgT3B0aW9uU2V0PFNoYWRlclN0YWdlPiB2aXNpYmlsaXR5OwotICAgIEJpbmRpbmdE
ZXRhaWxzIGJpbmRpbmc7Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxOYW1lOwotICAgIHVuc2lnbmVk
IGV4dGVybmFsTmFtZTsKLX07Ci0KLXN0cnVjdCBCaW5kR3JvdXAgewotICAgIFZlY3RvcjxCaW5k
aW5nPiBiaW5kaW5nczsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotdXNpbmcgTGF5b3V0ID0g
VmVjdG9yPEJpbmRHcm91cD47Ci0KLXN0cnVjdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Igewot
ICAgIFZlcnRleEF0dHJpYnV0ZXMgdmVydGV4QXR0cmlidXRlczsKLSAgICBBdHRhY2htZW50c1N0
YXRlRGVzY3JpcHRvciBhdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvcjsKLSAgICBMYXlvdXQgbGF5
b3V0OwotICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBTdHJpbmcgZnJhZ21l
bnRFbnRyeVBvaW50TmFtZTsKLX07Ci0KLXN0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
IHsKLSAgICBMYXlvdXQgbGF5b3V0OwotICAgIFN0cmluZyBlbnRyeVBvaW50TmFtZTsKLX07Ci0K
LXVzaW5nIFBpcGVsaW5lRGVzY3JpcHRvciA9IFZhcmlhbnQ8UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPjsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlcGFyZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmM1Y2FjNDNjOTU5
YTNlNzE4ZDBhMGI0OGViYzFjNGU0YjgzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1REdW1wZXIuaCIKLSNp
bmNsdWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiV0hMU0xD
aGVja1JlZmVyZW5jZVR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1RleHR1cmVSZWZlcmVu
Y2VzLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21wdXRl
RGltZW5zaW9ucy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCIKLSNp
bmNsdWRlICJXSExTTEhpZ2hab21iaWVGaW5kZXIuaCIKLSNpbmNsdWRlICJXSExTTExpdGVyYWxU
eXBlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgot
I2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVzZXJ2ZVZhcmlhYmxl
TGlmZXRpbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpb25DaGVja2VyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNM
U2VtYW50aWNNYXRjaGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIgotI2luY2x1
ZGUgIldITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oIgotI2luY2x1ZGUgIldITFNMU3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3Qg
U2hhZGVyTW9kdWxlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQot
ICAgIFNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmIHdobHNsU291cmNlKQotICAgICAgICA6IHdo
bHNsU291cmNlKHdobHNsU291cmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmcgd2hsc2xT
b3VyY2U7Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXZvaWQgZGVmYXVsdF9k
ZWxldGU8V2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZT46Om9wZXJhdG9yKCkoV2ViQ29yZTo6
V0hMU0w6OlNoYWRlck1vZHVsZSogc2hhZGVyTW9kdWxlKSBjb25zdAotewotICAgIGRlbGV0ZSBz
aGFkZXJNb2R1bGU7Ci19Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEJlZm9yZUVhY2hQYXNzID0g
ZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZyA9IGZhbHNl
Owotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IGZhbHNlOwotc3RhdGljIGNv
bnN0ZXhwciBib29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSBmYWxzZTsKLXN0YXRpYyBjb25z
dGV4cHIgYm9vbCBkdW1wUGFzc0ZhaWx1cmUgPSBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgfHwgZHVt
cEFTVEFmdGVyUGFyc2luZyB8fCBkdW1wQVNUQXRFbmQgfHwgYWx3YXlzRHVtcFBhc3NGYWlsdXJl
czsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGhhc2VUaW1lcyA9IGZhbHNlOwotCi1zdGF0
aWMgY29uc3RleHByIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5ID0gZmFsc2U7Ci0KLXN0
YXRpYyBib29sIGR1bXBBU1RJZk5lZWRlZChib29sIHNob3VsZER1bXAsIFByb2dyYW0mIHByb2dy
YW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgaWYgKHNob3VsZER1bXApIHsKLSAgICAg
ICAgZGF0YUxvZ0xuKG1lc3NhZ2UpOwotICAgICAgICBkdW1wQVNUKHByb2dyYW0pOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBi
b29sIGR1bXBBU1RBZnRlclBhcnNpbmdJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtKQotewotICAg
IHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEFmdGVyUGFyc2luZywgcHJvZ3JhbSwgIkFT
VCBhZnRlciBwYXJzaW5nIik7Ci19Ci0KLXN0YXRpYyBib29sIGR1bXBBU1RCZXR3ZWVuRWFjaFBh
c3NJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAg
IHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEJlZm9yZUVhY2hQYXNzLCBwcm9ncmFtLCBt
ZXNzYWdlKTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEF0RW5kSWZOZWVkZWQoUHJvZ3JhbSYg
cHJvZ3JhbSkKLXsKLSAgICByZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1bXBBU1RBdEVuZCwgcHJv
Z3JhbSwgIkFTVCBhdCBlbmQiKTsKLX0KLQotdXNpbmcgUGhhc2VUaW1lcyA9IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTZWNvbmRzPj47Ci0KLXN0YXRpYyB2b2lkIGxvZ1BoYXNlVGltZXMoUGhh
c2VUaW1lcyYgcGhhc2VUaW1lcykKLXsKLSAgICBpZiAoIWR1bXBQaGFzZVRpbWVzKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogcGhhc2VUaW1lcykKLSAgICAgICAg
ZGF0YUxvZ0xuKGVudHJ5LmZpcnN0LCAiOiAiLCBlbnRyeS5zZWNvbmQubWlsbGlzZWNvbmRzKCks
ICIgbXMiKTsKLX0KLQotY2xhc3MgUGhhc2VUaW1lciB7Ci1wdWJsaWM6Ci0gICAgUGhhc2VUaW1l
cihjb25zdCBjaGFyKiBwaGFzZU5hbWUsIFBoYXNlVGltZXMmIHBoYXNlVGltZXMpCi0gICAgICAg
IDogbV9waGFzZVRpbWVzKHBoYXNlVGltZXMpCi0gICAgewotICAgICAgICBpZiAoZHVtcFBoYXNl
VGltZXMpIHsKLSAgICAgICAgICAgIG1fcGhhc2VOYW1lID0gcGhhc2VOYW1lOwotICAgICAgICAg
ICAgbV9zdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgflBoYXNlVGltZXIoKQotICAgIHsKLSAgICAgICAgaWYgKGR1bXBQaGFzZVRpbWVzKSB7Ci0g
ICAgICAgICAgICBhdXRvIHRvdGFsVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFy
dDsKLSAgICAgICAgICAgIG1fcGhhc2VUaW1lcy5hcHBlbmQoeyBtX3BoYXNlTmFtZSwgdG90YWxU
aW1lIH0pOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3BoYXNl
TmFtZTsKLSAgICBQaGFzZVRpbWVzJiBtX3BoYXNlVGltZXM7Ci0gICAgTW9ub3RvbmljVGltZSBt
X3N0YXJ0OwotfTsKLQotVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxl
KGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpCi17Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4NzIgV2Ugc2hvdWxkIGNvbnNpZGVyIG1v
dmluZyBhcyBtdWNoIHdvcmsgZnJvbSBwcmVwYXJlKCkgaW50byBoZXJlIGFzIHBvc3NpYmxlLgot
ICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4od2hsc2xTb3VyY2UpOwotfQot
Ci0jZGVmaW5lIENIRUNLX1BBU1MocGFzcywgLi4uKSBcCi0gICAgZG8geyBcCi0gICAgICAgIGR1
bXBBU1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGJlZm9yZSAiICMgcGFz
cyk7IFwKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCNwYXNzLCBwaGFzZVRpbWVzKTsg
XAotICAgICAgICBhdXRvIHJlc3VsdCA9IHBhc3MoX19WQV9BUkdTX18pOyBcCi0gICAgICAgIGlm
ICghcmVzdWx0KSB7IFwKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUpIFwKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCBwYXNzOiAiICMgcGFzcywgTGV4ZXI6OmVycm9y
U3RyaW5nKHJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOyBcCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHJlc3Vs
dC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOyBcCi0gICAgICAgIH0gXAot
ICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgUlVOX1BBU1MocGFzcywgLi4uKSBcCi0gICAgZG8g
eyBcCi0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigjcGFzcywgcGhhc2VUaW1lcyk7IFwK
LSAgICAgICAgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYmVm
b3JlICIgIyBwYXNzKTsgXAotICAgICAgICBwYXNzKF9fVkFfQVJHU19fKTsgXAotICAgIH0gd2hp
bGUgKDApCi0KLXN0YXRpYyBFeHBlY3RlZDxQcm9ncmFtLCBTdHJpbmc+IHByZXBhcmVTaGFyZWQo
UGhhc2VUaW1lcyYgcGhhc2VUaW1lcywgY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZTEsIGNvbnN0
IFN0cmluZyogd2hsc2xTb3VyY2UyID0gbnVsbHB0cikKLXsKLSAgICBQcm9ncmFtIHByb2dyYW07
Ci0gICAgUGFyc2VyIHBhcnNlcjsKLQotICAgIHsKLSAgICAgICAgcHJvZ3JhbS5uYW1lQ29udGV4
dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotCi0g
ICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicGFyc2UiLCBwaGFzZVRpbWVzKTsKLSAgICAg
ICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCB3aGxzbFNvdXJjZTEs
IFBhcnNpbmdNb2RlOjpVc2VyLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgICAg
IGlmICghcGFyc2VSZXN1bHQpIHsKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgdG8gcGFyc2UgdGhlIHByb2dyYW06ICIs
IExleGVyOjplcnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdo
bHNsU291cmNlMikpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjpl
cnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNl
MikpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGxzbFNvdXJjZTIpIHsKLSAgICAgICAgICAg
IHByb2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNl
OjpOYW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFy
c2UocHJvZ3JhbSwgKndobHNsU291cmNlMiwgUGFyc2luZ01vZGU6OlVzZXIsIEFTVDo6TmFtZVNw
YWNlOjpOYW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VSZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oImZhaWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6OmVycm9yU3RyaW5n
KHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhwYXJz
ZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50
TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5
IiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgIGluY2x1ZGVTdGFuZGFyZExpYnJhcnkocHJvZ3JhbSwg
cGFyc2VyLCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpOwotICAgIH0KLQotICAgIGlmICghZHVt
cEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYWZ0ZXIgcGFyc2luZyIp
KQotICAgICAgICBkdW1wQVNUQWZ0ZXJQYXJzaW5nSWZOZWVkZWQocHJvZ3JhbSk7Ci0KLSAgICBO
YW1lUmVzb2x2ZXIgbmFtZVJlc29sdmVyKHByb2dyYW0ubmFtZUNvbnRleHQoKSk7Ci0gICAgQ0hF
Q0tfUEFTUyhyZXNvbHZlTmFtZXNJblR5cGVzLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwotICAg
IENIRUNLX1BBU1MoY2hlY2tSZWN1cnNpdmVUeXBlcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFT
UyhzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMsIHByb2dyYW0pOwotICAgIENIRUNLX1BB
U1MocmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwot
ICAgIENIRUNLX1BBU1Moc3ludGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7Ci0gICAgQ0hF
Q0tfUEFTUyhjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0KLSAgICBDSEVDS19Q
QVNTKGNoZWNrLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhwcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zLCBwcm9ncmFtKTsKLQotICAgIFJVTl9QQVNTKGNoZWNrTGl0ZXJh
bFR5cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMs
IHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWZlcmVuY2VUeXBlcywgcHJvZ3JhbSk7
Ci0gICAgUlVOX1BBU1MocmVzb2x2ZVByb3BlcnRpZXMsIHByb2dyYW0pOwotICAgIFJVTl9QQVNT
KGZpbmRIaWdoWm9tYmllcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1N0YXRlbWVu
dEJlaGF2aW9yLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrUmVjdXJzaW9uLCBwcm9n
cmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrRnVuY3Rpb25TdGFnZXMsIHByb2dyYW0pOwotICAg
IFJVTl9QQVNTKHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMsIHByb2dyYW0pOwotCi0gICAgZHVt
cEFTVEF0RW5kSWZOZWVkZWQocHJvZ3JhbSk7Ci0KLSAgICByZXR1cm4gcHJvZ3JhbTsKLX0KLQot
RXhwZWN0ZWQ8UmVuZGVyUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRl
ck1vZHVsZSYgdmVydGV4U2hhZGVyTW9kdWxlLCBjb25zdCBTaGFkZXJNb2R1bGUqIGZyYWdtZW50
U2hhZGVyTW9kdWxlLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcikKLXsKLSAgICBQaGFzZVRpbWVzIHBoYXNlVGltZXM7Ci0gICAgTWV0YWw6OlJlbmRl
ck1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotCi0gICAgewotICAgICAgICBQaGFzZVRpbWVyIHBo
YXNlVGltZXIoInByZXBhcmUgdG90YWwiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgY29uc3QgU3Ry
aW5nKiBzZWNvbmRTaGFkZXIgPSBudWxscHRyOwotICAgICAgICBib29sIGRpc3RpbmN0RnJhZ21l
bnRTaGFkZXIgPSBmYWxzZTsKLSAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyTW9kdWxlICYmIGZy
YWdtZW50U2hhZGVyTW9kdWxlICE9ICZ2ZXJ0ZXhTaGFkZXJNb2R1bGUpIHsKLSAgICAgICAgICAg
IHNlY29uZFNoYWRlciA9ICZmcmFnbWVudFNoYWRlck1vZHVsZS0+d2hsc2xTb3VyY2U7Ci0gICAg
ICAgICAgICBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBhdXRvIHByb2dyYW0gPSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHZlcnRleFNoYWRlck1v
ZHVsZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVyKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtKQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7Ci0KLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaGVkU2VtYW50
aWNzOwotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoIm1hdGNo
U2VtYW50aWNzIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2VtYW50aWNzID0g
bWF0Y2hTZW1hbnRpY3MoKnByb2dyYW0sIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgZGlzdGlu
Y3RGcmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJNb2R1bGUpOwotICAgICAgICAgICAgaWYg
KCFtYXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBzZW1hbnRpY3MiX3N0
ciksIHZlcnRleFNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVyKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImdl
bmVyYXRlTWV0YWxDb2RlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBnZW5lcmF0ZWRDb2Rl
ID0gTWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlKCpwcm9ncmFtLCBXVEZNb3ZlKCptYXRjaGVkU2Vt
YW50aWNzKSwgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0gICAgUmVuZGVyUHJlcGFy
ZVJlc3VsdCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92ZShnZW5lcmF0
ZWRDb2RlLm1ldGFsU291cmNlKTsKLSAgICByZXN1bHQubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnRO
YW1lID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSk7
Ci0gICAgcmVzdWx0Lm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lID0gV1RGTW92ZShnZW5l
cmF0ZWRDb2RlLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1FeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJl
KGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKQotewotICAgIFBoYXNlVGltZXMgcGhhc2VU
aW1lczsKLSAgICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotICAgIHN0
ZDo6b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAg
ewotICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoInByZXBhcmUgdG90YWwiLCBwaGFzZVRp
bWVzKTsKLSAgICAgICAgYXV0byBwcm9ncmFtID0gcHJlcGFyZVNoYXJlZChwaGFzZVRpbWVzLCBz
aGFkZXJNb2R1bGUud2hsc2xTb3VyY2UpOwotICAgICAgICBpZiAoIXByb2dyYW0pCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQotICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaGVkU2VtYW50aWNzOwot
ICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoIm1hdGNoU2VtYW50
aWNzIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2VtYW50aWNzID0gbWF0Y2hT
ZW1hbnRpY3MoKnByb2dyYW0sIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotICAgICAgICAg
ICAgaWYgKCFtYXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBzZW1hbnRp
Y3MiX3N0ciksIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJjb21wdXRlRGltZW5zaW9u
cyIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSBXSExTTDo6
Y29tcHV0ZURpbWVuc2lvbnMoKnByb2dyYW0sICptYXRjaGVkU2VtYW50aWNzLT5zaGFkZXIpOwot
ICAgICAgICAgICAgaWYgKCFjb21wdXRlRGltZW5zaW9ucykKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yKCJDb3VsZCBub3QgbWF0
Y2ggY29tcHV0ZSBkaW1lbnNpb25zIl9zdHIpLCBzaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1l
cigiZ2VuZXJhdGVNZXRhbENvZGUiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIGdlbmVyYXRl
ZENvZGUgPSBNZXRhbDo6Z2VuZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1vdmUoKm1hdGNo
ZWRTZW1hbnRpY3MpLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0gICAgQ29tcHV0
ZVByZXBhcmVSZXN1bHQgcmVzdWx0OwotICAgIHJlc3VsdC5tZXRhbFNvdXJjZSA9IFdURk1vdmUo
Z2VuZXJhdGVkQ29kZS5tZXRhbFNvdXJjZSk7Ci0gICAgcmVzdWx0Lm1hbmdsZWRFbnRyeVBvaW50
TmFtZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tYW5nbGVkRW50cnlQb2ludE5hbWUpOwotICAg
IHJlc3VsdC5jb21wdXRlRGltZW5zaW9ucyA9IFdURk1vdmUoKmNvbXB1dGVEaW1lbnNpb25zKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDMzOWFiYjk0M2U4ZDhjYTgzZmY0ZjQxOTgz
M2IyMzg3NmNhNDNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgot
I2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8vIEhpZGUgdGhlIGNv
bnRlbnRzIG9mIHRoZSBTaGFkZXJNb2R1bGUuIENsaWVudHMgb2YgdGhlIGNvbXBpbGVyIHNob3Vs
ZG4ndCBjYXJlIHdoYXQncyBpbnNpZGUgaXQuCi1zdHJ1Y3QgU2hhZGVyTW9kdWxlOwotCi19Ci0K
LX0KLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRlZmF1bHRfZGVsZXRl
PFdlYkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoV2Vi
Q29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZSopIGNvbnN0OwotfTsKLQotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBib29sIGR1bXBNZXRh
bENvbXBpbGVUaW1lcyA9IGZhbHNlOwotCi1VbmlxdWVSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGVT
aGFkZXJNb2R1bGUoY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZSk7Ci0KLXN0cnVjdCBSZW5kZXJQ
cmVwYXJlUmVzdWx0IHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1ldGFs
OjpNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBN
ZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZTsK
LX07Ci1FeHBlY3RlZDxSZW5kZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3Qg
U2hhZGVyTW9kdWxlJiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGNvbnN0IFNoYWRlck1vZHVsZSogZnJh
Z21lbnRTaGFkZXJNb2R1bGUsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi1zdHJ1Y3Qg
Q29tcHV0ZURpbWVuc2lvbnMgewotICAgIHVuc2lnbmVkIHdpZHRoOwotICAgIHVuc2lnbmVkIGhl
aWdodDsKLSAgICB1bnNpZ25lZCBkZXB0aDsKLX07Ci0KLXN0cnVjdCBDb21wdXRlUHJlcGFyZVJl
c3VsdCB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6TWFuZ2xl
ZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci0gICAgQ29tcHV0ZURpbWVuc2lv
bnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotRXhwZWN0ZWQ8Q29tcHV0ZVByZXBhcmVSZXN1bHQs
IFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmLCBDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0
aW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ODlkMDdkODA4ODY0NGVmYWQ0NDUzNGE5MDZiM2E1NjMzYzQ5MDczLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xB
U1REdW1wZXIuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUgIldITFNMVmlz
aXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8v
IFRoaXMgcGFzcyB3b3JrcyBieSBlbnN1cmluZyBwcm9wZXIgdmFyaWFibGUgbGlmZXRpbWVzLiBJ
biBXSExTTCwgZWFjaCB2YXJpYWJsZQotLy8gaGFzIGdsb2JhbCBsaWZldGltZS4gU28gcmV0dXJu
aW5nIGEgcG9pbnRlciB0byBhIGxvY2FsIHZhcmlhYmxlIGlzIGEgdG90YWxseQotLy8gbGVnaXRp
bWF0ZSBhbmQgd2VsbC1zcGVjaWZpZWQgdGhpbmcgdG8gZG8uCi0vLwotLy8gV2UgaW1wbGVtZW50
IHRoaXMgYnk6Ci0vLyAtIFdlIG5vdGUgZXZlcnkgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyB3ZSB0
YWtlLgotLy8gLSBFYWNoIHN1Y2ggdmFyaWFibGUgZ2V0cyBkZWZpbmVkIGFzIGEgZmllbGQgaW4g
YSBzdHJ1Y3QuCi0vLyAtIEVhY2ggZnVuY3Rpb24gd2hpY2ggaXMgYW4gZW50cnkgcG9pbnQgZGVm
aW5lcyB0aGlzIHN0cnVjdC4KLS8vIC0gRWFjaCBub24gZW50cnkgcG9pbnQgdGFrZXMgYSBwb2lu
dGVyIHRvIHRoaXMgc3RydWN0IGFzIGl0cyBmaW5hbCBwYXJhbWV0ZXIuCi0vLyAtIEVhY2ggY2Fs
bCB0byBhIG5vbi1uYXRpdmUgZnVuY3Rpb24gaXMgcmV3cml0dGVuIHRvIHBhc3MgYSBwb2ludGVy
IHRvIHRoZQotLy8gICBzdHJ1Y3QgYXMgdGhlIGxhc3QgY2FsbCBhcmd1bWVudC4KLS8vIC0gRWFj
aCB2YXJpYWJsZSByZWZlcmVuY2UgdG8gIngiLCB3aGVyZSAieCIgZW5kcyB1cCBpbiB0aGUgc3Ry
dWN0LCBpcwotLy8gICBtb2RpZmllZCB0byBpbnN0ZWFkIGJlICJzdHJ1Y3QtPngiLiBXZSBzdG9y
ZSB0byAic3RydWN0LT54IiBhZnRlciBkZWNsYXJpbmcKLS8vICAgIngiLiBJZiAieCIgaXMgYSBm
dW5jdGlvbiBwYXJhbWV0ZXIsIHdlIHN0b3JlIHRvICJzdHJ1Y3QtPngiIGFzIHRoZSBmaXJzdAot
Ly8gICB0aGluZyB3ZSBkbyBpbiB0aGUgZnVuY3Rpb24gYm9keS4KLQotY2xhc3MgRXNjYXBlZFZh
cmlhYmxlQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotICAgIHVzaW5nIEJhc2Ug
PSBWaXNpdG9yOwotcHVibGljOgotCi0gICAgdm9pZCBlc2NhcGVWYXJpYWJsZVVzZShBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBpZiAoIWlzPEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXJlIHdl
IG1pc3NpbmcgYW55IGludGVyZXN0aW5nIHByb2R1Y3Rpb25zIGhlcmU/Ci0gICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzExCi0gICAgICAg
ICAgICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oZXhwcmVzc2lvbikudmFyaWFibGUoKTsKLSAgICAgICAgQVNTRVJUKHZhcmlhYmxl
KTsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHNraXAgdGhpcyBpZiB3ZSBtYXJrIGFsbCBp
bnRlcm5hbCB2YXJpYWJsZXMgd2l0aCBhIGJpdCwgc2luY2Ugd2UKLSAgICAgICAgLy8gbmV2ZXIg
bWFrZSBhbnkgaW50ZXJuYWwgdmFyaWFibGUgZXNjYXBlIHRoZSBjdXJyZW50IHNjb3BlIGl0IGlz
IGRlZmluZWQgaW46Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgzODMKLSAgICAgICAgbV9lc2NhcGVkVmFyaWFibGVzLmFkZCh2YXJpYWJsZSwg
bWFrZVN0cmluZygiXyIsIHZhcmlhYmxlLT5uYW1lKCksICJfIiwgbV9jb3VudCsrKSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50
ZXJFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1ha2VQb2ludGVyRXhw
cmVzc2lvbi5taWdodEVzY2FwZSgpKQotICAgICAgICAgICAgZXNjYXBlVmFyaWFibGVVc2UobWFr
ZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtYWtlQXJyYXlSZWZlcmVuY2VF
eHByZXNzaW9uLm1pZ2h0RXNjYXBlKCkpCi0gICAgICAgICAgICBlc2NhcGVWYXJpYWJsZVVzZSht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2Rl
KCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIEJhc2U6OnZp
c2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgSGFzaE1hcDxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24qLCBTdHJpbmc+IHRha2VFc2NhcGVkVmFyaWFibGVzKCkgeyByZXR1cm4g
V1RGTW92ZShtX2VzY2FwZWRWYXJpYWJsZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90IG1f
Y291bnQgeyAxIH07Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBTdHJp
bmc+IG1fZXNjYXBlZFZhcmlhYmxlczsKLX07Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIFRva2Vu
IGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIFRva2VuIHsg
eyB9LCB0eXBlIH07Ci19Ci0KLWNsYXNzIFByZXNlcnZlTGlmZXRpbWVzIDogcHVibGljIFZpc2l0
b3IgewotICAgIHVzaW5nIEJhc2UgPSBWaXNpdG9yOwotcHVibGljOgotICAgIFByZXNlcnZlTGlm
ZXRpbWVzKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+IHN0cnVjdFR5cGUsIGNvbnN0IEhhc2hNYXA8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Kj4mIHZhcmlh
YmxlTWFwcGluZykKLSAgICAgICAgOiBtX3N0cnVjdFR5cGUoV1RGTW92ZShzdHJ1Y3RUeXBlKSkK
LSAgICAgICAgLCBtX3BvaW50ZXJUb1N0cnVjdFR5cGUoQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRl
KGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSwgQVNUOjpBZGRyZXNzU3Bh
Y2U6OlRocmVhZCwgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSkpCi0gICAgICAgICwgbV92YXJpYWJs
ZU1hcHBpbmcodmFyaWFibGVNYXBwaW5nKQotICAgIHsgfQotCi0gICAgVW5pcXVlUmVmPEFTVDo6
VmFyaWFibGVSZWZlcmVuY2U+IG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewot
ICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKCptX3N0cnVj
dFZhcmlhYmxlKSk7Ci0gICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKCpt
X3N0cnVjdFZhcmlhYmxlLT50eXBlKCkpOwotICAgICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5j
ZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6
VGhyZWFkIH0pOwotICAgICAgICByZXR1cm4gc3RydWN0VmFyaWFibGVSZWZlcmVuY2U7Ci0gICAg
fQotCi0gICAgVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+IGFzc2lnblZhcmlh
YmxlSW50b1N0cnVjdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlLCBBU1Q6OlN0
cnVjdHVyZUVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBhdXRvIGxocyA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGUuY29kZUxvY2F0
aW9uKCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpLCBlbGVtZW50KTsKLSAgICAgICAg
bGhzLT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBsaHMtPnNldFR5cGVBbm5v
dGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQot
ICAgICAgICBhdXRvIHJocyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4o
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcCh2YXJpYWJsZSkpOwotICAgICAgICByaHMtPnNl
dFR5cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZUFubm90YXRpb24o
QVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAg
IGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lv
bj4odmFyaWFibGUuY29kZUxvY2F0aW9uKCksIFdURk1vdmUobGhzKSwgV1RGTW92ZShyaHMpKTsK
LSAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZSgqdmFyaWFibGUudHlwZSgpKTsKLSAgICAgICAg
YXNzaWdubWVudC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAg
ICAgIHJldHVybiBhc3NpZ25tZW50OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSA9PSBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGJvb2wgaXNF
bnRyeVBvaW50ID0gISFmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKTsKLSAgICAg
ICAgaWYgKGlzRW50cnlQb2ludCkgewotICAgICAgICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJsZURl
Y2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0
aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAg
ICAgICAgICAgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIpOwotCi0gICAgICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3
cmFwKHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIHN0cnVjdFZhcmlh
YmxlUmVmZXJlbmNlLT5zZXRUeXBlKG1fc3RydWN0VHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAg
ICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZh
bHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAgICAgICAgICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucyBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uczsKLSAgICAgICAg
ICAgIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHN0cnVjdFZhcmlh
YmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0RGVjbGFyYXRpb25TdGF0
ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+
KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJs
ZURlY2xhcmF0aW9ucykpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHBy
ZXNzaW9uPiBtYWtlUG9pbnRlckV4cHJlc3Npb24obmV3IEFTVDo6TWFrZVBvaW50ZXJFeHByZXNz
aW9uKGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJp
YWJsZVJlZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpKTsK
LSAgICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+c2V0VHlwZShtX3BvaW50ZXJUb1N0
cnVjdFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+
c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBhdXRv
IHBvaW50ZXJEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uPihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygp
LAotICAgICAgICAgICAgICAgIG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCksICJ3cmFw
cGVyIl9zLCBudWxscHRyLCBXVEZNb3ZlKG1ha2VQb2ludGVyRXhwcmVzc2lvbikpOwotICAgICAg
ICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0KLSAgICAgICAg
ICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25z
OwotICAgICAgICAgICAgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3Zl
KHBvaW50ZXJEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgYXV0byBwb2ludGVyRGVjbGFyYXRp
b25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShwb2ludGVy
VmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLQotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9u
LmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgwLCBXVEZNb3ZlKHN0cnVjdERlY2xhcmF0aW9u
U3RhdGVtZW50KSk7Ci0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0
ZW1lbnRzKCkuaW5zZXJ0KDEsIFdURk1vdmUocG9pbnRlckRlY2xhcmF0aW9uU3RhdGVtZW50KSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvbiA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihmdW5jdGlvbkRlZmluaXRp
b24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygpLAotICAgICAgICAgICAgICAgIG1f
cG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCksICJ3cmFwcGVyIl9zLCBudWxscHRyLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIG1fc3RydWN0VmFyaWFibGUgPSAmcG9pbnRlckRlY2xhcmF0aW9u
OwotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5hcHBlbmQoV1RG
TW92ZShwb2ludGVyRGVjbGFyYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIEJhc2U6OnZp
c2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIg
OiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgICAgICBhdXRvIGl0
ZXIgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKCZwYXJhbWV0ZXIpOwotICAgICAgICAgICAgaWYg
KGl0ZXIgPT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMo
KS5pbnNlcnQoaXNFbnRyeVBvaW50ID8gMiA6IDAsCi0gICAgICAgICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KGFzc2lnblZhcmlhYmxlSW50
b1N0cnVjdChwYXJhbWV0ZXIsIGl0ZXItPnZhbHVlKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gSW5uZXIgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBXSExTTC4gU28gdGhpcyBpcyBm
aW5lLgotICAgICAgICBtX3N0cnVjdFZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0KLSAgICAg
ICAgQmFzZTo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotCi0gICAgICAgIC8vIFRoaXMgd29ya3Mg
YmVjYXVzZSBpdCdzIGlsbGVnYWwgdG8gY2FsbCBhbiBlbnRyeXBvaW50LiBUaGVyZWZvcmUsIHdl
IGNhbiBvbmx5Ci0gICAgICAgIC8vIGNhbGwgZnVuY3Rpb25zIHdoZXJlIHdlJ3ZlIGFscmVhZHkg
YXBwZW5kZWQgdGhpcyBzdHJ1Y3QgYXMgaXRzIGZpbmFsIHBhcmFtZXRlci4KLSAgICAgICAgaWYg
KCFjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpLmlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigp
ICYmIGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9k
ZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uYXJndW1lbnRz
KCkuYXBwZW5kKG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0K
LSAgICAgICAgYXV0byBpdGVyID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVy
ZW5jZS52YXJpYWJsZSgpKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gbV92YXJpYWJsZU1hcHBpbmcu
ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5
cGU+IHR5cGUgPSAqdmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKS0+dHlwZSgpOwotICAgICAg
ICBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gdmFyaWFibGVSZWZlcmVuY2Uu
dHlwZUFubm90YXRpb24oKTsKLSAgICAgICAgYXV0byogaW50ZXJuYWxGaWVsZCA9IEFTVDo6cmVw
bGFjZVdpdGg8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGVSZWZlcmVuY2Us
IHZhcmlhYmxlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpLCBtYWtlU3RydWN0VmFyaWFibGVSZWZl
cmVuY2UoKSwgaXRlci0+dmFsdWUpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5zZXRUeXBlKFdU
Rk1vdmUodHlwZSkpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5zZXRUeXBlQW5ub3RhdGlvbihX
VEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RydWN0VmFyaWFi
bGUpOwotCi0gICAgICAgIEJhc2U6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
KTsKLQotICAgICAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKLSAgICAgICAgZm9yIChV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiYgdmFyaWFibGVEZWNsYXJhdGlvbiA6
IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRpb25zKCkpIHsK
LSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGUgPSB2YXJpYWJs
ZURlY2xhcmF0aW9uLmdldCgpOwotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9ucyBkZWNsYXJhdGlvbnM7Ci0gICAgICAgICAgICAgICAgZGVj
bGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQ+KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKGRlY2xh
cmF0aW9ucykpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBpdGVyID0gbV92
YXJpYWJsZU1hcHBpbmcuZmluZCgmdmFyaWFibGUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0g
bV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgc3RhdGVtZW50cy5hcHBl
bmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KGFzc2ln
blZhcmlhYmxlSW50b1N0cnVjdCh2YXJpYWJsZSwgaXRlci0+dmFsdWUpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6U3RhdGVtZW50TGlzdD4odmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmNvZGVM
b2NhdGlvbigpLCBXVEZNb3ZlKHN0YXRlbWVudHMpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBtX3N0cnVjdFZhcmlhYmxlIHsgbnVsbHB0ciB9Owot
Ci0gICAgUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV9zdHJ1Y3RUeXBlOwotICAgIFJlZjxBU1Q6
OlBvaW50ZXJUeXBlPiBtX3BvaW50ZXJUb1N0cnVjdFR5cGU7Ci0gICAgLy8gSWYgdGhpcyBtYXBw
aW5nIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSwgaXQgbWVhbnMgdGhhdCB0aGUgdmFyaWFibGUncyBj
YW5vbmljYWwgbG9jYXRpb24KLSAgICAvLyBpcyBpbiB0aGUgc3RydWN0IHdlIHVzZSB0byBwcmVz
ZXJ2ZSB2YXJpYWJsZSBsaWZldGltZXMuCi0gICAgY29uc3QgSGFzaE1hcDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgbV92YXJpYWJsZU1hcHBpbmc7
Ci19OwotCi12b2lkIHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMoUHJvZ3JhbSYgcHJvZ3JhbSkK
LXsKLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gZXNjYXBl
ZFZhcmlhYmxlczsKLSAgICB7Ci0gICAgICAgIEVzY2FwZWRWYXJpYWJsZUNvbGxlY3RvciBjb2xs
ZWN0b3I7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRl
ZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBjb2xsZWN0b3IudmlzaXQocHJv
Z3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgICAgICBlc2NhcGVkVmFyaWFibGVz
ID0gY29sbGVjdG9yLnRha2VFc2NhcGVkVmFyaWFibGVzKCk7Ci0gICAgfQotCi0gICAgQVNUOjpT
dHJ1Y3R1cmVFbGVtZW50cyBlbGVtZW50czsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBlc2NhcGVk
VmFyaWFibGVzKSB7Ci0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gcGFpci5rZXk7Ci0gICAgICAg
IFN0cmluZyBuYW1lID0gcGFpci52YWx1ZTsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKEFTVDo6
U3RydWN0dXJlRWxlbWVudCB7IHZhcmlhYmxlLT5jb2RlTG9jYXRpb24oKSwgeyB9LCAqdmFyaWFi
bGUtPnR5cGUoKSwgV1RGTW92ZShuYW1lKSwgbnVsbHB0ciB9KTsKLSAgICB9Ci0KLSAgICAvLyBO
YW1lIG9mIHRoaXMgZG9lc24ndCBtYXR0ZXIsIHNpbmNlIHdlIGRvbid0IHVzZSBzdHJ1Y3QgbmFt
ZXMgd2hlbgotICAgIC8vIGdlbmVyYXRpbmcgTWV0YWwgdHlwZSBuYW1lcy4gV2UganVzdCBwaWNr
IHNvbWV0aGluZyBoZXJlIHRvIG1ha2UgaXQKLSAgICAvLyBlYXN5IHRvIHJlYWQgaW4gQVNUIGR1
bXBzLgotICAgIGF1dG8gd3JhcHBlclN0cnVjdERlZmluaXRpb24gPSBtYWtlVW5pcXVlUmVmPEFT
VDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6OlN0cnVj
dCksICJfX1dyYXBwZXJTdHJ1Y3RfXyJfcywgV1RGTW92ZShlbGVtZW50cykpOwotCi0gICAgSGFz
aE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiB2
YXJpYWJsZU1hcHBpbmc7Ci0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvciAoYXV0byYg
cGFpciA6IGVzY2FwZWRWYXJpYWJsZXMpCi0gICAgICAgIHZhcmlhYmxlTWFwcGluZy5hZGQocGFp
ci5rZXksICZ3cmFwcGVyU3RydWN0RGVmaW5pdGlvbi0+c3RydWN0dXJlRWxlbWVudHMoKVtpbmRl
eCsrXSk7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gd3JhcHBlclN0cnVjdFR5cGUgPSBBU1Q6OlR5
cGVSZWZlcmVuY2U6OndyYXAoYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6OklkZW50aWZpZXIp
LCB3cmFwcGVyU3RydWN0RGVmaW5pdGlvbik7Ci0gICAgICAgIFByZXNlcnZlTGlmZXRpbWVzIHBy
ZXNlcnZlTGlmZXRpbWVzKFdURk1vdmUod3JhcHBlclN0cnVjdFR5cGUpLCB2YXJpYWJsZU1hcHBp
bmcpOwotICAgICAgICBwcmVzZXJ2ZUxpZmV0aW1lcy5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsK
LSAgICB9Ci0KLSAgICBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuYXBwZW5kKFdURk1v
dmUod3JhcHBlclN0cnVjdERlZmluaXRpb24pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGE2NGY3YTI4YmE4NGNmZDBlNDY3ODEwMTk5ZWQwYWMzOTc0MGJk
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGlt
ZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIHByZXNlcnZl
VmFyaWFibGVMaWZldGltZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcm9ncmFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMWEy
ZTJjMDM4NzI1NWQ1N2YwOWJhNGQxZTkyYWFmZjRlNGVlZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcm9ncmFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVy
cm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IFByb2dyYW0gewotcHVibGljOgotICAgIFByb2dyYW0oKSA9IGRlZmF1bHQ7Ci0gICAgUHJvZ3Jh
bShQcm9ncmFtJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBl
bmQoQVNUOjpUeXBlRGVmaW5pdGlvbiYmIHR5cGVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAg
bV90eXBlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlv
bj4oV1RGTW92ZSh0eXBlRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRl
eHQuYWRkKG1fdHlwZURlZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8
dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mJiBzdHJ1Y3R1cmVE
ZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmVEZWZpbml0aW9ucy5hcHBlbmQo
bWFrZVVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KFdURk1vdmUoc3RydWN0dXJl
RGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fc3RydWN0
dXJlRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gYXBwZW5kKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiYgZW51bWVyYXRpb25EZWZpbml0
aW9uKQotICAgIHsKLSAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtl
VW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihXVEZNb3ZlKGVudW1lcmF0aW9u
RGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fZW51bWVy
YXRpb25EZWZpbml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBhcHBlbmQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mJiBmdW5jdGlvbkRlZmluaXRpb24p
Ci0gICAgewotICAgICAgICBtX2Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVS
ZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZnVuY3Rpb25EZWZpbml0aW9uKSkp
OwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9mdW5jdGlvbkRlZmluaXRpb25z
Lmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQot
ICAgIHsKLSAgICAgICAgbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5hcHBlbmQobWFrZVVu
aXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KFdURk1vdmUobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0
LmFkZChtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAg
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYm
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fbmF0aXZlVHlwZURlY2xh
cmF0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
V1RGTW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKSk7Ci0gICAgICAgIG1faW50cmluc2ljcy5h
ZGQobV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJldHVybiBtX25h
bWVDb250ZXh0LmFkZChtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0K
LSAgICBib29sIGlzVmFsaWRWZWN0b3JQcm9wZXJ0eShTdHJpbmcpOwotCi0gICAgTmFtZUNvbnRl
eHQmIG5hbWVDb250ZXh0KCkgeyByZXR1cm4gbV9uYW1lQ29udGV4dDsgfQotICAgIEludHJpbnNp
Y3MmIGludHJpbnNpY3MoKSB7IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBjb25zdCBJbnRy
aW5zaWNzJiBpbnRyaW5zaWNzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNzOyB9Ci0gICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4mIHR5cGVEZWZpbml0aW9ucygp
IHsgcmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24+PiYgc3RydWN0dXJlRGVmaW5pdGlvbnMoKSB7IHJldHVybiBt
X3N0cnVjdHVyZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbj4+JiBlbnVtZXJhdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9l
bnVtZXJhdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5j
dGlvbkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9Ci0gICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9Ci0g
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4+JiBuYXRpdmVU
eXBlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOyB9Ci0K
LXByaXZhdGU6Ci0gICAgTmFtZUNvbnRleHQgbV9uYW1lQ29udGV4dDsKLSAgICBJbnRyaW5zaWNz
IG1faW50cmluc2ljczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+
PiBtX3R5cGVEZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4+IG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+IG1fZW51bWVyYXRpb25EZWZpbml0aW9uczsK
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gbV9mdW5jdGlv
bkRlZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uPj4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsKLSAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4gbV9uYXRpdmVUeXBlRGVjbGFyYXRp
b25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMGZhMGI5OWU4YTUzYjkwYTMy
NTc0MTJhZGVmNGI0OWNhYzhkM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9w
ZXJ0eVJlc29sdmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlSZXNvbHZl
ci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1Qu
aCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlcGxhY2VXaXRo
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvcGVydHlSZXNvbHZlciA6IHB1YmxpYyBWaXNp
dG9yIHsKLSAgICB2b2lkIGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UoVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4gYmFzZSwgVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mIHNsb3QsIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4mIGV4cHJlc3Npb25zKQotICAgIHsKLSAgICAgICAg
aWYgKCFiYXNlLT5tYXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICBzbG90ID0gV1RGTW92
ZShiYXNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8g
bGVmdEFkZHJlc3NTcGFjZSA9IGJhc2UtPnR5cGVBbm5vdGF0aW9uKCkubGVmdEFkZHJlc3NTcGFj
ZSgpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChsZWZ0QWRkcmVzc1NwYWNlKTsKLSAgICAgICAg
Q29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiA9IGJhc2UtPmNvZGVMb2NhdGlvbigpOwotICAgICAg
ICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBiYXNlLT5yZXNvbHZlZFR5cGUoKTsK
LSAgICAgICAgUmVmPEFTVDo6UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlID0gQVNUOjpQb2ludGVy
VHlwZTo6Y3JlYXRlKGNvZGVMb2NhdGlvbiwgKmxlZnRBZGRyZXNzU3BhY2UsIGJhc2VUeXBlLmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4g
cG9pbnRlclZhcmlhYmxlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+
KGNvZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgcG9pbnRlclR5cGUucHRyKCksIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJl
ZmVyZW5jZSA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJlbmNlID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
Ojp3cmFwKHBvaW50ZXJWYXJpYWJsZSkpOwotICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlUmVm
ZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1Nw
YWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBwb2ludGVyT2ZCYXNlID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBX
VEZNb3ZlKGJhc2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKTsKLSAg
ICAgICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsK
LSAgICAgICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRW
YWx1ZSgpKTsKLQotICAgICAgICAgICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIG1ha2VWYXJpYWJsZVJlZmVy
ZW5jZSgpLCBXVEZNb3ZlKHBvaW50ZXJPZkJhc2UpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQt
PnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQt
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgZXhw
cmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgewotICAgICAgICAgICAgYXV0byBkZXJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpE
ZXJlZmVyZW5jZUV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNl
KCkpOwotICAgICAgICAgICAgZGVyZWZlcmVuY2UtPnNldFR5cGUoYmFzZVR5cGUuY29weVJlZigp
KTsKLSAgICAgICAgICAgIGRlcmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRW
YWx1ZSB7ICpsZWZ0QWRkcmVzc1NwYWNlIH0pOwotCi0gICAgICAgICAgICBzbG90ID0gV1RGTW92
ZShkZXJlZmVyZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQo
V1RGTW92ZShwb2ludGVyVmFyaWFibGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGhhbmRsZVByb3Bl
cnR5QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzcywg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiYgZXhwcmVzc2lvbnMpCi0gICAgewot
ICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiogY3VycmVudFB0ciA9ICZwcm9w
ZXJ0eUFjY2VzczsKLSAgICAgICAgLy8gYS5iW2NdLmQgd2lsbCBnbyBpbnRvIHRoaXMgYXJyYXkg
YXMgWy5kLCBbY10sIC5iXQotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4+IGNoYWluOwotCi0gICAgICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgY3VycmVu
dCA9ICpjdXJyZW50UHRyOwotICAgICAgICAgICAgY2hhaW4uYXBwZW5kKGN1cnJlbnQpOwotICAg
ICAgICAgICAgaWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihjdXJyZW50KSkKLSAgICAgICAg
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+
KGN1cnJlbnQpLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgICAgIGlmICghaXM8QVNUOjpQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGN1cnJlbnRQdHIgPSAmZG93bmNhc3Q8QVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1cnJlbnRQdHI7Ci0K
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGN1cnJlbnQuYmFzZSgpKTsKLQotICAgICAgICBD
b2RlTG9jYXRpb24gYmFzZUNvZGVMb2NhdGlvbiA9IGN1cnJlbnQuYmFzZSgpLmNvZGVMb2NhdGlv
bigpOwotICAgICAgICAKLSAgICAgICAgaWYgKGN1cnJlbnQuYmFzZSgpLnR5cGVBbm5vdGF0aW9u
KCkuaXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+IGNvcHkgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4oYmFzZUNvZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgJmN1cnJlbnQuYmFzZSgp
LnJlc29sdmVkVHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBjdXJyZW50LmJhc2UoKS5yZXNvbHZl
ZFR5cGUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYXV0byBtYWtlVmFyaWFibGVSZWZl
cmVuY2UgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U6OndyYXAoY29weSkpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRU
eXBlKGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVu
Y2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6
OlRocmVhZCB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0g
ICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24sIG1ha2VWYXJp
YWJsZVJlZmVyZW5jZSgpLCBjdXJyZW50LnRha2VCYXNlKCkpOwotICAgICAgICAgICAgYXNzaWdu
bWVudC0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgYXNzaWdubWVu
dC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBl
eHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGN1cnJlbnQuYmFzZVJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxlUmVmZXJlbmNl
KCk7Ci0KLSAgICAgICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKGNvcHkpKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBoYW5kbGVMZWZ0SGFuZFNpZGVCYXNlKGN1cnJlbnQu
dGFrZUJhc2UoKSwgY3VycmVudC5iYXNlUmVmZXJlbmNlKCksIGV4cHJlc3Npb25zKTsKLQotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gY2hhaW4uc2l6ZSgpOyBpLS07ICkgewotICAgICAgICAgICAg
YXV0byYgYWNjZXNzID0gY2hhaW5baV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpJ
bmRleEV4cHJlc3Npb24+KGFjY2VzcykgJiYgZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+
KGFjY2VzcykuaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNz
aW9uPihhY2Nlc3MpOwotCi0gICAgICAgICAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IGlu
ZGV4VHlwZSA9IGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKS5yZXNvbHZlZFR5cGUo
KTsKLQotICAgICAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+
IGluZGV4VmFyaWFibGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
YWNjZXNzLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCBpbmRleFR5cGUucHRy
KCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICAgICAgICAgIGF1dG8g
bWFrZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB2
YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4o
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChpbmRleFZhcmlhYmxlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKGluZGV4VHlwZS5jb3B5UmVmKCkp
OwotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRp
b24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhc3NpZ25t
ZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihiYXNlQ29kZUxv
Y2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSwgaW5kZXhFeHByZXNzaW9uLnRha2VJbmRl
eCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZShpbmRleFR5cGUu
Y29weVJlZigpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZUFubm90
YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b25zLmFwcGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpbmRleEV4cHJlc3Npb24uaW5kZXhSZWZlcmVuY2UoKSA9IG1ha2VWYXJp
YWJsZVJlZmVyZW5jZSgpOwotCi0gICAgICAgICAgICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdU
Rk1vdmUoaW5kZXhWYXJpYWJsZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgdm9pZCBoYW5kbGVQcm9wZXJ0eUFjY2VzcyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYgcHJvcGVydHlBY2Nlc3MpCi0gICAgewotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwotCi0gICAgICAgIGhhbmRsZVByb3BlcnR5QWNj
ZXNzKHByb3BlcnR5QWNjZXNzLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5u
YW1lZFR5cGU+IGFjY2Vzc1R5cGUgPSBwcm9wZXJ0eUFjY2Vzcy5yZXNvbHZlZFR5cGUoKTsKLQot
ICAgICAgICBBU1Q6OkNvbW1hRXhwcmVzc2lvbiogY29tbWE7Ci0gICAgICAgIENvZGVMb2NhdGlv
biBjb2RlTG9jYXRpb24gPSBwcm9wZXJ0eUFjY2Vzcy5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAg
aWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2VzcykpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9u
Pihwcm9wZXJ0eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3SW5kZXhFeHByZXNzaW9u
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBpbmRl
eEV4cHJlc3Npb24udGFrZUJhc2UoKSwgaW5kZXhFeHByZXNzaW9uLnRha2VJbmRleCgpKTsKLSAg
ICAgICAgICAgIG5ld0luZGV4RXhwcmVzc2lvbi0+c2V0VHlwZShpbmRleEV4cHJlc3Npb24ucmVz
b2x2ZWRUeXBlKCkpOwotICAgICAgICAgICAgbmV3SW5kZXhFeHByZXNzaW9uLT5zZXRUeXBlQW5u
b3RhdGlvbihBU1Q6OlR5cGVBbm5vdGF0aW9uKGluZGV4RXhwcmVzc2lvbi50eXBlQW5ub3RhdGlv
bigpKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld0luZGV4
RXhwcmVzc2lvbikpOwotCi0gICAgICAgICAgICBjb21tYSA9IEFTVDo6cmVwbGFjZVdpdGg8QVNU
OjpDb21tYUV4cHJlc3Npb24+KGluZGV4RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9uLCBXVEZNb3Zl
KGV4cHJlc3Npb25zKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpczxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKSk7Ci0gICAgICAgICAg
ICBhdXRvJiBkb3RFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihwcm9w
ZXJ0eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3RG90RXhwcmVzc2lvbiA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGRvdEV4cHJlc3Npb24u
dGFrZUJhc2UoKSwgU3RyaW5nKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKTsKLSAgICAgICAg
ICAgIG5ld0RvdEV4cHJlc3Npb24tPnNldFR5cGUoZG90RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgICAgICAgICBuZXdEb3RFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6
OlR5cGVBbm5vdGF0aW9uKGRvdEV4cHJlc3Npb24udHlwZUFubm90YXRpb24oKSkpOwotCi0gICAg
ICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdEb3RFeHByZXNzaW9uKSk7Ci0K
LSAgICAgICAgICAgIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1hRXhwcmVzc2lv
bj4oZG90RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKGFjY2Vzc1R5cGUpKTsK
LSAgICAgICAgY29tbWEtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAg
ICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhw
cmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhhbmRsZVByb3BlcnR5QWNjZXNzKGRv
dEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Np
b24mIGluZGV4RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhhbmRsZVByb3Bl
cnR5QWNjZXNzKGluZGV4RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVF
eHByZXNzaW9uKCkpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRl
LnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+PiBleHByZXNzaW9uczsKLQotICAgICAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0
aW9uID0gcmVhZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpOwotCi0gICAgICAgIFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiB0eXBlID0gcmVhZE1vZGlmeVdyaXRlLnJlc29sdmVkVHlwZSgpOwotCi0g
ICAgICAgIGlmIChpczxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdy
aXRlLmxlZnRWYWx1ZSgpKSkKLSAgICAgICAgICAgIGhhbmRsZVByb3BlcnR5QWNjZXNzKGRvd25j
YXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUubGVmdFZh
bHVlKCkpLCBleHByZXNzaW9ucyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhbmRsZUxl
ZnRIYW5kU2lkZUJhc2UocmVhZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwgcmVhZE1vZGlm
eVdyaXRlLmxlZnRWYWx1ZVJlZmVyZW5jZSgpLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgewot
ICAgICAgICAgICAgVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4gbmV3
UmVhZE1vZGlmeVdyaXRlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24+KAotICAgICAgICAgICAgICAgIHJlYWRNb2RpZnlXcml0ZS5jb2RlTG9jYXRpb24oKSwg
cmVhZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwgcmVhZE1vZGlmeVdyaXRlLnRha2VPbGRW
YWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1ZhbHVlKCkpOwotICAgICAgICAgICAgbmV3
UmVhZE1vZGlmeVdyaXRlLT5zZXROZXdWYWx1ZUV4cHJlc3Npb24ocmVhZE1vZGlmeVdyaXRlLnRh
a2VOZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUt
PnNldFJlc3VsdEV4cHJlc3Npb24ocmVhZE1vZGlmeVdyaXRlLnRha2VSZXN1bHRFeHByZXNzaW9u
KCkpOwotICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRUeXBlKHR5cGUuY29weVJl
ZigpKTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0VHlwZUFubm90YXRpb24o
QVNUOjpUeXBlQW5ub3RhdGlvbihyZWFkTW9kaWZ5V3JpdGUudHlwZUFubm90YXRpb24oKSkpOwot
Ci0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdSZWFkTW9kaWZ5V3Jp
dGUpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8qIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0
aDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRlLCBjb2RlTG9jYXRpb24sIFdU
Rk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgY29tbWEtPnNldFR5cGUoV1RGTW92ZSh0eXBl
KSk7Ci0gICAgICAgIGNvbW1hLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rp
b25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92
YXJpYWJsZXMuaXNFbXB0eSgpKTsKLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0K
LSAgICAgICAgaWYgKCFtX3ZhcmlhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZ1bmN0
aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMCwgCi0gICAgICAgICAg
ICAgICAgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Pihm
dW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShtX3Zhcmlh
YmxlcykpKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zIG1fdmFyaWFibGVzOwotfTsKLQotdm9pZCByZXNvbHZlUHJvcGVydGllcyhQ
cm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZSBnb2FsIG9mIHRoaXMgcGhhc2UgaXMgdHdv
IGFsbG93IHR3byB0aGluZ3M6Ci0gICAgLy8gMS4gRm9yIHByb3BlcnR5IGFjY2VzcyBleHByZXNz
aW9ucywgbWV0YWwgY29kZWdlbiBzaG91bGQgYmUgYWxsb3dlZCB0byBldmFsdWF0ZQotICAgIC8v
IHRoZSBiYXNlLCBhbmQgaWYgaXQncyBhbiBpbmRleCBleHByZXNzaW9uLCB0aGUgaW5kZXgsIGFz
IG1hbnkgdGltZXMgYXMgbmVlZGVkLgotICAgIC8vIFNvIHRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0
IGlmIE1ldGFsIGV2YWx1YXRlcyBzdWNoIHRoaW5ncywgZWZmZWN0cyBhcmVuJ3QgcGVyZm9ybWVk
Ci0gICAgLy8gbW9yZSB0aGFuIG9uY2UuCi0gICAgLy8KLSAgICAvLyAyLiBGb3IgUmVhZE1vZGlm
eVdyaXRlIGV4cHJlc3Npb25zLCBtZXRhbCBjb2RlZ2VuIHNob3VsZCBiZSBhYmxlIHRvIGV2YWx1
YXRlIHRoZQotICAgIC8vIGxlZnRWYWx1ZUV4cHJlc3Npb24gYXMgbWFueSB0aW1lcyBhcyBpdCdk
IGxpa2Ugd2l0aG91dCBwZXJmb3JtaW5nIHRoZSBlZmZlY3RzIG9mCi0gICAgLy8gbGVmdFZhbHVl
RXhwcmVzc2lvbiBtb3JlIHRoYW4gb25jZS4KLSAgICAvLwotICAgIC8vIFdlIGRvIHRoZXNlIHRo
aW5ncyBiZWNhdXNlIGl0J3MgY29udmVuaWVudCBmb3IgbWV0YWwgY29kZWdlbiB0byBiZSBhYmxl
IHRvIHJlbHkgb24KLSAgICAvLyB0aGlzIHdpdGggdGhlIHdheSBpdCBzdHJ1Y3R1cmVzIHRoZSBn
ZW5lcmF0ZWQgY29kZS4KLSAgICBQcm9wZXJ0eVJlc29sdmVyIHJlc29sdmVyOwotICAgIGZvciAo
YXV0byYgZnVuY3Rpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAg
cmVzb2x2ZXIudmlzaXQoZnVuY3Rpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
b3BlcnR5UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJvcGVydHlSZXNvbHZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmVk
YWE0ZThkOGI1MDZhMzZhZmYxYjIwYThlMzhhODYzOTg4N2YxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IFByb2dyYW07Ci0KLXZvaWQgcmVzb2x2ZVByb3BlcnRpZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTE2NTc5YzM2MDc1M2ZiYmJjZThmOGRlYzY1ZGJj
YzI1YjFiNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIgotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFBy
b2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBSZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMg
ZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25zLmFkZCgmZnVuY3Rpb24pOwotICAgICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChm
dW5jdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBj
YWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNh
bGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihj
YWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSk7Ci0gICAg
fQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IHRha2VSZWFjaGFibGVG
dW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVuY3Rpb25zKTsgfQotCi1w
cml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX3JlYWNoYWJs
ZUZ1bmN0aW9uczsKLX07Ci0KLXZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1
bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9u
cyByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbj4+IGZ1bmN0aW9uRGVmaW5pdGlvbnMgPSBXVEZNb3ZlKHByb2dyYW0u
ZnVuY3Rpb25EZWZpbml0aW9ucygpKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rp
b25EZWZpbml0aW9ucykgewotICAgICAgICBpZiAoZnVuY3Rpb24tPnBhcnNpbmdNb2RlKCkgIT0g
UGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIHJlYWNoYWJsZVN0ZGxp
YkZ1bmN0aW9ucy52aXNpdChmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbi0+ZW50cnlQb2ludFR5cGUoKSk7Ci0gICAgfQot
Ci0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMu
dGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24+PiBuZXdGdW5jdGlvbkRlZmluaXRpb25zOwotICAgIGZvciAoVW5pcXVl
UmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPiYgZW50cnkgOiBmdW5jdGlvbkRlZmluaXRpb25z
KSB7Ci0gICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmVudHJ5LmdldCgp
KSkKLSAgICAgICAgICAgIG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKFdURk1vdmUoZW50
cnkpKTsKLSAgICB9Ci0KLSAgICBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSA9IFdURk1v
dmUobmV3RnVuY3Rpb25EZWZpbml0aW9ucyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Yzg0Njk3NWVi
NjNhODE4ZTQ4ZjlmODkwNWMwYWNjMzdmZDM2YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBlZTEyNDY4MGFiYmZiYWU2NTgyNzRmYjliY2E2MmYzY2JhODc3
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gTWFrZXMgc3Vy
ZSB0aGVyZSBpcyBubyBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBSZWN1cnNpb25DaGVja2Vy
IGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KFByb2dy
YW0mIHByb2dyYW0pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
RGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5jb250YWlucygmZnVu
Y3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fc3RhcnRlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAg
ICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkNhbm5vdCB1c2UgcmVjdXJzaW9uIGluIHRoZSBjYWxsIGdyYXBoLiIsIGZ1bmN0aW9u
RGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpICE9IFBh
cnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChm
dW5jdGlvbkRlZmluaXRpb24pOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9maW5pc2hlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNh
bGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2Fs
bEV4cHJlc3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNh
bGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpKSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1f
c3RhcnRlZFZpc2l0aW5nOwotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBt
X2ZpbmlzaGVkVmlzaXRpbmc7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWN1
cnNpb24oUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBSZWN1cnNpb25DaGVja2VyIHJlY3Vyc2lv
bkNoZWNrZXI7Ci0gICAgcmVjdXJzaW9uQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsK
LSAgICByZXR1cm4gcmVjdXJzaW9uQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDdhYzI1MGU0YmM1NGIwYWI5MTkxNWQxZWYyMDg1
NjM1M2VlNmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBjaGVja1JlY3Vyc2lvbihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxYzUwN2FjNTY4MDEzZmU5MzJmYzA1YTJjNTI2
OGY0OTY5ZWU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVD
aGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNp
bmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFJlY3Vyc2l2ZVR5
cGVDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNU
OjpUeXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVu
Y2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpIG92ZXJy
aWRlOwotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpUeXBlKj4gbV9zdGFydGVkVmlzaXRp
bmc7Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGUqPiBtX2ZpbmlzaGVkVmlzaXRpbmc7Ci19OwotCi0j
ZGVmaW5lIFNUQVJUX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGlmIChtX2ZpbmlzaGVkVmlz
aXRpbmcuY29udGFpbnModCkpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgYXV0byByZXN1bHRT
dGFydGVkVmlzaXRpbmcgPSBtX3N0YXJ0ZWRWaXNpdGluZy5hZGQodCk7IFwKLSAgICBpZiAoIXJl
c3VsdFN0YXJ0ZWRWaXNpdGluZy5pc05ld0VudHJ5KSB7IFwKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCBkZWNsYXJlIHJlY3Vyc2l2ZSB0eXBlcy4iLCAodCktPmNvZGVMb2NhdGlvbigp
KSk7IFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgfSBcCi19IHdoaWxlIChmYWxzZSk7Ci0KLSNk
ZWZpbmUgRU5EX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGF1dG8gcmVzdWx0RmluaXNoZWRW
aXNpdGluZyA9IG1fZmluaXNoZWRWaXNpdGluZy5hZGQodCk7IFwKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcsIHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcuaXNOZXdFbnRy
eSk7IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlz
aXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgU1RBUlRfVklT
SVRJTkcoJnR5cGVEZWZpbml0aW9uKTsKLQotICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVEZWZpbml0
aW9uKTsKLQotICAgIEVORF9WSVNJVElORygmdHlwZURlZmluaXRpb24pOwotfQotCi12b2lkIFJl
Y3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVj
dHVyZURlZmluaXRpb24pCi17Ci0gICAgU1RBUlRfVklTSVRJTkcoJnN0cnVjdHVyZURlZmluaXRp
b24pOwotCi0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0KLSAgICBF
TkRfVklTSVRJTkcoJnN0cnVjdHVyZURlZmluaXRpb24pOwotfQotCi12b2lkIFJlY3Vyc2l2ZVR5
cGVDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0g
ICAgU1RBUlRfVklTSVRJTkcoJnR5cGVSZWZlcmVuY2UpOwotCi0gICAgZm9yIChhdXRvJiB0eXBl
QXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5YmVS
ZXNvbHZlZFR5cGUoKSkgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgxNjEgU2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIgdGhlIHR5cGUg
aGFzIGJlZW4gcmVzb2x2ZWQgb3Igbm90PwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlw
ZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0KLSAgICBFTkRfVklTSVRJTkcoJnR5cGVSZWZl
cmVuY2UpOwotfQotCi12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlJlZmVy
ZW5jZVR5cGUmKQotewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWN1cnNpdmVU
eXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlY3Vyc2l2ZVR5cGVDaGVja2VyIHJlY3Vy
c2l2ZVR5cGVDaGVja2VyOwotICAgIGZvciAoYXV0byYgdHlwZURlZmluaXRpb24gOiBwcm9ncmFt
LnR5cGVEZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBlQ2hlY2tlci5jaGVja0Vy
cm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIGZvciAoYXV0byYgc3RydWN0dXJlRGVm
aW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgcmVjdXJz
aXZlVHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwot
ICAgIHJldHVybiByZWN1cnNpdmVUeXBlQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwZjFhYzBmNTcxMzA0YmJlYWE4ODE3NTBkMGRmYzIwNjJlN2Qy
NDg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3Iu
aCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJv
cj4gY2hlY2tSZWN1cnNpdmVUeXBlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMzZjNDcyNTg2OTY0ODI5OGUyODU1NmEwMWM0
MzczYzc2YjQzZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3Zlcmxv
YWRJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlIDxsaW1pdHM+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIHVuc2lnbmVkIGNvbnZl
cnNpb25Db3N0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgY2FuZGlkYXRlLCBjb25zdCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMp
Ci17Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QgPSAwOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2FuZGlkYXRlLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBj
b252ZXJzaW9uQ29zdCArPSBhcmd1bWVudFR5cGVzW2ldLmdldCgpLnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAgICAg
IHJldHVybiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5jb252ZXJz
aW9uQ29zdCgqY2FuZGlkYXRlLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKTsKLSAgICAgICAgfSkp
OwotICAgIH0KLSAgICAvLyBUaGUgcmV0dXJuIHR5cGUgY2FuIG5ldmVyIGJlIGEgbGl0ZXJhbCB0
eXBlLCBzbyBpdHMgY29udmVyc2lvbiBjb3N0IGlzIGFsd2F5cyAwLgotICAgIHJldHVybiBjb252
ZXJzaW9uQ29zdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgotc3RhdGljIEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBw
b3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5n
VHlwZT4+JiBhcmd1bWVudFR5cGVzLCBUeXBlS2luZCogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFt
ZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBjYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYg
cG9zc2libGVGdW5jdGlvbiA6IHBvc3NpYmxlRnVuY3Rpb25zKSB7Ci0gICAgICAgIGlmIChwb3Nz
aWJsZUZ1bmN0aW9uLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKG5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJy
YXJ5KSB7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5uYW1lU3BhY2Uo
KSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHBvc3NpYmxlRnVuY3Rp
b24uZ2V0KCkubmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSAm
JiBwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IG5hbWVTcGFjZSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5mZXJUeXBlc0Zv
ckNhbGwocG9zc2libGVGdW5jdGlvbi5nZXQoKSwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5
cGUpKQotICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQocG9zc2libGVGdW5jdGlvbi5nZXQo
KSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbWluaW11bUNvbnZlcnNpb25Db3N0ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRl
IDogY2FuZGlkYXRlcykKLSAgICAgICAgbWluaW11bUNvbnZlcnNpb25Db3N0ID0gc3RkOjptaW4o
bWluaW11bUNvbnZlcnNpb25Db3N0LCBjb252ZXJzaW9uQ29zdChjYW5kaWRhdGUuZ2V0KCksIGFy
Z3VtZW50VHlwZXMpKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IG1pbmltdW1Db3N0Q2FuZGlkYXRlczsKLSAgICBmb3Ig
KGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpIHsKLSAgICAgICAgaWYgKGNvbnZlcnNpb25D
b3N0KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRUeXBlcykgPT0gbWluaW11bUNvbnZlcnNpb25D
b3N0KQotICAgICAgICAgICAgbWluaW11bUNvc3RDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUp
OwotICAgIH0KLQotICAgIGlmIChtaW5pbXVtQ29zdENhbmRpZGF0ZXMuc2l6ZSgpID09IDEpCi0g
ICAgICAgIHJldHVybiAmbWluaW11bUNvc3RDYW5kaWRhdGVzWzBdLmdldCgpOwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlv
bk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVTcGFjZSBuYW1l
U3BhY2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3NzaWJs
ZUZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihu
dWxscHRyKSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1l
ZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi17Ci0gICAg
cmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3NzaWJsZUZ1bmN0aW9ucywgYXJn
dW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUsIG5hbWVTcGFjZSk7Ci19Ci0KLUFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rp
b25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3Vt
ZW50VHlwZXMsIEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFj
ZSBuYW1lU3BhY2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChw
b3NzaWJsZUZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUsIG5hbWVTcGFj
ZSk7Ci19Ci0KLUFTVDo6TmFtZWRUeXBlKiByZXNvbHZlVHlwZU92ZXJsb2FkSW1wbChWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+JiBwb3NzaWJsZVR5cGVz
LCBBU1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgQVNUOjpOYW1lZFR5
cGUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJsZVR5cGUgOiBwb3Nz
aWJsZVR5cGVzKSB7Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhwb3Nz
aWJsZVR5cGUsIHR5cGVBcmd1bWVudHMpKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmVzdWx0ID0gJnN0YXRp
Y19jYXN0PEFTVDo6TmFtZWRUeXBlJj4ocG9zc2libGVUeXBlKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2
ZU92ZXJsb2FkSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgw
MzIyZTg0NGRmM2ZiOGJhYWE4NjkwODg4Zjc4OTJhMTE2NzM5ZmIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmFt
ZWRUeXBlOwotCi19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9u
T3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZVNwYWNlKTsKLUFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3Np
YmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpO
YW1lU3BhY2UpOwotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVy
bG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpVbm5hbWVkVHlwZSogY2FzdFJl
dHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlKTsKLUFTVDo6TmFtZWRUeXBlKiByZXNvbHZlVHlwZU92
ZXJsb2FkSW1wbChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4s
IDE+JiwgQVNUOjpUeXBlQXJndW1lbnRzJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWNlYTQ1N2E4NTMyMGI5OWQ5OTlmZDE5NmZiMDE2ODc0ZDc2ZDUyNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJl
c29sdmFibGVUeXBlOwotCi19Ci0KLS8vIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgdHlwZSBv
ZiBvbmUgQVNUIG5vZGUgc2hvdWxkIG1hdGNoIHRoZSB0eXBlIG9mIGFub3RoZXIgQVNUIG5vZGUu
Ci0vLyBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBjb21tYSBleHByZXNzaW9uIC0gdGhlIHR5
cGUgb2YgdGhlIGNvbW1hIGV4cHJlc3Npb24gc2hvdWxkIG1hdGNoIHRoZSB0eXBlIG9mIGl0cyBs
YXN0IGl0ZW0uCi0vLyBJZiB0aGlzIHR5cGUgaGFwcGVucyB0byBiZSBhIHJlc29sdmFibGUgdHlw
ZSwgaXQgd2lsbCBnZXQgcmVzb2x2ZWQgbGF0ZXIuIFdoZW4gdGhhdCBoYXBwZW5zLAotLy8gYm90
aCBvZiB0aGUgQVNUIG5vZGVzIGhhdmUgdG8gYmUgcmVzb2x2ZWQgdG8gdGhlIHJlc3VsdCB0eXBl
LiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYQotLy8gcmVmZXJlbmNlIGNvdW50ZWQgd3JhcHBlciBh
cm91bmQgYSByZXNvbHZhYmxlIHR5cGUgc28gYm90aCBlbnRyaWVzIGluIHRoZSB0eXBlIG1hcCBj
YW4gcG9pbnQKLS8vIHRvIHRoZSBzYW1lIHJlc29sdmFibGUgdHlwZSwgc28gcmVzb2x2aW5nIGl0
IG9uY2UgcmVzb2x2ZXMgYm90aCB0aGUgZW50cmllcyBpbiB0aGUgbWFwLgotLy8gVGhpcyBjbGFz
cyBjb3VsZCBwcm9iYWJseSBiZSByZXByZXNlbnRlZCBhcwotLy8gImNsYXNzIFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlIDogcHVibGljIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpSZXNvbHZh
YmxlVHlwZT4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlIHt9Igot
Ly8gYnV0IEkgZGlkbid0IHdhbnQgdG8gYmUgdG9vIGNsZXZlci4KLWNsYXNzIFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
IHsKLXB1YmxpYzoKLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShBU1Q6OlJlc29sdmFibGVU
eXBlJiByZXNvbHZhYmxlVHlwZSkKLSAgICAgICAgOiBtX3Jlc29sdmFibGVUeXBlKCZyZXNvbHZh
YmxlVHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UoY29u
c3QgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZShSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsKLSAgICBSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmIG9wZXJhdG9yPShS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsKLQotICAgIEFTVDo6UmVzb2x2YWJs
ZVR5cGUmIHJlc29sdmFibGVUeXBlKCkgeyByZXR1cm4gKm1fcmVzb2x2YWJsZVR5cGU7IH0KLQot
cHJpdmF0ZToKLSAgICBBU1Q6OlJlc29sdmFibGVUeXBlKiBtX3Jlc29sdmFibGVUeXBlOwotfTsK
LQotLy8gVGhpcyBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgYSBWYXJpYW50LgotLy8gSXQgZXhp
c3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkb2Vz
IHRoZSByaWdodCB0aGluZy4KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5Lgot
Y2xhc3MgUmVzb2x2aW5nVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgUmVzb2x2aW5nVHlwZSgpCi0gICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2U+KCkpCi0gICAgewotICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUo
UmVmPEFTVDo6VW5uYW1lZFR5cGU+IHYpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3ZlKHYpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4gdikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAgewotICAgIH0K
LQotICAgIFJlc29sdmluZ1R5cGUoY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRlOwotICAg
IFJlc29sdmluZ1R5cGUoUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgICAgICA6IG1faW5uZXIo
V1RGTW92ZShvdGhlci5tX2lubmVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlw
ZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmluZ1R5cGUmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZp
bmdUeXBlJiBvcGVyYXRvcj0oUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgIHsKLSAgICAgICAg
bV9pbm5lciA9IFdURk1vdmUob3RoZXIubV9pbm5lcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlKiBnZXRVbm5hbWVkVHlwZSgpCi0gICAgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpVbm5hbWVkVHlwZT4+
KG1faW5uZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlVubmFtZWRU
eXBlPj4obV9pbm5lcikucHRyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3Im
IHZpc2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZh
cmlhbnQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2U+PiY+KCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bm5lcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8UmVmPEFTVDo6VW5uYW1lZFR5
cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+PiBtX2lubmVyOwotfTsKLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyM2MxMTVlMWMxNGJhOTdkNzVjZDBhMThm
ZDE0ODMxYTEwNWI5OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTY29wZWRTZXRB
ZGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTY29wZWRTZXRBZGRlciB7Ci1wdWJsaWM6Ci0gICAg
U2NvcGVkU2V0QWRkZXIoSGFzaFNldDxUPiYgc2V0LCBUJiYgaXRlbSkKLSAgICAgICAgOiBtX3Nl
dChzZXQpCi0gICAgICAgICwgbV9pdGVtKFdURk1vdmUoaXRlbSkpCi0gICAgewotICAgICAgICBt
X2lzTmV3RW50cnkgPSBzdGF0aWNfY2FzdDxib29sPihtX3NldC5hZGQobV9pdGVtKSk7Ci0gICAg
fQotCi0gICAgflNjb3BlZFNldEFkZGVyKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9pc05ld0Vu
dHJ5KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX3NldC5y
ZW1vdmUobV9pdGVtKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsK
LSAgICB9Ci0KLSAgICBib29sIGlzTmV3RW50cnkoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3RW50
cnk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PFQ+JiBtX3NldDsKLSAgICBUIG1faXRlbTsK
LSAgICBib29sIG1faXNOZXdFbnRyeTsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZjIwODgyZTkwNTUzMTI2NGEwNzczNTFlZTQ5MDUwMTliNDJmODU2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDMzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBv
aW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1
ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNl
bWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBib29sIG1hdGNoTW9kZShCaW5kaW5n
OjpCaW5kaW5nRGV0YWlscyBiaW5kaW5nVHlwZSwgQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2Rl
IG1vZGUpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oVW5p
Zm9ybUJ1ZmZlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6
OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICB9LCBbJl0oU2FtcGxlckJpbmRp
bmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50
aWM6Ok1vZGU6OlNhbXBsZXI7Ci0gICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nKSAtPiBib29sIHsK
LSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpUZXh0
dXJlOwotICAgIH0sIFsmXShTdG9yYWdlQnVmZmVyQmluZGluZykgLT4gYm9vbCB7Ci0gICAgICAg
IHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VW5vcmRlcmVkQWNj
ZXNzVmlldzsKLSAgICB9KSwgYmluZGluZ1R5cGUpOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25h
bDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExheW91dCYgbGF5b3V0LCBTaGFkZXJTdGFnZSBz
aGFkZXJTdGFnZSkKLXsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHJlc3VsdDsKLSAg
ICBIYXNoU2V0PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIGJp
bmRHcm91cCA6IGxheW91dCkgewotICAgICAgICBhdXRvIHNwYWNlID0gYmluZEdyb3VwLm5hbWU7
Ci0gICAgICAgIGZvciAoYXV0byYgYmluZGluZyA6IGJpbmRHcm91cC5iaW5kaW5ncykgewotICAg
ICAgICAgICAgaWYgKCFiaW5kaW5nLnZpc2liaWxpdHkuY29udGFpbnMoc2hhZGVyU3RhZ2UpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlbnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRv
JiBpdGVtID0gZW50cnlQb2ludEl0ZW1zW2ldOwotICAgICAgICAgICAgICAgIGF1dG8mIHNlbWFu
dGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEFTVDo6UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBhdXRvJiByZXNvdXJjZVNlbWFudGlj
ID0gV1RGOjpnZXQ8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtYXRjaE1vZGUoYmluZGluZy5iaW5kaW5nLCByZXNvdXJjZVNlbWFudGljLm1v
ZGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
IChiaW5kaW5nLmV4dGVybmFsTmFtZSAhPSByZXNvdXJjZVNlbWFudGljLmluZGV4KCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChzcGFjZSAhPSBy
ZXNvdXJjZVNlbWFudGljLnNwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJmJpbmRpbmcsIGkpOwotICAgICAgICAgICAgICAg
IGl0ZW1JbmRpY2VzLmFkZChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlQb2ludEl0ZW1zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBlbnRyeVBvaW50SXRlbXNbaV07Ci0gICAgICAgIGF1dG8m
IHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1zdGF0aWMgYm9vbCBtYXRjaElucHV0c091dHB1dHMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYg
dmVydGV4T3V0cHV0cywgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRJbnB1dHMpCi17
Ci0gICAgZm9yIChhdXRvJiBmcmFnbWVudElucHV0IDogZnJhZ21lbnRJbnB1dHMpIHsKLSAgICAg
ICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigq
ZnJhZ21lbnRJbnB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
YXV0byYgZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljPigqZnJhZ21lbnRJbnB1dC5zZW1hbnRpYyk7Ci0gICAgICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiB2ZXJ0ZXhPdXRwdXQgOiB2ZXJ0ZXhP
dXRwdXRzKSB7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpT
dGFnZUluT3V0U2VtYW50aWM+KCp2ZXJ0ZXhPdXRwdXQuc2VtYW50aWMpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgdmVydGV4T3V0cHV0U3RhZ2VJbk91dFNl
bWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCp2ZXJ0ZXhPdXRwdXQu
c2VtYW50aWMpOwotICAgICAgICAgICAgaWYgKGZyYWdtZW50SW5wdXRTdGFnZUluT3V0U2VtYW50
aWMuaW5kZXgoKSA9PSB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKCpmcmFnbWVudElucHV0LnVubmFtZWRUeXBlLCAq
dmVydGV4T3V0cHV0LnVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChWZXJ0ZXhG
b3JtYXQgdmVydGV4Rm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgSW50cmlu
c2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdCkgewotICAgIGNh
c2UgVmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMkEzMjoKLSAgICAgICAgcmV0dXJuIG1hdGNo
ZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZlcnRl
eEZvcm1hdDo6RmxvYXRSMzJHMzJCMzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWZXJ0ZXhGb3JtYXQ6OkZs
b2F0UjMyRzMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5mbG9hdDJUeXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhGb3Jt
YXQgPT0gVmVydGV4Rm9ybWF0OjpGbG9hdFIzMik7Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90Pj4gbWF0Y2hWZXJ0
ZXhBdHRyaWJ1dGVzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIHZlcnRleElucHV0cywgVmVydGV4
QXR0cmlidXRlcyYgdmVydGV4QXR0cmlidXRlcywgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsK
LSAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hT
ZXQ8c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgdmVydGV4QXR0
cmlidXRlIDogdmVydGV4QXR0cmlidXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZlcnRleElucHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgaXRlbSA9
IHZlcnRleElucHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2Vt
YW50aWM7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFn
ZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJbk91dFNlbWFu
dGljLmluZGV4KCkgIT0gdmVydGV4QXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQodmVy
dGV4QXR0cmlidXRlLnZlcnRleEZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJpbnNpY3Mp
KQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICByZXN1
bHQuYWRkKCZ2ZXJ0ZXhBdHRyaWJ1dGUsIGkpOwotICAgICAgICAgICAgaXRlbUluZGljZXMuYWRk
KGkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0
ZXhJbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IHZlcnRleElucHV0
c1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1h
bnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5j
b250YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUs
IEludHJpbnNpY3MmIGludHJpbnNpY3MsIGJvb2wgaXNDb2xvcikKLXsKLSAgICBpZiAoaXNDb2xv
cikgewotICAgICAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4VW5vcm1T
cmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4U25vcm06Ci0gICAgICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6UjE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2
U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2RmxvYXQ6Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UjMyRmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1
bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6Ukc4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukc4VW5vcm1T
cmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFNub3JtOgotICAgICAgICBjYXNl
IFRleHR1cmVGb3JtYXQ6OlJHMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpS
RzE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNkZsb2F0OgotICAgICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRj
aGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0MlR5cGUoKSk7Ci0gICAgICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6QjVHNlI1VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6
UkcxMUIxMEZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JB
OFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm1TcmdiOgotICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdC
QThTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0IxMEEyVW5vcm06Ci0gICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UkdCQTE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2
RmxvYXQ6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyRmxvYXQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkp
OwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIzMlVpbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSMzJTaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSRzMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLnVpbnQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpS
RzMyU2ludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5z
aWNzLmludDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkEzMlVpbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50
NFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyU2ludDoKLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmludDRUeXBlKCkp
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlw
dG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4mIGZyYWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgYXR0YWNo
bWVudERlc2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIEhhc2hNYXA8
QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBIYXNoU2V0PHNpemVf
dCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnREZXNjcmlw
dG9yIDogYXR0YWNobWVudERlc2NyaXB0b3JzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhZ21lbnRPdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBp
dGVtID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAq
aXRlbS5zZW1hbnRpYzsKLSAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxB
U1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgYXV0byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNU
OjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgIGlmIChzdGFnZUlu
T3V0U2VtYW50aWMuaW5kZXgoKSAhPSBhdHRhY2htZW50RGVzY3JpcHRvci5uYW1lKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQo
YXR0YWNobWVudERlc2NyaXB0b3IudGV4dHVyZUZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MsIHRydWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgICAgICByZXN1bHQuYWRkKCZhdHRhY2htZW50RGVzY3JpcHRvciwgaSk7Ci0gICAgICAg
ICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYWdtZW50T3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBh
dXRvJiBpdGVtID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICBhdXRvJiBzZW1hbnRpYyA9
ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNU
OjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMg
Ym9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVu
dE91dHB1dHMsIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50RGVzY3JpcHRvciwgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKGZyYWdtZW50T3V0cHV0cy5iZWdpbigpLCBmcmFn
bWVudE91dHB1dHMuZW5kKCksIFsmXShFbnRyeVBvaW50SXRlbSYgaXRlbSkgewotICAgICAgICBh
dXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgYnVpbHRJblNlbWFudGljID0gV1RGOjpnZXQ8
QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIGJ1aWx0SW5T
ZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZE
ZXB0aDsKLSAgICB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gZnJhZ21lbnRPdXRwdXRzLmVuZCgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcikgewotICAgICAgICBBU1NFUlQoIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yLT5uYW1lKTsKLSAgICAgICAgcmV0dXJuIGlzQWNjZXB0YWJsZUZvcm1hdChkZXB0aFN0
ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvci0+dGV4dHVyZUZvcm1hdCwgKml0ZXJhdG9yLT51bm5h
bWVkVHlwZSwgaW50cmluc2ljcywgZmFsc2UpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3Mo
UHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciwgYm9vbCBmcmFnbWVudFNo
YWRlckV4aXN0cykKLXsKLSAgICBhdXRvIHZlcnRleEZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNv
bnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleEVudHJ5
UG9pbnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYgKHZlcnRleEZ1
bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhdmVydGV4RnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9p
bnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNb
MF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8mIHZlcnRl
eFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4odmVy
dGV4RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIHZlcnRleFNoYWRlckVudHJ5UG9pbnRJ
dGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgdmVydGV4
U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKCF2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byB2ZXJ0ZXhTaGFkZXJSZXNv
dXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5w
dXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6VmVydGV4
KTsKLSAgICBpZiAoIXZlcnRleFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGF1dG8gbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMgPSBtYXRjaFZlcnRl
eEF0dHJpYnV0ZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7
Ci0gICAgaWYgKCFtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyRXhpc3RzKQotICAgICAgICByZXR1cm4g
e3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsIG51bGxwdHIsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBv
aW50SXRlbXMsIEVudHJ5UG9pbnRJdGVtcygpLCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIEhh
c2hNYXA8QmluZGluZyosIHNpemVfdD4oKSwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCBIYXNo
TWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PigpIH19OwotCi0gICAgYXV0byBmcmFn
bWVudE5hbWVTcGFjZSA9IGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIgPyBBU1Q6Ok5hbWVTcGFjZTo6
TmFtZVNwYWNlMiA6IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOwotICAgIGF1dG8gZnJhZ21l
bnRGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudEVudHJ5UG9pbnROYW1lLCBmcmFnbWVudE5hbWVTcGFj
ZSk7Ci0gICAgaWYgKGZyYWdtZW50RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmcmFnbWVudEZ1
bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4oZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA9IGRvd25jYXN0
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKSk7Ci0g
ICAgYXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJ
dGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KTsKLSAg
ICBpZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVz
b3VyY2VzKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpGcmFnbWVudCk7Ci0gICAgaWYgKCFm
cmFnbWVudFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIGlmICghbWF0Y2hJbnB1dHNPdXRwdXRzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+
b3V0cHV0cywgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cykpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyA9
IG1hdGNoQ29sb3JBdHRhY2htZW50cyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0
cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9y
LmF0dGFjaG1lbnREZXNjcmlwdG9ycywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwotICAgIGlmICgh
bWF0Y2hlZENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFtYXRjaERlcHRoQXR0YWNobWVudChmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVt
cy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNj
cmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBwcm9ncmFtLmludHJpbnNp
Y3MoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHt7ICZ2ZXJ0
ZXhTaGFkZXJFbnRyeVBvaW50LCAmZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50LCAqdmVydGV4U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLCAqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsICp2ZXJ0
ZXhTaGFkZXJSZXNvdXJjZU1hcCwgKmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsICptYXRjaGVk
VmVydGV4QXR0cmlidXRlcywgKm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzIH19OwotfQotCi1zdGQ6
Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFt
JiBwcm9ncmFtLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKQotewotICAgIGF1dG8gZnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdl
dEZ1bmN0aW9ucyhjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmVudHJ5UG9pbnROYW1lLCBBU1Q6
Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYgKGZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8
fCAhZnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uPihmdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGF1dG8mIGVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIGVudHJ5UG9pbnRJdGVtcyA9
IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZW50cnlQb2ludCk7
Ci0gICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgQVNTRVJUKGVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cy5pc0VtcHR5KCkpOwotICAgIGF1
dG8gcmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyhlbnRyeVBvaW50SXRlbXMtPmlucHV0cywg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpDb21wdXRlKTsK
LSAgICBpZiAoIXJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IHJldHVybiB7eyAmZW50cnlQb2ludCwgKmVudHJ5UG9pbnRJdGVtcywgKnJlc291cmNlTWFwIH19
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiZjZjNjczZDNkZWI2YzdmYzFmMzIzOWVhOGIw
ZmQwYTMyNzg3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotc3RydWN0IE1hdGNoZWRSZW5kZXJT
ZW1hbnRpY3MgewotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiB2ZXJ0ZXhTaGFkZXI7Ci0g
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIGZyYWdtZW50U2hhZGVyOwotICAgIEVudHJ5UG9p
bnRJdGVtcyB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXM7Ci0gICAgRW50cnlQb2ludEl0ZW1z
IGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4gdmVydGV4U2hhZGVyUmVzb3VyY2VNYXA7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6
ZV90PiBmcmFnbWVudFNoYWRlclJlc291cmNlTWFwOwotICAgIEhhc2hNYXA8VmVydGV4QXR0cmli
dXRlKiwgc2l6ZV90PiBtYXRjaGVkVmVydGV4QXR0cmlidXRlczsKLSAgICBIYXNoTWFwPEF0dGFj
aG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiBtYXRjaGVkQ29sb3JBdHRhY2htZW50czsKLX07Ci0K
LXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJv
Z3JhbSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNo
YWRlciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7Ci0KLXN0cnVjdCBNYXRjaGVkQ29tcHV0
ZVNlbWFudGljcyB7Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHNoYWRlcjsKLSAgICBF
bnRyeVBvaW50SXRlbXMgZW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4gcmVzb3VyY2VNYXA7Ci19OwotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2Vt
YW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4N2MwNTYyMjY3YTdiYmMxZDViNGRiOWI4
OTM5ZjVkZjcwMWFhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExp
YnJhcnkudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTgwMDMgKzAsMCBAQAotLy8gVGhpcyB3YXMg
YXV0b2dlbmVyYXRlZCBmcm9tIEdlbmVyYXRlX1N0YW5kYXJkX0xpYnJhcnkuanMuCi0vLyBUaGlz
IHN0YW5kYXJkIGxpYnJhcnkgaGFzIGJlZW4gcHJvY2Vzc2VkIHN1Y2ggdGhhdCBmdW5jdGlvbnMg
d2hpY2ggc2hhcmUgYSBuYW1lIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXIsCi0vLyBhbmQgYmVmb3Jl
IGVhY2ggZ3JvdXAgb2YgZnVuY3Rpb25zLCB0aGVyZSdzIGEgcHJlZml4IHRoYXQgaGFzIHRvIGJl
IGluIGEgcGFydGljdWxhciBmb3JtLgotLy8gVGhlIFdlYktpdCBidWlsZCBwcm9jZXNzIGV4cGxv
aXRzIHRoaXMgc3RydWN0dXJlIHRvIGJ1aWxkIGEgbWFwIG9mIHdoaWNoIGZ1bmN0aW9uIG5hbWUg
Y29ycmVzcG9uZHMgdG8gd2hpY2gKLS8vIHBhcnQgb2YgdGhpcyBmaWxlLiBUaGVuLCB3aGVuIHdl
IHBhcnNlIFdITFNMIHByb2dyYW1zLCB3ZSBjYW4gb25seSBwYXJzZSB0aGUgcGllY2VzIG9mIHRo
aXMgc3RhbmRhcmQgbGlicmFyeQotLy8gd2hpY2ggY29ycmVzcG9uZCB0byBmdW5jdGlvbnMgdGhh
dCBhcmUgYWN0dWFsbHkgdXNlZCBpbiB0aGUgdXNlciBwcm9ncmFtLgotCi1uYXRpdmUgdHlwZWRl
ZiB2b2lkOwotbmF0aXZlIHR5cGVkZWYgYm9vbDsKLW5hdGl2ZSB0eXBlZGVmIHVpbnQ7Ci1uYXRp
dmUgdHlwZWRlZiBpbnQ7Ci1uYXRpdmUgdHlwZWRlZiBmbG9hdDsKLW5hdGl2ZSB0eXBlZGVmIGF0
b21pY19pbnQ7Ci1uYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKLW5hdGl2ZSB0eXBlZGVmIHZl
Y3Rvcjxib29sLCAyPjsKLXR5cGVkZWYgYm9vbDIgPSB2ZWN0b3I8Ym9vbCwgMj47Ci1uYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8Ym9vbCwgMz47Ci10eXBlZGVmIGJvb2wzID0gdmVjdG9yPGJvb2wsIDM+
OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDQ+OwotdHlwZWRlZiBib29sNCA9IHZlY3Rv
cjxib29sLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAyPjsKLXR5cGVkZWYgdWlu
dDIgPSB2ZWN0b3I8dWludCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgMz47Ci10
eXBlZGVmIHVpbnQzID0gdmVjdG9yPHVpbnQsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVp
bnQsIDQ+OwotdHlwZWRlZiB1aW50NCA9IHZlY3Rvcjx1aW50LCA0PjsKLW5hdGl2ZSB0eXBlZGVm
IHZlY3RvcjxpbnQsIDI+OwotdHlwZWRlZiBpbnQyID0gdmVjdG9yPGludCwgMj47Ci1uYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8aW50LCAzPjsKLXR5cGVkZWYgaW50MyA9IHZlY3RvcjxpbnQsIDM+Owot
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgND47Ci10eXBlZGVmIGludDQgPSB2ZWN0b3I8aW50
LCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMj47Ci10eXBlZGVmIGZsb2F0MiA9
IHZlY3RvcjxmbG9hdCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDM+OwotdHlw
ZWRlZiBmbG9hdDMgPSB2ZWN0b3I8ZmxvYXQsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZs
b2F0LCA0PjsKLXR5cGVkZWYgZmxvYXQ0ID0gdmVjdG9yPGZsb2F0LCA0PjsKLQotbmF0aXZlIHR5
cGVkZWYgbWF0cml4PGZsb2F0LCAyLCAyPjsKLXR5cGVkZWYgZmxvYXQyeDIgPSBtYXRyaXg8Zmxv
YXQsIDIsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAyLCAzPjsKLXR5cGVkZWYg
ZmxvYXQyeDMgPSBtYXRyaXg8ZmxvYXQsIDIsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZs
b2F0LCAyLCA0PjsKLXR5cGVkZWYgZmxvYXQyeDQgPSBtYXRyaXg8ZmxvYXQsIDIsIDQ+OwotbmF0
aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAzLCAyPjsKLXR5cGVkZWYgZmxvYXQzeDIgPSBtYXRy
aXg8ZmxvYXQsIDMsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAzLCAzPjsKLXR5
cGVkZWYgZmxvYXQzeDMgPSBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0
cml4PGZsb2F0LCAzLCA0PjsKLXR5cGVkZWYgZmxvYXQzeDQgPSBtYXRyaXg8ZmxvYXQsIDMsIDQ+
OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCAyPjsKLXR5cGVkZWYgZmxvYXQ0eDIg
PSBtYXRyaXg8ZmxvYXQsIDQsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCAz
PjsKLXR5cGVkZWYgZmxvYXQ0eDMgPSBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotbmF0aXZlIHR5cGVk
ZWYgbWF0cml4PGZsb2F0LCA0LCA0PjsKLXR5cGVkZWYgZmxvYXQ0eDQgPSBtYXRyaXg8ZmxvYXQs
IDQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMiwgMj47Ci10eXBlZGVmIGJv
b2wyeDIgPSBtYXRyaXg8Ym9vbCwgMiwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwg
MiwgMz47Ci10eXBlZGVmIGJvb2wyeDMgPSBtYXRyaXg8Ym9vbCwgMiwgMz47Ci1uYXRpdmUgdHlw
ZWRlZiBtYXRyaXg8Ym9vbCwgMiwgND47Ci10eXBlZGVmIGJvb2wyeDQgPSBtYXRyaXg8Ym9vbCwg
MiwgND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywgMj47Ci10eXBlZGVmIGJvb2wz
eDIgPSBtYXRyaXg8Ym9vbCwgMywgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywg
Mz47Ci10eXBlZGVmIGJvb2wzeDMgPSBtYXRyaXg8Ym9vbCwgMywgMz47Ci1uYXRpdmUgdHlwZWRl
ZiBtYXRyaXg8Ym9vbCwgMywgND47Ci10eXBlZGVmIGJvb2wzeDQgPSBtYXRyaXg8Ym9vbCwgMywg
ND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgMj47Ci10eXBlZGVmIGJvb2w0eDIg
PSBtYXRyaXg8Ym9vbCwgNCwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgMz47
Ci10eXBlZGVmIGJvb2w0eDMgPSBtYXRyaXg8Ym9vbCwgNCwgMz47Ci1uYXRpdmUgdHlwZWRlZiBt
YXRyaXg8Ym9vbCwgNCwgND47Ci10eXBlZGVmIGJvb2w0eDQgPSBtYXRyaXg8Ym9vbCwgNCwgND47
Ci0KLW5hdGl2ZSB0eXBlZGVmIHNhbXBsZXI7Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWlu
dD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTFEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50ND47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMUQ8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQyPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUx
RDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMUQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdDM+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MURBcnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQyPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUxREFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGludD47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUxREFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50ND47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlMURBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQz
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMkQ8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWludDI+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1
aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUyRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQzPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUyRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxmbG9hdD47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUyRDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0ND47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFy
cmF5PHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQzPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUy
REFycmF5PGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJE
QXJyYXk8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdD47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZsb2F0ND47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
M0Q8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQzPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUzRDx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50PjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxp
bnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUzRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZs
b2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmVDdWJlPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQzPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmVDdWJlPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQyPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmVDdWJlPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50
ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlQ3ViZTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8ZmxvYXQzPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlRGVwdGgyRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+OwotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgcmV2ZXJzZWJpdHMgKi8KLXVpbnQgcmV2ZXJzZWJpdHModWludCB4KSB7Ci0g
ICAgcmV0dXJuIHVpbnQoKCh4ICYgdWludCgxIDw8IDApKSA8PCAzMSkgfAotICAgICAgICAgICAo
KHggJiB1aW50KDEgPDwgMSkpIDw8IDI5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAy
KSkgPDwgMjcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMpKSA8PCAyNSkgfAotICAg
ICAgICAgICAoKHggJiB1aW50KDEgPDwgNCkpIDw8IDIzKSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCA1KSkgPDwgMjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDYpKSA8PCAx
OSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNykpIDw8IDE3KSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCA4KSkgPDwgMTUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDkpKSA8PCAxMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTApKSA8PCAxMSkgfAot
ICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTEpKSA8PCA5KSB8Ci0gICAgICAgICAgICgoeCAm
IHVpbnQoMSA8PCAxMikpIDw8IDcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEzKSkg
PDwgNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTQpKSA8PCAzKSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCAxNSkpIDw8IDEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDE2KSkgPj4gMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTcpKSA+PiAzKSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxOCkpID4+IDUpIHwKLSAgICAgICAgICAgKCh4
ICYgdWludCgxIDw8IDE5KSkgPj4gNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjAp
KSA+PiA5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMSkpID4+IDExKSB8Ci0gICAg
ICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMikpID4+IDEzKSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCAyMykpID4+IDE1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNCkpID4+
IDE3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNSkpID4+IDE5KSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCAyNikpID4+IDIxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQo
MSA8PCAyNykpID4+IDIzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyOCkpID4+IDI1
KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyOSkpID4+IDI3KSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCAzMCkpID4+IDI5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8
PCAzMSkpID4+IDMxKSk7Ci19Ci11aW50MiByZXZlcnNlYml0cyh1aW50MiB4KSB7Ci0gICAgdWlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHJldmVyc2ViaXRzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBy
ZXZlcnNlYml0cyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRzKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50NCByZXZlcnNlYml0cyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRz
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IHJldmVyc2ViaXRzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGlzb3JkZXJlZCAqLwotYm9vbCBpc29yZGVyZWQoZmxvYXQgeCwgZmxvYXQg
eSkgewotICAgIHJldHVybiAoeCA9PSB4KSAmJiAoeSA9PSB5KTsKLX0KLWJvb2wyIGlzb3JkZXJl
ZChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXNvcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzb3JkZXJlZCh4WzFd
LCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNvcmRlcmVkKGZsb2F0MyB4
LCBmbG9hdDMgeSkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVy
ZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGlzb3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbDQgaXNvcmRlcmVkKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGJvb2w0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzb3JkZXJlZCh4
WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc29yZGVyZWQoeFszXSwgeVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHRyYW5zcG9zZSAqLwotZmxv
YXQgdHJhbnNwb3NlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MngyIHRyYW5z
cG9zZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIHRyYW5zcG9zZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0g
eFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9
IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
PSB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0cmFuc3Bvc2UoZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBd
WzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFsw
XVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IHhb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
WzFdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIHRyYW5zcG9zZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsx
XTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0cmFuc3Bvc2UoZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwot
ICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBd
OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsy
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdHJhbnNwb3NlKGZsb2F0M3g0IHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0g
ICAgcmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsK
LSAgICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07
Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJd
OwotICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IHRyYW5zcG9zZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0g
ICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwot
ICAgIHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJhbnNwb3NlKGZsb2F0NHgzIHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAg
cmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAg
IHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0g
ICAgcmVzdWx0WzBdWzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwot
ICAgIHJlc3VsdFsyXVszXSA9IHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IHRyYW5zcG9zZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IHhbMF1bM107Ci0gICAg
cmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAg
IHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0geFsxXVszXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4WzJdWzNdOwot
ICAgIHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsK
LSAgICByZXN1bHRbMl1bM10gPSB4WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSA9IHhbM11bM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2Nr
ZWRBZGQgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfdWludCos
IHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2Ug
YXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRB
ZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJl
YWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWlj
X2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFk
ZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQg
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWlu
dCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJl
YWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2F0dXJhdGUg
Ki8KLWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gY2xhbXAoeCwgMCwgMSk7
Ci19Ci1mbG9hdDIgc2F0dXJhdGUoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhb
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc2F0dXJhdGUoZmxvYXQzIHgpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNhdHVyYXRlKHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc2F0dXJhdGUoZmxvYXQ0IHgpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNhdHVyYXRlKHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IHNhdHVyYXRlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBzYXR1cmF0ZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzYXR1cmF0ZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRl
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVy
YXRlKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzYXR1cmF0ZShm
bG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNh
dHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHNhdHVyYXRlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzYXR1cmF0ZShmbG9hdDJ4MyB4
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRl
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBzYXR1cmF0ZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNh
dHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzYXR1cmF0ZShmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNhdHVyYXRl
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVy
YXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNh
dHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBzYXR1cmF0ZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNhdHVyYXRlKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBzYXR1cmF0ZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVy
YXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNh
dHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNhdHVyYXRlKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzYXR1cmF0ZShmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNhdHVyYXRl
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVy
YXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNh
dHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNhdHVyYXRlKHhbMV1bM10p
OwotICAgIHJlc3VsdFsyXVszXSA9IHNhdHVyYXRlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IHNhdHVyYXRlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBtYWQgKi8KLQotZmxvYXQgbWFkKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
IHsKLSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIG1hZChmbG9hdDIgeCwgZmxvYXQy
IHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYWQo
eFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWFkKHhbMV0sIHlbMV0sIHpbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWFkKGZsb2F0MyB4LCBmbG9hdDMgeSwg
ZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBd
LCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gbWFkKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgbWFkKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWFkKHhb
Ml0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IG1hZCh4WzNdLCB5WzNdLCB6WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWFkKGZsb2F0MngyIHgsIGZsb2F0Mngy
IHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1h
ZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFsw
XVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0s
IHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtYWQo
ZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1h
ZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgbWFkKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1h
ZCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgbWFkKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIG1hZChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4MyB6KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5
WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVsw
XSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBtYWQoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVsw
XSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gbWFkKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1h
ZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsx
XVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWFkKHhbMl1bMl0s
IHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1hZCh4WzNdWzJdLCB5WzNd
WzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbWFkKGZsb2F0
Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1h
ZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsx
XVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10s
IHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFd
WzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWFkKGZsb2F0
M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1h
ZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsy
XVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0s
IHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFd
WzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwg
elsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlbMF1bM10sIHpbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1hZChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5LCBm
bG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1h
ZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsx
XVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0s
IHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1hZCh4WzNdWzBdLCB5WzNd
WzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwg
elswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bWFkKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1hZCh4
WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYWQoeFsxXVsz
XSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWFkKHhbMl1bM10sIHlb
Ml1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1hZCh4WzNdWzNdLCB5WzNdWzNd
LCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBtb2RmICovCi0KLWZsb2F0IG1vZGYoZmxvYXQgeCwgdGhyZWFkIGZsb2F0KiBpcCkgewotICAg
IHVpbnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAqaXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAg
ICByZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4LCB0aHJlYWQg
ZmxvYXQyKiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIHRocmVhZCBm
bG9hdDMqIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0IHgsIHRocmVh
ZCBmbG9hdDQqIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlb
M10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQy
eDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIgeCwg
dGhyZWFkIGZsb2F0M3gyKiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYo
eFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgbW9kZihmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlb
M11bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxv
YXQyeDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsx
XSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHkpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhb
MV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1v
ZGYoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9k
Zih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsx
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
M10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNd
ID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0
IHgsIHRocmVhZCBmbG9hdDN4NCogeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBmbG9h
dCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBt
b2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4
WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1b
Ml0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVsz
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10g
PSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwgdGhyZWFkIGZsb2F0
NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2Rm
KHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsy
XSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBt
b2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZm
ZXIpOwotICAgICgqeSlbM11bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ci1mbG9hdCBtb2RmKGZsb2F0IHgsIGRldmljZSBmbG9hdCogaXApIHsKLSAgICB1aW50IHJlc3Vs
dCA9IHVpbnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZs
b2F0KHJlc3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgZGV2aWNlIGZsb2F0MiogeSkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9
IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtb2RmKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0g
bW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
ID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdID0gYnVmZmVy
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0MngyIHgsIGRldmlj
ZSBmbG9hdDJ4MiogeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIGRldmljZSBmbG9h
dDN4MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1vZGYoZmxv
YXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsw
XSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBt
b2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVm
ZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0MngzIHgsIGRl
dmljZSBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gz
IG1vZGYoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYo
eFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDMgbW9kZihmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlb
M11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsx
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1b
Ml0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJd
ID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0
IHgsIGRldmljZSBmbG9hdDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBmbG9h
dCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBt
b2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4
WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4LCBkZXZpY2Ug
ZmxvYXQzeDQqIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwot
ICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2Rm
KHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIp
OwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJd
WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBtb2RmKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1v
ZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhb
MF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9
IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotZmxvYXQgbW9k
ZihmbG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogaXApIHsKLSAgICB1aW50IHJlc3VsdCA9IHVp
bnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZsb2F0KHJl
c3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0g
bW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0Myog
eSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQ0KiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
ID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0Mngy
IHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsx
XSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0g
PSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
ZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBtb2RmKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB5KSB7Ci0g
ICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0g
PSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4MyBtb2RmKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2Rm
KHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0aHJlYWRncm91
cCBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1v
ZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1vZGYoZmxvYXQ0eDMgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9k
Zih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsy
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11b
MV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0IHgsIHRocmVhZGdyb3VwIGZs
b2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBt
b2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4
WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0
KiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9
IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgbW9kZihmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1v
ZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIEludGVybG9ja2VkTWluICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZp
Y2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX2ludCosIGludCwg
ZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY191
aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRN
aW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFk
Z3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIGxlbmd0aCAqLwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQgbGVuZ3RoKGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0Myk7Ci1uYXRpdmUg
ZmxvYXQgbGVuZ3RoKGZsb2F0NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvci0tICov
Ci11aW50IG9wZXJhdG9yLS0odWludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19
Ci1pbnQgb3BlcmF0b3ItLShpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQot
ZmxvYXQgb3BlcmF0b3ItLShmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcjw8ICovCi1uYXRpdmUgaW50IG9wZXJhdG9y
PDwoaW50LCB1aW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCwgdWludCk7Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBleHAyICovCi1mbG9hdCBleHAyKGZsb2F0IHgpIHsKLSAgICByZXR1
cm4gZXhwKHggKiBsb2coZmxvYXQoMikpKTsKLX0KLWZsb2F0MiBleHAyKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBleHAyKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwMih4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGV4cDIoZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gZXhwMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGV4cDIoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGV4cDIoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAy
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAyKGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGV4cDIoZmxvYXQ0eDIgeCkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4
cDIoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGV4cDIoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhw
Mih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZXhwMihmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAy
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBleHAyKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBl
eHAyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGV4cDIoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4
cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGV4cDIoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gZXhwMih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgZXhwMihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBl
eHAyKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBleHAyKHhbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IGV4cDIoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzdW5vcmRlcmVkICovCi0KLWJvb2wgaXN1bm9y
ZGVyZWQoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiBpc25hbih4KSB8fCBpc25hbih5
KTsKLX0KLWJvb2wyIGlzdW5vcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGJvb2wy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbDMgaXN1bm9yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgYm9vbDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGlzdW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzdW5vcmRl
cmVkKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc3Vub3JkZXJl
ZChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1bm9yZGVyZWQo
eFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsyXSwgeVsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gaXN1bm9yZGVyZWQoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGF0YW4gKi8KLW5hdGl2ZSBmbG9hdCBhdGFuKGZs
b2F0KTsKLWZsb2F0MiBhdGFuKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4oeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhdGFuKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4o
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXRhbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IGF0YW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhdGFuKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGF0YW4oeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGF0YW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBhdGFuKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGF0YW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBhdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIGF0YW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4o
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgYXRhbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBhdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRh
bih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGF0YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGF0YW4oZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFu
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
YXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IGF0YW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
dGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gYXRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRhbih4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRhbihmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRh
bih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuKHhbM11bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbih4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9
IGF0YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIGxvZyAqLwotbmF0aXZlIGZsb2F0IGxvZyhmbG9hdCk7Ci1mbG9hdDIgbG9nKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9n
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZyh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZyhmbG9hdDQgeCkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGxvZyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
bG9nKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2coZmxvYXQyeDIg
eCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxvZyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBsb2coZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2co
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2coZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgbG9nKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBsb2coeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxvZyhmbG9h
dDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBsb2coeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2coeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBsb2coZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2co
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsb2coZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBs
b2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxv
Zyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nKGZsb2F0NHg0
IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGxvZyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2coeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
bG9nKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBsb2coeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9nKHhbM11bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBMb2FkICovCi1u
YXRpdmUgdWludCBMb2FkKFRleHR1cmUxRDx1aW50PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50IExvYWQoVGV4dHVyZTFEQXJyYXk8dWludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQgTG9hZChUZXh0dXJlMkQ8dWludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9h
ZChUZXh0dXJlMkRBcnJheTx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2Fk
KFRleHR1cmUzRDx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0
dXJlMUQ8dWludDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTFE
QXJyYXk8dWludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUy
RDx1aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUzRDx1
aW50Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTFEPHVpbnQz
PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQz
PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMkQ8dWludDM+LCBp
bnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
aW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlM0Q8dWludDM+LCBpbnQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUxRDx1aW50ND4sIGludCBsb2Nh
dGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMURBcnJheTx1aW50ND4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTJEPHVpbnQ0PiwgaW50MiBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIGludDMgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTNEPHVpbnQ0PiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTFEPGludD4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50IExvYWQoVGV4dHVyZTFEQXJyYXk8aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
IExvYWQoVGV4dHVyZTJEPGludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRl
eHR1cmUyREFycmF5PGludD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1
cmUzRDxpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTFEPGlu
dDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMURBcnJheTxpbnQy
PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyRDxpbnQyPiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyREFycmF5PGludDI+LCBpbnQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTNEPGludDI+LCBpbnQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTFEPGludDM+LCBpbnQgbG9jYXRpb24pOwot
bmF0aXZlIGludDMgTG9hZChUZXh0dXJlMURBcnJheTxpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50MyBMb2FkKFRleHR1cmUyRDxpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MyBMb2FkKFRleHR1cmUyREFycmF5PGludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBp
bnQzIExvYWQoVGV4dHVyZTNEPGludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExv
YWQoVGV4dHVyZTFEPGludDQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0
dXJlMURBcnJheTxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1
cmUyRDxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUyREFy
cmF5PGludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTNEPGlu
dDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUxRDxmbG9hdD4s
IGludCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdD4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTJEPGZsb2F0PiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTNEPGZsb2F0PiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEPGZsb2F0Mj4sIGludCBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgaW50MiBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIGludDMg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUzRDxmbG9hdDI+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMUQ8ZmxvYXQzPiwgaW50IGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBpbnQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMkQ8ZmxvYXQzPiwgaW50MiBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTNEPGZsb2F0Mz4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxRDxmbG9hdDQ+LCBpbnQgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUyRDxmbG9hdDQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlM0Q8ZmxvYXQ0PiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIGlu
dDMgbG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2luICovCi1uYXRpdmUgZmxvYXQg
c2luKGZsb2F0KTsKLWZsb2F0MiBzaW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4oeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4o
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgc2luKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IHNpbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBzaW4oeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIHNpbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
aW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
c2luKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzaW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNpbihmbG9h
dDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNpbihm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNp
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2lu
KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzaW4oZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2luKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBzaW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNpbihmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNpbihm
bG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNp
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2lu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW4o
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzaW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBz
aW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNp
bih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbih4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBzaW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIHNpbmNvcyAqLwotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhy
ZWFkIGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAq
eiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5LCB0
aHJlYWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFk
IGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZsb2F0
NCogeSwgdGhyZWFkIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgdGhyZWFkIGZsb2F0Mngy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5
LCB0aHJlYWQgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5LCB0
aHJlYWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0MngzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwgdGhy
ZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgdGhyZWFkIGZs
b2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4
NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0
aHJlYWQgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0IHgsIHRocmVhZCBmbG9hdCogeSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4o
eCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkIGZs
b2F0MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQz
IHgsIHRocmVhZCBmbG9hdDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRo
cmVhZCBmbG9hdDQqIHksIGRldmljZSBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHksIGRldmlj
ZSBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZCBm
bG9hdDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZCBmbG9h
dDR4MiogeSwgZGV2aWNlIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIGRldmljZSBmbG9hdDJ4
MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHksIGRldmljZSBmbG9hdDN4Myog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0
eDMqIHksIGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQqIHks
IGRldmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHksIHRocmVhZGdyb3VwIGZsb2F0KiB6KSB7
Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDIgeCwgdGhyZWFkIGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9h
dDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4
MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCB0aHJlYWRncm91
cCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIHRocmVhZGdy
b3VwIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MngzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgz
KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQq
IHksIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVhZGdyb3VwIGZs
b2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIHRocmVh
ZCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCB0aHJlYWQg
ZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIg
eCwgZGV2aWNlIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZCBmbG9hdDN4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4Miogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNl
IGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNlIGZs
b2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0eDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsz
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4
NCogeSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSwg
dGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZsb2F0
KiB5LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4
KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5LCBkZXZpY2UgZmxv
YXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgZGV2aWNlIGZsb2F0Myog
eSwgZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSwgZGV2
aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0MngyIHgsIGRldmljZSBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0MngyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5LCBkZXZpY2Ug
ZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5LCBkZXZpY2UgZmxv
YXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mngz
IHgsIGRldmljZSBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgs
IGRldmljZSBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0
NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgZGV2aWNlIGZsb2F0Mng0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCBkZXZp
Y2UgZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZpY2UgZmxv
YXQ0eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIGRl
dmljZSBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsK
LSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQy
KiB5LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0
IHgsIGRldmljZSBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIGRldmljZSBmbG9hdDJ4
MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIGRldmljZSBm
bG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNl
IGZsb2F0M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHksIHRocmVhZGdyb3VwIGZs
b2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0
IHgsIGRldmljZSBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQg
eCwgZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsK
LSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0
MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHksIHRocmVhZCBmbG9h
dDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhyZWFkIGZsb2F0
NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mngy
IHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSwgdGhyZWFk
IGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB5LCB0aHJl
YWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZCBmbG9hdDN4Myogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9h
dDR4MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZGdyb3VwIGZsb2F0
Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB5LCB0aHJlYWQgZmxv
YXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9h
dDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCBk
ZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIGRldmljZSBmbG9h
dDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9h
dDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0
NCogeSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCBkZXZpY2UgZmxv
YXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBm
bG9hdDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3Vw
IGZsb2F0NHgyKiB5LCBkZXZpY2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCBkZXZp
Y2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIGRl
dmljZSBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4
LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgs
IHRocmVhZGdyb3VwIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0
M3g0KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVh
ZGdyb3VwIGZsb2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgp
OwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZGdyb3Vw
IGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHksIHRo
cmVhZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgy
KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIHRocmVhZGdy
b3VwIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5LCB0
aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0Mng0
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0
aHJlYWRncm91cCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQot
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSAqLwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFy
ZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCos
IHVpbnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCBkZXZpY2UgaW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQq
LCB1aW50LCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWRncm91
cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdy
b3VwIGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQs
IGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCBkZXZpY2UgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWlj
X2ludCosIGludCwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENv
bXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIHRocmVh
ZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRo
cmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBzbW9vdGhzdGVwICovCi1mbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVk
Z2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCkgewotICAgIGZsb2F0IHQgPSBjbGFtcCgoeCAtIGVk
Z2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMCwgMSk7Ci0gICAgcmV0dXJuIHQgKiB0ICogKDMgLSAy
ICogdCk7Ci19Ci1mbG9hdDIgc21vb3Roc3RlcChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzbW9vdGhzdGVwKHhbMF0s
IHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290aHN0ZXAoeFsxXSwgeVsxXSwgelsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzbW9vdGhzdGVwKGZsb2F0MyB4LCBm
bG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHNtb290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3Rl
cCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVwKHhbMl0sIHlb
Ml0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc21vb3Roc3RlcChmbG9h
dDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBzbW9vdGhzdGVwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNt
b290aHN0ZXAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc21vb3Roc3RlcCh4
WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBzbW9vdGhzdGVwKHhbM10sIHlbM10s
IHpbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzbW9vdGhzdGVwKGZsb2F0
MngyIHgsIGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc21vb3Roc3RlcChmbG9hdDN4
MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzbW9vdGhzdGVwKGZsb2F0
NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwg
elsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFd
LCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11bMV0sIHlbM11b
MV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzbW9vdGhzdGVw
KGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwg
elswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFd
LCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1b
Ml0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsx
XVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNtb290aHN0
ZXAoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBd
LCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1b
MV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0s
IHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Roc3RlcCh4WzJd
WzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
c21vb3Roc3RlcChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVsw
XVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5
WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0s
IHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNtb290aHN0ZXAoeFszXVsw
XSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBd
WzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhb
MV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAo
eFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc21vb3Roc3Rl
cCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhz
dGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290
aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21v
b3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBz
bW9vdGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBzbW9vdGhzdGVwKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0
IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3Rl
cCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhz
dGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290
aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21v
b3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBz
bW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzbW9vdGhzdGVwKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZs
b2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21v
b3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
bW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IHNtb290aHN0ZXAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNtb290aHN0ZXAoZmxvYXQ0eDQgeCwg
ZmxvYXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0s
IHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsy
XSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc21vb3Roc3RlcCh4WzNdWzJdLCB5WzNd
WzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVwKHhbMF1bM10sIHlb
MF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0ZXAoeFsxXVszXSwg
eVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc21vb3Roc3RlcCh4WzJdWzNd
LCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzbW9vdGhzdGVwKHhbM11b
M10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBleHAgKi8KLW5hdGl2ZSBmbG9hdCBleHAoZmxvYXQpOwotZmxvYXQyIGV4cChm
bG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzIGV4cChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBl
eHAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBleHAoZmxvYXQ0IHgpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBleHAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGV4cCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZXhwKGZs
b2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhw
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAoZmxvYXQzeDIgeCkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZXhwKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4WzNdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZXhwKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGV4cChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBl
eHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4
cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBl
eHAoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZXhwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cCh4WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZXhwKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZXhwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZXhwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBleHAoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGV4cChm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4
cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwKHhbM11bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gZXhwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGV4cCh4
WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYWxs
ICovCi1ib29sIGFsbChib29sIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWJvb2wgYWxsKGJvb2wy
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChib29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbChib29sNCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVpbnQgeCkgewotICAgIHJldHVybiB4
ICE9IDA7Ci19Ci1ib29sIGFsbCh1aW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVpbnQzIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KHVpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQgeCkgewot
ICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFsbChpbnQyIHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoaW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFsbChpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChm
bG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYWxsKGZsb2F0MiB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYWxsKGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
dHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYWxsKGZsb2F0MngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzJdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4MiB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsw
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0MngzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYWxsKGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1b
Ml0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHgzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsy
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMl0gIT0gMCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0Mng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzNdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbGwoZmxvYXQzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsy
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsyXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwo
ZmxvYXQ0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsy
XVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bM10gIT0gMCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoYm9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sNHgyIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11b
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDMgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sNHgzIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
M11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KGJvb2wyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDN4
NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzNdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFsbChib29sNHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
Ml1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZmlyc3RiaXRs
b3cgKi8KLXVpbnQgZmlyc3RiaXRsb3codWludCB4KSB7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDApKSAhPSAwKQotICAgICAgICByZXR1cm4gMzE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDQpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDUpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDYpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMjU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDcpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMjQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDgpKSAhPSAwKQotICAgICAgICByZXR1
cm4gMjM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDkpKSAhPSAwKQotICAgICAgICByZXR1cm4g
MjI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIx
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMDsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTk7Ci0g
ICAgaWYgKCh4ICYgdWludCgxIDw8IDEzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE4OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAgIHJldHVybiAxNzsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgMTUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTY7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDE2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE1OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAxNykpICE9IDApCi0gICAgICAgIHJldHVybiAxNDsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgMTgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTM7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDE5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAyMCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMTsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMjEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTA7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDIyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDIzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI0
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI1KSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI2KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI3KSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI4KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI5KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMwKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMxKSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBmaXJzdGJpdGxvdyhpbnQgeCkgewotICAg
IHJldHVybiBmaXJzdGJpdGxvdyh1aW50KHgpKTsKLX0KLXVpbnQyIGZpcnN0Yml0bG93KHVpbnQy
IHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIGZpcnN0Yml0bG93KHVpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3Ri
aXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KHVpbnQ0IHgpIHsKLSAgICB1aW50NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRsb3coeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLXVpbnQyIGZpcnN0Yml0bG93KGludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxv
dyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRsb3coaW50MyB4
KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZp
cnN0Yml0bG93KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGxv
dyhpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRs
b3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRsb3coeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9y
PD0gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3Bl
cmF0b3I8PSh1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMg
b3BlcmF0b3I8PSh1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0odWludDQs
IHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGludDIsIGludDIpOwotbmF0aXZlIGJv
b2wzIG9wZXJhdG9yPD0oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8PShpbnQ0
LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2
ZSBib29sMyBvcGVyYXRvcjw9KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRv
cjw9KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPD0oZmxvYXQyeDIs
IGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPD0oZmxvYXQzeDIsIGZsb2F0M3gy
KTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPD0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2
ZSBib29sMngzIG9wZXJhdG9yPD0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gz
IG9wZXJhdG9yPD0oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9y
PD0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPD0oZmxvYXQy
eDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPD0oZmxvYXQzeDQsIGZsb2F0
M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPD0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQot
LyogRnVuY3Rpb25zIG5hbWVkIGRkeF9maW5lICovCi1mbG9hdCBkZHhfZmluZShmbG9hdCB4KSB7
Ci0gICAgcmV0dXJuIGRkeCh4KTsKLX0KLWZsb2F0MiBkZHhfZmluZShmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBk
ZHhfZmluZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBk
ZHhfZmluZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR4X2ZpbmUoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeF9maW5lKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeF9maW5lKGZsb2F0M3gy
IHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2Zp
bmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGRkeF9maW5lKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZGR4X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGRkeF9maW5lKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2Zp
bmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeF9maW5lKGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IGRkeF9maW5lKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2Zp
bmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4
X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUoeFszXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9maW5lKGZsb2F0Mng0IHgpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeF9maW5lKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4
X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gZGR4X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IGRkeF9maW5lKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2Zp
bmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4
X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUoeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2ZpbmUoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4X2ZpbmUoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yIGNhc3QgKi8KLW5hdGl2ZSBv
cGVyYXRvciB1aW50KGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludChmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgaW50KHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludChmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBpbnQoYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbCh1aW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sKGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChmbG9hdCk7Ci1uYXRp
dmUgb3BlcmF0b3IgYm9vbDIoYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9v
bCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbDIsIGJvb2wpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2wzKGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChi
b29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sMiwgYm9v
bCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbDIsIGJvb2wpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sNChib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wzLCBib29sKTsK
LW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgdWlu
dDIodWludCwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludCwgdWludCwgdWludCk7
Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludDIsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVp
bnQzKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50LCB1aW50
LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MiwgdWludCwgdWludCk7Ci1uYXRp
dmUgb3BlcmF0b3IgdWludDQodWludCwgdWludDIsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVp
bnQ0KHVpbnQsIHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MiwgdWlu
dDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQzLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRv
ciB1aW50NCh1aW50LCB1aW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MihpbnQsIGludCk7Ci1u
YXRpdmUgb3BlcmF0b3IgaW50MyhpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQz
KGludDIsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MyhpbnQsIGludDIpOwotbmF0aXZlIG9w
ZXJhdG9yIGludDQoaW50LCBpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGlu
dDIsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50MiwgaW50KTsKLW5h
dGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50LCBpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0
KGludDIsIGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MywgaW50KTsKLW5hdGl2ZSBv
cGVyYXRvciBpbnQ0KGludCwgaW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyKGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0
aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDMoZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQyLCBmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQyLCBmbG9hdCk7Ci1uYXRp
dmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRv
ciBmbG9hdDQoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDMs
IGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
MngzKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4NChmbG9hdDQsIGZs
b2F0NCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDIoZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7
Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDMoZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRp
dmUgb3BlcmF0b3IgZmxvYXQzeDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQ0eDIoZmxvYXQyLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDR4MyhmbG9hdDMsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0NHg0KGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1uYXRp
dmUgb3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0MngzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDIo
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0
b3IgZmxvYXQzeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDQoZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDIoZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRv
ciBmbG9hdDR4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDR4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Mihib29sMiwgYm9vbDIpOwotbmF0aXZlIG9w
ZXJhdG9yIGJvb2wyeDMoYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMng0KGJv
b2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4Mihib29sMiwgYm9vbDIsIGJvb2wy
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gzKGJvb2wzLCBib29sMywgYm9vbDMpOwotbmF0aXZl
IG9wZXJhdG9yIGJvb2wzeDQoYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDR4Mihib29sMiwgYm9vbDIsIGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9v
bDR4Myhib29sMywgYm9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4
NChib29sNCwgYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Mihi
b29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngzKGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDQoYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDN4Mihib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sM3gzKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDQoYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7
Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4Mihib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wp
OwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDQoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2FkICovCi1uYXRpdmUgaW50IGxvYWQo
ZGV2aWNlIGF0b21pY19pbnQqKTsKLW5hdGl2ZSB1aW50IGxvYWQoZGV2aWNlIGF0b21pY191aW50
Kik7Ci1uYXRpdmUgaW50IGxvYWQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCopOwotbmF0aXZlIHVp
bnQgbG9hZCh0aHJlYWRncm91cCBhdG9taWNfdWludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
Y291bnRfYml0cyAqLwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcnNxcnQgKi8KLWZsb2F0IHJzcXJ0
KGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHNxcnQoeCk7Ci19Ci1mbG9hdDIgcnNxcnQoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJzcXJ0KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgcnNxcnQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHJzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IHJzcXJ0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcnNxcnQo
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJzcXJ0KHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJzcXJ0
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJzcXJ0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiByc3FydChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJz
cXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiByc3FydChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiByc3FydChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IHJzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByc3FydChmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByc3FydChmbG9hdDN4MyB4KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByc3FydChmbG9hdDR4MyB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJzcXJ0KHhbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByc3FydChmbG9hdDJ4NCB4KSB7Ci0gICAg
ZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByc3Fy
dChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJz
cXJ0KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByc3FydChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJz
cXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJzcXJ0KHhb
M11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJzcXJ0KHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IHJzcXJ0KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzcXJ0ICovCi1mbG9hdCBzcXJ0KGZsb2F0IHgpIHsK
LSAgICByZXR1cm4gcG93KHgsIDAuNSk7Ci19Ci1mbG9hdDIgc3FydChmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc3FydChmbG9h
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNxcnQoeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzcXJ0KGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IHNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBzcXJ0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzcXJ0KGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc3FydChmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzcXJ0KGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzcXJ0KGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQo
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNxcnQoZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc3FydChmbG9hdDR4MyB4KSB7Ci0gICAg
ZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc3Fy
dCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
c3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzcXJ0KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
cXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IHNxcnQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IHNxcnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc3Fy
dCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc3FydCh4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBzcXJ0KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhY29zICovCi1uYXRpdmUgZmxvYXQgYWNvcyhmbG9h
dCk7Ci1mbG9hdDIgYWNvcyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYWNvcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGFjb3MoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBhY29zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gYWNvcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhY29zKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhY29zKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgYWNvcyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBhY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gYWNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGFjb3MoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgYWNvcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3Mo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBh
Y29zKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhY29zKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFj
b3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBhY29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNv
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGFjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFjb3MoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGFjb3MoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFjb3Mo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWNvcyh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFjb3MoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBh
Y29zKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBvcGVyYXRvcj4gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7Ci1uYXRpdmUg
Ym9vbCBvcGVyYXRvcj4odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj4oZmxvYXQs
IGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBi
b29sMyBvcGVyYXRvcj4odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4odWlu
dDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oaW50MiwgaW50Mik7Ci1uYXRpdmUg
Ym9vbDMgb3BlcmF0b3I+KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPihpbnQ0
LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZl
IGJvb2wzIG9wZXJhdG9yPihmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+
KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPihmbG9hdDJ4MiwgZmxv
YXQyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I+KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1u
YXRpdmUgYm9vbDR4MiBvcGVyYXRvcj4oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29s
MngzIG9wZXJhdG9yPihmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0
b3I+KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj4oZmxvYXQ0
eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPihmbG9hdDJ4NCwgZmxvYXQy
eDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I+KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRp
dmUgYm9vbDR4NCBvcGVyYXRvcj4oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIG9wZXJhdG9yJiAqLwotYm9vbCBvcGVyYXRvciYoYm9vbCBhLCBib29sIGIpIHsKLSAg
ICByZXR1cm4gYSAmJiBiOwotfQotbmF0aXZlIGludCBvcGVyYXRvciYoaW50LCBpbnQpOwotbmF0
aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdGFu
aCAqLwotbmF0aXZlIGZsb2F0IHRhbmgoZmxvYXQpOwotZmxvYXQyIHRhbmgoZmxvYXQyIHgpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHRhbmgo
ZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0YW5oKHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgdGFuaChmbG9hdDQgeCkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSB0YW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gdGFuaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgdGFuaChm
bG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRh
bmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRhbmgoZmxvYXQzeDIgeCkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFu
aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuaChmbG9hdDR4MiB4KSB7Ci0g
ICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5o
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
dGFuaCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdGFuaChmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0
YW5oKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0YW5oKGZsb2F0
M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRh
bmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRhbmgoZmxvYXQ0eDMgeCkgewot
ICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFu
aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IHRhbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgdGFuaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
dGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSB0YW5oKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4NCB0YW5oKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFu
aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IHRhbmgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbmgoeFsy
XVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdGFuaCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IqICovCi1uYXRpdmUgaW50IG9w
ZXJhdG9yKihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcioodWludCwgdWludCk7Ci1u
YXRpdmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0
b3IqKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IqKHVpbnQyLCB1aW50KTsK
LW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludCwgdWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJh
dG9yKih1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKih1aW50MywgdWludCk7
Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVy
YXRvcioodWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcioodWludDQsIHVpbnQp
OwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50LCB1aW50NCk7Ci1uYXRpdmUgaW50MiBvcGVy
YXRvciooaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvciooaW50MiwgaW50KTsKLW5h
dGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQsIGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGlu
dDMsIGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGludDMsIGludCk7Ci1uYXRpdmUgaW50
MyBvcGVyYXRvciooaW50LCBpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQ0LCBpbnQ0
KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQ0LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0
b3IqKGludCwgaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIsIGZsb2F0Mik7
Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIg
b3BlcmF0b3IqKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQz
LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQzLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0
b3IqKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IqKGZsb2F0NCwgZmxv
YXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxv
YXQyeDIgb3BlcmF0b3IqKGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3Bl
cmF0b3IqKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IqKGZsb2F0
LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gyLCBmbG9hdDN4
Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3Bl
cmF0b3IqKGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IqKGZs
b2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4
Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRp
dmUgZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMg
b3BlcmF0b3IqKGZsb2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZs
b2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0M3gzLCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRp
dmUgZmxvYXQ0eDMgb3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0
eDMgb3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3Iq
KGZsb2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0Mng0LCBm
bG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0Mng0LCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQz
eDQgb3BlcmF0b3IqKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0
b3IqKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IqKGZsb2F0LCBm
bG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBmbG9hdDR4NCk7
Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQ0eDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBj
b3MgKi8KLW5hdGl2ZSBmbG9hdCBjb3MoZmxvYXQpOwotZmxvYXQyIGNvcyhmbG9hdDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNvcyhmbG9h
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3MoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBjb3MoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3Mo
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGNvcyh4
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY29zKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3Mo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjb3MoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Y29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIGNvcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNv
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29z
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3MoZmxvYXQ0eDMg
eCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
Y29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IGNvcyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDQgY29zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDQgY29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3MoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNvcyhmbG9hdDR4NCB4KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29z
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3Mo
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvcyh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3MoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gY29zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGNvcyh4WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I9PSAqLwot
bmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLCBib29sKTsKLW5hdGl2ZSBib29sIG9wZXJhdG9y
PT0oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PSh1aW50LCB1aW50KTsKLW5hdGl2
ZSBib29sIG9wZXJhdG9yPT0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj09
KGJvb2wyLCBib29sMik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShib29sMywgYm9vbDMpOwot
bmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0oYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBib29sMiBvcGVy
YXRvcj09KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PSh1aW50MywgdWlu
dDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29s
MiBvcGVyYXRvcj09KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oaW50Mywg
aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9PShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29s
MiBvcGVyYXRvcj09KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGZs
b2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KGZsb2F0NCwgZmxvYXQ0KTsK
LW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPT0oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBi
b29sM3gyIG9wZXJhdG9yPT0oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9w
ZXJhdG9yPT0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPT0o
ZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPT0oZmxvYXQzeDMs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPT0oZmxvYXQ0eDMsIGZsb2F0NHgz
KTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPT0oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2
ZSBib29sM3g0IG9wZXJhdG9yPT0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0
IG9wZXJhdG9yPT0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9y
PT0oYm9vbDJ4MiwgYm9vbDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj09KGJvb2wzeDIs
IGJvb2wzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9PShib29sNHgyLCBib29sNHgyKTsK
LW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPT0oYm9vbDJ4MywgYm9vbDJ4Myk7Ci1uYXRpdmUgYm9v
bDN4MyBvcGVyYXRvcj09KGJvb2wzeDMsIGJvb2wzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0
b3I9PShib29sNHgzLCBib29sNHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPT0oYm9vbDJ4
NCwgYm9vbDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcj09KGJvb2wzeDQsIGJvb2wzeDQp
OwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I9PShib29sNHg0LCBib29sNHg0KTsKLQotLyogRnVu
Y3Rpb25zIG5hbWVkIG9wZXJhdG9yPj4gKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I+PihpbnQsIHVp
bnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3I+Pih1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIHJlZmxlY3QgKi8KLWZsb2F0IHJlZmxlY3QoZmxvYXQgaSwgZmxvYXQgbikgewotICAg
IHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDIgcmVmbGVjdChmbG9hdDIg
aSwgZmxvYXQyIG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwotfQotZmxv
YXQzIHJlZmxlY3QoZmxvYXQzIGksIGZsb2F0MyBuKSB7Ci0gICAgcmV0dXJuIGkgLSAyICogbiAq
IGRvdChpLCBuKTsKLX0KLWZsb2F0NCByZWZsZWN0KGZsb2F0NCBpLCBmbG9hdDQgbikgewotICAg
IHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IGxpdCAqLwotZmxvYXQ0IGxpdChmbG9hdCBuX2RvdF9sLCBmbG9hdCBuX2RvdF9oLCBmbG9hdCBt
KSB7Ci0gICAgZmxvYXQgYW1iaWVudCA9IDE7Ci0gICAgZmxvYXQgZGlmZnVzZSA9IG1heCgwLCBu
X2RvdF9sKTsKLSAgICBmbG9hdCBzcGVjdWxhciA9IG5fZG90X2wgPCAwIHx8IG5fZG90X2ggPCAw
ID8gMCA6IG5fZG90X2ggKiBtOwotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSBh
bWJpZW50OwotICAgIHJlc3VsdC55ID0gZGlmZnVzZTsKLSAgICByZXN1bHQueiA9IHNwZWN1bGFy
OwotICAgIHJlc3VsdC53ID0gMTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgbG9nMiAqLwotZmxvYXQgbG9nMihmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGxvZyh4
KSAvIGxvZyhmbG9hdCgyKSk7Ci19Ci1mbG9hdDIgbG9nMihmbG9hdDIgeCkgewotICAgIGZsb2F0
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBs
b2cyKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nMihmbG9hdDMgeCkg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBsb2cyKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzIoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsb2cyKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIo
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBsb2cy
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cyKGZsb2F0MngyIHgp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2cyKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
b2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2cyKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
ZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxvZzIoZmxvYXQzeDMgeCkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9n
Mih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nMihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMih4WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4NCBsb2cyKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMih4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsb2cyKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9n
Mih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGxvZzIoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IGxvZzIoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cy
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nMih4WzNd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMih4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSBsb2cyKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBub3JtYWxpemUgKi8KLWZsb2F0IG5vcm1hbGl6ZShmbG9hdCB4
KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDIgbm9ybWFsaXplKGZsb2F0
MiB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDMgbm9ybWFsaXplKGZs
b2F0MyB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDQgbm9ybWFsaXpl
KGZsb2F0NCB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGxkZXhwICovCi1mbG9hdCBsZGV4cChmbG9hdCB4LCBmbG9hdCBlKSB7Ci0gICAg
cmV0dXJuIHggKiBwb3coMiwgZSk7Ci19Ci1mbG9hdDIgbGRleHAoZmxvYXQyIHgsIGZsb2F0MiB5
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGxkZXhwKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0g
bGRleHAoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwgeVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsZGV4cChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxkZXhw
KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGxkZXhwKHhbM10sIHlbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsZGV4cChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7
Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MiBsZGV4cChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsZGV4cChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0g
ICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGxkZXhwKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhb
MF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGxkZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MyBsZGV4cChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhw
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsZGV4cChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxk
ZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBsZGV4cChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxkZXhwKHhbM11b
MF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxk
ZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGxkZXhwKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4NCBsZGV4cChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxk
ZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBs
ZGV4cChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1b
Ml0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxk
ZXhwKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBs
ZGV4cChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxkZXhwKHhbM11bMF0sIHlbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxkZXhwKHhbM11b
MV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxk
ZXhwKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10s
IHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGxkZXhwKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFsz
XVszXSA9IGxkZXhwKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBhYnMgKi8KLXVpbnQgYWJzKHVpbnQgeCkgewotICAgIHJldHVy
biB4OwotfQotaW50IGFicyhpbnQgeCkgewotICAgIGlmICh4IDwgMCkKLSAgICAgICAgcmV0dXJu
IC14OwotICAgIHJldHVybiB4OwotfQotZmxvYXQgYWJzKGZsb2F0IHgpIHsKLSAgICBpZiAoeCA8
IDApCi0gICAgICAgIHJldHVybiAteDsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQyIGFicyh1aW50
MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGFi
cyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhYnModWludDQgeCkgewotICAgIHVpbnQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJz
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMo
eFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgYWJzKGludDIgeCkgewotICAgIGlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
YnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYWJzKGludDMgeCkgewotICAg
IGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQ0IGFicyhpbnQ0IHgpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MiBhYnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhYnMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgYWJzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGFicyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYWJz
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
YWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
YnMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFicyhmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBhYnMoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGFicyhmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhYnMoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFi
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJz
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDMgYWJzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
YWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBh
YnMoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFicyhmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBhYnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFicyhmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhYnMoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBhYnMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJz
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFicyh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhYnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gYWJzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFicyh4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSBhYnMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgcm91bmQgKi8KLW5hdGl2ZSBmbG9hdCByb3VuZChmbG9hdCk7
Ci1mbG9hdDIgcm91bmQoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcm91bmQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5k
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgcm91bmQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJvdW5kKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByb3VuZChmbG9hdDJ4MiB4KSB7Ci0gICAg
ZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5k
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiByb3VuZChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByb3VuZChmbG9hdDR4MiB4KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IHJvdW5kKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByb3VuZChm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJv
dW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBy
b3VuZChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJv
dW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBy
b3VuZChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJv
dW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IHJvdW5kKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByb3VuZChm
bG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJv
dW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJvdW5kKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4NCByb3VuZChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJv
dW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHJvdW5kKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IHJvdW5kKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4NCByb3VuZChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5k
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IHJvdW5kKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJvdW5kKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IHJvdW5kKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJvdW5kKHhbM11bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBtdWwgKi8KLXVpbnQg
bXVsKHVpbnQgeCwgdWludCB5KSB7Ci0gICAgcmV0dXJuIHggKiB5OwotfQotaW50IG11bChpbnQg
eCwgaW50IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQgeCwgZmxv
YXQgeSkgewotICAgIHJldHVybiB4ICogeTsKLX0KLXVpbnQyIG11bCh1aW50IHgsIHVpbnQyIHkp
IHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVz
dWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQyIG11bCh1aW50
MiB4LCB1aW50IHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAq
IHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVp
bnQzIG11bCh1aW50IHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJd
ID0geCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIG11bCh1aW50MyB4LCB1
aW50IHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAq
IHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0geCAqIHlb
M107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50NCB4LCB1aW50IHkpIHsK
LSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0
WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmVzdWx0WzNd
ID0geFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgbXVsKGludCB4LCBpbnQy
IHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICBy
ZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MiBtdWwoaW50
MiB4LCBpbnQgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5
OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQz
IG11bChpbnQgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
eCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAq
IHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGludDMgeCwgaW50IHkpIHsK
LSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRb
MV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotaW50NCBtdWwoaW50IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJl
c3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1pbnQ0IG11bChpbnQ0IHgsIGludCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQgeCwgZmxvYXQyIHkpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9
IHggKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0MiB4LCBm
bG9hdCB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsK
LSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IG11bChmbG9hdCB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJd
ID0geCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQzIHgs
IGZsb2F0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5
OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRb
MV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXN1bHRbM10g
PSB4ICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDQgeCwg
ZmxvYXQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7
Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0g
ICAgcmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IG11bChmbG9hdCB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBd
OwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHgg
KiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQyeDIg
eCwgZmxvYXQgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4
WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRb
MF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0IHgsIGZsb2F0M3gyIHkpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4LCBmbG9hdCB5KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJl
c3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5
OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhb
MV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0
NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRb
MV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAg
ICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
PSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0IHkpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVz
dWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzNdWzBdID0geFszXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFsw
XVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJd
WzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdCB4LCBmbG9hdDJ4MyB5KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9
IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQgeSkgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBd
WzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0IHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0g
eCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11
bChmbG9hdDN4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5Owot
ICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1b
MV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsx
XSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJl
c3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQgeCwgZmxvYXQ0eDMg
eSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4
ICogeVsyXVswXTsKLSAgICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRb
MF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVsz
XVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0g
PSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1
bHRbM11bMl0gPSB4ICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
bXVsKGZsb2F0NHgzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzBdID0geFsz
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAq
IHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
eFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsz
XSA9IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQgeSkgewotICAg
IGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICog
eTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4
WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRb
MF1bM10gPSB4WzBdWzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0IHgsIGZsb2F0M3g0IHkpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJd
WzNdID0geCAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChm
bG9hdDN4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAg
IHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0g
KiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9
IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3Vs
dFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5Owot
ICAgIHJlc3VsdFswXVszXSA9IHhbMF1bM10gKiB5OwotICAgIHJlc3VsdFsxXVszXSA9IHhbMV1b
M10gKiB5OwotICAgIHJlc3VsdFsyXVszXSA9IHhbMl1bM10gKiB5OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsKLSAgICByZXN1bHRb
MF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4ICogeVsz
XVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10g
PSB4ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4ICogeVsyXVszXTsKLSAgICByZXN1
bHRbM11bM10gPSB4ICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
bXVsKGZsb2F0NHg0IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzBdID0geFsz
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAq
IHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
eFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0gICAgcmVzdWx0
WzBdWzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0geFsyXVszXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzNdID0geFszXVsz
XSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgbXVsKHVpbnQyIHgsIHVpbnQyIHkp
IHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotdWludCBtdWwodWludDMgeCwgdWludDMgeSkg
ewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci11aW50IG11bCh1aW50NCB4LCB1aW50NCB5KSB7
Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWludCBtdWwoaW50MiB4LCBpbnQyIHkpIHsKLSAg
ICByZXR1cm4gZG90KHgsIHkpOwotfQotaW50IG11bChpbnQzIHgsIGludDMgeSkgewotICAgIHJl
dHVybiBkb3QoeCwgeSk7Ci19Ci1pbnQgbXVsKGludDQgeCwgaW50NCB5KSB7Ci0gICAgcmV0dXJu
IGRvdCh4LCB5KTsKLX0KLWZsb2F0IG11bChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICByZXR1
cm4gZG90KHgsIHkpOwotfQotZmxvYXQgbXVsKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIHJl
dHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAg
cmV0dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0MngyIHkpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9
IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBt
dWwoZmxvYXQyeDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFsw
XSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSAr
PSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQyIHgsIGZsb2F0M3gyIHkpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhb
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0g
Kz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0MyB5KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4
WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVz
dWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsK
LSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBtdWwoZmxvYXQyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJl
c3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdICog
eVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDR4MiB4LCBm
bG9hdDQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICBy
ZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5
WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMF0gKz0g
eFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFsw
XVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3Vs
dFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAqIHlbM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQzIHgsIGZsb2F0MngzIHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICBy
ZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07
Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFd
ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICog
eVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsy
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsx
XSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSAr
PSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgbXVsKGZsb2F0M3gzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1
bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJd
OwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwot
ICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsx
XSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAq
IHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSAr
PSB4WzJdWzJdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9h
dDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
MDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhb
MV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXSAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXSArPSB4
WzJdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDR4
MyB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsK
LSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1b
MF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRb
MF0gKz0geFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0g
Kz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAg
IHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAq
IHlbM107Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlb
MF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4
WzJdWzJdICogeVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQ0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVsw
XTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsK
LSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1b
MV0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0g
KiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbM10g
PSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0g
eFsxXVszXSAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQ0
IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10gKiB5
WzFdWzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0g
eFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM10gKiB5WzJdWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0MyB5KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBd
WzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICBy
ZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5
WzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdWzJdICogeVsyXTsKLSAgICByZXN1bHRbM10gPSAw
OwotICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsx
XVszXSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl1bM10gKiB5WzJdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl0gPSAw
OwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsx
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXSArPSB4WzNdICogeVsyXVszXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFsz
XSArPSB4WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzNdICs9IHhbMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXSArPSB4WzNdICog
eVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDR4NCB4LCBm
bG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICBy
ZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5
WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMF0gKz0g
eFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFsw
XVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3Vs
dFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAqIHlbM107
Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0g
ICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdWzJd
ICogeVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107Ci0gICAgcmVzdWx0WzNd
ID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXVszXSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9
IHhbMV1bM10gKiB5WzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJdWzNdICogeVsyXTsKLSAgICBy
ZXN1bHRbM10gKz0geFszXVszXSAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFd
ICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0Mngy
IHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1b
MV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0g
MDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFd
WzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0g
PSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngyIG11bChmbG9hdDN4MiB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4LCBmbG9hdDN4
MyB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICog
eVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwot
ICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNd
WzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsx
XSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlb
M11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11bChmbG9hdDR4MiB4LCBm
bG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3Vs
dFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11b
MV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICog
eVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBd
WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
Ml1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsK
LSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFd
ICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0NHgy
IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVsw
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11b
MF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1
bHRbM11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJd
WzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAq
IHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFsw
XVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwot
ICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0g
Kz0geFszXVsxXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11
bChmbG9hdDJ4MyB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0g
PSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0
M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRb
M11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0g
KiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsx
XSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsy
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIG11bChmbG9hdDN4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBd
WzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsw
XVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0g
PSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0g
KiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQzeDMg
eCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBd
ID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBd
ICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsx
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1b
Ml0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
WzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJd
WzJdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0
M3gzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJd
WzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsy
XVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRb
MF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
Ml1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsx
XSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlb
M11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3Vs
dFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNd
WzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICog
eVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdDR4MyB4LCBmbG9hdDJ4NCB5KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsw
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsy
XVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhb
MF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJd
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICog
eVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBd
WzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRb
Ml1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
Ml1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0NHg0
IHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlb
Ml1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVsw
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJd
WzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0g
ICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFsz
XVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFszXVsxXSAq
IHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsw
XVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsK
LSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJd
ICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsy
XVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0
WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAg
cmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4
WzJdWzJdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFszXVsyXSAqIHlbM11bM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDJ4
MiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBd
WzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDN4MiB5
KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0g
PSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
MV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsz
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAg
IHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0g
eFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1b
M10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5
WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQyeDQgeCwg
ZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAw
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1b
MF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsx
XVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0g
Kz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJd
ID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAg
cmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4
WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVsz
XSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVsz
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11b
M10gPSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVswXTsKLSAgICByZXN1
bHRbM11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IG11bChmbG9hdDN4NCB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9
IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsK
LSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNd
ICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsx
XVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0M3g0IHgsIGZs
b2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1b
MV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAg
ICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0g
MDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBd
WzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFsw
XVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10g
PSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhb
MF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDN4NCB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4
WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3Vs
dFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVsw
XSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1b
MV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1b
MV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNd
WzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVz
dWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJd
WzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsx
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsy
XVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0g
Kz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
M11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICBy
ZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhb
Ml1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4
WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVsz
XSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFszXVszXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNdWzBdOwotICAg
IHJlc3VsdFszXVszXSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bM10gKz0g
eFsyXVszXSAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChm
bG9hdDR4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNd
OwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11b
MF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJl
c3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFd
WzNdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhb
M11bM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNd
ICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzFdWzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBd
ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVsw
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVsz
XTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICog
eVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNd
WzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsx
XVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMl0g
PSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAgICBy
ZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNdWzNdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVszXSArPSB4
WzNdWzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVsz
XSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXVszXSArPSB4WzNdWzNdICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVsw
XSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1b
MF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0g
MDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNd
WzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICog
eVszXVsyXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVz
dWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsz
XVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICBy
ZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhb
MV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsK
LSAgICByZXN1bHRbM11bMV0gKz0geFszXVsxXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzJd
ID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsy
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11b
Ml0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXN1
bHRbM11bMl0gKz0geFszXVsyXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAg
ICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJd
WzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFszXVszXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFszXVszXSAq
IHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsKLSAgICByZXN1bHRbM11bM10gKz0geFsw
XVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMV1bM10gKiB5WzNdWzFdOwot
ICAgIHJlc3VsdFszXVszXSArPSB4WzJdWzNdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bM10g
Kz0geFszXVszXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIHJhZGlhbnMgKi8KLWZsb2F0IHJhZGlhbnMoZmxvYXQgeCkgewotICAgIHJldHVy
biB4ICogMy4xNDE1OSAvIDE4MDsKLX0KLWZsb2F0MiByYWRpYW5zKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5zKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByYWRp
YW5zKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRp
YW5zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gcmFkaWFucyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJhZGlhbnMo
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBy
YWRpYW5zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJhZGlhbnMoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIHJhZGlhbnMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiByYWRpYW5zKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJhZGlhbnMoZmxvYXQ0
eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByYWRpYW5z
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5z
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJhZGlhbnMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFu
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFu
cyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcmFkaWFucyhmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlh
bnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlh
bnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlh
bnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyByYWRpYW5zKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRp
YW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRp
YW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByYWRp
YW5zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRp
YW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMoeFszXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJhZGlhbnMoZmxvYXQyeDQgeCkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFk
aWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFk
aWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHJhZGlhbnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3g0IHJhZGlhbnMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJh
ZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJh
ZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJh
ZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJh
ZGlhbnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmFkaWFucyh4WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcmFkaWFucyhmbG9hdDR4NCB4KSB7Ci0gICAg
ZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
YWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
YWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBy
YWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBy
YWRpYW5zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBy
YWRpYW5zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJhZGlhbnMoeFszXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNlaWwgKi8KLW5hdGl2
ZSBmbG9hdCBjZWlsKGZsb2F0KTsKLWZsb2F0MiBjZWlsKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNl
aWwoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjZWlsKGZsb2F0MyB4KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGNlaWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY2VpbCh4WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNlaWwoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGNlaWwo
eFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNlaWwoZmxvYXQyeDIgeCkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Y2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjZWlsKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBj
ZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNlaWwoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNl
aWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNlaWwoZmxvYXQyeDMgeCkgewot
ICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2Vp
bCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY2VpbChmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWls
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Y2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjZWlsKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBj
ZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjZWlsKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IGNlaWwoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjZWlsKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IGNlaWwoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjZWls
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gY2VpbCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
Y2VpbChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNlaWwo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBj
ZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjZWlsKHhbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjZWlsKHhbMl1bM10pOwotICAg
IHJlc3VsdFszXVszXSA9IGNlaWwoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIGFzaW4gKi8KLW5hdGl2ZSBmbG9hdCBhc2luKGZsb2F0KTsKLWZs
b2F0MiBhc2luKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MyBhc2luKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gYXNpbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGFzaW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFz
aW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
c2luKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGFzaW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFz
aW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBhc2luKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNp
bih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IGFzaW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2lu
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIGFzaW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgYXNpbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFz
aW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MyBhc2luKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXNp
bih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFzaW4oeFsz
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFzaW4oZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFzaW4o
ZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
c2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4
WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXNpbih4WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXNpbihmbG9hdDR4NCB4KSB7Ci0gICAg
ZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXNp
bih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBhc2luKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFzaW4oeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFzdWlu
dCAqLwotdWludCBhc3VpbnQoaW50IHgpIHsKLSAgICByZXR1cm4gdWludCh4KTsKLX0KLXVpbnQy
IGFzdWludChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1
aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludDMgYXN1aW50KGludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWlu
dDQgYXN1aW50KGludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFzdWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXVpbnQgYXN1aW50KHVpbnQgeCkgewotICAgIHJldHVybiB4OwotfQot
dWludDIgYXN1aW50KHVpbnQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQzIGFzdWludCh1
aW50MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50NCBhc3VpbnQodWludDQgeCkgewotICAg
IHJldHVybiB4OwotfQotbmF0aXZlIHVpbnQgYXN1aW50KGZsb2F0KTsKLXVpbnQyIGFzdWludChm
bG9hdDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50MyBhc3VpbnQoZmxvYXQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGFz
dWludChmbG9hdDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3Vp
bnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFzdWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHBvdyAqLwotbmF0aXZlIGZsb2F0IHBv
dyhmbG9hdCwgZmxvYXQpOwotZmxvYXQyIHBvdyhmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBw
b3coZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0sIHlbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IHBvdyh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IHBvdyhmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBwb3coeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcG93KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9
IHBvdyh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcG93KGZs
b2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBwb3coZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAg
IGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3co
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcG93KGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcG93
KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHBv
dyh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcG93
KGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBv
dyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBw
b3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHBv
dyhmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBw
b3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyBwb3coZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVswXSwg
eVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11bMV0s
IHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHBvdyh4WzNdWzJd
LCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcG93KGZsb2F0Mng0
IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgcG93KGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFd
WzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBwb3coeFsy
XVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHBvdyhmbG9h
dDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4
WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBwb3co
eFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcG93KHhbMl1bM10sIHlbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IHBvdyh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdGFuICovCi1uYXRpdmUgZmxvYXQg
dGFuKGZsb2F0KTsKLWZsb2F0MiB0YW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4oeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyB0YW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4o
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgdGFuKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSB0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IHRhbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0YW4oeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIHRhbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0
YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
dGFuKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSB0YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRhbihmbG9h
dDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRhbihm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRh
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFu
KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0YW4oZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
dGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSB0YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRhbihmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSB0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRhbihm
bG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRh
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW4o
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0YW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
dGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0
YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRh
bih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbih4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSB0YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIGZtYSAqLwotZmxvYXQgZm1hKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopIHsKLSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIGZtYShmbG9hdDIg
eCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBmbWEoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1hKHhbMV0sIHlb
MV0sIHpbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZm1hKGZsb2F0MyB4LCBm
bG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGZtYSh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwg
elsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZm1hKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgZm1hKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtYSh4WzBdLCB5WzBdLCB6WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gZm1hKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IGZtYSh4WzNdLCB5WzNd
LCB6WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZm1hKGZsb2F0MngyIHgs
IGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1h
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBmbWEoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgZm1hKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsK
LSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgZm1hKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZtYShmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9h
dDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVsw
XSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbWEoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMg
eikgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBd
LCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVszXVswXSwgelsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1h
KHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZtYSh4WzNd
WzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
Zm1hKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1h
KHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFd
WzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
Zm1hKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1h
KHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFd
WzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwg
eVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhbMF1bM10sIHlbMF1b
M10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNdLCB5WzFdWzNdLCB6
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwgeVsyXVszXSwgelsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZtYShmbG9hdDR4NCB4LCBmbG9h
dDR4NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1h
KHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtYSh4WzNd
WzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbWEoeFszXVsxXSwgeVszXVsxXSwgelszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gZm1hKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGZtYSh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBm
bWEoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1hKHhb
Ml1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZtYSh4WzNdWzNd
LCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgZGV0ZXJtaW5hbnQgKi8KLWZsb2F0IGRldGVybWluYW50KGZsb2F0IHgpIHsKLSAg
ICByZXR1cm4geDsKLX0KLWZsb2F0IGRldGVybWluYW50KGZsb2F0MngyIHgpIHsKLSAgICByZXR1
cm4geFswXVswXSAqIHhbMV1bMV0gLSB4WzFdWzBdICogeFswXVsxXTsKLX0KLWZsb2F0IGRldGVy
bWluYW50KGZsb2F0M3gzIHgpIHsKLSAgICByZXR1cm4geFswXVswXSAqIHhbMV1bMV0gKiB4WzJd
WzJdICsKLSAgICAgICAgICAgeFsxXVswXSAqIHhbMl1bMV0gKiB4WzBdWzJdICsKLSAgICAgICAg
ICAgeFsyXVswXSAqIHhbMF1bMV0gKiB4WzFdWzJdIC0KLSAgICAgICAgICAgeFswXVsyXSAqIHhb
MV1bMV0gKiB4WzJdWzBdIC0KLSAgICAgICAgICAgeFsxXVsyXSAqIHhbMl1bMV0gKiB4WzBdWzBd
IC0KLSAgICAgICAgICAgeFsyXVsyXSAqIHhbMF1bMV0gKiB4WzFdWzBdOwotfQotZmxvYXQgZGV0
ZXJtaW5hbnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBmbG9hdDN4MyBt
aW5vcjsKLSAgICBtaW5vclswXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzJd
WzFdOwotICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhbMV1b
Ml07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzJdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFszXVsy
XTsKLSAgICBtaW5vclswXVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzJdWzNd
OwotICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyB4WzBd
WzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBdWzBdID0geFswXVsxXTsKLSAg
ICBtaW5vclsxXVswXSA9IHhbMl1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4WzNdWzFdOwotICAg
IG1pbm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhbMl1bMl07Ci0gICAg
bWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFswXVszXTsKLSAgICBt
aW5vclsxXVsyXSA9IHhbMl1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzNdWzNdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAtIHhbMV1bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7Ci0gICAgbWlub3Jb
MF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsxXVsxXTsKLSAgICBtaW5vclsy
XVswXSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBdWzJdOwotICAgIG1pbm9yWzFd
WzFdID0geFsxXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07Ci0gICAgbWlub3JbMF1b
Ml0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsxXVszXTsKLSAgICBtaW5vclsyXVsy
XSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgeFsyXVswXSAqIGRldGVybWluYW50
KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4
WzFdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFsyXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhb
MF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzFdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFsy
XVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzFd
WzNdOwotICAgIG1pbm9yWzJdWzJdID0geFsyXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgLSB4
WzNdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBmbG9vciAqLwotbmF0aXZlIGZsb2F0IGZsb29yKGZsb2F0KTsKLWZs
b2F0MiBmbG9vcihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBmbG9vcihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBmbG9vcihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmxvb3IoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZsb29yKGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIGZsb29yKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxv
b3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZsb29yKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxv
b3IoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZsb29yKGZsb2F0
MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3Io
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZsb29y
KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
Zmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3Io
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZsb29y
KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
Zmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZmxvb3Io
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZmxv
b3IoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZsb29yKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3Io
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3IoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3g0IGZsb29yKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3Io
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxv
b3IoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gZmxvb3IoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IGZsb29yKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxv
b3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gZmxvb3IoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3IoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
Zmxvb3IoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZmxvb3IoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNyb3NzICovCi1mbG9hdDMg
Y3Jvc3MoZmxvYXQzIHUsIGZsb2F0MyB2KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHQueCA9IHUueSAqIHYueiAtIHUueiAqIHYueTsKLSAgICByZXN1bHQueSA9IHUueiAqIHYueCAt
IHUueCAqIHYuejsKLSAgICByZXN1bHQueiA9IHUueCAqIHYueSAtIHUueSAqIHYueDsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNmaW5pdGUgKi8KLW5hdGl2
ZSBib29sIGlzZmluaXRlKGZsb2F0KTsKLWJvb2wyIGlzZmluaXRlKGZsb2F0MiB4KSB7Ci0gICAg
Ym9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc2Zp
bml0ZShmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zp
bml0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBpc2Zpbml0ZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNmaW5p
dGUoZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5p
dGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gaXNmaW5pdGUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNmaW5pdGUoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkT3IgKi8K
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhy
ZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0
b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
T3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhy
ZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0
b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
T3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQq
LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3Jv
dXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGlu
dCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXRhbjIgKi8KLW5hdGl2ZSBmbG9hdCBhdGFuMihm
bG9hdCwgZmxvYXQpOwotZmxvYXQyIGF0YW4yKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbjIoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBhdGFuMihmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4yKHhbMV0s
IHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgYXRhbjIoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBhdGFuMih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhdGFuMih4WzJdLCB5WzJd
KTsKLSAgICByZXN1bHRbM10gPSBhdGFuMih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgYXRhbjIoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0
MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFu
Mih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYXRh
bjIoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgYXRhbjIoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4
WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBhdGFuMih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDMgYXRhbjIoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFu
Mih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgYXRhbjIoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
dGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFu
Mih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgYXRh
bjIoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
dGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuMih4WzNdWzFd
LCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFu
Mih4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXRh
bjIoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBh
dGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuMih4WzFdWzNd
LCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRhbjIoZmxvYXQz
eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBd
WzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBh
dGFuMih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuMih4WzJdWzNd
LCB5WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRhbjIoZmxvYXQ0
eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJd
WzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuMih4WzNdWzFdLCB5WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBh
dGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuMih4WzNdWzJd
LCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBhdGFuMih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSBhdGFuMih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhdGFu
Mih4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lk
IERldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBmbW9kICovCi0KLWZsb2F0IGZtb2QoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHVpbnQgd2hv
bGUgPSB1aW50KHggLyB5KTsKLSAgICBmbG9hdCBtdWx0aXBsZSA9IGZsb2F0KHdob2xlKSAqIHk7
Ci0gICAgcmV0dXJuIHggLSBtdWx0aXBsZTsKLX0KLWZsb2F0MiBmbW9kKGZsb2F0MiB4LCBmbG9h
dDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1vZCh4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgZm1vZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Zm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbW9kKHhbMl0sIHlbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZm1vZChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbW9kKHhbMl0s
IHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGZtb2QoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIGZtb2QoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9k
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmbW9k
KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
bW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIGZtb2QoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4
WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11bMF0sIHlbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBm
bW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2QoeFszXVsxXSwg
eVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZtb2QoZmxvYXQyeDMg
eCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4
WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZm1vZChm
bG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1v
ZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbW9kKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1v
ZCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBmbW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZtb2QoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IGZtb2QoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1v
ZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBmbW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsxXVsz
XSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZtb2QoZmxvYXQz
eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1v
ZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBmbW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsxXVsz
XSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1vZCh4WzJdWzNdLCB5WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZm1vZChmbG9hdDR4NCB4LCBmbG9hdDR4
NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1v
ZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBmbW9kKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGZtb2QoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4
WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbW9kKHhbMl1bM10sIHlbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IGZtb2QoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLSAqLwotbmF0aXZl
IGludCBvcGVyYXRvci0oaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3ItKHVpbnQsIHVp
bnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGludCBv
cGVyYXRvci0oaW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQpOwotbmF0aXZlIHVp
bnQyIG9wZXJhdG9yLSh1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLSh1aW50
LCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1
aW50MyBvcGVyYXRvci0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci0odWlu
dCwgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50MywgdWludCk7Ci1uYXRpdmUg
dWludDQgb3BlcmF0b3ItKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3ItKHVp
bnQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludDQsIHVpbnQpOwotbmF0aXZl
IGludDIgb3BlcmF0b3ItKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3ItKGludCwg
aW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQzIG9w
ZXJhdG9yLShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQsIGludDMpOwot
bmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0o
aW50NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50LCBpbnQ0KTsKLW5hdGl2ZSBp
bnQ0IG9wZXJhdG9yLShpbnQ0LCBpbnQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQy
LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Mik7Ci1uYXRp
dmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0
b3ItKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9h
dDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQ0IG9wZXJhdG9yLShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLShm
bG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0NCwgZmxvYXQpOwot
bmF0aXZlIGludDIgb3BlcmF0b3ItKGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMp
OwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGludDQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0o
ZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0
IG9wZXJhdG9yLShmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4Miwg
ZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4MiwgZmxvYXQpOwot
bmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0
MngyIG9wZXJhdG9yLShmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0
M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4
Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0o
ZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQsIGZs
b2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJh
dG9yLShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9h
dCwgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4MywgZmxvYXQp
OwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMg
b3BlcmF0b3ItKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3It
KGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzLCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9h
dDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVy
YXRvci0oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0
eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMpOwotbmF0aXZl
IGZsb2F0Mng0IG9wZXJhdG9yLShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0
IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShm
bG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShmbG9hdDJ4NCk7Ci1u
YXRpdmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxv
YXQzeDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0
b3ItKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0M3g0
KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2
ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBv
cGVyYXRvci0oZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxv
YXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbWluICovCi11aW50IG1pbih1aW50IHgsIHVp
bnQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotdWludDIgbWluKHVpbnQyIHgs
IHVpbnQyIHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0s
IHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludDMgbWluKHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4
WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQ0IG1pbih1aW50NCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
aW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJl
c3VsdFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IG1p
bihpbnQgeCwgaW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLWludDIgbWlu
KGludDIgeCwgaW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWlu
KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotaW50MyBtaW4oaW50MyB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWlu
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotaW50NCBtaW4oaW50NCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWlu
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXN1
bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IG1p
bihmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geSA6IHg7Ci19Ci1mbG9h
dDIgbWluKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1pbihmbG9hdDMgeCwgZmxvYXQzIHkp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhb
Ml0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbWluKGZsb2F0NCB4LCBm
bG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0s
IHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWluKHhbM10sIHlbM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtaW4oZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IG1pbihmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MiBtaW4oZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwgeVszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0sIHlbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtaW4oZmxvYXQyeDMgeCwgZmxvYXQyeDMg
eSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1b
Ml0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbWluKGZsb2F0M3gzIHgsIGZsb2F0M3gz
IHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsy
XVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1pbihmbG9h
dDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4
WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsyXSwgeVsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWluKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtaW4oZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAg
IGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4o
eFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWlu
KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtaW4o
ZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWlu
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1p
bih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBt
aW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWluKHhbMV1bM10sIHlb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1pbih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbWluKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
bWluKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwg
eVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBtaW4oeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWluKHhbMF1bM10s
IHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBtaW4oeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNd
ID0gbWluKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZFhvciAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRY
b3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZp
Y2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY19pbnQq
LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBh
dG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwg
dGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9y
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50
KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3Io
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICovCi1uYXRpdmUg
dm9pZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCB0cnVuYyAqLwotbmF0aXZlIGZsb2F0IHRydW5jKGZsb2F0KTsKLWZsb2F0MiB0cnVuYyhm
bG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdHJ1bmMoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyB0cnVuYyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gdHJ1bmMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gdHJ1bmMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0cnVu
YyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdHJ1bmMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdHJ1
bmMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gdHJ1bmMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIHRydW5jKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
dHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIHRydW5jKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIHRydW5jKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1
bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gdHJ1bmMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRydW5jKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1
bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRydW5jKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1
bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRydW5jKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1
bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdHJ1bmMoeFszXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRydW5jKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1
bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRy
dW5jKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1
bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
dHJ1bmMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHRydW5jKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1
bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
dHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdHJ1bmMo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdHJ1bmMoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdHJ1bmMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1heCAqLwotdWludCBtYXgodWludCB4LCB1aW50
IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLXVpbnQyIG1heCh1aW50MiB4LCB1
aW50MiB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIG1heCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgdWludDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsx
XSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50NCBtYXgodWludDQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1
bHRbM10gPSBtYXgoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0KLWlu
dCBtYXgoaW50IHgsIGludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7Ci19Ci1pbnQy
IG1heChpbnQyIHgsIGludDIgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbWF4KGludDMgeCwgaW50MyB5KSB7Ci0gICAgaW50MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9
IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWludDQgbWF4KGludDQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9
IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gbWF4KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
ZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsK
LX0KLWZsb2F0MiBtYXgoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhb
MV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWF4KGZsb2F0MyB4LCBm
bG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0s
IHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtYXgoZmxv
YXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBt
YXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJl
c3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtYXgoeFszXSwgeVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1heChmbG9hdDJ4MiB4LCBmbG9h
dDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4
WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgbWF4KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIG1heChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4
KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4WzNdWzBdLCB5WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1h
eCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgoeFszXVsxXSwgeVsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1heChmbG9hdDJ4MyB4LCBm
bG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1h
eCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBt
YXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtYXgoZmxvYXQzeDMgeCwg
ZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBt
YXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IG1heCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
bWF4KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1heCh4WzJdWzJd
LCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYXgoeFszXVsyXSwgeVszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1heChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IG1heChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1b
MF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBd
WzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYXgoeFsx
XVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWF4KHhbMl1bM10sIHlbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtYXgoZmxvYXQ0eDQgeCwgZmxvYXQ0
eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhb
MF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4
WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYXgo
eFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1bM10sIHlbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1heCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSBtYXgoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXNpbnQgKi8KLWludCBhc2ludChpbnQgeCkgewotICAg
IHJldHVybiB4OwotfQotaW50MiBhc2ludChpbnQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWlu
dDMgYXNpbnQoaW50MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQ0IGFzaW50KGludDQgeCkg
ewotICAgIHJldHVybiB4OwotfQotaW50IGFzaW50KHVpbnQgeCkgewotICAgIHJldHVybiBpbnQo
eCk7Ci19Ci1pbnQyIGFzaW50KHVpbnQyIHgpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotaW50MyBhc2ludCh1aW50MyB4KSB7Ci0gICAgaW50MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWludDQgYXNpbnQodWludDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFzaW50KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW50KHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1uYXRpdmUgaW50IGFzaW50KGZsb2F0KTsKLWludDIgYXNpbnQoZmxvYXQy
IHgpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBh
c2ludChmbG9hdDMgeCkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFz
aW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGFzaW50KGZsb2F0NCB4KSB7
Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGNsYW1wICovCi1uYXRpdmUgdWludCBjbGFtcCh1aW50LCB1aW50LCB1aW50
KTsKLW5hdGl2ZSB1aW50MiBjbGFtcCh1aW50MiwgdWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50
MyBjbGFtcCh1aW50MywgdWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBjbGFtcCh1aW50NCwg
dWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQgY2xhbXAoaW50LCBpbnQsIGludCk7Ci1uYXRpdmUg
aW50MiBjbGFtcChpbnQyLCBpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQzIGNsYW1wKGludDMsIGlu
dDMsIGludDMpOwotbmF0aXZlIGludDQgY2xhbXAoaW50NCwgaW50NCwgaW50NCk7Ci1uYXRpdmUg
ZmxvYXQgY2xhbXAoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyIGNsYW1wKGZs
b2F0MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBjbGFtcChmbG9hdDMsIGZsb2F0
MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgY2xhbXAoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7
Ci1uYXRpdmUgZmxvYXQyeDIgY2xhbXAoZmxvYXQyeDIsIGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1u
YXRpdmUgZmxvYXQzeDIgY2xhbXAoZmxvYXQzeDIsIGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRp
dmUgZmxvYXQ0eDIgY2xhbXAoZmxvYXQ0eDIsIGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUg
ZmxvYXQyeDMgY2xhbXAoZmxvYXQyeDMsIGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxv
YXQzeDMgY2xhbXAoZmxvYXQzeDMsIGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0
eDMgY2xhbXAoZmxvYXQ0eDMsIGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQg
Y2xhbXAoZmxvYXQyeDQsIGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgY2xh
bXAoZmxvYXQzeDQsIGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgY2xhbXAo
ZmxvYXQ0eDQsIGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVy
YXRvcjwgKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPChpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBv
cGVyYXRvcjwodWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwodWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBv
cGVyYXRvcjwodWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwodWludDQsIHVp
bnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMg
b3BlcmF0b3I8KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPChpbnQ0LCBpbnQ0
KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wz
IG9wZXJhdG9yPChmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8KGZsb2F0
NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPChmbG9hdDJ4MiwgZmxvYXQyeDIp
OwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I8KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUg
Ym9vbDR4MiBvcGVyYXRvcjwoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9w
ZXJhdG9yPChmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I8KGZs
b2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcjwoZmxvYXQ0eDMsIGZs
b2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPChmbG9hdDJ4NCwgZmxvYXQyeDQpOwot
bmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I8KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9v
bDR4NCBvcGVyYXRvcjwoZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVk
IGlzbmFuICovCi1uYXRpdmUgYm9vbCBpc25hbihmbG9hdCk7Ci0KLWJvb2wyIGlzbmFuKGZsb2F0
MiB4KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
MyBpc25hbihmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBp
c25hbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25hbih4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBpc25hbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNuYW4oZmxvYXQ0
IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gaXNuYW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNuYW4oeFsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gaXNuYW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICovCi1uYXRp
dmUgdm9pZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgb3BlcmF0b3JeICovCi1ib29sIG9wZXJhdG9yXihib29sIGEsIGJvb2wgYikgewotICAg
IGlmIChhKQotICAgICAgICByZXR1cm4gIWI7Ci0gICAgcmV0dXJuIGI7Ci19Ci1uYXRpdmUgaW50
IG9wZXJhdG9yXihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcl4odWludCwgdWludCk7
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc2luZiAqLwotbmF0aXZlIGJvb2wgaXNpbmYoZmxvYXQp
OwotYm9vbDIgaXNpbmYoZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzaW5mKGZsb2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGlzaW5mKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzaW5mKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGlzaW5mKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sNCBpc2luZihmbG9hdDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBpc2luZih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBpc2luZih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc2luZih4WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3J8ICovCi1ib29s
IG9wZXJhdG9yfChib29sIGEsIGJvb2wgYikgewotICAgIHJldHVybiBhIHx8IGI7Ci19Ci1uYXRp
dmUgaW50IG9wZXJhdG9yfChpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcnwodWludCwg
dWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZWdyZWVzICovCi1mbG9hdCBkZWdyZWVzKGZs
b2F0IHgpIHsKLSAgICByZXR1cm4geCAqIDE4MCAvIDMuMTQxNTk7Ci19Ci1mbG9hdDIgZGVncmVl
cyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGVncmVl
cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgZGVncmVlcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZGVncmVlcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGRlZ3JlZXMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBkZWdyZWVzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZGVncmVlcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZWdyZWVz
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZWdyZWVzKGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4
WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGVncmVlcyhmbG9hdDN4
MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBkZWdyZWVzKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVz
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVz
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZWdyZWVz
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZWdyZWVzKGZsb2F0
MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVl
cyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVl
cyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIGRlZ3JlZXMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3Jl
ZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3Jl
ZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3Jl
ZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGVncmVlcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdy
ZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdy
ZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdy
ZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZWdy
ZWVzKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZWdyZWVzKGZs
b2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVn
cmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVn
cmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVn
cmVlcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZWdyZWVzKGZsb2F0M3g0IHgpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRl
Z3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRl
Z3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRl
Z3JlZXMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVncmVlcyh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRl
Z3JlZXMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRlZ3JlZXMo
ZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBk
ZWdyZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBk
ZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gZGVncmVlcyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBk
ZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gZGVncmVlcyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBk
ZWdyZWVzKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBTYW1wbGUgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMUQ8dWludD4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMURBcnJheTx1
aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0
dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1w
bGUoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1w
bGUoVGV4dHVyZTNEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQgU2FtcGxlKFRleHR1cmUzRDx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQz
IG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUxRDx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTFE
QXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNh
bXBsZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQyIFNhbXBsZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVy
ZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNh
bXBsZShUZXh0dXJlMUQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludDMgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxl
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTNEPHVpbnQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVy
ZTNEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTFEPHVpbnQ0Piwgc2FtcGxlciwgZmxv
YXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUy
RDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxl
KFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQg
U2FtcGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRp
dmUgdWludDQgU2FtcGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMUQ8
aW50Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVy
ZTFEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2Ft
cGxlKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGlu
dCBTYW1wbGUoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PGludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1w
bGUoVGV4dHVyZTNEPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
IFNhbXBsZShUZXh0dXJlM0Q8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9m
ZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUxRDxpbnQyPiwgc2FtcGxl
ciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUxREFycmF5PGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1
cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBs
ZShUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBs
ZShUZXh0dXJlM0Q8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
MiBTYW1wbGUoVGV4dHVyZTNEPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMg
b2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMUQ8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMURBcnJh
eTxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShU
ZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBT
YW1wbGUoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBT
YW1wbGUoVGV4dHVyZTNEPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IGludDMgU2FtcGxlKFRleHR1cmUzRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBp
bnQzIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTFEPGludDQ+
LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1w
bGUoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDQgU2FtcGxlKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGlu
dDQgU2FtcGxlKFRleHR1cmUzRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmVDdWJlPGludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMUQ8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRl
eHR1cmUxREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
KFRleHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mj4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJl
MkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNh
bXBsZShUZXh0dXJlM0Q8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0
dXJlMUQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBT
YW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTNEPGZs
b2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShU
ZXh0dXJlM0Q8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEPGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUxREFy
cmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNh
bXBsZShUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBT
YW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBs
ZShUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLQotLyogRnVu
Y3Rpb25zIG5hbWVkIFNhbXBsZUxldmVsICovCi1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0
dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7
Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNh
bXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxl
dmVsKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWlu
dDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVs
KFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0
dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQzIFNhbXBs
ZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJl
Q3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVp
bnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWlu
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50IFNh
bXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQyPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQy
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4
dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGlu
dDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1
cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxl
dmVsKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZUxldmVsKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNh
bXBsZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMg
U2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0NCBT
YW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0
NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVs
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIFNh
bXBsZUJpYXMgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50IFNh
bXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJl
Q3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWlu
dDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMg
U2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
dWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJp
YXMoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNh
bXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJl
MkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBp
bnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhU
ZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwot
bmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxp
bnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxl
QmlhcyhUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50
ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBT
YW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZl
IGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFz
KFRleHR1cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1
cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVD
dWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJl
Q3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUy
RDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MyBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1
cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1u
YXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNh
bXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4
dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRl
eHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFz
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBT
YW1wbGVCaWFzKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlR3JhZCAqLwotbmF0
aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRl
eHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9h
dDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVpbnQyIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0
aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFk
KFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDM+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1
aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0
dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFkpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDQg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNh
bXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxp
bnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwot
bmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGlu
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1u
YXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQo
VGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50MyBTYW1w
bGVHcmFkKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQz
IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUy
RDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4
dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxv
YXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZUN1
YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBE
RFkpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0
MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1
cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxv
YXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
ZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0
MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERY
LCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5h
dGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxl
R3JhZChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZl
IGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBzaW5oICovCi1uYXRpdmUgZmxvYXQgc2luaChmbG9hdCk7Ci1mbG9hdDIgc2luaChmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2luaCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgc2luaChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
c2luaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IHNpbmgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzaW5oKGZsb2F0NCB4
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBzaW5oKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBzaW5oKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2lu
aCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc2luaChmbG9hdDN4
MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5o
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzaW5oKGZsb2F0NHgy
IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBzaW5oKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBz
aW5oKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNp
bmgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2lu
aCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2luaChmbG9hdDR4
MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbmgoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5o
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
c2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW5oKHhbM11bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzaW5oKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBz
aW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW5oKHhbMV1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzaW5oKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNp
bmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW5oKHhb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbmgoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IHNpbmgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5o
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gc2luaCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW5oKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
c2luaCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzaW5oKHhbM11bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHkgKi8KLW5hdGl2ZSBmbG9h
dCBkZHkoZmxvYXQpOwotZmxvYXQyIGRkeShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeSh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeShmbG9hdDMgeCkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRk
eSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHkoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBkZHkoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR5KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeSh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZGR5KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBkZHkoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5KGZs
b2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5KHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHko
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBk
ZHkoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeShmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHkoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGRkeSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR5KGZs
b2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHko
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRkeSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR5
KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRk
eSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
ZGR5KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeSh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZHkoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5KHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGRkeSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I+PSAqLwotbmF0aXZlIGJvb2wgb3BlcmF0
b3I+PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KHVpbnQsIHVpbnQpOwotbmF0
aXZlIGJvb2wgb3BlcmF0b3I+PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9y
Pj0odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KHVpbnQzLCB1aW50Myk7
Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9w
ZXJhdG9yPj0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PShpbnQzLCBpbnQz
KTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj49KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9w
ZXJhdG9yPj0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPj0oZmxvYXQz
LCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0
aXZlIGJvb2wyeDIgb3BlcmF0b3I+PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wz
eDIgb3BlcmF0b3I+PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0
b3I+PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I+PShmbG9h
dDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I+PShmbG9hdDN4MywgZmxv
YXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I+PShmbG9hdDR4MywgZmxvYXQ0eDMpOwot
bmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I+PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJv
b2wzeDQgb3BlcmF0b3I+PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3Bl
cmF0b3I+PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZHN0ICov
Ci11aW50NCBkc3QodWludDQgc3JjMCwgdWludDQgc3JjMSkgewotICAgIHVpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAg
cmVzdWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWludDQgZHN0KGludDQgc3JjMCwgaW50NCBzcmMxKSB7Ci0gICAgaW50NCByZXN1
bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55ICogc3JjMS55Owot
ICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53OwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgZHN0KGZsb2F0NCBzcmMwLCBmbG9hdDQgc3JjMSkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55
ICogc3JjMS55OwotICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRvdCAqLwot
dWludCBkb3QodWludCBhLCB1aW50IGIpIHsKLSAgICByZXR1cm4gYSAqIGI7Ci19Ci11aW50IGRv
dCh1aW50MiBhLCB1aW50MiBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9
IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1aW50MyBhLCB1aW50MyBiKSB7Ci0g
ICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1aW50NCBhLCB1
aW50NCBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFb
MF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBi
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludCBhLCBpbnQgYikgewotICAg
IHJldHVybiBhICogYjsKLX0KLWludCBkb3QoaW50MiBhLCBpbnQyIGIpIHsKLSAgICBpbnQgcmVz
dWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IGRvdChp
bnQzIGEsIGludDMgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1p
bnQgZG90KGludDQgYSwgaW50NCBiKSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJb
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVszXSAqIGJbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9h
dCBhLCBmbG9hdCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotZmxvYXQgZG90KGZsb2F0MiBh
LCBmbG9hdDIgYikgewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdDMgYSwgZmxvYXQzIGIpIHsKLSAgICBm
bG9hdCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFb
Ml0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxvYXQ0IGEsIGZs
b2F0NCBiKSB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBh
WzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICog
YlszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXNmbG9h
dCAqLwotbmF0aXZlIGZsb2F0IGFzZmxvYXQoaW50KTsKLWZsb2F0MiBhc2Zsb2F0KGludDIgeCkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgYXNmbG9hdChpbnQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNm
bG9hdChpbnQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxv
YXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhc2Zsb2F0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzZmxvYXQoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLW5hdGl2ZSBmbG9hdCBhc2Zsb2F0KHVpbnQpOwotZmxvYXQyIGFzZmxv
YXQodWludDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9h
dCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgYXNmbG9hdCh1aW50MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IGFzZmxvYXQodWludDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXNmbG9hdCh4
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgYXNmbG9hdChmbG9hdCB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDIgYXNmbG9hdChmbG9hdDIgeCkgewotICAgIHJldHVybiB4
OwotfQotZmxvYXQzIGFzZmxvYXQoZmxvYXQzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0
NCBhc2Zsb2F0KGZsb2F0NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MiBhc2Zsb2F0
KGZsb2F0MngyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3gyIGFzZmxvYXQoZmxvYXQz
eDIgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0eDIgYXNmbG9hdChmbG9hdDR4MiB4KSB7
Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MyBhc2Zsb2F0KGZsb2F0MngzIHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLWZsb2F0M3gzIGFzZmxvYXQoZmxvYXQzeDMgeCkgewotICAgIHJldHVybiB4
OwotfQotZmxvYXQ0eDMgYXNmbG9hdChmbG9hdDR4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1m
bG9hdDJ4NCBhc2Zsb2F0KGZsb2F0Mng0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3g0
IGFzZmxvYXQoZmxvYXQzeDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0eDQgYXNmbG9h
dChmbG9hdDR4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBp
c25vcm1hbCAqLwotbmF0aXZlIGJvb2wgaXNub3JtYWwoZmxvYXQpOwotCi1ib29sMiBpc25vcm1h
bChmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25vcm1h
bCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbDMgaXNub3JtYWwoZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gaXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwo
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNub3JtYWwoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2w0IGlzbm9ybWFsKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbm9ybWFsKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlz
bm9ybWFsKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIEludGVybG9ja2VkRXhjaGFuZ2UgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFu
Z2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2
aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGlu
dCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRo
cmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFk
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9t
aWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4
Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRo
cmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgR2V0RGltZW5zaW9ucyAqLwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2aWNlIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQz
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQz
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJl
YWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGlu
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgZGV2aWNlIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxm
bG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0
ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgb3BlcmF0b3IrICovCi1uYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7Ci1uYXRp
dmUgdWludCBvcGVyYXRvcisodWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IrKGZs
b2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyLCB1aW50Mik7Ci1uYXRp
dmUgdWludDIgb3BlcmF0b3IrKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvciso
dWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50MywgdWludDMpOwotbmF0
aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3Ir
KHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludDQsIHVpbnQ0KTsKLW5h
dGl2ZSB1aW50NCBvcGVyYXRvcisodWludCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9y
Kyh1aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50MiwgaW50Mik7Ci1uYXRp
dmUgaW50MiBvcGVyYXRvcisoaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQy
LCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IrKGludDMsIGludDMpOwotbmF0aXZlIGludDMg
b3BlcmF0b3IrKGludCwgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50MywgaW50KTsK
LW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9y
KyhpbnQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludDQsIGludCk7Ci1uYXRpdmUg
ZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9y
KyhmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0MiwgZmxvYXQp
OwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0
MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhmbG9h
dDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0NCwgZmxvYXQ0KTsKLW5h
dGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVy
YXRvcisoZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0Mngy
LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDJ4Mik7
Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQzeDIgb3BlcmF0b3IrKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3Bl
cmF0b3IrKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IrKGZsb2F0
M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyLCBmbG9hdDR4
Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUg
ZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3Bl
cmF0b3IrKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZs
b2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0MngzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRp
dmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMg
b3BlcmF0b3IrKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZs
b2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9h
dDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQy
eDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3Ir
KGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0LCBm
bG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4NCk7Ci1u
YXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
eDQgb3BlcmF0b3IrKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0
b3IrKGZsb2F0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0NHg0
LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBv
cGVyYXRvcisodWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50NCk7Ci1uYXRpdmUg
aW50MiBvcGVyYXRvcisoaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50Myk7Ci1uYXRp
dmUgaW50NCBvcGVyYXRvcisoaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIp
OwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0
b3IrKGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyKTsKLW5hdGl2
ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9y
KyhmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0MngzKTsKLW5hdGl2
ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9y
KyhmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0KTsKLW5hdGl2
ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9y
KyhmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmcmFjICovCi1mbG9hdCBmcmFjKGZs
b2F0IHgpIHsKLSAgICByZXR1cm4geCAtIGZsb29yKHgpOwotfQotZmxvYXQyIGZyYWMoZmxvYXQy
IHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZyYWMoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IGZyYWMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZy
YWMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBm
cmFjKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZnJhYyhmbG9hdDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gZnJhYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIg
ZnJhYyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMo
eFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZyYWMoZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZnJhYyhmbG9hdDR4MiB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZnJhYyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZnJh
YyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmcmFj
KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMo
eFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZyYWMoZmxvYXQ0eDMg
eCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmcmFjKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZy
YWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZnJhYyh4WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZnJhYyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJh
Yyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4WzFdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZnJhYyhmbG9hdDN4NCB4KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFj
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmcmFjKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBmcmFjKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
cmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZyYWMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJhYyh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZy
YWMoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZnJhYyh4WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc3RvcmUgKi8KLW5hdGl2ZSB2b2lk
IHN0b3JlKGRldmljZSBhdG9taWNfaW50KiwgaW50KTsKLW5hdGl2ZSB2b2lkIHN0b3JlKGRldmlj
ZSBhdG9taWNfdWludCosIHVpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUodGhyZWFkZ3JvdXAgYXRv
bWljX2ludCosIGludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBhdG9taWNfdWlu
dCosIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmVmcmFjdCAqLwotZmxvYXQgcmVmcmFj
dChmbG9hdCBpLCBmbG9hdCBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdCByZXN1bHQ7Ci0gICAg
ZmxvYXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0g
ICAgaWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBp
IC0gKGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0MiByZWZyYWN0KGZs
b2F0MiBpLCBmbG9hdDIgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBm
bG9hdCBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAg
ICBpZiAoayA8IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkg
LSAoZXRhICogZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQzIHJlZnJhY3QoZmxv
YXQzIGksIGZsb2F0MyBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZs
b2F0IGsgPSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAg
IGlmIChrIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAt
IChldGEgKiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDQgcmVmcmFjdChmbG9h
dDQgaSwgZmxvYXQ0IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxv
YXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAg
aWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0g
KGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IGxvZzEwICovCi1mbG9hdCBsb2cxMChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGxvZyh4KSAvIGxv
ZyhmbG9hdCgxMCkpOwotfQotZmxvYXQyIGxvZzEwKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cx
MCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZzEwKGZsb2F0MyB4KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBsb2cxMCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4WzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZzEwKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBs
b2cxMCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBsb2cxMCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbG9nMTAoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cx
MCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMTAoZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cx
MCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbG9nMTAoZmxvYXQ0
eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBsb2cxMCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDMgbG9nMTAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgbG9nMTAoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
b2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDMgbG9nMTAoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
b2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cxMCh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgbG9nMTAoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4WzFdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbG9nMTAoZmxvYXQzeDQgeCkgewotICAgIGZs
b2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cx
MCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMTAoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cx
MCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBs
b2cxMCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgb3BlcmF0b3IvICovCi1uYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsIGludCk7Ci1uYXRpdmUg
dWludCBvcGVyYXRvci8odWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IvKGZsb2F0
LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUg
dWludDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci8odWlu
dCwgdWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50MywgdWludDMpOwotbmF0aXZl
IHVpbnQzIG9wZXJhdG9yLyh1aW50MywgdWludCk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IvKHVp
bnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQ0KTsKLW5hdGl2
ZSB1aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLyh1
aW50LCB1aW50NCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50MiwgaW50Mik7Ci1uYXRpdmUg
aW50MiBvcGVyYXRvci8oaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLyhpbnQsIGlu
dDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3IvKGludDMsIGludDMpOwotbmF0aXZlIGludDMgb3Bl
cmF0b3IvKGludDMsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8oaW50LCBpbnQzKTsKLW5h
dGl2ZSBpbnQ0IG9wZXJhdG9yLyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLyhp
bnQ0LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludCwgaW50NCk7Ci1uYXRpdmUgZmxv
YXQyIG9wZXJhdG9yLyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLyhm
bG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDIpOwot
bmF0aXZlIGZsb2F0MyBvcGVyYXRvci8oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBv
cGVyYXRvci8oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLyhmbG9hdCwg
ZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2
ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRv
ci8oZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0MngyLCBm
bG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0MngyLCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQz
eDIgb3BlcmF0b3IvKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0
b3IvKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IvKGZsb2F0LCBm
bG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBmbG9hdDR4Mik7
Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQ0eDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0
b3IvKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IvKGZsb2F0
MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDJ4Myk7
Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUg
ZmxvYXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3Bl
cmF0b3IvKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0
NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0NHgzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUg
ZmxvYXQyeDQgb3BlcmF0b3IvKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQg
b3BlcmF0b3IvKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IvKGZs
b2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0M3g0LCBmbG9h
dDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQg
b3BlcmF0b3IvKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3Iv
KGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9h
dDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHlfZmluZSAqLwotZmxvYXQgZGR5X2ZpbmUo
ZmxvYXQgeCkgewotICAgIHJldHVybiBkZHkoeCk7Ci19Ci1mbG9hdDIgZGR5X2ZpbmUoZmxvYXQy
IHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9maW5lKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDMgZGR5X2ZpbmUoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgZGR5X2ZpbmUoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeV9m
aW5lKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHlfZmluZShmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9m
aW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eV9maW5lKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZHlfZmlu
ZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHlfZmluZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5l
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyBkZHlfZmluZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRkeV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHlfZmluZShmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5l
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9m
aW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBkZHlfZmluZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9maW5l
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHlfZmluZShmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9m
aW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGRkeV9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHlfZmluZShmbG9hdDN4NCB4KSB7
Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5l
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9m
aW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGRkeV9maW5lKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4NCBkZHlfZmluZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9maW5l
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9maW5lKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9m
aW5lKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeV9maW5lKHhbM11bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbnkgKi8KLWJvb2wgYW55
KGJvb2wgeCkgewotICAgIHJldHVybiB4OwotfQotYm9vbCBhbnkoYm9vbDIgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eShib29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9v
bDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0K
LWJvb2wgYW55KHVpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQzIHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueSh1aW50NCB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM10g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludCB4KSB7Ci0gICAgcmV0
dXJuIHggIT0gMDsKLX0KLWJvb2wgYW55KGludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoaW50
MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoaW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0
IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkoZmxvYXQyIHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYW55KGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbnkoZmxvYXQyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFsyXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0eDIg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsx
XSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDMgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYW55KGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzJdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4MyB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsyXSAhPSAwKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDQgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
Ml1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYW55KGZsb2F0NHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzNdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzJdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVszXSAhPSAw
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4MiB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkoYm9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9v
bDR4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsx
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4MyB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsw
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDN4MyB4KSB7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bnkoYm9vbDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsy
XVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbnkoYm9vbDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsx
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbnkoYm9vbDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsy
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgZGR5X2NvYXJzZSAqLwotZmxvYXQgZGR5X2NvYXJzZShmbG9hdCB4KSB7Ci0gICAgcmV0
dXJuIGRkeSh4KTsKLX0KLWZsb2F0MiBkZHlfY29hcnNlKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHlf
Y29hcnNlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBk
ZHlfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZGR5X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IGRkeV9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJzZSh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBkZHlfY29hcnNlKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRk
eV9jb2Fyc2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeV9jb2Fy
c2UoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MiBkZHlfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9j
b2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeV9jb2Fy
c2UoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBkZHlfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9j
b2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGRkeV9jb2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5X2NvYXJzZShmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9j
b2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5
X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHlfY29hcnNlKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5
X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfY29hcnNl
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBk
ZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fyc2UoeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeV9jb2Fyc2UoZmxvYXQyeDQg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNl
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9jb2Fy
c2UoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeV9jb2Fyc2Uo
ZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fy
c2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGRkeV9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2Nv
YXJzZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR5X2NvYXJz
ZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2Nv
YXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZGR5X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlf
Y29hcnNlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9jb2Fyc2UoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBkZHlfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeV9jb2Fyc2Uo
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9w
ZXJhdG9yKysgKi8KLXVpbnQgb3BlcmF0b3IrKyh1aW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZh
bHVlICsgMTsKLX0KLWludCBvcGVyYXRvcisrKGludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1
ZSArIDE7Ci19Ci1mbG9hdCBvcGVyYXRvcisrKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZh
bHVlICsgMTsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkQW5kICovCi1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQqLCBp
bnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFu
ZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRo
cmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAg
YXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZp
Y2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWlj
X2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhy
ZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRn
cm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yfiAqLwotYm9vbCBvcGVy
YXRvcn4oYm9vbCB2YWx1ZSkgewotICAgIHJldHVybiAhdmFsdWU7Ci19Ci1uYXRpdmUgaW50IG9w
ZXJhdG9yfihpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQpOwotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgZGR4ICovCi1uYXRpdmUgZmxvYXQgZGR4KGZsb2F0KTsKLWZsb2F0MiBkZHgoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBkZHgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRk
eCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4KGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZGR4KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeCh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBkZHgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeChmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9h
dDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBkZHgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4
KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4KHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRk
eCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHgoeFszXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGRkeCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeCh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR4KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHgoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZGR4KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBkZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4KHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGRkeCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHgoeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVy
bG9ja2VkTWF4ICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2
aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwg
dGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhy
ZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWlj
X3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgo
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91
cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNf
aW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvc2gg
Ki8KLW5hdGl2ZSBmbG9hdCBjb3NoKGZsb2F0KTsKLWZsb2F0MiBjb3NoKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjb3NoKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zaCh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNvc2goZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gY29zaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGNvc2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNvc2goZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3No
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjb3NoKGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2go
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNvc2goZmxvYXQ0eDIgeCkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNv
c2goeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNvc2goZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29z
aCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY29zaChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3No
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3NoKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2go
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBj
b3NoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGNvc2goZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNv
c2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGNvc2goZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gY29zaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgY29zaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2go
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBj
b3NoKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3NoKHhbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IGNvc2goeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeF9jb2Fyc2UgKi8KLWZsb2F0IGRkeF9jb2Fy
c2UoZmxvYXQgeCkgewotICAgIHJldHVybiBkZHgoeCk7Ci19Ci1mbG9hdDIgZGR4X2NvYXJzZShm
bG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJz
ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfY29hcnNlKHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgZGR4X2NvYXJzZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBk
ZHhfY29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9jb2Fyc2UoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHhfY29hcnNlKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4X2NvYXJzZSh4WzJd
KTsKLSAgICByZXN1bHRbM10gPSBkZHhfY29hcnNlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBkZHhfY29hcnNlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fy
c2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4X2NvYXJzZShmbG9hdDN4MiB4KSB7Ci0g
ICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fy
c2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MiBkZHhfY29hcnNlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fy
c2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHhfY29hcnNlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIGRkeF9jb2Fyc2UoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2Nv
YXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
ZGR4X2NvYXJzZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2Nv
YXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhf
Y29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBkZHhfY29hcnNlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
NCBkZHhfY29hcnNlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhf
Y29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2Uo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJzZSh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4NCBkZHhfY29hcnNlKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2Uo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJz
ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGRkeF9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IGRkeF9jb2Fyc2UoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJz
ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29h
cnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gZGR4X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9jb2Fyc2UoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSBkZHhfY29hcnNlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGhpZ2ggKi8KLXVpbnQgZmlyc3RiaXRoaWdoKHVp
bnQgeCkgewotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMSkpICE9IDApCi0gICAgICAgIHJldHVy
biAwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMCkpICE9IDApCi0gICAgICAgIHJldHVybiAx
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyOwot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOCkpICE9IDApCi0gICAgICAgIHJldHVybiAzOwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAyNykpICE9IDApCi0gICAgICAgIHJldHVybiA0OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAyNikpICE9IDApCi0gICAgICAgIHJldHVybiA1OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAyNSkpICE9IDApCi0gICAgICAgIHJldHVybiA2OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAyNCkpICE9IDApCi0gICAgICAgIHJldHVybiA3OwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAyMykpICE9IDApCi0gICAgICAgIHJldHVybiA4OwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAyMikpICE9IDApCi0gICAgICAgIHJldHVybiA5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8
PCAyMSkpICE9IDApCi0gICAgICAgIHJldHVybiAxMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
MjApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE5
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOCkp
ICE9IDApCi0gICAgICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTcpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMTQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE2KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDE1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNSkpICE9IDAp
Ci0gICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTQpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMTc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEzKSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDE4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMikpICE9IDApCi0gICAg
ICAgIHJldHVybiAxOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTEpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMjA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDIxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA5KSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDIyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDIzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI0
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI1Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCA1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI2OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCA0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI3OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI4OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI5OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMwOwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMxOwotICAgIHJldHVybiAzMjsKLX0K
LXVpbnQgZmlyc3RiaXRoaWdoKGludCB4KSB7Ci0gICAgcmV0dXJuIGZpcnN0Yml0aGlnaCh1aW50
KHgpKTsKLX0KLXVpbnQyIGZpcnN0Yml0aGlnaCh1aW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
aXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGZpcnN0Yml0
aGlnaCh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0
Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11
aW50NCBmaXJzdGJpdGhpZ2godWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdo
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBmaXJzdGJpdGhpZ2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQyIGZp
cnN0Yml0aGlnaChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
Zmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKGludDMgeCkgewotICAg
IHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0
aGlnaCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3RiaXRoaWdoKGlu
dDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2go
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJpdGhpZ2goeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHJjcCAqLwot
ZmxvYXQgcmNwKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHg7Ci19Ci1mbG9hdDIgcmNwKGZs
b2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByY3AoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgcmNwKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBy
Y3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJj
cCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJjcChmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHJjcCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByY3AoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gcmNwKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByY3AoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3Ao
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJjcChmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
Y3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByY3AoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByY3AoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgcmNwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJj
cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNw
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJj
cChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJjcCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
cmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBy
Y3AoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmNwKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByY3AoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSByY3AoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByY3AoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByY3AoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IHJjcCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcmNwKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNw
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3Ao
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByY3AoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gcmNwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJjcCh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSByY3AoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcmNwKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmd2lk
dGggKi8KLQotZmxvYXQgZndpZHRoKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gYWJzKGRkeCh4KSkg
KyBhYnMoZGR5KHgpKTsKLX0KLWZsb2F0MiBmd2lkdGgoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
d2lkdGgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmd2lkdGgoZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmd2lkdGgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZndpZHRoKHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZndpZHRoKGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZndpZHRoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZ3aWR0aCh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBmd2lkdGgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngyIGZ3aWR0aChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
ZndpZHRoKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIGZ3aWR0aChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
d2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lk
dGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgo
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZ3aWR0aChmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBm
d2lkdGgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBm
d2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgZndpZHRoKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0
aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBmd2lkdGgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGZ3aWR0aChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBm
d2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmd2lk
dGgoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZ3aWR0aChmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0
aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZndpZHRoKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmd2lk
dGgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBm
d2lkdGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lk
dGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGZ3aWR0aCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmd2lkdGgoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRoKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGZ3aWR0aCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmd2lkdGgoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGxlcnAgKi8K
LWZsb2F0IGxlcnAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcykgewotICAgIHJldHVybiB4ICog
KDEgLSBzKSArIHkgKiBzOwotfQotZmxvYXQyIGxlcnAoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9h
dDIgeikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbGVycChmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0
MyB6KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlb
MF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gbGVycCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IGxlcnAoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxlcnAo
eFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbGVycCh4WzNdLCB5WzNdLCB6WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbGVycChmbG9hdDJ4MiB4LCBmbG9h
dDJ4MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
ZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIGxlcnAoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgbGVycChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4
MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFsw
XVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxlcnAoeFszXVswXSwgeVszXVsw
XSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbGVycChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5
LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVy
cCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhb
MF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5
WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsZXJwKGZsb2F0
M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxl
cnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwg
eVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxlcnAo
ZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
ZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxlcnAo
eFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBd
WzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0s
IHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsy
XVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGVycCh4WzNdWzJdLCB5WzNdWzJd
LCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbGVycChmbG9hdDJ4
NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJw
KHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxlcnAoeFsw
XVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4WzFdWzNd
LCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbGVy
cChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVy
cCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhb
Ml1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxlcnAoeFswXVsz
XSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4WzFdWzNdLCB5
WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZXJwKHhbMl1bM10sIHlbMl1b
M10sIHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsZXJwKGZsb2F0
NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxl
cnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4
WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZXJwKHhbM11b
MV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwg
eVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFd
WzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlbMl1bMl0s
IHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxlcnAoeFszXVsyXSwgeVszXVsyXSwgelsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gbGVycCh4WzNdWzNdLCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGlzdGFuY2UgKi8KLWZsb2F0IGRp
c3RhbmNlKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0K
LWZsb2F0IGRpc3RhbmNlKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVybiBsZW5ndGgo
eCAtIHkpOwotfQotZmxvYXQgZGlzdGFuY2UoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgcmV0
dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1mbG9hdCBkaXN0YW5jZShmbG9hdDQgeCwgZmxvYXQ0IHkp
IHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25NYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA5MGMyOTlh
MmYwZjhlMGVjNzA2ZDkxZDNjZmFjZTFjODgwN2Q2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3QgU3Vic3RyaW5nTG9j
YXRpb24gewotICAgIHVuc2lnbmVkIHN0YXJ0OwotICAgIHVuc2lnbmVkIGVuZDsKLX07Ci0KLUhh
c2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1
bmN0aW9uTWFwKCk7Ci0KLXVuc2lnbmVkIGZpcnN0RnVuY3Rpb25PZmZzZXRJblN0YW5kYXJkTGli
cmFyeSgpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJk
TGlicmFyeVV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZDQz
MzBkMDE5MzY0M2FhYmU5NDBlOTliMDU2OTAzYzEyZmEzMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTFBhcnNlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNM
U3RhbmRhcmRMaWJyYXJ5LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLSNpbmNsdWRlIDxwYWwvR3VuemlwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1z
dGF0aWMgU3RyaW5nIGRlY29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnkoKQotewotICAg
IGF1dG8gZGVjb21wcmVzc2VkU3RhbmRhcmRMaWJyYXJ5ID0gZ3VuemlwKFdITFNMU3RhbmRhcmRM
aWJyYXJ5LCBzaXplb2YoV0hMU0xTdGFuZGFyZExpYnJhcnkpKTsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChkZWNvbXByZXNzZWRTdGFuZGFyZExpYnJhcnkuZGF0YSgpLCBkZWNvbXByZXNz
ZWRTdGFuZGFyZExpYnJhcnkuc2l6ZSgpKTsKLX0KLQotY2xhc3MgTmFtZUZpbmRlciA6IHB1Ymxp
YyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBIYXNoU2V0PFN0cmluZz4gdGFrZUZ1bmN0aW9uTmFt
ZXMoKQotICAgIHsKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3Rk
Ojpzd2FwKHJlc3VsdCwgbV9mdW5jdGlvbk5hbWVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBj
YWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb25OYW1lcy5h
ZGQoY2FsbEV4cHJlc3Npb24ubmFtZSgpKTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4
cHJlc3Npb24pOwotICAgIH0KLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Z1bmN0aW9uTmFtZXM7
Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJkTGlicmFyeShQcm9n
cmFtJiBwcm9ncmFtLCBQYXJzZXImIHBhcnNlciwgYm9vbCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJh
cnkpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRMaWJyYXJ5
KGRlY29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgaWYgKHBhcnNlRnVs
bFN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBh
cnNlKHByb2dyYW0sIHN0YW5kYXJkTGlicmFyeS5nZXQoKSwgUGFyc2luZ01vZGU6OlN0YW5kYXJk
TGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgIGlmICgh
cGFyc2VSZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFyc2VSZXN1
bHQuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4+IHN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9uTWFwKGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCgpKTsK
LQotICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcoc3RhbmRhcmRMaWJyYXJ5LmdldCgp
KS5zdWJzdHJpbmcoMCwgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCkpOwot
ICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3RyaW5nVmlldywg
UGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGli
cmFyeSk7Ci0gICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKHBhcnNlUmVzdWx0LmVycm9yKCkpOwotCi0gICAgTmFtZUZpbmRlciBuYW1lRmluZGVyOwot
ICAgIG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgSGFzaFNldDxTdHJp
bmc+IGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VGdW5jdGlvbk5hbWVzKCk7Ci0gICAg
SGFzaFNldDxTdHJpbmc+IGFsbEZ1bmN0aW9uTmFtZXM7Ci0gICAgLy8gVGhlIG5hbWUgb2YgYSBj
YWxsIHRvIGEgY2FzdCBvcGVyYXRvciBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSwgc28gd2UgY2Fu
J3QgbWF0Y2ggdGhlbSB1cCBjb3JyZWN0bHkuCi0gICAgLy8gSW5zdGVhZCwganVzdCBpbmNsdWRl
IGFsbCBjYXN0aW5nIG9wZXJhdG9ycy4KLSAgICBmdW5jdGlvbk5hbWVzLmFkZCgib3BlcmF0b3Ig
Y2FzdCJfc3RyKTsKLSAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFuIGF1dGhvciBj
YW4ndCB3cml0ZSBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGFueXRoaW5n
IGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICAgIC8vIElmIHRoZXkgZG8gc28sIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIGl0IGNvbGxpZGVzLCBzbyB3ZSBpbmNsdWRlIGFsbCBwb3RlbnRpYWwgZHVw
bGljYXRlcyBoZXJlLCBhbmQgdGhlICJjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyIgcGFzcyBlbmZv
cmNlcyBpdC4KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICBmdW5jdGlvbk5hbWVzLmFkZChmdW5jdGlvbkRl
ZmluaXRpb24tPm5hbWUoKSk7Ci0gICAgd2hpbGUgKCFmdW5jdGlvbk5hbWVzLmlzRW1wdHkoKSkg
ewotICAgICAgICBhdXRvIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQgPSBwcm9ncmFt
Lm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOwotICAgICAgICBhdXRvIGZ1bmN0
aW9uRGVmaW5pdGlvbnNDb3VudCA9IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUo
KTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZnVuY3Rpb25OYW1lcykgewotICAg
ICAgICAgICAgaWYgKGFsbEZ1bmN0aW9uTmFtZXMuY29udGFpbnMobmFtZSkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gc3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25NYXAuZ2V0KCkuZmluZChuYW1lKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRv
ciA9PSBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXco
c3RhbmRhcmRMaWJyYXJ5LmdldCgpKS5zdWJzdHJpbmcoaXRlcmF0b3ItPnZhbHVlLnN0YXJ0LCBp
dGVyYXRvci0+dmFsdWUuZW5kIC0gaXRlcmF0b3ItPnZhbHVlLnN0YXJ0KTsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0iKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oc3RyaW5nVmlldyk7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0i
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0g
cGFyc2VyLnBhcnNlKHByb2dyYW0sIHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICAgICAgaWYg
KCFwYXJzZVJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFy
c2VSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgewotICAgICAgICAg
ICAgICAgIGlmIChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCkgIT0gc3RhcnQp
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibm9uIG5hdGl2ZSBzdGRsaWIgZnVuY3Rp
b246ICciLCBuYW1lLCAiJyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYWxsRnVuY3Rp
b25OYW1lcy5hZGQobmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICggOyBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uc0NvdW50IDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
cygpLnNpemUoKTsgKytuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50KQotICAgICAgICAg
ICAgbmFtZUZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKClbbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudF0pOwotICAgICAgICBmb3Ig
KCA7IGZ1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9u
cygpLnNpemUoKTsgKytmdW5jdGlvbkRlZmluaXRpb25zQ291bnQpCi0gICAgICAgICAgICBuYW1l
RmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2Z1bmN0
aW9uRGVmaW5pdGlvbnNDb3VudF0pOwotICAgICAgICBmdW5jdGlvbk5hbWVzID0gbmFtZUZpbmRl
ci50YWtlRnVuY3Rpb25OYW1lcygpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyZjM4MjQ3MWE2MDQ3ODdiMDcyNDBm
MzliNjI3NWU1MjI5NWE2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJk
TGlicmFyeVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFBhcnNlcjsKLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZv
aWQsIEVycm9yPiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mLCBQYXJzZXImLCBib29s
IHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSk7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTgzMmZkMTc2NGNkOTZiMGJiNWY4ZjQx
YTgyZmU1MTlmYzI5MTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50
QmVoYXZpb3JDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCcmVhay5oIgotI2luY2x1ZGUgIldITFNM
Q29udGludWUuaCIKLSNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hM
U0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xGYWxsdGhy
b3VnaC5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFBy
b2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJldHVybi5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNo
Q2FzZS5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IEJlaGF2aW9yIDogdWludDhfdCB7Ci0gICAgICAgIFJldHVybiA9IDEgPDwgMCwKLSAgICAgICAg
QnJlYWsgPSAxIDw8IDEsCi0gICAgICAgIENvbnRpbnVlID0gMSA8PCAyLAotICAgICAgICBGYWxs
dGhyb3VnaCA9IDEgPDwgMywKLSAgICAgICAgTm90aGluZyA9IDEgPDwgNAotICAgIH07Ci0KLSAg
ICBPcHRpb25TZXQ8QmVoYXZpb3I+IHRha2VGdW5jdGlvbkJlaGF2aW9yKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3N0YWNrLnNpemUoKSA9PSAxKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhY2su
dGFrZUxhc3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFr
Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkJy
ZWFrIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpGYWxsdGhyb3Vn
aCB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Q29udGludWUgfSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpSZXR1cm4gfSk7Ci0gICAgfQotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgICAg
ICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0g
bV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwot
ICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOwotICAgICAgICBiLmFkZChCZWhh
dmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgLy8gVGhlIGluaXRpYWxpemF0aW9uIGFsd2F5cyBoYXMgYSBiZWhhdmlvciBvZiBOb3RoaW5n
LCB3aGljaCB3ZSBhbHJlYWR5IGFkZCB1bmNvbmRpdGlvbmFsbHkgYmVsb3csCi0gICAgICAgIC8v
IHNvIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGUgaW5pdGlhbGl6YXRpb24uCi0KLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3Qo
KTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAgYi5yZW1vdmUo
QmVoYXZpb3I6OkNvbnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwot
ICAgICAgICBtX3N0YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
V2hpbGVMb29wJiB3aGlsZUxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0g
ICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2
aW9yOjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAg
ICAgbV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRj
aENhc2UmIHN3aXRjaENhc2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNp
dChzd2l0Y2hDYXNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVt
ZW50JiBzd2l0Y2hTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoc3dpdGNo
U3RhdGVtZW50LnN3aXRjaENhc2VzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3N0YWNr
LmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7IH07Ci0g
ICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNl
cygpKSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAg
ICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICByZWR1Y3Rpb24g
PSByZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWR1Y3Rpb24uY29udGFp
bnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dp
dGNoIHN0YXRlbWVudCBtdXN0IGVuZCBpbiBhIGJyZWFrL2ZhbGx0aHJvdWdoL3JldHVybiIsIHN3
aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAg
ICAgcmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6RmFsbHRocm91Z2gpOwotICAgICAgICByZWR1
Y3Rpb24uYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQocmVk
dWN0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3Rh
dGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3Rh
dGVtZW50LmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIE9wdGlv
blNldDxCZWhhdmlvcj4gYlByaW1lOwotICAgICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9k
eSgpKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGJQcmltZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBiUHJpbWUgPSB7IEJlaGF2aW9yOjpOb3RoaW5nIH07Ci0gICAgICAg
IG1fc3RhY2suYXBwZW5kKGIgfCBiUHJpbWUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChi
bG9jay5zdGF0ZW1lbnRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3N0YWNrLmFwcGVu
ZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7IH07Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2suc3RhdGVtZW50cygpLnNpemUoKSAtIDE7ICsr
aSkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMoKVtp
XSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBp
ZiAoIWIuY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIlN0YXRlbWVudCBpbnNpZGUgYW4gaW5uZXIgYmxvY2sgbXVzdCBiZSByZWFj
aGFibGUuIiwgYmxvY2suc3RhdGVtZW50cygpW2ldLT5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGIucmVtb3ZlKEJl
aGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKEJlaGF2aW9yOjpG
YWxsdGhyb3VnaCkpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRmFsbHRocm91
Z2ggbXVzdCBiZSB0aGUgbGFzdCBzdGF0ZW1lbnQgaW4gYSBibG9jay4iLCBibG9jay5zdGF0ZW1l
bnRzKClbaV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmVkdWN0aW9uID0gcmVkdWN0aW9uIHwgYjsKLSAgICAg
ICAgfQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2Jsb2Nr
LnN0YXRlbWVudHMoKS5zaXplKCkgLSAxXSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0g
ICAgICAgIG1fc3RhY2suYXBwZW5kKHJlZHVjdGlvbiB8IGIpOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgIH0K
LQotICAgIFZlY3RvcjxPcHRpb25TZXQ8QmVoYXZpb3I+PiBtX3N0YWNrOwotfTsKLQotRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYgcHJvZ3JhbSkK
LXsKLSAgICBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIgc3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
OwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRl
ZmluaXRpb25zKCkpIHsKLSAgICAgICAgc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLlZpc2l0b3I6
OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChzdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIucmVzdWx0KCk7Ci0gICAgICAgIGF1dG8gYmVoYXZpb3IgPSBzdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIudGFrZUZ1bmN0aW9uQmVoYXZpb3IoKTsKLSAgICAgICAgaWYgKG1hdGNoZXMo
ZnVuY3Rpb25EZWZpbml0aW9uLT50eXBlKCksIHByb2dyYW0uaW50cmluc2ljcygpLnZvaWRUeXBl
KCkpKSB7Ci0gICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVtZW50QmVoYXZpb3JDaGVj
a2VyOjpCZWhhdmlvcjo6UmV0dXJuKTsKLSAgICAgICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgICAgIGlm
IChiZWhhdmlvciAhPSBPcHRpb25TZXQ8U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlv
cj4oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5v
dCBlbmQgYSB2b2lkIGZ1bmN0aW9uIHdpdGggYSBicmVhaywgY29udGludWUsIG9yIGZhbGx0aHJv
dWdoLiIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChiZWhhdmlvciAhPSBT
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpSZXR1cm4pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJOb24tdm9pZCBmdW5jdGlvbnMgbXVzdCBy
ZXR1cm4gYSB2YWx1ZSBvbiBhbGwgY29kZSBwYXRocy4iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRlZWUwM2Q2NjQ1NGY2Y2QwYzY2MzY4ODkzOWUxZjhmZjI3ZDA4NWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3
dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tTdGF0ZW1l
bnRCZWhhdmlvcihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYzkwYTM2NDA1YTJlZDE3NGRkMzU2MzJkNjY5YTQ5NzEy
OGJmMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0
b3JzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldI
TFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVE
ZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZUhhc2guaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBGaW5kQWxsVHlwZXMgOiBwdWJsaWMgVmlzaXRv
ciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmluZEFsbFR5cGVzKCkgPSBkZWZhdWx0OwotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7IHBvaW50ZXJU
eXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBl
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBl
S2V5IHsgYXJyYXlSZWZlcmVuY2VUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJh
eVJlZmVyZW5jZVR5cGUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUm
IGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChV
bm5hbWVkVHlwZUtleSB7IGFycmF5VHlwZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJy
YXlUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0
aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhcHBl
bmROYW1lZFR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGFwcGVuZE5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAg
VmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5kTmFtZWRUeXBlKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0g
ICAgfQotCi0gICAgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4gdGFrZVVubmFtZWRUeXBlcygpCi0g
ICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX3VubmFtZWRUeXBlcyk7Ci0gICAgfQotCi0g
ICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+PiB0YWtlTmFt
ZWRUeXBlcygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX25hbWVkVHlwZXMpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZE5hbWVkVHlwZShBU1Q6Ok5hbWVkVHlw
ZSYgdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSB3YXkgd2Ugd2FsayB0aGUgQVNUIGVuc3Vy
ZXMgd2Ugc2hvdWxkIG5ldmVyIHZpc2l0IGEgbmFtZWQgdHlwZSB0d2ljZS4KLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9uYW1lZFR5cGVzKQotICAgICAg
ICAgICAgQVNTRVJUKCZlbnRyeS5nZXQoKS51bmlmeU5vZGUoKSAhPSAmdHlwZS51bmlmeU5vZGUo
KSk7Ci0jZW5kaWYKLSAgICAgICAgbV9uYW1lZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICB9Ci0K
LSAgICBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiBtX3VubmFtZWRUeXBlczsKLSAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IG1fbmFtZWRUeXBlczsKLX07
Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0m
IHByb2dyYW0pCi17Ci0gICAgRmluZEFsbFR5cGVzIGZpbmRBbGxUeXBlczsKLSAgICBmaW5kQWxs
VHlwZXMuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIGF1dG8gdW5uYW1lZFR5cGVz
ID0gZmluZEFsbFR5cGVzLnRha2VVbm5hbWVkVHlwZXMoKTsKLSAgICBhdXRvIG5hbWVkVHlwZXMg
PSBmaW5kQWxsVHlwZXMudGFrZU5hbWVkVHlwZXMoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9
IHRydWU7Ci0KLSAgICBmb3IgKGF1dG8mIHVubmFtZWRUeXBlS2V5IDogdW5uYW1lZFR5cGVzKSB7
Ci0gICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gdW5uYW1lZFR5cGVLZXkudW5uYW1lZFR5cGUo
KTsKLSAgICAgICAgYXV0byBsb2NhdGlvbiA9IHVubmFtZWRUeXBlLmNvZGVMb2NhdGlvbigpOwot
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZp
ZXJzKCksICZ1bm5hbWVkVHlwZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAg
cGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAg
ICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6
Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
KSk7Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3Rvcikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGRl
ZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9yIGNh
c3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9y
LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1
Y3RvciIpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkVHlwZSA6IG5hbWVkVHlwZXMp
IHsKLSAgICAgICAgaWYgKG1hdGNoZXMobmFtZWRUeXBlLCBwcm9ncmFtLmludHJpbnNpY3MoKS52
b2lkVHlwZSgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRU
eXBlKSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0
PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkuaXNBdG9taWMoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGF1dG8gbG9jYXRpb24gPSBuYW1lZFR5cGUuZ2V0KCkuY29kZUxv
Y2F0aW9uKCk7Ci0KLSAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMo
KSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCBT
dHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJp
YWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6
OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRM
aWJyYXJ5KSk7Ci0gICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9y
KSk7Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNf
Y2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpKSB7Ci0gICAgICAgICAgICBhdXRvJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKTsKLSAgICAgICAgICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRp
b24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVu
Y2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIs
IEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2lu
Z01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdU
Rk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3RydWN0b3IiKSk7
Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZhMjI1NTBlYTJmYmQyYmIyMTYyMGRhMDI1ZjgxZGFlMWQ0ZmRhNWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNp
emVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA1MDczODIzYzdkYTFk
N2ExMjdmM2Q1NmJiNmYyMDUxYTlkZmZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9y
PiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAg
ICBib29sIGlzT3BlcmF0b3IgPSB0cnVlOwotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZp
bml0aW9uIDogcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0
byBsb2NhdGlvbiA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+Y29kZUxvY2F0aW9uKCk7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbjEgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygp
LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlv
biksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFi
bGVEZWNsYXJhdGlvbjIgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
bG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9j
YXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRy
KTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjEp
KTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJh
dGlvbjIpKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwg
QVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6
d3JhcChsb2NhdGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRv
cj09Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNp
bmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBl
bmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIG9wZXJhdG9yPT0gZm9y
IGVudW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRv
IHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRyLCBu
dWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVy
czsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJh
dGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBB
U1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgZW51bWVyYXRpb25EZWZpbml0aW9u
LT50eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxw
dHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAg
ICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3Qg
Y3JlYXRlIGNvcHkgY29uc3RydWN0b3IgZm9yIGVudW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVy
cygpLCAmZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCksIFN0cmluZygpLCBudWxscHRyLCBu
dWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVy
czsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJh
dGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBB
U1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAib3BlcmF0b3IgY2FzdCJfc3Ry
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1v
dmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSAnb3BlcmF0b3IgY2FzdCcgZm9yIGVu
dW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNWJlMTRlYzEz
YmM2MDA5NGJmYWNkMTU2NDc3ZGFjZDA4MDNhN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFZpc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgwZmQ1
MDhjNmNhMmQyNDljZmYwNGU2MjYxYmZmMTVjNzYwZDc0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFZpc2l0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTc2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgot
I2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSAgICAvLyBUaGVzZSB2aXNpdGluZyBmdW5jdGlvbnMgbWlnaHQgYWRkIG5ldyBnbG9iYWwgc3Rh
dGVtZW50cywgc28gZG9uJ3QgdXNlIGZvcmVhY2ggc3ludGF4LgotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0pOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLnNpemUo
KTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZp
bml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVy
YXRpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtp
XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9n
cmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMo
KVtpXSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1l
ZFR5cGUpCi17Ci0gICAgaWYgKGlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1
bm5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRU
eXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5
cGU+KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOwotICAgIGVsc2UKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17
Ci0gICAgaWYgKGlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUp
KTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
PihuYW1lZFR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0
aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmlu
aXRpb24udHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURl
ZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1
cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRWxlbWVudCk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5p
dGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5
cGUoKSk7Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVm
aW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGVudW1lcmF0aW9uTWVtYmVyKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmlu
aXRpb24pKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2Nr
KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgZm9yIChhdXRvJiB0eXBl
QXJndW1lbnQgOiBuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgZm9yIChhdXRv
JiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2Uu
bWF5YmVSZXNvbHZlZFR5cGUoKSAmJiBpczxBU1Q6OlR5cGVEZWZpbml0aW9uPih0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBhdXRvJiB0eXBlRGVmaW5pdGlvbiA9IGRv
d25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24udHlwZSgpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5
cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNl
VHlwZSY+KHBvaW50ZXJUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJh
eVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBl
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQot
ewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAg
aWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KCpzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAg
IGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIpOwotICAgIGlmIChmdW5jdGlv
bkRlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZnVu
Y3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lv
bikgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY29uc3RhbnRFeHByZXNzaW9uKTsKLSAg
ICB9LCBbJl0oUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4mIHR5cGVSZWZlcmVuY2UpIHsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIH0pLCB0eXBlQXJndW1l
bnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJl
bmNlVHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVmZXJlbmNlVHlwZS5lbGVtZW50
VHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlNlbWFudGljJiBzZW1hbnRp
YykKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6QnVpbHRJblNl
bWFudGljJiBidWlsdEluU2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJ1
aWx0SW5TZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3Vy
Y2VTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVzb3VyY2VTZW1hbnRp
Yyk7Ci0gICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgfSksIHNlbWFudGljKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNz
aW9uKQotewotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OkZsb2F0
TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9h
dExpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJh
bCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9vbGVhbkxpdGVyYWwpOwotICAgIH0s
IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwpOwotICAgIH0pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJs
b2NrJiBhdHRyaWJ1dGVCbG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRl
IDogYXR0cmlidXRlQmxvY2spCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkF0
dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMm
KQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpCi17
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBp
bnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwu
dHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmbG9hdExpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OkJvb2xlYW5MaXRlcmFsJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZSYgaW50ZWdlckxpdGVyYWxUeXBlKQotewotICAgIGlmIChpbnRlZ2VyTGl0
ZXJhbFR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGludGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KGludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlKQotewotICAgIGlmICh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5tYXli
ZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxvYXRMaXRlcmFsVHlwZSkKLXsK
LSAgICBpZiAoZmxvYXRMaXRlcmFsVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpCi17
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rp
b25BdHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUpOwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKQotewotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIGZvciAoYXV0byYgc3RhdGVtZW50
IDogYmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGVt
ZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmIHN0YXRl
bWVudExpc3QpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBzdGF0ZW1lbnRMaXN0LnN0
YXRlbWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKLXsKLSAgICBz
d2l0Y2ggKHN0YXRlbWVudC5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpCbG9jazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+
KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpL
aW5kOjpCcmVhazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJl
YWs+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpDb250aW51ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6Q29udGludWU+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpEb1doaWxlTG9vcDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOgotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6RmFsbHRocm91Z2g6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Rm9yTG9vcDoKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlJldHVybjoKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3RhdGVtZW50
TGlzdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RhdGVtZW50
TGlzdD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1l
bnQ6OktpbmQ6OlN3aXRjaENhc2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25z
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OldoaWxlTG9vcDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnJlYWsmKQotewotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29udGludWUmKQotewotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1do
aWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkg
ewotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RGVy
ZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRlcmVm
ZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFs
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJh
bD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtl
QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkRvdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG90
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHBy
ZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpJbmRleDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW5kZXhF
eHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24p
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlRlcm5h
cnk6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9u
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJl
bmNlPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Jj4oZG90RXhwcmVzc2lvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6R2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24o
KSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJj4oaW5kZXhFeHByZXNzaW9uKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24uYmFzZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5p
dGlhbGl6YXRpb24oKSk7Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgaWYgKGZvckxvb3Au
aW5jcmVtZW50KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5pbmNyZW1l
bnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVs
c2VCb2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJv
ZHkoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRl
bWVudCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAgICBpZiAoc3dpdGNo
Q2FzZS52YWx1ZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN3aXRjaENhc2UudmFs
dWUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVu
dCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwot
ICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCi17Ci0gICAgZm9yIChhdXRvJiB2YXJpYWJsZURlY2xhcmF0
aW9uIDogdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQudmFyaWFibGVEZWNsYXJhdGlvbnMo
KSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb24uZ2V0KCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewot
ICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVj
bGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJs
ZURlY2xhcmF0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJh
dGlvbi5pbml0aWFsaXplcigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFzc2ln
bm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChh
dXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoYXJndW1lbnQpOwotICAgIGlmIChjYWxsRXhwcmVzc2lvbi5jYXN0UmV0
dXJuVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmNhbGxFeHByZXNzaW9uLmNh
c3RSZXR1cm5UeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29tbWFFeHBy
ZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDog
Y29tbWFFeHByZXNzaW9uLmxpc3QoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJl
c3Npb24pOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNz
aW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRl
cmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4
cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lv
bi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYWx1ZSgp
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdW
YWx1ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24o
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpCi17
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE1N2MyNTU5MWY2NDFhZTRiZDc2YWNiNTI3NGY5YjY4YWQ3ZDZjZjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
MDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAi
V0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZURlZmluaXRpb247Ci1jbGFzcyBTdHJ1Y3R1cmVE
ZWZpbml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3MgRnVuY3Rpb25E
ZWZpbml0aW9uOwotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci1jbGFzcyBQb2ludGVyVHlw
ZTsKLWNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZTsKLWNsYXNzIEFycmF5VHlwZTsKLWNsYXNzIFN0
cnVjdHVyZUVsZW1lbnQ7Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLWNsYXNzIEZ1bmN0aW9u
RGVjbGFyYXRpb247Ci1jbGFzcyBSZWZlcmVuY2VUeXBlOwotY2xhc3MgQ29uc3RhbnRFeHByZXNz
aW9uOwotY2xhc3MgQnVpbHRJblNlbWFudGljOwotY2xhc3MgUmVzb3VyY2VTZW1hbnRpYzsKLWNs
YXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKLWNsYXNzIFN0YWdlSW5PdXRTZW1h
bnRpYzsKLWNsYXNzIEludGVnZXJMaXRlcmFsOwotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bDsKLWNsYXNzIEZsb2F0TGl0ZXJhbDsKLWNsYXNzIEJvb2xlYW5MaXRlcmFsOwotY2xhc3MgRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsOwotY2xhc3MgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
OwotY2xhc3MgQmxvY2s7Ci1jbGFzcyBTdGF0ZW1lbnRMaXN0OwotY2xhc3MgU3RhdGVtZW50Owot
Y2xhc3MgQnJlYWs7Ci1jbGFzcyBDb250aW51ZTsKLWNsYXNzIERvV2hpbGVMb29wOwotY2xhc3Mg
RXhwcmVzc2lvbjsKLWNsYXNzIERvdEV4cHJlc3Npb247Ci1jbGFzcyBHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZTsKLWNsYXNzIEluZGV4RXhwcmVzc2lvbjsKLWNsYXNzIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbjsKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ7Ci1jbGFzcyBGYWxs
dGhyb3VnaDsKLWNsYXNzIEZvckxvb3A7Ci1jbGFzcyBJZlN0YXRlbWVudDsKLWNsYXNzIFJldHVy
bjsKLWNsYXNzIFN3aXRjaENhc2U7Ci1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQ7Ci1jbGFzcyBWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudDsKLWNsYXNzIFdoaWxlTG9vcDsKLWNsYXNzIFZhcmlh
YmxlRGVjbGFyYXRpb247Ci1jbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbjsKLWNsYXNzIENhbGxF
eHByZXNzaW9uOwotY2xhc3MgQ29tbWFFeHByZXNzaW9uOwotY2xhc3MgRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uOwotY2xhc3MgTG9naWNhbEV4cHJlc3Npb247Ci1jbGFzcyBMb2dpY2FsTm90RXhwcmVz
c2lvbjsKLWNsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb247Ci1jbGFzcyBNYWtlUG9p
bnRlckV4cHJlc3Npb247Ci1jbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOwotY2xhc3Mg
VGVybmFyeUV4cHJlc3Npb247Ci1jbGFzcyBWYXJpYWJsZVJlZmVyZW5jZTsKLWNsYXNzIFVubmFt
ZWRUeXBlOwotY2xhc3MgTmFtZWRUeXBlOwotCi19Ci0KLWNsYXNzIFZpc2l0b3IgewotcHVibGlj
OgotICAgIHZpcnR1YWwgflZpc2l0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE3MSBBZGQgYSB3YXkgdG8g
dmlzaXQgYSBjb25zdCBQcm9ncmFtCi0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoUHJvZ3JhbSYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6VHlwZURlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkFycmF5VHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZUVs
ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4cHJl
c3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpG
bG9hdExpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJh
bCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpT
dGF0ZW1lbnRMaXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpDb250aW51ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvV2hp
bGVMb29wJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpGYWxsdGhyb3VnaCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZvckxv
b3AmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlN3aXRjaENhc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0
ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
RGVyZWZlcmVuY2VFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TG9n
aWNhbEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90
RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRl
ckV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJl
c3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYp
OwotCi0gICAgYm9vbCBoYXNFcnJvcigpIGNvbnN0IHsgcmV0dXJuICFtX2V4cGVjdGVkRXJyb3I7
IH0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzdWx0KCkgeyByZXR1cm4gbV9leHBlY3Rl
ZEVycm9yOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGNoZWNrRXJyb3JBbmRW
aXNpdChUJiB4KQotICAgIHsKLSAgICAgICAgaWYgKCFoYXNFcnJvcigpKQotICAgICAgICAgICAg
dmlzaXQoeCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRFcnJvcihFcnJvciBl
cnJvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzRXJyb3IoKSk7Ci0gICAgICAgIG1fZXhw
ZWN0ZWRFcnJvciA9IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IG1fZXhwZWN0ZWRFcnJvcjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ1ODljYWY3NjcyMTE5YjhhNTQ1OGJi
NTdhM2JkZWQ2YWVlNGU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldlYkdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVBZGFwdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmPFdlYkdQVT4gV2ViR1BVOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVSk7Ci19Ci0KLXZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlv
bmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zLCBXZWJHUFVBZGFwdGVyUHJv
bWlzZSYmIGRlZmVycmVkKSBjb25zdAotewotICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0
ZXI6OmNyZWF0ZShXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0
ZXIuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGIwNTI0MGQwMDZiM2M0MjRiNDkwNjdjMjNlMTQ5M2NhYmQy
MzA4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJJRExUeXBlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYkdQVUFkYXB0ZXI7Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xh
c3MgV2ViR1BVIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJHUFU+IGNyZWF0ZSgpOwotCi0gICAgdXNpbmcgV2ViR1BVQWRhcHRlclByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdlYkdQVUFkYXB0ZXI+PjsKLQot
ICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0OwotCi1wcml2YXRlOgotICAg
IFdlYkdQVSgpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZlMjVkODZhMmNhMjQ4OWRiMTMy
NDNiM2M2NzUyMGFkZDA5OGU3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJ
bnRlcmZhY2VOYW1lPUdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BV
IHsKLSAgICBQcm9taXNlPFdlYkdQVUFkYXB0ZXI+IHJlcXVlc3RBZGFwdGVyKG9wdGlvbmFsIEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiYjZmOTk0ZmIyMDM1NGIzZWE5ODkzMjM3ZGNjMTExMWI2ZWViMTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVB
ZGFwdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIkpTV2ViR1BVRGV2aWNlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShz
dGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoV1RGTW92ZShvcHRpb25zKSkpOwot
fQotCi1XZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi0gICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRp
b25zKSkKLXsKLX0KLQotdm9pZCBXZWJHUFVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKERvY3VtZW50
JiBkb2N1bWVudCwgRGV2aWNlUmVxdWVzdFByb21pc2UmJiBwcm9taXNlKSBjb25zdAotewotICAg
IGRvY3VtZW50LnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvIGRldmljZSA9IFdlYkdQVURldmljZTo6dHJ5Q3Jl
YXRlKGNvbnRleHQsIHByb3RlY3RlZFRoaXMuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSgqZGV2aWNlKTsKLQotICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgIH0pOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhNzE5Y2VkNDYyNDJmYThhNDE3MWI3ZTNmODU4MWNlYWU0NmU1OTZh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNpbmNsdWRlICJJ
RExUeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgV2Vi
R1BVRGV2aWNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJH
UFVBZGFwdGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVh
dGUoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwotCi0gICAgdXNp
bmcgRGV2aWNlUmVxdWVzdFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
PFdlYkdQVURldmljZT4+OwotICAgIHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVudCYsIERldmlj
ZVJlcXVlc3RQcm9taXNlJiYpIGNvbnN0OwotICAgIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0
aW9uczsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVUFkYXB0ZXIoc3RkOjpvcHRp
b25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwotCi0gICAgc3RkOjpvcHRpb25hbDxH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IG1fb3B0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NjYxYWIwMDY0MzkwZDlmZmE5MjE0NmJmOWExOTA2NTcyODhjMzQwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUFkYXB0
ZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUFkYXB0ZXIgewotICAg
IC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICAvLyByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8vIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOyBEb24ndCBleHBvc2UgaGlnaGVyIGxpbWl0cyBm
b3Igbm93LgotCi0gICAgLy8gTWF5IHJlamVjdCB3aXRoIERPTUV4Y2VwdGlvbiAgLy8gVE9ETzog
RE9NRXhjZXB0aW9uKCJPcGVyYXRpb25FcnJvciIpPwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0g
UHJvbWlzZTxXZWJHUFVEZXZpY2U+IHJlcXVlc3REZXZpY2UoLypHUFVEZXZpY2VEZXNjcmlwdG9y
IGRlc2NyaXB0b3IqLyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGZl
MWRmMTYzZmM1NWFjYmNjNTFhNzQyMDkwNmYyZGMxNjRmODguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJH
UFVCaW5kR3JvdXA+IFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXA+
JiYgYmluZEdyb3VwKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJpbmRHcm91
cChXVEZNb3ZlKGJpbmRHcm91cCkpKTsKLX0KLQotV2ViR1BVQmluZEdyb3VwOjpXZWJHUFVCaW5k
R3JvdXAoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5kR3JvdXApCi0gICAgOiBtX2JpbmRHcm91
cChXVEZNb3ZlKGJpbmRHcm91cCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjMy
NWZiMmFlZjU1NDFiMDM0ZDJkOTFlNWE2NzFjNWMyNmZhNzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUJpbmRHcm91cC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJpbmRHcm91
cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJpbmRHcm91cD4gewotcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViR1BVQmluZEdyb3VwPiBjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cD4mJik7
Ci0KLSAgICBHUFVCaW5kR3JvdXAqIGJpbmRHcm91cCgpIHsgcmV0dXJuIG1fYmluZEdyb3VwLmdl
dCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQmluZEdyb3VwKFJlZlB0cjxH
UFVCaW5kR3JvdXA+JiYpOwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91cD4gbV9iaW5kR3JvdXA7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OTMwMjk0OGI0NTNiM2VlN2Y5NTZj
NjRhZjM4YjRmYzkwZTlkNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
Ci0gICAgSW50ZXJmYWNlTmFtZT1HUFVCaW5kR3JvdXAsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0g
aW50ZXJmYWNlIFdlYkdQVUJpbmRHcm91cCB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkNzgwMDEwM2M5YTdlMzVmNDc2MjY2NTMxZjUxMmE4Y2JlNzlmYjNh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBXZWJH
UFVCaW5kaW5nUmVzb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXZWJHUFVTYW1wbGVyPiwgUmVmUHRy
PFdlYkdQVVRleHR1cmVWaWV3PiwgV2ViR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0cnVjdCBXZWJH
UFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIFdlYkdQVUJp
bmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NGY2YWVlZjgzOTM5YWE1MjM1MGQ5YzA5YTljMDVkY2ZlOWMzNTZkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIChXZWJHUFVT
YW1wbGVyIG9yIFdlYkdQVVRleHR1cmVWaWV3IG9yIFdlYkdQVUJ1ZmZlckJpbmRpbmcpIFdlYkdQ
VUJpbmRpbmdSZXNvdXJjZTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUJpbmRHcm91cEJpbmRpbmcg
ewotICAgIHJlcXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIFdlYkdQVUJpbmRpbmdS
ZXNvdXJjZSByZXNvdXJjZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyOWM4ZWQ5M2ExODA0YzA5ODc5NzFhOWU3ZmIxMmE2YTM1MTc2OTRk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZl
ckJpbmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZlciogYnVmZmVyLCBjb25zdCBHUFVCaW5kR3JvdXBM
YXlvdXRCaW5kaW5nJiBiaW5kaW5nLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17
Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5k
aWYKLQotICAgIHN3aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlw
ZTo6VW5pZm9ybUJ1ZmZlcjoKLSAgICAgICAgaWYgKCFidWZmZXItPmlzVW5pZm9ybSgpKSB7Ci0g
ICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlciByZXNvdXJjZSBmb3IgYmluZGlu
ZyAldSBkb2VzIG5vdCBoYXZlIFVOSUZPUk0gdXNhZ2UhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5n
LmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlN0b3JhZ2VCdWZmZXI6Ci0g
ICAgICAgIGlmICghYnVmZmVyLT5pc1N0b3JhZ2UoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBHUFVCdWZmZXIgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUgZG9lcyBub3QgaGF2ZSBT
VE9SQUdFIHVzYWdlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IExheW91dCBiaW5kaW5nICV1IGlzIG5v
dCBhIGJ1ZmZlci10eXBlIHJlc291cmNlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5n
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25hbDxHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBm
dW5jdGlvbk5hbWUgPSAiR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoKSI7Ci0KLSAgICBpZiAo
IWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgaWYgKGJpbmRpbmdzLnNp
emUoKSAhPSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpLnNpemUoKSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1pc21hdGNoZWQgbnVtYmVyIG9mIEdQVUJpbmRH
cm91cExheW91dEJpbmRpbmdzIGFuZCBHUFVCaW5kR3JvdXBCaW5kaW5ncyEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gbGF5
b3V0TWFwID0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGluZ3NNYXAoKTsKLQotICAg
IFZlY3RvcjxHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kR3JvdXBCaW5kaW5nczsKLSAgICBiaW5k
R3JvdXBCaW5kaW5ncy5yZXNlcnZlQ2FwYWNpdHkoYmluZGluZ3Muc2l6ZSgpKTsKLQotICAgIGZv
ciAoY29uc3QgYXV0byYgYmluZGluZyA6IGJpbmRpbmdzKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0
b3IgPSBsYXlvdXRNYXAuZmluZChiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICBpZiAoaXRlcmF0
b3IgPT0gbGF5b3V0TWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQ
VUJpbmRHcm91cExheW91dEJpbmRpbmcgJXUgbm90IGZvdW5kIGluIEdQVUJpbmRHcm91cExheW91
dCEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgYXV0byBsYXlvdXRCaW5k
aW5nID0gaXRlcmF0b3ItPnZhbHVlOwotCi0gICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlVmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRyPFdlYkdQVVNhbXBsZXI+JiBz
YW1wbGVyKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewotICAgICAgICAg
ICAgaWYgKCFzYW1wbGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVyKCk7Ci0gICAgICAg
ICAgICBpZiAoIWdwdVNhbXBsZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4o
bWFrZVJlZigqZ3B1U2FtcGxlcikpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8V2ViR1BV
VGV4dHVyZVZpZXc+JiB2aWV3KSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4g
ewotICAgICAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgICAgICBhdXRvIHRleHR1cmUgPSB2aWV3LT50ZXh0dXJlKCk7Ci0gICAg
ICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4o
bWFrZVJlZigqdGV4dHVyZSkpOwotICAgICAgICB9LCBbJmxheW91dEJpbmRpbmcsIGZ1bmN0aW9u
TmFtZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZykgLT4gc3RkOjpvcHRpb25h
bDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyQmluZGluZy5i
dWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gYnVmZmVyQmluZGluZy5idWZmZXItPmJ1ZmZlcigpOwotICAgICAgICAg
ICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGJ1ZmZlciwgbGF5b3V0
QmluZGluZy5leHRlcm5hbEJpbmRpbmcsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQ
VUJpbmRpbmdSZXNvdXJjZT4oR1BVQnVmZmVyQmluZGluZyB7IG1ha2VSZWYoKmJ1ZmZlciksIGJ1
ZmZlckJpbmRpbmcub2Zmc2V0LCBidWZmZXJCaW5kaW5nLnNpemUgfSk7Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlID0gV1RGOjp2aXNpdChiaW5kaW5nUmVzb3Vy
Y2VWaXNpdG9yLCBiaW5kaW5nLnJlc291cmNlKTsKLSAgICAgICAgaWYgKCFiaW5kaW5nUmVzb3Vy
Y2UpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCByZXNvdXJjZSBmb3Ig
YmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5n
LmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVuZChHUFVCaW5kR3JvdXBC
aW5kaW5nIHsgYmluZGluZy5iaW5kaW5nLCBXVEZNb3ZlKGJpbmRpbmdSZXNvdXJjZS52YWx1ZSgp
KSB9KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwRGVzY3JpcHRvciB7IG1ha2VS
ZWYoKmxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpLCBXVEZNb3ZlKGJpbmRHcm91cEJpbmRpbmdz
KSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDI1
MjEwOGUwNWVlN2NkZTc1ZDc1NzA1ZWZkNGQ2MWE3YWU1MjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdy
b3VwTGF5b3V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3Jp
cHRvcjsKLQotc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0
aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVzY3Jp
cHRvcigpIGNvbnN0OwotCi0gICAgUmVmUHRyPGNvbnN0IFdlYkdQVUJpbmRHcm91cExheW91dD4g
bGF5b3V0OwotICAgIFZlY3RvcjxXZWJHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kaW5nczsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjc1YzYz
MjU5MDAyOTkxYTE2NmRhNTAwZWQyMmI3NGY4NWE1YTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGlj
dGlvbmFyeSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVC
aW5kR3JvdXBMYXlvdXQgbGF5b3V0OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdlYkdQVUJpbmRH
cm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkM2QyZjg3OTAxNGU1NjNkZjkxNTM2MDViYjBlMzA1ZjYzZmQxNzUyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVC
aW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmIGxheW91
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQoV1RG
TW92ZShsYXlvdXQpKSk7Ci19Ci0KLVdlYkdQVUJpbmRHcm91cExheW91dDo6V2ViR1BVQmluZEdy
b3VwTGF5b3V0KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQotICAgIDogbV9i
aW5kR3JvdXBMYXlvdXQoV1RGTW92ZShsYXlvdXQpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTVjYzVhNzUxMmJjMDdhYTViOTUyODYwN2FmMmNkODQxYTkyMjAw
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYp
OwotCi0gICAgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0KiBiaW5kR3JvdXBMYXlvdXQoKSBjb25z
dCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IFdlYkdQVUJpbmRHcm91cExheW91dChSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYm
KTsKLQotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IG1fYmluZEdyb3VwTGF5b3V0Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBMYXlvdXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWUzZTI0ZjEyYTNh
ZTgxYWRjZWNjNWU1ZTE4ZjBiYTc4YjEyN2ZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cExheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQmluZEdyb3VwTGF5b3V0LAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgewot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY2MjY0OTQxOGI0NjhkYjRmMDkzMDI4NmI3
MWIyM2MyMzk3N2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWZQ
dHI8R1BVQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVy
cm9yU2NvcGVzKSk7Ci19Ci0KLVdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVC
dWZmZXI+JiYgYnVmZmVyLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0gICAgOiBHUFVP
YmplY3RCYXNlKG1ha2VSZWYoZXJyb3JTY29wZXMpKQotICAgICwgbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKQotewotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6bWFwUmVhZEFzeW5jKEJ1ZmZlck1h
cHBpbmdQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNh
bGxiYWNrKFdURk1vdmUocHJvbWlzZSksIHRydWUpOwotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6
bWFwV3JpdGVBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgcmVq
ZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhXVEZNb3ZlKHByb21pc2UpLCBmYWxzZSk7Ci19
Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjp1bm1hcCgpCi17Ci0gICAgZXJyb3JTY29wZXMoKS5zZXRF
cnJvclByZWZpeCgiR1BVQnVmZmVyLnVubWFwKCk6ICIpOwotCi0gICAgaWYgKCFtX2J1ZmZlcikK
LSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3Bl
cmF0aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVy
LT51bm1hcCgmZXJyb3JTY29wZXMoKSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjpkZXN0cm95
KCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KCJHUFVCdWZmZXIuZGVzdHJv
eSgpOiAiKTsKLQotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIGVycm9yU2NvcGVzKCkuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgbV9idWZmZXItPmRlc3Ryb3koJmVycm9yU2NvcGVzKCkpOwotICAgICAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6cmVqZWN0T3JSZWdp
c3RlclByb21pc2VDYWxsYmFjayhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UsIGJvb2wg
aXNSZWFkKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgobWFrZVN0cmluZygi
R1BVQnVmZmVyLm1hcCIsIGlzUmVhZCA/ICJSZWFkIiA6ICJXcml0ZSIsICJBc3luYygpOiAiKSk7
Ci0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzKCkuZ2VuZXJhdGVQ
cmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogaW52YWxpZCBHUFVCdWZmZXIhIik7Ci0g
ICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBt
X2J1ZmZlci0+cmVnaXN0ZXJNYXBwaW5nQ2FsbGJhY2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBwcm90ZWN0ZWRFcnJvclNjb3BlcyA9IG1ha2VSZWYoZXJyb3JTY29wZXMoKSldIChKU0M6
OkFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhcnJheUJ1
ZmZlcikKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgqYXJyYXlCdWZmZXIpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHBvc3NpYmxlIHRvIGhpdCB0aGlz
IGNvZGUgcGF0aCBpbiByZXNwb25zZSB0byBhbiB1bm1hcCBjYWxsLCB3aGVyZQotICAgICAgICAg
ICAgLy8gdGhlIEFycmF5QnVmZmVyIHdpbGwgZGVmaW5pdGVseSBiZSBudWxsLCBhbmQgdGh1cyBh
biBvdXQgb2YgbWVtb3J5IGVycm9yIG1ha2VzIG5vIHNlbnNlLgotICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE2NgotICAgICAgICAgICAg
cHJvdGVjdGVkRXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpP
dXRPZk1lbW9yeSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgICAgICB9Ci0g
ICAgfSwgaXNSZWFkLCBlcnJvclNjb3BlcygpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZWVl
MjA5MmEzZGVkZjdiNzM1MjZkOWVkOGEzMjkyM2FlZjRiN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKLSNpbmNsdWRlICJHUFVPYmplY3RC
YXNlLmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xhc3MgV2ViR1BVQnVmZmVy
IDogcHVibGljIEdQVU9iamVjdEJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BV
QnVmZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJyb3JTY29wZXMmKTsKLQot
ICAgIEdQVUJ1ZmZlciogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICBj
b25zdCBHUFVCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9
Ci0KLSAgICB1c2luZyBCdWZmZXJNYXBwaW5nUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8SlNDOjpBcnJheUJ1ZmZlcj4+OwotICAgIHZvaWQgbWFwUmVhZEFzeW5jKEJ1
ZmZlck1hcHBpbmdQcm9taXNlJiYpOwotICAgIHZvaWQgbWFwV3JpdGVBc3luYyhCdWZmZXJNYXBw
aW5nUHJvbWlzZSYmKTsKLSAgICB2b2lkIHVubWFwKCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVCdWZmZXI+JiYs
IEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICB2b2lkIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2Fs
bGJhY2soQnVmZmVyTWFwcGluZ1Byb21pc2UmJiwgYm9vbCk7Ci0KLSAgICBSZWZQdHI8R1BVQnVm
ZmVyPiBtX2J1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIwYTkwYzQxMTdjMWYw
NDdjY2Q0YzllMTU0MzgyZTc4NTEyMzZkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IHU2NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUJ1ZmZlciwKLSAgICBFeHBvc2VkPVdpbmRv
dwotXSBpbnRlcmZhY2UgV2ViR1BVQnVmZmVyIHsKLSAgICBQcm9taXNlPEFycmF5QnVmZmVyPiBt
YXBSZWFkQXN5bmMoKTsKLSAgICBQcm9taXNlPEFycmF5QnVmZmVyPiBtYXBXcml0ZUFzeW5jKCk7
Ci0gICAgdW5kZWZpbmVkIHVubWFwKCk7Ci0KLSAgICB1bmRlZmluZWQgZGVzdHJveSgpOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRp
bmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdkOGI4YzgwZjlkMGVmOGZmZTU0
Y2MwNDZmNjA2ODNlNmM2N2E0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5k
aW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBXZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7
Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFkODI2ZGRmNmEwZjZlYjg0ZTk5NWU1MmM1YTJh
NTdiY2I3ZjM5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUK
LV0gZGljdGlvbmFyeSBXZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICByZXF1aXJlZCBXZWJHUFVC
dWZmZXIgYnVmZmVyOwotICAgIHU2NCBvZmZzZXQgPSAwOwotICAgIHJlcXVpcmVkIHU2NCBzaXpl
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTA1MTE3NzZk
ODdlYjUyNzE4NzU1MjI2MDM1MzgwMzllMWZjNjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWZQdHI8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQotewotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ExZGE0ZWEzYzA5YmNkOTdhN2M4NmQ3NmNlYjhi
MDA5YmZlMzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0K
LSAgICBHUFVDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbV9jb21tYW5k
QnVmZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQ
dHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4g
bV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDlhZTJmMmRjYmNiMmIxNTc2YTFmMThlZTNiYTYyMDBjZjU3YmU1ODIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tbWFu
ZEJ1ZmZlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZEJ1
ZmZlciB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDNl
NDdkNzA1NmU1MTZkMGQ0OTYyY2JlM2E4OGYwMDUzOWY1YWE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1h
bmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNp
bmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+
IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNvbnN0
Ci17Ci0gICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3IgY29weSEi
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
QWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJldHVybiBHUFVCdWZmZXJDb3B5VmlldyB7
IG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhpcyB9OwotfQotCi1zdGQ6Om9wdGlvbmFs
PEdQVVRleHR1cmVDb3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVU
ZXh0dXJlQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+
dGV4dHVyZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjog
SW52YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAg
cmV0dXJuIEdQVVRleHR1cmVDb3B5VmlldyB7IG1ha2VSZWYoKnRleHR1cmUtPnRleHR1cmUoKSks
ICp0aGlzIH07Ci19Ci0KLVJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEVu
Y29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEVuY29kZXIoV1RGTW92ZShidWZmZXIp
KSk7Ci19Ci0KLVdlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQ
dHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKQotewotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQ
VUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3Mo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBhdXRvIGdwdURlc2NyaXB0b3Ig
PSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCk7Ci0gICAgaWYg
KCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6
OmNyZWF0ZShudWxscHRyKTsKLQotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVmZmVyKSwgV1RGTW92ZSgqZ3B1RGVz
Y3JpcHRvcikpOwotICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFdU
Rk1vdmUoZW5jb2RlcikpOwotfQotCi1SZWY8V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBXZWJH
UFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcygpCi17Ci0gICAgaWYgKCFtX2NvbW1h
bmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpi
ZWdpbkNvbXB1dGVQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4g
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIGF1
dG8gZW5jb2RlciA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKG1ha2VSZWYoKm1f
Y29tbWFuZEJ1ZmZlcikpOwotICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNy
ZWF0ZShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6
Y29weUJ1ZmZlclRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYgc3JjLCB1aW50NjRfdCBzcmNPZmZzZXQs
IFdlYkdQVUJ1ZmZlciYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17
Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQ
VUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFzcmMuYnVmZmVyKCkgfHwgIWRz
dC5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0g
ICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIobWFrZVJlZigqc3JjLmJ1ZmZl
cigpKSwgc3JjT2Zmc2V0LCBtYWtlUmVmKCpkc3QuYnVmZmVyKCkpLCBkc3RPZmZzZXQsIHNpemUp
OwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNv
bnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQVVRleHR1cmVD
b3B5VmlldyYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYg
KCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRF
bmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZlci50
cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBk
c3RUZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVC
dWZmZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
RklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNv
cHlCdWZmZXJUb1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdwdVRl
eHR1cmVWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBj
b25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYg
c2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVUZXh0dXJl
VmlldyA9IHNyY1RleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0
byBncHVCdWZmZXJWaWV3ID0gZHN0QnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7
Ci0KLSAgICBpZiAoIWdwdVRleHR1cmVWaWV3IHx8ICFncHVCdWZmZXJWaWV3KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1f
Y29tbWFuZEJ1ZmZlci0+Y29weVRleHR1cmVUb0J1ZmZlcihXVEZNb3ZlKCpncHVUZXh0dXJlVmll
dyksIFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBzaXplKTsKLX0KLQotdm9pZCBXZWJHUFVDb21t
YW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlW
aWV3JiBzcmMsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRl
bnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0co
V2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IElu
dmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1
U3JjVmlldyA9IHNyYy50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdw
dURzdFZpZXcgPSBkc3QudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0KLSAgICBpZiAo
IWdwdVNyY1ZpZXcgfHwgIWdwdURzdFZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJ
WE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5
VGV4dHVyZVRvVGV4dHVyZShXVEZNb3ZlKCpncHVTcmNWaWV3KSwgV1RGTW92ZSgqZ3B1RHN0Vmll
dyksIHNpemUpOwotfQotICAgIAotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1h
bmRFbmNvZGVyOjpmaW5pc2goKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyIHx8IG1fY29t
bWFuZEJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2Vi
R1BVQ29tbWFuZEVuY29kZXI6OmZpbmlzaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAg
ICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0g
ICAgLy8gUGFzc2VzIHRoZSByZWZlcmVuY2VkIEdQVUNvbW1hbmRCdWZmZXIgdG8gdGhlIFdlYkdQ
VUNvbW1hbmRCdWZmZXIsIGludmFsaWRhdGluZyB0aGlzIFdlYkdQVUNvbW1hbmRFbmNvZGVyLgot
ICAgIHJldHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2
ZTE4NGExMTRmMmRkZGZmOTBiZTMzMjhmNWQxZTYwNzQ1Y2I3M2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNsYXNzIFdlYkdQ
VUNvbXB1dGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOwotY2xh
c3MgV2ViR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUV4dGVudDNEOwotc3RydWN0IFdlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVQnVmZmVyQ29weVZpZXcgOiBHUFVC
dWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+
IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BV
QnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IDogR1BV
VGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVUZXh0dXJlQ29weVZp
ZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdl
YkdQVVRleHR1cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBXZWJHUFVDb21tYW5kRW5jb2RlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiYmKTsKLQotICAgIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gYmVnaW5SZW5k
ZXJQYXNzKGNvbnN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJik7Ci0gICAgUmVmPFdlYkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHZvaWQgY29weUJ1
ZmZlclRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IHNyY09mZnNldCwgV2ViR1BVQnVm
ZmVyJiwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLSAgICB2b2lkIGNvcHlC
dWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBXZWJHUFVU
ZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1
cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVCdWZm
ZXJDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRv
VGV4dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJl
Q29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIFJlZjxXZWJHUFVDb21tYW5kQnVm
ZmVyPiBmaW5pc2goKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQ
dHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4g
bV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWZkMjJlMDQ4NDhkMjg1NGI4ZjVjMTMyNDVjNDYyMTY4ODYyMjkxMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw4NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2
NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNvcHlWaWV3Ci1dIGRpY3Rpb25h
cnkgR1BVQnVmZmVyQ29weVZpZXcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZlciBidWZmZXI7
Ci0gICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgdTMyIHJvd1BpdGNoOwotICAgIHJl
cXVpcmVkIHUzMiBpbWFnZUhlaWdodDsKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVU
ZXh0dXJlQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVUZXh0dXJlQ29weVZpZXcgewotICAgIHJl
cXVpcmVkIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKLSAgICB1MzIgbWlwTGV2ZWwgPSAwOwotICAg
IHUzMiBhcnJheUxheWVyID0gMDsKLSAgICBHUFVPcmlnaW4zRCBvcmlnaW47IC8vIHt4OiAwLCB5
OiAwLCB6OiAwfQotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIElu
dGVyZmFjZU5hbWU9R1BVQ29tbWFuZEVuY29kZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIFdlYkdQVUNvbW1hbmRFbmNvZGVyIHsKLSAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ciBiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7
Ci0gICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsKLQotICAg
IHVuZGVmaW5lZCBjb3B5QnVmZmVyVG9CdWZmZXIoCi0gICAgICAgIFdlYkdQVUJ1ZmZlciBzcmMs
Ci0gICAgICAgIHU2NCBzcmNPZmZzZXQsCi0gICAgICAgIFdlYkdQVUJ1ZmZlciBkc3QsCi0gICAg
ICAgIHU2NCBkc3RPZmZzZXQsCi0gICAgICAgIHU2NCBzaXplKTsKLQotICAgIHVuZGVmaW5lZCBj
b3B5QnVmZmVyVG9UZXh0dXJlKAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBzb3VyY2UsCi0g
ICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgR1BVRXh0ZW50
M0QgY29weVNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCi0gICAg
ICAgIEdQVVRleHR1cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3
IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICB1bmRl
ZmluZWQgY29weVRleHR1cmVUb1RleHR1cmUoCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBz
b3VyY2UsCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAg
R1BVRXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZlciBmaW5pc2go
KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWNmYTc4OGM4NmJjOTFiOGIwNzNhNmQ1YjNkNTUxNTc3MjcyM2NjZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRl
UGlwZWxpbmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyPiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29t
cHV0ZVBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKLX0KLQotV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjpXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVmUHRyPEdQVUNv
bXB1dGVQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNzRW5jb2RlciB7IFdURk1v
dmUoZW5jb2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0
UGlwZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBp
ZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNz
RW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCFwaXBlbGluZS5jb21wdXRlUGlwZWxpbmUoKSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJ
bnZhbGlkIHBpcGVsaW5lISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0Vu
Y29kZXItPnNldFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLmNvbXB1dGVQaXBlbGluZSgpKSk7
Ci19Ci0KLXZvaWQgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCh1bnNpZ25lZCB4
LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlmICghbV9wYXNzRW5jb2Rlcikgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJ
bnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJ
WE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotICAgIG1fcGFzc0VuY29kZXItPmRpc3BhdGNo
KHgsIHksIHopOwotfQotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpCi17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIu
Z2V0KCk7Ci19Ci0KLWNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVDb21w
dXRlUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNz
RW5jb2Rlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBhZWRjMTJlMmZjMzI4ZDlhOTc2MThiNWM5MGUzNTM5YmY0M2U3NzIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOwotY2xhc3MgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBX
ZWJHUFVDb21wdXRlUGlwZWxpbmU7Ci0KLWNsYXNzIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciA6
IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tcHV0
ZVBhc3NFbmNvZGVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBkaXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5
LCB1bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIo
UmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlZlB0cjxH
UFVDb21wdXRlUGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDZjOTQ4N2NkMTY2MjkzODg0YmFkZTk0
YjUzMDk2YjA2MGI4YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMy
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLAotICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIgOiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAg
dW5kZWZpbmVkIHNldFBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZSBwaXBlbGluZSk7Ci0g
ICAgdW5kZWZpbmVkIGRpc3BhdGNoKHUzMiB4LCB1MzIgeSwgdTMyIHopOwotCi0gICAgLy8gVE9E
TyBhZGQgbWlzc2luZyBjb21tYW5kcwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlMGZmYTI4MGI5Y2U4ZDc0NjE4YTY4MDcyOWNhNjgwNTA4MTYwMzg2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVz
LmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRl
ICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGlwZWxpbmU+IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlLCBSZWZQdHI8R1BV
Q29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMs
IFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21wdXRlUGlwZWxpbmUoZGV2aWNlLCBXVEZNb3ZlKHBp
cGVsaW5lKSwgZXJyb3JTY29wZXMsIFdURk1vdmUoY29tcHV0ZVNoYWRlcikpKTsKLX0KLQotV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lOjpXZWJHUFVDb21wdXRlUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBk
ZXZpY2UsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hh
ZGVyKQotICAgIDogV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykKLSAgICAsIG1f
Y29tcHV0ZVBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwgbV9jb21wdXRlU2hhZGVy
KFdURk1vdmUoY29tcHV0ZVNoYWRlcikpCi17Ci19Ci0KLVdlYkdQVUNvbXB1dGVQaXBlbGluZTo6
fldlYkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJHUFVDb21wdXRl
UGlwZWxpbmU6OmNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkK
LXsKLSAgICBpZiAobV9jb21wdXRlU2hhZGVyLm1vZHVsZSkgewotICAgICAgICBjb25zdCBhdXRv
JiBjb21wdXRlU291cmNlID0gbV9jb21wdXRlU2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAg
ICAgIG1fY29tcHV0ZVNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShH
UFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgY29tcHV0ZVNvdXJj
ZSB9KSwgY29tcHV0ZVNvdXJjZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpyZWNvbXBpbGUo
Y29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fY29tcHV0ZVBpcGVsaW5l
ICYmIG1fY29tcHV0ZVNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdwdUNvbXB1
dGVTaGFkZXJNb2R1bGUgPSBtX2NvbXB1dGVTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkgewotICAg
ICAgICAgICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZShtYWtl
UmVmKCpncHVDb21wdXRlU2hhZGVyTW9kdWxlKSwgeyBtX2NvbXB1dGVTaGFkZXIuZW50cnlQb2lu
dCB9KTsKLSAgICAgICAgICAgIHJldHVybiBtX2NvbXB1dGVQaXBlbGluZS0+cmVjb21waWxlKGRl
dmljZS5kZXZpY2UoKSwgV1RGTW92ZShjb21wdXRlU3RhZ2UpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiODQ3MTM1MmUyODJhNGJlZDg5ZDZkODdhYjgyYmJlMGQ5ZDg4MDRhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmU7Ci1jbGFzcyBH
UFVQaXBlbGluZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BVRGV2aWNlOwot
Y2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOwotCi1jbGFzcyBXZWJHUFVDb21wdXRlUGlwZWxpbmUg
ZmluYWwgOiBwdWJsaWMgV2ViR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldl
YkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21wdXRlUGlw
ZWxpbmU+IGNyZWF0ZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiYm
LCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNo
YWRlcik7Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZVBpcGVsaW5l
KCk7IH0KLSAgICBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmUqIGNvbXB1dGVQaXBlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lLmdldCgpOyB9Ci0gICAgUmVmUHRyPFdlYkdQ
VVNoYWRlck1vZHVsZT4gY29tcHV0ZVNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZVNo
YWRlci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQ
VURldmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpOwotCi1w
cml2YXRlOgotICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8
R1BVQ29tcHV0ZVBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpT
aGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVs
aW5lPiBtX2NvbXB1dGVQaXBlbGluZTsKLQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3Bl
Y3RvciByZWNvbXBpbGF0aW9uLgotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIG1fY29t
cHV0ZVNoYWRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShXZWJDb3JlOjpXZWJHUFVDb21wdXRlUGlwZWxpbmUs
IGlzQ29tcHV0ZVBpcGVsaW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGlu
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYTJjZTJmNDI5Yzc1NmJjOWJi
ZDBmOGQ3OWIyYjMzYmM2YzQwMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BV
Q29tcHV0ZVBpcGVsaW5lLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVD
b21wdXRlUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZGI3ZDM1ODhiN2YxYWY4MjAzMGI0OWE4NTEx
MTA4MWY5MWIzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I+IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewot
ICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBsYXlvdXQgPyBtYWtlUmVmUHRyKGxheW91dC0+cGlw
ZWxpbmVMYXlvdXQoKSkgOiBudWxscHRyOwotCi0gICAgYXV0byBjb21wdXRlID0gY29tcHV0ZVN0
YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwotICAgIGlmICgh
Y29tcHV0ZSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCJHUFVEZXZpY2U6
OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBJbnZhbGlkIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUocGlwZWxpbmVMYXlv
dXQpLCBXVEZNb3ZlKCpjb21wdXRlKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWI3ZWYzNjk0MmEyYTk2YjY5N2IwNDg2YmI4
NTVlMDBlM2YzZThlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRXJyb3JTY29w
ZXM7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5
Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0
OwotCi0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmMWJjNjczYzk1ZTI4MjJiNWVlYjZlZGMzMWFmZmQ4ZjY2YjM4MTFiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgcmVxdWlyZWQgV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmViZTczZjU3YzA2YzFjZDAwMmRiNTU5MzU1ZDhjZDM3NmZiZjI0OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViR1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0j
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVk
ZSAiR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVs
aW5lLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRl
clBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCdWZmZXJTb3VyY2UuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgot
I2luY2x1ZGUgIkpTR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkpTR1BVVmFsaWRh
dGlvbkVycm9yLmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmlu
ZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZm
ZXJCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKLSNpbmNsdWRl
ICJXZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJX
ZWJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJXZWJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0j
aW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQ
VVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5j
bHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdQVURldmljZSk7Ci0KLUxv
Y2sgV2ViR1BVRGV2aWNlOjpzX2luc3RhbmNlc0xvY2s7Ci0KLVJlZlB0cjxXZWJHUFVEZXZpY2U+
IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2
aWNlID0gR1BVRGV2aWNlOjp0cnlDcmVhdGUoYWRhcHRlci0+b3B0aW9ucygpKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoY29udGV4dCwgV1RGTW92
ZShhZGFwdGVyKSwgbWFrZVJlZigqZGV2aWNlKSkpOwotICAgICAgICBkZXZpY2UtPnNldEVycm9y
U2NvcGVzKHJlc3VsdC0+bV9lcnJvclNjb3Blcy5jb3B5UmVmKCkpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSGFzaFNldDxXZWJHUFVE
ZXZpY2UqPiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7Ci0gICAgcmV0dXJuIGlu
c3RhbmNlczsKLX0KLQotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkKLXsKLSAg
ICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1XZWJHUFVEZXZpY2U6OldlYkdQVURldmlj
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRl
cj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKLSAgICA6IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV9hZGFwdGVyKFdURk1vdmUoYWRhcHRlcikp
Ci0gICAgLCBtX2RldmljZShXVEZNb3ZlKGRldmljZSkpCi0gICAgLCBtX2Vycm9yU2NvcGVzKEdQ
VUVycm9yU2NvcGVzOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IChHUFVFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAg
IGRpc3BhdGNoVW5jYXB0dXJlZEVycm9yKFdURk1vdmUoZXJyb3IpKTsKLSAgICB9KSkKLXsKLSAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7Ci0KLSAgICB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgaW5z
dGFuY2VzKCkuYWRkKHRoaXMpOwotICAgIH0KLX0KLQotV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2
aWNlKCkKLXsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BV
RGV2aWNlKCp0aGlzKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBp
cGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdl
YkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
ID09IHRoaXMpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55IFdlYkdQVVBp
cGVsaW5lIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4K
LSAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdl
YkdQVSBkZXZpY2UuCi0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBudWxscHRyOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250
YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKLSAgICB9Ci19
Ci0KLVJlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IEdQ
VUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Bl
cy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogIik7Ci0KLSAgICBh
dXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwgR1BVQnVm
ZmVyTWFwcGVkT3B0aW9uOjpOb3RNYXBwZWQsIG1fZXJyb3JTY29wZXMpOwotICAgIHJldHVybiBX
ZWJHUFVCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29wZXMpOwotfQot
Ci1WZWN0b3I8SlNDOjpKU1ZhbHVlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlck1hcHBlZChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBHUFVCdWZmZXJE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVy
cm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKCk6ICIpOwotCi0gICAgSlND
OjpKU1ZhbHVlIHdyYXBwZWRBcnJheUJ1ZmZlciA9IEpTQzo6anNOdWxsKCk7Ci0KLSAgICBhdXRv
IGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwgR1BVQnVmZmVy
TWFwcGVkT3B0aW9uOjpJc01hcHBlZCwgbV9lcnJvclNjb3Blcyk7Ci0gICAgaWYgKGJ1ZmZlcikg
ewotICAgICAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLT5tYXBPbkNyZWF0aW9uKCk7Ci0g
ICAgICAgIHdyYXBwZWRBcnJheUJ1ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCBhcnJh
eUJ1ZmZlcik7Ci0gICAgfQotCi0gICAgYXV0byB3ZWJCdWZmZXIgPSBXZWJHUFVCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29wZXMpOwotICAgIGF1dG8gd3JhcHBlZFdl
YkJ1ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCB3ZWJCdWZmZXIpOwotCi0gICAgcmV0
dXJuIHsgd3JhcHBlZFdlYkJ1ZmZlciwgd3JhcHBlZEFycmF5QnVmZmVyIH07Ci19Ci0KLVJlZjxX
ZWJHUFVUZXh0dXJlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVy
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0
RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVUZXh0dXJlKCk6ICIpOwotCi0gICAgYXV0byB0
ZXh0dXJlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvcik7Ci0gICAgcmV0
dXJuIFdlYkdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUpKTsKLX0KLQotUmVmPFdl
YkdQVVNhbXBsZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSBtX2Rl
dmljZS0+dHJ5Q3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gV2ViR1BVU2Ft
cGxlcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlcikpOwotfQotCi1SZWY8V2ViR1BVQmluZEdyb3Vw
TGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gbGF5
b3V0ID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChkZXNjcmlwdG9yKTsKLSAg
ICByZXR1cm4gV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoV1RGTW92ZShsYXlvdXQpKTsK
LX0KLQotUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KGNvbnN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikgY29uc3QKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0
ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikK
LSAgICAgICAgcmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUobnVsbHB0cik7Ci0g
ICAgCi0gICAgYXV0byBsYXlvdXQgPSBtX2RldmljZS0+Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV1RG
TW92ZSgqZ3B1RGVzY3JpcHRvcikpOwotICAgIHJldHVybiBXZWJHUFVQaXBlbGluZUxheW91dDo6
Y3JlYXRlKFdURk1vdmUobGF5b3V0KSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXA+IFdlYkdQ
VURldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRv
ci50cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlw
dG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwOjpjcmVhdGUobnVsbHB0cik7Ci0K
LSAgICBhdXRvIGJpbmRHcm91cCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5kR3JvdXAoKmdwdURl
c2NyaXB0b3IsIG1fZXJyb3JTY29wZXMpOwotICAgIHJldHVybiBXZWJHUFVCaW5kR3JvdXA6OmNy
ZWF0ZShXVEZNb3ZlKGJpbmRHcm91cCkpOwotfQotCi1SZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXaGF0IGNhbiBi
ZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVT
aGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9
KTsKLSAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShtb2R1bGUp
LCBkZXNjcmlwdG9yLmNvZGUpOwotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQ
VURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJl
Zml4KCJHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogIik7Ci0KLSAgICBhdXRvIGdw
dURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcihtX2Vycm9yU2NvcGVzKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJl
dHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRyLCBtX2Vycm9y
U2NvcGVzLCB7IH0sIHsgfSk7Ci0KLSAgICBhdXRvIGdwdVBpcGVsaW5lID0gbV9kZXZpY2UtPnRy
eUNyZWF0ZVJlbmRlclBpcGVsaW5lKCpncHVEZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLQot
ICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIHZlcnRleFNoYWRlciA9IHsgZGVzY3JpcHRv
ci52ZXJ0ZXhTdGFnZS5tb2R1bGUsIGRlc2NyaXB0b3IudmVydGV4U3RhZ2UuZW50cnlQb2ludCB9
OwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgZnJhZ21lbnRTaGFkZXI7Ci0gICAg
aWYgKGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSB7
IGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZS52YWx1ZSgpLm1vZHVsZSwgZGVzY3JpcHRvci5mcmFn
bWVudFN0YWdlLnZhbHVlKCkuZW50cnlQb2ludCB9OwotCi0gICAgYXV0byB3ZWJHUFVQaXBlbGlu
ZSA9IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZ3B1UGlwZWxp
bmUpLCBtX2Vycm9yU2NvcGVzLCBXVEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1vdmUoZnJhZ21l
bnRTaGFkZXIpKTsKLSAgICBpZiAod2ViR1BVUGlwZWxpbmUtPmlzVmFsaWQoKSkKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqdGhpcywg
d2ViR1BVUGlwZWxpbmUuZ2V0KCkpOwotICAgIHJldHVybiB3ZWJHUFVQaXBlbGluZTsKLX0KLQot
UmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
LXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0
b3IudHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihtX2Vycm9yU2NvcGVzKTsK
LSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGlw
ZWxpbmU6OmNyZWF0ZSgqdGhpcywgbnVsbHB0ciwgbV9lcnJvclNjb3BlcywgeyB9KTsKLQotICAg
IGF1dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCpn
cHVEZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLQotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFk
ZXJEYXRhIGNvbXB1dGVTaGFkZXIgPSB7IGRlc2NyaXB0b3IuY29tcHV0ZVN0YWdlLm1vZHVsZSwg
ZGVzY3JpcHRvci5jb21wdXRlU3RhZ2UuZW50cnlQb2ludCB9OwotCi0gICAgYXV0byB3ZWJHUFVQ
aXBlbGluZSA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGdw
dVBpcGVsaW5lKSwgbV9lcnJvclNjb3BlcywgV1RGTW92ZShjb21wdXRlU2hhZGVyKSk7Ci0gICAg
aWYgKHdlYkdQVVBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKnRoaXMsIHdlYkdQVVBpcGVsaW5lLmdl
dCgpKTsKLSAgICByZXR1cm4gd2ViR1BVUGlwZWxpbmU7Ci19Ci0KLVJlZjxXZWJHUFVDb21tYW5k
RW5jb2Rlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0Ci17Ci0g
ICAgYXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIo
KTsKLSAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbW1h
bmRCdWZmZXIpKTsKLX0KLQotUmVmPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZpY2U6OmdldFF1ZXVl
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBXZWJHUFVR
dWV1ZTo6Y3JlYXRlKG1fZGV2aWNlLT50cnlHZXRRdWV1ZSgpKTsKLQotICAgIHJldHVybiBtYWtl
UmVmKCptX3F1ZXVlLmdldCgpKTsKLX0KLQotdm9pZCBXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2Nv
cGUoRXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7Ci0g
ICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVzLT5wb3BFcnJv
clNjb3BlKGZhaWxNZXNzYWdlKTsKLSAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0eSgpKQotICAg
ICAgICBwcm9taXNlLnJlc29sdmUoZXJyb3IpOwotICAgIGVsc2UKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJHUFVEZXZpY2U6OnBvcEVycm9yU2Nv
cGUoKTogIiArIGZhaWxNZXNzYWdlIH0pOwotfQotCi0vLyBFcnJvcnMgcmVwb3J0ZWQgdmlhIHRo
ZSB2YWxpZGF0aW9uIGVycm9yIGV2ZW50IHNob3VsZCBhbHNvIGFwcGVhciBpbiB0aGUgY29uc29s
ZSBhcyB3YXJuaW5ncy4KLXN0YXRpYyB2b2lkIHByaW50VmFsaWRhdGlvbkVycm9yVG9Db25zb2xl
KEdQVUVycm9yJiBlcnJvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKLXsKLSAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4+
KGVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB2YWxpZGF0aW9uRXJyb3IgPSBX
VEY6OmdldDxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3IpOwotICAgIGlmICghdmFs
aWRhdGlvbkVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG1lc3NhZ2UgPSB2YWxp
ZGF0aW9uRXJyb3ItPm1lc3NhZ2UoKTsKLSAgICBhdXRvIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7Ci0KLSAg
ICBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShj
b25zb2xlTWVzc2FnZSkpOwotfQotCi12b2lkIFdlYkdQVURldmljZTo6ZGlzcGF0Y2hVbmNhcHR1
cmVkRXJyb3IoR1BVRXJyb3ImJiBlcnJvcikKLXsKLSAgICBwcmludFZhbGlkYXRpb25FcnJvclRv
Q29uc29sZShlcnJvciwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLQotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2Vycm9yID0gV1RGTW92ZShlcnJvciksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5jYXB0dXJlZGVycm9yRXZl
bnQsIFdURk1vdmUoZXJyb3IpKSk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWFi
MDkyZjk2NjFkYWMyM2I2MTAxNTU5OGY4YzI2OGJhMjIxYzYwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2Nv
cGVzLmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEpTVmFsdWU7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvcjsKLWNs
YXNzIEdQVVZhbGlkYXRpb25FcnJvcjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBXZWJHUFVCaW5kR3JvdXA7Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ7Ci1jbGFz
cyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVDb21tYW5kRW5jb2RlcjsKLWNsYXNzIFdlYkdQ
VUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVBpcGVsaW5lTGF5b3V0OwotY2xhc3MgV2Vi
R1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVTYW1wbGVyOwotY2xhc3MgV2ViR1BVU2hh
ZGVyTW9kdWxlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotY2xhc3MgV2ViR1BVVGV4dHVyZTsK
LQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQnVmZmVy
RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVUZXh0
dXJlRGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotc3RydWN0
IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsK
LXN0cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVUVy
cm9yRmlsdGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7Ci0KLXVzaW5nIEVycm9ySURMVW5pb24gPSBJRExVbmlvbjxJRExJbnRlcmZhY2U8
R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIElETEludGVyZmFjZTxHUFVWYWxpZGF0aW9uRXJyb3I+PjsK
LXVzaW5nIEVycm9yUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxFcnJv
cklETFVuaW9uPj47Ci0KLWNsYXNzIFdlYkdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVURldmljZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKLSAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFdlYkdQVURldmljZSk7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViR1BVRGV2aWNlKCk7Ci0KLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVURldmljZT4gdHJ5Q3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJik7
Ci0KLSAgICBzdGF0aWMgSGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgaW5zdGFuY2VzKCkgV1RGX1JF
UVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKLSAgICBzdGF0aWMgTG9jayYgaW5zdGFuY2Vz
TG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKLQotICAgIGNvbnN0IFdl
YkdQVUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0K
LSAgICBHUFVEZXZpY2UmIGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0gICAg
Y29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZS5nZXQoKTsg
fQotCi0gICAgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRl
c2NyaXB0b3ImKSBjb25zdDsKLSAgICBWZWN0b3I8SlNDOjpKU1ZhbHVlPiBjcmVhdGVCdWZmZXJN
YXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImKSBj
b25zdDsKLSAgICBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0
dXJlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVTYW1wbGVyPiBjcmVhdGVTYW1w
bGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BV
QmluZEdyb3VwTGF5b3V0PiBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVQaXBlbGluZUxheW91dD4g
Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
JikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVUJpbmRHcm91cD4gY3JlYXRlQmluZEdyb3VwKGNvbnN0
IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5k
ZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKLSAgICBS
ZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi0gICAgUmVmPFdlYkdQVUNvbW1hbmRF
bmNvZGVyPiBjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVVF1
ZXVlPiBnZXRRdWV1ZSgpIGNvbnN0OwotCi0gICAgdm9pZCBwdXNoRXJyb3JTY29wZShHUFVFcnJv
ckZpbHRlciBmaWx0ZXIpIHsgbV9lcnJvclNjb3Blcy0+cHVzaEVycm9yU2NvcGUoZmlsdGVyKTsg
fQotICAgIHZvaWQgcG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJik7Ci0KLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotCi0gICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwotCi1wcml2YXRlOgotICAgIFdl
YkdQVURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0
ZXI+JiYsIFJlZjxHUFVEZXZpY2U+JiYpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFdlYkdQVURldmljZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoVW5jYXB0dXJlZEVycm9y
KEdQVUVycm9yJiYpOwotCi0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2NrOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0gICAg
UmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+IG1fYWRhcHRlcjsKLSAgICBSZWY8R1BVRGV2aWNlPiBt
X2RldmljZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFVRdWV1ZT4gbV9xdWV1ZTsKLQotICAg
IFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWM3YjQ2ZDQ1ZDc5NjU4ZDAzMTBiYWQ0YWEzMGMzNGRlMWYzNWViMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgc2VxdWVuY2U8YW55PiBHUFVNYXBwZWRCdWZmZXI7ICAvLyBbR1BVQnVmZmVyLCBBcnJheUJ1
ZmZlcl0KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVURldmljZSwKLSAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVRGV2aWNlIDog
RXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVBZGFwdGVyIGFkYXB0
ZXI7Ci0KLSAgICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gR1BVTWFwcGVkQnVmZmVy
IGNyZWF0ZUJ1ZmZlck1hcHBlZChHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAg
IFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNjcmlw
dG9yKTsKLSAgICBXZWJHUFVTYW1wbGVyIGNyZWF0ZVNhbXBsZXIoR1BVU2FtcGxlckRlc2NyaXB0
b3IgZGVzY3JpcHRvcik7Ci0KLSAgICBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgY3JlYXRlQmluZEdy
b3VwTGF5b3V0KEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAg
V2ViR1BVUGlwZWxpbmVMYXlvdXQgY3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUJpbmRHcm91cCBjcmVhdGVC
aW5kR3JvdXAoV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIFdl
YkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5k
ZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0g
ICAgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShXZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gRklYTUU6IEN1cnJl
bnRseSwgR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnku
Ci0gICAgV2ViR1BVQ29tbWFuZEVuY29kZXIgY3JlYXRlQ29tbWFuZEVuY29kZXIoLypHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IgZGVzY3JpcHRvciovKTsKLQotICAgIFdlYkdQVVF1ZXVlIGdl
dFF1ZXVlKCk7Ci0KLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICAvLyByZWFkb25s
eSBhdHRyaWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8vIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOwotCi0gICAgLy8gV2ViR1BVRmVuY2UgY3Jl
YXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gYXR0
cmlidXRlIFdlYkdQVUxvZ0NhbGxiYWNrIG9uTG9nOwotICAgIC8vIFdlYkdQVU9iamVjdFN0YXR1
c1F1ZXJ5IGdldE9iamVjdFN0YXR1cyhTdGF0dXNhYmxlT2JqZWN0IHN0YXR1c2FibGVPYmplY3Qp
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkz
MTEwMGRiNTQ1MTM4Nzk0NDc1NmMwZmIwMWZkODgyYTMwMWE4MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVURl
dmljZUVycm9yU2NvcGVzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
RXJyb3JGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdlYkdQVURldmlj
ZUVycm9yU2NvcGVzOjpwdXNoRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJy
b3JGaWx0ZXIgZmlsdGVyKQotewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOwot
fQotCi12b2lkIFdlYkdQVURldmljZUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3BlKFdlYkdQVURl
dmljZSYgZGV2aWNlLCBFcnJvclByb21pc2UmJiBwcm9taXNlKQotewotICAgIGRldmljZS5wb3BF
cnJvclNjb3BlKFdURk1vdmUocHJvbWlzZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYyMGYwN2FiZTM5OGJmOWE3MzRkNDQ2YWY1ODk0NTNjMGRiMGMxMDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwotCi1jbGFzcyBXZWJHUFVEZXZp
Y2VFcnJvclNjb3BlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcHVzaEVycm9yU2NvcGUo
V2ViR1BVRGV2aWNlJiwgR1BVRXJyb3JGaWx0ZXIpOwotICAgIHN0YXRpYyB2b2lkIHBvcEVycm9y
U2NvcGUoV2ViR1BVRGV2aWNlJiwgRXJyb3JQcm9taXNlJiYpOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRjNjAyZmFiMGUyZGZmZTJiNmRhNDEyNmEy
OTA4NmQ1MzY2ZGE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiAoR1BVT3V0T2ZNZW1vcnlFcnJv
ciBvciBHUFVWYWxpZGF0aW9uRXJyb3IpIEdQVUVycm9yOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMKLV0gcGFydGlhbCBpbnRlcmZhY2UgV2ViR1BVRGV2aWNl
IHsKLSAgICB1bmRlZmluZWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKTsK
LSAgICBQcm9taXNlPEdQVUVycm9yPz4gcG9wRXJyb3JTY29wZSgpOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRs
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ0MzQzMjRkNDVjMzM1NzQw
MzFmYWEyYWI4NWFlMzA2Y2MzYmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2
ZW50SGFuZGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5
PVdlYkdQVURldmljZUV2ZW50SGFuZGxlcgotXSBwYXJ0aWFsIGludGVyZmFjZSBXZWJHUFVEZXZp
Y2UgewotICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVuY2Fw
dHVyZWRlcnJvcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Yjc4MTMzMGM2
NjQyNGI1NGFjMzgxN2JhNmRkODU4NjM5MDMzMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTG9jayBX
ZWJHUFVQaXBlbGluZTo6c19pbnN0YW5jZXNMb2NrOwotCi1IYXNoTWFwPFdlYkdQVVBpcGVsaW5l
KiwgV2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNl
Kj4+IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotfQotCi1Mb2NrJiBXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzTG9jaygpCi17Ci0gICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsK
LX0KLQotV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNl
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0gICAgOiBHUFVPYmplY3RCYXNlKG1ha2VS
ZWYoZXJyb3JTY29wZXMpKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoZGV2aWNl
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xv
Y2soKSB9OwotICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywgJmRldmljZSk7Ci0gICAgfQot
fQotCi1XZWJHUFVQaXBlbGluZTo6fldlYkdQVVBpcGVsaW5lKCkKLXsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoKnRoaXMpOwotCi0gICAg
ewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIEFT
U0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcygpLnJl
bW92ZSh0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViR1BVUGlwZWxpbmU6OmNvbnRleHREZXN0
cm95ZWQoKQotewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJH
UFVQaXBlbGluZSgqdGhpcyk7Ci0KLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29u
dGV4dERlc3Ryb3llZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NGNiYzdhZmFhYjJl
YTgxM2Y3ZTU2NGFiZTE5YmVhZTY0YzE3OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKLSNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BVRGV2aWNlOwot
Ci1jbGFzcyBXZWJHUFVQaXBlbGluZSA6IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBwdWJsaWMgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVBp
cGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURl
dmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOwot
ICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3Rh
bmNlc0xvY2spOwotCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
ID0gMDsKLQotICAgIHN0cnVjdCBTaGFkZXJEYXRhIHsKLSAgICAgICAgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gbW9kdWxlOwotICAgICAgICBTdHJpbmcgZW50cnlQb2ludDsKLSAgICB9Owot
Ci0gICAgdmlydHVhbCBib29sIGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2Um
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKSA9
IDA7Ci0KLSAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLQotcHJvdGVjdGVkOgot
ICAgIFdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLXBy
aXZhdGU6Ci0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2NrOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQ
RUxJTkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OldlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyByZXR1cm4gcGlwZWxpbmUucHJl
ZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY4YTBiODQ1ZTQyODkwYzU5MjNjZGZkZDQ4ZTA4ZGExNTdkNzI4ZTAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Ugewot
ICAgIFJlZlB0cjxXZWJHUFVQaXBlbGluZUxheW91dD4gbGF5b3V0OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjMyYzcwNDM5ZWExZTI0OGRiMDNh
YmIwMTA2ZjY2Mjc0MTcxYTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBXZWJHUFVQaXBlbGluZUxheW91dD8gbGF5
b3V0ID0gbnVsbDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwYjVkNGNiNGY5ZjE4ZmRkODg3Mzc2OTAwYmI1MTNkZThlMmIxMmMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQ
aXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVVBpcGVsaW5lTGF5b3V0Ojpj
cmVhdGUoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91dCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJHUFVQaXBlbGluZUxheW91dChXVEZNb3ZlKGxheW91dCkpKTsKLX0K
LQotV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OldlYkdQVVBpcGVsaW5lTGF5b3V0KFJlZlB0cjxHUFVQ
aXBlbGluZUxheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX3BpcGVsaW5lTGF5b3V0KFdURk1vdmUo
bGF5b3V0KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzU2Zjg5
ZGNkZTExYmE5NDNlYWE4NmNjOTMyMGNiZWQyNzIwOTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVBp
cGVsaW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoUmVm
UHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmKTsKLQotICAgIEdQVVBpcGVsaW5lTGF5b3V0KiBwaXBl
bGluZUxheW91dCgpIHsgcmV0dXJuIG1fcGlwZWxpbmVMYXlvdXQuZ2V0KCk7IH0KLQotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJHUFVQaXBlbGluZUxheW91dChSZWZQdHI8R1BVUGlwZWxpbmVM
YXlvdXQ+JiYpOwotCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX3BpcGVsaW5lTGF5
b3V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lTGF5b3V0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkODQ1Yzcw
NmU5MWVmZGVkNGJmMjBkZDRkZDcwYjYzMDNhYTgwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVUGlwZWxpbmVMYXlvdXQs
Ci0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVBpcGVsaW5lTGF5b3V0IHsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzE4YzI4ZWIxNTQxY2NjYmI5YTBiZTgwZGU2YzQyM2NjNWMwMjg1Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0ZDo6b3B0
aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpIGNvbnN0Ci17
Ci0gICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBncHVMYXlvdXRzOwot
ICAgIGdwdUxheW91dHMucmVzZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExheW91dHMuc2l6ZSgpKTsK
LSAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxheW91dCA6IGJpbmRHcm91cExheW91dHMpIHsK
LSAgICAgICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpIHsKLSAg
ICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCk6
IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZ3B1TGF5b3V0cy51bmNoZWNr
ZWRBcHBlbmQobWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkpOwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsgV1RGTW92ZShncHVM
YXlvdXRzKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODM0Yzc5NTRmMzc3YWEyYTc5Mjc3YmQ1NGEwOTY3YTk3MjY5MzQ2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwot
Ci1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVUJpbmRHcm91
cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZmU1NTJhOGRhYzI0ZDRkYzEyODI5
MGRiMGNhNTNlMTU3OWMwZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxXZWJH
UFVCaW5kR3JvdXBMYXlvdXQ+IGJpbmRHcm91cExheW91dHM7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzQzY2E3MTQ5M2I5
MDY3M2Q4NDdiYjVlZTdiNDNkOTUxNGI1NTZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdl
YkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBpZiAoIXBhc3NF
bmNvZGVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyOjplbmRQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHBhc3NFbmNvZGVyKCktPmVuZFBhc3MoKTsKLX0KLQotdm9pZCBXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVuc2lnbmVkIGluZGV4LCBXZWJHUFVC
aW5kR3JvdXAmIGJpbmRHcm91cCkKLXsKLSAgICBpZiAoIXBhc3NFbmNvZGVyKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8g
TWF4aW11bSBudW1iZXIgb2YgYmluZCBncm91cHMgc3VwcG9ydGVkIGluIFdlYiBHUFUuCi0gICAg
aWYgKGluZGV4ID49IDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoIWJpbmRHcm91cC5iaW5kR3JvdXAoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJ
bnZhbGlkIFdlYkdQVUJpbmRHcm91cCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAv
LyBGSVhNRTogQW55IHZhbGlkYXRpb24gKGUuZy4gaW5kZXggZHVwbGljYXRlcywgbm90IGluIHBp
cGVsaW5lIGxheW91dCkuCi0gICAgcGFzc0VuY29kZXIoKS0+c2V0QmluZEdyb3VwKGluZGV4LCAq
YmluZEdyb3VwLmJpbmRHcm91cCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjVmNTBhNDMyMzNiMjYxNTlkNTU3NzZmNjAwMzY4MDMx
ZDFlYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
cjsKLWNsYXNzIFdlYkdQVUJpbmRHcm91cDsKLQotY2xhc3MgV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
cj4gewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCBlbmRQYXNzKCk7Ci0gICAgdm9pZCBzZXRCaW5kR3Jv
dXAodW5zaWduZWQsIFdlYkdQVUJpbmRHcm91cCYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpID0gMDsKLSAgICB2aXJ0dWFsIGNv
bnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjOTg3NWJjNDA4MjY2N2Y5NWJjOWQ4YWEyN2FkZDk4MmE5NjBhNDEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFt
ZT1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwK
LSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgewotICAgIHVuZGVmaW5lZCBlbmRQYXNzKCk7Ci0gICAgdW5kZWZpbmVkIHNldEJpbmRH
cm91cCh1MzIgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCBiaW5kR3JvdXAvKiwgb3B0aW9uYWwgc2Vx
dWVuY2U8dTMyPiBkeW5hbWljT2Zmc2V0cyovKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZhNGY3ZmJlOWNi
MzBjY2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBpZiAoIW1vZHVsZSB8
fCAhbW9kdWxlLT5tb2R1bGUoKSB8fCBlbnRyeVBvaW50LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IgeyBtYWtlUmVmKCptb2R1bGUtPm1vZHVsZSgpKSwgKnRoaXMgfTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYjY5
MDI0NjcwNjBiNTZmY2IzYjQxYWJkYjgwYjAyOWRjOTY5MmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBtb2R1bGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOGVkNWQzMjM3ZWNlZmM4YzkzMTkxMTMzYWMyYTBk
ZDgyZTQ4N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
V2ViR1BVU2hhZGVyU3RhZ2VFbnVtOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVTaGFkZXJNb2R1bGUgbW9kdWxl
OwotICAgIHJlcXVpcmVkIERPTVN0cmluZyBlbnRyeVBvaW50OwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTNhY2E3YjJkMGQxNWM2ZjEyZjBjMTk2NWYyYzNjNDQ0NmI2YzNhYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVF1
ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8
V2ViR1BVUXVldWU+IFdlYkdQVVF1ZXVlOjpjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYmIHF1ZXVl
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVF1ZXVlKFdURk1vdmUocXVldWUp
KSk7Ci19Ci0KLVdlYkdQVVF1ZXVlOjpXZWJHUFVRdWV1ZShSZWZQdHI8R1BVUXVldWU+JiYgcXVl
dWUpCi0gICAgOiBtX3F1ZXVlKFdURk1vdmUocXVldWUpKQotewotfQotCi12b2lkIFdlYkdQVVF1
ZXVlOjpzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPj4mIGJ1
ZmZlcnMpCi17Ci0gICAgaWYgKCFtX3F1ZXVlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVR
dWV1ZTo6c3VibWl0KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+IGdwdUJ1ZmZlcnM7Ci0gICAg
Z3B1QnVmZmVycy5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVycy5zaXplKCkpOwotICAgIAotICAgIGZv
ciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVm
ZmVyLT5jb21tYW5kQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1
ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQ29tbWFuZEJ1ZmZlciBpbiBsaXN0ISIpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGdwdUJ1ZmZlcnMudW5jaGVja2VkQXBw
ZW5kKG1ha2VSZWYoKmJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpKSk7Ci0gICAgfQotCi0gICAgbV9x
dWV1ZS0+c3VibWl0KFdURk1vdmUoZ3B1QnVmZmVycykpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5
ODkyMjdlNDBiODI5ZTE3MDE0ZjlmOGMzZGM0ODQ3MWY1MzM4NTcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVR
dWV1ZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVy
OwotCi1jbGFzcyBXZWJHUFVRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVF1ZXVlPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVRdWV1ZT4gY3JlYXRlKFJlZlB0cjxHUFVR
dWV1ZT4mJik7Ci0KLSAgICB2b2lkIHN1Ym1pdChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNv
bW1hbmRCdWZmZXI+PiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9x
dWV1ZS0+bGFiZWwoKTsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkg
eyBtX3F1ZXVlLT5zZXRMYWJlbChsYWJlbCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVRdWV1
ZShSZWZQdHI8R1BVUXVldWU+JiYpOwotCi0gICAgUmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM1NWNlYTk2NTkxZTQyNmRmOTM4Zjk2MjQ2YTE0OTg3
MGIzNjViZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFj
ZU5hbWU9R1BVUXVldWUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVF1
ZXVlIHsKLSAgICB1bmRlZmluZWQgc3VibWl0KHNlcXVlbmNlPFdlYkdQVUNvbW1hbmRCdWZmZXI+
IGJ1ZmZlcnMpOwotCi0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAgLy8gdW5kZWZp
bmVkIHNpZ25hbChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHNpZ25hbFZhbHVlKTsKLSAgICAvLyB1
bmRlZmluZWQgd2FpdChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHZhbHVlVG9XYWl0KTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOGI0
NzgyYzdlNzM1YWFjNDFiMzE3ZDQwMzMwYTczMmUzMzRlODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8R1BVVGV4dHVyZT4m
JiB0ZXh0dXJlLCBjb25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJh
c2UmIGJhc2UpCi0gICAgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJh
c2UoYmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKLXsKLX0KLQotR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVy
ZSwgY29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFz
ZSYgYmFzZSkKLSAgICA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvckJhc2UoYmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKLXsKLX0K
LQotc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogSW1wcm92ZSBlcnJvciBjaGVja2luZyBhcyBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvciBpcyBhZGRlZCB0byBzcGVjLgotICAgIGlmIChjb2xvckF0dGFjaG1lbnRzLmlz
RW1wdHkoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6
IE5vIGNvbG9yIGF0dGFjaG1lbnRzIHNwZWNpZmllZCBmb3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgVmVjdG9y
PEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVDb2xvckF0dGFjaG1l
bnRzOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBjb2xvckF0dGFj
aG1lbnRzKSB7Ci0gICAgICAgIGlmICghY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQKLSAgICAg
ICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpCi0gICAgICAg
ICAgICB8fCAhY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+aXNPdXRwdXRB
dHRhY2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgfQotICAgICAgICBncHVDb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCkpLCBjb2xvckF0dGFjaG1lbnQgfSk7Ci0gICAgfQotCi0gICAgc3RkOjpv
cHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+IGdw
dURlcHRoQXR0YWNobWVudDsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50KSB7Ci0g
ICAgICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudAotICAgICAgICAg
ICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKQotICAg
ICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUo
KS0+aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqZGVw
dGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpKSwgKmRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IgeyBXVEZNb3ZlKGdwdUNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGdwdURlcHRoQXR0YWNo
bWVudCkgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2NWY5NGE0Y2ZmMGQwZTM2NjMxMTc1ODUwZDc3NzZiYWQ4MTc2YzlmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJH
UFVUZXh0dXJlVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAg
IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBXZWJH
UFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgOiBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8V2Vi
R1BVVGV4dHVyZVZpZXc+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+
IHRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBWZWN0b3I8
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVu
dHM7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzgzMjQ4MmU1YTEzMGVkM2Q1
MzVmZDJkYjdkZjVlZjAzZTZlYjI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVk
QXM9V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IKLV0gZGljdGlvbmFy
eSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQg
V2ViR1BVVGV4dHVyZVZpZXcgYXR0YWNobWVudDsKLSAgICAvLyBHUFVUZXh0dXJlVmlldz8gcmVz
b2x2ZVRhcmdldDsKLQotICAgIHJlcXVpcmVkIEdQVUxvYWRPcCBsb2FkT3A7Ci0gICAgcmVxdWly
ZWQgR1BVU3RvcmVPcCBzdG9yZU9wOwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3I7IC8vIHtyOiAw
LjAsIGc6IDAuMCwgYjogMC4wLCBhOiAxLjB9Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2Vi
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yCi1dIGRpY3Rpb25h
cnkgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsKLSAgICBy
ZXF1aXJlZCBXZWJHUFVUZXh0dXJlVmlldyBhdHRhY2htZW50OwotCi0gICAgcmVxdWlyZWQgR1BV
TG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIHJlcXVpcmVkIEdQVVN0b3JlT3AgZGVwdGhTdG9yZU9w
OwotICAgIHJlcXVpcmVkIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLS8qIE5vdCB5ZXQgaW1wbGVtZW50
ZWQKLSAgICBHUFVMb2FkT3Agc3RlbmNpbExvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0ZW5jaWxT
dG9yZU9wOwotICAgIHUzMiBjbGVhclN0ZW5jaWw7Ci0qLwotfTsKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKLSAgICBH
UFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I/IGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQgPSBudWxsOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGJmN2EwZDQwZmZhZmM0YWI0NDJiMWI0MzU5ODZhZTJlMjRjOWU0MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5jbHVkZSAiR1BVTGltaXRzLmgiCi0jaW5j
bHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQ
YXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZm
ZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3Zl
KGVuY29kZXIpKSk7Ci19Ci0KLVdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6
IG1fcGFzc0VuY29kZXIgeyBXVEZNb3ZlKGVuY29kZXIpIH0KLXsKLX0KLQotdm9pZCBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmUm
IHBpcGVsaW5lKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgb3BlcmF0
aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghcGlwZWxpbmUucmVuZGVy
UGlwZWxpbmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnNldFBpcGVsaW5lKCk6IEludmFsaWQgcGlwZWxpbmUhIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUobWFrZVJlZigqcGlwZWxpbmUucmVu
ZGVyUGlwZWxpbmUoKSkpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRC
bGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVu
ZENvbG9yKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIG1fcGFzc0VuY29kZXItPnNldEJsZW5kQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0g
ICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0Vmlld3BvcnQoeCwgeSwgd2lk
dGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVj
dCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCgpOiBXaWR0aCBvciBoZWlnaHQgbXVzdCBiZSBncmVh
dGVyIHRoYW4gMCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVy
LT5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIsIHVp
bnQ2NF90IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWJ1ZmZlci5i
dWZmZXIoKSB8fCAhYnVmZmVyLmJ1ZmZlcigpLT5pc0luZGV4KCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlkIEdQ
VUJ1ZmZlciEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFzc0VuY29kZXIt
PnNldEluZGV4QnVmZmVyKCpidWZmZXIuYnVmZmVyKCksIG9mZnNldCk7Ci19Ci0KLXZvaWQgV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgc3RhcnRTbG90
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiBidWZmZXJzLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBvZmZzZXRzKQotewotI2lmICFMT0dfRElTQUJMRUQKLSAgICBjb25zdCBj
aGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRl
eEJ1ZmZlcnMoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9wZXJhdGlvbiEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChidWZmZXJzLmlzRW1wdHkoKSB8fCBidWZmZXJz
LnNpemUoKSAhPSBvZmZzZXRzLnNpemUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgbnVtYmVyIG9mIGJ1ZmZlcnMgb3Igb2Zmc2V0cyEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGFydFNsb3QgKyBidWZmZXJzLnNpemUoKSA+
IG1heFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHN0
YXJ0U2xvdCAldSBmb3IgJWx1IGJ1ZmZlcnMhIiwgZnVuY3Rpb25OYW1lLCBzdGFydFNsb3QsIGJ1
ZmZlcnMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxSZWY8
R1BVQnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZmZXJzLnJlc2VydmVDYXBhY2l0eShi
dWZmZXJzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKLSAg
ICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAgICAgICAgICAgIExP
RyhXZWJHUFUsICIlczogSW52YWxpZCBvciBkZXN0cm95ZWQgYnVmZmVyIGluIGxpc3QhIiwgZnVu
Y3Rpb25OYW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghYnVmZmVyLT5idWZmZXIoKS0+aXNWZXJ0ZXgoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggVkVSVEVYIHVzYWdlISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBncHVC
dWZmZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpidWZmZXItPmJ1ZmZlcigpKSk7Ci0gICAg
fQotCi0gICAgbV9wYXNzRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVycyhzdGFydFNsb3QsIGdwdUJ1
ZmZlcnMsIG9mZnNldHMpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3
KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBm
aXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAoIW1fcGFzc0Vu
Y29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3
KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8v
IEZJWE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRhdGlvbiBkbyB3ZSBuZWVkIHRvIGhhbmRsZSBoZXJl
PwotICAgIG1fcGFzc0VuY29kZXItPmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZp
cnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VD
b3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0
SW5zdGFuY2UpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRh
dGlvbi4KLSAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5j
ZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5j
b2RlcigpCi17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLWNvbnN0IEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGFzc0Vu
Y29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YzAyYWJhNzhhZWM4YWUyYWYx
NjdiMjUwYzU5MWRkMTk0ODMxOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlcjsKLWNsYXNzIFdl
YkdQVUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwotCi1zdHJ1Y3QgR1BVQ29s
b3I7Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYm
KTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmUmKTsK
LSAgICB2b2lkIHNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImKTsKLSAgICB2b2lkIHNldFZp
ZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0gICAgdm9pZCBzZXRTY2lzc29yUmVjdCh1bnNp
Z25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAg
ICB2b2lkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IG9mZnNldCk7Ci0g
ICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIHN0YXJ0U2xvdCwgY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9mZnNldHMp
OwotICAgIHZvaWQgZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VD
b3VudCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpOwotICAg
IHZvaWQgZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VD
b3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0
SW5zdGFuY2UpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZlB0
cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlZlB0cjxHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNmY5Y2I1YzJlM2Q1NWM5ZDE2M2NiNzgzNTZlZTJhYTli
NDlkYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgbG9uZyBpMzI7Ci10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVy
ZmFjZU5hbWU9R1BVUmVuZGVyUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3Qs
Ci0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
IDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIHVuZGVmaW5lZCBzZXRQaXBl
bGluZShXZWJHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSk7Ci0gICAgdW5kZWZpbmVkIHNldEJs
ZW5kQ29sb3IoR1BVQ29sb3IgY29sb3IpOwotCi0gICAgLy8gVGhlIGRlZmF1bHQgdmlld3BvcnQg
aXMgKDAuMCwgMC4wLCB3LCBoLCAwLjAsIDEuMCksIHdoZXJlIHcgYW5kIGggYXJlIHRoZSBkaW1l
bnNpb25zIG9mIGJhY2sgYnVmZmVyCi0gICAgdW5kZWZpbmVkIHNldFZpZXdwb3J0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9h
dCBtYXhEZXB0aCk7Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBzY2lzc29yIHJlY3RhbmdsZSBpcyAo
MCwgMCwgdywgaCksIHdoZXJlIHcgYW5kIGggYXJlIHRoZSBkaW1lbnNpb25zIG9mIGJhY2sgYnVm
ZmVyLgotICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4gT3Ro
ZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KLSAgICB1bmRlZmluZWQgc2V0U2Np
c3NvclJlY3QodTMyIHgsIHUzMiB5LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwotCi0gICAgdW5k
ZWZpbmVkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHU2NCBvZmZzZXQpOwot
ICAgIHVuZGVmaW5lZCBzZXRWZXJ0ZXhCdWZmZXJzKHUzMiBzdGFydFNsb3QsIHNlcXVlbmNlPFdl
YkdQVUJ1ZmZlcj4gYnVmZmVycywgc2VxdWVuY2U8dTY0PiBvZmZzZXRzKTsKLQotICAgIHVuZGVm
aW5lZCBkcmF3KHUzMiB2ZXJ0ZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdFZl
cnRleCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotICAgIHVuZGVmaW5lZCBkcmF3SW5kZXhlZCh1MzIg
aW5kZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdEluZGV4LCBpMzIgYmFzZVZl
cnRleCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotCi0vKiBOb3QgWWV0IEltcGxlbWVudGVkCi0gICAg
dW5kZWZpbmVkIHNldFN0ZW5jaWxSZWZlcmVuY2UodTMyIHJlZmVyZW5jZSk7Ci0qLwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YzZiZmEwYTIwNDU0YTE3
YjYyNjczMDZmOWI1Nzk5ZDA0NzdhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNs
dWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVU2hh
ZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2lu
Y2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoV2ViR1BVRGV2aWNl
JiBkZXZpY2UsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNo
YWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShkZXZpY2UsIFdURk1v
dmUocGlwZWxpbmUpLCBlcnJvclNjb3BlcywgV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpLCBXVEZNb3Zl
KGZyYWdtZW50U2hhZGVyKSkpOwotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVu
ZGVyUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGlu
ZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEm
JiBmcmFnbWVudFNoYWRlcikKLSAgICA6IFdlYkdQVVBpcGVsaW5lKGRldmljZSwgZXJyb3JTY29w
ZXMpCi0gICAgLCBtX3JlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwgbV92
ZXJ0ZXhTaGFkZXIoV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpKQotICAgICwgbV9mcmFnbWVudFNoYWRl
cihXVEZNb3ZlKGZyYWdtZW50U2hhZGVyKSkKLXsKLX0KLQotV2ViR1BVUmVuZGVyUGlwZWxpbmU6
On5XZWJHUFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQot
ewotICAgIGlmIChtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgYm9vbCBzaGFyZXNW
ZXJ0ZXhGcmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlID09IG1f
dmVydGV4U2hhZGVyLm1vZHVsZTsKLQotICAgICAgICBjb25zdCBhdXRvJiB2ZXJ0ZXhTb3VyY2Ug
PSBtX3ZlcnRleFNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAgICBtX3ZlcnRleFNoYWRl
ci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVTaGFkZXJNb2R1bGU6OnRy
eUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgdmVydGV4U291cmNlIH0pLCB2ZXJ0ZXhTb3VyY2Up
OwotCi0gICAgICAgIGlmIChtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewotICAgICAgICAgICAg
aWYgKHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyTW9kdWxlKQotICAgICAgICAgICAgICAgIG1f
ZnJhZ21lbnRTaGFkZXIubW9kdWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgZnJhZ21lbnRTb3VyY2UgPSBt
X2ZyYWdtZW50U2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAgICAgICAgICAgbV9mcmFn
bWVudFNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVTaGFkZXJN
b2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgZnJhZ21lbnRTb3VyY2UgfSksIGZy
YWdtZW50U291cmNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR1BVUmVuZGVy
UGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBp
ZiAobV9yZW5kZXJQaXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAg
aWYgKGF1dG8qIGdwdVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZS0+
bW9kdWxlKCkpIHsKLSAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2
ZXJ0ZXhTdGFnZShtYWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUpLCB7IG1fdmVydGV4U2hh
ZGVyLmVudHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLSAgICAgICAgICAgIGlmIChtX2Zy
YWdtZW50U2hhZGVyLm1vZHVsZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBncHVGcmFn
bWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNoYWRlck1vZHVsZSksIHsgbV9mcmFnbWVudFNo
YWRlci5lbnRyeVBvaW50IH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1f
cmVuZGVyUGlwZWxpbmUtPnJlY29tcGlsZShkZXZpY2UuZGV2aWNlKCksIFdURk1vdmUodmVydGV4
U3RhZ2UpLCBXVEZNb3ZlKGZyYWdtZW50U3RhZ2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ2MGIx
Mzc5M2ZjYmQyNTM0NTdjNDI4MTFjODJkOTJjZDUxMjJmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZTsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
OwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJH
UFVTaGFkZXJNb2R1bGU7Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVi
bGljIFdlYkdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQ
aXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRl
KFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29w
ZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlw
ZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBib29sIGlzUmVuZGVy
UGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiByZW5kZXJQaXBlbGluZSgpOyB9Ci0gICAgY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmUqIHJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZS5n
ZXQoKTsgfQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IHZlcnRleFNoYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyLm1vZHVsZTsgfQotICAgIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IGZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNo
YWRlci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQ
VURldmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpOwotCi1w
cml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lKFdlYkdQVURldmljZSYsIFJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hh
ZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFn
bWVudFNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IG1fcmVuZGVyUGlw
ZWxpbmU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlv
bi4KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX3ZlcnRleFNoYWRlcjsKLSAgICBX
ZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX2ZyYWdtZW50U2hhZGVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQVVBJUEVMSU5F
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lLCBpc1JlbmRlclBpcGVsaW5lKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkN2Y4MmMyZDI4Yzc1YzU0NzY4MjQ4NWFhYjBmZmZhN2YxYTk4YjBjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVUmVuZGVyUGlwZWxpbmUsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiY2Ri
OWRmOTBjODQ1OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6
b3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0byBwaXBlbGluZUxheW91dCA9
IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7
Ci0KLSAgICBhdXRvIHZlcnRleCA9IHZlcnRleFN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcigpOwotCi0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3I+IGZyYWdtZW50OwotICAgIGlmIChmcmFnbWVudFN0YWdlKQotICAgICAg
ICBmcmFnbWVudCA9IGZyYWdtZW50U3RhZ2UtPnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvcigpOwotCi0gICAgaWYgKCF2ZXJ0ZXggfHwgKGZyYWdtZW50U3RhZ2UgJiYgIWZy
YWdtZW50KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIklu
dmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZWIgR1BVIHZhbGlkYXRpb24s
IGUuZy4gZmFpbCBpZiBjb2xvclN0YXRlcyBpcyBsYXJnZXIgdGhhbiAobWF4IG51bWJlciBvZiBz
dXBwb3J0ZWQgY29sb3Igc3RhdGVzKS4KLQotICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0KSwgV1RGTW92ZSgqdmVydGV4KSwgV1RG
TW92ZShmcmFnbWVudCksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjYwZDJlYmU2OTM5NWUzNTFmMWE5ZDhjNTAwNjM0
ODQ2OGJiMGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0IFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Us
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IoR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFdlYkdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwZDk0NmZlZmY5
ZTU1Y2IwZDcwYWQ2NzI4NzI5N2E5OWQwNzFlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAg
ICBJbXBsZW1lbnRlZEFzPUdQVVByaW1pdGl2ZVRvcG9sb2d5Ci1dIGVudW0gR1BVUHJpbWl0aXZl
VG9wb2xvZ3kgewotICAgICJwb2ludC1saXN0IiwKLSAgICAibGluZS1saXN0IiwKLSAgICAibGlu
ZS1zdHJpcCIsCi0gICAgInRyaWFuZ2xlLWxpc3QiLAotICAgICJ0cmlhbmdsZS1zdHJpcCIKLX07
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZGljdGlvbmFyeSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yPyBmcmFnbWVudFN0YWdlID0gbnVsbDsKLQotICAgIHJlcXVpcmVkIEdQVVByaW1p
dGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBHUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3I/IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICByZXF1aXJlZCBH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IgdmVydGV4SW5wdXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmE1MjBlNjNhMWEwMDU0OTA5N2U0MDFhZWViOGI0MzJkNWQxMjYwMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVU2FtcGxlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8V2ViR1BVU2FtcGxlcj4gV2ViR1BVU2FtcGxlcjo6Y3JlYXRlKFJlZlB0cjxHUFVT
YW1wbGVyPiYmIHNhbXBsZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2Ft
cGxlcihXVEZNb3ZlKHNhbXBsZXIpKSk7Ci19Ci0KLVdlYkdQVVNhbXBsZXI6OldlYkdQVVNhbXBs
ZXIoUmVmUHRyPEdQVVNhbXBsZXI+JiYgc2FtcGxlcikKLSAgICA6IG1fc2FtcGxlcihXVEZNb3Zl
KHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2Ft
cGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDI0OTY2YzY5N2E1NjU1OGM2
NjM0Y2JjNGNmMzdmM2QyNWVhMDRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVNhbXBsZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVNhbXBsZXI+
IGNyZWF0ZShSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBjb25zdCBHUFVTYW1wbGVyKiBz
YW1wbGVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgV2ViR1BVU2FtcGxlcihSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BV
U2FtcGxlcj4gbV9zYW1wbGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2FtcGxlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2M2FhYzI2
OWExNThlYjU4N2JhZjVkNDE0ZDBmMmUyMWZiNDJlNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2FtcGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlv
bkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVU2FtcGxlciwKLSAgICBFeHBvc2Vk
PVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU2FtcGxlciB7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMTQ1NDVkZDNmNDZjZTg2MjA4ZjNkNTQ2YWZmNzE0NDI3
MzNjOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQ
VURldmljZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShS
ZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9k
dWxlKSwgc291cmNlKSk7Ci19Ci0KLVdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BVU2hhZGVyTW9k
dWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSkKLSAgICA6IG1fbW9kdWxlKFdURk1vdmUobW9kdWxlKSkKLSAgICAsIG1fc291cmNlKHNvdXJj
ZSkKLXsKLX0KLQotdm9pZCBXZWJHUFVTaGFkZXJNb2R1bGU6OnVwZGF0ZShjb25zdCBXZWJHUFVE
ZXZpY2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgbV9zb3VyY2UgPSBz
b3VyY2U7Ci0gICAgbV9tb2R1bGUgPSBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2Uu
ZGV2aWNlKCksIHsgbV9zb3VyY2UgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4NzBiYjhkMmY2MzY0YzI0ZTFkYTVkY2I0NTUwNTAxYTRmMmQwMTY5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgV2ViR1BVRGV2aWNlOwotCi1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYsIGNv
bnN0IFN0cmluZyYgc291cmNlKTsKLQotICAgIEdQVVNoYWRlck1vZHVsZSogbW9kdWxlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZShjb25zdCBXZWJH
UFVEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BV
U2hhZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYsIGNvbnN0IFN0cmluZyYgc291
cmNlKTsKLQotICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IG1fbW9kdWxlOwotCi0gICAgLy8g
UHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgU3RyaW5nIG1f
c291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZDc3ZjA3
OWUzMjlkNjVkMzg0NGY4YmVmNTNkODMwNWE1NGI4OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVTaGFkZXJNb2R1bGUsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVNoYWRlck1vZHVsZSB7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjMy
YTk4OWVkNWM1MDZkZjNhN2RjYjA5MzU1Y2U1MjY4NGMzMDhmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDBhN2E5ZDRjOGRhNDUzNzY2MDBmOWJhMGJmNmZlMmNhMTZkNDc2MS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAg
cmVxdWlyZWQgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBjb2RlOyAvLyBGSVhNRTogRE9NU3Ry
aW5nIGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzYyNTlkN2Y2ZTEzYmQ2MjYwNjIwODA3N2FlYzk3ZTQzM2UwMjM5Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJH
UFVTd2FwQ2hhaW4uaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IFdlYkdQVVN3YXBDaGFpbjo6Y3JlYXRl
KFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVN3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpKTsKLX0KLQotV2ViR1BV
U3dhcENoYWluOjpXZWJHUFVTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hh
aW4pCi0gICAgOiBtX3N3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpCi17Ci19Ci0KLVJlZjxX
ZWJHUFVUZXh0dXJlPiBXZWJHUFVTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAg
ICBpZiAoIW1fc3dhcENoYWluKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46
OmdldEN1cnJlbnRUZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBtX2N1cnJlbnRU
ZXh0dXJlID0gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG1fc3dhcENoYWluLT50cnlHZXRDdXJyZW50
VGV4dHVyZSgpKTsKLSAgICByZXR1cm4gbWFrZVJlZigqbV9jdXJyZW50VGV4dHVyZSk7Ci19Ci0K
LXZvaWQgV2ViR1BVU3dhcENoYWluOjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fc3dhcENoYWlu
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgpOwotICAgIG1f
c3dhcENoYWluID0gbnVsbHB0cjsKLQotICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlICYmIG1fY3Vy
cmVudFRleHR1cmUtPnRleHR1cmUoKSkKLSAgICAgICAgbV9jdXJyZW50VGV4dHVyZS0+ZGVzdHJv
eSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhhMWUwZGY2NDgwNGYxMTE5ZjMxNWUz
MGUxYTA2MTA4YzM0MjdiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaAor
KysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKLSNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWNsYXNzIFdlYkdQVVN3YXBDaGFpbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkdQVVN3YXBDaGFpbj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
R1BVU3dhcENoYWluPiBjcmVhdGUoUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7Ci0KLSAgICBHUFVT
d2FwQ2hhaW4qIHN3YXBDaGFpbigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgpOyB9Ci0KLSAg
ICBSZWY8V2ViR1BVVGV4dHVyZT4gZ2V0Q3VycmVudFRleHR1cmUoKTsKLQotICAgIHZvaWQgZGVz
dHJveSgpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENo
YWluPiYmKTsKLQotICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwotICAgIFJl
ZlB0cjxXZWJHUFVUZXh0dXJlPiBtX2N1cnJlbnRUZXh0dXJlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNDMyY2YzYTRlNDUwNGM4YmExZmFmZDlhY2FiNmRkYmIxZTJmZDBiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVN3YXBDaGFpbiwKLSAgICBTa2lwVlRhYmxlVmFs
aWRhdGlvbiwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU3dhcENoYWlu
IHsKLSAgICBXZWJHUFVUZXh0dXJlIGdldEN1cnJlbnRUZXh0dXJlKCk7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzNGZjZDMzMzczOTk1
ZjZhOThkNDc5YWY0MDJmN2NkOTdiMDY1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3I+IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I6OmFzR1BVU3dhcENoYWluRGVzY3JpcHRv
cigpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXZpY2UpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VUNhbnZhc0NvbnRleHQ6OmNvbmZpZ3VyZVN3YXBDaGFpbigpOiBJbnZhbGlkIEdQVURldmljZSEi
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgeyBtYWtlUmVmKGRldmljZS0+ZGV2aWNlKCkpLCAqdGhp
cyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY4
NzRkNmY3MDAwMDM5NTlkYjU4OTExOWI0ZGIwMDJlOWMzMjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIDogR1BVU3dhcENoYWluRGVzY3JpcHRvckJh
c2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4gYXNHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBkZXZp
Y2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4
dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkYTA2MDEyMzFlN2U4ZjU4Mzk0Yzdj
NDIzOTUxODRlYjdhMzdjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2Vi
R1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRl
eHR1cmUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3Zl
KHRleHR1cmUpKSk7Ci19Ci0KLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQ
VVRleHR1cmU+JiYgdGV4dHVyZSkKLSAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQot
ewotfQotCi1SZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1
bHRWaWV3KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0g
ICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0K
LQotICAgIGF1dG8gdmlldyA9IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUobV90ZXh0dXJlLT50
cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKSk7Ci0gICAgbV90ZXh0dXJlVmlld3MuYXBwZW5k
KHZpZXcuY29weVJlZigpKTsKLSAgICByZXR1cm4gdmlldzsKLX0KLQotdm9pZCBXZWJHUFVUZXh0
dXJlOjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVVGV4dHVyZTo6ZGVzdHJveSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHZpZXcgOiBtX3RleHR1cmVWaWV3cykK
LSAgICAgICAgdmlldy0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZVZpZXdzLmNsZWFyKCk7Ci0K
LSAgICBtX3RleHR1cmUtPmRlc3Ryb3koKTsKLSAgICBtX3RleHR1cmUgPSBudWxscHRyOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ1OGMyNjQyZmNjNmE2MmYzNzJhY2I0YTI3MzhlMWM2Yjcy
NTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVy
ZVZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQdHI8R1BV
VGV4dHVyZT4mJik7Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9Ci0KLSAgICBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZURlZmF1bHRW
aWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
R1BVVGV4dHVyZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVy
ZT4gbV90ZXh0dXJlOwotICAgIFZlY3RvcjxSZWY8V2ViR1BVVGV4dHVyZVZpZXc+PiBtX3RleHR1
cmVWaWV3czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2U0YTVmOTkzYjY0NWRhOTVj
MmEzZDc4YzhkZjFjMmMzNzM3ZDI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVRleHR1cmUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0g
aW50ZXJmYWNlIFdlYkdQVVRleHR1cmUgewotICAgIFdlYkdQVVRleHR1cmVWaWV3IGNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0gICAgdW5kZWZpbmVkIGRlc3Ryb3koKTsKLQotICAgIC8vIE5vdCBZZXQg
SW1wbGVtZW50ZWQ6Ci0gICAgLy8gV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlVGV4dHVyZVZpZXco
V2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRlc2MpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGUwMzJhZjBjMDE2ZGM1ZWJkNWFlNGRkZDZjNjRiMjM0YjQwNTM5
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZp
ZXc6OmNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB2aWV3KQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKLX0KLQotV2ViR1BV
VGV4dHVyZVZpZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZlB0cjxHUFVUZXh0dXJlPiYmIHZpZXcp
Ci0gICAgOiBtX3RleHR1cmUoV1RGTW92ZSh2aWV3KSkKLXsKLX0KLQotdm9pZCBXZWJHUFVUZXh0
dXJlVmlldzo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKCFtX3RleHR1cmUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fdGV4dHVyZS0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmll
dy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjUwZTIxODRjNTIzY2Y4NWZkZWQ2
YWJkY2ZlYmZjMjM2ZjEyOTAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVRl
eHR1cmVWaWV3PiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotICAgIH5XZWJHUFVUZXh0
dXJlVmlldygpIHsgZGVzdHJveSgpOyB9Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koKTsKLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViR1BVVGV4dHVyZVZpZXcoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwot
ICAgIAotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZmZiZGViYmM5MDVhY2Y2ZDcxM2VkMDQyNzc1ZmFkMzRlZTNi
NTA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJm
YWNlTmFtZT1HUFVUZXh0dXJlVmlldywKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2Ug
V2ViR1BVVGV4dHVyZVZpZXcgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRhMmRhZWU2NDI3NWI1Zjc5MzI3MGNlM2Q1ZjQ1MzcxMTQyZjEyZWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
Yi8jbmF2aWdhdG9yLWdwdQotLy8gRklYTUU6IFRoZSBzcGVjIHNheXMgdGhpcyBzaG91bGQgb25s
eSBiZSBleHBvc2VkIHRvIERlZGljYXRlZFdvcmtlcnMuCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V29y
a2VyTmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdvcmtlck5hdmlnYXRvciB7Ci0g
ICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1OwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA3ZjM2NjgzZGMzMDM4NDMyNGY1YTcy
NGIyMjEwYjkxZDhlZDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvckdQVS5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJXZWJHUFUuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1Xb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShX
b3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKLXsKLSAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdv
cmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7Ci0gICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOwotICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50
OwotfQotCi1jb25zdCBjaGFyKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OnN1cHBsZW1lbnROYW1lKCkK
LXsKLSAgICByZXR1cm4gIldvcmtlck5hdmlnYXRvckdQVSI7Ci19Ci0KLWNvbnN0IFdlYkdQVSog
V29ya2VyTmF2aWdhdG9yR1BVOjpncHUoV29ya2VyTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCi17Ci0g
ICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRp
bmdzVmFsdWVzKCkud2ViR1BVRW5hYmxlZCk7Ci0gICAgcmV0dXJuIFdvcmtlck5hdmlnYXRvckdQ
VTo6ZnJvbSgmbmF2aWdhdG9yKS0+Z3B1KCk7Ci19Ci0KLWNvbnN0IFdlYkdQVSogV29ya2VyTmF2
aWdhdG9yR1BVOjpncHUoKSBjb25zdAotewotICAgIGlmICghbV9ncHUpCi0gICAgICAgIG1fZ3B1
ID0gV2ViR1BVOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gbV9ncHUuZ2V0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjc0NTNmOTRiYmNhNmI5ODliZDU4ZjU5NWM4MzhiMDFh
MTIwYTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVOwotY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotCi1j
bGFzcyBXb3JrZXJOYXZpZ2F0b3JHUFUgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxXb3JrZXJO
YXZpZ2F0b3I+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgV2ViR1BVKiBncHUoV29ya2VyTmF2aWdhdG9yJik7Ci0KLXByaXZhdGU6Ci0g
ICAgc3RhdGljIFdvcmtlck5hdmlnYXRvckdQVSogZnJvbShXb3JrZXJOYXZpZ2F0b3IqKTsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLSAgICAKLSAgICBjb25zdCBX
ZWJHUFUqIGdwdSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBSZWZQdHI8V2ViR1BVPiBtX2dwdTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGJlZTIzNjRlOGJhZThhMGU5ODUyZDZjNDIzZGQxOWNhMjYwYWM0
NjIuLjI2M2NjZmJlYjU4NjU5MDFjYTAxNWE0ODMyOWY4NWQzMjU5MzFkOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0zMjAsOTEgKzMyMCw2IEBAIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5j
cHAKIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJy
b3JFdmVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50
ZWdlckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0
ZXJhbFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91
dFNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxD
b2RlR2VuZXJhdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVG
dW5jdGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
VHlwZVdyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENh
bGN1bGF0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1
dGVEaW1lbnNpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0
ZW1zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAotTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhl
ci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb3BlcnR5UmVzb2x2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5y
ZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJl
Y3Vyc2l2ZVR5cGVDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZl
T3ZlcmxvYWRJbXBsLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNo
ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGll
cy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XZWJHUFUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAotTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVM
YXlvdXQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2FtcGxlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAot
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi1Nb2R1bGVzL3dlYmdwdS9Xb3Jr
ZXJOYXZpZ2F0b3JHUFUuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5jcHAKIE1v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKIE1vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBA
IC0yMDc5LDE0ICsxOTk0LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0
U291cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JTY29wZXMuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTMwNzIs
MzQgKzI5NzksNiBAQCBKU0ZvY3VzT3B0aW9ucy5jcHAKIEpTRm9udEZhY2UuY3BwCiBKU0ZvbnRG
YWNlU2V0LmNwcAogSlNGb3JtRGF0YUV2ZW50LmNwcAotSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5k
aW5nLmNwcAotSlNHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAotSlNHUFVCbGVuZERl
c2NyaXB0b3IuY3BwCi1KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVUJ1ZmZlclVzYWdl
LmNwcAotSlNHUFVDYW52YXNDb250ZXh0LmNwcAotSlNHUFVDb2xvci5jcHAKLUpTR1BVQ29sb3JT
dGF0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUNvbG9yV3JpdGUuY3BwCi1KU0dQVUNvbXBhcmVGdW5j
dGlvbi5jcHAKLUpTR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcAotSlNHUFVFcnJv
ckZpbHRlci5jcHAKLUpTR1BVRXh0ZW50M0QuY3BwCi1KU0dQVUxvYWRPcC5jcHAKLUpTR1BVT3Jp
Z2luM0QuY3BwCi1KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi1KU0dQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucy5jcHAKLUpTR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVNoYWRlclN0YWdl
LmNwcAotSlNHUFVTdG9yZU9wLmNwcAotSlNHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKLUpTR1BV
VGV4dHVyZUZvcm1hdC5jcHAKLUpTR1BVVGV4dHVyZVVzYWdlLmNwcAotSlNHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5jcHAKLUpTR1BVVmFsaWRhdGlvbkVycm9yLmNwcAotSlNHUFVWZXJ0ZXhBdHRy
aWJ1dGVEZXNjcmlwdG9yLmNwcAotSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmNwcAotSlNH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCiBKU0dhaW5Ob2RlLmNwcAogSlNHYWluT3B0aW9u
cy5jcHAKIEpTR2FtZXBhZC5jcHAKQEAgLTM3NjAsMzggKzM2MzksNiBAQCBKU1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwCiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAogSlNXZWJHTFZlcnRl
eEFycmF5T2JqZWN0LmNwcAogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAotSlNXZWJH
UFUuY3BwCi1KU1dlYkdQVUFkYXB0ZXIuY3BwCi1KU1dlYkdQVUJpbmRHcm91cC5jcHAKLUpTV2Vi
R1BVQmluZEdyb3VwQmluZGluZy5jcHAKLUpTV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAK
LUpTV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotSlNXZWJHUFVCdWZmZXIuY3BwCi1KU1dlYkdQ
VUJ1ZmZlckJpbmRpbmcuY3BwCi1KU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCi1KU1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmNwcAotSlNXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCi1KU1dlYkdQ
VUNvbXB1dGVQaXBlbGluZS5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5j
cHAKLUpTV2ViR1BVRGV2aWNlLmNwcAotSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLUpT
V2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmNwcAotSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLUpTV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLUpT
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVRdWV1ZS5jcHAK
LUpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKLUpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVTYW1wbGVyLmNwcAotSlNXZWJHUFVTaGFkZXJNb2R1
bGUuY3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVN3YXBD
aGFpbi5jcHAKLUpTV2ViR1BVVGV4dHVyZS5jcHAKLUpTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCiBK
U1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNwcAogSlNX
ZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IDY4MmRiY2MwNmNlYWU3ZDc2YzFlMGU5YTY2YWJmNDI3ZTFjY2I0OWIuLjBjZjhmYmU0MzM0ZTFj
MmRiMTU2ZTY1ODI3NjcxOGQwNmM5ZDcwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
Mzg3LDcgKzM4Nyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGlu
Z0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDYXNjYWRlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29y
ZVRleHQuY3BwCkBAIC0zOTgsMjQgKzM5Nyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21w
dXRlUGlwZWxpbmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmlj
ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1
ZXVlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5j
b2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCi1w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC02MTYsNyArNTk3LDMgQEAgcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0
aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xF
U2V0dGluZy5jcHAgQG5vLXVuaWZ5Ci0KLS8vIERlcml2ZWQgU291cmNlcwotCi1XSExTTFN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliNjM1OGIxYjBmMTYxYjY2ZTc3N2E5MWRi
NGM3NmRkMWY2ZjZkZWIuLjU1ZTAwMmZhMmJjMWY0MGNkMTIxYjI5YjZkZmQ4MDg5N2QxNmYyZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTkxMSwxOCArOTExLDYgQEAKIAkJMzEyODhFNzUwRTMwMDVENjAwMzYxOUFFIC8qIENT
U0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggKi87
IH07CiAJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4Q0E2
QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkMwQzQxMTQ2REM2Q0Mw
MDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTJG
RjkxMTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlE
IC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLzsgfTsKLQkJMzEyRkY5MTIyMUE0QzM2NTAwRUIxOTlE
IC8qIEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICovOyB9OwotCQkz
MTJGRjkxMzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzQyMUE0
QzJGNDAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLzsgfTsKLQkJMzEy
RkY5MTQyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzIy
MUE0QzJGMzAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovOyB9
OwotCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMxMjFBNEMyRjIwMEVCMTk5
RCAvKiBHUFVRdWV1ZS5oICovOyB9OwotCQkzMTJGRjkxNjIxQTRDMzY1MDBFQjE5OUQgLyogR1BV
UmVuZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICov
OyB9OwotCQkzMTJGRjkxNzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Ki87IH07Ci0JCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJCMjFB
NEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLzsgfTsKLQkJMzEyRkY5MTkyMUE0
QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5
RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxMkZGOTFBMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJBMjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVTd2FwQ2hh
aW4uaCAqLzsgfTsKLQkJMzEyRkY5MUIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEM1MjFB
NEMyRjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi87IH07Ci0JCTMxMkZGOTFDMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVy
ZUZvcm1hdC5oICovOyB9OwogCQkzMTMxNzE1NjFGQjA3OUU1MDA4RDkxRkMgLyogQ2FudmFzQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTcx
NTQxRkIwNzlEMTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTM1OTEwNjFFN0REQzczMDBGMzA2MzAgLyog
UlRDSWNlQ29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTM1OTEwMDFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlQ29ubmVjdGlv
blN0YXRlLmggKi87IH07CiAJCTMxMzU5MTA3MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VHYXRo
ZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEzNTkxMDExRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0YXRlLmggKi87
IH07CkBAIC05NTcsNyArOTQ1LDYgQEAKIAkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNp
bXVsYXRlZENsaWNrT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTMxN0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0QzRkYyMjE1NTk5RTMwMDM0RTNC
OSAvKiBQb2ludGVyRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTgxNUEzMTFGOUE2QzhGMDBGQ0JGODkgLyogSW1hZ2VCaXRtYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDI2QkJGMUY4
NkQxODkwMDhGRjI1NSAvKiBJbWFnZUJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxODQzNkRFMjFCOURBQUYwMEVEMzgzRSAvKiBXZWJH
UFVMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi87IH07CiAJCTMxODg5
MTYxMUFCN0VFQTEwMEVBNjI3QiAvKiBtaXNzaW5nSW1hZ2VAM3gucG5nIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0MTk5OTFBQjBEQTE0MDA0RTY0
RTEgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyAqLzsgfTsKIAkJMzE4RUFENEQxRkE5MTM4MDAwOENF
Rjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThFQUQ0QTFGQTkxMTU3MDA4Q0VG
ODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTk4NDgwMTFBMUQ4MTdCMDBB
MTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxOTg0N0ZGMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25FdmVu
dC5oICovOyB9OwpAQCAtMzI2OCw5ICszMjU1LDYgQEAKIAkJQTE4ODkwQUYxQUExM0YyNTAwMjZD
MzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg4OTBBRDFBQTEzRjI1MDAyNkMzMDEgLyog
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTk1NkYxQzIzMzFBNjc3MDA1N0U5RDIgLyogSlNB
cHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTk1NkYxQjIzMzFBNjQ2MDA1N0U5RDIgLyogSlNBcHBsZVBheUNhbmNlbEV2
ZW50LmggKi87IH07CiAJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Np
b25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE5NTZGMUQyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmggKi87IH07
Ci0JCUExOTU2RjIzMjMzMUFDRjIwMDU3RTlEMiAvKiBXSExTTFJlcGxhY2VXaXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUxRjcwQjIyQ0FEOERB
MDAxNUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovOyB9OwotCQlBMTk1NkYyNDIzMzFBRDIx
MDA1N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFt
LmggKi87IH07Ci0JCUExOTU2RjI1MjMzMUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1bmN0aW9uRGVm
aW5pdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi87
IH07CiAJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
OUFFQTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAq
LzsgfTsKIAkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCAqLzsgfTsKIAkJQTE5RDkzNEIxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNjk1MCwyMCArNjkzNCwxNCBAQAogCQkxQzI0RUVBNjFDNzJBN0I0MDA4MEY4RkMgLyog
SlNGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U0ZvbnRGYWNlU2V0LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFj
ZVNldC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjRFRUE3
MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTRm9udEZhY2VTZXQuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzI4MUM2RDIyQjg3Qjk4MDA2OTFDMDAgLyog
V0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
Q2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDMjgxQzZFMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFy
aWFudEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9u
dFZhcmlhbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3
NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMTmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMzMyNzcyMjFD
RjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
VW5uYW1lZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0
MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRy
YWl0Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbEN1
cnJlbnRUcmFpdENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0
M0RFNkEyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0
Q29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0RDBERDEyNEQ5
RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlw
aEJ1ZmZlck1lbWJlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1MEM0OTUy
MkM4NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNTlCMDE4MjIzODY4NzkwMDg1MzgwNSAvKiBX
SExTTFNjb3BlZFNldEFkZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2NvcGVkU2V0QWRkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdD
IC8qIEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEYxQzZFN0NB
NjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNkI5NUREMjJDODU4
QTQwMEU2RjE0RiAvKiBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZEOEFDMjUwQTI5NEQwMEQ2RTkyMCAv
KiBGb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2
RkQ4QUQyNTBBMkU1MzAwRDZFOTIwIC8qIEdseXBoUGFnZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdseXBoUGFnZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM2RkQ4QUUyNTBBMzExNTAwRDZFOTIwIC8qIEZvbnRDYXNjYWRlQ29yZVRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhc2NhZGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02OTcyLDQ4ICs2OTUwLDE3IEBACiAJCTFDODFCOTU2MEU5NzMz
MDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU4MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
ODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRW50cnlQb2ludFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMQWRkcmVzc1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQw
Qjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTEdh
dGhlckVudHJ5UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5QjIxRUM0MDA5
MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQ2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRCMjJBQTE5RkYw
MDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbXB1dGVEaW1lbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFs
Q29udmVydExheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGluZU1ldGFsQ29u
dmVydExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRGMjJB
QTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzhEMjZDOTIyQzA5NDUzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RDI2Q0UyMkMwOTUxMzAw
RDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9u
LnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJz
b3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVz
c2lvbi50YmQ7IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9
IFNES1JPT1Q7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBX
SExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNB
MEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xG
dW5jdGlvblN0YWdlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9u
U3RhZ2VDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTUy
MUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVD
aGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBQTgyRjYyMjQyQUUw
NTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMUHJvcGVydHlSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2Vi
U2NyaXB0T2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViU2NyaXB0T2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ4
MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGNTZERTI1
MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNUZFODgyMkRFQkM4QjAw
OTQ0MEUyIC8qIFdITFNMRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0NkEgLyogV0hM
U0xSZXNvbHZhYmxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmFibGVUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAv
KiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM1MjFERUQ2NDkw
MDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2
OUIzNzIxREVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExT
TEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzkyMURGMDNG
MzAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEY4MjE3Qjgz
OTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0VW5kZXJsaW5lT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQzE5OTAzMzI0
MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDREFCRDZCMjJDODQ3OUEwMEJEMEEzQSAvKiBXSExTTFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0
NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDIyLDIwICs2OTY5LDYgQEAKIAkJMUNFOEQxMjUy
NjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVG
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBODIxRjJCNjczMDBG
NDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQUYyMUYyQjk4NDAw
RjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNC
M0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCMTIx
RjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xUeXBlTmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNC
MjIxRjJCOTg2MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
RUNCM0I1MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFs
Q29kZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIg
LyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0VDQjNCQTIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCQjIxRjUx
MUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNFQ0IzQzYyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xO
YXRpdmVUeXBlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YwQkZENDIyOTg3MDY4MDBFRDIwNzQg
LyogVGV4dFNpemVBZGp1c3RtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTaXplQWRq
dXN0bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRkFFMzIyMEE2RDZB
M0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJv
YmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKIAkJMUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUlu
UGljdHVyZVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BpY3R1
cmVJblBpY3R1cmVXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjUs
MjIgKzczOTgsNiBAQAogCQkzMTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVz
UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NLZXlmcmFtZXNSdWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjhDQTY3MTQ3MzMxNTIwMDc0Qzcy
QSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25D
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEI5MjFBNEMy
RUYwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5k
ZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQTIxQTRD
MkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN3YXBDaGFp
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQjIxQTRDMkYwMDBFQjE5
OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQg
LyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJG
RjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZG
OEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGV2
aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJGMjFBNEMyRjEwMEVC
MTk5RCAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2aWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8q
IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMTIx
QTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVldWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzIyMUE0QzJGMzAwRUIxOTlEIC8q
IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzEyRkY4QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVVGV4dHVyZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM1MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxMkZGOTNCMjFBNjFDQTAwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMTJGRjkzQzIxQTYxQ0ExMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJGRjkzRDIxQTYxRjA3MDBFQjE5OUQgLyogSlNX
ZWJHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkZGOTNFMjFBNjFGMDcwMEVC
MTk5RCAvKiBKU1dlYkdQVVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR1BVUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTMxNzE1NDFGQjA3OUQxMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYW52YXNCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NTYzLDggKzc0ODAsNiBAQAogCQkzMTdEM0ZFRjIxNTU5OUUxMDAzNEUzQjkgLyogUG9p
bnRlckV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBQb2ludGVyRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTdEM0ZGMTIxNTU5OUUyMDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBvaW50ZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxN0QzRkYyMjE1NTk5RTMwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9pbnRlckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTg0MzZERDIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHUFVMYXllci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4OUU2REIxNkIyMTAzNTAwMzg2RUEzIC8qIHBsdWdJ
bnMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBwbHVnSW5zLmNzczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFENEExRkE5MTE1NzAwOENFRjg2IC8qIEltYWdlQml0
bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxOEVBRDRDMUZBOTEzNTIwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRT
ZXR0aW5ncy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Miw3ICs3NTg3LDYgQEAKIAkJMzM1
MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAv
KiBOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Tm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MUY3MEIy
MkNBRDhEQTAwMTVCNDBEIC8qIFdITFNMUmVwbGFjZVdpdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xSZXBsYWNlV2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNUM3NEZEMzIy
OEExOTEyMDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzVDNzRGRDcyMjhBMTlBNjAwMEMyMUEwIC8qIENTU0dyaWRJbnRlZ2Vy
UmVwZWF0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNjYyRjk4NDA0N0NFREJFNUREREFGQUEg
LyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTExMywxOSArOTAyNyw4IEBACiAJCTUxRkI2N0Q5MUFFNkI1RTQwMEQwNkM1QSAv
KiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0
ZW5zaW9uU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjEzMUU1QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjE1ODYyQzIy
OTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNFMTJGIC8q
IFdITFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdITFNMTmFtZVNwYWNlLmg7IHBhdGgg
PSBBU1QvV0hMU0xOYW1lU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIy
QkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
MkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZl
dGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAv
KiBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xD
aGVja1JlZmVyZW5jZVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI0
QkQ0ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNkIzRjAxMjJG
QjdCREQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2
QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFu
ZGFyZExpYnJhcnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3
M0NDNzQyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsYXRmb3JtWFJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTI3M0NDNzUyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybVhSQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTI3M0NDOUEyNTYzQjIxMjAwODUwMDA3IC8qIEpTV2ViWFJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkxMzcsMTIgKzkwNDAsOSBAQAogCQk1MjczQ0NBRDI1NjQ1NzZDMDA4
NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MjczQ0NBRjI1NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlZpZXdJbml0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4MTUw
IC8qIFdITFNMUGFyc2luZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQYXJzaW5nTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQzIyRjkzRTVEMDA1NzgxNTAg
LyogV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NF
c2NhcGVNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBE
NEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3
N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZh
dWx0RGVsZXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVmYXVsdERlbGV0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyog
VmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9GdWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
Nzc2LDEzICsxMDY3NiwxMCBAQAogCQk3QzdCRjk0OTI1MTZGQTU0MDA4MDg2ODIgLyogUGVyZm9y
bWFuY2VNZWFzdXJlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmVP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDN0JGOTRCMjUxNkZBNTQw
MDgwODY4MiAvKiBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5j
ZU1lYXN1cmVPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5
NTAyNTE2RkI1NDAwODA4NjgyIC8qIFBlcmZvcm1hbmNlTWVhc3VyZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzdDNzY5QzIyRjY3RUNEMDAzMkJDQ0QgLyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xNYW5nbGVkTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTU9wZXJhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNTFFRDYyODFEMDBDRTI2RTgg
LyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyog
V0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2
ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1l
ZFR5cGVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODgyNEM0MjQ5RDdC
MDUwMEVEOEZDNCAvKiBTVkdQYXRoU2VnVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUGF0aFNlZ1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDOEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QW55Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDOEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29udmVydEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTI2LDEwICsxMTQyMyw2IEBACiAJ
CTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkxNzVDRTVBMjFFMjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
MTg2RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTE4NkYzQjYyMzI5RkI0RTAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdl
YkdQVVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBp
cGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0JBMjMyOUZFNjgw
MEFGRjg1NyAvKiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkx
QjhGMEIzMjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdT
d2l6emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDcgKzEyNjAzLDYg
QEAKIAkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzN0E0MkUy
MjUyN0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRl
eHR1cmVDb21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
MzhBODdBMzI1MzhCRUU3MDAzN0E0NzIgLyogR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBM0FGOUQ4MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8q
IFVzZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2
IC8qIFVzZXJBZ2VudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFVzZXJBZ2VudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzE4
LDcgKzEyNjEwLDYgQEAKIAkJQTNCRjdFRjIyNTZDOEQ3MjAwNDRCQzc1IC8qIEtIUlBhcmFsbGVs
U2hhZGVyQ29tcGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLSFJQYXJhbGxlbFNoYWRlckNv
bXBpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JGN0VGNDI1NkM4RDcy
MDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0JGN0VGNTI1NkM4RDc0MDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBM0MzREM1RDI1M0ExOTkyMDA2MUYzMkEgLyogR1BVUGxhdGZvcm1UeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQbGF0Zm9ybVR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRDQyQTg0MUYzM0JBMzYwMEE2NEI2MiAvKiBMYXlv
dXRVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVu
aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MjExNkQwREREMDA3
MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgzMTE2RDBEREQwMDcxOTdC
RCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDcwNCwxMjEgKzE0NTk1LDE2IEBACiAJCUMxRjdCNzJG
MjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBR1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRl
Z2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVB
IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjBGODhBQTIyOTY2QjBFMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xBU1REdW1wZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xBU1REdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzIxMEU5MTEyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MTBFOTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMTGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMzhBMTMyMURERUNE
MzAwRjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMQnVpbHRJblNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxMzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hM
U0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkRlZmlu
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjUyMUNEODlCNTAw
MjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb250aW51ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5Nzkg
LyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJvb2xlYW5MaXRl
cmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY3MjFDRDg5QjkwMDIy
Nzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZGV4
RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGODIxQ0Q4
OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY5
MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkEyMUNEODlC
RTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFz
ZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkZCMjFDRDg5
QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRG9X
aGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkQyMUNEODlD
MDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UmV0dXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA0MjFDRDg5QzYw
MDIyNzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFdoaWxlTG9v
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5
NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0
aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA2MjFD
RDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTENvbW1hRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFF1YWxpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0
U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdI
TFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTEyMUNEODlE
MTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlw
ZUFyZ3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEyMjFDRDg5
RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMzIxQ0Q4OUQyMDAy
Mjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZh
cmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE0
MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdI
TFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxNjIxQ0Q4
OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TENhbGxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE4
MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFB
MjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnJl
YWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3
OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFGMjFD
RDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIw
MjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjIyMUNEODlE
RjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
QnVpbHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIz
MjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0
aW9uTWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI3MjFDRDg5
RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3
OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZURlZmlu
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkEyMUNEODlFNzAw
MjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1h
a2VQb2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQb2ludGVyRXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRDIxQ0Q4OUU5
MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkYyMUNEODlF
QzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQb2lu
dGVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczMDIxQ0Q4OUVE
MDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5Nzkg
LyogV0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xG
bG9hdExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczQTIx
Q0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJv
Z3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFCRjc0MjIxQ0Q5NjNCMDAy
Mjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xTdGFu
ZGFyZExpYnJhcnkuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFy
ZExpYnJhcnkuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQzIxQkY3
NDUyMUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXSExT
TFN0YW5kYXJkTGlicmFyeS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURG
MkU3MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTgxRDlFNEU5OTAwRjVCMjRDIC8q
IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NGb250VmFyaWF0aW9uVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjM0QTk4NzIxRTg4NkFEMDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMVmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4QTIx
RTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xOYW1lUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjM0QTk4QzIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xOYW1lUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIzNEE5OEQyMUU4ODg4NDAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xOYW1lQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOThFMjFFODg4ODUwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTmFtZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIzNEE5OTcyMUU5MEYyODAwM0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OTkyMUU5MEYyOTAwM0M5ODREIC8qIFdITFNMUmVz
b2x2ZU92ZXJsb2FkSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlc29sdmVPdmVy
bG9hZEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5QTIxRTkw
RjU2MDAzQzk4NEQgLyogV0hMU0xJbmZlclR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMSW5mZXJUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlC
MjFFOTBGNTcwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xJbmZlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlEMjFF
OTEwQkQwMDNDOTg0RCAvKiBXSExTTFJlc29sdmluZ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xSZXNvbHZpbmdUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFC
MjFFOTJDMTgwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIzNEE5QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1l
cmF0aW9uRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFEMjFF
OTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxp
Y2F0ZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUIwMjFFOTJDMUMwMDND
OTg0RCAvKiBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjIyMUU5MkMxRjAwM0M5ODREIC8q
IFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN5bnRoZXNpemVFbnVtZXJh
dGlvbkZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI2
MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xJbnRyaW5zaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI3MjFF
OTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xJbnRyaW5zaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzOThF
QkQyMzBBMUI3NjAwNjQxNTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMTmFtZVNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4RTYxMUZF
ODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdBRjIx
RkFENTNGMDA0QzZERDEgLyogV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzI0QTU3QjIyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QjMyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50
aWNNYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBXSExT
TFByZXBhcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVwYXJlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QkIyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNM
UHJlcGFyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXBhcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTIxQzcyREM5OTAwRjc0
QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzND
MUM2REIxOTQwMDE0NTFCNiAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Rm9udEZhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODMzRDFDNkRD
MjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMy
ODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlD
MjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyODhDNzJEMjFD
OTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
QUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4
QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFsdWVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDI1LDIyOSArMTUyMTEsMjggQEAKIAkJRDAwMEVC
QTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJm
cmFtZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJm
cmFtZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI2MTFD
MUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDAxRDlBQjIxQjBDN0JGMDAyM0I5QkMgLyogR1BVQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4NzkyMUM4NjQ1
QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4
N0EyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDAzMjg3QjIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5
b3V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJB
QTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlv
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIy
QUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVs
aW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzkxNDEyMjI0
OEQ0MDAwOTg5OThDIC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdF
NTIyNkE2MzQyMDBFRUQ3RDkgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitH
UFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9ICJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yR1BVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAwNDg3RUUyMjc0MjgxNDAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOYXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAw
NDg3RkQyMjc3QUY4MTAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvcitHUFUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJX
b3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MDQ4N0ZFMjI3N0FGODIwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV29ya2VyTmF2aWdhdG9yR1BVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkYyMjQyRUQ0NTAw
NDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDYy
MTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdl
YkdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0RjIxNkZG
QUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVBZGFw
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUwMjE2RkZBQzIwMDBE
NzFEQiAvKiBXZWJHUFVBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUFkYXB0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk1MTIxNkZGQUMyMDAw
RDcxREIgLyogV2ViR1BVQWRhcHRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQWRhcHRlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJH
UFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVRGV2aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFj
ZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3Bs
aXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMTIyMjEyNUFG
QzAwNjI3QjZDIC8qIEdQVUNvbG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2QyAvKiBHUFVCdWZmZXJE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMUMyMjEzNjI3MzAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVz
YWdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkgLyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJp
bmRHcm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0N0QyMjBBMkFDNjAwQUM1RjQ5IC8qIEdQ
VUV4dGVudDNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUV4dGVudDNELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgwMjIwQTJCNzAwMEFDNUY0OSAvKiBHUFVFeHRlbnQzRC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gR1BVRXh0ZW50M0QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDI2RjQ4MzIyMEE0NzJGMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVU
ZXh0dXJlVXNhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4NTIy
MEE0NzcyMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRl
eHR1cmVVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QjIyMEE1
QjBCMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0OEMyMjBB
NUJBRDAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMkMy
NjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMzIxMUNFMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDMyMTFDRjIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzMjExRDAyMUFDOTU0RjAwNzYzQ0YyIC8q
IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIxMjJEN0Yy
RUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvclNj
b3Blcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDM1ODZCMjIyRDdGMkVBMDBE
QTAyODQgLyogR1BVRXJyb3JTY29wZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3JT
Y29wZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDM2REQ4RDIwOEZGQzBD
MDBGOUY0QjIgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAz
Qzg0OUEyMUZGQzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUMyMUZGQzdGQzAwMDIyMjdGIC8qIEdQVUNv
bXBhcmVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQ
VUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGVE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTEyMUM5
QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTIyMUM5QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTQyMUM5QkYyQzAwMDMy
Qjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVs
aW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNUE5OUU1MjFDOUJG
MkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVQaXBlbGluZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwNUE5OUU2MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1
REQ2REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRC
dWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAv
KiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2
MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDY1QkU1NzIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3VwQWxsb2NhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDY1QkU1ODIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3Vw
QWxsb2NhdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBBbGxv
Y2F0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2QTlBMjEyMjAy
NkM3QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2MDA2NUY0M0YgLyogUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdmVGb3JtYXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDA2RUY1NTIyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNkVGNTUzMjIwQkEyNkEw
MDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVXRp
bHNNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2NTU0
QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwN0RFQUI4MEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4NDAzM0EyMjFDQkY1NDAwMDA3MjA1
IC8qIEdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVCdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NDNB
NEMyMEZFQzE2NTAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg1RTY0QTIyMzZERUFFMDBDM0UxRTIgLyog
R1BVQmluZEdyb3VwTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NkZFOTYwOUQ1M0FBQjAw
NUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVW5saW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5
NzA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA4N0NFMzgyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFMzkyMUFDQTk0MjAwQkRFMTc0IC8q
IEdQVVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVRdWV1ZU1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQTIxQUNBOTQyMDBCREUxNzQg
LyogR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQ
VVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0MyMUFDQTk0MjAw
QkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGV2
aWNlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNEMjFBQ0E5
NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDA4N0NFM0UyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU3dhcENoYWluTWV0YWwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwODdDRTNGMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0
YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVUZXh0dXJlTWV0YWwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTQwMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZU1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNDIyNDA2MDFEMDBG
M0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzM1MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQw
IC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDg5MDMzODIyNDA2Mjg5MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4
OTAzMzkyMjQwNjQyRDAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQTIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0
ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29t
cHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRlUGlw
ZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzM0MyMjQx
QTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVDb21wdXRlUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4
OTAzM0QyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDg5MDMzRTIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDM0MDIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21w
dXRlUGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4
QUEwMkQyMjBEMEI5QzAwNThDNTAyIC8qIEdQVUxvYWRPcC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVTG9hZE9wLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMkYyMjBEMEJENTAwNThDNTAy
IC8qIEdQVUxvYWRPcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMb2FkT3AuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3Au
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEdQVVN0b3JlT3AuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDhBQTAzMjIyMEQwRDBCMDA1OEM1MDIgLyogR1BVU3RvcmVPcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVTdG9yZU9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM2MjIwRDE5
REEwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogR1BV
Q2FudmFzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVD
YW52YXNDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0Nv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVQ2FudmFzQ29udGV4dC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA1MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBQzAwNjIzMTcxRjUyMDAx
ODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFu
ZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMEIyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQ
VURldmljZUV2ZW50SGFuZGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZBRkYyMkQwMkU1MzAwQzQ1MzhD
IC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAxMjJE
MDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwOUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvckZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwMzIyRDQwQ0M1MDBDNDUzOEMgLyogV2ViR1BV
RGV2aWNlRXJyb3JTY29wZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8q
IEdQVUVycm9yRmlsdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVFcnJvckZpbHRlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDlBRkIwODIyRDU1NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIw
QzIyRDU1RTkwMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWYWxp
ZGF0aW9uRXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwRDIy
RDU1RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVZhbGlkYXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIw
RTIyRDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVT3V0T2ZNZW1vcnlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0
MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NjIwOTJBMEE2MDBFMEMyNTkgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMEEzQTczMDE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MjIyMzA5
RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
U2FtcGxlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIy
NjMyMjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVT
YW1wbGVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURC
MjY4MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNh
bXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkIyMjMwQUNDMDAw
QTIyOTM1IC8qIEdQVVNhbXBsZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNh
bXBsZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkMyMjMw
QkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2Ft
cGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RDIyMzBCQjhFMDBB
MjI5MzUgLyogV2ViR1BVU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTYW1w
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkYyMjMwQzFGMTAw
QTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI3RTIyMzJGMEMwMDBBMjI5MzUgLyogV2Vi
R1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjdGMjIzMkYx
NzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJRDBB
REIyOEEyMjM3NzM2MTAwQTIyOTM1IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QjIyMzc4NDJFMDBBMjI5MzUg
LyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29sb3JTdGF0
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyOEMyMjM3
ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xv
clN0YXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1
NTY2MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1h
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlYXRlTGlua0Nv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQTIyNEVDNjI0
MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJsZW5k
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQjIyNEVD
NjI0MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCbGVuZERlc2Ny
aXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBRDIyNEVDRTIw
MDA2MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvcldyaXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFFMjI0RUNFMjAwMDYxMDQ5
QyAvKiBHUFVDb2xvcldyaXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvcldyaXRlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRH
cm91cExheW91dEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJDNTQ0ODE0NDNBQzRBMDBF
MTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9T
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1h
bmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBG
MDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwQkUxMDRBMjFFNjg3MkYwMEU0MkE4OSAvKiBHUFVCdWZmZXJCaW5kaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVUJ1ZmZlckJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGlu
Zy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91
cEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MDIxRTY5RjgzMDBFNDJBODkgLyogV2Vi
R1BVQmluZEdyb3VwQmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAv
KiBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cERl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTIyMUU2QUEw
RDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEJFMTA1MzIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQkUxMDVFMjFFNkJBRDMwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBCRTEwNjIyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVQmluZEdyb3VwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBD
NDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8q
IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYyMjE4M0VGRUMw
MDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBl
bGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGODIxODQwNERBMDA5
RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0
MTlGOTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVJlbmRlclBpcGVsaW5lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBD
QUFENTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVT3JpZ2luM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBD
Q0E5NEEyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPcmlnaW4z
RC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDY5QzlDMjIyRTAwQzIwMDMy
OTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBENjlDOUQyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdy
b3VwTGF5b3V0QmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDg3MjFCNjRDQUEwMDNDOTgzQyAv
KiBHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEMyMUI3MDY3NjAwM0M5
ODNDIC8qIFdlYkdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCdWZmZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEQyMUI3MDY3NjAwM0M5ODNDIC8qIFdl
YkdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2Vi
R1BVQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEQ4NjQ5MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BVQnVmZmVyTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTIyMUI3NjBGMjAwM0M5ODNDIC8qIEdQVUJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBEODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBEODY0OTYyMUJBMThGNDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5ODIxQkExOUE3MDAzQzk4M0MgLyogR1BV
VmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRv
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDk5MjFCQTFCMUYwMDND
OTgzQyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2
NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUy
QUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFp
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU2MjE3OTMwRTIwMDdG
RTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBH
UFVTaGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJTdGFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hh
ZGVyU3RhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21t
YW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1
QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NDIxOTNCMDJFMDAwRkE3
NUMgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBX
ZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NjIxOTNCMDJFMDAwRkE3NUMgLyog
V2ViR1BVVGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJl
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEVBQ0Y4ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVy
ZVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4OTIxOTNFRTRFMDAwRkE3NUMgLyogV2Vi
R1BVVGV4dHVyZVZpZXcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEMyMTk0MDNDOTAwMEZBNzVDIC8qIFdlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhFMjE5NDBBMjIw
MDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVB
Q0Y4RjIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTEyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjky
MjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0ZBRTIxOUUz
MEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZUZvcm1h
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcyMTQzRTMwM0MwMDI4
RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5ODIyMDM5MUMzMDAxMTgwNTggLyogV0hM
U0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWZXJ0
ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBGNzU1OTkyMjAzOTFDMzAwMTE4MDU4IC8qIFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBGNzU1OUYyMjAzQkExNDAw
MTE4MDU4IC8qIEdQVUxpbWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMaW1pdHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVDMTFGOEM0NUEwMDdF
NzRFMCAvKiBQaW5nTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBp
bmdMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDJDREI1RUQ2MzhGNDNB
Rjg2RjA3QUEyIC8qIEpTRXJyb3JFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Vycm9yRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTkxNjUsMTAzICsxODc1MCw2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJ
CQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1Qg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUyOTE0QzJD
MjJGOTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmggKi8sCi0JCQkJMUM4
NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8sCi0JCQkJQzIx
QkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCi0J
CQkJQzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCi0JCQkJ
QzIxQkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAq
LywKLQkJCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLywKLQkJCQlD
MjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LywKLQkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAq
LywKLQkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovLAotCQkJ
CUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8sCi0J
CQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKLQkJCQlDMjEz
OEExMzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovLAotCQkJ
CUMyMUJGNzIyMjFDRDg5REYwMDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oICovLAot
CQkJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmgg
Ki8sCi0JCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNz
aW9uLmggKi8sCi0JCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUu
aCAqLywKLQkJCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZhdWx0RGVsZXRl
LmggKi8sCi0JCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VF
eHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMRG90
RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERv
V2hpbGVMb29wLmggKi8sCi0JCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAotCQkJCTFDODQwQjdEMjFFQkUwQjgwMEQw
NTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCi0JCQkJQzIxQkY3MjAyMUNEODlERDAw
MjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjYy
MUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKLQkJCQlDMjFC
RjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAq
LywKLQkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyogV0hMU0xFeHByZXNzaW9uLmNwcCAq
LywKLQkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywK
LQkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywK
LQkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNw
cCAqLywKLQkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmggKi8sCi0JCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9yTG9vcC5o
ICovLAotCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmli
dXRlLmggKi8sCi0JCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1
bmN0aW9uRGVmaW5pdGlvbi5oICovLAotCQkJCTUyMkRBM0QzMjI5RTFEMzkwMDQyRDE1MSAvKiBX
SExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCi0JCQkJQzIxQkY2RkYyMUNEODlDMjAw
MjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAy
Mjc5NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjBGNEY2NjIxREZGMjM2
MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0JCQkJQzIxQkY2RjgyMUNE
ODlCQjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLywKLQkJCQkxQ0I2OUIzOTIx
REYwM0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFD
QjY5QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovLAot
CQkJCUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgg
Ki8sCi0JCQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJl
c3Npb24uaCAqLywKLQkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5
IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8sCi0JCQkJMUMzMzI3NzEyMUNGMEJF
MTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8sCi0JCQkJQzIzOThFQkQyMzBBMUI3NjAw
NjQxNTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3
OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzJB
MjFDRDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAotCQkJ
CUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZS5oICovLAotCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJU
eXBlLmggKi8sCi0JCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdI
TFNMUXVhbGlmaWVyLmggKi8sCi0JCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNM
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIy
Nzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQkzMzUxRjcwQjIyQ0FEOERBMDAx
NUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovLAotCQkJCTFDQjY5QjMyMjFERUQ0MEIwMDZF
ODQ2QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8sCi0JCQkJQzIxMzhBMTUyMURERUNFOTAw
RjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MDgyMUNE
ODlDOTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzAz
MjFDRDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovLAotCQkJCUMyMUJGNkY5MjFDRDg5
QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8sCi0JCQkJQzIxMzhBMTYyMURERUNGQjAw
RjUxNkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLywKLQkJ
CQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBX
SExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3
OSAvKiBXSExTTFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAv
KiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjZGRTIxQ0Q4OUMxMDAy
Mjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MTkyMUNEODlE
NzAwMjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovLAotCQkJCUMyMUJGNzMxMjFDRDg5RUUw
MDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzFDMjFDRDg5
REEwMDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MUQy
MUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMyODhDNzJEMjFDOTkxREEw
MDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJQzIxQkY3MTEyMUNEODlE
MTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJQzIxQkY3MjkyMUNEODlF
NjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjBGNEY2NDIxREZC
RTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKLQkJCQlDMjFCRjcxRjIx
Q0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCi0JCQkJN0M4NUIyMDEy
MkZCMDQ4NTAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGUuY3BwICovLAotCQkJCTFDMzMyNzcy
MjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8sCi0JCQkJN0M4NUIyMDQy
MkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8sCi0JCQkJQzIwRjRG
NjcyMURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8s
Ci0JCQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5oICovLAotCQkJCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0NkEg
LyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzEwMjFD
RDg5RDAwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFC
RjcxNDIxQ0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dC5oICovLAotCQkJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVm
ZXJlbmNlLmggKi8sCi0JCQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVM
b29wLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEFTVDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7Ci0JCX07CiAJCTFDREQ0NDY2MEJBOUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTI4MSwyOCAr
MTg3NjksNiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OwotCQkx
Q0VDQjNBRDIxRjJCOTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAgKi8sCi0JCQkJMUNFQ0IzQkIyMUY1MTFBQTAwRjQ0
NTQyIC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggKi8sCi0JCQkJMUNFQ0IzQUYyMUYy
Qjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovLAotCQkJCTFDRUNCM0Iy
MjFGMkI5ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8sCi0JCQkJN0M3Qzc2
OUMyMkY2N0VDRDAwMzJCQ0NEIC8qIFdITFNMTWFuZ2xlZE5hbWVzLmggKi8sCi0JCQkJMUNFQ0Iz
QjUyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLywKLQkJ
CQkxQ0VDQjNCNjIxRjUwQUM3MDBGNDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCAq
LywKLQkJCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldy
aXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hM
U0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLywKLQkJCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIg
LyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8sCi0JCQkJMUNFQ0IzQjEyMUYyQjk4NTAwRjQ0
NTQyIC8qIFdITFNMVHlwZU5hbWVyLmNwcCAqLywKLQkJCQkxQ0VDQjNCMDIxRjJCOTg1MDBGNDQ1
NDIgLyogV0hMU0xUeXBlTmFtZXIuaCAqLywKLQkJCQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgwNTgg
LyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovLAotCQkJCUQwRjc1NTk4
MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oICov
LAotCQkJKTsKLQkJCXBhdGggPSBNZXRhbDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCTFEMDAyNjlBMjM3NEI5RjgwMENBNkNERiAvKiBQaWN0dXJlSW5QaWN0dXJlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwNTAxLDgwICsxOTk2
Nyw2IEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwotCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewotCQkJaXNhID0gUEJY
R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyog
Y29jb2EgKi8sCi0JCQkJRDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5o
ICovLAotCQkJCUQwNjVCRTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0
b3IuaCAqLywKLQkJCQlEMEJFMTA0RTIxRTY5NUUyMDBFNDJBODkgLyogR1BVQmluZEdyb3VwQmlu
ZGluZy5oICovLAotCQkJCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJpbmRH
cm91cExheW91dC5oICovLAotCQkJCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVu
ZERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BVQnVm
ZmVyLmNwcCAqLywKLQkJCQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmgg
Ki8sCi0JCQkJRDBCRTEwNEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAq
LywKLQkJCQlEMEQ4NjQ4NzIxQjY0Q0FBMDAzQzk4M0MgLyogR1BVQnVmZmVyRGVzY3JpcHRvci5o
ICovLAotCQkJCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICov
LAotCQkJCUQwMDFEOUFCMjFCMEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovLAotCQkJCUQw
QURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oICovLAot
CQkJCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmggKi8sCi0JCQkJ
MzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQlE
MDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8sCi0JCQkJ
RDA4OTAzM0YyMjQxQ0U0NjAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovLAot
CQkJCUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUuaCAqLywK
LQkJCQlEMDg5MDMzOTIyNDA2NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5oICovLAotCQkJCUQwM0M4NDlBMjFGRkM2NjcwMDAyMjI3RiAvKiBHUFVEZXB0aFN0ZW5j
aWxTdGF0ZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhCRjIxQTRDMkYxMDBFQjE5OUQgLyog
R1BVRGV2aWNlLmNwcCAqLywKLQkJCQkzMTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2
aWNlLmggKi8sCi0JCQkJRDA5QUZCMDgyMkQ1NTQyODAwQzQ1MzhDIC8qIEdQVUVycm9yLmNwcCAq
LywKLQkJCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJ
CUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5oICovLAotCQkJCUQwOUFGQjAy
MjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICovLAotCQkJCUQwMzU4NkIyMjJE
N0YyRUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5jcHAgKi8sCi0JCQkJRDAzNTg2QjEyMkQ3
RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmggKi8sCi0JCQkJRDAyNkY0N0QyMjBBMkFD
NjAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8sCi0JCQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4
MDU4IC8qIEdQVUxpbWl0cy5oICovLAotCQkJCUQwOEFBMDJGMjIwRDBCRDUwMDU4QzUwMiAvKiBH
UFVMb2FkT3AuaCAqLywKLQkJCQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0
QmFzZS5oICovLAotCQkJCUQwOUFGQjE5MjJENjY5OEEwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9y
eUVycm9yLmggKi8sCi0JCQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQVVBpcGVsaW5l
LmNwcCAqLywKLQkJCQk5MTg2RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAq
LywKLQkJCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oICovLAotCQkJCUQwMDMyODg3MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxh
eW91dC5jcHAgKi8sCi0JCQkJRDAwMzI4ODYyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5l
TGF5b3V0LmggKi8sCi0JCQkJRDAwMzI4ODQyMUM5QTIwRDAwNjIyQUE2IC8qIEdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5oICovLAotCQkJCUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBH
UFVQbGF0Zm9ybVR5cGVzLmggKi8sCi0JCQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThDIC8qIEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMDMyMTFDRjIxQUM5NTRFMDA3
NjNDRjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhDMjIx
QTRDMkYzMDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8sCi0J
CQkJMzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi8sCi0JCQkJRDAzMjEx
RDAyMUFDOTU0RjAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCi0JCQkJ
RDAzMjExQ0UyMUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8sCi0J
CQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0J
CQkJMzEyRkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oICovLAotCQkJCUQwNkE5QTIxMjIwMjZDN0EwMDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaCAqLywKLQkJCQlEMEFEQjI2ODIyMzBBQUNCMDBBMjI5MzUgLyogR1BVU2FtcGxl
ci5oICovLAotCQkJCUQwQURCMjYyMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3Jp
cHRvci5oICovLAotCQkJCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1
bGUuaCAqLywKLQkJCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oICovLAotCQkJCUQwOEFBMDMyMjIwRDBEMEIwMDU4QzUwMiAvKiBHUFVTdG9y
ZU9wLmggKi8sCi0JCQkJMzEyRkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5o
ICovLAotCQkJCUQwQURCMjdGMjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmggKi8sCi0JCQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAq
LywKLQkJCQlEMDI2RjQ4QzIyMEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3Iu
aCAqLywKLQkJCQkzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5o
ICovLAotCQkJCUQwMjZGNDg1MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAq
LywKLQkJCQlEMDZFRjU1MjIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLywKLQkJCQlE
MDlBRkIwRTIyRDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLywKLQkJ
CQlEMDlBRkIwRDIyRDU1RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8sCi0J
CQkJRDBEODY0OUIyMUJBMUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3IuaCAqLywKLQkJCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvci5oICovLAotCQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0
ZXhJbnB1dERlc2NyaXB0b3IuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gZ3B1OwotCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNh
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0MzM0LDcg
KzIzNzI2LDYgQEAKIAkJCQk1N0Q4NDYyQTFGRUFGNTdGMDBDQTM2ODIgLyogd2ViYXV0aG4gKi8s
CiAJCQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAogCQkJCTk5
NkU1OURBMURGMDBENDUwMDY2MTJCOSAvKiB3ZWJkcml2ZXIgKi8sCi0JCQkJRDAwRjU5M0UyMTZF
Q0M0MzAwMEQ3MURCIC8qIHdlYmdwdSAqLywKIAkJCQk5N0FBQkNGNzE0RkEwOUI1MDA3NDU3QUUg
Lyogd2Vic29ja2V0cyAqLywKIAkJCQlFMUVFOEFDNjI0MTJCMTZGMDBFNzk0RDYgLyogd2VieHIg
Ki8sCiAJCQkpOwpAQCAtMjcwMjIsNyArMjY0MTMsNiBAQAogCQkJCUNEOUQ4MjdDMUM3QkIyRUQw
MDZGRjA2NiAvKiBjdiAqLywKIAkJCQkwRkU1RkJDOTFDM0RENTA2MDAwN0EyQ0EgLyogZGlzcGxh
eWxpc3RzICovLAogCQkJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAot
CQkJCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8sCiAJCQkJNDQxQUYwQTcwRUJB
N0JCRjAwNDRFRDRCIC8qIGlvcyAqLywKIAkJCQlDRDg5MkY1QTFGQjUyQUNGMDA5MzMzRDIgLyog
aXNvICovLAogCQkJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0RiAvKiBtYWMgKi8sCkBAIC0yNzQ1
OSw4ICsyNjg0OSw2IEBACiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKIAkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAogCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAotCQkJCTMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXll
ci5oICovLAotCQkJCTMxODQzNkREMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5tbSAq
LywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29j
b2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EubW0gKi8sCiAJCQkpOwpAQCAtMjgzMTksODQgKzI3NzA3LDYgQEAKIAkJCW5hbWUg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDMjEwRTkwRDIxQjRC
Q0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxk
cmVuID0gKAotCQkJCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8sCi0JCQkJMUNF
Q0IzQUQyMUYyQjk2NDAwRjQ0NTQyIC8qIE1ldGFsICovLAotCQkJCUMyMEY4OEFBMjI5NjZCMEUw
MEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8sCi0JCQkJQzIwRjg4QUMyMjk2NkIwRjAw
RDYxMEZBIC8qIFdITFNMQVNURHVtcGVyLmggKi8sCi0JCQkJMUM2Qjk1REQyMkM4NThBNDAwRTZG
MTRGIC8qIFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAqLywKLQkJCQlD
MjM0QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5j
cHAgKi8sCi0JCQkJQzIzNEE5QUUyMUU5MkMxQTAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNh
dGVGdW5jdGlvbnMuaCAqLywKLQkJCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xD
aGVja2VyLmNwcCAqLywKLQkJCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVj
a2VyLmggKi8sCi0JCQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZl
cmVuY2VUeXBlcy5jcHAgKi8sCi0JCQkJNTI0QkQ0ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNM
Q2hlY2tSZWZlcmVuY2VUeXBlcy5oICovLAotCQkJCTFDMjgxQzZEMjJCODdCOTgwMDY5MUMwMCAv
KiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwICovLAotCQkJCTFDMjgxQzZFMjJCODdC
OTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCAqLywKLQkJCQk1MjJC
QUI5NjIyRTZBMzYyMDBDNTRDRTkgLyogV0hMU0xDb2RlTG9jYXRpb24uaCAqLywKLQkJCQkxQzg2
Q0E0QjIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgKi8sCi0J
CQkJMUM4NkNBNEMyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCAq
LywKLQkJCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIgLyogV0hMU0xFcnJvci5oICovLAotCQkJ
CTFDQTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNw
cCAqLywKLQkJCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5oICovLAotCQkJCTFDODQwQjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhl
ckVudHJ5UG9pbnRJdGVtcy5jcHAgKi8sCi0JCQkJMUM4NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8q
IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmggKi8sCi0JCQkJMUM5QUU1Q0EyMUVEOURGNTAw
NjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8sCi0JCQkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovLAotCQkJCUMyMzRBOTlB
MjFFOTBGNTYwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuY3BwICovLAotCQkJCUMyMzRBOTlC
MjFFOTBGNTcwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuaCAqLywKLQkJCQlDMjM0QTlCNzIx
RTkyQ0MxMDAzQzk4NEQgLyogV0hMU0xJbnRyaW5zaWNzLmNwcCAqLywKLQkJCQlDMjM0QTlCNjIx
RTkyQ0MwMDAzQzk4NEQgLyogV0hMU0xJbnRyaW5zaWNzLmggKi8sCi0JCQkJQzIxMEU5MTEyMUI0
QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuY3BwICovLAotCQkJCUMyMTBFOTEyMjFCNEJEMTAw
MEI3RjgzRCAvKiBXSExTTExleGVyLmggKi8sCi0JCQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYw
IC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCAqLywKLQkJCQkxQ0EwQzJFQTIxRUVENkY1
MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTk4RDIx
RTg4ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8sCi0JCQkJQzIzNEE5OEUy
MUU4ODg4NTAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLywKLQkJCQlDMjM0QTk4QTIx
RTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovLAotCQkJCUMyMzRBOThD
MjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovLAotCQkJCTUyMjU2Q0FB
MjMwRjE0QUQwMDQzRTEyRiAvKiBXSExTTE5hbWVTcGFjZS5oICovLAotCQkJCUMyMUJGNzM3MjFD
RDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8sCi0JCQkJQzIxQkY3MzgyMUNEOEEw
MzAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8sCi0JCQkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4
MTUwIC8qIFdITFNMUGFyc2luZ01vZGUuaCAqLywKLQkJCQlDMjRBNTdBRjIxRkFENTNGMDA0QzZE
RDEgLyogV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKLQkJCQlDMjRBNTdCQTIxRkVBRkVB
MDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmNwcCAqLywKLQkJCQlDMjRBNTdCQjIxRkVBRkVBMDA0
QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8sCi0JCQkJNTIyRTFBMTcyMjk3RDZENDAwRTVEMzZB
IC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8sCi0JCQkJNTIyRTFBMTky
Mjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovLAot
CQkJCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKLQkJCQkx
Q0FBODJGNjIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLywK
LQkJCQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgg
Ki8sCi0JCQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJNTI2QjNGMDMyMkZCN0JERTAw
NzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5o
ICovLAotCQkJCTFDQTBDMkUwMjFFRUI1RjUwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuY3BwICovLAotCQkJCTFDQTBDMkRFMjFFRUI1RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lv
bkNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTlBRDIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xSZWN1
cnNpdmVUeXBlQ2hlY2tlci5jcHAgKi8sCi0JCQkJQzIzNEE5QUIyMUU5MkMxODAwM0M5ODREIC8q
IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTk5OTIxRTkwRjI5MDAz
Qzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCAqLywKLQkJCQlDMjM0QTk5NzIx
RTkwRjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8sCi0JCQkJQzIz
NEE5OUQyMUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovLAotCQkJCTFD
NTlCMDE4MjIzODY4NzkwMDg1MzgwNSAvKiBXSExTTFNjb3BlZFNldEFkZGVyLmggKi8sCi0JCQkJ
QzI0QTU3QjIyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcCAqLywK
LQkJCQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuaCAq
LywKLQkJCQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnku
dHh0ICovLAotCQkJCTFDREFCRDZCMjJDODQ3OUEwMEJEMEEzQSAvKiBXSExTTFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLmggKi8sCi0JCQkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEyNUYzIC8qIFdI
TFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLywKLQkJCQkxQzhEMjZDOTIyQzA5NDUz
MDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCAqLywKLQkJCQkxQ0VD
QjNBOTIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3Bw
ICovLAotCQkJCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5
bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovLAotCQkJCUMyMzRBOUIxMjFFOTJDMUQwMDNDOTg0
RCAvKiBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCAqLywKLQkJCQlDMjM0QTlCMzIxRTky
QzIxMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwICov
LAotCQkJCUMyMzRBOUFDMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJh
dGlvbkZ1bmN0aW9ucy5oICovLAotCQkJCUMyMzRBOTg1MjFFODg2QTkwMDNDOTg0RCAvKiBXSExT
TFZpc2l0b3IuY3BwICovLAotCQkJCUMyMzRBOTg3MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZp
c2l0b3IuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gV0hMU0w7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjg4ODEsMTc4ICsyODE5
MSw2IEBACiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
LQkJRDAwRjU5M0UyMTZFQ0M0MzAwMEQ3MURCIC8qIHdlYmdwdSAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzIxMEU5MEQyMUI0QkNBNDAwQjdGODNEIC8q
IFdITFNMICovLAotCQkJCUQwQjhCQjAxMjFDNDZFNzgwMDBDNzY4MSAvKiBHUFVCaW5kR3JvdXBM
YXlvdXRCaW5kaW5nLmggKi8sCi0JCQkJRDBENjlDOUYyMjJFMDE1RTAwMzI5MjdFIC8qIEdQVUJp
bmRHcm91cExheW91dEJpbmRpbmcuaWRsICovLAotCQkJCUQwRDY5QzlDMjIyRTAwQzIwMDMyOTI3
RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBENjlDOUQyMjJF
MDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsICovLAotCQkJ
CUQwQjU2RUFCMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaWRsICovLAot
CQkJCUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2QyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCAq
LywKLQkJCQlEMDFCODExQzIyMTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRsICov
LAotCQkJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmNwcCAq
LywKLQkJCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5oICov
LAotCQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmlkbCAq
LywKLQkJCQlEMDFCODExMjIyMTI1QUZDMDA2MjdCNkMgLyogR1BVQ29sb3IuaWRsICovLAotCQkJ
CUQwQURCMjhDMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwg
Ki8sCi0JCQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaWRsICov
LAotCQkJCUQwM0M4NDlFMjFGRkNGMDAwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVuY3Rpb24uaWRs
ICovLAotCQkJCUQwM0M4NEEyMjFGRkQ3MjMwMDAyMjI3RiAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0
ZURlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwOUFGQjA2MjJENDE3QjMwMEM0NTM4QyAvKiBHUFVF
cnJvckZpbHRlci5pZGwgKi8sCi0JCQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4
dGVudDNELmlkbCAqLywKLQkJCQlEMDhBQTAyRDIyMEQwQjlDMDA1OEM1MDIgLyogR1BVTG9hZE9w
LmlkbCAqLywKLQkJCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAq
LywKLQkJCQlEMENDQTk0QTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovLAot
CQkJCUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbCAq
LywKLQkJCQlEMDJDMjY5MjIxODE0MTZEMDBEODE4RTQgLyogR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zLmlkbCAqLywKLQkJCQlEMEFEQjI2MzIyMzA5RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRl
c2NyaXB0b3IuaWRsICovLAotCQkJCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFk
ZXJTdGFnZS5oICovLAotCQkJCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJT
dGFnZS5pZGwgKi8sCi0JCQkJRDA4QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3Au
aWRsICovLAotCQkJCUQwMjZGNDhCMjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3Jp
cHRvci5pZGwgKi8sCi0JCQkJRDBFQUNGQUUyMTlFMzBGRDAwMEZBNzVDIC8qIEdQVVRleHR1cmVG
b3JtYXQuaWRsICovLAotCQkJCUQwMjZGNDgzMjIwQTQ3MkYwMEFDNUY0OSAvKiBHUFVUZXh0dXJl
VXNhZ2UuaWRsICovLAotCQkJCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1
cmVkRXJyb3JFdmVudC5jcHAgKi8sCi0JCQkJRDA5QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmggKi8sCi0JCQkJRDA5QUMwMDcyMzE3MUY1MjAwMTg3NzYy
IC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCAqLywKLQkJCQlEMDlBRkIwQzIyRDU1RTkw
MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5NjIxQkEx
OEY0MDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJ
RDBEODY0OTgyMUJBMTlBNzAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRs
ICovLAotCQkJCUQwRDg2NDk0MjFCQTE3M0QwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IuaWRsICovLAotCQkJCUQwMDQ4N0VCMjI3NDI4MTIwMEVFRDdEOSAvKiBOYXZpZ2F0b3Ir
R1BVLmlkbCAqLywKLQkJCQlEMDA0ODdFRDIyNzQyODEzMDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BV
LmNwcCAqLywKLQkJCQlEMDA0ODdFRTIyNzQyODE0MDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmgg
Ki8sCi0JCQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5jcHAgKi8sCi0JCQkJ
RDAwRjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovLAotCQkJCUQwMEY1OTQ4MjE2
RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovLAotCQkJCUQwMEY1OTUwMjE2RkZBQzIwMDBE
NzFEQiAvKiBXZWJHUFVBZGFwdGVyLmNwcCAqLywKLQkJCQlEMDBGNTk0RjIxNkZGQUMyMDAwRDcx
REIgLyogV2ViR1BVQWRhcHRlci5oICovLAotCQkJCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAv
KiBXZWJHUFVBZGFwdGVyLmlkbCAqLywKLQkJCQlEMEJFMTA2MTIxRTZDMEVCMDBFNDJBODkgLyog
V2ViR1BVQmluZEdyb3VwLmNwcCAqLywKLQkJCQlEMEJFMTA2MDIxRTZDMEVCMDBFNDJBODkgLyog
V2ViR1BVQmluZEdyb3VwLmggKi8sCi0JCQkJRDBCRTEwNjIyMUU2QzBFQjAwRTQyQTg5IC8qIFdl
YkdQVUJpbmRHcm91cC5pZGwgKi8sCi0JCQkJRDBCRTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8qIFdl
YkdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLywKLQkJCQlEMEJFMTA1MDIxRTY5RjgzMDBFNDJBODkg
LyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwgKi8sCi0JCQkJRDA4NDAzM0QyMjFFMTg2NDAw
MDA3MjA1IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQkUxMDUy
MjFFNkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8sCi0JCQkJ
RDBCRTEwNTMyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRs
ICovLAotCQkJCUQwMDMyODdBMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlv
dXQuY3BwICovLAotCQkJCUQwMDMyODc5MjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3Jv
dXBMYXlvdXQuaCAqLywKLQkJCQlEMDAzMjg3QjIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0LmlkbCAqLywKLQkJCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2Vi
R1BVQnVmZmVyLmNwcCAqLywKLQkJCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BV
QnVmZmVyLmggKi8sCi0JCQkJRDBEODY0OEUyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZl
ci5pZGwgKi8sCi0JCQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJp
bmRpbmcuaCAqLywKLQkJCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVy
QmluZGluZy5pZGwgKi8sCi0JCQkJRDA1REQ2REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwICovLAotCQkJCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJH
UFVDb21tYW5kQnVmZmVyLmggKi8sCi0JCQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdl
YkdQVUNvbW1hbmRCdWZmZXIuaWRsICovLAotCQkJCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAv
KiBXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8sCi0JCQkJRDBFQUNGNzYyMTkzNzIyODAwMEZB
NzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmggKi8sCi0JCQkJRDBFQUNGNzgyMTkzNzIyODAw
MEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLywKLQkJCQlEMDBENzdGRTIyNDJF
RDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMDBE
NzdGRDIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8sCi0J
CQkJRDAwRDc3RkYyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5p
ZGwgKi8sCi0JCQkJRDA4OTAzM0QyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBl
bGluZS5jcHAgKi8sCi0JCQkJRDA4OTAzM0MyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1
dGVQaXBlbGluZS5oICovLAotCQkJCUQwODkwMzNFMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVD
b21wdXRlUGlwZWxpbmUuaWRsICovLAotCQkJCUQwODkwMzM4MjI0MDYyODkwMEYzRjQ0MCAvKiBX
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMDg5MDMzNDIyNDA2
MDFEMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwODkwMzM1MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yLmlkbCAqLywKLQkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNl
LmNwcCAqLywKLQkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmgg
Ki8sCi0JCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8s
Ci0JCQkJRDA5QUZCMDEyMkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVz
LmNwcCAqLywKLQkJCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJy
b3JTY29wZXMuaCAqLywKLQkJCQlEMDlBRkIwMzIyRDQwQ0M1MDBDNDUzOEMgLyogV2ViR1BVRGV2
aWNlRXJyb3JTY29wZXMuaWRsICovLAotCQkJCUQwOUFDMDBBMjMxNzM1QkUwMDE4Nzc2MiAvKiBX
ZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaCAqLywKLQkJCQlEMDlBQzAwQjIzMTczNUJFMDAxODc3
NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCAqLywKLQkJCQk5MTg2RjNCNjIzMjlG
QjRFMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovLAotCQkJCTkxODZGM0I3MjMyOUZC
NEYwMEFGRjg1NyAvKiBXZWJHUFVQaXBlbGluZS5oICovLAotCQkJCUQwQzQxOUYwMjE4M0VCMzEw
MDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0JCQkJRDBDNDE5
RjEyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsICov
LAotCQkJCUQwNUE5OUU1MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5j
cHAgKi8sCi0JCQkJRDA1QTk5RTQyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5
b3V0LmggKi8sCi0JCQkJRDA1QTk5RTYyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5l
TGF5b3V0LmlkbCAqLywKLQkJCQlEMDA0ODdEMjIyNDU3QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMDVBOTlFMTIxQzlCNTBGMDAwMzJC
NzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA1QTk5RTIy
MUM5QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8s
Ci0JCQkJRDBFQUNGOTIyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y5MzIxOTQwQTVCMDAwRkE3NUMg
LyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsICovLAotCQkJCUQwODkwMzM3MjI0
MDYxQUMwMEYzRjQ0MCAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwICov
LAotCQkJCUQwQzQxOUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQkzMTJGRjkzQzIxQTYxQ0Ex
MDBFQjE5OUQgLyogV2ViR1BVUXVldWUuY3BwICovLAotCQkJCTMxMkZGOTM5MjFBNjFDOUYwMEVC
MTk5RCAvKiBXZWJHUFVRdWV1ZS5oICovLAotCQkJCTMxMkZGOTNCMjFBNjFDQTAwMEVCMTk5RCAv
KiBXZWJHUFVRdWV1ZS5pZGwgKi8sCi0JCQkJRDA4QUEwMzcyMjBEMUQwNTAwNThDNTAyIC8qIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEVBQ0Y4QzIxOTQwM0M5MDAw
RkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDhBQTAzNjIy
MEQxOURBMDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsICovLAotCQkJ
CUQwRUFDRjhGMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAg
Ki8sCi0JCQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmggKi8sCi0JCQkJRDBFQUNGOTAyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmlkbCAqLywKLQkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwICovLAotCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5oICovLAotCQkJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8sCi0JCQkJRDBBREIyOEEyMjM3NzM2MTAwQTIy
OTM1IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBDNDE5
RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICov
LAotCQkJCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaWRsICovLAotCQkJCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVT
YW1wbGVyLmNwcCAqLywKLQkJCQlEMEFEQjI2QzIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BVU2Ft
cGxlci5oICovLAotCQkJCUQwQURCMjZGMjIzMEMxRjEwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVy
LmlkbCAqLywKLQkJCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcCAqLywKLQkJCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVy
TW9kdWxlLmggKi8sCi0JCQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZS5pZGwgKi8sCi0JCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTgg
LyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBEQTBCRTUyMTc5
MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5jcHAgKi8sCi0JCQkJRDBEQTBCRTQyMTc5
MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5oICovLAotCQkJCUQwREEwQkU2MjE3OTMw
RTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovLAotCQkJCUQwMDQ4N0U1MjI2QTYz
NDIwMEVFRDdEOSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEFE
QjI3RTIyMzJGMEMwMDBBMjI5MzUgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovLAot
CQkJCUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLywKLQkJ
CQlEMEVBQ0Y4NDIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5oICovLAotCQkJCUQw
RUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLywKLQkJCQlEMEVB
Q0Y4ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuY3BwICovLAotCQkJCUQw
RUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5oICovLAotCQkJCUQw
RUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5pZGwgKi8sCi0JCQkJ
RDAwNDg3RkQyMjc3QUY4MTAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvcitHUFUuaWRsICovLAot
CQkJCUQwQ0FBRDUzMjI3N0MyQTYwMDgwMUNERiAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwICov
LAotCQkJCUQwMDQ4N0ZFMjI3N0FGODIwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuaCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gd2ViZ3B1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKLQkJRDA4N0NFMzcyMUFDQTk0MjAwQkRFMTc0IC8qIGNvY29hICovID0gewotCQkJaXNh
ID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlEMDY1QkU1ODIyRkI2MTZEMDA3NkRE
NjAgLyogR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gKi8sCi0JCQkJRDAyMzJCNTgyMUNC
NDlCNzAwOTQ4M0I5IC8qIEdQVUJpbmRHcm91cExheW91dE1ldGFsLm1tICovLAotCQkJCUQwODVF
NjRBMjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5kR3JvdXBNZXRhbC5tbSAqLywKLQkJCQlEMEQ4
NjQ5MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BVQnVmZmVyTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NF
MzgyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQlE
MDg5MDM0MDIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0g
Ki8sCi0JCQkJRDA4OTAzM0IyMjQxNzlCNTAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tICovLAotCQkJCUQwODdDRTNDMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVEZXZpY2VNZXRh
bC5tbSAqLywKLQkJCQkxQzg2Q0E0RTIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRh
bENvbnZlcnRMYXlvdXQuY3BwICovLAotCQkJCTFDODZDQTRGMjJBQTIzQzkwMDFCRjk2MSAvKiBH
UFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oICovLAotCQkJCUEzOEE4N0EzMjUzOEJFRTcw
MDM3QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLywKLQkJCQlEMDg3Q0UzQjIxQUNB
OTQyMDBCREUxNzQgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJ
CQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVldWVNZXRhbC5tbSAqLywKLQkJCQlE
MDg3Q0UzQTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAq
LywKLQkJCQlEMDg3Q0UzRDIxQUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSAqLywKLQkJCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUgLyogR1BVU2FtcGxlck1ldGFs
Lm1tICovLAotCQkJCUQwODdDRTQwMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTaGFkZXJNb2R1bGVN
ZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzRTIxQUNBOTQyMDBCREUxNzQgLyogR1BVU3dhcENoYWlu
TWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFM0YyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVN
ZXRhbC5tbSAqLywKLQkJCQlEMDZFRjU1MzIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHNNZXRh
bC5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMjg3OCwxOCArMzIwMTYsNiBA
QAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMTUxOEZDMUU3OEMxNUYwMEVDNTE0QSAvKiBHUFVCYXNlZENh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTExMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJG
RjkxMjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVRGV2aWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkz
MTJGRjkxMzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTQyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTUyMUE0QzM2
NTAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNjIxQTRD
MzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMx
MkZGOTE3MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJN
b2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE5MjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQTIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJG
RjkxQjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzEyRkY5MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2QjAwQUE3ODM0IC8qIEdyYWRp
ZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzYwNjcsNyArMzUxOTMsNiBAQAogCQkJCTBD
M0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkY5OTVBMjYxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4QXJyYXlP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3QTE3QTc4MTJGMjg2NDIwMDRFMDJGNiAvKiBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTg0MzZERTIx
QjlEQUFGMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0I3MUZBQTQ0NjIwMDM3RDFFNiAvKiBXZWJIZWFwQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzYxNDEsOSArMzUyNjYsNiBAQAogCQkJ
CTJFQkJDM0Q4MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJFOUI1RDhGMUI2NkE5NEUwMDhDNkEyNCAvKiBXaGVlbEV2ZW50RGVs
dGFGaWx0ZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFF
RiAvKiBXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUExOTU2RjI1
MjMzMUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQTE5NTZGMjQyMzMxQUQyMTAwNTdFOUQyIC8qIFdITFNMUHJvZ3JhbS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTE5NTZGMjMyMzMxQUNGMjAwNTdFOUQyIC8qIFdITFNMUmVwbGFjZVdp
dGguaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODBGNDc0MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRn
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTFEQ0IxMTY0QzM5QTgwMEQ0OUJDMSAvKiBXaWR0
aENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyog
V2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMGI1ZjhlZTIzZTkzYjg0ZjFhYTY3
M2U2OTQ4MmVlMWY2N2M3ZjA0Ni4uYzhkYjY4Nzk5Zjk2MjAwMTRjMmI0NDU3MmRkZDJhNTMyNzM4
OTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaApAQCAtMTA0LDM0ICsxMDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8oR2FtZXBhZCkgXAogICAgIG1hY3JvKEdhbWVwYWRCdXR0b24pIFwKICAgICBtYWNybyhHYW1l
cGFkRXZlbnQpIFwKLSAgICBtYWNybyhHUFUpIFwKLSAgICBtYWNybyhHUFVBZGFwdGVyKSBcCi0g
ICAgbWFjcm8oR1BVQmluZEdyb3VwKSBcCi0gICAgbWFjcm8oR1BVQmluZEdyb3VwTGF5b3V0KSBc
Ci0gICAgbWFjcm8oR1BVQnVmZmVyKSBcCi0gICAgbWFjcm8oR1BVQnVmZmVyVXNhZ2UpIFwKLSAg
ICBtYWNybyhHUFVDYW52YXNDb250ZXh0KSBcCi0gICAgbWFjcm8oR1BVQ29sb3JXcml0ZSkgXAot
ICAgIG1hY3JvKEdQVUNvbW1hbmRCdWZmZXIpIFwKLSAgICBtYWNybyhHUFVDb21tYW5kRW5jb2Rl
cikgXAotICAgIG1hY3JvKEdQVUNvbXB1dGVQYXNzRW5jb2RlcikgXAotICAgIG1hY3JvKEdQVUNv
bXB1dGVQaXBlbGluZSkgXAotICAgIG1hY3JvKEdQVURldmljZSkgXAotICAgIG1hY3JvKEdQVU91
dE9mTWVtb3J5RXJyb3IpIFwKLSAgICBtYWNybyhHUFVQaXBlbGluZUxheW91dCkgXAotICAgIG1h
Y3JvKEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVUXVldWUpIFwK
LSAgICBtYWNybyhHUFVSZW5kZXJQYXNzRW5jb2RlcikgXAotICAgIG1hY3JvKEdQVVJlbmRlclBp
cGVsaW5lKSBcCi0gICAgbWFjcm8oR1BVU2FtcGxlcikgXAotICAgIG1hY3JvKEdQVVNoYWRlck1v
ZHVsZSkgXAotICAgIG1hY3JvKEdQVVNoYWRlclN0YWdlKSBcCi0gICAgbWFjcm8oR1BVU3dhcENo
YWluKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZSkgXAotICAgIG1hY3JvKEdQVVRleHR1cmVVc2Fn
ZSkgXAotICAgIG1hY3JvKEdQVVRleHR1cmVWaWV3KSBcCi0gICAgbWFjcm8oR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQpIFwKLSAgICBtYWNybyhHUFVWYWxpZGF0aW9uRXJyb3IpIFwKICAgICBtYWNy
byhIaWdobGlnaHRSZWdpc3RlcikgXAogICAgIG1hY3JvKEhpZ2hsaWdodCkgXAogICAgIG1hY3Jv
KEhUTUxBdHRhY2htZW50RWxlbWVudCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzRi
ZTVjNTVmMzE2Zjk2NWE1N2MwZmVlNDhhZWY1ZThiYzQ2M2RiOC4uZDk2MWM1Zjk0NzVmNTBkYTIy
NjlkNGUyYzU5ZTFhMzRhNmFlYzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMzYs
OSArMzM2LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wyKQogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaCIKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVQ2Fu
dmFzQ29udGV4dC5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQ
SSkKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02Mzk0LDEwICs2MzkxLDYgQEAg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29u
dGV4dChjb25zdCBTdHJpbmcmIHR5cGUKICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4oKmNvbnRleHQpKQogICAgICAgICByZXR1cm4gUmVuZGVyaW5nQ29udGV4dCB7IFJlZlB0cjxX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0
PigqY29udGV4dCkgfSB9OwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXM8
R1BVQ2FudmFzQ29udGV4dD4oKmNvbnRleHQpKQotICAgICAgICByZXR1cm4gUmVuZGVyaW5nQ29u
dGV4dCB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7ICZkb3duY2FzdDxHUFVDYW52YXNDb250
ZXh0PigqY29udGV4dCkgfSB9OwotI2VuZGlmCiAKICAgICByZXR1cm4gUmVuZGVyaW5nQ29udGV4
dCB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4oKmNvbnRleHQpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggYzk4ZTIwNWZhZjc0ZTQ4YTZkZGZiOWVmZmVkYmUxODI3ZmVhOWYzOC4uYzRkZjAzN2IzOTQz
OWQ5MTY3Y2E3ZmEzZGMwOGI4YzViZDFlZjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMx
OCw5ICszMTgsNiBAQCB1c2luZyBSZW5kZXJpbmdDb250ZXh0ID0gVmFyaWFudDwKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJHTDIpCiAgICAgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+LAot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4s
CiAjZW5kaWYKICAgICBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiwKICAgICBS
ZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5k
ZXggNzU3NDE0MDg3YTZiY2E2MzVhM2ZjYzk1ZWZmZjZlMjRkZTNkZjI1ZS4uNjgwNGIwZjU1NmNl
NjQwMDU0NDQyMWZlZTZhZmM3NDJlY2QxZmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBA
IC0yNCw5ICsyNCw2IEBAIHR5cGVkZWYgKAogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VC
R0wyKSAmJiBFTkFCTEVfV0VCR0wyCiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBvcgotI2Vu
ZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCi0gICAgR1BV
Q2FudmFzQ29udGV4dCBvcgogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
IG9yIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgUmVuZGVyaW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggMTYwMTFhZjZlZjIzMDQ3Njk1MjU4MTE4YzY0OTJi
MGJlYTA5ZGEyYi4uMmJjZDczYzNiODM4MDZiZDFiN2UxMDllNmZjODk2N2IxYmNmOTlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTkwLDcgKzkwLDYgQEAgT3ZlcmNvbnN0cmFpbmVk
RXJyb3JFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhRW5jcnlwdGVkRXZlbnQg
Y29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYUtleU1lc3NhZ2VFdmVudCBjb25kaXRp
b25hbD1FTkNSWVBURURfTUVESUEKIFBvaW50ZXJFdmVudAotR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQgY29uZGl0aW9uYWw9V0VCR1BVCiBFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudCBjb25kaXRp
b25hbD1QSUNUVVJFX0lOX1BJQ1RVUkVfQVBJCiBYUklucHV0U291cmNlRXZlbnQgY29uZGl0aW9u
YWw9V0VCWFIKIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9V0VCWFIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGY2MGM4OTI3YTU2YmMz
NThkMTA3YjlkYjhlY2U5YTRjMzcxMjM2YzIuLjFkOGJhNjU0OThjZjY3NzdjMjdiODE4MDgzYzg0
ZWM5YzQzZDI1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpA
QCAtNTYsNyArNTYsNiBAQCBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaWRlb1Ry
YWNrTGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1hdGlvbgot
V2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFsPVdFQkdQVQogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNv
bmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDUwMTNjZWRhMDM1N2Fj
MWFkMjBlNTU2ZmYyNzc2YTMxM2NjNWVlMzYuLjc0ZjhhMmViZDcwMjU0ZGI5OGM3MmVhY2UzZjA3
NmE2MTMyOTY3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CkBAIC04MSwxMCArODEsNiBAQAogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0
LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKQEAgLTI3MCwxNCArMjY2LDYgQEAgRXhjZXB0aW9uT3I8
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENv
bnRleHQoSlNDOjoKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
ICAgICBpZiAobV9jb250ZXh0LT5pc1dlYkdQVSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzV2Vi
R1BVVHlwZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0
PiB7ICZkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0PigqbV9jb250ZXh0KSB9IH07Ci0gICAgICAg
IH0KLSNlbmRpZgotCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KQEAgLTMyMywxNSArMzExLDYgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjoKICAgICB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKGlzV2ViR1BVVHlwZShjb250ZXh0
SWQpKSB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZUNvbnRleHRXZWJHUFUoY29udGV4
dElkKTsKLSAgICAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4
dD4geyBjb250ZXh0IH0gfTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiB9CiAKQEAgLTM0OCwxMSAr
MzI3LDYgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENv
bnRleHQoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gZ2V0Q29udGV4dFdlYkdM
KEhUTUxDYW52YXNFbGVtZW50Ojp0b1dlYkdMVmVyc2lvbih0eXBlKSk7CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUo
dHlwZSkpCi0gICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR1BVKHR5cGUpOwotI2VuZGlmCi0K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDk1LDQ3ICs0NjksNiBAQCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKFdlYkdM
VmVyc2lvbiB0eXBlLAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKLXsKLSAgICByZXR1cm4gdHlwZSA9PSAiZ3B1IjsKLX0KLQotR1BVQ2FudmFzQ29u
dGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5n
JiB0eXBlKQotewotICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgSFRNTENhbnZhc0VsZW1lbnQ6Omlz
V2ViR1BVVHlwZSh0eXBlKSk7Ci0gICAgQVNTRVJUKCFtX2NvbnRleHQpOwotCi0gICAgaWYgKCFk
b2N1bWVudCgpLnNldHRpbmdzKCkud2ViR1BVRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIG1fY29udGV4dCA9IEdQVUNhbnZhc0NvbnRleHQ6OmNyZWF0ZSgqdGhpcyk7
Ci0gICAgaWYgKG1fY29udGV4dCkgewotICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJl
bmRlckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZh
cy4KLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0Kj4obV9jb250ZXh0Lmdl
dCgpKTsKLX0KLQotR1BVQ2FudmFzQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBlKQotewotICAgIEFTU0VSVF9VTlVTRUQodHlwZSwg
SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSk7Ci0KLSAgICBpZiAoIWRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS53ZWJHUFVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5pc1dlYkdQVSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1cm4g
Y3JlYXRlQ29udGV4dFdlYkdQVSh0eXBlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ2Fu
dmFzQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQotCiBib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc0JpdG1hcFJlbmRlcmVyVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgcmV0dXJuIHR5cGUgPT0gImJpdG1hcHJlbmRlcmVyIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBmNjc4ZjBlZGEzZDky
NTQ2YjY1MTFmY2MwODI5ZDNhZGI4ODYxOTNiLi4wZGQxOTBlMDA0M2NiODEyZjUyYzZjYmQwYjhh
YzY1ZmRhZTg5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBA
IC04OSwxMiArODksNiBAQCBwdWJsaWM6CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Z2V0Q29udGV4dFdlYkdMKFdlYkdMVmVyc2lvbiB0eXBlLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVz
JiYgPSB7IH0pOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBib29s
IGlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBHUFVDYW52YXNDb250ZXh0KiBjcmVh
dGVDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGdl
dENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBib29s
IGlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIEltYWdlQml0bWFwUmVu
ZGVyaW5nQ29udGV4dCogY3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFN0cmluZyYs
IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzJiYpOwogICAgIEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFN0cmluZyYs
IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzJiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAppbmRleCBjNmYxZDBmYzQwZGVlMTU0N2NmZmQ3Yzdj
Y2M0NWU3YWNiNzJhMDY2Li5hNjc3OWZkYTk5NTdkZWJmMDkyM2M3MjVhZDIzZmViMTBjNjg0M2Y3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbApAQCAtMzAsOSAr
MzAsNiBAQCB0eXBlZGVmICgKICNlbmRpZgogI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMMikgJiYg
RU5BQkxFX1dFQkdMMgogICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgb3IKLSNlbmRpZgotI2lm
IGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVQotICAgIEdQVUNhbnZhc0Nv
bnRleHQgb3IKICNlbmRpZgogICAgIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCBvciAKICAg
ICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
OTJjMDNjMTllNGY3MTY0ZThhZDg3YTg5ZWJkNmQ1MDQzZjViNWNiMi4uNzE5YjYzMWUwMjUyNjg3
ZDAzNGM2ZTQxZTFlN2ZjOTI3ZGIxYzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjQsOSArNjQsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wxKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNXZWJHTCgpIGNvbnN0IHsgcmV0dXJuIGlzV2ViR0wxKCkgfHwgaXNXZWJHTDIoKTsg
fQotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgdmlydHVhbCBib29sIGlzV2ViR1BVKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBpc0dQVUJhc2VkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwUmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCBjNTg3NGM3MDg3NDE3NzkwMjk0NThmYjkyY2VjYTZk
NDZiZjZjYTBmLi42MWY3NmMxY2Q1ODhmNjg3MWU2MGIzNWVlYjBiZDVlYWQ1ZWE1ZjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMzcsNyAr
MzcsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTYyLDcgKzYxLDYgQEAKICNpbmNsdWRlICJKU0lt
YWdlU21vb3RoaW5nUXVhbGl0eS5oIgogI2luY2x1ZGUgIkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSlNX
ZWJHUFVEZXZpY2UuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNpbmNsdWRlICJQ
YXRoMkQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCkBAIC04NSw3ICs4Myw2IEBACiAjaW5jbHVk
ZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgotI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CkBAIC0xMDEsNTMgKzk4LDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotI2lmIEVO
QUJMRShXRUJHUFUpCi1zdGF0aWMgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhc0lmQ29udGV4dE1h
dGNoZXNEZXZpY2UoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCwgV2ViR1BVRGV2aWNl
JiBkZXZpY2UpCi17Ci0gICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKSB7Ci0g
ICAgICAgIGF1dG8mIGNvbnRleHRHUFUgPSBkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0Pihjb250
ZXh0KTsKLSAgICAgICAgaWYgKGF1dG8qIHdlYkdQVVN3YXBDaGFpbiA9IGNvbnRleHRHUFUuc3dh
cENoYWluKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBncHVTd2FwQ2hhaW4gPSB3ZWJHUFVT
d2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdwdVN3YXBDaGFp
biA9PSBkZXZpY2UuZGV2aWNlKCkuc3dhcENoYWluKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGlzPEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0R1BVLmNhbnZhc0Jhc2UoKSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihj
b250ZXh0R1BVLmNhbnZhc0Jhc2UoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotI2VuZGlmCi0KIFJl
ZjxJbnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9y
Q2FudmFzKGNvbnRleHQpKTsKIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi1SZWY8SW5zcGVjdG9y
Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoZGV2aWNlKSk7Ci19Ci0j
ZW5kaWYKLQogSW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkKICAgICA6IG1faWRlbnRpZmllcigiY2FudmFzOiIgKyBJZGVudGlm
aWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQogewotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgLy8gVGhlIGFjdHVhbCAiY29udGV4dCIgZm9y
IFdlYkdQVSBpcyB0aGUgYFdlYkdQVURldmljZWAsIG5vdCB0aGUgPGNhbnZhcz4uCi0gICAgQVNT
RVJUKCFpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSk7Ci0jZW5kaWYKLX0KLQotI2lmIEVO
QUJMRShXRUJHUFUpCi1JbnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhXZWJHUFVEZXZp
Y2UmIGRldmljZSkKLSAgICA6IG1faWRlbnRpZmllcigiY2FudmFzOiIgKyBJZGVudGlmaWVyc0Zh
Y3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fY29udGV4dChkZXZpY2UpCi17CiB9
Ci0jZW5kaWYKIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpjYW52
YXNDb250ZXh0KCkgY29uc3QKIHsKQEAgLTE2NSwxOSArMTI1LDYgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4dC5jYW52YXNCYXNl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmlj
ZT4gZGV2aWNlV3JhcHBlcikgLT4gSFRNTENhbnZhc0VsZW1lbnQqIHsKLSAgICAgICAgICAgIGF1
dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNl
c0xvY2soKSB9OwotICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29u
dGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hl
c0RldmljZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjYW52YXNFbGVtZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LAotI2VuZGlm
CiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODYsMjIgKzEzMyw2IEBAIEhU
TUxDYW52YXNFbGVtZW50KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVdlYkdQVURldmlj
ZSogSW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250ZXh0KCkgY29uc3QKLXsKLSAgICBpZiAoYXV0
byogZGV2aWNlV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2Vi
R1BVRGV2aWNlPj4obV9jb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZkZXZpY2VXcmFwcGVyLT5n
ZXQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotYm9vbCBJbnNwZWN0b3JDYW52YXM6Omlz
RGV2aWNlRm9yQ2FudmFzQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KSBj
b25zdAotewotICAgIGlmIChhdXRvKiBkZXZpY2UgPSBkZXZpY2VDb250ZXh0KCkpCi0gICAgICAg
IHJldHVybiBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKGNvbnRleHQsICpkZXZpY2UpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJ
bnNwZWN0b3JDYW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKQEAgLTIwOSwxMiArMTQwLDYgQEAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5nZXQo
KTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgW10g
KHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSB7Ci0g
ICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGRldmljZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIH0sCi0j
ZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NSwxMSArMTcwLDYg
QEAgSlNDOjpKU1ZhbHVlIEluc3BlY3RvckNhbnZhczo6cmVzb2x2ZUNvbnRleHQoSlNDOjpKU0ds
b2JhbE9iamVjdCogZXhlYykgY29uc3QKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZSgpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAo
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAg
ICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZGV2aWNlV3JhcHBlci5n
ZXQoKSk7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpK
U1ZhbHVlKCk7CkBAIC0yNjQsMjEgKzE4NCw2IEBAIEhhc2hTZXQ8RWxlbWVudCo+IEluc3BlY3Rv
ckNhbnZhczo6Y2xpZW50Tm9kZXMoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgY29udGV4dCA9
IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY2FudmFz
QmFzZSgpLmNzc0NhbnZhc0NsaWVudHMoKTsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZp
Y2VXcmFwcGVyKSB7Ci0gICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdl
dCgpOwotCi0gICAgICAgICAgICBIYXNoU2V0PEVsZW1lbnQqPiBjYW52YXNFbGVtZW50Q2xpZW50
czsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgICAgICAgICAgZm9y
IChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1l
bnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0
LCBkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzRWxlbWVudENsaWVudHMu
YWRkKGNhbnZhc0VsZW1lbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBjYW52YXNFbGVtZW50Q2xpZW50czsKLSAgICAgICAgfSwKLSNlbmRp
ZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PEVsZW1lbnQqPigpOwpAQCAtMzE3LDcg
KzIyMiw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZXNldFJlY29yZGluZ0RhdGEoKQogCiAg
ICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7
Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0
b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAK
ICAgICBjb250ZXh0LT5zZXRIYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGZhbHNl
KTsKIH0KQEAgLTg0NCw3ICs3NDgsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVjb3JkQWN0
aW9uKFN0cmluZyYmIG5hbWUsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBybwogCiAgICAg
YXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6
IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAg
ICBpZiAoaXM8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KSAmJiBzaG91bGRT
bmFwc2hvdEJpdG1hcFJlbmRlcmVyQWN0aW9uKG5hbWUpKQogICAgICAgICBtX2NvbnRlbnRDaGFu
Z2VkID0gdHJ1ZTsKQEAgLTkyOCwxMSArODMxLDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNh
bnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUK
ICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfSwKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJH
UFVEZXZpY2U+KSB7Ci0gICAgICAgICAgICByZXR1cm4gUHJvdG9jb2w6OkNhbnZhczo6Q29udGV4
dFR5cGU6OldlYkdQVTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRl
KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC05OTYsMjggKzg5NCw2IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFz
OjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0
dXJlCiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQ
VURldmljZT4gZGV2aWNlV3JhcHBlcikgLT4gQ29udGV4dEF0dHJpYnV0ZXNUeXBlIHsKLSAgICAg
ICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBp
ZiAoY29uc3QgYXV0byYgb3B0aW9ucyA9IGRldmljZS5hZGFwdGVyKCkub3B0aW9ucygpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBjb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBQcm90b2NvbDo6
Q2FudmFzOjpDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAgICAg
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcG93ZXJQcmVmZXJl
bmNlID0gb3B0aW9ucy0+cG93ZXJQcmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAocG93ZXJQcmVmZXJlbmNlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBHUFVQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImxvdy1wb3dlciIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBHUFVQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0UG93ZXJQcmVmZXJlbmNlKCJo
aWdoLXBlcmZvcm1hbmNlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShjb250ZXh0QXR0cmlidXRlc1BheWxvYWQpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10g
KE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwNDksNyArOTI1LDYgQEAgUmVmPFByb3RvY29sOjpS
ZWNvcmRpbmc6OlJlY29yZGluZz4gSW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlT2JqZWN0Rm9yUmVj
b3JkaW5nKCkKIAogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CiAgICAgQVNT
RVJUKGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUx
PiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdl
YkdQVURldmljZQogCiAgICAgUHJvdG9jb2w6OlJlY29yZGluZzo6VHlwZSB0eXBlOwogICAgIGlm
IChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpKQpAQCAtMTI4MSw3ICsxMTU2
LDYgQEAgUmVmPFByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEluaXRpYWxTdGF0ZSgpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Nv
bnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMg
cmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICBhdXRvIGluaXRpYWxTdGF0ZVBheWxv
YWQgPSBQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU6OmNyZWF0ZSgpLnJlbGVhc2Uo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDhh
NDdkZWMyNWFkNmM4ODMxM2M3ZDRhZDZmMjUwOTYxYzAwNjJlZmYuLjZhOTllY2ZmNDdiNTgwZWM0
YzY5NjEwMTBmZDY1MDFmZGEzNTM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmgKQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhbnZhc0dyYWRpZW50OwpAQCAtNjAsMjAgKzU2LDEyIEBAIGNsYXNzIFR5cGVk
T01DU1NJbWFnZVZhbHVlOwogY2xhc3MgSW5zcGVjdG9yQ2FudmFzIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQ2FudmFzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbnNw
ZWN0b3JDYW52YXM+IGNyZWF0ZShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZhcz4gY3JlYXRlKFdlYkdQVURl
dmljZSYpOwotI2VuZGlmCiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNh
bnZhc0NvbnRleHQoKSBjb25zdDsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzRWxlbWVu
dCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBXZWJHUFVEZXZpY2UqIGRldmlj
ZUNvbnRleHQoKSBjb25zdDsKLSAgICBib29sIGlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChDYW52
YXNSZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7Ci0jZW5kaWYKLQogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIEpTQzo6SlNW
YWx1ZSByZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CkBAIC0xMTUs
OSArMTAzLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckNhbnZhcyhDYW52
YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBJbnNwZWN0b3JD
YW52YXMoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYKIAogICAgIHZvaWQgYXBwZW5kQWN0aW9uU25h
cHNob3RJZk5lZWRlZCgpOwogCkBAIC0xNTUsOSArMTQwLDYgQEAgcHJpdmF0ZToKIAogICAgIFZh
cmlhbnQ8CiAgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dD4sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxXZWJHUFVEZXZpY2U+LAotI2VuZGlmCiAgICAgICAgIE1vbm9zdGF0ZQogICAgID4gbV9jb250
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCmluZGV4IGMxMjE1MjMwNzFhMDI2ODg4Y2JkNjA4MDMxYWQxNWRjODVh
ZjE3MTkuLmZlMjA2YWVhMzVlNjc5MzNlMjAxOWZjNWFmMWU5M2FmZGEwZTM4MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5j
bHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRG
cmFtZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtODAsMTAgKzc5LDYgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIldlYkdQVVN3YXBD
aGFpbi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKQEAgLTExMjIsNDMgKzExMTcsNiBAQCBib29sIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGF1
dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQo
KSkKLSAgICAgICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVURldmljZShkZXZpY2UpOwot
fQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZp
Y2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURl
dmljZSYgZGV2aWNlKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT53aWxs
RGVzdHJveVdlYkdQVURldmljZShkZXZpY2UpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgR1BVQ2FudmFzQ29udGV4dCYgY29udGV4dEdQVSwgV2ViR1BV
U3dhcENoYWluJiBuZXdTd2FwQ2hhaW4pCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFz
QWdlbnQtPndpbGxDb25maWd1cmVTd2FwQ2hhaW4oY29udGV4dEdQVSwgbmV3U3dhcENoYWluKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVs
aW5lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVE
ZXZpY2UmIGRldmljZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmIChhdXRv
KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkp
Ci0gICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVhdGVXZWJHUFVQaXBlbGluZShkZXZpY2UsIHBp
cGVsaW5lKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
V2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBj
YW52YXNBZ2VudC0+d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShwaXBlbGluZSk7Ci19Ci0KLUlu
c3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGlu
Z0FnZW50cyhXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICByZXR1cm4gaW5zdHJ1bWVudGlu
Z0FnZW50cyhkZXZpY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLX0KLSNlbmRpZgotCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIHRhcmdl
dCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRU
aW1pbmcpCiB7CiAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggN2Q1ZTdkNTdiZjkxMWZk
ZGY5MGVkNDAwYTIyNWFmYTA4M2U2Yzg3MS4uMzFmMDVjNTBmODA1ZGI1NzliOGM5MzBiYzkwYjlm
NjFhOTJmYWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNTksMTEgKzU5LDYgQEAKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5j
bHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBDb25zb2xlTWVzc2FnZTsKIGNs
YXNzIFNjcmlwdEFyZ3VtZW50czsKQEAgLTEwNCwxMSArOTksNiBAQCBjbGFzcyBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLWNsYXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsK
LSNlbmRpZgotCiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIAogc3RydWN0IENv
bXB1dGVkRWZmZWN0VGltaW5nOwpAQCAtMzAzLDEzICsyOTMsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgaXNXZWJHTFByb2dyYW1EaXNhYmxlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGln
aHRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQVURldmlj
ZShXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmlj
ZShXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsQ29uZmlndXJlU3dhcENoYWlu
KEdQVUNhbnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGluZSYpOwot
ICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUm
KTsKLSNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxl
bWVudCYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOwogICAgIHN0YXRp
YyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CkBAIC01MTMs
MTQgKzQ5Niw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1EaXNh
YmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogICAgIHN0YXRp
YyBib29sIGlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGlj
IHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2Vi
R1BVRGV2aWNlJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVEZXZpY2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3
aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgR1BVQ2FudmFz
Q29udGV4dCYsIFdlYkdQVVN3YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdl
YkdQVVBpcGVsaW5lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BVRGV2aWNlJiwgV2Vi
R1BVUGlwZWxpbmUmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BVUGlwZWxpbmUmKTsKLSAgICBzdGF0aWMg
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhXZWJHUFVEZXZpY2UmKTsK
LSNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVm
ZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkFuaW1hdGlvbiYpOwpAQCAtMTQ3NSw0MyArMTQ1
MCw2IEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dy
YW1IaWdobGlnaHRlZChXZWJHTFJlbmRlcmluZ0NvCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShX
RUJHUFUpCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YkdQVURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50cyhkZXZpY2UpKQotICAgICAgICBkaWRDcmVhdGVXZWJHUFVEZXZpY2VJbXBsKCphZ2Vu
dHMsIGRldmljZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHMoZGV2aWNlKSkKLSAgICAgICAgd2lsbERlc3Ryb3lXZWJHUFVE
ZXZpY2VJbXBsKCphZ2VudHMsIGRldmljZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0JiBj
b250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhjb250ZXh0R1BVLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKQotICAgICAgICB3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCgqYWdlbnRzLCBj
b250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNl
LCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMoZGV2aWNlKSkKLSAgICAgICAgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKCphZ2VudHMs
IGRldmljZSwgcGlwZWxpbmUpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5l
KQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChh
dXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKHBpcGVsaW5lLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpCi0gICAgICAgIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKCphZ2Vu
dHMsIHBpcGVsaW5lKTsKLX0KLSNlbmRpZgotCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJh
bWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7
CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggNTRl
ZDg0MGJlMDE4MjdkMTcyYTRmOGY5YjMxYjk0NDA2NjVhNzc3MC4uYTMwZTIxNjQzYTE1N2E4MmM1
ZGQ3ZTViNGQ4NTg0MGI3NGZhNTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNoYWRlclByb2dyYW0uaCIKIAotI2lm
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAKICNp
bmNsdWRlICJJbnNwZWN0b3JDYW52YXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVu
dGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTQyLDE1ICs0Miw2IEBACiAjaW5jbHVkZSAiV2ViR0xTaGFk
ZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVTaGFkZXJN
b2R1bGUuaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21w
dXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtNjIsMTMgKzUzLDYgQEAgUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3Rv
clNoYWRlclByb2dyYW06OmNyZWF0ZShXZWJHTFByb2dyYW0mIHByb2dyYW0KIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpjcmVhdGUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0
b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtKHBpcGVsaW5lLCBpbnNwZWN0b3JDYW52YXMpKTsKLX0KLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdFQkdMKQogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3RvckNhbnZhcyYg
aW5zcGVjdG9yQ2FudmFzKQogICAgIDogbV9pZGVudGlmaWVyKCJwcm9ncmFtOiIgKyBJZGVudGlm
aWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKQEAgLTc5LDE2ICs2Myw2IEBAIEluc3Bl
Y3RvclNoYWRlclByb2dyYW06Okluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiBw
cm9ncmFtLCBJbnNwZWN0b3JDCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1JbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdQVVBpcGVsaW5l
JiBwaXBlbGluZSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCi0gICAgOiBtX2lk
ZW50aWZpZXIoInBpcGVsaW5lOiIgKyBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSkKLSAgICAsIG1fY2FudmFzKGluc3BlY3RvckNhbnZhcykKLSAgICAsIG1fcHJvZ3JhbShw
aXBlbGluZSkKLXsKLSAgICBBU1NFUlQobV9jYW52YXMuZGV2aWNlQ29udGV4dCgpKTsKLX0KLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdFQkdMKQogV2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtOjpwcm9ncmFtKCkgY29uc3QKIHsKQEAgLTk4LDE1ICs3Miw2IEBAIFdlYkdMUHJvZ3Jh
bSogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cHJvZ3JhbSgpIGNvbnN0CiB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXRUJHUFUpCi1XZWJHUFVQaXBlbGluZSogSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6cGlwZWxpbmUoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBwaXBlbGluZVdyYXBwZXIgPSBX
VEY6OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPj4obV9wcm9n
cmFtKSkKLSAgICAgICAgcmV0dXJuICZwaXBlbGluZVdyYXBwZXItPmdldCgpOwotICAgIHJldHVy
biBudWxscHRyOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBzdGF0aWMgV2ViR0xT
aGFkZXIqIHNoYWRlckZvclR5cGUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSkKIHsKQEAgLTEyNywzMSArOTIs
NiBAQCBzdGF0aWMgV2ViR0xTaGFkZXIqIHNoYWRlckZvclR5cGUoV2ViR0xQcm9ncmFtJiBwcm9n
cmFtLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotc3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IHNoYWRlckZvclR5cGUoV2Vi
R1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRl
clR5cGUgc2hhZGVyVHlwZSkKLXsKLSAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZTo6Q29tcHV0ZToKLSAgICAg
ICAgaWYgKGlzPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUpLmNvbXB1dGVT
aGFkZXIoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIGlmIChpczxX
ZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkuZnJhZ21lbnRTaGFkZXIoKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNh
bnZhczo6U2hhZGVyVHlwZTo6VmVydGV4OgotICAgICAgICBpZiAoaXM8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxXZWJHUFVSZW5k
ZXJQaXBlbGluZT4ocGlwZWxpbmUpLnZlcnRleFNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLSNlbmRpZgotCiBTdHJpbmcgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVz
dFNoYWRlclNvdXJjZShJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hh
ZGVyVHlwZSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Byb2dyYW0sCkBAIC0xNjIs
MTcgKzEwMiw5IEBAIFN0cmluZyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVy
U291cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNoYWRlci0+Z2V0U291cmNlKCk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAg
ICAgICAgICAgYXV0byYgcGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBzaGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJUeXBl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVyLT5zb3VyY2UoKTsKLSAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfSwKICNlbmRpZgogICAgICAgICBbJl0gKE1vbm9z
dGF0ZSkgewotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjAxLDI0ICsxMzMsOSBAQCBib29sIEluc3BlY3Rv
clNoYWRlclByb2dyYW06OnVwZGF0ZVNoYWRlcihJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6
OlNoYWRlclR5cAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiBwaXBlbGluZVdyYXBwZXIpIHsKLSAgICAg
ICAgICAgIGF1dG8mIHBpcGVsaW5lID0gcGlwZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAgICAg
ICAgaWYgKGF1dG8qIGRldmljZSA9IG1fY2FudmFzLmRldmljZUNvbnRleHQoKSkgewotICAgICAg
ICAgICAgICAgIGlmIChwaXBlbGluZS5jbG9uZVNoYWRlck1vZHVsZXMoKmRldmljZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhZGVyID0gc2hhZGVyRm9yVHlwZShwaXBlbGlu
ZSwgc2hhZGVyVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlci0+dXBkYXRl
KCpkZXZpY2UsIHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGlwZWxpbmUu
cmVjb21waWxlKCpkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAogI2VuZGlmCiAgICAg
ICAgIFsmXSAoTW9ub3N0YXRlKSB7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQorI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgsMzEgKzE0NSwxNSBAQCBi
b29sIEluc3BlY3RvclNoYWRlclByb2dyYW06OnVwZGF0ZVNoYWRlcihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlNoYWRlclR5cAogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iamVjdEZvclNo
YWRlclByb2dyYW0oKQogewotICAgIGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSBm
YWxzZTsKLQogICAgIHVzaW5nIFByb2dyYW1UeXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZT47CiAgICAgYXV0byBwcm9ncmFtVHlw
ZSA9IFdURjo6c3dpdGNoT24obV9wcm9ncmFtLAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAg
WyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4pIC0+IFByb2dyYW1UeXBl
VHlwZSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQ
cm9ncmFtVHlwZTo6UmVuZGVyOwogICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiBw
aXBlbGluZVdyYXBwZXIpIC0+IFByb2dyYW1UeXBlVHlwZSB7Ci0gICAgICAgICAgICBhdXRvJiBw
aXBlbGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChpczxXZWJH
UFVDb21wdXRlUGlwZWxpbmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6Q29tcHV0ZTsKLSAgICAgICAg
ICAgIGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgcmVuZGVyUGlwZWxpbmUgPSBkb3duY2FzdDxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4ocGlwZWxpbmUpOwotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQaXBlbGluZS52ZXJ0ZXhT
aGFkZXIoKSA9PSByZW5kZXJQaXBlbGluZS5mcmFnbWVudFNoYWRlcigpKQotICAgICAgICAgICAg
ICAgICAgICBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OlJlbmRl
cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25vc3RhdGUpIC0+IFByb2dyYW1UeXBlVHlw
ZSB7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJH
TCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjY4LDExICsxNjksOSBAQCBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFt
OjpidWlsZE9iagogICAgICAgICAuc2V0UHJvZ3JhbVR5cGUocHJvZ3JhbVR5cGUudmFsdWUoKSkK
ICAgICAgICAgLnNldENhbnZhc0lkKG1fY2FudmFzLmlkZW50aWZpZXIoKSkKICAgICAgICAgLnJl
bGVhc2UoKTsKLSAgICBpZiAoc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHBh
eWxvYWQtPnNldFNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyKHRydWUpOwogICAgIHJldHVybiBw
YXlsb2FkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgKaW5kZXgg
Y2NjNzNjZWYzNzQ2NzA2NzBkNTk2YTkzYjMyZmUwOWE1NWQ0MzViYi4uYzkyZGViYjc3Y2M0NTE4
YzQxNWJkM2FmYjMwM2IyZjM3MTRjMjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJM
RShXRUJHTCkKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2Jq
ZWN0cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSwxOCArNDEsMTEgQEAgY2xh
c3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWNsYXNzIFdlYkdQVVBpcGVsaW5lOwotI2VuZGlmCi0K
IGNsYXNzIEluc3BlY3RvclNoYWRlclByb2dyYW0gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtPiB7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAg
IHN0YXRpYyBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUHJvZ3JhbSYs
IEluc3BlY3RvckNhbnZhcyYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0
aWMgUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGNyZWF0ZShXZWJHUFVQaXBlbGluZSYsIElu
c3BlY3RvckNhbnZhcyYpOwotI2VuZGlmCiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBJbnNwZWN0b3JDYW52YXMmIGNh
bnZhcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzOyB9CkBAIC02MCw5ICs1Myw2IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3Q7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFdlYkdQVVBpcGVsaW5lKiBwaXBlbGlu
ZSgpIGNvbnN0OwotI2VuZGlmCiAKICAgICBTdHJpbmcgcmVxdWVzdFNoYWRlclNvdXJjZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIGJvb2wgdXBkYXRlU2hh
ZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2UpOwpAQCAtNzksOSArNjksNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJHTCkK
ICAgICBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdMUHJvZ3JhbSYsIEluc3BlY3RvckNhbnZh
cyYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2FudmFzJik7Ci0jZW5kaWYKIAogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CiAgICAgSW5zcGVjdG9yQ2FudmFzJiBtX2NhbnZhczsKQEAgLTg5
LDkgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBWYXJpYW50PAogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHTFByb2dyYW0+LAotI2VuZGlmCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBl
bGluZT4sCiAjZW5kaWYKICAgICAgICAgV1RGOjpNb25vc3RhdGUKICAgICA+IG1fcHJvZ3JhbTsK
QEAgLTEwMiw0ICs4Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IGE0MDJjM2I5ODQwMzBjZjBmOGRkNjViNmUx
M2I5MDhmYmZiZjk2YTMuLjU5ZjRkMzliNWE3MTllM2UxN2U1NzM4ZjJjNjdlZmMzOGVhZTQzMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAi
R1BVQ2FudmFzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTY4LDExICs2Nyw2IEBACiAjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgog
I2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtMTAwLDkgKzk0LDkgQEAgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2Nh
bnZhc0Rlc3Ryb3llZFRpbWVyKCp0aGlzLCAmSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0Rl
c3Ryb3llZFRpbWVyRmlyZWQpCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQor
I2lmIEVOQUJMRShXRUJHTCkKICAgICAsIG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyKCp0aGlzLCAm
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZpcmVkKQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiB7CiB9CiAKQEAgLTE0MSwyNyArMTM1LDEyIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoKQogICAgIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9Owog
ICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0
YW5jZXMoKSkgewotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgICAgICAvLyBUaGUgYWN0dWFs
ICJjb250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2Fu
dmFzPi4KLSAgICAgICAgICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQogCiAgICAg
ICAgICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShjb250ZXh0LT5jYW52YXNCYXNlKCkuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKICAgICAgICAgICAgICAgICBiaW5kQ2FudmFzKCpjb250
ZXh0LCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVURldmljZTo6aW5zdGFuY2VzTG9jaygp
IH07Ci0gICAgICAgIGZvciAoYXV0byogZGV2aWNlIDogV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMo
KSkgewotICAgICAgICAgICAgaWYgKGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICAgICAgICAgIGJpbmRDYW52YXMoKmRldmljZSwg
ZmFsc2UpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KICNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR0xQcm9n
cmFtOjppbnN0YW5jZXNMb2NrKCkgfTsKQEAgLTE3MiwxNiArMTUxLDYgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKSB9Owot
ICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVsaW5lOjpp
bnN0YW5jZXMoKSkgewotICAgICAgICAgICAgaWYgKGRldmljZSAmJiBleGlzdHNJbkN1cnJlbnRQ
YWdlKGRldmljZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAmJiBwaXBlbGluZS0+aXNWYWxp
ZCgpKQotICAgICAgICAgICAgICAgIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCpkZXZpY2UsICpw
aXBlbGluZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQog
ICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTI5Nyw3ICsyNjYsNiBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoY29uc3Qg
UHJvdG9jbwogCiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29u
dGV4dCgpOwogCi0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdl
YiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BV
RGV2aWNlCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Ik5vdCBzdXBwb3J0ZWQiX3MpOwogCkBAIC0zMjQsNyArMjkyLDYgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3Qg
UHJvdG9jb2wKIAogICAgIGF1dG8qIGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0Nv
bnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBX
ZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQ
VURldmljZQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJOb3Qgc3VwcG9ydGVkIl9zKTsKIApAQCAtMzM2LDcgKzMwMyw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKGNvbnN0
IFByb3RvY29sCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5B
QkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxT
dHJpbmc+IEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IFBy
b3RvY29sOjpDYW52YXM6OlByb2dyYW1JZCYgcHJvZ3JhbUlkLCBQcm90b2NvbDo6Q2FudmFzOjpT
aGFkZXJUeXBlIHNoYWRlclR5cGUpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9y
U3RyaW5nOwpAQCAtMzY2LDcgKzMzMyw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckNhbnZhc0FnZW50Ojp1cGRhdGVTaGFkZXIoY29uc3QgUHJvdG9jb2w6CiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkKIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQo
Y29uc3QgUHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiBwcm9ncmFtSWQsIGJvb2wgZGlzYWJs
ZWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwpAQCAtMzkzLDcg
KzM1OSw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoCiAgICAgcmV0dXJuIHsgfTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFt
ZSYgZnJhbWUpCiB7CkBAIC00NTAsMTcgKzQxNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OmRpZENoYW5nZUNhbnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
CiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzOwogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMu
dmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0RldmljZUZvckNhbnZhc0NvbnRl
eHQoY29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBpdGVtOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
I2VuZGlmCi0KICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKICAgICAgICAgaW5zcGVjdG9yQ2Fu
dmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjb250ZXh0KTsKIApAQCAtNjE3LDY5ICs1NzEsNiBA
QCBib29sIEluc3BlY3RvckNhbnZhc0FnZW50Ojppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBF
TkFCTEUoV0VCR1BVKQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlV2ViR1BV
RGV2aWNlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChmaW5kSW5zcGVjdG9yQ2Fu
dmFzKGRldmljZSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBiaW5kQ2FudmFzKGRldmljZSwgdHJ1ZSk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmlj
ZSYgZGV2aWNlKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNh
bnZhcyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAgIGlmICghaW5z
cGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bmJpbmRDYW52YXMoKmluc3Bl
Y3RvckNhbnZhcyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1
cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYgY29udGV4dEdQVSwgV2ViR1BVU3dhcENoYWlu
JiBuZXdTd2FwQ2hhaW4pCi17Ci0gICAgYXV0byBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4gPSBb
Jl0gKFdlYkdQVVN3YXBDaGFpbiYgd2ViR1BVU3dhcENoYWluKSB7Ci0gICAgICAgIGZvciAoYXV0
byYgaW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFsdWVz
KCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkZXZpY2UgPSBpbnNwZWN0b3JDYW52YXMtPmRl
dmljZUNvbnRleHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChkZXZpY2UtPmRldmljZSgpLnN3
YXBDaGFpbigpID09IHdlYkdQVVN3YXBDaGFpbi5zd2FwQ2hhaW4oKSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNsaWVudE5vZGVzQ2hhbmdlZChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Owot
Ci0gICAgaWYgKGF1dG8qIGV4aXN0aW5nU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4o
KSkKLSAgICAgICAgbm90aWZ5RGV2aWNlRm9yU3dhcENoYWluKCpleGlzdGluZ1N3YXBDaGFpbik7
Ci0KLSAgICBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4obmV3U3dhcENoYWluKTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2
aWNlJiBkZXZpY2UsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBhdXRvIGluc3Bl
Y3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNlKTsKLSAgICBBU1NFUlQoaW5z
cGVjdG9yQ2FudmFzKTsKLSAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQVNTRVJUKHBpcGVsaW5lLmlzVmFsaWQoKSk7Ci0KLSAgICBhdXRvIGluc3BlY3Rv
clByb2dyYW1SZWYgPSBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpjcmVhdGUocGlwZWxpbmUsICpp
bnNwZWN0b3JDYW52YXMpOwotICAgIGF1dG8mIGluc3BlY3RvclByb2dyYW0gPSBpbnNwZWN0b3JQ
cm9ncmFtUmVmLmdldCgpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS5zZXQo
aW5zcGVjdG9yUHJvZ3JhbS5pZGVudGlmaWVyKCksIFdURk1vdmUoaW5zcGVjdG9yUHJvZ3JhbVJl
ZikpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wcm9ncmFtQ3JlYXRlZChpbnNwZWN0b3JQ
cm9ncmFtLmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSgpKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYg
cGlwZWxpbmUpCi17Ci0gICAgYXV0byBpbnNwZWN0b3JQcm9ncmFtID0gZmluZEluc3BlY3RvclBy
b2dyYW0ocGlwZWxpbmUpOwotICAgIGlmICghaW5zcGVjdG9yUHJvZ3JhbSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdW5iaW5kUHJvZ3JhbSgqaW5zcGVjdG9yUHJvZ3JhbSk7Ci19Ci0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKLQogI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04o
QXJndW1lbnRUeXBlKSBcCiBzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvY2Vzc0FyZ3VtZW50
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50
VHlwZSBhcmd1bWVudCkgXAogeyBcCkBAIC03MTUsNyArNjA2LDYgQEAgdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1Jl
bmRlcmluZ0MKIAogICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENh
bnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmhhc0FjdGl2ZUluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0Fn
ZW50LmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0
KTsKQEAgLTczOCw3ICs2MjgsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJl
Y29yZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJvdAogewogICAgIGF1
dG8qIGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMuY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4g
V2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJH
UFVEZXZpY2UKIAogICAgIGlmICghaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihjb250ZXh0
KQogICAgICAgICAmJiAhaXM8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KQpA
QCAtNzc3LDcgKzY2Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0Rlc3Ry
b3llZFRpbWVyRmlyZWQoKQogICAgIG1fcmVtb3ZlZENhbnZhc0lkZW50aWZpZXJzLmNsZWFyKCk7
CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdF
QkdMKQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ryb3llZFRpbWVyRmly
ZWQoKQogewogICAgIGlmICghbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLnNpemUoKSkKQEAg
LTc4OCw3ICs2NzcsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJv
eWVkVGltZXJGaXJlZCgpCiAKICAgICBtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuY2xlYXIo
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNldCgpCiB7
CkBAIC04MDIsMTIgKzY5MSwxMiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNldCgp
CiAgICAgaWYgKG1fY2FudmFzRGVzdHJveWVkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
YW52YXNEZXN0cm95ZWRUaW1lci5zdG9wKCk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJM
RShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9y
UHJvZ3JhbS5jbGVhcigpOwogICAgIG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigp
OwogICAgIGlmIChtX3Byb2dyYW1EZXN0cm95ZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X3Byb2dyYW1EZXN0cm95ZWRUaW1lci5zdG9wKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8
fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAogICAgIG1fcmVjb3Jk
aW5nQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KQEAgLTgzNiwxOCArNzI1LDYgQEAgSW5z
cGVjdG9yQ2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZhcyhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXgKICAgICByZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwogfQogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvckNhbnZhcyYgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmJpbmRDYW52YXMoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIGJvb2wgY2FwdHVyZUJhY2t0cmFjZSkK
LXsKLSAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGRl
dmljZSk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3BlY3RvckNh
bnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKLQotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5jYW52YXNBZGRlZChpbnNwZWN0b3JDYW52YXMtPmJ1aWxkT2Jq
ZWN0Rm9yQ2FudmFzKGNhcHR1cmVCYWNrdHJhY2UpKTsKLQotICAgIHJldHVybiBpbnNwZWN0b3JD
YW52YXM7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogdm9pZCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6dW5iaW5kQ2FudmFzKEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzKQog
ewogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTg5NSwxOCArNzcyLDcgQEAgUmVmUHRyPEluc3BlY3Rv
ckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JDYW52YXMoQ2FudmFz
UmVuZGVyaW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi1S
ZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3Rv
ckNhbnZhcyhXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBmb3IgKGF1dG8mIGluc3BlY3Rv
ckNhbnZhcyA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnZhbHVlcygpKSB7Ci0gICAg
ICAgIGlmIChpbnNwZWN0b3JDYW52YXMtPmRldmljZUNvbnRleHQoKSA9PSAmZGV2aWNlKQotICAg
ICAgICAgICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp1bmJpbmRQcm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mIGluc3BlY3RvclByb2dy
YW0pCiB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBpbnNwZWN0b3JQcm9ncmFtLmlkZW50aWZp
ZXIoKTsKQEAgLTkzMSw3ICs3OTcsNiBAQCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4g
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmFzc2VydEluc3BlY3RvclByb2dyYW0oUHJvdAogICAgIHJl
dHVybiBpbnNwZWN0b3JQcm9ncmFtOwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKQogUmVmUHRyPElu
c3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9y
UHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7CiAgICAgZm9yIChhdXRvJiBpbnNwZWN0
b3JQcm9ncmFtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7CkBA
IC05NDIsMTYgKzgwNyw0IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvclByb2dyYW0oV2ViR0xQCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvclByb2dyYW0oV2Vi
R1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yUHJvZ3Jh
bSA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoaW5zcGVjdG9yUHJvZ3JhbS0+cGlwZWxpbmUoKSA9PSAmcGlwZWxpbmUpCi0gICAgICAgICAg
ICByZXR1cm4gaW5zcGVjdG9yUHJvZ3JhbTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShXRUJHUFUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCBk
N2JkZWYzYzg0NDU1NTI1NWRjNmQyMmY2MmYyNzk4NzkyNmQ1MzIzLi43ZjEwMTJhYTJhMjRmNjgy
Y2Y2ODkxZDEzNjZkZDRkMjYxNTczMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC00NCwxOSArNDQsMTEg
QEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkKLWNsYXNzIEluc3BlY3RvclNoYWRlclByb2dyYW07CiAjaWYgRU5BQkxFKFdFQkdM
KQorY2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTsKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKIGNs
YXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQot
I2lmIEVOQUJMRShXRUJHUFUpCi1jbGFzcyBHUFVDYW52YXNDb250ZXh0OwotY2xhc3MgV2ViR1BV
RGV2aWNlOwotY2xhc3MgV2ViR1BVUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVTd2FwQ2hhaW47Ci0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJM
RShXRUJHUFUpCiAKIGNsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyLCBwdWJsaWMgQ2FudmFzT2JzZXJ2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJ
bnNwZWN0b3JDYW52YXNBZ2VudD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckNhbnZhc0FnZW50KTsKQEAgLTgwLDE0ICs3MiwxMiBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRSZWNvcmRpbmdBdXRvQ2FwdHVyZUZy
YW1lQ291bnQoaW50KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IHN0YXJ0UmVjb3JkaW5nKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6Q2Fu
dmFzSWQmLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmcmFtZUNvdW50LCBzdGQ6Om9wdGlvbmFsPGlu
dD4mJiBtZW1vcnlMaW1pdCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBzdG9wUmVjb3JkaW5nKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
Q2FudmFzSWQmKTsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5B
QkxFKFdFQkdMKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5n
PiByZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlKTsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHVwZGF0ZVNoYWRlcihj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1JZCYsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotI2lm
IEVOQUJMRShXRUJHTCkKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IHNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpD
YW52YXM6OlByb2dyYW1JZCYsIGJvb2wgZGlzYWJsZWQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hhZGVyUHJvZ3JhbUhpZ2hsaWdodGVkKGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgYm9vbCBoaWdobGlnaHRl
ZCk7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKIAogICAgIC8vIENhbnZhc09ic2VydmVyCiAgICAgdm9pZCBjYW52YXND
aGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5h
bDsKQEAgLTEwOSwxMyArOTksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1dlYkdMUHJvZ3JhbURp
c2FibGVkKFdlYkdMUHJvZ3JhbSYpOwogICAgIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRl
ZChXZWJHTFByb2dyYW0mKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICB2b2lkIGRpZENyZWF0ZVdlYkdQVURldmljZShXZWJHUFVEZXZpY2UmKTsKLSAg
ICB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQg
d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0JiwgV2ViR1BVU3dhcENoYWlu
Jik7Ci0gICAgdm9pZCBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBXZWJH
UFVQaXBlbGluZSYpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQ
aXBlbGluZSYpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAvLyBJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJn
dW1lbnRUeXBlKSBcCkBAIC0xMzQsMzIgKzExNywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rh
cnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3Jk
aW5nOjpJbml0aWF0b3IsIFJlY29yZGluZ09wdGlvbnMmJiA9IHsgfSk7CiAKICAgICB2b2lkIGNh
bnZhc0Rlc3Ryb3llZFRpbWVyRmlyZWQoKTsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcHJvZ3JhbURlc3Ryb3llZFRpbWVy
RmlyZWQoKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIEluc3BlY3RvckNh
bnZhcyYgYmluZENhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgYm9vbCBjYXB0dXJlQmFj
a3RyYWNlKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyYgYmluZENh
bnZhcyhXZWJHUFVEZXZpY2UmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCiAgICAgdm9pZCB1bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJik7CiAg
ICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCk7CiAgICAg
UmVmUHRyPEluc3BlY3RvckNhbnZhcz4gZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0Jik7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ2Fu
dmFzPiBmaW5kSW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYpOwotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5B
QkxFKFdFQkdMKQogICAgIHZvaWQgdW5iaW5kUHJvZ3JhbShJbnNwZWN0b3JTaGFkZXJQcm9ncmFt
Jik7CiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGFzc2VydEluc3BlY3RvclBy
b2dyYW0oSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBy
b2dyYW1JZCk7Ci0jaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtPiBmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHTFByb2dyYW0mKTsKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8SW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbT4gZmluZEluc3BlY3RvclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmKTsKLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6Q2Fu
dmFzQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CkBAIC0xNzEsMTEgKzE0
MywxMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVtb3ZlZENhbnZhc0lkZW50
aWZpZXJzOwogICAgIFRpbWVyIG1fY2FudmFzRGVzdHJveWVkVGltZXI7CiAKLSNpZiBFTkFCTEUo
V0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4+IG1faWRlbnRpZmllclRvSW5z
cGVjdG9yUHJvZ3JhbTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3JlbW92ZWRQcm9ncmFtSWRlbnRp
ZmllcnM7CiAgICAgVGltZXIgbV9wcm9ncmFtRGVzdHJveWVkVGltZXI7Ci0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4IGMzYWFjNTRjNTdmMjQwN2IzOGYw
MzZkODY1MTVkZmIyMGFkYmY0OTEuLjBjMzBkOWI4MDJjMTZlNTUzYjM4ODVmY2Y1NWE3ZDBlY2Zk
MDQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCkBAIC00MiwxMSAr
NDIsNiBAQAogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgog
Ci0jaWYgRU5BQkxFKEdQVV9EUklWRVJfUFJFV0FSTUlORykKLSNpbmNsdWRlICJHUFVEZXZpY2Uu
aCIKLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygp
CkBAIC03OSwxMCArNzQsNiBAQCB2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHko
KQogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBUZWxlcGhvbmVO
dW1iZXJEZXRlY3Rvcjo6cHJld2FybSgpOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoR1BVX0RSSVZF
Ul9QUkVXQVJNSU5HKQotICAgIEdQVURldmljZTo6cHJld2FybSgpOwotI2VuZGlmCiB9CiAKIFdl
YkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1J
bmZvcm1hdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMDcwODQ3YzEzNGI1
NjE2M2Y0YTA2MTM5Mzk4ZjAzYTA1NTlhODc4Yi4uODIzNTg0M2ZhNTEyOTU1YzdjZWI1ZWZkZmNk
ZjkzZGU0YTU5ZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTIwLDcgKzEy
MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFZpZXdwb3J0cykgXAogICAgIE0oV2Vi
QXVkaW8pIFwKICAgICBNKFdlYkdMKSBcCi0gICAgTShXZWJHUFUpIFwKICAgICBNKFdlYlJUQykg
XAogICAgIE0oV2ViUlRDU3RhdHMpIFwKICAgICBNKFhSKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCmluZGV4IDVhNjBiY2MxZTZiNTMyYTYxZDQ4YWNjMzQ0YmJhYTJhZjhkMDE2
ZGQuLjAyYTI2ZDU3YjU1ZWNhZGU0M2M1ZjJlZTM5NWY4MzMyOTI2ODc5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC01NywxMCArNTcsNiBAQAogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNpZiBF
TkFCTEUoV0VCR1BVKQotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLSNlbmRpZgotCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgi
CiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKQEAgLTIxOCwxMSArMjE0LDYgQEAgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3Jt
TGF5ZXIoUGxhdGYKICAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKIAot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHUFVM
YXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOwotI2VuZGlmCi0KICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yNzUs
NyArMjY2LDcgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExh
eWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgICAgIGxheWVyQ2xh
c3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
Y3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycyBv
ciBXZWJHUFVMYXllcnMuCisgICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXll
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTI4ZjczYTA4NjFkMTUyYjcxM2Nl
YjllOTMzMjgzY2E4MjZhNWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxh
eWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR1BVU3dhcENoYWluOwotfQotCi1AaW50ZXJmYWNlIFdl
YkdQVUxheWVyIDogQ0FNZXRhbExheWVyIHsKLSAgICBXZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIF9z
d2FwQ2hhaW47Ci0gICAgZmxvYXQgX2RldmljZVNjYWxlRmFjdG9yOwotfQotCi1AcHJvcGVydHkg
KG5vbmF0b21pYykgV2ViQ29yZTo6R1BVU3dhcENoYWluKiBzd2FwQ2hhaW47Ci0KLS0gKENHSW1h
Z2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNv
bG9yU3BhY2U7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZTIzODJlNGViYjJjMWYwMGY5YmJjZDM1ZTBlNjAyZGI5Y2E0NjhmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdQVUxheWVyCi0KLUBzeW50aGVz
aXplIHN3YXBDaGFpbiA9IF9zd2FwQ2hhaW47Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotCi0gICAgLy8gRklYTUU6IFdlYkdQVSAtIGhhbmRsZSByZXRpbmEgY29y
cmVjdGx5LgotICAgIF9kZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gX2RldmljZVNjYWxlRmFjdG9yOwotICAgIHNlbGYu
Y29sb3JzcGFjZSA9IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xv
clNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZQotewotICAgIGlmICghX3N3YXBDaGFp
bikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFj
ZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOTJmMTM0NGI1NGIyMmI5ZTlkODFmMTkxNmZiZmIy
MTIxMTgxNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgot
I2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yOwotCi11c2luZyBBcmd1bWVudEJ1ZmZlciA9IHN0ZDo6cGFpcjxjb25zdCBQbGF0Zm9y
bUJ1ZmZlciosIGNvbnN0IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZz
ZXRzJj47Ci0KLWNsYXNzIEdQVUJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRH
cm91cD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlDcmVh
dGUoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYp
OwotCi0gICAgfkdQVUJpbmRHcm91cCgpOwotICAgIAotICAgIGNvbnN0IEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4geyBtX2FsbG9jYXRvci0+YXJndW1lbnRC
dWZmZXIoKSwgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHMgfTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8
UmVmPEdQVUJ1ZmZlcj4+JiBib3VuZEJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQnVm
ZmVyczsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgYm91bmRUZXh0dXJl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRUZXh0dXJlczsgfQotCi1wcml2YXRlOgotICAgIEdQ
VUJpbmRHcm91cChHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyYm
LCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImLCBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiYmLCBIYXNo
U2V0PFJlZjxHUFVUZXh0dXJlPj4mJik7Ci0gICAgCi0gICAgR1BVQmluZEdyb3VwQWxsb2NhdG9y
OjpBcmd1bWVudEJ1ZmZlck9mZnNldHMgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHM7Ci0gICAgUmVm
PEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gbV9hbGxvY2F0b3I7Ci0gICAgSGFzaFNldDxSZWY8R1BV
QnVmZmVyPj4gbV9ib3VuZEJ1ZmZlcnM7Ci0gICAgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+IG1f
Ym91bmRUZXh0dXJlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM4NDMxOTdiZjMzMjgzMDIzMTQzNDdiMzc4M2RhODc0YWY2MzU0MDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEFsbG9jYXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBs
YXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsK
LQotY2xhc3MgR1BVQmluZEdyb3VwQWxsb2NhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmlu
ZEdyb3VwQWxsb2NhdG9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVCaW5kR3JvdXBB
bGxvY2F0b3I+IGNyZWF0ZShHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgc3RydWN0IEFyZ3VtZW50
QnVmZmVyT2Zmc2V0cyB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJP
ZmZzZXQ+IHZlcnRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9m
ZnNldD4gZnJhZ21lbnQ7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJP
ZmZzZXQ+IGNvbXB1dGU7Ci0gICAgfTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBzdGQ6Om9wdGlv
bmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1
bWVudEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJn
dW1lbnRFbmNvZGVyICpjb21wdXRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB0cnlSZXNldCgpOwot
Ci0gICAgY29uc3QgUGxhdGZvcm1CdWZmZXIqIGFyZ3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9hcmd1bWVudEJ1ZmZlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQ
VUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgYm9vbCByZWFsbG9j
YXRlKFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0KTsKLQotICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQ
dHIgbV9hcmd1bWVudEJ1ZmZlcjsKLSAgICBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCBtX2xhc3RP
ZmZzZXQgeyAwIH07Ci0KLSAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29wZXM7Ci0g
ICAgaW50IG1fbnVtQmluZEdyb3VwcyB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEJpbmRpbmcuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjM2EyMzY2ODg3NTZhN2ZjY2U4YzM0M2UwZjVkZjYz
YWZiMWFkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlckJpbmRpbmcuaCIK
LSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVQmlu
ZGluZ1Jlc291cmNlID0gVmFyaWFudDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4sIFJlZjxHUFVUZXh0
dXJlPiwgR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBCaW5kaW5nIHsK
LSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVUJpbmRpbmdSZXNvdXJjZSByZXNvdXJjZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUJpbmRHcm91cERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTEwOGE5NzhhOWU4NmExZWI5NmUyZmNmZGU5NDViY2ZjYWVhZDUyMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yIHsKLSAgICBSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7Ci0gICAgVmVj
dG9yPEdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxNmZjOTg0ODFlMWM0NzgyNWY1MDgzZWZmZTI2
ZGNlODY2YTg1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwTGF5b3V0
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi1jbGFzcyBHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNv
bnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKTsKLQotICAgIHN0cnVjdCBVbmlmb3Jt
QnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lOwotICAgIH07Ci0K
LSAgICBzdHJ1Y3QgRHluYW1pY1VuaWZvcm1CdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRl
cm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBTYW1wbGVyIHsKLSAgICB9Owot
Ci0gICAgc3RydWN0IFNhbXBsZWRUZXh0dXJlIHsKLSAgICB9OwotCi0gICAgc3RydWN0IFN0b3Jh
Z2VCdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsK
LQotICAgIHN0cnVjdCBEeW5hbWljU3RvcmFnZUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGlu
dGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAgdXNpbmcgSW50ZXJuYWxCaW5kaW5nRGV0
YWlscyA9IFZhcmlhbnQ8VW5pZm9ybUJ1ZmZlciwgRHluYW1pY1VuaWZvcm1CdWZmZXIsIFNhbXBs
ZXIsIFNhbXBsZWRUZXh0dXJlLCBTdG9yYWdlQnVmZmVyLCBEeW5hbWljU3RvcmFnZUJ1ZmZlcj47
Ci0KLSAgICBzdHJ1Y3QgQmluZGluZyB7Ci0gICAgICAgIEdQVUJpbmRHcm91cExheW91dEJpbmRp
bmcgZXh0ZXJuYWxCaW5kaW5nOwotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWU7Ci0gICAg
ICAgIEludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlsczsKLSAgICB9
OwotCi0gICAgdXNpbmcgQmluZGluZ3NNYXBUeXBlID0gSGFzaE1hcDx1aW50NjRfdCwgQmluZGlu
ZywgV1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1aW50NjRfdD4+OwotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSYgYmluZGluZ3NNYXAo
KSBjb25zdCB7IHJldHVybiBtX2JpbmRpbmdzTWFwOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIE1U
TEFyZ3VtZW50RW5jb2RlciAqdmVydGV4RW5jb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4
RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnRFbmNvZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudEVuY29kZXIuZ2V0KCk7IH0KLSAgICBNVExBcmd1
bWVudEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlRW5j
b2Rlci5nZXQoKTsgfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotcHJpdmF0ZToKLSNpZiBVU0Uo
TUVUQUwpCi0gICAgR1BVQmluZEdyb3VwTGF5b3V0KEJpbmRpbmdzTWFwVHlwZSYmLCBSZXRhaW5Q
dHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5j
b2Rlcj4mJiBmcmFnbWVudCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRl
KTsKLQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fdmVydGV4RW5jb2RlcjsK
LSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2ZyYWdtZW50RW5jb2RlcjsKLSAg
ICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2NvbXB1dGVFbmNvZGVyOwotI2VuZGlm
IC8vIFVTRShNRVRBTCkKLSAgICBjb25zdCBCaW5kaW5nc01hcFR5cGUgbV9iaW5kaW5nc01hcDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxl
bmREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QmxlbmREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTMzYWMy
ZTlhY2QxNWMyMGM2MWM4MDAwMTllOWI5OGJkNWZkOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJsZW5kRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUJsZW5kRmFjdG9yIHsKLSAgICBaZXJvLAot
ICAgIE9uZSwKLSAgICBTcmNDb2xvciwKLSAgICBPbmVNaW51c1NyY0NvbG9yLAotICAgIFNyY0Fs
cGhhLAotICAgIE9uZU1pbnVzU3JjQWxwaGEsCi0gICAgRHN0Q29sb3IsCi0gICAgT25lTWludXNE
c3RDb2xvciwKLSAgICBEc3RBbHBoYSwKLSAgICBPbmVNaW51c0RzdEFscGhhLAotICAgIFNyY0Fs
cGhhU2F0dXJhdGVkLAotICAgIEJsZW5kQ29sb3IsCi0gICAgT25lTWludXNCbGVuZENvbG9yLAot
fTsKLQotZW51bSBjbGFzcyBHUFVCbGVuZE9wZXJhdGlvbiB7Ci0gICAgQWRkLAotICAgIFN1YnRy
YWN0LAotICAgIFJldmVyc2VTdWJ0cmFjdCwKLSAgICBNaW4sCi0gICAgTWF4LAotfTsKLQotc3Ry
dWN0IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BVQmxlbmRGYWN0b3Igc3JjRmFjdG9yOwot
ICAgIEdQVUJsZW5kRmFjdG9yIGRzdEZhY3RvcjsKLSAgICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVy
YXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE3NTU5NDcxMzMwMmQw
OTM3Y2RlODQ4MWU1YTM0MzhmYzJmNzdkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUJ1ZmZlcjo6UGVuZGluZ01hcHBp
bmdDYWxsYmFjazo6UGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBwZW5k
aW5nKQotICAgIDogY2FsbGJhY2soV1RGTW92ZShwZW5kaW5nKSkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTM1YTVjM2FmYzRjODYyMmVkMzYwNGRhZmVmMjM2Y2Q3MjI1ZTJjNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVy
VXNhZ2UuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3Ry
dWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0
aW9uOwotCi1jbGFzcyBHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXI+IHsK
LXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsKLSAgICAgICAgTWFwcGVkLAotICAgICAg
ICBVbm1hcHBlZCwKLSAgICAgICAgRGVzdHJveWVkCi0gICAgfTsKLQotICAgIH5HUFVCdWZmZXIo
KTsKLQotICAgIHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGUoR1BVRGV2aWNlJiwg
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJy
b3JTY29wZXMmKTsKLQotICAgIFBsYXRmb3JtQnVmZmVyKiBwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCk7IH0KLSAgICBzaXplX3QgYnl0ZUxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQotICAgIGJvb2wgaXNDb3B5U291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6
OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRp
b24pOyB9Ci0gICAgYm9vbCBpc0luZGV4KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkluZGV4KTsgfQotICAgIGJvb2wgaXNWZXJ0ZXgoKSBj
b25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVy
dGV4KTsgfQotICAgIGJvb2wgaXNVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250
YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0pOyB9Ci0gICAgYm9vbCBpc1N0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6U3RvcmFnZSk7IH0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICBib29sIGlz
TWFwcGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVy
VXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0p
OyB9Ci0gICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1Vc2FnZTsgfQotICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7Ci0KLSAgICBKU0M6OkFycmF5QnVm
ZmVyKiBtYXBPbkNyZWF0aW9uKCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgdm9pZCBjb21tYW5k
QnVmZmVyQ29tbWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKik7Ci0gICAgdm9pZCBjb21tYW5kQnVm
ZmVyQ29tcGxldGVkKCk7Ci0jZW5kaWYKLQotICAgIHVzaW5nIE1hcHBpbmdDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChKU0M6OkFycmF5QnVmZmVyKik+OwotICAgIHZvaWQgcmVnaXN0ZXJN
YXBwaW5nQ2FsbGJhY2soTWFwcGluZ0NhbGxiYWNrJiYsIGJvb2wsIEdQVUVycm9yU2NvcGVzJik7
Ci0gICAgdm9pZCB1bm1hcChHUFVFcnJvclNjb3BlcyopOwotICAgIHZvaWQgZGVzdHJveShHUFVF
cnJvclNjb3BlcyopOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBQZW5kaW5nTWFwcGluZ0NhbGxi
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gewotICAgICAg
ICBzdGF0aWMgUmVmPFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2s+IGNyZWF0ZShNYXBwaW5nQ2FsbGJh
Y2smJiBjYWxsYmFjaykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGVuZGluZ01hcHBpbmdDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgTWFwcGluZ0NhbGxiYWNrIGNhbGxiYWNrOwotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgUGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJik7Ci0gICAgfTsK
LQotICAgIEdQVUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYsIEdQVURldmljZSYsIHNp
emVfdCwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4sIEdQVUJ1ZmZlck1hcHBlZE9w
dGlvbik7Ci0gICAgc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2FnZShjb25zdCBHUFVEZXZp
Y2UmLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVRXJyb3JTY29wZXMmKTsK
LQotICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JSZWFkKCk7Ci0gICAgSlND
OjpBcnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7Ci0gICAgdm9pZCBydW5NYXBw
aW5nQ2FsbGJhY2soKTsKLSAgICB2b2lkIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JT
Y29wZXMqKTsKLQotICAgIGJvb2wgaXNNYXBXcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Uu
Y29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSk7IH0KLSAgICBib29sIGlz
TWFwUmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6
OkZsYWdzOjpNYXBSZWFkKTsgfQotICAgIGJvb2wgaXNNYXBXcml0ZWFibGUoKSBjb25zdCB7IHJl
dHVybiBpc01hcFdyaXRlKCkgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6VW5tYXBwZWQ7IH0KLSAgICBi
b29sIGlzTWFwUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBpc01hcFJlYWQoKSAmJiBzdGF0ZSgp
ID09IFN0YXRlOjpVbm1hcHBlZDsgfQotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX3Bs
YXRmb3JtQnVmZmVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwotCi0gICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IG1fc3RhZ2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8UGVuZGluZ01h
cHBpbmdDYWxsYmFjaz4gbV9tYXBwaW5nQ2FsbGJhY2s7Ci0gICAgTWFpblRocmVhZERlZmVycmFi
bGVUYXNrIG1fbWFwcGluZ0NhbGxiYWNrVGFzazsKLQotICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7
Ci0gICAgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gbV91c2FnZTsKLSAgICB1bnNp
Z25lZCBtX3BsYXRmb3JtVXNhZ2U7Ci0gICAgdW5zaWduZWQgbV9udW1TY2hlZHVsZWRDb21tYW5k
QnVmZmVycyB7IDAgfTsKLSAgICBib29sIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24geyBmYWxzZSB9
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXJCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QnVmZmVyQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTZlZTAxMTEw
MWQ0N2MwNDFiNWY5Njk1MDY4M2U0ZDgzZWM2ZGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCdWZmZXJCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7
Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJEZXNjcmlw
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMDcyZDllZmYwMjdkMjllOTM3
NzliYzhmMDZiZDY0MmM0Mzg1NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZl
ckRlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZm
ZXJVc2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJEZXNj
cmlwdG9yIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNh
Z2U7Ci19OwotCi1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiB7Ci0gICAgSXNNYXBw
ZWQsCi0gICAgTm90TWFwcGVkCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2RlMTQxZThmZjM1MWFlZjllMDIwNTIyNDY1ZTY2YjU0YTQyNGQyZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVz
aW5nIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQnVmZmVyVXNh
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXJVc2FnZT4gewotcHVibGljOgotICAgIGVu
dW0gY2xhc3MgRmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAs
Ci0gICAgICAgIE1hcFJlYWQgPSAxIDw8IDAsCi0gICAgICAgIE1hcFdyaXRlID0gMSA8PCAxLAot
ICAgICAgICBDb3B5U291cmNlID0gMSA8PCAyLAotICAgICAgICBDb3B5RGVzdGluYXRpb24gPSAx
IDw8IDMsCi0gICAgICAgIEluZGV4ID0gMSA8PCA0LAotICAgICAgICBWZXJ0ZXggPSAxIDw8IDUs
Ci0gICAgICAgIFVuaWZvcm0gPSAxIDw8IDYsCi0gICAgICAgIFN0b3JhZ2UgPSAxIDw8IDcsCi0g
ICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmRhNTI2NTZkZTIzZDI2MjRkNmEx
YjhlMzU2YmQyNjRhZGMxNjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3Qg
R1BVQ29sb3IgewotICAgIGZsb2F0IHI7Ci0gICAgZmxvYXQgZzsKLSAgICBmbG9hdCBiOwotICAg
IGZsb2F0IGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmQ1NTI3MjhiY2M5YjM4MDU3NDU1OTllNmI1ODY4MTkxYWIxMzZlNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCbGVuZERlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJHUFVDb2xvcldyaXRlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0g
ICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICBHUFVCbGVuZERlc2NyaXB0b3IgYWxw
aGFCbGVuZDsKLSAgICBHUFVCbGVuZERlc2NyaXB0b3IgY29sb3JCbGVuZDsKLSAgICBHUFVDb2xv
cldyaXRlRmxhZ3Mgd3JpdGVNYXNrIHsgc3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihH
UFVDb2xvcldyaXRlOjpGbGFnczo6QWxsKSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JXcml0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0YzZkNWM4YzlkZTYxZjQzMjgxNDViNGYzNTUxMmRmYTdiMzJhMTkwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi11c2luZyBHUFVDb2xvcldyaXRlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQ29s
b3JXcml0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbG9yV3JpdGU+IHsKLXB1YmxpYzoKLSAg
ICBlbnVtIGNsYXNzIEZsYWdzIDogR1BVQ29sb3JXcml0ZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9
IDAsCi0gICAgICAgIFJlZCA9IDEgPDwgMCwKLSAgICAgICAgR3JlZW4gPSAxIDw8IDEsCi0gICAg
ICAgIEJsdWUgPSAxIDw8IDIsCi0gICAgICAgIEFscGhhID0gMSA8PCAzLAotICAgICAgICBBbGwg
PSAoMSA8PCA0KSAtIDEsCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjJmYjYyZDQ0YzA1YjkxNWE3NTI2YjIzMTU2ZjkxOTY4NDA4YTVhMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVPcmlnaW4z
RC5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJl
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVFeHRlbnQzRDsKLQotc3RydWN0IEdQVUJ1ZmZlckNv
cHlWaWV3QmFzZSB7Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVuc2lnbmVkIHJvd1BpdGNo
OwotICAgIHVuc2lnbmVkIGltYWdlSGVpZ2h0OwotfTsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlW
aWV3IGZpbmFsIDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKLSAgICBHUFVCdWZmZXJDb3B5Vmll
dyhSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlckNvcHksIGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFz
ZSYgYmFzZSkKLSAgICAgICAgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAg
LCBidWZmZXIoV1RGTW92ZShidWZmZXJDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQ
VUJ1ZmZlcj4gYnVmZmVyOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2Ugewot
ICAgIHVuc2lnbmVkIG1pcExldmVsOwotICAgIHVuc2lnbmVkIGFycmF5TGF5ZXI7Ci0gICAgR1BV
T3JpZ2luM0Qgb3JpZ2luOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5VmlldyBmaW5hbCA6
IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIEdQVVRleHR1cmVDb3B5VmlldyhSZWY8R1BV
VGV4dHVyZT4mJiB0ZXh0dXJlQ29weSwgY29uc3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSYgYmFz
ZSkKLSAgICAgICAgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlKGJhc2UpCi0gICAgICAgICwgdGV4
dHVyZShXVEZNb3ZlKHRleHR1cmVDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVVRl
eHR1cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYpOwotCi0gICAgUGxh
dGZvcm1Db21tYW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVm
PEdQVUJ1ZmZlcj4+JiB1c2VkQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZEJ1ZmZlcnM7
IH0KLSAgICBjb25zdCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mIHVzZWRUZXh0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlZFRleHR1cmVzOyB9Ci0gICAgYm9vbCBpc0VuY29kaW5nUGFzcygp
IGNvbnN0IHsgcmV0dXJuIG1faXNFbmNvZGluZ1Bhc3M7IH0KLQotICAgIHZvaWQgc2V0SXNFbmNv
ZGluZ1Bhc3MoYm9vbCBpc0VuY29kaW5nKSB7IG1faXNFbmNvZGluZ1Bhc3MgPSBpc0VuY29kaW5n
OyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIH5HUFVDb21tYW5kQnVmZmVyKCk7Ci0gICAgdm9pZCBl
bmRCbGl0RW5jb2RpbmcoKTsKLSNlbmRpZgotCi0gICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIo
UmVmPEdQVUJ1ZmZlcj4mJiwgdWludDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmLCB1
aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRv
VGV4dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZpZXcmJiwgY29uc3Qg
R1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNv
cHlWaWV3JiYsIEdQVUJ1ZmZlckNvcHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAg
dm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShHUFVUZXh0dXJlQ29weVZpZXcmJiwgR1BVVGV4dHVy
ZUNvcHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0KLSAgICB2b2lkIHVzZUJ1ZmZlcihS
ZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX3VzZWRCdWZmZXJzLmFkZFZvaWQoV1RGTW92ZShi
dWZmZXIpKTsgfQotICAgIHZvaWQgdXNlVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJl
KSB7IG1fdXNlZFRleHR1cmVzLmFkZFZvaWQoV1RGTW92ZSh0ZXh0dXJlKSk7IH0KLQotcHJpdmF0
ZToKLSAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYp
OwotCi0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRC
dWZmZXI7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKLSAgICBI
YXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gbV91c2VkVGV4dHVyZXM7Ci0gICAgYm9vbCBtX2lzRW5j
b2RpbmdQYXNzIHsgZmFsc2UgfTsKLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQmxpdENvbW1hbmRF
bmNvZGVyICpibGl0RW5jb2RlcigpIGNvbnN0OwotICAgIG11dGFibGUgUmV0YWluUHRyPE1UTEJs
aXRDb21tYW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwYmJhMzljOWRmZTRkMDAyODkzYzlh
YjVjMjhkMTJmZTRjMjhmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1
bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsKLSAgICBOZXZlciwKLSAgICBMZXNzLAot
ICAgIEVxdWFsLAotICAgIExlc3NFcXVhbCwKLSAgICBHcmVhdGVyLAotICAgIE5vdEVxdWFsLAot
ICAgIEdyZWF0ZXJFcXVhbCwKLSAgICBBbHdheXMKLX07Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcGFy
ZUZ1bmN0aW9uID0gdW5zaWduZWQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJhMDQxNWQ5MGQ4Y2JjZjg3ZGJjYTJhMmFjY2QyNWJhMTRlYjhhNmYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2lu
Y2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5j
b2Rlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIHZvaWQgc2V0
UGlwZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJik7Ci0gICAgdm9pZCBkaXNw
YXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAg
ICBHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3Jt
Q29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHImJik7Ci0gICAgfkdQVUNvbXB1dGVQYXNzRW5jb2Rl
cigpIHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcgot
ICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0Vu
Y29kZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkgZmluYWwg
eyBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRB
TCkKLSAgICB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVz
YWdlKSBmaW5hbDsKLSAgICB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICos
IE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0jZW5kaWYKLQotICAg
IFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQYXNz
RW5jb2RlcjsKLSAgICBSZWZQdHI8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiBtX3BpcGVsaW5l
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVD
b21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0OWMy
N2UzMzA0MjgzYWIzZTUwODg5ZDg3Yjg3ZWM4OGZhNThjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5j
bHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNs
YXNzIEdQVVBpcGVsaW5lTGF5b3V0OwotCi1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjsKLQotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQVVBpcGVs
aW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVDb21wdXRlUGlwZWxpbmUoKTsKLQotICAg
IHN0YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2
aWNlJiwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVz
Jik7Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotCi0gICAgYm9vbCByZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKTsKLQotICAgIGNvbnN0IFBsYXRmb3JtQ29t
cHV0ZVBpcGVsaW5lKiBwbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0KLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnMoKSBj
b25zdCB7IHJldHVybiBtX2NvbXB1dGVEaW1lbnNpb25zOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lKFBsYXRm
b3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHImJiwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zLCBj
b25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+Jik7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3Jt
Q29tcHV0ZVBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZTsKLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIG1fY29t
cHV0ZURpbWVuc2lvbnMgeyAwLCAwLCAwIH07Ci0jZW5kaWYKLQotICAgIC8vIFByZXNlcnZlZCBm
b3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFJlZlB0cjxHUFVQaXBlbGluZUxh
eW91dD4gbV9sYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2ViQ29yZTo6R1BVQ29tcHV0ZVBpcGVsaW5lLCBp
c0NvbXB1dGVQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzYjM5MTUwNWVlYzI1OWEyM2Q4MTgxZjY3NGRkZDg3ZmMwNTA2MjZjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2lu
Y2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihSZWZQ
dHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3ImJiBjb21wdXRlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBX
VEZNb3ZlKGxheW91dCkgfQotICAgICAgICAsIGNvbXB1dGVTdGFnZSB7IFdURk1vdmUoY29tcHV0
ZSkgfQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Ig
Y29tcHV0ZVN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0N2QwM2IzNjJhNjg4YjJkNzkxMGM3ZmIx
NzliYjFlOTllMDZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2ls
U3RhdGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
Q29tcGFyZUZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbCBkZXB0aFdyaXRlRW5hYmxlZDsK
LSAgICBHUFVDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNjZjUyYjllNWRjYTRiMTE5ZGVhZGU0MmRlZmE5YmViZmY1NDQ3ZWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXAuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRl
ICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0
LmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0j
aW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUVy
cm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZS5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BV
VGV4dHVyZS5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCdWZmZXIo
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0
aW9uIGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJu
IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBpc01hcHBlZCwgZXJyb3JT
Y29wZXMpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbWF4aW11bU1pcExldmVsQ291bnQoR1BVVGV4
dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIEdQVUV4dGVudDNEIHNpemUpCi17Ci0gICAgdW5zaWdu
ZWQgd2lkdGggPSBzaXplLndpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodCA9IDE7Ci0gICAgdW5z
aWduZWQgZGVwdGggPSAxOwotICAgIHN3aXRjaCAoZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVU
ZXh0dXJlRGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzJkOgotICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6Ci0gICAgICAgIGhlaWdo
dCA9IHNpemUuaGVpZ2h0OwotICAgICAgICBkZXB0aCA9IHNpemUuZGVwdGg7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGF1dG8gbWF4RGltZW5zaW9uID0gc3RkOjptYXgoc3RkOjptYXgo
d2lkdGgsIGhlaWdodCksIGRlcHRoKTsKLSAgICBpbnQgaSA9IHNpemVvZihHUFVFeHRlbnQzRDo6
SW5uZXJUeXBlKSAqIDggLSAxOwotICAgIHdoaWxlICghKG1heERpbWVuc2lvbiAmICgxIDw8IGkp
KSAmJiBpID49IDApCi0gICAgICAgIC0taTsKLSAgICBBU1NFUlQoaSA+PSAwKTsKLSAgICByZXR1
cm4gaSArIDE7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVRl
eHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFkZXNjcmlwdG9yLnNpemUud2lkdGggfHwgIWRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQg
fHwgIWRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBkaW1lbnNpb25zLiIpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmICghZGVzY3JpcHRvci5taXBMZXZl
bENvdW50KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
VGV4dHVyZXMgY2FuJ3QgaGF2ZSAwIG1pcGxldmVscy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpIHsKLSAgICAgICAgbV9l
cnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAg
c2FtcGxlcy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICAvLyBodHRwczov
L2RldmVsb3Blci5hcHBsZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVzLnBkZgot
ICAgIHVuc2lnbmVkIG1heFJlZ3VsYXJTaXplID0gODE5MjsKLSAgICB1bnNpZ25lZCBtYXhEZXB0
aFNpemUgPSAyMDQ4OwotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBj
YXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6
ZS53aWR0aCA+IG1heFJlZ3VsYXJTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiMUQgdGV4dHVyZSBpcyB0b28gd2lkZTog
IiwgZGVzY3JpcHRvci5zaXplLndpZHRoLCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJT
aXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0
dXJlIGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQs
ICIgbmVlZHMgdG8gYmUgPD0gIiwgbWF4RGVwdGhTaXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJl
RGltZW5zaW9uOjpfMmQ6Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUud2lkdGggPiBtYXhS
ZWd1bGFyU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4UmVndWxhclNpemUpIHsK
LSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3Ry
aW5nKCIyRCB0ZXh0dXJlIGlzIHRvbyBsYXJnZToiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIg
YW5kICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIgbmVlZCB0byBiZSA8PSAiLCBtYXhSZWd1
bGFyU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAg
ICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0
ZXh0dXJlIGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0
aCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1
cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1h
eERlcHRoU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4RGVwdGhTaXplIHx8IGRl
c2NyaXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJv
clNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjNEIHRleHR1cmUgaXMg
dG9vIGxhcmdlOiAiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIsICIsIGRlc2NyaXB0b3Iuc2l6
ZS5oZWlnaHQsICIsIGFuZCAiLCBkZXNjcmlwdG9yLnNpemUuZGVwdGgsICIgbmVlZCB0byBiZSA8
PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNp
b24gPT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3Vu
dCAhPSAxKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
MUQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQotCi0gICAgYXV0byBtYXhMZXZlbHMgPSBtYXhpbXVtTWlwTGV2ZWxDb3VudChkZXNjcmlw
dG9yLmRpbWVuc2lvbiwgZGVzY3JpcHRvci5zaXplKTsKLSAgICBpZiAoZGVzY3JpcHRvci5taXBM
ZXZlbENvdW50ID4gbWF4TGV2ZWxzKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRl
UHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJUb28gbWFueSBtaXBsZXZlbHM6ICIsIGRlc2NyaXB0
b3IubWlwTGV2ZWxDb3VudCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhMZXZlbHMsICIuIikpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLnNhbXBsZUNv
dW50ICE9IDEgJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSA0KSB7Ci0gICAgICAgIG1fZXJy
b3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBzYW1wbGVDb3VudCBjYW4g
b25seSBiZSAxIG9yIDQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYg
KGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewotICAgICAgICBpZiAoZGVzY3JpcHRvci5k
aW1lbnNpb24gIT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJkKSB7Ci0gICAgICAgICAgICBtX2Vy
cm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmUgZGltZW5zaW9uIGluY29t
cGF0aWJsZSB3aXRoIG11bHRpc2FtcGxpbmcuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgIT0gMSkgewot
ICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0aXNh
bXBsZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzLiIpOwotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEp
IHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiQXJy
YXkgdGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci51c2FnZSAmIHN0YXRpY19j
YXN0PEdQVVRleHR1cmVVc2FnZUZsYWdzPihHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdl
KSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJN
dWx0aXNhbXBsZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBTVE9SQUdFIHVzYWdlLiIpOwotICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogT25seSBzb21l
IHBpeGVsIGZvcm1hdHMgYXJlIGNhcGFibGUgb2YgTVNBQS4gV2hlbiB3ZSBhZGQgdGhvc2UgbmV3
IHBpeGVsIGZvcm1hdHMsIHdlJ2xsIGhhdmUgdG8gYWRkIGZpbHRlcmluZyBjb2RlIGhlcmUuCi0g
ICAgfQotCi0gICAgLy8gVGhlIGhlaWdodCBjb21wb25lbnQgZm9yIDFkIHRleHR1cmVzIGlzIHRo
ZSBhcnJheSBsZW5ndGguCi0gICAgLy8gVGhlIGRlcHRoIGNvbXBvbmVudCBmb3IgMmQgdGV4dHVy
ZXMgaXMgdGhlIGFycmF5IGxlbmd0aC4KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gPT0g
R1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCAhPSAxKSB7
Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQgdGV4dHVy
ZXMgY2FuJ3QgaGF2ZSBkZXB0aCAhPSAxLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0K
LQotICAgIGlmIChkZXNjcmlwdG9yLmZvcm1hdCA9PSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMy
ZmxvYXRTdGVuY2lsOCAmJiBkZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBHUFVUZXh0dXJlRGltZW5z
aW9uOjpfMmQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9y
KCJEZXB0aC9zdGVuY2lsIHRleHR1cmVzIG11c3QgYmUgMmQuIik7Ci0gICAgICAgIHJldHVybiB7
IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3Jt
YXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkg
ewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0
ZW5jaWwgdGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIGlmIChzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4o
ZGVzY3JpcHRvci51c2FnZSkgPj0gc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok1heGltdW1WYWx1ZSkpIHsKLSAgICAgICAgbV9lcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIHVzYWdlIGZsYWdzLiIpOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjp0cnlDcmVh
dGUoKnRoaXMsIGRlc2NyaXB0b3IsIG1ha2VSZWYoKm1fZXJyb3JTY29wZXMpKTsKLX0KLQotUmVm
UHRyPEdQVVNhbXBsZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1w
bGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVU2FtcGxl
cjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yKTsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91
cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4g
R1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1S
ZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IEdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1
cm4gR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLX0KLQot
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTaGFkZXJNb2R1bGUo
Y29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwot
fQotCi1SZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlUmVuZGVy
UGlwZWxpbmUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBH
UFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVVJlbmRl
clBpcGVsaW5lOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLX0K
LQotUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21wdXRl
UGlwZWxpbmUoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewotICAgIHJldHVybiBHUFVDb21w
dXRlUGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwot
fQotCi1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cChj
b25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYg
ZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2JpbmRHcm91cEFsbG9jYXRvcikKLSAg
ICAgICAgbV9iaW5kR3JvdXBBbGxvY2F0b3IgPSBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0
ZShlcnJvclNjb3Blcyk7Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoZGVz
Y3JpcHRvciwgKm1fYmluZEdyb3VwQWxsb2NhdG9yKTsKLX0KLQotUmVmUHRyPEdQVUNvbW1hbmRC
dWZmZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZSgqdGhpcyk7Ci19Ci0KLVJlZlB0cjxH
UFVRdWV1ZT4gR1BVRGV2aWNlOjp0cnlHZXRRdWV1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1
ZXVlKQotICAgICAgICBtX3F1ZXVlID0gR1BVUXVldWU6OnRyeUNyZWF0ZSgqdGhpcyk7Ci0KLSAg
ICByZXR1cm4gbV9xdWV1ZTsKLX0KLSAgICAKLXZvaWQgR1BVRGV2aWNlOjpzZXRTd2FwQ2hhaW4o
UmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCi17Ci0gICAgbV9zd2FwQ2hhaW4gPSBX
VEZNb3ZlKHN3YXBDaGFpbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYmJiZTMw
NGZmMGI2YTc2MmI5ZjQ4YzQ0MTNmYTE1ZWY1ZjQxNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1
ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVRdWV1ZS5oIgotI2luY2x1ZGUg
IkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVUJpbmRHcm91cDsKLWNsYXNzIEdQVUJpbmRHcm91cExheW91dDsKLWNsYXNzIEdQ
VUJ1ZmZlcjsKLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7Ci1jbGFzcyBHUFVDb21wdXRlUGlwZWxp
bmU7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwotY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVTYW1wbGVyOwotY2xhc3MgR1BVU2hhZGVy
TW9kdWxlOwotY2xhc3MgR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0
b3I7Ci1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCdWZm
ZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1
Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7Ci1zdHJ1Y3QgR1BV
U2FtcGxlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLXN0
cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9y
OwotCi1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjsKLQotY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEdQ
VURldmljZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiB0cnlDcmVh
dGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+Jik7Ci0gICAg
c3RhdGljIHZvaWQgcHJld2FybSgpOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gdHJ5Q3JlYXRl
QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24s
IEdQVUVycm9yU2NvcGVzJik7Ci0gICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1
cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVU2Ft
cGxlcj4gdHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpIGNvbnN0
OwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlQmluZEdyb3VwTGF5
b3V0KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8
R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciYmKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlDcmVhdGVC
aW5kR3JvdXAoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikg
Y29uc3Q7Ci0KLSAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiB0cnlDcmVhdGVTaGFkZXJNb2R1
bGUoY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLSAgICBSZWZQdHI8
R1BVQ29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAgICBS
ZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0Owot
Ci0gICAgUmVmUHRyPEdQVVF1ZXVlPiB0cnlHZXRRdWV1ZSgpIGNvbnN0OwotICAgIAotICAgIFBs
YXRmb3JtRGV2aWNlKiBwbGF0Zm9ybURldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1E
ZXZpY2UuZ2V0KCk7IH0KLSAgICBHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fc3dhcENoYWluLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTd2FwQ2hhaW4oUmVmUHRyPEdQ
VVN3YXBDaGFpbj4mJik7Ci0KLSAgICB2b2lkIHNldEVycm9yU2NvcGVzKFJlZjxHUFVFcnJvclNj
b3Blcz4mJiBlcnJvclNjb3BlcykgeyBtX2Vycm9yU2NvcGVzID0gV1RGTW92ZShlcnJvclNjb3Bl
cyk7IH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VXSExTTCA9IHRydWU7Ci0KLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQdHImJik7
Ci0KLSAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRyIG1fcGxhdGZvcm1EZXZpY2U7Ci0gICAgbXV0
YWJsZSBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci0gICAgUmVmUHRyPEdQVVN3YXBDaGFpbj4g
bV9zd2FwQ2hhaW47Ci0gICAgbXV0YWJsZSBSZWZQdHI8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBt
X2JpbmRHcm91cEFsbG9jYXRvcjsKLSAgICBSZWZQdHI8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JT
Y29wZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMjhkNGZjMTJjOGEyNDcy
OGNlMjA2NWJkMjcyMWRiYWY4MmJmZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVyIGZpbHRlciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQotewotICAgIHN3aXRjaCAoZmlsdGVyKSB7Ci0gICAgY2FzZSBHUFVFcnJv
ckZpbHRlcjo6T3V0T2ZNZW1vcnk6Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BV
T3V0T2ZNZW1vcnlFcnJvcj4oR1BVT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkpKTsKLSAgICBj
YXNlIEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uOgotICAgICAgICByZXR1cm4gR1BVRXJyb3Io
UmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVz
c2FnZSkpKTsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpOb25lOgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVWYWxpZGF0
aW9uRXJyb3I+KEdQVVZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKCJCYWQgZXJyb3IhIikpKTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZjOGZhZmFmYTQ1ZjBmZjE0N2NiOGJi
YjQ3MTMzMjI3NTJjMjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVU91dE9mTWVtb3J5RXJyb3IuaCIK
LSNpbmNsdWRlICJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwot
Ci11c2luZyBHUFVFcnJvciA9IFZhcmlhbnQ8UmVmUHRyPEdQVU91dE9mTWVtb3J5RXJyb3I+LCBS
ZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj47Ci0KLUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVy
cm9yRmlsdGVyLCBjb25zdCBTdHJpbmcmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yRmlsdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NjlmZWYzMjcw
NWQ5OWJmZWNlYTAwODkxZmYxNjQ0YTBhNGQxNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yRmlsdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyIHsKLSAgICBOb25lLAotICAg
IE91dE9mTWVtb3J5LAotICAgIFZhbGlkYXRpb24sCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJiZWU5Y2YxYmZkMGMwMmMyMDU1YjcyMjQwMTIxODM4NGQzNmM1
OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgdW5zaWduZWQgbWF4VW5jYXB0dXJlZEVycm9yRXZl
bnRzQWxsb3dlZCA9IDI1NjsKLQotUmVmPEdQVUVycm9yU2NvcGVzPiBHUFVFcnJvclNjb3Blczo6
Y3JlYXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR1BVRXJyb3JTY29wZXMoV1RGTW92ZShjYWxsYmFjaykpKTsKLX0KLQot
R1BVRXJyb3JTY29wZXM6OkdQVUVycm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYg
Y2FsbGJhY2spCi0gICAgOiBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFdURk1vdmUoY2FsbGJh
Y2spKQotICAgICwgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKG1heFVuY2FwdHVy
ZWRFcnJvckV2ZW50c0FsbG93ZWQpCi17Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hF
cnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAgICBtX2Vycm9yU2NvcGVzLmFw
cGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7Ci19Ci0KLXN0ZDo6b3B0
aW9uYWw8R1BVRXJyb3I+IEdQVUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFp
bE1lc3NhZ2UpCi17Ci0gICAgaWYgKG1fZXJyb3JTY29wZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGZhaWxNZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0cyEiOwotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gc2NvcGUgPSBtX2Vycm9yU2NvcGVzLnRh
a2VMYXN0KCk7Ci0gICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9u
ZSA/IHN0ZDo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVz
OjpnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmls
dGVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRfaWYobV9lcnJvclNjb3Blcy5y
YmVnaW4oKSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtmaWx0ZXJdKGNvbnN0IEVycm9yU2NvcGUm
IHNjb3BlKSB7Ci0gICAgICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6
Ok5vbmUgfHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsKLSAgICB9KTsKLQotICAgIGlmIChpdGVy
YXRvciA9PSBtX2Vycm9yU2NvcGVzLnJlbmQoKSkgewotICAgICAgICBpZiAoIW1fbnVtVW5jYXB0
dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBt
X3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSkpOwot
ICAgICAgICBpZiAoISgtLW1fbnVtVW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkpCi0gICAg
ICAgICAgICBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKEdQVUVycm9yRmls
dGVyOjpWYWxpZGF0aW9uLCAiV2ViR1BVOiBUb28gbWFueSBlcnJvcnM7IG5vIG1vcmUgZXJyb3Ig
ZXZlbnRzIHdpbGwgZmlyZSBvbiB0aGlzIEdQVURldmljZS4iKSk7Ci0KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIElmIHRoZSBzY29wZSBoYXMgYWxyZWFkeSBjYXB0dXJlZCBhbiBl
cnJvciwgaWdub3JlIHRoaXMgbmV3IG9uZS4KLSAgICBpZiAoaXRlcmF0b3ItPmVycm9yKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpdGVyYXRvci0+ZXJyb3IgPSBjcmVhdGVFcnJvcihmaWx0ZXIs
IG1lc3NhZ2UpOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5lcmF0ZVByZWZpeGVkRXJy
b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGdlbmVyYXRlRXJyb3IobV9wcmVmaXgg
KyBtZXNzYWdlLCBHUFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTA5YzY4NGE5M2M3NmIzN2RmN2NkMDczNWY3ZGZlNzhl
MmFjN2YyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yLmgiCi0jaW5jbHVkZSAiR1BV
RXJyb3JGaWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR1BVRXJyb3JTY29wZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVFcnJvclNj
b3Blcz4gewotcHVibGljOgotICAgIHVzaW5nIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChHUFVFcnJvciYmKT47Ci0gICAgc3RhdGljIFJlZjxHUFVFcnJvclNjb3Blcz4g
Y3JlYXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0gICAgdm9pZCBwdXNoRXJyb3JT
Y29wZShHUFVFcnJvckZpbHRlcik7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJy
b3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVFcnJvcihj
b25zdCBTdHJpbmcmLCBHUFVFcnJvckZpbHRlciA9IEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9u
KTsKLSAgICB2b2lkIGdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIHNldEVycm9yUHJlZml4KGNvbnN0IFN0cmluZyYgcHJlZml4KSB7IG1fcHJlZml4ID0gcHJl
Zml4OyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEVycm9yU2NvcGUgewotICAgICAgICBjb25z
dCBHUFVFcnJvckZpbHRlciBmaWx0ZXI7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+
IGVycm9yOwotICAgIH07Ci0KLSAgICBHUFVFcnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxs
YmFjayYmKTsKLQotICAgIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrIG1fdW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2s7Ci0KLSAgICBWZWN0b3I8RXJyb3JTY29wZT4gbV9lcnJvclNjb3BlczsKLSAgICBT
dHJpbmcgbV9wcmVmaXg7Ci0gICAgdW5zaWduZWQgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNB
bGxvd2VkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVFeHRlbnQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUV4dGVudDNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NDgyNjUyMGNjNWU3
ZTBjYzlmZjQzZmQxNDI4MGY1MDQ0YjdlYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUV4dGVudDNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi1zdHJ1Y3QgR1BVRXh0ZW50M0QgewotICAgIHVzaW5nIElubmVyVHlwZSA9IHVuc2ln
bmVkOwotICAgIElubmVyVHlwZSB3aWR0aDsKLSAgICBJbm5lclR5cGUgaGVpZ2h0OwotICAgIElu
bmVyVHlwZSBkZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGltaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGltaXRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMmU1MWMzZTcz
Yjk1NjFjYmM4MTU0ZmQwOTc2ZDc4ZTllZjgyYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxpbWl0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jb25zdCB1bnNpZ25lZCBtYXhWZXJ0ZXhCdWZmZXJzID0gMTY7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVhMjRlZWY1Mjc0ZmJjMGFkNzY3NGY2YmM1NmU4ZjE5NmUxYzk2MTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxvYWRPcC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUxvYWRPcCB7Ci0gICAg
Q2xlYXIsCi0gICAgTG9hZAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVT2JqZWN0QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
N2IyZDkxOGMyZTU0NTE3Y2IzN2ZmZmVhNmIyNjJkNDVmODJmYTlmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU9iamVjdEJhc2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVPYmplY3RCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVT2JqZWN0QmFz
ZSgpID0gZGVmYXVsdDsKLQotcHJvdGVjdGVkOgotICAgIEdQVU9iamVjdEJhc2UoUmVmPEdQVUVy
cm9yU2NvcGVzPiYmIHJlcG9ydGVyKQotICAgICAgICA6IG1fZXJyb3JTY29wZXMoV1RGTW92ZShy
ZXBvcnRlcikpIHsgfQotCi0gICAgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvclNjb3BlczsgfQotCi1wcml2YXRlOgotICAgIFJlZjxHUFVFcnJvclNj
b3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWY0MjBlOTdkZmUzYmYwNzU2NmM1YjZhMGZkZWM0NjY4OTYxNzk0My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU91dE9mTWVtb3J5
RXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVPdXRPZk1lbW9yeUVycm9yPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxHUFVPdXRPZk1lbW9yeUVycm9yPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEdQVU91dE9mTWVtb3J5RXJyb3IpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdjODgxNjU1NDM1NzEyMzEwNWI2ZTllN2M4ODMzNDFmYzJiZDgy
NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotR1BVUGlwZWxpbmU6On5HUFVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MmVlOGQ3YTNiN2VmZjE5OTA2ZTk1MDA4MTBm
MzQ0MmMzY2ViNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVVBpcGVsaW5lPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUGlwZWxpbmUoKTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyBy
ZXR1cm4gcGlwZWxpbmUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxMjJiYTkzNmRmNGQwMDZlYjYx
M2U5NjE2OTY2MGMxMWY5OWQ0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VVBpcGVsaW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSB7Ci0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMTk5M2E5ZTJmMDBiNDJlNDM4
NDMxN2NhNjVkYTRlZDRkZWExZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVs
aW5lTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQVVBpcGVs
aW5lTGF5b3V0PiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVUGlw
ZWxpbmVMYXlvdXQoV1RGTW92ZShkZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHMpKSk7Ci19Ci0K
LUdQVVBpcGVsaW5lTGF5b3V0OjpHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQ
VUJpbmRHcm91cExheW91dD4+JiYgbGF5b3V0cykKLSAgICA6IG1fYmluZEdyb3VwTGF5b3V0cyhX
VEZNb3ZlKGxheW91dHMpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTc5OTk0NmZjYmEwMTJjY2VkNDZhN2YxNzIzOTI5Njc0NTkxOGZjMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dCA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVVBpcGVsaW5lTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVQaXBlbGlu
ZUxheW91dD4gY3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKTsKLQotICAgIGNv
bnN0IFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mIGJpbmRHcm91cExheW91
dHMoKSBjb25zdCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dHM7IH0KLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91
cExheW91dD4+JiYpOwotCi0gICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+
PiBtX2JpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGExZWUyYzc3NTFmNDcxZmQ3NTQ1ODEw
Yjc3OGE1NDMyMmY1ODIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXBMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBW
ZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRm
b3JtVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQbGF0
Zm9ybVR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYzc2NzI2Nzg2MmE1
ZTgwMDdmZDhlMzMzMWRlNzZlNjlkZTNiMTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVBsYXRmb3JtVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTUVUQUwpCi0jaW5jbHVkZSAiR1BVUGxh
dGZvcm1UeXBlc01ldGFsLmgiCi0jZWxpZiBVU0UoREFXTikKLSNpbmNsdWRlICJHUFVQbGF0Zm9y
bVR5cGVzRGF3bi5oIgotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0gZm9yIFdl
YkdQVSIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDlmYTRhMDUyNjMzNGYwZjdkM2Y3ZDlkZTg5MTFl
ZWQ5Y2NhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRC
dWZmZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSkKLXsK
LSAgICBtX2NvbW1hbmRCdWZmZXItPnNldElzRW5jb2RpbmdQYXNzKHRydWUpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3
MjQ0ZjJlZTFmZGNkNWQxYjE3Mzc1YzllNDExZDBmNjZkYzVhOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQ29t
bWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUJpbmRH
cm91cDsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9
IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1
bnNpZ25lZCwgR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoKLSAgICBHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBHUFVDb21tYW5k
QnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdl
dCgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpID0gMDsKLSNpZiBVU0UoTUVUQUwpCi0gICAgdmly
dHVhbCB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkKSA9IDA7
Ci0KLSAgICAvLyBSZW5kZXIgY29tbWFuZCBlbmNvZGVyIG1ldGhvZHMuCi0gICAgdmlydHVhbCB2
b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWdu
ZWQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVExCdWZm
ZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotICAgIC8vIENvbXB1dGUuCi0gICAgdmly
dHVhbCB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIs
IHVuc2lnbmVkKSB7IH0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLSAgICBSZWY8R1BVQ29tbWFu
ZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdjMDYyOGVmN2EzMDM1
ZTU5MjIxZmVkOTg3ZDVmNTdkYjA3YWQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBTdHJpbmcgZW50cnlQ
b2ludDsKLX07Ci0KLXN0cnVjdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgOiBHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgICAgIDogR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIG1vZHVsZSB7IFdURk1vdmUo
bW9kdWxlKSB9Ci0gICAgewotICAgIH0KLQotICAgIFJlZjxHUFVTaGFkZXJNb2R1bGU+IG1vZHVs
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ1Mjc4NTNhMzRhZmUwMzUzYzRmNzg3
Nzk5Y2NiZDQ2NmQ4ZWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5j
bHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbW1h
bmRCdWZmZXI7Ci1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVVF1ZXVlIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVF1ZXVl
PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybVF1ZXVlKiBwbGF0
Zm9ybVF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVF1ZXVlLmdldCgpOyB9Ci0KLSAg
ICB2b2lkIHN1Ym1pdChWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+PiYmKTsKLQotICAgIFN0
cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0KLXByaXZhdGU6Ci0gICAgR1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyJiYsIGNv
bnN0IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyIG1fcGxhdGZvcm1R
dWV1ZTsKLSAgICBXZWFrUHRyPGNvbnN0IEdQVURldmljZT4gbV9kZXZpY2U7Ci0gICAgTWFpblRo
cmVhZERlZmVycmFibGVUYXNrIG1fcHJlc2VudFRhc2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhNjRiNDU5NGFlMTNiNGM0NmQ4
ZTVjNjZhNzI0NWI3MDExNzk2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVD
b2xvci5oIgotI2luY2x1ZGUgIkdQVUxvYWRPcC5oIgotI2luY2x1ZGUgIkdQVVN0b3JlT3AuaCIK
LSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBsb2FkT3A7Ci0gICAgR1BVU3RvcmVPcCBzdG9y
ZU9wOwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAxIH07Ci19OwotCi1zdHJ1
Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0
dXJlPiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBkZXB0aExvYWRPcDsKLSAg
ICBHUFVTdG9yZU9wIGRlcHRoU3RvcmVPcDsKLSAgICBmbG9hdCBjbGVhckRlcHRoOwotCi0gICAg
Ly8gRklYTUU6IEFkZCBzdGVuY2lsIHN1cHBvcnQuCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGZpbmFsIDogR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBH
UFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJik7Ci0KLSAg
ICBSZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvciB7Ci0gICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4
NDQzZjVkNGMxMjQ1MDBmOGZlM2M1MTI4NzdjMGUxNTM4YWJlYzEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQnVmZmVyOwot
Y2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLQotc3RydWN0IEdQVUNvbG9yOwotc3RydWN0IEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlciA6IHB1Ymxp
YyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYm
LCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoUmVm
PGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIHNldEJsZW5kQ29sb3IoY29u
c3QgR1BVQ29sb3ImKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7
Ci0gICAgdm9pZCBzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldEluZGV4QnVmZmVyKEdQVUJ1
ZmZlciYsIHVpbnQ2NF90IG9mZnNldCk7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2ln
bmVkIGluZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1
bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmly
c3RJbnN0YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1
bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRl
eCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0KLXByaXZhdGU6Ci0gICAgR1BVUmVuZGVyUGFz
c0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXJTbWFydFB0ciYmKTsKLSAgICB+R1BVUmVuZGVyUGFzc0VuY29kZXIoKSB7IGVuZFBhc3MoKTsg
fQotCi0gICAgLy8gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIKLSAgICBjb25zdCBQbGF0Zm9y
bVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpIGZpbmFsIHsgbV9wbGF0Zm9ybVJlbmRl
clBhc3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIHVzZVJl
c291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdlKSBmaW5hbDsKLSAgICB2
b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciBvZmZzZXQs
IHVuc2lnbmVkIGluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0
IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGZpbmFsOwot
Ci0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gbV9pbmRleEJ1ZmZlcjsKLSAgICB1aW50NjRfdCBtX2lu
ZGV4QnVmZmVyT2Zmc2V0OwotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotICAgIFBsYXRmb3JtUmVu
ZGVyUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI7Ci0gICAg
UmVmUHRyPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiBtX3BpcGVsaW5lOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5l
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTZhMjQxYzA0NTMwODliMGJhYTE1
MDFiODk1N2I0YjJlYzhmYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBp
cGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUu
aCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BV
RXJyb3JTY29wZXM7Ci0KLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQ
VVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVSZW5kZXJQaXBlbGluZSgpOwot
Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2Nv
cGVzJik7Ci0KLSAgICBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7Ci0KLSNpZiBVU0UoTUVUQUwp
Ci0gICAgTVRMRGVwdGhTdGVuY2lsU3RhdGUgKmRlcHRoU3RlbmNpbFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQotI2VuZGlmCi0gICAgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQotICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5
IHByaW1pdGl2ZVRvcG9sb2d5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVUb3BvbG9neTsg
fQotICAgIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGluZGV4Rm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleEZvcm1hdDsgfQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkKLSAg
ICBHUFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYsIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmLCBHUFVQcmltaXRpdmVUb3BvbG9neSwgc3Rk
OjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91
dD4mLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7Ci0KLSAgICBSZXRh
aW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7Ci0jZW5kaWYg
Ly8gVVNFKE1FVEFMKQotICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRm
b3JtUmVuZGVyUGlwZWxpbmU7Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgbV9wcmltaXRpdmVU
b3BvbG9neTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0PiBtX2luZGV4Rm9ybWF0
OwotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0g
ICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91dDsKLSAgICBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3JCYXNlIG1fcmVuZGVyRGVzY3JpcHRvckJhc2U7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2Vi
Q29yZTo6R1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZTJkYTlhYWEzMzZhN2FmMDFkOTMyODJkZWZlMDJh
YzlhNzM5MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yU3Rh
dGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVZlcnRleElucHV0
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1lbnVtIGNsYXNzIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKLSAgICBQb2ludExpc3Qs
Ci0gICAgTGluZUxpc3QsCi0gICAgTGluZVN0cmlwLAotICAgIFRyaWFuZ2xlTGlzdCwKLSAgICBU
cmlhbmdsZVN0cmlwCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSB7Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgVmVj
dG9yPEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3RhdGU7Ci0g
ICAgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0OwotfTsKLQotc3RydWN0IEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXgsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3JCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBX
VEZNb3ZlKGxheW91dCkgfQotICAgICAgICAsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJh
c2UoYmFzZSkKLSAgICAgICAgLCB2ZXJ0ZXhTdGFnZShXVEZNb3ZlKHZlcnRleCkpCi0gICAgICAg
ICwgZnJhZ21lbnRTdGFnZShXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICB7Ci0gICAgfQotCi0gICAg
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwotICAgIHN0ZDo6b3B0
aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2JhMGJkMTA2NmIwMWEwNjNjZmMzODZjYmMxZGQ0YzkzZDg0YjE2Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSA8b3B0aW9uYWw+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51
bSBjbGFzcyBHUFVQb3dlclByZWZlcmVuY2UgOiBib29sIHsgTG93UG93ZXIsIEhpZ2hQZXJmb3Jt
YW5jZSB9OwotCi1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBzdGQ6Om9w
dGlvbmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJlbmNlOwotfTsKLSAgICAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFhNjQ0NjlmY2NlYjY3NGQ4OWZlZWEwYmJhMTJjZTNm
ZjNmMmEzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3Jp
cHRvcjsKLQotY2xhc3MgR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNhbXBsZXI+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpOwotCi0gICAgUGxhdGZv
cm1TYW1wbGVyKiBwbGF0Zm9ybVNhbXBsZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU2Ft
cGxlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEdQVVNhbXBsZXIoUGxhdGZvcm1TYW1wbGVy
U21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciBtX3BsYXRmb3JtU2Ft
cGxlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU2FtcGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOTM3MGZlZGQ0MDljZmUyYmQzNzYwMTU4MjY2ZTAwMzQwMTcxMWExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWVudW0gY2xhc3MgR1BVQWRkcmVzc01vZGUgewotICAgIENsYW1wVG9FZGdlLAotICAg
IFJlcGVhdCwKLSAgICBNaXJyb3JSZXBlYXQsCi19OwotCi1lbnVtIGNsYXNzIEdQVUZpbHRlck1v
ZGUgewotICAgIE5lYXJlc3QsCi0gICAgTGluZWFyLAotfTsKLQotc3RydWN0IEdQVVNhbXBsZXJE
ZXNjcmlwdG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVUgeyBHUFVBZGRyZXNz
TW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVYgeyBH
UFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNz
TW9kZVcgeyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVGaWx0ZXJNb2Rl
IG1hZ0ZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2Rl
IG1pbkZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2Rl
IG1pcG1hcEZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBmbG9hdCBsb2RN
aW5DbGFtcCB7IDAgfTsKLSAgICBmbG9hdCBsb2RNYXhDbGFtcCB7IDB4ZmZmZmZmZmYgfTsKLSAg
ICB1bnNpZ25lZCBtYXhBbmlzb3Ryb3B5IHsgMSB9OwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBj
b21wYXJlRnVuY3Rpb24geyBHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyIH07Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWE1NmQxMTg2OWEyZjkzMDk5NzMxNGZh
MGQ2NjQxZWEyMDBjMThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1
bGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVz
LmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLQotY2xh
c3MgR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hhZGVyTW9kdWxlPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IHRyeUNyZWF0ZShj
b25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7Ci0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUqIHBsYXRm
b3JtU2hhZGVyTW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aGxzbE1vZHVsZSA/IG51bGxwdHIg
OiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9Ci0gICAgY29uc3QgV0hMU0w6OlNoYWRl
ck1vZHVsZSogd2hsc2xNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3dobHNsTW9kdWxlLmdldCgp
OyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFk
ZXJNb2R1bGVTbWFydFB0ciYmKTsKLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BV
U2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxl
KTsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3Jt
U2hhZGVyTW9kdWxlOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V0hMU0w6OlNoYWRlck1vZHVsZT4gbV93aGxzbE1vZHVsZTsKLSNlbmRpZgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
Y2ZlMGFkNWE4N2IzMmM0OGFlMzRiZDc2ZDJmMWM1OTgxYmU3ZDVkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIFN0cmluZyBj
b2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTdG9yZU9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3Rv
cmVPcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjc4MzI0ODkxM2U0NTFkYzM2
YTQ3YWI1ZjBlMjNjYTI0YWRjMzBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9y
ZU9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgR1BVU3RvcmVPcCB7Ci0gICAgU3RvcmUKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNlMjc3NDdlM2U3ZTI2ZGRiZTEyNzA3MDAwODBkYWQyMDE0YWFmYTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwKQEAg
LTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0
dXJlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLS8vIFBsYXRmb3JtTGF5ZXIgaW1wbGVt
ZW50YXRpb24gbmVlZGVkIG90aGVyd2lzZSBjb21waWxpbmcgZGVyaXZlZCBzb3VyY2VzIHdpbGwg
ZmFpbC4KLSNpZiBVU0UoTklDT1NJQSkKLSNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5o
IgotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlci5oIgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCi0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXQ7Ci0KLWNsYXNzIEdQ
VVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4gewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiB0cnlDcmVhdGUoY29uc3QgR1BVU3dhcENo
YWluRGVzY3JpcHRvciYsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0KLSAgICBSZWZQdHI8R1BV
VGV4dHVyZT4gdHJ5R2V0Q3VycmVudFRleHR1cmUoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBS
ZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiB0YWtlRHJhd2FibGUoKTsKLSNlbmRpZgotCi0gICAg
Ly8gRm9yIEdQVUNhbnZhc0NvbnRleHQuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwotCi0gICAgdm9pZCBwcmVzZW50KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBtX2N1cnJlbnREcmF3YWJs
ZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0g
ICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOwotICAgIFBs
YXRmb3JtRHJhd2FibGVTbWFydFB0ciBtX2N1cnJlbnREcmF3YWJsZTsKLSAgICBPcHRpb25TZXQ8
R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3MDQyMDQ2M2NhYWJhMTVmZTdkNzMx
NjJhYThlYTdiZDQ4MWY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVURldmlj
ZS5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJl
VXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU3dhcENoYWluRGVz
Y3JpcHRvckJhc2UgewotICAgIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1
cmVVc2FnZUZsYWdzIHVzYWdlIHsgc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpIH07Ci19OwotCi1zdHJ1Y3Qg
R1BVU3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAg
ICBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKFJlZjxHUFVEZXZpY2U+JiYgZ3B1RGV2aWNlLCBjb25z
dCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIGRldmljZShXVEZNb3ZlKGdwdURldmlj
ZSkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBSZWY8R1BVRGV2aWNlPiBkZXZpY2U7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZmNkNTZmNDE4NTU4M2JmOTBjNmRhN2I0NGFj
N2Y2YzA0Yjg1MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5j
bHVkZSAiR1BVVGV4dHVyZVVzYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVz
OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVRleHR1cmUgOiBw
dWJsaWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4dHVy
ZURlc2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVy
ZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmUgKnBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpOyB9Ci0gICAgYm9vbCBpc0Nv
cHlTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29w
eURlc3RpbmF0aW9uKTsgfQotICAgIGJvb2wgaXNPdXRwdXRBdHRhY2htZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRh
Y2htZW50KTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Uu
Y29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pOyB9Ci0gICAgYm9vbCBpc1NhbXBsZWQoKSBjb25z
dCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBs
ZWQpOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRh
aW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpOyB9Ci0gICAgdW5zaWduZWQgcGxh
dGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Vc2FnZTsgfQotCi0gICAgUmVm
UHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHZvaWQg
ZGVzdHJveSgpIHsgbV9wbGF0Zm9ybVRleHR1cmUgPSBudWxscHRyOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmLCBPcHRpb25T
ZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAgUGxhdGZvcm1UZXh0dXJlU21hcnRQ
dHIgbV9wbGF0Zm9ybVRleHR1cmU7Ci0KLSAgICBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpG
bGFncz4gbV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNhZ2U7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNjg1YTIxOWYzMjli
NjA3MDRkM2U2NTYyM2I1YTZhYjdlZGUyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
VGV4dHVyZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVFeHRlbnQzRC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJH
UFVUZXh0dXJlVXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQ
VVRleHR1cmVEaW1lbnNpb24gewotICAgIF8xZCwKLSAgICBfMmQsCi0gICAgXzNkCi19OwotICAg
IAotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yIHsKLSAgICBHUFVFeHRlbnQzRCBzaXplOwot
ICAgIHVuc2lnbmVkIG1pcExldmVsQ291bnQ7Ci0gICAgdW5zaWduZWQgc2FtcGxlQ291bnQ7Ci0g
ICAgR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb247Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBm
b3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRm9ybWF0LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDBmZGExNjZiODMwMzg4ODVmYjEyMmRjNGI3
ZTNhODZhNGE5ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBHUFVUZXh0dXJlRm9ybWF0IHsKLSAgICBSZ2JhOHVub3JtLAotICAgIFJnYmE4dWludCwK
LSAgICBCZ3JhOHVub3JtLAotICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4LAotICAgIEJncmE4dW5v
cm1TUkdCLAotICAgIFJnYmExNmZsb2F0LAotfTsKLQotdXNpbmcgUGxhdGZvcm1UZXh0dXJlRm9y
bWF0ID0gdW5zaWduZWQ7Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0M2U2ZmJhZTllZTQwOTUxZTg1NDhh
MTZhOGJkNzI5YWQ4OGJhZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVV
c2FnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIEdQVVRleHR1cmVVc2FnZUZs
YWdzID0gdW5zaWduZWQ7Ci0gICAgCi1jbGFzcyBHUFVUZXh0dXJlVXNhZ2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVUZXh0dXJlVXNhZ2U+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEZsYWdz
IDogR1BVVGV4dHVyZVVzYWdlRmxhZ3MgewotICAgICAgICBDb3B5U291cmNlICAgICAgID0gMSA8
PCAwLAotICAgICAgICBDb3B5RGVzdGluYXRpb24gID0gMSA8PCAxLAotICAgICAgICBTYW1wbGVk
ICAgICAgICAgID0gMSA8PCAyLAotICAgICAgICBTdG9yYWdlICAgICAgICAgID0gMSA8PCAzLAot
ICAgICAgICBPdXRwdXRBdHRhY2htZW50ID0gMSA8PCA0LAotICAgICAgICBNYXhpbXVtVmFsdWUg
ICAgID0gMSA8PCA1LAotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkOWE1
YzcwNzRjNGFlNjMzZThlNjAxMmM1Y2M4NzY4YmZiNGYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVD
b21wYXJlRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGxhdGZvcm1UZXh0dXJlRm9ybWF0IHBsYXRmb3JtVGV4dHVyZUZv
cm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCk7Ci1QbGF0Zm9ybUNvbXBh
cmVGdW5jdGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihH
UFVDb21wYXJlRnVuY3Rpb24pOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzk3ZTU0NTQ2MTM4NmNmZmNkNDEwODc3ZGMzNjE0ZjZkZjE4Mjg3OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiR1BVVmFsaWRhdGlvbkVycm9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVWYWxpZGF0aW9uRXJyb3I+IEdQVVZhbGlkYXRp
b25FcnJvcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBHUFVWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSkpOwotfQotCi1HUFVWYWxpZGF0
aW9uRXJyb3I6OkdQVVZhbGlkYXRpb25FcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAg
OiBtX21lc3NhZ2UobWVzc2FnZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzIyNWFjMjA3ZmNhM2JlZGJlNjExNTVhNzU5N2FkYTU1NjczODVlMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgR1BVVmFsaWRhdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8
R1BVVmFsaWRhdGlvbkVycm9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVWYWxpZGF0
aW9uRXJyb3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1l
c3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBHUFVWYWxpZGF0aW9uRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIFN0
cmluZyBtX21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYWM2MzVlOGU1ZDY3OTg0MjZjZTVjZmRiZmVj
ZGVlMzEyOTgwNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVmVydGV4
Rm9ybWF0IHsKLSAgICBGbG9hdCwKLSAgICBGbG9hdDIsCi0gICAgRmxvYXQzLAotICAgIEZsb2F0
NCwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIHsKLSAgICB1aW50
NjRfdCBvZmZzZXQ7Ci0gICAgR1BVVmVydGV4Rm9ybWF0IGZvcm1hdDsKLSAgICB1bnNpZ25lZCBz
aGFkZXJMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNThiYTNmMjM1NDg0MWQ4YWQ0ZWU4ZjEyNzIyZjQyMDA4MjQ0
ZjEwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotZW51bSBjbGFzcyBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAgICBWZXJ0ZXgsCi0gICAg
SW5zdGFuY2UsCi19OwotCi1zdHJ1Y3QgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvciB7Ci0gICAg
dWludDY0X3Qgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1vZGU7Ci0gICAgVmVj
dG9yPEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+IGF0dHJpYnV0ZVNldDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjMy
ZmU1OTkxNWVmNWE5MWE4YWE1YWE1OGU3NGMwNjQzOWRhNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVJbmRleEZv
cm1hdCB7Ci0gICAgVWludDE2LAotICAgIFVpbnQzMiwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0OwotICAgIFZl
Y3RvcjxzdGQ6Om9wdGlvbmFsPEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3I+PiB2ZXJ0ZXhCdWZm
ZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlMzQ4YzIxMGZlMDFjY2ZlMDJiNjA1NmI5MGU4
NmE4MzVlN2Q0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3Vw
QWxsb2NhdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6
OmNyZWF0ZShHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdQVUJpbmRHcm91cEFsbG9jYXRvcihlcnJvcnMpKTsKLX0KLQotR1BVQmluZEdyb3VwQWxs
b2NhdG9yOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9ycykKLSAg
ICA6IG1fZXJyb3JTY29wZXMobWFrZVJlZihlcnJvcnMpKQotewotfQotCi0jaWYgVVNFKE1FVEFM
KQotCi1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJP
ZmZzZXRzPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRlQW5kU2V0RW5jb2RlcnMoTVRM
QXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnQsIE1U
TEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZSkKLXsKLSAgICBpZDxNVExEZXZpY2U+IGRldmljZSA9
IG5pbDsKLSAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkPE5TVUludGVnZXI+KG1fbGFz
dE9mZnNldCk7Ci0KLSAgICBpZiAodmVydGV4KSB7Ci0gICAgICAgIGRldmljZSA9IHZlcnRleC5k
ZXZpY2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gdmVydGV4LmVuY29kZWRMZW5ndGg7Ci0g
ICAgfQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBkZXZpY2UgPSBmcmFnbWVudC5kZXZp
Y2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gZnJhZ21lbnQuZW5jb2RlZExlbmd0aDsKLSAg
ICB9Ci0gICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgZGV2aWNlID0gY29tcHV0ZS5kZXZpY2U7
Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gY29tcHV0ZS5lbmNvZGVkTGVuZ3RoOwotICAgIH0K
LQotICAgIC8vIE5vIGFyZ3VtZW50czsgbm90aGluZyB0byBiZSBkb25lLgotICAgIGlmICghZGV2
aWNlKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgaWYgKGNoZWNrZWRPZmZzZXQuaGFzT3Zl
cmZsb3dlZCgpKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQ
VUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgYXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnZhbHVlKCk7Ci0KLSAgICBpZiAo
bV9hcmd1bWVudEJ1ZmZlciAmJiBuZXdPZmZzZXQgPiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxl
bmd0aCkgewotICAgICAgICBpZiAoIXJlYWxsb2NhdGUobmV3T2Zmc2V0KSkKLSAgICAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgfSBlbHNlIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAg
ICAvLyBCYXNlZCBvZmYgbWltaW11bSBhbGxvY2F0aW9uIGZvciBhIHNoYXJlZC1tZW1vcnkgTVRM
QnVmZmVyIG9uIG1hY09TLgotICAgICAgICBOU1VJbnRlZ2VyIG1pbmltdW1TaXplID0gNDA5NjsK
LSAgICAgICAgaWYgKG1pbmltdW1TaXplIDwgbmV3T2Zmc2V0KQotICAgICAgICAgICAgbWluaW11
bVNpemUgPSBuZXdPZmZzZXQ7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgIG1fYXJndW1lbnRCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UgbmV3QnVmZmVyV2l0
aExlbmd0aDptaW5pbXVtU2l6ZSBvcHRpb25zOjBdKTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgICAgIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAgICAg
ICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9m
TWVtb3J5KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBBcmd1bWVudEJ1ZmZlck9mZnNldHMgb2Zmc2V0czsKLQotICAgIC8vIE1hdGggaW4gdGhlIGZv
bGxvd2luZyBzZWN0aW9uIGlzIGd1YXJkZWQgYWdhaW5zdCBvdmVyZmxvdyBieSBuZXdPZmZzZXQg
Y2FsY3VsYXRpb24uCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAo
dmVydGV4KSB7Ci0gICAgICAgIG9mZnNldHMudmVydGV4ID0gbV9sYXN0T2Zmc2V0OwotICAgICAg
ICBbdmVydGV4IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0
OipvZmZzZXRzLnZlcnRleF07Ci0gICAgfQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBv
ZmZzZXRzLmZyYWdtZW50ID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBt
X2xhc3RPZmZzZXQ7Ci0gICAgICAgIFtmcmFnbWVudCBzZXRBcmd1bWVudEJ1ZmZlcjptX2FyZ3Vt
ZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5mcmFnbWVudF07Ci0gICAgfQotICAgIGlm
IChjb21wdXRlKSB7Ci0gICAgICAgIG9mZnNldHMuY29tcHV0ZSA9ICh2ZXJ0ZXggPyB2ZXJ0ZXgu
ZW5jb2RlZExlbmd0aCA6IDApICsgKGZyYWdtZW50ID8gZnJhZ21lbnQuZW5jb2RlZExlbmd0aCA6
IDApICsgbV9sYXN0T2Zmc2V0OwotICAgICAgICBbY29tcHV0ZSBzZXRBcmd1bWVudEJ1ZmZlcjpt
X2FyZ3VtZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5jb21wdXRlXTsKLSAgICB9Ci0K
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX2xhc3RPZmZzZXQgPSBuZXdP
ZmZzZXQ7Ci0gICAgKyttX251bUJpbmRHcm91cHM7Ci0KLSAgICByZXR1cm4gb2Zmc2V0czsKLX0K
LQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NTcsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDA2NTggT3B0aW1pemUgcmVhbGxvY2F0aW9uIGFuZCByZXNldCBiZWhhdmlv
ci4KLWJvb2wgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpyZWFsbG9jYXRlKE5TVUludGVnZXIgbmV3
T2Zmc2V0KQotewotICAgIE1UTEJ1ZmZlciAqbmV3QnVmZmVyID0gbmlsOwotCi0gICAgYXV0byBu
ZXdMZW5ndGggPSBDaGVja2VkPE5TVUludGVnZXI+KG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVu
Z3RoKTsKLSAgICB3aGlsZSAobmV3TGVuZ3RoIDwgbmV3T2Zmc2V0KSB7Ci0gICAgICAgIG5ld0xl
bmd0aCArPSBuZXdMZW5ndGggLyA0VTsKLQotICAgICAgICBpZiAobmV3TGVuZ3RoLmhhc092ZXJm
bG93ZWQoKSkgewotICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxO
U1VJbnRlZ2VyPjo6bWF4KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbmV3QnVmZmVyID0gW21f
YXJndW1lbnRCdWZmZXIuZ2V0KCkuZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6bmV3TGVuZ3Ro
LnZhbHVlKCkgb3B0aW9uczowXTsKLSAgICBtZW1jcHkobmV3QnVmZmVyLmNvbnRlbnRzLCBtX2Fy
Z3VtZW50QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0
aCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW5ld0J1ZmZl
cikgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZp
bHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
bV9hcmd1bWVudEJ1ZmZlciA9IGFkb3B0TlMobmV3QnVmZmVyKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnRyeVJlc2V0KCkKLXsKLSAgICAtLW1f
bnVtQmluZEdyb3VwczsKLSAgICAKLSAgICBBU1NFUlQobV9udW1CaW5kR3JvdXBzID4gLTEpOwot
Ci0gICAgaWYgKCFtX251bUJpbmRHcm91cHMpIHsKLSAgICAgICAgbV9hcmd1bWVudEJ1ZmZlciA9
IG51bGxwdHI7Ci0gICAgICAgIG1fbGFzdE9mZnNldCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExh
eW91dE1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5NzlhY2Y3ODZiYmJlZTdhOTFhMDdhMzQ2ZTdmMDFlNGUxYzAwZGZlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBNVExEYXRhVHlwZSBNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBlKEdQVUJpbmRpbmdUeXBlIHR5
cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U2Ft
cGxlcjoKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlU2FtcGxlcjsKLSAgICBjYXNlIEdQVUJp
bmRpbmdUeXBlOjpTYW1wbGVkVGV4dHVyZToKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlVGV4
dHVyZTsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVmZmVyOgotICAgIGNhc2Ug
R1BVQmluZGluZ1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgIGNhc2UgR1BVQmluZGlu
Z1R5cGU6OlN0b3JhZ2VCdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0
b3JhZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBNVExEYXRhVHlwZVBvaW50ZXI7Ci0gICAgfQot
fQotCi11c2luZyBBcmd1bWVudEFycmF5ID0gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE1UTEFy
Z3VtZW50RGVzY3JpcHRvciAqPj47Ci1zdGF0aWMgdm9pZCBhcHBlbmRBcmd1bWVudFRvQXJyYXko
QXJndW1lbnRBcnJheSYgYXJyYXksIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IGFy
Z3VtZW50KQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghYXJy
YXkpCi0gICAgICAgIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHM6YXJndW1lbnQuZ2V0KCksIG5pbF0pOwotICAgIGVsc2UKLSAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDphcmd1bWVudC5nZXQoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdHJ5Q3JlYXRl
TXRsQXJndW1lbnRFbmNvZGVyKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBBcmd1bWVudEFycmF5
IGFycmF5KQotewotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IGVuY29kZXI7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBlbmNvZGVyID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czph
cnJheS5nZXQoKV0pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBpZiAoIWVu
Y29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3Jl
YXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnRFbmNvZGVyISIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY29kZXI7Ci19OwotCi1zdGF0aWMg
UmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnREZXNjcmlwdG9yKE1UTERh
dGFUeXBlIGRhdGFUeXBlLCBOU1VJbnRlZ2VyIGluZGV4KQotewotICAgIFJldGFpblB0cjxNVExB
cmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIG10bEFyZ3VtZW50ID0gYWRvcHROUyhbTVRMQXJndW1lbnREZXNjcmlwdG9y
IG5ld10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzg0IFRoaXMgbmVlZHMg
dG8gc2V0IHRoZSAidGV4dHVyZVR5cGUiIGZpZWxkCi0gICAgW210bEFyZ3VtZW50IHNldERhdGFU
eXBlOmRhdGFUeXBlXTsKLSAgICBbbXRsQXJndW1lbnQgc2V0SW5kZXg6aW5kZXhdOwotICAgIHJl
dHVybiBtdGxBcmd1bWVudDsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gR1BVQmlu
ZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZp
Y2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3Vw
TGF5b3V0Ojp0cnlDcmVhdGUoKTogSW52YWxpZCBNVExEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIEFyZ3VtZW50QXJyYXkgdmVydGV4QXJncywgZnJhZ21l
bnRBcmdzLCBjb21wdXRlQXJncywgdmVydGV4TGVuZ3RocywgZnJhZ21lbnRMZW5ndGhzLCBjb21w
dXRlTGVuZ3RoczsKLSAgICBCaW5kaW5nc01hcFR5cGUgYmluZGluZ3NNYXA7Ci0KLSAgICB1bnNp
Z25lZCBpbnRlcm5hbE5hbWUgPSAwOwotICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoQmFzZSA9
IGRlc2NyaXB0b3IuYmluZGluZ3Muc2l6ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmluZGlu
ZyA6IGRlc2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZXh0cmFJbmRleDsKLSAgICAgICAgYXV0byBpbnRlcm5hbERldGFpbHMgPSAoWyZdKCkgLT4g
R1BVQmluZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRhaWxzIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBl
OjpVbmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExl
bmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpV
bmlmb3JtQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGlu
Z1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXgg
PSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdy
b3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAg
ICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAgICAgICAgICAgIHJldHVy
biBHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVC
aW5kaW5nVHlwZTo6U2FtcGxlZFRleHR1cmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJp
bmRHcm91cExheW91dDo6U2FtcGxlZFRleHR1cmUgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVC
aW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0g
aW50ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91
cExheW91dDo6U3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVChiaW5kaW5nLnR5cGUgPT0gR1BVQmluZGluZ1R5
cGU6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0g
aW50ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91
cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIgeyAqZXh0cmFJbmRleCB9OwotICAgICAgICAg
ICAgfQotICAgICAgICB9KSgpOwotICAgICAgICBCaW5kaW5nIGJpbmRpbmdEZXRhaWxzID0geyBi
aW5kaW5nLCBpbnRlcm5hbE5hbWUrKywgV1RGTW92ZShpbnRlcm5hbERldGFpbHMpIH07Ci0gICAg
ICAgIGlmICghYmluZGluZ3NNYXAuYWRkKGJpbmRpbmcuYmluZGluZywgYmluZGluZ0RldGFpbHMp
KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVh
dGUoKTogRHVwbGljYXRlIGJpbmRpbmcgJXUgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnREZXNjcmlwdG9yPiBt
dGxBcmd1bWVudCA9IGFyZ3VtZW50RGVzY3JpcHRvcihNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBl
KGJpbmRpbmcudHlwZSksIGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZSk7Ci0KLSAgICAgICAg
aWYgKCFtdGxBcmd1bWVudCkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91
cExheW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnREZXNjcmlw
dG9yIGZvciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYWRkSW5kaWNlcyA9IFsmXShB
cmd1bWVudEFycmF5JiBhcmdzLCBBcmd1bWVudEFycmF5JiBsZW5ndGhzKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIGFwcGVuZEFyZ3VtZW50VG9BcnJheShhcmdzLCBtdGxBcmd1bWVudCk7Ci0gICAg
ICAgICAgICBpZiAoZXh0cmFJbmRleCkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxNVExB
cmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1lbnREZXNjcmlwdG9yKE1UTERh
dGFUeXBlVUludDIsICpleHRyYUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIW10bEFyZ3Vt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlv
dXQ6OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTEFyZ3VtZW50RGVzY3JpcHRvciBm
b3IgYmluZGluZyAldSEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFwcGVuZEFy
Z3VtZW50VG9BcnJheShsZW5ndGhzLCBtdGxBcmd1bWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZp
c2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OlZlcnRleCkgJiYgIWFkZEluZGljZXMo
dmVydGV4QXJncywgdmVydGV4TGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6
OkZyYWdtZW50KSAmJiAhYWRkSW5kaWNlcyhmcmFnbWVudEFyZ3MsIGZyYWdtZW50TGVuZ3Rocykp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2li
aWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUpICYmICFhZGRJbmRpY2VzKGNv
bXB1dGVBcmdzLCBjb21wdXRlTGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbdmVydGV4QXJn
cyBhZGRPYmplY3RzRnJvbUFycmF5OnZlcnRleExlbmd0aHMuZ2V0KCldOwotICAgIFtmcmFnbWVu
dEFyZ3MgYWRkT2JqZWN0c0Zyb21BcnJheTpmcmFnbWVudExlbmd0aHMuZ2V0KCldOwotICAgIFtj
b21wdXRlQXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmNvbXB1dGVMZW5ndGhzLmdldCgpXTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRF
bmNvZGVyPiB2ZXJ0ZXgsIGZyYWdtZW50LCBjb21wdXRlOwotCi0gICAgaWYgKHZlcnRleEFyZ3Mg
JiYgISh2ZXJ0ZXggPSB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoZGV2aWNlLCB2ZXJ0ZXhB
cmdzKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChmcmFnbWVudEFyZ3MgJiYg
IShmcmFnbWVudCA9IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2RlcihkZXZpY2UsIGZyYWdtZW50
QXJncykpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoY29tcHV0ZUFyZ3MgJiYg
IShjb21wdXRlID0gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGRldmljZSwgY29tcHV0ZUFy
Z3MpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdQVUJpbmRHcm91cExheW91dChXVEZNb3ZlKGJpbmRpbmdzTWFwKSwgV1RGTW92ZSh2ZXJ0ZXgp
LCBXVEZNb3ZlKGZyYWdtZW50KSwgV1RGTW92ZShjb21wdXRlKSkpOwotfQotCi1HUFVCaW5kR3Jv
dXBMYXlvdXQ6OkdQVUJpbmRHcm91cExheW91dChCaW5kaW5nc01hcFR5cGUmJiBiaW5kaW5nc01h
cCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiB2ZXJ0ZXgsIFJldGFpblB0cjxNVExB
cmd1bWVudEVuY29kZXI+JiYgZnJhZ21lbnQsIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+
JiYgY29tcHV0ZSkKLSAgICA6IG1fdmVydGV4RW5jb2RlcihXVEZNb3ZlKHZlcnRleCkpCi0gICAg
LCBtX2ZyYWdtZW50RW5jb2RlcihXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICAsIG1fY29tcHV0ZUVu
Y29kZXIoV1RGTW92ZShjb21wdXRlKSkKLSAgICAsIG1fYmluZGluZ3NNYXAoV1RGTW92ZShiaW5k
aW5nc01hcCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDEwNjk4YjE5YWVjYmYyZTk0OTgzOGU4YzYxZGRkZDI5ZjA1OWUxYmYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2ltcG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBC
aW5kaW5nLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJH
UFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckJpbmRp
bmc+IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0df
RElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBidWZmZXIgdHlwZSEi
LCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAg
ICBhdXRvJiBidWZmZXJCaW5kaW5nID0gV1RGOjpnZXQ8R1BVQnVmZmVyQmluZGluZz4ocmVzb3Vy
Y2UpOwotICAgIGlmICghYnVmZmVyQmluZGluZy5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTEJ1ZmZlciBpbiBHUFVCdWZmZXJC
aW5kaW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLnNpemUp
IHx8IGJ1ZmZlckJpbmRpbmcuc2l6ZSA+IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXJCaW5kaW5nIHNpemUgaXMg
dG9vIGxhcmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9u
IHNvbWUgcGxhdGZvcm1zLgotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJC
aW5kaW5nLm9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBCdWZmZXIgb2Zmc2V0
IGlzIHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIH0KLSAgICByZXR1cm4gR1BVQnVmZmVyQmluZGluZyB7IGJ1ZmZlckJpbmRpbmcu
YnVmZmVyLmNvcHlSZWYoKSwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6
ZSB9OwotfQotCi1zdGF0aWMgdm9pZCBzZXRCdWZmZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNv
ZGVyICphcmd1bWVudEVuY29kZXIsIGNvbnN0IEdQVUJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRp
bmcsIHVuc2lnbmVkIG5hbWUsIHVuc2lnbmVkIGxlbmd0aE5hbWUpCi17Ci0gICAgQVNTRVJUKGFy
Z3VtZW50RW5jb2RlciAmJiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBCb3VuZHMgY2hlY2sg
d2hlbiBjb252ZXJ0aW5nIEdQVUJ1ZmZlckJpbmRpbmcgZW5zdXJlcyB0aGF0IE5TVUludGVnZXIg
Y2FzdCBvZiB1aW50NjRfdCBvZmZzZXQgaXMgc2FmZS4KLSAgICBbYXJndW1lbnRFbmNvZGVyIHNl
dEJ1ZmZlcjpidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSBvZmZzZXQ6c3Rh
dGljX2Nhc3Q8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZzZXQpIGF0SW5kZXg6bmFtZV07
Ci0gICAgdm9pZCogbGVuZ3RoUG9pbnRlciA9IFthcmd1bWVudEVuY29kZXIgY29uc3RhbnREYXRh
QXRJbmRleDpsZW5ndGhOYW1lXTsKLSAgICBtZW1jcHkobGVuZ3RoUG9pbnRlciwgJmJ1ZmZlckJp
bmRpbmcuc2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotfQotICAgIAotc3RhdGljIE1UTFNhbXBsZXJTdGF0ZSAqdHJ5R2V0UmVzb3VyY2VBc010
bFNhbXBsZXIoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJB
TShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxjb25zdCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICIlczogUmVzb3VyY2UgaXMgbm90IGEgR1BVU2FtcGxlciEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byBzYW1wbGVyU3RhdGUgPSBXVEY6
OmdldDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4+KHJlc291cmNlKS0+cGxhdGZvcm1TYW1wbGVyKCk7
Ci0gICAgaWYgKCFzYW1wbGVyU3RhdGUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZh
bGlkIE1UTFNhbXBsZXJTdGF0ZSBpbiBHUFVTYW1wbGVyIGJpbmRpbmchIiwgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBzYW1wbGVyU3Rh
dGU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFNhbXBsZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNv
ZGVyICphcmd1bWVudEVuY29kZXIsIE1UTFNhbXBsZXJTdGF0ZSAqc2FtcGxlciwgdW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgQVNTRVJUKGFyZ3VtZW50RW5jb2RlciAmJiBzYW1wbGVyKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFthcmd1bWVudEVuY29kZXIgc2V0U2Ft
cGxlclN0YXRlOnNhbXBsZXIgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotfQotCi1zdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUdldFJlc291cmNlQXNU
ZXh0dXJlKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNv
bnN0IGZ1bmN0aW9uTmFtZSkKLSAgICB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BB
UkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEdQVVRleHR1cmU+PihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBSZXNvdXJjZSBpcyBub3QgYSBHUFVUZXh0dXJlVmlldyEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byYgdGV4dHVyZVJlZiA9IFdURjo6
Z2V0PFJlZjxHUFVUZXh0dXJlPj4ocmVzb3VyY2UpOwotICAgIGlmICghdGV4dHVyZVJlZi0+cGxh
dGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTFRl
eHR1cmUgaW4gR1BVVGV4dHVyZVZpZXcgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHR1cmVSZWYuY29weVJlZigp
OwotfQotCi1zdGF0aWMgdm9pZCBzZXRUZXh0dXJlT25FbmNvZGVyKE1UTEFyZ3VtZW50RW5jb2Rl
ciAqYXJndW1lbnRFbmNvZGVyLCBNVExUZXh0dXJlICp0ZXh0dXJlLCB1bnNpZ25lZCBpbmRleCkK
LXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHRleHR1cmUpOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRl
eHR1cmUgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
Ci1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShjb25zdCBHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFs
bG9jYXRvcikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVQmlu
ZEdyb3VwOjp0cnlDcmVhdGUoKSI7Ci0gICAgCi0gICAgTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0
ZXhFbmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPnZlcnRleEVuY29kZXIoKTsKLSAgICBNVExB
cmd1bWVudEVuY29kZXIgKmZyYWdtZW50RW5jb2RlciA9IGRlc2NyaXB0b3IubGF5b3V0LT5mcmFn
bWVudEVuY29kZXIoKTsKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyID0g
ZGVzY3JpcHRvci5sYXlvdXQtPmNvbXB1dGVFbmNvZGVyKCk7Ci0KLSAgICBhdXRvIG9mZnNldHMg
PSBhbGxvY2F0b3IuYWxsb2NhdGVBbmRTZXRFbmNvZGVycyh2ZXJ0ZXhFbmNvZGVyLCBmcmFnbWVu
dEVuY29kZXIsIGNvbXB1dGVFbmNvZGVyKTsKLSAgICBpZiAoIW9mZnNldHMpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIAotICAgIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+IGJvdW5kQnVm
ZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gYm91bmRUZXh0dXJlczsKLQotICAg
IC8vIFNldCBlYWNoIHJlc291cmNlIG9uIGVhY2ggTVRMQXJndW1lbnRFbmNvZGVyIGl0IHNob3Vs
ZCBiZSB2aXNpYmxlIG9uLgotICAgIGNvbnN0IGF1dG8mIGxheW91dEJpbmRpbmdzTWFwID0gZGVz
Y3JpcHRvci5sYXlvdXQtPmJpbmRpbmdzTWFwKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZXNv
dXJjZUJpbmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0gICAgICAgIGF1dG8gaW5kZXgg
PSByZXNvdXJjZUJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgYXV0byBsYXlvdXRJdGVyYXRvciA9
IGxheW91dEJpbmRpbmdzTWFwLmZpbmQoaW5kZXgpOwotICAgICAgICBpZiAobGF5b3V0SXRlcmF0
b3IgPT0gbGF5b3V0QmluZGluZ3NNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICIlczogR1BVQmluZEdyb3VwQmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5
b3V0ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBsYXlvdXRCaW5kaW5nID0gbGF5b3V0SXRlcmF0b3It
PnZhbHVlOwotICAgICAgICBpZiAobGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcudmlzaWJp
bGl0eSA9PSBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6Ok5vbmUpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBib29sIGlzRm9yVmVydGV4ID0gbGF5b3V0QmluZGluZy5leHRlcm5hbEJp
bmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4OwotICAgICAg
ICBib29sIGlzRm9yRnJhZ21lbnQgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNp
YmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpGcmFnbWVudDsKLSAgICAgICAgYm9vbCBp
c0ZvckNvbXB1dGUgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYg
R1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpDb21wdXRlOwotCi0gICAgICAgIGlmIChpc0ZvclZlcnRl
eCAmJiAhdmVydGV4RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2
ZXJ0ZXggYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5h
bWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChpc0ZvckZyYWdtZW50ICYmICFmcmFnbWVudEVuY29kZXIpIHsKLSAgICAgICAgICAg
IExPRyhXZWJHUFUsICIlczogTm8gZnJhZ21lbnQgYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3Ig
YmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZvckNvbXB1dGUgJiYgIWNvbXB1dGVF
bmNvZGVyKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIGNvbXB1dGUgYXJndW1l
bnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBo
YW5kbGVCdWZmZXIgPSBbJl0odW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lKSAtPiBib29sIHsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyUmVzb3VyY2UgPSB0cnlHZXRSZXNvdXJjZUFzQnVmZmVy
QmluZGluZyhyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAg
ICAgICBpZiAoIWJ1ZmZlclJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRCdWZmZXJP
bkVuY29kZXIodmVydGV4RW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRCaW5kaW5nLmlu
dGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZy
YWdtZW50KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2RlcihmcmFnbWVudEVuY29k
ZXIsICpidWZmZXJSZXNvdXJjZSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUsIGludGVybmFs
TGVuZ3RoTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAg
ICAgIHNldEJ1ZmZlck9uRW5jb2Rlcihjb21wdXRlRW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBs
YXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAg
ICAgIGJvdW5kQnVmZmVycy5hZGRWb2lkKFdURk1vdmUoYnVmZmVyUmVzb3VyY2UtPmJ1ZmZlcikp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBz
dWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlv
dXQ6OlVuaWZvcm1CdWZmZXImIHVuaWZvcm1CdWZmZXIpIC0+IGJvb2wgewotICAgICAgICAgICAg
cmV0dXJuIGhhbmRsZUJ1ZmZlcih1bmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0g
ICAgICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyJiBk
eW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxl
QnVmZmVyKGR5bmFtaWNVbmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAg
IH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXImKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIGF1dG8gc2FtcGxlclN0YXRlID0gdHJ5R2V0UmVzb3VyY2VBc010bFNhbXBsZXIocmVzb3Vy
Y2VCaW5kaW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCFzYW1w
bGVyU3RhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYg
KGlzRm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIodmVydGV4
RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAg
ICAgICAgICBpZiAoaXNGb3JGcmFnbWVudCkKLSAgICAgICAgICAgICAgICBzZXRTYW1wbGVyT25F
bmNvZGVyKGZyYWdtZW50RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVy
bmFsTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAg
IHNldFNhbXBsZXJPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHNhbXBsZXJTdGF0ZSwgbGF5b3V0
QmluZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlJikgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICBhdXRvIHRleHR1cmVSZXNvdXJjZSA9IHRyeUdldFJlc291cmNlQXNUZXh0dXJl
KHJlc291cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlm
ICghdGV4dHVyZVJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRUZXh0dXJlT25FbmNv
ZGVyKHZlcnRleEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxh
eW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50
KQotICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIoZnJhZ21lbnRFbmNvZGVyLCB0
ZXh0dXJlUmVzb3VyY2UtPnBsYXRmb3JtVGV4dHVyZSgpLCBsYXlvdXRCaW5kaW5nLmludGVybmFs
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNl
dFRleHR1cmVPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZv
cm1UZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGJv
dW5kVGV4dHVyZXMuYWRkVm9pZCh0ZXh0dXJlUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91
dDo6U3RvcmFnZUJ1ZmZlciYgc3RvcmFnZUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gaGFuZGxlQnVmZmVyKHN0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAg
ICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXImIGR5
bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVC
dWZmZXIoZHluYW1pY1N0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAg
fSksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7Ci0gICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEdQVUJpbmRHcm91cChXVEZNb3ZlKCpvZmZzZXRzKSwgYWxsb2Nh
dG9yLCBXVEZNb3ZlKGJvdW5kQnVmZmVycyksIFdURk1vdmUoYm91bmRUZXh0dXJlcykpKTsKLX0K
LSAgICAKLUdQVUJpbmRHcm91cDo6R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6
QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYgb2Zmc2V0cywgR1BVQmluZEdyb3VwQWxsb2NhdG9yJiBh
bGxvY2F0b3IsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYgYnVmZmVycywgSGFzaFNldDxSZWY8
R1BVVGV4dHVyZT4+JiYgdGV4dHVyZXMpCi0gICAgOiBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyhX
VEZNb3ZlKG9mZnNldHMpKQotICAgICwgbV9hbGxvY2F0b3IobWFrZVJlZihhbGxvY2F0b3IpKQot
ICAgICwgbV9ib3VuZEJ1ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkKLSAgICAsIG1fYm91bmRUZXh0
dXJlcyhXVEZNb3ZlKHRleHR1cmVzKSkKLXsKLX0KLQotR1BVQmluZEdyb3VwOjp+R1BVQmluZEdy
b3VwKCkKLXsKLSAgICBtX2FsbG9jYXRvci0+dHJ5UmVzZXQoKTsKLX0KLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVy
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDA1ZGE4YjEzMDNiZTkz
YmYwZDQ5Mjc4YjBkY2Y5YzZhMjg0OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2ltcG9y
dCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJl
YWRPbmx5RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB7IEdQVUJ1ZmZl
clVzYWdlOjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4LCBHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNv
dXJjZSB9OwotCi0KLWJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJ
bnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmICh1c2FnZS5jb250YWluc0FsbCh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUs
IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSkgewotICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFE
IGFuZCBNQVBfV1JJVEUgdXNhZ2UhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlD
cmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzKQotewotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBi
aXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIgc2l6ZSA9IDA7Ci0gICAgaWYg
KCFXVEY6OmNvbnZlcnRTYWZlbHkoZGVzY3JpcHRvci5zaXplLCBzaXplKSkgewotICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIHVzYWdlID0gT3B0
aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7
Ci0gICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZSwgdXNhZ2UsIGVycm9yU2NvcGVz
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBjb3B5QnVmZmVyVG9CdWZmZXIg
Y2FsbHMgcmVxdWlyZSA0LWJ5dGUgYWxpZ25tZW50LiAiVW5tYXBwaW5nIiBhIG1hcHBlZC1vbi1j
cmVhdGlvbiBHUFVCdWZmZXIKLSAgICAvLyB0aGF0IGlzIG90aGVyd2lzZSB1bm1hcHBhYmxlIHJl
cXVpcmVzIHN1Y2ggYSBjb3B5IHRvIHVwbG9hZCBkYXRhLgotICAgIGlmIChpc01hcHBlZCA9PSBH
UFVCdWZmZXJNYXBwZWRPcHRpb246OklzTWFwcGVkCi0gICAgICAgICYmICF1c2FnZS5jb250YWlu
c0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpG
bGFnczo6TWFwUmVhZCB9KQotICAgICAgICAmJiBkZXNjcmlwdG9yLnNpemUgJSA0KSB7Ci0gICAg
ICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGF0YSBtdXN0IGJlIGFsaWdu
ZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTWV0YWwgYmVzdCBwcmFjdGljZXM6IFJlYWQtb25seSBv
bmUtdGltZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBzaG91bGQgbm90IGFsbG9jYXRlIGEgTVRM
QnVmZmVyIGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5kRW5jb2RlciBzZXQqQnl0ZXNdIGNhbGxz
IGluc3RlYWQuCi0KLSAgICBNVExSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zID0gTVRM
UmVzb3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7Ci0KLSAgICAvLyBNYXBwYWJsZSBidWZm
ZXJzIHVzZSBzaGFyZWQgc3RvcmFnZSBhbGxvY2F0aW9uLgotICAgIHJlc291cmNlT3B0aW9ucyB8
PSB1c2FnZS5jb250YWluc0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQ
VUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSA/IE1UTFJlc291cmNlU3RvcmFnZU1vZGVT
aGFyZWQgOiBNVExSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZTsKLQotICAgIFJldGFpblB0cjxN
VExCdWZmZXI+IG10bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgbXRsQnVmZmVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QnVm
ZmVyV2l0aExlbmd0aDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkZXNjcmlwdG9yLnNpemUpIG9w
dGlvbnM6cmVzb3VyY2VPcHRpb25zXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBpZiAoIW10bEJ1ZmZlcikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVy
cm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVCdWZmZXIoV1RGTW92
ZShtdGxCdWZmZXIpLCBkZXZpY2UsIHNpemUsIHVzYWdlLCBpc01hcHBlZCkpOwotfQotCi1HUFVC
dWZmZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRGV2aWNl
JiBkZXZpY2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1
c2FnZSwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkKQotICAgIDogbV9wbGF0Zm9ybUJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi0gICAgLCBtX2RldmljZShtYWtlUmVmKGRldmljZSkpCi0g
ICAgLCBtX2J5dGVMZW5ndGgoc2l6ZSkKLSAgICAsIG1fdXNhZ2UodXNhZ2UpCi0gICAgLCBtX2lz
TWFwcGVkRnJvbUNyZWF0aW9uKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNN
YXBwZWQpCi17Ci0gICAgbV9wbGF0Zm9ybVVzYWdlID0gTVRMUmVzb3VyY2VVc2FnZVJlYWQ7Ci0g
ICAgaWYgKGlzU3RvcmFnZSgpKQotICAgICAgICBtX3BsYXRmb3JtVXNhZ2UgfD0gTVRMUmVzb3Vy
Y2VVc2FnZVdyaXRlOwotfQotCi1HUFVCdWZmZXI6On5HUFVCdWZmZXIoKQotewotICAgIGRlc3Ry
b3kobnVsbHB0cik7Ci19Ci0KLWJvb2wgR1BVQnVmZmVyOjppc1JlYWRPbmx5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV91c2FnZS5jb250YWluc0FueShyZWFkT25seUZsYWdzKTsKLX0KLQotR1BV
QnVmZmVyOjpTdGF0ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxh
dGZvcm1CdWZmZXIpCi0gICAgICAgIHJldHVybiBTdGF0ZTo6RGVzdHJveWVkOwotICAgIGlmICht
X2lzTWFwcGVkRnJvbUNyZWF0aW9uIHx8IG1fbWFwcGluZ0NhbGxiYWNrKQotICAgICAgICByZXR1
cm4gU3RhdGU6Ok1hcHBlZDsKLQotICAgIHJldHVybiBTdGF0ZTo6VW5tYXBwZWQ7Ci19Ci0KLUpT
Qzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6bWFwT25DcmVhdGlvbigpCi17Ci0gICAgQVNTRVJU
KG1faXNNYXBwZWRGcm9tQ3JlYXRpb24pOwotICAgIHJldHVybiBzdGFnaW5nQnVmZmVyRm9yV3Jp
dGUoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLXZvaWQgR1BVQnVmZmVyOjpjb21tYW5kQnVmZmVy
Q29tbWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICArK21fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnM7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBNYWtlIHN1cmUgfHRoaXN8
IG9ubHkgZ2V0cyByZWYnZCAvIGRlcmVmJ2Qgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNlIGl0IGlz
IG5vdCBUaHJlYWRTYWZlUmVmQ291bnRlZC4KLSAgICBbY29tbWFuZEJ1ZmZlciBhZGRDb21wbGV0
ZWRIYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXShpZDxNVExDb21tYW5kQnVmZmVyPikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0g
ICAgICAgICAgICBjb21tYW5kQnVmZmVyQ29tcGxldGVkKCk7Ci0gICAgICAgIH0pOwotICAgIH0p
LmdldCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVQnVm
ZmVyOjpjb21tYW5kQnVmZmVyQ29tcGxldGVkKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEFTU0VSVChtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzKTsKLQotICAgIGlm
IChtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzID09IDEgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6
TWFwcGVkKQotICAgICAgICBydW5NYXBwaW5nQ2FsbGJhY2soKTsKLQotICAgIC0tbV9udW1TY2hl
ZHVsZWRDb21tYW5kQnVmZmVyczsKLX0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLXZvaWQgR1BV
QnVmZmVyOjpyZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBjYWxsYmFj
aywgYm9vbCBpc1JlYWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICAvLyBS
ZWplY3QgaWYgcmVxdWVzdCBpcyBpbnZhbGlkLgotICAgIGlmIChpc1JlYWQgJiYgIWlzTWFwUmVh
ZGFibGUoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIklu
dmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWlzUmVhZCAmJiAhaXNNYXBXcml0ZWFibGUoKSkgewot
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0
aW9uISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVCghbV9tYXBwaW5nQ2FsbGJhY2sgJiYgIW1fbWFwcGluZ0NhbGxiYWNr
VGFzay5pc1BlbmRpbmcoKSk7Ci0KLSAgICAvLyBBbiBleGlzdGluZyBjYWxsYmFjayBtZWFucyB0
aGlzIGJ1ZmZlciBpcyBpbiB0aGUgbWFwcGVkIHN0YXRlLgotICAgIG1fbWFwcGluZ0NhbGxiYWNr
ID0gUGVuZGluZ01hcHBpbmdDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2spKTsKLQot
ICAgIC8vIElmIEdQVSBpcyBub3QgdXNpbmcgdGhpcyBidWZmZXIsIHJ1biB0aGUgY2FsbGJhY2sg
QVNBUC4KLSAgICBpZiAoIW1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMpIHsKLSAgICAgICAg
bV9tYXBwaW5nQ2FsbGJhY2tUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJ1bk1hcHBpbmdDYWxs
YmFjaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpydW5NYXBw
aW5nQ2FsbGJhY2soKQotewotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykKLSAgICAgICAgbV9t
YXBwaW5nQ2FsbGJhY2stPmNhbGxiYWNrKGlzTWFwUmVhZCgpID8gc3RhZ2luZ0J1ZmZlckZvclJl
YWQoKSA6IHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpKTsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciog
R1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVhZCgpCi17Ci0gICAgaWYgKCFtX3N0YWdpbmdC
dWZmZXIpCi0gICAgICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9w
bGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1lbWNweShtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9wbGF0Zm9ybUJ1ZmZlci5n
ZXQoKS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLQotICAgIHJldHVybiBtX3N0YWdpbmdCdWZm
ZXIuZ2V0KCk7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6c3RhZ2luZ0J1ZmZl
ckZvcldyaXRlKCkKLXsKLSAgICBtX3N0YWdpbmdCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KDEsIG1fYnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0K
LQotdm9pZCBHUFVCdWZmZXI6OmNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMq
IGVycm9yU2NvcGVzKQotewotICAgIE1UTENvbW1hbmRRdWV1ZSAqcXVldWU7Ci0gICAgaWYgKCFt
X2RldmljZS0+dHJ5R2V0UXVldWUoKSB8fCAhKHF1ZXVlID0gbV9kZXZpY2UtPnRyeUdldFF1ZXVl
KCktPnBsYXRmb3JtUXVldWUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxN
VExCdWZmZXI+IHN0YWdpbmdNdGxCdWZmZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICAvLyBHUFVCdWZmZXIgY3JlYXRpb24gdmFsaWRhdGlvbiBlbnN1cmVzIG1fYnl0
ZVNpemUgZml0cyBpbiBOU1VJbnRlZ2VyLgotICAgIHN0YWdpbmdNdGxCdWZmZXIgPSBhZG9wdE5T
KFttX2RldmljZS0+cGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoQnl0ZXM6bV9zdGFnaW5n
QnVmZmVyLT5kYXRhKCkgbGVuZ3RoOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0
aCkgb3B0aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZV0pOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc3RhZ2luZ010bEJ1ZmZlciAmJiBl
cnJvclNjb3BlcykgewotICAgICAgICBlcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BV
RXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBjb21tYW5kQnVmZmVyID0g
cmV0YWluUHRyKFtxdWV1ZSBjb21tYW5kQnVmZmVyXSk7Ci0gICAgYXV0byBibGl0RW5jb2RlciA9
IHJldGFpblB0cihbY29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29kZXJdKTsKLQotICAgIFti
bGl0RW5jb2RlciBjb3B5RnJvbUJ1ZmZlcjpzdGFnaW5nTXRsQnVmZmVyLmdldCgpIHNvdXJjZU9m
ZnNldDowIHRvQnVmZmVyOm1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkgZGVzdGluYXRpb25PZmZzZXQ6
MCBzaXplOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0aCldOwotICAgIFtibGl0
RW5jb2RlciBlbmRFbmNvZGluZ107Ci0gICAgW2NvbW1hbmRCdWZmZXIgY29tbWl0XTsKLQotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OnVubWFwKEdQ
VUVycm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIW1faXNNYXBwZWRGcm9tQ3Jl
YXRpb24gJiYgIWlzTWFwcGFibGUoKSAmJiBlcnJvclNjb3BlcykgewotICAgICAgICBlcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogR1BVQnVmZmVy
IGlzIG5vdCBtYXBwYWJsZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X3N0YWdpbmdCdWZmZXIpIHsKLSAgICAgICAgaWYgKGlzTWFwcGFibGUoKSkgewotICAgICAgICAg
ICAgLy8gTUFQX1dSSVRFIGFuZCBNQVBfUkVBRCBidWZmZXJzIGhhdmUgc2hhcmVkLCBDUFUtYWNj
ZXNzaWJsZSBzdG9yYWdlLgotICAgICAgICAgICAgQVNTRVJUKG1fcGxhdGZvcm1CdWZmZXIgJiYg
bV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cyk7Ci0gICAgICAgICAgICBtZW1jcHkobV9w
bGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9zdGFnaW5nQnVmZmVyLT5kYXRhKCksIG1f
Ynl0ZUxlbmd0aCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9pc01hcHBlZEZyb21DcmVhdGlvbikK
LSAgICAgICAgICAgIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoZXJyb3JTY29wZXMpOwotCi0gICAg
ICAgIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24gPSBmYWxzZTsKLSAgICAgICAgbV9zdGFnaW5nQnVm
ZmVyID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAobV9tYXBwaW5nQ2FsbGJhY2spIHsKLSAg
ICAgICAgbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmNhbmNlbFRhc2soKTsKLSAgICAgICAgbV9tYXBw
aW5nQ2FsbGJhY2stPmNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFj
ayA9IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIEdQVUJ1ZmZlcjo6ZGVzdHJveShHUFVFcnJv
clNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6Ok1hcHBl
ZCkKLSAgICAgICAgdW5tYXAoZXJyb3JTY29wZXMpOwotCi0gICAgbV9wbGF0Zm9ybUJ1ZmZlciA9
IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxZGNjNmIxNmQwMjM0YjNlYzRkMWMzMzA3ZGM4ZGM1ZWFl
MWMxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1l
dGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXh0ZW50M0Qu
aCIKLSNpbXBvcnQgIkdQVVF1ZXVlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2lt
cG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgp
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTogSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IGF1dG8gZ3B1Q29tbWFuZFF1ZXVlID0gZGV2aWNlLnRyeUdldFF1ZXVlKCk7Ci0gICAgaWYgKCFn
cHVDb21tYW5kUXVldWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBtdGxR
dWV1ZSA9IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1ZSgpOwotCi0gICAgUmV0YWluUHRy
PE1UTENvbW1hbmRCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgYnVmZmVyID0gW210bFF1ZXVlIGNvbW1hbmRCdWZmZXJdOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1U
TENvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsK
LX0KLQotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcihSZXRhaW5QdHI8TVRMQ29t
bWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLUdQVUNvbW1hbmRCdWZmZXI6On5HUFVDb21tYW5kQnVmZmVy
KCkKLXsKLSAgICBlbmRCbGl0RW5jb2RpbmcoKTsKLX0KLQotTVRMQmxpdENvbW1hbmRFbmNvZGVy
ICpHUFVDb21tYW5kQnVmZmVyOjpibGl0RW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
YmxpdEVuY29kZXIgPyBtX2JsaXRFbmNvZGVyLmdldCgpIDogKG1fYmxpdEVuY29kZXIgPSBbbV9w
bGF0Zm9ybUNvbW1hbmRCdWZmZXIgYmxpdENvbW1hbmRFbmNvZGVyXSkuZ2V0KCk7Ci19Ci0KLXZv
aWQgR1BVQ29tbWFuZEJ1ZmZlcjo6ZW5kQmxpdEVuY29kaW5nKCkKLXsKLSAgICBpZiAoIW1fYmxp
dEVuY29kZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbV9ibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIG1fYmxpdEVuY29kZXIgPSBudWxscHRyOwotfQotCi12b2lkIEdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdWlu
dDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwgdWludDY0X3QgZHN0T2Zmc2V0
LCB1aW50NjRfdCBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFzcmMtPmlz
Q29weVNvdXJjZSgpIHx8ICFkc3QtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBpZiAoc2l6ZSAlIDQgfHwgc3JjT2Zmc2V0ICUgNCB8fCBkc3RPZmZzZXQgJSA0KSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZm
ZXIoKTogQ29weSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBUaGlzIGNhbGwgZW5zdXJl
cyB0aGF0IHNpemUsIG9mZnNldCwgYW5kIHNpemUgKyBvZmZzZXQgY2FuIHNhZmVseSBmaXQgaW4g
TlNVSW50ZWdlciByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLgotICAgIGF1dG8gc3JjTGVuZ3RoID0g
Y2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBzcmNPZmZzZXQpOwotICAgIGF1dG8gZHN0TGVu
Z3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBkc3RPZmZzZXQpOwotICAgIGlmIChz
cmNMZW5ndGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0aC5oYXNPdmVyZmxvd2VkKCkKLSAg
ICAgICAgfHwgc3JjTGVuZ3RoID4gc3JjLT5ieXRlTGVuZ3RoKCkgfHwgZHN0TGVuZ3RoID4gZHN0
LT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6
OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCBvciBjb3B5IHNpemUhIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIC8vIFRoZXNlIGNhc3RzIGFyZSBzYWZlIGR1ZSB0byBlYXJsaWVyIGNoZWNrZWRTdW0o
KSBjaGVja3MuCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21CdWZmZXI6c3Jj
LT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNldDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihzcmNPZmZzZXQpCi0gICAgICAgIHRvQnVmZmVyOmRzdC0+cGxhdGZvcm1CdWZmZXIo
KQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkc3RP
ZmZzZXQpCi0gICAgICAgIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2l6ZSldOwotCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlQnVmZmVyKFdURk1vdmUoc3Jj
KSk7Ci0gICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0KSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1
ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmIHNyY0J1ZmZlciwg
R1BVVGV4dHVyZUNvcHlWaWV3JiYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUp
Ci17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY0J1ZmZlci5idWZmZXItPmlzQ29w
eVNvdXJjZSgpIHx8ICFkc3RUZXh0dXJlLnRleHR1cmUtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1
cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRm
b3Jtcy4KLSAgICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IDA7Ci0gICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoc3JjQnVmZmVyLm9mZnNldCwgc291cmNlT2Zmc2V0KSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBTb3Vy
Y2Ugb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbi4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlW
aWV3OjpvZmZzZXQ6IFRoZSBsb2NhdGlvbiBtdXN0IGJlIGFsaWduZWQgdG8gdGhlIHNpemUgb2Yg
dGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBmb3JtYXQuIFRoZSB2YWx1ZSBtdXN0IGJl
IGEgbXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBi
eXRlcy4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpyb3dQaXRjaDogVGhlIHZhbHVlIG11
c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUs
IGluIGJ5dGVzLiBUaGUgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIsNzY3
IG11bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmXigJlzIHBpeGVsIHNpemUuCi0K
LSAgICAvLyBHUFVCdWZmZXJDb3B5Vmlldzo6aW1hZ2VIZWlnaHQ6IFRoZSB2YWx1ZSBtdXN0IGJl
IGEgbXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBi
eXRlcy4KLQotICAgIC8vIEdQVUV4dGVudDNEOiBXaGVuIHlvdSBjb3B5IHRvIGEgMUQgdGV4dHVy
ZSwgaGVpZ2h0IGFuZCBkZXB0aCBtdXN0IGJlIDEuIFdoZW4geW91IGNvcHkgdG8gYSAyRCB0ZXh0
dXJlLCBkZXB0aCBtdXN0IGJlIDEuCi0KLSAgICAvLyBHUFVUZXh0dXJlQ29weVZpZXc6OnRleHR1
cmU6IFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBhIGZyYW1lYnVmZmVyT25seSB0ZXh0dXJlIGFuZCBt
dXN0IG5vdCBoYXZlIGEgUFZSVEMgcGl4ZWwgZm9ybWF0LgotCi0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KLSAgICBbYmxpdEVuY29kZXIoKQotICAgICAgICBjb3B5RnJvbUJ1ZmZl
cjpzcmNCdWZmZXIuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNl
dDpzb3VyY2VPZmZzZXQKLSAgICAgICAgc291cmNlQnl0ZXNQZXJSb3c6c3JjQnVmZmVyLnJvd1Bp
dGNoCi0gICAgICAgIHNvdXJjZUJ5dGVzUGVySW1hZ2U6c3JjQnVmZmVyLmltYWdlSGVpZ2h0Ci0g
ICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNp
emUuZGVwdGgpCi0gICAgICAgIHRvVGV4dHVyZTpkc3RUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3Jt
VGV4dHVyZSgpCi0gICAgICAgIGRlc3RpbmF0aW9uU2xpY2U6ZHN0VGV4dHVyZS5hcnJheUxheWVy
Ci0gICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0VGV4dHVyZS5taXBMZXZlbAotICAgICAgICBk
ZXN0aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdFRleHR1cmUub3JpZ2luLngsIGRzdFRl
eHR1cmUub3JpZ2luLnksIGRzdFRleHR1cmUub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZUJ1ZmZlcihXVEZNb3ZlKHNyY0J1ZmZlci5idWZmZXIp
KTsKLSAgICB1c2VUZXh0dXJlKFdURk1vdmUoZHN0VGV4dHVyZS50ZXh0dXJlKSk7Ci19Ci0KLXZv
aWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZp
ZXcmJiBzcmNUZXh0dXJlLCBHUFVCdWZmZXJDb3B5VmlldyYmIGRzdEJ1ZmZlciwgY29uc3QgR1BV
RXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY1RleHR1
cmUudGV4dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdEJ1ZmZlci5idWZmZXItPmlzQ29weURl
c3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNv
cHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMg
b24gc29tZSBwbGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCA9IDA7
Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZHN0QnVmZmVyLm9mZnNldCwgZGVzdGluYXRp
b25PZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5
VGV4dHVyZVRvQnVmZmVyKCk6IERlc3RpbmF0aW9uIG9mZnNldCBpcyB0b28gbGFyZ2UhIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRp
b24/Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2Rl
cigpCi0gICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3Jt
VGV4dHVyZSgpCi0gICAgICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1cmUuYXJyYXlMYXllcgotICAg
ICAgICBzb3VyY2VMZXZlbDpzcmNUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdp
bjpNVExPcmlnaW5NYWtlKHNyY1RleHR1cmUub3JpZ2luLngsIHNyY1RleHR1cmUub3JpZ2luLnks
IHNyY1RleHR1cmUub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6
ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvQnVmZmVyOmRzdEJ1
ZmZlci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgZGVzdGluYXRpb25PZmZzZXQ6
ZGVzdGluYXRpb25PZmZzZXQKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlclJvdzpkc3RCdWZm
ZXIucm93UGl0Y2gKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlckltYWdlOmRzdEJ1ZmZlci5p
bWFnZUhlaWdodF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB1c2VU
ZXh0dXJlKFdURk1vdmUoc3JjVGV4dHVyZS50ZXh0dXJlKSk7Ci0gICAgdXNlQnVmZmVyKFdURk1v
dmUoZHN0QnVmZmVyLmJ1ZmZlcikpOwotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyYywgR1BVVGV4dHVyZUNvcHlW
aWV3JiYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGlu
Z1Bhc3MoKSB8fCAhc3JjLnRleHR1cmUtPmlzQ29weVNvdXJjZSgpIHx8ICFkc3QudGV4dHVyZS0+
aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1
ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2Rlcigp
Ci0gICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmMudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkK
LSAgICAgICAgc291cmNlU2xpY2U6c3JjLmFycmF5TGF5ZXIKLSAgICAgICAgc291cmNlTGV2ZWw6
c3JjLm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpNVExPcmlnaW5NYWtlKHNyYy5vcmln
aW4ueCwgc3JjLm9yaWdpbi55LCBzcmMub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRM
U2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRv
VGV4dHVyZTpkc3QudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgZGVzdGluYXRp
b25TbGljZTpkc3QuYXJyYXlMYXllcgotICAgICAgICBkZXN0aW5hdGlvbkxldmVsOmRzdC5taXBM
ZXZlbAotICAgICAgICBkZXN0aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdC5vcmlnaW4u
eCwgZHN0Lm9yaWdpbi55LCBkc3Qub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmMudGV4dHVyZSkpOwotICAgIHVz
ZVRleHR1cmUoV1RGTW92ZShkc3QudGV4dHVyZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1
dGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmM2
MGU0NTNlN2ZjMmY1ZTRiOTYyNjVhMWVjNzNmOWVkOWEyYTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDEzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bXBvcnQgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVm
ZmVyKQotewotICAgIGlmIChidWZmZXItPmlzRW5jb2RpbmdQYXNzKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKCk6IEV4aXN0aW5nIHBh
c3MgZW5jb2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBidWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotCi0gICAgUmV0YWlu
UHRyPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10bEVuY29kZXIgPSBbYnVmZmVyLT5wbGF0Zm9ybUNv
bW1hbmRCdWZmZXIoKSBjb21wdXRlQ29tbWFuZEVuY29kZXJdOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBN
VExDb21wdXRlQ29tbWFuZEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1v
dmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQotCi1HUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIsIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6
IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAsIG1fcGxh
dGZvcm1Db21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKLXsKLX0KLQotdm9pZCBH
UFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxjb25zdCBHUFVDb21wdXRlUGlw
ZWxpbmU+JiYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNv
ZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBp
cGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUKHBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NF
bmNvZGVyIHNldENvbXB1dGVQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQ
aXBlbGluZSgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX3BpcGVs
aW5lID0gV1RGTW92ZShwaXBlbGluZSk7Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
OjpkaXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlm
ICghbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBObyB2YWxp
ZCBHUFVDb21wdXRlUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlQobV9waXBlbGluZS0+cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUoKSk7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGF1dG8gdGhyZWFkc1BlclRocmVh
ZGdyb3VwID0gTVRMU2l6ZU1ha2UobV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS53aWR0
aCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5oZWlnaHQsIG1fcGlwZWxpbmUtPmNv
bXB1dGVEaW1lbnNpb25zKCkuZGVwdGgpOwotCi0gICAgYXV0byB0aHJlYWRncm91cHNQZXJHcmlk
ID0gTVRMU2l6ZU1ha2UoeCwgeSwgeik7Ci0KLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5j
b2RlciBkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRncm91cHNQZXJHcmlkIHRocmVhZHNQZXJU
aHJlYWRncm91cDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXBdOwotCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotfQotCi1jb25zdCBNVExDb21tYW5kRW5jb2RlciAqR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLQotdm9p
ZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICpy
ZXNvdXJjZSwgdW5zaWduZWQgdXNhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1Db21wdXRl
UGFzc0VuY29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
cGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6cmVzb3VyY2UgdXNhZ2U6dXNh
Z2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICpidWZmZXIsIE5T
VUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9y
bUNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNl
dDpvZmZzZXQgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYTM3OGEwZWFmZGIzZmE2MzYzZWRhMWZhMGMwZmYx
ZjE5MzkxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVs
aW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0j
aW1wb3J0ICJHUFVQaXBlbGluZUxheW91dC5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3
dGYvRGF0YUxvZy5oPgotI2ltcG9ydCA8d3RmL01vbm90b25pY1RpbWUuaD4KLSNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqY29tcHV0ZU1ldGFsTGli
cmFyeSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3Qg
U3RyaW5nJiBjb21wdXRlRW50cnlQb2ludE5hbWUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Bl
cykKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghY29tcHV0
ZU1ldGFsTGlicmFyeSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIk1UTExpYnJhcnkgZm9yIGNvbXB1dGUgc3RhZ2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhb
Y29tcHV0ZU1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbXB1dGVFbnRyeVBvaW50
TmFtZV0pOwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVhdGUgY29tcHV0ZSBNVExGdW5j
dGlvbiAnIiwgY29tcHV0ZUVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wdXRlRnVuY3Rpb246ZnVu
Y3Rpb24uZ2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5z
aW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzKQotewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBjb21wdXRlTGlicmFyeTsK
LSAgICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7Ci0KLSAgICBXSExTTDo6Q29tcHV0ZURpbWVu
c2lvbnMgY29tcHV0ZURpbWVuc2lvbnMgeyAxLCAxLCAxIH07Ci0KLSAgICBpZiAod2hsc2xEZXNj
cmlwdG9yKSB7Ci0gICAgICAgIEFTU0VSVChjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVs
ZSgpKTsKLQotICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmVudHJ5UG9pbnROYW1lID0gY29tcHV0
ZVN0YWdlLmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBX
SExTTDo6cHJlcGFyZSgqY29tcHV0ZVN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgKndobHNs
RGVzY3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wg
Y29tcGlsZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wdXRlRGlt
ZW5zaW9ucyA9IHdobHNsQ29tcGlsZVJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICAg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgICAgICBpZiAoV0hM
U0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjAwNDc0IEFkZCBkaXJlY3QgU3RyaW5nQnVpbGRlciAtPiBOU1N0cmluZyBjb252ZXJzaW9uIHRv
IGF2b2lkIGV4dHJhIGNvcHkgaW50byBhIFdURjo6U3RyaW5nCi0gICAgICAgIGNvbXB1dGVMaWJy
YXJ5ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3Vy
Y2U6d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygpIG9wdGlvbnM6bmls
IGVycm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1l
cykKLSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1lczogIiwgKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotICAg
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBp
ZiAoIWNvbXB1dGVMaWJyYXJ5KQotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNl
bmRpZgotICAgICAgICBBU1NFUlQoY29tcHV0ZUxpYnJhcnkpOwotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBPbmNlIHdlIHpl
cm8tZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywgc28gd2Ugc2hv
dWxkIGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBjb21wdXRlRW50
cnlQb2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZEVudHJ5UG9pbnROYW1lLnRvU3Ry
aW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBjb21wdXRlU3Rh
Z2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAgICAgICBjb21wdXRlRW50cnlQ
b2ludCA9IGNvbXB1dGVTdGFnZS5lbnRyeVBvaW50OwotICAgIH0KLQotICAgIGlmICh0cnlTZXRN
ZXRhbEZ1bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgY29tcHV0
ZUVudHJ5UG9pbnQsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNp
b25zOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENvbnZlcnRSZXN1
bHQgewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBwaXBlbGlu
ZURlc2NyaXB0b3I7Ci0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNp
b25zOwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBl
cnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIG5l
d10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3Jp
cHRvcikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9y
IGNyZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0g
ZGVzY3JpcHRvci5jb21wdXRlU3RhZ2U7Ci0KLSAgICBib29sIGlzV2hsc2wgPSBjb21wdXRlU3Rh
Z2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9yOwotICAgIGlmIChpc1dobHNs
KQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcigpOwotCi0gICAgaWYgKGRlc2NyaXB0b3IubGF5b3V0ICYmIHdobHNsRGVzY3JpcHRvcikg
ewotICAgICAgICBpZiAoYXV0byBsYXlvdXQgPSBjb252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxh
eW91dCkpCi0gICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxh
eW91dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQ
cmVmaXhlZEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIEdQVVBpcGVsaW5lTGF5b3V0ISIpOwotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChhdXRvIGNvbXB1dGVEaW1lbnNpb25zID0gdHJ5U2V0RnVuY3Rpb25zKGNvbXB1dGVTdGFnZSwg
ZGV2aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVz
KSkKLSAgICAgICAgcmV0dXJuIHt7IG10bERlc2NyaXB0b3IsICpjb21wdXRlRGltZW5zaW9ucyB9
fTsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0cnVjdCBDcmVhdGVSZXN1bHQg
ewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmVTdGF0ZTsK
LSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1z
dGF0aWMgc3RkOjpvcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBl
bGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gY29udmVydFJlc3VsdCA9IGNv
bnZlcnRDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGRldmljZSwgZXJyb3JT
Y29wZXMpOwotICAgIGlmICghY29udmVydFJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBBU1NFUlQoY29udmVydFJlc3VsdC0+cGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAg
ICBhdXRvIG10bERlc2NyaXB0b3IgPSBjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3I7
Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IG5p
bDsKLSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBvcHRp
b25zOk1UTFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5pbCBlcnJvcjomZXJyb3JdKTsK
LSAgICBpZiAoIXBpcGVsaW5lKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4
ZWRFcnJvcihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcgOiAi
VW5hYmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSEiKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICByZXR1cm4ge3sgcGlwZWxpbmUsIGNvbnZlcnRSZXN1bHQtPmNvbXB1dGVEaW1lbnNp
b25zIH19OwotfQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVDb21wdXRlUGlwZWxp
bmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQotewotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5l
U3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFjcmVhdGVS
ZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHUFVDb21wdXRlUGlwZWxpbmUoV1RGTW92ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUp
LCBjcmVhdGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zLCBkZXNjcmlwdG9yLmxheW91dCkpOwot
fQotCi1HUFVDb21wdXRlUGlwZWxpbmU6OkdQVUNvbXB1dGVQaXBlbGluZShSZXRhaW5QdHI8TVRM
Q29tcHV0ZVBpcGVsaW5lU3RhdGU+JiYgcGlwZWxpbmUsIFdITFNMOjpDb21wdXRlRGltZW5zaW9u
cyBjb21wdXRlRGltZW5zaW9ucywgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5
b3V0KQotICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGlu
ZShXVEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZURpbWVuc2lvbnMoY29tcHV0ZURp
bWVuc2lvbnMpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi17Ci19Ci0KLUdQVUNvbXB1dGVQaXBl
bGluZTo6fkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVDb21wdXRl
UGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKQotewotICAgIEdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RG
TW92ZShjb21wdXRlU3RhZ2UpKTsKLSAgICBhdXRvIGVycm9yU2NvcGVzID0gR1BVRXJyb3JTY29w
ZXM6OmNyZWF0ZShbXSAoR1BVRXJyb3ImJikgeyB9KTsKLSAgICBpZiAoYXV0byBjcmVhdGVSZXN1
bHQgPSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3Is
IGVycm9yU2NvcGVzKSkgewotICAgICAgICBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lID0gV1RG
TW92ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpOwotICAgICAgICBtX2NvbXB1dGVEaW1l
bnNpb25zID0gY3JlYXRlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzhmNjk1YTg3MzAyZjk1MDExMjNlOGI1
ZTNmMmE5YWMwZTBjOGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZp
Y2VNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbXBvcnQgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTWV0YWxTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRGV2aWNlKGlkIDxN
VExEZXZpY2U+IGRldmljZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdm9pZCBHUFVEZXZpY2U6OnByZXdhcm0oKQotewotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICAvLyBDYWxsIE1UTENvcHlBbGxEZXZpY2VzKCkgb24gYSBiYWNrZ3JvdW5kIHRo
cmVhZCB0byBhdm9pZCBoYW5naW5nIHRoZSBtYWluIHRocmVhZC4KLSAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKDAsIDApLCBeewotICAgICAgICBhdXRvIGRldmlj
ZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOwotICAgIH0pOwotI2VuZGlmCi19Ci0K
LVJlZlB0cjxHUFVEZXZpY2U+IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucykKLXsKLSAgICBSZXRhaW5QdHI8
TVRMRGV2aWNlPiBkZXZpY2VQdHI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLT5w
b3dlclByZWZlcmVuY2UgfHwgb3B0aW9ucy0+cG93ZXJQcmVmZXJlbmNlID09IEdQVVBvd2VyUHJl
ZmVyZW5jZTo6TG93UG93ZXIpIHsKLSAgICAgICAgYXV0byBkZXZpY2VzID0gYWRvcHROUyhNVExD
b3B5QWxsRGV2aWNlcygpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaWQgPE1UTERldmljZT4g
ZGV2aWNlIDogZGV2aWNlcy5nZXQoKSkgewotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVE
ZXZpY2UoZGV2aWNlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChkZXZpY2UubG93UG93ZXIpIHsKLSAgICAgICAgICAgICAgICBkZXZpY2VQdHIgPSBkZXZpY2U7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpCi0gICAgaWYgKCFkZXZpY2VQdHIpCi0gICAgICAgIGRldmljZVB0ciA9IGFkb3B0TlMoTVRM
Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKTsKLQotICAgIGlmICghaXNBY2NlcHRhYmxlRGV2
aWNlKGRldmljZVB0ci5nZXQoKSkpCi0gICAgICAgIGRldmljZVB0ci5jbGVhcigpOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFkZXZpY2VQdHIpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUg
R1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBMT0co
V2ViR1BVLCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgZGV2aWNl
UHRyLmdldCgpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVURldmljZShXVEZNb3ZlKGRl
dmljZVB0cikpKTsKLX0KLQotR1BVRGV2aWNlOjpHUFVEZXZpY2UoUmV0YWluUHRyPE1UTERldmlj
ZT4mJiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKLXsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWUwOTg4YzkzMGEwMGI3NDY3NzdjN2EwNmI3
ZDlkMWY0MTMxNjYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGlu
ZU1ldGFsQ29udmVydExheW91dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
UGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJTdGFnZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBPcHRpb25TZXQ8V0hMU0w6OlNoYWRlclN0YWdlPiBjb252
ZXJ0U2hhZGVyU3RhZ2VGbGFncyhHUFVTaGFkZXJTdGFnZUZsYWdzIGZsYWdzKQotewotICAgIE9w
dGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IHJlc3VsdDsKLSAgICBpZiAoZmxhZ3MgJiBHUFVT
aGFkZXJTdGFnZTo6RmxhZ3M6OlZlcnRleCkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hh
ZGVyU3RhZ2U6OlZlcnRleCk7Ci0gICAgaWYgKGZsYWdzICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdz
OjpGcmFnbWVudCkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkZyYWdt
ZW50KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUpCi0g
ICAgICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRlclN0YWdlOjpDb21wdXRlKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6Qmlu
ZGluZ0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVy
bmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlscykKLXsKLSAgICByZXR1cm4g
V1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZv
cm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6
QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlVuaWZvcm1CdWZmZXJC
aW5kaW5nIHsgdW5pZm9ybUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUgfSB9OwotICAgIH0sIFsm
XShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJl
dHVybiB7IFdITFNMOjpTYW1wbGVyQmluZGluZyB7IH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdy
b3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGlu
Zzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlRleHR1cmVCaW5k
aW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlN0b3JhZ2VCdWZmZXIg
c3RvcmFnZUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0Rl
dGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlN0b3JhZ2VCdWZmZXJCaW5kaW5nIHsg
c3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUgfSB9OwotICAgIH0sIFsmXShHUFVCaW5k
R3JvdXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNM
OjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKLX0KLQotc3RkOjpvcHRpb25hbDxX
SExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlv
dXQpCi17Ci0gICAgV0hMU0w6OkxheW91dCByZXN1bHQ7Ci0gICAgaWYgKGxheW91dC5iaW5kR3Jv
dXBMYXlvdXRzKCkuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBjb25z
dCBhdXRvJiBiaW5kR3JvdXBMYXlvdXQgPSBsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygpW2ldOwot
ICAgICAgICBXSExTTDo6QmluZEdyb3VwIGJpbmRHcm91cDsKLSAgICAgICAgYmluZEdyb3VwLm5h
bWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
a2V5VmFsdWVQYWlyIDogYmluZEdyb3VwTGF5b3V0LT5iaW5kaW5nc01hcCgpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBhdXRvJiBiaW5kaW5nRGV0YWlscyA9IGtleVZhbHVlUGFpci52YWx1ZTsKLSAg
ICAgICAgICAgIFdITFNMOjpCaW5kaW5nIGJpbmRpbmc7Ci0gICAgICAgICAgICBiaW5kaW5nLnZp
c2liaWxpdHkgPSBjb252ZXJ0U2hhZGVyU3RhZ2VGbGFncyhiaW5kaW5nRGV0YWlscy5leHRlcm5h
bEJpbmRpbmcudmlzaWJpbGl0eSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBiaW5kaW5nVHlwZSA9
IGNvbnZlcnRCaW5kaW5nVHlwZShiaW5kaW5nRGV0YWlscy5pbnRlcm5hbEJpbmRpbmdEZXRhaWxz
KSkKLSAgICAgICAgICAgICAgICBiaW5kaW5nLmJpbmRpbmcgPSAqYmluZGluZ1R5cGU7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgICAgIGlmIChiaW5kaW5nRGV0YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYmluZGluZy5leHRlcm5hbE5hbWUgPSBiaW5kaW5n
RGV0YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcuaW50
ZXJuYWxOYW1lID0gYmluZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lOwotICAgICAgICAgICAgYmlu
ZEdyb3VwLmJpbmRpbmdzLmFwcGVuZChXVEZNb3ZlKGJpbmRpbmcpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoYmluZEdyb3VwKSk7Ci0gICAgfQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTdkZDUyZGQ3ZTVkYTJhZDFkNGEx
Y2RjZjJiYzEyMTVlODM1MzNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci0KLXN0ZDo6b3B0aW9uYWw8V0hMU0w6OkxheW91
dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYpOwotCi19Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlMzlhYjU0MzU4NmUxNGVlOGZkNTYwOGMwNGVkMzZlMTc5ODFkM2MzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlIDxvYmpjL05TT2JqQ1J1bnRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfQ0xBU1MgQ0FNZXRhbERyYXdhYmxlOwotT0JKQ19DTEFTUyBXZWJHUFVM
YXllcjsKLQotT0JKQ19QUk9UT0NPTChNVExBcmd1bWVudEVuY29kZXIpOwotT0JKQ19QUk9UT0NP
TChNVExCbGl0Q29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExCdWZmZXIpOwotT0JK
Q19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEVu
Y29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOwotT0JKQ19QUk9UT0NPTChN
VExDb21wdXRlQ29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21wdXRlUGlwZWxp
bmVTdGF0ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKLU9CSkNfUFJP
VE9DT0woTVRMRGV2aWNlKTsKLU9CSkNfUFJPVE9DT0woTVRMTGlicmFyeSk7Ci1PQkpDX1BST1RP
Q09MKE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlw
ZWxpbmVTdGF0ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTFJlc291cmNlKTsKLU9CSkNfUFJPVE9DT0wo
TVRMU2FtcGxlclN0YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdXNpbmcgUGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQgPSBOU1VJbnRlZ2Vy
OwotCi0vLyBNZXRhbCB0eXBlcwotdXNpbmcgUGxhdGZvcm1CdWZmZXIgPSBNVExCdWZmZXI7Ci11
c2luZyBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQnVmZmVyPjsK
LQotdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyID0gTVRMQ29tbWFuZEJ1ZmZlcjsKLXVzaW5n
IFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tbWFu
ZEJ1ZmZlcj47Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gTVRMQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyOwotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0
ciA9IFJldGFpblB0cjxQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRm
b3JtQ29tcHV0ZVBpcGVsaW5lID0gTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tcHV0ZVBp
cGVsaW5lPjsKLQotdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBNVExEZXZpY2U7Ci11c2luZyBQbGF0
Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtRGV2aWNlPjsKLQotdXNpbmcg
UGxhdGZvcm1EcmF3YWJsZSA9IENBTWV0YWxEcmF3YWJsZTsKLXVzaW5nIFBsYXRmb3JtRHJhd2Fi
bGVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybURyYXdhYmxlPjsKLQotdXNpbmcgUGxhdGZv
cm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciA9IE1UTENvbW1hbmRFbmNvZGVyOwotdXNpbmcgUGxh
dGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3Jt
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+OwotCi11c2luZyBQbGF0Zm9ybVF1ZXVlID0gTVRMQ29t
bWFuZFF1ZXVlOwotdXNpbmcgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRm
b3JtUXVldWU+OwotCi11c2luZyBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyID0gTVRMUmVuZGVy
Q29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwotdXNpbmcgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtUmVuZGVyUGlwZWxpbmU+
OwotCi11c2luZyBQbGF0Zm9ybVNhbXBsZXIgPSBNVExTYW1wbGVyU3RhdGU7Ci11c2luZyBQbGF0
Zm9ybVNhbXBsZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVNhbXBsZXI+OwotCi11c2lu
ZyBQbGF0Zm9ybVNoYWRlck1vZHVsZSA9IE1UTExpYnJhcnk7Ci11c2luZyBQbGF0Zm9ybVNoYWRl
ck1vZHVsZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU2hhZGVyTW9kdWxlPjsKLQotdXNp
bmcgUGxhdGZvcm1Td2FwTGF5ZXIgPSBXZWJHUFVMYXllcjsKLXVzaW5nIFBsYXRmb3JtU3dhcExh
eWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Td2FwTGF5ZXI+OwotCi11c2luZyBQbGF0
Zm9ybVRleHR1cmUgPSBNVExUZXh0dXJlOwotdXNpbmcgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0dXJlPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiNzlkYjgzYmExZWI2ZTBjYmRjYmU5ZDBi
YTljOTAyNDlkNzk4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVCaW5k
R3JvdXAuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQotewotICAgIGlm
ICghcGxhdGZvcm1QYXNzRW5jb2RlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbcGxhdGZvcm1QYXNzRW5jb2RlcigpIGVuZEVuY29k
aW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpbnZhbGlkYXRlRW5j
b2RlcigpOwotICAgIG1fY29tbWFuZEJ1ZmZlci0+c2V0SXNFbmNvZGluZ1Bhc3MoZmFsc2UpOwot
fQotCi12b2lkIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWdu
ZWQgaW5kZXgsIEdQVUJpbmRHcm91cCYgYmluZEdyb3VwKQotewotICAgIGlmICghcGxhdGZvcm1Q
YXNzRW5jb2RlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBl
bmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gYXJndW1lbnRCdWZm
ZXIgPSBiaW5kR3JvdXAuYXJndW1lbnRCdWZmZXIoKTsKLSAgICBpZiAoIWFyZ3VtZW50QnVmZmVy
LmZpcnN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXJndW1lbnRCdWZmZXIuc2Vjb25k
LnZlcnRleCkKLSAgICAgICAgc2V0VmVydGV4QnVmZmVyKGFyZ3VtZW50QnVmZmVyLmZpcnN0LCAq
YXJndW1lbnRCdWZmZXIuc2Vjb25kLnZlcnRleCwgaW5kZXgpOwotICAgIGlmIChhcmd1bWVudEJ1
ZmZlci5zZWNvbmQuZnJhZ21lbnQpCi0gICAgICAgIHNldEZyYWdtZW50QnVmZmVyKGFyZ3VtZW50
QnVmZmVyLmZpcnN0LCAqYXJndW1lbnRCdWZmZXIuc2Vjb25kLmZyYWdtZW50LCBpbmRleCk7Ci0g
ICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5jb21wdXRlKQotICAgICAgICBzZXRDb21wdXRl
QnVmZmVyKGFyZ3VtZW50QnVmZmVyLmZpcnN0LCAqYXJndW1lbnRCdWZmZXIuc2Vjb25kLmNvbXB1
dGUsIGluZGV4KTsKLQotICAgIGZvciAoYXV0byYgYnVmZmVyIDogYmluZEdyb3VwLmJvdW5kQnVm
ZmVycygpKSB7Ci0gICAgICAgIHVzZVJlc291cmNlKGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSwg
c3RhdGljX2Nhc3Q8TVRMUmVzb3VyY2VVc2FnZT4oYnVmZmVyLT5wbGF0Zm9ybVVzYWdlKCkpKTsK
LSAgICAgICAgbV9jb21tYW5kQnVmZmVyLT51c2VCdWZmZXIoYnVmZmVyLmNvcHlSZWYoKSk7Ci0g
ICAgfQotICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGJpbmRHcm91cC5ib3VuZFRleHR1cmVzKCkp
IHsKLSAgICAgICAgdXNlUmVzb3VyY2UodGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCksIHN0YXRp
Y19jYXN0PE1UTFJlc291cmNlVXNhZ2U+KHRleHR1cmUtPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAg
ICAgICBtX2NvbW1hbmRCdWZmZXItPnVzZVRleHR1cmUodGV4dHVyZS5jb3B5UmVmKCkpOwotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVRdWV1ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFl
MWI0MmI1OTQ0ZjQ2YjlmMjdkYTkwZTY0MTZjNmRiZjBiMDVhMWEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUXVl
dWUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIu
aCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1
ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldlYktpdCI7Ci1zdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktpdC4iOwotCi1S
ZWZQdHI8R1BVUXVldWU+IEdQVVF1ZXVlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVUXVldWU6OnRyeUNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRR
dWV1ZT4gcXVldWU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHF1
ZXVlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tbWFuZFF1ZXVlXSk7
Ci0gICAgW3F1ZXVlIHNldExhYmVsOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF07Ci0KLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXF1ZXVlKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29t
bWFuZFF1ZXVlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdQVVF1ZXVlKFdURk1vdmUocXVldWUpLCBkZXZpY2UpKTsKLX0KLQot
R1BVUXVldWU6OkdQVVF1ZXVlKFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+JiYgcXVldWUsIGNv
bnN0IEdQVURldmljZSYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybVF1ZXVlKFdURk1vdmUocXVl
dWUpKQotICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKLXsKLX0KLQotdm9pZCBH
UFVRdWV1ZTo6c3VibWl0KFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZEJ1
ZmZlcnMpCi17Ci0gICAgZm9yIChhdXRvJiBjb21tYW5kQnVmZmVyIDogY29tbWFuZEJ1ZmZlcnMp
IHsKLSAgICAgICAgLy8gVmFsaWRhdGUgcmVzb3VyY2UgaW50ZWdyaXR5LgotICAgICAgICBmb3Ig
KGF1dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpIHsKLSAgICAgICAg
ICAgIGlmIChidWZmZXItPnN0YXRlKCkgIT0gR1BVQnVmZmVyOjpTdGF0ZTo6VW5tYXBwZWQpIHsK
LSAgICAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlk
IEdQVUJ1ZmZlciBzZXQgb24gYSBHUFVDb21tYW5kQnVmZmVyISIpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHRl
eHR1cmUgOiBjb21tYW5kQnVmZmVyLT51c2VkVGV4dHVyZXMoKSkgewotICAgICAgICAgICAgaWYg
KCF0ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJH
UFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVVGV4dHVyZSBzZXQgb24gYSBHUFVD
b21tYW5kQnVmZmVyISIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBjb21tYW5kQnVmZmVyLT5lbmRCbGl0RW5jb2RpbmcoKTsKLSAg
ICAgICAgLy8gT2theSB0byBjb21taXQ7IHByZXZlbnQgYW55IGJ1ZmZlciBtYXBwaW5nIGNhbGxi
YWNrcyBmcm9tIGV4ZWN1dGluZyB1bnRpbCBjb21tYW5kIGJ1ZmZlciBpcyBjb21wbGV0ZS4KLSAg
ICAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBjb21tYW5kQnVmZmVyLT51c2VkQnVmZmVycygpKQot
ICAgICAgICAgICAgYnVmZmVyLT5jb21tYW5kQnVmZmVyQ29tbWl0dGVkKGNvbW1hbmRCdWZmZXIt
PnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpKTsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgICAgIFtjb21tYW5kQnVmZmVyLT5wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBj
b21taXRdOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgfQotCi0gICAg
aWYgKG1fcHJlc2VudFRhc2suaXNQZW5kaW5nKCkgfHwgIW1fZGV2aWNlIHx8ICFtX2RldmljZS0+
c3dhcENoYWluKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGEgR1BVU3dhcENoYWlu
IGV4aXN0cywgZW5zdXJlIHRoYXQgYSBwcmVzZW50IGlzIHNjaGVkdWxlZCBhZnRlciBhbGwgY29t
bWFuZCBidWZmZXJzLgotICAgIG1fcHJlc2VudFRhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN3YXBDaGFpbiA9IG1ha2VSZWYoKm1fZGV2aWNl
LT5zd2FwQ2hhaW4oKSldICgpIHsKLSAgICAgICAgYXV0byBjdXJyZW50RHJhd2FibGUgPSBzd2Fw
Q2hhaW4tPnRha2VEcmF3YWJsZSgpOwotICAgICAgICAvLyBJZiB0aGUgR1BVU3dhcENoYWluIGhh
cyBubyBkcmF3YWJsZSwgaXQgd2FzIGludmFsaWRhdGVkIGJldHdlZW4gY29tbWFuZCBzdWJtaXNz
aW9uIGFuZCB0aGlzIHRhc2suCi0gICAgICAgIGlmICghY3VycmVudERyYXdhYmxlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcHJlc2VudENvbW1hbmRCdWZmZXIgPSBbbV9w
bGF0Zm9ybVF1ZXVlIGNvbW1hbmRCdWZmZXJdOwotICAgICAgICBbcHJlc2VudENvbW1hbmRCdWZm
ZXIgcHJlc2VudERyYXdhYmxlOnN0YXRpY19jYXN0PGlkPE1UTERyYXdhYmxlPj4oY3VycmVudERy
YXdhYmxlLmdldCgpKV07Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBjb21taXRdOwot
ICAgIH0pOwotfQotCi1TdHJpbmcgR1BVUXVldWU6OmxhYmVsKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fcGxhdGZvcm1RdWV1ZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBO
U1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX3BsYXRmb3JtUXVldWUgbGFiZWxdOwotCi0gICAg
aWYgKFtwcmVmaXhlZExhYmVsIGlzRXF1YWxUb1N0cmluZzpjb21tYW5kUXVldWVEZWZhdWx0TGFi
ZWxdKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIEFTU0VSVChwcmVmaXhl
ZExhYmVsLmxlbmd0aCA+IGNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aCk7Ci0gICAgcmV0
dXJuIFtwcmVmaXhlZExhYmVsIHN1YnN0cmluZ0Zyb21JbmRleDpjb21tYW5kUXVldWVMYWJlbFBy
ZWZpeC5sZW5ndGhdOwotfQotCi12b2lkIEdQVVF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcm
IGxhYmVsKSBjb25zdAotewotICAgIGlmIChsYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIFttX3Bs
YXRmb3JtUXVldWUgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLSAgICBlbHNl
Ci0gICAgICAgIFttX3BsYXRmb3JtUXVldWUgc2V0TGFiZWw6W2NvbW1hbmRRdWV1ZUxhYmVsUHJl
Zml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmxhYmVsXV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
YzM1NWUyM2ExODA5NzEwNzdkMWZhMWJjZDE1OWNkOGZiYmI5NmRjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNDE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW1wb3J0ICJHUFVCdWZmZXIuaCIKLSNpbXBvcnQgIkdQVUNvbG9yLmgiCi0jaW1wb3J0ICJHUFVD
b21tYW5kQnVmZmVyLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2lt
cG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQg
IldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0jaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTExvYWRBY3Rpb24gbG9hZEFjdGlvbkZv
ckdQVUxvYWRPcChHUFVMb2FkT3Agb3ApCi17Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2Ug
R1BVTG9hZE9wOjpDbGVhcjoKLSAgICAgICAgcmV0dXJuIE1UTExvYWRBY3Rpb25DbGVhcjsKLSAg
ICBjYXNlIEdQVUxvYWRPcDo6TG9hZDoKLSAgICAgICAgcmV0dXJuIE1UTExvYWRBY3Rpb25Mb2Fk
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRMU3Rv
cmVBY3Rpb24gc3RvcmVBY3Rpb25Gb3JHUFVTdG9yZU9wKEdQVVN0b3JlT3Agb3ApCi17Ci0gICAg
c3dpdGNoIChvcCkgewotICAgIGNhc2UgR1BVU3RvcmVPcDo6U3RvcmU6Ci0gICAgICAgIHJldHVy
biBNVExTdG9yZUFjdGlvblN0b3JlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1zdGF0aWMgYm9vbCBwb3B1bGF0ZU10bENvbG9yQXR0YWNobWVudHNBcnJheShNVExS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5ICphcnJheSwgY29uc3QgVmVj
dG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVzY3JpcHRvcnMs
IGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAg
ICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRlc2NyaXB0b3JzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yc1tpXTsKLSAgICAgICAgaWYgKCFkZXNjcmlwdG9y
LmF0dGFjaG1lbnQtPnBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBmb3IgY29sb3IgYXR0YWNobWVudCAldSEiLCBmdW5j
dGlvbk5hbWUsIGkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGNvbnN0IGF1dG8mIGNvbG9yID0gZGVzY3JpcHRvci5jbGVhckNvbG9yOwotCi0gICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIGF1dG8gbXRsQXR0YWNobWVu
dCA9IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmldKTsKLSAgICAg
ICAgW210bEF0dGFjaG1lbnQgc2V0VGV4dHVyZTpkZXNjcmlwdG9yLmF0dGFjaG1lbnQtPnBsYXRm
b3JtVGV4dHVyZSgpXTsKLSAgICAgICAgW210bEF0dGFjaG1lbnQgc2V0Q2xlYXJDb2xvcjpNVExD
bGVhckNvbG9yTWFrZShjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hKV07Ci0gICAg
ICAgIFttdGxBdHRhY2htZW50IHNldExvYWRBY3Rpb246bG9hZEFjdGlvbkZvckdQVUxvYWRPcChk
ZXNjcmlwdG9yLmxvYWRPcCldOwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRTdG9yZUFjdGlv
bjpzdG9yZUFjdGlvbkZvckdQVVN0b3JlT3AoZGVzY3JpcHRvci5zdG9yZU9wKV07Ci0KLSAgICAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1zdGF0aWMgYm9vbCBwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoTVRMUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm10bEF0dGFjaG1lbnQsIGNvbnN0IEdQ
VVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Y29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAg
IFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBpZiAoIWRlc2NyaXB0
b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIE1UTFRleHR1cmUgZm9yIGRlcHRoIGF0dGFjaG1lbnQhIiwgZnVuY3Rpb25O
YW1lKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotCi0gICAgW210bEF0dGFjaG1lbnQgc2V0VGV4dHVyZTpkZXNjcmlwdG9y
LmF0dGFjaG1lbnQtPnBsYXRmb3JtVGV4dHVyZSgpXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRD
bGVhckRlcHRoOmRlc2NyaXB0b3IuY2xlYXJEZXB0aF07Ci0gICAgW210bEF0dGFjaG1lbnQgc2V0
TG9hZEFjdGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IuZGVwdGhMb2FkT3Ap
XTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRTdG9yZUFjdGlvbjpzdG9yZUFjdGlvbkZvckdQVVN0
b3JlT3AoZGVzY3JpcHRvci5kZXB0aFN0b3JlT3ApXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCB1c2VBdHRhY2ht
ZW50cyhHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYg
ZGVzY3JpcHRvcikKLXsKLSAgICBmb3IgKGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IGRlc2NyaXB0
b3IuY29sb3JBdHRhY2htZW50cykKLSAgICAgICAgYnVmZmVyLnVzZVRleHR1cmUoV1RGTW92ZShj
b2xvckF0dGFjaG1lbnQuYXR0YWNobWVudCkpOwotICAgIGlmIChkZXNjcmlwdG9yLmRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQpCi0gICAgICAgIGJ1ZmZlci51c2VUZXh0dXJlKFdURk1vdmUoKCpkZXNj
cmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpLmF0dGFjaG1lbnQpKTsKLX0KLQotUmVmUHRy
PEdQVVJlbmRlclBhc3NFbmNvZGVyPiBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKFJl
ZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKCkiOwotCi0gICAgLy8gT25seSBvbmUgY29tbWFu
ZCBlbmNvZGVyIG1heSBiZSBhY3RpdmUgYXQgYSB0aW1lLgotICAgIGlmIChidWZmZXItPmlzRW5j
b2RpbmdQYXNzKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFeGlzdGluZyBwYXNzIGVu
Y29kZXIgbXVzdCBiZSBlbmRlZCBmaXJzdCEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtdGxEZXNjcmlw
dG9yOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlw
dG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRlclBhc3NEZXNjcmlw
dG9yISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIGlmICghcG9wdWxhdGVNdGxDb2xvckF0dGFjaG1lbnRzQXJyYXkobXRsRGVzY3JpcHRvci5n
ZXQoKS5jb2xvckF0dGFjaG1lbnRzLCBkZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMsIGZ1bmN0
aW9uTmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGRlc2NyaXB0b3Iu
ZGVwdGhTdGVuY2lsQXR0YWNobWVudAotICAgICAgICAmJiAhcG9wdWxhdGVNdGxEZXB0aFN0ZW5j
aWxBdHRhY2htZW50KG10bERlc2NyaXB0b3IuZ2V0KCkuZGVwdGhBdHRhY2htZW50LCAqZGVzY3Jp
cHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LCBmdW5jdGlvbk5hbWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIGJ1ZmZlci0+ZW5kQmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRh
aW5QdHI8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+IG10bEVuY29kZXI7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bEVuY29kZXIgPSBbYnVmZmVyLT5wbGF0Zm9y
bUNvbW1hbmRCdWZmZXIoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOm10bERl
c2NyaXB0b3IuZ2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
aWYgKCFtdGxFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNy
ZWF0ZSBNVExSZW5kZXJDb21tYW5kRW5jb2RlciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBBbGwgaXMgd2VsbDsgZW5zdXJlIEdQVUNv
bW1hbmRCdWZmZXIgaXMgYXdhcmUgb2YgbmV3IGF0dGFjaG1lbnRzLgotICAgIHVzZUF0dGFjaG1l
bnRzKGJ1ZmZlciwgV1RGTW92ZShkZXNjcmlwdG9yKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUobXRs
RW5jb2RlcikpKTsKLX0KLQotR1BVUmVuZGVyUGFzc0VuY29kZXI6OkdQVVJlbmRlclBhc3NFbmNv
ZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJldGFpblB0cjxNVExS
ZW5kZXJDb21tYW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSkKLSAgICAsIG1fcGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewotfQotCi1jb25zdCBNVExDb21tYW5kRW5j
b2RlciAqR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLXZv
aWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxjb25zdCBHUFVSZW5kZXJQ
aXBlbGluZT4mJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBp
cGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBNZXRhbCB0aHJvd3MgYW4gZXJyb3Ig
aWYgdGhlIE1UTFBpcGVsaW5lU3RhdGUncyBhdHRhY2htZW50IGZvcm1hdHMgZG8gbm90IG1hdGNo
IHRoZSBNVExDb21tYW5kRW5jb2RlcidzIGF0dGFjaG1lbnQgZm9ybWF0cy4KLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKHBpcGVsaW5lLT5kZXB0aFN0ZW5jaWxT
dGF0ZSgpKQotICAgICAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldERlcHRoU3Rl
bmNpbFN0YXRlOnBpcGVsaW5lLT5kZXB0aFN0ZW5jaWxTdGF0ZSgpXTsKLQotICAgIFttX3BsYXRm
b3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpwaXBlbGluZS0+cGxh
dGZvcm1SZW5kZXJQaXBlbGluZSgpXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIG1fcGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLX0KLQotdm9pZCBHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYgY29sb3IpCi17Ci0g
ICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbG9yKCk6IEludmFsaWQgb3BlcmF0
aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0Vu
Y29kZXIgc2V0QmxlbmRDb2xvclJlZDpjb2xvci5yIGdyZWVuOmNvbG9yLmcgYmx1ZTpjb2xvci5i
IGFscGhhOmNvbG9yLmFdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9p
ZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQot
ewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoKTogSW52YWxpZCBvcGVy
YXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlciBzZXRWaWV3cG9ydDogeyB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwgbWF4
RGVwdGggfV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0U2Npc3NvclJlY3QoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVu
ZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRTY2lzc29yUmVj
dDogeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH1dOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoR1BVQnVm
ZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRl
ZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2Zmc2V0ID49IGJ1ZmZlci5i
eXRlTGVuZ3RoKCkgfHwgb2Zmc2V0ICUgNCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb2Zmc2V0ISIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChidWZmZXIucGxhdGZvcm1CdWZmZXIoKSk7
Ci0gICAgLy8gQnVmZmVyIG11c3QgYmUgY2FjaGVkIHRvIHByb3ZpZGUgaXQgdG8gTWV0YWwgdmlh
IGRyYXdJbmRleGVkUHJpbWl0aXZlcy4KLSAgICBtX2luZGV4QnVmZmVyID0gbWFrZVJlZlB0cihi
dWZmZXIpOwotICAgIG1faW5kZXhCdWZmZXJPZmZzZXQgPSBvZmZzZXQ7Ci19Ci0KLXZvaWQgR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0
IFZlY3RvcjxSZWY8R1BVQnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IG9mZnNldHMpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJz
KCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChidWZmZXJzLnNpemUoKSAmJiBvZmZzZXRzLnNpemUo
KSA9PSBidWZmZXJzLnNpemUoKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIGF1dG8gbXRsQnVmZmVycyA9IGJ1ZmZlcnMubWFwKFt0aGlzXSAoYXV0byYgYnVmZmVy
KSB7Ci0gICAgICAgIGNvbW1hbmRCdWZmZXIoKS51c2VCdWZmZXIoYnVmZmVyLmNvcHlSZWYoKSk7
Ci0gICAgICAgIEFTU0VSVChidWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpOwotICAgICAgICByZXR1
cm4gYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpOwotICAgIH0pOwotCi0gICAgYXV0byBpbmRleFJh
bmdlcyA9IE5TTWFrZVJhbmdlKFdITFNMOjpNZXRhbDo6Y2FsY3VsYXRlVmVydGV4QnVmZmVySW5k
ZXgoaW5kZXgpLCBidWZmZXJzLnNpemUoKSk7Ci0KLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyIHNldFZlcnRleEJ1ZmZlcnM6bXRsQnVmZmVycy5kYXRhKCkgb2Zmc2V0czooY29uc3Qg
TlNVSW50ZWdlciAqKW9mZnNldHMuZGF0YSgpIHdpdGhSYW5nZTppbmRleFJhbmdlc107Ci0KLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBNVExQcmltaXRpdmVUeXBl
IG10bFByaW1pdGl2ZVR5cGVGb3JHUFVQcmltaXRpdmVUb3BvbG9neShHUFVQcmltaXRpdmVUb3Bv
bG9neSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR1BVUHJpbWl0aXZl
VG9wb2xvZ3k6OlBvaW50TGlzdDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVQb2lu
dDsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5OjpMaW5lTGlzdDoKLSAgICAgICAgcmV0
dXJuIE1UTFByaW1pdGl2ZVR5cGVMaW5lOwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6
OkxpbmVTdHJpcDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVMaW5lU3RyaXA7Ci0g
ICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVMaXN0OgotICAgICAgICByZXR1
cm4gTVRMUHJpbWl0aXZlVHlwZVRyaWFuZ2xlOwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xv
Z3k6OlRyaWFuZ2xlU3RyaXA6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlVHJpYW5n
bGVTdHJpcDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQg
aW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFu
Y2UpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0
aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoIW1fcGlwZWxpbmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpkcmF3KCk6IE5vIHZhbGlkIEdQVVJlbmRlclBpcGVsaW5lIGZvdW5kISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
W21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciAKLSAgICAgICAgZHJhd1ByaW1pdGl2ZXM6bXRs
UHJpbWl0aXZlVHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KG1fcGlwZWxpbmUtPnByaW1pdGl2
ZVRvcG9sb2d5KCkpCi0gICAgICAgIHZlcnRleFN0YXJ0OmZpcnN0VmVydGV4Ci0gICAgICAgIHZl
cnRleENvdW50OnZlcnRleENvdW50Ci0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFuY2VDb3Vu
dAotICAgICAgICBiYXNlSW5zdGFuY2U6Zmlyc3RJbnN0YW5jZV07Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotfQotCi1zdGF0aWMgTVRMSW5kZXhUeXBlIG10bEluZGV4VHlwZUZvckdQ
VUluZGV4Rm9ybWF0KEdQVUluZGV4Rm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgIGNhc2UgR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNjoKLSAgICAgICAgcmV0dXJuIE1U
TEluZGV4VHlwZVVJbnQxNjsKLSAgICBjYXNlIEdQVUluZGV4Rm9ybWF0OjpVaW50MzI6Ci0gICAg
ICAgIHJldHVybiBNVExJbmRleFR5cGVVSW50MzI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKHVu
c2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0
SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotI2lmICFM
T0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKCkiOwotI2VuZGlmCi0gICAgaWYgKCFtX3BsYXRm
b3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlk
IG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1fcGlwZWxpbmUpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBObyB2YWxpZCBHUFVSZW5kZXJQaXBlbGluZSBmb3VuZCEiLCBmdW5jdGlvbk5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZS0+aW5kZXhGb3Jt
YXQoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIEdQVUluZGV4Rm9ybWF0IHNwZWNp
ZmllZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICgh
bV9pbmRleEJ1ZmZlciB8fCAhbV9pbmRleEJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZhbGlkIGluZGV4IGJ1ZmZlciBzZXQhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXhCeXRlU2l6
ZSA9IChtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpID09IEdQVUluZGV4Rm9ybWF0OjpVaW50MTYp
ID8gc2l6ZW9mKHVpbnQxNl90KSA6IHNpemVvZih1aW50MzJfdCk7Ci0KLSAgICAvLyBUaGlzIGNh
bGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdyBhcyBmaXJzdEluZGV4IGlzIGJvdW5kZWQgdG8gMzIg
Yml0cywgYW5kIGluZGV4Qnl0ZVNpemUgdG8gc2l6ZW9mKHVpbnQzMl90KS4KLSAgICB1aW50NjRf
dCBmaXJzdEluZGV4T2Zmc2V0ID0gZmlyc3RJbmRleCAqIGluZGV4Qnl0ZVNpemU7Ci0KLSAgICAv
LyBUaGlzIGNhbGwgZW5zdXJlcyB0aGF0IG5laXRoZXIgYXJndW1lbnQgbm9yIHRoZWlyIHN1bSB3
aWxsIG92ZXJmbG93IE5TVUludGVnZXIuCi0gICAgYXV0byB0b3RhbE9mZnNldCA9IGNoZWNrZWRT
dW08TlNVSW50ZWdlcj4oZmlyc3RJbmRleE9mZnNldCwgbV9pbmRleEJ1ZmZlck9mZnNldCk7Ci0g
ICAgaWYgKHRvdGFsT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCB0b3RhbE9mZnNldCA+PSBtX2lu
ZGV4QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZh
bGlkIGZpcnN0SW5kZXghIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGNvbW1hbmRCdWZmZXIoKS51c2VCdWZmZXIobWFrZVJlZigqbV9pbmRleEJ1ZmZlcikp
OwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlcgotICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6bXRsUHJpbWl0aXZl
VHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KG1fcGlwZWxpbmUtPnByaW1pdGl2ZVRvcG9sb2d5
KCkpCi0gICAgICAgIGluZGV4Q291bnQ6aW5kZXhDb3VudAotICAgICAgICBpbmRleFR5cGU6bXRs
SW5kZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQoKm1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkpCi0g
ICAgICAgIGluZGV4QnVmZmVyOm1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAg
ICAgaW5kZXhCdWZmZXJPZmZzZXQ6dG90YWxPZmZzZXQudmFsdWUoKQotICAgICAgICBpbnN0YW5j
ZUNvdW50Omluc3RhbmNlQ291bnQKLSAgICAgICAgYmFzZVZlcnRleDpiYXNlVmVydGV4Ci0gICAg
ICAgIGJhc2VJbnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICpyZXNvdXJjZSwgdW5zaWduZWQgdXNhZ2Up
Ci17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
IHVzZVJlc291cmNlOnJlc291cmNlIHVzYWdlOnVzYWdlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZl
cihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2RlciBzZXRWZXJ0ZXhCdWZmZXI6YnVmZmVyIG9mZnNldDpvZmZzZXQgYXRJbmRleDppbmRleF07
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50
ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVu
ZGVyUGFzc0VuY29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
W21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIgb2Zm
c2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmU3N2U2OTU3YmZiNDk1NDQx
MjI1MWEwMzk4NTY5Yzk2NDNhOGE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTU5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVs
aW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNp
bXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0ICJHUFVMaW1pdHMuaCIKLSNpbXBvcnQg
IkdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJXSExTTFBy
ZXBhcmUuaCIKLSNpbXBvcnQgIldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2ltcG9ydCA8d3RmL0RhdGFM
b2cuaD4KLSNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgotI2ltcG9ydCA8d3RmL09wdGlvblNldC5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgUmV0YWluUHRy
PE1UTERlcHRoU3RlbmNpbFN0YXRlPiB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZShjb25z
dCBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgUmV0YWlu
UHRyPE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtN
VExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVz
LmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVW5hYmxlIHRvIGNyZWF0ZSBNVExEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRv
IG10bERlcHRoQ29tcGFyZSA9IHN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4ocGxhdGZv
cm1Db21wYXJlRnVuY3Rpb25Gb3JHUFVDb21wYXJlRnVuY3Rpb24oZGVzY3JpcHRvci5kZXB0aENv
bXBhcmUpKTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXREZXB0aENvbXBhcmVGdW5jdGlvbjptdGxE
ZXB0aENvbXBhcmVdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRoV3JpdGVFbmFibGVkOmRl
c2NyaXB0b3IuZGVwdGhXcml0ZUVuYWJsZWRdOwotCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBi
YWNrL2Zyb250RmFjZVN0ZW5jaWwuCi0KLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3Rh
dGU+IHN0YXRlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBzdGF0
ZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0RlcHRoU3RlbmNpbFN0YXRl
V2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOwotCi0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFzdGF0ZSkgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1UTERlcHRoU3RlbmNpbFN0YXRl
ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGU7
Ci19Ci0KLXN0YXRpYyBXSExTTDo6VmVydGV4Rm9ybWF0IGNvbnZlcnRWZXJ0ZXhGb3JtYXQoR1BV
VmVydGV4Rm9ybWF0IHZlcnRleEZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdCkg
ewotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVybiBXSExT
TDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMkEzMjsKLSAgICBjYXNlIEdQVVZlcnRleEZv
cm1hdDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRS
MzJHMzJCMzI7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MjoKLSAgICAgICAgcmV0
dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVCh2ZXJ0ZXhGb3JtYXQgPT0gR1BVVmVydGV4Rm9ybWF0OjpGbG9hdCk7Ci0gICAg
ICAgIHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMjsKLSAgICB9Ci19Ci0KLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZv
cm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewot
ICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIFdI
TFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1h
dDo6QmdyYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JB
OFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQg
dG8gZG8gd2l0aCB0aGlzLgotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybVNS
R0I6Ci0gICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I7
Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKLSAgICAgICAgcmV0dXJu
IFdITFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0KLQotc3RhdGljIE1UTFZlcnRleEZvcm1h
dCBtdGxWZXJ0ZXhGb3JtYXRGb3JHUFVWZXJ0ZXhGb3JtYXQoR1BVVmVydGV4Rm9ybWF0IGZvcm1h
dCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpG
bG9hdDoKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0OwotICAgIGNhc2UgR1BV
VmVydGV4Rm9ybWF0OjpGbG9hdDI6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhGb3JtYXRGbG9h
dDI7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MzoKLSAgICAgICAgcmV0dXJuIE1U
TFZlcnRleEZvcm1hdEZsb2F0MzsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQ0Ogot
ICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQ0OwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRMVmVydGV4U3RlcEZ1bmN0aW9uIG10bFN0
ZXBGdW5jdGlvbkZvckdQVUlucHV0U3RlcE1vZGUoR1BVSW5wdXRTdGVwTW9kZSBtb2RlKQotewot
ICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVSW5wdXRTdGVwTW9kZTo6VmVydGV4Ogot
ICAgICAgICByZXR1cm4gTVRMVmVydGV4U3RlcEZ1bmN0aW9uUGVyVmVydGV4OwotICAgIGNhc2Ug
R1BVSW5wdXRTdGVwTW9kZTo6SW5zdGFuY2U6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhTdGVw
RnVuY3Rpb25QZXJJbnN0YW5jZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIEdQVUxpbWl0cyB3aGVuIHRoYXQgaXMgaW1w
bGVtZW50ZWQgcHJvcGVybHkuCi1jb25zdGV4cHIgdW5zaWduZWQgbWF4VmVydGV4QXR0cmlidXRl
cyA9IDE2OwotCi1zdGF0aWMgYm9vbCB0cnlTZXRWZXJ0ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
bXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0g
ICAgY29uc3QgYXV0byYgYnVmZmVycyA9IGRlc2NyaXB0b3IudmVydGV4QnVmZmVyczsKLQotICAg
IGlmIChidWZmZXJzLnNpemUoKSA+IG1heFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUb28gbWFueSBHUFVWZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9ycyEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGF1dG8gbXRs
VmVydGV4RGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFZlcnRleERlc2NyaXB0b3IgbmV3XSk7Ci0K
LSAgICBhdXRvIGxheW91dEFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3IuZ2V0
KCkubGF5b3V0cyk7Ci0gICAgYXV0byBhdHRyaWJ1dGVBcnJheSA9IHJldGFpblB0cihtdGxWZXJ0
ZXhEZXNjcmlwdG9yLmdldCgpLmF0dHJpYnV0ZXMpOwotCi0gICAgLy8gQXR0cmlidXRlIHNoYWRl
ckxvY2F0aW9ucyBtdXN0IGJlIHVuaXF1ZWx5IGZsYXQtbWFwcGVkIHRvIFswLCB7bWF4IG51bWJl
ciBvZiB2ZXJ0ZXggYXR0cmlidXRlc31dLgotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4ID0g
MDsKLSAgICBIYXNoU2V0PHVuc2lnbmVkLCBJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IGxvY2F0aW9uczsKLQotICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBidWZmZXJzLnNpemUoKTsgKytpbmRleCkgewotICAg
ICAgICBpZiAoIWJ1ZmZlcnNbaW5kZXhdKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgY29uc3QgYXV0byYgYXR0cmlidXRlcyA9IGJ1ZmZlcnNbaW5kZXhdLT5hdHRyaWJ1dGVTZXQ7
Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc2l6ZSgpICsgYXR0cmlidXRlSW5kZXggPiBtYXhW
ZXJ0ZXhBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JzISIpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgTlNVSW50ZWdlciBp
bnB1dFN0cmlkZSA9IDA7Ci0gICAgICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGJ1ZmZlcnNb
aW5kZXhdLT5zdHJpZGUsIGlucHV0U3RyaWRlKSkgewotICAgICAgICAgICAgZXJyb3JTY29wZXMu
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIlN0cmlkZSBmb3IgR1BVVmVydGV4QnVm
ZmVyRGVzY3JpcHRvciAiLCBpbmRleCwgIiBpcyB0b28gbGFyZ2UhIikpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXJJ
bmRleCA9IFdITFNMOjpNZXRhbDo6Y2FsY3VsYXRlVmVydGV4QnVmZmVySW5kZXgoaW5kZXgpOwot
Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBhdXRvIG10bExh
eW91dERlc2MgPSByZXRhaW5QdHIoW2xheW91dEFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dDpjb252ZXJ0ZWRCdWZmZXJJbmRleF0pOwotICAgICAgICBbbXRsTGF5b3V0RGVzYyBzZXRTdGVw
RnVuY3Rpb246bXRsU3RlcEZ1bmN0aW9uRm9yR1BVSW5wdXRTdGVwTW9kZShidWZmZXJzW2luZGV4
XS0+c3RlcE1vZGUpXTsKLSAgICAgICAgW210bExheW91dERlc2Mgc2V0U3RyaWRlOmlucHV0U3Ry
aWRlXTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgYXR0cmlidXRlIDogYXR0cmlidXRlcykgewotICAgICAgICAgICAgaWYgKCFs
b2NhdGlvbnMuYWRkKGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbikuaXNOZXdFbnRyeSkgewotICAg
ICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5n
KCJEdXBsaWNhdGUgc2hhZGVyTG9jYXRpb24gIiwgYXR0cmlidXRlLnNoYWRlckxvY2F0aW9uLCAi
IGZvciB2ZXJ0ZXggYXR0cmlidXRlISIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5TVUludGVnZXIgb2Zmc2V0ID0gMDsKLSAg
ICAgICAgICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGF0dHJpYnV0ZS5vZmZzZXQsIG9mZnNl
dCkpIHsKLSAgICAgICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
bWFrZVN0cmluZygiQnVmZmVyIG9mZnNldCBmb3IgdmVydGV4IGF0dHJpYnV0ZSAiLCBhdHRyaWJ1
dGUuc2hhZGVyTG9jYXRpb24sICIgaXMgdG9vIGxhcmdlISIpKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgYXV0byBtdGxBdHRyaWJ1dGVEZXNjID0gcmV0YWlu
UHRyKFthdHRyaWJ1dGVBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6YXR0cmlidXRlSW5k
ZXhdKTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNldEZvcm1hdDptdGxWZXJ0ZXhG
b3JtYXRGb3JHUFVWZXJ0ZXhGb3JtYXQoYXR0cmlidXRlLmZvcm1hdCldOwotICAgICAgICAgICAg
W210bEF0dHJpYnV0ZURlc2Mgc2V0T2Zmc2V0Om9mZnNldF07Ci0gICAgICAgICAgICBbbXRsQXR0
cmlidXRlRGVzYyBzZXRCdWZmZXJJbmRleDpjb252ZXJ0ZWRCdWZmZXJJbmRleF07Ci0gICAgICAg
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgICAgIGlmICh3aGxzbERl
c2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgd2hsc2xEZXNjcmlwdG9yLT52ZXJ0ZXhBdHRyaWJ1
dGVzLmFwcGVuZCh7IGNvbnZlcnRWZXJ0ZXhGb3JtYXQoYXR0cmlidXRlLmZvcm1hdCksIGF0dHJp
YnV0ZS5zaGFkZXJMb2NhdGlvbiwgYXR0cmlidXRlSW5kZXggfSk7Ci0KLSAgICAgICAgICAgICsr
YXR0cmlidXRlSW5kZXg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBz
ZXRWZXJ0ZXhEZXNjcmlwdG9yOm10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCldOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBNVExDb2xvcldyaXRlTWFzayBtdGxDb2xvcldyaXRlTWFz
a0ZvckdQVUNvbG9yV3JpdGVGbGFncyhHUFVDb2xvcldyaXRlRmxhZ3MgZmxhZ3MpCi17Ci0gICAg
aWYgKGZsYWdzID09IHN0YXRpY19jYXN0PEdQVUNvbG9yV3JpdGVGbGFncz4oR1BVQ29sb3JXcml0
ZTo6RmxhZ3M6OkFsbCkpCi0gICAgICAgIHJldHVybiBNVExDb2xvcldyaXRlTWFza0FsbDsKLQot
ICAgIGF1dG8gb3B0aW9ucyA9IE9wdGlvblNldDxHUFVDb2xvcldyaXRlOjpGbGFncz46OmZyb21S
YXcoZmxhZ3MpOwotCi0gICAgTVRMQ29sb3JXcml0ZU1hc2sgbWFzayA9IE1UTENvbG9yV3JpdGVN
YXNrTm9uZTsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpSZWQpCi0g
ICAgICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tSZWQ7Ci0gICAgaWYgKG9wdGlvbnMgJiBH
UFVDb2xvcldyaXRlOjpGbGFnczo6R3JlZW4pCi0gICAgICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0
ZU1hc2tHcmVlbjsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpCbHVl
KQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQmx1ZTsKLSAgICBpZiAob3B0aW9u
cyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpBbHBoYSkKLSAgICAgICAgbWFzayB8PSBNVExDb2xv
cldyaXRlTWFza0FscGhhOwotCi0gICAgcmV0dXJuIG1hc2s7Ci19Ci0KLXN0YXRpYyBNVExCbGVu
ZE9wZXJhdGlvbiBtdGxCbGVuZE9wZXJhdGlvbkZvckdQVUJsZW5kT3BlcmF0aW9uKEdQVUJsZW5k
T3BlcmF0aW9uIG9wKQotewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIEdQVUJsZW5kT3Bl
cmF0aW9uOjpBZGQ6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbkFkZDsKLSAgICBj
YXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpTdWJ0cmFjdDoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5k
T3BlcmF0aW9uU3VidHJhY3Q7Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6UmV2ZXJzZVN1
YnRyYWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25SZXZlcnNlU3VidHJhY3Q7
Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6TWluOgotICAgICAgICByZXR1cm4gTVRMQmxl
bmRPcGVyYXRpb25NaW47Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6TWF4OgotICAgICAg
ICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25NYXg7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExCbGVuZEZhY3RvciBtdGxCbGVuZEZhY3RvckZvckdQ
VUJsZW5kRmFjdG9yKEdQVUJsZW5kRmFjdG9yIGZhY3RvcikKLXsKLSAgICBzd2l0Y2ggKGZhY3Rv
cikgewotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Olplcm86Ci0gICAgICAgIHJldHVybiBNVExC
bGVuZEZhY3Rvclplcm87Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lOgotICAgICAgICBy
ZXR1cm4gTVRMQmxlbmRGYWN0b3JPbmU7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6U3JjQ29s
b3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvclNvdXJjZUNvbG9yOwotICAgIGNhc2Ug
R1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzU3JjQ29sb3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVu
ZEZhY3Rvck9uZU1pbnVzU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6U3Jj
QWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvclNvdXJjZUFscGhhOwotICAgIGNh
c2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzU3JjQWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExC
bGVuZEZhY3Rvck9uZU1pbnVzU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6
RHN0Q29sb3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQ29sb3I7
Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNEc3RDb2xvcjoKLSAgICAgICAgcmV0
dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkNvbG9yOwotICAgIGNhc2UgR1BV
QmxlbmRGYWN0b3I6OkRzdEFscGhhOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JEZXN0
aW5hdGlvbkFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzRHN0QWxwaGE6
Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25BbHBoYTsK
LSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYVNhdHVyYXRlZDoKLSAgICAgICAgcmV0
dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6
QmxlbmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yQmxlbmRDb2xvcjsKLSAg
ICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c0JsZW5kQ29sb3I6Ci0gICAgICAgIHJldHVy
biBNVExCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRDb2xvcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGJvb2wgdHJ5U2V0Q29sb3JTdGF0ZXMoY29uc3Qg
VmVjdG9yPEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiYgY29sb3JTdGF0ZXMsIE1UTFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhcnJheSwgc3RkOjpvcHRpb25h
bDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVF
cnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBt
YXhpbXVtIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50cyBwZXIgcmVuZGVyIHBhc3MgZnJvbSBH
UFVMaW1pdHMuCi0gICAgaWYgKGNvbG9yU3RhdGVzLnNpemUoKSA+IDQpIHsKLSAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUb28gbWFueSBHUFVDb2xvclN0YXRlRGVz
Y3JpcHRvcnMhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2xv
clN0YXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IGNvbG9yU3RhdGVz
W2ldOwotICAgICAgICBhdXRvIGRlc2NyaXB0b3IgPSByZXRhaW5QdHIoW2FycmF5IG9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDppXSk7Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0
OnN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVU
ZXh0dXJlRm9ybWF0KHN0YXRlLmZvcm1hdCkpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0V3Jp
dGVNYXNrOm10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JXcml0ZUZsYWdzKHN0YXRlLndyaXRl
TWFzayldOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRCbGVuZGluZ0VuYWJsZWQ6WUVTXTsKLSAg
ICAgICAgW2Rlc2NyaXB0b3Igc2V0QWxwaGFCbGVuZE9wZXJhdGlvbjptdGxCbGVuZE9wZXJhdGlv
bkZvckdQVUJsZW5kT3BlcmF0aW9uKHN0YXRlLmFscGhhQmxlbmQub3BlcmF0aW9uKV07Ci0gICAg
ICAgIFtkZXNjcmlwdG9yIHNldFJnYkJsZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9y
R1BVQmxlbmRPcGVyYXRpb24oc3RhdGUuY29sb3JCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAg
W2Rlc2NyaXB0b3Igc2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9y
Rm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuYWxwaGFCbGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAg
W2Rlc2NyaXB0b3Igc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZv
ckdQVUJsZW5kRmFjdG9yKHN0YXRlLmNvbG9yQmxlbmQuZHN0RmFjdG9yKV07Ci0gICAgICAgIFtk
ZXNjcmlwdG9yIHNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVC
bGVuZEZhY3RvcihzdGF0ZS5hbHBoYUJsZW5kLnNyY0ZhY3RvcildOwotICAgICAgICBbZGVzY3Jp
cHRvciBzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFj
dG9yKHN0YXRlLmNvbG9yQmxlbmQuc3JjRmFjdG9yKV07Ci0KLSAgICAgICAgaWYgKHdobHNsRGVz
Y3JpcHRvcikgewotICAgICAgICAgICAgaWYgKGF1dG8gZm9ybWF0ID0gY29udmVydFRleHR1cmVG
b3JtYXQoc3RhdGUuZm9ybWF0KSkKLSAgICAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmF0
dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yLmF0dGFjaG1lbnREZXNjcmlwdG9ycy5hcHBlbmQoeypm
b3JtYXQsIGl9KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJJbnZhbGlkIEdQVVRleHR1cmVG
b3JtYXQgZm9yIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yICIsIGksICIhIikpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1z
dGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhNVExMaWJyYXJ5ICp2ZXJ0ZXhNZXRhbExp
YnJhcnksIE1UTExpYnJhcnkgKmZyYWdtZW50TWV0YWxMaWJyYXJ5LCBNVExSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0IFN0cmluZyYgdmVydGV4RW50cnlQb2lu
dE5hbWUsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzKQotewotICAgIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICAgICAgLy8gTWV0YWwgcmVxdWlyZXMgYSB2ZXJ0ZXggc2hhZGVyIGluIGFs
bCByZW5kZXIgcGlwZWxpbmVzLgotICAgICAgICBpZiAoIXZlcnRleE1ldGFsTGlicmFyeSkgewot
ICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNVExMaWJyYXJ5
IGZvciB2ZXJ0ZXggc3RhZ2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbdmVy
dGV4TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6dmVydGV4RW50cnlQb2ludE5hbWVd
KTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVhdGUgdmVydGV4IE1UTEZ1
bmN0aW9uICciLCB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgIichIikpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERlc2NyaXB0b3Igc2V0VmVydGV4
RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOwotCi0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgICAgIC8vIEhvd2V2ZXIsIGZyYWdtZW50IHNoYWRlcnMgYXJlIG9wdGlvbmFsLgot
ICAgICAgICBpZiAoIWZyYWdtZW50TWV0YWxMaWJyYXJ5IHx8IGZyYWdtZW50RW50cnlQb2ludE5h
bWUuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBhdXRvIGZ1
bmN0aW9uID0gYWRvcHROUyhbZnJhZ21lbnRNZXRhbExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFt
ZTpmcmFnbWVudEVudHJ5UG9pbnROYW1lXSk7Ci0KLSAgICAgICAgaWYgKCFmdW5jdGlvbikgewot
ICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmco
IkNhbm5vdCBjcmVhdGUgZnJhZ21lbnQgTVRMRnVuY3Rpb24gJyIsIGZyYWdtZW50RW50cnlQb2lu
dE5hbWUsICInISIpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCld
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCB0cnlTZXRG
dW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFn
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBm
cmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMTGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21l
bnRMaWJyYXJ5OwotICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9p
bnQ7Ci0KLSAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhT
dGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotICAgICAgICBBU1NFUlQoIWZyYWdtZW50U3Rh
Z2UgfHwgZnJhZ21lbnRTdGFnZS0+bW9kdWxlLT53aGxzbE1vZHVsZSgpKTsKLQotICAgICAgICB3
aGxzbERlc2NyaXB0b3ItPnZlcnRleEVudHJ5UG9pbnROYW1lID0gdmVydGV4U3RhZ2UuZW50cnlQ
b2ludDsKLSAgICAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICB3aGxzbERlc2Ny
aXB0b3ItPmZyYWdtZW50RW50cnlQb2ludE5hbWUgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50
OwotCi0gICAgICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0ID0gV0hMU0w6OnByZXBhcmUoKnZl
cnRleFN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgZnJhZ21lbnRTdGFnZSA/IGZyYWdtZW50
U3RhZ2UtPm1vZHVsZS0+d2hsc2xNb2R1bGUoKSA6IG51bGxwdHIsICp3aGxzbERlc2NyaXB0b3Ip
OwotICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgewotICAgICAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIldITFNMIGNvbXBpbGUgZXJy
b3I6ICIsIHdobHNsQ29tcGlsZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLQotICAg
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgTW9ub3RvbmljVGltZSBz
dGFydFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAg
ICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQgQWRkIGRpcmVjdCBTdHJpbmdCdWlsZGVy
IC0+IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQgZXh0cmEgY29weSBpbnRvIGEgV1RGOjpT
dHJpbmcKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURl
dmljZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOndobHNsQ29tcGlsZVJlc3VsdC0+bWV0YWxTb3Vy
Y2UudG9TdHJpbmcoKSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAgICAgICAgaWYgKFdI
TFNMOjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk1ldGFs
IGNvbXBpbGUgdGltZXM6ICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWls
bGlzZWNvbmRzKCksICIgbXMiKTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgICAgIGlmICghdmVydGV4TGlicmFyeSAmJiBlcnJvcikgewotICAgICAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
LlVURjhTdHJpbmcpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIE5TTG9nKEAiJUAiLCBl
cnJvcik7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhMaWJyYXJ5
KTsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NzEgT25jZSB3ZSB6ZXJvLWZpbGwgdmFyaWFibGVzLCB0aGVyZSBzaG91bGQgYmUg
bm8gd2FybmluZ3MsIHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIEFTU0VSVCghZXJyb3IpIGhlcmUu
Ci0KLSAgICAgICAgZnJhZ21lbnRMaWJyYXJ5ID0gdmVydGV4TGlicmFyeTsKLSAgICAgICAgdmVy
dGV4RW50cnlQb2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZFZlcnRleEVudHJ5UG9p
bnROYW1lLnRvU3RyaW5nKCk7Ci0gICAgICAgIGlmIChmcmFnbWVudFN0YWdlKQotICAgICAgICAg
ICAgZnJhZ21lbnRFbnRyeVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkRnJhZ21l
bnRFbnRyeVBvaW50TmFtZS50b1N0cmluZygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHZlcnRl
eExpYnJhcnkgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0g
ICAgICAgIHZlcnRleEVudHJ5UG9pbnQgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAg
ICBpZiAoZnJhZ21lbnRTdGFnZSkgewotICAgICAgICAgICAgZnJhZ21lbnRMaWJyYXJ5ID0gZnJh
Z21lbnRTdGFnZS0+bW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAgICAgICAgICAg
ZnJhZ21lbnRFbnRyeVBvaW50ID0gZnJhZ21lbnRTdGFnZS0+ZW50cnlQb2ludDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiB0cnlTZXRNZXRhbEZ1bmN0aW9ucyh2ZXJ0ZXhMaWJyYXJ5
LmdldCgpLCBmcmFnbWVudExpYnJhcnkuZ2V0KCksIG10bERlc2NyaXB0b3IsIHZlcnRleEVudHJ5
UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludCwgZXJyb3JTY29wZXMpOwotfQotCi1zdGF0aWMgUmV0
YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcihjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRv
cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRv
ciA9IGFkb3B0TlMoW01UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1U
TERlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8v
IERldGVybWluZSBpZiBzaGFkZXIgc291cmNlIGlzIGluIFdITFNMIG9yIE1TTC4KLSAgICBjb25z
dCBhdXRvJiB2ZXJ0ZXhTdGFnZSA9IGRlc2NyaXB0b3IudmVydGV4U3RhZ2U7Ci0gICAgY29uc3Qg
YXV0byYgZnJhZ21lbnRTdGFnZSA9IGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZTsKLQotICAgIGlm
IChmcmFnbWVudFN0YWdlICYmIHN0YXRpY19jYXN0PGJvb2w+KHZlcnRleFN0YWdlLm1vZHVsZS0+
d2hsc2xNb2R1bGUoKSkgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4oZnJhZ21lbnRTdGFnZS0+bW9kdWxl
LT53aGxzbE1vZHVsZSgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBpc1do
bHNsID0gdmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgLy8gU2V0IGRh
dGEgZm9yIHRoZSBNZXRhbCBwaXBlbGluZSBkZXNjcmlwdG9yIChhbmQgV0hMU0wncywgaWYgbmVl
ZGVkKS4KLSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+
IHdobHNsRGVzY3JpcHRvcjsKLSAgICBpZiAoaXNXaGxzbCkKLSAgICAgICAgd2hsc2xEZXNjcmlw
dG9yID0gV0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwotCi0gICAgaWYgKCF0cnlT
ZXRWZXJ0ZXhJbnB1dChkZXNjcmlwdG9yLnZlcnRleElucHV0LCBtdGxEZXNjcmlwdG9yLmdldCgp
LCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBpZiAoIXRyeVNldENvbG9yU3RhdGVzKGRlc2NyaXB0b3IuY29sb3JTdGF0ZXMsIG10
bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50cywgd2hsc2xEZXNjcmlwdG9yLCBlcnJv
clNjb3BlcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGRlc2NyaXB0b3Iu
bGF5b3V0ICYmIHdobHNsRGVzY3JpcHRvcikgewotICAgICAgICBpZiAoYXV0byBsYXlvdXQgPSBj
b252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91dCkpCi0gICAgICAgICAgICB3aGxzbERlc2Ny
aXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjb252ZXJ0aW5n
IEdQVVBpcGVsaW5lTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIXRyeVNldEZ1bmN0aW9ucyh2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgZGV2aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3Is
IGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbXRs
RGVzY3JpcHRvcjsKLX0KLQotc3RhdGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRl
PiB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNl
LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9y
U2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgp
KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBH
UFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
bXRsRGVzY3JpcHRvciA9IGNvbnZlcnRSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRv
ciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRl
PiBwaXBlbGluZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgcGlwZWxpbmUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3Jp
cHRvci5nZXQoKSBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoIXBpcGVsaW5lKQotICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24uVVRGOFN0cmluZyk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBy
ZXR1cm4gcGlwZWxpbmU7Ci19Ci0KLVJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVy
UGlwZWxpbmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JT
Y29wZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsU3RhdGU+IGRlcHRoU3RlbmNpbDsKLQotICAgIGlmIChkZXNjcmlwdG9yLmRlcHRoU3Rl
bmNpbFN0YXRlICYmICEoZGVwdGhTdGVuY2lsID0gdHJ5Q3JlYXRlTXRsRGVwdGhTdGVuY2lsU3Rh
dGUoKmRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUsIGRldmljZSwgZXJyb3JTY29wZXMpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM4NyBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvciBpc24ndCBpbXBsZW1lbnRlZCB5ZXQgZm9yIFdITFNMIGNvbXBpbGVyLgotCi0gICAg
YXV0byBwaXBlbGluZSA9IHRyeUNyZWF0ZU10bFJlbmRlclBpcGVsaW5lU3RhdGUoZGV2aWNlLCBk
ZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFwaXBlbGluZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5l
KFdURk1vdmUoZGVwdGhTdGVuY2lsKSwgV1RGTW92ZShwaXBlbGluZSksIGRlc2NyaXB0b3IucHJp
bWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IudmVydGV4SW5wdXQuaW5kZXhGb3JtYXQsIGRlc2Ny
aXB0b3IubGF5b3V0LCBkZXNjcmlwdG9yKSk7Ci19Ci0KLUdQVVJlbmRlclBpcGVsaW5lOjpHUFVS
ZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhTdGVu
Y2lsLCBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4mJiBwaXBlbGluZSwgR1BVUHJp
bWl0aXZlVG9wb2xvZ3kgdG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZv
cm1hdCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0LCBjb25zdCBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9yQmFzZSkKLSAgICA6
IEdQVVBpcGVsaW5lKCkKLSAgICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShkZXB0aFN0
ZW5jaWwpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUp
KQotICAgICwgbV9wcmltaXRpdmVUb3BvbG9neSh0b3BvbG9neSkKLSAgICAsIG1faW5kZXhGb3Jt
YXQoZm9ybWF0KQotICAgICwgbV9sYXlvdXQobGF5b3V0KQotICAgICwgbV9yZW5kZXJEZXNjcmlw
dG9yQmFzZShyZW5kZXJEZXNjcmlwdG9yQmFzZSkKLXsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6
On5HUFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVSZW5kZXJQaXBlbGlu
ZTo6cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKLXsKLSAgICBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RGTW92
ZSh2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFnZSksIG1fcmVuZGVyRGVzY3JpcHRv
ckJhc2UpOwotICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtd
IChHUFVFcnJvciYmKSB7IH0pOwotICAgIGlmIChhdXRvIHBpcGVsaW5lID0gdHJ5Q3JlYXRlTXRs
UmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkgewot
ICAgICAgICBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVT
YW1wbGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZjk3MzU0NWJk
ZDc4YzY4Y2YyODMwOGRiYzYwMmQwMTc2ZTBkYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTYW1wbGVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQg
IkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVVdGlscy5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTFNhbXBs
ZXJBZGRyZXNzTW9kZSBtdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKEdQVUFkZHJlc3NNb2Rl
IG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVBZGRyZXNzTW9kZTo6
Q2xhbXBUb0VkZ2U6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRv
RWRnZTsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBN
VExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQ7Ci0gICAgY2FzZSBHUFVBZGRyZXNzTW9kZTo6TWly
cm9yUmVwZWF0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlckFkZHJlc3NNb2RlTWlycm9yUmVw
ZWF0OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRM
U2FtcGxlck1pbk1hZ0ZpbHRlciBtdGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKEdQVUZpbHRl
ck1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUZpbHRlck1v
ZGU6Ok5lYXJlc3Q6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVz
dDsKLSAgICBjYXNlIEdQVUZpbHRlck1vZGU6OkxpbmVhcjoKLSAgICAgICAgcmV0dXJuIE1UTFNh
bXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWlwRmlsdGVyIG10bE1pcEZpbHRlckZvckZpbHRl
ck1vZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNh
c2UgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJNaXBG
aWx0ZXJOZWFyZXN0OwotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TGluZWFyOgotICAgICAgICBy
ZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxNVExTYW1wbGVyU3RhdGU+IHRyeUNy
ZWF0ZU10bFNhbXBsZXJTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2Ft
cGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCk6
IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICBSZXRhaW5QdHI8TVRMU2FtcGxlckRlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHRO
UyhbTVRMU2FtcGxlckRlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogRXJyb3IgY3JlYXRpbmcgTVRMU2FtcGxlckRlc2NyaXB0
b3IhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxN
VExTYW1wbGVyU3RhdGU+IHNhbXBsZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRSQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JB
ZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSldOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldFNBZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRlc2NyaXB0b3Iu
YWRkcmVzc01vZGVWKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0VEFkZHJlc3NNb2RlOm10bEFk
ZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVcpXTsKLSAgICBb
bXRsRGVzY3JpcHRvciBzZXRNaW5GaWx0ZXI6bXRsTWluTWFnRmlsdGVyRm9yRmlsdGVyTW9kZShk
ZXNjcmlwdG9yLm1pbkZpbHRlcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1hZ0ZpbHRlcjpt
dGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWFnRmlsdGVyKV07Ci0gICAg
W210bERlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOm10bE1pcEZpbHRlckZvckZpbHRlck1vZGUoZGVz
Y3JpcHRvci5taXBtYXBGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRMb2RNaW5DbGFt
cDpkZXNjcmlwdG9yLmxvZE1pbkNsYW1wXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRMb2RNYXhD
bGFtcDpkZXNjcmlwdG9yLmxvZE1heENsYW1wXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNYXhB
bmlzb3Ryb3B5OmRlc2NyaXB0b3IubWF4QW5pc290cm9weV07Ci0gICAgW210bERlc2NyaXB0b3Ig
c2V0Q29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4ocGxhdGZv
cm1Db21wYXJlRnVuY3Rpb25Gb3JHUFVDb21wYXJlRnVuY3Rpb24oZGVzY3JpcHRvci5jb21wYXJl
RnVuY3Rpb24pKV07Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJndW1lbnRCdWZm
ZXJzOllFU107Ci0KLSAgICBzYW1wbGVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNl
KCkgbmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc2FtcGxlcikKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRyeUNyZWF0ZSgpOiBFcnJvciBjcmVhdGluZyBN
VExTYW1wbGVyU3RhdGUhIik7Ci0KLSAgICByZXR1cm4gc2FtcGxlcjsKLX0KLQotUmVmUHRyPEdQ
VVNhbXBsZXI+IEdQVVNhbXBsZXI6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgYXV0byBzYW1w
bGVyID0gdHJ5Q3JlYXRlTXRsU2FtcGxlclN0YXRlKGRldmljZSwgZGVzY3JpcHRvcik7Ci0gICAg
aWYgKCFzYW1wbGVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR1BVU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKSk7Ci19Ci0KLUdQVVNhbXBsZXI6
OkdQVVNhbXBsZXIoUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4mJiBzYW1wbGVyKQotICAgIDog
bV9wbGF0Zm9ybVNhbXBsZXIoV1RGTW92ZShzYW1wbGVyKSkKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2NDRjMzVi
MGIwMDlkMWQ5ZjYxMDkxYTNmZmJmN2ZkNjNiOTBiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTaGFk
ZXJNb2R1bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5o
IgotI2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKTogSW52YWxpZCBH
UFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoR1BVRGV2aWNlOjp1c2VXSExTTCkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVT
aGFkZXJNb2R1bGUoV0hMU0w6OmNyZWF0ZVNoYWRlck1vZHVsZShkZXNjcmlwdG9yLmNvZGUpKSk7
Ci0KLSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1vZHVsZTsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5p
bF07Ci0gICAgbW9kdWxlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGli
cmFyeVdpdGhTb3VyY2U6ZGVzY3JpcHRvci5jb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0p
OwotICAgIGlmICghbW9kdWxlKQotICAgICAgICBMT0coV2ViR1BVLCAiU2hhZGVyIGNvbXBpbGF0
aW9uIGVycm9yOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmdd
KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBtb2R1bGUg
PyBhZG9wdFJlZihuZXcgR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpIDogbnVsbHB0
cjsKLX0KLQotR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJN
b2R1bGVTbWFydFB0ciYmIG1vZHVsZSkKLSAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUoV1RG
TW92ZShtb2R1bGUpKQotewotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShV
bmlxdWVSZWY8V0hMU0w6OlNoYWRlck1vZHVsZT4mJiB3aGxzbE1vZHVsZSkKLSAgICA6IG1fd2hs
c2xNb2R1bGUod2hsc2xNb2R1bGUubW92ZVRvVW5pcXVlUHRyKCkpCi17Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2M4OTM1MzIwYTA0OTJkMmZjZDUzNDkzYTYyYTAy
YzQwMTlmYzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1l
dGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0jaW1wb3J0ICJHUFVVdGls
cy5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLSNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBp
eGVsRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAgIGF1dG8gbXRsRm9ybWF0
ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQ
VVRleHR1cmVGb3JtYXQoZm9ybWF0KSk7Ci0KLSAgICBzd2l0Y2ggKG10bEZvcm1hdCkgewotICAg
IGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOgotICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRC
R1JBOFVub3JtX3NSR0I6Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0OgotICAg
ICAgICByZXR1cm4gbXRsRm9ybWF0OwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFVuc3VwcG9ydGVkIE1UTFBpeGVsRm9ybWF0
ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIHNldExheWVyU2hhcGUoV2ViR1BVTGF5ZXIgKmxheWVyLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCi17Ci0gICAgW2xheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHdpZHRo
LCBoZWlnaHQpXTsKLSAgICBbbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgs
IGhlaWdodCldOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdQVUxheWVyPiB0cnlDcmVhdGVX
ZWJHUFVMYXllcihNVExEZXZpY2UgKmRldmljZSwgTVRMUGl4ZWxGb3JtYXQgZm9ybWF0LCBPcHRp
b25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0KLSAgICBSZXRhaW5QdHI8
V2ViR1BVTGF5ZXI+IGxheWVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbGF5ZXIgPSBhZG9wdE5TKFtXZWJHUFVMYXllciBuZXddKTsKLQotICAgIFtsYXllciBzZXRO
YW1lOkAiV2ViIEdQVSBMYXllciJdOwotICAgIFtsYXllciBzZXRPcGFxdWU6MF07Ci0KLSAgICBb
bGF5ZXIgc2V0RGV2aWNlOmRldmljZV07Ci0gICAgW2xheWVyIHNldEZyYW1lYnVmZmVyT25seToo
dXNhZ2UgPT0gR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCldOwotICAg
IFtsYXllciBzZXRQaXhlbEZvcm1hdDpmb3JtYXRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hh
aW46OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKLQotICAg
IHJldHVybiBsYXllcjsKLX0KLQotUmVmUHRyPEdQVVN3YXBDaGFpbj4gR1BVU3dhcENoYWluOjp0
cnlDcmVhdGUoY29uc3QgR1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGlmICghZGVzY3JpcHRvci5kZXZpY2UtPnBsYXRmb3Jt
RGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRl
KCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBhdXRvIHBpeGVsRm9ybWF0ID0gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoZGVz
Y3JpcHRvci5mb3JtYXQpOwotICAgIGlmICghcGl4ZWxGb3JtYXQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byB1c2FnZU9wdGlvbnMgPSBPcHRpb25TZXQ8R1BVVGV4dHVyZVVz
YWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgaWYgKCF1c2FnZU9w
dGlvbnMuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFN3YXAg
Y2hhaW4gdXNhZ2UgbXVzdCBpbmNsdWRlIE9VVFBVVF9BVFRBQ0hNRU5UISIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGxheWVyID0gdHJ5Q3JlYXRlV2ViR1BV
TGF5ZXIoZGVzY3JpcHRvci5kZXZpY2UtPnBsYXRmb3JtRGV2aWNlKCksICpwaXhlbEZvcm1hdCwg
dXNhZ2VPcHRpb25zKTsKLSAgICBpZiAoIWxheWVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHNldExheWVyU2hhcGUobGF5ZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwotCi0gICAg
YXV0byBzd2FwQ2hhaW4gPSBhZG9wdFJlZihuZXcgR1BVU3dhcENoYWluKFdURk1vdmUobGF5ZXIp
LCB1c2FnZU9wdGlvbnMpKTsKLSAgICBkZXNjcmlwdG9yLmRldmljZS0+c2V0U3dhcENoYWluKHN3
YXBDaGFpbi5jb3B5UmVmKCkpOwotICAgIHJldHVybiBzd2FwQ2hhaW47Ci19Ci0KLUdQVVN3YXBD
aGFpbjo6R1BVU3dhcENoYWluKFJldGFpblB0cjxXZWJHUFVMYXllcj4mJiBwbGF0Zm9ybUxheWVy
LCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2VPcHRpb25zKQotICAgIDog
bV9wbGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQotICAgICwgbV91c2Fn
ZSh1c2FnZU9wdGlvbnMpCi17Ci0gICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0U3dhcENoYWlu
OnRoaXNdOwotfQotCi1SZWZQdHI8R1BVVGV4dHVyZT4gR1BVU3dhcENoYWluOjp0cnlHZXRDdXJy
ZW50VGV4dHVyZSgpCi17Ci0gICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBpZiAoIW1fY3VycmVudERyYXdh
YmxlKQotICAgICAgICBtX2N1cnJlbnREcmF3YWJsZSA9IHJldGFpblB0cihbbV9wbGF0Zm9ybVN3
YXBMYXllciBuZXh0RHJhd2FibGVdKTsKLSAgICBtdGxUZXh0dXJlID0gW21fY3VycmVudERyYXdh
YmxlIHRleHR1cmVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYg
KCFtdGxUZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmdldEN1
cnJlbnRUZXh0dXJlKCk6IFVuYWJsZSB0byBnZXQgY3VycmVudCBNVExUZXh0dXJlISIpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3Jl
YXRlKFdURk1vdmUobXRsVGV4dHVyZSksIG1fdXNhZ2UpOwotfQotCi12b2lkIEdQVVN3YXBDaGFp
bjo6cHJlc2VudCgpCi17Ci0gICAgaWYgKCFtX2N1cnJlbnREcmF3YWJsZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgW21fY3VycmVudERyYXdhYmxlIHByZXNlbnRdOwotICAgIG1fY3VycmVudERy
YXdhYmxlID0gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIHNldExheWVyU2hhcGUobV9wbGF0Zm9ybVN3YXBMYXll
ci5nZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdQVVN3YXBDaGFp
bjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1Td2FwTGF5
ZXIuZ2V0KCk7Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi1SZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxl
PiBHUFVTd2FwQ2hhaW46OnRha2VEcmF3YWJsZSgpCi17Ci0gICAgUmV0YWluUHRyPENBTWV0YWxE
cmF3YWJsZT4gcHRyOwotICAgIHB0ci5zd2FwKG1fY3VycmVudERyYXdhYmxlKTsKLSAgICByZXR1
cm4gcHRyOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDgyMDBlYmIwNTkzNDUzY2RjODVhNmM3MDI5YzUzMWFhNmMwYmU0ZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBv
cnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbXBv
cnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRh
bC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgTVRMVGV4dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0
dXJlRGVzY3JpcHRvcihjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsK
LSAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJl
RGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA9
PSAxKSA/IE1UTFRleHR1cmVUeXBlMUQgOiBNVExUZXh0dXJlVHlwZTFEQXJyYXk7Ci0gICAgY2Fz
ZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6IHsKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6
ZS5kZXB0aCA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50
ID09IDEpID8gTVRMVGV4dHVyZVR5cGUyRCA6IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZTsK
LSAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlMkRBcnJheTsgLy8gTVRMVGV4dHVyZVR5cGUy
RE11bHRpc2FtcGxlQXJyYXkgaXMgdW5hdmFpbGFibGUgb24gaU9TLgotICAgIH0KLSAgICBjYXNl
IEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBl
M0Q7Ci0gICAgfQotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10
bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNldDxHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzPiBmbGFncywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewot
I2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlm
Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpD
b3B5U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pICYmIChmbGFncyAm
IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICIlczogVGV4dHVyZSBjYW5ub3QgaGF2ZSBib3RoIFNUT1JBR0UgYW5kIGEgcmVhZC1vbmx5IHVz
YWdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotCi0gICAgTVRMVGV4dHVyZVVzYWdlIHJlc3VsdCA9IDA7Ci0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpKQotICAgICAgICBy
ZXN1bHQgfD0gTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0OwotICAgIGlmIChmbGFncy5jb250
YWluc0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UsIEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OlNhbXBsZWQgfSkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExUZXh0dXJlVXNhZ2VT
aGFkZXJSZWFkOwotICAgIGlmIChmbGFncy5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
OjpTdG9yYWdlKSkKLSAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRl
OwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi1zdGF0aWMg
TVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1U
TFBpeGVsRm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgc2FtcGxlcykKLXsKLSAgICAvLyBEZXB0aCwg
U3RlbmNpbCwgRGVwdGhTdGVuY2lsLCBhbmQgTXVsdGlzYW1wbGUgdGV4dHVyZXMgbXVzdCBiZSBh
bGxvY2F0ZWQgd2l0aCB0aGUgTVRMU3RvcmFnZU1vZGVQcml2YXRlIHJlc291cmNlIG9wdGlvbi4K
LSAgICBpZiAoZm9ybWF0ID09IE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4IHx8
IHNhbXBsZXMgPiAxKQotICAgICAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVQcml2YXRlOwotCi0g
ICAgcmV0dXJuIE1UTFN0b3JhZ2VNb2RlU2hhcmVkOwotfQotI2VuZGlmCi0KLXN0YXRpYyBSZXRh
aW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IHRyeUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9y
KGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkK
LXsKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBh
ZG9wdE5TKFtNVExUZXh0dXJlRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgbmV3IE1UTFRleHR1cmVEZXNjcmlwdG9yISIsIGZ1
bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIHdpZHRoID0gZGVzY3JpcHRvci5zaXplLndpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodCA9
IDE7Ci0gICAgdW5zaWduZWQgZGVwdGggPSAxOwotICAgIHVuc2lnbmVkIGFycmF5TGVuZ3RoID0g
MTsKLSAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0
dXJlRGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGFycmF5TGVuZ3RoID0gZGVzY3JpcHRvci5zaXpl
LmhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpf
MmQ6Ci0gICAgICAgIGhlaWdodCA9IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGFy
cmF5TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVpZ2h0ID0gZGVzY3JpcHRv
ci5zaXplLmhlaWdodDsKLSAgICAgICAgZGVwdGggPSBkZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBzdGF0aWNfY2Fz
dDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1h
dChkZXNjcmlwdG9yLmZvcm1hdCkpOwotCi0gICAgYXV0byBtdGxVc2FnZSA9IG10bFRleHR1cmVV
c2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKHVzYWdlLCBmdW5jdGlvbk5hbWUpOwotICAgIGlm
ICghbXRsVXNhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIGF1dG8gc3RvcmFnZU1vZGUgPSBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0jZWxzZQot
ICAgIGF1dG8gc3RvcmFnZU1vZGUgPSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxl
Q291bnQocGl4ZWxGb3JtYXQsIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpOwotI2VuZGlmCi0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFdp
ZHRoOndpZHRoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRIZWlnaHQ6aGVpZ2h0XTsKLSAgICBb
bXRsRGVzY3JpcHRvciBzZXREZXB0aDpkZXB0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0QXJy
YXlMZW5ndGg6YXJyYXlMZW5ndGhdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1pcG1hcExldmVs
Q291bnQ6ZGVzY3JpcHRvci5taXBMZXZlbENvdW50XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRT
YW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XTsKLSAgICBbbXRsRGVzY3JpcHRvciBz
ZXRUZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGRlc2Ny
aXB0b3IpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRQaXhlbEZvcm1hdDpwaXhlbEZvcm1hdF07
Ci0gICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6Km10bFVzYWdlXTsKLQotICAgIFttdGxEZXNj
cmlwdG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VNb2RlXTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwotfQotCi1SZWZQdHI8R1BV
VGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBj
b25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVU
ZXh0dXJlOjp0cnlDcmVhdGUoKSI7Ci0KLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgp
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVEZXZpY2UhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFbZGV2
aWNlLnBsYXRmb3JtRGV2aWNlKCkgc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6ZGVzY3JpcHRv
ci5zYW1wbGVDb3VudF0pIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVy
cm9yKG1ha2VTdHJpbmcoIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0ICIsIGRlc2NyaXB0b3Iuc2Ft
cGxlQ291bnQsICIgc2FtcGxlIGNvdW50LiIpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9
Ci0KLSAgICBhdXRvIHVzYWdlID0gT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+Ojpm
cm9tUmF3KGRlc2NyaXB0b3IudXNhZ2UpOwotICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IHRyeUNy
ZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgZGVzY3JpcHRvciwgdXNhZ2Up
OwotICAgIGlmICghbXRsRGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotCi0gICAgbXRsVGV4dHVyZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9y
bURldmljZSgpIG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUh
IiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRsVGV4dHVyZSksIHVzYWdl
KSk7Ci19Ci0KLVJlZjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGUoUmV0YWluUHRyPE1U
TFRleHR1cmU+JiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVz
YWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92ZSh0ZXh0
dXJlKSwgdXNhZ2UpKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVyZShSZXRhaW5QdHI8TVRM
VGV4dHVyZT4mJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNh
Z2UpCi0gICAgOiBtX3BsYXRmb3JtVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotICAgICwgbV91
c2FnZSh1c2FnZSkKLXsKLSAgICBtX3BsYXRmb3JtVXNhZ2UgPSBNVExSZXNvdXJjZVVzYWdlUmVh
ZDsKLSAgICBpZiAoaXNTYW1wbGVkKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExS
ZXNvdXJjZVVzYWdlU2FtcGxlOwotICAgIGVsc2UgaWYgKGlzU3RvcmFnZSgpKQotICAgICAgICBt
X3BsYXRmb3JtVXNhZ2UgfD0gTVRMUmVzb3VyY2VVc2FnZVdyaXRlOwotfQotCi1SZWZQdHI8R1BV
VGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkKLXsKLSAg
ICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gdGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgdGV4dHVyZSA9IGFkb3B0TlMoW21fcGxhdGZvcm1UZXh0dXJlIG5l
d1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0Om1fcGxhdGZvcm1UZXh0dXJlLmdldCgpLnBpeGVs
Rm9ybWF0XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXRl
eHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0
ZShXVEZNb3ZlKHRleHR1cmUpLCBtX3VzYWdlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMDg5ZjRhNGM2YjI4MzRhOWFlNmZhZDQwNzU3MTZh
ZTVkYzcwOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJHUFVVdGlscy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9y
bVRleHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChH
UFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNh
c2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVs
Rm9ybWF0UkdCQThVbm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmE4dWludDoK
LSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQThVaW50OwotICAgIGNhc2UgR1BVVGV4
dHVyZUZvcm1hdDo6QmdyYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0QkdS
QThVbm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4
OgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDg7Ci0g
ICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAgcmV0dXJu
IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1h
dDo6UmdiYTE2ZmxvYXQ6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1QbGF0Zm9ybUNvbXBh
cmVGdW5jdGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihH
UFVDb21wYXJlRnVuY3Rpb24gZnVuYykKLXsKLSAgICBzd2l0Y2ggKGZ1bmMpIHsKLSAgICBjYXNl
IEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVu
Y3Rpb25OZXZlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzczoKLSAgICAgICAg
cmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkxlc3M7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rp
b246OkVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uRXF1YWw7Ci0gICAg
Y2FzZSBHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NFcXVhbDoKLSAgICAgICAgcmV0dXJuIE1UTENv
bXBhcmVGdW5jdGlvbkxlc3NFcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3Jl
YXRlcjoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkdyZWF0ZXI7Ci0gICAgY2Fz
ZSBHUFVDb21wYXJlRnVuY3Rpb246Ok5vdEVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFy
ZUZ1bmN0aW9uTm90RXF1YWw7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXJF
cXVhbDoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbDsKLSAg
ICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOgotICAgICAgICByZXR1cm4gTVRMQ29t
cGFyZUZ1bmN0aW9uQWx3YXlzOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRv
d0Rpc3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggMTI5M2RhNTU5ZjkyOWE3
YWVlYzU0ZDA3YWE5YWU0Zjk5NGY5NWI0NC4uZjAyY2U4ZmRmMGYwYzU4ZjQwNzBkNGI0Yjc4MWVk
YjVmMWVjMjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC0z
OSw2ICszOSw3IEBACiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlw
ZUNhc3RzQ0YuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0ICJDb3Jl
VmlkZW9Tb2Z0TGluay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCA2ZDFiZTYxM2ExMjk0YjVhZjI5MThkNjE2OTBmY2M3ZmUyMWRi
NDIyLi5jZTc2OWY4NWQ2MWE5NGE0OGEyZDcyOGQ3MTAwOWZjMThmZTkwNmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA2Myw3
ICsxMDYzLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24o
Y29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBkYXRlQ29udGVu
dHNSZWN0cygpOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxFKFdFQkdMKSB8fCBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2FudmFz
KCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xh
eWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9
IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAgICAg
ICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCkBAIC0y
ODg1LDcgKzI4ODUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5nZWQo
Q29udGVudENoYW5nZVR5cGUgY2hhbmdlVHlwZSkKICAgICBpZiAoKGNoYW5nZVR5cGUgPT0gTWFz
a0ltYWdlQ2hhbmdlZCkgJiYgbV9tYXNrTGF5ZXIpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0
TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotI2lmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBpZiAoKGNoYW5nZVR5
cGUgPT0gQ2FudmFzQ2hhbmdlZCB8fCBjaGFuZ2VUeXBlID09IENhbnZhc1BpeGVsc0NoYW5nZWQp
ICYmIHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJl
bmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBpZiAoY2hhbmdl
VHlwZSA9PSBDYW52YXNDaGFuZ2VkKQogICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjaGVkdWxl
Q29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMK
aW5kZXggNGM5MTk3OTlkZTJlNWIzZDcyZjFiYzk0MTI1ODYzMTUxOGE1ZjYyNi4uN2QwMWRlYzlm
NjI0MGNhOTZjMmE1ZGRhYjJjZWZlMWE3NDRlNGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNN
YW5hZ2VyLmpzCkBAIC0yNTksMTAgKzI1OSw2IEBAIFdJLkNhbnZhc01hbmFnZXIgPSBjbGFzcyBD
YW52YXNNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgbGV0IG9wdGlvbnMgPSB7
fTsKIAotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBDYW52YXMuU2hhZGVy
UHJvZ3JhbS5zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcmAgZGlkIG5vdCBleGlzdCB5ZXQuCi0g
ICAgICAgIGlmIChzaGFkZXJQcm9ncmFtUGF5bG9hZC5zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRl
cikKLSAgICAgICAgICAgIG9wdGlvbnMuc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSB0cnVl
OwotCiAgICAgICAgIGxldCBwcm9ncmFtID0gbmV3IFdJLlNoYWRlclByb2dyYW0ocHJvZ3JhbUlk
LCBwcm9ncmFtVHlwZSwgY2FudmFzLCBvcHRpb25zKTsKICAgICAgICAgdGhpcy5fc2hhZGVyUHJv
Z3JhbUlkZW50aWZpZXJNYXAuc2V0KHByb2dyYW0uaWRlbnRpZmllciwgcHJvZ3JhbSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52
YXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFz
LmpzCmluZGV4IGZmNzFhZjZkNDNkMjc2YzExZjc0MzYyM2I4MzJmOTRiNjFlZmUyZmYuLjgzYTdk
NjY4YTNmZDE1OTUyYmY3ZjI0NGI2Nzc0MGI1OGJhZDA5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcwpAQCAtNzIsOSAr
NzIsNiBAQCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMjoK
ICAgICAgICAgICAgIGNvbnRleHRUeXBlID0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMjsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5D
YW52YXMuQ29udGV4dFR5cGUuV2ViR1BVOgotICAgICAgICAgICAgY29udGV4dFR5cGUgPSBXSS5D
YW52YXMuQ29udGV4dFR5cGUuV2ViR1BVOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJNZXRhbDoKICAg
ICAgICAgICAgIGNvbnRleHRUeXBlID0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYk1ldGFsOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDIsOCArOTksNiBAQCBXSS5DYW52YXMgPSBjbGFzcyBD
YW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJldHVybiBXSS51bmxvY2FsaXpl
ZFN0cmluZygiV2ViR0wiKTsKICAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2Vi
R0wyOgogICAgICAgICAgICAgcmV0dXJuIFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJHTDIiKTsK
LSAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVOgotICAgICAgICAgICAg
cmV0dXJuIFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWIgR1BVIik7CiAgICAgICAgIGNhc2UgV0ku
Q2FudmFzLkNvbnRleHRUeXBlLldlYk1ldGFsOgogICAgICAgICAgICAgcmV0dXJuIFdJLnVubG9j
YWxpemVkU3RyaW5nKCJXZWJNZXRhbCIpOwogICAgICAgICB9CkBAIC0xMjEsNyArMTE2LDYgQEAg
V0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgc3RhdGljIHN1
cHBvcnRzUmVxdWVzdENvbnRlbnRGb3JDb250ZXh0VHlwZShjb250ZXh0VHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY29udGV4dFR5cGUpIHsKLSAgICAgICAgY2FzZSBDYW52YXMuQ29udGV4
dFR5cGUuV2ViR1BVOgogICAgICAgICBjYXNlIENhbnZhcy5Db250ZXh0VHlwZS5XZWJNZXRhbDoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTcyLDEyICsxNjYsNiBA
QCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkNhbnZhcyAlcyIpLmZvcm1hdChpZFNlbGVjdG9yKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9jb250ZXh0VHlwZSA9PT0gQ2FudmFzLkNv
bnRleHRUeXBlLldlYkdQVSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl91bmlxdWVEaXNwbGF5
TmFtZU51bWJlcikKLSAgICAgICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJl
ciA9IENhbnZhcy5fbmV4dERldmljZVVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKys7Ci0gICAgICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkRldmljZSAlZCIpLmZvcm1hdCh0aGlzLl91bmlxdWVE
aXNwbGF5TmFtZU51bWJlcik7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIXRoaXMuX3VuaXF1
ZURpc3BsYXlOYW1lTnVtYmVyKQogICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVO
dW1iZXIgPSBDYW52YXMuX25leHRDb250ZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIrKzsKICAg
ICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJDYW52YXMgJWQiKS5mb3JtYXQodGhpcy5fdW5pcXVl
RGlzcGxheU5hbWVOdW1iZXIpOwpAQCAtNDUwLDcgKzQzOCw2IEBAIFdJLkNhbnZhcy5Db250ZXh0
VHlwZSA9IHsKICAgICBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwKICAgICBXZWJH
TDogIndlYmdsIiwKICAgICBXZWJHTDI6ICJ3ZWJnbDIiLAotICAgIFdlYkdQVTogIndlYmdwdSIs
CiAgICAgV2ViTWV0YWw6ICJ3ZWJtZXRhbCIsCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJvZ3JhbS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzCmlu
ZGV4IGRmYjg3YTEzODZjZjZkMmNjZDMzN2E3YjZjMTliOGUyZGY0NWE0ZDMuLmNiMDRmNGRlOTI2
YTNhZDUyNGU1OWY5MDA3YmVkMGNiYjkyMjlhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFdJLlNoYWRlclByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFt
IGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgcHJvZ3Jh
bVR5cGUsIGNhbnZhcywge3NoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyfSA9IHt9KQorICAgIGNv
bnN0cnVjdG9yKGlkZW50aWZpZXIsIHByb2dyYW1UeXBlLCBjYW52YXMpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoT2Jq
ZWN0LnZhbHVlcyhTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlKS5pbmNsdWRlcyhwcm9ncmFtVHlw
ZSkpOwpAQCAtMzgsOSArMzgsNiBAQCBXSS5TaGFkZXJQcm9ncmFtID0gY2xhc3MgU2hhZGVyUHJv
Z3JhbSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9wcm9ncmFtVHlwZSA9IHByb2dy
YW1UeXBlOwogICAgICAgICB0aGlzLl9jYW52YXMgPSBjYW52YXM7CiAKLSAgICAgICAgdGhpcy5f
c2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSAhIXNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVy
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFk
ZXIgfHwgKHRoaXMuX2NhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBl
LldlYkdQVSAmJiB0aGlzLl9wcm9ncmFtVHlwZSA9PT0gU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlw
ZS5SZW5kZXIpKTsKLQogICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlOwogICAgIH0KIApA
QCAtNTIsMTAgKzQ5LDYgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNsYXNzIFNoYWRlclByb2dyYW0g
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2Vi
R0w6CiAgICAgICAgIGNhc2UgV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMjoKICAgICAgICAg
ICAgIHJldHVybiBwcm9ncmFtVHlwZSA9PT0gU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5k
ZXI7Ci0KLSAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVOgotICAgICAg
ICAgICAgcmV0dXJuIHByb2dyYW1UeXBlID09PSBTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNv
bXB1dGUKLSAgICAgICAgICAgICAgICB8fCBwcm9ncmFtVHlwZSA9PT0gU2hhZGVyUHJvZ3JhbS5Q
cm9ncmFtVHlwZS5SZW5kZXI7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2VydCgp
OwpAQCAtODIsNyArNzUsNiBAQCBXSS5TaGFkZXJQcm9ncmFtID0gY2xhc3MgU2hhZGVyUHJvZ3Jh
bSBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCBpZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5f
aWRlbnRpZmllcjsgfQogICAgIGdldCBwcm9ncmFtVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3Byb2dy
YW1UeXBlOyB9CiAgICAgZ2V0IGNhbnZhcygpIHsgcmV0dXJuIHRoaXMuX2NhbnZhczsgfQotICAg
IGdldCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcigpIHsgcmV0dXJuIHRoaXMuX3NoYXJlc1Zl
cnRleEZyYWdtZW50U2hhZGVyOyB9CiAKICAgICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKQEAg
LTkyLDE2ICs4NCw2IEBAIFdJLlNoYWRlclByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFtIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNhc2UgV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdM
MjoKICAgICAgICAgICAgIGZvcm1hdCA9IFdJLlVJU3RyaW5nKCJQcm9ncmFtICVkIik7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BV
OgotICAgICAgICAgICAgc3dpdGNoICh0aGlzLl9wcm9ncmFtVHlwZSkgewotICAgICAgICAgICAg
Y2FzZSBTaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGU6Ci0gICAgICAgICAgICAgICAg
Zm9ybWF0ID0gV0kuVUlTdHJpbmcoIkNvbXB1dGUgUGlwZWxpbmUgJWQiKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5S
ZW5kZXI6Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gV0kuVUlTdHJpbmcoIlJlbmRlciBQaXBl
bGluZSAlZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY29uc29sZS5hc3NlcnQoZm9ybWF0KTsK
ICAgICAgICAgaWYgKCF0aGlzLl91bmlxdWVEaXNwbGF5TnVtYmVyKQpAQCAtMTE5LDkgKzEwMSw2
IEBAIFdJLlNoYWRlclByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFtIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2dyYW1UeXBlID09PSBTaGFkZXJQ
cm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2NhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMIHx8IHRo
aXMuX2NhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMik7
CiAKLSAgICAgICAgaWYgKHRoaXMuX2NhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNv
bnRleHRUeXBlLldlYkdQVSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBpZiAodGhp
cy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kv
MTEuMy9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTEuMy9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKaW5kZXggMjEyNWQzZDYyMmQyN2E4NjdkNGM0OTJjZmE4Y2FlNmM3YzFkNTU4Ni4uNjNj
ZmM5ODcyNGI3ZTc0MzFlNWJkNWRlNWJhYmE0MWJjOTZhYzUwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzExLjMvSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMS4zL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwpA
QCAtNjksNyArNjksNyBAQCBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJDU1MiLCBb
Iml0bWwiLCAicGFnZSJdKTsKIAogLy8gQ2FudmFzCiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
RG9tYWluKCJDYW52YXMiLCBbInBhZ2UiXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51
bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVu
ZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIi
LCBXZWJHUFU6ICJ3ZWJncHUifSk7CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2Fu
dmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6
ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIifSk7CiBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLlNoYWRlclR5cGUiLCB7RnJhZ21l
bnQ6ICJmcmFnbWVudCIsIFZlcnRleDogInZlcnRleCJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJDb21tYW5kKCJDYW52YXMuZW5hYmxlIiwgbnVsbCwgW10sIFtdKTsKIEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMuZGlzYWJsZSIsIG51bGwsIFtdLCBbXSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9M
ZWdhY3kvMTIuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTIuMC9JbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMKaW5kZXggNTY2MWFhNTZjNTUyMjA5NzFmY2Q5NDE1YWZiOTA0YjFjY2M1NTFk
NS4uYzI1NDJlODFiZjkxNGNlM2U1Yzk3ZGEwZTI5Nzc2MzRkZGU5ZmQ5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzEyLjAv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMi4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcwpAQCAtNjksNyArNjksNyBAQCBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJD
U1MiLCBbIml0bWwiLCAicGFnZSJdKTsKIAogLy8gQ2FudmFzCiBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRG9tYWluKCJDYW52YXMiLCBbInBhZ2UiXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVyRW51bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0
bWFwUmVuZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3
ZWJnbDIiLCBXZWJHUFU6ICJ3ZWJncHUifSk7CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51
bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVu
ZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIi
fSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLlNoYWRlclR5cGUiLCB7
RnJhZ21lbnQ6ICJmcmFnbWVudCIsIFZlcnRleDogInZlcnRleCJ9KTsKIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMuZW5hYmxlIiwgbnVsbCwgW10sIFtdKTsKIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMuZGlzYWJsZSIsIG51bGwsIFtdLCBb
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9MZWdhY3kvMTMuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuMC9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKaW5kZXggNDg5NDRkYzM3YTM4ZDhmZjBiZmM1YTVmZmVlNGVlYmEy
YmZkNTUxOS4uNWU4YTE0MTRjZjRmZGUwMDM0MTIxYjgxNGI0N2RkYjcyNjQ5ZTgxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5
LzEzLjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMy4wL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwpAQCAtODksNyArODksNyBAQCBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9t
YWluKCJDU1MiLCBbIml0bWwiLCAicGFnZSIsICJ3ZWItcGFnZSJdKTsKIAogLy8gQ2FudmFzCiBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluKCJDYW52YXMiLCBbInBhZ2UiXSk7Ci1JbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJE
OiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAi
d2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIiLCBXZWJHUFU6ICJ3ZWJncHUifSk7CitJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2Fu
dmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wi
LCBXZWJHTDI6ICJ3ZWJnbDIifSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2Fu
dmFzLlNoYWRlclR5cGUiLCB7RnJhZ21lbnQ6ICJmcmFnbWVudCIsIFZlcnRleDogInZlcnRleCJ9
KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMuZW5hYmxlIiwgbnVs
bCwgW10sIFtdKTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDYW52YXMuZGlz
YWJsZSIsIG51bGwsIFtdLCBbXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTMuNC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdh
Y3kvMTMuNC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKaW5kZXggYjlkZjYxNWE3OTNjZmM4
MWFjZWM3YjkwZDAxNmY0MWE1YWVlMDU2OC4uYTg5ZDYzMDRmNzNmNWU3YjVjODIwZDllMjJiNmE4
Njc2Y2Q4NTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvTGVnYWN5LzEzLjQvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xMy40
L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwpAQCAtMTAxLDcgKzEwMSw3IEBAIEluc3BlY3Rv
ckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIkNTUyIsIFsiaXRtbCIsICJwYWdlIiwgIndlYi1wYWdl
Il0pOwogCiAvLyBDYW52YXMKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW4oIkNhbnZh
cyIsIFsicGFnZSJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29u
dGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1h
cHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiIsIFdlYkdQVTogIndl
YmdwdSJ9KTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5
cGUiLCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRl
cmVyIiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdMMjogIndlYmdsMiJ9KTsKIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuUHJvZ3JhbVR5cGUiLCB7Q29tcHV0ZTogImNvbXB1dGUi
LCBSZW5kZXI6ICJyZW5kZXIifSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2Fu
dmFzLlNoYWRlclR5cGUiLCB7Q29tcHV0ZTogImNvbXB1dGUiLCBGcmFnbWVudDogImZyYWdtZW50
IiwgVmVydGV4OiAidmVydGV4In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQo
IkNhbnZhcy5lbmFibGUiLCBudWxsLCBbXSwgW10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE0LjAvSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvTGVnYWN5LzE0LjAvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCmluZGV4IDY4NWU5
OGVlNWU1NTI5MDViN2VlODc3ZTRhNjA0ZWViZTZlN2QwZjMuLjYzODk0MGZmY2EzMTdjMTYwNzFj
ODRiMDRkNTY4NzBlNTM3OTI1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNC4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9M
ZWdhY3kvMTQuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKQEAgLTEyMCw3ICsxMjAsNyBA
QCBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJDU1MiLCBbIml0bWwiLCAicGFnZSIs
ICJ3ZWItcGFnZSJdKTsKIAogLy8gQ2FudmFzCiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9t
YWluKCJDYW52YXMiLCBbInBhZ2UiXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgi
Q2FudmFzLkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVy
ZXI6ICJiaXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIiLCBX
ZWJHUFU6ICJ3ZWJncHUifSk7CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFz
LkNvbnRleHRUeXBlIiwge0NhbnZhczJEOiAiY2FudmFzLTJkIiwgQml0bWFwUmVuZGVyZXI6ICJi
aXRtYXByZW5kZXJlciIsIFdlYkdMOiAid2ViZ2wiLCBXZWJHTDI6ICJ3ZWJnbDIifSk7CiBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLlByb2dyYW1UeXBlIiwge0NvbXB1dGU6
ICJjb21wdXRlIiwgUmVuZGVyOiAicmVuZGVyIn0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckVudW0oIkNhbnZhcy5TaGFkZXJUeXBlIiwge0NvbXB1dGU6ICJjb21wdXRlIiwgRnJhZ21lbnQ6
ICJmcmFnbWVudCIsIFZlcnRleDogInZlcnRleCJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJDb21tYW5kKCJDYW52YXMuZW5hYmxlIiwgbnVsbCwgW10sIFtdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNC41L0lu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNC41L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwpp
bmRleCBkOTNkYzllYjE2N2I5ZjZiOTdiY2YzZmM2NDlhNjUwNjJiZjg4OTE5Li41MjA2ZjczYTU4
ZWNjODc0ODQ5NjEwN2NiMzdjYTI2YTAxMDg1YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTQuNS9JbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTGVnYWN5LzE0LjUvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCkBAIC0xMjEs
NyArMTIxLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiQ1NTIiwgWyJpdG1s
IiwgInBhZ2UiLCAid2ViLXBhZ2UiXSk7CiAKIC8vIENhbnZhcwogSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckRvbWFpbigiQ2FudmFzIiwgWyJwYWdlIl0pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3RlckVudW0oIkNhbnZhcy5Db250ZXh0VHlwZSIsIHtDYW52YXMyRDogImNhbnZhcy0yZCIsIEJp
dG1hcFJlbmRlcmVyOiAiYml0bWFwcmVuZGVyZXIiLCBXZWJHTDogIndlYmdsIiwgV2ViR0wyOiAi
d2ViZ2wyIiwgV2ViR1BVOiAid2ViZ3B1In0pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVu
dW0oIkNhbnZhcy5Db250ZXh0VHlwZSIsIHtDYW52YXMyRDogImNhbnZhcy0yZCIsIEJpdG1hcFJl
bmRlcmVyOiAiYml0bWFwcmVuZGVyZXIiLCBXZWJHTDogIndlYmdsIiwgV2ViR0wyOiAid2ViZ2wy
In0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkNhbnZhcy5Qcm9ncmFtVHlwZSIs
IHtDb21wdXRlOiAiY29tcHV0ZSIsIFJlbmRlcjogInJlbmRlciJ9KTsKIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuU2hhZGVyVHlwZSIsIHtDb21wdXRlOiAiY29tcHV0ZSIs
IEZyYWdtZW50OiAiZnJhZ21lbnQiLCBWZXJ0ZXg6ICJ2ZXJ0ZXgifSk7CiBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyQ29tbWFuZCgiQ2FudmFzLmVuYWJsZSIsIG51bGwsIFtdLCBbXSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdh
Y3kvMTUuMC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3kvMTUuMC9JbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKaW5kZXggOTJiYzc4ZDI3YTA0NzlmYmUzOTA2ZTA2MzQ2N2E0NWEyNmRjMjQ1Zi4u
ODlmZjhiOGRjYzQ5NDIyYTYzMWYzNTY5NTYxN2U3YTAzMGM1MDU1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5LzE1LjAvSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeS8xNS4wL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cwpAQCAtMTI1LDcgKzEyNSw3IEBAIEluc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIkNT
UyIsIFsiaXRtbCIsICJwYWdlIiwgIndlYi1wYWdlIl0pOwogCiAvLyBDYW52YXMKIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJEb21haW4oIkNhbnZhcyIsIFsicGFnZSJdKTsKLUluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJjYW52
YXMtMmQiLCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJnbCIs
IFdlYkdMMjogIndlYmdsMiIsIFdlYkdQVTogIndlYmdwdSJ9KTsKK0luc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJFbnVtKCJDYW52YXMuQ29udGV4dFR5cGUiLCB7Q2FudmFzMkQ6ICJjYW52YXMtMmQi
LCBCaXRtYXBSZW5kZXJlcjogImJpdG1hcHJlbmRlcmVyIiwgV2ViR0w6ICJ3ZWJnbCIsIFdlYkdM
MjogIndlYmdsMiJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJDYW52YXMuUHJv
Z3JhbVR5cGUiLCB7Q29tcHV0ZTogImNvbXB1dGUiLCBSZW5kZXI6ICJyZW5kZXIifSk7CiBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiQ2FudmFzLlNoYWRlclR5cGUiLCB7Q29tcHV0ZTog
ImNvbXB1dGUiLCBGcmFnbWVudDogImZyYWdtZW50IiwgVmVydGV4OiAidmVydGV4In0pOwogSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkNhbnZhcy5lbmFibGUiLCBudWxsLCBbXSwg
W10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggZDk5
M2IwNWIyMDFiOTg2ZTVkYTU2Yzg2MGE2MTdlODUyZDNkNzBhNi4uMGM0ZWQ3YzU3YmY4YmZlZDll
NzY3YzEyMmU4NWRjNjMwN2E1NTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzCkBAIC0xOTQsNyArMTk0LDcgQEAgV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQ
YW5lbCA9IGNsYXNzIENhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWwK
ICAgICAgICAgaWYgKCF0aGlzLmRpZEluaXRpYWxMYXlvdXQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbGV0IGhpZGVOb2RlID0gdGhpcy5fY2FudmFzLmNzc0NhbnZhc05hbWUgfHwg
dGhpcy5fY2FudmFzLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BV
OworICAgICAgICBsZXQgaGlkZU5vZGUgPSB0aGlzLl9jYW52YXMuY3NzQ2FudmFzTmFtZTsKIAog
ICAgICAgICB0aGlzLl9ub2RlUm93LnZhbHVlID0gaGlkZU5vZGUgPyBudWxsIDogZW1EYXNoOwog
ICAgICAgICB0aGlzLl9jc3NDYW52YXNSb3cudmFsdWUgPSB0aGlzLl9jYW52YXMuY3NzQ2FudmFz
TmFtZSB8fCBudWxsOwpAQCAtMzA4LDcgKzMwOCw3IEBAIFdJLkNhbnZhc0RldGFpbHNTaWRlYmFy
UGFuZWwgPSBjbGFzcyBDYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWls
CiAgICAgICAgIGlmICghdGhpcy5kaWRJbml0aWFsTGF5b3V0KQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICghdGhpcy5fY2FudmFzLmNzc0NhbnZhc05hbWUgJiYgdGhpcy5fY2Fu
dmFzLmNvbnRleHRUeXBlICE9PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKSB7CisgICAg
ICAgIGlmICghdGhpcy5fY2FudmFzLmNzc0NhbnZhc05hbWUpIHsKICAgICAgICAgICAgIHRoaXMu
X2NsaWVudHNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcuanMK
aW5kZXggYjg3NzkxY2I4OTA3OWQ2OTM1YjIyYzYxOGMxMTA5MTM0ZmMxZTYwMC4uMzgzNGY5YmQw
ZDNkMWEzYmUzZmY2MGU1ZmRjMjExYzdjNjc3NmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNP
dmVydmlld0NvbnRlbnRWaWV3LmpzCkBAIC0xNDcsNyArMTQ3LDcgQEAgV0kuQ2FudmFzT3ZlcnZp
ZXdDb250ZW50VmlldyA9IGNsYXNzIENhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db2xsZWMKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgY2FudmFzID0gY29u
dGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIGlmIChjYW52YXMuY3NzQ2FudmFz
TmFtZSB8fCBjYW52YXMuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJH
UFUpIHsKKyAgICAgICAgaWYgKGNhbnZhcy5jc3NDYW52YXNOYW1lKSB7CiAgICAgICAgICAgICBj
YW52YXMucmVxdWVzdENsaWVudE5vZGVzKChjbGllbnROb2RlcykgPT4gewogICAgICAgICAgICAg
ICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUxpc3QoY2xpZW50Tm9kZXMpOwogICAg
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DYW52YXNTaWRlYmFyUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzU2lkZWJhclBhbmVsLmNzcwppbmRleCA5YzM4YmNj
YTA2YmViY2JmYTQwZGMxMzJkOTkxMzYzZDliZDIxOTRlLi43MTZmZjYzYjUyOTFjZTI5NzMxYzNm
MTBkOTM4ZGQ4ZThmZjQzZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DYW52YXNTaWRlYmFyUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1NpZGViYXJQYW5lbC5jc3MKQEAg
LTM5LDcgKzM5LDcgQEAKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0NhbnZhczJELnN2Zyk7
CiB9CiAKLS5zaWRlYmFyID4gLnBhbmVsLm5hdmlnYXRpb24uY2FudmFzID4gLmNvbnRlbnQgPiAu
dHJlZS1vdXRsaW5lIC5pdGVtLmNhbnZhczptYXRjaGVzKC53ZWJnbCwgLndlYmdsMiwgLndlYmdw
dSwgLndlYm1ldGFsKSAuaWNvbiB7Cisuc2lkZWJhciA+IC5wYW5lbC5uYXZpZ2F0aW9uLmNhbnZh
cyA+IC5jb250ZW50ID4gLnRyZWUtb3V0bGluZSAuaXRlbS5jYW52YXM6bWF0Y2hlcygud2ViZ2ws
IC53ZWJnbDIsIC53ZWJtZXRhbCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
Q2FudmFzM0Quc3ZnKTsKIH0KIApAQCAtMTIyLDQgKzEyMiw0IEBAIGJvZHk6bm90KC53aW5kb3ct
aW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAuc2lkZWJhciA+IC5wYW5lbC5uYXZp
Z2F0aW9uCiAgICAgLnNpZGViYXIgPiAucGFuZWwubmF2aWdhdGlvbi5jYW52YXMgPiAuY29udGVu
dCA+IC5yZWNvcmRpbmctY29udGVudCA+IC50cmVlLW91dGxpbmUgLml0ZW0uZm9sZGVyLWljb24g
PiAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNS
ZW5kZXJpbmdGcmFtZS1kYXJrKTsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ2FudmFzVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DYW52YXNUcmVlRWxlbWVudC5qcwppbmRleCA5MWYyNmE3YzMwMWNlOWUyOWJm
ZWI1YzE1YjI0YjcxN2NhNDNiZTYzLi5jNWU1NDAyM2M2MzBmZmY4YzE2YTczMTliMGNhYjRiY2Yx
ZDc2NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DYW52YXNUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DYW52YXNUcmVlRWxlbWVudC5qcwpAQCAtMTE1LDcgKzExNSw3IEBA
IFdJLkNhbnZhc1RyZWVFbGVtZW50ID0gY2xhc3MgQ2FudmFzVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5Gb2xkZXJpemVkVHJlZUVsZW1lbnQKIAogICAgIF9oYW5kbGVNb3VzZU92ZXIoZXZlbnQpCiAg
ICAgewotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jc3NDYW52YXNOYW1lIHx8
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0
VHlwZS5XZWJHUFUpIHsKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY3NzQ2Fu
dmFzTmFtZSkgewogICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1ZXN0Q2xp
ZW50Tm9kZXMoKGNsaWVudE5vZGVzKSA9PiB7CiAgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlTGlzdChjbGllbnROb2Rlcyk7CiAgICAgICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVN
aXJyb3JBZGRpdGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzCmluZGV4IGUxMzkwY2Q3MTlmNDMzODY4NmE3ZTNk
NzM1YWY0NDlkOWVlZGMxYTQuLjFhOTQ4NzQ4NjNmY2FkYjY5MjEyNGU1YWYyNTNlMzEyZTFmZmE0
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcwpAQCAtNjgzLDcgKzY4Myw2IEBA
CiAgICAgICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCB7bmFtZTogImphdmFzY3JpcHQi
LCBqc29uOiB0cnVlfSk7CiAgICAgfSk7CiAKLSAgICAvLyBGSVhNRTogQWRkIFdITFNMIHNwZWNp
ZmljIG1vZGVzLgogICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgieC1waXBlbGluZS94LWNvbXB1
dGUiLCBDb2RlTWlycm9yLnJlc29sdmVNb2RlKCJ4LXNoYWRlci94LXZlcnRleCIpKTsKICAgICBD
b2RlTWlycm9yLmRlZmluZU1JTUUoIngtcGlwZWxpbmUveC1yZW5kZXIiLCBDb2RlTWlycm9yLnJl
c29sdmVNb2RlKCJ4LXNoYWRlci94LXZlcnRleCIpKTsKIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRW
aWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBo
aWNzVGFiQ29udGVudFZpZXcuY3NzCmluZGV4IDNmZTg0YjA1OTMyNmVmMmQ4ZmFmNzdiOWQ5MWVl
MGRiZjRjZmY1NjIuLjRhMWE3ZDlkOWUzZTM2YzNhYWNkNzJhOTNjYTcwOTdiYjVhMDY2OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBo
aWNzVGFiQ29udGVudFZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuY3NzCkBAIC0zMSw3ICszMSw3IEBA
CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9DYW52YXMyRC5zdmcpOwogfQogCi0uY29udGVu
dC12aWV3LnRhYi5ncmFwaGljcyAubmF2aWdhdGlvbi1iYXIgPiAuaXRlbSAuY2FudmFzOm1hdGNo
ZXMoLndlYmdsLCAud2ViZ2wyLCAud2ViZ3B1LCAud2VibWV0YWwpIC5pY29uIHsKKy5jb250ZW50
LXZpZXcudGFiLmdyYXBoaWNzIC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtIC5jYW52YXM6bWF0Y2hl
cygud2ViZ2wsIC53ZWJnbDIsIC53ZWJtZXRhbCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvQ2FudmFzM0Quc3ZnKTsKIH0KIApAQCAtNTYsNCArNTYsNCBAQAogICAgIC5jb250
ZW50LXZpZXcudGFiLmdyYXBoaWNzIC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtIC5zaGFkZXItcHJv
Z3JhbSA+IC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Eb2N1bWVudElj
b25zLnN2ZyNnbC1kYXJrKTsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzCmluZGV4IGUyMmE0ZGJm
ODllNjk2NmQxM2IxYjU3YTU4OTBkZmViYjdmN2MzNTAuLjEyMDVkYjA3YzQ0NmYyNGQyNTNkMDc3
MjFjOWNmMzY3N2ZlOTc2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZp
ZXcuanMKQEAgLTMxLDkgKzMxLDYgQEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3ID0gY2xh
c3MgU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAg
ICBzdXBlcihzaGFkZXJQcm9ncmFtKTsKIAotICAgICAgICBsZXQgaXNXZWJHUFUgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmNhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRU
eXBlLldlYkdQVTsKLSAgICAgICAgbGV0IHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyID0gaXNX
ZWJHUFUgJiYgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRl
cjsKLQogICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oInJlZnJlc2giLCBXSS5VSVN0cmluZygiUmVmcmVzaCIpLCAi
SW1hZ2VzL1JlbG9hZEZ1bGwuc3ZnIiwgMTMsIDEzKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1
dHRvbk5hdmlnYXRpb25JdGVtLnZpc2liaWxpdHlQcmlvcml0eSA9IFdJLk5hdmlnYXRpb25JdGVt
LlZpc2liaWxpdHlQcmlvcml0eS5Mb3c7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3JlZnJlc2hDb250ZW50LCB0aGlzKTsKQEAgLTYzLDI3ICs2MCwyMyBA
QCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFtQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICAgICAgc3dpdGNoIChzaGFkZXJUeXBl
KSB7CiAgICAgICAgICAgICBjYXNlIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRl
OgogICAgICAgICAgICAgICAgIHNoYWRlclR5cGVDb250YWluZXIudGV4dENvbnRlbnQgPSBXSS5V
SVN0cmluZygiQ29tcHV0ZSBTaGFkZXIiKTsKLSAgICAgICAgICAgICAgICB0ZXh0RWRpdG9yLm1p
bWVUeXBlID0gaXNXZWJHUFUgPyAieC1waXBlbGluZS94LWNvbXB1dGUiIDogIngtc2hhZGVyL3gt
Y29tcHV0ZSI7CisgICAgICAgICAgICAgICAgdGV4dEVkaXRvci5taW1lVHlwZSA9ICJ4LXNoYWRl
ci94LWNvbXB1dGUiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNl
IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudDoKICAgICAgICAgICAgICAgICBz
aGFkZXJUeXBlQ29udGFpbmVyLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIkZyYWdtZW50IFNo
YWRlciIpOwotICAgICAgICAgICAgICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSBpc1dlYkdQVSA/
ICJ4LXBpcGVsaW5lL3gtcmVuZGVyIiA6ICJ4LXNoYWRlci94LWZyYWdtZW50IjsKKyAgICAgICAg
ICAgICAgICB0ZXh0RWRpdG9yLm1pbWVUeXBlID0gIngtc2hhZGVyL3gtZnJhZ21lbnQiOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5WZXJ0ZXg6Ci0gICAgICAgICAgICAgICAgaWYgKHNoYXJlc1ZlcnRleEZyYWdt
ZW50U2hhZGVyKQotICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlQ29udGFpbmVyLnRleHRD
b250ZW50ID0gV0kuVUlTdHJpbmcoIlZlcnRleC9GcmFnbWVudCBTaGFkZXIiKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGVDb250YWluZXIudGV4
dENvbnRlbnQgPSBXSS5VSVN0cmluZygiVmVydGV4IFNoYWRlciIpOwotICAgICAgICAgICAgICAg
IHRleHRFZGl0b3IubWltZVR5cGUgPSBpc1dlYkdQVSA/ICJ4LXBpcGVsaW5lL3gtcmVuZGVyIiA6
ICJ4LXNoYWRlci94LXZlcnRleCI7CisgICAgICAgICAgICAgICAgc2hhZGVyVHlwZUNvbnRhaW5l
ci50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJWZXJ0ZXggU2hhZGVyIik7CisgICAgICAgICAg
ICAgICAgdGV4dEVkaXRvci5taW1lVHlwZSA9ICJ4LXNoYWRlci94LXZlcnRleCI7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuYWRkU3Vi
dmlldyh0ZXh0RWRpdG9yKTsKICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0ZXh0
RWRpdG9yLmVsZW1lbnQpOwogICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInNo
YWRlciIsIHNoYWRlclR5cGUpOwotICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC50b2dn
bGUoInNoYXJlcy12ZXJ0ZXgtZnJhZ21lbnQtc2hhZGVyIiwgc2hhcmVzVmVydGV4RnJhZ21lbnRT
aGFkZXIpOwogCiAgICAgICAgICAgICByZXR1cm4gdGV4dEVkaXRvcjsKICAgICAgICAgfTsKQEAg
LTk5LDkgKzkyLDcgQEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3ID0gY2xhc3MgU2hhZGVy
UHJvZ3JhbUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKICAgICAgICAgY2FzZSBXSS5T
aGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlcjogewogICAgICAgICAgICAgdGhpcy5fdmVy
dGV4RWRpdG9yID0gY3JlYXRlRWRpdG9yKFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0
ZXgpOwogCi0gICAgICAgICAgICBpZiAoIXNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyKSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fZnJhZ21lbnRFZGl0b3IgPSBjcmVhdGVFZGl0b3IoV0kuU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHRoaXMuX2ZyYWdtZW50RWRpdG9yID0gY3JlYXRlRWRpdG9yKFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5GcmFnbWVudCk7CiAKICAgICAgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVFZGl0
b3IgPSB0aGlzLl92ZXJ0ZXhFZGl0b3I7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1Miw5ICsx
NDMsNiBAQCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFt
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICBjYXNlIFdJLkNhbnZhcy5D
b250ZXh0VHlwZS5XZWJHTDI6CiAgICAgICAgICAgICBleHRlbnNpb24gPSBXSS51bmxvY2FsaXpl
ZFN0cmluZygiLmdsc2wiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdJLkNh
bnZhcy5Db250ZXh0VHlwZS5XZWJHUFU6Ci0gICAgICAgICAgICBleHRlbnNpb24gPSBXSS51bmxv
Y2FsaXplZFN0cmluZygiLndzbCIpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZXh0ZW5zaW9uKTsKIApAQCAtMjU0LDggKzI0Miw3IEBAIFdJ
LlNoYWRlclByb2dyYW1Db250ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRWCiAKICAgICAgICAgY2FzZSBXSS5TaGFkZXJQcm9ncmFtLlBy
b2dyYW1UeXBlLlJlbmRlcjoKICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVx
dWVzdFNoYWRlclNvdXJjZShXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LCBjcmVh
dGVDYWxsYmFjayh0aGlzLl92ZXJ0ZXhFZGl0b3IpKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5zaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcikKLSAgICAgICAgICAg
ICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlcXVlc3RTaGFkZXJTb3VyY2UoV0kuU2hhZGVy
UHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50LCBjcmVhdGVDYWxsYmFjayh0aGlzLl9mcmFnbWVu
dEVkaXRvcikpOworICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1ZXN0U2hh
ZGVyU291cmNlKFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCwgY3JlYXRlQ2Fs
bGJhY2sodGhpcy5fZnJhZ21lbnRFZGl0b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKaW5kZXggYzJk
M2Y3NTM0ZGQ3YTZmNDRhM2UwMWIxOWM1MTkwMTM3NTc4NmI1Yi4uODdkOWU0ODQ1YWZhYjM2NzA0
MjkwOTY1MmUyNDZlODQ4ZWNkMDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1UcmVl
RWxlbWVudC5qcwpAQCAtMzIsNyArMzIsNiBAQCBXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQg
PSBjbGFzcyBTaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVAogICAg
ICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7CiAgICAgICAgIHN1cGVyKCJzaGFkZXItcHJvZ3Jh
bSIsIHNoYWRlclByb2dyYW0uZGlzcGxheU5hbWUsIHN1YnRpdGxlLCBzaGFkZXJQcm9ncmFtKTsK
IAotICAgICAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZy9oaWdobGlnaHRp
bmcgV2ViR1BVIHNoYWRlciBwaXBlbGluZXMuCiAgICAgICAgIGxldCBjb250ZXh0VHlwZSA9IHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuY2FudmFzLmNvbnRleHRUeXBlOwogICAgICAgICBpZiAoY29u
dGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHTCB8fCBjb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMMikgewogICAgICAgICAgICAgdGhpcy5fZGlz
YWJsZWRJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKQEAgLTQ4
LDcgKzQ3LDYgQEAgV0kuU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50ID0gY2xhc3MgU2hhZGVyUHJv
Z3JhbVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFQKICAgICB7CiAgICAgICAgIHN1cGVy
Lm9uYXR0YWNoKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBkaXNhYmxp
bmcvaGlnaGxpZ2h0aW5nIFdlYkdQVSBzaGFkZXIgcGlwZWxpbmVzLgogICAgICAgICBsZXQgY29u
dGV4dFR5cGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNhbnZhcy5jb250ZXh0VHlwZTsKICAg
ICAgICAgaWYgKGNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wgfHwg
Y29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHTDIpIHsKICAgICAgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5TaGFkZXJQcm9n
cmFtLkV2ZW50LkRpc2FibGVkQ2hhbmdlZCwgdGhpcy5faGFuZGxlU2hhZGVyUHJvZ3JhbURpc2Fi
bGVkQ2hhbmdlZCwgdGhpcyk7CkBAIC02MCw3ICs1OCw2IEBAIFdJLlNoYWRlclByb2dyYW1UcmVl
RWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVy
YWxUCiAKICAgICBvbmRldGFjaCgpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogYWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZy9oaWdobGlnaHRpbmcgV2ViR1BVIHNoYWRlciBwaXBlbGluZXMuCiAg
ICAgICAgIGxldCBjb250ZXh0VHlwZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY2FudmFzLmNv
bnRleHRUeXBlOwogICAgICAgICBpZiAoY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0
VHlwZS5XZWJHTCB8fCBjb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdM
MikKICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5TaGFkZXJQcm9ncmFtLkV2ZW50LkRpc2FibGVkQ2hhbmdlZCwgdGhpcy5faGFuZGxlU2hh
ZGVyUHJvZ3JhbURpc2FibGVkQ2hhbmdlZCwgdGhpcyk7CkBAIC03Nyw3ICs3NCw2IEBAIFdJLlNo
YWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxlbWVudCBl
eHRlbmRzIFdJLkdlbmVyYWxUCiAKICAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51
LCBldmVudCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgZGlzYWJs
aW5nL2hpZ2hsaWdodGluZyBXZWJHUFUgc2hhZGVyIHBpcGVsaW5lcy4KICAgICAgICAgbGV0IGNv
bnRleHRUeXBlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5jYW52YXMuY29udGV4dFR5cGU7CiAg
ICAgICAgIGlmIChjb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdMIHx8
IGNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wyKSB7CiAgICAgICAg
ICAgICBsZXQgZGlzYWJsZWQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlz
dCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3QKaW5k
ZXggYWU0ZWU0NTdhMjEzMTMzOGY2YTViNzVlZDc1ZjYzNmYzYTBmNTI2MC4uMjAyNDgzYzY1ZjEw
NTg1OGFkYTJjOTZlMDYyYTI2NDZiNTg2NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9G
ZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Zl
YXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CkBAIC0yLDk1ICsyLDkwIEBACiA8IURP
Q1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8v
d3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9u
PSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xs
aW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRl
cmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+
Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUv
PgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9t
X3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRp
YTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAg
PHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0g
ICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgot
ICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxm
YWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAg
ICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8
L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViR1BV
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2Vf
V0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJm
bG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRy
dWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1
dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVl
Lz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0
PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJ
PGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwkJPGtleT5BdHRy
aWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0
cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+
CisJPGtleT52cDlfZGVjb2Rlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3Jl
YWRlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwv
ZGljdD4KKwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2Ft
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0
PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZs
YWdzL1dlYktpdC1pb3MucGxpc3QgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQt
aW9zLnBsaXN0CmluZGV4IDYyMWM5MjE2NmM4OTJjYjU0MWNmYTc2YjYyMzgxNTY2OGExZWMyNzcu
LjE3NDVhMmU5NTViNTYxNjJmZjY0ZmI2ZmI2ZmMzZTUyMTk4ZDNkNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdApAQCAtMiw5NSArMiw5MCBAQAogPCFE
T0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDov
L3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lv
bj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9s
bGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5k
ZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0
PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVl
Lz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2Rv
bV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfbWVk
aWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAg
IDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0Pgot
ICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4K
LSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYmds
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAg
ICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8
L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViR1BV
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2Vf
V0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJm
bG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRy
dWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1
dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVl
Lz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0
PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJ
PGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJp
YnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRy
dWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJ
PGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVh
ZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9k
aWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+
CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxh
Z3MvV2ViS2l0LW1hY29zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0
LW1hY29zLnBsaXN0CmluZGV4IDYyMWM5MjE2NmM4OTJjYjU0MWNmYTc2YjYyMzgxNTY2OGExZWMy
NzcuLjE3NDVhMmU5NTViNTYxNjJmZjY0ZmI2ZmI2ZmMzZTUyMTk4ZDNkNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QKQEAgLTIsOTUgKzIsOTAg
QEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIg
Imh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0
IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxv
d19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52
YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAg
ICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAg
ICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJv
Y2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxl
ZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9j
ZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8
ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8
dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vz
c193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAg
ICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAg
ICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxm
YWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgotICAgIDxk
aWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJYUjwva2V5PgotICAgIDxk
aWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KLSAgICA8ZGljdD4KLSAg
ICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxf
bWFuYWdlX1dLX2pldHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8
L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2Fu
ZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5n
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+
QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJ
CQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVu
ZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgor
CTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGlj
dD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8
L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJy
dGM8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtl
eT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4K
KwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZh
Y3k8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9k
aWN0PgorCTxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0
dGVyeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8
L2RpY3Q+CisJPGtleT52cDlfZGVjb2Rlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJ
CTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9y
bWF0X3JlYWRlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUv
PgorCTwvZGljdD4KKwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5h
YmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tf
amV0c2FtPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJ
PC9kaWN0PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVh
dHVyZUZsYWdzL1dlYktpdC13YXRjaG9zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxh
Z3MvV2ViS2l0LXdhdGNob3MucGxpc3QKaW5kZXggYWU0ZWU0NTdhMjEzMTMzOGY2YTViNzVlZDc1
ZjYzNmYzYTBmNTI2MC4uMjAyNDgzYzY1ZjEwNTg1OGFkYTJjOTZlMDYyYTI2NDZiNTg2NmE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QK
QEAgLTIsOTUgKzIsOTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFzeW5jX2Zy
YW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5n
cHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxr
ZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRl
czwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9r
ZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwv
a2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+
Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVf
cHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAg
ICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAg
ICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFw
cEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFs
X3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRl
cnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAg
IDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2Vi
WFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAg
IDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+
Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAg
ICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtl
eT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxr
ZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
Y2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVD
b21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1
X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0
ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUv
PgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+
Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8ZmFsc2UvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNv
ZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+
SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192
cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0
PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5S
Ql9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5kZXgg
MmJhNjI4NzNmMzJiMzFjMDM2OWExYTUxNGZmMWNiMDM4OTI0ZWI3My4uNzA1NzI1YjMxOTdiNmEz
YzdhOGNkMWY3YTkyZTIwNjlkOTFkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCkBAIC0yMzIsMTkgKzIzMiw2IEBA
IGJvb2wgZGVmYXVsdFdlYlJUQ0NvZGVjc0luR1BVUHJvY2VzcygpCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCX1JUQykKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVu
YWJsZWQoKQotewotI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlz
RmVhdHVyZUZsYWdFbmFibGVkKCJXZWJHUFUiKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93
c2VyUHJpdmFjeSgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXgg
MzVhMmY2ZmRkZDc1NTQ3ZTY0NzhhYTE2OWZlMGZiOTI4YzRiMWE0OC4uY2U3ZjRmZmQ2ODdiM2M1
MDliNGY4M2RiMjAzNmUwMTkzOTg1OWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTg1LDEwICs4NSw2IEBAIGJvb2wg
ZGVmYXVsdENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFdl
YlJUQ0NvZGVjc0luR1BVUHJvY2VzcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ym9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KIGJvb2wgZGVmYXVsdEluQXBw
QnJvd3NlclByaXZhY3koKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAppbmRleCA3YWVlM2M1YjBlNDU5NWU5YjZhMWVkNjk5ZTEzZDgyNTM1NTZm
OWRhLi5jMjFkODJiZjJhZTA4YmQ0NTQzNTI5OTE5NDExNjI4MTlhOTM2YTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKQEAgLTI2MSw3ICsyNjEsNiBAQAogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRp
b25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5p
bWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJBbmlt
YXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5p
bWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFdl
YkdQVUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKICNkZWZpbmUg
V2ViS2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWFza1dl
YkdMU3RyaW5nc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFjY2Vzc2liaWxpdHlPYmplY3RNb2Rl
bEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5h
YmxlZCIKICNkZWZpbmUgV2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRTZXJ2ZXJUaW1pbmdFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggZmY3Mzg4NWIxODU0YmNlNGRjMzk0ZTc5
MTg5MWFkYzkxNDBjZmQzMC4uNmRlNGFjMWM4MGMzZGFkM2EwOWZkZTU3YmFjNzRmZTc5NDVlZjUw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tCkBAIC0zMTcwLDE2ICszMTcwLDYgQEAgLSAodm9pZClzZXRXZWJHTDJFbmFibGVkOihC
T09MKWVuYWJsZWQKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktp
dFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAotLSAoQk9PTCl3ZWJHUFVFbmFibGVk
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxl
ZFByZWZlcmVuY2VLZXldOwotfQotCi0tICh2b2lkKXNldFdlYkdQVUVuYWJsZWQ6KEJPT0wpZW5h
YmxlZAotewotICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2Vi
R1BVRW5hYmxlZFByZWZlcmVuY2VLZXldOwotfQotCiAtIChCT09MKW1hc2tXZWJHTFN0cmluZ3NF
bmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TWFza1dl
YkdMU3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
CmluZGV4IGE1OTI5N2FmM2ZkYTU1Y2Y1M2Q5ZDkwODFhYjk5N2M0ZjdiZTU0OWMuLjUwYzdiOGI1
NzYxYjQ3ZWE0Y2UyYzFmNGFkNzZkYWRjZjZlYzM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGlzRmVhdHVy
ZUZsYWdFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KICNpZiBIQVZFKElOQ1JF
TUVOVEFMX1BERl9BUElTKQogYm9vbCBkZWZhdWx0SW5jcmVtZW50YWxQREZFbmFibGVkKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggMzUyZmRjNWUxOGFmMmM1OGI0
MmZlNGUwZTdjZjY3MzcxZDY4Y2U2Yy4uNGU4YTU4OTM4OWIzYWYwNjFjYjg0MTNhMWFiNTIwOGIw
ZDRiMzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTYyLDE5ICs2Miw2IEBA
IGJvb2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKIAog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVk
KCkKLXsKLSNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQotICAgIHJldHVybiBpc0ZlYXR1
cmVGbGFnRW5hYmxlZCgiV2ViR1BVIik7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9B
UElTKQogCiBib29sIGRlZmF1bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgK
aW5kZXggNTA3OTc1MTQ4OGU1NTFjZmNiMmI5NGI5YjU4MDNmNmYzZTk4Yzc5Zi4uNWIyNzFmMDlh
MzM1OTNhM2Y1NzgxYWEwZWJiN2VkZjJkY2MwZmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMzUs
NyArMzM1LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFu
Z2VkSW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lUX0RFUFIKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZDsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkdMMkVuYWJsZWQ7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCB3ZWJHUFVFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
bWFza1dlYkdMU3RyaW5nc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhY2Nl
c3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
c2VydmVyVGltaW5nRW5hYmxlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434483</attachid>
            <date>2021-07-28 18:04:17 -0700</date>
            <delta_ts>2021-07-29 02:21:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210728180413.patch</filename>
            <type>text/plain</type>
            <size>3892242</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi40NDY5MGI5Zjg0YTUyYzQ1
ZGY1NDI0YTkyZGY1ZTY2ZDA1MjYzZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGRiYWE4M2MwMjBiZTQwNjRkZDVjODFhODliYTYxOGZhOTY1NTliNDMuLjIzOWY3
ZWRhZDRlNTQ4ZTJmMjg3YmEzNWExNzhhZDA0NjMwNTE5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjggIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIG1hY09TIE1v
bnRlcmV5IGFuZCBwYXJhbGxlbCBPU2VzIG5vIGxvbmdlciBuZWVkIHIyODAxMDMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA4ZjU3MzA5Y2IyNmMzNjgyYTIyNmVmZThmNTRjZTc3YTlkYWIwMTFiLi42MDY4YWE3MDc4
MDhkN2YwMzcwYzY3ODUyNDc3ZDFhMjg3OTY3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDg5
IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNv
bXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmlu
ZEdyb3VwTGF5b3V0QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0
ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0
dHJpYnV0ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNl
VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFycmF5VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29s
ZWFuTGl0ZXJhbC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJyZWFrLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVM
b29wLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RG90RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZhbGx0aHJvdWdoLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlv
bkF0dHJpYnV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TElmU3RhdGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
b2ludGVyVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWZlcmVuY2VUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVwbGFjZVdpdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50
aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXR1cm4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJn
dW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVBcmd1bWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVubmFtZWRUeXBlSGFzaC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9v
cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVy
YXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxj
dWxhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENv
bXB1dGVEaW1lbnNpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJl
YWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZWN1cnNpb25DaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2Vy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZl
T3ZlcmxvYWRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFy
ZExpYnJhcnkudHh0OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlV
dGlsaXRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlv
dXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cExheW91dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVF1ZXVlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVT
d2FwQ2hhaW4uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dv
cmtlck5hdmlnYXRvcitHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV29ya2VyTmF2aWdhdG9yR1BVLmg6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5p
bjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6Omlz
V2ViR1BVVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlQ29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
bnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUlt
cGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RG
b3JTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dy
YW06OnBpcGVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
c0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hh
aW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2Fy
bWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9y
UGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdQVUxheWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR1BVTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJp
bmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCdWZmZXJVc2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFeHRlbnQzRC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlw
ZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQaXBlbGluZUxheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGlu
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3RvcmVPcC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVRleHR1cmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBM
YXlvdXRNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQ
YXNzRW5jb2Rlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRl
clBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW06IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0
dXJlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVV0aWxzTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2VkKToKKwogMjAyMS0wNy0yOCAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJREJGYWN0b3J5LmRhdGFiYXNlcyBzaG91
bGQgbm90IHJldHVybiBkYXRhYmFzZXMgd2l0aCBpbnZhbGlkIHZlcnNpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NDU0ZDIzNzM5ZGZiN2U2MDU0YTc2ZDk1NWE1Mjc1NWMyMTJmNmQ5Zi4uNjJkNTg4ODMzYThmOTQ3
YTVmMjQ0MzM2MGVkN2Y2NjY3MzI4OTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0
byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdDoKKyAg
ICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdDoKKyAgICAgICAgKiBGZWF0dXJl
RmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQt
d2F0Y2hvcy5wbGlzdDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKwogMjAy
MS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc10gU3RhcnQgdHJhY2tpbmcgcmVzb3VyY2UgdXNlcyBmb3IgSW1hZ2VC
dWZmZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNWFkNzA0YTNiYWNiNmFhNzli
MmZlYTAzM2FkOTgxMDQ5MmRkN2U4NS4uNDRiNDJiNDU4MjU4ZTIwNzVjNWMxODM4NGQzYzdmNzlh
MTUyMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVy
IHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgd2ViR1BVRW5hYmxlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBzZXRXZWJHUFVFbmFibGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMubW06CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgor
CiAyMDIxLTA3LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPUyBNb250ZXJleV0gUHJlc3NpbmcgRm4rRSBzaG91bGQgcHJlc2VudCB0aGUg
ZW1vamkgcGlja2VyIHdoZW4gZWRpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KaW5kZXggMDhjMTAwNTE3NmE5NjBlNzM0
MWQ0MGE5ZDc1MjVmYTY1MWIzNGJmZi4uNTEzM2FjNzViZDhhOTVmNTc0MTk2YmM0MjA0MmVkYTYx
MzFhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9DYW52YXMuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0NhbnZhcy5qc29uCkBAIC0xMSwyNSArMTEsMjUgQEAKICAgICAgICAgfSwKICAgICAg
ICAgewogICAgICAgICAgICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAiY29uZGl0
aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5l
ZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0
aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAg
ICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUg
c2hhZGVyIHByb2dyYW0gaWRlbnRpZmllci4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAg
ICAgICAgICJpZCI6ICJDb250ZXh0VHlwZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmci
LAotICAgICAgICAgICAgImVudW0iOiBbImNhbnZhcy0yZCIsICJiaXRtYXByZW5kZXJlciIsICJ3
ZWJnbCIsICJ3ZWJnbDIiLCAid2ViZ3B1Il0sCisgICAgICAgICAgICAiZW51bSI6IFsiY2FudmFz
LTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiJdLAogICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIHJlbmRlcmluZyBjb250ZXh0IGJhY2tpbmcgdGhl
IGNhbnZhcyBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlk
IjogIlByb2dyYW1UeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYm
IEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFC
TEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmci
LAogICAgICAgICAgICAgImVudW0iOiBbImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAgICAgfSwK
ICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlNoYWRlclR5cGUiLAotICAgICAgICAgICAg
ImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwg
KGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAg
ImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiY29tcHV0
ZSIsICJmcmFnbWVudCIsICJ2ZXJ0ZXgiXQogICAgICAgICB9LApAQCAtNDUsNyArNDUsNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlbXVsdGlwbGllZEFscGhhIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wy
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJH
TCwgV2ViR0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmFpbElmTWFqb3JQZXJm
b3JtYW5jZUNhdmVhdCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyLCBXZWJHUFUiIH0KKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyIiB9CiAgICAgICAgICAgICBdCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTY0LDE0ICs2NCwxMyBAQAogICAgICAgICB9LAogICAg
ICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiU2hhZGVyUHJvZ3JhbSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBXZWJHTC9XZWJHTDIgc2hhZGVyIHBy
b2dyYW0gb3IgV2ViR1BVIHNoYWRlciBwaXBlbGluZS4iLAotICAgICAgICAgICAgImNvbmRpdGlv
biI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQo
RU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFtLiIs
CisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFC
TEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRy
ZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbVR5
cGUiLCAiJHJlZiI6ICJQcm9ncmFtVHlwZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQifSAsCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZlcnRl
eCBhbmQgZnJhZ21lbnQgc2hhZGVyIG1vZHVsZXMgYXJlIHRoZSBzYW1lIG9iamVjdCBmb3IgYSBy
ZW5kZXIgc2hhZGVyIHBpcGxlaW5lIGZvciBhIFdlYkdQVSBkZXZpY2UuIiB9CisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJjYW52YXNJZCIsICIkcmVmIjogIkNhbnZhc0lkIn0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC0xNTEsNyArMTUwLDcgQEAKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdFNoYWRlclNvdXJjZSIsCiAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhlIHNvdXJjZSBvZiB0aGUgc2hhZGVyIG9mIHRoZSBn
aXZlbiB0eXBlIGZyb20gdGhlIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gaWQuIiwKLSAgICAgICAg
ICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wp
IHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAg
ICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIs
CiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9CkBAIC0xNjMsNyArMTYy
LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRlU2hhZGVyIiwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3MgdGhlIHNoYWRlciB3
aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUuIiwKLSAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVf
V0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9X
RUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9LApAQCAtMjQ2
LDE0ICsyNDUsMTQgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUi
OiAicHJvZ3JhbUNyZWF0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkg
JiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyUHJvZ3JhbSIsICIkcmVmIjogIlNo
YWRlclByb2dyYW0iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAg
ICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbURlbGV0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlv
biI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQo
RU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlv
biI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwg
IiRyZWYiOiAiUHJvZ3JhbUlkIiB9CiAgICAgICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3Iu
cHkKaW5kZXggMjlhMmRlYTcyNGYwYmJlY2ZlYmE2ZGI5MjA2MDgxNzAxZTUxMGM1MS4uYmM0ODUw
YmZmNDMzYzc5Njg0YmUwOTQzNGEwZTBkYzE4MjlkNDcwMCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
ci5weQpAQCAtNTEsNyArNTEsNiBAQCBfRU5VTV9JREVOVElGSUVSX1JFTkFNRV9NQVAgPSB7CiAg
ICAgJ2NhbnZhcy13ZWJnbDInOiAnQ2FudmFzV2ViR0wyJywgICMgUmVjb3JkaW5nLlR5cGUuY2Fu
dmFzLXdlYmdsMgogICAgICd3ZWJnbCc6ICdXZWJHTCcsICAjIENhbnZhcy5Db250ZXh0VHlwZS53
ZWJnbAogICAgICd3ZWJnbDInOiAnV2ViR0wyJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLndlYmds
MgotICAgICd3ZWJncHUnOiAnV2ViR1BVJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmdwdQogICAg
ICdiaXRtYXByZW5kZXJlcic6ICdCaXRtYXBSZW5kZXJlcicsICAjIENhbnZhcy5Db250ZXh0VHlw
ZS5iaXRtYXByZW5kZXJlcgogICAgICdtZWRpYXNvdXJjZSc6ICdNZWRpYVNvdXJjZScsICAjIENv
bnNvbGUuQ2hhbm5lbFNvdXJjZS5tZWRpYXNvdXJjZQogICAgICd3ZWJydGMnOiAnV2ViUlRDJywg
ICMgQ29uc29sZS5DaGFubmVsU291cmNlLndlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bAppbmRleCA0YWFmNzU5YWIwNDFkOWJiZDQxOWFiMzJiYTQ4NTkzNmNmMjNmYzdmLi41MjU2NTc2
MGQ0NWQ4YTI2MzQxMjQ4NDM1MjkwNGJmYjNjNGQ4MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbApAQCAtMTIyNSwxOSArMTIyNSw2IEBAIFdlYkdMVXNpbmdNZXRhbDoKICAgICAgICJI
QVZFKFdFQkdMX0NPTVBBVElCTEVfTUVUQUwpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UK
IAotV2ViR1BVRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFtZTogIldl
YkdQVSIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiV2ViR1BVIFNrZXRjaCBwcm90b3R5
cGUiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdl
YktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQo
KQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJs
ZWQoKQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBXZWJNRm9ybWF0UmVh
ZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZDEwYWE0MmI4MGEyYjU3NmM5
ZThjNWM2OTlhNWQ4YjBlZTJkODAwOS4uZDg2ODhkY2ViNjA5YmUwZTcxMjNlNTQxOTlkNjJmMzIx
YzhhYzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC05MDIsMTAgKzkwMiw2IEBACiAj
ZXJyb3IgIkVOQUJMRShXRUJHTDIpIHJlcXVpcmVzIEVOQUJMRShXRUJHTCkiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikgJiYgIUVOQUJMRShXRUJHUFUpCi0jZXJyb3IgIkVO
QUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCi0jZW5kaWYKLQog
I2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpICYmICFFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKICNlcnJvciAiRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykg
cmVxdWlyZXMgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpIgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYTllMTBhMjUxOWUwOTM5MzEzYmYyZjU4ZjRhOTY5NmVl
MjFmNTdhZC4uNTg1N2I3Njc1OGQ1ODkxMDFhMzgxYzllZWM3NWRmZjc1NjYxNzQ0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjYxLDEwICsyNjEsNiBAQAogI2VuZGlm
CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9HUFVfRFJJVkVSX1BSRVdBUk1JTkcpICYm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE2
MDAKLSNkZWZpbmUgRU5BQkxFX0dQVV9EUklWRVJfUFJFV0FSTUlORyAxCi0jZW5kaWYKLQogI2lm
ICFkZWZpbmVkKEVOQUJMRV9IQVJEV0FSRV9KUEVHKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgQ1BV
KFg4Nl82NCkpCiAjZGVmaW5lIEVOQUJMRV9IQVJEV0FSRV9KUEVHIDEKICNlbmRpZgpAQCAtNjE5
LDE0ICs2MTUsNiBAQAogI2RlZmluZSBFTkFCTEVfV0VCR0wyIDEKICNlbmRpZgogCi0jaWYgIWRl
ZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEK
LSNlbmRpZgotCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dITFNMX0NPTVBJTEVSKSAmJiBFTkFCTEUo
V0VCR1BVKQotI2RlZmluZSBFTkFCTEVfV0hMU0xfQ09NUElMRVIgMQotI2VuZGlmCi0KICNpZiAh
ZGVmaW5lZChFTkFCTEVfV0VCUFJPQ0VTU19OU1JVTkxPT1ApICYmIFBMQVRGT1JNKE1BQykKICNk
ZWZpbmUgRU5BQkxFX1dFQlBST0NFU1NfTlNSVU5MT09QIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggOTc3NTg5YmQyODc0
NDZmOTAzNGIyMmNmZTI2YjE5MjU0MTRhYzk1Ny4uN2EzYzMzNTIyZjQ2OWZmMzZhYWFlYTJiMTdm
NDhmNmY2ZWQ3ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC01NTAsNzQgKzU1MCw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJEcml2ZXIuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VUNvbG9yV3JpdGVCaXRzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29t
cGFyZUZ1bmN0aW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhT
dGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVRXJyb3JGaWx0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRl
bnQzRC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUlucHV0U3RhdGVEZXNj
cmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlQml0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VVRleHR1cmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
VGV4dHVyZUZvcm1hdC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1
cmVVc2FnZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRF
cnJvckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRl
eEJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9O
YXZpZ2F0b3IrR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5Ci0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXAuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBCaW5kaW5nLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cExheW91dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRp
bmcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVu
dEhhbmRsZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL05hdmln
YXRvcitXZWJYUi5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggMjZmNDU3ZmE1ZTI5MDU0MWIzNjZiYWJlN2VkNTQ0NGE3Mzg3ZDYy
NS4uZWYzMjI2ZGNjNjMwMzQ2YjRmMjc4N2YwNGU0MWIwMjk4Yjk4OGVkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTU4Nyw4ICs1
ODcsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViRGF0YWJhc2Uu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRE9NV2luZG93V2ViR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJHUFUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGF0YVRyYW5zZmVyLmNwcApAQCAtODUz
LDY4ICs4NTEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zvcm1EYXRhRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0Zvcm1EYXRhRXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVCbGVuZERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJsZW5kRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZl
ckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVCdWZmZXJVc2FnZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXNDb250ZXh0LmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXNDb250ZXh0LmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9y
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29s
b3JTdGF0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZS5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZS5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yV3Jp
dGVCaXRzLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVDb2xvcldyaXRlQml0cy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0aW9uLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRlci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXJyb3JGaWx0ZXIu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFeHRl
bnQzRC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVRXh0ZW50M0QuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVMb2FkT3AuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUxvYWRPcC5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU9yaWdp
bjNELmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVPcmlnaW4zRC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTYW1wbGVyRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0YWdl
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVT
aGFkZXJTdGFnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVVNoYWRlclN0YWdlQml0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFnZUJpdC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3AuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3AuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
VGV4dHVyZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVzYWdlLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlVXNh
Z2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZhbGlkYXRp
b25FcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhC
dWZmZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0
ZXhJbnB1dERlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHYWluTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR2Fpbk5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHYWluT3B0aW9ucy5jcHAKQEAgLTE0MTcsOCArMTM1Myw2IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0Ny
ZWRlbnRpYWxzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNOYXZpZ2F0b3IrQ3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dQVS5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dQ
VS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmln
YXRvcitHYW1lcGFkLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNOYXZpZ2F0b3IrR2FtZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHZW9sb2NhdGlvbi5jcHAKQEAgLTE0NDcsOCAr
MTM4MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckNyZWRlbnRpYWxzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yRU1FLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JFTUUuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHUFUu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmln
YXRvckdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U05hdmlnYXRvckdhbWVwYWQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvckdhbWVwYWQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTI0MzUs
NzIgKzIzNjcsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVyLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVyLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVC
aW5kR3JvdXAuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwTGF5b3V0
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
QnVmZmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVCdWZmZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kRW5jb2Rlci5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmUu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNl
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVEZXZpY2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFdmVudEhh
bmRsZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlvdXQuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVUXVldWUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVF1ZXVlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVy
UGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1
bGUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU3dhcENoYWlu
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVTd2FwQ2hhaW4uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVUZXh0dXJlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1cmVWaWV3LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtMjU5
OSwxMiArMjQ2NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckdsb2JhbFNjb3BlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24uY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckxvY2F0aW9uLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2
aWdhdG9yK0dQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV29ya2VyTmF2aWdhdG9yK0dQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yR1BV
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3Jr
ZXJOYXZpZ2F0b3JHUFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXb3JrZXJUeXBlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXb3JrZXJUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV29ya2xldC5jcHAKQEAgLTI3MjcsOCArMjU4OSw2IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1RyYW5zZm9ybVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL1VzZXJBZ2VudFNjcmlwdHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTdHlsZVNoZWV0cy5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJkTGli
cmFyeS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExT
TFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNvcmVKU0J1aWx0aW5J
bnRlcm5hbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
V2ViQ29yZUpTQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBl
YmExZjE3MDBlMTI1YWM4YTEwOGMzY2QxMGY1ODA1YmE5ZmVlZGQxLi5jMzMyMzQyYjYyZjg2OGUz
ZWJiYTU0MjcyMmI1Nzg1MDBjYjNhYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTQ1OSw2OCArNDU5LDYgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2su
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJEcml2
ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9y
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9y
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2Ny
aXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVy
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9HUFVUZXh0dXJlVXNhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXAuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cEJpbmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXJCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJ4ci9O
YXZpZ2F0b3IrV2ViWFIuaWRsIFwKQEAgLTE4NDUsMTggKzE3ODMsNiBAQCAkKEdFTkVSQVRFX1NF
VFRJTkdTKSA6ICUgOiAkKFdlYkNvcmUpL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvJS5lcmIg
JChXRUJfUFJFRgogCiAjIC0tLS0tLS0tCiAKLSMgV0hMU0wgU3RhbmRhcmQgTGlicmFyeQotCi1h
bGwgOiBXSExTTFN0YW5kYXJkTGlicmFyeS5oIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuY3BwCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5LmggOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS94eGQucGwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5k
YXJkTGlicmFyeS50eHQKLQliYXNoIC1jICIkKFBFUkwpICQ8IFdITFNMU3RhbmRhcmRMaWJyYXJ5
IDwoZ3ppcCAtY24gJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJk
TGlicmFyeS50eHQpICRAIgotCi1XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcCA6
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLnB5ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFu
ZGFyZExpYnJhcnkudHh0Ci0JJChQWVRIT04pICQ8ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICRACi0KLSMgLS0tLS0tLS0KLQogIyBDb21t
b24gZ2VuZXJhdG9yIHRoaW5ncwogCiBDT01NT05fQklORElOR1NfU0NSSVBUUyA9IFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkMGVkZjNjMjIyOWM5
MTgyODM4YWZlYWY4YjJmMDZjYTMzNDhmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3Jv
dXBMYXlvdXRCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
U2hhZGVyU3RhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUJp
bmRpbmdUeXBlIHsKLSAgICBVbmlmb3JtQnVmZmVyLAotICAgIER5bmFtaWNVbmlmb3JtQnVmZmVy
LAotICAgIFNhbXBsZXIsCi0gICAgU2FtcGxlZFRleHR1cmUsCi0gICAgU3RvcmFnZUJ1ZmZlciwK
LSAgICBEeW5hbWljU3RvcmFnZUJ1ZmZlciwKLX07Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVVNoYWRlclN0YWdlRmxh
Z3MgdmlzaWJpbGl0eTsKLSAgICBHUFVCaW5kaW5nVHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGlu
Zy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMGZmMDdiOTcxMDYyZTVhY2Ix
OGZlODIyOWQ3MjMwNzE2MmIzNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBs
b25nIHUzMjsKLXR5cGVkZWYgdTMyIEdQVVNoYWRlclN0YWdlRmxhZ3M7Ci0KLVsKLSAgICBJbXBs
ZW1lbnRlZEFzPUdQVUJpbmRpbmdUeXBlCi1dIGVudW0gR1BVQmluZGluZ1R5cGUgewotICAgICJ1
bmlmb3JtLWJ1ZmZlciIsCi0gICAgImR5bmFtaWMtdW5pZm9ybS1idWZmZXIiLAotICAgICJzYW1w
bGVyIiwKLSAgICAic2FtcGxlZC10ZXh0dXJlIiwKLSAgICAic3RvcmFnZS1idWZmZXIiLAotICAg
ICJkeW5hbWljLXN0b3JhZ2UtYnVmZmVyIgotICAgIC8vIFRPRE8gb3RoZXIgYmluZGluZyB0eXBl
cwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgewotICAgIHJl
cXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIEdQVVNoYWRlclN0YWdlRmxhZ3Mgdmlz
aWJpbGl0eTsKLSAgICByZXF1aXJlZCBHUFVCaW5kaW5nVHlwZSB0eXBlOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzNmJmZTRkNzJl
ZDlhNGI1NDA3MGE1N2EzYjA5MzM5NWNkZDYyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciB7Ci0gICAgVmVjdG9yPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+IGJpbmRpbmdzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRmZGE3YmQ0Y2JiMTg5MTg4OGM2NTI0Y2M1MzQyMzc3OTBmZDA3NzUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgewotICAgIHJl
cXVpcmVkIHNlcXVlbmNlPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+IGJpbmRpbmdzOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0
b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDIxOTIzNzdlNmM4NzE4N2Zm
ZjZkYjdkYmM1MTU3NmFmZjdhZDY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3Jp
cHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BV
QmxlbmRGYWN0b3IKLV0gZW51bSBHUFVCbGVuZEZhY3RvciB7Ci0gICAgInplcm8iLAotICAgICJv
bmUiLAotICAgICJzcmMtY29sb3IiLAotICAgICJvbmUtbWludXMtc3JjLWNvbG9yIiwKLSAgICAi
c3JjLWFscGhhIiwKLSAgICAib25lLW1pbnVzLXNyYy1hbHBoYSIsCi0gICAgImRzdC1jb2xvciIs
Ci0gICAgIm9uZS1taW51cy1kc3QtY29sb3IiLAotICAgICJkc3QtYWxwaGEiLAotICAgICJvbmUt
bWludXMtZHN0LWFscGhhIiwKLSAgICAic3JjLWFscGhhLXNhdHVyYXRlZCIsCi0gICAgImJsZW5k
LWNvbG9yIiwKLSAgICAib25lLW1pbnVzLWJsZW5kLWNvbG9yIgotfTsKLQotWwotICAgIEltcGxl
bWVudGVkQXM9R1BVQmxlbmRPcGVyYXRpb24KLV0gZW51bSBHUFVCbGVuZE9wZXJhdGlvbiB7Ci0g
ICAgImFkZCIsCi0gICAgInN1YnRyYWN0IiwKLSAgICAicmV2ZXJzZS1zdWJ0cmFjdCIsCi0gICAg
Im1pbiIsCi0gICAgIm1heCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCbGVuZERlc2NyaXB0b3Ig
ewotICAgIEdQVUJsZW5kRmFjdG9yIHNyY0ZhY3RvciA9ICJvbmUiOwotICAgIEdQVUJsZW5kRmFj
dG9yIGRzdEZhY3RvciA9ICJ6ZXJvIjsKLSAgICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVyYXRpb24g
PSAiYWRkIjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVCdWZmZXJEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUJ1ZmZlckRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGRm
MjRmZTdmMTFjZTg0YzNkY2ZhNGMxOTE2YWE4MGU5NDhkZmU5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHUFVCdWZmZXJV
c2FnZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQnVmZmVyRGVzY3JpcHRvciB7Ci0gICAgcmVx
dWlyZWQgdTY0IHNpemU7Ci0gICAgcmVxdWlyZWQgR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZTsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJV
c2FnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwODMxNGQ1MmFmMzk0ZGRjYzViYWVj
MTRiNjNhM2MwNTNjMjMyZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0YW50cywKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVCdWZmZXJVc2FnZSB7Ci0gICAgY29u
c3QgdTMyIE5PTkUgPSAwOwotICAgIGNvbnN0IHUzMiBNQVBfUkVBRCA9IDE7Ci0gICAgY29uc3Qg
dTMyIE1BUF9XUklURSA9IDI7Ci0gICAgY29uc3QgdTMyIENPUFlfU1JDID0gNDsKLSAgICBjb25z
dCB1MzIgQ09QWV9EU1QgPSA4OwotICAgIGNvbnN0IHUzMiBJTkRFWCA9IDE2OwotICAgIGNvbnN0
IHUzMiBWRVJURVggPSAzMjsKLSAgICBjb25zdCB1MzIgVU5JRk9STSA9IDY0OwotICAgIGNvbnN0
IHUzMiBTVE9SQUdFID0gMTI4OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM4YjE1MjhmZmMzYTk1MjU4NTBhOTRkNjVlZDI3OTRhNGQ4MDRjMzUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDYW52YXND
b250ZXh0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVk
ZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChHUFVD
YW52YXNDb250ZXh0KTsKLQotc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+IEdQVUNh
bnZhc0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCi17Ci0gICAgYXV0byBjb250
ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+KG5ldyBHUFVDYW52YXNDb250
ZXh0KGNhbnZhcykpOwotICAgIGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVy
biBjb250ZXh0OwotfQotCi1HUFVDYW52YXNDb250ZXh0OjpHUFVDYW52YXNDb250ZXh0KENhbnZh
c0Jhc2UmIGNhbnZhcykKLSAgICA6IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52
YXMpCi17Ci19Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IEdQVUNhbnZhc0NvbnRleHQ6OmNvbmZp
Z3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQotewotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IuYXNHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2Vi
R1BVU3dhcENoYWluOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgCi0gICAgYXV0byBncHVTd2FwQ2hh
aW4gPSBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgqZ3B1RGVzY3JpcHRvciwgY2FudmFzQmFzZSgp
LndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSk7Ci0gICAgYm9vbCBzdWNjZXNzID0gZ3B1
U3dhcENoYWluOwotICAgIGF1dG8gbmV3U3dhcENoYWluID0gV2ViR1BVU3dhcENoYWluOjpjcmVh
dGUoV1RGTW92ZShncHVTd2FwQ2hhaW4pKTsKLSAgICAKLSAgICAvLyBVcG9uIHN1Y2Nlc3MsIGlu
dmFsaWRhdGUgYW5kIHJlcGxhY2UgYW55IGV4aXN0aW5nIHN3YXAgY2hhaW4uCi0gICAgaWYgKHN1
Y2Nlc3MpIHsKLSAgICAgICAgLy8gRklYTUU6IFRlc3QgdGhhdCB0aGlzIHdvcmtzIGFzIGV4cGVj
dGVkIHdpdGggZXJyb3IgcmVwb3J0aW5nLgotICAgICAgICBpZiAobV9zd2FwQ2hhaW4pCi0gICAg
ICAgICAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgpOwotCi0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbigqdGhpcywgbmV3U3dhcENoYWluLmdl
dCgpKTsKLQotICAgICAgICBtX3N3YXBDaGFpbiA9IG5ld1N3YXBDaGFpbi5jb3B5UmVmKCk7Ci0K
LSAgICAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5nZWQoKTsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIG5ld1N3YXBDaGFpbjsKLX0KLQotUGxhdGZvcm1MYXllciogR1BVQ2FudmFzQ29udGV4
dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3dhcENoYWluICYmIG1fc3dh
cENoYWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgcmV0dXJuIG1fc3dhcENoYWluLT5zd2FwQ2hh
aW4oKS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIEdQ
VUNhbnZhc0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGlm
IChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCi0gICAgICAgIG1fc3dh
cENoYWluLT5zd2FwQ2hhaW4oKS0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKLQotICAgIG5vdGlm
eUNhbnZhc0NvbnRlbnRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJl
cGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQotewotICAgIG1faXNEaXNwbGF5aW5nV2l0aFBhaW50
ID0gdHJ1ZTsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcygpCi17Ci0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAgaWYgKG1f
aXNEaXNwbGF5aW5nV2l0aFBhaW50ICYmIG1fc3dhcENoYWluICYmIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKSkgewotICAgICAgICBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCktPnByZXNlbnQoKTsK
LSAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBmYWxzZTsKLSAgICB9Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEwMGQxNjMyZTEz
ZDBjOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENo
YWluLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVDYW52YXNDb250
ZXh0IGZpbmFsIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVDYW52YXNDb250ZXh0KTsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNl
Jik7Ci0KLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7IH0KLQotICAgIFdlYkdQVVN3
YXBDaGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7IH0K
LSAgICBSZWY8V2ViR1BVU3dhcENoYWluPiBjb25maWd1cmVTd2FwQ2hhaW4oY29uc3QgV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvciYpOwotCi1wcml2YXRlOgotICAgIEdQVUNhbnZhc0NvbnRleHQo
Q2FudmFzQmFzZSYpOwotCi0gICAgLy8gR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0Ci0g
ICAgYm9vbCBpc1dlYkdQVSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXNoYXBl
KGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eVdpdGhQYWludCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSBmaW5hbDsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkdQVUNhbnZhc0NvbnRl
eHQiOyB9Ci0gICAgLy8gRklYTUU6IFN0dWJzLgotICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsgfQot
Ci0gICAgYm9vbCBtX2lzRGlzcGxheWluZ1dpdGhQYWludCB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PFdlYkdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci19OwotCi19IC8vIG4BYW1lc3BhY2UgV2Vi
Q29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQoV2Vi
Q29yZTo6R1BVQ2FudmFzQ29udGV4dCwgaXNXZWJHUFUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52
YXNDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0Nv
bnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWEyNDE2MTFkMDBkNmIx
NmRjNTNmYjc3ZTYwYjI2ZmJiOTMyZTAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0Nv
bnRleHQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBH
UFVUZXh0dXJlVXNhZ2VGbGFnczsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKLSAg
ICByZXF1aXJlZCBXZWJHUFVEZXZpY2UgZGV2aWNlOwotICAgIHJlcXVpcmVkIEdQVVRleHR1cmVG
b3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOyAvLyBGSVhNRTog
ZGVmYXVsdCBpcyBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQuCi19OwotCi1bCi0g
ICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDYW52YXNCYXNl
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVDYW52YXNDb250ZXh0IHsKLSAg
ICAvLyBiYWNrLXJlZmVyZW5jZSB0byB0aGUgY2FudmFzCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IEhUTUxDYW52YXNFbGVtZW50IGNhbnZhczsKLQotICAgIC8vIENhbGxpbmcgY29uZmlndXJlU3dh
cENoYWluIGEgc2Vjb25kIHRpbWUgaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzIG9uZSwKLSAgICAv
LyBhbmQgYWxsIG9mIHRoZSB0ZXh0dXJlcyBpdOKAmXMgcHJvZHVjZWQuCi0gICAgV2ViR1BVU3dh
cENoYWluIGNvbmZpZ3VyZVN3YXBDaGFpbihXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIGRlc2Ny
aXB0b3IpOwotCi0gICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KLSAgICAvLyBQcm9taXNlPEdQ
VVRleHR1cmVGb3JtYXQ+IGdldFN3YXBDaGFpblByZWZlcnJlZEZvcm1hdChHUFVEZXZpY2UgZGV2
aWNlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVD
b2xvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODk1ZjVmMjIzYTM5MWU0ZDMxN2VkMjllYWQw
YWY0NzI2ZmFkYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVDb2xvciB7Ci0gICAgcmVxdWlyZWQgZmxvYXQg
cjsKLSAgICByZXF1aXJlZCBmbG9hdCBnOwotICAgIHJlcXVpcmVkIGZsb2F0IGI7Ci0gICAgcmVx
dWlyZWQgZmxvYXQgYTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUxYTAzMDk1ZjYyZTdkZGM4MjhmMjcxYTY4ZjgzNTRjNDEyODY1MTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHUFVDb2xvcldyaXRlRmxhZ3M7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgR1BVVGV4
dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICByZXF1aXJlZCBHUFVCbGVuZERlc2NyaXB0b3IgYWxw
aGFCbGVuZDsKLSAgICByZXF1aXJlZCBHUFVCbGVuZERlc2NyaXB0b3IgY29sb3JCbGVuZDsKLSAg
ICBHUFVDb2xvcldyaXRlRmxhZ3Mgd3JpdGVNYXNrOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGRjNTg4MWEwMTc5N2I1MTAxNDgzOGU1ZTBj
N2YxZGI5NjJkZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhw
b3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUNvbG9yV3JpdGUgewotICAgIGNvbnN0IHUzMiBO
T05FID0gMDsKLSAgICBjb25zdCB1MzIgUkVEID0gMTsKLSAgICBjb25zdCB1MzIgR1JFRU4gPSAy
OwotICAgIGNvbnN0IHUzMiBCTFVFID0gNDsKLSAgICBjb25zdCB1MzIgQUxQSEEgPSA4OwotICAg
IGNvbnN0IHUzMiBBTEwgPSAxNTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTBmZmI0ZjFkZjJkZGJlOTM0MWFjYzNmZDExZjVhMjcwYWM0ZTQwMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUK
LV0gZW51bSBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgICJuZXZlciIsCi0gICAgImxlc3MiLAot
ICAgICJlcXVhbCIsCi0gICAgImxlc3MtZXF1YWwiLAotICAgICJncmVhdGVyIiwKLSAgICAibm90
LWVxdWFsIiwKLSAgICAiZ3JlYXRlci1lcXVhbCIsCi0gICAgImFsd2F5cyIKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBj
OTJmYjBkMzg5MzYxYWUyNjZlY2VlOTRkMDRkMGJmZDBmNmE0YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZGljdGlvbmFyeSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IgewotICAgIGJv
b2xlYW4gZGVwdGhXcml0ZUVuYWJsZWQgPSBmYWxzZTsKLSAgICBHUFVDb21wYXJlRnVuY3Rpb24g
ZGVwdGhDb21wYXJlID0gImFsd2F5cyI7Ci0KLS8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICBH
UFVTdGVuY2lsU3RhdGVGYWNlRGVzY3JpcHRvciBzdGVuY2lsRnJvbnQ7Ci0gICAgR1BVU3RlbmNp
bFN0YXRlRmFjZURlc2NyaXB0b3Igc3RlbmNpbEJhY2s7Ci0KLSAgICB1MzIgc3RlbmNpbFJlYWRN
YXNrOwotICAgIHUzMiBzdGVuY2lsV3JpdGVNYXNrOwotKi8KLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDViOGY0OWE2MWMyNzllOTAyNjQ4NGM2ZWY5MDY0NWVhZDViMWFiYTMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZW51bSBHUFVFcnJvckZpbHRlciB7Ci0gICAgIm5vbmUiLAotICAgICJvdXQtb2YtbWVt
b3J5IiwKLSAgICAidmFsaWRhdGlvbiIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVFeHRlbnQzRC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMTk3
Njk3MzYwNzE1NjY0NWVhZjAzMzViODJlMDg4MjE3YmFjMmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVRXh0ZW50M0QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgW0VuZm9yY2VS
YW5nZV0gdW5zaWduZWQgbG9uZyBHUFVJbnRlZ2VyQ29vcmRpbmF0ZTsKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IEdQVUV4dGVudDNEIHsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSB3aWR0aDsK
LSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQ7Ci0gICAgcmVxdWlyZWQg
R1BVSW50ZWdlckNvb3JkaW5hdGUgZGVwdGg7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUxvYWRPcC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMmQ0
ZmEyODJmYzY5NjAyN2U5Y2ZhNWYzNWE0NjcyYTc5M2E3M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVTG9hZE9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVTG9hZE9wIHsK
LSAgICAiY2xlYXIiLAotICAgICJsb2FkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVPcmlnaW4zRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjJiN2Iz
NmRkY2EzYWFjNWNiMzUwZTAwNDA4YTI3NDE2ZDI2NWRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VU9yaWdpbjNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBHUFVPcmlnaW4zRCB7Ci0gICAgdW5zaWduZWQgeCB7IDAgfTsKLSAgICB1bnNp
Z25lZCB5IHsgMCB9OwotICAgIHVuc2lnbmVkIHogeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyNzcxOWMwMjI0ZDMzN2IxYTE2NjBiOGQwNjA4MTEyN2IzOTViY2VkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVT3JpZ2luM0QgewotICAgIHUz
MiB4ID0gMDsKLSAgICB1MzIgeSA9IDA7Ci0gICAgdTMyIHogPSAwOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDgwYWUwMmRhMWZjNWIwNDAxNzRlYTcyZjky
Mzg3NTZjZjFhZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVPdXRPZk1lbW9yeUVycm9yIHsKLSAg
ICBjb25zdHJ1Y3RvcigpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhZWEwMGQ2MWFiZjhhNTA0YTQwMTk5NGE3Y2JkYTExMmJkMzhlOTdlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVUG93ZXJQcmVmZXJlbmNlCi1d
IGVudW0gR1BVUG93ZXJQcmVmZXJlbmNlIHsKLSAgICAibG93LXBvd2VyIiwKLSAgICAiaGlnaC1w
ZXJmb3JtYW5jZSIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMg
ewotICAgIEdQVVBvd2VyUHJlZmVyZW5jZT8gcG93ZXJQcmVmZXJlbmNlOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzMTM2ODQ5OWZjZTJmNGJjYzgxOTA5
ZDczYWQ4MTBjNWMzZTE2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRv
ci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsK
LQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVQWRkcmVzc01vZGUKLV0gZW51bSBHUFVBZGRyZXNz
TW9kZSB7Ci0gICAgImNsYW1wLXRvLWVkZ2UiLAotICAgICJyZXBlYXQiLAotICAgICJtaXJyb3It
cmVwZWF0IgotfTsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVRmlsdGVyTW9kZQotXSBlbnVt
IEdQVUZpbHRlck1vZGUgewotICAgICJuZWFyZXN0IiwKLSAgICAibGluZWFyIgotfTsKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBk
aWN0aW9uYXJ5IEdQVVNhbXBsZXJEZXNjcmlwdG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRy
ZXNzTW9kZVUgPSAiY2xhbXBUb0VkZ2UiOwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2Rl
ViA9ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVXID0gImNs
YW1wVG9FZGdlIjsKLSAgICBHUFVGaWx0ZXJNb2RlIG1hZ0ZpbHRlciA9ICJuZWFyZXN0IjsKLSAg
ICBHUFVGaWx0ZXJNb2RlIG1pbkZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBHUFVGaWx0ZXJNb2Rl
IG1pcG1hcEZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBmbG9hdCBsb2RNaW5DbGFtcCA9IDA7Ci0g
ICAgZmxvYXQgbG9kTWF4Q2xhbXAgPSAweGZmZmZmZmZmOyAvLyBUT0RPOiBXaGF0IHNob3VsZCB0
aGlzIGJlPyBXYXMgTnVtYmVyLk1BWF9WQUxVRS4KLSAgICB1MzIgbWF4QW5pc290cm9weSA9IDE7
Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbiA9ICJuZXZlciI7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWFkNDdlZmRkODBlNGM5NTI2MWU1ZDI5ZWFjMWEz
YWI4OTgyNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXVzaW5nIEdQVVNoYWRlclN0YWdlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xh
c3MgR1BVU2hhZGVyU3RhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJTdGFnZT4gewot
cHVibGljOgotICAgIGVudW0gRmxhZ3MgOiBHUFVTaGFkZXJTdGFnZUZsYWdzIHsKLSAgICAgICAg
Tm9uZSA9IDAsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgMCwKLSAgICAgICAgRnJhZ21lbnQgPSAx
IDw8IDEsCi0gICAgICAgIENvbXB1dGUgPSAxIDw8IDIsCi0gICAgfTsKLX07Ci0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGMzMWMyMzk1ZTNhYjYyZGE1YTM1YTIzMDg1NzdjNTg4N2M3NGM2
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIEdQVVNoYWRlclN0YWdlIHsKLSAgICBjb25zdCB1MzIgTk9ORSA9IDA7
Ci0gICAgY29uc3QgdTMyIFZFUlRFWCA9IDE7Ci0gICAgY29uc3QgdTMyIEZSQUdNRU5UID0gMjsK
LSAgICBjb25zdCB1MzIgQ09NUFVURSA9IDQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVTdG9yZU9wLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Mx
MmI5NTJlODc0ODAwY2U2NmE5ZDc5Nzg4ZjA0NTQ1MmFhMmI4MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVTdG9yZU9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVU3RvcmVP
cCB7Ci0gICAgInN0b3JlIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGZhMGMzYzI0OGJkOGZhYzFiYzE1NjhkN2Q2MTJiYTM2OTRmZWVmMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVUludGVnZXJDb29yZGlu
YXRlOwotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVVNpemUzMjsKLXR5
cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVUZXh0dXJlVXNhZ2VGbGFnczsK
LQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVVGV4dHVyZURpbWVuc2lvbgotXSBlbnVtIEdQVVRl
eHR1cmVEaW1lbnNpb24gewotICAgICIxZCIsCi0gICAgIjJkIiwKLSAgICAiM2QiCi19OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1d
IGRpY3Rpb25hcnkgR1BVVGV4dHVyZURlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIEdQVUV4dGVu
dDNEIHNpemU7Ci0gICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgbWlwTGV2ZWxDb3VudCA9IDE7Ci0g
ICAgR1BVU2l6ZTMyIHNhbXBsZUNvdW50ID0gMTsKLSAgICBHUFVUZXh0dXJlRGltZW5zaW9uIGRp
bWVuc2lvbiA9ICIyZCI7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0g
ICAgcmVxdWlyZWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhMWY3NzZlNDE3NzUyZDA4YjI4YWQ3ZWU4ZDc0ZWQyZDUy
MjM3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVVGV4dHVyZUZvcm1h
dCB7Ci0gICAgInJnYmE4dW5vcm0iLAotICAgICJyZ2JhOHVpbnQiLAotICAgICJiZ3JhOHVub3Jt
IiwKLSAgICAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAiYmdyYTh1bm9ybS1zcmdiIiwK
LSAgICAicmdiYTE2ZmxvYXQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNh
Y2MzOGY3ZDY1ZTk1NWU5ZDZiN2I5MTMyYWZlYmExYzUyM2I2ZGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZVVzYWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIERvTm90
Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BV
VGV4dHVyZVVzYWdlIHsKLSAgICBjb25zdCB1MzIgQ09QWV9TUkMgPSAxOwotICAgIGNvbnN0IHUz
MiBDT1BZX0RTVCA9IDI7Ci0gICAgY29uc3QgdTMyIFNBTVBMRUQgPSA0OwotICAgIGNvbnN0IHUz
MiBTVE9SQUdFID0gODsKLSAgICBjb25zdCB1MzIgT1VUUFVUX0FUVEFDSE1FTlQgPSAxNjsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1
cmVkRXJyb3JFdmVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmOWQxYmEz
YWU0NzcyOTdmZGQ4M2I3YmFhMjJkMTYzNzhjODk5ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLQotUmVmPEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKLX0KLQotUmVmPEdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIEdQVUVycm9yJiYgZXJyb3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwgV1RGTW92ZShlcnJvcikpKTsKLX0KLQotR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQot
ICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKLSAgICAsIG1fZXJyb3Io
aW5pdGlhbGl6ZXIuZXJyb3IpCi17Ci19Ci0KLUdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBHUFVFcnJvciYmIGVy
cm9yKQotICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykK
LSAgICAsIG1fZXJyb3IoV1RGTW92ZShlcnJvcikpCi17Ci19Ci0KLUV2ZW50SW50ZXJmYWNlIEdQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW50ZXJmYWNlVHlwZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZTk1ZGFkZWY1YmFiM2E4YmU2ZWMyZWU0
MzNmN2M2ZjNmMjMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRl
ICJHUFVFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCk7Ci1w
dWJsaWM6Ci0gICAgc3RydWN0IEluaXQ6IEV2ZW50SW5pdCB7Ci0gICAgICAgIEdQVUVycm9yIGVy
cm9yOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0
ZWQ6Ok5vKTsKLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYpOwotCi0gICAgY29uc3QgR1BVRXJyb3IgZXJy
b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwotICAgIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBHUFVFcnJv
ciYmKTsKLQotICAgIC8vIEV2ZW50Ci0gICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIEdQVUVycm9yIG1fZXJyb3I7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2NkODE1Y2JkMTVmYmFjZjJlZjFj
MTk4NDBmZjQwZDFmZGNlYTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIChHUFVPdXRPZk1lbW9y
eUVycm9yIG9yIEdQVVZhbGlkYXRpb25FcnJvcikgR1BVRXJyb3I7Ci0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgOiBFdmVudEluaXQgewotICAgIHJlcXVpcmVkIEdQ
VUVycm9yIGVycm9yOwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQgOiBFdmVudCB7Ci0gICAgY29uc3RydWN0b3IoRE9NU3RyaW5n
IHR5cGUsIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW5pdCBncHVVbmNhcHR1cmVkRXJyb3JFdmVu
dEluaXREaWN0KTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHUFVFcnJvciBlcnJvcjsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVy
cm9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjNWIxNTZmYjcyOGM2MzBm
ZDczY2VkNjcyMWEzNWE5OTk2NjQwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVVmFsaWRhdGlvbkVy
cm9yIHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgbWVzc2FnZSk7Ci0KLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQzZDI2YzUzMGUyZjYzM2MwZDI3
YmMxMTAzNmM1MDM5ZWEzNjVkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgSW1w
bGVtZW50ZWRBcz1HUFVWZXJ0ZXhGb3JtYXQKLV0gZW51bSBHUFVWZXJ0ZXhGb3JtYXQgewotICAg
ICJmbG9hdCIsCi0gICAgImZsb2F0MiIsCi0gICAgImZsb2F0MyIsCi0gICAgImZsb2F0NCIKLX07
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIHsKLSAgICB1NjQg
b2Zmc2V0ID0gMDsKLSAgICByZXF1aXJlZCBHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0OwotICAgIHJl
cXVpcmVkIHUzMiBzaGFkZXJMb2NhdGlvbjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWUwOGY2NTg2ZGQ4OTUyYzE3NzA3NmNmZjkyNWJj
ZDQxMzE1NjhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3Iu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQ
VUlucHV0U3RlcE1vZGUKLV0gZW51bSBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAgICAidmVydGV4IiwK
LSAgICAiaW5zdGFuY2UiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvciB7Ci0gICAgcmVxdWlyZWQgdTY0IHN0cmlkZTsKLSAgICBHUFVJbnB1dFN0ZXBNb2RlIHN0
ZXBNb2RlID0gInZlcnRleCI7Ci0gICAgc2VxdWVuY2U8R1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcj4gYXR0cmlidXRlU2V0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjZjk3YjEwZWU0MWE4MTFmYzNkMjkyOTMwMmU0Mjc3NWYwZWE3M2Y2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIElt
cGxlbWVudGVkQXM9R1BVSW5kZXhGb3JtYXQKLV0gZW51bSBHUFVJbmRleEZvcm1hdCB7Ci0gICAg
InVpbnQxNiIsCi0gICAgInVpbnQzMiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0ID0gInVpbnQzMiI7
Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj8+IHZlcnRl
eEJ1ZmZlcnM7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
TmF2aWdhdG9yK0dQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0
b3IrR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIwZjhmMTc1Njk0OTQw
NWI0OTRmMjQyNzgxNzQyNjkxMDkzZjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3Ir
R1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZpZ2F0b3ItZ3B1Ci1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxl
bWVudGVkQnk9TmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0g
ICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1OwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5M2ZjMDdiYjY1OGZkNjE5YWZmM2QyNDkzOGM2MGQ4ZTFkNWNm
ODUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIk5hdmlnYXRvckdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIk5h
dmlnYXRvci5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LU5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQot
ewotICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdQ
VSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKLSAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXdT
dXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBs
ZW1lbnQ7Ci19Ci0KLWNvbnN0IGNoYXIqIE5hdmlnYXRvckdQVTo6c3VwcGxlbWVudE5hbWUoKQot
ewotICAgIHJldHVybiAiTmF2aWdhdG9yR1BVIjsKLX0KLQotY29uc3QgV2ViR1BVKiBOYXZpZ2F0
b3JHUFU6OmdwdShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRvIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS53ZWJHUFVF
bmFibGVkKTsKLSAgICByZXR1cm4gTmF2aWdhdG9yR1BVOjpmcm9tKCZuYXZpZ2F0b3IpLT5ncHUo
KTsKLX0KLQotY29uc3QgV2ViR1BVKiBOYXZpZ2F0b3JHUFU6OmdwdSgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJHUFU6OmNyZWF0ZSgpOwotICAgIHJldHVy
biBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L05hdmlnYXRvckdQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
R1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NThkMDg0NmNkNjcyOWY0OGVl
OTVlNzcyM2I5ZmRiOTFmNDhiNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOYXZpZ2F0b3I7Ci1jbGFzcyBXZWJHUFU7Ci0K
LWNsYXNzIE5hdmlnYXRvckdQVSBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRvcj4g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBXZWJHUFUqIGdwdShOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgTmF2aWdh
dG9yR1BVKiBmcm9tKE5hdmlnYXRvciopOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSogZ3B1KCkgY29uc3Q7Ci0KLSAgICBt
dXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY0NjNmOWUwYTE2ZGVlYWUxNTBiZTUxNzJkMTJiMWI3MjdjNDkyOTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExT
TEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQmFzZUZ1
bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgotI2lu
Y2x1ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgot
I2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENvbW1hRXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDb250aW51ZS5oIgotI2luY2x1ZGUgIldITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90RXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5o
IgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIK
LSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2guaCIKLSNpbmNsdWRl
ICJXSExTTEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRy
aWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAi
V0hMU0xJbmRleEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTExv
Z2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xRdWFsaWZpZXIuaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc29s
dmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAi
V0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0
YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xTdGF0ZW1lbnRMaXN0LmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSAiV0hM
U0xTd2l0Y2hDYXNlLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xV
bm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgot
I2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgot
I2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTNiMjk2ZDhkMzNkNWJmNmE5NDk2YmIwYzMxMTY3N2RhMjljOWUxZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEFkZHJlc3NFc2Nh
cGVNb2RlIDogdWludDhfdCB7Ci0gICAgRXNjYXBlcywgLy8gQ29uc2VydmF0aXZlbHksIHRoaXMg
YWRkcmVzcy1vZiBvcGVyYXRpb24gbWlnaHQgZXNjYXBlLgotICAgIERvZXNOb3RFc2NhcGUgLy8g
VGhpcyBhZGRyZXNzLW9mIG9wZXJhdGlvbiBkZWZpbml0ZWx5IGRvZXMgbm90IGVzY2FwZS4KLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRy
ZXNzU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFkZHJlc3NTcGFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTg2NjY4YjY2
N2U4NDY1Yzc4OTg5YTAwMDZiNmEwZjZkMGQyMTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEFkZHJlc3NTcGFjZSA6IHVp
bnQ4X3QgewotICAgIENvbnN0YW50LAotICAgIERldmljZSwKLSAgICBUaHJlYWRncm91cCwKLSAg
ICBUaHJlYWQKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyB0b1N0cmluZyhBZGRyZXNz
U3BhY2UgYWRkcmVzc1NwYWNlKQotewotICAgIHN3aXRjaCAoYWRkcmVzc1NwYWNlKSB7Ci0gICAg
Y2FzZSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNvbnN0YW50IjsK
LSAgICBjYXNlIEFkZHJlc3NTcGFjZTo6RGV2aWNlOgotICAgICAgICByZXR1cm4gImRldmljZSI7
Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOgotICAgICAgICByZXR1cm4gInRo
cmVhZGdyb3VwIjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlID09
IEFkZHJlc3NTcGFjZTo6VGhyZWFkKTsKLSAgICAgICAgcmV0dXJuICJ0aHJlYWQiOwotICAgIH0K
LX0KLQotc3RydWN0IExlZnRWYWx1ZSB7Ci0gICAgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZTsK
LX07Ci0KLXN0cnVjdCBBYnN0cmFjdExlZnRWYWx1ZSB7Ci19OwotCi1zdHJ1Y3QgUmlnaHRWYWx1
ZSB7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLWNsYXNzIFR5
cGVBbm5vdGF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBUeXBlQW5ub3RhdGlvbigpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgOiBtX2VtcHR5
KHRydWUpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oTGVmdFZh
bHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5u
b3RhdGlvbihBYnN0cmFjdExlZnRWYWx1ZSB2KQotICAgICAgICA6IG1faW5uZXIodikKLSAgICB7
Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oUmlnaHRWYWx1ZSB2KQotICAgICAgICA6IG1f
aW5uZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oY29uc3QgVHlwZUFu
bm90YXRpb24mKSA9IGRlZmF1bHQ7Ci0gICAgVHlwZUFubm90YXRpb24oVHlwZUFubm90YXRpb24m
JiBvdGhlcikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFubm90YXRpb24mIG9wZXJhdG9yPShjb25z
dCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKLSAgICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0
b3I9KFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVmYXVsdDsKLQotICAgIHN0ZDo6b3B0aW9u
YWw8QWRkcmVzc1NwYWNlPiBsZWZ0QWRkcmVzc1NwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPExl
ZnRWYWx1ZT4obV9pbm5lcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TGVmdFZhbHVl
PihtX2lubmVyKS5hZGRyZXNzU3BhY2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc1JpZ2h0VmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Umln
aHRWYWx1ZT4obV9pbm5lcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0
b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4gZGVjbHR5cGUoV1RGOjp2
aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxMZWZ0VmFsdWUsIEFic3RyYWN0TGVm
dFZhbHVlLCBSaWdodFZhbHVlPiY+KCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2VtcHR5
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbm5lcik7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0Fic3RyYWN0TGVmdFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFi
c3RyYWN0TGVmdFZhbHVlPihtX2lubmVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFu
dDxMZWZ0VmFsdWUsIEFic3RyYWN0TGVmdFZhbHVlLCBSaWdodFZhbHVlPiBtX2lubmVyOwotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgYm9vbCBtX2VtcHR5IHsgZmFsc2UgfTsKLSNlbmRpZgotfTsK
LQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEzMjc2MGExNDVmZjk2NjY4MjliZTY4OWY5NjcxZmIzMDliYWM2ZjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZSBmaW5hbCA6
IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheVJlZmVyZW5jZVR5cGUpOwotICAgIHVzaW5nIEJh
c2UgPSBSZWZlcmVuY2VUeXBlOwotCi0gICAgQXJyYXlSZWZlcmVuY2VUeXBlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBl
bGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1v
dmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJheVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgfQotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXJyYXlSZWZlcmVuY2VUeXBlPiBjcmVhdGUoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+
IGVsZW1lbnRUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlS
ZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUp
KSk7Ci0gICAgfQotCi0gICAgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKLQotICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPkJhc2U6
Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoKCJhcnJheSIpOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFk
ZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKLSAg
ICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50b1N0cmluZygpLCAiW10iKTsKLSAgICB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfVFlQRShBcnJheVJlZmVyZW5jZVR5cGUsIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U1YmZjYjMwMWQzMWY5NzZhMmU4MDU0MGYyMWJiODk0
NGNjNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVW5u
YW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQXJyYXlUeXBlIGZpbmFsIDogcHVibGljIFVubmFtZWRU
eXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBcnJheVR5cGUpOwotICAgIEFycmF5VHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJl
ZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQotICAgICAg
ICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKLSAgICAgICAgLCBtX2VsZW1l
bnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQotICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVt
RWxlbWVudHMpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLQotICAgIHN0YXRpYyBSZWY8QXJyYXlU
eXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1l
bnRUeXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFycmF5VHlwZShsb2NhdGlvbiwgV1RGTW92ZShlbGVtZW50VHlwZSksIG51bUVs
ZW1lbnRzKSk7Ci0gICAgfQotCi0gICAgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKLQotICAgIGNv
bnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQot
ICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotICAgIHVu
c2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50czsgfQotCi0g
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpJbnRI
YXNoPHVuc2lnbmVkPjo6aGFzaChtX251bUVsZW1lbnRzKSBeIG1fZWxlbWVudFR5cGUtPmhhc2go
KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJyYXlUeXBlJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBudW1FbGVtZW50cygpID09IG90aGVyLm51bUVs
ZW1lbnRzKCkgJiYgdHlwZSgpID09IG90aGVyLnR5cGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlwZSgp
LnRvU3RyaW5nKCksICdbJywgbnVtRWxlbWVudHMoKSwgJ10nKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX2VsZW1lbnRUeXBlOwotICAgIHVuc2lnbmVkIG1fbnVt
RWxlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShBcnJheVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
VFlQRShBcnJheVR5cGUsIGlzQXJyYXlUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q5OThiNTI1ZmM2ZjNhODU0NDVkN2RiZTQzY2VmNjYzZGUy
NzdhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVz
c2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xF
eHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6QXNzaWdubWVudCkKLSAgICAgICAg
LCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQp
KQotICAgIHsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgICAgICBVTlVTRURfUEFSQU0obV9wYWQp
OwotI2VuZGlmCi0gICAgfQotCi0gICAgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24m
KSA9IGRlbGV0ZTsKLSAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lv
biYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9sZWZ0
OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9Ci0gICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1vdmUobV9yaWdodCk7
IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OwotICAgIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0OwotI2lmIENQVShBRERSRVNTMzIpCi0gICAgY2hh
ciBtX3BhZFsxXTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQXNzaWdubWVudEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhwcmVzc2lvbiwgaXNB
c3NpZ25tZW50RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTU1NjI1YzhmZGM0MTgxZWI0Y2Q0ZTk2ZjVlNmYxMWNhNGUzMWZjNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxv
Y2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAg
ICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIH5CYXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCYXNlRnVuY3Rp
b25BdHRyaWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7Ci0gICAg
QmFzZUZ1bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1bHQ7
Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmFzZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODA5ODhhNjBmZmY1YTY4NGQ3YjEzN2QzNWNjNzM5YWZkMjA0NzZlYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSW50cmluc2ljczsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIFVu
bmFtZWRUeXBlOwotCi1jbGFzcyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIEJhc2VTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24p
Ci0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAg
IHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJhc2VTZW1hbnRpYyhj
b25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCYXNlU2VtYW50aWMoQmFzZVNlbWFu
dGljJiYpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNv
bnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0ID0gMDsKLQotICAgIGVu
dW0gY2xhc3MgU2hhZGVySXRlbURpcmVjdGlvbiA6IHVpbnQ4X3QgewotICAgICAgICBJbnB1dCwK
LSAgICAgICAgT3V0cHV0Ci0gICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0ID0gMDsKLQotcHJpdmF0ZToKLSAgICBDb2RlTG9j
YXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmQ5MjRiYTc1Y2ZiNmVkZTRkODRjYmVkNTJkNGRkOTE0YzY1YjM3
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCbG9jayBmaW5hbCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEJsb2NrKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCi0g
ICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCbG9jaykKLSAgICAgICAgLCBtX3N0
YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkJsb2Nr
KCkgPSBkZWZhdWx0OwotCi0gICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRlbGV0ZTsKLSAgICBC
bG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1lbnRzJiBzdGF0ZW1lbnRzKCkg
eyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RhdGVtZW50cyBtX3N0
YXRlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShCbG9jaykKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJvb2xlYW5MaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzODM2MDUxNjdmYmE1ZWUwM2FhZmJjNjdjODEzMWM1MzFlMDEwNTE0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCb29sZWFuTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBCb29sZWFuTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGJvb2wgdmFsdWUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxpdGVyYWwpCi0gICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkJvb2xlYW5MaXRlcmFs
KCkgPSBkZWZhdWx0OwotCi0gICAgQm9vbGVhbkxpdGVyYWwoY29uc3QgQm9vbGVhbkxpdGVyYWwm
KSA9IGRlbGV0ZTsKLSAgICBCb29sZWFuTGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEJvb2xlYW5MaXRlcmFs
JikgPSBkZWxldGU7Ci0gICAgQm9vbGVhbkxpdGVyYWwmIG9wZXJhdG9yPShCb29sZWFuTGl0ZXJh
bCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQotCi0gICAgQm9vbGVhbkxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
Qm9vbGVhbkxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICAgICAg
Y29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBib29sIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5M
aXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NzYxYmEyOGI3Y2I3MjQ4NGQ3YzYyMzY3YzQ3
OGE0MmRhYmYwZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJyZWFrIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQnJlYWsoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6QnJlYWsp
Ci0gICAgewotICAgIH0KLQotICAgIH5CcmVhaygpID0gZGVmYXVsdDsKLQotICAgIEJyZWFrKGNv
bnN0IEJyZWFrJikgPSBkZWxldGU7Ci0gICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OwotCi1w
cml2YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoQnJlYWspCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKEJyZWFrLCBpc0JyZWFrKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzNlNGRmMmVjMWI0MTRkMGNiODNjNjliMjc2NjI0NGI5YjZiNjcyMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVk
ZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWJvb2wgQnVpbHRJblNlbWFudGljOjpp
c0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50
cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsK
LSAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6
OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5z
aWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgotICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVklzRnJv
bnRGYWNlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5i
b29sVHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBj
YXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNW
VGFyZ2V0OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5m
bG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICBjYXNl
IFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNo
VGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAg
IGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZH
cm91cFRocmVhZElEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmlu
c2ljcy5mbG9hdDNUeXBlKCkpOwotICAgIH0KLX0KLQotYm9vbCBCdWlsdEluU2VtYW50aWM6Omlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJl
Y3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlw
ZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRyeVBvaW50VHlwZSkgewotICAgIGNhc2UgRW50
cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAg
ICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAo
bV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgot
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246
Ok91dHB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAg
Y2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0
aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgc3dpdGNoIChkaXJl
Y3Rpb24pIHsKLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAgICAg
ICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6
U1ZJc0Zyb250RmFjZToKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246Ci0g
ICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0Ogot
ICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVlRhcmdldDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0gICAg
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpD
b21wdXRlOgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFNoYWRl
ckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7
Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxl
OjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFk
SUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGlj
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NWE1MTgyNzEwNTFjNWQwYzM5OTUx
ZWM3YWNiMmFjNzQ2YjBjZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVp
bHRJblNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJ1aWx0SW5TZW1hbnRp
YyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIGVudW0gY2xhc3MgVmFyaWFibGUgOiB1aW50OF90IHsKLSAgICAgICAgU1ZJ
bnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElELAotICAgICAgICBQU2l6ZSwKLSAgICAgICAg
U1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250RmFjZSwKLSAgICAgICAgU1ZTYW1wbGVJbmRl
eCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBTVlRhcmdldCwKLSAgICAgICAg
U1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwKLSAgICAgICAgU1ZEaXNwYXRjaFRocmVhZElE
LAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAgIFNWR3JvdXBJbmRleCwKLSAgICAgICAgU1ZH
cm91cFRocmVhZElECi0gICAgfTsKLQotICAgIEJ1aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYmIHRh
cmdldEluZGV4ID0gc3RkOjpudWxsb3B0KQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlv
bikKLSAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQotICAgICAgICAsIG1fdGFyZ2V0SW5k
ZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkJ1
aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJ1aWx0SW5TZW1hbnRpYyhjb25zdCBC
dWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCdWlsdEluU2VtYW50aWMoQnVpbHRJblNl
bWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlIHZhcmlhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYWJsZTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiB0YXJnZXRJ
bmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fdmFyaWFibGUgPT0gb3RoZXIubV92YXJpYWJsZSAmJiBtX3RhcmdldEluZGV4ID09IG90aGVy
Lm1fdGFyZ2V0SW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJ1aWx0
SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotCi0gICAgU3RyaW5nVmlldyB0b1N0cmluZygpIGNvbnN0Ci0gICAg
ewotICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6
U1ZJbnN0YW5jZUlEOgotICAgICAgICAgICAgcmV0dXJuICJTVkluc3RhbmNlSUQiOwotICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICAgICAgcmV0dXJuICJTVlZlcnRl
eElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgICAgICByZXR1cm4g
IlBTaXplIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgICAg
IHJldHVybiAiU1ZQb3NpdGlvbiI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZh
Y2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSXNGcm9udEZhY2UiOwotICAgICAgICBjYXNlIFZh
cmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICAgICAgcmV0dXJuICJTVlNhbXBsZUluZGV4
IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICAgICAg
cmV0dXJuICJTVklubmVyQ292ZXJhZ2UiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlRhcmdl
dDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZUYXJnZXQiOwotICAgICAgICBjYXNlIFZhcmlhYmxl
OjpTVkRlcHRoOgotICAgICAgICAgICAgcmV0dXJuICJTVkRlcHRoIjsKLSAgICAgICAgY2FzZSBW
YXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgICAgIHJldHVybiAiU1ZDb3ZlcmFnZSI7Ci0g
ICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgICAgIHJl
dHVybiAiU1ZEaXNwYXRjaFRocmVhZElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91
cElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3VwSUQiOwotICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWR3JvdXBJbmRleCI7Ci0g
ICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAgICAgICAgIHJldHVy
biAiU1ZHcm91cFRocmVhZElEIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgaXNBY2Nl
cHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hh
ZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBj
b25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBWYXJpYWJsZSBtX3ZhcmlhYmxlOwotICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFyZ2V0SW5kZXg7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
YWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ0
MTE4ZTIxYjM1MDk1Y2Y4NDViMTFmNmI5MTRkOGVlZDc0ZTZlMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsOTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlwZTsKLQotY2xhc3Mg
Q2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYm
IGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpDYWxsKQot
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fYXJndW1lbnRzKFdU
Rk1vdmUoYXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ2FsbEV4cHJlc3Npb24oY29u
c3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDYWxsRXhwcmVzc2lvbihDYWxsRXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+
PiYgYXJndW1lbnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KLQotICAgIFN0cmluZyYgbmFt
ZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgfkNhbGxFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgdm9pZCBzZXRDYXN0RGF0YShOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLSAgICB7Ci0g
ICAgICAgIG1fY2FzdFJldHVyblR5cGUgPSAmbmFtZWRUeXBlOwotICAgIH0KLQotICAgIGJvb2wg
aXNDYXN0KCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIE5hbWVkVHlwZSogY2Fz
dFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9Ci0gICAgRnVuY3Rpb25E
ZWNsYXJhdGlvbiYgZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZnVuY3Rpb24p
OwotICAgICAgICByZXR1cm4gKm1fZnVuY3Rpb247Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGdW5j
dGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX2Z1bmN0aW9uKTsKLSAgICAgICAgbV9mdW5jdGlvbiA9ICZmdW5jdGlv
bkRlY2xhcmF0aW9uOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9uYW1lOwotICAg
IFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwotICAgIEZ1bmN0aW9u
RGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07Ci0gICAgTmFtZWRUeXBlKiBtX2Nh
c3RSZXR1cm5UeXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxsRXhw
cmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHBy
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b21tYUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI0OGJiMzg4
MTUxMzNmOTZkMThiNWY4YjkwMGZkMjVkM2ExMWM3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgQ29tbWFFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Np
b24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENvbW1hRXhw
cmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lv
bj4+JiYgbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpDb21tYSkK
LSAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkNv
bW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIENvbW1hRXhwcmVzc2lvbihjb25zdCBD
b21tYUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb21tYUV4cHJlc3Npb24oQ29tbWFFeHBy
ZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxFeHByZXNzaW9uPj4gbV9saXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29tbWFFeHByZXNzaW9uKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBpc0NvbW1h
RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3Rh
bnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2Q0MTM3ZTg1YmZjYzU4MTdiN2QyNWZkZmY1YjQwNjRlMDhhMzQ2Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCi0jaW5j
bHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEZs
b2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRl
ICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLS8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IG1hY09TIFNpZXJyYSBkb2Vz
bid0IHNlZW0gdG8gc3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywKLS8v
IHNvIHRoaXMgaXMgYSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFw
cGVuLiBBcyBzb29uIGFzIHdlIGRvbid0Ci0vLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0aGlz
IGNhbiBiZSBtaWdyYXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgotY2xhc3MgQ29uc3RhbnRFeHBy
ZXNzaW9uIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwmJiBpbnRlZ2VyTGl0ZXJhbCkKLSAg
ICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0ZXJhbCkpCi0gICAgewotICAgIH0K
LQotICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYgdW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh1bnNpZ25lZElu
dGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEZs
b2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShm
bG9hdExpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oQm9v
bGVhbkxpdGVyYWwmJiBib29sZWFuTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZShib29sZWFuTGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lv
bihFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0g
ICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKGNvbnN0IENvbnN0YW50RXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIENvbnN0YW50RXhwcmVzc2lvbihDb25zdGFudEV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OwotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uJiBvcGVyYXRvcj0oY29u
c3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ29uc3RhbnRFeHByZXNzaW9u
JiBvcGVyYXRvcj0oQ29uc3RhbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVn
ZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCgpCi0gICAgewotICAgICAgICBBU1NFUlQoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KSk7Ci0gICAgICAgIHJl
dHVybiBXVEY6OmdldDxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2aXNp
dG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJpYW50
PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBGbG9hdExpdGVyYWwsIEJv
b2xlYW5MaXRlcmFsLCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+Jj4oKSkpCi0gICAgewotICAg
ICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhcmlhbnQpOwotICAgIH0KLQotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZp
c2l0b3IpIGNvbnN0IC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFs
PFZhcmlhbnQ8SW50ZWdlckxpdGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIEZsb2F0TGl0
ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFyaWFudCk7Ci0gICAg
fQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEludGVnZXJMaXRl
cmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAg
IHJldHVybiBpbnRlZ2VyTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gQ29uc3RhbnRF
eHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLmNs
b25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkg
LT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdExpdGVyYWwu
Y2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0
ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBib29sZWFu
TGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lvbiB7
Ci0gICAgICAgICAgICByZXR1cm4gZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmNsb25lKCk7Ci0g
ICAgICAgIH0pLCBtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBD
b25zdGFudEV4cHJlc3Npb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiByZXN1bHQ7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgdmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAg
IH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRl
cmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUo
KTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0g
ICAgICAgICAgICB2YWx1ZSA9IGZsb2F0TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0o
Y29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxCb29sZWFuTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KSkg
ewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyQm9vbGVhbkxpdGVyYWwgPSBXVEY6
OmdldDxCb29sZWFuTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KTsKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID09IG90aGVyQm9vbGVhbkxpdGVyYWwudmFs
dWUoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNl
OwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyTWVtYmVyUmVmZXJlbmNlID0gV1RGOjpnZXQ8RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpID09
IG90aGVyTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVtYmVyKCk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSkpOwotCi0g
ICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKLQotICAgICAg
ICBvdGhlci52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYg
aW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IGludGVnZXJM
aXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1
ZSA9PSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25z
dCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0gdmFs
dWUgPT0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFu
TGl0ZXJhbCYpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9LCBbJl0o
Y29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgewotICAgICAgICAgICAgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAg
cmV0dXJuICpyZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8Ci0gICAgICAg
IEludGVnZXJMaXRlcmFsLAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAg
ICBGbG9hdExpdGVyYWwsCi0gICAgICAgIEJvb2xlYW5MaXRlcmFsLAotICAgICAgICBFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwKLSAgICAgICAgPiBtX3ZhcmlhbnQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b250aW51ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q29udGludWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA1MWMyNDJhZjA2Zjhj
MzNjNjRkMDU2YmNjYzlhM2RkMGY5MGY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xDb250aW51ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIENvbnRpbnVlIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbiwgS2luZDo6Q29udGludWUpCi0gICAgewotICAgIH0KLQotICAgIH5Db250aW51
ZSgpID0gZGVmYXVsdDsKLQotICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7
Ci0gICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29u
dGludWUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKENvbnRpbnVl
LCBpc0NvbnRpbnVlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZWZh
dWx0RGVsZXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xEZWZhdWx0RGVsZXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYjI1MjU5
YTI5Zjc3ODIxOGIzYTM5ZDI4N2FkMGY3ODYyNmFkOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0KLSNkZWZpbmUgREVGSU5FX0RFRkFVTFRfREVM
RVRFKHR5cGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0ZW1wbGF0ZTw+IFwK
LSAgICAgICAgc3RydWN0IGRlZmF1bHRfZGVsZXRlPFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGU+
IHsgXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFwKLSAgICAgICAgICAgIHZv
aWQgY2FsbERlbGV0ZShUKiB0KSBcCi0gICAgICAgICAgICB7IFwKLSAgICAgICAgICAgICAgICBk
ZWxldGUgdDsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gXAotICAgICAgICAgICAgdm9pZCBjYWxsRGVzdHJveShUKiB0KSBcCi0gICAgICAgICAg
ICB7IFwKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlOjpkZXN0cm95
KCp0KTsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICBjb25zdGV4cHIgdm9pZCBvcGVy
YXRvcigpKFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGUqIHZhbHVlKSBcCi0gICAgICAgICAgICB7
IFwKLSAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmluYWw8V2ViQ29yZTo6
V0hMU0w6OkFTVDo6dHlwZT46OnZhbHVlKSBcCi0gICAgICAgICAgICAgICAgICAgIGNhbGxEZWxl
dGUodmFsdWUpOyBcCi0gICAgICAgICAgICAgICAgZWxzZSBcCi0gICAgICAgICAgICAgICAgICAg
IGNhbGxEZXN0cm95KHZhbHVlKTsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgIH07IFwKLSAg
ICB9IFwKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhw
cmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDky
YzFlMTY0MzFmMzBiZGU5NWQ5ZGU1MTExNmRiOGFhNjdiNGI5NGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgRGVyZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERlcmVmZXJlbmNlRXhw
cmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHBv
aW50ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RGVyZWZlcmVuY2Up
Ci0gICAgICAgICwgbV9wb2ludGVyKFdURk1vdmUocG9pbnRlcikpCi0gICAgewotICAgIH0KLQot
ICAgIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBEZXJlZmVyZW5j
ZUV4cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcG9pbnRlcjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKERlcmVmZXJl
bmNlRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSkKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2ViZmQ5ZTg0ZjMyOTgzMDZkMTUwOTQ0ZmJmZmY3OGE1
NTkzYWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBEb1doaWxl
TG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIERvV2hpbGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRp
b25hbCkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQot
ICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIG1fY29uZGl0aW9uYWwo
V1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgewotICAgIH0KLQotICAgIH5Eb1doaWxlTG9vcCgp
ID0gZGVmYXVsdDsKLQotICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxl
dGU7Ci0gICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OwotCi0gICAgU3Rh
dGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0gICAgRXhwcmVzc2lvbiYgY29uZGl0
aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVl
UmVmPFN0YXRlbWVudD4gbV9ib2R5OwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRp
dGlvbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNkZmI0MjIzMDQ1ZmUwMmY5NmM5MGI4Yzc1N2U5YjNiNjRiYjc1NjYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBEb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
RG90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGJhc2UsIFN0cmluZyYmIGZpZWxkTmFtZSkKLSAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkKLSAgICAgICAgLCBt
X2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCi0gICAgewotICAgICAgICBVTlVTRURfUEFS
QU0obV9wYWRkaW5nKTsKLSAgICB9Ci0KLSAgICB+RG90RXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
LQotICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAg
IERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcm
IGZpZWxkTmFtZSgpIHsgcmV0dXJuIG1fZmllbGROYW1lOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3Ry
aW5nIG1fZmllbGROYW1lOwotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBmb3IgcmVwbGFj
ZVdpdGggaW50byBhIGJpZ2dlciB0eXBlLgotICAgIGNoYXIgbV9wYWRkaW5nWzEyXTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKERv
dEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihE
b3RFeHByZXNzaW9uLCBpc0RvdEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiYTFkZDc4ODBlNWM4NmU1
NWU2ZTg3Y2U1MWI5N2RlOTA5OTc3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0
YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50IGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBlZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICA6IFN0YXRlbWVudChlZmZlY3Rm
dWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbikK
LSAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNz
aW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0
OwotCi0gICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWZm
ZWN0ZnVsRXhwcmVzc2lvbjsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50LCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSkKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzQ0NmRmMTBiNzU1ZGQ2YzYwNWIzOTY0OTgz
NjFmMTZlYzc3YmIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9p
bnRUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDxjc3Rk
aW50PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEVudHJ5UG9pbnRUeXBlIDogdWludDhfdCB7Ci0gICAg
VmVydGV4LAotICAgIEZyYWdtZW50LAotICAgIENvbXB1dGUsCi19OwotCi1BTFdBWVNfSU5MSU5F
IFN0cmluZ1ZpZXcgdG9TdHJpbmcoRW50cnlQb2ludFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVy
biAidmVydGV4IjsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAg
cmV0dXJuICJmcmFnbWVudCI7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKLSAg
ICAgICAgcmV0dXJuICJjb21wdXRlIjsKLSAgICB9Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVm
aW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmY4ZGU1YWMyM2Y0YTdh
YmMzNDVkY2U4YTUxY2VmYjY1ZjlkOTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVt
ZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4g
dHlwZSkKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uLCBs
b2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsK
LQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRpb24m
KSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZpbml0
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlOyB9Ci0KLSAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKLSAgICB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBtYWtl
VW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdC5pc05ld0VudHJ5OwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBt
ZW1iZXJCeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgYXV0byBpdGVy
YXRvciA9IG1fbWVtYmVycy5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9t
ZW1iZXJzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci0gICAgfQotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8RW51bWVyYXRpb25NZW1iZXI+PiBlbnVtZXJhdGlvbk1lbWJlcnMoKQotICAg
IHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RW51bWVyYXRpb25NZW1i
ZXI+PiByZXN1bHQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fbWVtYmVycykKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoKnBhaXIudmFsdWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBI
YXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEVudW1lcmF0aW9uTWVtYmVyPj4gbV9tZW1i
ZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVM
VF9ERUxFVEUoRW51bWVyYXRpb25EZWZpbml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1RZUEUoRW51bWVyYXRpb25EZWZpbml0aW9uLCBpc0VudW1lcmF0aW9uRGVmaW5pdGlv
bigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1i
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uTWVtYmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODg4ZjM1YTll
MGM5ZjhkNGQxN2MxOTI1NGI0YzY5ZmM2NjRiNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25z
dGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgRW51bWVyYXRpb25NZW1iZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIEVudW1lcmF0aW9uTWVtYmVyKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3Ry
aW5nJiYgbmFtZSwgaW50NjRfdCB2YWx1ZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2Nh
dGlvbikKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5FbnVtZXJhdGlvbk1lbWJlcigp
ID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKGNvbnN0IEVudW1lcmF0aW9uTWVt
YmVyJikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25NZW1iZXIm
JikgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFN0cmluZyBuYW1lKCkgeyByZXR1
cm4gbV9uYW1lOyB9Ci0gICAgaW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KLQot
cHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgU3RyaW5nIG1f
bmFtZTsKLSAgICBpbnQ2NF90IG1fdmFsdWU7Ci19OwotCi11c2luZyBFbnVtZXJhdGlvbk1lbWJl
cnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxODM0ZTk3N2FjY2U5MGFmMGYyMTk4ZjE4NWYxZjk5MjJlMTYwNDQ3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3MgRW51
bWVyYXRpb25NZW1iZXI7Ci0KLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBT
dHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0gICAgICAgICwgbV9sZWZ0KFdU
Rk1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKLQotICAg
IGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVs
ZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGF0aWMgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBTdHJp
bmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24s
IEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7Ci0gICAgICAgIEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQobG9jYXRpb24sIFdURk1vdmUobGVmdCksIFdU
Rk1vdmUocmlnaHQpKTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25EZWZpbml0aW9uID0g
JmVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25NZW1i
ZXIgPSAmZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KLQotICAgIEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRv
IHJlc3VsdCA9IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb2RlTG9jYXRpb24oKSwgU3RyaW5n
KG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7Ci0gICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9u
TWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5p
dGlvbiogZW51bWVyYXRpb25EZWZpbml0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vu
dW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24q
IGVudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9l
bnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIGVu
dW1lcmF0aW9uTWVtYmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uTWVt
YmVyOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldEVudW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9uRGVmaW5pdGlvbiYg
ZW51bWVyYXRpb25EZWZpbml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1i
ZXIpCi0gICAgewotICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICZlbnVtZXJhdGlv
bkRlZmluaXRpb247Ci0gICAgICAgIG1fZW51bWVyYXRpb25NZW1iZXIgPSAmZW51bWVyYXRpb25N
ZW1iZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2xlZnQ7Ci0gICAgU3RyaW5n
IG1fcmlnaHQ7Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBtX2VudW1lcmF0aW9uRGVmaW5p
dGlvbiB7IG51bGxwdHIgfTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlciogbV9lbnVtZXJhdGlvbk1l
bWJlciB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
REVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkxZThkYzM2YTg5NGIzOTllN2YzY2E2MzBiNjZhOGYyNDE2MGI0OTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQVNULmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXZvaWQgRXhwcmVzc2lvbjo6ZGVzdHJveShF
eHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkp
IHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBkZWxldGUg
JmRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0
PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRv
d25jYXN0PEZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24p
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhw
cmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW5k
ZXg6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5
V3JpdGU6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6VGVybmFyeToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxVbnNpZ25l
ZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToK
LSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbik7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBFeHByZXNzaW9uOjpkZXN0cnVjdChF
eHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkp
IHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGRvd25j
YXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKS5+QXNzaWdubWVudEV4cHJlc3Np
b24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFu
TGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pLn5C
b29sZWFuTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246Oktp
bmQ6OkNhbGw6Ci0gICAgICAgIGRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKS5+
Q2FsbEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpDb21tYToKLSAgICAgICAgZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9u
KS5+Q29tbWFFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PERlcmVmZXJlbmNlRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikufkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgZG93
bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKS5+RmxvYXRMaXRlcmFsKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAg
ICAgIGRvd25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+SW50ZWdlckxpdGVyYWwo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgot
ICAgICAgICBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxvZ2ljYWxF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
TG9naWNhbE5vdDoKLSAgICAgICAgZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJl
c3Npb24pLn5Mb2dpY2FsTm90RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAgZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNzaW9u
PihleHByZXNzaW9uKS5+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBkb3duY2FzdDxEb3RFeHBy
ZXNzaW9uPihleHByZXNzaW9uKS5+RG90RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAg
ICBkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikufkdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6SW5kZXg6Ci0gICAgICAgIGRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikufkluZGV4RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgZG93bmNhc3Q8UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5OgotICAg
ICAgICBkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuflRlcm5hcnlFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbD4oZXhwcmVzc2lvbikuflVuc2lnbmVkSW50ZWdlckxpdGVyYWwoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6
Ci0gICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbiku
fkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxWYXJp
YWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikuflZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBFeHByZXNzaW9uOjptYXlCZUVmZmVjdGZ1bCgpIGNv
bnN0Ci17Ci0gICAgYXV0byYgZXhwcmVzc2lvbiA9IGNvbnN0X2Nhc3Q8RXhwcmVzc2lvbiY+KCp0
aGlzKTsKLQotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
RmxvYXRMaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikucG9pbnRlcigp
Lm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6
Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
bGVmdCgpLm1heUJlRWZmZWN0ZnVsKCkgfHwgZG93bmNhc3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pLnJpZ2h0KCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PExvZ2ljYWxOb3RF
eHByZXNzaW9uPihleHByZXNzaW9uKS5vcGVyYW5kKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikubGVm
dFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
TWFrZVBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Np
b24+KGV4cHJlc3Npb24pLmxlZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikuYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCkgfHwgZG93bmNhc3Q8
SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5pbmRleEV4cHJlc3Npb24oKS5tYXlCZUVmZmVj
dGZ1bCgpOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEz
NmEwNDczNDJjNTM0ZmVkMzc2N2RmMGYxZDc1M2VlZjQ3NjhhYzMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xD
b2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNsdWRl
ICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEV4cHJlc3Npb24gewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfkV4cHJlc3Npb24oKSA9
IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLQotICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3Qgewot
ICAgICAgICBBc3NpZ25tZW50LAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgQ2Fs
bCwKLSAgICAgICAgQ29tbWEsCi0gICAgICAgIERlcmVmZXJlbmNlLAotICAgICAgICBEb3QsCi0g
ICAgICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0g
ICAgICAgIEluZGV4LAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgTG9naWNhbCwK
LSAgICAgICAgTG9naWNhbE5vdCwKLSAgICAgICAgTWFrZUFycmF5UmVmZXJlbmNlLAotICAgICAg
ICBNYWtlUG9pbnRlciwKLSAgICAgICAgUmVhZE1vZGlmeVdyaXRlLAotICAgICAgICBUZXJuYXJ5
LAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBWYXJpYWJsZVJlZmVy
ZW5jZSwKLSAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLAotICAgIH07Ci0KLSAgICBF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKLSAgICAgICAg
OiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgICAgICwgbV9raW5kKGtpbmQpCi0g
ICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koRXhwcmVzc2lvbiYpOwotICAg
IHN0YXRpYyB2b2lkIGRlc3RydWN0KEV4cHJlc3Npb24mKTsKLQotICAgIEV4cHJlc3Npb24oY29u
c3QgRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0oY29uc3QgRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24mIG9wZXJhdG9yPShFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKLQotICAgIFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIHsgcmV0dXJuIG1f
dHlwZSA/ICYqbV90eXBlIDogbnVsbHB0cjsgfQotCi0gICAgVW5uYW1lZFR5cGUmIHJlc29sdmVk
VHlwZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlKTsKLSAgICAgICAgcmV0dXJuICpt
X3R5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90eXBlID0gV1RGTW92
ZSh0eXBlKTsKLSAgICB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlvbiogbWF5YmVUeXBlQW5u
b3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUFubm90YXRpb24gPyAmKm1fdHlwZUFubm90
YXRpb24gOiBudWxscHRyOyB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlvbiYgdHlwZUFubm90
YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZUFubm90YXRpb24pOwot
ICAgICAgICByZXR1cm4gKm1fdHlwZUFubm90YXRpb247Ci0gICAgfQotCi0gICAgdm9pZCBzZXRU
eXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIHR5cGVBbm5vdGF0aW9uKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3R5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgbV90eXBlQW5ub3RhdGlv
biA9IFdURk1vdmUodHlwZUFubm90YXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgY29weVR5cGVU
byhFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
bHZlZFR5cGUgPSBjb25zdF9jYXN0PEV4cHJlc3Npb24qPih0aGlzKS0+bWF5YmVSZXNvbHZlZFR5
cGUoKSkKLSAgICAgICAgICAgIG90aGVyLnNldFR5cGUoKnJlc29sdmVkVHlwZSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBtYXlCZUVmZmVjdGZ1bCgpIGNvbnN0OwotCi0gICAgS2luZCBraW5kKCkgY29u
c3QgIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9Ci0gICAgYm9vbCBp
c0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJvb2xlYW5M
aXRlcmFsOyB9Ci0gICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkNhbGw7IH0KLSAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbW1hOyB9Ci0gICAgYm9vbCBpc0RlcmVmZXJlbmNl
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJlZmVyZW5jZTsg
fQotICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkRvdDsgfQotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsgfQotICAgIGJv
b2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRM
aXRlcmFsOyB9Ci0gICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpJbmRleDsgfQotICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wgaXNM
b2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2Fs
OyB9Ci0gICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7IH0KLSAgICBib29sIGlzTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlQXJyYXlSZWZl
cmVuY2U7IH0KLSAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQb2ludGVyOyB9Ci0gICAgYm9vbCBpc1Byb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90RXhwcmVzc2lvbigpIHx8IGlzSW5k
ZXhFeHByZXNzaW9uKCk7IH0KLSAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFkTW9kaWZ5V3JpdGU7IH0KLSAgICBi
b29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
VGVybmFyeTsgfQotICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KLSAgICBib29s
IGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFy
aWFibGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsg
fQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBD
b2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5
cGU7Ci0gICAgc3RkOjpvcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlvbjsK
LSAgICBLaW5kIG1fa2luZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
REVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJlc3Npb24pCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBc
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFs
dWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSB7IHJldHVybiBleHByZXNzaW9uLnByZWRp
Y2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGRlNDRmYzU1MGU5YmIzNmQ3MjkxYWRjZDIyYWY5NWJmOGM4NzRmZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEZhbGx0aHJvdWdoIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmFsbHRocm91Z2goQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6RmFs
bHRocm91Z2gpCi0gICAgewotICAgIH0KLQotICAgIH5GYWxsdGhyb3VnaCgpID0gZGVmYXVsdDsK
LQotICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZhbGx0aHJvdWdoJikgPSBkZWxldGU7Ci0gICAgRmFs
bHRocm91Z2goRmFsbHRocm91Z2gmJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmFsbHRo
cm91Z2gpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJv
dWdoLCBpc0ZhbGx0aHJvdWdoKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZsb2F0TGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjFm
OWQ0YjA5ZDc4YmQzMTkzNGM4OTMyZTBhZDhjZTkxMGYxZTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9h
dExpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRmxvYXRMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZsb2F0TGl0ZXJhbChDb2RlTG9jYXRpb24g
bG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtp
bmQ6OkZsb2F0TGl0ZXJhbCkKLSAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQotICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5GbG9hdExpdGVyYWwo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWwoY29uc3QgRmxvYXRMaXRlcmFsJikgPSBk
ZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsKEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0ZTsK
LSAgICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0Owot
Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGZs
b2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgRmxvYXRMaXRlcmFs
IGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEZsb2F0TGl0ZXJhbCByZXN1bHQoY29kZUxv
Y2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNsb25l
KCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNvbHZl
ZFR5cGUoKSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0PEFT
VDo6VW5uYW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVz
dWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRmxv
YXRMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgZmxvYXQgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEZsb2F0TGl0ZXJh
bCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEZsb2F0TGl0ZXJh
bCwgaXNGbG9hdExpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZsb2F0TGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM3MzA4YzAwZTc1ZjA0ZDJhNzgzYjg5MTk2OTk2NTU0MzNkNWI4MDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xO
YXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24g
bG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6RmxvYXRM
aXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBl
UmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sICJmbG9hdCJfc3RyLCBUeXBlQXJndW1lbnRzKCkp
KQotewotfQotCi1ib29sIEZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYg
dHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+KHR5
cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93
bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0aXZl
VHlwZURlY2xhcmF0aW9uLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudEZsb2F0KCkobV92YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQg
RmxvYXRMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFt
ZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCBtX3ByZWZlcnJl
ZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotRmxvYXRMaXRl
cmFsVHlwZSBGbG9hdExpdGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0gICAgRmxvYXRMaXRl
cmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7
Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICByZXN1
bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlwZSkpOwotICAgIHJl
c3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJlZigpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTRlMDg1OWI3YzA4ZjU2MjJkYTRiMGU0
ZWE3NDIxYjczNzVmNWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0
TGl0ZXJhbFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLQotY2xhc3MgRmxvYXRMaXRlcmFsVHlwZSBm
aW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGZsb2F0IHZh
bHVlKTsKLQotICAgIH5GbG9hdExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRM
aXRlcmFsVHlwZShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgRmxvYXRM
aXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0
ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0g
ICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZh
dWx0OwotCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAg
ICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBl
OyB9Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVuc2ln
bmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBGbG9h
dExpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZmxvYXQgbV92YWx1
ZTsKLSAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIgZGVw
ZW5kZW5jeSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxUeXBl
IC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Npb24K
LSAgICBSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFs
VHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEZsb2F0TGl0ZXJhbFR5
cGUsIGlzRmxvYXRMaXRlcmFsVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRm9yTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGE1NzQwZjg3
NWZmZGQ3OWVkYWU3MmFmODM1ODRhODg2MjhmZTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZvckxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZvckxvb3AoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGluaXRpYWxpemF0aW9uLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBjb25kaXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPiYmIGluY3JlbWVudCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5KQotICAgICAg
ICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Rm9yTG9vcCkKLSAgICAgICAgLCBtX2luaXRp
YWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRpb24pKQotICAgICAgICAsIG1fY29uZGl0aW9u
KFdURk1vdmUoY29uZGl0aW9uKSkKLSAgICAgICAgLCBtX2luY3JlbWVudChXVEZNb3ZlKGluY3Jl
bWVudCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgewotICAgIH0KLQot
ICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgRm9yTG9vcChjb25zdCBGb3JMb29wJikg
PSBkZWxldGU7Ci0gICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKLQotICAgIFVuaXF1
ZVJlZjxTdGF0ZW1lbnQ+JiBpbml0aWFsaXphdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbGl6YXRp
b247IH0KLSAgICBFeHByZXNzaW9uKiBjb25kaXRpb24oKSB7IHJldHVybiBtX2NvbmRpdGlvbi5n
ZXQoKTsgfQotICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJuIG1faW5jcmVtZW50
LmdldCgpOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9pbml0aWFsaXphdGlvbjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb247Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+IG1faW5jcmVtZW50OwotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1f
Ym9keTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKEZvckxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKEZvckxvb3AsIGlzRm9yTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRiYzViNjc0ZjM0ZjkxNTRiMGNhZTJlYTQyNjVhNjIyY2E3MzI5Y2QuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIEZ1bmN0aW9uQXR0cmlidXRlID0gVmFyaWFudDxOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+OwotdXNpbmcgQXR0cmlidXRlQmxvY2sgPSBWZWN0b3I8
RnVuY3Rpb25BdHRyaWJ1dGU+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xh
cmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYjI0ZDJlMjhmNjFjZmI1
YWRjOTQyZTI2ODhlMzRhNzIzNzI5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRyeVBv
aW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRl
ICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMUGFyc2luZ01vZGUuaCIKLSNpbmNs
dWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1dGVCbG9jaywgc3Rk
OjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFJlZjxVbm5hbWVkVHlw
ZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiBwYXJhbWV0ZXJz
LCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgaXNPcGVyYXRvciwg
UGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRp
b24pCi0gICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2NrKSkK
LSAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQotICAgICAgICAsIG1f
aXNPcGVyYXRvcihpc09wZXJhdG9yKQotICAgICAgICAsIG1fcGFyc2luZ01vZGUocGFyc2luZ01v
ZGUpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykp
Ci0gICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+RnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIEZ1
bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRlOwot
ICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgQXR0cmlidXRlQmxvY2smIGF0dHJpYnV0
ZUJsb2NrKCkgeyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQotICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW50cnlQb2ludFR5cGU7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBl
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0g
ICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgYm9vbCBpc0Nhc3QoKSBj
b25zdCB7IHJldHVybiBtX25hbWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9Ci0gICAgY29uc3QgVmFy
aWFibGVEZWNsYXJhdGlvbnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnM7IH0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1f
cGFyYW1ldGVyczsgfQotICAgIFNlbWFudGljKiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50
aWMuZ2V0KCk7IH0KLSAgICBib29sIGlzT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzT3Bl
cmF0b3I7IH0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLSAgICBQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2luZ01vZGU7IH0KLQotICAgIE5hbWVTcGFjZSBuYW1lU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQotICAgIHZvaWQgc2V0TmFtZVNwYWNl
KE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9uYW1lU3BhY2UgPSBuYW1lU3BhY2U7IH0KLQotcHJp
dmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgQXR0cmlidXRlQmxv
Y2sgbV9hdHRyaWJ1dGVCbG9jazsKLSAgICBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBt
X2VudHJ5UG9pbnRUeXBlOwotICAgIGJvb2wgbV9pc09wZXJhdG9yOwotICAgIFBhcnNpbmdNb2Rl
IG1fcGFyc2luZ01vZGU7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRlcnM7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotICAgIE5hbWVTcGFjZSBtX25hbWVT
cGFjZSB7IE5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9G
VU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5h
bWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAyNDhmYjVhN2E0NTRlZTUyOTcyN2JiZjI3ZGE4MTkyYWQ3NWRlMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaAor
KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmxvY2suaCIK
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgRnVu
Y3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IEZ1bmN0aW9uRGVjbGFyYXRpb24o
V1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUo
YmxvY2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlZmluaXRpb24o
KSA9IGRlZmF1bHQ7Ci0KLSAgICBGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgRnVuY3Rpb25EZWZp
bml0aW9uJikgPSBkZWxldGU7Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVmaW5p
dGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzRnVuY3Rpb25EZWZpbml0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgQmxvY2smIGJsb2NrKCkgeyByZXR1
cm4gbV9ibG9jazsgfQotCi1wcml2YXRlOgotICAgIEJsb2NrIG1fYmxvY2s7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RlVOQ1RJT05fREVDTEFSQVRJT04oRnVuY3Rpb25EZWZpbml0aW9uLCBpc0Z1bmN0aW9uRGVmaW5p
dGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkyZTFmYjYwODZkOWYwYjZlMjYxYTNmMWUzM2FlNzJhMWFlNGNhNmUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVjdEZpZWxkKQotICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
KQotICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1fc3RydWN0Rmll
bGQoKnN0cnVjdEZpZWxkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdEZpZWxkKTsKLSAg
ICB9Ci0KLSAgICB+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgCi0g
ICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0RmllbGQoKSB7IHJldHVybiBtX3N0cnVjdEZpZWxk
OyB9Ci0KLSAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gbV9iYXNlLmdldCgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKLSAgICBTdHJ1Y3R1
cmVFbGVtZW50JiBtX3N0cnVjdEZpZWxkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZSwgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk5ZDZkYTNjZDE2MDFhOGI5YTE1ZDNhYWIxNWZiZjliZmNjODJkMDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBJ
ZlN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIElmU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1l
bnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBlbHNlQm9keSkKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQotICAgICAgICAsIG1fY29uZGl0aW9u
YWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkp
Ci0gICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgSWZTdGF0ZW1lbnQoY29uc3Qg
SWZTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBJZlN0YXRlbWVudChJZlN0YXRlbWVudCYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29u
ZGl0aW9uYWw7IH0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLSAg
ICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5nZXQoKTsgfQotCi1w
cml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwotICAgIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50
PiBtX2Vsc2VCb2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJ
TkVfREVGQVVMVF9ERUxFVEUoSWZTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lmU3RhdGVtZW50KCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTc0MTVlMzFiNDM5ZjEwNzllMTg0YWRhN2UyYjcw
NDExZmMzNWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVz
c2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xD
b2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBJbmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAgICAg
OiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkluZGV4LCBXVEZNb3Zl
KGJhc2UpKQotICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCi0gICAgewotI2lmIENQ
VShBRERSRVNTMzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZGRpbmcpOwotI2VuZGlmCi0g
ICAgfQotCi0gICAgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIEluZGV4RXhw
cmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBJbmRleEV4cHJl
c3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGlu
ZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mIGluZGV4UmVmZXJlbmNlKCkgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiB0YWtlSW5kZXgoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5kZXgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1faW5kZXg7Ci0jaWYgQ1BVKEFE
RFJFU1MzMikKLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgZm9yIHJlcGxhY2VXaXRoIGlu
dG8gYSBiaWdnZXIgdHlwZS4KLSAgICBjaGFyIG1fcGFkZGluZ1s0XTsKLSNlbmRpZgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoSW5k
ZXhFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04o
SW5kZXhFeHByZXNzaW9uLCBpc0luZGV4RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1YTcyN2E4ZjliODBhOTk5MjI3ZGFlNDExZTFlMzg4YzBhNzI3
MTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotaW50NjRfdCBJbnRl
Z2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdAotewotICAgIGF1dG8mIHR5
cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihtX3R5cGUucmVzb2x2ZWRUeXBl
KCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgcmV0dXJu
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKCkobV92YWx1ZSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2NzA5ZmVkZGQxM2RlYTUxNDg1OThmMjlhMDU3MDRiOTkyYmYyZGViLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEludGVnZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIElu
dGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQotICAgICAgICAsIG1f
dHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxp
dGVyYWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJh
bChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbCYgb3Bl
cmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVy
YWwmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2Vy
TGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBpbnQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCks
IG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNsb25lKCk7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkK
LSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1l
ZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0KTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBpbnQ2NF90IHZhbHVlRm9yU2VsZWN0
ZWRUeXBlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlIG1fdHlw
ZTsKLSAgICBpbnQgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVy
YWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTY2
NzUwYjY0M2ViNjYyMDZhMzdlMjk5MDFhNDY3YzJiYmRlN2RlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLUludGVnZXJMaXRlcmFsVHlwZTo6SW50
ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAgIDog
UmVzb2x2YWJsZVR5cGUoS2luZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgLCBtX3ZhbHVlKHZhbHVl
KQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwg
ImludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQotewotfQotCi1ib29sIEludGVnZXJMaXRlcmFs
VHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAotewotICAgIGlmICghaXM8
TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hbWVk
VHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
JiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNh
blJlcHJlc2VudEludGVnZXIoKShtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNp
b25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBpZiAo
bWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLUludGVnZXJMaXRlcmFsVHlwZSBJbnRlZ2VyTGl0ZXJhbFR5
cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgcmVzdWx0KG1fcHJl
ZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgIGlmIChhdXRvKiB0eXBl
ID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJlc29sdmUoY29uc3RfY2Fz
dDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQubV9wcmVmZXJyZWRUeXBl
ID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NGFlZGY0NzZiMzJiN2ZiZjc5ZThjMGQ3ZGM0N2M4MzE5MWI2MGFkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxl
VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBU
eXBlUmVmZXJlbmNlOwotCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMg
UmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGludCB2YWx1ZSk7Ci0KLSAgICB+
SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWxUeXBl
KGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFs
VHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVy
YWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0g
ICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBlJiYpID0g
ZGVmYXVsdDsKLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQot
ICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5
cGU7IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5z
aWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIElu
dGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGludCBtX3Zh
bHVlOwotICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBk
ZXBlbmRlbmN5IGJldHdlZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5
cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lv
bgotICAgIFJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbnRlZ2VyTGl0
ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShJbnRlZ2VyTGl0
ZXJhbFR5cGUsIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGMxZTkzMTEwZmUyYjUyYmU4YzZjYTFmMWM0Njk0YjQ0Nzc3ODBh
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBBbmQsCi0gICAgICAgIE9yCi0gICAg
fTsKLQotICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVHlwZSB0
eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpMb2dpY2FsKQot
ICAgICAgICAsIG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQot
ICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewotICAgIH0KLQotICAgIH5M
b2dpY2FsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIExvZ2ljYWxFeHByZXNzaW9uKGNv
bnN0IExvZ2ljYWxFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTG9naWNhbEV4cHJlc3Npb24o
TG9naWNhbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9s
ZWZ0OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVm
dDsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9yaWdodDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxFeHByZXNz
aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbEV4
cHJlc3Npb24sIGlzTG9naWNhbEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2VkYzM2MzUyYmVhYjA0OGEzOGU5OGU3M2RjNTY5MTc1
YmZjNmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHBy
ZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIEtpbmQ6OkxvZ2ljYWxOb3QpCi0gICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3BlcmFu
ZCkpCi0gICAgewotICAgIH0KLQotICAgIH5Mb2dpY2FsTm90RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKLQotICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RFeHByZXNzaW9u
JikgPSBkZWxldGU7Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5vdEV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgb3BlcmFuZCgpIHsgcmV0dXJuIG1f
b3BlcmFuZDsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX29wZXJh
bmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShMb2dpY2FsTm90RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9uLCBpc0xvZ2ljYWxOb3RFeHByZXNz
aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNjNWQ2NGNiOTU3MzE2MDIwOTU3MTdiMmJhZmM2NGJlN2UzNjA5MjQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
ZGRyZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJl
c3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2NhcGVN
b2RlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VBcnJheVJlZmVy
ZW5jZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAg
ICwgbV9hZGRyZXNzRXNjYXBlTW9kZShhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYg
bGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLQotICAgIGJvb2wgbWlnaHRFc2Nh
cGUoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVN
b2RlOjpFc2NhcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1f
bGVmdFZhbHVlOwotICAgIEFkZHJlc3NFc2NhcGVNb2RlIG1fYWRkcmVzc0VzY2FwZU1vZGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhYTI3YzIxYzUwNWEwMzY4M2NiZTk1NjA0NjIzMjk1MWViMTEyZmZj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRy
ZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVm
dFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlUG9pbnRlcikKLSAgICAgICAgLCBtX2xlZnRW
YWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9hZGRyZXNzRXNjYXBlTW9kZShh
ZGRyZXNzRXNjYXBlTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfk1ha2VQb2ludGVyRXhwcmVz
c2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtl
UG9pbnRlckV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24o
TWFrZVBvaW50ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGxl
ZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0KLSAgICBib29sIG1pZ2h0RXNjYXBl
KCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzRXNjYXBlTW9kZSA9PSBBZGRyZXNzRXNjYXBlTW9k
ZTo6RXNjYXBlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xl
ZnRWYWx1ZTsKLSAgICBBZGRyZXNzRXNjYXBlTW9kZSBtX2FkZHJlc3NFc2NhcGVNb2RlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
TWFrZVBvaW50ZXJFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhwcmVzc2lvbigp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3BhY2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0NmZkZmEyZDI1ZDNhODdmNTJhZWQyODFiZWU2
MGQxMjlkNDNiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3BhY2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLy8gRGlmZmVyZW50IHNo
YWRlciBtb2R1bGVzIG9wZXJhdGUgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCi0vLyBUaGlzIG1l
YW5zIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgc2ln
bmF0dXJlcywgYXMgbG9uZyBhcyB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgbW9kdWxlcy4KLWVudW0g
Y2xhc3MgTmFtZVNwYWNlIDogdWludDhfdCB7Ci0gICAgU3RhbmRhcmRMaWJyYXJ5ID0gMCwKLSAg
ICBOYW1lU3BhY2UxID0gMSwKLSAgICBOYW1lU3BhY2UyID0gMgotfTsKLQotY29uc3RleHByIHVu
c2lnbmVkIG5hbWVTcGFjZUNvdW50ID0gMzsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGJiMTFmOGJhMzA2Njg4OTQ2Y2I3ZjJmMTk3YjU5NmI1Y2IzOTZjMjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQotcHVi
bGljOgotICAgIE5hbWVkVHlwZShLaW5kIGtpbmQsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3Ry
aW5nJiYgbmFtZSkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwgbV9jb2RlTG9jYXRp
b24obG9jYXRpb24pCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgewotICAg
IH0KLQotICAgIE5hbWVkVHlwZShjb25zdCBOYW1lZFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBOYW1l
ZFR5cGUoTmFtZWRUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRl
Q29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxv
Y2F0aW9uOyB9Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAg
IE5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQotICAg
IHZvaWQgc2V0TmFtZVNwYWNlKE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9uYW1lU3BhY2UgPSBu
YW1lU3BhY2U7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBUeXBl
JiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2RlTG9jYXRpb24gbV9j
b2RlTG9jYXRpb247Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBOYW1lU3BhY2UgbV9uYW1lU3Bh
Y2UgeyBOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTmFtZWRUeXBlKQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmFtZWRUeXBlLCBpc05hbWVkVHlwZSgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
ZGQ5YWFmNWJkZTJjYTdhOGUzOWM1NWNjNTg0ODBiM2NhNDI4YjdlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICAgICAg
OiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNsYXJhdGlvbikpCi0gICAg
ewotICAgIH0KLQotICAgIHZpcnR1YWwgfk5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBpc05h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04oTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiwgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRhMTYyYjc4MTdkNDczYTgy
ZGQ5NzkzYTBiZTkxMjMwYTM0ZWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiBm
aW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAgICA6
IE5hbWVkVHlwZShLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGxvY2F0aW9uLCBXVEZNb3Zl
KG5hbWUpKQotICAgICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMp
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYpID0gZGVsZXRlOwotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVjbGFy
YXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygp
IHsgcmV0dXJuIG1fdHlwZUFyZ3VtZW50czsgfQotCi0gICAgYm9vbCBpc0ludCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbnQ7IH0KLSAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9p
c051bWJlcjsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNGbG9h
dGluZzsgfQotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2lzQXRvbWljOyB9
Ci0gICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNWZWN0b3I7IH0KLSAgICBi
b29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9pc01hdHJpeDsgfQotICAgIGJvb2wgaXNP
cGFxdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc09wYXF1ZVR5cGU7IH0KLSAgICBib29sIGlz
VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlOyB9Ci0gICAgYm9vbCBpc1RleHR1
cmVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlQXJyYXk7IH0KLSAgICBib29sIGlz
RGVwdGhUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoVGV4dHVyZTsgfQotICAgIGJv
b2wgaXNXcml0YWJsZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzV3JpdGFibGVUZXh0dXJl
OyB9Ci0gICAgYm9vbCBpc0N1YmVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1YmVUZXh0
dXJlOyB9Ci0gICAgdWludCB0ZXh0dXJlRGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlRGltZW5zaW9uOyB9Ci0gICAgYm9vbCBpc1NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
aWduZWQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4mIGNhblJlcHJlc2Vu
dEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEludGVnZXI7IH0KLSAgICBj
b25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYgY2FuUmVwcmVzZW50VW5zaWduZWRJ
bnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7IH0K
LSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYgY2FuUmVwcmVzZW50RmxvYXQo
KSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEZsb2F0OyB9Ci0gICAgY29uc3Qgc3RkOjpm
dW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiYgc3VjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9z
dWNjZXNzb3I7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50KT4mIGZvcm1h
dFZhbHVlRnJvbUludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZhbHVlRnJvbUludGVn
ZXI7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiYgZm9ybWF0
VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXRWYWx1ZUZy
b21VbnNpZ25lZEludGVnZXI7IH0KLSAgICB2b2lkIGl0ZXJhdGVBbGxWYWx1ZXMoY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsgbV9pdGVyYXRlQWxsVmFsdWVz
KGNhbGxiYWNrKTsgfQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtYXRyaXhEaW1lbnNpb24odW5z
aWduZWQgdHlwZUFyZ3VtZW50SW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRyaXgo
KSk7Ci0gICAgICAgIEFTU0VSVCh0eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5cGVBcmd1bWVudHMo
KVt0eXBlQXJndW1lbnRJbmRleF0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICB9Ci1w
dWJsaWM6Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRyaXhSb3dzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtYXRyaXhEaW1lbnNpb24oMik7Ci0gICAgfQotICAgIHVuc2lnbmVkIG51bWJlck9m
TWF0cml4Q29sdW1ucygpCi0gICAgewotICAgICAgICByZXR1cm4gbWF0cml4RGltZW5zaW9uKDEp
OwotICAgIH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHZlY3RvclR5cGVBcmd1bWVudCgpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaXNWZWN0b3IoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxS
ZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4odHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCB2ZWN0b3JTaXplKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZlY3Rvcigp
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPih0eXBl
QXJndW1lbnRzKClbMV0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICB9Ci0KLSAgICBU
eXBlUmVmZXJlbmNlJiBtYXRyaXhUeXBlQXJndW1lbnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGlzTWF0cml4KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVy
ZW5jZT4+KHR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRJc0ludCgp
IHsgbV9pc0ludCA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzTnVtYmVyKCkgeyBtX2lzTnVtYmVy
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNGbG9hdGluZygpIHsgbV9pc0Zsb2F0aW5nID0gdHJ1
ZTsgfQotICAgIHZvaWQgc2V0SXNBdG9taWMoKSB7IG1faXNBdG9taWMgPSB0cnVlOyB9Ci0gICAg
dm9pZCBzZXRJc1ZlY3RvcigpIHsgbV9pc1ZlY3RvciA9IHRydWU7IH0KLSAgICB2b2lkIHNldElz
TWF0cml4KCkgeyBtX2lzTWF0cml4ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNPcGFxdWVUeXBl
KCkgeyBtX2lzT3BhcXVlVHlwZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzVGV4dHVyZSgpIHsg
bV9pc1RleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1RleHR1cmVBcnJheSgpIHsgbV9p
c1RleHR1cmVBcnJheSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzRGVwdGhUZXh0dXJlKCkgeyBt
X2lzRGVwdGhUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNXcml0YWJsZVRleHR1cmUo
KSB7IG1faXNXcml0YWJsZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0N1YmVUZXh0
dXJlKCkgeyBtX2lzQ3ViZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRUZXh0dXJlRGlt
ZW5zaW9uKHVpbnQgdGV4dHVyZURpbWVuc2lvbikgeyBtX3RleHR1cmVEaW1lbnNpb24gPSB0ZXh0
dXJlRGltZW5zaW9uOyB9Ci0gICAgdm9pZCBzZXRJc1NpZ25lZCgpIHsgbV9pc1NpZ25lZCA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldENhblJlcHJlc2VudEludGVnZXIoc3RkOjpmdW5jdGlvbjxib29s
KGludCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50SW50ZWdlciA9IFdURk1vdmUo
Y2FuUmVwcmVzZW50KTsgfQotICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2Vy
KHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVw
cmVzZW50VW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNlbnQpOyB9Ci0gICAgdm9p
ZCBzZXRDYW5SZXByZXNlbnRGbG9hdChzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYmIGNhblJl
cHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEZsb2F0ID0gV1RGTW92ZShjYW5SZXByZXNlbnQpOyB9
Ci0gICAgdm9pZCBzZXRTdWNjZXNzb3Ioc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiYm
IHN1Y2Nlc3NvcikgeyBtX3N1Y2Nlc3NvciA9IFdURk1vdmUoc3VjY2Vzc29yKTsgfQotICAgIHZv
aWQgc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50KT4m
JiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXIgPSBXVEZNb3ZlKGZvcm1h
dFZhbHVlKTsgfQotICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKHN0
ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3JtYXRW
YWx1ZUZyb21VbnNpZ25lZEludGVnZXIgPSBXVEZNb3ZlKGZvcm1hdFZhbHVlKTsgfQotICAgIHZv
aWQgc2V0SXRlcmF0ZUFsbFZhbHVlcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sKGludDY0X3QpPiYpPiYmIGl0ZXJhdGVBbGxWYWx1ZXMpIHsgbV9pdGVyYXRlQWxs
VmFsdWVzID0gV1RGTW92ZShpdGVyYXRlQWxsVmFsdWVzKTsgfQotCi1wcml2YXRlOgotICAgIFR5
cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQp
PiBtX2NhblJlcHJlc2VudEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKHVuc2lnbmVk
KT4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29s
KGZsb2F0KT4gbV9jYW5SZXByZXNlbnRGbG9hdDsKLSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3Qo
aW50NjRfdCk+IG1fc3VjY2Vzc29yOwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiBt
X2Zvcm1hdFZhbHVlRnJvbUludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVuc2ln
bmVkKT4gbV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlv
bjx2b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4gbV9pdGVyYXRlQWxs
VmFsdWVzOwotICAgIHVpbnQgbV90ZXh0dXJlRGltZW5zaW9uIHsgMCB9OwotICAgIGJvb2wgbV9p
c0ludCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTnVtYmVyIHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNGbG9hdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQXRvbWljIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faXNWZWN0b3IgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc01hdHJpeCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX2lzT3BhcXVlVHlwZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
VGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzVGV4dHVyZUFycmF5IHsgZmFsc2UgfTsK
LSAgICBib29sIG1faXNEZXB0aFRleHR1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1dyaXRh
YmxlVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ3ViZVRleHR1cmUgeyBmYWxzZSB9
OwotICAgIGJvb2wgbV9pc1NpZ25lZCB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShOYXRpdmVU
eXBlRGVjbGFyYXRpb24sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQ5OThiMTQ0
YzFjNGIxNjRiNGVmMmM5YzkwYWEyY2U0ZDA4NTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUgOiBwdWJsaWMgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0LCB1bnNpZ25lZCBkZXB0aCkKLSAgICAgICAgOiBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUobG9j
YXRpb24pCi0gICAgICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAgICAgLCBtX2hlaWdodChoZWln
aHQpCi0gICAgICAgICwgbV9kZXB0aChkZXB0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB+TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OwotCi0gICAgTnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlKGNvbnN0IE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYp
ID0gZGVsZXRlOwotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9oZWlnaHQ7IH0KLSAgICB1bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVw
dGg7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3dpZHRoOwotICAgIHVuc2lnbmVkIG1f
aGVpZ2h0OwotICAgIHVuc2lnbmVkIG1fZGVwdGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRl
clR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVmYmRiNmFiNGE2ZmI4M2Jl
NWQzNGMyZDg4OGMwMTUwOThlMjVkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xQb2ludGVyVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2ludGVyVHlw
ZSk7Ci0gICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7Ci0KLSAgICBQb2ludGVyVHlwZShD
b2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5h
bWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1Nw
YWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKLSAgICB7Ci0gICAgfQot
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQb2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBl
bGVtZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQ
b2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIH5Qb2ludGVyVHlwZSgpID0g
ZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMtPkJhc2U6Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNo
KCJwb2ludGVyIik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaW50ZXJU
eXBlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2UoKSA9
PSBvdGhlci5hZGRyZXNzU3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90aGVyLmVsZW1lbnRU
eXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJpbmcoKSwgJyonKTsKLSAg
ICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShQb2ludGVyVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBF
KFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWEyM2QwYTM1NmNiNzM0OGI0MzYwM2U3NzVi
YjM4NzJjNjc3NzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0
aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXByb3RlY3RlZDoKLSAg
ICB+UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5k
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIGtpbmQpCi0gICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCi0gICAgewotICAg
IH0KLQotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGJhc2Uo
KSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mIGJhc2VSZWZl
cmVuY2UoKSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFr
ZUJhc2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fYmFzZSk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDQ4NzdkZjIyZWQyMTZkNmUwZjAzZjQ3ZjRjZjFmNDg4MzdiOWM4Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIFF1YWxpZmllciA6IHVp
bnQ4X3QgewotICAgIE5vaW50ZXJwb2xhdGlvbiwKLSAgICBOb3BlcnNwZWN0aXZlLAotICAgIFVu
aWZvcm0sCi0gICAgQ2VudHJvaWQsCi0gICAgU2FtcGxlCi19OwotCi11c2luZyBRdWFsaWZpZXJz
ID0gVmVjdG9yPFF1YWxpZmllcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEw
M2VjOGQxODBjOGI1OWNkMWRiMTRjZjVkNTY3YWIwNTE2OWU1Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJs
ZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLyoKLSAqICAxLiBFdmFs
dWF0ZSBtX2xlZnRWYWx1ZQotICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFsdWUK
LSAqICAzLiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgotICogIDQuIEFzc2lnbiB0aGUg
cmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xlZnRW
YWx1ZQotICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgotICogIDcuIFJldHVybiB0
aGUgcmVzdWx0Ci0gKi8KLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbiwgS2luZDo6UmVhZE1vZGlmeVdyaXRlKQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1v
dmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX29sZFZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFi
bGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpKQotICAgICAgICAsIG1fbmV3VmFsdWUobWFrZVVuaXF1ZVJlZjxW
YXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCi0gICAgewotICAgIH0KLQotICAgIFJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbGVmdFZhbHVlLCBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gb2xkVmFsdWUsIFVu
aXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYWx1ZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9kaWZ5V3JpdGUpCi0gICAgICAgICwgbV9sZWZ0VmFs
dWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUoV1RGTW92ZShvbGRW
YWx1ZSkpCi0gICAgICAgICwgbV9uZXdWYWx1ZShXVEZNb3ZlKG5ld1ZhbHVlKSkKLSAgICB7Ci0g
ICAgfQotCi0KLSAgICB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQot
ICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHNldE5ld1ZhbHVlRXhw
cmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJlc3Npb24pCi0gICAg
ewotICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3VmFsdWVFeHByZXNz
aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24oVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIG1fcmVzdWx0RXhw
cmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgVW5pcXVl
UmVmPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZl
cmVuY2U6OndyYXAobV9vbGRWYWx1ZSkpOwotICAgIH0KLQotICAgIFVuaXF1ZVJlZjxWYXJpYWJs
ZVJlZmVyZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFw
KG1fbmV3VmFsdWUpKTsKLSAgICB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJl
dHVybiBtX2xlZnRWYWx1ZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgbGVmdFZhbHVl
UmVmZXJlbmNlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLSAgICBWYXJpYWJsZURlY2xhcmF0
aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KLSAgICBWYXJpYWJsZURlY2xh
cmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAgICBFeHByZXNzaW9u
JiBuZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbmV3VmFsdWVF
eHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAgICB9
Ci0gICAgRXhwcmVzc2lvbiYgcmVzdWx0RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9yZXN1bHRFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX3Jlc3VsdEV4cHJlc3Np
b247Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlTGVmdFZhbHVlKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX2xlZnRWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNs
YXJhdGlvbj4gdGFrZU9sZFZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX29sZFZhbHVlKTsgfQot
ICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0YWtlTmV3VmFsdWUoKSB7IHJldHVy
biBXVEZNb3ZlKG1fbmV3VmFsdWUpOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VO
ZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBXVEZNb3Zl
KG1fbmV3VmFsdWVFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX25ld1ZhbHVlRXhwcmVz
c2lvbi5yZXNldCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gdGFrZVJlc3VsdEV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbi52YWx1ZSgpKTsKLSAgICAgICAg
bV9yZXN1bHRFeHByZXNzaW9uLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnRWYWx1ZTsKLSAg
ICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9vbGRWYWx1ZTsKLSAgICBVbmlxdWVS
ZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9uZXdWYWx1ZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFVu
aXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247Ci0gICAgc3RkOjpvcHRp
b25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lvbjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVy
ZW5jZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhY2QzMTVjMWMyMTQz
NTc5ZWE1ZDBkMmUwMjViNWVjNGVmMGU2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZWZlcmVuY2VUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVubmFtZWRU
eXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShSZWZlcmVuY2VUeXBlKTsKLQotcHJvdGVjdGVkOgotICAgIH5SZWZlcmVuY2VUeXBlKCkg
PSBkZWZhdWx0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24g
bG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxl
bWVudFR5cGUsIEtpbmQga2luZCkKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwga2lu
ZCkKLSAgICAgICAgLCBtX2FkZHJlc3NTcGFjZShhZGRyZXNzU3BhY2UpCi0gICAgICAgICwgbV9l
bGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKLSAgICB7Ci0gICAgfQotCi0KLXB1Ymxp
YzoKLSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRy
ZXNzU3BhY2U7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkg
eyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gfm1fZWxlbWVudFR5cGUtPmhhc2goKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQWRkcmVzc1NwYWNlIG1fYWRkcmVzc1NwYWNlOwotICAgIFJlZjxVbm5hbWVk
VHlwZT4gbV9lbGVtZW50VHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJlZmVyZW5jZVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfVFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTE0ZmJjYzhlN2JkMDFmM2RmMDUxM2M0MDNlZGJm
Y2JjYTZmN2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRo
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBOZXcsIHR5cGVuYW1lIE9sZCwgdHlwZW5hbWUgLi4uQXJncz4KLUFMV0FZU19JTkxJTkUg
TmV3KiByZXBsYWNlV2l0aChPbGQmIG9sZCwgQXJncyYmLi4uIGFyZ3MpCi17Ci0gICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoTmV3KSA8PSBzaXplb2YoT2xkKSwgIlRoaXMgaXMgbmVlZGVkIGZvciB0
aGUgcGxhY2VtZW50IG5ldyBiZWxvdyB0byBub3Qgb3ZlcndyaXRlIHVub3duZWQgbWVtb3J5LiIp
OwotICAgIHZvaWQqIGxvY2F0aW9uID0gJm9sZDsKLSAgICBPbGQ6OmRlc3RydWN0KG9sZCk7Ci0g
ICAgcmV0dXJuIG5ldyAobG9jYXRpb24pIE5ldyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6V0hMU0w6OkFTVAotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMmExZDdlY2NlZTEyNDE4ODU1ZGU1MTQ3NGZlZTlh
MjRiYjYxNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5
cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMVHlw
ZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb2x2YWJsZVR5cGUg
OiBwdWJsaWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3Rl
ZDoKLSAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBSZXNv
bHZhYmxlVHlwZShLaW5kIGtpbmQpCi0gICAgICAgIDogVHlwZShraW5kKQotICAgIHsgfQotCi0K
LSAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwotICAg
IFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFJlc29s
dmFibGVUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKLSAg
ICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsK
LQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQg
Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIGNvbnN0IFVu
bmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRU
eXBlID8gJiptX3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlw
ZSYgcmVzb2x2ZWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVk
VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgVW5u
YW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAm
Km1fcmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQotICAgIFVubmFtZWRUeXBlJiByZXNvbHZlZFR5
cGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0
dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc29sdmUoUmVmPFVubmFt
ZWRUeXBlPiB0eXBlKQotICAgIHsKLSAgICAgICAgbV9yZXNvbHZlZFR5cGUgPSBXVEZNb3ZlKHR5
cGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fcmVzb2x2
ZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoUmVzb2x2YWJsZVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfVFlQRShSZXNvbHZhYmxlVHlwZSwgaXNSZXNvbHZhYmxlVHlwZSgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ2ZTdhMmJmZjhiMTRmZGI2MDhhYTQ0N2Rh
YzhiYjdmOGM3MjExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NT
cGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZl
clR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xS
ZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIE1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc6
Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAg
ICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1bm5hbWVk
VHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSA9
PSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50IHx8IHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkg
PT0gQWRkcmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzPFR5cGVS
ZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5j
ZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGlm
IChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLmlzVGV4dHVyZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlRleHR1cmU6Ci0gICAgICAgIGlm
IChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmFkZHJlc3NTcGFjZSgpID09IEFkZHJl
c3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoaXM8VHlwZVJlZmVyZW5j
ZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93
bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgaWYgKGlzPE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6QnVmZmVyOgotICAgICAgICBpZiAoaXM8UmVm
ZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJl
ZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3BhY2U6
OkNvbnN0YW50OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBNb2RlOjpTYW1wbGVy
OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5zYW1wbGVy
VHlwZSgpKTsKLSAgICB9Ci19Ci0KLWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAotewotICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc291cmNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjhkNWVkMzdlOGFiOTdmZjdhNTkwMmQ3ZjFlYWViZmE2NTVlYWMxMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRl
ICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIFJlc291cmNlU2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIE1vZGUgOiB1
aW50OF90IHsKLSAgICAgICAgVW5vcmRlcmVkQWNjZXNzVmlldywKLSAgICAgICAgVGV4dHVyZSwK
LSAgICAgICAgQnVmZmVyLAotICAgICAgICBTYW1wbGVyCi0gICAgfTsKLQotICAgIFJlc291cmNl
U2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBNb2RlIG1vZGUsIHVuc2lnbmVkIGluZGV4
LCB1bnNpZ25lZCBzcGFjZSkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0gICAg
ICAgICwgbV9tb2RlKG1vZGUpCi0gICAgICAgICwgbV9pbmRleChpbmRleCkKLSAgICAgICAgLCBt
X3NwYWNlKHNwYWNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5SZXNvdXJjZVNlbWFu
dGljKCkgPSBkZWZhdWx0OwotCi0gICAgUmVzb3VyY2VTZW1hbnRpYyhjb25zdCBSZXNvdXJjZVNl
bWFudGljJikgPSBkZWxldGU7Ci0gICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNvdXJjZVNlbWFudGlj
JiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZ1ZpZXcgdG9TdHJpbmcoKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICAgICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NW
aWV3OgotICAgICAgICAgICAgcmV0dXJuICJVbm9yZGVyZWRBY2Nlc3NWaWV3IjsKLSAgICAgICAg
Y2FzZSBNb2RlOjpUZXh0dXJlOgotICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlIjsKLSAgICAg
ICAgY2FzZSBNb2RlOjpCdWZmZXI6Ci0gICAgICAgICAgICByZXR1cm4gIkJ1ZmZlciI7Ci0gICAg
ICAgIGNhc2UgTW9kZTo6U2FtcGxlcjoKLSAgICAgICAgICAgIHJldHVybiAiU2FtcGxlciI7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7
IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICB1
bnNpZ25lZCBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX21vZGUgPT0gb3RoZXIubV9tb2RlICYmIG1faW5kZXggPT0gb3RoZXIubV9p
bmRleCAmJiBtX3NwYWNlID09IG90aGVyLm1fc3BhY2U7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRh
YmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVy
SXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25z
dCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBNb2RlIG1fbW9kZTsKLSAgICB1bnNpZ25lZCBt
X2luZGV4OwotICAgIHVuc2lnbmVkIG1fc3BhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiNTZiYzgwZjgwNTA5Yjg4ZjE0YzZiZWE3
OWY5Mjg2ZWRhNDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFJldHVybiBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFJldHVybihDb2RlTG9jYXRpb24gbG9j
YXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHZhbHVlKQotICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQotICAgICAgICAsIG1fdmFsdWUoV1RGTW92
ZSh2YWx1ZSkpCi0gICAgewotICAgIH0KLQotICAgIH5SZXR1cm4oKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBSZXR1cm4oY29uc3QgUmV0dXJuJikgPSBkZWxldGU7Ci0gICAgUmV0dXJuKFJldHVybiYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWUuZ2V0
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92YWx1
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKFJldHVybikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
UmV0dXJuLCBpc1JldHVybigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhN2JhNjJiZTBkNTdm
YjRhYzE5N2Q3MmQ0MDQwODZkNTI1NzJlNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIK
LSNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIFNlbWFudGljID0gVmFyaWFudDxCdWlsdEluU2VtYW50aWMs
IFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgU3RhZ2VJ
bk91dFNlbWFudGljPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE0ZjAxNTM5NGUxZjY2ZWE2NzQ1NzQxZDcwNzk5ZDZhMmQ1YmVhNGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZl
VHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVUeXBl
KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0
Ci17Ci0gICAgaWYgKCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0
eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpLmlzTnVtYmVyKCk7Ci19Ci0KLWJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1E
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJ
bnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYzOWVj
MTk2Zjg5OTVjMjA5NWVkMWUyYzA0Zjg4ZmU4OGQxYzhmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMgOiBwdWJsaWMg
QmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQot
ICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAg
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
YyhTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmJikgPSBkZWZhdWx0OwotCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUo
Y29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJl
Y3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNl
bWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkYzY0OTY1YjMyMzE2
NTUwOWVjNjFjY2UyZGI0YTk2ODBlYmQzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YWdl
SW5PdXRTZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotYm9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QKLXsK
LSAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmICghaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVu
Y2U+KHVubmFtZWRUeXBlKTsKLSAgICBhdXRvJiByZXNvbHZlZFR5cGUgPSB0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpOwotICAgIGlmIChpczxFbnVtZXJhdGlvbkRlZmluaXRpb24+KHJlc29s
dmVkVHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0
byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9u
Pih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
VmVjdG9yKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTWF0cml4KCk7Ci19
Ci0KLWJvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGly
ZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICgq
ZW50cnlQb2ludFR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAg
ICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OwotICAg
IGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTIzY2FhNGQ3ZTIxMmY2MmEwYzUzNmE3ZTNhYzlm
NGExMzc5NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNl
bWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIDog
cHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgU3RhZ2VJbk91dFNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWdu
ZWQgaW5kZXgpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgICAgICAsIG1f
aW5kZXgoaW5kZXgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflN0YWdlSW5PdXRTZW1h
bnRpYygpID0gZGVmYXVsdDsKLQotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhjb25zdCBTdGFnZUlu
T3V0U2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBTdGFnZUluT3V0U2VtYW50aWMoU3RhZ2VJbk91
dFNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0YWdlSW5PdXRT
ZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBv
dGhlci5tX2luZGV4OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdGFnZUlu
T3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5h
bWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQotcHJp
dmF0ZToKLSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhkY2ZkNzYzZmExY2U4OGNjZTI0MDgw
MDU3NjE3OGI1NzI1NjYwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0
ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIGVudW0g
Y2xhc3MgS2luZCA6IHVpbnQ4X3QgewotICAgICAgICBCbG9jaywKLSAgICAgICAgQnJlYWssCi0g
ICAgICAgIENvbnRpbnVlLAotICAgICAgICBEb1doaWxlTG9vcCwKLSAgICAgICAgRWZmZWN0ZnVs
RXhwcmVzc2lvbiwKLSAgICAgICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZvckxvb3AsCi0gICAg
ICAgIElmLAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIFN0YXRlbWVudExpc3QsCi0gICAgICAg
IFN3aXRjaENhc2UsCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlv
bnMsCi0gICAgICAgIFdoaWxlTG9vcCwKLSAgICB9OwotICAgIFN0YXRlbWVudChDb2RlTG9jYXRp
b24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29k
ZUxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQotICAgIHsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KFN0YXRlbWVudCYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0
KFN0YXRlbWVudCYpOwotCi0gICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVudCYpID0gZGVsZXRl
OwotICAgIFN0YXRlbWVudChTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0gICAgS2luZCBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0KLSAgICBib29sIGlzQmxvY2soKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6QmxvY2s7IH0KLSAgICBib29sIGlzQnJlYWsoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QnJlYWs7IH0KLSAgICBib29sIGlzQ29udGludWUo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29udGludWU7IH0KLSAgICBib29sIGlz
RG9XaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RG9XaGlsZUxvb3A7
IH0KLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOyB9Ci0gICAgYm9vbCBpc0Zh
bGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZhbGx0aHJvdWdoOyB9
Ci0gICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Rm9y
TG9vcDsgfQotICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpJZjsgfQotICAgIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6UmV0dXJuOyB9Ci0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6U3RhdGVtZW50TGlzdDsgfQotICAgIGJvb2wgaXNTd2l0Y2hD
YXNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3aXRjaENhc2U7IH0KLSAgICBi
b29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3
aXRjaDsgfQotICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczsgfQotICAgIGJv
b2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6V2hpbGVMb29w
OyB9Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAg
IENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBLaW5kIG1fa2luZDsKLX07Ci0KLXVz
aW5nIFN0YXRlbWVudHMgPSBWZWN0b3I8VW5pcXVlUmVmPFN0YXRlbWVudD4+OwotCi19Ci0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3RhdGVtZW50KQotCi0jZGVmaW5lIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGlj
YXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkgeyByZXR1cm4gc3RhdGVtZW50LnBy
ZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMDI3Mzg3M2YxYTYyMDRlNzk5MWVlNzE3
MzI3MDc0NDE1ZmY1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5h
bWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3Ry
dWN0dXJlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFN0
cnVjdHVyZUVsZW1lbnRzJiYgc3RydWN0dXJlRWxlbWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBl
KEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQotICAg
ICAgICAsIG1fc3RydWN0dXJlRWxlbWVudHMoV1RGTW92ZShzdHJ1Y3R1cmVFbGVtZW50cykpCi0g
ICAgewotICAgIH0KLQotICAgIH5TdHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0g
ICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBkZWxl
dGU7Ci0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0gZGVm
YXVsdDsKLQotICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50cygpIHsgcmV0
dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50KiBmaW5kKGNv
bnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZp
bmRfaWYobV9zdHJ1Y3R1cmVFbGVtZW50cy5iZWdpbigpLCBtX3N0cnVjdHVyZUVsZW1lbnRzLmVu
ZCgpLCBbJl0oU3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlRWxlbWVudC5uYW1lKCkgPT0gbmFtZTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3N0cnVjdHVyZUVsZW1lbnRzLmVuZCgp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAmKml0ZXJhdG9y
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJ1Y3R1cmVFbGVtZW50cyBtX3N0cnVjdHVyZUVs
ZW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoU3RydWN0dXJlRGVmaW5pdGlvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9UWVBFKFN0cnVjdHVyZURlZmluaXRpb24sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJl
RWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MyODZjZjJkMDJmM2M0
MGRlZGM2YjhhNGEzZWNkMmZhMGRlY2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0cnVjdHVyZUVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIu
aCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQgZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0cnVjdHVyZUVsZW1lbnQoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmPFVubmFtZWRUeXBlPiB0eXBlLCBT
dHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMpCi0gICAg
ICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9xdWFsaWZpZXJzKFdU
Rk1vdmUocXVhbGlmaWVycykpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAg
ICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3Zl
KHNlbWFudGljKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN0cnVjdHVyZUVsZW1lbnQoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVyZUVsZW1lbnQmKSA9
IGRlbGV0ZTsKLSAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1lbnQmJikgPSBkZWZh
dWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4g
bV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0g
ICAgU2VtYW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5nZXQoKTsgfQotCi1w
cml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBRdWFsaWZpZXJz
IG1fcXVhbGlmaWVyczsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBTdHJpbmcg
bV9uYW1lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKLX07Ci0K
LXVzaW5nIFN0cnVjdHVyZUVsZW1lbnRzID0gVmVjdG9yPFN0cnVjdHVyZUVsZW1lbnQ+OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRk
YWRjN2E1YzllZWE5NTU1YmRhN2M0NjQyMWIzZTg1ZWE0ZWRmMzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUsIEJsb2NrJiYg
YmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2hDYXNlKQot
ICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV9ibG9jayhXVEZN
b3ZlKGJsb2NrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN3aXRjaENhc2UoKSA9IGRlZmF1bHQ7
Ci0KLSAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0ZTsKLSAgICBTd2l0
Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpvcHRpb25hbDxDb25z
dGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBCbG9jayYg
YmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpvcHRpb25h
bDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Ci0gICAgQmxvY2sgbV9ibG9jazsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFN3
aXRjaENhc2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRj
aENhc2UsIGlzU3dpdGNoQ2FzZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMyOTMyYTMzOGNhOWNmNGIzNzRhNTYxNGVmYWZmY2YwMTI1NmQ0Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIFN3aXRjaFN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN3aXRjaFN0YXRlbWVudChDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZhbHVlLCBWZWN0b3I8
U3dpdGNoQ2FzZT4mJiBzd2l0Y2hDYXNlcykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24s
IEtpbmQ6OlN3aXRjaCkKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgICAg
ICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCi0gICAgewotICAgIH0KLQot
ICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTd2l0Y2hTdGF0ZW1lbnQo
Y29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3dpdGNoU3RhdGVtZW50KFN3
aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiB2YWx1ZSgpIHsg
cmV0dXJuIG1fdmFsdWU7IH0KLSAgICBWZWN0b3I8U3dpdGNoQ2FzZT4mIHN3aXRjaENhc2VzKCkg
eyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX3ZhbHVlOwotICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBtX3N3aXRjaENhc2VzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoU3dpdGNoU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChTd2l0Y2hTdGF0ZW1lbnQsIGlzU3dpdGNoU3RhdGVtZW50KCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ4ZTQ0OTIyMDVjNWU3MGNjZjU5MmM4NmRiNTdi
MDMzMTVhMTM4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhw
cmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFRlcm5hcnlFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBib2R5RXhw
cmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWxzZUV4cHJlc3Npb24pCi0gICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VGVybmFyeSkKLSAgICAgICAgLCBtX3ByZWRp
Y2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCi0gICAgICAgICwgbV9ib2R5RXhwcmVzc2lvbihXVEZN
b3ZlKGJvZHlFeHByZXNzaW9uKSkKLSAgICAgICAgLCBtX2Vsc2VFeHByZXNzaW9uKFdURk1vdmUo
ZWxzZUV4cHJlc3Npb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VGVybmFyeUV4cHJlc3Npb24o
KSA9IGRlZmF1bHQ7Ci0KLSAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25zdCBUZXJuYXJ5RXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIFRlcm5hcnlFeHByZXNzaW9uKFRlcm5hcnlFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0dXJuIG1f
cHJlZGljYXRlOyB9Ci0gICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVybiBt
X2JvZHlFeHByZXNzaW9uOyB9Ci0gICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJl
dHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IG1fcHJlZGljYXRlOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2JvZHlFeHBy
ZXNzaW9uOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Vsc2VFeHByZXNzaW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
VGVybmFyeUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVT
U0lPTihUZXJuYXJ5RXhwcmVzc2lvbiwgaXNUZXJuYXJ5RXhwcmVzc2lvbigpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZjg4MmRkOTkxYjgwZDlmNTVkNWEwMWJjYjM4YjA4Yzc3OGRkOTZkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
VHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAgICB+
VHlwZSgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4
X3QgewotICAgICAgICAvLyBVbm5hbWVkVHlwZXMKLSAgICAgICAgVHlwZVJlZmVyZW5jZSwKLSAg
ICAgICAgUG9pbnRlciwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2UsCi0gICAgICAgIEFycmF5LAot
ICAgICAgICAvLyBOYW1lZFR5cGVzCi0gICAgICAgIFR5cGVEZWZpbml0aW9uLAotICAgICAgICBT
dHJ1Y3R1cmVEZWZpbml0aW9uLAotICAgICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24sCi0gICAg
ICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwKLSAgICAgICAgLy8gUmVzb2x2YWJsZVR5cGVzCi0g
ICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIFR5cGUoS2luZCBraW5kKQotICAg
ICAgICA6IG1fa2luZChraW5kKQotICAgIHsgfQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koVHlw
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFR5cGUmKTsKLQotICAgIGV4cGxpY2l0IFR5
cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwotICAgIFR5cGUoVHlwZSYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRlOwotICAgIFR5cGUmIG9w
ZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQotCi0gICAgYm9vbCBpc1VubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID49IEtpbmQ6OlR5cGVSZWZlcmVuY2UgJiYga2luZCgpIDw9IEtpbmQ6OkFycmF5OyB9
Ci0gICAgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpU
eXBlRGVmaW5pdGlvbiAmJiBraW5kKCkgPD0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9
Ci0gICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtp
bmQ6OkZsb2F0TGl0ZXJhbCAmJiBraW5kKCkgPD0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bDsgfQotCi0gICAgYm9vbCBpc1R5cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6VHlwZVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpQb2ludGVyOyB9Ci0gICAgYm9vbCBpc0FycmF5UmVm
ZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheVJlZmVyZW5j
ZTsgfQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6QXJyYXk7IH0KLSAgICBib29sIGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlz
UG9pbnRlclR5cGUoKSB8fCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpOyB9Ci0KLSAgICBib29sIGlz
VHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZURlZmlu
aXRpb247IH0KLSAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOyB9Ci0gICAgYm9vbCBpc0VudW1l
cmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJh
dGlvbkRlZmluaXRpb247IH0KLSAgICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQotCi0g
ICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6RmxvYXRMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wgaXNV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKTsKLSAg
ICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8VHlwZSo+KHRoaXMpLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgS2luZCBtX2tpbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShUeXBlKQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZSYg
dHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVB
cmd1bWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGUxMGJmNzU0Mjlk
ODY2ZjY0NDU1MDUzYTk0MzExMjhiYzdmNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZUFyZ3VtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1l
bnQuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LVR5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykK
LXsKLSAgICBUeXBlQXJndW1lbnRzIHJlc3VsdDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGVB
cmd1bWVudCA6IHR5cGVBcmd1bWVudHMpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoY2xvbmUodHlw
ZUFyZ3VtZW50KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVHlwZUFyZ3VtZW50IGNsb25l
KGNvbnN0IFR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIHJldHVybiBXVEY6OnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFu
dEV4cHJlc3Npb24pIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVybiBjb25zdGFudEV4
cHJlc3Npb24uY2xvbmUoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8VHlwZVJlZmVyZW5jZT4mIHR5
cGVSZWZlcmVuY2UpIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVybiB0eXBlUmVmZXJl
bmNlLmNvcHlSZWYoKTsKLSAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlQXJndW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEyYTMyZWI2
ZWI1MTgxZGYzMDY4MmJhMmU0ZDIzZjIyNWQzMTcxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi11c2luZyBUeXBlQXJndW1lbnQg
PSBWYXJpYW50PENvbnN0YW50RXhwcmVzc2lvbiwgUmVmPFR5cGVSZWZlcmVuY2U+PjsKLXVzaW5n
IFR5cGVBcmd1bWVudHMgPSBWZWN0b3I8VHlwZUFyZ3VtZW50PjsKLQotVHlwZUFyZ3VtZW50IGNs
b25lKGNvbnN0IFR5cGVBcmd1bWVudCYpOwotVHlwZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBl
QXJndW1lbnRzJik7Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjkwNTU3YmVlZWZiMGZlNGUyMGNiMThmMTg2YjIxMmM0
M2RiODc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xV
bm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGVEZWZpbml0aW9uKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAg
ICAgICA6IE5hbWVkVHlwZShLaW5kOjpUeXBlRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUo
bmFtZSkpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgewotICAgIH0KLQot
ICAgIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFR5cGVEZWZpbml0aW9uKGNv
bnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgVHlwZURlZmluaXRpb24oVHlwZURl
ZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVy
biBtX3R5cGU7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBUeXBl
JiB1bmlmeU5vZGVJbXBsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUtPnVuaWZ5Tm9k
ZSgpOwotICAgIH0KLQotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZURlZmlu
aXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUeXBlRGVmaW5pdGlv
biwgaXNUeXBlRGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmIzMzFjMzJkNTU0MGY2MzFjMTQxZjJiYzQ2OTFhMTgyMTg0YWViZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotUmVmPFR5cGVSZWZlcmVuY2U+IFR5cGVSZWZlcmVuY2U6Ondy
YXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSkKLXsKLSAg
ICBUeXBlQXJndW1lbnRzIHR5cGVBcmd1bWVudHM7Ci0gICAgaWYgKGlzPE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4ocmVzb2x2ZWRUeXBlKSkKLSAgICAgICAgdHlwZUFyZ3VtZW50cyA9IEFTVDo6Y2xv
bmUoZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpLnR5cGVBcmd1
bWVudHMoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRp
b24sIFN0cmluZyhyZXNvbHZlZFR5cGUubmFtZSgpKSwgV1RGTW92ZSh0eXBlQXJndW1lbnRzKSk7
Ci0gICAgcmVzdWx0LT5zZXRSZXNvbHZlZFR5cGUocmVzb2x2ZWRUeXBlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY2ZGVlZWZmZWFiMDdkMDQwNDlhODU0NjI3NzcxY2VmMzA2MmJk
NDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVB
cmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBUeXBlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIFVu
bmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShUeXBlUmVmZXJlbmNlKTsKLSAgICBUeXBlUmVmZXJlbmNlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMp
Ci0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6OlR5cGVSZWZlcmVuY2UpCi0g
ICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlQXJndW1lbnRz
KFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFR5cGVSZWZlcmVuY2U+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCogbmV3IFR5cGVSZWZlcmVuY2UobG9jYXRpb24sIFdURk1vdmUobmFt
ZSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpKTsKLSAgICB9Ci0KLSAgICB+VHlwZVJlZmVyZW5j
ZSgpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVyZW5jZT4gd3JhcChDb2Rl
TG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKTsKLQotICAgIFN0cmluZyYgbmFtZSgp
IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7
IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KLSAgICBOYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGU7IH0KLSAgICBOYW1lZFR5cGUmIHJl
c29sdmVkVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUp
OwotICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHZvaWQgc2V0
UmVzb2x2ZWRUeXBlKE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotICAgIHsKLSAgICAgICAgbV9y
ZXNvbHZlZFR5cGUgPSAmcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHVzZSB0aGlzIGZ1
bmN0aW9uIGFmdGVyIHRoZSBuYW1lIHJlc29sdmVyIHJ1bnMuCi0gICAgICAgIC8vIFJlbHlpbmcg
b24gaGF2aW5nIGEgcmVzb2x2ZWQgdHlwZSBzaW1wbGlmaWVzIHRoaXMgaW1wbGVtZW50YXRpb24u
Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBXVEY6OlB0
ckhhc2g8Y29uc3QgVHlwZSo+OjpoYXNoKCZ1bmlmeU5vZGUoKSk7Ci0gICAgfQotCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFR5cGVSZWZlcmVuY2UmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuICZ1bmlmeU5vZGUo
KSA9PSAmb3RoZXIudW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJl
dHVybiBtX3Jlc29sdmVkVHlwZS0+bmFtZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgVHlwZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlwZS0+
dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBUeXBlQXJndW1l
bnRzIG1fdHlwZUFyZ3VtZW50czsKLSAgICBOYW1lZFR5cGUqIG1fcmVzb2x2ZWRUeXBlIHsgbnVs
bHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoVHlwZVJlZmVyZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9UWVBFKFR5cGVSZWZlcmVuY2UsIGlzVHlwZVJlZmVyZW5jZSgpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZDkwZTc4NDI1MTM3NDlhOThlYWY2YmZjZmRlYmMyNjcwM2Q0Nzdm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdW5zaWduZWQgVW5uYW1lZFR5cGU6
Omhhc2goKSBjb25zdAotewotICAgIHN3aXRjaCAoa2luZCgpKSB7Ci0gICAgY2FzZSBLaW5kOjpU
eXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRo
aXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3du
Y2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5UmVm
ZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhp
cykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXk6Ci0gICAgICAgIHJldHVybiBkb3duY2Fz
dDxBcnJheVR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLWJvb2wgVW5uYW1lZFR5cGU6Om9w
ZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmIG90aGVyKSBjb25zdAotewotICAgIGlmIChvdGhl
ci5raW5kKCkgIT0ga2luZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2gg
KGtpbmQoKSkgewotICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxUeXBlUmVmZXJlbmNl
PihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8UG9pbnRlclR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxQb2ludGVyVHlwZT4ob3RoZXIpOwot
ICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxB
cnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+
KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
QXJyYXlUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlUeXBlPihvdGhlcik7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVk
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5u
YW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk4MWU1ZTM4Nzk0MWM2
Mjg3ZTQ4N2YxMjg1NTU2NGQzZTBkZGI4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbm5hbWVkVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBVbm5hbWVkVHlwZSA6
IHB1YmxpYyBUeXBlLCBwdWJsaWMgUmVmQ291bnRlZDxVbm5hbWVkVHlwZT4gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVubmFtZWRUeXBl
KTsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtpbmQg
a2luZCkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwgbV9jb2RlTG9jYXRpb24obG9j
YXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNz
IFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICAg
Q29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5uYW1lZFR5cGUpCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShVbm5hbWVkVHlwZSwgaXNVbm5hbWVkVHlwZSgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGVIYXNoLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZUhh
c2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2N2MwZDc0YmIyNmY0MTk4ZDE2
ZjYyYTdhM2I2N2E0YmE1MmY0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZUhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFVubmFtZWRU
eXBlS2V5IHsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZUtleSgpID0gZGVmYXVsdDsKLSAgICBV
bm5hbWVkVHlwZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDog
bV90eXBlKGJpdHdpc2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSkpCi0gICAgewotICAgIH0KLQotICAgIFVubmFtZWRUeXBlS2V5KEFTVDo6VW5uYW1l
ZFR5cGUmIHR5cGUpCi0gICAgICAgIDogbV90eXBlKCZ0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3R5cGU7IH0KLSAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IGJpdHdp
c2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0K
LQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX3R5cGUtPmhhc2goKTsgfQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlwZUtleSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICptX3R5cGUgPT0gKm90aGVyLm1fdHlwZTsgfQotICAgIEFTVDo6VW5uYW1lZFR5cGUm
IHVubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gKm1fdHlwZTsgfQotCi0gICAgc3RydWN0IEhh
c2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVbm5hbWVkVHlwZUtleSYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFVubmFtZWRUeXBlS2V5JiBhLCBjb25zdCBVbm5hbWVkVHlwZUtleSYgYikgeyByZXR1cm4g
YSA9PSBiOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSB0cnVlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDogcHVibGljIFdURjo6
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFVubmFtZWRUeXBlS2V5PiB7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkpIHsgcmV0dXJuIGtl
eS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpVbm5hbWVk
VHlwZSogbV90eXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi19Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OldITFNMOjpVbm5hbWVk
VHlwZUtleT4gOiBXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk6OlRyYWl0cyB7IH07Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVL
ZXk+IDogV2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5OjpIYXNoIHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkN2FmYjQxODI2MmY3OGMxMTk4ZjNlODgxMzBjODA2NjMwNDkxNzcyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWludDY0
X3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdAot
ewotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihtX3R5
cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRv
d25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21VbnNp
Z25lZEludGVnZXIoKShtX3ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDAx
NmU1YzIyNzIxOTQ2MzRjNGEwNzY0ZmY3ZDYxMzQ2MmU0NDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25l
ZCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsKQotICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgflVuc2lnbmVkSW50ZWdlckxp
dGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKGNvbnN0IFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSA9
IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0oVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHVuc2lnbmVkIHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBjbG9u
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIHJlc3VsdChj
b2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUu
Y2xvbmUoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJl
c29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nh
c3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVU
byhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGludDY0X3Qg
dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgdW5zaWduZWQgbV92YWx1ZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVT
U0lPTihVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTVkMjFmYWEwNGU0NzgxYTAyMTBjM2Q0NGE5NzY1NWIwMjU0M2E2Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5o
IgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2ln
bmVkIHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJl
ZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAidWludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQot
ewotfQotCi1ib29sIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0
IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8TmFtZWRU
eXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICBpZiAo
IW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0ludCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudFVuc2ln
bmVkSW50ZWdlcigpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXVuc2lnbmVkIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJz
aW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0Ci17Ci0gICAgaWYg
KG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiAxOwotfQotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZTo6Y2xvbmUoKSBjb25zdAotewotICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlIHJlc3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBtX3Zh
bHVlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAg
IHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7Ci0g
ICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBh
N2VkMzlmODhkZjQ4NTU2ZjBhNzgzYjIxYTM0YmQ0ODU0MmY3MjUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZVJlZmVy
ZW5jZTsKLQotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMg
UmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgdW5zaWduZWQgdmFs
dWUpOwotCi0gICAgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0g
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikg
PSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHByZWZl
cnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KLQotICAgIGJvb2wgY2FuUmVz
b2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29u
c3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
IGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV92YWx1ZTsKLSAgICAv
LyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBi
ZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxUeXBlIC0+IFR5cGVS
ZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Npb24KLSAgICBSZWY8
VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSwgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTE4YjZjZGRiYTQxYzljNjA1MDFh
MmY5MGUzNjk3Mzk5NmQ4YzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgot
I2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNs
dWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGZpbmFsIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLS8vIEZpbmFsIGJlY2F1c2Ugd2UgbWFkZSB0
aGUgZGVzdHJ1Y3RvciBub24tdmlydHVhbC4KLXB1YmxpYzoKLSAgICBzdHJ1Y3QgUmFyZURhdGEg
ewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFJhcmVE
YXRhKFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzQXJndW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxTZW1h
bnRpYz4mJiBzZW1hbnRpY0FyZ3VtZW50KQotICAgICAgICAgICAgOiBxdWFsaWZpZXJzKFdURk1v
dmUocXVhbGlmaWVyc0FyZ3VtZW50KSkKLSAgICAgICAgICAgICwgc2VtYW50aWMoV1RGTW92ZShz
ZW1hbnRpY0FyZ3VtZW50KSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFF1YWxpZmll
cnMgcXVhbGlmaWVyczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBzZW1hbnRp
YzsKLSAgICB9OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gY29kZUxv
Y2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmUHRyPFVubmFtZWRUeXBlPiB0eXBl
LCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluaXRpYWxpemVyKQotICAgICAgICA6IG1fY29k
ZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkK
LSAgICAgICAgLCBtX2luaXRpYWxpemVyKFdURk1vdmUoaW5pdGlhbGl6ZXIpKQotICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAgICAgICAgaWYgKHNlbWFudGljIHx8ICFx
dWFsaWZpZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVl
PFJhcmVEYXRhPihXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKHNlbWFudGljKSk7Ci0gICAg
fQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJpYWJs
ZURlY2xhcmF0aW9uKGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBW
YXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICAvLyBXZSB1c2UgdGhp
cyBmb3IgUmVhZE1vZGlmeVdyaXRlIGV4cHJlc3Npb25zLCBzaW5jZSB3ZSBkb24ndCBrbm93IHRo
ZSB0eXBlIG9mIHRoZWlyCi0gICAgLy8gaW50ZXJuYWwgdmFyaWFibGVzIHVudGlsIHRoZSBjaGVj
a2VyIHJ1bnMuIEFsbCBvdGhlciB2YXJpYWJsZXMgc2hvdWxkIHN0YXJ0IGxpZmUgb3V0Ci0gICAg
Ly8gd2l0aCBhIHR5cGUuCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90eXBlID0gV1RGTW92
ZSh0eXBlKTsKLSAgICB9Ci0gICAgY29uc3QgUmVmUHRyPFVubmFtZWRUeXBlPiYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1cm4g
bV90eXBlID8gJiptX3R5cGUgOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lvbiogaW5pdGlhbGl6
ZXIoKSB7IHJldHVybiBtX2luaXRpYWxpemVyLmdldCgpOyB9Ci0gICAgYm9vbCBpc0Fub255bW91
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5pc051bGwoKTsgfQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPiB0YWtlSW5pdGlhbGl6ZXIoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5pdGlh
bGl6ZXIpOyB9Ci0gICAgdm9pZCBzZXRJbml0aWFsaXplcihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4gZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaW5pdGlhbGl6ZXIoKSk7
Ci0gICAgICAgIEFTU0VSVChleHByZXNzaW9uKTsKLSAgICAgICAgbV9pbml0aWFsaXplciA9IFdU
Rk1vdmUoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotCi0gICAgU2VtYW50aWMqIHNlbWFu
dGljKCkgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPnNlbWFudGljLmdldCgpIDog
bnVsbHB0cjsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsK
LSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gbV9pbml0aWFsaXplcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1f
cmFyZURhdGEgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLX07Ci0KLXVzaW5nIFZh
cmlhYmxlRGVjbGFyYXRpb25zID0gVmVjdG9yPFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9u
Pj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzMyOGM0YjJjZmQ0
MmU5MzMxYWE4NTZmOTRhNmY4MjQ0ZWY1ZTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVibGlj
IFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJp
YWJsZURlY2xhcmF0aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnMpCi0gICAgICAgICwgbV92
YXJpYWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb25zKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0
OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoY29uc3QgVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBWZWN0b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PiYgdmFyaWFibGVEZWNsYXJh
dGlvbnMoKSB7IHJldHVybiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgVmFyaWFibGVEZWNsYXJhdGlvbnMgbV92YXJpYWJsZURlY2xhcmF0aW9uczsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgaXNWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VmFyaWFibGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjYmQwNmFjYWUxZmVlZWE3MDUxN2I4ZGY4Y2I4NjdkZDkzNmM5NmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaAorKysgL2Rldi9udWxs
CkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFZhcmlh
YmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
LCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0Owot
Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0
ZTsKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBzdGF0aWMgVmFyaWFibGVSZWZlcmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0aW9u
JiB2YXJpYWJsZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgVmFyaWFibGVSZWZlcmVuY2Ug
cmVzdWx0KHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpOwotICAgICAgICByZXN1
bHQubV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAgICByZXN1bHQubV9u
YW1lID0gdmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBW
YXJpYWJsZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KLQot
ICAgIHZvaWQgc2V0VmFyaWFibGUoVmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJh
dGlvbikKLSAgICB7Ci0gICAgICAgIG1fdmFyaWFibGUgPSAmdmFyaWFibGVEZWNsYXJhdGlvbjsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlUmVm
ZXJlbmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZhcmlhYmxl
RGVjbGFyYXRpb24qIG1fdmFyaWFibGUgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVyZW5j
ZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVm
ZXJlbmNlLCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xXaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NDE5NjQ5YjE1NGYzMDE5Y2E4OTdlYWJjYmI0MWJkOGU2NGRiZDI0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVu
dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2hpbGVMb29w
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9u
YWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9j
YXRpb24sIEtpbmQ6OldoaWxlTG9vcCkKLSAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUo
Y29uZGl0aW9uYWwpKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB+V2hpbGVMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgV2hpbGVMb29wKGNvbnN0
IFdoaWxlTG9vcCYpID0gZGVsZXRlOwotICAgIFdoaWxlTG9vcChXaGlsZUxvb3AmJikgPSBkZWZh
dWx0OwotCi0gICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlv
bmFsOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0KLXByaXZh
dGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci0gICAgVW5pcXVl
UmVmPFN0YXRlbWVudD4gbV9ib2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoV2hpbGVMb29wKQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGlsZUxvb3AsIGlzV2hpbGVMb29wKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MTEzYTA2
MThiYTFjMjcxMzg4ZWYxZDQ0YjBhYjBlNTYxNjk4MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJ
dGVtcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
V0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0
cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3Rh
dGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVp
bHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkp
IHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlE
OgotICAgICAgICByZXR1cm4gIltbaW5zdGFuY2VfaWRdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICByZXR1cm4gIltb
dmVydGV4X2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJs
ZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiW1twb2ludF9zaXplXV0iX3N0cjsKLSAgICBjYXNl
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0
dXJuICJbW3Bvc2l0aW9uXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuICJbW2Zyb250X2ZhY2luZ11d
Il9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWU2FtcGxl
SW5kZXg6Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfaWRdXSJfc3RyOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJl
dHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yzo6VmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiW1tjb2xv
cigiLCAqYnVpbHRJblNlbWFudGljLnRhcmdldEluZGV4KCksICIpXV0iKTsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJb
W2RlcHRoKGFueSldXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIltbc2FtcGxlX21hc2tdXSJfc3RyOwot
ICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFk
SUQ6Ci0gICAgICAgIHJldHVybiAiW1t0aHJlYWRfcG9zaXRpb25faW5fZ3JpZF1dIl9zdHI7Ci0g
ICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAg
ICAgcmV0dXJuICJbW3RocmVhZGdyb3VwX3Bvc2l0aW9uX2luX2dyaWRdXSJfc3RyOwotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAg
IHJldHVybiAiW1t0aHJlYWRfaW5kZXhfaW5fdGhyZWFkZ3JvdXBdXSJfc3RyOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJldHVy
biAiW1t0aHJlYWRfcG9zaXRpb25faW5fdGhyZWFkZ3JvdXBdXSJfc3RyOwotICAgIH0KLX0KLQot
c3RhdGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OlNlbWFudGljJiBzZW1hbnRp
YykKLXsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yz4oc2VtYW50aWMpKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlRm9yU2VtYW50aWMoV1RGOjpn
ZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSk7Ci0gICAgYXV0byYgc3RhZ2VJbk91
dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKTsK
LSAgICByZXR1cm4gbWFrZVN0cmluZygiW1t1c2VyKHVzZXIiLCBzdGFnZUluT3V0U2VtYW50aWMu
aW5kZXgoKSwgIildXSIpOwotfQotCi1FbnRyeVBvaW50U2NhZmZvbGRpbmc6OkVudHJ5UG9pbnRT
Y2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0
ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNl
TWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+
JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotICAgIDogbV9mdW5jdGlvbkRlZmluaXRpb24o
ZnVuY3Rpb25EZWZpbml0aW9uKQotICAgICwgbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAg
LCBtX3R5cGVOYW1lcih0eXBlTmFtZXIpCi0gICAgLCBtX2VudHJ5UG9pbnRJdGVtcyhlbnRyeVBv
aW50SXRlbXMpCi0gICAgLCBtX3Jlc291cmNlTWFwKHJlc291cmNlTWFwKQotICAgICwgbV9sYXlv
dXQobGF5b3V0KQotICAgICwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKQotewotICAgIG1fbmFtZWRCaW5kR3JvdXBzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9sYXlvdXQuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5
b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5hbWVkQmluZEdyb3VwIG5hbWVkQmluZEdyb3Vw
OwotICAgICAgICBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVOYW1lID0g
bV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAuYXJn
dW1lbnRCdWZmZXJJbmRleCA9IG1fbGF5b3V0W2ldLm5hbWU7IC8vIGNvbnZlcnRMYXlvdXQoKSBp
biBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIG1ha2VzIHN1cmUgdGhlc2UgZG9uJ3QgY29sbGlk
ZS4KLSAgICAgICAgbmFtZWRCaW5kR3JvdXAubmFtZWRCaW5kaW5ncy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsKLSAgICAgICAg
ICAgIE5hbWVkQmluZGluZyBuYW1lZEJpbmRpbmc7Ci0gICAgICAgICAgICBuYW1lZEJpbmRpbmcu
ZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFt
ZSgpOwotICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmluZGV4ID0gbV9sYXlvdXRbaV0uYmluZGlu
Z3Nbal0uaW50ZXJuYWxOYW1lOwotICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShVbmlmb3JtQnVmZmVyQmluZGluZyYgdW5pZm9ybUJ1ZmZlckJpbmRpbmcpIHsKLSAg
ICAgICAgICAgICAgICBMZW5ndGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1hdGlvbiB7IG1fdHlw
ZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1fZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCksIHVuaWZvcm1CdWZmZXJCaW5kaW5nLmxlbmd0aE5hbWUgfTsKLSAgICAg
ICAgICAgICAgICBuYW1lZEJpbmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBsZW5ndGhJbmZvcm1h
dGlvbjsKLSAgICAgICAgICAgIH0sIFsmXShTYW1wbGVyQmluZGluZyYpIHsKLSAgICAgICAgICAg
IH0sIFsmXShUZXh0dXJlQmluZGluZyYpIHsKLSAgICAgICAgICAgIH0sIFsmXShTdG9yYWdlQnVm
ZmVyQmluZGluZyYgc3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICBMZW5n
dGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1hdGlvbiB7IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4
dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIHN0
b3JhZ2VCdWZmZXJCaW5kaW5nLmxlbmd0aE5hbWUgfTsKLSAgICAgICAgICAgICAgICBuYW1lZEJp
bmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBsZW5ndGhJbmZvcm1hdGlvbjsKLSAgICAgICAgICAg
IH0pLCBtX2xheW91dFtpXS5iaW5kaW5nc1tqXS5iaW5kaW5nKTsKLSAgICAgICAgICAgIG5hbWVk
QmluZEdyb3VwLm5hbWVkQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRCaW5k
aW5nKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lZEJpbmRHcm91cHMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUobmFtZWRCaW5kR3JvdXApKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0cy5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCptX2Vu
dHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV0uc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIE5hbWVkQnVpbHRJbiBuYW1lZEJ1aWx0SW47Ci0gICAgICAgIG5hbWVkQnVpbHRJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0gaTsKLSAgICAgICAgbmFtZWRCdWlsdEluLnZhcmlh
YmxlTmFtZSA9IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fbmFtZWRC
dWlsdElucy5hcHBlbmQoV1RGTW92ZShuYW1lZEJ1aWx0SW4pKTsKLSAgICB9Ci0KLSAgICBtX3Bh
cmFtZXRlclZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZnVuY3Rpb25EZWZpbml0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBtX3Bh
cmFtZXRlclZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQobV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKSk7Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxw
ZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRl
bnQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
aW5kZW50LCAic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0cnVjdE5hbWUsICIge1xu
Iik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50
KTsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIFN0cmluZz4+IHN0cnVj
dEl0ZW1zOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtpXS5i
aW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGF1dG8mIGJpbmRpbmcgPSBt
X2xheW91dFtpXS5iaW5kaW5nc1tqXTsKLSAgICAgICAgICAgICAgICBpZiAoIWJpbmRpbmcudmlz
aWJpbGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3Jv
dXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgYXV0
byBpbmRleCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgaWYgKGF1dG8gbGVuZ3RoSW5mb3JtYXRpb24gPSBtX25hbWVkQmluZEdy
b3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobGVuZ3RoSW5mb3JtYXRp
b24tPmluZGV4LCBtYWtlU3RyaW5nKCJ1aW50MiAiLCBsZW5ndGhJbmZvcm1hdGlvbi0+ZWxlbWVu
dE5hbWUsICIgW1tpZCgiLCBsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgsICIpXV07IikpKTsKLQot
ICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1fbGF5
b3V0W2ldLmJpbmRpbmdzW2pdKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9y
ZXNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiB0eXBlID0gbV9l
bnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1lZFR5cGUtPnVuaWZ5
Tm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odHlw
ZSkgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih0
eXBlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUgPSBk
b3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5
cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZHJlc3NTcGFjZSA9IHRvU3RyaW5nKHJl
ZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKGFkZHJlc3NT
cGFjZSwgIiAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwg
aW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxBU1Q6
Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25j
YXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmFtZWRU
eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihpbmRleCwgbWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5h
bWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJpbmRp
bmcgZG9lc24ndCBhcHBlYXIgaW4gdGhlIHNoYWRlciBzb3VyY2UuCi0gICAgICAgICAgICAgICAg
ICAgIC8vIEhvd2V2ZXIsIHdlIG11c3Qgc3RpbGwgZW1pdCBhIHBsYWNlaG9sZGVyLCBzbyBzdWNj
ZXNzaXZlIGl0ZW1zIGluIHRoZSBhcmd1bWVudCBidWZmZXIgc3RydWN0IGhhdmUgdGhlIGNvcnJl
Y3Qgb2Zmc2V0LgotICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBiaW5kaW5nIGRv
ZXNuJ3QgYXBwZWFyIGluIHRoZSBzaGFkZXIgc291cmNlLCB3ZSBkb24ndCBrbm93IHdoaWNoIGV4
YWN0IHR5cGUgdGhlIGJpbmQgcG9pbnQgc2hvdWxkIGhhdmUuCi0gICAgICAgICAgICAgICAgICAg
IC8vIFRoZXJlZm9yZSwgd2UgbXVzdCBzeW50aGVzaXplIGEgdHlwZSBvdXQgb2YgdGhpbiBhaXIu
Ci0gICAgICAgICAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oVW5p
Zm9ybUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1z
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygiY29uc3RhbnQgdm9pZCog
IiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAg
ICAgICAgICB9LCBbJl0oU2FtcGxlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygic2Ft
cGxlciAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0sIFsmXShUZXh0dXJlQmluZGluZykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDEzODQgV2UgZG9uJ3Qga25vdyB3aGljaCB0ZXh0dXJlIHR5cGUgdGhlIGJpbmRpbmcgcmVwcmVz
ZW50cy4gVGhpcyBpcyBubyBnb29kIHZlcnkgYmFkLgotICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJ0ZXh0
dXJlMmQ8ZmxvYXQ+ICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsK
LSAgICAgICAgICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5k
ZXgsIG1ha2VTdHJpbmcoImRldmljZSB2b2lkKiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGlu
ZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pLCBiaW5kaW5nLmJpbmRpbmcp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6c29y
dChzdHJ1Y3RJdGVtcy5iZWdpbigpLCBzdHJ1Y3RJdGVtcy5lbmQoKSwgW10oY29uc3Qgc3RkOjpw
YWlyPHVuc2lnbmVkLCBTdHJpbmc+JiBsZWZ0LCBjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQsIFN0
cmluZz4mIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQuZmlyc3QgPCByaWdo
dC5maXJzdDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
dHJ1Y3RJdGVtIDogc3RydWN0SXRlbXMpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBzdHJ1Y3RJdGVtLnNlY29uZCwgJ1xuJyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0gICAgfQotfQotCi1i
b29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlU2lnbmF0dXJlKFN0cmluZ0J1
aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSBpbmNsdWRlUHJlY2Vk
aW5nQ29tbWEpCi17Ci0gICAgaWYgKCFtX2xheW91dC5zaXplKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2VkaW5nQ29tbWEgPT0gSW5jbHVkZVByZWNlZGlu
Z0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBh
dXRvJiBuYW1lZEJpbmRHcm91cCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICIm
ICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRH
cm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIik7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi1zdGF0aWMgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhjb25zdCBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAoYnVp
bHRJblNlbWFudGljLnZhcmlhYmxlKCkpIHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICBy
ZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpQ
U2l6ZToKLSAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiAiZmxvYXQ0IjsKLSAg
ICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAg
ICAgICAgcmV0dXJuICJib29sIjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICBy
ZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VlRhcmdldDoKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgY2Fz
ZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJl
dHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNW
RGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50MyI7Ci0gICAgY2FzZSBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuICJ1
aW50MyI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJ
bmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NF
UlQoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAgICB9
Ci19Ci0KLWJvb2wgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJbnNTaWduYXR1cmUo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hIGluY2x1
ZGVQcmVjZWRpbmdDb21tYSkKLXsKLSAgICBpZiAoIW1fbmFtZWRCdWlsdElucy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2VkaW5nQ29tbWEgPT0g
SW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25hbWVkQnVpbHRJbnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiKTsKLSAgICAgICAgYXV0byYgbmFtZWRCdWlsdEluID0gbV9uYW1lZEJ1aWx0SW5z
W2ldOwotICAgICAgICBhdXRvJiBpdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVk
QnVpbHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXTsKLSAgICAgICAgYXV0byYgYnVpbHRJblNl
bWFudGljID0gV1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCppdGVtLnNlbWFudGljKTsK
LSAgICAgICAgYXV0byBpbnRlcm5hbFR5cGUgPSBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhidWls
dEluU2VtYW50aWMpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVybmFsVHlwZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnICcsIG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2VtYW50
aWMoYnVpbHRJblNlbWFudGljKSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lk
IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJbnB1dFBhdGgoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgVmVjdG9yPFN0cmluZz4mIHBhdGgpCi17Ci0gICAgQVNTRVJUKCFw
YXRoLmlzRW1wdHkoKSk7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbiogc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtp
XS0+bmFtZSgpID09IHBhdGhbMF0pIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9
IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT51bmlmeU5vZGUo
KTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAg
ICAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1
bmlmeU5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24g
PSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IHBhdGguc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmlu
aXRpb24pOwotICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChw
YXRoW2ldKTsKLSAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4
dCkpOwotICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgYXV0
byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoaXM8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlw
ZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICAgICAgaWYg
KGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
bj4obmFtZWRUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmVtaXRNYW5nbGVkT3V0cHV0UGF0aChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgIGF1dG8mIHVuaWZ5Tm9kZSA9
IG1fZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICBzdHJ1Y3R1cmVE
ZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
cGF0aCkgewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGF1
dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVudCk7Ci0gICAgICAg
IEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsKLSAgICAgICAgc3Ry
dWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IG5l
eHQtPnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1
bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6
Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlRGVmaW5p
dGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5w
YWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9w
YXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7Ci0gICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1fbGF5b3V0W2ldLmJpbmRpbmdz
W2pdKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNlTWFwLmVuZCgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fbmFtZWRCaW5kR3Jv
dXBzW2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pIHsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1
ZV0ucGF0aDsKLSAgICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRH
cm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxlbmd0aEVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5n
c1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+ZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgYXV0
byBsZW5ndGhUZW1wb3JhcnlOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5n
c1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+dGVtcG9yYXJ5TmFtZTsKLQotICAgICAgICAgICAgICAg
IGF1dG8mIHVubmFtZWRUeXBlID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+
dmFsdWVdLnVubmFtZWRUeXBlOwotICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6UmVmZXJlbmNl
VHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotCi0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgInNpemVfdCAi
LCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVs
ZW1lbnROYW1lLCAiLnk7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIiwKLSAg
ICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVu
Z3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50
TmFtZSwgIi54O1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAvIHNpemVvZigiLCBtYW5nbGVk
VHlwZU5hbWUsICIpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiaWYgKCIsIGxl
bmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKVxuIiwKLSAgICAgICAgICAgICAgICAg
ICAgaW5kZW50LCAiICAgICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZGO1xu
IgotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpbmRlbnQpOwotICAgICAgICAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmlu
Z0J1aWxkZXIsIHBhdGgpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgICAgICAgICAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiKSB9
O1xuIgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZh
bHVlXS5wYXRoOwotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmlu
ZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAgICAg
ICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4n
LCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZm9yIChhdXRvJiBuYW1lZEJ1aWx0SW4gOiBtX25hbWVkQnVpbHRJbnMpIHsKLSAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZEJ1aWx0SW4uaW5k
ZXhJbkVudHJ5UG9pbnRJdGVtc107Ci0gICAgICAgIGF1dG8mIHBhdGggPSBpdGVtLnBhdGg7Ci0g
ICAgICAgIGF1dG8mIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWU7Ci0g
ICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCppdGVtLnVubmFtZWRUeXBlKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
bmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRo
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1hbmdsZWRUeXBlTmFtZSwg
JygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIik7Ci0gICAgfQotfQotCi1WZXJ0ZXhFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBl
TmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hN
YXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpm
dW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
LCBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4mIG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1
dGVzKQotICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50
cmluc2ljcywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQs
IFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1fbWF0Y2hlZFZlcnRl
eEF0dHJpYnV0ZXMobWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAgLCBtX3N0YWdlSW5TdHJ1
Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9yZXR1cm5T
dHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9zdGFn
ZUluUGFyYW1ldGVyTmFtZShtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKQotewotICAgIG1f
bmFtZWRTdGFnZUlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFZlcnRleEF0dHJp
YnV0ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG1fbWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgTmFtZWRTdGFnZUluIG5hbWVkU3RhZ2VJbjsKLSAg
ICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBrZXlWYWx1ZVBhaXIu
dmFsdWU7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdl
bmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5h
dHRyaWJ1dGVJbmRleCA9IGtleVZhbHVlUGFpci5rZXktPm1ldGFsTG9jYXRpb247Ci0gICAgICAg
IG1fbmFtZWRTdGFnZUlucy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZFN0YWdlSW4pKTsK
LSAgICB9Ci0KLSAgICBtX25hbWVkT3V0cHV0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50
cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYg
b3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgIE5hbWVk
T3V0cHV0IG5hbWVkT3V0cHV0OwotICAgICAgICBuYW1lZE91dHB1dC5lbGVtZW50TmFtZSA9IG1f
dHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIFN0
cmluZ1ZpZXcgaW50ZXJuYWxUeXBlOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAgICAg
ICAgaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoV1RGOjpnZXQ8QVNUOjpC
dWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSk7Ci0gICAgICAgIGlmICghaW50
ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBl
TmFtZSA9IGludGVybmFsVHlwZS50b1N0cmluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgbV9uYW1lZE91dHB1dHMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRPdXRwdXQpKTsKLSAgICB9Ci19Ci0KLXZvaWQg
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtc
biIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAg
ICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewotICAgICAg
ICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9p
bnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5h
bWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlSW5kZXgg
PSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW2F0
dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICBpbmRlbnQsICJ9O1xuXG4iLAotICAg
ICAgICBpbmRlbnQsICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKLSAgICAp
OwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVt
cy5vdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFt
ZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnRO
YW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0
dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgaW50ZXJuYWxUeXBlTmFtZSwg
JyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLSAgICAKLSAg
ICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQsIFNoYWRlclN0
YWdlOjpWZXJ0ZXgpOwotfQotCi12b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25O
YW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGluZGVudCwgInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywg
ZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFy
YW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKLSAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUo
c3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIGVtaXRCdWls
dEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lkIFZlcnRleEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5h
bWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLQotICAgIGZvciAoYXV0byYgbmFt
ZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgIGF1dG8mIHBhdGggPSBtX2Vu
dHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNd
LnBhdGg7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnRO
YW1lOwotICAgICAgICAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiO1xuIik7Ci0gICAgfQotfQotCi12b2lkIFZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xl
ZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRw
dXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJs
ZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkg
PT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewotICAg
ICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9p
bnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1l
ID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgIGF1dG8mIGludGVybmFs
VHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwotICAgICAgICBh
dXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVt
ZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUp
OwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci0gICAgfQotfQotCi1GcmFnbWVu
dEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50cmluc2ljcyYgaW50
cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50cnlQb2lu
dEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0JiBs
YXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4mKQot
ICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50cmluc2lj
cywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1fc3RhZ2VJblN0cnVjdE5hbWUo
dHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3JldHVyblN0cnVjdE5h
bWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3N0YWdlSW5QYXJh
bWV0ZXJOYW1lKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byYgaW5wdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2ldOwotICAg
ICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+
KCppbnB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91dFNlbWFudGlj
PigqaW5wdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgTmFtZWRTdGFnZUluIG5hbWVkU3RhZ2VJ
bjsKLSAgICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBpOwotICAg
ICAgICBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRT
dHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5k
ZXggPSBzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKTsKLSAgICAgICAgbV9uYW1lZFN0YWdlSW5z
LmFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAgIH0KLQotICAgIG1fbmFtZWRPdXRw
dXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXpl
KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRwdXQgbmFtZWRPdXRwdXQ7Ci0gICAg
ICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3Ry
dWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGU7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPigq
b3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBpbnRlcm5hbFR5cGUgPSBpbnRlcm5h
bFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0
ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gaW50ZXJuYWxUeXBlLnRvU3Ry
aW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91dHB1dEl0ZW0udW5uYW1l
ZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShu
YW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVu
dGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJz
dHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICB7Ci0gICAgICAgIElu
ZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBuYW1lZFN0
YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVO
YW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVtcy5p
bnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBlKTsK
LSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7
Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0
ZUluZGV4OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtYW5nbGVk
VHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBhdHRyaWJ1dGVJbmRl
eCwgIildXTtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICBpbmRlbnQsICJ9O1xuXG4iLAotICAgICAgICBpbmRlbnQsICJzdHJ1Y3QgIiwg
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKLSAgICApOwotICAgIHsKLSAgICAgICAgSW5kZW50
YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1
dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAgICAg
ICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlw
ZU5hbWU7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0u
ZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNl
bWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGluZGVudCwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBh
dHRyaWJ1dGUsICI7XG4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLQotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0
cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsKLX0KLQotdm9pZCBG
cmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50
YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImZy
YWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9z
dGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2Vf
aW5dXSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRl
UHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1
aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVt
aXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5k
ZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKHN0cmluZ0J1
aWxkZXIsIGluZGVudCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRT
dGFnZUlucykgewotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRz
W25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwotICAgICAgICBhdXRv
JiBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLQotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChz
dHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIs
IG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKLSAgICB9
Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmlu
Z0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJpYWJs
ZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgb3V0cHV0VmFyaWFibGVOYW1lLCBJbmRlbnRhdGlv
bjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtX3JldHVy
blN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAgaWYgKG1f
ZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1z
Lm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBt
X25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBp
bnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1l
bnROYW1lOwotICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50
LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5
cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKLSAgICAgICAgZW1pdE1hbmdsZWRPdXRw
dXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKTtcbiIpOwotICAgIH0KLX0KLQotQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6Q29t
cHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rp
b25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1l
ciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVk
VmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotICAgIDogRW50cnlQ
b2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50cmluc2ljcywgdHlwZU5hbWVy
LCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKSkKLXsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xk
aW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50
YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0cmluZ0J1
aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotfQotCi12b2lkIENvbXB1dGVF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5n
QnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+
IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJrZXJuZWwgdm9p
ZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7Ci0gICAgYm9vbCBhZGRlZFRvU2lnbmF0dXJlID0gZW1p
dFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6
Tm8pOwotICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBhZGRlZFRvU2ln
bmF0dXJlID8gSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMgOiBJbmNsdWRlUHJlY2VkaW5nQ29t
bWE6Ok5vKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgQ29t
cHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBzdHJp
bmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jlc291
cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLX0KLQotdm9pZCBD
b21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFu
Z2xlZFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pCi17
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI1NjI4OGNiZWEyNTcx
YWYxZDA5ZDE1MTEyMzE1ODBiZDVlYmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTkyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247
Ci0KLX0KLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtczsKLWNsYXNzIEludHJpbnNpY3M7Ci0KLW5h
bWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotY2xhc3MgRW50cnlQb2ludFNj
YWZmb2xkaW5nIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0PikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVk
RnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbWl0
VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGlu
Z1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pID0gMDsK
LQotICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgcGFyYW1ldGVyVmFyaWFibGVzKCkg
eyByZXR1cm4gbV9wYXJhbWV0ZXJWYXJpYWJsZXM7IH0KLQotcHJvdGVjdGVkOgotICAgIEVudHJ5
UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3MmLCBU
eXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiBy
ZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+
JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLQotICAgIHZvaWQgZW1pdFJlc291cmNlSGVs
cGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+LCBTaGFkZXJTdGFnZSk7Ci0K
LSAgICBlbnVtIGNsYXNzIEluY2x1ZGVQcmVjZWRpbmdDb21tYSB7Ci0gICAgICAgIFllcywKLSAg
ICAgICAgTm8KLSAgICB9OwotICAgIGJvb2wgZW1pdFJlc291cmNlU2lnbmF0dXJlKFN0cmluZ0J1
aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEpOwotICAgIGJvb2wgZW1pdEJ1aWx0SW5zU2ln
bmF0dXJlKFN0cmluZ0J1aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEpOwotCi0gICAgdm9p
ZCBlbWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVjdG9yPFN0cmluZz4mIHBh
dGgpOwotICAgIHZvaWQgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKFN0cmluZ0J1aWxkZXImLCBWZWN0
b3I8U3RyaW5nPiYgcGF0aCk7Ci0gICAgdm9pZCBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRC
dWlsdElucyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pOwotCi0gICAgQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mIG1fZnVuY3Rpb25EZWZpbml0aW9uOwotICAgIEludHJpbnNpY3MmIG1f
aW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwotICAgIEVudHJ5UG9pbnRJ
dGVtcyYgbV9lbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYg
bV9yZXNvdXJjZU1hcDsKLSAgICBMYXlvdXQmIG1fbGF5b3V0OwotICAgIHN0ZDo6ZnVuY3Rpb248
TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZTsKLQotICAg
IHN0cnVjdCBMZW5ndGhJbmZvcm1hdGlvbiB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVt
ZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB0ZW1wb3Jh
cnlOYW1lOwotICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICB9OwotICAgIHN0cnVjdCBOYW1l
ZEJpbmRpbmcgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5h
bWU7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPExlbmd0
aEluZm9ybWF0aW9uPiBsZW5ndGhJbmZvcm1hdGlvbjsKLSAgICB9OwotICAgIHN0cnVjdCBOYW1l
ZEJpbmRHcm91cCB7Ci0gICAgICAgIE1hbmdsZWRUeXBlTmFtZSBzdHJ1Y3ROYW1lOwotICAgICAg
ICBNYW5nbGVkVmFyaWFibGVOYW1lIHZhcmlhYmxlTmFtZTsKLSAgICAgICAgVmVjdG9yPE5hbWVk
QmluZGluZz4gbmFtZWRCaW5kaW5nczsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRCdWZmZXJJ
bmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZEJpbmRHcm91cD4gbV9uYW1lZEJpbmRHcm91
cHM7IC8vIFBhcmFsbGVsIHRvIG1fbGF5b3V0Ci0KLSAgICBzdHJ1Y3QgTmFtZWRCdWlsdEluIHsK
LSAgICAgICAgc2l6ZV90IGluZGV4SW5FbnRyeVBvaW50SXRlbXM7Ci0gICAgICAgIE1hbmdsZWRW
YXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lOwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkQnVpbHRJ
bj4gbV9uYW1lZEJ1aWx0SW5zOwotCi0gICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1f
cGFyYW1ldGVyVmFyaWFibGVzOwotfTsKLQotY2xhc3MgVmVydGV4RW50cnlQb2ludFNjYWZmb2xk
aW5nIGZpbmFsIDogcHVibGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAg
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50
cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyos
IHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJp
YWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8VmVydGV4QXR0
cmlidXRlKiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwg
flZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAg
ICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92
ZXJyaWRlOwotICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1
bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFj
ayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1p
dFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJs
ZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLQot
ICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbV9tYXRjaGVkVmVydGV4QXR0
cmlidXRlczsKLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0TmFtZTsKLSAgICBN
YW5nbGVkVHlwZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRWYXJpYWJsZU5h
bWUgbV9zdGFnZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1lZFN0YWdlSW4gewot
ICAgICAgICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFN0
cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1fbmFtZWRTdGFnZUlu
czsKLQotICAgIHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVF
bGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUg
aW50ZXJuYWxUeXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91dHB1dD4gbV9uYW1l
ZE91dHB1dHM7Ci19OwotCi1jbGFzcyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyBmaW5h
bCA6IHB1YmxpYyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgotICAgIEZyYWdtZW50
RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2lj
cyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5h
bWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8QXR0YWNobWVudERlc2Ny
aXB0b3IqLCBzaXplX3Q+JiBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0gICAgdmlydHVhbCB+
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0g
ICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBv
dmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRG
dW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBh
Y2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVt
aXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFi
bGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0K
LSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0TmFtZTsKLSAgICBNYW5nbGVkVHlw
ZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgbV9zdGFn
ZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1lZFN0YWdlSW4gewotICAgICAgICBz
aXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVs
ZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVJbmRleDsK
LSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1fbmFtZWRTdGFnZUluczsKLQotICAg
IHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFt
ZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgaW50ZXJuYWxU
eXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91dHB1dD4gbV9uYW1lZE91dHB1dHM7
Ci19OwotCi1jbGFzcyBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nIGZpbmFsIDogcHVibGlj
IEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgQ29tcHV0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3MmLCBUeXBlTmFt
ZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJj
ZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLSAgICB2aXJ0dWFsIH5Db21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQgZW1pdEhlbHBlclR5
cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1lLCBJbmRlbnRh
dGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJ
bmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVy
JiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlh
YmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotfTsKLQotfQotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldy
aXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYjQ1OTBhNTVmYzMxN2Iy
NjAyMzFkZTM4YjQyMGZmYTY5N2RhMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xGdW5jdGlvbldyaXRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NzAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9u
V3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRy
eVBvaW50U2NhZmZvbGRpbmcuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFt
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyB2b2lkIGRlY2xhcmVGdW5jdGlvbihTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVj
bGFyYXRpb24sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcpCi17Ci0gICAg
aWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBpdGVyYXRvciA9IGZ1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gZnVuY3Rpb25NYXBwaW5nLmVuZCgp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtp
XS0+dHlwZSgpKSk7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci19
Ci0KLXN0cnVjdCBWYXJpYWJsZSB7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBuYW1lOwotICAg
IE1hbmdsZWRUeXBlTmFtZSB0eXBlOwotfTsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyIDogcHVibGljIFZpc2l0b3IgewotICAgIGNsYXNzIEhvaXN0ZWRWYXJpYWJsZUNvbGxlY3Rv
ciA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICBIb2lzdGVkVmFy
aWFibGVDb2xsZWN0b3IoRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyJiBmdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXIpCi0gICAgICAgICAgICA6IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihmdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFZlY3RvcjxWYXJpYWJsZT4gdmFyaWFibGVzOwotICAgICAgICAg
ICAgc2l6ZV90IHNpemUgPSBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCk7Ci0gICAg
ICAgICAgICBib29sIGlzVm9pZCA9IG1hdGNoZXMoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX2ludHJpbnNpY3Mudm9pZFR5cGUoKSk7Ci0g
ICAgICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAgICAgICAgICAgICArK3NpemU7Ci0gICAgICAg
ICAgICB2YXJpYWJsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLQotICAgICAgICAg
ICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byB0eXBlID0gZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShhcmd1bWVudC0+cmVzb2x2ZWRUeXBlKCkpOwotICAg
ICAgICAgICAgICAgIGF1dG8gbmFtZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMudW5jaGVja2Vk
QXBwZW5kKFZhcmlhYmxlIHsgbmFtZSwgdHlwZSB9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKCFpc1ZvaWQpCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzLnVuY2hlY2tlZEFw
cGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSkgfSk7Ci0KLSAgICAgICAg
ICAgIHRvSG9pc3QuYWRkKCZjYWxsRXhwcmVzc2lvbiwgV1RGTW92ZSh2YXJpYWJsZXMpKTsKLQot
ICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRN
b2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgVmVjdG9yPFZhcmlh
YmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKFZhcmlhYmxlIHsg
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpyZWFk
TW9kaWZ5V3JpdGUub2xkVmFsdWUoKS50eXBlKCkpIH0pOwotICAgICAgICAgICAgdmFyaWFibGVz
LmFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZSgqcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlKCkudHlwZSgpKSB9KTsKLQot
ICAgICAgICAgICAgdG9Ib2lzdC5hZGQoJnJlYWRNb2RpZnlXcml0ZSwgV1RGTW92ZSh2YXJpYWJs
ZXMpKTsKLQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQocmVhZE1vZGlmeVdyaXRlKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciYgZnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOwotICAgICAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxW
YXJpYWJsZT4+IHRvSG9pc3Q7Ci0gICAgfTsKLQotcHVibGljOgotICAgIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbnRyaW5zaWNzJiBpbnRy
aW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBMYXlvdXQmIGxh
eW91dCkKLSAgICAgICAgOiBtX3N0cmluZ0J1aWxkZXIoc3RyaW5nQnVpbGRlcikKLSAgICAgICAg
LCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX3R5cGVOYW1lcih0eXBlTmFt
ZXIpCi0gICAgICAgICwgbV9mdW5jdGlvbk1hcHBpbmcoZnVuY3Rpb25NYXBwaW5nKQotICAgICAg
ICAsIG1fbGF5b3V0KGxheW91dCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gMDsKLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1do
aWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdo
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRl
bWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCb29s
ZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNv
bW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5j
ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbEV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpIG92
ZXJyaWRlOwotCi0gICAgZW51bSBjbGFzcyBMb29wQ29uZGl0aW9uTG9jYXRpb24gewotICAgICAg
ICBCZWZvcmVCb2R5LAotICAgICAgICBBZnRlckJvZHkKLSAgICB9OwotICAgIHZvaWQgZW1pdExv
b3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNvbmRpdGlvbkV4cHJl
c3Npb24sIEFTVDo6RXhwcmVzc2lvbiogaW5jcmVtZW50LCBBU1Q6OlN0YXRlbWVudCYgYm9keSk7
Ci0KLSAgICB2b2lkIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoQVNUOjpDb25zdGFudEV4
cHJlc3Npb24mKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCkgeyByZXR1cm4geyBtX3ZhcmlhYmxlQ291bnQrKyB9OyB9Ci0KLSAgICBlbnVtIGNs
YXNzIEJyZWFrQ29udGV4dCB7Ci0gICAgICAgIExvb3AsCi0gICAgICAgIFN3aXRjaAotICAgIH07
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4gbV9jdXJyZW50QnJlYWtDb250ZXh0
OwotCi0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdCdWlsZGVyOwotICAgIEludHJpbnNpY3Mm
IG1faW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwotICAgIEhhc2hNYXA8
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIG1fZnVuY3Rp
b25NYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgTWFuZ2xl
ZFZhcmlhYmxlTmFtZT4gbV92YXJpYWJsZU1hcHBpbmc7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnlQb2ludFNjYWZmb2xkaW5nPiBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZzsKLSAgICBMYXlv
dXQmIG1fbGF5b3V0OwotICAgIHVuc2lnbmVkIG1fdmFyaWFibGVDb3VudCB7IDAgfTsKLSAgICBz
dGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRMb29w
RWFybHlWYXJpYWJsZTsKLSAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVudCB7IDAgfTsKLSAgICBI
YXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxWYXJpYWJsZT4+IG1faG9pc3RlZFZhcmlh
YmxlczsKLX07Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKQotewotICAgIC8vIFdlIGlubGluZSBuYXRpdmUgZnVu
Y3Rpb24gY2FsbHMuCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotCi0gICAgewot
ICAgICAgICBIb2lzdGVkVmFyaWFibGVDb2xsZWN0b3IgY29sbGVjdG9yKCp0aGlzKTsKLSAgICAg
ICAgY29sbGVjdG9yLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAg
IG1faG9pc3RlZFZhcmlhYmxlcyA9IFdURk1vdmUoY29sbGVjdG9yLnRvSG9pc3QpOwotICAgIH0K
LQotICAgIGF1dG8gZGVmaW5lSG9pc3RlZFZhcmlhYmxlcyA9IFsmXSB7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgdmVjdG9yIDogbV9ob2lzdGVkVmFyaWFibGVzLnZhbHVlcygpKSB7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gdmFyaWFibGUgOiB2ZWN0b3IpCi0gICAgICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgdmFyaWFibGUudHlwZSwgJyAnLCB2YXJpYWJs
ZS5uYW1lLCAiO1xuIik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgYXV0byBpdGVyYXRvciA9
IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgQVNTRVJU
KGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAgICBpZiAoZnVuY3Rpb25E
ZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICAgICAgYXV0byBlbnRyeVBvaW50U2Nh
ZmZvbGRpbmcgPSBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICAgICAgaWYgKCFlbnRyeVBvaW50U2NhZmZvbGRpbmcpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gV1RGTW92ZShlbnRyeVBvaW50
U2NhZmZvbGRpbmcpOwotICAgICAgICAKLSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmct
PmVtaXRIZWxwZXJUeXBlcyhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsKLSAgICAgICAgbV9l
bnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRTaWduYXR1cmUobV9zdHJpbmdCdWlsZGVyLCBpdGVy
YXRvci0+dmFsdWUsIG1faW5kZW50KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCwgIntcbiIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRlbnRhdGlvblNjb3Bl
IHNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmct
PmVtaXRVbnBhY2sobV9zdHJpbmdCdWlsZGVyLCBtX2luZGVudCk7Ci0gICAgICAgIAotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Zh
cmlhYmxlTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0sIG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtpXSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmaW5lSG9pc3RlZFZhcmlhYmxlcygpOwot
Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2Nr
KCkpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cblxuIik7
Ci0KLSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRyOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9PSBudWxscHRyKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9y
LT52YWx1ZSwgJygnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRl
ZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaSkK
LSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAg
ICAgYXV0byYgcGFyYW1ldGVyID0gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXTsK
LSAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQo
JnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+dHlw
ZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpXG4iKTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ7
XG4iKTsKLQotICAgICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0KLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoJ1xuJyk7Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3RhdGVt
ZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RhdGVtZW50KTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQot
ewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICB7Ci0g
ICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAgICAgICBmb3IgKGF1
dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkJyZWFrJikKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50QnJlYWtDb250ZXh0KTsK
LSAgICBzd2l0Y2ggKCptX2N1cnJlbnRCcmVha0NvbnRleHQpIHsKLSAgICBjYXNlIEJyZWFrQ29u
dGV4dDo6U3dpdGNoOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
YnJlYWs7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCcmVha0NvbnRleHQ6Okxvb3A6
Ci0gICAgICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbV9pbmRlbnQsICpt
X2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVlO1xuIiwKLSAgICAg
ICAgICAgIG1faW5kZW50LCAiYnJlYWs7XG4iCi0gICAgICAgICk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q29u
dGludWUmKQotewotICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFi
bGUpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJicmVhaztcbiIpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmVmZmVjdGZ1bEV4cHJlc3Npb24oKSk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiW1tjbGFuZzo6ZmFsbHRocm91Z2hdXTtcbiIpOyAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgwOCBNYWtl
IHN1cmUgdGhpcyBpcyBva2F5LiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBkbyBub3RoaW5nIGFu
ZCBqdXN0IHJldHVybiBoZXJlIGluc3RlYWQuCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjplbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb24gbG9vcENvbmRpdGlvbkxvY2F0
aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNvbmRpdGlvbkV4cHJlc3Npb24sIEFTVDo6RXhwcmVzc2lv
biogaW5jcmVtZW50LCBBU1Q6OlN0YXRlbWVudCYgYm9keSkKLXsKLSAgICBTZXRGb3JTY29wZTxz
dGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+PiBsb29wVmFyaWFibGVTY29wZShtX2Jy
ZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgIG1faW5kZW50LCAi
Ym9vbCAiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gZmFsc2U7
XG4iLAotICAgICAgICBtX2luZGVudCwgIndoaWxlICh0cnVlKSB7XG4iCi0gICAgKTsKLSAgICB7
Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgd2hpbGVTY29wZShtX2luZGVudCk7Ci0KLSAgICAg
ICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkJl
Zm9yZUJvZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgewotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2luZGVudCwgImlmICghKCIpOwotICAg
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIikpXG4iLAot
ICAgICAgICAgICAgICAgICIgICAgYnJlYWs7XG4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkbyB7XG4iKTsKLSAgICAgICAgU2V0Rm9y
U2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50
QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6Okxvb3ApOwotCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluZGVudGF0aW9uU2NvcGUgZG9TY29wZShtX2luZGVudCk7Ci0gICAgICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgIn0gd2hpbGUoZmFsc2UpOyBcbiIpOwotCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgImlmICgiLCAqbV9icmVh
a091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKVxuIiwKLSAgICAgICAgICAgIG1faW5k
ZW50LCAiICAgIGJyZWFrO1xuIik7Ci0KLSAgICAgICAgaWYgKGluY3JlbWVudCkgewotICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKCIpOwotICAgICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCppbmNyZW1lbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKTtcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlv
biA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25kaXRpb25FeHByZXNz
aW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAg
ICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
KmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAgICAgICAgICAgICAgIiAgICBicmVhaztc
biIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2lu
ZGVudCwgIn0gXG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0
KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGVtaXRMb29wKExvb3BDb25k
aXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5LCAmZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSwgbnVs
bHB0ciwgZG9XaGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgZW1pdExvb3Ao
TG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5LCAmd2hpbGVMb29wLmNvbmRpdGlvbmFs
KCksIG51bGxwdHIsIHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0
aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9y
TG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAgICAgICAgZW1pdExvb3AoTG9vcENvbmRpdGlvbkxv
Y2F0aW9uOjpCZWZvcmVCb2R5LCBmb3JMb29wLmNvbmRpdGlvbigpLCBmb3JMb29wLmluY3JlbWVu
dCgpLCBmb3JMb29wLmJvZHkoKSk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsICJpZiAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3Rh
dGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikge1xu
Iik7Ci0KLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgaWZTY29wZShtX2luZGVudCk7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgIH0K
LQotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV9pbmRlbnQsICJ9IGVsc2Uge1xuIik7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluZGVudGF0aW9uU2NvcGUgZWxzZVNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJu
U3RhdGVtZW50KQotewotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkgewotICAgICAg
ICBhdXRvIHRlbXBSZXR1cm5OYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7IAotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUocmV0dXJuU3RhdGVtZW50LnZhbHVlKCktPnJlc29sdmVkVHlwZSgpKSwgJyAn
LCB0ZW1wUmV0dXJuTmFtZSwgIiA9ICIpOyAKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpy
ZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IjtcbiIpOwotCi0gICAgICAgIGlmIChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZykgewotICAgICAg
ICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAg
ICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0UGFjayhtX3N0cmluZ0J1aWxk
ZXIsIHRlbXBSZXR1cm5OYW1lLCB2YXJpYWJsZU5hbWUsIG1faW5kZW50KTsKLSAgICAgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm4gIiwgdmFyaWFibGVOYW1l
LCAiO1xuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2luZGVudCwgInJldHVybiAiLCB0ZW1wUmV0dXJuTmFtZSwgIjtcbiIpOwotICAgIH0g
ZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAicmV0dXJuO1xu
Iik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRj
aFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJzd2l0Y2ggKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hT
dGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7Iik7Ci0K
LSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc3dpdGNoU2NvcGUobV9pbmRlbnQpOwot
ICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2Fz
ZXMoKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLSAgICB9
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hD
YXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCwgImNhc2UgIik7Ci0gICAgICAgIGVtaXRDb25zdGFudEV4
cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIjpcbiIpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1faW5kZW50LCAiZGVmYXVsdDpcbiIpOwotICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0
aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwg
QnJlYWtDb250ZXh0OjpTd2l0Y2gpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNl
LmJsb2NrKCkpOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1ODEyIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRvIGJyZWFrIG9yIGZh
bGx0aHJvdWdoLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJbnRl
Z2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaW50ZWdlckxpdGVyYWwucmVzb2x2ZWRU
eXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmds
ZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIikiKTsKLX0KLQotdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh1bnNpZ25lZEludGVnZXJMaXRlcmFs
LnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2Fz
dDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUo
KSwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtYW5nbGVk
VHlwZU5hbWUsICI+KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVh
bkxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwg
Ym9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsICIpIik7Ci19Ci0KLXZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIEFTU0VSVChlbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgIEFTU0VSVChl
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgIGF1
dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
RW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1l
bWJlcigpKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lv
bik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Okdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBNYW5n
bGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFuZ2xlZEZpZWxkTmFtZSA9IG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5zdHJ1
Y3RGaWVsZCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKS0+IiwgbWFuZ2xlZEZpZWxkTmFtZSk7Ci19Ci0KLXZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJl
c3Npb24pCi17Ci0gICAgYXV0byYgdHlwZSA9IGRvdEV4cHJlc3Npb24uYmFzZSgpLnJlc29sdmVk
VHlwZSgpLnVuaWZ5Tm9kZSgpOwotCi0gICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
bj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0
PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSk7Ci0gICAgICAgIGF1dG8qIHN0cnVjdHVy
ZUVsZW1lbnQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLmZpbmQoZG90RXhwcmVzc2lvbi5maWVsZE5h
bWUoKSk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgYXV0byBl
bGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgq
c3RydWN0dXJlRWxlbWVudCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcp
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLiIsIGVsZW1lbnROYW1lKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgPSBkb3RFeHByZXNzaW9uLmZpZWxkTmFt
ZSgpOwotICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImxlbmd0aCIgJiYgKGlzPEFTVDo6QXJy
YXlSZWZlcmVuY2VUeXBlPih0eXBlKSB8fCBpczxBU1Q6OkFycmF5VHlwZT4odHlwZSkgfHwgKGlz
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkpKSB7Ci0gICAgICAgICAgICBpZiAo
aXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKS5sZW5ndGgiKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpB
cnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9u
LmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBk
b3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkubnVtRWxlbWVudHMoKSwgIikiKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9uLmJh
c2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkudmVjdG9yU2l6ZSgpLCAiKSIp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4
cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiku
IiwgZWxlbWVudE5hbWUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lv
bikKLXsKLSAgICBhdXRvJiB0eXBlID0gaW5kZXhFeHByZXNzaW9uLmJhc2UoKS5yZXNvbHZlZFR5
cGUoKS51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5
cGUpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpLnBvaW50ZXJbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKSA8ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4
RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLmxl
bmd0aCA/ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmlu
ZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIDogMF0i
KTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkgewotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
bmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
KS5kYXRhKClbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9u
LmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA8
ICIsIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS5udW1FbGVtZW50cygpLCAiID8gIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNz
aW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAwXSIpOwotICAgIH0g
ZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpKSB7Ci0gICAgICAg
IGF1dG8mIG5hdGl2ZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
dHlwZSk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemU7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlLmlz
TWF0cml4KCkpCi0gICAgICAgICAgICBzaXplID0gbmF0aXZlVHlwZS5udW1iZXJPZk1hdHJpeENv
bHVtbnMoKTsKLSAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZS5pc1ZlY3RvcigpKQotICAgICAg
ICAgICAgc2l6ZSA9IG5hdGl2ZVR5cGUudmVjdG9yU2l6ZSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhw
cmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpWygiKTsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Np
b24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA8ICIsIHNpemUsICIpID8g
KCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhw
cmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA6IDBdIik7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IAotfQotCi12
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIEFTU0VSVCh2YXJpYWJsZURlY2xhcmF0
aW9uLnR5cGUoKSk7Ci0gICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmdmFy
aWFibGVEZWNsYXJhdGlvbiwgdmFyaWFibGVOYW1lKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBxdWFsaWZpZXJzLgot
ICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0g
Iik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0
aWFsaXplcigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9IHsgfTtcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJl
c3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAoIik7Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewot
ICAgIGF1dG8gaXRlciA9IG1faG9pc3RlZFZhcmlhYmxlcy5maW5kKCZjYWxsRXhwcmVzc2lvbik7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZW5kKCkpOwot
ICAgIGF1dG8mIHZhcmlhYmxlcyA9IGl0ZXItPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJUKGNh
bGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSA8PSB2YXJpYWJsZXMuc2l6ZSgpKTsKLSAg
ICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gYXJndW1lbnROYW1lczsKLQotICAgIE1hbmds
ZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZTsKLSAgICBpZiAoIW1hdGNoZXMoY2FsbEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCksIG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkKLSAgICAgICAgcmVz
dWx0TmFtZSA9IHZhcmlhYmxlcy5sYXN0KCkubmFtZTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJygnKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxFeHByZXNzaW9uLmFy
Z3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGFyZ3VtZW50TmFtZXMuYXBwZW5kKHZh
cmlhYmxlc1tpXS5uYW1lKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJs
ZXNbaV0ubmFtZSwgIiA9ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxFeHBy
ZXNzaW9uLmFyZ3VtZW50cygpW2ldKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
KSwgIik7Ci0gICAgfQotCi0gICAgaWYgKGlzPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpIHsKLSAgICAgICAgaW5saW5lTmF0aXZlRnVu
Y3Rpb24obV9zdHJpbmdCdWlsZGVyLCBkb3duY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpLCBhcmd1bWVudE5hbWVzLCByZXN1bHRO
YW1lLCBtX3R5cGVOYW1lcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9
IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwotICAg
ICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFy
aWFibGVzW2ldLm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoJyknKTsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lv
biYgY29tbWFFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsK
LSAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBj
b21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAgIGlmIChyYW5PbmNlKQotICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgcmFuT25jZSA9IHRydWU7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uKTsKLSAgICB9Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVz
c2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIqKCIpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKLXsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIoKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChs
b2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJykn
KTsKLQotICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7Ci0gICAgY2FzZSBB
U1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkxvZ2ljYWxF
eHByZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIHx8
ICIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikpIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2Fs
Tm90RXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIhKCIpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBi
ZSBtYWRlIHRvIHdvcmsuIEl0IHByb2JhYmx5IHNob3VsZCBiZSB1c2luZyB0aGUgbGFzdCBsZWZ0
VmFsdWUgdG9vLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTg4MzgKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsK
LSAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICJ7ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6OkFy
cmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZl
ZFR5cGUoKSkpIHsKLSAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJh
eVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRU
eXBlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
IiB7ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIi5k
YXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH0iKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgIiB7ICYiKTsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIDEgfSIpOwot
ICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiJigiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBvaW50
ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcp
Jyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkKLXsKLSAgICAvKgotICAgICAq
ICAxLiBFdmFsdWF0ZSBtX2xlZnRWYWx1ZQotICAgICAqICAyLiBBc3NpZ24gdGhlIHJlc3VsdCB0
byBtX29sZFZhbHVlCi0gICAgICogIDMuIEV2YWx1YXRlIG1fbmV3VmFsdWVFeHByZXNzaW9uCi0g
ICAgICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAgICAgKiAgNS4gQXNz
aWduIHRoZSByZXN1bHQgdG8gbV9sZWZ0VmFsdWUKLSAgICAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1
bHRFeHByZXNzaW9uCi0gICAgICogIDcuIFJldHVybiB0aGUgcmVzdWx0Ci0gICAgICovCi0KLSAg
ICBhdXRvIGl0ZXIgPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZmluZCgmcmVhZE1vZGlmeVdyaXRlKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1faG9pc3RlZFZhcmlhYmxlcy5lbmQoKSk7Ci0g
ICAgYXV0byYgdmFyaWFibGVzID0gaXRlci0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQodmFy
aWFibGVzLnNpemUoKSA9PSAyKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgb2xkVmFsdWVW
YXJpYWJsZSA9IHZhcmlhYmxlc1swXS5uYW1lOwotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgbmV3
VmFsdWVWYXJpYWJsZSA9IHZhcmlhYmxlc1sxXS5uYW1lOwotCi0gICAgbV92YXJpYWJsZU1hcHBp
bmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWUoKSwgb2xkVmFsdWVWYXJpYWJsZSk7Ci0g
ICAgbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWUoKSwgbmV3
VmFsdWVWYXJpYWJsZSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0KLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG9sZFZhbHVlVmFyaWFibGUsICIgPSAiKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKTsKLQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgbmV3VmFsdWVWYXJpYWJsZSwgIiA9ICIpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVFeHByZXNzaW9uKCkp
OwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIgPSAiLCBuZXdWYWx1ZVZhcmlhYmxlLCAiLCAiKTsKLQotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpID8gKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5
RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogKCIpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVy
ZW5jZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVuY2Uu
dmFyaWFibGUoKSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFibGVNYXBwaW5nLmVu
ZCgpKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lID0gaXRlcmF0b3It
PnZhbHVlOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFyaWFibGVOYW1lKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJp
bmcoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKLXsKLSAgICBj
b25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgWyZdKEFT
VDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICB9LAotICAg
ICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRl
cmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkZsb2F0TGl0
ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KGZsb2F0TGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6Qm9v
bGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgICAgICBpZiAoYm9vbGVhbkxp
dGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0
cnVlIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiZmFsc2UiKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAg
IEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkp
OwotICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bkRlZmluaXRpb24oKSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVt
ZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVy
KCkpKTsKLSAgICAgICAgfQotICAgICkpOwotfQotCi1jbGFzcyBSZW5kZXJGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKLXB1
YmxpYzoKLSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFt
ZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZT4mIGZ1bmN0aW9uTWFwcGluZywgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1h
bnRpY3MsIExheW91dCYgbGF5b3V0KQotICAgICAgICA6IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cihzdHJpbmdCdWlsZGVyLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywg
bGF5b3V0KQotICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZNb3ZlKG1hdGNoZWRTZW1h
bnRpY3MpKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBNYXRjaGVkUmVuZGVyU2VtYW50aWNz
IG1fbWF0Y2hlZFNlbWFudGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2lu
dFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
Ci17Ci0gICAgYXV0byBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhpc10oKSAtPiBNYW5n
bGVkVmFyaWFibGVOYW1lIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwotICAgIH07Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRj
aGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlv
dXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNz
Lm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9
PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24s
IG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNo
YWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyUmVz
b3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1f
bWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLWNsYXNzIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKLXB1YmxpYzoKLSAgICBDb21wdXRl
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIElu
dHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBp
bmcsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBs
YXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIs
IGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlvdXQpCi0gICAgICAg
ICwgbV9tYXRjaGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGljcykpCi0gICAgewot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xk
aW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24m
KSBvdmVycmlkZTsKLQotICAgIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIG1fbWF0Y2hlZFNlbWFu
dGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENvbXB1
dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1dG8g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gTWFuZ2xlZFZhcmlhYmxlTmFt
ZSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAg
ICB9OwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5z
aGFkZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2NhZmZv
bGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9t
YXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJlc291
cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4gZ2VuZXJhdGVNZXRhbEZ1bmN0aW9uc01hcHBp
bmcoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICB1bnNpZ25lZCBudW1GdW5jdGlvbnMgPSAwOwot
ICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZT4gZnVuY3Rpb25NYXBwaW5nOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDog
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBmdW5jdGlvbk1hcHBpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24sIE1hbmdsZWRGdW5jdGlv
bk5hbWUgeyBudW1GdW5jdGlvbnMrKyB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZnVuY3Rpb25N
YXBwaW5nOwotfQotCi1zdGF0aWMgdm9pZCBlbWl0U2hhcmVkTWV0YWxGdW5jdGlvbnMoU3RyaW5n
QnVpbGRlciYgc3RyaW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBl
TmFtZXIsIGNvbnN0IEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4mIHJlYWNoYWJs
ZUZ1bmN0aW9ucywgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVu
Y3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotewotICAgIGZvciAoYXV0byYgZnVuY3Rpb25E
ZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYg
KCFmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkgJiYgcmVhY2hhYmxlRnVuY3Rp
b25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAgICAgZGVjbGFyZUZ1
bmN0aW9uKHN0cmluZ0J1aWxkZXIsIGZ1bmN0aW9uRGVmaW5pdGlvbiwgdHlwZU5hbWVyLCBmdW5j
dGlvbk1hcHBpbmcpOwotICAgIH0KLQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwot
fQotCi1jbGFzcyBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciBmaW5hbCA6IHB1YmxpYyBWaXNp
dG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYg
ZnVuY3Rpb25EZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVu
Y3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6
OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Np
b24uZnVuY3Rpb24oKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVz
c2lvbi5mdW5jdGlvbigpKSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qPiB0YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jl
YWNoYWJsZUZ1bmN0aW9ucyk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOwotfTsKLQotUmVuZGVyTWV0YWxG
dW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJp
bmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgTWF0Y2hl
ZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewot
ICAgIGF1dG8mIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSAqbWF0Y2hlZFNlbWFudGljcy52ZXJ0
ZXhTaGFkZXI7Ci0gICAgYXV0byogZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID0gbWF0Y2hlZFNl
bWFudGljcy5mcmFnbWVudFNoYWRlcjsKLQotICAgIFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVy
IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyOwotICAgIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhl
cmVyLlZpc2l0b3I6OnZpc2l0KHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlmIChmcmFn
bWVudFNoYWRlckVudHJ5UG9pbnQpCi0gICAgICAgIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVy
LlZpc2l0b3I6OnZpc2l0KCpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGF1dG8gcmVh
Y2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIudGFrZVJlYWNoYWJs
ZUZ1bmN0aW9ucygpOwotCi0gICAgYXV0byBmdW5jdGlvbk1hcHBpbmcgPSBnZW5lcmF0ZU1ldGFs
RnVuY3Rpb25zTWFwcGluZyhwcm9ncmFtKTsKLSAgICAKLSAgICBlbWl0U2hhcmVkTWV0YWxGdW5j
dGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFjaGFibGVGdW5jdGlv
bnMsIGZ1bmN0aW9uTWFwcGluZyk7Ci0KLSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0uaW50cmlu
c2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2VtYW50
aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dy
YW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlv
bnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAgICBmdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50KSwgZnJh
Z21lbnRTaGFkZXJFbnRyeVBvaW50ID8gZnVuY3Rpb25NYXBwaW5nLmdldChmcmFnbWVudFNoYWRl
ckVudHJ5UG9pbnQpIDogTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IDAgfSB9OwotfQotCi1Db21wdXRl
TWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwg
TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91
dCkKLXsKLSAgICBhdXRvJiBlbnRyeVBvaW50ID0gKm1hdGNoZWRTZW1hbnRpY3Muc2hhZGVyOwot
Ci0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVy
ZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6dmlzaXQoZW50cnlQ
b2ludCk7Ci0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVGdW5jdGlvbnNH
YXRoZXJlci50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uTWFw
cGluZyA9IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBwaW5nKHByb2dyYW0pOwotICAgIGVtaXRT
aGFyZWRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIHJl
YWNoYWJsZUZ1bmN0aW9ucywgZnVuY3Rpb25NYXBwaW5nKTsKLQotICAgIENvbXB1dGVGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIs
IHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgV1RGTW92
ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVm
aW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmIChy
ZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAg
ICAgICBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZlbnRyeVBvaW50KSB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU0NDkzOWYxNjE2ZThlMTIzYjU5ZTNlNzgwYjVmOTY2OTQ3MDg4MzMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNs
dWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0K
LWNsYXNzIFR5cGVOYW1lcjsKLQotc3RydWN0IFJlbmRlck1ldGFsRnVuY3Rpb25FbnRyeVBvaW50
cyB7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWU7
Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZTsK
LX07Ci1SZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0
cmluZ0J1aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZFJlbmRlclNlbWFudGlj
cyYmLCBMYXlvdXQmKTsKLQotc3RydWN0IENvbXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMg
ewotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotfTsKLUNv
bXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1
aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiwg
TGF5b3V0Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE1hbmdsZWROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xNYW5nbGVkTmFtZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGI2MDRlZDczZTAyNzM4NjEzZGM2ZGNiYjNjNDU4MzRjMjJkZTllYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0cnVjdCBNYW5nbGVkVmFyaWFibGVO
YW1lIHsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWUg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0gICAgdW5zaWduZWQg
dmFsdWUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ2YXJpYWJsZSI7Ci19OwotCi1zdHJ1
Y3QgTWFuZ2xlZFR5cGVOYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ0eXBlIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVk
U3RydWN0dXJlRWxlbWVudE5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gInN0cnVjdHVyZUVsZW1lbnQiOwotfTsKLQot
c3RydWN0IE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVl
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gImVudW1lcmF0aW9u
TWVtYmVyIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVkRnVuY3Rpb25OYW1lIHsKLSAgICB1bnNpZ25l
ZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJmdW5j
dGlvbiI7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5n
KHByZWZpeCwgdmFsdWUpOyB9Ci19OwotCi11c2luZyBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSA9
IFZhcmlhbnQ8TWFuZ2xlZFR5cGVOYW1lLCBTdHJpbmc+OwotCi19IC8vIG5hbWVzcGFjZSBNZXRh
bAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYW5nbGVkTmFtZVR5cGU+Ci1jbGFz
cyBNYW5nbGVkTmFtZUFkYXB0b3IgewotcHVibGljOgotICAgIE1hbmdsZWROYW1lQWRhcHRvcihN
YW5nbGVkTmFtZVR5cGUgbmFtZSkKLSAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KLSAgICB7Ci0g
ICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gc3RybGVuKE1hbmdsZWROYW1l
VHlwZTo6cHJlZml4KSArIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKG1fbmFtZS52YWx1ZSk7IH0K
LSAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24p
Ci0gICAgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSwg
c3RybGVuKE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSk7Ci0gICAgICAgIHdyaXRlSW50ZWdlclRv
QnVmZmVyKG1fbmFtZS52YWx1ZSwgZGVzdGluYXRpb24gKyBzdHJsZW4oTWFuZ2xlZE5hbWVUeXBl
OjpwcmVmaXgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWFuZ2xlZE5hbWVUeXBlIG1fbmFt
ZTsKLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVkTmFt
ZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lPiB7Ci1w
dWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5n
bGVkVmFyaWFibGVOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUp
Ci0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5n
bGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU+IHsK
LXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRUeXBlTmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQot
ICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJD
b3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSwgdm9pZD4gOiBw
dWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFN0
cnVjdHVyZUVsZW1lbnROYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbmFtZSkKLSAg
ICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLXRlbXBs
YXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5n
bGVkRW51bWVyYXRpb25NZW1iZXJOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5nbGVkTmFtZUFkYXB0
b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lPiB7
Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVB
ZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5
cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSwgdm9p
ZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFu
Z2xlZEZ1bmN0aW9uTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBuYW1lKQotICAgICAgICA6IE1h
bmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+IGNs
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0
aXZlVHlwZU5hbWUsIHZvaWQ+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25z
dCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lJiBuYW1lKQot
ICAgICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBs
ZW5ndGgoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9uYW1lLAotICAg
ICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFt
ZSYgbWFuZ2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmxlbihXZWJD
b3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSArIGxlbmd0aE9mSW50
ZWdlckFzU3RyaW5nKG1hbmdsZWRUeXBlTmFtZS52YWx1ZSk7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAgIHJl
dHVybiBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgfQot
Ci0gICAgYm9vbCBpczhCaXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9uYW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRUeXBlTmFtZSYpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdy
aXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBXVEY6OnN3
aXRjaE9uKG1fbmFtZSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpNYW5nbGVkVHlwZU5hbWUmIG1hbmdsZWRUeXBlTmFtZSkgewotICAgICAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6OnBy
ZWZpeCksIHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJl
Zml4KSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIobWFuZ2xlZFR5cGVO
YW1lLnZhbHVlLCBkZXN0aW5hdGlvbiArIHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRUeXBlTmFtZTo6cHJlZml4KSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZd
IChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcgeyBz
dHJpbmcgfS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG1fbmFtZTsKLX07Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0
YWxDb2RlR2VuZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhhZmVi
ZGE1NmQ2ZDY3MzAxOGQ4MzFhZjY0MzJmMzdkMTYxN2IyMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbldyaXRlci5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZU5hbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBNZXRh
bENvZGUgPSBmYWxzZTsKLQotc3RhdGljIFN0cmluZ1ZpZXcgbWV0YWxDb2RlUHJvbG9ndWUoKQot
ewotICAgIHJldHVybiBTdHJpbmdWaWV3IHsKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9zdGRs
aWI+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIgotICAgICAgICAiI2lu
Y2x1ZGUgPG1ldGFsX21hdGg+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfcmVsYXRpb25h
bD5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIgotICAgICAgICAiI2lu
Y2x1ZGUgPG1ldGFsX3RleHR1cmU+XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInVzaW5nIG5h
bWVzcGFjZSBtZXRhbDtcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidGVtcGxhdGUgPHR5cGVu
YW1lIFQsIGludCBDb2xzLCBpbnQgUm93cz5cbiIKLSAgICAgICAgInN0cnVjdCBXU0xNYXRyaXhc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM8VCwgUm93cz4gY29sdW1uc1tDb2xz
XTtcbiIKLSAgICAgICAgIiAgICBwcml2YXRlOlxuIgotICAgICAgICAiICAgIHB1YmxpYzpcbiIK
LSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAg
ICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAg
ICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkIFdTTE1hdHJpeDxULCBDb2xz
LCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUg
V1NMTWF0cml4KGNvbnN0IGRldmljZSBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRo
cmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCBj
b25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7
XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWRncm91cCBXU0xN
YXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAg
ICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWQgV1NMTWF0cml4PFQsIENvbHMsIFJv
d3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdT
TE1hdHJpeChjb25zdCBkZXZpY2UgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSBjb25z
dGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCBj
b25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVmYXVs
dDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZGdyb3VwIFdT
TE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAg
ICAgICAiICAgIHB1YmxpYzpcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgdGhyZWFkIHZlYzxULCBS
b3dzPiAmb3BlcmF0b3JbXShpbnQgcikgdGhyZWFkXG4iCi0gICAgICAgICIgICAge1xuIgotICAg
ICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0g
ICAgICAgICIgICAgaW5saW5lIGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIp
IGRldmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNv
bHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSB0aHJl
YWRncm91cCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIHRocmVhZGdyb3VwXG4iCi0g
ICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIK
LSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0IHRocmVhZCB2ZWM8
VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNvbnN0IHRocmVhZFxuIgotICAgICAgICAiICAg
IHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIg
ICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBjb25zdCBkZXZpY2UgdmVjPFQsIFJvd3M+ICZv
cGVyYXRvcltdKGludCByKSBjb25zdCBkZXZpY2VcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAg
ICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAg
ICAgICAgIiAgICBpbmxpbmUgY29uc3QgY29uc3RhbnQgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltd
KGludCByKSBjb25zdCBjb25zdGFudFxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAg
ICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAi
ICAgIGlubGluZSBjb25zdCB0aHJlYWRncm91cCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50
IHIpIGNvbnN0IHRocmVhZGdyb3VwXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAg
ICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICJ9
O1xuIgotCi0KLSAgICB9OwotCi19Ci0KLXN0YXRpYyB2b2lkIGR1bXBNZXRhbENvZGVJZk5lZWRl
ZChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIGlmIChkdW1wTWV0YWxDb2Rl
KSB7Ci0gICAgICAgIGRhdGFMb2dMbigiR2VuZXJhdGVkIE1ldGFsIGNvZGU6ICIpOwotICAgICAg
ICBkYXRhTG9nTG4oc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9Ci19Ci0KLVJlbmRl
ck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9ncmFtLCBNYXRjaGVkUmVu
ZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1l
dGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlwZU5hbWVyIHR5cGVOYW1lcihwcm9ncmFtKTsK
LSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMoc3RyaW5nQnVpbGRlcik7Ci0gICAgCi0gICAg
YXV0byBtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgPSBNZXRhbDo6ZW1pdE1ldGFsRnVuY3Rpb25z
KHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgV1RGTW92ZShtYXRjaGVkU2VtYW50
aWNzKSwgbGF5b3V0KTsKLQotICAgIGR1bXBNZXRhbENvZGVJZk5lZWRlZChzdHJpbmdCdWlsZGVy
KTsKLQotICAgIHJldHVybiB7IFdURk1vdmUoc3RyaW5nQnVpbGRlciksIFdURk1vdmUobWV0YWxG
dW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSksIFdURk1vdmUo
bWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lKSB9
OwotfQotCi1Db21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHByb2dy
YW0sIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBs
YXlvdXQpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ldGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlwZU5hbWVyIHR5cGVO
YW1lcihwcm9ncmFtKTsKLSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMoc3RyaW5nQnVpbGRl
cik7Ci0KLSAgICBhdXRvIG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyA9IE1ldGFsOjplbWl0TWV0
YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCBXVEZNb3ZlKG1h
dGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotCi0gICAgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKHN0
cmluZ0J1aWxkZXIpOwotCi0gICAgcmV0dXJuIHsgV1RGTW92ZShzdHJpbmdCdWlsZGVyKSwgV1RG
TW92ZShtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMubWFuZ2xlZEVudHJ5UG9pbnROYW1lKSB9Owot
fQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xN
ZXRhbENvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNjNDg3NjE3Y2I5MDVhZTJlYjA2OTQwYTE3NGU0MDk1ODJiOGMzYmIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExTTFNl
bWFudGljTWF0Y2hlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFt
OwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdHJ1Y3QgUmVuZGVyTWV0YWxDb2RlIHsKLSAgICBT
dHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xl
ZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEZy
YWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotLy8gQ2FuJ3QgZmFpbC4gQW55IGZhaWx1cmUgY2hl
Y2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJsaWVyLCBpbiB0aGUgYmFja2VuZC1hZ25vc3RpYyBwYXJ0
IG9mIHRoZSBjb21waWxlci4KLVJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9n
cmFtJiwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYp
OwotCi1zdHJ1Y3QgQ29tcHV0ZU1ldGFsQ29kZSB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNv
dXJjZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKLX07
Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3MgbmVlZCB0byBiZSBkb25lIGVhcmxp
ZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2YgdGhlIGNvbXBpbGVyLgotQ29tcHV0
ZU1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiwgTWF0Y2hlZENvbXB1dGVTZW1h
bnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmKTsKLQotfQotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVG
dW5jdGlvbldyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZDJjOGE4
N2JjNjdjOWZlNjJjZTNlNjQ0YTY2NGE4NjRjNDY1ZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw2NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldITFNMQWRkcmVz
c1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2lu
Y2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xU
eXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMg
U3RyaW5nIG1hcEZ1bmN0aW9uTmFtZShTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBpZiAo
ZnVuY3Rpb25OYW1lID09ICJkZHgiKQotICAgICAgICByZXR1cm4gImRmZHgiX3N0cjsKLSAgICBp
ZiAoZnVuY3Rpb25OYW1lID09ICJkZHkiKQotICAgICAgICByZXR1cm4gImRmZHkiX3N0cjsKLSAg
ICBpZiAoZnVuY3Rpb25OYW1lID09ICJhc2ludCIpCi0gICAgICAgIHJldHVybiAiYXNfdHlwZTxp
bnQzMl90PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFzdWludCIpCi0gICAgICAg
IHJldHVybiAiYXNfdHlwZTx1aW50MzJfdD4iX3N0cjsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09
ICJhc2Zsb2F0IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGZsb2F0PiJfc3RyOwotICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYXRvbWljTmFtZShTdHJpbmcg
aW5wdXQpCi17Ci0gICAgaWYgKGlucHV0ID09ICJBZGQiKQotICAgICAgICByZXR1cm4gImZldGNo
X2FkZCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiQW5kIikKLSAgICAgICAgcmV0dXJuICJmZXRj
aF9hbmQiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIkV4Y2hhbmdlIikKLSAgICAgICAgcmV0dXJu
ICJleGNoYW5nZSJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiTWF4IikKLSAgICAgICAgcmV0dXJu
ICJmZXRjaF9tYXgiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk1pbiIpCi0gICAgICAgIHJldHVy
biAiZmV0Y2hfbWluIl9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJPciIpCi0gICAgICAgIHJldHVy
biAiZmV0Y2hfb3IiX3N0cjsKLSAgICBBU1NFUlQoaW5wdXQgPT0gIlhvciIpOwotICAgICAgICBy
ZXR1cm4gImZldGNoX3hvciJfc3RyOwotfQotCi1zdGF0aWMgaW50IHZlY3Rvckxlbmd0aChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlu
dCB2ZWN0b3JMZW5ndGggPSAxOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBBU1NFUlQoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xh
cmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgICAgICB2ZWN0b3JMZW5ndGggPSBXVEY6
OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKVsxXSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLSAgICByZXR1
cm4gdmVjdG9yTGVuZ3RoOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogdmVjdG9yU3VmZml4KGlu
dCB2ZWN0b3JMZW5ndGgpCi17Ci0gICAgc3dpdGNoICh2ZWN0b3JMZW5ndGgpIHsKLSAgICBjYXNl
IDE6Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiAiMiI7
Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gIjMiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVCh2ZWN0b3JMZW5ndGggPT0gNCk7Ci0gICAgICAgIHJldHVybiAiNCI7Ci0gICAgfQot
fQotCi1lbnVtIGNsYXNzIFNhbXBsZVR5cGUgewotICAgIFNhbXBsZSwKLSAgICBTYW1wbGVMZXZl
bCwKLSAgICBTYW1wbGVCaWFzLAotICAgIFNhbXBsZUdyYWQKLX07Ci0KLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUp
Ci17Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlIikKLSAgICAgICAgcmV0dXJuIFNh
bXBsZVR5cGU6OlNhbXBsZTsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVMZXZlbCIp
Ci0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDsKLSAgICBpZiAoZnVuY3Rp
b25OYW1lID09ICJTYW1wbGVCaWFzIikKLSAgICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBs
ZUJpYXM7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlR3JhZCIpCi0gICAgICAgIHJl
dHVybiBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19
Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
ciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIGFyZ3MsIE1hbmdsZWRWYXJp
YWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIpCi17Ci0gICAgYXV0byBh
c01hdHJpeFR5cGUgPSBbJl0gKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSAtPiBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAgICBhdXRvJiByZWFsVHlwZSA9IHVubmFt
ZWRUeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIXJlYWxUeXBlLmlzTmF0aXZlVHlwZURl
Y2xhcmF0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBhdXRv
JiBtYXliZU1hdHJpeFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
cmVhbFR5cGUpOwotICAgICAgICBpZiAobWF5YmVNYXRyaXhUeXBlLmlzTWF0cml4KCkpCi0gICAg
ICAgICAgICByZXR1cm4gJm1heWJlTWF0cml4VHlwZTsKLQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9OwotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaXNDYXN0KCkp
IHsKLSAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
dHlwZSgpOwotICAgICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZU5hbWUgPSB0eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUpOwotCi0gICAgICAgIGlmICghbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVOYW1lLCAiIHsgfSIpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBhdXRvJiBwYXJhbWV0
ZXJUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBl
KCk7Ci0KLSAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRlZmluaXRpb24gPSBbXSAoYXV0
byYgdHlwZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBpczxBU1Q6Ok5hbWVkVHlwZT4odHlw
ZSkgJiYgaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRU
eXBlPih0eXBlKSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYXV0byYgdW5pZmllZFJl
dHVyblR5cGUgPSByZXR1cm5UeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGlzRW51
bWVyYXRpb25EZWZpbml0aW9uKHVuaWZpZWRSZXR1cm5UeXBlKSAmJiAhaXNFbnVtZXJhdGlvbkRl
ZmluaXRpb24ocGFyYW1ldGVyVHlwZS51bmlmeU5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZpZWRSZXR1cm5UeXBlKSk7Ci0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1ldGFs
UmV0dXJuVHlwZU5hbWUsICI+KCgiKTsKLSAgICAgICAgICAgICAgICBib29sIGxvb3BlZE9uY2Ug
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBib29sIGhhc1plcm9DYXNlID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51
bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3BlZE9uY2Up
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIHx8ICIpOwot
ICAgICAgICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMF0sICIgPT0g
IiwgbWVtYmVyLmdldCgpLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBsb29wZWRPbmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwotCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIikgPyAiLCBhcmdzWzBdLCAiIDogMCkiKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBt
ZXRhbFJldHVyblR5cGVOYW1lLCAiPigiLCBhcmdzWzBdLCAiKSIpOwotCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0
cml4VHlwZShyZXR1cm5UeXBlKSkgewotICAgICAgICAgICAgLy8gV2UncmUgZWl0aGVyIGNvbnN0
cnVjdGluZyB3aXRoIGFsbCBpbmRpdmlkdWFsIGVsZW1lbnRzLCBvciB3aXRoCi0gICAgICAgICAg
ICAvLyB2ZWN0b3JzIGZvciBlYWNoIGNvbHVtbi4KLQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGlmIChhcmdzLnNpemUoKSA9PSBtYXRyaXhUeXBl
LT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSkgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVj
dGluZyB3aXRoIHZlY3RvcnMgZm9yIGVhY2ggY29sdW1uLgotICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1l
LCAiLmNvbHVtbnNbIiwgaSwgIl0gPSAiLCBhcmdzW2ldKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGluZyB3aXRo
IGFsbCBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmdzLnNpemUo
KSA9PSBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSAqIG1hdHJpeFR5cGUtPm51
bWJlck9mTWF0cml4Um93cygpKTsKLQotICAgICAgICAgICAgICAgIHNpemVfdCBhcmdOdW1iZXIg
PSAwOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0cml4VHlwZS0+
bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpOyArK2op
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdOdW1iZXIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAiLmNvbHVtbnNbIiwg
aSwgIl1bIiwgaiwgIl0gPSAiLCBhcmdzW2FyZ051bWJlcl0pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgKythcmdOdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVOYW1lLCAnKCcpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoYXJnc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLmlzT3BlcmF0b3IoKSkgewotICAgICAgICBhdXRvIG9wZXJhdG9y
TmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygib3BlcmF0
b3IiX3N0ci5sZW5ndGgoKSk7Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG9r
IHRvIGRvIHNpbmNlIHRoZSBhcmdzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIGFsbCB0ZW1wcy4KLSAg
ICAgICAgICAgIC8vIFNvIHRoaW5ncyBsaWtlICsrIGFuZCAtLSBhcmUgb2sgdG8gZG8uCi0KLSAg
ICAgICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24udHlwZSgpKSkgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
dHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0
TmFtZSwgJ1snLCBpLCAiXSA9ICIsIG9wZXJhdG9yTmFtZSwgYXJnc1swXSwgJ1snLCBpLCAnXScp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3BlcmF0b3JOYW1lLCBhcmdzWzBdKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIGlmIChhdXRv
KiBsZWZ0TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVswXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHJpZ2h0TWF0
cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVsxXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8b3A+IG1hdHJpeAot
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlZnRNYXRyaXgtPm51bWJlck9mTWF0cml4Q29s
dW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIGFyZ3Nb
MF0sICdbJywgaSwgIl0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICdbJywgaSwgJ10n
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgLy8gbWF0cml4IDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChy
ZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJ1snLCBpLCAiXSAiLCBvcGVyYXRv
ck5hbWUsICcgJywgYXJnc1sxXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYXV0byogcmlnaHRNYXRyaXggPSBhc01hdHJpeFR5cGUo
Km5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoIWFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4g
bWF0cml4Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJpZ2h0TWF0cml4LT5udW1iZXJPZk1hdHJpeENv
bHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdzWzBdLCAnICcsIG9w
ZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnWycsIGksICddJyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4gc2NhbGFyCi0gICAg
ICAgICAgICAvLyB2ZWN0b3IgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIC8vIHZlY3RvciA8b3A+
IHNjYWxhcgotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4gdmVjdG9yCi0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAnKCcsIGFyZ3NbMF0sICcgJywg
b3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJjb3MiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJzaW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJ0
YW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhY29z
IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXNpbiIK
LSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4iCi0g
ICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjb3NoIgotICAg
ICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic2luaCIKLSAgICAg
ICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRhbmgiCi0gICAgICAg
IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjZWlsIgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZXhwIgotICAgICAgICB8fCBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvb3IiCi0gICAgICAgIHx8IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsb2ciCi0gICAgICAgIHx8IG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJyb3VuZCIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRydW5jIgotICAgICAgICB8fCBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR4IgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR5IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNub3JtYWwiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJpc2Zpbml0ZSIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzaW5mIgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNuYW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2ludCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzdWludCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzZmxvYXQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsZW5ndGgiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbWFwRnVuY3Rpb25OYW1lKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygnLCBhcmdzWzBdLCAnKScpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJwb3ciIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdGFu
MiIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgJygnLCBhcmdzWzBdLCAiLCAi
LCBhcmdzWzFdLCAnKScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjbGFtcCIpIHsKLSAgICAgICAgQVNTRVJU
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKLQot
ICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCcoJyk7Ci0gICAgICAgICAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG1hdHJp
eFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJhbk9uY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgcmFuT25jZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0TmFtZSwgJ1snLCBpLCAiXVsiLCBqLCAiXSA9IGNsYW1wKCIsIGFyZ3NbMF0sICdbJywg
aSwgIl1bIiwgaiwgIl0sICIsIGFyZ3NbMV0sICdbJywgaSwgIl1bIiwgaiwgIl0sICIsIGFyZ3Nb
Ml0sICdbJywgaSwgIl1bIiwgaiwgIl0pIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwg
IikiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICAgICAgICAgICJjbGFtcCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCAi
LCBhcmdzWzJdLCAnKScpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkFsbE1lbW9yeUJhcnJp
ZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICAgICAgIih0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2Rldmlj
ZSksIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApLCB0aHJl
YWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RleHR1cmUpKSIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJUKCFu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJ0aHJlYWRncm91cF9iYXJyaWVyKG1l
bV9mbGFnczo6bWVtX2RldmljZSkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3JvdXBNZW1vcnlCYXJyaWVy
V2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICJ0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdy
b3VwKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVybG9ja2VkIl9zdHIpKSB7Ci0gICAg
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiSW50ZXJsb2NrZWRD
b21wYXJlRXhjaGFuZ2UiKSB7Ci0gICAgICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIihhdG9taWNfY29tcGFyZV9leGNoYW5nZV93
ZWFrX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICYiLCBhcmdzWzFdLCAiLCAiLCBhcmdzWzJdLCAi
LCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpLCAiLAotICAgICAg
ICAgICAgICAgICcqJywgYXJnc1szXSwgIiA9ICIsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotICAgICAgICBhdXRvIG5hbWUgPSBh
dG9taWNOYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygiSW50
ZXJsb2NrZWQiX3N0ci5sZW5ndGgoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICcqJywgYXJnc1syXSwgIiA9IGF0b21pY18iLCBuYW1lLCAiX2V4cGxpY2l0
KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gc2FtcGxlVHlwZSA9IFdITFNM
OjpNZXRhbDo6c2FtcGxlVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSkpIHsK
LSAgICAgICAgc2l6ZV90IGJhc2VBcmd1bWVudENvdW50ID0gMDsKLSAgICAgICAgc3dpdGNoICgq
c2FtcGxlVHlwZSkgewotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZToKLSAgICAgICAg
ICAgIGJhc2VBcmd1bWVudENvdW50ID0gMzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNh
bXBsZUJpYXM6Ci0gICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgotICAgICAgICAg
ICAgYmFzZUFyZ3VtZW50Q291bnQgPSA1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNp
emUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgKyAxKTsKLSAgICAgICAgCi0g
ICAgICAgIGF1dG8mIHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvJiBs
b2NhdGlvblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
WzJdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gbG9jYXRpb25WZWN0b3JM
ZW5ndGggPSB2ZWN0b3JMZW5ndGgobG9jYXRpb25UeXBlKTsKLSAgICAgICAgYXV0byYgcmV0dXJu
VHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6
Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkudW5pZnlOb2RlKCkp
KTsKLSAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgocmV0dXJu
VHlwZSk7Ci0KLSAgICAgICAgaW50IGFyZ3VtZW50SW5kZXggPSAwOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLnNhbXBsZSgiLCBhcmdzW2FyZ3Vt
ZW50SW5kZXggKyAxXSwgIiwgIik7Ci0gICAgICAgIGFyZ3VtZW50SW5kZXggKz0gMjsKLQotICAg
ICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgQVNT
RVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbYXJndW1lbnRJbmRleF0sICcu
JywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7Ci0g
ICAgICAgICAgICArK2FyZ3VtZW50SW5kZXg7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4KytdKTsKLQotICAgICAgICBz
d2l0Y2ggKCpzYW1wbGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlTGV2ZWw6
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBsZXZlbCgiLCBhcmdzW2FyZ3Vt
ZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1w
bGVUeXBlOjpTYW1wbGVCaWFzOgotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
YmlhcygiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgotICAgICAgICAgICAgaWYgKHRl
eHR1cmVUeXBlLmlzQ3ViZVRleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiLCBncmFkaWVudGN1YmUoIiwgYXJnc1thcmd1bWVudEluZGV4XSwgIiwgIiwgYXJn
c1thcmd1bWVudEluZGV4ICsgMV0sICIpIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnQyZCgiLCBhcmdzW2FyZ3VtZW50
SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIikiKTsKLSAgICAgICAgICAg
IGFyZ3VtZW50SW5kZXggKz0gMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSBiYXNlQXJndW1lbnRDb3VudCArIDEpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKSIpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkxvYWQiKSB7Ci0gICAg
ICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMik7Ci0KLSAgICAgICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAg
ICAgIGF1dG8mIGxvY2F0aW9uVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKClbMV0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byBsb2Nh
dGlvblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChsb2NhdGlvblR5cGUpOwotICAgICAgICBh
dXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRv
d25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKS51
bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxl
bmd0aChyZXR1cm5UeXBlKTsKLSAgICAgICAgYXV0byBsb2NhdGlvblR5cGVOYW1lID0gdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2NhdGlvblR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcoJywgYXJnc1sxXSwgIiA9ICIpOwotICAgICAgICBpZiAodGV4dHVyZVR5
cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9y
TGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiY2xhbXAoIiwg
YXJnc1sxXSwgIiwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygnKTsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAi
KTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnMCcpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIsIGxvY2F0aW9uVHlw
ZU5hbWUsICcoJyk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0
aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07Ci0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICAgICBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkgLSAxIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkgLSAxKSkiKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAiLCAwLCAiLCBh
cmdzWzBdLCAiLmdldF93aWR0aCgpIC0gMSkiKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAiLCAiLCBs
b2NhdGlvblR5cGVOYW1lLCAiKDAsIDAiKTsKLSAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25W
ZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgMCIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiLCBs
b2NhdGlvblR5cGVOYW1lLCAnKCcsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkgLSAxLCAiLCBhcmdz
WzBdLCAiLmdldF9oZWlnaHQoKSAtIDEiKTsKLSAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25W
ZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSAtIDEiKTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKSkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbMF0sICIucmVhZCgiKTsKLQot
ICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAnKCcsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0
b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0
cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzFdLCAnKScpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0
dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsICJ4eXp3Il9zdHIu
c3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKLSAgICAgICAgQVNTRVJU
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiYXRvbWljX2xvYWRfZXhw
bGljaXQoIiwgYXJnc1swXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gInN0b3JlIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICJhdG9taWNfc3RvcmVfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgIiwgYXJn
c1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdldERpbWVu
c2lvbnMiKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0KLSAgICAgICAg
YXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
ZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gMTsKLSAgICAgICAgYm9vbCBoYXNNaXBMZXZlbCA9ICF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxl
VGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxOwotICAgICAg
ICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICBjb25zdCBN
YW5nbGVkVmFyaWFibGVOYW1lJiB3aWR0aE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgKytp
bmRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBoZWlnaHRO
YW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpID49IDIpIHsK
LSAgICAgICAgICAgIGhlaWdodE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsraW5k
ZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1l
PiBkZXB0aE5hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkg
Pj0gMykgewotICAgICAgICAgICAgZGVwdGhOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICAg
ICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlh
YmxlTmFtZT4gZWxlbWVudHNOYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJl
QXJyYXkoKSkgewotICAgICAgICAgICAgZWxlbWVudHNOYW1lID0gYXJnc1tpbmRleF07Ci0gICAg
ICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xl
ZFZhcmlhYmxlTmFtZT4gbnVtYmVyT2ZMZXZlbHNOYW1lOwotICAgICAgICBpZiAoIXRleHR1cmVU
eXBlLmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigp
ICE9IDEpIHsKLSAgICAgICAgICAgIG51bWJlck9mTGV2ZWxzTmFtZSA9IGFyZ3NbaW5kZXhdOwot
ICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoaW5kZXggPT0g
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLQotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICcqJywgd2lkdGhOYW1lLCAiID0g
IiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoIik7Ci0gICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAgICAgIGlmIChoZWlnaHROYW1lKSB7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKmhlaWdo
dE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoIik7Ci0gICAgICAgICAgICBpZiAo
aGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sx
XSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChkZXB0aE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAotICAgICAgICAgICAgICAgICIsICoiLCAqZGVwdGhOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5n
ZXRfZGVwdGgoIik7Ci0gICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlbGVtZW50c05hbWUpIHsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIsICoi
LCAqZWxlbWVudHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKG51bWJlck9mTGV2ZWxzTmFtZSkgewotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICpudW1iZXJPZkxl
dmVsc05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9udW1fbWlwX2xldmVscygpIik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJHYXRoZXIiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJHYXRoZXJSZWQiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJTYW1wbGVDbXAiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJTYW1wbGVDbXBMZXZlbFplcm8iKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVu
dCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJTdG9yZSIpIHsKLSAgICAgICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVt
ZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckFscGhhIikgewotICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgx
MyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQmx1ZSIpIHsK
LSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckNt
cCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdh
dGhlckNtcFJlZCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIkdhdGhlckdyZWVuIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5h
dGl2ZUZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIwODExMGFlNTliYWMwMTRjM2JiNTdkNDkwMDFlZTE0Mjc4MTE4ZWYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFt
ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBJbnRyaW5zaWNzOwotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBUeXBlTmFtZXI7
Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYsIEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYg
YXJndW1lbnROYW1lcywgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXN1bHROYW1lLCBUeXBlTmFtZXIm
KTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TmF0aXZlVHlwZVdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhYTY4Y2JkMWVjZDVlYWM0YjlmYjM5ZWRjODY1OTliMTE1NTA3ZGM0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgTWV0YWwgewotCi1TdHJpbmcgd3JpdGVOYXRpdmVUeXBlKEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gInZvaWQiKQotICAgICAgICByZXR1cm4gInZvaWQiX3N0cjsKLSAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAgIHJl
dHVybiAiYm9vbCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJ1aW50IikKLSAgICAgICAgcmV0dXJuICJ1aW50MzJfdCJfc3RyOwotICAgIGlmIChuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJpbnQiKQotICAgICAgICByZXR1cm4gImludDMyX3Qi
X3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvYXQiKQot
ICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gImF0b21pY19pbnQiKQotICAgICAgICByZXR1cm4gImF0b21pY19pbnQiX3N0
cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRvbWljX3VpbnQi
KQotICAgICAgICByZXR1cm4gImF0b21pY191aW50Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNhbXBsZXIiKQotICAgICAgICByZXR1cm4gInNhbXBsZXIi
X3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidmVjdG9yIikg
ewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5z
aXplKCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxB
U1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
WzBdKSk7Ci0gICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNUOjpU
eXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7
Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHR5cGVSZWZlcmVuY2UtPnVuaWZ5Tm9kZSgpOwot
ICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKTsKLSAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvIHByZWZpeCA9IChbJl0o
KSAtPiBTdHJpbmcgewotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJi
b29sIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wiOwotICAgICAgICAgICAgaWYgKHBh
cmFtZXRlclR5cGUubmFtZSgpID09ICJ1aW50IikKLSAgICAgICAgICAgICAgICByZXR1cm4gInVp
bnQiOwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJpbnQiKQotICAg
ICAgICAgICAgICAgIHJldHVybiAiaW50IjsKLSAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJU
eXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAg
ICAgICB9KSgpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsx
XSkpOwotICAgICAgICBhdXRvJiBjb25zdGFudEV4cHJlc3Npb24gPSBXVEY6OmdldDxBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsx
XSk7Ci0gICAgICAgIGF1dG8mIGludGVnZXJMaXRlcmFsID0gY29uc3RhbnRFeHByZXNzaW9uLmlu
dGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGF1dG8gc3VmZml4ID0gKFsmXSgpIC0+IFN0cmluZyB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjIiX3N0cjsKLSAgICAgICAgICAg
IGNhc2UgMzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjMiX3N0cjsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGludGVnZXJMaXRlcmFsLnZhbHVlKCkgPT0g
NCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICI0Il9zdHI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pKCk7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwgc3VmZml4KTsKLSAg
ICB9Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIm1hdHJpeCIpIHsK
LSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpID09IDMpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNU
OjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsw
XSkpOwotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6VHlw
ZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwot
ICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAg
ICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9k
ZSk7Ci0gICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byBwcmVmaXggPSAoWyZdIHsK
LSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJUeXBl
Lm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAg
ICB9KSgpOwotCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJXU0xNYXRyaXg8IiwgcHJlZml4
LCAiLCAiLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCksICIs
ICIsIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5udW1iZXJPZk1hdHJpeFJvd3MoKSwgIj4iKTsKLSAg
ICB9Ci0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7
Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVu
Y2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICBhdXRv
IHByZWZpeCA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVy
ZTFkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUxRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUxZCJfc3RyOwotICAgICAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEQXJyYXkiKQot
ICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiKQotICAgICAg
ICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyRCIpCi0gICAgICAgICAgICByZXR1cm4g
InRleHR1cmUyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMkQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmQiX3N0cjsK
LSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyREFy
cmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9zdHI7Ci0gICAgICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5IikK
LSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9zdHI7Ci0gICAgICAgIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlM0QiKQotICAgICAgICAgICAg
cmV0dXJuICJ0ZXh0dXJlM2QiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTNk
Il9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0
dXJlQ3ViZSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmVjdWJlIl9zdHI7Ci0gICAgICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGgyRCIpCi0g
ICAgICAgICAgICByZXR1cm4gImRlcHRoMmQiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEQXJyYXkiKQotICAgICAgICAgICAg
cmV0dXJuICJkZXB0aDJkX2FycmF5Il9zdHI7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGhDdWJlIik7Ci0gICAgICAgIHJldHVybiAi
ZGVwdGhjdWJlIl9zdHI7Ci0gICAgfSkoKTsKLSAgICBhdXRvIGlubmVyVHlwZSA9IChbJl0oKSAt
PiBTdHJpbmcgewotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50IikK
LSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5j
ZS0+bmFtZSgpID09ICJ1aW50MiIpCi0gICAgICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsKLSAg
ICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDMiKQotICAgICAgICAgICAg
cmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0g
InVpbnQ0IikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAodHlw
ZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQiKQotICAgICAgICAgICAgcmV0dXJuICJpbnQiX3N0
cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50MiIpCi0gICAgICAg
ICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgp
ID09ICJpbnQzIikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0gICAgICAgIGlmICh0
eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDQiKQotICAgICAgICAgICAgcmV0dXJuICJpbnQi
X3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiZmxvYXQiKQotICAg
ICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+
bmFtZSgpID09ICJmbG9hdDIiKQotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAg
ICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdDMiKQotICAgICAgICAgICAg
cmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBBU1NFUlQodHlwZVJlZmVyZW5jZS0+bmFtZSgp
ID09ICJmbG9hdDQiKTsKLSAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgIH0pKCk7Ci0g
ICAgYXV0byBpc1JlYWRXcml0ZSA9IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJX
VGV4dHVyZTFEIgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUxREFycmF5IgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJSV1RleHR1cmUyRCIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMkRBcnJheSIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwg
JzwnLCBpbm5lclR5cGUsICIsICIsIGlzUmVhZFdyaXRlID8gImFjY2Vzczo6cmVhZF93cml0ZSIg
OiAiYWNjZXNzOjpzYW1wbGUiLCAnPicpOwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19
IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTA3ZTk2MmQ2NDIxZTNmY2Q0YjQzYzE2
YjhjZWNjZDBmYzU1ODRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlVHlwZVdyaXRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1TdHJpbmcgd3JpdGVOYXRpdmVUeXBl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3NzE1NDE0NDQ4NjAzMzhhNDg3Njg1YzVkMmYxMDM5
ZGE1MzY1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRl
ICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xO
YXRpdmVUeXBlV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1
ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExT
TFZpc2l0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewot
Ci1UeXBlTmFtZXI6OlR5cGVOYW1lcihQcm9ncmFtJiBwcm9ncmFtKQotICAgIDogbV9wcm9ncmFt
KHByb2dyYW0pCi17Ci19Ci0KLVR5cGVOYW1lcjo6flR5cGVOYW1lcigpID0gZGVmYXVsdDsKLQot
dm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewot
ICAgIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKHVubmFtZWRUeXBlKTsKLX0KLQotdm9pZCBUeXBl
TmFtZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmlu
aXRpb24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmFtZWRUeXBlTWFw
cGluZy5hZGQoJmVudW1lcmF0aW9uRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9u
RGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmFkZCgmc3RhdGljX2Nhc3Q8QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlciY+KGVudW1lcmF0aW9uTWVtYmVyKSwgZ2VuZXJhdGVOZXh0RW51bWVyYXRp
b25NZW1iZXJOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGVudW1lcmF0aW9u
RGVmaW5pdGlvbik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRl
bmN5R3JhcGguYWRkKCZlbnVtZXJhdGlvbkRlZmluaXRpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBl
KCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICAvLyBOYXRpdmUgdHlw
ZSBkZWNsYXJhdGlvbnMgYWxyZWFkeSBoYXZlIG5hbWVzLCBhbmQgYXJlIGFscmVhZHkgZGVjbGFy
ZWQgaW4gTWV0YWwuCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5hZGQo
Jm5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpVbm5hbWVkVHlwZT4+IHsgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgmc3RydWN0dXJlRGVmaW5pdGlv
biwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotICAgIFZpc2l0b3I6OnZpc2l0KHN0
cnVjdHVyZURlZmluaXRpb24pOwotICAgIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IG5laWdoYm9yczsKLSAgICAgICAgZm9yIChhdXRv
JiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50
cygpKSB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RydWN0dXJlRWxlbWVudE1h
cHBpbmcuYWRkKCZzdHJ1Y3R1cmVFbGVtZW50LCBnZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50
TmFtZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICBuZWlnaGJvcnMuYXBwZW5kKHN0cnVjdHVyZUVsZW1l
bnQudHlwZSgpKTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5k
ZW5jeUdyYXBoLmFkZCgmc3RydWN0dXJlRGVmaW5pdGlvbiwgV1RGTW92ZShuZWlnaGJvcnMpKTsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0
eXBlRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1l
ZFR5cGVNYXBwaW5nLmFkZCgmdHlwZURlZmluaXRpb24sIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAgewotICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmdHlwZURlZmluaXRp
b24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7IHR5
cGVEZWZpbml0aW9uLnR5cGUoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNp
dChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgZ2VuZXJhdGVVbmlxdWVkVHlw
ZU5hbWUoZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgVmlzaXRvcjo6dmlzaXQoZXhw
cmVzc2lvbik7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9u
JiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJl
c3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhcmd1bWVudCk7
Ci19Ci0KLVN0cmluZyBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIHJldHVybiB3cml0
ZU5hdGl2ZVR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotc3RhdGljIEFTVDo6VW5u
YW1lZFR5cGUqIHBhcmVudChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBz
d2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6
S2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gJmRvd25jYXN0
PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpOwotICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiAm
ZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlw
ZSgpOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6Ci0gICAgICAgIHJl
dHVybiAmZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCk7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19
Ci0KLXZvaWQgVHlwZU5hbWVyOjpnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShBU1Q6OlVubmFtZWRU
eXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBhdXRvKiBwYXJlbnRVbm5hbWVkVHlwZSA9IHBhcmVu
dCh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKHBhcmVudFVubmFtZWRUeXBlKQotICAgICAgICBnZW5l
cmF0ZVVuaXF1ZWRUeXBlTmFtZSgqcGFyZW50VW5uYW1lZFR5cGUpOwotCi0gICAgbV91bm5hbWVk
VHlwZU1hcHBpbmcuZW5zdXJlKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUgfSwgWyZdIHsK
LSAgICAgICAgcmV0dXJuIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCk7Ci0gICAgfSk7Ci19Ci0KLWNs
YXNzIE1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyIGZpbmFsIDogcHVibGljIFZpc2l0b3Igewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1ldGFsVHlwZURlY2xh
cmF0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIHN0ZDo6ZnVuY3Rpb248
TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUmKT4mJiBtYW5nbGVkTmFtZUZv
ck5hbWVkVHlwZSkKLSAgICAgICAgOiBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKFdURk1vdmUo
bWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUpKQotICAgICAgICAsIG1fc3RyaW5nQnVpbGRlcihzdHJp
bmdCdWlsZGVyKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbV9tYW5nbGVkTmFt
ZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwotICAgIH0KLQotICAg
IHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUmKT4g
bV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZTsKLSAgICBTdHJpbmdCdWlsZGVyJiBtX3N0cmluZ0J1
aWxkZXI7Ci19OwotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURlY2xhcmF0aW9ucyhT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIE1ldGFsVHlwZURlY2xhcmF0aW9u
V3JpdGVyIG1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIFsmXShBU1Q6
Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKSAtPiBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSB7Ci0gICAg
ICAgIHJldHVybiBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKTsKLSAgICB9KTsKLSAgICBt
ZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlci5WaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwotfQot
Ci12b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyLCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgTWFuZ2xlZFR5
cGVOYW1lIG1hbmdsZWROYW1lLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4mIGVtaXR0ZWROYW1l
ZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFtZWRUeXBlcykKLXsK
LSAgICBpZiAoZW1pdHRlZFVubmFtZWRUeXBlcy5jb250YWlucyhVbm5hbWVkVHlwZUtleSB7IHVu
bmFtZWRUeXBlIH0pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKHVubmFtZWRUeXBl
LmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50ID0gdHlwZVJlZmVy
ZW5jZS5yZXNvbHZlZFR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1h
bmdsZWROYW1lRm9yVHlwZSh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAg
YXV0byBpdGVyYXRvciA9IG1fZGVwZW5kZW5jeUdyYXBoLmZpbmQoJnBhcmVudCk7Ci0gICAgICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX2RlcGVuZGVuY3lHcmFwaC5lbmQoKSk7Ci0gICAgICAgIGVt
aXROYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgaXRlcmF0b3ItPnZh
bHVlLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgcGFyZW50TWFuZ2xlZE5hbWUsICcgJywg
bWFuZ2xlZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewotICAgICAgICBhdXRvJiBwb2ludGVyVHlw
ZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLQotICAgICAgICBh
dXRvJiBwYXJlbnQgPSBwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpOwotICAgICAgICBhdXRvIHBh
cmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0gICAgICAgIGVt
aXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBwYXJlbnRNYW5n
bGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBl
LmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwYXJlbnRNYW5nbGVkTmFtZSwgIiogIiwgbWFuZ2xlZE5h
bWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVk
VHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKLSAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVu
Y2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsK
LQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUo
KTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lRm9yVHlwZShw
YXJlbnQpOwotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIs
IHBhcmVudCwgcGFyZW50TWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5u
YW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
ICJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWUsICIge1xuIgotICAgICAgICAgICAgIiAgICAiLCB0b1N0
cmluZyhhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBhcmVudE1hbmds
ZWROYW1lLCAiKiBwb2ludGVyO1xuIgotICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5ndGg7
XG4iCi0gICAgICAgICAgICAifTtcbiIKLSAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKLSAgICAgICAgYXV0
byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLQot
ICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVR5cGUudHlwZSgpOwotICAgICAgICBhdXRvIHBh
cmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0gICAgICAgIGVt
aXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBwYXJlbnRNYW5n
bGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmIGFycmF5PCIsIHBhcmVudE1hbmdsZWRO
YW1lLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwgbWFuZ2xlZE5hbWUsICI7
XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgZW1pdHRlZFVubmFtZWRUeXBl
cy5hZGQoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLX0KLQotdm9pZCBUeXBlTmFt
ZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6VW5uYW1lZFR5cGU+PiYgbmVpZ2hib3JzLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4m
IGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFt
ZWRUeXBlcykKLXsKLSAgICBpZiAoZW1pdHRlZE5hbWVkVHlwZXMuY29udGFpbnMoJm5hbWVkVHlw
ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgdW5uYW1lVHlwZSA6IG5laWdo
Ym9ycykKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCB1
bm5hbWVUeXBlLCBtYW5nbGVkTmFtZUZvclR5cGUodW5uYW1lVHlwZSksIGVtaXR0ZWROYW1lZFR5
cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgIHN3aXRjaCAobmFtZWRUeXBlLmtpbmQo
KSkgewotICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bjogewotICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byYgYmFzZVR5
cGUgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShl
bnVtZXJhdGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwotICAgICAgICBmb3IgKGF1dG8m
IGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVt
YmVycygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVk
TmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVudW1l
cmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIsXG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpO
YW1lZFR5cGU6OktpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjogewotICAgICAgICAvLyBOYXRp
dmUgdHlwZXMgYWxyZWFkeSBoYXZlIGRlZmluaXRpb25zLiBUaGVyZSdzIG5vdGhpbmcgdG8gZG8u
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRUeXBlOjpLaW5kOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24g
PSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0KLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3Ry
dWN0dXJlRGVmaW5pdGlvbiksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJl
RWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0
cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1l
bnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpOYW1lZFR5
cGU6OktpbmQ6OlR5cGVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9u
ID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURl
ZmluaXRpb24udHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24p
LCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGVtaXR0ZWROYW1lZFR5
cGVzLmFkZCgmbmFtZWRUeXBlKTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OmVtaXRNZXRhbFR5cGVE
ZWZpbml0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIEhhc2hTZXQ8
QVNUOjpOYW1lZFR5cGUqPiBlbWl0dGVkTmFtZWRUeXBlczsKLSAgICBIYXNoU2V0PFVubmFtZWRU
eXBlS2V5PiBlbWl0dGVkVW5uYW1lZFR5cGVzOwotICAgIGZvciAoYXV0byYgW25hbWVkVHlwZSwg
bmVpZ2hib3JzXSA6IG1fZGVwZW5kZW5jeUdyYXBoKQotICAgICAgICBlbWl0TmFtZWRUeXBlRGVm
aW5pdGlvbihzdHJpbmdCdWlsZGVyLCAqbmFtZWRUeXBlLCBuZWlnaGJvcnMsIGVtaXR0ZWROYW1l
ZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICBmb3IgKGF1dG8mIFt1bm5hbWVkVHlw
ZUtleSwgbWFuZ2xlZE5hbWVdIDogbV91bm5hbWVkVHlwZU1hcHBpbmcpCi0gICAgICAgIGVtaXRV
bm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgdW5uYW1lZFR5cGVLZXkudW5uYW1l
ZFR5cGUoKSwgbWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5
cGVzKTsKLX0KLQotTWFuZ2xlZFR5cGVOYW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JUeXBl
KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3VubmFtZWRUeXBlTWFwcGluZy5maW5kKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUgfSk7
Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdW5uYW1lZFR5cGVNYXBwaW5nLmVuZCgpKTsKLSAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1NYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBU
eXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQot
ewotICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fbmFtZWRUeXBl
TWFwcGluZy5maW5kKCZuYW1lZFR5cGUpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX25hbWVk
VHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1h
bmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvckVudW1l
cmF0aW9uTWVtYmVyKEFTVDo6RW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VudW1lcmF0aW9uTWVtYmVyTWFwcGluZy5maW5kKCZl
bnVtZXJhdGlvbk1lbWJlcik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZW51bWVyYXRpb25N
ZW1iZXJNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1N
YW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclN0cnVj
dHVyZUVsZW1lbnQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQotewot
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX3N0cnVjdHVyZUVsZW1lbnRNYXBwaW5nLmZpbmQoJnN0cnVj
dHVyZUVsZW1lbnQpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3N0cnVjdHVyZUVsZW1lbnRN
YXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIFR5
cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKLXsK
LSAgICBWaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwotCi0gICAgZW1pdE1ldGFsVHlwZURlY2xh
cmF0aW9ucyhzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoc3RyaW5nQnVpbGRlcik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVO
YW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFkMWFlODEwNDA1YWNiNThk
YWY5MjdiMWNjODI2ZjY0Y2MxMGNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlSGFzaC5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEVudW1lcmF0aW9u
RGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotY2xhc3MgTmFtZWRUeXBlOwot
Y2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbjsK
LWNsYXNzIFR5cGVEZWZpbml0aW9uOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLX0KLQotY2xhc3Mg
UHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgQmFzZVR5cGVOYW1lTm9kZTsK
LQotY2xhc3MgVHlwZU5hbWVyIDogcHJpdmF0ZSBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBUeXBl
TmFtZXIoUHJvZ3JhbSYpOwotICAgIHZpcnR1YWwgflR5cGVOYW1lcigpOwotCi0gICAgdm9pZCBl
bWl0TWV0YWxUeXBlcyhTdHJpbmdCdWlsZGVyJik7Ci0KLSAgICAvLyBNdXN0IGJlIGNhbGxlZCBh
ZnRlciBjYWxsaW5nIGVtaXRNZXRhbFR5cGVzKCkuCi0gICAgU3RyaW5nIG1hbmdsZWROYW1lRm9y
VHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIE1hbmdsZWRUeXBlTmFtZSBt
YW5nbGVkTmFtZUZvclR5cGUoQVNUOjpVbm5hbWVkVHlwZSYpOwotICAgIE1hbmdsZWRPck5hdGl2
ZVR5cGVOYW1lIG1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYpOwotICAgIE1hbmds
ZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcihB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1l
IG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmKTsK
LQotICAgIE1hbmdsZWRUeXBlTmFtZSBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpIHsgcmV0dXJuIHsg
bV90eXBlQ291bnQrKyB9OyB9Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGdlbmVy
YXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCkgeyByZXR1cm4geyBtX3N0cnVjdHVyZUVsZW1l
bnRDb3VudCsrIH07IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5
cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLQotICAgIE1hbmdsZWRFbnVtZXJhdGlv
bk1lbWJlck5hbWUgZ2VuZXJhdGVOZXh0RW51bWVyYXRpb25NZW1iZXJOYW1lKCkgeyByZXR1cm4g
eyBtX2VudW1lcmF0aW9uTWVtYmVyQ291bnQrKyB9OyB9Ci0KLSAgICB2b2lkIGVtaXROYW1lZFR5
cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6Ok5hbWVkVHlwZSYsIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiYsIEhhc2hTZXQ8QVNUOjpOYW1l
ZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0
dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oU3Ry
aW5nQnVpbGRlciYsIEFTVDo6VW5uYW1lZFR5cGUmLCBNYW5nbGVkVHlwZU5hbWUsIEhhc2hTZXQ8
QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVL
ZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRNZXRhbFR5cGVEZWNsYXJh
dGlvbnMoU3RyaW5nQnVpbGRlciYpOwotICAgIHZvaWQgZW1pdE1ldGFsVHlwZURlZmluaXRpb25z
KFN0cmluZ0J1aWxkZXImKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVVbmlxdWVkVHlwZU5hbWUoQVNU
OjpVbm5hbWVkVHlwZSYpOwotCi0gICAgUHJvZ3JhbSYgbV9wcm9ncmFtOwotICAgIEhhc2hNYXA8
VW5uYW1lZFR5cGVLZXksIE1hbmdsZWRUeXBlTmFtZT4gbV91bm5hbWVkVHlwZU1hcHBpbmc7Ci0g
ICAgSGFzaE1hcDxBU1Q6Ok5hbWVkVHlwZSosIE1hbmdsZWRUeXBlTmFtZT4gbV9uYW1lZFR5cGVN
YXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpOYW1lZFR5cGUqLCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4+IG1fZGVwZW5kZW5jeUdyYXBoOwotICAgIEhh
c2hNYXA8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciosIE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5h
bWU+IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpTdHJ1Y3R1
cmVFbGVtZW50KiwgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lPiBtX3N0cnVjdHVyZUVsZW1l
bnRNYXBwaW5nOwotICAgIHVuc2lnbmVkIG1fdHlwZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVk
IG1fZW51bWVyYXRpb25NZW1iZXJDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX3N0cnVjdHVy
ZUVsZW1lbnRDb3VudCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVm
ZmVySW5kZXhDYWxjdWxhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRh
ZDJkOWQ3ZmZmZmMzNGVjMzY0ZjYxMjU3NDI2MjZjMDg1Nzc1Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotdW5zaWduZWQgY2FsY3VsYXRlVmVydGV4
QnVmZmVySW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gUmVzZXJ2ZSB0aGUgZmlyc3Qg
ZmV3IE1UTEJ1ZmZlciBzbG90cyBmb3IgYXJndW1lbnQgYnVmZmVycyBmb3IgR1BVQmluZEdyb3Vw
cy4KLSAgICByZXR1cm4gaW5kZXggKyA4OwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVm
ZmVySW5kZXhDYWxjdWxhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNTRk
MGYzNWJjMjFhNzA2YTY3MjZkZDkxMDk0ZjQyZGJlODc1NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi11bnNpZ25lZCBjYWxjdWxhdGVWZXJ0ZXhC
dWZmZXJJbmRleCh1bnNpZ25lZCk7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEwMDRmZDFkZmQ0ZGVlOTgxZmY3MjY2ZmE3Y2Q2ODQzMmNiMTRhMWMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xB
U1REdW1wZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KFByb2dyYW0m
IHByb2dyYW0pCi17Ci0gICAgbV9vdXQucHJpbnRsbigpOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgdmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGlm
IChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0
LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJv
Z3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5u
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQo
IlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5p
dGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS50eXBlRGVmaW5pdGlv
bnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpKQotICAg
ICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0
KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0uc3Ry
dWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJcblxuIik7
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLmVudW1lcmF0aW9uRGVm
aW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygp
LnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLQotICAgIG1f
b3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlKQotewotICAgIEJhc2U6OnZpc2l0KHVubmFtZWRUeXBlKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAg
QmFzZTo6dmlzaXQobmFtZWRUeXBlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50KCJ0eXBl
ZGVmICIsIHR5cGVEZWZpbml0aW9uLm5hbWUoKSwgIiA9ICIpOwotICAgIHZpc2l0KHR5cGVEZWZp
bml0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9u
KQotewotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJzdHJ1Y3QgIiwgc3RydWN0dXJlRGVm
aW5pdGlvbi5uYW1lKCksICIgeyIpOwotICAgIHsKLSAgICAgICAgYXV0byBpbmRlbnQgPSBidW1w
SW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVy
ZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgICAgIHZpc2l0KHN0cnVj
dHVyZUVsZW1lbnQpOwotICAgIH0KLSAgICBtX291dC5wcmludGxuKG1faW5kZW50LCAifSIpOwot
ICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3Ry
dWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsKLSAgICBtX291dC5wcmludChtX2lu
ZGVudCk7Ci0gICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwotICAgIG1fb3V0LnBy
aW50KCIgIiwgc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgIGlmIChzdHJ1Y3R1cmVFbGVt
ZW50LnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGlj
KCkpOwotICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0
KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi17Ci0g
ICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJlbnVtICIpOwotICAgIHZpc2l0KGVudW1lcmF0aW9u
RGVmaW5pdGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCIgeyIpOwotCi0gICAgewotICAg
ICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgYm9vbCBvbmNlID0gZmFs
c2U7Ci0gICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgIGlmIChvbmNlKQot
ICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICAgICAgbV9vdXQucHJp
bnRsbigpOwotICAgICAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICAgICAg
dmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9vdXQu
cHJpbnRsbigpOwotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7Ci0gICAgbV9vdXQu
cHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1l
bWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0gICAgbV9vdXQucHJpbnQoZW51bWVyYXRpb25N
ZW1iZXIubmFtZSgpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZp
bml0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICB2aXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKLSAg
ICB2aXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgbV9vdXQucHJpbnQoIlxu
XG4iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBtX291dC5wcmludCht
X2luZGVudCk7Ci0gICAgbV9vdXQucHJpbnQoIm5hdGl2ZSAiKTsKLSAgICB2aXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KSk7Ci0gICAgbV9vdXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIHZpc2l0
KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Ci0gICAgaWYgKGZ1bmN0aW9u
RGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoQVNUOjp0
b1N0cmluZygqZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKSwgIiAiKTsKLSAg
ICB2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiAi
LCBmdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIigiKTsKLSAgICBib29sIG9uY2UgPSBmYWxz
ZTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwg
Iik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICB2aXNpdChwYXJhbWV0ZXIpOwotICAg
IH0KLSAgICBtX291dC5wcmludCgiKSIpOwotICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9uLnNl
bWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGljKCkp
OwotICAgIG1fb3V0LnByaW50KCIgIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIG1f
b3V0LnByaW50KG1faW5kZW50LCAibmF0aXZlIHR5cGVkZWYgIik7Ci0gICAgbV9vdXQucHJpbnQo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCI8Iik7
Ci0gICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGVBcmd1
bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkpIHsKLSAgICAgICAg
ICAgIGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAg
ICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOwotICAg
ICAgICB9Ci0gICAgICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotICAgIG1fb3V0LnByaW50
bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYg
dHlwZVJlZmVyZW5jZSkKLXsKLSAgICBtX291dC5wcmludCh0eXBlUmVmZXJlbmNlLm5hbWUoKSk7
Ci0KLSAgICBpZiAodHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKSB7Ci0gICAg
ICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBtX291dC5wcmludCgiPCIpOwotICAgICAg
ICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygp
KSB7Ci0gICAgICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgICAgICBtX291dC5wcmludCgi
LCAiKTsKLSAgICAgICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICAgICAgdmlzaXQodHlwZUFy
Z3VtZW50KTsKLSAgICAgICAgfQotICAgICAgICBtX291dC5wcmludCgiPiIpOwotICAgIH0KLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQot
ewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+KHBvaW50ZXJUeXBl
KSk7Ci0gICAgbV9vdXQucHJpbnQoIioiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17Ci0gICAgdmlzaXQo
c3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7Ci0g
ICAgbV9vdXQucHJpbnQoIltdIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkFy
cmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIHZpc2l0KGFycmF5VHlwZS50eXBlKCkpOwotICAg
IG1fb3V0LnByaW50KCJbIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICJdIik7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewot
ICAgIEJhc2U6OnZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCi17Ci0gICAgbV9vdXQucHJpbnQo
QVNUOjp0b1N0cmluZyhyZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgIiAiKTsKLSAgICB2
aXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQoIiA6ICIp
OwotICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpCdWlsdEluU2VtYW50
aWMmIGJ1aWx0SW5TZW1hbnRpYykgewotICAgICAgICB2aXNpdChidWlsdEluU2VtYW50aWMpOwot
ICAgIH0sIFsmXShBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpIHsKLSAg
ICAgICAgdmlzaXQocmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsK
LSAgICAgICAgdmlzaXQoc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICB9LCBb
Jl0oQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykgewotICAgICAg
ICB2aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOwotICAgIH0pLCBzZW1hbnRpYyk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHBy
ZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykK
LXsKLSAgICBpZiAoYXR0cmlidXRlQmxvY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX291dC5wcmludCgiWyIpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUg
OiBhdHRyaWJ1dGVCbG9jaykKLSAgICAgICAgdmlzaXQoZnVuY3Rpb25BdHRyaWJ1dGUpOwotICAg
IG1fb3V0LnByaW50KCJdICIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpCdWls
dEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludChidWlsdElu
U2VtYW50aWMudG9TdHJpbmcoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJl
c291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQocmVz
b3VyY2VTZW1hbnRpYy50b1N0cmluZygpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikKLXsKLSAgICAvLyBGSVhNRTogSGFu
ZGxlIHRoaXMgd2hlbiB3ZSBpbXBsZW1lbnQgaXQuCi19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKQotewotICAgIG1f
b3V0LnByaW50KCJhdHRyaWJ1dGUoIiwgc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCksICIpIik7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2Vy
TGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludCh1bnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGbG9hdExp
dGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChmbG9hdExpdGVyYWwudmFs
dWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBi
b29sZWFuTGl0ZXJhbCkKLXsKLSAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAg
ICAgbV9vdXQucHJpbnQoInRydWUiKTsKLSAgICBlbHNlCi0gICAgICAgIG1fb3V0LnByaW50KCJm
YWxzZSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5
cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYpCi17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZsb2F0TGl0
ZXJhbFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5w
cmludChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwubGVmdCgpLCAiLiIsIGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5yaWdodCgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RnVu
Y3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRlKQotewotICAgIFdURjo6dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUpOwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFk
c0F0dHJpYnV0ZSkKLXsKLSAgICBtX291dC5wcmludCgibnVtdGhyZWFkcygiLCBudW1UaHJlYWRz
QXR0cmlidXRlLndpZHRoKCksICIsICIsIG51bVRocmVhZHNBdHRyaWJ1dGUuaGVpZ2h0KCksICIs
ICIsIG51bVRocmVhZHNBdHRyaWJ1dGUuZGVwdGgoKSwgIikiKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIG1fb3V0LnByaW50bG4oInsiKTsK
LSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVtcEluZGVudCgpOwotICAgICAgICBmb3Ig
KGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkgewotICAgICAgICAgICAgbV9v
dXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICAgICAgdmlzaXQoc3RhdGVtZW50KTsKLSAgICAg
ICAgICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX291dC5w
cmludChtX2luZGVudCwgIn0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoc3RhdGVtZW50KTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3RhdGVtZW50TGlzdCkK
LXsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IHN0
YXRlbWVudExpc3Quc3RhdGVtZW50cygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAg
ICAgbV9vdXQucHJpbnQoIjtcbiIsIG1faW5kZW50KTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0g
ICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpCcmVhayYpCi17Ci0gICAgbV9vdXQucHJpbnQoImJyZWFrIik7Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKLXsKLSAgICBtX291dC5wcmludCgiY29u
dGludWUiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGls
ZUxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoIndoaWxlICgiKTsKLSAgICB2aXNpdCh3aGlsZUxv
b3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLSAgICB2aXNpdCh3aGls
ZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxv
b3AmIGRvV2hpbGVMb29wKQotewotICAgIG1fb3V0LnByaW50KCJkbyAiKTsKLSAgICB2aXNpdChk
b1doaWxlTG9vcC5ib2R5KCkpOwotICAgIG1fb3V0LnByaW50KCIgd2hpbGUoIik7Ci0gICAgdmlz
aXQoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBt
X291dC5wcmludCgiZm9yICgiKTsKLSAgICB2aXNpdChmb3JMb29wLmluaXRpYWxpemF0aW9uKCkp
OwotICAgIG1fb3V0LnByaW50KCI7ICIpOwotICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigpKQot
ICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIjsg
Iik7Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIHZpc2l0KCpmb3JMb29w
LmluY3JlbWVudCgpKTsKLSAgICBtX291dC5wcmludCgiKSAiKTsKLSAgICB2aXNpdChmb3JMb29w
LmJvZHkoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4
cHJlc3Npb24pCi17Ci0gICAgYm9vbCBza2lwUGFyZW5zID0gaXM8QVNUOjpCb29sZWFuTGl0ZXJh
bD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Np
b24pCi0gICAgICAgIHx8IGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0gICAg
ICAgIHx8IGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAg
ICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0gICAg
ICAgIHx8IGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKQotICAgICAgICB8fCBp
czxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLQotICAgIGlmIChhdXRvKiBh
bm5vdGF0aW9uID0gZXhwcmVzc2lvbi5tYXliZVR5cGVBbm5vdGF0aW9uKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gYWRkcmVzc1NwYWNlID0gYW5ub3RhdGlvbi0+bGVmdEFkZHJlc3NTcGFjZSgpKQot
ICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxMVjoiLCBBU1Q6OnRvU3RyaW5nKCphZGRyZXNzU3Bh
Y2UpKTsKLSAgICAgICAgZWxzZSBpZiAoYW5ub3RhdGlvbi0+aXNBYnN0cmFjdExlZnRWYWx1ZSgp
KQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxBTFYiKTsKLSAgICAgICAgZWxzZSBpZiAoYW5u
b3RhdGlvbi0+aXNSaWdodFZhbHVlKCkpCi0gICAgICAgICAgICBtX291dC5wcmludCgiPFJWIik7
Ci0KLSAgICAgICAgbV9vdXQucHJpbnQoIiwgIiwgZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKS50
b1N0cmluZygpLCAiPiIpOwotCi0gICAgICAgIHNraXBQYXJlbnMgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgQmFz
ZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFza2lwUGFyZW5zKQotICAgICAgICBtX291
dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNz
aW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJj4oZG90RXhwcmVzc2lvbikpOwotICAgIG1fb3V0LnByaW50KCIu
IiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkK
LXsKLSAgICB2aXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1fb3V0
LnByaW50KCI9PiIsIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkubmFtZSgp
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRl
eEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mPihpbmRleEV4cHJlc3Npb24pKTsKLSAgICBtX291dC5wcmludCgiWyIpOwot
ICAgIHZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQu
cHJpbnQoIl0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0KGV4cHJlc3Npb24p
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewotICAgIEJhc2U6OnZpc2l0
KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17Ci0gICAgbV9vdXQucHJpbnQoImZhbGx0aHJvdWdoIik7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVu
dCkKLXsKLSAgICBtX291dC5wcmludCgiaWYgKCIpOwotICAgIHZpc2l0KGlmU3RhdGVtZW50LmNv
bmRpdGlvbmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpICIpOwotICAgIHZpc2l0KGlmU3RhdGVt
ZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAg
bV9vdXQucHJpbnQoIiBlbHNlICIpOwotICAgICAgICB2aXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJv
ZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJl
dHVyblN0YXRlbWVudCkKLXsKLSAgICBtX291dC5wcmludCgicmV0dXJuIik7Ci0gICAgaWYgKHJl
dHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgIik7Ci0gICAg
ICAgIHZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgfQotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkKLXsK
LSAgICBtX291dC5wcmludCgic3dpdGNoICgiKTsKLSAgICB2aXNpdChzd2l0Y2hTdGF0ZW1lbnQu
dmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiKSB7Iik7Ci0gICAgYm9vbCBvbmNlID0gZmFs
c2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENh
c2VzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludGxuKCk7
Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7Ci0g
ICAgICAgIHZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAgICBtX291dC5wcmludCgiXG4iLCBt
X2luZGVudCwgIn0iKTsKLQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTd2l0Y2hD
YXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAg
ICAgbV9vdXQucHJpbnQoImNhc2UgIik7Ci0gICAgICAgIHZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVl
KCkpOwotICAgICAgICBtX291dC5wcmludCgiOiAiKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9v
dXQucHJpbnQoImRlZmF1bHQ6ICIpOwotICAgIHZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNpdCh2
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAg
aWYgKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSB7Ci0gICAgICAgIHZpc2l0KCp2YXJpYWJs
ZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgIik7Ci0gICAgfQot
Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9vdXQucHJpbnQoIiQiLCBSYXdQb2ludGVyKCZ2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX291dC5wcmludCh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0K
LSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAgICB2aXNpdCgq
dmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJh
dGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICAg
ICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci0gICAgfQotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdu
bWVudEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgp
KTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgdmlzaXQoYXNzaWdubWVudEV4cHJlc3Np
b24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNz
aW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludChjYWxsRXhwcmVzc2lvbi5u
YW1lKCksICIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBhcmd1
bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQot
ICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAg
ICAgICB2aXNpdChhcmd1bWVudCk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYgY29tbWFFeHByZXNz
aW9uKQotewotICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0g
ICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkgewotICAg
ICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICBv
bmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIG1fb3V0
LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRlcmVmZXJlbmNl
RXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIq
Iik7Ci0gICAgdmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKSk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVz
c2lvbikKLXsKLSAgICBtX291dC5wcmludCgiKCIpOwotICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNz
aW9uLmxlZnQoKSk7Ci0gICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsKLSAg
ICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKLSAgICAgICAgbV9vdXQu
cHJpbnQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHBy
ZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9vdXQucHJpbnQoIiB8fCAiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwotICAg
IG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmlu
dCgiISgiKTsKLSAgICB2aXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwotICAg
IG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17
Ci0gICAgbV9vdXQucHJpbnQoIkAiKTsKLSAgICB2aXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQu
cHJpbnQoIiYiKTsKLSAgICB2aXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVlKCkp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGF1dG8gb2xkVmFyaWFibGUg
PSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAg
YXV0byBuZXdWYXJpYWJsZSA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFyaWFibGVS
ZWZlcmVuY2UoKTsKLQotICAgIG1fb3V0LnByaW50KCJSTVcoIik7Ci0gICAgdmlzaXQob2xkVmFy
aWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChyZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5wcmludCgiLCAiKTsK
LQotICAgIHZpc2l0KG5ld1ZhcmlhYmxlLmdldCgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7
Ci0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24o
KSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgdmlz
aXQobmV3VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0gICAgdmlz
aXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIG1f
b3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlRlcm5hcnlF
eHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVz
c2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA/ICIpOwotICAgIHZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0LnByaW50KCIgOiAi
KTsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVm
ZXJlbmNlKQotewotICAgIGlmICh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkuaXNFbXB0eSgpKQot
ICAgICAgICBtX291dC5wcmludCgiJCIsIFJhd1BvaW50ZXIodmFyaWFibGVSZWZlcmVuY2UudmFy
aWFibGUoKSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQodmFyaWFibGVSZWZlcmVu
Y2UubmFtZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMDI3MzZmYzAyYmQzMTQwZmYzODhmN2Q1MDJiOGJj
ZTJjNGJiNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIK
LQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgQVNURHVtcGVyIDogVmlzaXRvciB7Ci0g
ICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChQcm9ncmFt
Jikgb3ZlcnJpZGU7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSB7IHJldHVybiBtX291dC50b1N0
cmluZygpOyB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVy
YXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6U3RydWN0dXJlRWxlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpBdHRyaWJ1dGVCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCdWlsdElu
U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRp
YyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpGbG9hdExpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpG
dW5jdGlvbkF0dHJpYnV0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Qmxv
Y2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29udGlu
dWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpG
YWxsdGhyb3VnaCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpT
d2l0Y2hDYXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVu
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VGVy
bmFyeUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVS
ZWZlcmVuY2UmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgSW5kZW50IHsKLSAg
ICAgICAgSW5kZW50KEFTVER1bXBlciYgZHVtcGVyKQotICAgICAgICAgICAgOiBtX3Njb3BlKGR1
bXBlci5tX2luZGVudCwgZHVtcGVyLm1faW5kZW50ICsgIiAgICIpCi0gICAgICAgIHsgfQotICAg
ICAgICBTZXRGb3JTY29wZTxTdHJpbmc+IG1fc2NvcGU7Ci0gICAgfTsKLQotICAgIEluZGVudCBi
dW1wSW5kZW50KCkgeyByZXR1cm4gSW5kZW50KCp0aGlzKTsgfQotCi0gICAgZnJpZW5kIHN0cnVj
dCBJbmRlbnQ7Ci0KLSAgICBTdHJpbmdQcmludFN0cmVhbSBtX291dDsKLSAgICBTdHJpbmcgbV9p
bmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCBk
dW1wQVNUTm9kZShQcmludFN0cmVhbSYgb3V0LCBUJiB2YWx1ZSkKLXsKLSAgICBBU1REdW1wZXIg
ZHVtcGVyOwotICAgIGR1bXBlci52aXNpdCh2YWx1ZSk7Ci0gICAgb3V0LnByaW50KGR1bXBlci50
b1N0cmluZygpKTsKLX0KLU1BS0VfUFJJTlRfQURBUFRPUihFeHByZXNzaW9uRHVtcGVyLCBBU1Q6
OkV4cHJlc3Npb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoU3RhdGVtZW50
RHVtcGVyLCBBU1Q6OlN0YXRlbWVudCYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRP
UihQcm9ncmFtRHVtcGVyLCBQcm9ncmFtJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQ
VE9SKFN0cnVjdHVyZURlZmluaXRpb25EdW1wZXIsIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYs
IGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihGdW5jdGlvbkRlZmluaXRpb25EdW1w
ZXIsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9B
REFQVE9SKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25EdW1wZXIsIEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihUeXBlRHVt
cGVyLCBBU1Q6OlVubmFtZWRUeXBlJiwgZHVtcEFTVE5vZGUpOwotCi0KLXN0YXRpYyBBTFdBWVNf
SU5MSU5FIHZvaWQgZHVtcEFTVChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGRhdGFMb2dMbihQ
cm9ncmFtRHVtcGVyKHByb2dyYW0pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWls
ZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjcxNzg5NTQ0ODk5MGRjOGFjNjg3N2JjMTA0ZDlk
YmE4ZTY5MTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbk1hcC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBzeXMKLWltcG9ydCByZQotCi1yZWd1bGFyRXhwcmVzc2lvbiA9IHJlLmNvbXBp
bGUociIvXCogRnVuY3Rpb25zIG5hbWVkICguKikgXCovIikKLQotaW5maWxlID0gb3BlbihzeXMu
YXJndlsxXSwgInIiKQotY29udGVudHMgPSBpbmZpbGUucmVhZCgpCi1pbmZpbGUuY2xvc2UoKQot
Ci1vdXRmaWxlID0gb3BlbihzeXMuYXJndlsyXSwgInciKQotb3V0ZmlsZS53cml0ZSgiIiIKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbk1hcC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUhhc2hNYXA8U3RyaW5nLCBT
dWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKCkKLXsK
LSAgICBIYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+IHJlc3VsdDsKLSIiIikKLQot
IyBGSVhNRTogQ29tcHV0ZSBTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCBhdCBidWlsZC10aW1l
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NDgKLQotcHJldmlv
dXMgPSAwCi1wcmV2aW91c05hbWUgPSAiIgotYm91bmRhcnkgPSAwCi1mb3IgbWF0Y2ggaW4gcmVn
dWxhckV4cHJlc3Npb24uZmluZGl0ZXIoY29udGVudHMpOgotICAgIGlmIHByZXZpb3VzID09IDA6
Ci0gICAgICAgIHByZXZpb3VzID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBib3VuZGFyeSA9IHBy
ZXZpb3VzCi0gICAgICAgIHByZXZpb3VzTmFtZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIGNv
bnRpbnVlCi0gICAgb3V0ZmlsZS53cml0ZSgiICAgIHJlc3VsdC5hZGQoXCIiICsgcHJldmlvdXNO
YW1lICsgIlwiX3N0ciwgU3Vic3RyaW5nTG9jYXRpb24geyAiICsgc3RyKHByZXZpb3VzKSArICIs
ICIgKyBzdHIobWF0Y2guc3RhcnQoKSkgKyAiIH0pO1xuIikKLSAgICBwcmV2aW91cyA9IG1hdGNo
LnN0YXJ0KCkKLSAgICBwcmV2aW91c05hbWUgPSBtYXRjaC5ncm91cCgxKQotb3V0ZmlsZS53cml0
ZSgiICAgIHJlc3VsdC5hZGQoXCIiICsgcHJldmlvdXNOYW1lICsgIlwiX3N0ciwgU3Vic3RyaW5n
TG9jYXRpb24geyAiICsgc3RyKHByZXZpb3VzKSArICIsICIgKyBzdHIobGVuKGNvbnRlbnRzKSkg
KyAiIH0pO1xuIikKLW91dGZpbGUud3JpdGUoIiIiCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
dW5zaWduZWQgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCkKLXsKLSIiIikK
LQotb3V0ZmlsZS53cml0ZSgiICAgIHJldHVybiAiICsgc3RyKGJvdW5kYXJ5KSArICI7XG4iKQot
Ci1vdXRmaWxlLndyaXRlKCIiIgotfQotCi19Ci0KLX0KLQotI2VuZGlmCi0iIiIpCi1vdXRmaWxl
LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWJlZDFlY2VkNDZkYjFkN2ZhN2JmYjRlMWMzZTM0ODNj
MzE3M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0
aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25z
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIER1cGxpY2F0ZUZ1
bmN0aW9uS2V5IHsKLXB1YmxpYzoKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleSgpID0gZGVmYXVs
dDsKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uID0gYml0d2lzZV9jYXN0PEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbio+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotICAgIH0KLQotICAg
IER1cGxpY2F0ZUZ1bmN0aW9uS2V5KGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVu
Y3Rpb24pCi0gICAgICAgIDogbV9mdW5jdGlvbigmZnVuY3Rpb24pCi0gICAgeyB9Ci0KLSAgICBi
b29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bmN0aW9uOyB9Ci0gICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb24gPT0g
Yml0d2lzZV9jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGhhc2ggPSBJbnRIYXNoPHNpemVfdD46Omhhc2gobV9mdW5jdGlvbi0+cGFyYW1l
dGVycygpLnNpemUoKSk7Ci0gICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+bmFtZSgpLmhhc2go
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJz
KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBoYXNoIF49IG1fZnVuY3Rpb24tPnBhcmFtZXRl
cnMoKVtpXS0+dHlwZSgpLT5oYXNoKCk7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPmlzQ2Fz
dCgpKQotICAgICAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT50eXBlKCkuaGFzaCgpOwotCi0g
ICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBE
dXBsaWNhdGVGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9m
dW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKSAhPSBvdGhlci5tX2Z1bmN0aW9uLT5wYXJhbWV0
ZXJzKCkuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICht
X2Z1bmN0aW9uLT5uYW1lKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+bmFtZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAh
PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5Ci0gICAgICAgICAgICAmJiBvdGhlci5t
X2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5
Ci0gICAgICAgICAgICAmJiBtX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBvdGhlci5tX2Z1bmN0
aW9uLT5uYW1lU3BhY2UoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBB
U1NFUlQobV9mdW5jdGlvbi0+aXNDYXN0KCkgPT0gb3RoZXIubV9mdW5jdGlvbi0+aXNDYXN0KCkp
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbi0+cGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMoKm1fZnVuY3Rpb24t
PnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLCAqb3RoZXIubV9mdW5jdGlvbi0+cGFyYW1ldGVycygp
W2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9mdW5jdGlvbi0+aXNDYXN0KCkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgICAgICBpZiAobWF0Y2hlcyhtX2Z1bmN0aW9uLT50eXBlKCksIG90aGVyLm1f
ZnVuY3Rpb24tPnR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYga2V5KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBhLCBjb25zdCBEdXBs
aWNhdGVGdW5jdGlvbktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUcmFpdHMgOiBw
dWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RHVwbGljYXRlRnVuY3Rpb25LZXk+IHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVl
OwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRHVwbGljYXRlRnVuY3Rp
b25LZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJp
dmF0ZToKLSAgICBjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBu
dWxscHRyIH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tEdXBsaWNhdGVGdW5j
dGlvbnMoY29uc3QgUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBhdXRvIHBhc3Nlc1N0YXRpY0No
ZWNrcyA9IFsmXSAoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikgLT4g
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLm5hbWUoKSA9PSAi
b3BlcmF0b3I9PSIKLSAgICAgICAgICAgICYmIGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMgotICAgICAgICAgICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxj
b25zdCBBU1Q6OlVubmFtZWRUeXBlJj4oKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgp
KSkKLSAgICAgICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8Y29u
c3QgQVNUOjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkp
Ci0gICAgICAgICAgICAmJiBtYXRjaGVzKCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUo
KSwgKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGRlZmluZSBvcGVyYXRvcj09IG9uIHR3byBy
ZWZlcmVuY2UgdHlwZXMuIikpOwotICAgICAgICBlbHNlIGlmIChmdW5jdGlvbi5pc0Nhc3QoKSAm
JiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhdXRvJiB1
bmlmeU5vZGUgPSBmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICBpZiAo
aXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3Qg
ZGVmaW5lIGEgY2FzdCBvbiBhbiBvcGFxdWUgdHlwZS4iKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4geyB9OwotICAgIH07Ci0KLSAgICBIYXNoU2V0PER1cGxp
Y2F0ZUZ1bmN0aW9uS2V5LCBEdXBsaWNhdGVGdW5jdGlvbktleTo6SGFzaCwgRHVwbGljYXRlRnVu
Y3Rpb25LZXk6OlRyYWl0cz4gZnVuY3Rpb25zOwotCi0gICAgYXV0byBhZGQgPSBbJl0gKGNvbnN0
IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIC0+IEV4cGVjdGVkPHZvaWQsIEVy
cm9yPiB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZnVuY3Rpb25zLmFkZChEdXBsaWNhdGVG
dW5jdGlvbktleSB7IGZ1bmN0aW9uIH0pOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJGb3VuZCBkdXBs
aWNhdGUgZnVuY3Rpb24iKSk7Ci0gICAgICAgIHJldHVybiBwYXNzZXNTdGF0aWNDaGVja3MoZnVu
Y3Rpb24pOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
YWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKSk7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0KQot
ICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdDsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zKCkpIHsKLSAgICAgICAgLy8gV2UgZ2VuZXJhdGUgZHVwbGljYXRlIG5hdGl2ZSBmdW5jdGlv
biBkZWNsYXJhdGlvbnMgaW4gc3ludGhlc2l6ZSBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIC8vIEZJ
WE1FOiBpcyB0aGlzIHJpZ2h0PwotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4NTgwCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFNpbmNlIHdlIGRv
IHRoYXQsIHdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgbm8gbmF0aXZlIGZ1bmN0aW9uIGlzIGEg
ZHVwbGljYXRlCi0gICAgICAgIC8vIG9mIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uLgotCi0gICAg
ICAgIC8vIEZJWE1FOiBBZGQgYmFjayB0aGlzIGFzc2VydCBvbmNlIHdlIGJlZ2luIHRvIGF1dG8g
Z2VuZXJhdGUgdGhlc2UgaW4gdGhlIGNvbXBpbGVyCi0gICAgICAgIC8vIGluc3RlYWQgb2YgaGF2
aW5nIHRoZW0gaW4gdGhlIHN0ZGxpYgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODYxCi0gICAgICAgIC8vIEFTU0VSVChwYXNzZXNTdGF0aWND
aGVja3MobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKSkpOwotICAgICAgICBpZiAoZnVu
Y3Rpb25zLmNvbnRhaW5zKER1cGxpY2F0ZUZ1bmN0aW9uS2V5IHsgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5nZXQoKSB9KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cigiRHVwbGljYXRlIG5hdGl2ZSBmdW5jdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsg
fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0
ZUZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDA3ZDMyZTUyZTZh
NGUyNzBiMTk4ZDIzNTk1NzI2OTM4YmI3NjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tEdXBsaWNhdGVGdW5j
dGlvbnMoY29uc3QgUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE1MzE1NDczOTQ4NjA0MTZjNWJlNzIyZDI5ZDY1ZTNiNGVkYzU1
NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgiCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUg
IldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFJlZmVyZW5jZVR5cGVDaGVja2VyIGZpbmFsIDogcHVibGljIFZpc2l0b3Ig
ewotcHVibGljOgotICAgIFJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZhdWx0OwotICAgIHZp
cnR1YWwgflJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja1R5cGUoQVNUOjpVbm5hbWVkVHlwZSYgdHlwZSwgQ29k
ZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgY29uc3QgY2hhciogZXJyb3IpCi0gICAgewotICAgICAg
ICBhdXRvJiB1bmlmaWVkVHlwZSA9IHR5cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChpczxB
U1Q6OlJlZmVyZW5jZVR5cGU+KHVuaWZpZWRUeXBlKSkgewotICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoZXJyb3IsIGNvZGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBlKSkKLSAg
ICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1
bmlmaWVkVHlwZSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBl
JiByZWZlcmVuY2VUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tUeXBlKHJlZmVy
ZW5jZVR5cGUuZWxlbWVudFR5cGUoKSwgcmVmZXJlbmNlVHlwZS5jb2RlTG9jYXRpb24oKSwgInJl
ZmVyZW5jZSB0eXBlIGNhbm5vdCBoYXZlIGFub3RoZXIgcmVmZXJlbmNlIHR5cGUgYXMgYW4gaW5u
ZXIgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5
VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShhcnJheVR5cGUudHlwZSgp
LCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCksICJhcnJheSB0eXBlIGNhbm5vdCBoYXZlIGEgcmVm
ZXJlbmNlIHR5cGUgYXMgaXRzIGlubmVyIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGNoZWNrVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSwgc3RydWN0dXJlRWxl
bWVudC5jb2RlTG9jYXRpb24oKSwgImNhbm5vdCBoYXZlIGEgc3RydWN0dXJlIGZpZWxkIHdoaWNo
IGlzIGEgcmVmZXJlbmNlIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZp
c2l0KGV4cHJlc3Npb24pOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbi5y
ZXNvbHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNr
UmVmZXJlbmNlVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAvLyBUaGlzIHBhc3MgZG9l
cyB0aGVzZSB0aGluZ3M6Ci0gICAgLy8gMS4gRGlzYWxsb3cgc3RydWN0cyB0byBoYXZlIGZpZWxk
cyB3aGljaCBhcmUgcmVmZXJlbmNlcy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGhhdmluZyB0bwot
ICAgIC8vIGZpZ3VyZSBvdXQgaG93IHRvIGRlZmF1bHQgaW5pdGlhbGl6ZSBzdWNoIGEgc3RydWN0
LiBXZSBjb3VsZCByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgaWYgd2UKLSAgICAvLyBkaWQgYW4g
YW5hbHlzaXMgb24gd2hpY2ggc3RydWN0cyBjb250YWluIHJlZmVyZW5jZSBmaWVsZHMsIGFuZCBl
bnN1cmUgc3VjaCBzdHJ1Y3QgdmFyaWFibGVzCi0gICAgLy8gYWx3YXlzIGhhdmUgaW5pdGlhbGl6
ZXJzLiBUaGlzIHdvdWxkIGFsc28gcmVxdWlyZSB1cyB0byBjcmVhdGUgY29uc3RydWN0b3JzIGZv
ciBzdHJ1Y3RzIHdoaWNoCi0gICAgLy8gaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLgotICAgIC8vIDIu
IFdlIGFsc28gZG8gdGhlIHNhbWUgZm9yIGFycmF5cy4KLSAgICAvLyAzLiBSZWZlcmVuY2VzIGNh
biBvbmx5IGJlIG9uZSBsZXZlbCBkZWVwLiBTbyBubyBwb2ludGVycyB0byBwb2ludGVycy4gTm8g
cmVmZXJlbmNlcyB0bwotICAgIC8vIHJlZmVyZW5jZXMsIGV0Yy4gVGhpcyBpcyB0byBzdXBwb3J0
IGxvZ2ljYWwgbW9kZS4KLSAgICBSZWZlcmVuY2VUeXBlQ2hlY2tlciByZWZlcmVuY2VUeXBlQ2hl
Y2tlcjsKLSAgICByZWZlcmVuY2VUeXBlQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJvZ3Jh
bSk7Ci0gICAgcmV0dXJuIHJlZmVyZW5jZVR5cGVDaGVja2VyLnJlc3VsdCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTM2MmE4MDQ0MjNiMmEwZmUyODUzYzM3MzIyZTI2MWU3
MTgxNzc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBl
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBjaGVja1JlZmVyZW5jZVR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2Vz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjZTZjMDAzODdlYzFjYzhlYmFl
NTQ0NzdlYjk2MjM5MzljZGJiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
VGV4dHVyZVJlZmVyZW5jZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1RleHR1
cmVSZWZlcmVuY2VzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTElu
ZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBUZXh0dXJl
UmVmZXJlbmNlc0NoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAg
VGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+VGV4
dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQg
dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpB
cnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsK
LQotICAgIGJvb2wgY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKEFTVDo6VW5uYW1lZFR5cGUmKTsK
LX07Ci0KLWNsYXNzIFNlYXJjaGVyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIFNl
YXJjaGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+U2VhcmNoZXIoKSA9IGRlZmF1bHQ7
Ci0KLSAgICBib29sIGZvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9mb3VuZDsgfQotCi1wcml2YXRl
OgotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotICAgIGJv
b2wgbV9mb3VuZCB7IGZhbHNlIH07Ci19OwotCi12b2lkIFNlYXJjaGVyOjp2aXNpdChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAgIG1fZm91bmQgPSB0
cnVlOwotfQotCi1ib29sIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6Y29udGFpbnNUZXh0dXJl
T3JTYW1wbGVyKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIFNlYXJjaGVy
IHNlYXJjaGVyOwotICAgIHNlYXJjaGVyLmNoZWNrRXJyb3JBbmRWaXNpdCh1bm5hbWVkVHlwZSk7
Ci0gICAgcmV0dXJuIHNlYXJjaGVyLmZvdW5kKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5j
ZXNDaGVja2VyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsKLSAgICBW
aXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKHBvaW50ZXJUeXBlLmVs
ZW1lbnRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYSBwb2lu
dGVyIHRvIGEgdGV4dHVyZSBvciBzYW1wbGVyLiIsIHBvaW50ZXJUeXBlLmNvZGVMb2NhdGlvbigp
KSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIFZpc2l0b3I6OnZpc2l0
KGFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKGFycmF5UmVmZXJlbmNlVHlwZS5l
bGVtZW50VHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBoYXZlIGFuIGFy
cmF5IHJlZmVyZW5jZSB0byBhIHRleHR1cmUgb3Igc2FtcGxlci4iLCBhcnJheVJlZmVyZW5jZVR5
cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6
OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQo
YXJyYXlUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
IChjb250YWluc1RleHR1cmVPclNhbXBsZXIoYXJyYXlUeXBlLnR5cGUoKSkpCi0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhbiBhcnJheSBvZiB0ZXh0dXJlcyBvciBzYW1wbGVy
cy4iLCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJl
bmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBW
aXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVz
c2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2Vy
Ojp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewot
ICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRp
b24pOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNo
ZWNrVGV4dHVyZVJlZmVyZW5jZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBUZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXIgdGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOwotICAgIHRleHR1cmVSZWZl
cmVuY2VzQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJuIHRl
eHR1cmVSZWZlcmVuY2VzQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hM
U0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDA2OTQ5NmVlOWQyOWEwYTU4OTY1MzFkZWFkNWY4MmUzZTc1NmY3MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIK
LSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
Y2hlY2tUZXh0dXJlUmVmZXJlbmNlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdhYTI3YTZjOGE5OGMzZTViZjY3ZmYyOWMyMmFiYTg2MDgzZjJkNGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TENoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDYWxs
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTERvV2hpbGVM
b29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldI
TFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5o
IgotI2luY2x1ZGUgIldITFNMSW5kZXhFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZl
clR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50
ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgotI2luY2x1ZGUgIldITFNM
UmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5jbHVkZSAiV0hM
U0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBQT0RDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAg
IFBPRENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5QT0RDaGVja2VyKCkgPSBk
ZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51
bWVyYXRpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpCi0gICAg
ICAgICAgICAmJiAhbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzVmVjdG9yKCkKLSAgICAgICAgICAg
ICYmICFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHNldEVy
cm9yKEVycm9yKCJVc2Ugb2YgbmF0aXZlIHR5cGUgaXMgbm90IGEgUE9EIGluIGVudHJ5cG9pbnQg
c2VtYW50aWMuIiwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURl
ZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1
cmVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRp
b24mIHR5cGVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQodHlwZURlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5
cGUmIGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFy
cmF5VHlwZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2lu
dGVyVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbGxlZ2Fs
IHVzZSBvZiBwb2ludGVyIGluIGVudHJ5cG9pbnQgc2VtYW50aWMuIiwgcG9pbnRlclR5cGUuY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVu
Y2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBzZXRF
cnJvcihFcnJvcigiSWxsZWdhbCB1c2Ugb2YgYXJyYXkgcmVmZXJlbmNlIGluIGVudHJ5cG9pbnQg
c2VtYW50aWMuIiwgYXJyYXlSZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5jZS5yZXNv
bHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotY2xhc3MgRnVuY3Rpb25LZXkgewotcHVibGljOgot
ICAgIEZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0OwotICAgIEZ1bmN0aW9uS2V5KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICB7Ci0gICAgICAgIG1fY2FzdFJldHVyblR5cGUgPSBi
aXR3aXNlX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsK
LSAgICB9Ci0KLSAgICBGdW5jdGlvbktleShTdHJpbmcgbmFtZSwgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSogY2Fz
dFJldHVyblR5cGUgPSBudWxscHRyKQotICAgICAgICA6IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQot
ICAgICAgICAsIG1fdHlwZXMoV1RGTW92ZSh0eXBlcykpCi0gICAgICAgICwgbV9jYXN0UmV0dXJu
VHlwZShjYXN0UmV0dXJuVHlwZSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGUgPT0gYml0d2lzZV9j
YXN0PEFTVDo6TmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KLQotICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaGFzaCA9IElu
dEhhc2g8c2l6ZV90Pjo6aGFzaChtX3R5cGVzLnNpemUoKSk7Ci0gICAgICAgIGhhc2ggXj0gbV9u
YW1lLmhhc2goKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3R5cGVzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgaGFzaCBePSBtX3R5cGVzW2ldLmdldCgpLmhhc2goKSArIGk7
Ci0KLSAgICAgICAgaWYgKG1fY2FzdFJldHVyblR5cGUpCi0gICAgICAgICAgICBoYXNoIF49IFdU
Rjo6UHRySGFzaDxBU1Q6OlR5cGUqPjo6aGFzaCgmbV9jYXN0UmV0dXJuVHlwZS0+dW5pZnlOb2Rl
KCkpOwotCi0gICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV90
eXBlcy5zaXplKCkgIT0gb3RoZXIubV90eXBlcy5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3R5cGVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMobV90eXBlc1tpXS5nZXQo
KSwgb3RoZXIubV90eXBlc1tpXS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KG1fY2FzdFJldHVy
blR5cGUpICE9IHN0YXRpY19jYXN0PGJvb2w+KG90aGVyLm1fY2FzdFJldHVyblR5cGUpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICghbV9jYXN0UmV0dXJuVHlwZSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmICgmbV9jYXN0UmV0dXJuVHlw
ZS0+dW5pZnlOb2RlKCkgPT0gJm90aGVyLm1fY2FzdFJldHVyblR5cGUtPnVuaWZ5Tm9kZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
RnVuY3Rpb25LZXkmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5oYXNo
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGdW5jdGlv
bktleSYgYSwgY29uc3QgRnVuY3Rpb25LZXkmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUcmFp
dHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RnVuY3Rpb25LZXk+IHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwot
ICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRnVuY3Rpb25LZXkmIGtleSkg
eyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAgICBT
dHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5u
YW1lZFR5cGU+PiBtX3R5cGVzOwotICAgIEFTVDo6TmFtZWRUeXBlKiBtX2Nhc3RSZXR1cm5UeXBl
OwotfTsKLQotc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiByZXNvbHZlV2l0
aFJlZmVyZW5jZUNvbXBhcmF0b3IoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZXNvbHZpbmdUeXBl
JiBmaXJzdEFyZ3VtZW50LCBSZXNvbHZpbmdUeXBlJiBzZWNvbmRBcmd1bWVudCwgY29uc3QgSW50
cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBjb25zdCBib29sIGlzT3BlcmF0b3IgPSB0cnVl
OwotICAgIGF1dG8gcmV0dXJuVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlv
biwgaW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICBhdXRvIGFyZ3VtZW50VHlwZSA9IGZpcnN0
QXJndW1lbnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4m
IHVubmFtZWRUeXBlKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4g
dW5uYW1lZFR5cGUuY29weVJlZigpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHNl
Y29uZEFyZ3VtZW50LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAg
IHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAg
ICAgICAgIC8vIFdlIGVuY291bnRlcmVkICJudWxsID09IG51bGwiLgotICAgICAgICAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjIgVGhp
cyBjYW4gcHJvYmFibHkgYmUgZ2VuZXJhbGl6ZWQsIHVzaW5nIHRoZSAicHJlZmVycmVkIHR5cGUi
IGluZnJhc3RydWN0dXJlIHVzZWQgYnkgZ2VuZXJpYyBsaXRlcmFscwotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gQVNUOjpUeXBlUmVmZXJlbmNl
Ojp3cmFwKGxvY2F0aW9uLCBpbnRyaW5zaWNzLmludFR5cGUoKSk7Ci0gICAgICAgIH0pKTsKLSAg
ICB9KSk7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgIHBh
cmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihs
b2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIGFyZ3VtZW50VHlwZS5jb3B5UmVmKCksIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMo
KSwgV1RGTW92ZShhcmd1bWVudFR5cGUpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVyYXRvcj09IiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3Is
IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLX0KLQotZW51bSBjbGFzcyBBY2NlcHRh
YmlsaXR5IHsKLSAgICBZZXMsCi0gICAgTm8KLX07Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgY29uc3QgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgSW50cmluc2lj
cyYgaW50cmluc2ljcykKLXsKLSAgICBpZiAobmFtZSA9PSAib3BlcmF0b3I9PSIgJiYgdHlwZXMu
c2l6ZSgpID09IDIpIHsKLSAgICAgICAgYXV0byBhY2NlcHRhYmlsaXR5ID0gW10oUmVzb2x2aW5n
VHlwZSYgcmVzb2x2aW5nVHlwZSkgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IEFjY2VwdGFiaWxpdHkgewotICAgICAgICAgICAgICAg
IGF1dG8mIHVuaWZ5Tm9kZSA9IHVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSAmJiBpczxBU1Q6OlJl
ZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpID8gQWNj
ZXB0YWJpbGl0eTo6WWVzIDogQWNjZXB0YWJpbGl0eTo6Tm87Ci0gICAgICAgICAgICB9LCBbXShS
ZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEFjY2VwdGFiaWxpdHk6Ok5vOwotICAgICAgICAgICAgfSkpOwot
ICAgICAgICB9OwotICAgICAgICBhdXRvIGxlZnRBY2NlcHRhYmlsaXR5ID0gYWNjZXB0YWJpbGl0
eSh0eXBlc1swXS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmlnaHRBY2NlcHRhYmlsaXR5ID0gYWNj
ZXB0YWJpbGl0eSh0eXBlc1sxXS5nZXQoKSk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNl
OwotICAgICAgICBpZiAobGVmdEFjY2VwdGFiaWxpdHkgPT0gQWNjZXB0YWJpbGl0eTo6WWVzICYm
IHJpZ2h0QWNjZXB0YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMpIHsKLSAgICAgICAgICAg
IGF1dG8mIHVubmFtZWRUeXBlMSA9ICp0eXBlc1swXS5nZXQoKS5nZXRVbm5hbWVkVHlwZSgpOwot
ICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUyID0gKnR5cGVzWzFdLmdldCgpLmdldFVubmFt
ZWRUeXBlKCk7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcyh1bm5hbWVkVHlwZTEsIHVu
bmFtZWRUeXBlMik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIHJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihsb2NhdGlvbiwgdHlwZXNb
MF0uZ2V0KCksIHR5cGVzWzFdLmdldCgpLCBpbnRyaW5zaWNzKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RhdGljIGJvb2wgY2hlY2tTZW1hbnRpY3MoVmVjdG9yPEVu
dHJ5UG9pbnRJdGVtPiYgaW5wdXRJdGVtcywgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgb3V0cHV0
SXRlbXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QVNUOjpFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9p
bnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIHsKLSAgICAgICAg
YXV0byBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2lu
dEl0ZW0+JiBpdGVtcykgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IGkgKyAxOyBqIDwgaXRlbXMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGl0ZW1zW2ldLnNlbWFudGljID09IGl0ZW1zW2pdLnNlbWFudGljKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNr
RHVwbGljYXRlU2VtYW50aWNzKGlucHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoIWNoZWNrRHVwbGljYXRlU2VtYW50aWNzKG91dHB1dEl0ZW1zKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gY2hl
Y2tTZW1hbnRpY1R5cGVzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1z
KSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBhY2NlcHRhYmxlID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9y
KFsmXShjb25zdCBBU1Q6OkJhc2VTZW1hbnRpYyYgc2VtYW50aWMpIC0+IGJvb2wgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWMuaXNBY2NlcHRhYmxlVHlwZSgqaXRlbS51bm5h
bWVkVHlwZSwgaW50cmluc2ljcyk7Ci0gICAgICAgICAgICAgICAgfSksICppdGVtLnNlbWFudGlj
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdGFibGUpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEl0ZW1zKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljVHlw
ZXMob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgYXV0byBjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZSA9IFsmXShjb25zdCBW
ZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcywgQVNUOjpCYXNlU2VtYW50aWM6OlNoYWRlckl0
ZW1EaXJlY3Rpb24gZGlyZWN0aW9uKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhY2NlcHRhYmxlID0gV1RGOjp2
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBBU1Q6OkJhc2VTZW1hbnRpYyYgc2VtYW50
aWMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWMuaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihkaXJlY3Rpb24sIGVudHJ5UG9pbnRUeXBlKTsK
LSAgICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgIGlm
ICghYWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAgIGlm
ICghY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaW5wdXRJdGVtcywgQVNUOjpCYXNlU2VtYW50
aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShvdXRwdXRJdGVtcywg
QVNUOjpCYXNlU2VtYW50aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1dCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGNoZWNrUE9E
RGF0YSA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcykgLT4gYm9vbCB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICAgICAgICAg
IFBPRENoZWNrZXIgcG9kQ2hlY2tlcjsKLSAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpQb2lu
dGVyVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHBvZENoZWNr
ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCppdGVtLnVu
bmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpczxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICAg
ICAgICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KGl0ZW0udW5uYW1lZFR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICBwb2RDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkFycmF5VHlwZT4oKml0ZW0udW5uYW1lZFR5cGUpLnR5cGUoKSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICBpZiAocG9kQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fTsKLSAgICAgICAgaWYgKCFjaGVja1BPRERhdGEoaW5wdXRJdGVtcykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tQT0REYXRhKG91dHB1dEl0ZW1zKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
c3RhdGljIGJvb2wgY2hlY2tPcGVyYXRvck92ZXJsb2FkKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgZW51bSBjbGFzcyBDaGVja0tpbmQg
ewotICAgICAgICBJbmRleCwKLSAgICAgICAgRG90Ci0gICAgfTsKLQotICAgIGlmICghZnVuY3Rp
b25EZWZpbml0aW9uLmlzT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGZ1bmN0aW9uRGVmaW5pdGlvbi5pc0Nhc3QoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKysiIHx8IGZ1bmN0aW9u
RGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLS0iKSB7Ci0gICAgICAgIHJldHVybiBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxCi0gICAgICAgICAgICAmJiBt
YXRjaGVzKCpmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCksIGZ1bmN0
aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9u
Lm5hbWUoKSA9PSAib3BlcmF0b3IrIiB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJv
cGVyYXRvci0iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkgPT0gMSB8fCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSAyOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcioiCi0g
ICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLyIKLSAgICAg
ICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IlIgotICAgICAgICB8
fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvciYiCi0gICAgICAgIHx8IGZ1
bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfCIKLSAgICAgICAgfHwgZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3JeIgotICAgICAgICB8fCBmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcjw8IgotICAgICAgICB8fCBmdW5jdGlvbkRlZmlu
aXRpb24ubmFtZSgpID09ICJvcGVyYXRvcj4+IikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVm
aW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5p
dGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfiIpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbkRlZmlu
aXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Y2xhc3MgQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBDaGVja2VyKGNv
bnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIFByb2dyYW0mIHByb2dyYW0pCi0gICAgICAgIDog
bV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9wcm9ncmFtKHByb2dyYW0pCi0g
ICAgewotICAgICAgICBhdXRvIGFkZEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mIGZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVy
blR5cGUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLmlzQ2FzdCgpICYmIGlz
PEFTVDo6TmFtZWRUeXBlPihmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCkpKQotICAgICAgICAg
ICAgICAgIGNhc3RSZXR1cm5UeXBlID0gJmRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihmdW5jdGlv
bi50eXBlKCkudW5pZnlOb2RlKCkpOwotCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gdHlwZXM7Ci0gICAgICAgICAgICB0eXBlcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotCi0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhcmFtIDogZnVuY3Rpb24ucGFyYW1ldGVycygpKQotICAg
ICAgICAgICAgICAgIHR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxpemVkVHlwZUZvckZ1bmN0
aW9uS2V5KCpwYXJhbS0+dHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9mdW5jdGlvbnMuYWRkKEZ1bmN0aW9uS2V5IHsgZnVuY3Rpb24ubmFtZSgpLCBXVEZNb3ZlKHR5
cGVzKSwgY2FzdFJldHVyblR5cGUgfSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZm9y
IChhdXRvJiBmdW5jdGlvbiA6IG1fcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAg
ICAgICAgICBhZGRGdW5jdGlvbihmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkKLSAgICAg
ICAgICAgIGFkZEZ1bmN0aW9uKGZ1bmN0aW9uLmdldCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5DaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChQcm9ncmFtJikgb3ZlcnJp
ZGU7Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXNzaWduVHlwZXMoKTsKLQotcHJpdmF0
ZToKLSAgICBib29sIGNoZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYpOwotICAgIGJvb2wgaXNCb29sVHlwZShSZXNvbHZpbmdUeXBlJik7Ci0gICAgc3RydWN0IFJl
Y3Vyc2VJbmZvIHsKLSAgICAgICAgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZTsKLSAgICAg
ICAgY29uc3QgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbjsKLSAgICB9OwotICAg
IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJbmZvKEFTVDo6RXhwcmVz
c2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAgc3RkOjpvcHRpb25h
bDxSZWN1cnNlSW5mbz4gZ2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29sIHJlcXVpcmVzTGVm
dFZhbHVlID0gZmFsc2UpOwotICAgIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiByZWN1cnNlQW5k
V3JhcEJhc2VUeXBlKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJik7Ci0gICAgYm9vbCBy
ZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYpOwotICAgIHZvaWQgYXNz
aWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYsIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwg
QVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBhc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpF
eHByZXNzaW9uJiwgQVNUOjpOYW1lZFR5cGUmLCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLSAgICB2
b2lkIGFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBmb3J3YXJkVHlwZShBU1Q6
OkV4cHJlc3Npb24mLCBSZXNvbHZpbmdUeXBlJiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25t
ZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRl
ckV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJy
YXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpX
aGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29s
dmVGdW5jdGlvbihWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiwgQVNUOjpOYW1lZFR5cGUq
IGNhc3RSZXR1cm5UeXBlID0gbnVsbHB0cik7Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiB3cmFw
cGVkRmxvYXRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVkRmxvYXRUeXBlKQot
ICAgICAgICAgICAgbV93cmFwcGVkRmxvYXRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KHsgfSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICptX3dyYXBw
ZWRGbG9hdFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYgd3JhcHBlZFVpbnRU
eXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVkVWludFR5cGUpCi0gICAgICAgICAg
ICBtX3dyYXBwZWRVaW50VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh7IH0sIG1faW50
cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICptX3dyYXBwZWRVaW50VHlwZTsK
LSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiBub3JtYWxpemVkVHlwZUZvckZ1bmN0aW9u
S2V5KEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpCi0gICAgewotICAgICAgICBhdXRvKiB1bmlmeU5v
ZGUgPSAmdHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKHVuaWZ5Tm9kZSA9PSAmbV9pbnRy
aW5zaWNzLnVpbnRUeXBlKCkgfHwgdW5pZnlOb2RlID09ICZtX2ludHJpbnNpY3MuaW50VHlwZSgp
KQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRGbG9hdFR5cGUoKTsKLQotICAgICAgICByZXR1
cm4gdHlwZTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3dyYXBw
ZWRGbG9hdFR5cGU7Ci0gICAgUmVmUHRyPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV93cmFwcGVkVWlu
dFR5cGU7Ci0gICAgSGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b2x2aW5nVHlwZT4+IG1fdHlwZU1hcDsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV92ZXJ0ZXhFbnRy
eVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9mcmFn
bWVudEVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2NvbXB1dGVFbnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBjb25zdCBJ
bnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgUHJvZ3JhbSYgbV9wcm9ncmFtOwotICAgIEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uKiBtX2N1cnJlbnRGdW5jdGlvbiB7IG51bGxwdHIgfTsKLSAg
ICBIYXNoTWFwPEZ1bmN0aW9uS2V5LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiwgRnVuY3Rpb25LZXk6Okhhc2gsIEZ1bmN0aW9uS2V5
OjpUcmFpdHM+IG1fZnVuY3Rpb25zOwotICAgIEFTVDo6TmFtZVNwYWNlIG1fY3VycmVudE5hbWVT
cGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLSAgICBib29sIG1faXNW
aXNpdGluZ1BhcmFtZXRlcnMgeyBmYWxzZSB9OwotfTsKLQotdm9pZCBDaGVja2VyOjp2aXNpdChQ
cm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZXNlIHZpc2l0aW5nIGZ1bmN0aW9ucyBtaWdo
dCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBkb24ndCB1c2UgZm9yZWFjaCBzeW50YXgu
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNp
emUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS50eXBlRGVmaW5p
dGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnN0cnVjdHVy
ZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChw
cm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKVtp
XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJh
dGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0u
bmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
Q2hlY2tlcjo6YXNzaWduVHlwZXMoKQotewotICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDog
bV90eXBlTWFwKSB7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IGtleVZhbHVlUGFpci52YWx1ZS0+
dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVk
VHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBrZXlWYWx1ZVBhaXIua2V5LT5zZXRUeXBlKHVu
bmFtZWRUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIGlmICghcmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKSkgewotICAgICAgICAgICAg
ICAgIGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4oY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJlbmNl
LT5yZXNvbHZhYmxlVHlwZSgpKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleVZhbHVlUGFpci5rZXktPnNldFR5cGUocmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNj
ZXNzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBub3Qg
cmVzb2x2ZSB0aGUgdHlwZSBvZiBhIGNvbnN0YW50LiIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
eyB9OwotfQotCi1ib29sIENoZWNrZXI6OmNoZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1dG8gaW5kZXggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBzd2l0Y2ggKCpm
dW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSkgewotICAgIGNhc2UgQVNUOjpFbnRy
eVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV92
ZXJ0ZXhFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKTsK
LSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9mcmFnbWVudEVudHJ5UG9pbnRzW2luZGV4XS5hZGQoZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIGNhc2UgQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29t
cHV0ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29tcHV0ZUVudHJ5UG9p
bnRzW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIH0KLX0KLQot
dm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVj
bGFyYXRpb24pCi17Ci0gICAgbV9pc1Zpc2l0aW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgVmlz
aXRvcjo6dmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgbV9pc1Zpc2l0aW5nUGFyYW1l
dGVycyA9IGZhbHNlOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgbV9jdXJyZW50TmFtZVNwYWNlID0g
ZnVuY3Rpb25EZWZpbml0aW9uLm5hbWVTcGFjZSgpOwotICAgIG1fY3VycmVudEZ1bmN0aW9uID0g
JmZ1bmN0aW9uRGVmaW5pdGlvbjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9p
bnRUeXBlKCkpIHsKLSAgICAgICAgaWYgKCFjaGVja1NoYWRlclR5cGUoZnVuY3Rpb25EZWZpbml0
aW9uKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkR1cGxpY2F0ZSBlbnRyeXBvaW50
IGZ1bmN0aW9uLiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gZW50cnlQb2ludEl0ZW1zID0g
Z2F0aGVyRW50cnlQb2ludEl0ZW1zKG1faW50cmluc2ljcywgZnVuY3Rpb25EZWZpbml0aW9uKTsK
LSAgICAgICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKGVu
dHJ5UG9pbnRJdGVtcy5lcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNzKGVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCBlbnRy
eVBvaW50SXRlbXMtPm91dHB1dHMsIGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgp
LCBtX2ludHJpbnNpY3MpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFkIHNlbWFu
dGljcyBmb3IgZW50cnlwb2ludC4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWNoZWNr
T3BlcmF0b3JPdmVybG9hZChmdW5jdGlvbkRlZmluaXRpb24pKSB7Ci0gICAgICAgIHNldEVycm9y
KEVycm9yKCJPcGVyYXRvciBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBzaWduYXR1cmUuIiwgZnVu
Y3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotfQotCi1zdGF0aWMg
UmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUmIGxl
ZnQsIFJlc29sdmluZ1R5cGUmIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0LnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgbGVmdCkgLT4gUmVmUHRyPEFT
VDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJpZ2h0LnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6OlVu
bmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlcyhsZWZ0LCByaWdodCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGxlZnQuY29weVJlZigpOwotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBy
aWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAgIHJldHVybiBt
YXRjaEFuZENvbW1pdChsZWZ0LCByaWdodC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIH0p
KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgbGVmdCkgLT4g
UmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJpZ2h0LnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmlnaHQpIC0+IFJlZlB0
cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQo
cmlnaHQsIGxlZnQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBl
PiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobGVmdC0+cmVzb2x2YWJsZVR5
cGUoKSwgcmlnaHQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpOwot
fQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KFJlc29s
dmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQot
ewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1l
ZFR5cGU+IHsKLSAgICAgICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIHJlc29sdmluZ1R5cGUp
KQotICAgICAgICAgICAgcmV0dXJuICZ1bm5hbWVkVHlwZTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmlu
Z1R5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiBtYXRj
aEFuZENvbW1pdCh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZS0+cmVzb2x2YWJsZVR5cGUoKSk7
Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgYm9vbCBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBl
JiByZXNvbHZpbmdUeXBlLCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewotICAgIHJldHVy
biByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgewotICAgICAgICBpZiAobWF0Y2hlcyhyZXNvbHZpbmdU
eXBlLCBuYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVz
b2x2aW5nVHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChuYW1l
ZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFibGVUeXBlKCkpOwotICAgIH0pKTsKLX0KLQot
c3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoUmVzb2x2aW5nVHlwZSYgcmVz
b2x2aW5nVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBSZWZQdHI8
QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUuY29weVJlZigp
OwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgaWYg
KCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5tYXliZVJlc29sdmVk
VHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmcmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0gICAgfSkpOwotfQotCi1B
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIENoZWNrZXI6OnJlc29sdmVGdW5jdGlvbihWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1
cm5UeXBlKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1l
ZFR5cGU+PiB1bm5hbWVkVHlwZXM7Ci0gICAgdW5uYW1lZFR5cGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodHlwZXMuc2l6ZSgpKTsKLQotICAgIGZvciAoYXV0byByZXNvbHZpbmdUeXBlIDogdHlw
ZXMpIHsKLSAgICAgICAgQVNUOjpVbm5hbWVkVHlwZSogdHlwZSA9IHJlc29sdmluZ1R5cGUuZ2V0
KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5h
bWVkVHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICAgICAgcmV0dXJuIHVubmFt
ZWRUeXBlLnB0cigpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsKLSAg
ICAgICAgICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5t
YXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAmcmVzb2x2YWJsZVR5
cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAg
ICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5pc0Zsb2F0
TGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8IHJlc29sdmFibGVUeXBlUmVmZXJlbmNl
LT5yZXNvbHZhYmxlVHlwZSgpLmlzSW50ZWdlckxpdGVyYWxUeXBlKCkKLSAgICAgICAgICAgICAg
ICB8fCByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5pc1Vuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICZ3cmFwcGVkRmxv
YXRUeXBlKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb21taXQocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UtPnJlc29sdmFibGVUeXBlKCkpLmdldCgpOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAg
aWYgKCF0eXBlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ291bGQgbm90IHJlc29s
dmUgdGhlIHR5cGUgb2YgYSBjb25zdGFudC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgfQotCi0gICAgICAgIHVubmFtZWRUeXBlcy51bmNoZWNrZWRBcHBlbmQobm9y
bWFsaXplZFR5cGVGb3JGdW5jdGlvbktleSgqdHlwZSkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnMuZmluZChGdW5jdGlvbktleSB7IG5hbWUsIFdURk1v
dmUodW5uYW1lZFR5cGVzKSwgY2FzdFJldHVyblR5cGUgfSk7Ci0gICAgICAgIGlmIChpdGVyICE9
IG1fZnVuY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAoQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKGl0ZXItPnZhbHVlLCB0
eXBlcywgY2FzdFJldHVyblR5cGUsIG1fY3VycmVudE5hbWVTcGFjZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gbmV3
RnVuY3Rpb24gPSByZXNvbHZlQnlJbnN0YW50aWF0aW9uKG5hbWUsIGxvY2F0aW9uLCB0eXBlcywg
bV9pbnRyaW5zaWNzKSkgewotICAgICAgICBtX3Byb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5ld0Z1
bmN0aW9uKSk7Ci0gICAgICAgIHJldHVybiAmbV9wcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKCkubGFzdCgpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lk
IENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pCi17Ci0gICAgYm9vbCBpc1NpZ25lZDsKLSAgICBhdXRvKiBiYXNlVHlwZSA9IChb
Jl0oKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgICAgIGF1dG8mIGJh
c2VUeXBlID0gZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAg
ICAgaWYgKCFpczxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRU
eXBlPihiYXNlVHlwZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0
byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
SW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaXNTaWduZWQgPSBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKTsKLSAgICAgICAgcmV0dXJuICZuYXRpdmVU
eXBlRGVjbGFyYXRpb247Ci0gICAgfSkoKTsKLSAgICBpZiAoIWJhc2VUeXBlKSB7Ci0gICAgICAg
IHNldEVycm9yKEVycm9yKCJJbnZhbGlkIGJhc2UgdHlwZSBmb3IgZW51bS4iLCBlbnVtZXJhdGlv
bkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGF1dG8gZW51bWVyYXRpb25NZW1iZXJzID0gZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1l
cmF0aW9uTWVtYmVycygpOwotCi0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbk1l
bWJlcnMpIHsKLSAgICAgICAgaW50NjRfdCB2YWx1ZSA9IG1lbWJlci5nZXQoKS52YWx1ZSgpOwot
ICAgICAgICBpZiAoaXNTaWduZWQpIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2
NF90PihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24gdmFsdWUuIiwgbWVtYmVy
LmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24gdmFsdWUuIiwgbWVt
YmVyLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IGVudW1lcmF0aW9uTWVtYmVyc1tpXS5nZXQoKS52YWx1ZSgpOwotICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyArK2opIHsKLSAgICAg
ICAgICAgIGF1dG8gb3RoZXJWYWx1ZSA9IGVudW1lcmF0aW9uTWVtYmVyc1tqXS5nZXQoKS52YWx1
ZSgpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IG90aGVyVmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRlIGVudW1lcmF0aW9u
IHZhbHVlcy4iLCBlbnVtZXJhdGlvbk1lbWJlcnNbal0uZ2V0KCkuY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBib29sIGZvdW5kWmVybyA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgbWVtYmVyIDog
ZW51bWVyYXRpb25NZW1iZXJzKSB7Ci0gICAgICAgIGlmICghbWVtYmVyLmdldCgpLnZhbHVlKCkp
IHsKLSAgICAgICAgICAgIGZvdW5kWmVybyA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBpZiAoIWZvdW5kWmVybykgewotICAgICAgICBzZXRFcnJvcihF
cnJvcigiZW51bSBkZWZpbml0aW9uIG11c3QgY29udGFpbiBhIHplcm8gdmFsdWUuIiwgZW51bWVy
YXRpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJl
bmNlKQotewotICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwot
Ci0gICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVu
dHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0KLWF1
dG8gQ2hlY2tlcjo6cmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9u
LCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPgot
ewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgIGlmIChoYXNFcnJvcigpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBnZXRJbmZvKGV4cHJlc3Np
b24sIHJlcXVpcmVzTGVmdFZhbHVlKTsKLX0KLQotYXV0byBDaGVja2VyOjpnZXRJbmZvKEFTVDo6
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4gc3RkOjpv
cHRpb25hbDxSZWN1cnNlSW5mbz4KLXsKLSAgICBhdXRvIHR5cGVJdGVyYXRvciA9IG1fdHlwZU1h
cC5maW5kKCZleHByZXNzaW9uKTsKLSAgICBBU1NFUlQodHlwZUl0ZXJhdG9yICE9IG1fdHlwZU1h
cC5lbmQoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiB0eXBlQW5ub3RhdGlvbiA9IGV4cHJlc3Npb24u
dHlwZUFubm90YXRpb24oKTsKLSAgICBpZiAocmVxdWlyZXNMZWZ0VmFsdWUgJiYgdHlwZUFubm90
YXRpb24uaXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhwZWN0
ZWQgcnZhbHVlLiIsIGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgcmV0dXJuIHt7ICp0eXBlSXRlcmF0b3ItPnZhbHVl
LCB0eXBlQW5ub3RhdGlvbiB9fTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgLy8gUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbnMgYXJlIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGFub255bW91cyB2YXJp
YWJsZXMgZXhpc3QsCi0gICAgLy8gYW5kIHRoYXQgZG9lc24ndCByZWN1cnNlIG9uIHRoZSBhbm9u
eW1vdXMgdmFyaWFibGVzLCBzbyB3ZSBjYW4gYXNzdW1lIHRoZSB2YXJpYWJsZSBoYXMgYSB0eXBl
LgotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwot
ICAgIGlmIChtYXRjaGVzKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSwgbV9pbnRyaW5zaWNz
LnZvaWRUeXBlKCkpKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJWYXJpYWJsZXMgY2FuJ3Qg
aGF2ZSB2b2lkIHR5cGUuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRp
YWxpemVyKCkpIHsKLSAgICAgICAgYXV0byYgbGhzVHlwZSA9ICp2YXJpYWJsZURlY2xhcmF0aW9u
LnR5cGUoKTsKLSAgICAgICAgYXV0byBpbml0aWFsaXplckluZm8gPSByZWN1cnNlQW5kR2V0SW5m
bygqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAgICAgaWYgKCFpbml0
aWFsaXplckluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghbWF0Y2hBbmRD
b21taXQoaW5pdGlhbGl6ZXJJbmZvLT5yZXNvbHZpbmdUeXBlLCBsaHNUeXBlKSkgewotICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkRlY2xhcmVkIHZhcmlhYmxlIHR5cGUgZG9lcyBub3QgbWF0
Y2ggaXRzIGluaXRpYWxpemVyJ3MgdHlwZS4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KCFtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4odmFyaWFi
bGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgpKSkgewotICAgICAgICBpZiAoaXM8QVNU
OjpQb2ludGVyVHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgpKSkK
LSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJNdXN0IGFzc2lnbiB0byBhIHBvaW50ZXIgdmFy
aWFibGUgZGVjbGFyYXRpb24gaW4gaXRzIGluaXRpYWxpemVyLiIsIHZhcmlhYmxlRGVjbGFyYXRp
b24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQo
aXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpLT51
bmlmeU5vZGUoKSkpOwotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk11c3QgYXNzaWduIHRv
IGFuIGFycmF5IHJlZmVyZW5jZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBpdHMgaW5pdGlhbGl6
ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWduQ29uY3JldGVU
eXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHVu
bmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdo
dFZhbHVlKCkpCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBl
eHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKLX0K
LQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiBhbm5vdGF0
aW9uKQotewotICAgIGF1dG8gdW5uYW1lZFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
dHlwZS5jb2RlTG9jYXRpb24oKSwgdHlwZSk7Ci0gICAgVmlzaXRvcjo6dmlzaXQodW5uYW1lZFR5
cGUpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShleHByZXNzaW9uLCBXVEZNb3ZlKHVubmFtZWRU
eXBlKSwgYW5ub3RhdGlvbik7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gcmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24g
PSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5h
ZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92
ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNU
OjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQotewot
ICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5u
YW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAu
YWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVm
KCkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0
KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
bWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfSkpOwot
ICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikp
OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFz
c2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdEluZm8gPSByZWN1cnNlQW5kR2V0
SW5mbyhhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCksIHRydWUpOwotICAgIGlmICghbGVmdElu
Zm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmlnaHRJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8oYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgaWYgKCFyaWdodEluZm8p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1hdGNoQW5kQ29tbWl0
KGxlZnRJbmZvLT5yZXNvbHZpbmdUeXBlLCByaWdodEluZm8tPnJlc29sdmluZ1R5cGUpOwotICAg
IGlmICghcmVzdWx0VHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiTGVmdCBoYW5kIHNp
ZGUgb2YgYXNzaWdubWVudCBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgcmlnaHQgaGFu
ZCBzaWRlLiIsIGFzc2lnbm1lbnRFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoYXNzaWdubWVudEV4cHJl
c3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0gICAg
YXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5sZWZ0VmFsdWUoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCku
c2V0VHlwZSgqbGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZS5nZXRVbm5hbWVkVHlwZSgpKTsK
LQotICAgIGF1dG8gbmV3VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgaWYgKCFuZXdWYWx1ZUlu
Zm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
bWF0Y2hlZFR5cGUgPSBtYXRjaEFuZENvbW1pdChsZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBl
LCBuZXdWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpKQotICAgICAgICByZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLm5ld1ZhbHVlKCkuc2V0VHlwZSgqbWF0Y2hlZFR5cGUpOwotICAgIGVsc2Ugewot
ICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFzZSBvZiB0aGUgcmVhZC1tb2RpZnktd3JpdGUgZXhw
cmVzc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgbmV3IHZhbHVlLiIsIHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGF1dG8gcmVzdWx0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBpZiAoIXJlc3VsdElu
Zm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvcndhcmRUeXBlKHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24sIHJlc3VsdEluZm8tPnJlc29sdmluZ1R5cGUsIEFTVDo6UmlnaHRWYWx1ZSgpKTsK
LX0KLQotc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIGdldFVubmFtZWRUeXBlKFJlc29sdmluZ1R5
cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHR5cGUpIC0+IEFTVDo6VW5u
YW1lZFR5cGUqIHsKLSAgICAgICAgcmV0dXJuIHR5cGUucHRyKCk7Ci0gICAgfSwgW10oUmVmUHRy
PFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgdHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewot
ICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHR5cGUgaXNuJ3QgY29tbWl0dGVkLCBzaG91bGQgd2Ug
anVzdCBjb21taXQoKSBpdCBub3c/Ci0gICAgICAgIHJldHVybiB0eXBlLT5yZXNvbHZhYmxlVHlw
ZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCk7Ci0gICAgfSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17
Ci0gICAgYXV0byBwb2ludGVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRlcmVmZXJlbmNlRXhw
cmVzc2lvbi5wb2ludGVyKCkpOwotICAgIGlmICghcG9pbnRlckluZm8pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8qIHVubmFtZWRUeXBlID0gZ2V0VW5uYW1lZFR5cGUocG9pbnRlckluZm8t
PnJlc29sdmluZ1R5cGUpOwotCi0gICAgYXV0byogcG9pbnRlclR5cGUgPSAoWyZdKEFTVDo6VW5u
YW1lZFR5cGUqIHVubmFtZWRUeXBlKSAtPiBBU1Q6OlBvaW50ZXJUeXBlKiB7Ci0gICAgICAgIGlm
ICghdW5uYW1lZFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0
byYgdW5pZnlOb2RlID0gdW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIWlz
PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgYXV0byYgdW5uYW1lZFVuaWZ5VHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpQb2ludGVyVHlwZT4odW5u
YW1lZFVuaWZ5VHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVW5pZnlUeXBlKTsKLSAgICB9
KSh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKCFwb2ludGVyVHlwZSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiQ2Fubm90IGRlcmVmZXJlbmNlIGEgbm9uLXBvaW50ZXIgdHlwZS4iLCBkZXJlZmVy
ZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24sIHBvaW50ZXJU
eXBlLT5lbGVtZW50VHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IHBvaW50ZXJUeXBlLT5hZGRyZXNz
U3BhY2UoKSB9KTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhw
cmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdFZhbHVlSW5m
byA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSwg
dHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5sZWZ0
QWRkcmVzc1NwYWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhIG5vbiBsdmFsdWUuIiwg
bWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvKiBsZWZ0VmFsdWVUeXBlID0gZ2V0VW5uYW1lZFR5cGUobGVmdFZh
bHVlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVUeXBlKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhIHZhbHVlIHdp
dGhvdXQgYSB0eXBlLiIsIG1ha2VQb2ludGVyRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VQb2lu
dGVyRXhwcmVzc2lvbiwgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKG1ha2VQb2ludGVyRXhwcmVz
c2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNzU3BhY2UsICpsZWZ0VmFsdWVUeXBlKSk7
Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdFZhbHVl
SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVm
dFZhbHVlKCkpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byogbGVmdFZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKGxlZnRWYWx1ZUluZm8tPnJl
c29sdmluZ1R5cGUpOwotICAgIGlmICghbGVmdFZhbHVlVHlwZSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVmZXJlbmNlIG9mIGEgdmFsdWUgd2l0aG91
dCBhIHR5cGUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdW5pZnlOb2RlID0gbGVmdFZh
bHVlVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5
Tm9kZSkpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFt
ZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4odW5u
YW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFT
VDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRl
VHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIHBv
aW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpLCBwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGxlZnRBZGRyZXNz
U3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5sZWZ0QWRkcmVzc1NwYWNlKCk7
Ci0gICAgICAgIGlmICghbGVmdEFkZHJlc3NTcGFjZSkgewotICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVyZW5jZSBmcm9tIGEgbm9uLWxlZnQtdmFs
dWUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlU
eXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25j
YXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MyBTYXZlIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMuCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZSht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCAqbGVmdEFkZHJlc3NT
cGFjZSwgYXJyYXlUeXBlLnR5cGUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gbGVmdFZhbHVlSW5mby0+dHlw
ZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgpOwotICAgIGlmICghbGVmdEFkZHJlc3NTcGFj
ZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVmZXJl
bmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4iLCBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25D
b25jcmV0ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlv
bigpLCAqbGVmdEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAgYXV0
byBiYXNlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAg
ICBpZiAoIWJhc2VJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJhc2VVbm5hbWVk
VHlwZSA9IGNvbW1pdChiYXNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFiYXNlVW5u
YW1lZFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHRoZSB0
eXBlIG9mIHRoZSBiYXNlIG9mIGEgZG90IGV4cHJlc3Npb24uIiwgZG90RXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdHlwZSA9
IGJhc2VVbm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlID0gZG93bmNhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsgICAgCi0gICAgICAgIGlmIChBU1Q6OlN0
cnVjdHVyZUVsZW1lbnQqIGVsZW1lbnQgPSBzdHJ1Y3R1cmUuZmluZChkb3RFeHByZXNzaW9uLmZp
ZWxkTmFtZSgpKSkKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9u
LCBlbGVtZW50LT50eXBlKCksIGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiRmllbGQgbmFtZTog
JyIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCksICInIGRvZXMgbm90IGV4aXN0IG9uIHN0cnVj
dHVyZTogIiwgc3RydWN0dXJlLm5hbWUoKSksIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZG90RXhw
cmVzc2lvbi5maWVsZE5hbWUoKSA9PSAibGVuZ3RoIikgewotICAgICAgICBpZiAoaXM8QVNUOjpB
cnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpCi0gICAgICAgICAgICB8fCBpczxBU1Q6OkFycmF5VHlw
ZT4odHlwZSkKLSAgICAgICAgICAgIHx8IChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
dHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLmlzVmVj
dG9yKCkpKSB7Ci0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwg
d3JhcHBlZFVpbnRUeXBlKCksIEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCIubGVuZ3RoIGZpZWxkIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIGFycmF5cywgYXJyYXkgcmVmZXJlbmNlcywgb3IgdmVjdG9ycy4iLCBkb3RFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkgewotICAg
ICAgICBpZiAoIW1fcHJvZ3JhbS5pc1ZhbGlkVmVjdG9yUHJvcGVydHkoZG90RXhwcmVzc2lvbi5m
aWVsZE5hbWUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKG1ha2VTdHJpbmcoIicu
IiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSwgIicgaXMgbm90IGEgdmFsaWQgcHJvcGVydHkg
b24gYSB2ZWN0b3IuIiksIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdHlwZUFubm90YXRpb24gPSBi
YXNlSW5mby0+dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkgPyBBU1Q6OlR5cGVBbm5vdGF0
aW9uIHsgQVNUOjpSaWdodFZhbHVlKCkgfSA6IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OkFi
c3RyYWN0TGVmdFZhbHVlKCkgfTsKLQotICAgICAgICBzaXplX3QgZmllbGRMZW5ndGggPSBkb3RF
eHByZXNzaW9uLmZpZWxkTmFtZSgpLmxlbmd0aCgpOwotICAgICAgICBhdXRvJiBpbm5lclR5cGUg
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkudmVjdG9yVHlwZUFy
Z3VtZW50KCk7Ci0gICAgICAgIGlmIChmaWVsZExlbmd0aCA9PSAxKQotICAgICAgICAgICAgYXNz
aWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGlubmVyVHlwZSwgdHlwZUFubm90YXRpb24p
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9p
bnRyaW5zaWNzLmJvb2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuYm9vbFZlY3RvclR5cGVGb3JTaXplKGZpZWxk
TGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhp
bm5lclR5cGUsIG1faW50cmluc2ljcy5pbnRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2ln
bkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuaW50VmVjdG9yVHlwZUZv
clNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlIGlm
IChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpKQotICAgICAgICAg
ICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MudWlu
dFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAgICAg
ICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5mbG9hdFR5cGUo
KSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIG1f
aW50cmluc2ljcy5mbG9hdFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90
YXRpb24pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkJhc2UgdmFsdWUgb2YgZG90IGV4cHJlc3Npb24gbXVzdCBiZSBhIHN0cnVjdHVyZSwg
YXJyYXksIG9yIHZlY3Rvci4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lv
bikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZXhJbmZvID0gcmVjdXJzZUFuZEdldEluZm8o
aW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgaWYgKCFpbmRleElu
Zm8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdChp
bmRleEluZm8tPnJlc29sdmluZ1R5cGUsIG1faW50cmluc2ljcy51aW50VHlwZSgpKSkgewotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGluIGFuIGluZGV4IGV4cHJlc3Npb24gbXVz
dCBiZSBhIHVpbnQuIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGJhc2VJbmZvID0gcmVj
dXJzZUFuZEdldEluZm8oaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgaWYgKCFiYXNlSW5m
bykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBiYXNlVW5uYW1lZFR5cGUgPSBjb21taXQo
YmFzZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghYmFzZVVubmFtZWRUeXBlKSB7Ci0g
ICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiB0aGUgYmFz
ZSBvZiBhbiBpbmRleCBleHByZXNzaW9uLiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdHlwZSA9IGJhc2VVbm5h
bWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBl
Pih0eXBlKSkgewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSk7Ci0gICAgICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShpbmRleEV4cHJlc3Npb24sIGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpLCBBU1Q6
OkxlZnRWYWx1ZSB7IGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSB9KTsKLSAgICB9
IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkKLSAgICAgICAgYXNzaWduQ29uY3Jl
dGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHR5cGUpLnR5
cGUoKSwgYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgbmF0aXZlVHlwZSA9
IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsKLSAgICAgICAgYXV0
byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbi5pc1JpZ2h0VmFsdWUo
KSA/IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OlJpZ2h0VmFsdWUoKSB9IDogQVNUOjpUeXBl
QW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJhY3RMZWZ0VmFsdWUoKSB9OwotICAgICAgICBpZiAobmF0
aXZlVHlwZS5pc1ZlY3RvcigpKQotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4
RXhwcmVzc2lvbiwgbmF0aXZlVHlwZS52ZWN0b3JUeXBlQXJndW1lbnQoKSwgdHlwZUFubm90YXRp
b24pOwotICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlLmlzTWF0cml4KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGlubmVyVHlwZSA9IG5hdGl2ZVR5cGUubWF0cml4VHlwZUFyZ3VtZW50KCk7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gbmF0aXZlVHlwZS5udW1iZXJPZk1hdHJpeFJv
d3MoKTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLmJv
b2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShpbmRleEV4cHJl
c3Npb24sIG1faW50cmluc2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUobnVtUm93cyksIHR5cGVB
bm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2lu
dHJpbnNpY3MuZmxvYXRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShpbmRleEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5mbG9hdFZlY3RvclR5cGVGb3JTaXplKG51
bVJvd3MpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRleCBleHByZXNzaW9uIG9uIHVua25vd24gdHlwZS4i
LCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRleCBl
eHByZXNzaW9uIG9uIGFuIHVua25vd24gYmFzZSB0eXBlLiBCYXNlIHR5cGUgbXVzdCBiZSBhbiBh
cnJheSwgYXJyYXkgcmVmZXJlbmNlLCB2ZWN0b3IsIG9yIG1hdHJpeC4iLCBpbmRleEV4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBD
aGVja2VyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkK
LXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0gICAgQVNTRVJU
KHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCktPnR5cGUoKSk7Ci0gICAgCi0gICAgYXNzaWdu
Q29uY3JldGVUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLCAqdmFyaWFibGVSZWZlcmVuY2UudmFyaWFi
bGUoKS0+dHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQg
fSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRlbWVu
dCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsKLSAgICAgICAgYXV0byB2
YWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbygqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwot
ICAgICAgICBpZiAoIXZhbHVlSW5mbykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KCFtYXRjaEFuZENvbW1pdCh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG1fY3VycmVudEZ1bmN0
aW9uLT50eXBlKCkpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlR5cGUgb2YgdGhlIHJl
dHVybiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uIiwg
cmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIW1hdGNoZXMobV9jdXJyZW50RnVuY3Rpb24tPnR5cGUoKSwgbV9pbnRyaW5z
aWNzLnZvaWRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJldHVybiBh
IHZhbHVlIGZyb20gYSB2b2lkIGZ1bmN0aW9uLiIsIHJldHVyblN0YXRlbWVudC5jb2RlTG9jYXRp
b24oKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKQotewot
ICAgIC8vIEZvbGxvd2luZyBwb2ludGVyIHR5cGVzIGNhbiBjYXVzZSBpbmZpbml0ZSBsb29wcyBi
ZWNhdXNlIG9mIGRhdGEgc3RydWN0dXJlcwotICAgIC8vIGxpa2UgbGlua2VkIGxpc3RzLgotICAg
IC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZW1wdHkKLX0KLQot
dm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpCi17Ci0gICAgLy8g
Rm9sbG93aW5nIGFycmF5IHJlZmVyZW5jZSB0eXBlcyBjYW4gY2F1c2UgaW5maW5pdGUgbG9vcHMg
YmVjYXVzZSBvZiBkYXRhCi0gICAgLy8gc3RydWN0dXJlcyBsaWtlIGxpbmtlZCBsaXN0cy4KLSAg
ICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGVtcHR5Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwp
Ci17Ci0gICAgYXNzaWduVHlwZShpbnRlZ2VyTGl0ZXJhbCwgYWRvcHRSZWYoKm5ldyBSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZShpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKQotewotICAgIGFzc2lnblR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgYWRvcHRS
ZWYoKm5ldyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5
cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxv
YXRMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUoZmxvYXRMaXRlcmFsLCBhZG9wdFJlZigqbmV3
IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGZsb2F0TGl0ZXJhbC50eXBlKCkpKSk7Ci19Ci0KLXZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpCi17
Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGJvb2xlYW5MaXRlcmFsLCBBU1Q6OlR5cGVSZWZlcmVu
Y2U6OndyYXAoYm9vbGVhbkxpdGVyYWwuY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5ib29s
VHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBBU1NFUlQoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBhdXRvJiBl
bnVtZXJhdGlvbkRlZmluaXRpb24gPSAqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uRGVmaW5pdGlvbigpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuY29kZUxvY2F0aW9uKCksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikpOwotfQotCi1ib29sIENo
ZWNrZXI6OmlzQm9vbFR5cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkKLXsKLSAgICBy
ZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpV
bm5hbWVkVHlwZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbWF0Y2hlcyhsZWZ0
LCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQobV9pbnRyaW5zaWNzLmJvb2xUeXBlKCksIGxlZnQtPnJl
c29sdmFibGVUeXBlKCkpKTsKLSAgICB9KSk7Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6cmVjdXJzZUFu
ZFJlcXVpcmVCb29sVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgYXV0
byBleHByZXNzaW9uSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGV4cHJlc3Npb24pOwotICAgIGlm
ICghZXhwcmVzc2lvbkluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlzQm9v
bFR5cGUoZXhwcmVzc2lvbkluZm8tPnJlc29sdmluZ1R5cGUpKSB7Ci0gICAgICAgIHNldEVycm9y
KEVycm9yKCJFeHBlY3RlZCBib29sIHR5cGUgZnJvbSBleHByZXNzaW9uLiIsIGV4cHJlc3Npb24u
Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJl
Qm9vbFR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbiwgQVNUOjpUeXBl
UmVmZXJlbmNlOjp3cmFwKGxvZ2ljYWxOb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBtX2lu
dHJpbnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TG9n
aWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIGlmICghcmVjdXJzZUFu
ZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGxvZ2ljYWxFeHByZXNzaW9u
LnJpZ2h0KCkpKQotICAgICAgICByZXR1cm47Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGxvZ2lj
YWxFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9naWNhbEV4cHJlc3Npb24u
Y29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgaWYgKCFy
ZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7
Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQo
QVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJl
Qm9vbFR5cGUod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIENoZWNrZXI6
OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIHJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5
cGUoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQo
QVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29w
LmluaXRpYWxpemF0aW9uKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpIHsKLSAgICAgICAgaWYgKCFyZWN1cnNlQW5k
UmVxdWlyZUJvb2xUeXBlKCpmb3JMb29wLmNvbmRpdGlvbigpKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqZm9yTG9vcC5pbmNyZW1lbnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlN3aXRjaFN0
YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIGF1dG8qIHZhbHVlVHlwZSA9IChbJl0o
KSAtPiBBU1Q6Ok5hbWVkVHlwZSogewotICAgICAgICBhdXRvIHZhbHVlSW5mbyA9IHJlY3Vyc2VB
bmRHZXRJbmZvKHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCF2YWx1ZUlu
Zm8pCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byogdmFsdWVUeXBl
ID0gZ2V0VW5uYW1lZFR5cGUodmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICAgICAgaWYg
KCF2YWx1ZVR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byYg
dmFsdWVVbmlmeU5vZGUgPSB2YWx1ZVR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIWlz
PEFTVDo6TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgYXV0byYgdmFsdWVOYW1lZFVuaWZ5Tm9kZSA9IGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghKGlzPEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKSAmJiBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odmFsdWVOYW1lZFVuaWZ5Tm9kZSkuaXNJbnQoKSkKLSAgICAg
ICAgICAgICYmICFpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odmFsdWVOYW1lZFVuaWZ5
Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICZ2YWx1
ZU5hbWVkVW5pZnlOb2RlOwotICAgIH0pKCk7Ci0gICAgaWYgKCF2YWx1ZVR5cGUpIHsKLSAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgdHlwZSBmb3IgdGhlIGV4cHJlc3Npb24gY29uZGl0
aW9uIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRp
b24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBoYXNEZWZhdWx0ID0g
ZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRj
aENhc2VzKCkpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2so
KSk7Ci0gICAgICAgIGlmICghc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBoYXNE
ZWZhdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAg
IGF1dG8gc3VjY2VzcyA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5
cGUsIGludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBl
LCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpG
bG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRlcmFs
LnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYpIC0+IGJvb2wg
ewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgbV9pbnRyaW5zaWNzLmJv
b2xUeXBlKCkpOwotICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwm
IGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBBU1NFUlQo
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsICplbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICgh
c3VjY2VzcykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgdHlwZSBmb3Ig
c3dpdGNoIGNhc2UuIiwgc3dpdGNoQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
d2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
JiBmaXJzdENhc2UgPSBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKVtpXTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCku
c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgIGF1dG8mIHNlY29uZENhc2UgPSBzd2l0Y2hTdGF0
ZW1lbnQuc3dpdGNoQ2FzZXMoKVtqXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxib29sPihz
ZWNvbmRDYXNlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgpKSkgewotICAgICAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGRlZmF1bHQg
Y2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudC4iLCBzZWNvbmRDYXNlLmNvZGVMb2NhdGlvbigpKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBh
dXRvIHN1Y2Nlc3MgPSBmaXJzdENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgZmlyc3RJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+
IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RJbnRlZ2VyTGl0ZXJhbC52
YWx1ZSgpICE9IHNlY29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
fSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wg
ewotICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZEludGVnZXJMaXRlcmFs
KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0
X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxp
bnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICB9
LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJM
aXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
dmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAg
ICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZmlyc3RFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRD
YXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJiBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmlyc3RFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
ZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChzZWNvbmRF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpICE9IHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1l
bWJlcigpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAg
ICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWZpbmUgZHVwbGljYXRlIGNhc2Ugc3RhdGVt
ZW50cyBpbiBhIHN3aXRjaC4iLCBzZWNvbmRDYXNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCFoYXNEZWZhdWx0KSB7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4oKnZhbHVlVHlwZSkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8aW50NjRfdD4gdmFsdWVz
OwotICAgICAgICAgICAgYm9vbCB6ZXJvVmFsdWVFeGlzdHM7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gdmFsdWUgPSBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBpbnQ2
NF90IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVnZXJMaXRlcmFsLnZhbHVlRm9y
U2VsZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0
ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGludDY0X3QgewotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgIGlmICgh
dmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHplcm9WYWx1ZUV4aXN0cyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKHZhbHVlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAg
ICAgICBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnZhbHVlVHlwZSkuaXRl
cmF0ZUFsbFZhbHVlcyhbJl0oaW50NjRfdCB2YWx1ZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXplcm9WYWx1ZUV4aXN0
cykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoIXZhbHVlcy5jb250YWlucyh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiU3dpdGNoIGNhc2VzIG11c3QgYmUgZXhoYXVzdGl2ZSBvciB5b3UgbXVzdCBk
ZWZpbmUgYSBkZWZhdWx0IGNhc2UuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgSGFzaFNldDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKj4gdmFsdWVzOwot
ICAgICAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRj
aENhc2VzKCkpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzLmFkZChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIo
KSk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGRvd25jYXN0PEFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uPigqdmFsdWVUeXBlKS5lbnVtZXJhdGlvbk1lbWJlcnMo
KSkgewotICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmNvbnRhaW5zKCZlbnVtZXJhdGlvbk1l
bWJlci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlN3aXRj
aCBjYXNlcyBvdmVyIGFuIGVudW0gbXVzdCBiZSBleGhhdXN0aXZlIG9yIHlvdSBtdXN0IGRlZmlu
ZSBhIGRlZmF1bHQgY2FzZS4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkNvbW1h
RXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIEFTU0VSVChjb21tYUV4cHJlc3Np
b24ubGlzdCgpLnNpemUoKSA+IDApOwotICAgIFZpc2l0b3I6OnZpc2l0KGNvbW1hRXhwcmVzc2lv
bik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGxhc3RJ
bmZvID0gZ2V0SW5mbyhjb21tYUV4cHJlc3Npb24ubGlzdCgpLmxhc3QoKSk7Ci0gICAgZm9yd2Fy
ZFR5cGUoY29tbWFFeHByZXNzaW9uLCBsYXN0SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci19Ci0KLXZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Np
b24pCi17Ci0gICAgYXV0byBwcmVkaWNhdGVJbmZvID0gcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlw
ZSh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgaWYgKCFwcmVkaWNhdGVJbmZv
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJvZHlJbmZvID0gcmVjdXJzZUFuZEdldElu
Zm8odGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgYXV0byBlbHNlSW5m
byA9IHJlY3Vyc2VBbmRHZXRJbmZvKHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkp
OwotICAgIAotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1hdGNoQW5kQ29tbWl0KGJvZHlJbmZvLT5y
ZXNvbHZpbmdUeXBlLCBlbHNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFyZXN1bHRU
eXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJsaHMgYW5kIHJocyBvZiBhIHRlcm5hcnkg
ZXhwcmVzc2lvbiBtdXN0IG1hdGNoLiIsIHRlcm5hcnlFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUodGVy
bmFyeUV4cHJlc3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChB
U1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gdHlwZXM7Ci0gICAgdHlwZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCkpOwotICAg
IGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkgewotICAg
ICAgICBhdXRvIGFyZ3VtZW50SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFyZ3VtZW50KTsKLSAg
ICAgICAgaWYgKCFhcmd1bWVudEluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHR5
cGVzLnVuY2hlY2tlZEFwcGVuZChhcmd1bWVudEluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIH0K
LSAgICAvLyBEb24ndCByZWN1cnNlIG9uIHRoZSBjYXN0UmV0dXJuVHlwZSwgYmVjYXVzZSBpdCdz
IGd1YXJhbnRlZWQgdG8gYmUgYSBOYW1lZFR5cGUsIHdoaWNoIHdpbGwgZ2V0IHZpc2l0ZWQgbGF0
ZXIuCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZWN1cnNlIHRvIHRoZSBzYW1lIG5vZGUgdHdp
Y2UuCi0KLSAgICBhdXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbih0eXBlcywgY2FsbEV4
cHJlc3Npb24ubmFtZSgpLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSk7Ci0gICAgaWYg
KGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZnVuY3Rpb24pIHsKLSAg
ICAgICAgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0ID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gY2FzdFR5cGVzID0gbmFtZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4cHJl
c3Npb24ubmFtZSgpLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgICAgICBpZiAoY2FzdFR5cGVz
LnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgY2FzdFR5cGUgPSBj
YXN0VHlwZXNbMF0uZ2V0KCk7Ci0gICAgICAgICAgICBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlv
bih0eXBlcywgIm9wZXJhdG9yIGNhc3QiX3N0ciwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9u
KCksICZjYXN0VHlwZSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAg
Y2FsbEV4cHJlc3Npb24uc2V0Q2FzdERhdGEoY2FzdFR5cGUpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICAvLyBGSVhNRTogQWRkIGJldHRlciBlcnJv
ciBtZXNzYWdlcyBmb3Igd2h5IHdlIGNhbid0IHJlc29sdmUgdG8gb25lIG9mIHRoZSBvdmVycmlk
ZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAxMzMKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGNh
bGwgdG8gYSBjb25jcmV0ZSBjYWxsZWUuIE1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIGNvbXBhdGli
bGUgdHlwZXMuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPnBhcmFt
ZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KHR5cGVz
W2ldLmdldCgpLCAqZnVuY3Rpb24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSkgewotICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiSW52YWxpZCB0eXBlIGZvciBwYXJhbWV0
ZXIgbnVtYmVyICIsIGkgKyAxLCAiIGluIGZ1bmN0aW9uIGNhbGwuIiksIGNhbGxFeHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBjYWxsRXhwcmVzc2lvbi5zZXRGdW5jdGlvbigqZnVuY3Rpb24pOwotCi0gICAgYXNz
aWduQ29uY3JldGVUeXBlKGNhbGxFeHByZXNzaW9uLCBmdW5jdGlvbi0+dHlwZSgpKTsKLX0KLQot
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgQ2hl
Y2tlciBjaGVja2VyKHByb2dyYW0uaW50cmluc2ljcygpLCBwcm9ncmFtKTsKLSAgICBjaGVja2Vy
LmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICBpZiAoY2hlY2tlci5oYXNFcnJvcigp
KQotICAgICAgICByZXR1cm4gY2hlY2tlci5yZXN1bHQoKTsKLSAgICByZXR1cm4gY2hlY2tlci5h
c3NpZ25UeXBlcygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY0ZTNlMTdhOGMwYTJiNzMwNWY1ODI0MGNlMWY1MjE3
NzRlNjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVjayhQ
cm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2Rl
TG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29k
ZUxvY2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZmZmZDhkODdhOTU0
MjA5ZWY3MjllMmM3MjUzZWQxOTE1ZTRlYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDb2RlTG9jYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLXN0cnVjdCBUb2tlbjsKLQotY2xhc3MgQ29kZUxvY2F0aW9uIHsKLXB1Ymxp
YzoKLSAgICBDb2RlTG9jYXRpb24oKQotICAgICAgICA6IG1fc3RhcnRPZmZzZXQoMHg3RkZGRkZG
RikKLSAgICAgICAgLCBtX2VuZE9mZnNldCgweDdGRkZGRkZGKQotICAgICAgICAsIG1fbmFtZVNw
YWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLSAgICAgICAg
OiBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9m
ZnNldCkKLSAgICAgICAgLCBtX25hbWVTcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmFtZVNw
YWNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKGNvbnN0IFRva2VuJik7Ci0K
LSAgICBDb2RlTG9jYXRpb24oY29uc3QgQ29kZUxvY2F0aW9uJiBsb2NhdGlvbjEsIGNvbnN0IENv
ZGVMb2NhdGlvbiYgbG9jYXRpb24yKQotICAgICAgICA6IG1fc3RhcnRPZmZzZXQobG9jYXRpb24x
LnN0YXJ0T2Zmc2V0KCkpCi0gICAgICAgICwgbV9lbmRPZmZzZXQobG9jYXRpb24yLmVuZE9mZnNl
dCgpKQotICAgICAgICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2NhdGlv
bjEubmFtZVNwYWNlKCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxvY2F0aW9uMS5uYW1lU3Bh
Y2UoKSA9PSBsb2NhdGlvbjIubmFtZVNwYWNlKCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YXJ0T2Zmc2V0Owot
ICAgIH0KLQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9lbmRPZmZzZXQ7Ci0gICAgfQotCi0gICAgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVTcGFj
ZT4obV9uYW1lU3BhY2UpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2Rl
TG9jYXRpb24mIG90aGVyKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YXJ0T2Zm
c2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKLSAgICAgICAgICAgICYmIG1fZW5kT2Zmc2V0ID09
IG90aGVyLm1fZW5kT2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX25hbWVTcGFjZSA9PSBvdGhlci5t
X25hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZUxvY2F0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBDb2RlTG9jYXRp
b24oKTsgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgOiAzMTsKLSAg
ICB1bnNpZ25lZCBtX2VuZE9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1fbmFtZVNwYWNlIDog
MjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9u
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3Mjk4ZDQ5Yzg4NmExNjY1Y2I5
ODA5YjVlYmUzMmUzZTAwZmIxYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21w
dXRlRGltZW5zaW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ29tcHV0ZURpbWVuc2lv
bnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1ZGUg
IldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURp
bWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0sIEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQotewotICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURp
bWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBib29s
IGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gZmFsc2U7Ci0gICAgICAgIGZvciAo
YXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBmdW5jdGlvbkRlZmluaXRpb24tPmF0dHJpYnV0ZUJs
b2NrKCkpIHsKLSAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IFdURjo6dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3VuZE51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSAmZW50cnlQb2ludCkgewot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNvbXB1dGVEaW1lbnNpb25zKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSB7eyBudW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUud2lkdGgoKSwgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmhlaWdodCgpLCBudW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuZGVwdGgoKSB9fTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9KSwgZnVuY3Rpb25BdHRy
aWJ1dGUpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgLy8g
Q2Fubm90IGRlY2xhcmUgbXVsdGlwbGUgbnVtdGhyZWFkIGF0dHJpYnV0ZXMgb24gYSBzaW5nbGUg
ZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBjb21wdXRlRGltZW5zaW9uczsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmRkZjBhODNhYTY0MjdlM2IzNTc5ZGFjNTUy
OTk4N2IzZTUzN2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVu
c2lvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
UHJlcGFyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci0KLX0KLQotY2xh
c3MgUHJvZ3JhbTsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURp
bWVuc2lvbnMoUHJvZ3JhbSYsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0KLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxYjc4NmRmYWZlYzk4MzEwZjMxMTUxYjU4YWFlZGViZDBjYTdkNDk2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBFcnJvciB7Ci1wdWJs
aWM6Ci0gICAgRXJyb3IoU3RyaW5nJiYgbWVzc2FnZSwgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlv
bikKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKLSAgICAgICAgLCBtX2xv
Y2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgRXJyb3IoU3RyaW5nJiYg
bWVzc2FnZSkKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYXRpb247IH0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX21lc3NhZ2U7Ci0gICAgQ29kZUxvY2F0aW9u
IG1fbG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjNk
ZThkYzhlMGJiYTQ1OTc5YTRiODEwOTE3MTJiMTMxYWY0YWI3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
ODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRy
eVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEZ1bmN0aW9uU3RhZ2VDaGVja2Vy
IDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIEZ1bmN0aW9uU3RhZ2VDaGVja2VyKEFT
VDo6RW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJp
bnNpY3MpCi0gICAgICAgIDogbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKLSAgICAg
ICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICB7Ci0gICAgfQotCi1wdWJsaWM6Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGlmICgoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9p
bnRyaW5zaWNzLmRkeCgpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmlu
c2ljcy5kZHkoKSkgJiYgbV9lbnRyeVBvaW50VHlwZSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpG
cmFnbWVudCkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgZGR4IG9y
IGRkeSBpbiBhIG5vbi1mcmFnbWVudCBzaGFkZXIuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoKCZj
YWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5hbGxNZW1vcnlCYXJyaWVy
KCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmRldmljZU1l
bW9yeUJhcnJpZXIoKSB8fCAmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNp
Y3MuZ3JvdXBNZW1vcnlCYXJyaWVyKCkpCi0gICAgICAgICAgICAmJiBtX2VudHJ5UG9pbnRUeXBl
ICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJDYW5ub3QgdXNlIG1lbW9yeSBiYXJyaWVyIGluIGEgbm9uLWNvbXB1dGUgc2hhZGVy
LiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24uZnVuY3Rp
b24oKSk7Ci0gICAgfQotCi0gICAgQVNUOjpFbnRyeVBvaW50VHlwZSBtX2VudHJ5UG9pbnRUeXBl
OwotICAgIGNvbnN0IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLX07Ci0KLUV4cGVjdGVkPHZv
aWQsIEVycm9yPiBjaGVja0Z1bmN0aW9uU3RhZ2VzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBGdW5jdGlvblN0YWdlQ2hlY2tlciBm
dW5jdGlvblN0YWdlQ2hlY2tlcigqZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlwZSgp
LCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0gICAgICAgIGZ1bmN0aW9uU3RhZ2VDaGVja2VyLlZp
c2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChmdW5jdGlvblN0
YWdlQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGZ1bmN0aW9uU3RhZ2VDaGVja2VyLnJlc3VsdCgpLmVycm9yKCkpOwotICAgIH0KLSAgICByZXR1
cm4geyB9OwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTEzM2ZkOTJmZGRiMTdkNTRjODIzZDk4YmJhZTMyZTUxNTE0ZTM1Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3Rm
L0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRnVuY3Rpb25T
dGFnZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTA1ZTg4YTYwMWM4MjExYTc5NWYwYzE2ZTgzOTZmMDI2ODcyNjA2OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1
ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBHYXRoZXJlciA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBHYXRoZXJlcihjb25zdCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzLCBBU1Q6OlNlbWFudGljKiBzZW1hbnRpYyA9IG51bGxwdHIpCi0gICAgICAg
IDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9jdXJyZW50U2VtYW50aWMo
c2VtYW50aWMpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkdhdGhlcmVyKCkgPSBkZWZh
dWx0OwotCi0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRTZW1hbnRp
YyA9IG51bGxwdHI7Ci0gICAgICAgIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24gPSB7IH07Ci0g
ICAgfQotCi0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiB0YWtlRW50cnlQb2ludEl0ZW1zKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnlQb2ludEl0ZW1zKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVy
cm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJl
bnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKG1fdHlwZVJlZmVy
ZW5jZXMubGFzdCgpLmdldCgpLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2lu
dCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1hdGNoZXMobmF0aXZlVHlwZURlY2xhcmF0
aW9uLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVy
cm9yKCJVbmV4cGVjdGVkIHZvaWQgdHlwZSBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1
cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0obV90eXBl
UmVmZXJlbmNlcy5sYXN0KCkuZ2V0KCksICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVy
ZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBpZiAobV9jdXJyZW50U2VtYW50aWMpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJVbmV4cGVjdGVkIHNlbWFudGljIGZvciBzdHJ1Y3Qg
ZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVy
ZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpIHsKLSAg
ICAgICAgICAgIGlmIChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCi0gICAgICAgICAgICAg
ICAgbV9jdXJyZW50U2VtYW50aWMgPSBzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCk7Ci0gICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpKTsKLSAgICAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgICAgIG1f
cGF0aC50YWtlTGFzdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotICAgIHsKLSAgICAgICAgbV90
eXBlUmVmZXJlbmNlcy5hcHBlbmQodHlwZVJlZmVyZW5jZSk7Ci0gICAgICAgIGF1dG8gZGVwdGgg
PSBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5
cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGRlcHRo
LCBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKSA9PSBkZXB0aCk7Ci0gICAgICAgIG1fdHlwZVJlZmVy
ZW5jZXMucmVtb3ZlTGFzdCgpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVy
VHlwZSYgcG9pbnRlclR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGlj
KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVu
dHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVu
ZChFbnRyeVBvaW50SXRlbShwb2ludGVyVHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJh
eVJlZmVyZW5jZVR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5
cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChF
bnRyeVBvaW50SXRlbShhcnJheVJlZmVyZW5jZVR5cGUsICptX2N1cnJlbnRTZW1hbnRpYywgbV9w
YXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBl
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50
LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0o
YXJyYXlUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRTZW1hbnRpYyk7Ci0gICAgICAgIG1fY3Vy
cmVudFZhcmlhYmxlTG9jYXRpb24gPSB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigp
OwotICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAgICAg
ICAgbV9jdXJyZW50U2VtYW50aWMgPSB2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCk7Ci0g
ICAgICAgIEFTU0VSVCh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fcGF0
aC5hcHBlbmQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOwotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9wYXRoLnRh
a2VMYXN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxTdHJpbmc+IG1fcGF0aDsK
LSAgICBjb25zdCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgQVNUOjpTZW1hbnRpYyog
bV9jdXJyZW50U2VtYW50aWMgeyBudWxscHRyIH07Ci0gICAgQ29kZUxvY2F0aW9uIG1fY3VycmVu
dFZhcmlhYmxlTG9jYXRpb247Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpUeXBlUmVmZXJlbmNlPj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBWZWN0b3I8RW50cnlQb2lu
dEl0ZW0+IG1fZW50cnlQb2ludEl0ZW1zOwotfTsKLQotRXhwZWN0ZWQ8RW50cnlQb2ludEl0ZW1z
LCBFcnJvcj4gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNp
Y3MsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAg
QVNTRVJUKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKTsKLSAgICBHYXRoZXJl
ciBpbnB1dEdhdGhlcmVyKGludHJpbnNpY3MpOwotICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDog
ZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKSkgewotICAgICAgICBpbnB1dEdhdGhlcmVy
LnJlc2V0KCk7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFt
ZXRlcik7Ci0gICAgICAgIGlmIChpbnB1dEdhdGhlcmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5wdXRHYXRoZXJlci5yZXN1bHQoKS5lcnJvcigpKTsK
LSAgICB9Ci0gICAgR2F0aGVyZXIgb3V0cHV0R2F0aGVyZXIoaW50cmluc2ljcywgZnVuY3Rpb25E
ZWZpbml0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICgqZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5
UG9pbnRUeXBlKCkgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkKLSAgICAgICAgb3V0
cHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkp
OwotICAgIGlmIChvdXRwdXRHYXRoZXJlci5oYXNFcnJvcigpKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQob3V0cHV0R2F0aGVyZXIucmVzdWx0KCkuZXJyb3IoKSk7Ci0KLSAgICByZXR1
cm4ge3sgaW5wdXRHYXRoZXJlci50YWtlRW50cnlQb2ludEl0ZW1zKCksIG91dHB1dEdhdGhlcmVy
LnRha2VFbnRyeVBvaW50SXRlbXMoKSB9fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xH
YXRoZXJFbnRyeVBvaW50SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdiNGI4ZDljZTRjN2MzNDcxOTUyNDQxZDJiOTM4YWE0ZmYyNzI3NzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRl
ICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci0K
LX0KLQotY2xhc3MgSW50cmluc2ljczsKLWNsYXNzIFVubmFtZWRUeXBlOwotCi1zdHJ1Y3QgRW50
cnlQb2ludEl0ZW0gewotICAgIEVudHJ5UG9pbnRJdGVtKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFt
ZWRUeXBlLCBBU1Q6OlNlbWFudGljJiBzZW1hbnRpYywgVmVjdG9yPFN0cmluZz4mIHBhdGgpCi0g
ICAgICAgIDogdW5uYW1lZFR5cGUoJnVubmFtZWRUeXBlKQotICAgICAgICAsIHNlbWFudGljKCZz
ZW1hbnRpYykKLSAgICAgICAgLCBwYXRoKHBhdGgpCi0gICAgewotICAgIH0KLQotICAgIEFTVDo6
VW5uYW1lZFR5cGUqIHVubmFtZWRUeXBlOwotICAgIEFTVDo6U2VtYW50aWMqIHNlbWFudGljOwot
ICAgIFZlY3RvcjxTdHJpbmc+IHBhdGg7Ci19OwotCi1zdHJ1Y3QgRW50cnlQb2ludEl0ZW1zIHsK
LSAgICBWZWN0b3I8RW50cnlQb2ludEl0ZW0+IGlucHV0czsKLSAgICBWZWN0b3I8RW50cnlQb2lu
dEl0ZW0+IG91dHB1dHM7Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRlbXMsIEVycm9yPiBn
YXRoZXJFbnRyeVBvaW50SXRlbXMoY29uc3QgSW50cmluc2ljcyYsIEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5k
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGY3MDExODNkNTIyZDVjMWZk
NTA1YzY0ODE4ZGU3MTE4MWQ2ZDIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGln
aFpvbWJpZUZpbmRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSGlnaFpvbWJpZUZpbmRl
ci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1Qu
aCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBIaWdoWm9tYmllRmluZGVyIDogcHVibGljIFZpc2l0
b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uJiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHByZXNzaW9uKCkpOwot
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkubWF5
QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Np
b24mIGRvdEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VCghZG90RXhwcmVzc2lvbi5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVzc2lvbi5iYXNlKCku
bWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbmRleEV4cHJlc3Np
b24uaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotfTsKLQotdm9p
ZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEhpZ2hab21iaWVGaW5kZXIgZmlu
ZGVyOwotICAgIGZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSNlbmRpZgotfQotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMDNiMjFiMTAwZDAxN2YzMWYx
YTAzY2M4ZDA1MDE5NDQxMmNhY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdo
Wm9tYmllRmluZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9p
ZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkZGYzOGU2ZDU0NTVjZmY1ZDg2N2Q0ZGNlMTc5MjZkZjZmN2E4M2YxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEluZmVyVHlwZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBv
aW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IEFT
VDo6VHlwZSYgdW5pZnlUaGlzLCBjb25zdCBBU1Q6OlR5cGUmIHVuaWZ5T3RoZXIpCi17Ci0gICAg
aWYgKCZ1bmlmeVRoaXMgPT0gJnVuaWZ5T3RoZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFTVDo6TmFtZWRUeXBl
Pih1bmlmeU90aGVyKSkgewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGF1dG8mIG5hbWVk
VGhpcyA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpOwotICAgICAgICBhdXRv
JiBuYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5T3RoZXIpOwotICAg
ICAgICBBU1NFUlQoIWlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVGhpcykgJiYgIWlzPEFT
VDo6VHlwZURlZmluaXRpb24+KG5hbWVkT3RoZXIpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeVRoaXMpICYm
IGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5T3RoZXIpKSB7Ci0gICAgICAgIGF1dG8mIHVubmFt
ZWRUaGlzID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlUaGlzKTsKLSAgICAgICAg
YXV0byYgdW5uYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlPdGhl
cik7Ci0gICAgICAgIEFTU0VSVCghaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVGhpcykg
JiYgIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZE90aGVyKSk7Ci0gICAgICAgIHJldHVy
biB1bm5hbWVkVGhpcyA9PSB1bm5hbWVkT3RoZXI7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBj
b25zdCBBU1Q6OlVubmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICByZXR1cm4gbWF0Y2hlcyh1bm5h
bWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkpOwotfQotCi1ib29sIG1hdGNo
ZXMoY29uc3QgQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgY29uc3QgQVNUOjpOYW1lZFR5cGUm
IG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKG5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3Ro
ZXIudW5pZnlOb2RlKCkpOwotfQotCi1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkpOwot
fQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6
VHlwZSYgdW5pZnlOb2RlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsK
LSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAgIGlm
ICghcmVzb2x2YWJsZVR5cGUuY2FuUmVzb2x2ZSh1bmlmeU5vZGUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAg
ICAgYXV0byYgbmFtZWRVbmlmeU5vZGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobmFt
ZWRVbmlmeU5vZGUuY29kZUxvY2F0aW9uKCksIG5hbWVkVW5pZnlOb2RlKTsKLSAgICAgICAgcmVz
b2x2YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZShyZXN1bHQpIH07Ci0gICAgfQotCi0gICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHJl
c3VsdCA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgcmVzb2x2
YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpVbm5hbWVk
VHlwZSYgdW5uYW1lZFR5cGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQot
ewotICAgIHJldHVybiBtYXRjaEFuZENvbW1pdCh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgcmVz
b2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21t
aXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2
YWJsZVR5cGUpCi17Ci0gICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVkVHlwZS51bmlmeU5v
ZGUoKSwgcmVzb2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0
Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUxLCBBU1Q6OlJl
c29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZTIpCi17Ci0gICAgQVNTRVJUKCFyZXNvbHZhYmxl
VHlwZTEubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgQVNTRVJUKCFyZXNvbHZhYmxlVHlwZTIu
bWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVU
eXBlMikpIHsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpG
bG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAg
ICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZlKGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlw
ZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4gJmRv
d25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRU
eXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2
YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUy
KSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAg
ICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsVHlw
ZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4gJmRv
d25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJl
ZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZT4ocmVzb2x2YWJsZVR5cGUyKSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShk
b3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEp
LnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZlKGRvd25j
YXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMikucHJl
ZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21t
aXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgQVNTRVJUKCFy
ZXNvbHZhYmxlVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoaXM8QVNUOjpGbG9h
dExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgZmxvYXRMaXRl
cmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUp
OwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVy
cmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJlZFR5
cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZh
YmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgaW50ZWdlckxpdGVyYWxUeXBlID0gZG93bmNhc3Q8
QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAgICAgICAgcmVzb2x2
YWJsZVR5cGUucmVzb2x2ZShpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLSAg
ICAgICAgcmV0dXJuICZpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAgIH0K
LSAgICBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5
cGUpKSB7Ci0gICAgICAgIGF1dG8mIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlID0gZG93bmNh
c3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpOwotICAg
ICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnBy
ZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotYm9v
bCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVkVHlwZSYgcG9zc2libGVUeXBl
LCBBU1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgaWYgKGlzPEFTVDo6
VHlwZURlZmluaXRpb24+KHBvc3NpYmxlVHlwZSkKLSAgICAgICAgfHwgaXM8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpCi0gICAgICAgIHx8IGlzPEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpKSB7Ci0gICAgICAgIHJldHVybiB0eXBlQXJndW1l
bnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2libGVUeXBlKTsKLSAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgIT0gdHlw
ZUFyZ3VtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qIHR5cGVBcmd1bWVudEV4
cHJlc3Npb24gPSBudWxscHRyOwotICAgICAgICBBU1Q6OlR5cGVSZWZlcmVuY2UqIHR5cGVBcmd1
bWVudFR5cGVSZWZlcmVuY2UgPSBudWxscHRyOwotICAgICAgICBBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbiogbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbiA9IG51bGxwdHI7Ci0gICAgICAgIEFT
VDo6VHlwZVJlZmVyZW5jZSogbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSA9IG51bGxw
dHI7Ci0KLSAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0oQVNUOjpUeXBlQXJndW1lbnQmIHR5cGVB
cmd1bWVudCwgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qJiBleHByZXNzaW9uLCBBU1Q6OlR5cGVS
ZWZlcmVuY2UqJiB0eXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBXVEY6OnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Np
b24pIHsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gJmNvbnN0YW50RXhwcmVzc2lvbjsK
LSAgICAgICAgICAgIH0sIFsmXShSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdGhlVHlwZVJlZmVy
ZW5jZSkgewotICAgICAgICAgICAgICAgIHR5cGVSZWZlcmVuY2UgPSB0aGVUeXBlUmVmZXJlbmNl
LnB0cigpOwotICAgICAgICAgICAgfSksIHR5cGVBcmd1bWVudCk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgYXNzaWduKHR5cGVBcmd1bWVudHNbaV0sIHR5cGVBcmd1bWVudEV4cHJlc3Npb24sIHR5
cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpOwotICAgICAgICBhc3NpZ24obmF0aXZlVHlwZURlY2xh
cmF0aW9uLnR5cGVBcmd1bWVudHMoKVtpXSwgbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbiwg
bmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSk7Ci0KLSAgICAgICAgaWYgKHR5cGVBcmd1
bWVudEV4cHJlc3Npb24gJiYgbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbikgewotICAgICAg
ICAgICAgaWYgKCF0eXBlQXJndW1lbnRFeHByZXNzaW9uLT5tYXRjaGVzKCpuYXRpdmVUeXBlQXJn
dW1lbnRFeHByZXNzaW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZSBpZiAodHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSAmJiBuYXRpdmVUeXBlQXJndW1l
bnRUeXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMoKnR5cGVBcmd1bWVu
dFR5cGVSZWZlcmVuY2UsICpuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgotQUxXQVlTX0lOTElORSBi
b29sIGluZmVyVHlwZXNGb3JDYWxsSW1wbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBvc3Np
YmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+
PiYgYXJndW1lbnRUeXBlcywgY29uc3QgVHlwZUtpbmQqIGNhc3RSZXR1cm5UeXBlKQotewotICAg
IGlmIChwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgIT0gYXJndW1lbnRUeXBl
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8gc3VjY2VzcyA9IGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkudmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygqcG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKSwgdW5uYW1lZFR5cGUpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IGJvb2wgewotICAg
ICAgICAgICAgcmV0dXJuIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgp
LmNhblJlc29sdmUocG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+dW5p
ZnlOb2RlKCkpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGNhc3RSZXR1cm5UeXBlICYmICFtYXRj
aGVzKHBvc3NpYmxlRnVuY3Rpb24udHlwZSgpLCAqY2FzdFJldHVyblR5cGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaW5mZXJUeXBlc0ZvckNh
bGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0
IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICByZXR1cm4gaW5mZXJUeXBl
c0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rpb24sIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5U
eXBlKTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29s
dmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpVbm5hbWVkVHlwZSogY2FzdFJl
dHVyblR5cGUpCi17Ci0gICAgcmV0dXJuIGluZmVyVHlwZXNGb3JDYWxsSW1wbChwb3NzaWJsZUZ1
bmN0aW9uLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMz
MjJmMzdkYzBkODZjODc2MDc1Y2Q3NGFmMDdlOGEyMTRhNzA4ZGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVB
cmd1bWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWNs
YXJhdGlvbjsKLWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIFJlc29sdmFibGVUeXBlOwotY2xhc3Mg
VW5uYW1lZFR5cGU7Ci0KLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUm
LCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlJik7Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpOYW1l
ZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6
VW5uYW1lZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotUmVmUHRyPEFTVDo6VW5uYW1l
ZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6VW5uYW1lZFR5cGUmLCBBU1Q6OlJlc29sdmFibGVU
eXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpOYW1l
ZFR5cGUmLCBBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
bWF0Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5cGUm
KTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYp
OwotYm9vbCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVkVHlwZSYgcG9zc2li
bGVUeXBlLCBBU1Q6OlR5cGVBcmd1bWVudHMmKTsKLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFTVDo6
TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6OlVu
bmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZkNDM3YTJjZTJlYzYwODRiOTViM2NkNTYxN2JiNjhiMjRmODllZTQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMSW50cmluc2ljcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVu
dC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX3RleHR1cmVU
eXBlTmFtZXNbXTsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX3RleHR1cmVJ
bm5lclR5cGVOYW1lc1tdOwotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1fZGVw
dGhUZXh0dXJlSW5uZXJUeXBlc1tdOwotCi1JbnRyaW5zaWNzOjpJbnRyaW5zaWNzKCkKLXsKLX0K
LQotdm9pZCBJbnRyaW5zaWNzOjphZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiZGR4IikKLSAgICAgICAgbV9kZHggPSAmbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiZGR5IikKLSAgICAgICAgbV9kZHkgPSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsK
LSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVt
b3J5QmFycmllcldpdGhHcm91cFN5bmMiKQotICAgICAgICBtX2FsbE1lbW9yeUJhcnJpZXIgPSAm
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKQot
ICAgICAgICBtX2RldmljZU1lbW9yeUJhcnJpZXIgPSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3Jv
dXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fZ3JvdXBNZW1vcnlCYXJy
aWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci19Ci0KLWJvb2wgSW50cmluc2ljczo6
YWRkUHJpbWl0aXZlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFy
YXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCku
c2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAidm9pZCIpCi0gICAgICAgIG1fdm9pZFR5cGUgPSAmbmF0aXZlVHlw
ZURlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gImJvb2wiKQotICAgICAgICBtX2Jvb2xUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsK
LSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ1aW50Iikgewot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1
cm4geCA+PSAwOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNl
dENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCkgewotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxvYXQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkpID09IHg7Ci0gICAgICAg
IH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vzc29yKFtdKGludDY0
X3QgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHggKyAxKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKFtdKGludCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCk7Ci0gICAgICAgIH0pOwotICAgICAg
ICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2Vy
KFtdKHVuc2lnbmVkIHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJdGVyYXRlQWxsVmFsdWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2
NF90KT4mIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBmb3IgKGludDY0X3QgaSA9IDA7IGkgPCAw
eDEwMDAwMDAwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
ICAgIG1fdWludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaW50IikgewotICAgICAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1NpZ25l
ZCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50SW50ZWdl
cihbXShpbnQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihb
XSh1bnNpZ25lZCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geCA8PSAyMTQ3NDgzNjQ3OwotICAg
ICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEZs
b2F0KFtdKGZsb2F0IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
c3RhdGljX2Nhc3Q8aW50MzJfdD4oeCkpID09IHg7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vzc29yKFtdKGludDY0X3QgeCkgLT4gaW50NjRfdCB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCArIDEpOwotICAgICAg
ICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZhbHVlRnJvbUlu
dGVnZXIoW10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCB4KSAtPiBp
bnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJdGVyYXRlQWxsVmFs
dWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mIGNhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICBmb3IgKGludDY0X3QgaSA9IC0yMTQ3NDgzNjQ3OyBpIDwgMjE0NzQ4MzY0ODsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIG1faW50VHlw
ZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0Zs
b2F0aW5nKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJ
bnRlZ2VyKFtdKGludCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRl
Z2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRGbG9hdChbXShm
bG9hdCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBt
X2Zsb2F0VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfaW50IikgewotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9hdG9taWNJbnRUeXBl
ID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY191aW50IikgewotICAgICAgICBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9hdG9taWNVaW50VHlwZSA9ICZuYXRp
dmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJzYW1wbGVyIikgewotICAgICAgICBtX3NhbXBsZXJUeXBlID0gJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzT3BhcXVl
VHlwZSgpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRWZWN0b3IoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAidmVjdG9yIikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpID09IDIpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7
Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJlc3Np
b24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pKTsKLSAgICBhdXRv
JiBpbm5lclR5cGUgPSBzdGF0aWNfY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2UmPihXVEY6OmdldDxS
ZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVu
dHMoKVswXSkpOwotICAgIGF1dG8mIGxlbmd0aEV4cHJlc3Npb24gPSBXVEY6OmdldDxBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsx
XSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlwZUFyZ3VtZW50cygpLnNpemUoKSk7Ci0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qKiBhcnJheTsKLSAgICBpZiAoaW5uZXJUeXBlLm5h
bWUoKSA9PSAiYm9vbCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JCb29sOwotICAgIGVsc2Ug
aWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICBhcnJheSA9IG1fdmVjdG9y
VWludDsKLSAgICBlbHNlIGlmIChpbm5lclR5cGUubmFtZSgpID09ICJpbnQiKQotICAgICAgICBh
cnJheSA9IG1fdmVjdG9ySW50OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoaW5uZXJUeXBl
Lm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvckZsb2F0OwotICAg
IH0KLSAgICBpbnQgbGVuZ3RoID0gbGVuZ3RoRXhwcmVzc2lvbi5pbnRlZ2VyTGl0ZXJhbCgpLnZh
bHVlKCk7Ci0gICAgQVNTRVJUKGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA0KTsKLSAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXNWZWN0b3IoKTsKLSAgICBhcnJheVtsZW5ndGggLSAyXSA9
ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW50
cmluc2ljczo6YWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgIT0g
Im1hdHJpeCIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc01hdHJpeCgpOwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50
eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlw
ZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNU
OjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRz
KClbMV0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50
RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsyXSkpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZEZ1bGxUZXh0dXJlKEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24sIEFTVDo6VHlw
ZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQotewotICAgIGF1dG8gdGV4dHVyZVR5cGVJbmRleCA9IHN0
ZDo6ZmluZChtX3RleHR1cmVUeXBlTmFtZXMsIG1fdGV4dHVyZVR5cGVOYW1lcyArIFdURl9BUlJB
WV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKSwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSkgLSBtX3RleHR1cmVUeXBlTmFtZXM7Ci0gICAgaWYgKHRleHR1cmVUeXBlSW5kZXggPT0gV1RG
X0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICB1bnNpZ25lZCBpbm5lclR5cGVJbmRleCA9IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0
dXJlSW5uZXJUeXBlTmFtZXMpOwotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IDA7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5uZXJU
eXBlTmFtZXMpOyArK2kpIHsKLSAgICAgICAgaWYgKGlubmVyVHlwZS5uYW1lKCkuc3RhcnRzV2l0
aChtX3RleHR1cmVJbm5lclR5cGVOYW1lc1tpXSkpIHsKLSAgICAgICAgICAgIGlubmVyVHlwZUlu
ZGV4ID0gaTsKLSAgICAgICAgICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09IG1fdGV4dHVyZUlu
bmVyVHlwZU5hbWVzW2ldKQotICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IDE7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpID09IHN0cmxlbihtX3RleHR1cmVJbm5l
clR5cGVOYW1lc1tpXSkgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkg
LSAxXSA9PSAnMicKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5uZXJUeXBlLm5hbWUoKVtpbm5l
clR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzMnCi0gICAgICAgICAgICAgICAgICAgIHx8
IGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdID09ICc0Jyk7
Ci0gICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gaW5uZXJUeXBlLm5hbWUoKVtpbm5lclR5
cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gLSAnMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQodmVjdG9yTGVuZ3RoICYmIHZlY3Rvckxlbmd0aCA8
IDUpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlubmVyVHlwZUluZGV4
ICE9IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXMpKTsKLSAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnNldElzT3BhcXVlVHlwZSgpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiUldUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
VGV4dHVyZTJEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTJEQXJyYXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJl
QXJyYXkoKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0
dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEIiB8
fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIgfHwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1dyaXRhYmxlVGV4dHVyZSgpOwotICAgIGlmIChuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRU
ZXh0dXJlRGltZW5zaW9uKDEpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTJEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlQ3ViZSIg
fHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXkiIHx8IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAg
ICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigyKTsKLSAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTNEIiB8fCBuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIpCi0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDMpOwotICAgIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlQ3ViZSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc0N1YmVUZXh0dXJlKCk7Ci0gICAgbV9mdWxsVGV4dHVyZXNbdGV4dHVyZVR5
cGVJbmRleF1baW5uZXJUeXBlSW5kZXhdW3ZlY3Rvckxlbmd0aCAtIDFdID0gJm5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGRE
ZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNlJiBpbm5lclR5cGUpCi17Ci0gICAgQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24qKiB0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQotICAgICAgICB0ZXh0dXJlID0g
bV90ZXh0dXJlRGVwdGgyRDsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlRGVwdGgyREFycmF5IikKLSAgICAgICAgdGV4dHVyZSA9IG1fdGV4dHVy
ZURlcHRoMkRBcnJheTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aEN1YmUiKTsKLSAgICAgICAgdGV4dHVyZSA9
IG1fdGV4dHVyZURlcHRoQ3ViZTsKLSAgICB9Ci0gICAgYXV0byBpbm5lclR5cGVJbmRleCA9IHN0
ZDo6ZmluZChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMsIG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBl
cyArIFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKSwgaW5uZXJUeXBl
Lm5hbWUoKSkgLSBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXM7Ci0gICAgQVNTRVJUKGlubmVyVHlw
ZUluZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKSk7Ci0g
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsKLSAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1
cmVEZXB0aDJEQXJyYXkpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1
cmVBcnJheSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURlcHRoQ3ViZSkKLSAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQ3ViZVRleHR1cmUoKTsKLSAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigyKTsKLSAgICBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uc2V0SXNEZXB0aFRleHR1cmUoKTsKLSAgICB0ZXh0dXJlW2lubmVyVHlwZUluZGV4
XSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRkVGV4
dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQot
ewotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUo
KSA9PSAxKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpUeXBl
UmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwot
ICAgIGF1dG8mIGlubmVyVHlwZSA9IHN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZSY+KFdU
Rjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlw
ZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlwZUFyZ3VtZW50cygp
LnNpemUoKSk7Ci0gICAgaWYgKGFkZEZ1bGxUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwg
aW5uZXJUeXBlKSkgewotICAgICAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRpdmVUeXBlRGVjbGFy
YXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGFkZERlcHRoVGV4dHVyZShuYXRp
dmVUeXBlRGVjbGFyYXRpb24sIGlubmVyVHlwZSk7Ci0gICAgbV90ZXh0dXJlU2V0LmFkZCgmbmF0
aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGQoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAoYWRk
UHJpbWl0aXZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoYWRkVmVjdG9yKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoYWRkTWF0cml4KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJldHVybjsK
LSAgICBhZGRUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW50cmluc2ljcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJm
ZmZmYTVlNDRlNDBkMzY5NjgyNmFiOGQ4ZDZhZjc2NWM4NTUyZGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDxjc3RyaW5nPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBJbnRyaW5z
aWNzIHsKLXB1YmxpYzoKLSAgICBJbnRyaW5zaWNzKCk7Ci0KLSAgICB2b2lkIGFkZChBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICB2b2lkIGFkZChBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpOwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHZvaWRUeXBl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZvaWRUeXBlKTsKLSAgICAgICAgcmV0
dXJuICptX3ZvaWRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBib29sVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9ib29sVHlwZSk7Ci0g
ICAgICAgIHJldHVybiAqbV9ib29sVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYgYm9vbFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNp
emUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JCb29sW3NpemUgLSAyXTsKLSAgICB9
Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludFR5cGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdWludFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fdWludFR5
cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludFR5cGUoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW50VHlwZSk7Ci0gICAgICAgIHJldHVybiAq
bV9pbnRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50
MlR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yVWludFswXSk7Ci0g
ICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50WzBdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiB1aW50NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdmVjdG9yVWludFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50WzJdOwotICAg
IH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VmVjdG9yVHlwZUZvclNp
emUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHNp
emUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJuICptX3Zl
Y3RvclVpbnRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBpbnQyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JJbnRb
MF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9ySW50WzBdOwotICAgIH0KLQotICAgIEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnQ0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV92ZWN0b3JJbnRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9ySW50WzJdOwot
ICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRWZWN0b3JUeXBlRm9y
U2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1f
dmVjdG9ySW50W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgc2FtcGxlclR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2FtcGxl
clR5cGUpOwotICAgICAgICByZXR1cm4gKm1fc2FtcGxlclR5cGU7Ci0gICAgfQotCi0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9mbG9hdFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fZmxvYXRUeXBlOwotICAg
IH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDJUeXBlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzBdKTsKLSAgICAgICAgcmV0dXJu
ICptX3ZlY3RvckZsb2F0WzBdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBmbG9hdDNUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZs
b2F0WzFdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckZsb2F0WzFdOwotICAgIH0KLQotICAg
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDRUeXBlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzJdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3Rv
ckZsb2F0WzJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9h
dFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0gICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0gICAg
ICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFtzaXplIC0gMl07Ci0gICAgfQotCi0gICAgLy8gVGhl
c2UgZnVuY3Rpb25zIG1heSBoYXZlIGJlZW4gcHJ1bmVkIGZyb20gdGhlIEFTVCBpZiB0aGV5IGFy
ZSB1bnVzZWQuCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBkZHgoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR4OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiogZGR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2RkeTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGFsbE1l
bW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWxsTWVtb3J5QmFy
cmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRldmlj
ZU1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGV2aWNlTWVt
b3J5QmFycmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24q
IGdyb3VwTWVtb3J5QmFycmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ncm91
cE1lbW9yeUJhcnJpZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wgYWRkUHJpbWl0aXZl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgYm9vbCBhZGRWZWN0b3IoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZE1hdHJpeChBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mLCBBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2b2lkIGFkZERlcHRoVGV4
dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYsIEFTVDo6VHlwZVJlZmVyZW5jZSYpOwot
ICAgIHZvaWQgYWRkVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0gICAg
SGFzaFNldDxjb25zdCBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbio+IG1fdGV4dHVyZVNldDsK
LQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZvaWRUeXBlIHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2Jvb2xUeXBlIHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3VpbnRUeXBlIHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2ludFR5cGUgeyBudWxscHRyIH07
Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZmxvYXRUeXBlIHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2F0b21pY0ludFR5cGUgeyBudWxs
cHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYXRvbWljVWludFR5cGUg
eyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fc2FtcGxlclR5
cGUgeyBudWxscHRyIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0
b3JCb29sWzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3Rv
clVpbnRbM10geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9y
SW50WzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3RvckZs
b2F0WzNdIHsgMCB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBtX3RleHR1
cmVUeXBlTmFtZXNbXSA9IHsgIlRleHR1cmUxRCIsICJSV1RleHR1cmUxRCIsICJUZXh0dXJlMkQi
LCAiUldUZXh0dXJlMkQiLCAiVGV4dHVyZTNEIiwgIlJXVGV4dHVyZTNEIiwgIlRleHR1cmVDdWJl
IiwgIlRleHR1cmUxREFycmF5IiwgIlJXVGV4dHVyZTFEQXJyYXkiLCAiVGV4dHVyZTJEQXJyYXki
LCAiUldUZXh0dXJlMkRBcnJheSIgfTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogbV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbXSA9IHsgInVpbnQiLCAiaW50IiwgImZsb2F0IiB9
OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZnVsbFRleHR1cmVzW1dURl9B
UlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKV1bV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1
cmVJbm5lclR5cGVOYW1lcyldWzRdIHt7eyAwIH19fTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzW10gPSAgeyAiZmxvYXQiIH07Ci0K
LSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGgyRFtXVEZfQVJS
QVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9OwotICAgIEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEQXJyYXlbV1RGX0FSUkFZX0xFTkdU
SChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGhDdWJlW1dURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRl
eHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIG1fZGR4IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiogbV9kZHkgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKiBtX2FsbE1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKiBtX2RldmljZU1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci0gICAg
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2dyb3VwTWVtb3J5QmFycmllciB7IG51
bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDlkNmIwZWFjY2Q5NWUxMzE5OGU2ODYzM2ZjYTk2ZmI0NzQzYjk3
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxNzQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0IGNoYXIqIFRv
a2VuOjp0eXBlTmFtZShUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBUeXBlOjpJbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gImludCBsaXRlcmFsIjsKLSAgICBj
YXNlIFR5cGU6OlVpbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gInVpbnQgbGl0ZXJhbCI7Ci0g
ICAgY2FzZSBUeXBlOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAiZmxvYXQgbGl0ZXJh
bCI7Ci0gICAgY2FzZSBUeXBlOjpTdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiAic3RydWN0IjsKLSAg
ICBjYXNlIFR5cGU6OlR5cGVkZWY6Ci0gICAgICAgIHJldHVybiAidHlwZWRlZiI7Ci0gICAgY2Fz
ZSBUeXBlOjpFbnVtOgotICAgICAgICByZXR1cm4gImVudW0iOwotICAgIGNhc2UgVHlwZTo6T3Bl
cmF0b3I6Ci0gICAgICAgIHJldHVybiAib3BlcmF0b3IiOwotICAgIGNhc2UgVHlwZTo6SWY6Ci0g
ICAgICAgIHJldHVybiAiaWYiOwotICAgIGNhc2UgVHlwZTo6RWxzZToKLSAgICAgICAgcmV0dXJu
ICJlbHNlIjsKLSAgICBjYXNlIFR5cGU6OkNvbnRpbnVlOgotICAgICAgICByZXR1cm4gImNvbnRp
bnVlIjsKLSAgICBjYXNlIFR5cGU6OkJyZWFrOgotICAgICAgICByZXR1cm4gImJyZWFrIjsKLSAg
ICBjYXNlIFR5cGU6OlN3aXRjaDoKLSAgICAgICAgcmV0dXJuICJzd2l0Y2giOwotICAgIGNhc2Ug
VHlwZTo6Q2FzZToKLSAgICAgICAgcmV0dXJuICJjYXNlIjsKLSAgICBjYXNlIFR5cGU6OkRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiAiZGVmYXVsdCI7Ci0gICAgY2FzZSBUeXBlOjpGYWxsdGhyb3Vn
aDoKLSAgICAgICAgcmV0dXJuICJmYWxsdGhyb3VnaCI7Ci0gICAgY2FzZSBUeXBlOjpGb3I6Ci0g
ICAgICAgIHJldHVybiAiZm9yIjsKLSAgICBjYXNlIFR5cGU6OldoaWxlOgotICAgICAgICByZXR1
cm4gIndoaWxlIjsKLSAgICBjYXNlIFR5cGU6OkRvOgotICAgICAgICByZXR1cm4gImRvIjsKLSAg
ICBjYXNlIFR5cGU6OlJldHVybjoKLSAgICAgICAgcmV0dXJuICJyZXR1cm4iOwotICAgIGNhc2Ug
VHlwZTo6TnVsbDoKLSAgICAgICAgcmV0dXJuICJudWxsIjsKLSAgICBjYXNlIFR5cGU6OlRydWU6
Ci0gICAgICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgY2FzZSBUeXBlOjpGYWxzZToKLSAgICAgICAg
cmV0dXJuICJmYWxzZSI7Ci0gICAgY2FzZSBUeXBlOjpDb25zdGFudDoKLSAgICAgICAgcmV0dXJu
ICJjb25zdGFudCI7Ci0gICAgY2FzZSBUeXBlOjpEZXZpY2U6Ci0gICAgICAgIHJldHVybiAiZGV2
aWNlIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICByZXR1cm4gInRocmVh
ZGdyb3VwIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZDoKLSAgICAgICAgcmV0dXJuICJ0aHJlYWQi
OwotICAgIGNhc2UgVHlwZTo6U3BhY2U6Ci0gICAgICAgIHJldHVybiAic3BhY2UiOwotICAgIGNh
c2UgVHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gInZlcnRleCI7Ci0gICAgY2FzZSBUeXBl
OjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuICJmcmFnbWVudCI7Ci0gICAgY2FzZSBUeXBlOjpD
b21wdXRlOgotICAgICAgICByZXR1cm4gImNvbXB1dGUiOwotICAgIGNhc2UgVHlwZTo6TnVtVGhy
ZWFkczoKLSAgICAgICAgcmV0dXJuICJudW10aHJlYWRzIjsKLSAgICBjYXNlIFR5cGU6OlNWSW5z
dGFuY2VJRDoKLSAgICAgICAgcmV0dXJuICJTVl9JbnN0YW5jZUlEIjsKLSAgICBjYXNlIFR5cGU6
OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfVmVydGV4SUQiOwotICAgIGNhc2UgVHlw
ZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiUFNJWkUiOwotICAgIGNhc2UgVHlwZTo6U1ZQb3Np
dGlvbjoKLSAgICAgICAgcmV0dXJuICJTVl9Qb3NpdGlvbiI7Ci0gICAgY2FzZSBUeXBlOjpTVklz
RnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gIlNWX0lzRnJvbnRGYWNlIjsKLSAgICBjYXNlIFR5
cGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAiU1ZfU2FtcGxlSW5kZXgiOwotICAg
IGNhc2UgVHlwZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIlNWX0lubmVyQ292
ZXJhZ2UiOwotICAgIGNhc2UgVHlwZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiAiU1ZfVGFy
Z2V0IjsKLSAgICBjYXNlIFR5cGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiAiU1ZfRGVwdGgi
OwotICAgIGNhc2UgVHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJTVl9Db3ZlcmFn
ZSI7Ci0gICAgY2FzZSBUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiAi
U1ZfRGlzcGF0Y2hUaHJlYWRJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwSUQ6Ci0gICAgICAg
IHJldHVybiAiU1ZfR3JvdXBJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwSW5kZXg6Ci0gICAg
ICAgIHJldHVybiAiU1ZfR3JvdXBJbmRleCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3VwVGhyZWFk
SUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfR3JvdXBUaHJlYWRJRCI7Ci0gICAgY2FzZSBUeXBlOjpB
dHRyaWJ1dGU6Ci0gICAgICAgIHJldHVybiAiU1ZfQXR0cmlidXRlIjsKLSAgICBjYXNlIFR5cGU6
OlJlZ2lzdGVyOgotICAgICAgICByZXR1cm4gInJlZ2lzdGVyIjsKLSAgICBjYXNlIFR5cGU6OlNw
ZWNpYWxpemVkOgotICAgICAgICByZXR1cm4gInNwZWNpYWxpemVkIjsKLSAgICBjYXNlIFR5cGU6
Ok5hdGl2ZToKLSAgICAgICAgcmV0dXJuICJuYXRpdmUiOwotICAgIGNhc2UgVHlwZTo6UmVzdHJp
Y3RlZDoKLSAgICAgICAgcmV0dXJuICJyZXN0cmljdGVkIjsKLSAgICBjYXNlIFR5cGU6OlVuZGVy
c2NvcmU6Ci0gICAgICAgIHJldHVybiAiXyI7Ci0gICAgY2FzZSBUeXBlOjpBdXRvOgotICAgICAg
ICByZXR1cm4gImF1dG8iOwotICAgIGNhc2UgVHlwZTo6UHJvdG9jb2w6Ci0gICAgICAgIHJldHVy
biAicHJvdG9jb2wiOwotICAgIGNhc2UgVHlwZTo6Q29uc3Q6Ci0gICAgICAgIHJldHVybiAiY29u
c3QiOwotICAgIGNhc2UgVHlwZTo6U3RhdGljOgotICAgICAgICByZXR1cm4gInN0YXRpYyI7Ci0g
ICAgY2FzZSBUeXBlOjpRdWFsaWZpZXI6Ci0gICAgICAgIHJldHVybiAicXVhbGlmaWVyIjsKLSAg
ICBjYXNlIFR5cGU6OklkZW50aWZpZXI6Ci0gICAgICAgIHJldHVybiAiaWRlbnRpZmllciI7Ci0g
ICAgY2FzZSBUeXBlOjpPcGVyYXRvck5hbWU6Ci0gICAgICAgIHJldHVybiAib3BlcmF0b3IgbmFt
ZSI7Ci0gICAgY2FzZSBUeXBlOjpFcXVhbHNTaWduOgotICAgICAgICByZXR1cm4gIj0iOwotICAg
IGNhc2UgVHlwZTo6U2VtaWNvbG9uOgotICAgICAgICByZXR1cm4gIjsiOwotICAgIGNhc2UgVHlw
ZTo6TGVmdEN1cmx5QnJhY2tldDoKLSAgICAgICAgcmV0dXJuICJ7IjsKLSAgICBjYXNlIFR5cGU6
OlJpZ2h0Q3VybHlCcmFja2V0OgotICAgICAgICByZXR1cm4gIn0iOwotICAgIGNhc2UgVHlwZTo6
Q29sb246Ci0gICAgICAgIHJldHVybiAiOiI7Ci0gICAgY2FzZSBUeXBlOjpDb21tYToKLSAgICAg
ICAgcmV0dXJuICIsIjsKLSAgICBjYXNlIFR5cGU6OkxlZnRQYXJlbnRoZXNpczoKLSAgICAgICAg
cmV0dXJuICIoIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0UGFyZW50aGVzaXM6Ci0gICAgICAgIHJl
dHVybiAiKSI7Ci0gICAgY2FzZSBUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoKLSAgICAgICAgcmV0
dXJuICJbXSI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldDoKLSAgICAgICAgcmV0
dXJuICJbIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldDoKLSAgICAgICAgcmV0
dXJuICJdIjsKLSAgICBjYXNlIFR5cGU6OlN0YXI6Ci0gICAgICAgIHJldHVybiAiKiI7Ci0gICAg
Y2FzZSBUeXBlOjpMZXNzVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPCI7Ci0gICAgY2FzZSBU
eXBlOjpHcmVhdGVyVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPiI7Ci0gICAgY2FzZSBUeXBl
OjpGdWxsU3RvcDoKLSAgICAgICAgcmV0dXJuICIuIjsKLSAgICBjYXNlIFR5cGU6OlBsdXNFcXVh
bHM6Ci0gICAgICAgIHJldHVybiAiKz0iOwotICAgIGNhc2UgVHlwZTo6TWludXNFcXVhbHM6Ci0g
ICAgICAgIHJldHVybiAiLT0iOwotICAgIGNhc2UgVHlwZTo6VGltZXNFcXVhbHM6Ci0gICAgICAg
IHJldHVybiAiKj0iOwotICAgIGNhc2UgVHlwZTo6RGl2aWRlRXF1YWxzOgotICAgICAgICByZXR1
cm4gIi89IjsKLSAgICBjYXNlIFR5cGU6Ok1vZEVxdWFsczoKLSAgICAgICAgcmV0dXJuICIlPSI7
Ci0gICAgY2FzZSBUeXBlOjpYb3JFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiXj0iOwotICAgIGNh
c2UgVHlwZTo6QW5kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiY9IjsKLSAgICBjYXNlIFR5cGU6
Ok9yRXF1YWxzOgotICAgICAgICByZXR1cm4gInw9IjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U2hp
ZnRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiPj49IjsKLSAgICBjYXNlIFR5cGU6OkxlZnRTaGlm
dEVxdWFsczoKLSAgICAgICAgcmV0dXJuICI8PD0iOwotICAgIGNhc2UgVHlwZTo6UGx1c1BsdXM6
Ci0gICAgICAgIHJldHVybiAiKysiOwotICAgIGNhc2UgVHlwZTo6TWludXNNaW51czoKLSAgICAg
ICAgcmV0dXJuICItLSI7Ci0gICAgY2FzZSBUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJuICIt
PiI7Ci0gICAgY2FzZSBUeXBlOjpRdWVzdGlvbk1hcms6Ci0gICAgICAgIHJldHVybiAiPyI7Ci0g
ICAgY2FzZSBUeXBlOjpPck9yOgotICAgICAgICByZXR1cm4gInx8IjsKLSAgICBjYXNlIFR5cGU6
OkFuZEFuZDoKLSAgICAgICAgcmV0dXJuICImJiI7Ci0gICAgY2FzZSBUeXBlOjpPcjoKLSAgICAg
ICAgcmV0dXJuICJ8IjsKLSAgICBjYXNlIFR5cGU6OlhvcjoKLSAgICAgICAgcmV0dXJuICJeIjsK
LSAgICBjYXNlIFR5cGU6OkFuZDoKLSAgICAgICAgcmV0dXJuICImIjsKLSAgICBjYXNlIFR5cGU6
Okxlc3NUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIjw9IjsKLSAgICBjYXNlIFR5cGU6
OkdyZWF0ZXJUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIj49IjsKLSAgICBjYXNlIFR5
cGU6OkVxdWFsQ29tcGFyaXNvbjoKLSAgICAgICAgcmV0dXJuICI9PSI7Ci0gICAgY2FzZSBUeXBl
OjpOb3RFcXVhbDoKLSAgICAgICAgcmV0dXJuICIhPSI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodFNo
aWZ0OgotICAgICAgICByZXR1cm4gIj4+IjsKLSAgICBjYXNlIFR5cGU6OkxlZnRTaGlmdDoKLSAg
ICAgICAgcmV0dXJuICI8PCI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzOgotICAgICAgICByZXR1cm4g
IisiOwotICAgIGNhc2UgVHlwZTo6TWludXM6Ci0gICAgICAgIHJldHVybiAiLSI7Ci0gICAgY2Fz
ZSBUeXBlOjpEaXZpZGU6Ci0gICAgICAgIHJldHVybiAiLyI7Ci0gICAgY2FzZSBUeXBlOjpNb2Q6
Ci0gICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBUeXBlOjpUaWxkZToKLSAgICAgICAgcmV0
dXJuICJ+IjsKLSAgICBjYXNlIFR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6Ci0gICAgICAgIHJldHVy
biAiISI7Ci0gICAgY2FzZSBUeXBlOjpBdDoKLSAgICAgICAgcmV0dXJuICJAIjsKLSAgICBjYXNl
IFR5cGU6OkVuZE9mRmlsZToKLSAgICAgICAgcmV0dXJuICJFT0YiOwotICAgIGNhc2UgVHlwZTo6
SW52YWxpZDoKLSAgICAgICAgcmV0dXJuICJMRVhJTkdfRVJST1IiOwotICAgIH0KLX0KLQotc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkSWRlbnRpZmllclN0YXJ0KFVDaGFyIHRoZUNo
YXIpCi17Ci0gICAgcmV0dXJuICh0aGVDaGFyID49ICdhJyAmJiB0aGVDaGFyIDw9ICd6JykKLSAg
ICAgICAgfHwgKHRoZUNoYXIgPj0gJ0EnICYmIHRoZUNoYXIgPD0gJ1onKQotICAgICAgICB8fCAo
dGhlQ2hhciA9PSAnXycpOwotfQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRO
b25TdGFydGluZ0lkZW50aWZpZXJDaGFyKFVDaGFyIHRoZUNoYXIpCi17Ci0gICAgcmV0dXJuICh0
aGVDaGFyID49ICdhJyAmJiB0aGVDaGFyIDw9ICd6JykKLSAgICAgICAgfHwgKHRoZUNoYXIgPj0g
J0EnICYmIHRoZUNoYXIgPD0gJ1onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnMCcgJiYgdGhl
Q2hhciA8PSAnOScpCi0gICAgICAgIHx8ICh0aGVDaGFyID09ICdfJyk7Ci19Ci0KLXN0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNIZXhhZGVjaW1hbENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIp
Ci17Ci0gICAgcmV0dXJuIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScpCi0g
ICAgICAgIHx8IChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAnZicpCi0gICAgICAg
IHx8IChjaGFyYWN0ZXIgPj0gJ0EnICYmIGNoYXJhY3RlciA8PSAnRicpOwotfQotCi1zdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzRGlnaXQoVUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1cm4g
dGhlQ2hhciA+PSAnMCcgJiYgdGhlQ2hhciA8PSAnOSc7Ci19Ci0KLWF1dG8gTGV4ZXI6OmNvbnN1
bWVUb2tlbkZyb21TdHJlYW0oKSAtPiBUb2tlbgotewotICAgIFVDaGFyIGN1cnJlbnQgPSAwOwot
ICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fb2Zmc2V0OwotCi0gICAgYXV0byBwZWVrID0gWyZdICgp
IC0+IFVDaGFyIHsKLSAgICAgICAgaWYgKG9mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHJldHVybiBtX3N0cmluZ1ZpZXdbb2Zmc2V0XTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfTsKLQotICAgIGF1dG8gc2hpZnQgPSBbJl0gewotICAgICAgICBpZiAob2Zmc2V0
IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBjdXJyZW50ID0gbV9zdHJp
bmdWaWV3W29mZnNldF07Ci0gICAgICAgICAgICArK29mZnNldDsKLSAgICAgICAgICAgIHJldHVy
biBjdXJyZW50OwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnQgPSAwOwotICAgICAgICByZXR1
cm4gY3VycmVudDsKLSAgICB9OwotCi0gICAgYXV0byBjb25zdW1lID0gWyZdIChVQ2hhciB0aGVD
aGFyKSB7Ci0gICAgICAgIGlmIChwZWVrKCkgPT0gdGhlQ2hhcikgewotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBuZXh0SXNJZGVudGlmaWVyID0gWyZdIHsKLSAg
ICAgICAgcmV0dXJuIGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKHBlZWsoKSk7Ci0g
ICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBbJl0gKFRva2VuOjpUeXBlIHR5cGUpIC0+IFRva2Vu
IHsKLSAgICAgICAgYXV0byBvbGRPZmZzZXQgPSBtX29mZnNldDsKLSAgICAgICAgbV9vZmZzZXQg
PSBvZmZzZXQ7Ci0gICAgICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKLSAgICAgICAg
cmV0dXJuIHsgeyBvbGRPZmZzZXQsIG9mZnNldCwgbV9uYW1lU3BhY2UgfSwgdHlwZSB9OwotICAg
IH07Ci0KLSAgICBzd2l0Y2ggKHNoaWZ0KCkpIHsKLSAgICBjYXNlICdBJzoKLSAgICBjYXNlICdC
JzoKLSAgICBjYXNlICdDJzoKLSAgICBjYXNlICdEJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNl
ICdGJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICdIJzoKLSAgICBjYXNlICdJJzoKLSAgICBj
YXNlICdKJzoKLSAgICBjYXNlICdLJzoKLSAgICBjYXNlICdMJzoKLSAgICBjYXNlICdNJzoKLSAg
ICBjYXNlICdOJzoKLSAgICBjYXNlICdPJzoKLSAgICBjYXNlICdRJzoKLSAgICBjYXNlICdSJzoK
LSAgICBjYXNlICdUJzoKLSAgICBjYXNlICdVJzoKLSAgICBjYXNlICdWJzoKLSAgICBjYXNlICdX
JzoKLSAgICBjYXNlICdYJzoKLSAgICBjYXNlICdZJzoKLSAgICBjYXNlICdaJzoKLSAgICBjYXNl
ICdnJzoKLSAgICBjYXNlICdoJzoKLSAgICBjYXNlICdqJzoKLSAgICBjYXNlICdrJzoKLSAgICBj
YXNlICdsJzoKLSAgICBjYXNlICdtJzoKLSAgICBjYXNlICdxJzoKLSAgICBjYXNlICd4JzoKLSAg
ICBjYXNlICd5JzoKLSAgICBjYXNlICd6JzoKLXBhcnNlSWRlbnRpZmllcjoKLSAgICAgICAgd2hp
bGUgKGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKHBlZWsoKSkpCi0gICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OklkZW50aWZpZXIp
OwotCi0gICAgY2FzZSAncyc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNh
c2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLQotICAgICAgICBjYXNl
ICd3JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2kn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN3aXRjaCk7Ci0KLSAgICAgICAgY2FzZSAndCc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpTdHJ1Y3QpOwotICAgICAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0YXRpYyk7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgJ2EnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNwYWNlKTsKLSAgICAgICAgICAgIGNh
c2UgJ2UnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3onKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNwZWNp
YWxpemVkKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnUyc6Ci0gICAg
ICAgIGlmICghY29uc3VtZSgnVicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmICghY29uc3VtZSgnXycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnRyc6Ci0g
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAg
ICAgICAgICBjYXNlICdJJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAnRCc6Ci0gICAgICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3VwSUQp
OwotICAgICAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6U1ZHcm91cEluZGV4KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgY2FzZSAnVCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFkSUQp
OwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAn
ZSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWRGVw
dGgpOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ1QnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVy
KCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEKTsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ0MnOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2JykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZSk7Ci0g
ICAgICAgIGNhc2UgJ1QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlRh
cmdldCk7Ci0gICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCk7Ci0gICAgICAgIGNhc2UgJ1AnOgotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdzJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6U1ZQb3NpdGlvbik7Ci0gICAgICAgIGNhc2UgJ1YnOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnRCcp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZWZXJ0ZXhJRCk7Ci0g
ICAgICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRj
aCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRicpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdGJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFj
ZSk7Ci0gICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAnbic6
Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnQycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UpOwotICAgICAgICAgICAgICAgIGNhc2UgJ3Mn
OgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJbnN0YW5jZUlEKTsKLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQot
Ci0gICAgY2FzZSAndCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2Ug
J3InOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpU
cnVlKTsKLSAgICAgICAgY2FzZSAneSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlR5cGVkZWYpOwotICAgICAgICBjYXNlICdoJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQot
ICAgICAgICAgICAgaWYgKCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaHJlYWQpOwotCi0gICAgICAgICAgICBpZiAocGVlaygp
ICE9ICdnJykKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnQgPT0gJ2cn
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6VGhyZWFkZ3JvdXApOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnZSc6Ci0gICAgICAgIHN3aXRj
aCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbnVtKTsKLSAgICAgICAgY2FzZSAnbCc6Ci0gICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVsc2UpOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IH0KLQotICAgIGNhc2UgJ28nOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3In
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2Fz
ZSAnJic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJz4nOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc+JykpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotICAgICAgICAgICAg
aWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJzwnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBpZiAoY29uc3Vt
ZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JO
YW1lKTsKLQotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBjb25zdW1lKCcrJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgY29uc3VtZSgnLScpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJ3wnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLQotICAgICAgICBjYXNlICc9JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OkludmFsaWQpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyonOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1l
KTsKLQotICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2Fz
ZSAnJSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyEnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLQotICAgICAgICBjYXNlICd+JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAg
ICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3IpOwotCi0gICAgY2FzZSAnaSc6Ci0gICAgICAgIGlmICghY29uc3VtZSgn
ZicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJZik7Ci0KLSAgICBjYXNlICdjJzoKLSAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNhc2UpOwotCi0gICAgICAgIGNhc2Ug
J2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1
YWxpZmllcik7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdtJzoKLSAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkNvbXB1dGUpOwotICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgJ3QnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6Q29udGludWUpOwotICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgotICAg
ICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb25zdCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCduJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNvbnN0
YW50KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ2InOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNv
bnN1bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2snKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QnJlYWspOwotCi0gICAg
Y2FzZSAnZCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ28nOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRvKTsKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgJ2YnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgICAgICBjYXNlICd2JzoKLSAg
ICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGV2aWNlKTsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLQotICAgIGNhc2UgJ2YnOgotICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OkZvcik7Ci0gICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZyYWdtZW50KTsKLSAgICAgICAgY2FzZSAn
YSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHN3
aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
aCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkZhbGx0aHJvdWdoKTsKLQotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5l
eHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGYWxzZSk7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnZic6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2En
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ3cnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ2gn
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ2knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6V2hpbGUpOwotCi0g
ICAgY2FzZSAncic6Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNh
c2UgJ3QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlJldHVybik7Ci0gICAgICAgIGNhc2UgJ2cnOgotICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZWdpc3Rlcik7Ci0gICAgICAgIGNhc2UgJ3MnOgotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6UmVzdHJpY3RlZCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnbic6Ci0gICAgICAgIHN3aXRjaCAo
cGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TmF0aXZl
KTsKLSAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
c3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TnVsbCk7Ci0gICAg
ICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok51bVRocmVhZHMpOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnaSc6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24n
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgfQotCi0gICAgY2FzZSAndic6Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICgh
Y29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpWZXJ0ZXgpOwotCi0g
ICAgY2FzZSAnUCc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnUycpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnWicpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnRScp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQU2l6ZSk7Ci0KLSAgICBjYXNlICd1JzoKLSAgICAg
ICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0KLSAgICBjYXNlICdwJzoKLSAgICAgICAg
aWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlByb3RvY29sKTsKLQotICAgIGNhc2UgJ18nOgotICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VW5kZXJzY29yZSk7Ci0KLSAg
ICBjYXNlICdhJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAndCc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdiJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpBdHRyaWJ1dGUpOwotICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXV0byk7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2Fz
ZSAnPic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc+JykpIHsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdo
dFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Umln
aHRTaGlmdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG8pOwotICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbik7Ci0gICAgY2Fz
ZSAnPCc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc8JykpIHsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0
U2hpZnRFcXVhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0
U2hpZnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvKTsKLSAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ24pOwotCi0gICAgY2FzZSAnKyc6
Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlBsdXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnKycpKQotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQbHVzUGx1cyk7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6UGx1cyk7Ci0KLSAgICBjYXNlICctJzoKLSAgICAgICAgaWYg
KGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TWlu
dXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnLScpKQotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJz4n
KSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXJyb3cpOwotICAgICAg
ICBpZiAoaXNEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgZ290byBwYXJzZU51bWJlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29uc3VtZSgnLicp
KQotICAgICAgICAgICAgZ290byBwYXJzZUZsb2F0QWZ0ZXJEb3Q7Ci0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6TWludXMpOwotCi0gICAgY2FzZSAnKic6Ci0gICAgICAgIGlmIChj
b25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRpbWVz
RXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTdGFyKTsKLQotICAg
IGNhc2UgJy8nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMpOwotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OkRpdmlkZSk7Ci0KLSAgICBjYXNlICclJzoKLSAgICAgICAgaWYgKGNvbnN1
bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TW9kRXF1YWxz
KTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2QpOwotCi0gICAgY2FzZSAn
Xic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OlhvckVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6WG9yKTsKLQotICAgIGNhc2UgJyYnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBbmRFcXVhbHMpOwotICAgICAgICBp
ZiAoY29uc3VtZSgnJicpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpB
bmRBbmQpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZCk7Ci0KLSAgICBj
YXNlICd8JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6T3JFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnfCcpKQot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPck9yKTsKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcik7Ci0KLSAgICBjYXNlICdbJzoKLSAgICAgICAgaWYg
KGNvbnN1bWUoJ10nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3F1
YXJlQnJhY2tldFBhaXIpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRT
cXVhcmVCcmFja2V0KTsKLQotICAgIGNhc2UgJz0nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScp
KQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFcXVhbENvbXBhcmlzb24p
OwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24pOwotCi0gICAg
Y2FzZSAnISc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok5vdEVxdWFsKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpFeGNsYW1hdGlvblBvaW50KTsKLQotICAgIGNhc2UgJzsnOgotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNlbWljb2xvbik7Ci0KLSAgICBjYXNlICd7JzoKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAgIGNh
c2UgJ30nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0Q3VybHlCcmFj
a2V0KTsKLQotICAgIGNhc2UgJzonOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkNvbG9uKTsKLQotICAgIGNhc2UgJywnOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkNvbW1hKTsKLQotICAgIGNhc2UgJygnOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkxlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBjYXNlICcpJzoKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIGNhc2UgJ10nOgot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0K
LSAgICBjYXNlICcuJzoKLSAgICAgICAgaWYgKGlzRGlnaXQocGVlaygpKSkKLSAgICAgICAgICAg
IGdvdG8gcGFyc2VGbG9hdEFmdGVyRG90OwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkZ1bGxTdG9wKTsKLQotICAgIGNhc2UgJz8nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlF1ZXN0aW9uTWFyayk7Ci0KLSAgICBjYXNlICd+JzoKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpUaWxkZSk7Ci0KLSAgICBjYXNlICdAJzoKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBdCk7Ci0KLSAgICBjYXNlICcwJzoKLSAgICBjYXNlICcx
JzoKLSAgICBjYXNlICcyJzoKLSAgICBjYXNlICczJzoKLSAgICBjYXNlICc0JzoKLSAgICBjYXNl
ICc1JzoKLSAgICBjYXNlICc2JzoKLSAgICBjYXNlICc3JzoKLSAgICBjYXNlICc4JzoKLSAgICBj
YXNlICc5JzogewotcGFyc2VOdW1iZXI6Ci0gICAgICAgIGlmIChjdXJyZW50ID09ICcwJyAmJiBj
b25zdW1lKCd4JykpIHsKLSAgICAgICAgICAgIHdoaWxlIChpc0hleGFkZWNpbWFsQ2hhcmFjdGVy
KHBlZWsoKSkpCi0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKCd1JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVaW50
TGl0ZXJhbCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkludExpdGVy
YWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVlaygpKSkKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnN1bWUoJy4nKSkgewotcGFyc2VGbG9h
dEFmdGVyRG90OgotICAgICAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVlaygpKSkKLSAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgY29uc3VtZSgnZicpOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6RmxvYXRMaXRlcmFsKTsKLQotICAgICAgICBpZiAoY29uc3VtZSgndScpKQotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCk7Ci0KLSAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsKTsKLSAgICB9Ci0KLSAgICBkZWZh
dWx0OiAKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1fb2Zmc2V0ID09IG1fc3Ry
aW5nVmlldy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbmRP
ZkZpbGUpOwotICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW52YWxpZCk7Ci19Ci0KLQot
Ly8gV2UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHR3byBwcm9wZXJ0aWVzIG9mIFVuaWNvZGU6Ci0v
LyAxLiBUaGUgY29uc2l0dXRlbnQgVVRGLTE2IGNvZGUgdW5pdHMgZm9yIGFsbCBub24tQk1QIGNv
ZGUgcG9pbnRzIGFyZSBzdXJyb2dhdGVzLAotLy8gd2hpY2ggbWVhbnMgd2UnbGwgbmV2ZXIgc2Vl
IGEgZmFsc2UgbWF0Y2guIElmIHdlIHNlZSBhIEJNUCBjb2RlIHVuaXQsIHdlCi0vLyByZWFsbHkg
aGF2ZSBhIEJNUCBjb2RlIHBvaW50LgotLy8gMi4gRXZlcnl0aGluZyB3ZSdyZSBsb29raW5nIGZv
ciBpcyBpbiBCTVAKLQotc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjb2Rl
VW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNvZGVVbml0KSB7Ci0gICAgY2FzZSAnICc6Ci0gICAgY2Fz
ZSAnXHQnOgotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBpc05ld2xpbmUoVUNoYXIgY29kZVVuaXQpCi17Ci0gICAgc3dpdGNo
IChjb2RlVW5pdCkgewotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19
Ci0KLWF1dG8gTGV4ZXI6OmxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkgLT4gTGluZUFuZENvbHVt
bgotewotICAgIC8vIENvdW50aW5nIGZyb20gMSB0byBtYXRjaCBtb3N0IHRleHQgZWRpdG9ycy4K
LSAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gMTsKLSAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIg
PSAxOwotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgc3RkOjptaW4oc3Ry
aW5nVmlldy5sZW5ndGgoKSwgdGFyZ2V0T2Zmc2V0KTsgKytvZmZzZXQpIHsKLSAgICAgICAgKytj
b2x1bW5OdW1iZXI7Ci0gICAgICAgIGlmIChpc05ld2xpbmUoc3RyaW5nVmlld1tvZmZzZXRdKSkg
ewotICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAgICAgICAgICAgY29sdW1uTnVtYmVyID0g
MTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nVmlldz4gc291cmNlRnJvbU5h
bWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UsIGNvbnN0IFN0cmluZyYgc291cmNlMSwg
Y29uc3QgU3RyaW5nKiBzb3VyY2UyKQotewotICAgIHN3aXRjaCAobmFtZVNwYWNlKSB7Ci0gICAg
Y2FzZSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5OgotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTE6Ci0gICAgICAg
IHJldHVybiBTdHJpbmdWaWV3KHNvdXJjZTEpOwotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5h
bWVTcGFjZTI6Ci0gICAgICAgIEFTU0VSVChzb3VyY2UyKTsKLSAgICAgICAgcmV0dXJuIFN0cmlu
Z1ZpZXcoKnNvdXJjZTIpOwotICAgIH0KLX0KLQotU3RyaW5nIExleGVyOjplcnJvclN0cmluZyhF
cnJvciBlcnJvciwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIp
Ci17Ci0gICAgaWYgKGF1dG8gY29kZUxvY2F0aW9uID0gZXJyb3IuY29kZUxvY2F0aW9uKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8gc291cmNlID0gc291cmNlRnJvbU5hbWVTcGFjZShjb2RlTG9jYXRp
b24ubmFtZVNwYWNlKCksIHNvdXJjZTEsIHNvdXJjZTIpKSB7Ci0gICAgICAgICAgICBhdXRvIGxp
bmVBbmRDb2x1bW4gPSBsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldCgqc291cmNlLCBlcnJv
ci5jb2RlTG9jYXRpb24oKS5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKGxpbmVBbmRDb2x1bW4ubGluZSwgJzonLCBsaW5lQW5kQ29sdW1uLmNvbHVtbiwgIjog
IiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZXJyb3Iu
bWVzc2FnZSgpOwotfQotCi12b2lkIExleGVyOjpza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRzKCkK
LXsKLSAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpIHsKLSAgICAg
ICAgaWYgKGlzV2hpdGVzcGFjZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdKSkKLSAgICAgICAgICAg
ICsrbV9vZmZzZXQ7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldF0gPT0g
Jy8nICYmIG1fb2Zmc2V0ICsgMSA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewotICAgICAgICAgICAg
ICAgIC8vIExpbmUgY29tbWVudAotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ICs9IDI7Ci0gICAg
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIFxyXG4gdGhpcyBtYWtlcyB0
aGUgY29tbWVudCBlbmQgb24gdGhlIFxyLiBJdCBpcyBmaW5lLCBhcyB0aGUgXG4gYWZ0ZXIgdGhh
dCBpcyBzaW1wbGUgd2hpdGVzcGFjZS4KLSAgICAgICAgICAgICAgICBmb3IgKCA7IG1fb2Zmc2V0
IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpICYmICFpc05ld2xpbmUobV9zdHJpbmdWaWV3W21fb2Zm
c2V0XSk7ICsrbV9vZmZzZXQpIHsgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0cmluZ1Zp
ZXdbbV9vZmZzZXQgKyAxXSA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICAvLyBMb25nIGNvbW1l
bnQKLSAgICAgICAgICAgICAgICBmb3IgKCA7IG1fb2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0
aCgpIDsgKyttX29mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdHJpbmdWaWV3
W21fb2Zmc2V0XSA9PSAnKicgJiYgbV9vZmZzZXQgKyAxIDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgp
ICYmIG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNmODQzMTcxZDIxODkyNDY0NDZlYTBiNWQzMTE0NzNkNjUwOGJh
YjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIExl
eGVyOwotCi1zdHJ1Y3QgVG9rZW4gewotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb247Ci0g
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7Ci0gICAgICAgIEludExpdGVyYWwsCi0gICAg
ICAgIFVpbnRMaXRlcmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAgIFN0cnVjdCwK
LSAgICAgICAgVHlwZWRlZiwKLSAgICAgICAgRW51bSwKLSAgICAgICAgT3BlcmF0b3IsCi0gICAg
ICAgIElmLAotICAgICAgICBFbHNlLAotICAgICAgICBDb250aW51ZSwKLSAgICAgICAgQnJlYWss
Ci0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgQ2FzZSwKLSAgICAgICAgRGVmYXVsdCwKLSAgICAg
ICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZvciwKLSAgICAgICAgV2hpbGUsCi0gICAgICAgIERv
LAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIE51bGwsCi0gICAgICAgIFRydWUsCi0gICAgICAg
IEZhbHNlLAotICAgICAgICBDb25zdGFudCwKLSAgICAgICAgRGV2aWNlLAotICAgICAgICBUaHJl
YWRncm91cCwKLSAgICAgICAgVGhyZWFkLAotICAgICAgICBTcGFjZSwKLSAgICAgICAgVmVydGV4
LAotICAgICAgICBGcmFnbWVudCwKLSAgICAgICAgQ29tcHV0ZSwKLSAgICAgICAgTnVtVGhyZWFk
cywKLSAgICAgICAgU1ZJbnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElELAotICAgICAgICBQ
U2l6ZSwKLSAgICAgICAgU1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250RmFjZSwKLSAgICAg
ICAgU1ZTYW1wbGVJbmRleCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBTVlRh
cmdldCwKLSAgICAgICAgU1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwKLSAgICAgICAgU1ZE
aXNwYXRjaFRocmVhZElELAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAgIFNWR3JvdXBJbmRl
eCwKLSAgICAgICAgU1ZHcm91cFRocmVhZElELAotICAgICAgICBBdHRyaWJ1dGUsCi0gICAgICAg
IFJlZ2lzdGVyLAotICAgICAgICBTcGVjaWFsaXplZCwKLSAgICAgICAgTmF0aXZlLAotICAgICAg
ICBSZXN0cmljdGVkLAotICAgICAgICBVbmRlcnNjb3JlLAotICAgICAgICBBdXRvLAotICAgICAg
ICBQcm90b2NvbCwKLSAgICAgICAgQ29uc3QsCi0gICAgICAgIFN0YXRpYywKLSAgICAgICAgUXVh
bGlmaWVyLAotICAgICAgICBJZGVudGlmaWVyLAotICAgICAgICBPcGVyYXRvck5hbWUsCi0gICAg
ICAgIEVxdWFsc1NpZ24sCi0gICAgICAgIFNlbWljb2xvbiwKLSAgICAgICAgTGVmdEN1cmx5QnJh
Y2tldCwKLSAgICAgICAgUmlnaHRDdXJseUJyYWNrZXQsCi0gICAgICAgIENvbG9uLAotICAgICAg
ICBDb21tYSwKLSAgICAgICAgTGVmdFBhcmVudGhlc2lzLAotICAgICAgICBSaWdodFBhcmVudGhl
c2lzLAotICAgICAgICBTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgTGVmdFNxdWFyZUJyYWNr
ZXQsCi0gICAgICAgIFJpZ2h0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgU3RhciwKLSAgICAgICAg
TGVzc1RoYW5TaWduLAotICAgICAgICBHcmVhdGVyVGhhblNpZ24sCi0gICAgICAgIEZ1bGxTdG9w
LAotICAgICAgICBQbHVzRXF1YWxzLAotICAgICAgICBNaW51c0VxdWFscywKLSAgICAgICAgVGlt
ZXNFcXVhbHMsCi0gICAgICAgIERpdmlkZUVxdWFscywKLSAgICAgICAgTW9kRXF1YWxzLAotICAg
ICAgICBYb3JFcXVhbHMsCi0gICAgICAgIEFuZEVxdWFscywKLSAgICAgICAgT3JFcXVhbHMsCi0g
ICAgICAgIFJpZ2h0U2hpZnRFcXVhbHMsCi0gICAgICAgIExlZnRTaGlmdEVxdWFscywKLSAgICAg
ICAgUGx1c1BsdXMsCi0gICAgICAgIE1pbnVzTWludXMsCi0gICAgICAgIEFycm93LAotICAgICAg
ICBRdWVzdGlvbk1hcmssCi0gICAgICAgIE9yT3IsCi0gICAgICAgIEFuZEFuZCwKLSAgICAgICAg
T3IsCi0gICAgICAgIFhvciwKLSAgICAgICAgQW5kLAotICAgICAgICBMZXNzVGhhbk9yRXF1YWxU
bywKLSAgICAgICAgR3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAgIEVxdWFsQ29tcGFyaXNv
biwKLSAgICAgICAgTm90RXF1YWwsCi0gICAgICAgIFJpZ2h0U2hpZnQsCi0gICAgICAgIExlZnRT
aGlmdCwKLSAgICAgICAgUGx1cywKLSAgICAgICAgTWludXMsCi0gICAgICAgIERpdmlkZSwKLSAg
ICAgICAgTW9kLAotICAgICAgICBUaWxkZSwKLSAgICAgICAgRXhjbGFtYXRpb25Qb2ludCwKLSAg
ICAgICAgQXQsCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICAgICAgSW52YWxpZAotICAgIH0gdHlw
ZSB7VHlwZTo6SW52YWxpZH07Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogdHlwZU5hbWUoVHlw
ZSk7Ci0KLSAgICBpbmxpbmUgU3RyaW5nVmlldyBzdHJpbmdWaWV3KGNvbnN0IExleGVyJikgY29u
c3Q7Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgfQotfTsKLQotaW5saW5lIENv
ZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKGNvbnN0IFRva2VuJiB0b2tlbikKLSAgICA6IENvZGVM
b2NhdGlvbih0b2tlbi5jb2RlTG9jYXRpb24pCi17Ci19Ci0KLWNsYXNzIExleGVyIHsKLXB1Ymxp
YzoKLSAgICBMZXhlcigpID0gZGVmYXVsdDsKLQotICAgIExleGVyKFN0cmluZ1ZpZXcgc3RyaW5n
VmlldywgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1fc3RyaW5nVmlldyhz
dHJpbmdWaWV3KQotICAgICAgICAsIG1fbmFtZVNwYWNlKG5hbWVTcGFjZSkKLSAgICB7Ci0gICAg
ICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzBd
ID0gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBj
b25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgfQotCi0gICAgTGV4ZXIoY29uc3QgTGV4ZXIm
KSA9IGRlbGV0ZTsKLSAgICBMZXhlcihMZXhlciYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBMZXhlciYg
b3BlcmF0b3I9KGNvbnN0IExleGVyJikgPSBkZWxldGU7Ci0gICAgTGV4ZXImIG9wZXJhdG9yPShM
ZXhlciYmKSA9IGRlZmF1bHQ7Ci0KLQotICAgIFRva2VuIGNvbnN1bWVUb2tlbigpCi0gICAgewot
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmluZ0J1ZmZlclttX3JpbmdCdWZmZXJJbmRleF07Ci0g
ICAgICAgIG1fcmluZ0J1ZmZlclttX3JpbmdCdWZmZXJJbmRleF0gPSBjb25zdW1lVG9rZW5Gcm9t
U3RyZWFtKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlckluZGV4ID0gKG1fcmluZ0J1ZmZlckluZGV4
ICsgMSkgJSAyOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFRva2VuIHBl
ZWsoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZlclttX3JpbmdCdWZm
ZXJJbmRleF07Ci0gICAgfQotCi0gICAgVG9rZW4gcGVla0Z1cnRoZXIoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZlclsobV9yaW5nQnVmZmVySW5kZXggKyAxKSAlIDJd
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdGhpcwotICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzNTcKLSAgICBzdHJ1
Y3QgU3RhdGUgewotICAgICAgICBUb2tlbiByaW5nQnVmZmVyWzJdOwotICAgICAgICB1bnNpZ25l
ZCByaW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldDsKLSAgICB9OwotCi0g
ICAgU3RhdGUgc3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgU3RhdGUgc3RhdGU7Ci0gICAg
ICAgIHN0YXRlLnJpbmdCdWZmZXJbMF0gPSBtX3JpbmdCdWZmZXJbMF07Ci0gICAgICAgIHN0YXRl
LnJpbmdCdWZmZXJbMV0gPSBtX3JpbmdCdWZmZXJbMV07Ci0gICAgICAgIHN0YXRlLnJpbmdCdWZm
ZXJJbmRleCA9IG1fcmluZ0J1ZmZlckluZGV4OwotICAgICAgICBzdGF0ZS5vZmZzZXQgPSBtX29m
ZnNldDsKLSAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3RhdGUo
Y29uc3QgU3RhdGUmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzBdID0gc3Rh
dGUucmluZ0J1ZmZlclswXTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFdID0gc3RhdGUucmluZ0J1
ZmZlclsxXTsKLSAgICAgICAgbV9yaW5nQnVmZmVySW5kZXggPSBzdGF0ZS5yaW5nQnVmZmVySW5k
ZXg7Ci0gICAgICAgIG1fb2Zmc2V0ID0gc3RhdGUub2Zmc2V0OwotCi0gICAgfQotCi0gICAgdm9p
ZCBzZXRTdGF0ZShTdGF0ZSYmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzBd
ID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzBdKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFd
ID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzFdKTsKLSAgICAgICAgbV9yaW5nQnVmZmVySW5k
ZXggPSBXVEZNb3ZlKHN0YXRlLnJpbmdCdWZmZXJJbmRleCk7Ci0gICAgICAgIG1fb2Zmc2V0ID0g
V1RGTW92ZShzdGF0ZS5vZmZzZXQpOwotICAgIH0KLQotICAgIGJvb2wgaXNGdWxseUNvbnN1bWVk
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwZWVrKCkudHlwZSA9PSBUb2tlbjo6VHlw
ZTo6RW5kT2ZGaWxlOwotICAgIH0KLQotICAgIFN0cmluZyBlcnJvclN0cmluZyhjb25zdCBUb2tl
biYgdG9rZW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCJQYXJzZSBlcnJvciBhdCBsaW5lICIsIGxpbmVBbmRDb2x1bW5OdW1iZXJGcm9t
T2Zmc2V0KG1fc3RyaW5nVmlldywgdG9rZW4uc3RhcnRPZmZzZXQoKSkubGluZSwgIjogIiwgbWVz
c2FnZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBlcnJvclN0cmluZyhFcnJvciwgY29u
c3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIgPSBudWxscHRyKTsKLQot
ICAgIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNwYWNl
OyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0cnVjdCBUb2tlbjsKLSAgICBUb2tlbiBjb25z
dW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0KLSAgICB2b2lkIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVu
dHMoKTsKLQotICAgIHN0cnVjdCBMaW5lQW5kQ29sdW1uIHsKLSAgICAgICAgdW5zaWduZWQgbGlu
ZTsKLSAgICAgICAgdW5zaWduZWQgY29sdW1uOwotICAgIH07Ci0gICAgc3RhdGljIExpbmVBbmRD
b2x1bW4gbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3RyaW5nVmlldyYsIHVu
c2lnbmVkIG9mZnNldCk7Ci0KLSAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKLSAgICBUb2tl
biBtX3JpbmdCdWZmZXJbMl07Ci0gICAgdW5zaWduZWQgbV9yaW5nQnVmZmVySW5kZXggeyAwIH07
Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9uYW1l
U3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi1TdHJpbmdW
aWV3IFRva2VuOjpzdHJpbmdWaWV3KGNvbnN0IExleGVyJiBsZXhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbGV4ZXIubV9zdHJpbmdWaWV3LnN1YnN0cmluZyhjb2RlTG9jYXRpb24uc3RhcnRPZmZz
ZXQoKSwgY29kZUxvY2F0aW9uLmVuZE9mZnNldCgpIC0gY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hl
Y2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTcxY2Y1NjIwMzRkNTc0
N2VkOWFlMzM0MDRmMDBjMWQxNjdmODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJl
ZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotc3RhdGljIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24oQVNUOjpS
ZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgaWYgKCFpczxBU1Q6OlR5cGVS
ZWZlcmVuY2U+KHJlc29sdmFibGVUeXBlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJl
ZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmICghaXM8QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLX0KLQotY2xh
c3MgTGl0ZXJhbFR5cGVDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotcHJpdmF0
ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxvYXRMaXRlcmFsVHlw
ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9
IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihmbG9hdExpdGVyYWxUeXBlKTsKLSAgICAgICAgQVNT
RVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVj
bGFyYXRpb24tPmNhblJlcHJlc2VudEZsb2F0KCkoZmxvYXRMaXRlcmFsVHlwZS52YWx1ZSgpKSk7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYgaW50ZWdl
ckxpdGVyYWxUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURl
Y2xhcmF0aW9uID0gZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKGludGVnZXJMaXRlcmFsVHlwZSk7
Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLT5jYW5SZXByZXNlbnRJbnRlZ2VyKCkoaW50ZWdlckxpdGVy
YWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZlVHlw
ZURlY2xhcmF0aW9uKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKTsKLSAgICAgICAgQVNTRVJU
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFy
YXRpb24tPmNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci19OwotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECi0K
LXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIExpdGVyYWxUeXBlQ2hlY2tlcigpLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0p
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGIxY2FiZjg4YTg5MGIzNzA2M2U4YTIwMGE1MGQ4MWQyZTY0NTc5
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGNoZWNrTGl0ZXJhbFR5
cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDBkYTg0
YjhmNDEyMDFhZmViNjA4ZDQxNDEwNjVkZGUxOTRkNGU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29u
dGV4dC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1
cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLU5hbWVDb250ZXh0OjpOYW1lQ29udGV4dChOYW1lQ29udGV4
dCogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi1FeHBlY3RlZDx2b2lk
LCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5p
dGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9IHRvcExldmVsRXhpc3RzKHR5cGVEZWZp
bml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVw
bGljYXRlIG5hbWUgaW4gcHJvZ3JhbSIsICpleGlzdGluZykpOwotICAgIHR5cGVEZWZpbml0aW9u
LnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXggPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fdHlwZXNbaW5kZXhdLmFkZCh0eXBlRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCh0eXBlRGVm
aW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5h
bWVDb250ZXh0OjphZGQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0
aW9uKQotewotICAgIGlmIChhdXRvIGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHMoc3RydWN0dXJl
RGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
IkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgKmV4aXN0aW5nKSk7Ci0gICAgc3RydWN0dXJl
RGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0
byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoc3RydWN0dXJlRGVmaW5pdGlvbi5uYW1lKCks
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0g
ICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIGlmIChhdXRvIGV4aXN0aW5nID0g
dG9wTGV2ZWxFeGlzdHMoZW51bWVyYXRpb25EZWZpbml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCAq
ZXhpc3RpbmcpKTsKLSAgICBlbnVtZXJhdGlvbkRlZmluaXRpb24uc2V0TmFtZVNwYWNlKG1fY3Vy
cmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRk
KGVudW1lcmF0aW9uRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChlbnVtZXJhdGlvbkRlZmluaXRp
b24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29u
dGV4dDo6YWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17
Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3Bh
Y2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMoZnVuY3Rpb25EZWZpbml0aW9u
Lm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRl
IG5hbWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24oKSkpOwotICAgIGZ1bmN0aW9u
RGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fZnVuY3Rpb25zW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwg
MT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZnVuY3Rpb25EZWZpbml0
aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNv
bnRleHQ6OmFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgdHlwZS0+Y29kZUxvY2F0
aW9uKCkpKTsKLSAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnNldE5hbWVTcGFjZShtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9mdW5jdGlvbnNbaW5kZXhdLmFk
ZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgcmV0
dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBh
dXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0g
ICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVuY3Rpb25zKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxp
Y2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwot
ICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRkKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwg
MT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0aXZlVHlwZURlY2xh
cmF0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFt
ZUNvbnRleHQ6OmFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRp
b24pCi17Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4geyB9OwotICAgIGlmIChhdXRvKiBkZWNsYXJhdGlvbiA9IGxvY2FsRXhpc3Rz
KHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIGRlY2xhcmF0aW9uLT5jb2Rl
TG9jYXRpb24oKSkpOwotICAgIGF1dG8gcmVzdWx0ID0gbV92YXJpYWJsZXMuYWRkKFN0cmluZyh2
YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSksICZ2YXJpYWJsZURlY2xhcmF0aW9uKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4g
TmFtZUNvbnRleHQ6OmdldFR5cGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNUOjpOYW1lU3BhY2Ug
ZnJvbU5hbWVzcGFjZSkKLXsKLSAgICAvLyBOYW1lZCB0eXBlcyBjYW4gb25seSBiZSBkZWNsYXJl
ZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29udGV4dC4KLSAgICBpZiAobV9wYXJlbnQpCi0gICAgICAg
IHJldHVybiBtX3BhcmVudC0+Z2V0VHlwZXMobmFtZSwgZnJvbU5hbWVzcGFjZSk7Ci0KLSAgICBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+IHJlc3VsdDsK
LQotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21OYW1lc3Bh
Y2UpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAg
IGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkgewotICAgICAgICBmb3IgKGF1
dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlw
ZSk7Ci0gICAgfQotCi0gICAgaWYgKGZyb21OYW1lc3BhY2UgIT0gQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeSkgewotICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihB
U1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaXRlcmF0b3IgPSBtX3R5
cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV90eXBlc1tp
bmRleF0uZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZh
bHVlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1WZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBOYW1lQ29udGV4dDo6Z2V0RnVuY3Rp
b25zKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSkKLXsK
LSAgICAvLyBGdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbCBuYW1l
IGNvbnRleHQuCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICByZXR1cm4gbV9wYXJlbnQtPmdl
dEZ1bmN0aW9ucyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IHJlc3VsdDsKLQotICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21OYW1lc3BhY2UpOwot
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBp
ZiAoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byB0eXBlIDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0
eXBlKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbU5hbWVzcGFjZSAhPSBBU1Q6Ok5hbWVTcGFjZTo6
U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpdGVyYXRvciA9IG1f
ZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9m
dW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0
ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6Z2V0VmFyaWFibGUoY29uc3QgU3RyaW5nJiBuYW1lKQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3ZhcmlhYmxlcy5maW5kKG5hbWUpOwotICAgIGlmIChp
dGVyYXRvciA9PSBtX3ZhcmlhYmxlcy5lbmQoKSkgewotICAgICAgICBpZiAobV9wYXJlbnQpCi0g
ICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPmdldFZhcmlhYmxlKG5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQot
QVNUOjpOYW1lZFR5cGUqIE5hbWVDb250ZXh0OjpzZWFyY2hUeXBlcyhTdHJpbmcmIG5hbWUpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3VycmVudE5hbWVTcGFj
ZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGZvciAoYXV0
byYgdHlwZXMgOiBtX3R5cGVzKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSB0eXBlcy5maW5k
KG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gdHlwZXMuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpdGVyID0gbV90eXBlc1tpbmRl
eF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgIGl0
ZXIgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fdHlwZXNb
aW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogTmFtZUNv
bnRleHQ6OnNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3VycmVudE5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVTcGFj
ZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25zIDogbV9m
dW5jdGlvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IGZ1bmN0aW9ucy5maW5kKG5hbWUp
OwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gZnVuY3Rpb25zLmVuZCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaXRlciA9IG1fZnVuY3Rpb25zW2lu
ZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fZnVuY3Rpb25zW2luZGV4XS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIGluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwot
ICAgIGl0ZXIgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAh
PSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVb
MF0uZ2V0KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RkOjpvcHRpb25hbDxDb2Rl
TG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0
Ci17Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYW1lKSkKLSAgICAgICAgcmV0
dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwotICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IHNlYXJj
aEZ1bmN0aW9ucyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jb2RlTG9jYXRpb24o
KTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1BU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24qIE5hbWVDb250ZXh0Ojpsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKG1fcGFyZW50KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlcy5maW5kKG5hbWUp
OwotICAgIGlmIChpdGVyICE9IG1fdmFyaWFibGVzLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwN2Q1MDZh
MmM3ZDE0ZDQyMDNiYmQ2MTVjYmU0NmVjYTFlMjZlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTE5hbWVDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLQotI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIE5hbWVkVHlwZTsKLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBUeXBlRGVm
aW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlvbkRl
ZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgVmFyaWFi
bGVEZWNsYXJhdGlvbjsKLQotfQotCi1jbGFzcyBOYW1lQ29udGV4dCB7Ci1wdWJsaWM6Ci0gICAg
TmFtZUNvbnRleHQoTmFtZUNvbnRleHQqIHBhcmVudCA9IG51bGxwdHIpOwotCi0gICAgdm9pZCBz
ZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIGN1cnJlbnROYW1lU3BhY2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICAgICAgbV9jdXJyZW50TmFtZVNwYWNl
ID0gY3VycmVudE5hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YWRkKEFTVDo6VHlwZURlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRk
KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBh
ZGQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gYWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IGFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKTsKLQotICAgIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4gZ2V0VHlwZXMo
Y29uc3QgU3RyaW5nJiwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7Ci0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gZ2V0
RnVuY3Rpb25zKGNvbnN0IFN0cmluZyYsIEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2UpOwot
ICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogZ2V0VmFyaWFibGUoY29uc3QgU3RyaW5nJik7
Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpOYW1lZFR5cGUqIHNlYXJjaFR5cGVzKFN0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBzZWFyY2hGdW5jdGlvbnMo
U3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPENvZGVMb2NhdGlvbj4gdG9w
TGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24qIGxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0KLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPj4g
bV90eXBlc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+IG1f
ZnVuY3Rpb25zW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hNYXA8U3RyaW5nLCBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24qPiBtX3ZhcmlhYmxlczsKLSAgICBOYW1lQ29udGV4dCogbV9w
YXJlbnQ7Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNlIHsgQVNUOjpOYW1l
U3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDMwMGNhNTU5NWRkNjQ4MWMwMWNhYjdjZWY1NjA1YWFiYWNkZjQzYmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERvdEV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xGb3JM
b29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1
ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNpbmNs
dWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKLSNpbmNsdWRlICJXSExTTFNjb3BlZFNl
dEFkZGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5j
ZS5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZUNv
bnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1lQ29udGV4dChuYW1lQ29udGV4dCkKLXsK
LX0KLQotTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiBwYXJlbnRSZXNv
bHZlciwgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1lQ29udGV4dChuYW1l
Q29udGV4dCkKLSAgICAsIG1fcGFyZW50TmFtZVJlc29sdmVyKCZwYXJlbnRSZXNvbHZlcikKLSAg
ICAsIG1fY3VycmVudE5hbWVTcGFjZShwYXJlbnRSZXNvbHZlci5tX2N1cnJlbnROYW1lU3BhY2Up
Ci17Ci19Ci0KLU5hbWVSZXNvbHZlcjo6fk5hbWVSZXNvbHZlcigpCi17Ci0gICAgaWYgKGhhc0Vy
cm9yKCkgJiYgbV9wYXJlbnROYW1lUmVzb2x2ZXIpCi0gICAgICAgIG1fcGFyZW50TmFtZVJlc29s
dmVyLT5zZXRFcnJvcihyZXN1bHQoKS5lcnJvcigpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6
OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBTY29wZWRT
ZXRBZGRlcjxBU1Q6OlR5cGVSZWZlcmVuY2UqPiBhZGRlcihtX3R5cGVSZWZlcmVuY2VzLCAmdHlw
ZVJlZmVyZW5jZSk7Ci0gICAgaWYgKCFhZGRlci5pc05ld0VudHJ5KCkpIHsKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgcmVjdXJzaXZlIHR5cGUgYXJndW1lbnRzLiIsIHR5cGVS
ZWZlcmVuY2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFZpc2l0b3I6OnZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUoKSkg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjEg
U2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIgdGhlIHR5cGUgaGFzIGJlZW4gcmVzb2x2
ZWQgb3Igbm90PwotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNhbmRpZGF0ZXMgPSBtX25h
bWVDb250ZXh0LmdldFR5cGVzKHR5cGVSZWZlcmVuY2UubmFtZSgpLCBtX2N1cnJlbnROYW1lU3Bh
Y2UpOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlcykKLSAgICAgICAgVmlz
aXRvcjo6dmlzaXQoY2FuZGlkYXRlKTsKLSAgICBpZiAoYXV0byByZXN1bHQgPSByZXNvbHZlVHlw
ZU92ZXJsb2FkSW1wbChjYW5kaWRhdGVzLCB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkp
Ci0gICAgICAgIHR5cGVSZWZlcmVuY2Uuc2V0UmVzb2x2ZWRUeXBlKCpyZXN1bHQpOwotICAgIGVs
c2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdHlwZSBhcmd1bWVu
dHMuIiwgdHlwZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBOYW1lQ29udGV4dCBuZXdOYW1lQ29udGV4
dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhp
cywgbmV3TmFtZUNvbnRleHQpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmlu
aXRpb24udHlwZSgpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKSkK
LSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIpOwot
ICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9u
LmJsb2NrKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxv
Y2spCi17Ci0gICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAg
IE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICBu
ZXdOYW1lUmVzb2x2ZXIuVmlzaXRvcjo6dmlzaXQoYmxvY2spOwotfQotCi12b2lkIE5hbWVSZXNv
bHZlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIE5hbWVDb250ZXh0IG5hbWVD
b250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNv
bHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tF
cnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkg
ewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAg
ICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAg
ICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxz
ZUJvZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpXaGls
ZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmNv
bmRpdGlvbmFsKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29s
dmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05hbWVSZXNv
bHZlci5jaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgTmFt
ZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgewot
ICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgICAg
IE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICAg
ICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsK
LSAgICB9Ci0KLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkp
OwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQot
ewotICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1l
UmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFt
ZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KGZvckxvb3ApOwotfQotCi12b2lkIE5hbWVSZXNvbHZl
cjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQot
ewotICAgIGlmICghbV9uYW1lQ29udGV4dC5hZGQodmFyaWFibGVEZWNsYXJhdGlvbikpIHsKLSAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWNsYXJlIGR1cGxpY2F0ZSB2YXJpYWJsZXMu
IiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIFZpc2l0b3I6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb24pOwotfQotCi12
b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVS
ZWZlcmVuY2UpCi17Ci0gICAgaWYgKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvKiB2YXJpYWJsZSA9IG1fbmFtZUNvbnRleHQuZ2V0
VmFyaWFibGUodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpKSkKLSAgICAgICAgdmFyaWFibGVSZWZl
cmVuY2Uuc2V0VmFyaWFibGUoKnZhcmlhYmxlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCBmaW5kIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4iLCB2YXJpYWJs
ZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQot
Ci12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNz
aW9uKQotewotICAgIGlmIChpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9u
LmJhc2UoKSkpIHsKLSAgICAgICAgYXV0byYgdmFyaWFibGVSZWZlcmVuY2UgPSBkb3duY2FzdDxB
U1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIGlm
ICghbV9uYW1lQ29udGV4dC5nZXRWYXJpYWJsZSh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkpKSB7
Ci0gICAgICAgICAgICBhdXRvIGJhc2VOYW1lID0gdmFyaWFibGVSZWZlcmVuY2UubmFtZSgpOwot
ICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBl
cyhiYXNlTmFtZSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICAgICAgICAgIGlmIChlbnVtZXJh
dGlvblR5cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgQVNUOjpOYW1lZFR5cGUm
IHR5cGUgPSBlbnVtZXJhdGlvblR5cGVzWzBdOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0
PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byBtZW1iZXJOYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5tZW1iZXJC
eU5hbWUobWVtYmVyTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsID0gQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OndyYXAo
ZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShiYXNlTmFtZSksIFdURk1vdmUo
bWVtYmVyTmFtZSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgKm1lbWJlcik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsPihkb3RFeHByZXNzaW9uLCBXVEZNb3ZlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJObyBlbnVtIG1lbWJlciBtYXRjaGVz
IHRoZSB1c2VkIG5hbWUuIiwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uVHlwZXMuaXNFbXB0eSgpKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGRvdEV4cHJlc3Npb24pOwot
fQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBpZiAoZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmxlZnQoKSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoZW51bWVy
YXRpb25UeXBlcy5zaXplKCkgPT0gMSkgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzNSBUaGlzIG5lZWRzIHRvIHdvcmsgd2l0
aCB0eXBlZGVmJ2VkIGVudW1zLgotICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSA9IGVudW1l
cmF0aW9uVHlwZXNbMF07Ci0gICAgICAgIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bj4odHlwZSkpIHsKLSAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4o
dHlwZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZpbml0
aW9uLm1lbWJlckJ5TmFtZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmlnaHQoKSkpIHsKLSAg
ICAgICAgICAgICAgICBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuc2V0RW51bWVyYXRpb25NZW1i
ZXIoZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRFcnJvcihFcnJv
cigiQ2Fubm90IHJlc29sdmUgZW51bWVyYXRpb24gbWVtYmVyIGxpdGVyYWwuIiwgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVy
Ojp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24pCi17Ci0gICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRleHQoJm1fbmFtZUNvbnRl
eHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIobmV3TmFtZUNvbnRleHQpOwot
ICAgIG5ld05hbWVSZXNvbHZlci5WaXNpdG9yOjp2aXNpdChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKTsKLX0KLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNjcgTWFrZSBzdXJlIGFsbCB0aGUgbmFtZXMgaGF2ZSBiZWVuIHJlc29sdmVkLgot
Ci1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVzSW5UeXBlcyhQcm9ncmFtJiBwcm9n
cmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVE
ZWZpbml0aW9uIDogcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVz
b2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZSh0eXBlRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2Uo
KSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRp
b24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHN0cnVj
dHVyZURlZmluaXRpb24gOiBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkpIHsKLSAgICAg
ICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2Uoc3RydWN0dXJlRGVmaW5pdGlvbi5n
ZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlz
aXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJy
b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQot
ICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5lbnVtZXJhdGlv
bkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3Bh
Y2UoZW51bWVyYXRpb25EZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFt
ZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24pOwotICAg
ICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFt
ZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKSB7Ci0gICAgICAgIG5h
bWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5nZXQo
KS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQo
bmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJv
cigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVUeXBlTmFt
ZXNJbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZl
cikKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNw
YWNlKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVS
ZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAg
aWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNv
bHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKSB7Ci0gICAgICAg
IG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFu
ZFZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29s
dmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgp
OwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lUmVzb2x2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFhNGVkYmQ2YTc4
N2MzYmUxNDkxNDY5MGUyYTdlODI3YzA4NjQ3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNs
dWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIE5hbWVSZXNvbHZlciA6IHB1YmxpYyBWaXNp
dG9yIHsKLXB1YmxpYzoKLSAgICBOYW1lUmVzb2x2ZXIoTmFtZUNvbnRleHQmKTsKLSAgICBOYW1l
UmVzb2x2ZXIoTmFtZVJlc29sdmVyJiwgTmFtZUNvbnRleHQmKTsKLQotICAgIHZpcnR1YWwgfk5h
bWVSZXNvbHZlcigpOwotCi0gICAgdm9pZCBzZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNw
YWNlIG5hbWVTcGFjZSkgeyBtX2N1cnJlbnROYW1lU3BhY2UgPSBuYW1lU3BhY2U7IH0KLQotcHJp
dmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0
YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlh
YmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJikgb3ZlcnJpZGU7Ci0KLSAgICBOYW1lQ29udGV4dCYgbV9uYW1lQ29udGV4dDsKLSAgICBI
YXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7Ci0gICAgTmFtZVJl
c29sdmVyKiBtX3BhcmVudE5hbWVSZXNvbHZlciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hbWVT
cGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5
IH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVzSW5UeXBlcyhQcm9n
cmFtJiwgTmFtZVJlc29sdmVyJik7Ci1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZVR5cGVO
YW1lc0luRnVuY3Rpb25zKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmQ0NzIx
NmMyMzJjOWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwODggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNlci5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3Bh
Y2UuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCi0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0jZGVmaW5lIFBBUlNF
KG5hbWUsIGVsZW1lbnQsIC4uLikgXAotICAgIGF1dG8gbmFtZSA9IHBhcnNlIyNlbGVtZW50KF9f
VkFfQVJHU19fKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQobmFtZS5lcnJvcigpKTsgXAotCi0jZGVmaW5lIENPTlNVTUVfVFlQRShuYW1lLCB0eXBl
KSBcCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OnR5cGUpOyBcCi0g
ICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9y
KCkpOwotCi0jZGVmaW5lIFBFRUsobmFtZSkgXAotICAgIGF1dG8gbmFtZSA9IHBlZWsoKTsgXAot
ICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJv
cigpKTsKLQotI2RlZmluZSBQRUVLX0ZVUlRIRVIobmFtZSkgXAotICAgIGF1dG8gbmFtZSA9IHBl
ZWtGdXJ0aGVyKCk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZShQcm9ncmFtJiBwcm9n
cmFtLCBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlIG1vZGUsIEFTVDo6TmFtZVNw
YWNlIG5hbWVTcGFjZSkgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+Ci17Ci0gICAgbV9sZXhlciA9
IExleGVyKHN0cmluZ1ZpZXcsIG5hbWVTcGFjZSk7Ci0gICAgbV9tb2RlID0gbW9kZTsKLQotICAg
IHdoaWxlICghbV9sZXhlci5pc0Z1bGx5Q29uc3VtZWQoKSkgewotICAgICAgICBhdXRvIHRva2Vu
ID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkgewotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpJbnZhbGlkOgotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U2VtaWNvbG9uOgotICAgICAgICAgICAgbV9sZXhlci5j
b25zdW1lVG9rZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpUeXBlZGVmOiB7Ci0gICAgICAgICAgICBhdXRvIHR5cGVEZWZpbml0aW9uID0gcGFy
c2VUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCF0eXBlRGVmaW5pdGlvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZURlZmluaXRpb24uZXJyb3Io
KSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1v
dmUoKnR5cGVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6U3RydWN0OiB7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdHVyZURlZmluaXRpb24gPSBw
YXJzZVN0cnVjdHVyZURlZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICghc3RydWN0dXJlRGVm
aW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc3RydWN0dXJl
RGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJv
Z3JhbS5hcHBlbmQoV1RGTW92ZSgqc3RydWN0dXJlRGVmaW5pdGlvbikpOwotICAgICAgICAgICAg
aWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVudW06IHsKLSAgICAgICAgICAgIGF1dG8gZW51
bWVyYXRpb25EZWZpbml0aW9uID0gcGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oKTsKLSAgICAg
ICAgICAgIGlmICghZW51bWVyYXRpb25EZWZpbml0aW9uKQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChlbnVtZXJhdGlvbkRlZmluaXRpb24uZXJyb3IoKSk7Ci0gICAgICAg
ICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKmVudW1lcmF0
aW9uRGVmaW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
Ok5hdGl2ZTogewotICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRh
cmRMaWJyYXJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKG1ha2VTdHJpbmcoIiduYXRp
dmUnIGNhbid0IGV4aXN0IG91dHNpZGUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkuIikpOwotICAg
ICAgICAgICAgYXV0byBmdXJ0aGVyVG9rZW4gPSBwZWVrRnVydGhlcigpOwotICAgICAgICAgICAg
aWYgKCFmdXJ0aGVyVG9rZW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAg
ICAgIGlmIChmdXJ0aGVyVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlR5cGVkZWYpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IHBhcnNlTmF0aXZlVHlw
ZURlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRp
b24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYXRpdmVUeXBl
RGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQg
PSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuYXRpdmVUeXBlRGVjbGFyYXRpb24pKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiA9IHBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgICAgICAg
ICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmVycm9yKCkpOwotICAg
ICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9y
KCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDog
ewotICAgICAgICAgICAgYXV0byBmdW5jdGlvbkRlZmluaXRpb24gPSBwYXJzZUZ1bmN0aW9uRGVm
aW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGZ1bmN0aW9uRGVmaW5pdGlvbi5lcnJvcigp
KTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92
ZSgqZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9y
KCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpmYWlsKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgVHJ5VG9QZWVrIHRyeVRvUGVlaykgLT4gVW5leHBlY3RlZDxFcnJvcj4KLXsKLSAg
ICBpZiAodHJ5VG9QZWVrID09IFRyeVRvUGVlazo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIG5l
eHRUb2tlbiA9IHBlZWsoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cihtX2xleGVyLmVycm9yU3RyaW5nKCpuZXh0VG9rZW4sIG1lc3NhZ2UpKSk7Ci0gICAgfQotICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3QgbGV4OiAiLCBt
ZXNzYWdlKSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGVlaygpIC0+IEV4cGVjdGVkPFRva2VuLCBF
cnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKHRva2Vu
LnR5cGUgIT0gVG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAhPSBUb2tlbjo6VHlw
ZTo6RW5kT2ZGaWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWls
KCJDYW5ub3QgY29uc3VtZSB0b2tlbiJfc3RyLCBUcnlUb1BlZWs6Ok5vKTsKLX0KLQotYXV0byBQ
YXJzZXI6OnBlZWtGdXJ0aGVyKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1
dG8gdG9rZW4gPSBtX2xleGVyLnBlZWtGdXJ0aGVyKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUgIT0g
VG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAhPSBUb2tlbjo6VHlwZTo6RW5kT2ZG
aWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKCJDYW5ub3Qg
Y29uc3VtZSB0d28gdG9rZW5zIl9zdHIsIFRyeVRvUGVlazo6Tm8pOwotfQotCi10ZW1wbGF0ZSA8
VG9rZW46OlR5cGUgdCwgVG9rZW46OlR5cGUuLi4gdHM+Ci1zdHJ1Y3QgVHlwZXMgewotICAgIHN0
YXRpYyBib29sIGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1
cm4gdCA9PSB0eXBlIHx8IFR5cGVzPHRzLi4uPjo6aW5jbHVkZXModHlwZSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCi0gICAg
ewotICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIsICIpOwotICAg
ICAgICBUeXBlczx0cy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKLSAgICB9Ci19OwotdGVt
cGxhdGUgPFRva2VuOjpUeXBlIHQ+Ci1zdHJ1Y3QgVHlwZXM8dD4gewotICAgIHN0YXRpYyBib29s
IGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gdCA9PSB0
eXBlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyKQotICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9rZW46OnR5cGVOYW1l
KHQpKTsKLSAgICB9Ci19OwotCi0KLWJvb2wgUGFyc2VyOjpwZWVrVHlwZShUb2tlbjo6VHlwZSB0
eXBlKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICByZXR1cm4gdG9r
ZW4udHlwZSA9PSB0eXBlOwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci1i
b29sIFBhcnNlcjo6cGVla1R5cGVzKCkKLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVr
KCk7Ci0gICAgcmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSk7Ci19
Ci0KLXN0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShUb2tlbjo6VHlwZSB0eXBl
KQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAodG9rZW4udHlw
ZSA9PSB0eXBlKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tlbigpIH07Ci0g
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5
cGVzPgotc3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygpCi17Ci0gICAgYXV0
byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1
ZGVzKHRva2VuLnR5cGUpKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tlbigp
IH07Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotYXV0byBQYXJzZXI6OmNvbnN1bWVU
eXBlKFRva2VuOjpUeXBlIHR5cGUpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBh
dXRvIHRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAodG9rZW4udHlwZSA9
PSB0eXBlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKG1ha2VT
dHJpbmcoIlVuZXhwZWN0ZWQgdG9rZW4gKGV4cGVjdGVkICIsIFRva2VuOjp0eXBlTmFtZSh0eXBl
KSwgIiBnb3QgIiwgVG9rZW46OnR5cGVOYW1lKHRva2VuLnR5cGUpLCAiKSIpKTsKLX0KLQotdGVt
cGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotYXV0byBQYXJzZXI6OmNvbnN1bWVUeXBlcygp
IC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBhdXRvIGJ1aWxkRXhwZWN0ZWRTdHJp
bmcgPSBbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJbIik7Ci0gICAgICAgIFR5cGVzPHR5cGVzLi4uPjo6YXBw
ZW5kTmFtZVRvKGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXSIpOwotICAgICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBhdXRvIHRva2VuID0g
bV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAoVHlwZXM8dHlwZXMuLi4+OjppbmNsdWRl
cyh0b2tlbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFp
bChtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHRva2VuIChleHBlY3RlZCBvbmUgb2YgIiwgYnVpbGRF
eHBlY3RlZFN0cmluZygpLCAiIGdvdCAiLCBUb2tlbjo6dHlwZU5hbWUodG9rZW4udHlwZSksICIp
IikpOwotfQotCi1zdGF0aWMgaW50IGRpZ2l0VmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotewotICAg
IGlmIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScpCi0gICAgICAgIHJldHVy
biBjaGFyYWN0ZXIgLSAnMCc7Ci0gICAgaWYgKGNoYXJhY3RlciA+PSAnYScgJiYgY2hhcmFjdGVy
IDw9ICdmJykKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciAtICdhJyArIDEwOwotICAgIHJldHVy
biBjaGFyYWN0ZXIgLSAnQScgKyAxMDsKLX0KLQotc3RhdGljIEV4cGVjdGVkPGludCwgRXJyb3I+
IGludExpdGVyYWxUb0ludChTdHJpbmdWaWV3IHRleHQpCi17Ci0gICAgYm9vbCBuZWdhdGUgPSBm
YWxzZTsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCItIl9zdHIpKSB7Ci0gICAgICAgIG5lZ2F0
ZSA9IHRydWU7Ci0gICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygxKTsKLSAgICB9Ci0gICAg
aW50IGJhc2UgPSAxMDsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCIweCJfc3RyKSkgewotICAg
ICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMik7Ci0gICAgICAgIGJhc2UgPSAxNjsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byBjb2RlUG9pbnQgOiB0
ZXh0LmNvZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdpdCA9IGRpZ2l0VmFsdWUo
Y29kZVBvaW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0ID0gcmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAocmVzdWx0IDwgcHJldmlv
dXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygi
aW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICB9Ci0gICAg
aWYgKG5lZ2F0ZSkgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQ2NF90KSA+IHNp
emVvZih1bnNpZ25lZCkgJiYgc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9mKGludCksICJUaGlzIGNv
ZGUgd291bGQgYmUgd3Jvbmcgb3RoZXJ3aXNlIik7Ci0gICAgICAgIGludDY0X3QgaW50UmVzdWx0
ID0gLXN0YXRpY19jYXN0PGludDY0X3Q+KHJlc3VsdCk7Ci0gICAgICAgIGlmIChpbnRSZXN1bHQg
PCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQg
bGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgICAgICByZXR1cm4g
eyBzdGF0aWNfY2FzdDxpbnQ+KGludFJlc3VsdCkgfTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBsaXRl
cmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQpIH07Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDx1bnNpZ25lZCwgRXJy
b3I+IHVpbnRMaXRlcmFsVG9VaW50KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICB1bnNpZ25lZCBi
YXNlID0gMTA7Ci0gICAgaWYgKHRleHQuc3RhcnRzV2l0aCgiMHgiX3N0cikpIHsKLSAgICAgICAg
dGV4dCA9IHRleHQuc3Vic3RyaW5nKDIpOwotICAgICAgICBiYXNlID0gMTY7Ci0gICAgfQotICAg
IEFTU0VSVCh0ZXh0LmVuZHNXaXRoKCJ1IikpOwotICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygw
LCB0ZXh0Lmxlbmd0aCgpIC0gMSk7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBmb3Ig
KGF1dG8gY29kZVBvaW50IDogdGV4dC5jb2RlUG9pbnRzKCkpIHsKLSAgICAgICAgdW5zaWduZWQg
ZGlnaXQgPSBkaWdpdFZhbHVlKGNvZGVQb2ludCk7Ci0gICAgICAgIGF1dG8gcHJldmlvdXMgPSBy
ZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgKyBkaWdpdDsKLSAgICAgICAg
aWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yKG1ha2VTdHJpbmcoInVpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3Vu
ZHMiKSkpOwotICAgIH0KLSAgICByZXR1cm4geyByZXN1bHQgfTsKLX0KLQotc3RhdGljIEV4cGVj
dGVkPGZsb2F0LCBFcnJvcj4gZmxvYXRMaXRlcmFsVG9GbG9hdChTdHJpbmdWaWV3IHRleHQpCi17
Ci0gICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICBhdXRvIHJlc3VsdCA9IHBhcnNlRG91Ymxl
KHRleHQsIHBhcnNlZExlbmd0aCk7Ci0gICAgaWYgKHBhcnNlZExlbmd0aCAhPSB0ZXh0Lmxlbmd0
aCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiQ2Fu
bm90IHBhcnNlIGZsb2F0ICIsIHRleHQpKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZUludGVncmFsTGl0ZXJhbCgpIC0+
IEV4cGVjdGVkPFZhcmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPgotewotICAgIGF1dG8gaW50
ZWdyYWxMaXRlcmFsVG9rZW4gPSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6OkludExpdGVyYWws
IFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbD4oKTsKLSAgICBpZiAoIWludGVncmFsTGl0ZXJhbFRv
a2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxMaXRlcmFsVG9rZW4u
ZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKGludGVncmFsTGl0ZXJhbFRva2VuLT50eXBlKSB7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHJlc3VsdCA9
IGludExpdGVyYWxUb0ludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5nVmlldyhtX2xleGVy
KSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4ge3sgKnJlc3VsdCB9
fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLSAgICB9
Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnR5
cGUgPT0gVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSB1
aW50TGl0ZXJhbFRvVWludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5nVmlldyhtX2xleGVy
KSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4ge3sgKnJlc3VsdCB9
fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLSAgICB9
Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRl
cmFsKCkgLT4gRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPgotewotICAgIGF1dG8gaW50ZWdyYWxM
aXRlcmFsID0gY29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghaW50ZWdyYWxMaXRl
cmFsKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxMaXRlcmFsLmVycm9y
KCkpOwotICAgIGF1dG8gcmVzdWx0ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKGlu
dCB4KSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB7Ci0gICAgICAgIGlmICh4IDwgMCkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0s
IFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKLSAgICAgICAgcmV0
dXJuIHg7Ci0gICAgfSksICppbnRlZ3JhbExpdGVyYWwpOwotICAgIGlmIChyZXN1bHQpCi0gICAg
ICAgIHJldHVybiAqcmVzdWx0OwotICAgIHJldHVybiBmYWlsKCJpbnQgbGl0ZXJhbCBpcyBuZWdh
dGl2ZSJfc3RyKTsKLX0KLQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4gcmVjb2du
aXplU2ltcGxlVW5zaWduZWRJbnRlZ2VyKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKLXsKLSAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGlmIChzdHJpbmdWaWV3Lmxlbmd0aCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNpbXBsZSB1bnNp
Z25lZCBsaXRlcmFsICIsIHN0cmluZ1ZpZXcsICIgaXMgdG9vIHNob3J0IikpKTsKLSAgICBmb3Ig
KGF1dG8gY29kZVBvaW50IDogc3RyaW5nVmlldy5jb2RlUG9pbnRzKCkpIHsKLSAgICAgICAgaWYg
KGNvZGVQb2ludCA8ICcwJyB8fCBjb2RlUG9pbnQgPiAnOScpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2lnbmVkIGxpdGVyYWwg
Iiwgc3RyaW5nVmlldywgIiBpc24ndCBvZiB0aGUgZm9ybSBbMC05XSsiKSkpOwotICAgICAgICBh
dXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxMCArIChj
b2RlUG9pbnQgLSAnMCcpOwotICAgICAgICBpZiAocmVzdWx0IDwgcHJldmlvdXMpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2ln
bmVkIGxpdGVyYWwgIiwgc3RyaW5nVmlldywgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ29uc3RhbnRFeHBy
ZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24sIEVycm9yPgotewot
ICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkludExp
dGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46
OlR5cGU6OkZsb2F0TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok51bGwsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpUcnVlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmFsc2UsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyPigpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5
cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUu
ZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OkludGVnZXJMaXRlcmFsKHsgKnR5cGUg
fSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VWludExpdGVyYWw6
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5cGUtPnN0cmluZ1Zp
ZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4ge3sgQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsKHsgKnR5cGUgfSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBmbG9h
dExpdGVyYWxUb0Zsb2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAo
IXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkp
OwotICAgICAgICByZXR1cm4ge3sgQVNUOjpGbG9hdExpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUp
IH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4g
eyBBU1Q6OkJvb2xlYW5MaXRlcmFsKFdURk1vdmUoKnR5cGUpLCB0cnVlKSB9OwotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4geyBBU1Q6OkJvb2xlYW5MaXRlcmFs
KFdURk1vdmUoKnR5cGUpLCBmYWxzZSkgfTsKLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VS
VCh0eXBlLT50eXBlID09IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgQ09OU1VN
RV9UWVBFKGZ1bGxTdG9wLCBGdWxsU3RvcCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShuZXh0LCBJ
ZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwoeyAqdHlwZSwgKm5leHQgfSwgdHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygp
LCBuZXh0LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpIH07Ci0gICAgfQotICAgIH0K
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZUFyZ3VtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpU
eXBlQXJndW1lbnQsIEVycm9yPgotewotICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICBQRUVLX0ZV
UlRIRVIoZnVydGhlclRva2VuKTsKLSAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpJZGVudGlmaWVyIHx8IGZ1cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6RnVs
bFN0b3ApIHsKLSAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNzaW9uLCBDb25zdGFudEV4cHJl
c3Npb24pOwotICAgICAgICByZXR1cm4gQVNUOjpUeXBlQXJndW1lbnQoV1RGTW92ZSgqY29uc3Rh
bnRFeHByZXNzaW9uKSk7Ci0gICAgfQotICAgIENPTlNVTUVfVFlQRShyZXN1bHQsIElkZW50aWZp
ZXIpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqcmVzdWx0KTsKLSAgICByZXR1cm4gQVNU
OjpUeXBlQXJndW1lbnQoQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sIHJlc3Vs
dC0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBBU1Q6OlR5cGVBcmd1bWVudHMoKSkp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnRzKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpUeXBlQXJndW1lbnRzLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlR5cGVBcmd1bWVudHMgdHlwZUFy
Z3VtZW50czsKLSAgICBhdXRvIGxlc3NUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6Okxl
c3NUaGFuU2lnbik7Ci0gICAgaWYgKCFsZXNzVGhhblNpZ24pCi0gICAgICAgIHJldHVybiB0eXBl
QXJndW1lbnRzOwotCi0gICAgYXV0byBncmVhdGVyVGhhblNpZ24gPSB0cnlUeXBlKFRva2VuOjpU
eXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgIGlmIChncmVhdGVyVGhhblNpZ24pCi0gICAgICAg
IHJldHVybiB0eXBlQXJndW1lbnRzOwotCi0gICAgUEFSU0UodHlwZUFyZ3VtZW50LCBUeXBlQXJn
dW1lbnQpOwotICAgIHR5cGVBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnR5cGVBcmd1bWVudCkp
OwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYXV0byBncmVhdGVyVGhhblNpZ24gPSB0
cnlUeXBlKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgICAgICBpZiAoZ3JlYXRl
clRoYW5TaWduKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQ09OU1VNRV9UWVBFKGNv
bW1hLCBDb21tYSk7Ci0gICAgICAgIFBBUlNFKHR5cGVBcmd1bWVudCwgVHlwZUFyZ3VtZW50KTsK
LSAgICAgICAgdHlwZUFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFyZ3VtZW50KSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZpYXRl
ZCwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlN0YXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpciwK
LSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdG9r
ZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0b2tlbi5lcnJvcigpKTsKLSAgICBp
ZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAg
ICAgIGF1dG8gbnVtRWxlbWVudHMgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwo
KTsKLSAgICAgICAgaWYgKCFudW1FbGVtZW50cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChudW1FbGVtZW50cy5lcnJvcigpKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0
U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7IHsg
KnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgKm51bUVsZW1lbnRzIH19Owot
ICAgIH0KLSAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwgKnRva2VuLCBzdGQ6Om51bGxvcHQgfX07
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+IEV4
cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tl
biA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRT
cXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCh0b2tlbi5lcnJvcigpKTsKLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5
cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAgICAgIGF1dG8gbnVtRWxlbWVudHMgPSBjb25z
dW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICAgICAgaWYgKCFudW1FbGVtZW50
cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChudW1FbGVtZW50cy5lcnJvcigp
KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVC
cmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0
IH0sICp0b2tlbiwgc3RkOjpudWxsb3B0LCAqbnVtRWxlbWVudHMgfX07Ci0gICAgfQotICAgIGF1
dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBl
OjpDb25zdGFudCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkRldmljZSwKLSAgICAgICAgVG9rZW46
OlR5cGU6OlRocmVhZGdyb3VwLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkPigpOwotICAg
IGlmICghYWRkcmVzc1NwYWNlVG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChh
ZGRyZXNzU3BhY2VUb2tlbi5lcnJvcigpKTsKLSAgICBBU1Q6OkFkZHJlc3NTcGFjZSBhZGRyZXNz
U3BhY2U7Ci0gICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkgewotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJl
c3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6
OkRldmljZToKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OkRldmlj
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0g
ICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWRncm91cDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGFkZHJlc3NTcGFjZVRv
a2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpUaHJlYWQpOwotICAgICAgICBhZGRyZXNzU3BhY2Ug
PSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
cmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2UgfSwgc3RkOjpudWxs
b3B0IH19OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gRXhwZWN0ZWQ8UmVmPEFT
VDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGFkZHJlc3NTcGFjZVRva2VuID0g
dHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpDb25zdGFudCwKLSAgICAgICAgVG9rZW46
OlR5cGU6OkRldmljZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6VGhyZWFkPigpOwotCi0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50
aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5cGVBcmd1bWVudHMpOwotCi0gICAg
aWYgKGFkZHJlc3NTcGFjZVRva2VuKSB7Ci0gICAgICAgIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJl
c3NTcGFjZTsKLSAgICAgICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkgewotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICAgICAgICAgIGFkZHJlc3NTcGFj
ZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2Ug
PSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICAgICAgYWRkcmVzc1NwYWNl
ID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlVG9rZW4tPnR5
cGUgPT0gVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgYXV0byBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkID0gWyZdKGNv
bnN0IFR5cGVTdWZmaXhBYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBSZWY8QVNU
OjpVbm5hbWVkVHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAg
ICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqYWRkcmVzc1NwYWNlVG9rZW4sIHR5cGVT
dWZmaXhBYmJyZXZpYXRlZC5sb2NhdGlvbik7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVTdWZm
aXhBYmJyZXZpYXRlZC50b2tlbi50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpTdGFyOgotICAgICAgICAgICAgICAgIHJldHVybiB7IEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0
ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAgICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgotICAgICAgICAgICAgICAg
IHJldHVybiB7IEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobG9jYXRpb24sIGFkZHJl
c3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIEFTU0VSVCh0eXBlU3VmZml4QWJicmV2aWF0ZWQudG9rZW4udHlwZSA9PSBU
b2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgICAgIHJldHVybiB7
IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCAqdHlw
ZVN1ZmZpeEFiYnJldmlhdGVkLm51bUVsZW1lbnRzKSB9OwotICAgICAgICAgICAgfQotICAgICAg
ICB9OwotICAgICAgICBQQVJTRShmaXJzdFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgVHlwZVN1ZmZp
eEFiYnJldmlhdGVkKTsKLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHJlc3VsdCA9IEFT
VDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKFdURk1vdmUoKmFkZHJlc3NTcGFjZVRva2VuKSwgbmFt
ZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1lbnRz
KSk7Ci0gICAgICAgIGF1dG8gbmV4dCA9IGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4QWJicmV2aWF0
ZWQoKmZpcnN0VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAg
ICByZXN1bHQgPSBXVEZNb3ZlKG5leHQpOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICAgICAgUEVFSyhuZXh0VG9rZW4pOwotICAgICAgICAgICAgaWYgKG5leHRUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6U3RhcgotICAgICAgICAgICAgICAgICYmIG5leHRUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAgICAgICAgICAgICAmJiBuZXh0
VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQQVJTRSh0eXBlU3Vm
Zml4QWJicmV2aWF0ZWQsIFR5cGVTdWZmaXhBYmJyZXZpYXRlZCk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogVGhlIG5lc3RpbmcgaGVyZSBtaWdodCBiZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCi0gICAg
ICAgICAgICBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCgqdHlwZVN1
ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgcmVzdWx0ID0g
V1RGTW92ZShuZXh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQp
OwotICAgIH0KLQotICAgIGF1dG8gY29uc3RydWN0VHlwZUZyb21TdWZmaXhOb25BYmJyZXZpYXRl
ZCA9IFsmXShjb25zdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQmIHR5cGVTdWZmaXhOb25BYmJy
ZXZpYXRlZCwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYgcHJldmlvdXMpIC0+IFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqbmFtZSwgdHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkLmxvY2F0aW9uKTsKLSAgICAgICAgc3dpdGNoICh0eXBlU3VmZml4
Tm9uQWJicmV2aWF0ZWQudG9rZW4udHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpT
dGFyOgotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGxvY2F0
aW9uLCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2
aW91cykpIH07Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgot
ICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShsb2Nh
dGlvbiwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5hZGRyZXNzU3BhY2UsIFdURk1vdmUocHJl
dmlvdXMpKSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUKHR5cGVTdWZm
aXhOb25BYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJh
Y2tldCk7Ci0gICAgICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5VHlwZTo6Y3JlYXRlKGxvY2F0
aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5udW1FbGVt
ZW50cykgfTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHJl
c3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKCpuYW1lLCBuYW1lLT5zdHJpbmdWaWV3
KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsKLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgICAgIGlmIChuZXh0VG9r
ZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlN0YXIKLSAgICAgICAgICAgICYmIG5leHRUb2tlbi0+
dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAgICAgICAgICYmIG5l
eHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFBBUlNFKHR5cGVTdWZmaXhOb25BYmJy
ZXZpYXRlZCwgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKTsKLSAgICAgICAgLy8gRklYTUU6IFRo
ZSBuZXN0aW5nIGhlcmUgbWlnaHQgYmUgaW4gdGhlIHdyb25nIG9yZGVyLgotICAgICAgICBhdXRv
IG5leHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVkKCp0eXBlU3VmZml4
Tm9uQWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1v
dmUobmV4dCk7Ci0gICAgfQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZVR5cGVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpUeXBlRGVmaW5p
dGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgVHlwZWRlZik7Ci0gICAg
Q09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIENPTlNVTUVfVFlQRShlcXVhbHMs
IEVxdWFsc1NpZ24pOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQRShz
ZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgcmV0dXJuIEFTVDo6VHlwZURlZmluaXRpb24oeyAq
b3JpZ2luLCAqc2VtaWNvbG9uIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmco
KSwgV1RGTW92ZSgqdHlwZSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VCdWlsdEluU2VtYW50
aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAgYXV0
byBvcmlnaW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTVkluc3RhbmNl
SUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlZlcnRleElELAotICAgICAgICBUb2tlbjo6VHlw
ZTo6UFNpemUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlBvc2l0aW9uLAotICAgICAgICBUb2tl
bjo6VHlwZTo6U1ZJc0Zyb250RmFjZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWU2FtcGxlSW5k
ZXgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpTVlRhcmdldCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWRGVwdGgsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZEaXNwYXRj
aFRocmVhZElELAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cElELAotICAgICAgICBUb2tl
bjo6VHlwZTo6U1ZHcm91cEluZGV4LAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cFRocmVh
ZElEPigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
b3JpZ2luLmVycm9yKCkpOwotCi0gICAgc3dpdGNoIChvcmlnaW4tPnR5cGUpIHsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklu
c3RhbmNlSUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJl
dHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50
aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpQU2l6ZToK
LSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpT
VlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2lu
IH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlvbik7Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJ
blNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNW
SXNGcm9udEZhY2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAg
ICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4KTsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7
ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJh
Z2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVGFyZ2V0OiB7Ci0gICAgICAgIGF1dG8gdGFy
Z2V0ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7IC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA3IE1ha2UgdGhpcyB3b3Jr
IHdpdGggc3RyaW5ncyBsaWtlICJTVl9UYXJnZXQwIi4KLSAgICAgICAgaWYgKCF0YXJnZXQpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodGFyZ2V0LmVycm9yKCkpOwotICAgICAg
ICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNl
bWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQsICp0YXJnZXQpOwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMo
eyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aCk7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVp
bHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWQ292ZXJhZ2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoK
LSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCk7Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cElE
KTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgIHJldHVybiBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVkdyb3VwSW5kZXgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChvcmln
aW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJldHVy
biBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlUmVzb3VyY2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6UmVzb3VyY2VTZW1hbnRpYywg
RXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgUmVnaXN0ZXIpOwotICAgIENPTlNV
TUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBDT05TVU1F
X1RZUEUoaW5mbywgSWRlbnRpZmllcik7Ci0gICAgYXV0byBpbmZvU3RyaW5nVmlldyA9IGluZm8t
PnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgaWYgKGluZm9TdHJpbmdWaWV3Lmxlbmd0aCgpIDwg
MiB8fCAoaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3UnCi0gICAgICAgICYmIGluZm9TdHJpbmdWaWV3
WzBdICE9ICd0JwotICAgICAgICAmJiBpbmZvU3RyaW5nVmlld1swXSAhPSAnYicKLSAgICAgICAg
JiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3MnKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEVycm9yKG1ha2VTdHJpbmcoaW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5nKDAsIDEpLCAiIGlz
IG5vdCBhIGtub3duIHJlc291cmNlIHR5cGUgKCd1JywgJ3QnLCAnYicsIG9yICdzJykiKSkpOwot
Ci0gICAgQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlIG1vZGU7Ci0gICAgc3dpdGNoIChpbmZv
U3RyaW5nVmlld1swXSkgewotICAgIGNhc2UgJ3UnOgotICAgICAgICBtb2RlID0gQVNUOjpSZXNv
dXJjZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OwotICAgICAgICBicmVhazsK
LSAgICBjYXNlICd0JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9k
ZTo6VGV4dHVyZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnYic6Ci0gICAgICAgIG1vZGUg
PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSAncyc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6
OlNhbXBsZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHJlY29nbml6
ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihpbmZvU3RyaW5nVmlldy5zdWJzdHJpbmcoMSkpOwotICAg
IGlmICghaW5kZXgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbmRleC5lcnJvcigp
KTsKLQotICAgIHVuc2lnbmVkIHNwYWNlID0gMDsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlw
ZTo6Q29tbWEpKSB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzcGFjZVRva2VuLCBJZGVudGlmaWVy
KTsKLSAgICAgICAgYXV0byBzcGFjZVRva2VuU3RyaW5nVmlldyA9IHNwYWNlVG9rZW4tPnN0cmlu
Z1ZpZXcobV9sZXhlcik7Ci0gICAgICAgIFN0cmluZ1ZpZXcgcHJlZml4IHsgInNwYWNlIiB9Owot
ICAgICAgICBpZiAoIXNwYWNlVG9rZW5TdHJpbmdWaWV3LnN0YXJ0c1dpdGgocHJlZml4KSkKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTZWNvbmQg
YXJndW1lbnQgdG8gcmVzb3VyY2Ugc2VtYW50aWMgIiwgc3BhY2VUb2tlblN0cmluZ1ZpZXcsICIg
bmVlZHMgYmUgb2YgdGhlIGZvcm0gJ3NwYWNlMCciKSkpOwotICAgICAgICBpZiAoc3BhY2VUb2tl
blN0cmluZ1ZpZXcubGVuZ3RoKCkgPD0gcHJlZml4Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBhcmd1bWVudCB0byBy
ZXNvdXJjZSBzZW1hbnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBuZWVkcyBiZSBvZiB0
aGUgZm9ybSAnc3BhY2UwJyIpKSk7Ci0gICAgICAgIGF1dG8gc3BhY2VWYWx1ZSA9IHJlY29nbml6
ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihzcGFjZVRva2VuU3RyaW5nVmlldy5zdWJzdHJpbmcocHJl
Zml4Lmxlbmd0aCgpKSk7Ci0gICAgICAgIGlmICghc3BhY2VWYWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChzcGFjZVZhbHVlLmVycm9yKCkpOwotICAgICAgICBzcGFjZSA9
ICpzcGFjZVZhbHVlOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lz
LCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6OlJlc291cmNlU2VtYW50aWMo
eyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCBtb2RlLCAqaW5kZXgsIHNwYWNlKTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMsIEVycm9yPgotewot
ICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFNwZWNpYWxpemVkKTsKLSAgICByZXR1cm4gQVNUOjpT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKm9yaWdpbik7Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6U3RhZ2VJbk91dFNl
bWFudGljLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBBdHRyaWJ1dGUpOwot
ICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAg
ICBhdXRvIGluZGV4ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAg
aWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGluZGV4LmVycm9yKCkp
OwotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMp
OwotCi0gICAgcmV0dXJuIEFTVDo6U3RhZ2VJbk91dFNlbWFudGljKHsgKm9yaWdpbiwgKnJpZ2h0
UGFyZW50aGVzaXMgfSwgKmluZGV4KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU2VtYW50aWMo
KSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgotewot
ICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29sb24pKQotICAgICAgICByZXR1cm4geyBu
dWxscHRyIH07Ci0KLSAgICBQRUVLKHRva2VuKTsKLSAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7Ci0gICAgICAgIFBBUlNFKHJlc3Vs
dCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6
OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpTcGVjaWFsaXplZDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlJlZ2lzdGVyOiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291cmNlU2VtYW50aWMpOwot
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3Vs
dCkpIH07Ci0gICAgfQotICAgIGRlZmF1bHQ6ICB7Ci0gICAgICAgIFBBUlNFKHJlc3VsdCwgQnVp
bHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGlj
PihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICB9Ci19Ci1BU1Q6OlF1YWxpZmllcnMg
UGFyc2VyOjpwYXJzZVF1YWxpZmllcnMoKQotewotICAgIEFTVDo6UXVhbGlmaWVycyBxdWFsaWZp
ZXJzOwotICAgIHdoaWxlIChhdXRvIG5leHQgPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpRdWFsaWZp
ZXIpKSB7Ci0gICAgICAgIGF1dG8gbmV4dFN0cmluZ1ZpZXcgPSBuZXh0LT5zdHJpbmdWaWV3KG1f
bGV4ZXIpOwotICAgICAgICBpZiAoIm5vaW50ZXJwb2xhdGlvbiIgPT0gbmV4dFN0cmluZ1ZpZXcp
Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Tm9pbnRlcnBv
bGF0aW9uKTsKLSAgICAgICAgZWxzZSBpZiAoIm5vcGVyc3BlY3RpdmUiID09IG5leHRTdHJpbmdW
aWV3KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6Ok5vcGVy
c3BlY3RpdmUpOwotICAgICAgICBlbHNlIGlmICgidW5pZm9ybSIgPT0gbmV4dFN0cmluZ1ZpZXcp
Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6VW5pZm9ybSk7
Ci0gICAgICAgIGVsc2UgaWYgKCJjZW50cm9pZCIgPT0gbmV4dFN0cmluZ1ZpZXcpCi0gICAgICAg
ICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Q2VudHJvaWQpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCgic2FtcGxlIiA9PSBuZXh0U3RyaW5nVmlldyk7
Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6U2FtcGxlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcXVhbGlmaWVyczsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlU3RydWN0dXJlRWxlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6U3RydWN0dXJlRWxl
bWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgQVNUOjpRdWFsaWZpZXJz
IHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUp
OwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRShzZW1hbnRp
YywgU2VtYW50aWMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0K
LSAgICByZXR1cm4gQVNUOjpTdHJ1Y3R1cmVFbGVtZW50KHsgKm9yaWdpbiwgKnNlbWljb2xvbiB9
LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyht
X2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpzZW1hbnRpYykpOwotfQotCi1hdXRvIFBhcnNl
cjo6cGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBTdHJ1Y3QpOwot
ICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBDT05TVU1FX1RZUEUobGVm
dEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBBU1Q6OlN0cnVjdHVyZUVs
ZW1lbnRzIHN0cnVjdHVyZUVsZW1lbnRzOwotICAgIHdoaWxlICghcGVla1R5cGUoVG9rZW46OlR5
cGU6OlJpZ2h0Q3VybHlCcmFja2V0KSkgewotICAgICAgICBQQVJTRShzdHJ1Y3R1cmVFbGVtZW50
LCBTdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgc3RydWN0dXJlRWxlbWVudHMuYXBwZW5kKFdU
Rk1vdmUoKnN0cnVjdHVyZUVsZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHJpZ2h0Q3VybHlC
cmFja2V0ID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLQotICAgIHJldHVybiBBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24oeyAqb3JpZ2luLCByaWdodEN1cmx5QnJhY2tldCB9LCBuYW1lLT5zdHJp
bmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoc3RydWN0dXJlRWxlbWVudHMpKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCkgLT4gRXhwZWN0
ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQ
RShvcmlnaW4sIEVudW0pOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLQot
ICAgIGF1dG8gdHlwZSA9IChbJl0oKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4s
IEVycm9yPiB7Ci0gICAgICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb2xvbikpIHsKLSAg
ICAgICAgICAgIFBBUlNFKHBhcnNlZFR5cGUsIFR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoKnBhcnNlZFR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IEFTVDo6VHlw
ZVJlZmVyZW5jZTo6Y3JlYXRlKCpvcmlnaW4sICJpbnQiX3N0ciwgQVNUOjpUeXBlQXJndW1lbnRz
KCkpIH07Ci0gICAgfSkoKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCh0eXBlLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRDdXJseUJyYWNr
ZXQsIExlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgaW50NjRfdCBuZXh0VmFsdWUgPSAwOwotICAg
IFBBUlNFKGZpcnN0RW51bWVyYXRpb25NZW1iZXIsIEVudW1lcmF0aW9uTWVtYmVyLCBuZXh0VmFs
dWUpOwotICAgIG5leHRWYWx1ZSA9IGZpcnN0RW51bWVyYXRpb25NZW1iZXItPnZhbHVlKCkgKyAx
OwotCi0gICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24gcmVzdWx0KHsgfSwgbmFtZS0+c3Ry
aW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlKSk7Ci0gICAgYXV0byBz
dWNjZXNzID0gcmVzdWx0LmFkZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9uTWVtYmVyKSk7Ci0g
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVtZXJh
dGlvbiBtZW1iZXIiX3N0cik7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29t
bWEpKSB7Ci0gICAgICAgIFBBUlNFKG1lbWJlciwgRW51bWVyYXRpb25NZW1iZXIsIG5leHRWYWx1
ZSk7Ci0gICAgICAgIG5leHRWYWx1ZSA9IG1lbWJlci0+dmFsdWUoKSArIDE7Ci0gICAgICAgIHN1
Y2Nlc3MgPSByZXN1bHQuYWRkKFdURk1vdmUoKm1lbWJlcikpOwotICAgICAgICBpZiAoIXN1Y2Nl
c3MpCi0gICAgICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVtZXJhdGlvbiBtZW1i
ZXIiX3N0cik7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0Q3VybHlCcmFja2V0LCBS
aWdodEN1cmx5QnJhY2tldCk7Ci0gICAgcmVzdWx0LnVwZGF0ZUNvZGVMb2NhdGlvbih7ICpvcmln
aW4sICpyaWdodEN1cmx5QnJhY2tldH0pOwotCi0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZhdWx0
VmFsdWUpIC0+IEV4cGVjdGVkPEFTVDo6RW51bWVyYXRpb25NZW1iZXIsIEVycm9yPgotewotICAg
IENPTlNVTUVfVFlQRShpZGVudGlmaWVyLCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIG5hbWUgPSBp
ZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0KLSAgICBpZiAodHJ5
VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsKLSAgICAgICAgUEFSU0UoY29uc3RhbnRF
eHByZXNzaW9uLCBDb25zdGFudEV4cHJlc3Npb24pOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4gdmFsdWU7Ci0gICAgICAgIGNvbnN0YW50RXhwcmVzc2lvbi0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAg
ICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZd
KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewot
ICAgICAgICAgICAgdmFsdWUgPSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAg
ICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0ZXJhbCYpIHsKLSAgICAgICAgfSwgWyZdKEFTVDo6Qm9v
bGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYpIHsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoImVudW0gaW5pdGlhbGl6YXRpb24gdmFsdWVz
IGNhbiBvbmx5IGJlIGFuIGludCBvciB1aW50IGNvbnN0YW50LiIpKTsKLSAgICAgICAgcmV0dXJu
IEFTVDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdURk1vdmUobmFtZSksICp2YWx1
ZSk7Ci0gICAgfQotICAgIHJldHVybiBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKCppZGVudGlmaWVy
LCBXVEZNb3ZlKG5hbWUpLCBkZWZhdWx0VmFsdWUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VO
YXRpdmVUeXBlRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTmF0aXZlKTsKLSAgICBD
T05TVU1FX1RZUEUocGFyc2VkVHlwZWRlZiwgVHlwZWRlZik7Ci0gICAgQ09OU1VNRV9UWVBFKG5h
bWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5cGVBcmd1bWVudHMp
OwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0KLSAgICByZXR1cm4g
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24oeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIG5hbWUt
PnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50cykp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoKSAt
PiBFeHBlY3RlZDxBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwgRXJyb3I+Ci17Ci0g
ICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTnVtVGhyZWFkcyk7Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gd2lkdGggPSBjb25z
dW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIXdpZHRoKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQod2lkdGguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZ
UEUoY29tbWEsIENvbW1hKTsKLQotICAgIGF1dG8gaGVpZ2h0ID0gY29uc3VtZU5vbk5lZ2F0aXZl
SW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFoZWlnaHQpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChoZWlnaHQuZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUoc2Vjb25kQ29t
bWEsIENvbW1hKTsKLQotICAgIGF1dG8gZGVwdGggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3Jh
bExpdGVyYWwoKTsKLSAgICBpZiAoIWRlcHRoKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZGVwdGguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywg
UmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCAqd2lkdGgsICpoZWlnaHQs
ICpkZXB0aCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUF0dHJpYnV0ZUJsb2NrKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRTcXVhcmVCcmFja2V0LCBMZWZ0U3F1YXJlQnJhY2tldCk7Ci0KLSAgICBBU1Q6OkF0dHJpYnV0
ZUJsb2NrIHJlc3VsdDsKLQotICAgIHdoaWxlICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRT
cXVhcmVCcmFja2V0KSkgewotICAgICAgICBQQVJTRShudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUsIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
V1RGTW92ZSgqbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUGFyYW1ldGVyKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBhdXRv
IHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIEFTVDo6
UXVhbGlmaWVycyBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7Ci0gICAgUEFSU0UodHlw
ZSwgVHlwZSk7Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAgICBpZiAoYXV0byB0b2tlbiA9IHRyeVR5
cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpKQotICAgICAgICBuYW1lID0gdG9rZW4tPnN0cmlu
Z1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRp
Yyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7
Ci0KLSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCB7IFdU
Rk1vdmUoKnR5cGUpIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUoKnNlbWFudGljKSwgbnVsbHB0
cik7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBhcmFtZXRlcnMoKSAtPiBFeHBlY3RlZDxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zIHBhcmFtZXRlcnM7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBM
ZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0UGFy
ZW50aGVzaXMpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsKLQotICAgIFBB
UlNFKGZpcnN0UGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1h
a2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpmaXJzdFBhcmFt
ZXRlcikpKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAg
ICAgICAgUEFSU0UocGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqcGFy
YW1ldGVyKSkpOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBS
aWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZnVuY3Rpb25EZWNsYXJh
dGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgUEFSU0UoYmxvY2ssIEJsb2NrKTsKLSAg
ICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlZmluaXRpb24oV1RGTW92ZSgqZnVuY3Rpb25EZWNsYXJh
dGlvbiksIFdURk1vdmUoKmJsb2NrKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNvbXB1dGVG
dW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRShhdHRyaWJ1dGVCbG9j
aywgQXR0cmlidXRlQmxvY2spOwotICAgIENPTlNVTUVfVFlQRShjb21wdXRlLCBDb21wdXRlKTsK
LSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmll
cik7Ci0gICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50
aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3Rh
cnRPZmZzZXQoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IGZhbHNlOwotICAgIHJldHVybiBB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKCphdHRyaWJ1dGVCbG9jayksIEFTVDo6
RW50cnlQb2ludFR5cGU6OkNvbXB1dGUsIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3
KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1h
bnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZlcnRl
eE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBhdXRvIGVudHJ5UG9pbnQgPSBjb25zdW1lVHlw
ZXM8VG9rZW46OlR5cGU6OlZlcnRleCwgVG9rZW46OlR5cGU6OkZyYWdtZW50PigpOwotICAgIGlm
ICghZW50cnlQb2ludCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVudHJ5UG9pbnQu
ZXJyb3IoKSk7Ci0gICAgYXV0byBlbnRyeVBvaW50VHlwZSA9IChlbnRyeVBvaW50LT50eXBlID09
IFRva2VuOjpUeXBlOjpWZXJ0ZXgpID8gQVNUOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4IDogQVNU
OjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAg
ICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0UocGFyYW1ldGVycywg
UGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8g
ZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIGJvb2wgaXNP
cGVyYXRvciA9IGZhbHNlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBl
bnRyeVBvaW50LT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkg
fSwgeyB9LCBlbnRyeVBvaW50VHlwZSwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXco
bV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFu
dGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUmVndWxh
ckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUp
OwotCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBlOjpJZGVudGlmaWVy
LCBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lPigpOwotICAgIGlmICghbmFtZSkKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0gICAgYXV0byBpc09wZXJhdG9y
ID0gbmFtZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lOwotCi0gICAgUEFSU0Uo
cGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsK
LQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQot
ICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RG
TW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2Rl
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlT3BlcmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05T
VU1FX1RZUEUob3JpZ2luLCBPcGVyYXRvcik7Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAg
UEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFu
dGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQo
KTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVy
Lm5hbWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgIm9wZXJh
dG9yIGNhc3QiX3N0ciwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwg
aXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWNs
YXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17
Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNhc2Ug
VG9rZW46OlR5cGU6Ok9wZXJhdG9yOgotICAgICAgICByZXR1cm4gcGFyc2VPcGVyYXRvckZ1bmN0
aW9uRGVjbGFyYXRpb24oKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpWZXJ0ZXg6Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBwYXJzZVZlcnRleE9yRnJh
Z21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdFNx
dWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiBwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0
aW9uKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVndWxhckZ1bmN0aW9u
RGVjbGFyYXRpb24oKTsKLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShuYXRpdmUsIE5hdGl2ZSk7Ci0gICAgUEFS
U0UoZnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgQ09OU1VN
RV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oV1RGTW92ZSgqZnVuY3Rpb25EZWNsYXJhdGlvbikpOwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VCbG9jaygpIC0+IEV4cGVjdGVkPEFTVDo6QmxvY2ssIEVycm9yPgot
ewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIExlZnRDdXJseUJyYWNrZXQpOwotICAgIFBBUlNF
KHJlc3VsdCwgQmxvY2tCb2R5KTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRDdXJseUJyYWNrZXQs
IFJpZ2h0Q3VybHlCcmFja2V0KTsKLSAgICByZXN1bHQtPnVwZGF0ZUNvZGVMb2NhdGlvbih7ICpv
cmlnaW4sICpyaWdodEN1cmx5QnJhY2tldCB9KTsKLSAgICByZXR1cm4gV1RGTW92ZSgqcmVzdWx0
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQmxvY2tCb2R5KCkgLT4gRXhwZWN0ZWQ8QVNUOjpC
bG9jaywgRXJyb3I+Ci17Ci0gICAgYXV0byBzdGFydE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0
YXJ0T2Zmc2V0KCk7Ci0KLSAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKLSAgICB3aGls
ZSAoIXBlZWtUeXBlczxUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQsIFRva2VuOjpUeXBl
OjpDYXNlLCBUb2tlbjo6VHlwZTo6RGVmYXVsdD4oKSkgewotICAgICAgICBQQVJTRShzdGF0ZW1l
bnQsIFN0YXRlbWVudCk7Ci0gICAgICAgIHN0YXRlbWVudHMuYXBwZW5kKFdURk1vdmUoKnN0YXRl
bWVudCkpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3Rh
cnRPZmZzZXQoKTsKLQotICAgIHJldHVybiBBU1Q6OkJsb2NrKHsgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHN0YXRlbWVudHMpKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OklmU3RhdGVt
ZW50LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBJZik7Ci0gICAgQ09OU1VN
RV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShjb25k
aXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMs
IFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVNUOjpTdGF0ZW1lbnQ+IGVsc2VCb2R5KG51bGxwdHIpOwotICAgIGlm
ICh0cnlUeXBlKFRva2VuOjpUeXBlOjpFbHNlKSkgewotICAgICAgICBQQVJTRShwYXJzZWRFbHNl
Qm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgZWxzZUJvZHkgPSAoKnBhcnNlZEVsc2VCb2R5KS5t
b3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIu
cGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4+IGNhc3RBcmd1bWVudHM7Ci0gICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgq
Y29uZGl0aW9uYWwpKTsKLSAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihUb2tlbigqb3JpZ2luKSwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJn
dW1lbnRzKSk7Ci0gICAgcmV0dXJuIEFTVDo6SWZTdGF0ZW1lbnQoeyBvcmlnaW4tPnN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKGJvb2xDYXN0
KSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoZWxzZUJvZHkpKTsKLX0KLQotYXV0byBQYXJzZXI6
OnBhcnNlU3dpdGNoU3RhdGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQs
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFN3aXRjaCk7Ci0gICAgQ09OU1VN
RV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRSh2YWx1
ZSwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0
UGFyZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFja2V0LCBMZWZ0Q3Vy
bHlCcmFja2V0KTsKLQotICAgIFZlY3RvcjxBU1Q6OlN3aXRjaENhc2U+IHN3aXRjaENhc2VzOwot
ICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICB3aGlsZSAobmV4dFRva2VuLT50eXBlICE9IFRva2Vu
OjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCkgewotICAgICAgICBQQVJTRShzd2l0Y2hDYXNlLCBT
d2l0Y2hDYXNlKTsKLSAgICAgICAgc3dpdGNoQ2FzZXMuYXBwZW5kKFdURk1vdmUoKnN3aXRjaENh
c2UpKTsKLSAgICAgICAgUEVFSyhuZXh0VG9rZW5Jbkxvb3ApOwotICAgICAgICBuZXh0VG9rZW4g
PSBuZXh0VG9rZW5Jbkxvb3A7Ci0gICAgfQotCi0gICAgYXV0byBlbmRUb2tlbiA9IG1fbGV4ZXIu
Y29uc3VtZVRva2VuKCk7Ci0KLSAgICByZXR1cm4gQVNUOjpTd2l0Y2hTdGF0ZW1lbnQoeyAqb3Jp
Z2luLCBlbmRUb2tlbiB9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1vdmUoc3dpdGNoQ2FzZXMpKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoQ2FzZSgpIC0+IEV4cGVjdGVkPEFTVDo6U3dp
dGNoQ2FzZSwgRXJyb3I+Ci17Ci0gICAgYXV0byBvcmlnaW4gPSBjb25zdW1lVHlwZXM8VG9rZW46
OlR5cGU6OkNhc2UsIFRva2VuOjpUeXBlOjpEZWZhdWx0PigpOwotICAgIGlmICghb3JpZ2luKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQob3JpZ2luLmVycm9yKCkpOwotCi0gICAgc3dp
dGNoIChvcmlnaW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpDYXNlOiB7Ci0gICAg
ICAgIFBBUlNFKHZhbHVlLCBDb25zdGFudEV4cHJlc3Npb24pOwotICAgICAgICBDT05TVU1FX1RZ
UEUoY29sb24sIENvbG9uKTsKLQotICAgICAgICBQQVJTRShibG9jaywgQmxvY2tCb2R5KTsKLQot
ICAgICAgICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9jYXRpb24sICBi
bG9jay0+Y29kZUxvY2F0aW9uKCl9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1vdmUoKmJsb2NrKSk7
Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKG9yaWdpbi0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShjb2xvbiwgQ29sb24p
OwotCi0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAgICAgIHJldHVybiBB
U1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2RlTG9jYXRp
b24oKX0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqYmxvY2spKTsKLSAgICB9Ci0gICAgfQotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VGb3JMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBF
cnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBGb3IpOwotICAgIENPTlNVTUVfVFlQ
RShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBhdXRvIHBhcnNlUmVt
YWluZGVyID0gWyZdKFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4mJiBpbml0aWFsaXphdGlvbikg
LT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4gewotICAgICAgICBDT05TVU1FX1RZUEUo
c2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4
cHJlc3Npb24+IGNvbmRpdGlvbihudWxscHRyKTsKLSAgICAgICAgaWYgKCF0cnlUeXBlKFRva2Vu
OjpUeXBlOjpTZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBleHByZXNzaW9uID0g
cGFyc2VFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAgY29uZGl0aW9uID0gKCpleHByZXNz
aW9uKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLSAgICAgICAgICAg
IENPTlNVTUVfVFlQRShzZWNvbmRTZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBpbmNyZW1lbnQobnVsbHB0
cik7Ci0gICAgICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcykp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKSkK
LSAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAoKmV4cHJlc3Npb24pLm1vdmVUb1VuaXF1ZVB0
cigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0
UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgUEFS
U0UoYm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9yaWdp
bi0+Y29kZUxvY2F0aW9uLCAoKmJvZHkpLT5jb2RlTG9jYXRpb24oKSk7Ci0gICAgICAgIHJldHVy
biBBU1Q6OkZvckxvb3AobG9jYXRpb24sIFdURk1vdmUoaW5pdGlhbGl6YXRpb24pLCBXVEZNb3Zl
KGNvbmRpdGlvbiksIFdURk1vdmUoaW5jcmVtZW50KSwgV1RGTW92ZSgqYm9keSkpOwotICAgIH07
Ci0KLSAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb25zID0gYmFja3RyYWNraW5nU2NvcGU8RXhw
ZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+PihbJl0oKSB7
Ci0gICAgICAgIHJldHVybiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7Ci0gICAgfSk7Ci0g
ICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb25zKSB7Ci0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlN0
YXRlbWVudD4gZGVjbGFyYXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb25zKSk7
Ci0gICAgICAgIHJldHVybiBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKGRlY2xhcmF0aW9uU3RhdGVt
ZW50KSk7Ci0gICAgfQotCi0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lvbiwgRWZmZWN0ZnVs
RXhwcmVzc2lvbik7Ci0KLSAgICByZXR1cm4gcGFyc2VSZW1haW5kZXIoV1RGTW92ZSgqZWZmZWN0
ZnVsRXhwcmVzc2lvbikpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VXaGlsZUxvb3AoKSAtPiBF
eHBlY3RlZDxBU1Q6OldoaWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdp
biwgV2hpbGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRo
ZXNpcyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVf
VFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShib2R5
LCBTdGF0ZW1lbnQpOwotCi0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9yaWdpbi0+Y29kZUxv
Y2F0aW9uLCAgKCpib2R5KS0+Y29kZUxvY2F0aW9uKCkpOwotICAgIHJldHVybiBBU1Q6OldoaWxl
TG9vcChsb2NhdGlvbiwgV1RGTW92ZSgqY29uZGl0aW9uYWwpLCBXVEZNb3ZlKCpib2R5KSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZURvV2hpbGVMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpEb1do
aWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgRG8pOwotICAgIFBB
UlNFKGJvZHksIFN0YXRlbWVudCk7Ci0gICAgQ09OU1VNRV9UWVBFKHdoaWxlS2V5d29yZCwgV2hp
bGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7
Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQRShy
aWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDT05TVU1FX1RZUEUoc2Vt
aWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6RG9XaGlsZUxvb3AoeyAqb3Jp
Z2luLCAqc2VtaWNvbG9ufSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoKmNvbmRpdGlvbmFsKSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oUmVmPEFTVDo6VW5u
YW1lZFR5cGU+JiYgdHlwZSkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uLCBF
cnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBhdXRvIHF1YWxpZmllcnMgPSBwYXJz
ZVF1YWxpZmllcnMoKTsKLQotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAg
ICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6
RXhwcmVzc2lvbj4gaW5pdGlhbGl6ZXIgPSBudWxscHRyOwotICAgIGlmICh0cnlUeXBlKFRva2Vu
OjpUeXBlOjpFcXVhbHNTaWduKSkgewotICAgICAgICBQQVJTRShpbml0aWFsaXppbmdFeHByZXNz
aW9uLCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGluaXRpYWxpemVyID0g
aW5pdGlhbGl6aW5nRXhwcmVzc2lvbi52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAgIH0K
LQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLSAg
ICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShxdWFsaWZpZXJzKSwg
eyBXVEZNb3ZlKHR5cGUpIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwg
V1RGTW92ZSgqc2VtYW50aWMpLCBXVEZNb3ZlKGluaXRpYWxpemVyKSk7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0g
ICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBhdXRvIGZpcnN0VmFyaWFibGVEZWNsYXJhdGlv
biA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlLT5jb3B5UmVmKCkpOwotICAgIGlmICgh
Zmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Zmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uLmVycm9yKCkpOwotCi0gICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCht
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqZmlyc3RWYXJp
YWJsZURlY2xhcmF0aW9uKSkpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNv
bW1hKSkgewotICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBwYXJzZVZhcmlhYmxl
RGVjbGFyYXRpb24odHlwZS0+Y29weVJlZigpKTsKLSAgICAgICAgaWYgKCF2YXJpYWJsZURlY2xh
cmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhcmlhYmxlRGVjbGFy
YXRpb24uZXJyb3IoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb24pKSk7Ci0g
ICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgp
OwotICAgIHJldHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KHsgb3JpZ2lu
LT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92
ZShyZXN1bHQpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3RhdGVtZW50KCkgLT4gRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAgUEVFSyh0b2tlbik7
Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkxlZnRD
dXJseUJyYWNrZXQ6IHsKLSAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrKTsKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJsb2NrPihXVEZNb3ZlKCpibG9jaykpIH07Ci0gICAg
fQotICAgIGNhc2UgVG9rZW46OlR5cGU6OklmOiB7Ci0gICAgICAgIFBBUlNFKGlmU3RhdGVtZW50
LCBJZlN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpJZlN0
YXRlbWVudD4oV1RGTW92ZSgqaWZTdGF0ZW1lbnQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpTd2l0Y2g6IHsKLSAgICAgICAgUEFSU0Uoc3dpdGNoU3RhdGVtZW50LCBTd2l0Y2hT
dGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6U3dpdGNoU3Rh
dGVtZW50PihXVEZNb3ZlKCpzd2l0Y2hTdGF0ZW1lbnQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpGb3I6IHsKLSAgICAgICAgUEFSU0UoZm9yTG9vcCwgRm9yTG9vcCk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpGb3JMb29wPihXVEZNb3ZlKCpmb3JMb29w
KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6V2hpbGU6IHsKLSAgICAgICAgUEFS
U0Uod2hpbGVMb29wLCBXaGlsZUxvb3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6V2hpbGVMb29wPihXVEZNb3ZlKCp3aGlsZUxvb3ApKSB9OwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpEbzogewotICAgICAgICBQQVJTRShkb1doaWxlTG9vcCwgRG9XaGlsZUxv
b3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RG9XaGlsZUxvb3A+KFdU
Rk1vdmUoKmRvV2hpbGVMb29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QnJl
YWs6IHsKLSAgICAgICAgYXV0byBicmVha1Rva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsK
LSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0
byBicmVha09iamVjdCA9IEFTVDo6QnJlYWsoV1RGTW92ZShicmVha1Rva2VuKSk7Ci0gICAgICAg
IHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCcmVhaz4oV1RGTW92ZShicmVha09iamVjdCkp
IH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNvbnRpbnVlOiB7Ci0gICAgICAgIGF1
dG8gY29udGludWVUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENPTlNV
TUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gY29udGludWVPYmpl
Y3QgPSBBU1Q6OkNvbnRpbnVlKFdURk1vdmUoY29udGludWVUb2tlbikpOwotICAgICAgICByZXR1
cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q29udGludWU+KFdURk1vdmUoY29udGludWVPYmplY3Qp
KSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxsdGhyb3VnaDogewotICAgICAg
ICBhdXRvIGZhbGx0aHJvdWdoVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAg
ICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGZhbGx0
aHJvdWdoT2JqZWN0ID0gQVNUOjpGYWxsdGhyb3VnaChXVEZNb3ZlKGZhbGx0aHJvdWdoVG9rZW4p
KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZhbGx0aHJvdWdoPihXVEZN
b3ZlKGZhbGx0aHJvdWdoT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
UmV0dXJuOiB7Ci0gICAgICAgIGF1dG8gcmV0dXJuVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tl
bigpOwotICAgICAgICBpZiAoYXV0byBzZW1pY29sb24gPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpT
ZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBhdXRvIHJldHVybk9iamVjdCA9IEFTVDo6UmV0dXJu
KFdURk1vdmUocmV0dXJuVG9rZW4pLCBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpSZXR1cm4+KFdURk1vdmUocmV0dXJuT2JqZWN0KSkgfTsKLSAgICAg
ICAgfQotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBFeHByZXNzaW9uKTsKLSAgICAgICAgQ09O
U1VNRV9UWVBFKGZpbmFsU2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIHJldHVy
bk9iamVjdCA9IEFTVDo6UmV0dXJuKFdURk1vdmUocmV0dXJuVG9rZW4pLCAoKmV4cHJlc3Npb24p
Lm1vdmVUb1VuaXF1ZVB0cigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6
OlJldHVybj4oV1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpDb25zdGFudDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFk
OiB7Ci0gICAgICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJpYWJsZURlY2xhcmF0
aW9ucyk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOiB7Ci0gICAgICAgIFBFRUtfRlVSVEhFUihuZXh0VG9r
ZW4pOwotICAgICAgICBzd2l0Y2ggKG5leHRUb2tlbi0+dHlwZSkgewotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpJZGVudGlmaWVyOgotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhh
blNpZ246Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OlF1YWxpZmllcjogewotICAgICAgICAgICAgUEFSU0UodmFyaWFibGVEZWNsYXJh
dGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShz
ZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVj
bGFyYXRpb25zKSkgfTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBlZmZlY3RmdWxFeHBy
ZXNzaW9uID0gYmFja3RyYWNraW5nU2NvcGU8RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVt
ZW50PiwgRXJyb3I+PihbJl0oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+
LCBFcnJvcj4gewotICAgICAgICAgICAgUEFSU0UocmVzdWx0LCBFZmZlY3RmdWxFeHByZXNzaW9u
KTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKGVmZmVjdGZ1
bEV4cHJlc3Npb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqZWZmZWN0ZnVsRXhwcmVz
c2lvbik7Ci0gICAgfQotCi0gICAgUEFSU0UodmFyaWFibGVEZWNsYXJhdGlvbnMsIFZhcmlhYmxl
RGVjbGFyYXRpb25zKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwot
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotfQotCi1hdXRvIFBhcnNl
cjo6cGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6
U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotICAgIGlmIChvcmlnaW4t
PnR5cGUgPT0gVG9rZW46OlR5cGU6OlNlbWljb2xvbikKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZVJlZjxBU1Q6OkJsb2NrPigqb3JpZ2luLCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RhdGVt
ZW50Pj4oKSkgfTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhw
cmVzc2lvbnM7Ci0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lvbiwgRWZmZWN0ZnVsQXNzaWdu
bWVudCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmVmZmVjdGZ1bEV4cHJlc3Np
b24pKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAg
ICAgUEFSU0UoZXhwcmVzc2lvbiwgRWZmZWN0ZnVsQXNzaWdubWVudCk7Ci0gICAgICAgIGV4cHJl
c3Npb25zLmFwcGVuZChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgaWYgKGV4
cHJlc3Npb25zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFT
VDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShleHByZXNzaW9uc1swXSkp
IH07Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQo
KTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRP
ZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkpOwotICAgIGF1dG8gY29tbWFFeHByZXNzaW9uID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoZXhw
cmVzc2lvbnMpKTsKLSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShjb21tYUV4cHJlc3Npb24pKSB9OwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VFZmZlY3RmdWxBc3NpZ25tZW50KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIGJv
b2wgaXNFZmZlY3RmdWwgPSBmYWxzZTsKLSAgICBQQVJTRShleHByZXNzaW9uLCBQb3NzaWJsZVBy
ZWZpeCwgJmlzRWZmZWN0ZnVsKTsKLQotICAgIGlmICghaXNFZmZlY3RmdWwgfHwgcGVla1R5cGVz
PAotICAgICAgICBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c0VxdWFscywKLSAgICAgICAg
VG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1
YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kRXF1YWxzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1
YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzCi0gICAgPigpKSB7Ci0g
ICAgICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwot
ICAgIH0KLQotICAgIHJldHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VM
aW1pdGVkU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91
cykgLT4gU3VmZml4RXhwcmVzc2lvbgotewotICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OkZ1bGxTdG9wLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXJy
b3csCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldD4oKTsKLSAgICBpZiAo
IXR5cGUpCi0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMp
LCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpGdWxsU3RvcDogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShU
b2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKLSAgICAg
ICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7
Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCks
ICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1
ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgaWRl
bnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAgfQot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OkFycm93OiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFpZGVu
dGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2
aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5j
b2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVz
c2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIG1ha2VVbmlx
dWVSZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZp
b3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRydWUp
OwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBlLT50eXBlID09IFRv
a2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9
IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAg
ICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAg
ICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJyYWNrZXQgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlw
ZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewotICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0gICAg
ICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6SW5kZXhF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKmV4cHJlc3Np
b24pKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24o
V1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBhcnNl
cjo6cGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZp
b3VzKSAtPiBTdWZmaXhFeHByZXNzaW9uCi17Ci0gICAgYXV0byBzdWZmaXggPSBjb25zdW1lVHlw
ZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpGdWxsU3RvcCwKLSAgICAgICAgVG9rZW46OlR5cGU6
OkFycm93LAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpQbHVzUGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzTWludXM+
KCk7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdU
Rk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHN1ZmZpeC0+dHlwZSkgewot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxTdG9wOiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShw
cmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3Vz
LT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1v
dmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkp
LCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXJyb3c6IHsKLSAgICAgICAg
YXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwot
ICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVz
c2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9j
YXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihs
b2NhdGlvbiwgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oV1RGTW92
ZSgqc3VmZml4KSwgV1RGTW92ZShwcmV2aW91cykpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1f
bGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
TGVmdFNxdWFyZUJyYWNrZXQ6IHsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgIHJldHVybiBT
dWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIGlmIChh
dXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNx
dWFyZUJyYWNrZXQpKSB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlv
dXMtPmNvZGVMb2NhdGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Npb24+
KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikpLCB0cnVl
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHBy
ZXZpb3VzKSwgZmFsc2UpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czog
ewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigp
LCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAg
ICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwot
ICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNl
KCkpOwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihy
ZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgIEFTU0VSVChzdWZmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXMpOwot
ICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAq
c3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAg
ICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkp
OwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZXN1
bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVz
c2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZUV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZmlyc3QsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlv
bmFsKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25z
OwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gKCpmaXJzdCktPmNvZGVMb2NhdGlvbigpLnN0
YXJ0T2Zmc2V0KCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmZpcnN0KSk7Ci0K
LSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNF
KGV4cHJlc3Npb24sIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAgZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBpZiAoZXhw
cmVzc2lvbnMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKGV4cHJlc3Npb25z
WzBdKTsKLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7
Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fbGV4
ZXIubmFtZVNwYWNlKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDb21tYUV4
cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSkgfTsKLX0KLQotYXV0byBQ
YXJzZXI6OmNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+JiYgcHJlZGljYXRlKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKHF1ZXN0aW9uTWFyaywgUXVlc3Rpb25NYXJrKTsK
LSAgICBQQVJTRShib2R5RXhwcmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBF
KGNvbG9uLCBDb2xvbik7Ci0gICAgUEFSU0UoZWxzZUV4cHJlc3Npb24sIFBvc3NpYmxlVGVybmFy
eUNvbmRpdGlvbmFsKTsKLQotICAgIENvZGVMb2NhdGlvbiBwcmVkaWNhdGVMb2NhdGlvbiA9IHBy
ZWRpY2F0ZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBjYXN0QXJndW1lbnRzOwotICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
cHJlZGljYXRlKSk7Ci0gICAgYXV0byBib29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4ocHJlZGljYXRlTG9jYXRpb24sICJib29sIl9zdHIsIFdURk1vdmUoY2FzdEFy
Z3VtZW50cykpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmVkaWNhdGVMb2NhdGlvbiwg
KCplbHNlRXhwcmVzc2lvbiktPmNvZGVMb2NhdGlvbigpKTsKLSAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGJvb2xDYXN0
KSwgV1RGTW92ZSgqYm9keUV4cHJlc3Npb24pLCBXVEZNb3ZlKCplbHNlRXhwcmVzc2lvbikpIH07
Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZUFzc2lnbm1lbnQoVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4mJiBsZWZ0KSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgYXV0byBhc3NpZ25tZW50T3BlcmF0b3IgPSBjb25zdW1lVHlwZXM8Ci0g
ICAgICAgIFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1
c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpY
b3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHM+KCk7Ci0gICAgaWYgKCFhc3Np
Z25tZW50T3BlcmF0b3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhc3NpZ25tZW50
T3BlcmF0b3IuZXJyb3IoKSk7Ci0KLSAgICBQQVJTRShyaWdodCwgUG9zc2libGVUZXJuYXJ5Q29u
ZGl0aW9uYWwpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbiA9IHsgbGVmdC0+Y29kZUxvY2F0
aW9uKCksICgqcmlnaHQpLT5jb2RlTG9jYXRpb24oKSB9OwotCi0gICAgaWYgKGFzc2lnbm1lbnRP
cGVyYXRvci0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikKLSAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZShsZWZ0KSwgV1RGTW92ZSgqcmlnaHQpKX07Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAgICBz
d2l0Y2ggKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlBsdXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IrIl9zdHI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzOgotICAgICAgICBuYW1lID0g
Im9wZXJhdG9yLSJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpU
aW1lc0VxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcioiX3N0cjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzOgotICAgICAgICBuYW1lID0g
Im9wZXJhdG9yLyJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpN
b2RFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IlIl9zdHI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlhvckVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVy
YXRvcl4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QW5kRXF1
YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yJiJfc3RyOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpPckVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcnwi
X3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVx
dWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcj4+Il9zdHI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhc3NpZ25tZW50T3BlcmF0b3ItPnR5cGUgPT0g
VG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscyk7Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3I8
PCJfc3RyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92
ZShsZWZ0KSk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJn
dW1lbnRzOwotICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZl
cmVuY2UoKSk7Ci0gICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqcmlnaHQpKTsKLSAg
ICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4
cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMp
KSk7Ci0gICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3VmFyaWFibGVS
ZWZlcmVuY2UoKSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCkgLT4gRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKGV4cHJlc3Npb24s
IFBvc3NpYmxlUHJlZml4KTsKLQotICAgIGlmIChwZWVrVHlwZXM8VG9rZW46OlR5cGU6OkVxdWFs
c1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6
VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaW1lc0VxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1v
ZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywKLSAgICAgICAgVG9rZW46
OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Okxl
ZnRTaGlmdEVxdWFscz4oKSkgewotICAgICAgICByZXR1cm4gY29tcGxldGVBc3NpZ25tZW50KFdU
Rk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQ
b3NzaWJsZVNoaWZ0KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0g
ICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVNdWx0aXBseShXVEZNb3ZlKCpleHByZXNz
aW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3Np
YmxlQWRkKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgZXhw
cmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFdURk1v
dmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgZXhwcmVzc2lvbiA9IGNv
bXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKmV4cHJlc3Npb24p
KTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChl
eHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgUEVFSyhuZXh0VG9rZW4pOwotICAgIGlmIChuZXh0
VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlF1ZXN0aW9uTWFyaykKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBy
ZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVMb2dpY2Fs
QmluYXJ5T3BlcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZVJlbGF0aW9uYWxC
aW5hcnlPcGVyYXRpb24pOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFy
eU9wZXJhdGlvbihXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6
Y29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIGxvZ2ljYWxCaW5hcnlPcGVyYXRpb24gPSB0
cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yT3IsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpBbmRBbmQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpPciwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlhvciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZAotICAgICAgICA+KCkpIHsKLSAgICAgICAg
UEFSU0UobmV4dCwgUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKTsKLSAgICAgICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+
Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIHN3aXRjaCAobG9naWNhbEJpbmFyeU9wZXJhdGlv
bi0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPck9yOgotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGxvY2F0aW9u
LCBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpPciwgV1RGTW92ZShwcmV2aW91cyksIFdU
Rk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpU
eXBlOjpBbmRBbmQ6Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpM
b2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6
OkFuZCwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPcjogewotICAgICAgICAgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgY2Fs
bEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlvdXMg
PSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3J8
Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6WG9yOiB7Ci0gICAgICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAgICBj
YWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2aW91
cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRv
cl4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NFUlQobG9naWNhbEJp
bmFyeU9wZXJhdGlvbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6QW5kKTsKLSAgICAgICAgICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAg
ICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZp
b3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yJiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHByZXZp
b3VzKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlP
cGVyYXRpb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlU2hpZnQpOwotICAgIHJldHVy
biBjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpwYXJz
ZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZVJlbGF0aW9u
YWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykg
LT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdo
aWxlIChhdXRvIHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24gPSB0cnlUeXBlczwKLSAgICAgICAg
VG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6OkdyZWF0ZXJU
aGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAgIFRva2VuOjpUeXBl
OjpFcXVhbENvbXBhcmlzb24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpOb3RFcXVhbAotICAgICAg
ICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVTaGlmdCk7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNv
ZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
cHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkp
OwotCi0gICAgICAgIHN3aXRjaCAocmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbi0+dHlwZSkgewot
ICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ246IHsKLSAgICAgICAgICAgIHBy
ZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9w
ZXJhdG9yPCJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbjog
ewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Np
b24+KGxvY2F0aW9uLCAib3BlcmF0b3I+Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
TGVzc1RoYW5PckVxdWFsVG86IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPD0iX3N0ciwgV1RGTW92
ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbzogewotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3I+PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFyaXNv
bjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAg
ICAgICAgICAgIEFTU0VSVChyZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50eXBlID09IFRva2Vu
OjpUeXBlOjpOb3RFcXVhbCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVNo
aWZ0KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewot
ICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZUFkZCk7Ci0gICAgcmV0dXJuIGNvbXBs
ZXRlUG9zc2libGVTaGlmdChXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBh
cnNlcjo6Y29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYg
cHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4K
LXsKLSAgICB3aGlsZSAoYXV0byBzaGlmdCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlw
ZTo6TGVmdFNoaWZ0LAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdAotICAgICAgICA+
KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVBZGQpOwotICAgICAgICBDb2RlTG9j
YXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9j
YXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBj
YWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZp
b3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLQot
ICAgICAgICBzd2l0Y2ggKHNoaWZ0LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OkxlZnRTaGlmdDogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8PCJfc3RyLCBXVEZNb3ZlKGNhbGxB
cmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1
bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChzaGlmdC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6Umln
aHRTaGlmdCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj4+Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3Vt
ZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
UG9zc2libGVBZGQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJy
b3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlTXVsdGlwbHkpOwotICAg
IHJldHVybiBjb21wbGV0ZVBvc3NpYmxlQWRkKFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlQWRkKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBhZGQgPSB0cnlUeXBlczwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlBsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51cwotICAgICAgICA+KCkp
IHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVNdWx0aXBseSk7Ci0gICAgICAgIENvZGVM
b2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVM
b2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+
IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJl
dmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwot
Ci0gICAgICAgIHN3aXRjaCAoYWRkLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OlBsdXM6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVu
dHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsK
LSAgICAgICAgICAgIEFTU0VSVChhZGQtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1pbnVzKTsKLSAg
ICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihs
b2NhdGlvbiwgIm9wZXJhdG9yLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlTXVsdGlw
bHkoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0g
ICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlUHJlZml4KTsKLSAgICByZXR1cm4gY29t
cGxldGVQb3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoVW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIG11bHRpcGx5ID0gdHJ5VHlwZXM8Ci0gICAgICAg
IFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRlLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6TW9kCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0LCBQ
b3NzaWJsZVByZWZpeCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+
Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3Vt
ZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRjaCAobXVsdGlwbHkt
PnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjogewotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3IqIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2aWRlOiB7Ci0gICAg
ICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9j
YXRpb24sICJvcGVyYXRvci8iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBB
U1NFUlQobXVsdGlwbHktPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1vZCk7Ci0gICAgICAgICAgICBw
cmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvciUiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFdURk1vdmUocHJl
dmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVByZWZpeChib29sICppc0Vm
ZmVjdGZ1bCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgot
ewotICAgIGlmIChhdXRvIHByZWZpeCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6
UGx1c1BsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c01pbnVzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6VGlsZGUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpFeGNsYW1hdGlvblBvaW50LAot
ICAgICAgICBUb2tlbjo6VHlwZTo6QW5kLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXQsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpTdGFyCi0gICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBv
c3NpYmxlUHJlZml4KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpwcmVmaXgsICgq
bmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBzd2l0Y2ggKHByZWZpeC0+dHlwZSkg
ewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czogewotICAgICAgICAgICAgaWYg
KGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAg
ICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNU
OjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2Fs
bEFyZ3VtZW50cykpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihy
ZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZShyZXN1bHQpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TWlu
dXNNaW51czogewotICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgICAg
ICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgq
bmV4dCkpOwotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBj
YWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5v
bGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVF
eHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICAgICAgICAgIHJl
c3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkp
OwotICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1czogewotICAgICAgICAgICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFy
Z3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFr
ZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKyJfc3Ry
LCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6Ok1pbnVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVu
ZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItIl9zdHIsIFdURk1vdmUoY2Fs
bEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6VGls
ZGU6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2Fs
bEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5l
eHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVz
c2lvbj4obG9jYXRpb24sICJvcGVyYXRvcn4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkg
fTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpFeGNsYW1hdGlvblBvaW50
OiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhc3RB
cmd1bWVudHM7Ci0gICAgICAgICAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0
KSk7Ci0gICAgICAgICAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihsb2NhdGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJndW1lbnRzKSk7
Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGJvb2xDYXN0KSkgfTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpBbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCks
IEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXMpIH07Ci0gICAgICAgIGNhc2UgVG9rZW46
OlR5cGU6OkF0OgotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSwgQVNUOjpB
ZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlcykgfTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIEFTU0VSVChwcmVmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlN0YXIpOwotICAgICAgICAg
ICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4obG9j
YXRpb24sIFdURk1vdmUoKm5leHQpKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IHBhcnNlUG9zc2libGVTdWZmaXgoaXNFZmZlY3RmdWwpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VQb3NzaWJsZVN1ZmZpeChib29sICppc0VmZmVjdGZ1bCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4pOwotICAgIFBFRUtf
RlVSVEhFUihuZXh0VG9rZW4pOwotCi0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpUeXBl
OjpJZGVudGlmaWVyICYmIG5leHRUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBhcmVu
dGhlc2lzKSB7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIENhbGxFeHByZXNzaW9uKTsKLSAg
ICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsK
LSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIFBFRUsoc3VmZml4VG9rZW4pOwot
ICAgICAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpGdWxsU3Rv
cCAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6QXJyb3cgJiYgc3VmZml4VG9r
ZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZUxpbWl0ZWRTdWZmaXhP
cGVyYXRvcihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBleHByZXNzaW9uID0g
V1RGTW92ZShyZXN1bHQucmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhwcmVz
c2lvbjsKLSAgICB9Ci0KLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRQ
YXJlbnRoZXNpcyAmJiBpc0VmZmVjdGZ1bCkKLSAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsK
LQotICAgIFBBUlNFKGV4cHJlc3Npb24sIFRlcm0pOwotICAgIGJvb2wgaXNMYXN0U3VmZml4VG9r
ZW5FZmZlY3RmdWwgPSBmYWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBQRUVLKHN1
ZmZpeFRva2VuKTsKLSAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBl
OjpGdWxsU3RvcAotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5
cGU6OkFycm93Ci0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQKLSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBlICE9
IFRva2VuOjpUeXBlOjpQbHVzUGx1cwotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUg
IT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXMpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGlzTGFzdFN1ZmZpeFRva2VuRWZmZWN0ZnVsID0gc3VmZml4VG9rZW4tPnR5
cGUgPT0gVG9rZW46OlR5cGU6OlBsdXNQbHVzIHx8IHN1ZmZpeFRva2VuLT50eXBlID09IFRva2Vu
OjpUeXBlOjpNaW51c01pbnVzOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlU3VmZml4T3Bl
cmF0b3IoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgICAgICBleHByZXNzaW9uID0gV1RGTW92
ZShyZXN1bHQucmVzdWx0KTsKLSAgICB9Ci0gICAgaWYgKGlzTGFzdFN1ZmZpeFRva2VuRWZmZWN0
ZnVsICYmIGlzRWZmZWN0ZnVsKQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgIHJl
dHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDYWxsRXhwcmVzc2lvbigp
IC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBD
T05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgYXV0byBjYWxsTmFtZSA9IG5hbWUt
PnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIENPTlNVTUVfVFlQRShsZWZ0
UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4+IGFyZ3VtZW50czsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6
UmlnaHRQYXJlbnRoZXNpcykpCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4oV1RGTW92ZSgqbmFtZSksIFdURk1vdmUoY2FsbE5hbWUpLCBXVEZNb3Zl
KGFyZ3VtZW50cykpIH07Ci0KLSAgICBQQVJTRShmaXJzdEFyZ3VtZW50LCBQb3NzaWJsZVRlcm5h
cnlDb25kaXRpb25hbCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpmaXJzdEFyZ3Vt
ZW50KSk7Ci0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAg
ICBQQVJTRShhcmd1bWVudCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmFyZ3VtZW50KSk7Ci0gICAgfQotCi0gICAgQ09OU1VN
RV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIENvZGVMb2Nh
dGlvbiBsb2NhdGlvbigqbmFtZSwgKnJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIHsg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShjYWxs
TmFtZSksIFdURk1vdmUoYXJndW1lbnRzKSkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVGVy
bSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAg
ICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpJbnRMaXRl
cmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6VWludExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpGbG9hdExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpOdWxsLAotICAgICAgICBU
b2tlbjo6VHlwZTo6VHJ1ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZhbHNlLAotICAgICAgICBU
b2tlbjo6VHlwZTo6SWRlbnRpZmllciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRQYXJlbnRo
ZXNpcz4oKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0
eXBlLmVycm9yKCkpOwotCi0gICAgc3dpdGNoICh0eXBlLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gaW50TGl0ZXJhbFRv
SW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6SW50ZWdlckxpdGVyYWw+KCp0eXBlLCAqdmFsdWUp
IH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsOiB7Ci0gICAgICAg
IGF1dG8gdmFsdWUgPSB1aW50TGl0ZXJhbFRvVWludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIp
KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw+KCp0eXBlLCAqdmFsdWUpIH07Ci0gICAgfQotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gZmxvYXRM
aXRlcmFsVG9GbG9hdCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsK
LSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZsb2F0TGl0ZXJhbD4oKnR5cGUs
ICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TnVsbDoKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCInbnVsbCcgaXMgYSByZXNlcnZlZCBrZXl3b3Jk
LiIsIHR5cGUtPmNvZGVMb2NhdGlvbikpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRydWU6Ci0g
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0ZXJhbD4oKnR5cGUs
IHRydWUpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmFsc2U6Ci0gICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0ZXJhbD4oKnR5cGUsIGZhbHNlKSB9OwotICAg
IGNhc2UgVG9rZW46OlR5cGU6OklkZW50aWZpZXI6IHsKLSAgICAgICAgYXV0byBuYW1lID0gdHlw
ZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KCp0eXBlLCBXVEZNb3ZlKG5hbWUpKSB9
OwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBlLT50eXBlID09IFRv
a2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpOwotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBF
eHByZXNzaW9uKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0
UGFyZW50aGVzaXMpOwotCi0gICAgICAgIHJldHVybiB7IFdURk1vdmUoKmV4cHJlc3Npb24pIH07
Ci0gICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZWVhMzI2ZGI0NzQ3N2U2ZTllMzM2OTYzMzdiNmU2NWQz
MTc3NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUg
IldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
YXJzaW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IHBhcnNlKFByb2dyYW0mLCBTdHJpbmdWaWV3LCBQYXJzaW5nTW9kZSwg
QVNUOjpOYW1lU3BhY2UpOwotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90
IG5lZWQgdGhpcwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTgzNTcKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGJhY2t0cmFja2luZ1Njb3BlKHN0
ZDo6ZnVuY3Rpb248VCgpPiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGF1dG8gc3RhdGUgPSBt
X2xleGVyLnN0YXRlKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsbGJhY2soKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIG1fbGV4
ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotICAgIGVudW0gY2xhc3MgVHJ5VG9QZWVrIHsKLSAgICAgICAgWWVzLAotICAgICAgICBO
bwotICAgIH07Ci0gICAgVW5leHBlY3RlZDxFcnJvcj4gZmFpbChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFRyeVRvUGVlayA9IFRyeVRvUGVlazo6WWVzKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJy
b3I+IHBlZWsoKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IHBlZWtGdXJ0aGVyKCk7Ci0g
ICAgYm9vbCBwZWVrVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRva2VuOjpUeXBl
Li4uIHR5cGVzPgotICAgIGJvb2wgcGVla1R5cGVzKCk7Ci0gICAgc3RkOjpvcHRpb25hbDxUb2tl
bj4gdHJ5VHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5
cGVzPgotICAgIHN0ZDo6b3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVzKCk7Ci0gICAgRXhwZWN0ZWQ8
VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRv
a2VuOjpUeXBlLi4uIHR5cGVzPgotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gY29uc3VtZVR5
cGVzKCk7Ci0KLSAgICBFeHBlY3RlZDxWYXJpYW50PGludCwgdW5zaWduZWQ+LCBFcnJvcj4gY29u
c3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4gY29u
c3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpDb25z
dGFudEV4cHJlc3Npb24sIEVycm9yPiBwYXJzZUNvbnN0YW50RXhwcmVzc2lvbigpOwotICAgIEV4
cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50LCBFcnJvcj4gcGFyc2VUeXBlQXJndW1lbnQoKTsKLSAg
ICBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPiBwYXJzZVR5cGVBcmd1bWVudHMo
KTsKLSAgICBzdHJ1Y3QgVHlwZVN1ZmZpeEFiYnJldmlhdGVkIHsKLSAgICAgICAgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uOwotICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7Ci0gICAgfTsKLSAgICBFeHBlY3RlZDxUeXBlU3VmZml4
QWJicmV2aWF0ZWQsIEVycm9yPiBwYXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgpOwotICAgIHN0
cnVjdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQgewotICAgICAgICBDb2RlTG9jYXRpb24gbG9j
YXRpb247Ci0gICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPEFTVDo6
QWRkcmVzc1NwYWNlPiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IG51bUVsZW1lbnRzOwotICAgIH07Ci0gICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJl
dmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKTsKLSAgICBFeHBl
Y3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZUFkZHJlc3NTcGFjZVR5cGUo
KTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZU5vbkFk
ZHJlc3NTcGFjZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVy
cm9yPiBwYXJzZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZpbml0aW9uLCBFcnJv
cj4gcGFyc2VUeXBlRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6QnVpbHRJblNlbWFu
dGljLCBFcnJvcj4gcGFyc2VCdWlsdEluU2VtYW50aWMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlJl
c291cmNlU2VtYW50aWMsIEVycm9yPiBwYXJzZVJlc291cmNlU2VtYW50aWMoKTsKLSAgICBFeHBl
Y3RlZDxBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+IHBhcnNlU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTdGFnZUlu
T3V0U2VtYW50aWMsIEVycm9yPiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpOwotICAgIEV4cGVj
dGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+IHBhcnNlU2VtYW50aWMo
KTsKLSAgICBBU1Q6OlF1YWxpZmllcnMgcGFyc2VRdWFsaWZpZXJzKCk7Ci0gICAgRXhwZWN0ZWQ8
QVNUOjpTdHJ1Y3R1cmVFbGVtZW50LCBFcnJvcj4gcGFyc2VTdHJ1Y3R1cmVFbGVtZW50KCk7Ci0g
ICAgRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VTdHJ1Y3R1
cmVEZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24s
IEVycm9yPiBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6
RW51bWVyYXRpb25NZW1iZXIsIEVycm9yPiBwYXJzZUVudW1lcmF0aW9uTWVtYmVyKGludDY0X3Qg
ZGVmYXVsdFZhbHVlKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwg
RXJyb3I+IHBhcnNlTmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUsIEVycm9yPiBwYXJzZU51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSgpOwotICAgIEV4cGVjdGVkPEFTVDo6QXR0cmlidXRlQmxvY2ssIEVycm9yPiBw
YXJzZUF0dHJpYnV0ZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXIoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAgRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VDb21wdXRlRnVuY3Rpb25EZWNsYXJh
dGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+IHBh
cnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVJlZ3VsYXJGdW5jdGlvbkRlY2xh
cmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4g
cGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAg
ICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlRnVuY3Rpb25E
ZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LCBFcnJvcj4gcGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0KLSAgICBFeHBlY3Rl
ZDxBU1Q6OkJsb2NrLCBFcnJvcj4gcGFyc2VCbG9jaygpOwotICAgIEV4cGVjdGVkPEFTVDo6Qmxv
Y2ssIEVycm9yPiBwYXJzZUJsb2NrQm9keSgpOwotICAgIEV4cGVjdGVkPEFTVDo6SWZTdGF0ZW1l
bnQsIEVycm9yPiBwYXJzZUlmU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hT
dGF0ZW1lbnQsIEVycm9yPiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpOwotICAgIEV4cGVjdGVkPEFT
VDo6U3dpdGNoQ2FzZSwgRXJyb3I+IHBhcnNlU3dpdGNoQ2FzZSgpOwotICAgIEV4cGVjdGVkPEFT
VDo6Rm9yTG9vcCwgRXJyb3I+IHBhcnNlRm9yTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6V2hp
bGVMb29wLCBFcnJvcj4gcGFyc2VXaGlsZUxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkRvV2hp
bGVMb29wLCBFcnJvcj4gcGFyc2VEb1doaWxlTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihSZWY8QVNU
OjpVbm5hbWVkVHlwZT4mJik7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMoKTsKLSAgICBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4gcGFyc2VTdGF0ZW1lbnQoKTsK
LQotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiBwYXJzZUVm
ZmVjdGZ1bEV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiwgRXJyb3I+IHBhcnNlRWZmZWN0ZnVsQXNzaWdubWVudCgpOwotICAgIHN0cnVjdCBTdWZm
aXhFeHByZXNzaW9uIHsKLSAgICAgICAgU3VmZml4RXhwcmVzc2lvbihVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiYmIHJlc3VsdCwgYm9vbCBzdWNjZXNzKQotICAgICAgICAgICAgOiByZXN1bHQo
V1RGTW92ZShyZXN1bHQpKQotICAgICAgICAgICAgLCBzdWNjZXNzKHN1Y2Nlc3MpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+IHJlc3Vs
dDsKLSAgICAgICAgYm9vbCBzdWNjZXNzOwotICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gc3VjY2VzczsgfQotICAgIH07Ci0gICAgU3VmZml4RXhwcmVzc2lvbiBwYXJzZUxp
bWl0ZWRTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmKTsKLSAgICBT
dWZmaXhFeHByZXNzaW9uIHBhcnNlU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4mJik7Ci0KLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJy
b3I+IHBhcnNlRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCgpOwotICAgIEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVUZXJuYXJ5
Q29uZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUpOwotICAg
IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVBc3Np
Z25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgbGVmdCk7Ci0gICAgRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlTG9naWNhbEJp
bmFyeU9wZXJhdGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJh
dGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4g
Y29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlU2hpZnQoKTsKLSAgICBFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2libGVTaGlmdChVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVBZGQoKTsKLSAgICBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2libGVB
ZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlTXVsdGlwbHko
KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBs
ZXRlUG9zc2libGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3Vz
KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNl
UG9zc2libGVQcmVmaXgoYm9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsKLSAgICBFeHBlY3Rl
ZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVTdWZmaXgo
Ym9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3Rl
ZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlVGVybSgpOwotCi0gICAg
TGV4ZXIgbV9sZXhlcjsKLSAgICBQYXJzaW5nTW9kZSBtX21vZGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJkZjA3Mzc2Y2Y4ZDQwZWM3YmE4YzBjYTM3MDcyMzQwZDQ2MjAxZDMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWVudW0g
Y2xhc3MgUGFyc2luZ01vZGUgOiB1aW50OF90IHsKLSAgICBTdGFuZGFyZExpYnJhcnksCi0gICAg
VXNlcgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlw
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNzA1OTg4MGQ1M2RlY2E4YjY0
MjRmZTI2MDU1ZmVhMGNlZWZiMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBl
bGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotZW51bSBjbGFzcyBWZXJ0ZXhGb3JtYXQgOiB1aW50OF90IHsKLSAgICBGbG9hdFIzMkcz
MkIzMkEzMiwKLSAgICBGbG9hdFIzMkczMkIzMiwKLSAgICBGbG9hdFIzMkczMiwKLSAgICBGbG9h
dFIzMgotfTsKLQotc3RydWN0IFZlcnRleEF0dHJpYnV0ZSB7Ci0gICAgVmVydGV4Rm9ybWF0IHZl
cnRleEZvcm1hdDsKLSAgICB1bnNpZ25lZCBzaGFkZXJMb2NhdGlvbjsKLSAgICB1bnNpZ25lZCBt
ZXRhbExvY2F0aW9uOwotfTsKLQotdXNpbmcgVmVydGV4QXR0cmlidXRlcyA9IFZlY3RvcjxWZXJ0
ZXhBdHRyaWJ1dGU+OwotCi0vLyBGSVhNRTogQWRkIGJhY2sgPCAzMiBiaXQgdGV4dHVyZSB2YWx1
ZXMgYW5kIGZpZ3VyZSBvdXQgaG93IHRvIGJveCB0aGVtIGluIHdpZGVyIHR5cGVzIHdoZW4gd2Ug
bG9hZCBmcm9tIHRoZW0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwMzE1Ci0KLWVudW0gY2xhc3MgVGV4dHVyZUZvcm1hdCB7Ci0gICAgUjhVbm9ybSwKLSAg
ICBSOFVub3JtU3JnYiwKLSAgICBSOFNub3JtLAotICAgIFIxNlVub3JtLAotICAgIFIxNlNub3Jt
LAotICAgIFIxNkZsb2F0LAotICAgIFJHOFVub3JtLAotICAgIFJHOFVub3JtU3JnYiwKLSAgICBS
RzhTbm9ybSwKLSAgICBCNUc2UjVVbm9ybSwKLSAgICBSMzJVaW50LAotICAgIFIzMlNpbnQsCi0g
ICAgUjMyRmxvYXQsCi0gICAgUkcxNlVub3JtLAotICAgIFJHMTZTbm9ybSwKLSAgICBSRzE2Rmxv
YXQsCi0gICAgUkdCQThVbm9ybSwKLSAgICBSR0JBOFVub3JtU3JnYiwKLSAgICBSR0JBOFNub3Jt
LAotICAgIEJHUkE4VW5vcm0sCi0gICAgQkdSQThVbm9ybVNyZ2IsCi0gICAgUkdCMTBBMlVub3Jt
LAotICAgIFJHMTFCMTBGbG9hdCwKLSAgICBSRzMyVWludCwKLSAgICBSRzMyU2ludCwKLSAgICBS
RzMyRmxvYXQsCi0gICAgUkdCQTE2VW5vcm0sCi0gICAgUkdCQTE2U25vcm0sCi0gICAgUkdCQTE2
RmxvYXQsCi0gICAgUkdCQTMyVWludCwKLSAgICBSR0JBMzJTaW50LAotICAgIFJHQkEzMkZsb2F0
Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdDsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotc3RydWN0IEF0dGFjaG1l
bnRzU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8QXR0YWNobWVudERlc2NyaXB0b3I+IGF0
dGFjaG1lbnREZXNjcmlwdG9yczsKLSAgICBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlw
dG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKLX07Ci0KLWVudW0gY2xhc3Mg
U2hhZGVyU3RhZ2UgOiB1aW50OF90IHsKLSAgICBOb25lID0gMCwKLSAgICBWZXJ0ZXggPSAxIDw8
IDAsCi0gICAgRnJhZ21lbnQgPSAxIDw8IDEsCi0gICAgQ29tcHV0ZSA9IDEgPDwgMgotfTsKLQot
c3RydWN0IFVuaWZvcm1CdWZmZXJCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBsZW5ndGhOYW1lOwot
fTsKLQotc3RydWN0IFNhbXBsZXJCaW5kaW5nIHsKLX07Ci0KLXN0cnVjdCBUZXh0dXJlQmluZGlu
ZyB7Ci19OwotCi1zdHJ1Y3QgU3RvcmFnZUJ1ZmZlckJpbmRpbmcgewotICAgIHVuc2lnbmVkIGxl
bmd0aE5hbWU7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE2OCBBZGQgdGhlIGR5bmFtaWMgdHlwZXMKLQotc3RydWN0IEJpbmRpbmcg
ewotICAgIHVzaW5nIEJpbmRpbmdEZXRhaWxzID0gVmFyaWFudDxVbmlmb3JtQnVmZmVyQmluZGlu
ZywgU2FtcGxlckJpbmRpbmcsIFRleHR1cmVCaW5kaW5nLCBTdG9yYWdlQnVmZmVyQmluZGluZz47
Ci0gICAgT3B0aW9uU2V0PFNoYWRlclN0YWdlPiB2aXNpYmlsaXR5OwotICAgIEJpbmRpbmdEZXRh
aWxzIGJpbmRpbmc7Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxOYW1lOwotICAgIHVuc2lnbmVkIGV4
dGVybmFsTmFtZTsKLX07Ci0KLXN0cnVjdCBCaW5kR3JvdXAgewotICAgIFZlY3RvcjxCaW5kaW5n
PiBiaW5kaW5nczsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotdXNpbmcgTGF5b3V0ID0gVmVj
dG9yPEJpbmRHcm91cD47Ci0KLXN0cnVjdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgewotICAg
IFZlcnRleEF0dHJpYnV0ZXMgdmVydGV4QXR0cmlidXRlczsKLSAgICBBdHRhY2htZW50c1N0YXRl
RGVzY3JpcHRvciBhdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvcjsKLSAgICBMYXlvdXQgbGF5b3V0
OwotICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBTdHJpbmcgZnJhZ21lbnRF
bnRyeVBvaW50TmFtZTsKLX07Ci0KLXN0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsK
LSAgICBMYXlvdXQgbGF5b3V0OwotICAgIFN0cmluZyBlbnRyeVBvaW50TmFtZTsKLX07Ci0KLXVz
aW5nIFBpcGVsaW5lRGVzY3JpcHRvciA9IFZhcmlhbnQ8UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPjsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cmVwYXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmM1Y2FjNDNjOTU5YTNl
NzE4ZDBhMGI0OGViYzFjNGU0YjgzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cmVwYXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1REdW1wZXIuaCIKLSNpbmNs
dWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVj
a1JlZmVyZW5jZVR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2Vz
LmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGlt
ZW5zaW9ucy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCIKLSNpbmNs
dWRlICJXSExTTEhpZ2hab21iaWVGaW5kZXIuaCIKLSNpbmNsdWRlICJXSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2lu
Y2x1ZGUgIldITFNMUGFyc2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlm
ZXRpbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9w
ZXJ0eVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpb25DaGVja2VyLmgiCi0j
aW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMU2Vt
YW50aWNNYXRjaGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIgotI2luY2x1ZGUg
IldITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oIgotI2luY2x1ZGUgIldITFNMU3ludGhlc2l6
ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3QgU2hh
ZGVyTW9kdWxlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQotICAg
IFNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmIHdobHNsU291cmNlKQotICAgICAgICA6IHdobHNs
U291cmNlKHdobHNsU291cmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmcgd2hsc2xTb3Vy
Y2U7Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXZvaWQgZGVmYXVsdF9kZWxl
dGU8V2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZT46Om9wZXJhdG9yKCkoV2ViQ29yZTo6V0hM
U0w6OlNoYWRlck1vZHVsZSogc2hhZGVyTW9kdWxlKSBjb25zdAotewotICAgIGRlbGV0ZSBzaGFk
ZXJNb2R1bGU7Ci19Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEJlZm9yZUVhY2hQYXNzID0gZmFs
c2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZyA9IGZhbHNlOwot
c3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IGZhbHNlOwotc3RhdGljIGNvbnN0
ZXhwciBib29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSBmYWxzZTsKLXN0YXRpYyBjb25zdGV4
cHIgYm9vbCBkdW1wUGFzc0ZhaWx1cmUgPSBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgfHwgZHVtcEFT
VEFmdGVyUGFyc2luZyB8fCBkdW1wQVNUQXRFbmQgfHwgYWx3YXlzRHVtcFBhc3NGYWlsdXJlczsK
LXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGhhc2VUaW1lcyA9IGZhbHNlOwotCi1zdGF0aWMg
Y29uc3RleHByIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5ID0gZmFsc2U7Ci0KLXN0YXRp
YyBib29sIGR1bXBBU1RJZk5lZWRlZChib29sIHNob3VsZER1bXAsIFByb2dyYW0mIHByb2dyYW0s
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgaWYgKHNob3VsZER1bXApIHsKLSAgICAgICAg
ZGF0YUxvZ0xuKG1lc3NhZ2UpOwotICAgICAgICBkdW1wQVNUKHByb2dyYW0pOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29s
IGR1bXBBU1RBZnRlclBhcnNpbmdJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIHJl
dHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEFmdGVyUGFyc2luZywgcHJvZ3JhbSwgIkFTVCBh
ZnRlciBwYXJzaW5nIik7Ci19Ci0KLXN0YXRpYyBib29sIGR1bXBBU1RCZXR3ZWVuRWFjaFBhc3NJ
Zk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAgIHJl
dHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEJlZm9yZUVhY2hQYXNzLCBwcm9ncmFtLCBtZXNz
YWdlKTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEF0RW5kSWZOZWVkZWQoUHJvZ3JhbSYgcHJv
Z3JhbSkKLXsKLSAgICByZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1bXBBU1RBdEVuZCwgcHJvZ3Jh
bSwgIkFTVCBhdCBlbmQiKTsKLX0KLQotdXNpbmcgUGhhc2VUaW1lcyA9IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTZWNvbmRzPj47Ci0KLXN0YXRpYyB2b2lkIGxvZ1BoYXNlVGltZXMoUGhhc2VU
aW1lcyYgcGhhc2VUaW1lcykKLXsKLSAgICBpZiAoIWR1bXBQaGFzZVRpbWVzKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogcGhhc2VUaW1lcykKLSAgICAgICAgZGF0
YUxvZ0xuKGVudHJ5LmZpcnN0LCAiOiAiLCBlbnRyeS5zZWNvbmQubWlsbGlzZWNvbmRzKCksICIg
bXMiKTsKLX0KLQotY2xhc3MgUGhhc2VUaW1lciB7Ci1wdWJsaWM6Ci0gICAgUGhhc2VUaW1lcihj
b25zdCBjaGFyKiBwaGFzZU5hbWUsIFBoYXNlVGltZXMmIHBoYXNlVGltZXMpCi0gICAgICAgIDog
bV9waGFzZVRpbWVzKHBoYXNlVGltZXMpCi0gICAgewotICAgICAgICBpZiAoZHVtcFBoYXNlVGlt
ZXMpIHsKLSAgICAgICAgICAgIG1fcGhhc2VOYW1lID0gcGhhc2VOYW1lOwotICAgICAgICAgICAg
bV9zdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
flBoYXNlVGltZXIoKQotICAgIHsKLSAgICAgICAgaWYgKGR1bXBQaGFzZVRpbWVzKSB7Ci0gICAg
ICAgICAgICBhdXRvIHRvdGFsVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydDsK
LSAgICAgICAgICAgIG1fcGhhc2VUaW1lcy5hcHBlbmQoeyBtX3BoYXNlTmFtZSwgdG90YWxUaW1l
IH0pOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3BoYXNlTmFt
ZTsKLSAgICBQaGFzZVRpbWVzJiBtX3BoYXNlVGltZXM7Ci0gICAgTW9ub3RvbmljVGltZSBtX3N0
YXJ0OwotfTsKLQotVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNv
bnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpCi17Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4NzIgV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmlu
ZyBhcyBtdWNoIHdvcmsgZnJvbSBwcmVwYXJlKCkgaW50byBoZXJlIGFzIHBvc3NpYmxlLgotICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4od2hsc2xTb3VyY2UpOwotfQotCi0j
ZGVmaW5lIENIRUNLX1BBU1MocGFzcywgLi4uKSBcCi0gICAgZG8geyBcCi0gICAgICAgIGR1bXBB
U1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGJlZm9yZSAiICMgcGFzcyk7
IFwKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCNwYXNzLCBwaGFzZVRpbWVzKTsgXAot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHBhc3MoX19WQV9BUkdTX18pOyBcCi0gICAgICAgIGlmICgh
cmVzdWx0KSB7IFwKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUpIFwKLSAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCBwYXNzOiAiICMgcGFzcywgTGV4ZXI6OmVycm9yU3Ry
aW5nKHJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOyBcCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHJlc3VsdC5l
cnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOyBcCi0gICAgICAgIH0gXAotICAg
IH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgUlVOX1BBU1MocGFzcywgLi4uKSBcCi0gICAgZG8geyBc
Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigjcGFzcywgcGhhc2VUaW1lcyk7IFwKLSAg
ICAgICAgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYmVmb3Jl
ICIgIyBwYXNzKTsgXAotICAgICAgICBwYXNzKF9fVkFfQVJHU19fKTsgXAotICAgIH0gd2hpbGUg
KDApCi0KLXN0YXRpYyBFeHBlY3RlZDxQcm9ncmFtLCBTdHJpbmc+IHByZXBhcmVTaGFyZWQoUGhh
c2VUaW1lcyYgcGhhc2VUaW1lcywgY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZTEsIGNvbnN0IFN0
cmluZyogd2hsc2xTb3VyY2UyID0gbnVsbHB0cikKLXsKLSAgICBQcm9ncmFtIHByb2dyYW07Ci0g
ICAgUGFyc2VyIHBhcnNlcjsKLQotICAgIHsKLSAgICAgICAgcHJvZ3JhbS5uYW1lQ29udGV4dCgp
LnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotCi0gICAg
ICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicGFyc2UiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAg
YXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCB3aGxzbFNvdXJjZTEsIFBh
cnNpbmdNb2RlOjpVc2VyLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgICAgIGlm
ICghcGFyc2VSZXN1bHQpIHsKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUpCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgdG8gcGFyc2UgdGhlIHByb2dyYW06ICIsIExl
eGVyOjplcnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNs
U291cmNlMikpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJv
clN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikp
OwotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGxzbFNvdXJjZTIpIHsKLSAgICAgICAgICAgIHBy
b2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlOjpO
YW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2Uo
cHJvZ3JhbSwgKndobHNsU291cmNlMiwgUGFyc2luZ01vZGU6OlVzZXIsIEFTVDo6TmFtZVNwYWNl
OjpOYW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VSZXN1bHQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oImZhaWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6OmVycm9yU3RyaW5nKHBh
cnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhwYXJzZVJl
c3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50TmFt
ZVNwYWNlKEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5Iiwg
cGhhc2VUaW1lcyk7Ci0gICAgICAgIGluY2x1ZGVTdGFuZGFyZExpYnJhcnkocHJvZ3JhbSwgcGFy
c2VyLCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpOwotICAgIH0KLQotICAgIGlmICghZHVtcEFT
VEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYWZ0ZXIgcGFyc2luZyIpKQot
ICAgICAgICBkdW1wQVNUQWZ0ZXJQYXJzaW5nSWZOZWVkZWQocHJvZ3JhbSk7Ci0KLSAgICBOYW1l
UmVzb2x2ZXIgbmFtZVJlc29sdmVyKHByb2dyYW0ubmFtZUNvbnRleHQoKSk7Ci0gICAgQ0hFQ0tf
UEFTUyhyZXNvbHZlTmFtZXNJblR5cGVzLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwotICAgIENI
RUNLX1BBU1MoY2hlY2tSZWN1cnNpdmVUeXBlcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhz
eW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1Mo
cmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwotICAg
IENIRUNLX1BBU1Moc3ludGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tf
UEFTUyhjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0KLSAgICBDSEVDS19QQVNT
KGNoZWNrLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLCBwcm9ncmFtKTsKLQotICAgIFJVTl9QQVNTKGNoZWNrTGl0ZXJhbFR5
cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMsIHBy
b2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWZlcmVuY2VUeXBlcywgcHJvZ3JhbSk7Ci0g
ICAgUlVOX1BBU1MocmVzb2x2ZVByb3BlcnRpZXMsIHByb2dyYW0pOwotICAgIFJVTl9QQVNTKGZp
bmRIaWdoWm9tYmllcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1N0YXRlbWVudEJl
aGF2aW9yLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrUmVjdXJzaW9uLCBwcm9ncmFt
KTsKLSAgICBDSEVDS19QQVNTKGNoZWNrRnVuY3Rpb25TdGFnZXMsIHByb2dyYW0pOwotICAgIFJV
Tl9QQVNTKHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMsIHByb2dyYW0pOwotCi0gICAgZHVtcEFT
VEF0RW5kSWZOZWVkZWQocHJvZ3JhbSk7Ci0KLSAgICByZXR1cm4gcHJvZ3JhbTsKLX0KLQotRXhw
ZWN0ZWQ8UmVuZGVyUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRlck1v
ZHVsZSYgdmVydGV4U2hhZGVyTW9kdWxlLCBjb25zdCBTaGFkZXJNb2R1bGUqIGZyYWdtZW50U2hh
ZGVyTW9kdWxlLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcikKLXsKLSAgICBQaGFzZVRpbWVzIHBoYXNlVGltZXM7Ci0gICAgTWV0YWw6OlJlbmRlck1l
dGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotCi0gICAgewotICAgICAgICBQaGFzZVRpbWVyIHBoYXNl
VGltZXIoInByZXBhcmUgdG90YWwiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgY29uc3QgU3RyaW5n
KiBzZWNvbmRTaGFkZXIgPSBudWxscHRyOwotICAgICAgICBib29sIGRpc3RpbmN0RnJhZ21lbnRT
aGFkZXIgPSBmYWxzZTsKLSAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyTW9kdWxlICYmIGZyYWdt
ZW50U2hhZGVyTW9kdWxlICE9ICZ2ZXJ0ZXhTaGFkZXJNb2R1bGUpIHsKLSAgICAgICAgICAgIHNl
Y29uZFNoYWRlciA9ICZmcmFnbWVudFNoYWRlck1vZHVsZS0+d2hsc2xTb3VyY2U7Ci0gICAgICAg
ICAgICBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBh
dXRvIHByb2dyYW0gPSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHZlcnRleFNoYWRlck1vZHVs
ZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVyKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7Ci0KLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaGVkU2VtYW50aWNz
OwotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoIm1hdGNoU2Vt
YW50aWNzIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2VtYW50aWNzID0gbWF0
Y2hTZW1hbnRpY3MoKnByb2dyYW0sIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgZGlzdGluY3RG
cmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJNb2R1bGUpOwotICAgICAgICAgICAgaWYgKCFt
YXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChM
ZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBzZW1hbnRpY3MiX3N0ciks
IHZlcnRleFNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVyKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImdlbmVy
YXRlTWV0YWxDb2RlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBnZW5lcmF0ZWRDb2RlID0g
TWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlKCpwcm9ncmFtLCBXVEZNb3ZlKCptYXRjaGVkU2VtYW50
aWNzKSwgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0gICAgUmVuZGVyUHJlcGFyZVJl
c3VsdCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92ZShnZW5lcmF0ZWRD
b2RlLm1ldGFsU291cmNlKTsKLSAgICByZXN1bHQubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1l
ID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSk7Ci0g
ICAgcmVzdWx0Lm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lID0gV1RGTW92ZShnZW5lcmF0
ZWRDb2RlLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1FeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNv
bnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
JiBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKQotewotICAgIFBoYXNlVGltZXMgcGhhc2VUaW1l
czsKLSAgICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotICAgIHN0ZDo6
b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgewot
ICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoInByZXBhcmUgdG90YWwiLCBwaGFzZVRpbWVz
KTsKLSAgICAgICAgYXV0byBwcm9ncmFtID0gcHJlcGFyZVNoYXJlZChwaGFzZVRpbWVzLCBzaGFk
ZXJNb2R1bGUud2hsc2xTb3VyY2UpOwotICAgICAgICBpZiAoIXByb2dyYW0pCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQotICAgICAgICBzdGQ6
Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaGVkU2VtYW50aWNzOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoIm1hdGNoU2VtYW50aWNz
IiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2VtYW50aWNzID0gbWF0Y2hTZW1h
bnRpY3MoKnByb2dyYW0sIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotICAgICAgICAgICAg
aWYgKCFtYXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBzZW1hbnRpY3Mi
X3N0ciksIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJjb21wdXRlRGltZW5zaW9ucyIs
IHBoYXNlVGltZXMpOwotICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSBXSExTTDo6Y29t
cHV0ZURpbWVuc2lvbnMoKnByb2dyYW0sICptYXRjaGVkU2VtYW50aWNzLT5zaGFkZXIpOwotICAg
ICAgICAgICAgaWYgKCFjb21wdXRlRGltZW5zaW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yKCJDb3VsZCBub3QgbWF0Y2gg
Y29tcHV0ZSBkaW1lbnNpb25zIl9zdHIpLCBzaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigi
Z2VuZXJhdGVNZXRhbENvZGUiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIGdlbmVyYXRlZENv
ZGUgPSBNZXRhbDo6Z2VuZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1vdmUoKm1hdGNoZWRT
ZW1hbnRpY3MpLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0gICAgQ29tcHV0ZVBy
ZXBhcmVSZXN1bHQgcmVzdWx0OwotICAgIHJlc3VsdC5tZXRhbFNvdXJjZSA9IFdURk1vdmUoZ2Vu
ZXJhdGVkQ29kZS5tZXRhbFNvdXJjZSk7Ci0gICAgcmVzdWx0Lm1hbmdsZWRFbnRyeVBvaW50TmFt
ZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tYW5nbGVkRW50cnlQb2ludE5hbWUpOwotICAgIHJl
c3VsdC5jb21wdXRlRGltZW5zaW9ucyA9IFdURk1vdmUoKmNvbXB1dGVEaW1lbnNpb25zKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDMzOWFiYjk0M2U4ZDhjYTgzZmY0ZjQxOTgzM2Iy
Mzg3NmNhNDNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2lu
Y2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8vIEhpZGUgdGhlIGNvbnRl
bnRzIG9mIHRoZSBTaGFkZXJNb2R1bGUuIENsaWVudHMgb2YgdGhlIGNvbXBpbGVyIHNob3VsZG4n
dCBjYXJlIHdoYXQncyBpbnNpZGUgaXQuCi1zdHJ1Y3QgU2hhZGVyTW9kdWxlOwotCi19Ci0KLX0K
LQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRlZmF1bHRfZGVsZXRlPFdl
YkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoV2ViQ29y
ZTo6V0hMU0w6OlNoYWRlck1vZHVsZSopIGNvbnN0OwotfTsKLQotfQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBib29sIGR1bXBNZXRhbENv
bXBpbGVUaW1lcyA9IGZhbHNlOwotCi1VbmlxdWVSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFk
ZXJNb2R1bGUoY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZSk7Ci0KLXN0cnVjdCBSZW5kZXJQcmVw
YXJlUmVzdWx0IHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1ldGFsOjpN
YW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBNZXRh
bDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZTsKLX07
Ci1FeHBlY3RlZDxSZW5kZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hh
ZGVyTW9kdWxlJiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGNvbnN0IFNoYWRlck1vZHVsZSogZnJhZ21l
bnRTaGFkZXJNb2R1bGUsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi1zdHJ1Y3QgQ29t
cHV0ZURpbWVuc2lvbnMgewotICAgIHVuc2lnbmVkIHdpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdo
dDsKLSAgICB1bnNpZ25lZCBkZXB0aDsKLX07Ci0KLXN0cnVjdCBDb21wdXRlUHJlcGFyZVJlc3Vs
dCB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6TWFuZ2xlZEZ1
bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci0gICAgQ29tcHV0ZURpbWVuc2lvbnMg
Y29tcHV0ZURpbWVuc2lvbnM7Ci19OwotRXhwZWN0ZWQ8Q29tcHV0ZVByZXBhcmVSZXN1bHQsIFN0
cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1l
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZl
VmFyaWFibGVMaWZldGltZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODlk
MDdkODA4ODY0NGVmYWQ0NDUzNGE5MDZiM2E1NjMzYzQ5MDczLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xBU1RE
dW1wZXIuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFt
LmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8vIFRo
aXMgcGFzcyB3b3JrcyBieSBlbnN1cmluZyBwcm9wZXIgdmFyaWFibGUgbGlmZXRpbWVzLiBJbiBX
SExTTCwgZWFjaCB2YXJpYWJsZQotLy8gaGFzIGdsb2JhbCBsaWZldGltZS4gU28gcmV0dXJuaW5n
IGEgcG9pbnRlciB0byBhIGxvY2FsIHZhcmlhYmxlIGlzIGEgdG90YWxseQotLy8gbGVnaXRpbWF0
ZSBhbmQgd2VsbC1zcGVjaWZpZWQgdGhpbmcgdG8gZG8uCi0vLwotLy8gV2UgaW1wbGVtZW50IHRo
aXMgYnk6Ci0vLyAtIFdlIG5vdGUgZXZlcnkgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyB3ZSB0YWtl
LgotLy8gLSBFYWNoIHN1Y2ggdmFyaWFibGUgZ2V0cyBkZWZpbmVkIGFzIGEgZmllbGQgaW4gYSBz
dHJ1Y3QuCi0vLyAtIEVhY2ggZnVuY3Rpb24gd2hpY2ggaXMgYW4gZW50cnkgcG9pbnQgZGVmaW5l
cyB0aGlzIHN0cnVjdC4KLS8vIC0gRWFjaCBub24gZW50cnkgcG9pbnQgdGFrZXMgYSBwb2ludGVy
IHRvIHRoaXMgc3RydWN0IGFzIGl0cyBmaW5hbCBwYXJhbWV0ZXIuCi0vLyAtIEVhY2ggY2FsbCB0
byBhIG5vbi1uYXRpdmUgZnVuY3Rpb24gaXMgcmV3cml0dGVuIHRvIHBhc3MgYSBwb2ludGVyIHRv
IHRoZQotLy8gICBzdHJ1Y3QgYXMgdGhlIGxhc3QgY2FsbCBhcmd1bWVudC4KLS8vIC0gRWFjaCB2
YXJpYWJsZSByZWZlcmVuY2UgdG8gIngiLCB3aGVyZSAieCIgZW5kcyB1cCBpbiB0aGUgc3RydWN0
LCBpcwotLy8gICBtb2RpZmllZCB0byBpbnN0ZWFkIGJlICJzdHJ1Y3QtPngiLiBXZSBzdG9yZSB0
byAic3RydWN0LT54IiBhZnRlciBkZWNsYXJpbmcKLS8vICAgIngiLiBJZiAieCIgaXMgYSBmdW5j
dGlvbiBwYXJhbWV0ZXIsIHdlIHN0b3JlIHRvICJzdHJ1Y3QtPngiIGFzIHRoZSBmaXJzdAotLy8g
ICB0aGluZyB3ZSBkbyBpbiB0aGUgZnVuY3Rpb24gYm9keS4KLQotY2xhc3MgRXNjYXBlZFZhcmlh
YmxlQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotICAgIHVzaW5nIEJhc2UgPSBW
aXNpdG9yOwotcHVibGljOgotCi0gICAgdm9pZCBlc2NhcGVWYXJpYWJsZVVzZShBU1Q6OkV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBpZiAoIWlzPEFTVDo6VmFyaWFibGVS
ZWZlcmVuY2U+KGV4cHJlc3Npb24pKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXJlIHdlIG1p
c3NpbmcgYW55IGludGVyZXN0aW5nIHByb2R1Y3Rpb25zIGhlcmU/Ci0gICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzExCi0gICAgICAgICAg
ICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZT4oZXhwcmVzc2lvbikudmFyaWFibGUoKTsKLSAgICAgICAgQVNTRVJUKHZhcmlhYmxlKTsK
LSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHNraXAgdGhpcyBpZiB3ZSBtYXJrIGFsbCBpbnRl
cm5hbCB2YXJpYWJsZXMgd2l0aCBhIGJpdCwgc2luY2Ugd2UKLSAgICAgICAgLy8gbmV2ZXIgbWFr
ZSBhbnkgaW50ZXJuYWwgdmFyaWFibGUgZXNjYXBlIHRoZSBjdXJyZW50IHNjb3BlIGl0IGlzIGRl
ZmluZWQgaW46Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgzODMKLSAgICAgICAgbV9lc2NhcGVkVmFyaWFibGVzLmFkZCh2YXJpYWJsZSwgbWFr
ZVN0cmluZygiXyIsIHZhcmlhYmxlLT5uYW1lKCksICJfIiwgbV9jb3VudCsrKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJF
eHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1ha2VQb2ludGVyRXhwcmVz
c2lvbi5taWdodEVzY2FwZSgpKQotICAgICAgICAgICAgZXNjYXBlVmFyaWFibGVVc2UobWFrZVBv
aW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLm1pZ2h0RXNjYXBlKCkpCi0gICAgICAgICAgICBlc2NhcGVWYXJpYWJsZVVzZShtYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkg
IT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIEJhc2U6OnZpc2l0
KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24qLCBTdHJpbmc+IHRha2VFc2NhcGVkVmFyaWFibGVzKCkgeyByZXR1cm4gV1RG
TW92ZShtX2VzY2FwZWRWYXJpYWJsZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90IG1fY291
bnQgeyAxIH07Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBTdHJpbmc+
IG1fZXNjYXBlZFZhcmlhYmxlczsKLX07Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIFRva2VuIGFu
b255bW91c1Rva2VuKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIFRva2VuIHsgeyB9
LCB0eXBlIH07Ci19Ci0KLWNsYXNzIFByZXNlcnZlTGlmZXRpbWVzIDogcHVibGljIFZpc2l0b3Ig
ewotICAgIHVzaW5nIEJhc2UgPSBWaXNpdG9yOwotcHVibGljOgotICAgIFByZXNlcnZlTGlmZXRp
bWVzKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+IHN0cnVjdFR5cGUsIGNvbnN0IEhhc2hNYXA8QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Kj4mIHZhcmlhYmxl
TWFwcGluZykKLSAgICAgICAgOiBtX3N0cnVjdFR5cGUoV1RGTW92ZShzdHJ1Y3RUeXBlKSkKLSAg
ICAgICAgLCBtX3BvaW50ZXJUb1N0cnVjdFR5cGUoQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGFu
b255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSwgQVNUOjpBZGRyZXNzU3BhY2U6
OlRocmVhZCwgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSkpCi0gICAgICAgICwgbV92YXJpYWJsZU1h
cHBpbmcodmFyaWFibGVNYXBwaW5nKQotICAgIHsgfQotCi0gICAgVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVSZWZlcmVuY2U+IG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewotICAg
ICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKCptX3N0cnVjdFZh
cmlhYmxlKSk7Ci0gICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKCptX3N0
cnVjdFZhcmlhYmxlLT50eXBlKCkpOwotICAgICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZS0+
c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhy
ZWFkIH0pOwotICAgICAgICByZXR1cm4gc3RydWN0VmFyaWFibGVSZWZlcmVuY2U7Ci0gICAgfQot
Ci0gICAgVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+IGFzc2lnblZhcmlhYmxl
SW50b1N0cnVjdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlLCBBU1Q6OlN0cnVj
dHVyZUVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBhdXRvIGxocyA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGUuY29kZUxvY2F0aW9u
KCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpLCBlbGVtZW50KTsKLSAgICAgICAgbGhz
LT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBsaHMtPnNldFR5cGVBbm5vdGF0
aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAg
ICAgICBhdXRvIHJocyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNU
OjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcCh2YXJpYWJsZSkpOwotICAgICAgICByaHMtPnNldFR5
cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZUFubm90YXRpb24oQVNU
OjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAgIGF1
dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4o
dmFyaWFibGUuY29kZUxvY2F0aW9uKCksIFdURk1vdmUobGhzKSwgV1RGTW92ZShyaHMpKTsKLSAg
ICAgICAgYXNzaWdubWVudC0+c2V0VHlwZSgqdmFyaWFibGUudHlwZSgpKTsKLSAgICAgICAgYXNz
aWdubWVudC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAg
IHJldHVybiBhc3NpZ25tZW50OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSA9PSBQYXJzaW5nTW9kZTo6U3Rh
bmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGJvb2wgaXNFbnRy
eVBvaW50ID0gISFmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKTsKLSAgICAgICAg
aWYgKGlzRW50cnlQb2ludCkgewotICAgICAgICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJsZURlY2xh
cmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0aW9u
RGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAgICAg
ICAgICAgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OwotCi0gICAgICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFw
KHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIHN0cnVjdFZhcmlhYmxl
UmVmZXJlbmNlLT5zZXRUeXBlKG1fc3RydWN0VHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAg
c3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVl
IHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAgICAgICAgICAgQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9ucyBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uczsKLSAgICAgICAgICAg
IHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHN0cnVjdFZhcmlhYmxl
RGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0RGVjbGFyYXRpb25TdGF0ZW1l
bnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KGZ1
bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJsZURl
Y2xhcmF0aW9ucykpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNz
aW9uPiBtYWtlUG9pbnRlckV4cHJlc3Npb24obmV3IEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9u
KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJs
ZVJlZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpKTsKLSAg
ICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+c2V0VHlwZShtX3BvaW50ZXJUb1N0cnVj
dFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+c2V0
VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBhdXRvIHBv
aW50ZXJEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
PihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygpLAot
ICAgICAgICAgICAgICAgIG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCksICJ3cmFwcGVy
Il9zLCBudWxscHRyLCBXVEZNb3ZlKG1ha2VQb2ludGVyRXhwcmVzc2lvbikpOwotICAgICAgICAg
ICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0KLSAgICAgICAgICAg
IEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25zOwot
ICAgICAgICAgICAgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHBv
aW50ZXJEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgYXV0byBwb2ludGVyRGVjbGFyYXRpb25T
dGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShwb2ludGVyVmFy
aWFibGVEZWNsYXJhdGlvbnMpKTsKLQotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLmJs
b2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgwLCBXVEZNb3ZlKHN0cnVjdERlY2xhcmF0aW9uU3Rh
dGVtZW50KSk7Ci0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0ZW1l
bnRzKCkuaW5zZXJ0KDEsIFdURk1vdmUocG9pbnRlckRlY2xhcmF0aW9uU3RhdGVtZW50KSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvbiA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihmdW5jdGlvbkRlZmluaXRpb24u
Y29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygpLAotICAgICAgICAgICAgICAgIG1fcG9p
bnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCksICJ3cmFwcGVyIl9zLCBudWxscHRyLCBudWxscHRy
KTsKLSAgICAgICAgICAgIG1fc3RydWN0VmFyaWFibGUgPSAmcG9pbnRlckRlY2xhcmF0aW9uOwot
ICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5hcHBlbmQoV1RGTW92
ZShwb2ludGVyRGVjbGFyYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIEJhc2U6OnZpc2l0
KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBm
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKCZwYXJhbWV0ZXIpOwotICAgICAgICAgICAgaWYgKGl0
ZXIgPT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5p
bnNlcnQoaXNFbnRyeVBvaW50ID8gMiA6IDAsCi0gICAgICAgICAgICAgICAgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KGFzc2lnblZhcmlhYmxlSW50b1N0
cnVjdChwYXJhbWV0ZXIsIGl0ZXItPnZhbHVlKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
SW5uZXIgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBXSExTTC4gU28gdGhpcyBpcyBmaW5l
LgotICAgICAgICBtX3N0cnVjdFZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0KLSAgICAgICAg
QmFzZTo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotCi0gICAgICAgIC8vIFRoaXMgd29ya3MgYmVj
YXVzZSBpdCdzIGlsbGVnYWwgdG8gY2FsbCBhbiBlbnRyeXBvaW50LiBUaGVyZWZvcmUsIHdlIGNh
biBvbmx5Ci0gICAgICAgIC8vIGNhbGwgZnVuY3Rpb25zIHdoZXJlIHdlJ3ZlIGFscmVhZHkgYXBw
ZW5kZWQgdGhpcyBzdHJ1Y3QgYXMgaXRzIGZpbmFsIHBhcmFtZXRlci4KLSAgICAgICAgaWYgKCFj
YWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpLmlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpICYm
IGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCku
YXBwZW5kKG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0KLSAg
ICAgICAgYXV0byBpdGVyID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5j
ZS52YXJpYWJsZSgpKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gbV92YXJpYWJsZU1hcHBpbmcuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHR5cGUgPSAqdmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKS0+dHlwZSgpOwotICAgICAgICBB
U1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gdmFyaWFibGVSZWZlcmVuY2UudHlw
ZUFubm90YXRpb24oKTsKLSAgICAgICAgYXV0byogaW50ZXJuYWxGaWVsZCA9IEFTVDo6cmVwbGFj
ZVdpdGg8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGVSZWZlcmVuY2UsIHZh
cmlhYmxlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpLCBtYWtlU3RydWN0VmFyaWFibGVSZWZlcmVu
Y2UoKSwgaXRlci0+dmFsdWUpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5zZXRUeXBlKFdURk1v
dmUodHlwZSkpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5zZXRUeXBlQW5ub3RhdGlvbihXVEZN
b3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RydWN0VmFyaWFibGUp
OwotCi0gICAgICAgIEJhc2U6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsK
LQotICAgICAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKLSAgICAgICAgZm9yIChVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiYgdmFyaWFibGVEZWNsYXJhdGlvbiA6IHZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRpb25zKCkpIHsKLSAg
ICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGUgPSB2YXJpYWJsZURl
Y2xhcmF0aW9uLmdldCgpOwotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucyBkZWNsYXJhdGlvbnM7Ci0gICAgICAgICAgICAgICAgZGVjbGFy
YXRpb25zLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAg
ICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQ+KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKGRlY2xhcmF0
aW9ucykpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBpdGVyID0gbV92YXJp
YWJsZU1hcHBpbmcuZmluZCgmdmFyaWFibGUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV92
YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgc3RhdGVtZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KGFzc2lnblZh
cmlhYmxlSW50b1N0cnVjdCh2YXJpYWJsZSwgaXRlci0+dmFsdWUpKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6U3RhdGVtZW50TGlzdD4odmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQsIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmNvZGVMb2Nh
dGlvbigpLCBXVEZNb3ZlKHN0YXRlbWVudHMpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uKiBtX3N0cnVjdFZhcmlhYmxlIHsgbnVsbHB0ciB9OwotCi0g
ICAgUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV9zdHJ1Y3RUeXBlOwotICAgIFJlZjxBU1Q6OlBv
aW50ZXJUeXBlPiBtX3BvaW50ZXJUb1N0cnVjdFR5cGU7Ci0gICAgLy8gSWYgdGhpcyBtYXBwaW5n
IGNvbnRhaW5zIHRoZSB2YXJpYWJsZSwgaXQgbWVhbnMgdGhhdCB0aGUgdmFyaWFibGUncyBjYW5v
bmljYWwgbG9jYXRpb24KLSAgICAvLyBpcyBpbiB0aGUgc3RydWN0IHdlIHVzZSB0byBwcmVzZXJ2
ZSB2YXJpYWJsZSBsaWZldGltZXMuCi0gICAgY29uc3QgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgbV92YXJpYWJsZU1hcHBpbmc7Ci19
OwotCi12b2lkIHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gZXNjYXBlZFZh
cmlhYmxlczsKLSAgICB7Ci0gICAgICAgIEVzY2FwZWRWYXJpYWJsZUNvbGxlY3RvciBjb2xsZWN0
b3I7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmlu
aXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBjb2xsZWN0b3IudmlzaXQocHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgICAgICBlc2NhcGVkVmFyaWFibGVzID0g
Y29sbGVjdG9yLnRha2VFc2NhcGVkVmFyaWFibGVzKCk7Ci0gICAgfQotCi0gICAgQVNUOjpTdHJ1
Y3R1cmVFbGVtZW50cyBlbGVtZW50czsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBlc2NhcGVkVmFy
aWFibGVzKSB7Ci0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gcGFpci5rZXk7Ci0gICAgICAgIFN0
cmluZyBuYW1lID0gcGFpci52YWx1ZTsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKEFTVDo6U3Ry
dWN0dXJlRWxlbWVudCB7IHZhcmlhYmxlLT5jb2RlTG9jYXRpb24oKSwgeyB9LCAqdmFyaWFibGUt
PnR5cGUoKSwgV1RGTW92ZShuYW1lKSwgbnVsbHB0ciB9KTsKLSAgICB9Ci0KLSAgICAvLyBOYW1l
IG9mIHRoaXMgZG9lc24ndCBtYXR0ZXIsIHNpbmNlIHdlIGRvbid0IHVzZSBzdHJ1Y3QgbmFtZXMg
d2hlbgotICAgIC8vIGdlbmVyYXRpbmcgTWV0YWwgdHlwZSBuYW1lcy4gV2UganVzdCBwaWNrIHNv
bWV0aGluZyBoZXJlIHRvIG1ha2UgaXQKLSAgICAvLyBlYXN5IHRvIHJlYWQgaW4gQVNUIGR1bXBz
LgotICAgIGF1dG8gd3JhcHBlclN0cnVjdERlZmluaXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6
U3RydWN0dXJlRGVmaW5pdGlvbj4oYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6OlN0cnVjdCks
ICJfX1dyYXBwZXJTdHJ1Y3RfXyJfcywgV1RGTW92ZShlbGVtZW50cykpOwotCi0gICAgSGFzaE1h
cDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiB2YXJp
YWJsZU1hcHBpbmc7Ci0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvciAoYXV0byYgcGFp
ciA6IGVzY2FwZWRWYXJpYWJsZXMpCi0gICAgICAgIHZhcmlhYmxlTWFwcGluZy5hZGQocGFpci5r
ZXksICZ3cmFwcGVyU3RydWN0RGVmaW5pdGlvbi0+c3RydWN0dXJlRWxlbWVudHMoKVtpbmRleCsr
XSk7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gd3JhcHBlclN0cnVjdFR5cGUgPSBBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAoYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6OklkZW50aWZpZXIpLCB3
cmFwcGVyU3RydWN0RGVmaW5pdGlvbik7Ci0gICAgICAgIFByZXNlcnZlTGlmZXRpbWVzIHByZXNl
cnZlTGlmZXRpbWVzKFdURk1vdmUod3JhcHBlclN0cnVjdFR5cGUpLCB2YXJpYWJsZU1hcHBpbmcp
OwotICAgICAgICBwcmVzZXJ2ZUxpZmV0aW1lcy5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSAg
ICB9Ci0KLSAgICBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuYXBwZW5kKFdURk1vdmUo
d3JhcHBlclN0cnVjdERlZmluaXRpb24pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGE2NGY3YTI4YmE4NGNmZDBlNDY3ODEwMTk5ZWQwYWMzOTc0MGJkNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIHByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9ncmFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMWEyZTJj
MDM4NzI1NWQ1N2YwOWJhNGQxZTkyYWFmZjRlNGVlZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9ncmFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVycm9y
LmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVU
eXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW0gewotcHVibGljOgotICAgIFByb2dyYW0oKSA9IGRlZmF1bHQ7Ci0gICAgUHJvZ3JhbShQ
cm9ncmFtJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQo
QVNUOjpUeXBlRGVmaW5pdGlvbiYmIHR5cGVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgbV90
eXBlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlvbj4o
V1RGTW92ZSh0eXBlRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQu
YWRkKG1fdHlwZURlZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IGFwcGVuZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mJiBzdHJ1Y3R1cmVEZWZp
bml0aW9uKQotICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmVEZWZpbml0aW9ucy5hcHBlbmQobWFr
ZVVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KFdURk1vdmUoc3RydWN0dXJlRGVm
aW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fc3RydWN0dXJl
RGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YXBwZW5kKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiYgZW51bWVyYXRpb25EZWZpbml0aW9u
KQotICAgIHsKLSAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5p
cXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihXVEZNb3ZlKGVudW1lcmF0aW9uRGVm
aW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fZW51bWVyYXRp
b25EZWZpbml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9y
PiBhcHBlbmQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mJiBmdW5jdGlvbkRlZmluaXRpb24pCi0g
ICAgewotICAgICAgICBtX2Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZnVuY3Rpb25EZWZpbml0aW9uKSkpOwot
ICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9mdW5jdGlvbkRlZmluaXRpb25zLmxh
c3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotICAg
IHsKLSAgICAgICAgbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5hcHBlbmQobWFrZVVuaXF1
ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KFdURk1vdmUobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFk
ZChtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fbmF0aXZlVHlwZURlY2xhcmF0
aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oV1RG
TW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKSk7Ci0gICAgICAgIG1faW50cmluc2ljcy5hZGQo
bV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVD
b250ZXh0LmFkZChtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzVmFsaWRWZWN0b3JQcm9wZXJ0eShTdHJpbmcpOwotCi0gICAgTmFtZUNvbnRleHQm
IG5hbWVDb250ZXh0KCkgeyByZXR1cm4gbV9uYW1lQ29udGV4dDsgfQotICAgIEludHJpbnNpY3Mm
IGludHJpbnNpY3MoKSB7IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBjb25zdCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNzOyB9Ci0gICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4mIHR5cGVEZWZpbml0aW9ucygpIHsg
cmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24+PiYgc3RydWN0dXJlRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX3N0
cnVjdHVyZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4+JiBlbnVtZXJhdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9lbnVt
ZXJhdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlv
bkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9Ci0gICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4+JiBuYXRpdmVUeXBl
RGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgTmFtZUNvbnRleHQgbV9uYW1lQ29udGV4dDsKLSAgICBJbnRyaW5zaWNzIG1f
aW50cmluc2ljczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+PiBt
X3R5cGVEZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4+IG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+IG1fZW51bWVyYXRpb25EZWZpbml0aW9uczsKLSAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gbV9mdW5jdGlvbkRl
ZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uPj4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25z
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMGZhMGI5OWU4YTUzYjkwYTMyNTc0
MTJhZGVmNGI0OWNhYzhkM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0
eVJlc29sdmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlSZXNvbHZlci5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIK
LSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlcGxhY2VXaXRoLmgi
Ci0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvcGVydHlSZXNvbHZlciA6IHB1YmxpYyBWaXNpdG9y
IHsKLSAgICB2b2lkIGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UoVW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4gYmFzZSwgVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mIHNsb3QsIFZlY3RvcjxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPj4mIGV4cHJlc3Npb25zKQotICAgIHsKLSAgICAgICAgaWYg
KCFiYXNlLT5tYXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICBzbG90ID0gV1RGTW92ZShi
YXNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gbGVm
dEFkZHJlc3NTcGFjZSA9IGJhc2UtPnR5cGVBbm5vdGF0aW9uKCkubGVmdEFkZHJlc3NTcGFjZSgp
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChsZWZ0QWRkcmVzc1NwYWNlKTsKLSAgICAgICAgQ29k
ZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiA9IGJhc2UtPmNvZGVMb2NhdGlvbigpOwotICAgICAgICBS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBiYXNlLT5yZXNvbHZlZFR5cGUoKTsKLSAg
ICAgICAgUmVmPEFTVDo6UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlID0gQVNUOjpQb2ludGVyVHlw
ZTo6Y3JlYXRlKGNvZGVMb2NhdGlvbiwgKmxlZnRBZGRyZXNzU3BhY2UsIGJhc2VUeXBlLmNvcHlS
ZWYoKSk7Ci0KLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4gcG9p
bnRlclZhcmlhYmxlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGNv
ZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgcG9pbnRlclR5cGUucHRyKCksIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJlZmVy
ZW5jZSA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3
cmFwKHBvaW50ZXJWYXJpYWJsZSkpOwotICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNl
dFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJl
bmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNl
OjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBwb2ludGVyT2ZCYXNlID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBXVEZN
b3ZlKGJhc2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKTsKLSAgICAg
ICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAg
ICAgICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1
ZSgpKTsKLQotICAgICAgICAgICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OkFzc2lnbm1lbnRFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIG1ha2VWYXJpYWJsZVJlZmVyZW5j
ZSgpLCBXVEZNb3ZlKHBvaW50ZXJPZkJhc2UpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNl
dFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNl
dFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ewotICAgICAgICAgICAgYXV0byBkZXJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpEZXJl
ZmVyZW5jZUV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCkp
OwotICAgICAgICAgICAgZGVyZWZlcmVuY2UtPnNldFR5cGUoYmFzZVR5cGUuY29weVJlZigpKTsK
LSAgICAgICAgICAgIGRlcmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1
ZSB7ICpsZWZ0QWRkcmVzc1NwYWNlIH0pOwotCi0gICAgICAgICAgICBzbG90ID0gV1RGTW92ZShk
ZXJlZmVyZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQoV1RG
TW92ZShwb2ludGVyVmFyaWFibGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGhhbmRsZVByb3BlcnR5
QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2VzcywgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiYgZXhwcmVzc2lvbnMpCi0gICAgewotICAg
ICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiogY3VycmVudFB0ciA9ICZwcm9wZXJ0
eUFjY2VzczsKLSAgICAgICAgLy8gYS5iW2NdLmQgd2lsbCBnbyBpbnRvIHRoaXMgYXJyYXkgYXMg
Wy5kLCBbY10sIC5iXQotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6
OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4+IGNoYWluOwotCi0gICAgICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgY3VycmVudCA9
ICpjdXJyZW50UHRyOwotICAgICAgICAgICAgY2hhaW4uYXBwZW5kKGN1cnJlbnQpOwotICAgICAg
ICAgICAgaWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihjdXJyZW50KSkKLSAgICAgICAgICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGN1
cnJlbnQpLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgICAgIGlmICghaXM8QVNUOjpQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGN1cnJlbnRQdHIgPSAmZG93bmNhc3Q8QVNUOjpQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFT
VDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1cnJlbnRQdHI7Ci0KLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGN1cnJlbnQuYmFzZSgpKTsKLQotICAgICAgICBDb2Rl
TG9jYXRpb24gYmFzZUNvZGVMb2NhdGlvbiA9IGN1cnJlbnQuYmFzZSgpLmNvZGVMb2NhdGlvbigp
OwotICAgICAgICAKLSAgICAgICAgaWYgKGN1cnJlbnQuYmFzZSgpLnR5cGVBbm5vdGF0aW9uKCku
aXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+IGNvcHkgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
YmFzZUNvZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgJmN1cnJlbnQuYmFzZSgpLnJl
c29sdmVkVHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBjdXJyZW50LmJhc2UoKS5yZXNvbHZlZFR5
cGUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYXV0byBtYWtlVmFyaWFibGVSZWZlcmVu
Y2UgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6
OndyYXAoY29weSkpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBl
KGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRo
cmVhZCB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24sIG1ha2VWYXJpYWJs
ZVJlZmVyZW5jZSgpLCBjdXJyZW50LnRha2VCYXNlKCkpOwotICAgICAgICAgICAgYXNzaWdubWVu
dC0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+
c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBleHBy
ZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGN1cnJlbnQuYmFzZVJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCk7
Ci0KLSAgICAgICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKGNvcHkpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBoYW5kbGVMZWZ0SGFuZFNpZGVCYXNlKGN1cnJlbnQudGFr
ZUJhc2UoKSwgY3VycmVudC5iYXNlUmVmZXJlbmNlKCksIGV4cHJlc3Npb25zKTsKLQotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gY2hhaW4uc2l6ZSgpOyBpLS07ICkgewotICAgICAgICAgICAgYXV0
byYgYWNjZXNzID0gY2hhaW5baV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpJbmRl
eEV4cHJlc3Npb24+KGFjY2VzcykgJiYgZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGFj
Y2VzcykuaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9u
PihhY2Nlc3MpOwotCi0gICAgICAgICAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IGluZGV4
VHlwZSA9IGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKS5yZXNvbHZlZFR5cGUoKTsK
LQotICAgICAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+IGlu
ZGV4VmFyaWFibGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oYWNj
ZXNzLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCBpbmRleFR5cGUucHRyKCks
IFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gbWFr
ZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB2YXJp
YWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNU
OjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChpbmRleFZhcmlhYmxlKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKGluZGV4VHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24o
QVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhc3NpZ25tZW50
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihiYXNlQ29kZUxvY2F0
aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSwgaW5kZXhFeHByZXNzaW9uLnRha2VJbmRleCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZShpbmRleFR5cGUuY29w
eVJlZigpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZUFubm90YXRp
b24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25z
LmFwcGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpbmRleEV4cHJlc3Npb24uaW5kZXhSZWZlcmVuY2UoKSA9IG1ha2VWYXJpYWJs
ZVJlZmVyZW5jZSgpOwotCi0gICAgICAgICAgICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdURk1v
dmUoaW5kZXhWYXJpYWJsZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdm9pZCBoYW5kbGVQcm9wZXJ0eUFjY2VzcyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biYgcHJvcGVydHlBY2Nlc3MpCi0gICAgewotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwotCi0gICAgICAgIGhhbmRsZVByb3BlcnR5QWNjZXNz
KHByb3BlcnR5QWNjZXNzLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+IGFjY2Vzc1R5cGUgPSBwcm9wZXJ0eUFjY2Vzcy5yZXNvbHZlZFR5cGUoKTsKLQotICAg
ICAgICBBU1Q6OkNvbW1hRXhwcmVzc2lvbiogY29tbWE7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24gPSBwcm9wZXJ0eUFjY2Vzcy5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgaWYg
KGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2VzcykpIHsKLSAgICAgICAgICAg
IGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihw
cm9wZXJ0eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3SW5kZXhFeHByZXNzaW9uID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBpbmRleEV4
cHJlc3Npb24udGFrZUJhc2UoKSwgaW5kZXhFeHByZXNzaW9uLnRha2VJbmRleCgpKTsKLSAgICAg
ICAgICAgIG5ld0luZGV4RXhwcmVzc2lvbi0+c2V0VHlwZShpbmRleEV4cHJlc3Npb24ucmVzb2x2
ZWRUeXBlKCkpOwotICAgICAgICAgICAgbmV3SW5kZXhFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3Rh
dGlvbihBU1Q6OlR5cGVBbm5vdGF0aW9uKGluZGV4RXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbigp
KSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld0luZGV4RXhw
cmVzc2lvbikpOwotCi0gICAgICAgICAgICBjb21tYSA9IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpD
b21tYUV4cHJlc3Npb24+KGluZGV4RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9uLCBXVEZNb3ZlKGV4
cHJlc3Npb25zKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpczxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKSk7Ci0gICAgICAgICAgICBh
dXRvJiBkb3RFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihwcm9wZXJ0
eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3RG90RXhwcmVzc2lvbiA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGRvdEV4cHJlc3Npb24udGFr
ZUJhc2UoKSwgU3RyaW5nKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKTsKLSAgICAgICAgICAg
IG5ld0RvdEV4cHJlc3Npb24tPnNldFR5cGUoZG90RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7
Ci0gICAgICAgICAgICBuZXdEb3RFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlR5
cGVBbm5vdGF0aW9uKGRvdEV4cHJlc3Npb24udHlwZUFubm90YXRpb24oKSkpOwotCi0gICAgICAg
ICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdEb3RFeHByZXNzaW9uKSk7Ci0KLSAg
ICAgICAgICAgIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4o
ZG90RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKGFjY2Vzc1R5cGUpKTsKLSAg
ICAgICAgY29tbWEtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICB9
Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVz
c2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhhbmRsZVByb3BlcnR5QWNjZXNzKGRvdEV4
cHJlc3Npb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24m
IGluZGV4RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhhbmRsZVByb3BlcnR5
QWNjZXNzKGluZGV4RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVFeHBy
ZXNzaW9uKCkpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLnJl
c3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBleHByZXNzaW9uczsKLQotICAgICAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9u
ID0gcmVhZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpOwotCi0gICAgICAgIFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiB0eXBlID0gcmVhZE1vZGlmeVdyaXRlLnJlc29sdmVkVHlwZSgpOwotCi0gICAg
ICAgIGlmIChpczxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRl
LmxlZnRWYWx1ZSgpKSkKLSAgICAgICAgICAgIGhhbmRsZVByb3BlcnR5QWNjZXNzKGRvd25jYXN0
PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVl
KCkpLCBleHByZXNzaW9ucyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhbmRsZUxlZnRI
YW5kU2lkZUJhc2UocmVhZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwgcmVhZE1vZGlmeVdy
aXRlLmxlZnRWYWx1ZVJlZmVyZW5jZSgpLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgewotICAg
ICAgICAgICAgVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4gbmV3UmVh
ZE1vZGlmeVdyaXRlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24+KAotICAgICAgICAgICAgICAgIHJlYWRNb2RpZnlXcml0ZS5jb2RlTG9jYXRpb24oKSwgcmVh
ZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwgcmVhZE1vZGlmeVdyaXRlLnRha2VPbGRWYWx1
ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1ZhbHVlKCkpOwotICAgICAgICAgICAgbmV3UmVh
ZE1vZGlmeVdyaXRlLT5zZXROZXdWYWx1ZUV4cHJlc3Npb24ocmVhZE1vZGlmeVdyaXRlLnRha2VO
ZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUtPnNl
dFJlc3VsdEV4cHJlc3Npb24ocmVhZE1vZGlmeVdyaXRlLnRha2VSZXN1bHRFeHByZXNzaW9uKCkp
OwotICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRUeXBlKHR5cGUuY29weVJlZigp
KTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0VHlwZUFubm90YXRpb24oQVNU
OjpUeXBlQW5ub3RhdGlvbihyZWFkTW9kaWZ5V3JpdGUudHlwZUFubm90YXRpb24oKSkpOwotCi0g
ICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdSZWFkTW9kaWZ5V3JpdGUp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8qIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxB
U1Q6OkNvbW1hRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRlLCBjb2RlTG9jYXRpb24sIFdURk1v
dmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgY29tbWEtPnNldFR5cGUoV1RGTW92ZSh0eXBlKSk7
Ci0gICAgICAgIGNvbW1hLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25E
ZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YXJp
YWJsZXMuaXNFbXB0eSgpKTsKLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nh
c3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0KLSAg
ICAgICAgaWYgKCFtX3ZhcmlhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZ1bmN0aW9u
RGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMCwgCi0gICAgICAgICAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihmdW5j
dGlvbkRlZmluaXRpb24uYmxvY2soKS5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShtX3ZhcmlhYmxl
cykpKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zIG1fdmFyaWFibGVzOwotfTsKLQotdm9pZCByZXNvbHZlUHJvcGVydGllcyhQcm9n
cmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZSBnb2FsIG9mIHRoaXMgcGhhc2UgaXMgdHdvIGFs
bG93IHR3byB0aGluZ3M6Ci0gICAgLy8gMS4gRm9yIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9u
cywgbWV0YWwgY29kZWdlbiBzaG91bGQgYmUgYWxsb3dlZCB0byBldmFsdWF0ZQotICAgIC8vIHRo
ZSBiYXNlLCBhbmQgaWYgaXQncyBhbiBpbmRleCBleHByZXNzaW9uLCB0aGUgaW5kZXgsIGFzIG1h
bnkgdGltZXMgYXMgbmVlZGVkLgotICAgIC8vIFNvIHRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0IGlm
IE1ldGFsIGV2YWx1YXRlcyBzdWNoIHRoaW5ncywgZWZmZWN0cyBhcmVuJ3QgcGVyZm9ybWVkCi0g
ICAgLy8gbW9yZSB0aGFuIG9uY2UuCi0gICAgLy8KLSAgICAvLyAyLiBGb3IgUmVhZE1vZGlmeVdy
aXRlIGV4cHJlc3Npb25zLCBtZXRhbCBjb2RlZ2VuIHNob3VsZCBiZSBhYmxlIHRvIGV2YWx1YXRl
IHRoZQotICAgIC8vIGxlZnRWYWx1ZUV4cHJlc3Npb24gYXMgbWFueSB0aW1lcyBhcyBpdCdkIGxp
a2Ugd2l0aG91dCBwZXJmb3JtaW5nIHRoZSBlZmZlY3RzIG9mCi0gICAgLy8gbGVmdFZhbHVlRXhw
cmVzc2lvbiBtb3JlIHRoYW4gb25jZS4KLSAgICAvLwotICAgIC8vIFdlIGRvIHRoZXNlIHRoaW5n
cyBiZWNhdXNlIGl0J3MgY29udmVuaWVudCBmb3IgbWV0YWwgY29kZWdlbiB0byBiZSBhYmxlIHRv
IHJlbHkgb24KLSAgICAvLyB0aGlzIHdpdGggdGhlIHdheSBpdCBzdHJ1Y3R1cmVzIHRoZSBnZW5l
cmF0ZWQgY29kZS4KLSAgICBQcm9wZXJ0eVJlc29sdmVyIHJlc29sdmVyOwotICAgIGZvciAoYXV0
byYgZnVuY3Rpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgcmVz
b2x2ZXIudmlzaXQoZnVuY3Rpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3Bl
cnR5UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJvcGVydHlSZXNvbHZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmVkYWE0
ZThkOGI1MDZhMzZhZmYxYjIwYThlMzhhODYzOTg4N2YxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLXZvaWQgcmVzb2x2ZVByb3BlcnRpZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTE2NTc5YzM2MDc1M2ZiYmJjZThmOGRlYzY1ZGJjYzI1
YjFiNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFByb2dy
YW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBSZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMgZmlu
YWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25zLmFkZCgmZnVuY3Rpb24pOwotICAgICAgICBp
ZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5j
dGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxs
RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxF
eHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxs
RXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSk7Ci0gICAgfQot
Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IHRha2VSZWFjaGFibGVGdW5j
dGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVuY3Rpb25zKTsgfQotCi1wcml2
YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX3JlYWNoYWJsZUZ1
bmN0aW9uczsKLX07Ci0KLXZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBy
ZWFjaGFibGVTdGRsaWJGdW5jdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbj4+IGZ1bmN0aW9uRGVmaW5pdGlvbnMgPSBXVEZNb3ZlKHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25E
ZWZpbml0aW9ucykgewotICAgICAgICBpZiAoZnVuY3Rpb24tPnBhcnNpbmdNb2RlKCkgIT0gUGFy
c2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIHJlYWNoYWJsZVN0ZGxpYkZ1
bmN0aW9ucy52aXNpdChmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbi0+ZW50cnlQb2ludFR5cGUoKSk7Ci0gICAgfQotCi0g
ICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMudGFr
ZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+PiBuZXdGdW5jdGlvbkRlZmluaXRpb25zOwotICAgIGZvciAoVW5pcXVlUmVm
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPiYgZW50cnkgOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7
Ci0gICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmVudHJ5LmdldCgpKSkK
LSAgICAgICAgICAgIG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKFdURk1vdmUoZW50cnkp
KTsKLSAgICB9Ci0KLSAgICBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSA9IFdURk1vdmUo
bmV3RnVuY3Rpb25EZWZpbml0aW9ucyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Yzg0Njk3NWViNjNh
ODE4ZTQ4ZjlmODkwNWMwYWNjMzdmZDM2YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzBlZTEyNDY4MGFiYmZiYWU2NTgyNzRmYjliY2E2MmYzY2JhODc3ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgot
I2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gTWFrZXMgc3VyZSB0
aGVyZSBpcyBubyBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBSZWN1cnNpb25DaGVja2VyIGZp
bmFsIDogcHVibGljIFZpc2l0b3IgewotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KFByb2dyYW0m
IHByb2dyYW0pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVm
aW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5jb250YWlucygmZnVuY3Rp
b25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc3RhcnRlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAg
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCB1c2UgcmVjdXJzaW9uIGluIHRoZSBjYWxsIGdyYXBoLiIsIGZ1bmN0aW9uRGVm
aW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpICE9IFBhcnNp
bmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5j
dGlvbkRlZmluaXRpb24pOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9maW5pc2hlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxF
eHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4
cHJlc3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigp
KSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fc3Rh
cnRlZFZpc2l0aW5nOwotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX2Zp
bmlzaGVkVmlzaXRpbmc7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWN1cnNp
b24oUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBSZWN1cnNpb25DaGVja2VyIHJlY3Vyc2lvbkNo
ZWNrZXI7Ci0gICAgcmVjdXJzaW9uQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSAg
ICByZXR1cm4gcmVjdXJzaW9uQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDdhYzI1MGU0YmM1NGIwYWI5MTkxNWQxZWYyMDg1NjM1
M2VlNmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5o
IgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9y
PiBjaGVja1JlY3Vyc2lvbihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxYzUwN2FjNTY4MDEzZmU5MzJmYzA1YTJjNTI2OGY0
OTY5ZWU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVj
a2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMU3RydWN0dXJl
RGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNs
dWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFJlY3Vyc2l2ZVR5cGVD
aGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpU
eXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRl
OwotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpUeXBlKj4gbV9zdGFydGVkVmlzaXRpbmc7
Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGUqPiBtX2ZpbmlzaGVkVmlzaXRpbmc7Ci19OwotCi0jZGVm
aW5lIFNUQVJUX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGlmIChtX2ZpbmlzaGVkVmlzaXRp
bmcuY29udGFpbnModCkpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgYXV0byByZXN1bHRTdGFy
dGVkVmlzaXRpbmcgPSBtX3N0YXJ0ZWRWaXNpdGluZy5hZGQodCk7IFwKLSAgICBpZiAoIXJlc3Vs
dFN0YXJ0ZWRWaXNpdGluZy5pc05ld0VudHJ5KSB7IFwKLSAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IkNhbm5vdCBkZWNsYXJlIHJlY3Vyc2l2ZSB0eXBlcy4iLCAodCktPmNvZGVMb2NhdGlvbigpKSk7
IFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgfSBcCi19IHdoaWxlIChmYWxzZSk7Ci0KLSNkZWZp
bmUgRU5EX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGF1dG8gcmVzdWx0RmluaXNoZWRWaXNp
dGluZyA9IG1fZmluaXNoZWRWaXNpdGluZy5hZGQodCk7IFwKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdEZpbmlzaGVkVmlzaXRpbmcsIHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcuaXNOZXdFbnRyeSk7
IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQo
QVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgU1RBUlRfVklTSVRJ
TkcoJnR5cGVEZWZpbml0aW9uKTsKLQotICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVEZWZpbml0aW9u
KTsKLQotICAgIEVORF9WSVNJVElORygmdHlwZURlZmluaXRpb24pOwotfQotCi12b2lkIFJlY3Vy
c2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVy
ZURlZmluaXRpb24pCi17Ci0gICAgU1RBUlRfVklTSVRJTkcoJnN0cnVjdHVyZURlZmluaXRpb24p
OwotCi0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0KLSAgICBFTkRf
VklTSVRJTkcoJnN0cnVjdHVyZURlZmluaXRpb24pOwotfQotCi12b2lkIFJlY3Vyc2l2ZVR5cGVD
aGVja2VyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAg
U1RBUlRfVklTSVRJTkcoJnR5cGVSZWZlcmVuY2UpOwotCi0gICAgZm9yIChhdXRvJiB0eXBlQXJn
dW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNv
bHZlZFR5cGUoKSkgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNjEgU2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIgdGhlIHR5cGUgaGFz
IGJlZW4gcmVzb2x2ZWQgb3Igbm90PwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0KLSAgICBFTkRfVklTSVRJTkcoJnR5cGVSZWZlcmVu
Y2UpOwotfQotCi12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlJlZmVyZW5j
ZVR5cGUmKQotewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWN1cnNpdmVUeXBl
cyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlY3Vyc2l2ZVR5cGVDaGVja2VyIHJlY3Vyc2l2
ZVR5cGVDaGVja2VyOwotICAgIGZvciAoYXV0byYgdHlwZURlZmluaXRpb24gOiBwcm9ncmFtLnR5
cGVEZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBlQ2hlY2tlci5jaGVja0Vycm9y
QW5kVmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIGZvciAoYXV0byYgc3RydWN0dXJlRGVmaW5p
dGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgcmVjdXJzaXZl
VHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAg
IHJldHVybiByZWN1cnNpdmVUeXBlQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZjFhYzBmNTcxMzA0YmJlYWE4ODE3NTBkMGRmYzIwNjJlN2QyNDg3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIK
LSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
Y2hlY2tSZWN1cnNpdmVUeXBlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMzZjNDcyNTg2OTY0ODI5OGUyODU1NmEwMWM0Mzcz
Yzc2YjQzZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJ
bXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRl
Y2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlIDxsaW1pdHM+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIHVuc2lnbmVkIGNvbnZlcnNp
b25Db3N0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgY2FuZGlkYXRlLCBjb25zdCBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMpCi17
Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2FuZGlkYXRlLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBjb252
ZXJzaW9uQ29zdCArPSBhcmd1bWVudFR5cGVzW2ldLmdldCgpLnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
PiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAgICAgIHJl
dHVybiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5jb252ZXJzaW9u
Q29zdCgqY2FuZGlkYXRlLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKTsKLSAgICAgICAgfSkpOwot
ICAgIH0KLSAgICAvLyBUaGUgcmV0dXJuIHR5cGUgY2FuIG5ldmVyIGJlIGEgbGl0ZXJhbCB0eXBl
LCBzbyBpdHMgY29udmVyc2lvbiBjb3N0IGlzIGFsd2F5cyAwLgotICAgIHJldHVybiBjb252ZXJz
aW9uQ29zdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgotc3RhdGljIEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlw
ZT4+JiBhcmd1bWVudFR5cGVzLCBUeXBlS2luZCogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNw
YWNlIG5hbWVTcGFjZSkKLXsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBjYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgcG9z
c2libGVGdW5jdGlvbiA6IHBvc3NpYmxlRnVuY3Rpb25zKSB7Ci0gICAgICAgIGlmIChwb3NzaWJs
ZUZ1bmN0aW9uLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgaWYgKG5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5
KSB7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSAh
PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHBvc3NpYmxlRnVuY3Rpb24u
Z2V0KCkubmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSAmJiBw
b3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IG5hbWVTcGFjZSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5mZXJUeXBlc0ZvckNh
bGwocG9zc2libGVGdW5jdGlvbi5nZXQoKSwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUp
KQotICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQocG9zc2libGVGdW5jdGlvbi5nZXQoKSk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbWluaW11bUNvbnZlcnNpb25Db3N0ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDog
Y2FuZGlkYXRlcykKLSAgICAgICAgbWluaW11bUNvbnZlcnNpb25Db3N0ID0gc3RkOjptaW4obWlu
aW11bUNvbnZlcnNpb25Db3N0LCBjb252ZXJzaW9uQ29zdChjYW5kaWRhdGUuZ2V0KCksIGFyZ3Vt
ZW50VHlwZXMpKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbj4sIDE+IG1pbmltdW1Db3N0Q2FuZGlkYXRlczsKLSAgICBmb3IgKGF1
dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpIHsKLSAgICAgICAgaWYgKGNvbnZlcnNpb25Db3N0
KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRUeXBlcykgPT0gbWluaW11bUNvbnZlcnNpb25Db3N0
KQotICAgICAgICAgICAgbWluaW11bUNvc3RDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwot
ICAgIH0KLQotICAgIGlmIChtaW5pbXVtQ29zdENhbmRpZGF0ZXMuc2l6ZSgpID09IDEpCi0gICAg
ICAgIHJldHVybiAmbWluaW11bUNvc3RDYW5kaWRhdGVzWzBdLmdldCgpOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92
ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3Bh
Y2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3NzaWJsZUZ1
bmN0aW9ucywgYXJndW1lbnRUeXBlcywgc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihudWxs
cHRyKSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZl
RnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1lZFR5
cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi17Ci0gICAgcmV0
dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3NzaWJsZUZ1bmN0aW9ucywgYXJndW1l
bnRUeXBlcywgY2FzdFJldHVyblR5cGUsIG5hbWVTcGFjZSk7Ci19Ci0KLUFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25z
LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50
VHlwZXMsIEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSBu
YW1lU3BhY2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3Nz
aWJsZUZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUsIG5hbWVTcGFjZSk7
Ci19Ci0KLUFTVDo6TmFtZWRUeXBlKiByZXNvbHZlVHlwZU92ZXJsb2FkSW1wbChWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+JiBwb3NzaWJsZVR5cGVzLCBB
U1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgQVNUOjpOYW1lZFR5cGUq
IHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJsZVR5cGUgOiBwb3NzaWJs
ZVR5cGVzKSB7Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhwb3NzaWJs
ZVR5cGUsIHR5cGVBcmd1bWVudHMpKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmVzdWx0ID0gJnN0YXRpY19j
YXN0PEFTVDo6TmFtZWRUeXBlJj4ocG9zc2libGVUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92
ZXJsb2FkSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xS
ZXNvbHZlT3ZlcmxvYWRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMzIy
ZTg0NGRmM2ZiOGJhYWE4NjkwODg4Zjc4OTJhMTE2NzM5ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmFtZWRU
eXBlOwotCi19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3Zl
cmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZVNwYWNlKTsKLUFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxl
RnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4m
IGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1l
U3BhY2UpOwotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9h
ZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+
LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpVbm5hbWVkVHlwZSogY2FzdFJldHVy
blR5cGUsIEFTVDo6TmFtZVNwYWNlKTsKLUFTVDo6TmFtZWRUeXBlKiByZXNvbHZlVHlwZU92ZXJs
b2FkSW1wbChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+
JiwgQVNUOjpUeXBlQXJndW1lbnRzJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWNlYTQ1N2E4NTMyMGI5OWQ5OTlmZDE5NmZiMDE2ODc0ZDc2ZDUyNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEy
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJlc29s
dmFibGVUeXBlOwotCi19Ci0KLS8vIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgdHlwZSBvZiBv
bmUgQVNUIG5vZGUgc2hvdWxkIG1hdGNoIHRoZSB0eXBlIG9mIGFub3RoZXIgQVNUIG5vZGUuCi0v
LyBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBjb21tYSBleHByZXNzaW9uIC0gdGhlIHR5cGUg
b2YgdGhlIGNvbW1hIGV4cHJlc3Npb24gc2hvdWxkIG1hdGNoIHRoZSB0eXBlIG9mIGl0cyBsYXN0
IGl0ZW0uCi0vLyBJZiB0aGlzIHR5cGUgaGFwcGVucyB0byBiZSBhIHJlc29sdmFibGUgdHlwZSwg
aXQgd2lsbCBnZXQgcmVzb2x2ZWQgbGF0ZXIuIFdoZW4gdGhhdCBoYXBwZW5zLAotLy8gYm90aCBv
ZiB0aGUgQVNUIG5vZGVzIGhhdmUgdG8gYmUgcmVzb2x2ZWQgdG8gdGhlIHJlc3VsdCB0eXBlLiBU
aGlzIGNsYXNzIHJlcHJlc2VudHMgYQotLy8gcmVmZXJlbmNlIGNvdW50ZWQgd3JhcHBlciBhcm91
bmQgYSByZXNvbHZhYmxlIHR5cGUgc28gYm90aCBlbnRyaWVzIGluIHRoZSB0eXBlIG1hcCBjYW4g
cG9pbnQKLS8vIHRvIHRoZSBzYW1lIHJlc29sdmFibGUgdHlwZSwgc28gcmVzb2x2aW5nIGl0IG9u
Y2UgcmVzb2x2ZXMgYm90aCB0aGUgZW50cmllcyBpbiB0aGUgbWFwLgotLy8gVGhpcyBjbGFzcyBj
b3VsZCBwcm9iYWJseSBiZSByZXByZXNlbnRlZCBhcwotLy8gImNsYXNzIFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlIDogcHVibGljIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpSZXNvbHZhYmxl
VHlwZT4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlIHt9IgotLy8g
YnV0IEkgZGlkbid0IHdhbnQgdG8gYmUgdG9vIGNsZXZlci4KLWNsYXNzIFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHsK
LXB1YmxpYzoKLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShBU1Q6OlJlc29sdmFibGVUeXBl
JiByZXNvbHZhYmxlVHlwZSkKLSAgICAgICAgOiBtX3Jlc29sdmFibGVUeXBlKCZyZXNvbHZhYmxl
VHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UoY29uc3Qg
UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZShSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
JikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmIG9wZXJhdG9yPShSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsKLQotICAgIEFTVDo6UmVzb2x2YWJsZVR5
cGUmIHJlc29sdmFibGVUeXBlKCkgeyByZXR1cm4gKm1fcmVzb2x2YWJsZVR5cGU7IH0KLQotcHJp
dmF0ZToKLSAgICBBU1Q6OlJlc29sdmFibGVUeXBlKiBtX3Jlc29sdmFibGVUeXBlOwotfTsKLQot
Ly8gVGhpcyBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgYSBWYXJpYW50LgotLy8gSXQgZXhpc3Rz
IHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkb2VzIHRo
ZSByaWdodCB0aGluZy4KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgotY2xh
c3MgUmVzb2x2aW5nVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgUmVzb2x2aW5nVHlwZSgpCi0gICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+KCkpCi0gICAgewotICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUoUmVm
PEFTVDo6VW5uYW1lZFR5cGU+IHYpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3ZlKHYpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4gdikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAgewotICAgIH0KLQot
ICAgIFJlc29sdmluZ1R5cGUoY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRlOwotICAgIFJl
c29sdmluZ1R5cGUoUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgICAgICA6IG1faW5uZXIoV1RG
TW92ZShvdGhlci5tX2lubmVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZSYg
b3BlcmF0b3I9KGNvbnN0IFJlc29sdmluZ1R5cGUmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZpbmdU
eXBlJiBvcGVyYXRvcj0oUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9p
bm5lciA9IFdURk1vdmUob3RoZXIubV9pbm5lcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlKiBnZXRVbm5hbWVkVHlwZSgpCi0gICAgewotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpVbm5hbWVkVHlwZT4+KG1f
aW5uZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlVubmFtZWRUeXBl
Pj4obV9pbm5lcikucHRyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZp
c2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZhcmlh
bnQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
PiY+KCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbm5l
cik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+
LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+PiBtX2lubmVyOwotfTsKLQotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyM2MxMTVlMWMxNGJhOTdkNzVjZDBhMThmZDE0
ODMxYTEwNWI5OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTY29wZWRTZXRBZGRl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTY29wZWRTZXRBZGRlciB7Ci1wdWJsaWM6Ci0gICAgU2Nv
cGVkU2V0QWRkZXIoSGFzaFNldDxUPiYgc2V0LCBUJiYgaXRlbSkKLSAgICAgICAgOiBtX3NldChz
ZXQpCi0gICAgICAgICwgbV9pdGVtKFdURk1vdmUoaXRlbSkpCi0gICAgewotICAgICAgICBtX2lz
TmV3RW50cnkgPSBzdGF0aWNfY2FzdDxib29sPihtX3NldC5hZGQobV9pdGVtKSk7Ci0gICAgfQot
Ci0gICAgflNjb3BlZFNldEFkZGVyKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9pc05ld0VudHJ5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBtX3NldC5yZW1v
dmUobV9pdGVtKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzTmV3RW50cnkoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3RW50cnk7
IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PFQ+JiBtX3NldDsKLSAgICBUIG1faXRlbTsKLSAg
ICBib29sIG1faXNOZXdFbnRyeTsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZjIwODgyZTkwNTUzMTI2NGEwNzczNTFlZTQ5MDUwMTliNDJmODU2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDMzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotI2luY2x1ZGUgIldI
TFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBvaW50
SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFBp
cGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUg
IldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFu
dGljLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBib29sIG1hdGNoTW9kZShCaW5kaW5nOjpC
aW5kaW5nRGV0YWlscyBiaW5kaW5nVHlwZSwgQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlIG1v
ZGUpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oVW5pZm9y
bUJ1ZmZlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJl
c291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICB9LCBbJl0oU2FtcGxlckJpbmRpbmcp
IC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6
Ok1vZGU6OlNhbXBsZXI7Ci0gICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nKSAtPiBib29sIHsKLSAg
ICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpUZXh0dXJl
OwotICAgIH0sIFsmXShTdG9yYWdlQnVmZmVyQmluZGluZykgLT4gYm9vbCB7Ci0gICAgICAgIHJl
dHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VW5vcmRlcmVkQWNjZXNz
VmlldzsKLSAgICB9KSwgYmluZGluZ1R5cGUpOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxI
YXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0b3I8RW50cnlQb2lu
dEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExheW91dCYgbGF5b3V0LCBTaGFkZXJTdGFnZSBzaGFk
ZXJTdGFnZSkKLXsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBI
YXNoU2V0PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIGJpbmRH
cm91cCA6IGxheW91dCkgewotICAgICAgICBhdXRvIHNwYWNlID0gYmluZEdyb3VwLm5hbWU7Ci0g
ICAgICAgIGZvciAoYXV0byYgYmluZGluZyA6IGJpbmRHcm91cC5iaW5kaW5ncykgewotICAgICAg
ICAgICAgaWYgKCFiaW5kaW5nLnZpc2liaWxpdHkuY29udGFpbnMoc2hhZGVyU3RhZ2UpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBp
dGVtID0gZW50cnlQb2ludEl0ZW1zW2ldOwotICAgICAgICAgICAgICAgIGF1dG8mIHNlbWFudGlj
ID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEFTVDo6UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBhdXRvJiByZXNvdXJjZVNlbWFudGljID0g
V1RGOjpnZXQ8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFtYXRjaE1vZGUoYmluZGluZy5iaW5kaW5nLCByZXNvdXJjZVNlbWFudGljLm1vZGUo
KSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChi
aW5kaW5nLmV4dGVybmFsTmFtZSAhPSByZXNvdXJjZVNlbWFudGljLmluZGV4KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChzcGFjZSAhPSByZXNv
dXJjZVNlbWFudGljLnNwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIHJlc3VsdC5hZGQoJmJpbmRpbmcsIGkpOwotICAgICAgICAgICAgICAgIGl0
ZW1JbmRpY2VzLmFkZChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlQb2ludEl0ZW1zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8mIGl0ZW0gPSBlbnRyeVBvaW50SXRlbXNbaV07Ci0gICAgICAgIGF1dG8mIHNl
bWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1z
dGF0aWMgYm9vbCBtYXRjaElucHV0c091dHB1dHMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVy
dGV4T3V0cHV0cywgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRJbnB1dHMpCi17Ci0g
ICAgZm9yIChhdXRvJiBmcmFnbWVudElucHV0IDogZnJhZ21lbnRJbnB1dHMpIHsKLSAgICAgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigqZnJh
Z21lbnRJbnB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0
byYgZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljPigqZnJhZ21lbnRJbnB1dC5zZW1hbnRpYyk7Ci0gICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiB2ZXJ0ZXhPdXRwdXQgOiB2ZXJ0ZXhPdXRw
dXRzKSB7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFn
ZUluT3V0U2VtYW50aWM+KCp2ZXJ0ZXhPdXRwdXQuc2VtYW50aWMpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgdmVydGV4T3V0cHV0U3RhZ2VJbk91dFNlbWFu
dGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCp2ZXJ0ZXhPdXRwdXQuc2Vt
YW50aWMpOwotICAgICAgICAgICAgaWYgKGZyYWdtZW50SW5wdXRTdGFnZUluT3V0U2VtYW50aWMu
aW5kZXgoKSA9PSB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChtYXRjaGVzKCpmcmFnbWVudElucHV0LnVubmFtZWRUeXBlLCAqdmVy
dGV4T3V0cHV0LnVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChWZXJ0ZXhGb3Jt
YXQgdmVydGV4Rm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgSW50cmluc2lj
cyYgaW50cmluc2ljcykKLXsKLSAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdCkgewotICAgIGNhc2Ug
VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMkEzMjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZlcnRleEZv
cm1hdDo6RmxvYXRSMzJHMzJCMzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWZXJ0ZXhGb3JtYXQ6OkZsb2F0
UjMyRzMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5m
bG9hdDJUeXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhGb3JtYXQg
PT0gVmVydGV4Rm9ybWF0OjpGbG9hdFIzMik7Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFt
ZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90Pj4gbWF0Y2hWZXJ0ZXhB
dHRyaWJ1dGVzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIHZlcnRleElucHV0cywgVmVydGV4QXR0
cmlidXRlcyYgdmVydGV4QXR0cmlidXRlcywgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAg
ICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8
c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgdmVydGV4QXR0cmli
dXRlIDogdmVydGV4QXR0cmlidXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZlcnRleElucHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgaXRlbSA9IHZl
cnRleElucHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50
aWM7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUlu
T3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91
dFNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJbk91dFNlbWFudGlj
LmluZGV4KCkgIT0gdmVydGV4QXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQodmVydGV4
QXR0cmlidXRlLnZlcnRleEZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJpbnNpY3MpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICByZXN1bHQu
YWRkKCZ2ZXJ0ZXhBdHRyaWJ1dGUsIGkpOwotICAgICAgICAgICAgaXRlbUluZGljZXMuYWRkKGkp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0ZXhJ
bnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IHZlcnRleElucHV0c1tp
XTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRp
YykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250
YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFRleHR1
cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIElu
dHJpbnNpY3MmIGludHJpbnNpY3MsIGJvb2wgaXNDb2xvcikKLXsKLSAgICBpZiAoaXNDb2xvcikg
ewotICAgICAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4VW5vcm1Tcmdi
OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4U25vcm06Ci0gICAgICAgIGNhc2UgVGV4
dHVyZUZvcm1hdDo6UjE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2U25v
cm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2RmxvYXQ6Ci0gICAgICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6UjMyRmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5h
bWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6Ukc4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukc4VW5vcm1Tcmdi
OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFNub3JtOgotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlJHMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzE2
U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNkZsb2F0OgotICAgICAgICBj
YXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0MlR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4
dHVyZUZvcm1hdDo6QjVHNlI1VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukcx
MUIxMEZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJp
bnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFVu
b3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm1TcmdiOgotICAgICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6QkdSQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThT
bm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0IxMEEyVW5vcm06Ci0gICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UkdCQTE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2Rmxv
YXQ6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyRmxvYXQ6Ci0gICAgICAgICAg
ICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOwot
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIzMlVpbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
bWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICAgICAgY2Fz
ZSBUZXh0dXJlRm9ybWF0OjpSMzJTaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MuaW50VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSRzMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBp
bnRyaW5zaWNzLnVpbnQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzMy
U2ludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmludDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkEzMlVpbnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50NFR5
cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyU2ludDoKLSAgICAgICAg
ICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmludDRUeXBlKCkpOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9y
Kiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4m
IGZyYWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgYXR0YWNobWVu
dERlc2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIEhhc2hNYXA8QXR0
YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBIYXNoU2V0PHNpemVfdCwg
RGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxz
aXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnREZXNjcmlwdG9y
IDogYXR0YWNobWVudERlc2NyaXB0b3JzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhZ21lbnRPdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpdGVt
ID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRl
bS5zZW1hbnRpYzsKLSAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6
OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgYXV0byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpT
dGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgIGlmIChzdGFnZUluT3V0
U2VtYW50aWMuaW5kZXgoKSAhPSBhdHRhY2htZW50RGVzY3JpcHRvci5uYW1lKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQoYXR0
YWNobWVudERlc2NyaXB0b3IudGV4dHVyZUZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJp
bnNpY3MsIHRydWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICByZXN1bHQuYWRkKCZhdHRhY2htZW50RGVzY3JpcHRvciwgaSk7Ci0gICAgICAgICAg
ICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZyYWdtZW50T3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
JiBpdGVtID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICpp
dGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpT
dGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgYm9v
bCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91
dHB1dHMsIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvciwgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKGZyYWdtZW50T3V0cHV0cy5iZWdpbigpLCBmcmFnbWVu
dE91dHB1dHMuZW5kKCksIFsmXShFbnRyeVBvaW50SXRlbSYgaXRlbSkgewotICAgICAgICBhdXRv
JiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgYnVpbHRJblNlbWFudGljID0gV1RGOjpnZXQ8QVNU
OjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIGJ1aWx0SW5TZW1h
bnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0
aDsKLSAgICB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gZnJhZ21lbnRPdXRwdXRzLmVuZCgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvcikgewotICAgICAgICBBU1NFUlQoIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yLT5uYW1lKTsKLSAgICAgICAgcmV0dXJuIGlzQWNjZXB0YWJsZUZvcm1hdChkZXB0aFN0ZW5j
aWxBdHRhY2htZW50RGVzY3JpcHRvci0+dGV4dHVyZUZvcm1hdCwgKml0ZXJhdG9yLT51bm5hbWVk
VHlwZSwgaW50cmluc2ljcywgZmFsc2UpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJv
Z3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciwgYm9vbCBmcmFnbWVudFNoYWRl
ckV4aXN0cykKLXsKLSAgICBhdXRvIHZlcnRleEZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRl
eHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleEVudHJ5UG9p
bnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYgKHZlcnRleEZ1bmN0
aW9ucy5zaXplKCkgIT0gMSB8fCAhdmVydGV4RnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRU
eXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNbMF0u
Z2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8mIHZlcnRleFNo
YWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4odmVydGV4
RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVt
cyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgdmVydGV4U2hh
ZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKCF2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byB2ZXJ0ZXhTaGFkZXJSZXNvdXJj
ZU1hcCA9IG1hdGNoUmVzb3VyY2VzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRz
LCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6VmVydGV4KTsK
LSAgICBpZiAoIXZlcnRleFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGF1dG8gbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMgPSBtYXRjaFZlcnRleEF0
dHJpYnV0ZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci52ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0g
ICAgaWYgKCFtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyRXhpc3RzKQotICAgICAgICByZXR1cm4ge3sg
JnZlcnRleFNoYWRlckVudHJ5UG9pbnQsIG51bGxwdHIsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIEVudHJ5UG9pbnRJdGVtcygpLCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIEhhc2hN
YXA8QmluZGluZyosIHNpemVfdD4oKSwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCBIYXNoTWFw
PEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PigpIH19OwotCi0gICAgYXV0byBmcmFnbWVu
dE5hbWVTcGFjZSA9IGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIgPyBBU1Q6Ok5hbWVTcGFjZTo6TmFt
ZVNwYWNlMiA6IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOwotICAgIGF1dG8gZnJhZ21lbnRG
dW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5mcmFnbWVudEVudHJ5UG9pbnROYW1lLCBmcmFnbWVudE5hbWVTcGFjZSk7
Ci0gICAgaWYgKGZyYWdtZW50RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmcmFnbWVudEZ1bmN0
aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbj4oZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA9IGRvd25jYXN0PEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKSk7Ci0gICAg
YXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVt
cyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBp
ZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3Vy
Y2VzKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpGcmFnbWVudCk7Ci0gICAgaWYgKCFmcmFn
bWVudFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IGlmICghbWF0Y2hJbnB1dHNPdXRwdXRzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0
cHV0cywgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cykpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyA9IG1h
dGNoQ29sb3JBdHRhY2htZW50cyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0
cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yLmF0
dGFjaG1lbnREZXNjcmlwdG9ycywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwotICAgIGlmICghbWF0
Y2hlZENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
aWYgKCFtYXRjaERlcHRoQXR0YWNobWVudChmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+
b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBwcm9ncmFtLmludHJpbnNpY3Mo
KSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHt7ICZ2ZXJ0ZXhT
aGFkZXJFbnRyeVBvaW50LCAmZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50LCAqdmVydGV4U2hhZGVy
RW50cnlQb2ludEl0ZW1zLCAqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsICp2ZXJ0ZXhT
aGFkZXJSZXNvdXJjZU1hcCwgKmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsICptYXRjaGVkVmVy
dGV4QXR0cmlidXRlcywgKm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzIH19OwotfQotCi1zdGQ6Om9w
dGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBw
cm9ncmFtLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKQotewotICAgIGF1dG8gZnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1
bmN0aW9ucyhjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmVudHJ5UG9pbnROYW1lLCBBU1Q6Ok5h
bWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYgKGZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAh
ZnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uPihmdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIGF1dG8mIGVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIGVudHJ5UG9pbnRJdGVtcyA9IGdh
dGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZW50cnlQb2ludCk7Ci0g
ICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgQVNTRVJUKGVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cy5pc0VtcHR5KCkpOwotICAgIGF1dG8g
cmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyhlbnRyeVBvaW50SXRlbXMtPmlucHV0cywgY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpDb21wdXRlKTsKLSAg
ICBpZiAoIXJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiB7eyAmZW50cnlQb2ludCwgKmVudHJ5UG9pbnRJdGVtcywgKnJlc291cmNlTWFwIH19Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiZjZjNjczZDNkZWI2YzdmYzFmMzIzOWVhOGIwZmQw
YTMyNzg3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotc3RydWN0IE1hdGNoZWRSZW5kZXJTZW1h
bnRpY3MgewotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiB2ZXJ0ZXhTaGFkZXI7Ci0gICAg
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIGZyYWdtZW50U2hhZGVyOwotICAgIEVudHJ5UG9pbnRJ
dGVtcyB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXM7Ci0gICAgRW50cnlQb2ludEl0ZW1zIGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4gdmVydGV4U2hhZGVyUmVzb3VyY2VNYXA7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90
PiBmcmFnbWVudFNoYWRlclJlc291cmNlTWFwOwotICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRl
Kiwgc2l6ZV90PiBtYXRjaGVkVmVydGV4QXR0cmlidXRlczsKLSAgICBIYXNoTWFwPEF0dGFjaG1l
bnREZXNjcmlwdG9yKiwgc2l6ZV90PiBtYXRjaGVkQ29sb3JBdHRhY2htZW50czsKLX07Ci0KLXN0
ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3Jh
bSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRl
ciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7Ci0KLXN0cnVjdCBNYXRjaGVkQ29tcHV0ZVNl
bWFudGljcyB7Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHNoYWRlcjsKLSAgICBFbnRy
eVBvaW50SXRlbXMgZW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4gcmVzb3VyY2VNYXA7Ci19OwotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50
aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYp
OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4N2MwNTYyMjY3YTdiYmMxZDViNGRiOWI4OTM5
ZjVkZjcwMWFhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJh
cnkudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTgwMDMgKzAsMCBAQAotLy8gVGhpcyB3YXMgYXV0
b2dlbmVyYXRlZCBmcm9tIEdlbmVyYXRlX1N0YW5kYXJkX0xpYnJhcnkuanMuCi0vLyBUaGlzIHN0
YW5kYXJkIGxpYnJhcnkgaGFzIGJlZW4gcHJvY2Vzc2VkIHN1Y2ggdGhhdCBmdW5jdGlvbnMgd2hp
Y2ggc2hhcmUgYSBuYW1lIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXIsCi0vLyBhbmQgYmVmb3JlIGVh
Y2ggZ3JvdXAgb2YgZnVuY3Rpb25zLCB0aGVyZSdzIGEgcHJlZml4IHRoYXQgaGFzIHRvIGJlIGlu
IGEgcGFydGljdWxhciBmb3JtLgotLy8gVGhlIFdlYktpdCBidWlsZCBwcm9jZXNzIGV4cGxvaXRz
IHRoaXMgc3RydWN0dXJlIHRvIGJ1aWxkIGEgbWFwIG9mIHdoaWNoIGZ1bmN0aW9uIG5hbWUgY29y
cmVzcG9uZHMgdG8gd2hpY2gKLS8vIHBhcnQgb2YgdGhpcyBmaWxlLiBUaGVuLCB3aGVuIHdlIHBh
cnNlIFdITFNMIHByb2dyYW1zLCB3ZSBjYW4gb25seSBwYXJzZSB0aGUgcGllY2VzIG9mIHRoaXMg
c3RhbmRhcmQgbGlicmFyeQotLy8gd2hpY2ggY29ycmVzcG9uZCB0byBmdW5jdGlvbnMgdGhhdCBh
cmUgYWN0dWFsbHkgdXNlZCBpbiB0aGUgdXNlciBwcm9ncmFtLgotCi1uYXRpdmUgdHlwZWRlZiB2
b2lkOwotbmF0aXZlIHR5cGVkZWYgYm9vbDsKLW5hdGl2ZSB0eXBlZGVmIHVpbnQ7Ci1uYXRpdmUg
dHlwZWRlZiBpbnQ7Ci1uYXRpdmUgdHlwZWRlZiBmbG9hdDsKLW5hdGl2ZSB0eXBlZGVmIGF0b21p
Y19pbnQ7Ci1uYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxib29sLCAyPjsKLXR5cGVkZWYgYm9vbDIgPSB2ZWN0b3I8Ym9vbCwgMj47Ci1uYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8Ym9vbCwgMz47Ci10eXBlZGVmIGJvb2wzID0gdmVjdG9yPGJvb2wsIDM+Owot
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDQ+OwotdHlwZWRlZiBib29sNCA9IHZlY3Rvcjxi
b29sLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAyPjsKLXR5cGVkZWYgdWludDIg
PSB2ZWN0b3I8dWludCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgMz47Ci10eXBl
ZGVmIHVpbnQzID0gdmVjdG9yPHVpbnQsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQs
IDQ+OwotdHlwZWRlZiB1aW50NCA9IHZlY3Rvcjx1aW50LCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZl
Y3RvcjxpbnQsIDI+OwotdHlwZWRlZiBpbnQyID0gdmVjdG9yPGludCwgMj47Ci1uYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8aW50LCAzPjsKLXR5cGVkZWYgaW50MyA9IHZlY3RvcjxpbnQsIDM+OwotbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgND47Ci10eXBlZGVmIGludDQgPSB2ZWN0b3I8aW50LCA0
PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMj47Ci10eXBlZGVmIGZsb2F0MiA9IHZl
Y3RvcjxmbG9hdCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDM+OwotdHlwZWRl
ZiBmbG9hdDMgPSB2ZWN0b3I8ZmxvYXQsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0
LCA0PjsKLXR5cGVkZWYgZmxvYXQ0ID0gdmVjdG9yPGZsb2F0LCA0PjsKLQotbmF0aXZlIHR5cGVk
ZWYgbWF0cml4PGZsb2F0LCAyLCAyPjsKLXR5cGVkZWYgZmxvYXQyeDIgPSBtYXRyaXg8ZmxvYXQs
IDIsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAyLCAzPjsKLXR5cGVkZWYgZmxv
YXQyeDMgPSBtYXRyaXg8ZmxvYXQsIDIsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0
LCAyLCA0PjsKLXR5cGVkZWYgZmxvYXQyeDQgPSBtYXRyaXg8ZmxvYXQsIDIsIDQ+OwotbmF0aXZl
IHR5cGVkZWYgbWF0cml4PGZsb2F0LCAzLCAyPjsKLXR5cGVkZWYgZmxvYXQzeDIgPSBtYXRyaXg8
ZmxvYXQsIDMsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAzLCAzPjsKLXR5cGVk
ZWYgZmxvYXQzeDMgPSBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4
PGZsb2F0LCAzLCA0PjsKLXR5cGVkZWYgZmxvYXQzeDQgPSBtYXRyaXg8ZmxvYXQsIDMsIDQ+Owot
bmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCAyPjsKLXR5cGVkZWYgZmxvYXQ0eDIgPSBt
YXRyaXg8ZmxvYXQsIDQsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCAzPjsK
LXR5cGVkZWYgZmxvYXQ0eDMgPSBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotbmF0aXZlIHR5cGVkZWYg
bWF0cml4PGZsb2F0LCA0LCA0PjsKLXR5cGVkZWYgZmxvYXQ0eDQgPSBtYXRyaXg8ZmxvYXQsIDQs
IDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMiwgMj47Ci10eXBlZGVmIGJvb2wy
eDIgPSBtYXRyaXg8Ym9vbCwgMiwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMiwg
Mz47Ci10eXBlZGVmIGJvb2wyeDMgPSBtYXRyaXg8Ym9vbCwgMiwgMz47Ci1uYXRpdmUgdHlwZWRl
ZiBtYXRyaXg8Ym9vbCwgMiwgND47Ci10eXBlZGVmIGJvb2wyeDQgPSBtYXRyaXg8Ym9vbCwgMiwg
ND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywgMj47Ci10eXBlZGVmIGJvb2wzeDIg
PSBtYXRyaXg8Ym9vbCwgMywgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywgMz47
Ci10eXBlZGVmIGJvb2wzeDMgPSBtYXRyaXg8Ym9vbCwgMywgMz47Ci1uYXRpdmUgdHlwZWRlZiBt
YXRyaXg8Ym9vbCwgMywgND47Ci10eXBlZGVmIGJvb2wzeDQgPSBtYXRyaXg8Ym9vbCwgMywgND47
Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgMj47Ci10eXBlZGVmIGJvb2w0eDIgPSBt
YXRyaXg8Ym9vbCwgNCwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgMz47Ci10
eXBlZGVmIGJvb2w0eDMgPSBtYXRyaXg8Ym9vbCwgNCwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRy
aXg8Ym9vbCwgNCwgND47Ci10eXBlZGVmIGJvb2w0eDQgPSBtYXRyaXg8Ym9vbCwgNCwgND47Ci0K
LW5hdGl2ZSB0eXBlZGVmIHNhbXBsZXI7Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludD47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTFEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50ND47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMUQ8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQyPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxp
bnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlMUQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdDM+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURB
cnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUx
REFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGludD47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUx
REFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50ND47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MURBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlMkQ8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWludDI+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50
ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUyRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQzPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUyRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxmbG9hdD47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUy
RDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0ND47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5
PHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQzPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFy
cmF5PGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQyPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUyREFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJy
YXk8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdD47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZsb2F0ND47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8
dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUzRDx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQz
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUzRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQyPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUzRDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZsb2F0
ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmVDdWJlPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQzPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVD
dWJlPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQyPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmVDdWJlPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50ND47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlQ3ViZTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8ZmxvYXQzPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
RGVwdGgyRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+OwotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgcmV2ZXJzZWJpdHMgKi8KLXVpbnQgcmV2ZXJzZWJpdHModWludCB4KSB7Ci0gICAg
cmV0dXJuIHVpbnQoKCh4ICYgdWludCgxIDw8IDApKSA8PCAzMSkgfAotICAgICAgICAgICAoKHgg
JiB1aW50KDEgPDwgMSkpIDw8IDI5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyKSkg
PDwgMjcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMpKSA8PCAyNSkgfAotICAgICAg
ICAgICAoKHggJiB1aW50KDEgPDwgNCkpIDw8IDIzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQo
MSA8PCA1KSkgPDwgMjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDYpKSA8PCAxOSkg
fAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNykpIDw8IDE3KSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCA4KSkgPDwgMTUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDkp
KSA8PCAxMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTApKSA8PCAxMSkgfAotICAg
ICAgICAgICAoKHggJiB1aW50KDEgPDwgMTEpKSA8PCA5KSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCAxMikpIDw8IDcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEzKSkgPDwg
NSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTQpKSA8PCAzKSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCAxNSkpIDw8IDEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDE2KSkgPj4gMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTcpKSA+PiAzKSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxOCkpID4+IDUpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDE5KSkgPj4gNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjApKSA+
PiA5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMSkpID4+IDExKSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCAyMikpID4+IDEzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQo
MSA8PCAyMykpID4+IDE1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNCkpID4+IDE3
KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNSkpID4+IDE5KSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCAyNikpID4+IDIxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8
PCAyNykpID4+IDIzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyOCkpID4+IDI1KSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyOSkpID4+IDI3KSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCAzMCkpID4+IDI5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAz
MSkpID4+IDMxKSk7Ci19Ci11aW50MiByZXZlcnNlYml0cyh1aW50MiB4KSB7Ci0gICAgdWludDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHJldmVyc2ViaXRzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyByZXZl
cnNlYml0cyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJl
dmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRzKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11
aW50NCByZXZlcnNlYml0cyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRzKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IHJldmVyc2ViaXRzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGlzb3JkZXJlZCAqLwotYm9vbCBpc29yZGVyZWQoZmxvYXQgeCwgZmxvYXQgeSkg
ewotICAgIHJldHVybiAoeCA9PSB4KSAmJiAoeSA9PSB5KTsKLX0KLWJvb2wyIGlzb3JkZXJlZChm
bG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
aXNvcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzb3JkZXJlZCh4WzFdLCB5
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNvcmRlcmVkKGZsb2F0MyB4LCBm
bG9hdDMgeSkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQo
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGlzb3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbDQgaXNvcmRlcmVkKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGJvb2w0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzb3JkZXJlZCh4WzJd
LCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc29yZGVyZWQoeFszXSwgeVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHRyYW5zcG9zZSAqLwotZmxvYXQg
dHJhbnNwb3NlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MngyIHRyYW5zcG9z
ZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIHRyYW5zcG9zZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFsw
XVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IHhb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0cmFuc3Bvc2UoZmxvYXQy
eDQgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBd
OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsy
XTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFd
WzJdOwotICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIHRyYW5zcG9zZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0cmFuc3Bvc2UoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0g
ICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdHJhbnNwb3NlKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAg
cmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAg
ICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwot
ICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IHRyYW5zcG9zZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAg
cmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAg
IHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJhbnNwb3NlKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAgcmVz
dWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJl
c3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAg
cmVzdWx0WzBdWzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAg
IHJlc3VsdFsyXVszXSA9IHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IHRyYW5zcG9zZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1
bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IHhbMF1bM107Ci0gICAgcmVz
dWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJl
c3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0geFsxXVszXTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4WzJdWzNdOwotICAg
IHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsKLSAg
ICByZXN1bHRbMl1bM10gPSB4WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSA9IHhbM11bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRB
ZGQgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRv
bWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQo
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRn
cm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBp
bnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2F0dXJhdGUgKi8K
LWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gY2xhbXAoeCwgMCwgMSk7Ci19
Ci1mbG9hdDIgc2F0dXJhdGUoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc2F0dXJhdGUoZmxvYXQzIHgpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNhdHVyYXRlKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc2F0dXJhdGUoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNhdHVyYXRlKHhbMl0p
OwotICAgIHJlc3VsdFszXSA9IHNhdHVyYXRlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiBzYXR1cmF0ZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBzYXR1cmF0ZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRl
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzYXR1cmF0ZShmbG9h
dDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVy
YXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNh
dHVyYXRlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzYXR1cmF0ZShmbG9hdDJ4MyB4KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBzYXR1cmF0ZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVy
YXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNh
dHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzYXR1cmF0ZShmbG9hdDR4MyB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNhdHVyYXRlKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRl
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNhdHVy
YXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBzYXR1cmF0ZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBzYXR1cmF0ZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRl
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVy
YXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNh
dHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNhdHVyYXRlKHhbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzYXR1cmF0ZShmbG9hdDR4NCB4KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNhdHVyYXRlKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRl
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNhdHVy
YXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNh
dHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNhdHVyYXRlKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IHNhdHVyYXRlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9
IHNhdHVyYXRlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBtYWQgKi8KLQotZmxvYXQgbWFkKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsK
LSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIG1hZChmbG9hdDIgeCwgZmxvYXQyIHks
IGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYWQoeFsw
XSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWFkKHhbMV0sIHlbMV0sIHpbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWFkKGZsb2F0MyB4LCBmbG9hdDMgeSwgZmxv
YXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gbWFkKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgbWFkKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWFkKHhbMl0s
IHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IG1hZCh4WzNdLCB5WzNdLCB6WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWFkKGZsb2F0MngyIHgsIGZsb2F0MngyIHks
IGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4
WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsx
XSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlb
MV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtYWQoZmxv
YXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0M3gyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4
WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgbWFkKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9hdDR4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1hZCh4
WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDMgbWFkKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gzIG1hZChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4MyB6KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBd
WzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
bWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBtYWQoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwg
elswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
bWFkKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWFkKHhbMl1bMl0sIHlb
Ml1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1hZCh4WzNdWzJdLCB5WzNdWzJd
LCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbWFkKGZsb2F0Mng0
IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlb
MF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNd
LCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWFkKGZsb2F0M3g0
IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4
WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsx
XSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsy
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1hZChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5LCBmbG9h
dDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVsw
XSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1hZCh4WzNdWzBdLCB5WzNdWzBd
LCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWFk
KHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1hZCh4WzBd
WzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYWQoeFsxXVszXSwg
eVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWFkKHhbMl1bM10sIHlbMl1b
M10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1hZCh4WzNdWzNdLCB5WzNdWzNdLCB6
WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBt
b2RmICovCi0KLWZsb2F0IG1vZGYoZmxvYXQgeCwgdGhyZWFkIGZsb2F0KiBpcCkgewotICAgIHVp
bnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAqaXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAgICBy
ZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4LCB0aHJlYWQgZmxv
YXQyKiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIHRocmVhZCBmbG9h
dDMqIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0IHgsIHRocmVhZCBm
bG9hdDQqIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10g
PSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIg
eCwgdGhyZWFkIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIGZsb2F0
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1v
ZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIgeCwgdGhy
ZWFkIGZsb2F0M3gyKiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsy
XVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
MV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
bW9kZihmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBt
b2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4
WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11b
MV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxvYXQy
eDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHkpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYo
eFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9k
Zih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFsw
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
MV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1vZGYo
ZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4
WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10g
PSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgs
IHRocmVhZCBmbG9hdDN4NCogeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBmbG9hdCBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2Rm
KHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10gPSBt
b2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0
KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhb
M11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9
IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2Rm
KHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZmZXIp
OwotICAgICgqeSlbM11bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1m
bG9hdCBtb2RmKGZsb2F0IHgsIGRldmljZSBmbG9hdCogaXApIHsKLSAgICB1aW50IHJlc3VsdCA9
IHVpbnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZsb2F0
KHJlc3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgZGV2aWNlIGZsb2F0MiogeSkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1v
ZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0g
PSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBtb2RmKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9k
Zih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9
IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0g
bW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0MngyIHgsIGRldmljZSBm
bG9hdDJ4MiogeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIGRldmljZSBmbG9hdDN4
MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4
WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1b
MV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1vZGYoZmxvYXQ0
eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9
IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2Rm
KHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVy
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0MngzIHgsIGRldmlj
ZSBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1v
ZGYoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9k
Zih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsy
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
Ml0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
bW9kZihmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBt
b2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4
WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0g
PSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0IHgs
IGRldmljZSBmbG9hdDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBmbG9hdCBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2Rm
KHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBd
WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsz
XSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4LCBkZXZpY2UgZmxv
YXQzeDQqIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAg
IHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1v
ZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhb
MV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsz
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBtb2RmKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1v
ZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotZmxvYXQgbW9kZihm
bG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogaXApIHsKLSAgICB1aW50IHJlc3VsdCA9IHVpbnQo
eCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZsb2F0KHJlc3Vs
dCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9k
Zih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9
IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSkg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9
IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxv
YXQ0KiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0MngyIHgs
IHRocmVhZGdyb3VwIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgZmxv
YXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBtb2RmKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB5KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBt
b2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4
WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBtb2RmKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0aHJlYWRncm91cCBm
bG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYo
eFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1vZGYoZmxvYXQ0eDMgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVm
ZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4
WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsz
XVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0g
PSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9k
Zih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0IHgsIHRocmVhZGdyb3VwIGZsb2F0
Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2Rm
KHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIp
OwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFd
WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB5
KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1v
ZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgbW9kZihmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9k
Zih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFsw
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
MV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYo
eFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIEludGVybG9ja2VkTWluICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2Ug
YXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2
aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY191aW50
KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4o
ZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2ludCos
IGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3Jv
dXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0
aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91
cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIGxlbmd0aCAqLwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdCk7Ci1uYXRpdmUgZmxvYXQg
bGVuZ3RoKGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0Myk7Ci1uYXRpdmUgZmxv
YXQgbGVuZ3RoKGZsb2F0NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvci0tICovCi11
aW50IG9wZXJhdG9yLS0odWludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19Ci1p
bnQgb3BlcmF0b3ItLShpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQotZmxv
YXQgb3BlcmF0b3ItLShmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcjw8ICovCi1uYXRpdmUgaW50IG9wZXJhdG9yPDwo
aW50LCB1aW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCwgdWludCk7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBleHAyICovCi1mbG9hdCBleHAyKGZsb2F0IHgpIHsKLSAgICByZXR1cm4g
ZXhwKHggKiBsb2coZmxvYXQoMikpKTsKLX0KLWZsb2F0MiBleHAyKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGV4cDIoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBleHAyKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwMih4WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGV4cDIoZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZXhwMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IGV4cDIoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGV4cDIoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAyKGZsb2F0M3gyIHgpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGV4cDIoZmxvYXQ0eDIgeCkgewotICAgIGZs
b2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cDIo
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGV4cDIoZmxvYXQyeDMg
eCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZXhwMihmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBleHAyKGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAy
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IGV4cDIoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBl
eHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGV4cDIoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4
cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gZXhwMih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgZXhwMihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBleHAy
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBleHAyKHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGV4cDIoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzdW5vcmRlcmVkICovCi0KLWJvb2wgaXN1bm9yZGVy
ZWQoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiBpc25hbih4KSB8fCBpc25hbih5KTsK
LX0KLWJvb2wyIGlzdW5vcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGJvb2wyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbDMgaXN1bm9yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgYm9vbDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGlzdW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzdW5vcmRlcmVk
KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc3Vub3JkZXJlZChm
bG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
aXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1bm9yZGVyZWQoeFsx
XSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsyXSwgeVsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gaXN1bm9yZGVyZWQoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGF0YW4gKi8KLW5hdGl2ZSBmbG9hdCBhdGFuKGZsb2F0
KTsKLWZsb2F0MiBhdGFuKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4oeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhdGFuKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4oeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gYXRhbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IGF0YW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBhdGFuKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGF0YW4oeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIGF0YW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MiBhdGFuKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIGF0YW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBhdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngzIGF0YW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgYXRhbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBhdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0
YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGF0YW4oZmxvYXQy
eDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRh
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IGF0YW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFu
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
YXRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRhbih4WzJd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRhbihmbG9hdDR4NCB4KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
dGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbih4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuKHhbM11bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbih4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGF0
YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IGxvZyAqLwotbmF0aXZlIGZsb2F0IGxvZyhmbG9hdCk7Ci1mbG9hdDIgbG9nKGZsb2F0MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZyh4WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZyhmbG9hdDQgeCkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxv
Zyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbG9n
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2coZmxvYXQyeDIgeCkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
Zyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxvZyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MiBsb2coZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2coeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MyBsb2coZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgbG9nKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBs
b2coeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxvZyhmbG9hdDR4
MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBsb2coeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2coeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBsb2coZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBsb2coZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2co
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxvZyh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nKGZsb2F0NHg0IHgp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBs
b2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxv
Zyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBsb2coeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9n
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSBsb2coeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9nKHhbM11bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBMb2FkICovCi1uYXRp
dmUgdWludCBMb2FkKFRleHR1cmUxRDx1aW50PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
IExvYWQoVGV4dHVyZTFEQXJyYXk8dWludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQg
TG9hZChUZXh0dXJlMkQ8dWludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9hZChU
ZXh0dXJlMkRBcnJheTx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRl
eHR1cmUzRDx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJl
MUQ8dWludDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTFEQXJy
YXk8dWludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUyRDx1
aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUzRDx1aW50
Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTFEPHVpbnQzPiwg
aW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQzPiwg
aW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMkQ8dWludDM+LCBpbnQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgaW50
MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlM0Q8dWludDM+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUxRDx1aW50ND4sIGludCBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMURBcnJheTx1aW50ND4sIGludDIgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTJEPHVpbnQ0PiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIGludDMgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTNEPHVpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50IExvYWQoVGV4dHVyZTFEPGludD4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
IExvYWQoVGV4dHVyZTFEQXJyYXk8aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IExv
YWQoVGV4dHVyZTJEPGludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1
cmUyREFycmF5PGludD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1cmUz
RDxpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTFEPGludDI+
LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMURBcnJheTxpbnQyPiwg
aW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyRDxpbnQyPiwgaW50MiBs
b2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyREFycmF5PGludDI+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTNEPGludDI+LCBpbnQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTFEPGludDM+LCBpbnQgbG9jYXRpb24pOwotbmF0
aXZlIGludDMgTG9hZChUZXh0dXJlMURBcnJheTxpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRp
dmUgaW50MyBMb2FkKFRleHR1cmUyRDxpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
MyBMb2FkKFRleHR1cmUyREFycmF5PGludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQz
IExvYWQoVGV4dHVyZTNEPGludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQo
VGV4dHVyZTFEPGludDQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJl
MURBcnJheTxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUy
RDxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUyREFycmF5
PGludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTNEPGludDQ+
LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUxRDxmbG9hdD4sIGlu
dCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdD4sIGlu
dDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTJEPGZsb2F0PiwgaW50MiBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIGludDMg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTNEPGZsb2F0PiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEPGZsb2F0Mj4sIGludCBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgaW50MiBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIGludDIgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUzRDxmbG9hdDI+LCBpbnQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMUQ8ZmxvYXQzPiwgaW50IGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMkQ8ZmxvYXQzPiwgaW50MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTNEPGZsb2F0Mz4sIGludDMgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxRDxmbG9hdDQ+LCBpbnQgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGludDIgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUyRDxmbG9hdDQ+LCBpbnQyIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBpbnQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlM0Q8ZmxvYXQ0PiwgaW50MyBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIGludDIgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIGludDMg
bG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2luICovCi1uYXRpdmUgZmxvYXQgc2lu
KGZsb2F0KTsKLWZsb2F0MiBzaW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4oeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4oeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gc2luKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgc2luKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IHNpbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBzaW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIHNpbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc2lu
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBz
aW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNpbihmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbih4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNpbihmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzaW4oZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNp
bih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2lu
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDMgc2luKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
c2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBz
aW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHNpbihmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNpbihmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW4oeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBzaW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2lu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4o
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbih4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbih4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSBzaW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIHNpbmNvcyAqLwotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFk
IGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9
IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5LCB0aHJl
YWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZs
b2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCog
eSwgdGhyZWFkIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgdGhyZWFkIGZsb2F0MngyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCB0
aHJlYWQgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5LCB0aHJl
YWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0MngzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwgdGhyZWFk
IGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgdGhyZWFkIGZsb2F0
Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4
LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJl
YWQgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
IHgsIHRocmVhZCBmbG9hdCogeSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7
Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkIGZsb2F0
MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgs
IHRocmVhZCBmbG9hdDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVh
ZCBmbG9hdDQqIHksIGRldmljZSBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHksIGRldmljZSBm
bG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZCBmbG9h
dDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4
MiogeSwgZGV2aWNlIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIGRldmljZSBmbG9hdDJ4Myog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHksIGRldmljZSBmbG9hdDN4Myogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMq
IHksIGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQqIHksIGRl
dmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0
eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHksIHRocmVhZGdyb3VwIGZsb2F0KiB6KSB7Ci0g
ICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIg
eCwgdGhyZWFkIGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9hdDQq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4
LCB0aHJlYWQgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCB0aHJlYWRncm91cCBm
bG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIHRocmVhZGdyb3Vw
IGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MngzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5
LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQqIHks
IHRocmVhZGdyb3VwIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0
M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIHRocmVhZCBm
bG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBz
aW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCB0aHJlYWQgZmxv
YXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwg
ZGV2aWNlIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZCBmbG9hdDN4Miogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4Miogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZs
b2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0
M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0eDMqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
eDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCog
eSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSwgdGhy
ZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiB5
LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsK
LX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5LCBkZXZpY2UgZmxvYXQy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgZGV2aWNlIGZsb2F0MyogeSwg
ZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSwgZGV2aWNl
IGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0MngyIHgsIGRldmljZSBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0MngyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5LCBkZXZpY2UgZmxv
YXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5LCBkZXZpY2UgZmxvYXQ0
eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgs
IGRldmljZSBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIGRl
dmljZSBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0NHgz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgZGV2aWNlIGZsb2F0Mng0KiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCBkZXZpY2Ug
ZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
M10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZpY2UgZmxvYXQ0
eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIGRldmlj
ZSBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAg
ICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5
LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4
LCBkZXZpY2UgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgs
IGRldmljZSBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIGRldmljZSBmbG9hdDJ4Miog
eSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4
MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIGRldmljZSBmbG9h
dDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNlIGZs
b2F0M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0
NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQy
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgs
IGRldmljZSBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwg
ZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsKLSAg
ICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4
LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHksIHRocmVhZCBmbG9hdDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhyZWFkIGZsb2F0NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgs
IHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSwgdGhyZWFkIGZs
b2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB5LCB0aHJlYWQg
ZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZCBmbG9hdDN4Myogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4
MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZGdyb3VwIGZsb2F0Mng0
KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB5LCB0aHJlYWQgZmxvYXQz
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9hdDR4
NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCBkZXZp
Y2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIGRldmljZSBmbG9hdDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMq
IHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCog
eSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCBkZXZpY2UgZmxvYXQy
eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9h
dDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZs
b2F0NHgyKiB5LCBkZXZpY2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCBkZXZpY2Ug
ZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIGRldmlj
ZSBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0
aHJlYWRncm91cCBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRo
cmVhZGdyb3VwIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0
KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQq
IHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZGdy
b3VwIGZsb2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwot
ICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZGdyb3VwIGZs
b2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHksIHRocmVh
ZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB5
LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIHRocmVhZGdyb3Vw
IGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5LCB0aHJl
YWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4
MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJl
YWRncm91cCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotCi0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSAqLwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWlu
dCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENv
bXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWRncm91cCBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3Vw
IGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGlu
dCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
dGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIHRocmVhZGdy
b3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVh
ZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBzbW9vdGhzdGVwICovCi1mbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2Uw
LCBmbG9hdCBlZGdlMSwgZmxvYXQgeCkgewotICAgIGZsb2F0IHQgPSBjbGFtcCgoeCAtIGVkZ2Uw
KSAvIChlZGdlMSAtIGVkZ2UwKSwgMCwgMSk7Ci0gICAgcmV0dXJuIHQgKiB0ICogKDMgLSAyICog
dCk7Ci19Ci1mbG9hdDIgc21vb3Roc3RlcChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzbW9vdGhzdGVwKHhbMF0sIHlb
MF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290aHN0ZXAoeFsxXSwgeVsxXSwgelsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzbW9vdGhzdGVwKGZsb2F0MyB4LCBmbG9h
dDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNt
b290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3RlcCh4
WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVwKHhbMl0sIHlbMl0s
IHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc21vb3Roc3RlcChmbG9hdDQg
eCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBzbW9vdGhzdGVwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290
aHN0ZXAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc21vb3Roc3RlcCh4WzJd
LCB5WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBzbW9vdGhzdGVwKHhbM10sIHlbM10sIHpb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzbW9vdGhzdGVwKGZsb2F0Mngy
IHgsIGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc21vb3Roc3RlcChmbG9hdDN4MiB4
LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzbW9vdGhzdGVwKGZsb2F0NHgy
IHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11bMV0sIHlbM11bMV0s
IHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzbW9vdGhzdGVwKGZs
b2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0s
IHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsy
XSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNtb290aHN0ZXAo
ZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0s
IHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsx
XSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJd
WzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwg
eVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Roc3RlcCh4WzJdWzJd
LCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc21v
b3Roc3RlcChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVsw
XSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFd
WzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNtb290aHN0ZXAoeFszXVswXSwg
eVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsy
XVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc21vb3Roc3RlcCh4
WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVw
KHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0
ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Ro
c3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzbW9v
dGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBzbW9vdGhzdGVwKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHop
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVw
KHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0
ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Ro
c3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9v
dGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNt
b290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
c21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBzbW9vdGhzdGVwKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0
M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Ro
c3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9v
dGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNt
b290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IHNtb290aHN0ZXAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNtb290aHN0ZXAoZmxvYXQ0eDQgeCwgZmxv
YXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwg
elsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc21vb3Roc3RlcCh4WzNdWzJdLCB5WzNdWzJd
LCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVwKHhbMF1bM10sIHlbMF1b
M10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0ZXAoeFsxXVszXSwgeVsx
XVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc21vb3Roc3RlcCh4WzJdWzNdLCB5
WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzbW9vdGhzdGVwKHhbM11bM10s
IHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBleHAgKi8KLW5hdGl2ZSBmbG9hdCBleHAoZmxvYXQpOwotZmxvYXQyIGV4cChmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IGV4cChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhw
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBleHAoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBleHAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGV4cCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZXhwKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgZXhwKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZXhwKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGV4cChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBleHAo
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBl
eHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4
cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhw
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cCh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgZXhwKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZXhwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZXhwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBleHAoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGV4cChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gZXhwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGV4cCh4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYWxsICov
Ci1ib29sIGFsbChib29sIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWJvb2wgYWxsKGJvb2wyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFsbChib29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFsbChib29sNCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVpbnQgeCkgewotICAgIHJldHVybiB4ICE9
IDA7Ci19Ci1ib29sIGFsbCh1aW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVpbnQzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVp
bnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQgeCkgewotICAg
IHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFsbChpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwo
aW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbChpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYWxsKGZsb2F0MiB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYWxsKGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYWxsKGZsb2F0MngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJd
WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4MiB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0MngzIHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYWxsKGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsx
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMl0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHgzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMl0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0Mng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRy
dWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzNdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbGwoZmxvYXQzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxv
YXQ0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsz
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bM10gIT0gMCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
dHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwo
Ym9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sNHgyIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
Ml1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDMgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbGwoYm9vbDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sNHgzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJv
b2wyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsx
XVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDN4NCB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzNdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFs
bChib29sNHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1b
Ml07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZmlyc3RiaXRsb3cg
Ki8KLXVpbnQgZmlyc3RiaXRsb3codWludCB4KSB7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDAp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMzE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDQpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDUpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDYpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMjU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDcpKSAhPSAwKQotICAgICAgICByZXR1
cm4gMjQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDgpKSAhPSAwKQotICAgICAgICByZXR1cm4g
MjM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjI7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIxOwot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMDsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMTIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTk7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDEzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE4OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAgIHJldHVybiAxNzsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMTUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTY7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDE2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE1OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxNykpICE9IDApCi0gICAgICAgIHJldHVybiAxNDsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMTgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTM7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDE5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAyMCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMTsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMjEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDIyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIz
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI0KSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI1KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI2KSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI3KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI4KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI5KSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMwKSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBmaXJzdGJpdGxvdyhpbnQgeCkgewotICAgIHJl
dHVybiBmaXJzdGJpdGxvdyh1aW50KHgpKTsKLX0KLXVpbnQyIGZpcnN0Yml0bG93KHVpbnQyIHgp
IHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLXVpbnQzIGZpcnN0Yml0bG93KHVpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRs
b3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KHVpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Zmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gZmlyc3RiaXRsb3coeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LXVpbnQyIGZpcnN0Yml0bG93KGludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRsb3coaW50MyB4KSB7
Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0
Yml0bG93KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGxvdyhp
bnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3co
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRsb3coeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPD0g
Ki8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0
b3I8PSh1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oZmxvYXQsIGZsb2F0KTsK
LW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3Bl
cmF0b3I8PSh1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0odWludDQsIHVp
bnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wz
IG9wZXJhdG9yPD0oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8PShpbnQ0LCBp
bnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBi
b29sMyBvcGVyYXRvcjw9KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9
KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPD0oZmxvYXQyeDIsIGZs
b2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPD0oZmxvYXQzeDIsIGZsb2F0M3gyKTsK
LW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPD0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBi
b29sMngzIG9wZXJhdG9yPD0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9w
ZXJhdG9yPD0oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPD0o
ZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPD0oZmxvYXQyeDQs
IGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPD0oZmxvYXQzeDQsIGZsb2F0M3g0
KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPD0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIGRkeF9maW5lICovCi1mbG9hdCBkZHhfZmluZShmbG9hdCB4KSB7Ci0g
ICAgcmV0dXJuIGRkeCh4KTsKLX0KLWZsb2F0MiBkZHhfZmluZShmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHhf
ZmluZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4
X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHhf
ZmluZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4
X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR4X2ZpbmUoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeF9maW5lKGZsb2F0MngyIHgpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeF9maW5lKGZsb2F0M3gyIHgp
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIGRkeF9maW5lKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4
X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZGR4X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRk
eF9maW5lKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeF9maW5lKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4
X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRk
eF9maW5lKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4X2Zp
bmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4
X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUoeFszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9maW5lKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeF9maW5lKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2Zp
bmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4
X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR4X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRk
eF9maW5lKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4X2Zp
bmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4
X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUoeFszXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2ZpbmUoeFsyXVszXSk7
Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4X2ZpbmUoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yIGNhc3QgKi8KLW5hdGl2ZSBvcGVy
YXRvciB1aW50KGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludChmbG9hdCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgaW50KHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludChmbG9hdCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50KTsKLW5hdGl2ZSBv
cGVyYXRvciBpbnQoYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbCh1aW50KTsKLW5hdGl2ZSBv
cGVyYXRvciBib29sKGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbDIoYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbCwg
Ym9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbDIsIGJvb2wpOwotbmF0aXZl
IG9wZXJhdG9yIGJvb2wzKGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29s
LCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sMiwgYm9vbCwg
Ym9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbDIsIGJvb2wpOwotbmF0aXZl
IG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29s
NChib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wzLCBib29sKTsKLW5h
dGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDIo
dWludCwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludCwgdWludCwgdWludCk7Ci1u
YXRpdmUgb3BlcmF0b3IgdWludDModWludDIsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQz
KHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50LCB1aW50LCB1
aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MiwgdWludCwgdWludCk7Ci1uYXRpdmUg
b3BlcmF0b3IgdWludDQodWludCwgdWludDIsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0
KHVpbnQsIHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MiwgdWludDIp
OwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQzLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1
aW50NCh1aW50LCB1aW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MihpbnQsIGludCk7Ci1uYXRp
dmUgb3BlcmF0b3IgaW50MyhpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQzKGlu
dDIsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MyhpbnQsIGludDIpOwotbmF0aXZlIG9wZXJh
dG9yIGludDQoaW50LCBpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludDIs
IGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50MiwgaW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50LCBpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGlu
dDIsIGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MywgaW50KTsKLW5hdGl2ZSBvcGVy
YXRvciBpbnQ0KGludCwgaW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyKGZsb2F0LCBmbG9h
dCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0MyhmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDMo
ZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQyLCBmbG9hdCwgZmxvYXQp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDQoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDMsIGZs
b2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQyeDIoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mngz
KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4NChmbG9hdDQsIGZsb2F0
NCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDIoZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci1u
YXRpdmUgb3BlcmF0b3IgZmxvYXQzeDMoZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQzeDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgb3BlcmF0
b3IgZmxvYXQ0eDIoZmxvYXQyLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDR4MyhmbG9hdDMsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0NHg0KGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0MngzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDIoZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQzeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDQoZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDIoZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDR4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDR4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Mihib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2wyeDMoYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMng0KGJvb2w0
LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4Mihib29sMiwgYm9vbDIsIGJvb2wyKTsK
LW5hdGl2ZSBvcGVyYXRvciBib29sM3gzKGJvb2wzLCBib29sMywgYm9vbDMpOwotbmF0aXZlIG9w
ZXJhdG9yIGJvb2wzeDQoYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9v
bDR4Mihib29sMiwgYm9vbDIsIGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4
Myhib29sMywgYm9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4NChi
b29sNCwgYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Mihib29s
LCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngzKGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDQoYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0
b3IgYm9vbDN4Mihib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBv
cGVyYXRvciBib29sM3gzKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDQoYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1u
YXRpdmUgb3BlcmF0b3IgYm9vbDR4Mihib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwot
bmF0aXZlIG9wZXJhdG9yIGJvb2w0eDQoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2FkICovCi1uYXRpdmUgaW50IGxvYWQoZGV2
aWNlIGF0b21pY19pbnQqKTsKLW5hdGl2ZSB1aW50IGxvYWQoZGV2aWNlIGF0b21pY191aW50Kik7
Ci1uYXRpdmUgaW50IGxvYWQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCopOwotbmF0aXZlIHVpbnQg
bG9hZCh0aHJlYWRncm91cCBhdG9taWNfdWludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY291
bnRfYml0cyAqLwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcnNxcnQgKi8KLWZsb2F0IHJzcXJ0KGZs
b2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHNxcnQoeCk7Ci19Ci1mbG9hdDIgcnNxcnQoZmxvYXQy
IHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJzcXJ0KHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgcnNxcnQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHJzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IHJzcXJ0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcnNxcnQoZmxv
YXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJzcXJ0KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJzcXJ0KHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IHJzcXJ0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiByc3FydChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiByc3FydChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiByc3FydChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IHJzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByc3FydChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByc3FydChmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJz
cXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByc3FydChmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJz
cXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJzcXJ0KHhbM11bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByc3FydChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IHJzcXJ0KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByc3FydChm
bG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJz
cXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJzcXJ0
KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByc3FydChmbG9hdDR4
NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJzcXJ0KHhbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJzcXJ0KHhbMl1bM10pOwot
ICAgIHJlc3VsdFszXVszXSA9IHJzcXJ0KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzcXJ0ICovCi1mbG9hdCBzcXJ0KGZsb2F0IHgpIHsKLSAg
ICByZXR1cm4gcG93KHgsIDAuNSk7Ci19Ci1mbG9hdDIgc3FydChmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc3FydChmbG9hdDMg
eCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNxcnQoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzcXJ0KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNx
cnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBz
cXJ0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzcXJ0KGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc3FydChmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzcXJ0KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0KHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzcXJ0KGZsb2F0MngzIHgp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNxcnQoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
c3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc3FydChmbG9hdDR4MyB4KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc3FydCh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc3Fy
dCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzcXJ0KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
c3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHNxcnQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IHNxcnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBz
cXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc3FydCh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc3FydCh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBzcXJ0KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhY29zICovCi1uYXRpdmUgZmxvYXQgYWNvcyhmbG9hdCk7
Ci1mbG9hdDIgYWNvcyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgYWNvcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGFjb3MoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBhY29zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gYWNvcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhY29zKHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhY29zKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgYWNvcyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBhY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
YWNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MyBhY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
Y29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGFjb3MoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFj
b3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgYWNvcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhY29z
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhY29zKGZsb2F0Mng0
IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3Mo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBh
Y29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFj
b3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFjb3MoeFsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGFjb3MoZmxvYXQ0eDQgeCkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNv
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGFjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFjb3MoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWNvcyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFjb3MoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhY29z
KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBv
cGVyYXRvcj4gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7Ci1uYXRpdmUgYm9v
bCBvcGVyYXRvcj4odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj4oZmxvYXQsIGZs
b2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29s
MyBvcGVyYXRvcj4odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4odWludDQs
IHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9v
bDMgb3BlcmF0b3I+KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPihpbnQ0LCBp
bnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJv
b2wzIG9wZXJhdG9yPihmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KGZs
b2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPihmbG9hdDJ4MiwgZmxvYXQy
eDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I+KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRp
dmUgYm9vbDR4MiBvcGVyYXRvcj4oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngz
IG9wZXJhdG9yPihmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I+
KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj4oZmxvYXQ0eDMs
IGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPihmbG9hdDJ4NCwgZmxvYXQyeDQp
OwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I+KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUg
Ym9vbDR4NCBvcGVyYXRvcj4oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIG9wZXJhdG9yJiAqLwotYm9vbCBvcGVyYXRvciYoYm9vbCBhLCBib29sIGIpIHsKLSAgICBy
ZXR1cm4gYSAmJiBiOwotfQotbmF0aXZlIGludCBvcGVyYXRvciYoaW50LCBpbnQpOwotbmF0aXZl
IHVpbnQgb3BlcmF0b3ImKHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdGFuaCAq
LwotbmF0aXZlIGZsb2F0IHRhbmgoZmxvYXQpOwotZmxvYXQyIHRhbmgoZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHRhbmgoZmxv
YXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0YW5oKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgdGFuaChmbG9hdDQgeCkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSB0YW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gdGFuaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgdGFuaChmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRhbmgoZmxvYXQzeDIgeCkgewotICAg
IGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuaChmbG9hdDR4MiB4KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFu
aCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdGFuaChmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5o
KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0YW5oKGZsb2F0M3gz
IHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRhbmgoZmxvYXQ0eDMgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRh
bmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDQgdGFuaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFu
aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQz
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
dGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSB0YW5oKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4NCB0YW5oKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRh
bmgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbmgoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdGFuaCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IqICovCi1uYXRpdmUgaW50IG9wZXJh
dG9yKihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcioodWludCwgdWludCk7Ci1uYXRp
dmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3Iq
KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IqKHVpbnQyLCB1aW50KTsKLW5h
dGl2ZSB1aW50MiBvcGVyYXRvcioodWludCwgdWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9y
Kih1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKih1aW50MywgdWludCk7Ci1u
YXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRv
cioodWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcioodWludDQsIHVpbnQpOwot
bmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50LCB1aW50NCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRv
ciooaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvciooaW50MiwgaW50KTsKLW5hdGl2
ZSBpbnQyIG9wZXJhdG9yKihpbnQsIGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGludDMs
IGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGludDMsIGludCk7Ci1uYXRpdmUgaW50MyBv
cGVyYXRvciooaW50LCBpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQ0LCBpbnQ0KTsK
LW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQ0LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3Iq
KGludCwgaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIsIGZsb2F0Mik7Ci1u
YXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgb3Bl
cmF0b3IqKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3Iq
KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IqKGZsb2F0NCwgZmxvYXQp
OwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQy
eDIgb3BlcmF0b3IqKGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0
b3IqKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IqKGZsb2F0LCBm
bG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gyLCBmbG9hdDN4Mik7
Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQzeDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0
b3IqKGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IqKGZsb2F0
NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4Mik7
Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUg
ZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3Bl
cmF0b3IqKGZsb2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0
M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0M3gzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUg
ZmxvYXQ0eDMgb3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMg
b3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IqKGZs
b2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0Mng0LCBmbG9h
dDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQg
b3BlcmF0b3IqKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3Iq
KGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9h
dDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1u
YXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
eDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3Mg
Ki8KLW5hdGl2ZSBmbG9hdCBjb3MoZmxvYXQpOwotZmxvYXQyIGNvcyhmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGNvcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNvcyhmbG9hdDMg
eCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3MoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBjb3MoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3MoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gY29zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGNvcyh4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY29zKGZsb2F0MngyIHgpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBjb3MoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29z
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDIgY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
Y29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIGNvcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zKHhb
Ml1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3MoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNv
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29z
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGNvcyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgY29zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
Y29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgY29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3MoeFsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNvcyhmbG9hdDR4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3MoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvcyh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3MoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gY29zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGNvcyh4WzNdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I9PSAqLwotbmF0
aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLCBib29sKTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPT0o
aW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PSh1aW50LCB1aW50KTsKLW5hdGl2ZSBi
b29sIG9wZXJhdG9yPT0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj09KGJv
b2wyLCBib29sMik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShib29sMywgYm9vbDMpOwotbmF0
aXZlIGJvb2w0IG9wZXJhdG9yPT0oYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRv
cj09KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PSh1aW50MywgdWludDMp
OwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBv
cGVyYXRvcj09KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oaW50MywgaW50
Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9PShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBv
cGVyYXRvcj09KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGZsb2F0
MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KGZsb2F0NCwgZmxvYXQ0KTsKLW5h
dGl2ZSBib29sMngyIG9wZXJhdG9yPT0oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29s
M3gyIG9wZXJhdG9yPT0oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJh
dG9yPT0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPT0oZmxv
YXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPT0oZmxvYXQzeDMsIGZs
b2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPT0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsK
LW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPT0oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBi
b29sM3g0IG9wZXJhdG9yPT0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9w
ZXJhdG9yPT0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPT0o
Ym9vbDJ4MiwgYm9vbDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj09KGJvb2wzeDIsIGJv
b2wzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9PShib29sNHgyLCBib29sNHgyKTsKLW5h
dGl2ZSBib29sMngzIG9wZXJhdG9yPT0oYm9vbDJ4MywgYm9vbDJ4Myk7Ci1uYXRpdmUgYm9vbDN4
MyBvcGVyYXRvcj09KGJvb2wzeDMsIGJvb2wzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I9
PShib29sNHgzLCBib29sNHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPT0oYm9vbDJ4NCwg
Ym9vbDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcj09KGJvb2wzeDQsIGJvb2wzeDQpOwot
bmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I9PShib29sNHg0LCBib29sNHg0KTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIG9wZXJhdG9yPj4gKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I+PihpbnQsIHVpbnQp
OwotbmF0aXZlIHVpbnQgb3BlcmF0b3I+Pih1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIHJlZmxlY3QgKi8KLWZsb2F0IHJlZmxlY3QoZmxvYXQgaSwgZmxvYXQgbikgewotICAgIHJl
dHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDIgcmVmbGVjdChmbG9hdDIgaSwg
ZmxvYXQyIG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwotfQotZmxvYXQz
IHJlZmxlY3QoZmxvYXQzIGksIGZsb2F0MyBuKSB7Ci0gICAgcmV0dXJuIGkgLSAyICogbiAqIGRv
dChpLCBuKTsKLX0KLWZsb2F0NCByZWZsZWN0KGZsb2F0NCBpLCBmbG9hdDQgbikgewotICAgIHJl
dHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGxp
dCAqLwotZmxvYXQ0IGxpdChmbG9hdCBuX2RvdF9sLCBmbG9hdCBuX2RvdF9oLCBmbG9hdCBtKSB7
Ci0gICAgZmxvYXQgYW1iaWVudCA9IDE7Ci0gICAgZmxvYXQgZGlmZnVzZSA9IG1heCgwLCBuX2Rv
dF9sKTsKLSAgICBmbG9hdCBzcGVjdWxhciA9IG5fZG90X2wgPCAwIHx8IG5fZG90X2ggPCAwID8g
MCA6IG5fZG90X2ggKiBtOwotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSBhbWJp
ZW50OwotICAgIHJlc3VsdC55ID0gZGlmZnVzZTsKLSAgICByZXN1bHQueiA9IHNwZWN1bGFyOwot
ICAgIHJlc3VsdC53ID0gMTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgbG9nMiAqLwotZmxvYXQgbG9nMihmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGxvZyh4KSAv
IGxvZyhmbG9hdCgyKSk7Ci19Ci1mbG9hdDIgbG9nMihmbG9hdDIgeCkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cy
KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nMihmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsb2cyKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzIoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsb2cyKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBsb2cyKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cyKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
ZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9n
Mih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2cyKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cy
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2cyKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxvZzIoZmxvYXQzeDMgeCkgewotICAg
IGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxv
ZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nMihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9n
Mih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMih4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBsb2cyKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMih4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBsb2cyKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
b2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMih4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGxvZzIoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxv
ZzIoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cyKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
Mih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nMih4WzNdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMih4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSBsb2cyKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBub3JtYWxpemUgKi8KLWZsb2F0IG5vcm1hbGl6ZShmbG9hdCB4KSB7
Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDIgbm9ybWFsaXplKGZsb2F0MiB4
KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDMgbm9ybWFsaXplKGZsb2F0
MyB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDQgbm9ybWFsaXplKGZs
b2F0NCB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIGxkZXhwICovCi1mbG9hdCBsZGV4cChmbG9hdCB4LCBmbG9hdCBlKSB7Ci0gICAgcmV0
dXJuIHggKiBwb3coMiwgZSk7Ci19Ci1mbG9hdDIgbGRleHAoZmxvYXQyIHgsIGZsb2F0MiB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIGxkZXhwKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbGRl
eHAoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwgeVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsZGV4cChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxkZXhwKHhb
Ml0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGxkZXhwKHhbM10sIHlbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsZGV4cChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBsZGV4cChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxk
ZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsZGV4cChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGxkZXhwKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGxkZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyBsZGV4cChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsZGV4cChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhw
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MyBsZGV4cChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxk
ZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxkZXhwKHhbM11bMF0s
IHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxkZXhw
KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGxkZXhwKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBsZGV4cChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxk
ZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxkZXhw
KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsZGV4
cChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1b
MF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxk
ZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxkZXhw
KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsZGV4
cChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1b
MF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxkZXhwKHhbM11bMF0sIHlbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxk
ZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxkZXhwKHhbM11bMV0s
IHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxkZXhw
KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGxkZXhwKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IGxkZXhwKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBhYnMgKi8KLXVpbnQgYWJzKHVpbnQgeCkgewotICAgIHJldHVybiB4
OwotfQotaW50IGFicyhpbnQgeCkgewotICAgIGlmICh4IDwgMCkKLSAgICAgICAgcmV0dXJuIC14
OwotICAgIHJldHVybiB4OwotfQotZmxvYXQgYWJzKGZsb2F0IHgpIHsKLSAgICBpZiAoeCA8IDAp
Ci0gICAgICAgIHJldHVybiAteDsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQyIGFicyh1aW50MiB4
KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGFicyh1
aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhYnModWludDQgeCkgewotICAgIHVpbnQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgYWJzKGludDIgeCkgewotICAgIGludDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMo
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYWJzKGludDMgeCkgewotICAgIGlu
dDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
YnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1pbnQ0IGFicyhpbnQ0IHgpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MiBhYnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhYnMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgYWJzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
YnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFi
cyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGFicyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYWJzKGZs
b2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJz
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFicyhmbG9hdDR4MiB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBh
YnMoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGFicyhmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhYnMoZmxvYXQzeDMgeCkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgYWJzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFi
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJz
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhYnMo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFicyhmbG9hdDJ4NCB4
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBh
YnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFicyhmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhYnMoeFsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBhYnMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFicyh4WzNd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhYnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gYWJzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFicyh4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSBhYnMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgcm91bmQgKi8KLW5hdGl2ZSBmbG9hdCByb3VuZChmbG9hdCk7Ci1m
bG9hdDIgcm91bmQoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgcm91bmQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgcm91bmQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJvdW5kKHhbM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByb3VuZChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxv
YXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiByb3VuZChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJv
dW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByb3VuZChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJv
dW5kKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByb3VuZChmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5k
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByb3Vu
ZChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5k
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByb3Vu
ZChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJvdW5k
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJv
dW5kKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByb3VuZChmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5k
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJvdW5kKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4NCByb3VuZChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5k
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJv
dW5kKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHJvdW5kKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4NCByb3VuZChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJv
dW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHJvdW5kKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJvdW5kKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IHJvdW5kKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJvdW5kKHhbM11bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBtdWwgKi8KLXVpbnQgbXVs
KHVpbnQgeCwgdWludCB5KSB7Ci0gICAgcmV0dXJuIHggKiB5OwotfQotaW50IG11bChpbnQgeCwg
aW50IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQgeCwgZmxvYXQg
eSkgewotICAgIHJldHVybiB4ICogeTsKLX0KLXVpbnQyIG11bCh1aW50IHgsIHVpbnQyIHkpIHsK
LSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0
WzFdID0geCAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQyIG11bCh1aW50MiB4
LCB1aW50IHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7
Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQz
IG11bCh1aW50IHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0g
eCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIG11bCh1aW50MyB4LCB1aW50
IHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAg
cmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlb
MV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0geCAqIHlbM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50NCB4LCB1aW50IHkpIHsKLSAg
ICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFd
ID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdID0g
eFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgbXVsKGludCB4LCBpbnQyIHkp
IHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1
bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MiBtdWwoaW50MiB4
LCBpbnQgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5Owot
ICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIG11
bChpbnQgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAq
IHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlb
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGludDMgeCwgaW50IHkpIHsKLSAg
ICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0g
PSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotaW50NCBtdWwoaW50IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3Vs
dFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1pbnQ0IG11bChpbnQ0IHgsIGludCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAg
cmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHgg
KiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0MiB4LCBmbG9h
dCB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAg
ICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11
bChmbG9hdCB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0g
eCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQzIHgsIGZs
b2F0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5Owot
ICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0IHgsIGZsb2F0NCB5KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0g
PSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXN1bHRbM10gPSB4
ICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDQgeCwgZmxv
YXQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAg
cmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11
bChmbG9hdCB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5
WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQyeDIgeCwg
ZmxvYXQgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBd
WzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1b
MV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0IHgsIGZsb2F0M3gyIHkpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0g
eCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4LCBmbG9hdCB5KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3Vs
dFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5Owot
ICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1b
MV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0
WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0geFszXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsx
XSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0geFsyXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdCB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJl
c3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHgg
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRb
MV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJd
ICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0IHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
WzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChm
bG9hdDN4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAg
IHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0g
KiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9
IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3Vs
dFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQgeCwgZmxvYXQ0eDMgeSkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsK
LSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICog
eVsyXVswXTsKLSAgICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRb
M11bMl0gPSB4ICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVs
KGZsb2F0NHgzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzBdID0geFszXVsw
XSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVz
dWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7
Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsy
XVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsx
XVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5WzBd
WzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVszXSA9
IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQgeSkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBd
WzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMF1b
M10gPSB4WzBdWzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0IHgsIGZsb2F0M3g0IHkpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0g
eCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAqIHlb
MF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzNd
ID0geCAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9h
dDN4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJl
c3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5
OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhb
Ml1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3VsdFsx
XVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5OwotICAg
IHJlc3VsdFswXVszXSA9IHhbMF1bM10gKiB5OwotICAgIHJlc3VsdFsxXVszXSA9IHhbMV1bM10g
KiB5OwotICAgIHJlc3VsdFsyXVszXSA9IHhbMl1bM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0g
PSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1
bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICog
eVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4ICogeVszXVsy
XTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSB4
ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4ICogeVsyXVszXTsKLSAgICByZXN1bHRb
M11bM10gPSB4ICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbXVs
KGZsb2F0NHg0IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzBdID0geFszXVsw
XSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVz
dWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7
Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsy
XVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0gICAg
cmVzdWx0WzJdWzNdID0geFsyXVszXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzNdID0geFszXVszXSAq
IHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgbXVsKHVpbnQyIHgsIHVpbnQyIHkpIHsK
LSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotdWludCBtdWwodWludDMgeCwgdWludDMgeSkgewot
ICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci11aW50IG11bCh1aW50NCB4LCB1aW50NCB5KSB7Ci0g
ICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWludCBtdWwoaW50MiB4LCBpbnQyIHkpIHsKLSAgICBy
ZXR1cm4gZG90KHgsIHkpOwotfQotaW50IG11bChpbnQzIHgsIGludDMgeSkgewotICAgIHJldHVy
biBkb3QoeCwgeSk7Ci19Ci1pbnQgbXVsKGludDQgeCwgaW50NCB5KSB7Ci0gICAgcmV0dXJuIGRv
dCh4LCB5KTsKLX0KLWZsb2F0IG11bChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICByZXR1cm4g
ZG90KHgsIHkpOwotfQotZmxvYXQgbXVsKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIHJldHVy
biBkb3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgcmV0
dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0MngyIHkpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhb
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwo
ZmxvYXQyeDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSAr
PSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4
WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0g
eFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0MyB5KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBd
WzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBtdWwoZmxvYXQyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3Vs
dFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAg
cmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdICogeVsz
XVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDR4MiB4LCBmbG9h
dDQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1
bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFd
OwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFsz
XVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsx
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsx
XSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAqIHlbM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQzIHgsIGZsb2F0MngzIHkpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9
IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1
bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICog
eVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVsw
XTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBtdWwoZmxvYXQzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4
WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
bXVsKGZsb2F0M3gzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRb
MF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwot
ICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAg
IHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAq
IHlbMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlb
MF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4
WzJdWzJdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDMg
eCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsK
LSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXSAqIHlbM11bMF07
Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJd
ICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDR4MyB4
LCBmbG9hdDQgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAg
ICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0g
KiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMF0g
Kz0geFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0g
eFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJl
c3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAqIHlb
M107Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07
Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJd
WzJdICogeVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQ0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0g
Kz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAg
IHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsK
LSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAg
ICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0g
KiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5
WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbM10gPSAw
OwotICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsx
XVszXSAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQ0IHgs
IGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9
IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10gKiB5WzFd
WzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsy
XSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM10gKiB5WzJdWzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBd
ICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9
IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1
bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFd
OwotICAgIHJlc3VsdFsyXSArPSB4WzJdWzJdICogeVsyXTsKLSAgICByZXN1bHRbM10gPSAwOwot
ICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXVsz
XSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl1bM10gKiB5WzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9
IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdICogeVswXVszXTsKLSAgICBy
ZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl0gPSAwOwot
ICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsy
XSArPSB4WzNdICogeVsyXVszXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSAr
PSB4WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAqIHlbM11bMV07Ci0gICAg
cmVzdWx0WzNdICs9IHhbMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXSArPSB4WzNdICogeVsz
XVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDR4NCB4LCBmbG9h
dDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1
bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFd
OwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFsz
XVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsx
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsx
XSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsxXSAqIHlbM107Ci0g
ICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAg
cmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdWzJdICog
eVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107Ci0gICAgcmVzdWx0WzNdID0g
MDsKLSAgICByZXN1bHRbM10gKz0geFswXVszXSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9IHhb
MV1bM10gKiB5WzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJdWzNdICogeVsyXTsKLSAgICByZXN1
bHRbM10gKz0geFszXVszXSAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IG11bChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1b
MF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICog
eVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0MngyIHgs
IGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFd
WzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSAr
PSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
PSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBd
ICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSAw
OwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11b
MV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IG11bChmbG9hdDN4MiB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1b
MF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4LCBmbG9hdDN4MyB5
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsx
XVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICog
eVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11b
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11bChmbG9hdDR4MiB4LCBmbG9h
dDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsx
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsy
XVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwot
ICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0g
KiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBt
dWwoZmxvYXQ0eDIgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1b
MV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1b
MV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAg
ICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICog
eVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0NHgyIHgs
IGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1b
M107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsz
XVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRb
M11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlb
Ml1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsx
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFszXVsxXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChm
bG9hdDJ4MyB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAw
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1b
MV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBd
WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsy
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
MF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsy
XSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
bXVsKGZsb2F0MngzIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11b
MF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1b
MV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsw
XVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
M11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICBy
ZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIG11bChmbG9hdDN4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsy
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAw
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5
WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQzeDMgeCwg
ZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAw
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1b
MF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0g
MDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBd
WzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsw
XVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMl0g
PSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
MF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJd
ID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJd
ICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0M3gz
IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVsw
XSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFd
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJd
WzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFsw
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsy
XVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRb
Ml1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
Ml1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJd
ICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICogeVsz
XVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdDR4MyB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsx
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAg
IHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5
WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNd
WzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsx
XVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMV0g
PSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsx
XVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1b
Ml0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1b
Ml0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0NHg0IHkp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1b
MF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVz
dWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSAr
PSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1b
M107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAq
IHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJl
c3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsz
XVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFd
ID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFd
ICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAg
cmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07
Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsx
XSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFszXVsxXSAqIHlb
M11bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsy
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsy
XTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNd
WzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVz
dWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJd
WzJdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFszXVsyXSAqIHlbM11bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDJ4MiB5
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0g
PSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
MV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDN4MiB5KSB7
Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1b
MV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVszXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJl
c3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsx
XVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10g
Kz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQyeDQgeCwgZmxv
YXQ0eDIgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0
WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsx
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFd
OwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0g
MDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFd
WzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bM10g
PSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IG11bChmbG9hdDN4NCB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAg
ICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9
IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsxXVsy
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0
M3gzIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSAr
PSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsy
XSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVsz
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAw
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
M10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1b
M10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAg
ICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IG11bChmbG9hdDN4NCB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBd
WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFsz
XVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAq
IHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsw
XVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0g
PSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
MF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzFd
ID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0
WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFd
ICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsy
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11b
Ml0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1
bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1b
Ml0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFd
WzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJd
WzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSAr
PSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsz
XVszXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNdWzBdOwotICAgIHJl
c3VsdFszXVszXSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bM10gKz0geFsy
XVszXSAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9h
dDR4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsy
XVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3Vs
dFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNd
OwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbM11b
M10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9
IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFd
WzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICog
eVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBd
WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
Ml1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsK
LSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFd
ICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsy
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMl0gPSAw
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5
WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAgICByZXN1
bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNdWzNdICogeVswXVsz
XTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzNd
WzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSAr
PSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsy
XVszXSArPSB4WzNdWzNdICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsw
XVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsK
LSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVsz
XVsyXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0
WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107
Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsx
XSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1
bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1b
MV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAg
ICByZXN1bHRbM11bMV0gKz0geFszXVsxXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzJdID0g
MDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1b
M107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsz
XVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0g
Kz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXN1bHRb
M11bMl0gKz0geFszXVsyXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICBy
ZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhb
MV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNd
ID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFszXVszXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsz
XSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFszXVszXSAqIHlb
Ml1bM107Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsKLSAgICByZXN1bHRbM11bM10gKz0geFswXVsz
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMV1bM10gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVszXSArPSB4WzJdWzNdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bM10gKz0g
eFszXVszXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIHJhZGlhbnMgKi8KLWZsb2F0IHJhZGlhbnMoZmxvYXQgeCkgewotICAgIHJldHVybiB4
ICogMy4xNDE1OSAvIDE4MDsKLX0KLWZsb2F0MiByYWRpYW5zKGZsb2F0MiB4KSB7Ci0gICAgZmxv
YXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5zKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByYWRpYW5z
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5z
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
cmFkaWFucyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJhZGlhbnMoZmxv
YXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByYWRp
YW5zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJhZGlhbnMoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIHJhZGlhbnMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiByYWRpYW5zKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsy
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJhZGlhbnMoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByYWRpYW5zKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIHJhZGlhbnMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcmFkaWFucyhmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MyByYWRpYW5zKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5z
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5z
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByYWRpYW5z
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRpYW5z
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMoeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJhZGlhbnMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0
Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFu
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFu
cyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IHJhZGlhbnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IHJhZGlhbnMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlh
bnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlh
bnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlh
bnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJhZGlh
bnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmFkaWFucyh4WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcmFkaWFucyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRp
YW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRp
YW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRp
YW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByYWRp
YW5zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByYWRp
YW5zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJhZGlhbnMoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNlaWwgKi8KLW5hdGl2ZSBm
bG9hdCBjZWlsKGZsb2F0KTsKLWZsb2F0MiBjZWlsKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNlaWwo
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjZWlsKGZsb2F0MyB4KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGNlaWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY2VpbCh4WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNlaWwoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGNlaWwoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNlaWwoZmxvYXQyeDIgeCkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2Vp
bCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjZWlsKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWls
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNlaWwoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNlaWwoZmxvYXQyeDMgeCkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY2VpbChmbG9hdDN4MyB4KSB7Ci0gICAg
ZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2Vp
bCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjZWlsKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWls
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjZWlsKHhbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Y2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IGNlaWwoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBj
ZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjZWlsKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3g0IGNlaWwoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNl
aWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjZWlsKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gY2VpbCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgY2Vp
bChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNlaWwoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjZWls
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjZWlsKHhbM11bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
Y2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjZWlsKHhbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IGNlaWwoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIGFzaW4gKi8KLW5hdGl2ZSBmbG9hdCBhc2luKGZsb2F0KTsKLWZsb2F0
MiBhc2luKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBhc2luKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gYXNpbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFz
aW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW4o
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2lu
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGFzaW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBh
c2luKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFz
aW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2luKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIGFzaW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgYXNpbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4o
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBh
c2luKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXNpbih4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFz
aW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFzaW4oeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFzaW4oZmxvYXQyeDQgeCkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNp
bih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGFzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFzaW4oZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2lu
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
YXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXNpbih4WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXNpbihmbG9hdDR4NCB4KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXNpbih4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBhc2luKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFz
aW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFzaW4oeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFzdWludCAq
LwotdWludCBhc3VpbnQoaW50IHgpIHsKLSAgICByZXR1cm4gdWludCh4KTsKLX0KLXVpbnQyIGFz
dWludChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotdWludDMgYXN1aW50KGludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQg
YXN1aW50KGludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3Vp
bnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFzdWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQgYXN1aW50KHVpbnQgeCkgewotICAgIHJldHVybiB4OwotfQotdWlu
dDIgYXN1aW50KHVpbnQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQzIGFzdWludCh1aW50
MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50NCBhc3VpbnQodWludDQgeCkgewotICAgIHJl
dHVybiB4OwotfQotbmF0aXZlIHVpbnQgYXN1aW50KGZsb2F0KTsKLXVpbnQyIGFzdWludChmbG9h
dDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11
aW50MyBhc3VpbnQoZmxvYXQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGFzdWlu
dChmbG9hdDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFz
dWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHBvdyAqLwotbmF0aXZlIGZsb2F0IHBvdyhm
bG9hdCwgZmxvYXQpOwotZmxvYXQyIHBvdyhmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBwb3co
ZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0sIHlbMV0pOwotICAg
IHJlc3VsdFsyXSA9IHBvdyh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IHBvdyhmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBwb3coeFsxXSwgeVsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gcG93KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IHBv
dyh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcG93KGZsb2F0
MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFd
WzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBwb3coZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFsw
XVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgcG93KGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcG93KHhb
M11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHBvdyh4
WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcG93KGZs
b2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3co
eFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHBvdyhm
bG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3co
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBwb3coZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBv
dyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVswXSwgeVsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBw
b3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11bMV0sIHlb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
cG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHBvdyh4WzNdWzJdLCB5
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcG93KGZsb2F0Mng0IHgs
IGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDQgcG93KGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJd
LCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBwb3coeFsyXVsz
XSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHBvdyhmbG9hdDR4
NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFd
WzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBwb3coeFsx
XVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcG93KHhbMl1bM10sIHlbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IHBvdyh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdGFuICovCi1uYXRpdmUgZmxvYXQgdGFu
KGZsb2F0KTsKLWZsb2F0MiB0YW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4oeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyB0YW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4oeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgdGFuKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSB0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IHRhbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0YW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIHRhbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdGFu
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
dGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0
YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRhbihmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbih4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSB0YW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRhbihmbG9h
dDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0YW4oZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRh
bih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFu
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDMgdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
dGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0
YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRhbihmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSB0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRhbihmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW4oeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCB0YW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4o
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRhbih4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbih4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSB0YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIGZtYSAqLwotZmxvYXQgZm1hKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopIHsKLSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIGZtYShmbG9hdDIgeCwg
ZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBmbWEoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1hKHhbMV0sIHlbMV0s
IHpbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZm1hKGZsb2F0MyB4LCBmbG9h
dDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZt
YSh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZm1hKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgZm1hKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtYSh4WzBdLCB5WzBdLCB6WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
Zm1hKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IGZtYSh4WzNdLCB5WzNdLCB6
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZm1hKGZsb2F0MngyIHgsIGZs
b2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
bWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhb
MV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBmbWEoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0M3gy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgZm1hKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1b
MF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgZm1hKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1b
MF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZtYShmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4
MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBd
WzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1b
MF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBmbWEoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwg
eVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1b
MF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVszXVswXSwgelszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBm
bWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1hKHhb
Ml1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZtYSh4WzNdWzJd
LCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZm1h
KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBm
bWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhb
MF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNd
LCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZm1h
KGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBm
bWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsy
XVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhbMF1bM10sIHlbMF1bM10s
IHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNdLCB5WzFdWzNdLCB6WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZtYShmbG9hdDR4NCB4LCBmbG9hdDR4
NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
bWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhb
Ml1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtYSh4WzNdWzBd
LCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVsw
XVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0s
IHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbWEoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gZm1hKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGZtYSh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbWEo
eFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1hKHhbMl1b
M10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZtYSh4WzNdWzNdLCB5
WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgZGV0ZXJtaW5hbnQgKi8KLWZsb2F0IGRldGVybWluYW50KGZsb2F0IHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLWZsb2F0IGRldGVybWluYW50KGZsb2F0MngyIHgpIHsKLSAgICByZXR1cm4g
eFswXVswXSAqIHhbMV1bMV0gLSB4WzFdWzBdICogeFswXVsxXTsKLX0KLWZsb2F0IGRldGVybWlu
YW50KGZsb2F0M3gzIHgpIHsKLSAgICByZXR1cm4geFswXVswXSAqIHhbMV1bMV0gKiB4WzJdWzJd
ICsKLSAgICAgICAgICAgeFsxXVswXSAqIHhbMl1bMV0gKiB4WzBdWzJdICsKLSAgICAgICAgICAg
eFsyXVswXSAqIHhbMF1bMV0gKiB4WzFdWzJdIC0KLSAgICAgICAgICAgeFswXVsyXSAqIHhbMV1b
MV0gKiB4WzJdWzBdIC0KLSAgICAgICAgICAgeFsxXVsyXSAqIHhbMl1bMV0gKiB4WzBdWzBdIC0K
LSAgICAgICAgICAgeFsyXVsyXSAqIHhbMF1bMV0gKiB4WzFdWzBdOwotfQotZmxvYXQgZGV0ZXJt
aW5hbnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBmbG9hdDN4MyBtaW5v
cjsKLSAgICBtaW5vclswXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzJdWzFd
OwotICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhbMV1bMl07
Ci0gICAgbWlub3JbMV1bMV0gPSB4WzJdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFszXVsyXTsK
LSAgICBtaW5vclswXVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzJdWzNdOwot
ICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyB4WzBdWzBd
ICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBdWzBdID0geFswXVsxXTsKLSAgICBt
aW5vclsxXVswXSA9IHhbMl1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4WzNdWzFdOwotICAgIG1p
bm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhbMl1bMl07Ci0gICAgbWlu
b3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFswXVszXTsKLSAgICBtaW5v
clsxXVsyXSA9IHhbMl1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzNdWzNdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAtIHhbMV1bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7Ci0gICAgbWlub3JbMF1b
MF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsxXVsxXTsKLSAgICBtaW5vclsyXVsw
XSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBdWzJdOwotICAgIG1pbm9yWzFdWzFd
ID0geFsxXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07Ci0gICAgbWlub3JbMF1bMl0g
PSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsxXVszXTsKLSAgICBtaW5vclsyXVsyXSA9
IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgeFsyXVswXSAqIGRldGVybWluYW50KG1p
bm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzFd
WzFdOwotICAgIG1pbm9yWzJdWzBdID0geFsyXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhbMF1b
Ml07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzFdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFsyXVsy
XTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzFdWzNd
OwotICAgIG1pbm9yWzJdWzJdID0geFsyXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgLSB4WzNd
WzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBmbG9vciAqLwotbmF0aXZlIGZsb2F0IGZsb29yKGZsb2F0KTsKLWZsb2F0
MiBmbG9vcihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
Zmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MyBmbG9vcihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBmbG9vcihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmxvb3IoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZsb29yKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIGZsb29yKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Zmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3Io
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZsb29yKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Zmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3Io
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZsb29yKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zmxvb3IoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZsb29yKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxv
b3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
Zmxvb3IoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZsb29yKGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxv
b3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZmxvb3IoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZmxvb3Io
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZsb29yKGZsb2F0Mng0
IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3IoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IGZsb29yKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3Io
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gZmxvb3IoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IGZsb29yKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
Zmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3Io
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gZmxvb3IoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3IoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZmxv
b3IoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZmxvb3IoeFszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNyb3NzICovCi1mbG9hdDMgY3Jv
c3MoZmxvYXQzIHUsIGZsb2F0MyB2KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHQu
eCA9IHUueSAqIHYueiAtIHUueiAqIHYueTsKLSAgICByZXN1bHQueSA9IHUueiAqIHYueCAtIHUu
eCAqIHYuejsKLSAgICByZXN1bHQueiA9IHUueCAqIHYueSAtIHUueSAqIHYueDsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNmaW5pdGUgKi8KLW5hdGl2ZSBi
b29sIGlzZmluaXRlKGZsb2F0KTsKLWJvb2wyIGlzZmluaXRlKGZsb2F0MiB4KSB7Ci0gICAgYm9v
bDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc2Zpbml0
ZShmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zpbml0
ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBpc2Zpbml0ZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNmaW5pdGUo
ZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5pdGUo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
aXNmaW5pdGUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNmaW5pdGUoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkT3IgKi8KLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFk
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY19pbnQqLCBp
bnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21p
Y191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3Io
ZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFk
Z3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21p
Y191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3Io
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBp
bnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAg
YXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCop
OwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXRhbjIgKi8KLW5hdGl2ZSBmbG9hdCBhdGFuMihmbG9h
dCwgZmxvYXQpOwotZmxvYXQyIGF0YW4yKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbjIoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBh
dGFuMihmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4yKHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgYXRhbjIoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhdGFuMih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhdGFuMih4WzJdLCB5WzJdKTsK
LSAgICByZXN1bHRbM10gPSBhdGFuMih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgYXRhbjIoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYXRhbjIo
ZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
dGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDIgYXRhbjIoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNd
WzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBh
dGFuMih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
YXRhbjIoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgYXRhbjIoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0
M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFu
Mih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuMih4
WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgYXRhbjIo
ZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
dGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBdLCB5WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFu
Mih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuMih4WzNdWzFdLCB5
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuMih4
WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXRhbjIo
ZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
dGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFd
LCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFu
Mih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuMih4WzFdWzNdLCB5
WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRhbjIoZmxvYXQzeDQg
eCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFd
WzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
dGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJd
LCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFu
Mih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuMih4WzJdWzNdLCB5
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRhbjIoZmxvYXQ0eDQg
eCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFd
WzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBh
dGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuMih4WzNdWzFdLCB5WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFu
Mih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuMih4WzNdWzJdLCB5
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBhdGFuMih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBhdGFuMih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhdGFuMih4
WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIERl
dmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBm
bW9kICovCi0KLWZsb2F0IGZtb2QoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHVpbnQgd2hvbGUg
PSB1aW50KHggLyB5KTsKLSAgICBmbG9hdCBtdWx0aXBsZSA9IGZsb2F0KHdob2xlKSAqIHk7Ci0g
ICAgcmV0dXJuIHggLSBtdWx0aXBsZTsKLX0KLWZsb2F0MiBmbW9kKGZsb2F0MiB4LCBmbG9hdDIg
eSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1vZCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgZm1vZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1v
ZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbW9kKHhbMl0sIHlbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZm1vZChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbW9kKHhbMl0sIHlb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGZtb2QoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGZtb2QoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0
MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmbW9kKGZs
b2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9k
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IGZtb2QoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11bMF0sIHlbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9k
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2QoeFszXVsxXSwgeVsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZtb2QoZmxvYXQyeDMgeCwg
ZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFd
WzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZm1vZChmbG9h
dDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBm
bW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwg
eVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBmbW9kKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9h
dDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1vZCh4
WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBm
bW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwg
eVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGZtb2QoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IGZtb2QoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBm
bW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsxXVszXSwg
eVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZtb2QoZmxvYXQzeDQg
eCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBm
bW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsxXVszXSwg
eVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1vZCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZm1vZChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBm
bW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBmbW9kKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGZtb2QoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFd
WzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbW9kKHhbMl1bM10sIHlbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGZtb2QoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLSAqLwotbmF0aXZlIGlu
dCBvcGVyYXRvci0oaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3ItKHVpbnQsIHVpbnQp
OwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGludCBvcGVy
YXRvci0oaW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQpOwotbmF0aXZlIHVpbnQy
IG9wZXJhdG9yLSh1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLSh1aW50LCB1
aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50
MyBvcGVyYXRvci0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci0odWludCwg
dWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50MywgdWludCk7Ci1uYXRpdmUgdWlu
dDQgb3BlcmF0b3ItKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3ItKHVpbnQs
IHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludDQsIHVpbnQpOwotbmF0aXZlIGlu
dDIgb3BlcmF0b3ItKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3ItKGludCwgaW50
Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJh
dG9yLShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQsIGludDMpOwotbmF0
aXZlIGludDMgb3BlcmF0b3ItKGludDMsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50
NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0
IG9wZXJhdG9yLShpbnQ0LCBpbnQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQyLCBm
bG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUg
ZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3It
KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDMp
OwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
IG9wZXJhdG9yLShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLShmbG9h
dCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0NCwgZmxvYXQpOwotbmF0
aXZlIGludDIgb3BlcmF0b3ItKGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMpOwot
bmF0aXZlIGludDQgb3BlcmF0b3ItKGludDQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxv
YXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9w
ZXJhdG9yLShmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4MiwgZmxv
YXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4MiwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0Mngy
IG9wZXJhdG9yLShmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gy
LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4Mik7
Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxv
YXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0
NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9y
LShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdCwg
ZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4MywgZmxvYXQpOwot
bmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3Bl
cmF0b3ItKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZs
b2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4
MyBvcGVyYXRvci0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRv
ci0oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMpOwotbmF0aXZlIGZs
b2F0Mng0IG9wZXJhdG9yLShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9w
ZXJhdG9yLShmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShmbG9h
dDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShmbG9hdDJ4NCk7Ci1uYXRp
dmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQz
eDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3It
KGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0M3g0KTsK
LW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBm
bG9hdDR4NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVy
YXRvci0oZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQ0
eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbWluICovCi11aW50IG1pbih1aW50IHgsIHVpbnQg
eSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotdWludDIgbWluKHVpbnQyIHgsIHVp
bnQyIHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlb
MF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotdWludDMgbWluKHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFd
LCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLXVpbnQ0IG1pbih1aW50NCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4o
eFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJlc3Vs
dFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IG1pbihp
bnQgeCwgaW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLWludDIgbWluKGlu
dDIgeCwgaW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotaW50MyBtaW4oaW50MyB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotaW50NCBtaW4oaW50NCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRb
M10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IG1pbihm
bG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geSA6IHg7Ci19Ci1mbG9hdDIg
bWluKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1pbihmbG9hdDMgeCwgZmxvYXQzIHkpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0s
IHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbWluKGZsb2F0NCB4LCBmbG9h
dDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlb
MF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBt
aW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWluKHhbM10sIHlbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtaW4oZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBt
aW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1p
bihmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBt
aW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBt
aW4oZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwgeVszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0sIHlbM11bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtaW4oZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbWluKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1pbihmbG9hdDR4
MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFd
WzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsyXSwgeVsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gbWluKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtaW4oZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsx
XVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWluKHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtaW4oZmxv
YXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhb
MV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtaW4o
eFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWluKHhbMV1bM10sIHlbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1pbih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbWluKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWlu
KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1p
bih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBt
aW4oeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWluKHhbMF1bM10sIHlb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBtaW4oeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0g
bWluKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBJbnRlcmxvY2tlZFhvciAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3Io
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2Ug
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY19pbnQqLCBp
bnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhy
ZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21p
Y19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRo
cmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50Kiwg
dWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhy
ZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICovCi1uYXRpdmUgdm9p
ZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCB0cnVuYyAqLwotbmF0aXZlIGZsb2F0IHRydW5jKGZsb2F0KTsKLWZsb2F0MiB0cnVuYyhmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdHJ1bmMoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyB0cnVuYyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gdHJ1bmMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gdHJ1bmMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0cnVuYyhm
bG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdHJ1bmMoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdHJ1bmMo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gdHJ1bmMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIHRydW5jKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1
bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIHRydW5jKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIHRydW5jKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gdHJ1bmMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRydW5jKGZsb2F0MngzIHgpIHsKLSAgICBm
bG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRydW5jKGZsb2F0M3gzIHgpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
dHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRydW5jKGZsb2F0NHgzIHgpIHsK
LSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
dHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdHJ1bmMoeFszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRydW5jKGZsb2F0Mng0IHgpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRydW5j
KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
dHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdHJ1
bmMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHRydW5jKGZsb2F0
NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1
bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdHJ1bmMoeFsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdHJ1bmMoeFsyXVszXSk7
Ci0gICAgcmVzdWx0WzNdWzNdID0gdHJ1bmMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1heCAqLwotdWludCBtYXgodWludCB4LCB1aW50IHkp
IHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLXVpbnQyIG1heCh1aW50MiB4LCB1aW50
MiB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLXVpbnQzIG1heCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci11aW50NCBtYXgodWludDQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRb
M10gPSBtYXgoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0KLWludCBt
YXgoaW50IHgsIGludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7Ci19Ci1pbnQyIG1h
eChpbnQyIHgsIGludDIgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1h
eCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWludDMgbWF4KGludDMgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1h
eCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWludDQgbWF4KGludDQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1h
eCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gbWF4KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotZmxv
YXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0K
LWZsb2F0MiBtYXgoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0s
IHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWF4KGZsb2F0MyB4LCBmbG9h
dDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlb
MF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBt
YXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtYXgoZmxvYXQ0
IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgo
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtYXgoeFszXSwgeVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1heChmbG9hdDJ4MiB4LCBmbG9hdDJ4
MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBd
WzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgbWF4KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsy
XVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIG1heChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgoeFszXVsxXSwgeVszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1heChmbG9hdDJ4MyB4LCBmbG9h
dDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4
WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgo
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtYXgoZmxvYXQzeDMgeCwgZmxv
YXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1h
eCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbWF4
KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1h
eCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBt
YXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1heCh4WzJdWzJdLCB5
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYXgoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1heChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwg
eVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IG1heChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJd
LCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYXgoeFsxXVsz
XSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWF4KHhbMl1bM10sIHlbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtYXgoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQg
eSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBd
WzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYXgoeFsw
XVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1bM10sIHlbMV1bM10p
OwotICAgIHJlc3VsdFsyXVszXSA9IG1heCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBtYXgoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgYXNpbnQgKi8KLWludCBhc2ludChpbnQgeCkgewotICAgIHJl
dHVybiB4OwotfQotaW50MiBhc2ludChpbnQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludDMg
YXNpbnQoaW50MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQ0IGFzaW50KGludDQgeCkgewot
ICAgIHJldHVybiB4OwotfQotaW50IGFzaW50KHVpbnQgeCkgewotICAgIHJldHVybiBpbnQoeCk7
Ci19Ci1pbnQyIGFzaW50KHVpbnQyIHgpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotaW50MyBhc2ludCh1aW50MyB4KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWlu
dDQgYXNpbnQodWludDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFz
aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFzaW50KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW50KHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1uYXRpdmUgaW50IGFzaW50KGZsb2F0KTsKLWludDIgYXNpbnQoZmxvYXQyIHgp
IHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBhc2lu
dChmbG9hdDMgeCkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW50
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGFzaW50KGZsb2F0NCB4KSB7Ci0g
ICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGNsYW1wICovCi1uYXRpdmUgdWludCBjbGFtcCh1aW50LCB1aW50LCB1aW50KTsK
LW5hdGl2ZSB1aW50MiBjbGFtcCh1aW50MiwgdWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBj
bGFtcCh1aW50MywgdWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBjbGFtcCh1aW50NCwgdWlu
dDQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQgY2xhbXAoaW50LCBpbnQsIGludCk7Ci1uYXRpdmUgaW50
MiBjbGFtcChpbnQyLCBpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQzIGNsYW1wKGludDMsIGludDMs
IGludDMpOwotbmF0aXZlIGludDQgY2xhbXAoaW50NCwgaW50NCwgaW50NCk7Ci1uYXRpdmUgZmxv
YXQgY2xhbXAoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyIGNsYW1wKGZsb2F0
MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBjbGFtcChmbG9hdDMsIGZsb2F0Mywg
ZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgY2xhbXAoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1u
YXRpdmUgZmxvYXQyeDIgY2xhbXAoZmxvYXQyeDIsIGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRp
dmUgZmxvYXQzeDIgY2xhbXAoZmxvYXQzeDIsIGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUg
ZmxvYXQ0eDIgY2xhbXAoZmxvYXQ0eDIsIGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxv
YXQyeDMgY2xhbXAoZmxvYXQyeDMsIGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQz
eDMgY2xhbXAoZmxvYXQzeDMsIGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMg
Y2xhbXAoZmxvYXQ0eDMsIGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgY2xh
bXAoZmxvYXQyeDQsIGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgY2xhbXAo
ZmxvYXQzeDQsIGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgY2xhbXAoZmxv
YXQ0eDQsIGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRv
cjwgKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPChpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVy
YXRvcjwodWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQsIGZsb2F0KTsK
LW5hdGl2ZSBib29sMiBvcGVyYXRvcjwodWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVy
YXRvcjwodWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwodWludDQsIHVpbnQ0
KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3Bl
cmF0b3I8KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPChpbnQ0LCBpbnQ0KTsK
LW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9w
ZXJhdG9yPChmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8KGZsb2F0NCwg
ZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPChmbG9hdDJ4MiwgZmxvYXQyeDIpOwot
bmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I8KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9v
bDR4MiBvcGVyYXRvcjwoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9wZXJh
dG9yPChmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I8KGZsb2F0
M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcjwoZmxvYXQ0eDMsIGZsb2F0
NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPChmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0
aXZlIGJvb2wzeDQgb3BlcmF0b3I8KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4
NCBvcGVyYXRvcjwoZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGlz
bmFuICovCi1uYXRpdmUgYm9vbCBpc25hbihmbG9hdCk7Ci0KLWJvb2wyIGlzbmFuKGZsb2F0MiB4
KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBp
c25hbihmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25h
bih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25hbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBp
c25hbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNuYW4oZmxvYXQ0IHgp
IHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gaXNuYW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNuYW4oeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gaXNuYW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICovCi1uYXRpdmUg
dm9pZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgb3BlcmF0b3JeICovCi1ib29sIG9wZXJhdG9yXihib29sIGEsIGJvb2wgYikgewotICAgIGlm
IChhKQotICAgICAgICByZXR1cm4gIWI7Ci0gICAgcmV0dXJuIGI7Ci19Ci1uYXRpdmUgaW50IG9w
ZXJhdG9yXihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcl4odWludCwgdWludCk7Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBpc2luZiAqLwotbmF0aXZlIGJvb2wgaXNpbmYoZmxvYXQpOwot
Ym9vbDIgaXNpbmYoZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wzIGlzaW5mKGZsb2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGlzaW5mKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzaW5mKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGlzaW5mKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sNCBpc2luZihmbG9hdDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBpc2luZih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBpc2luZih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc2luZih4WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3J8ICovCi1ib29sIG9w
ZXJhdG9yfChib29sIGEsIGJvb2wgYikgewotICAgIHJldHVybiBhIHx8IGI7Ci19Ci1uYXRpdmUg
aW50IG9wZXJhdG9yfChpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcnwodWludCwgdWlu
dCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZWdyZWVzICovCi1mbG9hdCBkZWdyZWVzKGZsb2F0
IHgpIHsKLSAgICByZXR1cm4geCAqIDE4MCAvIDMuMTQxNTk7Ci19Ci1mbG9hdDIgZGVncmVlcyhm
bG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGVncmVlcyh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgZGVncmVlcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZGVncmVlcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGRlZ3JlZXMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBkZWdyZWVzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gZGVncmVlcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZWdyZWVzKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZWdyZWVzKGZsb2F0MngyIHgp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGVncmVlcyhmbG9hdDN4MiB4
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MiBkZWdyZWVzKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZWdyZWVzKHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZWdyZWVzKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIGRlZ3JlZXMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGVncmVlcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVz
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVz
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVz
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZWdyZWVz
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZWdyZWVzKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVl
cyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVl
cyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVncmVl
cyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZWdyZWVzKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3Jl
ZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3Jl
ZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3Jl
ZXMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVncmVlcyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRlZ3Jl
ZXMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRlZ3JlZXMoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdy
ZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZWdy
ZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdy
ZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdy
ZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gZGVncmVlcyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdy
ZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gZGVncmVlcyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZWdy
ZWVzKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBTYW1wbGUgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMUQ8dWludD4sIHNhbXBsZXIs
IGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJl
MkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUo
VGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGUo
VGV4dHVyZTNEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQg
U2FtcGxlKFRleHR1cmUzRDx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9m
ZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUxRDx1aW50Mj4sIHNh
bXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTFEQXJy
YXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBs
ZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQyIFNhbXBsZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZUN1
YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBs
ZShUZXh0dXJlMUQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTNEPHVpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTNE
PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUg
dWludDMgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTFEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQg
bG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUyRDx1
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRl
eHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2Ft
cGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludDQgU2FtcGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
aW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMUQ8aW50
Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTFE
QXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxl
KFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBT
YW1wbGUoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PGludD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGUo
VGV4dHVyZTNEPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNh
bXBsZShUZXh0dXJlM0Q8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNl
dCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUxRDxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUxREFycmF5PGludDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUy
RDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShU
ZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShU
ZXh0dXJlM0Q8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBT
YW1wbGUoVGV4dHVyZTNEPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMUQ8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMURBcnJheTxp
bnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0
dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1w
bGUoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1w
bGUoVGV4dHVyZTNEPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDMgU2FtcGxlKFRleHR1cmUzRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQz
IG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTFEPGludDQ+LCBz
YW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUo
VGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDQg
U2FtcGxlKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQg
U2FtcGxlKFRleHR1cmUzRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
aW50MyBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmVDdWJlPGludDQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMUQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1
cmUxREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUyREFycmF5PGZs
b2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRl
eHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dDIgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkQ8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZShUZXh0dXJlM0Q8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJl
MUQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1w
bGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0
dXJlM0Q8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEPGZsb2F0ND4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZShUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1w
bGUoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIFNhbXBsZUxldmVsICovCi1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJl
MkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1
aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1
cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1u
YXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBs
ZUxldmVsKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVs
KFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDIg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRl
eHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJl
MkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxl
dmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1
aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludDQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBs
ZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVM
ZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50
IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNh
bXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUy
REFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVs
KFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGlu
dDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
TGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxl
dmVsKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
TE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2Ft
cGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0NCBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0
aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBT
YW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQg
U2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBs
ZUJpYXMgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50
MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50IFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlQ3Vi
ZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1
aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMgU2Ft
cGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMo
VGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQg
U2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJy
YXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBp
bnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0
dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQy
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBTYW1w
bGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBC
aWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGlu
dDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRl
eHR1cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmUy
RDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJp
YXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVDdWJl
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3Vi
ZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZl
IGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxm
bG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmVD
dWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJE
PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVy
ZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1
cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBm
bG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVCaWFzKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlR3JhZCAqLwotbmF0aXZl
IHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1
cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5
PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkp
OwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdy
YWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZl
IHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1
aW50MiBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRl
eHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDM+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50
MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMg
U2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJl
MkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDQgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBs
ZUdyYWQoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0
aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyREFy
cmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRp
dmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4
dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50MyBTYW1wbGVH
cmFkKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDM+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50
MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNh
bXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxp
bnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBp
bnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVy
ZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQz
IEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0
IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkp
OwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MiBT
YW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmVD
dWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQz
IEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxv
YXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBT
YW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBm
bG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2
ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxv
YXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3Jh
ZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3Jh
ZChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBE
RFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkp
OwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBzaW5oICovCi1uYXRpdmUgZmxvYXQgc2luaChmbG9hdCk7Ci1mbG9hdDIgc2luaChmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2luaCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
c2luaChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2lu
aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNp
bmgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzaW5oKGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBzaW5oKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBz
aW5oKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4
WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc2luaChmbG9hdDN4MiB4
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzaW5oKGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBzaW5oKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzaW5o
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNpbmgo
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBz
aW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luaCh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2luaChmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbmgoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2lu
aCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW5oKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzaW5oKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5o
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW5oKHhbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzaW5oKGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBz
aW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW5oKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbmgoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHg0IHNpbmgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNp
bmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgoeFszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5oKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gc2luaCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW5oKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2lu
aCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzaW5oKHhbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHkgKi8KLW5hdGl2ZSBmbG9hdCBk
ZHkoZmxvYXQpOwotZmxvYXQyIGRkeShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeSh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeShmbG9hdDMgeCkgewotICAgIGZsb2F0MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeSh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHkoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBkZHkoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gZGR5KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeSh4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgZGR5KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBk
ZHkoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5KGZsb2F0
NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5KHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5KGZs
b2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHko
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeShmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBk
ZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHkoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGRkeSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR5KGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGRkeSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR5KGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHko
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeSh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IGRkeShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeSh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBkZHkoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5KHhbMl1bM10pOwot
ICAgIHJlc3VsdFszXVszXSA9IGRkeSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I+PSAqLwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+
PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KHVpbnQsIHVpbnQpOwotbmF0aXZl
IGJvb2wgb3BlcmF0b3I+PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPj0o
dWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KHVpbnQzLCB1aW50Myk7Ci1u
YXRpdmUgYm9vbDQgb3BlcmF0b3I+PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPj0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PShpbnQzLCBpbnQzKTsK
LW5hdGl2ZSBib29sNCBvcGVyYXRvcj49KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPj0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPj0oZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZl
IGJvb2wyeDIgb3BlcmF0b3I+PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIg
b3BlcmF0b3I+PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I+
PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I+PShmbG9hdDJ4
MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I+PShmbG9hdDN4MywgZmxvYXQz
eDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I+PShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0
aXZlIGJvb2wyeDQgb3BlcmF0b3I+PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wz
eDQgb3BlcmF0b3I+PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0
b3I+PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZHN0ICovCi11
aW50NCBkc3QodWludDQgc3JjMCwgdWludDQgc3JjMSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAg
ICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAgcmVz
dWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWludDQgZHN0KGludDQgc3JjMCwgaW50NCBzcmMxKSB7Ci0gICAgaW50NCByZXN1bHQ7
Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55ICogc3JjMS55OwotICAg
IHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53OwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgZHN0KGZsb2F0NCBzcmMwLCBmbG9hdDQgc3JjMSkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55ICog
c3JjMS55OwotICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRvdCAqLwotdWlu
dCBkb3QodWludCBhLCB1aW50IGIpIHsKLSAgICByZXR1cm4gYSAqIGI7Ci19Ci11aW50IGRvdCh1
aW50MiBhLCB1aW50MiBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1aW50MyBhLCB1aW50MyBiKSB7Ci0gICAg
dWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFb
Ml0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1aW50NCBhLCB1aW50
NCBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0g
KiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBiWzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludCBhLCBpbnQgYikgewotICAgIHJl
dHVybiBhICogYjsKLX0KLWludCBkb3QoaW50MiBhLCBpbnQyIGIpIHsKLSAgICBpbnQgcmVzdWx0
ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IGRvdChpbnQz
IGEsIGludDMgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQg
ZG90KGludDQgYSwgaW50NCBiKSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICsgYVszXSAqIGJbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdCBh
LCBmbG9hdCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotZmxvYXQgZG90KGZsb2F0MiBhLCBm
bG9hdDIgYikgewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsg
YVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdDMgYSwgZmxvYXQzIGIpIHsKLSAgICBmbG9h
dCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMl0g
KiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxvYXQ0IGEsIGZsb2F0
NCBiKSB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBd
ICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICogYlsz
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXNmbG9hdCAq
LwotbmF0aXZlIGZsb2F0IGFzZmxvYXQoaW50KTsKLWZsb2F0MiBhc2Zsb2F0KGludDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
YXNmbG9hdChpbnQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFz
ZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNmbG9h
dChpbnQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
c2Zsb2F0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzZmxvYXQoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLW5hdGl2ZSBmbG9hdCBhc2Zsb2F0KHVpbnQpOwotZmxvYXQyIGFzZmxvYXQo
dWludDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgYXNmbG9hdCh1aW50MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IGFzZmxvYXQodWludDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXNmbG9hdCh4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgYXNmbG9hdChmbG9hdCB4KSB7Ci0gICAg
cmV0dXJuIHg7Ci19Ci1mbG9hdDIgYXNmbG9hdChmbG9hdDIgeCkgewotICAgIHJldHVybiB4Owot
fQotZmxvYXQzIGFzZmxvYXQoZmxvYXQzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0NCBh
c2Zsb2F0KGZsb2F0NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MiBhc2Zsb2F0KGZs
b2F0MngyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3gyIGFzZmxvYXQoZmxvYXQzeDIg
eCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0eDIgYXNmbG9hdChmbG9hdDR4MiB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MyBhc2Zsb2F0KGZsb2F0MngzIHgpIHsKLSAgICByZXR1
cm4geDsKLX0KLWZsb2F0M3gzIGFzZmxvYXQoZmxvYXQzeDMgeCkgewotICAgIHJldHVybiB4Owot
fQotZmxvYXQ0eDMgYXNmbG9hdChmbG9hdDR4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9h
dDJ4NCBhc2Zsb2F0KGZsb2F0Mng0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3g0IGFz
ZmxvYXQoZmxvYXQzeDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0eDQgYXNmbG9hdChm
bG9hdDR4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc25v
cm1hbCAqLwotbmF0aXZlIGJvb2wgaXNub3JtYWwoZmxvYXQpOwotCi1ib29sMiBpc25vcm1hbChm
bG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25vcm1hbCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbDMgaXNub3JtYWwoZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gaXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gaXNub3JtYWwoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2w0IGlzbm9ybWFsKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGlzbm9ybWFsKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzbm9y
bWFsKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IEludGVybG9ja2VkRXhjaGFuZ2UgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2Uo
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWlu
dCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNl
IGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
RXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwg
dGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVh
ZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNf
dWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hh
bmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0
aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVh
ZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgR2V0RGltZW5zaW9ucyAqLwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWlu
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZpY2UgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWlu
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxp
bnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0
aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwg
dGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0
aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4s
IGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0
ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgb3BlcmF0b3IrICovCi1uYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7Ci1uYXRpdmUg
dWludCBvcGVyYXRvcisodWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IrKGZsb2F0
LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUg
dWludDIgb3BlcmF0b3IrKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcisodWlu
dDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50MywgdWludDMpOwotbmF0aXZl
IHVpbnQzIG9wZXJhdG9yKyh1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IrKHVp
bnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludDQsIHVpbnQ0KTsKLW5hdGl2
ZSB1aW50NCBvcGVyYXRvcisodWludCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1
aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50MiwgaW50Mik7Ci1uYXRpdmUg
aW50MiBvcGVyYXRvcisoaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQyLCBp
bnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IrKGludDMsIGludDMpOwotbmF0aXZlIGludDMgb3Bl
cmF0b3IrKGludCwgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50MywgaW50KTsKLW5h
dGl2ZSBpbnQ0IG9wZXJhdG9yKyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKyhp
bnQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludDQsIGludCk7Ci1uYXRpdmUgZmxv
YXQyIG9wZXJhdG9yKyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKyhm
bG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0MiwgZmxvYXQpOwot
bmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBv
cGVyYXRvcisoZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhmbG9hdDMs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2
ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRv
cisoZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyLCBm
bG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDJ4Mik7Ci1u
YXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQz
eDIgb3BlcmF0b3IrKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0
b3IrKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IrKGZsb2F0M3gy
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyLCBmbG9hdDR4Mik7
Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxv
YXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0
b3IrKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0
LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0MngzLCBmbG9hdCk7
Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUg
ZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3Bl
cmF0b3IrKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0
NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDR4
Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQg
b3BlcmF0b3IrKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZs
b2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0LCBmbG9h
dDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRp
dmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDQg
b3BlcmF0b3IrKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3Ir
KGZsb2F0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0NHg0LCBm
bG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBvcGVy
YXRvcisodWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50NCk7Ci1uYXRpdmUgaW50
MiBvcGVyYXRvcisoaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50Myk7Ci1uYXRpdmUg
aW50NCBvcGVyYXRvcisoaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIpOwot
bmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3Ir
KGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyKTsKLW5hdGl2ZSBm
bG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKyhm
bG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0MngzKTsKLW5hdGl2ZSBm
bG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKyhm
bG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0KTsKLW5hdGl2ZSBm
bG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKyhm
bG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmcmFjICovCi1mbG9hdCBmcmFjKGZsb2F0
IHgpIHsKLSAgICByZXR1cm4geCAtIGZsb29yKHgpOwotfQotZmxvYXQyIGZyYWMoZmxvYXQyIHgp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZyYWMoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZy
YWMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZyYWMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmcmFj
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZnJhYyhmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gZnJhYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZnJh
YyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZyYWMoZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZnJhYyhmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBm
cmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZnJhYyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZnJhYyhm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZy
YWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmcmFjKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmcmFjKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJh
Yyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMoeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZyYWMoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmcmFjKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZnJhYyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgZnJhYyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZnJhYyhmbG9hdDN4NCB4KSB7Ci0gICAg
ZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJh
Yyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBmcmFjKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBmcmFjKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFj
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGZyYWMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJhYyh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZyYWMo
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZnJhYyh4WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc3RvcmUgKi8KLW5hdGl2ZSB2b2lkIHN0
b3JlKGRldmljZSBhdG9taWNfaW50KiwgaW50KTsKLW5hdGl2ZSB2b2lkIHN0b3JlKGRldmljZSBh
dG9taWNfdWludCosIHVpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUodGhyZWFkZ3JvdXAgYXRvbWlj
X2ludCosIGludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmVmcmFjdCAqLwotZmxvYXQgcmVmcmFjdChm
bG9hdCBpLCBmbG9hdCBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdCByZXN1bHQ7Ci0gICAgZmxv
YXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAg
aWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0g
KGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0MiByZWZyYWN0KGZsb2F0
MiBpLCBmbG9hdDIgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9h
dCBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBp
ZiAoayA8IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAo
ZXRhICogZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQzIHJlZnJhY3QoZmxvYXQz
IGksIGZsb2F0MyBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZsb2F0
IGsgPSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlm
IChrIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChl
dGEgKiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDQgcmVmcmFjdChmbG9hdDQg
aSwgZmxvYXQ0IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxvYXQg
ayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAgaWYg
KGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0gKGV0
YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGxv
ZzEwICovCi1mbG9hdCBsb2cxMChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGxvZyh4KSAvIGxvZyhm
bG9hdCgxMCkpOwotfQotZmxvYXQyIGxvZzEwKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cxMCh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZzEwKGZsb2F0MyB4KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsb2cxMCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZzEwKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cx
MCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBs
b2cxMCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbG9nMTAoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMTAoZmxvYXQzeDIgeCkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBs
b2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbG9nMTAoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBs
b2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBsb2cxMCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgbG9nMTAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgbG9nMTAoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cx
MCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgbG9nMTAoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cx
MCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cxMCh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
b2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgbG9nMTAoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBs
b2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbG9nMTAoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
b2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMTAoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
b2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cxMCh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsb2cx
MCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
b3BlcmF0b3IvICovCi1uYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsIGludCk7Ci1uYXRpdmUgdWlu
dCBvcGVyYXRvci8odWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IvKGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWlu
dDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci8odWludCwg
dWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50MywgdWludDMpOwotbmF0aXZlIHVp
bnQzIG9wZXJhdG9yLyh1aW50MywgdWludCk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IvKHVpbnQs
IHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1
aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLyh1aW50
LCB1aW50NCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50
MiBvcGVyYXRvci8oaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLyhpbnQsIGludDIp
OwotbmF0aXZlIGludDMgb3BlcmF0b3IvKGludDMsIGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0
b3IvKGludDMsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8oaW50LCBpbnQzKTsKLW5hdGl2
ZSBpbnQ0IG9wZXJhdG9yLyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLyhpbnQ0
LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludCwgaW50NCk7Ci1uYXRpdmUgZmxvYXQy
IG9wZXJhdG9yLyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLyhmbG9h
dDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDIpOwotbmF0
aXZlIGZsb2F0MyBvcGVyYXRvci8oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVy
YXRvci8oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLyhmbG9hdCwgZmxv
YXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBm
bG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci8o
ZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0MngyLCBmbG9h
dDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIg
b3BlcmF0b3IvKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3Iv
KGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9h
dDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1u
YXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
eDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3Iv
KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IvKGZsb2F0Mngz
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDJ4Myk7Ci1u
YXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxv
YXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0
b3IvKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0NHgz
LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0NHgzLCBmbG9hdCk7
Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxv
YXQyeDQgb3BlcmF0b3IvKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3Bl
cmF0b3IvKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IvKGZsb2F0
LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0M3g0LCBmbG9hdDN4
NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3Bl
cmF0b3IvKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IvKGZs
b2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4
NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHlfZmluZSAqLwotZmxvYXQgZGR5X2ZpbmUoZmxv
YXQgeCkgewotICAgIHJldHVybiBkZHkoeCk7Ci19Ci1mbG9hdDIgZGR5X2ZpbmUoZmxvYXQyIHgp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9maW5lKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgZGR5X2ZpbmUoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgZGR5X2ZpbmUoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeV9maW5l
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHlfZmluZShmbG9hdDJ4
MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5l
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZHlfZmluZShm
bG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBkZHlfZmluZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5l
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MyBkZHlfZmluZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRkeV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHlfZmluZShmbG9hdDN4MyB4KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5l
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBkZHlfZmluZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9maW5lKHhb
M11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHlfZmluZShmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5l
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRk
eV9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHlfZmluZShmbG9hdDN4NCB4KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9maW5l
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGRkeV9maW5lKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4NCBkZHlfZmluZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9maW5lKHhb
M11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9maW5lKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9maW5l
KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeV9maW5lKHhbM11bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbnkgKi8KLWJvb2wgYW55KGJv
b2wgeCkgewotICAgIHJldHVybiB4OwotfQotYm9vbCBhbnkoYm9vbDIgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShi
b29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDQg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFsyXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkodWludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJv
b2wgYW55KHVpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQzIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueSh1aW50NCB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM10gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludCB4KSB7Ci0gICAgcmV0dXJu
IHggIT0gMDsKLX0KLWJvb2wgYW55KGludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoaW50MyB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bnkoaW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0IHgp
IHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkoZmxvYXQyIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYW55KGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkoZmxvYXQyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFueShmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0eDIgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsxXSAh
PSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDMgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYW55KGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4MyB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsyXSAhPSAwKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wg
YW55KGZsb2F0NHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNd
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVszXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4MiB4KSB7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbnkoYm9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDR4
MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4MyB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsx
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
Ym9vbDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkoYm9vbDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoYm9vbDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsw
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbnkoYm9vbDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsyXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsx
XVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgZGR5X2NvYXJzZSAqLwotZmxvYXQgZGR5X2NvYXJzZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJu
IGRkeSh4KTsKLX0KLWZsb2F0MiBkZHlfY29hcnNlKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHlfY29h
cnNlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlf
Y29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZGR5X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGRkeV9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJzZSh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBkZHlfY29hcnNlKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeV9j
b2Fyc2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeV9jb2Fyc2Uo
ZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBkZHlfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fy
c2UoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeV9jb2Fyc2Uo
ZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBkZHlfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fy
c2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRk
eV9jb2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fy
c2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5X2NvYXJzZShmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fy
c2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2Nv
YXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHlfY29hcnNlKGZsb2F0NHgzIHgpIHsK
LSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2Nv
YXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfY29hcnNlKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlf
Y29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fyc2UoeFszXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeV9jb2Fyc2UoZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlf
Y29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9jb2Fyc2Uo
eFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeV9jb2Fyc2UoZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlf
Y29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2Uo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRkeV9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2NvYXJz
ZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR5X2NvYXJzZShm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGRkeV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJz
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZGR5X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfY29h
cnNlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9jb2Fyc2UoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBkZHlfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeV9jb2Fyc2UoeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJh
dG9yKysgKi8KLXVpbnQgb3BlcmF0b3IrKyh1aW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVl
ICsgMTsKLX0KLWludCBvcGVyYXRvcisrKGludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAr
IDE7Ci19Ci1mbG9hdCBvcGVyYXRvcisrKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVl
ICsgMTsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkQW5kICovCi1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQs
IHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNf
dWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChk
ZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVh
ZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRB
bmQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2Ug
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFk
Z3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91
cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yfiAqLwotYm9vbCBvcGVyYXRv
cn4oYm9vbCB2YWx1ZSkgewotICAgIHJldHVybiAhdmFsdWU7Ci19Ci1uYXRpdmUgaW50IG9wZXJh
dG9yfihpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgZGR4ICovCi1uYXRpdmUgZmxvYXQgZGR4KGZsb2F0KTsKLWZsb2F0MiBkZHgoZmxvYXQy
IHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBk
ZHgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4KHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4KGZsb2F0NCB4KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gZGR4KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeCh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBkZHgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeChmbG9hdDJ4
MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGRkeChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyBkZHgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4KGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4KHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeCh4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IGRkeChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRk
eCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeCh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
ZGR4KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHgoZmxvYXQ0
eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZGR4KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBkZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4KHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGRkeCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHgoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9j
a2VkTWF4ICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX3VpbnQq
LCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNl
IGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
TWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhy
ZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21p
Y19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRN
YXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFk
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3Vp
bnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhy
ZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfaW50
KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvc2ggKi8K
LW5hdGl2ZSBmbG9hdCBjb3NoKGZsb2F0KTsKLWZsb2F0MiBjb3NoKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGNvc2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjb3NoKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zaCh4WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNvc2goZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Y29zaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IGNvc2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNvc2goZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjb3NoKGZsb2F0M3gyIHgpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNvc2goZmxvYXQ0eDIgeCkgewotICAgIGZs
b2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvc2go
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNvc2goZmxvYXQyeDMg
eCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY29zaChmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3NoKGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3No
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IGNvc2goZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2go
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBj
b3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGNvc2goZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNv
c2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gY29zaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgY29zaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjb3No
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3NoKHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGNvc2goeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeF9jb2Fyc2UgKi8KLWZsb2F0IGRkeF9jb2Fyc2Uo
ZmxvYXQgeCkgewotICAgIHJldHVybiBkZHgoeCk7Ci19Ci1mbG9hdDIgZGR4X2NvYXJzZShmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJzZSh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfY29hcnNlKHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgZGR4X2NvYXJzZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhf
Y29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9jb2Fyc2UoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHhfY29hcnNlKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4X2NvYXJzZSh4WzJdKTsK
LSAgICByZXN1bHRbM10gPSBkZHhfY29hcnNlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiBkZHhfY29hcnNlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2Uo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4X2NvYXJzZShmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2Uo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBkZHhfY29hcnNlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2Uo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHhfY29hcnNlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRk
eF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIGRkeF9jb2Fyc2UoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJz
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4
X2NvYXJzZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJz
ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29h
cnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBkZHhfY29hcnNlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBk
ZHhfY29hcnNlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29h
cnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCBkZHhfY29hcnNlKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9j
b2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJzZSh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGRkeF9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IGRkeF9jb2Fyc2UoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4
X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNl
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gZGR4X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBk
ZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9jb2Fyc2UoeFsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBkZHhfY29hcnNlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGhpZ2ggKi8KLXVpbnQgZmlyc3RiaXRoaWdoKHVpbnQg
eCkgewotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMSkpICE9IDApCi0gICAgICAgIHJldHVybiAw
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMCkpICE9IDApCi0gICAgICAgIHJldHVybiAxOwot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyOwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAyOCkpICE9IDApCi0gICAgICAgIHJldHVybiAzOwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAyNykpICE9IDApCi0gICAgICAgIHJldHVybiA0OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAyNikpICE9IDApCi0gICAgICAgIHJldHVybiA1OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAyNSkpICE9IDApCi0gICAgICAgIHJldHVybiA2OwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAyNCkpICE9IDApCi0gICAgICAgIHJldHVybiA3OwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAyMykpICE9IDApCi0gICAgICAgIHJldHVybiA4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8
PCAyMikpICE9IDApCi0gICAgICAgIHJldHVybiA5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAy
MSkpICE9IDApCi0gICAgICAgIHJldHVybiAxMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjAp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMTE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE5KSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOCkpICE9
IDApCi0gICAgICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTcpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMTQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE2KSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDE1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNSkpICE9IDApCi0g
ICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTQpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMTc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEzKSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDE4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMikpICE9IDApCi0gICAgICAg
IHJldHVybiAxOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTEpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMjA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDIxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDIyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIz
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI0Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCA2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI1OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCA1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI2OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCA0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI3OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI4OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI5OwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMwOwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMxOwotICAgIHJldHVybiAzMjsKLX0KLXVp
bnQgZmlyc3RiaXRoaWdoKGludCB4KSB7Ci0gICAgcmV0dXJuIGZpcnN0Yml0aGlnaCh1aW50KHgp
KTsKLX0KLXVpbnQyIGZpcnN0Yml0aGlnaCh1aW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJz
dGJpdGhpZ2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGZpcnN0Yml0aGln
aCh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0
aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50
NCBmaXJzdGJpdGhpZ2godWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBmaXJzdGJpdGhpZ2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQyIGZpcnN0
Yml0aGlnaChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmly
c3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKGludDMgeCkgewotICAgIHVp
bnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0aGln
aCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3RiaXRoaWdoKGludDQg
eCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJpdGhpZ2goeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHJjcCAqLwotZmxv
YXQgcmNwKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHg7Ci19Ci1mbG9hdDIgcmNwKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByY3AoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
cmNwKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByY3Ao
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJjcCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJjcChmbG9hdDQgeCkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHJjcCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByY3AoeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gcmNwKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByY3AoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJjcChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3Ao
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiByY3AoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
cmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBy
Y3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByY3AoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgcmNwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJjcChm
bG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJj
cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJjcCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByY3Ao
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmNwKHhbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByY3AoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
cmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBy
Y3AoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByY3AoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByY3AoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IHJjcCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcmNwKGZsb2F0
NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByY3AoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gcmNwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJjcCh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSByY3AoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcmNwKHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmd2lkdGgg
Ki8KLQotZmxvYXQgZndpZHRoKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gYWJzKGRkeCh4KSkgKyBh
YnMoZGR5KHgpKTsKLX0KLWZsb2F0MiBmd2lkdGgoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmd2lk
dGgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmd2lkdGgoZmxvYXQzIHgp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBmd2lkdGgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZndpZHRoKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZndpZHRoKGZsb2F0NCB4KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZndpZHRoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZ3aWR0aCh4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBmd2lkdGgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGZ3aWR0aChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZndp
ZHRoKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGZ3aWR0aChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lk
dGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgoeFsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZ3aWR0aChmbG9hdDJ4MyB4
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmd2lk
dGgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
d2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lk
dGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgZndpZHRoKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBmd2lkdGgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IGZ3aWR0aChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
d2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lk
dGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmd2lkdGgo
eFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZ3aWR0aChmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
ZndpZHRoKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmd2lkdGgo
ZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
d2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmd2lk
dGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZ3aWR0aCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmd2lkdGgoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGZ3aWR0aCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmd2lkdGgoeFszXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGxlcnAgKi8KLWZs
b2F0IGxlcnAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcykgewotICAgIHJldHVybiB4ICogKDEg
LSBzKSArIHkgKiBzOwotfQotZmxvYXQyIGxlcnAoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9hdDIg
eikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBd
LCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbGVycChmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0MyB6
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0s
IHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gbGVycCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IGxlcnAoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxlcnAoeFsy
XSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbGVycCh4WzNdLCB5WzNdLCB6WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbGVycChmbG9hdDJ4MiB4LCBmbG9hdDJ4
MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJw
KHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsx
XVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IGxlcnAoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0M3gy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgbGVycChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4MiB6
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5
WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1b
MF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxlcnAoeFszXVswXSwgeVszXVswXSwg
elszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbGVycChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5LCBm
bG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxl
cnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4
WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1b
MV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwg
eVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBd
WzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0s
IHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsZXJwKGZsb2F0M3gz
IHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBs
ZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAo
eFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBd
WzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0s
IHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsy
XVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxlcnAoZmxv
YXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJw
KHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxlcnAoeFsz
XVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJd
LCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlb
MV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsy
XSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGVycCh4WzNdWzJdLCB5WzNdWzJdLCB6
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbGVycChmbG9hdDJ4NCB4
LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVy
cCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhb
MV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxlcnAoeFswXVsz
XSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4WzFdWzNdLCB5
WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbGVycChm
bG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxl
cnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1b
Ml0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxlcnAoeFswXVszXSwg
eVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4WzFdWzNdLCB5WzFd
WzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZXJwKHhbMl1bM10sIHlbMl1bM10s
IHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsZXJwKGZsb2F0NHg0
IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
ZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJd
WzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZXJwKHhbM11bMV0s
IHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVsw
XVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlbMl1bMl0sIHpb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxlcnAoeFszXVsyXSwgeVszXVsyXSwgelszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gbGVycCh4WzNdWzNdLCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGlzdGFuY2UgKi8KLWZsb2F0IGRpc3Rh
bmNlKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KLWZs
b2F0IGRpc3RhbmNlKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVybiBsZW5ndGgoeCAt
IHkpOwotfQotZmxvYXQgZGlzdGFuY2UoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgcmV0dXJu
IGxlbmd0aCh4IC0geSk7Ci19Ci1mbG9hdCBkaXN0YW5jZShmbG9hdDQgeCwgZmxvYXQ0IHkpIHsK
LSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25NYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA5MGMyOTlhMmYw
ZjhlMGVjNzA2ZDkxZDNjZmFjZTFjODgwN2Q2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3QgU3Vic3RyaW5nTG9jYXRp
b24gewotICAgIHVuc2lnbmVkIHN0YXJ0OwotICAgIHVuc2lnbmVkIGVuZDsKLX07Ci0KLUhhc2hN
YXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwKCk7Ci0KLXVuc2lnbmVkIGZpcnN0RnVuY3Rpb25PZmZzZXRJblN0YW5kYXJkTGlicmFy
eSgpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGli
cmFyeVV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZDQzMzBk
MDE5MzY0M2FhYmU5NDBlOTliMDU2OTAzYzEyZmEzMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExT
TFBhcnNlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMU3Rh
bmRhcmRMaWJyYXJ5LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1h
cC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDxwYWwvR3VuemlwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1zdGF0
aWMgU3RyaW5nIGRlY29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnkoKQotewotICAgIGF1
dG8gZGVjb21wcmVzc2VkU3RhbmRhcmRMaWJyYXJ5ID0gZ3VuemlwKFdITFNMU3RhbmRhcmRMaWJy
YXJ5LCBzaXplb2YoV0hMU0xTdGFuZGFyZExpYnJhcnkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChkZWNvbXByZXNzZWRTdGFuZGFyZExpYnJhcnkuZGF0YSgpLCBkZWNvbXByZXNzZWRT
dGFuZGFyZExpYnJhcnkuc2l6ZSgpKTsKLX0KLQotY2xhc3MgTmFtZUZpbmRlciA6IHB1YmxpYyBW
aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBIYXNoU2V0PFN0cmluZz4gdGFrZUZ1bmN0aW9uTmFtZXMo
KQotICAgIHsKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3RkOjpz
d2FwKHJlc3VsdCwgbV9mdW5jdGlvbk5hbWVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxs
RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb25OYW1lcy5hZGQo
Y2FsbEV4cHJlc3Npb24ubmFtZSgpKTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJl
c3Npb24pOwotICAgIH0KLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Z1bmN0aW9uTmFtZXM7Ci19
OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJkTGlicmFyeShQcm9ncmFt
JiBwcm9ncmFtLCBQYXJzZXImIHBhcnNlciwgYm9vbCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkp
Ci17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRMaWJyYXJ5KGRl
Y29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgaWYgKHBhcnNlRnVsbFN0
YW5kYXJkTGlicmFyeSkgewotICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNl
KHByb2dyYW0sIHN0YW5kYXJkTGlicmFyeS5nZXQoKSwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGli
cmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgIGlmICghcGFy
c2VSZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFyc2VSZXN1bHQu
ZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4+IHN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwKGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCgpKTsKLQot
ICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcoc3RhbmRhcmRMaWJyYXJ5LmdldCgpKS5z
dWJzdHJpbmcoMCwgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCkpOwotICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3RyaW5nVmlldywgUGFy
c2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFy
eSk7Ci0gICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KHBhcnNlUmVzdWx0LmVycm9yKCkpOwotCi0gICAgTmFtZUZpbmRlciBuYW1lRmluZGVyOwotICAg
IG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgSGFzaFNldDxTdHJpbmc+
IGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VGdW5jdGlvbk5hbWVzKCk7Ci0gICAgSGFz
aFNldDxTdHJpbmc+IGFsbEZ1bmN0aW9uTmFtZXM7Ci0gICAgLy8gVGhlIG5hbWUgb2YgYSBjYWxs
IHRvIGEgY2FzdCBvcGVyYXRvciBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSwgc28gd2UgY2FuJ3Qg
bWF0Y2ggdGhlbSB1cCBjb3JyZWN0bHkuCi0gICAgLy8gSW5zdGVhZCwganVzdCBpbmNsdWRlIGFs
bCBjYXN0aW5nIG9wZXJhdG9ycy4KLSAgICBmdW5jdGlvbk5hbWVzLmFkZCgib3BlcmF0b3IgY2Fz
dCJfc3RyKTsKLSAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFuIGF1dGhvciBjYW4n
dCB3cml0ZSBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGFueXRoaW5nIGlu
IHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICAgIC8vIElmIHRoZXkgZG8gc28sIHdlIG5lZWQgdG8g
bWFrZSBzdXJlIGl0IGNvbGxpZGVzLCBzbyB3ZSBpbmNsdWRlIGFsbCBwb3RlbnRpYWwgZHVwbGlj
YXRlcyBoZXJlLCBhbmQgdGhlICJjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyIgcGFzcyBlbmZvcmNl
cyBpdC4KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpKQotICAgICAgICBmdW5jdGlvbk5hbWVzLmFkZChmdW5jdGlvbkRlZmlu
aXRpb24tPm5hbWUoKSk7Ci0gICAgd2hpbGUgKCFmdW5jdGlvbk5hbWVzLmlzRW1wdHkoKSkgewot
ICAgICAgICBhdXRvIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQgPSBwcm9ncmFtLm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOwotICAgICAgICBhdXRvIGZ1bmN0aW9u
RGVmaW5pdGlvbnNDb3VudCA9IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZnVuY3Rpb25OYW1lcykgewotICAgICAg
ICAgICAgaWYgKGFsbEZ1bmN0aW9uTmFtZXMuY29udGFpbnMobmFtZSkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gc3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25NYXAuZ2V0KCkuZmluZChuYW1lKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvciA9
PSBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcoc3Rh
bmRhcmRMaWJyYXJ5LmdldCgpKS5zdWJzdHJpbmcoaXRlcmF0b3ItPnZhbHVlLnN0YXJ0LCBpdGVy
YXRvci0+dmFsdWUuZW5kIC0gaXRlcmF0b3ItPnZhbHVlLnN0YXJ0KTsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0iKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oc3RyaW5nVmlldyk7Ci0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBwcm9ncmFtLmZ1bmN0aW9u
RGVmaW5pdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFy
c2VyLnBhcnNlKHByb2dyYW0sIHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICAgICAgaWYgKCFw
YXJzZVJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFyc2VS
ZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgewotICAgICAgICAgICAg
ICAgIGlmIChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCkgIT0gc3RhcnQpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibm9uIG5hdGl2ZSBzdGRsaWIgZnVuY3Rpb246
ICciLCBuYW1lLCAiJyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYWxsRnVuY3Rpb25O
YW1lcy5hZGQobmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICggOyBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uc0NvdW50IDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygp
LnNpemUoKTsgKytuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50KQotICAgICAgICAgICAg
bmFtZUZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zKClbbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudF0pOwotICAgICAgICBmb3IgKCA7
IGZ1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygp
LnNpemUoKTsgKytmdW5jdGlvbkRlZmluaXRpb25zQ291bnQpCi0gICAgICAgICAgICBuYW1lRmlu
ZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2Z1bmN0aW9u
RGVmaW5pdGlvbnNDb3VudF0pOwotICAgICAgICBmdW5jdGlvbk5hbWVzID0gbmFtZUZpbmRlci50
YWtlRnVuY3Rpb25OYW1lcygpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyZjM4MjQ3MWE2MDQ3ODdiMDcyNDBmMzli
NjI3NWU1MjI5NWE2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGli
cmFyeVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFBhcnNlcjsKLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQs
IEVycm9yPiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mLCBQYXJzZXImLCBib29sIHBh
cnNlRnVsbFN0YW5kYXJkTGlicmFyeSk7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTgzMmZkMTc2NGNkOTZiMGJiNWY4ZjQxYTgy
ZmU1MTlmYzI5MTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCcmVhay5oIgotI2luY2x1ZGUgIldITFNMQ29u
dGludWUuaCIKLSNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xGYWxsdGhyb3Vn
aC5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1l
bnQuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFByb2dy
YW0uaCIKLSNpbmNsdWRlICJXSExTTFJldHVybi5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoQ2Fz
ZS5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5o
IgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEJl
aGF2aW9yIDogdWludDhfdCB7Ci0gICAgICAgIFJldHVybiA9IDEgPDwgMCwKLSAgICAgICAgQnJl
YWsgPSAxIDw8IDEsCi0gICAgICAgIENvbnRpbnVlID0gMSA8PCAyLAotICAgICAgICBGYWxsdGhy
b3VnaCA9IDEgPDwgMywKLSAgICAgICAgTm90aGluZyA9IDEgPDwgNAotICAgIH07Ci0KLSAgICBP
cHRpb25TZXQ8QmVoYXZpb3I+IHRha2VGdW5jdGlvbkJlaGF2aW9yKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3N0YWNrLnNpemUoKSA9PSAxKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhY2sudGFr
ZUxhc3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkJyZWFr
IH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpGYWxsdGhyb3VnaCB9
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Q29udGludWUgfSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpSZXR1cm4gfSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgICAgICBp
ZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9z
dGFjay50YWtlTGFzdCgpOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAg
ICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOwotICAgICAgICBiLmFkZChCZWhhdmlv
cjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
Ly8gVGhlIGluaXRpYWxpemF0aW9uIGFsd2F5cyBoYXMgYSBiZWhhdmlvciBvZiBOb3RoaW5nLCB3
aGljaCB3ZSBhbHJlYWR5IGFkZCB1bmNvbmRpdGlvbmFsbHkgYmVsb3csCi0gICAgICAgIC8vIHNv
IHdlIGNhbiBqdXN0IGlnbm9yZSB0aGUgaW5pdGlhbGl6YXRpb24uCi0KLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsK
LSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAgYi5yZW1vdmUoQmVo
YXZpb3I6OkNvbnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAg
ICAgICBtX3N0YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6V2hp
bGVMb29wJiB3aGlsZUxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAg
ICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9y
OjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAg
bV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENh
c2UmIHN3aXRjaENhc2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChz
d2l0Y2hDYXNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50
JiBzd2l0Y2hTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoc3dpdGNoU3Rh
dGVtZW50LnN3aXRjaENhc2VzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3N0YWNrLmFw
cGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7IH07Ci0gICAg
ICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygp
KSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAgICAg
ICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICByZWR1Y3Rpb24gPSBy
ZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWR1Y3Rpb24uY29udGFpbnMo
QmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dpdGNo
IHN0YXRlbWVudCBtdXN0IGVuZCBpbiBhIGJyZWFrL2ZhbGx0aHJvdWdoL3JldHVybiIsIHN3aXRj
aFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAg
cmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6RmFsbHRocm91Z2gpOwotICAgICAgICByZWR1Y3Rp
b24uYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQocmVkdWN0
aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVt
ZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVt
ZW50LmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIE9wdGlvblNl
dDxCZWhhdmlvcj4gYlByaW1lOwotICAgICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkg
ewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgp
KTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGJQcmltZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBiUHJpbWUgPSB7IEJlaGF2aW9yOjpOb3RoaW5nIH07Ci0gICAgICAgIG1f
c3RhY2suYXBwZW5kKGIgfCBiUHJpbWUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1f
c3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkJsb2NrJiBibG9jaykgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChibG9j
ay5zdGF0ZW1lbnRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3N0YWNrLmFwcGVuZCh7
IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7IH07Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2suc3RhdGVtZW50cygpLnNpemUoKSAtIDE7ICsraSkg
ewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMoKVtpXSk7
Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBpZiAo
IWIuY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIlN0YXRlbWVudCBpbnNpZGUgYW4gaW5uZXIgYmxvY2sgbXVzdCBiZSByZWFjaGFi
bGUuIiwgYmxvY2suc3RhdGVtZW50cygpW2ldLT5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGIucmVtb3ZlKEJlaGF2
aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKEJlaGF2aW9yOjpGYWxs
dGhyb3VnaCkpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRmFsbHRocm91Z2gg
bXVzdCBiZSB0aGUgbGFzdCBzdGF0ZW1lbnQgaW4gYSBibG9jay4iLCBibG9jay5zdGF0ZW1lbnRz
KClbaV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmVkdWN0aW9uID0gcmVkdWN0aW9uIHwgYjsKLSAgICAgICAg
fQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2Jsb2NrLnN0
YXRlbWVudHMoKS5zaXplKCkgLSAxXSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAg
ICAgIG1fc3RhY2suYXBwZW5kKHJlZHVjdGlvbiB8IGIpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgIH0KLQot
ICAgIFZlY3RvcjxPcHRpb25TZXQ8QmVoYXZpb3I+PiBtX3N0YWNrOwotfTsKLQotRXhwZWN0ZWQ8
dm9pZCwgRXJyb3I+IGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSAgICBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIgc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOwot
ICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmlu
aXRpb25zKCkpIHsKLSAgICAgICAgc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLlZpc2l0b3I6OnZp
c2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChzdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIucmVzdWx0KCk7Ci0gICAgICAgIGF1dG8gYmVoYXZpb3IgPSBzdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIudGFrZUZ1bmN0aW9uQmVoYXZpb3IoKTsKLSAgICAgICAgaWYgKG1hdGNoZXMoZnVu
Y3Rpb25EZWZpbml0aW9uLT50eXBlKCksIHByb2dyYW0uaW50cmluc2ljcygpLnZvaWRUeXBlKCkp
KSB7Ci0gICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
OjpCZWhhdmlvcjo6UmV0dXJuKTsKLSAgICAgICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgICAgIGlmIChi
ZWhhdmlvciAhPSBPcHRpb25TZXQ8U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcj4o
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBl
bmQgYSB2b2lkIGZ1bmN0aW9uIHdpdGggYSBicmVhaywgY29udGludWUsIG9yIGZhbGx0aHJvdWdo
LiIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChiZWhhdmlvciAhPSBTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpSZXR1cm4pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJOb24tdm9pZCBmdW5jdGlvbnMgbXVzdCByZXR1
cm4gYSB2YWx1ZSBvbiBhbGwgY29kZSBwYXRocy4iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3Rh
dGVtZW50QmVoYXZpb3JDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRl
ZWUwM2Q2NjQ1NGY2Y2QwYzY2MzY4ODkzOWUxZjhmZjI3ZDA4NWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYv
RXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tTdGF0ZW1lbnRC
ZWhhdmlvcihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJjYzkwYTM2NDA1YTJlZDE3NGRkMzU2MzJkNjY5YTQ5NzEyOGJm
MmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3Jz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZUhhc2guaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBGaW5kQWxsVHlwZXMgOiBwdWJsaWMgVmlzaXRvciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmluZEFsbFR5cGVzKCkgPSBkZWZhdWx0OwotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7IHBvaW50ZXJUeXBl
IH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0gICAgfQotCi0gICAg
dm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5
IHsgYXJyYXlSZWZlcmVuY2VUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJheVJl
ZmVyZW5jZVR5cGUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmIGFy
cmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChVbm5h
bWVkVHlwZUtleSB7IGFycmF5VHlwZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlU
eXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
JiBlbnVtZXJhdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhcHBlbmRO
YW1lZFR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQo
ZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGFwcGVuZE5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgVmlz
aXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNp
dChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5kTmFtZWRUeXBlKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAg
fQotCi0gICAgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4gdGFrZVVubmFtZWRUeXBlcygpCi0gICAg
ewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX3VubmFtZWRUeXBlcyk7Ci0gICAgfQotCi0gICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+PiB0YWtlTmFtZWRU
eXBlcygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX25hbWVkVHlwZXMpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZE5hbWVkVHlwZShBU1Q6Ok5hbWVkVHlwZSYg
dHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSB3YXkgd2Ugd2FsayB0aGUgQVNUIGVuc3VyZXMg
d2Ugc2hvdWxkIG5ldmVyIHZpc2l0IGEgbmFtZWQgdHlwZSB0d2ljZS4KLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9uYW1lZFR5cGVzKQotICAgICAgICAg
ICAgQVNTRVJUKCZlbnRyeS5nZXQoKS51bmlmeU5vZGUoKSAhPSAmdHlwZS51bmlmeU5vZGUoKSk7
Ci0jZW5kaWYKLSAgICAgICAgbV9uYW1lZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICB9Ci0KLSAg
ICBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiBtX3VubmFtZWRUeXBlczsKLSAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IG1fbmFtZWRUeXBlczsKLX07Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0mIHBy
b2dyYW0pCi17Ci0gICAgRmluZEFsbFR5cGVzIGZpbmRBbGxUeXBlczsKLSAgICBmaW5kQWxsVHlw
ZXMuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIGF1dG8gdW5uYW1lZFR5cGVzID0g
ZmluZEFsbFR5cGVzLnRha2VVbm5hbWVkVHlwZXMoKTsKLSAgICBhdXRvIG5hbWVkVHlwZXMgPSBm
aW5kQWxsVHlwZXMudGFrZU5hbWVkVHlwZXMoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IHRy
dWU7Ci0KLSAgICBmb3IgKGF1dG8mIHVubmFtZWRUeXBlS2V5IDogdW5uYW1lZFR5cGVzKSB7Ci0g
ICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gdW5uYW1lZFR5cGVLZXkudW5uYW1lZFR5cGUoKTsK
LSAgICAgICAgYXV0byBsb2NhdGlvbiA9IHVubmFtZWRUeXBlLmNvZGVMb2NhdGlvbigpOwotCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJz
KCksICZ1bm5hbWVkVHlwZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAg
ICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgcGFy
YW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAg
ICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51
bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7
Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3RvcikpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGRlZmF1
bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9yIGNhc3Qi
X3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQ
YXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbS5hcHBl
bmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1Y3Rv
ciIpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkVHlwZSA6IG5hbWVkVHlwZXMpIHsK
LSAgICAgICAgaWYgKG1hdGNoZXMobmFtZWRUeXBlLCBwcm9ncmFtLmludHJpbnNpY3MoKS52b2lk
VHlwZSgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBl
KSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFT
VDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkuaXNBdG9taWMoKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGF1dG8gbG9jYXRpb24gPSBuYW1lZFR5cGUuZ2V0KCkuY29kZUxvY2F0
aW9uKCk7Ci0KLSAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwg
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJs
ZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBj
b3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0
dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxv
Y2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJy
YXJ5KSk7Ci0gICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7
Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2Fz
dDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
c3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKTsKLSAgICAgICAgICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24s
IEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6
OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01v
ZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1v
dmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3RydWN0b3IiKSk7Ci0g
ICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZhMjI1NTBlYTJmYmQyYmIyMTYyMGRhMDI1ZjgxZGFlMWQ0ZmRhNWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVD
b25zdHJ1Y3RvcnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA1MDczODIzYzdkYTFkN2Ex
MjdmM2Q1NmJiNmYyMDUxYTlkZmZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5
bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
U3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNM
UHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBz
eW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBi
b29sIGlzT3BlcmF0b3IgPSB0cnVlOwotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZpbml0
aW9uIDogcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0byBs
b2NhdGlvbiA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbjEgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBB
U1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiks
IFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVE
ZWNsYXJhdGlvbjIgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9j
YXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRp
b24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsK
LSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICAg
ICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjEpKTsK
LSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlv
bjIpKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRvcj09
Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdN
b2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQo
V1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIG9wZXJhdG9yPT0gZm9yIGVu
dW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZh
cmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
bG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRyLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsK
LSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlv
bikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6
OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgZW51bWVyYXRpb25EZWZpbml0aW9uLT50
eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIs
IGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAg
IGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3Jl
YXRlIGNvcHkgY29uc3RydWN0b3IgZm9yIGVudW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygp
LCAmZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCksIFN0cmluZygpLCBudWxscHRyLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsK
LSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlv
bikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6
OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3Rh
bmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSAnb3BlcmF0b3IgY2FzdCcgZm9yIGVudW0g
dHlwZS4iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNWJlMTRlYzEzYmM2
MDA5NGJmYWNkMTU2NDc3ZGFjZDA4MDNhN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFZpc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgwZmQ1MDhj
NmNhMmQyNDljZmYwNGU2MjYxYmZmMTVjNzYwZDc0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFZpc2l0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTc2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2lu
Y2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAg
ICAvLyBUaGVzZSB2aXNpdGluZyBmdW5jdGlvbnMgbWlnaHQgYWRkIG5ldyBnbG9iYWwgc3RhdGVt
ZW50cywgc28gZG9uJ3QgdXNlIGZvcmVhY2ggc3ludGF4LgotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVyYXRp
b25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
cHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFt
Lm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtp
XSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUpCi17Ci0gICAgaWYgKGlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5h
bWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBl
KSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+
KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KHVubmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOwotICAgIGVsc2UKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0g
ICAgaWYgKGlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpKTsK
LSAgICBlbHNlIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0
aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihu
YW1lZFR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9u
JiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRp
b24udHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVF
bGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRWxlbWVudCk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlv
bikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUo
KSk7Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5p
dGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVu
dW1lcmF0aW9uTWVtYmVyKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRp
b24pKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgZm9yIChhdXRvJiB0eXBlQXJn
dW1lbnQgOiBuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpKQotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgZm9yIChhdXRvJiB0
eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5
YmVSZXNvbHZlZFR5cGUoKSAmJiBpczxBU1Q6OlR5cGVEZWZpbml0aW9uPih0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBhdXRvJiB0eXBlRGVmaW5pdGlvbiA9IGRvd25j
YXN0PEFTVDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24udHlwZSgpKTsKLSAgICB9
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUp
Ci17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlw
ZSY+KHBvaW50ZXJUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkKLXsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAgaWYg
KHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgIGZv
ciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIpOwotICAgIGlmIChmdW5jdGlvbkRl
Y2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZnVuY3Rp
b25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIFdURjo6dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY29uc3RhbnRFeHByZXNzaW9uKTsKLSAgICB9
LCBbJl0oUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4mIHR5cGVSZWZlcmVuY2UpIHsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIH0pLCB0eXBlQXJndW1lbnQp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJlbmNl
VHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlw
ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlNlbWFudGljJiBzZW1hbnRpYykK
LXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6QnVpbHRJblNlbWFu
dGljJiBidWlsdEluU2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJ1aWx0
SW5TZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VT
ZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVzb3VyY2VTZW1hbnRpYyk7
Ci0gICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3RhZ2VJbk91
dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgfSksIHNlbWFudGljKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9u
KQotewotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoaW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0
ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9hdExp
dGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9vbGVhbkxpdGVyYWwpOwotICAgIH0sIFsm
XShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwp
OwotICAgIH0pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2Nr
JiBhdHRyaWJ1dGVCbG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRlIDog
YXR0cmlidXRlQmxvY2spCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkF0dHJp
YnV0ZSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKQot
ewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpCi17Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGlj
JikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRl
Z2VyTGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwudHlw
ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChmbG9hdExpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJv
b2xlYW5MaXRlcmFsJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsVHlwZSYgaW50ZWdlckxpdGVyYWxUeXBlKQotewotICAgIGlmIChpbnRlZ2VyTGl0ZXJh
bFR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlu
dGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlKQotewotICAgIGlmICh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5tYXliZVJl
c29sdmVkVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxvYXRMaXRlcmFsVHlwZSkKLXsKLSAg
ICBpZiAoZmxvYXRMaXRlcmFsVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpCi17Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rpb25B
dHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUp
OwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKQotewotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDog
YmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGVtZW50
KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmIHN0YXRlbWVu
dExpc3QpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBzdGF0ZW1lbnRMaXN0LnN0YXRl
bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKLXsKLSAgICBzd2l0
Y2ggKHN0YXRlbWVudC5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpC
bG9jazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0
YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpCcmVhazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+
KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpL
aW5kOjpDb250aW51ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
Q29udGludWU+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3Rh
dGVtZW50OjpLaW5kOjpEb1doaWxlTG9vcDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOgotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRl
bWVudDo6S2luZDo6RmFsbHRocm91Z2g6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Rm9yTG9vcDoKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlJldHVybjoKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3RhdGVtZW50TGlz
dDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RhdGVtZW50TGlz
dD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6
OktpbmQ6OlN3aXRjaENhc2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOgot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OldoaWxlTG9vcDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnJlYWsmKQotewotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29udGludWUmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxl
TG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewot
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RGVyZWZl
cmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4o
ZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6TG9naWNhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJy
YXlSZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OkRvdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG90RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNz
aW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJ
bmRleDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW5kZXhFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
PihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJj4o
ZG90RXhwcmVzc2lvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pCi17Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uJj4oaW5kZXhFeHByZXNzaW9uKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGV4cHJlc3Npb24uYmFzZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZv
ckxvb3AmIGZvckxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5pdGlh
bGl6YXRpb24oKSk7Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgaWYgKGZvckxvb3AuaW5j
cmVtZW50KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5pbmNyZW1lbnQo
KSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VC
b2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRlbWVu
dCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAgICBpZiAoc3dpdGNoQ2Fz
ZS52YWx1ZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN3aXRjaENhc2UudmFsdWUo
KSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwotICAg
IGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQpCi17Ci0gICAgZm9yIChhdXRvJiB2YXJpYWJsZURlY2xhcmF0aW9u
IDogdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQudmFyaWFibGVEZWNsYXJhdGlvbnMoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb24uZ2V0KCkpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAg
IGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFy
YXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURl
Y2xhcmF0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRp
YWxpemVyKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlv
bi5pbml0aWFsaXplcigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFzc2lnbm1l
bnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChhdXRv
JiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoYXJndW1lbnQpOwotICAgIGlmIChjYWxsRXhwcmVzc2lvbi5jYXN0UmV0dXJu
VHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmNhbGxFeHByZXNzaW9uLmNhc3RS
ZXR1cm5UeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNz
aW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDogY29t
bWFFeHByZXNzaW9uLmxpc3QoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Np
b24pOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9u
JiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24m
IG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJl
c3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5s
ZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYWx1ZSgpKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1
ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5u
ZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOwotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpCi17Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE1N2MyNTU5MWY2NDFhZTRiZDc2YWNiNTI3NGY5YjY4YWQ3ZDZjZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZURlZmluaXRpb247Ci1jbGFzcyBTdHJ1Y3R1cmVEZWZp
bml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3MgRnVuY3Rpb25EZWZp
bml0aW9uOwotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci1jbGFzcyBQb2ludGVyVHlwZTsK
LWNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZTsKLWNsYXNzIEFycmF5VHlwZTsKLWNsYXNzIFN0cnVj
dHVyZUVsZW1lbnQ7Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLWNsYXNzIEZ1bmN0aW9uRGVj
bGFyYXRpb247Ci1jbGFzcyBSZWZlcmVuY2VUeXBlOwotY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9u
OwotY2xhc3MgQnVpbHRJblNlbWFudGljOwotY2xhc3MgUmVzb3VyY2VTZW1hbnRpYzsKLWNsYXNz
IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKLWNsYXNzIFN0YWdlSW5PdXRTZW1hbnRp
YzsKLWNsYXNzIEludGVnZXJMaXRlcmFsOwotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsK
LWNsYXNzIEZsb2F0TGl0ZXJhbDsKLWNsYXNzIEJvb2xlYW5MaXRlcmFsOwotY2xhc3MgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOwotY2xhc3MgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlOwot
Y2xhc3MgQmxvY2s7Ci1jbGFzcyBTdGF0ZW1lbnRMaXN0OwotY2xhc3MgU3RhdGVtZW50OwotY2xh
c3MgQnJlYWs7Ci1jbGFzcyBDb250aW51ZTsKLWNsYXNzIERvV2hpbGVMb29wOwotY2xhc3MgRXhw
cmVzc2lvbjsKLWNsYXNzIERvdEV4cHJlc3Npb247Ci1jbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZTsKLWNsYXNzIEluZGV4RXhwcmVzc2lvbjsKLWNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbjsKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ7Ci1jbGFzcyBGYWxsdGhy
b3VnaDsKLWNsYXNzIEZvckxvb3A7Ci1jbGFzcyBJZlN0YXRlbWVudDsKLWNsYXNzIFJldHVybjsK
LWNsYXNzIFN3aXRjaENhc2U7Ci1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQ7Ci1jbGFzcyBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudDsKLWNsYXNzIFdoaWxlTG9vcDsKLWNsYXNzIFZhcmlhYmxl
RGVjbGFyYXRpb247Ci1jbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbjsKLWNsYXNzIENhbGxFeHBy
ZXNzaW9uOwotY2xhc3MgQ29tbWFFeHByZXNzaW9uOwotY2xhc3MgRGVyZWZlcmVuY2VFeHByZXNz
aW9uOwotY2xhc3MgTG9naWNhbEV4cHJlc3Npb247Ci1jbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lv
bjsKLWNsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb247Ci1jbGFzcyBNYWtlUG9pbnRl
ckV4cHJlc3Npb247Ci1jbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOwotY2xhc3MgVGVy
bmFyeUV4cHJlc3Npb247Ci1jbGFzcyBWYXJpYWJsZVJlZmVyZW5jZTsKLWNsYXNzIFVubmFtZWRU
eXBlOwotY2xhc3MgTmFtZWRUeXBlOwotCi19Ci0KLWNsYXNzIFZpc2l0b3IgewotcHVibGljOgot
ICAgIHZpcnR1YWwgflZpc2l0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE3MSBBZGQgYSB3YXkgdG8gdmlz
aXQgYSBjb25zdCBQcm9ncmFtCi0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoUHJvZ3JhbSYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
VHlwZURlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OkFycmF5VHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1l
bnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Np
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGbG9h
dExpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6QmxvY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdGF0
ZW1lbnRMaXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpDb250aW51ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVM
b29wJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpGYWxsdGhyb3VnaCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3Am
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlN3aXRjaENhc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1l
bnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6Q29tbWFFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TG9naWNh
bEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhw
cmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Np
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpOwot
Ci0gICAgYm9vbCBoYXNFcnJvcigpIGNvbnN0IHsgcmV0dXJuICFtX2V4cGVjdGVkRXJyb3I7IH0K
LSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzdWx0KCkgeyByZXR1cm4gbV9leHBlY3RlZEVy
cm9yOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChUJiB4KQotICAgIHsKLSAgICAgICAgaWYgKCFoYXNFcnJvcigpKQotICAgICAgICAgICAgdmlz
aXQoeCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRFcnJvcihFcnJvciBlcnJv
cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzRXJyb3IoKSk7Ci0gICAgICAgIG1fZXhwZWN0
ZWRFcnJvciA9IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IG1fZXhwZWN0ZWRFcnJvcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ1ODljYWY3NjcyMTE5YjhhNTQ1OGJiNTdh
M2JkZWQ2YWVlNGU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
Ci0jaW5jbHVkZSAiSlNXZWJHUFVBZGFwdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UmVmPFdlYkdQVT4gV2ViR1BVOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVSk7Ci19Ci0KLXZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlvbmFs
PEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zLCBXZWJHUFVBZGFwdGVyUHJvbWlz
ZSYmIGRlZmVycmVkKSBjb25zdAotewotICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIu
Z2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGIwNTI0MGQwMDZiM2M0MjRiNDkwNjdjMjNlMTQ5M2NhYmQyMzA4
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJJRExUeXBlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdl
YkdQVUFkYXB0ZXI7Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xhc3Mg
V2ViR1BVIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJHUFU+IGNyZWF0ZSgpOwotCi0gICAgdXNpbmcgV2ViR1BVQWRhcHRlclByb21pc2Ug
PSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdlYkdQVUFkYXB0ZXI+PjsKLQotICAg
IHZvaWQgcmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdl
YkdQVSgpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZlMjVkODZhMmNhMjQ4OWRiMTMyNDNi
M2M2NzUyMGFkZDA5OGU3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRl
cmZhY2VOYW1lPUdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVIHsK
LSAgICBQcm9taXNlPFdlYkdQVUFkYXB0ZXI+IHJlcXVlc3RBZGFwdGVyKG9wdGlvbmFsIEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiYjZmOTk0ZmIyMDM1NGIzZWE5ODkzMjM3ZGNjMTExMWI2ZWViMTRmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVBZGFw
dGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIkpTV2ViR1BVRGV2aWNlLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoV1RGTW92ZShvcHRpb25zKSkpOwotfQot
Ci1XZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi0gICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25z
KSkKLXsKLX0KLQotdm9pZCBXZWJHUFVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKERvY3VtZW50JiBk
b2N1bWVudCwgRGV2aWNlUmVxdWVzdFByb21pc2UmJiBwcm9taXNlKSBjb25zdAotewotICAgIGRv
Y3VtZW50LnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvIGRldmljZSA9IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRl
KGNvbnRleHQsIHByb3RlY3RlZFRoaXMuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSgqZGV2aWNlKTsKLQotICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgIH0pOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhNzE5Y2VkNDYyNDJmYThhNDE3MWI3ZTNmODU4MWNlYWU0NmU1OTZhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNpbmNsdWRlICJJRExU
eXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgV2ViR1BV
RGV2aWNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVm
ZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVB
ZGFwdGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUo
c3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwotCi0gICAgdXNpbmcg
RGV2aWNlUmVxdWVzdFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdl
YkdQVURldmljZT4+OwotICAgIHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVudCYsIERldmljZVJl
cXVlc3RQcm9taXNlJiYpIGNvbnN0OwotICAgIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9u
czsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVUFkYXB0ZXIoc3RkOjpvcHRpb25h
bDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwotCi0gICAgc3RkOjpvcHRpb25hbDxHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+IG1fb3B0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0NjYxYWIwMDY0MzkwZDlmZmE5MjE0NmJmOWExOTA2NTcyODhjMzQwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUFkYXB0ZXIs
Ci0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUFkYXB0ZXIgewotICAgIC8v
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICAvLyByZWFkb25seSBhdHRy
aWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8vIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOyBEb24ndCBleHBvc2UgaGlnaGVyIGxpbWl0cyBmb3Ig
bm93LgotCi0gICAgLy8gTWF5IHJlamVjdCB3aXRoIERPTUV4Y2VwdGlvbiAgLy8gVE9ETzogRE9N
RXhjZXB0aW9uKCJPcGVyYXRpb25FcnJvciIpPwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gUHJv
bWlzZTxXZWJHUFVEZXZpY2U+IHJlcXVlc3REZXZpY2UoLypHUFVEZXZpY2VEZXNjcmlwdG9yIGRl
c2NyaXB0b3IqLyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQmluZEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGZlMWRm
MTYzZmM1NWFjYmNjNTFhNzQyMDkwNmYyZGMxNjRmODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVC
aW5kR3JvdXA+IFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXA+JiYg
YmluZEdyb3VwKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJpbmRHcm91cChX
VEZNb3ZlKGJpbmRHcm91cCkpKTsKLX0KLQotV2ViR1BVQmluZEdyb3VwOjpXZWJHUFVCaW5kR3Jv
dXAoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5kR3JvdXApCi0gICAgOiBtX2JpbmRHcm91cChX
VEZNb3ZlKGJpbmRHcm91cCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjMyNWZi
MmFlZjU1NDFiMDM0ZDJkOTFlNWE2NzFjNWMyNmZhNzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJp
bmRHcm91cC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJpbmRHcm91cCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJpbmRHcm91cD4gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViR1BVQmluZEdyb3VwPiBjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cD4mJik7Ci0K
LSAgICBHUFVCaW5kR3JvdXAqIGJpbmRHcm91cCgpIHsgcmV0dXJuIG1fYmluZEdyb3VwLmdldCgp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQmluZEdyb3VwKFJlZlB0cjxHUFVC
aW5kR3JvdXA+JiYpOwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91cD4gbV9iaW5kR3JvdXA7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OTMwMjk0OGI0NTNiM2VlN2Y5NTZjNjRh
ZjM4YjRmYzkwZTlkNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0g
ICAgSW50ZXJmYWNlTmFtZT1HUFVCaW5kR3JvdXAsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIFdlYkdQVUJpbmRHcm91cCB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNzgwMDEwM2M5YTdlMzVmNDc2MjY2NTMxZjUxMmE4Y2JlNzlmYjNhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nLmgiCi0jaW5jbHVkZSAi
V2ViR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0jaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBXZWJHUFVC
aW5kaW5nUmVzb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXZWJHUFVTYW1wbGVyPiwgUmVmUHRyPFdl
YkdQVVRleHR1cmVWaWV3PiwgV2ViR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0cnVjdCBXZWJHUFVC
aW5kR3JvdXBCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIFdlYkdQVUJpbmRp
bmdSZXNvdXJjZSByZXNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4NGY2YWVlZjgzOTM5YWE1MjM1MGQ5YzA5YTljMDVkY2ZlOWMzNTZkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIChXZWJHUFVTYW1w
bGVyIG9yIFdlYkdQVVRleHR1cmVWaWV3IG9yIFdlYkdQVUJ1ZmZlckJpbmRpbmcpIFdlYkdQVUJp
bmRpbmdSZXNvdXJjZTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUJpbmRHcm91cEJpbmRpbmcgewot
ICAgIHJlcXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIFdlYkdQVUJpbmRpbmdSZXNv
dXJjZSByZXNvdXJjZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyOWM4ZWQ5M2ExODA0YzA5ODc5NzFhOWU3ZmIxMmE2YTM1MTc2OTRkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVCdWZmZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlckJp
bmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZlciogYnVmZmVyLCBjb25zdCBHUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nJiBiaW5kaW5nLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0j
aWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYK
LQotICAgIHN3aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6
VW5pZm9ybUJ1ZmZlcjoKLSAgICAgICAgaWYgKCFidWZmZXItPmlzVW5pZm9ybSgpKSB7Ci0gICAg
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlciByZXNvdXJjZSBmb3IgYmluZGluZyAl
dSBkb2VzIG5vdCBoYXZlIFVOSUZPUk0gdXNhZ2UhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJp
bmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlN0b3JhZ2VCdWZmZXI6Ci0gICAg
ICAgIGlmICghYnVmZmVyLT5pc1N0b3JhZ2UoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBHUFVCdWZmZXIgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUgZG9lcyBub3QgaGF2ZSBTVE9S
QUdFIHVzYWdlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZh
dWx0OgotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IExheW91dCBiaW5kaW5nICV1IGlzIG5vdCBh
IGJ1ZmZlci10eXBlIHJlc291cmNlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25hbDxHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5j
dGlvbk5hbWUgPSAiR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoKSI7Ci0KLSAgICBpZiAoIWxh
eW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgaWYgKGJpbmRpbmdzLnNpemUo
KSAhPSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpLnNpemUoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1pc21hdGNoZWQgbnVtYmVyIG9mIEdQVUJpbmRHcm91
cExheW91dEJpbmRpbmdzIGFuZCBHUFVCaW5kR3JvdXBCaW5kaW5ncyEiLCBmdW5jdGlvbk5hbWUp
OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gbGF5b3V0
TWFwID0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGluZ3NNYXAoKTsKLQotICAgIFZl
Y3RvcjxHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kR3JvdXBCaW5kaW5nczsKLSAgICBiaW5kR3Jv
dXBCaW5kaW5ncy5yZXNlcnZlQ2FwYWNpdHkoYmluZGluZ3Muc2l6ZSgpKTsKLQotICAgIGZvciAo
Y29uc3QgYXV0byYgYmluZGluZyA6IGJpbmRpbmdzKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSBsYXlvdXRNYXAuZmluZChiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICBpZiAoaXRlcmF0b3Ig
PT0gbGF5b3V0TWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJp
bmRHcm91cExheW91dEJpbmRpbmcgJXUgbm90IGZvdW5kIGluIEdQVUJpbmRHcm91cExheW91dCEi
LCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgYXV0byBsYXlvdXRCaW5kaW5n
ID0gaXRlcmF0b3ItPnZhbHVlOwotCi0gICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlVmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRyPFdlYkdQVVNhbXBsZXI+JiBzYW1w
bGVyKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewotICAgICAgICAgICAg
aWYgKCFzYW1wbGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVyKCk7Ci0gICAgICAgICAg
ICBpZiAoIWdwdVNhbXBsZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFr
ZVJlZigqZ3B1U2FtcGxlcikpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8V2ViR1BVVGV4
dHVyZVZpZXc+JiB2aWV3KSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewot
ICAgICAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgICAgICBhdXRvIHRleHR1cmUgPSB2aWV3LT50ZXh0dXJlKCk7Ci0gICAgICAg
ICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFr
ZVJlZigqdGV4dHVyZSkpOwotICAgICAgICB9LCBbJmxheW91dEJpbmRpbmcsIGZ1bmN0aW9uTmFt
ZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZykgLT4gc3RkOjpvcHRpb25hbDxH
UFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyQmluZGluZy5idWZm
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gYnVmZmVyQmluZGluZy5idWZmZXItPmJ1ZmZlcigpOwotICAgICAgICAgICAg
aWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGJ1ZmZlciwgbGF5b3V0Qmlu
ZGluZy5leHRlcm5hbEJpbmRpbmcsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJp
bmRpbmdSZXNvdXJjZT4oR1BVQnVmZmVyQmluZGluZyB7IG1ha2VSZWYoKmJ1ZmZlciksIGJ1ZmZl
ckJpbmRpbmcub2Zmc2V0LCBidWZmZXJCaW5kaW5nLnNpemUgfSk7Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlID0gV1RGOjp2aXNpdChiaW5kaW5nUmVzb3VyY2VW
aXNpdG9yLCBiaW5kaW5nLnJlc291cmNlKTsKLSAgICAgICAgaWYgKCFiaW5kaW5nUmVzb3VyY2Up
IHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCByZXNvdXJjZSBmb3IgYmlu
ZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLmJp
bmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVuZChHUFVCaW5kR3JvdXBCaW5k
aW5nIHsgYmluZGluZy5iaW5kaW5nLCBXVEZNb3ZlKGJpbmRpbmdSZXNvdXJjZS52YWx1ZSgpKSB9
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwRGVzY3JpcHRvciB7IG1ha2VSZWYo
KmxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpLCBXVEZNb3ZlKGJpbmRHcm91cEJpbmRpbmdzKSB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDI1MjEw
OGUwNWVlN2NkZTc1ZDc1NzA1ZWZkNGQ2MWE3YWU1MjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRv
cjsKLQotc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9u
YWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVzY3JpcHRv
cigpIGNvbnN0OwotCi0gICAgUmVmUHRyPGNvbnN0IFdlYkdQVUJpbmRHcm91cExheW91dD4gbGF5
b3V0OwotICAgIFZlY3RvcjxXZWJHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kaW5nczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjc1YzYzMjU5
MDAyOTkxYTE2NmRhNTAwZWQyMmI3NGY4NWE1YTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlv
bmFyeSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVCaW5k
R3JvdXBMYXlvdXQgbGF5b3V0OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdlYkdQVUJpbmRHcm91
cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkM2QyZjg3OTAxNGU1NjNkZjkxNTM2MDViYjBlMzA1ZjYzZmQxNzUyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVCaW5k
R3JvdXBMYXlvdXQ6OmNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmIGxheW91dCkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQoV1RGTW92
ZShsYXlvdXQpKSk7Ci19Ci0KLVdlYkdQVUJpbmRHcm91cExheW91dDo6V2ViR1BVQmluZEdyb3Vw
TGF5b3V0KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQotICAgIDogbV9iaW5k
R3JvdXBMYXlvdXQoV1RGTW92ZShsYXlvdXQpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTVjYzVhNzUxMmJjMDdhYTViOTUyODYwN2FmMmNkODQxYTkyMjAwMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VUJpbmRHcm91cExheW91dD4gY3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYpOwot
Ci0gICAgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0KiBiaW5kR3JvdXBMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBtX2JpbmRHcm91cExheW91dC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IFdlYkdQVUJpbmRHcm91cExheW91dChSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmKTsK
LQotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IG1fYmluZEdyb3VwTGF5b3V0OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExh
eW91dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWUzZTI0ZjEyYTNhZTgx
YWRjZWNjNWU1ZTE4ZjBiYTc4YjEyN2ZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cExheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlv
bkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQmluZEdyb3VwTGF5b3V0LAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgewotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY2MjY0OTQxOGI0NjhkYjRmMDkzMDI4NmI3MWIy
M2MyMzk3N2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWZQdHI8
R1BVQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVycm9y
U2NvcGVzKSk7Ci19Ci0KLVdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVCdWZm
ZXI+JiYgYnVmZmVyLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0gICAgOiBHUFVPYmpl
Y3RCYXNlKG1ha2VSZWYoZXJyb3JTY29wZXMpKQotICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKQotewotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6bWFwUmVhZEFzeW5jKEJ1ZmZlck1hcHBp
bmdQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNhbGxi
YWNrKFdURk1vdmUocHJvbWlzZSksIHRydWUpOwotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6bWFw
V3JpdGVBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgcmVqZWN0
T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhXVEZNb3ZlKHByb21pc2UpLCBmYWxzZSk7Ci19Ci0K
LXZvaWQgV2ViR1BVQnVmZmVyOjp1bm1hcCgpCi17Ci0gICAgZXJyb3JTY29wZXMoKS5zZXRFcnJv
clByZWZpeCgiR1BVQnVmZmVyLnVubWFwKCk6ICIpOwotCi0gICAgaWYgKCFtX2J1ZmZlcikKLSAg
ICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0
aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT51
bm1hcCgmZXJyb3JTY29wZXMoKSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjpkZXN0cm95KCkK
LXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KCJHUFVCdWZmZXIuZGVzdHJveSgp
OiAiKTsKLQotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIGVycm9yU2NvcGVzKCkuZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgbV9idWZmZXItPmRlc3Ryb3koJmVycm9yU2NvcGVzKCkpOwotICAgICAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6cmVqZWN0T3JSZWdpc3Rl
clByb21pc2VDYWxsYmFjayhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UsIGJvb2wgaXNS
ZWFkKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgobWFrZVN0cmluZygiR1BV
QnVmZmVyLm1hcCIsIGlzUmVhZCA/ICJSZWFkIiA6ICJXcml0ZSIsICJBc3luYygpOiAiKSk7Ci0K
LSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzKCkuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogaW52YWxpZCBHUFVCdWZmZXIhIik7Ci0gICAg
ICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2J1
ZmZlci0+cmVnaXN0ZXJNYXBwaW5nQ2FsbGJhY2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBwcm90ZWN0ZWRFcnJvclNjb3BlcyA9IG1ha2VSZWYoZXJyb3JTY29wZXMoKSldIChKU0M6OkFy
cmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhcnJheUJ1ZmZl
cikKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgqYXJyYXlCdWZmZXIpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHBvc3NpYmxlIHRvIGhpdCB0aGlzIGNv
ZGUgcGF0aCBpbiByZXNwb25zZSB0byBhbiB1bm1hcCBjYWxsLCB3aGVyZQotICAgICAgICAgICAg
Ly8gdGhlIEFycmF5QnVmZmVyIHdpbGwgZGVmaW5pdGVseSBiZSBudWxsLCBhbmQgdGh1cyBhbiBv
dXQgb2YgbWVtb3J5IGVycm9yIG1ha2VzIG5vIHNlbnNlLgotICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE2NgotICAgICAgICAgICAgcHJv
dGVjdGVkRXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRP
Zk1lbW9yeSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgICAgICB9Ci0gICAg
fSwgaXNSZWFkLCBlcnJvclNjb3BlcygpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZWVlMjA5
MmEzZGVkZjdiNzM1MjZkOWVkOGEzMjkyM2FlZjRiN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVy
LmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKLSNpbmNsdWRlICJHUFVPYmplY3RCYXNl
LmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElE
TFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xhc3MgV2ViR1BVQnVmZmVyIDog
cHVibGljIEdQVU9iamVjdEJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVm
ZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAg
IEdQVUJ1ZmZlciogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICBjb25z
dCBHUFVCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0K
LSAgICB1c2luZyBCdWZmZXJNYXBwaW5nUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8SlNDOjpBcnJheUJ1ZmZlcj4+OwotICAgIHZvaWQgbWFwUmVhZEFzeW5jKEJ1ZmZl
ck1hcHBpbmdQcm9taXNlJiYpOwotICAgIHZvaWQgbWFwV3JpdGVBc3luYyhCdWZmZXJNYXBwaW5n
UHJvbWlzZSYmKTsKLSAgICB2b2lkIHVubWFwKCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVCdWZmZXI+JiYsIEdQ
VUVycm9yU2NvcGVzJik7Ci0KLSAgICB2b2lkIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJh
Y2soQnVmZmVyTWFwcGluZ1Byb21pc2UmJiwgYm9vbCk7Ci0KLSAgICBSZWZQdHI8R1BVQnVmZmVy
PiBtX2J1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVm
ZmVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIwYTkwYzQxMTdjMWYwNDdj
Y2Q0YzllMTU0MzgyZTc4NTEyMzZkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2
NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUJ1ZmZlciwKLSAgICBFeHBvc2VkPVdpbmRvdwot
XSBpbnRlcmZhY2UgV2ViR1BVQnVmZmVyIHsKLSAgICBQcm9taXNlPEFycmF5QnVmZmVyPiBtYXBS
ZWFkQXN5bmMoKTsKLSAgICBQcm9taXNlPEFycmF5QnVmZmVyPiBtYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgdW5kZWZpbmVkIHVubWFwKCk7Ci0KLSAgICB1bmRlZmluZWQgZGVzdHJveSgpOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdkOGI4YzgwZjlkMGVmOGZmZTU0Y2Mw
NDZmNjA2ODNlNmM2N2E0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBX
ZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Ci0g
ICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFkODI2ZGRmNmEwZjZlYjg0ZTk5NWU1MmM1YTJhNTdi
Y2I3ZjM5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBXZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICByZXF1aXJlZCBXZWJHUFVCdWZm
ZXIgYnVmZmVyOwotICAgIHU2NCBvZmZzZXQgPSAwOwotICAgIHJlcXVpcmVkIHU2NCBzaXplOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTA1MTE3NzZkODdl
YjUyNzE4NzU1MjI2MDM1MzgwMzllMWZjNjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29t
bWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
Q29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotV2ViR1BVQ29tbWFuZEJ1ZmZl
cjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIp
Ci0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ExZGE0ZWEzYzA5YmNkOTdhN2M4NmQ3NmNlYjhiMDA5
YmZlMzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAg
ICBHUFVDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbV9jb21tYW5kQnVm
ZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8
R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9j
b21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh
ZTJmMmRjYmNiMmIxNTc2YTFmMThlZTNiYTYyMDBjZjU3YmU1ODIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tbWFuZEJ1
ZmZlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDNlNDdk
NzA1NmU1MTZkMGQ0OTYyY2JlM2E4OGYwMDUzOWY1YWE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRF
bmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IFdl
YkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNvbnN0Ci17
Ci0gICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3IgY29weSEiKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRk
IFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJldHVybiBHUFVCdWZmZXJDb3B5VmlldyB7IG1h
a2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhpcyB9OwotfQotCi1zdGQ6Om9wdGlvbmFsPEdQ
VVRleHR1cmVDb3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVUZXh0
dXJlQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+dGV4
dHVyZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2RlcjogSW52
YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgcmV0
dXJuIEdQVVRleHR1cmVDb3B5VmlldyB7IG1ha2VSZWYoKnRleHR1cmUtPnRleHR1cmUoKSksICp0
aGlzIH07Ci19Ci0KLVJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEVuY29kZXIoV1RGTW92ZShidWZmZXIpKSk7
Ci19Ci0KLVdlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQdHI8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92
ZShidWZmZXIpKQotewotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNv
bW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoKTog
SW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBk
ZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFn
cHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNy
ZWF0ZShudWxscHRyKTsKLQotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVy
Ojp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVmZmVyKSwgV1RGTW92ZSgqZ3B1RGVzY3Jp
cHRvcikpOwotICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFdURk1v
dmUoZW5jb2RlcikpOwotfQotCi1SZWY8V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBXZWJHUFVD
b21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcygpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRC
dWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdp
bkNvbXB1dGVQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4gV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIGF1dG8g
ZW5jb2RlciA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKG1ha2VSZWYoKm1fY29t
bWFuZEJ1ZmZlcikpOwotICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0
ZShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29w
eUJ1ZmZlclRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYgc3JjLCB1aW50NjRfdCBzcmNPZmZzZXQsIFdl
YkdQVUJ1ZmZlciYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0g
ICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNv
bW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFzcmMuYnVmZmVyKCkgfHwgIWRzdC5i
dWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNv
cHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAg
bV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIobWFrZVJlZigqc3JjLmJ1ZmZlcigp
KSwgc3JjT2Zmc2V0LCBtYWtlUmVmKCpkc3QuYnVmZmVyKCkpLCBkc3RPZmZzZXQsIHNpemUpOwot
fQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0
IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5
VmlldyYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKCFt
X2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNv
ZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZlci50cnlD
cmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBkc3RU
ZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVCdWZm
ZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklY
TUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlC
dWZmZXJUb1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdwdVRleHR1
cmVWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0
dXJlVG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBjb25z
dCBXZWJHUFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6
ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVy
YXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVUZXh0dXJlVmll
dyA9IHNyY1RleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0byBn
cHVCdWZmZXJWaWV3ID0gZHN0QnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7Ci0K
LSAgICBpZiAoIWdwdVRleHR1cmVWaWV3IHx8ICFncHVCdWZmZXJWaWV3KQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29t
bWFuZEJ1ZmZlci0+Y29weVRleHR1cmVUb0J1ZmZlcihXVEZNb3ZlKCpncHVUZXh0dXJlVmlldyks
IFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBzaXplKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3
JiBzcmMsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQz
RCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IEludmFs
aWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1U3Jj
VmlldyA9IHNyYy50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdURz
dFZpZXcgPSBkc3QudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0KLSAgICBpZiAoIWdw
dVNyY1ZpZXcgfHwgIWdwdURzdFZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4
dHVyZVRvVGV4dHVyZShXVEZNb3ZlKCpncHVTcmNWaWV3KSwgV1RGTW92ZSgqZ3B1RHN0Vmlldyks
IHNpemUpOwotfQotICAgIAotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRF
bmNvZGVyOjpmaW5pc2goKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyIHx8IG1fY29tbWFu
ZEJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
Q29tbWFuZEVuY29kZXI6OmZpbmlzaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAg
cmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAg
Ly8gUGFzc2VzIHRoZSByZWZlcmVuY2VkIEdQVUNvbW1hbmRCdWZmZXIgdG8gdGhlIFdlYkdQVUNv
bW1hbmRCdWZmZXIsIGludmFsaWRhdGluZyB0aGlzIFdlYkdQVUNvbW1hbmRFbmNvZGVyLgotICAg
IHJldHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLnJlbGVh
c2VOb25OdWxsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZTE4
NGExMTRmMmRkZGZmOTBiZTMzMjhmNWQxZTYwNzQ1Y2I3M2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEVuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVUNv
bXB1dGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3Mg
V2ViR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUV4dGVudDNEOwotc3RydWN0IFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVQnVmZmVyQ29weVZpZXcgOiBHUFVCdWZm
ZXJDb3B5Vmlld0Jhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRy
eUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVQnVm
ZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IDogR1BVVGV4
dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+
IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBXZWJHUFVDb21tYW5kRW5jb2RlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVm
ZmVyPiYmKTsKLQotICAgIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gYmVnaW5SZW5kZXJQ
YXNzKGNvbnN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJik7Ci0gICAgUmVmPFdlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHZvaWQgY29weUJ1ZmZl
clRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IHNyY09mZnNldCwgV2ViR1BVQnVmZmVy
JiwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLSAgICB2b2lkIGNvcHlCdWZm
ZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0
dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVCdWZmZXJD
b3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4
dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29w
eVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVy
PiBmaW5pc2goKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQdHI8
R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9j
b21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWZkMjJlMDQ4NDhkMjg1NGI4ZjVjMTMyNDVjNDYyMTY4ODYyMjkxMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNvcHlWaWV3Ci1dIGRpY3Rpb25hcnkg
R1BVQnVmZmVyQ29weVZpZXcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZlciBidWZmZXI7Ci0g
ICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgdTMyIHJvd1BpdGNoOwotICAgIHJlcXVp
cmVkIHUzMiBpbWFnZUhlaWdodDsKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVUZXh0
dXJlQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVUZXh0dXJlQ29weVZpZXcgewotICAgIHJlcXVp
cmVkIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKLSAgICB1MzIgbWlwTGV2ZWwgPSAwOwotICAgIHUz
MiBhcnJheUxheWVyID0gMDsKLSAgICBHUFVPcmlnaW4zRCBvcmlnaW47IC8vIHt4OiAwLCB5OiAw
LCB6OiAwfQotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVy
ZmFjZU5hbWU9R1BVQ29tbWFuZEVuY29kZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJm
YWNlIFdlYkdQVUNvbW1hbmRFbmNvZGVyIHsKLSAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBi
ZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0g
ICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsKLQotICAgIHVu
ZGVmaW5lZCBjb3B5QnVmZmVyVG9CdWZmZXIoCi0gICAgICAgIFdlYkdQVUJ1ZmZlciBzcmMsCi0g
ICAgICAgIHU2NCBzcmNPZmZzZXQsCi0gICAgICAgIFdlYkdQVUJ1ZmZlciBkc3QsCi0gICAgICAg
IHU2NCBkc3RPZmZzZXQsCi0gICAgICAgIHU2NCBzaXplKTsKLQotICAgIHVuZGVmaW5lZCBjb3B5
QnVmZmVyVG9UZXh0dXJlKAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBzb3VyY2UsCi0gICAg
ICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgR1BVRXh0ZW50M0Qg
Y29weVNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCi0gICAgICAg
IEdQVVRleHR1cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IGRl
c3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICB1bmRlZmlu
ZWQgY29weVRleHR1cmVUb1RleHR1cmUoCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBzb3Vy
Y2UsCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgR1BV
RXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZlciBmaW5pc2goKTsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNm
YTc4OGM4NmJjOTFiOGIwNzNhNmQ1YjNkNTUxNTc3MjcyM2NjZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlw
ZWxpbmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyPiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tcHV0
ZVBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKLX0KLQotV2ViR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyOjpXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVmUHRyPEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNzRW5jb2RlciB7IFdURk1vdmUo
ZW5jb2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlw
ZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBpZiAo
IW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5j
b2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKCFwaXBlbGluZS5jb21wdXRlUGlwZWxpbmUoKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJbnZh
bGlkIHBpcGVsaW5lISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29k
ZXItPnNldFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLmNvbXB1dGVQaXBlbGluZSgpKSk7Ci19
Ci0KLXZvaWQgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCh1bnNpZ25lZCB4LCB1
bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1F
OiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotICAgIG1fcGFzc0VuY29kZXItPmRpc3BhdGNoKHgs
IHksIHopOwotfQotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpCi17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0
KCk7Ci19Ci0KLWNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNzRW5j
b2Rlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBhZWRjMTJlMmZjMzI4ZDlhOTc2MThiNWM5MGUzNTM5YmY0M2U3NzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyOwotY2xhc3MgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJH
UFVDb21wdXRlUGlwZWxpbmU7Ci0KLWNsYXNzIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciA6IHB1
YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tcHV0ZVBh
c3NFbmNvZGVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBkaXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1
bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVm
UHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlZlB0cjxHUFVD
b21wdXRlUGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDZjOTQ4N2NkMTY2MjkzODg0YmFkZTk0YjUz
MDk2YjA2MGI4YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLAotICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIgOiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgdW5k
ZWZpbmVkIHNldFBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZSBwaXBlbGluZSk7Ci0gICAg
dW5kZWZpbmVkIGRpc3BhdGNoKHUzMiB4LCB1MzIgeSwgdTMyIHopOwotCi0gICAgLy8gVE9ETyBh
ZGQgbWlzc2luZyBjb21tYW5kcwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlMGZmYTI4MGI5Y2U4ZDc0NjE4YTY4MDcyOWNhNjgwNTA4MTYwMzg2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgi
Ci0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlICJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0j
aW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGlwZWxpbmU+IFdlYkdQVUNv
bXB1dGVQaXBlbGluZTo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlLCBSZWZQdHI8R1BVQ29t
cHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMsIFdl
YkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcikKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJHUFVDb21wdXRlUGlwZWxpbmUoZGV2aWNlLCBXVEZNb3ZlKHBpcGVs
aW5lKSwgZXJyb3JTY29wZXMsIFdURk1vdmUoY29tcHV0ZVNoYWRlcikpKTsKLX0KLQotV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lOjpXZWJHUFVDb21wdXRlUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZp
Y2UsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVy
KQotICAgIDogV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykKLSAgICAsIG1fY29t
cHV0ZVBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwgbV9jb21wdXRlU2hhZGVyKFdU
Rk1vdmUoY29tcHV0ZVNoYWRlcikpCi17Ci19Ci0KLVdlYkdQVUNvbXB1dGVQaXBlbGluZTo6fldl
YkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJHUFVDb21wdXRlUGlw
ZWxpbmU6OmNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsK
LSAgICBpZiAobV9jb21wdXRlU2hhZGVyLm1vZHVsZSkgewotICAgICAgICBjb25zdCBhdXRvJiBj
b21wdXRlU291cmNlID0gbV9jb21wdXRlU2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAg
IG1fY29tcHV0ZVNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVT
aGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgY29tcHV0ZVNvdXJjZSB9
KSwgY29tcHV0ZVNvdXJjZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpyZWNvbXBpbGUoY29u
c3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fY29tcHV0ZVBpcGVsaW5lICYm
IG1fY29tcHV0ZVNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdwdUNvbXB1dGVT
aGFkZXJNb2R1bGUgPSBtX2NvbXB1dGVTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkgewotICAgICAg
ICAgICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZShtYWtlUmVm
KCpncHVDb21wdXRlU2hhZGVyTW9kdWxlKSwgeyBtX2NvbXB1dGVTaGFkZXIuZW50cnlQb2ludCB9
KTsKLSAgICAgICAgICAgIHJldHVybiBtX2NvbXB1dGVQaXBlbGluZS0+cmVjb21waWxlKGRldmlj
ZS5kZXZpY2UoKSwgV1RGTW92ZShjb21wdXRlU3RhZ2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ODQ3MTM1MmUyODJhNGJlZDg5ZDZkODdhYjgyYmJlMGQ5ZDg4MDRhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmU7Ci1jbGFzcyBHUFVQ
aXBlbGluZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BVRGV2aWNlOwotY2xh
c3MgV2ViR1BVU2hhZGVyTW9kdWxlOwotCi1jbGFzcyBXZWJHUFVDb21wdXRlUGlwZWxpbmUgZmlu
YWwgOiBwdWJsaWMgV2ViR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQ
VUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21wdXRlUGlwZWxp
bmU+IGNyZWF0ZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiYmLCBH
UFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRl
cik7Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZVBpcGVsaW5lKCk7
IH0KLSAgICBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmUqIGNvbXB1dGVQaXBlbGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lLmdldCgpOyB9Ci0gICAgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gY29tcHV0ZVNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZVNoYWRl
ci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURl
dmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpOwotCi1wcml2
YXRlOgotICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BV
Q29tcHV0ZVBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFk
ZXJEYXRhJiYgY29tcHV0ZVNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5l
PiBtX2NvbXB1dGVQaXBlbGluZTsKLQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3Rv
ciByZWNvbXBpbGF0aW9uLgotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIG1fY29tcHV0
ZVNoYWRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XRUJHUFVQSVBFTElORShXZWJDb3JlOjpXZWJHUFVDb21wdXRlUGlwZWxpbmUsIGlz
Q29tcHV0ZVBpcGVsaW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYTJjZTJmNDI5Yzc1NmJjOWJiZDBm
OGQ3OWIyYjMzYmM2YzQwMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29t
cHV0ZVBpcGVsaW5lLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVDb21w
dXRlUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZGI3ZDM1ODhiN2YxYWY4MjAzMGI0OWE4NTExMTA4
MWY5MWIzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+
IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewotICAg
IGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBsYXlvdXQgPyBtYWtlUmVmUHRyKGxheW91dC0+cGlwZWxp
bmVMYXlvdXQoKSkgOiBudWxscHRyOwotCi0gICAgYXV0byBjb21wdXRlID0gY29tcHV0ZVN0YWdl
LnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwotICAgIGlmICghY29t
cHV0ZSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCJHUFVEZXZpY2U6OmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBJbnZhbGlkIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUocGlwZWxpbmVMYXlvdXQp
LCBXVEZNb3ZlKCpjb21wdXRlKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWI3ZWYzNjk0MmEyYTk2YjY5N2IwNDg2YmI4NTVl
MDBlM2YzZThlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRXJyb3JTY29wZXM7
Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Ug
ewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5Q3Jl
YXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0Owot
Ci0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMWJjNjczYzk1ZTI4MjJiNWVlYjZlZGMzMWFmZmQ4ZjY2YjM4MTFiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
IDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmViZTczZjU3YzA2YzFjZDAwMmRiNTU5MzU1ZDhjZDM3NmZiZjI0OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5j
bHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVkZSAi
R1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
R1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5l
LmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBp
cGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVRleHR1
cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCdWZmZXJTb3VyY2UuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2lu
Y2x1ZGUgIkpTR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkpTR1BVVmFsaWRhdGlv
bkVycm9yLmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdy
b3VwQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZmZXJC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKLSNpbmNsdWRlICJX
ZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJH
UFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJXZWJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5j
bHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVN3
YXBDaGFpbi5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVk
ZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdQVURldmljZSk7Ci0KLUxvY2sg
V2ViR1BVRGV2aWNlOjpzX2luc3RhbmNlc0xvY2s7Ci0KLVJlZlB0cjxXZWJHUFVEZXZpY2U+IFdl
YkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
Zjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNl
ID0gR1BVRGV2aWNlOjp0cnlDcmVhdGUoYWRhcHRlci0+b3B0aW9ucygpKSkgewotICAgICAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoY29udGV4dCwgV1RGTW92ZShh
ZGFwdGVyKSwgbWFrZVJlZigqZGV2aWNlKSkpOwotICAgICAgICBkZXZpY2UtPnNldEVycm9yU2Nv
cGVzKHJlc3VsdC0+bV9lcnJvclNjb3Blcy5jb3B5UmVmKCkpOwotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSGFzaFNldDxXZWJHUFVEZXZp
Y2UqPiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7Ci0gICAgcmV0dXJuIGluc3Rh
bmNlczsKLX0KLQotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkKLXsKLSAgICBy
ZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1XZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4m
JiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKLSAgICA6IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV9hZGFwdGVyKFdURk1vdmUoYWRhcHRlcikpCi0g
ICAgLCBtX2RldmljZShXVEZNb3ZlKGRldmljZSkpCi0gICAgLCBtX2Vycm9yU2NvcGVzKEdQVUVy
cm9yU2NvcGVzOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChH
UFVFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIGRp
c3BhdGNoVW5jYXB0dXJlZEVycm9yKFdURk1vdmUoZXJyb3IpKTsKLSAgICB9KSkKLXsKLSAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7Ci0KLSAgICB7Ci0g
ICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgaW5zdGFu
Y2VzKCkuYWRkKHRoaXMpOwotICAgIH0KLX0KLQotV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNl
KCkKLXsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2
aWNlKCp0aGlzKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVs
aW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdQ
VVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09
IHRoaXMpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55IFdlYkdQVVBpcGVs
aW5lIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KLSAg
ICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdQ
VSBkZXZpY2UuCi0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBudWxscHRyOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlu
cyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKLSAgICB9Ci19Ci0K
LVJlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1
ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+
c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogIik7Ci0KLSAgICBhdXRv
IGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwgR1BVQnVmZmVy
TWFwcGVkT3B0aW9uOjpOb3RNYXBwZWQsIG1fZXJyb3JTY29wZXMpOwotICAgIHJldHVybiBXZWJH
UFVCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29wZXMpOwotfQotCi1W
ZWN0b3I8SlNDOjpKU1ZhbHVlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlck1hcHBlZChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBHUFVCdWZmZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9y
UHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKCk6ICIpOwotCi0gICAgSlNDOjpK
U1ZhbHVlIHdyYXBwZWRBcnJheUJ1ZmZlciA9IEpTQzo6anNOdWxsKCk7Ci0KLSAgICBhdXRvIGJ1
ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFw
cGVkT3B0aW9uOjpJc01hcHBlZCwgbV9lcnJvclNjb3Blcyk7Ci0gICAgaWYgKGJ1ZmZlcikgewot
ICAgICAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLT5tYXBPbkNyZWF0aW9uKCk7Ci0gICAg
ICAgIHdyYXBwZWRBcnJheUJ1ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCBhcnJheUJ1
ZmZlcik7Ci0gICAgfQotCi0gICAgYXV0byB3ZWJCdWZmZXIgPSBXZWJHUFVCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29wZXMpOwotICAgIGF1dG8gd3JhcHBlZFdlYkJ1
ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCB3ZWJCdWZmZXIpOwotCi0gICAgcmV0dXJu
IHsgd3JhcHBlZFdlYkJ1ZmZlciwgd3JhcHBlZEFycmF5QnVmZmVyIH07Ci19Ci0KLVJlZjxXZWJH
UFVUZXh0dXJlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJy
b3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVUZXh0dXJlKCk6ICIpOwotCi0gICAgYXV0byB0ZXh0
dXJlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IFdlYkdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUpKTsKLX0KLQotUmVmPFdlYkdQ
VVNhbXBsZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSBtX2Rldmlj
ZS0+dHJ5Q3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gV2ViR1BVU2FtcGxl
cjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlcikpOwotfQotCi1SZWY8V2ViR1BVQmluZEdyb3VwTGF5
b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gbGF5b3V0
ID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChkZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoV1RGTW92ZShsYXlvdXQpKTsKLX0K
LQotUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KGNvbnN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikg
Y29uc3QKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAg
ICAgICAgcmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
Ci0gICAgYXV0byBsYXlvdXQgPSBtX2RldmljZS0+Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV1RGTW92
ZSgqZ3B1RGVzY3JpcHRvcikpOwotICAgIHJldHVybiBXZWJHUFVQaXBlbGluZUxheW91dDo6Y3Jl
YXRlKFdURk1vdmUobGF5b3V0KSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXA+IFdlYkdQVURl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50
cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9y
KQotICAgICAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwOjpjcmVhdGUobnVsbHB0cik7Ci0KLSAg
ICBhdXRvIGJpbmRHcm91cCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5kR3JvdXAoKmdwdURlc2Ny
aXB0b3IsIG1fZXJyb3JTY29wZXMpOwotICAgIHJldHVybiBXZWJHUFVCaW5kR3JvdXA6OmNyZWF0
ZShXVEZNb3ZlKGJpbmRHcm91cCkpOwotfQotCi1SZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJH
UFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXaGF0IGNhbiBiZSB2
YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVTaGFk
ZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KTsK
LSAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShtb2R1bGUpLCBk
ZXNjcmlwdG9yLmNvZGUpOwotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURl
dmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJlZml4
KCJHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogIik7Ci0KLSAgICBhdXRvIGdwdURl
c2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihtX2Vycm9yU2NvcGVzKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVy
biBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRyLCBtX2Vycm9yU2Nv
cGVzLCB7IH0sIHsgfSk7Ci0KLSAgICBhdXRvIGdwdVBpcGVsaW5lID0gbV9kZXZpY2UtPnRyeUNy
ZWF0ZVJlbmRlclBpcGVsaW5lKCpncHVEZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLQotICAg
IFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIHZlcnRleFNoYWRlciA9IHsgZGVzY3JpcHRvci52
ZXJ0ZXhTdGFnZS5tb2R1bGUsIGRlc2NyaXB0b3IudmVydGV4U3RhZ2UuZW50cnlQb2ludCB9Owot
Ci0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgZnJhZ21lbnRTaGFkZXI7Ci0gICAgaWYg
KGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSB7IGRl
c2NyaXB0b3IuZnJhZ21lbnRTdGFnZS52YWx1ZSgpLm1vZHVsZSwgZGVzY3JpcHRvci5mcmFnbWVu
dFN0YWdlLnZhbHVlKCkuZW50cnlQb2ludCB9OwotCi0gICAgYXV0byB3ZWJHUFVQaXBlbGluZSA9
IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZ3B1UGlwZWxpbmUp
LCBtX2Vycm9yU2NvcGVzLCBXVEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1vdmUoZnJhZ21lbnRT
aGFkZXIpKTsKLSAgICBpZiAod2ViR1BVUGlwZWxpbmUtPmlzVmFsaWQoKSkKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqdGhpcywgd2Vi
R1BVUGlwZWxpbmUuZ2V0KCkpOwotICAgIHJldHVybiB3ZWJHUFVQaXBlbGluZTsKLX0KLQotUmVm
PFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxp
bmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsK
LSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3Iu
dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihtX2Vycm9yU2NvcGVzKTsKLSAg
ICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGlwZWxp
bmU6OmNyZWF0ZSgqdGhpcywgbnVsbHB0ciwgbV9lcnJvclNjb3BlcywgeyB9KTsKLQotICAgIGF1
dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCpncHVE
ZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLQotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJE
YXRhIGNvbXB1dGVTaGFkZXIgPSB7IGRlc2NyaXB0b3IuY29tcHV0ZVN0YWdlLm1vZHVsZSwgZGVz
Y3JpcHRvci5jb21wdXRlU3RhZ2UuZW50cnlQb2ludCB9OwotCi0gICAgYXV0byB3ZWJHUFVQaXBl
bGluZSA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGdwdVBp
cGVsaW5lKSwgbV9lcnJvclNjb3BlcywgV1RGTW92ZShjb21wdXRlU2hhZGVyKSk7Ci0gICAgaWYg
KHdlYkdQVVBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKnRoaXMsIHdlYkdQVVBpcGVsaW5lLmdldCgp
KTsKLSAgICByZXR1cm4gd2ViR1BVUGlwZWxpbmU7Ci19Ci0KLVJlZjxXZWJHUFVDb21tYW5kRW5j
b2Rlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAg
YXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsK
LSAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbW1hbmRC
dWZmZXIpKTsKLX0KLQotUmVmPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZpY2U6OmdldFF1ZXVlKCkg
Y29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBXZWJHUFVRdWV1
ZTo6Y3JlYXRlKG1fZGV2aWNlLT50cnlHZXRRdWV1ZSgpKTsKLQotICAgIHJldHVybiBtYWtlUmVm
KCptX3F1ZXVlLmdldCgpKTsKLX0KLQotdm9pZCBXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUo
RXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7Ci0gICAg
c3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVzLT5wb3BFcnJvclNj
b3BlKGZhaWxNZXNzYWdlKTsKLSAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAg
ICBwcm9taXNlLnJlc29sdmUoZXJyb3IpOwotICAgIGVsc2UKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUo
KTogIiArIGZhaWxNZXNzYWdlIH0pOwotfQotCi0vLyBFcnJvcnMgcmVwb3J0ZWQgdmlhIHRoZSB2
YWxpZGF0aW9uIGVycm9yIGV2ZW50IHNob3VsZCBhbHNvIGFwcGVhciBpbiB0aGUgY29uc29sZSBh
cyB3YXJuaW5ncy4KLXN0YXRpYyB2b2lkIHByaW50VmFsaWRhdGlvbkVycm9yVG9Db25zb2xlKEdQ
VUVycm9yJiBlcnJvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBp
ZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4+KGVy
cm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB2YWxpZGF0aW9uRXJyb3IgPSBXVEY6
OmdldDxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3IpOwotICAgIGlmICghdmFsaWRh
dGlvbkVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG1lc3NhZ2UgPSB2YWxpZGF0
aW9uRXJyb3ItPm1lc3NhZ2UoKTsKLSAgICBhdXRvIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7Ci0KLSAgICBk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShjb25z
b2xlTWVzc2FnZSkpOwotfQotCi12b2lkIFdlYkdQVURldmljZTo6ZGlzcGF0Y2hVbmNhcHR1cmVk
RXJyb3IoR1BVRXJyb3ImJiBlcnJvcikKLXsKLSAgICBwcmludFZhbGlkYXRpb25FcnJvclRvQ29u
c29sZShlcnJvciwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLQotICAgIGNhbGxPbk1haW5U
aHJlYWQoW2Vycm9yID0gV1RGTW92ZShlcnJvciksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5jYXB0dXJlZGVycm9yRXZlbnQs
IFdURk1vdmUoZXJyb3IpKSk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWFiMDky
Zjk2NjFkYWMyM2I2MTAxNTU5OGY4YzI2OGJhMjIxYzYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVz
LmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCi0j
aW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEpTVmFsdWU7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvcjsKLWNsYXNz
IEdQVVZhbGlkYXRpb25FcnJvcjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFz
cyBXZWJHUFVCaW5kR3JvdXA7Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ7Ci1jbGFzcyBX
ZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVDb21tYW5kRW5jb2RlcjsKLWNsYXNzIFdlYkdQVUNv
bXB1dGVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVBpcGVsaW5lTGF5b3V0OwotY2xhc3MgV2ViR1BV
UmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVTYW1wbGVyOwotY2xhc3MgV2ViR1BVU2hhZGVy
TW9kdWxlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotY2xhc3MgV2ViR1BVVGV4dHVyZTsKLQot
c3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQnVmZmVyRGVz
Y3JpcHRvcjsKLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVUZXh0dXJl
RGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotc3RydWN0IFdl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0
cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVUVycm9y
RmlsdGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVm
ZXJyZWQ7Ci0KLXVzaW5nIEVycm9ySURMVW5pb24gPSBJRExVbmlvbjxJRExJbnRlcmZhY2U8R1BV
T3V0T2ZNZW1vcnlFcnJvcj4sIElETEludGVyZmFjZTxHUFVWYWxpZGF0aW9uRXJyb3I+PjsKLXVz
aW5nIEVycm9yUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxFcnJvcklE
TFVuaW9uPj47Ci0KLWNsYXNzIFdlYkdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQ
VURldmljZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYkdQVURldmljZSk7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2Vi
R1BVRGV2aWNlKCk7Ci0KLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVURldmljZT4gdHJ5Q3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJik7Ci0K
LSAgICBzdGF0aWMgSGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJ
UkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKLSAgICBzdGF0aWMgTG9jayYgaW5zdGFuY2VzTG9j
aygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKLQotICAgIGNvbnN0IFdlYkdQ
VUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0KLSAg
ICBHUFVEZXZpY2UmIGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0gICAgY29u
c3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZS5nZXQoKTsgfQot
Ci0gICAgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImKSBjb25zdDsKLSAgICBWZWN0b3I8SlNDOjpKU1ZhbHVlPiBjcmVhdGVCdWZmZXJNYXBw
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImKSBjb25z
dDsKLSAgICBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJl
RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVTYW1wbGVyPiBjcmVhdGVTYW1wbGVy
KGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVQmlu
ZEdyb3VwTGF5b3V0PiBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVQaXBlbGluZUxheW91dD4gY3Jl
YXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJikg
Y29uc3Q7Ci0gICAgUmVmPFdlYkdQVUJpbmRHcm91cD4gY3JlYXRlQmluZEdyb3VwKGNvbnN0IFdl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVTaGFkZXJN
b2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKLSAgICBSZWY8
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi0gICAgUmVmPFdlYkdQVUNvbW1hbmRFbmNv
ZGVyPiBjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVVF1ZXVl
PiBnZXRRdWV1ZSgpIGNvbnN0OwotCi0gICAgdm9pZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZp
bHRlciBmaWx0ZXIpIHsgbV9lcnJvclNjb3Blcy0+cHVzaEVycm9yU2NvcGUoZmlsdGVyKTsgfQot
ICAgIHZvaWQgcG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJik7Ci0KLSAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotCi0gICAgdXNpbmcgUmVmQ291bnRlZDo6
cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwotCi1wcml2YXRlOgotICAgIFdlYkdQ
VURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+
JiYsIFJlZjxHUFVEZXZpY2U+JiYpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdlYkdQVURldmljZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoVW5jYXB0dXJlZEVycm9yKEdQ
VUVycm9yJiYpOwotCi0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2NrOwotCi0gICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0gICAgUmVm
PGNvbnN0IFdlYkdQVUFkYXB0ZXI+IG1fYWRhcHRlcjsKLSAgICBSZWY8R1BVRGV2aWNlPiBtX2Rl
dmljZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFVRdWV1ZT4gbV9xdWV1ZTsKLQotICAgIFJl
ZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWM3YjQ2ZDQ1ZDc5NjU4ZDAzMTBiYWQ0YWEzMGMzNGRlMWYzNWViMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYg
c2VxdWVuY2U8YW55PiBHUFVNYXBwZWRCdWZmZXI7ICAvLyBbR1BVQnVmZmVyLCBBcnJheUJ1ZmZl
cl0KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVURldmljZSwKLSAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVRGV2aWNlIDogRXZl
bnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVBZGFwdGVyIGFkYXB0ZXI7
Ci0KLSAgICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVz
Y3JpcHRvcik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gR1BVTWFwcGVkQnVmZmVyIGNy
ZWF0ZUJ1ZmZlck1hcHBlZChHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdl
YkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKLSAgICBXZWJHUFVTYW1wbGVyIGNyZWF0ZVNhbXBsZXIoR1BVU2FtcGxlckRlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Ci0KLSAgICBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2Vi
R1BVUGlwZWxpbmVMYXlvdXQgY3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUJpbmRHcm91cCBjcmVhdGVCaW5k
R3JvdXAoV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIFdlYkdQ
VVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQ
aXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAg
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShXZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gRklYTUU6IEN1cnJlbnRs
eSwgR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnkuCi0g
ICAgV2ViR1BVQ29tbWFuZEVuY29kZXIgY3JlYXRlQ29tbWFuZEVuY29kZXIoLypHUFVDb21tYW5k
RW5jb2RlckRlc2NyaXB0b3IgZGVzY3JpcHRvciovKTsKLQotICAgIFdlYkdQVVF1ZXVlIGdldFF1
ZXVlKCk7Ci0KLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICAvLyByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8vIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOwotCi0gICAgLy8gV2ViR1BVRmVuY2UgY3JlYXRl
RmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gYXR0cmli
dXRlIFdlYkdQVUxvZ0NhbGxiYWNrIG9uTG9nOwotICAgIC8vIFdlYkdQVU9iamVjdFN0YXR1c1F1
ZXJ5IGdldE9iamVjdFN0YXR1cyhTdGF0dXNhYmxlT2JqZWN0IHN0YXR1c2FibGVPYmplY3QpOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkzMTEw
MGRiNTQ1MTM4Nzk0NDc1NmMwZmIwMWZkODgyYTMwMWE4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJy
b3JGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdlYkdQVURldmljZUVy
cm9yU2NvcGVzOjpwdXNoRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JG
aWx0ZXIgZmlsdGVyKQotewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOwotfQot
Ci12b2lkIFdlYkdQVURldmljZUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3BlKFdlYkdQVURldmlj
ZSYgZGV2aWNlLCBFcnJvclByb21pc2UmJiBwcm9taXNlKQotewotICAgIGRldmljZS5wb3BFcnJv
clNjb3BlKFdURk1vdmUocHJvbWlzZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYyMGYwN2FiZTM5OGJmOWE3MzRkNDQ2YWY1ODk0NTNjMGRiMGMxMDkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwotCi1jbGFzcyBXZWJHUFVEZXZpY2VF
cnJvclNjb3BlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcHVzaEVycm9yU2NvcGUoV2Vi
R1BVRGV2aWNlJiwgR1BVRXJyb3JGaWx0ZXIpOwotICAgIHN0YXRpYyB2b2lkIHBvcEVycm9yU2Nv
cGUoV2ViR1BVRGV2aWNlJiwgRXJyb3JQcm9taXNlJiYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRjNjAyZmFiMGUyZGZmZTJiNmRhNDEyNmEyOTA4
NmQ1MzY2ZGE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiAoR1BVT3V0T2ZNZW1vcnlFcnJvciBv
ciBHUFVWYWxpZGF0aW9uRXJyb3IpIEdQVUVycm9yOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V2Vi
R1BVRGV2aWNlRXJyb3JTY29wZXMKLV0gcGFydGlhbCBpbnRlcmZhY2UgV2ViR1BVRGV2aWNlIHsK
LSAgICB1bmRlZmluZWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKTsKLSAg
ICBQcm9taXNlPEdQVUVycm9yPz4gcG9wRXJyb3JTY29wZSgpOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ0MzQzMjRkNDVjMzM1NzQwMzFm
YWEyYWI4NWFlMzA2Y2MzYmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50
SGFuZGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PVdl
YkdQVURldmljZUV2ZW50SGFuZGxlcgotXSBwYXJ0aWFsIGludGVyZmFjZSBXZWJHUFVEZXZpY2Ug
ewotICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVuY2FwdHVy
ZWRlcnJvcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Yjc4MTMzMGM2NjQy
NGI1NGFjMzgxN2JhNmRkODU4NjM5MDMzMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTG9jayBXZWJH
UFVQaXBlbGluZTo6c19pbnN0YW5jZXNMb2NrOwotCi1IYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwg
V2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4+
IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotfQotCi1Mb2NrJiBXZWJHUFVQaXBl
bGluZTo6aW5zdGFuY2VzTG9jaygpCi17Ci0gICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKLX0K
LQotV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBH
UFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0gICAgOiBHUFVPYmplY3RCYXNlKG1ha2VSZWYo
ZXJyb3JTY29wZXMpKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoZGV2aWNlLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2so
KSB9OwotICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywgJmRldmljZSk7Ci0gICAgfQotfQot
Ci1XZWJHUFVQaXBlbGluZTo6fldlYkdQVVBpcGVsaW5lKCkKLXsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoKnRoaXMpOwotCi0gICAgewot
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIEFTU0VS
VChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcygpLnJlbW92
ZSh0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViR1BVUGlwZWxpbmU6OmNvbnRleHREZXN0cm95
ZWQoKQotewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQ
aXBlbGluZSgqdGhpcyk7Ci0KLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4
dERlc3Ryb3llZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NGNiYzdhZmFhYjJlYTgx
M2Y3ZTU2NGFiZTE5YmVhZTY0YzE3OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKLSNpbmNsdWRlICJXZWJH
UFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BVRGV2aWNlOwotCi1j
bGFzcyBXZWJHUFVQaXBlbGluZSA6IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVBpcGVs
aW5lKCk7Ci0KLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmlj
ZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOwotICAg
IHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3RhbmNl
c0xvY2spOwotCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0g
MDsKLQotICAgIHN0cnVjdCBTaGFkZXJEYXRhIHsKLSAgICAgICAgUmVmUHRyPFdlYkdQVVNoYWRl
ck1vZHVsZT4gbW9kdWxlOwotICAgICAgICBTdHJpbmcgZW50cnlQb2ludDsKLSAgICB9OwotCi0g
ICAgdmlydHVhbCBib29sIGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIHJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKSA9IDA7
Ci0KLSAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLXByaXZh
dGU6Ci0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2NrOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQRUxJ
TkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OldlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyByZXR1cm4gcGlwZWxpbmUucHJlZGlj
YXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY4YTBiODQ1ZTQyODkwYzU5MjNjZGZkZDQ4ZTA4ZGExNTdkNzI4ZTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAg
IFJlZlB0cjxXZWJHUFVQaXBlbGluZUxheW91dD4gbGF5b3V0OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjMyYzcwNDM5ZWExZTI0OGRiMDNhYmIw
MTA2ZjY2Mjc0MTcxYTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBXZWJHUFVQaXBlbGluZUxheW91dD8gbGF5b3V0
ID0gbnVsbDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZUxheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
YjVkNGNiNGY5ZjE4ZmRkODg3Mzc2OTAwYmI1MTNkZThlMmIxMmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBl
bGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVh
dGUoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91dCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJHUFVQaXBlbGluZUxheW91dChXVEZNb3ZlKGxheW91dCkpKTsKLX0KLQot
V2ViR1BVUGlwZWxpbmVMYXlvdXQ6OldlYkdQVVBpcGVsaW5lTGF5b3V0KFJlZlB0cjxHUFVQaXBl
bGluZUxheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX3BpcGVsaW5lTGF5b3V0KFdURk1vdmUobGF5
b3V0KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzU2Zjg5ZGNk
ZTExYmE5NDNlYWE4NmNjOTMyMGNiZWQyNzIwOTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
UGlwZWxpbmVMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVBpcGVs
aW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoUmVmUHRy
PEdQVVBpcGVsaW5lTGF5b3V0PiYmKTsKLQotICAgIEdQVVBpcGVsaW5lTGF5b3V0KiBwaXBlbGlu
ZUxheW91dCgpIHsgcmV0dXJuIG1fcGlwZWxpbmVMYXlvdXQuZ2V0KCk7IH0KLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBXZWJHUFVQaXBlbGluZUxheW91dChSZWZQdHI8R1BVUGlwZWxpbmVMYXlv
dXQ+JiYpOwotCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX3BpcGVsaW5lTGF5b3V0
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkODQ1YzcwNmU5
MWVmZGVkNGJmMjBkZDRkZDcwYjYzMDNhYTgwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVUGlwZWxpbmVMYXlvdXQsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVBpcGVsaW5lTGF5b3V0IHsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzE4YzI4ZWIxNTQxY2NjYmI5YTBiZTgwZGU2YzQyM2NjNWMwMjg1Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0ZDo6b3B0aW9u
YWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3I6OnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0g
ICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBncHVMYXlvdXRzOwotICAg
IGdwdUxheW91dHMucmVzZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExheW91dHMuc2l6ZSgpKTsKLSAg
ICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxheW91dCA6IGJpbmRHcm91cExheW91dHMpIHsKLSAg
ICAgICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpIHsKLSAgICAg
ICAgICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCk6IElu
dmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZ3B1TGF5b3V0cy51bmNoZWNrZWRB
cHBlbmQobWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkpOwotICAgIH0KLSAgICAK
LSAgICByZXR1cm4gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsgV1RGTW92ZShncHVMYXlv
dXRzKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODM0Yzc5NTRmMzc3YWEyYTc5Mjc3YmQ1NGEwOTY3YTk3MjY5MzQ2MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwotCi1z
dHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9wdGlvbmFs
PEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVUJpbmRHcm91cExh
eW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZmU1NTJhOGRhYzI0ZDRkYzEyODI5MGRi
MGNhNTNlMTU3OWMwZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxXZWJHUFVC
aW5kR3JvdXBMYXlvdXQ+IGJpbmRHcm91cExheW91dHM7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzQzY2E3MTQ5M2I5MDY3
M2Q4NDdiYjVlZTdiNDNkOTUxNGI1NTZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBpZiAoIXBhc3NFbmNv
ZGVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
OjplbmRQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIHBhc3NFbmNvZGVyKCktPmVuZFBhc3MoKTsKLX0KLQotdm9pZCBXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVuc2lnbmVkIGluZGV4LCBXZWJHUFVCaW5k
R3JvdXAmIGJpbmRHcm91cCkKLXsKLSAgICBpZiAoIXBhc3NFbmNvZGVyKCkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTog
SW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gTWF4
aW11bSBudW1iZXIgb2YgYmluZCBncm91cHMgc3VwcG9ydGVkIGluIFdlYiBHUFUuCi0gICAgaWYg
KGluZGV4ID49IDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoIWJpbmRHcm91cC5iaW5kR3JvdXAoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZh
bGlkIFdlYkdQVUJpbmRHcm91cCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBG
SVhNRTogQW55IHZhbGlkYXRpb24gKGUuZy4gaW5kZXggZHVwbGljYXRlcywgbm90IGluIHBpcGVs
aW5lIGxheW91dCkuCi0gICAgcGFzc0VuY29kZXIoKS0+c2V0QmluZEdyb3VwKGluZGV4LCAqYmlu
ZEdyb3VwLmJpbmRHcm91cCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NjVmNTBhNDMyMzNiMjYxNTlkNTU3NzZmNjAwMzY4MDMxZDFl
YjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsK
LWNsYXNzIFdlYkdQVUJpbmRHcm91cDsKLQotY2xhc3MgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcj4g
ewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKCkg
PSBkZWZhdWx0OwotCi0gICAgdm9pZCBlbmRQYXNzKCk7Ci0gICAgdm9pZCBzZXRCaW5kR3JvdXAo
dW5zaWduZWQsIFdlYkdQVUJpbmRHcm91cCYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIEdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0
IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhjOTg3NWJjNDA4MjY2N2Y5NWJjOWQ4YWEyN2FkZDk4MmE5NjBhNDEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciwKLSAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKLSAg
ICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIgewotICAgIHVuZGVmaW5lZCBlbmRQYXNzKCk7Ci0gICAgdW5kZWZpbmVkIHNldEJpbmRHcm91
cCh1MzIgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCBiaW5kR3JvdXAvKiwgb3B0aW9uYWwgc2VxdWVu
Y2U8dTMyPiBkeW5hbWljT2Zmc2V0cyovKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZhNGY3ZmJlOWNiMzBj
Y2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3I+IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBpZiAoIW1vZHVsZSB8fCAh
bW9kdWxlLT5tb2R1bGUoKSB8fCBlbnRyeVBvaW50LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IgeyBtYWtlUmVmKCptb2R1bGUtPm1vZHVsZSgpKSwgKnRoaXMgfTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYjY5MDI0
NjcwNjBiNTZmY2IzYjQxYWJkYjgwYjAyOWRjOTY5MmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
V2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Ig
OiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFs
PEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBtb2R1bGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOGVkNWQzMjM3ZWNlZmM4YzkzMTkxMTMzYWMyYTBkZDgy
ZTQ4N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2Vi
R1BVU2hhZGVyU3RhZ2VFbnVtOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVTaGFkZXJNb2R1bGUgbW9kdWxlOwot
ICAgIHJlcXVpcmVkIERPTVN0cmluZyBlbnRyeVBvaW50OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTNhY2E3YjJkMGQxNWM2ZjEyZjBjMTk2NWYyYzNjNDQ0NmI2YzNhYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVF1ZXVl
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5o
IgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2Vi
R1BVUXVldWU+IFdlYkdQVVF1ZXVlOjpjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYmIHF1ZXVlKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVF1ZXVlKFdURk1vdmUocXVldWUpKSk7
Ci19Ci0KLVdlYkdQVVF1ZXVlOjpXZWJHUFVRdWV1ZShSZWZQdHI8R1BVUXVldWU+JiYgcXVldWUp
Ci0gICAgOiBtX3F1ZXVlKFdURk1vdmUocXVldWUpKQotewotfQotCi12b2lkIFdlYkdQVVF1ZXVl
OjpzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPj4mIGJ1ZmZl
cnMpCi17Ci0gICAgaWYgKCFtX3F1ZXVlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1
ZTo6c3VibWl0KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+IGdwdUJ1ZmZlcnM7Ci0gICAgZ3B1
QnVmZmVycy5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVycy5zaXplKCkpOwotICAgIAotICAgIGZvciAo
YXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVy
LT5jb21tYW5kQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6
c3VibWl0KCk6IEludmFsaWQgR1BVQ29tbWFuZEJ1ZmZlciBpbiBsaXN0ISIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGdwdUJ1ZmZlcnMudW5jaGVja2VkQXBwZW5k
KG1ha2VSZWYoKmJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpKSk7Ci0gICAgfQotCi0gICAgbV9xdWV1
ZS0+c3VibWl0KFdURk1vdmUoZ3B1QnVmZmVycykpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVF1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ODky
MjdlNDBiODI5ZTE3MDE0ZjlmOGMzZGM0ODQ3MWY1MzM4NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVRdWV1
ZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyOwot
Ci1jbGFzcyBXZWJHUFVRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVF1ZXVlPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVRdWV1ZT4gY3JlYXRlKFJlZlB0cjxHUFVRdWV1
ZT4mJik7Ci0KLSAgICB2b2lkIHN1Ym1pdChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1h
bmRCdWZmZXI+PiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1
ZS0+bGFiZWwoKTsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgeyBt
X3F1ZXVlLT5zZXRMYWJlbChsYWJlbCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVRdWV1ZShS
ZWZQdHI8R1BVUXVldWU+JiYpOwotCi0gICAgUmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTM1NWNlYTk2NTkxZTQyNmRmOTM4Zjk2MjQ2YTE0OTg3MGIz
NjViZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5h
bWU9R1BVUXVldWUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVF1ZXVl
IHsKLSAgICB1bmRlZmluZWQgc3VibWl0KHNlcXVlbmNlPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGJ1
ZmZlcnMpOwotCi0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAgLy8gdW5kZWZpbmVk
IHNpZ25hbChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHNpZ25hbFZhbHVlKTsKLSAgICAvLyB1bmRl
ZmluZWQgd2FpdChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHZhbHVlVG9XYWl0KTsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOGI0Nzgy
YzdlNzM1YWFjNDFiMzE3ZDQwMzMwYTczMmUzMzRlODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8R1BVVGV4dHVyZT4mJiB0
ZXh0dXJlLCBjb25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2Um
IGJhc2UpCi0gICAgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2Uo
YmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKLXsKLX0KLQotR1BVUmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwg
Y29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYg
YmFzZSkKLSAgICA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
ckJhc2UoYmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKLXsKLX0KLQot
c3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAg
ICAvLyBGSVhNRTogSW1wcm92ZSBlcnJvciBjaGVja2luZyBhcyBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvciBpcyBhZGRlZCB0byBzcGVjLgotICAgIGlmIChjb2xvckF0dGFjaG1lbnRzLmlzRW1w
dHkoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6IE5v
IGNvbG9yIGF0dGFjaG1lbnRzIHNwZWNpZmllZCBmb3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ih
Iik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgVmVjdG9yPEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVDb2xvckF0dGFjaG1lbnRz
OwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBjb2xvckF0dGFjaG1l
bnRzKSB7Ci0gICAgICAgIGlmICghY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQKLSAgICAgICAg
ICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpCi0gICAgICAgICAg
ICB8fCAhY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+aXNPdXRwdXRBdHRh
Y2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
fQotICAgICAgICBncHVDb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50
LT50ZXh0dXJlKCkpLCBjb2xvckF0dGFjaG1lbnQgfSk7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRp
b25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdURl
cHRoQXR0YWNobWVudDsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50KSB7Ci0gICAg
ICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudAotICAgICAgICAgICAg
fHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKQotICAgICAg
ICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+
aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BVUmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqZGVwdGhT
dGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpKSwgKmRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
eyBXVEZNb3ZlKGdwdUNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGdwdURlcHRoQXR0YWNobWVu
dCkgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NWY5NGE0Y2ZmMGQwZTM2NjMxMTc1ODUwZDc3NzZiYWQ4MTc2YzlmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVU
ZXh0dXJlVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIFJl
ZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBXZWJHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgOiBHUFVSZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8V2ViR1BV
VGV4dHVyZVZpZXc+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IHRy
eUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBWZWN0b3I8V2Vi
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7
Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzgzMjQ4MmU1YTEzMGVkM2Q1MzVm
ZDJkYjdkZjVlZjAzZTZlYjI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2Vi
R1BVVGV4dHVyZVZpZXcgYXR0YWNobWVudDsKLSAgICAvLyBHUFVUZXh0dXJlVmlldz8gcmVzb2x2
ZVRhcmdldDsKLQotICAgIHJlcXVpcmVkIEdQVUxvYWRPcCBsb2FkT3A7Ci0gICAgcmVxdWlyZWQg
R1BVU3RvcmVPcCBzdG9yZU9wOwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3I7IC8vIHtyOiAwLjAs
IGc6IDAuMCwgYjogMC4wLCBhOiAxLjB9Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yCi1dIGRpY3Rpb25hcnkg
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsKLSAgICByZXF1
aXJlZCBXZWJHUFVUZXh0dXJlVmlldyBhdHRhY2htZW50OwotCi0gICAgcmVxdWlyZWQgR1BVTG9h
ZE9wIGRlcHRoTG9hZE9wOwotICAgIHJlcXVpcmVkIEdQVVN0b3JlT3AgZGVwdGhTdG9yZU9wOwot
ICAgIHJlcXVpcmVkIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLS8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQK
LSAgICBHUFVMb2FkT3Agc3RlbmNpbExvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0ZW5jaWxTdG9y
ZU9wOwotICAgIHUzMiBjbGVhclN0ZW5jaWw7Ci0qLwotfTsKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKLSAgICBHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I/IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGJmN2EwZDQwZmZhZmM0YWI0NDJiMWI0MzU5ODZhZTJlMjRjOWU0MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5jbHVkZSAiR1BVTGltaXRzLmgiCi0jaW5jbHVk
ZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIu
aCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGVu
Y29kZXIpKSk7Ci19Ci0KLVdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNz
RW5jb2RlcihSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IG1f
cGFzc0VuY29kZXIgeyBXVEZNb3ZlKGVuY29kZXIpIH0KLXsKLX0KLQotdm9pZCBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmUmIHBp
cGVsaW5lKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9u
ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghcGlwZWxpbmUucmVuZGVyUGlw
ZWxpbmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNl
dFBpcGVsaW5lKCk6IEludmFsaWQgcGlwZWxpbmUhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUobWFrZVJlZigqcGlwZWxpbmUucmVuZGVy
UGlwZWxpbmUoKSkpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVu
ZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENv
bG9yKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fcGFzc0VuY29kZXItPnNldEJsZW5kQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAg
aWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0Vmlld3BvcnQoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgs
IGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCgp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
IXdpZHRoIHx8ICFoZWlnaHQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRTY2lzc29yUmVjdCgpOiBXaWR0aCBvciBoZWlnaHQgbXVzdCBiZSBncmVhdGVy
IHRoYW4gMCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5z
ZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIsIHVpbnQ2
NF90IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWJ1ZmZlci5idWZm
ZXIoKSB8fCAhYnVmZmVyLmJ1ZmZlcigpLT5pc0luZGV4KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1
ZmZlciEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFzc0VuY29kZXItPnNl
dEluZGV4QnVmZmVyKCpidWZmZXIuYnVmZmVyKCksIG9mZnNldCk7Ci19Ci0KLXZvaWQgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgc3RhcnRTbG90LCBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiBidWZmZXJzLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBvZmZzZXRzKQotewotI2lmICFMT0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFy
KiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1
ZmZlcnMoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9wZXJhdGlvbiEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChidWZmZXJzLmlzRW1wdHkoKSB8fCBidWZmZXJzLnNp
emUoKSAhPSBvZmZzZXRzLnNpemUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFs
aWQgbnVtYmVyIG9mIGJ1ZmZlcnMgb3Igb2Zmc2V0cyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGFydFNsb3QgKyBidWZmZXJzLnNpemUoKSA+IG1h
eFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHN0YXJ0
U2xvdCAldSBmb3IgJWx1IGJ1ZmZlcnMhIiwgZnVuY3Rpb25OYW1lLCBzdGFydFNsb3QsIGJ1ZmZl
cnMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxSZWY8R1BV
QnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZmZXJzLnJlc2VydmVDYXBhY2l0eShidWZm
ZXJzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKLSAgICAg
ICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAgICAgICAgICAgIExPRyhX
ZWJHUFUsICIlczogSW52YWxpZCBvciBkZXN0cm95ZWQgYnVmZmVyIGluIGxpc3QhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
YnVmZmVyLT5idWZmZXIoKS0+aXNWZXJ0ZXgoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggVkVSVEVYIHVzYWdlISIsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBncHVCdWZm
ZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpidWZmZXItPmJ1ZmZlcigpKSk7Ci0gICAgfQot
Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVycyhzdGFydFNsb3QsIGdwdUJ1ZmZl
cnMsIG9mZnNldHMpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVu
c2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJz
dFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJ
WE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRhdGlvbiBkbyB3ZSBuZWVkIHRvIGhhbmRsZSBoZXJlPwot
ICAgIG1fcGFzc0VuY29kZXItPmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0
VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3Vu
dCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5z
dGFuY2UpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlv
bi4KLSAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNv
dW50LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2Rl
cigpCi17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLWNvbnN0IEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGFzc0VuY29k
ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YzAyYWJhNzhhZWM4YWUyYWYxNjdi
MjUwYzU5MWRkMTk0ODMxOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQ
VUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwotCi1zdHJ1Y3QgR1BVQ29sb3I7
Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsK
LQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmUmKTsKLSAg
ICB2b2lkIHNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImKTsKLSAgICB2b2lkIHNldFZpZXdw
b3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1p
bkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0gICAgdm9pZCBzZXRTY2lzc29yUmVjdCh1bnNpZ25l
ZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2
b2lkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IG9mZnNldCk7Ci0gICAg
dm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIHN0YXJ0U2xvdCwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJHUFVCdWZmZXI+PiYsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9mZnNldHMpOwot
ICAgIHZvaWQgZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3Vu
dCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpOwotICAgIHZv
aWQgZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3Vu
dCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5z
dGFuY2UpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZlB0cjxH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlZlB0cjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDYwNmY5Y2I1YzJlM2Q1NWM5ZDE2M2NiNzgzNTZlZTJhYTliNDlk
YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgbG9uZyBpMzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFj
ZU5hbWU9R1BVUmVuZGVyUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIDog
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIHVuZGVmaW5lZCBzZXRQaXBlbGlu
ZShXZWJHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSk7Ci0gICAgdW5kZWZpbmVkIHNldEJsZW5k
Q29sb3IoR1BVQ29sb3IgY29sb3IpOwotCi0gICAgLy8gVGhlIGRlZmF1bHQgdmlld3BvcnQgaXMg
KDAuMCwgMC4wLCB3LCBoLCAwLjAsIDEuMCksIHdoZXJlIHcgYW5kIGggYXJlIHRoZSBkaW1lbnNp
b25zIG9mIGJhY2sgYnVmZmVyCi0gICAgdW5kZWZpbmVkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBt
YXhEZXB0aCk7Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBzY2lzc29yIHJlY3RhbmdsZSBpcyAoMCwg
MCwgdywgaCksIHdoZXJlIHcgYW5kIGggYXJlIHRoZSBkaW1lbnNpb25zIG9mIGJhY2sgYnVmZmVy
LgotICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4gT3RoZXJ3
aXNlLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KLSAgICB1bmRlZmluZWQgc2V0U2Npc3Nv
clJlY3QodTMyIHgsIHUzMiB5LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwotCi0gICAgdW5kZWZp
bmVkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHU2NCBvZmZzZXQpOwotICAg
IHVuZGVmaW5lZCBzZXRWZXJ0ZXhCdWZmZXJzKHUzMiBzdGFydFNsb3QsIHNlcXVlbmNlPFdlYkdQ
VUJ1ZmZlcj4gYnVmZmVycywgc2VxdWVuY2U8dTY0PiBvZmZzZXRzKTsKLQotICAgIHVuZGVmaW5l
ZCBkcmF3KHUzMiB2ZXJ0ZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdFZlcnRl
eCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotICAgIHVuZGVmaW5lZCBkcmF3SW5kZXhlZCh1MzIgaW5k
ZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdEluZGV4LCBpMzIgYmFzZVZlcnRl
eCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotCi0vKiBOb3QgWWV0IEltcGxlbWVudGVkCi0gICAgdW5k
ZWZpbmVkIHNldFN0ZW5jaWxSZWZlcmVuY2UodTMyIHJlZmVyZW5jZSk7Ci0qLwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YzZiZmEwYTIwNDU0YTE3YjYy
NjczMDZmOWI1Nzk5ZDA0NzdhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRl
ICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVUmVu
ZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoV2ViR1BVRGV2aWNlJiBk
ZXZpY2UsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRl
ciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShkZXZpY2UsIFdURk1vdmUo
cGlwZWxpbmUpLCBlcnJvclNjb3BlcywgV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpLCBXVEZNb3ZlKGZy
YWdtZW50U2hhZGVyKSkpOwotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVy
UGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4m
JiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6
U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBm
cmFnbWVudFNoYWRlcikKLSAgICA6IFdlYkdQVVBpcGVsaW5lKGRldmljZSwgZXJyb3JTY29wZXMp
Ci0gICAgLCBtX3JlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwgbV92ZXJ0
ZXhTaGFkZXIoV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpKQotICAgICwgbV9mcmFnbWVudFNoYWRlcihX
VEZNb3ZlKGZyYWdtZW50U2hhZGVyKSkKLXsKLX0KLQotV2ViR1BVUmVuZGVyUGlwZWxpbmU6On5X
ZWJHUFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJHUFVSZW5kZXJQaXBl
bGluZTo6Y2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewot
ICAgIGlmIChtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgYm9vbCBzaGFyZXNWZXJ0
ZXhGcmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlID09IG1fdmVy
dGV4U2hhZGVyLm1vZHVsZTsKLQotICAgICAgICBjb25zdCBhdXRvJiB2ZXJ0ZXhTb3VyY2UgPSBt
X3ZlcnRleFNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAgICBtX3ZlcnRleFNoYWRlci5t
b2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVTaGFkZXJNb2R1bGU6OnRyeUNy
ZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgdmVydGV4U291cmNlIH0pLCB2ZXJ0ZXhTb3VyY2UpOwot
Ci0gICAgICAgIGlmIChtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewotICAgICAgICAgICAgaWYg
KHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyTW9kdWxlKQotICAgICAgICAgICAgICAgIG1fZnJh
Z21lbnRTaGFkZXIubW9kdWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgZnJhZ21lbnRTb3VyY2UgPSBtX2Zy
YWdtZW50U2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAgICAgICAgICAgbV9mcmFnbWVu
dFNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVTaGFkZXJNb2R1
bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgZnJhZ21lbnRTb3VyY2UgfSksIGZyYWdt
ZW50U291cmNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR1BVUmVuZGVyUGlw
ZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAo
bV9yZW5kZXJQaXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgaWYg
KGF1dG8qIGdwdVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZS0+bW9k
dWxlKCkpIHsKLSAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0
ZXhTdGFnZShtYWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUpLCB7IG1fdmVydGV4U2hhZGVy
LmVudHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLSAgICAgICAgICAgIGlmIChtX2ZyYWdt
ZW50U2hhZGVyLm1vZHVsZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBncHVGcmFnbWVu
dFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNoYWRlck1vZHVsZSksIHsgbV9mcmFnbWVudFNoYWRl
ci5lbnRyeVBvaW50IH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyUGlwZWxpbmUtPnJlY29tcGlsZShkZXZpY2UuZGV2aWNlKCksIFdURk1vdmUodmVydGV4U3Rh
Z2UpLCBXVEZNb3ZlKGZyYWdtZW50U3RhZ2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ2MGIxMzc5
M2ZjYmQyNTM0NTdjNDI4MTFjODJkOTJjZDUxMjJmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldl
YkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZTsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwot
Y2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVT
aGFkZXJNb2R1bGU7Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGlj
IFdlYkdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQaXBl
bGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFdl
YkdQVURldmljZSYsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMm
LCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxp
bmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBib29sIGlzUmVuZGVyUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiByZW5kZXJQaXBlbGluZSgpOyB9Ci0gICAgY29uc3QgR1BVUmVuZGVyUGlwZWxp
bmUqIHJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZS5nZXQo
KTsgfQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IHZlcnRleFNoYWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyLm1vZHVsZTsgfQotICAgIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IGZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRl
ci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURl
dmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpOwotCi1wcml2
YXRlOgotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVy
RGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVu
dFNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IG1fcmVuZGVyUGlwZWxp
bmU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4K
LSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX3ZlcnRleFNoYWRlcjsKLSAgICBXZWJH
UFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX2ZyYWdtZW50U2hhZGVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQVVBJUEVMSU5FKFdl
YkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lLCBpc1JlbmRlclBpcGVsaW5lKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkN2Y4MmMyZDI4Yzc1YzU0NzY4MjQ4NWFhYjBmZmZhN2YxYTk4YjBjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEludGVyZmFjZU5hbWU9R1BVUmVuZGVyUGlwZWxpbmUsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiY2RiOWRm
OTBjODQ1OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxh
eW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7Ci0K
LSAgICBhdXRvIHZlcnRleCA9IHZlcnRleFN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvcigpOwotCi0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3I+IGZyYWdtZW50OwotICAgIGlmIChmcmFnbWVudFN0YWdlKQotICAgICAgICBm
cmFnbWVudCA9IGZyYWdtZW50U3RhZ2UtPnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcigpOwotCi0gICAgaWYgKCF2ZXJ0ZXggfHwgKGZyYWdtZW50U3RhZ2UgJiYgIWZyYWdt
ZW50KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFs
aWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZWIgR1BVIHZhbGlkYXRpb24sIGUu
Zy4gZmFpbCBpZiBjb2xvclN0YXRlcyBpcyBsYXJnZXIgdGhhbiAobWF4IG51bWJlciBvZiBzdXBw
b3J0ZWQgY29sb3Igc3RhdGVzKS4KLQotICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0KSwgV1RGTW92ZSgqdmVydGV4KSwgV1RGTW92
ZShmcmFnbWVudCksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjYwZDJlYmU2OTM5NWUzNTFmMWE5ZDhjNTAwNjM0ODQ2
OGJiMGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCIK
LSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0IFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IoR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwZDk0NmZlZmY5ZTU1
Y2IwZDcwYWQ2NzI4NzI5N2E5OWQwNzFlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBJ
bXBsZW1lbnRlZEFzPUdQVVByaW1pdGl2ZVRvcG9sb2d5Ci1dIGVudW0gR1BVUHJpbWl0aXZlVG9w
b2xvZ3kgewotICAgICJwb2ludC1saXN0IiwKLSAgICAibGluZS1saXN0IiwKLSAgICAibGluZS1z
dHJpcCIsCi0gICAgInRyaWFuZ2xlLWxpc3QiLAotICAgICJ0cmlhbmdsZS1zdHJpcCIKLX07Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUK
LV0gZGljdGlvbmFyeSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPyBmcmFnbWVudFN0YWdlID0gbnVsbDsKLQotICAgIHJlcXVpcmVkIEdQVVByaW1pdGl2
ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBHUFVEZXB0aFN0ZW5jaWxTdGF0
ZURlc2NyaXB0b3I/IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICByZXF1aXJlZCBHUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IgdmVydGV4SW5wdXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmE1MjBlNjNhMWEwMDU0OTA5N2U0MDFhZWViOGI0MzJkNWQxMjYwMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
U2FtcGxlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8V2ViR1BVU2FtcGxlcj4gV2ViR1BVU2FtcGxlcjo6Y3JlYXRlKFJlZlB0cjxHUFVTYW1w
bGVyPiYmIHNhbXBsZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2FtcGxl
cihXVEZNb3ZlKHNhbXBsZXIpKSk7Ci19Ci0KLVdlYkdQVVNhbXBsZXI6OldlYkdQVVNhbXBsZXIo
UmVmUHRyPEdQVVNhbXBsZXI+JiYgc2FtcGxlcikKLSAgICA6IG1fc2FtcGxlcihXVEZNb3ZlKHNh
bXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDI0OTY2YzY5N2E1NjU1OGM2NjM0
Y2JjNGNmMzdmM2QyNWVhMDRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVVNhbXBsZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVNhbXBsZXI+IGNy
ZWF0ZShSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBjb25zdCBHUFVTYW1wbGVyKiBzYW1w
bGVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
V2ViR1BVU2FtcGxlcihSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVU2Ft
cGxlcj4gbV9zYW1wbGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNhbXBsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2FtcGxlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2M2FhYzI2OWEx
NThlYjU4N2JhZjVkNDE0ZDBmMmUyMWZiNDJlNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2FtcGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVU2FtcGxlciwKLSAgICBFeHBvc2VkPVdp
bmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU2FtcGxlciB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQzMTQ1NDVkZDNmNDZjZTg2MjA4ZjNkNTQ2YWZmNzE0NDI3MzNj
OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVURl
dmljZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWZQ
dHI8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxl
KSwgc291cmNlKSk7Ci19Ci0KLVdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BVU2hhZGVyTW9kdWxl
KFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkK
LSAgICA6IG1fbW9kdWxlKFdURk1vdmUobW9kdWxlKSkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkK
LXsKLX0KLQotdm9pZCBXZWJHUFVTaGFkZXJNb2R1bGU6OnVwZGF0ZShjb25zdCBXZWJHUFVEZXZp
Y2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgbV9zb3VyY2UgPSBzb3Vy
Y2U7Ci0gICAgbV9tb2R1bGUgPSBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2
aWNlKCksIHsgbV9zb3VyY2UgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NzBiYjhkMmY2MzY0YzI0ZTFkYTVkY2I0NTUwNTAxYTRmMmQwMTY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViR1BVRGV2aWNlOwotCi1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYsIGNvbnN0
IFN0cmluZyYgc291cmNlKTsKLQotICAgIEdQVVNoYWRlck1vZHVsZSogbW9kdWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZShjb25zdCBXZWJHUFVE
ZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVU2hh
ZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNl
KTsKLQotICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IG1fbW9kdWxlOwotCi0gICAgLy8gUHJl
c2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgU3RyaW5nIG1fc291
cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZDc3ZjA3OWUz
MjlkNjVkMzg0NGY4YmVmNTNkODMwNWE1NGI4OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVTaGFkZXJNb2R1bGUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVNoYWRlck1vZHVsZSB7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjMyYTk4
OWVkNWM1MDZkZjNhN2RjYjA5MzU1Y2U1MjY4NGMzMDhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDBhN2E5ZDRjOGRhNDUzNzY2MDBmOWJhMGJmNmZlMmNhMTZkNDc2MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgcmVx
dWlyZWQgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBjb2RlOyAvLyBGSVhNRTogRE9NU3RyaW5n
IGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzYyNTlkN2Y2ZTEzYmQ2MjYwNjIwODA3N2FlYzk3ZTQzM2UwMjM5Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVT
d2FwQ2hhaW4uaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IFdlYkdQVVN3YXBDaGFpbjo6Y3JlYXRlKFJl
ZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVVN3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpKTsKLX0KLQotV2ViR1BVU3dh
cENoYWluOjpXZWJHUFVTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4p
Ci0gICAgOiBtX3N3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpCi17Ci19Ci0KLVJlZjxXZWJH
UFVUZXh0dXJlPiBXZWJHUFVTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAgICBp
ZiAoIW1fc3dhcENoYWluKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46Omdl
dEN1cnJlbnRUZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4g
V2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBtX2N1cnJlbnRUZXh0
dXJlID0gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG1fc3dhcENoYWluLT50cnlHZXRDdXJyZW50VGV4
dHVyZSgpKTsKLSAgICByZXR1cm4gbWFrZVJlZigqbV9jdXJyZW50VGV4dHVyZSk7Ci19Ci0KLXZv
aWQgV2ViR1BVU3dhcENoYWluOjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fc3dhcENoYWluKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgpOwotICAgIG1fc3dh
cENoYWluID0gbnVsbHB0cjsKLQotICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlICYmIG1fY3VycmVu
dFRleHR1cmUtPnRleHR1cmUoKSkKLSAgICAgICAgbV9jdXJyZW50VGV4dHVyZS0+ZGVzdHJveSgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhhMWUwZGY2NDgwNGYxMTE5ZjMxNWUzMGUx
YTA2MTA4YzM0MjdiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKLSNpbmNsdWRl
ICJXZWJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWNsYXNzIFdlYkdQVVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVVN3YXBDaGFpbj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BV
U3dhcENoYWluPiBjcmVhdGUoUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7Ci0KLSAgICBHUFVTd2Fw
Q2hhaW4qIHN3YXBDaGFpbigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgpOyB9Ci0KLSAgICBS
ZWY8V2ViR1BVVGV4dHVyZT4gZ2V0Q3VycmVudFRleHR1cmUoKTsKLQotICAgIHZvaWQgZGVzdHJv
eSgpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWlu
PiYmKTsKLQotICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwotICAgIFJlZlB0
cjxXZWJHUFVUZXh0dXJlPiBtX2N1cnJlbnRUZXh0dXJlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNDMyY2YzYTRlNDUwNGM4YmExZmFmZDlhY2FiNmRkYmIxZTJmZDBiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVN3YXBDaGFpbiwKLSAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU3dhcENoYWluIHsK
LSAgICBXZWJHUFVUZXh0dXJlIGdldEN1cnJlbnRUZXh0dXJlKCk7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzNGZjZDMzMzczOTk1ZjZh
OThkNDc5YWY0MDJmN2NkOTdiMDY1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVN3YXBDaGFpbkRlc2NyaXB0
b3I+IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I6OmFzR1BVU3dhcENoYWluRGVzY3JpcHRvcigp
IGNvbnN0Ci17Ci0gICAgaWYgKCFkZXZpY2UpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNh
bnZhc0NvbnRleHQ6OmNvbmZpZ3VyZVN3YXBDaGFpbigpOiBJbnZhbGlkIEdQVURldmljZSEiKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IgeyBtYWtlUmVmKGRldmljZS0+ZGV2aWNlKCkpLCAqdGhpcyB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY4NzRk
NmY3MDAwMDM5NTlkYjU4OTExOWI0ZGIwMDJlOWMzMjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIDogR1BVU3dhcENoYWluRGVzY3JpcHRvckJhc2Ug
ewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4gYXNHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBkZXZpY2U7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkYTA2MDEyMzFlN2U4ZjU4Mzk0YzdjNDIz
OTUxODRlYjdhMzdjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3ZlKHRl
eHR1cmUpKSk7Ci19Ci0KLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRl
eHR1cmU+JiYgdGV4dHVyZSkKLSAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotewot
fQotCi1SZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRW
aWV3KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
VGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAg
ICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLQot
ICAgIGF1dG8gdmlldyA9IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUobV90ZXh0dXJlLT50cnlD
cmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKSk7Ci0gICAgbV90ZXh0dXJlVmlld3MuYXBwZW5kKHZp
ZXcuY29weVJlZigpKTsKLSAgICByZXR1cm4gdmlldzsKLX0KLQotdm9pZCBXZWJHUFVUZXh0dXJl
OjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVVGV4dHVyZTo6ZGVzdHJveSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHZpZXcgOiBtX3RleHR1cmVWaWV3cykKLSAg
ICAgICAgdmlldy0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZVZpZXdzLmNsZWFyKCk7Ci0KLSAg
ICBtX3RleHR1cmUtPmRlc3Ryb3koKTsKLSAgICBtX3RleHR1cmUgPSBudWxscHRyOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZmQ1OGMyNjQyZmNjNmE2MmYzNzJhY2I0YTI3MzhlMWM2YjcyNTJi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZp
ZXcuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQdHI8R1BVVGV4
dHVyZT4mJik7Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9Ci0KLSAgICBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZURlZmF1bHRWaWV3
KCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BV
VGV4dHVyZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4g
bV90ZXh0dXJlOwotICAgIFZlY3RvcjxSZWY8V2ViR1BVVGV4dHVyZVZpZXc+PiBtX3RleHR1cmVW
aWV3czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2U0YTVmOTkzYjY0NWRhOTVjMmEz
ZDc4YzhkZjFjMmMzNzM3ZDI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwK
LSAgICBJbnRlcmZhY2VOYW1lPUdQVVRleHR1cmUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIFdlYkdQVVRleHR1cmUgewotICAgIFdlYkdQVVRleHR1cmVWaWV3IGNyZWF0ZURlZmF1
bHRWaWV3KCk7Ci0gICAgdW5kZWZpbmVkIGRlc3Ryb3koKTsKLQotICAgIC8vIE5vdCBZZXQgSW1w
bGVtZW50ZWQ6Ci0gICAgLy8gV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlVGV4dHVyZVZpZXcoV2Vi
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRlc2MpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGUwMzJhZjBjMDE2ZGM1ZWJkNWFlNGRkZDZjNjRiMjM0YjQwNTM5OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6
OmNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB2aWV3KQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKLX0KLQotV2ViR1BVVGV4
dHVyZVZpZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZlB0cjxHUFVUZXh0dXJlPiYmIHZpZXcpCi0g
ICAgOiBtX3RleHR1cmUoV1RGTW92ZSh2aWV3KSkKLXsKLX0KLQotdm9pZCBXZWJHUFVUZXh0dXJl
Vmlldzo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKCFtX3RleHR1cmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fdGV4dHVyZS0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjUwZTIxODRjNTIzY2Y4NWZkZWQ2YWJk
Y2ZlYmZjMjM2ZjEyOTAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViR1BVVGV4dHVyZVZpZXc+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1
cmVWaWV3PiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotICAgIH5XZWJHUFVUZXh0dXJl
VmlldygpIHsgZGVzdHJveSgpOyB9Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koKTsKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgV2ViR1BVVGV4dHVyZVZpZXcoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotICAg
IAotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1ZmZiZGViYmM5MDVhY2Y2ZDcxM2VkMDQyNzc1ZmFkMzRlZTNiNTA2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNl
TmFtZT1HUFVUZXh0dXJlVmlldywKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2Vi
R1BVVGV4dHVyZVZpZXcgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRhMmRhZWU2NDI3NWI1Zjc5MzI3MGNlM2Q1ZjQ1MzcxMTQyZjEyZWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8j
bmF2aWdhdG9yLWdwdQotLy8gRklYTUU6IFRoZSBzcGVjIHNheXMgdGhpcyBzaG91bGQgb25seSBi
ZSBleHBvc2VkIHRvIERlZGljYXRlZFdvcmtlcnMuCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V29ya2Vy
TmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdvcmtlck5hdmlnYXRvciB7Ci0gICAg
W1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1OwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA3ZjM2NjgzZGMzMDM4NDMyNGY1YTcyNGIy
MjEwYjkxZDhlZDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvckdQVS5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJX
ZWJHUFUuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1Xb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShXb3Jr
ZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKLXsKLSAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdvcmtl
ck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7Ci0gICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
V29ya2VyTmF2aWdhdG9yR1BVPigpOwotICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKLSAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50Owot
fQotCi1jb25zdCBjaGFyKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OnN1cHBsZW1lbnROYW1lKCkKLXsK
LSAgICByZXR1cm4gIldvcmtlck5hdmlnYXRvckdQVSI7Ci19Ci0KLWNvbnN0IFdlYkdQVSogV29y
a2VyTmF2aWdhdG9yR1BVOjpncHUoV29ya2VyTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCi17Ci0gICAg
YXV0byBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdz
VmFsdWVzKCkud2ViR1BVRW5hYmxlZCk7Ci0gICAgcmV0dXJuIFdvcmtlck5hdmlnYXRvckdQVTo6
ZnJvbSgmbmF2aWdhdG9yKS0+Z3B1KCk7Ci19Ci0KLWNvbnN0IFdlYkdQVSogV29ya2VyTmF2aWdh
dG9yR1BVOjpncHUoKSBjb25zdAotewotICAgIGlmICghbV9ncHUpCi0gICAgICAgIG1fZ3B1ID0g
V2ViR1BVOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gbV9ncHUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNjc0NTNmOTRiYmNhNmI5ODliZDU4ZjU5NWM4MzhiMDFhMTIw
YTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVOwotY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotCi1jbGFz
cyBXb3JrZXJOYXZpZ2F0b3JHUFUgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxXb3JrZXJOYXZp
Z2F0b3I+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgY29uc3QgV2ViR1BVKiBncHUoV29ya2VyTmF2aWdhdG9yJik7Ci0KLXByaXZhdGU6Ci0gICAg
c3RhdGljIFdvcmtlck5hdmlnYXRvckdQVSogZnJvbShXb3JrZXJOYXZpZ2F0b3IqKTsKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLSAgICAKLSAgICBjb25zdCBXZWJH
UFUqIGdwdSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBSZWZQdHI8V2ViR1BVPiBtX2dwdTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGJlZTIzNjRlOGJhZThhMGU5ODUyZDZjNDIzZGQxOWNhMjYwYWM0NjIu
LjI2M2NjZmJlYjU4NjU5MDFjYTAxNWE0ODMyOWY4NWQzMjU5MzFkOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0zMjAsOTEgKzMyMCw2IEBAIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHAK
IE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JF
dmVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNl
bWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVSZWZlcmVuY2UuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5j
dGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2Rl
R2VuZXJhdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5j
dGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlw
ZVdyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1
bGF0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVE
aW1lbnNpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hl
Y2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1z
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcAotTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbnRyaW5zaWNzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcAotTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJz
ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
b3BlcnR5UmVzb2x2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFj
aGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3Zl
cmxvYWRJbXBsLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2FtcGxlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi1Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5jcHAKIE1vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKIE1vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0y
MDc5LDE0ICsxOTk0LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291
cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1
ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JT
Y29wZXMuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVVmFsaWRhdGlvbkVycm9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTMwNzIsMzQg
KzI5NzksNiBAQCBKU0ZvY3VzT3B0aW9ucy5jcHAKIEpTRm9udEZhY2UuY3BwCiBKU0ZvbnRGYWNl
U2V0LmNwcAogSlNGb3JtRGF0YUV2ZW50LmNwcAotSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5n
LmNwcAotSlNHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAotSlNHUFVCbGVuZERlc2Ny
aXB0b3IuY3BwCi1KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVUJ1ZmZlclVzYWdlLmNw
cAotSlNHUFVDYW52YXNDb250ZXh0LmNwcAotSlNHUFVDb2xvci5jcHAKLUpTR1BVQ29sb3JTdGF0
ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUNvbG9yV3JpdGUuY3BwCi1KU0dQVUNvbXBhcmVGdW5jdGlv
bi5jcHAKLUpTR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcAotSlNHUFVFcnJvckZp
bHRlci5jcHAKLUpTR1BVRXh0ZW50M0QuY3BwCi1KU0dQVUxvYWRPcC5jcHAKLUpTR1BVT3JpZ2lu
M0QuY3BwCi1KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi1KU0dQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucy5jcHAKLUpTR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVNoYWRlclN0YWdlLmNw
cAotSlNHUFVTdG9yZU9wLmNwcAotSlNHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKLUpTR1BVVGV4
dHVyZUZvcm1hdC5jcHAKLUpTR1BVVGV4dHVyZVVzYWdlLmNwcAotSlNHUFVVbmNhcHR1cmVkRXJy
b3JFdmVudC5jcHAKLUpTR1BVVmFsaWRhdGlvbkVycm9yLmNwcAotSlNHUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yLmNwcAotSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmNwcAotSlNHUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCiBKU0dhaW5Ob2RlLmNwcAogSlNHYWluT3B0aW9ucy5j
cHAKIEpTR2FtZXBhZC5jcHAKQEAgLTM3NjAsMzggKzM2MzksNiBAQCBKU1dlYkdMVHJhbnNmb3Jt
RmVlZGJhY2suY3BwCiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAogSlNXZWJHTFZlcnRleEFy
cmF5T2JqZWN0LmNwcAogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAotSlNXZWJHUFUu
Y3BwCi1KU1dlYkdQVUFkYXB0ZXIuY3BwCi1KU1dlYkdQVUJpbmRHcm91cC5jcHAKLUpTV2ViR1BV
QmluZEdyb3VwQmluZGluZy5jcHAKLUpTV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKLUpT
V2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotSlNXZWJHUFVCdWZmZXIuY3BwCi1KU1dlYkdQVUJ1
ZmZlckJpbmRpbmcuY3BwCi1KU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCi1KU1dlYkdQVUNvbW1h
bmRFbmNvZGVyLmNwcAotSlNXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCi1KU1dlYkdQVUNv
bXB1dGVQaXBlbGluZS5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAK
LUpTV2ViR1BVRGV2aWNlLmNwcAotSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLUpTV2Vi
R1BVRGV2aWNlRXZlbnRIYW5kbGVyLmNwcAotSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLUpTV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLUpTV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVRdWV1ZS5jcHAKLUpT
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKLUpTV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVTYW1wbGVyLmNwcAotSlNXZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVN3YXBDaGFp
bi5jcHAKLUpTV2ViR1BVVGV4dHVyZS5jcHAKLUpTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCiBKU1dl
YktpdEFuaW1hdGlvbkV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNwcAogSlNXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY4
MmRiY2MwNmNlYWU3ZDc2YzFlMGU5YTY2YWJmNDI3ZTFjY2I0OWIuLjBjZjhmYmU0MzM0ZTFjMmRi
MTU2ZTY1ODI3NjcxOGQwNmM5ZDcwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzg3
LDcgKzM4Nyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NB
TGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRD
YXNjYWRlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRl
eHQuY3BwCkBAIC0zOTgsMjQgKzM5Nyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFu
ZEJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRl
UGlwZWxpbmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1l
dGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZl
cnRMYXlvdXQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVl
TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rl
ck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVN
ZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC02MTYsNyArNTk3LDMgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIEBuby11bmlmeQogcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVz
LmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHAgQG5vLXVuaWZ5Ci0KLS8vIERlcml2ZWQgU291cmNlcwotCi1XSExTTFN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9uTWFwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliNjM1OGIxYjBmMTYxYjY2ZTc3N2E5MWRiNGM3
NmRkMWY2ZjZkZWIuLjU1ZTAwMmZhMmJjMWY0MGNkMTIxYjI5YjZkZmQ4MDg5N2QxNmYyZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkxMSwxOCArOTExLDYgQEAKIAkJMzEyODhFNzUwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tl
eWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggKi87IH07
CiAJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4Q0E2QTE0
NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2
QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTJGRjkx
MTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8q
IEdQVUNvbW1hbmRCdWZmZXIuaCAqLzsgfTsKLQkJMzEyRkY5MTIyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEyRkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICovOyB9OwotCQkzMTJG
RjkxMzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzQyMUE0QzJG
NDAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLzsgfTsKLQkJMzEyRkY5
MTQyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzIyMUE0
QzJGMzAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovOyB9Owot
CQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUXVldWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMxMjFBNEMyRjIwMEVCMTk5RCAv
KiBHUFVRdWV1ZS5oICovOyB9OwotCQkzMTJGRjkxNjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUmVu
ZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovOyB9
OwotCQkzMTJGRjkxNzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJG
RjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87
IH07Ci0JCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJCMjFBNEMy
RjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLzsgfTsKLQkJMzEyRkY5MTkyMUE0QzM2
NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5RCAv
KiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxMkZGOTFBMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJBMjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4u
aCAqLzsgfTsKLQkJMzEyRkY5MUIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEM1MjFBNEMy
RjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi87IH07Ci0JCTMxMkZGOTFDMjFBNEMzNjUwMEVC
MTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZv
cm1hdC5oICovOyB9OwogCQkzMTMxNzE1NjFGQjA3OUU1MDA4RDkxRkMgLyogQ2FudmFzQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTcxNTQx
RkIwNzlEMTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTM1OTEwNjFFN0REQzczMDBGMzA2MzAgLyogUlRD
SWNlQ29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTM1OTEwMDFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlQ29ubmVjdGlvblN0
YXRlLmggKi87IH07CiAJCTMxMzU5MTA3MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VHYXRoZXJp
bmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEzNTkxMDExRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0YXRlLmggKi87IH07
CkBAIC05NTcsNyArOTQ1LDYgQEAKIAkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVs
YXRlZENsaWNrT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMx
N0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0QzRkYyMjE1NTk5RTMwMDM0RTNCOSAv
KiBQb2ludGVyRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkzMTgxNUEzMTFGOUE2QzhGMDBGQ0JGODkgLyogSW1hZ2VCaXRtYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDI2QkJGMUY4NkQx
ODkwMDhGRjI1NSAvKiBJbWFnZUJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTMxODQzNkRFMjFCOURBQUYwMEVEMzgzRSAvKiBXZWJHUFVM
YXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE4
NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi87IH07CiAJCTMxODg5MTYx
MUFCN0VFQTEwMEVBNjI3QiAvKiBtaXNzaW5nSW1hZ2VAM3gucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0MTk5OTFBQjBEQTE0MDA0RTY0RTEg
LyogbWlzc2luZ0ltYWdlQDN4LnBuZyAqLzsgfTsKIAkJMzE4RUFENEQxRkE5MTM4MDAwOENFRjg2
IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThFQUQ0QTFGQTkxMTU3MDA4Q0VGODYg
LyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTk4NDgwMTFBMUQ4MTdCMDBBMTMz
MTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxOTg0N0ZGMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5o
ICovOyB9OwpAQCAtMzI2OCw5ICszMjU1LDYgQEAKIAkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAx
IC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg4OTBBRDFBQTEzRjI1MDAyNkMzMDEgLyogUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTk1NkYxQzIzMzFBNjc3MDA1N0U5RDIgLyogSlNBcHBs
ZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTk1NkYxQjIzMzFBNjQ2MDA1N0U5RDIgLyogSlNBcHBsZVBheUNhbmNlbEV2ZW50
LmggKi87IH07CiAJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25F
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5
NTZGMUQyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmggKi87IH07Ci0J
CUExOTU2RjIzMjMzMUFDRjIwMDU3RTlEMiAvKiBXSExTTFJlcGxhY2VXaXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUxRjcwQjIyQ0FEOERBMDAx
NUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovOyB9OwotCQlBMTk1NkYyNDIzMzFBRDIxMDA1
N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmgg
Ki87IH07Ci0JCUExOTU2RjI1MjMzMUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIx
QkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi87IH07
CiAJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUFF
QTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsg
fTsKIAkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cCAqLzsgfTsKIAkJQTE5RDkzNEIxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNjk1MCwyMCArNjkzNCwxNCBAQAogCQkxQzI0RUVBNjFDNzJBN0I0MDA4MEY4RkMgLyogSlNG
b250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0Zv
bnRGYWNlU2V0LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjRFRUE3MUM3
MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTRm9udEZhY2VTZXQuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkx
QzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzI4MUM2RDIyQjg3Qjk4MDA2OTFDMDAgLyogV0hM
U0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQ2hl
Y2tUZXh0dXJlUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
MjgxQzZFMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFu
dEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFZh
cmlhbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3NzEy
MUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMzMyNzcyMjFDRjBE
MkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5u
YW1lZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0MjEx
RTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0
Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbEN1cnJl
bnRUcmFpdENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0M0RF
NkEyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0Q29s
bGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0RDBERDEyNEQ5RjBE
QjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaEJ1
ZmZlck1lbWJlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1MEM0OTUyMkM4
NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNTlCMDE4MjIzODY4NzkwMDg1MzgwNSAvKiBXSExT
TFNjb3BlZFNldEFkZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2NvcGVkU2V0QWRkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdDIC8q
IEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRG
YWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEYxQzZFN0NBNjAw
QUI1MjdDIC8qIEZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
bnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNkI5NUREMjJDODU4QTQw
MEU2RjE0RiAvKiBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZEOEFDMjUwQTI5NEQwMEQ2RTkyMCAvKiBG
b250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2RkQ4
QUQyNTBBMkU1MzAwRDZFOTIwIC8qIEdseXBoUGFnZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdseXBoUGFnZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM2RkQ4QUUyNTBBMzExNTAwRDZFOTIwIC8qIEZvbnRDYXNjYWRlQ29yZVRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udENhc2NhZGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02OTcyLDQ4ICs2OTUwLDE3IEBACiAJCTFDODFCOTU2MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQw
QjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMRW50cnlQb2ludFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQWRkcmVzc1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjk5
MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTEdhdGhl
ckVudHJ5UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJ
dGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5QjIxRUM0MDA5MDBE
MDUwMEQgLyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQ2hlY2tl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRCMjJBQTE5RkYwMDFC
Rjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Qzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTENvbXB1dGVEaW1lbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29u
dmVydExheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGluZU1ldGFsQ29udmVy
dExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRGMjJBQTIz
QzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzhEMjZDOTIyQzA5NDUzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEy
NUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9uLnRi
ZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3Vy
Y2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVzc2lv
bi50YmQ7IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBXSExT
TEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9tYmll
RmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0IyMUVEOURG
NTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMy
REUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9uU3Rh
Z2VDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTUyMUVF
RDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0ZXJh
bFR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBQTgyRjYyMjQyQUUwNTAw
RTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUHJvcGVydHlSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
U2NyaXB0T2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ4MDBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGNTZERTI1MzAy
NDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNUZFODgyMkRFQkM4QjAwOTQ0
MEUyIC8qIFdITFNMRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0NkEgLyogV0hMU0xS
ZXNvbHZhYmxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmFibGVUeXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBX
SExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM1MjFERUQ2NDkwMDZF
ODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElu
dGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIz
NzIxREVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZs
b2F0TGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzkyMURGMDNGMzAw
NkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEY4MjE3QjgzOTMw
MDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2
QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0VW5kZXJsaW5lT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQzE5OTAzMzI0MDBC
Q0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDREFCRDZCMjJDODQ3OUEwMEJEMEEzQSAvKiBXSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0NjAw
RjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDIyLDIwICs2OTY5LDYgQEAKIAkJMUNFOEQxMjUyNjE4
NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8q
IERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1
NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVj
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0
NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xG
dW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0Iw
MjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCMTIxRjJC
OTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xUeXBlTmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCMjIx
RjJCOTg2MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNC
M0I1MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29k
ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIgLyog
V0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5h
dGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNF
Q0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0VDQjNCQTIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50
U2NhZmZvbGRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50U2NhZmZv
bGRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCQjIxRjUxMUFB
MDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUNFQ0IzQzYyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRp
dmVUeXBlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YwQkZENDIyOTg3MDY4MDBFRDIwNzQgLyog
VGV4dFNpemVBZGp1c3RtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTaXplQWRqdXN0
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRkFFMzIyMEE2RDZBM0Yw
MDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpj
LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKIAkJMUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGlj
dHVyZVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BpY3R1cmVJ
blBpY3R1cmVXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjUsMjIg
KzczOTgsNiBAQAogCQkzMTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NLZXlmcmFtZXNSdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjhDQTY3MTQ3MzMxNTIwMDc0QzcyQSAv
KiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25Db250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEI5MjFBNEMyRUYw
MEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQ
aXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQTIxQTRDMkVG
MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN3YXBDaGFpbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQjIxQTRDMkYwMDBFQjE5OUQg
LyogR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyog
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhC
RDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJF
MjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGV2aWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJGMjFBNEMyRjEwMEVCMTk5
RCAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2aWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMTIxQTRD
MkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzIyMUE0QzJGMzAwRUIxOTlEIC8qIEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEy
RkY4QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVVGV4dHVyZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJG
RjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTMxMkZGOEM1MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTMxMkZGOTNCMjFBNjFDQTAwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTJGRjkzQzIxQTYxQ0ExMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUXVldWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJGRjkzRDIxQTYxRjA3MDBFQjE5OUQgLyogSlNXZWJH
UFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVF1ZXVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkZGOTNFMjFBNjFGMDcwMEVCMTk5
RCAvKiBKU1dlYkdQVVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR1BVUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMx
NzE1NDFGQjA3OUQxMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYW52YXNCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NTYzLDggKzc0ODAsNiBAQAogCQkzMTdEM0ZFRjIxNTU5OUUxMDAzNEUzQjkgLyogUG9pbnRl
ckV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBQb2ludGVyRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTdEM0ZGMTIxNTU5OUUyMDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBvaW50ZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxN0QzRkYyMjE1NTk5RTMwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9pbnRlckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
ODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTg0MzZERDIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHUFVMYXllci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4OUU2REIxNkIyMTAzNTAwMzg2RUEzIC8qIHBsdWdJbnMu
Y3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBwbHVnSW5zLmNzczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFENEExRkE5MTE1NzAwOENFRjg2IC8qIEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQml0bWFwUmVu
ZGVyaW5nQ29udGV4dFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
OEVBRDRDMUZBOTEzNTIwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0
aW5ncy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Miw3ICs3NTg3LDYgQEAKIAkJMzM1MDND
OUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAvKiBO
b3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90
aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MUY3MEIyMkNB
RDhEQTAwMTVCNDBEIC8qIFdITFNMUmVwbGFjZVdpdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZXBsYWNlV2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNUM3NEZEMzIyOEEx
OTEyMDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzVDNzRGRDcyMjhBMTlBNjAwMEMyMUEwIC8qIENTU0dyaWRJbnRlZ2VyUmVw
ZWF0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNjYyRjk4NDA0N0NFREJFNUREREFGQUEgLyog
UmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTExMywxOSArOTAyNyw4IEBACiAJCTUxRkI2N0Q5MUFFNkI1RTQwMEQwNkM1QSAvKiBD
b250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5z
aW9uU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
RXh0ZW5zaW9uU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjEz
MUU1QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjE1ODYyQzIyOTM3
N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNFMTJGIC8qIFdI
TFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdITFNMTmFtZVNwYWNlLmg7IHBhdGggPSBB
U1QvV0hMU0xOYW1lU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyQkFC
OTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMkQw
N0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQ
cmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJl
c2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGlt
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAvKiBX
SExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVj
a1JlZmVyZW5jZVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI0QkQ0
ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNkIzRjAxMjJGQjdC
REQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNG
MDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0ND
NzQyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFBsYXRmb3JtWFJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTI3M0NDNzUyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybVhSQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3
M0NDOUEyNTYzQjIxMjAwODUwMDA3IC8qIEpTV2ViWFJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTkxMzcsMTIgKzkwNDAsOSBAQAogCQk1MjczQ0NBRDI1NjQ1NzZDMDA4NTAw
MDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdp
ZFRyYW5zZm9ybUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjczQ0NBRjI1NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlZpZXdJbml0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4MTUwIC8q
IFdITFNMUGFyc2luZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQYXJzaW5nTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQzIyRjkzRTVEMDA1NzgxNTAgLyog
V0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NFc2Nh
cGVNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZEMUUw
MDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJG
MUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZhdWx0
RGVsZXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVmYXVsdERlbGV0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXll
ck1hbmFnZXJPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzc2
LDEzICsxMDY3NiwxMCBAQAogCQk3QzdCRjk0OTI1MTZGQTU0MDA4MDg2ODIgLyogUGVyZm9ybWFu
Y2VNZWFzdXJlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmVPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDN0JGOTRCMjUxNkZBNTQwMDgw
ODY4MiAvKiBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZU1l
YXN1cmVPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5NTAy
NTE2RkI1NDAwODA4NjgyIC8qIFBlcmZvcm1hbmNlTWVhc3VyZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZXJmb3JtYW5jZU1lYXN1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3QzdDNzY5QzIyRjY3RUNEMDAzMkJDQ0QgLyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xNYW5nbGVkTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTU9wZXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNTFFRDYyODFEMDBDRTI2RTggLyog
SlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hM
U0xVbm5hbWVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRG
IC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5
cGVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODgyNEM0MjQ5RDdCMDUw
MEVEOEZDNCAvKiBTVkdQYXRoU2VnVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHUGF0aFNlZ1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
OEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QW55Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDOEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29udmVydEJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTI2LDEwICsxMTQyMyw2IEBACiAJCTkx
NzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkxNzVDRTVBMjFFMjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkx
NzVDRTVBMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MTg2
RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTE4NkYzQjYyMzI5RkI0RTAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQ
VVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVs
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0JBMjMyOUZFNjgwMEFG
Rjg1NyAvKiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQjhG
MEIzMjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6
emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDcgKzEyNjAzLDYgQEAK
IAkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzN0E0MkUyMjUy
N0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRl
eHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMzhB
ODdBMzI1MzhCRUU3MDAzN0E0NzIgLyogR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0FGOUQ4MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVz
ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8q
IFVzZXJBZ2VudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFVzZXJBZ2VudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzE4LDcg
KzEyNjEwLDYgQEAKIAkJQTNCRjdFRjIyNTZDOEQ3MjAwNDRCQzc1IC8qIEtIUlBhcmFsbGVsU2hh
ZGVyQ29tcGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JGN0VGNDI1NkM4RDcyMDA0
NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtIUlBh
cmFsbGVsU2hhZGVyQ29tcGlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JG
N0VGNTI1NkM4RDc0MDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBM0MzREM1RDI1M0ExOTkyMDA2MUYzMkEgLyogR1BVUGxhdGZvcm1UeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQbGF0Zm9ybVR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRDQyQTg0MUYzM0JBMzYwMEE2NEI2MiAvKiBMYXlvdXRV
bml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVuaXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MjExNkQwREREMDA3MTk3
QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAv
KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDcwNCwxMjEgKzE0NTk1LDE2IEBACiAJCUMxRjdCNzJGMjQ0
OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBR1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2Vy
TGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVBIC8q
IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjBGODhBQTIyOTY2QjBFMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xBU1REdW1wZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xBU1REdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxMEU5MTEyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMTBF
OTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMzhBMTMyMURERUNEMzAw
RjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMQnVpbHRJblNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
MzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xG
dW5jdGlvbkRlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3
OTc5IC8qIFdITFNMQ29udGludWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb250aW51ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyog
V0hMU0xCb29sZWFuTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJvb2xlYW5MaXRlcmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3
OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZGV4RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGODIxQ0Q4OUJC
MDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElu
dGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY5MjFD
RDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2Vt
YW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkEyMUNEODlCRTAw
MjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZVNl
bWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkZCMjFDRDg5QkUw
MDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRG9XaGls
ZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkQyMUNEODlDMDAw
MjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDMy
MUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmV0
dXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA0MjFDRDg5QzYwMDIy
Nzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFdoaWxlTG9vcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5Nzkg
LyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA2MjFDRDg5
QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TENvbW1hRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcw
ODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFF1YWxpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlRGVjbGFy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTEyMUNEODlEMTAw
MjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZUFy
Z3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEyMjFDRDg5RDEw
MDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5
NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlh
YmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE0MjFD
RDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNM
TG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb2dpY2FsTm90RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxNjIxQ0Q4OUQ1
MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENh
bGxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE4MjFD
RDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE5
MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFBMjFD
RDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnJlYWsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5
IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFGMjFDRDg5
REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xU
eXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIwMjFD
RDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjIyMUNEODlERjAw
MjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnVp
bHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIzMjFD
RDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVm
ZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyog
V0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9u
TWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI3MjFDRDg5RTQw
MDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3OSAv
KiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZURlZmluaXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3
OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRDIxQ0Q4OUU5MDAy
Mjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkYyMUNEODlFQzAw
MjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQb2ludGVy
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczMDIxQ0Q4OUVEMDAy
Mjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyog
V0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9h
dExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczQTIxQ0Q4
RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvZ3Jh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFCRjc0MjIxQ0Q5NjNCMDAyMjc5
NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xTdGFuZGFy
ZExpYnJhcnkuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFyZExp
YnJhcnkuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQzIxQkY3NDUy
MUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXSExTTFN0
YW5kYXJkTGlicmFyeS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU3
MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTgxRDlFNEU5OTAwRjVCMjRDIC8qIENT
U0ZvbnRWYXJpYXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NGb250VmFyaWF0aW9uVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIz
NEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0
QTk4NzIxRTg4NkFEMDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMVmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4QTIxRTg4
ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xOYW1lUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0
QTk4QzIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xOYW1lUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIz
NEE5OEQyMUU4ODg4NDAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xOYW1lQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMzRBOThFMjFFODg4ODUwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMTmFtZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzIzNEE5OTcyMUU5MEYyODAwM0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OTkyMUU5MEYyOTAwM0M5ODREIC8qIFdITFNMUmVzb2x2
ZU92ZXJsb2FkSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5QTIxRTkwRjU2
MDAzQzk4NEQgLyogV0hMU0xJbmZlclR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
SW5mZXJUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlCMjFF
OTBGNTcwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJ
bmZlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlEMjFFOTEw
QkQwMDNDOTg0RCAvKiBXSExTTFJlc29sdmluZ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZXNvbHZpbmdUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFCMjFF
OTJDMTgwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIzNEE5QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFEMjFFOTJD
MTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0
ZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0
RCAvKiBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjIyMUU5MkMxRjAwM0M5ODREIC8qIFdI
TFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xD
aGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1
bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI2MjFF
OTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJ
bnRyaW5zaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI3MjFFOTJD
QzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xJbnRyaW5zaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzOThFQkQy
MzBBMUI3NjAwNjQxNTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TmFtZVNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4RTYxMUZFODk3
OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2Fj
aGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdBRjIxRkFE
NTNGMDA0QzZERDEgLyogV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzI0QTU3QjIyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QjMyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNN
YXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFBy
ZXBhcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVwYXJlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QkIyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJl
cGFyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXBhcmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTIxQzcyREM5OTAwRjc0QTE2
IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNDMUM2
REIxOTQwMDE0NTFCNiAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9u
dEZhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODMzRDFDNkRDMjJD
MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNG
b250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODA4
MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjgw
QjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyODhDNzJEMjFDOTkx
REEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIw
QUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUg
LyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDI1LDIyOSArMTUyMTEsMjggQEAKIAkJRDAwMEVCQTEx
MUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFt
ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJmcmFt
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI2MTFDMUI5
Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdWJmcmFtZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDAxRDlBQjIxQjBDN0JGMDAyM0I5QkMgLyogR1BVQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
Q29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4NzkyMUM4NjQ1QjAw
NjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVC
aW5kR3JvdXBMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4N0Ey
MUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDAzMjg3QjIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJBQTYg
LyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2
IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVsaW5l
TGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzkxNDEyMjI0OEQ0
MDAwOTg5OThDIC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdFNTIy
NkE2MzQyMDBFRUQ3RDkgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9ICJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmF2aWdhdG9yR1BVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAwNDg3RUUyMjc0MjgxNDAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOYXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3
RkQyMjc3QUY4MTAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvcitHUFUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJXb3Jr
ZXJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4
N0ZFMjI3N0FGODIwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV29ya2VyTmF2aWdhdG9yR1BVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFz
c0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkYyMjQyRUQ0NTAwNDNG
MTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDYyMTZF
RkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQ
VS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0RjIxNkZGQUMy
MDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVBZGFwdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUwMjE2RkZBQzIwMDBENzFE
QiAvKiBXZWJHUFVBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcx
REIgLyogV2ViR1BVQWRhcHRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQWRhcHRlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVE
ZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVRGV2aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAx
QTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNw
bGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3BsaXRT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMTIyMjEyNUFGQzAw
NjI3QjZDIC8qIEdQVUNvbG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2QyAvKiBHUFVCdWZmZXJEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMUMyMjEzNjI3MzAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkgLyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJpbmRH
cm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0N0QyMjBBMkFDNjAwQUM1RjQ5IC8qIEdQVUV4
dGVudDNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUV4dGVudDNELmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwMjZGNDgwMjIwQTJCNzAwMEFDNUY0OSAvKiBHUFVFeHRlbnQzRC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVRXh0ZW50M0QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2
RjQ4MzIyMEE0NzJGMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVUZXh0
dXJlVXNhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4NTIyMEE0
NzcyMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1
cmVVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QjIyMEE1QjBC
MDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0OEMyMjBBNUJB
RDAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRl
eHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMkMyNjky
MjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMzIxMUNFMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDMyMTFDRjIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzMjExRDAyMUFDOTU0RjAwNzYzQ0YyIC8qIEdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIxMjJEN0YyRUEw
MERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvclNjb3Bl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDM1ODZCMjIyRDdGMkVBMDBEQTAy
ODQgLyogR1BVRXJyb3JTY29wZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3JTY29w
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDM2REQ4RDIwOEZGQzBDMDBG
OUY0QjIgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0
OUEyMUZGQzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUMyMUZGQzdGQzAwMDIyMjdGIC8qIEdQVUNvbXBh
cmVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQVUNv
bXBhcmVGdW5jdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNj
cmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTEyMUM5QjUw
RjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA1QTk5RTIyMUM5QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTQyMUM5QkYyQzAwMDMyQjc1
IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5l
TGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNUE5OUU1MjFDOUJGMkMw
MDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVQaXBlbGluZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
NUE5OUU2MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyog
Rm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1REQ2
REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBX
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MTVG
Q0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2
MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDY1QkU1NzIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDY1QkU1ODIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3VwQWxs
b2NhdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBBbGxvY2F0
b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2QTlBMjEyMjAyNkM3
QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3Zl
Rm9ybWF0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdmVGb3JtYXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2
RUY1NTIyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVV0
aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNkVGNTUzMjIwQkEyNkEwMDE4
NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVXRpbHNN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2NTU0QTAw
Q0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwN0RFQUI4MEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4NDAzM0EyMjFDQkY1NDAwMDA3MjA1IC8q
IEdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVCdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NDNBNEMy
MEZFQzE2NTAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg1RTY0QTIyMzZERUFFMDBDM0UxRTIgLyogR1BV
QmluZEdyb3VwTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NkZFOTYwOUQ1M0FBQjAwNUJD
NzREIC8qIFVubGlua0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5saW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5NzA5
RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmxpbmtDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDA4N0NFMzgyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFMzkyMUFDQTk0MjAwQkRFMTc0IC8qIEdQ
VVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVRdWV1ZU1ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQTIxQUNBOTQyMDBCREUxNzQgLyog
R1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJl
bmRlclBhc3NFbmNvZGVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
ODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0MyMUFDQTk0MjAwQkRF
MTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGV2aWNl
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNEMjFBQ0E5NDIw
MEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA4N0NFM0UyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVU3dhcENoYWluTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwODdDRTNGMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVUZXh0dXJlTWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTQwMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTaGFkZXJN
b2R1bGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNDIyNDA2MDFEMDBGM0Y0
NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwODkwMzM1MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQwIC8q
IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDg5MDMzODIyNDA2Mjg5MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAz
MzkyMjQwNjQyRDAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDg5MDMzQTIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBp
cGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0
ZVBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRlUGlwZWxp
bmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzM0MyMjQxQTk5
RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVDb21wdXRlUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAz
M0QyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDg5MDMzRTIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDM0MDIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRl
UGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEw
MkQyMjBEMEI5QzAwNThDNTAyIC8qIEdQVUxvYWRPcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVTG9hZE9wLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMkYyMjBEMEJENTAwNThDNTAyIC8q
IEdQVUxvYWRPcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMb2FkT3AuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEdQVVN0b3JlT3AuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhB
QTAzMjIyMEQwRDBCMDA1OEM1MDIgLyogR1BVU3RvcmVPcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVT
dG9yZU9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM2MjIwRDE5REEw
MDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhB
QTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogR1BVQ2Fu
dmFzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52
YXNDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVQ2FudmFzQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA1MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBQzAwNjIzMTcxRjUyMDAxODc3
NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMEIyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURl
dmljZUV2ZW50SGFuZGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZBRkYyMkQwMkU1MzAwQzQ1MzhDIC8q
IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURldmljZUVy
cm9yU2NvcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAxMjJEMDJF
NTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwOUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvckZpbHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwMzIyRDQwQ0M1MDBDNDUzOEMgLyogV2ViR1BVRGV2
aWNlRXJyb3JTY29wZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQ
VUVycm9yRmlsdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVFcnJvckZpbHRlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDlBRkIwODIyRDU1NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwQzIy
RDU1RTkwMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWYWxpZGF0
aW9uRXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwRDIyRDU1
RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVZh
bGlkYXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwRTIy
RDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVVZhbGlkYXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVT3V0T2ZNZW1vcnlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
RkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5
MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NjIwOTJBMEE2MDBFMEMyNTkgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMEEzQTczMDE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVy
T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MjIyMzA5RDc2
MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjMy
MjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVTYW1w
bGVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjY4
MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNhbXBs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkIyMjMwQUNDMDAwQTIy
OTM1IC8qIEdQVVNhbXBsZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNhbXBs
ZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkMyMjMwQkI4
RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2FtcGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RDIyMzBCQjhFMDBBMjI5
MzUgLyogV2ViR1BVU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTYW1wbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkYyMjMwQzFGMTAwQTIy
OTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI3RTIyMzJGMEMwMDBBMjI5MzUgLyogV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjdGMjIzMkYxNzMw
MEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuaDsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJRDBBREIy
OEEyMjM3NzM2MTAwQTIyOTM1IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QjIyMzc4NDJFMDBBMjI5MzUgLyog
R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29sb3JTdGF0ZURl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyOEMyMjM3ODQy
RTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY2
MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlYXRlTGlua0NvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQTIyNEVDNjI0MDA2
MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJsZW5kRGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQjIyNEVDNjI0
MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCbGVuZERlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBRDIyNEVDRTIwMDA2
MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvcldyaXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFFMjI0RUNFMjAwMDYxMDQ5QyAv
KiBHUFVDb2xvcldyaXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvcldyaXRlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91
cExheW91dEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0QmluZGlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1
REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBGMDA2
ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwQkUxMDRBMjFFNjg3MkYwMEU0MkE4OSAvKiBHUFVCdWZmZXJCaW5kaW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUJ1ZmZlckJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBCRTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cEJp
bmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MDIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BV
QmluZEdyb3VwQmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTIyMUU2QUEwRDAw
RTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEJFMTA1MzIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQkUxMDVFMjFFNkJBRDMwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
QkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCRTEwNjIyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVQmluZEdyb3VwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5
RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBD
NDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYyMjE4M0VGRUMwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGODIxODQwNERBMDA5RUMx
REUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlG
OTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDQUFE
NTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVT3JpZ2luM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDQ0E5
NEEyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPcmlnaW4zRC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDY5QzlDMjIyRTAwQzIwMDMyOTI3
RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBENjlDOUQyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3Vw
TGF5b3V0QmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDg3MjFCNjRDQUEwMDNDOTgzQyAvKiBH
UFVCdWZmZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEMyMUI3MDY3NjAwM0M5ODND
IC8qIFdlYkdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEQyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQ
VUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BV
QnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ5MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BVQnVmZmVyTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBEODY0OTIyMUI3NjBGMjAwM0M5ODNDIC8qIEdQVUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBE
ODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBEODY0OTYyMUJBMThGNDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5ODIxQkExOUE3MDAzQzk4M0MgLyogR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgz
QyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4
SW5wdXREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDlC
MjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyog
V2ViR1BVU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU2MjE3OTMwRTIwMDdGRTJB
QyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVT
aGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJTdGFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hhZGVy
U3RhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5k
RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAv
KiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NDIxOTNCMDJFMDAwRkE3NUMg
LyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJH
UFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NjIxOTNCMDJFMDAwRkE3NUMgLyogV2Vi
R1BVVGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEVBQ0Y4ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4OTIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BV
VGV4dHVyZVZpZXcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEMyMTk0MDNDOTAwMEZBNzVDIC8qIFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhFMjE5NDBBMjIwMDBG
QTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4
RjIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTEyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkyMjE5
NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0ZBRTIxOUUzMEZE
MDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZUZvcm1hdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcyMTQzRTMwM0MwMDI4RTM4
MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5ODIyMDM5MUMzMDAxMTgwNTggLyogV0hMU0xW
ZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWZXJ0ZXhC
dWZmZXJJbmRleENhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBG
NzU1OTkyMjAzOTFDMzAwMTE4MDU4IC8qIFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4
MDU4IC8qIEdQVUxpbWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMaW1pdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVDMTFGOEM0NUEwMDdFNzRF
MCAvKiBQaW5nTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpbmdM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDJDREI1RUQ2MzhGNDNBRjg2
RjA3QUEyIC8qIEpTRXJyb3JFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0Vycm9yRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTkxNjUsMTAzICsxODc1MCw2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1
c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUyOTE0QzJDMjJG
OTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmggKi8sCi0JCQkJMUM4NDBC
OTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8sCi0JCQkJQzIxQkY3
MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCi0JCQkJ
QzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywK
LQkJCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLywKLQkJCQlDMjFC
RjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywK
LQkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLywK
LQkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovLAotCQkJCUMy
MUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8sCi0JCQkJ
QzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKLQkJCQlDMjEzOEEx
MzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovLAotCQkJCUMy
MUJGNzIyMjFDRDg5REYwMDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oICovLAotCQkJ
CUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8sCi0J
CQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9u
LmggKi8sCi0JCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAq
LywKLQkJCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZhdWx0RGVsZXRlLmgg
Ki8sCi0JCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMRG90RXhw
cmVzc2lvbi5oICovLAotCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hp
bGVMb29wLmggKi8sCi0JCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAotCQkJCTFDODQwQjdEMjFFQkUwQjgwMEQwNTAw
RCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCi0JCQkJQzIxQkY3MjAyMUNEODlERDAwMjI3
OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjYyMUNE
ODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKLQkJCQlDMjFCRjcw
MjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywK
LQkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyogV0hMU0xFeHByZXNzaW9uLmNwcCAqLywK
LQkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCi0J
CQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKLQkJ
CQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywKLQkJ
CQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAq
LywKLQkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBl
LmggKi8sCi0JCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9yTG9vcC5oICov
LAotCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmlidXRl
LmggKi8sCi0JCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNs
YXJhdGlvbi5oICovLAotCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oICovLAotCQkJCTUyMkRBM0QzMjI5RTFEMzkwMDQyRDE1MSAvKiBXSExT
TEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCi0JCQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3
OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5
NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjBGNEY2NjIxREZGMjM2MDA3
MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0JCQkJQzIxQkY2RjgyMUNEODlC
QjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLywKLQkJCQkxQ0I2OUIzOTIxREYw
M0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5
QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJ
CUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8q
IFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8sCi0JCQkJMUMzMzI3NzEyMUNGMEJFMTAw
MERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8sCi0JCQkJQzIzOThFQkQyMzBBMUI3NjAwNjQx
NTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5
IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzJBMjFD
RDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMy
MUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oICovLAotCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBl
LmggKi8sCi0JCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNM
UXVhbGlmaWVyLmggKi8sCi0JCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3
OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQkzMzUxRjcwQjIyQ0FEOERBMDAxNUI0
MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovLAotCQkJCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2
QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8sCi0JCQkJQzIxMzhBMTUyMURERUNFOTAwRjUx
NkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MDgyMUNEODlD
OTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzAzMjFD
RDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovLAotCQkJCUMyMUJGNkY5MjFDRDg5QkQw
MDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8sCi0JCQkJQzIxMzhBMTYyMURERUNGQjAwRjUx
NkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLywKLQkJCQlD
MjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuaCAqLywKLQkJCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAv
KiBXSExTTFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBX
SExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5
NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MTkyMUNEODlENzAw
MjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovLAotCQkJCUMyMUJGNzMxMjFDRDg5RUUwMDIy
Nzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzFDMjFDRDg5REEw
MDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MUQyMUNE
ODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMyODhDNzJEMjFDOTkxREEwMDJE
RjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJQzIxQkY3MTEyMUNEODlEMTAw
MjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJQzIxQkY3MjkyMUNEODlFNjAw
MjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjBGNEY2NDIxREZCRTVD
MDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKLQkJCQlDMjFCRjcxRjIxQ0Q4
OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCi0JCQkJN0M4NUIyMDEyMkZC
MDQ4NTAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGUuY3BwICovLAotCQkJCTFDMzMyNzcyMjFD
RjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8sCi0JCQkJN0M4NUIyMDQyMkZC
MDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8sCi0JCQkJQzIwRjRGNjcy
MURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0J
CQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5oICovLAotCQkJCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0NkEgLyog
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzEwMjFDRDg5
RDAwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFCRjcx
NDIxQ0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5o
ICovLAotCQkJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJl
bmNlLmggKi8sCi0JCQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29w
LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEFTVDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07CiAJCTFDREQ0NDY2MEJBOUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTI4MSwyOCArMTg3
NjksNiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OwotCQkxQ0VD
QjNBRDIxRjJCOTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAgKi8sCi0JCQkJMUNFQ0IzQkIyMUY1MTFBQTAwRjQ0NTQy
IC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggKi8sCi0JCQkJMUNFQ0IzQUYyMUYyQjk4
NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovLAotCQkJCTFDRUNCM0IyMjFG
MkI5ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8sCi0JCQkJN0M3Qzc2OUMy
MkY2N0VDRDAwMzJCQ0NEIC8qIFdITFNMTWFuZ2xlZE5hbWVzLmggKi8sCi0JCQkJMUNFQ0IzQjUy
MUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLywKLQkJCQkx
Q0VDQjNCNjIxRjUwQUM3MDBGNDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCAqLywK
LQkJCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRl
ci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xO
YXRpdmVUeXBlV3JpdGVyLmNwcCAqLywKLQkJCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIgLyog
V0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8sCi0JCQkJMUNFQ0IzQjEyMUYyQjk4NTAwRjQ0NTQy
IC8qIFdITFNMVHlwZU5hbWVyLmNwcCAqLywKLQkJCQkxQ0VDQjNCMDIxRjJCOTg1MDBGNDQ1NDIg
LyogV0hMU0xUeXBlTmFtZXIuaCAqLywKLQkJCQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgwNTggLyog
V0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovLAotCQkJCUQwRjc1NTk4MjIw
MzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oICovLAot
CQkJKTsKLQkJCXBhdGggPSBNZXRhbDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
CiAJCTFEMDAyNjlBMjM3NEI5RjgwMENBNkNERiAvKiBQaWN0dXJlSW5QaWN0dXJlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwNTAxLDgwICsxOTk2Nyw2
IEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owot
CQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyogY29j
b2EgKi8sCi0JCQkJRDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICov
LAotCQkJCUQwNjVCRTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3Iu
aCAqLywKLQkJCQlEMEJFMTA0RTIxRTY5NUUyMDBFNDJBODkgLyogR1BVQmluZEdyb3VwQmluZGlu
Zy5oICovLAotCQkJCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmggKi8sCi0JCQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJpbmRHcm91
cExheW91dC5oICovLAotCQkJCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERl
c2NyaXB0b3IuaCAqLywKLQkJCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BVQnVmZmVy
LmNwcCAqLywKLQkJCQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8s
Ci0JCQkJRDBCRTEwNEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLywK
LQkJCQlEMEQ4NjQ4NzIxQjY0Q0FBMDAzQzk4M0MgLyogR1BVQnVmZmVyRGVzY3JpcHRvci5oICov
LAotCQkJCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICovLAot
CQkJCUQwMDFEOUFCMjFCMEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovLAotCQkJCUQwQURC
MjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmggKi8sCi0JCQkJMzEy
RkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQlEMDND
ODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8sCi0JCQkJRDA4
OTAzM0YyMjQxQ0U0NjAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovLAotCQkJ
CUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUuaCAqLywKLQkJ
CQlEMDg5MDMzOTIyNDA2NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5oICovLAotCQkJCUQwM0M4NDlBMjFGRkM2NjcwMDAyMjI3RiAvKiBHUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhCRjIxQTRDMkYxMDBFQjE5OUQgLyogR1BV
RGV2aWNlLmNwcCAqLywKLQkJCQkzMTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNl
LmggKi8sCi0JCQkJRDA5QUZCMDgyMkQ1NTQyODAwQzQ1MzhDIC8qIEdQVUVycm9yLmNwcCAqLywK
LQkJCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJCUQw
OUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5oICovLAotCQkJCUQwOUFGQjAyMjJE
MDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICovLAotCQkJCUQwMzU4NkIyMjJEN0Yy
RUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5jcHAgKi8sCi0JCQkJRDAzNTg2QjEyMkQ3RjJF
QTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmggKi8sCi0JCQkJRDAyNkY0N0QyMjBBMkFDNjAw
QUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8sCi0JCQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4MDU4
IC8qIEdQVUxpbWl0cy5oICovLAotCQkJCUQwOEFBMDJGMjIwRDBCRDUwMDU4QzUwMiAvKiBHUFVM
b2FkT3AuaCAqLywKLQkJCQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFz
ZS5oICovLAotCQkJCUQwOUFGQjE5MjJENjY5OEEwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVy
cm9yLmggKi8sCi0JCQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQVVBpcGVsaW5lLmNw
cCAqLywKLQkJCQk5MTg2RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAqLywK
LQkJCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5oICovLAotCQkJCUQwMDMyODg3MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91
dC5jcHAgKi8sCi0JCQkJRDAwMzI4ODYyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5
b3V0LmggKi8sCi0JCQkJRDAwMzI4ODQyMUM5QTIwRDAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5oICovLAotCQkJCUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQ
bGF0Zm9ybVR5cGVzLmggKi8sCi0JCQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThDIC8qIEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMDMyMTFDRjIxQUM5NTRFMDA3NjND
RjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhDMjIxQTRD
MkYzMDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8sCi0JCQkJ
MzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi8sCi0JCQkJRDAzMjExRDAy
MUFDOTU0RjAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAz
MjExQ0UyMUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8sCi0JCQkJ
MzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0JCQkJ
MzEyRkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
ICovLAotCQkJCUQwNkE5QTIxMjIwMjZDN0EwMDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMuaCAqLywKLQkJCQlEMEFEQjI2ODIyMzBBQUNCMDBBMjI5MzUgLyogR1BVU2FtcGxlci5o
ICovLAotCQkJCUQwQURCMjYyMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRv
ci5oICovLAotCQkJCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUu
aCAqLywKLQkJCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwOEFBMDMyMjIwRDBEMEIwMDU4QzUwMiAvKiBHUFVTdG9yZU9w
LmggKi8sCi0JCQkJMzEyRkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICov
LAotCQkJCUQwQURCMjdGMjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
LmggKi8sCi0JCQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLywK
LQkJCQlEMDI2RjQ4QzIyMEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAq
LywKLQkJCQkzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICov
LAotCQkJCUQwMjZGNDg1MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLywK
LQkJCQlEMDZFRjU1MjIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLywKLQkJCQlEMDlB
RkIwRTIyRDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLywKLQkJCQlE
MDlBRkIwRDIyRDU1RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8sCi0JCQkJ
RDBEODY0OUIyMUJBMUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Iu
aCAqLywKLQkJCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gZ3B1OwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNhICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0MzM0LDcgKzIz
NzI2LDYgQEAKIAkJCQk1N0Q4NDYyQTFGRUFGNTdGMDBDQTM2ODIgLyogd2ViYXV0aG4gKi8sCiAJ
CQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAogCQkJCTk5NkU1
OURBMURGMDBENDUwMDY2MTJCOSAvKiB3ZWJkcml2ZXIgKi8sCi0JCQkJRDAwRjU5M0UyMTZFQ0M0
MzAwMEQ3MURCIC8qIHdlYmdwdSAqLywKIAkJCQk5N0FBQkNGNzE0RkEwOUI1MDA3NDU3QUUgLyog
d2Vic29ja2V0cyAqLywKIAkJCQlFMUVFOEFDNjI0MTJCMTZGMDBFNzk0RDYgLyogd2VieHIgKi8s
CiAJCQkpOwpAQCAtMjcwMjIsNyArMjY0MTMsNiBAQAogCQkJCUNEOUQ4MjdDMUM3QkIyRUQwMDZG
RjA2NiAvKiBjdiAqLywKIAkJCQkwRkU1RkJDOTFDM0RENTA2MDAwN0EyQ0EgLyogZGlzcGxheWxp
c3RzICovLAogCQkJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAotCQkJ
CTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8sCiAJCQkJNDQxQUYwQTcwRUJBN0JC
RjAwNDRFRDRCIC8qIGlvcyAqLywKIAkJCQlDRDg5MkY1QTFGQjUyQUNGMDA5MzMzRDIgLyogaXNv
ICovLAogCQkJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0RiAvKiBtYWMgKi8sCkBAIC0yNzQ1OSw4
ICsyNjg0OSw2IEBACiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKIAkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oICovLAogCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExh
eWVyLm1tICovLAotCQkJCTMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5o
ICovLAotCQkJCTMxODQzNkREMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5tbSAqLywK
IAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
aCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVz
Q29jb2EubW0gKi8sCiAJCQkpOwpAQCAtMjgzMTksODQgKzI3NzA3LDYgQEAKIAkJCW5hbWUgPSBt
YWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDMjEwRTkwRDIxQjRCQ0E0
MDBCN0Y4M0QgLyogV0hMU0wgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8sCi0JCQkJMUNFQ0Iz
QUQyMUYyQjk2NDAwRjQ0NTQyIC8qIE1ldGFsICovLAotCQkJCUMyMEY4OEFBMjI5NjZCMEUwMEQ2
MTBGQSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8sCi0JCQkJQzIwRjg4QUMyMjk2NkIwRjAwRDYx
MEZBIC8qIFdITFNMQVNURHVtcGVyLmggKi8sCi0JCQkJMUM2Qjk1REQyMkM4NThBNDAwRTZGMTRG
IC8qIFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAqLywKLQkJCQlDMjM0
QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAg
Ki8sCi0JCQkJQzIzNEE5QUUyMUU5MkMxQTAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNhdGVG
dW5jdGlvbnMuaCAqLywKLQkJCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xDaGVj
a2VyLmNwcCAqLywKLQkJCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVja2Vy
LmggKi8sCi0JCQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVu
Y2VUeXBlcy5jcHAgKi8sCi0JCQkJNTI0QkQ0ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNMQ2hl
Y2tSZWZlcmVuY2VUeXBlcy5oICovLAotCQkJCTFDMjgxQzZEMjJCODdCOTgwMDY5MUMwMCAvKiBX
SExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwICovLAotCQkJCTFDMjgxQzZFMjJCODdCOTgw
MDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCAqLywKLQkJCQk1MjJCQUI5
NjIyRTZBMzYyMDBDNTRDRTkgLyogV0hMU0xDb2RlTG9jYXRpb24uaCAqLywKLQkJCQkxQzg2Q0E0
QjIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgKi8sCi0JCQkJ
MUM4NkNBNEMyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCAqLywK
LQkJCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIgLyogV0hMU0xFcnJvci5oICovLAotCQkJCTFD
QTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAq
LywKLQkJCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hl
Y2tlci5oICovLAotCQkJCTFDODQwQjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVu
dHJ5UG9pbnRJdGVtcy5jcHAgKi8sCi0JCQkJMUM4NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdI
TFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmggKi8sCi0JCQkJMUM5QUU1Q0EyMUVEOURGNTAwNjlE
NUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8sCi0JCQkJMUM5QUU1Q0IyMUVEOURG
NTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovLAotCQkJCUMyMzRBOTlBMjFF
OTBGNTYwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuY3BwICovLAotCQkJCUMyMzRBOTlCMjFF
OTBGNTcwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuaCAqLywKLQkJCQlDMjM0QTlCNzIxRTky
Q0MxMDAzQzk4NEQgLyogV0hMU0xJbnRyaW5zaWNzLmNwcCAqLywKLQkJCQlDMjM0QTlCNjIxRTky
Q0MwMDAzQzk4NEQgLyogV0hMU0xJbnRyaW5zaWNzLmggKi8sCi0JCQkJQzIxMEU5MTEyMUI0QkQx
MDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuY3BwICovLAotCQkJCUMyMTBFOTEyMjFCNEJEMTAwMEI3
RjgzRCAvKiBXSExTTExleGVyLmggKi8sCi0JCQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8q
IFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCAqLywKLQkJCQkxQ0EwQzJFQTIxRUVENkY1MDBB
MTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTk4RDIxRTg4
ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8sCi0JCQkJQzIzNEE5OEUyMUU4
ODg4NTAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLywKLQkJCQlDMjM0QTk4QTIxRTg4
ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovLAotCQkJCUMyMzRBOThDMjFF
ODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovLAotCQkJCTUyMjU2Q0FBMjMw
RjE0QUQwMDQzRTEyRiAvKiBXSExTTE5hbWVTcGFjZS5oICovLAotCQkJCUMyMUJGNzM3MjFDRDhB
MDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8sCi0JCQkJQzIxQkY3MzgyMUNEOEEwMzAw
MjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8sCi0JCQkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4MTUw
IC8qIFdITFNMUGFyc2luZ01vZGUuaCAqLywKLQkJCQlDMjRBNTdBRjIxRkFENTNGMDA0QzZERDEg
LyogV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKLQkJCQlDMjRBNTdCQTIxRkVBRkVBMDA0
QzZERDEgLyogV0hMU0xQcmVwYXJlLmNwcCAqLywKLQkJCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZE
RDEgLyogV0hMU0xQcmVwYXJlLmggKi8sCi0JCQkJNTIyRTFBMTcyMjk3RDZENDAwRTVEMzZBIC8q
IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8sCi0JCQkJNTIyRTFBMTkyMjk3
RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovLAotCQkJ
CUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKLQkJCQkxQ0FB
ODJGNjIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLywKLQkJ
CQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggKi8s
Ci0JCQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJNTI2QjNGMDMyMkZCN0JERTAwNzZE
MzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICov
LAotCQkJCTFDQTBDMkUwMjFFRUI1RjUwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIu
Y3BwICovLAotCQkJCTFDQTBDMkRFMjFFRUI1RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNo
ZWNrZXIuaCAqLywKLQkJCQlDMjM0QTlBRDIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNp
dmVUeXBlQ2hlY2tlci5jcHAgKi8sCi0JCQkJQzIzNEE5QUIyMUU5MkMxODAwM0M5ODREIC8qIFdI
TFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTk5OTIxRTkwRjI5MDAzQzk4
NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCAqLywKLQkJCQlDMjM0QTk5NzIxRTkw
RjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8sCi0JCQkJQzIzNEE5
OUQyMUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovLAotCQkJCTFDNTlC
MDE4MjIzODY4NzkwMDg1MzgwNSAvKiBXSExTTFNjb3BlZFNldEFkZGVyLmggKi8sCi0JCQkJQzI0
QTU3QjIyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcCAqLywKLQkJ
CQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuaCAqLywK
LQkJCQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0
ICovLAotCQkJCTFDREFCRDZCMjJDODQ3OUEwMEJEMEEzQSAvKiBXSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmggKi8sCi0JCQkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEyNUYzIC8qIFdITFNM
U3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLywKLQkJCQkxQzhEMjZDOTIyQzA5NDUzMDBE
MTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCAqLywKLQkJCQkxQ0VDQjNB
OTIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwICov
LAotCQkJCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5oICovLAotCQkJCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovLAotCQkJCUMyMzRBOUIxMjFFOTJDMUQwMDNDOTg0RCAv
KiBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCAqLywKLQkJCQlDMjM0QTlCMzIxRTkyQzIx
MDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwICovLAot
CQkJCUMyMzRBOUFDMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5oICovLAotCQkJCUMyMzRBOTg1MjFFODg2QTkwMDNDOTg0RCAvKiBXSExTTFZp
c2l0b3IuY3BwICovLAotCQkJCUMyMzRBOTg3MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0
b3IuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gV0hMU0w7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjg4ODEsMTc4ICsyODE5MSw2
IEBACiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJ
RDAwRjU5M0UyMTZFQ0M0MzAwMEQ3MURCIC8qIHdlYmdwdSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzIxMEU5MEQyMUI0QkNBNDAwQjdGODNEIC8qIFdI
TFNMICovLAotCQkJCUQwQjhCQjAxMjFDNDZFNzgwMDBDNzY4MSAvKiBHUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nLmggKi8sCi0JCQkJRDBENjlDOUYyMjJFMDE1RTAwMzI5MjdFIC8qIEdQVUJpbmRH
cm91cExheW91dEJpbmRpbmcuaWRsICovLAotCQkJCUQwRDY5QzlDMjIyRTAwQzIwMDMyOTI3RSAv
KiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBENjlDOUQyMjJFMDBD
MjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsICovLAotCQkJCUQw
QjU2RUFCMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaWRsICovLAotCQkJ
CUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2QyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCAqLywK
LQkJCQlEMDFCODExQzIyMTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRsICovLAot
CQkJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmNwcCAqLywK
LQkJCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5oICovLAot
CQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmlkbCAqLywK
LQkJCQlEMDFCODExMjIyMTI1QUZDMDA2MjdCNkMgLyogR1BVQ29sb3IuaWRsICovLAotCQkJCUQw
QURCMjhDMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwgKi8s
Ci0JCQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaWRsICovLAot
CQkJCUQwM0M4NDlFMjFGRkNGMDAwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVuY3Rpb24uaWRsICov
LAotCQkJCUQwM0M4NEEyMjFGRkQ3MjMwMDAyMjI3RiAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaWRsICovLAotCQkJCUQwOUFGQjA2MjJENDE3QjMwMEM0NTM4QyAvKiBHUFVFcnJv
ckZpbHRlci5pZGwgKi8sCi0JCQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVu
dDNELmlkbCAqLywKLQkJCQlEMDhBQTAyRDIyMEQwQjlDMDA1OEM1MDIgLyogR1BVTG9hZE9wLmlk
bCAqLywKLQkJCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAqLywK
LQkJCQlEMENDQTk0QTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovLAotCQkJ
CUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbCAqLywK
LQkJCQlEMDJDMjY5MjIxODE0MTZEMDBEODE4RTQgLyogR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
LmlkbCAqLywKLQkJCQlEMEFEQjI2MzIyMzA5RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2Ny
aXB0b3IuaWRsICovLAotCQkJCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJT
dGFnZS5oICovLAotCQkJCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFn
ZS5pZGwgKi8sCi0JCQkJRDA4QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaWRs
ICovLAotCQkJCUQwMjZGNDhCMjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRv
ci5pZGwgKi8sCi0JCQkJRDBFQUNGQUUyMTlFMzBGRDAwMEZBNzVDIC8qIEdQVVRleHR1cmVGb3Jt
YXQuaWRsICovLAotCQkJCUQwMjZGNDgzMjIwQTQ3MkYwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNh
Z2UuaWRsICovLAotCQkJCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5jcHAgKi8sCi0JCQkJRDA5QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50LmggKi8sCi0JCQkJRDA5QUMwMDcyMzE3MUY1MjAwMTg3NzYyIC8q
IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCAqLywKLQkJCQlEMDlBRkIwQzIyRDU1RTkwMDBD
NDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5NjIxQkExOEY0
MDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBE
ODY0OTgyMUJBMTlBNzAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsICov
LAotCQkJCUQwRDg2NDk0MjFCQTE3M0QwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3IuaWRsICovLAotCQkJCUQwMDQ4N0VCMjI3NDI4MTIwMEVFRDdEOSAvKiBOYXZpZ2F0b3IrR1BV
LmlkbCAqLywKLQkJCQlEMDA0ODdFRDIyNzQyODEzMDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmNw
cCAqLywKLQkJCQlEMDA0ODdFRTIyNzQyODE0MDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmggKi8s
Ci0JCQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5jcHAgKi8sCi0JCQkJRDAw
RjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovLAotCQkJCUQwMEY1OTQ4MjE2RUZF
NTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovLAotCQkJCUQwMEY1OTUwMjE2RkZBQzIwMDBENzFE
QiAvKiBXZWJHUFVBZGFwdGVyLmNwcCAqLywKLQkJCQlEMDBGNTk0RjIxNkZGQUMyMDAwRDcxREIg
LyogV2ViR1BVQWRhcHRlci5oICovLAotCQkJCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAvKiBX
ZWJHUFVBZGFwdGVyLmlkbCAqLywKLQkJCQlEMEJFMTA2MTIxRTZDMEVCMDBFNDJBODkgLyogV2Vi
R1BVQmluZEdyb3VwLmNwcCAqLywKLQkJCQlEMEJFMTA2MDIxRTZDMEVCMDBFNDJBODkgLyogV2Vi
R1BVQmluZEdyb3VwLmggKi8sCi0JCQkJRDBCRTEwNjIyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQ
VUJpbmRHcm91cC5pZGwgKi8sCi0JCQkJRDBCRTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8qIFdlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaCAqLywKLQkJCQlEMEJFMTA1MDIxRTY5RjgzMDBFNDJBODkgLyog
V2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwgKi8sCi0JCQkJRDA4NDAzM0QyMjFFMTg2NDAwMDA3
MjA1IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQkUxMDUyMjFF
NkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBC
RTEwNTMyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsICov
LAotCQkJCUQwMDMyODdBMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQu
Y3BwICovLAotCQkJCUQwMDMyODc5MjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaCAqLywKLQkJCQlEMDAzMjg3QjIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdy
b3VwTGF5b3V0LmlkbCAqLywKLQkJCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BV
QnVmZmVyLmNwcCAqLywKLQkJCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVm
ZmVyLmggKi8sCi0JCQkJRDBEODY0OEUyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlci5p
ZGwgKi8sCi0JCQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRp
bmcuaCAqLywKLQkJCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmlu
ZGluZy5pZGwgKi8sCi0JCQkJRDA1REQ2REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwICovLAotCQkJCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmggKi8sCi0JCQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQ
VUNvbW1hbmRCdWZmZXIuaWRsICovLAotCQkJCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBX
ZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8sCi0JCQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVD
IC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmggKi8sCi0JCQkJRDBFQUNGNzgyMTkzNzIyODAwMEZB
NzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLywKLQkJCQlEMDBENzdGRTIyNDJFRDQ1
MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMDBENzdG
RDIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8sCi0JCQkJ
RDAwRDc3RkYyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwg
Ki8sCi0JCQkJRDA4OTAzM0QyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZS5jcHAgKi8sCi0JCQkJRDA4OTAzM0MyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQ
aXBlbGluZS5oICovLAotCQkJCUQwODkwMzNFMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21w
dXRlUGlwZWxpbmUuaWRsICovLAotCQkJCUQwODkwMzM4MjI0MDYyODkwMEYzRjQ0MCAvKiBXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMDg5MDMzNDIyNDA2MDFE
MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUQw
ODkwMzM1MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmlkbCAqLywKLQkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmNw
cCAqLywKLQkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmggKi8s
Ci0JCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8sCi0J
CQkJRDA5QUZCMDEyMkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNw
cCAqLywKLQkJCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXMuaCAqLywKLQkJCQlEMDlBRkIwMzIyRDQwQ0M1MDBDNDUzOEMgLyogV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMuaWRsICovLAotCQkJCUQwOUFDMDBBMjMxNzM1QkUwMDE4Nzc2MiAvKiBXZWJH
UFVEZXZpY2VFdmVudEhhbmRsZXIuaCAqLywKLQkJCQlEMDlBQzAwQjIzMTczNUJFMDAxODc3NjIg
LyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCAqLywKLQkJCQk5MTg2RjNCNjIzMjlGQjRF
MDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovLAotCQkJCTkxODZGM0I3MjMyOUZCNEYw
MEFGRjg1NyAvKiBXZWJHUFVQaXBlbGluZS5oICovLAotCQkJCUQwQzQxOUYwMjE4M0VCMzEwMDlF
QzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0JCQkJRDBDNDE5RjEy
MTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsICovLAot
CQkJCUQwNUE5OUU1MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5jcHAg
Ki8sCi0JCQkJRDA1QTk5RTQyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0
LmggKi8sCi0JCQkJRDA1QTk5RTYyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5
b3V0LmlkbCAqLywKLQkJCQlEMDA0ODdEMjIyNDU3QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMDVBOTlFMTIxQzlCNTBGMDAwMzJCNzUg
LyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA1QTk5RTIyMUM5
QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8sCi0J
CQkJRDBFQUNGOTIyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y5MzIxOTQwQTVCMDAwRkE3NUMgLyog
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsICovLAotCQkJCUQwODkwMzM3MjI0MDYx
QUMwMEYzRjQ0MCAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwICovLAot
CQkJCUQwQzQxOUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaCAqLywKLQkJCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQkzMTJGRjkzQzIxQTYxQ0ExMDBF
QjE5OUQgLyogV2ViR1BVUXVldWUuY3BwICovLAotCQkJCTMxMkZGOTM5MjFBNjFDOUYwMEVCMTk5
RCAvKiBXZWJHUFVRdWV1ZS5oICovLAotCQkJCTMxMkZGOTNCMjFBNjFDQTAwMEVCMTk5RCAvKiBX
ZWJHUFVRdWV1ZS5pZGwgKi8sCi0JCQkJRDA4QUEwMzcyMjBEMUQwNTAwNThDNTAyIC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEVBQ0Y4QzIxOTQwM0M5MDAwRkE3
NUMgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDhBQTAzNjIyMEQx
OURBMDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsICovLAotCQkJCUQw
RUFDRjhGMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8s
Ci0JCQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmggKi8sCi0JCQkJRDBFQUNGOTAyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmlkbCAqLywKLQkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwICovLAotCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZS5oICovLAotCQkJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8sCi0JCQkJRDBBREIyOEEyMjM3NzM2MTAwQTIyOTM1
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBDNDE5RjIy
MTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAot
CQkJCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaWRsICovLAotCQkJCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1w
bGVyLmNwcCAqLywKLQkJCQlEMEFEQjI2QzIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BVU2FtcGxl
ci5oICovLAotCQkJCUQwQURCMjZGMjIzMEMxRjEwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmlk
bCAqLywKLQkJCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxl
LmNwcCAqLywKLQkJCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9k
dWxlLmggKi8sCi0JCQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1v
ZHVsZS5pZGwgKi8sCi0JCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyog
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBEQTBCRTUyMTc5MzBF
MjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5jcHAgKi8sCi0JCQkJRDBEQTBCRTQyMTc5MzBF
MjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5oICovLAotCQkJCUQwREEwQkU2MjE3OTMwRTIw
MDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovLAotCQkJCUQwMDQ4N0U1MjI2QTYzNDIw
MEVFRDdEOSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEFEQjI3
RTIyMzJGMEMwMDBBMjI5MzUgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLywKLQkJCQlE
MEVBQ0Y4NDIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5oICovLAotCQkJCUQwRUFD
Rjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLywKLQkJCQlEMEVBQ0Y4
ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuY3BwICovLAotCQkJCUQwRUFD
Rjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5oICovLAotCQkJCUQwRUFD
Rjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5pZGwgKi8sCi0JCQkJRDAw
NDg3RkQyMjc3QUY4MTAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvcitHUFUuaWRsICovLAotCQkJ
CUQwQ0FBRDUzMjI3N0MyQTYwMDgwMUNERiAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwICovLAot
CQkJCUQwMDQ4N0ZFMjI3N0FGODIwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuaCAqLywK
LQkJCSk7Ci0JCQlwYXRoID0gd2ViZ3B1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKLQkJRDA4N0NFMzcyMUFDQTk0MjAwQkRFMTc0IC8qIGNvY29hICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlEMDY1QkU1ODIyRkI2MTZEMDA3NkRENjAg
LyogR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gKi8sCi0JCQkJRDAyMzJCNTgyMUNCNDlC
NzAwOTQ4M0I5IC8qIEdQVUJpbmRHcm91cExheW91dE1ldGFsLm1tICovLAotCQkJCUQwODVFNjRB
MjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5kR3JvdXBNZXRhbC5tbSAqLywKLQkJCQlEMEQ4NjQ5
MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BVQnVmZmVyTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFMzgy
MUFDQTk0MjAwQkRFMTc0IC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg5
MDM0MDIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8s
Ci0JCQkJRDA4OTAzM0IyMjQxNzlCNTAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZU1ldGFs
Lm1tICovLAotCQkJCUQwODdDRTNDMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVEZXZpY2VNZXRhbC5t
bSAqLywKLQkJCQkxQzg2Q0E0RTIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuY3BwICovLAotCQkJCTFDODZDQTRGMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oICovLAotCQkJCUEzOEE4N0EzMjUzOEJFRTcwMDM3
QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLywKLQkJCQlEMDg3Q0UzQjIxQUNBOTQy
MDBCREUxNzQgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJCQlE
MDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVldWVNZXRhbC5tbSAqLywKLQkJCQlEMDg3
Q0UzQTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAqLywK
LQkJCQlEMDg3Q0UzRDIxQUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bSAqLywKLQkJCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUgLyogR1BVU2FtcGxlck1ldGFsLm1t
ICovLAotCQkJCUQwODdDRTQwMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRh
bC5tbSAqLywKLQkJCQlEMDg3Q0UzRTIxQUNBOTQyMDBCREUxNzQgLyogR1BVU3dhcENoYWluTWV0
YWwubW0gKi8sCi0JCQkJRDA4N0NFM0YyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVNZXRh
bC5tbSAqLywKLQkJCQlEMDZFRjU1MzIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHNNZXRhbC5t
bSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMjg3OCwxOCArMzIwMTYsNiBAQAog
CQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMTUxOEZDMUU3OEMxNUYwMEVDNTE0QSAvKiBHUFVCYXNlZENhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTExMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkx
MjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVRGV2aWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJG
RjkxMzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzEyRkY5MTQyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTUyMUE0QzM2NTAw
RUIxOTlEIC8qIEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNjIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZG
OTE3MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1
bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE5MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQTIxQTRD
MzY1MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkx
QjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEy
RkY5MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2QjAwQUE3ODM0IC8qIEdyYWRpZW50
SW1hZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzYwNjcsNyArMzUxOTMsNiBAQAogCQkJCTBDM0Yx
RjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkY5OTVBMjYxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3QTE3QTc4MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTg0MzZERTIxQjlE
QUFGMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0I3
MUZBQTQ0NjIwMDM3RDFFNiAvKiBXZWJIZWFwQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzYxNDEsOSArMzUyNjYsNiBAQAogCQkJCTJF
QkJDM0Q4MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFOUI1RDhGMUI2NkE5NEUwMDhDNkEyNCAvKiBXaGVlbEV2ZW50RGVsdGFG
aWx0ZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFFRiAv
KiBXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUExOTU2RjI1MjMz
MUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTE5NTZGMjQyMzMxQUQyMTAwNTdFOUQyIC8qIFdITFNMUHJvZ3JhbS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTE5NTZGMjMyMzMxQUNGMjAwNTdFOUQyIC8qIFdITFNMUmVwbGFjZVdpdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzODBGNDc0MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTFEQ0IxMTY0QzM5QTgwMEQ0OUJDMSAvKiBXaWR0aENh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lk
dGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMGI1ZjhlZTIzZTkzYjg0ZjFhYTY3M2U2
OTQ4MmVlMWY2N2M3ZjA0Ni4uYzhkYjY4Nzk5Zjk2MjAwMTRjMmI0NDU3MmRkZDJhNTMyNzM4OTdi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaApAQCAtMTA0LDM0ICsxMDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
R2FtZXBhZCkgXAogICAgIG1hY3JvKEdhbWVwYWRCdXR0b24pIFwKICAgICBtYWNybyhHYW1lcGFk
RXZlbnQpIFwKLSAgICBtYWNybyhHUFUpIFwKLSAgICBtYWNybyhHUFVBZGFwdGVyKSBcCi0gICAg
bWFjcm8oR1BVQmluZEdyb3VwKSBcCi0gICAgbWFjcm8oR1BVQmluZEdyb3VwTGF5b3V0KSBcCi0g
ICAgbWFjcm8oR1BVQnVmZmVyKSBcCi0gICAgbWFjcm8oR1BVQnVmZmVyVXNhZ2UpIFwKLSAgICBt
YWNybyhHUFVDYW52YXNDb250ZXh0KSBcCi0gICAgbWFjcm8oR1BVQ29sb3JXcml0ZSkgXAotICAg
IG1hY3JvKEdQVUNvbW1hbmRCdWZmZXIpIFwKLSAgICBtYWNybyhHUFVDb21tYW5kRW5jb2Rlcikg
XAotICAgIG1hY3JvKEdQVUNvbXB1dGVQYXNzRW5jb2RlcikgXAotICAgIG1hY3JvKEdQVUNvbXB1
dGVQaXBlbGluZSkgXAotICAgIG1hY3JvKEdQVURldmljZSkgXAotICAgIG1hY3JvKEdQVU91dE9m
TWVtb3J5RXJyb3IpIFwKLSAgICBtYWNybyhHUFVQaXBlbGluZUxheW91dCkgXAotICAgIG1hY3Jv
KEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVUXVldWUpIFwKLSAg
ICBtYWNybyhHUFVSZW5kZXJQYXNzRW5jb2RlcikgXAotICAgIG1hY3JvKEdQVVJlbmRlclBpcGVs
aW5lKSBcCi0gICAgbWFjcm8oR1BVU2FtcGxlcikgXAotICAgIG1hY3JvKEdQVVNoYWRlck1vZHVs
ZSkgXAotICAgIG1hY3JvKEdQVVNoYWRlclN0YWdlKSBcCi0gICAgbWFjcm8oR1BVU3dhcENoYWlu
KSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZSkgXAotICAgIG1hY3JvKEdQVVRleHR1cmVVc2FnZSkg
XAotICAgIG1hY3JvKEdQVVRleHR1cmVWaWV3KSBcCi0gICAgbWFjcm8oR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQpIFwKLSAgICBtYWNybyhHUFVWYWxpZGF0aW9uRXJyb3IpIFwKICAgICBtYWNybyhI
aWdobGlnaHRSZWdpc3RlcikgXAogICAgIG1hY3JvKEhpZ2hsaWdodCkgXAogICAgIG1hY3JvKEhU
TUxBdHRhY2htZW50RWxlbWVudCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzgyYjVm
Mjc1YTM4MzdkZTdmNjI4NWM4OWFmODA4MjcyMTRkNTMwOS4uMzM4MWZiZjFjNDk2NDA2N2U2Mzhl
Zjc1ZmQ2OGQ3ZTJjMmYwOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMzYsOSAr
MzM2LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wyKQogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaCIKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVQ2FudmFz
Q29udGV4dC5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02Mzk0LDEwICs2MzkxLDYgQEAgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4
dChjb25zdCBTdHJpbmcmIHR5cGUKICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4o
KmNvbnRleHQpKQogICAgICAgICByZXR1cm4gUmVuZGVyaW5nQ29udGV4dCB7IFJlZlB0cjxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0Pigq
Y29udGV4dCkgfSB9OwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXM8R1BV
Q2FudmFzQ29udGV4dD4oKmNvbnRleHQpKQotICAgICAgICByZXR1cm4gUmVuZGVyaW5nQ29udGV4
dCB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7ICZkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0
PigqY29udGV4dCkgfSB9OwotI2VuZGlmCiAKICAgICByZXR1cm4gUmVuZGVyaW5nQ29udGV4dCB7
IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRD4oKmNvbnRleHQpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
Yzk4ZTIwNWZhZjc0ZTQ4YTZkZGZiOWVmZmVkYmUxODI3ZmVhOWYzOC4uYzRkZjAzN2IzOTQzOWQ5
MTY3Y2E3ZmEzZGMwOGI4YzViZDFlZjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMxOCw5
ICszMTgsNiBAQCB1c2luZyBSZW5kZXJpbmdDb250ZXh0ID0gVmFyaWFudDwKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJHTDIpCiAgICAgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+LAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4sCiAj
ZW5kaWYKICAgICBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiwKICAgICBSZWZQ
dHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXgg
NzU3NDE0MDg3YTZiY2E2MzVhM2ZjYzk1ZWZmZjZlMjRkZTNkZjI1ZS4uNjgwNGIwZjU1NmNlNjQw
MDU0NDQyMWZlZTZhZmM3NDJlY2QxZmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0y
NCw5ICsyNCw2IEBAIHR5cGVkZWYgKAogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wy
KSAmJiBFTkFCTEVfV0VCR0wyCiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBvcgotI2VuZGlm
Ci0jaWYgZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCi0gICAgR1BVQ2Fu
dmFzQ29udGV4dCBvcgogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IG9y
IAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgUmVuZGVyaW5nQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggMTYwMTFhZjZlZjIzMDQ3Njk1MjU4MTE4YzY0OTJiMGJl
YTA5ZGEyYi4uMmJjZDczYzNiODM4MDZiZDFiN2UxMDllNmZjODk2N2IxYmNmOTlhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTkwLDcgKzkwLDYgQEAgT3ZlcmNvbnN0cmFpbmVkRXJy
b3JFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhRW5jcnlwdGVkRXZlbnQgY29u
ZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYUtleU1lc3NhZ2VFdmVudCBjb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUEKIFBvaW50ZXJFdmVudAotR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQg
Y29uZGl0aW9uYWw9V0VCR1BVCiBFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudCBjb25kaXRpb25h
bD1QSUNUVVJFX0lOX1BJQ1RVUkVfQVBJCiBYUklucHV0U291cmNlRXZlbnQgY29uZGl0aW9uYWw9
V0VCWFIKIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9V0VCWFIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGY2MGM4OTI3YTU2YmMzNThk
MTA3YjlkYjhlY2U5YTRjMzcxMjM2YzIuLjFkOGJhNjU0OThjZjY3NzdjMjdiODE4MDgzYzg0ZWM5
YzQzZDI1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAt
NTYsNyArNTYsNiBAQCBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaWRlb1RyYWNr
TGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1hdGlvbgotV2Vi
R1BVRGV2aWNlIGNvbmRpdGlvbmFsPVdFQkdQVQogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRp
dGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDUwMTNjZWRhMDM1N2FjMWFk
MjBlNTU2ZmYyNzc2YTMxM2NjNWVlMzYuLjc0ZjhhMmViZDcwMjU0ZGI5OGM3MmVhY2UzZjA3NmE2
MTMyOTY3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBA
IC04MSwxMCArODEsNiBAQAogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNl
bmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0Lmgi
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJOYXZpZ2F0b3IuaCIKQEAgLTI3MCwxNCArMjY2LDYgQEAgRXhjZXB0aW9uT3I8c3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQoSlNDOjoKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAg
ICBpZiAobV9jb250ZXh0LT5pc1dlYkdQVSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzV2ViR1BV
VHlwZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7
ICZkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0PigqbV9jb250ZXh0KSB9IH07Ci0gICAgICAgIH0K
LSNlbmRpZgotCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0K
QEAgLTMyMywxNSArMzExLDYgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjoKICAgICB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKGlzV2ViR1BVVHlwZShjb250ZXh0SWQp
KSB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZUNvbnRleHRXZWJHUFUoY29udGV4dElk
KTsKLSAgICAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4g
eyBjb250ZXh0IH0gfTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiB9CiAKQEAgLTM0OCwxMSArMzI3
LDYgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gZ2V0Q29udGV4dFdlYkdMKEhU
TUxDYW52YXNFbGVtZW50Ojp0b1dlYkdMVmVyc2lvbih0eXBlKSk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShXRUJHUFUpCi0gICAgaWYgKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlw
ZSkpCi0gICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR1BVKHR5cGUpOwotI2VuZGlmCi0KICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDk1LDQ3ICs0NjksNiBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKFdlYkdMVmVy
c2lvbiB0eXBlLAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKLXsKLSAgICByZXR1cm4gdHlwZSA9PSAiZ3B1IjsKLX0KLQotR1BVQ2FudmFzQ29udGV4
dCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0
eXBlKQotewotICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2Vi
R1BVVHlwZSh0eXBlKSk7Ci0gICAgQVNTRVJUKCFtX2NvbnRleHQpOwotCi0gICAgaWYgKCFkb2N1
bWVudCgpLnNldHRpbmdzKCkud2ViR1BVRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIG1fY29udGV4dCA9IEdQVUNhbnZhc0NvbnRleHQ6OmNyZWF0ZSgqdGhpcyk7Ci0g
ICAgaWYgKG1fY29udGV4dCkgewotICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJlbmRl
ckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZhcy4K
LSAgICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwotICAgIH0KLQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0Kj4obV9jb250ZXh0LmdldCgp
KTsKLX0KLQotR1BVQ2FudmFzQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRX
ZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBlKQotewotICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgSFRN
TENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSk7Ci0KLSAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS53ZWJHUFVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5pc1dlYkdQVSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1cm4gY3Jl
YXRlQ29udGV4dFdlYkdQVSh0eXBlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ2FudmFz
Q29udGV4dCo+KG1fY29udGV4dC5nZXQoKSk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQotCiBib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc0JpdG1hcFJlbmRlcmVyVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgcmV0dXJuIHR5cGUgPT0gImJpdG1hcHJlbmRlcmVyIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBmNjc4ZjBlZGEzZDkyNTQ2
YjY1MTFmY2MwODI5ZDNhZGI4ODYxOTNiLi4wZGQxOTBlMDA0M2NiODEyZjUyYzZjYmQwYjhhYzY1
ZmRhZTg5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC04
OSwxMiArODksNiBAQCBwdWJsaWM6CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogZ2V0
Q29udGV4dFdlYkdMKFdlYkdMVmVyc2lvbiB0eXBlLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiYg
PSB7IH0pOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBib29sIGlz
V2ViR1BVVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBHUFVDYW52YXNDb250ZXh0KiBjcmVhdGVD
b250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGdldENv
bnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBib29sIGlz
Qml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIEltYWdlQml0bWFwUmVuZGVy
aW5nQ29udGV4dCogY3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFN0cmluZyYsIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzJiYpOwogICAgIEltYWdlQml0bWFwUmVu
ZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFN0cmluZyYsIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmlkbAppbmRleCBjNmYxZDBmYzQwZGVlMTU0N2NmZmQ3YzdjY2M0
NWU3YWNiNzJhMDY2Li5hNjc3OWZkYTk5NTdkZWJmMDkyM2M3MjVhZDIzZmViMTBjNjg0M2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbApAQCAtMzAsOSArMzAs
NiBAQCB0eXBlZGVmICgKICNlbmRpZgogI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMMikgJiYgRU5B
QkxFX1dFQkdMMgogICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgb3IKLSNlbmRpZgotI2lmIGRl
ZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVQotICAgIEdQVUNhbnZhc0NvbnRl
eHQgb3IKICNlbmRpZgogICAgIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCBvciAKICAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOTJj
MDNjMTllNGY3MTY0ZThhZDg3YTg5ZWJkNmQ1MDQzZjViNWNiMi4uNzE5YjYzMWUwMjUyNjg3ZDAz
NGM2ZTQxZTFlN2ZjOTI3ZGIxYzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjQsOSArNjQsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wxKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNXZWJHTCgpIGNvbnN0IHsgcmV0dXJuIGlzV2ViR0wxKCkgfHwgaXNXZWJHTDIoKTsgfQot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgdmlydHVhbCBib29sIGlzV2ViR1BVKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBpc0dQVUJhc2VkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwUmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCBjNTg3NGM3MDg3NDE3NzkwMjk0NThmYjkyY2VjYTZkNDZi
ZjZjYTBmLi42MWY3NmMxY2Q1ODhmNjg3MWU2MGIzNWVlYjBiZDVlYWQ1ZWE1ZjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMzcsNyArMzcs
NiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTYyLDcgKzYxLDYgQEAKICNpbmNsdWRlICJKU0ltYWdl
U21vb3RoaW5nUXVhbGl0eS5oIgogI2luY2x1ZGUgIkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSlNXZWJH
UFVEZXZpY2UuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNpbmNsdWRlICJQYXRo
MkQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCkBAIC04NSw3ICs4Myw2IEBACiAjaW5jbHVkZSAi
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkdQ
VURldmljZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CkBAIC0xMDEsNTMgKzk4LDE2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotI2lmIEVOQUJM
RShXRUJHUFUpCi1zdGF0aWMgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhc0lmQ29udGV4dE1hdGNo
ZXNEZXZpY2UoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCwgV2ViR1BVRGV2aWNlJiBk
ZXZpY2UpCi17Ci0gICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKSB7Ci0gICAg
ICAgIGF1dG8mIGNvbnRleHRHUFUgPSBkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0
KTsKLSAgICAgICAgaWYgKGF1dG8qIHdlYkdQVVN3YXBDaGFpbiA9IGNvbnRleHRHUFUuc3dhcENo
YWluKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBncHVTd2FwQ2hhaW4gPSB3ZWJHUFVTd2Fw
Q2hhaW4tPnN3YXBDaGFpbigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdwdVN3YXBDaGFpbiA9
PSBkZXZpY2UuZGV2aWNlKCkuc3dhcENoYWluKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzPEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0R1BVLmNhbnZhc0Jhc2UoKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihjb250
ZXh0R1BVLmNhbnZhc0Jhc2UoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotI2VuZGlmCi0KIFJlZjxJ
bnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQ2Fu
dmFzKGNvbnRleHQpKTsKIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi1SZWY8SW5zcGVjdG9yQ2Fu
dmFzPiBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoZGV2aWNlKSk7Ci19Ci0jZW5k
aWYKLQogSW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCYgY29udGV4dCkKICAgICA6IG1faWRlbnRpZmllcigiY2FudmFzOiIgKyBJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQog
ewotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgLy8gVGhlIGFjdHVhbCAiY29udGV4dCIgZm9yIFdl
YkdQVSBpcyB0aGUgYFdlYkdQVURldmljZWAsIG5vdCB0aGUgPGNhbnZhcz4uCi0gICAgQVNTRVJU
KCFpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSk7Ci0jZW5kaWYKLX0KLQotI2lmIEVOQUJM
RShXRUJHUFUpCi1JbnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhXZWJHUFVEZXZpY2Um
IGRldmljZSkKLSAgICA6IG1faWRlbnRpZmllcigiY2FudmFzOiIgKyBJZGVudGlmaWVyc0ZhY3Rv
cnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fY29udGV4dChkZXZpY2UpCi17CiB9Ci0j
ZW5kaWYKIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXND
b250ZXh0KCkgY29uc3QKIHsKQEAgLTE2NSwxOSArMTI1LDYgQEAgSFRNTENhbnZhc0VsZW1lbnQq
IEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgICAgICAgICAg
cmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4dC5jYW52YXNCYXNlKCkp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4g
ZGV2aWNlV3JhcHBlcikgLT4gSFRNTENhbnZhc0VsZW1lbnQqIHsKLSAgICAgICAgICAgIGF1dG8m
IGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xv
Y2soKSB9OwotICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4
dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0Rl
dmljZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYW52YXNFbGVtZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LAotI2VuZGlmCiAg
ICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODYsMjIgKzEzMyw2IEBAIEhUTUxD
YW52YXNFbGVtZW50KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQoKSBjb25zdAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVdlYkdQVURldmljZSog
SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250ZXh0KCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byog
ZGV2aWNlV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BV
RGV2aWNlPj4obV9jb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZkZXZpY2VXcmFwcGVyLT5nZXQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotYm9vbCBJbnNwZWN0b3JDYW52YXM6OmlzRGV2
aWNlRm9yQ2FudmFzQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KSBjb25z
dAotewotICAgIGlmIChhdXRvKiBkZXZpY2UgPSBkZXZpY2VDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKGNvbnRleHQsICpkZXZpY2UpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJbnNw
ZWN0b3JDYW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKQEAgLTIwOSwxMiArMTQwLDYgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5nZXQoKTsK
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgW10gKHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAg
cmV0dXJuIGRldmljZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIH0sCi0jZW5k
aWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NSwxMSArMTcwLDYgQEAg
SlNDOjpKU1ZhbHVlIEluc3BlY3RvckNhbnZhczo6cmVzb2x2ZUNvbnRleHQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYykgY29uc3QKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZSgpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZGV2aWNlV3JhcHBlci5nZXQo
KSk7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1Zh
bHVlKCk7CkBAIC0yNjQsMjEgKzE4NCw2IEBAIEhhc2hTZXQ8RWxlbWVudCo+IEluc3BlY3RvckNh
bnZhczo6Y2xpZW50Tm9kZXMoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgY29udGV4dCA9IGNv
bnRleHRXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY2FudmFzQmFz
ZSgpLmNzc0NhbnZhc0NsaWVudHMoKTsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VX
cmFwcGVyKSB7Ci0gICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgp
OwotCi0gICAgICAgICAgICBIYXNoU2V0PEVsZW1lbnQqPiBjYW52YXNFbGVtZW50Q2xpZW50czsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgICAgICAgICAgZm9yIChh
dXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5z
dGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQg
PSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBk
ZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzRWxlbWVudENsaWVudHMuYWRk
KGNhbnZhc0VsZW1lbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBjYW52YXNFbGVtZW50Q2xpZW50czsKLSAgICAgICAgfSwKLSNlbmRpZgog
ICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PEVsZW1lbnQqPigpOwpAQCAtMzE3LDcgKzIy
Miw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZXNldFJlY29yZGluZ0RhdGEoKQogCiAgICAg
YXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6
IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAg
ICBjb250ZXh0LT5zZXRIYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGZhbHNlKTsK
IH0KQEAgLTg0NCw3ICs3NDgsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVjb3JkQWN0aW9u
KFN0cmluZyYmIG5hbWUsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBybwogCiAgICAgYXV0
byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAg
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENh
bnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICBp
ZiAoaXM8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KSAmJiBzaG91bGRTbmFw
c2hvdEJpdG1hcFJlbmRlcmVyQWN0aW9uKG5hbWUpKQogICAgICAgICBtX2NvbnRlbnRDaGFuZ2Vk
ID0gdHJ1ZTsKQEAgLTkyOCwxMSArODMxLDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZh
cz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNl
bmRpZgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfSwKLSNpZiBF
TkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVE
ZXZpY2U+KSB7Ci0gICAgICAgICAgICByZXR1cm4gUHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5
cGU6OldlYkdQVTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC05OTYsMjggKzg5NCw2IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpD
YW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJl
CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAotI2lmIEVO
QUJMRShXRUJHUFUpCi0gICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURl
dmljZT4gZGV2aWNlV3JhcHBlcikgLT4gQ29udGV4dEF0dHJpYnV0ZXNUeXBlIHsKLSAgICAgICAg
ICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
Y29uc3QgYXV0byYgb3B0aW9ucyA9IGRldmljZS5hZGFwdGVyKCkub3B0aW9ucygpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBjb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBQcm90b2NvbDo6Q2Fu
dmFzOjpDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAgICAgLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcG93ZXJQcmVmZXJlbmNl
ID0gb3B0aW9ucy0+cG93ZXJQcmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAocG93ZXJQcmVmZXJlbmNlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBH
UFVQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOgotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImxvdy1wb3dlciIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBHUFVQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0UG93ZXJQcmVmZXJlbmNlKCJoaWdo
LXBlcmZvcm1hbmNlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShjb250ZXh0QXR0cmlidXRlc1BheWxvYWQpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1v
bm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwNDksNyArOTI1LDYgQEAgUmVmPFByb3RvY29sOjpSZWNv
cmRpbmc6OlJlY29yZGluZz4gSW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlT2JqZWN0Rm9yUmVjb3Jk
aW5nKCkKIAogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJU
KGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBX
ZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQ
VURldmljZQogCiAgICAgUHJvdG9jb2w6OlJlY29yZGluZzo6VHlwZSB0eXBlOwogICAgIGlmIChp
czxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpKQpAQCAtMTI4MSw3ICsxMTU2LDYg
QEAgUmVmPFByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFz
OjpidWlsZEluaXRpYWxTdGF0ZSgpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRl
eHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVj
b3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICBhdXRvIGluaXRpYWxTdGF0ZVBheWxvYWQg
PSBQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU6OmNyZWF0ZSgpLnJlbGVhc2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDhhNDdk
ZWMyNWFkNmM4ODMxM2M3ZDRhZDZmMjUwOTYxYzAwNjJlZmYuLjZhOTllY2ZmNDdiNTgwZWM0YzY5
NjEwMTBmZDY1MDFmZGEzNTM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmgKQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNp
bmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhbnZhc0dyYWRpZW50OwpAQCAtNjAsMjAgKzU2LDEyIEBAIGNsYXNzIFR5cGVkT01D
U1NJbWFnZVZhbHVlOwogY2xhc3MgSW5zcGVjdG9yQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8SW5zcGVjdG9yQ2FudmFzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0
b3JDYW52YXM+IGNyZWF0ZShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZhcz4gY3JlYXRlKFdlYkdQVURldmlj
ZSYpOwotI2VuZGlmCiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNhbnZh
c0NvbnRleHQoKSBjb25zdDsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzRWxlbWVudCgp
IGNvbnN0OwogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBXZWJHUFVEZXZpY2UqIGRldmljZUNv
bnRleHQoKSBjb25zdDsKLSAgICBib29sIGlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChDYW52YXNS
ZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7Ci0jZW5kaWYKLQogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIEpTQzo6SlNWYWx1
ZSByZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CkBAIC0xMTUsOSAr
MTAzLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckNhbnZhcyhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Jik7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBJbnNwZWN0b3JDYW52
YXMoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYKIAogICAgIHZvaWQgYXBwZW5kQWN0aW9uU25hcHNo
b3RJZk5lZWRlZCgpOwogCkBAIC0xNTUsOSArMTQwLDYgQEAgcHJpdmF0ZToKIAogICAgIFZhcmlh
bnQ8CiAgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dD4sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxX
ZWJHUFVEZXZpY2U+LAotI2VuZGlmCiAgICAgICAgIE1vbm9zdGF0ZQogICAgID4gbV9jb250ZXh0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGMxMjE1MjMwNzFhMDI2ODg4Y2JkNjA4MDMxYWQxNWRjODVhZjE3
MTkuLmZlMjA2YWVhMzVlNjc5MzNlMjAxOWZjNWFmMWU5M2FmZGEwZTM4MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVk
ZSAiV2ViRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFt
ZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtODAsMTAgKzc5LDYgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFp
bi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKQEAgLTExMjIsNDMgKzExMTcsNiBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cwog
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGF1dG8q
IGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkK
LSAgICAgICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVURldmljZShkZXZpY2UpOwotfQot
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmlj
ZSYgZGV2aWNlKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT53aWxsRGVz
dHJveVdlYkdQVURldmljZShkZXZpY2UpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgR1BVQ2FudmFzQ29udGV4dCYgY29udGV4dEdQVSwgV2ViR1BVU3dh
cENoYWluJiBuZXdTd2FwQ2hhaW4pCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdl
bnQtPndpbGxDb25maWd1cmVTd2FwQ2hhaW4oY29udGV4dEdQVSwgbmV3U3dhcENoYWluKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZp
Y2UmIGRldmljZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmIChhdXRvKiBj
YW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0g
ICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVhdGVXZWJHUFVQaXBlbGluZShkZXZpY2UsIHBpcGVs
aW5lKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2Vi
R1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52
YXNBZ2VudC0+d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShwaXBlbGluZSk7Ci19Ci0KLUluc3Ry
dW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0Fn
ZW50cyhXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0Fn
ZW50cyhkZXZpY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLX0KLSNlbmRpZgotCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIHRhcmdldCwg
S2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1p
bmcpCiB7CiAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggN2Q1ZTdkNTdiZjkxMWZkZGY5
MGVkNDAwYTIyNWFmYTA4M2U2Yzg3MS4uMzFmMDVjNTBmODA1ZGI1NzliOGM5MzBiYzkwYjlmNjFh
OTJmYWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtNTksMTEgKzU5LDYgQEAKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVk
ZSAiR1BVQ2FudmFzQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBDb25zb2xlTWVzc2FnZTsKIGNsYXNz
IFNjcmlwdEFyZ3VtZW50czsKQEAgLTEwNCwxMSArOTksNiBAQCBjbGFzcyBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZTsKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLWNsYXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNl
bmRpZgotCiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIAogc3RydWN0IENvbXB1
dGVkRWZmZWN0VGltaW5nOwpAQCAtMzAzLDEzICsyOTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgaXNXZWJHTFByb2dyYW1EaXNhYmxlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwg
V2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQVURldmljZShX
ZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmljZShX
ZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQ
VUNhbnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGluZSYpOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmKTsK
LSNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVu
dCYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOwogICAgIHN0YXRpYyB2
b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CkBAIC01MTMsMTQg
KzQ5Niw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1EaXNhYmxl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogICAgIHN0YXRpYyBi
b29sIGlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBX
ZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGljIHZv
aWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BV
RGV2aWNlJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVEZXZpY2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
Q29uZmlndXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgR1BVQ2FudmFzQ29u
dGV4dCYsIFdlYkdQVVN3YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BVRGV2aWNlJiwgV2ViR1BV
UGlwZWxpbmUmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BVUGlwZWxpbmUmKTsKLSAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhXZWJHUFVEZXZpY2UmKTsKLSNl
bmRpZgogCiAgICAgc3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVj
dFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkFuaW1hdGlvbiYpOwpAQCAtMTQ3NSw0MyArMTQ1MCw2
IEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dyYW1I
aWdobGlnaHRlZChXZWJHTFJlbmRlcmluZ0NvCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJH
UFUpCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQ
VURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cyhkZXZpY2UpKQotICAgICAgICBkaWRDcmVhdGVXZWJHUFVEZXZpY2VJbXBsKCphZ2VudHMs
IGRldmljZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZGV2aWNlKSkKLSAgICAgICAgd2lsbERlc3Ryb3lXZWJHUFVEZXZp
Y2VJbXBsKCphZ2VudHMsIGRldmljZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0JiBjb250
ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhjb250ZXh0R1BVLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpKQotICAgICAgICB3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCgqYWdlbnRzLCBjb250
ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBX
ZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMo
ZGV2aWNlKSkKLSAgICAgICAgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKCphZ2VudHMsIGRl
dmljZSwgcGlwZWxpbmUpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQot
ewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRv
KiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKHBpcGVsaW5lLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKCphZ2VudHMs
IHBpcGVsaW5lKTsKLX0KLSNlbmRpZgotCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVF
ZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggNTRlZDg0
MGJlMDE4MjdkMTcyYTRmOGY5YjMxYjk0NDA2NjVhNzc3MC4uYTMwZTIxNjQzYTE1N2E4MmM1ZGQ3
ZTViNGQ4NTg0MGI3NGZhNTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNoYWRlclByb2dyYW0uaCIKIAotI2lmIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JDYW52YXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KQEAgLTQyLDE1ICs0Miw2IEBACiAjaW5jbHVkZSAiV2ViR0xTaGFkZXIu
aCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1
bGUuaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRl
UGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQ
VVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpA
QCAtNjIsMTMgKzUzLDYgQEAgUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvclNo
YWRlclByb2dyYW06OmNyZWF0ZShXZWJHTFByb2dyYW0mIHByb2dyYW0KIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JT
aGFkZXJQcm9ncmFtOjpjcmVhdGUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0b3JD
YW52YXMmIGluc3BlY3RvckNhbnZhcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtKHBpcGVsaW5lLCBpbnNwZWN0b3JDYW52YXMpKTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKFdFQkdMKQogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3RvckNhbnZhcyYgaW5z
cGVjdG9yQ2FudmFzKQogICAgIDogbV9pZGVudGlmaWVyKCJwcm9ncmFtOiIgKyBJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKQEAgLTc5LDE2ICs2Myw2IEBAIEluc3BlY3Rv
clNoYWRlclByb2dyYW06Okluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiBwcm9n
cmFtLCBJbnNwZWN0b3JDCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1JbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdQVVBpcGVsaW5lJiBw
aXBlbGluZSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCi0gICAgOiBtX2lkZW50
aWZpZXIoInBpcGVsaW5lOiIgKyBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIo
KSkKLSAgICAsIG1fY2FudmFzKGluc3BlY3RvckNhbnZhcykKLSAgICAsIG1fcHJvZ3JhbShwaXBl
bGluZSkKLXsKLSAgICBBU1NFUlQobV9jYW52YXMuZGV2aWNlQ29udGV4dCgpKTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKFdFQkdMKQogV2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtOjpwcm9ncmFtKCkgY29uc3QKIHsKQEAgLTk4LDE1ICs3Miw2IEBAIFdlYkdMUHJvZ3JhbSog
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cHJvZ3JhbSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShXRUJHUFUpCi1XZWJHUFVQaXBlbGluZSogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6
cGlwZWxpbmUoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBwaXBlbGluZVdyYXBwZXIgPSBXVEY6
OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPj4obV9wcm9ncmFt
KSkKLSAgICAgICAgcmV0dXJuICZwaXBlbGluZVdyYXBwZXItPmdldCgpOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBzdGF0aWMgV2ViR0xTaGFk
ZXIqIHNoYWRlckZvclR5cGUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSkKIHsKQEAgLTEyNywzMSArOTIsNiBA
QCBzdGF0aWMgV2ViR0xTaGFkZXIqIHNoYWRlckZvclR5cGUoV2ViR0xQcm9ncmFtJiBwcm9ncmFt
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotc3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IHNoYWRlckZvclR5cGUoV2ViR1BV
UGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSkKLXsKLSAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZTo6Q29tcHV0ZToKLSAgICAgICAg
aWYgKGlzPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUpLmNvbXB1dGVTaGFk
ZXIoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIGlmIChpczxXZWJH
UFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkuZnJhZ21lbnRTaGFkZXIoKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZh
czo6U2hhZGVyVHlwZTo6VmVydGV4OgotICAgICAgICBpZiAoaXM8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxXZWJHUFVSZW5kZXJQ
aXBlbGluZT4ocGlwZWxpbmUpLnZlcnRleFNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLSNlbmRpZgotCiBTdHJpbmcgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNo
YWRlclNvdXJjZShJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Byb2dyYW0sCkBAIC0xNjIsMTcg
KzEwMiw5IEBAIFN0cmluZyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291
cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHNoYWRlci0+Z2V0U291cmNlKCk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAgICAg
ICAgICAgYXV0byYgcGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBzaGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJUeXBlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVyLT5zb3VyY2UoKTsKLSAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICAgICAgfSwKICNlbmRpZgogICAgICAgICBbJl0gKE1vbm9zdGF0
ZSkgewotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjAxLDI0ICsxMzMsOSBAQCBib29sIEluc3BlY3RvclNo
YWRlclByb2dyYW06OnVwZGF0ZVNoYWRlcihJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNo
YWRlclR5cAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiBwaXBlbGluZVdyYXBwZXIpIHsKLSAgICAgICAg
ICAgIGF1dG8mIHBpcGVsaW5lID0gcGlwZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAg
aWYgKGF1dG8qIGRldmljZSA9IG1fY2FudmFzLmRldmljZUNvbnRleHQoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChwaXBlbGluZS5jbG9uZVNoYWRlck1vZHVsZXMoKmRldmljZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhZGVyID0gc2hhZGVyRm9yVHlwZShwaXBlbGluZSwg
c2hhZGVyVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlci0+dXBkYXRlKCpk
ZXZpY2UsIHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGlwZWxpbmUucmVj
b21waWxlKCpkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAogI2VuZGlmCiAgICAgICAg
IFsmXSAoTW9ub3N0YXRlKSB7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQor
I2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgsMzEgKzE0NSwxNSBAQCBib29s
IEluc3BlY3RvclNoYWRlclByb2dyYW06OnVwZGF0ZVNoYWRlcihJbnNwZWN0b3I6OlByb3RvY29s
OjpDYW52YXM6OlNoYWRlclR5cAogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpT
aGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iamVjdEZvclNoYWRl
clByb2dyYW0oKQogewotICAgIGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSBmYWxz
ZTsKLQogICAgIHVzaW5nIFByb2dyYW1UeXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZT47CiAgICAgYXV0byBwcm9ncmFtVHlwZSA9
IFdURjo6c3dpdGNoT24obV9wcm9ncmFtLAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgWyZd
IChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4pIC0+IFByb2dyYW1UeXBlVHlw
ZSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9n
cmFtVHlwZTo6UmVuZGVyOwogICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiBwaXBl
bGluZVdyYXBwZXIpIC0+IFByb2dyYW1UeXBlVHlwZSB7Ci0gICAgICAgICAgICBhdXRvJiBwaXBl
bGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChpczxXZWJHUFVD
b21wdXRlUGlwZWxpbmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6Q29tcHV0ZTsKLSAgICAgICAgICAg
IGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgcmVuZGVyUGlwZWxpbmUgPSBkb3duY2FzdDxXZWJHUFVSZW5kZXJQaXBlbGluZT4o
cGlwZWxpbmUpOwotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQaXBlbGluZS52ZXJ0ZXhTaGFk
ZXIoKSA9PSByZW5kZXJQaXBlbGluZS5mcmFnbWVudFNoYWRlcigpKQotICAgICAgICAgICAgICAg
ICAgICBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OlJlbmRlcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25vc3RhdGUpIC0+IFByb2dyYW1UeXBlVHlwZSB7
Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjY4LDExICsxNjksOSBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q2FudmFzOjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpi
dWlsZE9iagogICAgICAgICAuc2V0UHJvZ3JhbVR5cGUocHJvZ3JhbVR5cGUudmFsdWUoKSkKICAg
ICAgICAgLnNldENhbnZhc0lkKG1fY2FudmFzLmlkZW50aWZpZXIoKSkKICAgICAgICAgLnJlbGVh
c2UoKTsKLSAgICBpZiAoc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHBheWxv
YWQtPnNldFNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyKHRydWUpOwogICAgIHJldHVybiBwYXls
b2FkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgKaW5kZXggY2Nj
NzNjZWYzNzQ2NzA2NzBkNTk2YTkzYjMyZmUwOWE1NWQ0MzViYi4uYzkyZGViYjc3Y2M0NTE4YzQx
NWJkM2FmYjMwM2IyZjM3MTRjMjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShX
RUJHTCkKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0
cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSwxOCArNDEsMTEgQEAgY2xhc3Mg
V2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLWNsYXNzIFdlYkdQVVBpcGVsaW5lOwotI2VuZGlmCi0KIGNs
YXNzIEluc3BlY3RvclNoYWRlclByb2dyYW0gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtPiB7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHN0
YXRpYyBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUHJvZ3JhbSYsIElu
c3BlY3RvckNhbnZhcyYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMg
UmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGNyZWF0ZShXZWJHUFVQaXBlbGluZSYsIEluc3Bl
Y3RvckNhbnZhcyYpOwotI2VuZGlmCiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBJbnNwZWN0b3JDYW52YXMmIGNhbnZh
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzOyB9CkBAIC02MCw5ICs1Myw2IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3Q7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFdlYkdQVVBpcGVsaW5lKiBwaXBlbGluZSgp
IGNvbnN0OwotI2VuZGlmCiAKICAgICBTdHJpbmcgcmVxdWVzdFNoYWRlclNvdXJjZShJbnNwZWN0
b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIGJvb2wgdXBkYXRlU2hhZGVy
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpOwpAQCAtNzksOSArNjksNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdMUHJvZ3JhbSYsIEluc3BlY3RvckNhbnZhcyYp
OwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBJbnNwZWN0b3JTaGFkZXJQcm9ncmFt
KFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2FudmFzJik7Ci0jZW5kaWYKIAogICAgIFN0cmlu
ZyBtX2lkZW50aWZpZXI7CiAgICAgSW5zcGVjdG9yQ2FudmFzJiBtX2NhbnZhczsKQEAgLTg5LDkg
Kzc2LDYgQEAgcHJpdmF0ZToKICAgICBWYXJpYW50PAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHTFByb2dyYW0+LAotI2VuZGlmCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGlu
ZT4sCiAjZW5kaWYKICAgICAgICAgV1RGOjpNb25vc3RhdGUKICAgICA+IG1fcHJvZ3JhbTsKQEAg
LTEwMiw0ICs4Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IGE0MDJjM2I5ODQwMzBjZjBmOGRkNjViNmUxM2I5
MDhmYmZiZjk2YTMuLjU5ZjRkMzliNWE3MTllM2UxN2U1NzM4ZjJjNjdlZmMzOGVhZTQzMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiR1BV
Q2FudmFzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAg
LTY4LDExICs2Nyw2IEBACiAjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgogI2lu
Y2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUg
IldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAi
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJzRmFjdG9yeS5oPgpAQCAtMTAwLDkgKzk0LDkgQEAgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
Okluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKICAg
ICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2NhbnZh
c0Rlc3Ryb3llZFRpbWVyKCp0aGlzLCAmSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0Rlc3Ry
b3llZFRpbWVyRmlyZWQpCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lm
IEVOQUJMRShXRUJHTCkKICAgICAsIG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyKCp0aGlzLCAmSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZpcmVkKQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CiB7CiB9CiAKQEAgLTE0MSwyNyArMTM1LDEyIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoKQogICAgIHsKICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OwogICAg
ICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5j
ZXMoKSkgewotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgICAgICAvLyBUaGUgYWN0dWFsICJj
b250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFz
Pi4KLSAgICAgICAgICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQogCiAgICAgICAg
ICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShjb250ZXh0LT5jYW52YXNCYXNlKCkuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSkKICAgICAgICAgICAgICAgICBiaW5kQ2FudmFzKCpjb250ZXh0
LCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVURldmljZTo6aW5zdGFuY2VzTG9jaygpIH07
Ci0gICAgICAgIGZvciAoYXV0byogZGV2aWNlIDogV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKSkg
ewotICAgICAgICAgICAgaWYgKGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNlLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKQotICAgICAgICAgICAgICAgIGJpbmRDYW52YXMoKmRldmljZSwgZmFs
c2UpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KICNpZiBF
TkFCTEUoV0VCR0wpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR0xQcm9ncmFt
OjppbnN0YW5jZXNMb2NrKCkgfTsKQEAgLTE3MiwxNiArMTUxLDYgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKSB9OwotICAg
ICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0
YW5jZXMoKSkgewotICAgICAgICAgICAgaWYgKGRldmljZSAmJiBleGlzdHNJbkN1cnJlbnRQYWdl
KGRldmljZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAmJiBwaXBlbGluZS0+aXNWYWxpZCgp
KQotICAgICAgICAgICAgICAgIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCpkZXZpY2UsICpwaXBl
bGluZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogICAg
IHJldHVybiB7IH07CiB9CiAKQEAgLTI5Nyw3ICsyNjYsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoY29uc3QgUHJv
dG9jbwogCiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4
dCgpOwogCi0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJ
bnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2
aWNlCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5v
dCBzdXBwb3J0ZWQiX3MpOwogCkBAIC0zMjQsNyArMjkyLDYgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJv
dG9jb2wKIAogICAgIGF1dG8qIGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0NvbnRl
eHQoKTsKIAotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIg
SW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURl
dmljZQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJO
b3Qgc3VwcG9ydGVkIl9zKTsKIApAQCAtMzM2LDcgKzMwMyw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKGNvbnN0IFBy
b3RvY29sCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJp
bmc+IEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IFByb3Rv
Y29sOjpDYW52YXM6OlByb2dyYW1JZCYgcHJvZ3JhbUlkLCBQcm90b2NvbDo6Q2FudmFzOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3Ry
aW5nOwpAQCAtMzY2LDcgKzMzMyw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvckNhbnZhc0FnZW50Ojp1cGRhdGVTaGFkZXIoY29uc3QgUHJvdG9jb2w6CiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkKIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQoY29u
c3QgUHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiBwcm9ncmFtSWQsIGJvb2wgZGlzYWJsZWQp
CiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwpAQCAtMzkzLDcgKzM1
OSw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50
OjpzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoCiAgICAgcmV0dXJuIHsgfTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VC
R1BVKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFtZSYg
ZnJhbWUpCiB7CkBAIC00NTAsMTcgKzQxNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENoYW5nZUNhbnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0CiB7
CiAgICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzOwogCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBpdGVtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFs
dWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0RldmljZUZvckNhbnZhc0NvbnRleHQo
Y29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBpdGVtOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2Vu
ZGlmCi0KICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKICAgICAgICAgaW5zcGVjdG9yQ2FudmFz
ID0gZmluZEluc3BlY3RvckNhbnZhcyhjb250ZXh0KTsKIApAQCAtNjE3LDY5ICs1NzEsNiBAQCBi
b29sIEluc3BlY3RvckNhbnZhc0FnZW50Ojppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSkKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlV2ViR1BVRGV2
aWNlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChmaW5kSW5zcGVjdG9yQ2FudmFz
KGRldmljZSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBiaW5kQ2FudmFzKGRldmljZSwgdHJ1ZSk7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYg
ZGV2aWNlKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZh
cyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAgIGlmICghaW5zcGVj
dG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bmJpbmRDYW52YXMoKmluc3BlY3Rv
ckNhbnZhcyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1cmVT
d2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYgY29udGV4dEdQVSwgV2ViR1BVU3dhcENoYWluJiBu
ZXdTd2FwQ2hhaW4pCi17Ci0gICAgYXV0byBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4gPSBbJl0g
KFdlYkdQVVN3YXBDaGFpbiYgd2ViR1BVU3dhcENoYWluKSB7Ci0gICAgICAgIGZvciAoYXV0byYg
aW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFsdWVzKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkZXZpY2UgPSBpbnNwZWN0b3JDYW52YXMtPmRldmlj
ZUNvbnRleHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChkZXZpY2UtPmRldmljZSgpLnN3YXBD
aGFpbigpID09IHdlYkdQVVN3YXBDaGFpbi5zd2FwQ2hhaW4oKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNsaWVudE5vZGVzQ2hhbmdlZChpbnNwZWN0b3JDYW52
YXMtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0g
ICAgaWYgKGF1dG8qIGV4aXN0aW5nU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4oKSkK
LSAgICAgICAgbm90aWZ5RGV2aWNlRm9yU3dhcENoYWluKCpleGlzdGluZ1N3YXBDaGFpbik7Ci0K
LSAgICBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4obmV3U3dhcENoYWluKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNl
JiBkZXZpY2UsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNlKTsKLSAgICBBU1NFUlQoaW5zcGVj
dG9yQ2FudmFzKTsKLSAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQVNTRVJUKHBpcGVsaW5lLmlzVmFsaWQoKSk7Ci0KLSAgICBhdXRvIGluc3BlY3RvclBy
b2dyYW1SZWYgPSBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpjcmVhdGUocGlwZWxpbmUsICppbnNw
ZWN0b3JDYW52YXMpOwotICAgIGF1dG8mIGluc3BlY3RvclByb2dyYW0gPSBpbnNwZWN0b3JQcm9n
cmFtUmVmLmdldCgpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS5zZXQoaW5z
cGVjdG9yUHJvZ3JhbS5pZGVudGlmaWVyKCksIFdURk1vdmUoaW5zcGVjdG9yUHJvZ3JhbVJlZikp
OwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wcm9ncmFtQ3JlYXRlZChpbnNwZWN0b3JQcm9n
cmFtLmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSgpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYgcGlw
ZWxpbmUpCi17Ci0gICAgYXV0byBpbnNwZWN0b3JQcm9ncmFtID0gZmluZEluc3BlY3RvclByb2dy
YW0ocGlwZWxpbmUpOwotICAgIGlmICghaW5zcGVjdG9yUHJvZ3JhbSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdW5iaW5kUHJvZ3JhbSgqaW5zcGVjdG9yUHJvZ3JhbSk7Ci19Ci0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKLQogI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04oQXJn
dW1lbnRUeXBlKSBcCiBzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlw
ZSBhcmd1bWVudCkgXAogeyBcCkBAIC03MTUsNyArNjA2LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRl
cmluZ0MKIAogICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0
ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZh
czogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmhhc0FjdGl2ZUluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0FnZW50
LmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsK
QEAgLTczOCw3ICs2MjgsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29y
ZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJvdAogewogICAgIGF1dG8q
IGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMuY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChj
b250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2Vi
IEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVE
ZXZpY2UKIAogICAgIGlmICghaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihjb250ZXh0KQog
ICAgICAgICAmJiAhaXM8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KQpAQCAt
Nzc3LDcgKzY2Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0Rlc3Ryb3ll
ZFRpbWVyRmlyZWQoKQogICAgIG1fcmVtb3ZlZENhbnZhc0lkZW50aWZpZXJzLmNsZWFyKCk7CiB9
CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdM
KQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ryb3llZFRpbWVyRmlyZWQo
KQogewogICAgIGlmICghbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLnNpemUoKSkKQEAgLTc4
OCw3ICs2NzcsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJveWVk
VGltZXJGaXJlZCgpCiAKICAgICBtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuY2xlYXIoKTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNldCgpCiB7CkBA
IC04MDIsMTIgKzY5MSwxMiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNldCgpCiAg
ICAgaWYgKG1fY2FudmFzRGVzdHJveWVkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jYW52
YXNEZXN0cm95ZWRUaW1lci5zdG9wKCk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJv
Z3JhbS5jbGVhcigpOwogICAgIG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwog
ICAgIGlmIChtX3Byb2dyYW1EZXN0cm95ZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3By
b2dyYW1EZXN0cm95ZWRUaW1lci5zdG9wKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBF
TkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAogICAgIG1fcmVjb3JkaW5n
Q2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KQEAgLTgzNiwxOCArNzI1LDYgQEAgSW5zcGVj
dG9yQ2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiBjb250ZXgKICAgICByZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwogfQogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvckNhbnZhcyYgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmJp
bmRDYW52YXMoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIGJvb2wgY2FwdHVyZUJhY2t0cmFjZSkKLXsK
LSAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGRldmlj
ZSk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3BlY3RvckNhbnZh
cy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKLQotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5jYW52YXNBZGRlZChpbnNwZWN0b3JDYW52YXMtPmJ1aWxkT2JqZWN0
Rm9yQ2FudmFzKGNhcHR1cmVCYWNrdHJhY2UpKTsKLQotICAgIHJldHVybiBpbnNwZWN0b3JDYW52
YXM7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6dW5iaW5kQ2FudmFzKEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzKQogewog
I2lmIEVOQUJMRShXRUJHTCkKQEAgLTg5NSwxOCArNzcyLDcgQEAgUmVmUHRyPEluc3BlY3RvckNh
bnZhcz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVu
ZGVyaW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi1SZWZQ
dHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvckNh
bnZhcyhXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBmb3IgKGF1dG8mIGluc3BlY3RvckNh
bnZhcyA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnZhbHVlcygpKSB7Ci0gICAgICAg
IGlmIChpbnNwZWN0b3JDYW52YXMtPmRldmljZUNvbnRleHQoKSA9PSAmZGV2aWNlKQotICAgICAg
ICAgICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5B
QkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
Ojp1bmJpbmRQcm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mIGluc3BlY3RvclByb2dyYW0p
CiB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBpbnNwZWN0b3JQcm9ncmFtLmlkZW50aWZpZXIo
KTsKQEAgLTkzMSw3ICs3OTcsNiBAQCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmFzc2VydEluc3BlY3RvclByb2dyYW0oUHJvdAogICAgIHJldHVy
biBpbnNwZWN0b3JQcm9ncmFtOwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKQogUmVmUHRyPEluc3Bl
Y3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yUHJv
Z3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7CiAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQ
cm9ncmFtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7CkBAIC05
NDIsMTYgKzgwNyw0IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6ZmluZEluc3BlY3RvclByb2dyYW0oV2ViR0xQCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvclByb2dyYW0oV2ViR1BV
UGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yUHJvZ3JhbSA6
IG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS52YWx1ZXMoKSkgewotICAgICAgICBpZiAo
aW5zcGVjdG9yUHJvZ3JhbS0+cGlwZWxpbmUoKSA9PSAmcGlwZWxpbmUpCi0gICAgICAgICAgICBy
ZXR1cm4gaW5zcGVjdG9yUHJvZ3JhbTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJM
RShXRUJHUFUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCBkN2Jk
ZWYzYzg0NDU1NTI1NWRjNmQyMmY2MmYyNzk4NzkyNmQ1MzIzLi43ZjEwMTJhYTJhMjRmNjgyY2Y2
ODkxZDEzNjZkZDRkMjYxNTczMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC00NCwxOSArNDQsMTEgQEAg
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkKLWNsYXNzIEluc3BlY3RvclNoYWRlclByb2dyYW07CiAjaWYgRU5BQkxFKFdFQkdMKQor
Y2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTsKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQotI2lm
IEVOQUJMRShXRUJHUFUpCi1jbGFzcyBHUFVDYW52YXNDb250ZXh0OwotY2xhc3MgV2ViR1BVRGV2
aWNlOwotY2xhc3MgV2ViR1BVUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVTd2FwQ2hhaW47Ci0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCiAKIGNsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyLCBwdWJsaWMgQ2FudmFzT2JzZXJ2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnNw
ZWN0b3JDYW52YXNBZ2VudD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNh
bnZhc0FnZW50KTsKQEAgLTgwLDE0ICs3MiwxMiBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRSZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1l
Q291bnQoaW50KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IHN0YXJ0UmVjb3JkaW5nKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFz
SWQmLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmcmFtZUNvdW50LCBzdGQ6Om9wdGlvbmFsPGludD4m
JiBtZW1vcnlMaW1pdCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBzdG9wUmVjb3JkaW5nKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6Q2Fu
dmFzSWQmKTsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBy
ZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJv
Z3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlKTsKICAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHVwZGF0ZVNoYWRlcihjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1JZCYsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotI2lmIEVO
QUJMRShXRUJHTCkKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IHNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52
YXM6OlByb2dyYW1JZCYsIGJvb2wgZGlzYWJsZWQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hhZGVyUHJvZ3JhbUhpZ2hsaWdodGVkKGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgYm9vbCBoaWdobGlnaHRlZCk7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5B
QkxFKFdFQkdQVSkKIAogICAgIC8vIENhbnZhc09ic2VydmVyCiAgICAgdm9pZCBjYW52YXNDaGFu
Z2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsK
QEAgLTEwOSwxMyArOTksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2Fi
bGVkKFdlYkdMUHJvZ3JhbSYpOwogICAgIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZChX
ZWJHTFByb2dyYW0mKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICB2b2lkIGRpZENyZWF0ZVdlYkdQVURldmljZShXZWJHUFVEZXZpY2UmKTsKLSAgICB2
b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQgd2ls
bENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0JiwgV2ViR1BVU3dhcENoYWluJik7
Ci0gICAgdm9pZCBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBXZWJHUFVQ
aXBlbGluZSYpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBl
bGluZSYpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAvLyBJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1l
bnRUeXBlKSBcCkBAIC0xMzQsMzIgKzExNywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5n
OjpJbml0aWF0b3IsIFJlY29yZGluZ09wdGlvbnMmJiA9IHsgfSk7CiAKICAgICB2b2lkIGNhbnZh
c0Rlc3Ryb3llZFRpbWVyRmlyZWQoKTsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJH
UFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcHJvZ3JhbURlc3Ryb3llZFRpbWVyRmly
ZWQoKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIEluc3BlY3RvckNhbnZh
cyYgYmluZENhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgYm9vbCBjYXB0dXJlQmFja3Ry
YWNlKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyYgYmluZENhbnZh
cyhXZWJHUFVEZXZpY2UmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCiAgICAgdm9pZCB1bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJik7CiAgICAg
UmVmUHRyPEluc3BlY3RvckNhbnZhcz4gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCk7CiAgICAgUmVm
UHRyPEluc3BlY3RvckNhbnZhcz4gZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0Jik7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFz
PiBmaW5kSW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYpOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgIHZvaWQgdW5iaW5kUHJvZ3JhbShJbnNwZWN0b3JTaGFkZXJQcm9ncmFtJik7
CiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGFzc2VydEluc3BlY3RvclByb2dy
YW0oSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHByb2dy
YW1JZCk7Ci0jaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtPiBmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHTFByb2dyYW0mKTsKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbT4gZmluZEluc3BlY3RvclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmKTsKLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0
Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6Q2FudmFz
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CkBAIC0xNzEsMTEgKzE0Mywx
MSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVtb3ZlZENhbnZhc0lkZW50aWZp
ZXJzOwogICAgIFRpbWVyIG1fY2FudmFzRGVzdHJveWVkVGltZXI7CiAKLSNpZiBFTkFCTEUoV0VC
R0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4+IG1faWRlbnRpZmllclRvSW5zcGVj
dG9yUHJvZ3JhbTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmll
cnM7CiAgICAgVGltZXIgbV9wcm9ncmFtRGVzdHJveWVkVGltZXI7Ci0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4IGMzYWFjNTRjNTdmMjQwN2IzOGYwMzZk
ODY1MTVkZmIyMGFkYmY0OTEuLjBjMzBkOWI4MDJjMTZlNTUzYjM4ODVmY2Y1NWE3ZDBlY2ZkMDQz
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCkBAIC00MiwxMSArNDIs
NiBAQAogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogCi0j
aWYgRU5BQkxFKEdQVV9EUklWRVJfUFJFV0FSTUlORykKLSNpbmNsdWRlICJHUFVEZXZpY2UuaCIK
LSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygpCkBA
IC03OSwxMCArNzQsNiBAQCB2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKQog
I2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBUZWxlcGhvbmVOdW1i
ZXJEZXRlY3Rvcjo6cHJld2FybSgpOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoR1BVX0RSSVZFUl9Q
UkVXQVJNSU5HKQotICAgIEdQVURldmljZTo6cHJld2FybSgpOwotI2VuZGlmCiB9CiAKIFdlYkNv
cmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZv
cm1hdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMDcwODQ3YzEzNGI1NjE2
M2Y0YTA2MTM5Mzk4ZjAzYTA1NTlhODc4Yi4uODIzNTg0M2ZhNTEyOTU1YzdjZWI1ZWZkZmNkZjkz
ZGU0YTU5ZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTIwLDcgKzEyMCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFZpZXdwb3J0cykgXAogICAgIE0oV2ViQXVk
aW8pIFwKICAgICBNKFdlYkdMKSBcCi0gICAgTShXZWJHUFUpIFwKICAgICBNKFdlYlJUQykgXAog
ICAgIE0oV2ViUlRDU3RhdHMpIFwKICAgICBNKFhSKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCmluZGV4IDVhNjBiY2MxZTZiNTMyYTYxZDQ4YWNjMzQ0YmJhYTJhZjhkMDE2ZGQu
LjAyYTI2ZDU3YjU1ZWNhZGU0M2M1ZjJlZTM5NWY4MzMyOTI2ODc5YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC01NywxMCArNTcsNiBAQAogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAj
aW1wb3J0ICJXQUtXaW5kb3cuaCIKQEAgLTIxOCwxMSArMjE0LDYgQEAgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5
ZXIoUGxhdGYKICAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKIAotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHUFVMYXll
ciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVy
OwotI2VuZGlmCi0KICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yNzUsNyAr
MjY2LDcgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVy
VHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgICAgIGxheWVyQ2xhc3Mg
PSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3Jl
YXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycyBvciBX
ZWJHUFVMYXllcnMuCisgICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTI4ZjczYTA4NjFkMTUyYjcxM2NlYjll
OTMzMjgzY2E4MjZhNWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgR1BVU3dhcENoYWluOwotfQotCi1AaW50ZXJmYWNlIFdlYkdQ
VUxheWVyIDogQ0FNZXRhbExheWVyIHsKLSAgICBXZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIF9zd2Fw
Q2hhaW47Ci0gICAgZmxvYXQgX2RldmljZVNjYWxlRmFjdG9yOwotfQotCi1AcHJvcGVydHkgKG5v
bmF0b21pYykgV2ViQ29yZTo6R1BVU3dhcENoYWluKiBzd2FwQ2hhaW47Ci0KLS0gKENHSW1hZ2VS
ZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9y
U3BhY2U7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjZTIzODJlNGViYjJjMWYwMGY5YmJjZDM1ZTBlNjAyZGI5Y2E0NjhmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
NjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdQVUxheWVyCi0KLUBzeW50aGVzaXpl
IHN3YXBDaGFpbiA9IF9zd2FwQ2hhaW47Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwotCi0gICAgLy8gRklYTUU6IFdlYkdQVSAtIGhhbmRsZSByZXRpbmEgY29ycmVj
dGx5LgotICAgIF9kZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgc2VsZi5jb250ZW50c1NjYWxlID0gX2RldmljZVNjYWxlRmFjdG9yOwotICAgIHNlbGYuY29s
b3JzcGFjZSA9IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gc2VsZjsKLX0KLQotLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNw
YWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZQotewotICAgIGlmICghX3N3YXBDaGFpbikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOTJmMTM0NGI1NGIyMmI5ZTlkODFmMTkxNmZiZmIyMTIx
MTgxNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2lu
Y2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNs
dWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yOwotCi11c2luZyBBcmd1bWVudEJ1ZmZlciA9IHN0ZDo6cGFpcjxjb25zdCBQbGF0Zm9ybUJ1
ZmZlciosIGNvbnN0IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRz
Jj47Ci0KLWNsYXNzIEdQVUJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRHcm91
cD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlDcmVhdGUo
Y29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYpOwot
Ci0gICAgfkdQVUJpbmRHcm91cCgpOwotICAgIAotICAgIGNvbnN0IEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4geyBtX2FsbG9jYXRvci0+YXJndW1lbnRCdWZm
ZXIoKSwgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHMgfTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVm
PEdQVUJ1ZmZlcj4+JiBib3VuZEJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQnVmZmVy
czsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgYm91bmRUZXh0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYm91bmRUZXh0dXJlczsgfQotCi1wcml2YXRlOgotICAgIEdQVUJp
bmRHcm91cChHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyYmLCBH
UFVCaW5kR3JvdXBBbGxvY2F0b3ImLCBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiYmLCBIYXNoU2V0
PFJlZjxHUFVUZXh0dXJlPj4mJik7Ci0gICAgCi0gICAgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpB
cmd1bWVudEJ1ZmZlck9mZnNldHMgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHM7Ci0gICAgUmVmPEdQ
VUJpbmRHcm91cEFsbG9jYXRvcj4gbV9hbGxvY2F0b3I7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVm
ZmVyPj4gbV9ib3VuZEJ1ZmZlcnM7Ci0gICAgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+IG1fYm91
bmRUZXh0dXJlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM4NDMxOTdiZjMzMjgzMDIzMTQzNDdiMzc4M2RhODc0YWY2MzU0MDQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEFsbG9jYXRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRm
b3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQot
Y2xhc3MgR1BVQmluZEdyb3VwQWxsb2NhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdy
b3VwQWxsb2NhdG9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVCaW5kR3JvdXBBbGxv
Y2F0b3I+IGNyZWF0ZShHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgc3RydWN0IEFyZ3VtZW50QnVm
ZmVyT2Zmc2V0cyB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZz
ZXQ+IHZlcnRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNl
dD4gZnJhZ21lbnQ7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZz
ZXQ+IGNvbXB1dGU7Ci0gICAgfTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBzdGQ6Om9wdGlvbmFs
PEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVu
dEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1l
bnRFbmNvZGVyICpjb21wdXRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB0cnlSZXNldCgpOwotCi0g
ICAgY29uc3QgUGxhdGZvcm1CdWZmZXIqIGFyZ3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9hcmd1bWVudEJ1ZmZlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVUJp
bmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgYm9vbCByZWFsbG9jYXRl
KFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0KTsKLQotICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIg
bV9hcmd1bWVudEJ1ZmZlcjsKLSAgICBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCBtX2xhc3RPZmZz
ZXQgeyAwIH07Ci0KLSAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29wZXM7Ci0gICAg
aW50IG1fbnVtQmluZEdyb3VwcyB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEJpbmRpbmcuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjM2EyMzY2ODg3NTZhN2ZjY2U4YzM0M2UwZjVkZjYzYWZi
MWFkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNp
bmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVQmluZGlu
Z1Jlc291cmNlID0gVmFyaWFudDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4sIFJlZjxHUFVUZXh0dXJl
PiwgR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAg
ICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVUJpbmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEw
OGE5NzhhOWU4NmExZWI5NmUyZmNmZGU5NDViY2ZjYWVhZDUyMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3Jv
dXBMYXlvdXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
IHsKLSAgICBSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7Ci0gICAgVmVjdG9y
PEdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxNmZjOTg0ODFlMWM0NzgyNWY1MDgzZWZmZTI2ZGNl
ODY2YTg1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwTGF5b3V0LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgR1BVRGV2aWNlOwotCi1jbGFzcyBHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0
IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKTsKLQotICAgIHN0cnVjdCBVbmlmb3JtQnVm
ZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lOwotICAgIH07Ci0KLSAg
ICBzdHJ1Y3QgRHluYW1pY1VuaWZvcm1CdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5h
bExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBTYW1wbGVyIHsKLSAgICB9OwotCi0g
ICAgc3RydWN0IFNhbXBsZWRUZXh0dXJlIHsKLSAgICB9OwotCi0gICAgc3RydWN0IFN0b3JhZ2VC
dWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBEeW5hbWljU3RvcmFnZUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVy
bmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAgdXNpbmcgSW50ZXJuYWxCaW5kaW5nRGV0YWls
cyA9IFZhcmlhbnQ8VW5pZm9ybUJ1ZmZlciwgRHluYW1pY1VuaWZvcm1CdWZmZXIsIFNhbXBsZXIs
IFNhbXBsZWRUZXh0dXJlLCBTdG9yYWdlQnVmZmVyLCBEeW5hbWljU3RvcmFnZUJ1ZmZlcj47Ci0K
LSAgICBzdHJ1Y3QgQmluZGluZyB7Ci0gICAgICAgIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcg
ZXh0ZXJuYWxCaW5kaW5nOwotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWU7Ci0gICAgICAg
IEludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlsczsKLSAgICB9Owot
Ci0gICAgdXNpbmcgQmluZGluZ3NNYXBUeXBlID0gSGFzaE1hcDx1aW50NjRfdCwgQmluZGluZywg
V1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1aW50NjRfdD4+OwotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSYgYmluZGluZ3NNYXAoKSBj
b25zdCB7IHJldHVybiBtX2JpbmRpbmdzTWFwOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEFy
Z3VtZW50RW5jb2RlciAqdmVydGV4RW5jb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4RW5j
b2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnRFbmNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudEVuY29kZXIuZ2V0KCk7IH0KLSAgICBNVExBcmd1bWVu
dEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlRW5jb2Rl
ci5nZXQoKTsgfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotcHJpdmF0ZToKLSNpZiBVU0UoTUVU
QUwpCi0gICAgR1BVQmluZEdyb3VwTGF5b3V0KEJpbmRpbmdzTWFwVHlwZSYmLCBSZXRhaW5QdHI8
TVRMQXJndW1lbnRFbmNvZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rl
cj4mJiBmcmFnbWVudCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKTsK
LQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fdmVydGV4RW5jb2RlcjsKLSAg
ICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2ZyYWdtZW50RW5jb2RlcjsKLSAgICBS
ZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2NvbXB1dGVFbmNvZGVyOwotI2VuZGlmIC8v
IFVTRShNRVRBTCkKLSAgICBjb25zdCBCaW5kaW5nc01hcFR5cGUgbV9iaW5kaW5nc01hcDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmRE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxl
bmREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTMzYWMyZTlh
Y2QxNWMyMGM2MWM4MDAwMTllOWI5OGJkNWZkOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUJsZW5kRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUJsZW5kRmFjdG9yIHsKLSAgICBaZXJvLAotICAg
IE9uZSwKLSAgICBTcmNDb2xvciwKLSAgICBPbmVNaW51c1NyY0NvbG9yLAotICAgIFNyY0FscGhh
LAotICAgIE9uZU1pbnVzU3JjQWxwaGEsCi0gICAgRHN0Q29sb3IsCi0gICAgT25lTWludXNEc3RD
b2xvciwKLSAgICBEc3RBbHBoYSwKLSAgICBPbmVNaW51c0RzdEFscGhhLAotICAgIFNyY0FscGhh
U2F0dXJhdGVkLAotICAgIEJsZW5kQ29sb3IsCi0gICAgT25lTWludXNCbGVuZENvbG9yLAotfTsK
LQotZW51bSBjbGFzcyBHUFVCbGVuZE9wZXJhdGlvbiB7Ci0gICAgQWRkLAotICAgIFN1YnRyYWN0
LAotICAgIFJldmVyc2VTdWJ0cmFjdCwKLSAgICBNaW4sCi0gICAgTWF4LAotfTsKLQotc3RydWN0
IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BVQmxlbmRGYWN0b3Igc3JjRmFjdG9yOwotICAg
IEdQVUJsZW5kRmFjdG9yIGRzdEZhY3RvcjsKLSAgICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVyYXRp
b247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE3NTU5NDcxMzMwMmQwOTM3
Y2RlODQ4MWU1YTM0MzhmYzJmNzdkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUJ1ZmZlcjo6UGVuZGluZ01hcHBpbmdD
YWxsYmFjazo6UGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBwZW5kaW5n
KQotICAgIDogY2FsbGJhY2soV1RGTW92ZShwZW5kaW5nKSkKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTM1YTVjM2FmYzRjODYyMmVkMzYwNGRhZmVmMjM2Y2Q3MjI1ZTJjNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNh
Z2UuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0
IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
OwotCi1jbGFzcyBHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXI+IHsKLXB1
YmxpYzoKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsKLSAgICAgICAgTWFwcGVkLAotICAgICAgICBV
bm1hcHBlZCwKLSAgICAgICAgRGVzdHJveWVkCi0gICAgfTsKLQotICAgIH5HUFVCdWZmZXIoKTsK
LQotICAgIHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGUoR1BVRGV2aWNlJiwgY29u
c3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJyb3JT
Y29wZXMmKTsKLQotICAgIFBsYXRmb3JtQnVmZmVyKiBwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCk7IH0KLSAgICBzaXplX3QgYnl0ZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQotICAgIGJvb2wgaXNDb3B5U291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNv
cHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24p
OyB9Ci0gICAgYm9vbCBpc0luZGV4KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhH
UFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkluZGV4KTsgfQotICAgIGJvb2wgaXNWZXJ0ZXgoKSBjb25z
dCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4
KTsgfQotICAgIGJvb2wgaXNVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0pOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6
U3RvcmFnZSk7IH0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICBib29sIGlzTWFw
cGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNh
Z2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pOyB9
Ci0gICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1V
c2FnZTsgfQotICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7Ci0KLSAgICBKU0M6OkFycmF5QnVmZmVy
KiBtYXBPbkNyZWF0aW9uKCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgdm9pZCBjb21tYW5kQnVm
ZmVyQ29tbWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKik7Ci0gICAgdm9pZCBjb21tYW5kQnVmZmVy
Q29tcGxldGVkKCk7Ci0jZW5kaWYKLQotICAgIHVzaW5nIE1hcHBpbmdDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChKU0M6OkFycmF5QnVmZmVyKik+OwotICAgIHZvaWQgcmVnaXN0ZXJNYXBw
aW5nQ2FsbGJhY2soTWFwcGluZ0NhbGxiYWNrJiYsIGJvb2wsIEdQVUVycm9yU2NvcGVzJik7Ci0g
ICAgdm9pZCB1bm1hcChHUFVFcnJvclNjb3BlcyopOwotICAgIHZvaWQgZGVzdHJveShHUFVFcnJv
clNjb3BlcyopOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBQZW5kaW5nTWFwcGluZ0NhbGxiYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gewotICAgICAgICBz
dGF0aWMgUmVmPFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2s+IGNyZWF0ZShNYXBwaW5nQ2FsbGJhY2sm
JiBjYWxsYmFjaykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGVuZGluZ01hcHBpbmdDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgTWFwcGluZ0NhbGxiYWNrIGNhbGxiYWNrOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgUGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJik7Ci0gICAgfTsKLQot
ICAgIEdQVUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYsIEdQVURldmljZSYsIHNpemVf
dCwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4sIEdQVUJ1ZmZlck1hcHBlZE9wdGlv
bik7Ci0gICAgc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2FnZShjb25zdCBHUFVEZXZpY2Um
LCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVRXJyb3JTY29wZXMmKTsKLQot
ICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JSZWFkKCk7Ci0gICAgSlNDOjpB
cnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7Ci0gICAgdm9pZCBydW5NYXBwaW5n
Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29w
ZXMqKTsKLQotICAgIGJvb2wgaXNNYXBXcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29u
dGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSk7IH0KLSAgICBib29sIGlzTWFw
UmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZs
YWdzOjpNYXBSZWFkKTsgfQotICAgIGJvb2wgaXNNYXBXcml0ZWFibGUoKSBjb25zdCB7IHJldHVy
biBpc01hcFdyaXRlKCkgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6VW5tYXBwZWQ7IH0KLSAgICBib29s
IGlzTWFwUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBpc01hcFJlYWQoKSAmJiBzdGF0ZSgpID09
IFN0YXRlOjpVbm1hcHBlZDsgfQotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX3BsYXRm
b3JtQnVmZmVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwotCi0gICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IG1fc3RhZ2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8UGVuZGluZ01hcHBp
bmdDYWxsYmFjaz4gbV9tYXBwaW5nQ2FsbGJhY2s7Ci0gICAgTWFpblRocmVhZERlZmVycmFibGVU
YXNrIG1fbWFwcGluZ0NhbGxiYWNrVGFzazsKLQotICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7Ci0g
ICAgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gbV91c2FnZTsKLSAgICB1bnNpZ25l
ZCBtX3BsYXRmb3JtVXNhZ2U7Ci0gICAgdW5zaWduZWQgbV9udW1TY2hlZHVsZWRDb21tYW5kQnVm
ZmVycyB7IDAgfTsKLSAgICBib29sIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24geyBmYWxzZSB9Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZm
ZXJCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTZlZTAxMTEwMWQ0
N2MwNDFiNWY5Njk1MDY4M2U0ZDgzZWM2ZGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXJCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
QnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7Ci0g
ICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJEZXNjcmlwdG9y
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMDcyZDllZmYwMjdkMjllOTM3Nzli
YzhmMDZiZDY0MmM0Mzg1NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXJV
c2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlw
dG9yIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7
Ci19OwotCi1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiB7Ci0gICAgSXNNYXBwZWQs
Ci0gICAgTm90TWFwcGVkCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2RlMTQxZThmZjM1MWFlZjllMDIwNTIyNDY1ZTY2YjU0YTQyNGQyZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5n
IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQnVmZmVyVXNhZ2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXJVc2FnZT4gewotcHVibGljOgotICAgIGVudW0g
Y2xhc3MgRmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAsCi0g
ICAgICAgIE1hcFJlYWQgPSAxIDw8IDAsCi0gICAgICAgIE1hcFdyaXRlID0gMSA8PCAxLAotICAg
ICAgICBDb3B5U291cmNlID0gMSA8PCAyLAotICAgICAgICBDb3B5RGVzdGluYXRpb24gPSAxIDw8
IDMsCi0gICAgICAgIEluZGV4ID0gMSA8PCA0LAotICAgICAgICBWZXJ0ZXggPSAxIDw8IDUsCi0g
ICAgICAgIFVuaWZvcm0gPSAxIDw8IDYsCi0gICAgICAgIFN0b3JhZ2UgPSAxIDw8IDcsCi0gICAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmRhNTI2NTZkZTIzZDI2MjRkNmExYjhl
MzU2YmQyNjRhZGMxNjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BV
Q29sb3IgewotICAgIGZsb2F0IHI7Ci0gICAgZmxvYXQgZzsKLSAgICBmbG9hdCBiOwotICAgIGZs
b2F0IGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmQ1NTI3MjhiY2M5YjM4MDU3NDU1OTllNmI1ODY4MTkxYWIxMzZlNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCbGVuZERlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVDb2xvcldyaXRlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAg
R1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICBHUFVCbGVuZERlc2NyaXB0b3IgYWxwaGFC
bGVuZDsKLSAgICBHUFVCbGVuZERlc2NyaXB0b3IgY29sb3JCbGVuZDsKLSAgICBHUFVDb2xvcldy
aXRlRmxhZ3Mgd3JpdGVNYXNrIHsgc3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVD
b2xvcldyaXRlOjpGbGFnczo6QWxsKSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JXcml0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0YzZkNWM4YzlkZTYxZjQzMjgxNDViNGYzNTUxMmRmYTdiMzJhMTkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci11c2luZyBHUFVDb2xvcldyaXRlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQ29sb3JX
cml0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbG9yV3JpdGU+IHsKLXB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIEZsYWdzIDogR1BVQ29sb3JXcml0ZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAs
Ci0gICAgICAgIFJlZCA9IDEgPDwgMCwKLSAgICAgICAgR3JlZW4gPSAxIDw8IDEsCi0gICAgICAg
IEJsdWUgPSAxIDw8IDIsCi0gICAgICAgIEFscGhhID0gMSA8PCAzLAotICAgICAgICBBbGwgPSAo
MSA8PCA0KSAtIDEsCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjJmYjYyZDQ0YzA1YjkxNWE3NTI2YjIzMTU2ZjkxOTY4NDA4YTVhMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVPcmlnaW4zRC5o
IgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVFeHRlbnQzRDsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlW
aWV3QmFzZSB7Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVuc2lnbmVkIHJvd1BpdGNoOwot
ICAgIHVuc2lnbmVkIGltYWdlSGVpZ2h0OwotfTsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3
IGZpbmFsIDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKLSAgICBHUFVCdWZmZXJDb3B5VmlldyhS
ZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlckNvcHksIGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSYg
YmFzZSkKLSAgICAgICAgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCBi
dWZmZXIoV1RGTW92ZShidWZmZXJDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVUJ1
ZmZlcj4gYnVmZmVyOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAg
IHVuc2lnbmVkIG1pcExldmVsOwotICAgIHVuc2lnbmVkIGFycmF5TGF5ZXI7Ci0gICAgR1BVT3Jp
Z2luM0Qgb3JpZ2luOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5VmlldyBmaW5hbCA6IEdQ
VVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIEdQVVRleHR1cmVDb3B5VmlldyhSZWY8R1BVVGV4
dHVyZT4mJiB0ZXh0dXJlQ29weSwgY29uc3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSYgYmFzZSkK
LSAgICAgICAgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlKGJhc2UpCi0gICAgICAgICwgdGV4dHVy
ZShXVEZNb3ZlKHRleHR1cmVDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVVRleHR1
cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BV
Q29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZv
cm1Db21tYW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQ
VUJ1ZmZlcj4+JiB1c2VkQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZEJ1ZmZlcnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mIHVzZWRUZXh0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlZFRleHR1cmVzOyB9Ci0gICAgYm9vbCBpc0VuY29kaW5nUGFzcygpIGNv
bnN0IHsgcmV0dXJuIG1faXNFbmNvZGluZ1Bhc3M7IH0KLQotICAgIHZvaWQgc2V0SXNFbmNvZGlu
Z1Bhc3MoYm9vbCBpc0VuY29kaW5nKSB7IG1faXNFbmNvZGluZ1Bhc3MgPSBpc0VuY29kaW5nOyB9
Ci0jaWYgVVNFKE1FVEFMKQotICAgIH5HUFVDb21tYW5kQnVmZmVyKCk7Ci0gICAgdm9pZCBlbmRC
bGl0RW5jb2RpbmcoKTsKLSNlbmRpZgotCi0gICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoUmVm
PEdQVUJ1ZmZlcj4mJiwgdWludDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmLCB1aW50
NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4
dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZpZXcmJiwgY29uc3QgR1BV
RXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNvcHlW
aWV3JiYsIEdQVUJ1ZmZlckNvcHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9p
ZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShHUFVUZXh0dXJlQ29weVZpZXcmJiwgR1BVVGV4dHVyZUNv
cHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0KLSAgICB2b2lkIHVzZUJ1ZmZlcihSZWY8
R1BVQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX3VzZWRCdWZmZXJzLmFkZFZvaWQoV1RGTW92ZShidWZm
ZXIpKTsgfQotICAgIHZvaWQgdXNlVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKSB7
IG1fdXNlZFRleHR1cmVzLmFkZFZvaWQoV1RGTW92ZSh0ZXh0dXJlKSk7IH0KLQotcHJpdmF0ZToK
LSAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYpOwot
Ci0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRCdWZm
ZXI7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKLSAgICBIYXNo
U2V0PFJlZjxHUFVUZXh0dXJlPj4gbV91c2VkVGV4dHVyZXM7Ci0gICAgYm9vbCBtX2lzRW5jb2Rp
bmdQYXNzIHsgZmFsc2UgfTsKLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQmxpdENvbW1hbmRFbmNv
ZGVyICpibGl0RW5jb2RlcigpIGNvbnN0OwotICAgIG11dGFibGUgUmV0YWluUHRyPE1UTEJsaXRD
b21tYW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwYmJhMzljOWRmZTRkMDAyODkzYzlhYjVj
MjhkMTJmZTRjMjhmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsKLSAgICBOZXZlciwKLSAgICBMZXNzLAotICAg
IEVxdWFsLAotICAgIExlc3NFcXVhbCwKLSAgICBHcmVhdGVyLAotICAgIE5vdEVxdWFsLAotICAg
IEdyZWF0ZXJFcXVhbCwKLSAgICBBbHdheXMKLX07Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcGFyZUZ1
bmN0aW9uID0gdW5zaWduZWQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJhMDQxNWQ5MGQ4Y2JjZjg3ZGJjYTJhMmFjY2QyNWJhMTRlYjhhNmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1
ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rl
cj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlw
ZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJik7Ci0gICAgdm9pZCBkaXNwYXRj
aCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBH
UFVDb21wdXRlUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtQ29t
cHV0ZVBhc3NFbmNvZGVyU21hcnRQdHImJik7Ci0gICAgfkdQVUNvbXB1dGVQYXNzRW5jb2Rlcigp
IHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcgotICAg
IGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29k
ZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkgZmluYWwgeyBt
X3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkK
LSAgICB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdl
KSBmaW5hbDsKLSAgICB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5T
VUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0jZW5kaWYKLQotICAgIFBs
YXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5j
b2RlcjsKLSAgICBSZWZQdHI8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiBtX3BpcGVsaW5lOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21w
dXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVD
b21wdXRlUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0OWMyN2Uz
MzA0MjgzYWIzZTUwODg5ZDg3Yjg3ZWM4OGZhNThjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29tcHV0ZVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVk
ZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNz
IEdQVVBpcGVsaW5lTGF5b3V0OwotCi1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjsKLQotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQVVBpcGVsaW5l
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVDb21wdXRlUGlwZWxpbmUoKTsKLQotICAgIHN0
YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNl
JiwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJik7
Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQot
Ci0gICAgYm9vbCByZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKTsKLQotICAgIGNvbnN0IFBsYXRmb3JtQ29tcHV0
ZVBpcGVsaW5lKiBwbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1Db21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0KLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnMoKSBjb25z
dCB7IHJldHVybiBtX2NvbXB1dGVEaW1lbnNpb25zOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lKFBsYXRmb3Jt
Q29tcHV0ZVBpcGVsaW5lU21hcnRQdHImJiwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zLCBjb25z
dCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+Jik7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3JtQ29t
cHV0ZVBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZTsKLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIG1fY29tcHV0
ZURpbWVuc2lvbnMgeyAwLCAwLCAwIH07Ci0jZW5kaWYKLQotICAgIC8vIFByZXNlcnZlZCBmb3Ig
V2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91
dD4gbV9sYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2ViQ29yZTo6R1BVQ29tcHV0ZVBpcGVsaW5lLCBpc0Nv
bXB1dGVQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YjM5MTUwNWVlYzI1OWEyM2Q4MTgxZjY3NGRkZDg3ZmMwNTA2MjZjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1
ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8
R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3ImJiBjb21wdXRlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBXVEZN
b3ZlKGxheW91dCkgfQotICAgICAgICAsIGNvbXB1dGVTdGFnZSB7IFdURk1vdmUoY29tcHV0ZSkg
fQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29t
cHV0ZVN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0N2QwM2IzNjJhNjg4YjJkNzkxMGM3ZmIxNzli
YjFlOTllMDZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29t
cGFyZUZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbCBkZXB0aFdyaXRlRW5hYmxlZDsKLSAg
ICBHUFVDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNjZjUyYjllNWRjYTRiMTE5ZGVhZGU0MmRlZmE5YmViZmY1NDQ3ZWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXAuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0Lmgi
Ci0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQ
VUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5j
bHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9y
U2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5o
IgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQ
VVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4
dHVyZS5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCdWZmZXIoY29u
c3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
IGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIEdQ
VUJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBpc01hcHBlZCwgZXJyb3JTY29w
ZXMpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbWF4aW11bU1pcExldmVsQ291bnQoR1BVVGV4dHVy
ZURpbWVuc2lvbiBkaW1lbnNpb24sIEdQVUV4dGVudDNEIHNpemUpCi17Ci0gICAgdW5zaWduZWQg
d2lkdGggPSBzaXplLndpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodCA9IDE7Ci0gICAgdW5zaWdu
ZWQgZGVwdGggPSAxOwotICAgIHN3aXRjaCAoZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0
dXJlRGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzJkOgotICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6Ci0gICAgICAgIGhlaWdodCA9
IHNpemUuaGVpZ2h0OwotICAgICAgICBkZXB0aCA9IHNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGF1dG8gbWF4RGltZW5zaW9uID0gc3RkOjptYXgoc3RkOjptYXgod2lk
dGgsIGhlaWdodCksIGRlcHRoKTsKLSAgICBpbnQgaSA9IHNpemVvZihHUFVFeHRlbnQzRDo6SW5u
ZXJUeXBlKSAqIDggLSAxOwotICAgIHdoaWxlICghKG1heERpbWVuc2lvbiAmICgxIDw8IGkpKSAm
JiBpID49IDApCi0gICAgICAgIC0taTsKLSAgICBBU1NFUlQoaSA+PSAwKTsKLSAgICByZXR1cm4g
aSArIDE7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1
cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAg
aWYgKCFkZXNjcmlwdG9yLnNpemUud2lkdGggfHwgIWRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgfHwg
IWRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBkaW1lbnNpb25zLiIpOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmICghZGVzY3JpcHRvci5taXBMZXZlbENv
dW50KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4
dHVyZXMgY2FuJ3QgaGF2ZSAwIG1pcGxldmVscy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpIHsKLSAgICAgICAgbV9lcnJv
clNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAgc2Ft
cGxlcy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICAvLyBodHRwczovL2Rl
dmVsb3Blci5hcHBsZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVzLnBkZgotICAg
IHVuc2lnbmVkIG1heFJlZ3VsYXJTaXplID0gODE5MjsKLSAgICB1bnNpZ25lZCBtYXhEZXB0aFNp
emUgPSAyMDQ4OwotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNl
IEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53
aWR0aCA+IG1heFJlZ3VsYXJTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiMUQgdGV4dHVyZSBpcyB0b28gd2lkZTogIiwg
ZGVzY3JpcHRvci5zaXplLndpZHRoLCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXpl
LCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAgIG1f
ZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJl
IGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIg
bmVlZHMgdG8gYmUgPD0gIiwgbWF4RGVwdGhTaXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGlt
ZW5zaW9uOjpfMmQ6Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUud2lkdGggPiBtYXhSZWd1
bGFyU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4UmVndWxhclNpemUpIHsKLSAg
ICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5n
KCIyRCB0ZXh0dXJlIGlzIHRvbyBsYXJnZToiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIgYW5k
ICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIgbmVlZCB0byBiZSA8PSAiLCBtYXhSZWd1bGFy
U2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAg
IGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0ZXh0
dXJlIGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwg
IiBuZWVkcyB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVE
aW1lbnNpb246Ol8zZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heERl
cHRoU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4RGVwdGhTaXplIHx8IGRlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjNEIHRleHR1cmUgaXMgdG9v
IGxhcmdlOiAiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIsICIsIGRlc2NyaXB0b3Iuc2l6ZS5o
ZWlnaHQsICIsIGFuZCAiLCBkZXNjcmlwdG9yLnNpemUuZGVwdGgsICIgbmVlZCB0byBiZSA8PSAi
LCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAg
fQotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24g
PT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAh
PSAxKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQg
dGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
fQotCi0gICAgYXV0byBtYXhMZXZlbHMgPSBtYXhpbXVtTWlwTGV2ZWxDb3VudChkZXNjcmlwdG9y
LmRpbWVuc2lvbiwgZGVzY3JpcHRvci5zaXplKTsKLSAgICBpZiAoZGVzY3JpcHRvci5taXBMZXZl
bENvdW50ID4gbWF4TGV2ZWxzKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcihtYWtlU3RyaW5nKCJUb28gbWFueSBtaXBsZXZlbHM6ICIsIGRlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhMZXZlbHMsICIuIikpOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50
ICE9IDEgJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSA0KSB7Ci0gICAgICAgIG1fZXJyb3JT
Y29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBzYW1wbGVDb3VudCBjYW4gb25s
eSBiZSAxIG9yIDQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRl
c2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewotICAgICAgICBpZiAoZGVzY3JpcHRvci5kaW1l
bnNpb24gIT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJkKSB7Ci0gICAgICAgICAgICBtX2Vycm9y
U2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmUgZGltZW5zaW9uIGluY29tcGF0
aWJsZSB3aXRoIG11bHRpc2FtcGxpbmcuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgIT0gMSkgewotICAg
ICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0aXNhbXBs
ZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzLiIpOwotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsK
LSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiQXJyYXkg
dGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci51c2FnZSAmIHN0YXRpY19jYXN0
PEdQVVRleHR1cmVVc2FnZUZsYWdzPihHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKSkg
ewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0
aXNhbXBsZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBTVE9SQUdFIHVzYWdlLiIpOwotICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogT25seSBzb21lIHBp
eGVsIGZvcm1hdHMgYXJlIGNhcGFibGUgb2YgTVNBQS4gV2hlbiB3ZSBhZGQgdGhvc2UgbmV3IHBp
eGVsIGZvcm1hdHMsIHdlJ2xsIGhhdmUgdG8gYWRkIGZpbHRlcmluZyBjb2RlIGhlcmUuCi0gICAg
fQotCi0gICAgLy8gVGhlIGhlaWdodCBjb21wb25lbnQgZm9yIDFkIHRleHR1cmVzIGlzIHRoZSBh
cnJheSBsZW5ndGguCi0gICAgLy8gVGhlIGRlcHRoIGNvbXBvbmVudCBmb3IgMmQgdGV4dHVyZXMg
aXMgdGhlIGFycmF5IGxlbmd0aC4KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gPT0gR1BV
VGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCAhPSAxKSB7Ci0g
ICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQgdGV4dHVyZXMg
Y2FuJ3QgaGF2ZSBkZXB0aCAhPSAxLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQot
ICAgIGlmIChkZXNjcmlwdG9yLmZvcm1hdCA9PSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxv
YXRTdGVuY2lsOCAmJiBkZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBHUFVUZXh0dXJlRGltZW5zaW9u
OjpfMmQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJE
ZXB0aC9zdGVuY2lsIHRleHR1cmVzIG11c3QgYmUgMmQuIik7Ci0gICAgICAgIHJldHVybiB7IH07
Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6
OkRlcHRoMzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewot
ICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0ZW5j
aWwgdGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICByZXR1cm4geyB9
OwotICAgIH0KLQotICAgIGlmIChzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oZGVz
Y3JpcHRvci51c2FnZSkgPj0gc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M6Ok1heGltdW1WYWx1ZSkpIHsKLSAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIHVzYWdlIGZsYWdzLiIpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUo
KnRoaXMsIGRlc2NyaXB0b3IsIG1ha2VSZWYoKm1fZXJyb3JTY29wZXMpKTsKLX0KLQotUmVmUHRy
PEdQVVNhbXBsZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVU2FtcGxlcjo6
dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yKTsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExh
eW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BV
QmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWY8
R1BVUGlwZWxpbmVMYXlvdXQ+IEdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4g
R1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLX0KLQotUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTaGFkZXJNb2R1bGUoY29u
c3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQot
Ci1SZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlUmVuZGVyUGlw
ZWxpbmUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVF
cnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVVJlbmRlclBp
cGVsaW5lOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLX0KLQot
UmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21wdXRlUGlw
ZWxpbmUoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewotICAgIHJldHVybiBHUFVDb21wdXRl
UGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQot
Ci1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cChjb25z
dCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2JpbmRHcm91cEFsbG9jYXRvcikKLSAgICAg
ICAgbV9iaW5kR3JvdXBBbGxvY2F0b3IgPSBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0ZShl
cnJvclNjb3Blcyk7Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoZGVzY3Jp
cHRvciwgKm1fYmluZEdyb3VwQWxsb2NhdG9yKTsKLX0KLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZm
ZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZSgqdGhpcyk7Ci19Ci0KLVJlZlB0cjxHUFVR
dWV1ZT4gR1BVRGV2aWNlOjp0cnlHZXRRdWV1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1ZXVl
KQotICAgICAgICBtX3F1ZXVlID0gR1BVUXVldWU6OnRyeUNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBy
ZXR1cm4gbV9xdWV1ZTsKLX0KLSAgICAKLXZvaWQgR1BVRGV2aWNlOjpzZXRTd2FwQ2hhaW4oUmVm
UHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCi17Ci0gICAgbV9zd2FwQ2hhaW4gPSBXVEZN
b3ZlKHN3YXBDaGFpbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYmJiZTMwNGZm
MGI2YTc2MmI5ZjQ4YzQ0MTNmYTE1ZWY1ZjQxNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUg
IkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgIkdQ
VVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVUJpbmRHcm91cDsKLWNsYXNzIEdQVUJpbmRHcm91cExheW91dDsKLWNsYXNzIEdQVUJ1
ZmZlcjsKLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7Ci1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmU7
Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwotY2xhc3Mg
R1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVTYW1wbGVyOwotY2xhc3MgR1BVU2hhZGVyTW9k
dWxlOwotY2xhc3MgR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3I7
Ci1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCdWZmZXJE
ZXNjcmlwdG9yOwotc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3Qg
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjsKLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7Ci1zdHJ1Y3QgR1BVU2Ft
cGxlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLXN0cnVj
dCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwot
Ci1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjsKLQotY2xhc3MgR1BVRGV2aWNlIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEdQVURl
dmljZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiB0cnlDcmVhdGUo
Y29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+Jik7Ci0gICAgc3Rh
dGljIHZvaWQgcHJld2FybSgpOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gdHJ5Q3JlYXRlQnVm
ZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24sIEdQ
VUVycm9yU2NvcGVzJik7Ci0gICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1cmUo
Y29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVU2FtcGxl
cj4gdHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpIGNvbnN0Owot
Ci0gICAgUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlQmluZEdyb3VwTGF5b3V0
KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8R1BV
UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciYmKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlDcmVhdGVCaW5k
R3JvdXAoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikgY29u
c3Q7Ci0KLSAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiB0cnlDcmVhdGVTaGFkZXJNb2R1bGUo
Y29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLSAgICBSZWZQdHI8R1BV
Q29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAgICBSZWZQ
dHI8R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0OwotCi0g
ICAgUmVmUHRyPEdQVVF1ZXVlPiB0cnlHZXRRdWV1ZSgpIGNvbnN0OwotICAgIAotICAgIFBsYXRm
b3JtRGV2aWNlKiBwbGF0Zm9ybURldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EZXZp
Y2UuZ2V0KCk7IH0KLSAgICBHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3dhcENoYWluLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3
YXBDaGFpbj4mJik7Ci0KLSAgICB2b2lkIHNldEVycm9yU2NvcGVzKFJlZjxHUFVFcnJvclNjb3Bl
cz4mJiBlcnJvclNjb3BlcykgeyBtX2Vycm9yU2NvcGVzID0gV1RGTW92ZShlcnJvclNjb3Blcyk7
IH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VXSExTTCA9IHRydWU7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgR1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQdHImJik7Ci0K
LSAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRyIG1fcGxhdGZvcm1EZXZpY2U7Ci0gICAgbXV0YWJs
ZSBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci0gICAgUmVmUHRyPEdQVVN3YXBDaGFpbj4gbV9z
d2FwQ2hhaW47Ci0gICAgbXV0YWJsZSBSZWZQdHI8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBtX2Jp
bmRHcm91cEFsbG9jYXRvcjsKLSAgICBSZWZQdHI8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29w
ZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJv
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMjhkNGZjMTJjOGEyNDcyOGNl
MjA2NWJkMjcyMWRiYWY4MmJmZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVyIGZpbHRlciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIHN3aXRjaCAoZmlsdGVyKSB7Ci0gICAgY2FzZSBHUFVFcnJvckZp
bHRlcjo6T3V0T2ZNZW1vcnk6Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BVT3V0
T2ZNZW1vcnlFcnJvcj4oR1BVT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkpKTsKLSAgICBjYXNl
IEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uOgotICAgICAgICByZXR1cm4gR1BVRXJyb3IoUmVm
UHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkpKTsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVWYWxpZGF0aW9u
RXJyb3I+KEdQVVZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKCJCYWQgZXJyb3IhIikpKTsKLSAgICB9
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZjOGZhZmFmYTQ1ZjBmZjE0N2NiOGJiYjQ3
MTMzMjI3NTJjMjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKLSNp
bmNsdWRlICJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwotCi11
c2luZyBHUFVFcnJvciA9IFZhcmlhbnQ8UmVmUHRyPEdQVU91dE9mTWVtb3J5RXJyb3I+LCBSZWZQ
dHI8R1BVVmFsaWRhdGlvbkVycm9yPj47Ci0KLUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9y
RmlsdGVyLCBjb25zdCBTdHJpbmcmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yRmlsdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NjlmZWYzMjcwNWQ5
OWJmZWNlYTAwODkxZmYxNjQ0YTBhNGQxNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yRmlsdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyIHsKLSAgICBOb25lLAotICAgIE91
dE9mTWVtb3J5LAotICAgIFZhbGlkYXRpb24sCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJiZWU5Y2YxYmZkMGMwMmMyMDU1YjcyMjQwMTIxODM4NGQzNmM1OWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY29uc3QgdW5zaWduZWQgbWF4VW5jYXB0dXJlZEVycm9yRXZlbnRz
QWxsb3dlZCA9IDI1NjsKLQotUmVmPEdQVUVycm9yU2NvcGVzPiBHUFVFcnJvclNjb3Blczo6Y3Jl
YXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgR1BVRXJyb3JTY29wZXMoV1RGTW92ZShjYWxsYmFjaykpKTsKLX0KLQotR1BV
RXJyb3JTY29wZXM6OkdQVUVycm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2Fs
bGJhY2spCi0gICAgOiBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2sp
KQotICAgICwgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKG1heFVuY2FwdHVyZWRF
cnJvckV2ZW50c0FsbG93ZWQpCi17Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hFcnJv
clNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAgICBtX2Vycm9yU2NvcGVzLmFwcGVu
ZChFcnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8R1BVRXJyb3I+IEdQVUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1l
c3NhZ2UpCi17Ci0gICAgaWYgKG1fZXJyb3JTY29wZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZh
aWxNZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0cyEiOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gc2NvcGUgPSBtX2Vycm9yU2NvcGVzLnRha2VM
YXN0KCk7Ci0gICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSA/
IHN0ZDo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpn
ZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVy
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRfaWYobV9lcnJvclNjb3Blcy5yYmVn
aW4oKSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtmaWx0ZXJdKGNvbnN0IEVycm9yU2NvcGUmIHNj
b3BlKSB7Ci0gICAgICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5v
bmUgfHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsKLSAgICB9KTsKLQotICAgIGlmIChpdGVyYXRv
ciA9PSBtX2Vycm9yU2NvcGVzLnJlbmQoKSkgewotICAgICAgICBpZiAoIW1fbnVtVW5jYXB0dXJl
ZEVycm9yRXZlbnRzQWxsb3dlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3Vu
Y2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSkpOwotICAg
ICAgICBpZiAoISgtLW1fbnVtVW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkpCi0gICAgICAg
ICAgICBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVy
OjpWYWxpZGF0aW9uLCAiV2ViR1BVOiBUb28gbWFueSBlcnJvcnM7IG5vIG1vcmUgZXJyb3IgZXZl
bnRzIHdpbGwgZmlyZSBvbiB0aGlzIEdQVURldmljZS4iKSk7Ci0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIElmIHRoZSBzY29wZSBoYXMgYWxyZWFkeSBjYXB0dXJlZCBhbiBlcnJv
ciwgaWdub3JlIHRoaXMgbmV3IG9uZS4KLSAgICBpZiAoaXRlcmF0b3ItPmVycm9yKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpdGVyYXRvci0+ZXJyb3IgPSBjcmVhdGVFcnJvcihmaWx0ZXIsIG1l
c3NhZ2UpOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5lcmF0ZVByZWZpeGVkRXJyb3Io
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGdlbmVyYXRlRXJyb3IobV9wcmVmaXggKyBt
ZXNzYWdlLCBHUFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxNTA5YzY4NGE5M2M3NmIzN2RmN2NkMDczNWY3ZGZlNzhlMmFj
N2YyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yLmgiCi0jaW5jbHVkZSAiR1BVRXJy
b3JGaWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgR1BVRXJyb3JTY29wZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVFcnJvclNjb3Bl
cz4gewotcHVibGljOgotICAgIHVzaW5nIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChHUFVFcnJvciYmKT47Ci0gICAgc3RhdGljIFJlZjxHUFVFcnJvclNjb3Blcz4gY3Jl
YXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0gICAgdm9pZCBwdXNoRXJyb3JTY29w
ZShHUFVFcnJvckZpbHRlcik7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJyb3JT
Y29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVFcnJvcihjb25z
dCBTdHJpbmcmLCBHUFVFcnJvckZpbHRlciA9IEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uKTsK
LSAgICB2b2lkIGdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IHNldEVycm9yUHJlZml4KGNvbnN0IFN0cmluZyYgcHJlZml4KSB7IG1fcHJlZml4ID0gcHJlZml4
OyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEVycm9yU2NvcGUgewotICAgICAgICBjb25zdCBH
UFVFcnJvckZpbHRlciBmaWx0ZXI7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVy
cm9yOwotICAgIH07Ci0KLSAgICBHUFVFcnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFj
ayYmKTsKLQotICAgIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrIG1fdW5jYXB0dXJlZEVycm9yQ2Fs
bGJhY2s7Ci0KLSAgICBWZWN0b3I8RXJyb3JTY29wZT4gbV9lcnJvclNjb3BlczsKLSAgICBTdHJp
bmcgbV9wcmVmaXg7Ci0gICAgdW5zaWduZWQgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxv
d2VkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFeHRlbnQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4
dGVudDNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NDgyNjUyMGNjNWU3ZTBj
YzlmZjQzZmQxNDI4MGY1MDQ0YjdlYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4
dGVudDNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgCi1zdHJ1Y3QgR1BVRXh0ZW50M0QgewotICAgIHVzaW5nIElubmVyVHlwZSA9IHVuc2lnbmVk
OwotICAgIElubmVyVHlwZSB3aWR0aDsKLSAgICBJbm5lclR5cGUgaGVpZ2h0OwotICAgIElubmVy
VHlwZSBkZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGltaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGltaXRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMmU1MWMzZTczYjk1
NjFjYmM4MTU0ZmQwOTc2ZDc4ZTllZjgyYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxpbWl0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jb25zdCB1bnNpZ25lZCBtYXhWZXJ0ZXhCdWZmZXJzID0gMTY7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVhMjRlZWY1Mjc0ZmJjMGFkNzY3NGY2YmM1NmU4ZjE5NmUxYzk2MTIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxvYWRPcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUxvYWRPcCB7Ci0gICAgQ2xl
YXIsCi0gICAgTG9hZAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVT2JqZWN0QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2Iy
ZDkxOGMyZTU0NTE3Y2IzN2ZmZmVhNmIyNjJkNDVmODJmYTlmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU9iamVjdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHUFVPYmplY3RCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVT2JqZWN0QmFzZSgp
ID0gZGVmYXVsdDsKLQotcHJvdGVjdGVkOgotICAgIEdQVU9iamVjdEJhc2UoUmVmPEdQVUVycm9y
U2NvcGVzPiYmIHJlcG9ydGVyKQotICAgICAgICA6IG1fZXJyb3JTY29wZXMoV1RGTW92ZShyZXBv
cnRlcikpIHsgfQotCi0gICAgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9lcnJvclNjb3BlczsgfQotCi1wcml2YXRlOgotICAgIFJlZjxHUFVFcnJvclNjb3Bl
cz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWY0MjBlOTdkZmUzYmYwNzU2NmM1YjZhMGZkZWM0NjY4OTYxNzk0My4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU91dE9mTWVtb3J5RXJy
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVPdXRPZk1lbW9yeUVycm9yPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxHUFVPdXRPZk1lbW9yeUVycm9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEdQVU91dE9mTWVtb3J5RXJyb3IpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdjODgxNjU1NDM1NzEyMzEwNWI2ZTllN2M4ODMzNDFmYzJiZDgyNmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR1BVUGlwZWxpbmU6On5HUFVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MmVlOGQ3YTNiN2VmZjE5OTA2ZTk1MDA4MTBmMzQ0
MmMzY2ViNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVBpcGVsaW5lPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUGlwZWxpbmUoKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyByZXR1
cm4gcGlwZWxpbmUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxMjJiYTkzNmRmNGQwMDZlYjYxM2U5
NjE2OTY2MGMxMWY5OWQ0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBp
cGVsaW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
Ci0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMTk5M2E5ZTJmMDBiNDJlNDM4NDMx
N2NhNjVkYTRlZDRkZWExZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5l
TGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQVVBpcGVsaW5l
TGF5b3V0PiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVUGlwZWxp
bmVMYXlvdXQoV1RGTW92ZShkZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHMpKSk7Ci19Ci0KLUdQ
VVBpcGVsaW5lTGF5b3V0OjpHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQVUJp
bmRHcm91cExheW91dD4+JiYgbGF5b3V0cykKLSAgICA6IG1fYmluZEdyb3VwTGF5b3V0cyhXVEZN
b3ZlKGxheW91dHMpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTc5OTk0NmZjYmEwMTJjY2VkNDZhN2YxNzIzOTI5Njc0NTkxOGZjMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVBpcGVsaW5lTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVQaXBlbGluZUxh
eW91dD4gY3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKTsKLQotICAgIGNvbnN0
IFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mIGJpbmRHcm91cExheW91dHMo
KSBjb25zdCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dHM7IH0KLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExh
eW91dD4+JiYpOwotCi0gICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBt
X2JpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGExZWUyYzc3NTFmNDcxZmQ3NTQ1ODEwYjc3
OGE1NDMyMmY1ODIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXBMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBWZWN0
b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3Jt
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQbGF0Zm9y
bVR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYzc2NzI2Nzg2MmE1ZTgw
MDdmZDhlMzMzMWRlNzZlNjlkZTNiMTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBs
YXRmb3JtVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTUVUQUwpCi0jaW5jbHVkZSAiR1BVUGxhdGZv
cm1UeXBlc01ldGFsLmgiCi0jZWxpZiBVU0UoREFXTikKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5
cGVzRGF3bi5oIgotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0gZm9yIFdlYkdQ
VSIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDlmYTRhMDUyNjMzNGYwZjdkM2Y3ZDlkZTg5MTFlZWQ5
Y2NhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZm
ZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSkKLXsKLSAg
ICBtX2NvbW1hbmRCdWZmZXItPnNldElzRW5jb2RpbmdQYXNzKHRydWUpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3MjQ0
ZjJlZTFmZGNkNWQxYjE3Mzc1YzllNDExZDBmNjZkYzVhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFu
ZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUJpbmRHcm91
cDsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNp
Z25lZCwgR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoKLSAgICBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBHUFVDb21tYW5kQnVm
ZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgp
OyB9Ci0gICAgdmlydHVhbCBjb25zdCBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBw
bGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpID0gMDsKLSNpZiBVU0UoTUVUQUwpCi0gICAgdmlydHVh
bCB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkKSA9IDA7Ci0K
LSAgICAvLyBSZW5kZXIgY29tbWFuZCBlbmNvZGVyIG1ldGhvZHMuCi0gICAgdmlydHVhbCB2b2lk
IHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVExCdWZmZXIg
KiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotICAgIC8vIENvbXB1dGUuCi0gICAgdmlydHVh
bCB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIsIHVu
c2lnbmVkKSB7IH0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLSAgICBSZWY8R1BVQ29tbWFuZEJ1
ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdjMDYyOGVmN2EzMDM1ZTU5
MjIxZmVkOTg3ZDVmNTdkYjA3YWQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBTdHJpbmcgZW50cnlQb2lu
dDsKLX07Ci0KLXN0cnVjdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgOiBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgICAgIDogR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIG1vZHVsZSB7IFdURk1vdmUobW9k
dWxlKSB9Ci0gICAgewotICAgIH0KLQotICAgIFJlZjxHUFVTaGFkZXJNb2R1bGU+IG1vZHVsZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ1Mjc4NTNhMzRhZmUwMzUzYzRmNzg3Nzk5
Y2NiZDQ2NmQ4ZWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5jbHVk
ZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbW1hbmRC
dWZmZXI7Ci1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVVF1ZXVlIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVF1ZXVlPiB0
cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybVF1ZXVlKiBwbGF0Zm9y
bVF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVF1ZXVlLmdldCgpOyB9Ci0KLSAgICB2
b2lkIHN1Ym1pdChWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+PiYmKTsKLQotICAgIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7
Ci0KLXByaXZhdGU6Ci0gICAgR1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyJiYsIGNvbnN0
IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyIG1fcGxhdGZvcm1RdWV1
ZTsKLSAgICBXZWFrUHRyPGNvbnN0IEdQVURldmljZT4gbV9kZXZpY2U7Ci0gICAgTWFpblRocmVh
ZERlZmVycmFibGVUYXNrIG1fcHJlc2VudFRhc2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhNjRiNDU5NGFlMTNiNGM0NmQ4ZTVj
NjZhNzI0NWI3MDExNzk2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb2xv
ci5oIgotI2luY2x1ZGUgIkdQVUxvYWRPcC5oIgotI2luY2x1ZGUgIkdQVVN0b3JlT3AuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBsb2FkT3A7Ci0gICAgR1BVU3RvcmVPcCBzdG9yZU9w
OwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAxIH07Ci19OwotCi1zdHJ1Y3Qg
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0dXJl
PiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBkZXB0aExvYWRPcDsKLSAgICBH
UFVTdG9yZU9wIGRlcHRoU3RvcmVPcDsKLSAgICBmbG9hdCBjbGVhckRlcHRoOwotCi0gICAgLy8g
RklYTUU6IEFkZCBzdGVuY2lsIHN1cHBvcnQuCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGZpbmFsIDogR1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJik7Ci0KLSAgICBS
ZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvciB7Ci0gICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVJlbmRlclBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDQz
ZjVkNGMxMjQ1MDBmOGZlM2M1MTI4NzdjMGUxNTM4YWJlYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQnVmZmVyOwotY2xh
c3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLQotc3RydWN0IEdQVUNvbG9yOwotc3RydWN0IEdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlciA6IHB1YmxpYyBH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmLCBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoUmVmPGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIHNldEJsZW5kQ29sb3IoY29uc3Qg
R1BVQ29sb3ImKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0g
ICAgdm9pZCBzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldEluZGV4QnVmZmVyKEdQVUJ1ZmZl
ciYsIHVpbnQ2NF90IG9mZnNldCk7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVk
IGluZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNp
Z25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJ
bnN0YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNp
Z25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwg
dW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0KLXByaXZhdGU6Ci0gICAgR1BVUmVuZGVyUGFzc0Vu
Y29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJT
bWFydFB0ciYmKTsKLSAgICB+R1BVUmVuZGVyUGFzc0VuY29kZXIoKSB7IGVuZFBhc3MoKTsgfQot
Ci0gICAgLy8gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIKLSAgICBjb25zdCBQbGF0Zm9ybVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgZmluYWw7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpIGZpbmFsIHsgbV9wbGF0Zm9ybVJlbmRlclBh
c3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIHVzZVJlc291
cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lk
IHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciBvZmZzZXQsIHVu
c2lnbmVkIGluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1U
TEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGZpbmFsOwotCi0g
ICAgUmVmUHRyPEdQVUJ1ZmZlcj4gbV9pbmRleEJ1ZmZlcjsKLSAgICB1aW50NjRfdCBtX2luZGV4
QnVmZmVyT2Zmc2V0OwotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotICAgIFBsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI7Ci0gICAgUmVm
UHRyPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiBtX3BpcGVsaW5lOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTZhMjQxYzA0NTMwODliMGJhYTE1MDFi
ODk1N2I0YjJlYzhmYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVs
aW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIK
LSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRXJy
b3JTY29wZXM7Ci0KLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQVVBp
cGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVSZW5kZXJQaXBlbGluZSgpOwotCi0g
ICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVz
Jik7Ci0KLSAgICBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0KLSAgICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0g
ICAgTVRMRGVwdGhTdGVuY2lsU3RhdGUgKmRlcHRoU3RlbmNpbFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQotI2VuZGlmCi0gICAgUGxhdGZvcm1SZW5k
ZXJQaXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQotICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHBy
aW1pdGl2ZVRvcG9sb2d5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVUb3BvbG9neTsgfQot
ICAgIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGluZGV4Rm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleEZvcm1hdDsgfQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkKLSAgICBH
UFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYsIFBsYXRm
b3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmLCBHUFVQcmltaXRpdmVUb3BvbG9neSwgc3RkOjpv
cHRpb25hbDxHUFVJbmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4m
LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7Ci0KLSAgICBSZXRhaW5Q
dHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7Ci0jZW5kaWYgLy8g
VVNFKE1FVEFMKQotICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3Jt
UmVuZGVyUGlwZWxpbmU7Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgbV9wcmltaXRpdmVUb3Bv
bG9neTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0PiBtX2luZGV4Rm9ybWF0Owot
Ci0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAg
UmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91dDsKLSAgICBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlIG1fcmVuZGVyRGVzY3JpcHRvckJhc2U7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2ViQ29y
ZTo6R1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZTJkYTlhYWEzMzZhN2FmMDFkOTMyODJkZWZlMDJhYzlh
NzM5MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVZlcnRleElucHV0RGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1lbnVtIGNsYXNzIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKLSAgICBQb2ludExpc3QsCi0g
ICAgTGluZUxpc3QsCi0gICAgTGluZVN0cmlwLAotICAgIFRyaWFuZ2xlTGlzdCwKLSAgICBUcmlh
bmdsZVN0cmlwCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgVmVjdG9y
PEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBzdGQ6Om9wdGlvbmFs
PEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3RhdGU7Ci0gICAg
R1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0OwotfTsKLQotc3RydWN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXgsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3JCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBXVEZN
b3ZlKGxheW91dCkgfQotICAgICAgICAsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2Uo
YmFzZSkKLSAgICAgICAgLCB2ZXJ0ZXhTdGFnZShXVEZNb3ZlKHZlcnRleCkpCi0gICAgICAgICwg
ZnJhZ21lbnRTdGFnZShXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICB7Ci0gICAgfQotCi0gICAgR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwotICAgIHN0ZDo6b3B0aW9u
YWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Jh
MGJkMTA2NmIwMWEwNjNjZmMzODZjYmMxZGQ0YzkzZDg0YjE2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8b3B0aW9uYWw+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBHUFVQb3dlclByZWZlcmVuY2UgOiBib29sIHsgTG93UG93ZXIsIEhpZ2hQZXJmb3JtYW5j
ZSB9OwotCi1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJlbmNlOwotfTsKLSAgICAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjFhNjQ0NjlmY2NlYjY3NGQ4OWZlZWEwYmJhMTJjZTNmZjNm
MmEzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRv
cjsKLQotY2xhc3MgR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNhbXBsZXI+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpOwotCi0gICAgUGxhdGZvcm1T
YW1wbGVyKiBwbGF0Zm9ybVNhbXBsZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU2FtcGxl
ci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEdQVVNhbXBsZXIoUGxhdGZvcm1TYW1wbGVyU21h
cnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciBtX3BsYXRmb3JtU2FtcGxl
cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U2FtcGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
OTM3MGZlZGQ0MDljZmUyYmQzNzYwMTU4MjY2ZTAwMzQwMTcxMWExLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWVudW0gY2xhc3MgR1BVQWRkcmVzc01vZGUgewotICAgIENsYW1wVG9FZGdlLAotICAgIFJl
cGVhdCwKLSAgICBNaXJyb3JSZXBlYXQsCi19OwotCi1lbnVtIGNsYXNzIEdQVUZpbHRlck1vZGUg
ewotICAgIE5lYXJlc3QsCi0gICAgTGluZWFyLAotfTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNj
cmlwdG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVUgeyBHUFVBZGRyZXNzTW9k
ZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVYgeyBHUFVB
ZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9k
ZVcgeyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1h
Z0ZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1p
bkZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1p
cG1hcEZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBmbG9hdCBsb2RNaW5D
bGFtcCB7IDAgfTsKLSAgICBmbG9hdCBsb2RNYXhDbGFtcCB7IDB4ZmZmZmZmZmYgfTsKLSAgICB1
bnNpZ25lZCBtYXhBbmlzb3Ryb3B5IHsgMSB9OwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBjb21w
YXJlRnVuY3Rpb24geyBHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyIH07Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWE1NmQxMTg2OWEyZjkzMDk5NzMxNGZhMGQ2
NjQxZWEyMDBjMThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVRGV2aWNlOwotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLQotY2xhc3Mg
R1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hhZGVyTW9kdWxlPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IHRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7Ci0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUqIHBsYXRmb3Jt
U2hhZGVyTW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aGxzbE1vZHVsZSA/IG51bGxwdHIgOiBt
X3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9Ci0gICAgY29uc3QgV0hMU0w6OlNoYWRlck1v
ZHVsZSogd2hsc2xNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3dobHNsTW9kdWxlLmdldCgpOyB9
Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJN
b2R1bGVTbWFydFB0ciYmKTsKLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BVU2hh
ZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxlKTsK
LSNlbmRpZgotCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3JtU2hh
ZGVyTW9kdWxlOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V0hMU0w6OlNoYWRlck1vZHVsZT4gbV93aGxzbE1vZHVsZTsKLSNlbmRpZgotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2Zl
MGFkNWE4N2IzMmM0OGFlMzRiZDc2ZDJmMWM1OTgxYmU3ZDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIFN0cmluZyBjb2Rl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVT
dG9yZU9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3RvcmVP
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjc4MzI0ODkxM2U0NTFkYzM2YTQ3
YWI1ZjBlMjNjYTI0YWRjMzBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9w
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0g
Y2xhc3MgR1BVU3RvcmVPcCB7Ci0gICAgU3RvcmUKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNlMjc3NDdlM2U3ZTI2ZGRiZTEyNzA3MDAwODBkYWQyMDE0YWFmYTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJl
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLS8vIFBsYXRmb3JtTGF5ZXIgaW1wbGVtZW50
YXRpb24gbmVlZGVkIG90aGVyd2lzZSBjb21waWxpbmcgZGVyaXZlZCBzb3VyY2VzIHdpbGwgZmFp
bC4KLSNpZiBVU0UoTklDT1NJQSkKLSNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgot
I2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlQcm92aWRlci5oIgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQot
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCi0jZW5kaWYKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXQ7Ci0KLWNsYXNzIEdQVVN3
YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiB0cnlDcmVhdGUoY29uc3QgR1BVU3dhcENoYWlu
RGVzY3JpcHRvciYsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0KLSAgICBSZWZQdHI8R1BVVGV4
dHVyZT4gdHJ5R2V0Q3VycmVudFRleHR1cmUoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBSZXRh
aW5QdHI8Q0FNZXRhbERyYXdhYmxlPiB0YWtlRHJhd2FibGUoKTsKLSNlbmRpZgotCi0gICAgLy8g
Rm9yIEdQVUNhbnZhc0NvbnRleHQuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0OwotCi0gICAgdm9pZCBwcmVzZW50KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBtX2N1cnJlbnREcmF3YWJsZSA9
IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2FwTGF5
ZXJTbWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAg
UGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOwotICAgIFBsYXRm
b3JtRHJhd2FibGVTbWFydFB0ciBtX2N1cnJlbnREcmF3YWJsZTsKLSAgICBPcHRpb25TZXQ8R1BV
VGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3MDQyMDQ2M2NhYWJhMTVmZTdkNzMxNjJh
YThlYTdiZDQ4MWY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVURldmljZS5o
IgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlVXNh
Z2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU3dhcENoYWluRGVzY3Jp
cHRvckJhc2UgewotICAgIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1cmVV
c2FnZUZsYWdzIHVzYWdlIHsgc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpIH07Ci19OwotCi1zdHJ1Y3QgR1BV
U3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAgICBH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yKFJlZjxHUFVEZXZpY2U+JiYgZ3B1RGV2aWNlLCBjb25zdCBH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIGRldmljZShXVEZNb3ZlKGdwdURldmljZSkp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBSZWY8R1BVRGV2aWNlPiBkZXZpY2U7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZmNkNTZmNDE4NTU4M2JmOTBjNmRhN2I0NGFjN2Y2
YzA0Yjg1MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVk
ZSAiR1BVVGV4dHVyZVVzYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwot
Ci1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVRleHR1cmUgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxH
UFVUZXh0dXJlPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4dHVyZURl
c2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4g
Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmUgKnBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpOyB9Ci0gICAgYm9vbCBpc0NvcHlT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M6OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29weURl
c3RpbmF0aW9uKTsgfQotICAgIGJvb2wgaXNPdXRwdXRBdHRhY2htZW50KCkgY29uc3QgeyByZXR1
cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2ht
ZW50KTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29u
dGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pOyB9Ci0gICAgYm9vbCBpc1NhbXBsZWQoKSBjb25zdCB7
IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQp
OyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5z
KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpOyB9Ci0gICAgdW5zaWduZWQgcGxhdGZv
cm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Vc2FnZTsgfQotCi0gICAgUmVmUHRy
PEdQVVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHZvaWQgZGVz
dHJveSgpIHsgbV9wbGF0Zm9ybVRleHR1cmUgPSBudWxscHRyOyB9Ci0KLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmLCBPcHRpb25TZXQ8
R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIg
bV9wbGF0Zm9ybVRleHR1cmU7Ci0KLSAgICBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFn
cz4gbV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNhZ2U7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNjg1YTIxOWYzMjliNjA3
MDRkM2U2NTYyM2I1YTZhYjdlZGUyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4
dHVyZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVF
eHRlbnQzRC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJHUFVU
ZXh0dXJlVXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRl
eHR1cmVEaW1lbnNpb24gewotICAgIF8xZCwKLSAgICBfMmQsCi0gICAgXzNkCi19OwotICAgIAot
c3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yIHsKLSAgICBHUFVFeHRlbnQzRCBzaXplOwotICAg
IHVuc2lnbmVkIG1pcExldmVsQ291bnQ7Ci0gICAgdW5zaWduZWQgc2FtcGxlQ291bnQ7Ci0gICAg
R1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb247Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRm9ybWF0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDBmZGExNjZiODMwMzg4ODVmYjEyMmRjNGI3ZTNh
ODZhNGE5ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFz
cyBHUFVUZXh0dXJlRm9ybWF0IHsKLSAgICBSZ2JhOHVub3JtLAotICAgIFJnYmE4dWludCwKLSAg
ICBCZ3JhOHVub3JtLAotICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4LAotICAgIEJncmE4dW5vcm1T
UkdCLAotICAgIFJnYmExNmZsb2F0LAotfTsKLQotdXNpbmcgUGxhdGZvcm1UZXh0dXJlRm9ybWF0
ID0gdW5zaWduZWQ7Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0M2U2ZmJhZTllZTQwOTUxZTg1NDhhMTZh
OGJkNzI5YWQ4OGJhZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVVc2Fn
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIEdQVVRleHR1cmVVc2FnZUZsYWdz
ID0gdW5zaWduZWQ7Ci0gICAgCi1jbGFzcyBHUFVUZXh0dXJlVXNhZ2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVUZXh0dXJlVXNhZ2U+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEZsYWdzIDog
R1BVVGV4dHVyZVVzYWdlRmxhZ3MgewotICAgICAgICBDb3B5U291cmNlICAgICAgID0gMSA8PCAw
LAotICAgICAgICBDb3B5RGVzdGluYXRpb24gID0gMSA8PCAxLAotICAgICAgICBTYW1wbGVkICAg
ICAgICAgID0gMSA8PCAyLAotICAgICAgICBTdG9yYWdlICAgICAgICAgID0gMSA8PCAzLAotICAg
ICAgICBPdXRwdXRBdHRhY2htZW50ID0gMSA8PCA0LAotICAgICAgICBNYXhpbXVtVmFsdWUgICAg
ID0gMSA8PCA1LAotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkOWE1Yzcw
NzRjNGFlNjMzZThlNjAxMmM1Y2M4NzY4YmZiNGYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21w
YXJlRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGxhdGZvcm1UZXh0dXJlRm9ybWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1h
dEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCk7Ci1QbGF0Zm9ybUNvbXBhcmVG
dW5jdGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihHUFVD
b21wYXJlRnVuY3Rpb24pOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzk3ZTU0NTQ2MTM4NmNmZmNkNDEwODc3ZGMzNjE0ZjZkZjE4Mjg3OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVVmFsaWRhdGlvbkVycm9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVWYWxpZGF0aW9uRXJyb3I+IEdQVVZhbGlkYXRpb25F
cnJvcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHUFVWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSkpOwotfQotCi1HUFVWYWxpZGF0aW9u
RXJyb3I6OkdQVVZhbGlkYXRpb25FcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgOiBt
X21lc3NhZ2UobWVzc2FnZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzIyNWFjMjA3ZmNhM2JlZGJlNjExNTVhNzU5N2FkYTU1NjczODVlMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVVmFsaWRhdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BV
VmFsaWRhdGlvbkVycm9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVWYWxpZGF0aW9u
RXJyb3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBHUFVWYWxpZGF0aW9uRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIFN0cmlu
ZyBtX21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYWM2MzVlOGU1ZDY3OTg0MjZjZTVjZmRiZmVjZGVl
MzEyOTgwNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVmVydGV4Rm9y
bWF0IHsKLSAgICBGbG9hdCwKLSAgICBGbG9hdDIsCi0gICAgRmxvYXQzLAotICAgIEZsb2F0NCwK
LX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRf
dCBvZmZzZXQ7Ci0gICAgR1BVVmVydGV4Rm9ybWF0IGZvcm1hdDsKLSAgICB1bnNpZ25lZCBzaGFk
ZXJMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNThiYTNmMjM1NDg0MWQ4YWQ0ZWU4ZjEyNzIyZjQyMDA4MjQ0ZjEw
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotZW51bSBjbGFzcyBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAgICBWZXJ0ZXgsCi0gICAgSW5z
dGFuY2UsCi19OwotCi1zdHJ1Y3QgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvciB7Ci0gICAgdWlu
dDY0X3Qgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1vZGU7Ci0gICAgVmVjdG9y
PEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+IGF0dHJpYnV0ZVNldDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4
SW5wdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjMyZmU1
OTkxNWVmNWE5MWE4YWE1YWE1OGU3NGMwNjQzOWRhNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVJbmRleEZvcm1h
dCB7Ci0gICAgVWludDE2LAotICAgIFVpbnQzMiwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0OwotICAgIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3I+PiB2ZXJ0ZXhCdWZmZXJz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlMzQ4YzIxMGZlMDFjY2ZlMDJiNjA1NmI5MGU4NmE4
MzVlN2Q0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxs
b2NhdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNy
ZWF0ZShHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEdQVUJpbmRHcm91cEFsbG9jYXRvcihlcnJvcnMpKTsKLX0KLQotR1BVQmluZEdyb3VwQWxsb2Nh
dG9yOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9ycykKLSAgICA6
IG1fZXJyb3JTY29wZXMobWFrZVJlZihlcnJvcnMpKQotewotfQotCi0jaWYgVVNFKE1FVEFMKQot
Ci1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZz
ZXRzPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRlQW5kU2V0RW5jb2RlcnMoTVRMQXJn
dW1lbnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnQsIE1UTEFy
Z3VtZW50RW5jb2RlciAqY29tcHV0ZSkKLXsKLSAgICBpZDxNVExEZXZpY2U+IGRldmljZSA9IG5p
bDsKLSAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkPE5TVUludGVnZXI+KG1fbGFzdE9m
ZnNldCk7Ci0KLSAgICBpZiAodmVydGV4KSB7Ci0gICAgICAgIGRldmljZSA9IHZlcnRleC5kZXZp
Y2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gdmVydGV4LmVuY29kZWRMZW5ndGg7Ci0gICAg
fQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBkZXZpY2UgPSBmcmFnbWVudC5kZXZpY2U7
Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gZnJhZ21lbnQuZW5jb2RlZExlbmd0aDsKLSAgICB9
Ci0gICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgZGV2aWNlID0gY29tcHV0ZS5kZXZpY2U7Ci0g
ICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gY29tcHV0ZS5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLQot
ICAgIC8vIE5vIGFyZ3VtZW50czsgbm90aGluZyB0byBiZSBkb25lLgotICAgIGlmICghZGV2aWNl
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgaWYgKGNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZs
b3dlZCgpKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVy
cm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0g
ICAgYXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnZhbHVlKCk7Ci0KLSAgICBpZiAobV9h
cmd1bWVudEJ1ZmZlciAmJiBuZXdPZmZzZXQgPiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0
aCkgewotICAgICAgICBpZiAoIXJlYWxsb2NhdGUobmV3T2Zmc2V0KSkKLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgfSBlbHNlIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAgICAv
LyBCYXNlZCBvZmYgbWltaW11bSBhbGxvY2F0aW9uIGZvciBhIHNoYXJlZC1tZW1vcnkgTVRMQnVm
ZmVyIG9uIG1hY09TLgotICAgICAgICBOU1VJbnRlZ2VyIG1pbmltdW1TaXplID0gNDA5NjsKLSAg
ICAgICAgaWYgKG1pbmltdW1TaXplIDwgbmV3T2Zmc2V0KQotICAgICAgICAgICAgbWluaW11bVNp
emUgPSBuZXdPZmZzZXQ7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgICAgIG1fYXJndW1lbnRCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UgbmV3QnVmZmVyV2l0aExl
bmd0aDptaW5pbXVtU2l6ZSBvcHRpb25zOjBdKTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgICAgIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAgICAgICAg
bV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVt
b3J5KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBB
cmd1bWVudEJ1ZmZlck9mZnNldHMgb2Zmc2V0czsKLQotICAgIC8vIE1hdGggaW4gdGhlIGZvbGxv
d2luZyBzZWN0aW9uIGlzIGd1YXJkZWQgYWdhaW5zdCBvdmVyZmxvdyBieSBuZXdPZmZzZXQgY2Fs
Y3VsYXRpb24uCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAodmVy
dGV4KSB7Ci0gICAgICAgIG9mZnNldHMudmVydGV4ID0gbV9sYXN0T2Zmc2V0OwotICAgICAgICBb
dmVydGV4IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0Oipv
ZmZzZXRzLnZlcnRleF07Ci0gICAgfQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBvZmZz
ZXRzLmZyYWdtZW50ID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBtX2xh
c3RPZmZzZXQ7Ci0gICAgICAgIFtmcmFnbWVudCBzZXRBcmd1bWVudEJ1ZmZlcjptX2FyZ3VtZW50
QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5mcmFnbWVudF07Ci0gICAgfQotICAgIGlmIChj
b21wdXRlKSB7Ci0gICAgICAgIG9mZnNldHMuY29tcHV0ZSA9ICh2ZXJ0ZXggPyB2ZXJ0ZXguZW5j
b2RlZExlbmd0aCA6IDApICsgKGZyYWdtZW50ID8gZnJhZ21lbnQuZW5jb2RlZExlbmd0aCA6IDAp
ICsgbV9sYXN0T2Zmc2V0OwotICAgICAgICBbY29tcHV0ZSBzZXRBcmd1bWVudEJ1ZmZlcjptX2Fy
Z3VtZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5jb21wdXRlXTsKLSAgICB9Ci0KLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX2xhc3RPZmZzZXQgPSBuZXdPZmZz
ZXQ7Ci0gICAgKyttX251bUJpbmRHcm91cHM7Ci0KLSAgICByZXR1cm4gb2Zmc2V0czsKLX0KLQot
I2VuZGlmIC8vIFVTRShNRVRBTCkKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2NTcsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2NTggT3B0aW1pemUgcmVhbGxvY2F0aW9uIGFuZCByZXNldCBiZWhhdmlvci4K
LWJvb2wgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpyZWFsbG9jYXRlKE5TVUludGVnZXIgbmV3T2Zm
c2V0KQotewotICAgIE1UTEJ1ZmZlciAqbmV3QnVmZmVyID0gbmlsOwotCi0gICAgYXV0byBuZXdM
ZW5ndGggPSBDaGVja2VkPE5TVUludGVnZXI+KG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3Ro
KTsKLSAgICB3aGlsZSAobmV3TGVuZ3RoIDwgbmV3T2Zmc2V0KSB7Ci0gICAgICAgIG5ld0xlbmd0
aCArPSBuZXdMZW5ndGggLyA0VTsKLQotICAgICAgICBpZiAobmV3TGVuZ3RoLmhhc092ZXJmbG93
ZWQoKSkgewotICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxOU1VJ
bnRlZ2VyPjo6bWF4KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbmV3QnVmZmVyID0gW21fYXJn
dW1lbnRCdWZmZXIuZ2V0KCkuZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6bmV3TGVuZ3RoLnZh
bHVlKCkgb3B0aW9uczowXTsKLSAgICBtZW1jcHkobmV3QnVmZmVyLmNvbnRlbnRzLCBtX2FyZ3Vt
ZW50QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0aCk7
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW5ld0J1ZmZlcikg
ewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRl
cjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9h
cmd1bWVudEJ1ZmZlciA9IGFkb3B0TlMobmV3QnVmZmVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnRyeVJlc2V0KCkKLXsKLSAgICAtLW1fbnVt
QmluZEdyb3VwczsKLSAgICAKLSAgICBBU1NFUlQobV9udW1CaW5kR3JvdXBzID4gLTEpOwotCi0g
ICAgaWYgKCFtX251bUJpbmRHcm91cHMpIHsKLSAgICAgICAgbV9hcmd1bWVudEJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgICAgIG1fbGFzdE9mZnNldCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91
dE1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJpbmRHcm91cExheW91dE1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
NzlhY2Y3ODZiYmJlZTdhOTFhMDdhMzQ2ZTdmMDFlNGUxYzAwZGZlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBv
cnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBN
VExEYXRhVHlwZSBNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBlKEdQVUJpbmRpbmdUeXBlIHR5cGUp
Ci17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U2FtcGxl
cjoKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlU2FtcGxlcjsKLSAgICBjYXNlIEdQVUJpbmRp
bmdUeXBlOjpTYW1wbGVkVGV4dHVyZToKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlVGV4dHVy
ZTsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVmZmVyOgotICAgIGNhc2UgR1BV
QmluZGluZ1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgIGNhc2UgR1BVQmluZGluZ1R5
cGU6OlN0b3JhZ2VCdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0b3Jh
Z2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBNVExEYXRhVHlwZVBvaW50ZXI7Ci0gICAgfQotfQot
Ci11c2luZyBBcmd1bWVudEFycmF5ID0gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE1UTEFyZ3Vt
ZW50RGVzY3JpcHRvciAqPj47Ci1zdGF0aWMgdm9pZCBhcHBlbmRBcmd1bWVudFRvQXJyYXkoQXJn
dW1lbnRBcnJheSYgYXJyYXksIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IGFyZ3Vt
ZW50KQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghYXJyYXkp
Ci0gICAgICAgIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6YXJndW1lbnQuZ2V0KCksIG5pbF0pOwotICAgIGVsc2UKLSAgICAgICAgW2FycmF5
IGFkZE9iamVjdDphcmd1bWVudC5nZXQoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdHJ5Q3JlYXRlTXRs
QXJndW1lbnRFbmNvZGVyKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBBcmd1bWVudEFycmF5IGFy
cmF5KQotewotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IGVuY29kZXI7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBlbmNvZGVyID0gYWRvcHROUyhbZGV2
aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czphcnJh
eS5nZXQoKV0pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBpZiAoIWVuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRl
KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnRFbmNvZGVyISIpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY29kZXI7Ci19OwotCi1zdGF0aWMgUmV0
YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFU
eXBlIGRhdGFUeXBlLCBOU1VJbnRlZ2VyIGluZGV4KQotewotICAgIFJldGFpblB0cjxNVExBcmd1
bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIG10bEFyZ3VtZW50ID0gYWRvcHROUyhbTVRMQXJndW1lbnREZXNjcmlwdG9yIG5l
d10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzg0IFRoaXMgbmVlZHMgdG8g
c2V0IHRoZSAidGV4dHVyZVR5cGUiIGZpZWxkCi0gICAgW210bEFyZ3VtZW50IHNldERhdGFUeXBl
OmRhdGFUeXBlXTsKLSAgICBbbXRsQXJndW1lbnQgc2V0SW5kZXg6aW5kZXhdOwotICAgIHJldHVy
biBtdGxBcmd1bWVudDsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gR1BVQmluZEdy
b3VwTGF5b3V0Ojp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2Uu
cGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5
b3V0Ojp0cnlDcmVhdGUoKTogSW52YWxpZCBNVExEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIEFyZ3VtZW50QXJyYXkgdmVydGV4QXJncywgZnJhZ21lbnRB
cmdzLCBjb21wdXRlQXJncywgdmVydGV4TGVuZ3RocywgZnJhZ21lbnRMZW5ndGhzLCBjb21wdXRl
TGVuZ3RoczsKLSAgICBCaW5kaW5nc01hcFR5cGUgYmluZGluZ3NNYXA7Ci0KLSAgICB1bnNpZ25l
ZCBpbnRlcm5hbE5hbWUgPSAwOwotICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoQmFzZSA9IGRl
c2NyaXB0b3IuYmluZGluZ3Muc2l6ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmluZGluZyA6
IGRlc2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
ZXh0cmFJbmRleDsKLSAgICAgICAgYXV0byBpbnRlcm5hbERldGFpbHMgPSAoWyZdKCkgLT4gR1BV
QmluZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRhaWxzIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpV
bmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0
aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpVbmlm
b3JtQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5
cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBp
bnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3Vw
TGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAg
ICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAgICAgICAgICAgIHJldHVybiBH
UFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5k
aW5nVHlwZTo6U2FtcGxlZFRleHR1cmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRH
cm91cExheW91dDo6U2FtcGxlZFRleHR1cmUgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5k
aW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0gaW50
ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExh
eW91dDo6U3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVChiaW5kaW5nLnR5cGUgPT0gR1BVQmluZGluZ1R5cGU6
OkR5bmFtaWNTdG9yYWdlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0gaW50
ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExh
eW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIgeyAqZXh0cmFJbmRleCB9OwotICAgICAgICAgICAg
fQotICAgICAgICB9KSgpOwotICAgICAgICBCaW5kaW5nIGJpbmRpbmdEZXRhaWxzID0geyBiaW5k
aW5nLCBpbnRlcm5hbE5hbWUrKywgV1RGTW92ZShpbnRlcm5hbERldGFpbHMpIH07Ci0gICAgICAg
IGlmICghYmluZGluZ3NNYXAuYWRkKGJpbmRpbmcuYmluZGluZywgYmluZGluZ0RldGFpbHMpKSB7
Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUo
KTogRHVwbGljYXRlIGJpbmRpbmcgJXUgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnREZXNjcmlwdG9yPiBtdGxB
cmd1bWVudCA9IGFyZ3VtZW50RGVzY3JpcHRvcihNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBlKGJp
bmRpbmcudHlwZSksIGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZSk7Ci0KLSAgICAgICAgaWYg
KCFtdGxBcmd1bWVudCkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExh
eW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9y
IGZvciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYWRkSW5kaWNlcyA9IFsmXShBcmd1
bWVudEFycmF5JiBhcmdzLCBBcmd1bWVudEFycmF5JiBsZW5ndGhzKSAtPiBib29sIHsKLSAgICAg
ICAgICAgIGFwcGVuZEFyZ3VtZW50VG9BcnJheShhcmdzLCBtdGxBcmd1bWVudCk7Ci0gICAgICAg
ICAgICBpZiAoZXh0cmFJbmRleCkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxNVExBcmd1
bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFU
eXBlVUludDIsICpleHRyYUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIW10bEFyZ3VtZW50
KSB7Ci0gICAgICAgICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6
OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTEFyZ3VtZW50RGVzY3JpcHRvciBmb3Ig
YmluZGluZyAldSEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFwcGVuZEFyZ3Vt
ZW50VG9BcnJheShsZW5ndGhzLCBtdGxBcmd1bWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2li
aWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OlZlcnRleCkgJiYgIWFkZEluZGljZXModmVy
dGV4QXJncywgdmVydGV4TGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZy
YWdtZW50KSAmJiAhYWRkSW5kaWNlcyhmcmFnbWVudEFyZ3MsIGZyYWdtZW50TGVuZ3RocykpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxp
dHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUpICYmICFhZGRJbmRpY2VzKGNvbXB1
dGVBcmdzLCBjb21wdXRlTGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbdmVydGV4QXJncyBh
ZGRPYmplY3RzRnJvbUFycmF5OnZlcnRleExlbmd0aHMuZ2V0KCldOwotICAgIFtmcmFnbWVudEFy
Z3MgYWRkT2JqZWN0c0Zyb21BcnJheTpmcmFnbWVudExlbmd0aHMuZ2V0KCldOwotICAgIFtjb21w
dXRlQXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmNvbXB1dGVMZW5ndGhzLmdldCgpXTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNv
ZGVyPiB2ZXJ0ZXgsIGZyYWdtZW50LCBjb21wdXRlOwotCi0gICAgaWYgKHZlcnRleEFyZ3MgJiYg
ISh2ZXJ0ZXggPSB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoZGV2aWNlLCB2ZXJ0ZXhBcmdz
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChmcmFnbWVudEFyZ3MgJiYgIShm
cmFnbWVudCA9IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2RlcihkZXZpY2UsIGZyYWdtZW50QXJn
cykpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoY29tcHV0ZUFyZ3MgJiYgIShj
b21wdXRlID0gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGRldmljZSwgY29tcHV0ZUFyZ3Mp
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQ
VUJpbmRHcm91cExheW91dChXVEZNb3ZlKGJpbmRpbmdzTWFwKSwgV1RGTW92ZSh2ZXJ0ZXgpLCBX
VEZNb3ZlKGZyYWdtZW50KSwgV1RGTW92ZShjb21wdXRlKSkpOwotfQotCi1HUFVCaW5kR3JvdXBM
YXlvdXQ6OkdQVUJpbmRHcm91cExheW91dChCaW5kaW5nc01hcFR5cGUmJiBiaW5kaW5nc01hcCwg
UmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiB2ZXJ0ZXgsIFJldGFpblB0cjxNVExBcmd1
bWVudEVuY29kZXI+JiYgZnJhZ21lbnQsIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+JiYg
Y29tcHV0ZSkKLSAgICA6IG1fdmVydGV4RW5jb2RlcihXVEZNb3ZlKHZlcnRleCkpCi0gICAgLCBt
X2ZyYWdtZW50RW5jb2RlcihXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICAsIG1fY29tcHV0ZUVuY29k
ZXIoV1RGTW92ZShjb21wdXRlKSkKLSAgICAsIG1fYmluZGluZ3NNYXAoV1RGTW92ZShiaW5kaW5n
c01hcCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEwNjk4YjE5YWVjYmYyZTk0OTgzOGU4YzYxZGRkZDI5ZjA1OWUxYmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lt
cG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBCaW5k
aW5nLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVC
aW5kR3JvdXBMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLSNpbXBvcnQgIkxvZ2dp
bmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckJpbmRpbmc+
IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBidWZmZXIgdHlwZSEiLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICBh
dXRvJiBidWZmZXJCaW5kaW5nID0gV1RGOjpnZXQ8R1BVQnVmZmVyQmluZGluZz4ocmVzb3VyY2Up
OwotICAgIGlmICghYnVmZmVyQmluZGluZy5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTEJ1ZmZlciBpbiBHUFVCdWZmZXJCaW5k
aW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLnNpemUpIHx8
IGJ1ZmZlckJpbmRpbmcuc2l6ZSA+IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXJCaW5kaW5nIHNpemUgaXMgdG9v
IGxhcmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNv
bWUgcGxhdGZvcm1zLgotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5k
aW5nLm9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBCdWZmZXIgb2Zmc2V0IGlz
IHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIH0KLSAgICByZXR1cm4gR1BVQnVmZmVyQmluZGluZyB7IGJ1ZmZlckJpbmRpbmcuYnVm
ZmVyLmNvcHlSZWYoKSwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9
OwotfQotCi1zdGF0aWMgdm9pZCBzZXRCdWZmZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVy
ICphcmd1bWVudEVuY29kZXIsIGNvbnN0IEdQVUJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRpbmcs
IHVuc2lnbmVkIG5hbWUsIHVuc2lnbmVkIGxlbmd0aE5hbWUpCi17Ci0gICAgQVNTRVJUKGFyZ3Vt
ZW50RW5jb2RlciAmJiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBCb3VuZHMgY2hlY2sgd2hl
biBjb252ZXJ0aW5nIEdQVUJ1ZmZlckJpbmRpbmcgZW5zdXJlcyB0aGF0IE5TVUludGVnZXIgY2Fz
dCBvZiB1aW50NjRfdCBvZmZzZXQgaXMgc2FmZS4KLSAgICBbYXJndW1lbnRFbmNvZGVyIHNldEJ1
ZmZlcjpidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSBvZmZzZXQ6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZzZXQpIGF0SW5kZXg6bmFtZV07Ci0g
ICAgdm9pZCogbGVuZ3RoUG9pbnRlciA9IFthcmd1bWVudEVuY29kZXIgY29uc3RhbnREYXRhQXRJ
bmRleDpsZW5ndGhOYW1lXTsKLSAgICBtZW1jcHkobGVuZ3RoUG9pbnRlciwgJmJ1ZmZlckJpbmRp
bmcuc2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotfQotICAgIAotc3RhdGljIE1UTFNhbXBsZXJTdGF0ZSAqdHJ5R2V0UmVzb3VyY2VBc010bFNh
bXBsZXIoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShm
dW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
Zjxjb25zdCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogUmVzb3VyY2UgaXMgbm90IGEgR1BVU2FtcGxlciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byBzYW1wbGVyU3RhdGUgPSBXVEY6Omdl
dDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4+KHJlc291cmNlKS0+cGxhdGZvcm1TYW1wbGVyKCk7Ci0g
ICAgaWYgKCFzYW1wbGVyU3RhdGUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlk
IE1UTFNhbXBsZXJTdGF0ZSBpbiBHUFVTYW1wbGVyIGJpbmRpbmchIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBzYW1wbGVyU3RhdGU7
Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFNhbXBsZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVy
ICphcmd1bWVudEVuY29kZXIsIE1UTFNhbXBsZXJTdGF0ZSAqc2FtcGxlciwgdW5zaWduZWQgaW5k
ZXgpCi17Ci0gICAgQVNTRVJUKGFyZ3VtZW50RW5jb2RlciAmJiBzYW1wbGVyKTsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFthcmd1bWVudEVuY29kZXIgc2V0U2FtcGxl
clN0YXRlOnNhbXBsZXIgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotfQotCi1zdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUdldFJlc291cmNlQXNUZXh0
dXJlKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0
IGZ1bmN0aW9uTmFtZSkKLSAgICB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPEdQVVRleHR1cmU+PihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBS
ZXNvdXJjZSBpcyBub3QgYSBHUFVUZXh0dXJlVmlldyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byYgdGV4dHVyZVJlZiA9IFdURjo6Z2V0
PFJlZjxHUFVUZXh0dXJlPj4ocmVzb3VyY2UpOwotICAgIGlmICghdGV4dHVyZVJlZi0+cGxhdGZv
cm1UZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTFRleHR1
cmUgaW4gR1BVVGV4dHVyZVZpZXcgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHR1cmVSZWYuY29weVJlZigpOwot
fQotCi1zdGF0aWMgdm9pZCBzZXRUZXh0dXJlT25FbmNvZGVyKE1UTEFyZ3VtZW50RW5jb2RlciAq
YXJndW1lbnRFbmNvZGVyLCBNVExUZXh0dXJlICp0ZXh0dXJlLCB1bnNpZ25lZCBpbmRleCkKLXsK
LSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHRleHR1cmUpOwotCi0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRleHR1
cmUgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1S
ZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShjb25zdCBHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9j
YXRvcikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVQmluZEdy
b3VwOjp0cnlDcmVhdGUoKSI7Ci0gICAgCi0gICAgTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXhF
bmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPnZlcnRleEVuY29kZXIoKTsKLSAgICBNVExBcmd1
bWVudEVuY29kZXIgKmZyYWdtZW50RW5jb2RlciA9IGRlc2NyaXB0b3IubGF5b3V0LT5mcmFnbWVu
dEVuY29kZXIoKTsKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyID0gZGVz
Y3JpcHRvci5sYXlvdXQtPmNvbXB1dGVFbmNvZGVyKCk7Ci0KLSAgICBhdXRvIG9mZnNldHMgPSBh
bGxvY2F0b3IuYWxsb2NhdGVBbmRTZXRFbmNvZGVycyh2ZXJ0ZXhFbmNvZGVyLCBmcmFnbWVudEVu
Y29kZXIsIGNvbXB1dGVFbmNvZGVyKTsKLSAgICBpZiAoIW9mZnNldHMpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+IGJvdW5kQnVmZmVy
czsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gYm91bmRUZXh0dXJlczsKLQotICAgIC8v
IFNldCBlYWNoIHJlc291cmNlIG9uIGVhY2ggTVRMQXJndW1lbnRFbmNvZGVyIGl0IHNob3VsZCBi
ZSB2aXNpYmxlIG9uLgotICAgIGNvbnN0IGF1dG8mIGxheW91dEJpbmRpbmdzTWFwID0gZGVzY3Jp
cHRvci5sYXlvdXQtPmJpbmRpbmdzTWFwKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJj
ZUJpbmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0gICAgICAgIGF1dG8gaW5kZXggPSBy
ZXNvdXJjZUJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgYXV0byBsYXlvdXRJdGVyYXRvciA9IGxh
eW91dEJpbmRpbmdzTWFwLmZpbmQoaW5kZXgpOwotICAgICAgICBpZiAobGF5b3V0SXRlcmF0b3Ig
PT0gbGF5b3V0QmluZGluZ3NNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIl
czogR1BVQmluZEdyb3VwQmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0
ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLSAgICAgICAgYXV0byBsYXlvdXRCaW5kaW5nID0gbGF5b3V0SXRlcmF0b3ItPnZh
bHVlOwotICAgICAgICBpZiAobGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcudmlzaWJpbGl0
eSA9PSBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6Ok5vbmUpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBib29sIGlzRm9yVmVydGV4ID0gbGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRp
bmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4OwotICAgICAgICBi
b29sIGlzRm9yRnJhZ21lbnQgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmls
aXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpGcmFnbWVudDsKLSAgICAgICAgYm9vbCBpc0Zv
ckNvbXB1dGUgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYgR1BV
U2hhZGVyU3RhZ2U6OkZsYWdzOjpDb21wdXRlOwotCi0gICAgICAgIGlmIChpc0ZvclZlcnRleCAm
JiAhdmVydGV4RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2ZXJ0
ZXggYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUs
IGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChpc0ZvckZyYWdtZW50ICYmICFmcmFnbWVudEVuY29kZXIpIHsKLSAgICAgICAgICAgIExP
RyhXZWJHUFUsICIlczogTm8gZnJhZ21lbnQgYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmlu
ZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZvckNvbXB1dGUgJiYgIWNvbXB1dGVFbmNv
ZGVyKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIGNvbXB1dGUgYXJndW1lbnQg
ZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBoYW5k
bGVCdWZmZXIgPSBbJl0odW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyUmVzb3VyY2UgPSB0cnlHZXRSZXNvdXJjZUFzQnVmZmVyQmlu
ZGluZyhyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAg
ICBpZiAoIWJ1ZmZlclJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRCdWZmZXJPbkVu
Y29kZXIodmVydGV4RW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRCaW5kaW5nLmludGVy
bmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdt
ZW50KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIs
ICpidWZmZXJSZXNvdXJjZSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUsIGludGVybmFsTGVu
Z3RoTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAg
IHNldEJ1ZmZlck9uRW5jb2Rlcihjb21wdXRlRW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlv
dXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAg
IGJvdW5kQnVmZmVycy5hZGRWb2lkKFdURk1vdmUoYnVmZmVyUmVzb3VyY2UtPmJ1ZmZlcikpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBzdWNj
ZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6
OlVuaWZvcm1CdWZmZXImIHVuaWZvcm1CdWZmZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0
dXJuIGhhbmRsZUJ1ZmZlcih1bmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAg
ICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyJiBkeW5h
bWljVW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlQnVm
ZmVyKGR5bmFtaWNVbmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAgIH0s
IFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXImKSAtPiBib29sIHsKLSAgICAgICAgICAg
IGF1dG8gc2FtcGxlclN0YXRlID0gdHJ5R2V0UmVzb3VyY2VBc010bFNhbXBsZXIocmVzb3VyY2VC
aW5kaW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCFzYW1wbGVy
U3RhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlz
Rm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIodmVydGV4RW5j
b2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAgICAg
ICAgICBpZiAoaXNGb3JGcmFnbWVudCkKLSAgICAgICAgICAgICAgICBzZXRTYW1wbGVyT25FbmNv
ZGVyKGZyYWdtZW50RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFs
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNl
dFNhbXBsZXJPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHNhbXBsZXJTdGF0ZSwgbGF5b3V0Qmlu
ZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0s
IFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlJikgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICBhdXRvIHRleHR1cmVSZXNvdXJjZSA9IHRyeUdldFJlc291cmNlQXNUZXh0dXJlKHJl
c291cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlmICgh
dGV4dHVyZVJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRUZXh0dXJlT25FbmNvZGVy
KHZlcnRleEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxheW91
dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50KQot
ICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIoZnJhZ21lbnRFbmNvZGVyLCB0ZXh0
dXJlUmVzb3VyY2UtPnBsYXRmb3JtVGV4dHVyZSgpLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNldFRl
eHR1cmVPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1U
ZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGJvdW5k
VGV4dHVyZXMuYWRkVm9pZCh0ZXh0dXJlUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U3RvcmFnZUJ1ZmZlciYgc3RvcmFnZUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1
cm4gaGFuZGxlQnVmZmVyKHN0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAg
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXImIGR5bmFt
aWNTdG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZm
ZXIoZHluYW1pY1N0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSks
IGxheW91dEJpbmRpbmcuaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7Ci0gICAgICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdQVUJpbmRHcm91cChXVEZNb3ZlKCpvZmZzZXRzKSwgYWxsb2NhdG9y
LCBXVEZNb3ZlKGJvdW5kQnVmZmVycyksIFdURk1vdmUoYm91bmRUZXh0dXJlcykpKTsKLX0KLSAg
ICAKLUdQVUJpbmRHcm91cDo6R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJn
dW1lbnRCdWZmZXJPZmZzZXRzJiYgb2Zmc2V0cywgR1BVQmluZEdyb3VwQWxsb2NhdG9yJiBhbGxv
Y2F0b3IsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYgYnVmZmVycywgSGFzaFNldDxSZWY8R1BV
VGV4dHVyZT4+JiYgdGV4dHVyZXMpCi0gICAgOiBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyhXVEZN
b3ZlKG9mZnNldHMpKQotICAgICwgbV9hbGxvY2F0b3IobWFrZVJlZihhbGxvY2F0b3IpKQotICAg
ICwgbV9ib3VuZEJ1ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkKLSAgICAsIG1fYm91bmRUZXh0dXJl
cyhXVEZNb3ZlKHRleHR1cmVzKSkKLXsKLX0KLQotR1BVQmluZEdyb3VwOjp+R1BVQmluZEdyb3Vw
KCkKLXsKLSAgICBtX2FsbG9jYXRvci0+dHJ5UmVzZXQoKTsKLX0KLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0
YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDA1ZGE4YjEzMDNiZTkzYmYw
ZDQ5Mjc4YjBkY2Y5YzZhMjg0OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Ci0j
aW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlYWRP
bmx5RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB7IEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4LCBHUFVCdWZm
ZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNvdXJj
ZSB9OwotCi0KLWJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZh
bGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
ICh1c2FnZS5jb250YWluc0FsbCh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQ
VUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSkgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFu
ZCBNQVBfV1JJVEUgdXNhZ2UhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVh
dGUoR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRz
IG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIgc2l6ZSA9IDA7Ci0gICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoZGVzY3JpcHRvci5zaXplLCBzaXplKSkgewotICAgICAgICBlcnJv
clNjb3Blcy5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIHVzYWdlID0gT3B0aW9u
U2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0g
ICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZSwgdXNhZ2UsIGVycm9yU2NvcGVzKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBjb3B5QnVmZmVyVG9CdWZmZXIgY2Fs
bHMgcmVxdWlyZSA0LWJ5dGUgYWxpZ25tZW50LiAiVW5tYXBwaW5nIiBhIG1hcHBlZC1vbi1jcmVh
dGlvbiBHUFVCdWZmZXIKLSAgICAvLyB0aGF0IGlzIG90aGVyd2lzZSB1bm1hcHBhYmxlIHJlcXVp
cmVzIHN1Y2ggYSBjb3B5IHRvIHVwbG9hZCBkYXRhLgotICAgIGlmIChpc01hcHBlZCA9PSBHUFVC
dWZmZXJNYXBwZWRPcHRpb246OklzTWFwcGVkCi0gICAgICAgICYmICF1c2FnZS5jb250YWluc0Fu
eSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6TWFwUmVhZCB9KQotICAgICAgICAmJiBkZXNjcmlwdG9yLnNpemUgJSA0KSB7Ci0gICAgICAg
IGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGF0YSBtdXN0IGJlIGFsaWduZWQg
dG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICAvLyBGSVhNRTogTWV0YWwgYmVzdCBwcmFjdGljZXM6IFJlYWQtb25seSBvbmUt
dGltZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBzaG91bGQgbm90IGFsbG9jYXRlIGEgTVRMQnVm
ZmVyIGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5kRW5jb2RlciBzZXQqQnl0ZXNdIGNhbGxzIGlu
c3RlYWQuCi0KLSAgICBNVExSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zID0gTVRMUmVz
b3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7Ci0KLSAgICAvLyBNYXBwYWJsZSBidWZmZXJz
IHVzZSBzaGFyZWQgc3RvcmFnZSBhbGxvY2F0aW9uLgotICAgIHJlc291cmNlT3B0aW9ucyB8PSB1
c2FnZS5jb250YWluc0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1
ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSA/IE1UTFJlc291cmNlU3RvcmFnZU1vZGVTaGFy
ZWQgOiBNVExSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZTsKLQotICAgIFJldGFpblB0cjxNVExC
dWZmZXI+IG10bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgbXRsQnVmZmVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QnVmZmVy
V2l0aExlbmd0aDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkZXNjcmlwdG9yLnNpemUpIG9wdGlv
bnM6cmVzb3VyY2VPcHRpb25zXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBpZiAoIW10bEJ1ZmZlcikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9y
KCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVCdWZmZXIoV1RGTW92ZSht
dGxCdWZmZXIpLCBkZXZpY2UsIHNpemUsIHVzYWdlLCBpc01hcHBlZCkpOwotfQotCi1HUFVCdWZm
ZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRGV2aWNlJiBk
ZXZpY2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2Fn
ZSwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkKQotICAgIDogbV9wbGF0Zm9ybUJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCi0gICAgLCBtX2RldmljZShtYWtlUmVmKGRldmljZSkpCi0gICAg
LCBtX2J5dGVMZW5ndGgoc2l6ZSkKLSAgICAsIG1fdXNhZ2UodXNhZ2UpCi0gICAgLCBtX2lzTWFw
cGVkRnJvbUNyZWF0aW9uKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBw
ZWQpCi17Ci0gICAgbV9wbGF0Zm9ybVVzYWdlID0gTVRMUmVzb3VyY2VVc2FnZVJlYWQ7Ci0gICAg
aWYgKGlzU3RvcmFnZSgpKQotICAgICAgICBtX3BsYXRmb3JtVXNhZ2UgfD0gTVRMUmVzb3VyY2VV
c2FnZVdyaXRlOwotfQotCi1HUFVCdWZmZXI6On5HUFVCdWZmZXIoKQotewotICAgIGRlc3Ryb3ko
bnVsbHB0cik7Ci19Ci0KLWJvb2wgR1BVQnVmZmVyOjppc1JlYWRPbmx5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV91c2FnZS5jb250YWluc0FueShyZWFkT25seUZsYWdzKTsKLX0KLQotR1BVQnVm
ZmVyOjpTdGF0ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxhdGZv
cm1CdWZmZXIpCi0gICAgICAgIHJldHVybiBTdGF0ZTo6RGVzdHJveWVkOwotICAgIGlmIChtX2lz
TWFwcGVkRnJvbUNyZWF0aW9uIHx8IG1fbWFwcGluZ0NhbGxiYWNrKQotICAgICAgICByZXR1cm4g
U3RhdGU6Ok1hcHBlZDsKLQotICAgIHJldHVybiBTdGF0ZTo6VW5tYXBwZWQ7Ci19Ci0KLUpTQzo6
QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6bWFwT25DcmVhdGlvbigpCi17Ci0gICAgQVNTRVJUKG1f
aXNNYXBwZWRGcm9tQ3JlYXRpb24pOwotICAgIHJldHVybiBzdGFnaW5nQnVmZmVyRm9yV3JpdGUo
KTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLXZvaWQgR1BVQnVmZmVyOjpjb21tYW5kQnVmZmVyQ29t
bWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICArK21fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnM7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBNYWtlIHN1cmUgfHRoaXN8IG9u
bHkgZ2V0cyByZWYnZCAvIGRlcmVmJ2Qgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNlIGl0IGlzIG5v
dCBUaHJlYWRTYWZlUmVmQ291bnRlZC4KLSAgICBbY29tbWFuZEJ1ZmZlciBhZGRDb21wbGV0ZWRI
YW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XShpZDxNVExDb21tYW5kQnVmZmVyPikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAg
ICAgICAgICBjb21tYW5kQnVmZmVyQ29tcGxldGVkKCk7Ci0gICAgICAgIH0pOwotICAgIH0pLmdl
dCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVQnVmZmVy
Ojpjb21tYW5kQnVmZmVyQ29tcGxldGVkKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEFTU0VSVChtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzKTsKLQotICAgIGlmICht
X251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzID09IDEgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6TWFw
cGVkKQotICAgICAgICBydW5NYXBwaW5nQ2FsbGJhY2soKTsKLQotICAgIC0tbV9udW1TY2hlZHVs
ZWRDb21tYW5kQnVmZmVyczsKLX0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLXZvaWQgR1BVQnVm
ZmVyOjpyZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBjYWxsYmFjaywg
Ym9vbCBpc1JlYWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICAvLyBSZWpl
Y3QgaWYgcmVxdWVzdCBpcyBpbnZhbGlkLgotICAgIGlmIChpc1JlYWQgJiYgIWlzTWFwUmVhZGFi
bGUoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFs
aWQgb3BlcmF0aW9uISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoIWlzUmVhZCAmJiAhaXNNYXBXcml0ZWFibGUoKSkgewotICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9u
ISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVCghbV9tYXBwaW5nQ2FsbGJhY2sgJiYgIW1fbWFwcGluZ0NhbGxiYWNrVGFz
ay5pc1BlbmRpbmcoKSk7Ci0KLSAgICAvLyBBbiBleGlzdGluZyBjYWxsYmFjayBtZWFucyB0aGlz
IGJ1ZmZlciBpcyBpbiB0aGUgbWFwcGVkIHN0YXRlLgotICAgIG1fbWFwcGluZ0NhbGxiYWNrID0g
UGVuZGluZ01hcHBpbmdDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAg
IC8vIElmIEdQVSBpcyBub3QgdXNpbmcgdGhpcyBidWZmZXIsIHJ1biB0aGUgY2FsbGJhY2sgQVNB
UC4KLSAgICBpZiAoIW1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMpIHsKLSAgICAgICAgbV9t
YXBwaW5nQ2FsbGJhY2tUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJ1bk1hcHBpbmdDYWxsYmFj
aygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpydW5NYXBwaW5n
Q2FsbGJhY2soKQotewotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykKLSAgICAgICAgbV9tYXBw
aW5nQ2FsbGJhY2stPmNhbGxiYWNrKGlzTWFwUmVhZCgpID8gc3RhZ2luZ0J1ZmZlckZvclJlYWQo
KSA6IHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpKTsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BV
QnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVhZCgpCi17Ci0gICAgaWYgKCFtX3N0YWdpbmdCdWZm
ZXIpCi0gICAgICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9wbGF0
Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1lbWNweShtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9wbGF0Zm9ybUJ1ZmZlci5nZXQo
KS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLQotICAgIHJldHVybiBtX3N0YWdpbmdCdWZmZXIu
Z2V0KCk7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6c3RhZ2luZ0J1ZmZlckZv
cldyaXRlKCkKLXsKLSAgICBtX3N0YWdpbmdCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDEs
IG1fYnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0KLQot
dm9pZCBHUFVCdWZmZXI6OmNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMqIGVy
cm9yU2NvcGVzKQotewotICAgIE1UTENvbW1hbmRRdWV1ZSAqcXVldWU7Ci0gICAgaWYgKCFtX2Rl
dmljZS0+dHJ5R2V0UXVldWUoKSB8fCAhKHF1ZXVlID0gbV9kZXZpY2UtPnRyeUdldFF1ZXVlKCkt
PnBsYXRmb3JtUXVldWUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxNVExC
dWZmZXI+IHN0YWdpbmdNdGxCdWZmZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICAvLyBHUFVCdWZmZXIgY3JlYXRpb24gdmFsaWRhdGlvbiBlbnN1cmVzIG1fYnl0ZVNp
emUgZml0cyBpbiBOU1VJbnRlZ2VyLgotICAgIHN0YWdpbmdNdGxCdWZmZXIgPSBhZG9wdE5TKFtt
X2RldmljZS0+cGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoQnl0ZXM6bV9zdGFnaW5nQnVm
ZmVyLT5kYXRhKCkgbGVuZ3RoOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0aCkg
b3B0aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZV0pOwotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc3RhZ2luZ010bEJ1ZmZlciAmJiBlcnJv
clNjb3BlcykgewotICAgICAgICBlcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJy
b3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBjb21tYW5kQnVmZmVyID0gcmV0
YWluUHRyKFtxdWV1ZSBjb21tYW5kQnVmZmVyXSk7Ci0gICAgYXV0byBibGl0RW5jb2RlciA9IHJl
dGFpblB0cihbY29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29kZXJdKTsKLQotICAgIFtibGl0
RW5jb2RlciBjb3B5RnJvbUJ1ZmZlcjpzdGFnaW5nTXRsQnVmZmVyLmdldCgpIHNvdXJjZU9mZnNl
dDowIHRvQnVmZmVyOm1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkgZGVzdGluYXRpb25PZmZzZXQ6MCBz
aXplOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0aCldOwotICAgIFtibGl0RW5j
b2RlciBlbmRFbmNvZGluZ107Ci0gICAgW2NvbW1hbmRCdWZmZXIgY29tbWl0XTsKLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OnVubWFwKEdQVUVy
cm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIW1faXNNYXBwZWRGcm9tQ3JlYXRp
b24gJiYgIWlzTWFwcGFibGUoKSAmJiBlcnJvclNjb3BlcykgewotICAgICAgICBlcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogR1BVQnVmZmVyIGlz
IG5vdCBtYXBwYWJsZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3N0
YWdpbmdCdWZmZXIpIHsKLSAgICAgICAgaWYgKGlzTWFwcGFibGUoKSkgewotICAgICAgICAgICAg
Ly8gTUFQX1dSSVRFIGFuZCBNQVBfUkVBRCBidWZmZXJzIGhhdmUgc2hhcmVkLCBDUFUtYWNjZXNz
aWJsZSBzdG9yYWdlLgotICAgICAgICAgICAgQVNTRVJUKG1fcGxhdGZvcm1CdWZmZXIgJiYgbV9w
bGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cyk7Ci0gICAgICAgICAgICBtZW1jcHkobV9wbGF0
Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9zdGFnaW5nQnVmZmVyLT5kYXRhKCksIG1fYnl0
ZUxlbmd0aCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9pc01hcHBlZEZyb21DcmVhdGlvbikKLSAg
ICAgICAgICAgIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoZXJyb3JTY29wZXMpOwotCi0gICAgICAg
IG1faXNNYXBwZWRGcm9tQ3JlYXRpb24gPSBmYWxzZTsKLSAgICAgICAgbV9zdGFnaW5nQnVmZmVy
ID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAobV9tYXBwaW5nQ2FsbGJhY2spIHsKLSAgICAg
ICAgbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmNhbmNlbFRhc2soKTsKLSAgICAgICAgbV9tYXBwaW5n
Q2FsbGJhY2stPmNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFjayA9
IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIEdQVUJ1ZmZlcjo6ZGVzdHJveShHUFVFcnJvclNj
b3BlcyogZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6Ok1hcHBlZCkK
LSAgICAgICAgdW5tYXAoZXJyb3JTY29wZXMpOwotCi0gICAgbV9wbGF0Zm9ybUJ1ZmZlciA9IG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWUxZGNjNmIxNmQwMjM0YjNlYzRkMWMzMzA3ZGM4ZGM1ZWFlMWMx
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFs
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXh0ZW50M0QuaCIK
LSNpbXBvcnQgIkdQVVF1ZXVlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9y
dCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
UHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTogSW52YWxp
ZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1
dG8gZ3B1Q29tbWFuZFF1ZXVlID0gZGV2aWNlLnRyeUdldFF1ZXVlKCk7Ci0gICAgaWYgKCFncHVD
b21tYW5kUXVldWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBtdGxRdWV1
ZSA9IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1ZSgpOwotCi0gICAgUmV0YWluUHRyPE1U
TENvbW1hbmRCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgYnVmZmVyID0gW210bFF1ZXVlIGNvbW1hbmRCdWZmZXJdOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENv
bW1hbmRCdWZmZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0K
LQotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcihSZXRhaW5QdHI8TVRMQ29tbWFu
ZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCi17Ci19Ci0KLUdQVUNvbW1hbmRCdWZmZXI6On5HUFVDb21tYW5kQnVmZmVyKCkK
LXsKLSAgICBlbmRCbGl0RW5jb2RpbmcoKTsKLX0KLQotTVRMQmxpdENvbW1hbmRFbmNvZGVyICpH
UFVDb21tYW5kQnVmZmVyOjpibGl0RW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmxp
dEVuY29kZXIgPyBtX2JsaXRFbmNvZGVyLmdldCgpIDogKG1fYmxpdEVuY29kZXIgPSBbbV9wbGF0
Zm9ybUNvbW1hbmRCdWZmZXIgYmxpdENvbW1hbmRFbmNvZGVyXSkuZ2V0KCk7Ci19Ci0KLXZvaWQg
R1BVQ29tbWFuZEJ1ZmZlcjo6ZW5kQmxpdEVuY29kaW5nKCkKLXsKLSAgICBpZiAoIW1fYmxpdEVu
Y29kZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbV9ibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIG1fYmxpdEVuY29kZXIgPSBudWxscHRyOwotfQotCi12b2lkIEdQVUNvbW1h
bmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdWludDY0
X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwgdWludDY0X3QgZHN0T2Zmc2V0LCB1
aW50NjRfdCBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFzcmMtPmlzQ29w
eVNvdXJjZSgpIHx8ICFkc3QtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBpZiAoc2l6ZSAlIDQgfHwgc3JjT2Zmc2V0ICUgNCB8fCBkc3RPZmZzZXQgJSA0KSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIo
KTogQ29weSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBUaGlzIGNhbGwgZW5zdXJlcyB0
aGF0IHNpemUsIG9mZnNldCwgYW5kIHNpemUgKyBvZmZzZXQgY2FuIHNhZmVseSBmaXQgaW4gTlNV
SW50ZWdlciByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLgotICAgIGF1dG8gc3JjTGVuZ3RoID0gY2hl
Y2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBzcmNPZmZzZXQpOwotICAgIGF1dG8gZHN0TGVuZ3Ro
ID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBkc3RPZmZzZXQpOwotICAgIGlmIChzcmNM
ZW5ndGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0aC5oYXNPdmVyZmxvd2VkKCkKLSAgICAg
ICAgfHwgc3JjTGVuZ3RoID4gc3JjLT5ieXRlTGVuZ3RoKCkgfHwgZHN0TGVuZ3RoID4gZHN0LT5i
eXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNv
cHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCBvciBjb3B5IHNpemUhIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIC8vIFRoZXNlIGNhc3RzIGFyZSBzYWZlIGR1ZSB0byBlYXJsaWVyIGNoZWNrZWRTdW0oKSBj
aGVja3MuCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21CdWZmZXI6c3JjLT5w
bGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRl
Z2VyPihzcmNPZmZzZXQpCi0gICAgICAgIHRvQnVmZmVyOmRzdC0+cGxhdGZvcm1CdWZmZXIoKQot
ICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkc3RPZmZz
ZXQpCi0gICAgICAgIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2l6ZSldOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlQnVmZmVyKFdURk1vdmUoc3JjKSk7
Ci0gICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0KSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZl
cjo6Y29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmIHNyY0J1ZmZlciwgR1BV
VGV4dHVyZUNvcHlWaWV3JiYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17
Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY0J1ZmZlci5idWZmZXItPmlzQ29weVNv
dXJjZSgpIHx8ICFkc3RUZXh0dXJlLnRleHR1cmUtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jt
cy4KLSAgICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IDA7Ci0gICAgaWYgKCFXVEY6OmNvbnZl
cnRTYWZlbHkoc3JjQnVmZmVyLm9mZnNldCwgc291cmNlT2Zmc2V0KSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBTb3VyY2Ug
b2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbi4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3
OjpvZmZzZXQ6IFRoZSBsb2NhdGlvbiBtdXN0IGJlIGFsaWduZWQgdG8gdGhlIHNpemUgb2YgdGhl
IGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBmb3JtYXQuIFRoZSB2YWx1ZSBtdXN0IGJlIGEg
bXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRl
cy4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpyb3dQaXRjaDogVGhlIHZhbHVlIG11c3Qg
YmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGlu
IGJ5dGVzLiBUaGUgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIsNzY3IG11
bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmXigJlzIHBpeGVsIHNpemUuCi0KLSAg
ICAvLyBHUFVCdWZmZXJDb3B5Vmlldzo6aW1hZ2VIZWlnaHQ6IFRoZSB2YWx1ZSBtdXN0IGJlIGEg
bXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRl
cy4KLQotICAgIC8vIEdQVUV4dGVudDNEOiBXaGVuIHlvdSBjb3B5IHRvIGEgMUQgdGV4dHVyZSwg
aGVpZ2h0IGFuZCBkZXB0aCBtdXN0IGJlIDEuIFdoZW4geW91IGNvcHkgdG8gYSAyRCB0ZXh0dXJl
LCBkZXB0aCBtdXN0IGJlIDEuCi0KLSAgICAvLyBHUFVUZXh0dXJlQ29weVZpZXc6OnRleHR1cmU6
IFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBhIGZyYW1lYnVmZmVyT25seSB0ZXh0dXJlIGFuZCBtdXN0
IG5vdCBoYXZlIGEgUFZSVEMgcGl4ZWwgZm9ybWF0LgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBbYmxpdEVuY29kZXIoKQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpz
cmNCdWZmZXIuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNldDpz
b3VyY2VPZmZzZXQKLSAgICAgICAgc291cmNlQnl0ZXNQZXJSb3c6c3JjQnVmZmVyLnJvd1BpdGNo
Ci0gICAgICAgIHNvdXJjZUJ5dGVzUGVySW1hZ2U6c3JjQnVmZmVyLmltYWdlSGVpZ2h0Ci0gICAg
ICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUu
ZGVwdGgpCi0gICAgICAgIHRvVGV4dHVyZTpkc3RUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4
dHVyZSgpCi0gICAgICAgIGRlc3RpbmF0aW9uU2xpY2U6ZHN0VGV4dHVyZS5hcnJheUxheWVyCi0g
ICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0VGV4dHVyZS5taXBMZXZlbAotICAgICAgICBkZXN0
aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdFRleHR1cmUub3JpZ2luLngsIGRzdFRleHR1
cmUub3JpZ2luLnksIGRzdFRleHR1cmUub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIHVzZUJ1ZmZlcihXVEZNb3ZlKHNyY0J1ZmZlci5idWZmZXIpKTsK
LSAgICB1c2VUZXh0dXJlKFdURk1vdmUoZHN0VGV4dHVyZS50ZXh0dXJlKSk7Ci19Ci0KLXZvaWQg
R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcm
JiBzcmNUZXh0dXJlLCBHUFVCdWZmZXJDb3B5VmlldyYmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0
ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY1RleHR1cmUu
dGV4dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdEJ1ZmZlci5idWZmZXItPmlzQ29weURlc3Rp
bmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24g
c29tZSBwbGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCA9IDA7Ci0g
ICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZHN0QnVmZmVyLm9mZnNldCwgZGVzdGluYXRpb25P
ZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4
dHVyZVRvQnVmZmVyKCk6IERlc3RpbmF0aW9uIG9mZnNldCBpcyB0b28gbGFyZ2UhIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2Rlcigp
Ci0gICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4
dHVyZSgpCi0gICAgICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1cmUuYXJyYXlMYXllcgotICAgICAg
ICBzb3VyY2VMZXZlbDpzcmNUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpN
VExPcmlnaW5NYWtlKHNyY1RleHR1cmUub3JpZ2luLngsIHNyY1RleHR1cmUub3JpZ2luLnksIHNy
Y1RleHR1cmUub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53
aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvQnVmZmVyOmRzdEJ1ZmZl
ci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgZGVzdGluYXRpb25PZmZzZXQ6ZGVz
dGluYXRpb25PZmZzZXQKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlclJvdzpkc3RCdWZmZXIu
cm93UGl0Y2gKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlckltYWdlOmRzdEJ1ZmZlci5pbWFn
ZUhlaWdodF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB1c2VUZXh0
dXJlKFdURk1vdmUoc3JjVGV4dHVyZS50ZXh0dXJlKSk7Ci0gICAgdXNlQnVmZmVyKFdURk1vdmUo
ZHN0QnVmZmVyLmJ1ZmZlcikpOwotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0
dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyYywgR1BVVGV4dHVyZUNvcHlWaWV3
JiYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bh
c3MoKSB8fCAhc3JjLnRleHR1cmUtPmlzQ29weVNvdXJjZSgpIHx8ICFkc3QudGV4dHVyZS0+aXND
b3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZl
cjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2RlcigpCi0g
ICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmMudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAg
ICAgICAgc291cmNlU2xpY2U6c3JjLmFycmF5TGF5ZXIKLSAgICAgICAgc291cmNlTGV2ZWw6c3Jj
Lm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpNVExPcmlnaW5NYWtlKHNyYy5vcmlnaW4u
eCwgc3JjLm9yaWdpbi55LCBzcmMub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6
ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvVGV4
dHVyZTpkc3QudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgZGVzdGluYXRpb25T
bGljZTpkc3QuYXJyYXlMYXllcgotICAgICAgICBkZXN0aW5hdGlvbkxldmVsOmRzdC5taXBMZXZl
bAotICAgICAgICBkZXN0aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdC5vcmlnaW4ueCwg
ZHN0Lm9yaWdpbi55LCBkc3Qub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmMudGV4dHVyZSkpOwotICAgIHVzZVRl
eHR1cmUoV1RGTW92ZShkc3QudGV4dHVyZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQ
YXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmM2MGU0
NTNlN2ZjMmY1ZTRiOTYyNjVhMWVjNzNmOWVkOWEyYTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBv
cnQgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVy
KQotewotICAgIGlmIChidWZmZXItPmlzRW5jb2RpbmdQYXNzKCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKCk6IEV4aXN0aW5nIHBhc3Mg
ZW5jb2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBidWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotCi0gICAgUmV0YWluUHRy
PE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIG10bEVuY29kZXIgPSBbYnVmZmVyLT5wbGF0Zm9ybUNvbW1h
bmRCdWZmZXIoKSBjb21wdXRlQ29tbWFuZEVuY29kZXJdOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbXRsRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExD
b21wdXRlQ29tbWFuZEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUo
YnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQotCi1HUFVDb21wdXRlUGFzc0VuY29k
ZXI6OkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIs
IFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAsIG1fcGxhdGZv
cm1Db21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKLXsKLX0KLQotdm9pZCBHUFVD
b21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxjb25zdCBHUFVDb21wdXRlUGlwZWxp
bmU+JiYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVy
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVs
aW5lKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKHBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNv
ZGVyIHNldENvbXB1dGVQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBl
bGluZSgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX3BpcGVsaW5l
ID0gV1RGTW92ZShwaXBlbGluZSk7Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpk
aXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlmICgh
bV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBObyB2YWxpZCBH
UFVDb21wdXRlUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlQobV9waXBlbGluZS0+cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUoKSk7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGF1dG8gdGhyZWFkc1BlclRocmVhZGdy
b3VwID0gTVRMU2l6ZU1ha2UobV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS53aWR0aCwg
bV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5oZWlnaHQsIG1fcGlwZWxpbmUtPmNvbXB1
dGVEaW1lbnNpb25zKCkuZGVwdGgpOwotCi0gICAgYXV0byB0aHJlYWRncm91cHNQZXJHcmlkID0g
TVRMU2l6ZU1ha2UoeCwgeSwgeik7Ci0KLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rl
ciBkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRncm91cHNQZXJHcmlkIHRocmVhZHNQZXJUaHJl
YWRncm91cDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXBdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotfQotCi1jb25zdCBNVExDb21tYW5kRW5jb2RlciAqR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9y
bUNvbXB1dGVQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLQotdm9pZCBH
UFVDb21wdXRlUGFzc0VuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICpyZXNv
dXJjZSwgdW5zaWduZWQgdXNhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1Db21wdXRlUGFz
c0VuY29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxh
dGZvcm1Db21wdXRlUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6cmVzb3VyY2UgdXNhZ2U6dXNhZ2Vd
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFz
c0VuY29kZXI6OnNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICpidWZmZXIsIE5TVUlu
dGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybUNv
bXB1dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNldDpv
ZmZzZXQgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYTM3OGEwZWFmZGIzZmE2MzYzZWRhMWZhMGMwZmYxZjE5
MzkxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5l
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgi
Ci0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1w
b3J0ICJHUFVQaXBlbGluZUxheW91dC5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVNZXRhbENvbnZl
cnRMYXlvdXQuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYv
RGF0YUxvZy5oPgotI2ltcG9ydCA8d3RmL01vbm90b25pY1RpbWUuaD4KLSNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqY29tcHV0ZU1ldGFsTGlicmFy
eSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3QgU3Ry
aW5nJiBjb21wdXRlRW50cnlQb2ludE5hbWUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykK
LXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghY29tcHV0ZU1l
dGFsTGlicmFyeSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
Ik1UTExpYnJhcnkgZm9yIGNvbXB1dGUgc3RhZ2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbY29t
cHV0ZU1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbXB1dGVFbnRyeVBvaW50TmFt
ZV0pOwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQ
cmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVhdGUgY29tcHV0ZSBNVExGdW5jdGlv
biAnIiwgY29tcHV0ZUVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wdXRlRnVuY3Rpb246ZnVuY3Rp
b24uZ2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9u
cz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYg
Y29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBjb21wdXRlTGlicmFyeTsKLSAg
ICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7Ci0KLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lv
bnMgY29tcHV0ZURpbWVuc2lvbnMgeyAxLCAxLCAxIH07Ci0KLSAgICBpZiAod2hsc2xEZXNjcmlw
dG9yKSB7Ci0gICAgICAgIEFTU0VSVChjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgp
KTsKLQotICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmVudHJ5UG9pbnROYW1lID0gY29tcHV0ZVN0
YWdlLmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExT
TDo6cHJlcGFyZSgqY29tcHV0ZVN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgKndobHNsRGVz
Y3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAgICAg
ICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29t
cGlsZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wdXRlRGltZW5z
aW9ucyA9IHdobHNsQ29tcGlsZVJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgICAgICBpZiAoV0hMU0w6
OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvMjAw
NDc0IEFkZCBkaXJlY3QgU3RyaW5nQnVpbGRlciAtPiBOU1N0cmluZyBjb252ZXJzaW9uIHRvIGF2
b2lkIGV4dHJhIGNvcHkgaW50byBhIFdURjo6U3RyaW5nCi0gICAgICAgIGNvbXB1dGVMaWJyYXJ5
ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6
d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygpIG9wdGlvbnM6bmlsIGVy
cm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykK
LSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1lczogIiwgKE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBpZiAo
IWNvbXB1dGVMaWJyYXJ5KQotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRp
ZgotICAgICAgICBBU1NFUlQoY29tcHV0ZUxpYnJhcnkpOwotICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBPbmNlIHdlIHplcm8t
ZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywgc28gd2Ugc2hvdWxk
IGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBjb21wdXRlRW50cnlQ
b2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZEVudHJ5UG9pbnROYW1lLnRvU3RyaW5n
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBjb21wdXRlU3RhZ2Uu
bW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAgICAgICBjb21wdXRlRW50cnlQb2lu
dCA9IGNvbXB1dGVTdGFnZS5lbnRyeVBvaW50OwotICAgIH0KLQotICAgIGlmICh0cnlTZXRNZXRh
bEZ1bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgY29tcHV0ZUVu
dHJ5UG9pbnQsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25z
OwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENvbnZlcnRSZXN1bHQg
ewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBwaXBlbGluZURl
c2NyaXB0b3I7Ci0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25z
OwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJv
clNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4g
bXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10
bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10p
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRv
cikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNy
ZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVz
Y3JpcHRvci5jb21wdXRlU3RhZ2U7Ci0KLSAgICBib29sIGlzV2hsc2wgPSBjb21wdXRlU3RhZ2Uu
bW9kdWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9yOwotICAgIGlmIChpc1dobHNsKQot
ICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cigpOwotCi0gICAgaWYgKGRlc2NyaXB0b3IubGF5b3V0ICYmIHdobHNsRGVzY3JpcHRvcikgewot
ICAgICAgICBpZiAoYXV0byBsYXlvdXQgPSBjb252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91
dCkpCi0gICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91
dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIEdQVVBpcGVsaW5lTGF5b3V0ISIpOwotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChh
dXRvIGNvbXB1dGVEaW1lbnNpb25zID0gdHJ5U2V0RnVuY3Rpb25zKGNvbXB1dGVTdGFnZSwgZGV2
aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkK
LSAgICAgICAgcmV0dXJuIHt7IG10bERlc2NyaXB0b3IsICpjb21wdXRlRGltZW5zaW9ucyB9fTsK
LQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0cnVjdCBDcmVhdGVSZXN1bHQgewot
ICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmVTdGF0ZTsKLSAg
ICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBlbGlu
ZVN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0g
ICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gY29udmVydFJlc3VsdCA9IGNvbnZl
cnRDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGRldmljZSwgZXJyb3JTY29w
ZXMpOwotICAgIGlmICghY29udmVydFJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBBU1NFUlQoY29udmVydFJlc3VsdC0+cGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBh
dXRvIG10bERlc2NyaXB0b3IgPSBjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3I7Ci0K
LSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
LSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBvcHRpb25z
Ok1UTFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAg
ICBpZiAoIXBpcGVsaW5lKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRF
cnJvcihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcgOiAiVW5h
YmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSEiKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICByZXR1cm4ge3sgcGlwZWxpbmUsIGNvbnZlcnRSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25z
IH19OwotfQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVDb21wdXRlUGlwZWxpbmU6
OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQot
ewotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGUoZGV2aWNlLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFjcmVhdGVSZXN1
bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
UFVDb21wdXRlUGlwZWxpbmUoV1RGTW92ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpLCBj
cmVhdGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zLCBkZXNjcmlwdG9yLmxheW91dCkpOwotfQot
Ci1HUFVDb21wdXRlUGlwZWxpbmU6OkdQVUNvbXB1dGVQaXBlbGluZShSZXRhaW5QdHI8TVRMQ29t
cHV0ZVBpcGVsaW5lU3RhdGU+JiYgcGlwZWxpbmUsIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBj
b21wdXRlRGltZW5zaW9ucywgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0
KQotICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZShX
VEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZURpbWVuc2lvbnMoY29tcHV0ZURpbWVu
c2lvbnMpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi17Ci19Ci0KLUdQVUNvbXB1dGVQaXBlbGlu
ZTo6fkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVDb21wdXRlUGlw
ZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKQotewotICAgIEdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RGTW92
ZShjb21wdXRlU3RhZ2UpKTsKLSAgICBhdXRvIGVycm9yU2NvcGVzID0gR1BVRXJyb3JTY29wZXM6
OmNyZWF0ZShbXSAoR1BVRXJyb3ImJikgeyB9KTsKLSAgICBpZiAoYXV0byBjcmVhdGVSZXN1bHQg
PSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKSkgewotICAgICAgICBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lID0gV1RGTW92
ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpOwotICAgICAgICBtX2NvbXB1dGVEaW1lbnNp
b25zID0gY3JlYXRlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzhmNjk1YTg3MzAyZjk1MDExMjNlOGI1ZTNm
MmE5YWMwZTBjOGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VN
ZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbXBvcnQgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TWV0YWxTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRGV2aWNlKGlkIDxNVExE
ZXZpY2U+IGRldmljZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBHUFVEZXZpY2U6OnByZXdhcm0oKQotewotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAvLyBDYWxsIE1UTENvcHlBbGxEZXZpY2VzKCkgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCB0byBhdm9pZCBoYW5naW5nIHRoZSBtYWluIHRocmVhZC4KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKDAsIDApLCBeewotICAgICAgICBhdXRvIGRldmljZXMg
PSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOwotICAgIH0pOwotI2VuZGlmCi19Ci0KLVJl
ZlB0cjxHUFVEZXZpY2U+IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucykKLXsKLSAgICBSZXRhaW5QdHI8TVRM
RGV2aWNlPiBkZXZpY2VQdHI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLT5wb3dl
clByZWZlcmVuY2UgfHwgb3B0aW9ucy0+cG93ZXJQcmVmZXJlbmNlID09IEdQVVBvd2VyUHJlZmVy
ZW5jZTo6TG93UG93ZXIpIHsKLSAgICAgICAgYXV0byBkZXZpY2VzID0gYWRvcHROUyhNVExDb3B5
QWxsRGV2aWNlcygpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaWQgPE1UTERldmljZT4gZGV2
aWNlIDogZGV2aWNlcy5nZXQoKSkgewotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVEZXZp
Y2UoZGV2aWNlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChk
ZXZpY2UubG93UG93ZXIpIHsKLSAgICAgICAgICAgICAgICBkZXZpY2VQdHIgPSBkZXZpY2U7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMp
Ci0gICAgaWYgKCFkZXZpY2VQdHIpCi0gICAgICAgIGRldmljZVB0ciA9IGFkb3B0TlMoTVRMQ3Jl
YXRlU3lzdGVtRGVmYXVsdERldmljZSgpKTsKLQotICAgIGlmICghaXNBY2NlcHRhYmxlRGV2aWNl
KGRldmljZVB0ci5nZXQoKSkpCi0gICAgICAgIGRldmljZVB0ci5jbGVhcigpOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFkZXZpY2VQdHIpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUgR1BV
RGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBMT0coV2Vi
R1BVLCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgZGV2aWNlUHRy
LmdldCgpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVURldmljZShXVEZNb3ZlKGRldmlj
ZVB0cikpKTsKLX0KLQotR1BVRGV2aWNlOjpHUFVEZXZpY2UoUmV0YWluUHRyPE1UTERldmljZT4m
JiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWUwOTg4YzkzMGEwMGI3NDY3NzdjN2EwNmI3ZDlk
MWY0MTMxNjYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1l
dGFsQ29udmVydExheW91dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlw
ZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJTdGFnZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBPcHRpb25TZXQ8V0hMU0w6OlNoYWRlclN0YWdlPiBjb252ZXJ0
U2hhZGVyU3RhZ2VGbGFncyhHUFVTaGFkZXJTdGFnZUZsYWdzIGZsYWdzKQotewotICAgIE9wdGlv
blNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IHJlc3VsdDsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFk
ZXJTdGFnZTo6RmxhZ3M6OlZlcnRleCkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hhZGVy
U3RhZ2U6OlZlcnRleCk7Ci0gICAgaWYgKGZsYWdzICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpG
cmFnbWVudCkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkZyYWdtZW50
KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUpCi0gICAg
ICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRlclN0YWdlOjpDb21wdXRlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGlu
Z0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFs
QmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlscykKLXsKLSAgICByZXR1cm4gV1RG
Ojp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1C
dWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6Qmlu
ZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlVuaWZvcm1CdWZmZXJCaW5k
aW5nIHsgdW5pZm9ybUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUgfSB9OwotICAgIH0sIFsmXShH
UFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVy
biB7IFdITFNMOjpTYW1wbGVyQmluZGluZyB7IH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3Vw
TGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6
QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlRleHR1cmVCaW5kaW5n
IHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlN0b3JhZ2VCdWZmZXIgc3Rv
cmFnZUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFp
bHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlN0b3JhZ2VCdWZmZXJCaW5kaW5nIHsgc3Rv
cmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3Jv
dXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpC
aW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKLX0KLQotc3RkOjpvcHRpb25hbDxXSExT
TDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlvdXQp
Ci17Ci0gICAgV0hMU0w6OkxheW91dCByZXN1bHQ7Ci0gICAgaWYgKGxheW91dC5iaW5kR3JvdXBM
YXlvdXRzKCkuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBh
dXRvJiBiaW5kR3JvdXBMYXlvdXQgPSBsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygpW2ldOwotICAg
ICAgICBXSExTTDo6QmluZEdyb3VwIGJpbmRHcm91cDsKLSAgICAgICAgYmluZEdyb3VwLm5hbWUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5
VmFsdWVQYWlyIDogYmluZEdyb3VwTGF5b3V0LT5iaW5kaW5nc01hcCgpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBhdXRvJiBiaW5kaW5nRGV0YWlscyA9IGtleVZhbHVlUGFpci52YWx1ZTsKLSAgICAg
ICAgICAgIFdITFNMOjpCaW5kaW5nIGJpbmRpbmc7Ci0gICAgICAgICAgICBiaW5kaW5nLnZpc2li
aWxpdHkgPSBjb252ZXJ0U2hhZGVyU3RhZ2VGbGFncyhiaW5kaW5nRGV0YWlscy5leHRlcm5hbEJp
bmRpbmcudmlzaWJpbGl0eSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBiaW5kaW5nVHlwZSA9IGNv
bnZlcnRCaW5kaW5nVHlwZShiaW5kaW5nRGV0YWlscy5pbnRlcm5hbEJpbmRpbmdEZXRhaWxzKSkK
LSAgICAgICAgICAgICAgICBiaW5kaW5nLmJpbmRpbmcgPSAqYmluZGluZ1R5cGU7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgIGlmIChiaW5kaW5nRGV0YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgICAgICAgICAgYmluZGluZy5leHRlcm5hbE5hbWUgPSBiaW5kaW5nRGV0
YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcuaW50ZXJu
YWxOYW1lID0gYmluZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lOwotICAgICAgICAgICAgYmluZEdy
b3VwLmJpbmRpbmdzLmFwcGVuZChXVEZNb3ZlKGJpbmRpbmcpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXN1bHQuYXBwZW5kKFdURk1vdmUoYmluZEdyb3VwKSk7Ci0gICAgfQotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTdkZDUyZGQ3ZTVkYTJhZDFkNGExY2Rj
ZjJiYzEyMTVlODM1MzNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBl
bGluZU1ldGFsQ29udmVydExheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci0KLXN0ZDo6b3B0aW9uYWw8V0hMU0w6OkxheW91dD4g
Y29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYpOwotCi19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVBsYXRmb3JtVHlwZXNNZXRhbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlMzlhYjU0MzU4NmUxNGVlOGZkNTYwOGMwNGVkMzZlMTc5ODFkM2MzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaAorKysgL2Rl
di9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDxvYmpjL05TT2JqQ1J1bnRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0KLU9CSkNfQ0xBU1MgQ0FNZXRhbERyYXdhYmxlOwotT0JKQ19DTEFTUyBXZWJHUFVMYXll
cjsKLQotT0JKQ19QUk9UT0NPTChNVExBcmd1bWVudEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChN
VExCbGl0Q29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExCdWZmZXIpOwotT0JKQ19Q
Uk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEVuY29k
ZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOwotT0JKQ19QUk9UT0NPTChNVExD
b21wdXRlQ29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21wdXRlUGlwZWxpbmVT
dGF0ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKLU9CSkNfUFJPVE9D
T0woTVRMRGV2aWNlKTsKLU9CSkNfUFJPVE9DT0woTVRMTGlicmFyeSk7Ci1PQkpDX1BST1RPQ09M
KE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTFJlc291cmNlKTsKLU9CSkNfUFJPVE9DT0woTVRM
U2FtcGxlclN0YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgUGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQgPSBOU1VJbnRlZ2VyOwot
Ci0vLyBNZXRhbCB0eXBlcwotdXNpbmcgUGxhdGZvcm1CdWZmZXIgPSBNVExCdWZmZXI7Ci11c2lu
ZyBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQnVmZmVyPjsKLQot
dXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyID0gTVRMQ29tbWFuZEJ1ZmZlcjsKLXVzaW5nIFBs
YXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tbWFuZEJ1
ZmZlcj47Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gTVRMQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyOwotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0ciA9
IFJldGFpblB0cjxQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3Jt
Q29tcHV0ZVBpcGVsaW5lID0gTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0Zm9y
bUNvbXB1dGVQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tcHV0ZVBpcGVs
aW5lPjsKLQotdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBNVExEZXZpY2U7Ci11c2luZyBQbGF0Zm9y
bURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtRGV2aWNlPjsKLQotdXNpbmcgUGxh
dGZvcm1EcmF3YWJsZSA9IENBTWV0YWxEcmF3YWJsZTsKLXVzaW5nIFBsYXRmb3JtRHJhd2FibGVT
bWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybURyYXdhYmxlPjsKLQotdXNpbmcgUGxhdGZvcm1Q
cm9ncmFtbWFibGVQYXNzRW5jb2RlciA9IE1UTENvbW1hbmRFbmNvZGVyOwotdXNpbmcgUGxhdGZv
cm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI+OwotCi11c2luZyBQbGF0Zm9ybVF1ZXVlID0gTVRMQ29tbWFu
ZFF1ZXVlOwotdXNpbmcgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3Jt
UXVldWU+OwotCi11c2luZyBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyID0gTVRMUmVuZGVyQ29t
bWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyU21hcnRQdHIgPSBS
ZXRhaW5QdHI8UGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3JtUmVu
ZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwotdXNpbmcgUGxhdGZvcm1SZW5k
ZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtUmVuZGVyUGlwZWxpbmU+Owot
Ci11c2luZyBQbGF0Zm9ybVNhbXBsZXIgPSBNVExTYW1wbGVyU3RhdGU7Ci11c2luZyBQbGF0Zm9y
bVNhbXBsZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVNhbXBsZXI+OwotCi11c2luZyBQ
bGF0Zm9ybVNoYWRlck1vZHVsZSA9IE1UTExpYnJhcnk7Ci11c2luZyBQbGF0Zm9ybVNoYWRlck1v
ZHVsZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU2hhZGVyTW9kdWxlPjsKLQotdXNpbmcg
UGxhdGZvcm1Td2FwTGF5ZXIgPSBXZWJHUFVMYXllcjsKLXVzaW5nIFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Td2FwTGF5ZXI+OwotCi11c2luZyBQbGF0Zm9y
bVRleHR1cmUgPSBNVExUZXh0dXJlOwotdXNpbmcgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIgPSBS
ZXRhaW5QdHI8UGxhdGZvcm1UZXh0dXJlPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiNzlkYjgzYmExZWI2ZTBjYmRjYmU5ZDBiYTlj
OTAyNDlkNzk4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVCaW5kR3Jv
dXAuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQotewotICAgIGlmICgh
cGxhdGZvcm1QYXNzRW5jb2RlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbcGxhdGZvcm1QYXNzRW5jb2RlcigpIGVuZEVuY29kaW5n
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpbnZhbGlkYXRlRW5jb2Rl
cigpOwotICAgIG1fY29tbWFuZEJ1ZmZlci0+c2V0SXNFbmNvZGluZ1Bhc3MoZmFsc2UpOwotfQot
Ci12b2lkIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQg
aW5kZXgsIEdQVUJpbmRHcm91cCYgYmluZEdyb3VwKQotewotICAgIGlmICghcGxhdGZvcm1QYXNz
RW5jb2RlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRl
ZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gYXJndW1lbnRCdWZmZXIg
PSBiaW5kR3JvdXAuYXJndW1lbnRCdWZmZXIoKTsKLSAgICBpZiAoIWFyZ3VtZW50QnVmZmVyLmZp
cnN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXJndW1lbnRCdWZmZXIuc2Vjb25kLnZl
cnRleCkKLSAgICAgICAgc2V0VmVydGV4QnVmZmVyKGFyZ3VtZW50QnVmZmVyLmZpcnN0LCAqYXJn
dW1lbnRCdWZmZXIuc2Vjb25kLnZlcnRleCwgaW5kZXgpOwotICAgIGlmIChhcmd1bWVudEJ1ZmZl
ci5zZWNvbmQuZnJhZ21lbnQpCi0gICAgICAgIHNldEZyYWdtZW50QnVmZmVyKGFyZ3VtZW50QnVm
ZmVyLmZpcnN0LCAqYXJndW1lbnRCdWZmZXIuc2Vjb25kLmZyYWdtZW50LCBpbmRleCk7Ci0gICAg
aWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5jb21wdXRlKQotICAgICAgICBzZXRDb21wdXRlQnVm
ZmVyKGFyZ3VtZW50QnVmZmVyLmZpcnN0LCAqYXJndW1lbnRCdWZmZXIuc2Vjb25kLmNvbXB1dGUs
IGluZGV4KTsKLQotICAgIGZvciAoYXV0byYgYnVmZmVyIDogYmluZEdyb3VwLmJvdW5kQnVmZmVy
cygpKSB7Ci0gICAgICAgIHVzZVJlc291cmNlKGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSwgc3Rh
dGljX2Nhc3Q8TVRMUmVzb3VyY2VVc2FnZT4oYnVmZmVyLT5wbGF0Zm9ybVVzYWdlKCkpKTsKLSAg
ICAgICAgbV9jb21tYW5kQnVmZmVyLT51c2VCdWZmZXIoYnVmZmVyLmNvcHlSZWYoKSk7Ci0gICAg
fQotICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGJpbmRHcm91cC5ib3VuZFRleHR1cmVzKCkpIHsK
LSAgICAgICAgdXNlUmVzb3VyY2UodGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCksIHN0YXRpY19j
YXN0PE1UTFJlc291cmNlVXNhZ2U+KHRleHR1cmUtPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAg
ICBtX2NvbW1hbmRCdWZmZXItPnVzZVRleHR1cmUodGV4dHVyZS5jb3B5UmVmKCkpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVRdWV1ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVF1ZXVlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMWI0
MmI1OTQ0ZjQ2YjlmMjdkYTkwZTY0MTZjNmRiZjBiMDVhMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUXVldWUu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIK
LSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZURl
ZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldlYktpdCI7Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktpdC4iOwotCi1SZWZQ
dHI8R1BVUXVldWU+IEdQVVF1ZXVlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2Up
Ci17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUXVldWU6OnRyeUNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1
ZT4gcXVldWU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHF1ZXVl
ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tbWFuZFF1ZXVlXSk7Ci0g
ICAgW3F1ZXVlIHNldExhYmVsOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF07Ci0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXF1ZXVlKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFu
ZFF1ZXVlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdQVVF1ZXVlKFdURk1vdmUocXVldWUpLCBkZXZpY2UpKTsKLX0KLQotR1BV
UXVldWU6OkdQVVF1ZXVlKFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+JiYgcXVldWUsIGNvbnN0
IEdQVURldmljZSYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybVF1ZXVlKFdURk1vdmUocXVldWUp
KQotICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKLXsKLX0KLQotdm9pZCBHUFVR
dWV1ZTo6c3VibWl0KFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZEJ1ZmZl
cnMpCi17Ci0gICAgZm9yIChhdXRvJiBjb21tYW5kQnVmZmVyIDogY29tbWFuZEJ1ZmZlcnMpIHsK
LSAgICAgICAgLy8gVmFsaWRhdGUgcmVzb3VyY2UgaW50ZWdyaXR5LgotICAgICAgICBmb3IgKGF1
dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpIHsKLSAgICAgICAgICAg
IGlmIChidWZmZXItPnN0YXRlKCkgIT0gR1BVQnVmZmVyOjpTdGF0ZTo6VW5tYXBwZWQpIHsKLSAg
ICAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlkIEdQ
VUJ1ZmZlciBzZXQgb24gYSBHUFVDb21tYW5kQnVmZmVyISIpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHRleHR1
cmUgOiBjb21tYW5kQnVmZmVyLT51c2VkVGV4dHVyZXMoKSkgewotICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVVGV4dHVyZSBzZXQgb24gYSBHUFVDb21t
YW5kQnVmZmVyISIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjb21tYW5kQnVmZmVyLT5lbmRCbGl0RW5jb2RpbmcoKTsKLSAgICAg
ICAgLy8gT2theSB0byBjb21taXQ7IHByZXZlbnQgYW55IGJ1ZmZlciBtYXBwaW5nIGNhbGxiYWNr
cyBmcm9tIGV4ZWN1dGluZyB1bnRpbCBjb21tYW5kIGJ1ZmZlciBpcyBjb21wbGV0ZS4KLSAgICAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBjb21tYW5kQnVmZmVyLT51c2VkQnVmZmVycygpKQotICAg
ICAgICAgICAgYnVmZmVyLT5jb21tYW5kQnVmZmVyQ29tbWl0dGVkKGNvbW1hbmRCdWZmZXItPnBs
YXRmb3JtQ29tbWFuZEJ1ZmZlcigpKTsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgICAgIFtjb21tYW5kQnVmZmVyLT5wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb21t
aXRdOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgfQotCi0gICAgaWYg
KG1fcHJlc2VudFRhc2suaXNQZW5kaW5nKCkgfHwgIW1fZGV2aWNlIHx8ICFtX2RldmljZS0+c3dh
cENoYWluKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGEgR1BVU3dhcENoYWluIGV4
aXN0cywgZW5zdXJlIHRoYXQgYSBwcmVzZW50IGlzIHNjaGVkdWxlZCBhZnRlciBhbGwgY29tbWFu
ZCBidWZmZXJzLgotICAgIG1fcHJlc2VudFRhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN3YXBDaGFpbiA9IG1ha2VSZWYoKm1fZGV2aWNlLT5z
d2FwQ2hhaW4oKSldICgpIHsKLSAgICAgICAgYXV0byBjdXJyZW50RHJhd2FibGUgPSBzd2FwQ2hh
aW4tPnRha2VEcmF3YWJsZSgpOwotICAgICAgICAvLyBJZiB0aGUgR1BVU3dhcENoYWluIGhhcyBu
byBkcmF3YWJsZSwgaXQgd2FzIGludmFsaWRhdGVkIGJldHdlZW4gY29tbWFuZCBzdWJtaXNzaW9u
IGFuZCB0aGlzIHRhc2suCi0gICAgICAgIGlmICghY3VycmVudERyYXdhYmxlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcHJlc2VudENvbW1hbmRCdWZmZXIgPSBbbV9wbGF0
Zm9ybVF1ZXVlIGNvbW1hbmRCdWZmZXJdOwotICAgICAgICBbcHJlc2VudENvbW1hbmRCdWZmZXIg
cHJlc2VudERyYXdhYmxlOnN0YXRpY19jYXN0PGlkPE1UTERyYXdhYmxlPj4oY3VycmVudERyYXdh
YmxlLmdldCgpKV07Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBjb21taXRdOwotICAg
IH0pOwotfQotCi1TdHJpbmcgR1BVUXVldWU6OmxhYmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
cGxhdGZvcm1RdWV1ZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBOU1N0
cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX3BsYXRmb3JtUXVldWUgbGFiZWxdOwotCi0gICAgaWYg
KFtwcmVmaXhlZExhYmVsIGlzRXF1YWxUb1N0cmluZzpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxd
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIEFTU0VSVChwcmVmaXhlZExh
YmVsLmxlbmd0aCA+IGNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aCk7Ci0gICAgcmV0dXJu
IFtwcmVmaXhlZExhYmVsIHN1YnN0cmluZ0Zyb21JbmRleDpjb21tYW5kUXVldWVMYWJlbFByZWZp
eC5sZW5ndGhdOwotfQotCi12b2lkIEdQVVF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxh
YmVsKSBjb25zdAotewotICAgIGlmIChsYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIFttX3BsYXRm
b3JtUXVldWUgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLSAgICBlbHNlCi0g
ICAgICAgIFttX3BsYXRmb3JtUXVldWUgc2V0TGFiZWw6W2NvbW1hbmRRdWV1ZUxhYmVsUHJlZml4
IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmxhYmVsXV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzM1
NWUyM2ExODA5NzEwNzdkMWZhMWJjZDE1OWNkOGZiYmI5NmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsNDE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1w
b3J0ICJHUFVCdWZmZXIuaCIKLSNpbXBvcnQgIkdQVUNvbG9yLmgiCi0jaW1wb3J0ICJHUFVDb21t
YW5kQnVmZmVyLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2ltcG9y
dCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldI
TFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTExvYWRBY3Rpb24gbG9hZEFjdGlvbkZvckdQ
VUxvYWRPcChHUFVMb2FkT3Agb3ApCi17Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgR1BV
TG9hZE9wOjpDbGVhcjoKLSAgICAgICAgcmV0dXJuIE1UTExvYWRBY3Rpb25DbGVhcjsKLSAgICBj
YXNlIEdQVUxvYWRPcDo6TG9hZDoKLSAgICAgICAgcmV0dXJuIE1UTExvYWRBY3Rpb25Mb2FkOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRMU3RvcmVB
Y3Rpb24gc3RvcmVBY3Rpb25Gb3JHUFVTdG9yZU9wKEdQVVN0b3JlT3Agb3ApCi17Ci0gICAgc3dp
dGNoIChvcCkgewotICAgIGNhc2UgR1BVU3RvcmVPcDo6U3RvcmU6Ci0gICAgICAgIHJldHVybiBN
VExTdG9yZUFjdGlvblN0b3JlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1zdGF0aWMgYm9vbCBwb3B1bGF0ZU10bENvbG9yQXR0YWNobWVudHNBcnJheShNVExSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5ICphcnJheSwgY29uc3QgVmVjdG9y
PEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVzY3JpcHRvcnMsIGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBV
TlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGRlc2NyaXB0b3JzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8m
IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yc1tpXTsKLSAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmF0
dGFjaG1lbnQtPnBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEludmFsaWQgTVRMVGV4dHVyZSBmb3IgY29sb3IgYXR0YWNobWVudCAldSEiLCBmdW5jdGlv
bk5hbWUsIGkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IGNvbnN0IGF1dG8mIGNvbG9yID0gZGVzY3JpcHRvci5jbGVhckNvbG9yOwotCi0gICAgICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIGF1dG8gbXRsQXR0YWNobWVudCA9
IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmldKTsKLSAgICAgICAg
W210bEF0dGFjaG1lbnQgc2V0VGV4dHVyZTpkZXNjcmlwdG9yLmF0dGFjaG1lbnQtPnBsYXRmb3Jt
VGV4dHVyZSgpXTsKLSAgICAgICAgW210bEF0dGFjaG1lbnQgc2V0Q2xlYXJDb2xvcjpNVExDbGVh
ckNvbG9yTWFrZShjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hKV07Ci0gICAgICAg
IFttdGxBdHRhY2htZW50IHNldExvYWRBY3Rpb246bG9hZEFjdGlvbkZvckdQVUxvYWRPcChkZXNj
cmlwdG9yLmxvYWRPcCldOwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRTdG9yZUFjdGlvbjpz
dG9yZUFjdGlvbkZvckdQVVN0b3JlT3AoZGVzY3JpcHRvci5zdG9yZU9wKV07Ci0KLSAgICAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1zdGF0aWMgYm9vbCBwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoTVRMUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm10bEF0dGFjaG1lbnQsIGNvbnN0IEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29u
c3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVO
VVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBpZiAoIWRlc2NyaXB0b3Iu
YXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBJbnZhbGlkIE1UTFRleHR1cmUgZm9yIGRlcHRoIGF0dGFjaG1lbnQhIiwgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgW210bEF0dGFjaG1lbnQgc2V0VGV4dHVyZTpkZXNjcmlwdG9yLmF0
dGFjaG1lbnQtPnBsYXRmb3JtVGV4dHVyZSgpXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRDbGVh
ckRlcHRoOmRlc2NyaXB0b3IuY2xlYXJEZXB0aF07Ci0gICAgW210bEF0dGFjaG1lbnQgc2V0TG9h
ZEFjdGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IuZGVwdGhMb2FkT3ApXTsK
LSAgICBbbXRsQXR0YWNobWVudCBzZXRTdG9yZUFjdGlvbjpzdG9yZUFjdGlvbkZvckdQVVN0b3Jl
T3AoZGVzY3JpcHRvci5kZXB0aFN0b3JlT3ApXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCB1c2VBdHRhY2htZW50
cyhHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikKLXsKLSAgICBmb3IgKGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IGRlc2NyaXB0b3Iu
Y29sb3JBdHRhY2htZW50cykKLSAgICAgICAgYnVmZmVyLnVzZVRleHR1cmUoV1RGTW92ZShjb2xv
ckF0dGFjaG1lbnQuYXR0YWNobWVudCkpOwotICAgIGlmIChkZXNjcmlwdG9yLmRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQpCi0gICAgICAgIGJ1ZmZlci51c2VUZXh0dXJlKFdURk1vdmUoKCpkZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpLmF0dGFjaG1lbnQpKTsKLX0KLQotUmVmUHRyPEdQ
VVJlbmRlclBhc3NFbmNvZGVyPiBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKFJlZjxH
UFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNj
cmlwdG9yKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKCkiOwotCi0gICAgLy8gT25seSBvbmUgY29tbWFuZCBl
bmNvZGVyIG1heSBiZSBhY3RpdmUgYXQgYSB0aW1lLgotICAgIGlmIChidWZmZXItPmlzRW5jb2Rp
bmdQYXNzKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFeGlzdGluZyBwYXNzIGVuY29k
ZXIgbXVzdCBiZSBlbmRlZCBmaXJzdCEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9y
OwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9y
ID0gYWRvcHROUyhbTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9y
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IGlmICghcG9wdWxhdGVNdGxDb2xvckF0dGFjaG1lbnRzQXJyYXkobXRsRGVzY3JpcHRvci5nZXQo
KS5jb2xvckF0dGFjaG1lbnRzLCBkZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMsIGZ1bmN0aW9u
TmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGRlc2NyaXB0b3IuZGVw
dGhTdGVuY2lsQXR0YWNobWVudAotICAgICAgICAmJiAhcG9wdWxhdGVNdGxEZXB0aFN0ZW5jaWxB
dHRhY2htZW50KG10bERlc2NyaXB0b3IuZ2V0KCkuZGVwdGhBdHRhY2htZW50LCAqZGVzY3JpcHRv
ci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LCBmdW5jdGlvbk5hbWUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGJ1ZmZlci0+ZW5kQmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRhaW5Q
dHI8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+IG10bEVuY29kZXI7Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bEVuY29kZXIgPSBbYnVmZmVyLT5wbGF0Zm9ybUNv
bW1hbmRCdWZmZXIoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOm10bERlc2Ny
aXB0b3IuZ2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYg
KCFtdGxFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0
ZSBNVExSZW5kZXJDb21tYW5kRW5jb2RlciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBBbGwgaXMgd2VsbDsgZW5zdXJlIEdQVUNvbW1h
bmRCdWZmZXIgaXMgYXdhcmUgb2YgbmV3IGF0dGFjaG1lbnRzLgotICAgIHVzZUF0dGFjaG1lbnRz
KGJ1ZmZlciwgV1RGTW92ZShkZXNjcmlwdG9yKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUobXRsRW5j
b2RlcikpKTsKLX0KLQotR1BVUmVuZGVyUGFzc0VuY29kZXI6OkdQVVJlbmRlclBhc3NFbmNvZGVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJldGFpblB0cjxNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSkKLSAgICAsIG1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewotfQotCi1jb25zdCBNVExDb21tYW5kRW5jb2Rl
ciAqR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLXZvaWQg
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxjb25zdCBHUFVSZW5kZXJQaXBl
bGluZT4mJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rl
cikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVs
aW5lKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBNZXRhbCB0aHJvd3MgYW4gZXJyb3IgaWYg
dGhlIE1UTFBpcGVsaW5lU3RhdGUncyBhdHRhY2htZW50IGZvcm1hdHMgZG8gbm90IG1hdGNoIHRo
ZSBNVExDb21tYW5kRW5jb2RlcidzIGF0dGFjaG1lbnQgZm9ybWF0cy4KLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKHBpcGVsaW5lLT5kZXB0aFN0ZW5jaWxTdGF0
ZSgpKQotICAgICAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldERlcHRoU3RlbmNp
bFN0YXRlOnBpcGVsaW5lLT5kZXB0aFN0ZW5jaWxTdGF0ZSgpXTsKLQotICAgIFttX3BsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXIgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpwaXBlbGluZS0+cGxhdGZv
cm1SZW5kZXJQaXBlbGluZSgpXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIG1fcGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYgY29sb3IpCi17Ci0gICAg
aWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbG9yKCk6IEludmFsaWQgb3BlcmF0aW9u
OiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIgc2V0QmxlbmRDb2xvclJlZDpjb2xvci5yIGdyZWVuOmNvbG9yLmcgYmx1ZTpjb2xvci5iIGFs
cGhhOmNvbG9yLmFdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQotewot
ICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoKTogSW52YWxpZCBvcGVyYXRp
b246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2RlciBzZXRWaWV3cG9ydDogeyB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwgbWF4RGVw
dGggfV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRl
clBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRl
clBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0U2Npc3NvclJlY3QoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVk
ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRTY2lzc29yUmVjdDog
eyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH1dOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoR1BVQnVmZmVy
JiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2Zmc2V0ID49IGJ1ZmZlci5ieXRl
TGVuZ3RoKCkgfHwgb2Zmc2V0ICUgNCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb2Zmc2V0ISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChidWZmZXIucGxhdGZvcm1CdWZmZXIoKSk7Ci0g
ICAgLy8gQnVmZmVyIG11c3QgYmUgY2FjaGVkIHRvIHByb3ZpZGUgaXQgdG8gTWV0YWwgdmlhIGRy
YXdJbmRleGVkUHJpbWl0aXZlcy4KLSAgICBtX2luZGV4QnVmZmVyID0gbWFrZVJlZlB0cihidWZm
ZXIpOwotICAgIG1faW5kZXhCdWZmZXJPZmZzZXQgPSBvZmZzZXQ7Ci19Ci0KLXZvaWQgR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZl
Y3RvcjxSZWY8R1BVQnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9m
ZnNldHMpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKCk6
IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVChidWZmZXJzLnNpemUoKSAmJiBvZmZzZXRzLnNpemUoKSA9
PSBidWZmZXJzLnNpemUoKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIGF1dG8gbXRsQnVmZmVycyA9IGJ1ZmZlcnMubWFwKFt0aGlzXSAoYXV0byYgYnVmZmVyKSB7
Ci0gICAgICAgIGNvbW1hbmRCdWZmZXIoKS51c2VCdWZmZXIoYnVmZmVyLmNvcHlSZWYoKSk7Ci0g
ICAgICAgIEFTU0VSVChidWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpOwotICAgICAgICByZXR1cm4g
YnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpOwotICAgIH0pOwotCi0gICAgYXV0byBpbmRleFJhbmdl
cyA9IE5TTWFrZVJhbmdlKFdITFNMOjpNZXRhbDo6Y2FsY3VsYXRlVmVydGV4QnVmZmVySW5kZXgo
aW5kZXgpLCBidWZmZXJzLnNpemUoKSk7Ci0KLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNv
ZGVyIHNldFZlcnRleEJ1ZmZlcnM6bXRsQnVmZmVycy5kYXRhKCkgb2Zmc2V0czooY29uc3QgTlNV
SW50ZWdlciAqKW9mZnNldHMuZGF0YSgpIHdpdGhSYW5nZTppbmRleFJhbmdlc107Ci0KLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBNVExQcmltaXRpdmVUeXBlIG10
bFByaW1pdGl2ZVR5cGVGb3JHUFVQcmltaXRpdmVUb3BvbG9neShHUFVQcmltaXRpdmVUb3BvbG9n
eSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9w
b2xvZ3k6OlBvaW50TGlzdDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVQb2ludDsK
LSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5OjpMaW5lTGlzdDoKLSAgICAgICAgcmV0dXJu
IE1UTFByaW1pdGl2ZVR5cGVMaW5lOwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6Okxp
bmVTdHJpcDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVMaW5lU3RyaXA7Ci0gICAg
Y2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVMaXN0OgotICAgICAgICByZXR1cm4g
TVRMUHJpbWl0aXZlVHlwZVRyaWFuZ2xlOwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6
OlRyaWFuZ2xlU3RyaXA6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlVHJpYW5nbGVT
dHJpcDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgaW5z
dGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2Up
Ci17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0aW9u
OiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
IW1fcGlwZWxpbmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpkcmF3KCk6IE5vIHZhbGlkIEdQVVJlbmRlclBpcGVsaW5lIGZvdW5kISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
cGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciAKLSAgICAgICAgZHJhd1ByaW1pdGl2ZXM6bXRsUHJp
bWl0aXZlVHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KG1fcGlwZWxpbmUtPnByaW1pdGl2ZVRv
cG9sb2d5KCkpCi0gICAgICAgIHZlcnRleFN0YXJ0OmZpcnN0VmVydGV4Ci0gICAgICAgIHZlcnRl
eENvdW50OnZlcnRleENvdW50Ci0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFuY2VDb3VudAot
ICAgICAgICBiYXNlSW5zdGFuY2U6Zmlyc3RJbnN0YW5jZV07Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotfQotCi1zdGF0aWMgTVRMSW5kZXhUeXBlIG10bEluZGV4VHlwZUZvckdQVUlu
ZGV4Rm9ybWF0KEdQVUluZGV4Rm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkg
ewotICAgIGNhc2UgR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNjoKLSAgICAgICAgcmV0dXJuIE1UTElu
ZGV4VHlwZVVJbnQxNjsKLSAgICBjYXNlIEdQVUluZGV4Rm9ybWF0OjpVaW50MzI6Ci0gICAgICAg
IHJldHVybiBNVExJbmRleFR5cGVVSW50MzI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKHVuc2ln
bmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0SW5k
ZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotI2lmICFMT0df
RElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKCkiOwotI2VuZGlmCi0gICAgaWYgKCFtX3BsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9w
ZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoIW1fcGlwZWxpbmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBObyB2YWxpZCBHUFVSZW5kZXJQaXBlbGluZSBmb3VuZCEiLCBmdW5jdGlvbk5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZS0+aW5kZXhGb3JtYXQo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIEdQVUluZGV4Rm9ybWF0IHNwZWNpZmll
ZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9p
bmRleEJ1ZmZlciB8fCAhbV9pbmRleEJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IE5vIHZhbGlkIGluZGV4IGJ1ZmZlciBzZXQhIiwgZnVuY3Rpb25O
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXhCeXRlU2l6ZSA9
IChtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpID09IEdQVUluZGV4Rm9ybWF0OjpVaW50MTYpID8g
c2l6ZW9mKHVpbnQxNl90KSA6IHNpemVvZih1aW50MzJfdCk7Ci0KLSAgICAvLyBUaGlzIGNhbGN1
bGF0aW9uIGNhbm5vdCBvdmVyZmxvdyBhcyBmaXJzdEluZGV4IGlzIGJvdW5kZWQgdG8gMzIgYml0
cywgYW5kIGluZGV4Qnl0ZVNpemUgdG8gc2l6ZW9mKHVpbnQzMl90KS4KLSAgICB1aW50NjRfdCBm
aXJzdEluZGV4T2Zmc2V0ID0gZmlyc3RJbmRleCAqIGluZGV4Qnl0ZVNpemU7Ci0KLSAgICAvLyBU
aGlzIGNhbGwgZW5zdXJlcyB0aGF0IG5laXRoZXIgYXJndW1lbnQgbm9yIHRoZWlyIHN1bSB3aWxs
IG92ZXJmbG93IE5TVUludGVnZXIuCi0gICAgYXV0byB0b3RhbE9mZnNldCA9IGNoZWNrZWRTdW08
TlNVSW50ZWdlcj4oZmlyc3RJbmRleE9mZnNldCwgbV9pbmRleEJ1ZmZlck9mZnNldCk7Ci0gICAg
aWYgKHRvdGFsT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCB0b3RhbE9mZnNldCA+PSBtX2luZGV4
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlk
IGZpcnN0SW5kZXghIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGNvbW1hbmRCdWZmZXIoKS51c2VCdWZmZXIobWFrZVJlZigqbV9pbmRleEJ1ZmZlcikpOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2RlcgotICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6bXRsUHJpbWl0aXZlVHlw
ZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KG1fcGlwZWxpbmUtPnByaW1pdGl2ZVRvcG9sb2d5KCkp
Ci0gICAgICAgIGluZGV4Q291bnQ6aW5kZXhDb3VudAotICAgICAgICBpbmRleFR5cGU6bXRsSW5k
ZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQoKm1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkpCi0gICAg
ICAgIGluZGV4QnVmZmVyOm1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAg
aW5kZXhCdWZmZXJPZmZzZXQ6dG90YWxPZmZzZXQudmFsdWUoKQotICAgICAgICBpbnN0YW5jZUNv
dW50Omluc3RhbmNlQ291bnQKLSAgICAgICAgYmFzZVZlcnRleDpiYXNlVmVydGV4Ci0gICAgICAg
IGJhc2VJbnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnVz
ZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICpyZXNvdXJjZSwgdW5zaWduZWQgdXNhZ2UpCi17
Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHVz
ZVJlc291cmNlOnJlc291cmNlIHVzYWdlOnVzYWdlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihj
b25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4
KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rl
ciBzZXRWZXJ0ZXhCdWZmZXI6YnVmZmVyIG9mZnNldDpvZmZzZXQgYXRJbmRleDppbmRleF07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdl
ciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
cGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIgb2Zmc2V0
Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFs
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmU3N2U2OTU3YmZiNDk1NDQxMjI1
MWEwMzk4NTY5Yzk2NDNhOGE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTU5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5l
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBv
cnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0ICJHUFVMaW1pdHMuaCIKLSNpbXBvcnQgIkdQ
VVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJXSExTTFByZXBh
cmUuaCIKLSNpbXBvcnQgIldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgiCi0jaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
LSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2ltcG9ydCA8d3RmL0RhdGFMb2cu
aD4KLSNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5o
PgotI2ltcG9ydCA8d3RmL09wdGlvblNldC5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgUmV0YWluUHRyPE1U
TERlcHRoU3RlbmNpbFN0YXRlPiB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgUmV0YWluUHRy
PE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiVW5hYmxlIHRvIGNyZWF0ZSBNVExEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIG10
bERlcHRoQ29tcGFyZSA9IHN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4ocGxhdGZvcm1D
b21wYXJlRnVuY3Rpb25Gb3JHUFVDb21wYXJlRnVuY3Rpb24oZGVzY3JpcHRvci5kZXB0aENvbXBh
cmUpKTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXREZXB0aENvbXBhcmVGdW5jdGlvbjptdGxEZXB0
aENvbXBhcmVdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRoV3JpdGVFbmFibGVkOmRlc2Ny
aXB0b3IuZGVwdGhXcml0ZUVuYWJsZWRdOwotCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBiYWNr
L2Zyb250RmFjZVN0ZW5jaWwuCi0KLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+
IHN0YXRlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBzdGF0ZSA9
IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0RlcHRoU3RlbmNpbFN0YXRlV2l0
aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOwotCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFzdGF0ZSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1UTERlcHRoU3RlbmNpbFN0YXRlISIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGU7Ci19
Ci0KLXN0YXRpYyBXSExTTDo6VmVydGV4Rm9ybWF0IGNvbnZlcnRWZXJ0ZXhGb3JtYXQoR1BVVmVy
dGV4Rm9ybWF0IHZlcnRleEZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdCkgewot
ICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVybiBXSExTTDo6
VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMkEzMjsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1h
dDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzJH
MzJCMzI7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MjoKLSAgICAgICAgcmV0dXJu
IFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVCh2ZXJ0ZXhGb3JtYXQgPT0gR1BVVmVydGV4Rm9ybWF0OjpGbG9hdCk7Ci0gICAgICAg
IHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMjsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1h
dChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAg
IGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIFdITFNM
OjpUZXh0dXJlRm9ybWF0OjpSR0JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6
QmdyYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVu
b3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgdG8g
ZG8gd2l0aCB0aGlzLgotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybVNSR0I6
Ci0gICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I7Ci0g
ICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKLSAgICAgICAgcmV0dXJuIFdI
TFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0KLQotc3RhdGljIE1UTFZlcnRleEZvcm1hdCBt
dGxWZXJ0ZXhGb3JtYXRGb3JHUFVWZXJ0ZXhGb3JtYXQoR1BVVmVydGV4Rm9ybWF0IGZvcm1hdCkK
LXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9h
dDoKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0OwotICAgIGNhc2UgR1BVVmVy
dGV4Rm9ybWF0OjpGbG9hdDI6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhGb3JtYXRGbG9hdDI7
Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MzoKLSAgICAgICAgcmV0dXJuIE1UTFZl
cnRleEZvcm1hdEZsb2F0MzsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQ0OgotICAg
ICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQ0OwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRMVmVydGV4U3RlcEZ1bmN0aW9uIG10bFN0ZXBG
dW5jdGlvbkZvckdQVUlucHV0U3RlcE1vZGUoR1BVSW5wdXRTdGVwTW9kZSBtb2RlKQotewotICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVSW5wdXRTdGVwTW9kZTo6VmVydGV4OgotICAg
ICAgICByZXR1cm4gTVRMVmVydGV4U3RlcEZ1bmN0aW9uUGVyVmVydGV4OwotICAgIGNhc2UgR1BV
SW5wdXRTdGVwTW9kZTo6SW5zdGFuY2U6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhTdGVwRnVu
Y3Rpb25QZXJJbnN0YW5jZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIEdQVUxpbWl0cyB3aGVuIHRoYXQgaXMgaW1wbGVt
ZW50ZWQgcHJvcGVybHkuCi1jb25zdGV4cHIgdW5zaWduZWQgbWF4VmVydGV4QXR0cmlidXRlcyA9
IDE2OwotCi1zdGF0aWMgYm9vbCB0cnlTZXRWZXJ0ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRs
RGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
PiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAg
Y29uc3QgYXV0byYgYnVmZmVycyA9IGRlc2NyaXB0b3IudmVydGV4QnVmZmVyczsKLQotICAgIGlm
IChidWZmZXJzLnNpemUoKSA+IG1heFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUb28gbWFueSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlw
dG9ycyEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGF1dG8gbXRsVmVy
dGV4RGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFZlcnRleERlc2NyaXB0b3IgbmV3XSk7Ci0KLSAg
ICBhdXRvIGxheW91dEFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCku
bGF5b3V0cyk7Ci0gICAgYXV0byBhdHRyaWJ1dGVBcnJheSA9IHJldGFpblB0cihtdGxWZXJ0ZXhE
ZXNjcmlwdG9yLmdldCgpLmF0dHJpYnV0ZXMpOwotCi0gICAgLy8gQXR0cmlidXRlIHNoYWRlckxv
Y2F0aW9ucyBtdXN0IGJlIHVuaXF1ZWx5IGZsYXQtbWFwcGVkIHRvIFswLCB7bWF4IG51bWJlciBv
ZiB2ZXJ0ZXggYXR0cmlidXRlc31dLgotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4ID0gMDsK
LSAgICBIYXNoU2V0PHVuc2lnbmVkLCBJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IGxvY2F0aW9uczsKLQotICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBidWZmZXJzLnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICBpZiAoIWJ1ZmZlcnNbaW5kZXhdKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Y29uc3QgYXV0byYgYXR0cmlidXRlcyA9IGJ1ZmZlcnNbaW5kZXhdLT5hdHRyaWJ1dGVTZXQ7Ci0K
LSAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc2l6ZSgpICsgYXR0cmlidXRlSW5kZXggPiBtYXhWZXJ0
ZXhBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JzISIpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgTlNVSW50ZWdlciBpbnB1
dFN0cmlkZSA9IDA7Ci0gICAgICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGJ1ZmZlcnNbaW5k
ZXhdLT5zdHJpZGUsIGlucHV0U3RyaWRlKSkgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIlN0cmlkZSBmb3IgR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvciAiLCBpbmRleCwgIiBpcyB0b28gbGFyZ2UhIikpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXJJbmRl
eCA9IFdITFNMOjpNZXRhbDo6Y2FsY3VsYXRlVmVydGV4QnVmZmVySW5kZXgoaW5kZXgpOwotCi0g
ICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBhdXRvIG10bExheW91
dERlc2MgPSByZXRhaW5QdHIoW2xheW91dEFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDpj
b252ZXJ0ZWRCdWZmZXJJbmRleF0pOwotICAgICAgICBbbXRsTGF5b3V0RGVzYyBzZXRTdGVwRnVu
Y3Rpb246bXRsU3RlcEZ1bmN0aW9uRm9yR1BVSW5wdXRTdGVwTW9kZShidWZmZXJzW2luZGV4XS0+
c3RlcE1vZGUpXTsKLSAgICAgICAgW210bExheW91dERlc2Mgc2V0U3RyaWRlOmlucHV0U3RyaWRl
XTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIGZvciAoY29u
c3QgYXV0byYgYXR0cmlidXRlIDogYXR0cmlidXRlcykgewotICAgICAgICAgICAgaWYgKCFsb2Nh
dGlvbnMuYWRkKGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbikuaXNOZXdFbnRyeSkgewotICAgICAg
ICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJE
dXBsaWNhdGUgc2hhZGVyTG9jYXRpb24gIiwgYXR0cmlidXRlLnNoYWRlckxvY2F0aW9uLCAiIGZv
ciB2ZXJ0ZXggYXR0cmlidXRlISIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5TVUludGVnZXIgb2Zmc2V0ID0gMDsKLSAgICAg
ICAgICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGF0dHJpYnV0ZS5vZmZzZXQsIG9mZnNldCkp
IHsKLSAgICAgICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFr
ZVN0cmluZygiQnVmZmVyIG9mZnNldCBmb3IgdmVydGV4IGF0dHJpYnV0ZSAiLCBhdHRyaWJ1dGUu
c2hhZGVyTG9jYXRpb24sICIgaXMgdG9vIGxhcmdlISIpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgICAgICAgICAgYXV0byBtdGxBdHRyaWJ1dGVEZXNjID0gcmV0YWluUHRy
KFthdHRyaWJ1dGVBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6YXR0cmlidXRlSW5kZXhd
KTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNldEZvcm1hdDptdGxWZXJ0ZXhGb3Jt
YXRGb3JHUFVWZXJ0ZXhGb3JtYXQoYXR0cmlidXRlLmZvcm1hdCldOwotICAgICAgICAgICAgW210
bEF0dHJpYnV0ZURlc2Mgc2V0T2Zmc2V0Om9mZnNldF07Ci0gICAgICAgICAgICBbbXRsQXR0cmli
dXRlRGVzYyBzZXRCdWZmZXJJbmRleDpjb252ZXJ0ZWRCdWZmZXJJbmRleF07Ci0gICAgICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgICAgIGlmICh3aGxzbERlc2Ny
aXB0b3IpCi0gICAgICAgICAgICAgICAgd2hsc2xEZXNjcmlwdG9yLT52ZXJ0ZXhBdHRyaWJ1dGVz
LmFwcGVuZCh7IGNvbnZlcnRWZXJ0ZXhGb3JtYXQoYXR0cmlidXRlLmZvcm1hdCksIGF0dHJpYnV0
ZS5zaGFkZXJMb2NhdGlvbiwgYXR0cmlidXRlSW5kZXggfSk7Ci0KLSAgICAgICAgICAgICsrYXR0
cmlidXRlSW5kZXg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRW
ZXJ0ZXhEZXNjcmlwdG9yOm10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCldOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyBNVExDb2xvcldyaXRlTWFzayBtdGxDb2xvcldyaXRlTWFza0Zv
ckdQVUNvbG9yV3JpdGVGbGFncyhHUFVDb2xvcldyaXRlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYg
KGZsYWdzID09IHN0YXRpY19jYXN0PEdQVUNvbG9yV3JpdGVGbGFncz4oR1BVQ29sb3JXcml0ZTo6
RmxhZ3M6OkFsbCkpCi0gICAgICAgIHJldHVybiBNVExDb2xvcldyaXRlTWFza0FsbDsKLQotICAg
IGF1dG8gb3B0aW9ucyA9IE9wdGlvblNldDxHUFVDb2xvcldyaXRlOjpGbGFncz46OmZyb21SYXco
ZmxhZ3MpOwotCi0gICAgTVRMQ29sb3JXcml0ZU1hc2sgbWFzayA9IE1UTENvbG9yV3JpdGVNYXNr
Tm9uZTsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpSZWQpCi0gICAg
ICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tSZWQ7Ci0gICAgaWYgKG9wdGlvbnMgJiBHUFVD
b2xvcldyaXRlOjpGbGFnczo6R3JlZW4pCi0gICAgICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0ZU1h
c2tHcmVlbjsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpCbHVlKQot
ICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQmx1ZTsKLSAgICBpZiAob3B0aW9ucyAm
IEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpBbHBoYSkKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldy
aXRlTWFza0FscGhhOwotCi0gICAgcmV0dXJuIG1hc2s7Ci19Ci0KLXN0YXRpYyBNVExCbGVuZE9w
ZXJhdGlvbiBtdGxCbGVuZE9wZXJhdGlvbkZvckdQVUJsZW5kT3BlcmF0aW9uKEdQVUJsZW5kT3Bl
cmF0aW9uIG9wKQotewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0
aW9uOjpBZGQ6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbkFkZDsKLSAgICBjYXNl
IEdQVUJsZW5kT3BlcmF0aW9uOjpTdWJ0cmFjdDoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kT3Bl
cmF0aW9uU3VidHJhY3Q7Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6UmV2ZXJzZVN1YnRy
YWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25SZXZlcnNlU3VidHJhY3Q7Ci0g
ICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6TWluOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRP
cGVyYXRpb25NaW47Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJhdGlvbjo6TWF4OgotICAgICAgICBy
ZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25NYXg7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExCbGVuZEZhY3RvciBtdGxCbGVuZEZhY3RvckZvckdQVUJs
ZW5kRmFjdG9yKEdQVUJsZW5kRmFjdG9yIGZhY3RvcikKLXsKLSAgICBzd2l0Y2ggKGZhY3Rvcikg
ewotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Olplcm86Ci0gICAgICAgIHJldHVybiBNVExCbGVu
ZEZhY3Rvclplcm87Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lOgotICAgICAgICByZXR1
cm4gTVRMQmxlbmRGYWN0b3JPbmU7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6U3JjQ29sb3I6
Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvclNvdXJjZUNvbG9yOwotICAgIGNhc2UgR1BV
QmxlbmRGYWN0b3I6Ok9uZU1pbnVzU3JjQ29sb3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZh
Y3Rvck9uZU1pbnVzU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6U3JjQWxw
aGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvclNvdXJjZUFscGhhOwotICAgIGNhc2Ug
R1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzU3JjQWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVu
ZEZhY3Rvck9uZU1pbnVzU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6RHN0
Q29sb3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQ29sb3I7Ci0g
ICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNEc3RDb2xvcjoKLSAgICAgICAgcmV0dXJu
IE1UTEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkNvbG9yOwotICAgIGNhc2UgR1BVQmxl
bmRGYWN0b3I6OkRzdEFscGhhOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JEZXN0aW5h
dGlvbkFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzRHN0QWxwaGE6Ci0g
ICAgICAgIHJldHVybiBNVExCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25BbHBoYTsKLSAg
ICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYVNhdHVyYXRlZDoKLSAgICAgICAgcmV0dXJu
IE1UTEJsZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6Qmxl
bmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yQmxlbmRDb2xvcjsKLSAgICBj
YXNlIEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c0JsZW5kQ29sb3I6Ci0gICAgICAgIHJldHVybiBN
VExCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRDb2xvcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGJvb2wgdHJ5U2V0Q29sb3JTdGF0ZXMoY29uc3QgVmVj
dG9yPEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiYgY29sb3JTdGF0ZXMsIE1UTFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhcnJheSwgc3RkOjpvcHRpb25hbDxX
SExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBtYXhp
bXVtIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50cyBwZXIgcmVuZGVyIHBhc3MgZnJvbSBHUFVM
aW1pdHMuCi0gICAgaWYgKGNvbG9yU3RhdGVzLnNpemUoKSA+IDQpIHsKLSAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3Jp
cHRvcnMhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2xvclN0
YXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IGNvbG9yU3RhdGVzW2ld
OwotICAgICAgICBhdXRvIGRlc2NyaXB0b3IgPSByZXRhaW5QdHIoW2FycmF5IG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdDppXSk7Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnN0
YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0
dXJlRm9ybWF0KHN0YXRlLmZvcm1hdCkpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0V3JpdGVN
YXNrOm10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JXcml0ZUZsYWdzKHN0YXRlLndyaXRlTWFz
ayldOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRCbGVuZGluZ0VuYWJsZWQ6WUVTXTsKLSAgICAg
ICAgW2Rlc2NyaXB0b3Igc2V0QWxwaGFCbGVuZE9wZXJhdGlvbjptdGxCbGVuZE9wZXJhdGlvbkZv
ckdQVUJsZW5kT3BlcmF0aW9uKHN0YXRlLmFscGhhQmxlbmQub3BlcmF0aW9uKV07Ci0gICAgICAg
IFtkZXNjcmlwdG9yIHNldFJnYkJsZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BV
QmxlbmRPcGVyYXRpb24oc3RhdGUuY29sb3JCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rl
c2NyaXB0b3Igc2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9y
R1BVQmxlbmRGYWN0b3Ioc3RhdGUuYWxwaGFCbGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAgW2Rl
c2NyaXB0b3Igc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQ
VUJsZW5kRmFjdG9yKHN0YXRlLmNvbG9yQmxlbmQuZHN0RmFjdG9yKV07Ci0gICAgICAgIFtkZXNj
cmlwdG9yIHNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVu
ZEZhY3RvcihzdGF0ZS5hbHBoYUJsZW5kLnNyY0ZhY3RvcildOwotICAgICAgICBbZGVzY3JpcHRv
ciBzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFjdG9y
KHN0YXRlLmNvbG9yQmxlbmQuc3JjRmFjdG9yKV07Ci0KLSAgICAgICAgaWYgKHdobHNsRGVzY3Jp
cHRvcikgewotICAgICAgICAgICAgaWYgKGF1dG8gZm9ybWF0ID0gY29udmVydFRleHR1cmVGb3Jt
YXQoc3RhdGUuZm9ybWF0KSkKLSAgICAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmF0dGFj
aG1lbnRzU3RhdGVEZXNjcmlwdG9yLmF0dGFjaG1lbnREZXNjcmlwdG9ycy5hcHBlbmQoeypmb3Jt
YXQsIGl9KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm9yU2NvcGVz
LmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJJbnZhbGlkIEdQVVRleHR1cmVGb3Jt
YXQgZm9yIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yICIsIGksICIhIikpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhNVExMaWJyYXJ5ICp2ZXJ0ZXhNZXRhbExpYnJh
cnksIE1UTExpYnJhcnkgKmZyYWdtZW50TWV0YWxMaWJyYXJ5LCBNVExSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0IFN0cmluZyYgdmVydGV4RW50cnlQb2ludE5h
bWUsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgR1BVRXJyb3JTY29wZXMm
IGVycm9yU2NvcGVzKQotewotICAgIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICAgICAgLy8gTWV0YWwgcmVxdWlyZXMgYSB2ZXJ0ZXggc2hhZGVyIGluIGFsbCBy
ZW5kZXIgcGlwZWxpbmVzLgotICAgICAgICBpZiAoIXZlcnRleE1ldGFsTGlicmFyeSkgewotICAg
ICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNVExMaWJyYXJ5IGZv
ciB2ZXJ0ZXggc3RhZ2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbdmVydGV4
TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6dmVydGV4RW50cnlQb2ludE5hbWVdKTsK
LSAgICAgICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVhdGUgdmVydGV4IE1UTEZ1bmN0
aW9uICciLCB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgIichIikpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERlc2NyaXB0b3Igc2V0VmVydGV4RnVu
Y3Rpb246ZnVuY3Rpb24uZ2V0KCldOwotCi0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgICAgIC8vIEhvd2V2ZXIsIGZyYWdtZW50IHNoYWRlcnMgYXJlIG9wdGlvbmFsLgotICAg
ICAgICBpZiAoIWZyYWdtZW50TWV0YWxMaWJyYXJ5IHx8IGZyYWdtZW50RW50cnlQb2ludE5hbWUu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBhdXRvIGZ1bmN0
aW9uID0gYWRvcHROUyhbZnJhZ21lbnRNZXRhbExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTpm
cmFnbWVudEVudHJ5UG9pbnROYW1lXSk7Ci0KLSAgICAgICAgaWYgKCFmdW5jdGlvbikgewotICAg
ICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNh
bm5vdCBjcmVhdGUgZnJhZ21lbnQgTVRMRnVuY3Rpb24gJyIsIGZyYWdtZW50RW50cnlQb2ludE5h
bWUsICInISIpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCB0cnlTZXRGdW5j
dGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFnZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBmcmFn
bWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Bl
cykKLXsKLSAgICBSZXRhaW5QdHI8TVRMTGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21lbnRM
aWJyYXJ5OwotICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9pbnQ7
Ci0KLSAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhTdGFn
ZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotICAgICAgICBBU1NFUlQoIWZyYWdtZW50U3RhZ2Ug
fHwgZnJhZ21lbnRTdGFnZS0+bW9kdWxlLT53aGxzbE1vZHVsZSgpKTsKLQotICAgICAgICB3aGxz
bERlc2NyaXB0b3ItPnZlcnRleEVudHJ5UG9pbnROYW1lID0gdmVydGV4U3RhZ2UuZW50cnlQb2lu
dDsKLSAgICAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICB3aGxzbERlc2NyaXB0
b3ItPmZyYWdtZW50RW50cnlQb2ludE5hbWUgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50Owot
Ci0gICAgICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0ID0gV0hMU0w6OnByZXBhcmUoKnZlcnRl
eFN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgZnJhZ21lbnRTdGFnZSA/IGZyYWdtZW50U3Rh
Z2UtPm1vZHVsZS0+d2hsc2xNb2R1bGUoKSA6IG51bGxwdHIsICp3aGxzbERlc2NyaXB0b3IpOwot
ICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgewotICAgICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIldITFNMIGNvbXBpbGUgZXJyb3I6
ICIsIHdobHNsQ29tcGlsZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLQotICAgICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgTW9ub3RvbmljVGltZSBzdGFy
dFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAg
ICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIC8vIEZJWE1F
OiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQgQWRkIGRpcmVjdCBTdHJpbmdCdWlsZGVyIC0+
IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQgZXh0cmEgY29weSBpbnRvIGEgV1RGOjpTdHJp
bmcKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmlj
ZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOndobHNsQ29tcGlsZVJlc3VsdC0+bWV0YWxTb3VyY2Uu
dG9TdHJpbmcoKSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAgICAgICAgaWYgKFdITFNM
OjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk1ldGFsIGNv
bXBpbGUgdGltZXM6ICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWlsbGlz
ZWNvbmRzKCksICIgbXMiKTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgICAgIGlmICghdmVydGV4TGlicmFyeSAmJiBlcnJvcikgewotICAgICAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVU
RjhTdHJpbmcpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIE5TTG9nKEAiJUAiLCBlcnJv
cik7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVCh2ZXJ0ZXhMaWJyYXJ5KTsK
LSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU3NzEgT25jZSB3ZSB6ZXJvLWZpbGwgdmFyaWFibGVzLCB0aGVyZSBzaG91bGQgYmUgbm8g
d2FybmluZ3MsIHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIEFTU0VSVCghZXJyb3IpIGhlcmUuCi0K
LSAgICAgICAgZnJhZ21lbnRMaWJyYXJ5ID0gdmVydGV4TGlicmFyeTsKLSAgICAgICAgdmVydGV4
RW50cnlQb2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZFZlcnRleEVudHJ5UG9pbnRO
YW1lLnRvU3RyaW5nKCk7Ci0gICAgICAgIGlmIChmcmFnbWVudFN0YWdlKQotICAgICAgICAgICAg
ZnJhZ21lbnRFbnRyeVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkRnJhZ21lbnRF
bnRyeVBvaW50TmFtZS50b1N0cmluZygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHZlcnRleExp
YnJhcnkgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAg
ICAgIHZlcnRleEVudHJ5UG9pbnQgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAgICBp
ZiAoZnJhZ21lbnRTdGFnZSkgewotICAgICAgICAgICAgZnJhZ21lbnRMaWJyYXJ5ID0gZnJhZ21l
bnRTdGFnZS0+bW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAgICAgICAgICAgZnJh
Z21lbnRFbnRyeVBvaW50ID0gZnJhZ21lbnRTdGFnZS0+ZW50cnlQb2ludDsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiB0cnlTZXRNZXRhbEZ1bmN0aW9ucyh2ZXJ0ZXhMaWJyYXJ5Lmdl
dCgpLCBmcmFnbWVudExpYnJhcnkuZ2V0KCksIG10bERlc2NyaXB0b3IsIHZlcnRleEVudHJ5UG9p
bnQsIGZyYWdtZW50RW50cnlQb2ludCwgZXJyb3JTY29wZXMpOwotfQotCi1zdGF0aWMgUmV0YWlu
UHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcihjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNv
bnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0g
ICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9
IGFkb3B0TlMoW01UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAg
ICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1UTERl
c2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIERl
dGVybWluZSBpZiBzaGFkZXIgc291cmNlIGlzIGluIFdITFNMIG9yIE1TTC4KLSAgICBjb25zdCBh
dXRvJiB2ZXJ0ZXhTdGFnZSA9IGRlc2NyaXB0b3IudmVydGV4U3RhZ2U7Ci0gICAgY29uc3QgYXV0
byYgZnJhZ21lbnRTdGFnZSA9IGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZTsKLQotICAgIGlmIChm
cmFnbWVudFN0YWdlICYmIHN0YXRpY19jYXN0PGJvb2w+KHZlcnRleFN0YWdlLm1vZHVsZS0+d2hs
c2xNb2R1bGUoKSkgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4oZnJhZ21lbnRTdGFnZS0+bW9kdWxlLT53
aGxzbE1vZHVsZSgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBpc1dobHNs
ID0gdmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgLy8gU2V0IGRhdGEg
Zm9yIHRoZSBNZXRhbCBwaXBlbGluZSBkZXNjcmlwdG9yIChhbmQgV0hMU0wncywgaWYgbmVlZGVk
KS4KLSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHdo
bHNsRGVzY3JpcHRvcjsKLSAgICBpZiAoaXNXaGxzbCkKLSAgICAgICAgd2hsc2xEZXNjcmlwdG9y
ID0gV0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwotCi0gICAgaWYgKCF0cnlTZXRW
ZXJ0ZXhJbnB1dChkZXNjcmlwdG9yLnZlcnRleElucHV0LCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3
aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBpZiAoIXRyeVNldENvbG9yU3RhdGVzKGRlc2NyaXB0b3IuY29sb3JTdGF0ZXMsIG10bERl
c2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50cywgd2hsc2xEZXNjcmlwdG9yLCBlcnJvclNj
b3BlcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGRlc2NyaXB0b3IubGF5
b3V0ICYmIHdobHNsRGVzY3JpcHRvcikgewotICAgICAgICBpZiAoYXV0byBsYXlvdXQgPSBjb252
ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91dCkpCi0gICAgICAgICAgICB3aGxzbERlc2NyaXB0
b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIEdQ
VVBpcGVsaW5lTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoIXRyeVNldEZ1bmN0aW9ucyh2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgZGV2aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbXRsRGVz
Y3JpcHRvcjsKLX0KLQotc3RhdGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiB0
cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBj
b25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7
Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVE
ZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbXRs
RGVzY3JpcHRvciA9IGNvbnZlcnRSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwg
ZGV2aWNlLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiBw
aXBlbGluZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7Ci0gICAgcGlwZWxpbmUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRv
ci5nZXQoKSBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoIXBpcGVsaW5lKQotICAgICAgICBlcnJv
clNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24u
VVRGOFN0cmluZyk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1
cm4gcGlwZWxpbmU7Ci19Ci0KLVJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlw
ZWxpbmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJv
clNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVu
Y2lsU3RhdGU+IGRlcHRoU3RlbmNpbDsKLQotICAgIGlmIChkZXNjcmlwdG9yLmRlcHRoU3RlbmNp
bFN0YXRlICYmICEoZGVwdGhTdGVuY2lsID0gdHJ5Q3JlYXRlTXRsRGVwdGhTdGVuY2lsU3RhdGUo
KmRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUsIGRldmljZSwgZXJyb3JTY29wZXMpKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM4NyBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvciBpc24ndCBpbXBsZW1lbnRlZCB5ZXQgZm9yIFdITFNMIGNvbXBpbGVyLgotCi0gICAgYXV0
byBwaXBlbGluZSA9IHRyeUNyZWF0ZU10bFJlbmRlclBpcGVsaW5lU3RhdGUoZGV2aWNlLCBkZXNj
cmlwdG9yLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFwaXBlbGluZSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdU
Rk1vdmUoZGVwdGhTdGVuY2lsKSwgV1RGTW92ZShwaXBlbGluZSksIGRlc2NyaXB0b3IucHJpbWl0
aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IudmVydGV4SW5wdXQuaW5kZXhGb3JtYXQsIGRlc2NyaXB0
b3IubGF5b3V0LCBkZXNjcmlwdG9yKSk7Ci19Ci0KLUdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5k
ZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhTdGVuY2ls
LCBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4mJiBwaXBlbGluZSwgR1BVUHJpbWl0
aXZlVG9wb2xvZ3kgdG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1h
dCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0LCBjb25zdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9yQmFzZSkKLSAgICA6IEdQ
VVBpcGVsaW5lKCkKLSAgICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShkZXB0aFN0ZW5j
aWwpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQot
ICAgICwgbV9wcmltaXRpdmVUb3BvbG9neSh0b3BvbG9neSkKLSAgICAsIG1faW5kZXhGb3JtYXQo
Zm9ybWF0KQotICAgICwgbV9sYXlvdXQobGF5b3V0KQotICAgICwgbV9yZW5kZXJEZXNjcmlwdG9y
QmFzZShyZW5kZXJEZXNjcmlwdG9yQmFzZSkKLXsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6On5H
UFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVSZW5kZXJQaXBlbGluZTo6
cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKLXsKLSAgICBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RGTW92ZSh2
ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFnZSksIG1fcmVuZGVyRGVzY3JpcHRvckJh
c2UpOwotICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtdIChH
UFVFcnJvciYmKSB7IH0pOwotICAgIGlmIChhdXRvIHBpcGVsaW5lID0gdHJ5Q3JlYXRlTXRsUmVu
ZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkgewotICAg
ICAgICBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTYW1w
bGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZjk3MzU0NWJkZDc4
YzY4Y2YyODMwOGRiYzYwMmQwMTc2ZTBkYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVNhbXBsZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTYW1wbGVyLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQ
VVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVVdGlscy5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTFNhbXBsZXJB
ZGRyZXNzTW9kZSBtdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKEdQVUFkZHJlc3NNb2RlIG1v
ZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVBZGRyZXNzTW9kZTo6Q2xh
bXBUb0VkZ2U6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvRWRn
ZTsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBNVExT
YW1wbGVyQWRkcmVzc01vZGVSZXBlYXQ7Ci0gICAgY2FzZSBHUFVBZGRyZXNzTW9kZTo6TWlycm9y
UmVwZWF0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlckFkZHJlc3NNb2RlTWlycm9yUmVwZWF0
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgTVRMU2Ft
cGxlck1pbk1hZ0ZpbHRlciBtdGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKEdQVUZpbHRlck1v
ZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUZpbHRlck1vZGU6
Ok5lYXJlc3Q6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdDsK
LSAgICBjYXNlIEdQVUZpbHRlck1vZGU6OkxpbmVhcjoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBs
ZXJNaW5NYWdGaWx0ZXJMaW5lYXI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWlwRmlsdGVyIG10bE1pcEZpbHRlckZvckZpbHRlck1v
ZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
R1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJNaXBGaWx0
ZXJOZWFyZXN0OwotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TGluZWFyOgotICAgICAgICByZXR1
cm4gTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxNVExTYW1wbGVyU3RhdGU+IHRyeUNyZWF0
ZU10bFNhbXBsZXJTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2FtcGxl
ckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZp
Y2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCk6IElu
dmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBSZXRhaW5QdHI8TVRMU2FtcGxlckRlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhb
TVRMU2FtcGxlckRlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVT
YW1wbGVyOjp0cnlDcmVhdGUoKTogRXJyb3IgY3JlYXRpbmcgTVRMU2FtcGxlckRlc2NyaXB0b3Ih
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExT
YW1wbGVyU3RhdGU+IHNhbXBsZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbXRsRGVzY3JpcHRvciBzZXRSQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JBZGRy
ZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSldOwotICAgIFttdGxEZXNjcmlwdG9yIHNl
dFNBZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRk
cmVzc01vZGVWKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0VEFkZHJlc3NNb2RlOm10bEFkZHJl
c3NNb2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVcpXTsKLSAgICBbbXRs
RGVzY3JpcHRvciBzZXRNaW5GaWx0ZXI6bXRsTWluTWFnRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNj
cmlwdG9yLm1pbkZpbHRlcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1hZ0ZpbHRlcjptdGxN
aW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWFnRmlsdGVyKV07Ci0gICAgW210
bERlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOm10bE1pcEZpbHRlckZvckZpbHRlck1vZGUoZGVzY3Jp
cHRvci5taXBtYXBGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRMb2RNaW5DbGFtcDpk
ZXNjcmlwdG9yLmxvZE1pbkNsYW1wXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRMb2RNYXhDbGFt
cDpkZXNjcmlwdG9yLmxvZE1heENsYW1wXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNYXhBbmlz
b3Ryb3B5OmRlc2NyaXB0b3IubWF4QW5pc290cm9weV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0
Q29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4ocGxhdGZvcm1D
b21wYXJlRnVuY3Rpb25Gb3JHUFVDb21wYXJlRnVuY3Rpb24oZGVzY3JpcHRvci5jb21wYXJlRnVu
Y3Rpb24pKV07Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJz
OllFU107Ci0KLSAgICBzYW1wbGVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkg
bmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOwotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc2FtcGxlcikKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRyeUNyZWF0ZSgpOiBFcnJvciBjcmVhdGluZyBNVExT
YW1wbGVyU3RhdGUhIik7Ci0KLSAgICByZXR1cm4gc2FtcGxlcjsKLX0KLQotUmVmUHRyPEdQVVNh
bXBsZXI+IEdQVVNhbXBsZXI6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29u
c3QgR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgYXV0byBzYW1wbGVy
ID0gdHJ5Q3JlYXRlTXRsU2FtcGxlclN0YXRlKGRldmljZSwgZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFzYW1wbGVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR1BVU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKSk7Ci19Ci0KLUdQVVNhbXBsZXI6OkdQ
VVNhbXBsZXIoUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4mJiBzYW1wbGVyKQotICAgIDogbV9w
bGF0Zm9ybVNhbXBsZXIoV1RGTW92ZShzYW1wbGVyKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJN
b2R1bGVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2NDRjMzViMGIw
MDlkMWQ5ZjYxMDkxYTNmZmJmN2ZkNjNiOTBiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTaGFkZXJN
b2R1bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgot
I2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
LSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUo
Y29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKTogSW52YWxpZCBHUFVE
ZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICBpZiAo
R1BVRGV2aWNlOjp1c2VXSExTTCkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTaGFk
ZXJNb2R1bGUoV0hMU0w6OmNyZWF0ZVNoYWRlck1vZHVsZShkZXNjcmlwdG9yLmNvZGUpKSk7Ci0K
LSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1vZHVsZTsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJv
cldpdGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07
Ci0gICAgbW9kdWxlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFy
eVdpdGhTb3VyY2U6ZGVzY3JpcHRvci5jb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwot
ICAgIGlmICghbW9kdWxlKQotICAgICAgICBMT0coV2ViR1BVLCAiU2hhZGVyIGNvbXBpbGF0aW9u
IGVycm9yOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsK
LQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBtb2R1bGUgPyBh
ZG9wdFJlZihuZXcgR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpIDogbnVsbHB0cjsK
LX0KLQotR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1
bGVTbWFydFB0ciYmIG1vZHVsZSkKLSAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUoV1RGTW92
ZShtb2R1bGUpKQotewotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShVbmlx
dWVSZWY8V0hMU0w6OlNoYWRlck1vZHVsZT4mJiB3aGxzbE1vZHVsZSkKLSAgICA6IG1fd2hsc2xN
b2R1bGUod2hsc2xNb2R1bGUubW92ZVRvVW5pcXVlUHRyKCkpCi17Ci19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2M4OTM1MzIwYTA0OTJkMmZjZDUzNDkzYTYyYTAyYzQw
MTlmYzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFs
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0jaW1wb3J0ICJHUFVVdGlscy5o
IgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVs
Rm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAgIGF1dG8gbXRsRm9ybWF0ID0g
c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRl
eHR1cmVGb3JtYXQoZm9ybWF0KSk7Ci0KLSAgICBzd2l0Y2ggKG10bEZvcm1hdCkgewotICAgIGNh
c2UgTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOgotICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1JB
OFVub3JtX3NSR0I6Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0OgotICAgICAg
ICByZXR1cm4gbXRsRm9ybWF0OwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFVuc3VwcG9ydGVkIE1UTFBpeGVsRm9ybWF0ISIp
OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRp
YyB2b2lkIHNldExheWVyU2hhcGUoV2ViR1BVTGF5ZXIgKmxheWVyLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCi17Ci0gICAgW2xheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBo
ZWlnaHQpXTsKLSAgICBbbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhl
aWdodCldOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdQVUxheWVyPiB0cnlDcmVhdGVXZWJH
UFVMYXllcihNVExEZXZpY2UgKmRldmljZSwgTVRMUGl4ZWxGb3JtYXQgZm9ybWF0LCBPcHRpb25T
ZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0KLSAgICBSZXRhaW5QdHI8V2Vi
R1BVTGF5ZXI+IGxheWVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
bGF5ZXIgPSBhZG9wdE5TKFtXZWJHUFVMYXllciBuZXddKTsKLQotICAgIFtsYXllciBzZXROYW1l
OkAiV2ViIEdQVSBMYXllciJdOwotICAgIFtsYXllciBzZXRPcGFxdWU6MF07Ci0KLSAgICBbbGF5
ZXIgc2V0RGV2aWNlOmRldmljZV07Ci0gICAgW2xheWVyIHNldEZyYW1lYnVmZmVyT25seToodXNh
Z2UgPT0gR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCldOwotICAgIFts
YXllciBzZXRQaXhlbEZvcm1hdDpmb3JtYXRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46
OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKLQotICAgIHJl
dHVybiBsYXllcjsKLX0KLQotUmVmUHRyPEdQVVN3YXBDaGFpbj4gR1BVU3dhcENoYWluOjp0cnlD
cmVhdGUoY29uc3QgR1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQotewotICAgIGlmICghZGVzY3JpcHRvci5kZXZpY2UtPnBsYXRmb3JtRGV2
aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6
IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICBhdXRvIHBpeGVsRm9ybWF0ID0gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoZGVzY3Jp
cHRvci5mb3JtYXQpOwotICAgIGlmICghcGl4ZWxGb3JtYXQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYXV0byB1c2FnZU9wdGlvbnMgPSBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdl
OjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgaWYgKCF1c2FnZU9wdGlv
bnMuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFN3YXAgY2hh
aW4gdXNhZ2UgbXVzdCBpbmNsdWRlIE9VVFBVVF9BVFRBQ0hNRU5UISIpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGxheWVyID0gdHJ5Q3JlYXRlV2ViR1BVTGF5
ZXIoZGVzY3JpcHRvci5kZXZpY2UtPnBsYXRmb3JtRGV2aWNlKCksICpwaXhlbEZvcm1hdCwgdXNh
Z2VPcHRpb25zKTsKLSAgICBpZiAoIWxheWVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHNldExheWVyU2hhcGUobGF5ZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgYXV0
byBzd2FwQ2hhaW4gPSBhZG9wdFJlZihuZXcgR1BVU3dhcENoYWluKFdURk1vdmUobGF5ZXIpLCB1
c2FnZU9wdGlvbnMpKTsKLSAgICBkZXNjcmlwdG9yLmRldmljZS0+c2V0U3dhcENoYWluKHN3YXBD
aGFpbi5jb3B5UmVmKCkpOwotICAgIHJldHVybiBzd2FwQ2hhaW47Ci19Ci0KLUdQVVN3YXBDaGFp
bjo6R1BVU3dhcENoYWluKFJldGFpblB0cjxXZWJHUFVMYXllcj4mJiBwbGF0Zm9ybUxheWVyLCBP
cHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2VPcHRpb25zKQotICAgIDogbV9w
bGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQotICAgICwgbV91c2FnZSh1
c2FnZU9wdGlvbnMpCi17Ci0gICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0U3dhcENoYWluOnRo
aXNdOwotfQotCi1SZWZQdHI8R1BVVGV4dHVyZT4gR1BVU3dhcENoYWluOjp0cnlHZXRDdXJyZW50
VGV4dHVyZSgpCi17Ci0gICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBpZiAoIW1fY3VycmVudERyYXdhYmxl
KQotICAgICAgICBtX2N1cnJlbnREcmF3YWJsZSA9IHJldGFpblB0cihbbV9wbGF0Zm9ybVN3YXBM
YXllciBuZXh0RHJhd2FibGVdKTsKLSAgICBtdGxUZXh0dXJlID0gW21fY3VycmVudERyYXdhYmxl
IHRleHR1cmVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFt
dGxUZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmdldEN1cnJl
bnRUZXh0dXJlKCk6IFVuYWJsZSB0byBnZXQgY3VycmVudCBNVExUZXh0dXJlISIpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRl
KFdURk1vdmUobXRsVGV4dHVyZSksIG1fdXNhZ2UpOwotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6
cHJlc2VudCgpCi17Ci0gICAgaWYgKCFtX2N1cnJlbnREcmF3YWJsZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgW21fY3VycmVudERyYXdhYmxlIHByZXNlbnRdOwotICAgIG1fY3VycmVudERyYXdh
YmxlID0gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQotewotICAgIHNldExheWVyU2hhcGUobV9wbGF0Zm9ybVN3YXBMYXllci5n
ZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdQVVN3YXBDaGFpbjo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1Td2FwTGF5ZXIu
Z2V0KCk7Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi1SZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiBH
UFVTd2FwQ2hhaW46OnRha2VEcmF3YWJsZSgpCi17Ci0gICAgUmV0YWluUHRyPENBTWV0YWxEcmF3
YWJsZT4gcHRyOwotICAgIHB0ci5zd2FwKG1fY3VycmVudERyYXdhYmxlKTsKLSAgICByZXR1cm4g
cHRyOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgyMDBlYmIwNTkzNDUzY2RjODVhNmM3MDI5YzUzMWFhNmMwYmU0ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQg
IkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdGF0aWMgTVRMVGV4dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJl
RGVzY3JpcHRvcihjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAg
ICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGlt
ZW5zaW9uOjpfMWQ6Ci0gICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA9PSAx
KSA/IE1UTFRleHR1cmVUeXBlMUQgOiBNVExUZXh0dXJlVHlwZTFEQXJyYXk7Ci0gICAgY2FzZSBH
UFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6IHsKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aCA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID09
IDEpID8gTVRMVGV4dHVyZVR5cGUyRCA6IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZTsKLSAg
ICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlMkRBcnJheTsgLy8gTVRMVGV4dHVyZVR5cGUyRE11
bHRpc2FtcGxlQXJyYXkgaXMgdW5hdmFpbGFibGUgb24gaU9TLgotICAgIH0KLSAgICBjYXNlIEdQ
VVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlM0Q7
Ci0gICAgfQotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRl
eHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNldDxHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzPiBmbGFncywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lm
IExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0K
LSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5
U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pICYmIChmbGFncyAmIEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogVGV4dHVyZSBjYW5ub3QgaGF2ZSBib3RoIFNUT1JBR0UgYW5kIGEgcmVhZC1vbmx5IHVzYWdl
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgTVRMVGV4dHVyZVVzYWdlIHJlc3VsdCA9IDA7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpKQotICAgICAgICByZXN1
bHQgfD0gTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0OwotICAgIGlmIChmbGFncy5jb250YWlu
c0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UsIEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M6OlNhbXBsZWQgfSkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExUZXh0dXJlVXNhZ2VTaGFk
ZXJSZWFkOwotICAgIGlmIChmbGFncy5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpT
dG9yYWdlKSkKLSAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRlOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi1zdGF0aWMgTVRM
U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1UTFBp
eGVsRm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgc2FtcGxlcykKLXsKLSAgICAvLyBEZXB0aCwgU3Rl
bmNpbCwgRGVwdGhTdGVuY2lsLCBhbmQgTXVsdGlzYW1wbGUgdGV4dHVyZXMgbXVzdCBiZSBhbGxv
Y2F0ZWQgd2l0aCB0aGUgTVRMU3RvcmFnZU1vZGVQcml2YXRlIHJlc291cmNlIG9wdGlvbi4KLSAg
ICBpZiAoZm9ybWF0ID09IE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4IHx8IHNh
bXBsZXMgPiAxKQotICAgICAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVQcml2YXRlOwotCi0gICAg
cmV0dXJuIE1UTFN0b3JhZ2VNb2RlU2hhcmVkOwotfQotI2VuZGlmCi0KLXN0YXRpYyBSZXRhaW5Q
dHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IHRyeUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLXsK
LSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9w
dE5TKFtNVExUZXh0dXJlRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgbmV3IE1UTFRleHR1cmVEZXNjcmlwdG9yISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHdpZHRoID0gZGVzY3JpcHRvci5zaXplLndpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodCA9IDE7
Ci0gICAgdW5zaWduZWQgZGVwdGggPSAxOwotICAgIHVuc2lnbmVkIGFycmF5TGVuZ3RoID0gMTsK
LSAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJl
RGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGFycmF5TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmhl
aWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6
Ci0gICAgICAgIGhlaWdodCA9IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGFycmF5
TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVpZ2h0ID0gZGVzY3JpcHRvci5z
aXplLmhlaWdodDsKLSAgICAgICAgZGVwdGggPSBkZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBzdGF0aWNfY2FzdDxN
VExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChk
ZXNjcmlwdG9yLmZvcm1hdCkpOwotCi0gICAgYXV0byBtdGxVc2FnZSA9IG10bFRleHR1cmVVc2Fn
ZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKHVzYWdlLCBmdW5jdGlvbk5hbWUpOwotICAgIGlmICgh
bXRsVXNhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGF1dG8gc3RvcmFnZU1vZGUgPSBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0jZWxzZQotICAg
IGF1dG8gc3RvcmFnZU1vZGUgPSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291
bnQocGl4ZWxGb3JtYXQsIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpOwotI2VuZGlmCi0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFdpZHRo
OndpZHRoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRIZWlnaHQ6aGVpZ2h0XTsKLSAgICBbbXRs
RGVzY3JpcHRvciBzZXREZXB0aDpkZXB0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0QXJyYXlM
ZW5ndGg6YXJyYXlMZW5ndGhdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1pcG1hcExldmVsQ291
bnQ6ZGVzY3JpcHRvci5taXBMZXZlbENvdW50XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRTYW1w
bGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRU
ZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGRlc2NyaXB0
b3IpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRQaXhlbEZvcm1hdDpwaXhlbEZvcm1hdF07Ci0g
ICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6Km10bFVzYWdlXTsKLQotICAgIFttdGxEZXNjcmlw
dG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VNb2RlXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwotfQotCi1SZWZQdHI8R1BVVGV4
dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVUZXh0
dXJlOjp0cnlDcmVhdGUoKSI7Ci0KLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVEZXZpY2UhIiwgZnVuY3Rpb25O
YW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFbZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCkgc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6ZGVzY3JpcHRvci5z
YW1wbGVDb3VudF0pIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9y
KG1ha2VTdHJpbmcoIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0ICIsIGRlc2NyaXB0b3Iuc2FtcGxl
Q291bnQsICIgc2FtcGxlIGNvdW50LiIpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0K
LSAgICBhdXRvIHVzYWdlID0gT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+Ojpmcm9t
UmF3KGRlc2NyaXB0b3IudXNhZ2UpOwotICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IHRyeUNyZWF0
ZU10bFRleHR1cmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgZGVzY3JpcHRvciwgdXNhZ2UpOwot
ICAgIGlmICghbXRsRGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBS
ZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgbXRsVGV4dHVyZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURl
dmljZSgpIG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0K
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRsVGV4dHVyZSksIHVzYWdlKSk7
Ci19Ci0KLVJlZjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGUoUmV0YWluUHRyPE1UTFRl
eHR1cmU+JiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdl
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJl
KSwgdXNhZ2UpKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVyZShSZXRhaW5QdHI8TVRMVGV4
dHVyZT4mJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2Up
Ci0gICAgOiBtX3BsYXRmb3JtVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotICAgICwgbV91c2Fn
ZSh1c2FnZSkKLXsKLSAgICBtX3BsYXRmb3JtVXNhZ2UgPSBNVExSZXNvdXJjZVVzYWdlUmVhZDsK
LSAgICBpZiAoaXNTYW1wbGVkKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNv
dXJjZVVzYWdlU2FtcGxlOwotICAgIGVsc2UgaWYgKGlzU3RvcmFnZSgpKQotICAgICAgICBtX3Bs
YXRmb3JtVXNhZ2UgfD0gTVRMUmVzb3VyY2VVc2FnZVdyaXRlOwotfQotCi1SZWZQdHI8R1BVVGV4
dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkKLXsKLSAgICBS
ZXRhaW5QdHI8TVRMVGV4dHVyZT4gdGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgdGV4dHVyZSA9IGFkb3B0TlMoW21fcGxhdGZvcm1UZXh0dXJlIG5ld1Rl
eHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0Om1fcGxhdGZvcm1UZXh0dXJlLmdldCgpLnBpeGVsRm9y
bWF0XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXRleHR1
cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0
dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShX
VEZNb3ZlKHRleHR1cmUpLCBtX3VzYWdlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMDg5ZjRhNGM2YjI4MzRhOWFlNmZhZDQwNzU3MTZhZTVk
YzcwOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHUFVVdGlscy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9ybVRl
eHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2Ug
R1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9y
bWF0UkdCQThVbm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmE4dWludDoKLSAg
ICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQThVaW50OwotICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdDo6QmdyYTh1bm9ybToKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0QkdSQThV
bm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4Ogot
ICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDg7Ci0gICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAgcmV0dXJuIE1U
TFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6
UmdiYTE2ZmxvYXQ6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0Owot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1QbGF0Zm9ybUNvbXBhcmVG
dW5jdGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihHUFVD
b21wYXJlRnVuY3Rpb24gZnVuYykKLXsKLSAgICBzd2l0Y2ggKGZ1bmMpIHsKLSAgICBjYXNlIEdQ
VUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rp
b25OZXZlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzczoKLSAgICAgICAgcmV0
dXJuIE1UTENvbXBhcmVGdW5jdGlvbkxlc3M7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rpb246
OkVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uRXF1YWw7Ci0gICAgY2Fz
ZSBHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NFcXVhbDoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBh
cmVGdW5jdGlvbkxlc3NFcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRl
cjoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkdyZWF0ZXI7Ci0gICAgY2FzZSBH
UFVDb21wYXJlRnVuY3Rpb246Ok5vdEVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1
bmN0aW9uTm90RXF1YWw7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXJFcXVh
bDoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbDsKLSAgICBj
YXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFy
ZUZ1bmN0aW9uQWx3YXlzOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rp
c3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggMTI5M2RhNTU5ZjkyOWE3YWVl
YzU0ZDA3YWE5YWU0Zjk5NGY5NWI0NC4uZjAyY2U4ZmRmMGYwYzU4ZjQwNzBkNGI0Yjc4MWVkYjVm
MWVjMjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC0zOSw2
ICszOSw3IEBACiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNh
c3RzQ0YuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
IAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0ICJDb3JlVmlk
ZW9Tb2Z0TGluay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAppbmRleCA2ZDFiZTYxM2ExMjk0YjVhZjI5MThkNjE2OTBmY2M3ZmUyMWRiNDIy
Li5jZTc2OWY4NWQ2MWE5NGE0OGEyZDcyOGQ3MTAwOWZjMThmZTkwNmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA2Myw3ICsx
MDYzLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29u
c3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBkYXRlQ29udGVudHNS
ZWN0cygpOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2FudmFzKCkg
JiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVy
Q29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAgICAgICAg
IGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCkBAIC0yODg1
LDcgKzI4ODUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5nZWQoQ29u
dGVudENoYW5nZVR5cGUgY2hhbmdlVHlwZSkKICAgICBpZiAoKGNoYW5nZVR5cGUgPT0gTWFza0lt
YWdlQ2hhbmdlZCkgJiYgbV9tYXNrTGF5ZXIpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVl
ZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotI2lmIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBpZiAoKGNoYW5nZVR5cGUg
PT0gQ2FudmFzQ2hhbmdlZCB8fCBjaGFuZ2VUeXBlID09IENhbnZhc1BpeGVsc0NoYW5nZWQpICYm
IHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRl
cmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBpZiAoY2hhbmdlVHlw
ZSA9PSBDYW52YXNDaGFuZ2VkKQogICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJl
RmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdz
L1dlYktpdC1hcHBsZXR2b3MucGxpc3QKaW5kZXggYWU0ZWU0NTdhMjEzMTMzOGY2YTViNzVlZDc1
ZjYzNmYzYTBmNTI2MC4uMjAyNDgzYzY1ZjEwNTg1OGFkYTJjOTZlMDYyYTI2NDZiNTg2NmE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5w
bGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBs
aXN0CkBAIC0yLDk1ICsyLDkwIEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8v
RFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlz
dC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3lu
Y19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJp
YnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0
ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0Pgot
ICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0
ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwv
a2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0Pgot
ICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+
Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxl
ZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4K
LSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAg
ICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+
SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1l
bnRhbF9wZGY8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9i
YXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxr
ZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0Pgor
CTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9j
ZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5D
b2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5
PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRy
aWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0
cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtl
eT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8
a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+
c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT52cDlfZGVjb2Rlcjwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5Pldl
YlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxr
ZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CmluZGV4IDYyMWM5MjE2NmM4OTJj
YjU0MWNmYTc2YjYyMzgxNTY2OGExZWMyNzcuLjE3NDVhMmU5NTViNTYxNjJmZjY0ZmI2ZmI2ZmMz
ZTUyMTk4ZDNkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1pb3MucGxpc3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5w
bGlzdApAQCAtMiw5NSArMiw5MCBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5
bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRy
aWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxl
dGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1
dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8
L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4K
LSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxr
ZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4K
LSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAg
ICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+
SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1l
bnRhbF9wZGY8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9i
YXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxr
ZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5
PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0Pgor
CTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9j
ZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5D
b2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5
PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRy
aWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0
cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5
PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxr
ZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5z
d192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2Vi
WFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9k
aWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5h
YmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtl
eT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0IGIvU291cmNl
L1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0CmluZGV4IDYyMWM5MjE2NmM4
OTJjYjU0MWNmYTc2YjYyMzgxNTY2OGExZWMyNzcuLjE3NDVhMmU5NTViNTYxNjJmZjY0ZmI2ZmI2
ZmMzZTUyMTk4ZDNkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dl
YktpdC1tYWNvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQt
bWFjb3MucGxpc3QKQEAgLTIsOTUgKzIsOTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0v
L0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJv
cGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8
a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxr
ZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29k
ZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAg
ICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+
QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNv
bXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVz
PC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tl
eT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+
aW5jcmVtZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29k
ZXJfb25fYmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9y
ZWFkZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAg
IDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5PgotICAgIDxk
aWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwv
ZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5n
cHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJ
CTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+
CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX21l
ZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxr
ZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+
CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJn
bDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0Pgor
CQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGlj
dD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+aW5jcmVtZW50YWxfcGRmPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0Pgor
CTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT52cDlfZGVjb2Rlcjwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8
a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2Uv
PgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgorCTxkaWN0PgorCQk8
a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fcGFyc2Vy
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0
PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9kaWN0PgogPC9wbGlzdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC13YXRjaG9zLnBsaXN0
IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKaW5kZXgg
YWU0ZWU0NTdhMjEzMTMzOGY2YTViNzVlZDc1ZjYzNmYzYTBmNTI2MC4uMjAyNDgzYzY1ZjEwNTg1
OGFkYTJjOTZlMDYyYTI2NDZiNTg2NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0
dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJl
RmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKQEAgLTIsOTUgKzIsOTAgQEAKIDwhRE9DVFlQRSBw
bGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBw
bGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+
CiA8ZGljdD4KLSAgICA8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9r
ZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1
ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAg
ICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAg
ICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVy
aW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+
Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAg
ICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAg
IDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgICAg
IDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+
Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwv
ZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+
Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9w
YXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRz
YW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAg
IDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Ny
b2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJ
PC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tl
eT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8
L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtl
eT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNv
ZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+
Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCQk8a2V5PkF0dHJpYnV0ZXM8
L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgor
CQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5p
bmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0
cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5
PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1
ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0Pgor
CTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2Rp
Y3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5kZXggMmJhNjI4NzNmMzJiMzFjMDM2OWExYTUxNGZmMWNi
MDM4OTI0ZWI3My4uNzA1NzI1YjMxOTdiNmEzYzdhOGNkMWY3YTkyZTIwNjlkOTFkMWRlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwCkBAIC0yMzIsMTkgKzIzMiw2IEBAIGJvb2wgZGVmYXVsdFdlYlJUQ0NvZGVjc0luR1BV
UHJvY2VzcygpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKIAotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKQotewotI2lmIEhBVkUoU1lTVEVNX0ZF
QVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVhdHVyZUZsYWdFbmFibGVkKCJXZWJHUFUiKTsK
LSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93c2VyUHJpdmFjeSgpCiB7CiAjaWYgSEFWRShTWVNU
RU1fRkVBVFVSRV9GTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXggMzVhMmY2ZmRkZDc1NTQ3ZTY0NzhhYTE2OWZlMGZi
OTI4YzRiMWE0OC4uY2U3ZjRmZmQ2ODdiM2M1MDliNGY4M2RiMjAzNmUwMTkzOTg1OWNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmgKQEAgLTg1LDEwICs4NSw2IEBAIGJvb2wgZGVmYXVsdENhcHR1cmVWaWRlb0luR1BVUHJvY2Vz
c0VuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFdlYlJUQ0NvZGVjc0luR1BVUHJvY2VzcygpOwogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwot
I2VuZGlmCi0KIGJvb2wgZGVmYXVsdEluQXBwQnJvd3NlclByaXZhY3koKTsKIAogI2lmIEhBVkUo
SU5DUkVNRU5UQUxfUERGX0FQSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCA3YWVlM2M1YjBl
NDU5NWU5YjZhMWVkNjk5ZTEzZDgyNTM1NTZmOWRhLi5jMjFkODJiZjJhZTA4YmQ0NTQzNTI5OTE5
NDExNjI4MTlhOTM2YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTI2MSw3ICsyNjEsNiBA
QAogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVk
IgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdM
MkVuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFdlYkdQVUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0V2ViR1BVRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWQiCiAjZGVmaW5lIFdl
YktpdEFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2VydmVyVGlt
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRTZXJ2ZXJUaW1pbmdFbmFibGVkIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5k
ZXggZmY3Mzg4NWIxODU0YmNlNGRjMzk0ZTc5MTg5MWFkYzkxNDBjZmQzMC4uNmRlNGFjMWM4MGMz
ZGFkM2EwOWZkZTU3YmFjNzRmZTc5NDVlZjUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0zMTcwLDE2ICszMTcwLDYgQEAg
LSAodm9pZClzZXRXZWJHTDJFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBbc2VsZiBfc2V0Qm9v
bFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsK
IH0KIAotLSAoQk9PTCl3ZWJHUFVFbmFibGVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ib29sVmFs
dWVGb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVuY2VLZXldOwotfQotCi0tICh2b2lk
KXNldFdlYkdQVUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAotewotICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVuY2VLZXldOwotfQot
CiAtIChCT09MKW1hc2tXZWJHTFN0cmluZ3NFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9i
b29sVmFsdWVGb3JLZXk6V2ViS2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmluZGV4IGE1OTI5N2FmM2ZkYTU1Y2Y1M2Q5ZDkw
ODFhYjk5N2M0ZjdiZTU0OWMuLjUwYzdiOGI1NzYxYjQ3ZWE0Y2UyYzFmNGFkNzZkYWRjZjZlYzM5
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBib29sIGlzRmVhdHVyZUZsYWdFbmFibGVkKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgp
OwotI2VuZGlmCi0KICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogYm9vbCBkZWZhdWx0
SW5jcmVtZW50YWxQREZFbmFibGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
bW0KaW5kZXggMzUyZmRjNWUxOGFmMmM1OGI0MmZlNGUwZTdjZjY3MzcxZDY4Y2U2Yy4uNGU4YTU4
OTM4OWIzYWYwNjFjYjg0MTNhMWFiNTIwOGIwZDRiMzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXMubW0KQEAgLTYyLDE5ICs2Miw2IEBAIGJvb2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29u
c3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCkKLXsKLSNpZiBIQVZFKFNZU1RFTV9GRUFUVVJF
X0ZMQUdTKQotICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCgiV2ViR1BVIik7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0K
ICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogCiBib29sIGRlZmF1bHRJbmNyZW1lbnRh
bFBERkVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNTA3OTc1MTQ4OGU1NTFjZmNiMmI5NGI5
YjU4MDNmNmYzZTk4Yzc5Zi4uNWIyNzFmMDlhMzM1OTNhM2Y1NzgxYWEwZWJiN2VkZjJkY2MwZmVh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMzUsNyArMzM1LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpX
ZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lU
X0RFUFIKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkFuaW1hdGlvbnNDb21wb3NpdGVP
cGVyYXRpb25zRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkFuaW1hdGlv
bnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdl
YkdMMkVuYWJsZWQ7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3ZWJHUFVFbmFibGVkOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbWFza1dlYkdMU3RyaW5nc0VuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBhY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2VydmVyVGltaW5nRW5hYmxlZDsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBk
NjBkOTVlZjAyNzIwYjFjODUyNTYxNjk0OTMwYjE4YjI1NTcwN2RkLi4yMDZhZDNlYTUxMTM0NjFk
OTliZTU5ZTkwYzkyOTU5NmYzNjVmNDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDI5IEBACisyMDIxLTA3
LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRl
Y3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVxdWVz
dENsaWVudE5vZGVzLXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9j
YW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdl
YmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9y
ZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3Zl
LXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBkYXRl
U2hhZGVyLXdlYmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50LWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13
ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICog
d2ViZ3B1L2JpbmQtZ3JvdXBzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvYmluZC1ncm91cHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxlbmQtY29s
b3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVy
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9idWZmZXItY29tbWFuZC1idWZm
ZXItcmFjZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLWVycm9ycy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1z
dHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb2xvci13cml0
ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Nv
bW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Nv
bW1hbmQtYnVmZmVycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21wdXRlLXBp
cGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Nv
bXB1dGUtcGlwZWxpbmUtZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Rl
cHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS9waXBlbGluZS1sYXlvdXRzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvcGlwZWxpbmUtbGF5b3V0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9xdWV1
ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3F1ZXVl
LWNyZWF0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1jb21tYW5k
LWVuY29kaW5nLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVuZGVy
LWNvbW1hbmQtZW5jb2RpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVuZGVy
LXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3JlbmRlci1waXBlbGluZS1lcnJvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
cmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3JlbmRlci1waXBlbGluZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVzb3Vy
Y2VzL2JsdWUtY2hlY2tlcmVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVzb3Vy
Y2VzL2dyZWVuLTQwMC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1
bGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvc2hhZGVyLW1vZHVs
ZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlw
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3NpbXBsZS10cmlhbmds
ZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS90ZXh0dXJlLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZS1jcmVhdGlv
bi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlw
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1cmUtdHJpYW5n
bGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZXMtdGV4dHVy
ZXZpZXdzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZXMt
dGV4dHVyZXZpZXdzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3VuY2FwdHVyZWQt
ZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdW5jYXB0dXJl
ZC1lcnJvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10
cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92
ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUt
c3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1z
d2l6emxlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYWRk
cmVzcy1vZi1zd2l6emxlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Fy
Yml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBlY3RlZC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2Nh
dGlvbnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZh
bHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvYXJyYXktbGVuZ3RoLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVz
dHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYmFkLWFkZC1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2JhZC1hZGQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYm9vbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9ib29scy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXgtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jYXN0cy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Nhc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdy
aXRlLXZhcmlhYmxlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxl
cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWIu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29tbWVudC1wYXJz
aW5nLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jb21wdXRlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvcHktZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jb3B5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlw
ZS1jaGVjay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9k
ZXJlZmVyZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNo
ZWNrZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9v
cC1icmVhay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2RvLXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVu
dW0uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25z
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvdC1leHBy
ZXNzaW9ucy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb3VibGUtbm90
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG91YmxlLW5v
dC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMt
c2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90LXByb2R1
Y2UtZHVwbGljYXRlLWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2R1cGxpY2F0ZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9kdXBsaWNhdGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3Vy
ZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXBy
b3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxp
ZmV0aW1lLTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXBy
b3Blci12YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1j
b25zdHJ1Y3Rvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9l
bnVtLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51
bXMtMi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1z
LTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bXMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtcy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2VxdWFsaXR5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2dldHRlci1zZXR0ZXItdHlwZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2dldHRlci1zZXR0ZXItdHlwZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luY3JlbWVudC1zZXR0ZXIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0
ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRo
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBh
cmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbnQtbGl0
ZXJhbC1jb21wYXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2pzL3Rl
c3QtaGFybmVzcy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbGVuZ3RoLXN0
ZGxpYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xlbmd0
aC1zdGRsaWIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbGV4aW5nLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbGV4aW5nLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbGl0ZXJhbHMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWstZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWsuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLXNwZWMtdGVzdHMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxl
cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sdmFsdWVzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbHZhbHVlcy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWYtc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYWtl
LWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9m
LXNjYWxhcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91
dC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1t
ZW1vcnktbGF5b3V0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJp
eC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJl
c3Npb24tcnZhbHVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9udWxsLWFyZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcmVmLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1kaXYtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1kaXYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLW1pbnVzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3lu
dGF4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
dGltZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVj
dG9yLWFzc2lnbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L29wZXJhdG9yLXZlY3Rvci1hc3NpZ24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci14eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL292ZXJsb2FkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvb3ZlcmxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvcGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9wbHVzLWVxdWFscy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9wb2ludGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5
LXdyaXRlLWhpZ2gtem9tYmllcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwt
dmFyaWFibGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9y
ZXR1cm4tc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0xMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xNC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xNS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNi1leHBlY3RlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xNy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xOC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
MC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTIxLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yNC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTI2LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtNS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNy1leHBlY3RlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NldHRl
ci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2ltcGxlLWFycmF5cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2ltcGxlLWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJp
dC10eXBlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2UtYmlu
ZC1ncm91cC0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c3BhcnNlLWJpbmQtZ3JvdXAtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zcGFyc2UtYmluZC1ncm91cC0zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9yZS1udWxsLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVy
dHktdXBkYXRlcy1wcm9wZXJseS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zdHJ1Y3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9z
dHJ1Y3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZp
ZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2gtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1j
bGFzaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zd2l0Y2gtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zd2l0Y2guaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVz
cy10ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdl
dGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxl
LWdyYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLWxldmVsLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC90ZXh0dXJlcy1zYW1wbGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC90eXBlLW1pc21hdGNoLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJp
YWJsZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3VzZS11
bmRlZmluZWQtdmFyaWFibGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
dmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlv
bi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1t
YXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdmVjdG9yLXN5bnRheC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWsuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1jb250aW51ZS1l
eHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGlsZS1sb29w
LWNvbnRpbnVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3dobHNsLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3dobHNsLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3Vt
ZW50LWxlbmd0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy10
eXBlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3dyb25n
LXR5cGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlh
bGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3RlZC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWw6IFJl
bW92ZWQuCisKIDIwMjEtMDctMjggIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBpUGFkIF0gcGxhdGZvcm0vaXBhZC9tZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvbWVkaWEtZG9jdW1lbnRzL21lZGlhLWRvY3VtZW50LWF1ZGlvLWlvcy1zaXppbmcu
aHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkOTc2ZWI4Mjhh
ZWM0NTYyMmVjNjAzNmMwZTg3ZmY1ZDFlMTg3NDI5Li44MGFiOGZmNzc5MzhmMzMwMDEwMTYxNGJj
ZThhOGY0N2M4MjE3MzQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzNDYsOCArMzM0Niw2IEBA
IGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xOTkwMzkgZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtcGFy
YWdyYXBoLTAwMy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xOTkwMjggd2ViZ3B1L3do
bHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwgWyBTbG93IF0KLQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9vZmZzZXRUb3BMZWZ0LWlubGluZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGVzdCBpcyBmYWlsaW5nIGFuZCBpcyBwcmludGluZyBk
aWZmZXJlbnQgdmFsdWVzIHdoZW4gaXQgZmFpbHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dApp
bmRleCBhMWEyMmMzYjUyZWI4NzE0ZGI5NmRiYjhkZGEzY2U0NWViMmI2Y2U1Li41OWE2NTEzYTVh
YTgzYWNhOWNkZGY4Nzc1NTU1ZDZjYmRjYjNlNGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50
eHQKQEAgLTEwLDcgKzEwLDYgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0b3Iu
Y29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZpZ2F0
b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2aWdh
dG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwogbmF2aWdh
dG9yLmxhbmd1YWdlcyBpcyBPSwpAQCAtMzksNyArMzgsNiBAQCBuYXZpZ2F0b3IuY29udGFjdHMg
aXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0b3Iu
Z3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1
YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTIwMmRkNWMyODFjYmYw
YjBjZTY3MDhjMTBjNzUzMjVmYjE5ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4
dC13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGVz
dCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBX
ZWJHUFUgY2FudmFzZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMuQ3JlYXRl
Q29udGV4dFdlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0
V2ViR1BVLk5vQ2FudmFzZXMKLVBBU1M6IENhbnZhc01hbmFnZXIgc2hvdWxkIGhhdmUgbm8gY2Fu
dmFzZXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQ
VS5EZXZpY2UKLVBBU1M6IENhbnZhcyBjb250ZXh0IHNob3VsZCBiZSBXZWIgR1BVLgotCi1QQVNT
OiBSZW1vdmVkIGNhbnZhcyBoYXMgZXhwZWN0ZWQgSUQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuQXR0YWNoZWQKLVBBU1M6IEluc3Bl
Y3RvciBjYW52YXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZvciBhdHRhY2hlZCBHUFVDYW52YXND
b250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQotLS0gUnVubmluZyB0ZXN0
IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5EZXRhY2hlZAotUEFTUzog
SW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGRldGFjaGVkIEdQVUNh
bnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLgotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkNTUwotUEFTUzog
SW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52YXND
b250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDBmMTE4ZDA4ODZjYjc1ODAyZmExNTQwY2E1
Zjg1NzZhYzZhMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2NyZWF0ZS1j
b250ZXh0LXV0aWxpdGllcy5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2NyZWF0ZS1jb250ZXh0LXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRXZWJHUFVFbmFibGVkKHRydWUpOwotCi1mdW5jdGlvbiBjcmVhdGVEZXZpY2UoKSB7Ci0g
ICAgZnVuY3Rpb24gcmVjZWl2ZWREZXZpY2UoZGV2aWNlKSB7Ci0gICAgICAgIHdpbmRvdy5jb250
ZXh0cy5wdXNoKGRldmljZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcmVjZWl2ZWRBZGFwdGVy
KGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihyZWNlaXZl
ZERldmljZSk7Ci0gICAgfQotCi0gICAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpLnRo
ZW4ocmVjZWl2ZWRBZGFwdGVyKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LkNyZWF0ZUNvbnRleHRVdGlsaXRpZXMuaW5pdGlhbGl6ZVRlc3RT
dWl0ZSgiQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUiKTsKLQotICAgIEluc3BlY3RvclRlc3Qu
Q3JlYXRlQ29udGV4dFV0aWxpdGllcy5hZGRTaW1wbGVUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6
ICJEZXZpY2UiLAotICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRGV2aWNlKClgLAotICAgICAg
ICBjb250ZXh0VHlwZTogV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSwKLSAgICB9KTsKLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5DcmVhdGVDb250
ZXh0V2ViR1BVLkNhbnZhcy5BdHRhY2hlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJl
IHRoYXQgYXR0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNhbnZh
cywgaW5zdGVhZCBvZiB0aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7
Ci0gICAgICAgICAgICBsZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxpc3Rl
bmVyID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9PT0g
V0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRlZCA9
IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQXR0YWNoZWRDYW52YXMoImdwdSIpYCkKLQotICAgICAg
ICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZhcyBz
aG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGF0dGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgd2l0aG91
dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLiIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAg
c3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLkNyZWF0ZUNvbnRleHRX
ZWJHUFUuQ2FudmFzLkRldGFjaGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhh
dCBkZXRhY2hlZCBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFzIGEgY2FudmFzLCBp
bnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAg
ICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIg
PSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5D
b2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRUeXBlID09PSBXSS5D
YW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBjcmVhdGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXRhY2hlZENhbnZhcygiZ3B1IilgKQotCi0gICAgICAgICAg
ICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotCi0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFzIHNob3Vs
ZCBub3QgYmUgY3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRob3V0IGNv
bm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0KLSAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQ
VS5DYW52YXMuQ1NTIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBDU1MgR1BV
Q2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNhbnZhcywgaW5zdGVhZCBvZiB0aGUg
V2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBsZXQg
Y3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY2FudmFzTWFu
YWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVu
dC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRU
eXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShg
Y3JlYXRlQ1NTQ2FudmFzKCJncHUiLCAiY3NzLWNhbnZhcyIpYCkKLQotICAgICAgICAgICAgV0ku
Y2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29s
bGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90
IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdl
YkdQVURldmljZS4iKTsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9u
IGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgY2FudmFzZXMuPC9wPgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50
Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMv
cmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJhYmU3M2M2MzE1ODUyZDA0YzllY2E5MzA1NjdmYmQ3ZGUyYTcyZTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotegotVGVzdCB0aGF0IENhbnZhc0FnZW50IHRy
YWNrcyBjaGFuZ2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2YgYSBXZWJHUFUgZGV2aWNlLgotCi0K
LT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RDbGllbnROb2Rlcy5XZWJHUFUK
LS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQVS5D
cmVhdGUKLVBBU1M6IFRoZXJlIHNob3VsZCBiZSBvbmUgY2xpZW50IG5vZGUuCi1QQVNTOiBDbGll
bnQgbm9kZSAiY2FudmFzIiBpcyB2YWxpZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViMzNmZTNmOWQzYTEwZWU1YzRjMTU2OGE4M2RhMTQx
NjA4OGYwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLXo8IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmlu
dGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdQVUVuYWJsZWQo
dHJ1ZSk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsaWVudCgpIHsKLSAgICBsZXQgYWRhcHRl
ciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICBsZXQgZGV2aWNl
ID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBsZXQgY29udGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnRleHQuY29uZmlndXJlU3dhcENoYWluKHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifSk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQVSIpOwotCi0g
ICAgZnVuY3Rpb24gbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpIHsKLSAgICAgICAgZm9yIChs
ZXQgY2xpZW50Tm9kZSBvZiBjbGllbnROb2RlcykgewotICAgICAgICAgICAgaWYgKGNsaWVudE5v
ZGUpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBDbGllbnQgbm9kZSAiJHtj
bGllbnROb2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IoKX0iIGlzIHZhbGlkLmApOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiSW52YWxpZCBj
bGllbnQgbm9kZS4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BVLkNyZWF0
ZSIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBjcmVhdGluZyBhIFdlYkdQVSBk
ZXZpY2UgY2xpZW50IG5vZGUgaXMgdHJhY2tlZCBjb3JyZWN0bHkuIiwKLSAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLkNhbnZhcy5hd2FpdEV2ZW50KFdJLkNh
bnZhcy5FdmVudC5DbGllbnROb2Rlc0NoYW5nZWQpCi0gICAgICAgICAgICAudGhlbigoZXZlbnQp
ID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC50YXJnZXQu
Y29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUpOwotICAgICAgICAg
ICAgICAgIGV2ZW50LnRhcmdldC5yZXF1ZXN0Q2xpZW50Tm9kZXMoKGNsaWVudE5vZGVzKSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2xpZW50Tm9k
ZXMubGVuZ3RoLCAxLCAiVGhlcmUgc2hvdWxkIGJlIG9uZSBjbGllbnQgbm9kZS4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpOwotICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQ2xpZW50
KClgKS5jYXRjaChyZWplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3QgdGhhdCBDYW52YXNBZ2VudCB0cmFja3MgY2hhbmdl
cyBpbiB0aGUgY2xpZW50IG5vZGVzIG9mIGEgV2ViR1BVIGRldmljZS48L3A+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RT
aGFkZXJTb3VyY2Utd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYWEwZTRmMWYwNTU5MzQ4Yzg4M2I0MTljZjc1NGUxY2JlYWE1
ZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotV2ViR1BVIHRlc3RzIGZvciBD
YW52YXMucmVxdWVzdFNoYWRlclNvdXJjZSBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uY29tcHV0ZS5T
aGFkZXIuY29tcHV0ZQotCi1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21w
dXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRo
cmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50KHRocmVhZElE
LngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLQotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uY29t
cHV0ZS5TaGFkZXIuZnJhZ21lbnQKLVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4K
LUVycm9yOiBNaXNzaW5nIHNoYWRlciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9n
cmFtSWQKLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNl
LldlYkdQVS5Qcm9ncmFtLmNvbXB1dGUuU2hhZGVyLnZlcnRleAotUEFTUzogU2hvdWxkIHByb2R1
Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE1pc3Npbmcgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5
cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJl
cXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci5jb21wdXRlCi1Q
QVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTWlzc2luZyBzaGFkZXIg
b2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi0KLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5yZW5kZXIu
U2hhZGVyLmZyYWdtZW50Ci0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlv
biB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBwb3NpdGlvbjsKLX0KLQotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJl
cXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci52ZXJ0ZXgKLQot
dmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
LCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9z
aXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwot
fQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNo
YWRlclNvdXJjZS13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVx
dWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzJiZTYwZWQxYTJiOWUwYzlkMDk1OWExY2Y4YTYwMDQzZDJkNjhlOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRp
ZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnJlcXVl
c3RTaGFkZXJTb3VyY2UuV2ViR1BVIik7Ci0KLSAgICBmb3IgKGxldCBwcm9ncmFtVHlwZSBvZiBP
YmplY3QudmFsdWVzKFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUpKSB7Ci0gICAgICAgIGZv
ciAobGV0IHNoYWRlclR5cGUgb2YgT2JqZWN0LnZhbHVlcyhXSS5TaGFkZXJQcm9ncmFtLlNoYWRl
clR5cGUpKSB7Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICAg
ICAgbmFtZTogYENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlLldlYkdQVS5Qcm9ncmFtLiR7cHJv
Z3JhbVR5cGV9LlNoYWRlci4ke3NoYWRlclR5cGV9YCwKLSAgICAgICAgICAgICAgICBhc3luYyB0
ZXN0KCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IEluc3BlY3Rv
clRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9ncmFtVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93ICJNaXNzaW5nIHNoYWRlciBwcm9ncmFtIjsKLQotICAgICAgICAgICAgICAgICAgICBs
ZXQgbG9nU2hhZGVyID0gYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IHtzb3VyY2V9ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQ
cm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLQotICAg
ICAgICAgICAgICAgICAgICBsZXQgaXNDb21wdXRlUHJvZ3JhbSA9IHByb2dyYW1UeXBlID09PSBX
SS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGU7Ci0gICAgICAgICAgICAgICAgICAg
IGxldCBpc0NvbXB1dGVTaGFkZXIgPSBzaGFkZXJUeXBlID09PSBXSS5TaGFkZXJQcm9ncmFtLlNo
YWRlclR5cGUuQ29tcHV0ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcHV0ZVByb2dy
YW0gIT09IGlzQ29tcHV0ZVNoYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IElu
c3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGxvZ1NoYWRlcik7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGxvZ1NoYWRlcigpCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+V2ViR1BVIHRlc3RzIGZvciBDYW52YXMucmVxdWVzdFNo
YWRlclNvdXJjZSBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxNjkyMjEyYThm
M2Q3N2RkZGM1ZDBjNjE1NWM5MzhiZDg5MGViYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVD
b250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAK
LVRlc3RzIGZvciB0aGUgQ2FudmFzLnJlc29sdmVDb250ZXh0IGNvbW1hbmQgZm9yIFdlYkdQVSBk
ZXZpY2VzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlc29sdmVDb250ZXh0
V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlc29sdmVDb250ZXh0V2ViR1BV
LnZhbGlkSWRlbnRpZmllcgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSB0eXBlICJvYmplY3Qi
LgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2Vi
Z3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdl
YmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTI1YjI3MTY0OGY0NDRj
MjNjOWQyYTg1Y2I4NTIwNjI0Y2I2MjU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRl
eHQtd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1p
ZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdl
YkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZURldmljZSgpIHsKLSAgICBuYXZp
Z2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkudGhlbihmdW5jdGlvbiBhZGFwdGVyUmVxdWVzdGVk
KGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihmdW5jdGlv
biBkZXZpY2VSZXF1ZXN0ZWQoZGV2aWNlKSB7Ci0gICAgICAgICAgICB3aW5kb3cuY29udGV4dFdl
YkdQVSA9IGRldmljZTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2Fu
dmFzLnJlc29sdmVDb250ZXh0V2ViR1BVIik7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0g
ICAgICAgIG5hbWU6IGBDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUudmFsaWRJZGVudGlmaWVy
YCwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0IGZv
ciB0aGUgZ2l2ZW4gY2FudmFzIGlkZW50aWZpZXIuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5jYW52YXNNYW5hZ2VyLmNhbnZh
c0NvbGxlY3Rpb24uc2l6ZSwgIlRoZXJlIHNob3VsZCBiZSBubyBjYW52YXNlcy4iKTsKLQotICAg
ICAgICAgICAgbGV0IFtjYW52YXNDb2xsZWN0aW9uSXRlbUFkZGVkRXZlbnRdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVj
dGlvbi5hd2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKSwKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXZpY2UoKWApLAot
ICAgICAgICAgICAgXSk7Ci0KLSAgICAgICAgICAgIGxldCBjYW52YXMgPSBjYW52YXNDb2xsZWN0
aW9uSXRlbUFkZGVkRXZlbnQuZGF0YS5pdGVtOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoY2FudmFzLmNvbnRleHRUeXBlLCBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAi
QWRkZWQgY2FudmFzIHNob3VsZCBiZSBhIFdlYkdQVSBkZXZpY2UuIik7Ci0KLSAgICAgICAgICAg
IGNvbnN0IG9iamVjdEdyb3VwID0gInRlc3QiOwotICAgICAgICAgICAgbGV0IHtvYmplY3R9ID0g
YXdhaXQgQ2FudmFzQWdlbnQucmVzb2x2ZUNvbnRleHQoY2FudmFzLmlkZW50aWZpZXIsIG9iamVj
dEdyb3VwKQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChvYmplY3QudHlw
ZSwgIm9iamVjdCIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIHR5cGUgIm9iamVjdCIuYCk7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG9iamVjdC5jbGFzc05hbWUsICJHUFVE
ZXZpY2UiLCBgUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuYCk7Ci0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwot
fQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+
VGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNvbnRleHQgY29tbWFuZCBmb3IgV2ViR1BVIGRl
dmljZXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3Zl
LXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2OGQx
ZmJhZmJmZTM0ZTY4Yzk0ZDk4NzUzY2EwMjRkNTVjNGZlOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9z
aGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDI4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29u
c3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUgdG9r
ZW4KLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBX
SExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgotQ09O
U09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogV0hMU0wgY29t
cGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUgdG9rZW4KLVRlc3QgdGhhdCBD
YW52YXNNYW5hZ2VyIHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgV2ViR1BVIHNo
YWRlciBwcm9ncmFtcy4KLQotCi09PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENhbnZhcy5TaGFkZXJQ
cm9ncmFtLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9ncmFt
LldlYkdQVS5FeGlzdGluZwotUEFTUzogQWRkZWQgImNvbXB1dGUiIFNoYWRlclByb2dyYW0uCi1Q
QVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotUEFTUzogVGhlcmUgc2hvdWxkIGJl
IHR3byBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuVmFsaWQKLVBBU1M6IEFkZGVkICJjb21wdXRl
IiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclBy
b2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIG5vdCBjcmVh
dGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuCi0KLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLlZh
bGlkCi1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLlJlbmRlci5JbnZhbGlk
Ci1QQVNTOiBTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFsaWQg
ZGVzY3JpcHRvci4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9ncmFt
LldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkCi1QQVNTOiBSZW1vdmVkIFNoYWRlclByb2dyYW0g
YmVmb3JlIENhbnZhcy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmYjg3NzJjMGIzNzVjNDBkNWQ3YTBlNDIwMmE1NGZm
NWQ1MmQwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJn
cHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci13aW5kb3cuYmVmb3JlVGVzdCA9IGFzeW5jIGZ1bmN0aW9uKCkgewotICAgIGF3YWl0IFBy
b21pc2UuYWxsKFsKLSAgICAgICAgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCJJTlZBTElEIiksCi0g
ICAgICAgIGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIiksCi0gICAgXSk7Ci19OwotCi1m
dW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZShgQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVYCk7Ci0KLSAgICBsZXQgY2FudmFz
ZXMgPSBBcnJheS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbik7Ci0gICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXMubGVuZ3RoID09PSAxLCAiVGhlcmUgc2hvdWxk
IG9ubHkgYmUgb25lIGNhbnZhcy4iKTsKLQotICAgIGxldCBjYW52YXMgPSBjYW52YXNlc1swXTsK
LSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMsICJUaGVyZSBzaG91bGQgYmUgYSBjYW52
YXMuIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlID09PSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAiQ2FudmFzIHNob3VsZCBiZSBXZWJHUFUuIik7
Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFByb2dyYW1BZGRlZChwcm9ncmFtVHlwZSkgewot
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAg
ICAgICAgbGV0IGxpc3RlbmVySXRlbUFkZGVkID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0
aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVu
dCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtID0gZXZlbnQuZGF0YS5pdGVtOwot
ICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLnByb2dyYW1UeXBlICE9PSBwcm9ncmFtVHlwZSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KHByb2dyYW0gaW5zdGFuY2VvZiBXSS5TaGFkZXJQcm9ncmFtLCBgQWRk
ZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9ncmFtLmApOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KHByb2dyYW0uY2FudmFzID09PSBjYW52YXMsICJTaGFkZXJQcm9n
cmFtIHNob3VsZCBiZSBmb3IgdGhlIGtub3duIENhbnZhcy4iKTsKLQotICAgICAgICAgICAgICAg
IHJlc29sdmUocHJvZ3JhbSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRlclBy
b2dyYW0uV2ViR1BVLkV4aXN0aW5nIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0
IFNoYWRlclByb2dyYW1BZGRlZCBpcyBzZW50IGZvciBhIHByb2dyYW0gY3JlYXRlZCBiZWZvcmUg
Q2FudmFzQWdlbnQgaXMgZW5hYmxlZC4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAg
ICAgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeGlzdHMocHJvZ3JhbVR5cGUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JUeXBlKHBy
b2dyYW1UeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYEFk
ZGVkICIke3Byb2dyYW1UeXBlfSIgU2hhZGVyUHJvZ3JhbS5gKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF3YWl0IGF3
YWl0UHJvZ3JhbUFkZGVkKHByb2dyYW1UeXBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGNoZWNrRXhpc3RzKFdJLlNo
YWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZSksCi0gICAgICAgICAgICAgICAgY2hlY2tF
eGlzdHMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIpLAotICAgICAgICAgICAg
XSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FudmFzLnNoYWRl
clByb2dyYW1Db2xsZWN0aW9uLnNpemUsIDIsICJUaGVyZSBzaG91bGQgYmUgdHdvIFNoYWRlclBy
b2dyYW0uIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
LSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5Db21wdXRl
LlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGFkZGVkL3JlbW92ZWQg
ZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBh
d2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgYXdhaXRQcm9ncmFtQWRkZWQoV0ku
U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlKSwKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDb21wdXRlUGlwZWxpbmUoKWApLAotICAg
ICAgICAgICAgXSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5Db21w
dXRlLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQvcmVt
b3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAg
ICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVudExp
c3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAoZXZlbnQpID0+IHsKLSAgICAg
ICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgiSU5WQUxJRCIpYCk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy5zaGFkZXJQ
cm9ncmFtQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQu
SXRlbUFkZGVkLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKHNoYWRlclByb2dyYW1BZGRlZCwgIlNob3VsZCBub3QgY3JlYXRlIGEgU2hhZGVyUHJvZ3Jh
bSBmb3IgYW4gaW52YWxpZCBkZXNjcmlwdG9yLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJvZ3Jh
bS5XZWJHUFUuQWRkZWQuUmVuZGVyLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVj
ayB0aGF0IGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5jIHRl
c3QoKSB7Ci0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAg
YXdhaXRQcm9ncmFtQWRkZWQoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIpLAot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRl
clBpcGVsaW5lKClgKSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJvZ3Jh
bS5XZWJHUFUuQWRkZWQuUmVuZGVyLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMg
dGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsKLQot
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9u
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVlOwot
ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIilgKTsKLQotICAgICAgICAg
ICAgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
Q29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RmFsc2Uoc2hhZGVyUHJvZ3JhbUFkZGVkLCAiU2hvdWxkIG5vdCBjcmVh
dGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuIik7Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNh
bnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkIiwKLSAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBTaGFkZXJQcm9ncmFtIGlzIHJlbW92ZWQgYmVm
b3JlIGl0J3MgcGFyZW50IENhbnZhcy4iLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgbGV0IGNhbnZhc1JlbW92ZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAg
V0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVudExpc3RlbmVy
KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIGNhbnZhc1JlbW92ZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICAgIGxldCBzaGFkZXJQcm9ncmFtQ291bnQgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rp
b24uc2l6ZTsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lckl0ZW1SZW1vdmVkID0gY2FudmFzLnNo
YWRlclByb2dyYW1Db2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVu
dC5JdGVtUmVtb3ZlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKC0tc2hhZGVy
UHJvZ3JhbUNvdW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
ICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCBsaXN0ZW5lckl0ZW1SZW1vdmVkKTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNhbnZhc1JlbW92ZWQsICJS
ZW1vdmVkIFNoYWRlclByb2dyYW0gYmVmb3JlIENhbnZhcy4iKTsKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgZGVsZXRlRGV2aWNlKClgKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLSAgICA8cD5UZXN0IHRoYXQgQ2FudmFzTWFuYWdlciB0
cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBzaGFkZXIgcHJvZ3JhbXMu
PC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZWQzNzIyM2M3NWMwZmU1ODU2MWU4MmFiMGQxNDk2NWM0
YWNiZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVdlYkdQVSB0ZXN0cyBmb3IgQ2FudmFz
LnVwZGF0ZVNoYWRlciBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFz
LnVwZGF0ZVNoYWRlci5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRl
U2hhZGVyLldlYkdQVS5Db21wdXRlLlZhbGlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhhdmUgY2hh
bmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BV
LkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJy
b3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVu
IHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5WZXJ0ZXguVmFsaWQKLVBB
U1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTog
Q2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4LkludmFsaWQKLVBBU1M6IFNob3VsZCBw
cm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBGYWlsZWQgdG8gdXBkYXRlIHNoYWRlciBvZiBn
aXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQKLVBBU1M6IFNvdXJjZSBzaG91bGQg
aGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRl
ci5XZWJHUFUuRnJhZ21lbnQuVmFsaWQKLVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2Vk
LgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuRnJh
Z21lbnQuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6
IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVuIHBy
b2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRW
ZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmFiY2QwMDY2ZTc0YzJkZDRjNTE0NzZjNGY3
MGM4MGE0ODdlZDkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFy
ZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCww
IEBACi1XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy51cGRhdGVTaGFkZXIgY29tbWFuZCB3aGVuIHRo
ZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb2YgYSByZW5kZXIgcGlwZWxpbmUgc2hhcmUg
dGhlIHNhbWUgbW9kdWxlLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnVwZGF0
ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQKLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5TaW5nbGVQ
aXBlbGluZQotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1QQVNTOiBWZXJ0ZXggYW5kIEZy
YWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVVwZGF0aW5nIHZlcnRl
eCBzaGFkZXIgc291cmNlLi4uCi1QQVNTOiBWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBzb3Vy
Y2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVBBU1M6IFZlcnRleCBzb3VyY2Ugc2hvdWxkIGhhdmUg
Y2hhbmdlZC4KLVVwZGF0aW5nIGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4KLVBBU1M6IFZlcnRl
eCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotUEFTUzog
RnJhZ21lbnQgc291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5NdWx0
aXBsZVBpcGVsaW5lcwotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1DcmVhdGluZyByZW5k
ZXIgcGlwZWxpbmUuLi4KLVBBU1M6IEJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1l
IHNvdXJjZS4KLVVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJjZS4uLgotUEFTUzogU291
cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4KLVBBU1M6IEJvdGggcGlwZWxp
bmVzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBzb3VyY2VzLgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJh
Z21lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdl
YmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4Y2Y5YTQ3NTYyMjQyMWM4MzY4OWM5YWQzN2QyMTkwYTAxY2U5ZTM5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxlZCh0cnVl
KTsKLQotY29uc3QgcmVuZGVyUGlwZWxpbmVTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRl
eFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1
dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1sZXQgZGV2aWNl
ID0gbnVsbDsKLWxldCBzaGFkZXJNb2R1bGUgPSBudWxsOwotCi1hc3luYyBmdW5jdGlvbiBjcmVh
dGVSZW5kZXJQaXBlbGluZSgpIHsKLSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBsZXQgYWRh
cHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgfQotCi0gICAgaWYgKCFz
aGFkZXJNb2R1bGUpCi0gICAgICAgIHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHJlbmRlclBpcGVsaW5lU291cmNlfSk7Ci0KLSAgICAvLyBDb3BpZWQgZnJv
bSB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbC4KLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICBj
b25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsK
LSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9h
dCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRy
aWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBb
YXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BV
LlNoYXJlZFZlcnRleEZyYWdtZW50Iik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFByb2dy
YW1DcmVhdGVkKCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ3JlYXRpbmcgcmVuZGVy
IHBpcGVsaW5lLi4uIik7Ci0gICAgICAgIGxldCBldmFsdXRlUHJvbWlzZSA9IEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKClgKTsKLQotICAgICAgICBp
ZiAoIVdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5zaXplKQotICAgICAgICAgICAg
YXdhaXQgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmF3YWl0RXZlbnQoV0kuQ29s
bGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpOwotCi0gICAgICAgIGxldCBjYW52YXMgPSBBcnJheS5m
cm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbilbMF07Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KGNhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRU
eXBlLldlYkdQVSwgIkNhbnZhcyBzaG91bGQgYmUgV2ViR1BVLiIpOwotCi0gICAgICAgIGxldCBp
dGVtQWRkZWRFdmVudCA9IGF3YWl0IGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5hd2Fp
dEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKTsKLSAgICAgICAgbGV0IHNoYWRl
clByb2dyYW0gPSBpdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KHNoYWRlclByb2dyYW0ucHJvZ3JhbVR5cGUgPT09IFdJLlNoYWRlclByb2dyYW0u
UHJvZ3JhbVR5cGUuUmVuZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGJlIGEgcmVuZGVyIHBp
cGVsaW5lLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChzaGFkZXJQcm9ncmFtLnNo
YXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGhhdmUgYSBz
aGFyZWQgdmVydGV4IGFuZCBmcmFnbWVudCBtb2R1bGUuIik7Ci0KLSAgICAgICAgYXdhaXQgZXZh
bHV0ZVByb21pc2U7Ci0gICAgICAgIHJldHVybiBzaGFkZXJQcm9ncmFtOwotICAgIH0KLQotICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIu
V2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50LlNpbmdsZVBpcGVsaW5lIiwKLSAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIHRoZSB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVy
IHdpbGwgYWxzbyBhZmZlY3QgdGhlIGZyYWdtZW50L3ZlcnRleCBzaGFkZXIgaWYgdGhleSBib3Ro
IHVzZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAg
ICAgIGxldCBzaGFkZXJQcm9ncmFtID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwotCi0g
ICAgICAgICAgICBsZXQgW29yaWdpbmFsVmVydGV4U291cmNlLCBvcmlnaW5hbEZyYWdtZW50U291
cmNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5y
ZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJv
Z3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKG9yaWdpbmFsVmVydGV4U291cmNlLCBvcmln
aW5hbEZyYWdtZW50U291cmNlLCAiVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBz
aG91bGQgYmUgdGhlIHNhbWUuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJV
cGRhdGluZyB2ZXJ0ZXggc2hhZGVyIHNvdXJjZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQgQ2Fu
dmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVy
UHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwgIi8vIE1PRElGSUVEIFZFUlRFWFxuXG4iICsgb3Jp
Z2luYWxWZXJ0ZXhTb3VyY2Uuc291cmNlKTsKLQotICAgICAgICAgICAgbGV0IFt2ZXJ0ZXhTb3Vy
Y2VBZnRlclVwZGF0aW5nVmVydGV4LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0ZXhd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVl
c3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0
U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5T
aGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodmVydGV4U291cmNlQWZ0ZXJVcGRhdGluZ1ZlcnRl
eCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCAiVmVydGV4IGFuZCBGcmFnbWVu
dCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5n
VmVydGV4LCBvcmlnaW5hbFZlcnRleFNvdXJjZSwgIlZlcnRleCBzb3VyY2Ugc2hvdWxkIGhhdmUg
Y2hhbmdlZC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIGZy
YWdtZW50IHNoYWRlciBzb3VyY2UuLi4iKTsKLSAgICAgICAgICAgIGF3YWl0IENhbnZhc0FnZW50
LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5GcmFnbWVudCwgIi8vIE1PRElGSUVEIEZSQUdNRU5UXG5cbiIgKyBvcmlnaW5h
bEZyYWdtZW50U291cmNlLnNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGxldCBbdmVydGV4U291cmNl
QWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdGcmFnbWVu
dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVl
c3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5nRnJh
Z21lbnQsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCAiVmVydGV4IGFuZCBG
cmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChmcmFnbWVudFNvdXJjZUFmdGVy
VXBkYXRpbmdGcmFnbWVudCwgb3JpZ2luYWxGcmFnbWVudFNvdXJjZSwgIkZyYWdtZW50IHNvdXJj
ZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQ
VS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5NdWx0aXBsZVBpcGVsaW5lcyIsCi0gICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCB1cGRhdGluZyBvbmUgcGlwZWxpbmUgd29uJ3QgYWZmZWN0IGFu
eSBvdGhlciBwaXBlbGluZXMgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtMSA9IGF3YWl0
IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtMiA9
IGF3YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLQotICAgICAgICAgICAgbGV0IFtvcmlnaW5h
bFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMl0gPSBhd2FpdCBQcm9taXNlLmFs
bChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFk
ZXJQcm9ncmFtMS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4
KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRl
clByb2dyYW0yLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgp
LAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxs
b3dFcXVhbChvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMiwgIkJv
dGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHNvdXJjZS4iKTsKLQotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJjZS4u
LiIpOwotICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclBy
b2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgsICIv
LyBNT0RJRklFRCBWRVJURVhcblxuIiArIG9yaWdpbmFsVmVydGV4U291cmNlMS5zb3VyY2UpOwot
Ci0gICAgICAgICAgICBsZXQgW25ld1ZlcnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTJdID0g
YXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVlc3RT
aGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbTEuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5T
aGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNo
YWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMi5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNo
YWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwob3JpZ2luYWxWZXJ0ZXhTb3VyY2UxLCBuZXdWZXJ0
ZXhTb3VyY2UxLCAiU291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFsKG5ld1ZlcnRl
eFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTIsICJCb3RoIHBpcGVsaW5lcyBzaG91bGQgaGF2ZSBk
aWZmZXJlbnQgc291cmNlcy4iKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KLTxwPldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBj
b21tYW5kIHdoZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBvZiBhIHJlbmRlciBw
aXBlbGluZSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjMGU4NjRhNDNiNzJiMTdjMzM1
YTY1ODI2NmJmYzkwNzVlOTViMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJn
cHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUiKTsKLQotICAgIGZ1bmN0
aW9uIHRlc3Qoe25hbWUsIHByb2dyYW1UeXBlLCBzaGFkZXJUeXBlLCBzb3VyY2UsIHNob3VsZFRo
cm93fSkgewotICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1lLAot
ICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgICAgICBsZXQgc2hhZGVyUHJv
Z3JhbSA9IEluc3BlY3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9ncmFt
VHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFtKQotICAgICAgICAgICAg
ICAgICAgICB0aHJvdyAiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSI7Ci0KLSAgICAgICAgICAgICAg
ICBsZXQgb3JpZ2luYWxTb3VyY2UgPSBhd2FpdCBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291
cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkVGhyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVj
dG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRp
Zmllciwgc2hhZGVyVHlwZSwgc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGF3YWl0IENhbnZhc0FnZW50
LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUsIHNvdXJj
ZSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgbmV3U291cmNlID0gYXdhaXQgQ2FudmFzQWdlbnQu
cmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUp
OwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwo
b3JpZ2luYWxTb3VyY2UsIG5ld1NvdXJjZSwgIlNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIp
OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICB0ZXN0KHsKLSAgICAg
ICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuVmFsaWQiLAotICAg
ICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlLAot
ICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuQ29tcHV0ZSwK
LSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBDT01QVVRFCi1bbnVtdGhyZWFkcygyLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIu
MDsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51
cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuSW52YWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBl
OiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGUsCi0gICAgICAgIHNoYWRlclR5
cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRlLAotICAgICAgICBzb3VyY2U6
ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICB0
ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlZlcnRleC5W
YWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBl
LlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBl
LlZlcnRleCwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBWRVJURVgKLXZlcnRleCBmbG9h
dDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6
IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0gICAg
fSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLlZlcnRleC5JbnZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dy
YW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuVmVydGV4LAotICAgICAgICBzb3VyY2U6ICJJTlZBTElEIiwKLSAgICAg
ICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFt
ZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdtZW50LlZhbGlkIiwKLSAgICAgICAg
cHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAg
ICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQsCi0gICAg
ICAgIHNvdXJjZTogYC8vIENIQU5HRUQgRlJBR01FTlQKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgx
KSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBm
bG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0
ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdtZW50
LkludmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFt
VHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVy
VHlwZS5GcmFnbWVudCwKLSAgICAgICAgc291cmNlOiAiSU5WQUxJRCIsCi0gICAgICAgIHNob3Vs
ZFRocm93OiB0cnVlLAotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLTxwPldl
YkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLjwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBjM2M2OWJhMTgwZTUyZDExZTg4MjBhNDdkYzI5OWY1N2ZkMWEwZTEwLi44ZjFkYTVhZjRmZjJm
MmJkNzdjYjU2NjhhY2E3NTZiN2VhOGIxNTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xp
Yi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjYzLDE2ICsxNjYzLDYgQEAgaHR0cC93cHQvY3JlZGVu
dGlhbC1tYW5hZ2VtZW50LyBbIFNraXAgXQogaHR0cC93cHQvd2ViYXV0aG4vIFsgU2tpcCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NyZWRlbnRpYWwtbWFuYWdlbWVudC8gWyBT
a2lwIF0KIAotIyBXZWJHUFUKLXdlYmdwdSBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9jcmVh
dGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0
Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVxdWVz
dFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXNv
bHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQ
cm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMv
dXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0
ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQotCiAjIFdl
YkdMMgogd2Via2l0Lm9yZy9iLzE2NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC10cmFuc2Zv
cm1lZC12YXJ5aW5nLW5hbWUtY3Jhc2guaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2NjUz
NiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItbWl4LXdpdGgtYm9vbC5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGU4NGUxNmQyYWQ0
MmFkMzUwN2UwMjJhMmFhMmNhOTRmMjhmYmNlYWMuLjE2YmFhYmIyY2U0MTUzODBlZjg4YWJlZGNj
YTVjNTRhZGQ2OWNmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCkBAIC01NiwxNCArNTYsNiBAQCB3ZWJraXQub3JnL2IvMjAwMzA4IGZhc3QvZXZlbnRzL3Rv
dWNoL2lvcy9jb250ZW50LW9ic2VydmF0aW9uL25vbi12aXNpYmxlLWNvbnRlbgogCiBtZWRpYS92
aWRlby1zdXBwb3J0cy1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0KIAotaW5zcGVjdG9yL2NhbnZh
cy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9y
ZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMv
cmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9z
aGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFz
L3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQot
CiAjIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZAogbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLwogCkBAIC0zNDg3LDQgKzM0NzksNCBAQCBodHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLXdlYm0tc3RhbGwuaHRtbCBbIFNraXAgXQogCiAjIHdlYmtpdC5vcmcvYi8yMjMzODUgVHdv
IGltcG9ydGVkIHdlYnJ0YyB0ZXN0cyBhcmUgZmxha2V5IHRleHQgZmFpbGluZyBvbiBSZWxlYXNl
IGZvciBCaWdTdXIrIGFuZCBpT1MgMTQKIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZEljZUNhbmRpZGF0ZS1jb25u
ZWN0aW9uU2V0dXAuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIFJlbGVhc2UgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEdGxzVHJhbnNwb3J0LXN0YXRlLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1sgUmVsZWFzZSBd
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0R0bHNUcmFuc3BvcnQt
c3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjY0MzkxZmI3MTM2MTQ0OGJiOGMwNGY0MWY2ZThl
YzQ3NmQyOGMzOC4uMDAyYTQ3MTBmNTJiZWNiNTJlNzQyY2EzYWQ1Y2E4ZTMwNmE4OTY3ZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDcs
MTUgKzQ3LDYgQEAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaSBbIFNraXAgXQogY3NzLXR5cGVk
b20gWyBTa2lwIF0KIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIAotd2ViZ3B1IFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNw
ZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBbIFNraXAg
XQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5o
dG1sIFsgU2tpcCBdCi0KICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIFdLMSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zCkBAIC0xMzgzLDQgKzEzNzQsNCBAQCB3ZWJr
aXQub3JnL2IvMjI3NzYyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRl
cmFjdGlvbi9mb2N1cy90aGUtYQogd2Via2l0Lm9yZy9iLzIyODU2MSBodHRwL3Rlc3RzL21lZGlh
L21vZGVybi1tZWRpYS1jb250cm9scy9tYWNvcy1mdWxsc2NyZWVuLW1lZGlhLWNvbnRyb2xzL21h
Y29zLWZ1bGxzY3JlZW4tbWVkaWEtY29udHJvbHMtbGl2ZS1icm9hZGNhc3QuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCiAKICMgd2Via2l0Lm9yZy9iLzIyODIwMCBBZGp1c3RpbmcgdGVzdCBleHBlY3Rh
dGlvbnMgZm9yIE1vbnRlcmV5IG9uIE9wZW4gU291cmNlIDxyZGFyOi8vODAzNDUwNDg+OgotWyBN
b250ZXJleSBdIHdlYnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKK1sgTW9udGVyZXkgXSB3ZWJydGMvaDI2NC1oaWdoLmh0bWwgWyBGYWls
dXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBhNGYyYTM1MGE3N2I4ODkwYTg0MTQwOGQzOGRjYzA2YmJmYzljNDQzLi43YmVlN2QyYjRh
YTliMDAyNDcyOWYxYmI5N2M2NDdhZGIxMGZhNDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC05NzUsMjEgKzk3NSwxMyBAQCB3ZWJraXQu
b3JnL2IvMTg3ODI4IFsgUmVsZWFzZSBdIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2ZsZXgtY29udGVu
dC1zaXplZC1jb2x1bW5zLQogCiB3ZWJraXQub3JnL2IvMTk4NjYzIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1zYW1lLXNpdGUt
c2hvdWxkLWhhdmUtYWNjZXNzLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2Iv
MTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzE5OTY1MSBbIE1vamF2ZSBEZWJ1ZyBdIHdl
YmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xvdyBdCi0KIHdlYmtpdC5vcmcv
Yi8xOTkwODkgWyBEZWJ1ZyBdIHBsdWdpbnMvd2luZG93LW9wZW4uaHRtbCBbIFNraXAgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS81NjUwNjA2Mz4gTGF5b3V0IFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRl
Lmh0dHBzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlICgyMDMyNTYpCiB3ZWJraXQub3JnL2IvMjAz
MjU2IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDUzMDEgaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVy
U291cmNlLXdlYmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNTgw
OCBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC91bmljb2RlLWJpZGktb3RoZXItbmV1dHJhbHMuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTg5NDIgd2ViZ3B1L3ZlcnRleC1i
dWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdl
YmtpdC5vcmcvYi8yMDY4NjQgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91
dC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNjA5Mjky
Mzk+IFsgbWFjT1Mgd2syIF0gZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFy
eS5odG1sIGlzIGEgZmxha3kgdGltZW91dApAQCAtOTk5LDk0ICs5OTEsNTAgQEAgd2Via2l0Lm9y
Zy9iLzIwNjcwOCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUu
aHRtbCBbIFBhc3MgRmEKIAogd2Via2l0Lm9yZy9iLzIwNjk2MSBbIE1vamF2ZSBdIG1lZGlhL21l
ZGlhLWZyYWdtZW50cy9UQzAwMzUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcv
Yi8yMDcwNzggd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzIwNzExNyB3ZWJncHUvd2hs
c2wvbmVzdGVkLWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5v
cmcvYi8yMDcxMjcgd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXguaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDY5MDMgaW5zcGVjdG9yL2hlYXAvZ2V0UmVt
b3RlT2JqZWN0Lmh0bWwgWyBQYXNzIENyYXNoIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3
MTQxIFsgRGVidWcgXSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LWJpdG1hcHJlbmRl
cmVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3MTY2IGh0dHAvd3B0
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxl
LWdwdXByb2Nlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcxOTkg
d2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJr
aXQub3JnL2IvMjA3MjAwIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjAyIHdlYmdwdS93aGxz
bC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIwNjcxOCBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJl
bW92ZS13ZWJnbDIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMjA3MjA5IGlu
c3BlY3Rvci9oZWFwL2dldFByZXZpZXcuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAot
d2Via2l0Lm9yZy9iLzIwNzIyMiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0y
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjY3IHdl
YmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3MjY5IFsgRGVidWcgXSBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlcnZlci1jbG9zZS5odG1sIFsgUGFzcyBDcmFzaCBd
CiAKIHdlYmtpdC5vcmcvYi8xODM2ODQgaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1v
bnByb2dyZXNzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA3Mjk0IHdl
YmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8yMDczMDMgbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6
ZS1pZnJhbWUuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMjA3NDYwIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NDY1IFsg
RGVidWcgXSBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc0NjYgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMjA3NDc2IHdlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0
eS11cGRhdGVzLXByb3Blcmx5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJr
aXQub3JnL2IvMjA3NTA4IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3NTk5IHdlYmdwdS93aGxzbC9kby13
aGlsZS1sb29wLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2Iv
MjA3NjMyIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3N0aWNreS9zdGlja3ktZHVyaW5nLXJ1YmJl
cmJhbmQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2
MzEgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZml4ZWQvZml4ZWQtZHVyaW5nLXJ1YmJlcmJhbmQu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2MzUgZmFz
dC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXSAKIAotd2Via2l0Lm9yZy9iLzIwNzYzNiB3ZWJncHUvd2hsc2wvdGV4dHVy
ZXMtc2FtcGxlLWJpYXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5v
cmcvYi8yMDc2Mzggd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotCi13ZWJraXQub3JnL2IvMjA2ODUyIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQotd2Vi
a2l0Lm9yZy9iLzIwNzcwMCB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NzI4IFsgUmVsZWFz
ZSBdIGFjY2Vzc2liaWxpdHkvcHJlc3MtdGFyZ2V0cy1jZW50ZXItcG9pbnQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDc3Nzkgd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNl
LXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8yMDc3OTYgWyBSZWxlYXNlIF0gZmFzdC9ib3gtc2hhZG93L2hpZHBp
LWJveC1zaGFkb3cuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8yMDc3OTggd2VicnRjL2Nvbm5lY3Rpb24tc3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMDc4Mzkgd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3ODQ0IHN0b3JhZ2UvaW5kZXhl
ZGRiL2RldGFjaGVkLWlmcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9i
LzIwNzg2NCB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNzkzOCBodHRwL3dwdC9jcnlwdG8v
ZGVyaXZlLWhtYWMta2V5LWNyYXNoLmFueS5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtpdC5v
cmcvYi8yMDc5NjIgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tZW51LWl0ZW0tc2VsZWN0ZWQtbm90
aWZpY2F0aW9uLmh0bWwgWyBTbG93IF0KIAotd2Via2l0Lm9yZy9iLzIwODAwNSB3ZWJncHUvd2hs
c2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzIwODAxNCBbIERlYnVnIF0gaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9uby1zdWJwcm90b2NvbC5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcv
Yi8yMDgwNjIgaHR0cC93cHQvZmV0Y2gvZGlzYWJsZS1zcGVjdWxhdGl2ZS1mb3ItcmVsb2FkLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA4MjIyIFsgUmVsZWFzZSBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWlj
ZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzIwODM0MCB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA4MzkwIFsgRGVidWcgXSBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvZGVsYXktcmVwYWludC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzIwODM5NiBodHRwL3Rlc3RzL21pc2Mvb2JqZWN0LWVtYmVkZGluZy1zdmctZGVsYXll
ZC1zaXplLW5lZ290aWF0aW9uLTIuaHRtIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTEwOTksOCArMTA0
Nyw2IEBAIHdlYmtpdC5vcmcvYi8yMDg4ODkgZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmlt
YXRlZC1pbWFnZS5odG1sIFsgUGFzcyBJbWFnZU9uCiAKIHdlYmtpdC5vcmcvYi8yMDkwMDYgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90
aGUtc2NyaXB0LWVsZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDkwMjQgWyBEZWJ1ZyBdIHdlYmdwdS93aGxzbC92ZWN0b3It
Y29tcGFyZS5odG1sIFsgUGFzcyBDcmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8yMDkwNzcgc3ZnL2N1
c3RvbS9vYmplY3Qtc2l6aW5nLWV4cGxpY2l0LXdpZHRoLnhodG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAogd2Via2l0Lm9yZy9iLzIwOTA1MiBmYXN0L3Njcm9sbGluZy9tYWMvYWJzb2x1dGUtaW4tb3Zl
cmZsb3ctc2Nyb2xsLWR5bmFtaWMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0x
MTkyLDkgKzExMzgsNiBAQCB3ZWJraXQub3JnL2IvNjgyNzggaHR0cC90ZXN0cy9oaXN0b3J5L2Jh
Y2std2l0aC1mcmFnbWVudC1jaGFuZ2UucHkgWyBQYXNzIEZhaWx1cgogIyA8cmRhcjovL3Byb2Js
ZW0vMzczMzAzNzc+IEFTYW4gdGVzdHMgZXhpdGluZyBlYXJseSBkdWUgdG8gdGltZW91dHMKIFsg
UmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2Rl
cml2ZV9iaXRzX2tleXMgWyBTa2lwIF0KIAotIyA8cmRhcjovL3Byb2JsZW0vNjAxMDU5Mjc+IFsg
TWFjIHdrMiBSZWxlYXNlIF0gd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwg
aXMgZmxha3kgZmFpbGluZwotWyBSZWxlYXNlIF0gd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVm
ZXJlbmNlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiAjIDxyZGFyOi8vcHJvYmxlbS82MDUwNzUy
Nj4gUkVHUkVTU0lPTiAocjI1ODEyNC1yMjU4MjMwKSBbIE1hYyB3azIgXSBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2NvbnRlbnRleHRlbnNpb25zL2Jsb2NrZWQtd2Vic29ja2V0LWNyYXNo
Lmh0bWwgaXMgZmxha3kgY3Jhc2hpbmcuCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nv
bnRlbnRleHRlbnNpb25zL2Jsb2NrZWQtd2Vic29ja2V0LWNyYXNoLmh0bWwgWyBQYXNzIENyYXNo
IF0KIApAQCAtMTI4Miw4ICsxMjI1LDYgQEAgd2Via2l0Lm9yZy9iLzE3OTc5NiBodHRwL3Rlc3Rz
L2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS12YWxpZGF0aW9uLWJhY2stbmF2aWcKIAogd2Vi
a2l0Lm9yZy9iLzIxNTU4MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Vi
a2l0Lm9yZy9iLzIxNTYwNiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIxNTYxMSBbIERlYnVnIF0g
ZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmZsb3ctb3ZlcmxheS1zY3JvbGxiYXIt
aG92ZXJlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyByZGFyOi8vNjUyNjk1ODkgKFsgbWFj
T1MgYW5kIGlPUyBdIG1lZGlhL3ZwOS5odG1sIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5LikKQEAg
LTE1ODYsNyArMTUyNyw2IEBAIGluc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLTJkLWZ1bGwuaHRt
bCBbIFBhc3MgQ3Jhc2ggXQogaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctYml0bWFwcmVuZGVy
ZXItZnVsbC5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogaW5zcGVjdG9yL2NhbnZhcy9y
ZWNvcmRpbmctYml0bWFwcmVuZGVyZXItZnJhbWVDb3VudC5odG1sIFsgUGFzcyBGYWlsdXJlIFRp
bWVvdXQgXQogaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctYml0bWFwcmVuZGVyZXItbWVtb3J5
TGltaXQuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctaHRtbC0y
ZC5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMjI4
MDgyIGZhc3QvY2FudmFzL2dldFB1dEltYWdlRGF0YVBhaXJUZXN0Lmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQpAQCAtMTYxOCw0ICsxNTU4LDQgQEAgd2Via2l0Lm9yZy9iLzIyODUyOCBbIEJpZ1N1ciBE
ZWJ1ZyBhcm02NCBdIGZhc3QvdGV4dC9lbW9qaS1vdmVybGFwLmh0bWwgWyBQYXNzIEkKIFsgTW9u
dGVyZXkgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9pbXBvcnQtc2NyaXB0cy1jcm9zcy1vcmlnaW4uaHR0cHMuaHRtbCBbIEZh
aWx1cmUgXQogWyBNb250ZXJleSBdIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1zb3VyY2Uu
aHRtbCBbIFBhc3MgQ3Jhc2ggXQogWyBNb250ZXJleSBSZWxlYXNlIF0gcGxhdGZvcm0vbWFjLXdr
Mi9wbHVnaW5zL2FzeWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLmh0
bWwgWyBQYXNzIENyYXNoIF0KLVsgTW9udGVyZXkgUmVsZWFzZSBdIG1lZGlhL21lZGlhLWZyYWdt
ZW50cy9UQzAwMDQuaHRtbCBbIFBhc3MgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorWyBNb250ZXJleSBSZWxlYXNlIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDAwNC5o
dG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBmMWNmMjRmNGYxYWIzZDA2NDBiMzJlMjFhNGVj
NTA5ZGFkMjJiYzgxLi5kZjkwMTA5MDRkNTc3ZTg1YTA3NjY2N2E5MzdhZDc3ZTZkOGY1OTU3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRv
ci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQu
dHh0CkBAIC05LDcgKzksNiBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5j
b29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRv
ci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0
b3IuaXNMb2dnZWRJbigpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2
aWdhdG9yLmxhbmd1YWdlIGlzIE9LCkBAIC00Myw3ICs0Miw2IEBAIG5hdmlnYXRvci5jb250YWN0
cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50
aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRv
ci5ncHUgaXMgT0sKIG5hdmlnYXRvci5pc0xvZ2dlZEluKCkgaXMgT0sKIG5hdmlnYXRvci5qYXZh
RW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTJmZWJmY2RiM2FmMTYwOTZiNDAzODlk
MDliOGIzZGE2ZjkxYzZjYi4uOTNjZDU0NDM4ZmUyM2I5MTEyMjI3YzI5NjcwYzg4NTBkNWRhMzA1
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NDUs
MzggKzE1NDUsNiBAQCB3ZWJraXQub3JnL2IvMjEyMTcyIFsgQ2F0YWxpbmEgXSBmYXN0L3RleHQv
Zm9udC1jb2xsZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogCiB3ZWJraXQub3JnL2IvMjAw
MTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRt
bCBbIFRpbWVvdXQgUGFzcyBdCiAKLSMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0
IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAo
MjAxODI3KSkKLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgy
NyB3ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgy
NyB3ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1z
dHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcg
d2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJp
YW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgcmRhcjovLzU1
MjA0Nzc1IChSRUdSRVNTSU9OIChNYWNPUyk6IE1hbnkgd2ViZ3B1L3dobHNsLyogdGVzdHMgYXJl
IGZsYWt5IGZhaWx1cmVzKQotd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRl
LWxvY2F0aW9ucy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9u
ZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEwLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTExLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTEyLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEzLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE1Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXSAKLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
OS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQot
d2Via2l0Lm9yZy9iLzIwNTUyNCB3ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDU1MjUgd2ViZ3B1L3dobHNs
L2J1ZmZlci1mcmFnbWVudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyBUaGUg
dGVzdCBydW5uZXIgaXMgZmFpbGluZyBpbiBhbiB1bnJlbGF0ZWQsIHVuZXhwbGFpbmVkLCBpbnZp
c2libGUgdG8gdGhlIGh1bWFuIGV5ZSwgMiBwaXhlbHMgZGlmZmVyZW5jZS4KIHdlYmtpdC5vcmcv
Yi8yMDE0MDEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVk
aWFzb3VyY2UtdmlkZW8taXMtdmlzaWJsZS5odG1sIFsgU2tpcCBdCiAKQEAgLTE2MTIsMTAgKzE1
ODAsNiBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1
cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNzCiAKIHdlYmtpdC5vcmcvYi8yMDU3NTYgd2Vi
Z2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL25vLWF0dHJpYnV0ZS12ZXJ0ZXgtc2hhZGVyLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1ODYyIHdlYmdwdS93aGxzbC93
aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0y
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNTg2NyB3ZWJn
cHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2
Zy9pbXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcgWyBGYWlsdXJlIFBhc3MgXQogCiAj
IExvY2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5hYmxlZCBvbiBjZXJ0YWluIE9TZXMu
CkBAIC0xNjk2LDggKzE2NjAsNiBAQCB3ZWJraXQub3JnL2IvMjA4NTkyIHN2Zy9jdXN0b20vb2Jq
ZWN0LXNpemluZy1leHBsaWNpdC1oZWlnaHQueGh0bWwgWyBQYXNzIEZhaWx1cgogCiB3ZWJraXQu
b3JnL2IvMjA5MjU3IHN2Zy9hcy1vYmplY3Qvb2JqZWN0LWJveC1zaXppbmctbm8td2lkdGgtaGVp
Z2h0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA5MDU2IHdlYmdwdS93
aGxzbC91aW50LWJpdHdpc2UuaHRtbCBbIFBhc3MgQ3Jhc2ggXQotCiB3ZWJraXQub3JnL2IvMjA5
MDcyIFsgRGVidWcgXSBodHRwL3Rlc3RzL2Nzcy9zaGFyZWQtc3R5bGVzaGVldC1tdXRhdGlvbi1w
cmVjb25zdHJ1Y3QuaHRtbCBbIFBhc3MgQ3Jhc2ggRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8y
MDcxNTAgcGxhdGZvcm0vbWFjL3dlYnJ0Yy9jYXB0dXJlQ2FudmFzLXdlYnJ0Yy1zb2Z0d2FyZS1l
bmNvZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCkBAIC0xNzcwLDggKzE3MzIsNiBA
QCB3ZWJraXQub3JnL2IvMjE1MTEwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpbwogCiB3ZWJraXQub3JnL2IvMjE1MTc3IFsgUmVsZWFz
ZSBdIGVkaXRpbmcvc2VsZWN0aW9uL25hdmlnYXRpb24tY2xlYXJzLWVkaXRvci1zdGF0ZS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIxNTI0NyB3ZWJncHUvd2hsc2wvZG9u
dC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdl
YmtpdC5vcmcvYi8yMTUyNzEgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9uZXct
ZGF0YWJhc2UtYWZ0ZXItdXNlci1kZWxldGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8yMTU0NTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5LW5lZ2F0aXZlLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQpAQCAtMTg2OCwxMSArMTgyOCw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNoYW5nZXR5cGUtcGxheS13aXRob3V0CiAjIDxy
ZGFyOi8vcHJvYmxlbS82MjMxNzcyMz4gWyBHdWFyZC1NYWxsb2MgXSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3JlbW90ZS1wbGF5YmFjay93YXRjaC1hdmFpbGFiaWxpdHktaW5pdGlh
bC1jYWxsYmFjay5odG1sIGlzIGZsYWt5IGNyYXNoaW5nIHdpdGggJ1dlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW90ZUhhc0F2YWlsYWJpbGl0eUNhbGxiYWNrc0NoYW5nZWQoKScgYWxlcnQu
CiBbIE1vamF2ZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3RlLXBsYXli
YWNrL3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0aWFsLWNhbGxiYWNrLmh0bWwgWyBQYXNzIENyYXNo
IF0KIAotIyA8cmRhcjovL3Byb2JsZW0vNTY5NjE0OTk+IE1hbnkgd2ViR1BVIHRlc3QgZmFpbCBv
biBwcm9kdWN0aW9uIGFuZCBjcmFzaCBvbiBEZWJ1ZwotWyBCaWdTdXIrIF0gaW5zcGVjdG9yL2Nh
bnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1bIEJpZ1N1cisg
XSBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21l
bnQuaHRtbCBbIFNraXAgXQotWyBCaWdTdXIrIF0gaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFk
ZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLQogIyBXZWJQIGltYWdlcwogWyBCaWdTdXIrIF0gZmFz
dC9pbWFnZXMvd2VicC1hcy1pbWFnZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIFsg
QmlnU3VyKyBdIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLXdlYnAtYXMtaW1hZ2UuaHRtbCBbIFBhc3Mg
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2Y2ViNjhm
Zjg4MWYyZWFmMjc5MWE0MDNhYWNlZGY2NTQ5OGExY2Q1Li5mNGMyMWIwNzc5NzRjYmQwZTVkZDE3
ZGRmYjA5YjA0YmM5YjdhNmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNDEyOSwxNiArNDEyOSw2IEBAIHdlYmtpdC5vcmcvYi8xOTA0NzIgZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1odG1sY29sbGVjdGlvbi5odG1sIFsKIAog
d2Via2l0Lm9yZy9iLzE5MDUyMCBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hY3Jvc3Mt
c2hhZG93LWJvdW5kYXJpZXMtd2l0aC1zdHlsZS0yLmh0bWwgWyBDcmFzaCBGYWlsdXJlIF0KIAot
IyBXZWJHUFUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzCi13ZWJncHUgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3Bl
Y3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3Bl
Y3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tpcCBd
Ci1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0
bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE5MTE5NCBmYXN0L2Jsb2NrL2Jhc2ljL2lubGlu
ZS1jb250ZW50LXdpdGgtZmxvYXRpbmctaW1hZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzE5MTE5NCBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXRpbmct
aW1hZ2VzMi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvZG9tL2lu
bGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbCBbIEZhaWx1cmUgXQpAQCAtNDY2Nyw0
ICs0NjU3LDQgQEAgd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2Zvcm0tYW5pbWF0aW9u
LXRvLXNjYWxlLXplcm8td2l0aC1pbXBsaWNpdC1mcm9tLWsKIGZhc3QvZXZlbnRzL2Ryb3B6b25l
LTAwMi5odG1sIFsgUGFzcyBDcmFzaCBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZHJhZy1h
bmQtZHJvcC5odG1sIFsgUGFzcyBDcmFzaCBdCiBmYXN0L2Zvcm1zL251bWJlci9udW1iZXItbDEw
bi1pbnB1dC5odG1sIFsgUGFzcyBDcmFzaCBdCi1mYXN0L2Zvcm1zL251bWJlci9udW1iZXItc3Bp
bmJ1dHRvbi1pbi1tdWx0aS1jb2x1bW4uaHRtbCBbIFBhc3MgQ3Jhc2ggXQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKK2Zhc3QvZm9ybXMvbnVtYmVyL251bWJlci1zcGluYnV0dG9uLWluLW11
bHRpLWNvbHVtbi5odG1sIFsgUGFzcyBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQt
Z3JvdXBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMwNjAx
ZDJkYzk0ODRiYzYyZTc4N2EwZTZkMTE2NjExYjM4MDljYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgQ3JlYXRl
IGFuZCB1c2UgYSBiYXNpYyBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBhbmQgdXNlIG1hbnkg
R1BVQmluZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21wdXRlIHBhc3MuCi1QQVNTIENyZWF0ZSBhbmQg
YWNjZXNzIGEgdW5pZm9ybS1idWZmZXIgaW4gYSBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBh
bmQgYWNjZXNzIGEgc2FtcGxlZCB0ZXh0dXJlIGluIGEgR1BVQmluZEdyb3VwLgotUEFTUyBDcmVh
dGUgYW5kIHVzZSBtdWx0aXBsZSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGRpc3BhdGNoLgot
UEFTUyBCaW5kIGEgc2luZ2xlIEdQVUJ1ZmZlciB3aXRoIGRpZmZlcmVudCBvZmZzZXRzIGluIGRp
ZmZlcmVudCBHUFVCaW5kR3JvdXBzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9i
aW5kLWdyb3Vwcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NzcxMDI1MTEwMmRkZTdkNGE5NmM5YzI2Y2Uz
ZDY4MDRhZTE0NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRp
dGxlPkNyZWF0ZSBhIGJhc2ljIEdQVUJpbmRHcm91cC48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0
IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0
cyA9IHt9OwotCi1jb25zdCBiYXNpY0J1ZmZlclNoYWRlciA9IGAKLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVn
aXN0ZXIodTApKQotewotICAgICsrYnVmZmVyWzBdOwotfQotYDsKLQotbGV0IGJhc2ljUGlwZWxp
bmU7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJpbmRHcm91cC4iXSA9IGFz
eW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyTGF5b3V0QmluZGluZyA9IHsKLSAgICAg
ICAgYmluZGluZzogMCwKLSAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVU
RSwKLSAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgIH07Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6
IFtidWZmZXJMYXlvdXRCaW5kaW5nXSB9KTsKLQotICAgIGNvbnN0IGJhc2ljQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdF
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9
IHsgYnVmZmVyOiBiYXNpY0J1ZmZlciwgc2l6ZTogNCB9OwotICAgIGNvbnN0IGJpbmRHcm91cEJp
bmRpbmcgPSB7IGJpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nIH07Ci0KLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsgbGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3QgYmFzaWNTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogYmFzaWNCdWZmZXJTaGFkZXIg
fSk7Ci0gICAgYmFzaWNQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewot
ICAgICAgICBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsK
LSAgICAgICAgICAgIG1vZHVsZTogYmFzaWNTaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRy
eVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0
IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKGJhc2ljUGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0g
bmV3IEludDMyQXJyYXkoYXdhaXQgYmFzaWNCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIGJh
c2ljQnVmZmVyLnVubWFwKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCAxLCAiU3Rv
cmFnZSBidWZmZXIgYmluZGluZyB3cml0dGVuIHRvIHN1Y2Nlc3NmdWxseS4iKTsKLX07Ci0KLXRl
c3RzWyJDcmVhdGUgYW5kIHVzZSBtYW55IEdQVUJpbmRHcm91cHMgaW4gYSBzaW5nbGUgY29tcHV0
ZSBwYXNzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXJMYXlvdXRCaW5k
aW5nID0gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFk
ZXJTdGFnZS5DT01QVVRFLAotICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgfTsK
LQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoeyBiaW5kaW5nczogW2J1ZmZlckxheW91dEJpbmRpbmddIH0pOwotCi0gICAgY29uc3QgYmFz
aWNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLSAgICBjb25zdCBi
dWZmZXJCaW5kaW5nID0geyBidWZmZXI6IGJhc2ljQnVmZmVyLCBzaXplOiA0IH07Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZyA9IHsgYmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRp
bmcgfTsKLQotICAgIGNvbnN0IG51bUdyb3VwcyA9IDEwMDA7Ci0gICAgbGV0IGJpbmRHcm91cHMg
PSBuZXcgQXJyYXkobnVtR3JvdXBzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUdyb3Vw
czsgKytpKQotICAgICAgICBiaW5kR3JvdXBzW2ldID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7
IGxheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddIH0p
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0
ZVBhc3MoKTsKLQotICAgIGxldCBqID0gMDsKLSAgICBmb3IgKDsgaiA8IG51bUdyb3VwczsgKytq
KSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGJhc2ljUGlwZWxpbmUpOwotICAg
ICAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vwc1tqXSk7Ci0gICAgICAg
IHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIH0KLQotICAgIHBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQg
YmFzaWNCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIGJhc2ljQnVmZmVyLnVubWFwKCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCBqLCAiU3RvcmFnZSBidWZmZXIgYWNjZXNzZWQg
c3VjY2Vzc2Z1bGx5IHRocm91Z2ggbXVsdGlwbGUgYmluZCBncm91cHMuIik7Ci19OwotCi1jb25z
dCB1bmlmb3JtQnVmZmVyU2hhZGVyID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRl
IHZvaWQgY29tcHV0ZV9tYWluKGNvbnN0YW50IGludFtdIHVuaWZvcm1zIDogcmVnaXN0ZXIoYjAp
LCBkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0ZXIodTEpKQotewotICAgIGJ1ZmZlclswXSAr
PSB1bmlmb3Jtc1swXTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIGFjY2VzcyBhIHVuaWZv
cm0tYnVmZmVyIGluIGEgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBj
b25zdCBbdW5pZm9ybUJ1ZmZlciwgd3JpdGVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0g
ICAgbmV3IEludDMyQXJyYXkod3JpdGVBcnJheUJ1ZmZlcikuc2V0KFs0Ml0pOwotICAgIHVuaWZv
cm1CdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHN0b3JhZ2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVC
dWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAg
ICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFn
ZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9
LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BV
U2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIK
LSAgICAgICAgfV0KLSAgICB9KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVh
dGVCaW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwKLSAgICAgICAg
YmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3Vy
Y2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0gICAgICAgICAg
ICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAxLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZm
ZXI6IHN0b3JhZ2VCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAg
fQotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XSB9KTsKLQotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeyBjb2RlOiB1bmlmb3JtQnVmZmVyU2hhZGVyIH0pOwotCi0gICAgY29uc3QgcGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgbGF5b3V0OiBwaXBl
bGluZUxheW91dCwKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6
IHNoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlw
ZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAg
IHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
XSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQgc3RvcmFnZUJ1
ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51bm1hcCgpOwotICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0
ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotY29uc3Qgc2FtcGxlZFRleHR1cmVTaGFkZXIg
PSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oVGV4
dHVyZTJEPHVpbnQ+IGlucHV0VGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciBpbnB1dFNh
bXBsZXIgOiByZWdpc3RlcihzMSksIGRldmljZSB1aW50W10gb3V0cHV0IDogcmVnaXN0ZXIodTIp
KQotewotICAgIG91dHB1dFswXSA9IFNhbXBsZShpbnB1dFRleHR1cmUsIGlucHV0U2FtcGxlciwg
ZmxvYXQyKDAsIDApKTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIGFjY2VzcyBhIHNhbXBs
ZWQgdGV4dHVyZSBpbiBhIEdQVUJpbmRHcm91cC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAg
Y29uc3QgW3RleHR1cmVEYXRhQnVmZmVyLCB0ZXh0dXJlQXJyYXlCdWZmZXJdID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
QyB9KTsKLSAgICBuZXcgVWludDMyQXJyYXkodGV4dHVyZUFycmF5QnVmZmVyKS5zZXQoWzQyXSk7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVTaXpl
ID0geyB3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSB9OwotICAgIGNvbnN0IHRleHR1cmUg
PSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IHRleHR1cmVTaXplLAotICAg
ICAgICBmb3JtYXQ6ICJyZ2JhOHVpbnQiLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdl
LlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9KTsKLQotICAgIGNvbnN0
IG91dHB1dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0g
ICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAg
IHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAi
c2FtcGxlZC10ZXh0dXJlIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAot
ICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAg
ICAgIHR5cGU6ICJzYW1wbGVyIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAy
LAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAg
ICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmlu
ZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3
KCkKLSAgICAgICAgfSwgewotICAgICAgICAgICAgYmluZGluZzogMSwKLSAgICAgICAgICAgIHJl
c291cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7fSkKLSAgICAgICAgfSwgewotICAgICAgICAg
ICAgYmluZGluZzogMiwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAgICAg
YnVmZmVyOiBvdXRwdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAg
ICAgfQotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNhbXBsZWRUZXh0dXJlU2hhZGVyIH0pOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsg
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBwaXBl
bGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVs
ZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9U
ZXh0dXJlKHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwKLSAgICAgICAgcm93
UGl0Y2g6IDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAgfSwgeyB0ZXh0dXJlOiB0ZXh0
dXJlIH0sIHRleHR1cmVTaXplKTsKLQotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVu
Y29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBp
cGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAg
ICBwYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNz
KCk7Ci0KLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IFVpbnQzMkFycmF5KGF3YWl0IG91dHB1
dEJ1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCA0MiwgIkNvcnJlY3QgdmFsdWUgc2FtcGxlZCBmcm9t
IGEgYm91bmQgMkQgdGV4dHVyZS4iKTsKLX07Ci0KLWNvbnN0IGNvbWJvU2hhZGVyID0gYAotW251
bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZV9tYWluKAotICAgIFRleHR1
cmUyRDx1aW50PiBpbnB1dFRleHR1cmUgOiByZWdpc3Rlcih0MCwgc3BhY2UwKSwgCi0gICAgc2Ft
cGxlciBpbnB1dFNhbXBsZXIgOiByZWdpc3RlcihzMCwgc3BhY2UxKSwgCi0gICAgY29uc3RhbnQg
dWludFtdIGlucHV0IDogcmVnaXN0ZXIoYjAsIHNwYWNlMiksIAotICAgIGRldmljZSB1aW50W10g
b3V0cHV0IDogcmVnaXN0ZXIodTAsIHNwYWNlMykpCi17Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRb
MF0gKyBTYW1wbGUoaW5wdXRUZXh0dXJlLCBpbnB1dFNhbXBsZXIsIGZsb2F0MigwLCAwKSk7Ci19
Ci1gOwotCi10ZXN0c1siQ3JlYXRlIGFuZCB1c2UgbXVsdGlwbGUgR1BVQmluZEdyb3VwcyBpbiBh
IHNpbmdsZSBkaXNwYXRjaC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgW3RleHR1
cmVEYXRhQnVmZmVyLCB0ZXh0dXJlQXJyYXlCdWZmZXJdID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1h
cHBlZCh7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB9KTsKLSAgICBu
ZXcgVWludDMyQXJyYXkodGV4dHVyZUFycmF5QnVmZmVyKS5zZXQoWzE3XSk7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVTaXplID0geyB3aWR0aDog
MSwgaGVpZ2h0OiAxLCBkZXB0aDogMSB9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3Jl
YXRlVGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IHRleHR1cmVTaXplLAotICAgICAgICBmb3JtYXQ6
ICJyZ2JhOHVpbnQiLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBH
UFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9KTsKLQotICAgIGNvbnN0IFtpbnB1dEJ1ZmZl
ciwgaW5wdXRBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTog
NCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0gICAgbmV3IFVpbnQzMkFycmF5
KGlucHV0QXJyYXlCdWZmZXIpLnNldChbMjVdKTsKLSAgICBpbnB1dEJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQg
fSk7Ci0KLSAgICBjb25zdCBiZ2wwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0g
ICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAg
IHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAi
c2FtcGxlZC10ZXh0dXJlIgotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnbDEgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAg
ICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3Rh
Z2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVyIgotICAgICAgICB9XQotICAg
IH0pOwotICAgIGNvbnN0IGJnbDIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAg
ICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAg
dmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJ1
bmlmb3JtLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZ2wzID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAg
ICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdl
LkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgICAgIH1d
Ci0gICAgfSkKLQotICAgIGNvbnN0IGJnMCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAg
ICAgICBsYXlvdXQ6IGJnbDAsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmlu
ZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3
KCkKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzEgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wxLAotICAgICAgICBiaW5kaW5nczogW3sKLSAg
ICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTogZGV2aWNlLmNyZWF0
ZVNhbXBsZXIoe30pCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmcyID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmdsMiwKLSAgICAgICAgYmluZGlu
Z3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsK
LSAgICAgICAgICAgICAgICBidWZmZXI6IGlucHV0QnVmZmVyLAotICAgICAgICAgICAgICAgIHNp
emU6IDQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzMg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wzLAotICAgICAg
ICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNv
dXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogb3V0cHV0QnVmZmVyLAotICAgICAgICAg
ICAgICAgIHNpemU6IDQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV0KLSAgICB9KTsKLQotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBj
b21ib1NoYWRlciB9KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiZ2wwLCBiZ2wxLCBiZ2wyLCBiZ2wz
XSB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFn
ZTogewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRy
eVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1h
bmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoewotICAgICAgICBidWZmZXI6IHRleHR1cmVE
YXRhQnVmZmVyLAotICAgICAgICByb3dQaXRjaDogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAK
LSAgICB9LCB7IHRleHR1cmU6IHRleHR1cmUgfSwgdGV4dHVyZVNpemUpOwotCi0gICAgY29uc3Qg
cGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiZzApOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgxLCBiZzEpOwotICAg
IHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgyLCBiZzIpOwotICAgIHBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgzLCBiZzMpOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAg
IHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgVWlu
dDMyQXJyYXkoYXdhaXQgb3V0cHV0QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBvdXRwdXRC
dWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiQ29ycmVj
dCB2YWx1ZSBzYW1wbGVkIGZyb20gYSBib3VuZCAyRCB0ZXh0dXJlLiIpOwotfTsKLQotdGVzdHNb
IkJpbmQgYSBzaW5nbGUgR1BVQnVmZmVyIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4gZGlmZmVy
ZW50IEdQVUJpbmRHcm91cHMiXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgbnVtSW5w
dXRzID0gNDsKLSAgICBjb25zdCBbdW5pZm9ybUJ1ZmZlciwgd3JpdGVBcnJheUJ1ZmZlcl0gPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCAqIG51bUlucHV0cywgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0gICAgbmV3IEludDMyQXJyYXkod3JpdGVBcnJheUJ1
ZmZlcikuc2V0KFsxLCAyLCAzLCAzNl0pOwotICAgIHVuaWZvcm1CdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IHN0b3JhZ2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9
KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0g
ICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAg
ICAgdHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5k
aW5nOiAxLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwK
LSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsK
LQotICAgIGxldCBiaW5kR3JvdXBzID0gbmV3IEFycmF5KG51bUlucHV0cyk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBudW1JbnB1dHM7ICsraSkgewotICAgICAgICBiaW5kR3JvdXBzW2ldID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwKLSAgICAgICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgICAgIGJpbmRpbmc6
IDAsCi0gICAgICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyOiB1bmlmb3JtQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGkgKiBudW1J
bnB1dHMsCi0gICAgICAgICAgICAgICAgICAgIHNpemU6IDQKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgYmluZGluZzogMSwKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgICAgICBidWZmZXI6IHN0b3JhZ2VCdWZm
ZXIsCi0gICAgICAgICAgICAgICAgICAgIHNpemU6IDQKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9XQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5k
R3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1CdWZmZXJTaGFkZXIgfSk7Ci0KLSAgICBjb25z
dCBwaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAg
IG1vZHVsZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVf
bWFpbiIKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShwaXBlbGluZSk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JbnB1dHM7ICsraSkg
ewotICAgICAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vwc1tpXSk7Ci0g
ICAgICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIH0KLSAgICBwYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5j
b2Rlci5maW5pc2goKV0pOwotCi0gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBJbnQzMkFycmF5KGF3
YWl0IHN0b3JhZ2VCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIHN0b3JhZ2VCdWZmZXIudW5t
YXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiU3RvcmFnZSBidWZmZXIg
YmluZGluZyB3cml0dGVuIHRvIHN1Y2Nlc3NmdWxseS4iKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERl
dmljZSh0ZXN0cyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0
YmE1ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3Mg
aWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5T
b2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9i
bGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ZmQ2MGI4ZDViNmQ2ZWM2Yzk0YWIzNzgwYjIwY2RmYjUzM2MyNGJlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9i
bGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2Vi
R1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08
Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJq
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRl
ckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4
SUQpIDogU1ZfUG9zaXRpb24gewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgc3dpdGNoICh2aWQp
IHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHJlc3VsdCA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgcmVzdWx0ID0gZmxvYXQ0KC0xLCAt
MSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgcmVzdWx0ID0g
ZmxvYXQ0KDEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXN1bHQgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDAsIDEsIDEsIDEpOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJh
c2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRo
IG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLQotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxl
bmQ6IHsKLSAgICAgICAgICAgIHNyY0ZhY3RvcjogImJsZW5kLWNvbG9yIiwKLSAgICAgICAgICAg
IGRzdEZhY3RvcjogImJsZW5kLWNvbG9yIiwKLSAgICAgICAgICAgIG9wZXJhdGlvbjogImFkZCIK
LSAgICAgICAgfSwKLSAgICAgICAgY29sb3JCbGVuZDogewotICAgICAgICAgICAgc3JjRmFjdG9y
OiAiYmxlbmQtY29sb3IiLAotICAgICAgICAgICAgZHN0RmFjdG9yOiAiYmxlbmQtY29sb3IiLAot
ICAgICAgICAgICAgb3BlcmF0aW9uOiAiYWRkIgotICAgICAgICB9LAotICAgICAgICB3cml0ZU1h
c2s6IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgfV07Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGNy
ZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwot
ICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBj
b21tYW5kRW5jb2Rlcik7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmxlbmRDb2xvcih7IHI6IDAsIGc6
IDEsIGI6IDAsIGE6IDEgfSk7Ci0gICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2Rlciwg
cGlwZWxpbmUpOwotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0KLSAgICBx
dWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2
aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxv
dyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3Ry
aXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDZhMGE3NTZkOGNjMGJjZTE1M2ExOWZmNTEy
ZTVjZTNjNzEzYzJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTAwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52
YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVj
dGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkg
Z3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Ci1jb25zdCBwb3NpdGlvbkF0dHJpYnV0ZU51bSA9IDA7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBg
Ci1zdHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247
Ci0gICAgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91
dCB2ZXJ0ZXhfbWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoJHtwb3NpdGlvbkF0dHJp
YnV0ZU51bX0pKSB7Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBv
c2l0aW9uOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMCwgMC41LCAwLCAwLjUpOwotICAgIHJl
dHVybiB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29s
b3IgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19
Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0KLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAot
ICAgICAgICBhbHBoYUJsZW5kOiB7IGRzdEZhY3RvcjogIm9uZSIgfSwKLSAgICAgICAgY29sb3JC
bGVuZDogeyBkc3RGYWN0b3I6ICJvbmUiIH0KLSAgICB9XTsKLQotICAgIGNvbnN0IHZlcnRleElu
cHV0RGVzY3JpcHRvciA9IHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAg
ICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAg
ICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAot
ICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJpYnV0ZU51bQotICAg
ICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgY29uc3QgcGlwZWxpbmUgPSBj
cmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBjb2xvclN0YXRlcywgbnVs
bCwgdmVydGV4SW5wdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleERhdGEgPSBuZXcg
RmxvYXQzMkFycmF5KFsKLSAgICAgICAgLTEsIDEsIDAsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwg
MSwKLSAgICAgICAgMSwgMSwgMCwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6
ZTogdmVydGV4RGF0YS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0s
IHZlcnRleERhdGEuYnVmZmVyKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2Fw
Q2hhaW4oeyBkZXZpY2U6IGRldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSIgfSk7Ci0gICAgY29u
c3QgY29sb3JBdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJj
bGVhciIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyQ29sb3I6IHsg
cjogMCwgZzogMCwgYjogMCwgYTogMCB9Ci0gICAgfTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29k
ZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBb
Y29sb3JBdHRhY2htZW50XSB9KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGlu
ZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwg
WzBdKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNl
KS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRN
TCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxl
dGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52
YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0
dXJlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0
dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTRjMTllZWU0NmRkZTkyYmU2YTljZmQ1MDRiMGNhNDE3NzI3ODhlZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxp
dC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJl
bG93IHNob3dzIGEgZ3JlZW4gbWlwIGNoYWluIG9uIGEgcmVkIGJhY2tncm91bmQuPC9wPgotPGNh
bnZhcyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5NaXBD
aGFpbk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1
cmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiZjY0MTdlZGRhYThlNzk2
ZTE3OTU5ZDZkMTA3MzdjNTYyOWU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRv
LXRleHR1cmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5CbGl0dGluZyBUZXh0dXJlIFRv
IFRleHR1cmU8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJCbGl0IG9wZXJh
dGlvbnMgcG9wdWxhdGUgYSB0ZXh0dXJlIGNvcnJlY3RseSAoYWxsIG1pcCBsZXZlbHMpLiI+Ci08
bGluayByZWw9Im1hdGNoIiBocmVmPSJibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1l
eHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBzaG93cyBhIGdy
ZWVuIG1pcCBjaGFpbiBvbiBhIHJlZCBiYWNrZ3JvdW5kLjwvcD4KLTxjYW52YXMgd2lkdGg9IjUx
MiIgaGVpZ2h0PSI1MTIiPjwvY2FudmFzPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1hc3luYyBmdW5jdGlvbiBsb2Fk
VGV4dHVyZUZyb21DYW52YXMyZChkZXZpY2UsIGNhbnZhczJkKSB7Ci0gICAgY29uc3QgdGV4dHVy
ZVNpemUgPSB7Ci0gICAgICAgIHdpZHRoOiAgY2FudmFzMmQud2lkdGgsCi0gICAgICAgIGhlaWdo
dDogY2FudmFzMmQuaGVpZ2h0LAotICAgICAgICBkZXB0aDogIDIKLSAgICB9OwotCi0gICAgLy8g
TWlwbWFwIGNvdW50Ci0gICAgbGV0IG1heFJlc29sdXRpb24gPSBNYXRoLm1heChjYW52YXMyZC53
aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBsZXQgbWlwTGV2ZWxDb3VudCA9IE1hdGguY2Vp
bChNYXRoLmxvZzIobWF4UmVzb2x1dGlvbikpOwotICAgIGlmIChtaXBMZXZlbENvdW50IDwgMSkg
bWlwTGV2ZWxDb3VudCA9IDE7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHsKLSAg
ICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIG1pcExldmVsQ291bnQ6IG1pcExldmVs
Q291bnQsCi0gICAgICAgIHNhbXBsZUNvdW50OiAxLAotICAgICAgICBkaW1lbnNpb246ICIyZCIs
Ci0gICAgICAgIGZvcm1hdDogInJnYmE4dW5vcm0iLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVy
ZVVzYWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVz
YWdlLlNBTVBMRUQgCi0gICAgfTsKLQotICAgIC8vIENyZWF0ZSB0ZXh0dXJlIGFuZCBhbHNvIGFk
ZCB0aGUgZGVzY3JpcHRvcgotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVy
ZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgdGV4dHVyZVNpemUuZGVwdGggPSAxOwotICAgIHRl
eHR1cmUuZGVzY3JpcHRvciA9IHRleHR1cmVEZXNjcmlwdG9yOwotCi0gICAgLy8gVGV4dHVyZSBk
YXRhIAotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0g
ICAgY29uc3QgaW1hZ2VEYXRhID0gY29udGV4dDJkLmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMy
ZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVy
RGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLAotICAg
ICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEUKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdGV4dHVy
ZUFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHRleHR1cmVXcml0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZUFycmF5
QnVmZmVyKTsKLSAgICB0ZXh0dXJlV3JpdGVBcnJheS5zZXQoaW1hZ2VEYXRhLmRhdGEpOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBkYXRhQ29weVZpZXcgPSB7
Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsCi0gICAgICAgIG9mZnNldDogMCwK
LSAgICAgICAgcm93UGl0Y2g6IGNhbnZhczJkLndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWln
aHQ6IGNhbnZhczJkLndpZHRoICogY2FudmFzMmQuaGVpZ2h0ICogNAotICAgIH07Ci0gICAgY29u
c3QgdGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlLAotICAgICAg
ICBtaXBMZXZlbDogMCwKLSAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgb3JpZ2luOiB7
IHg6IDAsIHk6IDAsIHo6IDAgfQotICAgIH07Ci0KLSAgICBjb25zdCBibGl0Q29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBibGl0Q29tbWFuZEVuY29k
ZXIuY29weUJ1ZmZlclRvVGV4dHVyZShkYXRhQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4
dHVyZVNpemUpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbYmxpdENvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICByZXR1cm4gdGV4dHVyZTsKLX0KLQotYXN5bmMgZnVuY3Rp
b24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBjYW52YXMyZCAgPSBhd2FpdCBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLSAgICBjb25zdCBjb250ZXh0MmQgPSBjYW52YXMyZC5n
ZXRDb250ZXh0KCcyZCcpOwotCi0gICAgLy8gdGV4dHVyZUEgKGxheWVyIDAsIG1pcCAwKTogR3Jl
ZW4KLSAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250
ZXh0MmQuZmlsbFJlY3QoMCwgMCwgY2FudmFzMmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0g
ICAgY29uc3QgdGV4dHVyZUEgPSBhd2FpdCBsb2FkVGV4dHVyZUZyb21DYW52YXMyZChkZXZpY2Us
IGNhbnZhczJkKTsKLQotICAgIC8vIHRleHR1cmVCIChsYXllciAwLCBtaXAgMCk6IFJlZAotICAg
IGNvbnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDI1NSwgMCwgMCknOwotICAgIGNvbnRleHQyZC5m
aWxsUmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBjb25z
dCB0ZXh0dXJlQiA9IGF3YWl0IGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFz
MmQpOwotCi0gICAgLy8gQ2xlYW4gY2FudmFzIHRvIGJsdWUKLSAgICBjb250ZXh0MmQuZmlsbFN0
eWxlID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAgICBjb250ZXh0MmQuZmlsbFJlY3QoMCwgMCwgY2Fu
dmFzMmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0KLSAgICAvLyBUZXN0IGNvcHlUZXh0dXJl
VG9UZXh0dXJlCi0KLSAgICBsZXQgc2l6ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVBLmRl
c2NyaXB0b3Iuc2l6ZSk7Ci0gICAgbGV0IGJsaXRDb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kRW5jb2RlcigpOwotICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGV4dHVyZUEuZGVz
Y3JpcHRvci5taXBMZXZlbENvdW50OyArK2kpIHsKLSAgICAgICAgc2l6ZS53aWR0aCAgPSBNYXRo
Lm1heChNYXRoLmZsb29yKHNpemUud2lkdGggLyAyKSwgMSk7Ci0gICAgICAgIHNpemUuaGVpZ2h0
ID0gTWF0aC5tYXgoTWF0aC5mbG9vcihzaXplLmhlaWdodCAvIDIpLCAxKTsKLQotICAgICAgICBs
ZXQgc3JjVGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZUEs
Ci0gICAgICAgICAgICBtaXBMZXZlbDogMCwKLSAgICAgICAgICAgIGFycmF5TGF5ZXI6IDAsCi0g
ICAgICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAg
ICAgIGxldCBkc3RUZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0
dXJlQSwKLSAgICAgICAgICAgIG1pcExldmVsOiBpLAotICAgICAgICAgICAgYXJyYXlMYXllcjog
MSwKLSAgICAgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0KLSAgICAgICAgfTsK
LSAgICAgICAgLy8gUG9wdWxhdGUgdGV4dHVyZUEgKGxheWVyIDEsIG1pcCBpKQotICAgICAgICBi
bGl0Q29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb1RleHR1cmUoc3JjVGV4dHVyZUNvcHlWaWV3
LCBkc3RUZXh0dXJlQ29weVZpZXcsIHNpemUpOwotCi0gICAgICAgIHNyY1RleHR1cmVDb3B5Vmll
dyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVBLAotICAgICAgICAgICAgbWlwTGV2
ZWw6IGksCi0gICAgICAgICAgICBhcnJheUxheWVyOiAxLAotICAgICAgICAgICAgb3JpZ2luOiB7
IHg6IDAsIHk6IDAsIHo6IDAgfQotICAgICAgICB9OwotICAgICAgICBkc3RUZXh0dXJlQ29weVZp
ZXcgPSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQiwKLSAgICAgICAgICAgIG1pcExl
dmVsOiAwLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgICAgIG9yaWdpbjog
eyB4OiAwLCB5OiBzaXplLmhlaWdodCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAgICAgIC8vIFBv
cHVsYXRlIHRleHR1cmVCIChsYXllciAwLCBtaXAgMCkgd2l0aCB0ZXh0dXJlQSAobGF5ZXIgMSwg
bWlwIGkpCi0gICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZShz
cmNUZXh0dXJlQ29weVZpZXcsIGRzdFRleHR1cmVDb3B5Vmlldywgc2l6ZSk7Ci0gICAgfQotCi0g
ICAgLy8gUmVuZGVyIHRleHR1cmVCIGludG8gY2FudmFzMmQKLQotICAgIGNvbnN0IGltYWdlRGF0
YUxlbmd0aEluQnl0ZXMgPSBjYW52YXMyZC53aWR0aCAqIGNhbnZhczJkLmhlaWdodCAqIDQ7Ci0g
ICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhTGVu
Z3RoSW5CeXRlcywKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUQKLSAgICB9OwotICAgIGNvbnN0IGJ1ZmZlckEgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQ29weVZp
ZXcgPSB7Ci0gICAgICAgIGJ1ZmZlcjogYnVmZmVyQSwKLSAgICAgICAgcm93UGl0Y2g6IGNhbnZh
czJkLndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IGNhbnZhczJkLndpZHRoICogY2Fu
dmFzMmQuaGVpZ2h0ICogNAotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHlWaWV3ID0gewot
ICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQgotICAgIH07Ci0gICAgYmxpdENvbW1hbmRFbmNvZGVy
LmNvcHlUZXh0dXJlVG9CdWZmZXIodGV4dHVyZUNvcHlWaWV3LCBidWZmZXJDb3B5VmlldywgdGV4
dHVyZUEuZGVzY3JpcHRvci5zaXplKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
YmxpdENvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCBhYiA9IGF3YWl0IGJ1
ZmZlckEubWFwUmVhZEFzeW5jKCkKLSAgICBjb25zdCBhcnJheSA9IG5ldyBVaW50OENsYW1wZWRB
cnJheShhYik7Ci0gICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJh
eSwgY2FudmFzMmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0KLSAgICBjb250ZXh0MmQucHV0
SW1hZ2VEYXRhKHJlc3VsdEltYWdlRGF0YSwgMCwgMCk7Ci0KLSAgICBidWZmZXJBLmRlc3Ryb3ko
KTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRl
c3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlv
bihlKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3Qg
Y2FudmFzMmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLSAgICBkcmF3R3Jl
ZW5NaXBDaGFpbk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzMmQpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsK
LTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQt
Y29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNzk2YTM3NTdlNTQyNWRiMDhiMTQzMmFmZWVj
NmY0MTNjZDlkYjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTx0aXRsZT5CYXNpYyBCbGl0dGluZzwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IkJsaXQgb3BlcmF0aW9ucyBjb3B5IGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1h
dGNoIiBocmVmPSJibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVh
cmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IGNhbnZhczJkID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxvYWRJ
bWFnZSgpIHsKLSAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGltYWdlLnNyYyA9
ICJyZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZyI7Ci0gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAg
ICAgICAgICAgIHRlc3QoZGV2aWNlLCBpbWFnZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhczJkKTsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1hc3luYyBmdW5j
dGlvbiB0ZXN0KGRldmljZSwgaW1hZ2UpIHsKLSAgICBjYW52YXMyZC53aWR0aCA9IGltYWdlLndp
ZHRoOwotICAgIGNhbnZhczJkLmhlaWdodCA9IGltYWdlLmhlaWdodDsKLSAgICBjb25zdCBjb250
ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHQyZC5kcmF3SW1h
Z2UoaW1hZ2UsIDAsIDApOwotCi0gICAgY29uc3QgaW1hZ2VEYXRhID0gY29udGV4dDJkLmdldElt
YWdlRGF0YSgwLCAwLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0KTsKLQotICAgIGNvbnN0IGJ1
ZmZlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5n
dGgsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQwotICAgIH07Ci0gICAg
YnVmZmVyQSA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgYnVmZmVyRGVzY3JpcHRvciwg
aW1hZ2VEYXRhLmRhdGEuYnVmZmVyKTsKLQotICAgIGJ1ZmZlckRlc2NyaXB0b3IudXNhZ2UgfD0g
R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Q7Ci0gICAgY29uc3QgYnVmZmVyQiA9IGRldmljZS5jcmVh
dGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyVmlld0IgPSB7Ci0g
ICAgICAgIGJ1ZmZlcjogYnVmZmVyQiwKLSAgICAgICAgcm93UGl0Y2g6IGltYWdlLndpZHRoICog
NCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9OwotCi0gICAgY29uc3QgdGV4dHVyZVNp
emUgPSB7Ci0gICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBpbWFn
ZS5oZWlnaHQsCi0gICAgICAgIGRlcHRoOiAxCi0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlRGVz
Y3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDog
InJnYmE4dW5vcm0iLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDIHwg
R1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUCi0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQSA9IGRl
dmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJl
Vmlld0EgPSB7IHRleHR1cmU6IHRleHR1cmVBIH07Ci0KLSAgICBjb25zdCB0ZXh0dXJlQiA9IGRl
dmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJl
Vmlld0IgPSB7IHRleHR1cmU6IHRleHR1cmVCIH07Ci0KLSAgICBjb25zdCByZWFkQnVmZmVyRGVz
Y3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCwKLSAg
ICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQKLSAgICB9OwotICAgIGNvbnN0IHJlYWRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHJlYWRCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZWFkQnVmZmVyVmlldyA9IHsKLSAg
ICAgICAgYnVmZmVyOiByZWFkQnVmZmVyLAotICAgICAgICByb3dQaXRjaDogaW1hZ2Uud2lkdGgg
KiA0LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH07Ci0KLSAgICBjb25zdCBjb21tYW5k
RW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1hbmRFbmNv
ZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAwLCBidWZmZXJCLCAwLCBpbWFnZURhdGEu
ZGF0YS5ieXRlTGVuZ3RoKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJl
KGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1cmVTaXplKTsKLSAgICBjb21tYW5kRW5j
b2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1
cmVTaXplKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZSh0ZXh0dXJl
Vmlld0EsIHRleHR1cmVWaWV3QiwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNv
cHlUZXh0dXJlVG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywgdGV4dHVyZVNp
emUpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKLSAgICBidWZmZXJBLmRlc3Ryb3koKTsKLSAgICBidWZmZXJCLmRlc3Ryb3koKTsKLSAg
ICB0ZXh0dXJlQS5kZXN0cm95KCk7Ci0gICAgdGV4dHVyZUIuZGVzdHJveSgpOwotCi0gICAgY29u
c3QgcmVzdWx0Q29udGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpLmdldENv
bnRleHQoJzJkJyk7Ci0KLSAgICBhd2FpdCByZWFkQnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4o
YWIgPT4gewotICAgICAgICBjb25zdCBhcnJheSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhYik7
Ci0gICAgICAgIGNvbnN0IHJlc3VsdEltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEoYXJyYXksIGlt
YWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgICAgIHJlc3VsdENvbnRleHQucHV0SW1h
Z2VEYXRhKHJlc3VsdEltYWdlRGF0YSwgMCwgMCk7Ci0KLSAgICAgICAgcmVhZEJ1ZmZlci5kZXN0
cm95KCk7Ci0gICAgfSk7Ci19Ci0KLWxvYWRJbWFnZSgpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2Vz
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVy
LXJhY2VzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBm
NWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21t
YW5kLWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRN
TCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxl
dGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52
YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGI1YzM4ZTY0Y2RhMzFkZWEzZjJjZWM0
Yzc4MGViNTEwMDE0YjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4K
LTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEg
Z3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJidWZmZXItY29tbWFuZC1i
dWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0
Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNvbG9y
IDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihmbG9h
dDIgeHkgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyByZ2IgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBW
ZXJ0ZXhPdXQgdk91dDsKLSAgICB2T3V0LnBvc2l0aW9uID0gZmxvYXQ0KHh5LCAwLCAxKTsKLSAg
ICB2T3V0LmNvbG9yID0gZmxvYXQ0KHJnYiwgMSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xvcjsKLX0KLWAKLQotZnVuY3Rpb24gY3Jl
YXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGluZGV4
Rm9ybWF0OiAidWludDMyIiwKLSAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAg
IHN0cmlkZTogNCAqIDIsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAg
ICAgICAgZm9ybWF0OiAiZmxvYXQyIiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjog
MAotICAgICAgICAgICAgfV0KLSAgICAgICAgfSwgewotICAgICAgICAgICAgc3RyaWRlOiA0ICog
MywKLSAgICAgICAgICAgIHN0ZXBNb2RlOiAiaW5zdGFuY2UiLAotICAgICAgICAgICAgYXR0cmli
dXRlU2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0MyIsCi0gICAgICAgICAg
ICAgICAgc2hhZGVyTG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAg
fQotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCB2ZXJ0aWNl
cykgewotICAgIGNvbnN0IHZlcnRleEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlcykK
LSAgICByZXR1cm4gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHZlcnRleEFy
cmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4QXJy
YXkuYnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwg
cGlwZWxpbmUsIGF0dGFjaG1lbnQsIHZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXIpIHsKLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAg
IGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0
dGFjaG1lbnRzOiBbYXR0YWNobWVudF0gfSk7Ci0gICAgZW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXIsIGNvbG9yQnVmZmVyXSwgWzAsIDBdKTsKLSAgICBlbmNvZGVyLnNl
dFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBlbmNvZGVyLmRyYXcoMywgMSwgMCwgMCk7Ci0gICAg
ZW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0g
ICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUg
fSk7Ci0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXRE
ZXNjcmlwdG9yKCk7Ci0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNo
YWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgdXBwZXJMZWZ0QnVmZmVyID0gY3JlYXRlQW5kU2V0VmVydGV4QnVmZmVyKGRl
dmljZSwgWy0xLCAxLCAtMSwgLTEsIDAsIDFdKTsKLSAgICBjb25zdCBtaWRkbGVCdWZmZXIgPSBj
cmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBbMCwgMSwgLTEsIC0xLCAxLCAtMV0pOwot
ICAgIGNvbnN0IHVwcGVyUmlnaHRCdWZmZXIgPSBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2
aWNlLCBbMCwgMSwgMSwgMSwgMSwgLTFdKTsKLQotICAgIGNvbnN0IGdyZWVuID0gWzAsIDEsIDBd
OwotICAgIGNvbnN0IGJsdWUgPSBbMCwgMCwgMV07Ci0gICAgY29uc3QgZ3JlZW5BcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoZ3JlZW4pOwotICAgIGNvbnN0IGJsdWVBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkoYmx1ZSk7Ci0KLSAgICBjb25zdCBjb2xvckJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhE
YXRhKGRldmljZSwgeyBzaXplOiBncmVlbkFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSwgZ3JlZW5BcnJheS5i
dWZmZXIpOwotCi0gICAgY29uc3QgYXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDog
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAg
ICAgbG9hZE9wOiAibG9hZCIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNs
ZWFyQ29sb3I6IHsgcjogMSwgZzogMCwgYjogMCwgYTogMSB9Ci0gICAgfTsKLQotICAgIC8qIG1h
cFdyaXRlQXN5bmMgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgR1BVIGNvbW1hbmRzIGFyZSBjb21wbGV0
ZSwgc28gdHJpYW5nbGUgc2hvdWxkIGJlIGdyZWVuLiAqLwotICAgIGRyYXdBbmRTdWJtaXRDb21t
YW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCB1cHBlckxlZnRCdWZmZXIsIGNvbG9y
QnVmZmVyKTsKLSAgICBhd2FpdCBjb2xvckJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbihhYiA9
PiB7Ci0gICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYWIpOwotICAgICAgICBh
cnJheS5zZXQoYmx1ZSk7Ci0gICAgICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7Ci0gICAgfSk7Ci0K
LSAgICBhd2FpdCBjb2xvckJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbihhYiA9PiB7Ci0gICAg
ICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYWIpOwotICAgICAgICBhcnJheS5zZXQo
Z3JlZW4pOwotICAgIH0pOwotCi0gICAgLyogY29sb3JCdWZmZXIgdGhhdCBpcyBzdGlsbCBtYXBw
ZWQgc2hvdWxkIGJlIG5vdCBzdWJtaXR0ZWQgdG8gZHJhdyBhIGJsdWUgdHJpYW5nbGUuICovCi0g
ICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIHVw
cGVyTGVmdEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotCi0gICAgLyogY29sb3JCdWZmZXIgZG9lcyBu
b3QgYWN0dWFsbHkgY29udGFpbiAiZ3JlZW4iIGFnYWluIHVudGlsIHRoaXMgY2FsbC4gKi8KLSAg
ICBjb2xvckJ1ZmZlci51bm1hcCgpOwotCi0gICAgLyogV3JpdGluZyBkYXRhIGltbWVkaWF0ZWx5
IGFmdGVyIGEgc3VibWl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBwcmVjZWRpbmcgZHJhdyBjYWxs
LiAqLwotICAgIGRyYXdBbmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2ht
ZW50LCBtaWRkbGVCdWZmZXIsIGNvbG9yQnVmZmVyKTsKLSAgICBhd2FpdCBtYXBXcml0ZURhdGFU
b0J1ZmZlcihjb2xvckJ1ZmZlciwgYmx1ZUFycmF5LmJ1ZmZlcik7Ci0KLSAgICAvKiBkZXN0cm95
IHJpZ2h0IGFmdGVyIGEgc3VibWl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBkcmF3IGNhbGwuICov
Ci0gICAgYXdhaXQgbWFwV3JpdGVEYXRhVG9CdWZmZXIoY29sb3JCdWZmZXIsIGdyZWVuQXJyYXku
YnVmZmVyKTsKLSAgICBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0
YWNobWVudCwgdXBwZXJSaWdodEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIHVwcGVyUmlnaHRC
dWZmZXIuZGVzdHJveSgpOwotCi0gICAgLyogZHJhdyBjb21tYW5kIHdpdGggYSBkZXN0cm95ZWQg
YnVmZmVyIHNob3VsZCBmYWlsICovCi0gICAgY29sb3JCdWZmZXIuZGVzdHJveSgpOwotICAgIGRy
YXdBbmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCBtaWRkbGVC
dWZmZXIsIGNvbG9yQnVmZmVyKTsKLQotICAgIHVwcGVyTGVmdEJ1ZmZlci5kZXN0cm95KCk7Ci0g
ICAgbWlkZGxlQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB1cHBlclJpZ2h0QnVmZmVyLmRlc3Ryb3ko
KTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRl
c3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3Jl
ZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkwNWVlYTlkNTMzMzUzZDg2Y2JlMGRkMmVkZGY2ZDY3Y2RkNDA3YTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTQgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyKCk6IEJ1
ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2UhCi0KLVBB
U1MgR1BVQnVmZmVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIGJvdGggcmVhZC1vbmx5IGFuZCBTVE9S
QUdFIHVzYWdlcy4KLVBBU1MgdW5tYXAgb24gYWxyZWFkeSB1bm1hcHBlZCwgbWFwcGFibGUgR1BV
QnVmZmVyIHNob3VsZCBub3QgZ2VuZXJhdGUgZXJyb3IuCi1QQVNTIEdQVUJ1ZmZlciBjcmVhdGVk
IHZpYSBjcmVhdGVCdWZmZXJNYXBwZWQgY2Fubm90IGJlIHJlbWFwcGVkLgotUEFTUyBHUFVCdWZm
ZXJEZXNjcmlwdG9yIHdpdGggYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIHNob3Vs
ZCBmYWlsLgotUEFTUyBUb28tbGFyZ2UgR1BVQnVmZmVyRGVzY3JpcHRvciBzaXplIHNob3VsZCBm
YWlsIHdpdGggb3V0LW9mLW1lbW9yeSBlcnJvci4KLVBBU1MgbWFwUmVhZEFzeW5jIG9uIG5vbi1N
QVBfUkVBRCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIG1hcFdyaXRlQXN5bmMgb24gbm9u
LU1BUF9XUklURSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIHVubWFwIG9uIG5vbi1tYXBw
YWJsZSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIGNyZWF0ZUJ1ZmZlck1hcHBlZDogbm9u
LTQtYnl0ZS1hbGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRvciBzaXplIHNob3VsZCBmYWlsLgotUEFT
UyBBbnkgbWV0aG9kIGNhbGwgb24gYW4gaW52YWxpZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1Q
QVNTIEFueSBtZXRob2QgY2FsbCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwu
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZmExNDU4MzlmZjMzMGI1MGMzODczYjAwNDYxNGEyMjNmOTU5ZmI1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9idWZmZXItZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgR1BVQnVm
ZmVyIEVycm9ycy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0c1siR1BV
QnVmZmVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIGJvdGggcmVhZC1vbmx5IGFuZCBTVE9SQUdFIHVz
YWdlcy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2
YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQs
Ci0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5J
TkRFWCB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLSAgICByZXR1cm4gcG9wTnVsbEVycm9y
KGRldmljZSk7Ci19OwotCi10ZXN0c1sidW5tYXAgb24gYWxyZWFkeSB1bm1hcHBlZCwgbWFwcGFi
bGUgR1BVQnVmZmVyIHNob3VsZCBub3QgZ2VuZXJhdGUgZXJyb3IuIl0gPSBhc3luYyBkZXZpY2Ug
PT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoewotICAgICAgICBz
aXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfAotICAgICAg
ICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAg
ICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdl
LlVOSUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwot
Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLnVu
bWFwKCk7Ci0gICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkdQ
VUJ1ZmZlciBjcmVhdGVkIHZpYSBjcmVhdGVCdWZmZXJNYXBwZWQgY2Fubm90IGJlIHJlbWFwcGVk
LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlk
YXRpb24iKTsKLSAgICBjb25zdCBbYnVmZmVyLCBfXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBw
ZWQoeyBzaXplOiA0LCB1c2FnZTogMCB9KTsKLSAgICAvLyBTaG91bGQgbm90IGZhaWwuCi0gICAg
YnVmZmVyLnVubWFwKCk7Ci0gICAgYXdhaXQgcG9wTnVsbEVycm9yKGRldmljZSk7Ci0KLSAgICBk
ZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAvLyBTaG91bGQgZmFpbC4K
LSAgICBidWZmZXIudW5tYXAoKTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNl
KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIC8vIFNo
b3VsZCBmYWlsLgotICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0
X3VucmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlv
bkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siR1BVQnVmZmVyRGVzY3JpcHRvciB3aXRoIGJv
dGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRh
dGlvbkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siVG9vLWxhcmdlIEdQVUJ1ZmZlckRlc2Ny
aXB0b3Igc2l6ZSBzaG91bGQgZmFpbCB3aXRoIG91dC1vZi1tZW1vcnkgZXJyb3IuIl0gPSBhc3lu
YyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIp
OwotICAgIGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA5OTk5OTk5OTk5OSwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLk5PTkUgfSk7Ci0gICAgcmV0dXJuIHBvcE1lbW9yeUVycm9yKGRldmljZSk7
Ci19OwotCi10ZXN0c1sibWFwUmVhZEFzeW5jIG9uIG5vbi1NQVBfUkVBRCBHUFVCdWZmZXIgc2hv
dWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoewotICAgICAgICBzaXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JD
IHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8
Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1
ZmZlclVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgi
dmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNz
ZXJ0X3VucmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRh
dGlvbkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1sibWFwV3JpdGVBc3luYyBvbiBub24tTUFQ
X1dSSVRFIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0g
ICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAgICAgICAgICBHUFVC
dWZmZXJVc2FnZS5DT1BZX1NSQyB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX0RT
VCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAotICAgICAgICAgICAgR1BV
QnVmZmVyVXNhZ2UuSU5ERVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIubWFwV3JpdGVBc3lu
YygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwot
ICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJ1bm1h
cCBvbiBub24tbWFwcGFibGUgR1BVQnVmZmVyIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAg
c2l6ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwKLSAgICAg
ICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0gICAgICAg
ICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdl
LlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlv
biIpOwotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3Io
ZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJjcmVhdGVCdWZmZXJNYXBwZWQ6IG5vbi00LWJ5dGUtYWxp
Z25lZCBHUFVCdWZmZXJEZXNyaXB0b3Igc2l6ZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2
aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDUsIHVzYWdlOiAwIH0pOwotICAgIHJldHVy
biBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJBbnkgbWV0aG9kIGNh
bGwgb24gYW4gaW52YWxpZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2Ug
PT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fSk7Ci0gICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsKGRldmljZSwgYnVmZmVy
KTsKLX07Ci0KLXRlc3RzWyJBbnkgbWV0aG9kIGNhbGwgb24gYSBkZXN0cm95ZWQgR1BVQnVmZmVy
IHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9S
RUFEIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
YnVmZmVyLmRlc3Ryb3koKTsKLSAgICBhd2FpdCBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLQotICAg
IHJldHVybiBhc3NlcnRBbGxCdWZmZXJNZXRob2RzRmFpbChkZXZpY2UsIGJ1ZmZlcik7Ci19Owot
Ci1jb25zdCBhc3NlcnRBbGxCdWZmZXJNZXRob2RzRmFpbCA9IGFzeW5jIChkZXZpY2UsIGJ1ZmZl
cikgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1
ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgpOyB9KS5j
YXRjaChlID0+IHt9KTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCkudGhlbigoKSA9PiB7IGFzc2VydF91bnJlYWNoZWQoKTsgfSkuY2F0Y2goZSA9
PiB7fSk7Ci0gICAgYXdhaXQgcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIudW5tYXAoKTsKLSAg
ICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJy
b3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgcmV0dXJu
IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRl
c3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQy
YTk0YmE1ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAt
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgot
PGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5T
cXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmNhNWNiZDgzMzk3YTJlOTQxZTIwNDRlZThmNmRjYjM2
YzZhZTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRh
IG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4g
Y2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJjb2xvci13cml0ZS1tYXNrLXRyaWFu
Z2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotCi1jb25zdCBzaGFkZXJDb2RlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0
ZXhfbWFpbih1aW50IHZpZCA6IFNWX1ZlcnRleElEKSA6IFNWX1Bvc2l0aW9uCi17Ci0gICAgZmxv
YXQ0IHY7Ci0gICAgc3dpdGNoICh2aWQpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHYgPSBmbG9h
dDQoLTEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHYg
PSBmbG9hdDQoLTEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAg
ICAgICB2ID0gZmxvYXQ0KDEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICB2ID0gZmxvYXQ0KDEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIHJldHVybiB2OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDog
U1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYAotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMg
ZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNp
Y1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbewotICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAg
YWxwaGFCbGVuZDoge30sCi0gICAgICAgIGNvbG9yQmxlbmQ6IHt9LAotICAgICAgICB3cml0ZU1h
c2s6IEdQVUNvbG9yV3JpdGUuR1JFRU4gfCBHUFVDb2xvcldyaXRlLkFMUEhBCi0gICAgfV07Ci0g
ICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2
aWNlLCBjb2xvclN0YXRlcyk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnQgPSB7Ci0gICAg
ICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1
bHRWaWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0
b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0KLSAg
ICB9OwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHsgY29sb3JBdHRhY2htZW50czogW2NvbG9yQXR0YWNobWVudF0gfSk7Ci0gICAgZW5jb2Rl
QmFzaWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlwZWxpbmUpOwotICAgIGNvbnN0IHF1ZXVlID0g
ZGV2aWNlLmdldFF1ZXVlKCk7Ci0KLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICB0ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYwNzQ1MGM1ODE2MGVlMzkwYjM3YTA4ZGYwNGJk
NGEwMjk4MzdhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFu
ZEVuY29kZXIuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZl
cnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkZTE3NWNiNzllZWE4YjllMmRhMTU1MzRiNjgyYWNj
Yjc5NTNjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7Ci0gICAgICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BVQ29t
bWFuZEVuY29kZXIsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBHUFVDb21tYW5kRW5jb2Rlci4iKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgYSBkZWZhdWx0IEdQVUNv
bW1hbmRFbmNvZGVyLiIpOwotCi0vLyBGSVhNRTogY3JlYXRlQ29tbWFuZEVuY29kZXIgc2hvdWxk
IHRha2UgYSBHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IsIHdoaWNoIGlzIGN1cnJlbnRseSBh
biBlbXB0eSBkaWN0aW9uYXJ5LgotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1YmJiYjg4MzZmYzdmYjYxNTQxZjRlZTZmOGQ4
OGM3ZGQ0MGE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgQ29tcHV0ZSBjb21waWxhdGlv
biBmYWlsZWQgZHVlIHRvIGluY29ycmVjdCBlbnRyeSBwb2ludCBzdHJpbmcuCi1QQVNTIENvbXB1
dGUgcGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZGVkLgotUEFTUyBNU0wgcGlwZWxpbmUgY3JlYXRp
b24gZmFpbGVkIGR1ZSB0byBpbnZhbGlkIEdQVVNoYWRlck1vZHVsZS4KLVBBU1MgTVNMIHBpcGVs
aW5lIGNyZWF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3Jz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk3NTQ0ZDkzY2U5ZDkyZmMyM2M3NzAwYjI5
MjVmZTdkNzhhNTI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTx0aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2Ny
aXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0
ZXN0cyA9IHt9OwotbGV0IGdvb2RNb2R1bGU7Ci0KLXRlc3RzWyJDb21wdXRlIGNvbXBpbGF0aW9u
IGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7Ci0gICAgY29uc3QgZ29vZFdITFNMID0gYAotW251bXRocmVhZHMoMSwgMSwgMSld
Ci1jb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigpIHsgfQotYDsKLSAgICBnb29kTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGdvb2RXSExTTCB9KTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9k
dWxlOiBnb29kTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZp
Y2UpOwotfTsKLQotdGVzdHNbIkNvbXB1dGUgcGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZGVkLiJd
ID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLQotICAgIGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21w
dXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTogZ29vZE1vZHVsZSwKLSAgICAgICAgICAg
IGVudHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBy
ZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siTVNMIHBpcGVsaW5lIGNy
ZWF0aW9uIGZhaWxlZCBkdWUgdG8gaW52YWxpZCBHUFVTaGFkZXJNb2R1bGUuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGNvbnN0IGJhZE1TTCA9IGBUaGlzIGNvZGUgc2hvdWxkIG5vdCBjb21w
aWxlLmA7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm5vbmUiKTsKLQotICAgIGNvbnN0
IGJhZE1TTE1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBiYWRNU0wg
fSk7Ci0KLSAgICBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotCi0gICAgZGV2aWNlLnB1
c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0KLSAgICBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKHsKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IGJh
ZE1TTE1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAg
ICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7
Ci19OwotCi10ZXN0c1siTVNMIHBpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3Jy
ZWN0IGVudHJ5IHBvaW50IHN0cmluZy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3Qg
Z29vZE1TTCA9IGAKLWtlcm5lbCB2b2lkIF9jb21wdXRlX21haW4oKSB7IH0KLWA7Ci0gICAgY29u
c3QgbXNsTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGdvb2RNU0wg
fSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLQotICAgIGRl
dmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAg
ICAgICAgICAgIG1vZHVsZTogbXNsTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9j
b21wdXRlX21haSIKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRp
b25FcnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJs
ZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0
aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2Fu
dmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZh
cyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxl
ZC10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzQ0
MjRiZTg2NTJlN2E2ZmM2Nzg3ZDIzNDFhMzdiYzA0ZGRmOTllLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhl
bGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQ
VSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIg
aHJlZj0idmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBh
c3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52
YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29k
ZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVy
dGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgdWludCBp
aWQgOiBTVl9JbnN0YW5jZUlEKQotewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9z
aXRpb24gPSBwb3NpdGlvbjsKLQotICAgIGlmIChpaWQgPT0gMCkgewotICAgICAgICB2T3V0LnBv
c2l0aW9uLnogPSAwLjU7Ci0gICAgICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMSwgMCwgMCwgMSk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCAxLCAwLCAxKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAg
cmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNl
KSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAg
Ly8gZmxvYXQ0IHh5encKLSAgICAgICAgLTEsIDEsIDAsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwg
MSwKLSAgICAgICAgMSwgMSwgMCwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsKLSAg
ICByZXR1cm4gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHZlcnRleEFycmF5
LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4QXJyYXku
YnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCkgewot
ICAgIHJldHVybiB7Ci0gICAgICAgIGluZGV4Rm9ybWF0OiAidWludDMyIiwKLSAgICAgICAgdmVy
dGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgIHN0cmlkZTogNCAqIDQsCi0gICAgICAgICAgICBh
dHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IiwKLSAgICAg
ICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMAotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0K
LSAgICB9Ci19Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFp
biA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTog
UmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIgPSBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKTsKLSAgICBjb25zdCB2
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKTsKLSAg
ICBjb25zdCBkZXB0aFN0YXRlRGVzY3JpcHRvciA9IGNyZWF0ZUJhc2ljRGVwdGhTdGF0ZURlc2Ny
aXB0b3IoKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVy
TW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIHZlcnRleElucHV0RGVzY3JpcHRvciwgZGVwdGhT
dGF0ZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7Ci0KLSAgICBjb25zdCBiYXNpY0F0dGFjaG1lbnQgPSB7Ci0gICAg
ICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1
bHRWaWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0
b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAxLjAsIGc6IDAsIGI6IDAsIGE6IDEuMCB9
Ci0gICAgfTsKLQotICAgIGNvbnN0IGRlcHRoQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNo
bWVudDogY3JlYXRlQmFzaWNEZXB0aFRleHR1cmUoY2FudmFzLCBkZXZpY2UpLmNyZWF0ZURlZmF1
bHRWaWV3KCksCi0gICAgICAgIGRlcHRoTG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBkZXB0aFN0
b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyRGVwdGg6IDEuMAotICAgIH07Ci0KLSAgICBj
b25zdCBlbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsKLSAgICAgICAg
Y29sb3JBdHRhY2htZW50czogW2Jhc2ljQXR0YWNobWVudF0sCi0gICAgICAgIGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQ6IGRlcHRoQXR0YWNobWVudAotICAgIH0pOwotCi0gICAgZW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIGVuY29kZXIuc2V0UGlw
ZWxpbmUocGlwZWxpbmUpOwotICAgIGVuY29kZXIuZHJhdyg0LCAyLCAwLCAwKTsKLSAgICBlbmNv
ZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFu
Z2xlcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlh
bmdsZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1
YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVk
LXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZl
cmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBn
cmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsK
LWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQyMjFiM2JkMDVhZjM5ZGIyOGY3NTVmMDg1MGQ1NjFkMWJmN2FjYTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGlu
ayByZWw9Im1hdGNoIiBocmVmPSJkcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwi
PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9w
PgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBz
aGFkZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZl
cnRleCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
LCBmbG9hdCBncmVlbiA6IGF0dHJpYnV0ZSgxKSkKLXsKLSAgICBWZXJ0ZXhPdXQgdk91dDsKLSAg
ICB2T3V0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCBn
cmVlbiwgMCwgMSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewot
ICAgIHJldHVybiBjb2xvcjsKLX0KLWAKLQotZnVuY3Rpb24gY3JlYXRlVmVydGV4QnVmZmVyKGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCi0gICAg
ICAgIC8vIGZsb2F0NCB4eXp3LCBmbG9hdCBnCi0gICAgICAgIC0xLCAxLCAwLCAxLCAwLAotICAg
ICAgICAtMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLCAwLAotICAgICAgICAt
MSwgLTEsIDAsIDEsIDEsCi0gICAgICAgIDEsIDEsIDAsIDEsIDAsCi0gICAgICAgIDEsIDEsIDAs
IDEsIDEsCi0gICAgICAgIDEsIC0xLCAwLCAxLCAwLAotICAgICAgICAxLCAtMSwgMCwgMSwgMQot
ICAgIF0pOwotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTog
dmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2
ZXJ0ZXhBcnJheS5idWZmZXIpOwotfQotCi1jb25zdCBpbmRleEJ1ZmZlck9mZnNldCA9IDIwNDg7
IC8vIFRlc3QgYSBidWZmZXIgb2Zmc2V0IGZvciBpbmRleCBhcnJheS4KLWNvbnN0IGluZGV4T2Zm
c2V0ID0gLTkwMDE7IC8vIFRlc3QgYSBiYXNlIGluZGV4IHRvIGFkZCB0byBpbmRleCBhcnJheSB2
YWx1ZXMuCi0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4QnVmZmVyKGRldmljZSkgewotICAgIGNvbnN0
IG9mZnNldEFycmF5ID0gWzEsIDMsIDUsIDMsIDUsIDddLm1hcCh2ID0+IHsgcmV0dXJuIHYgLSBp
bmRleE9mZnNldDsgfSk7Ci0gICAgY29uc3QgaW5kZXhBcnJheSA9IG5ldyBVaW50MzJBcnJheShb
MSwgMywgNSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAtIGluZGV4T2Zmc2V0OyB9KSk7
Ci0gICAgY29uc3QgYnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoCi0gICAgICAgIGRldmlj
ZSwgCi0gICAgICAgIHsgCi0gICAgICAgICAgICBzaXplOiBpbmRleEFycmF5LmJ5dGVMZW5ndGgg
KyBpbmRleEJ1ZmZlck9mZnNldCwgCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
SU5ERVggCi0gICAgICAgIH0sCi0gICAgICAgIGluZGV4QXJyYXkuYnVmZmVyLAotICAgICAgICBp
bmRleEJ1ZmZlck9mZnNldAotICAgICk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAg
ICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAg
ICAgICAgICAgc3RyaWRlOiA0ICogNSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAg
ICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxv
Y2F0aW9uOiAwCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0OiA0ICog
NCwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdCIsCi0gICAgICAgICAgICAgICAgc2hh
ZGVyTG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAgfTsKLX0KLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFz
aWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGgg
bm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IGluZGV4QnVmZmVyID0g
Y3JlYXRlSW5kZXhCdWZmZXIoZGV2aWNlKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJh
c2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIGNyZWF0ZVZlcnRl
eElucHV0RGVzY3JpcHRvcigpLCBudWxsLCAidHJpYW5nbGUtbGlzdCIpOwotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3Qg
cGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNv
ZGVyKTsKLQotICAgIHBhc3NFbmNvZGVyLnNldEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLCBpbmRl
eEJ1ZmZlck9mZnNldCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVy
dGV4QnVmZmVyXSwgWzBdKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7
Ci0gICAgcGFzc0VuY29kZXIuZHJhd0luZGV4ZWQoNiwgMSwgMCwgaW5kZXhPZmZzZXQsIDApOwot
ICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgp
OwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVz
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVl
blNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2UzZmQwODg5NTdlZDNkNGViZDgxZDQxODY0YWZiMmJl
ZmNlMzA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMCArMCwwIEBACi0KLVBBU1MgQ2FwdHVyZSBhIHNpbmdsZSBHUFVWYWxpZGF0
aW9uIGVycm9yLgotUEFTUyBDYXB0dXJlIGEgc2luZ2xlIEdQVU91dE9mTWVtb3J5IGVycm9yLgot
UEFTUyBJZ25vcmUgZXJyb3JzIHBhc3QgdGhlIGZpcnN0LgotUEFTUyBDYXB0dXJlZCBlcnJvcnMg
bWF0Y2ggZXJyb3Igc2NvcGUgZmlsdGVyLgotUEFTUyBSZWplY3QgcG9wRXJyb3JTY29wZSBpZiBu
byBzY29wZSBleGlzdHMuCi1QQVNTIEZpbHRlciAnbm9uZScgc2hvdWxkIGNhcHR1cmUgYnV0IG5v
dCByZXBvcnQgZXJyb3JzLgotUEFTUyBQdXNoIGFuZCBwb3AgbWFueSBlcnJvciBzY29wZXMgd2l0
aCBubyByZWplY3Rpb25zLgotUEFTUyBDYXRjaCBtYW55IGVycm9ycyBpbiBuZXN0ZWQgc2NvcGVz
LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0M2ViMTM5NzI4NjBmMGU5MmRiMGUzOTIxZWViNzYwYzM1ZDQw
ZDM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTAwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRs
ZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotCi10
ZXN0c1siQ2FwdHVyZSBhIHNpbmdsZSBHUFVWYWxpZGF0aW9uIGVycm9yLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBj
YXVzZVZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJy
b3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xlIEdQVU91dE9mTWVtb3J5
IGVycm9yLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUo
Im91dC1vZi1tZW1vcnkiKTsKLSAgICBjYXVzZU1lbW9yeUVycm9yKGRldmljZSk7Ci0gICAgcmV0
dXJuIHBvcE1lbW9yeUVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siSWdub3JlIGVycm9ycyBw
YXN0IHRoZSBmaXJzdC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJv
clNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0
aW9uIik7Ci0gICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLSAgICBjYXVzZVZhbGlk
YXRpb25FcnJvcihkZXZpY2UpOwotICAgIAotICAgIGNvbnN0IGVycm9yID0gYXdhaXQgZGV2aWNl
LnBvcEVycm9yU2NvcGUoKTsKLSAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoZXJyb3IpOwotCi0g
ICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhcHR1cmVkIGVy
cm9ycyBtYXRjaCBlcnJvciBzY29wZSBmaWx0ZXIuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGRldmljZS5wdXNoRXJy
b3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmlj
ZSk7Ci0KLSAgICBjb25zdCBzaG91bGRCZU51bGwgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29w
ZSgpOwotICAgIGFzc2VydE51bGwoc2hvdWxkQmVOdWxsKTsKLQotICAgIHJldHVybiBwb3BWYWxp
ZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJSZWplY3QgcG9wRXJyb3JTY29wZSBp
ZiBubyBzY29wZSBleGlzdHMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IHByb21p
c2UgPSBkZXZpY2UucG9wRXJyb3JTY29wZSgpLnRoZW4oKCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgp
LCBhc3luYyBlID0+IHsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGUgPT09IHVuZGVmaW5lZCk7Ci0g
ICAgICAgIC8vIFBvcCB0aGUgZXh0cmEgJ25vbmUnIHNjb3BlLgotICAgICAgICBhd2FpdCBwb3BO
dWxsRXJyb3IoZGV2aWNlKTsKLSAgICB9KTsKLSAgICAvLyAncHJvbWlzZScgc2hvdWxkIHN0aWxs
IHJlamVjdCBpZiBhIHNjb3BlIGlzIHB1c2hlZCBoZXJlLgotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgibm9uZSIpOwotICAgIHJldHVybiBwcm9taXNlOwotfTsKLQotdGVzdHNbIkZpbHRlciAn
bm9uZScgc2hvdWxkIGNhcHR1cmUgYnV0IG5vdCByZXBvcnQgZXJyb3JzLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm91dC1vZi1tZW1vcnkiKTsKLSAg
ICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm5vbmUiKTsKLSAgICBjYXVzZU1lbW9yeUVycm9yKGRl
dmljZSk7Ci0KLSAgICBjb25zdCBzaG91bGRCZU51bGwgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JT
Y29wZSgpOwotICAgIGFzc2VydE51bGwoc2hvdWxkQmVOdWxsKTsKLQotICAgIHJldHVybiBwb3BO
dWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJQdXNoIGFuZCBwb3AgbWFueSBlcnJvciBz
Y29wZXMgd2l0aCBubyByZWplY3Rpb25zLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25z
dCBudW1JdGVyYXRpb25zID0gMTI4OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtSXRlcmF0
aW9uczsgKytpKQotICAgICAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm91dC1vZi1tZW1vcnki
KTsKLSAgICAKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnMgLSAxOyArK2kp
Ci0gICAgICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIHBvcE51
bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhdGNoIG1hbnkgZXJyb3JzIGluIG5lc3Rl
ZCBzY29wZXMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IG51bUl0ZXJhdGlvbnMg
PSAxMjg7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKLSAg
ICAgICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgIGNhdXNl
VmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgfQotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBudW1JdGVyYXRpb25zIC0gMTsgKytpKQotICAgICAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJy
b3IoZGV2aWNlKTsKLQotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07
Ci0KLXJ1blRlc3RzV2l0aERldmljZSh0ZXN0cyk7Ci0KLS8qIEhlbHBlciBGdW5jdGlvbnMgKi8K
LQotY29uc3QgY2F1c2VWYWxpZGF0aW9uRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURSB9KTsKLWNvbnN0IGNhdXNlTWVtb3J5RXJyb3IgPSBkZXZpY2UgPT4g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDk5OTk5OTk5OTk5LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuTk9ORSB9KTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NjZiMGU4YWZlMjU3NjBlOTExYjlmODg2YmNiM2M1NjUzYjMyZjEzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0KLVBBU1MgVmVyaWZ5IGV4cGFuZG8gcHJvcGVydGllcyBhcmUgcHJlc2Vy
dmVkIG9uIHRoZSBXZWJHUFUgY29udGV4dAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvZXhwYW5kby1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZXhwYW5kby1w
cm9wZXJ0aWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2OTM4NTExM2Fj
MGVlNWFiOTI5NjQ3NWExOWM5OWQ3MTMzNzk4MTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGll
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPkVuc3VyZSBleHBhbmRvIHByb3BlcnRpZXMgYXJl
IHByZXNlcnZlZCBvbiB0aGUgV2ViR1BVIGNvbnRleHQuPC90aXRsZT4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZh
cz4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBpbml0aWFsaXplKCkgewotICAgIGxldCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0gICAgbGV0IGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKLSAgICBjdHgubXlQcm9wZXJ0eSA9IDI7Ci19Ci0KLWZ1bmN0aW9u
IGNvbGxlY3RHYXJiYWdlKCkgewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAg
ICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBlbHNlIGlmICh3aW5kb3cuZ2Mp
Ci0gICAgICAgIGdjKCk7Ci0gICAgZWxzZSBpZiAod2luZG93LiR2bSkKLSAgICAgICAgd2luZG93
LiR2bS5nYygpOwotICAgIC8vICR2bSBpcyBleHBvc2VkIGluIFdlYktpdCdzIE1pbmlCcm93c2Vy
IHdpdGggdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0OgotICAgIC8vICAg
ZXhwb3J0IEpTQ191c2VEb2xsYXJWTT0xCi0gICAgLy8gICBleHBvcnQgX19YUENfSlNDX3VzZURv
bGxhclZNPTEKLX0KLQotLy8gRklYTUU6IEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoImdw
dSIpIG5vIGxvbmdlciBleGlzdHMgaW4gdGhlCi0vLyBXZWJHUFUgc3BlYy4gV2hlbiBXZWJLaXQg
aXMgdXBkYXRlZCB0byB0cmFjayB0aGUgY3VycmVudCBzcGVjLCB0aGlzCi0vLyB0ZXN0IGFuZCB0
aGUgYmluZGluZ3Mgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gaG9ub3IgdGhlIHNwZWMncwotLy8gZ3Vh
cmFudGVlcyBhYm91dCBwcmVzZXJ2aW5nIGV4cGFuZG8gcHJvcGVydGllcyBvbiB2YXJpb3VzCi0v
LyBpbnRlcmZhY2VzLgotbGV0IHRlc3QxID0gYXN5bmNfdGVzdCgnVmVyaWZ5IGV4cGFuZG8gcHJv
cGVydGllcyBhcmUgcHJlc2VydmVkIG9uIHRoZSBXZWJHUFUgY29udGV4dCcpOwotdGVzdDEuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICBpbml0aWFsaXplKCk7Ci0gICAgc2V0VGltZW91dCh0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbGxlY3RHYXJiYWdlKCk7Ci0gICAgICAg
IGxldCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0gICAgICAg
IGxldCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMoY3R4Lm15UHJvcGVydHksIDIpOwotICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgfSksIDIw
MCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY5NTUzY2I4YWE3
MDE1NDcwZWVhYzM0YTJjY2Q5NGMzMWJjODFhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1hc3luYyBmdW5jdGlvbiBnZXRC
YXNpY0RldmljZSgpIHsKLSAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5y
ZXF1ZXN0QWRhcHRlcih7IHBvd2VyUHJlZmVyZW5jZTogImxvdy1wb3dlciIgfSk7Ci0gICAgY29u
c3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgcmV0dXJuIGRl
dmljZTsKLX0KLQotZnVuY3Rpb24gZHJhd0dyZWVuTWlwQ2hhaW5PblJlZEJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
MmQiKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZ2IoMjU1LCAwLCAwKSI7Ci0gICAgY29u
dGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotCi0gICAg
bGV0IG1heFJlc29sdXRpb24gPSBNYXRoLm1heChjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OwotICAgIGxldCBtaXBMZXZlbENvdW50ID0gTWF0aC5jZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0
aW9uKSk7Ci0gICAgaWYgKG1pcExldmVsQ291bnQgPCAxKSBtaXBMZXZlbENvdW50ID0gMTsKLQot
ICAgIGxldCB3aWR0aCAgPSBjYW52YXMud2lkdGg7Ci0gICAgbGV0IGhlaWdodCA9IGNhbnZhcy5o
ZWlnaHQ7Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtaXBMZXZlbENvdW50OyArK2kpIHsKLSAg
ICAgICAgd2lkdGggID0gTWF0aC5tYXgoTWF0aC5mbG9vcih3aWR0aCAgLyAyKSwgMSk7Ci0gICAg
ICAgIGhlaWdodCA9IE1hdGgubWF4KE1hdGguZmxvb3IoaGVpZ2h0IC8gMiksIDEpOwotICAgICAg
ICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZ2IoMCwgMjU1LCAwKSI7Ci0gICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoMCwgaGVpZ2h0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0KLX0KLQotZnVuY3Rp
b24gZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQu
ZmlsbFN0eWxlID0gImJsdWUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDAp
OwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gIndoaXRlIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0
KDEwMCwgMTAwLCAyMDAsIDIwMCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdCbGFja1NxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJibHVlIjsKLSAg
ICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIDQwMCwgNDAwKTsKLSAgICBjb250ZXh0LmZpbGxTdHls
ZSA9ICJibGFjayI7Ci0gICAgY29udGV4dC5maWxsUmVjdCgxMDAsIDEwMCwgMjAwLCAyMDApOwot
fQotCi1mdW5jdGlvbiBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNv
bnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBjb250ZXh0LmZpbGxT
dHlsZSA9ICdyZ2IoMCwgMjU1LCAwKSc7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52
YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotfQotCi1mdW5jdGlvbiBkcmF3R3JlZW5BbmRCbHVl
Q2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoJzJkJyk7Ci0KLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2IoMCwg
MjU1LCAwKSc7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZh
cy5oZWlnaHQpOwotCi0gICAgY29uc3QgbnVtQ29sdW1ucyA9IDQ7Ci0gICAgY29uc3QgbnVtUm93
cyA9IDQ7Ci0gICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9
ICdyZ2IoMCwgMCwgMjU1KSc7Ci0gICAgZm9yIChsZXQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyAr
K3gpIHsKLSAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKLSAgICAg
ICAgICAgIGlmICgoeCArIHkpICUgMiA9PSAwKQotICAgICAgICAgICAgICAgIGNvbnRleHQucmVj
dCgKLSAgICAgICAgICAgICAgICAgICAgeCAqIGNhbnZhcy53aWR0aCAvIG51bUNvbHVtbnMsCi0g
ICAgICAgICAgICAgICAgICAgIHkgKiBjYW52YXMuaGVpZ2h0IC8gbnVtUm93cywKLSAgICAgICAg
ICAgICAgICAgICAgY2FudmFzLndpZHRoIC8gbnVtQ29sdW1ucywKLSAgICAgICAgICAgICAgICAg
ICAgY2FudmFzLmhlaWdodCAvIG51bVJvd3MKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBjb250ZXh0LmZpbGwoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQmFz
aWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoImdwdSIpOwotICAgIHJldHVybiBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFp
bih7IGRldmljZTogZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIiB9KTsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAg
ICAgICBkZXB0aFdyaXRlRW5hYmxlZDogdHJ1ZSwKLSAgICAgICAgZGVwdGhDb21wYXJlOiAibGVz
cyIKLSAgICB9OwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY0RlcHRoVGV4dHVyZShjYW52YXMs
IGRldmljZSkgewotICAgIGNvbnN0IGRlcHRoU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGNhbnZh
cy53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAotICAgICAgICBkZXB0aDog
MQotICAgIH07Ci0KLSAgICByZXR1cm4gZGV2aWNlLmNyZWF0ZVRleHR1cmUoewotICAgICAgICBz
aXplOiBkZXB0aFNpemUsCi0gICAgICAgIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIs
Ci0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQKLSAgICB9
KTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmlj
ZSwgY29sb3JTdGF0ZXMsIHBpcGVsaW5lTGF5b3V0LCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IsIGRl
cHRoU3RhdGVEZXNjcmlwdG9yLCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCIp
IHsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IgPSB7Ci0gICAgICAgIG1vZHVsZTog
c2hhZGVyTW9kdWxlLAotICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4X21haW4iIAotICAgIH07
Ci0KLSAgICBjb25zdCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKLSAgICAgICAgbW9kdWxl
OiBzaGFkZXJNb2R1bGUsCi0gICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFnbWVudF9tYWluIgotICAg
IH07Ci0KLSAgICBpZiAoIWNvbG9yU3RhdGVzKSB7Ci0gICAgICAgIGNvbG9yU3RhdGVzID0gW3sg
Ci0gICAgICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgICAgIGFscGhhQmxl
bmQ6IHt9LAotICAgICAgICAgICAgY29sb3JCbGVuZDoge30KLSAgICAgICAgfV07Ci0gICAgfQot
Ci0gICAgaWYgKCF2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpCi0gICAgICAgIHZlcnRleElucHV0RGVz
Y3JpcHRvciA9IHsgdmVydGV4QnVmZmVyczogW10gfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lRGVz
Y3JpcHRvciA9IHsKLSAgICAgICAgdmVydGV4U3RhZ2U6IHZlcnRleFN0YWdlRGVzY3JpcHRvciwK
LSAgICAgICAgZnJhZ21lbnRTdGFnZTogZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IsCi0gICAgICAg
IHByaW1pdGl2ZVRvcG9sb2d5OiBwcmltaXRpdmVUb3BvbG9neSwKLSAgICAgICAgY29sb3JTdGF0
ZXM6IGNvbG9yU3RhdGVzLAotICAgICAgICB2ZXJ0ZXhJbnB1dDogdmVydGV4SW5wdXREZXNjcmlw
dG9yCi0gICAgfTsKLQotICAgIGlmIChwaXBlbGluZUxheW91dCkKLSAgICAgICAgcGlwZWxpbmVE
ZXNjcmlwdG9yLmxheW91dCA9IHBpcGVsaW5lTGF5b3V0OwotCi0gICAgaWYgKGRlcHRoU3RhdGVE
ZXNjcmlwdG9yKQotICAgICAgICBwaXBlbGluZURlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUg
PSBkZXB0aFN0YXRlRGVzY3JpcHRvcjsKLQotICAgIHJldHVybiBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotZnVuY3Rpb24gYmVnaW5CYXNpY1Jl
bmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2RlcikgewotICAgIGNvbnN0IGJhc2ljQXR0
YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0
dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAg
ICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDEuMCwgZzog
MCwgYjogMCwgYTogMS4wIH0KLSAgICB9OwotCi0gICAgLy8gRklYTUU6IEZsZXNoIG91dCB0aGUg
cmVzdCBvZiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci4gCi0gICAgcmV0dXJuIGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHMgOiBbYmFzaWNBdHRhY2htZW50
XSB9KTsKLX0KLQotZnVuY3Rpb24gZW5jb2RlQmFzaWNDb21tYW5kcyhyZW5kZXJQYXNzRW5jb2Rl
ciwgcmVuZGVyUGlwZWxpbmUsIHZlcnRleEJ1ZmZlcikgewotICAgIGlmICh2ZXJ0ZXhCdWZmZXIp
Ci0gICAgICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCdWZmZXJXaXRo
RGF0YShkZXZpY2UsIGRlc2NyaXB0b3IsIGRhdGEsIG9mZnNldCA9IDApIHsKLSAgICBjb25zdCBt
YXBwZWRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKGRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IGRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KG1hcHBlZEJ1ZmZlclsxXSk7Ci0gICAg
ZGF0YUFycmF5LnNldChuZXcgVWludDhBcnJheShkYXRhKSwgb2Zmc2V0KTsKLSAgICBtYXBwZWRC
dWZmZXJbMF0udW5tYXAoKTsKLSAgICByZXR1cm4gbWFwcGVkQnVmZmVyWzBdOwotfQotCi1hc3lu
YyBmdW5jdGlvbiBtYXBXcml0ZURhdGFUb0J1ZmZlcihidWZmZXIsIGRhdGEsIG9mZnNldCA9IDAp
IHsKLSAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3Qgd3JpdGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTsKLSAg
ICB3cml0ZUFycmF5LnNldChuZXcgVWludDhBcnJheShkYXRhKSwgb2Zmc2V0KTsKLSAgICBidWZm
ZXIudW5tYXAoKTsKLX0KLQotLyoqKiBGdW5jdGlvbnMgYmVsb3cgdGhpcyBsaW5lIHJlcXVpcmUg
V1BUIHRlc3RoYXJuZXNzLmpzIGFuZCB0ZXN0aGFybmVzc3JlcG9ydC5qcy4gKioqLwotCi1mdW5j
dGlvbiBydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpIHsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZh
ciBkZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0RldmljZSgpOwotICAgICAgICB9IGNhdGNoIChlKSB7
IC8qIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkLiAqLyB9Ci0gICAgCi0gICAgICAgIGZvciAobGV0
IG5hbWUgaW4gdGVzdHMpIHsKLSAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJfIikp
Ci0gICAgICAgICAgICAgICAgZGV2aWNlUHJvbWlzZVRlc3QoZGV2aWNlLCB0ZXN0c1tuYW1lXSwg
bmFtZSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZGV2aWNlUHJvbWlzZVRl
c3QoZGV2aWNlLCBmdW5jLCBuYW1lKSB7Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsK
LSAgICAgICAgaWYgKGRldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOwotICAgICAgICByZXR1cm4gZnVuYyhkZXZpY2UpOwotICAgIH0sIG5h
bWUpOwotfTsKLQotLy8gQXNzZXJ0aW5nIGVycm9ycy4KLQotY29uc3QgcG9wVmFsaWRhdGlvbkVy
cm9yID0gZGV2aWNlID0+IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihlcnJvciA9PiBhc3Nl
cnRWYWxpZGF0aW9uRXJyb3IoZXJyb3IpKTsKLWNvbnN0IHBvcE1lbW9yeUVycm9yID0gZGV2aWNl
ID0+IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihlcnJvciA9PiBhc3NlcnRNZW1vcnlFcnJv
cihlcnJvcikpOwotY29uc3QgcG9wTnVsbEVycm9yID0gZGV2aWNlID0+IGRldmljZS5wb3BFcnJv
clNjb3BlKCkudGhlbihlcnJvciA9PiBhc3NlcnROdWxsKGVycm9yKSk7Ci1jb25zdCBhc3NlcnRO
dWxsID0gZXJyb3IgPT4gewotICAgIGxldCBhc3NlcnRpb25Nc2cgPSAiTm8gZXJyb3IgZXhwZWN0
ZWQhIjsKLSAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkKLSAgICAgICAgYXNzZXJ0aW9u
TXNnICs9ICIgR290OiAiICsgZXJyb3IubWVzc2FnZTsKLSAgICBhc3NlcnRfdHJ1ZShlcnJvciA9
PT0gbnVsbCwgYXNzZXJ0aW9uTXNnKTsKLX07Ci1jb25zdCBhc3NlcnRWYWxpZGF0aW9uRXJyb3Ig
PSBlcnJvciA9PiB7Ci0gICAgbGV0IGFzc2VydGlvbk1zZyA9ICJFeHBlY3RlZCB2YWxpZGF0aW9u
IGVycm9yOiAiOwotICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICBhc3Nl
cnRpb25Nc2cgKz0gZXJyb3IubWVzc2FnZTsKLSAgICBhc3NlcnRfdHJ1ZShlcnJvciBpbnN0YW5j
ZW9mIEdQVVZhbGlkYXRpb25FcnJvciwgYXNzZXJ0aW9uTXNnKTsKLX07Ci1jb25zdCBhc3NlcnRN
ZW1vcnlFcnJvciA9IGVycm9yID0+IGFzc2VydF90cnVlKGVycm9yIGluc3RhbmNlb2YgR1BVT3V0
T2ZNZW1vcnlFcnJvciwgIkV4cGVjdGVkIG91dC1vZi1tZW1vcnkgZXJyb3IhIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YmI2MjRkYzgwMzc1MDc0YzZhMDVhODgzZjVhZDBiM2M2
MzZkZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTEgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFz
eW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFw
V3JpdGVBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVm
ZmVyLm1hcFJlYWRBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTog
R1BVQnVmZmVyLm1hcFJlYWRBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLQotUEFTUyBtYXBS
ZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBvbiBhIEdQVUJ1ZmZlci4KLVBBU1MgR1BVQnVm
ZmVyLm1hcFJlYWRBc3luYyBvbiBhIGJ1ZmZlciBjcmVhdGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRl
QnVmZmVyTWFwcGVkLgotUEFTUyBSZWplY3QgYSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBub3QgY3Jl
YXRlZCB3aXRoIE1BUF9SRUFEIHVzYWdlLgotUEFTUyBSZWplY3QgYSBtYXAgcmVhZCBvbiBhIG1h
cHBlZCBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIHBlbmRpbmcgbWFwIHJlYWQgaWYgR1BVQnVm
ZmVyIGlzIHVubWFwcGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJl
YWQtYnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2M2EyNzhkMmEzODY4NmFlM2M2YTdm
NDQ2YzkxMDM4MjQ0ODcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTx0aXRsZT5UZXN0cyBmb3IgY3JlYXRlQnVmZmVyTWFwcGVkIGFuZCBtYXBSZWFkQXN5
bmMgb24gYSBHUFVCdWZmZXIuPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiBydW5UZXN0
cygpIHsKLSAgICAvLyBCYXNpYyBtYXBSZWFkQXN5bmMgZnVuY3Rpb25hbGl0eQotICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5
bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9
KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZlciwg
ImNyZWF0ZUJ1ZmZlciByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotCi0gICAgICAgICAgICBsZXQg
YXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgICAgICBh
c3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiZmlyc3QgbWFw
UmVhZEFzeW5jIHJlc29sdmVkIHN1Y2Nlc3NmdWxseSIpOwotCi0gICAgICAgICAgICBjb25zdCBy
ZWFkQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVhZEFycmF5WzBdLCAwLCAic3VjY2Vzc2Z1bGx5IGFjY2VzcyBhIHZhbHVl
IGZyb20gYSBtYXAgcmVhZCIpOwotCi0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAg
ICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsgLy8gVGhpcyB3
aWxsIGV2ZW50dWFsbHkgcmVqZWN0IGR1ZSB0byBidWZmZXIuZGVzdHJveSgpCi0KLSAgICAgICAg
ICAgIGJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAgICAgICAgICAgIGF3YWl0IHByb21pc2UudGhlbigo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQnVmZmVyIHdhcyBkZXN0
cm95ZWQhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICB9KTsKLSAgICB9LCAibWFwUmVhZEFzeW5jLCB1bm1hcCwgYW5kIGRlc3Ry
b3kgb24gYSBHUFVCdWZmZXIuIik7Ci0KLSAgICAvLyBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFw
cGVkCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2
aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1
ZmZlclJlc3VsdCA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiAxNiwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgICAgICAgICAgY29uc3QgYnVmZmVyID0g
YnVmZmVyUmVzdWx0WzBdOwotICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBidWZmZXJS
ZXN1bHRbMV07Ci0KLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQ
VUJ1ZmZlciwgImNyZWF0ZUJ1ZmZlck1hcHBlZCByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciwg
ImNyZWF0ZUJ1ZmZlck1hcHBlZCByZXR1cm5lZCBhbiBBcnJheUJ1ZmZlciIpOwotCi0gICAgICAg
ICAgICBsZXQgYXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAg
ICAgIGFycmF5LnNldChbMSwgMiwgMywgNF0pOwotCi0gICAgICAgICAgICAvLyBCdWZmZXIgc2hv
dWxkIGFscmVhZHkgYmUgIm1hcHBlZCIuCi0gICAgICAgICAgICBhd2FpdCBidWZmZXIubWFwUmVh
ZEFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgi
R1BVQnVmZmVyIGNyZWF0ZWQgdmlhIEdQVUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgbWFwcGVkIHVu
dGlsIGFmdGVyIGZpcnN0IHVubWFwISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotCi0g
ICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAgLy8gQnVmZmVyIHNob3Vs
ZCBub3QgYmUgcmUtbWFwcGFibGUgZm9yIHdyaXRlcy4KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgiQnVmZmVyIHdhcyBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSEiKTsKLSAgICAg
ICAgICAgIH0sICgpID0+IHt9KTsKLQotICAgICAgICAgICAgLy8gUmVhZCByZXN1bHRzIG9mIG9y
aWdpbmFsIHdyaXRlcy4KLSAgICAgICAgICAgIGxldCByZXN1bHRBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGNvbnN0IHJlc3VsdEFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShyZXN1bHRBcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICByZXN1bHRB
cnJheS5mb3JFYWNoKCh2LCBpKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2
LCBhcnJheVtpXSwgIlN1Y2Nlc3NmdWxseSBtYXAtcmVhZCB2YWx1ZSB3cml0dGVuIHRvIEdQVUJ1
ZmZlciBtYXBwZWQgb24gY3JlYXRpb24iKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICB9KTsKLSAgICB9LCAiR1BVQnVmZmVyLm1hcFJlYWRBc3luYyBvbiBhIGJ1ZmZlciBj
cmVhdGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkLiIpOwotCi0gICAgLyogQmFz
aWMgdmFsaWRhdGlvbiAqLwotICAgIC8vIEZJWE1FOiBUZXN0IGludmFsaWQgY29tYmluYXRpb25z
IG9mIEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGluZyBlcnJvciBoYW5kbGluZy4KLQot
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgp
LnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEUgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50
aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2Fz
IG5vdCBjcmVhdGVkIHdpdGggTUFQX1JFQUQhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7
Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEg
bWFwIHJlYWQgb24gYSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCB1c2FnZS4iKTsK
LQotICAgIC8qIEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kgYW5kIHByb21pc2Ugc2V0dGxpbmcgdGVz
dGluZyAqLwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJh
c2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNv
bnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgICAgICAgICBidWZmZXIubWFwUmVhZEFzeW5j
KCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0gICAgICAg
ICAgICB9LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgpOwotICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50
aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJNYXAgb3BlcmF0
aW9uIHdhcyBpbnZhbGlkISIpOyAvLyBidWZmZXIgd2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0ZSBk
dXJpbmcgcHJvbWlzZSBjcmVhdGlvbgotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCByZWFk
IG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4iKTsKLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6
ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgICAgICAgICAg
Y29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQhIik7IC8v
IGJ1ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNoIHJlamVjdHMgcGVuZGluZyBwcm9taXNlcwotICAg
ICAgICAgICAgfSwoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9
KTsKLSAgICB9LCAiUmVqZWN0IGEgcGVuZGluZyBtYXAgcmVhZCBpZiBHUFVCdWZmZXIgaXMgdW5t
YXBwZWQuIik7Ci19Ci0KLXJ1blRlc3RzKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWRkOTUxMDdmMmJlMTllYWQ4YTE1YWJhMTJkNTIxMjU3
MDcxOTkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotCi1QQVNTIE1hcCB3cml0ZSwgdW5t
YXAsIGFuZCBkZXN0cm95IGEgR1BVQnVmZmVyLgotUEFTUyBSZWplY3QgYSBtYXAgd3JpdGUgb24g
YSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBNQVBfV1JJVEUgdXNhZ2UuCi1QQVNTIFJlamVjdCBh
IG1hcCB3cml0ZSBvbiBhIG1hcHBlZCBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIHBlbmRpbmcg
bWFwIHdyaXRlIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
bWFwLXdyaXRlLWJ1ZmZlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlj
ZmQ5ZjUyYzc1YjY1OGFkZjI2YTU5NmIwMWRjMzY1MDQ0MzU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXdyaXRl
LWJ1ZmZlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0cyBmb3IgbWFwV3JpdGVBc3lu
YyBvbiBhIEdQVUJ1ZmZlci48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3Rz
KCkgewotICAgIC8vIEJhc2ljIG1hcFdyaXRlQXN5bmMgZnVuY3Rpb25hbGl0eQotICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5
bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fSk7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShidWZmZXIgaW5zdGFuY2VvZiBHUFVCdWZmZXIs
ICJjcmVhdGVCdWZmZXIgcmV0dXJuZWQgYSBHUFVCdWZmZXIiKTsKLQotICAgICAgICAgICAgbGV0
IGFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLQotICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciwgImZpcnN0
IG1hcFdyaXRlQXN5bmMgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5Iik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhcnJheVswXSwgMCwgIm1hcFdyaXRlQXN5bmMgemVyb2Vk
IG91dCBzdG9yYWdlIik7Ci0gICAgICAgICAgICBhcnJheS5zZXQoWzEsIDIsIDMsIDRdKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgICAgIGNv
bnN0IHByb21pc2UgPSBidWZmZXIubWFwV3JpdGVBc3luYygpOyAvLyBUaGlzIHdpbGwgZXZlbnR1
YWxseSByZWplY3QgZHVlIHRvIGJ1ZmZlci5kZXN0cm95KCkKLQotICAgICAgICAgICAgYnVmZmVy
LmRlc3Ryb3koKTsKLQotICAgICAgICAgICAgYXdhaXQgcHJvbWlzZS50aGVuKCgpID0+IHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRlc3Ryb3llZCEiKTsK
LSAgICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIH0pOwotICAgIH0sICJNYXAgd3JpdGUsIHVubWFwLCBhbmQgZGVzdHJveSBhIEdQVUJ1ZmZl
ci4iKTsKLQotICAgIC8qIEJhc2ljIHZhbGlkYXRpb24gKi8KLSAgICAvLyBGSVhNRTogVGVzdCBp
bnZhbGlkIGNvbWJpbmF0aW9ucyBvZiBHUFVCdWZmZXJVc2FnZSBhZnRlciBpbXBsZW1lbnRpbmcg
ZXJyb3IgaGFuZGxpbmcuCi0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1
cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAg
ICAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgiQnVmZmVyIHdhcyBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSEiKTsKLSAgICAg
ICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0p
OwotICAgIH0sICJSZWplY3QgYSBtYXAgd3JpdGUgb24gYSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0
aCBNQVBfV1JJVEUgdXNhZ2UuIik7Ci0KLSAgICAvKiBFeHRlbmRlZCB1bm1hcC9kZXN0cm95IGFu
ZCBwcm9taXNlIHNldHRsaW5nIHRlc3RpbmcgKi8KLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsg
c2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7Ci0KLSAgICAgICAg
ICAgIGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
YnVmZmVyLnVubWFwKCk7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgiTWFwIG9wZXJhdGlvbiB3YXMgaW52YWxpZCEiKTsgLy8gYnVmZmVyIHdh
cyBzdGlsbCBpbiBtYXBwZWQgc3RhdGUgZHVyaW5nIHByb21pc2UgY3JlYXRpb24KLSAgICAgICAg
ICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwot
ICAgIH0sICJSZWplY3QgYSBtYXAgd3JpdGUgb24gYSBtYXBwZWQgR1BVQnVmZmVyLiIpOwotCi0g
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCku
dGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURSB9KTsKLQotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAgYXdh
aXQgcHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJCdWZmZXIgd2FzIHVubWFwcGVkISIpOyAvLyBidWZmZXIgd2FzIHVubWFwcGVkLCB3aGljaCBy
ZWplY3RzIHBlbmRpbmcgcHJvbWlzZXMKLSAgICAgICAgICAgIH0sKCkgPT4ge30pOwotICAgICAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIHBlbmRpbmcg
bWFwIHdyaXRlIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVzdHMoKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVs
aW5lLWxheW91dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxh
eW91dHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjU2ZWI2
YWJmMGQ1YTE5MzAxMzdhNmIyMWFkNWJiNGFlYjAwNGFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlv
dXRzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIENy
ZWF0ZSBhIGJhc2ljIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuCi1QQVNTIENyZWF0ZSBh
IGJhc2ljIEdQVVBpcGVsaW5lTGF5b3V0IHd0aWggYSBHUFVEZXZpY2UuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZDJiNzk4ZWE2NGNiYTQzZWJiMDJjZjI5YjM4YzJmOGE4NzQyMzc2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9waXBl
bGluZS1sYXlvdXRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+Q3JlYXRlIEdQVUJpbmRHcm91
cExheW91dC48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGNyZWF0ZUJpbmRHcm91cExheW91dEJp
bmRpbmcoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgdmlz
aWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQgfCBHUFVTaGFkZXJTdGFnZS5WRVJURVgs
Ci0gICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9OwotfQotCi10ZXN0KCgpID0+
IHsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0geyBiaW5kaW5nczogW2Ny
ZWF0ZUJpbmRHcm91cExheW91dEJpbmRpbmcoKV0gfTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzWzBdLnZpc2liaWxpdHkgJiBHUFVTaGFk
ZXJTdGFnZS5GUkFHTUVOVCwgMCk7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvci5iaW5kaW5nc1swXS52aXNpYmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2UuVkVS
VEVYLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmlu
ZGluZ3NbMF0udHlwZSwgInN0b3JhZ2UtYnVmZmVyIik7Ci19LCAiQ3JlYXRlIGEgYmFzaWMgR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci4iKTsgCi0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0g
ICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAg
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7
IGJpbmRpbmdzOiBbY3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpXSB9KTsKLSAgICAgICAg
YXNzZXJ0X3RydWUoYmluZEdyb3VwTGF5b3V0IGluc3RhbmNlb2YgR1BVQmluZEdyb3VwTGF5b3V0
LCAiY3JlYXRlQmluZEdyb3VwTGF5b3V0IHJldHVybmVkIGEgR1BVQmluZEdyb3VwTGF5b3V0Iik7
Ci0KLSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLSAgICAgICAg
YXNzZXJ0X3RydWUocGlwZWxpbmVMYXlvdXQgaW5zdGFuY2VvZiBHUFVQaXBlbGluZUxheW91dCwg
ImNyZWF0ZVBpcGVsaW5lTGF5b3V0IHJldHVybmVkIGEgR1BVUGlwZWxpbmVMYXlvdXQiKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgYSBiYXNpYyBHUFVQaXBlbGlu
ZUxheW91dCB3dGloIGEgR1BVRGV2aWNlLiIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjRlYzIzNzZmNzZiNTZhZWMwYzVkNDQ1MDIwODRkN2UzOThkOGFl
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0KLVBBU1MgZ2V0UXVldWUoKSBvbiBHUFVEZXZpY2UuCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRjOTVhNmNjNzAyMGNhOWU2ZGYxZGNjM2FiY2U3NTNiYWU1OWIwYWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3F1ZXVl
LWNyZWF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+R2V0IHRoZSBHUFVEZXZpY2UgYW5k
IGFzayBmb3IgdGhlIEdQVVF1ZXVlPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLSd1c2Ugc3RyaWN0JzsKLQot
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewotICAgIGFzc2VydF9ub3RfZXF1YWxzKG5hdmlnYXRv
ci5ncHUsIHVuZGVmaW5lZCwgIm5hdmlnYXRvci5ncHUgZXhpc3RzIik7Ci0KLSAgICBjb25zdCBj
b250ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiZ3B1
Iik7Ci0gICAgYXNzZXJ0X3RydWUoY29udGV4dCBpbnN0YW5jZW9mIEdQVUNhbnZhc0NvbnRleHQs
ICJnZXRDb250ZXh0IHJldHVybmVkIGEgR1BVQ2FudmFzQ29udGV4dC4iKTsKLQotICAgIHJldHVy
biBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAg
IGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHF1
ZXVlIGluc3RhbmNlb2YgR1BVUXVldWUsICJnZXRRdWV1ZSByZXR1cm5lZCBhIEdQVVF1ZXVlLiIp
OwotCi0gICAgICAgIHF1ZXVlLmxhYmVsID0gIkV4YW1wbGUgbGFiZWwiOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKHF1ZXVlLmxhYmVsLCAiRXhhbXBsZSBsYWJlbCIsICJxdWV1ZS5sYWJlbCB3YXMg
c2V0LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgImdldFF1ZXVlKCkgb24g
R1BVRGV2aWNlLiIpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTM1NzljNGE5NDkzMWMxYWI4NTRlZjQxYjlhNGQ0N2Mw
ODlkNjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBHUFVSZW5kZXJQYXNzRW5jb2RlciBj
cmVhdGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5kZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
cmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDk0OGI2ZTQzMjU2M2YyODUwZTAxYzllODdjNDkzYTk4ZDcyMmQ2Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVu
ZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5HZXQgdGhlIEdQ
VURldmljZSBhbmQgYXNrIGZvciB0aGUgR1BVUXVldWU8L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlcnMgPSBgCi1zdHJ1Y3QgVmVydGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb247Ci0gICAgZmxvYXQ0IGF0dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmlidXRlKDApOwotfTsK
LQotdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4IHJlc3VsdDsKLSAg
ICByZXN1bHQucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAgcmVzdWx0LmF0dHJp
YnV0ZVBvc2l0aW9uID0gcmVzdWx0LnBvc2l0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKLSAgICAgICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2Fw
Q2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgICAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVycyB9KTsKLSAgICAgICAgY29uc3Qg
cGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlKTsKLQot
ICAgICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOwotICAgICAgICBhc3NlcnRfdHJ1ZShjb21tYW5kRW5jb2RlciBpbnN0YW5jZW9mIEdQVUNv
bW1hbmRFbmNvZGVyLCAiY3JlYXRlQ29tbWFuZEVuY29kZXIgcmV0dXJuZWQgYSBHUFVDb21tYW5k
RW5jb2RlciIpOwotCi0gICAgICAgIGNvbnN0IGVuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFz
cyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZW5jb2Rl
ciBpbnN0YW5jZW9mIEdQVVJlbmRlclBhc3NFbmNvZGVyLCAiYmVnaW5SZW5kZXJQYXNzKCkgcmV0
dXJuZWQgYSBHUFVSZW5kZXJQYXNzRW5jb2RlciIpOwotCi0gICAgICAgIGVuY29kZXIuc2V0UGlw
ZWxpbmUocGlwZWxpbmUpOwotICAgICAgICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICB9KTsKLX0sICJHUFVSZW5kZXJQYXNzRW5jb2RlciBjcmVhdGVkIGFuZCBz
dWNjZXNzZnVsbHkgZW5kZWQiKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZjY2ZjU4ZGM0ZGY2NmIwNzgzNDA2NTRkNzBi
OTIyZDNlNmZjNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIEdQVVJlbmRlclBpcGVsaW5l
IGNyZWF0aW9uIHN1Y2NlZWRzIHdpdGggbm8gZXJyb3JzLgotUEFTUyBJbnZhbGlkIEdQVVNoYWRl
ck1vZHVsZSBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWlsLgotUEFTUyBJbnZhbGlkIEdQVVNo
YWRlck1vZHVsZSBmb3IgZnJhZ21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEVtcHR5IGVu
dHJ5IHBvaW50IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEludmFsaWQgR1BV
VGV4dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciBzaG91bGQgZmFpbC4KLVBB
U1MgVG9vIG1hbnkgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3JzIHNob3VsZCBmYWlsLgotUEFTUyBU
b28gbWFueSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4KLVBBU1MgVG9v
IG1hbnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNTIER1
cGxpY2F0ZSBzaGFkZXJMb2NhdGlvbiBmb3IgdmVydGV4IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwu
Ci1QQVNTIEludmFsaWQgZW50cnkgcG9pbnQgc3RyaW5nIHNob3VsZCBmYWlsLgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGI5YmM3M2RjNmY0NzJiZmFhNDk4Y2RiNjQwZjUzOTgwZjI1NWJl
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTkwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0
aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHBvc2l0aW9uTG9j
YXRpb24gPSAwOwotY29uc3QgY29sb3JMb2NhdGlvbiA9IDE7Ci0KLWNvbnN0IGNvbG9yT2Zmc2V0
ID0gNCAqIDQ7Ci1jb25zdCB2ZXJ0ZXhTdHJpZGUgPSA4ICogNDsKLQotY29uc3Qgd2hsc2xTb3Vy
Y2UgPSBgCi1zdHJ1Y3QgRnJhZ21lbnREYXRhIHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoJHtjb2xvckxvY2F0aW9ufSk7
Ci19Ci0KLXZlcnRleCBGcmFnbWVudERhdGEgdmVydGV4TWFpbihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoJHtwb3NpdGlvbkxvY2F0aW9ufSksIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgk
e2NvbG9yTG9jYXRpb259KSkKLXsKLSAgICBGcmFnbWVudERhdGEgb3V0OwotCi0gICAgb3V0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0gICAgb3V0LmNvbG9yID0gY29sb3I7Ci0KLSAgICByZXR1cm4g
b3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRNYWluKGZsb2F0NCBjb2xvciA6IGF0
dHJpYnV0ZSgke2NvbG9yTG9jYXRpb259KSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBj
b2xvcjsKLX0KLWA7Ci0KLWxldCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBnb29kTW9k
dWxlOwotCi1sZXQgdGVzdHMgPSB7fTsKLQotdGVzdHNbIkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0
aW9uIHN1Y2NlZWRzIHdpdGggbm8gZXJyb3JzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBn
b29kTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHdobHNsU291cmNl
IH0pOwotICAgIAotICAgIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7Ci0gICAgICAg
IHZlcnRleFN0YWdlOiB7IG1vZHVsZTogZ29vZE1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleE1h
aW4iIH0sCi0gICAgICAgIGZyYWdtZW50U3RhZ2U6IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRNYWluIiB9LAotICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogInRy
aWFuZ2xlLWxpc3QiLAotICAgICAgICBjb2xvclN0YXRlczogW3sKLSAgICAgICAgICAgIGZvcm1h
dDogImJncmE4dW5vcm0iLAotICAgICAgICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgICAg
ICBjb2xvckJsZW5kOiB7fQotICAgICAgICB9XSwKLSAgICAgICAgdmVydGV4SW5wdXQ6IHsKLSAg
ICAgICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICAgICAgc3RyaWRlOiB2ZXJ0
ZXhTdHJpZGUsCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJMb2NhdGlvbjogcG9zaXRpb25Mb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAg
ICAgICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgIG9mZnNldDogY29sb3JPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogImZs
b2F0NCIKLSAgICAgICAgICAgICAgICB9XQotICAgICAgICAgICAgfV0KLSAgICAgICAgfQotICAg
IH07Ci0gICAgT2JqZWN0LmZyZWV6ZShnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siSW52YWxpZCBHUFVTaGFkZXJN
b2R1bGUgZm9yIHZlcnRleCBzdGFnZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7
Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkU2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7IGNvZGU6ICJGb28iIH0pOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4
U3RhZ2UgPSB7IG1vZHVsZTogYmFkU2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4TWFp
biIgfTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVz
Y3JpcHRvcik7Ci19OwotCi10ZXN0c1siSW52YWxpZCBHUFVTaGFkZXJNb2R1bGUgZm9yIGZyYWdt
ZW50IHN0YWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFk
RGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOwotICAgIGxldCBiYWRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHsgY29kZTogIkZvbyIgIH0pOwotICAgIGJhZERlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSA9IHsg
bW9kdWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhNYWluIiB9OwotCi0g
ICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsK
LX07Ci0KLXRlc3RzWyJFbXB0eSBlbnRyeSBwb2ludCBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBm
YWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVj
dC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogIkZvbyIgIH0p
OwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4U3RhZ2UgPSB7IG1vZHVsZTogYmFkU2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJy
b3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVRleHR1
cmVGb3JtYXQgaW4gR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3Igc2hvdWxkIGZhaWwuIl0gPSBhc3lu
YyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwg
Z29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgYmFkRGVzY3JpcHRvci5jb2xvclN0
YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0gICAg
ICAgIGFscGhhQmxlbmQ6IHt9LAotICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgIH1dOwotCi0g
ICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsK
LX07Ci0KLXRlc3RzWyJUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZh
aWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0
LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZENv
bG9yU3RhdGVzID0gbmV3IEFycmF5KDEwMCk7Ci0gICAgYmFkQ29sb3JTdGF0ZXMuZmlsbCh7Ci0g
ICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAg
ICAgICAgY29sb3JCbGVuZDoge30KLSAgICB9KTsKLSAgICBiYWREZXNjcmlwdG9yLmNvbG9yU3Rh
dGVzID0gYmFkQ29sb3JTdGF0ZXM7Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJv
cihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIlRvbyBtYW55IEdQVVZlcnRl
eEJ1ZmZlckRlc2NyaXB0b3JzIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRWZXJ0ZXhCdWZmZXJzID0gbmV3IEFycmF5KDEwMCk7
Ci0gICAgYmFkVmVydGV4QnVmZmVycy5maWxsKHsKLSAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhTdHJp
ZGUsCi0gICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9u
OiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAg
ICB9XQotICAgIH0pOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4SW5wdXQgPSB7IHZlcnRleEJ1
ZmZlcnM6IGJhZFZlcnRleEJ1ZmZlcnMgfTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFu
ZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0c1siVG9vIG1hbnkgR1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2Ug
PT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZEF0dHJpYnV0ZXMgPSBuZXcgQXJyYXko
MTAwKTsKLSAgICBiYWRBdHRyaWJ1dGVzLmZpbGwoewotICAgICAgICBzaGFkZXJMb2NhdGlvbjog
cG9zaXRpb25Mb2NhdGlvbiwKLSAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgIH0pOwotCi0g
ICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsKLSAgICAgICAgdmVydGV4QnVmZmVyczog
W3sKLSAgICAgICAgICAgIHN0cmlkZTogdmVydGV4U3RyaWRlLAotICAgICAgICAgICAgYXR0cmli
dXRlU2V0OiBiYWRBdHRyaWJ1dGVzCi0gICAgICAgIH1dCi0gICAgfTsKLQotICAgIHJldHVybiBj
cmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0
c1siRHVwbGljYXRlIHNoYWRlckxvY2F0aW9uIGZvciB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQg
ZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmpl
Y3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBiYWREZXNj
cmlwdG9yLnZlcnRleElucHV0ID0gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAg
ICAgICAgc3RyaWRlOiB2ZXJ0ZXhTdHJpZGUsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7
Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAg
ICAgIHNoYWRlckxvY2F0aW9uOiBjb2xvckxvY2F0aW9uLAotICAgICAgICAgICAgICAgIG9mZnNl
dDogY29sb3JPZmZzZXQsCi0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAg
ICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5l
QW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIGVu
dHJ5IHBvaW50IHN0cmluZyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAg
bGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLSAgICBiYWREZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UgPSB7IG1vZHVsZTog
Z29vZE1vZHVsZSwgZW50cnlQb2ludDogImJhciIgfTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBl
bGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi1ydW5UZXN0c1dpdGhE
ZXZpY2UodGVzdHMpOwotCi1jb25zdCBjcmVhdGVQaXBlbGluZUFuZEVycm9yID0gKGRldmljZSwg
ZGVzY3JpcHRvcikgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi08L3NjcmlwdD4KLTwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjZGI1MDc5MjY2ZThmODg0ZDE2M2ViNDlh
ZDc2NTYzYTg4MjE3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBDcmVhdGUgYmFzaWMgR1BVUmVuZGVy
UGlwZWxpbmUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGlu
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OTJiMzMxZTZkN2Q3Y2U4MmU3ODMwODNhYWQ0YmJi
ZWZjNTg3YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlckNvZGUg
PSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDog
U1ZfUG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNh
c2UgMDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQo
MC4wLCAxLjAsIDAuMCwgMS4wKTsKLX0KLWAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICBy
ZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hh
ZGVyQ29kZSB9KTsKLQotICAgICAgICBjb25zdCBsYXlvdXRCaW5kaW5nID0geyBiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5WRVJURVgsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciIgfTsKLSAgICAgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cExheW91dCh7IGJpbmRpbmdzOiBbbGF5b3V0QmluZGluZ10gfSk7Ci0gICAgICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICAgICAgY29uc3QgcGlwZWxpbmUg
PSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBwaXBlbGlu
ZUxheW91dCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHBpcGVsaW5lIGluc3RhbmNlb2YgR1BVUmVu
ZGVyUGlwZWxpbmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBHUFVSZW5kZXJQaXBlbGluZSIpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyBHUFVSZW5kZXJQ
aXBlbGluZSIpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvcmVzb3VyY2VzL2JsdWUtY2hlY2tlcmVkLnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9y
ZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYjJiYjZmYTNmMzg2MGMwMDc0YjA5OGZkZjBlOTIyMGZlMzU3YzM5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpsaXRlcmFsIDEzMTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlWNE1LTDlC
ZT81aFclenxmRH5Kang0UjMmZS1LPS1jbGwoWDJ4b3l1CnpXSEFFK3c9ZjdaR1ImR0kwVGc1fUAk
X3xOZjZVMSRFV21VcCYzLWxtMUl2MCg3c3JyX1RXX3kjPFloTUNWUmtoNwp6e3ItJjQxZiNhRC1H
VWgke05eX2ckKiQoclRsdSpfez84e3ZNZ31JUGg2Vi0mMXFLY2Q1VFlkeVZoUEwhOHVRP3UKejBe
M0l0P31Qa1ZCamNEViFTald1dlk1WCYlMk9VSGdWKFB9RSthQ0dBVzdzeSp5T1czP1E2XnxOKV51
P3U2QDljCnpOSkxDYiRjWUZxRk51a1BnQHU4VShaUFgxS21kZWokJTl3fHZ3X0F1aF5II25NNWVX
UT5wIXllaV9DcHNfa2tKZQp5UUxyMX0tWEA2JGIzUD1qc0xyRXQ2cmVeakJuc35SVm1mdDNUcl58
aEQ/ZWFxI15DQWQ9ZCNXenAkUCFHZXpBeEUKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvcmVzb3VyY2VzL2dyZWVuLTQwMC5wbmcgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVzb3VyY2Vz
L2dyZWVuLTQwMC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjN2Y4OGU3YzVh
YjU4OGE4NjgxYzExZDdkMTZjMzJlOWY2YzQzZDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxp
dGVyYWwgMTQ4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VjRNS0xqTGJsaFU0PXtmZmZRcUxr
aD5HKCY2N0l5S25gYnRNYFNTcgp6MUdneztHY3dHWUJMTmctNCk2KGFXJSRvdjVfZXopa2dNaEM7
dXVtZj1qfW01TWotRmRnMEtFPl5WdD52bmRxUncKWCs8eVpEcW92c04zWHFKYXREbm17ci1VV3w0
a2pRcwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWM2OGY4NjJhMjhmYzQyYzU4NmUyMWFk
NDgyN2ZjZDY1MjI4M2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBUZXN0IHNoYWRlciBjb2RlIHZhbGlk
YXRpb24gd2hlbiBjcmVhdGluZyBtb2R1bGVzLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9k
dWxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjYyZTExY2I2NjFmMmU0
ZDc3MjQxMDIwZTgyNWRjMmNmNjRmMGIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+VGVzdCBzaGFkZXIgdmFsaWRhdGlvbi48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJzID0gYAotc3RydWN0IFZlcnRleAotewotICAgIGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBhdHRyaWJ1dGVQb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXggdmVydGV4X21haW4oKQotewotICAgIFZlcnRleCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDEpOwotICAgIHJl
c3VsdC5hdHRyaWJ1dGVQb3NpdGlvbiA9IHJlc3VsdC5wb3NpdGlvbjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19
Ci1gCi0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgbGV0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJzIH0pOwotICAgICAgICBhc3NlcnRf
dHJ1ZShzaGFkZXJNb2R1bGUgaW5zdGFuY2VvZiBHUFVTaGFkZXJNb2R1bGUsICJTaGFkZXIgbW9k
dWxlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0p
OwotfSwgIlRlc3Qgc2hhZGVyIGNvZGUgdmFsaWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1vZHVsZXMu
Iik7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9z
aW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9z
aW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBp
cyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDRkNGJkMjE5NjUwZDM0MTI0OTc4N2VjNmE3
YTRhMzE0NTYwMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1l
PSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZh
cy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ic2ltcGxlLXRyaWFuZ2xlLXN0cmlwLWV4cGVj
dGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkg
Z3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Ci1jb25zdCBzaGFkZXJDb2RlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhfbWFpbih1aW50IHZp
ZCA6IFNWX1ZlcnRleElEKSA6IFNWX1Bvc2l0aW9uCi17Ci0gICAgZmxvYXQ0IHY7Ci0gICAgc3dp
dGNoICh2aWQpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHYgPSBmbG9hdDQoLTEsIDEsIDAsIDEp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHYgPSBmbG9hdDQoLTEsIC0x
LCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICB2ID0gZmxvYXQ0
KDEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICB2ID0g
ZmxvYXQ0KDEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB2
OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDogU1ZfVGFyZ2V0IDAKLXsK
LSAgICByZXR1cm4gZmxvYXQ0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Ci19Ci1gCi0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENo
YWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1NU0wg
c2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJh
c2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29k
ZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAg
ICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3Qg
cXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODQ1ODIwYjIxZGQwYTNmMjM4
M2I4ZmQ3MjFjMGI0ZGJlMzEwNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24tZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNv
dW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAx
IHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1Q
QVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2
ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVz
YWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAtMSBoZWlnaHQgMSBkZXB0
aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdi
YTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWln
aHQgLTEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDEgaGVpZ2h0IDEgZGVwdGggLTEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAtMSBzYW1wbGVD
b3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVh
dGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQg
MSBzYW1wbGVDb3VudCAtMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgLTEuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAwIGhlaWdodCAxIGRl
cHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhl
aWdodCAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJk
IGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAxIGhlaWdodCAxIGRlcHRoIDAgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAwIHNhbXBsZUNv
dW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAx
IHNhbXBsZUNvdW50IDAgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1Q
QVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9y
bSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMzAw
MCBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3Jt
YXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGgg
MTAwMDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1l
bnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEwMDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDMwMDAgbWlwTGV2ZWxD
b3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdl
IDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAzMDAwIGhlaWdodCAxIGRlcHRo
IDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdo
dCAzMDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNk
IGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAxIGhlaWdodCAxIGRlcHRoIDMwMDAgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEg
ZGltZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEg
dGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAyIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3Vu
dCAyIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAu
Ci1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAxIGRlcHRoIDEgbWlw
TGV2ZWxDb3VudCAyIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3Jt
IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRl
cHRoIDIgbWlwTGV2ZWxDb3VudCAyIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhl
aWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAzIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJk
IGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAyIGhlaWdodCAyIGRlcHRoIDIgbWlwTGV2ZWxDb3VudCAzIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNv
dW50IDQgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAx
IHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1Q
QVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2
ZWxDb3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVz
YWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRo
IDEgbWlwTGV2ZWxDb3VudCAyIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdo
dCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDNkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDMgZGltZW5z
aW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDMwMCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMiBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMiBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
MSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMiBtaXBMZXZlbENv
dW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IGRlcHRoMzJm
bG9hdC1zdGVuY2lsOCB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGgg
MSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lv
biAyZCBmb3JtYXQgZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDIgZGltZW5zaW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxvYXQtc3RlbmNpbDggdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gZ2FyYmFnZSBmb3JtYXQg
cmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBo
ZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgZ2FyYmFnZSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lk
dGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVu
c2lvbiAyZCBmb3JtYXQgcmdiYTh1aW50IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBiZ3JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBiZ3JhOHVub3JtLXNyZ2IgdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmExNmZsb2F0
IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRl
cHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDEwMDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAx
IGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9u
IDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDMxLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUg
b2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCA0
IGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSA4LgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3RleHR1cmUtY3JlYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWY2MDA1NTdhMWY5NDc4ZmYzMjQzYTA4NTcxOGJjZjgwNDcwN2M5Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVy
ZS1jcmVhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0cyBmb3IgY3JlYXRpbmcg
dGV4dHVyZSB2aWV3cy48L3RpdGxlPgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgbGV0IHRlc3RzID0g
WwotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6
IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAg
ICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBz
YW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiM2QiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotCi0gICAgICAgIC8vIFRlc3QgbmVnYXRpdmUgdmFsdWVz
Ci0gICAgICAgIHt3aWR0aDogLTEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6
IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDog
LTEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwK
LSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAtMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogLTEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246
ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAtMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IC0xLCBzdWNjZXNzOiBmYWxzZX0sCi0K
LSAgICAgICAgLy8gVGVzdCB6ZXJvIHZhbHVlcwotICAgICAgICB7d2lkdGg6IDAsIGhlaWdodDog
MSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246
ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwg
ZGVwdGg6IDAsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIy
ZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAg
ICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDAsIHNh
bXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVw
dGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAwLCBkaW1lbnNpb246ICIyZCIs
IGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotCi0gICAg
ICAgIC8vIFRlc3QgbWF4aW11bSBzaXplcwotICAgICAgICB7d2lkdGg6IDEwMDAwLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwK
LSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDMwMDAsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50
OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxMDAwMCwgaGVp
Z2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVu
c2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxz
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxMDAwMCwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMSwgZGVwdGg6IDMwMDAsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vzczog
ZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDMwMDAsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExl
dmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJn
YmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEs
IGhlaWdodDogMzAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAx
LCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vz
czogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDMwMDAsIG1p
cExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDog
InJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotCi0gICAgICAgIC8vIFRl
c3QgbWlwbWFwcGVkIHRleHR1cmVzCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAxLCBkZXB0
aDogMSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwg
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAg
IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lk
dGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDIsIG1pcExldmVsQ291bnQ6IDIsIHNhbXBsZUNvdW50
OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMywgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDog
MiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMywgc2FtcGxlQ291bnQ6IDEs
IGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtdWx0aXNhbXBsaW5nCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDQsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAy
LCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwg
ZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IHRydWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDIsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiA0LCBkaW1l
bnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFs
c2V9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAzLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdo
dDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAzMDAsIGRpbWVu
c2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxz
ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDIsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0KLSAgICAgICAgLy8gVGVzdCBkaW1lbnNpb24KLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAg
ICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2Ft
cGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdl
OiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDIsIGRlcHRo
OiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7
d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDIsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNv
dW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwg
c3VjY2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCBkZXB0aCB0ZXh0dXJlcwotICAgICAg
ICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBs
ZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2ls
OCIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nl
c3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExl
dmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAyLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogImRl
cHRoMzJmbG9hdC1zdGVuY2lsOCIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAg
ICAgLy8gVGVzdCBlbnVtcwotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEs
IG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICJnYXJiYWdlIiwg
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAg
IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiZ2FyYmFnZSIsIHVzYWdlOiAwLCBz
dWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwg
bWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0
OiAicmdiYTh1aW50IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6
IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAx
LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogImJncmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiYmdy
YTh1bm9ybS1zcmdiIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6
IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAx
LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmExNmZsb2F0IiwgdXNhZ2U6IDAsIHN1Y2Nl
c3M6IHRydWV9LAotCi0gICAgICAgIC8vIFRlc3QgdXNhZ2UKLSAgICAgICAge3dpZHRoOiAxLCBo
ZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDEwMDAsIHN1Y2Nlc3M6
IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZl
bENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2Fn
ZS5DT1BZX0RTVCB8IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlNU
T1JBR0UgfCBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQsIHN1Y2Nlc3M6IHRydWV9
LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6
IDEsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNUT1JBR0UsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICBd
OwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICAgICAgICAgIGxldCBjYXVnaHQgPSBmYWxzZTsKLSAgICAgICAgICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHtzaXpl
OiB7d2lkdGg6IHRlc3Qud2lkdGgsIGhlaWdodDogdGVzdC5oZWlnaHQsIGRlcHRoOiB0ZXN0LmRl
cHRofSwgbWlwTGV2ZWxDb3VudDogdGVzdC5taXBMZXZlbENvdW50LCBzYW1wbGVDb3VudDogdGVz
dC5zYW1wbGVDb3VudCwgZGltZW5zaW9uOiB0ZXN0LmRpbWVuc2lvbiwgZm9ybWF0OiB0ZXN0LmZv
cm1hdCwgdXNhZ2U6IHRlc3QudXNhZ2V9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0
ZXh0dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIkNhbm5vdCBjcmVhdGUgdGV4dHVyZS4iKTsK
LSAgICAgICAgICAgIH0gY2F0Y2ggewotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKCF0ZXN0
LnN1Y2Nlc3MsICJDcmVhdGluZyB0ZXh0dXJlIHNob3VsZCAiICsgKHRlc3Quc3VjY2VzcyA/ICJu
b3QgIiA6ICIiKSArICJmYWlsLiIpOwotICAgICAgICAgICAgICAgIGNhdWdodCA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpLnRo
ZW4oZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVzdC5zdWNjZXNzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkNvdWxkIG5vdCBjcmVhdGUgdGV4
dHVyZTogIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLm1lc3NhZ2Up
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9IGVycm9yLm1lc3NhZ2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IsIG51bGwsICJDb3VsZCBub3QgY3Jl
YXRlIHRleHR1cmU6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFj
YXVnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAiQ3JlYXRlZCB0ZXh0
dXJlOiAiOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyb3IubWVzc2FnZTsKLSAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoISEoY2F1Z2h0IHx8IGVycm9yKSwgIkNyZWF0ZWQg
dGV4dHVyZSB3aGVuIHNob3VsZG4ndCBoYXZlOiAiICsgbWVzc2FnZSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZmFsc2UsICJkZXZpY2UgbG9zdCIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0s
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgYENyZWF0aW5nIGEgdGV4dHVyZSBv
ZiB3aWR0aCAke3Rlc3Qud2lkdGh9IGhlaWdodCAke3Rlc3QuaGVpZ2h0fSBkZXB0aCAke3Rlc3Qu
ZGVwdGh9IG1pcExldmVsQ291bnQgJHt0ZXN0Lm1pcExldmVsQ291bnR9IHNhbXBsZUNvdW50ICR7
dGVzdC5zYW1wbGVDb3VudH0gZGltZW5zaW9uICR7dGVzdC5kaW1lbnNpb259IGZvcm1hdCAke3Rl
c3QuZm9ybWF0fSB1c2FnZSAke3Rlc3QudXNhZ2V9LmApOwotICAgIH0KLX0KLQotcnVuVGVzdHMo
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Rl
eHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90
ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZjOGZlMmI5Y2UzNjc0NWVmNmVkODUwYmIzMTVkMjM5NjA2MDA4MDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IGlzIGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuQW5kQmx1ZUNoZWNrZXJi
b2FyZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg4YTM1OTVmMjZmOWVhMDQzYjJiMGU3M2UxNTQ3MDFhODFjYjI0ZjYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Rl
eHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUg
SGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2Vi
R1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNo
IiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+
UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tl
cmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LQotY29uc3QgcG9zaXRpb25CdWZmZXJJbmRleCA9IDA7Ci1jb25zdCB0ZXhDb29yZHNCdWZmZXJJ
bmRleCA9IDE7Ci1jb25zdCBwb3NpdGlvbkF0dHJpYnV0ZU51bSA9IDA7Ci1jb25zdCB0ZXhDb29y
ZHNBdHRyaWJ1dGVOdW0gPSAxOwotY29uc3QgYmluZEdyb3VwSW5kZXggPSAwOwotY29uc3QgdGV4
dHVyZUJpbmRpbmdOdW0gPSAwOwotY29uc3Qgc2FtcGxlckJpbmRpbmdOdW0gPSAxOwotCi1jb25z
dCBzaGFkZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1dGUoMCk7Ci19
OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgke3Bvc2l0aW9uQXR0cmlidXRlTnVtfSksIGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1
dGUoJHt0ZXhDb29yZHNBdHRyaWJ1dGVOdW19KSkgewotICAgIFZlcnRleE91dCB2T3V0OwotICAg
IHZPdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB2T3V0LnRleENvb3JkcyA9IHRleENvb3Jk
czsKLSAgICByZXR1cm4gdk91dDsKLX0KLQotc3RydWN0IFRleHR1cmVTYW1wbGVyCi17Ci0gICAg
VGV4dHVyZTJEPGZsb2F0ND4gdCA6IHJlZ2lzdGVyKHQke3RleHR1cmVCaW5kaW5nTnVtfSwgc3Bh
Y2Uke2JpbmRHcm91cEluZGV4fSk7Ci0gICAgc2FtcGxlciBzIDogcmVnaXN0ZXIocyR7c2FtcGxl
ckJpbmRpbmdOdW19LCBzcGFjZSR7YmluZEdyb3VwSW5kZXh9KTsKLX07Ci0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudF9tYWluKGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1dGUoMCksIFRleHR1
cmVTYW1wbGVyIHRleHR1cmVTYW1wbGVyKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIFNh
bXBsZSh0ZXh0dXJlU2FtcGxlci50LCB0ZXh0dXJlU2FtcGxlci5zLCB0ZXhDb29yZHMpOwotfQot
YAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgdmFyIGJ1
ZmZlckRlc2NyaXB0b3JzID0gW107Ci0gICAgYnVmZmVyRGVzY3JpcHRvcnNbcG9zaXRpb25CdWZm
ZXJJbmRleF0gPSB7Ci0gICAgICAgIHN0cmlkZTogNCAqIDQsCi0gICAgICAgIGF0dHJpYnV0ZVNl
dDogW3sKLSAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICBzaGFkZXJM
b2NhdGlvbjogcG9zaXRpb25BdHRyaWJ1dGVOdW0KLSAgICAgICAgfV0KLSAgICB9OwotICAgIGJ1
ZmZlckRlc2NyaXB0b3JzW3RleENvb3Jkc0J1ZmZlckluZGV4XSA9IHsKLSAgICAgICAgc3RyaWRl
OiA0ICogMiwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgZm9ybWF0OiAi
ZmxvYXQyIiwKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiB0ZXhDb29yZHNBdHRyaWJ1dGVO
dW0KLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJuIHsgdmVydGV4QnVmZmVyczogYnVm
ZmVyRGVzY3JpcHRvcnMgfTsKLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0p
OwotCi0gICAgY29uc3QgcG9zaXRpb25BcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAg
ICAvLyBmbG9hdDQgeHl6dwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAw
LCAxLAotICAgICAgICAxLCAxLCAwLCAxLCAKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsK
LSAgICBjb25zdCBwb3NpdGlvbkJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwg
eyBzaXplOiBwb3NpdGlvbkFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5W
RVJURVggfSwgcG9zaXRpb25BcnJheS5idWZmZXIpOwotCi0gICAgY29uc3QgdGV4Q29vcmRzQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQyIHRleENvb3JkcwotICAg
ICAgICAwLCAwLAotICAgICAgICAwLCAxLAotICAgICAgICAxLCAwLAotICAgICAgICAxLCAxCi0g
ICAgXSk7Ci0gICAgY29uc3QgdGV4dHVyZUNvb3JkQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERh
dGEoZGV2aWNlLCB7IHNpemU6IHRleENvb3Jkc0FycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfSwgdGV4Q29vcmRzQXJyYXkuYnVmZmVyKTsKLQotICAgIGNvbnN0
IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwot
Ci0gICAgLy8gTG9hZCB0ZXh0dXJlIGltYWdlCi0gICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2Uo
KTsKLSAgICBjb25zdCBpbWFnZUxvYWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
IAotICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7IAotICAgICAgICBpbWFn
ZS5zcmMgPSAicmVzb3VyY2VzL2JsdWUtY2hlY2tlcmVkLnBuZyI7Ci0gICAgfSk7Ci0gICAgYXdh
aXQgUHJvbWlzZS5yZXNvbHZlKGltYWdlTG9hZFByb21pc2UpOwotCi0gICAgLy8gQ29udmVydCBp
bWFnZSB0byBkYXRhIGFuZCBmaWxsIEdQVUJ1ZmZlcgotICAgIGNvbnN0IGNhbnZhczJkID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzMmQud2lkdGggPSBpbWFn
ZS53aWR0aDsKLSAgICBjYW52YXMyZC5oZWlnaHQgPSBpbWFnZS5oZWlnaHQ7Ci0gICAgY29uc3Qg
Y29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICBjb250ZXh0MmQuZHJh
d0ltYWdlKGltYWdlLCAwLCAwKTsKLSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0
SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgY29uc3Qg
dGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IGltYWdlRGF0YS5kYXRh
Lmxlbmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDCi0gICAgfTsK
LSAgICBjb25zdCB0ZXh0dXJlQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB0
ZXh0dXJlQnVmZmVyRGVzY3JpcHRvciwgaW1hZ2VEYXRhLmRhdGEuYnVmZmVyKTsKLQotICAgIC8v
IENyZWF0ZSBHUFVUZXh0dXJlCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7Ci0gICAgICAgIHdp
ZHRoOiBpbWFnZS53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsCi0gICAgICAg
IGRlcHRoOiAxCi0gICAgfTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAg
ICAgICBzaXplOiB7IHdpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsIGRl
cHRoOiAxIH0sCi0gICAgICAgIGZvcm1hdDogInJnYmE4dW5vcm0iLAotICAgICAgICB1c2FnZTog
R1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQKLSAgICB9
OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3Jp
cHRvcik7Ci0KLSAgICAvLyBCaW5kIHRleHR1cmUgYW5kIGEgc2FtcGxlciB0byBwaXBlbGluZQot
ICAgIGNvbnN0IHRleHR1cmVMYXlvdXRCaW5kaW5nID0geyAKLSAgICAgICAgYmluZGluZzogdGV4
dHVyZUJpbmRpbmdOdW0sIAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFH
TUVOVCwgCi0gICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiIAotICAgIH07Ci0gICAgY29u
c3Qgc2FtcGxlckxheW91dEJpbmRpbmcgPSB7Ci0gICAgICAgIGJpbmRpbmc6IHNhbXBsZXJCaW5k
aW5nTnVtLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCwKLSAg
ICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGJpbmRpbmdzOiBbdGV4dHVyZUxheW91dEJpbmRpbmcs
IHNhbXBsZXJMYXlvdXRCaW5kaW5nXQotICAgIH07Ci0gICAgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3QgdGV4dHVy
ZUJpbmRpbmcgPSB7IAotICAgICAgICBiaW5kaW5nOiB0ZXh0dXJlQmluZGluZ051bSwgCi0gICAg
ICAgIHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgCi0gICAgfTsKLSAgICBj
b25zdCBzYW1wbGVyQmluZGluZyA9IHsKLSAgICAgICAgYmluZGluZzogc2FtcGxlckJpbmRpbmdO
dW0sCi0gICAgICAgIHJlc291cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7IG1pbkZpbHRlcjog
Im5lYXJlc3QiLCBtYWdGaWx0ZXI6ICJuZWFyZXN0IiB9KQotICAgIH07Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBEZXNjcmlwdG9yID0gewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwK
LSAgICAgICAgYmluZGluZ3M6IFt0ZXh0dXJlQmluZGluZywgc2FtcGxlckJpbmRpbmddCi0gICAg
fTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91
cERlc2NyaXB0b3IpOwotCi0gICAgLy8gUGlwZWxpbmUgYW5kIHJlbmRlcgotICAgIGNvbnN0IHBp
cGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwg
cGlwZWxpbmVMYXlvdXQsIHZlcnRleElucHV0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckNvcHlWaWV3ID0gewotICAgICAgICBidWZmZXI6IHRleHR1cmVCdWZmZXIsCi0gICAgICAg
IHJvd1BpdGNoOiBpbWFnZS53aWR0aCAqIDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAg
fTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7IHRleHR1cmU6IHRleHR1cmUgfTsKLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHlWaWV3LCB0ZXh0
dXJlQ29weVZpZXcsIHRleHR1cmVTaXplKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2lu
QmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgIHBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAo
YmluZEdyb3VwSW5kZXgsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVm
ZmVycyhwb3NpdGlvbkJ1ZmZlckluZGV4LCBbcG9zaXRpb25CdWZmZXIsIHRleHR1cmVDb29yZEJ1
ZmZlcl0sIFswLCAwXSk7Ci0gICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBw
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1
ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICBw
b3NpdGlvbkJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgdGV4dHVyZUNvb3JkQnVmZmVyLmRlc3Ryb3ko
KTsKLSAgICB0ZXh0dXJlLmRlc3Ryb3koKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTY5NDNkZGE0ZWE4NjdkMzE0ZmMyMjhmN2RmYmNmZjAyMDkwNGY4NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDcgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJvbSBzd2FwIGNoYWlu
LgotUEFTUyBDcmVhdGUgYmFzaWMgZGVwdGggdGV4dHVyZSBmcm9tIGRldmljZS4KLVBBU1MgQ3Jl
YXRlIGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLgotUEFTUyBDcmVhdGUgYmFzaWMgM0Qg
dGV4dHVyZSBmcm9tIGRldmljZS4KLVBBU1MgQ3JlYXRlIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJl
ICh3aGljaCBjYW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZpY2UuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjcxYTk0M2RkN2NhMDNhZTNlOTIzYTVlMzM1ZjRmODg4OTdhNTE3My4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+QmFzaWMgR1BV
VGV4dHVyZSBUZXN0cy48L3RpdGxlPgotPGJvZHk+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
Y2FudmFzIik7ICAgIAotbGV0IGNvbnRleHQ7Ci0KLWxldCB0ZXhTaXplID0gewotICAgIHdpZHRo
OiBjYW52YXMud2lkdGgsCi0gICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAotICAgIGRlcHRoOiAx
Ci19OwotCi1sZXQgdGV4RGVzY3JpcHRvciA9IHsKLSAgICBzaXplOiB0ZXhTaXplLAotICAgIGZv
cm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0gICAgdXNhZ2U6IEdQVVRleHR1cmVVc2Fn
ZS5PVVRQVVRfQVRUQUNITUVOVAotfTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1
cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBzd2Fw
Q2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0KLSAgICAgICAg
Y29uc3QgdGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgICAgICBh
c3NlcnRfdHJ1ZSh0ZXh0dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBh
Y3F1aXJlZCBuZXh0IHRleHR1cmUuIik7Ci0KLSAgICAgICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmVW
aWV3IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZpZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCB0ZXh0
dXJlIHZpZXcgZnJvbSBuZXh0IHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
fSk7Ci19LCAiQ3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hhaW4uIik7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICAgICAgY29uc3QgZGVwdGhUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRl
eHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlcHRoVGV4dHVyZSBp
bnN0YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBkZXB0aCB0ZXh0dXJl
LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyBkZXB0
aCB0ZXh0dXJlIGZyb20gZGV2aWNlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRl
eERlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPSA0OwotICAgICAgICB0ZXhEZXNjcmlwdG9yLmZvcm1h
dCA9ICJyZ2JhOHVub3JtIjsKLSAgICAgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRleHR1
cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDCi0KLSAgICAgICAgY29u
c3QgbXVsdGlzYW1wbGVkVGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0
b3IpOwotICAgICAgICBhc3NlcnRfdHJ1ZShtdWx0aXNhbXBsZWRUZXh0dXJlIGluc3RhbmNlb2Yg
R1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyA0eCBtdWx0
aXNhbXBsZWQgdGV4dHVyZS4iKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4g
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICB0ZXhEZXNj
cmlwdG9yLnNpemUuZGVwdGggPSAzOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnNhbXBsZUNvdW50
ID0gMTsKLSAgICAgICAgdGV4RGVzY3JpcHRvci5kaW1lbnNpb24gPSAiM2QiOwotCi0gICAgICAg
IGNvbnN0IHRleHR1cmUzZCA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlM2QgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3Vj
Y2Vzc2Z1bGx5IGNyZWF0ZWQgYmFzaWMgM0QgdGV4dHVyZS4iKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICB9KTsKLX0sICJDcmVhdGUgYmFzaWMgM0QgdGV4dHVyZSBmcm9tIGRldmljZS4iKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICB0ZXhEZXNjcmlwdG9yLmZvcm1hdCA9ICJyZ2Jh
OHVub3JtIjsKLSAgICAgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRleHR1cmVVc2FnZS5P
VVRQVVRfQVRUQUNITUVOVCB8IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEOwotCi0gICAgICAgIGNv
bnN0IHJlbmRlclRhcmdldCA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZShyZW5kZXJUYXJnZXQgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAi
U3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0LiIpOwotICAgICAg
ICBjb25zdCB0ZXh0dXJlVmlldyA9IHJlbmRlclRhcmdldC5jcmVhdGVEZWZhdWx0VmlldygpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlVmlldyBpbnN0YW5jZW9mIEdQVVRleHR1cmVWaWV3
LCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgdGV4dHVyZSB2aWV3IGZyb20gb2ZmLXNjcmVlbiByZW5k
ZXIgdGFyZ2V0LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBh
IHJlbmRlciB0YXJnZXQgdGV4dHVyZSAod2hpY2ggY2FuIGJlIHNhbXBsZWQpIGZyb20gZGV2aWNl
LiIpOwotCi0vLyBGSVhNRTogQWRkIHRlc3RzIGZvciAxRCB0ZXh0dXJlcywgdGV4dHVyZUFycmF5
cywgYW5kIEdQVVRleHR1cmVWaWV3cy4KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS91bmNhcHR1cmVkLWVycm9ycy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMDJhY2Q2OGNlY2QwY2Y0ZTdhMTRlMTA3NDhh
M2NlZWRhNWExOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3Jl
YXRlQnVmZmVyKCk6IEJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJ
VEUgdXNhZ2UhCi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVm
ZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLQotUEFT
UyBGaXJlIGFuIHVuY2FwdHVyZWQgR1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0ICdkZXZpY2UnLgot
UEFTUyBJbnRlcmNlcHQgYW4gdW5jYXB0dXJlZCBlcnJvciB3aXRoIEdQVURldmljZS5vbnVuY2Fw
dHVyZWRlcnJvciBFdmVudEhhbmRsZXIuCi1QQVNTIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50IGFz
eW5jIHRlc3QuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS91bmNhcHR1cmVkLWVy
cm9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMmVjNDIwZDBkZjllN2E2OTNhYzYxNzM5OWY1
OGE0OTgxMjcxNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw1MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08dGl0bGU+VGVzdCBFcnJvciBTY29wZXMuPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1sZXQgdGVzdHMgPSB7
fTsKLWxldCBldmVudFdhdGNoZXI7Ci0KLWNvbnN0IGNhdXNlVW5jYXB0dXJlZEVycm9yRXZlbnQg
PSBkZXZpY2UgPT4gewotICAgIGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7Ci19
OwotCi10ZXN0c1siRmlyZSBhbiB1bmNhcHR1cmVkIEdQVURldmljZSBlcnJvciBldmVudCBhdCAn
ZGV2aWNlJy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYXN5bmNUZXN0ID0gYXN5
bmNfdGVzdCgiR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgYXN5bmMgdGVzdC4iKTsKLSAgICBjb25z
dCBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKGFzeW5jVGVzdCwgZGV2aWNlLCAidW5j
YXB0dXJlZGVycm9yIik7Ci0gICAgY29uc3QgZXZlbnRGaXJlZCA9IGV2ZW50V2F0Y2hlci53YWl0
X2ZvcigidW5jYXB0dXJlZGVycm9yIikudGhlbihldmVudCA9PiB7Ci0gICAgICAgIGFzc2VydF90
cnVlKGV2ZW50LmVycm9yIGluc3RhbmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yLCAiU3VjY2Vzc2Z1
bGx5IGZpcmVkIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LiIpOwotICAgICAgICBhc3luY1Rlc3Qu
ZG9uZSgpOwotICAgIH0pOwotCi0gICAgY29uc3QgdGltZW91dCA9IG5ldyBQcm9taXNlKChfLCBy
ZWplY3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGltZWQgb3V0
IHdhaXRpbmcgZm9yIGVycm9yIGV2ZW50ISIpIH0sIDMwMDApOwotICAgIH0pOwotCi0gICAgY2F1
c2VVbmNhcHR1cmVkRXJyb3JFdmVudChkZXZpY2UpOwotCi0gICAgcmV0dXJuIFByb21pc2UucmFj
ZShbZXZlbnRGaXJlZCwgdGltZW91dF0pOwotfTsKLQotdGVzdHNbIkludGVyY2VwdCBhbiB1bmNh
cHR1cmVkIGVycm9yIHdpdGggR1BVRGV2aWNlLm9udW5jYXB0dXJlZGVycm9yIEV2ZW50SGFuZGxl
ci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgY2FwdHVyZWRFcnJvclByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgZGV2aWNlLm9udW5jYXB0dXJlZGVy
cm9yID0gZXZlbnQgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZXJyb3IgaW5z
dGFuY2VvZiBHUFVWYWxpZGF0aW9uRXJyb3IsICJTdWNjZXNzZnVsbHkgZmlyZWQgR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuIik7Ci0gICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgY2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVudChkZXZpY2UpOwotICAgIH0pOwotCi0g
ICAgY29uc3QgdGltZW91dCA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHsKLSAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGVycm9yIGV2
ZW50ISIpIH0sIDMwMDApOwotICAgIH0pOwotCi0gICAgcmV0dXJuIFByb21pc2UucmFjZShbY2Fw
dHVyZWRFcnJvclByb21pc2UsIHRpbWVvdXRdKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERldmljZSh0
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5n
bGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2
MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29t
cGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJj
YW52YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlw
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYmU4NzU3N2U2YjJlNGUzNWZj
MWNhMTcwYTIxNWZiZmY2OGY4Y2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3Rp
dGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRl
cnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZlcnRleC1idWZm
ZXItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52
YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVy
dGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0
IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFp
bihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGdyZWVuIDogYXR0cmlidXRl
KDEpKQotewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBwb3NpdGlv
bjsKLSAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIGdyZWVuLCAwLCAxKTsKLSAgICByZXR1cm4g
dk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDog
YXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAot
Ci1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQ0IHh5encsIGZsb2F0
IGcKLSAgICAgICAgLTEsIDEsIDAsIDEsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwgMSwKLSAg
ICAgICAgMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEsIDEKLSAgICBdKTsKLQot
ICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2aWNlLCAKLSAgICAg
ICAgeyAKLSAgICAgICAgICAgIHNpemU6IHZlcnRleEFycmF5LmJ5dGVMZW5ndGgsIAotICAgICAg
ICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURQotICAgICAgICB9LAotICAgICAgICB2ZXJ0ZXhBcnJheS5idWZmZXIKLSAgICApOwotfQot
Ci1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsK
LSAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgIHN0cmlkZTogNCAqIDUsCi0g
ICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxv
YXQ0IiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMAotICAgICAgICAgICAgfSwg
ewotICAgICAgICAgICAgICAgIG9mZnNldDogNCAqIDQsCi0gICAgICAgICAgICAgICAgZm9ybWF0
OiAiZmxvYXQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxCi0gICAgICAgICAg
ICB9XQotICAgICAgICB9XQotICAgIH0KLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2Up
OwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJD
b2RlIH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZp
Y2UpOwotICAgIGNvbnN0IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0
RGVzY3JpcHRvcigpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShz
aGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgdmVydGV4SW5wdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWlu
LCBjb21tYW5kRW5jb2Rlcik7Ci0gICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2Rlciwg
cGlwZWxpbmUsIHZlcnRleEJ1ZmZlcik7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVl
dWUoKTsKLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0gICAg
dmVydGV4QnVmZmVyLmRlc3Ryb3koKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0p
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Np
c3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOGZlMmI5Y2UzNjc0NWVmNmVkODUwYmIzMTVk
MjM5NjA2MDA4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmls
ZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBj
aGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2Fu
dmFzIik7Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nv
ci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQt
c2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBlNzk0MTQ2MDYxZmQ1NzQ1MzFhMTIwNjA4ODc5YjQ4OWEwZGJiOTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNz
ZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4K
LTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1z
dHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBh
IDQgYnkgNCBibHVlL2dyZWVuIGNoZWNrZXJib2FyZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXgg
ZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24K
LXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAg
ICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToK
LSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAu
MCwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhN
RTogUmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBj
b25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2Up
OwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7Ci0gICAgY29uc3QgYmx1ZUF0dGFjaG1lbnQgPSB7Ci0gICAgICAgIGF0dGFjaG1lbnQ6IHN3
YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRWaWV3KCksCi0gICAgICAg
IGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xl
YXJDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAxLCBhOiAxIH0KLSAgICB9OwotICAgIGNvbnN0IHBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2ht
ZW50czogW2JsdWVBdHRhY2htZW50XSB9KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShw
aXBlbGluZSk7Ci0KLSAgICBmdW5jdGlvbiBkcmF3Vmlld3BvcnQoeCwgeSkgewotICAgICAgICBw
YXNzRW5jb2Rlci5zZXRWaWV3cG9ydCh4LCB5LCAxMDAsIDEwMCwgMCwgMSk7Ci0gICAgICAgIHBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHJhd1Nj
aXNzb3JSZWN0KHgsIHkpIHsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0U2Npc3NvclJlY3QoeCwg
eSwgMTAwLCAxMDApOwotICAgICAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IH0KLQotICAgIHBhc3NFbmNvZGVyLnNldFNjaXNzb3JSZWN0KDAsIDAsIDIwMCwgNDAwKTsKLSAg
ICBkcmF3Vmlld3BvcnQoMTAwLCAwKTsKLSAgICBkcmF3Vmlld3BvcnQoMCwgMTAwKTsKLSAgICBk
cmF3Vmlld3BvcnQoMTAwLCAyMDApOwotICAgIGRyYXdWaWV3cG9ydCgwLCAzMDApOwotCi0gICAg
Ly8gRHJhdyBvdXRzaWRlIG9mIHNjaXNzb3IgcmVjdCBzaG91bGQgbm90IGFwcGVhci4KLSAgICBk
cmF3Vmlld3BvcnQoMjAwLCAxMDApOwotCi0gICAgcGFzc0VuY29kZXIuc2V0Vmlld3BvcnQoMjAw
LCAwLCAyMDAsIDQwMCwgMCwgMSk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0KDMwMCwgMCk7Ci0gICAg
ZHJhd1NjaXNzb3JSZWN0KDIwMCwgMTAwKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMzAwLCAyMDAp
OwotICAgIGRyYXdTY2lzc29yUmVjdCgyMDAsIDMwMCk7Ci0KLSAgICAvLyBEcmF3IG91dHNpZGUg
b2Ygdmlld3BvcnQgc2hvdWxkIG5vdCBhcHBlYXIuCi0gICAgZHJhd1NjaXNzb3JSZWN0KDAsIDAp
OwotCi0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNl
LmdldFF1ZXVlKCk7Ci0KLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
XSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICB0
ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dy
ZWVuQW5kQmx1ZUNoZWNrZXJib2FyZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3
aXp6bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Yt
c3dpenpsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZmY0
ZWViNjI5OThjZmNiNGZmNmVjOTg3YzlkM2ViOWZlNTQyMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJl
c3Mtb2Ytc3dpenpsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAK
LQotUEFTUyBjYW50VGFrZUFkZHJlc3NPZlN3aXp6bGUKLVBBU1MgY2FudEFzc2lnblJ2YWx1ZVN3
aXp6bGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Yt
c3dpenpsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenps
ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzJmMjc5ZTQ5OTIwY2FkZWNk
OWRjOWJlMzU1NTY3YzkzMzY1NjM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6bGUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+YmFkIHN3aXp6bGUuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMuY2FudFRha2VBZGRyZXNzT2ZTd2l6emxlID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgaW50
MiB2OwotICAgICAgICAgICAgdGhyZWFkIGludCogeCA9ICZ2Lng7Ci0gICAgICAgIH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAg
ICAgICAgaW50MiB2OwotICAgICAgICAgICAgdGhyZWFkIGludDIqIHggPSAmdi54eTsKLSAgICAg
ICAgfQotICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5jYW50QXNzaWduUnZhbHVlU3dpenpsZSA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQyIHgoKSB7
Ci0gICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQot
ICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgIHgoKS54eSA9IGludDIoMTAsIDIwKTsK
LSAgICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJh
cnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNj
YmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1h
dHRyaWJ1dGUtbG9jYXRpb25zLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRy
YXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UzYmUzNDIwNTNkNjFjMDE0NzIzODZlZWI1
YTNjNGNlMmVhMGRlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUt
bG9jYXRpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJT
b3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZl
cnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDE3MyksIGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDQ5OCkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotICAg
IHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihm
bG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZs
b2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJm
cmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xl
LXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ci
LCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBH
UFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQot
ICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDE3MywgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogNDk4LCBmb3Jt
YXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIw
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI0ZTA0OGMxYzA2
Y2Q1MDE3OGM3OTgzYjQxZjk2ZmZmNjYwYzNiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZh
bHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LQotUEFTUyBldmFsdWF0aW9uT3JkZXJGb3JBcmd1bWVudHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzhlODg4YmNlMGY4M2NhMTc4ZTM4YWNmOGFiMGNk
ZDM0NzI5NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+Q29weWluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5ldmFsdWF0aW9uT3JkZXJGb3JBcmd1bWVudHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsgcmV0dXJuICpiYXIoMTApICsgKmJhcigy
MCk7IH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoaW50IHZhbHVlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgeCA9IHZhbHVlOwotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAg
ICB9Ci0KLSAgICAgICAgaW50IGJheigpIHsgcmV0dXJuIHBsdXMoYmFyKDEwKSwgYmFyKDIwKSk7
IH0KLQotICAgICAgICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnggKyAqeTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
KSwgMzApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJiYXoiLCBbXSksIDQwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1s
ZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
YXJyYXktbGVuZ3RoLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZDMyZDJjM2RiODM0NDU0ZGVkZDk4ZjBjZTdiZTc2OTBjNGViMGEzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBub25BcnJheVJlZkFycmF5TGVuZ3RoRmFpbAot
UEFTUyBub25BcnJheVJlZkFycmF5TGVuZ3RoU3VjY2VlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktbGVuZ3RoLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMTM3M2ZjZWQyNjhlN2FjMTk1YmEyYWQ2ZGZkYzI3YjczYjk2
OTA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
bm9uQXJyYXlSZWZBcnJheUxlbmd0aEZhaWwgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdGhyZWFkIHVpbnQqIGxlbmd0aFB0cigp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gJihhcnJheS5sZW5ndGgpOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLX0KLQotd2hsc2xUZXN0cy5ub25BcnJheVJlZkFycmF5TGVuZ3RoU3VjY2VlZCA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBh
cnJheS5sZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBiYXIoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnRbNzU0XSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBhcnJheS5sZW5n
dGg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA3NTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCA3NTQpOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODEzMTdlZWNkMzU0ODRiMDVjOTY0YzJjYWUxODBhM2Q3MWNk
YzEyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGYxMzJhMDk3ZmFmMTdkOTZkMmJiNTgwODFlYWRhOGQ5YTk1M2Yy
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm9vYiBvbiBh
cnJheXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZmllbGRTaG91
bGRCZU51bGwgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
c3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIGludCB5OwotICAg
ICAgICAgICAgaW50IHo7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb28odWludCBpKSB7Ci0g
ICAgICAgICAgICBGb29bMTBdIGZvb3M7Ci0gICAgICAgICAgICB0aHJlYWQgRm9vKiBmb28gPSAm
Zm9vc1tpXTsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICYoZm9vLT56KTsKLSAgICAg
ICAgICAgICpwdHIgPSA0MjsKLSAgICAgICAgICAgIHJldHVybiBmb29zWzBdLnogPT0gNDI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIGJhcigpIHsKLSAgICAgICAgICAgIEZvb1sxMF0gZm9v
czsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGZvbyA9ICZmb29zWzQyNDI0Ml07Ci0gICAgICAg
ICAgICB0aHJlYWQgaW50KiBwdHIgPSAmKGZvby0+eik7Ci0gICAgICAgICAgICByZXR1cm4gZm9v
ID09ICZmb29zWzBdOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQzIHJldEZsb2F0MygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdDMoMTAuMCwgMC4wLCAwLjApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZmxvYXRbMTBdIHJldEZsb2F0QXJyYXkoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmbG9hdFsxMF0gdjsKLSAgICAgICAgICAgIHZbMF0gPSAxMC4wOwotICAgICAg
ICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGJheigpIHsKLSAgICAg
ICAgICAgIHJldHVybiByZXRGbG9hdDMoKVs0Ml0gPT0gMTAuMDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgamF6KCkgewotICAgICAgICAgICAgcmV0dXJuIHJldEZsb2F0QXJyYXkoKVs0Ml0g
PT0gMTAuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
OyArK2kpCi0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFttYWtlVWludChpKV0pLCBpID09PSAwID8gdHJ1ZSA6IGZhbHNlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
bWFrZVVpbnQoMTApXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgxMDAwMDAwKV0pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
bWFrZVVpbnQoMHhmZmZmZmZmZildKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiYmFyIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJiYXoiLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImph
eiIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMt
dGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMt
dGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjZhNTVm
YjYxNmIxNTM0OWVhYzQwOWRkNjQwN2RhM2EwOGQ3MzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1z
cGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1Q
QVNTIGFycmF5UmVmVG9BcnJheVJlZgotUEFTUyBhc3NpZ25MZW5ndGgKLVBBU1MgYXNzaWduTGVu
Z3RoSGVscGVyCi1QQVNTIGJ1aWxkQXJyYXlUaGVuU3VtSXQKLVBBU1MgYnVpbGRBcnJheVRoZW5T
dW1JdFVzaW5nQXJyYXlSZWZlcmVuY2UKLVBBU1MgcGFzc2luZ0FycmF5VG9GdW5jdGlvbgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxNTMxYmJjNTYxMmU3NGE4NmU5ZDYyYTJlODdhMmJh
NjFjZTNlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmFycmF5UmVmVG9BcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dCB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdIHAgPSBAeDsKLSAgICAgICAgICAgIHRocmVh
ZCBpbnRbXVtdIHBwID0gQHA7Ci0gICAgICAgICAgICBpbnRbXXRocmVhZFtddGhyZWFkIHFxID0g
cHA7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgICAgIHggPSA0MjsKLSAg
ICAgICAgICAgIHBbMF0gPSA3NjsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAg
ICAgcHBbMF1bMF0gPSAzOTsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAg
cXFbMF1bMF0gPSA4MzsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dy
YW0pOwotfQotCi13aGxzbFRlc3RzLmFzc2lnbkxlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAg
ICAgIChAYXJyYXkpLmxlbmd0aCA9IDQyOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi19Ci0KLXdobHNsVGVzdHMuYXNzaWduTGVuZ3RoSGVscGVyID0gYXN5bmMgKCkgPT4g
ewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBiYXIo
dGhyZWFkIGZsb2F0W10gYXJyYXkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXJy
YXkubGVuZ3RoID0gNDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKLSAgICAgICAg
ICAgICAgICBiYXIoQGFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdo
bHNsVGVzdHMuYnVpbGRBcnJheVRoZW5TdW1JdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs0
Ml0gYXJyYXk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAx
KQotICAgICAgICAgICAgICAgIGFycmF5W2ldID0gaW50KGkgKyA1KTsKLSAgICAgICAgICAgIGlu
dCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAx
KQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGFycmF5W2ldOwotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIgKiA1ICsgNDIgKiA0
MSAvIDIpOwotfQotCi13aGxzbFRlc3RzLmJ1aWxkQXJyYXlUaGVuU3VtSXRVc2luZ0FycmF5UmVm
ZXJlbmNlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
YmFyKHRocmVhZCBpbnRbXSBhcnJheSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1aW50
IGkgPSAwOyBpIDwgNDI7IGkgPSBpICsgMSkKLSAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGlu
dChpICsgNSk7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0OwotICAgICAgICAgICAgZm9yICh1aW50
IGkgPSAwOyBpIDwgNDI7IGkgPSBpICsgMSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQgKyBhcnJheVtpXTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs0Ml0gYXJyYXk7Ci0g
ICAgICAgICAgICByZXR1cm4gYmFyKEBhcnJheSk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQy
ICogNSArIDQyICogNDEgLyAyKTsKLX0KLQotd2hsc2xUZXN0cy5wYXNzaW5nQXJyYXlUb0Z1bmN0
aW9uID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
bygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0gYXJyOwotICAgICAgICAgICAgZm9y
ICh1aW50IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFycltp
XSA9IGludChpKSArIDE7Ci0gICAgICAgICAgICByZXR1cm4gc3VtKGFycik7Ci0gICAgICAgIH0K
LQotICAgICAgICBpbnQgc3VtKGludFsxMF0geHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dCB0ID0gMDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsr
KQotICAgICAgICAgICAgICAgIHQgPSB0ICsgeHNbaV07Ci0gICAgICAgICAgICByZXR1cm4gdDsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNTUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2JhZC1hZGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzE0OTQ4MmQ1OTli
N2M2NDhiNTlmMWIwYTlmNTg3YTI5Y2JjZjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGJhZEFkZAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDFkNzcyMzVhNDhlOTQyYzMyNTBlZmUyN2M0MDE2NTBlY2MxZDNlMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYmFkLWFkZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5CYWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLmJhZEFkZCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCwgdWludCB5
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQgeiA9IHggKyB5OwotICAgICAg
ICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0
ZXJhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFs
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MzQ4NmQ3OTQ4
OTU3YjdlMmMxZTA1Njk4NzQyNTczY2UxMTk4MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFs
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBiYWRJ
bnRMaXRlcmFsRm9ySW50Ci1QQVNTIGJhZEludExpdGVyYWxGb3JGbG9hdAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVjOGVkY2U4ZjU4ZWJjNmNiZGFiNDdjMjM0Y2RhMDNmNTRmNDg1OWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2JhZC1saXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJhZEludExpdGVyYWxGb3JJ
bnQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCggInZvaWQgZm9vKCkgeyBp
bnQgeCA9IDMwMDAwMDAwMDA7IH0iKTsKLX0KLQotd2hsc2xUZXN0cy5iYWRJbnRMaXRlcmFsRm9y
RmxvYXQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgidm9pZCBmb28oKSB7
IGZsb2F0IHggPSA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOyB9Iik7Ci19
Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyODVjNDYzNDY1ZjNhOWU0MmQwNGZmMzQ0
ODUxNzg4NWYzOTU0ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgYm9vbEJpdEFuZAotUEFT
UyBib29sQml0T3IKLVBBU1MgYm9vbEJpdFhvcgotUEFTUyBib29sQml0Tm90Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZDk3ZmYyNzlmN2RhMzU1MzVhMGI3NWIxOWY0MGMwZDI4YzliYTBk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRm
LTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRo
ZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwot
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYm9vbEJpdEFuZCA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwg
Ym9vbCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAmIGI7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29s
KGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJl
dHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJl
c3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRy
dWUpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZh
bHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIs
IFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAg
fQotfTsKLQotd2hsc2xUZXN0cy5ib29sQml0T3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
c291cmNlID0gYAotICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wgYikKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGEgfCBiOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIHsKLSAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwg
W21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQot
Ci0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3Vy
Y2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1
ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2Up
XSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBl
eHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1h
a2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVz
dCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJv
b2xCaXRYb3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gYAotICAgICAgICBi
b29sIGZvbyhib29sIGEsIGJvb2wgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
XiBiOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtl
Qm9vbCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0
IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0
IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29s
KGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJm
b28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7Ci0gICAgfQotfTsKLQotd2hsc2xUZXN0cy5ib29sQml0Tm90ID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHNvdXJjZSA9IGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBhKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gfmE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
ewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJm
b28iLCBbbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZh
bHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIs
IFttYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUs
ICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLX07Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2Jvb2wtbWF0cml4LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmE1ZWU2YTdmYWRlNjNkMjIwZWUwMTAxMGY1ZmFmZGQ2YmQ4Mzg4My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEg
KzAsMCBAQAotCi1QQVNTIGJvb2xNYXRyaXgKLVBBU1MgYm9vbE1hdHJpeDIKLVBBU1MgYm9vbE1h
dHJpeDMKLVBBU1MgYm9vbE1hdHJpeDQKLVBBU1MgYm9vbE1hdHJpeDUKLVBBU1MgYm9vbE1hdHJp
eEFueQotUEFTUyBib29sTWF0cml4QW55MgotUEFTUyBib29sTWF0cml4QWxsCi1QQVNTIGJvb2xN
YXRyaXhBbGwyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1h
dHJpeC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OTY1ZmNjZDlmZTVjNDUzMTljNWY4YmExMWE2
ZDA1MWY2YzhlNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5i
b29sIG1hdHJpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29s
TWF0cml4ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG07Ci0gICAgICAgICAgICBtWzBdID0gYm9v
bDIodHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgbVsxXSA9IGJvb2wyKHRydWUsIHRydWUpOwot
ICAgICAgICAgICAgcmV0dXJuIGludChtWzBdWzBdKSArIGludChtWzBdWzFdKSArIGludChtWzFd
WzBdKSArIGludChtWzFdWzFdKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgMyk7Ci19Owot
Ci13aGxzbFRlc3RzLmJvb2xNYXRyaXgyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9v
bDJ4Mih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1b
MF0gJiYgIW1bMF1bMV0gJiYgbVsxXVswXSAmJiAhbVsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4MyA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKLSAg
ICAgICAgICAgIHJldHVybiBtWzBdWzBdICYmICFtWzBdWzFdICYmIG1bMV1bMF0gJiYgIW1bMV1b
MV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMu
Ym9vbE1hdHJpeDQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngzIG0gPSBib29sMngzKHRydWUsIHRy
dWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1b
MF0gJiYgbVswXVsxXSAmJiBtWzBdWzJdICYmICFtWzFdWzBdICYmICFtWzFdWzFdICYmICFtWzFd
WzJdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
LmJvb2xNYXRyaXg1ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGJvb2wyKHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIG1bMV0gPSBib29sMih0cnVlLCBm
YWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiAhbVswXVsxXSAmJiBtWzFdWzBd
ICYmICFtWzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLmJvb2xNYXRyaXhBbnkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBib29s
MngyKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiAhYW55
KG0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
LmJvb2xNYXRyaXhBbnkyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4MihmYWxz
ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBhbnkobSk7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJp
eEFsbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29s
IGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICFhbGwobSk7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFsbDIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwot
ICAgICAgICAgICAgcmV0dXJuIGFsbChtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhMzFjOTJlZjQ4YmQ3MDNhMjI0ZDVhZmNjNjk0N2M3MzdiNzZiNGI4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2
ICswLDAgQEAKLQotUEFTUyBib29sZWFuTWF0aAotUEFTUyBpZGVudGl0eUJvb2wKLVBBU1MgbGl0
ZXJhbEJvb2wKLVBBU1Mgb3BlcmF0b3JCb29sCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9ib29scy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMzI0YWUzNjM0ZGFmYjRiM2U2YWU5
NTc2MWRiZTAwYzhiNDNkM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5C
b29scy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29sZWFuTWF0
aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWUgJiYgdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBib29sIGZvbzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZSAmJiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2UgJiYgdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBib29s
IGZvbzQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2UgJiYgZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHRydWUgfHwgdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzYoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSB8fCBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICBib29sIGZvbzcoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2UgfHwgdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzgoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2UgfHwgZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIi
LCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbzMiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzUiLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9v
NiIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJmb283IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzgiLCBbXSksIGZhbHNlKTsKLX0KLQotCi13aGxz
bFRlc3RzLmlkZW50aXR5Qm9vbCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJi
b29sIGZvbyhib29sIHgpIHsgcmV0dXJuIHg7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci19Ci0KLXdobHNsVGVzdHMubGl0ZXJhbEJv
b2wgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28oKSB7IHJldHVy
biB0cnVlOyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JCb29sID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBib29sRnJv
bVVpbnRGYWxzZSgpIHsgcmV0dXJuIGJvb2wodWludCgwKSk7IH0KLSAgICAgICAgYm9vbCBib29s
RnJvbVVpbnRUcnVlKCkgeyByZXR1cm4gYm9vbCh1aW50KDEpKTsgfQotCi0gICAgICAgIGJvb2wg
Ym9vbEZyb21JbnRGYWxzZSgpIHsgcmV0dXJuIGJvb2woaW50KDApKTsgfQotICAgICAgICBib29s
IGJvb2xGcm9tSW50VHJ1ZSgpIHsgcmV0dXJuIGJvb2woaW50KDEpKTsgfQotCi0gICAgICAgIGJv
b2wgYm9vbEZyb21GbG9hdEZhbHNlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgwKSk7IH0KLSAgICAg
ICAgYm9vbCBib29sRnJvbUZsb2F0VHJ1ZSgpIHsgcmV0dXJuIGJvb2woZmxvYXQoMSkpOyB9Ci0g
ICAgICAgIGJvb2wgYm9vbEZyb21GbG9hdE5hTihmbG9hdCBhcmcpIHsgcmV0dXJuIGJvb2woYXJn
KTsgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImJvb2xGcm9tVWludEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbVVpbnRUcnVlIiwg
W10pLCB0cnVlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiYm9vbEZyb21JbnRGYWxzZSIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiYm9vbEZyb21JbnRUcnVlIiwgW10p
LCB0cnVlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAiYm9vbEZyb21GbG9hdEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUZsb2F0VHJ1ZSIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJib29sRnJvbUZsb2F0TmFOIiwgW21ha2VGbG9hdChwcm9ncmFtLCBOYU4pXSksIHRydWUp
OwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZv
bygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzIHg7Ci0gICAgICAgICAg
ICAgICAgYm9vbCByID0gYm9vbCh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lk
IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzeDMgeDsKLSAgICAg
ICAgICAgICAgICBib29sIHIgPSBib29sKHgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1
NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVu
dC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNTEzMmEwYzkwNjlkMGYyOGI2MGY3MDdkYjYz
ZDU5MDgxZmZkZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDog
YXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbiwgY29uc3RhbnQgZmxvYXRbXSB0aGVCdWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfVGFy
Z2V0IDAgewotICAgIHJldHVybiBmbG9hdDQodGhlQnVmZmVyWzBdLCB0aGVCdWZmZXJbMF0sIHRo
ZUJ1ZmZlclswXSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0
YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIi
fTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAg
Y29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJu
b25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFs
cGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5B
TEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3Qg
YXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAg
Y29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQifTsK
LSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRl
MF19OwotICAgIGNvbnN0IGlucHV0MSA9IHtzdHJpZGU6IDQsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIxRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4
QnVmZmVyMS5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMUFycmF5QnVmZmVyKTsKLSAgICB2
ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQz
MkFycmF5WzFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzJdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9S
TSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9
OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1
ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBi
aW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0
IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjog
MCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0
YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDog
ImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3Mo
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwg
YmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXIwLCB2ZXJ0ZXhCdWZmZXIxXSwgWzAsIDBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5n
dGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3Ro
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkNjMxZDhlOTFlMzI5M2E2ZjUzZDVkOThiYTc2ZWEyNzMzNGE1Mjc5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lk
IGNvbXB1dGVTaGFkZXIoZGV2aWNlIHVpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0
MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBidWZmZXJbMF0gPSBidWZm
ZXIubGVuZ3RoOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBz
aXplID0gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxMzM3OwotCi0gICAgY29uc3Qg
YnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
IHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZm
ZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlclVpbnQz
MkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJV
aW50MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9Owot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1
bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCAxICogVWludDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRV
aW50MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlm
IChyZXN1bHRVaW50MzJBcnJheVswXSA9PSAxMzM3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5t
YXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXgtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYnVmZmVyLXZlcnRleC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1
ZmZlci12ZXJ0ZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUxN2Q2ZTAx
NGUyODM1YWM1MDliNGZkNzI3OTFiNzA0NWY4ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZl
cnRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNl
ID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoY29uc3RhbnQgZmxvYXQ0W10gYnVmZmVy
IDogcmVnaXN0ZXIoYjApLCB1aW50IGlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24gewot
ICAgIHJldHVybiBidWZmZXJbaWRdOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBbXX07Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3Qgc2l6ZSA9IDQgKiA0ICogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UOwotCi0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3Vy
Y2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZm
ZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbNl0g
PSAxLjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5WzldID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAx
LjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICByZXNvdXJj
ZUJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMy
QXJyYXlbMTNdID0gMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEu
MDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHJlc291cmNl
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
b3VyY2VCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMTk3ODA3OTJjMzM3
YTg1MTdhMDMyYzRkMzM0YWU2YzAzNWRmOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9y
cy0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJ1
aWx0aW5WZWN0b3JHZXR0ZXJzCi1QQVNTIGJ1aWx0aW5WZWN0b3JTZXR0ZXJzCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkMGMwZjJhZGY0MjcyOTFjNDFjMWFkYmZlYmI2MThiMTRiMDcw
NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw4MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qg
bG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLWNvbnN0IGNoZWNrRnVuY3MgPSB7
Ci0gICAgInVpbnQiOiBjYWxsVWludEZ1bmN0aW9uLAotICAgICJpbnQiOiBjYWxsSW50RnVuY3Rp
b24sCi0gICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rpb24KLX07Ci1jb25zdCB0eXBlTmFtZXMg
PSBbICJ1aW50IiwgImludCIsICJmbG9hdCIgXTsKLWNvbnN0IHNpemVzID0gWyAyLCAzLCA0IF07
Ci1jb25zdCBlbGVtZW50cyA9IFsgIngiLCAieSIsICJ6IiwgInciIF07Ci1jb25zdCBpbml0aWFs
aXplckxpc3QgPSBbIDEsIDIsIDMsIDQgXTsKLQotd2hsc2xUZXN0cy5idWlsdGluVmVjdG9yR2V0
dGVycyA9IGFzeW5jICgpID0+Ci17Ci0KLSAgICBsZXQgdGVzdHMgPSBbXTsKLSAgICBsZXQgc3Jj
ID0gIiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2YgdHlwZU5hbWVzKSB7Ci0gICAgICAgIGZv
ciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlw
ZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7
dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVO
YW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LiR7ZWxlbWVudHNbaV19Owot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYDsKLSAg
ICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHsgdHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1bmN0aW9u
TmFtZSwgZXhwZWN0YXRpb246IGluaXRpYWxpemVyTGlzdFtpXSB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0
IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0
ZXN0LnR5cGVdOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFt
LCB0ZXN0Lm5hbWUsIFtdKSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfTsKLQotd2hsc2xU
ZXN0cy5idWlsdGluVmVjdG9yU2V0dGVycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHRlc3Rz
ID0gW107Ci0gICAgbGV0IHNyYyA9ICIiOwotICAgIGZvciAobGV0IHR5cGVOYW1lIG9mIHR5cGVO
YW1lcykgewotICAgICAgICBmb3IgKGxldCBzaXplIG9mIHNpemVzKSB7Ci0gICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGNvbnN0IGZ1
bmN0aW9uTmFtZSA9IGAke3R5cGVOYW1lfSR7c2l6ZX0ke2VsZW1lbnRzW2ldfWA7Ci0gICAgICAg
ICAgICAgICAgc3JjICs9IGAke3R5cGVOYW1lfSAke2Z1bmN0aW9uTmFtZX0oKQotICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dHlwZU5hbWV9
JHtzaXplfSB4ID0gJHt0eXBlTmFtZX0ke3NpemV9KCR7aW5pdGlhbGl6ZXJMaXN0LnNsaWNlKDAs
IHNpemUpLmpvaW4oIiwgIil9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LiR7ZWxl
bWVudHNbaV19ID0gMzQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguJHtl
bGVtZW50c1tpXX07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBgOwotICAgICAgICAgICAgICAgIHRlc3RzLnB1c2goeyB0eXBlOiB0eXBlTmFtZSwg
bmFtZTogZnVuY3Rpb25OYW1lLCBleHBlY3RhdGlvbjogMzQgfSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBsZXQgcHJvZ3JhbSA9IHNyYzsKLSAgICBmb3IgKGxldCB0
ZXN0IG9mIHRlc3RzKSB7Ci0gICAgICAgIGNvbnN0IGNoZWNrRnVuYyA9IGNoZWNrRnVuY3NbdGVz
dC50eXBlXTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjaGVja0Z1bmMocHJvZ3JhbSwg
dGVzdC5uYW1lLCBbXSksIHRlc3QuZXhwZWN0YXRpb24pOwotICAgIH0KLX0KLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDEyNDkxZjljNWE5ZDQxZGZhZmYwMzYwYTFhZjAwNWM0ZDlmZjgy
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJ1aWx0aW5WZWN0b3JJbmRleFNldHRlcnMKLVBB
U1MgYnVpbHRpblZlY3RvcnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2J1aWx0aW4tdmVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4t
dmVjdG9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTVjNjE5OWE3MDZh
OGJhZjhkNjRjZjFlZWU4OWY0ZTZiMjY1MjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3Rv
cnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRl
bnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLWNvbnN0IGNoZWNrRnVuY3MgPSB7Ci0gICAgInVpbnQiOiBjYWxsVWludEZ1bmN0aW9uLAot
ICAgICJpbnQiOiBjYWxsSW50RnVuY3Rpb24sCi0gICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rp
b24KLX07Ci1jb25zdCB0eXBlTmFtZXMgPSBbICJ1aW50IiwgImludCIsICJmbG9hdCIgXTsKLWNv
bnN0IHNpemVzID0gWyAyLCAzLCA0IF07Ci1jb25zdCBlbGVtZW50cyA9IFsgIngiLCAieSIsICJ6
IiwgInciIF07Ci1jb25zdCBpbml0aWFsaXplckxpc3QgPSBbIDEsIDIsIDMsIDQgXTsKLQotd2hs
c2xUZXN0cy5idWlsdGluVmVjdG9ySW5kZXhTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgdGVzdHMgPSBbXTsKLSAgICBsZXQgc3JjID0gIiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUg
b2YgdHlwZU5hbWVzKSB7Ci0gICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsK
LSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0
eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Qu
c2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhbJHtpfV0gPSAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geFske2l9
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGA7
Ci0gICAgICAgICAgICAgICAgdGVzdHMucHVzaCh7IHR5cGU6IHR5cGVOYW1lLCBuYW1lOiBmdW5j
dGlvbk5hbWUsIGV4cGVjdGF0aW9uOiAzNCB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVz
dHMpIHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0ZXN0LnR5cGVdOwot
ICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFtLCB0ZXN0Lm5hbWUs
IFtdKSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfTsKLQotd2hsc2xUZXN0cy5idWlsdGlu
VmVjdG9ycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOwotICAg
ICAgICAgICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOwotICAgICAgICAgICAgaW50
MyBiID0gaW50MyhhLCA1KTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0g
ICAgICAgIGludCBmb28zKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50MyBhID0gaW50Mygz
LCA0LCA1KTsKLSAgICAgICAgICAgIGludDQgYiA9IGludDQoNiwgYSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vNCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICBpbnQyIGIgPSBpbnQy
KDUsIDYpOwotICAgICAgICAgICAgaW50NCBjID0gaW50NChhLCBiKTsKLSAgICAgICAgICAgIHJl
dHVybiBjWzJdOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGludDQgYSA9IGludDQoMywgNCwgNSwgNik7Ci0gICAgICAgICAgICBpbnQyIGIg
PSBpbnQyKDQsIDUpOwotICAgICAgICAgICAgaW50NCBjID0gaW50NCgzLCBiLCA2KTsKLSAgICAg
ICAgICAgIHJldHVybiBhbGwoYSA9PSBjKTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzYo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDQsIDUpOwotICAgICAgICAg
ICAgaW50MyBiID0gaW50MygzLCBhKTsKLSAgICAgICAgICAgIGludDMgYyA9IGludDMoMywgNCwg
Nik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICAgICAg
dWludCBmb291KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQp
OwotICAgICAgICAgICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBmb291
MigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQyIGEgPSB1aW50MigzLCA0KTsKLSAgICAg
ICAgICAgIHVpbnQzIGIgPSB1aW50MyhhLCA1KTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwot
ICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vdTMoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1
aW50MyBhID0gdWludDMoMywgNCwgNSk7Ci0gICAgICAgICAgICB1aW50NCBiID0gdWludDQoNiwg
YSk7Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZv
b3U0KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwotICAg
ICAgICAgICAgdWludDIgYiA9IHVpbnQyKDUsIDYpOwotICAgICAgICAgICAgdWludDQgYyA9IHVp
bnQ0KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAg
Ym9vbCBmb291NSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQ0IGEgPSB1aW50NCgzLCA0
LCA1LCA2KTsKLSAgICAgICAgICAgIHVpbnQyIGIgPSB1aW50Mig0LCA1KTsKLSAgICAgICAgICAg
IHVpbnQ0IGMgPSB1aW50NCgzLCBiLCA2KTsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBj
KTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvb3U2KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdWludDIgYSA9IHVpbnQyKDQsIDUpOwotICAgICAgICAgICAgdWludDMgYiA9IHVpbnQzKDMs
IGEpOwotICAgICAgICAgICAgdWludDMgYyA9IHVpbnQzKDMsIDQsIDYpOwotICAgICAgICAgICAg
cmV0dXJuIGFsbChiID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvb2YoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAg
ICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZjIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAgICAg
ZmxvYXQzIGIgPSBmbG9hdDMoYSwgNS4pOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAg
ICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZjMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDMgYSA9IGZsb2F0MygzLiwgNC4sIDUuKTsKLSAgICAgICAgICAgIGZsb2F0NCBiID0gZmxvYXQ0
KDYuLCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IGZvb2Y0KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoMy4s
IDQuKTsKLSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDUuLCA2Lik7Ci0gICAgICAgICAg
ICBmbG9hdDQgYyA9IGZsb2F0NChhLCBiKTsKLSAgICAgICAgICAgIHJldHVybiBjWzJdOwotICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgZm9vZjUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDQgYSA9IGZsb2F0NCgzLiwgNC4sIDUuLCA2Lik7Ci0gICAgICAgICAgICBmbG9hdDIgYiA9IGZs
b2F0Mig0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQ0IGMgPSBmbG9hdDQoMy4sIGIsIDYuKTsK
LSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBjKTsKLSAgICAgICAgfQotICAgICAgICBib29s
IGZvb2Y2KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoNC4sIDUu
KTsKLSAgICAgICAgICAgIGZsb2F0MyBiID0gZmxvYXQzKDMuLCBhKTsKLSAgICAgICAgICAgIGZs
b2F0MyBjID0gZmxvYXQzKDMuLCA0LiwgNi4pOwotICAgICAgICAgICAgcmV0dXJuIGFsbChiID09
IGMpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDMpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10p
LCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbzUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAiZm9vNiIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vdSIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291MiIsIFtdKSwgNCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291
MyIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb291NCIsIFtdKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJmb291NSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb291NiIsIFtdKSwgZmFsc2UpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Yi
LCBbXSksIDMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImZvb2YyIiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJmb29mMyIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjQiLCBbXSksIDUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjUiLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vZjYiLCBbXSksIGZhbHNlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9j
YXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjQ3OGY3M2M2ZjU0ZTE1ODU1
ZjhmMGYyN2NhZTcwZTIzZDY0MWU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBjYXN0cwotUEFTUyBzZWxmQ2Fz
dHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmFmNWM4YmQ2OTBlOGQ0ZmJhMzVhNGEzMWE4N2M2N2JkMTc2MDRmMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY2FzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+QmFkIGFkZC48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jYXN0cyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3RydWN0IEJhciB7Ci0gICAgICAgICAgICBpbnQgeTsKLSAgICAgICAg
fQotICAgICAgICBvcGVyYXRvciBCYXIoRm9vIGZvbykgewotICAgICAgICAgICAgQmFyIGI7Ci0g
ICAgICAgICAgICBiLnkgPSBmb28ueCArIDc7Ci0gICAgICAgICAgICByZXR1cm4gYjsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgYmF6KGludCB6KSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAg
ICAgICAgICAgZm9vLnggPSB6OwotICAgICAgICAgICAgQmFyIGIgPSBCYXIoZm9vKTsKLSAgICAg
ICAgICAgIHJldHVybiBiLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbbWFrZUludCg2KV0pLCAxMyk7
Ci19Ci0KLXdobHNsVGVzdHMuc2VsZkNhc3RzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsK
LSAgICAgICAgICAgIGZvby54ID0gMjE7Ci0gICAgICAgICAgICBGb28gYmFyID0gRm9vKGZvbyk7
Ci0gICAgICAgICAgICBiYXIueCA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGZvby54ICsgYmFy
Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIxICsgNDIpOwotfQotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUt
dmFyaWFibGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2Vy
LXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdk
MWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlw
ZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9m
LXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0MjhmNmE3NTJiNjdiMGU3NjBiYzVlMjMyNGIzY2RhYmQ4Yjk2ZjIzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJp
YWJsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNl
ID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihk
ZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNW
X0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdDQgdmVjOwotICAgIHZlY1swXSArPSA0Mi4w
OwotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IHZlY1swXTsKLX0KLWA7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNv
bXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVT
aGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307
Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShi
dWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBi
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9E
U1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNv
bnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRp
bmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91
cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3Vs
dHNCdWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEs
IDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVm
ZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1
bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwot
ICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBdID09IDQyKQotICAgICAgICB0ZXN0UGFzc2Vk
KCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZm
ZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2
aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYWE0ZTc2OTFmODU0NjEyYWUxNmIxNTgxMTI2NzFmZmY4ZDllOWYxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNCArMCwwIEBACi0KLVBBU1MgdmVjdG9yQ2xhbXAKLVBBU1MgbWF0cml4Q2xhbXAKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzMWYzNDZiMDI1NzA1YWE4MTViOTg3NDYyZDFmMjFkOWIzZTllMDMyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+Q2xhbXAuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3Rz
LnZlY3RvckNsYW1wID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeDsK
LSAgICAgICAgICAgIHhbMF0gPSBhOwotICAgICAgICAgICAgeFsxXSA9IGI7Ci0gICAgICAgICAg
ICBmbG9hdDIgYm90dG9tID0gZmxvYXQyKDEsIDUpOwotICAgICAgICAgICAgZmxvYXQyIHRvcCA9
IGZsb2F0MigxMCwgNyk7Ci0gICAgICAgICAgICB4ID0gY2xhbXAoeCwgYm90dG9tLCB0b3ApOwot
ICAgICAgICAgICAgcmV0dXJuIHgueCAvIHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VGbG9hdCgxMiksIG1ha2VGbG9hdCgyMCldKSwgMTAgLyA3LCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VGbG9hdCg4KSwgbWFrZUZsb2F0KDYpXSksIDggLyA2LCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VGbG9hdCgtMTApLCBtYWtlRmxvYXQoNildKSwgMSAvIDYsIGVwc2lsb24pOwot
fTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDbGFtcCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYywg
ZmxvYXQgZCkgewotICAgICAgICAgICAgZmxvYXQyeDIgeDsKLSAgICAgICAgICAgIHhbMF0gPSBm
bG9hdDIoYSwgYik7Ci0gICAgICAgICAgICB4WzFdID0gZmxvYXQyKGMsIGQpOwotCi0gICAgICAg
ICAgICBmbG9hdDJ4MiBib3R0b20gPSBmbG9hdDJ4MihmbG9hdDIoMSwgMiksIGZsb2F0MigzLCA0
KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB0b3AgPSBmbG9hdDJ4MihmbG9hdDIoMTAsIDExKSwg
ZmxvYXQyKDEyLCAxMykpOwotCi0gICAgICAgICAgICB4ID0gY2xhbXAoeCwgYm90dG9tLCB0b3Ap
OwotCi0gICAgICAgICAgICByZXR1cm4geFswXVswXSAvIDEgKyB4WzBdWzFdIC8gMiArIHhbMV1b
MF0gLyAzICsgeFsxXVsxXSAvIDQ7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
RmxvYXQoMiksIG1ha2VGbG9hdCgtMSksIG1ha2VGbG9hdCg0KSwgbWFrZUZsb2F0KDEwKV0pLCAy
LzEgKyAyLzIgKyA0LzMgKyAxMC80LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdCgxMDAp
LCBtYWtlRmxvYXQoMTAwKSwgbWFrZUZsb2F0KDEwMCksIG1ha2VGbG9hdCgxMDApXSksIDEwLzEg
KyAxMS8yICsgMTIvMyArIDEzLzQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KC0xMDAp
LCBtYWtlRmxvYXQoLTEwMCksIG1ha2VGbG9hdCgtMTAwKSwgbWFrZUZsb2F0KC0xMDApXSksIDEv
MSArIDIvMiArIDMvMyArIDQvNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxvYXQoTmFOKSwg
bWFrZUZsb2F0KE5hTiksIG1ha2VGbG9hdChOYU4pLCBtYWtlRmxvYXQoTmFOKV0pLCAxLzEgKyAy
LzIgKyAzLzMgKyA0LzQsIGVwc2lsb24pOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9j
b21tZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
bW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ5M2U4OGE2ZGNlYTk3NTVhMDk5Y2NjOTZkNTYwMTAxZWZiYjFmMTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAg
QEAKLQotUEFTUyBjb21tZW50UGFyc2luZwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y29tbWVudC1wYXJzaW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYmU0
MzBiYjE3OTgxYTkwNmMwYzJjNWRiZDc3NjZkNDQ3ZDU2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbW1l
bnQtcGFyc2luZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuY29tbWVudFBhcnNpbmcgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIC8qIHRoaXMgY29tbWVudAotICAgICAgICBydW5z
IG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBs
aW5lcwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19
Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvY29tcHV0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmEzODFmODQwMTg4YWQwMmU1OWMwZjkxMTBlYzNlMWQ3ZmYyZmU3
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUg
dm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwg
ZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50
KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNv
bXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3Np
emUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsK
LSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsy
XSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAg
IGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVz
dWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2go
MiwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlC
dWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJl
c3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7
Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRz
RmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9
PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAg
ICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51
bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NvcHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2NvcHktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmIy
NGJjNzc2YzBjYmZmZjhiZmJjYjFhNzllNzRjMmNlZTFiMTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNvcHlB
cnJheQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvcHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmViMzJiMDE1MmNiNjVlOGNkMDRlZDBiMzBhNDAyNmZkYmM3Mjk4Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY29weS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLmNvcHlBcnJheSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
bnRbMTBdIHhzOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgeHNbaV0gPSBpbnQoaSkgKyAxOwotICAgICAgICAgICAgaW50
WzEwXSB5cyA9IHhzOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3Ro
OyBpKyspCi0gICAgICAgICAgICAgICAgeHNbaV0gPSAwOwotICAgICAgICAgICAgaW50IHN1bSA9
IDA7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB5cy5sZW5ndGg7IGkrKykKLSAg
ICAgICAgICAgICAgICBzdW0gPSBzdW0gKyB5c1tpXTsKLSAgICAgICAgICAgIHJldHVybiBzdW07
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDU1KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNTQzM2U2Y2E2NjJlNDUwMzliN2FkZTI4OTllNWRiNDU4M2RkOTZiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBjYWxsQXJndW1lbnRzQXJlQ29waWVkSW1tZWRp
YXRlbHlBZnRlckV2YWx1YXRpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTk5Yzk2YzA1ZjU0ZTcwOTE2Y2U3YTY1ODNlOTY5ODU3OTIyNmYxMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RGVyZWZlcmVuY2Ugb3JkZXJpbmcu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuY2FsbEFyZ3VtZW50c0Fy
ZUNvcGllZEltbWVkaWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICpiYXIoNSkgKyAqYmFyKDcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGlu
dCogYmFyKGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSB2YWx1ZTsK
LSAgICAgICAgICAgIHJldHVybiAmeDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAxMik7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5
cGUtY2hlY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVy
ZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2Mw
ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2st
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50
ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJl
ZmVyZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEyYTcxM2NiNDIzYzc5NDM1ZmMzZWFjZmQ4YjM3Y2FiZjAxMGQ4YmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVj
dCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmli
dXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRy
MiA9ICZzaGFkZTsKLSAgICAqcHRyMiA9IHNoYWRlOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gKnB0cjI7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRl
LCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsK
LSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29u
c3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25l
In07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhh
QmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1
dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0
Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRy
aWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBh
dHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
MEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
M10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNl
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
b3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7Ymlu
ZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERl
c2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3Vw
QmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAo
YmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBm
b3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25m
aWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29s
b3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVU
YXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xv
cjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1w
cm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNlNTFkYjg1NjI0NjM4YTY1NTg4OTQ5MGE0YWNiNDczYWY1MzY0
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBQb2lu
dCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBQb2ludFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGZsb2F0IHggPSBidWZmZXJbMF0ueDsKLSAgICBmbG9hdCB5ID0gYnVmZmVyWzBdLnk7Ci0gICAg
eCArPSAxLjA7Ci0gICAgeSArPSAxLjA7Ci0gICAgYnVmZmVyWzBdLnggPSB4OwotICAgIGJ1ZmZl
clswXS55ID0geTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTog
NywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRz
OiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
c2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDI7Ci0KLSAgICBjb25zdCBi
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gNDIuMDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSA0My4w
OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2Fn
ZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRz
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwg
MCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlz
cGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRz
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNv
bnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1
ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNDMuMAotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQ0LjApCi0gICAgICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51
bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNh
OTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTI5ZjQ5OWFiNzgxN2FhMTJiMWY3OWNiNGQwOTI1MDY2
ZjgxYzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4
T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFk
ZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkg
ewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIGRvIHsK
LSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSB3
aGlsZSAoKHNoYWRlID0gMS4wLCBmYWxzZSkpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9z
aXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBz
aGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUw
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwg
b2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1
dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRy
aWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBw
cmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhT
dGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3Vy
Y2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13
aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJkZjY3N2E4OTYyNzFkNDAzZjgzMjc1YjJmZmIxMTk0YzFiMGNhZjcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDE0NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewot
ICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0
cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAg
VmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgdWludCBpID0gMDsK
LSAgICBkbyB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotICAgICAgICBzaGFkZSA9IDAuMDsKLSAgICB9IHdoaWxlICgoaSA9IGkgKyAxLCBzaGFk
ZSA9IHNoYWRlICsgMC4xLCBpIDwgMTApKTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hh
ZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBj
b25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9m
ZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRl
MV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmli
dXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJp
bWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3Rl
bmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
OF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAg
dmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNv
dXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNl
QnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0
OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJl
U3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUg
PSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
VmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJl
ZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0
IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVy
dGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0g
ICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRl
dmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFh
NTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWM4OTdhNzBlMWI4NDQxZDE4OWFlMDVjNWNiNTdlNmI5
NzA0N2E5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsK
LSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAg
IFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBkbyB7Ci0gICAgICAgIHNoYWRlID0gMS4wOwotICAg
IH0gd2hpbGUoZmFsc2UpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
cmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJp
YnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07
Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9y
bS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlv
dXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNp
emU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3Vy
Y2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5
b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVt
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJz
aW5nLWVudW0tZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNl
N2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9u
dC1jcmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzE2Y2E2ZWI1MmI0Njg0NThkY2ZmMTQ4MzZlZjllZGFjMzM0YzRiOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLQotZW51bSBEb250Q3Jhc2ggewotICAgIFZh
bHVlCi19Ci0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
MCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0
cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQifTsKLSAgICBjb25z
dCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAg
IGNvbnN0IGlucHV0MSA9IHtzdHJpZGU6IDQsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTFdfTsK
LSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAgIGNvbnN0IHZlcnRleElu
cHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHBy
aW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0
ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5l
TGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZl
cnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZm
ZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMUFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMS5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMUFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIxRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzFd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzJdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXIxRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxLnVubWFwKCk7Ci0K
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBi
dWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNv
bnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRp
bmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91
cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZm
ZXIwLCB2ZXJ0ZXhCdWZmZXIxXSwgWzAsIDBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVl
M2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMt
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTdjYjI3MzEyMzdlNWZmNTIyMzgzMGU1OTI5MWZm
Y2NlMDVhNTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhP
dXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRl
IDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7
Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsK
LSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDog
U1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4w
KTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRl
ckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0g
e3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNv
bnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5w
dXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3Qg
aW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVy
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1
ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzld
ID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1h
cCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0g
fCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAg
Y29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsK
LSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZm
ZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmlu
ZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBi
aW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25z
dCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9Owot
ICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFp
bkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3Vy
cmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAs
IGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFj
aG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJj
bGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlw
dG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNv
bnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShy
ZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJp
bmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVy
dGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTg2ZjVhMTUwNTdhZTQwZmEzYzg2MGY5NWUwNTIyNGQ3MmEwYjNi
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBkb3VibGVOb3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kb3VibGUtbm90Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjN2Y3NTYy
NTRkYmZiODFkODAxNjdhMTQxNjlkMzdhNDY5YjM5YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1u
b3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+Q29weWluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5kb3VibGVOb3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbyhib29sIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biAhIXg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIHRydWUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVw
bGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90
LXByb2R1Y2UtZHVwbGljYXRlLWN0b3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUt
Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90
LXByb2R1Y2UtZHVwbGljYXRlLWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQyYTYxMmI2ZTExNGY5NDlmNGZjNTI4N2Yx
YWUwMTQ4YzAzZTRhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3Qt
cHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4K
LWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBYWVogewotICAgIGludCB4OwotICAgIGlu
dCB5OwotICAgIGludCB6OwotfQotCi10eXBlZGVmIFhZWjEgPSBYWVo7Ci10eXBlZGVmIFhZWjIg
PSBYWVo7Ci10eXBlZGVmIFhZWjMgPSBYWVo7Ci0KLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29t
cHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgaW50IHZh
bHVlOwotICAgIGZsb2F0IHZhbHVlMjsKLSAgICBpbnRbMTBdIHZhbHVlMzsKLQotICAgIHRocmVh
ZCBpbnQqIHggPSAmdmFsdWU7Ci0gICAgdGhyZWFkIGludCogeSA9ICZ2YWx1ZTsKLSAgICB0aHJl
YWQgZmxvYXQqIGYxID0gJnZhbHVlMjsKLSAgICB0aHJlYWQgZmxvYXQqIGYyID0gJnZhbHVlMjsK
LSAgICBYWVoxIGE7Ci0gICAgWFlaMiBiOwotICAgIFhZWjMgYzsKLSAgICB0aHJlYWQgaW50W10g
aW50QXJyYXlSZWYxID0gQHZhbHVlMzsKLSAgICB0aHJlYWQgaW50W10gaW50QXJyYXlSZWYyID0g
QHZhbHVlMzsKLSAgICBpZiAoKnggPT0gKnkgJiYgeCA9PSB5KSB7Ci0gICAgICAgIGJ1ZmZlclt1
aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLSAgICB9
Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJz
dG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91
cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBl
bGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA4OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVy
VXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
YnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBi
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVswXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFdID0gMjsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMl0gPSAzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDQ7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzRdID0gNTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA2Owot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDc7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5Wzdd
ID0gODsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVz
dWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNp
emV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6
IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNv
bnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZm
ZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDgpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2lu
Q29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDIsIDEsIDEpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVz
dWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRz
RmxvYXQzMkFycmF5WzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxXSA9
PSA0Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT0gNgotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzNdID09IDgKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVs0XSA9PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0gPT0gNgotICAgICAg
ICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzZdID09IDcKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0
MzJBcnJheVs3XSA9PSA4KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAg
ICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVw
bGljYXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRl
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODQ2MGM2NmQ4
OGEyNmM5MjBlN2Y2MmRmNWZlNjcxMTNiMjNhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZHVwbGlj
YXRlRnVuY3Rpb25zCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBs
aWNhdGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmY2ZDhlNGNjZDZmNTVjODI1ZmZiOTk0ZDAy
MzJiZTVhYTdmMzhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRl
c3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuZHVwbGljYXRlRnVuY3Rpb25zID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAg
YCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbyhpbnQgeCkgeyB9
Ci0gICAgICAgIHR5cGVkZWYgQSA9IGludDsKLSAgICAgICAgdm9pZCBmb28oQSB4KSB7IH0KLSAg
ICBgKTsKLQotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIoKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcihpbnQgeCkgewot
ICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpbnQg
YmF6KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcigzKTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJiYXoiLCBbXSksIDMpOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAg
ICAgaW50IG9wZXJhdG9yJltdKHRocmVhZCBpbnRbXSBhLCB1aW50IGIpIHsKLSAgICAgICAgICAg
IHJldHVybiA0OwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICB1aW50IG9wZXJhdG9yLmxlbmd0aCh0aHJlYWQgaW50W10gYSkgewotICAgICAgICAg
ICAgcmV0dXJuIDQ7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PSh0aHJlYWQgaW50W10gYSwgdGhyZWFkIGludFtdIGIp
IHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBib29sIG9wZXJhdG9yPT0odGhyZWFkIGludCogYSwg
dGhyZWFkIGludCogYikgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICBgKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVy
LXVzYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJv
cGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0ZGIwZDdhZDRiMjg4NDZlNTkzMWRlY2YxOGE5MzdiOTkyZjA4YzE0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgbm9Qb2ludGVyc0luU3RydWN0T3JBcnJheQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVy
LXVzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2lu
dGVyLXVzYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNzJkMWM0MDUx
NTE2NjM3YTUxMTIwYzk3ZjA2OGNmMGQ1ZGY3YWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9w
ZXItcG9pbnRlci11c2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+Y29ycmVjdCBwb2ludGVyIHVzYWdlLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm5vUG9pbnRlcnNJblN0cnVj
dE9yQXJyYXkgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
c3RydWN0IFMgeyBpbnQgeDsgdGhyZWFkIGludCogcHRyOyB9Ci0gICAgICAgIHZvaWQgZm9vKCkg
eyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIFQg
PSB0aHJlYWQgaW50KjsKLSAgICAgICAgc3RydWN0IFMgeyBpbnQgeDsgVCBwdHI7IH0KLSAgICAg
ICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHN0cnVjdCBTIHsgdGhyZWFkIGludCpbNDJdIGFycjsgfQotICAgICAgICB2b2lkIGZvbygp
IHsgfQotICAgIGApOwotCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZv
bygpIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqWzQyXSBhcnI7Ci0gICAgICAgIH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBp
bnQqOwotICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgIFRbNDJdIGFycjsKLSAgICAg
ICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBU
ID0gdGhyZWFkIGludCpbNDJdOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBp
bnQgeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICZ4OwotICAgICAgICAgICAgKCZw
dHIpOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICB0eXBlZGVmIFQgPSB0aHJlYWQgaW50KltdOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0gaW50Owot
ICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSSpbXTsKLSAgICAgICAgdm9pZCBmb28oKSB7IH0K
LSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgSSA9IHRo
cmVhZCBpbnQqOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOwotICAgICAgICB2b2lk
IGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlw
ZWRlZiBJID0gdGhyZWFkIGludFtdOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOwot
ICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRo
cmVhZCBJKjsKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgaW50IHg7Ci0gICAg
ICAgICAgICB0aHJlYWQgaW50W10gYXJyID0gQHg7Ci0gICAgICAgICAgICAoQGFycik7Ci0gICAg
ICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9v
KCkgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gYXJyID0g
QHg7Ci0gICAgICAgICAgICAoJmFycik7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0
IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgSSA9IHRocmVhZCBpbnRbXTsKLSAgICAgICAg
dHlwZWRlZiBUID0gdGhyZWFkIEkqOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwot
fTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0
aW1lLTItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJv
cGVyLXZhcmlhYmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0
aW1lLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlh
YmxlLWxpZmV0aW1lLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZmOTU4
YTBjZWZlMTQ3MTVmMmNlZDAwNmFkYTcwMzNiYTEyMTM2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9h
dDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgw
KTsKLX0KLQotZmxvYXQgYXNzaWduVG9QdHIodGhyZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZhbHVl
KSB7Ci0gICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiByZWFsUHRy
KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVybiAmdmFsdWU7Ci19Ci0KLXRocmVhZCBmbG9hdCog
Zmlyc3RQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gcmVhbFB0cih2YWx1ZSk7Ci19Ci0K
LXRocmVhZCBmbG9hdCogc2Vjb25kUHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIGZpcnN0
UHRyKHZhbHVlKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAg
IFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUgPSBmaXJz
dFB0cihzaGFkZSk7Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlMiA9IHNlY29uZFB0cigx
LjApOwotCi0gICAgZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teVB0ciA9ICZk
dW1teTsKLQotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZTIsIDAuMCk7Ci0gICAg
dGhyZWFkIGZsb2F0KiBkdW1teTIgPSByZWFsUHRyKHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3Np
dGlvbiA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxv
YXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0
KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29u
c3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0g
ICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0
In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAi
ZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAs
IGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVT
ZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5k
UGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2Jm
YTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFi
bGUtbGlmZXRpbWUtMy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hp
dGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE0ODY5ZmFhMDNlNWVmMmJjNjcyZTAyYmI0OTA3OWQ4YjYwMjA3
NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRvUHRyKHRocmVh
ZCBmbG9hdCogcHRyLCBmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiAqcHRyID0gdmFsdWU7Ci19
Ci0KLXRocmVhZCBmbG9hdCogcmVhbFB0cihmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdCB2ID0g
dmFsdWU7Ci0gICAgcmV0dXJuICZ2OwotfQotCi10aHJlYWQgZmxvYXQqIGZpcnN0UHRyKGZsb2F0
IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHJlYWxQdHIodmFsdWUpOwotfQotCi10aHJlYWQgZmxvYXQq
IHNlY29uZFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiBmaXJzdFB0cih2YWx1ZSk7Ci19
Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVz
dWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlID0gZmlyc3RQdHIoc2hhZGUpOwot
ICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIoMS4wKTsKLQotICAgIGZs
b2F0IGR1bW15OwotICAgIHRocmVhZCBmbG9hdCogZHVtbXlQdHIgPSAmZHVtbXk7Ci0KLSAgICBk
dW1teSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUyLCAwLjApOwotICAgIHRocmVhZCBmbG9hdCog
ZHVtbXkyID0gcmVhbFB0cihzaGFkZSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlv
bjsKLQotICAgIHJlc3VsdC5zaGFkZSA9ICpwdHJUb1NoYWRlMjsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hh
ZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJp
YnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0
OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsK
LSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVz
fTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
dW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBE
ZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0g
YXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNl
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZm
ZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdw
dSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2Fw
Q2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3
YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3
ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25z
dCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2ht
ZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51
bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2Mw
ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUt
bGlmZXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZh
cmlhYmxlLWxpZmV0aW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDk2
ZjdlMzUxN2YwNDRjN2I3NDg2OTVlYWU1YzBlMzVjMGE2MTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3Vy
ZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDAp
OwotfQotCi1mbG9hdCBhc3NpZ25Ub1B0cih0aHJlYWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFsdWUp
IHsKLSAgICByZXR1cm4gKnB0ciA9IHZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIHJlYWxQdHIo
ZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuICZ2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiBm
aXJzdFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiByZWFsUHRyKHZhbHVlKTsKLX0KLQot
dGhyZWFkIGZsb2F0KiBzZWNvbmRQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gZmlyc3RQ
dHIodmFsdWUpOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAg
VmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZpcnN0
UHRyKHNoYWRlKTsKLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUyID0gc2Vjb25kUHRyKDEu
MCk7Ci0KLSAgICBmbG9hdCBkdW1teTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15UHRyID0gJmR1
bW15OwotCi0gICAgZHVtbXkgPSBhc3NpZ25Ub1B0cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAgICBk
dW1teSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUsIHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3Np
dGlvbiA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxv
YXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0
KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29u
c3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0g
ICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0
In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAi
ZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAs
IGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVT
ZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5k
UGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0YTJlMjFmMmIwMDZiMjMxNzE2ZWZjZjEwZGVmM2I4MmI2ZjE0MGIz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1Mgc2ltcGxlRW51bUZyb21JbnQKLVBB
U1Mgc2ltcGxlRW51bUZyb21VaW50Ci1QQVNTIHdlaXJkRW51bUZyb21JbnQKLVBBU1Mgd2VpcmRF
bnVtRnJvbVVpbnQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0t
aW50ZWdlci1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0t
aW50ZWdlci1jb25zdHJ1Y3Rvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YzRhNWNkY2ZlZGI2ZmE2ODdhNTZkMzRhMGIwZmI4OGEyYTk2Mzg3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnVtLWludGVnZXItY29uc3RydWN0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkVudW1zLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW1Gcm9tSW50ID0gYXN5bmMg
KCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAg
ICAgICBBLAotICAgICAgICAgICAgQiwKLSAgICAgICAgICAgIEMKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBmb28oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vKHgpKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNDIpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgwKV0pLCAwKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoMSldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDIxNDc0ODM2NDcpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMjE0NzQ4MzY0OCldKSwgMCk7
Ci19OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW1Gcm9tVWludCA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAg
IEEsCi0gICAgICAgICAgICBCLAotICAgICAgICAgICAgQwotICAgICAgICB9Ci0KLSAgICAgICAg
dWludCBmb28odWludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChGb28oeCkpOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDEp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KDIpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyKV0pLCAwKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgx
MDAwMDAwKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0Mjk0OTY3Mjk1KV0pLCAwKTsKLX07Ci0KLXdobHNs
VGVzdHMud2VpcmRFbnVtRnJvbUludCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgZW51bSBGb28gOiBpbnQgewotICAgICAgICAgICAgQSA9IDQyLAotICAgICAg
ICAgICAgQiA9IC0xMDAwLAotICAgICAgICAgICAgQyA9IDEwMTAxMCwKLSAgICAgICAgICAgIEQg
PSAwCi0gICAgICAgIH0KLQotICAgICAgICBpbnQgZm9vKGludCB4KSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW50KEZvbyh4KSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDAp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCg0MildKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMTAwMCldKSwgLTEwMDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgxMDEwMTApXSksIDEwMTAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMjE0NzQ4
MzY0NyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVz
dHMud2VpcmRFbnVtRnJvbVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGVudW0gRm9vIDogdWludCB7Ci0gICAgICAgICAgICBBID0gNDIsCi0gICAgICAg
ICAgICBDID0gMTAxMDEwLAotICAgICAgICAgICAgRCA9IDAKLSAgICAgICAgfQotCi0gICAgICAg
IHVpbnQgZm9vKHVpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHVpbnQoRm9vKHgpKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0MildKSwg
NDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDEwMTAxMCldKSwgMTAxMDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0Mjk0OTY3Mjk1
KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWludCgxKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0MSldKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZVVpbnQoMTAxMDExKV0pLCAwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1z
cGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjI4
ZGNlYzMyOTA1ZjBiMWNlMTlmNWI2MWNiNTQxYjkyYTA3NGI0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0K
LVBBU1MgZW51bUR1cGxpY2F0ZXMKLVBBU1MgZGVmYXVsdEVudW1Db25zdHJ1Y3RvcgotUEFTUyBl
bnVtQXJyYXlSZWZCYXNlCi1QQVNTIGVudW1GbG9hdEJhc2UKLVBBU1MgZW51bVB0ckJhc2UKLVBB
U1MgZW51bVN0cnVjdEJhc2UKLVBBU1MgZW51bU5vTWVtYmVycwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEwMWY3ODczZTc3YTIwZTQxYjM5YjY2NzZiYjA3NGI4MmMzOGM1YzYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2VudW0tc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0
IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZW51bUR1
cGxpY2F0ZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
ICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBXYXIgPSA0MiwKLSAgICAgICAgICAgICAg
ICBGYW1pbmUgPSAwLAotICAgICAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAyMywKLSAgICAgICAg
ICAgICAgICBEZWF0aCA9IDQyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfTsKLQotd2hs
c2xUZXN0cy5kZWZhdWx0RW51bUNvbnN0cnVjdG9yID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gV2Vla2RheSB7Ci0gICAgICAgICAgICBNb25kYXks
Ci0gICAgICAgICAgICBUdWVzZGF5LAotICAgICAgICAgICAgV2VkbmVzZGF5LAotICAgICAgICAg
ICAgVGh1cnNkYXksCi0gICAgICAgICAgICBQaXp6YWRheQotICAgICAgICB9Ci0gICAgICAgIGlu
dCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWVrZGF5IHggPSBXZWVrZGF5KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIpOwotfTsK
LQotd2hsc2xUZXN0cy5lbnVtQXJyYXlSZWZCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiB0aHJlYWQgaW50
W10gewotICAgICAgICAgICAgICAgIEJhcgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0K
LQotd2hsc2xUZXN0cy5lbnVtRmxvYXRCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiBmbG9hdCB7Ci0gICAg
ICAgICAgICAgICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRl
c3RzLmVudW1QdHJCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiB0aHJlYWQgaW50KiB7Ci0gICAgICAgICAg
ICAgICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmVu
dW1TdHJ1Y3RCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IFRoaW5neSB7IH0KLSAgICAgICAgICAgIGVudW0gRm9v
IDogVGhpbmd5IHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1Ob01lbWJlcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyB7IH0KLSAg
ICAgICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFmN2Y5NmMxOWEzMGYzNGRlOTVkNzJlZmU0NjE4
NjNmN2U2ZTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHNpbXBsZUVudW0KLVBBU1MgZW51bVdpdGhFeHBs
aWNpdEludEJhc2UKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1z
LTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy0yLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDlkZGYzYmIwMDg3OWU4NjNmYzU4MTM0ZDcwMzIyNTNi
NWUxY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1
OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkVudW1zLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW0gPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAg
ICAgIFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0g
ICAgICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF93YXIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93YXIoKSA9PSBGb28uV2Fy
OwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZmFtaW5l
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUoKSA9PSBGb28uRmFtaW5l
OwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNl
KCkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2RlYXRoKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2RlYXRo
KCkgPT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBh
LCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RT
aW1wbGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5X
YXIsIEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFs
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLlBlc3RpbGVuY2Us
IEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdEVxdWFs
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9v
LkRlYXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldh
cik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9v
LlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90Tm90RXF1YWwo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uRmFtaW5lLCBG
b28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRXYXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gaW50KF93YXIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
bnQgaW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnRXYXIoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGludCBfaW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGludEZh
bWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50RmFtaW5lKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgX2ludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gaW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50
IGludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFBlc3Rp
bGVuY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RGVhdGgoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9kZWF0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50RGVhdGgo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50V2FyQmFja3dhcmRzKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50V2FyKCkpID09IEZvby5XYXI7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGludEZhbWluZUJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGb28oX2ludEZhbWluZSgpKSA9PSBGb28uRmFtaW5lOwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBpbnRQZXN0aWxlbmNlQmFja3dhcmRzKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvbyhfaW50UGVzdGlsZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5jZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RGVhdGhCYWNrd2FyZHMoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnREZWF0aCgpKSA9PSBGb28uRGVhdGg7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInBlc3RpbGVuY2UiLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxlRXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJF
cXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVOb3RFcXVhbCIs
IFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdE5vdE5vdEVxdWFsIiwg
W10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiaW50V2FyIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50UGVzdGlsZW5jZSIsIFtdKSwgMik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImludERl
YXRoIiwgW10pLCAzKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiaW50V2FyQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludEZhbWluZUJhY2t3YXJkcyIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJpbnRQZXN0aWxlbmNlQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludERlYXRoQmFja3dhcmRz
IiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhFeHBsaWNpdEludEJhc2Ug
PSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIDog
aW50IHsKLSAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAg
IFBlc3RpbGVuY2UsCi0gICAgICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9v
IF93YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93
YXIoKSA9PSBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUo
KSA9PSBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIF9wZXN0aWxlbmNlKCkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAg
ICBGb28gX2RlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gX2RlYXRoKCkgPT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBfZXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
PT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIHRlc3RTaW1wbGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBfZXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0
ZXN0QW5vdGhlckVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMo
Rm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgdGVzdE5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMo
Rm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNp
bXBsZU5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMo
Rm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVy
Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28u
UGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0
ZXN0Tm90Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFs
cyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRX
YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF93YXIoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbnQgaW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IF9pbnRXYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RmFtaW5lKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IGludEZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50
RmFtaW5lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2ludFBlc3RpbGVuY2UoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaW50IGludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX2ludFBlc3RpbGVuY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RGVh
dGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9kZWF0aCgpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBfaW50RGVhdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50V2FyQmFja3dh
cmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50V2FyKCkpID09IEZv
by5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludEZhbWluZUJhY2t3YXJkcygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludEZhbWluZSgpKSA9PSBGb28uRmFt
aW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRQZXN0aWxlbmNlQmFja3dhcmRzKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50UGVzdGlsZW5jZSgpKSA9PSBG
b28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RGVhdGhCYWNrd2Fy
ZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnREZWF0aCgpKSA9PSBG
b28uRGVhdGg7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCB0cnVl
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInBl
c3RpbGVuY2UiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxlRXF1YWwiLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAidGVzdEFub3RoZXJFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBbXSksIGZhbHNlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RT
aW1wbGVOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIsIFtdKSwgZmFsc2Up
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVz
dE5vdE5vdEVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiaW50V2FyIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lIiwgW10pLCAxKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50UGVzdGls
ZW5jZSIsIFtdKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImludERlYXRoIiwgW10pLCAzKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50V2FyQmFja3dhcmRzIiwgW10pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludEZh
bWluZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlQmFja3dhcmRzIiwgW10pLCB0cnVl
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImlu
dERlYXRoQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZW51bXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3ZmU1ZjRmZTY3ZmEw
ZjU4MzgxOWIxNjhlMzYyNTA1ZDNhOWE2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotCi1QQVNTIGZhaWxUcmlja3lEb3Vi
bGVaZXJvCi1QQVNTIHNpbXBsZURlY2xhcmF0aW9uCi1QQVNTIGVudW1XaXRoVWludEJhc2UKLVBB
U1MgZW51bVdpdGhvdXRaZXJvCi1QQVNTIGVudW1OZWdhdGl2ZVVpbnQKLVBBU1MgcGFzdEludE1h
eAotUEFTUyBlbnVtV2l0aFNvbWVNYW51YWxWYWx1ZXMKLVBBU1MgZW51bVN3aXRjaEJyZWFrRXho
YXVzdGl2ZQotUEFTUyBlbnVtU3dpdGNoQnJlYWtOb3RRdWl0ZUV4aGF1c3RpdmVXaXRoRGVmYXVs
dAotUEFTUyBlbnVtV2l0aE1hbnVhbFZhbHVlcwotUEFTUyBlbnVtU3dpdGNoQnJlYWtOb3RRdWl0
ZUV4aGF1c3RpdmUKLVBBU1MgY29weUNvbnN0cnVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZW51bXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnVtcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2U4ZWZmYTFiMTk4YWI0
MjNjMWU2ZTQ3ODkxZGMyZTAzNDZiNmYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZmFp
bFRyaWNreURvdWJsZVplcm8gPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgZW51bSBFIHsKLSAgICAgICAgICAgIEYsCi0gICAgICAgICAgICBHID0gLTIsCi0g
ICAgICAgICAgICBILAotICAgICAgICAgICAgSSAvLyBzaG91bGQgZ2V0IHplcm8sIGFuZCB0aGF0
J3MgYSBkdXBlLgotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBFIGUgPSBFLkZvbzsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotfTsKLQotd2hsc2xUZXN0cy5z
aW1wbGVEZWNsYXJhdGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBlbnVtIEUgewotICAgICAgICAgICAgRm9vLAotICAgICAgICAgICAgQmFyCi0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEUgZSA9IEUu
Rm9vOwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7
Ci19OwotCi13aGxzbFRlc3RzLmVudW1XaXRoVWludEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIDogdWludCB7Ci0gICAgICAgICAgICBX
YXIsCi0gICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICBQZXN0aWxlbmNlLAotICAgICAg
ICAgICAgRGVhdGgKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfd2FyKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHdh
cigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfd2FyKCkgPT0gRm9vLldhcjsKLSAg
ICAgICAgfQotCi0gICAgICAgIEZvbyBfZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZhbWluZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZmFtaW5lKCkgPT0gRm9vLkZhbWluZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEZvbyBfcGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgcGVz
dGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfcGVzdGlsZW5jZSgpID09
IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9kZWF0aCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAg
ICBib29sIGRlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9kZWF0aCgpID09
IEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX2VxdWFscyhGb28gYSwgRm9v
IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIF9ub3RFcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYSAhPSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxl
RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uV2FyLCBG
b28uV2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJFcXVhbCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28u
UGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3RFcXVhbCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0
aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1wbGVOb3RFcXVhbCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlck5vdEVxdWFsKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0
aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdE5vdEVxdWFsKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRl
YXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRXYXIoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gdWludChfd2FyKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlu
dCB1aW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50V2FyKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB1aW50IF91aW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHVpbnQoX2ZhbWluZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQg
dWludEZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfdWludEZhbWluZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBfdWludFBlc3RpbGVuY2UoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gdWludChfcGVzdGlsZW5jZSgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHVpbnQgdWludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX3VpbnRQZXN0aWxlbmNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IF91aW50RGVh
dGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChfZGVhdGgoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1aW50IHVpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBfdWludERlYXRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRXYXJC
YWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50V2FyKCkp
ID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRGYW1pbmVCYWNrd2Fy
ZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50RmFtaW5lKCkpID09
IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRQZXN0aWxlbmNlQmFj
a3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfdWludFBlc3RpbGVu
Y2UoKSkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRE
ZWF0aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRE
ZWF0aCgpKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5l
IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgInBlc3RpbGVuY2UiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxl
RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBb
XSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgInRlc3RTaW1wbGVOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIs
IFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAidGVzdE5vdE5vdEVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRXYXIiLCBbXSksIDApOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAidWludEZhbWlu
ZSIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJ1aW50UGVzdGlsZW5jZSIsIFtdKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50V2FyQmFj
a3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgInVpbnRGYW1pbmVCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidWludFBlc3RpbGVu
Y2VCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAidWludERlYXRoQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLX07
Ci0KLQotd2hsc2xUZXN0cy5lbnVtV2l0aG91dFplcm8gPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAg
ICAgICAgICAgV2FyID0gNzIsCi0gICAgICAgICAgICAgICAgRmFtaW5lID0gNjQsCi0gICAgICAg
ICAgICAgICAgUGVzdGlsZW5jZSA9IDIzLAotICAgICAgICAgICAgICAgIERlYXRoID0gLTQyCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5lbnVtTmVnYXRpdmVV
aW50ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgICAgICBXYXIsCi0gICAgICAg
ICAgICAgICAgRmFtaW5lLAotICAgICAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAgICAgICAg
ICAgICAgRGVhdGggPSAtNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxz
bFRlc3RzLnBhc3RJbnRNYXggPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IGludCB7Ci0gICAgICAgICAgICAgICAg
V2FyID0gMjE0NzQ4MzY0NywKLSAgICAgICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICAg
ICAgUGVzdGlsZW5jZSA9IDAsCi0gICAgICAgICAgICAgICAgRGVhdGgKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1XaXRoU29tZU1hbnVhbFZhbHVlcyA9
IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gewot
ICAgICAgICAgICAgV2FyID0gNzIsCi0gICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICBQ
ZXN0aWxlbmNlID0gMCwKLSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLSAgICAgICAgaW50
IHdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLldhcik7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBpbnQoRm9vLkZhbWluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2UoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5QZXN0aWxlbmNlKTsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
aW50KEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDcyKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCA3Myk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgInBlc3Rp
bGVuY2UiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJkZWF0aCIsIFtdKSwgMSk7Ci19OwotCi0KLXdobHNsVGVzdHMuZW51bVN3aXRj
aEJyZWFrRXhoYXVzdGl2ZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgQSwgQiwgQwotICAgICAgICB9Ci0gICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwot
ICAgICAgICAgICAgc3dpdGNoIChGb28oeCkpIHsKLSAgICAgICAgICAgIGNhc2UgRm9vLkE6Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBGb28uQjoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRm9vLkM6Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDApXSksIDI3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgNzYyNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDQ5KTsKLX0K
LQotCi13aGxzbFRlc3RzLmVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZh
dWx0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZv
byB7Ci0gICAgICAgICAgICBBLCBCLCBDCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhpbnQg
eCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICBz
d2l0Y2ggKEZvbyh4KSkgewotICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAg
ICByZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEZvby5COgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0g
NDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMjcpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCgxKV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNDkpOwotfQotCi13aGxzbFRlc3RzLmVu
dW1XaXRoTWFudWFsVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgIEZh
bWluZSA9IDAsCi0gICAgICAgICAgICBQZXN0aWxlbmNlID0gMjMsCi0gICAgICAgICAgICBEZWF0
aCA9IC00MgotICAgICAgICB9Ci0gICAgICAgIGludCB3YXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gaW50KEZvby5XYXIpOwotICAgICAgICB9Ci0gICAgICAgIGludCBmYW1pbmUo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5GYW1pbmUpOwotICAgICAg
ICB9Ci0gICAgICAgIGludCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGludChGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGRlYXRoKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uRGVhdGgpOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAid2FyIiwgW10pLCA3Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZhbWluZSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgInBlc3RpbGVuY2UiLCBbXSksIDIzKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIC00
Mik7Ci19OwotCi13aGxzbFRlc3RzLmVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZSA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBBLCBCLCBDLCBECi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpbnQgZm9vKEZvbyB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGludCByZXN1bHQgPSAwOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoeCkgewotICAgICAg
ICAgICAgICAgIGNhc2UgRm9vLkE6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAyNzsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQjoK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDc2MjQ7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRm9vLkM6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdCArPSA0OTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5jb3B5Q29uc3RydWN0b3JzID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gV2Vla2RheSB7Ci0gICAgICAg
ICAgICBNb25kYXksCi0gICAgICAgICAgICBUdWVzZGF5LAotICAgICAgICAgICAgV2VkbmVzZGF5
LAotICAgICAgICAgICAgVGh1cnNkYXksCi0gICAgICAgICAgICBQaXp6YWRheQotICAgICAgICB9
Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWVrZGF5IHggPSBX
ZWVrZGF5Lk1vbmRheTsKLSAgICAgICAgICAgIFdlZWtkYXkgeSA9IFdlZWtkYXkoeCk7Ci0gICAg
ICAgICAgICBmbG9hdDQgeiA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKLSAgICAgICAgICAgIGZsb2F0
NCB3ID0gZmxvYXQ0KHopOwotICAgICAgICAgICAgZmxvYXQyeDIgcDsKLSAgICAgICAgICAgIGZs
b2F0MngyIHEgPSBmbG9hdDJ4MihwKTsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgNDIpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHktZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzM2NjRjOTA5ODk5YjYxOGIw
YzRlZDAyMjdkZWRjZDZiZGRlMGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgZXF1YWxpdHkKLVBBU1Mg
bm90RXF1YWxpdHkKLVBBU1MgZXF1YWxpdHlUeXBlRmFpbHVyZQotUEFTUyBlcXVhbHNXcm9uZ0Fy
Z3VtZW50TGVuZ3RoCi1QQVNTIGVxdWFsc1dyb25nUmV0dXJuVHlwZQotUEFTUyBsZXNzRXF1YWxX
cm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGxlc3NFcXVhbFdyb25nUmV0dXJuVHlwZQotUEFTUyBs
ZXNzVGhhbldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbGVzc1RoYW5Xcm9uZ1JldHVyblR5cGUK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmVhN2EyNmM5OGIyM2M1YTYzOWFlYmQ3ZTQ1NjFlNDU2NzNhMjFmMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3Qg
aGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5lcXVhbGl0
eSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJib29sIGZvbyh1aW50IHgsIHVp
bnQgeSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwg
ZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg3KV0pLCB0cnVlKTsKLSAgICBwcm9ncmFt
ID0gImJvb2wgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDcpLCBtYWtlSW50KDUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDcpXSksIHRy
dWUpOwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28oYm9vbCB4LCBib29sIHkpIHsgcmV0dXJuIHgg
PT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pLCBmYWxzZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFs
c2UpLCBtYWtlQm9vbChmYWxzZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29s
KHRydWUpXSksIHRydWUpOwotfQotCi13aGxzbFRlc3RzLm5vdEVxdWFsaXR5ID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVy
biB4ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCB0cnVlKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
VWludCg3KSwgbWFrZVVpbnQoNyldKSwgZmFsc2UpOwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28o
aW50IHgsIGludCB5KSB7IHJldHVybiB4ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQo
NSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg3KV0pLCBmYWxzZSk7Ci0gICAgcHJv
Z3JhbSA9ICJib29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4geCAhPSB5OyB9IjsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUp
LCBtYWtlQm9vbChmYWxzZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChm
YWxzZSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pLCBmYWxz
ZSk7Ci19OwotCi13aGxzbFRlc3RzLmVxdWFsaXR5VHlwZUZhaWx1cmUgPSBhc3luYyAoKSA9PiB7
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCJib29sIGZvbyhpbnQgeCwgdWludCB5KSB7IHJldHVybiB4
ID09IHk7IH0iKTsKLX07Ci0KLXdobHNsVGVzdHMuZXF1YWxzV3JvbmdBcmd1bWVudExlbmd0aCA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0KLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCwgaW50
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5lcXVhbHNX
cm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yPT0oRm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRl
c3RzLmxlc3NFcXVhbFdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oKSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw9KGludCkgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAg
ICAgYm9vbCBvcGVyYXRvcjw9KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc0VxdWFsV3JvbmdSZXR1cm5UeXBlID0gYXN5bmMg
KCkgPT4gewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZv
byB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw9KEZvbywgRm9vKSB7IHJldHVybiA0Mjsg
fQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sZXNzVGhhbldyb25nQXJndW1lbnRMZW5n
dGggPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBib29sIG9wZXJhdG9yPCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9y
PChpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPChpbnQsIGludCwgaW50KSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmxlc3NUaGFuV3Jv
bmdSZXR1cm5UeXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRv
cjwoRm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMDFjYzExOThmZDIwMjM2Y2RkMGQ3N2U3ZjkzZjcxNDNmZjhkMWNhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9mbG9hdC1tYXRoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIGZsb2F0TWF0aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZmxvYXQtbWF0aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGgu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3MTdmMDA0M2RkOGFiYzQ0YWI3
YTBmYTE3MTFhYzRkZjkxM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5mbG9hdE1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDQyLjUg
PT0gNDIuNTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiYXIoZmxvYXQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoNy41KTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBmb285KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0KDcu
NSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmxvYXQoNyk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTMoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdCB4ID0gNy41OwotICAgICAgICAgICAgcmV0dXJu
IGZsb2F0KHgpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZGl2KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIDAuNSAvIDIgPT0gMC4yNTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzYiLCBbXSksIDcuNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vOSIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMiIsIFtdKSwgNyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMiLCBb
XSksIDcuNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJkaXYiLCBbXSksIHRydWUpOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBpbnQgYmFyKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmFyKDQuMCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgYmFyKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgYmFyKDQuMGYpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdWludCBiYXIodWludCB4
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
YmFyKDQuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB1aW50IGJhcih1aW50IHgpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wZik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2dl
dHRlci1zZXR0ZXItdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Z2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWUzZTBjNjMxZWUwMTkwZDdhZGRlNzIxYzJjYTU0ZDE4ZmM5NTAxMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDQgKzAsMCBAQAotCi1QQVNTIGdldHRlclR5cGUKLVBBU1Mgc2V0dGVyVHlwZQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjODNkYjliM2NkODFkYzhiMjU1MDUzZDRiMDA2Zjk5OGUy
ZTA4ZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2dldHRlci1zZXR0ZXItdHlwZS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTAzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5nZXR0
ZXJUeXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGlu
dCBvcGVyYXRvci54KHRocmVhZCBpbnRbXSBmb28pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmb29bMF07Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgaW50IG9wZXJhdG9yLngoaW50WzNdIGZvbykKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWQgaW50W10gZm9vLCBpbnQgaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb29baW5kZXhdOwotICAgICAgICB9Ci0g
ICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvci54KGlu
dFszXSBmb28pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb29bMF07Ci0gICAgICAg
IH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7
Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXShG
b28gZm9vLCB1aW50NCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1tp
bmRleC54XTsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXdobHNsVGVzdHMuc2V0dGVyVHlw
ZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0aHJlYWQg
aW50W10gb3BlcmF0b3IueD0odGhyZWFkIGludFtdIGZvbywgdWludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZm9vOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIGludFszXSBvcGVyYXRvci54PShpbnRbM10gZm9vLCB1aW50IHgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsg
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdGhyZWFkIGludFtdIG9wZXJhdG9yW109
KHRocmVhZCBpbnRbXSBmb28sIHVpbnQgeCwgdWludCB5KQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9vOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIGludFszXSBvcGVyYXRvci54PShpbnRbM10gZm9vLCB1aW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsK
LSAgICAgICAgfQotICAgICAgICBGb28gb3BlcmF0b3JbXT0oRm9vIGZvbywgZmxvYXQ0IHksIHVp
bnQgeikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvby54OwotICAgICAgICB9Ci0g
ICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAg
ICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IG9wZXJhdG9yLnkoRm9vIGZv
bykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvby54OwotICAgICAgICB9Ci0gICAg
ICAgIEZvbyBvcGVyYXRvci55PShGb28gZm9vLCBpbnQ0IHgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICBmb28ueCA9IHgueDsKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgKTsgCi19OwotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2h1Z2UtYXJyYXktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg0NmM5MTY3ZjRlYWNjMTAzNDIyYjcyZDZiNzZiN2RiYTdjNjA5NmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4K
LWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZvaWQgZmlsbCh0aHJlYWQgZmxvYXRbXSBhcnJheSwg
ZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkr
KykgewotICAgICAgICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLX0KLQotW251bXRocmVhZHMo
MSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVy
IDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7
Ci0gICAgZmxvYXRbMTAwMF0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxMDAwKQot
ICAgICAgICByZXR1cm47Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXJyYXlbMF0gPSAwLjEzMzc7Ci0gICAgaWYgKGFycmF5WzBdICE9IDAuMTMz
NykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdGhyZWFkIGZsb2F0W10gYXJyYXlQdHIgPSBAYXJy
YXk7Ci0gICAgaWYgKGFycmF5UHRyLmxlbmd0aCAhPSAxMDAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmaWxsKGFycmF5UHRyLCAwLjEwMTApOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFy
cmF5UHRyLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhcnJheVB0cltpXSAhPSAwLjEwMTAp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAwLjEwMTApCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmlsbChAYXJyYXksIDAuMDEwMSk7Ci0g
ICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYg
KGFycmF5UHRyW2ldICE9IDAuMDEwMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KGFycmF5W2ldICE9IDAuMDEwMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBi
dWZmZXJbMF0gPSAxOwotfQotYDsKLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTog
NywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRz
OiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
c2l6ZSA9IEludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwg
R1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0
c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0Ug
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAg
ICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVy
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0
c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAw
LCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5n
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3Jv
dXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRv
QnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29t
cHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNo
KCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRB
c3luYygpOwotICAgIGxldCByZXN1bHRzSW50MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KHJlc3Vs
dHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNJbnQzMkFycmF5WzBdID09PSAxKQotICAg
ICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTU4YTJjMzMxYTFkNDcwM2FmN2I4ZDllNzhj
MWIwNDliNDU3YzBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgaWZTdGF0ZW1lbnQKLVBBU1MgaWZF
bHNlU3RhdGVtZW50Ci1QQVNTIGlmRWxzZUlmU3RhdGVtZW50Ci1QQVNTIGlmRWxzZUlmRWxzZVN0
YXRlbWVudAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTg1YWZkNzdmYzgwYTI1ZThiM2JmYzkyMDhm
YzRlOWMzNDUzZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuaWZTdGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0g
ICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDMpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNSldKSwgNik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDYpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOCldKSwgNik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDkpXSksIDYpOwotfQotCi13aGxzbFRlc3RzLmlmRWxzZVN0YXRlbWVudCA9IGFzeW5jICgpID0+
Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAg
ICAgICAgICAgICAgICB5ID0gODsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgeSA9IDk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDMpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA5KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
NSldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDYpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
OCldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDkpXSksIDkpOwotfQotCi13aGxzbFRlc3RzLmlmRWxzZUlmU3Rh
dGVtZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAg
ICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBl
bHNlIGlmICh4ID09IDgpIHsKLSAgICAgICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwg
Nik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDQpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwg
Nik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwg
Nik7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZFbHNlU3RhdGVtZW50ID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAg
ICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBlbHNlIGlmICh4ID09IDgpIHsKLSAg
ICAgICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgeSA9IDEwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgzKV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDEwKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNSldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgMTApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1MTEyNDVjNjUyY2EwYjBmMGJkM2RmNjZmM2E0NDIyMjA2MDc4MzU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGluY3JlbWVudEFuZERlY3JlbWVudAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjcxYjRjZjRkYzM4NzI3NWEyOWRjZTNj
MTFmNjM5OGU5MzJmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
LmluY3JlbWVudEFuZERlY3JlbWVudCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgaW50IGZvbzEoKSB7IGludCB4ID0gMDsgcmV0dXJuIHgrKzsgfQotICAgICAg
ICBpbnQgZm9vMigpIHsgaW50IHggPSAwOyB4Kys7IHJldHVybiB4OyB9Ci0gICAgICAgIGludCBm
b28zKCkgeyBpbnQgeCA9IDA7IHJldHVybiArK3g7IH0KLSAgICAgICAgaW50IGZvbzQoKSB7IGlu
dCB4ID0gMDsgKyt4OyByZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9vNSgpIHsgaW50IHggPSAw
OyByZXR1cm4geC0tOyB9Ci0gICAgICAgIGludCBmb282KCkgeyBpbnQgeCA9IDA7IHgtLTsgcmV0
dXJuIHg7IH0KLSAgICAgICAgaW50IGZvbzcoKSB7IGludCB4ID0gMDsgcmV0dXJuIC0teDsgfQot
ICAgICAgICBpbnQgZm9vOCgpIHsgaW50IHggPSAwOyAtLXg7IHJldHVybiB4OyB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMSIs
IFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzIiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28zIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzUiLCBbXSksIDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCAt
MSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
bzciLCBbXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vOCIsIFtdKSwgLTEpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZGJiNzM0MGFhYzRmZGIxZGFkMmVlMjI0NWQ1NWIwYWVhMTllMjJlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbmNyZW1lbnQtc2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIGluY3JlbWVudFNldHRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2luY3JlbWVudC1zZXR0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjk0MTQ0ZTNjM2U2OTY3YTcyYzZkZmZlYTAwYjUwMDUzYTY2NjYwMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW5jcmVtZW50LXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmluY3JlbWVudFNldHRlciA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28g
ewotICAgICAgICAgICAgaW50IHo7Ci0gICAgICAgICAgICBpbnQgdzsKLSAgICAgICAgfQotICAg
ICAgICBpbnQgYmFyKCkgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby56
ID0gMzsKLSAgICAgICAgICAgIGZvby53ID0gMTsKLSAgICAgICAgICAgIGludCB2YWx1ZSA9IGZv
by53Kys7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUqMTAwICsgZm9vLnoqMTAgKyBmb28udzsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMTAwICsgMzAgKyAyKTsKLX0KLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWY1MGU5NDI5MTU5OTY4ZGVlZDE0N2FmNzg3OTQ1N2MyY2Uz
MDM5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwb2ludGVySW5kZXhHZXR0ZXIKLVBB
U1MgcG9pbnRlckdldHRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aW5kZXgtZ2V0dGVyLXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4
LWdldHRlci1zZXR0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNmMjdh
MzNlYjdjNjIyMjBlODk4ZTI2YTFiMWU1YjllOTJmMWI0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgt
Z2V0dGVyLXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3Mu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucG9pbnRlckluZGV4R2V0
dGVyID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yW10oZGV2aWNlIGludCosIHVpbnQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7
Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvcltdKHRocmVhZCBpbnQqLCB1aW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWRncm91
cCBpbnQqLCB1aW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShjb25zdGFudCBpbnQqLCB1aW50KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnBvaW50ZXJHZXR0ZXIgPSBhc3luYyAoKSA9
PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3IuZm9vKGRldmljZSBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWQgaW50KikK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGludCBvcGVyYXRvci5mb28odGhyZWFkZ3JvdXAgaW50KikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5m
b28oY29uc3RhbnQgaW50KikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
NTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2ludC1iaXQtbWF0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWQ2ZWYwN2E3YWMzMGQxNWIyMzYyODEyMzQ5NmJmZjc4MGU2YTcxNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBA
QAotCi1QQVNTIGludEJpdEFuZAotUEFTUyBpbnRCaXRPcgotUEFTUyBpbnRCaXRYb3IKLVBBU1Mg
aW50Qml0Tm90Ci1QQVNTIGludExTaGlmdAotUEFTUyBpbnRSU2hpZnQKLVBBU1MgaW50U2ltcGxl
TWF0aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRo
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNzA1Y2M3NTU5ODYxYmUzZjAzNTI4NzFhMzA1MTRh
YTQxNzIwNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
aW50Qml0QW5kID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICYg
YjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDEpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDQyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03
KV0pLCAtNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCAwKTsKLX0KLQotd2hsc2xU
ZXN0cy5pbnRCaXRPciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGludCBmb28oaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSB8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUludCg3KV0pLCA3KTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTUzNSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKSwgbWFr
ZUludCgtNyldKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgwKSwgbWFrZUludCg4NTczMildKSwgODU3MzIpOwot
fQotCi13aGxzbFRlc3RzLmludEJpdFhvciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUlu
dCg3KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTQ5Myk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KC0xKSwgbWFrZUludCgtNyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0p
LCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0Tm90ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIH5hOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgLTIp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCg2NTUzNSldKSwgLTY1NTM2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpXSksIDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgwKV0pLCAtMSk7Ci19Ci0KLXdobHNsVGVzdHMuaW50TFNoaWZ0ID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgdWludCBiKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA8PCBiOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMSksIG1ha2VVaW50KDcpXSksIDEyOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVpbnQo
MildKSwgMjYyMTQwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMzIpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgwKSwgbWFrZVVpbnQoMyldKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMuaW50UlNoaWZ0ID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwg
dWludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA+PiBiOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoMSksIG1ha2VVaW50KDcpXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSks
IG1ha2VVaW50KDIpXSksIDE2MzgzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRTaW1w
bGVNYXRoID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImludCBmb28oaW50IHgs
IGludCB5KSB7IHJldHVybiB4ICsgeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDEy
KTsKLSAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4IC0geTsg
fSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KSwgbWFrZUludCg3
KV0pLCAtMik7Ci0gICAgcHJvZ3JhbSA9ICJpbnQgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4g
eCAqIHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg1KV0pLCAzNSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBt
YWtlSW50KC01KV0pLCAtMzUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRl
cmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1s
aXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmZmZjODc5MDZlMWEyMThkMmM4Y2RhYjFkMmZmYzlkMDRiOWI4NWQ0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pbnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIHR3b0ludExpdGVyYWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjYTY4YmM4YTRjMjhlMDMwZmU1YzRjNGYyZjdkNThhZGI5OWYzMzIyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNM
IHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy50d29JbnRMaXRlcmFscyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNDIgPT0g
NDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvanMv
dGVzdC1oYXJuZXNzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDU2Yzk2ODI0
MDk5NjY3ODVhYjAxOTkxZTJjNGViOGNkYzY1ZmFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhh
cm5lc3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NDUgKzAsMCBAQAotLyogVHlwZSBVdGlsdGll
cyAqLwotCi0vLyBGSVhNRTogU3VwcG9ydCBhbGwgV0hMU0wgc2NhbGFyIGFuZCB2ZWN0b3IgdHlw
ZXMuCi0vLyBGSVhNRTogU3VwcG9ydCB0ZXh0dXJlcyBhbmQgc2FtcGxlcnMuCi1jb25zdCBUeXBl
cyA9IE9iamVjdC5mcmVlemUoewotICAgIEJPT0w6IFN5bWJvbCgiYm9vbCIpLAotICAgIElOVDog
U3ltYm9sKCJpbnQiKSwKLSAgICBVQ0hBUjogU3ltYm9sKCJ1Y2hhciIpLAotICAgIFVJTlQ6IFN5
bWJvbCgidWludCIpLAotICAgIEZMT0FUOiBTeW1ib2woImZsb2F0IiksCi0gICAgRkxPQVQ0OiBT
eW1ib2woImZsb2F0NCIpLAotICAgIEZMT0FUNFg0OiBTeW1ib2woImZsb2F0NHg0IiksCi0gICAg
TUFYX1NJWkU6IDY0IC8vIFRoaXMgbmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFueSBz
aW5ndWxhciBXSExTTCB0eXBlLgotfSk7Ci0KLWZ1bmN0aW9uIGlzU2NhbGFyKHR5cGUpCi17Ci0g
ICAgc3dpdGNoKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAgICAgIGNh
c2UgVHlwZXMuRkxPQVQ0WDQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNv
bnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkKLXsKLSAgICBzd2l0Y2godHlwZSkgewotICAgICAg
ICBjYXNlIFR5cGVzLkJPT0w6Ci0gICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheTsKLSAgICAg
ICAgY2FzZSBUeXBlcy5JTlQ6Ci0gICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheTsKLSAgICAg
ICAgY2FzZSBUeXBlcy5VQ0hBUjoKLSAgICAgICAgICAgIHJldHVybiBVaW50OEFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVzLlVJTlQ6Ci0gICAgICAgICAgICByZXR1cm4gVWludDMyQXJyYXk7Ci0g
ICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ6Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0OgotICAg
ICAgICBjYXNlIFR5cGVzLkZMT0FUNFg0OgotICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxp
ZCBUWVBFIHByb3ZpZGVkISIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udmVydFR5cGVUb1dI
TFNMVHlwZSh0eXBlKQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZXMu
Qk9PTDoKLSAgICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuSU5U
OgotICAgICAgICAgICAgcmV0dXJuICJpbnQiOwotICAgICAgICBjYXNlIFR5cGVzLlVDSEFSOgot
ICAgICAgICAgICAgcmV0dXJuICJ1Y2hhciI7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUlOVDoKLSAg
ICAgICAgICAgIHJldHVybiAidWludCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ6Ci0gICAg
ICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAg
ICAgICAgICByZXR1cm4gImZsb2F0NCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0WDQ6Ci0g
ICAgICAgICAgICByZXR1cm4gImZsb2F0NHg0IjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBUWVBFIHByb3ZpZGVkISIpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gd2hsc2xBcmd1bWVudFR5cGUodHlwZSkKLXsKLSAgICBpZiAodHlwZSA9PT0g
VHlwZXMuQk9PTCkKLSAgICAgICAgcmV0dXJuICJpbnQiOwotICAgIHJldHVybiBjb252ZXJ0VHlw
ZVRvV0hMU0xUeXBlKHR5cGUpOwotfQotCi1mdW5jdGlvbiBjb252ZXJ0VG9XSExTTE91dHB1dFR5
cGUoY29kZSwgdHlwZSkKLXsKLSAgICBpZiAodHlwZSAhPT0gVHlwZXMuQk9PTCkKLSAgICAgICAg
cmV0dXJuIGNvZGU7Ci0gICAgcmV0dXJuIGBpbnQoJHtjb2RlfSlgOwotfQotCi1mdW5jdGlvbiBj
b252ZXJ0VG9XSExTTElucHV0VHlwZShjb2RlLCB0eXBlKQotewotICAgIGlmICh0eXBlICE9PSBU
eXBlcy5CT09MKQotICAgICAgICByZXR1cm4gY29kZTsKLSAgICByZXR1cm4gYGJvb2woJHtjb2Rl
fSlgOwotfQotCi0vKiBIYXJuZXNzIENsYXNzZXMgKi8KLQotY2xhc3MgV2ViR1BVVW5zdXBwb3J0
ZWRFcnJvciBleHRlbmRzIEVycm9yIHsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAg
ICBzdXBlcigiTm8gR1BVRGV2aWNlIGRldGVjdGVkISIpOwotICAgIH0KLX07Ci0KLWNsYXNzIERh
dGEgewotICAgIC8qKgotICAgICAqIFVwbG9hZCB0eXBlZCBkYXRhIHRvIGFuZCByZXR1cm4gYSB3
cmFwcGVyIG9mIGEgR1BVQnVmZmVyLgotICAgICAqIEBwYXJhbSB7VHlwZXN9IHR5cGUgLSBUaGUg
V0hMU0wgdHlwZSB0byBiZSBzdG9yZWQgaW4gdGhpcyBEYXRhLgotICAgICAqIEBwYXJhbSB7TnVt
YmVyIG9yIEFycmF5W051bWJlcl19IHZhbHVlcyAtIFRoZSByYXcgZGF0YSB0byBiZSB1cGxvYWRl
ZC4KLSAgICAgKi8KLSAgICBjb25zdHJ1Y3RvcihoYXJuZXNzLCB0eXBlLCB2YWx1ZXMsIGlzQnVm
ZmVyID0gZmFsc2UpCi0gICAgewotICAgICAgICBpZiAoaGFybmVzcy5kZXZpY2UgPT09IHVuZGVm
aW5lZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gT25lIG9yIG1vcmUgc2NhbGFy
cyBpbiBhbiBhcnJheSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBhbiBhcnJheSByZWZlcmVuY2Uu
Ci0gICAgICAgIC8vIEhvd2V2ZXIsIHZlY3RvciB0eXBlcyBhcmUgYWxzbyBjcmVhdGVkIHZpYSBh
biBhcnJheSBvZiBzY2FsYXJzLgotICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBidWZmZXJz
IG9mIGp1c3Qgb25lIHZlY3RvciBhcmUgdXNhYmxlIGluIGEgdGVzdCBmdW5jdGlvbi4KLSAgICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkKLSAgICAgICAgICAgIHRoaXMuX2lzQnVmZmVy
ID0gaXNTY2FsYXIodHlwZSkgPyB0cnVlIDogaXNCdWZmZXI7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgdGhpcy5faXNCdWZmZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIHZhbHVlcyA9IFt2
YWx1ZXNdOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgICAg
IHRoaXMuX2J5dGVMZW5ndGggPSAoY29udmVydFR5cGVUb0FycmF5VHlwZSh0eXBlKSkuQllURVNf
UEVSX0VMRU1FTlQgKiB2YWx1ZXMubGVuZ3RoOwotCi0gICAgICAgIGNvbnN0IFtidWZmZXIsIGFy
cmF5QnVmZmVyXSA9IGhhcm5lc3MuZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7Ci0gICAgICAg
ICAgICBzaXplOiB0aGlzLl9ieXRlTGVuZ3RoLAotICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgICAgICB9KTsKLQot
ICAgICAgICBjb25zdCB0eXBlZEFycmF5ID0gbmV3IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5
cGUpKShhcnJheUJ1ZmZlcik7Ci0gICAgICAgIHR5cGVkQXJyYXkuc2V0KHZhbHVlcyk7Ci0gICAg
ICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjsKLSAg
ICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJucyBBbiBBcnJheUJ1ZmZlciBjb250YWluaW5n
IHRoZSBjb250ZW50cyBvZiB0aGlzIERhdGEuCi0gICAgICovCi0gICAgYXN5bmMgZ2V0QXJyYXlC
dWZmZXIoKQotICAgIHsKLSAgICAgICAgaWYgKGhhcm5lc3MuZGV2aWNlID09PSB1bmRlZmluZWQp
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcigpOwotCi0gICAg
ICAgIGxldCByZXN1bHQ7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhd2Fp
dCB0aGlzLl9idWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgICAgICB0aGlzLl9idWZmZXIu
dW5tYXAoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkRhdGEgZXJyb3I6IFVuYWJsZSB0byBnZXQgQXJyYXlCdWZmZXIhIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRo
aXMuX3R5cGU7IH0KLSAgICBnZXQgaXNCdWZmZXIoKSB7IHJldHVybiB0aGlzLl9pc0J1ZmZlcjsg
fQotICAgIGdldCBidWZmZXIoKSB7IHJldHVybiB0aGlzLl9idWZmZXI7IH0KLSAgICBnZXQgYnl0
ZUxlbmd0aCgpIHsgcmV0dXJuIHRoaXMuX2J5dGVMZW5ndGg7IH0KLX0KLQotY2xhc3MgSGFybmVz
cyB7Ci0gICAgY29uc3RydWN0b3IgKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IGZh
bHNlOwotICAgIH0KLQotICAgIGFzeW5jIHJlcXVlc3REZXZpY2UoKQotICAgIHsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJl
cXVlc3RBZGFwdGVyKCk7Ci0gICAgICAgICAgICB0aGlzLl9kZXZpY2UgPSBhd2FpdCBhZGFwdGVy
LnJlcXVlc3REZXZpY2UoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICAvLyBXZWJH
UFUgaXMgbm90IHN1cHBvcnRlZC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgR1BVQWRhcHRlclJlcXVlc3RPcHRpb25zIGFuZCBHUFVEZXZpY2VEZXNjcmlwdG9yLAotICAg
ICAgICAgICAgLy8gYW5kIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBkZXNjcmlwdG9yIHZhbGlkYXRp
b24gZXJyb3JzIGFuZCBubyBXZWJHUFUgc3VwcG9ydC4KLSAgICAgICAgfSBmaW5hbGx5IHsKLSAg
ICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
KioKLSAgICAgKiBSZXR1cm4gdGhlIHJldHVybiB2YWx1ZSBvZiBhIFdITFNMIGZ1bmN0aW9uLgot
ICAgICAqIEBwYXJhbSB7VHlwZXN9IHR5cGUgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIFdITFNM
IGZ1bmN0aW9uLgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmdW5jdGlvbnMgLSBDdXN0b20gV0hM
U0wgY29kZSB0byBiZSB0ZXN0ZWQuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUg
bmFtZSBvZiB0aGUgV0hMU0wgZnVuY3Rpb24gd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluICdmdW5j
dGlvbnMnLgotICAgICAqIEBwYXJhbSB7RGF0YSBvciBBcnJheVtEYXRhXX0gYXJncyAtIERhdGEg
YXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgY2FsbCBvZiAnbmFtZScuCi0gICAgICogQHJl
dHVybnMge1R5cGVkQXJyYXl9IC0gQSB0eXBlZCBhcnJheSBjb250YWluaW5nIHRoZSByZXR1cm4g
dmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gICAgICovCi0gICAgYXN5bmMgY2FsbFR5cGVk
RnVuY3Rpb24odHlwZSwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotICAgIHsgICAKLSAgICAgICAg
aWYgKCF0aGlzLl9sb2FkZWQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdQVSBkZXZp
Y2Ugbm90IGxvYWRlZC4iKTsKLQotICAgICAgICBpZiAodGhpcy5fZGV2aWNlID09PSB1bmRlZmlu
ZWQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcigpOwotCi0g
ICAgICAgIGNvbnN0IFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNs
YXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBBcmd1bWVudHMoYXJncyk7
Ci0KLSAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdEJ1ZmZlcikgewotICAgICAgICAgICAgdGhpcy5f
Y2xlYXJSZXN1bHRzKCkKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3Jlc3Vs
dEJ1ZmZlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IAotICAgICAgICAgICAgICAgIHNp
emU6IFR5cGVzLk1BWF9TSVpFLCAKLSAgICAgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuQ09Q
WV9EU1QKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgYXJnc0xheW91dHMu
dW5zaGlmdCh7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0
eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1
ZmZlciIKLSAgICAgICAgfSk7Ci0gICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRpbmdzLnVuc2hpZnQo
ewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAg
ICAgICAgICAgICAgYnVmZmVyOiB0aGlzLl9yZXN1bHRCdWZmZXIsCi0gICAgICAgICAgICAgICAg
c2l6ZTogVHlwZXMuTUFYX1NJWkUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgbGV0IGVudHJ5UG9pbnRDb2RlOwotICAgICAgICBhcmdzRGVjbGFyYXRpb25zLnVuc2hpZnQo
YGRldmljZSAke3dobHNsQXJndW1lbnRUeXBlKHR5cGUpfVtdIHJlc3VsdCA6IHJlZ2lzdGVyKHUw
KWApOwotICAgICAgICBsZXQgY2FsbENvZGUgPSBgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Mu
am9pbigiLCAiKX0pYDsKLSAgICAgICAgY2FsbENvZGUgPSBjb252ZXJ0VG9XSExTTE91dHB1dFR5
cGUoY2FsbENvZGUsIHR5cGUpOwotICAgICAgICBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJl
YWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4oJHthcmdzRGVjbGFyYXRp
b25zLmpvaW4oIiwgIil9KQotewotICAgIHJlc3VsdFswXSA9ICR7Y2FsbENvZGV9OwotfQotYDsK
LSAgICAgICAgY29uc3QgY29kZSA9IGZ1bmN0aW9ucyArIGVudHJ5UG9pbnRDb2RlOwotICAgICAg
ICBhd2FpdCB0aGlzLl9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJj
ZUJpbmRpbmdzKTsKLSAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZhciByZXN1bHQg
PSBhd2FpdCB0aGlzLl9yZXN1bHRCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgIH0gY2F0
Y2ggewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJIYXJuZXNzIGVycm9yOiBVbmFibGUg
dG8gcmVhZCByZXN1bHRzISIpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3
IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKShyZXN1bHQpOwotICAgICAgICB0aGlzLl9y
ZXN1bHRCdWZmZXIudW5tYXAoKTsKLQotICAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQotCi0g
ICAgLyoqCi0gICAgICogQ2FsbCBhIFdITFNMIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgdmFsdWUg
b2YgYXJndW1lbnQoYnVmZmVyKXMuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IGZ1bmN0aW9ucyAt
IEN1c3RvbSBXSExTTCBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30g
bmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5jdGlvbiB3aGljaCBtdXN0IGJlIHByZXNl
bnQgaW4gJ2Z1bmN0aW9ucycuCi0gICAgICogQHBhcmFtIHtEYXRhIG9yIEFycmF5W0RhdGFdfSBh
cmdzIC0gRGF0YSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4K
LSAgICAgKi8KLSAgICBjYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBjb25zdCBbYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJjZUJpbmRp
bmdzLCBhcmdzRGVjbGFyYXRpb25zLCBmdW5jdGlvbkNhbGxBcmdzXSA9IHRoaXMuX3NldFVwQXJn
dW1lbnRzKGFyZ3MpOwotCi0gICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJl
YWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4oJHthcmdzRGVjbGFyYXRp
b25zLmpvaW4oIiwgIil9KQotewotICAgICR7bmFtZX0oJHtmdW5jdGlvbkNhbGxBcmdzLmpvaW4o
IiwgIil9KTsKLX1gOwotICAgICAgICBjb25zdCBjb2RlID0gZnVuY3Rpb25zICsgZW50cnlQb2lu
dENvZGU7Ci0gICAgICAgIHRoaXMuX2NhbGxGdW5jdGlvbihjb2RlLCBhcmdzTGF5b3V0cywgYXJn
c1Jlc291cmNlQmluZGluZ3MpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFzc2VydCB0aGF0
IG1hbGZvcm1lZCBzaGFkZXIgY29kZSBkb2VzIG5vdCBjb21waWxlLgotICAgICAqIEBwYXJhbSB7
U3RyaW5nfSBzb3VyY2UgLSBDdXN0b20gY29kZSB0byBiZSB0ZXN0ZWQuCi0gICAgICovCi0gICAg
YXN5bmMgY2hlY2tDb21waWxlRmFpbChzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMu
X2xvYWRlZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRldmljZSBub3QgbG9h
ZGVkLiIpOwotCi0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0gICAgICAgIAotICAg
ICAgICBsZXQgZW50cnlQb2ludENvZGUgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1
dGUgdm9pZCBfY29tcHV0ZV9tYWluKCkgeyB9YDsKLQotICAgICAgICBjb25zdCBjb2RlID0gc291
cmNlICsgZW50cnlQb2ludENvZGU7Ci0KLSAgICAgICAgdGhpcy5fZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBzaGFkZXJzID0gdGhp
cy5fZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGNvZGUgfSk7Ci0gICAgCi0gICAg
ICAgIHRoaXMuX2RldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICAgICAgY29t
cHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJzLAotICAgICAgICAg
ICAgICAgIGVudHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAgICAgICAgICAgfQotICAgICAg
ICB9KTsKLQotICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRoaXMuX2RldmljZS5wb3BFcnJv
clNjb3BlKCk7Ci0gICAgICAgIGlmICghZXJyb3IpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkNvbXBpbGVyIGVycm9yOiBzaGFkZXIgY29kZSBkaWQgbm90IGZhaWwgdG8gY29tcGlsZSEi
KTsKLSAgICB9Ci0KLSAgICBnZXQgZGV2aWNlKCkgeyByZXR1cm4gdGhpcy5fZGV2aWNlOyB9Ci0K
LSAgICBfY2xlYXJSZXN1bHRzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2xlYXJCdWZm
ZXIpIHsKLSAgICAgICAgICAgIHRoaXMuX2NsZWFyQnVmZmVyID0gdGhpcy5fZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih7IAotICAgICAgICAgICAgICAgIHNpemU6IFR5cGVzLk1BWF9TSVpFLCAKLSAgICAg
ICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5fZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZm
ZXJUb0J1ZmZlcih0aGlzLl9jbGVhckJ1ZmZlciwgMCwgdGhpcy5fcmVzdWx0QnVmZmVyLCAwLCBU
eXBlcy5NQVhfU0laRSk7Ci0gICAgICAgIHRoaXMuX2RldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB9Ci0KLSAgICBfc2V0VXBBcmd1bWVudHMo
YXJncykKLSAgICB7Ci0gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgewotICAgICAg
ICAgICAgaWYgKGFyZ3MgaW5zdGFuY2VvZiBEYXRhKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBb
YXJnc107Ci0gICAgICAgICAgICBlbHNlIGlmICghYXJncykKLSAgICAgICAgICAgICAgICBhcmdz
ID0gW107Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFeHBhbmQgYmluZCBncm91cCBzdHJ1Y3R1
cmUgdG8gcmVwcmVzZW50IGFueSBhcmd1bWVudHMuCi0gICAgICAgIGxldCBhcmdzRGVjbGFyYXRp
b25zID0gW107Ci0gICAgICAgIGxldCBmdW5jdGlvbkNhbGxBcmdzID0gW107Ci0gICAgICAgIGxl
dCBhcmdzTGF5b3V0cyA9IFtdOwotICAgICAgICBsZXQgYXJnc1Jlc291cmNlQmluZGluZ3MgPSBb
XTsKLQotICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBhcmdzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBhcmcgPSBhcmdzW2kgLSAxXTsKLSAgICAgICAgICAgIGFyZ3NEZWNs
YXJhdGlvbnMucHVzaChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUoYXJnLnR5cGUpfVtdIGFy
ZyR7aX0gOiByZWdpc3Rlcih1JHtpfSlgKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbEFyZ3Mu
cHVzaChjb252ZXJ0VG9XSExTTElucHV0VHlwZShgYXJnJHtpfWAgKyAoYXJnLmlzQnVmZmVyID8g
IiIgOiAiWzBdIiksIGFyZy50eXBlKSk7Ci0gICAgICAgICAgICBhcmdzTGF5b3V0cy5wdXNoKHsK
LSAgICAgICAgICAgICAgICBiaW5kaW5nOiBpLAotICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6
IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICAgICAgdHlwZTogInN0b3JhZ2Ut
YnVmZmVyIgotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBhcmdzUmVzb3VyY2VCaW5kaW5n
cy5wdXNoKHsKLSAgICAgICAgICAgICAgICBiaW5kaW5nOiBpLAotICAgICAgICAgICAgICAgIHJl
c291cmNlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogYXJnLmJ1ZmZlciwKLSAgICAg
ICAgICAgICAgICAgICAgc2l6ZTogYXJnLmJ5dGVMZW5ndGgKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBbYXJnc0xheW91dHMs
IGFyZ3NSZXNvdXJjZUJpbmRpbmdzLCBhcmdzRGVjbGFyYXRpb25zLCBmdW5jdGlvbkNhbGxBcmdz
XTsKLSAgICB9Ci0KLSAgICBhc3luYyBfY2FsbEZ1bmN0aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBh
cmdzUmVzb3VyY2VCaW5kaW5ncykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IHRoaXMuX2RldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICAgICAgYmlu
ZGluZ3M6IGFyZ3NMYXlvdXRzCi0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICAgICAgY29uc3QgYmluZEdyb3VwID0g
dGhpcy5fZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgICAgICBsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwKLSAgICAgICAgICAgIGJpbmRpbmdzOiBhcmdzUmVzb3VyY2VCaW5kaW5ncwot
ICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLl9kZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlk
YXRpb24iKTsKLQotICAgICAgICBjb25zdCBzaGFkZXJzID0gdGhpcy5fZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7IGNvZGU6IGNvZGUgfSk7Ci0gICAgCi0gICAgICAgIGNvbnN0IHBpcGVsaW5l
ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgICAgICBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAg
ICAgICAgICAgbW9kdWxlOiBzaGFkZXJzLAotICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJf
Y29tcHV0ZV9tYWluIgotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IHRoaXMuX2RldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwot
ICAgICAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBh
c3MoKTsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICAgICAgcGFzc0Vu
Y29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICAgICAgCi0gICAgICAgIHRoaXMuX2RldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFu
ZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRoaXMu
X2RldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTsKLSAgICB9Ci19Ci0KLS8qIEhhcm5lc3Mg
U2V0dXAgKi8KLQotY29uc3QgaGFybmVzcyA9IG5ldyBIYXJuZXNzKCk7Ci1oYXJuZXNzLnJlcXVl
c3REZXZpY2UoKTsKLQotLyogR2xvYmFsIEhlbHBlciBGdW5jdGlvbnMgKi8KLQotLyoqCi0gKiBU
aGUgbWFrZV9fXyBmdW5jdGlvbnMgYXJlIHdyYXBwZXJzIGFyb3VuZCB0aGUgRGF0YSBjb25zdHJ1
Y3Rvci4KLSAqIFZhbHVlcyBwYXNzZWQgaW4gYXMgYW4gYXJyYXkgd2lsbCBiZSBwYXNzZWQgaW4g
dmlhIGEgZGV2aWNlLWFkZHJlc3NlZCBwb2ludGVyIHR5cGUgaW4gdGhlIHNoYWRlci4KLSAqIEBw
YXJhbSB7Qm9vbGVhbiwgTnVtYmVyLCBvciBBcnJheX0gdmFsdWVzIC0gVGhlIGRhdGEgdG8gYmUg
c3RvcmVkIG9uIHRoZSBHUFUuCi0gKiBAcmV0dXJucyBBIG5ldyBEYXRhIG9iamVjdCB3aXRoIHN0
b3JhZ2UgYWxsb2NhdGVkIHRvIHN0b3JlIHZhbHVlcy4KLSAqLwotZnVuY3Rpb24gbWFrZUJvb2wo
dmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5CT09MLCB2YWx1
ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlSW50KHZhbHVlcykKLXsKLSAgICByZXR1cm4gbmV3IERh
dGEoaGFybmVzcywgVHlwZXMuSU5ULCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlVWNoYXIo
dmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5VQ0hBUiwgdmFs
dWVzKTsKLX0KLQotZnVuY3Rpb24gbWFrZVVpbnQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcg
RGF0YShoYXJuZXNzLCBUeXBlcy5VSU5ULCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlRmxv
YXQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5GTE9BVCwg
dmFsdWVzKTsKLX0KLQotLyoqCi0gKiBAcGFyYW0ge0FycmF5IG9yIEFycmF5W0FycmF5XX0gdmFs
dWVzIC0gMUQgb3IgMkQgYXJyYXkgb2YgZmxvYXQgdmFsdWVzLgotICogVGhlIHRvdGFsIG51bWJl
ciBvZiBmbG9hdCB2YWx1ZXMgbXVzdCBiZSBkaXZpc2libGUgYnkgNC4KLSAqIEEgc2luZ2xlIDQt
ZWxlbWVudCBhcnJheSBvZiBmbG9hdHMgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIGZsb2F0
NCBhcmd1bWVudCBpbiB0aGUgc2hhZGVyLgotICovCi1mdW5jdGlvbiBtYWtlRmxvYXQ0KHZhbHVl
cykKLXsKLSAgICBjb25zdCByZXN1bHRzID0gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIDQpOwotICAg
IHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5GTE9BVDQsIHJlc3VsdHMudmFsdWVzLCBy
ZXN1bHRzLmlzQnVmZmVyKTsKLX0KLQotLyoqCi0gKiBAcGFyYW0ge0FycmF5IG9yIEFycmF5W0Fy
cmF5XX0gdmFsdWVzIC0gMUQgb3IgMkQgYXJyYXkgb2YgZmxvYXQgdmFsdWVzLgotICogVGhlIHRv
dGFsIG51bWJlciBvZiBmbG9hdCB2YWx1ZXMgbXVzdCBiZSBkaXZpc2libGUgYnkgMTYuCi0gKiBB
IHNpbmdsZSAxNi1lbGVtZW50IGFycmF5IG9mIGZsb2F0cyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBz
aW5nbGUgZmxvYXQ0eDQgYXJndW1lbnQgaW4gdGhlIHNoYWRlci4KLSAqIFRoaXMgc2hvdWxkIGZv
bGxvdyB0aGUgZ2xNYXRyaXgvT3BlbkdMIG1ldGhvZCBvZiBzdG9yaW5nIDR4NCBtYXRyaWNlcywK
LSAqIHdoZXJlIHRoZSB4LCB5LCB6IHRyYW5zbGF0aW9uIGNvbXBvbmVudHMgYXJlIHRoZSAxM3Ro
LCAxNHRoLCBhbmQgMTV0aCBlbGVtZW50cyByZXNwZWN0aXZlbHkuCi0gKi8KLWZ1bmN0aW9uIG1h
a2VGbG9hdDR4NCh2YWx1ZXMpCi17Ci0gICAgY29uc3QgcmVzdWx0cyA9IHByb2Nlc3NBcnJheXMo
dmFsdWVzLCAxNik7Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FUNFg0
LCByZXN1bHRzLnZhbHVlcywgcmVzdWx0cy5pc0J1ZmZlcik7Ci19Ci0KLWZ1bmN0aW9uIHByb2Nl
c3NBcnJheXModmFsdWVzLCBtaW5pbXVtTGVuZ3RoKQotewotICAgIGNvbnN0IG9yaWdpbmFsTGVu
Z3RoID0gdmFsdWVzLmxlbmd0aDsKLSAgICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgZmxvYXQ0IGlz
IHRpZ2h0bHkgcGFja2VkLgotICAgIC8vIFdoZW4gaW1wbGVtZW50aW5nIG90aGVyIHZlY3RvciB0
eXBlcywgYWRkIHBhZGRpbmcgaWYgbmVlZGVkLgotICAgIHZhbHVlcyA9IHZhbHVlcy5mbGF0KCk7
Ci0gICAgaWYgKHZhbHVlcy5sZW5ndGggJSBtaW5pbXVtTGVuZ3RoICE9IDApCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgZWxlbWVudHMgaW4gbm9uLXNjYWxhciB0
eXBlISIpOwotICAgIAotICAgIHJldHVybiB7IHZhbHVlczogdmFsdWVzLCBpc0J1ZmZlcjogb3Jp
Z2luYWxMZW5ndGggPT09IDEgfHwgdmFsdWVzLmxlbmd0aCA+IG1pbmltdW1MZW5ndGggfTsKLX0K
LQotLyoqCi0gKiBAcGFyYW0ge1N0cmluZ30gZnVuY3Rpb25zIC0gU2hhZGVyIHNvdXJjZSBjb2Rl
IHRoYXQgbXVzdCBjb250YWluIGEgZGVmaW5pdGlvbiBmb3IgJ25hbWUnLgotICogQHBhcmFtIHtT
dHJpbmd9IG5hbWUgLSBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gJ2Z1bmN0aW9ucycu
Ci0gKiBAcGFyYW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19IGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRv
IGJlIHBhc3NlZCB0byB0aGUgY2FsbCBvZiAnbmFtZScuCi0gKiBAcmV0dXJucyBBIFByb21pc2Ug
dGhhdCByZXNvbHZlcyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgY2FsbCB0byAnbmFtZScgd2l0
aCAnYXJncycuCi0gKi8KLWFzeW5jIGZ1bmN0aW9uIGNhbGxCb29sRnVuY3Rpb24oZnVuY3Rpb25z
LCBuYW1lLCBhcmdzKQotewotICAgIHJldHVybiAhIShhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1
bmN0aW9uKFR5cGVzLkJPT0wsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3lu
YyBmdW5jdGlvbiBjYWxsSW50RnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAg
IHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihUeXBlcy5JTlQsIGZ1bmN0
aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsVWNoYXJGdW5j
dGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNz
LmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLlVDSEFSLCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKVsw
XTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbFVpbnRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUs
IGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5
cGVzLlVJTlQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlv
biBjYWxsRmxvYXRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJu
IChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FULCBmdW5jdGlvbnMs
IG5hbWUsIGFyZ3MpKVswXTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NEZ1bmN0aW9u
KGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2Fs
bFR5cGVkRnVuY3Rpb24oVHlwZXMuRkxPQVQ0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJh
cnJheSgwLCA0KTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NHg0RnVuY3Rpb24oZnVu
Y3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlw
ZWRGdW5jdGlvbihUeXBlcy5GTE9BVDRYNCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSkuc3ViYXJy
YXkoMCwgMTYpOwotfQotCi1hc3luYyBmdW5jdGlvbiBjaGVja0ZhaWwoc291cmNlKSAKLXsKLSAg
ICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2hlY2tDb21waWxlRmFpbChzb3VyY2UpKTsKLX0KLQot
LyoqCi0gKiBEb2VzIG5vdCByZXR1cm4gYSBQcm9taXNlLiBUbyBvYnNlcnZlIHRoZSByZXN1bHRz
IG9mIGEgY2FsbCwgCi0gKiBjYWxsICdnZXRBcnJheUJ1ZmZlcicgb24gdGhlIERhdGEgb2JqZWN0
IHJldGFpbmluZyB5b3VyIG91dHB1dCBidWZmZXIuCi0gKi8KLWZ1bmN0aW9uIGNhbGxWb2lkRnVu
Y3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIGhhcm5lc3MuY2FsbFZvaWRGdW5j
dGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpOwotfQotCi1jb25zdCB3ZWJHUFVQcm9taXNlVGVz
dCA9ICh0ZXN0RnVuYywgbXNnKSA9PiB7Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsg
Ci0gICAgICAgIHJldHVybiB0ZXN0RnVuYygpLmNhdGNoKGUgPT4gewotICAgICAgICBpZiAoIShl
IGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyBl
OwotICAgICAgICB9KTsKLSAgICB9LCBtc2cpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0cyhvYmop
IHsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAg
ICAgICAgYXdhaXQgaGFybmVzcy5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFu
YW1lLnN0YXJ0c1dpdGgoIl8iKSkgCi0gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdlYkdQVVBy
b21pc2VUZXN0KG9ialtuYW1lXSwgbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
dGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY3NjI4NmYzNDIwNmZhM2Y0NTcxYzljOWI5MzU2NjJlNWNhM2JlZGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0KLVBBU1MgdmVjdG9ySW5kZXhBc3NpZ24KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQwNDc0NDQzZDBjMjFiMDdiNTdhODgyYzBjOWEzZjAzZWI0MTg5ODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2xlbmd0aC1zdGRsaWIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+TGVuZ3RoLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJ
bmRleEFzc2lnbiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBmbG9hdCBmb28oZmxvYXQgYSwgZmxvYXQgYikgewotICAgICAgICAgICAgZmxvYXQyIHg7Ci0g
ICAgICAgICAgICB4WzBdID0gYTsKLSAgICAgICAgICAgIHhbMV0gPSBiOwotICAgICAgICAgICAg
cmV0dXJuIGxlbmd0aCh4KTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBjb25zdCBkYXRhID0g
WwotICAgICAgICBbTmFOLCAxMF0sCi0gICAgICAgIFsxMCwgTmFOXSwKLSAgICAgICAgWzIwLCAx
MF0sCi0gICAgICAgIFswLCAwXSwKLSAgICBdOwotCi0gICAgZm9yIChjb25zdCBbeCwgeV0gb2Yg
ZGF0YSkgewotICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFttYWtlRmxvYXQoeCksIG1ha2VGbG9hdCh5KV0pOwotICAgICAgICBp
ZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHsKLSAgICAgICAgICAgIGlmICghaXNOYU4ocmVzdWx0
KSkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJlc3VsdCBzaG91bGQgYmUgTmFO
LiIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJl
c3VsdCwgTWF0aC5zcXJ0KHgqeCArIHkqeSksIGVwc2lsb24pOwotICAgIH0KLX07Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sZXhpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNTAyYWZjZGNhYjBhYWMxNDBjMDI2ZGIxMWE5ODRhYzFhODgxMmEyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sZXhpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBB
U1MgbGV4aW5nS2V5d29yZExpa2VJZGVudGlmaWVycwotUEFTUyBrZXl3b3Jkc0FzSWRlbnRpZmll
cnMKLVBBU1MgY29tbWVudHMKLVBBU1Mgb3BlcmF0b3JOYW1lcwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbGV4aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMDNmOTAzN2Ji
OTk1ZjI5ZWM4NDFjYjRiZDk0MTllYzNiMzFmNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLWNvbnN0IGtleXdvcmRzID0gWwotICAgICJz
dHJ1Y3QiCi0gICAgLCAidHlwZWRlZiIKLSAgICAsICJlbnVtIgotICAgICwgIm9wZXJhdG9yIgot
ICAgICwgImlmIgotICAgICwgImVsc2UiCi0gICAgLCAiY29udGludWUiCi0gICAgLCAiYnJlYWsi
Ci0gICAgLCAic3dpdGNoIgotICAgICwgImNhc2UiCi0gICAgLCAiZGVmYXVsdCIKLSAgICAsICJm
YWxsdGhyb3VnaCIKLSAgICAsICJmb3IiCi0gICAgLCAid2hpbGUiCi0gICAgLCAiZG8iCi0gICAg
LCAicmV0dXJuIgotICAgICwgIm51bGwiCi0gICAgLCAidHJ1ZSIKLSAgICAsICJmYWxzZSIKLSAg
ICAsICJjb25zdGFudCIKLSAgICAsICJkZXZpY2UiCi0gICAgLCAidGhyZWFkZ3JvdXAiCi0gICAg
LCAidGhyZWFkIgotICAgICwgInNwYWNlIgotICAgICwgInZlcnRleCIKLSAgICAsICJmcmFnbWVu
dCIKLSAgICAsICJjb21wdXRlIgotICAgICwgIm51bXRocmVhZHMiCi0gICAgLCAiU1ZfSW5zdGFu
Y2VJRCIKLSAgICAsICJTVl9WZXJ0ZXhJRCIKLSAgICAsICJQU0laRSIKLSAgICAsICJTVl9Qb3Np
dGlvbiIKLSAgICAsICJTVl9Jc0Zyb250RmFjZSIKLSAgICAsICJTVl9TYW1wbGVJbmRleCIKLSAg
ICAsICJTVl9Jbm5lckNvdmVyYWdlIgotICAgICwgIlNWX1RhcmdldCIKLSAgICAsICJTVl9EZXB0
aCIKLSAgICAsICJTVl9Db3ZlcmFnZSIKLSAgICAsICJTVl9EaXNwYXRjaFRocmVhZElEIgotICAg
ICwgIlNWX0dyb3VwSUQiCi0gICAgLCAiU1ZfR3JvdXBJbmRleCIKLSAgICAsICJTVl9Hcm91cFRo
cmVhZElEIgotICAgICwgImF0dHJpYnV0ZSIKLSAgICAsICJyZWdpc3RlciIKLSAgICAsICJzcGVj
aWFsaXplZCIKLSAgICAsICJuYXRpdmUiCi0gICAgLCAicmVzdHJpY3RlZCIKLSAgICAsICJfIgot
ICAgICwgImF1dG8iCi0gICAgLCAicHJvdG9jb2wiCi0gICAgLCAiY29uc3QiCi0gICAgLCAic3Rh
dGljIgotICAgICwgIm5vaW50ZXJwb2xhdGlvbiIKLSAgICAsICJub3BlcnNwZWN0aXZlIgotICAg
ICwgInVuaWZvcm0iCi0gICAgLCAiY2VudHJvaWQiCi0gICAgLCAic2FtcGxlIgotXTsKLQotY29u
c3Qgc3VmZml4ZXMgPSBbImZvbyIsICIxMzM3IiwgIl9mb28iXTsKLQotd2hsc2xUZXN0cy5sZXhp
bmdLZXl3b3JkTGlrZUlkZW50aWZpZXJzID0gYXN5bmMgKCkgPT4gewotICAgIGZvciAoY29uc3Qg
a2V5d29yZCBvZiBrZXl3b3JkcykgewotICAgICAgICBmb3IgKGNvbnN0IHN1ZmZpeCBvZiBzdWZm
aXhlcykgewotICAgICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0ga2V5d29yZCArIHN1ZmZp
eDsKLSAgICAgICAgICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgICAgICAgICAgaW50IGZv
bygpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50ICR7dmFyaWFibGVOYW1lfSA9IDQyOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJHt2YXJpYWJsZU5hbWV9OwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGA7Ci0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCA0Mik7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLX07Ci0KLXdobHNsVGVzdHMua2V5d29yZHNBc0lkZW50aWZpZXJzID0gYXN5bmMgKCkgPT4g
ewotCi0gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7Ci0gICAgICAgIGNvbnN0
IHZhcmlhYmxlTmFtZSA9IGtleXdvcmQ7Ci0gICAgICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgICAgICBpbnQgJHt2YXJpYWJsZU5hbWV9
ID0gNDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGA7Ci0gICAgICAgIGF3YWl0IGNoZWNrRmFp
bChwcm9ncmFtKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmNvbW1lbnRzID0gYXN5bmMgKCkg
PT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIC8qCi0gICAgYCk7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgKi8KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICByZXR1cm4gNC8qKi8yOwotICAg
ICAgICB9Ci0gICAgYCk7Ci0KLX07Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JOYW1lcyA9IGFzeW5j
ICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4kKEZvbykgewotICAgICAgICAgICAgcmV0
dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAg
ICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4jKEZv
bykgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBvcGVyYXRvci5AKEZvbykgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAg
ICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9v
IHsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4qJShGb28pIHsKLSAgICAgICAg
ICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgaW50IG9wZXJhdG9yJiYoaW50IHgsIGludCB5KSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3J8fChpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAgIHJldHVy
biA0MjsKLSAgICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
aXRlcmFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGl0ZXJhbHMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDI1NmM1Y2I2NzM3
YzVlNzliM2Q0YzBmZmI4NjE2OTEwYWFlNDlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsaXRlcmFscwot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGl0ZXJhbHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwYTY0NjFiMmIzYWE3NjI2NzA0ZGU4ZWU3YjM3OGVjMGMwNmE5Y2VjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9saXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hs
c2xUZXN0cy5saXRlcmFscyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGEoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTEwOwotICAgICAg
ICB9Ci0gICAgICAgIGludCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDEwOwot
ICAgICAgICB9Ci0gICAgICAgIGludCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAuMTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIDEuOTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIC0uMTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBn
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0xLjk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaW50IGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMHhiNGRCMzNGOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBpKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0w
eGI0ZEIzM0Y7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAtMTApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiYiIsIFtdKSwgMTApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiYyIsIFtdKSwgMCk7
Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAgImQiLCBbXSksIDAuMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAxLjksIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZiIsIFtdKSwgLTAuMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJnIiwgW10pLCAtMS45LCBlcHNpbG9u
KTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAi
aCIsIFtdKSwgMHhiNGRCMzNGKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAgImkiLCBbXSksIC0weGI0ZEIzM0YpOwotfTsKLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWJhMzMxN2VlNzA0Y2ZmMmZiNjA0MmYzMjRmZjIyMTllNTIxYjg1Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsb2dpY2FsTmVnYXRpb24KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY0MDBiMDEwYWRhYjBjZjZhMDk4NzkyZjJmYzc2ZmY4NjI5OTg5YmEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIy
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+THZhbHVlcy48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sb2dpY2FsTmVnYXRpb24gPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1
cm4gIXg7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSld
KSwgdHJ1ZSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWstZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlm
NjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWsuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmMjY0M2NhMTU1OTNiNzMwNjc1ZGNlZGQyNzczY2QzYjE3MmZjNmY0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb29wcy1icmVhay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0K
LXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0
OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgKGkg
PSBpICsgMSwgc2hhZGUgPSBzaGFkZSArIDEuMCkpIHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gc2hhZGUgKyAxLjA7Ci0g
ICAgfQotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRl
ID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJh
Z21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVy
dGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFk
ZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hh
ZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3Qg
YXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVy
aXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0
LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
MC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAw
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJp
bmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRH
cm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3
YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5j
cmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzog
MCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVu
dDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFy
Iiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhT
dGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVy
UGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhC
dWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2
Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzVlMjEzOTgxMDllYjJmN2Y3MjY2ZTU1MWRmODQ2M2I2ZjczYjFmNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbG9vcHMtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1
dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3Vs
dDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMTA7IGkg
PSBpICsgMSkgewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQu
cG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBz
aGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChz
aGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZp
Y2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZy
YWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVu
dFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxs
TW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xv
cldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNv
bnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9m
ZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9y
bWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJp
YnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRy
aWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0g
MC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0g
ICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7
YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1Nx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbG9vcHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFh
NTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTg0ZDFkNTE4ODNiNGNhNjJm
NmM4OTc0NzgzMWZmMDE1YThkOWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLXNwZWMtdGVzdHMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgZG9XaGlsZQot
UEFTUyBzaW1wbGVXaGlsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bG9vcHMtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLXNw
ZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjNDkxOThmOGFh
YWMzZGNmNGMyMzlkODVkMmMwZjI5NjAyNzU5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10
ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLmRvV2hpbGUgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vMShpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
IHkgPSA3OwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAoeCA8IDEwKTsKLSAgICAgICAg
ICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28yKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDc7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdoaWxl
ICh5ID09IDcpOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50
IGZvbzMoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBzdW0gPSAwOwotICAgICAg
ICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICh4ID09IDExKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHggPSAxNTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIHg7Ci0gICAgICAgICAgICAgICAg
eCA9IHggKyAxOwotICAgICAgICAgICAgfSB3aGlsZSAoeCA8IDEzKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdW07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28xIiwgW21ha2VJbnQoMSldKSwgOCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEiLCBbbWFrZUlu
dCgxMSldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzIiLCBbbWFrZUludCgxKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFttYWtlSW50KDkpXSksIDE5KTsKLX0K
LQotd2hsc2xUZXN0cy5zaW1wbGVXaGlsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdo
aWxlICh4IDwgMTMpCi0gICAgICAgICAgICAgICAgeCA9IHggKiAyOwotICAgICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAxNik7Ci19Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b29wcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjMxZTViODFmOGE4NGQ0
OTExNjZkNzcwMDQxMjMzYjYzY2VjNWE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZl
cnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwg
MTA7IGkgPSBpICsgMSkgewotICAgICAgICBzaGFkZSA9IHNoYWRlICsgMC4xOwotICAgIH0KLQot
ICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRl
OwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAi
ZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0
aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0
ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlk
ZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lu
cHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsK
LQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7Ymlu
ZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4xOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Nl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5
WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVy
QmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5E
ZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3
YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9y
QXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0s
IFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFu
ZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjcwZmZkNGRlNjA3YjJhMDAzZWZjNzQ3
ZDI4ZmQ0OGI0MWM1YTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsb3RzT2ZM
b2NhbFZhcmlhYmxlcwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG90
cy1vZi1sb2NhbC12YXJpYWJsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3Rz
LW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NTc1NmYzOTI3MDc0NDQxYWM0YmMzYTdjZDg0ZTFiZDc5Njg4MWJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b3RzLW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Mb3RzIG9mIGxvY2FsIHZhcmlh
Ymxlcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sb3RzT2ZMb2Nh
bFZhcmlhYmxlcyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHNyYyA9ICJpbnQgc3VtKCkge1xu
IjsKLSAgICBzcmMgKz0gIiAgICBpbnQgaSA9IDA7XG4iOwotICAgIGxldCB0YXJnZXQgPSAwOwot
ICAgIGNvbnN0IG51bVZhcnMgPSA1MDsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVZhcnM7
IGkrKykgewotICAgICAgICBzcmMgKz0gYCAgIGkgPSAke2l9O1xuYDsKLSAgICAgICAgc3JjICs9
IGAgICBpbnQgViR7aX0gPSAoaSArIDMpICogKGkgKyAzKTtcbmA7Ci0gICAgICAgIHRhcmdldCAr
PSAoaSArIDMpICogKGkgKyAzKTsKLSAgICB9Ci0gICAgc3JjICs9ICIgICAgaW50IHJlc3VsdCA9
IDA7XG4iOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVmFyczsgaSsrKSB7Ci0gICAgICAg
IHNyYyArPSBgICAgIHJlc3VsdCArPSBWJHtpfTtcbmA7Ci0gICAgfQotICAgIHNyYyArPSAiICAg
IHJldHVybiByZXN1bHQ7XG4iOwotICAgIHNyYyArPSAifSI7Ci0gICAgbGV0IHByb2dyYW0gPSBz
cmM7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgInN1
bSIsIFtdKSwgdGFyZ2V0KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTc2MWNlYzJiOTE2YjZlZGY4NzE0
ZDJlMDBhOTJlN2U4YWZhMzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sdmFsdWVzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxWYWx1ZXMKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
ZTk4MDRkMDYzNGJmNjEwZGIwNGQ0ODhjN2U3YWIxYTM1YmNiNmYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2
YWx1ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNv
bnRlbnQ9ImxvbmciPgotPHRpdGxlPkx2YWx1ZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMubFZhbHVlcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAw
OwotICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICYoeCsrKTsKLSAgICAgICAgICAgIHJldHVy
biAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAwOwotICAgICAgICAg
ICAgdGhyZWFkIGludCogeSA9ICYoKyt4KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAg
ICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAwOwotICAgICAgICAgICAgdGhyZWFkIGlu
dCogeSA9ICYoeCA9IDMpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAg
YCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJjM7
Ci0gICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGJhcihpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJu
IHggKyAxOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJmJhcigzKTsKLSAg
ICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHgg
PSAwOwotICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICYoNywgeCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAg
ICAgICBlbnVtIERheXMgewotICAgICAgICAgICAgTW9uZGF5LAotICAgICAgICAgICAgVHVlc2Rh
eQotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
bnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJihEYXlzLk1vbmRheSk7Ci0g
ICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVh
ZCBib29sKiB5ID0gJih0cnVlICYmIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAg
ICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGJvb2wqIHkgPSAmKCF0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHgg
PSAzOwotICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICZ4OwotICAgICAgICAgICAgcmV0dXJu
ICp5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzExMmEzY2Q2YzY2NTNmOGFiNzg1NWM5
ZGExYjJlZWExYmNjZWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotCi1QQVNTIG1ha2VB
cnJheVJlZkZyb21BcnJheVJlZgotUEFTUyBtYWtlQXJyYXlSZWZGcm9tTG9jYWwKLVBBU1MgbWFr
ZUFycmF5UmVmRnJvbVBvaW50ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGIzZGNiNmJmZTU1MGQ1NzcxNzc5MzUzYzVkM2EwOTY4MDY0ZjEwNjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0
aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLm1ha2VBcnJheVJlZkZyb21BcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIodGhyZWFkIGludFtd
IHJlZikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVmWzBdOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaW50IGJheih0aHJlYWQgaW50W10gcHRyKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBiYXIoQHB0cik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
bnQgeCA9IDQ4OwotICAgICAgICAgICAgICAgIHJldHVybiBiYXooQHgpOwotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5tYWtlQXJyYXlSZWZGcm9tTG9jYWwgPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYmFyKHRocmVh
ZCBpbnRbXSByZWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0g
NDg7Ci0gICAgICAgICAgICByZXR1cm4gYmFyKEB4KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NDgpOwotfQotCi13aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21Qb2ludGVyID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGJhcih0aHJlYWQgaW50W10g
cmVmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVmWzBdOwotICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXoodGhyZWFkIGludCogcHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYmFyKEBwdHIpOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeCA9IDQ4OwotICAgICAgICAgICAgcmV0dXJuIGJheigmeCk7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDQ4KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWFrZS1hcnJheS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtl
LWFycmF5LXJlZmVyZW5jZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDk4
NzM3NjE0ODdiYTRhYWRmMGI1ZWQ4NjRjNzkyMThkNzVkMjBjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtl
LWFycmF5LXJlZmVyZW5jZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVyU291cmNlID0gYAotYm9vbCB0ZXN0MSgpIHsKLSAgICBpbnQgdmFsdWUgPSA0MjsKLSAg
ICB0aHJlYWQgaW50W10gYXJyYXkgPSBAdmFsdWU7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAx
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzBdICE9IDQyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzEyMDIxM10gIT0gNDIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGFycmF5WzBdID0gMTMzNzsKLSAgICBpZiAodmFsdWUgIT0gMTMz
NykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
dGVzdDIoKSB7Ci0gICAgaW50IHZhbHVlID0gNDI7Ci0gICAgdGhyZWFkIGludCogcHRyID0gJnZh
bHVlOwotICAgIGlmICgqcHRyICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0
aHJlYWQgaW50W10gYXJyYXkgPSBAcHRyOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheVswXSAhPSA0MikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChhcnJheVsxMjM3NDIxN10gIT0gNDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICAqcHRyID0gNjY2OwotICAgIGlmICgqcHRyICE9IDY2NikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh2YWx1ZSAhPSA2NjYpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNjY2KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhcnJheVswXSA9IDQyNDI7Ci0gICAgaWYgKCpwdHIgIT0gNDI0MikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICh2YWx1ZSAhPSA0MjQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKGFycmF5WzBdICE9IDQyNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
YXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIHRlc3QzKCkgewotICAgIGludFs0Ml0geDsKLSAgICB0aHJlYWQgaW50
WzQyXSogYXJyYXlQdHIgPSAmeDsKLSAgICBpZiAoYXJyYXlQdHItPmxlbmd0aCAhPSA0MikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgeFs0MV0gPSA2NjY7Ci0gICAgaWYgKCgqYXJyYXlQ
dHIpWzQxXSAhPSA2NjYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKCphcnJheVB0
cilbMF0gIT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGhyZWFkIGludFtdIGFy
cmF5ID0gQHg7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYXJyYXlbMF0gPSAxMzM3OwotICAgIGlmICh4WzBdICE9IDEzMzcpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKCphcnJheVB0cilbMF0gIT0gMTMzNykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGVzdDQoKSB7
Ci0gICAgaW50IHggPSA0MjsKLSAgICB0aHJlYWQgaW50KiBwdHIgPSAmeDsKLQotICAgIHRocmVh
ZCBpbnRbXSBhcnJheSA9IEBwdHI7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChhcnJheVsxMDAwMDBdICE9IDQyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1j
b21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgaWYgKCF0
ZXN0MSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXRlc3QyKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICghdGVzdDMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0
ZXN0NCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBidWZmZXJbMF0gPSAxOwotfQotYDsKLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1
dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVy
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEludDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9
OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KGJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAwOwotICAgIGJ1
ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RT
VCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGlu
Z307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9
Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0
c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZm
ZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGxldCByZXN1bHRz
SW50MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYg
KHJlc3VsdHNJbnQzMkFycmF5WzBdID09PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAg
ICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAo
KTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZiNzJkM2RkMzBmNjg0ZTlkNTdlYzU3YmFkOWY1MjRlY2UwZjNh
ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpbk1hdHJpY2VzCi1QQVNTIG1h
dHJpeE11bHRpcGxpY2F0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cmljZXMtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODlj
OWRmMzFmYjQyZTk3MjgyMzJjNjllOTEzMDZjMTQ1NGQ4YzdhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRy
aWNlcy1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5l
c3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYnVpbHRpbk1hdHJp
Y2VzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVsw
XVswXSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMV1bMF0g
PSAzOwotICAgICAgICAgICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICByZXR1cm4gYVswXVsw
XTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28yKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQyeDMgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAgICAgYVsw
XVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzBdWzJdID0gMzsKLSAgICAgICAgICAgIGFbMV1bMF0g
PSA0OwotICAgICAgICAgICAgYVsxXVsxXSA9IDU7Ci0gICAgICAgICAgICBhWzFdWzJdID0gNjsK
LSAgICAgICAgICAgIHJldHVybiBhWzFdWzJdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgcmV0
dXJuIGFbMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb280KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQyeDIgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAg
ICAgICAgYVswXVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzFdWzBdID0gMzsKLSAgICAgICAgICAg
IGFbMV1bMV0gPSA0OwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1b
MF0gPSA1OwotICAgICAgICAgICAgYlswXVsxXSA9IDY7Ci0gICAgICAgICAgICBiWzFdWzBdID0g
NzsKLSAgICAgICAgICAgIGJbMV1bMV0gPSA4OwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAw
OyBpIDwgMjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgMjsg
KytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFbaV1bal0gKz0gNDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGEgPT0gYik7Ci0gICAg
ICAgIH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQy
eDIgYTsKLSAgICAgICAgICAgIGFbMF0gPSBmbG9hdDIoMSwgMik7Ci0gICAgICAgICAgICBhWzFd
ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJb
MF1bMF0gPSAxOwotICAgICAgICAgICAgYlswXVsxXSA9IDI7Ci0gICAgICAgICAgICBiWzFdWzBd
ID0gMzsKLSAgICAgICAgICAgIGJbMV1bMV0gPSA0OwotICAgICAgICAgICAgcmV0dXJuIGFsbChh
ID09IGIpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBhWzBdWzBdID0gMTsKLSAgICAgICAgICAg
IGFbMF1bMV0gPSAyOwotICAgICAgICAgICAgYVsxXVswXSA9IDM7Ci0gICAgICAgICAgICBhWzFd
WzFdID0gNDsKLSAgICAgICAgICAgIGZsb2F0MngyIGI7Ci0gICAgICAgICAgICBiWzBdWzBdID0g
NTsKLSAgICAgICAgICAgIGJbMF1bMV0gPSAxMDsKLSAgICAgICAgICAgIGJbMV1bMF0gPSAxODsK
LSAgICAgICAgICAgIGJbMV1bMV0gPSAyNDsKLSAgICAgICAgICAgIGFbMF0gKj0gNTsKLSAgICAg
ICAgICAgIGFbMV0gKj0gNjsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBiKTsKLSAgICAg
ICAgfQotICAgICAgICBmbG9hdCBmb283KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQy
eDMgYSA9IGZsb2F0MngzKGZsb2F0MygzLCA0LCA1KSwgZmxvYXQzKDYsIDcsIDgpKTsKLSAgICAg
ICAgICAgIHJldHVybiBhWzBdWzJdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBb
XSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzMiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAgImZvbzQiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzUiLCBbXSksIHRydWUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzYiLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzciLCBbXSksIDUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhNdWx0aXBsaWNhdGlv
biA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQyeDQg
bXVsdGlwbHkoZmxvYXQyeDMgeCwgZmxvYXQzeDQgeSkgewotICAgICAgICAgICAgLy8gQ29waWVk
IGFuZCBwYXN0ZWQgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgICAgICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICAgICAgICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsw
XSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVswXSArPSB4WzBd
WzJdICogeVsyXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgICAgICAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVswXSAqIHlbMF1bMV07Ci0gICAgICAgICAgICByZXN1bHRb
MF1bMV0gKz0geFswXVsxXSAqIHlbMV1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMV0gKz0g
eFswXVsyXSAqIHlbMl1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgICAg
ICAgICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMF0gKiB5WzBdWzJdOwotICAgICAgICAgICAgcmVz
dWx0WzBdWzJdICs9IHhbMF1bMV0gKiB5WzFdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzJd
ICs9IHhbMF1bMl0gKiB5WzJdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdID0gMDsKLSAg
ICAgICAgICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzBdICogeVswXVszXTsKLSAgICAgICAgICAg
IHJlc3VsdFswXVszXSArPSB4WzBdWzFdICogeVsxXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsw
XVszXSArPSB4WzBdWzJdICogeVsyXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSA9IDA7
Ci0gICAgICAgICAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMF1bMF07Ci0gICAgICAg
ICAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsxXSAqIHlbMV1bMF07Ci0gICAgICAgICAgICByZXN1
bHRbMV1bMF0gKz0geFsxXVsyXSAqIHlbMl1bMF07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0g
PSAwOwotICAgICAgICAgICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAg
ICAgICAgICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgICAgICAgICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgICAgICAgICAgcmVzdWx0WzFd
WzJdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzBdICogeVswXVsyXTsK
LSAgICAgICAgICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzFdICogeVsxXVsyXTsKLSAgICAgICAg
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsyXVsyXTsKLSAgICAgICAgICAgIHJlc3Vs
dFsxXVszXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMV1bM10gKz0geFsxXVswXSAqIHlbMF1b
M107Ci0gICAgICAgICAgICByZXN1bHRbMV1bM10gKz0geFsxXVsxXSAqIHlbMV1bM107Ci0gICAg
ICAgICAgICByZXN1bHRbMV1bM10gKz0geFsxXVsyXSAqIHlbMl1bM107Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0MngzIG1hdHJpeDEoKSB7Ci0g
ICAgICAgICAgICBmbG9hdDJ4MyB4OwotICAgICAgICAgICAgeFswXVswXSA9IDI7Ci0gICAgICAg
ICAgICB4WzBdWzFdID0gMzsKLSAgICAgICAgICAgIHhbMF1bMl0gPSA1OwotICAgICAgICAgICAg
eFsxXVswXSA9IDc7Ci0gICAgICAgICAgICB4WzFdWzFdID0gMTE7Ci0gICAgICAgICAgICB4WzFd
WzJdID0gMTM7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBmbG9h
dDN4NCBtYXRyaXgyKCkgewotICAgICAgICAgICAgZmxvYXQzeDQgeTsKLSAgICAgICAgICAgIHlb
MF1bMF0gPSAxNzsKLSAgICAgICAgICAgIHlbMF1bMV0gPSAxOTsKLSAgICAgICAgICAgIHlbMF1b
Ml0gPSAyMzsKLSAgICAgICAgICAgIHlbMF1bM10gPSAyOTsKLSAgICAgICAgICAgIHlbMV1bMF0g
PSAzMTsKLSAgICAgICAgICAgIHlbMV1bMV0gPSAzNzsKLSAgICAgICAgICAgIHlbMV1bMl0gPSA0
MTsKLSAgICAgICAgICAgIHlbMV1bM10gPSA0MzsKLSAgICAgICAgICAgIHlbMl1bMF0gPSA0NzsK
LSAgICAgICAgICAgIHlbMl1bMV0gPSA1MzsKLSAgICAgICAgICAgIHlbMl1bMl0gPSA1OTsKLSAg
ICAgICAgICAgIHlbMl1bM10gPSA2MTsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGZvbzAwKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1h
dHJpeDEoKSwgbWF0cml4MigpKVswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28w
MSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlb
MF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDIoKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzJdOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGZvbzAzKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJp
eDEoKSwgbWF0cml4MigpKVswXVszXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMCgp
IHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1b
MF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTEoKSB7Ci0gICAgICAgICAgICByZXR1
cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzFdWzFdOwotICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzEyKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEo
KSwgbWF0cml4MigpKVsxXVsyXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMygpIHsK
LSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bM107
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbzAwIiwgW10pLCAxNyAqIDIgKyAzMSAqIDMgKyA0NyAqIDUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzAx
IiwgW10pLCAxOSAqIDIgKyAzNyAqIDMgKyA1MyAqIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzAyIiwgW10pLCAyMyAqIDIgKyA0MSAq
IDMgKyA1OSAqIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbzAzIiwgW10pLCAyOSAqIDIgKyA0MyAqIDMgKyA2MSAqIDUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEwIiwgW10p
LCAxNyAqIDcgKyAzMSAqIDExICsgNDcgKiAxMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTEiLCBbXSksIDE5ICogNyArIDM3ICogMTEg
KyA1MyAqIDEzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28xMiIsIFtdKSwgMjMgKiA3ICsgNDEgKiAxMSArIDU5ICogMTMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEzIiwgW10p
LCAyOSAqIDcgKyA0MyAqIDExICsgNjEgKiAxMyk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRy
aXgtMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBm
YjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0y
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21hdHJpeC0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZh
M2IxNjUwMmFhMGYzNDcxMzUyYmQ2N2Y3Njc5ZjJkNmZkYjFkYWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi1ib29sIGFsbEVxdWFsKGZsb2F0NHg0IG1hdCwgZmxvYXQgdmFsdWUpCi17Ci0gICAg
Zm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZvciAodWludCBq
ID0gMDsgaiA8IDQ7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYgKG1hdFtpXVtqXSAhPSB2
YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZmlsbCh0aHJlYWQgZmxvYXQ0eDQqIG1hdCwgZmxv
YXQgdmFsdWUpCi17Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsg
aSA8IDQ7IGkgPSBpICsgMSkgewotICAgICAgICAgICAgcmVzdWx0W2ldID0gZmxvYXQ0KHZhbHVl
LCB2YWx1ZSwgdmFsdWUsIHZhbHVlKTsKLSAgICB9Ci0gICAgKm1hdCA9IHJlc3VsdDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDQqIHZlYywgZmxvYXQgdmFs
dWUpCi17Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBp
ID0gaSArIDEpIHsKLSAgICAgICAgcmVzdWx0W2ldID0gdmFsdWU7Ci0gICAgfQotICAgICp2ZWMg
PSByZXN1bHQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgYWxsRXF1YWwoZmxvYXQ0IHZl
YywgZmxvYXQgdmFsdWUpCi17Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAx
KSB7Ci0gICAgICAgIGlmICh2ZWNbaV0gIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lz
dGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZs
b2F0NHg0IG1hdDsKLSAgICBmaWxsKCZtYXQsIDEpOwotICAgIGlmICghYWxsRXF1YWwobWF0LCAx
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0IHZlYzsKLSAgICBmaWxsKCZ2ZWMsIDEp
OwotICAgIGlmICghYWxsRXF1YWwodmVjLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxv
YXQ0IHZlYzIgPSBtdWwobWF0LCB2ZWMpOwotICAgIGlmICghYWxsRXF1YWwodmVjMiwgNCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0NHg0IG1hdDIgPSBtdWwobWF0LCBtYXQpOwotICAg
IGlmICghYWxsRXF1YWwobWF0MiwgNCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1hdDIgPSBt
dWwobWF0MiwgbWF0Mik7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQyLCA2NCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVh
ZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0
eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25z
dCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1
ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNd
ID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVz
dWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JB
R0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsK
LSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
dWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5n
OiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3Jp
cHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5k
aW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZl
clRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwot
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goNCwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0K
LSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJl
YWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0g
PT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJy
YXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAg
ICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9h
dDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgp
Ci0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgi
Iik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2
NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVu
dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTgyNDhmMjczNDQ5NjY4ODQ5Mzg3M2JmNmM1MzM1NWI3NTk4ZmUyNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTkyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IENvbnRhaW5lcjJ4MiB7Ci0g
ICAgZmxvYXQgeDsKLSAgICBmbG9hdDJ4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBD
b250YWluZXIyeDMgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQyeDMgbTsKLSAgICBmbG9hdCB5
OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVyMng0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0Mng0
IG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjN4MiB7Ci0gICAgZmxvYXQg
eDsKLSAgICBmbG9hdDN4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIz
eDMgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQzeDMgbTsKLSAgICBmbG9hdCB5OwotfQotCi1z
dHJ1Y3QgQ29udGFpbmVyM3g0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0M3g0IG07Ci0gICAg
ZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjR4MiB7Ci0gICAgZmxvYXQgeDsKLSAgICBm
bG9hdDR4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXI0eDMgewotICAg
IGZsb2F0IHg7Ci0gICAgZmxvYXQ0eDMgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29u
dGFpbmVyNHg0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0NHg0IG07Ci0gICAgZmxvYXQgeTsK
LX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjJ4
MihkZXZpY2UgQ29udGFpbmVyMngyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9h
dFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1b
MF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwg
MSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjJ4MyhkZXZpY2UgQ29udGFpbmVyMngz
W10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVy
KHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFd
ID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQg
Y29tcHV0ZVNoYWRlcjJ4NChkZXZpY2UgQ29udGFpbmVyMng0W10gaW5wdXQgOiByZWdpc3Rlcih1
MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFsw
XSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQot
W251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjN4MihkZXZp
Y2UgQ29udGFpbmVyM3gyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91
dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07
Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSld
Ci1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjN4MyhkZXZpY2UgQ29udGFpbmVyM3gzW10gaW5w
dXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkg
ewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5w
dXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0
ZVNoYWRlcjN4NChkZXZpY2UgQ29udGFpbmVyM3g0W10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRl
dmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlu
cHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjR4MihkZXZpY2UgQ29u
dGFpbmVyNHgyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6
IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAg
b3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21w
dXRlIHZvaWQgY29tcHV0ZVNoYWRlcjR4MyhkZXZpY2UgQ29udGFpbmVyNHgzW10gaW5wdXQgOiBy
ZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAg
IG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0u
eTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRl
cjR4NChkZXZpY2UgQ29udGFpbmVyNHg0W10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBm
bG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBd
Lm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLWA7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZSwgaXNXSExTTDogdHJ1ZX0pOwot
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5k
aW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6
IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBpbnB1dFNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiAzMjsKLSAgICBjb25zdCBvdXRwdXRTaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMjsKLQotICAgIGNvbnN0IHVwbG9hZEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZTogaW5wdXRTaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVy
VXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IHVwbG9hZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIodXBsb2FkQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyQXJy
YXlCdWZmZXIgPSBhd2FpdCB1cGxvYWRCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHVwbG9hZEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodXBsb2FkQnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7ICsraSkKLSAgICAgICAg
dXBsb2FkQnVmZmVyRmxvYXQzMkFycmF5W2ldID0gaTsKLSAgICB1cGxvYWRCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IGlucHV0QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBpbnB1dFNpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0V9
OwotICAgIGNvbnN0IGlucHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihpbnB1dEJ1ZmZl
ckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgb3V0cHV0QnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBvdXRwdXRTaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCBvdXRwdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKG91dHB1dEJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwRGVzY3Jp
cHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwg
cmVzb3VyY2U6IHtidWZmZXI6IGlucHV0QnVmZmVyLCBzaXplOiBpbnB1dFNpemV9fSwge2JpbmRp
bmc6IDEsIHJlc291cmNlOiB7YnVmZmVyOiBvdXRwdXRCdWZmZXIsIHNpemU6IG91dHB1dFNpemV9
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdy
b3VwRGVzY3JpcHRvcik7Ci0KLSAgICBsZXQgdGVzdHMgPSBbImNvbXB1dGVTaGFkZXIyeDIiLCAi
Y29tcHV0ZVNoYWRlcjJ4MyIsICJjb21wdXRlU2hhZGVyMng0IiwgImNvbXB1dGVTaGFkZXIzeDIi
LCAiY29tcHV0ZVNoYWRlcjN4MyIsICJjb21wdXRlU2hhZGVyM3g0IiwgImNvbXB1dGVTaGFkZXI0
eDIiLCAiY29tcHV0ZVNoYWRlcjR4MyIsICJjb21wdXRlU2hhZGVyNHg0Il07Ci0gICAgbGV0IHJl
c3VsdHMgPSBbXTsKLSAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7Ci0gICAgICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoe2NvbXB1dGVT
dGFnZToge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiB0ZXN0fSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH0pOwotICAgICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgICAgICBjb21tYW5kRW5jb2Rlci5jb3B5
QnVmZmVyVG9CdWZmZXIodXBsb2FkQnVmZmVyLCAwLCBpbnB1dEJ1ZmZlciwgMCwgaW5wdXRTaXpl
KTsKLSAgICAgICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVn
aW5Db21wdXRlUGFzcygpOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
Y29tcHV0ZVBpcGVsaW5lKTsKLSAgICAgICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICAgICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICAgICAgY29uc3Qg
b3V0cHV0QXJyYXlCdWZmZXIgPSBhd2FpdCBvdXRwdXRCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0g
ICAgICAgIGNvbnN0IG91dHB1dEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkob3V0cHV0
QXJyYXlCdWZmZXIpOwotICAgICAgICByZXN1bHRzLnB1c2gob3V0cHV0RmxvYXQzMkFycmF5WzBd
KTsKLSAgICAgICAgcmVzdWx0cy5wdXNoKG91dHB1dEZsb2F0MzJBcnJheVsxXSk7Ci0gICAgICAg
IG91dHB1dEJ1ZmZlci51bm1hcCgpOwotICAgIH0KLSAgICBsZXQgZXhwZWN0ZWQgPSBbMiwgNiwg
NCwgMTIsIDQsIDEyLCAyLCA4LCA0LCAxNiwgNCwgMTYsIDIsIDEwLCA0LCAyMCwgNCwgMjBdOwot
ICAgIGxldCBlcnJvciA9IGZhbHNlOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWQu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0gIT0gZXhwZWN0ZWRbaV0pIHsK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHRlc3RQYXNzZWQoIiIpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJlLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjM2MxYWIzOGZlZjcyODFi
ZTMwMDVhMDE3NzQ3YWYyMjY0ODUzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIG1hdHJpeExU
Ci1QQVNTIG1hdHJpeExUMgotUEFTUyBtYXRyaXhMVEUKLVBBU1MgbWF0cml4TFRFMgotUEFTUyBt
YXRyaXhMVEUzCi1QQVNTIG1hdHJpeEdUCi1QQVNTIG1hdHJpeEdUMgotUEFTUyBtYXRyaXhHVEUK
LVBBU1MgbWF0cml4R1RFMgotUEFTUyBtYXRyaXhHVEUzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1jb21wYXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYyYmI5Njg2YTQzYzVlYzkwZDQ3MDRjNGM5ZGMwOWRlYzgxNzI3YzguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb21wYXJlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT49PS48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMubWF0cml4TFQgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAuMCwgMTAuMCwgMTAuMCwgMjAu
MCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2MiA9IHY7Ci0gICAgICAgICAg
ICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPCB2Mik7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFQyID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsK
LSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0gICAgICAgICAgICB2MlswXVswXSAtPSAxMS4wOwot
Ci0gICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPCB2MjsKLSAgICAgICAgICAgIHJldHVy
biAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3Vs
dFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhMVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAu
MCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2
MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gYWxs
KHYgPD0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeExURTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIo
MTAuMCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4
MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFRFMyA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGZsb2F0MngyIHY7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2MiA9IHY7Ci0g
ICAgICAgICAgICB2MlswXVswXSAtPSAxLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyeDIgcmVzdWx0
ID0gdiA8PSB2MjsKLSAgICAgICAgICAgIHJldHVybiAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFsw
XVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3VsdFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVCA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAg
ICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAy
MC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEw
LjA7Ci0KLSAgICAgICAgICAgIHJldHVybiAhYW55KHYgPiB2Mik7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4R1QyID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAg
ICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAgICAgICAg
ICAgIHYyWzBdWzBdICs9IDEuMDsKLSAgICAgICAgICAgIHYyWzBdWzFdIC09IDEuMDsKLSAgICAg
ICAgICAgIHYyWzFdWzBdIC09IDEuMDsKLSAgICAgICAgICAgIHYyWzFdWzFdIC09IDEuMDsKLQot
ICAgICAgICAgICAgYm9vbDJ4MiByZXN1bHQgPSB2ID4gdjI7Ci0gICAgICAgICAgICByZXR1cm4g
IXJlc3VsdFswXVswXSAmJiByZXN1bHRbMF1bMV0gJiYgcmVzdWx0WzFdWzBdICAmJiByZXN1bHRb
MV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMubWF0cml4R1RFID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAs
IDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIg
PSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnko
diA+PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNs
VGVzdHMubWF0cml4R1RFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4Migx
MC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gy
IHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2ID49IHYyKTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUzID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAg
ICAgICAgICAgIHYyWzBdWzBdICs9IDEuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiByZXN1bHQg
PSB2ID49IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBd
WzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsK
LQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1j
b25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NjQwNThjZDkyNjQ0ZTk2YWU0NmIxNzZjYjhjNjAwNTY2ODFiMmE5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXgtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotCi1QQVNTIG1hdHJpeENvbnN0cnVjdG9yCi1QQVNTIG1hdHJpeENvbnN0cnVjdG9yMgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9y
cy1saXN0LW9mLXNjYWxhcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4ZmFjNzlkNjYxM2M4NThiN2JlNmJiODI4YzQ5YzZm
ZTEyYTlkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxh
cnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbGlz
dE9mU2NhbGFyc01hdHJpeENvbnN0cnVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFy
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWNlMWY0NzBlZjMyMWYwMGMw
NzI2NWYxOWI3NTlmZjYyZGI3MjFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3Jz
LWxpc3Qtb2Ytc2NhbGFycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xU
ZXN0cy5saXN0T2ZTY2FsYXJzTWF0cml4Q29uc3RydWN0b3JzID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MigxLCAyLCAzLCA0KTsKLSAgICAgICAgICAgIHJldHVy
biBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MyBtID0gZmxvYXQyeDMoMSwgMiwgMywgNCwgNSwgNik7Ci0gICAgICAg
ICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQyeDQgbSA9IGZsb2F0Mng0KDEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIG0gPSBmbG9hdDN4Migx
LCAyLCAzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDN4MyBtID0g
ZmxvYXQzeDMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSk7Ci0gICAgICAgICAgICByZXR1cm4g
bVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQzeDQgbSA9IGZsb2F0M3g0KDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAg
ICAgZmxvYXQgZygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NHgyIG0gPSBmbG9hdDR4
MigxLCAyLCAzLCA0LCA1LCA2LCA3LCA4KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDR4MyBtID0gZmxvYXQ0eDMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMik7
Ci0gICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBp
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQ0eDQgbSA9IGZsb2F0NHg0KDEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2KTsKLSAgICAgICAg
ICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiYSIsIFtdKSwgMywgZXBz
aWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgImIiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJjIiwgW10pLCA1LCBlcHNpbG9uKTsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAiZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQg
Y2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImUiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmIiwg
W10pLCA1LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAiZyIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImgiLCBbXSksIDQs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICJpIiwgW10pLCA1LCBlcHNpbG9uKTsKLX0KLQotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZiMjI3MTExZWZhYjhmMGIxYjk4ZWJkODExOGRiOTdhMzQ5NzE4YjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEg
bmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bWF0cml4IGN0b3IuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubWF0cml4Q29uc3RydWN0b3IgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoZmxvYXQyKDEuMCwgMi4wKSwgZmxv
YXQyKDMuMCwgNC4wKSwgZmxvYXQyKDUuMCwgNi4wKSk7Ci0gICAgICAgICAgICByZXR1cm4gdlsw
XVswXSA9PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCi0gICAgICAgICAgICAgICAgJiYgdlsxXVsw
XSA9PSAzLjAgJiYgdlsxXVsxXSA9PSA0LjAgCi0gICAgICAgICAgICAgICAgJiYgdlsyXVswXSA9
PSA1LjAgJiYgdlsyXVsxXSA9PSA2LjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4Q29uc3RydWN0b3IyID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAg
ZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEuMCwgMi4wLCAzLjAsIDQuMCwgNS4wLCA2LjApOwotICAg
ICAgICAgICAgcmV0dXJuIHZbMF1bMF0gPT0gMS4wICYmIHZbMF1bMV0gPT0gMi4wIAotICAgICAg
ICAgICAgICAgICYmIHZbMV1bMF0gPT0gMy4wICYmIHZbMV1bMV0gPT0gNC4wIAotICAgICAgICAg
ICAgICAgICYmIHZbMl1bMF0gPT0gNS4wICYmIHZbMl1bMV0gPT0gNi4wOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJp
eC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3
ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODEzMTdlZWNkMzU0ODRiMDVjOTY0YzJjYWUxODBhM2Q3MWNk
YzEyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBmaWVsZFNob3VsZEJlTnVsbAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24uaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg3ODE3OGJiNmFiYjQyMmIxYzRiZWZmYTUy
ZTEwZTFmY2NiZDAyMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5tYXRyaXgtaW5kZXgtYXNzaWduLXN3aXp6bGUuPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3Rz
ID0ge307Ci0KLXdobHNsVGVzdHMuZmllbGRTaG91bGRCZU51bGwgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBm
bG9hdDJ4MyBtYXQ7Ci0gICAgICAgICAgICBtYXRbMF0gPSBmbG9hdDMoMTAuMCwgMjAuMCwgMzAu
MCk7Ci0KLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXSA9PSBmbG9hdDMoMTAuMCwgMjAuMCwg
MzAuMCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgaWYg
KCFhbGwobWF0WzBdLnh5ID09IGZsb2F0MigxMC4wLCAyMC4wKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoIWFsbChtYXRbMF0ueXggPT0gZmxvYXQy
KDIwLjAsIDEwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ICAgIG1hdFswXS54eSA9IGZsb2F0MigxLjAsIDIuMCk7Ci0gICAgICAgICAgICBpZiAoIWFsbCht
YXRbMF0ueHkgPT0gZmxvYXQyKDEuMCwgMi4wKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgICAgICBtYXRbMF0ueXgueXggPSBmbG9hdDIoMTAwLjAsIDIwMC4wKTsK
LSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXS54eSA9PSBmbG9hdDIoMTAwLjAsIDIwMC4wKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE1OWFmZGJkM2RiN2NlMWYzMGNmZjRiYzY5Y2U4MThkYWNhYzMw
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBtYXRNdWwKLVBBU1MgbWF0TXVsMgotUEFT
UyBtYXRNdWwzCi1QQVNTIG1hdE11bDQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1pbmRleC1vcmRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OTk0NDMyYTlmNjdhZTBmZjg4ZjNlMTFmYjZjNDIxODg3NjY1MGNmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXgtaW5kZXgtb3JkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm1hdHJpeC1pbmRleC1vcmRlci48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5tYXRNdWwgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MyBhID0gZmxvYXQyeDMoCi0gICAgICAgICAgICAgICAgZmxvYXQzKDEsIDIs
IDMpLAotICAgICAgICAgICAgICAgIGZsb2F0Myg0LCA1LCA2KQotICAgICAgICAgICAgKTsKLQot
ICAgICAgICAgICAgZmxvYXQzeDIgYiA9IGZsb2F0M3gyKAotICAgICAgICAgICAgICAgIGZsb2F0
Mig3LCA4KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoOSwgMTApLAotICAgICAgICAgICAgICAg
IGZsb2F0MigxMSwgMTIpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MyBy
ZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAgIGZsb2F0M3gzIGV4cGVjdGVkID0gZmxv
YXQzeDMoCi0gICAgICAgICAgICAgICAgZmxvYXQzKDM5LCA1NCwgNjkpLAotICAgICAgICAgICAg
ICAgIGZsb2F0Myg0OSwgNjgsIDg3KSwKLSAgICAgICAgICAgICAgICBmbG9hdDMoNTksIDgyLCAx
MDUpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSBy
ZXN1bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLm1hdE11bDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhID0gZmxvYXQyeDIoCi0gICAg
ICAgICAgICAgICAgZmxvYXQyKDEsIDgpLAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCAxMikK
LSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDIyLCA0NSk7
Ci0KLSAgICAgICAgICAgIGZsb2F0MiByZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAg
IGZsb2F0MiBleHBlY3RlZCA9IGZsb2F0MigyNDcsIDcxNik7Ci0KLSAgICAgICAgICAgIHJldHVy
biBhbGwoZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRNdWwzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
YSA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0MigxLCAyKSwKLSAgICAgICAgICAg
ICAgICBmbG9hdDIoMywgNCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0Mngy
IGIgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoNSwgNiksCi0gICAgICAgICAg
ICAgICAgZmxvYXQyKDcsIDgpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDJ4
MiByZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGV4cGVjdGVkID0g
ZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDIzLCAzNCksCi0gICAgICAgICAgICAg
ICAgZmxvYXQyKDMxLCA0NikKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIHJldHVybiBh
bGwoZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmFyKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgYiA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZs
b2F0MigxLCAyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMywgNCkKLSAgICAgICAgICAgICk7
Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGEgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBm
bG9hdDIoNSwgNiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDcsIDgpCi0gICAgICAgICAgICAp
OwotCi0gICAgICAgICAgICBmbG9hdDJ4MiByZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAg
ICAgIGZsb2F0MngyIGV4cGVjdGVkID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQy
KDE5LCAyMiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDQzLCA1MCkKLSAgICAgICAgICAgICk7
Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwoZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImJhciIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdE11bDQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4NCBhID0gZmxvYXQyeDQoCi0gICAgICAg
ICAgICAgICAgZmxvYXQ0KDEsIDIsIDMsIDQpLAotICAgICAgICAgICAgICAgIGZsb2F0NCg1LCA2
LCA3LCA4KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQzeDIgYiA9IGZsb2F0
M3gyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig5LCAxMCksCi0gICAgICAgICAgICAgICAgZmxv
YXQyKDExLCAxMiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEzLCAxNCkKLSAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgIGZsb2F0M3g0IHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAg
ICAgICAgZmxvYXQzeDQgZXhwZWN0ZWQgPSBmbG9hdDN4NCgKLSAgICAgICAgICAgICAgICBmbG9h
dDQoNTksIDc4LCA5NywgMTE2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDQoNzEsIDk0LCAxMTcs
IDE0MCksCi0gICAgICAgICAgICAgICAgZmxvYXQ0KDgzLCAxMTAsIDEzNywgMTY0KQotICAgICAg
ICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMxMDEwODVhMjRhZGQ1OGMwMTk3YmYwNjFmMjdjOGVhYmExYjE2OWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUg
dm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdDR4NFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUw
KSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9hdDQoMSwgMiwgMywgNCk7Ci0gICAgcmVzdWx0
WzFdID0gZmxvYXQ0KDUsIDYsIDcsIDgpOwotICAgIHJlc3VsdFsyXSA9IGZsb2F0NCg5LCAxMCwg
MTEsIDEyKTsKLSAgICByZXN1bHRbM10gPSBmbG9hdDQoMTMsIDE0LCAxNSwgMTYpOwotCi0gICAg
ZmxvYXQ0eDQgbWF0ID0gYnVmZmVyWzBdOwotCi0gICAgaWYgKG1hdFswXVswXSA9PSAwCi0gICAg
ICAgICYmIG1hdFswXVsxXSA9PSAxCi0gICAgICAgICYmIG1hdFswXVsyXSA9PSAyCi0gICAgICAg
ICYmIG1hdFswXVszXSA9PSAzCi0KLSAgICAgICAgJiYgbWF0WzFdWzBdID09IDQKLSAgICAgICAg
JiYgbWF0WzFdWzFdID09IDUKLSAgICAgICAgJiYgbWF0WzFdWzJdID09IDYKLSAgICAgICAgJiYg
bWF0WzFdWzNdID09IDcKLQotICAgICAgICAmJiBtYXRbMl1bMF0gPT0gOAotICAgICAgICAmJiBt
YXRbMl1bMV0gPT0gOQotICAgICAgICAmJiBtYXRbMl1bMl0gPT0gMTAKLSAgICAgICAgJiYgbWF0
WzJdWzNdID09IDExCi0KLSAgICAgICAgJiYgbWF0WzNdWzBdID09IDEyCi0gICAgICAgICYmIG1h
dFszXVsxXSA9PSAxMwotICAgICAgICAmJiBtYXRbM11bMl0gPT0gMTQKLSAgICAgICAgJiYgbWF0
WzNdWzNdID09IDE1KSB7Ci0gICAgICAgIGJ1ZmZlclswXSA9IHJlc3VsdDsKLSAgICB9Ci19Ci1g
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdl
LWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBl
bGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91
dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5
b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShj
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiAxNjsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdl
LkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZl
ckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0g
PSAwOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFy
cmF5WzJdID0gMjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSAzOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVs0XSA9IDQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA2OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDc7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzhdID0gODsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
OV0gPSA5OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxMDsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMTFdID0gMTE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDEyOwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAxMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTRd
ID0gMTQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE1OwotICAgIGJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJC
aW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdy
b3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAg
Y29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmlu
ZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwg
MCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShj
b21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwg
YmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMiwgMSwgMSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2Fp
dCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJl
c3VsdHNGbG9hdDMyQXJyYXlbMF0gPT09IDEKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVsxXSA9PT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09PSAzCi0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT09IDQKLQotICAgICAgICAmJiByZXN1bHRz
RmxvYXQzMkFycmF5WzRdID09PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0g
PT09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PT0gNwotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09PSA4Ci0KLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0
MzJBcnJheVs4XSA9PT0gOQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzldID09PSAx
MAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzEwXSA9PT0gMTEKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVsxMV0gPT09IDEyCi0KLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0
MzJBcnJheVsxMl0gPT09IDEzCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTNdID09
PSAxNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzE0XSA9PT0gMTUKLSAgICAgICAg
JiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxNV0gPT09IDE2KQotICAgICAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIu
dW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjAyYmJiZTVlMTNiMDJk
YzQzMjg5MTc0NTdkN2E1YjcyZmYxY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotYm9vbCBhbGxF
cXVhbChmbG9hdDJ4MyBtYXQsIGZsb2F0IHZhbHVlKQotewotICAgIGZvciAodWludCBpID0gMDsg
aSA8IDI7IGkgPSBpICsgMSkgewotICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCAzOyBqID0g
aiArIDEpIHsKLSAgICAgICAgICAgIGlmIChtYXRbaV1bal0gIT0gdmFsdWUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRl
dmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1Zf
RGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0MngzIGZvbzsKLSAgICBpZiAoIWFsbEVxdWFs
KGZvbywgMCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvbyA9IGZvbyArIGZsb2F0MngzKGZs
b2F0MygxLjAsIDEuMCwgMS4wKSwgZmxvYXQzKDEuMCwgMS4wLCAxLjApKTsKLSAgICBpZiAoIWFs
bEVxdWFsKGZvbywgMSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvbyA9IGZvbyAqIGZsb2F0
MngzKGZsb2F0Myg4LjUsIDguNSwgOC41KSwgZmxvYXQzKDguNSwgOC41LCA4LjUpKTsKLSAgICBp
ZiAoIWFsbEVxdWFsKGZvbywgOC41KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9v
IC0gZmxvYXQyeDMoZmxvYXQzKDcuNSwgNy41LCA3LjUpLCBmbG9hdDMoNy41LCA3LjUsIDcuNSkp
OwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9v
ID0gZm9vICsgZmxvYXQyeDMoZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBmbG9hdDMoMS4wLCAxLjAs
IDEuMCkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAyKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9vID0gZm9vICsgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0KSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9vID0gZm9vICsgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA4
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQzIGZvdXJ0eVR3bzsKLSAgICBmb3VydHlU
d28ueCA9IDQyOwotICAgIGZvdXJ0eVR3by55ID0gNDI7Ci0gICAgZm91cnR5VHdvLnogPSA0MjsK
LQotICAgIGZvb1swXSA9IGZvdXJ0eVR3bzsKLSAgICBmb29bMV0gPSBmb3VydHlUd287Ci0gICAg
aWYgKCFhbGxFcXVhbChmb28sIDQyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vWzEzMzdd
ID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvb1sxMDAwMDAwXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFsKGZv
bywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3VydHlUd29bMTMzN10gPSA1MDsKLSAg
ICBpZiAoZm91cnR5VHdvLnggIT0gNTApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3
b1sxMzM3XSA9IDQyOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFs
KGZvbywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3VydHlUd29bMTAwMDAwMF0gPSA1
MDsKLSAgICBpZiAoZm91cnR5VHdvLnggIT0gNTApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
dXJ0eVR3b1sxMzM3XSA9IDQyOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFs
bEVxdWFsKGZvbywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDMgc2hvdWxkQmVG
b3VydHlUd28gPSBmb29bMTAwMDAwXTsKLSAgICBpZiAoc2hvdWxkQmVGb3VydHlUd28ueCAhPSA0
MiB8fCBzaG91bGRCZUZvdXJ0eVR3by55ICE9IDQyIHx8IHNob3VsZEJlRm91cnR5VHdvLnogIT0g
NDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3VydHlUd29bMTAwMDAwMDBdICE9IDQy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBidWZmZXJbdWludCh0aHJlYWRJRC54KV0gPSBidWZm
ZXJbdWludCh0aHJlYWRJRC54KV0gKiAyLjA7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVT
dGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA4
OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
YnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZm
ZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFy
cmF5WzFdID0gMjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAzOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVszXSA9IDQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzRdID0gNTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA2OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDc7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0gODsKLSAgICBidWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9
IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBb
YmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNv
ZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUp
OwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29t
cHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDQsIDEsIDEpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFu
ZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0
c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxv
YXQzMkFycmF5WzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxXSA9PSA0
Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT0gNgotICAgICAgICAmJiByZXN1
bHRzRmxvYXQzMkFycmF5WzNdID09IDgKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs0
XSA9PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0gPT0gNgotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzZdID09IDcKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVs3XSA9PSA4KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAg
IHRlc3RGYWlsZWQoIm5vdCBjb3JyZWN0Iik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1ZS1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1
NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24t
cnZhbHVlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90
LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVk
LWRvdC1leHByZXNzaW9uLXJ2YWx1ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhYmQ3MGU1MDY1NWIwMjM1MWU0ZTQ3Y2Q0NDBmNjAzMWJjNTM4YTE1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi0KLXN0cnVjdCBCYXIgewotICAgIGZsb2F0
IHNoYWRlOwotfQotc3RydWN0IEZvbyB7Ci0gICAgQmFyIGJhcjsKLX0KLQotc3RydWN0IFdyYXBw
ZXIgewotICAgIEZvbyBmb287Ci19Ci0KLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwot
fQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgV3JhcHBlciB3cmFw
cGVyOwotICAgIHdyYXBwZXIuZm9vLmJhci5zaGFkZSA9IHNoYWRlOwotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRl
ID0gd3JhcHBlci5mb28uYmFyLnNoYWRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjAp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7
c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29u
c3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1
dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFw
KCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0
ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbmVzdGVkLWxvb3AuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY3ZTgy
NmNlNDBlNjhlYWIwOGQ0YTU2NTQ2NzY5N2NmZjZlMGIwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVk
LWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wg
YiA9IHRydWU7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMTA7IGkgPSBpICsgMSkgewotICAg
ICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNoYWRlID0gMS4wOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gMS4wLCBm
YWxzZSkpOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKChzaGFkZSA9
IHNoYWRlICsgMS4wLCBmYWxzZSkpOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChi
KSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
d2hpbGUgKChzaGFkZSA9IHNoYWRlIC0gMS4wLCBmYWxzZSkpOwotCi0gICAgICAgIHdoaWxlICgo
c2hhZGUgPSBzaGFkZSArIDEuMCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3
aGlsZSAoKHNoYWRlID0gc2hhZGUgLSAxLjAsIHRydWUpKSB7Ci0gICAgICAgICAgICBpZiAoYikg
ewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0g
c2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9
ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250
RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9
IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3Jt
YXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVy
TG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0
cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7
c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1
dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0K
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBi
dWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNv
bnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRp
bmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91
cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZm
ZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9udWxsLWFyZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMyYTE0MDFjZTZlNDcyMDljMjM2ZThkZjczN2ZiYTgyOWUzZDc0MzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIG51bGxJc0Vycm9yCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9udWxsLWFyZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YTVkMDMzNTJkOGUzNTBiM2M2OTQx
N2VhYzMzY2FiOWIxZmY3ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
Pm51bGwuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubnVsbElzRXJy
b3IgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBm
b28odGhyZWFkIGludCogcHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnB0cjsK
LSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGZvbyhudWxsKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgdm9pZCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50
KiB4OwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICB2b2lkIGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSB4OwotICAg
ICAgICB9Ci0gICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1w
cm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251
bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNWIzOTFmMWM5YTllZWMzZDE3Njc5OWQ1NDA3YWNiYWRiMThkMmRhNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1Mgc3RvcmVOdWxsQXJyYXlSZWYKLVBBU1Mg
bG9hZE51bGxBcnJheVJlZgotUEFTUyBudWxsTmFtZWRBY2Nlc3MKLVBBU1MgbnVsbE5hbWVkQWNj
ZXNzMgotUEFTUyBudWxsTmFtZWRBY2Nlc3NTaW5rCi1QQVNTIG51bGxOYW1lZEFjY2Vzc1Npbmsy
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3Bl
cnR5LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJv
cGVydHktYWNjZXNzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYTA5ZGVm
ZGUxODg4YjZlYjJhMzMzMDg1MTQ4NmRlMDIyMjU3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJy
YXktcHJvcGVydHktYWNjZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmxvYWQvc3RvcmUgdG8gbnVsbC48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zdG9yZU51bGxBcnJheVJlZiA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIHZvaWQgZm9vKCkgeyBudWxsWzBdID0gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMubG9hZE51bGxBcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayh0aHJlYWQgaW50KiB4KSB7IH0K
LSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBzaW5rKG51bGxbMF0pOyB9Ci0gICAgICAgIGApOwot
fQotCi13aGxzbFRlc3RzLm51bGxOYW1lZEFjY2VzcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBudWxsLT54
OyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm51bGxOYW1lZEFjY2VzczIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2
b2lkIGZvbygpIHsgbnVsbC54OyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm51bGxO
YW1lZEFjY2Vzc1NpbmsgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsoaW50IHgpIHsgfQotICAgICAgICAgICAgdm9p
ZCBmb28oKSB7IHNpbmsobnVsbC0+eCk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
bnVsbE5hbWVkQWNjZXNzU2luazIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsoaW50IHgpIHsgfQotICAgICAgICAg
ICAgdm9pZCBmb28oKSB7IHNpbmsobnVsbC54KTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL251bGwtYXJyYXktcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM1NTE3YWQ0MDNmZmViMGQ3NmY1NmNkYTQzNDhhNWNjNTIzMzIyMzYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L251bGwtYXJyYXktcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZGVyZWZlcmVuY2VEZWZhdWx0TnVsbEFycmF5UmVm
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBwOwotICAgICAgICAgICAgcmV0
dXJuIHBbMF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDApOwotfQotCi13aGxzbFRlc3RzLmRl
ZmF1bHRJbml0aWFsaXplZE51bGxBcnJheVJlZkludExpdGVyYWwgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGhyZWFkIGludFtdIHAgPSBudWxsOwotICAgICAgICAgICAgcmV0dXJuIHBbMF07Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDApOwotfQotCi13aGxzbFRlc3RzLnBhc3NOdWxsVG9QdHJN
b25vbW9ycGhpY0FycmF5UmVmID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50W10gcHRyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gcHRyWzB1XTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGZvbyhudWxsKTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwg
MCk7Ci19Ci0KLXdobHNsVGVzdHMubG9hZE51bGwgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBzaW5rKHRocmVhZCBpbnQq
IHgpIHsgfQotICAgICAgICAgICAgdm9pZCBmb28oKSB7IHNpbmsoKm51bGwpOyB9Ci0gICAgICAg
IGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTEzYWY4OGUxMjU5ZWZmNWFjMzJiODY0
YTE2NDIxMTYyZDZmYTVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb29iCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGNjY2E1ZGVkZTA3YzliZWFmNzIyNjVkMDE4NzFiOGU5ZGE3ODcyNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb29iLWFjY2Vzcy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk9PQi48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5vb2IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4
ID0gMzsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhID0gQHg7Ci0gICAgICAgICAgICBhWzQy
NDI0Ml0gPSAyNTsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAg
aW50IGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0geDsKLSAgICAgICAgICAg
IHRocmVhZCBpbnRbXSBhID0gQHg7Ci0gICAgICAgICAgICBhWzQyNDI0Ml0gPSAyNTsKLSAgICAg
ICAgICAgIHJldHVybiB4WzBdOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGJheigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGludFsxMF0geDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBh
ID0gQHg7Ci0gICAgICAgICAgICBhWzQyNDI0Ml0gPSAyNTsKLSAgICAgICAgICAgIHJldHVybiB4
WzFdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMjUpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbXSksIDApOwotfTsK
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29i
LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5MTRkOGMzYjU4ZjEwZGZlNmQ2M2Y5OGJl
MTY1ZjQwYjdiNDYxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcyg0LCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6
IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewot
ICAgIGJ1ZmZlclsxMzM3XSA9IDAuMDsKLSAgICBidWZmZXJbNDI0MjQyNDJdID0gMC4wOwotICAg
IGlmIChidWZmZXJbMTAwMDAwXSA9PSAwLjApCi0gICAgICAgIGJ1ZmZlclt1aW50KHRocmVhZElE
LngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1
dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFk
ZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
PSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0g
ICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0g
ICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0g
PSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFy
cmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51
bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0g
ICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwg
YmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZl
ciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29k
ZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAo
MCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBh
d2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYg
KHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2
Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1
bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVs
c2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vcGVyYXRvci1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBjYjU2NjFkNGRjNjAwNDZhZWI4ZWM0YjdjYjEwODMyODhhYTdmOGIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAK
LQotUEFTUyB2ZWN0b3JEaXYKLVBBU1MgdmVjdG9yRGl2V2l0aFNjYWxhcgotUEFTUyB2ZWN0b3JE
aXZXaXRoU2NhbGFyMgotUEFTUyBtYXRyaXhEaXYKLVBBU1MgbWF0cml4RGl2U2NhbGFyCi1QQVNT
IG1hdHJpeERpdlNjYWxhcjIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLWRpdi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRp
di5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTZhOWI5NGUzYWE3NzJiZmRk
ODYzMGVlMTJlYjBlZmM2Mjk1NDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1kaXYuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPkRpdi48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24g
PSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2ID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
MiB4ID0gZmxvYXQyKDEwLCAzMCk7Ci0gICAgICAgICAgICBmbG9hdDIgeSA9IGZsb2F0Mig1LCAx
MCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggLyB5OwotICAgICAgICAgICAgcmV0dXJuIHIu
eCAvIHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMi8zLCBlcHNpbG9uKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2V2l0aFNjYWxhciA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBm
bG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB4IC8gNS4w
OwotICAgICAgICAgICAgcmV0dXJuIHIueCAvIHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdKSwgMi81LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2V2l0aFNj
YWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxv
YXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDI1KTsKLSAgICAg
ICAgICAgIGZsb2F0MiByID0gMTAwIC8geDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEwLzQsIGVwc2lsb24pOwotfTsKLQot
d2hsc2xUZXN0cy5tYXRyaXhEaXYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAg
ICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0
MCwgNTApOwotCi0gICAgICAgICAgICBmbG9hdDJ4MiBtMjsKLSAgICAgICAgICAgIG0yWzBdID0g
ZmxvYXQyKC0xLjAsIC0xLjApOwotICAgICAgICAgICAgbTJbMV0gPSBmbG9hdDIoLTEuMCwgLTEu
MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtIC8gbTI7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBd
ID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFd
WzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhEaXZTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAg
ICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0
Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gbSAvIC0xLjA7Ci0KLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAu
MCAmJiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy5tYXRyaXhEaXZTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQy
eDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIG1b
MV0gPSBmbG9hdDIoMjUsIDUwKTsKLQotICAgICAgICAgICAgbSA9IDEwMC4wIC8gbTsKLQotICAg
ICAgICAgICAgaWYgKG1bMF1bMF0gPT0gMTAuMCAmJiBtWzBdWzFdID09IDUuMCAmJiBtWzFdWzBd
ID09IDQuMCAmJiBtWzFdWzFdID09IDIuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFs
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3N2VhYWVlZTdk
OTVhM2IwMDU4YjY0ZTQ5NzlkYTRkNmEwYjJiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1
YWwtZXF1YWwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBB
U1MgbWF0cml4RXF1YWwKLVBBU1MgdmVjdG9yRXF1YWxzCi1QQVNTIHNjYWxhckVxdWFscwotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWRhMDQwZjUzZDM4YWU4MjBkNTkxMmU2
MTQ0ODQyYzM5ZWNhMmYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT49PS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24g
PSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMubWF0cml4RXF1YWwgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAg
bVsxXSA9IGZsb2F0Mig0MCwgNTApOwotICAgICAgICAgICAgZmxvYXQyeDIgbTMgPSBtOwotICAg
ICAgICAgICAgbTNbMF1bMV0gKz0gMTAuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiBtMiA9IG0g
PT0gbTM7Ci0KLSAgICAgICAgICAgIHJldHVybiBtMlswXVswXSAmJiAhbTJbMF1bMV0gJiYgbTJb
MV1bMF0gJiYgbTJbMV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07
Ci0KLXdobHNsVGVzdHMudmVjdG9yRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBm
bG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotCi0gICAgICAg
ICAgICBib29sMiByZXN1bHQgPSB2MiA9PSB2OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC54
ICYmIHJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLnNjYWxhckVxdWFscyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0IHggPSAxMC4wOwot
ICAgICAgICAgICAgZmxvYXQgeSA9IHg7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSB5OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1taW51cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNiZWQ0NTg3ZTc0ZmYxMTZkMDBkZjg2NDhlODVlMWIxOGU3MjljMjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICsw
LDAgQEAKLQotUEFTUyB2ZWN0b3JNaW51cwotUEFTUyB2ZWN0b3JOZWdhdGUKLVBBU1MgdmVjdG9y
TWludXNTY2FsYXIKLVBBU1MgdmVjdG9yTWludXNTY2FsYXIyCi1QQVNTIG1hdHJpeE1pbnVzCi1Q
QVNTIG1hdHJpeE1pbnVzU2NhbGFyCi1QQVNTIG1hdHJpeE1pbnVzU2NhbGFyMgotUEFTUyBtYXRy
aXhOZWdhdGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9y
LW1pbnVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwMGRkNmJhY2Q1ZTFjYjllODc1OTE0
ZmZiMzc1NTg5YzE0YTEyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPk1pbnVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9
IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JNaW51cyA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50MiB4
ID0gaW50MigxMCwgMjUpOwotICAgICAgICAgICAgaW50MiB5ID0gaW50MigyMCwgMzApOwotICAg
ICAgICAgICAgaW50MiByID0geSAtIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55Owot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgMik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck5lZ2F0
ZSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KCkgewotICAgICAgICAgICAgaW50MiB4ID0gaW50MigxMCwgMjUpOwotICAgICAgICAgICAgeCA9
IC14OwotICAgICAgICAgICAgcmV0dXJuIHgueCArIHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIC0zNSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck1pbnVzU2NhbGFyID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLjAsIDI1LjApOwotICAgICAgICAgICAgeCA9IHgg
LSA1LjA7Ci0gICAgICAgICAgICByZXR1cm4geC55IC8geC54OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgMjAvNSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck1p
bnVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigtMTAuMCwgLTI1
LjApOwotICAgICAgICAgICAgeCA9IDUuMCAtIHg7Ci0gICAgICAgICAgICByZXR1cm4geC55IC8g
eC54OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgMzAvMTUsIGVwc2lsb24pOwot
fTsKLQotd2hsc2xUZXN0cy5tYXRyaXhNaW51cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07
Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0g
ZmxvYXQyKDQwLCA1MCk7Ci0gICAgICAgICAgICBtID0gbSAtIG07Ci0gICAgICAgICAgICBpZiAo
bVswXVswXSA9PSAwICYmIG1bMF1bMV0gPT0gMCAmJiBtWzFdWzBdID09IDAgJiYgbVsxXVsxXSA9
PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5t
YXRyaXhNaW51c1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAg
ICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1
MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtIC0gMS4wOwotCi0gICAgICAgICAgICBpZiAobVswXVsw
XSA9PSAxOS4wICYmIG1bMF1bMV0gPT0gMjkuMCAmJiBtWzFdWzBdID09IDM5LjAgJiYgbVsxXVsx
XSA9PSA0OS4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhNaW51c1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAg
ICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0
Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gMC4wIC0gbTsKLQotICAgICAgICAgICAgaWYg
KG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4w
ICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi13aGxzbFRlc3RzLm1hdHJpeE5lZ2F0ZSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07
Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0g
ZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAtbTsKLQotICAgICAgICAgICAgaWYg
KG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4w
ICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YWM0MWI0ZDM5M2QzM2JlZTYwMGE5
MTkwN2JiMTBjMjNkNzFmOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yV2l0
aG91dFVuaW5mZXJyYWJsZVR5cGVWYXJpYWJsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vcGVyYXRvci1vdmVybG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMTE4NTRjN2QyMWZjZmZkMTc1YzFkZjhmYjQ3NDg3YjYyZjgzZjA4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1vdmVybG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5PcGVyYXRvcisgb3ZlcmxvYWQuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JXaXRob3V0VW5p
bmZlcnJhYmxlVHlwZVZhcmlhYmxlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0g
ICAgICAgIEZvbyBvcGVyYXRvcisoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBGb28gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnggPSBhLnggKyBiLng7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBGb28gYTsKLSAgICAgICAgICAgIGEueCA9IDY0NTsKLSAgICAgICAg
ICAgIEZvbyBiOwotICAgICAgICAgICAgYi54ID0gLTM1OwotICAgICAgICAgICAgcmV0dXJuIChh
ICsgYikueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNjQ1IC0gMzUpOwotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNTdhZTdhNmMyMTE0YmIzNTZhOGU0MzI0ZGRkMWJhYTAzZjgwYTJlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvclBsdXMKLVBBU1MgdmVjdG9yUGx1c1NjYWxhcgot
UEFTUyB2ZWN0b3JQbHVzU2NhbGFyMgotUEFTUyBtYXRyaXhQbHVzCi1QQVNTIG1hdHJpeFRpbWVz
U2NhbGFyCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLXBsdXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg0
NmJlNTBiNjQ4MGM5OTQzMjgxYjVmNzVhZjIyNTI4NzZlYjQwNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3Bl
cmF0b3ItcGx1cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+UGx1cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1cyA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxv
YXQyIHkgPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geSArIHg7Ci0g
ICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10pLCAzMC81NSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvclBsdXNTY2FsYXIg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9v
KCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAg
IGZsb2F0MiByID0geCArIDEwLjA7Ci0gICAgICAgICAgICByZXR1cm4gci55IC8gci54OwotICAg
ICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMC8yMCwgZXBzaWxvbik7Ci19OwotCi13aGxz
bFRlc3RzLnZlY3RvclBsdXNTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxv
YXQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IDEwLjAgKyB4OwotICAgICAgICAg
ICAgcmV0dXJuIHIueSAvIHIueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzAv
MjAsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhQbHVzID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAg
ICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG0yOwot
ICAgICAgICAgICAgbTJbMF0gPSBmbG9hdDIoLTIwLCAtMzApOwotICAgICAgICAgICAgbTJbMV0g
PSBmbG9hdDIoLTQwLCAtNTApOwotICAgICAgICAgICAgbSA9IG0gKyBtMjsKLSAgICAgICAgICAg
IGlmIChtWzBdWzBdID09IDAgJiYgbVswXVsxXSA9PSAwICYmIG1bMV1bMF0gPT0gMCAmJiBtWzFd
WzFdID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLm1hdHJpeFRpbWVzU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAg
ICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIo
NDAsIDUwKTsKLQotICAgICAgICAgICAgbSA9IG0gKyAxMC4wOwotCi0gICAgICAgICAgICBpZiAo
bVswXVswXSA9PSAzMC4wICYmIG1bMF1bMV0gPT0gNDAuMCAmJiBtWzFdWzBdID09IDUwLjAgJiYg
bVsxXVsxXSA9PSA2MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy5tYXRyaXhUaW1lc1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBt
OwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9
IGZsb2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gMTAuMCArIG07Ci0KLSAgICAgICAg
ICAgIGlmIChtWzBdWzBdID09IDMwLjAgJiYgbVswXVsxXSA9PSA0MC4wICYmIG1bMV1bMF0gPT0g
NTAuMCAmJiBtWzFdWzFdID09IDYwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE2OTE1NmRjMzA5YjE2MTc1ODg3YTA0
YWE5ZmJjZDRmMTllODZhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yU3ludGF4
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxYjc3OTM1YmM2OGFlNmFmMzc0NjZkNmFiYzNl
ODRjMjUzZDI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw0NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PlNvbWUgb3BlcmF0b3JzIHNob3VsZCBiZSBzeW50YXggZXJyb3JzLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm9wZXJhdG9yU3ludGF4ID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBp
bnQgb3BlcmF0b3IuZm9vKEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3Iu
Zm9vPShGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciYu
Zm9vKEZvbykgeyBpbnQgeDsgcmV0dXJuICZ4OyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXShG
b28sIHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXT0oRm9vLCB1
aW50KSB7IHJldHVybiA0MjsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10oRm9v
LCB1aW50KSB7IGludCB4OyByZXR1cm4gJng7IH0KLSAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdGltZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhN2M4ZTVhNWZhMTgwNGRlY2Q0N2FmODEwZGVkODQxZmM4YTVmZjkxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw4ICswLDAgQEAKLQotUEFTUyB2ZWN0b3JUaW1lcwotUEFTUyB2ZWN0b3JUaW1lc1dpdGhTY2Fs
YXIKLVBBU1MgdmVjdG9yVGltZXNXaXRoU2NhbGFyMgotUEFTUyBtYXRyaXhUaW1lcwotUEFTUyBt
YXRyaXhUaW1lc1NjYWxhcgotUEFTUyBtYXRyaXhUaW1lc1NjYWxhcjIKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDY0N2UwMjQ4Nzc2YTYxN2MzMWJkZDA4ODNlYmI1MGVjNTIyZDMxNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRpbWVzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52
ZWN0b3JUaW1lcyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigyLCA1KTsKLSAg
ICAgICAgICAgIGZsb2F0MiB5ID0gZmxvYXQyKDMsIDEwKTsKLSAgICAgICAgICAgIGZsb2F0MiBy
ID0geSAqIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAg
YDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10pLCA2LzUwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9y
VGltZXNXaXRoU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAy
MCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggKiAyLjA7Ci0gICAgICAgICAgICByZXR1cm4g
ci54ICogci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMCAqIDQwLCBlcHNp
bG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yVGltZXNXaXRoU2NhbGFyMiA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAg
ICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAgZmxvYXQyIHIg
PSAyLjAgKiB4OwotICAgICAgICAgICAgcmV0dXJuIHIueCAqIHIueTsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgMjAgKiA0MCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1h
dHJpeFRpbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0g
PSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQot
ICAgICAgICAgICAgZmxvYXQyeDIgbTI7Ci0gICAgICAgICAgICBtMlswXSA9IGZsb2F0MigtMS4w
LCAtMS4wKTsKLSAgICAgICAgICAgIG0yWzFdID0gZmxvYXQyKC0xLjAsIC0xLjApOwotCi0gICAg
ICAgICAgICBtID0gbSAqIG0yOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAm
JiBtWzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAu
MCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0
cml4VGltZXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAg
bVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTAp
OwotCi0gICAgICAgICAgICBtID0gbSAqIC0xLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBd
ID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFd
WzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhUaW1lc1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwot
ICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZs
b2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gLTEuMCAqIG07Ci0KLSAgICAgICAgICAg
IGlmIChtWzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAt
NDAuMCAmJiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNz
aWduLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0
MjA2ZmEzZjQ1NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
dmVjdG9yLWFzc2lnbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LQotUEFTUyB2ZWN0b3JJbmRleEFzc2lnbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOGI0ZTY2NDE2YmU2MTI0ZTYzMWU0OTM5ZThlMDNiZDM4NjdjOTlkYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZp
eC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAu
MDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJbmRleEFzc2lnbiA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50
MiB4OwotICAgICAgICAgICAgeFswXSA9IDIwOwotICAgICAgICAgICAgeFsxXSA9IDEwOwotICAg
ICAgICAgICAgeFs1MDAwXSA9IDQwOwotICAgICAgICAgICAgcmV0dXJuIHgueCAvIHgueSArIHhb
NTAwMF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCA0MCAvIDEwICsgNDApOwotfTsKLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTcyNTU3MTdjZDc0ZTkxNGY4Y2Y2NjVi
YTZlZmRjYmQwZWRhMzI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JJbmRl
eExvYWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZl
Y3Rvci1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9y
LWxvYWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiMzc0NjdhMDI3MDAw
ZDBhMmUxMmZlYTAyNTg1YjhiYmI1YzQ3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9y
LWxvYWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9y
SW5kZXhMb2FkID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB4LnggPSAyMDsK
LSAgICAgICAgICAgIHgueSA9IDEwOwotICAgICAgICAgICAgeFs1MDAwXSA9IDQwOwotICAgICAg
ICAgICAgcmV0dXJuIHhbMF0gLyB4WzFdICsgeFs1MDAwXTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIDQwLzEwICsgNDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHktZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2EzOTgwYWFhODE4MWQx
MDQwYTNiNGRhNTVmOGEzMTkzNzhjYzI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBvcGVyYXRvclhZ
Ci1QQVNTIGFzc2lnbk9wZXJhdG9yWFkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLXh5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3IteHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdjYTVhOGMwODkwNjVh
MTEwZWYyNTlkNDc3MzkxNzg4M2Q5ZTk5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHkuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+eHkuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9u
ID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLm9wZXJhdG9yWFkgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGlmIChi
b29sMih0cnVlLCBmYWxzZSkueHkueCkKLSAgICAgICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkgewotICAgICAg
ICAgICAgaWYgKGJvb2wyKHRydWUsIGZhbHNlKS55eC55KQotICAgICAgICAgICAgICAgIHJldHVy
biAyNDsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXoo
KSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDIwLCAxMCk7Ci0gICAgICAgICAgICB4ID0g
eC54eTsKLSAgICAgICAgICAgIHJldHVybiB4LnggLSB4Lnk7Ci0gICAgICAgIH0KLSAgICBgOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJiYXIiLCBbXSksIDI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiYmF6IiwgW10pLCAxMCk7Ci19OwotCi13aGxzbFRlc3RzLmFzc2lnbk9w
ZXJhdG9yWFkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgYSwgaW50IGIpIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAg
IHgueHkgPSBpbnQyKGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIHgueCAtIHgueTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMjApLCBtYWtlSW50KDEwKV0pLCAxMCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDEwKSwgbWFrZUludCgyMCldKSwgLTEwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
b3ZlcmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2Fk
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1ZWY3YzFmZGNi
OTVlNjY2YmY2YmU3NmU0ZDhmYWQ1OWFhMmYzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgaW50T3Zlcmxv
YWRSZXNvbHV0aW9uCi1QQVNTIGludE92ZXJsb2FkUmVzb2x1dGlvblJldmVyc2VPcmRlcgotUEFT
UyBub3RFcXVhbHNPdmVybG9hZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3ZlcmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzk2YWU2NGQ0NTQ0MGMwMjQxYzM1NzFh
NDVhOWU1MWY0NmJkY2IwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5P
dmVybG9hZC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pbnRPdmVy
bG9hZFJlc29sdXRpb24gPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBpbnQgZm9vKHVpbnQpIHsg
cmV0dXJuIDI7IH0KLSAgICAgICAgaW50IGZvbyhmbG9hdCkgeyByZXR1cm4gMzsgfQotICAgICAg
ICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQyKTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMSk7Ci19Ci0KLXdo
bHNsVGVzdHMuaW50T3ZlcmxvYWRSZXNvbHV0aW9uUmV2ZXJzZU9yZGVyID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhmbG9hdCkgeyByZXR1cm4g
MzsgfQotICAgICAgICBpbnQgZm9vKHVpbnQpIHsgcmV0dXJuIDI7IH0KLSAgICAgICAgaW50IGZv
byhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICAgICAgaW50IGJhcigpIHsgcmV0dXJuIGZvbyg0Mik7
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJiYXIiLCBbXSksIDEpOwotfQotCi13aGxzbFRlc3RzLm5vdEVxdWFsc092ZXJsb2FkID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oRm9vLCBGb28p
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bs
dXMtZXF1YWxzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4
MThiNTA3Mjc1MjY0OGFiMmI3OWQ4ZjUzNzZkNDhlMGNjNjZlNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1
cy1lcXVhbHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBB
U1MgcGx1c0VxdWFscwotUEFTUyBwbHVzRXF1YWxzUmVzdWx0Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3BsdXMtZXF1YWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIx
MDliNzI0M2NhZTQyZDllZTY1MzRmYzg4ZDIxYjkyYjliMTA4OTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bs
dXMtZXF1YWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgb3ZlcnJpZGUgc3Vic2NyaXB0cy48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgeCArPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMu
cGx1c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICs9
IDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5N2IyNGYzMTE4NzU0ZmVkYTMxNzY5
ZDdhZWNkZjlkNGY3ZDc1ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwb2ludGVyVG9Q
b2ludGVyCi1QQVNTIHBvaW50ZXJUb01lbWJlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZiODU1MGI1ZmY2MGM2YWMyN2NkNTZjNWYxODFiN2NjNWM5N2UxYTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3BvaW50ZXItc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0
IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucG9pbnRl
clRvUG9pbnRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRo
cmVhZCBpbnQqIHAgPSAmeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqKiBwcCA9ICZwOwotICAg
ICAgICAgICAgaW50KnRocmVhZCp0aHJlYWQgcXEgPSBwcDsKLSAgICAgICAgICAgIGludCByZXN1
bHQgPSAwOwotICAgICAgICAgICAgeCA9IDQyOwotICAgICAgICAgICAgKnAgPSA3NjsKLSAgICAg
ICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgKipwcCA9IDM5OwotICAgICAgICAgICAg
cmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICAqKnFxID0gODM7Ci0gICAgICAgICAgICByZXN1bHQg
Kz0geDsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgOwotICAg
IGF3YWl0IGNoZWNrRmFpbChwcm9ncmFtKTsKLX0KLQotd2hsc2xUZXN0cy5wb2ludGVyVG9NZW1i
ZXIgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0
MyB4OwotICAgICAgICAgICAgICAgIHRocmVhZCBmbG9hdCogeSA9ICZ4WzFdOwotICAgICAgICAg
ICAgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0
M3gzIHg7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGZsb2F0MyogeSA9ICZ4WzFdOwotICAgICAg
ICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4
LXByZWZpeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1w
cmVmaXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDQ0Mzk2
NzE0NGZiNWUwOTc0MGZmMTNiMzNmNTgyMWRmNTM4NzQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4
LXByZWZpeC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLVBB
U1MgcHJlZml4UGx1c1BsdXMKLVBBU1MgcHJlZml4UGx1c1BsdXNSZXN1bHQKLVBBU1MgcG9zdGZp
eFBsdXNQbHVzCi1QQVNTIHBvc3RmaXhQbHVzUGx1c1Jlc3VsdAotUEFTUyBwcmVmaXhNaW51c01p
bnVzCi1QQVNTIHByZWZpeE1pbnVzTWludXNSZXN1bHQKLVBBU1MgcG9zdGZpeE1pbnVzTWludXMK
LVBBU1MgcG9zdGZpeE1pbnVzTWludXNSZXN1bHQKLVBBU1MgcGx1c0VxdWFscwotUEFTUyBwbHVz
RXF1YWxzUmVzdWx0Ci1QQVNTIG1pbnVzRXF1YWxzCi1QQVNTIG1pbnVzRXF1YWxzUmVzdWx0Ci1Q
QVNTIHRpbWVzRXF1YWxzCi1QQVNTIHRpbWVzRXF1YWxzUmVzdWx0Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDUzMmY3Y2M4ZWUxMTY2Y2EwMGExZjE1OTZiODlmNWZjZjQ3NTJhYzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnByZWZpeFBsdXNQbHVz
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhp
bnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgKyt4OwotICAgICAgICAgICAgcmV0dXJuIHg7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjUpOwotfQotCi13aGxzbFRlc3Rz
LnByZWZpeFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICsreDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNs
VGVzdHMucG9zdGZpeFBsdXNQbHVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeCsrOwot
ICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwg
NjUpOwotfQotCi13aGxzbFRlc3RzLnBvc3RmaXhQbHVzUGx1c1Jlc3VsdCA9IGFzeW5jICgpID0+
Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB4Kys7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2
NCldKSwgNjQpOwotfQotCi13aGxzbFRlc3RzLnByZWZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICAtLXg7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4TWludXNN
aW51c1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtLXg7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjMpOwotfQotCi13aGxzbFRlc3RzLnBvc3Rm
aXhNaW51c01pbnVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeC0tOwotICAgICAgICAg
ICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjMpOwotfQot
Ci13aGxzbFRlc3RzLnBvc3RmaXhNaW51c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHgtLTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2
NCk7Ci19Ci0KLXdobHNsVGVzdHMucGx1c0VxdWFscyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHggKz0gNDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDM4NSldKSwgMzg1ICsgNDIpOwotfQotCi13aGxzbFRlc3RzLnBsdXNFcXVhbHNSZXN1
bHQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCArPSA0MjsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1ICsgNDIpOwotfQotCi13aGxzbFRlc3RzLm1p
bnVzRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4IC09IDQyOwotICAgICAgICAg
ICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAtIDQy
KTsKLX0KLQotd2hsc2xUZXN0cy5taW51c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHggLT0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUp
XSksIDM4NSAtIDQyKTsKLX0KLQotd2hsc2xUZXN0cy50aW1lc0VxdWFscyA9IGFzeW5jICgpID0+
IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgeCAqPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKiA0Mik7Ci19Ci0KLXdobHNsVGVzdHMudGlt
ZXNFcXVhbHNSZXN1bHQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICo9IDQy
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKiA0Mik7Ci19Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOTMzOTQyZTgxZmQ4
MTk2ZTYxYjgwMTczMWZhNjFjODkzMTdmZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1
YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot
Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlCi1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlMgotUEFTUyBk
b250RXZhbHVhdGVUd2ljZTMKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U0Ci1QQVNTIGRvbnRFdmFs
dWF0ZVR3aWNlNQotUEFTUyBkb250RXZhbHVhdGVUd2ljZTYKLVBBU1MgZG9udEV2YWx1YXRlVHdp
Y2U3Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlOAotUEFTUyBkb250RXZhbHVhdGVUd2ljZTkKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24t
b3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9u
LW9yZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YzI4NzE5MWE3Nzgz
NGJlYTg2NzFlMzk1NTc4NmI5YzhlMzdjYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1
YXRpb24tb3JkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmV2YWx1YXRpb24gb3JkZXIgYW5kIHRpbWVzLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNl
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFy
KHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAg
ICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBvbGQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDA7Ci0gICAg
ICAgICAgICBpbnRbNDJdIGFycjsKLSAgICAgICAgICAgIGFyclswXSA9IDQyOwotCi0gICAgICAg
ICAgICBpbnQgcmVzdWx0ID0gYXJyW2JhcigmeCldOwotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dCA9PSA0MiAmJiB4ID09IDE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07
Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UyID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFyKHRocmVhZCB1aW50W10gYXJyLCB1aW50
IGluZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICB1aW50IG9sZCA9ICpwdHI7
Ci0gICAgICAgICAgICBhcnJbaW5kZXhdID0gb2xkOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIg
KyAxOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIHVpbnRbM10gaW5k
aWNlczsKLQotICAgICAgICAgICAgdWludFs0XVs0XVs0XSBhcnI7Ci0KLSAgICAgICAgICAgIGFy
cltiYXIoQGluZGljZXMsIDAsICZ4KV1bYmFyKEBpbmRpY2VzLCAxLCAmeCldW2JhcihAaW5kaWNl
cywgMiwgJngpXSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGFyclswXVswXVswXSA9PSA0Mgot
ICAgICAgICAgICAgICAgICYmIGluZGljZXNbMF0gPT0gMSAKLSAgICAgICAgICAgICAgICAmJiBp
bmRpY2VzWzFdID09IDIgCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1syXSA9PSAzCi0gICAg
ICAgICAgICAgICAgJiYgeCA9PSA0OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlMyA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB1aW50WzJdWzJdIGJhc2UodGhyZWFkIHVpbnRb
XSBhcnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQg
b2xkID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAq
cHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICB1aW50WzJdWzJdIHJlc3VsdDsKLSAgICAgICAg
ICAgIHJlc3VsdFswXVswXSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAg
ICAgfQotCi0gICAgICAgIHVpbnQgYmFyKHRocmVhZCB1aW50W10gYXJyLCB1aW50IGluZGV4LCB0
aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICB1aW50IG9sZCA9ICpwdHI7Ci0gICAgICAg
ICAgICBhcnJbaW5kZXhdID0gb2xkOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIHVpbnRbM10gaW5kaWNlczsKLQot
ICAgICAgICAgICAgdWludCByZXN1bHQgPSBiYXNlKEBpbmRpY2VzLCAwLCAmeClbYmFyKEBpbmRp
Y2VzLCAxLCAmeCldW2JhcihAaW5kaWNlcywgMiwgJngpXTsKLQotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdCA9PSA0MgotICAgICAgICAgICAgICAgICYmIGluZGljZXNbMF0gPT0gMQotICAgICAg
ICAgICAgICAgICYmIGluZGljZXNbMV0gPT0gMiAKLSAgICAgICAgICAgICAgICAmJiBpbmRpY2Vz
WzJdID09IDMKLSAgICAgICAgICAgICAgICAmJiB4ID09IDQ7Ci0gICAgICAgIH0KLSAgICBgOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U0ID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFyKHRocmVh
ZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAg
ICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBvbGQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnRbMl0gYXJyOwotCi0gICAgICAg
ICAgICB1aW50IHggPSAxOwotCi0gICAgICAgICAgICBhcnJbYmFyKCZ4KV0gKz0gNjY2OwotCi0g
ICAgICAgICAgICByZXR1cm4gYXJyWzFdID09IDY2NiAmJiB4ID09IDI7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U1
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHRocmVhZCB1
aW50KiBnZXRQdHIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgKnB0ciA9ICpwdHIg
KyAxOwotICAgICAgICAgICAgcmV0dXJuIHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLSAgICAgICAgICAgIHVpbnQgcmVzdWx0
ID0gKCpnZXRQdHIoJngpKSsrOwotICAgICAgICAgICAgcmV0dXJuIHggPT0gMyAmJiByZXN1bHQg
PT0gMjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5kb250RXZhbHVhdGVUd2ljZTYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgdGhyZWFkIHVpbnQqIGdldFB0cih0aHJlYWQgdWludCogcHRyKSB7Ci0gICAg
ICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAg
ICAgICAgICAgdWludCByZXN1bHQgPSArKygqZ2V0UHRyKCZ4KSk7Ci0gICAgICAgICAgICByZXR1
cm4geCA9PSAzICYmIHJlc3VsdCA9PSAzOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1
ZSk7Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlNyA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWludFtdIGdldEFycih0aHJl
YWQgdWludFtdIHZhbHVlLCB0aHJlYWQgdWludFtdIGluZGljZXMsIHVpbnQgaW5kZXgsIHRocmVh
ZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIGluZGljZXNbaW5kZXhdID0gKnB0cjsKLSAgICAg
ICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHVpbnQgZ2V0VmFsdWUodWludCByZXQsIHRocmVhZCB1aW50W10gaW5k
aWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNl
c1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAg
ICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAg
ICAgICAgdWludCB4ID0gMTsKLSAgICAgICAgICAgIHVpbnRbM10gYXJyOwotICAgICAgICAgICAg
dWludFsxXSB2YWx1ZTsKLSAgICAgICAgICAgIHZhbHVlWzBdID0gMTsKLQotICAgICAgICAgICAg
Z2V0QXJyKEB2YWx1ZSwgQGFyciwgMCwgJngpW2dldFZhbHVlKDAsIEBhcnIsIDEsICZ4KV0gKz0g
Z2V0VmFsdWUoNjY1LCBAYXJyLCAyLCAmeCk7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSA0Ci0g
ICAgICAgICAgICAgICAgJiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiBhcnJbMV0g
PT0gMgotICAgICAgICAgICAgICAgICYmIGFyclsyXSA9PSAzCi0gICAgICAgICAgICAgICAgJiYg
dmFsdWVbMF0gPT0gNjY2OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlOCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGdldFZhbHVlKHVpbnQgcmV0LCB0aHJlYWQgdWlu
dFtdIGluZGljZXMsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAg
IGluZGljZXNbaW5kZXhdID0gKnB0cjsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgdWludFtd
IGdldEFycih0aHJlYWQgdWludFtdIHZhbHVlLCB0aHJlYWQgdWludFtdIGluZGljZXMsIHVpbnQg
aW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIGluZGljZXNbaW5kZXhdID0g
KnB0cjsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWlu
dCB4ID0gMTsKLSAgICAgICAgICAgIHVpbnRbM10gYXJyOwotICAgICAgICAgICAgdWludFsxXSB2
YWx1ZTsKLSAgICAgICAgICAgIHZhbHVlWzBdID0gMTsKLQotICAgICAgICAgICAgZ2V0QXJyKEB2
YWx1ZSwgQGFyciwgMCwgJngpW2FycltnZXRWYWx1ZSgwLCBAYXJyLCAxLCAmeCldXSArPSBnZXRW
YWx1ZSg2NjUsIEBhcnIsIDIsICZ4KTsKLQotICAgICAgICAgICAgcmV0dXJuIHggPT0gNAotICAg
ICAgICAgICAgICAgICYmIGFyclswXSA9PSAxCi0gICAgICAgICAgICAgICAgJiYgYXJyWzFdID09
IDIKLSAgICAgICAgICAgICAgICAmJiBhcnJbMl0gPT0gMwotICAgICAgICAgICAgICAgICYmIHZh
bHVlWzBdID09IDY2NjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgdGhyZWFkIHVpbnRbMV0qIGdldFZhbHVlKHRocmVhZCB1aW50
WzFdKiBhcnIsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQq
IHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAg
KnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIGFycjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLSAgICAgICAgICAg
IHVpbnRbMV0gYXJyOwotICAgICAgICAgICAgdWludFsxXSB2YWx1ZTsKLSAgICAgICAgICAgIHZh
bHVlWzBdID0gMTsKLQotICAgICAgICAgICAgKCpnZXRWYWx1ZSgmdmFsdWUsIEBhcnIsIDAsICZ4
KSlbMF0gKz0gNjY1OwotCi0gICAgICAgICAgICByZXR1cm4geCA9PSAyCi0gICAgICAgICAgICAg
ICAgJiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiB2YWx1ZVswXSA9PSA2NjY7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Jl
YWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdh
ZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21i
aWVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJp
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdo
LXpvbWJpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFiNGQ0NGRmYzY0
NTgwNDUyNDYxYjJkODEyNjVlZjc5N2M2MjYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnkt
d3JpdGUtaGlnaC16b21iaWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLWJvb2wgZmlsbCh0aHJlYWQgZmxvYXQ0eDQqIG1hdCwgZmxvYXQg
dmFsdWUpCi17Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8
IDQ7IGkgPSBpICsgMSkgewotICAgICAgICAgICAgcmVzdWx0W2ldID0gZmxvYXQ0KHZhbHVlLCB2
YWx1ZSwgdmFsdWUsIHZhbHVlKTsKLSAgICB9Ci0gICAgKm1hdCA9IHJlc3VsdDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0
ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJl
YWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdDR4NCBtYXQ7Ci0gICAgZmls
bCgmbWF0LCA0KTsKLQotICAgIGZsb2F0NCB2ZWM7Ci0gICAgdmVjWzBdICs9IG1hdFswXVswXSAr
IG1hdFswXVsxXSArIG1hdFszXVsyXTsKLQotICAgIGZsb2F0IHZhbHVlID0gNDI7Ci0gICAgdmFs
dWUgKz0gdmVjWzBdOwotCi0gICAgbWF0WzBdWzBdICs9IChtYXRbMF1bMF0gKz0gKHZhbHVlICs9
IG1hdFswXVswXSkpOwotCi0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gbWF0WzBdWzBd
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
c3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlv
dXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZl
clVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
YnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVC
dWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25z
dCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZl
ciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNv
dXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHts
YXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVy
KGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25z
dCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygp
OwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3Vs
dHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNjYpCi0g
ICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMDU2YTNhZmJmZTNmOWYwOTc1OTc4NmYwZjI2Mjdi
MzczMTM4YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygx
LCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIg
OiByZWdpc3Rlcih1MCkpIHsKLSAgICBidWZmZXJbMF0gPSAxOwotICAgIGJ1ZmZlclsxXSA9IGJ1
ZmZlclswXSsrOwotCi0gICAgYnVmZmVyWzJdID0gMTsKLSAgICBidWZmZXJbM10gPSArK2J1ZmZl
clsyXTsKLQotICAgIGJ1ZmZlcls0XSA9IDE7Ci0gICAgYnVmZmVyWzRdICs9IDU7Ci0KLSAgICBi
dWZmZXJbNV0gPSAxOwotICAgIGJ1ZmZlcls1XSAqPSA3OwotCi0gICAgaW50IHRvdGFsID0gMTQ7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSArPSAyKSB7Ci0gICAgICAgIHRvdGFsICs9
IGk7Ci0gICAgfQotICAgIGJ1ZmZlcls2XSA9IHRvdGFsOwotCi0gICAgdG90YWwgPSAxNDsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAgICAgdG90YWwgKz0gaTsKLSAg
ICB9Ci0gICAgYnVmZmVyWzddID0gdG90YWw7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dCgpIHsKLSAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRh
cHRlcigpOwotICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgp
OwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBj
b25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9S
QUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5k
aW5nID0ge2J1ZmZlcjogYnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIg
PSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRl
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNv
bnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAg
ICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAg
ICBpZiAocmVzdWx0c1swXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNbMV0gPT0gMQotICAgICAg
ICAmJiByZXN1bHRzWzJdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1szXSA9PSAyCi0gICAgICAg
ICYmIHJlc3VsdHNbNF0gPT0gNgotICAgICAgICAmJiByZXN1bHRzWzVdID09IDcKLSAgICAgICAg
JiYgcmVzdWx0c1s2XSA9PSAzNAotICAgICAgICAmJiByZXN1bHRzWzddID09IDU5KQotICAgICAg
ICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
IGJ1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVjdXJzaXZlLXN0cnVjdHMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTYwODYyNjUxYTliYTNlMDM1ZTk5YmZkZjY3
ZmY5NzVkMzkyZDJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBtdXR1YWxseVJlY3Vyc2l2
ZVN0cnVjdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVjdXJzaXZl
LXN0cnVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzdkZmU4ZGMyM2I3YmY2NWNj
YWU4OWJiODdhYjhmZWY5Zjk1Zjc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1o
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13
aGxzbFRlc3RzLm11dHVhbGx5UmVjdXJzaXZlU3RydWN0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAg
ICAgICAgICAgICAgIEJhciBiYXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3Qg
QmFyIHsKLSAgICAgICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci0KLS8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTk3NjY6IFRoaXMgc2hvdWxkIGNvbXBpbGUuCi0vLyB3aGxzbFRlc3RzLm11
dHVhbGx5UmVjdXJzaXZlU3RydWN0V2l0aFBvaW50ZXJzQnJva2VuID0gYXN5bmMgKCkgPT4KLS8v
IHsKLS8vICAgICBsZXQgcHJvZ3JhbSA9IGAKLS8vICAgICAgICAgc3RydWN0IEZvbyB7Ci0vLyAg
ICAgICAgICAgICB0aHJlYWQgQmFyKiBiYXI7Ci0vLyAgICAgICAgICAgICBpbnQgZm9vOwotLy8g
ICAgICAgICB9Ci0vLyAgICAgICAgIHN0cnVjdCBCYXIgewotLy8gICAgICAgICAgICAgdGhyZWFk
IEZvbyogZm9vOwotLy8gICAgICAgICAgICAgaW50IGJhcjsKLS8vICAgICAgICAgfQotLy8gICAg
ICAgICBpbnQgZm9vKCkKLS8vICAgICAgICAgewotLy8gICAgICAgICAgICAgRm9vIGZvbzsKLS8v
ICAgICAgICAgICAgIEJhciBiYXI7Ci0vLyAgICAgICAgICAgICBmb28uZm9vID0gNTY0OwotLy8g
ICAgICAgICAgICAgYmFyLmJhciA9IDUzOwotLy8gICAgICAgICAgICAgcmV0dXJuIGZvby5iYXIt
PmJhciAtIGJhci5mb28tPmZvbzsKLS8vICAgICAgICAgfQotLy8gICAgIGA7Ci0vLyAgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7
Ci0vLyB9Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFy
aWFibGUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2Jl
N2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJu
LWxvY2FsLXZhcmlhYmxlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9y
ZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1
cm4tbG9jYWwtdmFyaWFibGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjcw
YzI4M2ZlNjhiNzY1ZGY2MjYwMmQ3M2QxNmI0YjIwMDI5ZjMwZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0
dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQot
ZmxvYXQgY29weShmbG9hdCB2KSB7Ci0gICAgZmxvYXQgbG9jYWwgPSB2OwotICAgIHJldHVybiBs
b2NhbDsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9u
IDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRl
eE91dCByZXN1bHQ7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1
bHQuc2hhZGUgPSBjb3B5KHNoYWRlKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjAp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7
c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29u
c3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1
dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFw
KCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOWFhZDA1NTY1MmIwZDViZjFiNDk3Y2U3
MDUyNGI2MmU0MDhjZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyByZXR1cm5JZgotUEFT
UyByZXR1cm5SZWZlcmVuY2VUb1NhbWVQYXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Q
YXJhbWV0ZXJXaXRoRGlmZmVyZW50RnVuY3Rpb25zCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvUGFy
YW1ldGVyCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZVdpdGhOZXN0aW5nCi1Q
QVNTIHJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZQotUEFTUyByZXR1cm5JbnRMaXRlcmFs
VWludAotUEFTUyByZXR1cm5JbnRMaXRlcmFsRmxvYXQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTM5ZjhiMTQwYWE3MzM5YzRiODI1M2M2ZGZhNGEyN2EwMjY3NmU4NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5yZXR1
cm5JZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW50IHkgPSA2OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50
IGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0g
ICAgICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB5ID0gODsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAgICBp
ZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2Owot
ICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHJldHVybiA4OwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzKV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSks
IDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNSldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0pLCAxMCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcp
XSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg4KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDkpXSksIDEwKTsKLQotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAg
aWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHggPT0gOSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBwcm9n
cmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
bnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIDg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHkgPSA5OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCgzKV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpXSksIDkpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg2KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg5KV0pLCA5KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkg
PSA2OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMTE7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAg
ICAgICAgaWYgKHggPT0gNykKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDg7Ci0gICAgICAgICAg
ICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDYpOwotfTsKLQot
d2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1NhbWVQYXJhbWV0ZXIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gcGx1cyhiYXIoNSksIGJhcig3KSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKnggKyAqeTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQq
IGJhcihpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9
Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSksIDE0KTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuUmVmZXJlbmNlVG9Q
YXJhbWV0ZXJXaXRoRGlmZmVyZW50RnVuY3Rpb25zID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICpiYXIoMTApICsgKmJheigyMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50
KiBiYXIoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmeDsKLSAgICAgICAg
fQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJheihpbnQgeSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICZ5OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwKTsKLX07Ci0KLXdobHNs
VGVzdHMucmV0dXJuUmVmZXJlbmNlVG9QYXJhbWV0ZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oYm9vbCBjb25kaXRpb24pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAqYmFyKGNvbmRpdGlvbiwgMSwgMik7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aHJlYWQgaW50KiBiYXIoYm9vbCBjb25kaXRpb24sIGludCBhLCBpbnQgYikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbiA/ICZhIDogJmI7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pLCAy
KTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlV2l0aE5l
c3RpbmcgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcigpICsgKmJheigpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmFyKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaW50IGEgPSAyMDsKLSAgICAgICAgICAgIHJldHVybiAmYTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRocmVhZCBpbnQqIGJheigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBhID0gMjI7
Ci0gICAgICAgICAgICByZXR1cm4gJmE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIpOwot
fTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb0xvY2FsVmFyaWFibGUgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKmJhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFk
IGludCogYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGEgPSA0MjsKLSAgICAgICAg
ICAgIHJldHVybiAmYTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxz
bFRlc3RzLnJldHVybkludExpdGVyYWxVaW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gInVpbnQgZm9vKCkgeyByZXR1cm4gNDI7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxz
bFRlc3RzLnJldHVybkludExpdGVyYWxGbG9hdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJv
Z3JhbSA9ICJmbG9hdCBmb28oKSB7IHJldHVybiA0MjsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi1y
dW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTEwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEy
NzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTEwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGViODQzMTJmZDUwMGJhNTUxMmM3NzZkZWFkZjFkMzQ2MWVmNzNj
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZl
cnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28g
PSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyB4OwotICAgIHJldHVybiBmbG9h
dDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0
IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAg
Y29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVu
dFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRl
cywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0
OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Nl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25z
dCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9Owot
ICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFp
bkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3Vy
cmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAs
IGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFj
aG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJj
bGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlw
dG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNv
bnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShy
ZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEs
IDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTExLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTEtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJm
ZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTExLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlMWYzNWM1ODQ1NTYxZjI0MTVlZWRkNWZkYjFj
OTI3NmRjZTdjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9v
IGY7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24g
c3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBm
cmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTog
dmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29u
c3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3Jt
YXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVT
ZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBl
bGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7
dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0
aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNh
bXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
NF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTItZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xMi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQ0Yjk2ZjQ3
NmQwODNhM2NjZjUyZjBlNTRjMmQ4YmIyY2NjOTA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4
IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNW
X1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRT
aGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAgdgotfQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAw
IHsKLSAgICBGb28gZiA9IEZvby52OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19
Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRl
eFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3Ry
aWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0g
W2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9
OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGlu
ZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVU
b3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3Rh
dGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVy
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2
ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4
dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlw
dG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFp
biA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAg
ICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9
OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1
cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJz
dG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNo
bWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9y
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwg
WzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFu
ZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBk
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTEzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2
ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTEzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGIzNDEyMjk0ZjAwMzU5NzJmMjE3ZmE0MjMwNzFkMThkNmE0MmM1ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRl
clNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICBy
ZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10
eXBlZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0
NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIi
fTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAg
Y29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJu
b25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFs
cGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5B
TEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3Qg
YXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBj
b25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRl
eEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
PSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
dmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJh
eUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAx
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAs
IFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwg
MCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1h
bmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUo
KS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
NC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZl
YmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGU2ZDkzNDdkMTM5Mzg4M2U2YWYyNjkxODk0MjMw
MDNiZjdmNmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBm
cmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
KSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsK
LQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFk
ZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2
ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3Rh
dGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBo
YUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
U3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwg
d3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTog
MTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1
dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5Wzhd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
NS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4
YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg5NDJiNzI3NTk4NDgyOWRjOThiNDM4ZmRiZWIxMDQ0ODU3ZGVjZDguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAgeAotfQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVt
IEZvbyB7Ci0gICAgeAotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNv
bnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAg
IGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xNi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmVi
YTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4cGVjdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MDE1MDkwODVhNzUwODEwNmViZDZmYzc2NjczNDA4
OGU5MzZhOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJldHVy
biBmbG9hdDQoMCwgMCwgMCwgMCk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBo
ZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEx
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29s
dmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJD
b2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTctZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xNy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hp
dGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTcuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xNy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTFi
MTVlNzY3N2FkZjJkMGYyMWNjNzc5ZGJlYzJiZTI0NmNiOGQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAot
dHlwZWRlZiBGb28gPSBmbG9hdDsKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28g
PSBmbG9hdDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHggPSAxOwotICAgIHJldHVy
biBmbG9hdDQoeCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkg
ewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50
U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAi
OwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxN
b2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
ckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5v
cm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9y
V3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAg
IGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRl
XX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBm
cmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xv
clN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4
QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVm
ZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTgtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRk
MTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjOGI4N2FmNTg5YzVlM2M4ZjAzMTU2
MjhhMGNiNzcyODY3ODQ2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExMSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGZs
b2F0IHg7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwot
Ci1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGZsb2F0
IHg7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyBmOwotICAgIGYueCA9IDE7Ci0g
ICAgcmV0dXJuIGZsb2F0NChmLngsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVS
VEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
Z3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDog
ImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0g
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZp
ZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNv
bnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7
Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAg
IGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTE5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MjUwOWUyOGFiYTVm
NjU4NDdkMmNmYmFlYjFmYTAxOTA5NGI5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7
Ci0gICAgeAotfQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsK
LQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAgeCA9IDAs
Ci0gICAgeSA9IDEKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgaW50IHkgPSBpbnQoRm9v
LnkpOwotICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeSksIDEsIDEsIDEpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0
dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwot
fQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDdiMzY3
M2VmYzBjN2Y4ODZlYjM1ZDdhMjNhMDQwNjVlNDcxOWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0
ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDog
U1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgx
LCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
dmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2
ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21l
bnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7
c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0g
e3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0
aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNp
bFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlv
dXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJE
ZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNv
bnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVz
Y3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7
Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1
bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBh
OiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRU
ZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9w
OiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0
dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNz
RW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3Jp
cHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZl
cl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGNiZmY1
ZjBlM2ZiMTgyYmY5YTlmZWQ2YzFiNjBkNDgyMmZlM2Y3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12
ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0
NCgxLCAxLCAxLCAxKTsKLX0KLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgx
LCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigp
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZy
YWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1
dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0g
ICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NDNlZTM2ZWRkYmZmN2UwNTAwOGU1Yzk3YjgwNTIxYTE4ZTgzZDdhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlv
bjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0g
aW50OwotdHlwZWRlZiBGb28gPSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZp
Y2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVu
dFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAK
LSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0
NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmlj
ZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2Vk
KCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFT
UwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMGQ4MmMxMzQ4Yzk2NThkMWFjNDc5
YWFmODg0MzFiMjI3YmNlMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNl
ID0gYAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQg
eDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAx
KTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZl
cnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRl
eFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBm
cmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0
ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5w
dXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3Qg
aW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRH
cm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNl
LnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9n
eSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZl
cnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsK
LX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewot
ICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcx
MjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWI4ODkzMWVhN2I5ZjhlZTk1YzNhMGUxYTRiNzM0YzkwYmU3NDRlNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVy
dGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRp
b247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0g
ICAgeAotfQotZW51bSBGb28gewotICAgIHgKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0
KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdt
ZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21l
bnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRl
eFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZy
YWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
ICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAi
ZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBb
YXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBl
bGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERl
c2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVu
dFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRl
cywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0
OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
ZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJi
NzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1k
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiYzYzZGE2NjQ1YWQwZDFkMzJjZDU0ODRlNDIzNWY3YjhmMzBmOWQ3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNl
ID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29u
c3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdCBzYXR1cmF0ZShmbG9hdCB4LCBmbG9h
dCB5KSB7Ci0gICAgcmV0dXJuIDE7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoc2F0dXJhdGUoMywgNCksIHNhdHVyYXRlKDIpLCAxLCAxKTsKLX0KLWA7Ci0KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07
Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3Bv
bG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0g
e2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRl
cyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRl
TWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxT
dGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9u
OiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBh
dHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwot
ICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2
aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4
dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsg
Ly8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29u
c3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJl
c29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xl
YXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVw
dGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21t
YW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NmRmNTZmOWQ4ZjljMzc2ZTM2
YjkxNzhmYzJkNWI4NDM0ZTE3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNv
dXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcjIoZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwg
MSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9w
b2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRl
LCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3Bl
KCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgp
IHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2Vk
KCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MjYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQyNWU5MzBmODdmZmVhNjJi
Mjc3YTgzN2M5ZmVhNDdiODc1YjRhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQg
dmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlv
biB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBy
ZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwg
MSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZl
cnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRl
eFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBm
cmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0
ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5w
dXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3Qg
aW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRH
cm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBw
cmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhT
dGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZm
ZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hh
aW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0
IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1
cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRl
RGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6
IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91
dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0
b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2Nv
bG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRl
clBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NE
ZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBl
bGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1
NDJmZWU1NTU2ZTk1NDE1ODM5YmJlYWFiMmFiYWE5NzY1YzI0OTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9
IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29u
c3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24sIGJvb2wgaXNGb250RmFjZSA6IFNWX0lz
RnJvbnRGYWNlKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEp
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZy
YWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1
dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0g
ICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmRjZjkyMTVkY2M4YTk4N2Q5ODkwNGZiY2NjNzI0NTVjNmUzNzdiMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
My5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwg
MSwgMSk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwot
Ci1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIGhlbHBlcigpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21l
bnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJp
cCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3Vs
bE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1
bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29s
b3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0g
ICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2Uu
cG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgi
Iik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtNC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJjYWJiY2MxODg0ZGI5NjY0M2Q3ODk4NjVkYWFk
ZDE3NWY5NDY3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+
Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGludDsKLXZlcnRl
eCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50
U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geDsKLSAgICBy
ZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21l
bnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVu
dFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJh
Z21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0g
ICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJm
bG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFth
dHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBk
ZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBh
c3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtNS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBB
U1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5YThiODViOThhNDI2MzkzYzcxNzE5
YjExNmNhOTc5ZGE5ZTM3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxz
Y3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBp
bnQgeDsKLX0KLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsK
LQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewot
ICAgIEZvbyB4OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2Ug
PSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYs
IGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07
Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgi
dmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0g
ICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdk
MWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA4MmFm
YTUwMjRhMzhjOTIxN2Y2MWU1MTc0NzhkMzM5YTRkNzQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVu
dW0gRm9vIHsKLSAgICB2Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlv
bjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgRm9vIHggPSBGb28udjsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEp
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZy
YWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1
dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0g
ICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtNy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQx
ODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzc3ZGI2NDI1MTk3NDJjZmQ0NWMxYzkyNTNj
Njk0MjhkNzE2MGRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJl
dHVybiBmbG9hdDQoMCwgMCwgMCwgMCk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVy
biBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0
NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigpOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBm
cmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZy
YWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2
ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1h
dDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNl
dDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2
ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRp
b25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2Ft
cGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1h
dDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3Vy
ZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
ID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0
dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdl
dDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiBy
ZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25z
dCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNz
KCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwot
ICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTguaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkMDVhZGM5OGM1MGI4NzQzNjIzYTNhODIwYzI3MmNmYWM4
YWI1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25z
dCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0IHNh
dHVyYXRlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
ZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAi
dHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZh
Y2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zv
cm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1
fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBu
dWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25z
dCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBm
cmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xv
clN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAg
IHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYz
YWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCww
IEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy05Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODNmNTNjNzg0ZTlhYTdk
Zjg4NThmYzhkZDdkY2ZmY2Q5OTRiYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDY1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0
aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPSBgCi10eXBlZGVmIGJvb2wyID0gaW50OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVy
biBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOWQ4NTVlODRl
OWU0NTY5MDJmZDlkODExZGQ4NTk1MDM0MTVmMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YyNDQ3NjdiZTE3YjFiYzhiZWNmYWE1Y2E1
ZjdmNTc4ZWNjMTE0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1Mgc2V0dGVyV2l0aE1hdGNo
ZWRUeXBlCi1QQVNTIHNldHRlcldpdGhOb0dldHRlck92ZXJsb2FkCi1QQVNTIHNldHRlcldpdGhO
b0dldHRlck92ZXJsb2FkRml4ZWQKLVBBU1MgcmVjdXJzaXZlU2V0dGVycwotUEFTUyBsb25lU2V0
dGVyCi1QQVNTIGxvbmVTZXR0ZXJQb2ludGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NldHRlci1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUwNDA1MDllZTZhYzIxNzQ5MmIzZWJkMjViNWZhMGE3NWIxNWRiODkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NldHRlci1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE1hdGNoZWRUeXBlID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0
b3IuZm9vKGludCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDU7Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IG9wZXJhdG9yLmZvbz0oaW50LCBpbnQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiA1NDM7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAg
ICAgIGludCB4OwotICAgICAgICAgICAgeC5mb28gPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4
OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgICAgIHJldHVybiB4LmZvbzsKLSAgICAgICAgfQotICAgIGApOwotfQotCi13aGxzbFRl
c3RzLnNldHRlcldpdGhOb0dldHRlck92ZXJsb2FkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgICAgICBzdHJ1Y3QgQmFyIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhGb28p
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDUzNDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIEJhciBvcGVyYXRvci5mb289KEJhciwgaW50KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBCYXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLnNldHRlcldpdGhOb0dldHRlck92ZXJsb2Fk
Rml4ZWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0
cnVjdCBCYXIgeyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb28oQmFyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gNTM0OwotICAgICAgICB9Ci0gICAgICAgIEJhciBvcGVyYXRvci5m
b289KEJhciwgaW50KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQmFyKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIEJhciBiYXI7Ci0gICAgICAg
ICAgICByZXR1cm4gYmFyLmZvbzsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkgewotICAg
ICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIGJhci5mb28gPSA1MjsKLSAgICAgICAgICAg
IHJldHVybiBiYXIuZm9vOwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMucmVj
dXJzaXZlU2V0dGVycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIGludCB5
OwotICAgICAgICB9Ci0gICAgICAgIHN0cnVjdCBCYXIgewotICAgICAgICAgICAgaW50IGE7Ci0g
ICAgICAgICAgICBpbnQgYjsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IuYyhCYXIg
YmFyKSB7IHJldHVybiBiYXIuYTsgfQotICAgICAgICBCYXIgb3BlcmF0b3IuYmFyKEZvbyBmb28p
IHsgQmFyIGI7IGIuYSA9IGZvby54OyBiLmIgPSBmb28ueTsgcmV0dXJuIGI7IH0KLSAgICAgICAg
QmFyIG9wZXJhdG9yLmM9KEJhciBiYXIsIGludCBuZXd2YWwpIHsgYmFyLmEgPSBuZXd2YWw7IHJl
dHVybiBiYXI7IH0KLSAgICAgICAgRm9vIG9wZXJhdG9yLmJhcj0oRm9vIGZvbywgQmFyIG5ld3Zh
bCkgeyBmb28ueCA9IG5ld3ZhbC5hOyBmb28ueSA9IG5ld3ZhbC5iOyByZXR1cm4gZm9vOyB9Ci0g
ICAgICAgIGludCBmKCkgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby54
ID0gZm9vLnkgPSAzOwotICAgICAgICAgICAgZm9vLmJhci5jID0gODsKLSAgICAgICAgICAgIHJl
dHVybiBmb28ueCoxMCArIGZvby55OwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVz
dHMubG9uZVNldHRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMubG9uZVNldHRlclBvaW50ZXIgPSBhc3lu
YyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
dGhyZWFkIGludCogb3BlcmF0b3IuZm9vPSh0aHJlYWQgaW50KiBwdHIsIGludCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMw
NjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU3M2FjZDQ4MjlmMzEzNzY5NDhlOWNjMGM2ZGM3ODAxZmQzZGFlNTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXZvaWQgZmlsbCh0aHJlYWQgaW50W10gYXJyYXksIGludCB2
YWx1ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdp
c3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBp
bnRbNDJdIGFycmF5OwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gNDIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAg
ICBpZiAoYXJyYXlbaV0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
cnJheVswXSA9IDUxNzsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNTE3KQotICAgICAgICByZXR1cm47
Ci0KLSAgICB0aHJlYWQgaW50W10gYXJyYXlQdHIgPSBAYXJyYXk7Ci0gICAgaWYgKGFycmF5UHRy
Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50WzQyXSBhcnJheTI7Ci0g
ICAgYXJyYXkyID0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Mi5sZW5ndGggIT0gNDIpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoYXJyYXkyWzBdICE9IDUxNykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZmlsbChhcnJheVB0ciwgMTMzNyk7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXlQ
dHIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFycmF5UHRyW2ldICE9IDEzMzcpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAxMzM3KQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhcnJheTJbMF0gIT0gNTE3KQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKGFycmF5Mi5sZW5ndGggIT0gNDIpCi0gICAgICAgIHJldHVybjsKLSAg
ICBmb3IgKHVpbnQgaSA9IDE7IGkgPCBhcnJheTIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYg
KGFycmF5MltpXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZl
clswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXpl
ID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJE
ZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVC
dWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3
YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5
ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNv
bnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVm
ZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZm
ZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRl
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNv
bnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5j
KCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0Fy
cmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAg
IHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAg
cmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWdldHRlci1zZXR0ZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjg3YjVjNjgxNThlZjQz
Nzk4ODcwYjcwYWU1MjkyYzUzZmYxNDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNl
dHRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBz
aW1wbGVQcm9wZXJ0eUdldAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2ltcGxlLWdldHRlci1zZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1w
bGUtZ2V0dGVyLXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODkz
M2ZlNThjNTJhNjQ2MGMxNDhhZWIyZGM3ZDQ0MTNiYWUxZDM0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1w
bGUtZ2V0dGVyLXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5l
c3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlUHJvcGVy
dHlHZXQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVj
dCBGb28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICBmb28ueCA9IDc4
MDQ7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc4
MDQpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjRlOGVjZDQ1NTEwNTVjM2E0ODk1MGJm
N2MxNDNhYzA3NTcwY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotUEFTUyBzaW1wbGVVbnJlYWNoYWJsZUNv
ZGUKLVBBU1Mgc2ltcGxlTm9SZXR1cm4KLVBBU1Mgc2ltcGxlUmVjdXJzaXZlU3RydWN0Ci1QQVNT
IHNpbXBsZVJlY3Vyc2lvbgotUEFTUyBzaW1wbGVSZWN1cnNpb24yCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzhkYzNiZmI1NDcyNzE5MTFmOWQ5MGZiMGQwMDU4NDA0NDQ1YTJlMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2ltcGxlLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVz
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1wbGVVbnJlYWNo
YWJsZUNvZGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLX0KLQotd2hsc2xUZXN0cy5zaW1wbGVOb1JldHVybiA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoImludCBmb28oKSB7IH0iKTsKLX0KLQotd2hsc2xUZXN0cy5zaW1wbGVS
ZWN1cnNpdmVTdHJ1Y3QgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBGb28gZm9v
OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5zaW1wbGVSZWN1
cnNpb24gPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBmb28oeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNp
bXBsZVJlY3Vyc2lvbjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICAgICAgZm9v
KHgpOwotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdm9pZCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9vKGJh
cih4KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU0YjE4YTg4ODk2NTJiY2NhYTcwZGJiNGM5N2IyMzYwZWU1MzA4NmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVdoaWxlCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgwNzExYzE4ZTE2Y2Y3NjY2ZjcyZTZlODJlYzJmZGYwZTJiN2Y3ZGMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNM
IHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5z
aW1wbGVXaGlsZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHggPCAxMykKLSAg
ICAgICAgICAgICAgICB4ID0geCAqIDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDEpXSksIDE2KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ0N2ViZmY2YjdjYjEyZjQ3ZWM4MGVlYzNjODliNGI4
MDE4MzFiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJpdC10eXBlcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBzbWFsbFR5cGVzU2hv
dWxkRmFpbAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10
aGFuLTMyLWJpdC10eXBlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXIt
dGhhbi0zMi1iaXQtdHlwZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1
NjBhN2NiN2U5ZWE0YmNiODgyNGM0M2EyMWNiNGE3Y2U5MzBiMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21h
bGxlci10aGFuLTMyLWJpdC10eXBlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5zbWFsbGVyIHRoYW4gMzItYml0
IHR5cGVzIHNob3VsZCBub3QgcGFyc2UuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuc21hbGxUeXBlc1Nob3VsZEZhaWwgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB1
Y2hhciB4OwotICAgICAgICB9Ci0gICAgYCk7IAotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIHg7Ci0gICAgICAg
IH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNob3J0IHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHVzaG9ydCB4OwotICAgICAgICB9Ci0gICAgYCk7IAotCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBoYWxm
IHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zcGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c3BhcnNlLWJpbmQtZ3JvdXAtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJz
ZS1iaW5kLWdyb3VwLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdjMzE3
ZjAxZjFkYmQ0Y2NiNDJkMzYyZWNkYzkwZmZmNTJhODAyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNl
LWJpbmQtZ3JvdXAtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFk
ZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRl
U2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUxKSkgewotICAgIGJ1ZmZl
clswXSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUg
PSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVy
MSA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9S
QUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIxLCBzaXplfX0sIHtiaW5kaW5nOiAx
LCByZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMiwgc2l6ZX19XX0pOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNz
KCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rl
ci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJd
KTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlcjIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9
PSAxNykKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFp
bGVkKCIiKTsKLSAgICBidWZmZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBz
dGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAt
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3Jv
dXAtMy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBm
YjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1i
aW5kLWdyb3VwLTMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYmYxNTg1NjgxZWUwZTkyOTc2OGRmMTA1
NDhhOGM3ZWQzZWUwY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRb
XSBidWZmZXIgOiByZWdpc3Rlcih1MSkpIHsKLSAgICBidWZmZXJbMF0gPSAxNzsKLX0KLWA7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNv
bXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogMCwgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIn0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9SRUFEfSk7Ci0gICAgY29uc3QgYnVmZmVyMiA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3Np
emUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JF
QUR9KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoe2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZTog
e2J1ZmZlcjogYnVmZmVyMSwgc2l6ZX19LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHtidWZmZXI6
IGJ1ZmZlcjIsIHNpemV9fV19KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0
IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZl
cik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMTcpCi0gICAgICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVy
Mi51bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0p
OwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYz
YWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NwYXJzZS1iaW5kLWdyb3VwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE5MzgyMjRjM2Y5ZDRjYjljMTQyNzdmM2I1NGZmZjJmMWI2Zjk1Y2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NwYXJzZS1iaW5kLWdyb3VwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNv
bXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTAsIHNwYWNlMSkp
IHsKLSAgICBidWZmZXJbMF0gPSAxNzsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0LCBiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEfSk7Ci0gICAgY29uc3QgYnVmZmVyMiA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cDEgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHti
dWZmZXI6IGJ1ZmZlcjEsIHNpemV9fV19KTsKLSAgICBjb25zdCBiaW5kR3JvdXAyID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIyLCBzaXplfX1dfSk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29t
cHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMSwgYmluZEdyb3VwMik7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1
ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyMi5t
YXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5
WzBdID09IDE3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
c3RGYWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIudW5tYXAoKTsKLX0KLQotd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2ZTkzNThmNTlkZWIxZTlhZjcz
MDYzNDQ2NzhiOGQyM2MwMmE3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBzdG9yZU51bGwKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVlZDJmZDMyMmIyZTc1MTk3NzU1MjQ4MzVjMzdmNDI4M2Q3MTA3MTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN0b3JlTnVsbCA9IGFzeW5jICgpID0+
Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZv
bygpIHsgKm51bGwgPSA0MjsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Bl
cmx5LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdm
NDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRv
LXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjODkzYzU5M2UxYmMwZWVmOWQ4NGZj
MWQ0MGE0YmM4ZjFlNGI4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0
ZXMtcHJvcGVybHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1zdHJ1Y3Qg
QmFyIHsKLSAgICBpbnQgeDsKLSAgICBmbG9hdCB5OwotICAgIGludCB6OwotfQotCi1zdHJ1Y3Qg
Rm9vIHsKLSAgICBCYXIgYmFyOwotICAgIEJhciBiYXIyOwotfQotCi10aHJlYWQgRm9vKiBwdHIo
KSB7Ci0gICAgRm9vIGxvY2FsOwotICAgIHJldHVybiAmbG9jYWw7Ci19Ci0KLXZlcnRleCBWZXJ0
ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhy
ZWFkIEZvbyogcCA9IHB0cigpOwotICAgIHAtPmJhcjIueSA9IDEuMDsKLSAgICBmbG9hdCB2YWx1
ZSA9IHAtPmJhcjIueTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJl
c3VsdC5zaGFkZSA9IHZhbHVlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19
Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2Nh
dGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1
dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29u
c3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ig
PSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0t
YnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXpl
OiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNl
OiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAzYTUyMTEzMDlmMDZjYmQ4MzliMGRhNmRhZmViNDA0NDE2ZGRhZDYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
ICswLDAgQEAKLQotUEFTUyBlbXB0eVN0cnVjdAotUEFTUyBzZXR0aW5nQW5BcnJheUluc2lkZUFT
dHJ1Y3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4ZDBmNjg2MDQ3ZWVlMWY2NDVlNTk3NzAyNTQwYzA2MTAwNjkxNWI3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zdHJ1Y3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmVtcHR5U3RydWN0ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IFRoaW5neSB7IH0KLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRoaW5neSB0aGluZ3k7Ci0g
ICAgICAgICAgICByZXR1cm4gNDY7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQ2KTsKLX07Ci0K
LXdobHNsVGVzdHMuc2V0dGluZ0FuQXJyYXlJbnNpZGVBU3RydWN0ID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBp
bnRbMV0gYXJyYXk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB0aHJlYWQgRm9vKiBiYXIgPSAmZm9vOwot
ICAgICAgICAgICAgYmFyLT5hcnJheVswXSA9IDIxOwotICAgICAgICAgICAgcmV0dXJuIGZvby5h
cnJheVswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEpOwotfTsKLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1l
cmF0aW9uLWVsZW1lbnQtY2xhc2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NWUwYmY2MGU1MThiOWY5YjRjZDIwMzRmNDM1NzA4NjcwNzllNzc4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBzd2l0Y2hCcmVhawot
UEFTUyB1bmtub3duVmFyaWFibGVJbkRvdEV4cHJlc3Npb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNs
YXNoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1l
cmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzE3Mjg5NDNjMTU4Njc1YmNiZDE1N2UwNWE3YzhjMDQ0YzRhZWUwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c3RydWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5zd2l0Y2hCcmVhayA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIHN0cnVjdCBGb28geyBpbnQgeDsgfQotICAgICAgICBlbnVtIEJhciB7IHggPSA0Miwg
eSA9IDAgfQotICAgICAgICBpbnQgZigpIHsKLSAgICAgICAgICAgIEZvbyBCYXI7Ci0gICAgICAg
ICAgICByZXR1cm4gaW50KEJhci54KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImYiLCBbXSksIDApOwotfQotd2hs
c2xUZXN0cy51bmtub3duVmFyaWFibGVJbkRvdEV4cHJlc3Npb24gPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpIHsK
LSAgICAgICAgICAgICAgICBpbnQgYSA9IHZhcmlhYmxlLng7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjZTU0YzIyNGZkYTNhZjc1NjkwNjk3M2YxZWI2NzUzZWEy
YmM0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotCi1QQVNTIHN3aXRjaEJyZWFrCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zd2l0Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
d2l0Y2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU1NGEwYjhmMDk2NzA0
ZDlmZDMyNDIzM2FjYTljNWZjZDg5OTczNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMuc3dpdGNoQnJlYWsgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
cmVzdWx0ID0gMDsKLSAgICAgICAgICAgIHN3aXRjaCAoeCkgewotICAgICAgICAgICAgY2FzZSA3
Njc6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSA2OToKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDc2NyldKSwgMjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg2OSldKSwgNzYyNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDQ5KTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYThmYTI3ZjY5YTM4NTY4YTMxOTVi
ZjliODg4OTNkZDNhNjFiMmMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB0ZXJuYXJ5RXhw
cmVzc2lvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVybmFyeS1z
cGVjLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVz
dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzI0Y2U2NTdjOWZmNzRiN2Fj
ODI3YTNkOTExYWZmY2IxZjVjMWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy50ZXJuYXJ5RXhwcmVzc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHggPCAzID8gNCA6IDU7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcihp
bnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggPCAxMCA/IDExIDogeCA8IDEy
ID8gMTQgOiAxNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmF6KGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gMyA8IDQgPyB4IDogNTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDc2NyldKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCg4KV0pLCAxMSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIs
IFttYWtlSW50KDkpXSksIDExKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTApXSksIDE0KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTEpXSks
IDE0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
YmFyIiwgW21ha2VJbnQoMTIpXSksIDE1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTMpXSksIDE1KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmF6IiwgW21ha2VJbnQo
MTQpXSksIDE0KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4OwotICAgICAg
ICAgICAgICAgICg0IDwgNSA/IHggOiA3KSA9IDg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGAp
OwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAg
aW50IHk7Ci0gICAgICAgICAgICAgICAgKDAgPCAxID8geCA6IHkpID0gNDI7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgaW50IHk7Ci0gICAgICAg
ICAgICAgICAgdGhyZWFkIGludCogeiA9ICYoMCA8IDEgPyB4IDogeSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICp6OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgICAgIGludCB5OwotICAgICAgICAg
ICAgICAgIHRocmVhZCBpbnRbXSB6ID0gQCgwIDwgMSA/IHggOiB5KTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gKno7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gNCA8IDUgPyB4IDogeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNCA8IDUgPyA2IDogNy4wOwot
ICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGVzdC1oYXJuZXNzLXRlc3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlNmNkOWIwYjI0NjFkOWU1NmY1YTc0ODhkYTUxOGY4MjdkOTIyZDJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwz
NyArMCwwIEBACi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gNSBkdXBsaWNhdGUg
dGVzdCBuYW1lczogIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuIiwgIlJldHVybiBh
biBleHBlY3RlZCBpbnQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLiIs
ICJSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCBm
bG9hdDR4NCB2YWx1ZS4iCi0KLVBBU1MgUmV0dXJuIGEgbGl0ZXJhbCBvZiB0eXBlIGJvb2wuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBl
Y3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFT
UyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFVwbG9hZCBhbmQgcmV0dXJu
IGEgYm9vbCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4KLVBB
U1MgUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVk
IHVpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4KLVBBU1Mg
VXBsb2FkIG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBhIGNhbGN1bGF0ZWQgcmVzdWx0Lgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhw
ZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBB
U1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFT
UyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFT
UyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQg
dWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBV
cGxvYWQgYW5kIGNhbGN1bGF0ZSBhIHJlc3VsdCBmcm9tIHZhcmllZCBhcmd1bWVudCB0eXBlcy4K
LVBBU1MgU3RvcmUgaW50byBhIGZsb2F0NFtdLgotUEFTUyBVcGxvYWQgYSBpbnRbXSBhbmQgc3Rv
cmUgaW50byBhIGludFtdLgotUEFTUyBVcGxvYWQgYSBmbG9hdDR4NFtdIGFuZCBzdG9yZSBpbnRv
IGEgZmxvYXQ0eDRbXS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBl
eHBlY3RlZCBmbG9hdDR4NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0
IHZhbHVlLgotUEFTUyBDb2RlIHNob3VsZCBub3QgY29tcGlsZSwgYW5kIG5vIGVycm9yIGlzIHJl
cG9ydGVkLgotUEFTUyBTdWNjZXNzZnVsbHkgY29tcGlsaW5nIGNvZGUgaW4gY2hlY2tGYWlsIGlz
IGFuIGVycm9yLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVzdC1o
YXJuZXNzLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3Mt
dGVzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDgzOTg3YTkyYjExZmJl
NjYxYzZjMjBmNGYxNTA1ODI3NDIzMGJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVz
dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotY29uc3QgbnVtZXJpY1NjYWxhclR5cGVzID0gWyJp
bnQiLCAidWludCIsICJmbG9hdCJdOwotCi1jb25zdCBudW1lcmljU2NhbGFyRnVuY3MgPSB7Ci0g
ICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24s
Ci0gICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rpb24KLX07Ci0KLWNvbnN0IHNjYWxhckFyZ01h
a2VycyA9IHsKLSAgICAiYm9vbCI6IG1ha2VCb29sLAotICAgICJpbnQiOiBtYWtlSW50LAotICAg
ICJ1aW50IjogbWFrZVVpbnQsCi0gICAgImZsb2F0IjogbWFrZUZsb2F0Ci19OwotCi1jb25zdCBh
cnJheVR5cGVMZW5ndGhzID0gewotICAgICJmbG9hdDQiOiA0LAotICAgICJmbG9hdDR4NCI6IDE2
Ci19OwotCi1jb25zdCBhcnJheUZ1bmNzID0gewotICAgICJmbG9hdDQiOiBjYWxsRmxvYXQ0RnVu
Y3Rpb24sCi0gICAgImZsb2F0NHg0IjogY2FsbEZsb2F0NHg0RnVuY3Rpb24sCi19OwotCi1jb25z
dCBhcnJheUFyZ01ha2VycyA9IHsKLSAgICAiZmxvYXQ0IjogbWFrZUZsb2F0NCwKLSAgICAiZmxv
YXQ0eDQiOiBtYWtlRmxvYXQ0eDQKLX07Ci0KLWNvbnN0IGZsb2F0NHg0ZXhwZWN0ZWQgPSBbMCwg
NCwgOCwgMTIsIDEsIDUsIDksIDEzLCAyLCA2LCAxMCwgMTQsIDMsIDcsIDExLCAxNV07Ci1jb25z
dCBmbG9hdDR4NENvbHVtbkV4cGVjdGVkID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdOwotY29uc3QgZmxvYXQ0ZXhwZWN0ZWQgPSBbMCwgMSwg
MiwgM107Ci0KLWxldCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubGl0ZXJhbHMgPSAo
KSA9PiB7Ci0gICAgY2hlY2tCb29scygiUmV0dXJuIGEgbGl0ZXJhbCBvZiB0eXBlIGJvb2wuIiwg
InJldHVybiB0cnVlOyIpOwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCAicmV0dXJuIGZsb2F0
NCgwLCAxLCAyLCAzKTsiLCBbXSwgZmxvYXQ0ZXhwZWN0ZWQpOwotICAgIGNoZWNrTnVtZXJpY1Nj
YWxhcnMoInJldHVybiA0MjsiLCBbXSwgNDIpOwotfTsKLQotd2hsc2xUZXN0cy5zaW5nbGVBcmd1
bWVudCA9ICgpID0+IHsKLSAgICBjaGVja0Jvb2xzKCJVcGxvYWQgYW5kIHJldHVybiBhIGJvb2wg
dmFsdWUuIiwgInJldHVybiBpbjA7IiwgW3RydWVdKTsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0
IiwgInJldHVybiBpbjA7IiwgW2Zsb2F0NGV4cGVjdGVkXSwgZmxvYXQ0ZXhwZWN0ZWQpOwotICAg
IGNoZWNrTnVtZXJpY1NjYWxhcnMoInJldHVybiBpbjA7IiwgWzQyXSwgNDIpOwotfTsKLQotd2hs
c2xUZXN0cy5tYW55QXJndW1lbnRzID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMoIlVwbG9hZCBt
YW55IGJvb2wgdmFsdWVzIGFuZCByZXR1cm4gYSBjYWxjdWxhdGVkIHJlc3VsdC4iLAotICAgICAg
ICAicmV0dXJuIGluMCAmIGluMSAmIGluMiAmIGluMyAmIGluNCAmIGluNSAmIGluNiAmIGluNzsi
LAotICAgICAgICBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZV0pOwotCi0gICAgbGV0IGJvZHkgPSAicmV0dXJuIGZsb2F0NChpbjAueCwgaW4xLnksIGluMi56
LCBpbjMudyk7IgotICAgIGxldCBhcmdzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0
OyArK2kpCi0gICAgICAgIGFyZ3MucHVzaChmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tBcnJh
eXMoImZsb2F0NCIsIGJvZHksIGFyZ3MsIGZsb2F0NGV4cGVjdGVkKTsKLQotICAgIGJvZHkgPSBg
cmV0dXJuIGluMCArIGluMSArIGluMiArIGluMyArIGluNCArIGluNSArIGluNiArIGluNztgOwot
ICAgIGNoZWNrTnVtZXJpY1NjYWxhcnMoYm9keSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDddLCAy
OCk7Ci19OwotCi13aGxzbFRlc3RzLmJ1ZmZlcnNXaXRoT25lVmFsdWUgPSAoKSA9PiB7Ci0gICAg
Y29uc3QgYm9keSA9IGByZXR1cm4gaW4wWzBdO2AKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0Iiwg
Ym9keSwgW1tmbG9hdDRleHBlY3RlZF1dLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1l
cmljU2NhbGFycyhib2R5LCBbWzQyXV0sIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMubXVsdGlwbGVC
dWZmZXJBcmd1bWVudHMgPSAoKSA9PiB7Ci0gICAgbGV0IGJvZHkgPSBgCi0gICAgZmxvYXQgeCA9
IGluMFswXS54ICsgaW4wWzFdLnggKyBpbjBbMl0ueCArIGluMS54ICsgaW4yWzBdLng7Ci0gICAg
ZmxvYXQgeSA9IGluMFswXS55ICsgaW4wWzFdLnkgKyBpbjBbMl0ueSArIGluMS55ICsgaW4yWzBd
Lnk7Ci0gICAgZmxvYXQgeiA9IGluMFswXS56ICsgaW4wWzFdLnogKyBpbjBbMl0ueiArIGluMS56
ICsgaW4yWzBdLno7Ci0gICAgZmxvYXQgdyA9IGluMFswXS53ICsgaW4wWzFdLncgKyBpbjBbMl0u
dyArIGluMS53ICsgaW4yWzBdLnc7Ci0KLSAgICByZXR1cm4gZmxvYXQ0KHgsIHksIHosIHcpO2A7
Ci0gICAgY2hlY2tBcnJheXMoImZsb2F0NCIsIGJvZHksIFtbZmxvYXQ0ZXhwZWN0ZWQsIGZsb2F0
NGV4cGVjdGVkLCBmbG9hdDRleHBlY3RlZF0sIGZsb2F0NGV4cGVjdGVkLCBbZmxvYXQ0ZXhwZWN0
ZWRdXSwgWzAsIDUsIDEwLCAxNV0pOwotCi0gICAgYm9keSA9IGByZXR1cm4gaW4wWzBdICsgaW4w
WzFdICsgaW4wWzJdICsgaW4xICsgaW4yWzBdO2A7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycyhi
b2R5LCBbWzAsIDEsIDJdLCAzLCBbNF1dLCAxMCk7Ci19OwotCi13aGxzbFRlc3RzLm11bHRpcGxl
QXJndW1lbnRUeXBlcyA9ICgpID0+IHsKLSAgICBjb25zdCBzcmMgPSBgZmxvYXQgdGVzdChpbnQg
aSwgdWludCBjLCBmbG9hdDQgZjQsIGRldmljZSB1aW50W10gdSwgZGV2aWNlIGZsb2F0W10gZnMp
Ci0gICAgewotICAgICAgICByZXR1cm4gZmxvYXQoaSkgKyBmbG9hdChjKSArIGY0LnggKyBmNC55
ICsgZjQueiArIGY0LncgKyBmbG9hdCh1WzBdKSArIGZzWzBdICsgZnNbMV07Ci0gICAgfWA7Ci0g
ICAgY29uc3QgaSA9IG1ha2VJbnQoMSk7Ci0gICAgY29uc3QgYyA9IG1ha2VVaW50KDIpOwotICAg
IGNvbnN0IGY0ID0gbWFrZUZsb2F0NChbNCwgNSwgNiwgN10pOwotICAgIGNvbnN0IHUgPSBtYWtl
VWludChbM10pOwotICAgIGNvbnN0IGZzID0gbWFrZUZsb2F0KFs4LCA5XSk7Ci0gICAgd2ViR1BV
UHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gY2FsbEZsb2F0RnVuY3Rpb24oc3Jj
LCAidGVzdCIsIFtpLCBjLCBmNCwgdSwgZnNdKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHQsIDQ1LCBlcHNpbG9uLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlVwbG9hZCBhbmQgY2Fs
Y3VsYXRlIGEgcmVzdWx0IGZyb20gdmFyaWVkIGFyZ3VtZW50IHR5cGVzLiIpOwotfTsKLQotd2hs
c2xUZXN0cy5idWZmZXJTdG9yZXMgPSAoKSA9PiB7Ci0gICAgbGV0IHNyYyA9IGB2b2lkIHRlc3Qo
ZGV2aWNlIGZsb2F0NFtdIG91dCkgewotICAgICAgICBvdXRbMF0gPSBmbG9hdDQoMCwgMSwgMiwg
Myk7Ci0gICAgfWA7Ci0gICAgY29uc3QgZmxvYXQ0T3V0ID0gbWFrZUZsb2F0NChbWzAsIDAsIDAs
IDBdXSk7Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgZmxvYXQ0T3V0KTsKLQot
ICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGZsb2F0NE91dC5n
ZXRBcnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZmZXIgPT4gewotICAgICAgICAgICAgY29uc3Qg
cmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBmb3Ig
KGxldCBpOyBpIDwgNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMocmVzdWx0W2ldLCBpLCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9KTsKLSAgICB9LCAiU3RvcmUgaW50byBhIGZsb2F0NFtdLiIpOwot
Ci0gICAgc3JjID0gYHZvaWQgdGVzdChkZXZpY2UgaW50W10gaW4sIGRldmljZSBpbnRbXSBvdXQp
IHsKLSAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNTsgaSA9IGkgKyAxKQotICAgICAgICAg
ICAgb3V0W2ldID0gaW5baV07Ci0gICAgfWA7Ci0gICAgY29uc3QgYXJyYXkgPSBbMCwgMSwgMiwg
MywgNF07Ci0gICAgY29uc3QgaW5wdXQgPSBtYWtlSW50KGFycmF5KTsKLSAgICBjb25zdCBvdXRw
dXQgPSBtYWtlSW50KFswLCAwLCAwLCAwLCAwXSk7Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMs
ICJ0ZXN0IiwgW2lucHV0LCBvdXRwdXRdKTsKLQotICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+
IHsKLSAgICAgICAgcmV0dXJuIG91dHB1dC5nZXRBcnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZm
ZXIgPT4gewotICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQzMkFycmF5KGFycmF5
QnVmZmVyKTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIHJlc3VsdCwg
IlRlc3Qgc3RvcmVkIGV4cGVjdGVkIHZhbHVlcy4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlVw
bG9hZCBhIGludFtdIGFuZCBzdG9yZSBpbnRvIGEgaW50W10uIik7Ci19OwotCi13aGxzbFRlc3Rz
LmZsb2F0NHg0dGVzdHMgPSAoKSA9PiB7Ci0gICAgY29uc3Qgc3JjID0gYHZvaWQgdGVzdChkZXZp
Y2UgZmxvYXQ0eDRbXSBpbiwgZGV2aWNlIGZsb2F0NHg0W10gb3V0KSB7Ci0gICAgICAgIGZvciAo
dWludCBpID0gMDsgaSA8IDQ7IGkgPSBpICsgMSkKLSAgICAgICAgICAgIG91dFtpXSA9IGluW2ld
OwotICAgIH1gOwotICAgIGNvbnN0IGlucHV0ID0gbWFrZUZsb2F0NHg0KFtmbG9hdDR4NGV4cGVj
dGVkLCBmbG9hdDR4NGV4cGVjdGVkLCBmbG9hdDR4NGV4cGVjdGVkLCBmbG9hdDR4NGV4cGVjdGVk
XSk7Ci0gICAgY29uc3Qgb3V0cHV0ID0gbWFrZUZsb2F0NHg0KG5ldyBBcnJheSg2NCkuZmlsbCgw
KSk7Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgW2lucHV0LCBvdXRwdXRdKTsK
LQotICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIG91dHB1dC5n
ZXRBcnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZmZXIgPT4gewotICAgICAgICAgICAgY29uc3Qg
cmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAw
OyBqIDwgMTY7ICsraikKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
cmVzdWx0W2kgKiAxNiArIGpdLCBmbG9hdDR4NGV4cGVjdGVkW2pdLCBlcHNpbG9uLCAiVGVzdCBz
dG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAg
ICB9LCAiVXBsb2FkIGEgZmxvYXQ0eDRbXSBhbmQgc3RvcmUgaW50byBhIGZsb2F0NHg0W10uIik7
Ci0KLSAgICBjaGVja0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGZsb2F0NHg0KGZsb2F0NCgw
LCAxLCAyLCAzKSwgZmxvYXQ0KDQsIDUsIDYsIDcpLCBmbG9hdDQoOCwgOSwgMTAsIDExKSwgZmxv
YXQ0KDEyLCAxMywgMTQsIDE1KSk7IiwgW10sIGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAg
IGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gaW4wOyIsIFtmbG9hdDR4NGV4cGVjdGVk
XSwgZmxvYXQ0eDRleHBlY3RlZCk7Ci0gICAgbGV0IG11bHRpcGxlNHg0YXJncyA9IFtdOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkgewotICAgICAgICBjb25zdCBhcmcgPSBuZXcg
QXJyYXkoMTYpOwotICAgICAgICBhcmcuZmlsbCgwKTsKLSAgICAgICAgYXJnW2ldID0gaTsKLSAg
ICAgICAgbXVsdGlwbGU0eDRhcmdzLnB1c2goYXJnKTsKLSAgICB9Ci0gICAgY2hlY2tBcnJheXMo
ImZsb2F0NHg0IiwgInJldHVybiBpbjAgKyBpbjEgKyBpbjIgKyBpbjMgKyBpbjQgKyBpbjUgKyBp
bjYgKyBpbjcgKyBpbjggKyBpbjkgKyBpbjEwICsgaW4xMSArIGluMTIgKyBpbjEzICsgaW4xNCAr
IGluMTU7IiwgbXVsdGlwbGU0eDRhcmdzLCBmbG9hdDR4NENvbHVtbkV4cGVjdGVkKTsKLSAgICBj
aGVja0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGluMFswXTsiLCBbW2Zsb2F0NHg0ZXhwZWN0
ZWRdXSwgZmxvYXQ0eDRleHBlY3RlZCk7Ci19OwotCi13aGxzbFRlc3RzLmNoZWNrRmFpbFRlc3Rz
ID0gKCkgPT4gewotICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJu
IGNoZWNrRmFpbChgRG9vcnMgYW5kIGNvcm5lcnMsIGtpZC4gVGhhdCdzIHdoZXJlIHRoZXkgZ2V0
Y2hhLmApOwotICAgIH0sICJDb2RlIHNob3VsZCBub3QgY29tcGlsZSwgYW5kIG5vIGVycm9yIGlz
IHJlcG9ydGVkLiIpOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICBy
ZXR1cm4gY2hlY2tGYWlsKCIiKS5jYXRjaChlID0+IHsKLSAgICAgICAgICAgIGFzc2VydF90cnVl
KGUgaW5zdGFuY2VvZiBFcnJvciwgIkFuIGV4cGVjdGVkIEVycm9yIHdhcyBjYXVnaHQuIik7Ci0g
ICAgICAgIH0pOwotICAgIH0sICJTdWNjZXNzZnVsbHkgY29tcGlsaW5nIGNvZGUgaW4gY2hlY2tG
YWlsIGlzIGFuIGVycm9yLiIpCi19OwotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGFzeW5jICgpID0+IHsKLSAgICB0cnkgewotICAgICAgICBhd2FpdCBoYXJuZXNzLnJlcXVlc3RE
ZXZpY2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHdobHNsVGVzdHMpIHsKLSAgICAg
ICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJfIikpCi0gICAgICAgICAgICAgICAgd2hsc2xU
ZXN0c1tuYW1lXSgpOwotICAgICAgICB9Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICAgICAgCi0gICAgICAgIHRocm93IGU7Ci0gICAgfQotfSk7Ci0KLS8qIEhlbHBlciBmdW5j
dGlvbnMgKi8KLQotY29uc3QgY2hlY2tOdW1lcmljU2NhbGFycyA9IChib2R5LCBhcmdWYWx1ZXMs
IGV4cGVjdGVkKSA9PiB7Ci0gICAgbGV0IGZ1bmN0aW9ucyA9IFtdOwotICAgIGxldCBzcmMgPSAi
IjsKLSAgICBmb3IgKGxldCB0eXBlIG9mIG51bWVyaWNTY2FsYXJUeXBlcykgewotICAgICAgICBs
ZXQgbmFtZSwgdmFsdWVzOwotICAgICAgICBbc3JjLCBuYW1lLCB2YWx1ZXNdID0gYXBwZW5kU2Nh
bGFyRnVuY3Rpb25Ub1NvdXJjZShzcmMsIHR5cGUsIGJvZHksIGFyZ1ZhbHVlcyk7Ci0gICAgICAg
IGZ1bmN0aW9ucy5wdXNoKHsgdHlwZTogdHlwZSwgbmFtZTogbmFtZSwgYXJnczogdmFsdWVzLCBl
eHBlY3RlZDogZXhwZWN0ZWQgfSk7Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBmIG9mIGZ1bmN0
aW9ucykgewotICAgICAgICBjb25zdCBjYWxsRnVuYyA9IG51bWVyaWNTY2FsYXJGdW5jc1tmLnR5
cGVdOwotICAgICAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gY2FsbEZ1bmMoc3JjLCBmLm5hbWUsIGYuYXJncykudGhlbihyZXN1bHQgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3VsdCwgZi5leHBlY3RlZCwg
ZXBzaWxvbiwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSwgYFJldHVybiBhbiBleHBlY3RlZCAke2YudHlwZX0gdmFsdWUuYCk7Ci0g
ICAgfQotfTsKLQotY29uc3QgY2hlY2tCb29scyA9IChtc2cgPSAiUmV0dXJuIGFuIGV4cGVjdGVk
IGJvb2wgdmFsdWUuIiwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVjdGVkID0gdHJ1ZSkgPT4g
ewotICAgIGNvbnN0IFtzcmMsIG5hbWUsIHZhbHVlc10gPSBhcHBlbmRTY2FsYXJGdW5jdGlvblRv
U291cmNlKCIiLCAiYm9vbCIsIGJvZHksIGFyZ1ZhbHVlcyk7IAotCi0gICAgd2ViR1BVUHJvbWlz
ZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICByZXR1cm4gY2FsbEJvb2xGdW5jdGlvbihzcmMs
IG5hbWUsIHZhbHVlcykudGhlbihyZXN1bHQgPT4gewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQsIGV4cGVjdGVkLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAg
ICAgICAgfSwgZSA9PiB7Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5z
dXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSk7Ci0g
ICAgfSwgbXNnKTsKLX07Ci0KLWNvbnN0IGNoZWNrQXJyYXlzID0gKHR5cGUsIGJvZHksIGFyZ1Zh
bHVlcyA9IFtdLCBleHBlY3RlZCkgPT4gewotICAgIGxldCBpbnB1dEFyZ3MgPSBbXTsKLSAgICBs
ZXQgdmFsdWVzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdWYWx1ZXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgLy8gU3VwcG9ydCBhcnJheXMgb2YgZmxvYXQ0LCBpbmNsdWRpbmcg
b25lIHdpdGggYSBzaW5nbGUgZmxvYXQ0LgotICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGFy
Z1ZhbHVlc1tpXS5mbGF0KCkubGVuZ3RoOwotICAgICAgICBjb25zdCBpc0J1ZmZlciA9IGFyZ1Zh
bHVlc1tpXS5sZW5ndGggPT09IDEgfHwgdG90YWxMZW5ndGggPiBhcnJheVR5cGVMZW5ndGhzW3R5
cGVdOwotICAgICAgICBpbnB1dEFyZ3MucHVzaChgJHtpc0J1ZmZlciA/ICJkZXZpY2UgIiA6ICIi
fSR7dHlwZX0ke2lzQnVmZmVyID8gIltdIiA6ICIifSBpbiR7aX1gKTsKLSAgICAgICAgdmFsdWVz
LnB1c2goYXJyYXlBcmdNYWtlcnNbdHlwZV0oYXJnVmFsdWVzW2ldKSk7Ci0gICAgfQotCi0gICAg
Y29uc3Qgc3JjID0gYCR7dHlwZX0gJHt0eXBlfVRlc3QoJHtpbnB1dEFyZ3Muam9pbigiLCAiKX0p
IHsgJHtib2R5fSB9Ci0gICAgYDsKLQotICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+
IHsKLSAgICAgICAgcmV0dXJuIGFycmF5RnVuY3NbdHlwZV0oc3JjLCBgJHt0eXBlfVRlc3RgLCB2
YWx1ZXMpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
YXJyYXlUeXBlTGVuZ3Roc1t0eXBlXTsgKytpKQotICAgICAgICAgICAgICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKHJlc3VsdFtpXSwgZXhwZWN0ZWRbaV0sIGVwc2lsb24sICJUZXN0IHJldHVybmVk
IGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9KTsKLSAgICB9LCBgUmV0dXJuIGFuIGV4cGVj
dGVkICR7dHlwZX0gdmFsdWUuYCk7Ci19Ci0KLWNvbnN0IGFwcGVuZFNjYWxhckZ1bmN0aW9uVG9T
b3VyY2UgPSAoc3JjLCB0eXBlLCBib2R5LCBhcmdWYWx1ZXMpID0+IHsKLSAgICBjb25zdCBuYW1l
ID0gYCR7dHlwZX1UZXN0YDsKLQotICAgIGxldCBpbnB1dEFyZ3MgPSBbXTsKLSAgICBsZXQgdmFs
dWVzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdWYWx1ZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgY29uc3QgaXNCdWZmZXIgPSBBcnJheS5pc0FycmF5KGFyZ1ZhbHVlc1tpXSk7
Ci0gICAgICAgIGlucHV0QXJncy5wdXNoKGAke2lzQnVmZmVyID8gImRldmljZSAiIDogIiJ9JHt0
eXBlfSR7aXNCdWZmZXIgPyAiW10iIDogIiJ9IGluJHtpfWApOwotICAgICAgICB2YWx1ZXMucHVz
aChzY2FsYXJBcmdNYWtlcnNbdHlwZV0oYXJnVmFsdWVzW2ldKSk7Ci0gICAgfQotCi0gICAgc3Jj
ICs9IGAke3R5cGV9ICR7bmFtZX0oJHtpbnB1dEFyZ3Muam9pbigiLCAiKX0pIHsgJHtib2R5fSB9
Ci0gICAgYDsKLSAgICAKLSAgICByZXR1cm4gW3NyYywgbmFtZSwgdmFsdWVzXTsKLX07Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLWdldGRpbWVuc2lvbnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTVhY2EzNDgwMDJlZDYzYzRhZTE1MjM5MDE3MGM2NTI3MjFlYTg2Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUg
dm9pZCBjb21wdXRlU2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rl
cih0MCksIGRldmljZSB1aW50W10gdGhlQnVmZmVyIDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgdWlu
dCB3aWR0aDsKLSAgICB1aW50IGhlaWdodDsKLSAgICB1aW50IG51bWJlck9mTGV2ZWxzOwotICAg
IEdldERpbWVuc2lvbnModGhlVGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmbnVtYmVyT2ZM
ZXZlbHMpOwotICAgIHRoZUJ1ZmZlclswXSA9IHdpZHRoOwotICAgIHRoZUJ1ZmZlclsxXSA9IGhl
aWdodDsKLSAgICB0aGVCdWZmZXJbMl0gPSBudW1iZXJPZkxldmVsczsKLX0KLWA7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNv
bXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVT
aGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9
LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
PSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6ZToge3dp
ZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdl
OiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5j
cmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9
IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJE
ZXNjcmlwdG9yID0ge3NpemU6IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMywgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0g
ICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZl
ckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3Vs
dHNCdWZmZXIsIHNpemU6IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogM307Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJl
Vmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ31dOwotICAgIGNvbnN0
IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdz
OiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29t
cHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNo
KCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRB
c3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNVaW50MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheShy
ZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzVWludDMyQXJyYXlbMF0gPT0gMgot
ICAgICAgICAmJiByZXN1bHRzVWludDMyQXJyYXlbMV0gPT0gMgotICAgICAgICAmJiByZXN1bHRz
VWludDMyQXJyYXlbMl0gPT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1sb2FkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2Fk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwODIyYzg1MDc5ZDYzOGFmMTI2
NzE5NDFkYWQxN2QwODhlY2QzZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRl
eCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQg
ZnJhZ21lbnRTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQw
KSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIExvYWQodGhlVGV4dHVyZSwgaW50MigwLCAw
KSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7
c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9
IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBj
b25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JD
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFC
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheSA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzJdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVszXSA9IDI1NTsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzVdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs2XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMTI4OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVs5XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTBdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEyXSA9IDEyODsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVsxNF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE1XSA9
IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVy
ZURlc2NyaXB0b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRl
eHR1cmVVc2FnZS5DT1BZX0RTVH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVU
ZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0g
W3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9XTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdy
b3VwQmluZGluZ3N9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLQotICAgIGNvbnN0IGJ1ZmZlckNvcHlWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZm
ZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdl
SGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBj
b25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29w
eVNpemUgPSB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNv
ZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5Vmlldywg
Y29weVNpemUpOwotCi0gICAgY29uc3QgY2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBh
OiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRU
ZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9w
OiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2ht
ZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29k
ZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29k
ZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVy
XSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTky
YzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNGQwYWRmNWRkNzMwZWQzNWQwNGEyYzFhYmRh
NzZlNTRiMGMxOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3Qg
SW50ZXJtZWRpYXRlIHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBm
bG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBJbnRl
cm1lZGlhdGUgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxv
YXQyIHRleHR1cmVDb29yZGluYXRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgSW50ZXJtZWRpYXRl
IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQudGV4
dHVyZUNvb3JkaW5hdGUgPSB0ZXh0dXJlQ29vcmRpbmF0ZTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQyIHRleHR1cmVDb29yZGlu
YXRlIDogYXR0cmlidXRlKDApLCBUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0
ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1ZfVGFyZ2V0IDAg
ewotICAgIHJldHVybiBTYW1wbGVCaWFzKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIHRleHR1cmVD
b29yZGluYXRlLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsK
LSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29u
c3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25l
In07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhh
QmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQwID0ge3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCwg
YXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hh
ZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0MiJ9OwotICAgIGNvbnN0IGlucHV0MSA9IHtz
dHJpZGU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDIsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRz
OiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiA0ICogNCArIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDIgKiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
OV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNl0gPSAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOV0gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMF0g
PSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMV0gPSAwOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMjJdID0gMTAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMjNdID0gMTAwOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0
IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQg
KiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0
YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFy
cmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0g
PSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVs0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzVdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs4XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMjU1Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTJdID0gMjU1Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDA7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzE1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTZdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE4XSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTldID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIs
IGhlaWdodDogMiwgZGVwdGg6IDF9LCBtaXBMZXZlbENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNP
UFlfRFNUfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVy
ZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZh
dWx0VmlldygpOwotCi0gICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7YWRkcmVzc01vZGVV
OiAicmVwZWF0IiwgYWRkcmVzc01vZGVWOiAicmVwZWF0IiwgYWRkcmVzc01vZGVXOiAicmVwZWF0
IiwgbWFnRmlsdGVyOiAibGluZWFyIiwgbWluRmlsdGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qg
c2FtcGxlciA9IGRldmljZS5jcmVhdGVTYW1wbGVyKHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0gW3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVy
ZVZpZXd9LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmlu
ZEdyb3VwQmluZGluZ3N9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2
aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4
dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsg
Ly8ge30KLQotICAgIGNvbnN0IGJ1ZmZlckNvcHkxVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRh
QnVmZmVyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyLCBp
bWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMn07Ci0g
ICAgY29uc3QgdGV4dHVyZUNvcHkxVmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25z
dCBjb3B5MVNpemUgPSB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1h
bmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weTFWaWV3LCB0ZXh0dXJlQ29w
eTFWaWV3LCBjb3B5MVNpemUpOwotICAgIGNvbnN0IGJ1ZmZlckNvcHkyVmlldyA9IHtidWZmZXI6
IHRleHR1cmVEYXRhQnVmZmVyLCBvZmZzZXQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogMiAqIDIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDEsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAx
fTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weTJWaWV3ID0ge3RleHR1cmU6IHRleHR1cmUsIG1pcExl
dmVsOiAxfTsKLSAgICBjb25zdCBjb3B5MlNpemUgPSB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVw
dGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29w
eTJWaWV3LCB0ZXh0dXJlQ29weTJWaWV3LCBjb3B5MlNpemUpOwotCi0gICAgY29uc3QgY2xlYXJD
b2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1l
bnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVs
bCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXIwLCB2ZXJ0ZXhCdWZmZXIwXSwgWzAsIEZsb2F0MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiA0XSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1
NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBs
ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxl
LWdyYWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1z
YW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
M2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1k
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
OTMzNjZlZjA2ZjVlZTY5ODE3Mjk1YmRlMWZjMThmMjhjMDMwYjcwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRp
b247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0
PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3Rl
cihzMSkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBTYW1wbGVHcmFkKHRoZVRleHR1cmUs
IHRoZVNhbXBsZXIsIGZsb2F0MigwLjUsIDAuNSksIGZsb2F0MigxLCAwKSwgZmxvYXQyKDAsIDEp
KTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtz
aGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQwID0g
e3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0s
IHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlciJ9XX07Ci0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
PSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4
U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3Rh
dGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNv
dW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJU
RVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJl
RGF0YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiAyICogMiArIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDEs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RX07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRl
eHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0
dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMDsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVszXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
NF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzVdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNl0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOF0g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDA7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzE1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTZd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMTldID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdo
dDogMiwgZGVwdGg6IDF9LCBtaXBMZXZlbENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNU
fTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmll
dygpOwotCi0gICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7bWFnRmlsdGVyOiAibGluZWFy
IiwgbWluRmlsdGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qgc2FtcGxlciA9IGRldmljZS5jcmVh
dGVTYW1wbGVyKHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmdzID0gW3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9LCB7YmluZGluZzogMSwg
cmVzb3VyY2U6IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdyb3VwQmluZGluZ3N9OwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLQotICAgIGNvbnN0IGJ1
ZmZlckNvcHkxVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCByb3dQaXRjaDogVWlu
dDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyLCBpbWFnZUhlaWdodDogVWludDhBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMn07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHkx
VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5MVNpemUgPSB7d2lkdGg6
IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJU
b1RleHR1cmUoYnVmZmVyQ29weTFWaWV3LCB0ZXh0dXJlQ29weTFWaWV3LCBjb3B5MVNpemUpOwot
ICAgIGNvbnN0IGJ1ZmZlckNvcHkyVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCBv
ZmZzZXQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIsIHJvd1BpdGNo
OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEsIGltYWdlSGVpZ2h0OiBVaW50
OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxfTsKLSAgICBjb25zdCB0ZXh0dXJl
Q29weTJWaWV3ID0ge3RleHR1cmU6IHRleHR1cmUsIG1pcExldmVsOiAxfTsKLSAgICBjb25zdCBj
b3B5MlNpemUgPSB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weTJWaWV3LCB0ZXh0dXJlQ29weTJW
aWV3LCBjb3B5MlNpemUpOwotCi0gICAgY29uc3QgY2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBi
OiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBv
dXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBz
dG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0
YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JB
dHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2Ny
aXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwg
WzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFu
ZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZh
NTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVs
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
bGV2ZWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2
ZWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRjNzhlMTU2MTg3MTgwMzMx
NzRhOGNiZjg4NGY1OWQ1MzdhODNiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxl
dmVsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2Ug
PSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1
dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiBy
ZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgcmV0dXJuIFNhbXBsZUxldmVsKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIGZs
b2F0MigwLjUsIDAuNSksIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsK
LSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25z
dCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAg
ICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19
OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0g
e3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJz
YW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1w
bGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRl
eEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0
ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFw
V3JpdGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5l
dyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVE
YXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbNV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
OV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAwOwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzEyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTNdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzE3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6
IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1h
dDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0
dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4
dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHtt
YWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1w
bGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmll
d30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91
cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3Jv
dXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZm
ZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdl
SGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBj
b25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNv
cHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZp
ZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4
dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQg
KiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwg
aW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9Owot
ICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6
IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZp
ZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9y
ID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMg
PSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBs
b2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwg
MCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1h
bmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUo
KS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDg2YWI1ZDViNjE2NmZjZDBkMjI0MTExZmYxNGNmOTMz
ZWM4NzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0
aGVTYW1wbGVyIDogcmVnaXN0ZXIoczEpKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gU2Ft
cGxlKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIGZsb2F0MigwLjUsIDAuNSkpOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9u
OiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwg
YXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBd
OwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEs
IHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAy
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0
ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4
dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDI1NTsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMjU1OwotICAgIHRleHR1cmVE
YXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbOF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTJdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDI1NTsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lk
dGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6
IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsKLSAg
ICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwot
Ci0gICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7bWFnRmlsdGVyOiAibGluZWFyIiwgbWlu
RmlsdGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qgc2FtcGxlciA9IGRldmljZS5jcmVhdGVTYW1w
bGVyKHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0g
W3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9LCB7YmluZGluZzogMSwgcmVzb3Vy
Y2U6IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdyb3VwQmluZGluZ3N9OwotICAgIGNvbnN0
IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLQotICAgIGNvbnN0IGJ1ZmZlckNv
cHlWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7
dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29weVNpemUgPSB7d2lkdGg6IDIsIGhlaWdo
dDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUo
YnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgY29weVNpemUpOwotCi0gICAgY29uc3Qg
Y2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0
dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdl
dDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5z
aW9uYWwtYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1k
aW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRp
bWVuc2lvbmFsLWFycmF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVu
c2lvbmFsLWFycmF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNWI2MTkz
NzE0OWZjZjI1M2Q2NTJhM2M0ZWQ1OGM0YmVkNTQ3M2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1l
bnNpb25hbC1hcnJheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFsxMF1bXSBhcnJheSwgZmxvYXRb
MTBdIHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0g
aSArIDEpIHsKLSAgICAgICAgYXJyYXlbaV0gPSB2YWx1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgZmls
bCh0aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBhcnJheVtpXSA9IHZh
bHVlOwotICAgIH0KLX0KLQotYm9vbCBjb250YWlucyh0aHJlYWQgZmxvYXRbMTBdW10gYXJyYXks
IGZsb2F0IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBp
ID0gaSArIDEpIHsKLSAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgYXJyYXlbal0ubGVuZ3Ro
OyBqID0gaiArIDEpIHsKLSAgICAgICAgICAgIGlmIChhcnJheVtpXVtqXSAhPSB2YWx1ZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgY29udGFpbnModGhyZWFkIGZsb2F0W10gYXJyYXksIGZsb2F0IHZh
bHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEp
IHsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSld
Ci1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0
ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxv
YXRbMTBdWzVdIGFycmF5OwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gNSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghY29udGFpbnMoQGFycmF5LCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsKLSAgICAg
ICAgZmxvYXRbMTBdIHZhbHVlOwotICAgICAgICBmaWxsKEB2YWx1ZSwgZmxvYXQoaSkpOwotICAg
ICAgICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLQotICAgIGZvciAodWludCBpID0gMDsgaSA8
IGFycmF5Lmxlbmd0aDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZsb2F0WzEwXSB2YWx1ZSA9IGFy
cmF5W2ldOwotICAgICAgICBpZiAoIWNvbnRhaW5zKEB2YWx1ZSwgZmxvYXQoaSkpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29t
cHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNo
YWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0g
ICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVm
ZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9
IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQz
MkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVz
dWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVs
c2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGI3OGViNjFhNmEzODE2MjRmZjFkOTM5N2QzMWQ4ZTg5NGU1N2M0My4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAg
QEAKLQotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1cm4KLVBBU1MgdHlwZU1pc21hdGNoVmFyaWFibGVE
ZWNsCi1QQVNTIHR5cGVNaXNtYXRjaEFzc2lnbm1lbnQKLVBBU1MgdHlwZU1pc21hdGNoUmV0dXJu
UGFyYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0
Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90eXBlLW1pc21hdGNoLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0OGUxNDgxZTVlYTEwNmUwNDRmY2NkZGE4ZGVm
Zjk0NDU4YmM5MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDYyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuID0gYXN5bmMgKCkgPT4KLXsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAxMC41OwotICAgICAgICAgICAgfQotICAg
ICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wgPSBhc3lu
YyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
dm9pZCBmb28odWludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0g
eDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudHlwZU1pc21h
dGNoQXNzaWdubWVudCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICAgICAgeSA9IHg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFJldHVyblBhcmFtID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGludCBmb28odWludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biB4OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci0KLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3VpbnQtYml0d2lzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmM0YWI4OTE2ZDc3Y2VhMTkyY2Q4MzRmNWNiYTc2YWI4NTA2YmNmMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBA
QAotCi1QQVNTIHVpbnRCaXRBbmQKLVBBU1MgdWludEJpdE9yCi1QQVNTIHVpbnRCaXRYb3IKLVBB
U1MgdWludEJpdE5vdAotUEFTUyB1aW50TFNoaWZ0Ci1QQVNTIHVpbnRSU2hpZnQKLVBBU1MgdWlu
dFNpbXBsZU1hdGgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQt
Yml0d2lzZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjNkNmIwYjYyZjliMDlhMjczNzlkYzg1
ZTVmNTRmM2Q3OGRkYWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy51aW50Qml0QW5kID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGEgJiBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dCgxKSwgbWFrZVVpbnQoNyldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0Mild
KSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRoLnBv
dygyLCAzMikgLSA3KV0pLCA0Mjk0OTY3Mjg5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKSwgbWFrZVVpbnQoODU3
MzIpXSksIDApOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXRPciA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIHwgYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQo
NDIpXSksIDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQo
TWF0aC5wb3coMiwgMzIpICAtIDcpXSksIDQyOTQ5NjcyOTUpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtl
VWludCg4NTczMildKSwgODU3MzIpOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXRYb3IgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwg
dWludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUz
NSksIG1ha2VVaW50KDQyKV0pLCA2NTQ5Myk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0g
MSksIG1ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBt
YWtlVWludCg4NTczMildKSwgODU3MzIpOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXROb3QgPSBh
c3luYyAoKSA9PiB7IAotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50
IGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB+YTsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZVVpbnQoMSldKSwgNDI5NDk2NzI5NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpXSksIDQyOTQ5
MDE3NjApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpXSksIDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50
KDApXSksIDQyOTQ5NjcyOTUpOwotfQotCi13aGxzbFRlc3RzLnVpbnRMU2hpZnQgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWlu
dCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA8PCBiOwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgMTI4KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUz
NSksIG1ha2VVaW50KDIpXSksIDI2MjE0MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0g
MSksIG1ha2VVaW50KDUpXSksIDQyOTQ5NjcyNjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgz
KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMudWludFJTaGlmdCA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50
KDIpXSksIDE2MzgzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQo
NSldKSwgMTM0MjE3NzI3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKSwgbWFrZVVpbnQoMyldKSwgMCk7Ci19Owot
Ci13aGxzbFRlc3RzLnVpbnRTaW1wbGVNYXRoID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICsgeTsgfSI7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDEyKTsKLQotICAgIHByb2dyYW0gPSAidWludCBmb28o
dWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVp
bnQoNSldKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNSksIG1ha2VVaW50KDcpXSksIDQyOTQ5NjcyOTQpOwot
Ci0gICAgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAqIHk7
IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCAzNSk7Ci0KLSAgICAvLyBGSVhNRTog
bWFrZSB0aGlzIHdvcms6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTk2MDIKLSAgICAvLyBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVy
biB4IC8geTsgfSI7Ci0gICAgLy8gYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDIpXSksIDMpOwotfQotCi1y
dW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtMi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ5MzU2MGUxMmY4NTg3
NmZjNjhmMzJiMzgxYTVhOWNlNDMxNzljZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12
YXJpYWJsZS0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09O
U09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNv
bXBpbGUgZXJyb3I6IDQ6MjU6IENhbm5vdCBmaW5kIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4K
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJp
YWJsZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJp
YWJsZS0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMzA0YWU1NGE0ZGFi
NzM5OTNmM2ZiMDliMDdhM2IxMTBkYWYzYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQt
dmFyaWFibGUtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJT
b3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElE
IDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NCB2ZWMgPSBmbG9hdDQoeCx4LHgs
eCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICBjb25zdCBhZGFwdGVy
ID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpOwotICAgIGNvbnN0IGRldmlj
ZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwotCi0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFn
ZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlv
dXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUo
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NDczYzNkMDAzOWU5ODVkYjJjNWY3NGEyMDIwYmY4YmQ1OTk5
NGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2Uu
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBpbGUgZXJyb3I6IDY6OTogQ2Fubm90
IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5YzUwMDczN2IyZmNlNjA2MWM4YjU4ZDg5NzI4ODYyYzE1MDY5MTRiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEp
XQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVn
aXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAg
ZmxvYXQgZm9vOwotICAgIGlmIChmb28pIHsKLSAgICAgICAgeCA9IHggKyAxOwotICAgIH0KLX0K
LWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2Fp
dCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdh
aXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21w
dXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRl
c3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJs
ZS1zaGFkb3dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zhcmlh
YmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNjYjliMmQwMWZkYzU3ZTNkM2Y0OTBiMTE5OTk0ZjgwMzY3MjNmMDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3ZhcmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICsw
LDAgQEAKLQotUEFTUyB2YXJpYWJsZVNoYWRvd2luZwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAxNWEwY2JhN2QxNzBlMWFjNGYxOWYyZTA3NTQzNTZkMjJlOTI0NDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0
Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnZhcmlhYmxlU2hh
ZG93aW5nID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAgICAgICAgaW50IHgg
PSA3OwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gODsKLSAgICAgICAg
ICAgICAgICB5ID0geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAg
ICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCA4KTsKLQotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgIGludCB4ID0g
NzsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeCA9IDg7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB5ID0geDsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10pLCA3KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29t
cGFyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBh
cmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzZlNjUxNmZh
YTFlMmZjZDFiNWE5Zjk2N2I2MWMxZmFlMzdhYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29t
cGFyZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1Mg
dmVjdG9yTFQKLVBBU1MgdmVjdG9yTFQyCi1QQVNTIHZlY3RvckxUMwotUEFTUyB2ZWN0b3JMVEUK
LVBBU1MgdmVjdG9yTFRFMgotUEFTUyB2ZWN0b3JMVEUzCi1QQVNTIHZlY3RvckdUCi1QQVNTIHZl
Y3RvckdURQotUEFTUyB2ZWN0b3JHVEUyCi1QQVNTIHZlY3RvckdURTMKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWFiZDY5M2NjZjc3ODA1NjNhYmJmNjNjNDA0N2YxYWQ4NjFjMTkyZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JMVCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29s
IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAg
ICAgICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBhbGwodiA8IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHYg
PSBpbnQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBpbnQyIHYyID0gdjsKLSAgICAgICAgICAgIHYy
IC09IDEwOwotCi0gICAgICAgICAgICByZXR1cm4gIWFueSh2IDwgdjIpOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxUMyA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2
OwotICAgICAgICAgICAgdjIueSArPSAxMDsKLQotICAgICAgICAgICAgYm9vbDIgcmVzdWx0ID0g
diA8IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHQueCAmJiByZXN1bHQueTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVEUg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28o
KSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAg
ICAgIGZsb2F0MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAg
ICByZXR1cm4gYWxsKHYgPD0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxURTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9
IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0
cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFRFMyA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLSAg
ICAgICAgICAgIHYyLnkgLT0gMS4wOwotCi0gICAgICAgICAgICBib29sMiByZXN1bHQgPSB2IDw9
IHYyOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC54ICYmICFyZXN1bHQueTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVCA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAg
ZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJl
dHVybiAhYW55KHYgPiB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07
Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9h
dDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAg
djIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+PSB2Mik7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFMiA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIg
djIgPSB2OwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPj0gdjIpOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckdURTMgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBpbnQyIHYgPSBpbnQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBpbnQyIHYyID0g
djsKLSAgICAgICAgICAgIHYyLnkgKz0gMTA7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9
IHYgPj0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgIXJlc3VsdC55OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhNTAyMDA5ZWYwMzIwZjAyNzVjNGVmYWM0ZTViZjNkOTg2NDhhMDU1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotCi1QQVNTIHZlY3RvckNvbnN0cnVjdG9yCi1QQVNTIHZlY3Rv
ckNvbnN0cnVjdG9yMgotUEFTUyB2ZWN0b3JDb25zdHJ1Y3RvcjMKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVhMmZjNGVkYWVlODIyOWNlNGNkMmU0MGNmZTBiYWI0MzA0OGQ3ODMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+dmVjdG9y
IGN0b3IuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29u
c3RydWN0b3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDMgdiA9IGZsb2F0MyhmbG9hdDIoMTAuMCwg
MTEuMCksIDEyLjApOwotICAgICAgICAgICAgcmV0dXJuIHYueCA9PSAxMC4wICYmIHYueSA9PSAx
MS4wICYmIHYueiA9PSAxMi4wOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi13aGxzbFRlc3RzLnZlY3RvckNvbnN0cnVjdG9yMiA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
MyB2ID0gZmxvYXQzKDEwLjAsIGZsb2F0MigxMS4wLCAxMi4wKSk7Ci0gICAgICAgICAgICByZXR1
cm4gdi54ID09IDEwLjAgJiYgdi55ID09IDExLjAgJiYgdi56ID09IDEyLjA7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0
b3IzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgYm9vbDMgdiA9IGJvb2wzKHRydWUsIGJvb2wyKGZhbHNlLCB0
cnVlKSk7Ci0gICAgICAgICAgICByZXR1cm4gdi54ICYmICF2LnkgJiYgdi56OwotICAgICAgICB9
Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zl
Y3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTAyNzg5OTM1NzdiZDdkMWYx
NWRkMTA3YzZmZWI2ZGRmOGFkYWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0
aW9uLXN1YnRyYWN0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBA
QAotCi1QQVNTIHZlY3RvckFkZGl0aW9uCi1QQVNTIHZlY3RvclN1YnRyYWN0aW9uCi1QQVNTIG1h
dHJpeEFkZGl0aW9uCi1QQVNTIG1hdHJpeFN1YnRyYWN0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0
cmFjdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNThkNzQyN2M3NmI2
MWE4NWQxNTllNTA2ZDA0MzFlOWZiYjU2ODAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4
LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQot
d2hsc2xUZXN0cy52ZWN0b3JBZGRpdGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2
ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSB2ICsgNzsKLSAgICAgICAg
ICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQy
IHUgPSB2ICsgNzsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQp
OwotICAgICAgICAgICAgZmxvYXQyIHUgPSA3ICsgdjsKLSAgICAgICAgICAgIHJldHVybiB1Lng7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSA3ICsgdjsKLSAg
ICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAg
ZmxvYXQyIHUgPSArdjsKLSAgICAgICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAg
ICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMs
IDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSArdjsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNz
ZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwg
W10pLCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJkIiwgW10p
LCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0
RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImYiLCBbXSksIDQs
IGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JTdWJ0cmFjdGlvbiA9IGFzeW5jICgp
ID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQy
IHUgPSB2IC0gNzsKLSAgICAgICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgYigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQp
OwotICAgICAgICAgICAgZmxvYXQyIHUgPSB2IC0gNzsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSA3IC0gdjsKLSAg
ICAgICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAg
ZmxvYXQyIHUgPSA3IC0gdjsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQy
KDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSAtdjsKLSAgICAgICAgICAgIHJldHVybiB1
Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSAtdjsKLSAg
ICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAt
NCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgICJiIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCA0LCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImQiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZSIsIFtdKSwgLTMsIGVwc2ls
b24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICAiZiIsIFtdKSwgLTQsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhB
ZGRpdGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxv
YXQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9h
dDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gbSArIDc7
Ci0gICAgICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBi
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0Migz
LCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtICsgNzsKLSAg
ICAgICAgICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQp
LCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IDcgKyBtOwotICAgICAg
ICAgICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZs
b2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyArIG07Ci0gICAgICAgICAg
ICByZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQy
KDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSArbTsKLSAgICAgICAgICAgIHJldHVy
biBuWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikp
OwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9ICttOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1b
MV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQg
Y2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJi
IiwgW10pLCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNz
ZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJkIiwg
W10pLCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImYiLCBbXSks
IDQsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhTdWJ0cmFjdGlvbiA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0
Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gbSAtIDc7Ci0gICAgICAgICAgICBy
ZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUs
IDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtIC0gNzsKLSAgICAgICAgICAgIHJldHVy
biBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikp
OwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IDcgLSBtOwotICAgICAgICAgICAgcmV0dXJuIG5b
MF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0g
ICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyAtIG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVsx
XTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAg
ICAgICAgIGZsb2F0MngyIG4gPSAtbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAg
ZmxvYXQyeDIgbiA9IC1tOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgICJhIiwgW10pLCAtNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwgW10pLCAtMywgZXBz
aWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgICJjIiwgW10pLCA0LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDMsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZSIsIFtdKSwgLTMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgLTQsIGVwc2lsb24pOwot
fTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2NDNhNDhjZDkwMjBiZmE2MjhhMDc0MjE2NDM4
YWI0OWE2MzZjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JUeXBlU3ludGF4Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxOTFmNTZmZWU2MGI2OWQ1ZDQ4MzAwZGZhYTBmNWVkZDRlYjMwY2Nh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1
OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUeXBlU3lu
dGF4ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
bzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8
aW50LCAyPiB6ID0gaW50MigzLCA0KTsKLSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAg
cmV0dXJuIHgueTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmb28zKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50MyB4OwotICAgICAgICAgICAgdmVjdG9yPGludCwgMz4geiA9IGludDMo
MywgNCwgNSk7Ci0gICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lno7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpbnQgZm9vNCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dDQgeDsKLSAgICAgICAgICAgIHZlY3RvcjxpbnQsND4geiA9IGludDQoMywgNCwgNSwgNik7Ci0g
ICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lnc7Ci0gICAgICAgIH1gOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIi
LCBbXSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28zIiwgW10pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgNik7Ci0KLSAgICBwcm9ncmFtID0gYAotICAgICAg
ICB0eXBlZGVmIGkgPSBpbnQ7Ci0gICAgICAgIGludCBmb28yKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaW50MiB4OwotICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBpbnQyKDMsIDQpOwot
ICAgICAgICAgICAgeCA9IHo7Ci0gICAgICAgICAgICByZXR1cm4geC55OwotICAgICAgICB9YDsK
LQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28y
IiwgW10pLCA0KTsKLX0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJh
bWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFi
bGUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzczODI4Yzc0MWMyZTVkMzk2ZDdmMTE2MDE4NjkwNDQxYmIzZDE5OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dm9pZC12YXJpYWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0KLVBBU1Mgdm9pZFZhcmlhYmxlCi1QQVNTIHZvaWRQYXJhbWV0ZXIKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUtcGFyYW1ldGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFmNjE5NTBmYmQzNjhhMjgyN2M1
NTBjODVjZjg0YzQ1ZTRjODIwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0
ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLnZvaWRWYXJpYWJsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAg
ICAgICAgICB2b2lkIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRl
c3RzLnZvaWRQYXJhbWV0ZXIgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28odm9pZCB4KSB7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1i
cmVhay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3At
YnJlYWstZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4
NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUt
bG9vcC1icmVhay1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUt
bG9vcC1icmVhay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJl
YWsuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg2YTJmNDVjOWFiZjExNjZk
OGM1MzI5ZWE0MDBiODNkOTlkZDYyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
c3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0g
ICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1
ZTsKLSAgICB1aW50IGkgPSAwOwotICAgIHdoaWxlIChpIDwgMTApIHsKLSAgICAgICAgaWYgKGIp
IHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gc2hhZGUg
KyAxLjA7Ci0gICAgICAgIGkgPSBpICsgMTsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24g
PSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hh
ZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJp
YnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLQotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGls
ZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
d2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvd2hpbGUtbG9vcC1jb250aW51ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyZWZmMzU3MTljZTgwZDdlNDgxYWQzMGUxMDBiMThhMDQzNzhhZThiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsK
LX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0gICAgd2hpbGUg
KChzaGFkZSA9IHNoYWRlICsgMC4xLCBpIDwgMTApKSB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAg
ICAgICAgICBpID0gaSArIDE7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAg
ICAgICBzaGFkZSA9IDAuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlv
bjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgw
KSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRl
LCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3Vy
Y2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNv
bnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0
ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAg
ICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwg
Y29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7
c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29u
c3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZz
ZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFd
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0
ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1p
dGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5j
aWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBl
bGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVy
MERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIg
PSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4xOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs5XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0
XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4xOwotICAgIHZl
cnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3Vy
Y2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1
ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAw
LCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5n
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3Jv
dXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
Z3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDog
ImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0g
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZp
ZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNv
bnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hsc2wtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMz
YWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvd2hsc2wuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxz
bC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTliYjBhMzg3Yzk4ZTE3MGJh
OWNkMzU4ZmI0YTc2ZWJhOTIzZWVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDog
YXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0
aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlk
ZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIx
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBb
MCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2IxODE5ZjBhMjEyNWExOGY5ZGM5MzUxMjhj
ZTMwNGM5YTljMjMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi1QQVNTIGJpdEFuZFdyb25n
QXJndW1lbnRMZW5ndGgKLVBBU1MgYml0Tm90V3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXRP
cldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgYml0WG9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFT
UyBkZWNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRpdmlkZVdyb25nQXJndW1lbnRMZW5ndGgK
LVBBU1MgZG90T3BlcmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRvdE9wZXJh
dG9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBncmVhdGVyRXF1YWxXcm9uZ0FyZ3VtZW50TGVu
Z3RoCi1QQVNTIGdyZWF0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGluY1dyb25nQXJndW1l
bnRMZW5ndGgKLVBBU1MgaW5kZXhPcGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBB
U1MgaW5kZXhPcGVyYXRvcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbFNoaWZ0V3JvbmdBcmd1
bWVudExlbmd0aAotUEFTUyBtaW51c1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbW9kdWxvV3Jv
bmdBcmd1bWVudExlbmd0aAotUEFTUyBwbHVzV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyByU2hp
ZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHRpbWVzV3JvbmdBcmd1bWVudExlbmd0aAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3Ro
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZGE3MWUyZmZiNThhMzMwZjcyZDYz
ODI4MTRlNDdiZmNmZmU2OTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzY0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuYml0QW5kV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+
Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJihGb28pIHsgcmV0dXJuIDMyOyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ImKEZvbykg
eyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBp
bnQgb3BlcmF0b3ImKEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLX0KLXdobHNsVGVzdHMuYml0Tm90V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3J+KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvcn4oRm9vLCBGb28pIHsgcmV0dXJuIDUzNDsgfQotICAg
ICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmJpdE9yV3JvbmdBcmd1bWVudExlbmd0
aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yfCgpIHsgcmV0
dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3J8KEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3J8KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuYml0WG9yV3JvbmdBcmd1bWVudExl
bmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3JeKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oRm9vKSB7IHJldHVybiA1MzQ7
IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcl4o
Rm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQot
d2hsc2xUZXN0cy5kZWNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci0tKCkg
eyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGlu
dCBvcGVyYXRvci0tKEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAg
ICAgCi19Ci13aGxzbFRlc3RzLmRpdmlkZVdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9
PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yLygpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgICAgICBpbnQgb3BlcmF0b3IvKEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3IvKEZvbywgRm9vLCBGb28pIHsg
cmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZG90T3Bl
cmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgICAgICBGb28gb3BlcmF0b3IuZm9vPSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBGb28gb3BlcmF0b3IuZm9vPShGb28pIHsgcmV0dXJu
IDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBGb28gb3BlcmF0
b3IuZm9vPShGb28sIGludCwgaW50KSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAg
ICAgCi19Ci13aGxzbFRlc3RzLmRvdE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3IuZm9vKCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oRm9vLCBpbnQpIHsgcmV0dXJuIDQyOyB9
Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZ3JlYXRlckVxdWFsV3JvbmdB
cmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oRm9v
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAg
ICBib29sIG9wZXJhdG9yPj0oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmdyZWF0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3Ro
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I+KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4oRm9vKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9y
PihGb28sIEZvbywgRm9vKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LX0KLXdobHNsVGVzdHMuaW5jV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3Ir
KygpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAg
ICBpbnQgb3BlcmF0b3IrKyhGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotfQotd2hsc2xUZXN0cy5pbmRleE9wZXJhdG9yU2V0dGVyV3JvbmdBcmd1bWVudExl
bmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3JbXT0oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3JbXT0oaW50KSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3JbXT0oaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltd
PShpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLX0KLXdobHNsVGVzdHMuaW5kZXhPcGVyYXRvcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3lu
YyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
aW50IG9wZXJhdG9yW10oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3Jb
XShpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVz
dHMubFNoaWZ0V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I8PCgpIHsgcmV0
dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3I8PChGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yPDwoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5taW51c1dyb25nQXJndW1lbnRM
ZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yLSgpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItKEZvbywgRm9vLCBGb28pIHsg
cmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMubW9kdWxv
V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IlKCkgeyByZXR1cm4gMzI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciUoRm9v
KSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAg
IGludCBvcGVyYXRvciUoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5wbHVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3IrKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvcisoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5yU2hpZnRXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcj4+KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcj4+KEZvbykgeyByZXR1cm4g
NTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0
b3I+PihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci13aGxzbFRlc3RzLnRpbWVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3IqKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvciooRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0
IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciooRm9vLCBGb28sIEZvbykgeyByZXR1
cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93
cm9uZy10eXBlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRk
NDkxZTUzMTZjOWY2NmE4ZmNlYzhlOTIxMmI2MjRlZWQ3MzA3ODMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dy
b25nLXR5cGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1Q
QVNTIGRlY1dyb25nVHlwZXMKLVBBU1MgaW5jV3JvbmdUeXBlcwotUEFTUyBncmVhdGVyVGhhbldy
b25nUmV0dXJuVHlwZQotUEFTUyBncmVhdGVyRXF1YWxXcm9uZ1JldHVyblR5cGUKLVBBU1MgaW5k
ZXhTZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0aE1pc21hdGNoZWRUeXBl
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy10eXBlcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZjMWFiMmNmYmUyNDQ0MTI3YzIxOTk1NTNkNTA1Mjk2OWFjN2Y2
NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4
MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgaW50IGJp
dCBtYXRoLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRlY1dyb25n
VHlwZXMgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oZmxvYXQpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAg
IGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5pbmNXcm9uZ1R5cGVzID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBv
cGVyYXRvcisrKGZsb2F0KSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19
Ci0KLXdobHNsVGVzdHMuZ3JlYXRlclRoYW5Xcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9Pgot
ewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJh
dG9yPihpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGEgKyBiOyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLX0KLQotd2hsc2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9uZ1JldHVyblR5cGUgPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50
IG9wZXJhdG9yPj0oaW50IGEsIGludCBiKSB7IHJldHVybiBhICsgYjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMuaW5kZXhTZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUg
PSBhc3luYyAoKSA9PgotewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
ZmxvYXQgb3BlcmF0b3JbXShpbnQsIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIDUuNDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3Jb
XT0oaW50LCB1aW50LCBpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2V0dGVy
V2l0aE1pc21hdGNoZWRUeXBlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIGZsb2F0IG9wZXJhdG9yLmZvbyhpbnQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDUuNDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpbnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZj
NzA5ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZh
bHVlcy0yLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRp
YWxpemUtdmFsdWVzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRp
YWxpemUtdmFsdWVzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzZjc5
NjFlYWVmYjFmZmEyYjlkMzRmODg1MWQ0NGE2YzljODBhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1p
bml0aWFsaXplLXZhbHVlcy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQot
c3RydWN0IEJhciB7Ci0gICAgZmxvYXQgeTsKLSAgICBmbG9hdCB5MTsKLSAgICBmbG9hdCB5MjsK
LSAgICBmbG9hdCB5MzsKLSAgICBmbG9hdCB5NDsKLSAgICBmbG9hdCB5NTsKLSAgICBmbG9hdCB5
NjsKLSAgICBmbG9hdCB5NzsKLSAgICBmbG9hdCB5ODsKLSAgICBmbG9hdCB5OTsKLSAgICBmbG9h
dCB5MTA7Ci0gICAgZmxvYXQgeTExOwotICAgIGZsb2F0IHkxMjsKLSAgICBmbG9hdCB5MTM7Ci0g
ICAgZmxvYXQgeTE0OwotICAgIGZsb2F0IHkxNTsKLSAgICBmbG9hdCB5MTY7Ci0gICAgZmxvYXQg
eTE3OwotICAgIGZsb2F0IHkxODsKLSAgICBmbG9hdCB5MTk7Ci0gICAgZmxvYXQgeTIwOwotfQot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1
dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3Vs
dDsKLQotICAgIEJhciBiYXI7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICByZXN1bHQuc2hhZGUgPSBiYXIueTIwOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBh
dHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDog
MTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0g
ICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307
Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7
dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVu
aWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3Vw
TGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZl
VG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0
YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVm
ZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3
YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
cik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1
ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVy
LCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUi
KTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdy
YTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2Fw
Q2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9
IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3Qg
cmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVu
dHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxs
LCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRl
clBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5S
ZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVm
ZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJh
dyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29u
c3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5n
ZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12
YWx1ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRp
YWxpemUtdmFsdWVzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYwMzZmODQ1NDRjOTU2NDQxNTc2NDhmY2ZhNDZhMjkyN2Y3MDVjNDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0
NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZs
b2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApOwotfQotCi10aHJlYWQgZmxvYXQqIHB0cigpIHsKLSAgICBmbG9hdCBsb2NhbDsKLSAgICBy
ZXR1cm4gJmxvY2FsOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcCA9IHB0cigpOwotICAg
ICpwID0gMS4wOwotICAgIGZsb2F0IHZhbHVlID0gKnB0cigpOyAvLyBjYWxsaW5nIHB0cigpIHpl
cm8gaW5pdGlhbGl6ZXMuCi0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBy
ZXN1bHQuc2hhZGUgPSB2YWx1ZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwot
fQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1p
dGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9u
U3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBh
bHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVu
ZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmli
dXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsK
LSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNv
bnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAg
IGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRl
eEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3Jt
LWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBl
bGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91
dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5
b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9s
b2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwg
dmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0
b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2
ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsK
LQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5V
TklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIu
bWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJj
ZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsK
LQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6
ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJj
ZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0g
ICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5v
cm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihz
d2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWlu
LmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRw
dXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9
IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0g
W3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9h
ZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNz
RGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsK
LSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVy
UGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwg
MSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434506</attachid>
            <date>2021-07-29 02:22:07 -0700</date>
            <delta_ts>2021-07-29 04:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210729022202.patch</filename>
            <type>text/plain</type>
            <size>3895916</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi40NDY5MGI5Zjg0YTUyYzQ1
ZGY1NDI0YTkyZGY1ZTY2ZDA1MjYzZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGRiYWE4M2MwMjBiZTQwNjRkZDVjODFhODliYTYxOGZhOTY1NTliNDMuLjIzOWY3
ZWRhZDRlNTQ4ZTJmMjg3YmEzNWExNzhhZDA0NjMwNTE5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjggIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIG1hY09TIE1v
bnRlcmV5IGFuZCBwYXJhbGxlbCBPU2VzIG5vIGxvbmdlciBuZWVkIHIyODAxMDMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA4ZjU3MzA5Y2IyNmMzNjgyYTIyNmVmZThmNTRjZTc3YTlkYWIwMTFiLi42MDY4YWE3MDc4
MDhkN2YwMzcwYzY3ODUyNDc3ZDFhMjg3OTY3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDg5
IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNv
bXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmlu
ZEdyb3VwTGF5b3V0QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0
ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0
dHJpYnV0ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNl
VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFycmF5VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29s
ZWFuTGl0ZXJhbC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJyZWFrLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVM
b29wLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RG90RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZhbGx0aHJvdWdoLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlv
bkF0dHJpYnV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TElmU3RhdGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
b2ludGVyVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWZlcmVuY2VUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVwbGFjZVdpdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50
aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXR1cm4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJn
dW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVBcmd1bWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVubmFtZWRUeXBlSGFzaC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9v
cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVy
YXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxj
dWxhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENv
bXB1dGVEaW1lbnNpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJl
YWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZWN1cnNpb25DaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2Vy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZl
T3ZlcmxvYWRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFy
ZExpYnJhcnkudHh0OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlV
dGlsaXRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlv
dXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cExheW91dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVF1ZXVlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVT
d2FwQ2hhaW4uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dv
cmtlck5hdmlnYXRvcitHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV29ya2VyTmF2aWdhdG9yR1BVLmg6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5p
bjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6Omlz
V2ViR1BVVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlQ29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
bnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUlt
cGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RG
b3JTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dy
YW06OnBpcGVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
c0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hh
aW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRp
ZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2Fy
bWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9y
UGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdQVUxheWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR1BVTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJp
bmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCdWZmZXJVc2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFeHRlbnQzRC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlw
ZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQaXBlbGluZUxheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGlu
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3RvcmVPcC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVRleHR1cmVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBM
YXlvdXRNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQ
YXNzRW5jb2Rlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRl
clBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW06IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0
dXJlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVV0aWxzTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2VkKToKKwogMjAyMS0wNy0yOCAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJREJGYWN0b3J5LmRhdGFiYXNlcyBzaG91
bGQgbm90IHJldHVybiBkYXRhYmFzZXMgd2l0aCBpbnZhbGlkIHZlcnNpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NDU0ZDIzNzM5ZGZiN2U2MDU0YTc2ZDk1NWE1Mjc1NWMyMTJmNmQ5Zi4uNjJkNTg4ODMzYThmOTQ3
YTVmMjQ0MzM2MGVkN2Y2NjY3MzI4OTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0
byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdDoKKyAg
ICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdDoKKyAgICAgICAgKiBGZWF0dXJl
RmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQt
d2F0Y2hvcy5wbGlzdDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKwogMjAy
MS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc10gU3RhcnQgdHJhY2tpbmcgcmVzb3VyY2UgdXNlcyBmb3IgSW1hZ2VC
dWZmZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNWFkNzA0YTNiYWNiNmFhNzli
MmZlYTAzM2FkOTgxMDQ5MmRkN2U4NS4uNDRiNDJiNDU4MjU4ZTIwNzVjNWMxODM4NGQzYzdmNzlh
MTUyMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVy
IHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgd2ViR1BVRW5hYmxlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBzZXRXZWJHUFVFbmFibGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMubW06CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgor
CiAyMDIxLTA3LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPUyBNb250ZXJleV0gUHJlc3NpbmcgRm4rRSBzaG91bGQgcHJlc2VudCB0aGUg
ZW1vamkgcGlja2VyIHdoZW4gZWRpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KaW5kZXggMDhjMTAwNTE3NmE5NjBlNzM0
MWQ0MGE5ZDc1MjVmYTY1MWIzNGJmZi4uNTEzM2FjNzViZDhhOTVmNTc0MTk2YmM0MjA0MmVkYTYx
MzFhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9DYW52YXMuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0NhbnZhcy5qc29uCkBAIC0xMSwyNSArMTEsMjUgQEAKICAgICAgICAgfSwKICAgICAg
ICAgewogICAgICAgICAgICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAiY29uZGl0
aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5l
ZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0
aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAg
ICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUg
c2hhZGVyIHByb2dyYW0gaWRlbnRpZmllci4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAg
ICAgICAgICJpZCI6ICJDb250ZXh0VHlwZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmci
LAotICAgICAgICAgICAgImVudW0iOiBbImNhbnZhcy0yZCIsICJiaXRtYXByZW5kZXJlciIsICJ3
ZWJnbCIsICJ3ZWJnbDIiLCAid2ViZ3B1Il0sCisgICAgICAgICAgICAiZW51bSI6IFsiY2FudmFz
LTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiJdLAogICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIHJlbmRlcmluZyBjb250ZXh0IGJhY2tpbmcgdGhl
IGNhbnZhcyBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlk
IjogIlByb2dyYW1UeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYm
IEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFC
TEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmci
LAogICAgICAgICAgICAgImVudW0iOiBbImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAgICAgfSwK
ICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlNoYWRlclR5cGUiLAotICAgICAgICAgICAg
ImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwg
KGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAg
ImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiY29tcHV0
ZSIsICJmcmFnbWVudCIsICJ2ZXJ0ZXgiXQogICAgICAgICB9LApAQCAtNDUsNyArNDUsNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlbXVsdGlwbGllZEFscGhhIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wy
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJH
TCwgV2ViR0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmFpbElmTWFqb3JQZXJm
b3JtYW5jZUNhdmVhdCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyLCBXZWJHUFUiIH0KKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyIiB9CiAgICAgICAgICAgICBdCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTY0LDE0ICs2NCwxMyBAQAogICAgICAgICB9LAogICAg
ICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiU2hhZGVyUHJvZ3JhbSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBXZWJHTC9XZWJHTDIgc2hhZGVyIHBy
b2dyYW0gb3IgV2ViR1BVIHNoYWRlciBwaXBlbGluZS4iLAotICAgICAgICAgICAgImNvbmRpdGlv
biI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQo
RU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFtLiIs
CisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFC
TEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRy
ZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbVR5
cGUiLCAiJHJlZiI6ICJQcm9ncmFtVHlwZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQifSAsCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZlcnRl
eCBhbmQgZnJhZ21lbnQgc2hhZGVyIG1vZHVsZXMgYXJlIHRoZSBzYW1lIG9iamVjdCBmb3IgYSBy
ZW5kZXIgc2hhZGVyIHBpcGxlaW5lIGZvciBhIFdlYkdQVSBkZXZpY2UuIiB9CisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJjYW52YXNJZCIsICIkcmVmIjogIkNhbnZhc0lkIn0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC0xNTEsNyArMTUwLDcgQEAKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdFNoYWRlclNvdXJjZSIsCiAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhlIHNvdXJjZSBvZiB0aGUgc2hhZGVyIG9mIHRoZSBn
aXZlbiB0eXBlIGZyb20gdGhlIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gaWQuIiwKLSAgICAgICAg
ICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wp
IHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAg
ICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIs
CiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9CkBAIC0xNjMsNyArMTYy
LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRlU2hhZGVyIiwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3MgdGhlIHNoYWRlciB3
aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUuIiwKLSAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVf
V0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9X
RUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9LApAQCAtMjQ2
LDE0ICsyNDUsMTQgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUi
OiAicHJvZ3JhbUNyZWF0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkg
JiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyUHJvZ3JhbSIsICIkcmVmIjogIlNo
YWRlclByb2dyYW0iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAg
ICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbURlbGV0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlv
biI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQo
RU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlv
biI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwg
IiRyZWYiOiAiUHJvZ3JhbUlkIiB9CiAgICAgICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3Iu
cHkKaW5kZXggMjlhMmRlYTcyNGYwYmJlY2ZlYmE2ZGI5MjA2MDgxNzAxZTUxMGM1MS4uYmM0ODUw
YmZmNDMzYzc5Njg0YmUwOTQzNGEwZTBkYzE4MjlkNDcwMCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
ci5weQpAQCAtNTEsNyArNTEsNiBAQCBfRU5VTV9JREVOVElGSUVSX1JFTkFNRV9NQVAgPSB7CiAg
ICAgJ2NhbnZhcy13ZWJnbDInOiAnQ2FudmFzV2ViR0wyJywgICMgUmVjb3JkaW5nLlR5cGUuY2Fu
dmFzLXdlYmdsMgogICAgICd3ZWJnbCc6ICdXZWJHTCcsICAjIENhbnZhcy5Db250ZXh0VHlwZS53
ZWJnbAogICAgICd3ZWJnbDInOiAnV2ViR0wyJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLndlYmds
MgotICAgICd3ZWJncHUnOiAnV2ViR1BVJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmdwdQogICAg
ICdiaXRtYXByZW5kZXJlcic6ICdCaXRtYXBSZW5kZXJlcicsICAjIENhbnZhcy5Db250ZXh0VHlw
ZS5iaXRtYXByZW5kZXJlcgogICAgICdtZWRpYXNvdXJjZSc6ICdNZWRpYVNvdXJjZScsICAjIENv
bnNvbGUuQ2hhbm5lbFNvdXJjZS5tZWRpYXNvdXJjZQogICAgICd3ZWJydGMnOiAnV2ViUlRDJywg
ICMgQ29uc29sZS5DaGFubmVsU291cmNlLndlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bAppbmRleCA0YWFmNzU5YWIwNDFkOWJiZDQxOWFiMzJiYTQ4NTkzNmNmMjNmYzdmLi41MjU2NTc2
MGQ0NWQ4YTI2MzQxMjQ4NDM1MjkwNGJmYjNjNGQ4MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbApAQCAtMTIyNSwxOSArMTIyNSw2IEBAIFdlYkdMVXNpbmdNZXRhbDoKICAgICAgICJI
QVZFKFdFQkdMX0NPTVBBVElCTEVfTUVUQUwpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UK
IAotV2ViR1BVRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFtZTogIldl
YkdQVSIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiV2ViR1BVIFNrZXRjaCBwcm90b3R5
cGUiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdl
YktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQo
KQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJs
ZWQoKQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBXZWJNRm9ybWF0UmVh
ZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZDEwYWE0MmI4MGEyYjU3NmM5
ZThjNWM2OTlhNWQ4YjBlZTJkODAwOS4uZDg2ODhkY2ViNjA5YmUwZTcxMjNlNTQxOTlkNjJmMzIx
YzhhYzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC05MDIsMTAgKzkwMiw2IEBACiAj
ZXJyb3IgIkVOQUJMRShXRUJHTDIpIHJlcXVpcmVzIEVOQUJMRShXRUJHTCkiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikgJiYgIUVOQUJMRShXRUJHUFUpCi0jZXJyb3IgIkVO
QUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCi0jZW5kaWYKLQog
I2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpICYmICFFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKICNlcnJvciAiRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykg
cmVxdWlyZXMgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpIgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYTllMTBhMjUxOWUwOTM5MzEzYmYyZjU4ZjRhOTY5NmVl
MjFmNTdhZC4uNTg1N2I3Njc1OGQ1ODkxMDFhMzgxYzllZWM3NWRmZjc1NjYxNzQ0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjYxLDEwICsyNjEsNiBAQAogI2VuZGlm
CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9HUFVfRFJJVkVSX1BSRVdBUk1JTkcpICYm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE2
MDAKLSNkZWZpbmUgRU5BQkxFX0dQVV9EUklWRVJfUFJFV0FSTUlORyAxCi0jZW5kaWYKLQogI2lm
ICFkZWZpbmVkKEVOQUJMRV9IQVJEV0FSRV9KUEVHKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgQ1BV
KFg4Nl82NCkpCiAjZGVmaW5lIEVOQUJMRV9IQVJEV0FSRV9KUEVHIDEKICNlbmRpZgpAQCAtNjE5
LDE0ICs2MTUsNiBAQAogI2RlZmluZSBFTkFCTEVfV0VCR0wyIDEKICNlbmRpZgogCi0jaWYgIWRl
ZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEK
LSNlbmRpZgotCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dITFNMX0NPTVBJTEVSKSAmJiBFTkFCTEUo
V0VCR1BVKQotI2RlZmluZSBFTkFCTEVfV0hMU0xfQ09NUElMRVIgMQotI2VuZGlmCi0KICNpZiAh
ZGVmaW5lZChFTkFCTEVfV0VCUFJPQ0VTU19OU1JVTkxPT1ApICYmIFBMQVRGT1JNKE1BQykKICNk
ZWZpbmUgRU5BQkxFX1dFQlBST0NFU1NfTlNSVU5MT09QIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBlYmQyODFjMGIzMWVhZDc2ODM4Njk3MmNiMGE1MTMwOWJmMzJjZWU5Li5iMWYz
NmI5ZTQ3ODU0YWM4YmNkZGUyZjRiNDllYWYzN2IyNGY0OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNjAyLDY5ICs2MDIsNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogCiAg
ICAgTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwKIAotICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCi0gICAgTW9kdWxlcy93ZWJn
cHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9H
UFVCbGVuZERlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3Jp
cHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNv
bG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbAot
ICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUv
R1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNp
bFN0YXRlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5p
ZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9HUFVMb2FkT3AuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCi0gICAg
TW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9y
bWF0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0
cmlidXRlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJE
ZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRv
ci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbAot
ICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2VFcnJvclNjb3Blcy5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhh
bmRsZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwKLSAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCi0gICAgTW9k
dWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAot
ICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
LSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
citHUFUuaWRsCi0KICAgICBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICAgICBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA5Nzc1ODliZDI4NzQ0NmY5MDM0YjIy
Y2ZlMjZiMTkyNTQxNGFjOTU3Li43YTNjMzM1MjJmNDY5ZmYzNmFhYWVhMmIxN2Y0OGY2ZjZlZDdl
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKQEAgLTU1MCw3NCArNTUwLDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29s
b3JTdGF0ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVD
b2xvcldyaXRlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0
ZUJpdHMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rp
b24uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0
ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZp
bHRlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvR1BVU2hhZGVyU3RhZ2VCaXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVTdG9yZU9wLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9y
bWF0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0
RGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitH
UFUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvV2ViR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5
b3V0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxh
eW91dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvTmF2aWdhdG9yK1dlYlhS
LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAppbmRleCAyNmY0NTdmYTVlMjkwNTQxYjM2NmJhYmU3ZWQ1NDQ0YTczODdkNjI1Li5lZjMyMjZk
Y2M2MzAzNDZiNGYyNzg3ZjA0ZTQxYjAyOThiOTg4ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNTg3LDggKzU4Nyw2IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViRGF0
YWJhc2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01XaW5kb3dXZWJHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RPTVdpbmRvd1dlYkdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RhdGFDdWUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RhdGFDdWUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhVHJhbnNmZXIuY3BwCkBAIC04NTMsNjggKzg1MSw2
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9ybURh
dGFFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRm9ybURhdGFFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3Jv
dXBMYXlvdXRCaW5kaW5nLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VUJsZW5kRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVQmxlbmREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRv
ci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1
ZmZlclVzYWdlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVCdWZmZXJVc2FnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVUNhbnZhc0NvbnRleHQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNhbnZhc0NvbnRleHQuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvclN0YXRlRGVz
Y3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZUJpdHMuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9y
V3JpdGVCaXRzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVQ29tcGFyZUZ1bmN0aW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVDb21wYXJlRnVuY3Rpb24uaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0
b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUVycm9yRmlsdGVyLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRlci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVudDNELmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFeHRlbnQz
RC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUlu
cHV0U3RhdGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUxvYWRPcC5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVTG9hZE9wLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3JpZ2luM0QuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU9yaWdpbjNE
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3V0
T2ZNZW1vcnlFcnJvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVT3V0T2ZNZW1vcnlFcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2UuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0YWdl
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hh
ZGVyU3RhZ2VCaXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVNoYWRlclN0YWdlQml0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVU3RvcmVPcC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU3RvcmVPcC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRGVz
Y3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVVRleHR1cmVGb3JtYXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVGb3JtYXQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlVXNhZ2UuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVVuY2FwdHVyZWRF
cnJvckV2ZW50LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZhbGlkYXRpb25FcnJvci5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVycm9yLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleElucHV0RGVz
Y3JpcHRvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dhaW5Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHYWluTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dhaW5PcHRpb25zLmNwcApAQCAtMTQxNyw4ICsxMzUzLDYgQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrQ3JlZGVudGlhbHMu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmln
YXRvcitDcmVkZW50aWFscy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU05hdmlnYXRvcitFTUUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitFTUUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dhbWVw
YWQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05h
dmlnYXRvcitHYW1lcGFkLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTmF2aWdhdG9yK0dlb2xvY2F0aW9uLmNwcApAQCAtMTQ0Nyw4ICsxMzgxLDYgQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTmF2aWdhdG9yQ3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JFTUUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckVNRS5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdQVS5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR1BVLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
R2FtZXBhZC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTmF2aWdhdG9yR2FtZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtMjQzNSw3MiArMjM2Nyw2
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUFkYXB0ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUFkYXB0ZXIuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXAuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cC5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJp
bmRHcm91cEJpbmRpbmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXIuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJ1
ZmZlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUJ1ZmZlckJpbmRpbmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUJ1ZmZlckJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kQnVm
ZmVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVQ29tbWFuZEVuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2UuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZS5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURl
dmljZUVycm9yU2NvcGVzLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2
aWNlRXZlbnRIYW5kbGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVVBpcGVsaW5lTGF5b3V0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVRdWV1ZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVUXVldWUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVVNhbXBsZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVNhbXBsZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGUuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZS5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVN3YXBDaGFp
bi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VVRleHR1cmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0yNTk5LDEyICsyNDY1
LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV29ya2VyR2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJMb2NhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24uaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IrR1BV
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3Jr
ZXJOYXZpZ2F0b3IrR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRv
ckdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dv
cmtlclR5cGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dvcmtlclR5cGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXb3JrbGV0LmNwcApAQCAtMjcyNyw4ICsyNTg5LDYgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNl
ckFnZW50U2NyaXB0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Vc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFN0eWxlU2hlZXRzLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRMaWJyYXJ5LmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlSlNC
dWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGViYTFmMTcwMGUx
MjVhYzhhMTA4YzNjZDEwZjU4MDViYTlmZWVkZDEuLmMzMzIzNDJiNjJmODY4ZTNlYmJhNTQyNzIy
YjU3ODUwMGNiM2FjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDU5LDY4
ICs0NTksNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVU3RvcmVPcC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVRl
eHR1cmVGb3JtYXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1
cmVVc2FnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlk
YXRpb25FcnJvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmlu
ZGluZy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJp
bmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRF
bmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnhyL05hdmlnYXRvcitX
ZWJYUi5pZGwgXApAQCAtMTg0NSwxOCArMTc4Myw2IEBAICQoR0VORVJBVEVfU0VUVElOR1MpIDog
JSA6ICQoV2ViQ29yZSkvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy8lLmVyYiAkKFdFQl9QUkVG
CiAKICMgLS0tLS0tLS0KIAotIyBXSExTTCBTdGFuZGFyZCBMaWJyYXJ5Ci0KLWFsbCA6IFdITFNM
U3RhbmRhcmRMaWJyYXJ5LmggV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKLQot
V0hMU0xTdGFuZGFyZExpYnJhcnkuaCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4
ZC5wbCAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5
LnR4dAotCWJhc2ggLWMgIiQoUEVSTCkgJDwgV0hMU0xTdGFuZGFyZExpYnJhcnkgPChnemlwIC1j
biAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4
dCkgJEAiCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwIDogJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAucHkgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eS50eHQKLQkkKFBZVEhPTikgJDwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YW5kYXJkTGlicmFyeS50eHQgJEAKLQotIyAtLS0tLS0tLQotCiAjIENvbW1vbiBnZW5lcmF0
b3IgdGhpbmdzCiAKIENPTU1PTl9CSU5ESU5HU19TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWQwZWRmM2MyMjI5YzkxODI4MzhhZmVh
ZjhiMmYwNmNhMzM0OGYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJp
bmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJTdGFn
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQmluZGluZ1R5cGUg
ewotICAgIFVuaWZvcm1CdWZmZXIsCi0gICAgRHluYW1pY1VuaWZvcm1CdWZmZXIsCi0gICAgU2Ft
cGxlciwKLSAgICBTYW1wbGVkVGV4dHVyZSwKLSAgICBTdG9yYWdlQnVmZmVyLAotICAgIER5bmFt
aWNTdG9yYWdlQnVmZmVyLAotfTsKLQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcg
ewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAgR1BVU2hhZGVyU3RhZ2VGbGFncyB2aXNpYmls
aXR5OwotICAgIEdQVUJpbmRpbmdUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwZmYwN2I5NzEwNjJlNWFjYjE4ZmU4MjI5ZDcy
MzA3MTYyYjM2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5n
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwot
dHlwZWRlZiB1MzIgR1BVU2hhZGVyU3RhZ2VGbGFnczsKLQotWwotICAgIEltcGxlbWVudGVkQXM9
R1BVQmluZGluZ1R5cGUKLV0gZW51bSBHUFVCaW5kaW5nVHlwZSB7Ci0gICAgInVuaWZvcm0tYnVm
ZmVyIiwKLSAgICAiZHluYW1pYy11bmlmb3JtLWJ1ZmZlciIsCi0gICAgInNhbXBsZXIiLAotICAg
ICJzYW1wbGVkLXRleHR1cmUiLAotICAgICJzdG9yYWdlLWJ1ZmZlciIsCi0gICAgImR5bmFtaWMt
c3RvcmFnZS1idWZmZXIiCi0gICAgLy8gVE9ETyBvdGhlciBiaW5kaW5nIHR5cGVzCi19OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1d
IGRpY3Rpb25hcnkgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyB7Ci0gICAgcmVxdWlyZWQgdTMy
IGJpbmRpbmc7Ci0gICAgcmVxdWlyZWQgR1BVU2hhZGVyU3RhZ2VGbGFncyB2aXNpYmlsaXR5Owot
ICAgIHJlcXVpcmVkIEdQVUJpbmRpbmdUeXBlIHR5cGU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjM2YmZlNGQ3MmVkOWE0YjU0MDcw
YTU3YTNiMDkzMzk1Y2RkNjJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXBMYXlvdXRCaW5kaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIHsKLSAg
ICBWZWN0b3I8R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZkYTdiZDRj
YmIxODkxODg4YzY1MjRjYzUzNDIzNzc5MGZkMDc3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRp
Y3Rpb25hcnkgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgc2Vx
dWVuY2U8R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MjE5MjM3N2U2Yzg3MTg3ZmZmNmRiN2RiYzUx
NTc2YWZmN2FkNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVCbGVuZEZhY3Rv
cgotXSBlbnVtIEdQVUJsZW5kRmFjdG9yIHsKLSAgICAiemVybyIsCi0gICAgIm9uZSIsCi0gICAg
InNyYy1jb2xvciIsCi0gICAgIm9uZS1taW51cy1zcmMtY29sb3IiLAotICAgICJzcmMtYWxwaGEi
LAotICAgICJvbmUtbWludXMtc3JjLWFscGhhIiwKLSAgICAiZHN0LWNvbG9yIiwKLSAgICAib25l
LW1pbnVzLWRzdC1jb2xvciIsCi0gICAgImRzdC1hbHBoYSIsCi0gICAgIm9uZS1taW51cy1kc3Qt
YWxwaGEiLAotICAgICJzcmMtYWxwaGEtc2F0dXJhdGVkIiwKLSAgICAiYmxlbmQtY29sb3IiLAot
ICAgICJvbmUtbWludXMtYmxlbmQtY29sb3IiCi19OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1H
UFVCbGVuZE9wZXJhdGlvbgotXSBlbnVtIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICAiYWRkIiwK
LSAgICAic3VidHJhY3QiLAotICAgICJyZXZlcnNlLXN1YnRyYWN0IiwKLSAgICAibWluIiwKLSAg
ICAibWF4IgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BV
QmxlbmRGYWN0b3Igc3JjRmFjdG9yID0gIm9uZSI7Ci0gICAgR1BVQmxlbmRGYWN0b3IgZHN0RmFj
dG9yID0gInplcm8iOwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbiA9ICJhZGQiOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRl
c2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVz
Y3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZGYyNGZlN2YxMWNl
ODRjM2RjZmE0YzE5MTZhYTgwZTk0OGRmZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVy
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGxvbmcgdTY0OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVUJ1ZmZlclVzYWdlRmxhZ3M7
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZGljdGlvbmFyeSBHUFVCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCB1NjQg
c2l6ZTsKLSAgICByZXF1aXJlZCBHUFVCdWZmZXJVc2FnZUZsYWdzIHVzYWdlOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzE0ZDUyYWYzOTRkZGNjNWJhZWMxNGI2M2EzYzA1
M2MyMzJmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3Nl
ZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUJ1ZmZlclVzYWdlIHsKLSAgICBjb25zdCB1MzIgTk9O
RSA9IDA7Ci0gICAgY29uc3QgdTMyIE1BUF9SRUFEID0gMTsKLSAgICBjb25zdCB1MzIgTUFQX1dS
SVRFID0gMjsKLSAgICBjb25zdCB1MzIgQ09QWV9TUkMgPSA0OwotICAgIGNvbnN0IHUzMiBDT1BZ
X0RTVCA9IDg7Ci0gICAgY29uc3QgdTMyIElOREVYID0gMTY7Ci0gICAgY29uc3QgdTMyIFZFUlRF
WCA9IDMyOwotICAgIGNvbnN0IHUzMiBVTklGT1JNID0gNjQ7Ci0gICAgY29uc3QgdTMyIFNUT1JB
R0UgPSAxMjg7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVD
YW52YXNDb250ZXh0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhiMTUyOGZm
YzNhOTUyNTg1MGE5NGQ2NWVkMjc5NGE0ZDgwNGMzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVD
YW52YXNDb250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdQVUNhbnZhc0NvbnRl
eHQpOwotCi1zdGQ6OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4gR1BVQ2FudmFzQ29udGV4
dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKLXsKLSAgICBhdXRvIGNvbnRleHQgPSBzdGQ6
OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4obmV3IEdQVUNhbnZhc0NvbnRleHQoY2FudmFz
KSk7Ci0gICAgY29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQ7
Ci19Ci0KLUdQVUNhbnZhc0NvbnRleHQ6OkdQVUNhbnZhc0NvbnRleHQoQ2FudmFzQmFzZSYgY2Fu
dmFzKQotICAgIDogR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKLXsKLX0K
LQotUmVmPFdlYkdQVVN3YXBDaGFpbj4gR1BVQ2FudmFzQ29udGV4dDo6Y29uZmlndXJlU3dhcENo
YWluKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAg
YXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci5hc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3Io
KTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVTd2FwQ2hh
aW46OmNyZWF0ZShudWxscHRyKTsKLSAgICAKLSAgICBhdXRvIGdwdVN3YXBDaGFpbiA9IEdQVVN3
YXBDaGFpbjo6dHJ5Q3JlYXRlKCpncHVEZXNjcmlwdG9yLCBjYW52YXNCYXNlKCkud2lkdGgoKSwg
Y2FudmFzQmFzZSgpLmhlaWdodCgpKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBncHVTd2FwQ2hhaW47
Ci0gICAgYXV0byBuZXdTd2FwQ2hhaW4gPSBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShXVEZNb3Zl
KGdwdVN3YXBDaGFpbikpOwotICAgIAotICAgIC8vIFVwb24gc3VjY2VzcywgaW52YWxpZGF0ZSBh
bmQgcmVwbGFjZSBhbnkgZXhpc3Rpbmcgc3dhcCBjaGFpbi4KLSAgICBpZiAoc3VjY2Vzcykgewot
ICAgICAgICAvLyBGSVhNRTogVGVzdCB0aGF0IHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBl
cnJvciByZXBvcnRpbmcuCi0gICAgICAgIGlmIChtX3N3YXBDaGFpbikKLSAgICAgICAgICAgIG1f
c3dhcENoYWluLT5kZXN0cm95KCk7Ci0KLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29uZmlndXJlU3dhcENoYWluKCp0aGlzLCBuZXdTd2FwQ2hhaW4uZ2V0KCkpOwotCi0g
ICAgICAgIG1fc3dhcENoYWluID0gbmV3U3dhcENoYWluLmNvcHlSZWYoKTsKLQotICAgICAgICBu
b3RpZnlDYW52YXNDb250ZW50Q2hhbmdlZCgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3
U3dhcENoYWluOwotfQotCi1QbGF0Zm9ybUxheWVyKiBHUFVDYW52YXNDb250ZXh0OjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3
YXBDaGFpbigpKQotICAgICAgICByZXR1cm4gbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpLT5wbGF0
Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ2FudmFzQ29u
dGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKG1fc3dhcENo
YWluICYmIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgbV9zd2FwQ2hhaW4tPnN3
YXBDaGFpbigpLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwotCi0gICAgbm90aWZ5Q2FudmFzQ29u
dGVudENoYW5nZWQoKTsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwcmVwYXJlRm9yRGlz
cGxheVdpdGhQYWludCgpCi17Ci0gICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOwot
fQotCi12b2lkIEdQVUNhbnZhc0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKLXsKLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICBpZiAobV9pc0Rpc3BsYXlp
bmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7
Ci0gICAgICAgIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKS0+cHJlc2VudCgpOwotICAgICAgICBt
X2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZhbHNlOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWIwZmU3YjBkMDhjZTkzYzdlY2E4Njk0YTAwZDE2MzJlMTNkMGM5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdl
YkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQgZmluYWwg
OiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEdQVUNhbnZhc0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmKTsKLQotICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsgfQotCi0gICAgV2ViR1BVU3dhcENoYWluKiBz
d2FwQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotICAgIFJlZjxX
ZWJHUFVTd2FwQ2hhaW4+IGNvbmZpZ3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yJik7Ci0KLXByaXZhdGU6Ci0gICAgR1BVQ2FudmFzQ29udGV4dChDYW52YXNCYXNl
Jik7Ci0KLSAgICAvLyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQKLSAgICBib29sIGlz
V2ViR1BVKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkgZmluYWw7Ci0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIGZpbmFs
OwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR1BVQ2FudmFzQ29udGV4dCI7IH0KLSAg
ICAvLyBGSVhNRTogU3R1YnMuCi0gICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9Ci0KLSAgICBib29s
IG1faXNEaXNwbGF5aW5nV2l0aFBhaW50IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8V2ViR1BVU3dh
cENoYWluPiBtX3N3YXBDaGFpbjsKLX07Ci0KLX0gLy8gbgFhbWVzcGFjZSBXZWJDb3JlCi0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3JlOjpHUFVD
YW52YXNDb250ZXh0LCBpc1dlYkdQVSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YTI0MTYxMWQwMGQ2YjE2ZGM1M2ZiNzdl
NjBiMjZmYmI5MzJlMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVVRleHR1cmVV
c2FnZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
cgotXSBkaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgewotICAgIHJlcXVpcmVk
IFdlYkdQVURldmljZSBkZXZpY2U7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7IC8vIEZJWE1FOiBkZWZhdWx0IGlz
IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVC4KLX07Ci0KLVsKLSAgICBBY3RpdmVE
T01PYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViR1BVLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENhbnZhc0Jhc2UsCi0gICAgRXhw
b3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUNhbnZhc0NvbnRleHQgewotICAgIC8vIGJhY2st
cmVmZXJlbmNlIHRvIHRoZSBjYW52YXMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENhbnZh
c0VsZW1lbnQgY2FudmFzOwotCi0gICAgLy8gQ2FsbGluZyBjb25maWd1cmVTd2FwQ2hhaW4gYSBz
ZWNvbmQgdGltZSBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXMgb25lLAotICAgIC8vIGFuZCBhbGwg
b2YgdGhlIHRleHR1cmVzIGl04oCZcyBwcm9kdWNlZC4KLSAgICBXZWJHUFVTd2FwQ2hhaW4gY29u
ZmlndXJlU3dhcENoYWluKFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0K
LSAgICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0LgotICAgIC8vIFByb21pc2U8R1BVVGV4dHVyZUZv
cm1hdD4gZ2V0U3dhcENoYWluUHJlZmVycmVkRm9ybWF0KEdQVURldmljZSBkZXZpY2UpOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTI4OTVmNWYyMjNhMzkxZTRkMzE3ZWQyOWVhZDBhZjQ3MjZmYWRj
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VQotXSBkaWN0aW9uYXJ5IEdQVUNvbG9yIHsKLSAgICByZXF1aXJlZCBmbG9hdCByOwotICAgIHJl
cXVpcmVkIGZsb2F0IGc7Ci0gICAgcmVxdWlyZWQgZmxvYXQgYjsKLSAgICByZXF1aXJlZCBmbG9h
dCBhOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTFhMDMwOTVmNjJlN2RkYzgyOGYyNzFhNjhmODM1NGM0MTI4NjUxNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVUNvbG9yV3JpdGVGbGFnczsKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0
IGZvcm1hdDsKLQotICAgIHJlcXVpcmVkIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJsZW5kOwot
ICAgIHJlcXVpcmVkIEdQVUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNvbG9y
V3JpdGVGbGFncyB3cml0ZU1hc2s7IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTc4ZGM1ODgxYTAxNzk3YjUxMDE0ODM4ZTVlMGM3ZjFkYjk2MmRl
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRv
dwotXSBpbnRlcmZhY2UgR1BVQ29sb3JXcml0ZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUgPSAwOwot
ICAgIGNvbnN0IHUzMiBSRUQgPSAxOwotICAgIGNvbnN0IHUzMiBHUkVFTiA9IDI7Ci0gICAgY29u
c3QgdTMyIEJMVUUgPSA0OwotICAgIGNvbnN0IHUzMiBBTFBIQSA9IDg7Ci0gICAgY29uc3QgdTMy
IEFMTCA9IDE1OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDb21wYXJlRnVuY3Rpb24uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGZm
YjRmMWRmMmRkYmU5MzQxYWNjM2ZkMTFmNWEyNzBhYzRlNDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQ
VUNvbXBhcmVGdW5jdGlvbiB7Ci0gICAgIm5ldmVyIiwKLSAgICAibGVzcyIsCi0gICAgImVxdWFs
IiwKLSAgICAibGVzcy1lcXVhbCIsCi0gICAgImdyZWF0ZXIiLAotICAgICJub3QtZXF1YWwiLAot
ICAgICJncmVhdGVyLWVxdWFsIiwKLSAgICAiYWx3YXlzIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM5MmZiMGQzODkz
NjFhZTI2NmVjZWU5NGQwNGQwYmZkMGY2YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbGVhbiBkZXB0
aFdyaXRlRW5hYmxlZCA9IGZhbHNlOwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBh
cmUgPSAiYWx3YXlzIjsKLQotLyogTm90IFlldCBJbXBsZW1lbnRlZAotICAgIEdQVVN0ZW5jaWxT
dGF0ZUZhY2VEZXNjcmlwdG9yIHN0ZW5jaWxGcm9udDsKLSAgICBHUFVTdGVuY2lsU3RhdGVGYWNl
RGVzY3JpcHRvciBzdGVuY2lsQmFjazsKLQotICAgIHUzMiBzdGVuY2lsUmVhZE1hc2s7Ci0gICAg
dTMyIHN0ZW5jaWxXcml0ZU1hc2s7Ci0qLwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNWI4ZjQ5YTYxYzI3OWU5MDI2NDg0YzZlZjkwNjQ1ZWFkNWIxYWJhMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVt
IEdQVUVycm9yRmlsdGVyIHsKLSAgICAibm9uZSIsCi0gICAgIm91dC1vZi1tZW1vcnkiLAotICAg
ICJ2YWxpZGF0aW9uIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVUV4dGVudDNELmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUV4
dGVudDNELmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDExOTc2OTczNjA3MTU2
NjQ1ZWFmMDMzNWI4MmUwODgyMTdiYWMyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQz
RC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNp
Z25lZCBsb25nIEdQVUludGVnZXJDb29yZGluYXRlOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVRXh0ZW50
M0QgewotICAgIHJlcXVpcmVkIEdQVUludGVnZXJDb29yZGluYXRlIHdpZHRoOwotICAgIHJlcXVp
cmVkIEdQVUludGVnZXJDb29yZGluYXRlIGhlaWdodDsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2Vy
Q29vcmRpbmF0ZSBkZXB0aDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVMb2FkT3AuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
TG9hZE9wLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MyZDRmYTI4MmZjNjk2
MDI3ZTljZmE1ZjM1YTQ2NzJhNzkzYTczYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3Au
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVMb2FkT3AgewotICAgICJjbGVh
ciIsCi0gICAgImxvYWQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVT3JpZ2luM0QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9y
aWdpbjNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMmI3YjM2ZGRjYTNhYWM1
Y2IzNTBlMDA0MDhhMjc0MTZkMjY1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0Qu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0
IEdQVU9yaWdpbjNEIHsKLSAgICB1bnNpZ25lZCB4IHsgMCB9OwotICAgIHVuc2lnbmVkIHkgeyAw
IH07Ci0gICAgdW5zaWduZWQgeiB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVPcmlnaW4zRC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NzE5
YzAyMjRkMzM3YjFhMTY2MGI4ZDA2MDgxMTI3YjM5NWJjZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVT3JpZ2luM0QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVPcmlnaW4zRCB7Ci0gICAgdTMyIHggPSAwOwot
ICAgIHUzMiB5ID0gMDsKLSAgICB1MzIgeiA9IDA7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGE0ODBhZTAyZGExZmM1YjA0MDE3NGVhNzJmOTIzODc1NmNmMWFk
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3Nl
ZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVU91dE9mTWVtb3J5RXJyb3IgewotICAgIGNvbnN0cnVj
dG9yKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFlYTAwZDYxYWJmOGE1MDRhNDAxOTk0YTdjYmRhMTEyYmQzOGU5N2UuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVQb3dlclByZWZlcmVuY2UKLV0gZW51bSBHUFVQ
b3dlclByZWZlcmVuY2UgewotICAgICJsb3ctcG93ZXIiLAotICAgICJoaWdoLXBlcmZvcm1hbmNl
IgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyB7Ci0gICAgR1BV
UG93ZXJQcmVmZXJlbmNlPyBwb3dlclByZWZlcmVuY2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTMxMzY4NDk5ZmNlMmY0YmNjODE5MDlkNzNhZDgxMGM1
YzNlMTY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAg
SW1wbGVtZW50ZWRBcz1HUFVBZGRyZXNzTW9kZQotXSBlbnVtIEdQVUFkZHJlc3NNb2RlIHsKLSAg
ICAiY2xhbXAtdG8tZWRnZSIsCi0gICAgInJlcGVhdCIsCi0gICAgIm1pcnJvci1yZXBlYXQiCi19
OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVGaWx0ZXJNb2RlCi1dIGVudW0gR1BVRmlsdGVy
TW9kZSB7Ci0gICAgIm5lYXJlc3QiLAotICAgICJsaW5lYXIiCi19OwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkg
R1BVU2FtcGxlckRlc2NyaXB0b3IgewotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVSA9
ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVWID0gImNsYW1w
VG9FZGdlIjsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVcgPSAiY2xhbXBUb0VkZ2Ui
OwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIEdQVUZpbHRl
ck1vZGUgbWluRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFwRmls
dGVyID0gIm5lYXJlc3QiOwotICAgIGZsb2F0IGxvZE1pbkNsYW1wID0gMDsKLSAgICBmbG9hdCBs
b2RNYXhDbGFtcCA9IDB4ZmZmZmZmZmY7IC8vIFRPRE86IFdoYXQgc2hvdWxkIHRoaXMgYmU/IFdh
cyBOdW1iZXIuTUFYX1ZBTFVFLgotICAgIHUzMiBtYXhBbmlzb3Ryb3B5ID0gMTsKLSAgICBHUFVD
b21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1bmN0aW9uID0gIm5ldmVyIjsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTM1YWQ0N2VmZGQ4MGU0Yzk1MjYxZTVkMjllYWMxYTNhYjg5ODI0Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdXNpbmcgR1BVU2hhZGVyU3RhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVTaGFk
ZXJTdGFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNoYWRlclN0YWdlPiB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBGbGFncyA6IEdQVVNoYWRlclN0YWdlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwK
LSAgICAgICAgVmVydGV4ID0gMSA8PCAwLAotICAgICAgICBGcmFnbWVudCA9IDEgPDwgMSwKLSAg
ICAgICAgQ29tcHV0ZSA9IDEgPDwgMiwKLSAgICB9OwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYzMxYzIzOTVlM2FiNjJkYTVhMzVhMjMwODU3N2M1ODg3Yzc0YzYyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRl
cmZhY2UgR1BVU2hhZGVyU3RhZ2UgewotICAgIGNvbnN0IHUzMiBOT05FID0gMDsKLSAgICBjb25z
dCB1MzIgVkVSVEVYID0gMTsKLSAgICBjb25zdCB1MzIgRlJBR01FTlQgPSAyOwotICAgIGNvbnN0
IHUzMiBDT01QVVRFID0gNDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVTdG9yZU9wLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVN0b3JlT3AuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzEyYjk1MmU4NzQ4
MDBjZTY2YTlkNzk3ODhmMDQ1NDUyYWEyYjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3Jl
T3AuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVTdG9yZU9wIHsKLSAgICAi
c3RvcmUiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VGV4dHVyZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VGV4dHVyZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmEw
YzNjMjQ4YmQ4ZmFjMWJjMTU2OGQ3ZDYxMmJhMzY5NGZlZWYzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVSW50ZWdlckNvb3JkaW5hdGU7Ci10eXBl
ZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVU2l6ZTMyOwotdHlwZWRlZiBbRW5m
b3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVVRleHR1cmVVc2FnZUZsYWdzOwotCi1bCi0gICAg
SW1wbGVtZW50ZWRBcz1HUFVUZXh0dXJlRGltZW5zaW9uCi1dIGVudW0gR1BVVGV4dHVyZURpbWVu
c2lvbiB7Ci0gICAgIjFkIiwKLSAgICAiMmQiLAotICAgICIzZCIKLX07Ci0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFy
eSBHUFVUZXh0dXJlRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgR1BVRXh0ZW50M0Qgc2l6ZTsK
LSAgICBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBtaXBMZXZlbENvdW50ID0gMTsKLSAgICBHUFVTaXpl
MzIgc2FtcGxlQ291bnQgPSAxOwotICAgIEdQVVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uID0g
IjJkIjsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICByZXF1aXJl
ZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjOWExZjc3NmU0MTc3NTJkMDhiMjhhZDdlZThkNzRlZDJkNTIyMzdkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVUZXh0dXJlRm9ybWF0IHsKLSAgICAi
cmdiYTh1bm9ybSIsCi0gICAgInJnYmE4dWludCIsCi0gICAgImJncmE4dW5vcm0iLAotICAgICJk
ZXB0aDMyZmxvYXQtc3RlbmNpbDgiLAotICAgICJiZ3JhOHVub3JtLXNyZ2IiLAotICAgICJyZ2Jh
MTZmbG9hdCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlVXNhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZVVzYWdlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FjYzM4ZjdkNjVl
OTU1ZTlkNmI3YjkxMzJhZmViYTFjNTIzYjZkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlVXNhZ2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVUZXh0dXJlVXNh
Z2UgewotICAgIGNvbnN0IHUzMiBDT1BZX1NSQyA9IDE7Ci0gICAgY29uc3QgdTMyIENPUFlfRFNU
ID0gMjsKLSAgICBjb25zdCB1MzIgU0FNUExFRCA9IDQ7Ci0gICAgY29uc3QgdTMyIFNUT1JBR0Ug
PSA4OwotICAgIGNvbnN0IHUzMiBPVVRQVVRfQVRUQUNITUVOVCA9IDE2OwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY5ZDFiYTNhZTQ3NzI5N2Zk
ZDgzYjdiYWEyMmQxNjM3OGM4OTllMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQpOwotCi1SZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQ+IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwotfQotCi1SZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IEdQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgR1BV
RXJyb3ImJiBlcnJvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudCh0eXBlLCBXVEZNb3ZlKGVycm9yKSkpOwotfQotCi1HUFVVbmNhcHR1cmVkRXJy
b3JFdmVudDo6R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi0gICAgOiBFdmVu
dCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQotICAgICwgbV9lcnJvcihpbml0aWFsaXpl
ci5lcnJvcikKLXsKLX0KLQotR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2FwdHVyZWRF
cnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEdQVUVycm9yJiYgZXJyb3IpCi0gICAg
OiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAgICwgbV9l
cnJvcihXVEZNb3ZlKGVycm9yKSkKLXsKLX0KLQotRXZlbnRJbnRlcmZhY2UgR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnRJbnRlcmZhY2VUeXBlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI3ZWVlOTVkYWRlZjViYWIzYThiZTZlYzJlZTQzM2Y3YzZmM2Yy
MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkdQVUVycm9y
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKLSAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLXB1YmxpYzoKLSAg
ICBzdHJ1Y3QgSW5pdDogRXZlbnRJbml0IHsKLSAgICAgICAgR1BVRXJyb3IgZXJyb3I7Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBSZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwot
ICAgIHN0YXRpYyBSZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgR1BVRXJyb3ImJik7Ci0KLSAgICBjb25zdCBHUFVFcnJvciBlcnJvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3I7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYpOwotCi0g
ICAgLy8gRXZlbnQKLSAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgR1BVRXJyb3IgbV9lcnJvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjY2Q4MTVjYmQxNWZiYWNmMmVmMWMxOTg0MGZmNDBk
MWZkY2VhMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgKEdQVU91dE9mTWVtb3J5RXJyb3Igb3Ig
R1BVVmFsaWRhdGlvbkVycm9yKSBHUFVFcnJvcjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgcmVxdWlyZWQgR1BVRXJyb3IgZXJy
b3I7Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudCA6IEV2ZW50IHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnRJbml0IGdwdVVuY2FwdHVyZWRFcnJvckV2ZW50SW5pdERpY3Qp
OwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEdQVUVycm9yIGVycm9yOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWM1YjE1NmZiNzI4YzYzMGZkNzNjZWQ2NzIx
YTM1YTk5OTY2NDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVWYWxpZGF0aW9uRXJyb3IgewotICAg
IGNvbnN0cnVjdG9yKERPTVN0cmluZyBtZXNzYWdlKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgbWVzc2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDNkMjZjNTMwZTJmNjMzYzBkMjdiYzExMDM2YzUw
MzllYTM2NWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFz
PUdQVVZlcnRleEZvcm1hdAotXSBlbnVtIEdQVVZlcnRleEZvcm1hdCB7Ci0gICAgImZsb2F0IiwK
LSAgICAiZmxvYXQyIiwKLSAgICAiZmxvYXQzIiwKLSAgICAiZmxvYXQ0IgotfTsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHU2NCBvZmZzZXQgPSAw
OwotICAgIHJlcXVpcmVkIEdQVVZlcnRleEZvcm1hdCBmb3JtYXQ7Ci0gICAgcmVxdWlyZWQgdTMy
IHNoYWRlckxvY2F0aW9uOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhhZTA4ZjY1ODZkZDg5NTJjMTc3MDc2Y2ZmOTI1YmNkNDEzMTU2OGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVSW5wdXRTdGVw
TW9kZQotXSBlbnVtIEdQVUlucHV0U3RlcE1vZGUgewotICAgICJ2ZXJ0ZXgiLAotICAgICJpbnN0
YW5jZSIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAg
ICByZXF1aXJlZCB1NjQgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1vZGUgPSAi
dmVydGV4IjsKLSAgICBzZXF1ZW5jZTxHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yPiBhdHRy
aWJ1dGVTZXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGNmOTdiMTBlZTQxYTgxMWZjM2QyOTI5MzAyZTQyNzc1ZjBlYTczZjYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgSW1wbGVtZW50ZWRB
cz1HUFVJbmRleEZvcm1hdAotXSBlbnVtIEdQVUluZGV4Rm9ybWF0IHsKLSAgICAidWludDE2IiwK
LSAgICAidWludDMyIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVZlcnRleElucHV0RGVzY3JpcHRv
ciB7Ci0gICAgR1BVSW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQgPSAidWludDMyIjsKLSAgICByZXF1
aXJlZCBzZXF1ZW5jZTxHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yPz4gdmVydGV4QnVmZmVyczsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3Ir
R1BVLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjBmOGYxNzU2OTQ5NDA1YjQ5NGYyNDI3
ODE3NDI2OTEwOTNmNDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI25hdmlnYXRvci1ncHUKLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1O
YXZpZ2F0b3JHUFUKLV0gcGFydGlhbCBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKLSAgICBbU2FtZU9i
amVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkzZmMwN2JiNjU4ZmQ2MTlhZmYzZDI0OTM4YzYwZDhlMWQ1Y2Y4NTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmF2aWdh
dG9yR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTmF2aWdhdG9yLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTmF2aWdhdG9y
R1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCi17Ci0gICAgTmF2
aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwotICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5p
cXVlPE5hdmlnYXRvckdQVT4oKTsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7Ci0gICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0K
LQotY29uc3QgY2hhciogTmF2aWdhdG9yR1BVOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0
dXJuICJOYXZpZ2F0b3JHUFUiOwotfQotCi1jb25zdCBXZWJHUFUqIE5hdmlnYXRvckdQVTo6Z3B1
KE5hdmlnYXRvciYgbmF2aWdhdG9yKQotewotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLndlYkdQVUVuYWJsZWQpOwot
ICAgIHJldHVybiBOYXZpZ2F0b3JHUFU6OmZyb20oJm5hdmlnYXRvciktPmdwdSgpOwotfQotCi1j
b25zdCBXZWJHUFUqIE5hdmlnYXRvckdQVTo6Z3B1KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZ3B1
KQotICAgICAgICBtX2dwdSA9IFdlYkdQVTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1fZ3B1Lmdl
dCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
R1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1OGQwODQ2Y2Q2NzI5ZjQ4ZWU5NWU3NzIzYjlm
ZGI5MWY0OGI3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIE5hdmlnYXRvcjsKLWNsYXNzIFdlYkdQVTsKLQotY2xhc3MgTmF2
aWdhdG9yR1BVIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFdlYkdQVSog
Z3B1KE5hdmlnYXRvciYpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBOYXZpZ2F0b3JHUFUqIGZy
b20oTmF2aWdhdG9yKik7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
Ci0gICAgCi0gICAgY29uc3QgV2ViR1BVKiBncHUoKSBjb25zdDsKLQotICAgIG11dGFibGUgUmVm
UHRyPFdlYkdQVT4gbV9ncHU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ2
M2Y5ZTBhMTZkZWVhZTE1MGJlNTE3MmQxMmIxYjcyN2M0OTI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1QuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZl
cmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25BdHRy
aWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNM
QmxvY2suaCIKLSNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hM
U0xCcmVhay5oIgotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAi
V0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENv
bnRpbnVlLmgiCi0jaW5jbHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUg
IldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGYWxsdGhyb3VnaC5oIgotI2luY2x1ZGUgIldITFNMRmxv
YXRMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgot
I2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZS5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEluZGV4
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRl
ICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xN
YWtlUG9pbnRlckV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
TmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmll
ci5oIgotI2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFJl
dHVybi5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNl
bWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN0
YXRlbWVudExpc3QuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENh
c2UuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNM
VGVybmFyeUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAi
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAi
V0hMU0xXaGlsZUxvb3AuaCIKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFk
ZHJlc3NFc2NhcGVNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxM2IyOTZkOGQzM2Q1YmY2YTk0OTZiYjBjMzExNjc3ZGEyOWM5ZTFlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgQWRkcmVzc0VzY2FwZU1vZGUgOiB1
aW50OF90IHsKLSAgICBFc2NhcGVzLCAvLyBDb25zZXJ2YXRpdmVseSwgdGhpcyBhZGRyZXNzLW9m
IG9wZXJhdGlvbiBtaWdodCBlc2NhcGUuCi0gICAgRG9lc05vdEVzY2FwZSAvLyBUaGlzIGFkZHJl
c3Mtb2Ygb3BlcmF0aW9uIGRlZmluaXRlbHkgZG9lcyBub3QgZXNjYXBlLgotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1Nw
YWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODY2NjhiNjY3ZTg0NjVjNzg5
ODlhMDAwNmI2YTBmNmQwZDIxOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QWRkcmVzc1NwYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgQWRkcmVzc1NwYWNlIDogdWludDhfdCB7Ci0g
ICAgQ29uc3RhbnQsCi0gICAgRGV2aWNlLAotICAgIFRocmVhZGdyb3VwLAotICAgIFRocmVhZAot
fTsKLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IHRvU3RyaW5nKEFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2UpCi17Ci0gICAgc3dpdGNoIChhZGRyZXNzU3BhY2UpIHsKLSAgICBjYXNlIEFkZHJl
c3NTcGFjZTo6Q29uc3RhbnQ6Ci0gICAgICAgIHJldHVybiAiY29uc3RhbnQiOwotICAgIGNhc2Ug
QWRkcmVzc1NwYWNlOjpEZXZpY2U6Ci0gICAgICAgIHJldHVybiAiZGV2aWNlIjsKLSAgICBjYXNl
IEFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFkZ3JvdXAi
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2UgPT0gQWRkcmVzc1Nw
YWNlOjpUaHJlYWQpOwotICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0gICAgfQotfQotCi1zdHJ1
Y3QgTGVmdFZhbHVlIHsKLSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwotfTsKLQotc3Ry
dWN0IEFic3RyYWN0TGVmdFZhbHVlIHsKLX07Ci0KLXN0cnVjdCBSaWdodFZhbHVlIHsKLX07Ci0K
LS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4
IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgotY2xhc3MgVHlwZUFubm90YXRp
b24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGVBbm5v
dGF0aW9uKCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICA6IG1fZW1wdHkodHJ1ZSkKLSNl
bmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihMZWZ0VmFsdWUgdikKLSAg
ICAgICAgOiBtX2lubmVyKHYpCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKEFi
c3RyYWN0TGVmdFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0K
LSAgICBUeXBlQW5ub3RhdGlvbihSaWdodFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihjb25zdCBUeXBlQW5ub3RhdGlvbiYp
ID0gZGVmYXVsdDsKLSAgICBUeXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIG90aGVyKSA9
IGRlZmF1bHQ7Ci0KLSAgICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFR5cGVBbm5v
dGF0aW9uJikgPSBkZWZhdWx0OwotICAgIFR5cGVBbm5vdGF0aW9uJiBvcGVyYXRvcj0oVHlwZUFu
bm90YXRpb24mJiBvdGhlcikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpvcHRpb25hbDxBZGRyZXNz
U3BhY2U+IGxlZnRBZGRyZXNzU3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFt
X2VtcHR5KTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPiht
X2lubmVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxMZWZ0VmFsdWU+KG1faW5uZXIp
LmFkZHJlc3NTcGFjZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICBib29sIGlzUmlnaHRWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1w
dHkpOwotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSaWdodFZhbHVlPiht
X2lubmVyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2
aXNpdChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0
b3IsIHN0ZDo6ZGVjbHZhbDxWYXJpYW50PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0VmFsdWUsIFJp
Z2h0VmFsdWU+Jj4oKSkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwotICAgICAg
ICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsKLSAgICB9Ci0KLSAgICBib29s
IGlzQWJzdHJhY3RMZWZ0VmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vt
cHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QWJzdHJhY3RMZWZ0
VmFsdWU+KG1faW5uZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYW50PExlZnRWYWx1
ZSwgQWJzdHJhY3RMZWZ0VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBib29sIG1fZW1wdHkgeyBmYWxzZSB9OwotI2VuZGlmCi19OwotCi19Ci0KLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMyNzYwYTE0
NWZmOTY2NjgyOWJlNjg5Zjk2NzFmYjMwOWJhYzZmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xS
ZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIGZpbmFsIDogcHVibGljIFJl
ZmVyZW5jZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgdXNpbmcgQmFzZSA9IFJlZmVy
ZW5jZVR5cGU7Ci0KLSAgICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBl
KQotICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50
VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxBcnJheVJlZmVyZW5jZVR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5
cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVJlZmVyZW5jZVR5
cGUobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsKLSAgICB9
Ci0KLSAgICB+QXJyYXlSZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy0+QmFzZTo6aGFzaCgpIF4g
U3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2goImFycmF5Iik7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNl
KCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwotICAgIH0KLQotICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICJbXSIpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBF
KEFycmF5UmVmZXJlbmNlVHlwZSwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQzZTViZmNiMzAxZDMxZjk3NmEyZTgwNTQwZjIxYmI4OTQ0Y2M0MjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5o
IgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBBcnJheVR5cGUgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5cGUgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5
VHlwZSk7Ci0gICAgQXJyYXlUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVubmFtZWRU
eXBlPiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgICAgIDogVW5uYW1l
ZFR5cGUobG9jYXRpb24sIEtpbmQ6OkFycmF5KQotICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RG
TW92ZShlbGVtZW50VHlwZSkpCi0gICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykK
LSAgICB7Ci0gICAgfQotcHVibGljOgotCi0gICAgc3RhdGljIFJlZjxBcnJheVR5cGU+IGNyZWF0
ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVu
c2lnbmVkIG51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXJyYXlUeXBlKGxvY2F0aW9uLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgbnVtRWxlbWVudHMpKTsK
LSAgICB9Ci0KLSAgICB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgVW5uYW1l
ZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgVW5uYW1l
ZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgdW5zaWduZWQgbnVt
RWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUVsZW1lbnRzOyB9Ci0KLSAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OkludEhhc2g8dW5zaWdu
ZWQ+OjpoYXNoKG1fbnVtRWxlbWVudHMpIF4gbV9lbGVtZW50VHlwZS0+aGFzaCgpOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcnJheVR5cGUmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRzKCkgPT0gb3RoZXIubnVtRWxlbWVudHMoKSAm
JiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0eXBlKCkudG9TdHJpbmco
KSwgJ1snLCBudW1FbGVtZW50cygpLCAnXScpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8
VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7Ci0gICAgdW5zaWduZWQgbV9udW1FbGVtZW50czsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKEFycmF5VHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEFycmF5
VHlwZSwgaXNBcnJheVR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzZDk5OGI1MjVmYzZmM2E4NTQ0NWQ3ZGJlNDNjZWY2NjNkZTI3N2E1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQXNz
aWdubWVudEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpBc3NpZ25tZW50KQotICAgICAgICAsIG1fbGVmdChX
VEZNb3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewot
I2lmIENQVShBRERSRVNTMzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZCk7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBB
c3NpZ25tZW50RXhwcmVzc2lvbihjb25zdCBBc3NpZ25tZW50RXhwcmVzc2lvbiYpID0gZGVsZXRl
OwotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBF
eHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLSAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gdGFrZVJpZ2h0KCkgeyByZXR1cm4gV1RGTW92ZShtX3JpZ2h0KTsgfQotCi1wcml2
YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IG1fcmlnaHQ7Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICBjaGFyIG1fcGFkWzFd
OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShBc3NpZ25tZW50RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9FWFBSRVNTSU9OKEFzc2lnbm1lbnRFeHByZXNzaW9uLCBpc0Fzc2lnbm1lbnRF
eHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNTU2MjVjOGZkYzQxODFlYjRjZDRlOTZmNWU2ZjExY2E0ZTMxZmM3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCYXNlRnVuY3Rpb25B
dHRyaWJ1dGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJh
c2VGdW5jdGlvbkF0dHJpYnV0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogbV9j
b2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkJhc2VG
dW5jdGlvbkF0dHJpYnV0ZSgpID0gZGVmYXVsdDsKLQotICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0
ZShjb25zdCBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKLSAgICBCYXNlRnVuY3Rp
b25BdHRyaWJ1dGUoQmFzZUZ1bmN0aW9uQXR0cmlidXRlJiYpID0gZGVmYXVsdDsKLQotcHJpdmF0
ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNl
U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDk4OGE2MGZm
ZjVhNjg0ZDdiMTM3ZDM1Y2M3MzlhZmQyMDQ3NmViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9p
bnRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBJbnRyaW5zaWNzOwotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotY2xhc3MgVW5uYW1lZFR5cGU7
Ci0KLWNsYXNzIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgQmFzZVNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAg
OiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
QmFzZVNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAgQmFzZVNlbWFudGljKGNvbnN0IEJhc2VT
ZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIEJhc2VTZW1hbnRpYyhCYXNlU2VtYW50aWMmJikgPSBk
ZWZhdWx0OwotCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1l
ZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBT
aGFkZXJJdGVtRGlyZWN0aW9uIDogdWludDhfdCB7Ci0gICAgICAgIElucHV0LAotICAgICAgICBP
dXRwdXQKLSAgICB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQ
b2ludFR5cGU+JikgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2Nv
ZGVMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyZDkyNGJhNzVjZmI2ZWRlNGQ4NGNiZWQ1MmQ0ZGQ5MTRjNjViMzczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJsb2NrIGZpbmFsIDogcHVibGljIFN0YXRlbWVu
dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQmxvY2soQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJsb2NrKQotICAgICAgICAsIG1fc3RhdGVtZW50cyhX
VEZNb3ZlKHN0YXRlbWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+QmxvY2soKSA9IGRlZmF1
bHQ7Ci0KLSAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOwotICAgIEJsb2NrKEJsb2Nr
JiYpID0gZGVmYXVsdDsKLQotICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJldHVybiBt
X3N0YXRlbWVudHM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0ZW1lbnRzIG1fc3RhdGVtZW50czsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKEJsb2NrKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChCbG9j
aywgaXNCbG9jaygpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVh
bkxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJvb2xlYW5MaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzYwNTE2
N2ZiYTVlZTAzYWFmYmM2N2M4MTMxYzUzMWUwMTA1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJvb2xlYW5MaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJl
c3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJvb2xl
YW5MaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbCB2YWx1ZSkKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpCb29sZWFuTGl0ZXJhbCkKLSAgICAgICAgLCBtX3Zh
bHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVsZXRl
OwotICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAg
IEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9IGRlbGV0
ZTsKLSAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYpID0gZGVm
YXVsdDsKLQotICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAg
ICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBCb29sZWFuTGl0
ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICBjb3B5VHlwZVRv
KHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IGJvb2wgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVG
SU5FX0RFRkFVTFRfREVMRVRFKEJvb2xlYW5MaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oQm9vbGVhbkxpdGVyYWwsIGlzQm9vbGVhbkxpdGVyYWwoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmYTQ3NjFiYTI4YjdjYjcyNDg0ZDdjNjIzNjdjNDc4YTQyZGFiZjBl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgQnJlYWsgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBCcmVhayhDb2RlTG9jYXRpb24gbG9jYXRp
b24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCcmVhaykKLSAgICB7Ci0g
ICAgfQotCi0gICAgfkJyZWFrKCkgPSBkZWZhdWx0OwotCi0gICAgQnJlYWsoY29uc3QgQnJlYWsm
KSA9IGRlbGV0ZTsKLSAgICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShCcmVhaykKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQnJlYWss
IGlzQnJlYWsoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5T
ZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2U0
ZGYyZWMxYjQxNGQwY2I4M2M2OWIyNzY2MjQ0YjliNmI2NzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVy
VHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJs
ZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzKSBjb25zdAotewotICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgIGNhc2Ug
VmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJ
RDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5
cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxl
OjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmlu
c2ljcy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmJvb2xUeXBlKCkp
OwotICAgIGNhc2UgVmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiBtYXRj
aGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFi
bGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUs
IGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUo
KSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6
OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5z
aWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoK
LSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlw
ZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiBtYXRj
aGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWYXJp
YWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFk
SUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0
M1R5cGUoKSk7Ci0gICAgfQotfQotCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAot
ewotICAgIHN3aXRjaCAoKmVudHJ5UG9pbnRUeXBlKSB7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlw
ZTo6VmVydGV4OgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFNo
YWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxl
KSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0Ogot
ICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpQU2l6ZToKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGNhc2Ug
RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dp
dGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklzRnJvbnRG
YWNlOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgICAg
IGNhc2UgVmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxl
OjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVGFy
Z2V0OgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgICAgIGNh
c2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0g
ICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6SW5wdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgICAgIGNhc2Ug
VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJ
bmRleDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0
ZW1EaXJlY3Rpb246Ok91dHB1dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1YTUxODI3MTA1MWM1ZDBjMzk5NTFlYzdhY2IyYWM3
NDZiMGNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJh
c2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQnVpbHRJblNlbWFudGljIDogcHVibGlj
IEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBjbGFzcyBWYXJpYWJsZSA6IHVpbnQ4X3QgewotICAgICAgICBTVkluc3RhbmNlSUQs
Ci0gICAgICAgIFNWVmVydGV4SUQsCi0gICAgICAgIFBTaXplLAotICAgICAgICBTVlBvc2l0aW9u
LAotICAgICAgICBTVklzRnJvbnRGYWNlLAotICAgICAgICBTVlNhbXBsZUluZGV4LAotICAgICAg
ICBTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFNWVGFyZ2V0LAotICAgICAgICBTVkRlcHRoLAot
ICAgICAgICBTVkNvdmVyYWdlLAotICAgICAgICBTVkRpc3BhdGNoVGhyZWFkSUQsCi0gICAgICAg
IFNWR3JvdXBJRCwKLSAgICAgICAgU1ZHcm91cEluZGV4LAotICAgICAgICBTVkdyb3VwVGhyZWFk
SUQKLSAgICB9OwotCi0gICAgQnVpbHRJblNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VmFyaWFibGUgdmFyaWFibGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFyZ2V0SW5kZXgg
PSBzdGQ6Om51bGxvcHQpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgICAg
ICAsIG1fdmFyaWFibGUodmFyaWFibGUpCi0gICAgICAgICwgbV90YXJnZXRJbmRleChXVEZNb3Zl
KHRhcmdldEluZGV4KSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QnVpbHRJblNlbWFu
dGljKCkgPSBkZWZhdWx0OwotCi0gICAgQnVpbHRJblNlbWFudGljKGNvbnN0IEJ1aWx0SW5TZW1h
bnRpYyYpID0gZGVsZXRlOwotICAgIEJ1aWx0SW5TZW1hbnRpYyhCdWlsdEluU2VtYW50aWMmJikg
PSBkZWZhdWx0OwotCi0gICAgVmFyaWFibGUgdmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mIHRhcmdldEluZGV4KCkgeyBy
ZXR1cm4gbV90YXJnZXRJbmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1aWx0
SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YXJpYWJs
ZSA9PSBvdGhlci5tX3ZhcmlhYmxlICYmIG1fdGFyZ2V0SW5kZXggPT0gb3RoZXIubV90YXJnZXRJ
bmRleDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQnVpbHRJblNlbWFudGlj
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICB9Ci0KLSAgICBTdHJpbmdWaWV3IHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNl
SUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSW5zdGFuY2VJRCI7Ci0gICAgICAgIGNhc2UgVmFy
aWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWVmVydGV4SUQiOwotICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgICAgIHJldHVybiAiUFNpemUiOwot
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICAgICAgcmV0dXJuICJT
VlBvc2l0aW9uIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAg
ICAgICAgIHJldHVybiAiU1ZJc0Zyb250RmFjZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
U2FtcGxlSW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWU2FtcGxlSW5kZXgiOwotICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNW
SW5uZXJDb3ZlcmFnZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAg
ICAgICAgcmV0dXJuICJTVlRhcmdldCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6
Ci0gICAgICAgICAgICByZXR1cm4gIlNWRGVwdGgiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpT
VkNvdmVyYWdlOgotICAgICAgICAgICAgcmV0dXJuICJTVkNvdmVyYWdlIjsKLSAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkRp
c3BhdGNoVGhyZWFkSUQiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNWR3JvdXBJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3Jv
dXBJbmRleDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZHcm91cEluZGV4IjsKLSAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3Vw
VGhyZWFkSUQiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBl
KGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGly
ZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJy
aWRlOwotCi1wcml2YXRlOgotICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7Ci0gICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbV90YXJnZXRJbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxs
RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQxMThlMjFiMzUw
OTVjZjg0NWIxMWY2YjkxNGQ4ZWVkNzRlNmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENhbGxFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVj
bGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBDYWxsRXhwcmVz
c2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBDYWxsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFN0cmluZyYmIG5hbWUsIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgYXJndW1lbnRz
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNhbGwpCi0gICAgICAgICwg
bV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92ZShhcmd1
bWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxsRXhw
cmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9uJiYp
ID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBhcmd1bWVu
dHMoKSB7IHJldHVybiBtX2FyZ3VtZW50czsgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1
cm4gbV9uYW1lOyB9Ci0KLSAgICB+Q2FsbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB2
b2lkIHNldENhc3REYXRhKE5hbWVkVHlwZSYgbmFtZWRUeXBlKQotICAgIHsKLSAgICAgICAgbV9j
YXN0UmV0dXJuVHlwZSA9ICZuYW1lZFR5cGU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Nhc3QoKSB7
IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9Ci0gICAgTmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSgpIHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGU7IH0KLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9u
JiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9mdW5jdGlvbik7Ci0gICAgICAg
IHJldHVybiAqbV9mdW5jdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZ1bmN0aW9uKEZ1bmN0
aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBBU1NF
UlQoIW1fZnVuY3Rpb24pOwotICAgICAgICBtX2Z1bmN0aW9uID0gJmZ1bmN0aW9uRGVjbGFyYXRp
b247Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVjdG9yPFVu
aXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9hcmd1bWVudHM7Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlv
biogbV9mdW5jdGlvbiB7IG51bGxwdHIgfTsKLSAgICBOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5
cGUgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShDYWxsRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9FWFBSRVNTSU9OKENhbGxFeHByZXNzaW9uLCBpc0NhbGxFeHByZXNzaW9uKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVz
c2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjQ4YmIzODgxNTEzM2Y5NmQx
OGI1ZjhiOTAwZmQyNWQzYTExYzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbW1hRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBDb21tYUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ29tbWFFeHByZXNzaW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBsaXN0
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNvbW1hKQotICAgICAgICAs
IG1fbGlzdChXVEZNb3ZlKGxpc3QpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Q29tbWFFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGxpc3QoKSB7
IHJldHVybiBtX2xpc3Q7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJl
c3Npb24+PiBtX2xpc3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShDb21tYUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDb21tYUV4cHJlc3Npb24sIGlzQ29tbWFFeHByZXNzaW9u
KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDQxMzdlODVi
ZmNjNTgxN2I3ZDI1ZmRmZjViNDA2NGUwOGEzNDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExT
TEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFs
LmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggbWFjT1MgU2llcnJhIGRvZXNuJ3Qgc2VlbSB0
byBzdXBwb3J0IHB1dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAotLy8gc28gdGhpcyBp
cyBhIHdyYXBwZXIgY2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uIEFzIHNv
b24gYXMgd2UgZG9uJ3QKLS8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2FuIGJlIG1p
Z3JhdGVkIHRvIGEgVmFyaWFudCBwcm9wZXIuCi1jbGFzcyBDb25zdGFudEV4cHJlc3Npb24gZmlu
YWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENvbnN0YW50
RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJMaXRlcmFsKQotICAgICAgICA6IG1f
dmFyaWFudChXVEZNb3ZlKGludGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29u
c3RhbnRFeHByZXNzaW9uKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRMaXRlcmFs
JiYgZmxvYXRMaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGZsb2F0TGl0ZXJh
bCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihCb29sZWFuTGl0ZXJh
bCYmIGJvb2xlYW5MaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGJvb2xlYW5M
aXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLSAgICAgICAgOiBt
X3ZhcmlhbnQoV1RGTW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgQ29uc3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShjb25zdCBDb25zdGFu
dEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9y
PShDb25zdGFudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWwm
IGludGVnZXJMaXRlcmFsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
Z2V0PEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZpc2l0b3IpIC0+IGRl
Y2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZhcmlhbnQ8SW50ZWdlckxp
dGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIEZsb2F0TGl0ZXJhbCwgQm9vbGVhbkxpdGVy
YWwsIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgY29u
c3QgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxJ
bnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgRmxvYXRMaXRlcmFsLCBCb29s
ZWFuTGl0ZXJhbCwgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPiY+KCkpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YXJpYW50KTsKLSAgICB9Ci0KLSAgICBD
b25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVn
ZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGlu
dGVnZXJMaXRlcmFsLmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24g
ewotICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUoKTsKLSAg
ICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBDb25zdGFu
dEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9uZSgpOwot
ICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGJvb2xlYW5MaXRlcmFsLmNs
b25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAg
ICAgIHJldHVybiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSks
IG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IENvbnN0YW50RXhw
cmVzc2lvbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHJlc3VsdDsKLSAgICAgICAgZG91YmxlIHZhbHVlOwotICAgICAgICB2aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAg
ICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNv
bnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAg
ICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAg
ICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAgICAg
IHZhbHVlID0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBCb29s
ZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0PEJvb2xl
YW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJv
b2xlYW5MaXRlcmFsLnZhbHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgpOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAg
IH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCkgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgb3RoZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkgPT0gb3RoZXJNZW1i
ZXJSZWZlcmVuY2UuZW51bWVyYXRpb25NZW1iZXIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiAqcmVzdWx0OwotCi0gICAgICAgIG90aGVyLnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0
ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gaW50ZWdlckxpdGVyYWwudmFs
dWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0
ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSBmbG9h
dExpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJikg
ewotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0sIFsmXShjb25zdCBFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAg
ICAgICAgfSkpOwotCi0gICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICByZXR1cm4gKnJl
c3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFudDwKLSAgICAgICAgSW50ZWdlckxp
dGVyYWwsCi0gICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIEZsb2F0TGl0
ZXJhbCwKLSAgICAgICAgQm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbAotICAgICAgICA+IG1fdmFyaWFudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDUxYzI0MmFmMDZmOGMzM2M2NGQwNTZi
Y2NjOWEzZGQwZjkwZjc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRp
bnVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQ29udGludWUgZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDb250
aW51ZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpDb250aW51ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkNvbnRpbnVlKCkgPSBkZWZh
dWx0OwotCi0gICAgQ29udGludWUoY29uc3QgQ29udGludWUmKSA9IGRlbGV0ZTsKLSAgICBDb250
aW51ZShDb250aW51ZSYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShDb250aW51ZSkKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQ29udGludWUsIGlzQ29udGlu
dWUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHRE
ZWxldGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiMjUyNTlhMjlmNzc4MjE4
YjNhMzlkMjg3YWQwZjc4NjI2YWQ5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xEZWZhdWx0RGVsZXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KLQotI2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkg
XAotICAgIG5hbWVzcGFjZSBzdGQgeyBcCi0gICAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgICBz
dHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCi0gICAg
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gXAotICAgICAgICAgICAgdm9pZCBjYWxsRGVs
ZXRlKFQqIHQpIFwKLSAgICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIGRlbGV0ZSB0OyBc
Ci0gICAgICAgICAgICB9IFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBcCi0g
ICAgICAgICAgICB2b2lkIGNhbGxEZXN0cm95KFQqIHQpIFwKLSAgICAgICAgICAgIHsgXAotICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3koKnQpOyBcCi0g
ICAgICAgICAgICB9IFwKLSAgICAgICAgICAgIGNvbnN0ZXhwciB2b2lkIG9wZXJhdG9yKCkoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6dHlwZSogdmFsdWUpIFwKLSAgICAgICAgICAgIHsgXAotICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19maW5hbDxXZWJDb3JlOjpXSExTTDo6QVNU
Ojp0eXBlPjo6dmFsdWUpIFwKLSAgICAgICAgICAgICAgICAgICAgY2FsbERlbGV0ZSh2YWx1ZSk7
IFwKLSAgICAgICAgICAgICAgICBlbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgY2FsbERlc3Ry
b3kodmFsdWUpOyBcCi0gICAgICAgICAgICB9IFwKLSAgICAgICAgfTsgXAotICAgIH0gXAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5j
ZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjMWUxNjQzMWYz
MGJkZTk1ZDlkZTUxMTE2ZGI4YWE2N2I0Yjk0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBEZXJl
ZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKLSAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpEZXJlZmVyZW5jZSkKLSAgICAgICAg
LCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkRlcmVm
ZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIERlcmVmZXJlbmNlRXhwcmVzc2lv
bihjb25zdCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBEZXJlZmVyZW5j
ZUV4cHJlc3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4
cHJlc3Npb24mIHBvaW50ZXIoKSB7IHJldHVybiBtX3BvaW50ZXI7IH0KLQotcHJpdmF0ZToKLSAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wb2ludGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRGVyZWZlcmVuY2VFeHByZXNz
aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg3ZWJmZDllODRmMzI5ODMwNmQxNTA5NDRmYmZmZjc4YTU1OTNhY2IuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIERvV2hpbGVMb29wIGZpbmFs
IDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRG9XaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3Rh
dGVtZW50PiYmIGJvZHksIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6RG9XaGlsZUxvb3ApCi0gICAgICAgICwg
bV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNv
bmRpdGlvbmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkRvV2hpbGVMb29wKCkgPSBkZWZhdWx0
OwotCi0gICAgRG9XaGlsZUxvb3AoY29uc3QgRG9XaGlsZUxvb3AmKSA9IGRlbGV0ZTsKLSAgICBE
b1doaWxlTG9vcChEb1doaWxlTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1lbnQmIGJv
ZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsg
cmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8U3RhdGVt
ZW50PiBtX2JvZHk7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShEb1doaWxlTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
RG9XaGlsZUxvb3AsIGlzRG9XaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERvdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2RmYjQyMjMwNDVmZTAyZjk2YzkwYjhjNzU3ZTliM2I2NGJiNzU2Ni4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBEb3RFeHByZXNz
aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwg
U3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6RG90LCBXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1fZmllbGROYW1l
KFdURk1vdmUoZmllbGROYW1lKSkKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZGRp
bmcpOwotICAgIH0KLQotICAgIH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRG90
RXhwcmVzc2lvbihjb25zdCBEb3RFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgRG90RXhwcmVz
c2lvbihEb3RFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZyYgZmllbGROYW1l
KCkgeyByZXR1cm4gbV9maWVsZE5hbWU7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9maWVs
ZE5hbWU7Ci0gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IGZvciByZXBsYWNlV2l0aCBpbnRv
IGEgYmlnZ2VyIHR5cGUuCi0gICAgY2hhciBtX3BhZGRpbmdbMTJdOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRG90RXhwcmVzc2lv
bikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKERvdEV4cHJlc3Np
b24sIGlzRG90RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmJhMWRkNzg4MGU1Yzg2ZTU1ZTZlODdjZTUx
Yjk3ZGU5MDk5NzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVm
ZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Np
b24tPmNvZGVMb2NhdGlvbigpLCBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICAs
IG1fZWZmZWN0ZnVsRXhwcmVzc2lvbihXVEZNb3ZlKGVmZmVjdGZ1bEV4cHJlc3Npb24pKQotICAg
IHsKLSAgICB9Ci0KLSAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVs
dDsKLQotICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwotICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBF
eHByZXNzaW9uJiBlZmZlY3RmdWxFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9lZmZlY3RmdWxFeHBy
ZXNzaW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fZWZmZWN0
ZnVsRXhwcmVzc2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVG
SU5FX0RFRkFVTFRfREVMRVRFKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQsIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM3NDQ2ZGYxMGI3NTVkZDZjNjA1YjM5NjQ5ODM2MWYxNmVjNzdi
YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKLSAgICBWZXJ0ZXgsCi0g
ICAgRnJhZ21lbnQsCi0gICAgQ29tcHV0ZSwKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RyaW5nVmll
dyB0b1N0cmluZyhFbnRyeVBvaW50VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuICJ2ZXJ0ZXgi
OwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1cm4gImZy
YWdtZW50IjsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAgICByZXR1
cm4gImNvbXB1dGUiOwotICAgIH0KLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZjhkZTVhYzIzZjRhN2FiYzM0NWRjZThh
NTFjZWZiNjVmOWQ5NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVt
YmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRp
b25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAg
ICAgICA6IE5hbWVkVHlwZShLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIGxvY2F0aW9uLCBX
VEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRW51
bWVyYXRpb25EZWZpbml0aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRl
OwotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBk
ZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLQot
ICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQotICAgIHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51
bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0
LmlzTmV3RW50cnk7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIG1lbWJlckJ5TmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9t
ZW1iZXJzLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX21lbWJlcnMuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxFbnVtZXJhdGlvbk1lbWJlcj4+IGVudW1lcmF0aW9uTWVtYmVycygpCi0gICAgewotICAgICAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxFbnVtZXJhdGlvbk1lbWJlcj4+IHJlc3Vs
dDsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9tZW1iZXJzKQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgqcGFpci52YWx1ZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBtX21lbWJlcnM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShF
bnVtZXJhdGlvbkRlZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQ
RShFbnVtZXJhdGlvbkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1i
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI4ODhmMzVhOWUwYzlmOGQ0ZDE3
YzE5MjU0YjRjNjlmYzY2NGI0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbk1lbWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVt
ZXJhdGlvbk1lbWJlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgRW51bWVyYXRpb25NZW1iZXIoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
LCBpbnQ2NF90IHZhbHVlKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAg
ICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZhdWx0
OwotCi0gICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9IGRl
bGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgU3RyaW5nIG5hbWUoKSB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBpbnQ2NF90IHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotCi1wcml2YXRlOgot
ICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAg
IGludDY0X3QgbV92YWx1ZTsKLX07Ci0KLXVzaW5nIEVudW1lcmF0aW9uTWVtYmVycyA9IFZlY3Rv
cjxFbnVtZXJhdGlvbk1lbWJlcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MzRl
OTc3YWNjZTkwYWYwZjIxOThmMTg1ZjFmOTkyMmUxNjA0NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlvbk1l
bWJlcjsKLQotY2xhc3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxl
ZnQsIFN0cmluZyYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0
KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgZXhwbGljaXQg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYp
ID0gZGVsZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBv
cGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiYpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwg
d3JhcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0
LCBFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRp
b25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQotICAgIHsKLSAgICAgICAgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsIHJlc3VsdChsb2NhdGlvbiwgV1RGTW92ZShsZWZ0KSwgV1RGTW92ZShyaWdo
dCkpOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRp
b25EZWZpbml0aW9uOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVt
ZXJhdGlvbk1lbWJlcjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBjb25z
dCBTdHJpbmcmIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBjb25zdCBTdHJp
bmcmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQotCi0gICAgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvZGVMb2NhdGlvbigpLCBTdHJpbmcobV9sZWZ0KSwg
U3RyaW5nKG1fcmlnaHQpKTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25NZW1iZXIgPSBt
X2VudW1lcmF0aW9uTWVtYmVyOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25E
ZWZpbml0aW9uOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogZW51bWVyYXRp
b25EZWZpbml0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9u
RGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25N
ZW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAg
fQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQotICAgIHZv
aWQgc2V0RW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7
Ci0gICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVmaW5pdGlv
bjsKLSAgICAgICAgbV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJlcjsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbGVmdDsKLSAgICBTdHJpbmcgbV9yaWdodDsK
LSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIG1fZW51bWVyYXRpb25EZWZpbml0aW9uIHsgbnVs
bHB0ciB9OwotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBtX2VudW1lcmF0aW9uTWVtYmVyIHsgbnVs
bHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCBpc0VudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFeHByZXNzaW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFl
OGRjMzZhODk0YjM5OWU3ZjNjYTYzMGI2NmE4ZjI0MTYwYjQ5Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xBU1QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotdm9pZCBFeHByZXNzaW9uOjpkZXN0cm95KEV4cHJlc3Npb24m
IGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
cHJlc3Npb246OktpbmQ6OkNvbW1hOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PENvbW1hRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RGVyZWZlcmVu
Y2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHBy
ZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Rmxv
YXRMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxJbnRl
Z2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dpY2FsRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dpY2FsTm90
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0
PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBkZWxldGUg
JmRvd25jYXN0PERvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNz
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5
OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi12b2lkIEV4cHJlc3Npb246OmRlc3RydWN0KEV4cHJlc3Npb24m
IGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZG93bmNhc3Q8QXNzaWdu
bWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Bc3NpZ25tZW50RXhwcmVzc2lvbigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgot
ICAgICAgICBkb3duY2FzdDxCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikufkJvb2xlYW5MaXRl
cmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoK
LSAgICAgICAgZG93bmNhc3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5DYWxsRXhwcmVz
c2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNvbW1h
OgotICAgICAgICBkb3duY2FzdDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Db21tYUV4
cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpE
ZXJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHBy
ZXNzaW9uKS5+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxGbG9h
dExpdGVyYWw+KGV4cHJlc3Npb24pLn5GbG9hdExpdGVyYWwoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNh
c3Q8SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pLn5JbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGRv
d25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TG9naWNhbEV4cHJlc3Npb24o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90
OgotICAgICAgICBkb3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxv
Z2ljYWxOb3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQ
b2ludGVyOgotICAgICAgICBkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Np
b24pLn5NYWtlUG9pbnRlckV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAgICAgIGRvd25jYXN0PERvdEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pLn5Eb3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0
PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRl
eDoKLSAgICAgICAgZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5+SW5kZXhF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
UmVhZE1vZGlmeVdyaXRlOgotICAgICAgICBkb3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uPihleHByZXNzaW9uKS5+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6Ci0gICAgICAgIGRvd25j
YXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKS5+VGVybmFyeUV4cHJlc3Npb24oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHBy
ZXNzaW9uKS5+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAgICAg
ZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKS5+RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PFZhcmlhYmxlUmVmZXJl
bmNlPihleHByZXNzaW9uKS5+VmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCi1ib29sIEV4cHJlc3Npb246Om1heUJlRWZmZWN0ZnVsKCkgY29uc3QKLXsKLSAg
ICBhdXRvJiBleHByZXNzaW9uID0gY29uc3RfY2FzdDxFeHByZXNzaW9uJj4oKnRoaXMpOwotCi0g
ICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVy
YWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgY2FzZSBFeHBy
ZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5wb2ludGVyKCkubWF5QmVFZmZl
Y3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0KCkubWF5
QmVFZmZlY3RmdWwoKSB8fCBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
cmlnaHQoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpM
b2dpY2FsTm90OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pLm9wZXJhbmQoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHBy
ZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2Fz
dDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0VmFsdWUoKS5t
YXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRl
cjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikubGVmdFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6RG90OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikuYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkluZGV4OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihl
eHByZXNzaW9uKS5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSB8fCBkb3duY2FzdDxJbmRleEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLmluZGV4RXhwcmVzc2lvbigpLm1heUJlRWZmZWN0ZnVsKCk7Ci0K
LSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM2YTA0NzM0MmM1
MzRmZWQzNzY3ZGYwZjFkNzUzZWVmNDc2OGFjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgIldITFNMVW5u
YW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAgICB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
LQotcHVibGljOgotCi0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0gICAgICAgIEFz
c2lnbm1lbnQsCi0gICAgICAgIEJvb2xlYW5MaXRlcmFsLAotICAgICAgICBDYWxsLAotICAgICAg
ICBDb21tYSwKLSAgICAgICAgRGVyZWZlcmVuY2UsCi0gICAgICAgIERvdCwKLSAgICAgICAgR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgSW5k
ZXgsCi0gICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBMb2dpY2FsLAotICAgICAgICBM
b2dpY2FsTm90LAotICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCi0gICAgICAgIE1ha2VQb2lu
dGVyLAotICAgICAgICBSZWFkTW9kaWZ5V3JpdGUsCi0gICAgICAgIFRlcm5hcnksCi0gICAgICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIFZhcmlhYmxlUmVmZXJlbmNlLAotICAg
ICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIEV4cHJlc3Npb24o
Q29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IG1fY29kZUxv
Y2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICB7Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgZGVzdHJveShFeHByZXNzaW9uJik7Ci0gICAgc3RhdGljIHZv
aWQgZGVzdHJ1Y3QoRXhwcmVzc2lvbiYpOwotCi0gICAgRXhwcmVzc2lvbihjb25zdCBFeHByZXNz
aW9uJikgPSBkZWxldGU7Ci0gICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsK
LQotICAgIEV4cHJlc3Npb24mIG9wZXJhdG9yPShjb25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7
Ci0gICAgRXhwcmVzc2lvbiYgb3BlcmF0b3I9KEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgVW5uYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV90eXBlID8gJipt
X3R5cGUgOiBudWxscHRyOyB9Ci0KLSAgICBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUpOwotICAgICAgICByZXR1cm4gKm1fdHlwZTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5cGUpOwot
ICAgIH0KLQotICAgIGNvbnN0IFR5cGVBbm5vdGF0aW9uKiBtYXliZVR5cGVBbm5vdGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlQW5ub3RhdGlvbiA/ICYqbV90eXBlQW5ub3RhdGlvbiA6IG51
bGxwdHI7IH0KLQotICAgIGNvbnN0IFR5cGVBbm5vdGF0aW9uJiB0eXBlQW5ub3RhdGlvbigpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIHJl
dHVybiAqbV90eXBlQW5ub3RhdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFR5cGVBbm5vdGF0
aW9uKFR5cGVBbm5vdGF0aW9uJiYgdHlwZUFubm90YXRpb24pCi0gICAgewotICAgICAgICBBU1NF
UlQoIW1fdHlwZUFubm90YXRpb24pOwotICAgICAgICBtX3R5cGVBbm5vdGF0aW9uID0gV1RGTW92
ZSh0eXBlQW5ub3RhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZVRvKEV4cHJlc3Np
b24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9
IGNvbnN0X2Nhc3Q8RXhwcmVzc2lvbio+KHRoaXMpLT5tYXliZVJlc29sdmVkVHlwZSgpKQotICAg
ICAgICAgICAgb3RoZXIuc2V0VHlwZSgqcmVzb2x2ZWRUeXBlKTsKLSAgICB9Ci0KLSAgICBib29s
IG1heUJlRWZmZWN0ZnVsKCkgY29uc3Q7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCAgeyByZXR1
cm4gbV9raW5kOyB9Ci0gICAgYm9vbCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkFzc2lnbm1lbnQ7IH0KLSAgICBib29sIGlzQm9vbGVhbkxp
dGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Qm9vbGVhbkxpdGVyYWw7IH0K
LSAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6Q2FsbDsgfQotICAgIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6Q29tbWE7IH0KLSAgICBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRlcmVmZXJlbmNlOyB9Ci0gICAgYm9v
bCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RG90OyB9
Ci0gICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc0Zsb2F0
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGbG9hdExpdGVyYWw7IH0K
LSAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkluZGV4OyB9Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0xvZ2ljYWxFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWw7IH0KLSAgICBi
b29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6TG9naWNhbE5vdDsgfQotICAgIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZTsgfQot
ICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6TWFrZVBvaW50ZXI7IH0KLSAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gaXNEb3RFeHByZXNzaW9uKCkgfHwgaXNJbmRleEV4cHJlc3Np
b24oKTsgfQotICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OlJlYWRNb2RpZnlXcml0ZTsgfQotICAgIGJvb2wgaXNUZXJu
YXJ5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUZXJuYXJ5OyB9
Ci0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wgaXNWYXJpYWJs
ZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZVJlZmVy
ZW5jZTsgfQotICAgIGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOyB9Ci0KLSAgICBD
b2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247
IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsg
bV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlv
biBtX2NvZGVMb2NhdGlvbjsKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBz
dGQ6Om9wdGlvbmFsPFR5cGVBbm5vdGF0aW9uPiBtX3R5cGVBbm5vdGF0aW9uOwotICAgIEtpbmQg
bV9raW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoRXhwcmVzc2lvbikKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1l
KSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24pIHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRlOyB9IFwK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZGU0NGZjNTUwZTliYjM2ZDcyOTFhZGNkMjJhZjk1YmY4Yzg3NGZlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRmFsbHRocm91Z2ggZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGYWxsdGhyb3VnaChDb2RlTG9jYXRpb24gbG9j
YXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpGYWxsdGhyb3VnaCkK
LSAgICB7Ci0gICAgfQotCi0gICAgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OwotCi0gICAgRmFs
bHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKLSAgICBGYWxsdGhyb3VnaChG
YWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGYWxsdGhyb3VnaCkKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRmFsbHRocm91Z2gsIGlzRmFs
bHRocm91Z2goKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0
ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MWY5ZDRiMDlkNzhi
ZDMxOTM0Yzg5MzJlMGFkOGNlOTEwZjFlNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5
cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGbG9hdExp
dGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmxvYXRMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
ZmxvYXQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RmxvYXRM
aXRlcmFsKQotICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVs
dDsKLQotICAgIEZsb2F0TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0ZTsKLSAg
ICBGbG9hdExpdGVyYWwoRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0
ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEZsb2F0
TGl0ZXJhbCYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9h
dExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgZmxvYXQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBj
b25zdAotICAgIHsKLSAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwg
bV92YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAg
ICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQot
ICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVk
VHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdExpdGVyYWxU
eXBlIG1fdHlwZTsKLSAgICBmbG9hdCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0
TGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcz
MDhjMDBlNzVmMDRkMmE3ODNiODkxOTY5OTY1NTQzM2Q1YjgwOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1G
bG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
ZmxvYXQgdmFsdWUpCi0gICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpGbG9hdExpdGVyYWwpCi0g
ICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6
OmNyZWF0ZShsb2NhdGlvbiwgImZsb2F0Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0K
LWJvb2wgRmxvYXRMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25z
dAotewotICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAg
aWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFy
YXRpb24uaXNGbG9hdGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRp
dmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50RmxvYXQoKShtX3ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBGbG9hdExpdGVy
YWxUeXBlOjpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNv
bnN0Ci17Ci0gICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1GbG9hdExpdGVyYWxUeXBlIEZs
b2F0TGl0ZXJhbFR5cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBGbG9hdExpdGVyYWxUeXBlIHJl
c3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICBpZiAo
YXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIHJlc3VsdC5yZXNvbHZl
KGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7Ci0gICAgcmVzdWx0Lm1fcHJl
ZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNGUwODU5YjdjMDhmNTYyMmRhNGIwZTRlYTc0MjFiNzM3
NWY1ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNv
bHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBUeXBlUmVmZXJlbmNlOwotCi1jbGFzcyBGbG9hdExpdGVyYWxUeXBlIGZpbmFsIDogcHVi
bGljIFJlc29sdmFibGVUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBGbG9hdExpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgZmxvYXQgdmFsdWUpOwotCi0g
ICAgfkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWxUeXBl
KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBl
KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFsVHlwZSYg
b3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExp
dGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5cGVSZWZl
cmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KLQotICAg
IGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgY29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIEZsb2F0TGl0ZXJhbFR5
cGUgY2xvbmUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIC8v
IFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJl
dHdlZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJl
ZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAgIFJlZjxU
eXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGbG9hdExpdGVyYWxUeXBlKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoRmxvYXRMaXRlcmFsVHlwZSwgaXNGbG9h
dExpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JM
b29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JM
b29wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YTU3NDBmODc1ZmZkZDc5ZWRh
ZTcyYWY4MzU4NGE4ODYyOGZlM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Rm9yTG9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJX
SExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBGb3JMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRm9yTG9vcChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYg
aW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uLCBLaW5kOjpGb3JMb29wKQotICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24o
V1RGTW92ZShpbml0aWFsaXphdGlvbikpCi0gICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShj
b25kaXRpb24pKQotICAgICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKLSAg
ICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZvckxv
b3AoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGb3JMb29wKGNvbnN0IEZvckxvb3AmKSA9IGRlbGV0ZTsK
LSAgICBGb3JMb29wKEZvckxvb3AmJikgPSBkZWZhdWx0OwotCi0gICAgVW5pcXVlUmVmPFN0YXRl
bWVudD4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQotICAg
IEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uLmdldCgpOyB9Ci0g
ICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQuZ2V0KCk7IH0K
LSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0ZToKLSAg
ICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2luaXRpYWxpemF0aW9uOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4gbV9pbmNyZW1lbnQ7Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
Rm9yTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRm9yTG9v
cCwgaXNGb3JMb29wKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5j
dGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGJjNWI2NzRmMzRmOTE1NGIwY2FlMmVhNDI2NWE2MjJjYTczMjljZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotdXNpbmcgRnVuY3Rpb25BdHRyaWJ1dGUgPSBWYXJpYW50PE51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZT47Ci11c2luZyBBdHRyaWJ1dGVCbG9jayA9IFZlY3RvcjxGdW5jdGlvbkF0
dHJpYnV0ZT47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViMjRkMmUyOGY2MWNmYjVhZGM5NDJlMjY4
OGUzNGE3MjM3MjljNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMTmFt
ZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzaW5nTW9kZS5oIgotI2luY2x1ZGUgIldITFNM
U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBzdGQ6Om9wdGlvbmFs
PEVudHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlLCBT
dHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9yLCBQYXJzaW5nTW9k
ZSBwYXJzaW5nTW9kZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICAg
ICAgLCBtX2F0dHJpYnV0ZUJsb2NrKFdURk1vdmUoYXR0cmlidXRlQmxvY2spKQotICAgICAgICAs
IG1fZW50cnlQb2ludFR5cGUoZW50cnlQb2ludFR5cGUpCi0gICAgICAgICwgbV9pc09wZXJhdG9y
KGlzT3BlcmF0b3IpCi0gICAgICAgICwgbV9wYXJzaW5nTW9kZShwYXJzaW5nTW9kZSkKLSAgICAg
ICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKLSAgICAgICAg
LCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIH5GdW5jdGlvbkRlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRnVuY3Rpb25EZWNs
YXJhdGlvbihjb25zdCBGdW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAgRnVuY3Rp
b25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIHZp
cnR1YWwgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2soKSB7
IHJldHVybiBtX2F0dHJpYnV0ZUJsb2NrOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRy
eVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeVBvaW50
VHlwZTsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBj
b25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBTdHJpbmcm
IG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBib29sIGlzQ2FzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZSA9PSAib3BlcmF0b3IgY2FzdCI7IH0KLSAgICBjb25zdCBWYXJpYWJsZURlY2xh
cmF0aW9ucyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQotICAg
IFZhcmlhYmxlRGVjbGFyYXRpb25zJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
OyB9Ci0gICAgU2VtYW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5nZXQoKTsg
fQotICAgIGJvb2wgaXNPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGVyYXRvcjsgfQot
ICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlTG9jYXRpb247IH0KLQotICAgIFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJzaW5nTW9kZTsgfQotCi0gICAgTmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXROYW1lU3BhY2UoTmFtZVNwYWNl
IG5hbWVTcGFjZSkgeyBtX25hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRlOgotICAg
IENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJp
YnV0ZUJsb2NrOwotICAgIHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQb2lu
dFR5cGU7Ci0gICAgYm9vbCBtX2lzT3BlcmF0b3I7Ci0gICAgUGFyc2luZ01vZGUgbV9wYXJzaW5n
TW9kZTsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zIG1fcGFyYW1ldGVyczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2VtYW50aWM+IG1fc2VtYW50aWM7Ci0gICAgTmFtZVNwYWNlIG1fbmFtZVNwYWNlIHsgTmFt
ZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RF
Q0xBUkFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
dW5jdGlvbkRlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDI0OGZiNWE3YTQ1NGVlNTI5NzI3YmJmMjdkYTgxOTJhZDc1ZGUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRlY2xh
cmF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGdW5j
dGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24s
IEJsb2NrJiYgYmxvY2spCi0gICAgICAgIDogRnVuY3Rpb25EZWNsYXJhdGlvbihXVEZNb3ZlKGZ1
bmN0aW9uRGVjbGFyYXRpb24pKQotICAgICAgICAsIG1fYmxvY2soV1RGTW92ZShibG9jaykpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKLQotICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSA9
IGRlbGV0ZTsKLSAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWZpbml0aW9uJiYpID0g
ZGVmYXVsdDsKLQotICAgIGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2Nr
OyB9Ci0KLXByaXZhdGU6Ci0gICAgQmxvY2sgbV9ibG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9GVU5DVElPTl9E
RUNMQVJBVElPTihGdW5jdGlvbkRlZmluaXRpb24sIGlzRnVuY3Rpb25EZWZpbml0aW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJlMWZi
NjA4NmQ5ZjBiNmUyNjFhM2YxZTMzYWU3MmExYWU0Y2E2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Np
b24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgYmFzZSwgU3RydWN0dXJlRWxlbWVudCogc3RydWN0RmllbGQpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi0gICAgICAg
ICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCi0gICAgICAgICwgbV9zdHJ1Y3RGaWVsZCgqc3RydWN0
RmllbGQpCi0gICAgewotICAgICAgICBBU1NFUlQoc3RydWN0RmllbGQpOwotICAgIH0KLQotICAg
IH5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBTdHJ1Y3R1
cmVFbGVtZW50JiBzdHJ1Y3RGaWVsZCgpIHsgcmV0dXJuIG1fc3RydWN0RmllbGQ7IH0KLQotICAg
IEV4cHJlc3Npb24mIGJhc2UoKSB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotICAgIFN0cnVjdHVyZUVsZW1lbnQm
IG1fc3RydWN0RmllbGQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLCBp
c0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTlkNmRhM2NkMTYwMWE4YjlhMTVkM2FhYjE1ZmJmOWJmY2M4MmQwMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIElmU3RhdGVtZW50
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgSWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5
LCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6SWYpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3Zl
KGNvbmRpdGlvbmFsKSkKLSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICAgICAg
LCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+SWZT
dGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVu
dCYpID0gZGVsZXRlOwotICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
LQotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsg
fQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotICAgIFN0YXRlbWVu
dCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci0gICAgVW5pcXVlUmVmPFN0
YXRlbWVudD4gbV9ib2R5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fZWxzZUJv
ZHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShJZlN0YXRlbWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoSWZTdGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUxNzQxNWUzMWI0MzlmMTA3OWUxODRhZGE3ZTJiNzA0MTFmYzM1Yzku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIEluZGV4RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEluZGV4
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYm
IGJhc2UsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGluZGV4KQotICAgICAgICA6IFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6SW5kZXgsIFdURk1vdmUoYmFzZSkpCi0g
ICAgICAgICwgbV9pbmRleChXVEZNb3ZlKGluZGV4KSkKLSAgICB7Ci0jaWYgQ1BVKEFERFJFU1Mz
MikKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1fcGFkZGluZyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAg
ICB+SW5kZXhFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgSW5kZXhFeHByZXNzaW9uKGNv
bnN0IEluZGV4RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEluZGV4RXhwcmVzc2lvbihJbmRl
eEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgaW5kZXhFeHByZXNz
aW9uKCkgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgaW5k
ZXhSZWZlcmVuY2UoKSB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Np
b24+IHRha2VJbmRleCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbmRleCk7IH0KLQotcHJpdmF0ZToK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9pbmRleDsKLSNpZiBDUFUoQUREUkVTUzMyKQot
ICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBmb3IgcmVwbGFjZVdpdGggaW50byBhIGJpZ2dl
ciB0eXBlLgotICAgIGNoYXIgbV9wYWRkaW5nWzRdOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbmRleEV4cHJlc3Np
b24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbmRleEV4cHJl
c3Npb24sIGlzSW5kZXhFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVhNzI3YThmOWI4MGE5OTkyMjdkYWU0MTFlMWUzODhjMGE3MjcxM2EuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1pbnQ2NF90IEludGVnZXJMaXRlcmFs
Ojp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Ci17Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5j
ZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmZvcm1hdFZhbHVlRnJvbUludGVnZXIoKShtX3ZhbHVlKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY3MDlmZWRkZDEzZGVhNTE0ODU5OGYyOWEwNTcwNGI5OTJiZjJkZWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW50ZWdlckxpdGVy
YWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgICAgICwgbV90eXBlKGxvY2F0
aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbChjb25z
dCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFsKEludGVnZXJM
aXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29u
c3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0
b3I9KEludGVnZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlw
ZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KLQotICAgIEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEludGVnZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7
Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAg
ICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpy
ZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOwotICAgIGlu
dCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoSW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihJbnRlZ2VyTGl0ZXJhbCwgaXNJbnRlZ2VyTGl0ZXJhbCgpKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNjY3NTBiNjQzZWI2
NjIwNmEzN2UyOTkwMWE0NjdjMmJiZGU3ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotSW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgOiBSZXNvbHZhYmxl
VHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBt
X3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50Il9zdHIs
IFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0KLWJvb2wgSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5S
ZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+
KHR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93
bmNhc3Q8TmFtZWRUeXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4obmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBl
KTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50
SW50ZWdlcigpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXVuc2lnbmVkIEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29u
c3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVu
bmFtZWRUeXBlLCBtX3ByZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gMTsKLX0KLQotSW50ZWdlckxpdGVyYWxUeXBlIEludGVnZXJMaXRlcmFsVHlwZTo6Y2xvbmUo
KSBjb25zdAotewotICAgIEludGVnZXJMaXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBl
LT5jb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJl
c29sdmVkVHlwZSgpKQotICAgICAgICByZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5u
YW1lZFR5cGUmPigqdHlwZSkpOwotICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZl
cnJlZFR5cGUuY29weVJlZigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElu
dGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc0YWVkZjQ3NmIzMmI3ZmJmNzllOGMwZDdkYzQ3YzgzMTkxYjYwYWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZlcmVu
Y2U7Ci0KLWNsYXNzIEludGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxl
VHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW50ZWdl
ckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgaW50IHZhbHVlKTsKLQotICAgIH5JbnRlZ2VyTGl0
ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgSW50
ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlKEludGVn
ZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9w
ZXJhdG9yPShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2Vy
TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0Owot
Ci0gICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVHlwZVJl
ZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQotCi0g
ICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252
ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgSW50ZWdlckxpdGVy
YWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7Ci0gICAg
Ly8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kg
YmV0d2VlbgotICAgIC8vIENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBl
UmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0gICAgUmVm
PFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFsVHlwZSkK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEludGVnZXJMaXRlcmFsVHlwZSwg
aXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYzFlOTMxMTBmZTJiNTJiZThjNmNhMWYxYzQ2OTRiNDQ3Nzc4MGFmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBU
eXBlIDogdWludDhfdCB7Ci0gICAgICAgIEFuZCwKLSAgICAgICAgT3IKLSAgICB9OwotCi0gICAg
TG9naWNhbEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBUeXBlIHR5cGUsIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCi0gICAgICAgICwg
bV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCi0gICAgICAgICwg
bV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkxvZ2ljYWxFeHBy
ZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNh
bEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KLQotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KLSAg
ICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLQotcHJpdmF0ZToKLSAg
ICBUeXBlIG1fdHlwZTsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OwotICAgIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTG9naWNhbEV4cHJlc3Npb24pCi0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwg
aXNMb2dpY2FsRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUzZWRjMzYzNTJiZWFiMDQ4YTM4ZTk4ZTczZGM1NjkxNzViZmM2YWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAor
KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBM
b2dpY2FsTm90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIG9wZXJhbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
TG9naWNhbE5vdCkKLSAgICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAg
TG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKLSAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3BlcmFuZDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKExv
Z2ljYWxOb3RFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oTG9naWNhbE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2M1ZDY0Y2I5NTczMTYwMjA5NTcxN2IyYmFmYzY0YmU3ZTM2MDkyNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NFc2Nh
cGVNb2RlLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAg
ICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TWFrZUFycmF5UmVmZXJlbmNlKQotICAg
ICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX2FkZHJl
c3NFc2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpID0g
ZGVsZXRlOwotICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUo
KSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotCi0gICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2Fw
ZXM7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7
Ci0gICAgQWRkcmVzc0VzY2FwZU1vZGUgbV9hZGRyZXNzRXNjYXBlTW9kZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKE1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFhMjdjMjFjNTA1YTAzNjgzY2JlOTU2MDQ2MjMyOTUxZWIxMTJmZmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NFc2NhcGVN
b2RlLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE1ha2VQ
b2ludGVyRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFk
ZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1v
dmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2Nh
cGVNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OwotCi0gICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2ludGVyRXhw
cmVzc2lvbiYpID0gZGVsZXRlOwotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtlUG9pbnRl
ckV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkg
eyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLQotICAgIGJvb2wgbWlnaHRFc2NhcGUoKSBjb25zdCB7
IHJldHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVz
OyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdFZhbHVlOwot
ICAgIEFkZHJlc3NFc2NhcGVNb2RlIG1fYWRkcmVzc0VzY2FwZU1vZGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShNYWtlUG9pbnRl
ckV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihN
YWtlUG9pbnRlckV4cHJlc3Npb24sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjOTQ2ZmRmYTJkMjVkM2E4N2Y1MmFlZDI4MWJlZTYwZDEyOWQ0M2Iw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi0vLyBEaWZmZXJlbnQgc2hhZGVyIG1vZHVs
ZXMgb3BlcmF0ZSBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KLS8vIFRoaXMgbWVhbnMgaXQncyBw
b3NzaWJsZSB0byBoYXZlIHR3byBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBzaWduYXR1cmVzLCBh
cyBsb25nIGFzIHRoZXkgYXJlIGluIGRpZmZlcmVudCBtb2R1bGVzLgotZW51bSBjbGFzcyBOYW1l
U3BhY2UgOiB1aW50OF90IHsKLSAgICBTdGFuZGFyZExpYnJhcnkgPSAwLAotICAgIE5hbWVTcGFj
ZTEgPSAxLAotICAgIE5hbWVTcGFjZTIgPSAyCi19OwotCi1jb25zdGV4cHIgdW5zaWduZWQgbmFt
ZVNwYWNlQ291bnQgPSAzOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTmFtZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmIxMWY4YmEzMDY2ODg5NDZjYjdmMmYxOTdiNTk2YjVjYjM5NmMyNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xO
YW1lU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBO
YW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0K
LXByb3RlY3RlZDoKLSAgICB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAg
TmFtZWRUeXBlKEtpbmQga2luZCwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
KQotICAgICAgICA6IFR5cGUoa2luZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlv
bikKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
TmFtZWRUeXBlKGNvbnN0IE5hbWVkVHlwZSYpID0gZGVsZXRlOwotICAgIE5hbWVkVHlwZShOYW1l
ZFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRp
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0K
LQotICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgTmFtZVNwYWNl
IG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXRO
YW1lU3BhY2UoTmFtZVNwYWNlIG5hbWVTcGFjZSkgeyBtX25hbWVTcGFjZSA9IG5hbWVTcGFjZTsg
fQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9k
ZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlv
bjsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE5hbWVTcGFjZSBtX25hbWVTcGFjZSB7IE5hbWVT
cGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShOYW1lZFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfVFlQRShOYW1lZFR5cGUsIGlzTmFtZWRUeXBlKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZDlhYWY1YmRl
MmNhN2E4ZTM5YzU1Y2M1ODQ4MGIzY2E0MjhiN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0
aW9uRGVjbGFyYXRpb24mJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICA6IEZ1bmN0aW9u
RGVjbGFyYXRpb24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQot
ICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiYpID0gZGVsZXRlOwotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotcHJpdmF0
ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLCBpc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NGExNjJiNzgxN2Q0NzNhODJkZDk3OTNhMGJl
OTEyMzBhMzRlZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNl
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uIGZpbmFsIDogcHVi
bGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYg
bmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBl
KEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0g
ICAgICAgICwgbV90eXBlQXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0gICAgewot
ICAgIH0KLQotICAgIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBO
YXRpdmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxl
dGU7Ci0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4g
bV90eXBlQXJndW1lbnRzOyB9Ci0KLSAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4gbV9p
c0ludDsgfQotICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2lzTnVtYmVyOyB9
Ci0gICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zsb2F0aW5nOyB9Ci0g
ICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdG9taWM7IH0KLSAgICBib29s
IGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZlY3RvcjsgfQotICAgIGJvb2wgaXNNYXRy
aXgoKSBjb25zdCB7IHJldHVybiBtX2lzTWF0cml4OyB9Ci0gICAgYm9vbCBpc09wYXF1ZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2lzT3BhcXVlVHlwZTsgfQotICAgIGJvb2wgaXNUZXh0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1RleHR1cmU7IH0KLSAgICBib29sIGlzVGV4dHVyZUFycmF5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1RleHR1cmVBcnJheTsgfQotICAgIGJvb2wgaXNEZXB0aFRleHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVwdGhUZXh0dXJlOyB9Ci0gICAgYm9vbCBpc1dyaXRh
YmxlVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNXcml0YWJsZVRleHR1cmU7IH0KLSAgICBi
b29sIGlzQ3ViZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ3ViZVRleHR1cmU7IH0KLSAg
ICB1aW50IHRleHR1cmVEaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVEaW1lbnNp
b247IH0KLSAgICBib29sIGlzU2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpZ25lZDsgfQot
ICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiYgY2FuUmVwcmVzZW50SW50ZWdlcigp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuUmVwcmVzZW50SW50ZWdlcjsgfQotICAgIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiBjYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoKSBj
b25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcjsgfQotICAgIGNvbnN0
IHN0ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+JiBjYW5SZXByZXNlbnRGbG9hdCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuUmVwcmVzZW50RmxvYXQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGlu
dDY0X3QoaW50NjRfdCk+JiBzdWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3Nvcjsg
fQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYgZm9ybWF0VmFsdWVGcm9t
SW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlcjsgfQotICAg
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiBmb3JtYXRWYWx1ZUZyb21V
bnNpZ25lZEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZhbHVlRnJvbVVuc2lnbmVk
SW50ZWdlcjsgfQotICAgIHZvaWQgaXRlcmF0ZUFsbFZhbHVlcyhjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woaW50NjRfdCk+JiBjYWxsYmFjaykgeyBtX2l0ZXJhdGVBbGxWYWx1ZXMoY2FsbGJhY2sp
OyB9Ci1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1hdHJpeERpbWVuc2lvbih1bnNpZ25lZCB0eXBl
QXJndW1lbnRJbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01hdHJpeCgpKTsKLSAgICAg
ICAgQVNTRVJUKHR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIHJldHVybiBX
VEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4odHlwZUFyZ3VtZW50cygpW3R5cGVBcmd1
bWVudEluZGV4XSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLXB1YmxpYzoKLSAg
ICB1bnNpZ25lZCBudW1iZXJPZk1hdHJpeFJvd3MoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1h
dHJpeERpbWVuc2lvbigyKTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRyaXhDb2x1
bW5zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMSk7Ci0gICAgfQot
Ci0gICAgVHlwZVJlZmVyZW5jZSYgdmVjdG9yVHlwZUFyZ3VtZW50KCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChpc1ZlY3RvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+Pih0eXBlQXJndW1lbnRzKClbMF0pOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHZlY3RvclNpemUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmVjdG9yKCkpOwotICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5cGVBcmd1bWVudHMo
KVsxXSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLQotICAgIFR5cGVSZWZlcmVu
Y2UmIG1hdHJpeFR5cGVBcmd1bWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRyaXgo
KSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4odHlw
ZUFyZ3VtZW50cygpWzBdKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldElzSW50KCkgeyBtX2lzSW50
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNOdW1iZXIoKSB7IG1faXNOdW1iZXIgPSB0cnVlOyB9
Ci0gICAgdm9pZCBzZXRJc0Zsb2F0aW5nKCkgeyBtX2lzRmxvYXRpbmcgPSB0cnVlOyB9Ci0gICAg
dm9pZCBzZXRJc0F0b21pYygpIHsgbV9pc0F0b21pYyA9IHRydWU7IH0KLSAgICB2b2lkIHNldElz
VmVjdG9yKCkgeyBtX2lzVmVjdG9yID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNNYXRyaXgoKSB7
IG1faXNNYXRyaXggPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc09wYXF1ZVR5cGUoKSB7IG1faXNP
cGFxdWVUeXBlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNUZXh0dXJlKCkgeyBtX2lzVGV4dHVy
ZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzVGV4dHVyZUFycmF5KCkgeyBtX2lzVGV4dHVyZUFy
cmF5ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNEZXB0aFRleHR1cmUoKSB7IG1faXNEZXB0aFRl
eHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1dyaXRhYmxlVGV4dHVyZSgpIHsgbV9pc1dy
aXRhYmxlVGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ3ViZVRleHR1cmUoKSB7IG1f
aXNDdWJlVGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldFRleHR1cmVEaW1lbnNpb24odWlu
dCB0ZXh0dXJlRGltZW5zaW9uKSB7IG1fdGV4dHVyZURpbWVuc2lvbiA9IHRleHR1cmVEaW1lbnNp
b247IH0KLSAgICB2b2lkIHNldElzU2lnbmVkKCkgeyBtX2lzU2lnbmVkID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0Q2FuUmVwcmVzZW50SW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4mJiBj
YW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNl
bnQpOyB9Ci0gICAgdm9pZCBzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoc3RkOjpmdW5j
dGlvbjxib29sKHVuc2lnbmVkKT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRVbnNp
Z25lZEludGVnZXIgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lkIHNldENhblJl
cHJlc2VudEZsb2F0KHN0ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+JiYgY2FuUmVwcmVzZW50KSB7
IG1fY2FuUmVwcmVzZW50RmxvYXQgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lk
IHNldFN1Y2Nlc3NvcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRfdCk+JiYgc3VjY2Vzc29y
KSB7IG1fc3VjY2Vzc29yID0gV1RGTW92ZShzdWNjZXNzb3IpOyB9Ci0gICAgdm9pZCBzZXRGb3Jt
YXRWYWx1ZUZyb21JbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYmIGZvcm1hdFZh
bHVlKSB7IG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlciA9IFdURk1vdmUoZm9ybWF0VmFsdWUpOyB9
Ci0gICAgdm9pZCBzZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoc3RkOjpmdW5jdGlv
bjxpbnQ2NF90KHVuc2lnbmVkKT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbVVu
c2lnbmVkSW50ZWdlciA9IFdURk1vdmUoZm9ybWF0VmFsdWUpOyB9Ci0gICAgdm9pZCBzZXRJdGVy
YXRlQWxsVmFsdWVzKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wo
aW50NjRfdCk+Jik+JiYgaXRlcmF0ZUFsbFZhbHVlcykgeyBtX2l0ZXJhdGVBbGxWYWx1ZXMgPSBX
VEZNb3ZlKGl0ZXJhdGVBbGxWYWx1ZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZUFyZ3VtZW50
cyBtX3R5cGVBcmd1bWVudHM7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKGludCk+IG1fY2FuUmVw
cmVzZW50SW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiBtX2NhblJl
cHJlc2VudFVuc2lnbmVkSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiBt
X2NhblJlcHJlc2VudEZsb2F0OwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4g
bV9zdWNjZXNzb3I7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+IG1fZm9ybWF0VmFs
dWVGcm9tSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiBtX2Zv
cm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYpPiBtX2l0ZXJhdGVBbGxWYWx1ZXM7Ci0g
ICAgdWludCBtX3RleHR1cmVEaW1lbnNpb24geyAwIH07Ci0gICAgYm9vbCBtX2lzSW50IHsgZmFs
c2UgfTsKLSAgICBib29sIG1faXNOdW1iZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0Zsb2F0
aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNBdG9taWMgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9pc1ZlY3RvciB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTWF0cml4IHsgZmFsc2UgfTsKLSAg
ICBib29sIG1faXNPcGFxdWVUeXBlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUZXh0dXJlIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1faXNUZXh0dXJlQXJyYXkgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9pc0RlcHRoVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzV3JpdGFibGVUZXh0dXJl
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDdWJlVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2lzU2lnbmVkIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiwgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmli
dXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NDk5OGIxNDRjMWM0YjE2NGI0
ZWYyYzljOTBhYTJjZTRkMDg1NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2ln
bmVkIGRlcHRoKQotICAgICAgICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShsb2NhdGlvbikKLSAg
ICAgICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICAgICAsIG1faGVpZ2h0KGhlaWdodCkKLSAgICAg
ICAgLCBtX2RlcHRoKGRlcHRoKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5OdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUoY29uc3QgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7
Ci0gICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKE51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGg7IH0KLSAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdo
dDsgfQotICAgIHVuc2lnbmVkIGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aDsgfQotCi1w
cml2YXRlOgotICAgIHVuc2lnbmVkIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbV9oZWlnaHQ7Ci0g
ICAgdW5zaWduZWQgbV9kZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWZiZGI2YWI0YTZmYjgzYmU1ZDM0YzJkODg4
YzAxNTA5OGUyNWRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJU
eXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFBvaW50
ZXJUeXBlIGZpbmFsIDogcHVibGljIFJlZmVyZW5jZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJUeXBlKTsKLSAgICB1
c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsKLQotICAgIFBvaW50ZXJUeXBlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBl
bGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1v
dmUoZWxlbWVudFR5cGUpLCBLaW5kOjpQb2ludGVyKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFBvaW50ZXJUeXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBl
KQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFBvaW50ZXJUeXBl
KGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0Owot
Ci0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy0+
QmFzZTo6aGFzaCgpIF4gU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2goInBvaW50ZXIi
KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pbnRlclR5cGUmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFk
ZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKLSAg
ICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50b1N0cmluZygpLCAnKicpOwotICAgIH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFBv
aW50ZXJUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUG9pbnRlclR5
cGUsIGlzUG9pbnRlclR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDExYTIzZDBhMzU2Y2I3MzQ4YjQzNjAzZTc3NWJiMzg3MmM2Nzc3
NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHJvdGVjdGVkOgotICAgIH5Qcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQsIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGJhc2UpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwga2lu
ZCkKLSAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShiYXNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNvbnN0IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOwotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJu
IG1fYmFzZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgYmFzZVJlZmVyZW5jZSgpIHsg
cmV0dXJuIG1fYmFzZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlQmFzZSgpIHsg
cmV0dXJuIFdURk1vdmUobV9iYXNlKTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX2Jhc2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNDg3N2RmMjJlZDIxNmQ2ZTBmMDNmNDdmNGNmMWY0ODgzN2I5YzgyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgUXVhbGlmaWVyIDogdWludDhfdCB7Ci0g
ICAgTm9pbnRlcnBvbGF0aW9uLAotICAgIE5vcGVyc3BlY3RpdmUsCi0gICAgVW5pZm9ybSwKLSAg
ICBDZW50cm9pZCwKLSAgICBTYW1wbGUKLX07Ci0KLXVzaW5nIFF1YWxpZmllcnMgPSBWZWN0b3I8
UXVhbGlmaWVyPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTAzZWM4ZDE4MGM4
YjU5Y2QxZGIxNGNmNWQ1NjdhYjA1MTY5ZTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNl
LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi0vKgotICogIDEuIEV2YWx1YXRlIG1fbGVm
dFZhbHVlCi0gKiAgMi4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9vbGRWYWx1ZQotICogIDMuIEV2
YWx1YXRlIG1fbmV3VmFsdWVFeHByZXNzaW9uCi0gKiAgNC4gQXNzaWduIHRoZSByZXN1bHQgdG8g
bV9uZXdWYWx1ZQotICogIDUuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbGVmdFZhbHVlCi0gKiAg
Ni4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCi0gKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQK
LSAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IGxlZnRWYWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpSZWFkTW9kaWZ5V3JpdGUpCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFs
dWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0
aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwg
bnVsbHB0cikpCi0gICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxs
cHRyLCBudWxscHRyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFs
dWUsIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBvbGRWYWx1ZSwgVW5pcXVlUmVmPFZh
cmlhYmxlRGVjbGFyYXRpb24+IG5ld1ZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIEtpbmQ6OlJlYWRNb2RpZnlXcml0ZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3Zl
KGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShXVEZNb3ZlKG9sZFZhbHVlKSkKLSAg
ICAgICAgLCBtX25ld1ZhbHVlKFdURk1vdmUobmV3VmFsdWUpKQotICAgIHsKLSAgICB9Ci0KLQot
ICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgc2V0TmV3VmFsdWVFeHByZXNzaW9uKFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiYmIG5ld1ZhbHVlRXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAg
IG1fbmV3VmFsdWVFeHByZXNzaW9uID0gV1RGTW92ZShuZXdWYWx1ZUV4cHJlc3Npb24pOwotICAg
IH0KLQotICAgIHZvaWQgc2V0UmVzdWx0RXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiByZXN1bHRFeHByZXNzaW9uKQotICAgIHsKLSAgICAgICAgbV9yZXN1bHRFeHByZXNzaW9uID0g
V1RGTW92ZShyZXN1bHRFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8VmFyaWFi
bGVSZWZlcmVuY2U+IG9sZFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5jZTo6d3Jh
cChtX29sZFZhbHVlKSk7Ci0gICAgfQotCi0gICAgVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNl
PiBuZXdWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1
ZSkpOwotICAgIH0KLQotICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVm
dFZhbHVlOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiBsZWZ0VmFsdWVSZWZlcmVuY2Uo
KSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG9sZFZh
bHVlKCkgeyByZXR1cm4gbV9vbGRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG5l
d1ZhbHVlKCkgeyByZXR1cm4gbV9uZXdWYWx1ZTsgfQotICAgIEV4cHJlc3Npb24mIG5ld1ZhbHVl
RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9uZXdWYWx1ZUV4cHJlc3Npb24p
OwotICAgICAgICByZXR1cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOwotICAgIH0KLSAgICBFeHBy
ZXNzaW9uJiByZXN1bHRFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3Vs
dEV4cHJlc3Npb24pOwotICAgICAgICByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsKLSAgICB9
Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VMZWZ0VmFsdWUoKSB7IHJldHVybiBXVEZN
b3ZlKG1fbGVmdFZhbHVlKTsgfQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0
YWtlT2xkVmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fb2xkVmFsdWUpOyB9Ci0gICAgVW5pcXVl
UmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IHRha2VOZXdWYWx1ZSgpIHsgcmV0dXJuIFdURk1vdmUo
bV9uZXdWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZU5ld1ZhbHVlRXhw
cmVzc2lvbigpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IFdURk1vdmUobV9uZXdWYWx1
ZUV4cHJlc3Npb24udmFsdWUoKSk7Ci0gICAgICAgIG1fbmV3VmFsdWVFeHByZXNzaW9uLnJlc2V0
KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiB0YWtlUmVzdWx0RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9
IFdURk1vdmUobV9yZXN1bHRFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX3Jlc3VsdEV4
cHJlc3Npb24ucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdFZhbHVlOwotICAgIFVuaXF1ZVJl
ZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX29sZFZhbHVlOwotICAgIFVuaXF1ZVJlZjxWYXJpYWJs
ZURlY2xhcmF0aW9uPiBtX25ld1ZhbHVlOwotICAgIHN0ZDo6b3B0aW9uYWw8VW5pcXVlUmVmPEV4
cHJlc3Npb24+PiBtX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFVuaXF1
ZVJlZjxFeHByZXNzaW9uPj4gbV9yZXN1bHRFeHByZXNzaW9uOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmFjZDMxNWMxYzIxNDM1NzllYTVkMGQy
ZTAyNWI1ZWM0ZWYwZTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVy
ZW5jZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZmVy
ZW5jZVR5cGUpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7
Ci0KLXByb3RlY3RlZDoKLSAgICBSZWZlcmVuY2VUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
QWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSwg
S2luZCBraW5kKQotICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBraW5kKQotICAgICAg
ICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKLSAgICAgICAgLCBtX2VsZW1lbnRUeXBl
KFdURk1vdmUoZWxlbWVudFR5cGUpKQotICAgIHsKLSAgICB9Ci0KLQotcHVibGljOgotICAgIEFk
ZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsg
fQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxlbWVudFR5cGU7IH0KLSAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSB7IHJldHVybiBt
X2VsZW1lbnRUeXBlOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB+bV9lbGVtZW50VHlwZS0+aGFzaCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBZGRyZXNzU3BhY2UgbV9hZGRyZXNzU3BhY2U7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX2Vs
ZW1lbnRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoUmVmZXJlbmNlVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9UWVBFKFJlZmVyZW5jZVR5cGUsIGlzUmVmZXJlbmNlVHlwZSgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJlMTRmYmNjOGU3YmQwMWYzZGYwNTEzYzQwM2VkYmZjYmNhNmY3YWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE5ldywg
dHlwZW5hbWUgT2xkLCB0eXBlbmFtZSAuLi5BcmdzPgotQUxXQVlTX0lOTElORSBOZXcqIHJlcGxh
Y2VXaXRoKE9sZCYgb2xkLCBBcmdzJiYuLi4gYXJncykKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihOZXcpIDw9IHNpemVvZihPbGQpLCAiVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwbGFjZW1l
bnQgbmV3IGJlbG93IHRvIG5vdCBvdmVyd3JpdGUgdW5vd25lZCBtZW1vcnkuIik7Ci0gICAgdm9p
ZCogbG9jYXRpb24gPSAmb2xkOwotICAgIE9sZDo6ZGVzdHJ1Y3Qob2xkKTsKLSAgICByZXR1cm4g
bmV3IChsb2NhdGlvbikgTmV3KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci19Ci0KLX0g
fSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpXSExTTDo6QVNUCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTIyYTFkN2VjY2VlMTI0MTg4NTVkZTUxNDc0ZmVlOWEyNGJiNjE2Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXNvbHZhYmxlVHlwZSA6IHB1YmxpYyBU
eXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5S
ZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIFJlc29sdmFibGVUeXBl
KEtpbmQga2luZCkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgeyB9Ci0KLQotICAgIFJlc29s
dmFibGVUeXBlKGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJs
ZVR5cGUoUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgUmVzb2x2YWJsZVR5cGUm
IG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmFi
bGVUeXBlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgYm9v
bCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9u
Q29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgY29uc3QgVW5uYW1lZFR5cGUq
IG1heWJlUmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1f
cmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiByZXNvbHZl
ZFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAg
ICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICBVbm5hbWVkVHlwZSog
bWF5YmVSZXNvbHZlZFR5cGUoKSB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZl
ZFR5cGUgOiBudWxscHRyOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fcmVz
b2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHZvaWQgcmVzb2x2ZShSZWY8VW5uYW1lZFR5cGU+IHR5
cGUpCi0gICAgewotICAgICAgICBtX3Jlc29sdmVkVHlwZSA9IFdURk1vdmUodHlwZSk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV9yZXNvbHZlZFR5cGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShSZXNvbHZhYmxlVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFJl
c29sdmFibGVUeXBlLCBpc1Jlc29sdmFibGVUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJiN2Y4Yzcy
MTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0j
aW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIK
LSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBSZXNv
dXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVk
VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBzd2l0Y2gg
KG1fbW9kZSkgewotICAgIGNhc2UgTW9kZTo6VW5vcmRlcmVkQWNjZXNzVmlldzoKLSAgICAgICAg
aWYgKGlzPFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYg
cmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsKLSAg
ICAgICAgICAgIHJldHVybiByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NT
cGFjZTo6Q29uc3RhbnQgfHwgcmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNz
U3BhY2U6OkRldmljZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXM8VHlwZVJlZmVyZW5jZT4o
dW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNh
c3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgaWYgKGlzPE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVy
ZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6VGV4dHVyZToKLSAgICAgICAgaWYgKGlzPFJlZmVy
ZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpD
b25zdGFudDsKLSAgICAgICAgaWYgKGlzPEFycmF5VHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVk
VHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBl
UmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBpZiAoaXM8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJl
c29sdmVkVHlwZSgpKS5pc1RleHR1cmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY2FzZSBNb2RlOjpCdWZmZXI6Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBl
Pih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVmZXJlbmNlVHlw
ZT4odW5uYW1lZFR5cGUpLmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlNhbXBsZXI6Ci0gICAgICAg
IHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnNhbXBsZXJUeXBlKCkpOwot
ICAgIH0KLX0KLQotYm9vbCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJ
dGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9
PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1h
bnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVz
b3VyY2VTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGQ1ZWQzN2U4
YWI5N2ZmN2E1OTAyZDdmMWVhZWJmYTY1NWVhYzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29k
ZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
UmVzb3VyY2VTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3Qgewot
ICAgICAgICBVbm9yZGVyZWRBY2Nlc3NWaWV3LAotICAgICAgICBUZXh0dXJlLAotICAgICAgICBC
dWZmZXIsCi0gICAgICAgIFNhbXBsZXIKLSAgICB9OwotCi0gICAgUmVzb3VyY2VTZW1hbnRpYyhD
b2RlTG9jYXRpb24gbG9jYXRpb24sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVk
IHNwYWNlKQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICAgICAgLCBtX21v
ZGUobW9kZSkKLSAgICAgICAgLCBtX2luZGV4KGluZGV4KQotICAgICAgICAsIG1fc3BhY2Uoc3Bh
Y2UpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflJlc291cmNlU2VtYW50aWMoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBSZXNvdXJjZVNlbWFudGljKGNvbnN0IFJlc291cmNlU2VtYW50aWMmKSA9
IGRlbGV0ZTsKLSAgICBSZXNvdXJjZVNlbWFudGljKFJlc291cmNlU2VtYW50aWMmJikgPSBkZWZh
dWx0OwotCi0gICAgU3RyaW5nVmlldyB0b1N0cmluZygpCi0gICAgewotICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgewotICAgICAgICBjYXNlIE1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc6Ci0gICAg
ICAgICAgICByZXR1cm4gIlVub3JkZXJlZEFjY2Vzc1ZpZXciOwotICAgICAgICBjYXNlIE1vZGU6
OlRleHR1cmU6Ci0gICAgICAgICAgICByZXR1cm4gIlRleHR1cmUiOwotICAgICAgICBjYXNlIE1v
ZGU6OkJ1ZmZlcjoKLSAgICAgICAgICAgIHJldHVybiAiQnVmZmVyIjsKLSAgICAgICAgY2FzZSBN
b2RlOjpTYW1wbGVyOgotICAgICAgICAgICAgcmV0dXJuICJTYW1wbGVyIjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQotICAgIHVu
c2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIHVuc2lnbmVkIHNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fbW9kZSA9PSBvdGhlci5tX21vZGUgJiYgbV9pbmRleCA9PSBvdGhlci5tX2luZGV4ICYmIG1f
c3BhY2UgPT0gb3RoZXIubV9zcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVzb3VyY2VTZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNv
bnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRl
OwotCi1wcml2YXRlOgotICAgIE1vZGUgbV9tb2RlOwotICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0g
ICAgdW5zaWduZWQgbV9zcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDIxYmI1NmJjODBmODA1MDliODhmMTRjNmJlYTc5ZjkyODZlZGE0
MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgUmV0dXJuIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUmV0dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxv
Y2F0aW9uLCBLaW5kOjpSZXR1cm4pCi0gICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgflJldHVybigpID0gZGVmYXVsdDsKLQotICAgIFJldHVybihj
b25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKLSAgICBSZXR1cm4oUmV0dXJuJiYpID0gZGVmYXVsdDsK
LQotICAgIEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQotCi1w
cml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ZhbHVlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmV0
dXJuKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1cm4sIGlz
UmV0dXJuKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3YmE2MmJlMGQ1N2ZiNGFjMTk3ZDcy
ZDQwNDA4NmQ1MjU3MmU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1h
bnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xC
dWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotI2luY2x1ZGUg
IldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotdXNpbmcgU2VtYW50aWMgPSBWYXJpYW50PEJ1aWx0SW5TZW1hbnRpYywgUmVzb3VyY2VT
ZW1hbnRpYywgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLCBTdGFnZUluT3V0U2VtYW50
aWM+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmMDE1
Mzk0ZTFmNjZlYTY3NDU3NDFkNzA3OTlkNmEyZDViZWE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QKLXsKLSAgICBp
ZiAoIWlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5h
bWVkVHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVu
Y2UucmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRv
d25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUo
KSkuaXNOdW1iZXIoKTsKLX0KLQotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6
OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBk
aXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3QKLXsK
LSAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjM5ZWMxOTZmODk5NWMy
MDk1ZWQxZTJjMDRmODhmZTg4ZDFjOGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50
aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDog
QmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5TcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMoY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
JikgPSBkZWxldGU7Ci0gICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5h
bWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQotcHJp
dmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmRjNjQ5NjViMzIzMTY1NTA5ZWM2MWNj
ZTJkYjRhOTY4MGViZDMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdl
SW5PdXRTZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFu
dGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFy
cmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1ib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVk
VHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAotewotICAgIGlmIChp
czxBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1l
ZFR5cGUpOwotICAgIGF1dG8mIHJlc29sdmVkVHlwZSA9IHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCk7Ci0gICAgaWYgKGlzPEVudW1lcmF0aW9uRGVmaW5pdGlvbj4ocmVzb2x2ZWRUeXBlKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHJlc29sdmVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
aXNOdW1iZXIoKQotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQot
ICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKLX0KLQotYm9vbCBT
dGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hh
ZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2lu
dFR5cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRyeVBvaW50
VHlwZSkgewotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci0gICAgY2FzZSBFbnRy
eVBvaW50VHlwZTo6Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzBlMjNjYWE0ZDdlMjEyZjYyYTBjNTM2YTdlM2FjOWY0YTEzNzk3MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFu
dGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTdGFnZUluT3V0U2VtYW50aWMgOiBwdWJsaWMgQmFz
ZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBT
dGFnZUluT3V0U2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCBpbmRleCkK
LSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0gICAgICAgICwgbV9pbmRleChpbmRl
eCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGljKCkgPSBk
ZWZhdWx0OwotCi0gICAgU3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRp
YyYpID0gZGVsZXRlOwotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2VtYW50aWMm
JikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RhZ2VJbk91dFNlbWFudGljJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5k
ZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRp
YyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwg
Y29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAg
IHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGRjZmQ3NjNmYTFjZTg4Y2NlMjQwODAwNTc2MTc4YjU3
MjU2NjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFN0
YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAg
ICB+U3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBLaW5k
IDogdWludDhfdCB7Ci0gICAgICAgIEJsb2NrLAotICAgICAgICBCcmVhaywKLSAgICAgICAgQ29u
dGludWUsCi0gICAgICAgIERvV2hpbGVMb29wLAotICAgICAgICBFZmZlY3RmdWxFeHByZXNzaW9u
LAotICAgICAgICBGYWxsdGhyb3VnaCwKLSAgICAgICAgRm9yTG9vcCwKLSAgICAgICAgSWYsCi0g
ICAgICAgIFJldHVybiwKLSAgICAgICAgU3RhdGVtZW50TGlzdCwKLSAgICAgICAgU3dpdGNoQ2Fz
ZSwKLSAgICAgICAgU3dpdGNoLAotICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywKLSAgICAg
ICAgV2hpbGVMb29wLAotICAgIH07Ci0gICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9j
YXRpb24sIEtpbmQga2luZCkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24p
Ci0gICAgICAgICwgbV9raW5kKGtpbmQpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koU3RhdGVtZW50Jik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoU3RhdGVtZW50
Jik7Ci0KLSAgICBTdGF0ZW1lbnQoY29uc3QgU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3Rh
dGVtZW50KFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KLQotICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpCbG9jazsgfQotICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpCcmVhazsgfQotICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDb250aW51ZTsgfQotICAgIGJvb2wgaXNEb1doaWxlTG9v
cCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb1doaWxlTG9vcDsgfQotICAgIGJv
b2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb247IH0KLSAgICBib29sIGlzRmFsbHRocm91Z2go
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmFsbHRocm91Z2g7IH0KLSAgICBib29s
IGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGb3JMb29wOyB9Ci0g
ICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Oklm
OyB9Ci0gICAgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpS
ZXR1cm47IH0KLSAgICBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpTdGF0ZW1lbnRMaXN0OyB9Ci0gICAgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoQ2FzZTsgfQotICAgIGJvb2wgaXNTd2l0
Y2hTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoOyB9Ci0g
ICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0gICAgYm9vbCBpc1doaWxl
TG9vcCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpXaGlsZUxvb3A7IH0KLQotICAg
IENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlv
bjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikg
eyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0
aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIEtpbmQgbV9raW5kOwotfTsKLQotdXNpbmcgU3RhdGVt
ZW50cyA9IFZlY3RvcjxVbmlxdWVSZWY8U3RhdGVtZW50Pj47Ci0KLX0KLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShTdGF0ZW1lbnQpCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5
cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGljYXRlOyB9
IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2MwMjczODczZjFhNjIwNGU3OTkxZWU3MTczMjcwNzQ0MTVm
ZjU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVEZWZp
bml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgU3RydWN0dXJlRWxl
bWVudHMmJiBzdHJ1Y3R1cmVFbGVtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9z
dHJ1Y3R1cmVFbGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKLSAgICB7Ci0gICAg
fQotCi0gICAgflN0cnVjdHVyZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1
cmVEZWZpbml0aW9uKGNvbnN0IFN0cnVjdHVyZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBT
dHJ1Y3R1cmVEZWZpbml0aW9uKFN0cnVjdHVyZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVyZUVsZW1lbnRzKCkgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVFbGVtZW50czsgfQotICAgIFN0cnVjdHVyZUVsZW1lbnQqIGZpbmQoY29uc3QgU3RyaW5n
JiBuYW1lKQotICAgIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihtX3N0
cnVjdHVyZUVsZW1lbnRzLmJlZ2luKCksIG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCksIFsmXShT
dHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KSAtPiBib29sIHsKLSAgICAgICAgICAg
IHJldHVybiBzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSA9PSBuYW1lOwotICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKGl0ZXJhdG9yID09IG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICYqaXRlcmF0b3I7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFN0cnVjdHVyZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVudHM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShTdHJ1Y3R1cmVEZWZpbml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZ
UEUoU3RydWN0dXJlRGVmaW5pdGlvbiwgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkpCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYzI4NmNmMmQwMmYzYzQwZGVkYzZiOGE0
YTNlY2QyZmEwZGVjYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0
dXJlRWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgotI2luY2x1
ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgU3RydWN0dXJlRWxlbWVudCBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgU3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFF1
YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5h
bWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKLSAgICAgICAgOiBtX2Nv
ZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX3F1YWxpZmllcnMoV1RGTW92ZShxdWFs
aWZpZXJzKSkKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX25h
bWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMp
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3RydWN0dXJlRWxlbWVudCgpID0gZGVmYXVsdDsKLQot
ICAgIFN0cnVjdHVyZUVsZW1lbnQoY29uc3QgU3RydWN0dXJlRWxlbWVudCYpID0gZGVsZXRlOwot
ICAgIFN0cnVjdHVyZUVsZW1lbnQoU3RydWN0dXJlRWxlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUxvY2F0aW9uOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBTZW1hbnRp
Yyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFF1YWxpZmllcnMgbV9xdWFsaWZp
ZXJzOwotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIFN0cmluZyBtX25hbWU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotfTsKLQotdXNpbmcgU3Ry
dWN0dXJlRWxlbWVudHMgPSBWZWN0b3I8U3RydWN0dXJlRWxlbWVudD47Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN3aXRjaENhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZGM3YTVjOWVl
YTk1NTViZGE3YzQ2NDIxYjNlODVlYTRlZGYzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTd2l0Y2hDYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3dpdGNo
Q2FzZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6
Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCi0gICAgICAgICwg
bV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUoYmxvY2sp
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKLQotICAgIFN3
aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwotICAgIFN3aXRjaENhc2UoU3dp
dGNoQ2FzZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVz
c2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIEJsb2NrJiBibG9jaygpIHsg
cmV0dXJuIG1fYmxvY2s7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50
RXhwcmVzc2lvbj4gbV92YWx1ZTsKLSAgICBCbG9jayBtX2Jsb2NrOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3dpdGNoQ2FzZSkK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoQ2FzZSwgaXNT
d2l0Y2hDYXNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hT
dGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN3aXRjaFN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzI5MzJh
MzM4Y2E5Y2Y0YjM3NGE1NjE0ZWZhZmZjZjAxMjU2ZDRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3dp
dGNoU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3dpdGNoU3RhdGVtZW50KENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxTd2l0Y2hDYXNl
PiYmIHN3aXRjaENhc2VzKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dp
dGNoKQotICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV9zd2l0
Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN3aXRj
aFN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0
Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVt
ZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHZhbHVlKCkgeyByZXR1cm4gbV92
YWx1ZTsgfQotICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJldHVybiBt
X3N3aXRjaENhc2VzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1f
dmFsdWU7Ci0gICAgVmVjdG9yPFN3aXRjaENhc2U+IG1fc3dpdGNoQ2FzZXM7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hT
dGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRj
aFN0YXRlbWVudCwgaXNTd2l0Y2hTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZDhlNDQ5MjIwNWM1ZTcwY2NmNTkyYzg2ZGI1N2IwMzMxNWExMzg1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGVy
bmFyeUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBwcmVkaWNhdGUsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpUZXJuYXJ5KQotICAgICAgICAsIG1fcHJlZGljYXRlKFdURk1v
dmUocHJlZGljYXRlKSkKLSAgICAgICAgLCBtX2JvZHlFeHByZXNzaW9uKFdURk1vdmUoYm9keUV4
cHJlc3Npb24pKQotICAgICAgICAsIG1fZWxzZUV4cHJlc3Npb24oV1RGTW92ZShlbHNlRXhwcmVz
c2lvbikpCi0gICAgewotICAgIH0KLQotICAgIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKLQotICAgIFRlcm5hcnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgVGVybmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZh
dWx0OwotCi0gICAgRXhwcmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4gbV9wcmVkaWNhdGU7
IH0KLSAgICBFeHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fYm9keUV4cHJl
c3Npb247IH0KLSAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWxz
ZUV4cHJlc3Npb247IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9w
cmVkaWNhdGU7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYm9keUV4cHJlc3Npb247Ci0g
ICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fZWxzZUV4cHJlc3Npb247Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUZXJuYXJ5RXhw
cmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRlcm5h
cnlFeHByZXNzaW9uLCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmODgy
ZGQ5OTFiODBkOWY1NWQ1YTAxYmNiMzhiMDhjNzc4ZGQ5NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5UeXBlKCkgPSBk
ZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0gICAg
ICAgIC8vIFVubmFtZWRUeXBlcwotICAgICAgICBUeXBlUmVmZXJlbmNlLAotICAgICAgICBQb2lu
dGVyLAotICAgICAgICBBcnJheVJlZmVyZW5jZSwKLSAgICAgICAgQXJyYXksCi0gICAgICAgIC8v
IE5hbWVkVHlwZXMKLSAgICAgICAgVHlwZURlZmluaXRpb24sCi0gICAgICAgIFN0cnVjdHVyZURl
ZmluaXRpb24sCi0gICAgICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiwKLSAgICAgICAgTmF0aXZl
VHlwZURlY2xhcmF0aW9uLAotICAgICAgICAvLyBSZXNvbHZhYmxlVHlwZXMKLSAgICAgICAgRmxv
YXRMaXRlcmFsLAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCwKLSAgICB9OwotCi0gICAgVHlwZShLaW5kIGtpbmQpCi0gICAgICAgIDogbV9r
aW5kKGtpbmQpCi0gICAgeyB9Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShUeXBlJik7Ci0gICAg
c3RhdGljIHZvaWQgZGVzdHJ1Y3QoVHlwZSYpOwotCi0gICAgZXhwbGljaXQgVHlwZShjb25zdCBU
eXBlJikgPSBkZWxldGU7Ci0gICAgVHlwZShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFR5cGUm
IG9wZXJhdG9yPShjb25zdCBUeXBlJikgPSBkZWxldGU7Ci0gICAgVHlwZSYgb3BlcmF0b3I9KFR5
cGUmJikgPSBkZWZhdWx0OwotCi0gICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5k
OyB9Ci0KLSAgICBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0g
S2luZDo6VHlwZVJlZmVyZW5jZSAmJiBraW5kKCkgPD0gS2luZDo6QXJyYXk7IH0KLSAgICBib29s
IGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVEZWZpbml0
aW9uICYmIGtpbmQoKSA8PSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb247IH0KLSAgICBib29s
IGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6RmxvYXRM
aXRlcmFsICYmIGtpbmQoKSA8PSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0KLSAg
ICBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpU
eXBlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc1BvaW50ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlBvaW50ZXI7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlOyB9Ci0gICAg
Ym9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheTsg
fQotICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNQb2ludGVyVHlw
ZSgpIHx8IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCk7IH0KLQotICAgIGJvb2wgaXNUeXBlRGVmaW5p
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUeXBlRGVmaW5pdGlvbjsgfQot
ICAgIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb247IH0KLSAgICBib29sIGlzRW51bWVyYXRpb25EZWZp
bml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbjsgfQotICAgIGJvb2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9Ci0KLSAgICBib29sIGlz
RmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGbG9hdExp
dGVyYWw7IH0KLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWw7IH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOwotICAgIGNvbnN0IFR5
cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxU
eXBlKj4odGhpcyktPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBLaW5kIG1f
a2luZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKFR5cGUpCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9U
WVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlJiB0eXBlKSB7IHJl
dHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0ZTEwYmY3NTQyOWQ4NjZmNjQ0NTUw
NTNhOTQzMTEyOGJjN2Y1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
QXJndW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotVHlwZUFyZ3Vt
ZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQotewotICAgIFR5
cGVBcmd1bWVudHMgcmVzdWx0OwotICAgIGZvciAoY29uc3QgYXV0byYgdHlwZUFyZ3VtZW50IDog
dHlwZUFyZ3VtZW50cykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjbG9uZSh0eXBlQXJndW1lbnQp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1UeXBlQXJndW1lbnQgY2xvbmUoY29uc3QgVHlw
ZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbXShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lv
bikgLT4gVHlwZUFyZ3VtZW50IHsKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi5j
bG9uZSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5j
ZSkgLT4gVHlwZUFyZ3VtZW50IHsKLSAgICAgICAgcmV0dXJuIHR5cGVSZWZlcmVuY2UuY29weVJl
ZigpOwotICAgIH0pLCB0eXBlQXJndW1lbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1
bWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTJhMzJlYjZlYjUxODFkZjMw
NjgyYmEyZTRkMjNmMjI1ZDMxNzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGVBcmd1bWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci0KLXVzaW5nIFR5cGVBcmd1bWVudCA9IFZhcmlhbnQ8
Q29uc3RhbnRFeHByZXNzaW9uLCBSZWY8VHlwZVJlZmVyZW5jZT4+OwotdXNpbmcgVHlwZUFyZ3Vt
ZW50cyA9IFZlY3RvcjxUeXBlQXJndW1lbnQ+OwotCi1UeXBlQXJndW1lbnQgY2xvbmUoY29uc3Qg
VHlwZUFyZ3VtZW50Jik7Ci1UeXBlQXJndW1lbnRzIGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudHMm
KTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUyOTA1NTdiZWVlZmIwZmU0ZTIwY2IxOGYxODZiMjEyYzQzZGI4NzQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAorKysgL2Rl
di9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBl
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVE
ZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVHlwZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBTdHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAgIDogTmFt
ZWRUeXBlKEtpbmQ6OlR5cGVEZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAg
ICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflR5cGVE
ZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgVHlwZURlZmluaXRpb24oY29uc3QgVHlwZURl
ZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsg
fQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9k
ZUltcGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAg
fQotCi0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlRGVmaW5pdGlvbikKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFR5cGVEZWZpbml0aW9uLCBpc1R5cGVE
ZWZpbml0aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGVSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjMzMWMz
MmQ1NTQwZjYzMWMxNDFmMmJjNDY5MWExODIxODRhZWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1SZWY8VHlwZVJlZmVyZW5jZT4gVHlwZVJlZmVyZW5jZTo6d3JhcChDb2RlTG9j
YXRpb24gbG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotewotICAgIFR5cGVBcmd1
bWVudHMgdHlwZUFyZ3VtZW50czsKLSAgICBpZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihy
ZXNvbHZlZFR5cGUpKQotICAgICAgICB0eXBlQXJndW1lbnRzID0gQVNUOjpjbG9uZShkb3duY2Fz
dDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVkVHlwZSkudHlwZUFyZ3VtZW50cygpKTsK
LSAgICBhdXRvIHJlc3VsdCA9IFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgU3RyaW5n
KHJlc29sdmVkVHlwZS5uYW1lKCkpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKTsKLSAgICByZXN1
bHQtPnNldFJlc29sdmVkVHlwZShyZXNvbHZlZFR5cGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjZkZWVlZmZlYWIwN2QwNDA0OWE4NTQ2Mjc3NzFjZWYzMDYyYmQ0Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50Lmgi
Ci0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYW1l
ZFR5cGU7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5cGUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFR5cGVSZWZlcmVuY2UpOwotICAgIFR5cGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAg
OiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6VHlwZVJlZmVyZW5jZSkKLSAgICAgICAgLCBt
X25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0
eXBlQXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotcHVibGljOgotICAgIHN0YXRpYyBSZWY8VHlw
ZVJlZmVyZW5jZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwg
VHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKiBuZXcgVHlwZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZSh0eXBlQXJndW1lbnRzKSkpOwotICAgIH0KLQotICAgIH5UeXBlUmVmZXJlbmNlKCkgPSBkZWZh
dWx0OwotCi0gICAgc3RhdGljIFJlZjxUeXBlUmVmZXJlbmNlPiB3cmFwKENvZGVMb2NhdGlvbiwg
TmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpOwotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4g
bV9uYW1lOyB9Ci0gICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1f
dHlwZUFyZ3VtZW50czsgfQotICAgIE5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZTsgfQotICAgIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAg
IHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSZXNvbHZlZFR5
cGUoTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCi0gICAgewotICAgICAgICBtX3Jlc29sdmVkVHlw
ZSA9ICZyZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkgdXNlIHRoaXMgZnVuY3Rpb24gYWZ0
ZXIgdGhlIG5hbWUgcmVzb2x2ZXIgcnVucy4KLSAgICAgICAgLy8gUmVseWluZyBvbiBoYXZpbmcg
YSByZXNvbHZlZCB0eXBlIHNpbXBsaWZpZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAg
QVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxjb25z
dCBUeXBlKj46Omhhc2goJnVuaWZ5Tm9kZSgpKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVHlwZVJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gJnVuaWZ5Tm9kZSgpID09ICZvdGhl
ci51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVz
b2x2ZWRUeXBlLT5uYW1lKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBU
eXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
cmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUo
KTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFR5cGVBcmd1bWVudHMgbV90eXBl
QXJndW1lbnRzOwotICAgIE5hbWVkVHlwZSogbV9yZXNvbHZlZFR5cGUgeyBudWxscHRyIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShUeXBlUmVmZXJlbmNlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVHlw
ZVJlZmVyZW5jZSwgaXNUeXBlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFkOTBlNzg0MjUxMzc0OWE5OGVhZjZiZmNmZGViYzI2NzAzZDQ3N2YuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJy
YXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
VHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi11bnNpZ25lZCBVbm5hbWVkVHlwZTo6aGFzaCgpIGNv
bnN0Ci17Ci0gICAgc3dpdGNoIChraW5kKCkpIHsKLSAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVu
Y2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykuaGFzaCgp
OwotICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50
ZXJUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS5oYXNoKCk7
Ci0gICAgY2FzZSBLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlw
ZT4oKnRoaXMpLmhhc2goKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotYm9vbCBVbm5hbWVkVHlwZTo6b3BlcmF0b3I9PShj
b25zdCBVbm5hbWVkVHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG90aGVyLmtpbmQoKSAh
PSBraW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoa2luZCgpKSB7
Ci0gICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
VHlwZVJlZmVyZW5jZT4oKnRoaXMpID09IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG90aGVyKTsK
LSAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVy
VHlwZT4oKnRoaXMpID09IGRvd25jYXN0PFBvaW50ZXJUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBL
aW5kOjpBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJl
bmNlVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3RoZXIpOwot
ICAgIGNhc2UgS2luZDo6QXJyYXk6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+
KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVR5cGU+KG90aGVyKTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTgxZTVlMzg3OTQxYzYyODdlNDg3ZjEy
ODU1NTY0ZDNlMGRkYjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFt
ZWRUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFVubmFtZWRUeXBlIDogcHVibGljIFR5
cGUsIHB1YmxpYyBSZWZDb3VudGVkPFVubmFtZWRUeXBlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5uYW1lZFR5cGUpOwotcHVibGlj
OgotICAgIFVubmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kKQotICAg
ICAgICA6IFR5cGUoa2luZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAg
ICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3Q7Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlTG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAg
ICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2RlTG9jYXRp
b24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9UWVBFKFVubmFtZWRUeXBlLCBpc1VubmFtZWRUeXBlKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZUhhc2guaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTY3YzBkNzRiYjI2ZjQxOThkMTZmNjJhN2EzYjY3
YTRiYTUyZjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
SGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xV
bm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgVW5uYW1lZFR5cGVLZXkgewot
cHVibGljOgotICAgIFVubmFtZWRUeXBlS2V5KCkgPSBkZWZhdWx0OwotICAgIFVubmFtZWRUeXBl
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3R5cGUoYml0
d2lzZV9jYXN0PEFTVDo6VW5uYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgVW5uYW1lZFR5cGVLZXkoQVNUOjpVbm5hbWVkVHlwZSYgdHlw
ZSkKLSAgICAgICAgOiBtX3R5cGUoJnR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNF
bXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1fdHlwZTsgfQotICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gYml0d2lzZV9jYXN0PEFT
VDo6VW5uYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS0+aGFzaCgpOyB9Ci0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlS2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4gKm1f
dHlwZSA9PSAqb3RoZXIubV90eXBlOyB9Ci0gICAgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUoKSBjb25zdCB7IHJldHVybiAqbV90eXBlOyB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVW5uYW1l
ZFR5cGVLZXkmIGEsIGNvbnN0IFVubmFtZWRUeXBlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRy
dWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUcmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8VW5uYW1lZFR5cGVLZXk+IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0Vt
cHR5VmFsdWUoY29uc3QgVW5uYW1lZFR5cGVLZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlW
YWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAgICBBU1Q6OlVubmFtZWRUeXBlKiBtX3R5
cGUgeyBudWxscHRyIH07Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5PiA6
IFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleTo6VHJhaXRzIHsgfTsKLXRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleT4gOiBXZWJD
b3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk6Okhhc2ggeyB9OwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3YWZiNDE4MjYyZjc4YzExOThmM2U4ODEzMGM4MDY2MzA0OTE3NzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotaW50NjRfdCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Ci17Ci0gICAgYXV0
byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG1fdHlwZS5yZXNvbHZl
ZFR5cGUoKSk7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0
aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBy
ZXR1cm4gbmF0aXZlVHlwZURlY2xhcmF0aW9uLmZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdl
cigpKG1fdmFsdWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMDE2ZTVjMjI3MjE5
NDYzNGM0YTA3NjRmZjdkNjEzNDYyZTQ0NzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHZhbHVlKQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpCi0gICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0g
ZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29uc3QgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwot
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBl
KCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlv
bigpLCBtX3ZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9uZSgpOwot
ICAgICAgICBpZiAoYXV0byogcmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2ZWRUeXBl
KCkpCi0gICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlJj4oKnJlc29sdmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgaW50NjRfdCB2YWx1ZUZvclNl
bGVjdGVkVHlwZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWQy
MWZhYTA0ZTQ3ODFhMDIxMGMzZDQ0YTk3NjU1YjAyNTQzYTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1
bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUp
Ci0gICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQotICAg
ICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJlbmNlOjpj
cmVhdGUobG9jYXRpb24sICJ1aW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0KLWJv
b2wgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlw
ZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+KHR5cGUp
OwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNh
c3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmlzSW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc1NpZ25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2Vy
KCkobV92YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdW5zaWduZWQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBpZiAobWF0Y2hlcyh1
bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIDE7Ci19Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUgcmVzdWx0KG1fcHJlZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAg
IGlmIChhdXRvKiB0eXBlID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJl
c29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQu
bV9wcmVmZXJyZWRUeXBlID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE3ZWQzOWY4OGRm
NDg1NTZmMGE3ODNiMjFhMzRiZDQ4NTQyZjcyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi1j
bGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxl
VHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCB1bnNpZ25lZCB2YWx1ZSk7Ci0KLSAg
ICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpID0g
ZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsK
LSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgp
IHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0
IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVk
VHlwZSYpIGNvbnN0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotICAgIC8vIFRoaXMgaXMg
YSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4KLSAg
ICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAt
PiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAgIFJlZjxUeXBlUmVmZXJl
bmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MThiNmNkZGJhNDFjOWM2MDUwMWEyZjkwZTM2OTcz
OTk2ZDhjOWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNs
YXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCi0jaW5jbHVkZSAi
V0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotLy8gRmluYWwgYmVjYXVzZSB3ZSBtYWRlIHRoZSBkZXN0cnVj
dG9yIG5vbi12aXJ0dWFsLgotcHVibGljOgotICAgIHN0cnVjdCBSYXJlRGF0YSB7Ci0gICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgUmFyZURhdGEoUXVhbGlm
aWVycyYmIHF1YWxpZmllcnNBcmd1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNl
bWFudGljQXJndW1lbnQpCi0gICAgICAgICAgICA6IHF1YWxpZmllcnMoV1RGTW92ZShxdWFsaWZp
ZXJzQXJndW1lbnQpKQotICAgICAgICAgICAgLCBzZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljQXJn
dW1lbnQpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgUXVhbGlmaWVycyBxdWFsaWZp
ZXJzOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IHNlbWFudGljOwotICAgIH07
Ci0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIFF1
YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWZQdHI8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYm
IG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgaW5pdGlhbGl6ZXIpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24o
Y29kZUxvY2F0aW9uKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICAgICAs
IG1faW5pdGlhbGl6ZXIoV1RGTW92ZShpbml0aWFsaXplcikpCi0gICAgICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCi0gICAgewotICAgICAgICBpZiAoc2VtYW50aWMgfHwgIXF1YWxpZmllcnMu
aXNFbXB0eSgpKQotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+
KFdURk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKLSAgICB9Ci0KLSAgICB+
VmFyaWFibGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlRGVjbGFyYXRp
b24oY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwotICAgIFZhcmlhYmxlRGVj
bGFyYXRpb24oVmFyaWFibGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcm
IG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIC8vIFdlIHVzZSB0aGlzIGZvciBSZWFk
TW9kaWZ5V3JpdGUgZXhwcmVzc2lvbnMsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHR5cGUgb2Yg
dGhlaXIKLSAgICAvLyBpbnRlcm5hbCB2YXJpYWJsZXMgdW50aWwgdGhlIGNoZWNrZXIgcnVucy4g
QWxsIG90aGVyIHZhcmlhYmxlcyBzaG91bGQgc3RhcnQgbGlmZSBvdXQKLSAgICAvLyB3aXRoIGEg
dHlwZS4KLSAgICB2b2lkIHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5cGUpOwot
ICAgIH0KLSAgICBjb25zdCBSZWZQdHI8VW5uYW1lZFR5cGU+JiB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVybiBtX3R5cGUgPyAm
Km1fdHlwZSA6IG51bGxwdHI7IH0KLSAgICBFeHByZXNzaW9uKiBpbml0aWFsaXplcigpIHsgcmV0
dXJuIG1faW5pdGlhbGl6ZXIuZ2V0KCk7IH0KLSAgICBib29sIGlzQW5vbnltb3VzKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+IHRha2VJbml0aWFsaXplcigpIHsgcmV0dXJuIFdURk1vdmUobV9pbml0aWFsaXplcik7IH0K
LSAgICB2b2lkIHNldEluaXRpYWxpemVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBleHBy
ZXNzaW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpbml0aWFsaXplcigpKTsKLSAgICAgICAg
QVNTRVJUKGV4cHJlc3Npb24pOwotICAgICAgICBtX2luaXRpYWxpemVyID0gV1RGTW92ZShleHBy
ZXNzaW9uKTsKLSAgICB9Ci0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLSAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7IHJl
dHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+c2VtYW50aWMuZ2V0KCkgOiBudWxscHRyOyB9
Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFJlZlB0
cjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X2luaXRpYWxpemVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YSB7
IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwotfTsKLQotdXNpbmcgVmFyaWFibGVEZWNs
YXJhdGlvbnMgPSBWZWN0b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PjsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MzI4YzRiMmNmZDQyZTkzMzFhYTg1
NmY5NGE2ZjgyNDRlZjVlOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlRGVjbGFy
YXRpb25zJiYgdmFyaWFibGVEZWNsYXJhdGlvbnMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0
aW9uLCBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgLCBtX3ZhcmlhYmxlRGVj
bGFyYXRpb25zKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCYpID0gZGVsZXRlOwotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxV
bmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4+JiB2YXJpYWJsZURlY2xhcmF0aW9ucygpIHsg
cmV0dXJuIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYWJs
ZURlY2xhcmF0aW9ucyBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5U
KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VmFyaWFibGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNiZDA2
YWNhZTFmZWVlYTcwNTE3YjhkZjhjYjg2N2RkOTM2Yzk2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVmFyaWFibGVSZWZlcmVu
Y2UgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBuYW1lKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZh
cmlhYmxlUmVmZXJlbmNlKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsK
LSAgICB9Ci0KLSAgICB+VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJp
YWJsZVJlZmVyZW5jZShjb25zdCBWYXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOwotICAgIFZh
cmlhYmxlUmVmZXJlbmNlKFZhcmlhYmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKLQotICAgIHN0
YXRpYyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxl
RGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSByZXN1bHQodmFy
aWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSk7Ci0gICAgICAgIHJlc3VsdC5tX3Zhcmlh
YmxlID0gJnZhcmlhYmxlRGVjbGFyYXRpb247Ci0gICAgICAgIHJlc3VsdC5tX25hbWUgPSB2YXJp
YWJsZURlY2xhcmF0aW9uLm5hbWUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0K
LSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIFZhcmlhYmxlRGVj
bGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsgfQotCi0gICAgdm9pZCBz
ZXRWYXJpYWJsZShWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotICAg
IHsKLSAgICAgICAgbV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCi0g
ICAgewotICAgIH0KLQotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlv
biogbV92YXJpYWJsZSB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFZhcmlhYmxlUmVmZXJlbmNlKQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVmFyaWFibGVSZWZlcmVuY2UsIGlz
VmFyaWFibGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMV2hpbGVMb29wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTk2NDliMTU0
ZjMwMTljYTg5N2VhYmNiYjQxYmQ4ZTY0ZGJkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMV2hpbGVMb29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBXaGlsZUxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXaGlsZUxvb3AoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVl
UmVmPFN0YXRlbWVudD4mJiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2lu
ZDo6V2hpbGVMb29wKQotICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25h
bCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgewotICAgIH0KLQotICAg
IH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7Ci0KLSAgICBXaGlsZUxvb3AoY29uc3QgV2hpbGVMb29w
JikgPSBkZWxldGU7Ci0gICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KLSAg
ICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0ZToKLSAgICBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKLSAgICBVbmlxdWVSZWY8U3RhdGVt
ZW50PiBtX2JvZHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklO
RV9ERUZBVUxUX0RFTEVURShXaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKFdoaWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxMTNhMDYxOGJhMWMyNzEz
ODhlZjFkNDRiMGFiMGU1NjE2OTgzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9u
RGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0j
aW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExTTFJlZmVy
ZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRl
ICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVm
aW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMgU3RyaW5n
IGF0dHJpYnV0ZUZvclNlbWFudGljKEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50
aWMpCi17Ci0gICAgc3dpdGNoIChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSkgewotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAg
IHJldHVybiAiW1tpbnN0YW5jZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiW1t2ZXJ0ZXhfaWRd
XSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpQU2l6ZToK
LSAgICAgICAgcmV0dXJuICJbW3BvaW50X3NpemVdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWls
dEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gIltbcG9z
aXRpb25dXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gIltbZnJvbnRfZmFjaW5nXV0iX3N0cjsKLSAg
ICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAg
ICAgICAgcmV0dXJuICJbW3NhbXBsZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJbW3Nh
bXBsZV9tYXNrXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJs
ZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJbW2NvbG9yKCIsICpidWls
dEluU2VtYW50aWMudGFyZ2V0SW5kZXgoKSwgIildXSIpOwotICAgIGNhc2UgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gIltbZGVwdGgoYW55
KV1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWQ292
ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAg
ICAgcmV0dXJuICJbW3RocmVhZF9wb3NpdGlvbl9pbl9ncmlkXV0iX3N0cjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4g
IltbdGhyZWFkZ3JvdXBfcG9zaXRpb25faW5fZ3JpZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuICJb
W3RocmVhZF9pbmRleF9pbl90aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgQVNTRVJUKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuICJbW3RocmVh
ZF9wb3NpdGlvbl9pbl90aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgfQotfQotCi1zdGF0aWMgU3Ry
aW5nIGF0dHJpYnV0ZUZvclNlbWFudGljKEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPihzZW1hbnRp
YykpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1
aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpKTsKLSAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMg
PSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpOwotICAgIHJldHVy
biBtYWtlU3RyaW5nKCJbW3VzZXIodXNlciIsIHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpLCAi
KV1dIik7Ci19Ci0KLUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RW50cnlQb2ludFNjYWZmb2xkaW5n
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3Mm
IGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5
UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91
dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpCi0gICAgOiBtX2Z1bmN0aW9uRGVmaW5pdGlvbihmdW5jdGlvbkRl
ZmluaXRpb24pCi0gICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAsIG1fdHlwZU5h
bWVyKHR5cGVOYW1lcikKLSAgICAsIG1fZW50cnlQb2ludEl0ZW1zKGVudHJ5UG9pbnRJdGVtcykK
LSAgICAsIG1fcmVzb3VyY2VNYXAocmVzb3VyY2VNYXApCi0gICAgLCBtX2xheW91dChsYXlvdXQp
Ci0gICAgLCBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpCi17Ci0gICAgbV9uYW1lZEJpbmRHcm91cHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2xh
eW91dC5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgTmFtZWRCaW5kR3JvdXAgbmFtZWRCaW5kR3JvdXA7Ci0gICAgICAg
IG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBl
TmFtZSgpOwotICAgICAgICBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUgPSBtX2dlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
ckluZGV4ID0gbV9sYXlvdXRbaV0ubmFtZTsgLy8gY29udmVydExheW91dCgpIGluIEdQVVJlbmRl
clBpcGVsaW5lTWV0YWwubW0gbWFrZXMgc3VyZSB0aGVzZSBkb24ndCBjb2xsaWRlLgotICAgICAg
ICBuYW1lZEJpbmRHcm91cC5uYW1lZEJpbmRpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9s
YXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgTmFtZWRC
aW5kaW5nIG5hbWVkQmluZGluZzsKLSAgICAgICAgICAgIG5hbWVkQmluZGluZy5lbGVtZW50TmFt
ZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAg
ICAgICAgICBuYW1lZEJpbmRpbmcuaW5kZXggPSBtX2xheW91dFtpXS5iaW5kaW5nc1tqXS5pbnRl
cm5hbE5hbWU7Ci0gICAgICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVu
aWZvcm1CdWZmZXJCaW5kaW5nJiB1bmlmb3JtQnVmZmVyQmluZGluZykgewotICAgICAgICAgICAg
ICAgIExlbmd0aEluZm9ybWF0aW9uIGxlbmd0aEluZm9ybWF0aW9uIHsgbV90eXBlTmFtZXIuZ2Vu
ZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKSwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKSwgdW5pZm9ybUJ1ZmZlckJpbmRpbmcubGVuZ3RoTmFtZSB9OwotICAgICAgICAgICAgICAg
IG5hbWVkQmluZGluZy5sZW5ndGhJbmZvcm1hdGlvbiA9IGxlbmd0aEluZm9ybWF0aW9uOwotICAg
ICAgICAgICAgfSwgWyZdKFNhbXBsZXJCaW5kaW5nJikgewotICAgICAgICAgICAgfSwgWyZdKFRl
eHR1cmVCaW5kaW5nJikgewotICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5n
JiBzdG9yYWdlQnVmZmVyQmluZGluZykgewotICAgICAgICAgICAgICAgIExlbmd0aEluZm9ybWF0
aW9uIGxlbmd0aEluZm9ybWF0aW9uIHsgbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJl
RWxlbWVudE5hbWUoKSwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgc3RvcmFnZUJ1ZmZl
ckJpbmRpbmcubGVuZ3RoTmFtZSB9OwotICAgICAgICAgICAgICAgIG5hbWVkQmluZGluZy5sZW5n
dGhJbmZvcm1hdGlvbiA9IGxlbmd0aEluZm9ybWF0aW9uOwotICAgICAgICAgICAgfSksIG1fbGF5
b3V0W2ldLmJpbmRpbmdzW2pdLmJpbmRpbmcpOwotICAgICAgICAgICAgbmFtZWRCaW5kR3JvdXAu
bmFtZWRCaW5kaW5ncy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZEJpbmRpbmcpKTsKLSAg
ICAgICAgfQotICAgICAgICBtX25hbWVkQmluZEdyb3Vwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZShuYW1lZEJpbmRHcm91cCkpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm1fZW50cnlQb2ludEl0
ZW1zLmlucHV0c1tpXS5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
TmFtZWRCdWlsdEluIG5hbWVkQnVpbHRJbjsKLSAgICAgICAgbmFtZWRCdWlsdEluLmluZGV4SW5F
bnRyeVBvaW50SXRlbXMgPSBpOwotICAgICAgICBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lID0g
bV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbV9uYW1lZEJ1aWx0SW5zLmFw
cGVuZChXVEZNb3ZlKG5hbWVkQnVpbHRJbikpOwotICAgIH0KLQotICAgIG1fcGFyYW1ldGVyVmFy
aWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVm
aW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcGFyYW1ldGVyVmFy
aWFibGVzLnVuY2hlY2tlZEFwcGVuZChtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKTsKLX0K
LQotdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCwgU2hhZGVy
U3RhZ2Ugc2hhZGVyU3RhZ2UpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91
dC5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJz
dHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICAg
ICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAg
ICAgICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRlbXM7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNp
emUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYmluZGluZyA9IG1fbGF5b3V0W2ld
LmJpbmRpbmdzW2pdOwotICAgICAgICAgICAgICAgIGlmICghYmluZGluZy52aXNpYmlsaXR5LmNv
bnRhaW5zKHNoYWRlclN0YWdlKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFt
ZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGluZGV4ID0g
bV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5pbmRleDsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byBsZW5ndGhJbmZvcm1hdGlvbiA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5h
bWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHN0
cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgs
IG1ha2VTdHJpbmcoInVpbnQyICIsIGxlbmd0aEluZm9ybWF0aW9uLT5lbGVtZW50TmFtZSwgIiBb
W2lkKCIsIGxlbmd0aEluZm9ybWF0aW9uLT5pbmRleCwgIildXTsiKSkpOwotCi0gICAgICAgICAg
ICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmlu
ZGluZ3Nbal0pOwotICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3Jlc291cmNlTWFw
LmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIHR5cGUgPSBtX2VudHJ5UG9pbnRJ
dGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS51bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSAmJiBpczxB
U1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5cGUpKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFT
VDo6UmVmZXJlbmNlVHlwZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odHlwZSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gYWRkcmVzc1NwYWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlw
ZS5hZGRyZXNzU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoYWRkcmVzc1NwYWNlLCAiICIs
IG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIild
XTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmFtZWRUeXBl
Pih0eXBlKSAmJiBpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpO
YW1lZFR5cGU+KHR5cGUpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgbmFtZWRU
eXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRU
eXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlu
ZGV4LCBtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW2lk
KCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYmluZGluZyBkb2Vzbid0
IGFwcGVhciBpbiB0aGUgc2hhZGVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAgLy8gSG93
ZXZlciwgd2UgbXVzdCBzdGlsbCBlbWl0IGEgcGxhY2Vob2xkZXIsIHNvIHN1Y2Nlc3NpdmUgaXRl
bXMgaW4gdGhlIGFyZ3VtZW50IGJ1ZmZlciBzdHJ1Y3QgaGF2ZSB0aGUgY29ycmVjdCBvZmZzZXQu
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGJpbmRpbmcgZG9lc24ndCBhcHBl
YXIgaW4gdGhlIHNoYWRlciBzb3VyY2UsIHdlIGRvbid0IGtub3cgd2hpY2ggZXhhY3QgdHlwZSB0
aGUgYmluZCBwb2ludCBzaG91bGQgaGF2ZS4KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmVm
b3JlLCB3ZSBtdXN0IHN5bnRoZXNpemUgYSB0eXBlIG91dCBvZiB0aGluIGFpci4KLSAgICAgICAg
ICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVmZmVy
QmluZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJjb25zdGFudCB2b2lkKiAiLCBlbGVtZW50
TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0s
IFsmXShTYW1wbGVyQmluZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRl
bXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJzYW1wbGVyICIsIGVs
ZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTM4NCBXZSBk
b24ndCBrbm93IHdoaWNoIHRleHR1cmUgdHlwZSB0aGUgYmluZGluZyByZXByZXNlbnRzLiBUaGlz
IGlzIG5vIGdvb2QgdmVyeSBiYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVt
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoInRleHR1cmUyZDxmbG9h
dD4gIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAg
ICAgICAgICAgICB9LCBbJl0oU3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0
cmluZygiZGV2aWNlIHZvaWQqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07
IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSksIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RkOjpzb3J0KHN0cnVjdEl0
ZW1zLmJlZ2luKCksIHN0cnVjdEl0ZW1zLmVuZCgpLCBbXShjb25zdCBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIFN0cmluZz4mIGxlZnQsIGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPiYgcmln
aHQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdC5maXJzdCA8IHJpZ2h0LmZpcnN0Owot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0g
OiBzdHJ1Y3RJdGVtcykKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRl
bnQsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLSAgICB9Ci19Ci0KLWJvb2wgRW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3Ry
aW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hIGluY2x1ZGVQcmVjZWRpbmdDb21tYSkK
LXsKLSAgICBpZiAoIW1fbGF5b3V0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGluY2x1ZGVQcmVjZWRpbmdDb21tYSA9PSBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olll
cykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIGF1dG8mIG5hbWVk
QmluZEdyb3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJkZXZpY2UgIiwgbmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRC
aW5kR3JvdXAudmFyaWFibGVOYW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3Vt
ZW50QnVmZmVySW5kZXgsICIpXV0iKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBTdHJpbmdWaWV3IGludGVybmFsVHlwZUZvclNlbWFudGljKGNvbnN0IEFTVDo6QnVpbHRJ
blNlbWFudGljJiBidWlsdEluU2VtYW50aWMpCi17Ci0gICAgc3dpdGNoIChidWlsdEluU2VtYW50
aWMudmFyaWFibGUoKSkgewotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAidWlu
dCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplOgotICAg
ICAgICByZXR1cm4gImZsb2F0IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuICJmbG9hdDQiOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1
cm4gImJvb2wiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNh
bXBsZUluZGV4OgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAidWlu
dCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFyZ2V0Ogot
ICAgICAgICByZXR1cm4geyB9OwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICBjYXNlIEFTVDo6QnVp
bHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJ1aW50
IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRo
cmVhZElEOgotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNl
bWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAg
ICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAg
ICAgICByZXR1cm4gInVpbnQiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChidWlsdElu
U2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNW
R3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJldHVybiAidWludDMiOwotICAgIH0KLX0KLQotYm9v
bCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdEluc1NpZ25hdHVyZShTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgaW5jbHVkZVByZWNlZGlu
Z0NvbW1hKQotewotICAgIGlmICghbV9uYW1lZEJ1aWx0SW5zLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGluY2x1ZGVQcmVjZWRpbmdDb21tYSA9PSBJbmNsdWRlUHJl
Y2VkaW5nQ29tbWE6OlllcykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbmFtZWRCdWlsdElucy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIp
OwotICAgICAgICBhdXRvJiBuYW1lZEJ1aWx0SW4gPSBtX25hbWVkQnVpbHRJbnNbaV07Ci0gICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWlsdEluLmlu
ZGV4SW5FbnRyeVBvaW50SXRlbXNdOwotICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBX
VEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKml0ZW0uc2VtYW50aWMpOwotICAgICAgICBh
dXRvIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRp
Yyk7Ci0gICAgICAgIGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaW50ZXJuYWxUeXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpp
dGVtLnVubmFtZWRUeXBlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJywgbmFt
ZWRCdWlsdEluLnZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdElu
U2VtYW50aWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1NFUlQoIXBhdGguaXNFbXB0
eSgpKTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAobV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT5uYW1lKCkg
PT0gcGF0aFswXSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9wYXJhbWV0
ZXJWYXJpYWJsZXNbaV0pOwotICAgICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbV9mdW5jdGlv
bkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCktPnVuaWZ5Tm9kZSgpOwotICAgICAg
ICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRU
eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9ICZkb3duY2Fz
dDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBBU1NFUlQoZm91bmQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcGF0
aC5zaXplKCk7ICsraSkgewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0g
ICAgICAgIGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKHBhdGhbaV0pOwot
ICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywg
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7Ci0gICAg
ICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5v
ZGUgPSBuZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZURlZmluaXRpb24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5
cGUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6
ZW1pdE1hbmdsZWRPdXRwdXRQYXRoKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFZlY3Rv
cjxTdHJpbmc+JiBwYXRoKQotewotICAgIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiogc3RydWN0
dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgYXV0byYgdW5pZnlOb2RlID0gbV9mdW5jdGlv
bkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgIHN0cnVjdHVyZURlZmluaXRpb24g
PSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKSk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBwYXRoKSB7Ci0g
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgYXV0byogbmV4dCA9
IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29tcG9uZW50KTsKLSAgICAgICAgQVNTRVJUKG5l
eHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwotICAgICAgICBzdHJ1Y3R1cmVEZWZp
bml0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgp
LnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkp
IHsKLSAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBl
Pih1bmlmeU5vZGUpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
bj4obmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRv
d25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJj
ZXNBbmROYW1lZEJ1aWx0SW5zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0
aW9uPDQ+IGluZGVudCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25E
ZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZnVuY3Rp
b25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSwgJyAnLCBtX3BhcmFtZXRlclZh
cmlhYmxlc1tpXSwgIjtcbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91
dC5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IG1fbmFtZWRCaW5k
R3JvdXBzW2ldLnZhcmlhYmxlTmFtZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBt
X2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgYXV0byBpdGVy
YXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwotICAg
ICAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9uYW1lZEJpbmRHcm91cHNbaV0ubmFt
ZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbikgewotICAgICAgICAgICAgICAgIGF1dG8m
IHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS5wYXRoOwot
ICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5u
YW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3Ro
RWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0
aEluZm9ybWF0aW9uLT5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGxlbmd0aFRl
bXBvcmFyeU5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0
aEluZm9ybWF0aW9uLT50ZW1wb3JhcnlOYW1lOwotCi0gICAgICAgICAgICAgICAgYXV0byYgdW5u
YW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5u
YW1lZFR5cGU7Ci0gICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPih1bm5h
bWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAic2l6ZV90ICIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUs
ICIueTtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9yYXJ5TmFt
ZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAotICAgICAgICAgICAg
ICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiIHwgIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLng7
XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
PSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBlTmFtZSwg
Iik7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgbGVuZ3RoVGVtcG9y
YXJ5TmFtZSwgIiA+IDB4RkZGRkZGRkYpXG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQs
ICIgICAgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9IDB4RkZGRkZGRkY7XG4iCi0gICAgICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCk7Ci0gICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwg
cGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgICAgICIgPSB7ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIpIH07XG4iCi0gICAg
ICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0
byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7
Ci0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ld
Lm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAgICAgICAgICBl
bWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnRO
YW1lLCAiO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3Ig
KGF1dG8mIG5hbWVkQnVpbHRJbiA6IG1fbmFtZWRCdWlsdElucykgewotICAgICAgICBhdXRvJiBp
dGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkQnVpbHRJbi5pbmRleEluRW50cnlQ
b2ludEl0ZW1zXTsKLSAgICAgICAgYXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKLSAgICAgICAgYXV0
byYgdmFyaWFibGVOYW1lID0gbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKLSAgICAgICAgYXV0
byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0u
dW5uYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0g
ICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlh
YmxlTmFtZSwgIik7XG4iKTsKLSAgICB9Ci19Ci0KLVZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zzo6VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBm
dW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlw
ZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5n
Kiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1h
bmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8
VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAg
OiBFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0
eXBlTmFtZXIsIGVudHJ5UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKQotICAgICwgbV9tYXRjaGVkVmVydGV4QXR0cmlidXRl
cyhtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAsIG1fc3RhZ2VJblN0cnVjdE5hbWUodHlw
ZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3JldHVyblN0cnVjdE5hbWUo
dHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0gICAgbV9uYW1lZFN0YWdl
SW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkVmVydGV4QXR0cmlidXRlcy5zaXpl
KCkpOwotICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogbV9tYXRjaGVkVmVydGV4QXR0cmli
dXRlcykgewotICAgICAgICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwotICAgICAgICBuYW1l
ZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGtleVZhbHVlUGFpci52YWx1ZTsKLSAg
ICAgICAgbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0
U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUlu
ZGV4ID0ga2V5VmFsdWVQYWlyLmtleS0+bWV0YWxMb2NhdGlvbjsKLSAgICAgICAgbV9uYW1lZFN0
YWdlSW5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAgIH0KLQot
ICAgIG1fbmFtZWRPdXRwdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRl
bXMub3V0cHV0cy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVt
ID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRwdXQgbmFt
ZWRPdXRwdXQ7Ci0gICAgICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIu
Z2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5nVmlldyBp
bnRlcm5hbFR5cGU7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVp
bHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBpbnRlcm5h
bFR5cGUgPSBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1h
bnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUu
aXNOdWxsKCkpCi0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gaW50
ZXJuYWxUeXBlLnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5hbWVkT3V0
cHV0LmludGVybmFsVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91
dHB1dEl0ZW0udW5uYW1lZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZShuYW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCAic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7Ci0gICAg
ewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAo
YXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRy
eVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51
bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUlu
LmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3Rh
Z2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGlu
ZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIs
IGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCi0gICAgICAgIGluZGVudCwgIn07XG5cbiIsCi0gICAgICAgIGluZGVu
dCwgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgotICAgICk7Ci0gICAgewot
ICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNb
aV07Ci0gICAgICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25h
bWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlID0g
YXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1l
bnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn07XG5cbiIpOwotICAgIAotICAgIGVtaXRSZXNv
dXJjZUhlbHBlclR5cGVzKHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OlZlcnRl
eCk7Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJl
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rp
b25OYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCAidmVydGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5h
bWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1l
LCAiIFtbc3RhZ2VfaW5dXSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWls
ZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0
dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0
aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElu
cyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4g
OiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0
ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKLSAg
ICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7Ci0gICAg
ICAgIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0
TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5h
bWUsICI7XG4iKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVO
YW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxl
TmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtc
biIpOwotICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFt
X2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8m
IGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVk
T3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9
IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgIGF1dG8mIHBhdGgg
PSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAi
ID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7Ci0gICAgICAg
IGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLSAgICB9Ci19Ci0KLUZyYWdtZW50RW50cnlQb2lu
dFNjYWZmb2xkaW5nOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBU
eXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhh
c2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3Rk
OjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiYpCi0gICAgOiBFbnRy
eVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFt
ZXIsIGVudHJ5UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpKQotICAgICwgbV9zdGFnZUluU3RydWN0TmFtZSh0eXBlTmFtZXIu
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fcmV0dXJuU3RydWN0TmFtZSh0eXBlTmFt
ZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUo
bV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
JiBpbnB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV07Ci0gICAgICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmlucHV0SXRl
bS5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgc3RhZ2VJ
bk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCppbnB1dEl0
ZW0uc2VtYW50aWMpOwotICAgICAgICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwotICAgICAg
ICBuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGk7Ci0gICAgICAgIG5hbWVk
U3RhZ2VJbi5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVs
ZW1lbnROYW1lKCk7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleCA9IHN0YWdl
SW5PdXRTZW1hbnRpYy5pbmRleCgpOwotICAgICAgICBtX25hbWVkU3RhZ2VJbnMuYXBwZW5kKFdU
Rk1vdmUobmFtZWRTdGFnZUluKSk7Ci0gICAgfQotCi0gICAgbV9uYW1lZE91dHB1dHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRw
dXRzW2ldOwotICAgICAgICBOYW1lZE91dHB1dCBuYW1lZE91dHB1dDsKLSAgICAgICAgbmFtZWRP
dXRwdXQuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVt
ZW50TmFtZSgpOwotICAgICAgICBTdHJpbmdWaWV3IGludGVybmFsVHlwZTsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVt
LnNlbWFudGljKSkKLSAgICAgICAgICAgIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNl
bWFudGljKFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRp
YykpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgIG5h
bWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBpbnRlcm5hbFR5cGUudG9TdHJpbmcoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqb3V0cHV0SXRlbS51bm5hbWVkVHlwZSk7Ci0g
ICAgICAgIG1fbmFtZWRPdXRwdXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkT3V0cHV0
KSk7Ci0gICAgfQotfQotCi12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4g
aW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBt
X3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25T
Y29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1f
bmFtZWRTdGFnZUlucykgewotICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1l
ZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAg
ICAgIGF1dG8gYXR0cmlidXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwg
JyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIodXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xu
Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
IGluZGVudCwgIn07XG5cbiIsCi0gICAgICAgIGluZGVudCwgInN0cnVjdCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICIge1xuIgotICAgICk7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3Bl
IHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgb3V0cHV0
SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBp
bnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAg
ICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFt
ZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91
dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwg
IjtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCwgIn07XG5cbiIpOwotCi0gICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRl
ciwgaW5kZW50LCBTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotfQotCi12b2lkIEZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PiBp
bmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAiZnJhZ21lbnQgIiwg
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1
Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7Ci0g
ICAgZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdD
b21tYTo6WWVzKTsKLSAgICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5j
bHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4i
KTsKLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0g
ICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5k
ZW50KTsKLQotICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7
Ci0gICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFn
ZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBhdGg7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnRO
YW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGluZGVudCk7Ci0gICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxk
ZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbV9zdGFnZUlu
UGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgIH0KLX0KLQotdm9p
ZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFu
Z2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVu
dCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFt
ZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1sw
XS5wYXRoLnNpemUoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRw
dXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQs
IG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFi
bGVOYW1lLCAiO1xuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0g
ICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5h
bFR5cGVOYW1lOwotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZh
cmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICco
JywgaW5wdXRWYXJpYWJsZU5hbWUpOwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3Ry
aW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7
Ci0gICAgfQotfQotCi1Db21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjpDb21wdXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRp
b24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBv
aW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVz
b3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5h
bWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpCi0gICAgOiBFbnRyeVBvaW50U2NhZmZv
bGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGVudHJ5UG9p
bnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUpKQotewotfQotCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRI
ZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBp
bmRlbnQpCi17Ci0gICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRlciwgaW5k
ZW50LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7Ci19Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBN
YW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQot
ewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImtlcm5lbCB2b2lkICIsIGZ1bmN0
aW9uTmFtZSwgJygnKTsKLSAgICBib29sIGFkZGVkVG9TaWduYXR1cmUgPSBlbWl0UmVzb3VyY2VT
aWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7Ci0gICAg
ZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIGFkZGVkVG9TaWduYXR1cmUgPyBJ
bmNsdWRlUHJlY2VkaW5nQ29tbWE6OlllcyA6IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6Tm8pOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFt
ZWRCdWlsdElucyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwotfQotCi12b2lkIENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFi
bGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjU2Mjg4Y2JlYTI1NzFhZjFkMDlkMTUx
MTIzMTU4MGJkNWViZTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1z
dHJ1Y3QgRW50cnlQb2ludEl0ZW1zOwotY2xhc3MgSW50cmluc2ljczsKLQotbmFtZXNwYWNlIE1l
dGFsIHsKLQotY2xhc3MgVHlwZU5hbWVyOwotCi1jbGFzcyBFbnRyeVBvaW50U2NhZmZvbGRpbmcg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHZpcnR1YWwgfkVu
dHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgdm9pZCBlbWl0
SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5h
bWUsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRVbnBhY2soU3Ry
aW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRQ
YWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFibGVO
YW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotCi0gICAgVmVj
dG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBwYXJhbWV0ZXJWYXJpYWJsZXMoKSB7IHJldHVybiBt
X3BhcmFtZXRlclZhcmlhYmxlczsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlQb2ludFNjYWZm
b2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYs
IEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFw
LCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpOwotCi0gICAgdm9pZCBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhT
dHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4sIFNoYWRlclN0YWdlKTsKLQotICAgIGVudW0g
Y2xhc3MgSW5jbHVkZVByZWNlZGluZ0NvbW1hIHsKLSAgICAgICAgWWVzLAotICAgICAgICBObwot
ICAgIH07Ci0gICAgYm9vbCBlbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIElu
Y2x1ZGVQcmVjZWRpbmdDb21tYSk7Ci0gICAgYm9vbCBlbWl0QnVpbHRJbnNTaWduYXR1cmUoU3Ry
aW5nQnVpbGRlciYsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSk7Ci0KLSAgICB2b2lkIGVtaXRNYW5n
bGVkSW5wdXRQYXRoKFN0cmluZ0J1aWxkZXImLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCk7Ci0gICAg
dm9pZCBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoU3RyaW5nQnVpbGRlciYsIFZlY3RvcjxTdHJpbmc+
JiBwYXRoKTsKLSAgICB2b2lkIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKFN0
cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pik7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYgbV9mdW5jdGlvbkRlZmluaXRpb247Ci0gICAgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNz
OwotICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1zJiBtX2Vu
dHJ5UG9pbnRJdGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiBtX3Jlc291cmNl
TWFwOwotICAgIExheW91dCYgbV9sYXlvdXQ7Ci0gICAgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFy
aWFibGVOYW1lKCk+IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lOwotCi0gICAgc3RydWN0IExl
bmd0aEluZm9ybWF0aW9uIHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVs
ZW1lbnROYW1lOwotICAgICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHRlbXBvcmFyeU5hbWU7Ci0g
ICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmluZGluZyB7
Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAg
ICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoSW5mb3JtYXRp
b24+IGxlbmd0aEluZm9ybWF0aW9uOwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmluZEdyb3Vw
IHsKLSAgICAgICAgTWFuZ2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7Ci0gICAgICAgIE1hbmdsZWRW
YXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lOwotICAgICAgICBWZWN0b3I8TmFtZWRCaW5kaW5nPiBu
YW1lZEJpbmRpbmdzOwotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudEJ1ZmZlckluZGV4OwotICAg
IH07Ci0gICAgVmVjdG9yPE5hbWVkQmluZEdyb3VwPiBtX25hbWVkQmluZEdyb3VwczsgLy8gUGFy
YWxsZWwgdG8gbV9sYXlvdXQKLQotICAgIHN0cnVjdCBOYW1lZEJ1aWx0SW4gewotICAgICAgICBz
aXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxlTmFt
ZSB2YXJpYWJsZU5hbWU7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRCdWlsdEluPiBtX25hbWVk
QnVpbHRJbnM7Ci0KLSAgICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV9wYXJhbWV0ZXJW
YXJpYWJsZXM7Ci19OwotCi1jbGFzcyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmluYWwg
OiBwdWJsaWMgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwg
VHlwZU5hbWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYg
cmVzb3VyY2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgp
PiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBz
aXplX3Q+JiBtYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB+VmVydGV4RW50
cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQgZW1p
dEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1l
LCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1
aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJp
bmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFu
Z2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotCi0gICAgSGFzaE1h
cDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+JiBtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzOwot
ICAgIE1hbmdsZWRUeXBlTmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRUeXBl
TmFtZSBtX3JldHVyblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lOwotCi0gICAgc3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAgICAgIHNp
emVfdCBpbmRleEluRW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxl
bWVudE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4Owot
ICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkU3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwotCi0gICAg
c3RydWN0IE5hbWVkT3V0cHV0IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1l
IGVsZW1lbnROYW1lOwotICAgICAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRlcm5hbFR5
cGVOYW1lOwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0cHV0czsK
LX07Ci0KLWNsYXNzIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nIGZpbmFsIDogcHVibGlj
IEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgRnJhZ21lbnRFbnRyeVBvaW50
U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5h
bWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3Vy
Y2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNp
emVfdD4mIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKLSAgICB2aXJ0dWFsIH5GcmFnbWVudEVu
dHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGVt
aXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFjayhTdHJpbmdC
dWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFBhY2soU3Ry
aW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1h
bmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLQotICAgIE1hbmds
ZWRUeXBlTmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRUeXBlTmFtZSBtX3Jl
dHVyblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lOwotCi0gICAgc3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAgICAgIHNpemVfdCBpbmRl
eEluRW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUg
ZWxlbWVudE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4OwotICAgIH07Ci0g
ICAgVmVjdG9yPE5hbWVkU3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwotCi0gICAgc3RydWN0IE5h
bWVkT3V0cHV0IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnRO
YW1lOwotICAgICAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRlcm5hbFR5cGVOYW1lOwot
ICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0cHV0czsKLX07Ci0KLWNs
YXNzIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmluYWwgOiBwdWJsaWMgRW50cnlQb2lu
dFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5
UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlv
dXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUpOwotICAgIHZpcnR1YWwgfkNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmco
KSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5n
QnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1
cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBv
dmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9u
PDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVk
VmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJ
bmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci19OwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiNDU5MGE1NWZjMzE3YjI2MDIzMWRlMzhi
NDIwZmZhNjk3ZGEzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25Xcml0ZXIuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZy5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNM
TmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1l
dGFsIHsKLQotc3RhdGljIHZvaWQgZGVjbGFyZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmlu
Z0J1aWxkZXIsIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbiwg
VHlwZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwg
TWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZykKLXsKLSAgICBpZiAoZnVuY3Rp
b25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIGl0ZXJhdG9yID0gZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24p
OwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBmdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25E
ZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkp
KTsKLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLX0KLQotc3RydWN0
IFZhcmlhYmxlIHsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG5hbWU7Ci0gICAgTWFuZ2xlZFR5
cGVOYW1lIHR5cGU7Ci19OwotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgOiBwdWJs
aWMgVmlzaXRvciB7Ci0gICAgY2xhc3MgSG9pc3RlZFZhcmlhYmxlQ29sbGVjdG9yIDogcHVibGlj
IFZpc2l0b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgIEhvaXN0ZWRWYXJpYWJsZUNvbGxl
Y3RvcihGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXImIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcikK
LSAgICAgICAgICAgIDogZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKGZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2aXNpdChBU1Q6
OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICAgICAgewotICAg
ICAgICAgICAgVmVjdG9yPFZhcmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsKLSAgICAgICAgICAgIGJv
b2wgaXNWb2lkID0gbWF0Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwgZnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyLm1faW50cmluc2ljcy52b2lkVHlwZSgpKTsKLSAgICAgICAgICAg
IGlmICghaXNWb2lkKQotICAgICAgICAgICAgICAgICsrc2l6ZTsKLSAgICAgICAgICAgIHZhcmlh
Ymxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotCi0gICAgICAgICAgICBmb3IgKGF1
dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIHR5cGUgPSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKGFyZ3VtZW50LT5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBuYW1lID0gZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQoVmFy
aWFibGUgeyBuYW1lLCB0eXBlIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
IWlzVm9pZCkKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKFZhcmlh
YmxlIHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
LCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSB9KTsKLQotICAgICAgICAgICAgdG9Ib2lz
dC5hZGQoJmNhbGxFeHByZXNzaW9uLCBXVEZNb3ZlKHZhcmlhYmxlcykpOwotCi0gICAgICAgICAg
ICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRl
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBWZWN0b3I8VmFyaWFibGU+IHZhcmlh
YmxlczsKLSAgICAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoVmFyaWFibGUgeyBmdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnJlYWRNb2RpZnlXcml0
ZS5vbGRWYWx1ZSgpLnR5cGUoKSkgfSk7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKFZh
cmlhYmxlIHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpLCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCpyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWUoKS50eXBlKCkpIH0pOwotCi0gICAgICAgICAg
ICB0b0hvaXN0LmFkZCgmcmVhZE1vZGlmeVdyaXRlLCBXVEZNb3ZlKHZhcmlhYmxlcykpOwotCi0g
ICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChyZWFkTW9kaWZ5V3JpdGUpOwotICAgICAgICB9Ci0K
LSAgICAgICAgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyJiBmdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI7Ci0gICAgICAgIEhhc2hNYXA8QVNUOjpFeHByZXNzaW9uKiwgVmVjdG9yPFZhcmlhYmxlPj4g
dG9Ib2lzdDsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5
cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1h
bmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIExheW91dCYgbGF5b3V0KQotICAg
ICAgICA6IG1fc3RyaW5nQnVpbGRlcihzdHJpbmdCdWlsZGVyKQotICAgICAgICAsIG1faW50cmlu
c2ljcyhpbnRyaW5zaWNzKQotICAgICAgICAsIG1fdHlwZU5hbWVyKHR5cGVOYW1lcikKLSAgICAg
ICAgLCBtX2Z1bmN0aW9uTWFwcGluZyhmdW5jdGlvbk1hcHBpbmcpCi0gICAgICAgICwgbV9sYXlv
dXQobGF5b3V0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mKSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgPSAwOwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVt
ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkNvbnRpbnVlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1
cm4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rmxv
YXRMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFs
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2Fs
bEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0K
LSAgICBlbnVtIGNsYXNzIExvb3BDb25kaXRpb25Mb2NhdGlvbiB7Ci0gICAgICAgIEJlZm9yZUJv
ZHksCi0gICAgICAgIEFmdGVyQm9keQotICAgIH07Ci0gICAgdm9pZCBlbWl0TG9vcChMb29wQ29u
ZGl0aW9uTG9jYXRpb24sIEFTVDo6RXhwcmVzc2lvbiogY29uZGl0aW9uRXhwcmVzc2lvbiwgQVNU
OjpFeHByZXNzaW9uKiBpbmNyZW1lbnQsIEFTVDo6U3RhdGVtZW50JiBib2R5KTsKLQotICAgIHZv
aWQgZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYp
OwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSB7
IHJldHVybiB7IG1fdmFyaWFibGVDb3VudCsrIH07IH0KLQotICAgIGVudW0gY2xhc3MgQnJlYWtD
b250ZXh0IHsKLSAgICAgICAgTG9vcCwKLSAgICAgICAgU3dpdGNoCi0gICAgfTsKLQotICAgIHN0
ZDo6b3B0aW9uYWw8QnJlYWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0NvbnRleHQ7Ci0KLSAgICBT
dHJpbmdCdWlsZGVyJiBtX3N0cmluZ0J1aWxkZXI7Ci0gICAgSW50cmluc2ljcyYgbV9pbnRyaW5z
aWNzOwotICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7Ci0gICAgSGFzaE1hcDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlvbk1hcHBpbmc7
Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBNYW5nbGVkVmFyaWFibGVO
YW1lPiBtX3ZhcmlhYmxlTWFwcGluZzsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50
U2NhZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwotICAgIExheW91dCYgbV9sYXlv
dXQ7Ci0gICAgdW5zaWduZWQgbV92YXJpYWJsZUNvdW50IHsgMCB9OwotICAgIHN0ZDo6b3B0aW9u
YWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlh
YmxlOwotICAgIEluZGVudGF0aW9uPDQ+IG1faW5kZW50IHsgMCB9OwotICAgIEhhc2hNYXA8QVNU
OjpFeHByZXNzaW9uKiwgVmVjdG9yPFZhcmlhYmxlPj4gbV9ob2lzdGVkVmFyaWFibGVzOwotfTsK
LQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpCi17Ci0gICAgLy8gV2UgaW5saW5lIG5hdGl2ZSBmdW5jdGlvbiBjYWxs
cy4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0KLSAgICB7Ci0gICAgICAgIEhv
aXN0ZWRWYXJpYWJsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnRoaXMpOwotICAgICAgICBjb2xsZWN0
b3IuVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgbV9ob2lzdGVk
VmFyaWFibGVzID0gV1RGTW92ZShjb2xsZWN0b3IudG9Ib2lzdCk7Ci0gICAgfQotCi0gICAgYXV0
byBkZWZpbmVIb2lzdGVkVmFyaWFibGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2ZWN0b3IgOiBtX2hvaXN0ZWRWYXJpYWJsZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byB2YXJpYWJsZSA6IHZlY3RvcikKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCB2YXJpYWJsZS50eXBlLCAnICcsIHZhcmlhYmxlLm5hbWUsICI7
XG4iKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9mdW5jdGlv
bk1hcHBpbmcuZmluZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3Ig
IT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24u
ZW50cnlQb2ludFR5cGUoKSkgewotICAgICAgICBhdXRvIGVudHJ5UG9pbnRTY2FmZm9sZGluZyA9
IGNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAg
ICBpZiAoIWVudHJ5UG9pbnRTY2FmZm9sZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBXVEZNb3ZlKGVudHJ5UG9pbnRTY2FmZm9sZGlu
Zyk7Ci0gICAgICAgIAotICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdEhlbHBl
clR5cGVzKG1fc3RyaW5nQnVpbGRlciwgbV9pbmRlbnQpOwotICAgICAgICBtX2VudHJ5UG9pbnRT
Y2FmZm9sZGluZy0+ZW1pdFNpZ25hdHVyZShtX3N0cmluZ0J1aWxkZXIsIGl0ZXJhdG9yLT52YWx1
ZSwgbV9pbmRlbnQpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
e1xuIik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9p
bmRlbnQpOwotCi0gICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFVucGFj
ayhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsKLSAgICAgICAgCi0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBw
aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmctPnBhcmFtZXRlclZhcmlhYmxlcygpW2ldKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0KLSAgICAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuXG4iKTsKLQotICAgICAg
ICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IG51bGxwdHI7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID09IG51bGxwdHIpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAn
KCcpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAgICAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBhdXRvJiBw
YXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwotICAgICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAg
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcGFyYW1ldGVy
LCBwYXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcs
IHBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIilcbiIpOwotCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIntcbiIpOwotCi0g
ICAgICAgIGRlZmluZUhvaXN0ZWRWYXJpYWJsZXMoKTsKLQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ9XG4iKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRl
bWVudCkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spCi17Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIntcbiIpOwotICAgIHsKLSAgICAgICAgSW5k
ZW50YXRpb25TY29wZSBzY29wZShtX2luZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RhdGVt
ZW50IDogYmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHN0YXRlbWVudCk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQs
ICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
QnJlYWsmKQotewotICAgIEFTU0VSVChtX2N1cnJlbnRCcmVha0NvbnRleHQpOwotICAgIHN3aXRj
aCAoKm1fY3VycmVudEJyZWFrQ29udGV4dCkgewotICAgIGNhc2UgQnJlYWtDb250ZXh0OjpTd2l0
Y2g6Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJicmVhaztcbiIp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJyZWFrQ29udGV4dDo6TG9vcDoKLSAgICAgICAg
QVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgKm1fYnJlYWtPdXRP
ZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IHRydWU7XG4iLAotICAgICAgICAgICAgbV9p
bmRlbnQsICJicmVhaztcbiIKLSAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpDb250aW51ZSYpCi17
Ci0gICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImJyZWFrO1xuIik7Ci19Ci0KLXZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJbW2NsYW5nOjpmYWxsdGhyb3VnaF1dO1xuIik7IC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA4IE1ha2Ugc3VyZSB0aGlz
IGlzIG9rYXkuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGRvIG5vdGhpbmcgYW5kIGp1c3QgcmV0
dXJuIGhlcmUgaW5zdGVhZC4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVt
aXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbiBsb29wQ29uZGl0aW9uTG9jYXRpb24sIEFTVDo6
RXhwcmVzc2lvbiogY29uZGl0aW9uRXhwcmVzc2lvbiwgQVNUOjpFeHByZXNzaW9uKiBpbmNyZW1l
bnQsIEFTVDo6U3RhdGVtZW50JiBib2R5KQotewotICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9u
YWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1
cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwotCi0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgbV9pbmRlbnQsICJib29sICIsICpt
X2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIsCi0gICAg
ICAgIG1faW5kZW50LCAid2hpbGUgKHRydWUpIHtcbiIKLSAgICApOwotICAgIHsKLSAgICAgICAg
SW5kZW50YXRpb25TY29wZSB3aGlsZVNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICBpZiAobG9v
cENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3JlQm9keSAm
JiBjb25kaXRpb25FeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAgICAgICAg
ICAgICAgIiAgICBicmVhaztcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX2luZGVudCwgImRvIHtcbiIpOwotICAgICAgICBTZXRGb3JTY29wZTxzdGQ6
Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRl
eHQsIEJyZWFrQ29udGV4dDo6TG9vcCk7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50
YXRpb25TY29wZSBkb1Njb3BlKG1faW5kZW50KTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChib2R5KTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1f
aW5kZW50LCAifSB3aGlsZShmYWxzZSk7IFxuIik7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgKLSAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCIsICptX2JyZWFrT3V0T2ZDdXJy
ZW50TG9vcEVhcmx5VmFyaWFibGUsICIpXG4iLAotICAgICAgICAgICAgbV9pbmRlbnQsICIgICAg
YnJlYWs7XG4iKTsKLQotICAgICAgICBpZiAoaW5jcmVtZW50KSB7Ci0gICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCIoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
KmluY3JlbWVudCk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BD
b25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9pbmRl
bnQsICJpZiAoISgiKTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9u
RXhwcmVzc2lvbik7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAg
ICAgICAgICAgICIpKVxuIiwKLSAgICAgICAgICAgICAgICAiICAgIGJyZWFrO1xuIik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSBc
biIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpEb1do
aWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0
aW9uOjpBZnRlckJvZHksICZkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpLCBudWxscHRyLCBkb1do
aWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBlbWl0TG9vcChMb29wQ29uZGl0
aW9uTG9jYXRpb246OkJlZm9yZUJvZHksICZ3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSwgbnVsbHB0
ciwgd2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2luZGVudCwgIntcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBz
Y29wZShtX2luZGVudCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmluaXRp
YWxpemF0aW9uKCkpOwotICAgICAgICBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb246OkJl
Zm9yZUJvZHksIGZvckxvb3AuY29uZGl0aW9uKCksIGZvckxvb3AuaW5jcmVtZW50KCksIGZvckxv
b3AuYm9keSgpKTsKLSAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwg
In1cbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJ
ZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCwgImlmICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29u
ZGl0aW9uYWwoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsKLQotICAg
IHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBpZlNjb3BlKG1faW5kZW50KTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotCi0gICAgaWYg
KGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX2luZGVudCwgIn0gZWxzZSB7XG4iKTsKLSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50
YXRpb25TY29wZSBlbHNlU2NvcGUobV9pbmRlbnQpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQp
Ci17Ci0gICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8gdGVt
cFJldHVybk5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsgCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKS0+cmVzb2x2ZWRUeXBlKCkpLCAnICcsIHRlbXBSZXR1
cm5OYW1lLCAiID0gIik7IAotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJldHVyblN0YXRl
bWVudC52YWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0K
LSAgICAgICAgaWYgKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nKSB7Ci0gICAgICAgICAgICBhdXRv
IHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAg
bV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRQYWNrKG1fc3RyaW5nQnVpbGRlciwgdGVtcFJl
dHVybk5hbWUsIHZhcmlhYmxlTmFtZSwgbV9pbmRlbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCwgInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5k
ZW50LCAicmV0dXJuICIsIHRlbXBSZXR1cm5OYW1lLCAiO1xuIik7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm47XG4iKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50
JiBzd2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVu
dCwgInN3aXRjaCAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52
YWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHsiKTsKLQotICAgIHsKLSAg
ICAgICAgSW5kZW50YXRpb25TY29wZSBzd2l0Y2hTY29wZShtX2luZGVudCk7Ci0gICAgICAgIGZv
ciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQotICAg
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCi17Ci0g
ICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAiY2FzZSAiKTsKLSAgICAgICAgZW1pdENvbnN0YW50RXhwcmVzc2lvblN0
cmluZygqc3dpdGNoQ2FzZS52YWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiOlxuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9p
bmRlbnQsICJkZWZhdWx0OlxuIik7Ci0gICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVh
a0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRl
eHQ6OlN3aXRjaCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2soKSk7
Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU4MTIgRmlndXJlIG91dCB3aGV0aGVyIHdlIG5lZWQgdG8gYnJlYWsgb3IgZmFsbHRocm91Z2gu
Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsK
LSAgICBWaXNpdG9yOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFs
JiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShpbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1l
LCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRU
eXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmds
ZWRUeXBlTmFtZSwgIj4oIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVy
YWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9hdExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwg
Ij4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkK
LXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShib29sZWFuTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0
ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBl
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgYXV0byBtYW5nbGVk
VHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
bmdsZWRUeXBlTmFtZSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlv
bk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsK
LX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbikKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIE1hbmdsZWRTdHJ1Y3R1
cmVFbGVtZW50TmFtZSBtYW5nbGVkRmllbGROYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JTdHJ1Y3R1cmVFbGVtZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIpLT4iLCBtYW5nbGVkRmllbGROYW1lKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsK
LSAgICBhdXRvJiB0eXBlID0gZG90RXhwcmVzc2lvbi5iYXNlKCkucmVzb2x2ZWRUeXBlKCkudW5p
ZnlOb2RlKCk7Ci0KLSAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKSkg
ewotICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAgYXV0byogc3RydWN0dXJlRWxlbWVudCA9
IHN0cnVjdHVyZURlZmluaXRpb24uZmluZChkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpKTsKLSAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICBhdXRvIGVsZW1lbnROYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpzdHJ1Y3R1cmVF
bGVtZW50KTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIikuIiwgZWxlbWVudE5hbWUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIFN0cmluZyBlbGVtZW50TmFtZSA9IGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCk7Ci0gICAg
ICAgIGlmIChlbGVtZW50TmFtZSA9PSAibGVuZ3RoIiAmJiAoaXM8QVNUOjpBcnJheVJlZmVyZW5j
ZVR5cGU+KHR5cGUpIHx8IGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSB8fCAoaXM8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSkpIHsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZT4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4
cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpLmxlbmd0aCIpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4o
dHlwZSkpIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0g
ICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsK
LSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih0eXBlKS5udW1FbGVtZW50cygpLCAiKSIpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAg
ICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25jYXN0PEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS52ZWN0b3JTaXplKCksICIpIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcoJyk7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5i
YXNlKCkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS4iLCBlbGVtZW50
TmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAg
IGF1dG8mIHR5cGUgPSBpbmRleEV4cHJlc3Npb24uYmFzZSgpLnJlc29sdmVkVHlwZSgpLnVuaWZ5
Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkpIHsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIikucG9pbnRlclsoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4
cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpIDwgKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9u
LmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikubGVuZ3RoID8gIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNz
aW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAwXSIpOwotICAgIH0g
ZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVz
c2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLmRhdGEoKVso
Iik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHBy
ZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDwgIiwgZG93bmNh
c3Q8QVNUOjpBcnJheVR5cGU+KHR5cGUpLm51bUVsZW1lbnRzKCksICIgPyAiKTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA6IDBdIik7Ci0gICAgfSBlbHNlIGlmIChp
czxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgbmF0
aXZlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsKLSAg
ICAgICAgdW5zaWduZWQgc2l6ZTsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUuaXNNYXRyaXgoKSkK
LSAgICAgICAgICAgIHNpemUgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Q29sdW1ucygpOwot
ICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlLmlzVmVjdG9yKCkpCi0gICAgICAgICAgICBzaXpl
ID0gbmF0aXZlVHlwZS52ZWN0b3JTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmJh
c2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilbKCIpOwotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIDwgIiwgc2l6ZSwgIikgPyAoIik7Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkp
OwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogMF0iKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCi19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlh
YmxlRGVjbGFyYXRpb24pCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgp
KTsKLSAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZ2YXJpYWJsZURlY2xh
cmF0aW9uLCB2YXJpYWJsZU5hbWUpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTgxNjAgSW1wbGVtZW50IHF1YWxpZmllcnMuCi0gICAgaWYgKHZh
cmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlh
YmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKTsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkp
OwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVO
YW1lLCAiID0geyB9O1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKScpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICgiKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBp
dGVyID0gbV9ob2lzdGVkVmFyaWFibGVzLmZpbmQoJmNhbGxFeHByZXNzaW9uKTsKLSAgICBSRUxF
QVNFX0FTU0VSVChpdGVyICE9IG1faG9pc3RlZFZhcmlhYmxlcy5lbmQoKSk7Ci0gICAgYXV0byYg
dmFyaWFibGVzID0gaXRlci0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbEV4cHJlc3Np
b24uYXJndW1lbnRzKCkuc2l6ZSgpIDw9IHZhcmlhYmxlcy5zaXplKCkpOwotICAgIFZlY3RvcjxN
YW5nbGVkVmFyaWFibGVOYW1lPiBhcmd1bWVudE5hbWVzOwotCi0gICAgTWFuZ2xlZFZhcmlhYmxl
TmFtZSByZXN1bHROYW1lOwotICAgIGlmICghbWF0Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZl
ZFR5cGUoKSwgbV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAgICByZXN1bHROYW1lID0g
dmFyaWFibGVzLmxhc3QoKS5uYW1lOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXJndW1lbnROYW1lcy5hcHBlbmQodmFyaWFibGVzW2ld
Lm5hbWUpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZhcmlhYmxlc1tpXS5uYW1l
LCAiID0gKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Npb24uYXJn
dW1lbnRzKClbaV0pOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiKTsKLSAg
ICB9Ci0KLSAgICBpZiAoaXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhw
cmVzc2lvbi5mdW5jdGlvbigpKSkgewotICAgICAgICBpbmxpbmVOYXRpdmVGdW5jdGlvbihtX3N0
cmluZ0J1aWxkZXIsIGRvd25jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKSksIGFyZ3VtZW50TmFtZXMsIHJlc3VsdE5hbWUsIG1fdHlw
ZU5hbWVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9mdW5jdGlv
bk1hcHBpbmcuZmluZCgmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSk7Ci0gICAgICAgIEFTU0VS
VChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJsZXNbaV0u
bmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
ICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4
cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGJvb2wg
cmFuT25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNvbW1hRXhwcmVz
c2lvbi5saXN0KCkpIHsKLSAgICAgICAgaWYgKHJhbk9uY2UpCi0gICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICByYW5PbmNlID0gdHJ1ZTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiooIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIigoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHBy
ZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAg
c3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6TG9naWNh
bEV4cHJlc3Npb246OlR5cGU6OkFuZDoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICYmICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246
OlR5cGU6Ok9yOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKSkiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNz
aW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiEoIik7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uKQotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1hZGUgdG8g
d29yay4gSXQgcHJvYmFibHkgc2hvdWxkIGJlIHVzaW5nIHRoZSBsYXN0IGxlZnRWYWx1ZSB0b28u
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODgzOAot
ICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmIChp
czxBU1Q6OlBvaW50ZXJUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1
ZSgpLnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
bmdsZWRUeXBlTmFtZSwgInsgIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAxIH0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPiht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkg
ewotICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4obWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsgIik7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxl
ZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLmRhdGEoKSwgIiwg
YXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICIgfSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsgJiIpOwotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUo
KSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAgfQotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCImKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlUG9pbnRlckV4cHJlc3Np
b24ubGVmdFZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKQotewotICAgIC8qCi0gICAgICogIDEuIEV2YWx1
YXRlIG1fbGVmdFZhbHVlCi0gICAgICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFs
dWUKLSAgICAgKiAgMy4gRXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Npb24KLSAgICAgKiAgNC4g
QXNzaWduIHRoZSByZXN1bHQgdG8gbV9uZXdWYWx1ZQotICAgICAqICA1LiBBc3NpZ24gdGhlIHJl
c3VsdCB0byBtX2xlZnRWYWx1ZQotICAgICAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Np
b24KLSAgICAgKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQKLSAgICAgKi8KLQotICAgIGF1dG8gaXRl
ciA9IG1faG9pc3RlZFZhcmlhYmxlcy5maW5kKCZyZWFkTW9kaWZ5V3JpdGUpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGl0ZXIgIT0gbV9ob2lzdGVkVmFyaWFibGVzLmVuZCgpKTsKLSAgICBhdXRvJiB2
YXJpYWJsZXMgPSBpdGVyLT52YWx1ZTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YXJpYWJsZXMuc2l6
ZSgpID09IDIpOwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvbGRWYWx1ZVZhcmlhYmxlID0g
dmFyaWFibGVzWzBdLm5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBuZXdWYWx1ZVZhcmlh
YmxlID0gdmFyaWFibGVzWzFdLm5hbWU7Ci0KLSAgICBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnJl
YWRNb2RpZnlXcml0ZS5vbGRWYWx1ZSgpLCBvbGRWYWx1ZVZhcmlhYmxlKTsKLSAgICBtX3Zhcmlh
YmxlTWFwcGluZy5hZGQoJnJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZSgpLCBuZXdWYWx1ZVZhcmlh
YmxlKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQob2xkVmFsdWVWYXJpYWJsZSwgIiA9ICIpOwotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkpOwotCi0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiLCBuZXdWYWx1ZVZhcmlhYmxlLCAiID0gIik7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0KLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFk
TW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9
ICIsIG5ld1ZhbHVlVmFyaWFibGUsICIsICIpOwotCi0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJl
YWRNb2RpZnlXcml0ZS5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJl
c3Npb24ucHJlZGljYXRlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgPyAoIik7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9u
KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgOiAoIik7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewot
ICAgIEFTU0VSVCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBhdXRvIGl0ZXJh
dG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgp
KTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwotCi0g
ICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB2YXJpYWJsZU5hbWUgPSBpdGVyYXRvci0+dmFsdWU7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJsZU5hbWUpOwotfQotCi12b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKQotewotICAgIGNvbnN0YW50RXhw
cmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbJl0oQVNUOjpJbnRlZ2Vy
TGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52
YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9h
dExpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoZmxvYXRMaXRl
cmFsLnZhbHVlKCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpCb29sZWFuTGl0ZXJh
bCYgYm9vbGVhbkxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChib29sZWFuTGl0ZXJhbC52YWx1
ZSgpKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInRydWUiKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJm
YWxzZSIpOwotICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAgICAgQVNTRVJUKGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlv
bigpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZp
bml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVt
YmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOwotICAg
ICAgICB9Ci0gICAgKSk7Ci19Ci0KLWNsYXNzIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
ciBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewotcHVibGljOgotICAg
IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1h
cDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rp
b25NYXBwaW5nLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5
b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1
aWxkZXIsIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlvdXQpCi0g
ICAgICAgICwgbV9tYXRjaGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGljcykpCi0g
ICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNj
YWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mKSBvdmVycmlkZTsKLQotICAgIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MgbV9tYXRjaGVk
U2VtYW50aWNzOwotfTsKLQotc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4g
UmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRp
bmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBh
dXRvIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSA9IFt0aGlzXSgpIC0+IE1hbmdsZWRWYXJpYWJs
ZU5hbWUgewotICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7
Ci0gICAgfTsKLSAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRp
Y3MudmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92
ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpOwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RnJh
Z21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5z
aWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQ
b2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwg
bV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2Vt
YW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotY2xhc3MgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewotcHVibGljOgotICAgIENvbXB1dGVGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYg
aW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTWF0Y2hl
ZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLSAg
ICAgICAgOiBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgaW50cmluc2lj
cywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIGxheW91dCkKLSAgICAgICAgLCBtX21hdGNo
ZWRTZW1hbnRpY3MoV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSkKLSAgICB7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0
ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRl
OwotCi0gICAgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MgbV9tYXRjaGVkU2VtYW50aWNzOwotfTsK
LQotc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUgPSBbdGhpc10oKSAtPiBNYW5nbGVkVmFyaWFibGVOYW1lIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIH07Ci0gICAg
aWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVu
Y3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1h
bnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1f
bGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1zdGF0aWMgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBN
YW5nbGVkRnVuY3Rpb25OYW1lPiBnZW5lcmF0ZU1ldGFsRnVuY3Rpb25zTWFwcGluZyhQcm9ncmFt
JiBwcm9ncmFtKQotewotICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9ucyA9IDA7Ci0gICAgSGFzaE1h
cDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiBmdW5jdGlv
bk1hcHBpbmc7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1
bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGZ1bmN0aW9u
TWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IG51
bUZ1bmN0aW9ucysrIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIHJldHVybiBmdW5jdGlvbk1hcHBpbmc7Ci19
Ci0KLXN0YXRpYyB2b2lkIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgY29u
c3QgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiYgcmVhY2hhYmxlRnVuY3Rpb25z
LCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+
JiBmdW5jdGlvbk1hcHBpbmcpCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24g
OiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAoIWZ1bmN0aW9u
RGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUoKSAmJiByZWFjaGFibGVGdW5jdGlvbnMuY29udGFp
bnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAgICBkZWNsYXJlRnVuY3Rpb24oc3Ry
aW5nQnVpbGRlciwgZnVuY3Rpb25EZWZpbml0aW9uLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGlu
Zyk7Ci0gICAgfQotCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci19Ci0KLWNsYXNz
IFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotcHVi
bGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlYWNo
YWJsZUZ1bmN0aW9ucy5hZGQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlY2xh
cmF0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNh
bGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2Fs
bEV4cHJlc3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNh
bGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0
aW9uKCkpKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+
IHRha2VSZWFjaGFibGVGdW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVu
Y3Rpb25zKTsgfQotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKj4gbV9yZWFjaGFibGVGdW5jdGlvbnM7Ci19OwotCi1SZW5kZXJNZXRhbEZ1bmN0aW9uRW50
cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRjaGVkUmVuZGVyU2Vt
YW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgYXV0byYg
dmVydGV4U2hhZGVyRW50cnlQb2ludCA9ICptYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcjsK
LSAgICBhdXRvKiBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQgPSBtYXRjaGVkU2VtYW50aWNzLmZy
YWdtZW50U2hhZGVyOwotCi0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVhY2hhYmxl
RnVuY3Rpb25zR2F0aGVyZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRv
cjo6dmlzaXQodmVydGV4U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKGZyYWdtZW50U2hhZGVy
RW50cnlQb2ludCkKLSAgICAgICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6
dmlzaXQoKmZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgYXV0byByZWFjaGFibGVGdW5j
dGlvbnMgPSByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci50YWtlUmVhY2hhYmxlRnVuY3Rpb25z
KCk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uTWFwcGluZyA9IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNN
YXBwaW5nKHByb2dyYW0pOwotICAgIAotICAgIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhzdHJp
bmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9ucywgZnVuY3Rp
b25NYXBwaW5nKTsKLQotICAgIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5
cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlv
dXQpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlu
cygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHJldHVybiB7IGZ1
bmN0aW9uTWFwcGluZy5nZXQoJnZlcnRleFNoYWRlckVudHJ5UG9pbnQpLCBmcmFnbWVudFNoYWRl
ckVudHJ5UG9pbnQgPyBmdW5jdGlvbk1hcHBpbmcuZ2V0KGZyYWdtZW50U2hhZGVyRW50cnlQb2lu
dCkgOiBNYW5nbGVkRnVuY3Rpb25OYW1lIHsgMCB9IH07Ci19Ci0KLUNvbXB1dGVNZXRhbEZ1bmN0
aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRjaGVkQ29t
cHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewotICAg
IGF1dG8mIGVudHJ5UG9pbnQgPSAqbWF0Y2hlZFNlbWFudGljcy5zaGFkZXI7Ci0KLSAgICBSZWFj
aGFibGVGdW5jdGlvbnNHYXRoZXJlciByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlcjsKLSAgICBy
ZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdChlbnRyeVBvaW50KTsKLSAg
ICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyLnRh
a2VSZWFjaGFibGVGdW5jdGlvbnMoKTsKLQotICAgIGF1dG8gZnVuY3Rpb25NYXBwaW5nID0gZ2Vu
ZXJhdGVNZXRhbEZ1bmN0aW9uc01hcHBpbmcocHJvZ3JhbSk7Ci0gICAgZW1pdFNoYXJlZE1ldGFs
RnVuY3Rpb25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxlRnVu
Y3Rpb25zLCBmdW5jdGlvbk1hcHBpbmcpOwotCi0gICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbS5p
bnRyaW5zaWNzKCksIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRT
ZW1hbnRpY3MpLCBsYXlvdXQpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDog
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1
bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQot
ICAgIHJldHVybiB7IGZ1bmN0aW9uTWFwcGluZy5nZXQoJmVudHJ5UG9pbnQpIH07Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRnVuY3Rpb25Xcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ0OTM5
ZjE2MTZlOGUxMjNiNTllM2U3ODBiNWY5NjY5NDcwODgzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNM
U2VtYW50aWNNYXRjaGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgVHlw
ZU5hbWVyOwotCi1zdHJ1Y3QgUmVuZGVyTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIHsKLSAgICBN
YW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBNYW5n
bGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLVJlbmRl
ck1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRl
ciYsIFByb2dyYW0mLCBUeXBlTmFtZXImLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYsIExheW91
dCYpOwotCi1zdHJ1Y3QgQ29tcHV0ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyB7Ci0gICAgTWFu
Z2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci19OwotQ29tcHV0ZU1ldGFs
RnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYsIFBy
b2dyYW0mLCBUeXBlTmFtZXImLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmLCBMYXlvdXQmKTsK
LQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWFu
Z2xlZE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTE1hbmdsZWROYW1lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjYwNGVk
NzNlMDI3Mzg2MTNkYzZkY2JiM2M0NTgzNGMyMmRlOWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMTWFuZ2xlZE5hbWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RydWN0IE1hbmdsZWRWYXJpYWJsZU5hbWUgewotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KLSAgICB1bnNpZ25lZCB2YWx1ZSB7IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogcHJlZml4ID0gInZhcmlhYmxlIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVk
VHlwZU5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogcHJlZml4ID0gInR5cGUiOwotfTsKLQotc3RydWN0IE1hbmdsZWRTdHJ1Y3R1cmVF
bGVtZW50TmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcmVmaXggPSAic3RydWN0dXJlRWxlbWVudCI7Ci19OwotCi1zdHJ1Y3QgTWFu
Z2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAiZW51bWVyYXRpb25NZW1iZXIiOwot
fTsKLQotc3RydWN0IE1hbmdsZWRGdW5jdGlvbk5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gImZ1bmN0aW9uIjsKLQot
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCB2
YWx1ZSk7IH0KLX07Ci0KLXVzaW5nIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lID0gVmFyaWFudDxN
YW5nbGVkVHlwZU5hbWUsIFN0cmluZz47Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hbmdsZWROYW1lVHlwZT4KLWNsYXNzIE1hbmdsZWRO
YW1lQWRhcHRvciB7Ci1wdWJsaWM6Ci0gICAgTWFuZ2xlZE5hbWVBZGFwdG9yKE1hbmdsZWROYW1l
VHlwZSBuYW1lKQotICAgICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBzdHJsZW4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVm
aXgpICsgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcobV9uYW1lLnZhbHVlKTsgfQotICAgIGJvb2wg
aXM4Qml0KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0g
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVmaXgpLCBzdHJsZW4oTWFu
Z2xlZE5hbWVUeXBlOjpwcmVmaXgpKTsKLSAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIobV9u
YW1lLnZhbHVlLCBkZXN0aW5hdGlvbiArIHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCkp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNYW5nbGVkTmFtZVR5cGUgbV9uYW1lOwotfTsKLQot
dGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRWYXJpYWJsZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRWYXJpYWJsZU5hbWU+IHsKLXB1YmxpYzoKLSAg
ICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRWYXJpYWJs
ZU5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0g
ICAgfQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRh
cHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZT4gewotcHVibGljOgot
ICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVO
YW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAg
IH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6TWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5n
bGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxl
bWVudE5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExT
TDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBuYW1lKQotICAgICAgICA6IE1h
bmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFz
cyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVtZXJh
dGlvbk1lbWJlck5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWU+IHsKLXB1YmxpYzoK
LSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVt
ZXJhdGlvbk1lbWJlck5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFt
ZSkKLSAgICB7Ci0gICAgfQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lLCB2b2lkPiA6IHB1Ymxp
YyBNYW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRnVuY3Rp
b25OYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVB
ZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5n
VHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFt
ZSwgdm9pZD4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG5hbWUpCi0gICAgICAgIDog
bV9uYW1lIHsgbmFtZSB9Ci0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0gICAgICAgICAgICBb
Jl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJiBtYW5nbGVk
VHlwZU5hbWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RybGVuKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpICsgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJp
bmcobWFuZ2xlZFR5cGVOYW1lLnZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBb
Jl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlu
Zy5sZW5ndGgoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICBib29s
IGlzOEJpdCgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVO
YW1lJikgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nLmlzOEJpdCgpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFy
YWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIFdURjo6c3dpdGNoT24obV9u
YW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmds
ZWRUeXBlTmFtZSYgbWFuZ2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSwgc3Ry
bGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZUludGVnZXJUb0J1ZmZlcihtYW5nbGVkVHlwZU5hbWUudmFsdWUs
IGRlc3RpbmF0aW9uICsgc3RybGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVO
YW1lOjpwcmVmaXgpKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0
cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB7IHN0cmluZyB9Lmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSYgbV9uYW1lOwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5l
cmF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGFmZWJkYTU2ZDZkNjcz
MDE4ZDgzMWFmNjQzMmYzN2QxNjE3YjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTWV0
YWxDb2RlR2VuZXJhdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEZ1bmN0aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgTWV0YWwgewotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29kZSA9IGZh
bHNlOwotCi1zdGF0aWMgU3RyaW5nVmlldyBtZXRhbENvZGVQcm9sb2d1ZSgpCi17Ci0gICAgcmV0
dXJuIFN0cmluZ1ZpZXcgewotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj5cbiIKLSAg
ICAgICAgIiNpbmNsdWRlIDxtZXRhbF9hdG9taWM+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0
YWxfbWF0aD5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9yZWxhdGlvbmFsPlxuIgotICAg
ICAgICAiI2luY2x1ZGUgPG1ldGFsX2NvbXB1dGU+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0
YWxfdGV4dHVyZT5cbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidXNpbmcgbmFtZXNwYWNlIG1l
dGFsO1xuIgotICAgICAgICAiXG4iCi0gICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50
IENvbHMsIGludCBSb3dzPlxuIgotICAgICAgICAic3RydWN0IFdTTE1hdHJpeFxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAiICAgIHZlYzxULCBSb3dzPiBjb2x1bW5zW0NvbHNdO1xuIgotICAg
ICAgICAiICAgIHByaXZhdGU6XG4iCi0gICAgICAgICIgICAgcHVibGljOlxuIgotICAgICAgICAi
ICAgIGlubGluZSBXU0xNYXRyaXgoKSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAg
IGlubGluZSBXU0xNYXRyaXgoKSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAg
aW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWQgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0
aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgo
Y29uc3QgZGV2aWNlIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVm
YXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0YW50IFdT
TE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAg
ICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZGdyb3VwIFdTTE1hdHJpeDxULCBD
b2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxp
bmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQp
IGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNv
bnN0IGRldmljZSBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVm
YXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0YW50IFdT
TE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAg
ICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkZ3JvdXAgV1NMTWF0cml4PFQs
IENvbHMsIFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAg
cHVibGljOlxuIgotICAgICAgICAiICAgIGlubGluZSB0aHJlYWQgdmVjPFQsIFJvd3M+ICZvcGVy
YXRvcltdKGludCByKSB0aHJlYWRcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAg
ICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAg
ICBpbmxpbmUgZGV2aWNlIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgZGV2aWNlXG4i
Ci0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtc
biIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIHRocmVhZGdyb3VwIHZl
YzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgdGhyZWFkZ3JvdXBcbiIKLSAgICAgICAgIiAg
ICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAi
ICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgdGhyZWFkIHZlYzxULCBSb3dzPiAm
b3BlcmF0b3JbXShpbnQgcikgY29uc3QgdGhyZWFkXG4iCi0gICAgICAgICIgICAge1xuIgotICAg
ICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0g
ICAgICAgICIgICAgaW5saW5lIGNvbnN0IGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10o
aW50IHIpIGNvbnN0IGRldmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAg
ICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAg
IGlubGluZSBjb25zdCBjb25zdGFudCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNv
bnN0IGNvbnN0YW50XG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1
cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5l
IGNvbnN0IHRocmVhZGdyb3VwIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgY29uc3Qg
dGhyZWFkZ3JvdXBcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVy
biBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn07XG4iCi0KLQot
ICAgIH07Ci0KLX0KLQotc3RhdGljIHZvaWQgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKFN0cmluZ0J1
aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgaWYgKGR1bXBNZXRhbENvZGUpIHsKLSAgICAg
ICAgZGF0YUxvZ0xuKCJHZW5lcmF0ZWQgTWV0YWwgY29kZTogIik7Ci0gICAgICAgIGRhdGFMb2dM
bihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KLX0KLQotUmVuZGVyTWV0YWxDb2Rl
IGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHByb2dyYW0sIE1hdGNoZWRSZW5kZXJTZW1hbnRp
Y3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxDb2RlUHJv
bG9ndWUoKSk7Ci0KLSAgICBUeXBlTmFtZXIgdHlwZU5hbWVyKHByb2dyYW0pOwotICAgIHR5cGVO
YW1lci5lbWl0TWV0YWxUeXBlcyhzdHJpbmdCdWlsZGVyKTsKLSAgICAKLSAgICBhdXRvIG1ldGFs
RnVuY3Rpb25FbnRyeVBvaW50cyA9IE1ldGFsOjplbWl0TWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVp
bGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlv
dXQpOwotCi0gICAgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKHN0cmluZ0J1aWxkZXIpOwotCi0gICAg
cmV0dXJuIHsgV1RGTW92ZShzdHJpbmdCdWlsZGVyKSwgV1RGTW92ZShtZXRhbEZ1bmN0aW9uRW50
cnlQb2ludHMubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lKSwgV1RGTW92ZShtZXRhbEZ1bmN0
aW9uRW50cnlQb2ludHMubWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUpIH07Ci19Ci0KLUNv
bXB1dGVNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwgTWF0Y2hl
ZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsK
LSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWV0YWxDb2RlUHJvbG9ndWUoKSk7Ci0KLSAgICBUeXBlTmFtZXIgdHlwZU5hbWVyKHByb2dy
YW0pOwotICAgIHR5cGVOYW1lci5lbWl0TWV0YWxUeXBlcyhzdHJpbmdCdWlsZGVyKTsKLQotICAg
IGF1dG8gbWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzID0gTWV0YWw6OmVtaXRNZXRhbEZ1bmN0aW9u
cyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFu
dGljcyksIGxheW91dCk7Ci0KLSAgICBkdW1wTWV0YWxDb2RlSWZOZWVkZWQoc3RyaW5nQnVpbGRl
cik7Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHN0cmluZ0J1aWxkZXIpLCBXVEZNb3ZlKG1ldGFs
RnVuY3Rpb25FbnRyeVBvaW50cy5tYW5nbGVkRW50cnlQb2ludE5hbWUpIH07Ci19Ci0KLX0KLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdl
bmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xNZXRhbENvZGVHZW5lcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0
ODc2MTdjYjkwNWFlMmViMDY5NDBhMTc0ZTQwOTU4MmI4YzNiYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRl
ICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRj
aGVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVz
cGFjZSBNZXRhbCB7Ci0KLXN0cnVjdCBSZW5kZXJNZXRhbENvZGUgewotICAgIFN0cmluZ0J1aWxk
ZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50
cnlQb2ludE5hbWU7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRy
eVBvaW50TmFtZTsKLX07Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3MgbmVlZCB0
byBiZSBkb25lIGVhcmxpZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2YgdGhlIGNv
bXBpbGVyLgotUmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mLCBNYXRj
aGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0Jik7Ci0KLXN0cnVj
dCBDb21wdXRlTWV0YWxDb2RlIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAg
IE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotfTsKLS8vIENhbid0
IGZhaWwuIEFueSBmYWlsdXJlIGNoZWNrcyBuZWVkIHRvIGJlIGRvbmUgZWFybGllciwgaW4gdGhl
IGJhY2tlbmQtYWdub3N0aWMgcGFydCBvZiB0aGUgY29tcGlsZXIuCi1Db21wdXRlTWV0YWxDb2Rl
IGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1h
dGNoZWRTZW1hbnRpY3MsIExheW91dCYpOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3Jp
dGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkMmM4YTg3YmM2N2M5ZmU2
MmNlM2U2NDRhNjY0YTg2NGM0NjVkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIK
LSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25E
ZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hM
U0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyBTdHJpbmcgbWFw
RnVuY3Rpb25OYW1lKFN0cmluZyYgZnVuY3Rpb25OYW1lKQotewotICAgIGlmIChmdW5jdGlvbk5h
bWUgPT0gImRkeCIpCi0gICAgICAgIHJldHVybiAiZGZkeCJfc3RyOwotICAgIGlmIChmdW5jdGlv
bk5hbWUgPT0gImRkeSIpCi0gICAgICAgIHJldHVybiAiZGZkeSJfc3RyOwotICAgIGlmIChmdW5j
dGlvbk5hbWUgPT0gImFzaW50IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGludDMyX3Q+Il9z
dHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiYXN1aW50IikKLSAgICAgICAgcmV0dXJuICJh
c190eXBlPHVpbnQzMl90PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFzZmxvYXQi
KQotICAgICAgICByZXR1cm4gImFzX3R5cGU8ZmxvYXQ+Il9zdHI7Ci0gICAgcmV0dXJuIGZ1bmN0
aW9uTmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBhdG9taWNOYW1lKFN0cmluZyBpbnB1dCkKLXsK
LSAgICBpZiAoaW5wdXQgPT0gIkFkZCIpCi0gICAgICAgIHJldHVybiAiZmV0Y2hfYWRkIl9zdHI7
Ci0gICAgaWYgKGlucHV0ID09ICJBbmQiKQotICAgICAgICByZXR1cm4gImZldGNoX2FuZCJfc3Ry
OwotICAgIGlmIChpbnB1dCA9PSAiRXhjaGFuZ2UiKQotICAgICAgICByZXR1cm4gImV4Y2hhbmdl
Il9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJNYXgiKQotICAgICAgICByZXR1cm4gImZldGNoX21h
eCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiTWluIikKLSAgICAgICAgcmV0dXJuICJmZXRjaF9t
aW4iX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk9yIikKLSAgICAgICAgcmV0dXJuICJmZXRjaF9v
ciJfc3RyOwotICAgIEFTU0VSVChpbnB1dCA9PSAiWG9yIik7Ci0gICAgICAgIHJldHVybiAiZmV0
Y2hfeG9yIl9zdHI7Ci19Ci0KLXN0YXRpYyBpbnQgdmVjdG9yTGVuZ3RoKEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaW50IHZlY3Rvckxl
bmd0aCA9IDE7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlw
ZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgICAgIHZlY3Rvckxlbmd0aCA9IFdURjo6Z2V0PEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
WzFdKS5pbnRlZ2VyTGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotICAgIHJldHVybiB2ZWN0b3JM
ZW5ndGg7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB2ZWN0b3JTdWZmaXgoaW50IHZlY3Rvckxl
bmd0aCkKLXsKLSAgICBzd2l0Y2ggKHZlY3Rvckxlbmd0aCkgewotICAgIGNhc2UgMToKLSAgICAg
ICAgcmV0dXJuICIiOwotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuICIyIjsKLSAgICBjYXNl
IDM6Ci0gICAgICAgIHJldHVybiAiMyI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZl
Y3Rvckxlbmd0aCA9PSA0KTsKLSAgICAgICAgcmV0dXJuICI0IjsKLSAgICB9Ci19Ci0KLWVudW0g
Y2xhc3MgU2FtcGxlVHlwZSB7Ci0gICAgU2FtcGxlLAotICAgIFNhbXBsZUxldmVsLAotICAgIFNh
bXBsZUJpYXMsCi0gICAgU2FtcGxlR3JhZAotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Ft
cGxlVHlwZT4gc2FtcGxlVHlwZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBp
ZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGUiKQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6
U2FtcGxlOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUxldmVsIikKLSAgICAgICAg
cmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0g
IlNhbXBsZUJpYXMiKQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlQmlhczsKLSAg
ICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVHcmFkIikKLSAgICAgICAgcmV0dXJuIFNhbXBs
ZVR5cGU6OlNhbXBsZUdyYWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIGNvbnN0
IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgYXJncywgTWFuZ2xlZFZhcmlhYmxlTmFtZSBy
ZXN1bHROYW1lLCBUeXBlTmFtZXImIHR5cGVOYW1lcikKLXsKLSAgICBhdXRvIGFzTWF0cml4VHlw
ZSA9IFsmXSAoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIC0+IEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uKiB7Ci0gICAgICAgIGF1dG8mIHJlYWxUeXBlID0gdW5uYW1lZFR5cGUudW5p
ZnlOb2RlKCk7Ci0gICAgICAgIGlmICghcmVhbFR5cGUuaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGF1dG8mIG1heWJlTWF0
cml4VHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZWFsVHlwZSk7
Ci0gICAgICAgIGlmIChtYXliZU1hdHJpeFR5cGUuaXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHJl
dHVybiAmbWF5YmVNYXRyaXhUeXBlOwotCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH07
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5pc0Nhc3QoKSkgewotICAgICAg
ICBhdXRvJiByZXR1cm5UeXBlID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCk7Ci0g
ICAgICAgIGF1dG8gbWV0YWxSZXR1cm5UeXBlTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUocmV0dXJuVHlwZSk7Ci0KLSAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ldGFsUmV0dXJuVHlwZU5hbWUsICIgeyB9Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAq
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKLQotICAg
ICAgICAgICAgYXV0byBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0eXBlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlzPEFTVDo6TmFtZWRUeXBlPih0eXBlKSAmJiBpczxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUp
KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhdXRvJiB1bmlmaWVkUmV0dXJuVHlwZSA9
IHJldHVyblR5cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICBpZiAoaXNFbnVtZXJhdGlvbkRl
ZmluaXRpb24odW5pZmllZFJldHVyblR5cGUpICYmICFpc0VudW1lcmF0aW9uRGVmaW5pdGlvbihw
YXJhbWV0ZXJUeXBlLnVuaWZ5Tm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGVudW1l
cmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKLSAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5UeXBl
TmFtZSwgIj4oKCIpOwotICAgICAgICAgICAgICAgIGJvb2wgbG9vcGVkT25jZSA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1l
bWJlcnMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobG9vcGVkT25jZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGhhc1plcm9DYXNlIHw9ICFtZW1iZXIuZ2V0KCkudmFsdWUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1swXSwgIiA9PSAiLCBtZW1iZXIu
Z2V0KCkudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxvb3BlZE9uY2UgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGhhc1plcm9D
YXNlLCBoYXNaZXJvQ2FzZSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSA/ICIsIGFyZ3NbMF0sICIgOiAwKSIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1ldGFsUmV0dXJu
VHlwZU5hbWUsICI+KCIsIGFyZ3NbMF0sICIpIik7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKHJl
dHVyblR5cGUpKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBlaXRoZXIgY29uc3RydWN0aW5nIHdp
dGggYWxsIGluZGl2aWR1YWwgZWxlbWVudHMsIG9yIHdpdGgKLSAgICAgICAgICAgIC8vIHZlY3Rv
cnMgZm9yIGVhY2ggY29sdW1uLgotCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KCcpOwotICAgICAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IG1hdHJpeFR5cGUtPm51bWJlck9m
TWF0cml4Q29sdW1ucygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHdpdGgg
dmVjdG9ycyBmb3IgZWFjaCBjb2x1bW4uCi0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICIuY29sdW1u
c1siLCBpLCAiXSA9ICIsIGFyZ3NbaV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHdpdGggYWxsIGVsZW1l
bnRzLgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3Muc2l6ZSgpID09IG1hdHJp
eFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpICogbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRy
aXhSb3dzKCkpOwotCi0gICAgICAgICAgICAgICAgc2l6ZV90IGFyZ051bWJlciA9IDA7Ci0gICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1h
dHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhSb3dzKCk7ICsraikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyZ051bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICIuY29sdW1uc1siLCBpLCAiXVsiLCBq
LCAiXSA9ICIsIGFyZ3NbYXJnTnVtYmVyXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2Fy
Z051bWJlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0
TmFtZSwgJyknKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsUmV0dXJuVHlwZU5hbWUsICcoJyk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChhcmdzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24uaXNPcGVyYXRvcigpKSB7Ci0gICAgICAgIGF1dG8gb3BlcmF0b3JOYW1lID0gbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciJfc3RyLmxl
bmd0aCgpKTsKLQotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgb2sgdG8gZG8gc2lu
Y2UgdGhlIGFyZ3MgdG8gdGhpcyBmdW5jdGlvbiBhcmUgYWxsIHRlbXBzLgotICAgICAgICAgICAg
Ly8gU28gdGhpbmdzIGxpa2UgKysgYW5kIC0tIGFyZSBvayB0byBkby4KLQotICAgICAgICAgICAg
aWYgKGF1dG8qIG1hdHJpeFR5cGUgPSBhc01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi50eXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0cml4VHlwZS0+
bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycs
IGksICJdID0gIiwgb3BlcmF0b3JOYW1lLCBhcmdzWzBdLCAnWycsIGksICddJyk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJl
c3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChvcGVyYXRvck5hbWUsIGFyZ3NbMF0pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgaWYgKGF1dG8qIGxlZnRNYXRy
aXggPSBhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
WzBdLT50eXBlKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmlnaHRNYXRyaXggPSBhc01h
dHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gbWF0cml4IDxvcD4gbWF0cml4Ci0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJ1snLCBp
LCAiXSAiLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgJ1snLCBpLCAnXScpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBy
ZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAv
LyBtYXRyaXggPG9wPiBzY2FsYXIKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZWZ0TWF0
cml4LT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUs
ICdbJywgaSwgIl0gPSAiLCBhcmdzWzBdLCAnWycsIGksICJdICIsIG9wZXJhdG9yTmFtZSwgJyAn
LCBhcmdzWzFdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKLSAgICAgICAgICAg
IEFTU0VSVCghYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKVswXS0+dHlwZSgpKSk7Ci0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBtYXRyaXgKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmlnaHRNYXRyaXgtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIGFyZ3NbMF0sICcgJywgb3BlcmF0b3JOYW1l
LCAnICcsIGFyZ3NbMV0sICdbJywgaSwgJ10nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBzY2FsYXIKLSAgICAgICAgICAgIC8v
IHZlY3RvciA8b3A+IHZlY3RvcgotICAgICAgICAgICAgLy8gdmVjdG9yIDxvcD4gc2NhbGFyCi0g
ICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICcoJywgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5h
bWUsICcgJywgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNvcyIK
LSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNpbiIKLSAg
ICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRhbiIKLSAgICAg
ICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFjb3MiCi0gICAgICAg
IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2luIgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbiIKLSAgICAgICAgfHwg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNvc2giCi0gICAgICAgIHx8IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJzaW5oIgotICAgICAgICB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAidGFuaCIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNlaWwiCi0gICAgICAgIHx8IG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJleHAiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9vciIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxvZyIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gInJvdW5kIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAidHJ1bmMiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJkZHgiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJkZHkiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJpc25vcm1hbCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImlzZmluaXRlIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiaXNpbmYiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJpc25hbiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImFzaW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiYXN1aW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiYXNmbG9hdCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImxlbmd0aCIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkpLCAnKCcsIGFyZ3NbMF0sICcpJyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInBv
dyIgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4yIikgewotICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAnKCcsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0s
ICcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNsYW1wIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotCi0gICAgICAgIGlm
IChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAg
ICAgICAgICAgIGJvb2wgcmFuT25jZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbWF0cml4VHlwZS0+bnVt
YmVyT2ZNYXRyaXhSb3dzKCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAocmFuT25j
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwot
ICAgICAgICAgICAgICAgICAgICByYW5PbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHROYW1l
LCAnWycsIGksICJdWyIsIGosICJdID0gY2xhbXAoIiwgYXJnc1swXSwgJ1snLCBpLCAiXVsiLCBq
LCAiXSwgIiwgYXJnc1sxXSwgJ1snLCBpLCAiXVsiLCBqLCAiXSwgIiwgYXJnc1syXSwgJ1snLCBp
LCAiXVsiLCBqLCAiXSkiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAiKSIpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICAgICAgICAgImNsYW1wKCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0s
ICcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVtb3J5QmFycmllcldpdGhHcm91
cFN5bmMiKSB7Ci0gICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICAgICAiKHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKSwgdGhyZWFk
Z3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCksIHRocmVhZGdyb3VwX2Jh
cnJpZXIobWVtX2ZsYWdzOjptZW1fdGV4dHVyZSkpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAotICAgICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjpt
ZW1fZGV2aWNlKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBT
eW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5uYW1lKCkuc3RhcnRzV2l0aCgiSW50ZXJsb2NrZWQiX3N0cikpIHsKLSAgICAgICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJJbnRlcmxvY2tlZENvbXBhcmVFeGNo
YW5nZSIpIHsKLSAgICAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICAiKGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGlj
aXQoIiwgYXJnc1swXSwgIiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1lbW9yeV9v
cmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCksICIsCi0gICAgICAgICAgICAgICAg
JyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIGF1dG8gbmFtZSA9IGF0b21pY05hbWUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJbnRlcmxvY2tlZCJf
c3RyLmxlbmd0aCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgJyonLCBhcmdzWzJdLCAiID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQoIiwgYXJnc1sw
XSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBzYW1wbGVUeXBlID0gV0hMU0w6Ok1ldGFsOjpz
YW1wbGVUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSkgewotICAgICAgICBz
aXplX3QgYmFzZUFyZ3VtZW50Q291bnQgPSAwOwotICAgICAgICBzd2l0Y2ggKCpzYW1wbGVUeXBl
KSB7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlOgotICAgICAgICAgICAgYmFzZUFy
Z3VtZW50Q291bnQgPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxl
VHlwZTo6U2FtcGxlTGV2ZWw6Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlQmlhczoK
LSAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gNDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBiYXNlQXJn
dW1lbnRDb3VudCA9IDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBB
U1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJh
c2VBcmd1bWVudENvdW50IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCArIDEpOwotICAgICAgICAKLSAgICAgICAgYXV0
byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8mIGxvY2F0aW9uVHlw
ZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5h
bWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMl0tPnR5cGUo
KS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byBsb2NhdGlvblZlY3Rvckxlbmd0aCA9IHZl
Y3Rvckxlbmd0aChsb2NhdGlvblR5cGUpOwotICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBl
PihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpOwotICAgICAg
ICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKLQot
ICAgICAgICBpbnQgYXJndW1lbnRJbmRleCA9IDA7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGFyZ3NbYXJndW1lbnRJbmRleF0sICIuc2FtcGxlKCIsIGFyZ3NbYXJndW1lbnRJbmRleCAr
IDFdLCAiLCAiKTsKLSAgICAgICAgYXJndW1lbnRJbmRleCArPSAyOwotCi0gICAgICAgIGlmICh0
ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRp
b25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFy
Z3NbYXJndW1lbnRJbmRleF0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25W
ZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1thcmd1bWVudEluZGV4XSwgJy4nLCAieHl6dyJf
c3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKLSAgICAgICAgICAg
ICsrYXJndW1lbnRJbmRleDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwotCi0gICAgICAgIHN3aXRjaCAoKnNh
bXBsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDoKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGxldmVsKCIsIGFyZ3NbYXJndW1lbnRJbmRleCsr
XSwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNh
bXBsZUJpYXM6Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBiaWFzKCIsIGFy
Z3NbYXJndW1lbnRJbmRleCsrXSwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBpZiAodGV4dHVyZVR5cGUu
aXNDdWJlVGV4dHVyZSgpKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
IGdyYWRpZW50Y3ViZSgiLCBhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50
SW5kZXggKyAxXSwgIikiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCBncmFkaWVudDJkKCIsIGFyZ3NbYXJndW1lbnRJbmRleF0sICIs
ICIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAiKSIpOwotICAgICAgICAgICAgYXJndW1lbnRJ
bmRleCArPSAyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJhc2VBcmd1
bWVudENvdW50ICsgMSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFy
Z3NbYXJndW1lbnRJbmRleCsrXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7
Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUoKSkKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJu
VmVjdG9yTGVuZ3RoKSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiTG9hZCIpIHsKLSAgICAgICAgQVNTRVJU
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLQot
ICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byYg
bG9jYXRpb25UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25j
YXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVsxXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVmVjdG9y
TGVuZ3RoID0gdmVjdG9yTGVuZ3RoKGxvY2F0aW9uVHlwZSk7Ci0gICAgICAgIGF1dG8mIHJldHVy
blR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNU
OjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgp
KSk7Ci0gICAgICAgIGF1dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVy
blR5cGUpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVHlwZU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGxvY2F0aW9uVHlwZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJygnLCBhcmdzWzFdLCAiID0gIik7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1
cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAx
KTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFdLCAi
LCAiLCBsb2NhdGlvblR5cGVOYW1lLCAnKCcpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkp
Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygn
KTsKLQotICAgICAgICAgICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsgIndpZHRoIl9zdHIsICJo
ZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIGFy
Z3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSAtIDEiKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgIGFyZ3Nb
MF0sICIuZ2V0X2FycmF5X3NpemUoKSAtIDEpKSIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsIDAsICIsIGFyZ3NbMF0sICIu
Z2V0X3dpZHRoKCkgLSAxKSIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsICIsIGxvY2F0aW9uVHlw
ZU5hbWUsICIoMCwgMCIpOwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0
aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIsIGxvY2F0aW9uVHlw
ZU5hbWUsICcoJywgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSAtIDEsICIsIGFyZ3NbMF0sICIuZ2V0
X2hlaWdodCgpIC0gMSIpOwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0
aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBh
cmdzWzBdLCAiLmdldF9kZXB0aCgpIC0gMSIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1swXSwgIi5yZWFkKCIpOwotCi0gICAgICAgIGlm
ICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9j
YXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJn
c1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDEpLCAiKSwgdWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0
aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0
b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcpJyk7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUoKSkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJzdHJpbmco
MCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyknKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpID09ICJsb2FkIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJhdG9taWNfbG9hZF9leHBsaWNpdCgiLCBh
cmdzWzBdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic3RvcmUi
KSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkgPT0gMik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgImF0b21pY19zdG9yZV9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2V0RGltZW5zaW9ucyIpIHsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgICAgICBhdXRvJiB0ZXh0
dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0t
PnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLQotICAgICAgICBzaXplX3QgaW5kZXggPSAxOwotICAg
ICAgICBib29sIGhhc01pcExldmVsID0gIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkg
JiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDE7Ci0gICAgICAgIGlmIChoYXNN
aXBMZXZlbCkKLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIGNvbnN0IE1hbmdsZWRWYXJp
YWJsZU5hbWUmIHdpZHRoTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICArK2luZGV4OwotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5hbWU7Ci0gICAg
ICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMikgewotICAgICAgICAg
ICAgaGVpZ2h0TmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAg
ICAgfQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRlcHRoTmFt
ZTsKLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAzKSB7Ci0g
ICAgICAgICAgICBkZXB0aE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsraW5kZXg7
Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBl
bGVtZW50c05hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7
Ci0gICAgICAgICAgICBlbGVtZW50c05hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsr
aW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVO
YW1lPiBudW1iZXJPZkxldmVsc05hbWU7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0
YWJsZVRleHR1cmUoKSAmJiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkgewot
ICAgICAgICAgICAgbnVtYmVyT2ZMZXZlbHNOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICAg
ICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChpbmRleCA9PSBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgJyonLCB3aWR0aE5hbWUsICIgPSAiLCBhcmdzWzBd
LCAiLmdldF93aWR0aCgiKTsKLSAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcpJyk7Ci0KLSAgICAgICAgaWYgKGhlaWdodE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIsICoiLCAqaGVpZ2h0TmFtZSwgIiA9
ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgiKTsKLSAgICAgICAgICAgIGlmIChoYXNNaXBMZXZl
bCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGRlcHRoTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICAgICAgICAgIiwgKiIsICpkZXB0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgi
KTsKLSAgICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVsZW1lbnRzTmFtZSkgewotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICplbGVtZW50
c05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkiKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobnVtYmVyT2ZMZXZlbHNOYW1lKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKm51bWJlck9mTGV2ZWxzTmFtZSwg
IiA9ICIsIGFyZ3NbMF0sICIuZ2V0X251bV9taXBfbGV2ZWxzKCkiKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlciIp
IHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhl
clJlZCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlNhbXBsZUNtcCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlNhbXBsZUNtcExldmVsWmVybyIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlN0b3JlIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwot
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQWxwaGEiKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVu
dCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJCbHVlIikgewotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJ
bXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQ21wIikgewotICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQ21wUmVk
IikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0
aGVyR3JlZW4iKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjA4MTEwYWU1OWJhYzAxNGMzYmI1N2Q0OTAwMWVlMTQyNzgxMThlZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNp
Y3M7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
OwotCi19Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uJiwgY29uc3QgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmd1bWVudE5h
bWVzLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5cGVOYW1lciYpOwotCi19Ci0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBl
V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFh
NjhjYmQxZWNkNWVhYzRiOWZiMzllZGM4NjU5OWIxMTU1MDdkYzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMTmF0aXZlVHlwZVdyaXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7
Ci0KLVN0cmluZyB3cml0ZU5hdGl2ZVR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAidm9pZCIpCi0gICAgICAgIHJldHVybiAidm9pZCJfc3RyOwotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJib29sIikKLSAgICAgICAgcmV0dXJuICJib29s
Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVpbnQiKQot
ICAgICAgICByZXR1cm4gInVpbnQzMl90Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImludCIpCi0gICAgICAgIHJldHVybiAiaW50MzJfdCJfc3RyOwotICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpCi0gICAgICAgIHJl
dHVybiAiZmxvYXQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiYXRvbWljX2ludCIpCi0gICAgICAgIHJldHVybiAiYXRvbWljX2ludCJfc3RyOwotICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfdWludCIpCi0gICAgICAg
IHJldHVybiAiYXRvbWljX3VpbnQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAic2FtcGxlciIpCi0gICAgICAgIHJldHVybiAic2FtcGxlciJfc3RyOwotICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ2ZWN0b3IiKSB7Ci0gICAgICAg
IEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAy
KTsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJl
ZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAg
ICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVu
Y2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICAgICAg
YXV0byYgdW5pZnlOb2RlID0gdHlwZVJlZmVyZW5jZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGF1
dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAg
ICAgICBhdXRvJiBwYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGF1dG8gcHJlZml4ID0gKFsmXSgpIC0+IFN0cmlu
ZyB7Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImJvb2wiKQotICAg
ICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlw
ZS5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICAgICAgICAgIHJldHVybiAidWludCI7Ci0gICAg
ICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuICJpbnQiOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUubmFtZSgp
ID09ICJmbG9hdCIpOwotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIH0pKCk7
Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAg
ICAgIGF1dG8mIGNvbnN0YW50RXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsKLSAgICAg
ICAgYXV0byYgaW50ZWdlckxpdGVyYWwgPSBjb25zdGFudEV4cHJlc3Npb24uaW50ZWdlckxpdGVy
YWwoKTsKLSAgICAgICAgYXV0byBzdWZmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoaW50ZWdlckxpdGVyYWwudmFsdWUoKSkgewotICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgIHJldHVybiAiMiJfc3RyOwotICAgICAgICAgICAgY2FzZSAzOgot
ICAgICAgICAgICAgICAgIHJldHVybiAiMyJfc3RyOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSA9PSA0KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIjQiX3N0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkoKTsK
LSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCBzdWZmaXgpOwotICAgIH0KLSAgICBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAibWF0cml4IikgewotICAgICAgICBB
U1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMyk7
Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZl
cmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAg
ICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNl
Pj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgICAgIGF1
dG8mIHVuaWZ5Tm9kZSA9IHR5cGVSZWZlcmVuY2UtPnVuaWZ5Tm9kZSgpOwotICAgICAgICBhdXRv
JiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAg
ICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvIHByZWZpeCA9IChbJl0gewotICAgICAgICAg
ICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJib29sIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gImJvb2wiOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUubmFtZSgpID09
ICJmbG9hdCIpOwotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIH0pKCk7Ci0K
LSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIldTTE1hdHJpeDwiLCBwcmVmaXgsICIsICIsIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSwgIiwgIiwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm51bWJlck9mTWF0cml4Um93cygpLCAiPiIpOwotICAgIH0KLSAgICBB
U1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMSk7
Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5j
ZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBhdXRv
JiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwotICAgIGF1dG8gcHJlZml4ID0g
KFsmXSgpIC0+IFN0cmluZyB7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlMUQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWQiX3N0cjsK
LSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFE
IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTFkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIpCi0gICAgICAgICAg
ICByZXR1cm4gInRleHR1cmUxZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgICAgICByZXR1
cm4gInRleHR1cmUxZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJk
Il9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1Rl
eHR1cmUyRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUyZCJfc3RyOwotICAgICAgICBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXkiKQotICAg
ICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICAg
ICAgcmV0dXJuICJ0ZXh0dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUzRCIpCi0gICAgICAgICAgICByZXR1cm4gInRl
eHR1cmUzZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiUldUZXh0dXJlM0QiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlM2QiX3N0cjsKLSAg
ICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIikK
LSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZWN1YmUiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEIikKLSAgICAgICAgICAg
IHJldHVybiAiZGVwdGgyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkRBcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gImRl
cHRoMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIlRleHR1cmVEZXB0aEN1YmUiKTsKLSAgICAgICAgcmV0dXJuICJkZXB0aGN1YmUi
X3N0cjsKLSAgICB9KSgpOwotICAgIGF1dG8gaW5uZXJUeXBlID0gKFsmXSgpIC0+IFN0cmluZyB7
Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICAg
ICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkg
PT0gInVpbnQyIikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAo
dHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50MyIpCi0gICAgICAgICAgICByZXR1cm4gInVp
bnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDQiKQot
ICAgICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNl
LT5uYW1lKCkgPT0gImludCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAg
ICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQyIikKLSAgICAgICAgICAgIHJldHVy
biAiaW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDMi
KQotICAgICAgICAgICAgcmV0dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVu
Y2UtPm5hbWUoKSA9PSAiaW50NCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAg
ICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdCIpCi0gICAgICAgICAgICBy
ZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0g
ImZsb2F0MiIpCi0gICAgICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgICAgIGlmICh0
eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0MyIpCi0gICAgICAgICAgICByZXR1cm4gImZs
b2F0Il9zdHI7Ci0gICAgICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0
NCIpOwotICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgfSkoKTsKLSAgICBhdXRvIGlz
UmVhZFdyaXRlID0gbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMUQi
Ci0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFE
QXJyYXkiCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTJEIgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1Rl
eHR1cmUyREFycmF5IgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUzRCI7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCAnPCcsIGlubmVy
VHlwZSwgIiwgIiwgaXNSZWFkV3JpdGUgPyAiYWNjZXNzOjpyZWFkX3dyaXRlIiA6ICJhY2Nlc3M6
OnNhbXBsZSIsICc+Jyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MDdlOTYyZDY0MjFlM2ZjZDRiNDNjMTZiOGNlY2NkMGZj
NTU4NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3Jp
dGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotCi19
Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVN0cmluZyB3cml0ZU5hdGl2ZVR5cGUoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mKTsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMjc3MTU0MTQ0NDg2MDMzOGE0ODc2ODVjNWQyZjEwMzlkYTUzNjUwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDM2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJy
YXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVX
cml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5o
IgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVR5cGVOYW1l
cjo6VHlwZU5hbWVyKFByb2dyYW0mIHByb2dyYW0pCi0gICAgOiBtX3Byb2dyYW0ocHJvZ3JhbSkK
LXsKLX0KLQotVHlwZU5hbWVyOjp+VHlwZU5hbWVyKCkgPSBkZWZhdWx0OwotCi12b2lkIFR5cGVO
YW1lcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgZ2VuZXJh
dGVVbmlxdWVkVHlwZU5hbWUodW5uYW1lZFR5cGUpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlz
aXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsK
LSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgm
ZW51bWVyYXRpb25EZWZpbml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpKTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0K
LSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9u
LmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9lbnVt
ZXJhdGlvbk1lbWJlck1hcHBpbmcuYWRkKCZzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyJj4oZW51bWVyYXRpb25NZW1iZXIpLCBnZW5lcmF0ZU5leHRFbnVtZXJhdGlvbk1lbWJlck5h
bWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9u
KTsKLQotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5h
ZGQoJmVudW1lcmF0aW9uRGVmaW5pdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpVbm5hbWVkVHlwZT4+IHsgZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSB9KTsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAg
ICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIC8vIE5hdGl2ZSB0eXBlIGRlY2xhcmF0
aW9ucyBhbHJlYWR5IGhhdmUgbmFtZXMsIGFuZCBhcmUgYWxyZWFkeSBkZWNsYXJlZCBpbiBNZXRh
bC4KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRU
eXBlPj4geyB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX25hbWVkVHlwZU1hcHBpbmcuYWRkKCZzdHJ1Y3R1cmVEZWZpbml0aW9uLCBnZW5lcmF0
ZU5leHRUeXBlTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVm
aW5pdGlvbik7Ci0gICAgewotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OlVubmFtZWRUeXBlPj4gbmVpZ2hib3JzOwotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVy
ZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGluZy5hZGQo
JnN0cnVjdHVyZUVsZW1lbnQsIGdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCkpOwot
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICAgICAgICAgIG5laWdoYm9ycy5hcHBlbmQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkp
OwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGgu
YWRkKCZzdHJ1Y3R1cmVEZWZpbml0aW9uLCBXVEZNb3ZlKG5laWdoYm9ycykpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLX0K
LQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0
aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlwZU1hcHBp
bmcuYWRkKCZ0eXBlRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQot
ICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICB7Ci0gICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRkKCZ0eXBlRGVmaW5pdGlvbiwgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHsgdHlwZURlZmluaXRp
b24udHlwZSgpIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwotICAgIH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShleHBy
ZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsK
LX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHBy
ZXNzaW9uKQotewotICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1
bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFyZ3VtZW50KTsKLX0KLQotU3Ry
aW5nIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgcmV0dXJuIHdyaXRlTmF0aXZlVHlw
ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotfQotCi1zdGF0aWMgQVNUOjpVbm5hbWVkVHlwZSog
cGFyZW50KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIHN3aXRjaCAodW5u
YW1lZFR5cGUua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBl
UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEFTVDo6VW5uYW1l
ZFR5cGU6OktpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpQb2lu
dGVyVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAg
Y2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJuICZkb3du
Y2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpLnR5cGUoKTsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBU
eXBlTmFtZXI6OmdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFt
ZWRUeXBlKQotewotICAgIGF1dG8qIHBhcmVudFVubmFtZWRUeXBlID0gcGFyZW50KHVubmFtZWRU
eXBlKTsKLSAgICBpZiAocGFyZW50VW5uYW1lZFR5cGUpCi0gICAgICAgIGdlbmVyYXRlVW5pcXVl
ZFR5cGVOYW1lKCpwYXJlbnRVbm5hbWVkVHlwZSk7Ci0KLSAgICBtX3VubmFtZWRUeXBlTWFwcGlu
Zy5lbnN1cmUoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9LCBbJl0gewotICAgICAgICBy
ZXR1cm4gZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKTsKLSAgICB9KTsKLX0KLQotY2xhc3MgTWV0YWxU
eXBlRGVjbGFyYXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0
ZXIoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkT3JO
YXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiYmIG1hbmdsZWROYW1lRm9yTmFtZWRUeXBl
KQotICAgICAgICA6IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoV1RGTW92ZShtYW5nbGVkTmFt
ZUZvck5hbWVkVHlwZSkpCi0gICAgICAgICwgbV9zdHJpbmdCdWlsZGVyKHN0cmluZ0J1aWxkZXIp
Ci0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRU
eXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiO1xuIik7Ci0gICAgfQotCi0gICAgc3RkOjpmdW5j
dGlvbjxNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiBtX21hbmdsZWRO
YW1lRm9yTmFtZWRUeXBlOwotICAgIFN0cmluZ0J1aWxkZXImIG1fc3RyaW5nQnVpbGRlcjsKLX07
Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIgbWV0
YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgWyZdKEFTVDo6TmFtZWRUeXBl
JiBuYW1lZFR5cGUpIC0+IE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIHsKLSAgICAgICAgcmV0dXJu
IG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpOwotICAgIH0pOwotICAgIG1ldGFsVHlwZURl
Y2xhcmF0aW9uV3JpdGVyLlZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci19Ci0KLXZvaWQgVHlw
ZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBNYW5nbGVkVHlwZU5hbWUgbWFu
Z2xlZE5hbWUsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhh
c2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKQotewotICAgIGlmIChl
bWl0dGVkVW5uYW1lZFR5cGVzLmNvbnRhaW5zKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUg
fSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7
Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7Ci0gICAg
ICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVu
bmFtZWRUeXBlKTsKLQotICAgICAgICBhdXRvJiBwYXJlbnQgPSB0eXBlUmVmZXJlbmNlLnJlc29s
dmVkVHlwZSgpOwotICAgICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVG
b3JUeXBlKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9kZXBlbmRlbmN5R3JhcGguZmluZCgmcGFyZW50KTsKLSAgICAgICAgQVNTRVJUKGl0
ZXJhdG9yICE9IG1fZGVwZW5kZW5jeUdyYXBoLmVuZCgpKTsKLSAgICAgICAgZW1pdE5hbWVkVHlw
ZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBpdGVyYXRvci0+dmFsdWUsIGVtaXR0
ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgidHlwZWRlZiAiLCBwYXJlbnRNYW5nbGVkTmFtZSwgJyAnLCBtYW5nbGVkTmFt
ZSwgIjtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpQb2ludGVyOiB7Ci0gICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNh
c3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8mIHBhcmVu
dCA9IHBvaW50ZXJUeXBlLmVsZW1lbnRUeXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xl
ZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVubmFtZWRU
eXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWROYW1lLCBl
bWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgdG9TdHJpbmcocG9pbnRlclR5cGUuYWRkcmVzc1Nw
YWNlKCkpLCAnICcsIHBhcmVudE1hbmdsZWROYW1lLCAiKiAiLCBtYW5nbGVkTmFtZSwgIjtcbiIp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpBcnJheVJlZmVyZW5jZTogewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBk
b3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAg
IGF1dG8mIHBhcmVudCA9IGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpOwotICAgICAg
ICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7Ci0g
ICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBw
YXJlbnRNYW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMp
OwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInN0cnVjdCAi
LCBtYW5nbGVkTmFtZSwgIiB7XG4iCi0gICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5
UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcGFyZW50TWFuZ2xlZE5hbWUsICIq
IHBvaW50ZXI7XG4iCi0gICAgICAgICAgICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIKLSAgICAg
ICAgICAgICJ9O1xuIgotICAgICAgICApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewotICAgICAgICBhdXRvJiBhcnJheVR5
cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1
dG8mIHBhcmVudCA9IGFycmF5VHlwZS50eXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xl
ZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVubmFtZWRU
eXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWROYW1lLCBl
bWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgcGFyZW50TWFuZ2xlZE5hbWUsICIsICIs
IGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBtYW5nbGVkTmFtZSwgIjtcbiIpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZChVbm5h
bWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0pOwotfQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE5h
bWVkVHlwZURlZmluaXRpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpOYW1l
ZFR5cGUmIG5hbWVkVHlwZSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5h
bWVkVHlwZT4+JiBuZWlnaGJvcnMsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5h
bWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKQot
ewotICAgIGlmIChlbWl0dGVkTmFtZWRUeXBlcy5jb250YWlucygmbmFtZWRUeXBlKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiB1bm5hbWVUeXBlIDogbmVpZ2hib3JzKQotICAg
ICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHVubmFtZVR5cGUs
IG1hbmdsZWROYW1lRm9yVHlwZSh1bm5hbWVUeXBlKSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0
ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAgc3dpdGNoIChuYW1lZFR5cGUua2luZCgpKSB7Ci0gICAg
Y2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOiB7Ci0gICAg
ICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1l
cmF0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0KLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0aW9u
RGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRp
b25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yRW51
bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1i
ZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fTtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6
S2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOiB7Ci0gICAgICAgIC8vIE5hdGl2ZSB0eXBlcyBh
bHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGluZyB0byBkby4KLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OlN0cnVjdHVyZURl
ZmluaXRpb246IHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0
PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZp
bml0aW9uKSwgIiB7XG4iKTsKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDog
c3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxl
bWVudC50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1
cmVFbGVtZW50KSwgIjtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6
VHlwZURlZmluaXRpb246IHsKLSAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3duY2Fz
dDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50
eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgZW1pdHRlZE5hbWVkVHlwZXMuYWRkKCZu
YW1lZFR5cGUpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURlZmluaXRpb25z
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgSGFzaFNldDxBU1Q6Ok5hbWVk
VHlwZSo+IGVtaXR0ZWROYW1lZFR5cGVzOwotICAgIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+IGVt
aXR0ZWRVbm5hbWVkVHlwZXM7Ci0gICAgZm9yIChhdXRvJiBbbmFtZWRUeXBlLCBuZWlnaGJvcnNd
IDogbV9kZXBlbmRlbmN5R3JhcGgpCi0gICAgICAgIGVtaXROYW1lZFR5cGVEZWZpbml0aW9uKHN0
cmluZ0J1aWxkZXIsICpuYW1lZFR5cGUsIG5laWdoYm9ycywgZW1pdHRlZE5hbWVkVHlwZXMsIGVt
aXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgIGZvciAoYXV0byYgW3VubmFtZWRUeXBlS2V5LCBtYW5n
bGVkTmFtZV0gOiBtX3VubmFtZWRUeXBlTWFwcGluZykKLSAgICAgICAgZW1pdFVubmFtZWRUeXBl
RGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpLCBt
YW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotfQot
Ci1NYW5nbGVkVHlwZU5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpVbm5h
bWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fdW5uYW1lZFR5
cGVNYXBwaW5nLmZpbmQoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLSAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV91bm5hbWVkVHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBp
dGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIFR5cGVOYW1lcjo6
bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAgaWYg
KGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICByZXR1
cm4gbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
PihuYW1lZFR5cGUpKTsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9uYW1lZFR5cGVNYXBwaW5nLmZp
bmQoJm5hbWVkVHlwZSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmFtZWRUeXBlTWFwcGlu
Zy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotTWFuZ2xlZEVudW1l
cmF0aW9uTWVtYmVyTmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1i
ZXIoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmZpbmQoJmVudW1lcmF0aW9u
TWVtYmVyKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9lbnVtZXJhdGlvbk1lbWJlck1hcHBp
bmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1hbmdsZWRTdHJ1
Y3R1cmVFbGVtZW50TmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVu
dChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAgYXV0byBp
dGVyYXRvciA9IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmcuZmluZCgmc3RydWN0dXJlRWxlbWVu
dCk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmcuZW5k
KCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjpl
bWl0TWV0YWxUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIFZpc2l0
b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci0KLSAgICBlbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKHN0
cmluZ0J1aWxkZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGVtaXRN
ZXRhbFR5cGVEZWZpbml0aW9ucyhzdHJpbmdCdWlsZGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
TWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYWQxYWU4MTA0MDVhY2I1OGRhZjkyN2IxY2M4
MjZmNjRjYzEwY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFt
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1h
bmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGVIYXNoLmgiCi0jaW5jbHVk
ZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9u
OwotY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7Ci1jbGFzcyBOYW1lZFR5cGU7Ci1jbGFzcyBOYXRp
dmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uOwotY2xhc3MgVHlw
ZURlZmluaXRpb247Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotfQotCi1jbGFzcyBQcm9ncmFtOwot
Ci1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBCYXNlVHlwZU5hbWVOb2RlOwotCi1jbGFzcyBU
eXBlTmFtZXIgOiBwcml2YXRlIFZpc2l0b3IgewotcHVibGljOgotICAgIFR5cGVOYW1lcihQcm9n
cmFtJik7Ci0gICAgdmlydHVhbCB+VHlwZU5hbWVyKCk7Ci0KLSAgICB2b2lkIGVtaXRNZXRhbFR5
cGVzKFN0cmluZ0J1aWxkZXImKTsKLQotICAgIC8vIE11c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxp
bmcgZW1pdE1ldGFsVHlwZXMoKS4KLSAgICBTdHJpbmcgbWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1hbmdsZWROYW1l
Rm9yVHlwZShBU1Q6OlVubmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUg
bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZEVudW1lcmF0
aW9uTWVtYmVyTmFtZSBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKEFTVDo6RW51bWVy
YXRpb25NZW1iZXImKTsKLSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFuZ2xlZE5h
bWVGb3JTdHJ1Y3R1cmVFbGVtZW50KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpOwotCi0gICAgTWFu
Z2xlZFR5cGVOYW1lIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkgeyByZXR1cm4geyBtX3R5cGVDb3Vu
dCsrIH07IH0KLSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZ2VuZXJhdGVOZXh0U3Ry
dWN0dXJlRWxlbWVudE5hbWUoKSB7IHJldHVybiB7IG1fc3RydWN0dXJlRWxlbWVudENvdW50Kysg
fTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxs
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotCi0gICAgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFt
ZSBnZW5lcmF0ZU5leHRFbnVtZXJhdGlvbk1lbWJlck5hbWUoKSB7IHJldHVybiB7IG1fZW51bWVy
YXRpb25NZW1iZXJDb3VudCsrIH07IH0KLQotICAgIHZvaWQgZW1pdE5hbWVkVHlwZURlZmluaXRp
b24oU3RyaW5nQnVpbGRlciYsIEFTVDo6TmFtZWRUeXBlJiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+JiwgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBl
bWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVk
VHlwZXMpOwotICAgIHZvaWQgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWlsZGVy
JiwgQVNUOjpVbm5hbWVkVHlwZSYsIE1hbmdsZWRUeXBlTmFtZSwgSGFzaFNldDxBU1Q6Ok5hbWVk
VHlwZSo+JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0
ZWRVbm5hbWVkVHlwZXMpOwotICAgIHZvaWQgZW1pdE1ldGFsVHlwZURlY2xhcmF0aW9ucyhTdHJp
bmdCdWlsZGVyJik7Ci0gICAgdm9pZCBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoU3RyaW5nQnVp
bGRlciYpOwotCi0gICAgdm9pZCBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShBU1Q6OlVubmFtZWRU
eXBlJik7Ci0KLSAgICBQcm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgSGFzaE1hcDxVbm5hbWVkVHlw
ZUtleSwgTWFuZ2xlZFR5cGVOYW1lPiBtX3VubmFtZWRUeXBlTWFwcGluZzsKLSAgICBIYXNoTWFw
PEFTVDo6TmFtZWRUeXBlKiwgTWFuZ2xlZFR5cGVOYW1lPiBtX25hbWVkVHlwZU1hcHBpbmc7Ci0g
ICAgSGFzaE1hcDxBU1Q6Ok5hbWVkVHlwZSosIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6VW5uYW1lZFR5cGU+Pj4gbV9kZXBlbmRlbmN5R3JhcGg7Ci0gICAgSGFzaE1hcDxBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyKiwgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZT4gbV9lbnVt
ZXJhdGlvbk1lbWJlck1hcHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6OlN0cnVjdHVyZUVsZW1lbnQq
LCBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWU+IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmc7
Ci0gICAgdW5zaWduZWQgbV90eXBlQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9lbnVtZXJh
dGlvbk1lbWJlckNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fc3RydWN0dXJlRWxlbWVudENv
dW50IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENh
bGN1bGF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGFkMmQ5ZDdmZmZm
YzM0ZWMzNjRmNjEyNTc0MjYyNmMwODU3NzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgTWV0YWwgewotCi11bnNpZ25lZCBjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRl
eCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBSZXNlcnZlIHRoZSBmaXJzdCBmZXcgTVRMQnVm
ZmVyIHNsb3RzIGZvciBhcmd1bWVudCBidWZmZXJzIGZvciBHUFVCaW5kR3JvdXBzLgotICAgIHJl
dHVybiBpbmRleCArIDg7Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENh
bGN1bGF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1NGQwZjM1YmMyMWE3
MDZhNjcyNmRkOTEwOTRmNDJkYmU4NzU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4
KHVuc2lnbmVkKTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQVNURHVtcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQVNURHVtcGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwNGZkMWRm
ZDRkZWU5ODFmZjcyNjZmYTdjZDY4NDMyY2IxNGExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEFTVER1bXBlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIK
LSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkK
LXsKLSAgICBtX291dC5wcmludGxuKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
b2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNp
dChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0u
bmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxu
XG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLm5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLm5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNp
emUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ldKTsK
LSAgICBpZiAocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0
LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3Ry
dWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS5z
dHJ1Y3R1cmVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZp
bml0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygp
W2ldKTsKLSAgICBpZiAocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpKQot
ICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlz
aXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotCi0gICAgbV9vdXQucHJpbnRs
bigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1l
ZFR5cGUpCi17Ci0gICAgQmFzZTo6dmlzaXQodW5uYW1lZFR5cGUpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBCYXNlOjp2aXNp
dChuYW1lZFR5cGUpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5p
dGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQoInR5cGVkZWYgIiwgdHlw
ZURlZmluaXRpb24ubmFtZSgpLCAiID0gIik7Ci0gICAgdmlzaXQodHlwZURlZmluaXRpb24udHlw
ZSgpKTsKLSAgICBtX291dC5wcmludGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAg
bV9vdXQucHJpbnRsbihtX2luZGVudCwgInN0cnVjdCAiLCBzdHJ1Y3R1cmVEZWZpbml0aW9uLm5h
bWUoKSwgIiB7Iik7Ci0gICAgewotICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsK
LSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlv
bi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVu
dCk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7Ci0gICAgbV9vdXQu
cHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVt
ZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAg
ICB2aXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiAiLCBz
dHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSk7Ci0gICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50
aWMoKSkKLSAgICAgICAgdmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7Ci0gICAg
bV9vdXQucHJpbnRsbigiOyIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBtX291dC5w
cmludChtX2luZGVudCwgImVudW0gIik7Ci0gICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9u
LnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiB7Iik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8g
aW5kZW50ID0gYnVtcEluZGVudCgpOwotICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICAg
ICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5l
bnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAgICAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAg
ICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICBtX291dC5wcmludGxuKCk7Ci0g
ICAgICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7Ci0gICAgICAgICAgICB2aXNpdChlbnVt
ZXJhdGlvbk1lbWJlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX291dC5wcmludGxuKCk7
Ci0gICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgIn0iKTsKLSAgICBtX291dC5wcmludGxuKCk7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBlbnVt
ZXJhdGlvbk1lbWJlcikKLXsKLSAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJlci5uYW1l
KCksICIgPSAiLCBlbnVtZXJhdGlvbk1lbWJlci52YWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17
Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgIHZpc2l0KGZ1
bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLSAgICBtX291dC5wcmludCgiXG5cbiIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsK
LSAgICBtX291dC5wcmludCgibmF0aXZlICIpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLSAgICBt
X291dC5wcmludGxuKCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgdmlzaXQoZnVuY3Rpb25E
ZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlv
bi5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICBtX291dC5wcmludChBU1Q6OnRvU3RyaW5nKCpm
dW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBlKCkpLCAiICIpOwotICAgIHZpc2l0KGZ1
bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiICIsIGZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpLCAiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZv
ciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpIHsK
LSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAg
ICAgb25jZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0KHBhcmFtZXRlcik7Ci0gICAgfQotICAgIG1f
b3V0LnByaW50KCIpIik7Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSkK
LSAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIiAiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQo
bV9pbmRlbnQsICJuYXRpdmUgdHlwZWRlZiAiKTsKLSAgICBtX291dC5wcmludChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIjwiKTsKLSAgICAgICAg
Ym9vbCBvbmNlID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKSkgewotICAgICAgICAgICAgaWYgKG9u
Y2UpCi0gICAgICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICBvbmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9vdXQucHJpbnQoIj4iKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJl
bmNlKQotewotICAgIG1fb3V0LnByaW50KHR5cGVSZWZlcmVuY2UubmFtZSgpKTsKLQotICAgIGlm
ICh0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAgYm9vbCBv
bmNlID0gZmFsc2U7Ci0gICAgICAgIG1fb3V0LnByaW50KCI8Iik7Ci0gICAgICAgIGZvciAoYXV0
byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpIHsKLSAgICAg
ICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAg
ICAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi17Ci0gICAgdmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRlclR5cGUpKTsKLSAgICBt
X291dC5wcmludCgiKiIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICB2aXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLSAgICBtX291dC5w
cmludCgiW10iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBh
cnJheVR5cGUpCi17Ci0gICAgdmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJp
bnQoIlsiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIl0iKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgQmFzZTo6
dmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVm
ZXJlbmNlVHlwZSYgcmVmZXJlbmNlVHlwZSkKLXsKLSAgICBtX291dC5wcmludChBU1Q6OnRvU3Ry
aW5nKHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAiICIpOwotICAgIHZpc2l0KHJlZmVy
ZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OlNlbWFudGljJiBzZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludCgiIDogIik7Ci0gICAgV1RG
Ojp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJ
blNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgfSwgWyZd
KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VTZW1hbnRpYykgewotICAgICAgICB2aXNp
dChyZXNvdXJjZVNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYykgewotICAgICAgICB2
aXNpdChzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlN0
YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KHN0
YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgfSksIHNlbWFudGljKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17
Ci0gICAgQmFzZTo6dmlzaXQoY29uc3RhbnRFeHByZXNzaW9uKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0dHJpYnV0ZUJsb2NrKQotewotICAgIGlm
IChhdHRyaWJ1dGVCbG9jay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fb3V0
LnByaW50KCJbIik7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGF0dHJpYnV0
ZUJsb2NrKQotICAgICAgICB2aXNpdChmdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgbV9vdXQucHJp
bnQoIl0gIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRp
YyYgYnVpbHRJblNlbWFudGljKQotewotICAgIG1fb3V0LnByaW50KGJ1aWx0SW5TZW1hbnRpYy50
b1N0cmluZygpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1h
bnRpYyYgcmVzb3VyY2VTZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludChyZXNvdXJjZVNlbWFu
dGljLnRvU3RyaW5nKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMmKQotewotICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcyB3
aGVuIHdlIGltcGxlbWVudCBpdC4KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQo
ImF0dHJpYnV0ZSgiLCBzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSwgIikiKTsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKQot
ewotICAgIG1fb3V0LnByaW50KGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVn
ZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFs
dWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxv
YXRMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KGZsb2F0TGl0ZXJhbC52YWx1ZSgpKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRl
cmFsKQotewotICAgIGlmIChib29sZWFuTGl0ZXJhbC52YWx1ZSgpKQotICAgICAgICBtX291dC5w
cmludCgidHJ1ZSIpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQoImZhbHNlIik7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpCi17Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JikKLXsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYp
Ci17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5sZWZ0KCksICIuIiwgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LnJpZ2h0KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJp
YnV0ZSYgZnVuY3Rpb25BdHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlKSB7Ci0gICAgICAgIHZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZSk7Ci0gICAgfSksIGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzQXR0cmlidXRl
KQotewotICAgIG1fb3V0LnByaW50KCJudW10aHJlYWRzKCIsIG51bVRocmVhZHNBdHRyaWJ1dGUu
d2lkdGgoKSwgIiwgIiwgbnVtVGhyZWFkc0F0dHJpYnV0ZS5oZWlnaHQoKSwgIiwgIiwgbnVtVGhy
ZWFkc0F0dHJpYnV0ZS5kZXB0aCgpLCAiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpCbG9jayYgYmxvY2spCi17Ci0gICAgbV9vdXQucHJpbnRsbigieyIpOwotICAgIHsKLSAg
ICAgICAgYXV0byBpbmRlbnQgPSBidW1wSW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3Rh
dGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKSB7Ci0gICAgICAgICAgICBtX291dC5wcmludCht
X2luZGVudCk7Ci0gICAgICAgICAgICB2aXNpdChzdGF0ZW1lbnQpOwotICAgICAgICAgICAgbV9v
dXQucHJpbnRsbigiOyIpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fb3V0LnByaW50KG1faW5k
ZW50LCAifSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0
YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0JiBzdGF0ZW1lbnRMaXN0KQotewotICAgIGJv
b2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogc3RhdGVtZW50TGlz
dC5zdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5w
cmludCgiO1xuIiwgbV9pbmRlbnQpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlz
aXQoc3RhdGVtZW50KTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJy
ZWFrJikKLXsKLSAgICBtX291dC5wcmludCgiYnJlYWsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6Q29udGludWUmKQotewotICAgIG1fb3V0LnByaW50KCJjb250aW51ZSIpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsK
LSAgICBtX291dC5wcmludCgid2hpbGUgKCIpOwotICAgIHZpc2l0KHdoaWxlTG9vcC5jb25kaXRp
b25hbCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotICAgIHZpc2l0KHdoaWxlTG9vcC5ib2R5
KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGls
ZUxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoImRvICIpOwotICAgIHZpc2l0KGRvV2hpbGVMb29w
LmJvZHkoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiB3aGlsZSgiKTsKLSAgICB2aXNpdChkb1doaWxl
TG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIG1fb3V0LnByaW50
KCJmb3IgKCIpOwotICAgIHZpc2l0KGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0gICAgbV9v
dXQucHJpbnQoIjsgIik7Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0gICAgICAgIHZp
c2l0KCpmb3JMb29wLmNvbmRpdGlvbigpKTsKLSAgICBtX291dC5wcmludCgiOyAiKTsKLSAgICBp
ZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKLSAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5jcmVtZW50
KCkpOwotICAgIG1fb3V0LnByaW50KCIpICIpOwotICAgIHZpc2l0KGZvckxvb3AuYm9keSgpKTsK
LX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
LXsKLSAgICBib29sIHNraXBQYXJlbnMgPSBpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNz
aW9uKQotICAgICAgICB8fCBpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAg
ICAgfHwgaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8fCBpczxB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8
QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6VmFy
aWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOwotCi0gICAgaWYgKGF1dG8qIGFubm90YXRpb24g
PSBleHByZXNzaW9uLm1heWJlVHlwZUFubm90YXRpb24oKSkgewotICAgICAgICBpZiAoYXV0byBh
ZGRyZXNzU3BhY2UgPSBhbm5vdGF0aW9uLT5sZWZ0QWRkcmVzc1NwYWNlKCkpCi0gICAgICAgICAg
ICBtX291dC5wcmludCgiPExWOiIsIEFTVDo6dG9TdHJpbmcoKmFkZHJlc3NTcGFjZSkpOwotICAg
ICAgICBlbHNlIGlmIChhbm5vdGF0aW9uLT5pc0Fic3RyYWN0TGVmdFZhbHVlKCkpCi0gICAgICAg
ICAgICBtX291dC5wcmludCgiPEFMViIpOwotICAgICAgICBlbHNlIGlmIChhbm5vdGF0aW9uLT5p
c1JpZ2h0VmFsdWUoKSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCI8UlYiKTsKLQotICAgICAg
ICBtX291dC5wcmludCgiLCAiLCBleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLnRvU3RyaW5nKCks
ICI+Iik7Ci0KLSAgICAgICAgc2tpcFBhcmVucyA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmICgh
c2tpcFBhcmVucykKLSAgICAgICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICBCYXNlOjp2aXNpdChl
eHByZXNzaW9uKTsKLSAgICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnByaW50KCIp
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4
cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24mPihkb3RFeHByZXNzaW9uKSk7Ci0gICAgbV9vdXQucHJpbnQoIi4iLCBkb3RFeHBy
ZXNzaW9uLmZpZWxkTmFtZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6R2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIHZp
c2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9vdXQucHJpbnQoIj0+
IiwgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKS5uYW1lKCkpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lv
bikKLXsKLSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biY+KGluZGV4RXhwcmVzc2lvbikpOwotICAgIG1fb3V0LnByaW50KCJbIik7Ci0gICAgdmlzaXQo
aW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiXSIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24mIGV4cHJlc3Npb24pCi17Ci0gICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoZWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZh
bGx0aHJvdWdoJikKLXsKLSAgICBtX291dC5wcmludCgiZmFsbHRocm91Z2giKTsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAg
IG1fb3V0LnByaW50KCJpZiAoIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwo
KSk7Ci0gICAgbV9vdXQucHJpbnQoIikgIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgp
KTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewotICAgICAgICBtX291dC5wcmlu
dCgiIGVsc2UgIik7Ci0gICAgICAgIHZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVt
ZW50KQotewotICAgIG1fb3V0LnByaW50KCJyZXR1cm4iKTsKLSAgICBpZiAocmV0dXJuU3RhdGVt
ZW50LnZhbHVlKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICAgICAgdmlzaXQo
KnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIG1fb3V0
LnByaW50KCJzd2l0Y2ggKCIpOwotICAgIHZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsK
LSAgICBtX291dC5wcmludGxuKCIpIHsiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBm
b3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewot
ICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50bG4oKTsKLSAgICAgICAg
b25jZSA9IHRydWU7Ci0gICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICAgICAgdmlz
aXQoc3dpdGNoQ2FzZSk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCJcbiIsIG1faW5kZW50LCAi
fSIpOwotCi19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRj
aENhc2UpCi17Ci0gICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX291dC5w
cmludCgiY2FzZSAiKTsKLSAgICAgICAgdmlzaXQoKnN3aXRjaENhc2UudmFsdWUoKSk7Ci0gICAg
ICAgIG1fb3V0LnByaW50KCI6ICIpOwotICAgIH0gZWxzZQotICAgICAgICBtX291dC5wcmludCgi
ZGVmYXVsdDogIik7Ci0gICAgdmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotewotICAgIEJhc2U6OnZpc2l0KHZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAodmFyaWFi
bGVEZWNsYXJhdGlvbi50eXBlKCkpIHsKLSAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRp
b24udHlwZSgpKTsKLSAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICB9Ci0KLSAgICBpZiAo
dmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICBtX291dC5wcmlu
dCgiJCIsIFJhd1BvaW50ZXIoJnZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fb3V0LnByaW50KHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKTsKLQotICAgIGlmICh2
YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCp2YXJpYWJsZURl
Y2xhcmF0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRp
YWxpemVyKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgICAgICB2aXNpdCgq
dmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVz
c2lvbikKLXsKLSAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1f
b3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgp
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxF
eHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgIigi
KTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2Fs
bEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAg
ICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0
KGFyZ3VtZW50KTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0g
ICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1
dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAgIGlmIChv
bmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVl
OwotICAgICAgICB2aXNpdChleHByZXNzaW9uKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIiki
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9u
JiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIioiKTsKLSAgICB2
aXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewot
ICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ubGVmdCgp
KTsKLSAgICBzd2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewotICAgIGNhc2UgQVNU
OjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kOgotICAgICAgICBtX291dC5wcmludCgiICYm
ICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5
cGU6Ok9yOgotICAgICAgICBtX291dC5wcmludCgiIHx8ICIpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9vdXQucHJp
bnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIhKCIpOwot
ICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9vdXQucHJp
bnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBtX291
dC5wcmludCgiQCIpOwotICAgIHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVm
dFZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiJiIp
OwotICAgIHZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBvbGRWYXJpYWJsZSA9IHJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICBhdXRvIG5ld1Zh
cmlhYmxlID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYXJpYWJsZVJlZmVyZW5jZSgp
OwotCi0gICAgbV9vdXQucHJpbnQoIlJNVygiKTsKLSAgICB2aXNpdChvbGRWYXJpYWJsZS5nZXQo
KSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0gICAgdmlz
aXQobmV3VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNp
dChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICBt
X291dC5wcmludCgiLCAiKTsKLQotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChuZXdWYXJp
YWJsZS5nZXQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChyZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQo
IikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24m
IHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLnByZWRp
Y2F0ZSgpKTsKLSAgICBtX291dC5wcmludCgiID8gIik7Ci0gICAgdmlzaXQodGVybmFyeUV4cHJl
c3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA6ICIpOwotICAgIHZp
c2l0KHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpCi17
Ci0gICAgaWYgKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIG1f
b3V0LnByaW50KCIkIiwgUmF3UG9pbnRlcih2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKSk7
Ci0gICAgZWxzZQotICAgICAgICBtX291dC5wcmludCh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYWEwMjczNmZjMDJiZDMxNDBmZjM4OGY3ZDUwMmI4YmNlMmM0YmI3Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi0jaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1jbGFzcyBBU1REdW1wZXIgOiBWaXNpdG9yIHsKLSAgICB1c2luZyBC
YXNlID0gVmlzaXRvcjsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlk
ZTsKLQotICAgIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuIG1fb3V0LnRvU3RyaW5nKCk7IH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpOYW1lZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlw
ZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkFycmF5VHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1
cmVFbGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0
ZUJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50
ZWdlckxpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0
TGl0ZXJhbFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0
cmlidXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpCcmVhayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdo
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENhc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkNvbW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbEV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYp
IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBJbmRlbnQgewotICAgICAgICBJbmRl
bnQoQVNURHVtcGVyJiBkdW1wZXIpCi0gICAgICAgICAgICA6IG1fc2NvcGUoZHVtcGVyLm1faW5k
ZW50LCBkdW1wZXIubV9pbmRlbnQgKyAiICAgIikKLSAgICAgICAgeyB9Ci0gICAgICAgIFNldEZv
clNjb3BlPFN0cmluZz4gbV9zY29wZTsKLSAgICB9OwotCi0gICAgSW5kZW50IGJ1bXBJbmRlbnQo
KSB7IHJldHVybiBJbmRlbnQoKnRoaXMpOyB9Ci0KLSAgICBmcmllbmQgc3RydWN0IEluZGVudDsK
LQotICAgIFN0cmluZ1ByaW50U3RyZWFtIG1fb3V0OwotICAgIFN0cmluZyBtX2luZGVudDsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIGR1bXBBU1ROb2Rl
KFByaW50U3RyZWFtJiBvdXQsIFQmIHZhbHVlKQotewotICAgIEFTVER1bXBlciBkdW1wZXI7Ci0g
ICAgZHVtcGVyLnZpc2l0KHZhbHVlKTsKLSAgICBvdXQucHJpbnQoZHVtcGVyLnRvU3RyaW5nKCkp
OwotfQotTUFLRV9QUklOVF9BREFQVE9SKEV4cHJlc3Npb25EdW1wZXIsIEFTVDo6RXhwcmVzc2lv
biYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihTdGF0ZW1lbnREdW1wZXIsIEFT
VDo6U3RhdGVtZW50JiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFByb2dyYW1E
dW1wZXIsIFByb2dyYW0mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoU3RydWN0
dXJlRGVmaW5pdGlvbkR1bXBlciwgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiwgZHVtcEFTVE5v
ZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKEZ1bmN0aW9uRGVmaW5pdGlvbkR1bXBlciwgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbkR1bXBlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFR5cGVEdW1wZXIsIEFTVDo6
VW5uYW1lZFR5cGUmLCBkdW1wQVNUTm9kZSk7Ci0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgdm9p
ZCBkdW1wQVNUKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgZGF0YUxvZ0xuKFByb2dyYW1EdW1w
ZXIocHJvZ3JhbSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhiNzE3ODk1NDQ4OTkwZGM4YWM2ODc3YmMxMDRkOWRiYThlNjkxNDYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0j
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IHN5cwotaW1wb3J0IHJlCi0KLXJlZ3VsYXJFeHByZXNzaW9uID0gcmUuY29tcGlsZShyIi9cKiBG
dW5jdGlvbnMgbmFtZWQgKC4qKSBcKi8iKQotCi1pbmZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAi
ciIpCi1jb250ZW50cyA9IGluZmlsZS5yZWFkKCkKLWluZmlsZS5jbG9zZSgpCi0KLW91dGZpbGUg
PSBvcGVuKHN5cy5hcmd2WzJdLCAidyIpCi1vdXRmaWxlLndyaXRlKCIiIgotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotSGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xv
Y2F0aW9uPiBjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKQotewotICAgIEhhc2hN
YXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gcmVzdWx0OwotIiIiKQotCi0jIEZJWE1FOiBD
b21wdXRlIFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwIGF0IGJ1aWxkLXRpbWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTQ0OAotCi1wcmV2aW91cyA9IDAKLXBy
ZXZpb3VzTmFtZSA9ICIiCi1ib3VuZGFyeSA9IDAKLWZvciBtYXRjaCBpbiByZWd1bGFyRXhwcmVz
c2lvbi5maW5kaXRlcihjb250ZW50cyk6Ci0gICAgaWYgcHJldmlvdXMgPT0gMDoKLSAgICAgICAg
cHJldmlvdXMgPSBtYXRjaC5zdGFydCgpCi0gICAgICAgIGJvdW5kYXJ5ID0gcHJldmlvdXMKLSAg
ICAgICAgcHJldmlvdXNOYW1lID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgY29udGludWUKLSAg
ICBvdXRmaWxlLndyaXRlKCIgICAgcmVzdWx0LmFkZChcIiIgKyBwcmV2aW91c05hbWUgKyAiXCJf
c3RyLCBTdWJzdHJpbmdMb2NhdGlvbiB7ICIgKyBzdHIocHJldmlvdXMpICsgIiwgIiArIHN0ciht
YXRjaC5zdGFydCgpKSArICIgfSk7XG4iKQotICAgIHByZXZpb3VzID0gbWF0Y2guc3RhcnQoKQot
ICAgIHByZXZpb3VzTmFtZSA9IG1hdGNoLmdyb3VwKDEpCi1vdXRmaWxlLndyaXRlKCIgICAgcmVz
dWx0LmFkZChcIiIgKyBwcmV2aW91c05hbWUgKyAiXCJfc3RyLCBTdWJzdHJpbmdMb2NhdGlvbiB7
ICIgKyBzdHIocHJldmlvdXMpICsgIiwgIiArIHN0cihsZW4oY29udGVudHMpKSArICIgfSk7XG4i
KQotb3V0ZmlsZS53cml0ZSgiIiIKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi11bnNpZ25lZCBm
aXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKQotewotIiIiKQotCi1vdXRmaWxl
LndyaXRlKCIgICAgcmV0dXJuICIgKyBzdHIoYm91bmRhcnkpICsgIjtcbiIpCi0KLW91dGZpbGUu
d3JpdGUoIiIiCi19Ci0KLX0KLQotfQotCi0jZW5kaWYKLSIiIikKLW91dGZpbGUuY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDU5YmVkMWVjZWQ0NmRiMWQ3ZmE3YmZiNGUxYzNlMzQ4M2MzMTczYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEluZmVy
VHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRHVwbGljYXRlRnVuY3Rpb25LZXkg
ewotcHVibGljOgotICAgIER1cGxpY2F0ZUZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0OwotICAgIER1
cGxpY2F0ZUZ1bmN0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICB7
Ci0gICAgICAgIG1fZnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7Ci0gICAgfQotCi0gICAgRHVwbGljYXRl
RnVuY3Rpb25LZXkoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikKLSAg
ICAgICAgOiBtX2Z1bmN0aW9uKCZmdW5jdGlvbikKLSAgICB7IH0KLQotICAgIGJvb2wgaXNFbXB0
eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1fZnVuY3Rpb247IH0KLSAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbiA9PSBiaXR3aXNlX2Nh
c3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQg
aGFzaCA9IEludEhhc2g8c2l6ZV90Pjo6aGFzaChtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6
ZSgpKTsKLSAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT5uYW1lKCkuaGFzaCgpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+cGFyYW1ldGVycygpW2ldLT50
eXBlKCktPmhhc2goKTsKLQotICAgICAgICBpZiAobV9mdW5jdGlvbi0+aXNDYXN0KCkpCi0gICAg
ICAgICAgICBoYXNoIF49IG1fZnVuY3Rpb24tPnR5cGUoKS5oYXNoKCk7Ci0KLSAgICAgICAgcmV0
dXJuIGhhc2g7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IER1cGxpY2F0ZUZ1
bmN0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5w
YXJhbWV0ZXJzKCkuc2l6ZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXpl
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24t
Pm5hbWUoKSAhPSBvdGhlci5tX2Z1bmN0aW9uLT5uYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9IEFTVDo6TmFt
ZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkKLSAgICAgICAgICAgICYmIG90aGVyLm1fZnVuY3Rpb24t
Pm5hbWVTcGFjZSgpICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkKLSAgICAgICAg
ICAgICYmIG1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPm5hbWVT
cGFjZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIEFTU0VSVChtX2Z1
bmN0aW9uLT5pc0Nhc3QoKSA9PSBvdGhlci5tX2Z1bmN0aW9uLT5pc0Nhc3QoKSk7Ci0KLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcygqbV9mdW5jdGlvbi0+cGFyYW1ldGVy
cygpW2ldLT50eXBlKCksICpvdGhlci5tX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUo
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFtX2Z1bmN0aW9uLT5pc0Nhc3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgICAgIGlmIChtYXRjaGVzKG1fZnVuY3Rpb24tPnR5cGUoKSwgb3RoZXIubV9mdW5jdGlvbi0+
dHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBrZXkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBrZXkuaGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgRHVwbGljYXRlRnVuY3Rpb25LZXkmIGEsIGNvbnN0IER1cGxpY2F0ZUZ1bmN0
aW9uS2V5JiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1YmxpYyBXVEY6
OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxEdXBsaWNhdGVGdW5jdGlvbktleT4gewotICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYga2V5
KSB7IHJldHVybiBrZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAg
IGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxwdHIgfTsK
LX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25z
dCBQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGF1dG8gcGFzc2VzU3RhdGljQ2hlY2tzID0gWyZd
IChjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKSAtPiBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gewotICAgICAgICBpZiAoZnVuY3Rpb24ubmFtZSgpID09ICJvcGVyYXRvcj09
IgotICAgICAgICAgICAgJiYgZnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyCi0gICAg
ICAgICAgICAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IEFTVDo6
VW5uYW1lZFR5cGUmPigqZnVuY3Rpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKQotICAgICAg
ICAgICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBBU1Q6OlVu
bmFtZWRUeXBlJj4oKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAgICAgICAg
ICAgICYmIG1hdGNoZXMoKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLCAqZnVuY3Rp
b24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJDYW5ub3QgZGVmaW5lIG9wZXJhdG9yPT0gb24gdHdvIHJlZmVyZW5jZSB0
eXBlcy4iKSk7Ci0gICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9uLmlzQ2FzdCgpICYmIGZ1bmN0aW9u
LnBhcmFtZXRlcnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9
IGZ1bmN0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5h
bWVkVHlwZT4odW5pZnlOb2RlKSAmJiBpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICAgICAgICAg
ICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlwZSgpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBkZWZpbmUgYSBj
YXN0IG9uIGFuIG9wYXF1ZSB0eXBlLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKLQotICAgIEhhc2hTZXQ8RHVwbGljYXRlRnVuY3Rp
b25LZXksIER1cGxpY2F0ZUZ1bmN0aW9uS2V5OjpIYXNoLCBEdXBsaWNhdGVGdW5jdGlvbktleTo6
VHJhaXRzPiBmdW5jdGlvbnM7Ci0KLSAgICBhdXRvIGFkZCA9IFsmXSAoY29uc3QgQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBmdW5jdGlvbnMuYWRkKER1cGxpY2F0ZUZ1bmN0aW9uS2V5
IHsgZnVuY3Rpb24gfSk7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkZvdW5kIGR1cGxpY2F0ZSBmdW5j
dGlvbiIpKTsKLSAgICAgICAgcmV0dXJuIHBhc3Nlc1N0YXRpY0NoZWNrcyhmdW5jdGlvbik7Ci0g
ICAgfTsKLQotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5j
dGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBhZGQoZnVuY3Rp
b25EZWZpbml0aW9uLmdldCgpKTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQpCi0gICAgICAgICAg
ICByZXR1cm4gYWRkUmVzdWx0OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewot
ICAgICAgICAvLyBXZSBnZW5lcmF0ZSBkdXBsaWNhdGUgbmF0aXZlIGZ1bmN0aW9uIGRlY2xhcmF0
aW9ucyBpbiBzeW50aGVzaXplIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgLy8gRklYTUU6IGlzIHRo
aXMgcmlnaHQ/Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTg1ODAKLSAgICAgICAgLy8KLSAgICAgICAgLy8gU2luY2Ugd2UgZG8gdGhhdCwgd2Ug
anVzdCBuZWVkIHRvIG1ha2Ugc3VyZSBubyBuYXRpdmUgZnVuY3Rpb24gaXMgYSBkdXBsaWNhdGUK
LSAgICAgICAgLy8gb2YgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24uCi0KLSAgICAgICAgLy8gRklY
TUU6IEFkZCBiYWNrIHRoaXMgYXNzZXJ0IG9uY2Ugd2UgYmVnaW4gdG8gYXV0byBnZW5lcmF0ZSB0
aGVzZSBpbiB0aGUgY29tcGlsZXIKLSAgICAgICAgLy8gaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBp
biB0aGUgc3RkbGliCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTg4NjEKLSAgICAgICAgLy8gQVNTRVJUKHBhc3Nlc1N0YXRpY0NoZWNrcyhuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLmdldCgpKSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbnMuY29u
dGFpbnMoRHVwbGljYXRlRnVuY3Rpb25LZXkgeyBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmdl
dCgpIH0pKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNh
dGUgbmF0aXZlIGZ1bmN0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi19
IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25z
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDdkMzJlNTJlNmE0ZTI3MGIxOThk
MjM1OTU3MjY5MzhiYjc2MGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1
cGxpY2F0ZUZ1bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25z
dCBQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTUzMTU0NzM5NDg2MDQxNmM1YmU3MjJkMjlkNjVlM2I0ZWRjNTU0Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNp
dG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUmVmZXJlbmNlVHlwZUNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6
Ci0gICAgUmVmZXJlbmNlVHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UmVm
ZXJlbmNlVHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQUxXQVlTX0lO
TElORSB2b2lkIGNoZWNrVHlwZShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlLCBDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uLCBjb25zdCBjaGFyKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIGF1dG8mIHVu
aWZpZWRUeXBlID0gdHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6UmVmZXJl
bmNlVHlwZT4odW5pZmllZFR5cGUpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcihlcnJv
ciwgY29kZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKQotICAgICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBl
KSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5j
ZVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja1R5cGUocmVmZXJlbmNlVHlwZS5l
bGVtZW50VHlwZSgpLCByZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpLCAicmVmZXJlbmNlIHR5
cGUgY2Fubm90IGhhdmUgYW5vdGhlciByZWZlcmVuY2UgdHlwZSBhcyBhbiBpbm5lciB0eXBlIik7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tUeXBlKGFycmF5VHlwZS50eXBlKCksIGFycmF5VHlw
ZS5jb2RlTG9jYXRpb24oKSwgImFycmF5IHR5cGUgY2Fubm90IGhhdmUgYSByZWZlcmVuY2UgdHlw
ZSBhcyBpdHMgaW5uZXIgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1
Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
Y2hlY2tUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpLCBzdHJ1Y3R1cmVFbGVtZW50LmNvZGVM
b2NhdGlvbigpLCAiY2Fubm90IGhhdmUgYSBzdHJ1Y3R1cmUgZmllbGQgd2hpY2ggaXMgYSByZWZl
cmVuY2UgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVz
c2lvbik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICB9Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZlcmVuY2VU
eXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoaXMgcGFzcyBkb2VzIHRoZXNlIHRo
aW5nczoKLSAgICAvLyAxLiBEaXNhbGxvdyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFy
ZSByZWZlcmVuY2VzLiBUaGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCi0gICAgLy8gZmln
dXJlIG91dCBob3cgdG8gZGVmYXVsdCBpbml0aWFsaXplIHN1Y2ggYSBzdHJ1Y3QuIFdlIGNvdWxk
IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSBpZiB3ZQotICAgIC8vIGRpZCBhbiBhbmFseXNpcyBv
biB3aGljaCBzdHJ1Y3RzIGNvbnRhaW4gcmVmZXJlbmNlIGZpZWxkcywgYW5kIGVuc3VyZSBzdWNo
IHN0cnVjdCB2YXJpYWJsZXMKLSAgICAvLyBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMg
d291bGQgYWxzbyByZXF1aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMg
d2hpY2gKLSAgICAvLyBpbml0aWFsaXplIGVhY2ggZmllbGQuCi0gICAgLy8gMi4gV2UgYWxzbyBk
byB0aGUgc2FtZSBmb3IgYXJyYXlzLgotICAgIC8vIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUg
b25lIGxldmVsIGRlZXAuIFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2Vz
IHRvCi0gICAgLy8gcmVmZXJlbmNlcywgZXRjLiBUaGlzIGlzIHRvIHN1cHBvcnQgbG9naWNhbCBt
b2RlLgotICAgIFJlZmVyZW5jZVR5cGVDaGVja2VyIHJlZmVyZW5jZVR5cGVDaGVja2VyOwotICAg
IHJlZmVyZW5jZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICBy
ZXR1cm4gcmVmZXJlbmNlVHlwZUNoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc1MzYyYTgwNDQyM2IyYTBmZTI4NTNjMzczMjJlMjYxZTcxODE3NzYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5j
bHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNr
UmVmZXJlbmNlVHlwZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmNlNmMwMDM4N2VjMWNjOGViYWU1NDQ3N2ViOTYy
MzkzOWNkYmIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVm
ZXJlbmNlcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5j
ZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJy
YXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5o
IgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFRleHR1cmVSZWZlcmVuY2Vz
Q2hlY2tlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBUZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5UZXh0dXJlUmVmZXJl
bmNlc0NoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlBvaW50ZXJUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJl
bmNlVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgYm9v
bCBjb250YWluc1RleHR1cmVPclNhbXBsZXIoQVNUOjpVbm5hbWVkVHlwZSYpOwotfTsKLQotY2xh
c3MgU2VhcmNoZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgU2VhcmNoZXIoKSA9
IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5TZWFyY2hlcigpID0gZGVmYXVsdDsKLQotICAgIGJv
b2wgZm91bmQoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0gICAgYm9vbCBtX2ZvdW5k
IHsgZmFsc2UgfTsKLX07Ci0KLXZvaWQgU2VhcmNoZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKLSAgICAgICAgbV9mb3VuZCA9IHRydWU7Ci19Ci0K
LWJvb2wgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjpjb250YWluc1RleHR1cmVPclNhbXBsZXIo
QVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgU2VhcmNoZXIgc2VhcmNoZXI7
Ci0gICAgc2VhcmNoZXIuY2hlY2tFcnJvckFuZFZpc2l0KHVubmFtZWRUeXBlKTsKLSAgICByZXR1
cm4gc2VhcmNoZXIuZm91bmQoKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6
OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQotewotICAgIFZpc2l0b3I6OnZp
c2l0KHBvaW50ZXJUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChjb250YWluc1RleHR1cmVPclNhbXBsZXIocG9pbnRlclR5cGUuZWxlbWVudFR5cGUo
KSkpCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhIHBvaW50ZXIgdG8gYSB0
ZXh0dXJlIG9yIHNhbXBsZXIuIiwgcG9pbnRlclR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQot
dm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VU
eXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlSZWZl
cmVuY2VUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
IChjb250YWluc1RleHR1cmVPclNhbXBsZXIoYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBl
KCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYW4gYXJyYXkgcmVmZXJl
bmNlIHRvIGEgdGV4dHVyZSBvciBzYW1wbGVyLiIsIGFycmF5UmVmZXJlbmNlVHlwZS5jb2RlTG9j
YXRpb24oKSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNU
OjpBcnJheVR5cGUmIGFycmF5VHlwZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUp
OwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNvbnRhaW5z
VGV4dHVyZU9yU2FtcGxlcihhcnJheVR5cGUudHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCBoYXZlIGFuIGFycmF5IG9mIHRleHR1cmVzIG9yIHNhbXBsZXJzLiIsIGFycmF5
VHlwZS5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tl
cjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIFZpc2l0b3I6OnZp
c2l0KGV4cHJlc3Npb24pOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29s
dmVkVHlwZSgpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgaWYgKGZ1
bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnkpCi0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci19Ci0K
LXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24mKQotewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tUZXh0dXJl
UmVmZXJlbmNlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFRleHR1cmVSZWZlcmVuY2VzQ2hl
Y2tlciB0ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI7Ci0gICAgdGV4dHVyZVJlZmVyZW5jZXNDaGVj
a2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICByZXR1cm4gdGV4dHVyZVJlZmVy
ZW5jZXNDaGVja2VyLnJlc3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
VGV4dHVyZVJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDY5NDk2ZWU5ZDI5YTBhNTg5NjUzMWRlYWQ1ZjgyZTNlNzU2ZjcwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1RleHR1
cmVSZWZlcmVuY2VzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhMjdh
NmM4YTk4YzNlNWJmNjdmZjI5YzIyYWJhODYwODNmMmQ0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tlci5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJl
ZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldI
TFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNp
bmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIK
LSNpbmNsdWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZpbmdU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0
YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNs
YXNzIFBPRENoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgUE9EQ2hlY2tl
cigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgflBPRENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJh
dGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAgICAgICYm
ICFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQotICAgICAgICAgICAgJiYgIW5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJpeCgpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IlVzZSBvZiBuYXRpdmUgdHlwZSBpcyBub3QgYSBQT0QgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4i
LCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRp
b24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURl
ZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVm
aW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlU
eXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlUeXBlKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIklsbGVnYWwgdXNlIG9mIHBv
aW50ZXIgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4iLCBwb2ludGVyVHlwZS5jb2RlTG9jYXRpb24o
KSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFy
cmF5UmVmZXJlbmNlVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9yKEVycm9y
KCJJbGxlZ2FsIHVzZSBvZiBhcnJheSByZWZlcmVuY2UgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4i
LCBhcnJheVJlZmVyZW5jZVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KTsKLSAgICB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbktleSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rp
b25LZXkoKSA9IGRlZmF1bHQ7Ci0gICAgRnVuY3Rpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQotICAgIHsKLSAgICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9IGJpdHdpc2VfY2Fz
dDxBU1Q6Ok5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotICAgIH0KLQot
ICAgIEZ1bmN0aW9uS2V5KFN0cmluZyBuYW1lLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxBU1Q6OlVubmFtZWRUeXBlPj4gdHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwg
bV90eXBlcyhXVEZNb3ZlKHR5cGVzKSkKLSAgICAgICAgLCBtX2Nhc3RSZXR1cm5UeXBlKGNhc3RS
ZXR1cm5UeXBlKQotICAgIHsgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWUuaXNOdWxsKCk7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZSA9PSBiaXR3aXNlX2Nhc3Q8QVNUOjpO
YW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBoYXNoID0gSW50SGFzaDxzaXpl
X3Q+OjpoYXNoKG1fdHlwZXMuc2l6ZSgpKTsKLSAgICAgICAgaGFzaCBePSBtX25hbWUuaGFzaCgp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBoYXNoIF49IG1fdHlwZXNbaV0uZ2V0KCkuaGFzaCgpICsgaTsKLQotICAgICAg
ICBpZiAobV9jYXN0UmV0dXJuVHlwZSkKLSAgICAgICAgICAgIGhhc2ggXj0gV1RGOjpQdHJIYXNo
PEFTVDo6VHlwZSo+OjpoYXNoKCZtX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSk7Ci0KLSAg
ICAgICAgcmV0dXJuIGhhc2g7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZ1
bmN0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX3R5cGVzLnNpemUo
KSAhPSBvdGhlci5tX3R5cGVzLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBpZiAobV9uYW1lICE9IG90aGVyLm1fbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcyhtX3R5cGVzW2ldLmdldCgpLCBvdGhlci5t
X3R5cGVzW2ldLmdldCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4obV9jYXN0UmV0dXJuVHlwZSkgIT0g
c3RhdGljX2Nhc3Q8Ym9vbD4ob3RoZXIubV9jYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFtX2Nhc3RSZXR1cm5UeXBlKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKCZtX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5v
ZGUoKSA9PSAmb3RoZXIubV9jYXN0UmV0dXJuVHlwZS0+dW5pZnlOb2RlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3Ry
dWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGdW5jdGlvbktl
eSYga2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZ1bmN0aW9uS2V5JiBhLCBj
b25zdCBGdW5jdGlvbktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1Ymxp
YyBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxGdW5jdGlvbktleT4gewotICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgIHN0
YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBGdW5jdGlvbktleSYga2V5KSB7IHJldHVybiBr
ZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX25h
bWU7Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+
IG1fdHlwZXM7Ci0gICAgQVNUOjpOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGU7Ci19OwotCi1z
dGF0aWMgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIHJlc29sdmVXaXRoUmVmZXJlbmNl
Q29tcGFyYXRvcihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJlc29sdmluZ1R5cGUmIGZpcnN0QXJn
dW1lbnQsIFJlc29sdmluZ1R5cGUmIHNlY29uZEFyZ3VtZW50LCBjb25zdCBJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzKQotewotICAgIGNvbnN0IGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0gICAgYXV0
byByZXR1cm5UeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBpbnRyaW5z
aWNzLmJvb2xUeXBlKCkpOwotICAgIGF1dG8gYXJndW1lbnRUeXBlID0gZmlyc3RBcmd1bWVudC52
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5
cGUpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiB1bm5hbWVkVHlw
ZS5jb3B5UmVmKCk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4m
KSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gc2Vjb25kQXJndW1l
bnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFt
ZWRUeXBlKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIHVu
bmFtZWRUeXBlLmNvcHlSZWYoKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZT4mKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgLy8g
V2UgZW5jb3VudGVyZWQgIm51bGwgPT0gbnVsbCIuCi0gICAgICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MiBUaGlzIGNhbiBwcm9i
YWJseSBiZSBnZW5lcmFsaXplZCwgdXNpbmcgdGhlICJwcmVmZXJyZWQgdHlwZSIgaW5mcmFzdHJ1
Y3R1cmUgdXNlZCBieSBnZW5lcmljIGxpdGVyYWxzCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9j
YXRpb24sIGludHJpbnNpY3MuaW50VHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0pKTsKLSAg
ICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5h
cHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBB
U1Q6OlF1YWxpZmllcnMoKSwgYXJndW1lbnRUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBXVEZNb3Zl
KGFyZ3VtZW50VHlwZSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcmV0dXJu
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
dHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01v
ZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotfQotCi1lbnVtIGNsYXNzIEFjY2VwdGFiaWxpdHkgewot
ICAgIFllcywKLSAgICBObwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzKQotewotICAgIGlmIChuYW1lID09ICJvcGVyYXRvcj09IiAmJiB0eXBlcy5zaXplKCkgPT0g
MikgewotICAgICAgICBhdXRvIGFjY2VwdGFiaWxpdHkgPSBbXShSZXNvbHZpbmdUeXBlJiByZXNv
bHZpbmdUeXBlKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZp
bmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1
bm5hbWVkVHlwZSkgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgdW5p
ZnlOb2RlID0gdW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgICAgIHJldHVy
biBpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlw
ZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkgPyBBY2NlcHRhYmlsaXR5
OjpZZXMgOiBBY2NlcHRhYmlsaXR5OjpObzsKLSAgICAgICAgICAgIH0sIFtdKFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4mKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQWNjZXB0YWJpbGl0eTo6Tm87Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIGF1dG8gbGVmdEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRhYmlsaXR5KHR5cGVzWzBd
LmdldCgpKTsKLSAgICAgICAgYXV0byByaWdodEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRhYmlsaXR5
KHR5cGVzWzFdLmdldCgpKTsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAg
IGlmIChsZWZ0QWNjZXB0YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMgJiYgcmlnaHRBY2Nl
cHRhYmlsaXR5ID09IEFjY2VwdGFiaWxpdHk6OlllcykgewotICAgICAgICAgICAgYXV0byYgdW5u
YW1lZFR5cGUxID0gKnR5cGVzWzBdLmdldCgpLmdldFVubmFtZWRUeXBlKCk7Ci0gICAgICAgICAg
ICBhdXRvJiB1bm5hbWVkVHlwZTIgPSAqdHlwZXNbMV0uZ2V0KCkuZ2V0VW5uYW1lZFR5cGUoKTsK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBtYXRjaGVzKHVubmFtZWRUeXBlMSwgdW5uYW1lZFR5cGUy
KTsKLSAgICAgICAgfSAKLSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21wYXJhdG9yKGxvY2F0aW9uLCB0eXBlc1swXS5nZXQoKSwg
dHlwZXNbMV0uZ2V0KCksIGludHJpbnNpY3MpOwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotfQotCi1zdGF0aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQb2ludEl0
ZW0+JiBpbnB1dEl0ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVtcywgY29u
c3Qgc3RkOjpvcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNv
bnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgewotICAgICAgICBhdXRvIGNoZWNr
RHVwbGljYXRlU2VtYW50aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0
ZW1zKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGog
PCBpdGVtcy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0u
c2VtYW50aWMgPT0gaXRlbXNbal0uc2VtYW50aWMpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICghY2hlY2tEdXBsaWNhdGVT
ZW1hbnRpY3MoaW5wdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICghY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3Mob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1NlbWFudGlj
VHlwZXMgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wg
ewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIGFjY2VwdGFibGUgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IEFTVDo6QmFzZVNlbWFudGljJiBzZW1hbnRpYykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzZW1hbnRpYy5pc0FjY2VwdGFibGVUeXBlKCppdGVtLnVubmFtZWRUeXBlLCBp
bnRyaW5zaWNzKTsKLSAgICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwotICAgICAg
ICAgICAgICAgIGlmICghYWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07
Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY1R5cGVzKGlucHV0SXRlbXMpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRJ
dGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAg
ICBhdXRvIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4mIGl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVySXRlbURpcmVjdGlv
biBkaXJlY3Rpb24pIC0+IGJvb2wgewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRl
bXMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFjY2VwdGFibGUgPSBXVEY6OnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEFTVDo6QmFzZVNlbWFudGljJiBzZW1hbnRpYykgLT4gYm9v
bCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYy5pc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKGRpcmVjdGlvbiwgZW50cnlQb2ludFR5cGUpOwotICAgICAgICAg
ICAgICAgIH0pLCAqaXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhY2NlcHRh
YmxlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVja1Nl
bWFudGljRm9yU2hhZGVyVHlwZShpbnB1dEl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVy
SXRlbURpcmVjdGlvbjo6SW5wdXQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAoIWNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKG91dHB1dEl0ZW1zLCBBU1Q6OkJhc2VT
ZW1hbnRpYzo6U2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gY2hlY2tQT0REYXRhID0gWyZd
KGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgUE9EQ2hlY2tl
ciBwb2RDaGVja2VyOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPihp
dGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgcG9kQ2hlY2tlci5jaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKml0ZW0udW5uYW1lZFR5cGUp
LmVsZW1lbnRUeXBlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPihpdGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgcG9k
Q2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KCppdGVtLnVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAg
ICAgICAgICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJy
YXlUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkudHlwZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChwb2RD
aGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAg
ICBpZiAoIWNoZWNrUE9ERGF0YShpbnB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKCFjaGVja1BPRERhdGEob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9v
bCBjaGVja09wZXJhdG9yT3ZlcmxvYWQoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1
bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIENoZWNrS2luZCB7Ci0gICAgICAg
IEluZGV4LAotICAgICAgICBEb3QKLSAgICB9OwotCi0gICAgaWYgKCFmdW5jdGlvbkRlZmluaXRp
b24uaXNPcGVyYXRvcigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZnVuY3Rpb25E
ZWZpbml0aW9uLmlzQ2FzdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IrKyIgfHwgZnVuY3Rpb25EZWZpbml0aW9u
Lm5hbWUoKSA9PSAib3BlcmF0b3ItLSIpIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5p
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEKLSAgICAgICAgICAgICYmIG1hdGNoZXMoKmZ1
bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSwgZnVuY3Rpb25EZWZpbml0
aW9uLnR5cGUoKSk7Ci0gICAgfQotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09
ICJvcGVyYXRvcisiIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLSIp
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSAxIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7Ci0gICAg
aWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKiIKLSAgICAgICAgfHwg
ZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IvIgotICAgICAgICB8fCBmdW5j
dGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvciUiCi0gICAgICAgIHx8IGZ1bmN0aW9u
RGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yJiIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZp
bml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3J8IgotICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRp
b24ubmFtZSgpID09ICJvcGVyYXRvcl4iCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5u
YW1lKCkgPT0gIm9wZXJhdG9yPDwiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1l
KCkgPT0gIm9wZXJhdG9yPj4iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gMjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUo
KSA9PSAib3BlcmF0b3J+IikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpID09IDE7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1jbGFzcyBDaGVj
a2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIENoZWNrZXIoY29uc3QgSW50cmlu
c2ljcyYgaW50cmluc2ljcywgUHJvZ3JhbSYgcHJvZ3JhbSkKLSAgICAgICAgOiBtX2ludHJpbnNp
Y3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX3Byb2dyYW0ocHJvZ3JhbSkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gYWRkRnVuY3Rpb24gPSBbJl0gKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVu
Y3Rpb24pIHsKLSAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24uaXNDYXN0KCkgJiYgaXM8QVNUOjpOYW1l
ZFR5cGU+KGZ1bmN0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpCi0gICAgICAgICAgICAgICAgY2Fz
dFJldHVyblR5cGUgPSAmZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGZ1bmN0aW9uLnR5cGUoKS51
bmlmeU5vZGUoKSk7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6VW5uYW1lZFR5cGU+PiB0eXBlczsKLSAgICAgICAgICAgIHR5cGVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0KLSAgICAgICAgICAg
IGZvciAoYXV0byYgcGFyYW0gOiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkpCi0gICAgICAgICAgICAg
ICAgdHlwZXMudW5jaGVja2VkQXBwZW5kKG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXkoKnBh
cmFtLT50eXBlKCkpKTsKLQotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Z1bmN0aW9u
cy5hZGQoRnVuY3Rpb25LZXkgeyBmdW5jdGlvbi5uYW1lKCksIFdURk1vdmUodHlwZXMpLCBjYXN0
UmV0dXJuVHlwZSB9LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24+LCAxPigpKTsKLSAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuYXBwZW5kKGZ1bmN0aW9uKTsKLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogbV9wcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgICAgIGFk
ZEZ1bmN0aW9uKGZ1bmN0aW9uLmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6
IG1fcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKQotICAgICAgICAgICAgYWRk
RnVuY3Rpb24oZnVuY3Rpb24uZ2V0KCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkNoZWNrZXIo
KSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlkZTsKLQotICAg
IEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhc3NpZ25UeXBlcygpOwotCi1wcml2YXRlOgotICAgIGJv
b2wgY2hlY2tTaGFkZXJUeXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0gICAg
Ym9vbCBpc0Jvb2xUeXBlKFJlc29sdmluZ1R5cGUmKTsKLSAgICBzdHJ1Y3QgUmVjdXJzZUluZm8g
ewotICAgICAgICBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlOwotICAgICAgICBjb25zdCBB
U1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uOwotICAgIH07Ci0gICAgc3RkOjpvcHRp
b25hbDxSZWN1cnNlSW5mbz4gcmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9v
bCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJ
bmZvPiBnZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBm
YWxzZSk7Ci0gICAgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHJlY3Vyc2VBbmRXcmFwQmFzZVR5
cGUoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKTsKLSAgICBib29sIHJlY3Vyc2VBbmRS
ZXF1aXJlQm9vbFR5cGUoQVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdm9pZCBhc3NpZ25Db25jcmV0
ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBBU1Q6OlR5cGVB
bm5vdGF0aW9uKTsKLSAgICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24m
LCBBU1Q6Ok5hbWVkVHlwZSYsIEFTVDo6VHlwZUFubm90YXRpb24pOwotICAgIHZvaWQgYXNzaWdu
VHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+LCBB
U1Q6OlR5cGVBbm5vdGF0aW9uKTsKLSAgICB2b2lkIGZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lv
biYsIFJlc29sdmluZ1R5cGUmLCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlw
ZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpQ
b2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5j
ZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlN3aXRjaFN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb21t
YUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJl
c3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBv
dmVycmlkZTsKLQotICAgIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9u
KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVy
blR5cGUgPSBudWxscHRyKTsKLQotICAgIEFTVDo6VW5uYW1lZFR5cGUmIHdyYXBwZWRGbG9hdFR5
cGUoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dyYXBwZWRGbG9hdFR5cGUpCi0gICAgICAgICAg
ICBtX3dyYXBwZWRGbG9hdFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoeyB9LCBtX2lu
dHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgICAgICByZXR1cm4gKm1fd3JhcHBlZEZsb2F0VHlw
ZTsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiB3cmFwcGVkVWludFR5cGUoKQotICAg
IHsKLSAgICAgICAgaWYgKCFtX3dyYXBwZWRVaW50VHlwZSkKLSAgICAgICAgICAgIG1fd3JhcHBl
ZFVpbnRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKHsgfSwgbV9pbnRyaW5zaWNzLnVp
bnRUeXBlKCkpOwotICAgICAgICByZXR1cm4gKm1fd3JhcHBlZFVpbnRUeXBlOwotICAgIH0KLQot
ICAgIEFTVDo6VW5uYW1lZFR5cGUmIG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXkoQVNUOjpV
bm5hbWVkVHlwZSYgdHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8qIHVuaWZ5Tm9kZSA9ICZ0eXBl
LnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAodW5pZnlOb2RlID09ICZtX2ludHJpbnNpY3MudWlu
dFR5cGUoKSB8fCB1bmlmeU5vZGUgPT0gJm1faW50cmluc2ljcy5pbnRUeXBlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gd3JhcHBlZEZsb2F0VHlwZSgpOwotCi0gICAgICAgIHJldHVybiB0eXBlOwot
ICAgIH0KLQotICAgIFJlZlB0cjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fd3JhcHBlZEZsb2F0VHlw
ZTsKLSAgICBSZWZQdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3dyYXBwZWRVaW50VHlwZTsKLSAg
ICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIHN0ZDo6dW5pcXVlX3B0cjxSZXNvbHZpbmdUeXBl
Pj4gbV90eXBlTWFwOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZlcnRleEVudHJ5UG9pbnRzW0FT
VDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2ZyYWdtZW50RW50cnlQ
b2ludHNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fY29tcHV0
ZUVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIGNvbnN0IEludHJpbnNpY3Mm
IG1faW50cmluc2ljczsKLSAgICBQcm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9OwotICAgIEhhc2hNYXA8
RnVuY3Rpb25LZXksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4sIDE+LCBGdW5jdGlvbktleTo6SGFzaCwgRnVuY3Rpb25LZXk6OlRyYWl0cz4g
bV9mdW5jdGlvbnM7Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNlIHsgQVNU
OjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotICAgIGJvb2wgbV9pc1Zpc2l0aW5nUGFy
YW1ldGVycyB7IGZhbHNlIH07Ci19OwotCi12b2lkIENoZWNrZXI6OnZpc2l0KFByb2dyYW0mIHBy
b2dyYW0pCi17Ci0gICAgLy8gVGhlc2UgdmlzaXRpbmcgZnVuY3Rpb25zIG1pZ2h0IGFkZCBuZXcg
Z2xvYmFsIHN0YXRlbWVudHMsIHNvIGRvbid0IHVzZSBmb3JlYWNoIHN5bnRheC4KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ld
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlv
bnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uc3Ry
dWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9n
cmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNp
emUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBl
RGVjbGFyYXRpb25zKClbaV0pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFt
LmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7
ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbnMoKVtpXSk7Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBDaGVja2VyOjph
c3NpZ25UeXBlcygpCi17Ci0gICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtX3R5cGVNYXAp
IHsKLSAgICAgICAgYXV0byBzdWNjZXNzID0ga2V5VmFsdWVQYWlyLnZhbHVlLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBi
b29sIHsKLSAgICAgICAgICAgIGtleVZhbHVlUGFpci5rZXktPnNldFR5cGUodW5uYW1lZFR5cGUu
Y29weVJlZigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBbJl0oUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+
IGJvb2wgewotICAgICAgICAgICAgaWYgKCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2
YWJsZVR5cGUoKS5tYXliZVJlc29sdmVkVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFz
dGF0aWNfY2FzdDxib29sPihjb21taXQocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFi
bGVUeXBlKCkpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAga2V5VmFsdWVQYWlyLmtleS0+c2V0VHlwZShyZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSkpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCByZXNvbHZlIHRo
ZSB0eXBlIG9mIGEgY29uc3RhbnQuIikpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0K
LWJvb2wgQ2hlY2tlcjo6Y2hlY2tTaGFkZXJUeXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVm
aW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBl
OjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3ZlcnRleEVudHJ5
UG9pbnRzW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIGNhc2Ug
QVNUOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihtX2ZyYWdtZW50RW50cnlQb2ludHNbaW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRp
b24ubmFtZSgpKSk7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb21wdXRlRW50cnlQb2ludHNbaW5kZXhd
LmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSk7Ci0gICAgfQotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikK
LXsKLSAgICBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzID0gdHJ1ZTsKLSAgICBWaXNpdG9yOjp2aXNp
dChmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzID0gZmFs
c2U7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1
bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZVNwYWNlKCk7Ci0gICAgbV9jdXJyZW50RnVuY3Rpb24gPSAmZnVuY3Rpb25E
ZWZpbml0aW9uOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSkg
ewotICAgICAgICBpZiAoIWNoZWNrU2hhZGVyVHlwZShmdW5jdGlvbkRlZmluaXRpb24pKSB7Ci0g
ICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRHVwbGljYXRlIGVudHJ5cG9pbnQgZnVuY3Rpb24u
IiwgZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRy
eVBvaW50SXRlbXMobV9pbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBp
ZiAoIWVudHJ5UG9pbnRJdGVtcykgewotICAgICAgICAgICAgc2V0RXJyb3IoZW50cnlQb2ludEl0
ZW1zLmVycm9yKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghY2hlY2tTZW1hbnRpY3MoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGVudHJ5UG9pbnRJdGVt
cy0+b3V0cHV0cywgZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCksIG1faW50cmlu
c2ljcykpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJCYWQgc2VtYW50aWNzIGZvciBl
bnRyeXBvaW50LiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghY2hlY2tPcGVyYXRvck92
ZXJsb2FkKGZ1bmN0aW9uRGVmaW5pdGlvbikpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk9w
ZXJhdG9yIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHNpZ25hdHVyZS4iLCBmdW5jdGlvbkRlZmlu
aXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZp
c2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8QVNU
OjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYgbGVmdCwgUmVzb2x2
aW5nVHlwZSYgcmlnaHQpCi17Ci0gICAgcmV0dXJuIGxlZnQudmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiBsZWZ0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVk
VHlwZT4gewotICAgICAgICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0o
UmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+
IHsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGxlZnQsIHJpZ2h0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbGVmdC5jb3B5UmVmKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJpZ2h0KSAtPiBS
ZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29t
bWl0KGxlZnQsIHJpZ2h0LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0s
IFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAtPiBSZWZQdHI8QVNU
OjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5u
YW1lZFR5cGU+IHsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChyaWdodCwgbGVm
dC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5
cGVSZWZlcmVuY2U+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChsZWZ0LT5yZXNvbHZhYmxlVHlwZSgpLCByaWdo
dC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSk7Ci19Ci0KLXN0YXRp
YyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYg
cmVzb2x2aW5nVHlwZSwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgcmV0
dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5u
YW1lZFR5cGU+JiByZXNvbHZpbmdUeXBlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewot
ICAgICAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gJnVubmFtZWRUeXBlOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2aW5nVHlwZSkgLT4g
UmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0
KHVubmFtZWRUeXBlLCByZXNvbHZpbmdUeXBlLT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICB9KSk7
Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUmIHJlc29sdmlu
Z1R5cGUsIEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmlu
Z1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiBy
ZXNvbHZpbmdUeXBlKSB7Ci0gICAgICAgIGlmIChtYXRjaGVzKHJlc29sdmluZ1R5cGUsIG5hbWVk
VHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZpbmdUeXBl
KSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVkVHlwZSwgcmVz
b2x2aW5nVHlwZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgUmVm
UHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBl
KQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZd
KFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFt
ZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgfSwg
WyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICBpZiAoIXJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZh
YmxlVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVz
b2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKTsKLSAgICB9KSk7Ci19Ci0KLUFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiogQ2hlY2tlcjo6cmVzb2x2ZUZ1bmN0aW9uKFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUpCi17
Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHVu
bmFtZWRUeXBlczsKLSAgICB1bm5hbWVkVHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBl
cy5zaXplKCkpOwotCi0gICAgZm9yIChhdXRvIHJlc29sdmluZ1R5cGUgOiB0eXBlcykgewotICAg
ICAgICBBU1Q6OlVubmFtZWRUeXBlKiB0eXBlID0gcmVzb2x2aW5nVHlwZS5nZXQoKS52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAt
PiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUucHRy
KCk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICAgICAg
aWYgKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2
ZWRUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKTsKLQotICAgICAgICAgICAgaWYgKHJl
c29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzRmxvYXRMaXRlcmFsVHlw
ZSgpCi0gICAgICAgICAgICAgICAgfHwgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFi
bGVUeXBlKCkuaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8IHJlc29s
dmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJndyYXBwZWRGbG9hdFR5cGUoKTsK
LQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVz
b2x2YWJsZVR5cGUoKSkuZ2V0KCk7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBpZiAoIXR5cGUp
IHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUgdHlw
ZSBvZiBhIGNvbnN0YW50LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdW5uYW1lZFR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxpemVkVHlw
ZUZvckZ1bmN0aW9uS2V5KCp0eXBlKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGl0
ZXIgPSBtX2Z1bmN0aW9ucy5maW5kKEZ1bmN0aW9uS2V5IHsgbmFtZSwgV1RGTW92ZSh1bm5hbWVk
VHlwZXMpLCBjYXN0UmV0dXJuVHlwZSB9KTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gbV9mdW5jdGlv
bnMuZW5kKCkpIHsKLSAgICAgICAgICAgIGlmIChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIGZ1
bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoaXRlci0+dmFsdWUsIHR5cGVzLCBjYXN0
UmV0dXJuVHlwZSwgbV9jdXJyZW50TmFtZVNwYWNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYXV0byBuZXdGdW5jdGlvbiA9
IHJlc29sdmVCeUluc3RhbnRpYXRpb24obmFtZSwgbG9jYXRpb24sIHR5cGVzLCBtX2ludHJpbnNp
Y3MpKSB7Ci0gICAgICAgIG1fcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmV3RnVuY3Rpb24pKTsK
LSAgICAgICAgcmV0dXJuICZtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5s
YXN0KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6
dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikK
LXsKLSAgICBib29sIGlzU2lnbmVkOwotICAgIGF1dG8qIGJhc2VUeXBlID0gKFsmXSgpIC0+IEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChl
bnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICAgICAgYXV0byYgYmFzZVR5cGUgPSBl
bnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIWlz
PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGJhc2VU
eXBlKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKTsKLSAgICAgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNJbnQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpc1NpZ25lZCA9IG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5pc1NpZ25lZCgpOwotICAgICAgICByZXR1cm4gJm5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjsKLSAgICB9KSgpOwotICAgIGlmICghYmFzZVR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkludmFsaWQgYmFzZSB0eXBlIGZvciBlbnVtLiIsIGVudW1lcmF0aW9uRGVmaW5pdGlv
bi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBl
bnVtZXJhdGlvbk1lbWJlcnMgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1i
ZXJzKCk7Ci0KLSAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVycykgewot
ICAgICAgICBpbnQ2NF90IHZhbHVlID0gbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAgICAgIGlm
IChpc1NpZ25lZCkgewotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRp
Y19jYXN0PGludDMyX3Q+KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiSW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIuZ2V0KCkuY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBz
ZXRFcnJvcihFcnJvcigiSW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIuZ2V0KCku
Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudW1lcmF0
aW9uTWVtYmVycy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gZW51bWVyYXRp
b25NZW1iZXJzW2ldLmdldCgpLnZhbHVlKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsg
MTsgaiA8IGVudW1lcmF0aW9uTWVtYmVycy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgYXV0
byBvdGhlclZhbHVlID0gZW51bWVyYXRpb25NZW1iZXJzW2pdLmdldCgpLnZhbHVlKCk7Ci0gICAg
ICAgICAgICBpZiAodmFsdWUgPT0gb3RoZXJWYWx1ZSkgewotICAgICAgICAgICAgICAgIHNldEVy
cm9yKEVycm9yKCJDYW5ub3QgZGVjbGFyZSBkdXBsaWNhdGUgZW51bWVyYXRpb24gdmFsdWVzLiIs
IGVudW1lcmF0aW9uTWVtYmVyc1tqXS5nZXQoKS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGJv
b2wgZm91bmRaZXJvID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlv
bk1lbWJlcnMpIHsKLSAgICAgICAgaWYgKCFtZW1iZXIuZ2V0KCkudmFsdWUoKSkgewotICAgICAg
ICAgICAgZm91bmRaZXJvID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGlmICghZm91bmRaZXJvKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJlbnVt
IGRlZmluaXRpb24gbXVzdCBjb250YWluIGEgemVybyB2YWx1ZS4iLCBlbnVtZXJhdGlvbkRlZmlu
aXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0g
ICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0KLSAgICBmb3Ig
KGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotYXV0byBDaGVja2Vy
OjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVx
dWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+Ci17Ci0gICAgVmlz
aXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGdldEluZm8oZXhwcmVzc2lvbiwgcmVxdWly
ZXNMZWZ0VmFsdWUpOwotfQotCi1hdXRvIENoZWNrZXI6OmdldEluZm8oQVNUOjpFeHByZXNzaW9u
JiBleHByZXNzaW9uLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPFJl
Y3Vyc2VJbmZvPgotewotICAgIGF1dG8gdHlwZUl0ZXJhdG9yID0gbV90eXBlTWFwLmZpbmQoJmV4
cHJlc3Npb24pOwotICAgIEFTU0VSVCh0eXBlSXRlcmF0b3IgIT0gbV90eXBlTWFwLmVuZCgpKTsK
LQotICAgIGNvbnN0IGF1dG8mIHR5cGVBbm5vdGF0aW9uID0gZXhwcmVzc2lvbi50eXBlQW5ub3Rh
dGlvbigpOwotICAgIGlmIChyZXF1aXJlc0xlZnRWYWx1ZSAmJiB0eXBlQW5ub3RhdGlvbi5pc1Jp
Z2h0VmFsdWUoKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCBydmFsdWUu
IiwgZXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIH0KLSAgICByZXR1cm4ge3sgKnR5cGVJdGVyYXRvci0+dmFsdWUsIHR5cGVBbm5v
dGF0aW9uIH19OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICAvLyBSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9ucyBhcmUgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgYW5vbnltb3VzIHZhcmlhYmxlcyBleGlz
dCwKLSAgICAvLyBhbmQgdGhhdCBkb2Vzbid0IHJlY3Vyc2Ugb24gdGhlIGFub255bW91cyB2YXJp
YWJsZXMsIHNvIHdlIGNhbiBhc3N1bWUgdGhlIHZhcmlhYmxlIGhhcyBhIHR5cGUuCi0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKG1h
dGNoZXMoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUo
KSkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlZhcmlhYmxlcyBjYW4ndCBoYXZlIHZvaWQg
dHlwZS4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkg
ewotICAgICAgICBhdXRvJiBsaHNUeXBlID0gKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpOwot
ICAgICAgICBhdXRvIGluaXRpYWxpemVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKCp2YXJpYWJs
ZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBpZiAoIWluaXRpYWxpemVySW5m
bykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdChpbml0
aWFsaXplckluZm8tPnJlc29sdmluZ1R5cGUsIGxoc1R5cGUpKSB7Ci0gICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiRGVjbGFyZWQgdmFyaWFibGUgdHlwZSBkb2VzIG5vdCBtYXRjaCBpdHMgaW5p
dGlhbGl6ZXIncyB0eXBlLiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIW1faXNWaXNp
dGluZ1BhcmFtZXRlcnMgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPih2YXJpYWJsZURlY2xhcmF0
aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJU
eXBlPih2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKQotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIk11c3QgYXNzaWduIHRvIGEgcG9pbnRlciB2YXJpYWJsZSBkZWNs
YXJhdGlvbiBpbiBpdHMgaW5pdGlhbGl6ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgp
KSk7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiTXVzdCBhc3NpZ24gdG8gYW4gYXJyYXkg
cmVmZXJlbmNlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIGl0cyBpbml0aWFsaXplci4iLCB2YXJp
YWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUs
IEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkK
LXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VV
bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJlc3Npb24u
c2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12b2lkIENo
ZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIEFT
VDo6TmFtZWRUeXBlJiB0eXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIGFubm90YXRpb24pCi17Ci0g
ICAgYXV0byB1bm5hbWVkVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh0eXBlLmNvZGVM
b2NhdGlvbigpLCB0eXBlKTsKLSAgICBWaXNpdG9yOjp2aXNpdCh1bm5hbWVkVHlwZSk7Ci0gICAg
YXNzaWduQ29uY3JldGVUeXBlKGV4cHJlc3Npb24sIFdURk1vdmUodW5uYW1lZFR5cGUpLCBhbm5v
dGF0aW9uKTsKLX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYg
ZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6Umln
aHRWYWx1ZSgpKQotewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVz
c2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKSkpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5v
dGF0aW9uKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpFeHByZXNzaW9u
JiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlR5cGVBbm5v
dGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCi17Ci0gICAgcmVzb2x2
aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4m
IHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJl
c3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVl
PFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9KSk7Ci0gICAgZXhwcmVz
c2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19Ci0KLXZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4
cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFzc2ln
bm1lbnRFeHByZXNzaW9uLmxlZnQoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0SW5mbykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byByaWdodEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhhc3Np
Z25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLSAgICBpZiAoIXJpZ2h0SW5mbykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byByZXN1bHRUeXBlID0gbWF0Y2hBbmRDb21taXQobGVmdEluZm8t
PnJlc29sdmluZ1R5cGUsIHJpZ2h0SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFyZXN1
bHRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJMZWZ0IGhhbmQgc2lkZSBvZiBhc3Np
Z25tZW50IGRvZXMgbm90IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSByaWdodCBoYW5kIHNpZGUuIiwg
YXNzaWdubWVudEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShhc3NpZ25tZW50RXhwcmVzc2lvbiwgKnJl
c3VsdFR5cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRW
YWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxl
ZnRWYWx1ZSgpLCB0cnVlKTsKLSAgICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFsdWUoKS5zZXRUeXBlKCps
ZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlLmdldFVubmFtZWRUeXBlKCkpOwotCi0gICAgYXV0
byBuZXdWYWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICBpZiAoIW5ld1ZhbHVlSW5mbykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaGVkVHlw
ZSA9IG1hdGNoQW5kQ29tbWl0KGxlZnRWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG5ld1ZhbHVl
SW5mby0+cmVzb2x2aW5nVHlwZSkpCi0gICAgICAgIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
bmV3VmFsdWUoKS5zZXRUeXBlKCptYXRjaGVkVHlwZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJCYXNlIG9mIHRoZSByZWFkLW1vZGlmeS13cml0ZSBleHByZXNzaW9uIGRv
ZXMgbm90IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSBuZXcgdmFsdWUuIiwgcmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byByZXN1bHRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIGlmICghcmVzdWx0SW5mbykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yd2FyZFR5cGUocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwg
cmVzdWx0SW5mby0+cmVzb2x2aW5nVHlwZSwgQVNUOjpSaWdodFZhbHVlKCkpOwotfQotCi1zdGF0
aWMgQVNUOjpVbm5hbWVkVHlwZSogZ2V0VW5uYW1lZFR5cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2
aW5nVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSog
ewotICAgICAgICByZXR1cm4gdHlwZS5wdHIoKTsKLSAgICB9LCBbXShSZWZQdHI8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+JiB0eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgIC8v
IEZJWE1FOiBJZiB0aGUgdHlwZSBpc24ndCBjb21taXR0ZWQsIHNob3VsZCB3ZSBqdXN0IGNvbW1p
dCgpIGl0IG5vdz8KLSAgICAgICAgcmV0dXJuIHR5cGUtPnJlc29sdmFibGVUeXBlKCkubWF5YmVS
ZXNvbHZlZFR5cGUoKTsKLSAgICB9KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpE
ZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRv
IHBvaW50ZXJJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBv
aW50ZXIoKSk7Ci0gICAgaWYgKCFwb2ludGVySW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byogdW5uYW1lZFR5cGUgPSBnZXRVbm5hbWVkVHlwZShwb2ludGVySW5mby0+cmVzb2x2aW5n
VHlwZSk7Ci0KLSAgICBhdXRvKiBwb2ludGVyVHlwZSA9IChbJl0oQVNUOjpVbm5hbWVkVHlwZSog
dW5uYW1lZFR5cGUpIC0+IEFTVDo6UG9pbnRlclR5cGUqIHsKLSAgICAgICAgaWYgKCF1bm5hbWVk
VHlwZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5v
ZGUgPSB1bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpVbm5h
bWVkVHlwZT4odW5pZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICBhdXRvJiB1bm5hbWVkVW5pZnlUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5p
ZnlOb2RlKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVW5pZnlU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gJmRvd25j
YXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRVbmlmeVR5cGUpOwotICAgIH0pKHVubmFtZWRU
eXBlKTsKLSAgICBpZiAoIXBvaW50ZXJUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJD
YW5ub3QgZGVyZWZlcmVuY2UgYSBub24tcG9pbnRlciB0eXBlLiIsIGRlcmVmZXJlbmNlRXhwcmVz
c2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNz
aWduQ29uY3JldGVUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbiwgcG9pbnRlclR5cGUtPmVsZW1l
bnRUeXBlKCksIEFTVDo6TGVmdFZhbHVlIHsgcG9pbnRlclR5cGUtPmFkZHJlc3NTcGFjZSgpIH0p
OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBt
YWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJz
ZUFuZEdldEluZm8obWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLCB0cnVlKTsKLSAg
ICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbGVmdEFk
ZHJlc3NTcGFjZSA9IGxlZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3Bh
Y2UoKTsKLSAgICBpZiAoIWxlZnRBZGRyZXNzU3BhY2UpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCB0YWtlIHRoZSBhZGRyZXNzIG9mIGEgbm9uIGx2YWx1ZS4iLCBtYWtlUG9pbnRl
ckV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGF1dG8qIGxlZnRWYWx1ZVR5cGUgPSBnZXRVbm5hbWVkVHlwZShsZWZ0VmFsdWVJbmZvLT5y
ZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWxlZnRWYWx1ZVR5cGUpIHsKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCB0YWtlIHRoZSBhZGRyZXNzIG9mIGEgdmFsdWUgd2l0aG91dCBhIHR5
cGUuIiwgbWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZVBvaW50ZXJFeHByZXNz
aW9uLCBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVM
b2NhdGlvbigpLCAqbGVmdEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVj
dXJzZUFuZEdldEluZm8obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7
Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBs
ZWZ0VmFsdWVUeXBlID0gZ2V0VW5uYW1lZFR5cGUobGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlw
ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJD
YW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2Ugb2YgYSB2YWx1ZSB3aXRob3V0IGEgdHlwZS4i
LCBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB1bmlmeU5vZGUgPSBsZWZ0VmFsdWVUeXBlLT51
bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewot
ICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVu
aWZ5Tm9kZSk7Ci0gICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkp
IHsKLSAgICAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUo
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgcG9pbnRlclR5cGUu
YWRkcmVzc1NwYWNlKCksIHBvaW50ZXJUeXBlLmVsZW1lbnRUeXBlKCkpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFjZSA9IGxl
ZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAgICAgICAg
aWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IG1ha2UgYW4gYXJyYXkgcmVmZXJlbmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4iLCBtYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFt
ZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpB
cnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYzIFNhdmUgdGhlIG51bWJlciBvZiBl
bGVtZW50cy4KLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksICpsZWZ0QWRkcmVzc1NwYWNlLCBhcnJh
eVR5cGUudHlwZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBhdXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlv
bi5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2UgZnJvbSBh
IG5vbi1sZWZ0LXZhbHVlLiIsIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6
Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksICpsZWZ0
QWRkcmVzc1NwYWNlLCAqbGVmdFZhbHVlVHlwZSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0
KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGJhc2VJbmZv
ID0gcmVjdXJzZUFuZEdldEluZm8oZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgIGlmICghYmFz
ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gYmFzZVVubmFtZWRUeXBlID0gY29t
bWl0KGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWJhc2VVbm5hbWVkVHlwZSkg
ewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdGhlIHR5cGUgb2YgdGhl
IGJhc2Ugb2YgYSBkb3QgZXhwcmVzc2lvbi4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFzZVVubmFt
ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9u
Pih0eXBlKSkgewotICAgICAgICBhdXRvJiBzdHJ1Y3R1cmUgPSBkb3duY2FzdDxBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24+KHR5cGUpOyAgICAKLSAgICAgICAgaWYgKEFTVDo6U3RydWN0dXJlRWxl
bWVudCogZWxlbWVudCA9IHN0cnVjdHVyZS5maW5kKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkp
KQotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGVsZW1lbnQt
PnR5cGUoKSwgYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzZXRFcnJvcihFcnJvcihtYWtlU3RyaW5nKCJGaWVsZCBuYW1lOiAnIiwgZG90RXhw
cmVzc2lvbi5maWVsZE5hbWUoKSwgIicgZG9lcyBub3QgZXhpc3Qgb24gc3RydWN0dXJlOiAiLCBz
dHJ1Y3R1cmUubmFtZSgpKSwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkb3RFeHByZXNzaW9uLmZp
ZWxkTmFtZSgpID09ICJsZW5ndGgiKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJl
bmNlVHlwZT4odHlwZSkKLSAgICAgICAgICAgIHx8IGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKQot
ICAgICAgICAgICAgfHwgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBk
b3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkpIHsK
LSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCB3cmFwcGVkVWlu
dFR5cGUoKSwgQVNUOjpSaWdodFZhbHVlKCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIi5sZW5ndGggZmllbGQgaXMgb25seSBhdmFpbGFibGUgb24gYXJy
YXlzLCBhcnJheSByZWZlcmVuY2VzLCBvciB2ZWN0b3JzLiIsIGRvdEV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSB7Ci0gICAgICAgIGlmICgh
bV9wcm9ncmFtLmlzVmFsaWRWZWN0b3JQcm9wZXJ0eShkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgp
KSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiJy4iLCBkb3RFeHBy
ZXNzaW9uLmZpZWxkTmFtZSgpLCAiJyBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBvbiBhIHZlY3Rv
ci4iKSwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJbmZvLT50
eXBlQW5ub3RhdGlvbi5pc1JpZ2h0VmFsdWUoKSA/IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6
OlJpZ2h0VmFsdWUoKSB9IDogQVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJhY3RMZWZ0
VmFsdWUoKSB9OwotCi0gICAgICAgIHNpemVfdCBmaWVsZExlbmd0aCA9IGRvdEV4cHJlc3Npb24u
ZmllbGROYW1lKCkubGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8mIGlubmVyVHlwZSA9IGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS52ZWN0b3JUeXBlQXJndW1lbnQoKTsK
LSAgICAgICAgaWYgKGZpZWxkTGVuZ3RoID09IDEpCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0
ZVR5cGUoZG90RXhwcmVzc2lvbiwgaW5uZXJUeXBlLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3Mu
Ym9vbFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJl
c3Npb24sIG1faW50cmluc2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0
eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwg
bV9pbnRyaW5zaWNzLmludFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVU
eXBlKGRvdEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5pbnRWZWN0b3JUeXBlRm9yU2l6ZShmaWVs
ZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMo
aW5uZXJUeXBlLCBtX2ludHJpbnNpY3MudWludFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNz
aWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIG1faW50cmluc2ljcy51aW50VmVjdG9yVHlw
ZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNl
IGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKSkKLSAgICAg
ICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNz
LmZsb2F0VmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFz
ZSB2YWx1ZSBvZiBkb3QgZXhwcmVzc2lvbiBtdXN0IGJlIGEgc3RydWN0dXJlLCBhcnJheSwgb3Ig
dmVjdG9yLiIsIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAg
IHsKLSAgICAgICAgYXV0byBpbmRleEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhpbmRleEV4cHJl
c3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBpZiAoIWluZGV4SW5mbykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KGluZGV4SW5mby0+
cmVzb2x2aW5nVHlwZSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpKSB7Ci0gICAgICAgICAgICBz
ZXRFcnJvcihFcnJvcigiSW5kZXggaW4gYW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIGEgdWlu
dC4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gYmFzZUluZm8gPSByZWN1cnNlQW5kR2V0
SW5mbyhpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICBpZiAoIWJhc2VJbmZvKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGJhc2VVbm5hbWVkVHlwZSA9IGNvbW1pdChiYXNlSW5mby0+
cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFiYXNlVW5uYW1lZFR5cGUpIHsKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9mIGFuIGlu
ZGV4IGV4cHJlc3Npb24uIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFzZVVubmFtZWRUeXBlLT51
bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKSB7
Ci0gICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPih0eXBlKTsKLSAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhw
cmVzc2lvbiwgYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCksIEFTVDo6TGVmdFZhbHVl
IHsgYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpIH0pOwotICAgIH0gZWxzZSBpZiAo
aXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKQotICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5k
ZXhFeHByZXNzaW9uLCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkudHlwZSgpLCBiYXNl
SW5mby0+dHlwZUFubm90YXRpb24pOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPih0eXBlKSkgewotICAgICAgICBhdXRvJiBuYXRpdmVUeXBlID0gZG93bmNhc3Q8
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpOwotICAgICAgICBhdXRvIHR5cGVBbm5v
dGF0aW9uID0gYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpID8gQVNUOjpU
eXBlQW5ub3RhdGlvbiB7IEFTVDo6UmlnaHRWYWx1ZSgpIH0gOiBBU1Q6OlR5cGVBbm5vdGF0aW9u
IHsgQVNUOjpBYnN0cmFjdExlZnRWYWx1ZSgpIH07Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlLmlz
VmVjdG9yKCkpCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9u
LCBuYXRpdmVUeXBlLnZlY3RvclR5cGVBcmd1bWVudCgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAg
ICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUuaXNNYXRyaXgoKSkgewotICAgICAgICAgICAgYXV0byYg
aW5uZXJUeXBlID0gbmF0aXZlVHlwZS5tYXRyaXhUeXBlQXJndW1lbnQoKTsKLSAgICAgICAgICAg
IHVuc2lnbmVkIG51bVJvd3MgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Um93cygpOwotICAg
ICAgICAgICAgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkp
Ci0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgbV9p
bnRyaW5zaWNzLmJvb2xWZWN0b3JUeXBlRm9yU2l6ZShudW1Sb3dzKSwgdHlwZUFubm90YXRpb24p
OwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5m
bG9hdFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhw
cmVzc2lvbiwgbV9pbnRyaW5zaWNzLmZsb2F0VmVjdG9yVHlwZUZvclNpemUobnVtUm93cyksIHR5
cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkluZGV4IGV4cHJlc3Npb24gb24gdW5rbm93biB0eXBlLiIsIGluZGV4RXhw
cmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGV4cHJlc3Npb24g
b24gYW4gdW5rbm93biBiYXNlIHR5cGUuIEJhc2UgdHlwZSBtdXN0IGJlIGFuIGFycmF5LCBhcnJh
eSByZWZlcmVuY2UsIHZlY3Rvciwgb3IgbWF0cml4LiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIEFT
U0VSVCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBBU1NFUlQodmFyaWFibGVS
ZWZlcmVuY2UudmFyaWFibGUoKS0+dHlwZSgpKTsKLSAgICAKLSAgICBhc3NpZ25Db25jcmV0ZVR5
cGUodmFyaWFibGVSZWZlcmVuY2UsICp2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpLT50eXBl
KCksIEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLX0KLQot
dm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAg
IGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkgewotICAgICAgICBhdXRvIHZhbHVlSW5mbyA9
IHJlY3Vyc2VBbmRHZXRJbmZvKCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIGlm
ICghdmFsdWVJbmZvKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIW1hdGNoQW5k
Q29tbWl0KHZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSwgbV9jdXJyZW50RnVuY3Rpb24tPnR5cGUo
KSkpCi0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiVHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVl
IG11c3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4iLCByZXR1cm5TdGF0
ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghbWF0Y2hlcyhtX2N1cnJlbnRGdW5jdGlvbi0+dHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5
cGUoKSkpCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmV0dXJuIGEgdmFsdWUgZnJv
bSBhIHZvaWQgZnVuY3Rpb24uIiwgcmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpCi17Ci0gICAgLy8gRm9s
bG93aW5nIHBvaW50ZXIgdHlwZXMgY2FuIGNhdXNlIGluZmluaXRlIGxvb3BzIGJlY2F1c2Ugb2Yg
ZGF0YSBzdHJ1Y3R1cmVzCi0gICAgLy8gbGlrZSBsaW5rZWQgbGlzdHMuCi0gICAgLy8gRklYTUU6
IE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBlbXB0eQotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikKLXsKLSAgICAvLyBGb2xsb3dpbmcg
YXJyYXkgcmVmZXJlbmNlIHR5cGVzIGNhbiBjYXVzZSBpbmZpbml0ZSBsb29wcyBiZWNhdXNlIG9m
IGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIGxpa2UgbGlua2VkIGxpc3RzLgotICAgIC8vIEZJWE1F
OiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZW1wdHkKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBh
c3NpZ25UeXBlKGludGVnZXJMaXRlcmFsLCBhZG9wdFJlZigqbmV3IFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKGludGVnZXJMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17
Ci0gICAgYXNzaWduVHlwZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsLCBhZG9wdFJlZigqbmV3IFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKSkpOwot
fQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwp
Ci17Ci0gICAgYXNzaWduVHlwZShmbG9hdExpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UoZmxvYXRMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkKLXsKLSAgICBhc3Np
Z25Db25jcmV0ZVR5cGUoYm9vbGVhbkxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChi
b29sZWFuTGl0ZXJhbC5jb2RlTG9jYXRpb24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsK
LX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgIGF1dG8mIGVudW1lcmF0aW9u
RGVmaW5pdGlvbiA9ICplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0
aW9uKCk7Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwg
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5jb2RlTG9j
YXRpb24oKSwgZW51bWVyYXRpb25EZWZpbml0aW9uKSk7Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6aXNC
b29sVHlwZShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKQotewotICAgIHJldHVybiByZXNv
bHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiYgbGVmdCkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKGxlZnQsIG1faW50cmlu
c2ljcy5ib29sVHlwZSgpKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYgbGVmdCkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPiht
YXRjaEFuZENvbW1pdChtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSwgbGVmdC0+cmVzb2x2YWJsZVR5
cGUoKSkpOwotICAgIH0pKTsKLX0KLQotYm9vbCBDaGVja2VyOjpyZWN1cnNlQW5kUmVxdWlyZUJv
b2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGV4cHJlc3Np
b25JbmZvID0gcmVjdXJzZUFuZEdldEluZm8oZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFleHByZXNz
aW9uSW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNCb29sVHlwZShleHBy
ZXNzaW9uSW5mby0+cmVzb2x2aW5nVHlwZSkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4
cGVjdGVkIGJvb2wgdHlwZSBmcm9tIGV4cHJlc3Npb24uIiwgZXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2lj
YWxOb3RFeHByZXNzaW9uKQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShs
b2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgYXNz
aWduQ29uY3JldGVUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2U6
OndyYXAobG9naWNhbE5vdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5i
b29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVz
c2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJv
b2xUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobG9naWNhbEV4cHJlc3Np
b24sIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2dpY2FsRXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRS
ZXF1aXJlQm9vbFR5cGUoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICBpZiAo
aWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0
YXRlbWVudC5lbHNlQm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OldoaWxl
TG9vcCYgd2hpbGVMb29wKQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZSh3
aGlsZUxvb3AuY29uZGl0aW9uYWwoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNU
OjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
V2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShkb1doaWxl
TG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZvckxv
b3AmIGZvckxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5pdGlhbGl6
YXRpb24oKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
Zm9yTG9vcC5jb25kaXRpb24oKSkgewotICAgICAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9v
bFR5cGUoKmZvckxvb3AuY29uZGl0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5i
b2R5KCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBz
d2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgYXV0byogdmFsdWVUeXBlID0gKFsmXSgpIC0+IEFTVDo6
TmFtZWRUeXBlKiB7Ci0gICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8o
c3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwotICAgICAgICBpZiAoIXZhbHVlSW5mbykKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiB2YWx1ZVR5cGUgPSBnZXRVbm5h
bWVkVHlwZSh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgICAgICBpZiAoIXZhbHVlVHlw
ZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB2YWx1ZVVuaWZ5
Tm9kZSA9IHZhbHVlVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYW1l
ZFR5cGU+KHZhbHVlVW5pZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICBhdXRvJiB2YWx1ZU5hbWVkVW5pZnlOb2RlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+
KHZhbHVlVW5pZnlOb2RlKTsKLSAgICAgICAgaWYgKCEoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KHZhbHVlTmFtZWRVbmlmeU5vZGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKS5pc0ludCgpKQotICAgICAgICAgICAgJiYg
IWlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gJnZhbHVlTmFtZWRVbmlm
eU5vZGU7Ci0gICAgfSkoKTsKLSAgICBpZiAoIXZhbHVlVHlwZSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiSW52YWxpZCB0eXBlIGZvciB0aGUgZXhwcmVzc2lvbiBjb25kaXRpb24gb2YgdGhl
IHN3aXRjaCBzdGF0ZW1lbnQuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhc0RlZmF1bHQgPSBmYWxzZTsKLSAg
ICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLSAgICAg
ICAgaWYgKCFzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGhhc0RlZmF1bHQgPSB0
cnVlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBzdWNj
ZXNzID0gc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgaW50ZWdl
ckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIHVuc2lnbmVk
SW50ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0ZXJh
bCYgZmxvYXRMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCBmbG9hdExpdGVyYWwudHlwZSgpKSk7
Ci0gICAgICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJikgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hlcygqdmFsdWVUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7
Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgcmV0
dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKSB7
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiSW52YWxpZCB0eXBlIGZvciBzd2l0Y2ggY2Fz
ZS4iLCBzd2l0Y2hDYXNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN3aXRjaFN0YXRl
bWVudC5zd2l0Y2hDYXNlcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGZpcnN0Q2Fz
ZSA9IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpW2ldOwotICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXplKCk7ICsr
aikgewotICAgICAgICAgICAgYXV0byYgc2Vjb25kQ2FzZSA9IHN3aXRjaFN0YXRlbWVudC5zd2l0
Y2hDYXNlcygpW2pdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
Ym9vbD4oZmlyc3RDYXNlLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGJvb2w+KHNlY29uZENhc2Uu
dmFsdWUoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmICgh
c3RhdGljX2Nhc3Q8Ym9vbD4oZmlyc3RDYXNlLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWZpbmUgbXVsdGlwbGUgZGVmYXVsdCBjYXNlcyBpbiBz
d2l0Y2ggc3RhdGVtZW50LiIsIHNlY29uZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gc3VjY2Vz
cyA9IGZpcnN0Q2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Oklu
dGVnZXJMaXRlcmFsJiBmaXJzdEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0g
c2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAt
PiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+
KGZpcnN0SW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2Vj
b25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICB9LCBb
XShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3RV
bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHNl
Y29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+
IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RVbnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwot
ICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgWyZd
KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUo
KS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNlY29uZEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkg
IT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCk7Ci0g
ICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBbXShh
dXRvJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICB9KSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiQ2Fubm90IGRlZmluZSBkdXBsaWNhdGUgY2FzZSBzdGF0ZW1lbnRzIGluIGEg
c3dpdGNoLiIsIHNlY29uZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWhhc0Rl
ZmF1bHQpIHsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdmFs
dWVUeXBlKSkgewotICAgICAgICAgICAgSGFzaFNldDxpbnQ2NF90PiB2YWx1ZXM7Ci0gICAgICAg
ICAgICBib29sIHplcm9WYWx1ZUV4aXN0czsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3dpdGNo
Q2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5
cGUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
JiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsK
LSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAg
ICAgICAgICAgICAgICAgICAgemVyb1ZhbHVlRXhpc3RzID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hZGQodmFsdWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdmFsdWVUeXBlKS5pdGVyYXRlQWxsVmFs
dWVzKFsmXShpbnQ2NF90IHZhbHVlKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICBpZiAoIXZh
bHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghemVyb1ZhbHVlRXhpc3RzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICghdmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9y
KCJTd2l0Y2ggY2FzZXMgbXVzdCBiZSBleGhhdXN0aXZlIG9yIHlvdSBtdXN0IGRlZmluZSBhIGRl
ZmF1bHQgY2FzZS4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBIYXNoU2V0PEFTVDo6RW51bWVyYXRpb25NZW1iZXIqPiB2YWx1ZXM7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkg
ewotICAgICAgICAgICAgICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMu
YWRkKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAg
ICAgICAgICAgICB9LCBbXShhdXRvJikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZG93bmNhc3Q8QVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24+KCp2YWx1ZVR5cGUpLmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZXMuY29udGFpbnMoJmVudW1lcmF0aW9uTWVtYmVyLmdldCgp
KSkgewotICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dpdGNoIGNhc2VzIG92
ZXIgYW4gZW51bSBtdXN0IGJlIGV4aGF1c3RpdmUgb3IgeW91IG11c3QgZGVmaW5lIGEgZGVmYXVs
dCBjYXNlLiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9u
JiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgQVNTRVJUKGNvbW1hRXhwcmVzc2lvbi5saXN0KCku
c2l6ZSgpID4gMCk7Ci0gICAgVmlzaXRvcjo6dmlzaXQoY29tbWFFeHByZXNzaW9uKTsKLSAgICBp
ZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbGFzdEluZm8gPSBnZXRJ
bmZvKGNvbW1hRXhwcmVzc2lvbi5saXN0KCkubGFzdCgpKTsKLSAgICBmb3J3YXJkVHlwZShjb21t
YUV4cHJlc3Npb24sIGxhc3RJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLX0KLQotdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAg
ICBhdXRvIHByZWRpY2F0ZUluZm8gPSByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKHRlcm5hcnlF
eHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBpZiAoIXByZWRpY2F0ZUluZm8pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8gYm9keUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyh0ZXJuYXJ5
RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBhdXRvIGVsc2VJbmZvID0gcmVjdXJz
ZUFuZEdldEluZm8odGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgCi0g
ICAgYXV0byByZXN1bHRUeXBlID0gbWF0Y2hBbmRDb21taXQoYm9keUluZm8tPnJlc29sdmluZ1R5
cGUsIGVsc2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIXJlc3VsdFR5cGUpIHsKLSAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoImxocyBhbmQgcmhzIG9mIGEgdGVybmFyeSBleHByZXNzaW9u
IG11c3QgbWF0Y2guIiwgdGVybmFyeUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZSh0ZXJuYXJ5RXhwcmVz
c2lvbiwgKnJlc3VsdFR5cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q2FsbEV4
cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFJlc29sdmluZ1R5cGU+PiB0eXBlczsKLSAgICB0eXBlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSk7Ci0gICAgZm9yIChhdXRv
JiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAgIGF1dG8g
YXJndW1lbnRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oYXJndW1lbnQpOwotICAgICAgICBpZiAo
IWFyZ3VtZW50SW5mbykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMudW5jaGVj
a2VkQXBwZW5kKGFyZ3VtZW50SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgfQotICAgIC8vIERv
bid0IHJlY3Vyc2Ugb24gdGhlIGNhc3RSZXR1cm5UeXBlLCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVl
ZCB0byBiZSBhIE5hbWVkVHlwZSwgd2hpY2ggd2lsbCBnZXQgdmlzaXRlZCBsYXRlci4KLSAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHJlY3Vyc2UgdG8gdGhlIHNhbWUgbm9kZSB0d2ljZS4KLQotICAg
IGF1dG8qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKHR5cGVzLCBjYWxsRXhwcmVzc2lvbi5u
YW1lKCksIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKTsKLSAgICBpZiAoaGFzRXJyb3Io
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICBOYW1l
Q29udGV4dCYgbmFtZUNvbnRleHQgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKTsKLSAgICAgICAg
YXV0byBjYXN0VHlwZXMgPSBuYW1lQ29udGV4dC5nZXRUeXBlcyhjYWxsRXhwcmVzc2lvbi5uYW1l
KCksIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgICAgIGlmIChjYXN0VHlwZXMuc2l6ZSgpID09
IDEpIHsKLSAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBlJiBjYXN0VHlwZSA9IGNhc3RUeXBlc1sw
XS5nZXQoKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKHR5cGVzLCAi
b3BlcmF0b3IgY2FzdCJfc3RyLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgJmNhc3RU
eXBlKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBjYWxsRXhwcmVz
c2lvbi5zZXRDYXN0RGF0YShjYXN0VHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
IWZ1bmN0aW9uKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYmV0dGVyIGVycm9yIG1lc3NhZ2Vz
IGZvciB3aHkgd2UgY2FuJ3QgcmVzb2x2ZSB0byBvbmUgb2YgdGhlIG92ZXJyaWRlcy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEzMwotICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCB0byBhIGNv
bmNyZXRlIGNhbGxlZS4gTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgY29tcGF0aWJsZSB0eXBlcy4i
LCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi0+cGFyYW1ldGVycygpLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQodHlwZXNbaV0uZ2V0KCks
ICpmdW5jdGlvbi0+cGFyYW1ldGVycygpW2ldLT50eXBlKCkpKSB7Ci0gICAgICAgICAgICBzZXRF
cnJvcihFcnJvcihtYWtlU3RyaW5nKCJJbnZhbGlkIHR5cGUgZm9yIHBhcmFtZXRlciBudW1iZXIg
IiwgaSArIDEsICIgaW4gZnVuY3Rpb24gY2FsbC4iKSwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNh
bGxFeHByZXNzaW9uLnNldEZ1bmN0aW9uKCpmdW5jdGlvbik7Ci0KLSAgICBhc3NpZ25Db25jcmV0
ZVR5cGUoY2FsbEV4cHJlc3Npb24sIGZ1bmN0aW9uLT50eXBlKCkpOwotfQotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gY2hlY2soUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBDaGVja2VyIGNoZWNr
ZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHByb2dyYW0pOwotICAgIGNoZWNrZXIuY2hlY2tFcnJv
ckFuZFZpc2l0KHByb2dyYW0pOwotICAgIGlmIChjaGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAg
IHJldHVybiBjaGVja2VyLnJlc3VsdCgpOwotICAgIHJldHVybiBjaGVja2VyLmFzc2lnblR5cGVz
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY2NjRlM2UxN2E4YzBhMmI3MzA1ZjU4MjQwY2UxZjUyMTc3NGU2OWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
Y2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dyYW0mKTsK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2NhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVmZmZkOGQ4N2E5NTQyMDllZjcyOWUy
YzcyNTNlZDE5MTVlNGViZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2Nh
dGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
TmFtZVNwYWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotc3RydWN0IFRva2VuOwotCi1jbGFzcyBDb2RlTG9jYXRpb24gewotcHVibGljOgotICAgIENv
ZGVMb2NhdGlvbigpCi0gICAgICAgIDogbV9zdGFydE9mZnNldCgweDdGRkZGRkZGKQotICAgICAg
ICAsIG1fZW5kT2Zmc2V0KDB4N0ZGRkZGRkYpCi0gICAgICAgICwgbV9uYW1lU3BhY2Uoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBDb2RlTG9jYXRpb24odW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1fc3RhcnRP
ZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAg
ICAgICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW1lU3BhY2UpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBDb2RlTG9jYXRpb24oY29uc3QgVG9rZW4mKTsKLQotICAgIENvZGVM
b2NhdGlvbihjb25zdCBDb2RlTG9jYXRpb24mIGxvY2F0aW9uMSwgY29uc3QgQ29kZUxvY2F0aW9u
JiBsb2NhdGlvbjIpCi0gICAgICAgIDogbV9zdGFydE9mZnNldChsb2NhdGlvbjEuc3RhcnRPZmZz
ZXQoKSkKLSAgICAgICAgLCBtX2VuZE9mZnNldChsb2NhdGlvbjIuZW5kT2Zmc2V0KCkpCi0gICAg
ICAgICwgbV9uYW1lU3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvY2F0aW9uMS5uYW1lU3Bh
Y2UoKSkpCi0gICAgewotICAgICAgICBBU1NFUlQobG9jYXRpb24xLm5hbWVTcGFjZSgpID09IGxv
Y2F0aW9uMi5uYW1lU3BhY2UoKSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vu
ZE9mZnNldDsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFTVDo6TmFtZVNwYWNlPihtX25hbWVT
cGFjZSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVMb2NhdGlvbiYg
b3RoZXIpIGNvbnN0IAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQgPT0gb3Ro
ZXIubV9zdGFydE9mZnNldAotICAgICAgICAgICAgJiYgbV9lbmRPZmZzZXQgPT0gb3RoZXIubV9l
bmRPZmZzZXQKLSAgICAgICAgICAgICYmIG1fbmFtZVNwYWNlID09IG90aGVyLm1fbmFtZVNwYWNl
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlTG9jYXRpb24mIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IENvZGVMb2NhdGlvbigpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVk
IG1fZW5kT2Zmc2V0IDogMzE7Ci0gICAgdW5zaWduZWQgbV9uYW1lU3BhY2UgOiAyOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyOThkNDljODg2YTE2NjVjYjk4MDliNWViZTMy
ZTNlMDBmYjFhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIgotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4g
Y29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mIGVudHJ5UG9pbnQpCi17Ci0gICAgc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4g
Y29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6
IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGJvb2wgZm91bmROdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5j
dGlvbkF0dHJpYnV0ZSA6IGZ1bmN0aW9uRGVmaW5pdGlvbi0+YXR0cmlidXRlQmxvY2soKSkgewot
ICAgICAgICAgICAgYXV0byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgZm91bmROdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09ICZlbnRyeVBvaW50KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghY29tcHV0ZURpbWVuc2lvbnMpOwotICAgICAgICAgICAgICAgICAg
ICBjb21wdXRlRGltZW5zaW9ucyA9IHt7IG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS53aWR0
aCgpLCBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaGVpZ2h0KCksIG51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZS5kZXB0aCgpIH19OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci0g
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAvLyBDYW5ub3QgZGVj
bGFyZSBtdWx0aXBsZSBudW10aHJlYWQgYXR0cmlidXRlcyBvbiBhIHNpbmdsZSBmdW5jdGlvbi4K
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25zOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEyZGRmMGE4M2FhNjQyN2UzYjM1NzlkYWM1NTI5OTg3YjNlNTM3
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1jbGFzcyBQcm9ncmFt
OwotCi1zdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9ucyhQ
cm9ncmFtJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFi
Nzg2ZGZhZmVjOTgzMTBmMzExNTFiNThhYWVkZWJkMGNhN2Q0OTYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEVycm9yIHsKLXB1YmxpYzoKLSAgICBF
cnJvcihTdHJpbmcmJiBtZXNzYWdlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKQotICAgICAg
ICA6IG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQotICAgICAgICAsIG1fbG9jYXRpb24oY29k
ZUxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBFcnJvcihTdHJpbmcmJiBtZXNzYWdlKQot
ICAgICAgICA6IG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsg
fQotICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgU3RyaW5nIG1fbWVzc2FnZTsKLSAgICBDb2RlTG9jYXRpb24gbV9sb2NhdGlv
bjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2M2RlOGRjOGUwYmJh
NDU5NzlhNGI4MTA5MTcxMmIxMzFhZjRhYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFt
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRnVuY3Rpb25TdGFnZUNoZWNrZXIgOiBwdWJsaWMg
VmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25TdGFnZUNoZWNrZXIoQVNUOjpFbnRyeVBv
aW50VHlwZSBlbnRyeVBvaW50VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKLSAg
ICAgICAgOiBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQotICAgICAgICAsIG1faW50
cmluc2ljcyhpbnRyaW5zaWNzKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHZp
c2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgaWYgKCgmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3Mu
ZGR4KCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmRkeSgp
KSAmJiBtX2VudHJ5UG9pbnRUeXBlICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50KSB7
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSBkZHggb3IgZGR5IGluIGEg
bm9uLWZyYWdtZW50IHNoYWRlci4iLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoJmNhbGxFeHByZXNz
aW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmFsbE1lbW9yeUJhcnJpZXIoKSB8fCAmY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuZGV2aWNlTWVtb3J5QmFycmll
cigpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5ncm91cE1l
bW9yeUJhcnJpZXIoKSkKLSAgICAgICAgICAgICYmIG1fZW50cnlQb2ludFR5cGUgIT0gQVNUOjpF
bnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNh
bm5vdCB1c2UgbWVtb3J5IGJhcnJpZXIgaW4gYSBub24tY29tcHV0ZSBzaGFkZXIuIiwgY2FsbEV4
cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKTsKLSAg
ICB9Ci0KLSAgICBBU1Q6OkVudHJ5UG9pbnRUeXBlIG1fZW50cnlQb2ludFR5cGU7Ci0gICAgY29u
c3QgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGNoZWNrRnVuY3Rpb25TdGFnZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0g
ICAgICAgIGlmICghZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlwZSgpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIEZ1bmN0aW9uU3RhZ2VDaGVja2VyIGZ1bmN0aW9uU3Rh
Z2VDaGVja2VyKCpmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCksIHByb2dyYW0u
aW50cmluc2ljcygpKTsKLSAgICAgICAgZnVuY3Rpb25TdGFnZUNoZWNrZXIuVmlzaXRvcjo6dmlz
aXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uU3RhZ2VDaGVja2Vy
Lmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZnVuY3Rpb25T
dGFnZUNoZWNrZXIucmVzdWx0KCkuZXJyb3IoKSk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMzZmQ5
MmZkZGIxN2Q1NGM4MjNkOThiYmFlMzJlNTE1MTRlMzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQ
cm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tGdW5jdGlvblN0YWdlcyhQcm9n
cmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MDVlODhhNjAxYzgyMTFhNzk1ZjBjMTZlODM5NmYwMjY4NzI2MDY4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJp
bnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVE
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEdhdGhlcmVyIDogcHVibGljIFZp
c2l0b3IgewotcHVibGljOgotICAgIEdhdGhlcmVyKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNp
Y3MsIEFTVDo6U2VtYW50aWMqIHNlbWFudGljID0gbnVsbHB0cikKLSAgICAgICAgOiBtX2ludHJp
bnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX2N1cnJlbnRTZW1hbnRpYyhzZW1hbnRpYykK
LSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+R2F0aGVyZXIoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudFNlbWFudGljID0gbnVsbHB0
cjsKLSAgICAgICAgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbiA9IHsgfTsKLSAgICB9Ci0KLSAg
ICBWZWN0b3I8RW50cnlQb2ludEl0ZW0+IHRha2VFbnRyeVBvaW50SXRlbXMoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFdURk1vdmUobV9lbnRyeVBvaW50SXRlbXMpOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKQotICAgIHsKLSAgICAgICAgaWYg
KCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVj
dGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxl
TG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2Vu
dHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0obV90eXBlUmVmZXJlbmNlcy5sYXN0
KCkuZ2V0KCksICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50
LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobWF0Y2hlcyhuYXRpdmVUeXBlRGVjbGFyYXRpb24sIG1faW50
cmluc2ljcy52b2lkVHlwZSgpKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhw
ZWN0ZWQgdm9pZCB0eXBlIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlh
YmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShtX3R5cGVSZWZlcmVuY2Vz
Lmxhc3QoKS5nZXQoKSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlv
bikKLSAgICB7Ci0gICAgICAgIGlmIChtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIlVuZXhwZWN0ZWQgc2VtYW50aWMgZm9yIHN0cnVjdCBlbnRyeXBvaW50
IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6
IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkgewotICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnRTZW1hbnRpYyA9IHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKTsKLSAgICAgICAgICAgIG1f
cGF0aC5hcHBlbmQoc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgbV9wYXRoLnRha2VM
YXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmlu
aXRpb24mIHR5cGVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5
cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi0gICAgewotICAgICAgICBtX3R5cGVSZWZlcmVu
Y2VzLmFwcGVuZCh0eXBlUmVmZXJlbmNlKTsKLSAgICAgICAgYXV0byBkZXB0aCA9IG1fdHlwZVJl
ZmVyZW5jZXMuc2l6ZSgpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5j
ZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZGVwdGgsIG1fdHlwZVJl
ZmVyZW5jZXMuc2l6ZSgpID09IGRlcHRoKTsKLSAgICAgICAgbV90eXBlUmVmZXJlbmNlcy5yZW1v
dmVMYXN0KCk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2lu
dGVyVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBh
cmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9p
bnRJdGVtKHBvaW50ZXJUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
VHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAg
ICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1
bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJ
dGVtKGFycmF5UmVmZXJlbmNlVHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi0gICAgewot
ICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJy
ZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShhcnJheVR5cGUs
ICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAgewotICAg
ICAgICBBU1NFUlQoIW1fY3VycmVudFNlbWFudGljKTsKLSAgICAgICAgbV9jdXJyZW50VmFyaWFi
bGVMb2NhdGlvbiA9IHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCk7Ci0gICAgICAg
IGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgICAgICBtX2N1cnJl
bnRTZW1hbnRpYyA9IHZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKTsKLSAgICAgICAgQVNT
RVJUKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZCh2
YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgq
dmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBtX3BhdGgudGFrZUxhc3QoKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9wYXRoOwotICAgIGNvbnN0
IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLSAgICBBU1Q6OlNlbWFudGljKiBtX2N1cnJlbnRT
ZW1hbnRpYyB7IG51bGxwdHIgfTsKLSAgICBDb2RlTG9jYXRpb24gbV9jdXJyZW50VmFyaWFibGVM
b2NhdGlvbjsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlR5cGVSZWZl
cmVuY2U+PiBtX3R5cGVSZWZlcmVuY2VzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gbV9l
bnRyeVBvaW50SXRlbXM7Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRlbXMsIEVycm9yPiBn
YXRoZXJFbnRyeVBvaW50SXRlbXMoY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcywgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBBU1NFUlQoZnVu
Y3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpOwotICAgIEdhdGhlcmVyIGlucHV0R2F0
aGVyZXIoaW50cmluc2ljcyk7Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRl
ZmluaXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsK
LSAgICAgICAgaW5wdXRHYXRoZXJlci5jaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVyKTsKLSAg
ICAgICAgaWYgKGlucHV0R2F0aGVyZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChpbnB1dEdhdGhlcmVyLnJlc3VsdCgpLmVycm9yKCkpOwotICAgIH0KLSAg
ICBHYXRoZXJlciBvdXRwdXRHYXRoZXJlcihpbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24u
c2VtYW50aWMoKSk7Ci0gICAgaWYgKCpmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUo
KSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlKQotICAgICAgICBvdXRwdXRHYXRoZXJl
ci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgaWYg
KG91dHB1dEdhdGhlcmVyLmhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChvdXRwdXRHYXRoZXJlci5yZXN1bHQoKS5lcnJvcigpKTsKLQotICAgIHJldHVybiB7eyBpbnB1
dEdhdGhlcmVyLnRha2VFbnRyeVBvaW50SXRlbXMoKSwgb3V0cHV0R2F0aGVyZXIudGFrZUVudHJ5
UG9pbnRJdGVtcygpIH19OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xH
YXRoZXJFbnRyeVBvaW50SXRlbXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0
YjhkOWNlNGM3YzM0NzE5NTI0NDFkMmI5MzhhYTRmZjI3Mjc3My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMU2Vt
YW50aWMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1jbGFz
cyBJbnRyaW5zaWNzOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRl
bSB7Ci0gICAgRW50cnlQb2ludEl0ZW0oQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIEFT
VDo6U2VtYW50aWMmIHNlbWFudGljLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLSAgICAgICAgOiB1
bm5hbWVkVHlwZSgmdW5uYW1lZFR5cGUpCi0gICAgICAgICwgc2VtYW50aWMoJnNlbWFudGljKQot
ICAgICAgICAsIHBhdGgocGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlw
ZSogdW5uYW1lZFR5cGU7Ci0gICAgQVNUOjpTZW1hbnRpYyogc2VtYW50aWM7Ci0gICAgVmVjdG9y
PFN0cmluZz4gcGF0aDsKLX07Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRlbXMgewotICAgIFZlY3Rv
cjxFbnRyeVBvaW50SXRlbT4gaW5wdXRzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gb3V0
cHV0czsKLX07Ci0KLUV4cGVjdGVkPEVudHJ5UG9pbnRJdGVtcywgRXJyb3I+IGdhdGhlckVudHJ5
UG9pbnRJdGVtcyhjb25zdCBJbnRyaW5zaWNzJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsK
LQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZjcwMTE4M2Q1MjJkNWMxZmQ1MDVjNjQ4MThk
ZTcxMTgxZDZkMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xIaWdoWm9tYmllRmluZGVyLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1
ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIEhpZ2hab21iaWVGaW5kZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJs
aWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRN
b2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChy
ZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKS5tYXlCZUVmZmVjdGZ1
bCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhw
cmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb3RFeHBy
ZXNzaW9uLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW5kZXhFeHByZXNzaW9uLmJhc2UoKS5tYXlCZUVmZmVj
dGZ1bCgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVzc2lvbi5pbmRleEV4
cHJlc3Npb24oKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci19OwotCi12b2lkIGZpbmRIaWdo
Wm9tYmllcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsK
LQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgSGlnaFpvbWJpZUZpbmRlciBmaW5kZXI7Ci0gICAg
ZmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotI2VuZGlmCi19Ci0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwM2IyMWIxMDBkMDE3ZjMxZjFhMDNjYzhkMDUw
MTk0NDEyY2FjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5k
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGZpbmRIaWdo
Wm9tYmllcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSW5mZXJUeXBlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZjM4
ZTZkNTQ1NWNmZjVkODY3ZDRkY2UxNzkyNmRmNmY3YTgzZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJU
eXBlcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
cnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1
ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgQVNUOjpUeXBlJiB1
bmlmeVRoaXMsIGNvbnN0IEFTVDo6VHlwZSYgdW5pZnlPdGhlcikKLXsKLSAgICBpZiAoJnVuaWZ5
VGhpcyA9PSAmdW5pZnlPdGhlcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXM8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5VGhpcykgJiYgaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5T3Ro
ZXIpKSB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYXV0byYgbmFtZWRUaGlzID0gZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5VGhpcyk7Ci0gICAgICAgIGF1dG8mIG5hbWVkT3Ro
ZXIgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlPdGhlcik7Ci0gICAgICAgIEFTU0VS
VCghaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUaGlzKSAmJiAhaXM8QVNUOjpUeXBlRGVm
aW5pdGlvbj4obmFtZWRPdGhlcikpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5VGhpcykgJiYgaXM8QVNUOjpV
bm5hbWVkVHlwZT4odW5pZnlPdGhlcikpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFRoaXMgPSBk
b3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeVRoaXMpOwotICAgICAgICBhdXRvJiB1bm5h
bWVkT3RoZXIgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU90aGVyKTsKLSAgICAg
ICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUaGlzKSAmJiAhaXM8QVNU
OjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkT3RoZXIpKTsKLSAgICAgICAgcmV0dXJuIHVubmFtZWRU
aGlzID09IHVubmFtZWRPdGhlcjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29s
IG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEFTVDo6
VW5uYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLnVu
aWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBB
U1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYgb3RoZXIpCi17
Ci0gICAgcmV0dXJuIG1hdGNoZXMobmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5v
ZGUoKSk7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVk
VHlwZSwgY29uc3QgQVNUOjpOYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0KLXN0YXRp
YyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpUeXBlJiB1bmlm
eU5vZGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAgIEFTU0VS
VCghcmVzb2x2YWJsZVR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFyZXNvbHZh
YmxlVHlwZS5jYW5SZXNvbHZlKHVuaWZ5Tm9kZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICBhdXRvJiBu
YW1lZFVuaWZ5Tm9kZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAg
ICAgICBhdXRvIHJlc3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChuYW1lZFVuaWZ5Tm9k
ZS5jb2RlTG9jYXRpb24oKSwgbmFtZWRVbmlmeU5vZGUpOwotICAgICAgICByZXNvbHZhYmxlVHlw
ZS5yZXNvbHZlKHJlc3VsdC5jb3B5UmVmKCkpOwotICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJl
c3VsdCkgfTsKLSAgICB9Ci0KLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gZG93
bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICByZXNvbHZhYmxlVHlwZS5y
ZXNvbHZlKHJlc3VsdC5jb3B5UmVmKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZlB0
cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5h
bWVkVHlwZSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgcmV0
dXJuIG1hdGNoQW5kQ29tbWl0KHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCByZXNvbHZhYmxlVHlw
ZSk7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6Ok5h
bWVkVHlwZSYgbmFtZWRUeXBlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkK
LXsKLSAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCByZXNv
bHZhYmxlVHlwZSk7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1p
dChBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZTEsIEFTVDo6UmVzb2x2YWJsZVR5
cGUmIHJlc29sdmFibGVUeXBlMikKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlMS5tYXli
ZVJlc29sdmVkVHlwZSgpKTsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlMi5tYXliZVJlc29s
dmVkVHlwZSgpKTsKLSAgICBpZiAoaXM8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxl
VHlwZTEpICYmIGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKSkgewot
ICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmVzb2x2
YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZh
YmxlVHlwZTIpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNU
OjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKTsKLSAg
ICB9Ci0gICAgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEp
ICYmIGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpKSB7Ci0gICAg
ICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxU
eXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJlc29sdmFi
bGVUeXBlMi5yZXNvbHZlKGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZh
YmxlVHlwZTIpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNU
OjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwot
ICAgIH0KLSAgICBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2
YWJsZVR5cGUxKSAmJiBpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZh
YmxlVHlwZTIpKSB7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVk
VHlwZSgpKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBl
KCkpOwotICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChBU1Q6OlJl
c29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVU
eXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlKSkgewotICAgICAgICBhdXRvJiBmbG9hdExpdGVyYWxUeXBlID0g
ZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAg
IHJlc29sdmFibGVUeXBlLnJlc29sdmUoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkp
OwotICAgICAgICByZXR1cm4gJmZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAg
IH0KLSAgICBpZiAoaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKSkg
ewotICAgICAgICBhdXRvJiBpbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5y
ZXNvbHZlKGludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1
cm4gJmludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChp
czxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAg
ICAgICAgYXV0byYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAgIHJlc29s
dmFibGVUeXBlLnJlc29sdmUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlw
ZSgpKTsKLSAgICAgICAgcmV0dXJuICZ1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJy
ZWRUeXBlKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIGluZmVyVHlw
ZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFTVDo6VHlw
ZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykKLXsKLSAgICBpZiAoaXM8QVNUOjpUeXBlRGVmaW5p
dGlvbj4ocG9zc2libGVUeXBlKQotICAgICAgICB8fCBpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KHBvc3NpYmxlVHlwZSkKLSAgICAgICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KHBvc3NpYmxlVHlwZSkpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHMuaXNFbXB0
eSgpOwotICAgIH0KLQotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihwb3NzaWJsZVR5cGUpOwotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSAhPSB0eXBlQXJndW1lbnRz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiogdHlwZUFyZ3VtZW50RXhwcmVzc2lvbiA9
IG51bGxwdHI7Ci0gICAgICAgIEFTVDo6VHlwZVJlZmVyZW5jZSogdHlwZUFyZ3VtZW50VHlwZVJl
ZmVyZW5jZSA9IG51bGxwdHI7Ci0gICAgICAgIEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uKiBuYXRp
dmVUeXBlQXJndW1lbnRFeHByZXNzaW9uID0gbnVsbHB0cjsKLSAgICAgICAgQVNUOjpUeXBlUmVm
ZXJlbmNlKiBuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlID0gbnVsbHB0cjsKLQotICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXShBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50LCBB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbiomIGV4cHJlc3Npb24sIEFTVDo6VHlwZVJlZmVyZW5jZSom
IHR5cGVSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgewotICAg
ICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAmY29uc3RhbnRFeHByZXNzaW9uOwotICAgICAgICAg
ICAgfSwgWyZdKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+JiB0aGVUeXBlUmVmZXJlbmNlKSB7Ci0g
ICAgICAgICAgICAgICAgdHlwZVJlZmVyZW5jZSA9IHRoZVR5cGVSZWZlcmVuY2UucHRyKCk7Ci0g
ICAgICAgICAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLSAgICAgICAgfTsKLQotICAgICAgICBhc3Np
Z24odHlwZUFyZ3VtZW50c1tpXSwgdHlwZUFyZ3VtZW50RXhwcmVzc2lvbiwgdHlwZUFyZ3VtZW50
VHlwZVJlZmVyZW5jZSk7Ci0gICAgICAgIGFzc2lnbihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlw
ZUFyZ3VtZW50cygpW2ldLCBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uLCBuYXRpdmVUeXBl
QXJndW1lbnRUeXBlUmVmZXJlbmNlKTsKLQotICAgICAgICBpZiAodHlwZUFyZ3VtZW50RXhwcmVz
c2lvbiAmJiBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAo
IXR5cGVBcmd1bWVudEV4cHJlc3Npb24tPm1hdGNoZXMoKm5hdGl2ZVR5cGVBcmd1bWVudEV4cHJl
c3Npb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
ICh0eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlICYmIG5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZl
cmVuY2UpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcygqdHlwZUFyZ3VtZW50VHlwZVJlZmVy
ZW5jZSwgKm5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZUtpbmQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgaW5mZXJU
eXBlc0ZvckNhbGxJbXBsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlv
biwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVu
dFR5cGVzLCBjb25zdCBUeXBlS2luZCogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgaWYgKHBvc3Np
YmxlRnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSAhPSBhcmd1bWVudFR5cGVzLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9zc2li
bGVGdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBzdWNj
ZXNzID0gYXJndW1lbnRUeXBlc1tpXS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBib29sIHsKLSAgICAgICAgICAg
IHJldHVybiBtYXRjaGVzKCpwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgp
LCB1bm5hbWVkVHlwZSk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY2FuUmVzb2x2
ZShwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT51bmlmeU5vZGUoKSk7
Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FzdFJldHVyblR5cGUgJiYgIW1hdGNoZXMocG9zc2li
bGVGdW5jdGlvbi50eXBlKCksICpjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpOYW1l
ZFR5cGUqIGNhc3RSZXR1cm5UeXBlKQotewotICAgIHJldHVybiBpbmZlclR5cGVzRm9yQ2FsbElt
cGwocG9zc2libGVGdW5jdGlvbiwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUpOwotfQot
Ci1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2li
bGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+
JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkK
LXsKLSAgICByZXR1cm4gaW5mZXJUeXBlc0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rpb24sIGFy
Z3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xJbmZlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEluZmVyVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyMmYzN2RjMGQ4
NmM4NzYwNzVjZDc0YWYwN2U4YTIxNGE3MDhkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEluZmVyVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50Lmgi
Ci0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwot
Y2xhc3MgTmFtZWRUeXBlOwotY2xhc3MgUmVzb2x2YWJsZVR5cGU7Ci1jbGFzcyBVbm5hbWVkVHlw
ZTsKLQotfQotCi1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYsIGNvbnN0IEFT
VDo6VW5uYW1lZFR5cGUmKTsKLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6Ok5hbWVkVHlwZSYsIGNv
bnN0IEFTVDo6TmFtZWRUeXBlJik7Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlw
ZSYsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0
Y2hBbmRDb21taXQoQVNUOjpVbm5hbWVkVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5cGUmKTsKLVJl
ZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6Ok5hbWVkVHlwZSYsIEFT
VDo6UmVzb2x2YWJsZVR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENv
bW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJiwgQVNUOjpSZXNvbHZhYmxlVHlwZSYpOwotUmVmUHRy
PEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1ib29sIGlu
ZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFT
VDo6VHlwZUFyZ3VtZW50cyYpOwotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpOYW1lZFR5cGUq
IGNhc3RSZXR1cm5UeXBlKTsKLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUq
IGNhc3RSZXR1cm5UeXBlKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEludHJpbnNpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbnRyaW5zaWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0Mzdh
MmNlMmVjNjA4NGI5NWIzY2Q1NjE3YmI2OGIyNGY4OWVlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEludHJpbnNpY3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5z
aWNzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
bnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPGNzdHJpbmc+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZVR5cGVOYW1lc1td
OwotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZUlubmVyVHlwZU5h
bWVzW107Ci1jb25zdGV4cHIgY29uc3QgY2hhciogSW50cmluc2ljczo6bV9kZXB0aFRleHR1cmVJ
bm5lclR5cGVzW107Ci0KLUludHJpbnNpY3M6OkludHJpbnNpY3MoKQotewotfQotCi12b2lkIElu
dHJpbnNpY3M6OmFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJkZHgiKQotICAgICAgICBtX2RkeCA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
OwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJkZHki
KQotICAgICAgICBtX2RkeSA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2Ug
aWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1vcnlCYXJyaWVy
V2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fYWxsTWVtb3J5QmFycmllciA9ICZuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1f
ZGV2aWNlTWVtb3J5QmFycmllciA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVs
c2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91cE1lbW9yeUJh
cnJpZXJXaXRoR3JvdXBTeW5jIikKLSAgICAgICAgbV9ncm91cE1lbW9yeUJhcnJpZXIgPSAmbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRQcmltaXRp
dmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsK
LSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJ2b2lkIikKLSAgICAgICAgbV92b2lkVHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRp
b247Ci0gICAgZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYm9vbCIp
Ci0gICAgICAgIG1fYm9vbFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIGVsc2Ug
aWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVpbnQiKSB7Ci0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0ludCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFy
YXRpb24uc2V0SXNOdW1iZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENh
blJlcHJlc2VudEludGVnZXIoW10oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB4ID49IDA7
Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVz
ZW50VW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXBy
ZXNlbnRGbG9hdChbXShmbG9hdCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KSkgPT0geDsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRTdWNjZXNzb3IoW10oaW50NjRfdCB4KSAtPiBp
bnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCArIDEp
OwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZh
bHVlRnJvbUludGVnZXIoW10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoW10odW5zaWdu
ZWQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEl0
ZXJhdGVBbGxWYWx1ZXMoW10oY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2Fs
bGJhY2spIHsKLSAgICAgICAgICAgIGZvciAoaW50NjRfdCBpID0gMDsgaSA8IDB4MTAwMDAwMDAw
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2soaSkpCi0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgbV91aW50
VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0ludCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNOdW1i
ZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzU2lnbmVkKCk7Ci0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCkg
ewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVk
IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB4IDw9IDIxNDc0ODM2NDc7Ci0gICAgICAgIH0pOwot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxv
YXQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2Fz
dDxpbnQzMl90Pih4KSkgPT0geDsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRTdWNjZXNzb3IoW10oaW50NjRfdCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih4ICsgMSk7Ci0gICAgICAgIH0pOwotICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihbXShp
bnQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oeCk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9y
bWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkIHgpIC0+IGludDY0X3Qgewot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpOwotICAgICAgICB9KTsK
LSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEl0ZXJhdGVBbGxWYWx1ZXMoW10oY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsKLSAgICAgICAgICAg
IGZvciAoaW50NjRfdCBpID0gLTIxNDc0ODM2NDc7IGkgPCAyMTQ3NDgzNjQ4OyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY2FsbGJhY2soaSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgbV9pbnRUeXBlID0gJm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gImZsb2F0IikgewotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNO
dW1iZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzRmxvYXRpbmcoKTsK
LSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVnZXIoW10o
aW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoW10odW5z
aWduZWQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEZsb2F0KFtdKGZsb2F0KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmxvYXRUeXBl
ID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY19pbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc0F0b21pYygpOwotICAgICAgICBtX2F0b21pY0ludFR5cGUgPSAmbmF0aXZl
VHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiYXRvbWljX3VpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRJc0F0b21pYygpOwotICAgICAgICBtX2F0b21pY1VpbnRUeXBlID0gJm5hdGl2ZVR5cGVEZWNs
YXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
InNhbXBsZXIiKSB7Ci0gICAgICAgIG1fc2FtcGxlclR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0
aW9uOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFxdWVUeXBlKCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZFZlY3RvcihBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpICE9ICJ2ZWN0b3IiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBB
U1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMik7
Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5j
ZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBBU1NF
UlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZl
VHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgIGF1dG8mIGlubmVyVHlw
ZSA9IHN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZSY+KFdURjo6Z2V0PFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7
Ci0gICAgYXV0byYgbGVuZ3RoRXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsKLSAgICBB
U1NFUlQoIWlubmVyVHlwZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAgICBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbioqIGFycmF5OwotICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09ICJi
b29sIikKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvckJvb2w7Ci0gICAgZWxzZSBpZiAoaW5uZXJU
eXBlLm5hbWUoKSA9PSAidWludCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JVaW50OwotICAg
IGVsc2UgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAgIGFycmF5ID0gbV92
ZWN0b3JJbnQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpbm5lclR5cGUubmFtZSgpID09
ICJmbG9hdCIpOwotICAgICAgICBhcnJheSA9IG1fdmVjdG9yRmxvYXQ7Ci0gICAgfQotICAgIGlu
dCBsZW5ndGggPSBsZW5ndGhFeHByZXNzaW9uLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAg
ICBBU1NFUlQobGVuZ3RoID49IDIgJiYgbGVuZ3RoIDw9IDQpOwotICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc1ZlY3RvcigpOwotICAgIGFycmF5W2xlbmd0aCAtIDJdID0gJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjph
ZGRNYXRyaXgoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAibWF0cml4IikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElz
TWF0cml4KCk7Ci0KLSAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVu
dHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRz
KClbMF0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50
RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwot
ICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9u
PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzJdKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgSW50cmluc2ljczo6YWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNl
JiBpbm5lclR5cGUpCi17Ci0gICAgYXV0byB0ZXh0dXJlVHlwZUluZGV4ID0gc3RkOjpmaW5kKG1f
dGV4dHVyZVR5cGVOYW1lcywgbV90ZXh0dXJlVHlwZU5hbWVzICsgV1RGX0FSUkFZX0xFTkdUSCht
X3RleHR1cmVUeXBlTmFtZXMpLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKSAtIG1fdGV4
dHVyZVR5cGVOYW1lczsKLSAgICBpZiAodGV4dHVyZVR5cGVJbmRleCA9PSBXVEZfQVJSQVlfTEVO
R1RIKG1fdGV4dHVyZVR5cGVOYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVu
c2lnbmVkIGlubmVyVHlwZUluZGV4ID0gV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5
cGVOYW1lcyk7Ci0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gMDsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcyk7
ICsraSkgewotICAgICAgICBpZiAoaW5uZXJUeXBlLm5hbWUoKS5zdGFydHNXaXRoKG1fdGV4dHVy
ZUlubmVyVHlwZU5hbWVzW2ldKSkgewotICAgICAgICAgICAgaW5uZXJUeXBlSW5kZXggPSBpOwot
ICAgICAgICAgICAgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gbV90ZXh0dXJlSW5uZXJUeXBlTmFt
ZXNbaV0pCi0gICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gMTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlu
bmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkgPT0gc3RybGVuKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVz
W2ldKSArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdID09ICcy
JwotICAgICAgICAgICAgICAgICAgICB8fCBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1l
KCkubGVuZ3RoKCkgLSAxXSA9PSAnMycKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5uZXJUeXBl
Lm5hbWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzQnKTsKLSAgICAgICAg
ICAgICAgICB2ZWN0b3JMZW5ndGggPSBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCku
bGVuZ3RoKCkgLSAxXSAtICcwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBSRUxFQVNFX0FTU0VSVCh2ZWN0b3JMZW5ndGggJiYgdmVjdG9yTGVuZ3RoIDwgNSk7Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5uZXJUeXBlSW5kZXggIT0gV1RGX0FS
UkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcykpOwotICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc1RleHR1cmUoKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNP
cGFxdWVUeXBlKCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRl
eHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1
cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRB
cnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJh
eSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1cmVBcnJheSgpOwot
ICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxRCIgfHwg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIiB8fCBuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldElzV3JpdGFibGVUZXh0dXJlKCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRl
eHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1
cmUxREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1l
bnNpb24oMSk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1
cmUyRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiIHx8
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIiB8fCBuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRBcnJheSIgfHwgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDIpOwotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlM0QiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldFRleHR1cmVEaW1lbnNpb24oMyk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIlRleHR1cmVDdWJlIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNl
dElzQ3ViZVRleHR1cmUoKTsKLSAgICBtX2Z1bGxUZXh0dXJlc1t0ZXh0dXJlVHlwZUluZGV4XVtp
bm5lclR5cGVJbmRleF1bdmVjdG9yTGVuZ3RoIC0gMV0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9u
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZERlcHRoVGV4dHVy
ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBBU1Q6
OlR5cGVSZWZlcmVuY2UmIGlubmVyVHlwZSkKLXsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbioqIHRleHR1cmUgPSBudWxscHRyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJUZXh0dXJlRGVwdGgyRCIpCi0gICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVE
ZXB0aDJEOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRl
eHR1cmVEZXB0aDJEQXJyYXkiKQotICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJlRGVwdGgyREFy
cmF5OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiVGV4dHVyZURlcHRoQ3ViZSIpOwotICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJl
RGVwdGhDdWJlOwotICAgIH0KLSAgICBhdXRvIGlubmVyVHlwZUluZGV4ID0gc3RkOjpmaW5kKG1f
ZGVwdGhUZXh0dXJlSW5uZXJUeXBlcywgbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzICsgV1RGX0FS
UkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpLCBpbm5lclR5cGUubmFtZSgpKSAt
IG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlczsKLSAgICBBU1NFUlQoaW5uZXJUeXBlSW5kZXggIT0g
V1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpKTsKLSAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldElzT3BhcXVlVHlwZSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURlcHRoMkRB
cnJheSkKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZUFycmF5KCk7
Ci0gICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlRGVwdGhDdWJlKQotICAgICAgICBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uc2V0SXNDdWJlVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDIpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRJc0RlcHRoVGV4dHVyZSgpOwotICAgIHRleHR1cmVbaW5uZXJUeXBlSW5kZXhdID0gJm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGRUZXh0dXJlKEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgQVNT
RVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDEpOwot
ICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+
PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgYXV0byYg
aW5uZXJUeXBlID0gc3RhdGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4oV1RGOjpnZXQ8UmVm
PEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRz
KClbMF0pKTsKLSAgICBBU1NFUlQoIWlubmVyVHlwZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKTsK
LSAgICBpZiAoYWRkRnVsbFRleHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uLCBpbm5lclR5cGUp
KSB7Ci0gICAgICAgIG1fdGV4dHVyZVNldC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYWRkRGVwdGhUZXh0dXJlKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiwgaW5uZXJUeXBlKTsKLSAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRpdmVUeXBlRGVj
bGFyYXRpb24pOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChhZGRQcmltaXRpdmUo
bmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhZGRWZWN0
b3IobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhZGRN
YXRyaXgobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFkZFRl
eHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xJbnRyaW5zaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEludHJpbnNpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZmZmZhNWU0NGU0
MGQzNjk2ODI2YWI4ZDhkNmFmNzY1Yzg1NTJkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEludHJpbnNpY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3MgewotcHVi
bGljOgotICAgIEludHJpbnNpY3MoKTsKLQotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpOwotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
Jik7Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdm9pZFR5cGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdm9pZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fdm9p
ZFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGJvb2xUeXBl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Jvb2xUeXBlKTsKLSAgICAgICAgcmV0
dXJuICptX2Jvb2xUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBib29sVmVjdG9yVHlwZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsK
LSAgICAgICAgcmV0dXJuICptX3ZlY3RvckJvb2xbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV91aW50VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV91aW50VHlwZTsKLSAgICB9
Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50VHlwZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQobV9pbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX2ludFR5cGU7
Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnQyVHlwZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JVaW50WzBdKTsKLSAgICAgICAgcmV0
dXJuICptX3ZlY3RvclVpbnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24mIHVpbnQ0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JV
aW50WzJdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvclVpbnRbMl07Ci0gICAgfQotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnRWZWN0b3JUeXBlRm9yU2l6ZSh1bnNpZ25l
ZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSAyIHx8
IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yVWludFtz
aXplIC0gMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludDJU
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckludFswXSk7Ci0gICAg
ICAgIHJldHVybiAqbV92ZWN0b3JJbnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIGludDRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Zl
Y3RvckludFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRbMl07Ci0gICAgfQotCi0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludFZlY3RvclR5cGVGb3JTaXplKHVuc2ln
bmVkIHNpemUpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIg
fHwgc2l6ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRb
c2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBzYW1w
bGVyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9zYW1wbGVyVHlwZSk7Ci0g
ICAgICAgIHJldHVybiAqbV9zYW1wbGVyVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgZmxvYXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2Zsb2F0VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9mbG9hdFR5cGU7Ci0gICAgfQotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0MlR5cGUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRbMF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9y
RmxvYXRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0
M1R5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRbMV0pOwot
ICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbMV07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdmVjdG9yRmxvYXRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbMl07
Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VmVjdG9yVHlw
ZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJu
ICptX3ZlY3RvckZsb2F0W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICAvLyBUaGVzZSBmdW5jdGlv
bnMgbWF5IGhhdmUgYmVlbiBwcnVuZWQgZnJvbSB0aGUgQVNUIGlmIHRoZXkgYXJlIHVudXNlZC4K
LSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRkeCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9kZHg7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKiBkZHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR5OwotICAg
IH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogYWxsTWVtb3J5QmFycmll
cigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hbGxNZW1vcnlCYXJyaWVyOwotICAg
IH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGV2aWNlTWVtb3J5QmFy
cmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kZXZpY2VNZW1vcnlCYXJyaWVy
OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZ3JvdXBNZW1v
cnlCYXJyaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyb3VwTWVtb3J5QmFy
cmllcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBhZGRQcmltaXRpdmUoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZFZlY3RvcihBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJik7Ci0gICAgYm9vbCBhZGRGdWxsVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYsIEFTVDo6VHlwZVJlZmVyZW5jZSYpOwotICAgIHZvaWQgYWRkRGVwdGhUZXh0dXJlKEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiwgQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBh
ZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBIYXNoU2V0PGNv
bnN0IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKj4gbV90ZXh0dXJlU2V0OwotCi0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdm9pZFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYm9vbFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdWludFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1faW50VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9mbG9hdFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYXRvbWljSW50VHlwZSB7IG51bGxwdHIgfTsKLSAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9hdG9taWNVaW50VHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9zYW1wbGVyVHlwZSB7IG51bGxw
dHIgfTsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3RvckJvb2xbM10g
eyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yVWludFszXSB7
IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JJbnRbM10geyAw
IH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yRmxvYXRbM10geyAw
IH07Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1fdGV4dHVyZVR5cGVOYW1l
c1tdID0geyAiVGV4dHVyZTFEIiwgIlJXVGV4dHVyZTFEIiwgIlRleHR1cmUyRCIsICJSV1RleHR1
cmUyRCIsICJUZXh0dXJlM0QiLCAiUldUZXh0dXJlM0QiLCAiVGV4dHVyZUN1YmUiLCAiVGV4dHVy
ZTFEQXJyYXkiLCAiUldUZXh0dXJlMURBcnJheSIsICJUZXh0dXJlMkRBcnJheSIsICJSV1RleHR1
cmUyREFycmF5IiB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBtX3RleHR1
cmVJbm5lclR5cGVOYW1lc1tdID0geyAidWludCIsICJpbnQiLCAiZmxvYXQiIH07Ci0KLSAgICBB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9mdWxsVGV4dHVyZXNbV1RGX0FSUkFZX0xFTkdU
SChtX3RleHR1cmVUeXBlTmFtZXMpXVtXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlw
ZU5hbWVzKV1bNF0ge3t7IDAgfX19OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXNbXSA9ICB7ICJmbG9hdCIgfTsKLQotICAgIEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEW1dURl9BUlJBWV9MRU5HVEgo
bV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fdGV4dHVyZURlcHRoMkRBcnJheVtXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhU
ZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
KiBtX3RleHR1cmVEZXB0aEN1YmVbV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVy
VHlwZXMpXSB7IDAgfTsKLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9k
ZHggeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Rk
eSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fYWxs
TWVtb3J5QmFycmllciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIG1fZGV2aWNlTWVtb3J5QmFycmllciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZ3JvdXBNZW1vcnlCYXJyaWVyIHsgbnVsbHB0ciB9Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWQ2YjBlYWNjZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3NDNiOTdiYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3
NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTExleGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3QgY2hhciogVG9rZW46OnR5cGVO
YW1lKFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFR5cGU6Oklu
dExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAiaW50IGxpdGVyYWwiOwotICAgIGNhc2UgVHlwZTo6
VWludExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAidWludCBsaXRlcmFsIjsKLSAgICBjYXNlIFR5
cGU6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCBsaXRlcmFsIjsKLSAgICBj
YXNlIFR5cGU6OlN0cnVjdDoKLSAgICAgICAgcmV0dXJuICJzdHJ1Y3QiOwotICAgIGNhc2UgVHlw
ZTo6VHlwZWRlZjoKLSAgICAgICAgcmV0dXJuICJ0eXBlZGVmIjsKLSAgICBjYXNlIFR5cGU6OkVu
dW06Ci0gICAgICAgIHJldHVybiAiZW51bSI7Ci0gICAgY2FzZSBUeXBlOjpPcGVyYXRvcjoKLSAg
ICAgICAgcmV0dXJuICJvcGVyYXRvciI7Ci0gICAgY2FzZSBUeXBlOjpJZjoKLSAgICAgICAgcmV0
dXJuICJpZiI7Ci0gICAgY2FzZSBUeXBlOjpFbHNlOgotICAgICAgICByZXR1cm4gImVsc2UiOwot
ICAgIGNhc2UgVHlwZTo6Q29udGludWU6Ci0gICAgICAgIHJldHVybiAiY29udGludWUiOwotICAg
IGNhc2UgVHlwZTo6QnJlYWs6Ci0gICAgICAgIHJldHVybiAiYnJlYWsiOwotICAgIGNhc2UgVHlw
ZTo6U3dpdGNoOgotICAgICAgICByZXR1cm4gInN3aXRjaCI7Ci0gICAgY2FzZSBUeXBlOjpDYXNl
OgotICAgICAgICByZXR1cm4gImNhc2UiOwotICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuICJkZWZhdWx0IjsKLSAgICBjYXNlIFR5cGU6OkZhbGx0aHJvdWdoOgotICAgICAg
ICByZXR1cm4gImZhbGx0aHJvdWdoIjsKLSAgICBjYXNlIFR5cGU6OkZvcjoKLSAgICAgICAgcmV0
dXJuICJmb3IiOwotICAgIGNhc2UgVHlwZTo6V2hpbGU6Ci0gICAgICAgIHJldHVybiAid2hpbGUi
OwotICAgIGNhc2UgVHlwZTo6RG86Ci0gICAgICAgIHJldHVybiAiZG8iOwotICAgIGNhc2UgVHlw
ZTo6UmV0dXJuOgotICAgICAgICByZXR1cm4gInJldHVybiI7Ci0gICAgY2FzZSBUeXBlOjpOdWxs
OgotICAgICAgICByZXR1cm4gIm51bGwiOwotICAgIGNhc2UgVHlwZTo6VHJ1ZToKLSAgICAgICAg
cmV0dXJuICJ0cnVlIjsKLSAgICBjYXNlIFR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4gImZh
bHNlIjsKLSAgICBjYXNlIFR5cGU6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNvbnN0YW50
IjsKLSAgICBjYXNlIFR5cGU6OkRldmljZToKLSAgICAgICAgcmV0dXJuICJkZXZpY2UiOwotICAg
IGNhc2UgVHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFkZ3JvdXAiOwot
ICAgIGNhc2UgVHlwZTo6VGhyZWFkOgotICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0gICAgY2Fz
ZSBUeXBlOjpTcGFjZToKLSAgICAgICAgcmV0dXJuICJzcGFjZSI7Ci0gICAgY2FzZSBUeXBlOjpW
ZXJ0ZXg6Ci0gICAgICAgIHJldHVybiAidmVydGV4IjsKLSAgICBjYXNlIFR5cGU6OkZyYWdtZW50
OgotICAgICAgICByZXR1cm4gImZyYWdtZW50IjsKLSAgICBjYXNlIFR5cGU6OkNvbXB1dGU6Ci0g
ICAgICAgIHJldHVybiAiY29tcHV0ZSI7Ci0gICAgY2FzZSBUeXBlOjpOdW1UaHJlYWRzOgotICAg
ICAgICByZXR1cm4gIm51bXRocmVhZHMiOwotICAgIGNhc2UgVHlwZTo6U1ZJbnN0YW5jZUlEOgot
ICAgICAgICByZXR1cm4gIlNWX0luc3RhbmNlSUQiOwotICAgIGNhc2UgVHlwZTo6U1ZWZXJ0ZXhJ
RDoKLSAgICAgICAgcmV0dXJuICJTVl9WZXJ0ZXhJRCI7Ci0gICAgY2FzZSBUeXBlOjpQU2l6ZToK
LSAgICAgICAgcmV0dXJuICJQU0laRSI7Ci0gICAgY2FzZSBUeXBlOjpTVlBvc2l0aW9uOgotICAg
ICAgICByZXR1cm4gIlNWX1Bvc2l0aW9uIjsKLSAgICBjYXNlIFR5cGU6OlNWSXNGcm9udEZhY2U6
Ci0gICAgICAgIHJldHVybiAiU1ZfSXNGcm9udEZhY2UiOwotICAgIGNhc2UgVHlwZTo6U1ZTYW1w
bGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJTVl9TYW1wbGVJbmRleCI7Ci0gICAgY2FzZSBUeXBl
OjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiU1ZfSW5uZXJDb3ZlcmFnZSI7Ci0g
ICAgY2FzZSBUeXBlOjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJuICJTVl9UYXJnZXQiOwotICAg
IGNhc2UgVHlwZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJTVl9EZXB0aCI7Ci0gICAgY2Fz
ZSBUeXBlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIlNWX0NvdmVyYWdlIjsKLSAgICBj
YXNlIFR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJTVl9EaXNwYXRj
aFRocmVhZElEIjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuICJT
Vl9Hcm91cElEIjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJu
ICJTVl9Hcm91cEluZGV4IjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAg
ICAgcmV0dXJuICJTVl9Hcm91cFRocmVhZElEIjsKLSAgICBjYXNlIFR5cGU6OkF0dHJpYnV0ZToK
LSAgICAgICAgcmV0dXJuICJTVl9BdHRyaWJ1dGUiOwotICAgIGNhc2UgVHlwZTo6UmVnaXN0ZXI6
Ci0gICAgICAgIHJldHVybiAicmVnaXN0ZXIiOwotICAgIGNhc2UgVHlwZTo6U3BlY2lhbGl6ZWQ6
Ci0gICAgICAgIHJldHVybiAic3BlY2lhbGl6ZWQiOwotICAgIGNhc2UgVHlwZTo6TmF0aXZlOgot
ICAgICAgICByZXR1cm4gIm5hdGl2ZSI7Ci0gICAgY2FzZSBUeXBlOjpSZXN0cmljdGVkOgotICAg
ICAgICByZXR1cm4gInJlc3RyaWN0ZWQiOwotICAgIGNhc2UgVHlwZTo6VW5kZXJzY29yZToKLSAg
ICAgICAgcmV0dXJuICJfIjsKLSAgICBjYXNlIFR5cGU6OkF1dG86Ci0gICAgICAgIHJldHVybiAi
YXV0byI7Ci0gICAgY2FzZSBUeXBlOjpQcm90b2NvbDoKLSAgICAgICAgcmV0dXJuICJwcm90b2Nv
bCI7Ci0gICAgY2FzZSBUeXBlOjpDb25zdDoKLSAgICAgICAgcmV0dXJuICJjb25zdCI7Ci0gICAg
Y2FzZSBUeXBlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAic3RhdGljIjsKLSAgICBjYXNlIFR5
cGU6OlF1YWxpZmllcjoKLSAgICAgICAgcmV0dXJuICJxdWFsaWZpZXIiOwotICAgIGNhc2UgVHlw
ZTo6SWRlbnRpZmllcjoKLSAgICAgICAgcmV0dXJuICJpZGVudGlmaWVyIjsKLSAgICBjYXNlIFR5
cGU6Ok9wZXJhdG9yTmFtZToKLSAgICAgICAgcmV0dXJuICJvcGVyYXRvciBuYW1lIjsKLSAgICBj
YXNlIFR5cGU6OkVxdWFsc1NpZ246Ci0gICAgICAgIHJldHVybiAiPSI7Ci0gICAgY2FzZSBUeXBl
OjpTZW1pY29sb246Ci0gICAgICAgIHJldHVybiAiOyI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0Q3Vy
bHlCcmFja2V0OgotICAgICAgICByZXR1cm4gInsiOwotICAgIGNhc2UgVHlwZTo6UmlnaHRDdXJs
eUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiAifSI7Ci0gICAgY2FzZSBUeXBlOjpDb2xvbjoKLSAg
ICAgICAgcmV0dXJuICI6IjsKLSAgICBjYXNlIFR5cGU6OkNvbW1hOgotICAgICAgICByZXR1cm4g
IiwiOwotICAgIGNhc2UgVHlwZTo6TGVmdFBhcmVudGhlc2lzOgotICAgICAgICByZXR1cm4gIigi
OwotICAgIGNhc2UgVHlwZTo6UmlnaHRQYXJlbnRoZXNpczoKLSAgICAgICAgcmV0dXJuICIpIjsK
LSAgICBjYXNlIFR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgotICAgICAgICByZXR1cm4gIltdIjsK
LSAgICBjYXNlIFR5cGU6OkxlZnRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4gIlsiOwot
ICAgIGNhc2UgVHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4gIl0iOwot
ICAgIGNhc2UgVHlwZTo6U3RhcjoKLSAgICAgICAgcmV0dXJuICIqIjsKLSAgICBjYXNlIFR5cGU6
Okxlc3NUaGFuU2lnbjoKLSAgICAgICAgcmV0dXJuICI8IjsKLSAgICBjYXNlIFR5cGU6OkdyZWF0
ZXJUaGFuU2lnbjoKLSAgICAgICAgcmV0dXJuICI+IjsKLSAgICBjYXNlIFR5cGU6OkZ1bGxTdG9w
OgotICAgICAgICByZXR1cm4gIi4iOwotICAgIGNhc2UgVHlwZTo6UGx1c0VxdWFsczoKLSAgICAg
ICAgcmV0dXJuICIrPSI7Ci0gICAgY2FzZSBUeXBlOjpNaW51c0VxdWFsczoKLSAgICAgICAgcmV0
dXJuICItPSI7Ci0gICAgY2FzZSBUeXBlOjpUaW1lc0VxdWFsczoKLSAgICAgICAgcmV0dXJuICIq
PSI7Ci0gICAgY2FzZSBUeXBlOjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiLz0iOwot
ICAgIGNhc2UgVHlwZTo6TW9kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiU9IjsKLSAgICBjYXNl
IFR5cGU6OlhvckVxdWFsczoKLSAgICAgICAgcmV0dXJuICJePSI7Ci0gICAgY2FzZSBUeXBlOjpB
bmRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiJj0iOwotICAgIGNhc2UgVHlwZTo6T3JFcXVhbHM6
Ci0gICAgICAgIHJldHVybiAifD0iOwotICAgIGNhc2UgVHlwZTo6UmlnaHRTaGlmdEVxdWFsczoK
LSAgICAgICAgcmV0dXJuICI+Pj0iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0RXF1YWxzOgot
ICAgICAgICByZXR1cm4gIjw8PSI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzUGx1czoKLSAgICAgICAg
cmV0dXJuICIrKyI7Ci0gICAgY2FzZSBUeXBlOjpNaW51c01pbnVzOgotICAgICAgICByZXR1cm4g
Ii0tIjsKLSAgICBjYXNlIFR5cGU6OkFycm93OgotICAgICAgICByZXR1cm4gIi0+IjsKLSAgICBj
YXNlIFR5cGU6OlF1ZXN0aW9uTWFyazoKLSAgICAgICAgcmV0dXJuICI/IjsKLSAgICBjYXNlIFR5
cGU6Ok9yT3I6Ci0gICAgICAgIHJldHVybiAifHwiOwotICAgIGNhc2UgVHlwZTo6QW5kQW5kOgot
ICAgICAgICByZXR1cm4gIiYmIjsKLSAgICBjYXNlIFR5cGU6Ok9yOgotICAgICAgICByZXR1cm4g
InwiOwotICAgIGNhc2UgVHlwZTo6WG9yOgotICAgICAgICByZXR1cm4gIl4iOwotICAgIGNhc2Ug
VHlwZTo6QW5kOgotICAgICAgICByZXR1cm4gIiYiOwotICAgIGNhc2UgVHlwZTo6TGVzc1RoYW5P
ckVxdWFsVG86Ci0gICAgICAgIHJldHVybiAiPD0iOwotICAgIGNhc2UgVHlwZTo6R3JlYXRlclRo
YW5PckVxdWFsVG86Ci0gICAgICAgIHJldHVybiAiPj0iOwotICAgIGNhc2UgVHlwZTo6RXF1YWxD
b21wYXJpc29uOgotICAgICAgICByZXR1cm4gIj09IjsKLSAgICBjYXNlIFR5cGU6Ok5vdEVxdWFs
OgotICAgICAgICByZXR1cm4gIiE9IjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U2hpZnQ6Ci0gICAg
ICAgIHJldHVybiAiPj4iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0OgotICAgICAgICByZXR1
cm4gIjw8IjsKLSAgICBjYXNlIFR5cGU6OlBsdXM6Ci0gICAgICAgIHJldHVybiAiKyI7Ci0gICAg
Y2FzZSBUeXBlOjpNaW51czoKLSAgICAgICAgcmV0dXJuICItIjsKLSAgICBjYXNlIFR5cGU6OkRp
dmlkZToKLSAgICAgICAgcmV0dXJuICIvIjsKLSAgICBjYXNlIFR5cGU6Ok1vZDoKLSAgICAgICAg
cmV0dXJuICIlIjsKLSAgICBjYXNlIFR5cGU6OlRpbGRlOgotICAgICAgICByZXR1cm4gIn4iOwot
ICAgIGNhc2UgVHlwZTo6RXhjbGFtYXRpb25Qb2ludDoKLSAgICAgICAgcmV0dXJuICIhIjsKLSAg
ICBjYXNlIFR5cGU6OkF0OgotICAgICAgICByZXR1cm4gIkAiOwotICAgIGNhc2UgVHlwZTo6RW5k
T2ZGaWxlOgotICAgICAgICByZXR1cm4gIkVPRiI7Ci0gICAgY2FzZSBUeXBlOjpJbnZhbGlkOgot
ICAgICAgICByZXR1cm4gIkxFWElOR19FUlJPUiI7Ci0gICAgfQotfQotCi1zdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzVmFsaWRJZGVudGlmaWVyU3RhcnQoVUNoYXIgdGhlQ2hhcikKLXsKLSAg
ICByZXR1cm4gKHRoZUNoYXIgPj0gJ2EnICYmIHRoZUNoYXIgPD0gJ3onKQotICAgICAgICB8fCAo
dGhlQ2hhciA+PSAnQScgJiYgdGhlQ2hhciA8PSAnWicpCi0gICAgICAgIHx8ICh0aGVDaGFyID09
ICdfJyk7Ci19Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZE5vblN0YXJ0aW5n
SWRlbnRpZmllckNoYXIoVUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1cm4gKHRoZUNoYXIgPj0g
J2EnICYmIHRoZUNoYXIgPD0gJ3onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnQScgJiYgdGhl
Q2hhciA8PSAnWicpCi0gICAgICAgIHx8ICh0aGVDaGFyID49ICcwJyAmJiB0aGVDaGFyIDw9ICc5
JykKLSAgICAgICAgfHwgKHRoZUNoYXIgPT0gJ18nKTsKLX0KLQotc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0hleGFkZWNpbWFsQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICBy
ZXR1cm4gKGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykKLSAgICAgICAgfHwg
KGNoYXJhY3RlciA+PSAnYScgJiYgY2hhcmFjdGVyIDw9ICdmJykKLSAgICAgICAgfHwgKGNoYXJh
Y3RlciA+PSAnQScgJiYgY2hhcmFjdGVyIDw9ICdGJyk7Ci19Ci0KLXN0YXRpYyBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNEaWdpdChVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiB0aGVDaGFyID49
ICcwJyAmJiB0aGVDaGFyIDw9ICc5JzsKLX0KLQotYXV0byBMZXhlcjo6Y29uc3VtZVRva2VuRnJv
bVN0cmVhbSgpIC0+IFRva2VuCi17Ci0gICAgVUNoYXIgY3VycmVudCA9IDA7Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gbV9vZmZzZXQ7Ci0KLSAgICBhdXRvIHBlZWsgPSBbJl0gKCkgLT4gVUNoYXIg
ewotICAgICAgICBpZiAob2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nVmlld1tvZmZzZXRdOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
OwotCi0gICAgYXV0byBzaGlmdCA9IFsmXSB7Ci0gICAgICAgIGlmIChvZmZzZXQgPCBtX3N0cmlu
Z1ZpZXcubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBtX3N0cmluZ1ZpZXdbb2Zm
c2V0XTsKLSAgICAgICAgICAgICsrb2Zmc2V0OwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7
Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudCA9IDA7Ci0gICAgICAgIHJldHVybiBjdXJyZW50
OwotICAgIH07Ci0KLSAgICBhdXRvIGNvbnN1bWUgPSBbJl0gKFVDaGFyIHRoZUNoYXIpIHsKLSAg
ICAgICAgaWYgKHBlZWsoKSA9PSB0aGVDaGFyKSB7Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH07Ci0KLSAgICBhdXRvIG5leHRJc0lkZW50aWZpZXIgPSBbJl0gewotICAgICAgICByZXR1
cm4gaXNWYWxpZE5vblN0YXJ0aW5nSWRlbnRpZmllckNoYXIocGVlaygpKTsKLSAgICB9OwotCi0g
ICAgYXV0byB0b2tlbiA9IFsmXSAoVG9rZW46OlR5cGUgdHlwZSkgLT4gVG9rZW4gewotICAgICAg
ICBhdXRvIG9sZE9mZnNldCA9IG1fb2Zmc2V0OwotICAgICAgICBtX29mZnNldCA9IG9mZnNldDsK
LSAgICAgICAgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOwotICAgICAgICByZXR1cm4geyB7
IG9sZE9mZnNldCwgb2Zmc2V0LCBtX25hbWVTcGFjZSB9LCB0eXBlIH07Ci0gICAgfTsKLQotICAg
IHN3aXRjaCAoc2hpZnQoKSkgewotICAgIGNhc2UgJ0EnOgotICAgIGNhc2UgJ0InOgotICAgIGNh
c2UgJ0MnOgotICAgIGNhc2UgJ0QnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ0YnOgotICAg
IGNhc2UgJ0cnOgotICAgIGNhc2UgJ0gnOgotICAgIGNhc2UgJ0knOgotICAgIGNhc2UgJ0onOgot
ICAgIGNhc2UgJ0snOgotICAgIGNhc2UgJ0wnOgotICAgIGNhc2UgJ00nOgotICAgIGNhc2UgJ04n
OgotICAgIGNhc2UgJ08nOgotICAgIGNhc2UgJ1EnOgotICAgIGNhc2UgJ1InOgotICAgIGNhc2Ug
J1QnOgotICAgIGNhc2UgJ1UnOgotICAgIGNhc2UgJ1YnOgotICAgIGNhc2UgJ1cnOgotICAgIGNh
c2UgJ1gnOgotICAgIGNhc2UgJ1knOgotICAgIGNhc2UgJ1onOgotICAgIGNhc2UgJ2cnOgotICAg
IGNhc2UgJ2gnOgotICAgIGNhc2UgJ2onOgotICAgIGNhc2UgJ2snOgotICAgIGNhc2UgJ2wnOgot
ICAgIGNhc2UgJ20nOgotICAgIGNhc2UgJ3EnOgotICAgIGNhc2UgJ3gnOgotICAgIGNhc2UgJ3kn
OgotICAgIGNhc2UgJ3onOgotcGFyc2VJZGVudGlmaWVyOgotICAgICAgICB3aGlsZSAoaXNWYWxp
ZE5vblN0YXJ0aW5nSWRlbnRpZmllckNoYXIocGVlaygpKSkKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0KLSAgICBj
YXNlICdzJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0g
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotCi0gICAgICAgIGNhc2UgJ3cnOgotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6U3dpdGNoKTsKLQotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAg
Y2FzZSAncic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OlN0cnVjdCk7Ci0gICAgICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2kn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3RhdGljKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnYSc6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Mn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3BhY2UpOwotICAgICAgICAgICAgY2FzZSAnZSc6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Mn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgneicpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQpOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICdTJzoKLSAgICAgICAgaWYgKCFj
b25zdW1lKCdWJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
aWYgKCFjb25zdW1lKCdfJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQot
ICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLQotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgJ0knOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgc3dpdGNo
IChwZWVrKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBJRCk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdyb3Vw
SW5kZXgpOwotCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
YXNlICdUJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdJJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0KLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdlJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEZXB0aCk7Ci0gICAg
ICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnVCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQpOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSAnQyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlKTsKLSAgICAgICAgY2Fz
ZSAnVCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdh
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWVGFyZ2V0KTsKLSAg
ICAgICAgY2FzZSAnUyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpTVlNhbXBsZUluZGV4KTsKLSAgICAgICAgY2FzZSAnUCc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlBvc2l0
aW9uKTsKLSAgICAgICAgY2FzZSAnVic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlZlcnRleElEKTsKLSAgICAgICAgY2Fz
ZSAnSSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdGJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ0YnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVklzRnJvbnRGYWNlKTsKLSAgICAg
ICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdl
JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdDJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd2JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlNWSW5uZXJDb3ZlcmFnZSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQpOwotICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNl
ICd0JzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAncic6Ci0gICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRydWUpOwotICAg
ICAgICBjYXNlICd5JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VHlwZWRl
Zik7Ci0gICAgICAgIGNhc2UgJ2gnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAg
ICBpZiAoIW5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OlRocmVhZCk7Ci0KLSAgICAgICAgICAgIGlmIChwZWVrKCkgIT0gJ2cnKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSAnZycpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaHJlYWRn
cm91cCk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICdlJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkp
IHsKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkVudW0pOwotICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RWxzZSk7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAg
Y2FzZSAnbyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnYScpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
dCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLQotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICcmJzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz4nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBpZiAoY29uc3Vt
ZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JO
YW1lKTsKLQotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBpZiAoY29uc3VtZSgnPCcpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0g
ICAgICAgIGNhc2UgJysnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGNvbnN1
bWUoJysnKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JO
YW1lKTsKLQotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBjb25zdW1lKCctJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnfCc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwot
Ci0gICAgICAgIGNhc2UgJz0nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6SW52YWxpZCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJh
dG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnKic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAg
ICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICclJzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnISc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwot
Ci0gICAgICAgIGNhc2UgJ34nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICde
JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVy
YXRvcik7Ci0KLSAgICBjYXNlICdpJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OklmKTsKLQotICAgIGNhc2UgJ2MnOgotICAgICAgICBzd2l0Y2gg
KHBlZWsoKSkgewotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q2FzZSk7Ci0KLSAgICAgICAgY2FzZSAnZSc6Ci0gICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsK
LSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dp
dGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ20nOgotICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29tcHV0
ZSk7Ci0gICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAndCc6
Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpDb250aW51ZSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNvbnN0KTsKLQotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29uc3RhbnQpOwotCi0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
fQotCi0gICAgY2FzZSAnYic6Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnYScp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgnaycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpCcmVhayk7Ci0KLSAgICBjYXNlICdkJzoK
LSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6RG8pOwotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnZic6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2En
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIH0KLQotCi0gICAgY2FzZSAnZic6Ci0gICAgICAgIHN3aXRjaCAocGVlaygp
KSB7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6Rm9yKTsKLSAgICAgICAgY2FzZSAncic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6RnJhZ21lbnQpOwotICAgICAgICBjYXNlICdhJzoKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAgICAgICAgc3dpdGNoIChwZWVr
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RmFsbHRo
cm91Z2gpOwotCi0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZhbHNlKTsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkRlZmF1bHQpOwotICAgICAgICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdj
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRldmljZSk7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgfQotCi0gICAgY2FzZSAndyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnaScpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
bCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpXaGlsZSk7Ci0KLSAgICBjYXNlICdy
JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAndCc6Ci0g
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6UmV0dXJuKTsKLSAgICAgICAgY2FzZSAnZyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OlJlZ2lzdGVyKTsKLSAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZXN0cmlj
dGVkKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICB9Ci0KLSAgICBjYXNlICduJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsK
LSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
bmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOYXRpdmUpOwotICAgICAg
ICBjYXNlICd1JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBl
ZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOdWxsKTsKLSAgICAgICAgICAgIGNh
c2UgJ20nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TnVtVGhyZWFkcyk7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnbCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCduJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0K
LSAgICBjYXNlICd2JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdl
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25z
dW1lKCd4JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlZlcnRleCk7Ci0KLSAgICBjYXNlICdQ
JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdTJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdaJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdFJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlBTaXplKTsKLQotICAgIGNhc2UgJ3UnOgotICAgICAgICBpZiAoIWNv
bnN1bWUoJ24nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6UXVhbGlmaWVyKTsKLQotICAgIGNhc2UgJ3AnOgotICAgICAgICBpZiAoIWNvbnN1
bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6UHJvdG9jb2wpOwotCi0gICAgY2FzZSAnXyc6Ci0gICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVbmRlcnNjb3JlKTsKLQotICAgIGNhc2UgJ2En
OgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0Jykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkF0
dHJpYnV0ZSk7Ci0gICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBdXRvKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICc+JzoKLSAg
ICAgICAgaWYgKGNvbnN1bWUoJz4nKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVh
bHMpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0KTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbyk7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduKTsKLSAgICBjYXNlICc8JzoKLSAg
ICAgICAgaWYgKGNvbnN1bWUoJzwnKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFs
cyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlmdCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6TGVzc1RoYW5PckVxdWFsVG8pOwotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbik7Ci0KLSAgICBjYXNlICcrJzoKLSAgICAgICAg
aWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
UGx1c0VxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCcrJykpCi0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBsdXNQbHVzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpQbHVzKTsKLQotICAgIGNhc2UgJy0nOgotICAgICAgICBpZiAoY29uc3VtZSgn
PScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51c0VxdWFscyk7
Ci0gICAgICAgIGlmIChjb25zdW1lKCctJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6Ok1pbnVzTWludXMpOwotICAgICAgICBpZiAoY29uc3VtZSgnPicpKQotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBcnJvdyk7Ci0gICAgICAgIGlmIChpc0Rp
Z2l0KHBlZWsoKSkpIHsKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBnb3RvIHBh
cnNlTnVtYmVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCcuJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlRmxvYXRBZnRlckRvdDsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpNaW51cyk7Ci0KLSAgICBjYXNlICcqJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0n
KSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMpOwot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0YXIpOwotCi0gICAgY2FzZSAnLyc6
Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OkRpdmlkZUVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6RGl2aWRlKTsKLQotICAgIGNhc2UgJyUnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2RFcXVhbHMpOwotICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1vZCk7Ci0KLSAgICBjYXNlICdeJzoKLSAgICAg
ICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6WG9yRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpYb3IpOwot
Ci0gICAgY2FzZSAnJic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZEVxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1l
KCcmJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZEFuZCk7Ci0g
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QW5kKTsKLQotICAgIGNhc2UgJ3wnOgot
ICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpPckVxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCd8JykpCi0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9yT3IpOwotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok9yKTsKLQotICAgIGNhc2UgJ1snOgotICAgICAgICBpZiAoY29uc3VtZSgn
XScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0
UGFpcik7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNr
ZXQpOwotCi0gICAgY2FzZSAnPSc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFyaXNvbik7Ci0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbik7Ci0KLSAgICBjYXNlICchJzoK
LSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6Tm90RXF1YWwpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkV4
Y2xhbWF0aW9uUG9pbnQpOwotCi0gICAgY2FzZSAnOyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6U2VtaWNvbG9uKTsKLQotICAgIGNhc2UgJ3snOgotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OkxlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgY2FzZSAnfSc6Ci0g
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQpOwotCi0g
ICAgY2FzZSAnOic6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29sb24pOwot
Ci0gICAgY2FzZSAnLCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29tbWEp
OwotCi0gICAgY2FzZSAnKCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVm
dFBhcmVudGhlc2lzKTsKLQotICAgIGNhc2UgJyknOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgY2FzZSAnXSc6Ci0gICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KTsKLQotICAgIGNhc2Ug
Jy4nOgotICAgICAgICBpZiAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUZsb2F0QWZ0ZXJEb3Q7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RnVsbFN0
b3ApOwotCi0gICAgY2FzZSAnPyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
UXVlc3Rpb25NYXJrKTsKLQotICAgIGNhc2UgJ34nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlRpbGRlKTsKLQotICAgIGNhc2UgJ0AnOgotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OkF0KTsKLQotICAgIGNhc2UgJzAnOgotICAgIGNhc2UgJzEnOgotICAgIGNh
c2UgJzInOgotICAgIGNhc2UgJzMnOgotICAgIGNhc2UgJzQnOgotICAgIGNhc2UgJzUnOgotICAg
IGNhc2UgJzYnOgotICAgIGNhc2UgJzcnOgotICAgIGNhc2UgJzgnOgotICAgIGNhc2UgJzknOiB7
Ci1wYXJzZU51bWJlcjoKLSAgICAgICAgaWYgKGN1cnJlbnQgPT0gJzAnICYmIGNvbnN1bWUoJ3gn
KSkgewotICAgICAgICAgICAgd2hpbGUgKGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIocGVlaygpKSkK
LSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJ3UnKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsK
LSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB3aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgc2hp
ZnQoKTsKLQotICAgICAgICBpZiAoY29uc3VtZSgnLicpKSB7Ci1wYXJzZUZsb2F0QWZ0ZXJEb3Q6
Ci0gICAgICAgICAgICB3aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBjb25zdW1lKCdmJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
Y29uc3VtZSgnZicpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGbG9h
dExpdGVyYWwpOwotCi0gICAgICAgIGlmIChjb25zdW1lKCd1JykpCi0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLQotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkludExpdGVyYWwpOwotICAgIH0KLQotICAgIGRlZmF1bHQ6IAotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobV9vZmZzZXQgPT0gbV9zdHJpbmdWaWV3Lmxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVuZE9mRmlsZSk7Ci0g
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnZhbGlkKTsKLX0KLQotCi0vLyBXZSBjYW4g
dGFrZSBhZHZhbnRhZ2Ugb2YgdHdvIHByb3BlcnRpZXMgb2YgVW5pY29kZToKLS8vIDEuIFRoZSBj
b25zaXR1dGVudCBVVEYtMTYgY29kZSB1bml0cyBmb3IgYWxsIG5vbi1CTVAgY29kZSBwb2ludHMg
YXJlIHN1cnJvZ2F0ZXMsCi0vLyB3aGljaCBtZWFucyB3ZSdsbCBuZXZlciBzZWUgYSBmYWxzZSBt
YXRjaC4gSWYgd2Ugc2VlIGEgQk1QIGNvZGUgdW5pdCwgd2UKLS8vIHJlYWxseSBoYXZlIGEgQk1Q
IGNvZGUgcG9pbnQuCi0vLyAyLiBFdmVyeXRoaW5nIHdlJ3JlIGxvb2tpbmcgZm9yIGlzIGluIEJN
UAotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGNvZGVVbml0KQotewot
ICAgIHN3aXRjaCAoY29kZVVuaXQpIHsKLSAgICBjYXNlICcgJzoKLSAgICBjYXNlICdcdCc6Ci0g
ICAgY2FzZSAnXHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIGlzTmV3bGluZShVQ2hhciBjb2RlVW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNvZGVVbml0
KSB7Ci0gICAgY2FzZSAnXHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYXV0byBM
ZXhlcjo6bGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3RyaW5nVmlldyYgc3Ry
aW5nVmlldywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0KSAtPiBMaW5lQW5kQ29sdW1uCi17Ci0gICAg
Ly8gQ291bnRpbmcgZnJvbSAxIHRvIG1hdGNoIG1vc3QgdGV4dCBlZGl0b3JzLgotICAgIHVuc2ln
bmVkIGxpbmVOdW1iZXIgPSAxOwotICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IDE7Ci0gICAg
Zm9yICh1bnNpZ25lZCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzdGQ6Om1pbihzdHJpbmdWaWV3Lmxl
bmd0aCgpLCB0YXJnZXRPZmZzZXQpOyArK29mZnNldCkgewotICAgICAgICArK2NvbHVtbk51bWJl
cjsKLSAgICAgICAgaWYgKGlzTmV3bGluZShzdHJpbmdWaWV3W29mZnNldF0pKSB7Ci0gICAgICAg
ICAgICArK2xpbmVOdW1iZXI7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSAxOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiB7IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciB9OwotfQot
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFT
VDo6TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJp
bmcqIHNvdXJjZTIpCi17Ci0gICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKLSAgICBjYXNlIEFTVDo6
TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMToKLSAgICAgICAgcmV0dXJuIFN0
cmluZ1ZpZXcoc291cmNlMSk7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMjoK
LSAgICAgICAgQVNTRVJUKHNvdXJjZTIpOwotICAgICAgICByZXR1cm4gU3RyaW5nVmlldygqc291
cmNlMik7Ci0gICAgfQotfQotCi1TdHJpbmcgTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yIGVycm9y
LCBjb25zdCBTdHJpbmcmIHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMikKLXsKLSAgICBp
ZiAoYXV0byBjb2RlTG9jYXRpb24gPSBlcnJvci5jb2RlTG9jYXRpb24oKSkgewotICAgICAgICBp
ZiAoYXV0byBzb3VyY2UgPSBzb3VyY2VGcm9tTmFtZVNwYWNlKGNvZGVMb2NhdGlvbi5uYW1lU3Bh
Y2UoKSwgc291cmNlMSwgc291cmNlMikpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZUFuZENvbHVt
biA9IGxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KCpzb3VyY2UsIGVycm9yLmNvZGVMb2Nh
dGlvbigpLnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobGlu
ZUFuZENvbHVtbi5saW5lLCAnOicsIGxpbmVBbmRDb2x1bW4uY29sdW1uLCAiOiAiLCBlcnJvci5t
ZXNzYWdlKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlcnJvci5tZXNzYWdlKCk7
Ci19Ci0KLXZvaWQgTGV4ZXI6OnNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKQotewotICAgIHdo
aWxlIChtX29mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAgICBpZiAoaXNX
aGl0ZXNwYWNlKG1fc3RyaW5nVmlld1ttX29mZnNldF0pKQotICAgICAgICAgICAgKyttX29mZnNl
dDsKLSAgICAgICAgZWxzZSBpZiAobV9zdHJpbmdWaWV3W21fb2Zmc2V0XSA9PSAnLycgJiYgbV9v
ZmZzZXQgKyAxIDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAobV9z
dHJpbmdWaWV3W21fb2Zmc2V0ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGlu
ZSBjb21tZW50Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgXHJcbiB0aGlzIG1ha2VzIHRoZSBjb21tZW50
IGVuZCBvbiB0aGUgXHIuIEl0IGlzIGZpbmUsIGFzIHRoZSBcbiBhZnRlciB0aGF0IGlzIHNpbXBs
ZSB3aGl0ZXNwYWNlLgotICAgICAgICAgICAgICAgIGZvciAoIDsgbV9vZmZzZXQgPCBtX3N0cmlu
Z1ZpZXcubGVuZ3RoKCkgJiYgIWlzTmV3bGluZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdKTsgKytt
X29mZnNldCkgeyB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNl
dCArIDFdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIExvbmcgY29tbWVudAotICAgICAg
ICAgICAgICAgIGZvciAoIDsgbV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkgOyArK21f
b2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0cmluZ1ZpZXdbbV9vZmZzZXRd
ID09ICcqJyAmJiBtX29mZnNldCArIDEgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkgJiYgbV9zdHJp
bmdWaWV3W21fb2Zmc2V0ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X29mZnNldCArPSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2Y4NDMxNzFkMjE4OTI0NjQ0NmVhMGI1ZDMxMTQ3M2Q2NTA4YmFiNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgTGV4ZXI7Ci0KLXN0
cnVjdCBUb2tlbiB7Ci0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbjsKLSAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgSW50TGl0ZXJhbCwKLSAgICAgICAgVWludExp
dGVyYWwsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgU3RydWN0LAotICAgICAgICBU
eXBlZGVmLAotICAgICAgICBFbnVtLAotICAgICAgICBPcGVyYXRvciwKLSAgICAgICAgSWYsCi0g
ICAgICAgIEVsc2UsCi0gICAgICAgIENvbnRpbnVlLAotICAgICAgICBCcmVhaywKLSAgICAgICAg
U3dpdGNoLAotICAgICAgICBDYXNlLAotICAgICAgICBEZWZhdWx0LAotICAgICAgICBGYWxsdGhy
b3VnaCwKLSAgICAgICAgRm9yLAotICAgICAgICBXaGlsZSwKLSAgICAgICAgRG8sCi0gICAgICAg
IFJldHVybiwKLSAgICAgICAgTnVsbCwKLSAgICAgICAgVHJ1ZSwKLSAgICAgICAgRmFsc2UsCi0g
ICAgICAgIENvbnN0YW50LAotICAgICAgICBEZXZpY2UsCi0gICAgICAgIFRocmVhZGdyb3VwLAot
ICAgICAgICBUaHJlYWQsCi0gICAgICAgIFNwYWNlLAotICAgICAgICBWZXJ0ZXgsCi0gICAgICAg
IEZyYWdtZW50LAotICAgICAgICBDb21wdXRlLAotICAgICAgICBOdW1UaHJlYWRzLAotICAgICAg
ICBTVkluc3RhbmNlSUQsCi0gICAgICAgIFNWVmVydGV4SUQsCi0gICAgICAgIFBTaXplLAotICAg
ICAgICBTVlBvc2l0aW9uLAotICAgICAgICBTVklzRnJvbnRGYWNlLAotICAgICAgICBTVlNhbXBs
ZUluZGV4LAotICAgICAgICBTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFNWVGFyZ2V0LAotICAg
ICAgICBTVkRlcHRoLAotICAgICAgICBTVkNvdmVyYWdlLAotICAgICAgICBTVkRpc3BhdGNoVGhy
ZWFkSUQsCi0gICAgICAgIFNWR3JvdXBJRCwKLSAgICAgICAgU1ZHcm91cEluZGV4LAotICAgICAg
ICBTVkdyb3VwVGhyZWFkSUQsCi0gICAgICAgIEF0dHJpYnV0ZSwKLSAgICAgICAgUmVnaXN0ZXIs
Ci0gICAgICAgIFNwZWNpYWxpemVkLAotICAgICAgICBOYXRpdmUsCi0gICAgICAgIFJlc3RyaWN0
ZWQsCi0gICAgICAgIFVuZGVyc2NvcmUsCi0gICAgICAgIEF1dG8sCi0gICAgICAgIFByb3RvY29s
LAotICAgICAgICBDb25zdCwKLSAgICAgICAgU3RhdGljLAotICAgICAgICBRdWFsaWZpZXIsCi0g
ICAgICAgIElkZW50aWZpZXIsCi0gICAgICAgIE9wZXJhdG9yTmFtZSwKLSAgICAgICAgRXF1YWxz
U2lnbiwKLSAgICAgICAgU2VtaWNvbG9uLAotICAgICAgICBMZWZ0Q3VybHlCcmFja2V0LAotICAg
ICAgICBSaWdodEN1cmx5QnJhY2tldCwKLSAgICAgICAgQ29sb24sCi0gICAgICAgIENvbW1hLAot
ICAgICAgICBMZWZ0UGFyZW50aGVzaXMsCi0gICAgICAgIFJpZ2h0UGFyZW50aGVzaXMsCi0gICAg
ICAgIFNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBMZWZ0U3F1YXJlQnJhY2tldCwKLSAgICAg
ICAgUmlnaHRTcXVhcmVCcmFja2V0LAotICAgICAgICBTdGFyLAotICAgICAgICBMZXNzVGhhblNp
Z24sCi0gICAgICAgIEdyZWF0ZXJUaGFuU2lnbiwKLSAgICAgICAgRnVsbFN0b3AsCi0gICAgICAg
IFBsdXNFcXVhbHMsCi0gICAgICAgIE1pbnVzRXF1YWxzLAotICAgICAgICBUaW1lc0VxdWFscywK
LSAgICAgICAgRGl2aWRlRXF1YWxzLAotICAgICAgICBNb2RFcXVhbHMsCi0gICAgICAgIFhvckVx
dWFscywKLSAgICAgICAgQW5kRXF1YWxzLAotICAgICAgICBPckVxdWFscywKLSAgICAgICAgUmln
aHRTaGlmdEVxdWFscywKLSAgICAgICAgTGVmdFNoaWZ0RXF1YWxzLAotICAgICAgICBQbHVzUGx1
cywKLSAgICAgICAgTWludXNNaW51cywKLSAgICAgICAgQXJyb3csCi0gICAgICAgIFF1ZXN0aW9u
TWFyaywKLSAgICAgICAgT3JPciwKLSAgICAgICAgQW5kQW5kLAotICAgICAgICBPciwKLSAgICAg
ICAgWG9yLAotICAgICAgICBBbmQsCi0gICAgICAgIExlc3NUaGFuT3JFcXVhbFRvLAotICAgICAg
ICBHcmVhdGVyVGhhbk9yRXF1YWxUbywKLSAgICAgICAgRXF1YWxDb21wYXJpc29uLAotICAgICAg
ICBOb3RFcXVhbCwKLSAgICAgICAgUmlnaHRTaGlmdCwKLSAgICAgICAgTGVmdFNoaWZ0LAotICAg
ICAgICBQbHVzLAotICAgICAgICBNaW51cywKLSAgICAgICAgRGl2aWRlLAotICAgICAgICBNb2Qs
Ci0gICAgICAgIFRpbGRlLAotICAgICAgICBFeGNsYW1hdGlvblBvaW50LAotICAgICAgICBBdCwK
LSAgICAgICAgRW5kT2ZGaWxlLAotICAgICAgICBJbnZhbGlkCi0gICAgfSB0eXBlIHtUeXBlOjpJ
bnZhbGlkfTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0eXBlTmFtZShUeXBlKTsKLQotICAg
IGlubGluZSBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcoY29uc3QgTGV4ZXImKSBjb25zdDsKLQotICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2Rl
TG9jYXRpb24uc3RhcnRPZmZzZXQoKTsKLSAgICB9Ci19OwotCi1pbmxpbmUgQ29kZUxvY2F0aW9u
OjpDb2RlTG9jYXRpb24oY29uc3QgVG9rZW4mIHRva2VuKQotICAgIDogQ29kZUxvY2F0aW9uKHRv
a2VuLmNvZGVMb2NhdGlvbikKLXsKLX0KLQotY2xhc3MgTGV4ZXIgewotcHVibGljOgotICAgIExl
eGVyKCkgPSBkZWZhdWx0OwotCi0gICAgTGV4ZXIoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBBU1Q6
Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi0gICAgICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcp
Ci0gICAgICAgICwgbV9uYW1lU3BhY2UobmFtZVNwYWNlKQotICAgIHsKLSAgICAgICAgc2tpcFdo
aXRlc3BhY2VBbmRDb21tZW50cygpOwotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBjb25zdW1l
VG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsxXSA9IGNvbnN1bWVUb2tl
bkZyb21TdHJlYW0oKTsKLSAgICB9Ci0KLSAgICBMZXhlcihjb25zdCBMZXhlciYpID0gZGVsZXRl
OwotICAgIExleGVyKExleGVyJiYpID0gZGVmYXVsdDsKLQotICAgIExleGVyJiBvcGVyYXRvcj0o
Y29uc3QgTGV4ZXImKSA9IGRlbGV0ZTsKLSAgICBMZXhlciYgb3BlcmF0b3I9KExleGVyJiYpID0g
ZGVmYXVsdDsKLQotCi0gICAgVG9rZW4gY29uc3VtZVRva2VuKCkKLSAgICB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XTsKLSAgICAgICAgbV9y
aW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XSA9IGNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKTsK
LSAgICAgICAgbV9yaW5nQnVmZmVySW5kZXggPSAobV9yaW5nQnVmZmVySW5kZXggKyAxKSAlIDI7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgVG9rZW4gcGVlaygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XTsK
LSAgICB9Ci0KLSAgICBUb2tlbiBwZWVrRnVydGhlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9yaW5nQnVmZmVyWyhtX3JpbmdCdWZmZXJJbmRleCArIDEpICUgMl07Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGlzCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM1NwotICAgIHN0cnVjdCBTdGF0ZSB7
Ci0gICAgICAgIFRva2VuIHJpbmdCdWZmZXJbMl07Ci0gICAgICAgIHVuc2lnbmVkIHJpbmdCdWZm
ZXJJbmRleDsKLSAgICAgICAgdW5zaWduZWQgb2Zmc2V0OwotICAgIH07Ci0KLSAgICBTdGF0ZSBz
dGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgc3RhdGUu
cmluZ0J1ZmZlclswXSA9IG1fcmluZ0J1ZmZlclswXTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZl
clsxXSA9IG1fcmluZ0J1ZmZlclsxXTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZlckluZGV4ID0g
bV9yaW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIHN0YXRlLm9mZnNldCA9IG1fb2Zmc2V0OwotICAg
ICAgICByZXR1cm4gc3RhdGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdGF0ZShjb25zdCBTdGF0
ZSYgc3RhdGUpCi0gICAgewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBzdGF0ZS5yaW5nQnVm
ZmVyWzBdOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBzdGF0ZS5yaW5nQnVmZmVyWzFdOwot
ICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9IHN0YXRlLnJpbmdCdWZmZXJJbmRleDsKLSAgICAg
ICAgbV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQ7Ci0KLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0YXRl
KFN0YXRlJiYgc3RhdGUpCi0gICAgewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBXVEZNb3Zl
KHN0YXRlLnJpbmdCdWZmZXJbMF0pOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBXVEZNb3Zl
KHN0YXRlLnJpbmdCdWZmZXJbMV0pOwotICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9IFdURk1v
dmUoc3RhdGUucmluZ0J1ZmZlckluZGV4KTsKLSAgICAgICAgbV9vZmZzZXQgPSBXVEZNb3ZlKHN0
YXRlLm9mZnNldCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Z1bGx5Q29uc3VtZWQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHBlZWsoKS50eXBlID09IFRva2VuOjpUeXBlOjpFbmRPZkZp
bGU7Ci0gICAgfQotCi0gICAgU3RyaW5nIGVycm9yU3RyaW5nKGNvbnN0IFRva2VuJiB0b2tlbiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IlBhcnNlIGVycm9yIGF0IGxpbmUgIiwgbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQobV9z
dHJpbmdWaWV3LCB0b2tlbi5zdGFydE9mZnNldCgpKS5saW5lLCAiOiAiLCBtZXNzYWdlKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgU3RyaW5nIGVycm9yU3RyaW5nKEVycm9yLCBjb25zdCBTdHJpbmcm
IHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMiA9IG51bGxwdHIpOwotCi0gICAgQVNUOjpO
YW1lU3BhY2UgbmFtZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0KLQotcHJp
dmF0ZToKLSAgICBmcmllbmQgc3RydWN0IFRva2VuOwotICAgIFRva2VuIGNvbnN1bWVUb2tlbkZy
b21TdHJlYW0oKTsKLQotICAgIHZvaWQgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOwotCi0g
ICAgc3RydWN0IExpbmVBbmRDb2x1bW4gewotICAgICAgICB1bnNpZ25lZCBsaW5lOwotICAgICAg
ICB1bnNpZ25lZCBjb2x1bW47Ci0gICAgfTsKLSAgICBzdGF0aWMgTGluZUFuZENvbHVtbiBsaW5l
QW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldChjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgb2Zm
c2V0KTsKLQotICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwotICAgIFRva2VuIG1fcmluZ0J1
ZmZlclsyXTsKLSAgICB1bnNpZ25lZCBtX3JpbmdCdWZmZXJJbmRleCB7IDAgfTsKLSAgICB1bnNp
Z25lZCBtX29mZnNldCB7IDAgfTsKLSAgICBBU1Q6Ok5hbWVTcGFjZSBtX25hbWVTcGFjZSB7IEFT
VDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLVN0cmluZ1ZpZXcgVG9rZW46
OnN0cmluZ1ZpZXcoY29uc3QgTGV4ZXImIGxleGVyKSBjb25zdAotewotICAgIHJldHVybiBsZXhl
ci5tX3N0cmluZ1ZpZXcuc3Vic3RyaW5nKGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpLCBjb2Rl
TG9jYXRpb24uZW5kT2Zmc2V0KCkgLSBjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlNzFjZjU2MjAzNGQ1NzQ3ZWQ5YWUzMzQw
NGYwMGMxZDE2N2Y4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEludGVnZXJM
aXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi1zdGF0aWMgQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24qIGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihBU1Q6OlJlc29sdmFibGVU
eXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICBpZiAoIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4o
cmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPihy
ZXNvbHZhYmxlVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFpczxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotfQotCi1jbGFzcyBMaXRlcmFs
VHlwZUNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci1wcml2YXRlOgotICAgIHZv
aWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZl
VHlwZURlY2xhcmF0aW9uKGZsb2F0TGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0aXZl
VHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+
Y2FuUmVwcmVzZW50RmxvYXQoKShmbG9hdExpdGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJiBpbnRlZ2VyTGl0ZXJhbFR5
cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24oaW50ZWdlckxpdGVyYWxUeXBlKTsKLSAgICAgICAg
QVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBl
RGVjbGFyYXRpb24tPmNhblJlcHJlc2VudEludGVnZXIoKShpbnRlZ2VyTGl0ZXJhbFR5cGUudmFs
dWUoKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBnZXROYXRpdmVUeXBlRGVjbGFyYXRp
b24odW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+Y2Fu
UmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKCkodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUudmFs
dWUoKSkpOwotICAgIH0KLX07Ci0jZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKLQotdm9pZCBjaGVj
a0xpdGVyYWxUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgTGl0ZXJhbFR5cGVDaGVja2VyKCkuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjFjYWJmODhhODkwYjM3MDYzZThhMjAwYTUwZDgxZDJlNjQ1NzkwZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMoUHJvZ3Jh
bSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29u
dGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMGRhODRiOGY0MTIwMWFm
ZWI2MDhkNDE0MTA2NWRkZTE5NGQ0ZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xO
YXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotTmFtZUNvbnRleHQ6Ok5hbWVDb250ZXh0KE5hbWVDb250ZXh0KiBwYXJlbnQp
Ci0gICAgOiBtX3BhcmVudChwYXJlbnQpCi17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBO
YW1lQ29udGV4dDo6YWRkKEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewot
ICAgIGlmIChhdXRvIGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHModHlwZURlZmluaXRpb24ubmFt
ZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFt
ZSBpbiBwcm9ncmFtIiwgKmV4aXN0aW5nKSk7Ci0gICAgdHlwZURlZmluaXRpb24uc2V0TmFtZVNw
YWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tp
bmRleF0uYWRkKHR5cGVEZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHR5cGVEZWZpbml0aW9uKTsK
LSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6
OmFkZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0g
ICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BMZXZlbEV4aXN0cyhzdHJ1Y3R1cmVEZWZpbml0aW9u
Lm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRl
IG5hbWUgaW4gcHJvZ3JhbS4iLCAqZXhpc3RpbmcpKTsKLSAgICBzdHJ1Y3R1cmVEZWZpbml0aW9u
LnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXggPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fdHlwZXNbaW5kZXhdLmFkZChzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQo
cmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHN0
cnVjdHVyZURlZmluaXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQs
IEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24pCi17Ci0gICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BMZXZlbEV4
aXN0cyhlbnVtZXJhdGlvbkRlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsICpleGlzdGluZykp
OwotICAgIGVudW1lcmF0aW9uRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNw
YWNlKTsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoZW51bWVyYXRp
b25EZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpO
YW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQo
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRv
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
aWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBw
cm9ncmFtLiIsIHR5cGUtPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgZnVuY3Rpb25EZWZpbml0aW9u
LnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9m
dW5jdGlvbnNbaW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPigpKTsKLSAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbkRlZmluaXRpb24pOwotICAg
IHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRk
KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bikKLXsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24oKSkpOwot
ICAgIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVT
cGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX2Z1bmN0aW9uc1tpbmRleF0uYWRkKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPigpKTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmFwcGVuZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICByZXR1cm4geyB9Owot
fQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGF1dG8gaW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoYXV0
byogZnVuY3Rpb24gPSBzZWFyY2hGdW5jdGlvbnMobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUg
aW4gcHJvZ3JhbS4iLCBmdW5jdGlvbi0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwot
ICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6
YWRkKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAg
ICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgaWYgKGF1dG8qIGRlY2xhcmF0aW9uID0gbG9jYWxFeGlzdHModmFyaWFibGVE
ZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
IkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgZGVjbGFyYXRpb24tPmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3ZhcmlhYmxlcy5hZGQoU3RyaW5nKHZhcmlhYmxlRGVj
bGFyYXRpb24ubmFtZSgpKSwgJnZhcmlhYmxlRGVjbGFyYXRpb24pOwotICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBOYW1lQ29udGV4
dDo6Z2V0VHlwZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNw
YWNlKQotewotICAgIC8vIE5hbWVkIHR5cGVzIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBn
bG9iYWwgbmFtZSBjb250ZXh0LgotICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1f
cGFyZW50LT5nZXRUeXBlcyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4gcmVzdWx0OwotCi0gICAgdW5z
aWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJh
dG9yICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byB0eXBlIDog
aXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICB9
Ci0KLSAgICBpZiAoZnJvbU5hbWVzcGFjZSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJy
YXJ5KSB7Ci0gICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNw
YWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpdGVyYXRvciA9IG1fdHlwZXNbaW5kZXhd
LmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4XS5lbmQo
KSkgewotICAgICAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IE5hbWVDb250ZXh0OjpnZXRGdW5jdGlvbnMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKQotewotICAgIC8vIEZ1
bmN0aW9ucyBjYW4gb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29udGV4dC4K
LSAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVudC0+Z2V0RnVuY3Rpb25z
KG5hbWUsIGZyb21OYW1lc3BhY2UpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gcmVzdWx0OwotCi0gICAgdW5zaWduZWQg
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7Ci0gICAgYXV0byBp
dGVyYXRvciA9IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyYXRv
ciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHR5cGUg
OiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwotICAg
IH0KLQotICAgIGlmIChmcm9tTmFtZXNwYWNlICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExp
YnJhcnkpIHsKLSAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1l
U3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgIGl0ZXJhdG9yID0gbV9mdW5jdGlvbnNb
aW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uc1tp
bmRleF0uZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZh
bHVlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1BU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24q
IE5hbWVDb250ZXh0OjpnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fdmFyaWFibGVzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09
IG1fdmFyaWFibGVzLmVuZCgpKSB7Ci0gICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgICAg
IHJldHVybiBtX3BhcmVudC0+Z2V0VmFyaWFibGUobmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1BU1Q6Ok5hbWVk
VHlwZSogTmFtZUNvbnRleHQ6OnNlYXJjaFR5cGVzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAg
ICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICBpZiAobV9jdXJyZW50TmFtZVNwYWNlID09IEFTVDo6
TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlcyA6
IG1fdHlwZXMpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IHR5cGVzLmZpbmQobmFtZSk7Ci0g
ICAgICAgICAgICBpZiAoaXRlciAhPSB0eXBlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9j
dXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5h
bWUpOwotICAgIGlmIChpdGVyICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1
cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaXRlciA9IG1fdHlw
ZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV90eXBlc1tpbmRleF0uZW5k
KCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6c2Vh
cmNoRnVuY3Rpb25zKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fcGFyZW50
KTsKLSAgICBpZiAobV9jdXJyZW50TmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbnMgOiBtX2Z1bmN0aW9ucykg
ewotICAgICAgICAgICAgYXV0byBpdGVyID0gZnVuY3Rpb25zLmZpbmQobmFtZSk7Ci0gICAgICAg
ICAgICBpZiAoaXRlciAhPSBmdW5jdGlvbnMuZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3Vy
cmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnNbaW5kZXhdLmZpbmQo
bmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKQotICAgICAg
ICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaXRlciA9
IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fZnVuY3Rp
b25zW2luZGV4XS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsK
LQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1zdGQ6Om9wdGlvbmFsPENvZGVMb2NhdGlvbj4g
TmFtZUNvbnRleHQ6OnRvcExldmVsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBp
ZiAoYXV0byogdHlwZSA9IHNlYXJjaFR5cGVzKG5hbWUpKQotICAgICAgICByZXR1cm4gdHlwZS0+
Y29kZUxvY2F0aW9uKCk7Ci0gICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVuY3Rpb25z
KG5hbWUpKQotICAgICAgICByZXR1cm4gZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigpOwotICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLUFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogTmFtZUNv
bnRleHQ6OmxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9w
YXJlbnQpOwotICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVzLmZpbmQobmFtZSk7Ci0gICAgaWYg
KGl0ZXIgIT0gbV92YXJpYWJsZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29u
dGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDA3ZDUwNmEyYzdkMTRkNDIw
M2JiZDYxNWNiZTQ2ZWNhMWUyNmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFt
ZUNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi0jaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmFtZWRU
eXBlOwotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVEZWZpbml0aW9uOwot
Y2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsK
LWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b247Ci1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBWYXJpYWJsZURlY2xhcmF0
aW9uOwotCi19Ci0KLWNsYXNzIE5hbWVDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBOYW1lQ29udGV4
dChOYW1lQ29udGV4dCogcGFyZW50ID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRO
YW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgY3VycmVudE5hbWVTcGFjZSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghbV9wYXJlbnQpOwotICAgICAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBjdXJyZW50
TmFtZVNwYWNlOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpU
eXBlRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRkKEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9y
PiBhZGQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gYWRkKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotCi0gICAgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBnZXRUeXBlcyhjb25zdCBTdHJp
bmcmLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKTsKLSAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBnZXRGdW5jdGlvbnMo
Y29uc3QgU3RyaW5nJiwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7Ci0gICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uKiBnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmKTsKLQotcHJpdmF0
ZToKLSAgICBBU1Q6Ok5hbWVkVHlwZSogc2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBjb25zdDsK
LSAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5h
bWUpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8Q29kZUxvY2F0aW9uPiB0b3BMZXZlbEV4aXN0
cyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogbG9j
YWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+PiBtX3R5cGVzW0FT
VDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPj4gbV9mdW5jdGlvbnNb
QVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbio+IG1fdmFyaWFibGVzOwotICAgIE5hbWVDb250ZXh0KiBtX3BhcmVudDsKLSAg
ICBBU1Q6Ok5hbWVTcGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5IH07Ci19OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTmFtZVJlc29sdmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzAwY2E1NTk1ZGQ2NDgxYzAxY2FiN2NlZjU2MDVhYWJhY2RmNDNiYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TE5hbWVSZXNvbHZlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90RXhwcmVzc2lvbi5oIgot
I2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNp
bmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUgIldITFNM
UmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgotI2luY2x1ZGUgIldITFNMU2NvcGVkU2V0QWRkZXIuaCIK
LSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1OYW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lQ29udGV4dCYgbmFt
ZUNvbnRleHQpCi0gICAgOiBtX25hbWVDb250ZXh0KG5hbWVDb250ZXh0KQotewotfQotCi1OYW1l
UmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lUmVzb2x2ZXImIHBhcmVudFJlc29sdmVyLCBOYW1l
Q29udGV4dCYgbmFtZUNvbnRleHQpCi0gICAgOiBtX25hbWVDb250ZXh0KG5hbWVDb250ZXh0KQot
ICAgICwgbV9wYXJlbnROYW1lUmVzb2x2ZXIoJnBhcmVudFJlc29sdmVyKQotICAgICwgbV9jdXJy
ZW50TmFtZVNwYWNlKHBhcmVudFJlc29sdmVyLm1fY3VycmVudE5hbWVTcGFjZSkKLXsKLX0KLQot
TmFtZVJlc29sdmVyOjp+TmFtZVJlc29sdmVyKCkKLXsKLSAgICBpZiAoaGFzRXJyb3IoKSAmJiBt
X3BhcmVudE5hbWVSZXNvbHZlcikKLSAgICAgICAgbV9wYXJlbnROYW1lUmVzb2x2ZXItPnNldEVy
cm9yKHJlc3VsdCgpLmVycm9yKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNU
OjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAgIFNjb3BlZFNldEFkZGVyPEFT
VDo6VHlwZVJlZmVyZW5jZSo+IGFkZGVyKG1fdHlwZVJlZmVyZW5jZXMsICZ0eXBlUmVmZXJlbmNl
KTsKLSAgICBpZiAoIWFkZGVyLmlzTmV3RW50cnkoKSkgewotICAgICAgICBzZXRFcnJvcihFcnJv
cigiQ2Fubm90IHVzZSByZWN1cnNpdmUgdHlwZSBhcmd1bWVudHMuIiwgdHlwZVJlZmVyZW5jZS5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6
dmlzaXQodHlwZVJlZmVyZW5jZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKSAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MSBTaG91bGRuJ3Qg
d2Uga25vdyBieSBub3cgd2hldGhlciB0aGUgdHlwZSBoYXMgYmVlbiByZXNvbHZlZCBvciBub3Q/
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY2FuZGlkYXRlcyA9IG1fbmFtZUNvbnRleHQu
Z2V0VHlwZXModHlwZVJlZmVyZW5jZS5uYW1lKCksIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
Zm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVzKQotICAgICAgICBWaXNpdG9yOjp2aXNp
dChjYW5kaWRhdGUpOwotICAgIGlmIChhdXRvIHJlc3VsdCA9IHJlc29sdmVUeXBlT3ZlcmxvYWRJ
bXBsKGNhbmRpZGF0ZXMsIHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKSkKLSAgICAgICAg
dHlwZVJlZmVyZW5jZS5zZXRSZXNvbHZlZFR5cGUoKnJlc3VsdCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0eXBlIGFyZ3VtZW50cy4iLCB0eXBl
UmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0K
LXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rp
b25EZWZpbml0aW9uKQotewotICAgIE5hbWVDb250ZXh0IG5ld05hbWVDb250ZXh0KCZtX25hbWVD
b250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuZXdOYW1l
Q29udGV4dCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBl
KCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRv
JiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKQotICAgICAgICBu
ZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAgbmV3TmFt
ZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7
Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKLXsKLSAg
ICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29s
dmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05hbWVSZXNv
bHZlci5WaXNpdG9yOjp2aXNpdChibG9jayk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNp
dChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHsKLSAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1f
bmFtZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlz
LCBuYW1lQ29udGV4dCk7Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlz
aXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICB9Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAg
IE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJl
c29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdO
YW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsK
LSAgICB9Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hp
bGVMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwo
KSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5hbWVDb250
ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFt
ZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFtZVJlc29sdmVyLmNoZWNr
RXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6
OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICB7Ci0gICAgICAgIE5h
bWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29s
dmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1l
UmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAgIH0KLQot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgTmFt
ZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBu
ZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIu
VmlzaXRvcjo6dmlzaXQoZm9yTG9vcCk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYg
KCFtX25hbWVDb250ZXh0LmFkZCh2YXJpYWJsZURlY2xhcmF0aW9uKSkgewotICAgICAgICBzZXRF
cnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRlIHZhcmlhYmxlcy4iLCB2YXJpYWJs
ZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgVmlzaXRvcjo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbik7Ci19Ci0KLXZvaWQgTmFtZVJl
c29sdmVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkK
LXsKLSAgICBpZiAodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKGF1dG8qIHZhcmlhYmxlID0gbV9uYW1lQ29udGV4dC5nZXRWYXJpYWJsZSh2
YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkpKQotICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS5zZXRW
YXJpYWJsZSgqdmFyaWFibGUpOwotICAgIGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigi
Q2Fubm90IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLiIsIHZhcmlhYmxlUmVmZXJlbmNl
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgTmFt
ZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17Ci0g
ICAgaWYgKGlzPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKSkg
ewotICAgICAgICBhdXRvJiB2YXJpYWJsZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgaWYgKCFtX25hbWVD
b250ZXh0LmdldFZhcmlhYmxlKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSkpIHsKLSAgICAgICAg
ICAgIGF1dG8gYmFzZU5hbWUgPSB2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCk7Ci0gICAgICAgICAg
ICBhdXRvIGVudW1lcmF0aW9uVHlwZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKGJhc2VOYW1l
LCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgICAgICAgICAgaWYgKGVudW1lcmF0aW9uVHlwZXMu
c2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSA9IGVu
dW1lcmF0aW9uVHlwZXNbMF07Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uPih0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICBBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIG1lbWJl
ck5hbWUgPSBkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZpbml0aW9uLm1lbWJlckJ5TmFtZShtZW1i
ZXJOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwgPSBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6d3JhcChkb3RFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKGJhc2VOYW1lKSwgV1RGTW92ZShtZW1iZXJOYW1l
KSwgZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGRvdEV4
cHJlc3Npb24sIFdURk1vdmUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk5vIGVudW0gbWVtYmVyIG1hdGNoZXMgdGhlIHVzZWQg
bmFtZS4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25UeXBlcy5pc0VtcHR5KCkpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQoZG90RXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIGlmIChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
ZW51bWVyYXRpb25NZW1iZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBlbnVtZXJh
dGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyhlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwubGVmdCgpLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChlbnVtZXJhdGlvblR5cGVz
LnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MzM1IFRoaXMgbmVlZHMgdG8gd29yayB3aXRoIHR5cGVkZWYn
ZWQgZW51bXMuCi0gICAgICAgIEFTVDo6TmFtZWRUeXBlJiB0eXBlID0gZW51bWVyYXRpb25UeXBl
c1swXTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKSkg
ewotICAgICAgICAgICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVm
aW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24ubWVtYmVy
QnlOYW1lKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yaWdodCgpKSkgewotICAgICAgICAgICAg
ICAgIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5zZXRFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJh
dGlvbkRlZmluaXRpb24sICptZW1iZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3Qg
cmVzb2x2ZSBlbnVtZXJhdGlvbiBtZW1iZXIgbGl0ZXJhbC4iLCBlbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikK
LXsKLSAgICBOYW1lQ29udGV4dCBuZXdOYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAg
TmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcihuZXdOYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFt
ZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotfQot
Ci0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2
NyBNYWtlIHN1cmUgYWxsIHRoZSBuYW1lcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiByZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0mIHByb2dyYW0sIE5hbWVS
ZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAgIGZvciAoYXV0byYgdHlwZURlZmluaXRpb24g
OiBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRD
dXJyZW50TmFtZVNwYWNlKHR5cGVEZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAg
ICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAg
ICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1l
UmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgc3RydWN0dXJlRGVmaW5p
dGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVz
b2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShzdHJ1Y3R1cmVEZWZpbml0aW9uLmdldCgpLm5hbWVT
cGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1
cmVEZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAg
ICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChh
dXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShlbnVtZXJh
dGlvbkRlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIu
Y2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChu
YW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIu
cmVzdWx0KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uIDog
cHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVy
LnNldEN1cnJlbnROYW1lU3BhY2UobmF0aXZlVHlwZURlY2xhcmF0aW9uLmdldCgpLm5hbWVTcGFj
ZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChuYXRpdmVUeXBl
RGVjbGFyYXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICByZXR1cm4g
eyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rp
b25zKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAg
IGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRp
b25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2UoZnVuY3Rp
b25EZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNo
ZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAobmFtZVJl
c29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3Vs
dCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBw
cm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29s
dmVyLnNldEN1cnJlbnROYW1lU3BhY2UobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKS5u
YW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJy
b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQot
ICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWE0ZWRiZDZhNzg3YzNiZTE0OTE0
NjkwZTJhN2U4MjdjMDg2NDc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJl
c29sdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUgIldITFNM
VmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUHJvZ3JhbTsKLQotY2xhc3MgTmFtZVJlc29sdmVyIDogcHVibGljIFZpc2l0b3IgewotcHVi
bGljOgotICAgIE5hbWVSZXNvbHZlcihOYW1lQ29udGV4dCYpOwotICAgIE5hbWVSZXNvbHZlcihO
YW1lUmVzb2x2ZXImLCBOYW1lQ29udGV4dCYpOwotCi0gICAgdmlydHVhbCB+TmFtZVJlc29sdmVy
KCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKSB7IG1fY3VycmVudE5hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRlOgotICAg
IHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVu
Y2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVy
cmlkZTsKLQotICAgIE5hbWVDb250ZXh0JiBtX25hbWVDb250ZXh0OwotICAgIEhhc2hTZXQ8QVNU
OjpUeXBlUmVmZXJlbmNlKj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBOYW1lUmVzb2x2ZXIqIG1f
cGFyZW50TmFtZVJlc29sdmVyIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmFtZVNwYWNlIG1fY3Vy
cmVudE5hbWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0mLCBOYW1l
UmVzb2x2ZXImKTsKLUV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlVHlwZU5hbWVzSW5GdW5j
dGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBh
cnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZDQ3MjE2YzIzMmM5ZWUw
YmRhZTYyODBjNDcwMTFkZGYzNTU5ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA4OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2lu
Y2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LSNpbmNsdWRlIDx3dGYvZHRvYS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLSNkZWZpbmUgUEFSU0UobmFtZSwgZWxl
bWVudCwgLi4uKSBcCi0gICAgYXV0byBuYW1lID0gcGFyc2UjI2VsZW1lbnQoX19WQV9BUkdTX18p
OyBcCi0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1l
LmVycm9yKCkpOyBcCi0KLSNkZWZpbmUgQ09OU1VNRV9UWVBFKG5hbWUsIHR5cGUpIFwKLSAgICBh
dXRvIG5hbWUgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6dHlwZSk7IFwKLSAgICBpZiAoIW5h
bWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLSNk
ZWZpbmUgUEVFSyhuYW1lKSBcCi0gICAgYXV0byBuYW1lID0gcGVlaygpOyBcCi0gICAgaWYgKCFu
YW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOwotCi0j
ZGVmaW5lIFBFRUtfRlVSVEhFUihuYW1lKSBcCi0gICAgYXV0byBuYW1lID0gcGVla0Z1cnRoZXIo
KTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFt
ZS5lcnJvcigpKTsKLQotYXV0byBQYXJzZXI6OnBhcnNlKFByb2dyYW0mIHByb2dyYW0sIFN0cmlu
Z1ZpZXcgc3RyaW5nVmlldywgUGFyc2luZ01vZGUgbW9kZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKSAtPiBFeHBlY3RlZDx2b2lkLCBFcnJvcj4KLXsKLSAgICBtX2xleGVyID0gTGV4ZXIoc3Ry
aW5nVmlldywgbmFtZVNwYWNlKTsKLSAgICBtX21vZGUgPSBtb2RlOwotCi0gICAgd2hpbGUgKCFt
X2xleGVyLmlzRnVsbHlDb25zdW1lZCgpKSB7Ci0gICAgICAgIGF1dG8gdG9rZW4gPSBtX2xleGVy
LnBlZWsoKTsKLSAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpTZW1pY29sb246Ci0gICAgICAgICAgICBtX2xleGVyLmNvbnN1bWVUb2tl
bigpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlR5
cGVkZWY6IHsKLSAgICAgICAgICAgIGF1dG8gdHlwZURlZmluaXRpb24gPSBwYXJzZVR5cGVEZWZp
bml0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIXR5cGVEZWZpbml0aW9uKQotICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0eXBlRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAg
ICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqdHlwZURl
ZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTdHJ1
Y3Q6IHsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0dXJlRGVmaW5pdGlvbiA9IHBhcnNlU3RydWN0
dXJlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVEZWZpbml0aW9uKQot
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChzdHJ1Y3R1cmVEZWZpbml0aW9u
LmVycm9yKCkpOwotICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVu
ZChXVEZNb3ZlKCpzdHJ1Y3R1cmVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVu
ZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVz
dWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RW51bTogewotICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvbkRl
ZmluaXRpb24gPSBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYg
KCFlbnVtZXJhdGlvbkRlZmluaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8g
YXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqZW51bWVyYXRpb25EZWZpbml0
aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TmF0aXZlOiB7
Ci0gICAgICAgICAgICBpZiAobV9tb2RlICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiJ25hdGl2ZScgY2FuJ3Qg
ZXhpc3Qgb3V0c2lkZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeS4iKSk7Ci0gICAgICAgICAgICBh
dXRvIGZ1cnRoZXJUb2tlbiA9IHBlZWtGdXJ0aGVyKCk7Ci0gICAgICAgICAgICBpZiAoIWZ1cnRo
ZXJUb2tlbikKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgaWYgKGZ1
cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VHlwZWRlZikgewotICAgICAgICAgICAg
ICAgIGF1dG8gbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gcGFyc2VOYXRpdmVUeXBlRGVjbGFyYXRp
b24oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5lcnJvcigpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0u
YXBwZW5kKFdURk1vdmUoKm5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAg
IGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
ID0gcGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIW5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBh
dXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAg
ICAgICBhdXRvIGZ1bmN0aW9uRGVmaW5pdGlvbiA9IHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCk7
Ci0gICAgICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZnVuY3Rpb25EZWZpbml0aW9uLmVycm9yKCkpOwotICAgICAg
ICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpmdW5jdGlv
bkRlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIHsgfTsKLX0KLQotYXV0byBQYXJzZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBU
cnlUb1BlZWsgdHJ5VG9QZWVrKSAtPiBVbmV4cGVjdGVkPEVycm9yPgotewotICAgIGlmICh0cnlU
b1BlZWsgPT0gVHJ5VG9QZWVrOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gbmV4dFRva2VuID0g
cGVlaygpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1fbGV4ZXIu
ZXJyb3JTdHJpbmcoKm5leHRUb2tlbiwgbWVzc2FnZSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBsZXg6ICIsIG1lc3NhZ2UpKSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwZWVrKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewot
ICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAodG9rZW4udHlwZSAhPSBU
b2tlbjo6VHlwZTo6SW52YWxpZCAmJiB0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpFbmRPZkZp
bGUpCi0gICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBj
b25zdW1lIHRva2VuIl9zdHIsIFRyeVRvUGVlazo6Tm8pOwotfQotCi1hdXRvIFBhcnNlcjo6cGVl
a0Z1cnRoZXIoKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9
IG1fbGV4ZXIucGVla0Z1cnRoZXIoKTsKLSAgICBpZiAodG9rZW4udHlwZSAhPSBUb2tlbjo6VHlw
ZTo6SW52YWxpZCAmJiB0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpFbmRPZkZpbGUpCi0gICAg
ICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBjb25zdW1lIHR3
byB0b2tlbnMiX3N0ciwgVHJ5VG9QZWVrOjpObyk7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlw
ZSB0LCBUb2tlbjo6VHlwZS4uLiB0cz4KLXN0cnVjdCBUeXBlcyB7Ci0gICAgc3RhdGljIGJvb2wg
aW5jbHVkZXMoVG9rZW46OlR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ID09IHR5
cGUgfHwgVHlwZXM8dHMuLi4+OjppbmNsdWRlcyh0eXBlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBhcHBlbmROYW1lVG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKLSAgICB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7Ci0gICAgICAgIFR5cGVz
PHRzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwotICAgIH0KLX07Ci10ZW1wbGF0ZSA8VG9r
ZW46OlR5cGUgdD4KLXN0cnVjdCBUeXBlczx0PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5jbHVkZXMo
VG9rZW46OlR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ID09IHR5cGU7Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIp
Ci0gICAgewotICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCkpOwotICAg
IH0KLX07Ci0KLQotYm9vbCBQYXJzZXI6OnBlZWtUeXBlKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0g
ICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIHJldHVybiB0b2tlbi50eXBlID09
IHR5cGU7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLWJvb2wgUGFyc2Vy
OjpwZWVrVHlwZXMoKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBy
ZXR1cm4gVHlwZXM8dHlwZXMuLi4+OjppbmNsdWRlcyh0b2tlbi50eXBlKTsKLX0KLQotc3RkOjpv
cHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAg
YXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmICh0b2tlbi50eXBlID09IHR5cGUp
Ci0gICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci1zdGQ6
Om9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGVzKCkKLXsKLSAgICBhdXRvIHRva2VuID0g
bV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4u
dHlwZSkpCi0gICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGUoVG9rZW46
OlR5cGUgdHlwZSkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8gdG9rZW4g
PSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgIGlmICh0b2tlbi50eXBlID09IHR5cGUpCi0g
ICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiVW5l
eHBlY3RlZCB0b2tlbiAoZXhwZWN0ZWQgIiwgVG9rZW46OnR5cGVOYW1lKHR5cGUpLCAiIGdvdCAi
LCBUb2tlbjo6dHlwZU5hbWUodG9rZW4udHlwZSksICIpIikpOwotfQotCi10ZW1wbGF0ZSA8VG9r
ZW46OlR5cGUuLi4gdHlwZXM+Ci1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGVzKCkgLT4gRXhwZWN0
ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8gYnVpbGRFeHBlY3RlZFN0cmluZyA9IFsmXSgp
IC0+IFN0cmluZyB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlsiKTsKLSAgICAgICAgVHlwZXM8dHlwZXMuLi4+OjphcHBlbmROYW1lVG8o
YnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7Ci0gICAgICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLmNv
bnN1bWVUb2tlbigpOwotICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRva2VuLnR5
cGUpKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKG1ha2VTdHJp
bmcoIlVuZXhwZWN0ZWQgdG9rZW4gKGV4cGVjdGVkIG9uZSBvZiAiLCBidWlsZEV4cGVjdGVkU3Ry
aW5nKCksICIgZ290ICIsIFRva2VuOjp0eXBlTmFtZSh0b2tlbi50eXBlKSwgIikiKSk7Ci19Ci0K
LXN0YXRpYyBpbnQgZGlnaXRWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgaWYgKGNoYXJh
Y3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciAtICcwJzsKLSAgICBpZiAoY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ2YnKQot
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyIC0gJ2EnICsgMTA7Ci0gICAgcmV0dXJuIGNoYXJhY3Rl
ciAtICdBJyArIDEwOwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8aW50LCBFcnJvcj4gaW50TGl0ZXJh
bFRvSW50KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICBib29sIG5lZ2F0ZSA9IGZhbHNlOwotICAg
IGlmICh0ZXh0LnN0YXJ0c1dpdGgoIi0iX3N0cikpIHsKLSAgICAgICAgbmVnYXRlID0gdHJ1ZTsK
LSAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDEpOwotICAgIH0KLSAgICBpbnQgYmFzZSA9
IDEwOwotICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoIjB4Il9zdHIpKSB7Ci0gICAgICAgIHRleHQg
PSB0ZXh0LnN1YnN0cmluZygyKTsKLSAgICAgICAgYmFzZSA9IDE2OwotICAgIH0KLQotICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IHRleHQuY29kZVBv
aW50cygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRpZ2l0ID0gZGlnaXRWYWx1ZShjb2RlUG9pbnQp
OwotICAgICAgICBhdXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1
bHQgKiBiYXNlICsgZGlnaXQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQgbGl0ZXJh
bCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICBpZiAobmVnYXRl
KSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9mKHVuc2ln
bmVkKSAmJiBzaXplb2YoaW50NjRfdCkgPiBzaXplb2YoaW50KSwgIlRoaXMgY29kZSB3b3VsZCBi
ZSB3cm9uZyBvdGhlcndpc2UiKTsKLSAgICAgICAgaW50NjRfdCBpbnRSZXN1bHQgPSAtc3RhdGlj
X2Nhc3Q8aW50NjRfdD4ocmVzdWx0KTsKLSAgICAgICAgaWYgKGludFJlc3VsdCA8IHN0YXRpY19j
YXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBsaXRlcmFsICIs
IHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgICAgIHJldHVybiB7IHN0YXRpY19j
YXN0PGludD4oaW50UmVzdWx0KSB9OwotICAgIH0KLSAgICBpZiAocmVzdWx0ID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiaW50IGxpdGVyYWwgIiwgdGV4
dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+
KHJlc3VsdCkgfTsKLX0KLQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4gdWludExp
dGVyYWxUb1VpbnQoU3RyaW5nVmlldyB0ZXh0KQotewotICAgIHVuc2lnbmVkIGJhc2UgPSAxMDsK
LSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCIweCJfc3RyKSkgewotICAgICAgICB0ZXh0ID0gdGV4
dC5zdWJzdHJpbmcoMik7Ci0gICAgICAgIGJhc2UgPSAxNjsKLSAgICB9Ci0gICAgQVNTRVJUKHRl
eHQuZW5kc1dpdGgoInUiKSk7Ci0gICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQubGVu
Z3RoKCkgLSAxKTsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byBjb2Rl
UG9pbnQgOiB0ZXh0LmNvZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdpdCA9IGRp
Z2l0VmFsdWUoY29kZVBvaW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsKLSAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAocmVzdWx0
IDwgcHJldmlvdXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFr
ZVN0cmluZygidWludCBsaXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0g
ICAgfQotICAgIHJldHVybiB7IHJlc3VsdCB9OwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8ZmxvYXQs
IEVycm9yPiBmbG9hdExpdGVyYWxUb0Zsb2F0KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICBzaXpl
X3QgcGFyc2VkTGVuZ3RoOwotICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VEb3VibGUodGV4dCwgcGFy
c2VkTGVuZ3RoKTsKLSAgICBpZiAocGFyc2VkTGVuZ3RoICE9IHRleHQubGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3QgcGFyc2Ug
ZmxvYXQgIiwgdGV4dCkpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc3VsdCk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8
VmFyaWFudDxpbnQsIHVuc2lnbmVkPiwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3JhbExpdGVy
YWxUb2tlbiA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwgVG9rZW46OlR5
cGU6OlVpbnRMaXRlcmFsPigpOwotICAgIGlmICghaW50ZWdyYWxMaXRlcmFsVG9rZW4pCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWxUb2tlbi5lcnJvcigpKTsK
LQotICAgIHN3aXRjaCAoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW50TGl0ZXJh
bFRvSW50KGludGVncmFsTGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19OwotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAgICBkZWZh
dWx0OiB7Ci0gICAgICAgIEFTU0VSVChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6VWludExpdGVyYWwpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHVpbnRMaXRlcmFs
VG9VaW50KGludGVncmFsTGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19OwotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAgICB9Ci19
Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKSAtPiBF
eHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3JhbExpdGVyYWwgPSBj
b25zdW1lSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFpbnRlZ3JhbExpdGVyYWwpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWwuZXJyb3IoKSk7Ci0gICAg
YXV0byByZXN1bHQgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oaW50IHgpIC0+IHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKLSAgICAgICAgaWYgKHggPCAwKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfSwgW10odW5zaWdu
ZWQgeCkgLT4gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gewotICAgICAgICByZXR1cm4geDsKLSAg
ICB9KSwgKmludGVncmFsTGl0ZXJhbCk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJu
ICpyZXN1bHQ7Ci0gICAgcmV0dXJuIGZhaWwoImludCBsaXRlcmFsIGlzIG5lZ2F0aXZlIl9zdHIp
OwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiByZWNvZ25pemVTaW1wbGVV
bnNpZ25lZEludGVnZXIoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQotewotICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7Ci0gICAgaWYgKHN0cmluZ1ZpZXcubGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2lnbmVkIGxpdGVy
YWwgIiwgc3RyaW5nVmlldywgIiBpcyB0b28gc2hvcnQiKSkpOwotICAgIGZvciAoYXV0byBjb2Rl
UG9pbnQgOiBzdHJpbmdWaWV3LmNvZGVQb2ludHMoKSkgewotICAgICAgICBpZiAoY29kZVBvaW50
IDwgJzAnIHx8IGNvZGVQb2ludCA+ICc5JykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJhbCAiLCBzdHJpbmdW
aWV3LCAiIGlzbid0IG9mIHRoZSBmb3JtIFswLTldKyIpKSk7Ci0gICAgICAgIGF1dG8gcHJldmlv
dXMgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgKGNvZGVQb2ludCAt
ICcwJyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJh
bCAiLCBzdHJpbmdWaWV3LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDb25zdGFudEV4cHJlc3Npb24oKSAt
PiBFeHBlY3RlZDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0
eXBlID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6Rmxv
YXRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6TnVsbCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlRydWUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpGYWxzZSwKLSAgICAgICAgVG9rZW46OlR5
cGU6OklkZW50aWZpZXI+KCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkgewotICAg
IGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGlu
dExpdGVyYWxUb0ludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsK
LSAgICAgICAgcmV0dXJuIHt7IEFTVDo6SW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUp
IH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewotICAgICAg
ICBhdXRvIHZhbHVlID0gdWludExpdGVyYWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVy
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpGbG9hdExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGZsb2F0TGl0ZXJhbFRv
RmxvYXQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAg
IHJldHVybiB7eyBBU1Q6OkZsb2F0TGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07Ci0gICAg
fQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRydWU6Ci0gICAgICAgIHJldHVybiB7IEFTVDo6Qm9v
bGVhbkxpdGVyYWwoV1RGTW92ZSgqdHlwZSksIHRydWUpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6RmFsc2U6Ci0gICAgICAgIHJldHVybiB7IEFTVDo6Qm9vbGVhbkxpdGVyYWwoV1RGTW92ZSgq
dHlwZSksIGZhbHNlKSB9OwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5
cGUgPT0gVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBDT05TVU1FX1RZUEUoZnVs
bFN0b3AsIEZ1bGxTdG9wKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKG5leHQsIElkZW50aWZpZXIp
OwotICAgICAgICByZXR1cm4geyBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCh7ICp0eXBl
LCAqbmV4dCB9LCB0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIG5leHQtPnN0
cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSkgfTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVu
dCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhuZXh0VG9rZW4pOwotICAgIFBFRUtfRlVSVEhFUihmdXJ0
aGVyVG9rZW4pOwotICAgIGlmIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OklkZW50
aWZpZXIgfHwgZnVydGhlclRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpGdWxsU3RvcCkgewot
ICAgICAgICBQQVJTRShjb25zdGFudEV4cHJlc3Npb24sIENvbnN0YW50RXhwcmVzc2lvbik7Ci0g
ICAgICAgIHJldHVybiBBU1Q6OlR5cGVBcmd1bWVudChXVEZNb3ZlKCpjb25zdGFudEV4cHJlc3Np
b24pKTsKLSAgICB9Ci0gICAgQ09OU1VNRV9UWVBFKHJlc3VsdCwgSWRlbnRpZmllcik7Ci0gICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uKCpyZXN1bHQpOwotICAgIHJldHVybiBBU1Q6OlR5cGVBcmd1
bWVudChBU1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgcmVzdWx0LT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIEFTVDo6VHlwZUFyZ3VtZW50cygpKSk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZVR5cGVBcmd1bWVudHMoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1
bWVudHMsIEVycm9yPgotewotICAgIEFTVDo6VHlwZUFyZ3VtZW50cyB0eXBlQXJndW1lbnRzOwot
ICAgIGF1dG8gbGVzc1RoYW5TaWduID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWdu
KTsKLSAgICBpZiAoIWxlc3NUaGFuU2lnbikKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7
Ci0KLSAgICBhdXRvIGdyZWF0ZXJUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OkdyZWF0
ZXJUaGFuU2lnbik7Ci0gICAgaWYgKGdyZWF0ZXJUaGFuU2lnbikKLSAgICAgICAgcmV0dXJuIHR5
cGVBcmd1bWVudHM7Ci0KLSAgICBQQVJTRSh0eXBlQXJndW1lbnQsIFR5cGVBcmd1bWVudCk7Ci0g
ICAgdHlwZUFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFyZ3VtZW50KSk7Ci0KLSAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICBhdXRvIGdyZWF0ZXJUaGFuU2lnbiA9IHRyeVR5cGUoVG9r
ZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbik7Ci0gICAgICAgIGlmIChncmVhdGVyVGhhblNpZ24p
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDT05TVU1FX1RZUEUoY29tbWEsIENvbW1h
KTsKLSAgICAgICAgUEFSU0UodHlwZUFyZ3VtZW50LCBUeXBlQXJndW1lbnQpOwotICAgICAgICB0
eXBlQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCp0eXBlQXJndW1lbnQpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHlwZUFyZ3VtZW50czsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZp
eEFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnJvcj4K
LXsKLSAgICBhdXRvIHRva2VuID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6
U3RhciwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBU
b2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYgKCF0b2tlbikKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRva2VuLmVycm9yKCkpOwotICAgIGlmICh0b2tlbi0+
dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgYXV0byBu
dW1FbGVtZW50cyA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgICAg
ICBpZiAoIW51bUVsZW1lbnRzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51
bUVsZW1lbnRzLmVycm9yKCkpOwotICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFj
a2V0LCBSaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpy
aWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCAqbnVtRWxlbWVudHMgfX07Ci0gICAgfQotICAg
IHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9wdCB9fTsKLX0KLQotYXV0
byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlw
ZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gY29uc3Vt
ZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6U3RhciwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNr
ZXQ+KCk7Ci0gICAgaWYgKCF0b2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRv
a2VuLmVycm9yKCkpOwotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNx
dWFyZUJyYWNrZXQpIHsKLSAgICAgICAgYXV0byBudW1FbGVtZW50cyA9IGNvbnN1bWVOb25OZWdh
dGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgICAgICBpZiAoIW51bUVsZW1lbnRzKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9yKCkpOwotICAgICAg
ICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFyZUJyYWNrZXQpOwot
ICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2Vu
LCBzdGQ6Om51bGxvcHQsICpudW1FbGVtZW50cyB9fTsKLSAgICB9Ci0gICAgYXV0byBhZGRyZXNz
U3BhY2VUb2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkNvbnN0YW50
LAotICAgICAgICBUb2tlbjo6VHlwZTo6RGV2aWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhy
ZWFkZ3JvdXAsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWQ+KCk7Ci0gICAgaWYgKCFhZGRy
ZXNzU3BhY2VUb2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFkZHJlc3NTcGFj
ZVRva2VuLmVycm9yKCkpOwotICAgIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZTsKLSAg
ICBzd2l0Y2ggKGFkZHJlc3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6Q29uc3RhbnQ6Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpD
b25zdGFudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGV2aWNlOgot
ICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cDoKLSAgICAgICAgYWRk
cmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlVG9rZW4tPnR5cGUg
PT0gVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRk
cmVzc1NwYWNlOjpUaHJlYWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4ge3sg
eyAqdG9rZW4gfSwgKnRva2VuLCB7IGFkZHJlc3NTcGFjZSB9LCBzdGQ6Om51bGxvcHQgfX07Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVk
VHlwZT4sIEVycm9yPgotewotICAgIGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSB0cnlUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OkNvbnN0YW50LAotICAgICAgICBUb2tlbjo6VHlwZTo6RGV2
aWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXAsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpUaHJlYWQ+KCk7Ci0KLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0g
ICAgUEFSU0UodHlwZUFyZ3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0KLSAgICBpZiAoYWRkcmVz
c1NwYWNlVG9rZW4pIHsKLSAgICAgICAgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwot
ICAgICAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpB
ZGRyZXNzU3BhY2U6OkNvbnN0YW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkRldmljZToKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRk
cmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFk
ZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6VGhyZWFkKTsKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVz
c1NwYWNlOjpUaHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBh
dXRvIGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4QWJicmV2aWF0ZWQgPSBbJl0oY29uc3QgVHlwZVN1
ZmZpeEFiYnJldmlhdGVkJiB0eXBlU3VmZml4QWJicmV2aWF0ZWQsIFJlZjxBU1Q6OlVubmFtZWRU
eXBlPiYmIHByZXZpb3VzKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uKCphZGRyZXNzU3BhY2VUb2tlbiwgdHlwZVN1ZmZpeEFiYnJl
dmlhdGVkLmxvY2F0aW9uKTsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZVN1ZmZpeEFiYnJldmlh
dGVkLnRva2VuLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGxvY2F0aW9u
LCBhZGRyZXNzU3BhY2UsIFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsg
QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBX
VEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHR5cGVTdWZmaXhBYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2VuOjpUeXBl
OjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJh
eVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksICp0eXBlU3VmZml4QWJi
cmV2aWF0ZWQubnVtRWxlbWVudHMpIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAg
ICAgIFBBUlNFKGZpcnN0VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBUeXBlU3VmZml4QWJicmV2aWF0
ZWQpOwotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gQVNUOjpUeXBlUmVm
ZXJlbmNlOjpjcmVhdGUoV1RGTW92ZSgqYWRkcmVzc1NwYWNlVG9rZW4pLCBuYW1lLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsKLSAgICAg
ICAgYXV0byBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCgqZmlyc3RU
eXBlU3VmZml4QWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJlc3VsdCA9
IFdURk1vdmUobmV4dCk7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBQRUVL
KG5leHRUb2tlbik7Ci0gICAgICAgICAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpTdGFyCi0gICAgICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpTcXVhcmVCcmFja2V0UGFpcgotICAgICAgICAgICAgICAgICYmIG5leHRUb2tlbi0+dHlw
ZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBBUlNFKHR5cGVTdWZmaXhBYmJyZXZp
YXRlZCwgVHlwZVN1ZmZpeEFiYnJldmlhdGVkKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
bmVzdGluZyBoZXJlIG1pZ2h0IGJlIGluIHRoZSB3cm9uZyBvcmRlci4KLSAgICAgICAgICAgIG5l
eHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkKCp0eXBlU3VmZml4QWJicmV2
aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKG5l
eHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci0gICAgfQot
Ci0gICAgYXV0byBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVkID0gWyZdKGNv
bnN0IFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpuYW1lLCB0eXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQubG9jYXRpb24pOwotICAgICAgICBzd2l0Y2ggKHR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZC50b2tlbi50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAg
ICAgICAgICByZXR1cm4geyBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobG9jYXRpb24sICp0eXBl
U3VmZml4Tm9uQWJicmV2aWF0ZWQuYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsK
LSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgICAg
ICByZXR1cm4geyBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCAqdHlw
ZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQodHlwZVN1ZmZpeE5vbkFiYnJl
dmlhdGVkLnRva2VuLnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KTsKLSAg
ICAgICAgICAgIHJldHVybiB7IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24sIFdURk1v
dmUocHJldmlvdXMpLCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLm51bUVsZW1lbnRzKSB9Owot
ICAgICAgICB9Ci0gICAgfTsKLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gQVNU
OjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUoKm5hbWUsIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50cykpOwotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICAgICAgaWYgKG5leHRUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6U3RhcgotICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRv
a2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcgotICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50
eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgUEFSU0UodHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBU
eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQpOwotICAgICAgICAvLyBGSVhNRTogVGhlIG5lc3Rpbmcg
aGVyZSBtaWdodCBiZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCi0gICAgICAgIGF1dG8gbmV4dCA9IGNv
bnN0cnVjdFR5cGVGcm9tU3VmZml4Tm9uQWJicmV2aWF0ZWQoKnR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZCwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShuZXh0KTsK
LSAgICB9Ci0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlVHlwZURlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZpbml0aW9uLCBFcnJv
cj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBUeXBlZGVmKTsKLSAgICBDT05TVU1FX1RZ
UEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgQ09OU1VNRV9UWVBFKGVxdWFscywgRXF1YWxzU2ln
bik7Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwg
U2VtaWNvbG9uKTsKLSAgICByZXR1cm4gQVNUOjpUeXBlRGVmaW5pdGlvbih7ICpvcmlnaW4sICpz
ZW1pY29sb24gfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3Zl
KCp0eXBlKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUJ1aWx0SW5TZW1hbnRpYygpIC0+IEV4
cGVjdGVkPEFTVDo6QnVpbHRJblNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBhdXRvIG9yaWdpbiA9
IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJRCwKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlNWVmVydGV4SUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQU2l6ZSwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlNWUG9zaXRpb24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpT
VklzRnJvbnRGYWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCwKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNW
VGFyZ2V0LAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZEZXB0aCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlNWQ292ZXJhZ2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwSUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpT
Vkdyb3VwSW5kZXgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFkSUQ+KCk7Ci0g
ICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChvcmlnaW4uZXJy
b3IoKSk7Ci0KLSAgICBzd2l0Y2ggKG9yaWdpbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5
cGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsg
Km9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJRCk7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6
QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWVmVydGV4SUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlBTaXplOgotICAgICAgICBy
ZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6UFNpemUpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWUG9zaXRpb246
Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0aW9uKTsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMo
eyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFj
ZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJu
IEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWU2FtcGxlSW5kZXgpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWSW5uZXJD
b3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9
LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZSk7Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6U1ZUYXJnZXQ6IHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBjb25z
dW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MDcgTWFrZSB0aGlzIHdvcmsgd2l0aCBzdHJp
bmdzIGxpa2UgIlNWX1RhcmdldDAiLgotICAgICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCh0YXJnZXQuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVlRhcmdldCwgKnRhcmdldCk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4g
fSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoKTsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZDb3ZlcmFn
ZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICBy
ZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmln
aW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQpOwotICAgIGNh
c2UgVG9rZW46OlR5cGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJ
blNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNW
R3JvdXBJbmRleCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKG9yaWdpbi0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVp
bHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VSZXNvdXJj
ZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpSZXNvdXJjZVNlbWFudGljLCBFcnJvcj4KLXsK
LSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBSZWdpc3Rlcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIENPTlNVTUVfVFlQRShpbmZv
LCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIGluZm9TdHJpbmdWaWV3ID0gaW5mby0+c3RyaW5nVmll
dyhtX2xleGVyKTsKLSAgICBpZiAoaW5mb1N0cmluZ1ZpZXcubGVuZ3RoKCkgPCAyIHx8IChpbmZv
U3RyaW5nVmlld1swXSAhPSAndScKLSAgICAgICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3Qn
Ci0gICAgICAgICYmIGluZm9TdHJpbmdWaWV3WzBdICE9ICdiJwotICAgICAgICAmJiBpbmZvU3Ry
aW5nVmlld1swXSAhPSAncycpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
bWFrZVN0cmluZyhpbmZvU3RyaW5nVmlldy5zdWJzdHJpbmcoMCwgMSksICIgaXMgbm90IGEga25v
d24gcmVzb3VyY2UgdHlwZSAoJ3UnLCAndCcsICdiJywgb3IgJ3MnKSIpKSk7Ci0KLSAgICBBU1Q6
OlJlc291cmNlU2VtYW50aWM6Ok1vZGUgbW9kZTsKLSAgICBzd2l0Y2ggKGluZm9TdHJpbmdWaWV3
WzBdKSB7Ci0gICAgY2FzZSAndSc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50
aWM6Ok1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
J3QnOgotICAgICAgICBtb2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpUZXh0dXJl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlICdiJzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVz
b3VyY2VTZW1hbnRpYzo6TW9kZTo6QnVmZmVyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICdz
JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6U2FtcGxlcjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gcmVjb2duaXplU2ltcGxlVW5z
aWduZWRJbnRlZ2VyKGluZm9TdHJpbmdWaWV3LnN1YnN0cmluZygxKSk7Ci0gICAgaWYgKCFpbmRl
eCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGluZGV4LmVycm9yKCkpOwotCi0gICAg
dW5zaWduZWQgc3BhY2UgPSAwOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkp
IHsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNwYWNlVG9rZW4sIElkZW50aWZpZXIpOwotICAgICAg
ICBhdXRvIHNwYWNlVG9rZW5TdHJpbmdWaWV3ID0gc3BhY2VUb2tlbi0+c3RyaW5nVmlldyhtX2xl
eGVyKTsKLSAgICAgICAgU3RyaW5nVmlldyBwcmVmaXggeyAic3BhY2UiIH07Ci0gICAgICAgIGlm
ICghc3BhY2VUb2tlblN0cmluZ1ZpZXcuc3RhcnRzV2l0aChwcmVmaXgpKQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBhcmd1bWVudCB0
byByZXNvdXJjZSBzZW1hbnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBuZWVkcyBiZSBv
ZiB0aGUgZm9ybSAnc3BhY2UwJyIpKSk7Ci0gICAgICAgIGlmIChzcGFjZVRva2VuU3RyaW5nVmll
dy5sZW5ndGgoKSA8PSBwcmVmaXgubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2Vjb25kIGFyZ3VtZW50IHRvIHJlc291cmNlIHNl
bWFudGljICIsIHNwYWNlVG9rZW5TdHJpbmdWaWV3LCAiIG5lZWRzIGJlIG9mIHRoZSBmb3JtICdz
cGFjZTAnIikpKTsKLSAgICAgICAgYXV0byBzcGFjZVZhbHVlID0gcmVjb2duaXplU2ltcGxlVW5z
aWduZWRJbnRlZ2VyKHNwYWNlVG9rZW5TdHJpbmdWaWV3LnN1YnN0cmluZyhwcmVmaXgubGVuZ3Ro
KCkpKTsKLSAgICAgICAgaWYgKCFzcGFjZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKHNwYWNlVmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHNwYWNlID0gKnNwYWNlVmFs
dWU7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFy
ZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIEFTVDo6UmVzb3VyY2VTZW1hbnRpYyh7ICpvcmlnaW4s
ICpyaWdodFBhcmVudGhlc2lzIH0sIG1vZGUsICppbmRleCwgc3BhY2UpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSAtPiBFeHBlY3RlZDxB
U1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAgQ09OU1VN
RV9UWVBFKG9yaWdpbiwgU3BlY2lhbGl6ZWQpOwotICAgIHJldHVybiBBU1Q6OlNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYygqb3JpZ2luKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3Rh
Z2VJbk91dFNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWMsIEVy
cm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIEF0dHJpYnV0ZSk7Ci0gICAgQ09OU1VN
RV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gaW5k
ZXggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWluZGV4
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5kZXguZXJyb3IoKSk7Ci0KLSAgICBD
T05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICBy
ZXR1cm4gQVNUOjpTdGFnZUluT3V0U2VtYW50aWMoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNp
cyB9LCAqaW5kZXgpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+IEV4cGVj
dGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+Ci17Ci0gICAgaWYgKCF0
cnlUeXBlKFRva2VuOjpUeXBlOjpDb2xvbikpCi0gICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsK
LQotICAgIFBFRUsodG9rZW4pOwotICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBTdGFnZUlu
T3V0U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+
KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNp
YWxpemVkOiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RG
TW92ZSgqcmVzdWx0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UmVnaXN0ZXI6
ICB7Ci0gICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgICAgIHJl
dHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKLSAg
ICB9Ci0gICAgZGVmYXVsdDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50
aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07Ci0gICAgfQotICAgIH0KLX0KLUFTVDo6UXVhbGlmaWVycyBQYXJzZXI6OnBh
cnNlUXVhbGlmaWVycygpCi17Ci0gICAgQVNUOjpRdWFsaWZpZXJzIHF1YWxpZmllcnM7Ci0gICAg
d2hpbGUgKGF1dG8gbmV4dCA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlF1YWxpZmllcikpIHsKLSAg
ICAgICAgYXV0byBuZXh0U3RyaW5nVmlldyA9IG5leHQtPnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0g
ICAgICAgIGlmICgibm9pbnRlcnBvbGF0aW9uIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAg
ICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpOb2ludGVycG9sYXRpb24pOwot
ICAgICAgICBlbHNlIGlmICgibm9wZXJzcGVjdGl2ZSIgPT0gbmV4dFN0cmluZ1ZpZXcpCi0gICAg
ICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Tm9wZXJzcGVjdGl2ZSk7
Ci0gICAgICAgIGVsc2UgaWYgKCJ1bmlmb3JtIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAg
ICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpVbmlmb3JtKTsKLSAgICAgICAg
ZWxzZSBpZiAoImNlbnRyb2lkIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAgIHF1YWxp
ZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpDZW50cm9pZCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgQVNTRVJUKCJzYW1wbGUiID09IG5leHRTdHJpbmdWaWV3KTsKLSAgICAgICAg
ICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpTYW1wbGUpOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBxdWFsaWZpZXJzOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VT
dHJ1Y3R1cmVFbGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVFbGVtZW50LCBFcnJv
cj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVhbGlmaWVy
cyA9IHBhcnNlUXVhbGlmaWVycygpOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09O
U1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRp
Yyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVy
biBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQoeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIFdURk1vdmUo
cXVhbGlmaWVycyksIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCksIFdURk1vdmUoKnNlbWFudGljKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN0
cnVjdHVyZURlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24s
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFN0cnVjdCk7Ci0gICAgQ09OU1VN
RV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFj
a2V0LCBMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAgIEFTVDo6U3RydWN0dXJlRWxlbWVudHMgc3Ry
dWN0dXJlRWxlbWVudHM7Ci0gICAgd2hpbGUgKCFwZWVrVHlwZShUb2tlbjo6VHlwZTo6UmlnaHRD
dXJseUJyYWNrZXQpKSB7Ci0gICAgICAgIFBBUlNFKHN0cnVjdHVyZUVsZW1lbnQsIFN0cnVjdHVy
ZUVsZW1lbnQpOwotICAgICAgICBzdHJ1Y3R1cmVFbGVtZW50cy5hcHBlbmQoV1RGTW92ZSgqc3Ry
dWN0dXJlRWxlbWVudCkpOwotICAgIH0KLQotICAgIGF1dG8gcmlnaHRDdXJseUJyYWNrZXQgPSBt
X2xleGVyLmNvbnN1bWVUb2tlbigpOwotCi0gICAgcmV0dXJuIEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbih7ICpvcmlnaW4sIHJpZ2h0Q3VybHlCcmFja2V0IH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9s
ZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZShzdHJ1Y3R1cmVFbGVtZW50cykpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwg
RW51bSk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotCi0gICAgYXV0byB0
eXBlID0gKFsmXSgpIC0+IEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHsK
LSAgICAgICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbG9uKSkgewotICAgICAgICAgICAg
UEFSU0UocGFyc2VkVHlwZSwgVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcGFy
c2VkVHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgQVNUOjpUeXBlUmVmZXJlbmNl
OjpjcmVhdGUoKm9yaWdpbiwgImludCJfc3RyLCBBU1Q6OlR5cGVBcmd1bWVudHMoKSkgfTsKLSAg
ICB9KSgpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5
cGUuZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1
cmx5QnJhY2tldCk7Ci0KLSAgICBpbnQ2NF90IG5leHRWYWx1ZSA9IDA7Ci0gICAgUEFSU0UoZmly
c3RFbnVtZXJhdGlvbk1lbWJlciwgRW51bWVyYXRpb25NZW1iZXIsIG5leHRWYWx1ZSk7Ci0gICAg
bmV4dFZhbHVlID0gZmlyc3RFbnVtZXJhdGlvbk1lbWJlci0+dmFsdWUoKSArIDE7Ci0KLSAgICBB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiByZXN1bHQoeyB9LCBuYW1lLT5zdHJpbmdWaWV3KG1f
bGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGUpKTsKLSAgICBhdXRvIHN1Y2Nlc3MgPSBy
ZXN1bHQuYWRkKFdURk1vdmUoKmZpcnN0RW51bWVyYXRpb25NZW1iZXIpKTsKLSAgICBpZiAoIXN1
Y2Nlc3MpCi0gICAgICAgIHJldHVybiBmYWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9uIG1lbWJl
ciJfc3RyKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAg
ICAgICAgUEFSU0UobWVtYmVyLCBFbnVtZXJhdGlvbk1lbWJlciwgbmV4dFZhbHVlKTsKLSAgICAg
ICAgbmV4dFZhbHVlID0gbWVtYmVyLT52YWx1ZSgpICsgMTsKLSAgICAgICAgc3VjY2VzcyA9IHJl
c3VsdC5hZGQoV1RGTW92ZSgqbWVtYmVyKSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAg
ICAgICAgIHJldHVybiBmYWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9uIG1lbWJlciJfc3RyKTsK
LSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRDdXJseUJyYWNrZXQsIFJpZ2h0Q3VybHlC
cmFja2V0KTsKLSAgICByZXN1bHQudXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdpbiwgKnJpZ2h0
Q3VybHlCcmFja2V0fSk7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VFbnVtZXJhdGlvbk1lbWJlcihpbnQ2NF90IGRlZmF1bHRWYWx1ZSkgLT4g
RXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9U
WVBFKGlkZW50aWZpZXIsIElkZW50aWZpZXIpOwotICAgIGF1dG8gbmFtZSA9IGlkZW50aWZpZXIt
PnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIGlmICh0cnlUeXBlKFRva2Vu
OjpUeXBlOjpFcXVhbHNTaWduKSkgewotICAgICAgICBQQVJTRShjb25zdGFudEV4cHJlc3Npb24s
IENvbnN0YW50RXhwcmVzc2lvbik7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiB2
YWx1ZTsKLSAgICAgICAgY29uc3RhbnRFeHByZXNzaW9uLT52aXNpdChXVEY6Om1ha2VWaXNpdG9y
KFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAg
dmFsdWUgPSBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZd
KEFTVDo6RmxvYXRMaXRlcmFsJikgewotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJh
bCYpIHsKLSAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgewot
ICAgICAgICB9KSk7Ci0KLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChFcnJvcigiZW51bSBpbml0aWFsaXphdGlvbiB2YWx1ZXMgY2FuIG9ubHkg
YmUgYW4gaW50IG9yIHVpbnQgY29uc3RhbnQuIikpOwotICAgICAgICByZXR1cm4gQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlcigqaWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgKnZhbHVlKTsKLSAgICB9
Ci0gICAgcmV0dXJuIEFTVDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdURk1vdmUo
bmFtZSksIGRlZmF1bHRWYWx1ZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBFcnJv
cj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBOYXRpdmUpOwotICAgIENPTlNVTUVfVFlQ
RShwYXJzZWRUeXBlZGVmLCBUeXBlZGVmKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRp
Zmllcik7Ci0gICAgUEFSU0UodHlwZUFyZ3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0gICAgQ09O
U1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbih7ICpvcmlnaW4sICpzZW1pY29sb24gfSwgbmFtZS0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1lbnRzKSk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZU51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSgpIC0+IEV4cGVjdGVk
PEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLCBFcnJvcj4KLXsKLSAgICBDT05TVU1F
X1RZUEUob3JpZ2luLCBOdW1UaHJlYWRzKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhl
c2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgYXV0byB3aWR0aCA9IGNvbnN1bWVOb25OZWdh
dGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCh3aWR0aC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShjb21tYSwg
Q29tbWEpOwotCi0gICAgYXV0byBoZWlnaHQgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExp
dGVyYWwoKTsKLSAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGhlaWdodC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShzZWNvbmRDb21tYSwgQ29tbWEp
OwotCi0gICAgYXV0byBkZXB0aCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgp
OwotICAgIGlmICghZGVwdGgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChkZXB0aC5l
cnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVu
dGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSh7
ICpvcmlnaW4sICpyaWdodFBhcmVudGhlc2lzIH0sICp3aWR0aCwgKmhlaWdodCwgKmRlcHRoKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQXR0cmlidXRlQmxvY2soKSAtPiBFeHBlY3RlZDxBU1Q6
OkF0dHJpYnV0ZUJsb2NrLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUobGVmdFNxdWFyZUJy
YWNrZXQsIExlZnRTcXVhcmVCcmFja2V0KTsKLQotICAgIEFTVDo6QXR0cmlidXRlQmxvY2sgcmVz
dWx0OwotCi0gICAgd2hpbGUgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNr
ZXQpKSB7Ci0gICAgICAgIFBBUlNFKG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwgTnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpu
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92
ZShyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQYXJhbWV0ZXIoKSAtPiBFeHBlY3Rl
ZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIGF1dG8gc3RhcnRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgQVNUOjpRdWFsaWZpZXJz
IHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsK
LQotICAgIFN0cmluZyBuYW1lOwotICAgIGlmIChhdXRvIHRva2VuID0gdHJ5VHlwZShUb2tlbjo6
VHlwZTo6SWRlbnRpZmllcikpCi0gICAgICAgIG5hbWUgPSB0b2tlbi0+c3RyaW5nVmlldyhtX2xl
eGVyKS50b1N0cmluZygpOwotCi0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAg
IGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIHJl
dHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24oeyBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBt
X2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUocXVhbGlmaWVycyksIHsgV1RGTW92ZSgqdHlw
ZSkgfSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBudWxscHRyKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlUGFyYW1ldGVycygpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbnMsIEVycm9yPgotewotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFy
YW1ldGVyczsKLQotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRo
ZXNpcyk7Ci0KLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcykp
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwotCi0gICAgUEFSU0UoZmlyc3RQ
YXJhbWV0ZXIsIFBhcmFtZXRlcik7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKmZpcnN0UGFyYW1ldGVyKSkpOwot
Ci0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJT
RShwYXJhbWV0ZXIsIFBhcmFtZXRlcik7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpwYXJhbWV0ZXIpKSk7
Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50
aGVzaXMpOwotCi0gICAgcmV0dXJuIFdURk1vdmUocGFyYW1ldGVycyk7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBQQVJTRShmdW5jdGlvbkRlY2xhcmF0aW9uLCBGdW5j
dGlvbkRlY2xhcmF0aW9uKTsKLSAgICBQQVJTRShibG9jaywgQmxvY2spOwotICAgIHJldHVybiBB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbihXVEZNb3ZlKCpmdW5jdGlvbkRlY2xhcmF0aW9uKSwgV1RG
TW92ZSgqYmxvY2spKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVj
bGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgot
ewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNFKGF0dHJpYnV0ZUJsb2NrLCBBdHRyaWJ1
dGVCbG9jayk7Ci0gICAgQ09OU1VNRV9UWVBFKGNvbXB1dGUsIENvbXB1dGUpOwotICAgIFBBUlNF
KHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQ
QVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50
aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgp
OwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVy
Lm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoKmF0dHJpYnV0ZUJsb2NrKSwgQVNUOjpFbnRyeVBvaW50
VHlwZTo6Q29tcHV0ZSwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNP
cGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVmVydGV4T3JGcmFnbWVu
dEZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24sIEVycm9yPgotewotICAgIGF1dG8gZW50cnlQb2ludCA9IGNvbnN1bWVUeXBlczxUb2tlbjo6
VHlwZTo6VmVydGV4LCBUb2tlbjo6VHlwZTo6RnJhZ21lbnQ+KCk7Ci0gICAgaWYgKCFlbnRyeVBv
aW50KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZW50cnlQb2ludC5lcnJvcigpKTsK
LSAgICBhdXRvIGVudHJ5UG9pbnRUeXBlID0gKGVudHJ5UG9pbnQtPnR5cGUgPT0gVG9rZW46OlR5
cGU6OlZlcnRleCkgPyBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXggOiBBU1Q6OkVudHJ5UG9p
bnRUeXBlOjpGcmFnbWVudDsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVf
VFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJz
KTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQg
PSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0g
ZmFsc2U7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IGVudHJ5UG9pbnQt
PnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIGVu
dHJ5UG9pbnRUeXBlLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50
b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09w
ZXJhdG9yLCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VSZWd1bGFyRnVuY3Rpb25E
ZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBh
dXRvIG5hbWUgPSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6OklkZW50aWZpZXIsIFRva2VuOjpU
eXBlOjpPcGVyYXRvck5hbWU+KCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsKLSAgICBhdXRvIGlzT3BlcmF0b3IgPSBuYW1lLT50
eXBlID09IFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWU7Ci0KLSAgICBQQVJTRShwYXJhbWV0ZXJz
LCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0
byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgcmV0dXJu
IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zm
c2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0
eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJh
bWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3Rl
ZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShv
cmlnaW4sIE9wZXJhdG9yKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBQQVJTRShwYXJh
bWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0g
ICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAg
Ym9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNl
KCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCAib3BlcmF0b3IgY2FzdCJf
c3RyLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9y
LCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVL
KHRva2VuKTsKLSAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6T3BlcmF0b3I6Ci0gICAgICAgIHJldHVybiBwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJh
dGlvbigpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlZlcnRleDoKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuIHBhcnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0
aW9uRGVjbGFyYXRpb24oKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tl
dDoKLSAgICAgICAgcmV0dXJuIHBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gcGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlv
bigpOwotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG5hdGl2ZSwgTmF0aXZlKTsKLSAgICBQQVJTRShmdW5jdGlv
bkRlY2xhcmF0aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBDT05TVU1FX1RZUEUoc2Vt
aWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihXVEZNb3ZlKCpmdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZUJsb2NrKCkgLT4gRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+Ci17Ci0gICAgQ09O
U1VNRV9UWVBFKG9yaWdpbiwgTGVmdEN1cmx5QnJhY2tldCk7Ci0gICAgUEFSU0UocmVzdWx0LCBC
bG9ja0JvZHkpOwotICAgIENPTlNVTUVfVFlQRShyaWdodEN1cmx5QnJhY2tldCwgUmlnaHRDdXJs
eUJyYWNrZXQpOwotICAgIHJlc3VsdC0+dXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdpbiwgKnJp
Z2h0Q3VybHlCcmFja2V0IH0pOwotICAgIHJldHVybiBXVEZNb3ZlKCpyZXN1bHQpOwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VCbG9ja0JvZHkoKSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJv
cj4KLXsKLSAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQo
KTsKLQotICAgIEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwotICAgIHdoaWxlICghcGVla1R5
cGVzPFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCwgVG9rZW46OlR5cGU6OkNhc2UsIFRv
a2VuOjpUeXBlOjpEZWZhdWx0PigpKSB7Ci0gICAgICAgIFBBUlNFKHN0YXRlbWVudCwgU3RhdGVt
ZW50KTsKLSAgICAgICAgc3RhdGVtZW50cy5hcHBlbmQoV1RGTW92ZSgqc3RhdGVtZW50KSk7Ci0g
ICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgp
OwotCi0gICAgcmV0dXJuIEFTVDo6QmxvY2soeyBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xl
eGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoc3RhdGVtZW50cykpOwotfQotCi1hdXRvIFBhcnNl
cjo6cGFyc2VJZlN0YXRlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6SWZTdGF0ZW1lbnQsIEVycm9y
PgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIElmKTsKLSAgICBDT05TVU1FX1RZUEUobGVm
dFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGNvbmRpdGlvbmFsLCBF
eHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJl
bnRoZXNpcyk7Ci0gICAgUEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBU1Q6OlN0YXRlbWVudD4gZWxzZUJvZHkobnVsbHB0cik7Ci0gICAgaWYgKHRyeVR5cGUo
VG9rZW46OlR5cGU6OkVsc2UpKSB7Ci0gICAgICAgIFBBUlNFKHBhcnNlZEVsc2VCb2R5LCBTdGF0
ZW1lbnQpOwotICAgICAgICBlbHNlQm9keSA9ICgqcGFyc2VkRWxzZUJvZHkpLm1vdmVUb1VuaXF1
ZVB0cigpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3Rh
cnRPZmZzZXQoKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2Fz
dEFyZ3VtZW50czsKLSAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpjb25kaXRpb25h
bCkpOwotICAgIGF1dG8gYm9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Np
b24+KFRva2VuKCpvcmlnaW4pLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsK
LSAgICByZXR1cm4gQVNUOjpJZlN0YXRlbWVudCh7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5k
T2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoYm9vbENhc3QpLCBXVEZNb3Zl
KCpib2R5KSwgV1RGTW92ZShlbHNlQm9keSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTd2l0
Y2hTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRlbWVudCwgRXJyb3I+Ci17
Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgU3dpdGNoKTsKLSAgICBDT05TVU1FX1RZUEUobGVm
dFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKHZhbHVlLCBFeHByZXNz
aW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNp
cyk7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRDdXJseUJyYWNrZXQsIExlZnRDdXJseUJyYWNrZXQp
OwotCi0gICAgVmVjdG9yPEFTVDo6U3dpdGNoQ2FzZT4gc3dpdGNoQ2FzZXM7Ci0gICAgUEVFSyhu
ZXh0VG9rZW4pOwotICAgIHdoaWxlIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlJp
Z2h0Q3VybHlCcmFja2V0KSB7Ci0gICAgICAgIFBBUlNFKHN3aXRjaENhc2UsIFN3aXRjaENhc2Up
OwotICAgICAgICBzd2l0Y2hDYXNlcy5hcHBlbmQoV1RGTW92ZSgqc3dpdGNoQ2FzZSkpOwotICAg
ICAgICBQRUVLKG5leHRUb2tlbkluTG9vcCk7Ci0gICAgICAgIG5leHRUb2tlbiA9IG5leHRUb2tl
bkluTG9vcDsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZFRva2VuID0gbV9sZXhlci5jb25zdW1lVG9r
ZW4oKTsKLQotICAgIHJldHVybiBBU1Q6OlN3aXRjaFN0YXRlbWVudCh7ICpvcmlnaW4sIGVuZFRv
a2VuIH0sIFdURk1vdmUoKnZhbHVlKSwgV1RGTW92ZShzd2l0Y2hDYXNlcykpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VTd2l0Y2hDYXNlKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hDYXNlLCBF
cnJvcj4KLXsKLSAgICBhdXRvIG9yaWdpbiA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6Q2Fz
ZSwgVG9rZW46OlR5cGU6OkRlZmF1bHQ+KCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChvcmlnaW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKG9yaWdp
bi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNhc2U6IHsKLSAgICAgICAgUEFSU0Uo
dmFsdWUsIENvbnN0YW50RXhwcmVzc2lvbik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShjb2xvbiwg
Q29sb24pOwotCi0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAgICAgIHJl
dHVybiBBU1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2Rl
TG9jYXRpb24oKX0sIFdURk1vdmUoKnZhbHVlKSwgV1RGTW92ZSgqYmxvY2spKTsKLSAgICB9Ci0g
ICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQob3JpZ2luLT50eXBlID09IFRva2VuOjpUeXBl
OjpEZWZhdWx0KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKGNvbG9uLCBDb2xvbik7Ci0KLSAgICAg
ICAgUEFSU0UoYmxvY2ssIEJsb2NrQm9keSk7Ci0KLSAgICAgICAgcmV0dXJuIEFTVDo6U3dpdGNo
Q2FzZSh7IG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigpfSwgc3Rk
OjpudWxsb3B0LCBXVEZNb3ZlKCpibG9jaykpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZUZvckxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkZvckxvb3AsIEVycm9yPgotewot
ICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIEZvcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJl
bnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gcGFyc2VSZW1haW5kZXIgPSBb
Jl0oVW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiYmIGluaXRpYWxpemF0aW9uKSAtPiBFeHBlY3Rl
ZDxBU1Q6OkZvckxvb3AsIEVycm9yPiB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24s
IFNlbWljb2xvbik7Ci0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4g
Y29uZGl0aW9uKG51bGxwdHIpOwotICAgICAgICBpZiAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OlNl
bWljb2xvbikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJl
c3Npb24oKSkKLSAgICAgICAgICAgICAgICBjb25kaXRpb24gPSAoKmV4cHJlc3Npb24pLm1vdmVU
b1VuaXF1ZVB0cigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09OU1VNRV9U
WVBFKHNlY29uZFNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IGluY3JlbWVudChudWxscHRyKTsKLSAgICAg
ICAgaWYgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpKQotICAgICAgICAg
ICAgICAgIGluY3JlbWVudCA9ICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJl
c3Npb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNp
cywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBQQVJTRShib2R5LCBT
dGF0ZW1lbnQpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5jb2RlTG9j
YXRpb24sICgqYm9keSktPmNvZGVMb2NhdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6Rm9y
TG9vcChsb2NhdGlvbiwgV1RGTW92ZShpbml0aWFsaXphdGlvbiksIFdURk1vdmUoY29uZGl0aW9u
KSwgV1RGTW92ZShpbmNyZW1lbnQpLCBXVEZNb3ZlKCpib2R5KSk7Ci0gICAgfTsKLQotICAgIGF1
dG8gdmFyaWFibGVEZWNsYXJhdGlvbnMgPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBFcnJvcj4+KFsmXSgpIHsKLSAgICAgICAg
cmV0dXJuIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMoKTsKLSAgICB9KTsKLSAgICBpZiAodmFy
aWFibGVEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiBk
ZWNsYXJhdGlvblN0YXRlbWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlUmVtYWluZGVyKFdURk1vdmUoZGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAg
ICB9Ci0KLSAgICBQQVJTRShlZmZlY3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxFeHByZXNzaW9u
KTsKLQotICAgIHJldHVybiBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNz
aW9uKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVdoaWxlTG9vcCgpIC0+IEV4cGVjdGVkPEFT
VDo6V2hpbGVMb29wLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBXaGlsZSk7
Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRShjb25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0
UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVu
dCk7Ci0KLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5jb2RlTG9jYXRpb24sICAo
KmJvZHkpLT5jb2RlTG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIEFTVDo6V2hpbGVMb29wKGxvY2F0
aW9uLCBXVEZNb3ZlKCpjb25kaXRpb25hbCksIFdURk1vdmUoKmJvZHkpKTsKLX0KLQotYXV0byBQ
YXJzZXI6OnBhcnNlRG9XaGlsZUxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkRvV2hpbGVMb29wLCBF
cnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBEbyk7Ci0gICAgUEFSU0UoYm9keSwg
U3RhdGVtZW50KTsKLSAgICBDT05TVU1FX1RZUEUod2hpbGVLZXl3b3JkLCBXaGlsZSk7Ci0gICAg
Q09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAgICBQQVJT
RShjb25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50
aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNl
bWljb2xvbik7Ci0KLSAgICByZXR1cm4gQVNUOjpEb1doaWxlTG9vcCh7ICpvcmlnaW4sICpzZW1p
Y29sb259LCBXVEZNb3ZlKCpib2R5KSwgV1RGTW92ZSgqY29uZGl0aW9uYWwpKTsKLX0KLQotYXV0
byBQYXJzZXI6OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihSZWY8QVNUOjpVbm5hbWVkVHlwZT4m
JiB0eXBlKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPgotewot
ICAgIFBFRUsob3JpZ2luKTsKLQotICAgIGF1dG8gcXVhbGlmaWVycyA9IHBhcnNlUXVhbGlmaWVy
cygpOwotCi0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHNl
bWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9u
PiBpbml0aWFsaXplciA9IG51bGxwdHI7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkVx
dWFsc1NpZ24pKSB7Ci0gICAgICAgIFBBUlNFKGluaXRpYWxpemluZ0V4cHJlc3Npb24sIFBvc3Np
YmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAgaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXpp
bmdFeHByZXNzaW9uLnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotCi0gICAgYXV0
byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIHJldHVybiBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCB7IFdURk1vdmUo
dHlwZSkgfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpz
ZW1hbnRpYyksIFdURk1vdmUoaW5pdGlhbGl6ZXIpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
VmFyaWFibGVEZWNsYXJhdGlvbnMoKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRSh0
eXBlLCBUeXBlKTsKLQotICAgIGF1dG8gZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uID0gcGFyc2VW
YXJpYWJsZURlY2xhcmF0aW9uKHR5cGUtPmNvcHlSZWYoKSk7Ci0gICAgaWYgKCFmaXJzdFZhcmlh
YmxlRGVjbGFyYXRpb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmaXJzdFZhcmlh
YmxlRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbj4+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKG1ha2VVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpmaXJzdFZhcmlhYmxlRGVjbGFy
YXRpb24pKSk7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0g
ICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlv
bih0eXBlLT5jb3B5UmVmKCkpOwotICAgICAgICBpZiAoIXZhcmlhYmxlRGVjbGFyYXRpb24pCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFyaWFibGVEZWNsYXJhdGlvbi5lcnJv
cigpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbj4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbikpKTsKLSAgICB9Ci0KLSAg
ICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgcmV0
dXJuIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoeyBvcmlnaW4tPnN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHJlc3VsdCkp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAgICBzd2l0
Y2ggKHRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdEN1cmx5QnJhY2tl
dDogewotICAgICAgICBQQVJTRShibG9jaywgQmxvY2spOwotICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6QmxvY2s+KFdURk1vdmUoKmJsb2NrKSkgfTsKLSAgICB9Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6SWY6IHsKLSAgICAgICAgUEFSU0UoaWZTdGF0ZW1lbnQsIElmU3RhdGVt
ZW50KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OklmU3RhdGVtZW50PihX
VEZNb3ZlKCppZlN0YXRlbWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlN3
aXRjaDogewotICAgICAgICBQQVJTRShzd2l0Y2hTdGF0ZW1lbnQsIFN3aXRjaFN0YXRlbWVudCk7
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KFdU
Rk1vdmUoKnN3aXRjaFN0YXRlbWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OkZvcjogewotICAgICAgICBQQVJTRShmb3JMb29wLCBGb3JMb29wKTsKLSAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZvckxvb3A+KFdURk1vdmUoKmZvckxvb3ApKSB9OwotICAg
IH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpXaGlsZTogewotICAgICAgICBQQVJTRSh3aGlsZUxv
b3AsIFdoaWxlTG9vcCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpXaGls
ZUxvb3A+KFdURk1vdmUoKndoaWxlTG9vcCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5
cGU6OkRvOiB7Ci0gICAgICAgIFBBUlNFKGRvV2hpbGVMb29wLCBEb1doaWxlTG9vcCk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpEb1doaWxlTG9vcD4oV1RGTW92ZSgqZG9X
aGlsZUxvb3ApKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpCcmVhazogewotICAg
ICAgICBhdXRvIGJyZWFrVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAgICBD
T05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGJyZWFrT2Jq
ZWN0ID0gQVNUOjpCcmVhayhXVEZNb3ZlKGJyZWFrVG9rZW4pKTsKLSAgICAgICAgcmV0dXJuIHsg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkJyZWFrPihXVEZNb3ZlKGJyZWFrT2JqZWN0KSkgfTsKLSAgICB9
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Q29udGludWU6IHsKLSAgICAgICAgYXV0byBjb250aW51
ZVRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNl
bWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byBjb250aW51ZU9iamVjdCA9IEFTVDo6
Q29udGludWUoV1RGTW92ZShjb250aW51ZVRva2VuKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VV
bmlxdWVSZWY8QVNUOjpDb250aW51ZT4oV1RGTW92ZShjb250aW51ZU9iamVjdCkpIH07Ci0gICAg
fQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZhbGx0aHJvdWdoOiB7Ci0gICAgICAgIGF1dG8gZmFs
bHRocm91Z2hUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENPTlNVTUVf
VFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gZmFsbHRocm91Z2hPYmpl
Y3QgPSBBU1Q6OkZhbGx0aHJvdWdoKFdURk1vdmUoZmFsbHRocm91Z2hUb2tlbikpOwotICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RmFsbHRocm91Z2g+KFdURk1vdmUoZmFsbHRo
cm91Z2hPYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSZXR1cm46IHsK
LSAgICAgICAgYXV0byByZXR1cm5Ub2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAg
ICAgIGlmIChhdXRvIHNlbWljb2xvbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlNlbWljb2xvbikp
IHsKLSAgICAgICAgICAgIGF1dG8gcmV0dXJuT2JqZWN0ID0gQVNUOjpSZXR1cm4oV1RGTW92ZShy
ZXR1cm5Ub2tlbiksIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlJldHVybj4oV1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgICAgICB9Ci0gICAg
ICAgIFBBUlNFKGV4cHJlc3Npb24sIEV4cHJlc3Npb24pOwotICAgICAgICBDT05TVU1FX1RZUEUo
ZmluYWxTZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gcmV0dXJuT2JqZWN0ID0g
QVNUOjpSZXR1cm4oV1RGTW92ZShyZXR1cm5Ub2tlbiksICgqZXhwcmVzc2lvbikubW92ZVRvVW5p
cXVlUHRyKCkpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6UmV0dXJuPihX
VEZNb3ZlKHJldHVybk9iamVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNv
bnN0YW50OgotICAgIGNhc2UgVG9rZW46OlR5cGU6OkRldmljZToKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpUaHJlYWRncm91cDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWQ6IHsKLSAgICAg
ICAgUEFSU0UodmFyaWFibGVEZWNsYXJhdGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAg
ICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZN
b3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5
cGU6OklkZW50aWZpZXI6IHsKLSAgICAgICAgUEVFS19GVVJUSEVSKG5leHRUb2tlbik7Ci0gICAg
ICAgIHN3aXRjaCAobmV4dFRva2VuLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OklkZW50aWZpZXI6Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbjoKLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjoKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
UXVhbGlmaWVyOiB7Ci0gICAgICAgICAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFy
aWFibGVEZWNsYXJhdGlvbnMpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwg
U2VtaWNvbG9uKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMp
KSB9OwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBi
YWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJv
cj4+KFsmXSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiB7
Ci0gICAgICAgICAgICBQQVJTRShyZXN1bHQsIEVmZmVjdGZ1bEV4cHJlc3Npb24pOwotICAgICAg
ICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoZWZmZWN0ZnVsRXhwcmVzc2lv
bikKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNzaW9uKTsKLSAg
ICB9Ci0KLSAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNsYXJhdGlv
bnMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZN
b3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUVm
ZmVjdGZ1bEV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+
LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0gICAgaWYgKG9yaWdpbi0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6U2VtaWNvbG9uKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFT
VDo6QmxvY2s+KCpvcmlnaW4sIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+PigpKSB9
OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsK
LSAgICBQQVJTRShlZmZlY3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxBc3NpZ25tZW50KTsKLSAg
ICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZWZmZWN0ZnVsRXhwcmVzc2lvbikpOwotCi0g
ICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJTRShl
eHByZXNzaW9uLCBFZmZlY3RmdWxBc3NpZ25tZW50KTsKLSAgICAgICAgZXhwcmVzc2lvbnMuYXBw
ZW5kKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBpZiAoZXhwcmVzc2lvbnMu
c2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3Rm
dWxFeHByZXNzaW9uU3RhdGVtZW50PihXVEZNb3ZlKGV4cHJlc3Npb25zWzBdKSkgfTsKLSAgICB1
bnNpZ25lZCBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIENv
ZGVMb2NhdGlvbiBsb2NhdGlvbihvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9s
ZXhlci5uYW1lU3BhY2UoKSk7Ci0gICAgYXV0byBjb21tYUV4cHJlc3Npb24gPSBtYWtlVW5pcXVl
UmVmPEFTVDo6Q29tbWFFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykp
OwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50PihXVEZNb3ZlKGNvbW1hRXhwcmVzc2lvbikpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZUVmZmVjdGZ1bEFzc2lnbm1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgYm9vbCBpc0VmZmVj
dGZ1bCA9IGZhbHNlOwotICAgIFBBUlNFKGV4cHJlc3Npb24sIFBvc3NpYmxlUHJlZml4LCAmaXNF
ZmZlY3RmdWwpOwotCi0gICAgaWYgKCFpc0VmZmVjdGZ1bCB8fCBwZWVrVHlwZXM8Ci0gICAgICAg
IFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1c0VxdWFs
cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpYb3JFcXVh
bHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHMKLSAgICA+KCkpIHsKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRlQXNzaWdubWVudChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGV4cHJlc3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUxpbWl0ZWRTdWZm
aXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBTdWZm
aXhFeHByZXNzaW9uCi17Ci0gICAgYXV0byB0eXBlID0gY29uc3VtZVR5cGVzPAotICAgICAgICBU
b2tlbjo6VHlwZTo6RnVsbFN0b3AsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBcnJvdywKLSAgICAg
ICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdHlwZSkKLSAg
ICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsK
LQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxT
dG9wOiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBl
OjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0
dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZp
ZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6
RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6QXJyb3c6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5
cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0g
ICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFs
c2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlv
bigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VV
bmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgbWFrZVVuaXF1ZVJlZjxBU1Q6
OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKSwgaWRl
bnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAgfQot
ICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46OlR5cGU6
OkxlZnRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgIHJldHVybiBT
dWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIGlmIChh
dXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNx
dWFyZUJyYWNrZXQpKSB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlv
dXMtPmNvZGVMb2NhdGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Npb24+
KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikpLCB0cnVl
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHBy
ZXZpb3VzKSwgZmFsc2UpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN1
ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IFN1
ZmZpeEV4cHJlc3Npb24KLXsKLSAgICBhdXRvIHN1ZmZpeCA9IGNvbnN1bWVUeXBlczwKLSAgICAg
ICAgVG9rZW46OlR5cGU6OkZ1bGxTdG9wLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXJyb3csCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlBsdXNQbHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNNaW51cz4oKTsKLSAgICBp
ZiAoIXN1ZmZpeCkKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2
aW91cyksIGZhbHNlKTsKLQotICAgIHN3aXRjaCAoc3VmZml4LT50eXBlKSB7Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6RnVsbFN0b3A6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3Vt
ZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIp
Ci0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwg
ZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2Nh
dGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1h
a2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91
cyksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRydWUpOwot
ICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpBcnJvdzogewotICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlm
ICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1v
dmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2
aW91cy0+Y29kZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZp
eEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBt
YWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihXVEZNb3ZlKCpzdWZmaXgp
LCBXVEZNb3ZlKHByZXZpb3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9T
dHJpbmcoKSksIHRydWUpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJl
QnJhY2tldDogewotICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKTsK
LSAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJl
c3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgaWYgKGF1dG8gcmlnaHRT
cXVhcmVCcmFja2V0ID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tl
dCkpIHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxv
Y2F0aW9uKCksICpyaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgcmV0dXJuIFN1ZmZp
eEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4obG9jYXRpb24s
IFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpleHByZXNzaW9uKSksIHRydWUpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBm
YWxzZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7Ci0gICAgICAg
IENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZmaXgp
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3Vt
ZW50cykpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+b2xk
VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdU
Rk1vdmUocmVzdWx0KSwgdHJ1ZSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNT
RVJUKHN1ZmZpeC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXNNaW51cyk7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZmaXgpOwot
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBWZWN0b3I8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxB
cmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAg
IHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhw
cmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50
cykpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+b2xkVmFy
aWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1v
dmUocmVzdWx0KSwgdHJ1ZSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
RXhwcmVzc2lvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBQQVJTRShmaXJzdCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAg
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0gICAgdW5z
aWduZWQgc3RhcnRPZmZzZXQgPSAoKmZpcnN0KS0+Y29kZUxvY2F0aW9uKCkuc3RhcnRPZmZzZXQo
KTsKLSAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZmlyc3QpKTsKLQotICAgIHdoaWxl
ICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lv
biwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgICAgICBleHByZXNzaW9ucy5hcHBl
bmQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIH0KLQotICAgIGlmIChleHByZXNzaW9ucy5z
aXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoZXhwcmVzc2lvbnNbMF0pOwotICAg
IGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLSAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3Bh
Y2UoKSk7Ci0gICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6Y29t
cGxldGVUZXJuYXJ5Q29uZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmVk
aWNhdGUpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsK
LSAgICBDT05TVU1FX1RZUEUocXVlc3Rpb25NYXJrLCBRdWVzdGlvbk1hcmspOwotICAgIFBBUlNF
KGJvZHlFeHByZXNzaW9uLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUoY29sb24sIENv
bG9uKTsKLSAgICBQQVJTRShlbHNlRXhwcmVzc2lvbiwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9u
YWwpOwotCi0gICAgQ29kZUxvY2F0aW9uIHByZWRpY2F0ZUxvY2F0aW9uID0gcHJlZGljYXRlLT5j
b2RlTG9jYXRpb24oKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNh
c3RBcmd1bWVudHM7Ci0gICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVkaWNhdGUp
KTsKLSAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9u
PihwcmVkaWNhdGVMb2NhdGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJndW1lbnRzKSk7
Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZWRpY2F0ZUxvY2F0aW9uLCAoKmVsc2VFeHBy
ZXNzaW9uKS0+Y29kZUxvY2F0aW9uKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpUZXJuYXJ5RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoYm9vbENhc3QpLCBXVEZNb3Zl
KCpib2R5RXhwcmVzc2lvbiksIFdURk1vdmUoKmVsc2VFeHByZXNzaW9uKSkgfTsKLX0KLQotYXV0
byBQYXJzZXI6OmNvbXBsZXRlQXNzaWdubWVudChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYm
IGxlZnQpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsK
LSAgICBhdXRvIGFzc2lnbm1lbnRPcGVyYXRvciA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OkVxdWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpU
aW1lc0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAg
VG9rZW46OlR5cGU6Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywK
LSAgICAgICAgVG9rZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9y
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAg
VG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscz4oKTsKLSAgICBpZiAoIWFzc2lnbm1lbnRPcGVy
YXRvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFzc2lnbm1lbnRPcGVyYXRvci5l
cnJvcigpKTsKLQotICAgIFBBUlNFKHJpZ2h0LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7
Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uID0geyBsZWZ0LT5jb2RlTG9jYXRpb24oKSwgKCpy
aWdodCktPmNvZGVMb2NhdGlvbigpIH07Ci0KLSAgICBpZiAoYXNzaWdubWVudE9wZXJhdG9yLT50
eXBlID09IFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKQotICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQp
LCBXVEZNb3ZlKCpyaWdodCkpfTsKLQotICAgIFN0cmluZyBuYW1lOwotICAgIHN3aXRjaCAoYXNz
aWdubWVudE9wZXJhdG9yLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c0VxdWFs
czoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcisiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3It
Il9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxz
OgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yKiJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3Iv
Il9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1vZEVxdWFsczoK
LSAgICAgICAgbmFtZSA9ICJvcGVyYXRvciUiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yXiJfc3Ry
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpBbmRFcXVhbHM6Ci0gICAg
ICAgIG5hbWUgPSAib3BlcmF0b3ImIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9r
ZW46OlR5cGU6Ok9yRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yfCJfc3RyOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzOgotICAg
ICAgICBuYW1lID0gIm9wZXJhdG9yPj4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6TGVmdFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcjw8Il9zdHI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpKTsK
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0g
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsK
LSAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwotICAgIHJlc3VsdC0+
c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUobmFtZSksIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICBy
ZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVyZW5jZSgp
KTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9zc2libGVQ
cmVmaXgpOwotCi0gICAgaWYgKHBlZWtUeXBlczxUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51
c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6RGl2aWRlRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5k
RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpSaWdodFNoaWZ0RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1
YWxzPigpKSB7Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92ZSgqZXhw
cmVzc2lvbikpOwotICAgIH0KLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlU2hp
ZnQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNz
aW9uID0gY29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAg
ICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNz
aW9uLmVycm9yKCkpOwotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVBZGQoV1RG
TW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0g
Y29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqZXhwcmVz
c2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQb3Nz
aWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlm
ICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24u
ZXJyb3IoKSk7Ci0KLSAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgaWYgKG5leHRUb2tlbi0+dHlw
ZSA9PSBUb2tlbjo6VHlwZTo6UXVlc3Rpb25NYXJrKQotICAgICAgICByZXR1cm4gY29tcGxldGVU
ZXJuYXJ5Q29uZGl0aW9uYWwoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIHJldHVybiBleHBy
ZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVy
YXRpb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17
Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJh
dGlvbik7Ci0gICAgcmV0dXJuIGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9u
KFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBv
c3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYm
IHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
Ci17Ci0gICAgd2hpbGUgKGF1dG8gbG9naWNhbEJpbmFyeU9wZXJhdGlvbiA9IHRyeVR5cGVzPAot
ICAgICAgICBUb2tlbjo6VHlwZTo6T3JPciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZEFuZCwK
LSAgICAgICAgVG9rZW46OlR5cGU6Ok9yLAotICAgICAgICBUb2tlbjo6VHlwZTo6WG9yLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6QW5kCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0
LCBQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24pOwotICAgICAgICBDb2RlTG9jYXRp
b24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9jYXRp
b24oKSk7Ci0KLSAgICAgICAgc3dpdGNoIChsb2dpY2FsQmluYXJ5T3BlcmF0aW9uLT50eXBlKSB7
Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9yT3I6Ci0gICAgICAgICAgICBwcmV2aW91cyA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFTVDo6TG9n
aWNhbEV4cHJlc3Npb246OlR5cGU6Ok9yLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqbmV4
dCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkFuZEFu
ZDoKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kLCBXVEZN
b3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9yOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRz
LmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcnwiX3N0ciwgV1RG
TW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpYb3I6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1
bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVu
dHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yXiJfc3RyLCBX
VEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChsb2dpY2FsQmluYXJ5T3BlcmF0
aW9uLT50eXBlID09IFRva2VuOjpUeXBlOjpBbmQpOwotICAgICAgICAgICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFy
Z3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgY2FsbEFyZ3Vt
ZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ImIl9zdHIs
IFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB7IFdURk1vdmUocHJldmlvdXMpIH07Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbigp
IC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQ
QVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVTaGlmdCk7Ci0gICAgcmV0dXJuIGNvbXBsZXRl
UG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKnBhcnNlZFByZXZpb3Vz
KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9w
ZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBFeHBlY3Rl
ZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8g
cmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbiA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlw
ZTo6TGVzc1RoYW5TaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6TGVzc1RoYW5PckVxdWFsVG8sCi0gICAgICAgIFRva2VuOjpU
eXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbywKLSAgICAgICAgVG9rZW46OlR5cGU6OkVxdWFsQ29t
cGFyaXNvbiwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok5vdEVxdWFsCi0gICAgICAgID4oKSkgewot
ICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZVNoaWZ0KTsKLSAgICAgICAgQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9u
KCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFy
Z3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykp
OwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAg
ICAgc3dpdGNoIChyZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8Il9z
dHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduOiB7Ci0gICAgICAg
ICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRp
b24sICJvcGVyYXRvcj4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhhbk9y
RXF1YWxUbzogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2Fs
bEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1
bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj49
Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29uOiB7Ci0gICAg
ICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9j
YXRpb24sICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAg
QVNTRVJUKHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok5v
dEVxdWFsKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1l
bnRzKSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2Fs
Tm90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92
ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlU2hpZnQoKSAtPiBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0Uo
cGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlQWRkKTsKLSAgICByZXR1cm4gY29tcGxldGVQb3NzaWJs
ZVNoaWZ0KFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21w
bGV0ZVBvc3NpYmxlU2hpZnQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykg
LT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdo
aWxlIChhdXRvIHNoaWZ0ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hp
ZnQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0Ci0gICAgICAgID4oKSkgewotICAg
ICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZUFkZCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2Nh
dGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsK
LQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVu
dHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAg
ICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3
aXRjaCAoc2hpZnQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0
OiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVz
c2lvbj4obG9jYXRpb24sICJvcGVyYXRvcjw8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAg
ICAgICAgICAgQVNTRVJUKHNoaWZ0LT50eXBlID09IFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0KTsK
LSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9u
Pihsb2NhdGlvbiwgIm9wZXJhdG9yPj4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZUFk
ZCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAg
ICBQQVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVNdWx0aXBseSk7Ci0gICAgcmV0dXJuIGNv
bXBsZXRlUG9zc2libGVBZGQoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQ
YXJzZXI6OmNvbXBsZXRlUG9zc2libGVBZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBw
cmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgot
ewotICAgIHdoaWxlIChhdXRvIGFkZCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6
UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzCi0gICAgICAgID4oKSkgewotICAgICAg
ICBQQVJTRShuZXh0LCBQb3NzaWJsZU11bHRpcGx5KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkp
OwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3Vt
ZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwot
ICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAg
c3dpdGNoIChhZGQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1czogewot
ICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+
KGxvY2F0aW9uLCAib3BlcmF0b3IrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAg
ICAgQVNTRVJUKGFkZC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXMpOwotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3ItIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHBy
ZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVNdWx0aXBseSgpIC0+IEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShw
YXJzZWRQcmV2aW91cywgUG9zc2libGVQcmVmaXgpOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3Np
YmxlTXVsdGlwbHkoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6
OmNvbXBsZXRlUG9zc2libGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHBy
ZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17
Ci0gICAgd2hpbGUgKGF1dG8gbXVsdGlwbHkgPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlN0YXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGUsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpNb2QKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlUHJl
Zml4KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRp
b24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50
cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVu
ZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAgc3dpdGNoIChtdWx0aXBseS0+dHlwZSkgewot
ICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTdGFyOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcioi
X3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpEaXZpZGU6IHsKLSAgICAgICAgICAgIHBy
ZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9w
ZXJhdG9yLyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChtdWx0
aXBseS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TW9kKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yJSJf
c3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmlzRWZmZWN0ZnVsKSAt
PiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgaWYg
KGF1dG8gcHJlZml4ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzUGx1cywK
LSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzTWludXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQ
bHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpU
aWxkZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpBbmQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBdCwKLSAgICAgICAgVG9rZW46
OlR5cGU6OlN0YXIKLSAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVQcmVm
aXgpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKnByZWZpeCwgKCpuZXh0KS0+Y29k
ZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIHN3aXRjaCAocHJlZml4LT50eXBlKSB7Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7Ci0gICAgICAgICAgICBpZiAoaXNFZmZlY3Rm
dWwpCi0gICAgICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+
KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAg
cmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3
VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3Vs
dCkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpNaW51c01pbnVzOiB7
Ci0gICAgICAgICAgICBpZiAoaXNFZmZlY3RmdWwpCi0gICAgICAgICAgICAgICAgKmlzRWZmZWN0
ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSk7Ci0g
ICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVu
dHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24o
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLS0i
X3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXRS
ZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpQbHVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFw
cGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrIl9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
TWludXM6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
Km5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhw
cmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpUaWxkZTogewotICAg
ICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRz
OwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2Nh
dGlvbiwgIm9wZXJhdG9yfiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6IHsKLSAgICAg
ICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FzdEFyZ3VtZW50czsK
LSAgICAgICAgICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAg
ICAgICAgIGF1dG8gYm9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+
KGxvY2F0aW9uLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsKLSAgICAgICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4obG9j
YXRpb24sIFdURk1vdmUoYm9vbENhc3QpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkFuZDoKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpN
YWtlUG9pbnRlckV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSwgQVNUOjpBZGRy
ZXNzRXNjYXBlTW9kZTo6RXNjYXBlcykgfTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXQ6
Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpLCBBU1Q6OkFkZHJlc3NFc2Nh
cGVNb2RlOjpFc2NhcGVzKSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
KHByZWZpeC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6U3Rhcik7Ci0gICAgICAgICAgICByZXR1cm4g
eyBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZSgqbmV4dCkpIH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFyc2VQb3Nz
aWJsZVN1ZmZpeChpc0VmZmVjdGZ1bCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxl
U3VmZml4KGJvb2wgKmlzRWZmZWN0ZnVsKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgUEVFS19GVVJUSEVSKG5l
eHRUb2tlbik7Ci0KLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OklkZW50aWZp
ZXIgJiYgbmV4dFRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpIHsK
LSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgQ2FsbEV4cHJlc3Npb24pOwotICAgICAgICBpZiAo
aXNFZmZlY3RmdWwpCi0gICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgUEVFSyhzdWZmaXhUb2tlbik7Ci0gICAgICAgICAg
ICBpZiAoc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9wICYmIHN1ZmZp
eFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpBcnJvdyAmJiBzdWZmaXhUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlTGltaXRlZFN1ZmZpeE9wZXJhdG9yKFdU
Rk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICAgICAgICAgIGV4cHJlc3Npb24gPSBXVEZNb3ZlKHJl
c3VsdC5yZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBleHByZXNzaW9uOwotICAg
IH0KLQotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lz
ICYmIGlzRWZmZWN0ZnVsKQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotCi0gICAgUEFS
U0UoZXhwcmVzc2lvbiwgVGVybSk7Ci0gICAgYm9vbCBpc0xhc3RTdWZmaXhUb2tlbkVmZmVjdGZ1
bCA9IGZhbHNlOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFBFRUsoc3VmZml4VG9rZW4p
OwotICAgICAgICBpZiAoc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9w
Ci0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6QXJyb3cK
LSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1
YXJlQnJhY2tldAotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5
cGU6OlBsdXNQbHVzCi0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6
VHlwZTo6TWludXNNaW51cykgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgaXNMYXN0U3VmZml4VG9rZW5FZmZlY3RmdWwgPSBzdWZmaXhUb2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6UGx1c1BsdXMgfHwgc3VmZml4VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1p
bnVzTWludXM7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VTdWZmaXhPcGVyYXRvcihXVEZN
b3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgICAgIGV4cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3VsdC5y
ZXN1bHQpOwotICAgIH0KLSAgICBpZiAoaXNMYXN0U3VmZml4VG9rZW5FZmZlY3RmdWwgJiYgaXNF
ZmZlY3RmdWwpCi0gICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgcmV0dXJuIGV4cHJl
c3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNhbGxFeHByZXNzaW9uKCkgLT4gRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQ
RShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIGNhbGxOYW1lID0gbmFtZS0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNp
cywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gYXJndW1lbnRzOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBhcmVu
dGhlc2lzKSkKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNz
aW9uPihXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZShjYWxsTmFtZSksIFdURk1vdmUoYXJndW1lbnRz
KSkgfTsKLQotICAgIFBBUlNFKGZpcnN0QXJndW1lbnQsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlv
bmFsKTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmZpcnN0QXJndW1lbnQpKTsKLSAg
ICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKGFy
Z3VtZW50LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoV1RGTW92ZSgqYXJndW1lbnQpKTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmln
aHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKCpuYW1lLCAqcmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGNhbGxOYW1lKSwgV1RG
TW92ZShhcmd1bWVudHMpKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUZXJtKCkgLT4gRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIGF1dG8gdHlw
ZSA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkludExpdGVyYWwsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZsb2F0
TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok51bGwsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpUcnVlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmFsc2UsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpJZGVudGlmaWVyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lzPigpOwot
ICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3Io
KSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJ
bnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+
c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKLSAgICB9
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VWludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVy
cm9yKCkpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6RmxvYXRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBmbG9hdExpdGVyYWxUb0Zs
b2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RmxvYXRMaXRlcmFsPigqdHlwZSwgKnZhbHVlKSB9
OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpOdWxsOgotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IoIidudWxsJyBpcyBhIHJlc2VydmVkIGtleXdvcmQuIiwgdHlwZS0+
Y29kZUxvY2F0aW9uKSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdHlwZSwgdHJ1ZSkgfTsK
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxzZToKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZVJlZjxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdHlwZSwgZmFsc2UpIH07Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6SWRlbnRpZmllcjogewotICAgICAgICBhdXRvIG5hbWUgPSB0eXBlLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oKnR5cGUsIFdURk1vdmUobmFtZSkpIH07Ci0gICAgfQot
ICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46OlR5cGU6
OkxlZnRQYXJlbnRoZXNpcyk7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIEV4cHJlc3Npb24p
OwotICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNp
cyk7Ci0KLSAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSgqZXhwcmVzc2lvbikgfTsKLSAgICB9Ci0g
ICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjRlZWEzMjZkYjQ3NDc3ZTZlOWUzMzY5NjMzN2I2ZTY1ZDMxNzc2Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNpbmdNb2Rl
LmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
UHJvZ3JhbTsKLQotY2xhc3MgUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gcGFyc2UoUHJvZ3JhbSYsIFN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlLCBBU1Q6Ok5hbWVT
cGFjZSk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGlz
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM1Nwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgYmFja3RyYWNraW5nU2NvcGUoc3RkOjpmdW5jdGlv
bjxUKCk+IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgYXV0byBzdGF0ZSA9IG1fbGV4ZXIuc3Rh
dGUoKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjYWxsYmFjaygpOwotICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgbV9sZXhlci5zZXRTdGF0
ZShXVEZNb3ZlKHN0YXRlKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAg
ZW51bSBjbGFzcyBUcnlUb1BlZWsgewotICAgICAgICBZZXMsCi0gICAgICAgIE5vCi0gICAgfTsK
LSAgICBVbmV4cGVjdGVkPEVycm9yPiBmYWlsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgVHJ5VG9Q
ZWVrID0gVHJ5VG9QZWVrOjpZZXMpOwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gcGVlaygp
OwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gcGVla0Z1cnRoZXIoKTsKLSAgICBib29sIHBl
ZWtUeXBlKFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+
Ci0gICAgYm9vbCBwZWVrVHlwZXMoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0cnlUeXBl
KFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci0gICAg
c3RkOjpvcHRpb25hbDxUb2tlbj4gdHJ5VHlwZXMoKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJy
b3I+IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUu
Li4gdHlwZXM+Ci0gICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZXMoKTsKLQot
ICAgIEV4cGVjdGVkPFZhcmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPiBjb25zdW1lSW50ZWdy
YWxMaXRlcmFsKCk7Ci0gICAgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiBjb25zdW1lTm9uTmVn
YXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbiwgRXJyb3I+IHBhcnNlQ29uc3RhbnRFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNU
OjpUeXBlQXJndW1lbnQsIEVycm9yPiBwYXJzZVR5cGVBcmd1bWVudCgpOwotICAgIEV4cGVjdGVk
PEFTVDo6VHlwZUFyZ3VtZW50cywgRXJyb3I+IHBhcnNlVHlwZUFyZ3VtZW50cygpOwotICAgIHN0
cnVjdCBUeXBlU3VmZml4QWJicmV2aWF0ZWQgewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRp
b247Ci0gICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBudW1FbGVtZW50czsKLSAgICB9OwotICAgIEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZpYXRl
ZCwgRXJyb3I+IHBhcnNlVHlwZVN1ZmZpeEFiYnJldmlhdGVkKCk7Ci0gICAgc3RydWN0IFR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbjsKLSAg
ICAgICAgVG9rZW4gdG9rZW47Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8QVNUOjpBZGRyZXNzU3Bh
Y2U+IGFkZHJlc3NTcGFjZTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbnVtRWxl
bWVudHM7Ci0gICAgfTsKLSAgICBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIEVy
cm9yPiBwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpOwotICAgIEV4cGVjdGVkPFJlZjxB
U1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlQWRkcmVzc1NwYWNlVHlwZSgpOwotICAgIEV4
cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlTm9uQWRkcmVzc1NwYWNl
VHlwZSgpOwotICAgIEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNl
VHlwZSgpOwotICAgIEV4cGVjdGVkPEFTVDo6VHlwZURlZmluaXRpb24sIEVycm9yPiBwYXJzZVR5
cGVEZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCdWlsdEluU2VtYW50aWMsIEVycm9y
PiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6UmVzb3VyY2VTZW1h
bnRpYywgRXJyb3I+IHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLCBFcnJvcj4gcGFyc2VTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRp
YywgRXJyb3I+IHBhcnNlU3RhZ2VJbk91dFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8c3RkOjp1
bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4gcGFyc2VTZW1hbnRpYygpOwotICAgIEFT
VDo6UXVhbGlmaWVycyBwYXJzZVF1YWxpZmllcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0cnVj
dHVyZUVsZW1lbnQsIEVycm9yPiBwYXJzZVN0cnVjdHVyZUVsZW1lbnQoKTsKLSAgICBFeHBlY3Rl
ZDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24sIEVycm9yPiBwYXJzZVN0cnVjdHVyZURlZmluaXRp
b24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRXJyb3I+IHBh
cnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlv
bk1lbWJlciwgRXJyb3I+IHBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZhdWx0VmFs
dWUpOwotICAgIEV4cGVjdGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBFcnJvcj4gcGFy
c2VOYXRpdmVUeXBlRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSwgRXJyb3I+IHBhcnNlTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+IHBhcnNlQXR0cmli
dXRlQmxvY2soKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9y
PiBwYXJzZVBhcmFtZXRlcigpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnMsIEVycm9yPiBwYXJzZVBhcmFtZXRlcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0g
ICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VWZXJ0ZXhP
ckZyYWdtZW50RnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlUmVndWxhckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsK
LSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZU9wZXJh
dG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiwgRXJyb3I+IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVk
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24o
KTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBw
YXJzZU5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLQotICAgIEV4cGVjdGVkPEFTVDo6Qmxv
Y2ssIEVycm9yPiBwYXJzZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+
IHBhcnNlQmxvY2tCb2R5KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpJZlN0YXRlbWVudCwgRXJyb3I+
IHBhcnNlSWZTdGF0ZW1lbnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRlbWVudCwg
RXJyb3I+IHBhcnNlU3dpdGNoU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hD
YXNlLCBFcnJvcj4gcGFyc2VTd2l0Y2hDYXNlKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGb3JMb29w
LCBFcnJvcj4gcGFyc2VGb3JMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpXaGlsZUxvb3AsIEVy
cm9yPiBwYXJzZVdoaWxlTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6RG9XaGlsZUxvb3AsIEVy
cm9yPiBwYXJzZURvV2hpbGVMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uLCBFcnJvcj4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFJlZjxBU1Q6OlVubmFtZWRU
eXBlPiYmKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LCBFcnJvcj4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpOwotICAgIEV4cGVjdGVkPFVuaXF1
ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiBwYXJzZVN0YXRlbWVudCgpOwotCi0gICAgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+IHBhcnNlRWZmZWN0ZnVsRXhw
cmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4gcGFyc2VFZmZlY3RmdWxBc3NpZ25tZW50KCk7Ci0gICAgc3RydWN0IFN1ZmZpeEV4cHJlc3Np
b24gewotICAgICAgICBTdWZmaXhFeHByZXNzaW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
JiYgcmVzdWx0LCBib29sIHN1Y2Nlc3MpCi0gICAgICAgICAgICA6IHJlc3VsdChXVEZNb3ZlKHJl
c3VsdCkpCi0gICAgICAgICAgICAsIHN1Y2Nlc3Moc3VjY2VzcykKLSAgICAgICAgewotICAgICAg
ICB9Ci0KLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4gcmVzdWx0OwotICAgICAg
ICBib29sIHN1Y2Nlc3M7Ci0gICAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBz
dWNjZXNzOyB9Ci0gICAgfTsKLSAgICBTdWZmaXhFeHByZXNzaW9uIHBhcnNlTGltaXRlZFN1ZmZp
eE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYpOwotICAgIFN1ZmZpeEV4cHJl
c3Npb24gcGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmKTsK
LQotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPiBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7Ci0gICAgRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVRlcm5hcnlDb25kaXRpb25h
bChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSk7Ci0gICAgRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZUFzc2lnbm1lbnQoVW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBsZWZ0KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0
aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBj
b21wbGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKCk7Ci0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBv
c3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+IHBhcnNlUG9zc2libGVTaGlmdCgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZUFkZCgpOwotICAgIEV4cGVjdGVkPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUFkZChVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVNdWx0aXBseSgpOwotICAgIEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJs
ZU11bHRpcGx5KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVBy
ZWZpeChib29sICppc0VmZmVjdGZ1bCA9IG51bGxwdHIpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVN1ZmZpeChib29sICppc0Vm
ZmVjdGZ1bCA9IG51bGxwdHIpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gcGFyc2VDYWxsRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VUZXJtKCk7Ci0KLSAgICBMZXhlciBtX2xl
eGVyOwotICAgIFBhcnNpbmdNb2RlIG1fbW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2luZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2luZ01vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRmMDczNzZj
ZjhkNDBlYzdiYThjMGNhMzcwNzIzNDBkNDYyMDFkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNpbmdNb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotZW51bSBjbGFzcyBQYXJz
aW5nTW9kZSA6IHVpbnQ4X3QgewotICAgIFN0YW5kYXJkTGlicmFyeSwKLSAgICBVc2VyCi19Owot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3MDU5ODgwZDUzZGVjYThiNjQyNGZlMjYwNTVm
ZWEwY2VlZmIyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9P
cHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1lbnVt
IGNsYXNzIFZlcnRleEZvcm1hdCA6IHVpbnQ4X3QgewotICAgIEZsb2F0UjMyRzMyQjMyQTMyLAot
ICAgIEZsb2F0UjMyRzMyQjMyLAotICAgIEZsb2F0UjMyRzMyLAotICAgIEZsb2F0UjMyCi19Owot
Ci1zdHJ1Y3QgVmVydGV4QXR0cmlidXRlIHsKLSAgICBWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0
OwotICAgIHVuc2lnbmVkIHNoYWRlckxvY2F0aW9uOwotICAgIHVuc2lnbmVkIG1ldGFsTG9jYXRp
b247Ci19OwotCi11c2luZyBWZXJ0ZXhBdHRyaWJ1dGVzID0gVmVjdG9yPFZlcnRleEF0dHJpYnV0
ZT47Ci0KLS8vIEZJWE1FOiBBZGQgYmFjayA8IDMyIGJpdCB0ZXh0dXJlIHZhbHVlcyBhbmQgZmln
dXJlIG91dCBob3cgdG8gYm94IHRoZW0gaW4gd2lkZXIgdHlwZXMgd2hlbiB3ZSBsb2FkIGZyb20g
dGhlbS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzMTUK
LQotZW51bSBjbGFzcyBUZXh0dXJlRm9ybWF0IHsKLSAgICBSOFVub3JtLAotICAgIFI4VW5vcm1T
cmdiLAotICAgIFI4U25vcm0sCi0gICAgUjE2VW5vcm0sCi0gICAgUjE2U25vcm0sCi0gICAgUjE2
RmxvYXQsCi0gICAgUkc4VW5vcm0sCi0gICAgUkc4VW5vcm1TcmdiLAotICAgIFJHOFNub3JtLAot
ICAgIEI1RzZSNVVub3JtLAotICAgIFIzMlVpbnQsCi0gICAgUjMyU2ludCwKLSAgICBSMzJGbG9h
dCwKLSAgICBSRzE2VW5vcm0sCi0gICAgUkcxNlNub3JtLAotICAgIFJHMTZGbG9hdCwKLSAgICBS
R0JBOFVub3JtLAotICAgIFJHQkE4VW5vcm1TcmdiLAotICAgIFJHQkE4U25vcm0sCi0gICAgQkdS
QThVbm9ybSwKLSAgICBCR1JBOFVub3JtU3JnYiwKLSAgICBSR0IxMEEyVW5vcm0sCi0gICAgUkcx
MUIxMEZsb2F0LAotICAgIFJHMzJVaW50LAotICAgIFJHMzJTaW50LAotICAgIFJHMzJGbG9hdCwK
LSAgICBSR0JBMTZVbm9ybSwKLSAgICBSR0JBMTZTbm9ybSwKLSAgICBSR0JBMTZGbG9hdCwKLSAg
ICBSR0JBMzJVaW50LAotICAgIFJHQkEzMlNpbnQsCi0gICAgUkdCQTMyRmxvYXQKLX07Ci0KLXN0
cnVjdCBBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0OwotICAgIHVuc2lnbmVkIG5hbWU7Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudHNTdGF0ZURl
c2NyaXB0b3IgewotICAgIFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4gYXR0YWNobWVudERl
c2NyaXB0b3JzOwotICAgIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOwotfTsKLQotZW51bSBjbGFzcyBTaGFkZXJTdGFn
ZSA6IHVpbnQ4X3QgewotICAgIE5vbmUgPSAwLAotICAgIFZlcnRleCA9IDEgPDwgMCwKLSAgICBG
cmFnbWVudCA9IDEgPDwgMSwKLSAgICBDb21wdXRlID0gMSA8PCAyCi19OwotCi1zdHJ1Y3QgVW5p
Zm9ybUJ1ZmZlckJpbmRpbmcgewotICAgIHVuc2lnbmVkIGxlbmd0aE5hbWU7Ci19OwotCi1zdHJ1
Y3QgU2FtcGxlckJpbmRpbmcgewotfTsKLQotc3RydWN0IFRleHR1cmVCaW5kaW5nIHsKLX07Ci0K
LXN0cnVjdCBTdG9yYWdlQnVmZmVyQmluZGluZyB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoTmFtZTsK
LX07Ci0KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MTY4IEFkZCB0aGUgZHluYW1pYyB0eXBlcwotCi1zdHJ1Y3QgQmluZGluZyB7Ci0gICAgdXNp
bmcgQmluZGluZ0RldGFpbHMgPSBWYXJpYW50PFVuaWZvcm1CdWZmZXJCaW5kaW5nLCBTYW1wbGVy
QmluZGluZywgVGV4dHVyZUJpbmRpbmcsIFN0b3JhZ2VCdWZmZXJCaW5kaW5nPjsKLSAgICBPcHRp
b25TZXQ8U2hhZGVyU3RhZ2U+IHZpc2liaWxpdHk7Ci0gICAgQmluZGluZ0RldGFpbHMgYmluZGlu
ZzsKLSAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWU7Ci0gICAgdW5zaWduZWQgZXh0ZXJuYWxOYW1l
OwotfTsKLQotc3RydWN0IEJpbmRHcm91cCB7Ci0gICAgVmVjdG9yPEJpbmRpbmc+IGJpbmRpbmdz
OwotICAgIHVuc2lnbmVkIG5hbWU7Ci19OwotCi11c2luZyBMYXlvdXQgPSBWZWN0b3I8QmluZEdy
b3VwPjsKLQotc3RydWN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7Ci0gICAgVmVydGV4QXR0
cmlidXRlcyB2ZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIEF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9y
IGF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yOwotICAgIExheW91dCBsYXlvdXQ7Ci0gICAgU3Ry
aW5nIHZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIFN0cmluZyBmcmFnbWVudEVudHJ5UG9pbnRO
YW1lOwotfTsKLQotc3RydWN0IENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgewotICAgIExheW91
dCBsYXlvdXQ7Ci0gICAgU3RyaW5nIGVudHJ5UG9pbnROYW1lOwotfTsKLQotdXNpbmcgUGlwZWxp
bmVEZXNjcmlwdG9yID0gVmFyaWFudDxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3I+OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QyYzVjYWM0M2M5NTlhM2U3MThkMGEwYjQ4
ZWJjMWM0ZTRiODM1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5oIgotI2luY2x1ZGUgIldITFNM
Q2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrUmVmZXJlbmNl
VHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCIKLSNpbmNs
dWRlICJXSExTTENoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTENvbXB1dGVEaW1lbnNpb25zLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNM
SGlnaFpvbWJpZUZpbmRlci5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCIKLSNpbmNsdWRlICJXSExTTE5h
bWVSZXNvbHZlci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xQYXJzZXIuaCIKLSNpbmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCIK
LSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5UmVzb2x2
ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNsdWRlICJX
SExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpY01hdGNo
ZXIuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50
aGVzaXplQ29uc3RydWN0b3JzLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplRW51bWVyYXRp
b25GdW5jdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBTaGFkZXJNb2R1bGUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgU2hhZGVyTW9k
dWxlKGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpCi0gICAgICAgIDogd2hsc2xTb3VyY2Uod2hs
c2xTb3VyY2UpCi0gICAgewotICAgIH0KLQotICAgIFN0cmluZyB3aGxzbFNvdXJjZTsKLX07Ci0K
LX0KLQotfQotCi1uYW1lc3BhY2Ugc3RkIHsKLQotdm9pZCBkZWZhdWx0X2RlbGV0ZTxXZWJDb3Jl
OjpXSExTTDo6U2hhZGVyTW9kdWxlPjo6b3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6U2hhZGVy
TW9kdWxlKiBzaGFkZXJNb2R1bGUpIGNvbnN0Ci17Ci0gICAgZGVsZXRlIHNoYWRlck1vZHVsZTsK
LX0KLQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0
YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsKLXN0YXRp
YyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7Ci1zdGF0aWMgY29u
c3RleHByIGJvb2wgZHVtcEFTVEF0RW5kID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wg
YWx3YXlzRHVtcFBhc3NGYWlsdXJlcyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1
bXBQYXNzRmFpbHVyZSA9IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8fCBkdW1wQVNUQWZ0ZXJQYXJz
aW5nIHx8IGR1bXBBU1RBdEVuZCB8fCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzOwotc3RhdGljIGNv
bnN0ZXhwciBib29sIGR1bXBQaGFzZVRpbWVzID0gZmFsc2U7Ci0KLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkgPSBmYWxzZTsKLQotc3RhdGljIGJvb2wgZHVt
cEFTVElmTmVlZGVkKGJvb2wgc2hvdWxkRHVtcCwgUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgY2hh
ciogbWVzc2FnZSkKLXsKLSAgICBpZiAoc2hvdWxkRHVtcCkgewotICAgICAgICBkYXRhTG9nTG4o
bWVzc2FnZSk7Ci0gICAgICAgIGR1bXBBU1QocHJvZ3JhbSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEFm
dGVyUGFyc2luZ0lmTmVlZGVkKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgcmV0dXJuIGR1bXBB
U1RJZk5lZWRlZChkdW1wQVNUQWZ0ZXJQYXJzaW5nLCBwcm9ncmFtLCAiQVNUIGFmdGVyIHBhcnNp
bmciKTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgcmV0dXJuIGR1bXBB
U1RJZk5lZWRlZChkdW1wQVNUQmVmb3JlRWFjaFBhc3MsIHByb2dyYW0sIG1lc3NhZ2UpOwotfQot
Ci1zdGF0aWMgYm9vbCBkdW1wQVNUQXRFbmRJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtKQotewot
ICAgIHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEF0RW5kLCBwcm9ncmFtLCAiQVNUIGF0
IGVuZCIpOwotfQotCi11c2luZyBQaGFzZVRpbWVzID0gVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFNlY29uZHM+PjsKLQotc3RhdGljIHZvaWQgbG9nUGhhc2VUaW1lcyhQaGFzZVRpbWVzJiBwaGFz
ZVRpbWVzKQotewotICAgIGlmICghZHVtcFBoYXNlVGltZXMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvciAoYXV0byYgZW50cnkgOiBwaGFzZVRpbWVzKQotICAgICAgICBkYXRhTG9nTG4oZW50
cnkuZmlyc3QsICI6ICIsIGVudHJ5LnNlY29uZC5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotfQot
Ci1jbGFzcyBQaGFzZVRpbWVyIHsKLXB1YmxpYzoKLSAgICBQaGFzZVRpbWVyKGNvbnN0IGNoYXIq
IHBoYXNlTmFtZSwgUGhhc2VUaW1lcyYgcGhhc2VUaW1lcykKLSAgICAgICAgOiBtX3BoYXNlVGlt
ZXMocGhhc2VUaW1lcykKLSAgICB7Ci0gICAgICAgIGlmIChkdW1wUGhhc2VUaW1lcykgewotICAg
ICAgICAgICAgbV9waGFzZU5hbWUgPSBwaGFzZU5hbWU7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+UGhhc2VUaW1l
cigpCi0gICAgewotICAgICAgICBpZiAoZHVtcFBoYXNlVGltZXMpIHsKLSAgICAgICAgICAgIGF1
dG8gdG90YWxUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0OwotICAgICAgICAg
ICAgbV9waGFzZVRpbWVzLmFwcGVuZCh7IG1fcGhhc2VOYW1lLCB0b3RhbFRpbWUgfSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fcGhhc2VOYW1lOwotICAgIFBo
YXNlVGltZXMmIG1fcGhhc2VUaW1lczsKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnQ7Ci19Owot
Ci1VbmlxdWVSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU3RyaW5n
JiB3aGxzbFNvdXJjZSkKLXsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDg3MiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIGFzIG11Y2gg
d29yayBmcm9tIHByZXBhcmUoKSBpbnRvIGhlcmUgYXMgcG9zc2libGUuCi0gICAgcmV0dXJuIG1h
a2VVbmlxdWVSZWY8U2hhZGVyTW9kdWxlPih3aGxzbFNvdXJjZSk7Ci19Ci0KLSNkZWZpbmUgQ0hF
Q0tfUEFTUyhwYXNzLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgZHVtcEFTVEJldHdlZW5F
YWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYmVmb3JlICIgIyBwYXNzKTsgXAotICAgICAg
ICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCi0gICAgICAgIGF1
dG8gcmVzdWx0ID0gcGFzcyhfX1ZBX0FSR1NfXyk7IFwKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsg
XAotICAgICAgICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkgXAotICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigiZmFpbGVkIHBhc3M6ICIgIyBwYXNzLCBMZXhlcjo6ZXJyb3JTdHJpbmcocmVzdWx0
LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7IFwKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocmVzdWx0LmVycm9yKCksIHdo
bHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7IFwKLSAgICAgICAgfSBcCi0gICAgfSB3aGlsZSAo
MCkKLQotI2RlZmluZSBSVU5fUEFTUyhwYXNzLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAg
UGhhc2VUaW1lciBwaGFzZVRpbWVyKCNwYXNzLCBwaGFzZVRpbWVzKTsgXAotICAgICAgICBkdW1w
QVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBiZWZvcmUgIiAjIHBhc3Mp
OyBcCi0gICAgICAgIHBhc3MoX19WQV9BUkdTX18pOyBcCi0gICAgfSB3aGlsZSAoMCkKLQotc3Rh
dGljIEV4cGVjdGVkPFByb2dyYW0sIFN0cmluZz4gcHJlcGFyZVNoYXJlZChQaGFzZVRpbWVzJiBw
aGFzZVRpbWVzLCBjb25zdCBTdHJpbmcmIHdobHNsU291cmNlMSwgY29uc3QgU3RyaW5nKiB3aGxz
bFNvdXJjZTIgPSBudWxscHRyKQotewotICAgIFByb2dyYW0gcHJvZ3JhbTsKLSAgICBQYXJzZXIg
cGFyc2VyOwotCi0gICAgewotICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVu
dE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0KLSAgICAgICAgUGhhc2VU
aW1lciBwaGFzZVRpbWVyKCJwYXJzZSIsIHBoYXNlVGltZXMpOwotICAgICAgICBhdXRvIHBhcnNl
UmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sIHdobHNsU291cmNlMSwgUGFyc2luZ01vZGU6
OlVzZXIsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICAgICAgaWYgKCFwYXJzZVJl
c3VsdCkgewotICAgICAgICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkKLSAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oImZhaWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6OmVycm9y
U3RyaW5nKHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHBh
cnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHdobHNsU291cmNlMikgewotICAgICAgICAgICAgcHJvZ3JhbS5uYW1l
Q29udGV4dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTIp
OwotICAgICAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCAq
d2hsc2xTb3VyY2UyLCBQYXJzaW5nTW9kZTo6VXNlciwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFj
ZTIpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkgewotICAgICAgICAgICAgICAgIGlm
IChkdW1wUGFzc0ZhaWx1cmUpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiZmFpbGVk
IHRvIHBhcnNlIHRoZSBwcm9ncmFtOiAiLCBMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQu
ZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHBhcnNlUmVzdWx0LmVycm9y
KCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgcHJvZ3JhbS5uYW1lQ29udGV4dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNU
OjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBQ
aGFzZVRpbWVyIHBoYXNlVGltZXIoImluY2x1ZGVTdGFuZGFyZExpYnJhcnkiLCBwaGFzZVRpbWVz
KTsKLSAgICAgICAgaW5jbHVkZVN0YW5kYXJkTGlicmFyeShwcm9ncmFtLCBwYXJzZXIsIHBhcnNl
RnVsbFN0YW5kYXJkTGlicmFyeSk7Ci0gICAgfQotCi0gICAgaWYgKCFkdW1wQVNUQmV0d2VlbkVh
Y2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBhZnRlciBwYXJzaW5nIikpCi0gICAgICAgIGR1
bXBBU1RBZnRlclBhcnNpbmdJZk5lZWRlZChwcm9ncmFtKTsKLQotICAgIE5hbWVSZXNvbHZlciBu
YW1lUmVzb2x2ZXIocHJvZ3JhbS5uYW1lQ29udGV4dCgpKTsKLSAgICBDSEVDS19QQVNTKHJlc29s
dmVOYW1lc0luVHlwZXMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hFQ0tfUEFTUyhj
aGVja1JlY3Vyc2l2ZVR5cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKHN5bnRoZXNpemVF
bnVtZXJhdGlvbkZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhyZXNvbHZlVHlw
ZU5hbWVzSW5GdW5jdGlvbnMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hFQ0tfUEFT
UyhzeW50aGVzaXplQ29uc3RydWN0b3JzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLCBwcm9ncmFtKTsKLQotICAgIENIRUNLX1BBU1MoY2hlY2ssIHBy
b2dyYW0pOwotICAgIFJVTl9QQVNTKHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMsIHByb2dyYW0pOwotCi0gICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlwZXMsIHByb2dy
YW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJvZ3JhbSk7Ci0g
ICAgQ0hFQ0tfUEFTUyhjaGVja1JlZmVyZW5jZVR5cGVzLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFT
UyhyZXNvbHZlUHJvcGVydGllcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MoZmluZEhpZ2hab21i
aWVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrU3RhdGVtZW50QmVoYXZpb3IsIHBy
b2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWN1cnNpb24sIHByb2dyYW0pOwotICAgIENI
RUNLX1BBU1MoY2hlY2tGdW5jdGlvblN0YWdlcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MocHJl
c2VydmVWYXJpYWJsZUxpZmV0aW1lcywgcHJvZ3JhbSk7Ci0KLSAgICBkdW1wQVNUQXRFbmRJZk5l
ZWRlZChwcm9ncmFtKTsKLQotICAgIHJldHVybiBwcm9ncmFtOwotfQotCi1FeHBlY3RlZDxSZW5k
ZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVyTW9kdWxlJiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGNvbnN0IFNoYWRlck1vZHVsZSogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQotewot
ICAgIFBoYXNlVGltZXMgcGhhc2VUaW1lczsKLSAgICBNZXRhbDo6UmVuZGVyTWV0YWxDb2RlIGdl
bmVyYXRlZENvZGU7Ci0KLSAgICB7Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicHJl
cGFyZSB0b3RhbCIsIHBoYXNlVGltZXMpOwotICAgICAgICBjb25zdCBTdHJpbmcqIHNlY29uZFNo
YWRlciA9IG51bGxwdHI7Ci0gICAgICAgIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciA9IGZh
bHNlOwotICAgICAgICBpZiAoZnJhZ21lbnRTaGFkZXJNb2R1bGUgJiYgZnJhZ21lbnRTaGFkZXJN
b2R1bGUgIT0gJnZlcnRleFNoYWRlck1vZHVsZSkgewotICAgICAgICAgICAgc2Vjb25kU2hhZGVy
ID0gJmZyYWdtZW50U2hhZGVyTW9kdWxlLT53aGxzbFNvdXJjZTsKLSAgICAgICAgICAgIGRpc3Rp
bmN0RnJhZ21lbnRTaGFkZXIgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gcHJvZ3Jh
bSA9IHByZXBhcmVTaGFyZWQocGhhc2VUaW1lcywgdmVydGV4U2hhZGVyTW9kdWxlLndobHNsU291
cmNlLCBzZWNvbmRTaGFkZXIpOwotICAgICAgICBpZiAoIXByb2dyYW0pCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQotICAgICAgICBzdGQ6Om9w
dGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBw
aGFzZVRpbWVzKTsKLSAgICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGlj
cygqcHJvZ3JhbSwgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBkaXN0aW5jdEZyYWdtZW50U2hh
ZGVyLCBmcmFnbWVudFNoYWRlck1vZHVsZSk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZWRTZW1h
bnRpY3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJv
clN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3RyKSwgdmVydGV4U2hh
ZGVyTW9kdWxlLndobHNsU291cmNlLCBzZWNvbmRTaGFkZXIpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigiZ2VuZXJhdGVNZXRhbENv
ZGUiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIGdlbmVyYXRlZENvZGUgPSBNZXRhbDo6Z2Vu
ZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1vdmUoKm1hdGNoZWRTZW1hbnRpY3MpLCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxv
Z1BoYXNlVGltZXMocGhhc2VUaW1lcyk7Ci0KLSAgICBSZW5kZXJQcmVwYXJlUmVzdWx0IHJlc3Vs
dDsKLSAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWV0YWxT
b3VyY2UpOwotICAgIHJlc3VsdC5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUgPSBXVEZNb3Zl
KGdlbmVyYXRlZENvZGUubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lKTsKLSAgICByZXN1bHQu
bWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWFu
Z2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUV4
cGVjdGVkPENvbXB1dGVQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVy
TW9kdWxlJiBzaGFkZXJNb2R1bGUsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IpCi17Ci0gICAgUGhhc2VUaW1lcyBwaGFzZVRpbWVzOwotICAgIE1l
dGFsOjpDb21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlZENvZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxD
b21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICB7Ci0gICAgICAgIFBo
YXNlVGltZXIgcGhhc2VUaW1lcigicHJlcGFyZSB0b3RhbCIsIHBoYXNlVGltZXMpOwotICAgICAg
ICBhdXRvIHByb2dyYW0gPSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHNoYWRlck1vZHVsZS53
aGxzbFNvdXJjZSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRp
bWVzKTsKLSAgICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJv
Z3JhbSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgICAgICAgICBpZiAoIW1hdGNo
ZWRTZW1hbnRpY3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVy
OjplcnJvclN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3RyKSwgc2hh
ZGVyTW9kdWxlLndobHNsU291cmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImNvbXB1dGVEaW1lbnNpb25zIiwgcGhhc2VUaW1l
cyk7Ci0gICAgICAgICAgICBjb21wdXRlRGltZW5zaW9ucyA9IFdITFNMOjpjb21wdXRlRGltZW5z
aW9ucygqcHJvZ3JhbSwgKm1hdGNoZWRTZW1hbnRpY3MtPnNoYWRlcik7Ci0gICAgICAgICAgICBp
ZiAoIWNvbXB1dGVEaW1lbnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBjb21wdXRlIGRp
bWVuc2lvbnMiX3N0ciksIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJnZW5lcmF0ZU1l
dGFsQ29kZSIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgZ2VuZXJhdGVkQ29kZSA9IE1ldGFs
OjpnZW5lcmF0ZU1ldGFsQ29kZSgqcHJvZ3JhbSwgV1RGTW92ZSgqbWF0Y2hlZFNlbWFudGljcyks
IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGxvZ1BoYXNlVGltZXMocGhhc2VUaW1lcyk7Ci0KLSAgICBDb21wdXRlUHJlcGFyZVJlc3Vs
dCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92ZShnZW5lcmF0ZWRDb2Rl
Lm1ldGFsU291cmNlKTsKLSAgICByZXN1bHQubWFuZ2xlZEVudHJ5UG9pbnROYW1lID0gV1RGTW92
ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRFbnRyeVBvaW50TmFtZSk7Ci0gICAgcmVzdWx0LmNvbXB1
dGVEaW1lbnNpb25zID0gV1RGTW92ZSgqY29tcHV0ZURpbWVuc2lvbnMpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDlkMzM5YWJiOTQzZThkOGNhODNmZjRmNDE5ODMzYjIzODc2Y2E0M2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hM
U0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gSGlkZSB0aGUgY29udGVudHMgb2YgdGhl
IFNoYWRlck1vZHVsZS4gQ2xpZW50cyBvZiB0aGUgY29tcGlsZXIgc2hvdWxkbid0IGNhcmUgd2hh
dCdzIGluc2lkZSBpdC4KLXN0cnVjdCBTaGFkZXJNb2R1bGU7Ci0KLX0KLQotfQotCi1uYW1lc3Bh
Y2Ugc3RkIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hM
U0w6OlNoYWRlck1vZHVsZT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6
U2hhZGVyTW9kdWxlKikgY29uc3Q7Ci19OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29tcGlsZVRpbWVz
ID0gZmFsc2U7Ci0KLVVuaXF1ZVJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShj
b25zdCBTdHJpbmcmIHdobHNsU291cmNlKTsKLQotc3RydWN0IFJlbmRlclByZXBhcmVSZXN1bHQg
ewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWV0YWw6Ok1hbmdsZWRGdW5j
dGlvbk5hbWUgbWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1ldGFsOjpNYW5nbGVk
RnVuY3Rpb25OYW1lIG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLUV4cGVjdGVk
PFJlbmRlclByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUm
IHZlcnRleFNoYWRlck1vZHVsZSwgY29uc3QgU2hhZGVyTW9kdWxlKiBmcmFnbWVudFNoYWRlck1v
ZHVsZSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0KLXN0cnVjdCBDb21wdXRlRGltZW5z
aW9ucyB7Ci0gICAgdW5zaWduZWQgd2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0OwotICAgIHVu
c2lnbmVkIGRlcHRoOwotfTsKLQotc3RydWN0IENvbXB1dGVQcmVwYXJlUmVzdWx0IHsKLSAgICBT
dHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1l
IG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKLSAgICBDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGlt
ZW5zaW9uczsKLX07Ci1FeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVw
YXJlKGNvbnN0IFNoYWRlck1vZHVsZSYsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4OWQwN2Q4MDg4NjQ0
ZWZhZDQ0NTM0YTkwNmIzYTU2MzNjNDkwNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5oIgot
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNs
dWRlICJXSExTTFJlcGxhY2VXaXRoLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gVGhpcyBwYXNzIHdv
cmtzIGJ5IGVuc3VyaW5nIHByb3BlciB2YXJpYWJsZSBsaWZldGltZXMuIEluIFdITFNMLCBlYWNo
IHZhcmlhYmxlCi0vLyBoYXMgZ2xvYmFsIGxpZmV0aW1lLiBTbyByZXR1cm5pbmcgYSBwb2ludGVy
IHRvIGEgbG9jYWwgdmFyaWFibGUgaXMgYSB0b3RhbGx5Ci0vLyBsZWdpdGltYXRlIGFuZCB3ZWxs
LXNwZWNpZmllZCB0aGluZyB0byBkby4KLS8vCi0vLyBXZSBpbXBsZW1lbnQgdGhpcyBieToKLS8v
IC0gV2Ugbm90ZSBldmVyeSB2YXJpYWJsZSB3aG9zZSBhZGRyZXNzIHdlIHRha2UuCi0vLyAtIEVh
Y2ggc3VjaCB2YXJpYWJsZSBnZXRzIGRlZmluZWQgYXMgYSBmaWVsZCBpbiBhIHN0cnVjdC4KLS8v
IC0gRWFjaCBmdW5jdGlvbiB3aGljaCBpcyBhbiBlbnRyeSBwb2ludCBkZWZpbmVzIHRoaXMgc3Ry
dWN0LgotLy8gLSBFYWNoIG5vbiBlbnRyeSBwb2ludCB0YWtlcyBhIHBvaW50ZXIgdG8gdGhpcyBz
dHJ1Y3QgYXMgaXRzIGZpbmFsIHBhcmFtZXRlci4KLS8vIC0gRWFjaCBjYWxsIHRvIGEgbm9uLW5h
dGl2ZSBmdW5jdGlvbiBpcyByZXdyaXR0ZW4gdG8gcGFzcyBhIHBvaW50ZXIgdG8gdGhlCi0vLyAg
IHN0cnVjdCBhcyB0aGUgbGFzdCBjYWxsIGFyZ3VtZW50LgotLy8gLSBFYWNoIHZhcmlhYmxlIHJl
ZmVyZW5jZSB0byAieCIsIHdoZXJlICJ4IiBlbmRzIHVwIGluIHRoZSBzdHJ1Y3QsIGlzCi0vLyAg
IG1vZGlmaWVkIHRvIGluc3RlYWQgYmUgInN0cnVjdC0+eCIuIFdlIHN0b3JlIHRvICJzdHJ1Y3Qt
PngiIGFmdGVyIGRlY2xhcmluZwotLy8gICAieCIuIElmICJ4IiBpcyBhIGZ1bmN0aW9uIHBhcmFt
ZXRlciwgd2Ugc3RvcmUgdG8gInN0cnVjdC0+eCIgYXMgdGhlIGZpcnN0Ci0vLyAgIHRoaW5nIHdl
IGRvIGluIHRoZSBmdW5jdGlvbiBib2R5LgotCi1jbGFzcyBFc2NhcGVkVmFyaWFibGVDb2xsZWN0
b3IgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1w
dWJsaWM6Ci0KLSAgICB2b2lkIGVzY2FwZVZhcmlhYmxlVXNlKEFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbikKLSAgICB7Ci0gICAgICAgIGlmICghaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4o
ZXhwcmVzc2lvbikpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2UgbWlzc2luZyBhbnkg
aW50ZXJlc3RpbmcgcHJvZHVjdGlvbnMgaGVyZT8KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMTEKLSAgICAgICAgICAgIEJhc2U6OnZp
c2l0KGV4cHJlc3Npb24pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYXV0byogdmFyaWFibGUgPSBkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHBy
ZXNzaW9uKS52YXJpYWJsZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGUpOwotICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgc2tpcCB0aGlzIGlmIHdlIG1hcmsgYWxsIGludGVybmFsIHZhcmlh
YmxlcyB3aXRoIGEgYml0LCBzaW5jZSB3ZQotICAgICAgICAvLyBuZXZlciBtYWtlIGFueSBpbnRl
cm5hbCB2YXJpYWJsZSBlc2NhcGUgdGhlIGN1cnJlbnQgc2NvcGUgaXQgaXMgZGVmaW5lZCBpbjoK
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM4
MwotICAgICAgICBtX2VzY2FwZWRWYXJpYWJsZXMuYWRkKHZhcmlhYmxlLCBtYWtlU3RyaW5nKCJf
IiwgdmFyaWFibGUtPm5hbWUoKSwgIl8iLCBtX2NvdW50KyspKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24p
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobWFrZVBvaW50ZXJFeHByZXNzaW9uLm1pZ2h0
RXNjYXBlKCkpCi0gICAgICAgICAgICBlc2NhcGVWYXJpYWJsZVVzZShtYWtlUG9pbnRlckV4cHJl
c3Npb24ubGVmdFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubWln
aHRFc2NhcGUoKSkKLSAgICAgICAgICAgIGVzY2FwZVZhcmlhYmxlVXNlKG1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5n
TW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgQmFzZTo6dmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
biosIFN0cmluZz4gdGFrZUVzY2FwZWRWYXJpYWJsZXMoKSB7IHJldHVybiBXVEZNb3ZlKG1fZXNj
YXBlZFZhcmlhYmxlcyk7IH0KLQotcHJpdmF0ZToKLSAgICBzaXplX3QgbV9jb3VudCB7IDEgfTsK
LSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gbV9lc2NhcGVk
VmFyaWFibGVzOwotfTsKLQotc3RhdGljIEFMV0FZU19JTkxJTkUgVG9rZW4gYW5vbnltb3VzVG9r
ZW4oVG9rZW46OlR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gVG9rZW4geyB7IH0sIHR5cGUgfTsK
LX0KLQotY2xhc3MgUHJlc2VydmVMaWZldGltZXMgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgdXNp
bmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0gICAgUHJlc2VydmVMaWZldGltZXMoUmVmPEFT
VDo6VHlwZVJlZmVyZW5jZT4gc3RydWN0VHlwZSwgY29uc3QgSGFzaE1hcDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgdmFyaWFibGVNYXBwaW5nKQot
ICAgICAgICA6IG1fc3RydWN0VHlwZShXVEZNb3ZlKHN0cnVjdFR5cGUpKQotICAgICAgICAsIG1f
cG9pbnRlclRvU3RydWN0VHlwZShBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUoYW5vbnltb3VzVG9r
ZW4oVG9rZW46OlR5cGU6OklkZW50aWZpZXIpLCBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkLCBt
X3N0cnVjdFR5cGUuY29weVJlZigpKSkKLSAgICAgICAgLCBtX3ZhcmlhYmxlTWFwcGluZyh2YXJp
YWJsZU1hcHBpbmcpCi0gICAgeyB9Ci0KLSAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZT4gbWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8g
c3RydWN0VmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZl
cmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoKm1fc3RydWN0VmFyaWFibGUpKTsK
LSAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoKm1fc3RydWN0VmFyaWFi
bGUtPnR5cGUoKSk7Ci0gICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5u
b3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0g
ICAgICAgIHJldHVybiBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZTsKLSAgICB9Ci0KLSAgICBVbmlx
dWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4gYXNzaWduVmFyaWFibGVJbnRvU3RydWN0
KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGUsIEFTVDo6U3RydWN0dXJlRWxlbWVu
dCogZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGF1dG8gbGhzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPih2YXJpYWJsZS5jb2RlTG9jYXRpb24oKSwgbWFrZVN0
cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCksIGVsZW1lbnQpOwotICAgICAgICBsaHMtPnNldFR5cGUo
KnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIGxocy0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpM
ZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAgIGF1dG8g
cmhzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlOjp3cmFwKHZhcmlhYmxlKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZSgqdmFyaWFi
bGUudHlwZSgpKTsKLSAgICAgICAgcmhzLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1
ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAgICAgICAgYXV0byBhc3NpZ25t
ZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPih2YXJpYWJsZS5j
b2RlTG9jYXRpb24oKSwgV1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocykpOwotICAgICAgICBhc3Np
Z25tZW50LT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBhc3NpZ25tZW50LT5z
ZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgcmV0dXJuIGFz
c2lnbm1lbnQ7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0
aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpID09IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYm9vbCBpc0VudHJ5UG9pbnQgPSAh
IWZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpOwotICAgICAgICBpZiAoaXNFbnRy
eVBvaW50KSB7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24gPSBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZpbml0aW9u
LmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAgICBtX3N0
cnVjdFR5cGUuY29weVJlZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAg
ICAgICAgIGF1dG8gc3RydWN0VmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoc3RydWN0VmFy
aWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGUobV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBzdHJ1Y3RWYXJp
YWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFk
ZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zOwotICAgICAgICAgICAgc3RydWN0VmFy
aWFibGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUoc3RydWN0VmFyaWFibGVEZWNsYXJhdGlv
bikpOwotICAgICAgICAgICAgYXV0byBzdHJ1Y3REZWNsYXJhdGlvblN0YXRlbWVudCA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rpb25EZWZp
bml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25z
KSk7Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IG1ha2VQ
b2ludGVyRXhwcmVzc2lvbihuZXcgQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24oZnVuY3Rpb25E
ZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNl
KSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSkpOwotICAgICAgICAgICAg
bWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlKG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5
UmVmKCkpOwotICAgICAgICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3Rh
dGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xh
cmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0aW9u
RGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAgICAg
ICAgICAgbV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgIndyYXBwZXIiX3MsIG51bGxw
dHIsIFdURk1vdmUobWFrZVBvaW50ZXJFeHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBtX3N0cnVj
dFZhcmlhYmxlID0gJnBvaW50ZXJEZWNsYXJhdGlvbjsKLQotICAgICAgICAgICAgQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9ucyBwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnM7Ci0gICAgICAgICAg
ICBwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUocG9pbnRlckRlY2xh
cmF0aW9uKSk7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvblN0YXRlbWVudCA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rp
b25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHBvaW50ZXJWYXJpYWJsZURlY2xh
cmF0aW9ucykpOwotCi0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0
ZW1lbnRzKCkuaW5zZXJ0KDAsIFdURk1vdmUoc3RydWN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsK
LSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNl
cnQoMSwgV1RGTW92ZShwb2ludGVyRGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRp
b24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAgICAgICAgICAgbV9wb2ludGVyVG9TdHJ1
Y3RUeXBlLmNvcHlSZWYoKSwgIndyYXBwZXIiX3MsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAg
ICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0gICAgICAgICAg
ICBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLmFwcGVuZChXVEZNb3ZlKHBvaW50ZXJE
ZWNsYXJhdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgQmFzZTo6dmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLQotICAgICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVm
aW5pdGlvbi5wYXJhbWV0ZXJzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdmFyaWFi
bGVNYXBwaW5nLmZpbmQoJnBhcmFtZXRlcik7Ci0gICAgICAgICAgICBpZiAoaXRlciA9PSBtX3Zh
cmlhYmxlTWFwcGluZy5lbmQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydChpc0Vu
dHJ5UG9pbnQgPyAyIDogMCwKLSAgICAgICAgICAgICAgICBtYWtlVW5pcXVlUmVmPEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oYXNzaWduVmFyaWFibGVJbnRvU3RydWN0KHBhcmFt
ZXRlciwgaXRlci0+dmFsdWUpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbm5lciBmdW5j
dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIFdITFNMLiBTbyB0aGlzIGlzIGZpbmUuCi0gICAgICAg
IG1fc3RydWN0VmFyaWFibGUgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBCYXNlOjp2aXNp
dChjYWxsRXhwcmVzc2lvbik7Ci0KLSAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGl0J3Mg
aWxsZWdhbCB0byBjYWxsIGFuIGVudHJ5cG9pbnQuIFRoZXJlZm9yZSwgd2UgY2FuIG9ubHkKLSAg
ICAgICAgLy8gY2FsbCBmdW5jdGlvbnMgd2hlcmUgd2UndmUgYWxyZWFkeSBhcHBlbmRlZCB0aGlz
IHN0cnVjdCBhcyBpdHMgZmluYWwgcGFyYW1ldGVyLgotICAgICAgICBpZiAoIWNhbGxFeHByZXNz
aW9uLmZ1bmN0aW9uKCkuaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgJiYgY2FsbEV4cHJl
c3Npb24uZnVuY3Rpb24oKS5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnkpCi0gICAgICAgICAgICBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5hcHBlbmQobWFr
ZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBhdXRv
IGl0ZXIgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxl
KCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdHlwZSA9ICp2
YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpLT50eXBlKCk7Ci0gICAgICAgIEFTVDo6VHlwZUFu
bm90YXRpb24gdHlwZUFubm90YXRpb24gPSB2YXJpYWJsZVJlZmVyZW5jZS50eXBlQW5ub3RhdGlv
bigpOwotICAgICAgICBhdXRvKiBpbnRlcm5hbEZpZWxkID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPih2YXJpYWJsZVJlZmVyZW5jZSwgdmFyaWFibGVSZWZl
cmVuY2UuY29kZUxvY2F0aW9uKCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpLCBpdGVy
LT52YWx1ZSk7Ci0gICAgICAgIGludGVybmFsRmllbGQtPnNldFR5cGUoV1RGTW92ZSh0eXBlKSk7
Ci0gICAgICAgIGludGVybmFsRmllbGQtPnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFu
bm90YXRpb24pKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0KLSAgICAg
ICAgQmFzZTo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwotCi0gICAgICAg
IEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwotICAgICAgICBmb3IgKFVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24+JiB2YXJpYWJsZURlY2xhcmF0aW9uIDogdmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQudmFyaWFibGVEZWNsYXJhdGlvbnMoKSkgewotICAgICAgICAgICAg
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZSA9IHZhcmlhYmxlRGVjbGFyYXRpb24u
Z2V0KCk7Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zIGRlY2xhcmF0aW9uczsKLSAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnMuYXBw
ZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAgIHN0YXRl
bWVudHMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudD4odmFyaWFibGUuY29kZUxvY2F0aW9uKCksIFdURk1vdmUoZGVjbGFyYXRpb25zKSkpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlTWFwcGlu
Zy5maW5kKCZ2YXJpYWJsZSk7Ci0gICAgICAgICAgICBpZiAoaXRlciAhPSBtX3ZhcmlhYmxlTWFw
cGluZy5lbmQoKSkKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtlVW5pcXVl
UmVmPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oYXNzaWduVmFyaWFibGVJbnRv
U3RydWN0KHZhcmlhYmxlLCBpdGVyLT52YWx1ZSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFT
VDo6cmVwbGFjZVdpdGg8QVNUOjpTdGF0ZW1lbnRMaXN0Pih2YXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCwgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCksIFdU
Rk1vdmUoc3RhdGVtZW50cykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24qIG1fc3RydWN0VmFyaWFibGUgeyBudWxscHRyIH07Ci0KLSAgICBSZWY8QVNU
OjpUeXBlUmVmZXJlbmNlPiBtX3N0cnVjdFR5cGU7Ci0gICAgUmVmPEFTVDo6UG9pbnRlclR5cGU+
IG1fcG9pbnRlclRvU3RydWN0VHlwZTsKLSAgICAvLyBJZiB0aGlzIG1hcHBpbmcgY29udGFpbnMg
dGhlIHZhcmlhYmxlLCBpdCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSdzIGNhbm9uaWNhbCBsb2Nh
dGlvbgotICAgIC8vIGlzIGluIHRoZSBzdHJ1Y3Qgd2UgdXNlIHRvIHByZXNlcnZlIHZhcmlhYmxl
IGxpZmV0aW1lcy4KLSAgICBjb25zdCBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbios
IEFTVDo6U3RydWN0dXJlRWxlbWVudCo+JiBtX3ZhcmlhYmxlTWFwcGluZzsKLX07Ci0KLXZvaWQg
cHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIEhhc2hN
YXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgU3RyaW5nPiBlc2NhcGVkVmFyaWFibGVzOwot
ICAgIHsKLSAgICAgICAgRXNjYXBlZFZhcmlhYmxlQ29sbGVjdG9yIGNvbGxlY3RvcjsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3Rvci52aXNpdChwcm9ncmFtLmZ1bmN0aW9u
RGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgICAgIGVzY2FwZWRWYXJpYWJsZXMgPSBjb2xsZWN0b3Iu
dGFrZUVzY2FwZWRWYXJpYWJsZXMoKTsKLSAgICB9Ci0KLSAgICBBU1Q6OlN0cnVjdHVyZUVsZW1l
bnRzIGVsZW1lbnRzOwotICAgIGZvciAoYXV0byYgcGFpciA6IGVzY2FwZWRWYXJpYWJsZXMpIHsK
LSAgICAgICAgYXV0byogdmFyaWFibGUgPSBwYWlyLmtleTsKLSAgICAgICAgU3RyaW5nIG5hbWUg
PSBwYWlyLnZhbHVlOwotICAgICAgICBlbGVtZW50cy5hcHBlbmQoQVNUOjpTdHJ1Y3R1cmVFbGVt
ZW50IHsgdmFyaWFibGUtPmNvZGVMb2NhdGlvbigpLCB7IH0sICp2YXJpYWJsZS0+dHlwZSgpLCBX
VEZNb3ZlKG5hbWUpLCBudWxscHRyIH0pOwotICAgIH0KLQotICAgIC8vIE5hbWUgb2YgdGhpcyBk
b2Vzbid0IG1hdHRlciwgc2luY2Ugd2UgZG9uJ3QgdXNlIHN0cnVjdCBuYW1lcyB3aGVuCi0gICAg
Ly8gZ2VuZXJhdGluZyBNZXRhbCB0eXBlIG5hbWVzLiBXZSBqdXN0IHBpY2sgc29tZXRoaW5nIGhl
cmUgdG8gbWFrZSBpdAotICAgIC8vIGVhc3kgdG8gcmVhZCBpbiBBU1QgZHVtcHMuCi0gICAgYXV0
byB3cmFwcGVyU3RydWN0RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uPihhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6U3RydWN0KSwgIl9fV3JhcHBl
clN0cnVjdF9fIl9zLCBXVEZNb3ZlKGVsZW1lbnRzKSk7Ci0KLSAgICBIYXNoTWFwPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiosIEFTVDo6U3RydWN0dXJlRWxlbWVudCo+IHZhcmlhYmxlTWFwcGlu
ZzsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogZXNjYXBl
ZFZhcmlhYmxlcykKLSAgICAgICAgdmFyaWFibGVNYXBwaW5nLmFkZChwYWlyLmtleSwgJndyYXBw
ZXJTdHJ1Y3REZWZpbml0aW9uLT5zdHJ1Y3R1cmVFbGVtZW50cygpW2luZGV4KytdKTsKLQotICAg
IHsKLSAgICAgICAgYXV0byB3cmFwcGVyU3RydWN0VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6
d3JhcChhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllciksIHdyYXBwZXJTdHJ1
Y3REZWZpbml0aW9uKTsKLSAgICAgICAgUHJlc2VydmVMaWZldGltZXMgcHJlc2VydmVMaWZldGlt
ZXMoV1RGTW92ZSh3cmFwcGVyU3RydWN0VHlwZSksIHZhcmlhYmxlTWFwcGluZyk7Ci0gICAgICAg
IHByZXNlcnZlTGlmZXRpbWVzLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIH0KLQotICAg
IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5hcHBlbmQoV1RGTW92ZSh3cmFwcGVyU3Ry
dWN0RGVmaW5pdGlvbikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0YTY0ZjdhMjhiYTg0Y2ZkMGU0Njc4MTAxOTllZDBhYzM5NzQwYmQ2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgcHJlc2VydmVWYXJpYWJsZUxpZmV0
aW1lcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
b2dyYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExYTJlMmMwMzg3MjU1ZDU3
ZjA5YmE0ZDFlOTJhYWZmNGU0ZWVkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
b2dyYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNs
dWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2lj
cy5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbSB7Ci1w
dWJsaWM6Ci0gICAgUHJvZ3JhbSgpID0gZGVmYXVsdDsKLSAgICBQcm9ncmFtKFByb2dyYW0mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OlR5cGVE
ZWZpbml0aW9uJiYgdHlwZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBtX3R5cGVEZWZpbml0
aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPihXVEZNb3ZlKHR5
cGVEZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV90eXBl
RGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YXBwZW5kKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYmIHN0cnVjdHVyZURlZmluaXRpb24pCi0g
ICAgewotICAgICAgICBtX3N0cnVjdHVyZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oV1RGTW92ZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSkp
OwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9zdHJ1Y3R1cmVEZWZpbml0aW9u
cy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24mJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi0gICAgewot
ICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZW51bWVyYXRpb25EZWZpbml0aW9uKSkp
OwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9lbnVtZXJhdGlvbkRlZmluaXRp
b25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYmIGZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICB7Ci0gICAg
ICAgIG1fZnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbj4oV1RGTW92ZShmdW5jdGlvbkRlZmluaXRpb24pKSk7Ci0gICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChtX2Z1bmN0aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAg
ICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYmIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewotICAgICAg
ICBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNpY3MuYWRkKG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbnMubGFzdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lk
LCBFcnJvcj4gYXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmFwcGVu
ZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25hdGl2ZVR5
cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRk
KG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNW
YWxpZFZlY3RvclByb3BlcnR5KFN0cmluZyk7Ci0KLSAgICBOYW1lQ29udGV4dCYgbmFtZUNvbnRl
eHQoKSB7IHJldHVybiBtX25hbWVDb250ZXh0OyB9Ci0gICAgSW50cmluc2ljcyYgaW50cmluc2lj
cygpIHsgcmV0dXJuIG1faW50cmluc2ljczsgfQotICAgIGNvbnN0IEludHJpbnNpY3MmIGludHJp
bnNpY3MoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6VHlwZURlZmluaXRpb24+PiYgdHlwZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV90
eXBlRGVmaW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4+JiBzdHJ1Y3R1cmVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRGVm
aW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0
aW9uPj4mIGVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2VudW1lcmF0aW9uRGVm
aW5pdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uPj4mIGZ1bmN0aW9uRGVmaW5pdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9u
RGVmaW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uPj4mIGZ1bmN0aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVmaW5pdGlv
bnM7IH0KLSAgICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbj4+JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4+JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygp
IHsgcmV0dXJuIG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bnMoKSB7IHJldHVybiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAg
ICBOYW1lQ29udGV4dCBtX25hbWVDb250ZXh0OwotICAgIEludHJpbnNpY3MgbV9pbnRyaW5zaWNz
OwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlvbj4+IG1fdHlwZURlZmlu
aXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPj4g
bV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RW51bWVy
YXRpb25EZWZpbml0aW9uPj4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOwotICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiBtX2Z1bmN0aW9uRGVmaW5pdGlvbnM7
Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiBt
X25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+PiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMwZmEwYjk5ZThhNTNiOTBhMzI1NzQxMmFkZWY0YjQ5
Y2FjOGQzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgiCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUg
IldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNpbmNsdWRl
ICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBQcm9wZXJ0eVJlc29sdmVyIDogcHVibGljIFZpc2l0b3IgewotICAgIHZv
aWQgaGFuZGxlTGVmdEhhbmRTaWRlQmFzZShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiBiYXNl
LCBVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYgc2xvdCwgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+PiYgZXhwcmVzc2lvbnMpCi0gICAgewotICAgICAgICBpZiAoIWJhc2UtPm1h
eUJlRWZmZWN0ZnVsKCkpIHsKLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGJhc2UpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBsZWZ0QWRkcmVzc1Nw
YWNlID0gYmFzZS0+dHlwZUFubm90YXRpb24oKS5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGxlZnRBZGRyZXNzU3BhY2UpOwotICAgICAgICBDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uID0gYmFzZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiBiYXNlVHlwZSA9IGJhc2UtPnJlc29sdmVkVHlwZSgpOwotICAgICAgICBSZWY8
QVNUOjpQb2ludGVyVHlwZT4gcG9pbnRlclR5cGUgPSBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUo
Y29kZUxvY2F0aW9uLCAqbGVmdEFkZHJlc3NTcGFjZSwgYmFzZVR5cGUuY29weVJlZigpKTsKLQot
ICAgICAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBwb2ludGVyVmFyaWFi
bGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oY29kZUxvY2F0aW9u
LCBBU1Q6OlF1YWxpZmllcnMgeyB9LCBwb2ludGVyVHlwZS5wdHIoKSwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpOwotCi0gICAgICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZd
IHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAocG9pbnRl
clZhcmlhYmxlKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShwb2lu
dGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5
cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9
KTsKLSAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJPZkJhc2UgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIFdURk1vdmUoYmFzZSks
IEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpOwotICAgICAgICAgICAgcG9p
bnRlck9mQmFzZS0+c2V0VHlwZShwb2ludGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAg
cG9pbnRlck9mQmFzZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0g
ICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVu
dEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCksIFdURk1v
dmUocG9pbnRlck9mQmFzZSkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZShwb2lu
dGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZUFubm90
YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBl
bmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhdXRvIGRlcmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhw
cmVzc2lvbj4oY29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAg
ICAgICBkZXJlZmVyZW5jZS0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAg
ICAgZGVyZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgKmxlZnRB
ZGRyZXNzU3BhY2UgfSk7Ci0KLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGRlcmVmZXJlbmNl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKHBvaW50
ZXJWYXJpYWJsZSkpOwotICAgIH0KLQotICAgIHZvaWQgaGFuZGxlUHJvcGVydHlBY2Nlc3MoQVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzLCBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4+JiBleHByZXNzaW9ucykKLSAgICB7Ci0gICAgICAgIEFTVDo6
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKiBjdXJyZW50UHRyID0gJnByb3BlcnR5QWNjZXNzOwot
ICAgICAgICAvLyBhLmJbY10uZCB3aWxsIGdvIGludG8gdGhpcyBhcnJheSBhcyBbLmQsIFtjXSwg
LmJdCi0gICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uPj4gY2hhaW47Ci0KLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgICAgIEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1cnJlbnRQ
dHI7Ci0gICAgICAgICAgICBjaGFpbi5hcHBlbmQoY3VycmVudCk7Ci0gICAgICAgICAgICBpZiAo
aXM8QVNUOjpJbmRleEV4cHJlc3Npb24+KGN1cnJlbnQpKQotICAgICAgICAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY3VycmVudCkuaW5k
ZXhFeHByZXNzaW9uKCkpOwotICAgICAgICAgICAgaWYgKCFpczxBU1Q6OlByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbj4oY3VycmVudC5iYXNlKCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY3VycmVudFB0ciA9ICZkb3duY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbj4oY3VycmVudC5iYXNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24mIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKLQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoY3VycmVudC5iYXNlKCkpOwotCi0gICAgICAgIENvZGVMb2NhdGlvbiBi
YXNlQ29kZUxvY2F0aW9uID0gY3VycmVudC5iYXNlKCkuY29kZUxvY2F0aW9uKCk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoY3VycmVudC5iYXNlKCkudHlwZUFubm90YXRpb24oKS5pc1JpZ2h0VmFs
dWUoKSkgewotICAgICAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4g
Y29weSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihiYXNlQ29kZUxv
Y2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCAmY3VycmVudC5iYXNlKCkucmVzb2x2ZWRUeXBl
KCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiBiYXNlVHlwZSA9IGN1cnJlbnQuYmFzZSgpLnJlc29sdmVkVHlwZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSA9IFsmXSB7
Ci0gICAgICAgICAgICAgICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChjb3B5
KSk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoYmFzZVR5cGUu
Y29weVJlZigpKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFu
bm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwot
ICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgIGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbj4oYmFzZUNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNl
KCksIGN1cnJlbnQudGFrZUJhc2UoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBl
KGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5u
b3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFw
cGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY3Vy
cmVudC5iYXNlUmVmZXJlbmNlKCkgPSBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKTsKLQotICAgICAg
ICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdURk1vdmUoY29weSkpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UoY3VycmVudC50YWtlQmFzZSgpLCBj
dXJyZW50LmJhc2VSZWZlcmVuY2UoKSwgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSBjaGFpbi5zaXplKCk7IGktLTsgKSB7Ci0gICAgICAgICAgICBhdXRvJiBhY2Nlc3Mg
PSBjaGFpbltpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lv
bj4oYWNjZXNzKSAmJiBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oYWNjZXNzKS5pbmRl
eEV4cHJlc3Npb24oKS5tYXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
aW5kZXhFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGFjY2Vzcyk7
Ci0KLSAgICAgICAgICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gaW5kZXhUeXBlID0gaW5k
ZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAg
ICAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4gaW5kZXhWYXJpYWJs
ZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihhY2Nlc3MuY29kZUxv
Y2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycyB7IH0sIGluZGV4VHlwZS5wdHIoKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBtYWtlVmFyaWFibGVS
ZWZlcmVuY2UgPSBbJl0gewotICAgICAgICAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJl
bmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlOjp3cmFwKGluZGV4VmFyaWFibGUpKTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGVSZWZlcmVuY2UtPnNldFR5cGUoaW5kZXhUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRW
YWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgICAgICAgICB9OwotCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24sIG1ha2VW
YXJpYWJsZVJlZmVyZW5jZSgpLCBpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwotICAgICAg
ICAgICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlKGluZGV4VHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJp
Z2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdU
Rk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGluZGV4RXhwcmVzc2lvbi5pbmRleFJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxlUmVmZXJlbmNl
KCk7Ci0KLSAgICAgICAgICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQoV1RGTW92ZShpbmRleFZh
cmlhYmxlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGhh
bmRsZVByb3BlcnR5QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0
eUFjY2VzcykKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
Pj4gZXhwcmVzc2lvbnM7Ci0KLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MocHJvcGVydHlB
Y2Nlc3MsIGV4cHJlc3Npb25zKTsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYWNj
ZXNzVHlwZSA9IHByb3BlcnR5QWNjZXNzLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAgIEFTVDo6
Q29tbWFFeHByZXNzaW9uKiBjb21tYTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlv
biA9IHByb3BlcnR5QWNjZXNzLmNvZGVMb2NhdGlvbigpOwotICAgICAgICBpZiAoaXM8QVNUOjpJ
bmRleEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKSkgewotICAgICAgICAgICAgYXV0byYgaW5k
ZXhFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KHByb3BlcnR5QWNj
ZXNzKTsKLQotICAgICAgICAgICAgYXV0byBuZXdJbmRleEV4cHJlc3Npb24gPSBtYWtlVW5pcXVl
UmVmPEFTVDo6SW5kZXhFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbi50
YWtlQmFzZSgpLCBpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwotICAgICAgICAgICAgbmV3
SW5kZXhFeHByZXNzaW9uLT5zZXRUeXBlKGluZGV4RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7
Ci0gICAgICAgICAgICBuZXdJbmRleEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6
VHlwZUFubm90YXRpb24oaW5kZXhFeHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQotICAg
ICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUobmV3SW5kZXhFeHByZXNzaW9uKSk7
Ci0KLSAgICAgICAgICAgIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1hRXhwcmVz
c2lvbj4oaW5kZXhFeHByZXNzaW9uLCBjb2RlTG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMp
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzPEFTVDo6
RG90RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3MpKTsKLSAgICAgICAgICAgIGF1dG8mIGRvdEV4
cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKTsK
LQotICAgICAgICAgICAgYXV0byBuZXdEb3RFeHByZXNzaW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OkRvdEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgZG90RXhwcmVzc2lvbi50YWtlQmFzZSgpLCBT
dHJpbmcoZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSkpOwotICAgICAgICAgICAgbmV3RG90RXhw
cmVzc2lvbi0+c2V0VHlwZShkb3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAg
ICAgIG5ld0RvdEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6VHlwZUFubm90YXRp
b24oZG90RXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgIGV4cHJl
c3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld0RvdEV4cHJlc3Npb24pKTsKLQotICAgICAgICAgICAg
Y29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6Q29tbWFFeHByZXNzaW9uPihkb3RFeHByZXNz
aW9uLCBjb2RlTG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvbW1hLT5zZXRUeXBlKFdURk1vdmUoYWNjZXNzVHlwZSkpOwotICAgICAgICBjb21t
YS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgIH0KLQotcHVibGlj
OgotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG90RXhwcmVzc2lvbik7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHBy
ZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoaW5k
ZXhFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVz
c2lvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4
cHJlc3Npb25zOwotCi0gICAgICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24gPSByZWFkTW9k
aWZ5V3JpdGUuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHR5cGUgPSByZWFkTW9kaWZ5V3JpdGUucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAgaWYgKGlz
PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVl
KCkpKQotICAgICAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG93bmNhc3Q8QVNUOjpQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSksIGV4cHJl
c3Npb25zKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGFuZGxlTGVmdEhhbmRTaWRlQmFz
ZShyZWFkTW9kaWZ5V3JpdGUudGFrZUxlZnRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUubGVmdFZh
bHVlUmVmZXJlbmNlKCksIGV4cHJlc3Npb25zKTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBV
bmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBuZXdSZWFkTW9kaWZ5V3Jp
dGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oCi0gICAg
ICAgICAgICAgICAgcmVhZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpLCByZWFkTW9kaWZ5V3Jp
dGUudGFrZUxlZnRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU9sZFZhbHVlKCksIHJlYWRN
b2RpZnlXcml0ZS50YWtlTmV3VmFsdWUoKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3Jp
dGUtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihyZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1ZhbHVlRXhw
cmVzc2lvbigpKTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0UmVzdWx0RXhw
cmVzc2lvbihyZWFkTW9kaWZ5V3JpdGUudGFrZVJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgICAg
ICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUtPnNldFR5cGUodHlwZS5jb3B5UmVmKCkpOwotICAgICAg
ICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlR5cGVBbm5v
dGF0aW9uKHJlYWRNb2RpZnlXcml0ZS50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAg
IGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld1JlYWRNb2RpZnlXcml0ZSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYXV0byogY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6Q29tbWFF
eHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUsIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShleHByZXNz
aW9ucykpOwotICAgICAgICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKHR5cGUpKTsKLSAgICAgICAg
Y29tbWEtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhcmlhYmxlcy5pc0Vt
cHR5KCkpOwotCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLQotICAgICAgICBpZiAo
IW1fdmFyaWFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9u
LmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgwLCAKLSAgICAgICAgICAgICAgICBtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5p
dGlvbi5ibG9jaygpLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKG1fdmFyaWFibGVzKSkpOwotICAg
ICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
bV92YXJpYWJsZXM7Ci19OwotCi12b2lkIHJlc29sdmVQcm9wZXJ0aWVzKFByb2dyYW0mIHByb2dy
YW0pCi17Ci0gICAgLy8gVGhlIGdvYWwgb2YgdGhpcyBwaGFzZSBpcyB0d28gYWxsb3cgdHdvIHRo
aW5nczoKLSAgICAvLyAxLiBGb3IgcHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb25zLCBtZXRhbCBj
b2RlZ2VuIHNob3VsZCBiZSBhbGxvd2VkIHRvIGV2YWx1YXRlCi0gICAgLy8gdGhlIGJhc2UsIGFu
ZCBpZiBpdCdzIGFuIGluZGV4IGV4cHJlc3Npb24sIHRoZSBpbmRleCwgYXMgbWFueSB0aW1lcyBh
cyBuZWVkZWQuCi0gICAgLy8gU28gdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgaWYgTWV0YWwgZXZh
bHVhdGVzIHN1Y2ggdGhpbmdzLCBlZmZlY3RzIGFyZW4ndCBwZXJmb3JtZWQKLSAgICAvLyBtb3Jl
IHRoYW4gb25jZS4KLSAgICAvLwotICAgIC8vIDIuIEZvciBSZWFkTW9kaWZ5V3JpdGUgZXhwcmVz
c2lvbnMsIG1ldGFsIGNvZGVnZW4gc2hvdWxkIGJlIGFibGUgdG8gZXZhbHVhdGUgdGhlCi0gICAg
Ly8gbGVmdFZhbHVlRXhwcmVzc2lvbiBhcyBtYW55IHRpbWVzIGFzIGl0J2QgbGlrZSB3aXRob3V0
IHBlcmZvcm1pbmcgdGhlIGVmZmVjdHMgb2YKLSAgICAvLyBsZWZ0VmFsdWVFeHByZXNzaW9uIG1v
cmUgdGhhbiBvbmNlLgotICAgIC8vCi0gICAgLy8gV2UgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2Ug
aXQncyBjb252ZW5pZW50IGZvciBtZXRhbCBjb2RlZ2VuIHRvIGJlIGFibGUgdG8gcmVseSBvbgot
ICAgIC8vIHRoaXMgd2l0aCB0aGUgd2F5IGl0IHN0cnVjdHVyZXMgdGhlIGdlbmVyYXRlZCBjb2Rl
LgotICAgIFByb3BlcnR5UmVzb2x2ZXIgcmVzb2x2ZXI7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlv
biA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICByZXNvbHZlci52aXNp
dChmdW5jdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJl
c29sdmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZWRhYTRlOGQ4YjUwNmEz
NmFmZjFiMjBhOGUzOGE4NjM5ODg3ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQot
dm9pZCByZXNvbHZlUHJvcGVydGllcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUxMTY1NzljMzYwNzUzZmJiYmNlOGY4ZGVjNjVkYmNjMjViMWI3MTcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVhY2hhYmxl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6IHB1Ymxp
YyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbik7Ci0gICAgICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24p
OwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9u
LmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICBIYXNo
U2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsg
cmV0dXJuIFdURk1vdmUobV9yZWFjaGFibGVGdW5jdGlvbnMpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
SGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOwot
fTsKLQotdm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dy
YW0mIHByb2dyYW0pCi17Ci0gICAgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNoYWJsZVN0
ZGxpYkZ1bmN0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uPj4gZnVuY3Rpb25EZWZpbml0aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlvbkRlZmlu
aXRpb25zKCkpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmluaXRpb25z
KSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnZp
c2l0KGZ1bmN0aW9uLmdldCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWZ1bmN0aW9uLT5lbnRyeVBvaW50VHlwZSgpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHJl
YWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVhY2hhYmxl
RnVuY3Rpb25zKCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
bj4+IG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnM7Ci0gICAgZm9yIChVbmlxdWVSZWY8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24+JiBlbnRyeSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKLSAgICAgICAg
aWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZW50cnkuZ2V0KCkpKQotICAgICAgICAg
ICAgbmV3RnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwotICAgIH0K
LQotICAgIHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdGdW5jdGlv
bkRlZmluaXRpb25zKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdjODQ2OTc1ZWI2M2E4MThlNDhmOWY4
OTA1YzBhY2MzN2ZkMzZiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5y
ZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBQcm9ncmFtOwotCi12b2lkIHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MGVlMTI0NjgwYWJiZmJhZTY1ODI3NGZiOWJjYTYyZjNjYmE4NzdlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAi
V0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0vLyBNYWtlcyBzdXJlIHRoZXJlIGlzIG5v
IGZ1bmN0aW9uIHJlY3Vyc2lvbi4KLWNsYXNzIFJlY3Vyc2lvbkNoZWNrZXIgZmluYWwgOiBwdWJs
aWMgVmlzaXRvciB7Ci1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDog
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBpZiAobV9maW5pc2hlZFZpc2l0aW5nLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRp
b24pKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
dGFydGVkVmlzaXRpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90
IHVzZSByZWN1cnNpb24gaW4gdGhlIGNhbGwgZ3JhcGguIiwgZnVuY3Rpb25EZWZpbml0aW9uLmNv
ZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0
YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5p
dGlvbik7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Zpbmlz
aGVkVmlzaXRpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24p
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7
Ci0gICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24u
ZnVuY3Rpb24oKSkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9
Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9zdGFydGVkVmlzaXRp
bmc7Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fZmluaXNoZWRWaXNp
dGluZzsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2lvbihQcm9ncmFt
JiBwcm9ncmFtKQotewotICAgIFJlY3Vyc2lvbkNoZWNrZXIgcmVjdXJzaW9uQ2hlY2tlcjsKLSAg
ICByZWN1cnNpb25DaGVja2VyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIHJldHVybiBy
ZWN1cnNpb25DaGVja2VyLnJlc3VsdCgpOwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM0N2FjMjUwZTRiYzU0YjBhYjkxOTE1ZDFlZjIwODU2MzUzZWU2ZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVj
dXJzaW9uKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1ZDFjNTA3YWM1NjgwMTNmZTkzMmZjMDVhMmM1MjY4ZjQ5NjllZTczLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJv
Z3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNM
VmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUmVjdXJzaXZlVHlwZUNoZWNrZXIgOiBw
dWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGUqPiBtX3N0YXJ0ZWRWaXNpdGluZzsKLSAgICBIYXNo
U2V0PEFTVDo6VHlwZSo+IG1fZmluaXNoZWRWaXNpdGluZzsKLX07Ci0KLSNkZWZpbmUgU1RBUlRf
VklTSVRJTkcodCkgXAotZG8geyBcCi0gICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5jb250YWlu
cyh0KSkgXAotICAgICAgICByZXR1cm47IFwKLSAgICBhdXRvIHJlc3VsdFN0YXJ0ZWRWaXNpdGlu
ZyA9IG1fc3RhcnRlZFZpc2l0aW5nLmFkZCh0KTsgXAotICAgIGlmICghcmVzdWx0U3RhcnRlZFZp
c2l0aW5nLmlzTmV3RW50cnkpIHsgXAotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRl
Y2xhcmUgcmVjdXJzaXZlIHR5cGVzLiIsICh0KS0+Y29kZUxvY2F0aW9uKCkpKTsgXAotICAgICAg
ICByZXR1cm47IFwKLSAgICB9IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotI2RlZmluZSBFTkRfVklT
SVRJTkcodCkgXAotZG8geyBcCi0gICAgYXV0byByZXN1bHRGaW5pc2hlZFZpc2l0aW5nID0gbV9m
aW5pc2hlZFZpc2l0aW5nLmFkZCh0KTsgXAotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RmluaXNo
ZWRWaXNpdGluZywgcmVzdWx0RmluaXNoZWRWaXNpdGluZy5pc05ld0VudHJ5KTsgXAotfSB3aGls
ZSAoZmFsc2UpOwotCi12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVE
ZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBTVEFSVF9WSVNJVElORygmdHlwZURl
ZmluaXRpb24pOwotCi0gICAgVmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwotCi0gICAg
RU5EX1ZJU0lUSU5HKCZ0eXBlRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNo
ZWNrZXI6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlv
bikKLXsKLSAgICBTVEFSVF9WSVNJVElORygmc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0KLSAgICBW
aXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLQotICAgIEVORF9WSVNJVElORygm
c3RydWN0dXJlRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZp
c2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBTVEFSVF9WSVNJ
VElORygmdHlwZVJlZmVyZW5jZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5
cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
dHlwZUFyZ3VtZW50KTsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgp
KSAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2
MSBTaG91bGRuJ3Qgd2Uga25vdyBieSBub3cgd2hldGhlciB0aGUgdHlwZSBoYXMgYmVlbiByZXNv
bHZlZCBvciBub3Q/Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJl
c29sdmVkVHlwZSgpKTsKLQotICAgIEVORF9WSVNJVElORygmdHlwZVJlZmVyZW5jZSk7Ci19Ci0K
LXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpCi17
Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2l2ZVR5cGVzKFByb2dyYW0m
IHByb2dyYW0pCi17Ci0gICAgUmVjdXJzaXZlVHlwZUNoZWNrZXIgcmVjdXJzaXZlVHlwZUNoZWNr
ZXI7Ci0gICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmluaXRp
b25zKCkpCi0gICAgICAgIHJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdCh0
eXBlRGVmaW5pdGlvbik7Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHJv
Z3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBlQ2hlY2tl
ci5jaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHJl
Y3Vyc2l2ZVR5cGVDaGVja2VyLnJlc3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBmMWFjMGY1NzEzMDRiYmVhYTg4MTc1MGQwZGZjMjA2MmU3ZDI0ODcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vy
c2l2ZVR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWUzNmM0NzI1ODY5NjQ4Mjk4ZTI4NTU2YTAxYzQzNzNjNzZiNDNlNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
SW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgPGxpbWl0cz4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBjYW5kaWRhdGUsIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcykKLXsKLSAgICB1bnNp
Z25lZCBjb252ZXJzaW9uQ29zdCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYW5k
aWRhdGUucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnZlcnNpb25Db3N0
ICs9IGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVm
PEFTVDo6VW5uYW1lZFR5cGU+JikgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0dXJuIHJlc29s
dmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmNvbnZlcnNpb25Db3N0KCpjYW5k
aWRhdGUucGFyYW1ldGVycygpW2ldLT50eXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfQotICAg
IC8vIFRoZSByZXR1cm4gdHlwZSBjYW4gbmV2ZXIgYmUgYSBsaXRlcmFsIHR5cGUsIHNvIGl0cyBj
b252ZXJzaW9uIGNvc3QgaXMgYWx3YXlzIDAuCi0gICAgcmV0dXJuIGNvbnZlcnNpb25Db3N0Owot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZUtpbmQ+Ci1zdGF0aWMgQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwoVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rp
b25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3Vt
ZW50VHlwZXMsIFR5cGVLaW5kKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4sIDE+IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJsZUZ1bmN0
aW9uIDogcG9zc2libGVGdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKHBvc3NpYmxlRnVuY3Rpb24u
Z2V0KCkuZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAobmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAg
ICAgICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IEFTVDo6TmFt
ZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5uYW1l
U3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5ICYmIHBvc3NpYmxlRnVu
Y3Rpb24uZ2V0KCkubmFtZVNwYWNlKCkgIT0gbmFtZVNwYWNlKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yQ2FsbChwb3NzaWJs
ZUZ1bmN0aW9uLmdldCgpLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAg
ICAgICBjYW5kaWRhdGVzLmFwcGVuZChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpKTsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCBtaW5pbXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCk7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVz
KQotICAgICAgICBtaW5pbXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om1pbihtaW5pbXVtQ29udmVy
c2lvbkNvc3QsIGNvbnZlcnNpb25Db3N0KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRUeXBlcykp
OwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4gbWluaW11bUNvc3RDYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlk
YXRlIDogY2FuZGlkYXRlcykgewotICAgICAgICBpZiAoY29udmVyc2lvbkNvc3QoY2FuZGlkYXRl
LmdldCgpLCBhcmd1bWVudFR5cGVzKSA9PSBtaW5pbXVtQ29udmVyc2lvbkNvc3QpCi0gICAgICAg
ICAgICBtaW5pbXVtQ29zdENhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7Ci0gICAgfQotCi0g
ICAgaWYgKG1pbmltdW1Db3N0Q2FuZGlkYXRlcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJu
ICZtaW5pbXVtQ29zdENhbmRpZGF0ZXNbMF0uZ2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4m
IHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZp
bmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAg
ICByZXR1cm4gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBh
cmd1bWVudFR5cGVzLCBzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KG51bGxwdHIpLCBuYW1l
U3BhY2UpOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92
ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJl
dHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2
ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBhcmd1bWVudFR5cGVzLCBj
YXN0UmV0dXJuVHlwZSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
KiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNU
OjpVbm5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkK
LXsKLSAgICByZXR1cm4gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rp
b25zLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSwgbmFtZVNwYWNlKTsKLX0KLQotQVNU
OjpOYW1lZFR5cGUqIHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4mIHBvc3NpYmxlVHlwZXMsIEFTVDo6VHlwZUFy
Z3VtZW50cyYgdHlwZUFyZ3VtZW50cykKLXsKLSAgICBBU1Q6Ok5hbWVkVHlwZSogcmVzdWx0ID0g
bnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIHBvc3NpYmxlVHlwZSA6IHBvc3NpYmxlVHlwZXMpIHsK
LSAgICAgICAgaWYgKGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHBvc3NpYmxlVHlwZSwgdHlw
ZUFyZ3VtZW50cykpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICByZXN1bHQgPSAmc3RhdGljX2Nhc3Q8QVNUOjpO
YW1lZFR5cGUmPihwb3NzaWJsZVR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVy
bG9hZEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzMjJlODQ0ZGYzZmI4
YmFhYTg2OTA4ODhmNzg5MmExMTY3MzlmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlc29sdmVPdmVybG9hZEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3Vt
ZW50LmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYW1lZFR5cGU7Ci0KLX0K
LQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYg
cG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmlu
Z1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1lU3BhY2UpOwotQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMs
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRU
eXBlcywgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSk7Ci1B
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlw
ZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNU
OjpOYW1lU3BhY2UpOwotQVNUOjpOYW1lZFR5cGUqIHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4mLCBBU1Q6OlR5
cGVBcmd1bWVudHMmKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlc29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVzb2x2aW5nVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2VhNDU3
YTg1MzIwYjk5ZDk5OWZkMTk2ZmIwMTY4NzRkNzZkNTI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb2x2YWJsZVR5cGU7
Ci0KLX0KLQotLy8gVGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSB0eXBlIG9mIG9uZSBBU1Qgbm9k
ZSBzaG91bGQgbWF0Y2ggdGhlIHR5cGUgb2YgYW5vdGhlciBBU1Qgbm9kZS4KLS8vIE9uZSBleGFt
cGxlIG9mIHRoaXMgaXMgdGhlIGNvbW1hIGV4cHJlc3Npb24gLSB0aGUgdHlwZSBvZiB0aGUgY29t
bWEgZXhwcmVzc2lvbiBzaG91bGQgbWF0Y2ggdGhlIHR5cGUgb2YgaXRzIGxhc3QgaXRlbS4KLS8v
IElmIHRoaXMgdHlwZSBoYXBwZW5zIHRvIGJlIGEgcmVzb2x2YWJsZSB0eXBlLCBpdCB3aWxsIGdl
dCByZXNvbHZlZCBsYXRlci4gV2hlbiB0aGF0IGhhcHBlbnMsCi0vLyBib3RoIG9mIHRoZSBBU1Qg
bm9kZXMgaGF2ZSB0byBiZSByZXNvbHZlZCB0byB0aGUgcmVzdWx0IHR5cGUuIFRoaXMgY2xhc3Mg
cmVwcmVzZW50cyBhCi0vLyByZWZlcmVuY2UgY291bnRlZCB3cmFwcGVyIGFyb3VuZCBhIHJlc29s
dmFibGUgdHlwZSBzbyBib3RoIGVudHJpZXMgaW4gdGhlIHR5cGUgbWFwIGNhbiBwb2ludAotLy8g
dG8gdGhlIHNhbWUgcmVzb2x2YWJsZSB0eXBlLCBzbyByZXNvbHZpbmcgaXQgb25jZSByZXNvbHZl
cyBib3RoIHRoZSBlbnRyaWVzIGluIHRoZSBtYXAuCi0vLyBUaGlzIGNsYXNzIGNvdWxkIHByb2Jh
Ymx5IGJlIHJlcHJlc2VudGVkIGFzCi0vLyAiY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Ug
OiBwdWJsaWMgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlJlc29sdmFibGVUeXBlPiwgcHVi
bGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Uge30iCi0vLyBidXQgSSBkaWRu
J3Qgd2FudCB0byBiZSB0b28gY2xldmVyLgotY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewotcHVibGljOgot
ICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFi
bGVUeXBlKQotICAgICAgICA6IG1fcmVzb2x2YWJsZVR5cGUoJnJlc29sdmFibGVUeXBlKQotICAg
IHsKLSAgICB9Ci0KLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShjb25zdCBSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlJiYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0
ZTsKLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlJiYpID0gZGVsZXRlOwotCi0gICAgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2
YWJsZVR5cGUoKSB7IHJldHVybiAqbV9yZXNvbHZhYmxlVHlwZTsgfQotCi1wcml2YXRlOgotICAg
IEFTVDo6UmVzb2x2YWJsZVR5cGUqIG1fcmVzb2x2YWJsZVR5cGU7Ci19OwotCi0vLyBUaGlzIGlz
IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBhIFZhcmlhbnQuCi0vLyBJdCBleGlzdHMgc28gd2UgY2Fu
IG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRo
aW5nLgotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgxNTggVGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi1jbGFzcyBSZXNvbHZp
bmdUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZXNv
bHZpbmdUeXBlKCkKLSAgICAgICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4oKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4gdikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAgewotICAgIH0K
LQotICAgIFJlc29sdmluZ1R5cGUoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB2KQot
ICAgICAgICA6IG1faW5uZXIoV1RGTW92ZSh2KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2
aW5nVHlwZShjb25zdCBSZXNvbHZpbmdUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2aW5nVHlw
ZShSZXNvbHZpbmdUeXBlJiYgb3RoZXIpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3ZlKG90aGVy
Lm1faW5uZXIpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlJiBvcGVyYXRvcj0o
Y29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmluZ1R5cGUmIG9wZXJh
dG9yPShSZXNvbHZpbmdUeXBlJiYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2lubmVyID0gV1RG
TW92ZShvdGhlci5tX2lubmVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IEFTVDo6VW5uYW1lZFR5cGUqIGdldFVubmFtZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlVubmFtZWRUeXBlPj4obV9pbm5lcikpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+PihtX2lubmVy
KS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4g
ZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxSZWY8QVNU
OjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+Jj4oKSkpCi0g
ICAgewotICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFudDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+IG1faW5uZXI7Ci19OwotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTIzYzExNWUxYzE0YmE5N2Q3NWNkMGExOGZkMTQ4MzFhMTA1Yjk5
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFNjb3BlZFNldEFkZGVyIHsKLXB1YmxpYzoKLSAgICBTY29wZWRTZXRBZGRl
cihIYXNoU2V0PFQ+JiBzZXQsIFQmJiBpdGVtKQotICAgICAgICA6IG1fc2V0KHNldCkKLSAgICAg
ICAgLCBtX2l0ZW0oV1RGTW92ZShpdGVtKSkKLSAgICB7Ci0gICAgICAgIG1faXNOZXdFbnRyeSA9
IHN0YXRpY19jYXN0PGJvb2w+KG1fc2V0LmFkZChtX2l0ZW0pKTsKLSAgICB9Ci0KLSAgICB+U2Nv
cGVkU2V0QWRkZXIoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lzTmV3RW50cnkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fc2V0LnJlbW92ZShtX2l0ZW0p
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgIH0KLQotICAg
IGJvb2wgaXNOZXdFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdFbnRyeTsgfQotCi1wcml2
YXRlOgotICAgIEhhc2hTZXQ8VD4mIG1fc2V0OwotICAgIFQgbV9pdGVtOwotICAgIGJvb2wgbV9p
c05ld0VudHJ5OwotfTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJmMjA4ODJlOTA1NTMxMjY0YTA3NzM1MWVlNDkwNTAxOWI0MmY4NTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xTZW1hbnRpY01hdGNoZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgot
I2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNv
dXJjZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotc3RhdGljIGJvb2wgbWF0Y2hNb2RlKEJpbmRpbmc6OkJpbmRpbmdEZXRh
aWxzIGJpbmRpbmdUeXBlLCBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGUgbW9kZSkKLXsKLSAg
ICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVmZmVyQmlu
ZGluZykgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1h
bnRpYzo6TW9kZTo6QnVmZmVyOwotICAgIH0sIFsmXShTYW1wbGVyQmluZGluZykgLT4gYm9vbCB7
Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6U2Ft
cGxlcjsKLSAgICB9LCBbJl0oVGV4dHVyZUJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1
cm4gbW9kZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlRleHR1cmU7Ci0gICAgfSwg
WyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5nKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1vZGUg
PT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OwotICAg
IH0pLCBiaW5kaW5nVHlwZSk7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8Qmlu
ZGluZyosIHNpemVfdD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGVu
dHJ5UG9pbnRJdGVtcywgTGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQot
ewotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8c2l6
ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgYmluZEdyb3VwIDogbGF5
b3V0KSB7Ci0gICAgICAgIGF1dG8gc3BhY2UgPSBiaW5kR3JvdXAubmFtZTsKLSAgICAgICAgZm9y
IChhdXRvJiBiaW5kaW5nIDogYmluZEdyb3VwLmJpbmRpbmdzKSB7Ci0gICAgICAgICAgICBpZiAo
IWJpbmRpbmcudmlzaWJpbGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5UG9p
bnRJdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBlbnRy
eVBvaW50SXRlbXNbaV07Ci0gICAgICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5z
ZW1hbnRpYzsKLSAgICAgICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNU
OjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIGF1dG8mIHJlc291cmNlU2VtYW50aWMgPSBXVEY6OmdldDxB
U1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1h
dGNoTW9kZShiaW5kaW5nLmJpbmRpbmcsIHJlc291cmNlU2VtYW50aWMubW9kZSgpKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGJpbmRpbmcuZXh0
ZXJuYWxOYW1lICE9IHJlc291cmNlU2VtYW50aWMuaW5kZXgoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHNwYWNlICE9IHJlc291cmNlU2VtYW50
aWMuc3BhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZCgmYmluZGluZywgaSk7Ci0gICAgICAgICAgICAgICAgaXRlbUluZGljZXMu
YWRkKGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgaXRlbSA9IGVudHJ5UG9pbnRJdGVtc1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAq
aXRlbS5zZW1hbnRpYzsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6
UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmICghaXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29s
IG1hdGNoSW5wdXRzT3V0cHV0cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiB2ZXJ0ZXhPdXRwdXRz
LCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudElucHV0cykKLXsKLSAgICBmb3IgKGF1
dG8mIGZyYWdtZW50SW5wdXQgOiBmcmFnbWVudElucHV0cykgewotICAgICAgICBpZiAoIVdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCpmcmFnbWVudElucHV0
LnNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBmcmFnbWVu
dElucHV0U3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50
aWM+KCpmcmFnbWVudElucHV0LnNlbWFudGljKTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OwotICAgICAgICBmb3IgKGF1dG8mIHZlcnRleE91dHB1dCA6IHZlcnRleE91dHB1dHMpIHsKLSAg
ICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1h
bnRpYz4oKnZlcnRleE91dHB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBhdXRvJiB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6
OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKnZlcnRleE91dHB1dC5zZW1hbnRpYyk7Ci0g
ICAgICAgICAgICBpZiAoZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpID09
IHZlcnRleE91dHB1dFN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1hdGNoZXMoKmZyYWdtZW50SW5wdXQudW5uYW1lZFR5cGUsICp2ZXJ0ZXhPdXRwdXQu
dW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZv
dW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFZlcnRleEZvcm1hdCB2ZXJ0ZXhG
b3JtYXQsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzKQotewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBWZXJ0ZXhGb3Jt
YXQ6OkZsb2F0UjMyRzMyQjMyQTMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmVydGV4Rm9ybWF0OjpGbG9h
dFIzMkczMkIzMjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNp
Y3MuZmxvYXQzVHlwZSgpKTsKLSAgICBjYXNlIFZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzI6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0MlR5cGUo
KSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZlcnRleEZvcm1hdCA9PSBWZXJ0ZXhG
b3JtYXQ6OkZsb2F0UjMyKTsKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMo
VmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2
ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIEhhc2hNYXA8
VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXplX3QsIERl
ZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6
ZV90Pj4gaXRlbUluZGljZXM7Ci0gICAgZm9yIChhdXRvJiB2ZXJ0ZXhBdHRyaWJ1dGUgOiB2ZXJ0
ZXhBdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVydGV4SW5w
dXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gdmVydGV4SW5wdXRz
W2ldOwotICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAg
ICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRp
Yz4oc2VtYW50aWMpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0
byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+
KHNlbWFudGljKTsKLSAgICAgICAgICAgIGlmIChzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSAh
PSB2ZXJ0ZXhBdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24pCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdCh2ZXJ0ZXhBdHRyaWJ1dGUu
dmVydGV4Rm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcykpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoJnZlcnRl
eEF0dHJpYnV0ZSwgaSk7Ci0gICAgICAgICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlcnRleElucHV0cy5zaXpl
KCk7ICsraSkgewotICAgICAgICBhdXRvJiBpdGVtID0gdmVydGV4SW5wdXRzW2ldOwotICAgICAg
ICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVGb3JtYXQoVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgSW50cmluc2ljcyYg
aW50cmluc2ljcywgYm9vbCBpc0NvbG9yKQotewotICAgIGlmIChpc0NvbG9yKSB7Ci0gICAgICAg
IHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgewotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4
VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhVbm9ybVNyZ2I6Ci0gICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpSMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZTbm9ybToKLSAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZGbG9hdDoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBp
bnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhV
bm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhVbm9ybVNyZ2I6Ci0gICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukc4U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1h
dDo6UkcxNlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZTbm9ybToKLSAg
ICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzE2RmxvYXQ6Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UkczMkZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MuZmxvYXQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpCNUc2UjVVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzExQjEwRmxvYXQ6
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9h
dDNUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm06Ci0gICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4
dHVyZUZvcm1hdDo6QkdSQThVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpCR1JB
OFVub3JtU3JnYjoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFNub3JtOgotICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQjEwQTJVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSR0JBMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JB
MTZTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDoKLSAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UjMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVG
b3JtYXQ6OlIzMlNpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5pbnRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJV
aW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
dWludDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJTaW50OgotICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50MlR5cGUo
KSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyVWludDoKLSAgICAgICAgICAg
IHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnQ0VHlwZSgpKTsKLSAg
ICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJTaW50OgotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50NFR5cGUoKSk7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+
PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRP
dXRwdXRzLCBWZWN0b3I8QXR0YWNobWVudERlc2NyaXB0b3I+JiBhdHRhY2htZW50RGVzY3JpcHRv
cnMsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgSGFzaE1hcDxBdHRhY2htZW50RGVz
Y3JpcHRvciosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0SGFz
aDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IGl0
ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgYXR0YWNobWVudERlc2NyaXB0b3IgOiBhdHRhY2ht
ZW50RGVzY3JpcHRvcnMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFnbWVu
dE91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBmcmFnbWVu
dE91dHB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGlj
OwotICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91
dFNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRpYy5p
bmRleCgpICE9IGF0dGFjaG1lbnREZXNjcmlwdG9yLm5hbWUpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdChhdHRhY2htZW50RGVz
Y3JpcHRvci50ZXh0dXJlRm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcywgdHJ1
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIHJl
c3VsdC5hZGQoJmF0dGFjaG1lbnREZXNjcmlwdG9yLCBpKTsKLSAgICAgICAgICAgIGl0ZW1JbmRp
Y2VzLmFkZChpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhZ21lbnRPdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBm
cmFnbWVudE91dHB1dHNbaV07Ci0gICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50
aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICgh
aXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoRGVw
dGhBdHRhY2htZW50KFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0cywgc3Rk
OjpvcHRpb25hbDxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBzdGQ6OmZpbmRfaWYoZnJhZ21lbnRPdXRwdXRzLmJlZ2luKCksIGZyYWdtZW50T3V0cHV0cy5l
bmQoKSwgWyZdKEVudHJ5UG9pbnRJdGVtJiBpdGVtKSB7Ci0gICAgICAgIGF1dG8mIHNlbWFudGlj
ID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxB
U1Q6OkJ1aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICByZXR1cm4gYnVpbHRJblNlbWFudGljLnZhcmlh
YmxlKCkgPT0gQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOwotICAgIH0p
OwotICAgIGlmIChpdGVyYXRvciA9PSBmcmFnbWVudE91dHB1dHMuZW5kKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKSB7
Ci0gICAgICAgIEFTU0VSVCghZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3ItPm5hbWUp
OwotICAgICAgICByZXR1cm4gaXNBY2NlcHRhYmxlRm9ybWF0KGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yLT50ZXh0dXJlRm9ybWF0LCAqaXRlcmF0b3ItPnVubmFtZWRUeXBlLCBpbnRy
aW5zaWNzLCBmYWxzZSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RkOjpvcHRp
b25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9n
cmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwg
Ym9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKQot
ewotICAgIGF1dG8gdmVydGV4RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1
bmN0aW9ucyhyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5hbWUsIEFT
VDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICBpZiAodmVydGV4RnVuY3Rpb25zLnNpemUo
KSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAh
aXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byYgdmVydGV4U2hhZGVyRW50cnlQ
b2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNb
MF0uZ2V0KCkpOwotICAgIGF1dG8gdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zID0gZ2F0aGVy
RW50cnlQb2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCB2ZXJ0ZXhTaGFkZXJFbnRyeVBv
aW50KTsKLSAgICBpZiAoIXZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHZlcnRleFNoYWRlclJlc291cmNlTWFwID0gbWF0
Y2hSZXNvdXJjZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpWZXJ0ZXgpOwotICAgIGlmICgh
dmVydGV4U2hhZGVyUmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgYXV0byBtYXRjaGVkVmVydGV4QXR0cmlidXRlcyA9IG1hdGNoVmVydGV4QXR0cmlidXRlcyh2
ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLnZlcnRleEF0dHJpYnV0ZXMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKLSAgICBpZiAoIW1h
dGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IGlmICghZnJhZ21lbnRTaGFkZXJFeGlzdHMpCi0gICAgICAgIHJldHVybiB7eyAmdmVydGV4U2hh
ZGVyRW50cnlQb2ludCwgbnVsbHB0ciwgKnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgRW50
cnlQb2ludEl0ZW1zKCksICp2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgSGFzaE1hcDxCaW5kaW5n
Kiwgc2l6ZV90PigpLCAqbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMsIEhhc2hNYXA8QXR0YWNobWVu
dERlc2NyaXB0b3IqLCBzaXplX3Q+KCkgfX07Ci0KLSAgICBhdXRvIGZyYWdtZW50TmFtZVNwYWNl
ID0gZGlzdGluY3RGcmFnbWVudFNoYWRlciA/IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyIDog
QVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTE7Ci0gICAgYXV0byBmcmFnbWVudEZ1bmN0aW9ucyA9
IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmZyYWdtZW50RW50cnlQb2ludE5hbWUsIGZyYWdtZW50TmFtZVNwYWNlKTsKLSAgICBpZiAo
ZnJhZ21lbnRGdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZyYWdtZW50RnVuY3Rpb25zWzBdLmdl
dCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFn
bWVudEZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgYXV0byYgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+KGZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIGZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKHByb2dyYW0u
aW50cmluc2ljcygpLCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlmICghZnJhZ21l
bnRTaGFkZXJFbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgYXV0byBmcmFnbWVudFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXMoZnJhZ21l
bnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmxheW91dCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVy
UmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFtYXRj
aElucHV0c091dHB1dHModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBmcmFn
bWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzID0gbWF0Y2hDb2xvckF0
dGFjaG1lbnRzKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERl
c2NyaXB0b3JzLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0gICAgaWYgKCFtYXRjaGVkQ29sb3JB
dHRhY2htZW50cykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIW1hdGNo
RGVwdGhBdHRhY2htZW50KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuZGVwdGhT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIHByb2dyYW0uaW50cmluc2ljcygpKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5
UG9pbnQsICZmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsICpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKnZlcnRleFNoYWRlclJlc291
cmNlTWFwLCAqZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1
dGVzLCAqbWF0Y2hlZENvbG9yQXR0YWNobWVudHMgfX07Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0
Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dyYW0sIENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpCi17Ci0g
ICAgYXV0byBmdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuZW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpO
YW1lU3BhY2UxKTsKLSAgICBpZiAoZnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmdW5jdGlvbnNb
MF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+
KGZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
YXV0byYgZW50cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5j
dGlvbnNbMF0uZ2V0KCkpOwotICAgIGF1dG8gZW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQ
b2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCBlbnRyeVBvaW50KTsKLSAgICBpZiAoIWVu
dHJ5UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBBU1NFUlQo
ZW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLmlzRW1wdHkoKSk7Ci0gICAgYXV0byByZXNvdXJjZU1h
cCA9IG1hdGNoUmVzb3VyY2VzKGVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCBjb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIGlmICghcmVz
b3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHt7ICZl
bnRyeVBvaW50LCAqZW50cnlQb2ludEl0ZW1zLCAqcmVzb3VyY2VNYXAgfX07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZGJmNmM2NzNkM2RlYjZjN2ZjMWYzMjM5ZWE4YjBmZDBhMzI3ODcyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJ
dGVtcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1jbGFzcyBQcm9ncmFtOwotCi1zdHJ1Y3QgTWF0Y2hlZFJlbmRlclNlbWFudGljcyB7Ci0g
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHZlcnRleFNoYWRlcjsKLSAgICBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiogZnJhZ21lbnRTaGFkZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1zIHZlcnRl
eFNoYWRlckVudHJ5UG9pbnRJdGVtczsKLSAgICBFbnRyeVBvaW50SXRlbXMgZnJhZ21lbnRTaGFk
ZXJFbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiB2ZXJ0ZXhT
aGFkZXJSZXNvdXJjZU1hcDsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IGZyYWdtZW50
U2hhZGVyUmVzb3VyY2VNYXA7Ci0gICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+
IG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0
b3IqLCBzaXplX3Q+IG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzOwotfTsKLQotc3RkOjpvcHRpb25h
bDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZy
YWdtZW50U2hhZGVyRXhpc3RzKTsKLQotc3RydWN0IE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIHsK
LSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogc2hhZGVyOwotICAgIEVudHJ5UG9pbnRJdGVt
cyBlbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiByZXNvdXJj
ZU1hcDsKLX07Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNo
U2VtYW50aWNzKFByb2dyYW0mLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTg3YzA1NjIyNjdhN2JiYzFkNWI0ZGI5Yjg5MzlmNWRmNzAxYWEw
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwxODAwMyArMCwwIEBACi0vLyBUaGlzIHdhcyBhdXRvZ2VuZXJhdGVk
IGZyb20gR2VuZXJhdGVfU3RhbmRhcmRfTGlicmFyeS5qcy4KLS8vIFRoaXMgc3RhbmRhcmQgbGli
cmFyeSBoYXMgYmVlbiBwcm9jZXNzZWQgc3VjaCB0aGF0IGZ1bmN0aW9ucyB3aGljaCBzaGFyZSBh
IG5hbWUgYXJlIG5leHQgdG8gZWFjaCBvdGhlciwKLS8vIGFuZCBiZWZvcmUgZWFjaCBncm91cCBv
ZiBmdW5jdGlvbnMsIHRoZXJlJ3MgYSBwcmVmaXggdGhhdCBoYXMgdG8gYmUgaW4gYSBwYXJ0aWN1
bGFyIGZvcm0uCi0vLyBUaGUgV2ViS2l0IGJ1aWxkIHByb2Nlc3MgZXhwbG9pdHMgdGhpcyBzdHJ1
Y3R1cmUgdG8gYnVpbGQgYSBtYXAgb2Ygd2hpY2ggZnVuY3Rpb24gbmFtZSBjb3JyZXNwb25kcyB0
byB3aGljaAotLy8gcGFydCBvZiB0aGlzIGZpbGUuIFRoZW4sIHdoZW4gd2UgcGFyc2UgV0hMU0wg
cHJvZ3JhbXMsIHdlIGNhbiBvbmx5IHBhcnNlIHRoZSBwaWVjZXMgb2YgdGhpcyBzdGFuZGFyZCBs
aWJyYXJ5Ci0vLyB3aGljaCBjb3JyZXNwb25kIHRvIGZ1bmN0aW9ucyB0aGF0IGFyZSBhY3R1YWxs
eSB1c2VkIGluIHRoZSB1c2VyIHByb2dyYW0uCi0KLW5hdGl2ZSB0eXBlZGVmIHZvaWQ7Ci1uYXRp
dmUgdHlwZWRlZiBib29sOwotbmF0aXZlIHR5cGVkZWYgdWludDsKLW5hdGl2ZSB0eXBlZGVmIGlu
dDsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0OwotbmF0aXZlIHR5cGVkZWYgYXRvbWljX2ludDsKLW5h
dGl2ZSB0eXBlZGVmIGF0b21pY191aW50OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+
OwotdHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29sLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxib29sLCAzPjsKLXR5cGVkZWYgYm9vbDMgPSB2ZWN0b3I8Ym9vbCwgMz47Ci1uYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8Ym9vbCwgND47Ci10eXBlZGVmIGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+Owot
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwotdHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1
aW50LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKLXR5cGVkZWYgdWludDMg
PSB2ZWN0b3I8dWludCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47Ci10eXBl
ZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwg
Mj47Ci10eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxpbnQsIDM+OwotdHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47Ci1uYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8aW50LCA0PjsKLXR5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQsIDQ+OwotbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAyPjsKLXR5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0
LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Ci10eXBlZGVmIGZsb2F0MyA9
IHZlY3RvcjxmbG9hdCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwotdHlw
ZWRlZiBmbG9hdDQgPSB2ZWN0b3I8ZmxvYXQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8
ZmxvYXQsIDIsIDI+OwotdHlwZWRlZiBmbG9hdDJ4MiA9IG1hdHJpeDxmbG9hdCwgMiwgMj47Ci1u
YXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIsIDM+OwotdHlwZWRlZiBmbG9hdDJ4MyA9IG1h
dHJpeDxmbG9hdCwgMiwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIsIDQ+Owot
dHlwZWRlZiBmbG9hdDJ4NCA9IG1hdHJpeDxmbG9hdCwgMiwgND47Ci1uYXRpdmUgdHlwZWRlZiBt
YXRyaXg8ZmxvYXQsIDMsIDI+OwotdHlwZWRlZiBmbG9hdDN4MiA9IG1hdHJpeDxmbG9hdCwgMywg
Mj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotdHlwZWRlZiBmbG9hdDN4
MyA9IG1hdHJpeDxmbG9hdCwgMywgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDMs
IDQ+OwotdHlwZWRlZiBmbG9hdDN4NCA9IG1hdHJpeDxmbG9hdCwgMywgND47Ci1uYXRpdmUgdHlw
ZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDI+OwotdHlwZWRlZiBmbG9hdDR4MiA9IG1hdHJpeDxmbG9h
dCwgNCwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotdHlwZWRlZiBm
bG9hdDR4MyA9IG1hdHJpeDxmbG9hdCwgNCwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Zmxv
YXQsIDQsIDQ+OwotdHlwZWRlZiBmbG9hdDR4NCA9IG1hdHJpeDxmbG9hdCwgNCwgND47Ci0KLW5h
dGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCAyPjsKLXR5cGVkZWYgYm9vbDJ4MiA9IG1hdHJp
eDxib29sLCAyLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCAzPjsKLXR5cGVk
ZWYgYm9vbDJ4MyA9IG1hdHJpeDxib29sLCAyLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxi
b29sLCAyLCA0PjsKLXR5cGVkZWYgYm9vbDJ4NCA9IG1hdHJpeDxib29sLCAyLCA0PjsKLW5hdGl2
ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCAyPjsKLXR5cGVkZWYgYm9vbDN4MiA9IG1hdHJpeDxi
b29sLCAzLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCAzPjsKLXR5cGVkZWYg
Ym9vbDN4MyA9IG1hdHJpeDxib29sLCAzLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29s
LCAzLCA0PjsKLXR5cGVkZWYgYm9vbDN4NCA9IG1hdHJpeDxib29sLCAzLCA0PjsKLW5hdGl2ZSB0
eXBlZGVmIG1hdHJpeDxib29sLCA0LCAyPjsKLXR5cGVkZWYgYm9vbDR4MiA9IG1hdHJpeDxib29s
LCA0LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0LCAzPjsKLXR5cGVkZWYgYm9v
bDR4MyA9IG1hdHJpeDxib29sLCA0LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0
LCA0PjsKLXR5cGVkZWYgYm9vbDR4NCA9IG1hdHJpeDxib29sLCA0LCA0PjsKLQotbmF0aXZlIHR5
cGVkZWYgc2FtcGxlcjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUxRDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDM+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUxRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDI+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTFEPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxm
bG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMUQ8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQ+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWludDI+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTFEQXJyYXk8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWlu
dDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUxREFycmF5PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50
Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUxREFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZs
b2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdDM+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1
aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlMkQ8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQ0PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludDI+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTJEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0PjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUyRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0Mz47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUyREFycmF5PHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWludDI+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTJEQXJyYXk8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8aW50PjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTJEQXJyYXk8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQ0PjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUyREFycmF5PGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9h
dDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUzRDx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50Mj47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNE
PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTNEPGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludDM+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTNEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZsb2F0
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTNEPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQ0PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8
dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludDM+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZUN1YmU8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50PjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZUN1YmU8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQ0PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZs
b2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdDM+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZUN1YmU8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aDJEPGZs
b2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD47Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBy
ZXZlcnNlYml0cyAqLwotdWludCByZXZlcnNlYml0cyh1aW50IHgpIHsKLSAgICByZXR1cm4gdWlu
dCgoKHggJiB1aW50KDEgPDwgMCkpIDw8IDMxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8
PCAxKSkgPDwgMjkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIpKSA8PCAyNykgfAot
ICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMykpIDw8IDI1KSB8Ci0gICAgICAgICAgICgoeCAm
IHVpbnQoMSA8PCA0KSkgPDwgMjMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDUpKSA8
PCAyMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNikpIDw8IDE5KSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCA3KSkgPDwgMTcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDgpKSA8PCAxNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgOSkpIDw8IDEzKSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxMCkpIDw8IDExKSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCAxMSkpIDw8IDkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEy
KSkgPDwgNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTMpKSA8PCA1KSB8Ci0gICAg
ICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNCkpIDw8IDMpIHwKLSAgICAgICAgICAgKCh4ICYgdWlu
dCgxIDw8IDE1KSkgPDwgMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTYpKSA+PiAx
KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNykpID4+IDMpIHwKLSAgICAgICAgICAg
KCh4ICYgdWludCgxIDw8IDE4KSkgPj4gNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwg
MTkpKSA+PiA3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMCkpID4+IDkpIHwKLSAg
ICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIxKSkgPj4gMTEpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDIyKSkgPj4gMTMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIzKSkg
Pj4gMTUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI0KSkgPj4gMTcpIHwKLSAgICAg
ICAgICAgKCh4ICYgdWludCgxIDw8IDI1KSkgPj4gMTkpIHwKLSAgICAgICAgICAgKCh4ICYgdWlu
dCgxIDw8IDI2KSkgPj4gMjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI3KSkgPj4g
MjMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI4KSkgPj4gMjUpIHwKLSAgICAgICAg
ICAgKCh4ICYgdWludCgxIDw8IDI5KSkgPj4gMjcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDMwKSkgPj4gMjkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMxKSkgPj4gMzEp
KTsKLX0KLXVpbnQyIHJldmVyc2ViaXRzKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gcmV2ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJz
ZWJpdHMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIHJldmVyc2ViaXRzKHVp
bnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2ZXJzZWJpdHMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gcmV2ZXJzZWJpdHMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IHJldmVy
c2ViaXRzKHVpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2
ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gcmV2ZXJzZWJpdHMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcmV2ZXJzZWJp
dHMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
aXNvcmRlcmVkICovCi1ib29sIGlzb3JkZXJlZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0
dXJuICh4ID09IHgpICYmICh5ID09IHkpOwotfQotYm9vbDIgaXNvcmRlcmVkKGZsb2F0MiB4LCBm
bG9hdDIgeSkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQo
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc29yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KSB7
Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzb3JkZXJlZCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBpc29yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gaXNvcmRlcmVkKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBp
c29yZGVyZWQoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGlzb3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc29yZGVy
ZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNvcmRlcmVkKHhbMl0sIHlbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGlzb3JkZXJlZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdHJhbnNwb3NlICovCi1mbG9hdCB0cmFuc3Bvc2Uo
ZmxvYXQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQyeDIgdHJhbnNwb3NlKGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsK
LSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgdHJhbnNwb3NlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAg
IHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRyYW5zcG9zZShmbG9hdDJ4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVz
dWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJl
c3VsdFszXVswXSA9IHhbMF1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAg
cmVzdWx0WzNdWzFdID0geFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
dHJhbnNwb3NlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRyYW5zcG9zZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFsw
XVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0
WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyB0cmFuc3Bvc2UoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVsw
XSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbM11b
MF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFsz
XVsxXSA9IHhbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRb
MV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAgcmVzdWx0
WzNdWzJdID0geFsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdHJhbnNw
b3NlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsx
XSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzBd
WzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0cmFuc3Bvc2UoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9
IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFd
ID0geFsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsy
XSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbMF1b
M10gPSB4WzNdWzBdOwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0gICAgcmVzdWx0WzJd
WzNdID0geFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdHJhbnNwb3Nl
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
eFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9
IHhbMF1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFd
ID0geFsxXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3VsdFswXVsy
XSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1b
Ml0gPSB4WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmVzdWx0WzBd
WzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJlc3VsdFsy
XVszXSA9IHhbM11bMl07Ci0gICAgcmVzdWx0WzNdWzNdID0geFszXVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZEFkZCAqLwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFk
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50Kiwg
aW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRv
bWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRB
ZGQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0
aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3Vw
IGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2
aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21p
Y19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRo
cmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFk
Z3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzYXR1cmF0ZSAqLwotZmxvYXQgc2F0
dXJhdGUoZmxvYXQgeCkgewotICAgIHJldHVybiBjbGFtcCh4LCAwLCAxKTsKLX0KLWZsb2F0MiBz
YXR1cmF0ZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
c2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2F0dXJhdGUoeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzYXR1cmF0ZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
c2F0dXJhdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzYXR1cmF0ZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
c2F0dXJhdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gc2F0dXJhdGUoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IHNhdHVyYXRlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIHNhdHVyYXRlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0
dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNhdHVyYXRlKGZsb2F0NHgyIHgpIHsK
LSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNhdHVyYXRlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0
dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNhdHVy
YXRlKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNhdHVyYXRlKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9h
dDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0
dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gc2F0dXJhdGUoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IHNhdHVyYXRlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJh
dGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gc2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0
dXJhdGUoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNhdHVyYXRl
KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gc2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0dXJhdGUo
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2F0dXJhdGUoeFsyXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNhdHVyYXRlKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9h
dDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0
dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gc2F0dXJhdGUoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2F0dXJhdGUoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0dXJhdGUoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gc2F0dXJhdGUoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc2F0dXJhdGUo
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1h
ZCAqLwotCi1mbG9hdCBtYWQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewotICAgIHJldHVy
biB4ICogeSArIHo7Ci19Ci1mbG9hdDIgbWFkKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHop
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5WzBdLCB6
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBtYWQoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMgeikgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0sIHpbMF0p
OwotICAgIHJlc3VsdFsxXSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBtYWQoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBt
YWQoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1h
ZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYWQoeFsyXSwgeVsyXSwgelsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gbWFkKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtYWQoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxvYXQyeDIg
eikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1hZChmbG9hdDN4MiB4LCBm
bG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlb
Ml1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtYWQoZmxv
YXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4
WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsx
XSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWFkKHhbM11bMV0sIHlb
M11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtYWQoZmxv
YXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDMgbWFkKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsy
XSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1h
ZChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IG1hZCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4
WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsx
XSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWFkKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtYWQoZmxvYXQyeDQgeCwgZmxvYXQy
eDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVszXSwgelsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtYWQoZmxvYXQzeDQgeCwgZmxvYXQz
eDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4
WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsx
XSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlb
MV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFd
LCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IG1hZCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbWFkKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IG1hZCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFk
KHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJd
WzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYWQoeFszXVsyXSwg
eVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlbMF1b
M10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNdLCB6
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwgelsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbWFkKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1vZGYgKi8KLQot
ZmxvYXQgbW9kZihmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQg
PSB1aW50KHgpOwotICAgICppcCA9IHggLSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVybiBmbG9h
dChyZXN1bHQpOwotfQotZmxvYXQyIG1vZGYoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHkpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBt
b2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
ID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgbW9kZihmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1v
ZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0g
PSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCogeSkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9
IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXSA9IG1vZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCB0aHJlYWQg
ZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwot
ICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQz
eDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2RmKGZsb2F0
NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0g
PSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9k
Zih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4LCB0aHJl
YWQgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVy
OwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBt
b2RmKGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1v
ZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhb
Ml1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IG1vZGYoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9hdDJ4NCB4
LCB0aHJlYWQgZmxvYXQyeDQqIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFsw
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
M10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgdGhyZWFkIGZs
b2F0M3g0KiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBt
b2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4
WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1b
M10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVsz
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbW9kZihmbG9hdDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHkpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9
IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2Rm
KHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIp
OwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBt
b2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVszXSA9IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0IG1vZGYo
ZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsK
LSAgICAqaXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsK
LX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHkpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYo
eFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHkpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1v
ZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM10g
PSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10gPSBidWZmZXI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5KSB7Ci0g
ICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0g
PSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4LCBkZXZp
Y2UgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVy
OwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsw
XSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBt
b2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0Mngz
KiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhb
MV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4
MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgZmxv
YXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYo
eFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtb2RmKGZsb2F0
NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0g
PSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9k
Zih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsy
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11b
Ml0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgZGV2aWNlIGZs
b2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBt
b2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4
WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCogeSkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2Rm
KHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIp
OwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IG1vZGYoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1v
ZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhb
MV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9
IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10gPSBi
dWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBtb2RmKGZsb2F0IHgsIHRo
cmVhZGdyb3VwIGZsb2F0KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAq
aXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZs
b2F0MiBtb2RmKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHkpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDMgbW9kZihmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYo
eFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl0gPSBt
b2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQqIHkpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBt
b2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
ID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10gPSBidWZmZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgdGhyZWFkZ3Jv
dXAgZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVy
OwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJlYWRncm91
cCBmbG9hdDN4MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1v
ZGYoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlb
M11bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxv
YXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2Rm
KHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBtb2RmKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1v
ZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbW9kZihmbG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9h
dDR4MyogeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9k
Zih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFsz
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
Ml0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0s
ICZidWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHkpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVsw
XSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBt
b2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHkpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhb
MV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9
IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtb2Rm
KGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1v
ZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJs
b2NrZWRNaW4gKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWlu
dCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZp
Y2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRNaW4oZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0
aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRv
bWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZE1pbih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJl
YWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNf
dWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0
aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3Vw
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY19p
bnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGVuZ3Ro
ICovCi1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0KTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxv
YXQyKTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgo
ZmxvYXQ0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLS0gKi8KLXVpbnQgb3BlcmF0
b3ItLSh1aW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLWludCBvcGVyYXRv
ci0tKGludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19Ci1mbG9hdCBvcGVyYXRv
ci0tKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIG9wZXJhdG9yPDwgKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I8PChpbnQsIHVpbnQp
OwotbmF0aXZlIHVpbnQgb3BlcmF0b3I8PCh1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIGV4cDIgKi8KLWZsb2F0IGV4cDIoZmxvYXQgeCkgewotICAgIHJldHVybiBleHAoeCAqIGxv
ZyhmbG9hdCgyKSkpOwotfQotZmxvYXQyIGV4cDIoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwMih4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGV4cDIoZmxvYXQzIHgpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZXhwMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgZXhwMihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAyKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGV4cDIoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZXhwMih4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZXhwMihmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAy
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIGV4cDIoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgZXhwMihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZXhwMihmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBleHAyKGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAy
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIGV4cDIoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cDIoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBl
eHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gZXhwMih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDQgZXhwMihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4
cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDQgZXhwMihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhw
Mih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBleHAyKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBleHAy
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBleHAyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBleHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBl
eHAyKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cDIoeFsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gZXhwMih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgaXN1bm9yZGVyZWQgKi8KLQotYm9vbCBpc3Vub3JkZXJlZChmbG9hdCB4
LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIGlzbmFuKHgpIHx8IGlzbmFuKHkpOwotfQotYm9vbDIg
aXN1bm9yZGVyZWQoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlz
dW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc3Vu
b3JkZXJlZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gaXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1bm9y
ZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsyXSwgeVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzdW5vcmRlcmVkKGZsb2F0NCB4LCBm
bG9hdDQgeSkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJl
ZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBpc3Vub3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10g
PSBpc3Vub3JkZXJlZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgYXRhbiAqLwotbmF0aXZlIGZsb2F0IGF0YW4oZmxvYXQpOwotZmxvYXQy
IGF0YW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGF0
YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGF0YW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBhdGFuKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXRh
bihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbih4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4o
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgYXRhbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGF0
YW4oZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYXRh
bihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDMgYXRhbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBhdGFuKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGF0
YW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRh
bih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbih4WzNdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXRhbihmbG9hdDJ4NCB4KSB7Ci0g
ICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFu
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
YXRhbih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRhbihmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
dGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gYXRhbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhdGFuKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9h
dDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGF0YW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRh
bih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGF0YW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXRhbih4WzNdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9nICovCi1u
YXRpdmUgZmxvYXQgbG9nKGZsb2F0KTsKLWZsb2F0MiBsb2coZmxvYXQyIHgpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBs
b2coeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2coZmxvYXQzIHgpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsb2coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbG9nKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBsb2coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGxvZyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBsb2coeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxv
YXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgbG9nKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIGxvZyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBsb2coeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngzIGxvZyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxv
Zyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBs
b2coZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZyh4WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBsb2coeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IGxvZyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IGxvZyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
Zyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9n
KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nKHhbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsb2coZmxvYXQ0eDQgeCkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
b2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGxvZyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxv
Zyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsb2coeFszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIExvYWQgKi8KLW5hdGl2ZSB1aW50IExv
YWQoVGV4dHVyZTFEPHVpbnQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9hZChUZXh0
dXJlMURBcnJheTx1aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1
cmUyRDx1aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTNEPHVp
bnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUxRDx1aW50Mj4s
IGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMURBcnJheTx1aW50Mj4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTJEPHVpbnQyPiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTNEPHVpbnQyPiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMUQ8dWludDM+LCBpbnQgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUyRDx1aW50Mz4sIGludDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBpbnQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUzRDx1aW50Mz4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTFEPHVpbnQ0PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2
ZSB1aW50NCBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRp
dmUgdWludDQgTG9hZChUZXh0dXJlMkQ8dWludDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50NCBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludDQgTG9hZChUZXh0dXJlM0Q8dWludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQg
TG9hZChUZXh0dXJlMUQ8aW50PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0
dXJlMURBcnJheTxpbnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJl
MkQ8aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTJEQXJyYXk8
aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTNEPGludD4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMUQ8aW50Mj4sIGludCBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUxREFycmF5PGludDI+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTJEPGludDI+LCBpbnQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIGludDIgTG9hZChUZXh0dXJlM0Q8aW50Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZl
IGludDMgTG9hZChUZXh0dXJlMUQ8aW50Mz4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBM
b2FkKFRleHR1cmUxREFycmF5PGludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExv
YWQoVGV4dHVyZTJEPGludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0
dXJlM0Q8aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlMUQ8
aW50ND4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUxREFycmF5PGlu
dDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEPGludDQ+LCBp
bnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlM0Q8aW50ND4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTFEPGZsb2F0PiwgaW50IGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0PiwgaW50MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMkQ8ZmxvYXQ+LCBpbnQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0PiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlM0Q8ZmxvYXQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMUQ8ZmxvYXQyPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDIgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMkQ8ZmxvYXQyPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQyIExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgaW50MyBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTNEPGZsb2F0Mj4sIGludDMgbG9jYXRpb24pOwotbmF0
aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUxRDxmbG9hdDM+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0MyBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGludDIgbG9jYXRpb24pOwotbmF0
aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUyRDxmbG9hdDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDMgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlM0Q8ZmxvYXQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQ0IExvYWQoVGV4dHVyZTFEPGZsb2F0ND4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUg
ZmxvYXQ0IExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQ0IExvYWQoVGV4dHVyZTJEPGZsb2F0ND4sIGludDIgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0NCBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIGludDMgbG9jYXRpb24pOwotbmF0
aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUzRDxmbG9hdDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdCBMb2FkKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQgTG9hZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgaW50MyBsb2NhdGlvbik7
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzaW4gKi8KLW5hdGl2ZSBmbG9hdCBzaW4oZmxvYXQpOwot
ZmxvYXQyIHNpbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIHNpbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBzaW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzaW4o
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luKHhbMl0p
OwotICAgIHJlc3VsdFszXSA9IHNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDIgc2luKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2lu
KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzaW4oZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc2luKGZsb2F0NHgyIHgpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2luKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4o
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNpbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
aW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBzaW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbih4WzNdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc2luKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc2luKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4o
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBzaW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IHNpbihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNp
bih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2lu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2luKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW4o
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAgIHJlc3VsdFsz
XVszXSA9IHNpbih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgc2luY29zICovCi12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHks
IHRocmVhZCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwot
fQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5LCB0
aHJlYWQgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0aHJlYWQg
ZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIHRocmVhZCBmbG9h
dDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwg
dGhyZWFkIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhy
ZWFkIGZsb2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0eDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZCBm
bG9hdDN4NCogeSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsz
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4
NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFk
IGZsb2F0KiB5LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9
IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5LCBkZXZp
Y2UgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZs
b2F0MyogeSwgZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCog
eSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0MngyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCBk
ZXZpY2UgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5LCBkZXZp
Y2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwgZGV2aWNl
IGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgZGV2aWNlIGZsb2F0
Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4
LCB0aHJlYWQgZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJl
YWQgZmxvYXQ0eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
IHgsIHRocmVhZCBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNp
bih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQg
ZmxvYXQyKiB5LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0IHgsIHRocmVhZCBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBm
bG9hdDJ4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRo
cmVhZCBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwg
dGhyZWFkIGZsb2F0M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHksIHRocmVhZGdy
b3VwIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgdGhyZWFkZ3Jv
dXAgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0M3g0IHgsIHRocmVhZCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0IHgsIGRldmljZSBmbG9hdCogeSwgdGhyZWFkIGZsb2F0KiB6KSB7
Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDIgeCwgZGV2aWNlIGZsb2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHksIHRocmVhZCBmbG9hdDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCBkZXZpY2UgZmxv
YXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
M3gyIHgsIGRldmljZSBmbG9hdDN4MiogeSwgdGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgy
IHgsIGRldmljZSBmbG9hdDR4MiogeSwgdGhyZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQyeDMqIHks
IHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHksIHRo
cmVhZCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4
LCBkZXZpY2UgZmxvYXQ0eDMqIHksIHRocmVhZCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCBkZXZp
Y2UgZmxvYXQyeDQqIHksIHRocmVhZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5LCB0aHJlYWQg
ZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWQgZmxvYXQ0
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIGRldmljZSBm
bG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBz
aW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIGRldmljZSBmbG9hdDIqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCBkZXZpY2UgZmxv
YXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCBkZXZpY2UgZmxvYXQ0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwg
ZGV2aWNlIGZsb2F0MngyKiB5LCBkZXZpY2UgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIGRldmljZSBmbG9hdDN4Miogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIGRldmljZSBmbG9hdDR4Miogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZs
b2F0MngzKiB5LCBkZXZpY2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0
M3gzKiB5LCBkZXZpY2UgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
eDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCog
eSwgZGV2aWNlIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSwgZGV2
aWNlIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiB5
LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29z
KHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRocmVhZGdy
b3VwIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIGRldmljZSBm
bG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZs
b2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5LCB0aHJlYWRn
cm91cCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIGRldmlj
ZSBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2
aWNlIGZsb2F0NHgyKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0MngzKiB5LCB0
aHJlYWRncm91cCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHks
IHRocmVhZGdyb3VwIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZs
b2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZpY2UgZmxv
YXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIHRocmVhZCBmbG9hdCogeikgewotICAgICp5ID0gc2lu
KHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZGdy
b3VwIGZsb2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0KiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFkZ3Jv
dXAgZmxvYXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQzeDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9hdDR4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQyeDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0
aHJlYWRncm91cCBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5LCB0aHJl
YWQgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIHRocmVh
ZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIGRldmljZSBmbG9hdCog
eikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyIHgsIHRocmVhZGdyb3VwIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwgZGV2aWNl
IGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCBkZXZpY2Ug
ZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHksIGRldmljZSBmbG9hdDJ4Miogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCBk
ZXZpY2UgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHks
IGRldmljZSBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIGRldmljZSBmbG9hdDJ4Myog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MyB4LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZGdyb3Vw
IGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQyeDQqIHksIGRldmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHksIGRldmlj
ZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwgZGV2aWNl
IGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQq
IHksIHRocmVhZGdyb3VwIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBj
b3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5LCB0
aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0
aHJlYWRncm91cCBmbG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9hdDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWRncm91
cCBmbG9hdDJ4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRocmVhZGdy
b3VwIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDJ4MyB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZGdyb3VwIGZs
b2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVh
ZGdyb3VwIGZsb2F0NHgzKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0
aHJlYWRncm91cCBmbG9hdDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsz
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZs
b2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWRncm91
cCBmbG9hdDR4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlICovCi1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCB0
aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2
aWNlIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdWludCwg
ZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRl
dmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHVpbnQs
IHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hh
bmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3Vp
bnQqLCB1aW50LCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRD
b21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWQg
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91
cCBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBp
bnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdl
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkZ3JvdXAgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRv
bWljX2ludCosIGludCwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIHNtb290aHN0ZXAgKi8KLWZsb2F0IHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVk
Z2UxLCBmbG9hdCB4KSB7Ci0gICAgZmxvYXQgdCA9IGNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2Ux
IC0gZWRnZTApLCAwLCAxKTsKLSAgICByZXR1cm4gdCAqIHQgKiAoMyAtIDIgKiB0KTsKLX0KLWZs
b2F0MiBzbW9vdGhzdGVwKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNtb290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7
Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3RlcCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIHNtb290aHN0ZXAoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9h
dDMgeikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc21vb3Roc3RlcCh4
WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzbW9vdGhzdGVwKHhbMV0sIHlbMV0s
IHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNtb290aHN0ZXAoeFsyXSwgeVsyXSwgelsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzbW9vdGhzdGVwKGZsb2F0NCB4LCBmbG9hdDQg
eSwgZmxvYXQ0IHopIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNtb290
aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3RlcCh4WzFd
LCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVwKHhbMl0sIHlbMl0sIHpb
Ml0pOwotICAgIHJlc3VsdFszXSA9IHNtb290aHN0ZXAoeFszXSwgeVszXSwgelszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNtb290aHN0ZXAoZmxvYXQyeDIgeCwgZmxvYXQy
eDIgeSwgZmxvYXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzbW9vdGhzdGVwKGZsb2F0M3gyIHgsIGZsb2F0M3gy
IHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNtb290aHN0ZXAoZmxvYXQ0eDIgeCwgZmxvYXQ0
eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNtb290aHN0ZXAoZmxvYXQyeDMgeCwg
ZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc21vb3Roc3RlcChmbG9hdDN4MyB4
LCBmbG9hdDN4MyB5LCBmbG9hdDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0s
IHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzbW9vdGhzdGVwKGZs
b2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNdWzBdLCB6
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0s
IHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsx
XSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJd
WzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11bMV0sIHlb
M11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwg
eVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1b
Ml0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNtb290aHN0ZXAoeFsz
XVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IHNtb290aHN0ZXAoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFsw
XVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVw
KHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0
ZXAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IHNtb290aHN0ZXAoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewot
ICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsx
XVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4
WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVw
KHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0
ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Ro
c3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9v
dGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNt
b290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
c21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBzbW9vdGhzdGVwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHNtb290aHN0ZXAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gc21vb3Roc3RlcCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgc21vb3Roc3RlcChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5LCBm
bG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNt
b290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHNtb290aHN0ZXAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gc21vb3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gc21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBzbW9vdGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IHNtb290aHN0ZXAoeFswXVszXSwgeVswXVszXSwgelswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzbW9vdGhzdGVwKHhbMl1bM10sIHlbMl1bM10sIHpb
Ml1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHNtb290aHN0ZXAoeFszXVszXSwgeVszXVszXSwg
elszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGV4
cCAqLwotbmF0aXZlIGZsb2F0IGV4cChmbG9hdCk7Ci1mbG9hdDIgZXhwKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZXhwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZXhwKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZXhwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cCh4WzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGV4cChmbG9hdDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZXhwKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBleHAoZmxvYXQyeDIgeCkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIGV4cChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBl
eHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBleHAoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBleHAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MyBleHAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDMgZXhwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhw
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAo
eFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGV4cChmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBl
eHAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBleHAoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4NCBleHAoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGV4cCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cCh4WzJd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZXhwKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBleHAoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBleHAoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZXhwKHhbM11bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbGwgKi8KLWJvb2wgYWxs
KGJvb2wgeCkgewotICAgIHJldHVybiB4OwotfQotYm9vbCBhbGwoYm9vbDIgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0pOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KGJvb2wzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwodWludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJv
b2wgYWxsKHVpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAw
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludDMgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludDQgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGludCB4KSB7Ci0gICAgcmV0dXJuIHgg
IT0gMDsKLX0KLWJvb2wgYWxsKGludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGlu
dDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
M10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0IHgpIHsKLSAg
ICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbGwoZmxvYXQyIHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoZmxvYXQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYWxsKGZsb2F0NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoZmxvYXQyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYWxsKGZsb2F0M3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsx
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHgyIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAwKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQyeDMgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxv
YXQzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsyXSAhPSAwKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQ0eDMgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbGwoZmxvYXQyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFsbChmbG9hdDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJd
WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4NCB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1b
Ml0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzJdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzNdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbGwoYm9vbDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3gyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDIgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsw
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0
cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbChib29sM3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDMgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4NCB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFd
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3g0IHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDQg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsw
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFszXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsz
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFsyXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGxvdyAqLwotdWludCBm
aXJzdGJpdGxvdyh1aW50IHgpIHsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMCkpICE9IDApCi0g
ICAgICAgIHJldHVybiAzMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMSkpICE9IDApCi0gICAg
ICAgIHJldHVybiAzMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMikpICE9IDApCi0gICAgICAg
IHJldHVybiAyOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMykpICE9IDApCi0gICAgICAgIHJl
dHVybiAyODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNCkpICE9IDApCi0gICAgICAgIHJldHVy
biAyNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNSkpICE9IDApCi0gICAgICAgIHJldHVybiAy
NjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNikpICE9IDApCi0gICAgICAgIHJldHVybiAyNTsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgNykpICE9IDApCi0gICAgICAgIHJldHVybiAyNDsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgOCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMzsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMjsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMTApKSAhPSAwKQotICAgICAgICByZXR1cm4gMjE7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDExKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIwOwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxMikpICE9IDApCi0gICAgICAgIHJldHVybiAxOTsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMTMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTg7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDE0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE3OwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAxNSkpICE9IDApCi0gICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMTYpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDE3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAx
OCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTkp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMTI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIwKSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDExOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMSkpICE9
IDApCi0gICAgICAgIHJldHVybiAxMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjIpKSAhPSAw
KQotICAgICAgICByZXR1cm4gOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjMpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjQpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjUpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjYpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjcpKSAhPSAwKQotICAgICAgICByZXR1
cm4gNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjgpKSAhPSAwKQotICAgICAgICByZXR1cm4g
MzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMzApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMzEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gMzI7Ci19Ci11aW50IGZpcnN0Yml0bG93KGludCB4KSB7Ci0gICAgcmV0dXJuIGZpcnN0
Yml0bG93KHVpbnQoeCkpOwotfQotdWludDIgZmlyc3RiaXRsb3codWludDIgeCkgewotICAgIHVp
bnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMg
Zmlyc3RiaXRsb3codWludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotdWludDQgZmlyc3RiaXRsb3codWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxv
dyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBmaXJzdGJpdGxvdyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgZmly
c3RiaXRsb3coaW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZp
cnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGxvdyhpbnQzIHgpIHsKLSAgICB1aW50
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KGludDQgeCkgewot
ICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJp
dGxvdyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJpdGxvdyh4WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I8PSAqLwotbmF0aXZl
IGJvb2wgb3BlcmF0b3I8PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9KHVpbnQs
IHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJv
b2wyIG9wZXJhdG9yPD0odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjw9KHVp
bnQzLCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8PSh1aW50NCwgdWludDQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPD0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8
PShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9KGludDQsIGludDQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPD0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJh
dG9yPD0oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0oZmxvYXQ0LCBm
bG9hdDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I8PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwot
bmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I8PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJv
b2w0eDIgb3BlcmF0b3I8PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3Bl
cmF0b3I8PShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I8PShm
bG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I8PShmbG9hdDR4Mywg
ZmxvYXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I8PShmbG9hdDJ4NCwgZmxvYXQyeDQp
OwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I8PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZl
IGJvb2w0eDQgb3BlcmF0b3I8PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgZGR4X2ZpbmUgKi8KLWZsb2F0IGRkeF9maW5lKGZsb2F0IHgpIHsKLSAgICByZXR1cm4g
ZGR4KHgpOwotfQotZmxvYXQyIGRkeF9maW5lKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhf
ZmluZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeF9maW5lKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhf
ZmluZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeF9maW5lKGZsb2F0
NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhf
ZmluZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHhfZmluZSh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZGR4X2ZpbmUoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmlu
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4X2ZpbmUoZmxvYXQzeDIgeCkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBk
ZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR4
X2ZpbmUoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBkZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmlu
ZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR4X2ZpbmUoZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhf
ZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgZGR4X2ZpbmUoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmlu
ZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4X2ZpbmUoZmxv
YXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhf
ZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBk
ZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgZGR4X2ZpbmUoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmlu
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhf
ZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgZGR4X2ZpbmUoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4
WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHhfZmlu
ZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4X2ZpbmUoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhf
ZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBk
ZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmluZSh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfZmluZSh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHhfZmluZSh4WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSBkZHhfZmluZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IgY2FzdCAqLwotbmF0aXZlIG9wZXJhdG9yIHVpbnQo
aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQo
dWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dCh1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGlu
dChib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sKHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGJv
b2woaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sKGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sMihib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sLCBib29sLCBib29s
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDMoYm9vbCwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBib29sLCBib29sKTsKLW5h
dGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDQoYm9vbCwgYm9vbCwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBi
b29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbDMsIGJvb2wpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2w0KGJvb2wsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Mih1aW50LCB1aW50
KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50LCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVy
YXRvciB1aW50Myh1aW50MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludCwgdWlu
dDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0
aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1
aW50NCh1aW50LCB1aW50MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludCwgdWlu
dCwgdWludDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUg
b3BlcmF0b3IgdWludDQodWludDMsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQs
IHVpbnQzKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQyKGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRv
ciBpbnQzKGludCwgaW50LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDMoaW50MiwgaW50KTsK
LW5hdGl2ZSBvcGVyYXRvciBpbnQzKGludCwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChp
bnQsIGludCwgaW50LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MiwgaW50LCBpbnQp
OwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQyLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9y
IGludDQoaW50LCBpbnQsIGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MiwgaW50Mik7
Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQzLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQo
aW50LCBpbnQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDIoZmxvYXQsIGZsb2F0KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDMoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQzKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9hdCwgZmxv
YXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDIsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9h
dDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MywgZmxvYXQpOwotbmF0
aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDJ4MihmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDMoZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDN4MyhmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDN4NChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4
MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
NHgzKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxv
YXQ0eDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDJ4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxv
YXQyeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUg
b3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4Myhm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgzKGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHg0KGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sMngyKGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4
Myhib29sMywgYm9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDQoYm9vbDQsIGJvb2w0KTsK
LW5hdGl2ZSBvcGVyYXRvciBib29sM3gyKGJvb2wyLCBib29sMiwgYm9vbDIpOwotbmF0aXZlIG9w
ZXJhdG9yIGJvb2wzeDMoYm9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9v
bDN4NChib29sNCwgYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgyKGJvb2wy
LCBib29sMiwgYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJvb2wzLCBi
b29sMywgYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHg0KGJvb2w0LCBib29s
NCwgYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngyKGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4NChib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gy
KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJv
b2wzeDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4NChib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVy
YXRvciBib29sNHgyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDR4NChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLQot
LyogRnVuY3Rpb25zIG5hbWVkIGxvYWQgKi8KLW5hdGl2ZSBpbnQgbG9hZChkZXZpY2UgYXRvbWlj
X2ludCopOwotbmF0aXZlIHVpbnQgbG9hZChkZXZpY2UgYXRvbWljX3VpbnQqKTsKLW5hdGl2ZSBp
bnQgbG9hZCh0aHJlYWRncm91cCBhdG9taWNfaW50Kik7Ci1uYXRpdmUgdWludCBsb2FkKHRocmVh
ZGdyb3VwIGF0b21pY191aW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3VudF9iaXRzICov
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByc3FydCAqLwotZmxvYXQgcnNxcnQoZmxvYXQgeCkgewot
ICAgIHJldHVybiAxIC8gc3FydCh4KTsKLX0KLWZsb2F0MiByc3FydChmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByc3FydChm
bG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcnNxcnQo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByc3FydChmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcnNxcnQoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gcnNxcnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IHJzcXJ0KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
cnNxcnQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJzcXJ0KGZs
b2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNx
cnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJz
cXJ0KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNx
cnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngzIHJzcXJ0KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNx
cnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJzcXJ0KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNx
cnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcnNx
cnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IHJzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNx
cnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNxcnQoeFsx
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHJzcXJ0KGZsb2F0M3g0IHgp
IHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNx
cnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gcnNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcnNxcnQoeFsyXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJzcXJ0KGZsb2F0NHg0IHgpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNx
cnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
cnNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNxcnQo
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcnNxcnQoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gcnNxcnQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIHNxcnQgKi8KLWZsb2F0IHNxcnQoZmxvYXQgeCkgewotICAgIHJldHVybiBw
b3coeCwgMC41KTsKLX0KLWZsb2F0MiBzcXJ0KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNxcnQoeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzcXJ0KGZsb2F0MyB4KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IHNxcnQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc3FydCh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBzcXJ0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNxcnQoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNxcnQoZmxvYXQyeDIgeCkgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzcXJ0KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIHNxcnQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNxcnQoZmxvYXQyeDMgeCkgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc3FydChmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0KHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3Fy
dCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IHNxcnQoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IHNxcnQoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IHNxcnQoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBz
cXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gc3FydCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc3FydChm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNx
cnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gc3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc3Fy
dCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzcXJ0KHhbMl1bM10pOwotICAgIHJlc3Vs
dFszXVszXSA9IHNxcnQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGFjb3MgKi8KLW5hdGl2ZSBmbG9hdCBhY29zKGZsb2F0KTsKLWZsb2F0MiBh
Y29zKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhY29z
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBhY29zKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gYWNvcyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFjb3Mo
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFjb3MoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhY29zKHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGFjb3MoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngyIGFjb3MoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhY29z
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
YWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFjb3Mo
ZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
Y29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngzIGFjb3MoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDMgYWNvcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhY29z
KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
YWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWNvcyh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3Mo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFjb3MoeFszXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFjb3MoZmxvYXQyeDQgeCkgewotICAg
IGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFj
b3MoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFjb3MoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNv
cyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGFjb3MoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYWNvcyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBhY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFjb3Mo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSBhY29zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFjb3MoeFszXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPiAq
LwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9y
Pih1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9hdCwgZmxvYXQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPih1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9y
Pih1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPih1aW50NCwgdWludDQpOwot
bmF0aXZlIGJvb2wyIG9wZXJhdG9yPihpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRv
cj4oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KGludDQsIGludDQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPihmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0
b3I+KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4oZmxvYXQ0LCBmbG9h
dDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I+KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRp
dmUgYm9vbDN4MiBvcGVyYXRvcj4oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgy
IG9wZXJhdG9yPihmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I+
KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj4oZmxvYXQzeDMs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPihmbG9hdDR4MywgZmxvYXQ0eDMp
OwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I+KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUg
Ym9vbDN4NCBvcGVyYXRvcj4oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9w
ZXJhdG9yPihmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0
b3ImICovCi1ib29sIG9wZXJhdG9yJihib29sIGEsIGJvb2wgYikgewotICAgIHJldHVybiBhICYm
IGI7Ci19Ci1uYXRpdmUgaW50IG9wZXJhdG9yJihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVy
YXRvciYodWludCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0YW5oICovCi1uYXRpdmUg
ZmxvYXQgdGFuaChmbG9hdCk7Ci1mbG9hdDIgdGFuaChmbG9hdDIgeCkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW5o
KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgdGFuaChmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSB0YW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0YW5oKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbmgoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0YW5oKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiB0YW5oKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRh
bmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdGFuaChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFu
aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0YW5oKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5o
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0YW5oKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRhbmgoZmxvYXQzeDMgeCkgewotICAg
IGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRh
bmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdGFuaChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFu
aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuaCh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSB0YW5oKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCB0YW5oKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
dGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCB0YW5oKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0
YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IHRhbmgoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHRh
bmgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHRhbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFu
aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4WzNdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IHRhbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuaCh4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSB0YW5oKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvciogKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IqKGludCwg
aW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yKih1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBv
cGVyYXRvciooZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludDIsIHVp
bnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQy
IG9wZXJhdG9yKih1aW50LCB1aW50Mik7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQzLCB1
aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50
MyBvcGVyYXRvcioodWludCwgdWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50NCwg
dWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50NCwgdWludCk7Ci1uYXRpdmUgdWlu
dDQgb3BlcmF0b3IqKHVpbnQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQyLCBp
bnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQyLCBpbnQpOwotbmF0aXZlIGludDIgb3Bl
cmF0b3IqKGludCwgaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvciooaW50MywgaW50Myk7Ci1u
YXRpdmUgaW50MyBvcGVyYXRvciooaW50MywgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKihp
bnQsIGludDMpOwotbmF0aXZlIGludDQgb3BlcmF0b3IqKGludDQsIGludDQpOwotbmF0aXZlIGlu
dDQgb3BlcmF0b3IqKGludDQsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvciooaW50LCBpbnQ0
KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IqKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9h
dDIgb3BlcmF0b3IqKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvciooZmxv
YXQsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdDMsIGZsb2F0Myk7Ci1u
YXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3Bl
cmF0b3IqKGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQ0LCBm
bG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQ0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRv
ciooZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQy
eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0MngyKTsK
LW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvciooZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBm
bG9hdDN4MiBvcGVyYXRvciooZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVy
YXRvciooZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQ0
eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQ0eDIsIGZsb2F0
KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBm
bG9hdDJ4MyBvcGVyYXRvciooZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBv
cGVyYXRvciooZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvciooZmxv
YXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMsIGZsb2F0
M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBv
cGVyYXRvciooZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcioo
ZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0
NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciooZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5h
dGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciooZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4
NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcioo
ZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQzeDQs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3g0KTsKLW5h
dGl2ZSBmbG9hdDR4NCBvcGVyYXRvciooZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9h
dDR4NCBvcGVyYXRvciooZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRv
ciooZmxvYXQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvcyAqLwotbmF0aXZl
IGZsb2F0IGNvcyhmbG9hdCk7Ci1mbG9hdDIgY29zKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zKHhb
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgY29zKGZsb2F0MyB4KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gY29zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNvcyh4WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IGNvcyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBjb3MoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29zKHhbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBjb3MoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIGNvcyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNv
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBj
b3MoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gY29zKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBjb3MoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY29zKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3Mo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGNvcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBj
b3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3MoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNv
cyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gY29zKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBj
b3MoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gY29zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBjb3MoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvcyh4WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgY29zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBjb3MoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjb3MoeFsy
XVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gY29zKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcj09ICovCi1uYXRpdmUgYm9vbCBv
cGVyYXRvcj09KGJvb2wsIGJvb2wpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCk7
Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0
b3I9PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0oYm9vbDIsIGJvb2wy
KTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgYm9vbDQg
b3BlcmF0b3I9PShib29sNCwgYm9vbDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0odWludDIs
IHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUg
Ym9vbDQgb3BlcmF0b3I9PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0o
aW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShpbnQzLCBpbnQzKTsKLW5hdGl2
ZSBib29sNCBvcGVyYXRvcj09KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0o
ZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oZmxvYXQzLCBmbG9hdDMp
OwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGJvb2wy
eDIgb3BlcmF0b3I9PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0
b3I9PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9PShmbG9h
dDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I9PShmbG9hdDJ4MywgZmxv
YXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I9PShmbG9hdDN4MywgZmxvYXQzeDMpOwot
bmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I9PShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGJv
b2wyeDQgb3BlcmF0b3I9PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3Bl
cmF0b3I9PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I9PShm
bG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I9PShib29sMngyLCBi
b29sMngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPT0oYm9vbDN4MiwgYm9vbDN4Mik7Ci1u
YXRpdmUgYm9vbDR4MiBvcGVyYXRvcj09KGJvb2w0eDIsIGJvb2w0eDIpOwotbmF0aXZlIGJvb2wy
eDMgb3BlcmF0b3I9PShib29sMngzLCBib29sMngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9y
PT0oYm9vbDN4MywgYm9vbDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj09KGJvb2w0eDMs
IGJvb2w0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I9PShib29sMng0LCBib29sMng0KTsK
LW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPT0oYm9vbDN4NCwgYm9vbDN4NCk7Ci1uYXRpdmUgYm9v
bDR4NCBvcGVyYXRvcj09KGJvb2w0eDQsIGJvb2w0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
b3BlcmF0b3I+PiAqLwotbmF0aXZlIGludCBvcGVyYXRvcj4+KGludCwgdWludCk7Ci1uYXRpdmUg
dWludCBvcGVyYXRvcj4+KHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmVmbGVj
dCAqLwotZmxvYXQgcmVmbGVjdChmbG9hdCBpLCBmbG9hdCBuKSB7Ci0gICAgcmV0dXJuIGkgLSAy
ICogbiAqIGRvdChpLCBuKTsKLX0KLWZsb2F0MiByZWZsZWN0KGZsb2F0MiBpLCBmbG9hdDIgbikg
ewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDMgcmVmbGVjdChm
bG9hdDMgaSwgZmxvYXQzIG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwot
fQotZmxvYXQ0IHJlZmxlY3QoZmxvYXQ0IGksIGZsb2F0NCBuKSB7Ci0gICAgcmV0dXJuIGkgLSAy
ICogbiAqIGRvdChpLCBuKTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGl0ICovCi1mbG9h
dDQgbGl0KGZsb2F0IG5fZG90X2wsIGZsb2F0IG5fZG90X2gsIGZsb2F0IG0pIHsKLSAgICBmbG9h
dCBhbWJpZW50ID0gMTsKLSAgICBmbG9hdCBkaWZmdXNlID0gbWF4KDAsIG5fZG90X2wpOwotICAg
IGZsb2F0IHNwZWN1bGFyID0gbl9kb3RfbCA8IDAgfHwgbl9kb3RfaCA8IDAgPyAwIDogbl9kb3Rf
aCAqIG07Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IGFtYmllbnQ7Ci0gICAg
cmVzdWx0LnkgPSBkaWZmdXNlOwotICAgIHJlc3VsdC56ID0gc3BlY3VsYXI7Ci0gICAgcmVzdWx0
LncgPSAxOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2cy
ICovCi1mbG9hdCBsb2cyKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9nKGZsb2F0
KDIpKTsKLX0KLWZsb2F0MiBsb2cyKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2cyKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxv
ZzIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IGxvZzIoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGxvZzIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMih4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBsb2cyKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzIoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZzIoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0
MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiBsb2cyKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cy
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIGxvZzIoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBsb2cyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
b2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxvZzIoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxv
ZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbG9nMihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9n
Mih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyBsb2cyKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cy
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGxvZzIoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxvZzIo
ZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
b2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IGxvZzIoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9n
Mih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMihmbG9hdDR4
NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cy
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gbG9nMih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
bG9nMih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGxvZzIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMih4WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cyKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IGxvZzIoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIG5vcm1hbGl6ZSAqLwotZmxvYXQgbm9ybWFsaXplKGZsb2F0IHgpIHsKLSAgICByZXR1
cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0MiBub3JtYWxpemUoZmxvYXQyIHgpIHsKLSAgICBy
ZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0MyBub3JtYWxpemUoZmxvYXQzIHgpIHsKLSAg
ICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0NCBub3JtYWxpemUoZmxvYXQ0IHgpIHsK
LSAgICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGRl
eHAgKi8KLWZsb2F0IGxkZXhwKGZsb2F0IHgsIGZsb2F0IGUpIHsKLSAgICByZXR1cm4geCAqIHBv
dygyLCBlKTsKLX0KLWZsb2F0MiBsZGV4cChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
bGRleHAoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZGV4cCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IGxkZXhwKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gbGRleHAoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwgeVsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gbGRleHAoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGxkZXhwKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAo
eFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxkZXhw
KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGxkZXhwKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFsz
XVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
bGRleHAoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGxkZXhwKGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGxkZXhwKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRl
eHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAo
eFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxkZXhw
KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRl
eHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwg
eVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGRleHAo
eFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxkZXhw
KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGRl
eHAoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsxXVszXSwg
eVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxkZXhwKGZsb2F0M3g0
IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
bGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRl
eHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGRleHAoeFsyXVszXSwg
eVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxkZXhwKGZsb2F0NHg0
IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwgeVszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRl
eHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGRleHAoeFszXVsyXSwg
eVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gbGRleHAoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbGRleHAo
eFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIGFicyAqLwotdWludCBhYnModWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQg
YWJzKGludCB4KSB7Ci0gICAgaWYgKHggPCAwKQotICAgICAgICByZXR1cm4gLXg7Ci0gICAgcmV0
dXJuIHg7Ci19Ci1mbG9hdCBhYnMoZmxvYXQgeCkgewotICAgIGlmICh4IDwgMCkKLSAgICAgICAg
cmV0dXJuIC14OwotICAgIHJldHVybiB4OwotfQotdWludDIgYWJzKHVpbnQyIHgpIHsKLSAgICB1
aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFicyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgYWJzKHVpbnQzIHgpIHsK
LSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQ0IGFicyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotaW50MiBhYnMoaW50MiB4KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBhYnMoaW50MyB4KSB7Ci0gICAgaW50MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQg
YWJzKGludDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0p
OwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyIGFicyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGFicyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhYnMoZmxv
YXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgYWJzKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhb
MV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhYnMoZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFi
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYWJzKGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgYWJzKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGFicyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBhYnMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBh
YnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFi
cyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFicyh4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYWJzKGZsb2F0Mng0IHgpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYWJzKGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBhYnMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IGFicyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBhYnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWJzKHhbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhYnMoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IGFicyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCByb3VuZCAqLwotbmF0aXZlIGZsb2F0IHJvdW5kKGZsb2F0KTsKLWZsb2F0MiByb3Vu
ZChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcm91bmQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyByb3VuZChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gcm91bmQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gcm91bmQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBy
b3VuZChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcm91
bmQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
cm91bmQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcm91bmQoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIHJvdW5kKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gyIHJvdW5kKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIHJvdW5kKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
cm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gcm91bmQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJvdW5kKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQo
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJvdW5kKGZsb2F0M3gz
IHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcm91bmQo
eFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJvdW5kKGZsb2F0NHgz
IHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
cm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcm91bmQoeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJvdW5kKGZsb2F0Mng0IHgpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IHJvdW5kKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gcm91bmQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJvdW5k
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcm91
bmQoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcm91bmQoeFsy
XVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcm91bmQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG11bCAqLwotdWludCBtdWwodWludCB4LCB1
aW50IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci1pbnQgbXVsKGludCB4LCBpbnQgeSkgewot
ICAgIHJldHVybiB4ICogeTsKLX0KLWZsb2F0IG11bChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAg
cmV0dXJuIHggKiB5OwotfQotdWludDIgbXVsKHVpbnQgeCwgdWludDIgeSkgewotICAgIHVpbnQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICog
eVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgbXVsKHVpbnQyIHgsIHVpbnQgeSkg
ewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1
bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbXVsKHVpbnQg
eCwgdWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVsw
XTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbXVsKHVpbnQzIHgsIHVpbnQgeSkgewotICAg
IHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0g
PSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotdWludDQgbXVsKHVpbnQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICBy
ZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXN1bHRbM10gPSB4ICogeVszXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotdWludDQgbXVsKHVpbnQ0IHgsIHVpbnQgeSkgewotICAgIHVpbnQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICog
eTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNdICogeTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MiBtdWwoaW50IHgsIGludDIgeSkgewotICAgIGlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHgg
KiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQyIG11bChpbnQyIHgsIGludCB5KSB7
Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0
WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGludCB4LCBp
bnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAg
ICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotaW50MyBtdWwoaW50MyB4LCBpbnQgeSkgewotICAgIGludDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5
OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0
IG11bChpbnQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
eCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAq
IHlbMl07Ci0gICAgcmVzdWx0WzNdID0geCAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWludDQgbXVsKGludDQgeCwgaW50IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0g
PSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyIG11bChmbG9hdCB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0IHkpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsx
XSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0IHgs
IGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVsw
XTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDMgeCwgZmxvYXQgeSkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0
WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFd
OwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRb
MV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10g
PSB4WzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0IHgs
IGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
eCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11bChmbG9hdDJ4MiB4LCBmbG9hdCB5KSB7
Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5Owot
ICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1b
MV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
eFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0
WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIG11bChmbG9hdCB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFszXVsw
XSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFd
OwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4
WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRb
M11bMF0gPSB4WzNdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFd
ICogeTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzNdWzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIG11bChmbG9hdDJ4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhb
MV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsx
XVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAg
IHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBtdWwoZmxvYXQgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsx
XVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsK
LSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICog
eVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0M3gzIHgs
IGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFsw
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJd
WzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAq
IHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
eFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdCB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFszXVswXSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5
WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsx
XSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJl
c3VsdFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHgg
KiB5WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQ0eDMg
eCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4
WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRb
Ml1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICogeTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFd
ICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRbM11bMV0g
PSB4WzNdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1
bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsK
LSAgICByZXN1bHRbM11bMl0gPSB4WzNdWzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgbXVsKGZsb2F0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFd
WzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IG11bChmbG9hdDJ4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9
IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3Vs
dFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5Owot
ICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFswXVszXSA9IHhbMF1b
M10gKiB5OwotICAgIHJlc3VsdFsxXVszXSA9IHhbMV1bM10gKiB5OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRb
Ml1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bM10gPSB4ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4ICogeVsy
XVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0M3g0IHgsIGZs
b2F0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVsw
XSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVz
dWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7
Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsx
XVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0gICAg
cmVzdWx0WzJdWzNdID0geFsyXVszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IG11bChmbG9hdCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFszXVswXSA9
IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwot
ICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsy
XSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHggKiB5WzNdWzJdOwotICAgIHJl
c3VsdFswXVszXSA9IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNd
OwotICAgIHJlc3VsdFsyXVszXSA9IHggKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVszXSA9IHgg
KiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQ0eDQg
eCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4
WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRb
Ml1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICogeTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFd
ICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRbM11bMV0g
PSB4WzNdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1
bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsK
LSAgICByZXN1bHRbM11bMl0gPSB4WzNdWzJdICogeTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzBd
WzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAgICByZXN1bHRbMl1b
M10gPSB4WzJdWzNdICogeTsKLSAgICByZXN1bHRbM11bM10gPSB4WzNdWzNdICogeTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotdWludCBtdWwodWludDIgeCwgdWludDIgeSkgewotICAgIHJldHVy
biBkb3QoeCwgeSk7Ci19Ci11aW50IG11bCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgcmV0dXJu
IGRvdCh4LCB5KTsKLX0KLXVpbnQgbXVsKHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICByZXR1cm4g
ZG90KHgsIHkpOwotfQotaW50IG11bChpbnQyIHgsIGludDIgeSkgewotICAgIHJldHVybiBkb3Qo
eCwgeSk7Ci19Ci1pbnQgbXVsKGludDMgeCwgaW50MyB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5
KTsKLX0KLWludCBtdWwoaW50NCB4LCBpbnQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwot
fQotZmxvYXQgbXVsKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7
Ci19Ci1mbG9hdCBtdWwoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5
KTsKLX0KLWZsb2F0IG11bChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgs
IHkpOwotfQotZmxvYXQyIG11bChmbG9hdDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFd
ICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDJ4MiB4
LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAg
ICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0g
KiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5
WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIG11bChmbG9hdDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBd
OwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsy
XVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsx
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsx
XSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChm
bG9hdDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9
IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhb
MF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10g
Kz0geFswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4
WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVz
dWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBdICogeVsz
XTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsK
LSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1b
MV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSAr
PSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4
WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
bXVsKGZsb2F0MngzIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRb
MF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0g
Kz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAg
IHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJl
c3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IG11bChmbG9hdDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0g
eFsyXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQz
eDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFd
WzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0
WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAg
ICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICBy
ZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5
WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0MyB4LCBmbG9hdDR4
MyB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3Vs
dFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
ID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9
IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdICogeVszXVswXTsKLSAgICByZXN1
bHRbM10gKz0geFsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl0gKiB5WzNdWzJd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0NCB5
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFsw
XSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBd
ICogeVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICog
eVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9
IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICBy
ZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1
bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJd
OwotICAgIHJlc3VsdFsyXSArPSB4WzNdWzJdICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyIG11bChmbG9hdDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
ID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9
IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3Vs
dFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsx
XSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAg
cmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVz
dWx0WzNdICs9IHhbMF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICogeVsx
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDQgeCwgZmxvYXQzeDQg
eSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRb
MF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFszXSAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsy
XTsKLSAgICByZXN1bHRbMl0gKz0geFszXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwot
ICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVsw
XSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAq
IHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4
WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVz
dWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0
WzNdICs9IHhbMF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICogeVsxXTsK
LSAgICByZXN1bHRbM10gKz0geFsyXVszXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBtdWwoZmxvYXQ0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdICs9IHhbM10gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0
WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl0gKz0geFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM10g
KiB5WzJdWzNdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5
WzNdWzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM10g
Kz0geFsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdICs9IHhbM10gKiB5WzNdWzNdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4
WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVz
dWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBdICogeVsz
XTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsK
LSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1b
MV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICByZXN1bHRb
Ml0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0g
Kz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAg
IHJlc3VsdFsyXSArPSB4WzNdWzJdICogeVszXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAgIHJl
c3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXVszXSAqIHlb
MV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl1bM10gKiB5WzJdOwotICAgIHJlc3VsdFszXSArPSB4
WzNdWzNdICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0
MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQzeDIg
eSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZs
b2F0MngyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVsw
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0g
MDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFd
WzFdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0
M3gyIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJd
WzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsw
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsy
XVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
Ml1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11bChm
bG9hdDN4MiB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNd
WzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICog
eVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVz
dWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRb
M11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0g
KiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0Mng0IHkpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0
WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107
Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsx
XSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDR4
MiB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVsw
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAg
IHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5
WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1b
MF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsy
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsy
XVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQ0eDQg
eSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0g
PSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsy
XVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBd
ICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAg
cmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSArPSB4
WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1b
MV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1b
MV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAg
ICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVsw
XTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNd
WzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFdICog
eVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0MngzIHgs
IGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFd
WzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0g
PSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAw
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1
bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1b
Ml0gKiB5WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQy
eDMgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9
IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBd
WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRb
M11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0g
KiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhb
MF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsy
XSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
bXVsKGZsb2F0M3gzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsw
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFd
WzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsx
XVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAg
IHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQzeDMgeCwgZmxvYXQ0
eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsy
XTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0g
KiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICBy
ZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsy
XSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsy
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVsw
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJd
WzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsw
XVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11
bChmbG9hdDR4MyB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBd
WzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
M11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsx
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5
WzJdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSAr
PSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsx
XVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0g
PSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICBy
ZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsK
LSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzNdWzBdICogeVsz
XVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11b
MV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1
bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1b
MV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFdICogeVszXVszXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICog
eVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBd
WzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJl
c3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwot
ICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0g
Kz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1bMl0gKiB5WzNd
WzJdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzNdWzJdICogeVszXVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MngyIHkpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVsz
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0g
MDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0g
PSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICBy
ZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhb
MV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNd
ICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDR4MiB5KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJl
c3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsx
XVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0g
Kz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzNd
ID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVszXSA9IDA7Ci0gICAg
cmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVszXSArPSB4
WzFdWzNdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZs
b2F0M3g0IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQzeDMgeSkgewot
ICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsy
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1
bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1b
Ml0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAg
ICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFd
WzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsx
XVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICBy
ZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhb
MV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJd
OwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICog
eVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSAr
PSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11b
Ml07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwot
ICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10g
Kz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsK
LSAgICByZXN1bHRbM11bM10gKz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNd
ICs9IHhbMV1bM10gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzJdWzNdICogeVsz
XVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0NHg0IHgsIGZs
b2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0
WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107
Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsx
XSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1b
Ml0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0g
MDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVz
dWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsz
XVszXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9h
dDR4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsy
XVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNd
OwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11b
Ml0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFd
WzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVszXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbM11bM10gKiB5WzBdWzNdOwotICAgIHJl
c3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10g
Kz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbM11bM10gKiB5WzFd
WzNdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhb
M11bM10gKiB5WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxv
YXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
Ml1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsK
LSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBd
ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4
WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3Vs
dFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVsw
XSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVsz
XTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICog
eVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNd
WzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFsz
XVsxXSArPSB4WzNdWzFdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsx
XVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0g
PSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsK
LSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJd
ICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsy
XVszXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJd
ICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAg
cmVzdWx0WzNdWzJdICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsyXSArPSB4
WzNdWzJdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVsz
XSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFswXVszXSArPSB4WzNdWzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAg
IHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0g
eFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzNdWzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1b
M10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1b
M10gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzNdWzNdICogeVsyXVszXTsKLSAg
ICByZXN1bHRbM11bM10gPSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVsw
XTsKLSAgICByZXN1bHRbM11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNd
WzNdICs9IHhbMl1bM10gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzNdWzNdICog
eVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmFk
aWFucyAqLwotZmxvYXQgcmFkaWFucyhmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggKiAzLjE0MTU5
IC8gMTgwOwotfQotZmxvYXQyIHJhZGlhbnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFu
cyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJhZGlhbnMoZmxvYXQzIHgp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByYWRpYW5zKHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcmFkaWFucyhmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFucyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSByYWRpYW5zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJhZGlhbnMoeFsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gcmFkaWFucyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgcmFkaWFucyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFk
aWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gyIHJhZGlhbnMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJh
ZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJh
ZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcmFkaWFucyhmbG9hdDR4MiB4KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
YWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
YWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgcmFkaWFucyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
cmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByYWRpYW5zKGZsb2F0M3gzIHgpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJhZGlh
bnMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSByYWRpYW5zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gcmFkaWFucyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDQgcmFkaWFucyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcmFk
aWFucyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSByYWRpYW5zKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCByYWRpYW5zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSByYWRpYW5zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMoeFszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSByYWRpYW5zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJhZGlhbnMoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcmFkaWFucyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY2VpbCAqLwotbmF0aXZlIGZsb2F0IGNlaWwo
ZmxvYXQpOwotZmxvYXQyIGNlaWwoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNlaWwoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2Vp
bCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDQgY2VpbChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gY2VpbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWlsKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGNlaWwoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY2VpbCh4WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY2VpbChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIGNlaWwoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgY2VpbChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGNlaWwoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNl
aWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgY2VpbChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2Vp
bCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBjZWlsKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWls
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgzIGNlaWwoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBj
ZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gY2VpbCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgY2VpbChm
bG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNl
aWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDQgY2VpbChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjZWls
KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjZWlsKGZsb2F0NHg0
IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBjZWlsKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBj
ZWlsKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gY2VpbCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjZWlsKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNlaWwoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNd
ID0gY2VpbCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgYXNpbiAqLwotbmF0aXZlIGZsb2F0IGFzaW4oZmxvYXQpOwotZmxvYXQyIGFzaW4oZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW4oeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzIGFzaW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhc2luKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNpbihmbG9hdDQg
eCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbih4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW4oeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gYXNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgYXNpbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFz
aW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFzaW4oZmxvYXQz
eDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNp
bih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYXNpbihmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2lu
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gYXNpbih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
YXNpbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4o
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBh
c2luKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFz
aW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGFzaW4oZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2luKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNp
bih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGFzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXNpbih4WzNdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXNpbihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
YXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXNpbihmbG9hdDN4NCB4KSB7
Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
c2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhc2luKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gYXNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNp
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGFzaW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXNpbih4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBhc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGFzaW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXNpbih4WzNdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXN1aW50ICovCi11aW50IGFz
dWludChpbnQgeCkgewotICAgIHJldHVybiB1aW50KHgpOwotfQotdWludDIgYXN1aW50KGludDIg
eCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50
MyBhc3VpbnQoaW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFz
dWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gYXN1aW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhc3VpbnQoaW50
NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotdWludCBhc3VpbnQodWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50MiBhc3VpbnQo
dWludDIgeCkgewotICAgIHJldHVybiB4OwotfQotdWludDMgYXN1aW50KHVpbnQzIHgpIHsKLSAg
ICByZXR1cm4geDsKLX0KLXVpbnQ0IGFzdWludCh1aW50NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19
Ci1uYXRpdmUgdWludCBhc3VpbnQoZmxvYXQpOwotdWludDIgYXN1aW50KGZsb2F0MiB4KSB7Ci0g
ICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGFzdWlu
dChmbG9hdDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFz
dWludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgYXN1aW50KGZsb2F0NCB4
KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhbMl0p
OwotICAgIHJlc3VsdFszXSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgcG93ICovCi1uYXRpdmUgZmxvYXQgcG93KGZsb2F0LCBmbG9h
dCk7Ci1mbG9hdDIgcG93KGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gcG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IHBvdyh4
WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHBvdyhmbG9hdDMgeCwg
ZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gcG93KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcG93KGZs
b2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
cG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBwb3coeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcG93KHhbM10sIHlb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBwb3coZmxvYXQyeDIgeCwgZmxv
YXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3co
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gyIHBvdyhmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93
KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBwb3coZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBv
dyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVswXSwgeVsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBw
b3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11bMV0sIHlb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBwb3coZmxvYXQyeDMgeCwg
ZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBw
b3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcG93KGZsb2F0M3gzIHgs
IGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IHBvdyhmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBwb3coZmxvYXQyeDQgeCwgZmxvYXQyeDQg
eSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1b
Ml0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gcG93KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBwb3coZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFsw
XVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcG93KHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHBvdyh4WzJdWzNdLCB5WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcG93KGZsb2F0NHg0IHgsIGZsb2F0
NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gcG93KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHBvdyh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3co
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBwb3coeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93
KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBwb3coeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gcG93KHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0YW4gKi8KLW5hdGl2ZSBmbG9hdCB0YW4oZmxvYXQpOwot
ZmxvYXQyIHRhbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIHRhbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSB0YW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0YW4o
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSB0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuKHhbMl0p
OwotICAgIHJlc3VsdFszXSA9IHRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDIgdGFuKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFu
KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0YW4oZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuKGZsb2F0NHgyIHgpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdGFuKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4o
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRhbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0
YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyB0YW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRhbih4WzNdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdGFuKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4o
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSB0YW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IHRhbihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRh
bih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW4o
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAgIHJlc3VsdFsz
XVszXSA9IHRhbih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgZm1hICovCi1mbG9hdCBmbWEoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewot
ICAgIHJldHVybiB4ICogeSArIHo7Ci19Ci1mbG9hdDIgZm1hKGZsb2F0MiB4LCBmbG9hdDIgeSwg
ZmxvYXQyIHopIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtYSh4WzBd
LCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmbWEoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9h
dDMgeikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhbMF0sIHlb
MF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBmbWEoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBmbWEoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbWEoeFsyXSwg
eVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZm1hKHhbM10sIHlbM10sIHpbM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmbWEoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwg
ZmxvYXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZtYShmbG9h
dDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
bWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhb
Ml1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MiBmbWEoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBm
bWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1hKHhb
M11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBmbWEoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgZm1hKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1b
MF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBm
bWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGZtYShmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBm
bWEoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsy
XVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1hKHhbM11bMl0sIHlbM11bMl0s
IHpbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbWEoZmxvYXQyeDQg
eCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
bWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVsw
XVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10s
IHpbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbWEoZmxvYXQzeDQg
eCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
bWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhb
MV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFd
LCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVsw
XVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0s
IHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGZtYSh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZm1hKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0
NHg0IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhb
MF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsy
XVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0s
IHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbWEo
eFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhbMF1b
M10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNdLCB5
WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwgeVsyXVsz
XSwgelsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZm1hKHhbM11bM10sIHlbM11bM10sIHpb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZXRl
cm1pbmFudCAqLwotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQgeCkgewotICAgIHJldHVybiB4Owot
fQotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQyeDIgeCkgewotICAgIHJldHVybiB4WzBdWzBdICog
eFsxXVsxXSAtIHhbMV1bMF0gKiB4WzBdWzFdOwotfQotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQz
eDMgeCkgewotICAgIHJldHVybiB4WzBdWzBdICogeFsxXVsxXSAqIHhbMl1bMl0gKwotICAgICAg
ICAgICB4WzFdWzBdICogeFsyXVsxXSAqIHhbMF1bMl0gKwotICAgICAgICAgICB4WzJdWzBdICog
eFswXVsxXSAqIHhbMV1bMl0gLQotICAgICAgICAgICB4WzBdWzJdICogeFsxXVsxXSAqIHhbMl1b
MF0gLQotICAgICAgICAgICB4WzFdWzJdICogeFsyXVsxXSAqIHhbMF1bMF0gLQotICAgICAgICAg
ICB4WzJdWzJdICogeFswXVsxXSAqIHhbMV1bMF07Ci19Ci1mbG9hdCBkZXRlcm1pbmFudChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQgcmVzdWx0OwotICAgIGZsb2F0M3gzIG1pbm9yOwotICAgIG1p
bm9yWzBdWzBdID0geFsxXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMl1bMV07Ci0gICAgbWlu
b3JbMl1bMF0gPSB4WzNdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFsxXVsyXTsKLSAgICBtaW5v
clsxXVsxXSA9IHhbMl1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9y
WzBdWzJdID0geFsxXVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMl1bM107Ci0gICAgbWlub3Jb
Ml1bMl0gPSB4WzNdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIHhbMF1bMF0gKiBkZXRlcm1p
bmFudChtaW5vcik7Ci0gICAgbWlub3JbMF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBd
ID0geFsyXVsxXTsKLSAgICBtaW5vclsyXVswXSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0g
PSB4WzBdWzJdOwotICAgIG1pbm9yWzFdWzFdID0geFsyXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9
IHhbM11bMl07Ci0gICAgbWlub3JbMF1bMl0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0g
eFsyXVszXTsKLSAgICBtaW5vclsyXVsyXSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IC0geFsxXVswXSAqIGRldGVybWluYW50KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1b
MV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzFdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFszXVsx
XTsKLSAgICBtaW5vclswXVsxXSA9IHhbMF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzFdWzJd
OwotICAgIG1pbm9yWzJdWzFdID0geFszXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107
Ci0gICAgbWlub3JbMV1bMl0gPSB4WzFdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgKyB4WzJdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAg
IG1pbm9yWzBdWzBdID0geFswXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMV1bMV07Ci0gICAg
bWlub3JbMl1bMF0gPSB4WzJdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBt
aW5vclsxXVsxXSA9IHhbMV1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzJdWzJdOwotICAgIG1p
bm9yWzBdWzJdID0geFswXVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMV1bM107Ci0gICAgbWlu
b3JbMl1bMl0gPSB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAtIHhbM11bMF0gKiBkZXRl
cm1pbmFudChtaW5vcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIGZsb29yICovCi1uYXRpdmUgZmxvYXQgZmxvb3IoZmxvYXQpOwotZmxvYXQyIGZsb29yKGZs
b2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9vcih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzIGZsb29yKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBmbG9vcih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBmbG9vcih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZsb29y
KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9vcih4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbG9v
cih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmbG9vcih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgZmxvb3IoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
bG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgZmxvb3IoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgZmxvb3IoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9v
cih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBmbG9vcih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZmxvb3IoZmxvYXQyeDMgeCkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9v
cih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZmxvb3IoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9v
cih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZmxvb3IoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9v
cih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbG9vcih4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZmxvb3IoZmxvYXQyeDQgeCkgewotICAg
IGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9v
cih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZmxv
b3IoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9v
cih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBm
bG9vcih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZmxvb3IoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9v
cih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBm
bG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbG9vcih4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbG9vcih4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBmbG9vcih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY3Jvc3MgKi8KLWZsb2F0MyBjcm9zcyhmbG9hdDMg
dSwgZmxvYXQzIHYpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gdS55ICog
di56IC0gdS56ICogdi55OwotICAgIHJlc3VsdC55ID0gdS56ICogdi54IC0gdS54ICogdi56Owot
ICAgIHJlc3VsdC56ID0gdS54ICogdi55IC0gdS55ICogdi54OwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc2Zpbml0ZSAqLwotbmF0aXZlIGJvb2wgaXNmaW5p
dGUoZmxvYXQpOwotYm9vbDIgaXNmaW5pdGUoZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5pdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5p
dGUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzZmluaXRlKGZsb2F0MyB4
KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzZmluaXRl
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc2Zpbml0ZShmbG9hdDQgeCkg
ewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zpbml0ZSh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc2Zpbml0ZSh4
WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc2Zpbml0ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRPciAqLwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFk
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRv
bWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihk
ZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1
aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91
cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZE9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNl
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWlu
dCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3Io
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBhdGFuMiAqLwotbmF0aXZlIGZsb2F0IGF0YW4yKGZsb2F0LCBmbG9hdCk7
Ci1mbG9hdDIgYXRhbjIoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFu
Mih4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGF0YW4yKGZsb2F0
MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRh
bjIoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gYXRhbjIoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBhdGFuMihmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4yKHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGF0YW4yKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBhdGFuMihmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4y
KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhdGFuMihmbG9hdDN4MiB4
LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0
YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBh
dGFuMihmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11b
MV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhdGFuMihmbG9h
dDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4y
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBhdGFuMihmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0
YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4y
KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlb
Ml1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhdGFuMihmbG9hdDR4MyB4
LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0
YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4y
KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11bMl0sIHlb
M11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhdGFuMihmbG9hdDJ4NCB4
LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0
YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhbMF1bM10s
IHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhdGFuMihmbG9hdDN4NCB4LCBmbG9hdDN4
NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1b
MV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0
YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10s
IHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4yKHhbMl1bM10sIHlbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhdGFuMihmbG9hdDR4NCB4LCBmbG9hdDR4
NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0
YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0s
IHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11bMl0sIHlbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4y
KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGF0YW4yKHhbM11bM10sIHlb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBEZXZp
Y2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZvaWQgRGV2aWNlTWVtb3J5
QmFycmllcldpdGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGZtb2QgKi8KLQot
ZmxvYXQgZm1vZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgdWludCB3aG9sZSA9IHVpbnQoeCAv
IHkpOwotICAgIGZsb2F0IG11bHRpcGxlID0gZmxvYXQod2hvbGUpICogeTsKLSAgICByZXR1cm4g
eCAtIG11bHRpcGxlOwotfQotZmxvYXQyIGZtb2QoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGZtb2QoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBmbW9kKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZm1vZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBmbW9kKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1vZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
bW9kKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gZm1vZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDIgZm1vZChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9k
KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZtb2QoZmxvYXQzeDIgeCwg
ZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJd
WzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZm1vZChmbG9h
dDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
bW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZm1vZChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4
WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbW9kKGZsb2F0M3gzIHgsIGZs
b2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1v
ZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGZtb2QoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1v
ZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11bMF0sIHlb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2QoeFszXVsx
XSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1vZCh4
WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZm1vZChm
bG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1v
ZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2QoeFswXVsz
XSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZm1vZChmbG9hdDN4NCB4LCBmbG9hdDN4
NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1v
ZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2QoeFswXVsz
XSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBmbW9kKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmbW9kKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1v
ZCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBmbW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZtb2QoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1vZCh4
WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10sIHlbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZtb2QoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gZm1vZCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3ItICovCi1uYXRpdmUgaW50IG9wZXJhdG9y
LShpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvci0odWludCwgdWludCk7Ci1uYXRpdmUg
ZmxvYXQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgaW50IG9wZXJhdG9yLShpbnQp
OwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3It
KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQsIHVpbnQyKTsKLW5h
dGl2ZSB1aW50MiBvcGVyYXRvci0odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9y
LSh1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50LCB1aW50Myk7Ci1u
YXRpdmUgdWludDMgb3BlcmF0b3ItKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRv
ci0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludCwgdWludDQpOwot
bmF0aXZlIHVpbnQ0IG9wZXJhdG9yLSh1aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRv
ci0oaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50LCBpbnQyKTsKLW5hdGl2
ZSBpbnQyIG9wZXJhdG9yLShpbnQyLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMs
IGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludCwgaW50Myk7Ci1uYXRpdmUgaW50MyBv
cGVyYXRvci0oaW50MywgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQ0LCBpbnQ0KTsK
LW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3It
KGludDQsIGludCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0Mik7Ci1u
YXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3Bl
cmF0b3ItKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUg
ZmxvYXQzIG9wZXJhdG9yLShmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3It
KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDQp
OwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgaW50MiBv
cGVyYXRvci0oaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50Myk7Ci1uYXRpdmUgaW50
NCBvcGVyYXRvci0oaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIpOwotbmF0
aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZs
b2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1u
YXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQy
eDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3It
KGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIsIGZsb2F0M3gy
KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBm
bG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVy
YXRvci0oZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4MiwgZmxv
YXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDIpOwotbmF0
aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgy
IG9wZXJhdG9yLShmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0Mngz
LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDJ4Myk7
Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQyeDMgb3BlcmF0b3ItKGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxv
YXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0
M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9y
LShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdCwg
ZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4MywgZmxvYXQpOwot
bmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3Bl
cmF0b3ItKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZs
b2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0LCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4
NCBvcGVyYXRvci0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRv
ci0oZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQpOwotbmF0aXZlIGZs
b2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9w
ZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9h
dDR4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCk7Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBtaW4gKi8KLXVpbnQgbWluKHVpbnQgeCwgdWludCB5KSB7Ci0gICAg
cmV0dXJuIHggPiB5ID8geSA6IHg7Ci19Ci11aW50MiBtaW4odWludDIgeCwgdWludDIgeSkgewot
ICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAg
cmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50
MyBtaW4odWludDMgeCwgdWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDQgbWluKHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWlu
KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgbWluKGludCB4LCBpbnQg
eSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotaW50MiBtaW4oaW50MiB4LCBpbnQy
IHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1pbnQzIG1pbihpbnQzIHgsIGludDMgeSkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1pbnQ0IG1pbihpbnQ0IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1pbih4
WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgbWluKGZsb2F0IHgsIGZs
b2F0IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLWZsb2F0MiBtaW4oZmxvYXQy
IHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4o
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgbWluKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsx
XSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtaW4oZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAg
cmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5
WzJdKTsKLSAgICByZXN1bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIG1pbihmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbWluKGZsb2F0M3gy
IHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1pbihmbG9hdDR4
MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngzIG1pbihmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtaW4oZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFsw
XVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhb
MV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbWluKGZsb2F0NHgzIHgsIGZsb2F0
NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbWluKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4o
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBtaW4oeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0Mng0IG1pbihmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWlu
KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1p
bih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsx
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1pbihmbG9hdDN4NCB4LCBm
bG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1p
bih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBt
aW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
bWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBdWzNdLCB5
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gbWluKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBtaW4oZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwg
eVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0s
IHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1pbih4WzNdWzJd
LCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbWluKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IG1pbih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBtaW4oeFszXVsz
XSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IEludGVybG9ja2VkWG9yICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRY
b3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNl
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2
aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGlu
dCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAg
YXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJl
YWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBh
dG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVk
IEdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIEdyb3VwTWVt
b3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHRydW5jICov
Ci1uYXRpdmUgZmxvYXQgdHJ1bmMoZmxvYXQpOwotZmxvYXQyIHRydW5jKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHRydW5j
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0cnVu
Yyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHRydW5jKGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0cnVuYyh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSB0cnVuYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgdHJ1bmMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdHJ1bmMo
ZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0
cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
dHJ1bmMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0
cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgdHJ1bmMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0
cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgdHJ1bmMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0
M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0
cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdHJ1bmMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0
cnVuYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgdHJ1bmMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0
cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0cnVuYyh4
WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJ1bmMoZmxvYXQzeDQg
eCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0
cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4
WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSB0cnVuYyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0cnVuYyh4WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdHJ1bmMoZmxvYXQ0eDQgeCkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0
cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSB0cnVuYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0cnVu
Yyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0cnVuYyh4WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSB0cnVuYyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgbWF4ICovCi11aW50IG1heCh1aW50IHgsIHVpbnQgeSkgewotICAgIHJl
dHVybiB4ID4geSA/IHggOiB5OwotfQotdWludDIgbWF4KHVpbnQyIHgsIHVpbnQyIHkpIHsKLSAg
ICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMg
bWF4KHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVp
bnQ0IG1heCh1aW50NCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1heCh4
WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLQotaW50IG1heChpbnQgeCwg
aW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLWludDIgbWF4KGludDIgeCwg
aW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlb
MF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotaW50MyBtYXgoaW50MyB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotaW50NCBtYXgoaW50NCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBt
YXgoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBtYXgoZmxv
YXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHggOiB5OwotfQotZmxvYXQyIG1h
eChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtYXgoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAg
cmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1heChmbG9hdDQgeCwgZmxvYXQ0
IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4
KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1heCh4WzNdLCB5WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWF4KGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtYXgo
ZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1h
eCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbWF4
KGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1h
eCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBt
YXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbWF4KGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1heChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0s
IHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtYXgoZmxvYXQ0eDMg
eCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgbWF4KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9h
dDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gbWF4KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFd
WzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWF4KGZsb2F0
M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFd
WzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsy
XVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWF4KHhb
MF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBtYXgoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1heChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAg
ZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4
WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgo
eFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWF4
KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbWF4KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1h
eCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBhc2ludCAqLwotaW50IGFzaW50KGludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19
Ci1pbnQyIGFzaW50KGludDIgeCkgewotICAgIHJldHVybiB4OwotfQotaW50MyBhc2ludChpbnQz
IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludDQgYXNpbnQoaW50NCB4KSB7Ci0gICAgcmV0dXJu
IHg7Ci19Ci1pbnQgYXNpbnQodWludCB4KSB7Ci0gICAgcmV0dXJuIGludCh4KTsKLX0KLWludDIg
YXNpbnQodWludDIgeCkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1pbnQzIGFzaW50KHVpbnQzIHgpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBhc2ludCh1
aW50NCB4KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LW5hdGl2ZSBpbnQgYXNpbnQoZmxvYXQpOwotaW50MiBhc2ludChmbG9hdDIgeCkgewotICAgIGlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFzaW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIGFzaW50KGZsb2F0MyB4
KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgYXNpbnQoZmxvYXQ0IHgpIHsKLSAgICBpbnQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2lu
dCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBh
c2ludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
Y2xhbXAgKi8KLW5hdGl2ZSB1aW50IGNsYW1wKHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0aXZlIHVp
bnQyIGNsYW1wKHVpbnQyLCB1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQzIGNsYW1wKHVpbnQz
LCB1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQ0IGNsYW1wKHVpbnQ0LCB1aW50NCwgdWludDQp
OwotbmF0aXZlIGludCBjbGFtcChpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBpbnQyIGNsYW1wKGlu
dDIsIGludDIsIGludDIpOwotbmF0aXZlIGludDMgY2xhbXAoaW50MywgaW50MywgaW50Myk7Ci1u
YXRpdmUgaW50NCBjbGFtcChpbnQ0LCBpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdCBjbGFtcChm
bG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgY2xhbXAoZmxvYXQyLCBmbG9hdDIs
IGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIGNsYW1wKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwot
bmF0aXZlIGZsb2F0NCBjbGFtcChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9h
dDJ4MiBjbGFtcChmbG9hdDJ4MiwgZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4
MiBjbGFtcChmbG9hdDN4MiwgZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBj
bGFtcChmbG9hdDR4MiwgZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBjbGFt
cChmbG9hdDJ4MywgZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBjbGFtcChm
bG9hdDN4MywgZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBjbGFtcChmbG9h
dDR4MywgZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBjbGFtcChmbG9hdDJ4
NCwgZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBjbGFtcChmbG9hdDN4NCwg
ZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBjbGFtcChmbG9hdDR4NCwgZmxv
YXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPCAqLwotbmF0
aXZlIGJvb2wgb3BlcmF0b3I8KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50
LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJv
b2wyIG9wZXJhdG9yPCh1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPCh1aW50
MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPCh1aW50NCwgdWludDQpOwotbmF0aXZl
IGJvb2wyIG9wZXJhdG9yPChpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjwoaW50
MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8KGludDQsIGludDQpOwotbmF0aXZlIGJv
b2wyIG9wZXJhdG9yPChmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8KGZs
b2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwoZmxvYXQ0LCBmbG9hdDQpOwot
bmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I8KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9v
bDN4MiBvcGVyYXRvcjwoZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJh
dG9yPChmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I8KGZsb2F0
MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcjwoZmxvYXQzeDMsIGZsb2F0
M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPChmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0
aXZlIGJvb2wyeDQgb3BlcmF0b3I8KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4
NCBvcGVyYXRvcjwoZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9y
PChmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNuYW4gKi8KLW5h
dGl2ZSBib29sIGlzbmFuKGZsb2F0KTsKLQotYm9vbDIgaXNuYW4oZmxvYXQyIHgpIHsKLSAgICBi
b29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gaXNuYW4oeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzbmFuKGZsb2F0
MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbmFuKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc25hbihmbG9hdDQgeCkgewotICAgIGJv
b2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25hbih4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBpc25hbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc25hbih4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBpc25hbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIEFsbE1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRv
cl4gKi8KLWJvb2wgb3BlcmF0b3JeKGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAgaWYgKGEpCi0gICAg
ICAgIHJldHVybiAhYjsKLSAgICByZXR1cm4gYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3JeKGlu
dCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50LCB1aW50KTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIGlzaW5mICovCi1uYXRpdmUgYm9vbCBpc2luZihmbG9hdCk7Ci1ib29sMiBpc2lu
ZihmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2luZih4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbDMgaXNpbmYoZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gaXNpbmYoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzaW5m
KGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzaW5mKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGlzaW5mKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzaW5m
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzaW5mKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcnwgKi8KLWJvb2wgb3BlcmF0b3J8KGJv
b2wgYSwgYm9vbCBiKSB7Ci0gICAgcmV0dXJuIGEgfHwgYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0
b3J8KGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yfCh1aW50LCB1aW50KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIGRlZ3JlZXMgKi8KLWZsb2F0IGRlZ3JlZXMoZmxvYXQgeCkgewotICAg
IHJldHVybiB4ICogMTgwIC8gMy4xNDE1OTsKLX0KLWZsb2F0MiBkZWdyZWVzKGZsb2F0MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBkZWdyZWVzKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZGVncmVlcyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRl
Z3JlZXMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRl
Z3JlZXMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBkZWdyZWVzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRlZ3JlZXMoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRlZ3JlZXMoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVn
cmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZWdyZWVzKGZsb2F0M3gyIHgpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRl
Z3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRl
Z3JlZXMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRlZ3JlZXMo
ZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBk
ZWdyZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRlZ3JlZXMoZmxvYXQyeDMgeCkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGVncmVl
cyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyBkZWdyZWVzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBkZWdyZWVzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRlZ3JlZXMoeFszXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRlZ3JlZXMoZmxvYXQyeDQgeCkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdyZWVzKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3g0IGRlZ3JlZXMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGVncmVlcyh4WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGVncmVlcyhmbG9hdDR4NCB4KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBkZWdyZWVzKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3JlZXMoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBkZWdyZWVzKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRlZ3JlZXMoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBsZSAq
LwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUxRDx1aW50Piwgc2FtcGxlciwgZmxvYXQgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyRDx1aW50Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkQ8
dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVp
bnQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlM0Q8
dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4
dHVyZTNEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5h
dGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTFEPHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUy
RDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxl
KFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQy
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIg
U2FtcGxlKFRleHR1cmUzRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRp
dmUgdWludDIgU2FtcGxlKFRleHR1cmUzRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUx
RDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUo
VGV4dHVyZTFEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQzIFNhbXBsZShUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBs
ZShUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWludDM+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGUoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZShUZXh0dXJlMUQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEPHVp
bnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVy
ZTNEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1w
bGUoVGV4dHVyZTNEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUxRDxpbnQ+LCBzYW1wbGVy
LCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJE
PGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0
dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgaW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlM0Q8
aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1
cmUzRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2
ZSBpbnQgU2FtcGxlKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTFEPGludDI+LCBzYW1wbGVyLCBmbG9hdCBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEPGludDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyRDxp
bnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50
MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUzRDxp
bnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0
dXJlM0Q8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0
aXZlIGludDIgU2FtcGxlKFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUxRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQg
bG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUxREFycmF5PGludDM+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyRDxpbnQz
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJl
MkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGludDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJl
M0Q8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUo
VGV4dHVyZTNEPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsK
LW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMUQ8aW50ND4sIHNhbXBsZXIsIGZs
b2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQ0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4
dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4
dHVyZTNEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2Ft
cGxlKFRleHR1cmUzRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNl
dCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUxRDxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShU
ZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
IFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZUN1YmU8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUo
VGV4dHVyZTFEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dDIgU2FtcGxlKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2Ft
cGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUz
RDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1w
bGUoVGV4dHVyZTNEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDM+
LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJl
MURBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
MyBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1w
bGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQzPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUzRDxmbG9h
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9h
dDMgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMUQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUy
RDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1w
bGUoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0NCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJl
Q3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNh
bXBsZShUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
IFNhbXBsZShUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
U2FtcGxlTGV2ZWwgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4
dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZl
bChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8
dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0IFNhbXBs
ZUxldmVsKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1
cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2
ZWwoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJl
MkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQy
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBT
YW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50
NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJl
MkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0
aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVM
ZXZlbChUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBM
T0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChU
ZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0
dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0
dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBT
YW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChU
ZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7
Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRl
eHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVs
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZl
bChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
TE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlQmlhcyAqLwot
bmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1
aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQyIFNhbXBs
ZUJpYXMoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBC
aWFzKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRl
eHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1u
YXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVp
bnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0
IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVCaWFz
KFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
QmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGlu
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBT
YW1wbGVCaWFzKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQy
IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUy
RDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBp
bnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1u
YXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBs
ZUJpYXMoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4
dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1w
bGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQg
U2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0
IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkQ8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBs
ZUJpYXMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4
dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBTYW1wbGVHcmFkICovCi1uYXRpdmUgdWludCBTYW1w
bGVHcmFkKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
dWludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJl
MkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDIgU2Ft
cGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBs
ZUdyYWQoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFk
KFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERY
LCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRp
dmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0
dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxv
YXQzIEREWSk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50IFNh
bXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQyIFNh
bXBsZUdyYWQoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2
ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGlu
dDIgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChU
ZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBm
bG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGlu
dDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3Jh
ZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1
cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQo
VGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQy
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5h
dGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxm
bG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkp
OwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0NCBT
YW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmVD
dWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQz
IEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
R3JhZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlR3JhZChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNpbmggKi8K
LW5hdGl2ZSBmbG9hdCBzaW5oKGZsb2F0KTsKLWZsb2F0MiBzaW5oKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHNpbmgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW5oKGZsb2F0
MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNpbmgoZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
c2luaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzaW5oKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IHNpbmgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNpbmgoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzaW5oKGZsb2F0M3gyIHgpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNpbmgoZmxvYXQ0eDIgeCkgewotICAgIGZs
b2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgo
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNpbmgoZmxvYXQyeDMg
eCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc2luaChmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzaW5oKGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzaW5o
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IHNpbmgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0Mng0IHNpbmgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBz
aW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNpbmgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNp
bmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBzaW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gc2luaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgc2luaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHNpbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW5o
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gc2luaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW5oKHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IHNpbmgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeSAqLwotbmF0aXZlIGZsb2F0IGRkeShmbG9hdCk7
Ci1mbG9hdDIgZGR5KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBkZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgZGR5KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBkZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGRkeSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRk
eShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHkoeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MiBkZHkoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHkoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeShmbG9hdDN4
MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHkoZmxvYXQ0eDIgeCkgewot
ICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHkoZmxvYXQyeDMgeCkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRk
eSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5KGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgzIGRkeShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5KHhbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHkoZmxvYXQyeDQgeCkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhb
MV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHkoZmxvYXQzeDQgeCkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGRkeSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgZGR5KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
ZGR5KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBk
ZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHkoeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRk
eSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gZGR5KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBvcGVyYXRvcj49ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KGludCwgaW50
KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVy
YXRvcj49KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PSh1aW50MiwgdWlu
dDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPj0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29s
NCBvcGVyYXRvcj49KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PShpbnQy
LCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KGludDMsIGludDMpOwotbmF0aXZlIGJv
b2w0IG9wZXJhdG9yPj0oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PShmbG9h
dDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PShmbG9hdDMsIGZsb2F0Myk7Ci1u
YXRpdmUgYm9vbDQgb3BlcmF0b3I+PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBv
cGVyYXRvcj49KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj49
KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj49KGZsb2F0NHgy
LCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj49KGZsb2F0MngzLCBmbG9hdDJ4
Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj49KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRp
dmUgYm9vbDR4MyBvcGVyYXRvcj49KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4
NCBvcGVyYXRvcj49KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRv
cj49KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj49KGZsb2F0
NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkc3QgKi8KLXVpbnQ0IGRzdCh1
aW50NCBzcmMwLCB1aW50NCBzcmMxKSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdC54
ID0gMTsKLSAgICByZXN1bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAgICByZXN1bHQueiA9IHNy
YzAuejsKLSAgICByZXN1bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50
NCBkc3QoaW50NCBzcmMwLCBpbnQ0IHNyYzEpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAgcmVzdWx0Lnog
PSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBkc3QoZmxvYXQ0IHNyYzAsIGZsb2F0NCBzcmMxKSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0g
ICAgcmVzdWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZG90ICovCi11aW50IGRvdCh1aW50
IGEsIHVpbnQgYikgewotICAgIHJldHVybiBhICogYjsKLX0KLXVpbnQgZG90KHVpbnQyIGEsIHVp
bnQyIGIpIHsKLSAgICB1aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsw
XSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQgZG90KHVpbnQzIGEsIHVpbnQzIGIpIHsKLSAgICB1aW50IHJlc3Vs
dCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgZG90KHVpbnQ0IGEsIHVpbnQ0IGIpIHsKLSAg
ICB1aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsg
YVsyXSAqIGJbMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVszXSAqIGJbM107Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50IGEsIGludCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBi
OwotfQotaW50IGRvdChpbnQyIGEsIGludDIgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAg
IHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFb
MV0gKiBiWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludDMgYSwgaW50MyBi
KSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJb
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50NCBh
LCBpbnQ0IGIpIHsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBh
WzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICog
YlszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgZG90KGZsb2F0IGEsIGZsb2F0IGIp
IHsKLSAgICByZXR1cm4gYSAqIGI7Ci19Ci1mbG9hdCBkb3QoZmxvYXQyIGEsIGZsb2F0MiBiKSB7
Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQgZG90KGZsb2F0MyBhLCBmbG9hdDMgYikgewotICAgIGZsb2F0IHJlc3VsdCA9
IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdDQgYSwgZmxvYXQ0IGIpIHsKLSAg
ICBmbG9hdCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBiWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc2Zsb2F0ICovCi1uYXRpdmUg
ZmxvYXQgYXNmbG9hdChpbnQpOwotZmxvYXQyIGFzZmxvYXQoaW50MiB4KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhc2Zsb2F0KGlu
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxv
YXQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhc2Zsb2F0KGludDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gYXNmbG9hdCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotbmF0aXZlIGZsb2F0IGFzZmxvYXQodWludCk7Ci1mbG9hdDIgYXNmbG9hdCh1aW50MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBhc2Zsb2F0KHVpbnQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNm
bG9hdCh1aW50NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zs
b2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2Zsb2F0KHhbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBhc2Zsb2F0KGZsb2F0IHgpIHsKLSAgICByZXR1cm4geDsK
LX0KLWZsb2F0MiBhc2Zsb2F0KGZsb2F0MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDMg
YXNmbG9hdChmbG9hdDMgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0IGFzZmxvYXQoZmxv
YXQ0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MngyIGFzZmxvYXQoZmxvYXQyeDIgeCkg
ewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDIgYXNmbG9hdChmbG9hdDN4MiB4KSB7Ci0gICAg
cmV0dXJuIHg7Ci19Ci1mbG9hdDR4MiBhc2Zsb2F0KGZsb2F0NHgyIHgpIHsKLSAgICByZXR1cm4g
eDsKLX0KLWZsb2F0MngzIGFzZmxvYXQoZmxvYXQyeDMgeCkgewotICAgIHJldHVybiB4OwotfQot
ZmxvYXQzeDMgYXNmbG9hdChmbG9hdDN4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDR4
MyBhc2Zsb2F0KGZsb2F0NHgzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0Mng0IGFzZmxv
YXQoZmxvYXQyeDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDQgYXNmbG9hdChmbG9h
dDN4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDR4NCBhc2Zsb2F0KGZsb2F0NHg0IHgp
IHsKLSAgICByZXR1cm4geDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzbm9ybWFsICovCi1u
YXRpdmUgYm9vbCBpc25vcm1hbChmbG9hdCk7Ci0KLWJvb2wyIGlzbm9ybWFsKGZsb2F0MiB4KSB7
Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
MyBpc25vcm1hbChmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBpc25vcm1hbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBpc25vcm1hbCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQg
aXNub3JtYWwoZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
aXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gaXNub3JtYWwoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNub3JtYWwoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2Nr
ZWRFeGNoYW5nZSAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRF
eGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2Ug
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShk
ZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91
cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRF
eGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWlu
dCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFk
Z3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3Vw
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRv
bWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBH
ZXREaW1lbnNpb25zICovCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWlu
dDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2Ug
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRo
cmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1
aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4s
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGlu
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWQgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGlu
dDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIGRl
dmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxp
bnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8Zmxv
YXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4s
IGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRv
cisgKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJh
dG9yKyh1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0KTsK
LW5hdGl2ZSB1aW50MiBvcGVyYXRvcisodWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVy
YXRvcisodWludCwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50MiwgdWludCk7
Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IrKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3Bl
cmF0b3IrKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcisodWludDMsIHVpbnQp
OwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9w
ZXJhdG9yKyh1aW50LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0LCB1aW50
KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJh
dG9yKyhpbnQsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludDIsIGludCk7Ci1uYXRp
dmUgaW50MyBvcGVyYXRvcisoaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50
LCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQzLCBpbnQpOwotbmF0aXZlIGludDQg
b3BlcmF0b3IrKGludDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludCwgaW50NCk7
Ci1uYXRpdmUgaW50NCBvcGVyYXRvcisoaW50NCwgaW50KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0
b3IrKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9h
dDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQzIG9wZXJhdG9yKyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKyhm
bG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0MywgZmxvYXQpOwot
bmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBv
cGVyYXRvcisoZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9hdDQs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIsIGZsb2F0MngyKTsK
LW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9h
dDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRv
cisoZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQs
IGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvcisoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBm
bG9hdDR4MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVy
YXRvcisoZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQy
eDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0Mngz
KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBv
cGVyYXRvcisoZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxv
YXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMsIGZsb2F0
NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2
ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBv
cGVyYXRvcisoZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciso
ZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQyeDQsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5h
dGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4
NCBvcGVyYXRvcisoZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvciso
ZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQsIGZs
b2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQ0eDQsIGZsb2F0KTsKLW5h
dGl2ZSB1aW50MiBvcGVyYXRvcisodWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50
Myk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9y
KyhpbnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJh
dG9yKyhpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0Mik7Ci1uYXRpdmUgZmxv
YXQzIG9wZXJhdG9yKyhmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxvYXQ0KTsK
LW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9w
ZXJhdG9yKyhmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyKTsK
LW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9w
ZXJhdG9yKyhmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0NHgzKTsK
LW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9w
ZXJhdG9yKyhmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0NHg0KTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIGZyYWMgKi8KLWZsb2F0IGZyYWMoZmxvYXQgeCkgewotICAg
IHJldHVybiB4IC0gZmxvb3IoeCk7Ci19Ci1mbG9hdDIgZnJhYyhmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBmcmFjKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZnJhYyhmbG9hdDMg
eCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBmcmFjKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZy
YWMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZnJhYyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBm
cmFjKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmcmFjKGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZnJhYyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmcmFjKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmcmFjKGZsb2F0MngzIHgp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZyYWMoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZnJhYyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZnJhYyh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBmcmFjKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBmcmFjKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJh
Yyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmcmFjKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFj
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZnJhYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGZyYWMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IGZyYWMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBm
cmFjKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZnJhYyh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmcmFjKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGZyYWMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZnJhYyh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBmcmFjKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzdG9yZSAqLwotbmF0aXZlIHZvaWQgc3RvcmUoZGV2aWNl
IGF0b21pY19pbnQqLCBpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUoZGV2aWNlIGF0b21pY191aW50
KiwgdWludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
KTsKLW5hdGl2ZSB2b2lkIHN0b3JlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCk7Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCByZWZyYWN0ICovCi1mbG9hdCByZWZyYWN0KGZsb2F0IGksIGZs
b2F0IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBmbG9hdCBrID0gMSAt
IGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8IDAp
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICogZG90
KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQyIHJlZnJhY3QoZmxvYXQyIGksIGZsb2F0
MiBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGsgPSAxIC0g
ZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlmIChrIDwgMCkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChldGEgKiBkb3Qo
biwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDMgcmVmcmFjdChmbG9hdDMgaSwgZmxvYXQz
IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgayA9IDEgLSBl
dGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAgaWYgKGsgPCAwKQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0gKGV0YSAqIGRvdChu
LCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0NCByZWZyYWN0KGZsb2F0NCBpLCBmbG9hdDQg
biwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBrID0gMSAtIGV0
YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8IDApCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICogZG90KG4s
IGkpICsgc3FydChrKSkgKiBuOwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9nMTAgKi8KLWZs
b2F0IGxvZzEwKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9nKGZsb2F0KDEwKSk7
Ci19Ci1mbG9hdDIgbG9nMTAoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nMTAoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxv
ZzEwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzEwKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgbG9nMTAoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGxvZzEwKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzEwKHhbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cxMChmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
ZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBsb2cxMChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2cxMChmbG9hdDR4MiB4KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEw
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGxvZzEwKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2cx
MChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MyBsb2cxMChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEw
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MyBsb2cxMChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEw
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGxvZzEwKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBsb2cx
MChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEwKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBsb2cxMChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGxvZzEwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGxvZzEwKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4NCBsb2cxMChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEw
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxv
ZzEwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGxvZzEwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEwKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGxvZzEwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxvZzEwKHhbM11bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvci8g
Ki8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IvKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9y
Lyh1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0KTsKLW5h
dGl2ZSB1aW50MiBvcGVyYXRvci8odWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRv
ci8odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLyh1aW50LCB1aW50Mik7Ci1u
YXRpdmUgdWludDMgb3BlcmF0b3IvKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0
b3IvKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci8odWludCwgdWludDMpOwot
bmF0aXZlIHVpbnQ0IG9wZXJhdG9yLyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJh
dG9yLyh1aW50NCwgdWludCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IvKHVpbnQsIHVpbnQ0KTsK
LW5hdGl2ZSBpbnQyIG9wZXJhdG9yLyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9y
LyhpbnQyLCBpbnQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IvKGludCwgaW50Mik7Ci1uYXRpdmUg
aW50MyBvcGVyYXRvci8oaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8oaW50Mywg
aW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLyhpbnQsIGludDMpOwotbmF0aXZlIGludDQgb3Bl
cmF0b3IvKGludDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludDQsIGludCk7Ci1u
YXRpdmUgaW50NCBvcGVyYXRvci8oaW50LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3Iv
KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0MiwgZmxvYXQp
OwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQz
IG9wZXJhdG9yLyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLyhmbG9h
dDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDMpOwotbmF0
aXZlIGZsb2F0NCBvcGVyYXRvci8oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVy
YXRvci8oZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLyhmbG9hdCwgZmxv
YXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5h
dGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4
MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8o
ZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQzeDIs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0M3gyKTsKLW5h
dGl2ZSBmbG9hdDR4MiBvcGVyYXRvci8oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9h
dDR4MiBvcGVyYXRvci8oZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRv
ci8oZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQyeDMs
IGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQyeDMsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9h
dDN4MyBvcGVyYXRvci8oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVy
YXRvci8oZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci8oZmxvYXQs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZsb2F0NHgz
KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDR4MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVy
YXRvci8oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxv
YXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci8oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2
ZSBmbG9hdDN4NCBvcGVyYXRvci8oZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBv
cGVyYXRvci8oZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxv
YXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQ0eDQsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NHg0KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIGRkeV9maW5lICovCi1mbG9hdCBkZHlfZmluZShmbG9hdCB4KSB7Ci0g
ICAgcmV0dXJuIGRkeSh4KTsKLX0KLWZsb2F0MiBkZHlfZmluZShmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHlf
ZmluZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5
X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR5X2ZpbmUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHlf
ZmluZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5
X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR5X2ZpbmUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2ZpbmUoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeV9maW5lKGZsb2F0MngyIHgpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeV9maW5lKGZsb2F0M3gyIHgp
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIGRkeV9maW5lKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5
X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZGR5X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRk
eV9maW5lKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeV9maW5lKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5
X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRk
eV9maW5lKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2Zp
bmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5
X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeV9maW5lKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeV9maW5lKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2Zp
bmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR5X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRk
eV9maW5lKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2Zp
bmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5
X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2ZpbmUoeFsyXVszXSk7
Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR5X2ZpbmUoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFueSAqLwotYm9vbCBhbnkoYm9vbCB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1ib29sIGFueShib29sMiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNCB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueSh1aW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkodWlu
dDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQ0IHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoaW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwot
fQotYm9vbCBhbnkoaW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
ICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQzIHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQ0IHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAh
PSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQgeCkgewotICAgIHJl
dHVybiB4ICE9IDA7Ci19Ci1ib29sIGFueShmbG9hdDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
ZmxvYXQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueShmbG9hdDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eShmbG9hdDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYW55KGZsb2F0M3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDAp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4MiB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
Ml1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFdICE9IDApOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
ZmxvYXQzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NHgzIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFueShmbG9hdDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueShmbG9hdDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0
eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsz
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bM10g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzNdICE9IDApOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShi
b29sM3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHgyIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMngzIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFueShib29sM3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHgzIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eShib29sMng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29s
M3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFueShib29sNHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNd
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHlfY29h
cnNlICovCi1mbG9hdCBkZHlfY29hcnNlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR5KHgpOwot
fQotZmxvYXQyIGRkeV9jb2Fyc2UoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJz
ZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeV9jb2Fyc2UoZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9jb2Fyc2UoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBk
ZHlfY29hcnNlKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR5X2NvYXJz
ZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2Nv
YXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGRkeV9jb2Fyc2UoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2NvYXJzZSh4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR5X2NvYXJzZShmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2Uo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeV9j
b2Fyc2UoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2Uo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5X2NvYXJzZShmbG9hdDR4MiB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2Uo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRk
eV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2NvYXJz
ZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5X2NvYXJzZShm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJz
ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHlfY29hcnNlKGZsb2F0M3gzIHgpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJz
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
ZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeV9jb2Fyc2UoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlfY29hcnNlKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29h
cnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR5X2NvYXJzZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9j
b2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR5X2NvYXJzZShmbG9hdDN4NCB4KSB7
Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9j
b2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGRkeV9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5
X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfY29hcnNlKHhbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHlfY29hcnNlKGZsb2F0NHg0IHgp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5
X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfY29hcnNl
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBk
ZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fyc2UoeFszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBkZHlfY29hcnNlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9jb2Fy
c2UoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR5X2NvYXJzZSh4WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IrKyAqLwot
dWludCBvcGVyYXRvcisrKHVpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfQot
aW50IG9wZXJhdG9yKysoaW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlICsgMTsKLX0KLWZs
b2F0IG9wZXJhdG9yKysoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRBbmQgKi8KLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkQW5kKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWlu
dCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9t
aWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChk
ZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBk
ZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3J+ICovCi1ib29sIG9wZXJhdG9yfihib29sIHZh
bHVlKSB7Ci0gICAgcmV0dXJuICF2YWx1ZTsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3J+KGludCk7
Ci1uYXRpdmUgdWludCBvcGVyYXRvcn4odWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHgg
Ki8KLW5hdGl2ZSBmbG9hdCBkZHgoZmxvYXQpOwotZmxvYXQyIGRkeChmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGRkeCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeChmbG9hdDMg
eCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGRkeCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHgoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGRkeCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeCh4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR4KGZsb2F0MngyIHgpIHsKLSAg
ICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBkZHgoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDIgZGR4KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
ZGR4KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgZGR4KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIGRkeChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhb
Ml1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHgoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGRkeCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgZGR4KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgZGR4KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBkZHgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHgoeFsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeChmbG9hdDR4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gZGR4KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeCh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR4KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeCh4WzNdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRNYXggKi8K
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRo
cmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNl
IGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkTWF4KGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGlu
dCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRn
cm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQs
IGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBh
dG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1h
eCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRo
cmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY29zaCAqLwotbmF0aXZlIGZs
b2F0IGNvc2goZmxvYXQpOwotZmxvYXQyIGNvc2goZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zaCh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNvc2goZmxvYXQzIHgpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gY29zaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgY29zaChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3NoKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGNvc2goeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29zaCh4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY29zaChmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3No
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIGNvc2goZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2go
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgY29zaChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgY29zaChmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBjb3NoKGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3No
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIGNvc2goZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2go
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvc2goeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBj
b3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gY29zaCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDQgY29zaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNv
c2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDQgY29zaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29z
aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBjb3NoKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjb3No
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
Y29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBjb3NoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2go
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBjb3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBj
b3NoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvc2goeFsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gY29zaCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgZGR4X2NvYXJzZSAqLwotZmxvYXQgZGR4X2NvYXJzZShmbG9hdCB4KSB7
Ci0gICAgcmV0dXJuIGRkeCh4KTsKLX0KLWZsb2F0MiBkZHhfY29hcnNlKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyBkZHhfY29hcnNlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9jb2Fyc2UoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IGRkeF9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGRkeF9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2Nv
YXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhfY29hcnNlKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGRkeF9jb2Fyc2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGRkeF9jb2Fyc2UoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBkZHhfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9j
b2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IGRkeF9jb2Fyc2UoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIGRkeF9jb2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4
X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR4X2Nv
YXJzZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4
X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfY29hcnNl
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHhfY29hcnNlKGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4
X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBk
ZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeF9jb2Fy
c2UoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9jb2Fyc2Uo
ZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fy
c2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGRkeF9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRk
eF9jb2Fyc2UoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fy
c2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2Nv
YXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGRkeF9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR4X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
ZGR4X2NvYXJzZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2Nv
YXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhf
Y29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBkZHhfY29hcnNlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9jb2Fyc2Uo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHhfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRk
eF9jb2Fyc2UoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIGZpcnN0Yml0aGlnaCAqLwotdWludCBmaXJzdGJpdGhpZ2godWludCB4KSB7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDMxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDMwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDI5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDI4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDI3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDI2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDI1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI0
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIzKSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIyKSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIxKSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDEwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMCkpICE9IDApCi0g
ICAgICAgIHJldHVybiAxMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTkpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMTI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE4KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDEzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNykpICE9IDApCi0gICAgICAg
IHJldHVybiAxNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTYpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMTU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE1KSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDE2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAgIHJldHVy
biAxNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTMpKSAhPSAwKQotICAgICAgICByZXR1cm4g
MTg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE5
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMDsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTApKSAhPSAwKQotICAgICAgICByZXR1cm4gMjE7Ci0g
ICAgaWYgKCh4ICYgdWludCgxIDw8IDkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjI7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjM7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDcpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjQ7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDYpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjU7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDQpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDApKSAh
PSAwKQotICAgICAgICByZXR1cm4gMzE7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBmaXJzdGJp
dGhpZ2goaW50IHgpIHsKLSAgICByZXR1cm4gZmlyc3RiaXRoaWdoKHVpbnQoeCkpOwotfQotdWlu
dDIgZmlyc3RiaXRoaWdoKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKHVpbnQzIHgp
IHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBm
aXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0
aGlnaCh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0
Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0
aGlnaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgZmlyc3RiaXRoaWdoKGlu
dDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2go
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGhpZ2goaW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
aXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGhpZ2goaW50NCB4KSB7Ci0gICAg
dWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRo
aWdoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0aGlnaCh4WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmNwICovCi1mbG9hdCByY3AoZmxv
YXQgeCkgewotICAgIHJldHVybiAxIC8geDsKLX0KLWZsb2F0MiByY3AoZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSByY3AoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByY3AoZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSByY3AoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmNwKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcmNwKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSByY3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHJjcCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSByY3AoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHJjcChmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgcmNwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJj
cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIHJjcChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHJjcCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIHJjcChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyByY3AoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3Ao
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcmNwKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
Y3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJj
cCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSByY3AoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0Mng0IHJjcChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IHJjcChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gcmNwKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmNwKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByY3AoZmxvYXQ0eDQgeCkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IHJjcCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByY3AoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IHJjcCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSByY3AoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZ3aWR0aCAqLwotCi1mbG9h
dCBmd2lkdGgoZmxvYXQgeCkgewotICAgIHJldHVybiBhYnMoZGR4KHgpKSArIGFicyhkZHkoeCkp
OwotfQotZmxvYXQyIGZ3aWR0aChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZ3aWR0aCh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZ3aWR0aChmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGZ3aWR0aCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmd2lkdGgoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBmd2lkdGgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmd2lk
dGgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZndpZHRoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IGZ3aWR0aCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZndpZHRoKGZs
b2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndp
ZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRo
KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmd2lkdGgoZmxvYXQz
eDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
ZndpZHRoKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZndpZHRoKGZsb2F0MngzIHgpIHsKLSAgICBm
bG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lk
dGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgo
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZ3aWR0aChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmd2lk
dGgoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBm
d2lkdGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lk
dGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGZ3aWR0aCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDQgZndpZHRoKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZndpZHRoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZ3aWR0aCh4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZndpZHRoKGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBm
d2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lk
dGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmd2lkdGgo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGZ3aWR0aCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmd2lkdGgoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZ3aWR0aChmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
ZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZndp
ZHRoKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZndpZHRo
KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZ3aWR0aCh4WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGVycCAqLwotZmxvYXQgbGVycChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBzKSB7Ci0gICAgcmV0dXJuIHggKiAoMSAtIHMpICsgeSAq
IHM7Ci19Ci1mbG9hdDIgbGVycChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0sIHpbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBsZXJwKGZsb2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVswXSwgelswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gbGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBs
ZXJwKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbGVy
cChmbG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxl
cnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGVycCh4WzJdLCB5WzJdLCB6
WzJdKTsKLSAgICByZXN1bHRbM10gPSBsZXJwKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsZXJwKGZsb2F0MngyIHgsIGZsb2F0MngyIHksIGZsb2F0
MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1b
MF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFd
WzFdLCB6WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbGVycChmbG9h
dDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
ZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBsZXJwKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBd
LCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBsZXJwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MyBsZXJwKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHop
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBd
LCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsx
XSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxlcnAoZmxvYXQzeDMgeCwgZmxvYXQz
eDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVy
cCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhb
MF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1b
Ml0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwg
elsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbGVycChmbG9hdDR4MyB4LCBm
bG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxl
cnAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwg
eVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNd
WzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0s
IHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBsZXJwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBsZXJwKGZsb2F0Mng0IHgsIGZsb2F0Mng0
IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
ZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAo
eFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFd
WzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0s
IHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsx
XVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNd
LCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpb
MV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsZXJwKGZsb2F0M3g0IHgs
IGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJw
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsy
XVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJd
LCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlb
MV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsy
XSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNdLCB6
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxlcnAoZmxvYXQ0eDQgeCwgZmxvYXQ0
eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVy
cCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZXJwKHhb
M11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsx
XSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5
WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1b
MV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxlcnAoeFszXVsxXSwgeVszXVsxXSwg
elszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gbGVycCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGxlcnAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gbGVycCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10g
PSBsZXJwKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkaXN0YW5jZSAqLwotZmxvYXQgZGlzdGFuY2UoZmxvYXQg
eCwgZmxvYXQgeSkgewotICAgIHJldHVybiBsZW5ndGgoeCAtIHkpOwotfQotZmxvYXQgZGlzdGFu
Y2UoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1m
bG9hdCBkaXN0YW5jZShmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHgg
LSB5KTsKLX0KLWZsb2F0IGRpc3RhbmNlKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIHJldHVy
biBsZW5ndGgoeCAtIHkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1h
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDkwYzI5OWEyZjBmOGUwZWM3MDZk
OTFkM2NmYWNlMWM4ODA3ZDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25NYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBTdWJzdHJpbmdMb2NhdGlvbiB7Ci0gICAg
dW5zaWduZWQgc3RhcnQ7Ci0gICAgdW5zaWduZWQgZW5kOwotfTsKLQotSGFzaE1hcDxTdHJpbmcs
IFN1YnN0cmluZ0xvY2F0aW9uPiBjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKTsK
LQotdW5zaWduZWQgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCk7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0
aWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNkNDMzMGQwMTkzNjQzYWFi
ZTk0MGU5OWIwNTY5MDNjMTJmYTMwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5k
YXJkTGlicmFyeVV0aWxpdGllcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJh
cnkuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgiCi0jaW5j
bHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHBhbC9HdW56aXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0KLXN0YXRpYyBTdHJpbmcg
ZGVjb21wcmVzc0FuZERlY29kZVN0YW5kYXJkTGlicmFyeSgpCi17Ci0gICAgYXV0byBkZWNvbXBy
ZXNzZWRTdGFuZGFyZExpYnJhcnkgPSBndW56aXAoV0hMU0xTdGFuZGFyZExpYnJhcnksIHNpemVv
ZihXSExTTFN0YW5kYXJkTGlicmFyeSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRl
Y29tcHJlc3NlZFN0YW5kYXJkTGlicmFyeS5kYXRhKCksIGRlY29tcHJlc3NlZFN0YW5kYXJkTGli
cmFyeS5zaXplKCkpOwotfQotCi1jbGFzcyBOYW1lRmluZGVyIDogcHVibGljIFZpc2l0b3Igewot
cHVibGljOgotICAgIEhhc2hTZXQ8U3RyaW5nPiB0YWtlRnVuY3Rpb25OYW1lcygpCi0gICAgewot
ICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0OwotICAgICAgICBzdGQ6OnN3YXAocmVzdWx0
LCBtX2Z1bmN0aW9uTmFtZXMpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbk5hbWVzLmFkZChjYWxsRXhwcmVz
c2lvbi5uYW1lKCkpOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0g
ICAgfQotCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fZnVuY3Rpb25OYW1lczsKLX07Ci0KLUV4cGVj
dGVkPHZvaWQsIEVycm9yPiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mIHByb2dyYW0s
IFBhcnNlciYgcGFyc2VyLCBib29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdGFuZGFyZExpYnJhcnkoZGVjb21wcmVzc0Fu
ZERlY29kZVN0YW5kYXJkTGlicmFyeSgpKTsKLSAgICBpZiAocGFyc2VGdWxsU3RhbmRhcmRMaWJy
YXJ5KSB7Ci0gICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwg
c3RhbmRhcmRMaWJyYXJ5LmdldCgpLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5LCBBU1Q6
Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJvcigpKTsK
LSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xvY2F0aW9uPj4gc3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAoY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKCkpOwotCi0gICAgYXV0byBz
dHJpbmdWaWV3ID0gU3RyaW5nVmlldyhzdGFuZGFyZExpYnJhcnkuZ2V0KCkpLnN1YnN0cmluZygw
LCBmaXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgYXV0byBwYXJz
ZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdHJpbmdWaWV3LCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5LCBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICBp
ZiAoIXBhcnNlUmVzdWx0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFyc2VSZXN1
bHQuZXJyb3IoKSk7Ci0KLSAgICBOYW1lRmluZGVyIG5hbWVGaW5kZXI7Ci0gICAgbmFtZUZpbmRl
ci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSAgICBIYXNoU2V0PFN0cmluZz4gZnVuY3Rpb25O
YW1lcyA9IG5hbWVGaW5kZXIudGFrZUZ1bmN0aW9uTmFtZXMoKTsKLSAgICBIYXNoU2V0PFN0cmlu
Zz4gYWxsRnVuY3Rpb25OYW1lczsKLSAgICAvLyBUaGUgbmFtZSBvZiBhIGNhbGwgdG8gYSBjYXN0
IG9wZXJhdG9yIGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlLCBzbyB3ZSBjYW4ndCBtYXRjaCB0aGVt
IHVwIGNvcnJlY3RseS4KLSAgICAvLyBJbnN0ZWFkLCBqdXN0IGluY2x1ZGUgYWxsIGNhc3Rpbmcg
b3BlcmF0b3JzLgotICAgIGZ1bmN0aW9uTmFtZXMuYWRkKCJvcGVyYXRvciBjYXN0Il9zdHIpOwot
ICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYW4gYXV0aG9yIGNhbid0IHdyaXRlIGEg
ZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUgYXMgYW55dGhpbmcgaW4gdGhlIHN0YW5k
YXJkIGxpYnJhcnkuCi0gICAgLy8gSWYgdGhleSBkbyBzbywgd2UgbmVlZCB0byBtYWtlIHN1cmUg
aXQgY29sbGlkZXMsIHNvIHdlIGluY2x1ZGUgYWxsIHBvdGVudGlhbCBkdXBsaWNhdGVzIGhlcmUs
IGFuZCB0aGUgImNoZWNrRHVwbGljYXRlRnVuY3Rpb25zIiBwYXNzIGVuZm9yY2VzIGl0LgotICAg
IGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRp
b25zKCkpCi0gICAgICAgIGZ1bmN0aW9uTmFtZXMuYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi0+bmFt
ZSgpKTsKLSAgICB3aGlsZSAoIWZ1bmN0aW9uTmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1
dG8gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudCA9IHByb2dyYW0ubmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIGF1dG8gZnVuY3Rpb25EZWZpbml0aW9u
c0NvdW50ID0gcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOwotICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG5hbWUgOiBmdW5jdGlvbk5hbWVzKSB7Ci0gICAgICAgICAgICBpZiAo
YWxsRnVuY3Rpb25OYW1lcy5jb250YWlucyhuYW1lKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1h
cC5nZXQoKS5maW5kKG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IHN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9uTWFwLmdldCgpLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgYXV0byBzdHJpbmdWaWV3ID0gU3RyaW5nVmlldyhzdGFuZGFyZExpYnJh
cnkuZ2V0KCkpLnN1YnN0cmluZyhpdGVyYXRvci0+dmFsdWUuc3RhcnQsIGl0ZXJhdG9yLT52YWx1
ZS5lbmQgLSBpdGVyYXRvci0+dmFsdWUuc3RhcnQpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
IHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dMbihzdHJpbmdWaWV3KTsKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXV0byBzdGFydCA9IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9u
cygpLnNpemUoKTsKLSAgICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2Uo
cHJvZ3JhbSwgc3RyaW5nVmlldywgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpO
YW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlUmVzdWx0
KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJv
cigpKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKSAhPSBzdGFydCkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJub24gbmF0aXZlIHN0ZGxpYiBmdW5jdGlvbjogJyIsIG5hbWUs
ICInIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbGxGdW5jdGlvbk5hbWVzLmFkZChu
YW1lKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKCA7IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zQ291bnQgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyAr
K25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQpCi0gICAgICAgICAgICBuYW1lRmluZGVy
LlZpc2l0b3I6OnZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50XSk7Ci0gICAgICAgIGZvciAoIDsgZnVuY3Rpb25E
ZWZpbml0aW9uc0NvdW50IDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyAr
K2Z1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCkKLSAgICAgICAgICAgIG5hbWVGaW5kZXIuVmlzaXRv
cjo6dmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbZnVuY3Rpb25EZWZpbml0aW9u
c0NvdW50XSk7Ci0gICAgICAgIGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VGdW5jdGlv
bk5hbWVzKCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNjJmMzgyNDcxYTYwNDc4N2IwNzI0MGYzOWI2Mjc1ZTUyMjk1
YTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0
aWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVy
cm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
Y2xhc3MgUGFyc2VyOwotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGlu
Y2x1ZGVTdGFuZGFyZExpYnJhcnkoUHJvZ3JhbSYsIFBhcnNlciYsIGJvb2wgcGFyc2VGdWxsU3Rh
bmRhcmRMaWJyYXJ5KTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc1ODMyZmQxNzY0Y2Q5NmIwYmI1ZjhmNDFhODJmZTUxOWZjMjkx
MGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNr
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmxvY2su
aCIKLSNpbmNsdWRlICJXSExTTEJyZWFrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb250aW51ZS5oIgot
I2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCi0jaW5j
bHVkZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xXaGlsZUxvb3AuaCIKLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
IDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgQmVoYXZpb3IgOiB1
aW50OF90IHsKLSAgICAgICAgUmV0dXJuID0gMSA8PCAwLAotICAgICAgICBCcmVhayA9IDEgPDwg
MSwKLSAgICAgICAgQ29udGludWUgPSAxIDw8IDIsCi0gICAgICAgIEZhbGx0aHJvdWdoID0gMSA8
PCAzLAotICAgICAgICBOb3RoaW5nID0gMSA8PCA0Ci0gICAgfTsKLQotICAgIE9wdGlvblNldDxC
ZWhhdmlvcj4gdGFrZUZ1bmN0aW9uQmVoYXZpb3IoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
c3RhY2suc2l6ZSgpID09IDEpOwotICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFzdCgpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6QnJlYWsgfSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkZhbGx0aHJvdWdoIH0pOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpDb250aW51ZSB9KTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2su
YXBwZW5kKHsgQmVoYXZpb3I6OlJldHVybiB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VM
YXN0KCk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVt
b3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5n
KTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OkZvckxvb3AmIGZvckxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBUaGUgaW5p
dGlhbGl6YXRpb24gYWx3YXlzIGhhcyBhIGJlaGF2aW9yIG9mIE5vdGhpbmcsIHdoaWNoIHdlIGFs
cmVhZHkgYWRkIHVuY29uZGl0aW9uYWxseSBiZWxvdywKLSAgICAgICAgLy8gc28gd2UgY2FuIGp1
c3QgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbi4KLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZm9yTG9vcC5ib2R5KCkpOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBi
LnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29u
dGludWUpOwotICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3Rh
Y2suYXBwZW5kKGIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdo
aWxlTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGls
ZUxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgYi5yZW1v
dmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVl
KTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFw
cGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNo
Q2FzZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN3aXRjaENhc2Up
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0
YXRlbWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChzd2l0Y2hTdGF0ZW1lbnQuc3dp
dGNoQ2FzZXMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVo
YXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAgZm9yIChh
dXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLSAgICAgICAgICAgIGlmICho
YXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGF1dG8gYiA9
IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIHJlZHVjdGlvbiA9IHJlZHVjdGlvbiB8
IGI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlZHVjdGlvbi5jb250YWlucyhCZWhhdmlvcjo6
Tm90aGluZykpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0Y2ggc3RhdGVtZW50
IG11c3QgZW5kIGluIGEgYnJlYWsvZmFsbHRocm91Z2gvcmV0dXJuIiwgc3dpdGNoU3RhdGVtZW50
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgcmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICByZWR1Y3Rpb24u
cmVtb3ZlKEJlaGF2aW9yOjpGYWxsdGhyb3VnaCk7Ci0gICAgICAgIHJlZHVjdGlvbi5hZGQoQmVo
YXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChyZWR1Y3Rpb24pOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgp
KTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9y
PiBiUHJpbWU7Ci0gICAgICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotICAgICAg
ICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgYlByaW1lID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGJQcmltZSA9IHsgQmVoYXZpb3I6Ok5vdGhpbmcgfTsKLSAgICAgICAgbV9zdGFjay5hcHBl
bmQoYiB8IGJQcmltZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBl
bmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
QmxvY2smIGJsb2NrKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLnN0YXRlbWVu
dHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6
Ok5vdGhpbmcgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBP
cHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMTsgKytpKSB7Ci0gICAgICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2ldKTsKLSAgICAgICAg
ICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIGlmICghYi5jb250YWlu
cyhCZWhhdmlvcjo6Tm90aGluZykpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
U3RhdGVtZW50IGluc2lkZSBhbiBpbm5lciBibG9jayBtdXN0IGJlIHJlYWNoYWJsZS4iLCBibG9j
ay5zdGF0ZW1lbnRzKClbaV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6Ok5vdGhp
bmcpOwotICAgICAgICAgICAgaWYgKGIuY29udGFpbnMoQmVoYXZpb3I6OkZhbGx0aHJvdWdoKSkg
ewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJGYWxsdGhyb3VnaCBtdXN0IGJlIHRo
ZSBsYXN0IHN0YXRlbWVudCBpbiBhIGJsb2NrLiIsIGJsb2NrLnN0YXRlbWVudHMoKVtpXS0+Y29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZWR1Y3Rpb24gPSByZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbYmxvY2suc3RhdGVtZW50cygp
LnNpemUoKSAtIDFdKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV9zdGFj
ay5hcHBlbmQocmVkdWN0aW9uIHwgYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1f
c3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQotCi0gICAgVmVjdG9y
PE9wdGlvblNldDxCZWhhdmlvcj4+IG1fc3RhY2s7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJv
cj4gY2hlY2tTdGF0ZW1lbnRCZWhhdmlvcihQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlciBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI7Ci0gICAgZm9yIChh
dXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkg
ewotICAgICAgICBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuVmlzaXRvcjo6dmlzaXQoZnVuY3Rp
b25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oYXNF
cnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5yZXN1
bHQoKTsKLSAgICAgICAgYXV0byBiZWhhdmlvciA9IHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci50
YWtlRnVuY3Rpb25CZWhhdmlvcigpOwotICAgICAgICBpZiAobWF0Y2hlcyhmdW5jdGlvbkRlZmlu
aXRpb24tPnR5cGUoKSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5cGUoKSkpIHsKLSAgICAg
ICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9y
OjpSZXR1cm4pOwotICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlcjo6QmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9
IE9wdGlvblNldDxTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yPigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGVuZCBhIHZvaWQg
ZnVuY3Rpb24gd2l0aCBhIGJyZWFrLCBjb250aW51ZSwgb3IgZmFsbHRocm91Z2guIikpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9IFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlcjo6QmVoYXZpb3I6OlJldHVybikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IoIk5vbi12b2lkIGZ1bmN0aW9ucyBtdXN0IHJldHVybiBhIHZhbHVl
IG9uIGFsbCBjb2RlIHBhdGhzLiIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlZTAzZDY2NDU0
ZjZjZDBjNjYzNjg4OTM5ZTFmOGZmMjdkMDg1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1N0YXRlbWVudEJlaGF2aW9yKFBy
b2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmNjOTBhMzY0MDVhMmVkMTc0ZGQzNTYzMmQ2NjlhNDk3MTI4YmYyZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1
ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlv
bkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJX
SExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRU
eXBlSGFzaC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIEZpbmRBbGxUeXBlcyA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5GaW5kQWxsVHlwZXMoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
bV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5IHsgcG9pbnRlclR5cGUgfSk7Ci0gICAg
ICAgIFZpc2l0b3I6OnZpc2l0KHBvaW50ZXJUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBtX3VubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBhcnJheVJl
ZmVyZW5jZVR5cGUgfSk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5UmVmZXJlbmNlVHlw
ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5
IHsgYXJyYXlUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGFwcGVuZE5hbWVkVHlwZShl
bnVtZXJhdGlvbkRlZmluaXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJhdGlv
bkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXBw
ZW5kTmFtZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2aXNp
dChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBhcHBlbmROYW1lZFR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAg
ICAgVmlzaXRvcjo6dmlzaXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICB9Ci0KLSAgICBI
YXNoU2V0PFVubmFtZWRUeXBlS2V5PiB0YWtlVW5uYW1lZFR5cGVzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEZNb3ZlKG1fdW5uYW1lZFR5cGVzKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IHRha2VOYW1lZFR5cGVzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fbmFtZWRUeXBlcyk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIHZvaWQgYXBwZW5kTmFtZWRUeXBlKEFTVDo6TmFtZWRUeXBlJiB0eXBlKQotICAg
IHsKLSAgICAgICAgLy8gVGhlIHdheSB3ZSB3YWxrIHRoZSBBU1QgZW5zdXJlcyB3ZSBzaG91bGQg
bmV2ZXIgdmlzaXQgYSBuYW1lZCB0eXBlIHR3aWNlLgotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX25hbWVkVHlwZXMpCi0gICAgICAgICAgICBBU1NFUlQo
JmVudHJ5LmdldCgpLnVuaWZ5Tm9kZSgpICE9ICZ0eXBlLnVuaWZ5Tm9kZSgpKTsKLSNlbmRpZgot
ICAgICAgICBtX25hbWVkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8
VW5uYW1lZFR5cGVLZXk+IG1fdW5uYW1lZFR5cGVzOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPj4gbV9uYW1lZFR5cGVzOwotfTsKLQotRXhwZWN0ZWQ8
dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSAgICBGaW5kQWxsVHlwZXMgZmluZEFsbFR5cGVzOwotICAgIGZpbmRBbGxUeXBlcy5jaGVja0Vy
cm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0gICAgYXV0byB1bm5hbWVkVHlwZXMgPSBmaW5kQWxsVHlw
ZXMudGFrZVVubmFtZWRUeXBlcygpOwotICAgIGF1dG8gbmFtZWRUeXBlcyA9IGZpbmRBbGxUeXBl
cy50YWtlTmFtZWRUeXBlcygpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLQotICAg
IGZvciAoYXV0byYgdW5uYW1lZFR5cGVLZXkgOiB1bm5hbWVkVHlwZXMpIHsKLSAgICAgICAgYXV0
byYgdW5uYW1lZFR5cGUgPSB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpOwotICAgICAgICBh
dXRvIGxvY2F0aW9uID0gdW5uYW1lZFR5cGUuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAgICAgewot
ICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgJnVubmFt
ZWRUeXBlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgdW5u
YW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxw
dHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAg
ICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0cnVj
dG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9j
aygpLCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2Rl
OjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3Zl
KGRlZmF1bHRDb25zdHJ1Y3RvcikpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwotICAg
IH0KLQotICAgIGZvciAoYXV0byYgbmFtZWRUeXBlIDogbmFtZWRUeXBlcykgewotICAgICAgICBp
ZiAobWF0Y2hlcyhuYW1lZFR5cGUsIHByb2dyYW0uaW50cmluc2ljcygpLnZvaWRUeXBlKCkpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSAmJiBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5
cGUmPihuYW1lZFR5cGUpKS5pc0F0b21pYygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgYXV0byBsb2NhdGlvbiA9IG5hbWVkVHlwZS5nZXQoKS5jb2RlTG9jYXRpb24oKTsKLQot
ICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksIFN0cmluZygpLCBudWxs
cHRyLCBudWxscHRyKTsKLSAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0
ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1
Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxv
Y2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5h
bWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyks
IG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAg
ICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsKLQotICAgICAg
ICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFt
ZWRUeXBlJj4obmFtZWRUeXBlKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2Fz
dDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpOwotICAgICAgICAgICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVs
dENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRy
aWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2Nh
dGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRh
cmRMaWJyYXJ5KSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShkZWZhdWx0
Q29uc3RydWN0b3IpKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigi
Q291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1Y3RvciIpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEyMjU1
MGVhMmZiZDJiYjIxNjIwZGEwMjVmODFkYWUxZDRmZGE1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9y
cyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
eW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDUwNzM4MjNjN2RhMWQ3YTEyN2YzZDU2YmI2
ZjIwNTFhOWRmZmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVu
dW1lcmF0aW9uRnVuY3Rpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXpl
RW51bWVyYXRpb25GdW5jdGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVF
bnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGJvb2wgaXNPcGVy
YXRvciA9IHRydWU7Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9n
cmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGxvY2F0aW9uID0g
ZW51bWVyYXRpb25EZWZpbml0aW9uLT5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgewotICAgICAg
ICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uMSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJl
ZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9u
MiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNU
OjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVy
YXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAg
ICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgcGFy
YW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMSkpOwotICAgICAgICAg
ICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMikpOwotICAg
ICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0
ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9u
LCBwcm9ncmFtLmludHJpbnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0ciwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgb3BlcmF0b3I9PSBmb3IgZW51bSB0eXBlLiIp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNs
YXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlv
biwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwg
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAg
ICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAg
ICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAg
ICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRl
QmxvY2soKSwgc3RkOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRv
ciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYgKCFwcm9n
cmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgY29weSBj
b25zdHJ1Y3RvciBmb3IgZW51bSB0eXBlLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksICZlbnVtZXJh
dGlvbkRlZmluaXRpb24tPnR5cGUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAg
ICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAg
ICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAg
ICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRl
QmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24s
IGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFy
YW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnkpKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yKCJDYW5ub3QgY3JlYXRlICdvcGVyYXRvciBjYXN0JyBmb3IgZW51bSB0eXBlLiIpKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1YmUxNGVjMTNiYzYwMDk0YmZhY2Qx
NTY0NzdkYWNkMDgwM2E3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNp
emVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07
Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMo
UHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlz
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODBmZDUwOGM2Y2EyZDI0OWNm
ZjA0ZTYyNjFiZmYxNWM3NjBkNzQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlz
aXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hM
U0xQcm9ncmFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZXNl
IHZpc2l0aW5nIGZ1bmN0aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBk
b24ndCB1c2UgZm9yZWFjaCBzeW50YXguCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9n
cmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0p
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRp
b25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5z
aXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9n
cmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAg
ICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSk7
Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5
cGUpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5
cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU+KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBpZiAoaXM8
QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2Ug
aWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRU
eXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVk
VHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZp
bml0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3Ry
dWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBz
dHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICBm
b3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1l
cmF0aW9uTWVtYmVycygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25N
ZW1iZXIpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
JiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19j
YXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh0eXBlQXJndW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlw
ZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVu
dCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQodHlwZUFyZ3VtZW50KTsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVk
VHlwZSgpICYmIGlzPEFTVDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpKSB7Ci0gICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpU
eXBlRGVmaW5pdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRl
clR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChhcnJheVR5cGUudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICBpZiAoc3RydWN0dXJl
RWxlbWVudC5zZW1hbnRpYygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN0cnVjdHVy
ZUVsZW1lbnQuc2VtYW50aWMoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlciYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLmF0dHJpYnV0ZUJsb2NrKCkpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgZm9yIChhdXRvJiBw
YXJhbWV0ZXIgOiBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24u
c2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0
aW9uLnNlbWFudGljKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZUFyZ3Vt
ZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChjb25zdGFudEV4cHJlc3Npb24pOwotICAgIH0sIFsmXShSZWY8
QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQodHlwZVJlZmVyZW5jZSk7Ci0gICAgfSksIHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBlKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewotICAgIFdU
Rjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0
SW5TZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYnVpbHRJblNlbWFudGlj
KTsKLSAgICB9LCBbJl0oQVNUOjpSZXNvdXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZXNvdXJjZVNlbWFudGljKTsKLSAgICB9LCBb
Jl0oQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpTdGFnZUluT3V0U2VtYW50aWMm
IHN0YWdlSW5PdXRTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhZ2VJ
bk91dFNlbWFudGljKTsKLSAgICB9KSwgc2VtYW50aWMpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAg
Y29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdl
ckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
bnRlZ2VyTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYg
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9h
dExpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbCk7Ci0g
ICAgfSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChib29sZWFuTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk7Ci0gICAgfSkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0dHJpYnV0
ZUJsb2NrKQotewotICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVC
bG9jaykKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpCi17Ci19Ci0KLXZv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikKLXsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpCi17Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKQotewotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpOwotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RmxvYXRM
aXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0
ZXJhbC50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVy
YWwmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBl
JiBpbnRlZ2VyTGl0ZXJhbFR5cGUpCi17Ci0gICAgaWYgKGludGVnZXJMaXRlcmFsVHlwZS5tYXli
ZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVy
YWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxp
dGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUp
Ci17Ci0gICAgaWYgKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBl
KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpGbG9hdExpdGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKQotewotICAgIGlmIChmbG9h
dExpdGVyYWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmbG9hdExpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikKLXsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJpYnV0ZSkK
LXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhyZWFkc0Z1
bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgfSks
IGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpCbG9jayYgYmxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9jay5zdGF0
ZW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3RhdGVtZW50TGlzdCkKLXsK
LSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IHN0YXRlbWVudExpc3Quc3RhdGVtZW50cygpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQotewotICAgIHN3aXRjaCAoc3RhdGVt
ZW50LmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJsb2NrOgotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJyZWFrOgot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkNvbnRp
bnVlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb250aW51ZT4o
c3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6Oktp
bmQ6OkRvV2hpbGVMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb246Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0
YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpGYWxsdGhyb3VnaDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpGb3JMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6SWY6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6UmV0dXJuOgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTdGF0ZW1lbnRMaXN0OgotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1l
bnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3dp
dGNoQ2FzZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3dpdGNo
Q2FzZT4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1l
bnQ6OktpbmQ6OlN3aXRjaDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM6Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVu
dDo6S2luZDo6V2hpbGVMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCcmVhayYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpDb250aW51ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpE
b1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hp
bGVMb29wLmJvZHkoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmNvbmRp
dGlvbmFsKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbikKLXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0
ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9u
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dp
Y2FsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5j
ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RG90Ogot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihl
eHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkluZGV4OgotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Np
b24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihkb3RFeHByZXNz
aW9uKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZSYgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24m
PihpbmRleEV4cHJlc3Npb24pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZXhwcmVzc2lvbi5iYXNlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5l
ZmZlY3RmdWxFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RmFs
bHRocm91Z2gmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9y
TG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigp
KTsKLSAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KCpmb3JMb29wLmNvbmRpdGlvbigpKTsKLSAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
aWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAg
IGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqc3dpdGNoQ2FzZS52YWx1ZSgpKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgZm9yIChhdXRv
JiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCkKLXsKLSAgICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2YXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKQotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbi5nZXQoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKHZhcmlh
YmxlRGVjbGFyYXRpb24udHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlh
YmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1h
bnRpYygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24u
c2VtYW50aWMoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxp
emVyKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Np
b24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3Np
Z25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25t
ZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNh
bGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChhcmd1bWVudCk7Ci0gICAgaWYgKGNhbGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUo
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1h
RXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Np
b24ubGlzdCgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJl
bmNlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLnBvaW50ZXIoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2lj
YWxFeHByZXNzaW9uLnJpZ2h0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgp
KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24mIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhw
cmVzc2lvbigpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikKLXsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFZpc2l0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3
YzI1NTkxZjY0MWFlNGJkNzZhY2I1Mjc0ZjliNjhhZDdkNmNmNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFZpc2l0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0
ZS5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1
bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBUeXBlRGVmaW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1j
bGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1j
bGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0
aW9uOwotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLWNsYXNzIFBvaW50ZXJUeXBlOwotY2xhc3MgQXJy
YXlSZWZlcmVuY2VUeXBlOwotY2xhc3MgQXJyYXlUeXBlOwotY2xhc3MgU3RydWN0dXJlRWxlbWVu
dDsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbjsK
LWNsYXNzIFJlZmVyZW5jZVR5cGU7Ci1jbGFzcyBDb25zdGFudEV4cHJlc3Npb247Ci1jbGFzcyBC
dWlsdEluU2VtYW50aWM7Ci1jbGFzcyBSZXNvdXJjZVNlbWFudGljOwotY2xhc3MgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljOwotY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljOwotY2xhc3Mg
SW50ZWdlckxpdGVyYWw7Ci1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsOwotY2xhc3MgRmxv
YXRMaXRlcmFsOwotY2xhc3MgQm9vbGVhbkxpdGVyYWw7Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWw7Ci1jbGFzcyBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU7Ci1jbGFzcyBCbG9j
azsKLWNsYXNzIFN0YXRlbWVudExpc3Q7Ci1jbGFzcyBTdGF0ZW1lbnQ7Ci1jbGFzcyBCcmVhazsK
LWNsYXNzIENvbnRpbnVlOwotY2xhc3MgRG9XaGlsZUxvb3A7Ci1jbGFzcyBFeHByZXNzaW9uOwot
Y2xhc3MgRG90RXhwcmVzc2lvbjsKLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOwotY2xh
c3MgSW5kZXhFeHByZXNzaW9uOwotY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwotY2xh
c3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDsKLWNsYXNzIEZhbGx0aHJvdWdoOwotY2xh
c3MgRm9yTG9vcDsKLWNsYXNzIElmU3RhdGVtZW50OwotY2xhc3MgUmV0dXJuOwotY2xhc3MgU3dp
dGNoQ2FzZTsKLWNsYXNzIFN3aXRjaFN0YXRlbWVudDsKLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50OwotY2xhc3MgV2hpbGVMb29wOwotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlv
bjsKLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uOwotY2xhc3MgQ2FsbEV4cHJlc3Npb247Ci1j
bGFzcyBDb21tYUV4cHJlc3Npb247Ci1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb247Ci1jbGFz
cyBMb2dpY2FsRXhwcmVzc2lvbjsKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uOwotY2xhc3Mg
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjsKLWNsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lv
bjsKLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb247Ci1jbGFzcyBUZXJuYXJ5RXhwcmVz
c2lvbjsKLWNsYXNzIFZhcmlhYmxlUmVmZXJlbmNlOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci1jbGFz
cyBOYW1lZFR5cGU7Ci0KLX0KLQotY2xhc3MgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+VmlzaXRvcigpID0gZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTcxIEFkZCBhIHdheSB0byB2aXNpdCBhIGNvbnN0
IFByb2dyYW0KLQotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpOYW1lZFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5p
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlBvaW50ZXJUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJy
YXlSZWZlcmVuY2VUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlJlZmVyZW5jZVR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTZW1hbnRpYyYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Oklu
dGVnZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpCbG9jayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudExpc3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNv
bnRpbnVlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
SW5kZXhFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZhbGx0
aHJvdWdoJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6UmV0dXJuJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2Fz
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6Q2FsbEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb21t
YUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4
cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJik7Ci0KLSAgICBib29s
IGhhc0Vycm9yKCkgY29uc3QgeyByZXR1cm4gIW1fZXhwZWN0ZWRFcnJvcjsgfQotICAgIEV4cGVj
dGVkPHZvaWQsIEVycm9yPiByZXN1bHQoKSB7IHJldHVybiBtX2V4cGVjdGVkRXJyb3I7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KFQmIHgpCi0g
ICAgewotICAgICAgICBpZiAoIWhhc0Vycm9yKCkpCi0gICAgICAgICAgICB2aXNpdCh4KTsKLSAg
ICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHNldEVycm9yKEVycm9yIGVycm9yKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFoYXNFcnJvcigpKTsKLSAgICAgICAgbV9leHBlY3RlZEVycm9yID0g
bWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gbV9leHBlY3RlZEVycm9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRkZDU4OWNhZjc2NzIxMTliOGE1NDU4YmI1N2EzYmRlZDZhZWU0
ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRl
ICJKU1dlYkdQVUFkYXB0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BV
PiBXZWJHUFU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVKTsK
LX0KLQotdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYgZGVmZXJy
ZWQpIGNvbnN0Ci17Ci0gICAgYXV0byBhZGFwdGVyID0gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKFdU
Rk1vdmUob3B0aW9ucykpOwotICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4YjA1MjQwZDAwNmIzYzQyNGI0OTA2N2MyM2UxNDkzY2FiZDIzMDgxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IklETFR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQWRhcHRl
cjsKLQotc3RydWN0IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9uczsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJHUFUgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJHUFU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VT4gY3JlYXRlKCk7Ci0KLSAgICB1c2luZyBXZWJHUFVBZGFwdGVyUHJvbWlzZSA9IERPTVByb21p
c2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+OwotCi0gICAgdm9pZCByZXF1
ZXN0QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiwgV2Vi
R1BVQWRhcHRlclByb21pc2UmJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVKCkgPSBk
ZWZhdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmUyNWQ4NmEyY2EyNDg5ZGIxMzI0M2IzYzY3NTIwYWRk
MDk4ZTdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9
R1BVLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFUgewotICAgIFByb21p
c2U8V2ViR1BVQWRhcHRlcj4gcmVxdWVzdEFkYXB0ZXIob3B0aW9uYWwgR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zIG9wdGlvbnMpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNmY5
OTRmYjIwMzU0YjNlYTk4OTMyMzdkY2MxMTExYjZlZWIxNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQWRhcHRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVEZXZpY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR1BVQWRhcHRlcihXVEZNb3ZlKG9wdGlvbnMpKSk7Ci19Ci0KLVdlYkdQVUFk
YXB0ZXI6OldlYkdQVUFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM+JiYgb3B0aW9ucykKLSAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQotewotfQot
Ci12b2lkIFdlYkdQVUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBE
ZXZpY2VSZXF1ZXN0UHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQucG9z
dFRhc2soW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKGF1dG8gZGV2aWNlID0gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29udGV4dCwg
cHJvdGVjdGVkVGhpcy5nZXQoKSkpIHsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKCpkZXZpY2UpOwotCi0gICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUoZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE3MTljZWQ0NjI0MmZhOGE0MTcxYjdlM2Y4NTgxY2VhZTQ2ZTU5NmEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQot
Y2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0ZXI+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShzdGQ6Om9wdGlv
bmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7Ci0KLSAgICB1c2luZyBEZXZpY2VSZXF1
ZXN0UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVRGV2aWNl
Pj47Ci0gICAgdm9pZCByZXF1ZXN0RGV2aWNlKERvY3VtZW50JiwgRGV2aWNlUmVxdWVzdFByb21p
c2UmJikgY29uc3Q7Ci0gICAgCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnM+JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucz4mJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFw
dGVyT3B0aW9ucz4gbV9vcHRpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2NjFh
YjAwNjQzOTBkOWZmYTkyMTQ2YmY5YTE5MDY1NzI4OGMzNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQWRhcHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQWRhcHRlciwKLSAgICBFeHBv
c2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQWRhcHRlciB7Ci0gICAgLy8gcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJH
UFVFeHRlbnNpb25zIGV4dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQ
VUxpbWl0cyBsaW1pdHM7IERvbid0IGV4cG9zZSBoaWdoZXIgbGltaXRzIGZvciBub3cuCi0KLSAg
ICAvLyBNYXkgcmVqZWN0IHdpdGggRE9NRXhjZXB0aW9uICAvLyBUT0RPOiBET01FeGNlcHRpb24o
Ik9wZXJhdGlvbkVycm9yIik/Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPFdlYkdQ
VURldmljZT4gcmVxdWVzdERldmljZSgvKkdQVURldmljZURlc2NyaXB0b3IgZGVzY3JpcHRvciov
KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ4ZmUxZGYxNjNmYzU1YWNi
Y2M1MWE3NDIwOTA2ZjJkYzE2NGY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJpbmRHcm91cD4g
V2ViR1BVQmluZEdyb3VwOjpjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5kR3JvdXAp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQmluZEdyb3VwKFdURk1vdmUoYmlu
ZEdyb3VwKSkpOwotfQotCi1XZWJHUFVCaW5kR3JvdXA6OldlYkdQVUJpbmRHcm91cChSZWZQdHI8
R1BVQmluZEdyb3VwPiYmIGJpbmRHcm91cCkKLSAgICA6IG1fYmluZEdyb3VwKFdURk1vdmUoYmlu
ZEdyb3VwKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzI1ZmIyYWVmNTU0MWIw
MzRkMmQ5MWU1YTY3MWM1YzI2ZmE3MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQmluZEdyb3VwIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViR1BVQmluZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJH
UFVCaW5kR3JvdXA+IGNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwPiYmKTsKLQotICAgIEdQVUJp
bmRHcm91cCogYmluZEdyb3VwKCkgeyByZXR1cm4gbV9iaW5kR3JvdXAuZ2V0KCk7IH0KLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVCaW5kR3JvdXAoUmVmUHRyPEdQVUJpbmRHcm91cD4m
Jik7Ci0KLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwPiBtX2JpbmRHcm91cDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzc5MzAyOTQ4YjQ1M2IzZWU3Zjk1NmM2NGFmMzhiNGZjOTBl
OWQ0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZh
Y2VOYW1lPUdQVUJpbmRHcm91cCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2Vi
R1BVQmluZEdyb3VwIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3ODAwMTAzYzlhN2UzNWY0NzYyNjY1MzFmNTEyYThjYmU3OWZiM2EuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVTYW1w
bGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIFdlYkdQVUJpbmRpbmdSZXNv
dXJjZSA9IFZhcmlhbnQ8UmVmUHRyPFdlYkdQVVNhbXBsZXI+LCBSZWZQdHI8V2ViR1BVVGV4dHVy
ZVZpZXc+LCBXZWJHUFVCdWZmZXJCaW5kaW5nPjsKLQotc3RydWN0IFdlYkdQVUJpbmRHcm91cEJp
bmRpbmcgewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAgV2ViR1BVQmluZGluZ1Jlc291cmNl
IHJlc291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg0ZjZhZWVmODM5MzlhYTUyMzUwZDljMDlhOWMwNWRjZmU5YzM1NmQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgKFdlYkdQVVNhbXBsZXIgb3IgV2Vi
R1BVVGV4dHVyZVZpZXcgb3IgV2ViR1BVQnVmZmVyQmluZGluZykgV2ViR1BVQmluZGluZ1Jlc291
cmNlOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVQmluZEdyb3VwQmluZGluZyB7Ci0gICAgcmVxdWly
ZWQgdTMyIGJpbmRpbmc7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQmluZGluZ1Jlc291cmNlIHJlc291
cmNlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI5YzhlZDkzYTE4MDRjMDk4Nzk3MWE5ZTdmYjEyYTZhMzUxNzY5NGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5o
IgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBib29sIHZhbGlkYXRlQnVmZmVyQmluZGluZ1R5cGUo
Y29uc3QgR1BVQnVmZmVyKiBidWZmZXIsIGNvbnN0IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcm
IGJpbmRpbmcsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0gICAgc3dp
dGNoIChiaW5kaW5nLnR5cGUpIHsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVm
ZmVyOgotICAgICAgICBpZiAoIWJ1ZmZlci0+aXNVbmlmb3JtKCkpIHsKLSAgICAgICAgICAgIExP
RyhXZWJHUFUsICIlczogR1BVQnVmZmVyIHJlc291cmNlIGZvciBiaW5kaW5nICV1IGRvZXMgbm90
IGhhdmUgVU5JRk9STSB1c2FnZSEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgaWYgKCFi
dWZmZXItPmlzU3RvcmFnZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1
ZmZlciByZXNvdXJjZSBmb3IgYmluZGluZyAldSBkb2VzIG5vdCBoYXZlIFNUT1JBR0UgdXNhZ2Uh
IiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIExPRyhXZWJHUFUsICIlczogTGF5b3V0IGJpbmRpbmcgJXUgaXMgbm90IGEgYnVmZmVyLXR5
cGUgcmVzb3VyY2UhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2Ny
aXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91cERl
c2NyaXB0b3IoKSBjb25zdAotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9
ICJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCgpIjsKLQotICAgIGlmICghbGF5b3V0IHx8ICFs
YXlvdXQtPmJpbmRHcm91cExheW91dCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52
YWxpZCBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBpZiAoYmluZGluZ3Muc2l6ZSgpICE9IGxheW91
dC0+YmluZEdyb3VwTGF5b3V0KCktPmJpbmRpbmdzTWFwKCkuc2l6ZSgpKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICIlczogTWlzbWF0Y2hlZCBudW1iZXIgb2YgR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZ3MgYW5kIEdQVUJpbmRHcm91cEJpbmRpbmdzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBsYXlvdXRNYXAgPSBsYXlv
dXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpOwotCi0gICAgVmVjdG9yPEdQVUJp
bmRHcm91cEJpbmRpbmc+IGJpbmRHcm91cEJpbmRpbmdzOwotICAgIGJpbmRHcm91cEJpbmRpbmdz
LnJlc2VydmVDYXBhY2l0eShiaW5kaW5ncy5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRv
JiBiaW5kaW5nIDogYmluZGluZ3MpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IGxheW91dE1h
cC5maW5kKGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBsYXlvdXRN
YXAuZW5kKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9u
TmFtZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBhdXRvIGxheW91dEJpbmRpbmcgPSBpdGVyYXRv
ci0+dmFsdWU7Ci0KLSAgICAgICAgYXV0byBiaW5kaW5nUmVzb3VyY2VWaXNpdG9yID0gV1RGOjpt
YWtlVmlzaXRvcihbXShjb25zdCBSZWZQdHI8V2ViR1BVU2FtcGxlcj4mIHNhbXBsZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAgICBpZiAoIXNhbXBs
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGF1
dG8gZ3B1U2FtcGxlciA9IHNhbXBsZXItPnNhbXBsZXIoKTsKLSAgICAgICAgICAgIGlmICghZ3B1
U2FtcGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCpncHVT
YW1wbGVyKSk7Ci0gICAgICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4m
IHZpZXcpIC0+IHN0ZDo6b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAg
ICBpZiAoIXZpZXcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgICAgIGF1dG8gdGV4dHVyZSA9IHZpZXctPnRleHR1cmUoKTsKLSAgICAgICAgICAgIGlmICgh
dGV4dHVyZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCp0ZXh0
dXJlKSk7Ci0gICAgICAgIH0sIFsmbGF5b3V0QmluZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BV
QnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdS
ZXNvdXJjZT4gewotICAgICAgICAgICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlQnVmZmVyQmluZGluZ1R5cGUoYnVmZmVyLCBsYXlvdXRCaW5kaW5nLmV4dGVy
bmFsQmluZGluZywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291
cmNlPihHUFVCdWZmZXJCaW5kaW5nIHsgbWFrZVJlZigqYnVmZmVyKSwgYnVmZmVyQmluZGluZy5v
ZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgYXV0
byBiaW5kaW5nUmVzb3VyY2UgPSBXVEY6OnZpc2l0KGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IsIGJp
bmRpbmcucmVzb3VyY2UpOwotICAgICAgICBpZiAoIWJpbmRpbmdSZXNvdXJjZSkgewotICAgICAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHJlc291cmNlIGZvciBiaW5kaW5nICV1ISIs
IGZ1bmN0aW9uTmFtZSwgbGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyk7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgYmlu
ZEdyb3VwQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKEdQVUJpbmRHcm91cEJpbmRpbmcgeyBiaW5k
aW5nLmJpbmRpbmcsIFdURk1vdmUoYmluZGluZ1Jlc291cmNlLnZhbHVlKCkpIH0pOwotICAgIH0K
LQotICAgIHJldHVybiBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsgbWFrZVJlZigqbGF5b3V0LT5i
aW5kR3JvdXBMYXlvdXQoKSksIFdURk1vdmUoYmluZEdyb3VwQmluZGluZ3MpIH07Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjUyMTA4ZTA1ZWU3Y2Rl
NzVkNzU3MDVlZmQ0ZDYxYTdhZTUyMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotCi1zdHJ1
Y3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCkgY29uc3Q7
Ci0KLSAgICBSZWZQdHI8Y29uc3QgV2ViR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7Ci0gICAg
VmVjdG9yPFdlYkdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNzVjNjMyNTkwMDI5OTFhMTY2
ZGE1MDBlZDIyYjc0Zjg1YTVhNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVUJpbmRHcm91cExheW91
dCBsYXlvdXQ7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8V2ViR1BVQmluZEdyb3VwQmluZGluZz4g
YmluZGluZ3M7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQzZDJmODc5MDE0ZTU2M2RmOTE1MzYwNWJiMGUzMDVmNjNmZDE3NTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
QmluZEdyb3VwTGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVUJpbmRHcm91cExheW91
dDo6Y3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJpbmRHcm91cExheW91dChXVEZNb3ZlKGxheW91dCkp
KTsKLX0KLQotV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpXZWJHUFVCaW5kR3JvdXBMYXlvdXQoUmVm
UHRyPEdQVUJpbmRHcm91cExheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX2JpbmRHcm91cExheW91
dChXVEZNb3ZlKGxheW91dCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NWNjNWE3NTEyYmMwN2FhNWI5NTI4NjA3YWYyY2Q4NDFhOTIyMDAzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFdlYkdQVUJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJp
bmRHcm91cExheW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQmluZEdyb3Vw
TGF5b3V0PiBjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJik7Ci0KLSAgICBjb25z
dCBHUFVCaW5kR3JvdXBMYXlvdXQqIGJpbmRHcm91cExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1f
YmluZEdyb3VwTGF5b3V0LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BV
QmluZEdyb3VwTGF5b3V0KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYpOwotCi0gICAgUmVm
UHRyPEdQVUJpbmRHcm91cExheW91dD4gbV9iaW5kR3JvdXBMYXlvdXQ7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZTNlMjRmMTJhM2FlODFhZGNlY2M1ZTVl
MThmMGJhNzhiMTI3ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVCaW5kR3JvdXBMYXlvdXQsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUJpbmRHcm91cExheW91dCB7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDEwNjYyNjQ5NDE4YjQ2OGRiNGYwOTMwMjg2YjcxYjIzYzIzOTc3YTIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVy
cm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVCdWZmZXI+
JiYgYnVmZmVyLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZXJyb3JTY29wZXMpKTsK
LX0KLQotV2ViR1BVQnVmZmVyOjpXZWJHUFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLSAgICA6IEdQVU9iamVjdEJhc2UobWFr
ZVJlZihlcnJvclNjb3BlcykpCi0gICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19
Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjptYXBSZWFkQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2Um
JiBwcm9taXNlKQotewotICAgIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJhY2soV1RGTW92
ZShwcm9taXNlKSwgdHJ1ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjptYXBXcml0ZUFzeW5j
KEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJlZ2lzdGVy
UHJvbWlzZUNhbGxiYWNrKFdURk1vdmUocHJvbWlzZSksIGZhbHNlKTsKLX0KLQotdm9pZCBXZWJH
UFVCdWZmZXI6OnVubWFwKCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KCJH
UFVCdWZmZXIudW5tYXAoKTogIik7Ci0KLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBlcnJv
clNjb3BlcygpLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb246IGludmFs
aWQgR1BVQnVmZmVyISIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPnVubWFwKCZlcnJv
clNjb3BlcygpKTsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6OmRlc3Ryb3koKQotewotICAgIGVy
cm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgoIkdQVUJ1ZmZlci5kZXN0cm95KCk6ICIpOwotCi0g
ICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIpOwotICAgIGVsc2UgewotICAgICAgICBtX2J1ZmZl
ci0+ZGVzdHJveSgmZXJyb3JTY29wZXMoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsK
LSAgICB9Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjpyZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNh
bGxiYWNrKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYgcHJvbWlzZSwgYm9vbCBpc1JlYWQpCi17Ci0g
ICAgZXJyb3JTY29wZXMoKS5zZXRFcnJvclByZWZpeChtYWtlU3RyaW5nKCJHUFVCdWZmZXIubWFw
IiwgaXNSZWFkID8gIlJlYWQiIDogIldyaXRlIiwgIkFzeW5jKCk6ICIpKTsKLQotICAgIGlmICgh
bV9idWZmZXIpIHsKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IkludmFsaWQgb3BlcmF0aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYnVmZmVyLT5yZWdp
c3Rlck1hcHBpbmdDYWxsYmFjayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHByb3RlY3Rl
ZEVycm9yU2NvcGVzID0gbWFrZVJlZihlcnJvclNjb3BlcygpKV0gKEpTQzo6QXJyYXlCdWZmZXIq
IGFycmF5QnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGFycmF5QnVmZmVyKQotICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKCphcnJheUJ1ZmZlcik7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgLy8gRklYTUU6IEl0J3MgcG9zc2libGUgdG8gaGl0IHRoaXMgY29kZSBwYXRoIGlu
IHJlc3BvbnNlIHRvIGFuIHVubWFwIGNhbGwsIHdoZXJlCi0gICAgICAgICAgICAvLyB0aGUgQXJy
YXlCdWZmZXIgd2lsbCBkZWZpbml0ZWx5IGJlIG51bGwsIGFuZCB0aHVzIGFuIG91dCBvZiBtZW1v
cnkgZXJyb3IgbWFrZXMgbm8gc2Vuc2UuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTY2Ci0gICAgICAgICAgICBwcm90ZWN0ZWRFcnJv
clNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsK
LSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICB9LCBpc1JlYWQs
IGVycm9yU2NvcGVzKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJlZWUyMDkyYTNkZWRmN2I3
MzUyNmQ5ZWQ4YTMyOTIzYWVmNGI3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNs
dWRlICJHUFVCdWZmZXJVc2FnZS5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKLSNpbmNs
dWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xh
c3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgR1BV
T2JqZWN0QmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0
ZShSZWZQdHI8R1BVQnVmZmVyPiYmLCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgR1BVQnVmZmVy
KiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEdQVUJ1ZmZl
ciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLQotICAgIHVzaW5n
IEJ1ZmZlck1hcHBpbmdQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxK
U0M6OkFycmF5QnVmZmVyPj47Ci0gICAgdm9pZCBtYXBSZWFkQXN5bmMoQnVmZmVyTWFwcGluZ1By
b21pc2UmJik7Ci0gICAgdm9pZCBtYXBXcml0ZUFzeW5jKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYp
OwotICAgIHZvaWQgdW5tYXAoKTsKLSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJHUFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJyb3JTY29w
ZXMmKTsKLQotICAgIHZvaWQgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhCdWZmZXJN
YXBwaW5nUHJvbWlzZSYmLCBib29sKTsKLQotICAgIFJlZlB0cjxHUFVCdWZmZXI+IG1fYnVmZmVy
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjBhOTBjNDExN2MxZjA0N2NjZDRjOWUxNTQz
ODJlNzg1MTIzNmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAg
IEludGVyZmFjZU5hbWU9R1BVQnVmZmVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFj
ZSBXZWJHUFVCdWZmZXIgewotICAgIFByb21pc2U8QXJyYXlCdWZmZXI+IG1hcFJlYWRBc3luYygp
OwotICAgIFByb21pc2U8QXJyYXlCdWZmZXI+IG1hcFdyaXRlQXN5bmMoKTsKLSAgICB1bmRlZmlu
ZWQgdW5tYXAoKTsKLQotICAgIHVuZGVmaW5lZCBkZXN0cm95KCk7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Q4YjhjODBmOWQwZWY4ZmZlNTRjYzA0NmY2MDY4M2U2
YzY3YTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVUJ1ZmZl
ckJpbmRpbmcgewotICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1aW50NjRf
dCBvZmZzZXQ7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjMWQ4MjZkZGY2YTBmNmViODRlOTk1ZTUyYzVhMmE1N2JjYjdmMzk2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IFdlYkdQVUJ1ZmZlckJpbmRpbmcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZlciBidWZmZXI7
Ci0gICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgdTY0IHNpemU7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUxMDUxMTc3NmQ4N2ViNTI3MTg3NTUy
MjYwMzUzODAzOWUxZmM2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVy
PiYmIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1XZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVD
b21tYW5kQnVmZmVyKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6IG1f
Y29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDgzYTFkYTRlYTNjMDliY2Q5N2E3Yzg2ZDc2Y2ViOGIwMDliZmUzNDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BV
Q29tbWFuZEJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1h
bmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZm
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kQnVmZmVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFlMmYyZGNiY2Iy
YjE1NzZhMWYxOGVlM2JhNjIwMGNmNTdiZTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kQnVmZmVyLAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVDb21tYW5kQnVmZmVyIHsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5j
b2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkM2U0N2Q3MDU2ZTUxNmQw
ZDQ5NjJjYmUzYTg4ZjAwNTM5ZjVhYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEVuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQ
VUJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgotI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVy
Q29weVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKLXsKLSAgICBpZiAo
IWJ1ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2Vi
R1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2
YWxpZGF0aW9uLgotCi0gICAgcmV0dXJuIEdQVUJ1ZmZlckNvcHlWaWV3IHsgbWFrZVJlZigqYnVm
ZmVyLT5idWZmZXIoKSksICp0aGlzIH07Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNv
cHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5Vmll
dygpIGNvbnN0Ci17Ci0gICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJlKCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIHRleHR1
cmUgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICByZXR1cm4gR1BVVGV4
dHVyZUNvcHlWaWV3IHsgbWFrZVJlZigqdGV4dHVyZS0+dGV4dHVyZSgpKSwgKnRoaXMgfTsKLX0K
LQotUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRl
KFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJHUFVDb21tYW5kRW5jb2RlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotV2Vi
R1BVQ29tbWFuZEVuY29kZXI6OldlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
Ci17Ci19Ci0KLVJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcygpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVh
dGUobnVsbHB0cik7Ci0gICAgfQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3Iu
dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0
b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG51bGxw
dHIpOwotCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0
ZShtYWtlUmVmKCptX2NvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKCpncHVEZXNjcmlwdG9yKSk7Ci0g
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVy
KSk7Ci19Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRFbmNv
ZGVyOjpiZWdpbkNvbXB1dGVQYXNzKCkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewot
ICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBh
c3MoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAgYXV0byBlbmNvZGVyID0g
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVmZmVy
KSk7Ci0gICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKFdURk1vdmUo
ZW5jb2RlcikpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9C
dWZmZXIoV2ViR1BVQnVmZmVyJiBzcmMsIHVpbnQ2NF90IHNyY09mZnNldCwgV2ViR1BVQnVmZmVy
JiBkc3QsIHVpbnQ2NF90IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBpZiAoIW1f
Y29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXNyYy5idWZmZXIoKSB8fCAhZHN0LmJ1ZmZlcigpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRv
QnVmZmVyKCk6IEludmFsaWQgR1BVQnVmZmVyISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRC
dWZmZXItPmNvcHlCdWZmZXJUb0J1ZmZlcihtYWtlUmVmKCpzcmMuYnVmZmVyKCkpLCBzcmNPZmZz
ZXQsIG1ha2VSZWYoKmRzdC5idWZmZXIoKSksIGRzdE9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQg
V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVm
ZmVyQ29weVZpZXcmIHNyY0J1ZmZlciwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBkc3RU
ZXh0dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1
ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgYXV0byBncHVCdWZmZXJWaWV3ID0gc3JjQnVmZmVyLnRyeUNyZWF0ZUdQVUJ1
ZmZlckNvcHlWaWV3KCk7Ci0gICAgYXV0byBncHVUZXh0dXJlVmlldyA9IGRzdFRleHR1cmUudHJ5
Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0KLSAgICBpZiAoIWdwdUJ1ZmZlclZpZXcgfHwg
IWdwdVRleHR1cmVWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdl
YiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlclRvVGV4
dHVyZShXVEZNb3ZlKCpncHVCdWZmZXJWaWV3KSwgV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBz
aXplKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUsIGNvbnN0IFdlYkdQVUJ1
ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAg
IGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21t
YW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gc3JjVGV4
dHVyZS50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdUJ1ZmZlclZp
ZXcgPSBkc3RCdWZmZXIudHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLQotICAgIGlmICgh
Z3B1VGV4dHVyZVZpZXcgfHwgIWdwdUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVy
LT5jb3B5VGV4dHVyZVRvQnVmZmVyKFdURk1vdmUoKmdwdVRleHR1cmVWaWV3KSwgV1RGTW92ZSgq
Z3B1QnVmZmVyVmlldyksIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyYywgY29u
c3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBkc3QsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQot
ewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJH
UFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRp
b24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVTcmNWaWV3ID0gc3Jj
LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1RHN0VmlldyA9IGRz
dC50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1U3JjVmlldyB8
fCAhZ3B1RHN0VmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIg
R1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJlVG9UZXh0
dXJlKFdURk1vdmUoKmdwdVNyY1ZpZXcpLCBXVEZNb3ZlKCpncHVEc3RWaWV3KSwgc2l6ZSk7Ci19
Ci0gICAgCi1SZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmZp
bmlzaCgpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIgfHwgbV9jb21tYW5kQnVmZmVyLT5p
c0VuY29kaW5nUGFzcygpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5j
b2Rlcjo6ZmluaXNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICAvLyBQYXNzZXMg
dGhlIHJlZmVyZW5jZWQgR1BVQ29tbWFuZEJ1ZmZlciB0byB0aGUgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciwgaW52YWxpZGF0aW5nIHRoaXMgV2ViR1BVQ29tbWFuZEVuY29kZXIuCi0gICAgcmV0dXJuIFdl
YkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEVuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZlMTg0YTExNGYyZGRk
ZmY5MGJlMzMyOGY1ZDFlNjA3NDVjYjczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1h
bmRCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyOwotY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVUZXh0
dXJlOwotCi1zdHJ1Y3QgR1BVRXh0ZW50M0Q7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3
QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BV
QnVmZmVyQ29weVZpZXcoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZl
cjsKLX07Ci0KLXN0cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZp
ZXdCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gdHJ5Q3JlYXRl
R1BVVGV4dHVyZUNvcHlWaWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4g
dGV4dHVyZTsKLX07Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViR1BVQ29tbWFuZEVuY29kZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwot
Ci0gICAgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3Qg
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICBSZWY8V2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyPiBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIo
V2ViR1BVQnVmZmVyJiwgdWludDY0X3Qgc3JjT2Zmc2V0LCBXZWJHUFVCdWZmZXImLCB1aW50NjRf
dCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVy
ZShjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5Vmll
dyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNv
bnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Jiwg
Y29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0
IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNv
bnN0IEdQVUV4dGVudDNEJik7Ci0gICAgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGZpbmlzaCgp
OwotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZm
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQyMmUwNDg0
OGQyODU0YjhmNWMxMzI0NWM0NjIxNjg4NjIyOTEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIElt
cGxlbWVudGVkQXM9V2ViR1BVQnVmZmVyQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVCdWZmZXJD
b3B5VmlldyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQnVmZmVyIGJ1ZmZlcjsKLSAgICB1NjQgb2Zm
c2V0ID0gMDsKLSAgICByZXF1aXJlZCB1MzIgcm93UGl0Y2g7Ci0gICAgcmVxdWlyZWQgdTMyIGlt
YWdlSGVpZ2h0OwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5Vmll
dwotXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVDb3B5VmlldyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BV
VGV4dHVyZSB0ZXh0dXJlOwotICAgIHUzMiBtaXBMZXZlbCA9IDA7Ci0gICAgdTMyIGFycmF5TGF5
ZXIgPSAwOwotICAgIEdQVU9yaWdpbjNEIG9yaWdpbjsgLy8ge3g6IDAsIHk6IDAsIHo6IDB9Ci19
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1H
UFVDb21tYW5kRW5jb2RlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BV
Q29tbWFuZEVuY29kZXIgewotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVy
UGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcygpOwotCi0gICAgdW5kZWZpbmVkIGNv
cHlCdWZmZXJUb0J1ZmZlcigKLSAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKLSAgICAgICAgdTY0
IHNyY09mZnNldCwKLSAgICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKLSAgICAgICAgdTY0IGRzdE9m
ZnNldCwKLSAgICAgICAgdTY0IHNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlCdWZmZXJUb1Rl
eHR1cmUoCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BVVGV4
dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7
Ci0KLSAgICB1bmRlZmluZWQgY29weVRleHR1cmVUb0J1ZmZlcigKLSAgICAgICAgR1BVVGV4dHVy
ZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BVQnVmZmVyQ29weVZpZXcgZGVzdGluYXRpb24s
Ci0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKLQotICAgIHVuZGVmaW5lZCBjb3B5VGV4
dHVyZVRvVGV4dHVyZSgKLSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAg
ICAgR1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBj
b3B5U2l6ZSk7Ci0KLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGZpbmlzaCgpOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFz
c0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZhNzg4Yzg2YmM5
MWI4YjA3M2E2ZDViM2Q1NTE1NzcyNzIzY2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IFdl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29k
ZXI+JiYgZW5jb2RlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwotfQotCi1XZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OldlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyPiYmIGVuY29kZXIpCi0gICAgOiBtX3Bhc3NFbmNvZGVyIHsgV1RGTW92ZShlbmNvZGVyKSB9
Ci17Ci19Ci0KLXZvaWQgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShjb25z
dCBXZWJHUFVDb21wdXRlUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9wYXNzRW5j
b2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQ
aXBlbGluZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoIXBpcGVsaW5lLmNvbXB1dGVQaXBlbGluZSgpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgcGlwZWxp
bmUhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0UGlw
ZWxpbmUobWFrZVJlZigqcGlwZWxpbmUuY29tcHV0ZVBpcGVsaW5lKCkpKTsKLX0KLQotdm9pZCBX
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHks
IHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IEludmFsaWQgb3BlcmF0
aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIg
R1BVIHZhbGlkYXRpb24uCi0gICAgbV9wYXNzRW5jb2Rlci0+ZGlzcGF0Y2goeCwgeSwgeik7Ci19
Ci0KLUdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6
OnBhc3NFbmNvZGVyKCkKLXsKLSAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQot
Y29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
cjo6cGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlZGMxMmUy
ZmMzMjhkOWE5NzYxOGI1YzkwZTM1MzliZjQzZTc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGFzc0VuY29kZXI7
Ci1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVUNvbXB1dGVQ
aXBlbGluZTsKLQotY2xhc3MgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGljIFdlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+
JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlwZWxpbmUm
KTsKLSAgICB2b2lkIGRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHop
OwotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8R1BVQ29t
cHV0ZVBhc3NFbmNvZGVyPiYmKTsKLQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBw
YXNzRW5jb2RlcigpIGZpbmFsOwotICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KiBwYXNzRW5jb2RlcigpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVUNvbXB1dGVQYXNz
RW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTM0NmM5NDg3Y2QxNjYyOTM4ODRiYWRlOTRiNTMwOTZiMDYwYjhj
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50
ZXJmYWNlTmFtZT1HUFVDb21wdXRlUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmpl
Y3QsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2RlciA6IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICB1bmRlZmluZWQgc2V0
UGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKTsKLSAgICB1bmRlZmluZWQg
ZGlzcGF0Y2godTMyIHgsIHUzMiB5LCB1MzIgeik7Ci0KLSAgICAvLyBUT0RPIGFkZCBtaXNzaW5n
IGNvbW1hbmRzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGUwZmZhMjgwYjljZThkNzQ2MThhNjgwNzI5Y2E2ODA1MDgxNjAzODYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
Q29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRl
ICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxp
bmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxp
bmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbXB1dGVQaXBlbGluZShkZXZpY2UsIFdURk1vdmUocGlwZWxpbmUpLCBlcnJv
clNjb3BlcywgV1RGTW92ZShjb21wdXRlU2hhZGVyKSkpOwotfQotCi1XZWJHUFVDb21wdXRlUGlw
ZWxpbmU6OldlYkdQVUNvbXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRy
PEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpCi0gICAgOiBX
ZWJHUFVQaXBlbGluZShkZXZpY2UsIGVycm9yU2NvcGVzKQotICAgICwgbV9jb21wdXRlUGlwZWxp
bmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX2NvbXB1dGVTaGFkZXIoV1RGTW92ZShjb21w
dXRlU2hhZGVyKSkKLXsKLX0KLQotV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjp+V2ViR1BVQ29tcHV0
ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y2xv
bmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmICht
X2NvbXB1dGVTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNvbXB1dGVTb3Vy
Y2UgPSBtX2NvbXB1dGVTaGFkZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgbV9jb21wdXRl
U2hhZGVyLm1vZHVsZSA9IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVs
ZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyBjb21wdXRlU291cmNlIH0pLCBjb21wdXRl
U291cmNlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBXZWJHUFVDb21wdXRlUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVE
ZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAobV9jb21wdXRlUGlwZWxpbmUgJiYgbV9jb21wdXRl
U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBpZiAoYXV0byogZ3B1Q29tcHV0ZVNoYWRlck1vZHVs
ZSA9IG1fY29tcHV0ZVNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKSB7Ci0gICAgICAgICAgICBHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlKG1ha2VSZWYoKmdwdUNvbXB1
dGVTaGFkZXJNb2R1bGUpLCB7IG1fY29tcHV0ZVNoYWRlci5lbnRyeVBvaW50IH0pOwotICAgICAg
ICAgICAgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lLT5yZWNvbXBpbGUoZGV2aWNlLmRldmljZSgp
LCBXVEZNb3ZlKGNvbXB1dGVTdGFnZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDcxMzUyZTI4
MmE0YmVkODlkNmQ4N2FiODJiYmUwZDlkODgwNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2Vi
R1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIEdQVVBpcGVsaW5lOwot
Y2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVT
aGFkZXJNb2R1bGU7Ci0KLWNsYXNzIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBmaW5hbCA6IHB1Ymxp
YyBXZWJHUFVQaXBlbGluZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVQ29tcHV0ZVBp
cGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gY3JlYXRl
KFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYsIEdQVUVycm9yU2Nv
cGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKTsKLQotICAg
IGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlUGlwZWxpbmUoKTsgfQotICAgIGNv
bnN0IEdQVUNvbXB1dGVQaXBlbGluZSogY29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9jb21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBjb21wdXRlU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlU2hhZGVyLm1vZHVsZTsg
fQotCi0gICAgYm9vbCBjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0g
ICAgYm9vbCByZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6Ci0gICAg
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVDb21wdXRlUGlw
ZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBj
b21wdXRlU2hhZGVyKTsKLQotICAgIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IG1fY29tcHV0
ZVBpcGVsaW5lOwotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGls
YXRpb24uCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgbV9jb21wdXRlU2hhZGVyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dF
QkdQVVBJUEVMSU5FKFdlYkNvcmU6OldlYkdQVUNvbXB1dGVQaXBlbGluZSwgaXNDb21wdXRlUGlw
ZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhMmNlMmY0MjljNzU2YmM5YmJkMGY4ZDc5YjJiMzNi
YzZjNDAwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21wdXRlUGlwZWxp
bmUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZSB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDhkYjdkMzU4OGI3ZjFhZjgyMDMwYjQ5YTg1MTExMDgxZjkxYjM1OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0byBwaXBl
bGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgp
KSA6IG51bGxwdHI7Ci0KLSAgICBhdXRvIGNvbXB1dGUgPSBjb21wdXRlU3RhZ2UudHJ5Q3JlYXRl
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFjb21wdXRlKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIkdQVURldmljZTo6Y3JlYXRlQ29tcHV0
ZVBpcGVsaW5lKCk6IEludmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZShwaXBlbGluZUxheW91dCksIFdURk1vdmUo
KmNvbXB1dGUpIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGJlYjdlZjM2OTQyYTJhOTZiNjk3YjA0ODZiYjg1NWUwMGUzZjNlOGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0
IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3Rk
OjpvcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAgICBXZWJH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxYmM2
NzNjOTVlMjgyMmI1ZWViNmVkYzMxYWZmZDhmNjZiMzgxMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VQotXSBkaWN0aW9uYXJ5IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiZWJlNzNmNTdjMDZjMWNkMDAyZGI1NTkzNTVkOGNkMzc2ZmJmMjQ5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2Uu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3Jv
dXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQ
VUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNs
dWRlICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIK
LSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVT
YW1wbGVyLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1ZmZlclNv
dXJjZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiSlNH
UFVPdXRPZk1lbW9yeUVycm9yLmgiCi0jaW5jbHVkZSAiSlNHUFVWYWxpZGF0aW9uRXJyb3IuaCIK
LSNpbmNsdWRlICJKU1dlYkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5n
LmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldl
YkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRpbmcuaCIK
LSNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1
dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5l
TGF5b3V0LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
V2ViR1BVUXVldWUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVNh
bXBsZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlICJXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvTG9j
ay5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR1BVRGV2aWNlKTsKLQotTG9jayBXZWJHUFVEZXZp
Y2U6OnNfaW5zdGFuY2VzTG9jazsKLQotUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNl
Ojp0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdl
YkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKLXsKLSAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZp
Y2U6OnRyeUNyZWF0ZShhZGFwdGVyLT5vcHRpb25zKCkpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShjb250ZXh0LCBXVEZNb3ZlKGFkYXB0ZXIpLCBt
YWtlUmVmKCpkZXZpY2UpKSk7Ci0gICAgICAgIGRldmljZS0+c2V0RXJyb3JTY29wZXMocmVzdWx0
LT5tX2Vycm9yU2NvcGVzLmNvcHlSZWYoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1IYXNoU2V0PFdlYkdQVURldmljZSo+JiBXZWJH
UFVEZXZpY2U6Omluc3RhbmNlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8V2ViR1BVRGV2aWNlKj4+IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotfQot
Ci1Mb2NrJiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc0xvY2soKQotewotICAgIHJldHVybiBzX2lu
c3RhbmNlc0xvY2s7Ci19Ci0KLVdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIs
IFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKLSAgICAsIG1fZGV2
aWNlKFdURk1vdmUoZGV2aWNlKSkKLSAgICAsIG1fZXJyb3JTY29wZXMoR1BVRXJyb3JTY29wZXM6
OmNyZWF0ZShbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEdQVUVycm9yJiYg
ZXJyb3IpIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgZGlzcGF0Y2hVbmNh
cHR1cmVkRXJyb3IoV1RGTW92ZShlcnJvcikpOwotICAgIH0pKQotewotICAgIEFTU0VSVChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaXNEb2N1bWVudCgpKTsKLQotICAgIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBpbnN0YW5jZXMoKS5hZGQo
dGhpcyk7Ci0gICAgfQotfQotCi1XZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZpY2UoKQotewotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoKnRoaXMp
OwotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlwZWxpbmU6Omluc3Rh
bmNlc0xvY2soKSB9OwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR1BVUGlwZWxpbmU6
Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewot
ICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR1BVUGlwZWxpbmUgZnJvbSB0
aGUgaW5zdGFuY2VzIGxpc3QsIGFzIHRoZXkgbWF5IHN0aWxsIGV4aXN0LgotICAgICAgICAgICAg
ICAgIC8vIE9ubHkgcmVtb3ZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIGEgV2ViR1BVIGRldmljZS4K
LSAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5j
ZXNMb2NrKCkgfTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsK
LSAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwotICAgIH0KLX0KLQotUmVmPFdlYkdQ
VUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclBy
ZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiAiKTsKLQotICAgIGF1dG8gYnVmZmVyID0g
bV9kZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRp
b246Ok5vdE1hcHBlZCwgbV9lcnJvclNjb3Blcyk7Ci0gICAgcmV0dXJuIFdlYkdQVUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgbV9lcnJvclNjb3Blcyk7Ci19Ci0KLVZlY3RvcjxKU0M6
OkpTVmFsdWU+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQ
VURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoKTogIik7Ci0KLSAgICBKU0M6OkpTVmFsdWUgd3Jh
cHBlZEFycmF5QnVmZmVyID0gSlNDOjpqc051bGwoKTsKLQotICAgIGF1dG8gYnVmZmVyID0gbV9k
ZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb246
OklzTWFwcGVkLCBtX2Vycm9yU2NvcGVzKTsKLSAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgIGF1
dG8gYXJyYXlCdWZmZXIgPSBidWZmZXItPm1hcE9uQ3JlYXRpb24oKTsKLSAgICAgICAgd3JhcHBl
ZEFycmF5QnVmZmVyID0gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksIGFycmF5QnVmZmVyKTsKLSAg
ICB9Ci0KLSAgICBhdXRvIHdlYkJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSwgbV9lcnJvclNjb3Blcyk7Ci0gICAgYXV0byB3cmFwcGVkV2ViQnVmZmVyID0gdG9K
UygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHdlYkJ1ZmZlcik7Ci0KLSAgICByZXR1cm4geyB3cmFwcGVk
V2ViQnVmZmVyLCB3cmFwcGVkQXJyYXlCdWZmZXIgfTsKLX0KLQotUmVmPFdlYkdQVVRleHR1cmU+
IFdlYkdQVURldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgi
R1BVRGV2aWNlLmNyZWF0ZVRleHR1cmUoKTogIik7Ci0KLSAgICBhdXRvIHRleHR1cmUgPSBtX2Rl
dmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gV2ViR1BVVGV4
dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOwotfQotCi1SZWY8V2ViR1BVU2FtcGxlcj4g
V2ViR1BVRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gc2FtcGxlciA9IG1fZGV2aWNlLT50cnlDcmVh
dGVTYW1wbGVyKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBXZWJHUFVTYW1wbGVyOjpjcmVhdGUo
V1RGTW92ZShzYW1wbGVyKSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQ
VURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBsYXlvdXQgPSBtX2Rldmlj
ZS0+dHJ5Q3JlYXRlQmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBXZWJH
UFVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGxheW91dCkpOwotfQotCi1SZWY8V2Vi
R1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29u
c3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewot
ICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1
cm4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShudWxscHRyKTsKLSAgICAKLSAgICBhdXRv
IGxheW91dCA9IG1fZGV2aWNlLT5jcmVhdGVQaXBlbGluZUxheW91dChXVEZNb3ZlKCpncHVEZXNj
cmlwdG9yKSk7Ci0gICAgcmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUoV1RGTW92
ZShsYXlvdXQpKTsKLX0KLQotUmVmPFdlYkdQVUJpbmRHcm91cD4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcHRvcikg
Y29uc3QKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQ
VUJpbmRHcm91cERlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAg
IHJldHVybiBXZWJHUFVCaW5kR3JvdXA6OmNyZWF0ZShudWxscHRyKTsKLQotICAgIGF1dG8gYmlu
ZEdyb3VwID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJpbmRHcm91cCgqZ3B1RGVzY3JpcHRvciwgbV9l
cnJvclNjb3Blcyk7Ci0gICAgcmV0dXJuIFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFdURk1vdmUo
YmluZEdyb3VwKSk7Ci19Ci0KLVJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6
Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgY2FuIGJlIHZhbGlkYXRlZCBo
ZXJlPwotICAgIGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVNoYWRlck1vZHVsZShH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pOwotICAgIHJldHVy
biBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShXVEZNb3ZlKG1vZHVsZSksIGRlc2NyaXB0b3Iu
Y29kZSk7Ci19Ci0KLVJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCi17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9
IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKG1fZXJyb3JT
Y29wZXMpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVVJl
bmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIG51bGxwdHIsIG1fZXJyb3JTY29wZXMsIHsgfSwg
eyB9KTsKLQotICAgIGF1dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlUmVuZGVy
UGlwZWxpbmUoKmdwdURlc2NyaXB0b3IsIG1fZXJyb3JTY29wZXMpOwotCi0gICAgV2ViR1BVUGlw
ZWxpbmU6OlNoYWRlckRhdGEgdmVydGV4U2hhZGVyID0geyBkZXNjcmlwdG9yLnZlcnRleFN0YWdl
Lm1vZHVsZSwgZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50IH07Ci0KLSAgICBXZWJH
UFVQaXBlbGluZTo6U2hhZGVyRGF0YSBmcmFnbWVudFNoYWRlcjsKLSAgICBpZiAoZGVzY3JpcHRv
ci5mcmFnbWVudFN0YWdlKQotICAgICAgICBmcmFnbWVudFNoYWRlciA9IHsgZGVzY3JpcHRvci5m
cmFnbWVudFN0YWdlLnZhbHVlKCkubW9kdWxlLCBkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UudmFs
dWUoKS5lbnRyeVBvaW50IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5lID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShncHVQaXBlbGluZSksIG1fZXJyb3JT
Y29wZXMsIFdURk1vdmUodmVydGV4U2hhZGVyKSwgV1RGTW92ZShmcmFnbWVudFNoYWRlcikpOwot
ICAgIGlmICh3ZWJHUFVQaXBlbGluZS0+aXNWYWxpZCgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCp0aGlzLCB3ZWJHUFVQaXBlbGlu
ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHdlYkdQVVBpcGVsaW5lOwotfQotCi1SZWY8V2ViR1BVQ29t
cHV0ZVBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBX
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIG1fZXJy
b3JTY29wZXMtPnNldEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KCk6ICIpOwotCi0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKG1fZXJyb3JTY29wZXMpOwotICAgIGlmICghZ3B1
RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRl
KCp0aGlzLCBudWxscHRyLCBtX2Vycm9yU2NvcGVzLCB7IH0pOwotCi0gICAgYXV0byBncHVQaXBl
bGluZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoKmdwdURlc2NyaXB0b3Is
IG1fZXJyb3JTY29wZXMpOwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgY29tcHV0
ZVNoYWRlciA9IHsgZGVzY3JpcHRvci5jb21wdXRlU3RhZ2UubW9kdWxlLCBkZXNjcmlwdG9yLmNv
bXB1dGVTdGFnZS5lbnRyeVBvaW50IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5lID0gV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZ3B1UGlwZWxpbmUpLCBt
X2Vycm9yU2NvcGVzLCBXVEZNb3ZlKGNvbXB1dGVTaGFkZXIpKTsKLSAgICBpZiAod2ViR1BVUGlw
ZWxpbmUtPmlzVmFsaWQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVXZWJHUFVQaXBlbGluZSgqdGhpcywgd2ViR1BVUGlwZWxpbmUuZ2V0KCkpOwotICAgIHJl
dHVybiB3ZWJHUFVQaXBlbGluZTsKLX0KLQotUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBXZWJH
UFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCkgY29uc3QKLXsKLSAgICBhdXRvIGNvbW1h
bmRCdWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVy
biBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKFdURk1vdmUoY29tbWFuZEJ1ZmZlcikpOwot
fQotCi1SZWY8V2ViR1BVUXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKSBjb25zdAotewot
ICAgIGlmICghbV9xdWV1ZSkKLSAgICAgICAgbV9xdWV1ZSA9IFdlYkdQVVF1ZXVlOjpjcmVhdGUo
bV9kZXZpY2UtPnRyeUdldFF1ZXVlKCkpOwotCi0gICAgcmV0dXJuIG1ha2VSZWYoKm1fcXVldWUu
Z2V0KCkpOwotfQotCi12b2lkIFdlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZShFcnJvclByb21p
c2UmJiBwcm9taXNlKQotewotICAgIFN0cmluZyBmYWlsTWVzc2FnZTsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVUVycm9yPiBlcnJvciA9IG1fZXJyb3JTY29wZXMtPnBvcEVycm9yU2NvcGUoZmFpbE1l
c3NhZ2UpOwotICAgIGlmIChmYWlsTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIHByb21pc2Uu
cmVzb2x2ZShlcnJvcik7Ci0gICAgZWxzZQotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciwgIkdQVURldmljZTo6cG9wRXJyb3JTY29wZSgpOiAiICsgZmFp
bE1lc3NhZ2UgfSk7Ci19Ci0KLS8vIEVycm9ycyByZXBvcnRlZCB2aWEgdGhlIHZhbGlkYXRpb24g
ZXJyb3IgZXZlbnQgc2hvdWxkIGFsc28gYXBwZWFyIGluIHRoZSBjb25zb2xlIGFzIHdhcm5pbmdz
Lgotc3RhdGljIHZvaWQgcHJpbnRWYWxpZGF0aW9uRXJyb3JUb0NvbnNvbGUoR1BVRXJyb3ImIGVy
cm9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIGlmICghV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3IpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHZhbGlkYXRpb25FcnJvciA9IFdURjo6Z2V0PFJlZlB0
cjxHUFVWYWxpZGF0aW9uRXJyb3I+PihlcnJvcik7Ci0gICAgaWYgKCF2YWxpZGF0aW9uRXJyb3Ip
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbWVzc2FnZSA9IHZhbGlkYXRpb25FcnJvci0+
bWVzc2FnZSgpOwotICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKLQotICAgIGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKGNvbnNvbGVNZXNzYWdl
KSk7Ci19Ci0KLXZvaWQgV2ViR1BVRGV2aWNlOjpkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihHUFVF
cnJvciYmIGVycm9yKQotewotICAgIHByaW50VmFsaWRhdGlvbkVycm9yVG9Db25zb2xlKGVycm9y
LCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbZXJy
b3IgPSBXVEZNb3ZlKGVycm9yKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS51bmNhcHR1cmVkZXJyb3JFdmVudCwgV1RGTW92ZShl
cnJvcikpKTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YWIwOTJmOTY2MWRhYzIz
YjYxMDE1NTk4ZjhjMjY4YmEyMjFjNjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0j
aW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNs
dWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKLSNpbmNsdWRlICJX
ZWJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVPdXRPZk1lbW9yeUVycm9yOwotY2xhc3MgR1BVVmFsaWRh
dGlvbkVycm9yOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdlYkdQVUJp
bmRHcm91cDsKLWNsYXNzIFdlYkdQVUJpbmRHcm91cExheW91dDsKLWNsYXNzIFdlYkdQVUJ1ZmZl
cjsKLWNsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyOwotY2xhc3MgV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lOwotY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBXZWJHUFVSZW5kZXJQaXBl
bGluZTsKLWNsYXNzIFdlYkdQVVNhbXBsZXI7Ci1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7Ci1j
bGFzcyBXZWJHUFVTd2FwQ2hhaW47Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1Y3QgR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlwdG9yOwot
c3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9y
Owotc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3I7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQot
dXNpbmcgRXJyb3JJRExVbmlvbiA9IElETFVuaW9uPElETEludGVyZmFjZTxHUFVPdXRPZk1lbW9y
eUVycm9yPiwgSURMSW50ZXJmYWNlPEdQVVZhbGlkYXRpb25FcnJvcj4+OwotdXNpbmcgRXJyb3JQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPEVycm9ySURMVW5pb24+PjsK
LQotY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewotICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViR1BVRGV2aWNlKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVEZXZpY2Uo
KTsKLQotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVRGV2aWNlPiB0cnlDcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmKTsKLQotICAgIHN0YXRp
YyBIYXNoU2V0PFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhp
bnN0YW5jZXNMb2NrKCkpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JF
VFVSTlNfTE9DSyhzX2luc3RhbmNlc0xvY2spOwotCi0gICAgY29uc3QgV2ViR1BVQWRhcHRlciYg
YWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQotICAgIEdQVURldmlj
ZSYgZGV2aWNlKCkgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KLSAgICBjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0KLSAgICBSZWY8
V2ViR1BVQnVmZmVyPiBjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpIGNv
bnN0OwotICAgIFZlY3RvcjxKU0M6OkpTVmFsdWU+IGNyZWF0ZUJ1ZmZlck1hcHBlZChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJl
ZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9y
JikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoY29uc3QgR1BV
U2FtcGxlckRlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlv
dXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQaXBlbGlu
ZUxheW91dChjb25zdCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAg
ICBSZWY8V2ViR1BVQmluZEdyb3VwPiBjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvciYpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3Jl
YXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKSBjb25z
dDsKLSAgICBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKGNv
bnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIFJlZjxXZWJHUFVDb21w
dXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yJik7Ci0KLSAgICBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IGNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCkgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVUXVldWU+IGdldFF1ZXVl
KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRl
cikgeyBtX2Vycm9yU2NvcGVzLT5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOyB9Ci0gICAgdm9pZCBw
b3BFcnJvclNjb3BlKEVycm9yUHJvbWlzZSYmKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OyB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAg
dXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVRGV2aWNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiwgUmVmPEdQ
VURldmljZT4mJik7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViR1BVRGV2
aWNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRl
cmVmKCk7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJyb3ImJik7
Ci0KLSAgICBzdGF0aWMgTG9jayBzX2luc3RhbmNlc0xvY2s7Ci0KLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLSAgICBSZWY8Y29uc3QgV2Vi
R1BVQWRhcHRlcj4gbV9hZGFwdGVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwotICAg
IG11dGFibGUgUmVmUHRyPFdlYkdQVVF1ZXVlPiBtX3F1ZXVlOwotCi0gICAgUmVmPEdQVUVycm9y
U2NvcGVzPiBtX2Vycm9yU2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzdiNDZk
NDVkNzk2NThkMDMxMGJhZDRhYTMwYzM0ZGUxZjM1ZWIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBzZXF1ZW5jZTxh
bnk+IEdQVU1hcHBlZEJ1ZmZlcjsgIC8vIFtHUFVCdWZmZXIsIEFycmF5QnVmZmVyXQotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAg
IEludGVyZmFjZU5hbWU9R1BVRGV2aWNlLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgOiBFdmVudFRhcmdldCB7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKLQotICAgIFdl
YkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
LSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBHUFVNYXBwZWRCdWZmZXIgY3JlYXRlQnVmZmVy
TWFwcGVkKEdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVVGV4dHVy
ZSBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdl
YkdQVVNhbXBsZXIgY3JlYXRlU2FtcGxlcihHUFVTYW1wbGVyRGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKLQotICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVQaXBlbGlu
ZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVQmluZEdyb3VwIGNyZWF0ZUJpbmRHcm91cChXZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgV2ViR1BVU2hhZGVyTW9k
dWxlIGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2Ny
aXB0b3IpOwotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVDb21w
dXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IgaXMgYW4gZW1wdHkgZGljdGlvbmFyeS4KLSAgICBXZWJHUFVD
b21tYW5kRW5jb2RlciBjcmVhdGVDb21tYW5kRW5jb2RlcigvKkdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKi8pOwotCi0gICAgV2ViR1BVUXVldWUgZ2V0UXVldWUoKTsKLQot
ICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkLgotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
ZWJHUFVFeHRlbnNpb25zIGV4dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdl
YkdQVUxpbWl0cyBsaW1pdHM7Ci0KLSAgICAvLyBXZWJHUFVGZW5jZSBjcmVhdGVGZW5jZShXZWJH
UFVGZW5jZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBhdHRyaWJ1dGUgV2ViR1BV
TG9nQ2FsbGJhY2sgb25Mb2c7Ci0gICAgLy8gV2ViR1BVT2JqZWN0U3RhdHVzUXVlcnkgZ2V0T2Jq
ZWN0U3RhdHVzKFN0YXR1c2FibGVPYmplY3Qgc3RhdHVzYWJsZU9iamVjdCk7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29w
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTMxMTAwZGI1NDUxMzg3
OTQ0NzU2YzBmYjAxZmQ4ODJhMzAxYTgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlRXJyb3JTY29w
ZXMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVRGV2aWNlRXJyb3JTY29wZXM6
OnB1c2hFcnJvclNjb3BlKFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvckZpbHRlciBmaWx0
ZXIpCi17Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKGZpbHRlcik7Ci19Ci0KLXZvaWQgV2Vi
R1BVRGV2aWNlRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoV2ViR1BVRGV2aWNlJiBkZXZpY2Us
IEVycm9yUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgZGV2aWNlLnBvcEVycm9yU2NvcGUoV1RG
TW92ZShwcm9taXNlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjIwZjA3YWJlMzk4YmY5YTczNGQ0NDZhZjU4OTQ1M2MwZGIwYzEwOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLWNsYXNzIFdlYkdQVURldmljZUVycm9yU2NvcGVz
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBwdXNoRXJyb3JTY29wZShXZWJHUFVEZXZpY2Um
LCBHUFVFcnJvckZpbHRlcik7Ci0gICAgc3RhdGljIHZvaWQgcG9wRXJyb3JTY29wZShXZWJHUFVE
ZXZpY2UmLCBFcnJvclByb21pc2UmJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyZGM2MDJmYWIwZTJkZmZlMmI2ZGE0MTI2YTI5MDg2ZDUzNjZkYTRk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIChHUFVPdXRPZk1lbW9yeUVycm9yIG9yIEdQVVZhbGlk
YXRpb25FcnJvcikgR1BVRXJyb3I7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1XZWJHUFVEZXZpY2VF
cnJvclNjb3BlcwotXSBwYXJ0aWFsIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgewotICAgIHVuZGVm
aW5lZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlciBmaWx0ZXIpOwotICAgIFByb21pc2U8
R1BVRXJyb3I/PiBwb3BFcnJvclNjb3BlKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDQzNDMyNGQ0NWMzMzU3NDAzMWZhYTJhYjg1YWUz
MDZjYzNiYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V2ViR1BVRGV2aWNl
RXZlbnRIYW5kbGVyCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdlYkdQVURldmljZSB7Ci0gICAgW0V4
cG9zZWQ9V2luZG93XSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udW5jYXB0dXJlZGVycm9yOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRiNzgxMzMwYzY2NDI0YjU0YWMzODE3
YmE2ZGQ4NTg2MzkwMzMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Mb2NrIFdlYkdQVVBpcGVsaW5l
OjpzX2luc3RhbmNlc0xvY2s7Ci0KLUhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZp
Y2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2Vz
OwotICAgIHJldHVybiBpbnN0YW5jZXM7Ci19Ci0KLUxvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0
YW5jZXNMb2NrKCkKLXsKLSAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1XZWJHUFVQ
aXBlbGluZTo6V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKLSAgICA6IEdQVU9iamVjdEJhc2UobWFrZVJlZihlcnJvclNjb3Bl
cykpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkZXZpY2Uuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQotewotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
Ci0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAg
ICAgIGluc3RhbmNlcygpLmFkZCh0aGlzLCAmZGV2aWNlKTsKLSAgICB9Ci19Ci0KLVdlYkdQVVBp
cGVsaW5lOjp+V2ViR1BVUGlwZWxpbmUoKQotewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSgqdGhpcyk7Ci0KLSAgICB7Ci0gICAgICAgIExv
Y2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNl
cygpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwot
ICAgIH0KLX0KLQotdm9pZCBXZWJHUFVQaXBlbGluZTo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKCp0
aGlzKTsKLQotICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0Y2JjN2FmYWFiMmVhODEzZjdlNTY0YWJl
MTliZWFlNjRjMTc5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LmgiCi0jaW5jbHVkZSAiR1BVT2JqZWN0QmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1v
ZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Y2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0KLWNsYXNzIFdlYkdQ
VVBpcGVsaW5lIDogcHVibGljIEdQVU9iamVjdEJhc2UsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUGlwZWxpbmUoKTsKLQot
ICAgIHN0YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIGluc3Rh
bmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7Ci0gICAgc3RhdGljIExv
Y2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9jayk7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwotCi0gICAg
c3RydWN0IFNoYWRlckRhdGEgewotICAgICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBt
b2R1bGU7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBvaW50OwotICAgIH07Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsKLQotICAgIHZv
aWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViR1BVUGlw
ZWxpbmUoV2ViR1BVRGV2aWNlJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgTG9jayBzX2luc3RhbmNlc0xvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShUb1ZhbHVl
VHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1Zh
bHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V2Vi
R1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBwaXBlbGluZS5wcmVkaWNhdGU7IH0gXAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhh
MGI4NDVlNDI4OTBjNTkyM2NkZmRkNDhlMDhkYTE1N2Q3MjhlMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdl
YkdQVVBpcGVsaW5lTGF5b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMzJjNzA0MzllYTFlMjQ4ZGIwM2FiYjAxMDZmNjYyNzQx
NzFhMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgewotICAgIFdlYkdQVVBpcGVsaW5lTGF5b3V0PyBsYXlvdXQgPSBudWxsOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiNWQ0Y2I0Zjlm
MThmZGQ4ODczNzY5MDBiYjUxM2RlOGUyYjEyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxX
ZWJHUFVQaXBlbGluZUxheW91dD4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShSZWZQdHI8
R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVVBpcGVsaW5lTGF5b3V0KFdURk1vdmUobGF5b3V0KSkpOwotfQotCi1XZWJHUFVQaXBl
bGluZUxheW91dDo6V2ViR1BVUGlwZWxpbmVMYXlvdXQoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0
PiYmIGxheW91dCkKLSAgICA6IG1fcGlwZWxpbmVMYXlvdXQoV1RGTW92ZShsYXlvdXQpKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTZmODlkY2RlMTFiYTk0M2Vh
YTg2Y2M5MzIwY2JlZDI3MjA5MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxh
eW91dC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQaXBlbGluZUxheW91dD4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShSZWZQdHI8R1BVUGlwZWxp
bmVMYXlvdXQ+JiYpOwotCi0gICAgR1BVUGlwZWxpbmVMYXlvdXQqIHBpcGVsaW5lTGF5b3V0KCkg
eyByZXR1cm4gbV9waXBlbGluZUxheW91dC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IFdlYkdQVVBpcGVsaW5lTGF5b3V0KFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJik7Ci0K
LSAgICBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+IG1fcGlwZWxpbmVMYXlvdXQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2Q4NDVjNzA2ZTkxZWZkZWQ0YmYy
MGRkNGRkNzBiNjMwM2FhODAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVQaXBlbGluZUxheW91dCwKLSAgICBFeHBvc2Vk
PVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUGlwZWxpbmVMYXlvdXQgewotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMThj
MjhlYjE1NDFjY2NiYjlhMGJlODBkZTZjNDIzY2M1YzAyODVmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RkOjpvcHRpb25hbDxHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjo6dHJ5
Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8
UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGdwdUxheW91dHM7Ci0gICAgZ3B1TGF5b3V0
cy5yZXNlcnZlQ2FwYWNpdHkoYmluZEdyb3VwTGF5b3V0cy5zaXplKCkpOwotICAgIAotICAgIGZv
ciAoY29uc3QgYXV0byYgbGF5b3V0IDogYmluZEdyb3VwTGF5b3V0cykgewotICAgICAgICBpZiAo
IWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKTogSW52YWxpZCBHUFVC
aW5kR3JvdXBMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBncHVMYXlvdXRzLnVuY2hlY2tlZEFwcGVuZChtYWtl
UmVmKCpsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVy
biBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgeyBXVEZNb3ZlKGdwdUxheW91dHMpIH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MzRjNzk1NGYzNzdhYTJhNzkyNzdiZDU0YTA5NjdhOTcyNjkzNDYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLXN0cnVjdCBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Io
KSBjb25zdDsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVQmluZEdyb3VwTGF5b3V0Pj4gYmlu
ZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmZTU1MmE4ZGFjMjRkNGRjMTI4MjkwZGIwY2E1M2UxNTc5
YzBkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdlYkdQVUJpbmRHcm91cExh
eW91dD4gYmluZEdyb3VwTGF5b3V0czsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNDNjYTcxNDkzYjkwNjczZDg0N2JiNWVl
N2I0M2Q5NTE0YjU1NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJp
bmRHcm91cC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQotewotICAgIGlmICghcGFzc0VuY29kZXIoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3Mo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcGFz
c0VuY29kZXIoKS0+ZW5kUGFzcygpOwotfQotCi12b2lkIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCYgYmlu
ZEdyb3VwKQotewotICAgIGlmICghcGFzc0VuY29kZXIoKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBNYXhpbXVtIG51bWJl
ciBvZiBiaW5kIGdyb3VwcyBzdXBwb3J0ZWQgaW4gV2ViIEdQVS4KLSAgICBpZiAoaW5kZXggPj0g
NCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNl
dEJpbmRHcm91cCgpOiBJbnZhbGlkIGluZGV4ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmICghYmluZEdyb3VwLmJpbmRHcm91cCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgV2ViR1BV
QmluZEdyb3VwISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1FOiBBbnkg
dmFsaWRhdGlvbiAoZS5nLiBpbmRleCBkdXBsaWNhdGVzLCBub3QgaW4gcGlwZWxpbmUgbGF5b3V0
KS4KLSAgICBwYXNzRW5jb2RlcigpLT5zZXRCaW5kR3JvdXAoaW5kZXgsICpiaW5kR3JvdXAuYmlu
ZEdyb3VwKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk2NWY1MGE0MzIzM2IyNjE1OWQ1NTc3NmY2MDAzNjgwMzFkMWViNjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xhc3MgV2Vi
R1BVQmluZEdyb3VwOwotCi1jbGFzcyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7
Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNpZ25lZCwg
V2ViR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ODc1YmM0
MDgyNjY3Zjk1YmM5ZDhhYTI3YWRkOTgyYTk2MGE0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIEV4cG9zZWQ9
V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAg
dW5kZWZpbmVkIGVuZFBhc3MoKTsKLSAgICB1bmRlZmluZWQgc2V0QmluZEdyb3VwKHUzMiBpbmRl
eCwgV2ViR1BVQmluZEdyb3VwIGJpbmRHcm91cC8qLCBvcHRpb25hbCBzZXF1ZW5jZTx1MzI+IGR5
bmFtaWNPZmZzZXRzKi8pOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmE0ZjdmYmU5Y2IzMGNjZjk3OTYwYjMz
MTQxOGI0MmVlYzQ1MzY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IoKSBjb25zdAotewotICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUtPm1v
ZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgcmV0dXJuIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7IG1ha2VS
ZWYoKm1vZHVsZS0+bW9kdWxlKCkpLCAqdGhpcyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFiNjkwMjQ2NzA2MGI1NmZj
YjNiNDFhYmRiODBiMDI5ZGM5NjkyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFk
ZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IG1vZHVsZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGQ4ZWQ1ZDMyMzdlY2VmYzhjOTMxOTExMzNhYzJhMGRkODJlNDg3Zi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXZWJHUFVTaGFkZXJT
dGFnZUVudW07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7Ci0gICAgcmVxdWly
ZWQgRE9NU3RyaW5nIGVudHJ5UG9pbnQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2Fj
YTdiMmQwZDE1YzZmMTJmMGMxOTY1ZjJjM2M0NDQ2YjZjM2FhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVk
ZSAiR1BVUXVldWUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVRdWV1ZT4g
V2ViR1BVUXVldWU6OmNyZWF0ZShSZWZQdHI8R1BVUXVldWU+JiYgcXVldWUpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUXVldWUoV1RGTW92ZShxdWV1ZSkpKTsKLX0KLQotV2Vi
R1BVUXVldWU6OldlYkdQVVF1ZXVlKFJlZlB0cjxHUFVRdWV1ZT4mJiBxdWV1ZSkKLSAgICA6IG1f
cXVldWUoV1RGTW92ZShxdWV1ZSkpCi17Ci19Ci0KLXZvaWQgV2ViR1BVUXVldWU6OnN1Ym1pdChj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYgYnVmZmVycykKLXsKLSAg
ICBpZiAoIW1fcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVmVj
dG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZmZXJzLnJl
c2VydmVDYXBhY2l0eShidWZmZXJzLnNpemUoKSk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBidWZm
ZXIgOiBidWZmZXJzKSB7Ci0gICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmNvbW1hbmRC
dWZmZXIoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTog
SW52YWxpZCBHUFVDb21tYW5kQnVmZmVyIGluIGxpc3QhIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1QnVmZmVycy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigq
YnVmZmVyLT5jb21tYW5kQnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAgICBtX3F1ZXVlLT5zdWJtaXQo
V1RGTW92ZShncHVCdWZmZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk4OTIyN2U0MGI4Mjll
MTcwMTRmOWY4YzNkYzQ4NDcxZjUzMzg1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7Ci0KLWNsYXNzIFdl
YkdQVVF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUXVldWU+IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYkdQVVF1ZXVlPiBjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYmKTsKLQot
ICAgIHZvaWQgc3VibWl0KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+
Jik7Ci0KLSAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLT5sYWJlbCgp
OyB9Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSB7IG1fcXVldWUtPnNl
dExhYmVsKGxhYmVsKTsgfQotCi1wcml2YXRlOgotICAgIFdlYkdQVVF1ZXVlKFJlZlB0cjxHUFVR
dWV1ZT4mJik7Ci0KLSAgICBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlMzU1Y2VhOTY1OTFlNDI2ZGY5MzhmOTYyNDZhMTQ5ODcwYjM2NWJlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVRdWV1
ZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUXVldWUgewotICAgIHVu
ZGVmaW5lZCBzdWJtaXQoc2VxdWVuY2U8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gYnVmZmVycyk7Ci0K
LSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICAvLyB1bmRlZmluZWQgc2lnbmFsKFdl
YkdQVUZlbmNlIGZlbmNlLCB1NjQgc2lnbmFsVmFsdWUpOwotICAgIC8vIHVuZGVmaW5lZCB3YWl0
KFdlYkdQVUZlbmNlIGZlbmNlLCB1NjQgdmFsdWVUb1dhaXQpOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4YjQ3ODJjN2U3MzVhYWM0
MWIzMTdkNDAzMzBhNzMyZTMzNGU4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIGNv
bnN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAg
ICA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNlKQotICAg
ICwgYXR0YWNobWVudChXVEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1HUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvcihSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlLCBjb25zdCBHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAg
IDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNl
KQotICAgICwgYXR0YWNobWVudChXVEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1zdGQ6Om9wdGlv
bmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6
dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdAotewotICAgIC8vIEZJWE1F
OiBJbXByb3ZlIGVycm9yIGNoZWNraW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGlz
IGFkZGVkIHRvIHNwZWMuCi0gICAgaWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogTm8gY29sb3IgYXR0
YWNobWVudHMgc3BlY2lmaWVkIGZvciBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciEiKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8R1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdUNvbG9yQXR0YWNobWVudHM7Ci0KLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IGNvbG9yQXR0YWNobWVudHMpIHsKLSAg
ICAgICAgaWYgKCFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudAotICAgICAgICAgICAgfHwgIWNv
bG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCkKLSAgICAgICAgICAgIHx8ICFjb2xv
ckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkg
ewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZh
bGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ih
Iik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgICAg
IGdwdUNvbG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yIHsgbWFrZVJlZigqY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUo
KSksIGNvbG9yQXR0YWNobWVudCB9KTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2ht
ZW50OwotCi0gICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKLSAgICAgICAgaWYgKCFk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50Ci0gICAgICAgICAgICB8fCAhZGVwdGhT
dGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpCi0gICAgICAgICAgICB8fCAh
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0
dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICAgICAgfQotICAgICAgICBncHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgeyBtYWtlUmVmKCpkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkpLCAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCB9
OwotICAgIH0KLQotICAgIHJldHVybiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7IFdURk1vdmUo
Z3B1Q29sb3JBdHRhY2htZW50cyksIFdURk1vdmUoZ3B1RGVwdGhBdHRhY2htZW50KSB9OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1Zjk0YTRjZmYw
ZDBlMzY2MzExNzU4NTBkNzc3NmJhZDgxNzZjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0K
LXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IEdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmVWaWV3PiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmll
dz4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7
Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdDsKLQotICAgIFZlY3RvcjxXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKLSAgICBzdGQ6
Om9wdGlvbmFsPFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODMyNDgyZTVhMTMwZWQzZDUzNWZkMmRiN2RmNWVm
MDNlNmViMjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5IEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVUZXh0dXJl
VmlldyBhdHRhY2htZW50OwotICAgIC8vIEdQVVRleHR1cmVWaWV3PyByZXNvbHZlVGFyZ2V0Owot
Ci0gICAgcmVxdWlyZWQgR1BVTG9hZE9wIGxvYWRPcDsKLSAgICByZXF1aXJlZCBHUFVTdG9yZU9w
IHN0b3JlT3A7Ci0gICAgR1BVQ29sb3IgY2xlYXJDb2xvcjsgLy8ge3I6IDAuMCwgZzogMC4wLCBi
OiAwLjAsIGE6IDEuMH0KLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVSZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQ
VVRleHR1cmVWaWV3IGF0dGFjaG1lbnQ7Ci0KLSAgICByZXF1aXJlZCBHUFVMb2FkT3AgZGVwdGhM
b2FkT3A7Ci0gICAgcmVxdWlyZWQgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7Ci0gICAgcmVxdWly
ZWQgZmxvYXQgY2xlYXJEZXB0aDsKLQotLyogTm90IHlldCBpbXBsZW1lbnRlZAotICAgIEdQVUxv
YWRPcCBzdGVuY2lsTG9hZE9wOwotICAgIEdQVVN0b3JlT3Agc3RlbmNpbFN0b3JlT3A7Ci0gICAg
dTMyIGNsZWFyU3RlbmNpbDsKLSovCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIEdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj8gZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9
IG51bGw7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYmY3YTBkNDBmZmFmYzRhYjQ0MmIxYjQzNTk4NmFlMmUyNGM5ZTQwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQ29sb3IuaCIKLSNpbmNsdWRlICJHUFVMaW1pdHMuaCIKLSNpbmNsdWRlICJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgi
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgotI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsK
LX0KLQotV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJl
ZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNzRW5jb2Rl
ciB7IFdURk1vdmUoZW5jb2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYgcGlwZWxpbmUpCi17
Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
KTogSW52YWxpZCBwaXBlbGluZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bh
c3NFbmNvZGVyLT5zZXRQaXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgp
KSk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoY29u
c3QgR1BVQ29sb3ImIGNvbG9yKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoKTogSW52
YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5j
b2Rlci0+c2V0QmxlbmRDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OnNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKLXsKLSAgICBpZiAoIW1fcGFz
c0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBt
aW5EZXB0aCwgbWF4RGVwdGgpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0KQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KCk6IEludmFsaWQg
b3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghd2lkdGggfHwg
IWhlaWdodCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNl
dFNjaXNzb3JSZWN0KCk6IFdpZHRoIG9yIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNldFNjaXNzb3JS
ZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRJbmRleEJ1ZmZlcihXZWJHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0
KQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghYnVmZmVyLmJ1ZmZlcigpIHx8ICFi
dWZmZXIuYnVmZmVyKCktPmlzSW5kZXgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgR1BVQnVmZmVyISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXNzRW5jb2Rlci0+c2V0SW5kZXhCdWZm
ZXIoKmJ1ZmZlci5idWZmZXIoKSwgb2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBzdGFydFNsb3QsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IG9mZnNldHMpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1
bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycygpIjsK
LSNlbmRpZgotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEludmFsaWQgb3BlcmF0aW9uISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGJ1ZmZlcnMuaXNFbXB0eSgpIHx8IGJ1ZmZlcnMuc2l6ZSgpICE9IG9m
ZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBudW1iZXIg
b2YgYnVmZmVycyBvciBvZmZzZXRzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHN0YXJ0U2xvdCArIGJ1ZmZlcnMuc2l6ZSgpID4gbWF4VmVydGV4QnVm
ZmVycykgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc3RhcnRTbG90ICV1IGZv
ciAlbHUgYnVmZmVycyEiLCBmdW5jdGlvbk5hbWUsIHN0YXJ0U2xvdCwgYnVmZmVycy5zaXplKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiBn
cHVCdWZmZXJzOwotICAgIGdwdUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlcnMuc2l6ZSgp
KTsKLQotICAgIGZvciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoIWJ1
ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBJbnZhbGlkIG9yIGRlc3Ryb3llZCBidWZmZXIgaW4gbGlzdCEiLCBmdW5jdGlvbk5hbWUpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFidWZmZXItPmJ1
ZmZlcigpLT5pc1ZlcnRleCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEJ1ZmZl
ciB3YXMgbm90IGNyZWF0ZWQgd2l0aCBWRVJURVggdXNhZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdwdUJ1ZmZlcnMudW5jaGVj
a2VkQXBwZW5kKG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAgICBtX3Bh
c3NFbmNvZGVyLT5zZXRWZXJ0ZXhCdWZmZXJzKHN0YXJ0U2xvdCwgZ3B1QnVmZmVycywgb2Zmc2V0
cyk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5zaWduZWQgdmVy
dGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1
bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFdoYXQg
a2luZCBvZiB2YWxpZGF0aW9uIGRvIHdlIG5lZWQgdG8gaGFuZGxlIGhlcmU/Ci0gICAgbV9wYXNz
RW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZp
cnN0SW5zdGFuY2UpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5k
ZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25l
ZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsK
LSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotICAgIG1f
cGFzc0VuY29kZXItPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0
SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwotfQotCi1HUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlciogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkKLXsKLSAg
ICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotY29uc3QgR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIqIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhjMDJhYmE3OGFlYzhhZTJhZjE2N2IyNTBjNTkxZGQx
OTQ4MzE5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlcjsKLWNsYXNzIEdQVVJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVQnVmZmVyOwot
Y2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmU7Ci0KLXN0cnVjdCBHUFVDb2xvcjsKLQotY2xhc3Mg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwotCi0gICAgdm9p
ZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYpOwotICAgIHZvaWQgc2V0
QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYpOwotICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZs
b2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2ln
bmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwotICAgIHZvaWQgc2V0SW5k
ZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0KTsKLSAgICB2b2lkIHNldFZl
cnRleEJ1ZmZlcnModW5zaWduZWQgc3RhcnRTbG90LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQ
VUJ1ZmZlcj4+JiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBk
cmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25l
ZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5k
ZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25l
ZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0K
LXByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmUHRyPEdQVVJlbmRlclBh
c3NFbmNvZGVyPiYmKTsKLQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5j
b2RlcigpIGZpbmFsOwotICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNz
RW5jb2RlcigpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVy
PiBtX3Bhc3NFbmNvZGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjA2ZjljYjVjMmUzZDU1YzlkMTYzY2I3ODM1NmVlMmFhOWI0OWRhOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotdHlwZWRlZiBsb25nIGkzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVS
ZW5kZXJQYXNzRW5jb2RlciwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBFeHBvc2Vk
PVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgOiBXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKFdlYkdQVVJl
bmRlclBpcGVsaW5lIHBpcGVsaW5lKTsKLSAgICB1bmRlZmluZWQgc2V0QmxlbmRDb2xvcihHUFVD
b2xvciBjb2xvcik7Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCB2aWV3cG9ydCBpcyAoMC4wLCAwLjAs
IHcsIGgsIDAuMCwgMS4wKSwgd2hlcmUgdyBhbmQgaCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgYmFj
ayBidWZmZXIKLSAgICB1bmRlZmluZWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsK
LQotICAgIC8vIFRoZSBkZWZhdWx0IHNjaXNzb3IgcmVjdGFuZ2xlIGlzICgwLCAwLCB3LCBoKSwg
d2hlcmUgdyBhbmQgaCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgYmFjayBidWZmZXIuCi0gICAgLy8g
V2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLiBPdGhlcndpc2UsIGFuIGVy
cm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgotICAgIHVuZGVmaW5lZCBzZXRTY2lzc29yUmVjdCh1MzIg
eCwgdTMyIHksIHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7Ci0KLSAgICB1bmRlZmluZWQgc2V0SW5k
ZXhCdWZmZXIoV2ViR1BVQnVmZmVyIGJ1ZmZlciwgdTY0IG9mZnNldCk7Ci0gICAgdW5kZWZpbmVk
IHNldFZlcnRleEJ1ZmZlcnModTMyIHN0YXJ0U2xvdCwgc2VxdWVuY2U8V2ViR1BVQnVmZmVyPiBi
dWZmZXJzLCBzZXF1ZW5jZTx1NjQ+IG9mZnNldHMpOwotCi0gICAgdW5kZWZpbmVkIGRyYXcodTMy
IHZlcnRleENvdW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0VmVydGV4LCB1MzIgZmly
c3RJbnN0YW5jZSk7Ci0gICAgdW5kZWZpbmVkIGRyYXdJbmRleGVkKHUzMiBpbmRleENvdW50LCB1
MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0SW5kZXgsIGkzMiBiYXNlVmVydGV4LCB1MzIgZmly
c3RJbnN0YW5jZSk7Ci0KLS8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICB1bmRlZmluZWQgc2V0
U3RlbmNpbFJlZmVyZW5jZSh1MzIgcmVmZXJlbmNlKTsKLSovCi19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODVjNmJmYTBhMjA0NTRhMTdiNjI2NzMwNmY5YjU3
OTlkMDQ3N2EzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkdQVVBpcGVs
aW5lLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BV
RGV2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVm
UHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JT
Y29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQ
aXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKGRldmljZSwgV1RGTW92ZShwaXBlbGluZSks
IGVycm9yU2NvcGVzLCBXVEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1vdmUoZnJhZ21lbnRTaGFk
ZXIpKSk7Ci19Ci0KLVdlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShX
ZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5l
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRh
JiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hh
ZGVyKQotICAgIDogV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykKLSAgICAsIG1f
cmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3ZlcnRleFNoYWRlcihX
VEZNb3ZlKHZlcnRleFNoYWRlcikpCi0gICAgLCBtX2ZyYWdtZW50U2hhZGVyKFdURk1vdmUoZnJh
Z21lbnRTaGFkZXIpKQotewotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6fldlYkdQVVJlbmRl
clBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjbG9u
ZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1f
dmVydGV4U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBib29sIHNoYXJlc1ZlcnRleEZyYWdtZW50
U2hhZGVyTW9kdWxlID0gbV9mcmFnbWVudFNoYWRlci5tb2R1bGUgPT0gbV92ZXJ0ZXhTaGFkZXIu
bW9kdWxlOwotCi0gICAgICAgIGNvbnN0IGF1dG8mIHZlcnRleFNvdXJjZSA9IG1fdmVydGV4U2hh
ZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAgIG1fdmVydGV4U2hhZGVyLm1vZHVsZSA9IFdl
YkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmlj
ZS5kZXZpY2UoKSwgeyB2ZXJ0ZXhTb3VyY2UgfSksIHZlcnRleFNvdXJjZSk7Ci0KLSAgICAgICAg
aWYgKG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhcmVzVmVy
dGV4RnJhZ21lbnRTaGFkZXJNb2R1bGUpCi0gICAgICAgICAgICAgICAgbV9mcmFnbWVudFNoYWRl
ci5tb2R1bGUgPSBtX3ZlcnRleFNoYWRlci5tb2R1bGU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiBmcmFnbWVudFNvdXJjZSA9IG1fZnJhZ21lbnRTaGFk
ZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgICAgICAgICBtX2ZyYWdtZW50U2hhZGVyLm1v
ZHVsZSA9IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3Jl
YXRlKGRldmljZS5kZXZpY2UoKSwgeyBmcmFnbWVudFNvdXJjZSB9KSwgZnJhZ21lbnRTb3VyY2Up
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJHUFVSZW5kZXJQaXBlbGluZTo6cmVj
b21waWxlKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChtX3JlbmRlclBp
cGVsaW5lICYmIG1fdmVydGV4U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBpZiAoYXV0byogZ3B1
VmVydGV4U2hhZGVyTW9kdWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkgewot
ICAgICAgICAgICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlKG1h
a2VSZWYoKmdwdVZlcnRleFNoYWRlck1vZHVsZSksIHsgbV92ZXJ0ZXhTaGFkZXIuZW50cnlQb2lu
dCB9KTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPiBmcmFnbWVudFN0YWdlOwotICAgICAgICAgICAgaWYgKG1fZnJhZ21lbnRTaGFkZXIu
bW9kdWxlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGdwdUZyYWdtZW50U2hhZGVyTW9k
dWxlID0gbV9mcmFnbWVudFNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKQotICAgICAgICAgICAgICAg
ICAgICBmcmFnbWVudFN0YWdlID0gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKG1ha2VS
ZWYoKmdwdUZyYWdtZW50U2hhZGVyTW9kdWxlKSwgeyBtX2ZyYWdtZW50U2hhZGVyLmVudHJ5UG9p
bnQgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGlu
ZS0+cmVjb21waWxlKGRldmljZS5kZXZpY2UoKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSksIFdURk1v
dmUoZnJhZ21lbnRTdGFnZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDYwYjEzNzkzZmNiZDI1MzQ1
N2M0MjgxMWM4MmQ5MmNkNTEyMmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxp
bmUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVVBpcGVsaW5lOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVF
cnJvclNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVs
ZTsKLQotY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgV2ViR1BVUGlw
ZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0K
LSAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoV2ViR1BVRGV2aWNl
JiwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBp
cGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVy
RGF0YSYmIGZyYWdtZW50U2hhZGVyKTsKLQotICAgIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IHJlbmRlclBpcGVsaW5lKCk7IH0KLSAgICBjb25zdCBHUFVSZW5kZXJQaXBlbGluZSogcmVuZGVy
UGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmdldCgpOyB9Ci0gICAg
UmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gdmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJ0ZXhTaGFkZXIubW9kdWxlOyB9Ci0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4g
ZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZTsg
fQotCi0gICAgYm9vbCBjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0g
ICAgYm9vbCByZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6Ci0gICAg
V2ViR1BVUmVuZGVyUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVVJlbmRlclBpcGVs
aW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVy
dGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKTsK
LQotICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQaXBlbGluZTsKLQotICAg
IC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFdlYkdQ
VVBpcGVsaW5lOjpTaGFkZXJEYXRhIG1fdmVydGV4U2hhZGVyOwotICAgIFdlYkdQVVBpcGVsaW5l
OjpTaGFkZXJEYXRhIG1fZnJhZ21lbnRTaGFkZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQRUxJTkUoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Zjgy
YzJkMjhjNzVjNTQ3NjgyNDg1YWFiMGZmZmE3ZjFhOThiMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50
ZXJmYWNlTmFtZT1HUFVSZW5kZXJQaXBlbGluZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRl
cmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmJjZGI5ZGY5MGM4NDU5MDcz
MTM0N2Y4ZDVhOTY1ODdjOTFjNzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVy
cm9yU2NvcGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJv
clNjb3BlcykgY29uc3QKLXsKLSAgICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0gbGF5b3V0ID8gbWFr
ZVJlZlB0cihsYXlvdXQtPnBpcGVsaW5lTGF5b3V0KCkpIDogbnVsbHB0cjsKLQotICAgIGF1dG8g
dmVydGV4ID0gdmVydGV4U3RhZ2UudHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yKCk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4gZnJhZ21lbnQ7Ci0gICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgIGZyYWdtZW50ID0g
ZnJhZ21lbnRTdGFnZS0+dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7
Ci0KLSAgICBpZiAoIXZlcnRleCB8fCAoZnJhZ21lbnRTdGFnZSAmJiAhZnJhZ21lbnQpKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlYiBHUFUgdmFsaWRhdGlvbiwgZS5nLiBmYWlsIGlm
IGNvbG9yU3RhdGVzIGlzIGxhcmdlciB0aGFuIChtYXggbnVtYmVyIG9mIHN1cHBvcnRlZCBjb2xv
ciBzdGF0ZXMpLgotCi0gICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdU
Rk1vdmUocGlwZWxpbmVMYXlvdXQpLCBXVEZNb3ZlKCp2ZXJ0ZXgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgKnRoaXMgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBiNjBkMmViZTY5Mzk1ZTM1MWYxYTlkOGM1MDA2MzQ4NDY4YmIwZjMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUg
IldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJv
clNjb3BlcyYpIGNvbnN0OwotCi0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
IHZlcnRleFN0YWdlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDBkOTQ2ZmVmZjllNTVjYjBkNzBhZDY3
Mjg3Mjk3YTk5ZDA3MWVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVk
QXM9R1BVUHJpbWl0aXZlVG9wb2xvZ3kKLV0gZW51bSBHUFVQcmltaXRpdmVUb3BvbG9neSB7Ci0g
ICAgInBvaW50LWxpc3QiLAotICAgICJsaW5lLWxpc3QiLAotICAgICJsaW5lLXN0cmlwIiwKLSAg
ICAidHJpYW5nbGUtbGlzdCIsCi0gICAgInRyaWFuZ2xlLXN0cmlwIgotfTsKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9u
YXJ5IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UgewotICAgIHJlcXVpcmVkIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ciB2ZXJ0ZXhTdGFnZTsKLSAgICBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I/IGZy
YWdtZW50U3RhZ2UgPSBudWxsOwotCi0gICAgcmVxdWlyZWQgR1BVUHJpbWl0aXZlVG9wb2xvZ3kg
cHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQ29sb3JTdGF0ZURl
c2NyaXB0b3I+IGNvbG9yU3RhdGVzOwotICAgIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRv
cj8gZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIHJlcXVpcmVkIEdQVVZlcnRleElucHV0
RGVzY3JpcHRvciB2ZXJ0ZXhJbnB1dDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNhbXBsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
YTUyMGU2M2ExYTAwNTQ5MDk3ZTQwMWFlZWI4YjQzMmQ1ZDEyNjAxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNhbXBsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTYW1wbGVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJH
UFVTYW1wbGVyPiBXZWJHUFVTYW1wbGVyOjpjcmVhdGUoUmVmUHRyPEdQVVNhbXBsZXI+JiYgc2Ft
cGxlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTYW1wbGVyKFdURk1vdmUo
c2FtcGxlcikpKTsKLX0KLQotV2ViR1BVU2FtcGxlcjo6V2ViR1BVU2FtcGxlcihSZWZQdHI8R1BV
U2FtcGxlcj4mJiBzYW1wbGVyKQotICAgIDogbV9zYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpCi17
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MjQ5NjZjNjk3YTU2NTU4YzY2MzRjYmM0Y2YzN2Yz
ZDI1ZWEwNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJHUFVTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2FtcGxl
cj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVU2FtcGxlcj4gY3JlYXRlKFJlZlB0
cjxHUFVTYW1wbGVyPiYmKTsKLQotICAgIGNvbnN0IEdQVVNhbXBsZXIqIHNhbXBsZXIoKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTYW1w
bGVyKFJlZlB0cjxHUFVTYW1wbGVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVTYW1wbGVyPiBtX3Nh
bXBsZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2FtcGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVy
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzYWFjMjY5YTE1OGViNTg3YmFm
NWQ0MTRkMGYyZTIxZmI0MmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
Ci0gICAgSW50ZXJmYWNlTmFtZT1HUFVTYW1wbGVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVTYW1wbGVyIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDMxNDU0NWRkM2Y0NmNlODYyMDhmM2Q1NDZhZmY3MTQ0MjczM2M5OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJH
UFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZlB0cjxHUFVTaGFk
ZXJNb2R1bGU+JiYgbW9kdWxlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpLCBzb3VyY2Up
KTsKLX0KLQotV2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQ
VVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQotICAgIDogbV9t
b2R1bGUoV1RGTW92ZShtb2R1bGUpKQotICAgICwgbV9zb3VyY2Uoc291cmNlKQotewotfQotCi12
b2lkIFdlYkdQVVNoYWRlck1vZHVsZTo6dXBkYXRlKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBtX3NvdXJjZSA9IHNvdXJjZTsKLSAgICBt
X21vZHVsZSA9IEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyBt
X3NvdXJjZSB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MGJiOGQyZjYz
NjRjMjRlMWRhNWRjYjQ1NTA1MDFhNGYyZDAxNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2hh
ZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVE
ZXZpY2U7Ci0KLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVVNoYWRlck1vZHVsZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpOwotCi0gICAgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBt
X21vZHVsZS5nZXQoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2U7IH0KLQotICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdlYkdQVURldmljZSYsIGNv
bnN0IFN0cmluZyYgc291cmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTaGFkZXJNb2R1bGUo
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotCi0gICAg
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gbV9tb2R1bGU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9y
IFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBTdHJpbmcgbV9zb3VyY2U7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkNzdmMDc5ZTMyOWQ2NWQzODQ0
ZjhiZWY1M2Q4MzA1YTU0Yjg5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVNoYWRlck1vZHVsZSwKLSAgICBFeHBvc2VkPVdp
bmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU2hhZGVyTW9kdWxlIHsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMzJhOTg5ZWQ1YzUwNmRm
M2E3ZGNiMDkzNTVjZTUyNjg0YzMwOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKLSAgICBTdHJpbmcgY29kZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE3YTlkNGM4
ZGE0NTM3NjYwMGY5YmEwYmY2ZmUyY2ExNmQ0NzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGlj
dGlvbmFyeSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCAvKkFy
cmF5QnVmZmVyKi8gRE9NU3RyaW5nIGNvZGU7IC8vIEZJWE1FOiBET01TdHJpbmcgZm9yIE1UTCBw
cm90b3R5cGluZyBvbmx5LgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI1
OWQ3ZjZlMTNiZDYyNjA2MjA4MDc3YWVjOTdlNDMzZTAyMzljLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UmVmPFdlYkdQVVN3YXBDaGFpbj4gV2ViR1BVU3dhcENoYWluOjpjcmVhdGUoUmVmUHRyPEdQVVN3
YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
U3dhcENoYWluKFdURk1vdmUoc3dhcENoYWluKSkpOwotfQotCi1XZWJHUFVTd2FwQ2hhaW46Oldl
YkdQVVN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLSAgICA6IG1f
c3dhcENoYWluKFdURk1vdmUoc3dhcENoYWluKSkKLXsKLX0KLQotUmVmPFdlYkdQVVRleHR1cmU+
IFdlYkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUoKQotewotICAgIGlmICghbV9zd2Fw
Q2hhaW4pIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRl
eHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVUZXh0
dXJlOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIG1fY3VycmVudFRleHR1cmUgPSBXZWJH
UFVUZXh0dXJlOjpjcmVhdGUobV9zd2FwQ2hhaW4tPnRyeUdldEN1cnJlbnRUZXh0dXJlKCkpOwot
ICAgIHJldHVybiBtYWtlUmVmKCptX2N1cnJlbnRUZXh0dXJlKTsKLX0KLQotdm9pZCBXZWJHUFVT
d2FwQ2hhaW46OmRlc3Ryb3koKQotewotICAgIGlmICghbV9zd2FwQ2hhaW4pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fc3dhcENoYWluLT5kZXN0cm95KCk7Ci0gICAgbV9zd2FwQ2hhaW4gPSBu
dWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFRleHR1cmUgJiYgbV9jdXJyZW50VGV4dHVyZS0+
dGV4dHVyZSgpKQotICAgICAgICBtX2N1cnJlbnRUZXh0dXJlLT5kZXN0cm95KCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3OGExZTBkZjY0ODA0ZjExMTlmMzE1ZTMwZTFhMDYxMDhjMzQy
N2IzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgIldlYkdQVVRl
eHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvcjsKLQotY2xhc3MgV2ViR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTd2FwQ2hhaW4+
IGNyZWF0ZShSZWZQdHI8R1BVU3dhcENoYWluPiYmKTsKLQotICAgIEdQVVN3YXBDaGFpbiogc3dh
cENoYWluKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7IH0KLQotICAgIFJlZjxXZWJHUFVU
ZXh0dXJlPiBnZXRDdXJyZW50VGV4dHVyZSgpOwotCi0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViR1BVU3dhcENoYWluKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwotCi0g
ICAgUmVmUHRyPEdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci0gICAgUmVmUHRyPFdlYkdQVVRl
eHR1cmU+IG1fY3VycmVudFRleHR1cmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0MzJjZjNhNGU0NTA0YzhiYTFmYWZkOWFjYWI2ZGRiYjFlMmZkMGIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIElu
dGVyZmFjZU5hbWU9R1BVU3dhcENoYWluLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVTd2FwQ2hhaW4gewotICAgIFdlYkdQ
VVRleHR1cmUgZ2V0Q3VycmVudFRleHR1cmUoKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTM0ZmNkMzMzNzM5OTVmNmE5OGQ0NzlhZjQw
MmY3Y2Q5N2IwNjUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4gV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvcjo6YXNHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKCkgY29uc3QKLXsK
LSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ2FudmFzQ29udGV4
dDo6Y29uZmlndXJlU3dhcENoYWluKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gR1BVU3dhcENoYWlu
RGVzY3JpcHRvciB7IG1ha2VSZWYoZGV2aWNlLT5kZXZpY2UoKSksICp0aGlzIH07Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjg3NGQ2ZjcwMDAwMzk1
OWRiNTg5MTE5YjRkYjAwMmU5YzMyMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IgOiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3Rk
OjpvcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBhc0dQVVN3YXBDaGFpbkRlc2NyaXB0
b3IoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwN2RhMDYwMTIzMWU3ZThmNTgzOTRjN2M0MjM5NTE4NGViN2Ez
N2M2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0dXJlPiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpKTsK
LX0KLQotV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB0
ZXh0dXJlKQotICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0KLVJlZjxX
ZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKQotewot
ICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjpj
cmVhdGVEZWZhdWx0VmlldygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJu
IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotCi0gICAgYXV0byB2
aWV3ID0gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShtX3RleHR1cmUtPnRyeUNyZWF0ZURlZmF1
bHRUZXh0dXJlVmlldygpKTsKLSAgICBtX3RleHR1cmVWaWV3cy5hcHBlbmQodmlldy5jb3B5UmVm
KCkpOwotICAgIHJldHVybiB2aWV3OwotfQotCi12b2lkIFdlYkdQVVRleHR1cmU6OmRlc3Ryb3ko
KQotewotICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0
dXJlOjpkZXN0cm95KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGZvciAoYXV0byYgdmlldyA6IG1fdGV4dHVyZVZpZXdzKQotICAgICAgICB2aWV3
LT5kZXN0cm95KCk7Ci0gICAgbV90ZXh0dXJlVmlld3MuY2xlYXIoKTsKLQotICAgIG1fdGV4dHVy
ZS0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZmZDU4YzI2NDJmY2M2YTYyZjM3MmFjYjRhMjczOGUxYzZiNzI1MmIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVU
ZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZT4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsK
LQotICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0K
LQotICAgIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAgICB2
b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJlKFJl
ZlB0cjxHUFVUZXh0dXJlPiYmKTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7
Ci0gICAgVmVjdG9yPFJlZjxXZWJHUFVUZXh0dXJlVmlldz4+IG1fdGV4dHVyZVZpZXdzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTRhNWY5OTNiNjQ1ZGE5NWMyYTNkNzhjOGRmMWMy
YzM3MzdkMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVy
ZmFjZU5hbWU9R1BVVGV4dHVyZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2Vi
R1BVVGV4dHVyZSB7Ci0gICAgV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlRGVmYXVsdFZpZXcoKTsK
LSAgICB1bmRlZmluZWQgZGVzdHJveSgpOwotCi0gICAgLy8gTm90IFlldCBJbXBsZW1lbnRlZDoK
LSAgICAvLyBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVUZXh0dXJlVmlldyhXZWJHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3IgZGVzYyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwZTAzMmFmMGMwMTZkYzVlYmQ1YWU0ZGRkNmM2NGIyMzRiNDA1Mzk5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZVZpZXcuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJl
ZlB0cjxHUFVUZXh0dXJlPiYmIHZpZXcpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOwotfQotCi1XZWJHUFVUZXh0dXJlVmlldzo6
V2ViR1BVVGV4dHVyZVZpZXcoUmVmUHRyPEdQVVRleHR1cmU+JiYgdmlldykKLSAgICA6IG1fdGV4
dHVyZShXVEZNb3ZlKHZpZXcpKQotewotfQotCi12b2lkIFdlYkdQVVRleHR1cmVWaWV3OjpkZXN0
cm95KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90
ZXh0dXJlLT5kZXN0cm95KCk7Ci0gICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNTBlMjE4NGM1MjNjZjg1ZmRlZDZhYmRjZmViZmMyMzZm
MTI5MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
Zi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0
dXJlVmlldz4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNy
ZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0gICAgfldlYkdQVVRleHR1cmVWaWV3KCkgeyBk
ZXN0cm95KCk7IH0KLQotICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KLQotICAgIHZvaWQgZGVzdHJveSgpOwotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBXZWJHUFVUZXh0dXJlVmlldyhSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0gICAgCi0gICAgUmVm
UHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVmZmJkZWJiYzkwNWFjZjZkNzEzZWQwNDI3NzVmYWQzNGVlM2I1MDYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVRl
eHR1cmVWaWV3LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVUZXh0dXJl
VmlldyB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29y
a2VyTmF2aWdhdG9yK0dQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3Jr
ZXJOYXZpZ2F0b3IrR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyZGFl
ZTY0Mjc1YjVmNzkzMjcwY2UzZDVmNDUzNzExNDJmMTJlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
b3JrZXJOYXZpZ2F0b3IrR1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZpZ2F0b3It
Z3B1Ci0vLyBGSVhNRTogVGhlIHNwZWMgc2F5cyB0aGlzIHNob3VsZCBvbmx5IGJlIGV4cG9zZWQg
dG8gRGVkaWNhdGVkV29ya2Vycy4KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1Xb3JrZXJOYXZpZ2F0b3JH
UFUKLV0gcGFydGlhbCBpbnRlcmZhY2UgV29ya2VyTmF2aWdhdG9yIHsKLSAgICBbU2FtZU9iamVj
dF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJiMDdmMzY2ODNkYzMwMzg0MzI0ZjVhNzI0YjIyMTBiOTFkOGVk
NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgot
I2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdv
cmtlck5hdmlnYXRvckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRv
ciogbmF2aWdhdG9yKQotewotICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9y
Pjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKLSAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZp
Z2F0b3JHUFU+KCk7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwot
ICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5l
d1N1cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0KLWNvbnN0
IGNoYXIqIFdvcmtlck5hdmlnYXRvckdQVTo6c3VwcGxlbWVudE5hbWUoKQotewotICAgIHJldHVy
biAiV29ya2VyTmF2aWdhdG9yR1BVIjsKLX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJOYXZpZ2F0
b3JHUFU6OmdwdShXb3JrZXJOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRvIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKS53
ZWJHUFVFbmFibGVkKTsKLSAgICByZXR1cm4gV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKCZuYXZp
Z2F0b3IpLT5ncHUoKTsKLX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6Omdw
dSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJHUFU6OmNy
ZWF0ZSgpOwotICAgIHJldHVybiBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU2NzQ1M2Y5NGJiY2E2Yjk4OWJkNThmNTk1YzgzOGIwMWExMjBhNzQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBXZWJHUFU7Ci1jbGFzcyBXb3JrZXJOYXZpZ2F0b3I7Ci0KLWNsYXNzIFdvcmtlck5h
dmlnYXRvckdQVSBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj4gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBX
ZWJHUFUqIGdwdShXb3JrZXJOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgV29y
a2VyTmF2aWdhdG9yR1BVKiBmcm9tKFdvcmtlck5hdmlnYXRvciopOwotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSogZ3B1KCkg
Y29uc3Q7Ci0KLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggYmVlMjM2NGU4YmFlOGEwZTk4NTJkNmM0MjNkZDE5Y2EyNjBhYzQ2Mi4uMjYzY2NmYmVi
NTg2NTkwMWNhMDE1YTQ4MzI5Zjg1ZDMyNTkzMWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMyMCw5
MSArMzIwLDYgQEAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
CiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcAogTW9kdWxlcy93
ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHAKLU1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAot
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQnVpbHRJblNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RXhwcmVzc2lvbi5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJh
bFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZUFyZ3VtZW50LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJl
ZmVyZW5jZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZv
bGRpbmcuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3Iu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAotTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTElu
dHJpbnNpY3MuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAotTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lUmVzb2x2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJvZ3JhbS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNv
bHZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJz
aW9uQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNo
ZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcAotTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXAuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUXVldWUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNw
cAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQ
VS5jcHAKIE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmNwcAogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTIwNzksMTQgKzE5
OTQsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
cG90TGlnaHRTb3VyY2UuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcAot
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVFcnJvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAK
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVQaXBlbGluZUxheW91dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0
aW9uRXJyb3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtMzA3MiwzNCArMjk3OSw2IEBA
IEpTRm9jdXNPcHRpb25zLmNwcAogSlNGb250RmFjZS5jcHAKIEpTRm9udEZhY2VTZXQuY3BwCiBK
U0Zvcm1EYXRhRXZlbnQuY3BwCi1KU0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuY3BwCi1KU0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuY3BwCi1KU0dQVUJsZW5kRGVzY3JpcHRvci5jcHAK
LUpTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKLUpTR1BVQnVmZmVyVXNhZ2UuY3BwCi1KU0dQVUNh
bnZhc0NvbnRleHQuY3BwCi1KU0dQVUNvbG9yLmNwcAotSlNHUFVDb2xvclN0YXRlRGVzY3JpcHRv
ci5jcHAKLUpTR1BVQ29sb3JXcml0ZS5jcHAKLUpTR1BVQ29tcGFyZUZ1bmN0aW9uLmNwcAotSlNH
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUVycm9yRmlsdGVyLmNwcAot
SlNHUFVFeHRlbnQzRC5jcHAKLUpTR1BVTG9hZE9wLmNwcAotSlNHUFVPcmlnaW4zRC5jcHAKLUpT
R1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAKLUpTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAot
SlNHUFVTYW1wbGVyRGVzY3JpcHRvci5jcHAKLUpTR1BVU2hhZGVyU3RhZ2UuY3BwCi1KU0dQVVN0
b3JlT3AuY3BwCi1KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmNwcAotSlNHUFVUZXh0dXJlRm9ybWF0
LmNwcAotSlNHUFVUZXh0dXJlVXNhZ2UuY3BwCi1KU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNw
cAotSlNHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCi1KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3IuY3BwCi1KU0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVZlcnRleElucHV0
RGVzY3JpcHRvci5jcHAKIEpTR2Fpbk5vZGUuY3BwCiBKU0dhaW5PcHRpb25zLmNwcAogSlNHYW1l
cGFkLmNwcApAQCAtMzc2MCwzOCArMzYzOSw2IEBAIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5j
cHAKIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
Y3BwCiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCi1KU1dlYkdQVS5jcHAKLUpTV2Vi
R1BVQWRhcHRlci5jcHAKLUpTV2ViR1BVQmluZEdyb3VwLmNwcAotSlNXZWJHUFVCaW5kR3JvdXBC
aW5kaW5nLmNwcAotSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVCaW5k
R3JvdXBMYXlvdXQuY3BwCi1KU1dlYkdQVUJ1ZmZlci5jcHAKLUpTV2ViR1BVQnVmZmVyQmluZGlu
Zy5jcHAKLUpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKLUpTV2ViR1BVQ29tbWFuZEVuY29kZXIu
Y3BwCi1KU1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmNwcAotSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVE
ZXZpY2UuY3BwCi1KU1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotSlNXZWJHUFVEZXZpY2VF
dmVudEhhbmRsZXIuY3BwCi1KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCi1KU1dl
YkdQVVBpcGVsaW5lTGF5b3V0LmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
Y3BwCi1KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVF1ZXVlLmNwcAotSlNXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi1KU1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCi1KU1dlYkdQVVNhbXBsZXIuY3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLUpTV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVU3dhcENoYWluLmNwcAotSlNX
ZWJHUFVUZXh0dXJlLmNwcAotSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwCiBKU1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwCiBKU1dlYktpdE1lZGlhS2V5
TWVzc2FnZUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjgyZGJjYzA2Y2Vh
ZTdkNzZjMWUwZTlhNjZhYmY0MjdlMWNjYjQ5Yi4uMGNmOGZiZTQzMzRlMWMyZGIxNTZlNjU4Mjc2
NzE4ZDA2YzlkNzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zODcsNyArMzg3LDYg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHUFVMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3Jl
VGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKQEAg
LTM5OCwyNCArMzk3LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJpbmRHcm91cE1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVy
TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0
YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJN
ZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0K
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCi1w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTYxNiw3ICs1OTcsMyBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBA
bm8tdW5pZnkKLQotLy8gRGVyaXZlZCBTb3VyY2VzCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOWI2MzU4YjFiMGYxNjFiNjZlNzc3YTkxZGI0Yzc2ZGQxZjZmNmRl
Yi4uNTVlMDAyZmEyYmMxZjQwY2QxMjFiMjliNmRmZDgwODk3ZDE2ZjJkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTExLDE4
ICs5MTEsNiBAQAogCQkzMTI4OEU3NTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyODhF
NzEwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCAqLzsgfTsKIAkJMzEyOENB
NkIxNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjhDQTZBMTQ3MzMxNjMwMDc0
QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5v
dGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxMkZGOTExMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFu
ZEJ1ZmZlci5oICovOyB9OwotCQkzMTJGRjkxMjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVRGV2aWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhC
RTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNlLmggKi87IH07Ci0JCTMxMkZGOTEzMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQg
LyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovOyB9OwotCQkzMTJGRjkxNDIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMjIxQTRDMkYzMDBFQjE5
OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxMkZGOTE1
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVl
LmggKi87IH07Ci0JCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGlu
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4
QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi87IH07Ci0JCTMxMkZG
OTE3MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJDMjFBNEMy
RjAwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzEy
RkY5MTgyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlE
IC8qIEdQVVNoYWRlck1vZHVsZS5oICovOyB9OwotCQkzMTJGRjkxOTIxQTRDMzY1MDBFQjE5OUQg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzEyRkY5MUEyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovOyB9Owot
CQkzMTJGRjkxQjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlE
IC8qIEdQVVRleHR1cmUuaCAqLzsgfTsKLQkJMzEyRkY5MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQ
VVRleHR1cmVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggKi87
IH07CiAJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxNzE1NDFGQjA3OUQxMDA4
RDkxRkMgLyogQ2FudmFzQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxMzU5MTA2MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxMzU5MTAwMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3RhdGUuaCAqLzsg
fTsKIAkJMzEzNTkxMDcxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM1OTEwMTFF
N0REQzYwMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCAqLzsgfTsKQEAgLTk1Nyw3
ICs5NDUsNiBAQAogCQkzMTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE3RDNGRjMyMTU1
OTlGNDAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE3RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBvaW50ZXJF
dmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJbWFnZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFEMjZCQkYxRjg2RDE4OTAwOEZGMjU1
IC8qIEltYWdlQml0bWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMzE4NDM2REUyMUI5REFBRjAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTg0MzZEQjIxQjlE
QUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCAqLzsgfTsKIAkJMzE4ODkxNjExQUI3RUVBMTAw
RUE2MjdCIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjQxOTk5MUFCMERBMTQwMDRFNjRFMSAvKiBtaXNzaW5n
SW1hZ2VAM3gucG5nICovOyB9OwogCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyogSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEVBRDRBMUZBOTExNTcwMDhDRUY4NiAvKiBJbWFnZUJp
dG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBBbmlt
YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE5ODQ3RkYxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmggKi87IH07CkBA
IC0zMjY4LDkgKzMyNTUsNiBAQAogCQlBMTg4OTBBRjFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExODg5MEFEMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExOTU2RjFDMjMzMUE2NzcwMDU3RTlEMiAvKiBKU0FwcGxlUGF5Q2FuY2Vs
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
OTU2RjFCMjMzMUE2NDYwMDU3RTlEMiAvKiBKU0FwcGxlUGF5Q2FuY2VsRXZlbnQuaCAqLzsgfTsK
IAkJQTE5NTZGMjAyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTk1NkYxRDIzMzFB
OEM3MDA1N0U5RDIgLyogQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCAqLzsgfTsKLQkJQTE5NTZGMjMy
MzMxQUNGMjAwNTdFOUQyIC8qIFdITFNMUmVwbGFjZVdpdGguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAvKiBX
SExTTFJlcGxhY2VXaXRoLmggKi87IH07Ci0JCUExOTU2RjI0MjMzMUFEMjEwMDU3RTlEMiAvKiBX
SExTTFByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLzsgfTsKLQkJ
QTE5NTZGMjUyMzMxQUQ1MzAwNTdFOUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjFCRjZGNDIxQ0Q4
OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLzsgfTsKIAkJQTE5QUVB
MjExQUFBODA4NjAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5QUVBMUUxQUFBODA2
RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyB9OwogCQlBMTlB
RUEyMjFBQUE4MDhBMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUFFQTFEMUFB
QTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9Owog
CQlBMTlEOTM0QjFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUQ5
MzQ5MUFBMTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02OTUwLDIw
ICs2OTM0LDE0IEBACiAJCTFDMjRFRUE2MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRm9udEZhY2VTZXQu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlU2V0LmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyNEVFQTcxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SlNGb250RmFjZVNldC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNl
U2V0Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjY0OTc5MEQ3
RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDMjgxQzZEMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4
dHVyZVJlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja1RleHR1cmVS
ZWZlcmVuY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMyODFDNkUyMkI4
N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzMzMjc3MTIxQ0YwQkUxMDAw
REM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lZFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYy
IC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcg
LyogRm9udENhY2hlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9udENhY2hlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzQzREU2ODIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0Q29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2QTIyQUI0QjhB
MDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTgg
LyogR2x5cGhCdWZmZXJNZW1iZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoQnVmZmVyTWVtYmVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0
QkUgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0
QWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTY29wZWRTZXRBZGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRjFDNkU3Q0E2MDBBQjUyN0MgLyog
Rm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM2Qjk1REQyMkM4NThBNDAwRTZGMTRGIC8q
IFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM2RkQ4QUMyNTBBMjk0RDAwRDZFOTIwIC8qIEZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhBRDI1MEEyRTUz
MDBENkU5MjAgLyogR2x5cGhQYWdlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2x5
cGhQYWdlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhB
RTI1MEEzMTE1MDBENkU5MjAgLyogRm9udENhc2NhZGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250Q2FzY2FkZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY5NzIsNDggKzY5NTAsMTcgQEAKIAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgx
Qjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIElu
c3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCN0QyMUVCRTBC
ODAwRDA1MDBEIC8qIFdITFNMRW50cnlQb2ludFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xF
bnRyeVBvaW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5MDIx
RUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xBZGRyZXNzU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOTcy
MUVDNDAwNzAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOTkyMUVDNDAwODAw
RDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUM4NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2lu
dEl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBX
SExTTENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdI
TFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDb21wdXRl
RGltZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRDMjJB
QTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM4NkNBNEUyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYx
IC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBp
cGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hM
U0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xT
dGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzhEMjZEMDIyQzA5Q0RFMDBEMTI1RjMgLyogbGliY29tcHJlc3Npb24udGJkICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4
dC1iYXNlZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYmNvbXByZXNzaW9uLnRiZDsgcGF0
aCA9IHVzci9saWIvbGliY29tcHJlc3Npb24udGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
IAkJMUM5MDRERjkwQkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIg
LyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJERTIxRUVCNUY0
MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UmVjdXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJF
MDIxRUVCNUY1MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDQTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4
NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0FBODJGNjIyNDJBRTA1MDBFODRCQkIgLyog
V0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJvcGVy
dHlSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE4MkY3MjI0
MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xQcm9wZXJ0eVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmpl
Y3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQwNTIwMEFC
RTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkRFMjUzMDI0NUEwMDE3QjQ3
MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIgLyogV0hM
U0xFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29sdmFibGVU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb2x2YWJsZVR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdITFNMRmxvYXRM
aXRlcmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM3MjFERUQ2NkIw
MDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyog
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIz
QjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8q
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3Qjgz
OTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRV
bmRlcmxpbmVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIx
OTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBT
VkdUb09URkZvbnRDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1RvT1RGRm9udENvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUNEQUJENkIyMkM4NDc5QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERl
YnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1
RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gV2ViQ29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcwMjIsMjAgKzY5NjksNiBAQAogCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNB
RUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDRThEMTJCMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxp
c3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNB
OTIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIgLyogV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9uV3Jp
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjAyMUYyQjk4NTAw
RjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZU5hbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IxMjFGMkI5ODUwMEY0NDU0
MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVOYW1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IyMjFGMkI5ODYwMEY0
NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rp
b25Xcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjUyMUY1MEFD
NzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNFQ0IzQjYyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2
ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCOTIxRjUw
RDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0JCMjFGNTExQUEwMEY0NDU0MiAv
KiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjND
NjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDRjBCRkQ0MjI5ODcwNjgwMEVEMjA3NCAvKiBUZXh0U2l6ZUFk
anVzdG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFNpemVBZGp1c3RtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkxRDAwMjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdp
bmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2NSwyMiArNzM5OCw2IEBA
CiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0tleWZyYW1lc1J1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8q
IEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJBMjFBNEMyRUYwMEVCMTk5RCAv
KiBHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU3dhcENoYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFk
ZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJEMjFBNEMyRjEw
MEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbW1hbmRC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkUyMUE0QzJGMTAw
RUIxOTlEIC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkYyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURl
dmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEMxMjFBNEMyRjIwMEVCMTk5
RCAvKiBHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVRdWV1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMzIxQTRD
MkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0
dXJlRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM0MjFBNEMy
RjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjkzOTIx
QTYxQzlGMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEy
RkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVRdWV1ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
MkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxMkZGOTNEMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRkY5M0UyMUE2MUYwNzAwRUIxOTlEIC8qIEpTV2Vi
R1BVUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJH
UFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU0MUZCMDc5
RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbnZhc0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NjMsOCAr
NzQ4MCw2IEBACiAJCTMxN0QzRkVGMjE1NTk5RTEwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFBvaW50ZXJFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
N0QzRkYxMjE1NTk5RTIwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUG9pbnRlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3
RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
b2ludGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE4NDM2REIyMUI5
REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxODQz
NkREMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkdQVUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTg5RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LmNzczsgcGF0aCA9IHBsdWdJbnMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMThFQUQ0QTFGQTkxMTU3MDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0U2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFENEMxRkE5
MTM1MjAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03NjcyLDcgKzc1ODcsNiBAQAogCQkzMzUwM0M5RjEwMTc5QUQ3
MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RpZmljYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzUxRjcwQjIyQ0FEOERBMDAxNUI0
MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlcGxhY2VXaXRo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM1Qzc0RkQzMjI4QTE5MTIwMDBDMjFB
MCAvKiBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNUM3NEZENzIyOEExOUE2MDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM2NjJGOTg0MDQ3Q0VEQkU1REREQUZBQSAvKiBSZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJNYXRoTUxNZW5jbG9zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTEz
LDE5ICs5MDI3LDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRl
bnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNo
ZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25T
dHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVBMUM0RjE1
NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMTU4NjJDMjI5Mzc3QjcwMDU5MjVF
RiAvKiBXSExTTEFTVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFTVC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MjI1NkNBQTIzMEYxNEFEMDA0M0UxMkYgLyogV0hMU0xOYW1lU3Bh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xOYW1lU3BhY2UuaDsgcGF0aCA9IEFTVC9XSExTTE5h
bWVTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJCQUI5NjIyRTZBMzYy
MDBDNTRDRTkgLyogV0hMU0xDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb2Rl
TG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRDA3QTMyMkZCQUI0
MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJEQTNEMzIy
OUUxRDM5MDA0MkQxNTEgLyogV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRTFBMTky
Mjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tS
ZWZlcmVuY2VUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNl
VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjRCRDQ4MDIzMjc3RTE2
MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJl
c2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYy
MUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdE
IC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjZCM0YwMzIyRkI3QkRF
MDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NDI1NjEwM0NG
MDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxh
dGZvcm1YUkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NTI1
NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtWFJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M5QTI1NjNC
MjEyMDA4NTAwMDcgLyogSlNXZWJYUlRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJYUlRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTEzNywxMiArOTA0MCw5IEBACiAJCTUyNzNDQ0FEMjU2NDU3NkMwMDg1MDAwNyAvKiBKU0Zh
a2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzND
Q0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSVmlld0luaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQYXJz
aW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJl
c3NFc2NhcGVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8q
IFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAw
NzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xEZWZhdWx0RGVsZXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9i
akMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0xheWVy
TWFuYWdlck9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMThFMUM1
NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NzYsMTMgKzEwNjc2
LDEwIEBACiAJCTdDN0JGOTQ5MjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3JtYW5jZU1lYXN1cmVP
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5NEIyNTE2RkE1NDAwODA4NjgyIC8qIFBl
cmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlv
bnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzdCRjk1MDI1MTZGQjU0MDA4
MDg2ODIgLyogUGVyZm9ybWFuY2VNZWFzdXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZv
cm1hbmNlTWVhc3VyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDN0M3NjlD
MjJGNjdFQ0QwMDMyQkNDRCAvKiBXSExTTE1hbmdsZWROYW1lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE1hbmdsZWROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlB
MzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJh
dGlvblJldHVybmluZ1Byb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4NEYgLyogV0hMU0xV
bm5hbWVkVHlwZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZUhhc2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4ODI0QzQyNDlEN0IwNTAwRUQ4RkM0IC8q
IFNWR1BhdGhTZWdWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQ
YXRoU2VnVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RTM0OTIxRTRB
MzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUNvbnZlcnRBbnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0M4RTM0OTMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTE1MjYsMTAgKzExNDIzLDYgQEAKIAkJOTE3NUNFNTkyMUUy
ODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNF
NUEyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNFNUEyMUUy
ODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0IzMjMyOUZC
MDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MTg2RjNC
NjIzMjlGQjRFMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5MTg2RjNCNzIzMjlGQjRGMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQ
VVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBp
cGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOEYwQjMyMTk1M0Q2
NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlU3VtbWFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDZXJ0aWZpY2F0ZVN1bW1hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlY29yZGluZ1N3aXp6bGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTAsNyArMTI2MDMsNiBAQAogCQlBMzdBNDJF
MDI1MjdCNDlDMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTIyNTI3QjQ5RDAwRjc1
QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMzdBNDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzOEE4N0EzMjUzOEJF
RTcwMDM3QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UGxhdGZvcm1UeXBlc01ldGFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUY5
RDgxMjAzMjUyRUUwMDZDQUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNlckFnZW50
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckFnZW50
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTgsNyArMTI2MTAsNiBA
QAogCQlBM0JGN0VGMjI1NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY0MjU2QzhENzIwMDQ0QkM3NSAvKiBL
SFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY1MjU2QzhE
NzQwMDQ0QkM3NSAvKiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEtIUlBhcmFs
bGVsU2hhZGVyQ29tcGlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzQzNE
QzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTNENDJBODQxRjMzQkEzNjAwQTY0QjYyIC8qIExheW91dFVuaXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2li
aWxpdHlQcm9ncmVzc0luZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0NzA0LDEyMSArMTQ1OTUsMTYgQEAKIAkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0
NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBR1hDb21w
aWxlclNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUY3QjczMDI0
NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFH
WENvbXBpbGVyU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAxNUMw
OTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRWYXJpYW50QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBG
NEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMVHlwZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMEY4OEFB
MjI5NjZCMEUwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEFTVER1bXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMEY4
OEFDMjI5NjZCMEYwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEFTVER1bXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEwRTkxMTIx
QjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTIyMUI0QkQx
MDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyog
V0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xCdWlsdElu
U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExNTIxRERF
Q0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMTM4QTE2MjFEREVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMTM4QTE3
MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVm
aW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hM
U0xDb250aW51ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnRpbnVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xl
YW5MaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQm9vbGVhbkxpdGVyYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8qIFdITFNM
SW5kZXhFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW5kZXhFeHByZXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY4MjFDRDg5QkIwMDIyNzk3OSAv
KiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVy
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3
OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyog
V0hMU0xCYXNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlU2VtYW50aWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8q
IFdITFNMRG9XaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb1doaWxlTG9vcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyog
V0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRTIxQ0Q4
OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMU3RydWN0dXJlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMzIxQ0Q4OUM1MDAy
Mjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdI
TFNMV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1
bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5
IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29tbWFFeHBy
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA4MjFDRDg5Qzkw
MDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA5
MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwQTIxQ0Q4
OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURl
Y2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyog
V0hMU0xUeXBlQXJndW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8q
IFdITFNMU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVSZWZlcmVu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTQyMUNEODlEMzAwMjI3
OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAv
KiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4cHJlc3Np
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTgyMUNEODlENzAwMjI3
OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERvdEV4cHJl
c3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTkyMUNEODlENzAw
MjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3aXRjaENh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUEyMUNEODlEODAwMjI3
OTc5IC8qIFdITFNMQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCcmVhay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcx
QzIxQ0Q4OURBMDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzFEMjFDRDg5REIwMDIyNzk3OSAvKiBXSExTTFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFFMjFD
RDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmxvY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUYyMUNEODlEQzAwMjI3OTc5
IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjAyMUNEODlERDAwMjI3
OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyog
V0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCdWlsdEluU2VtYW50
aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3
OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1l
cmF0aW9uTWVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1iZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8q
IFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0cnVjdHVy
ZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjgyMUNE
ODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlw
ZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlRGVmaW5pdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyQTIxQ0Q4OUU3MDAyMjc5NzkgLyogV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVUeXBl
RGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkIyMUNE
ODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBX
SExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5NzkgLyog
V0hMU0xQb2ludGVyVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBvaW50ZXJUeXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMwMjFDRDg5RUQwMDIyNzk3OSAvKiBX
SExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzEyMUNE
ODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMU3dpdGNoU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTG9naWNhbEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAvKiBXSExTTEZvckxv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGb3JMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3Mzcy
MUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzgyMUNE
OEEwMzAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3
OSAvKiBXSExTTFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9ncmFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMUJGNzQyMjFDRDk2M0IwMDIyNzk3OSAvKiBXSExT
TFN0YW5kYXJkTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXSExTTFN0YW5kYXJkTGlicmFyeS5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJkTGlicmFyeS5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlDMjFCRjc0NTIxQ0Q5Njk4MDAy
Mjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJy
YXJ5LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAw
RjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRWYXJp
YXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4NTIxRTg4
NkE5MDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTg3MjFFODg2
QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWaXNpdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0
RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hbWVS
ZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThDMjFFODg4
M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5h
bWVSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4RDIxRTg4
ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTE5hbWVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5
OEUyMUU4ODg4NTAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xOYW1lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5
NzIxRTkwRjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjM0QTk5OTIxRTkwRjI5MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJ
bXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlBMjFFOTBGNTYwMDNDOTg0RCAv
KiBXSExTTEluZmVyVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbmZlclR5cGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUIyMUU5MEY1NzAwM0M5
ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZmVyVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUQyMUU5MTBCRDAwM0M5ODRE
IC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmluZ1R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUIyMUU5MkMxODAwM0M5
ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZWN1cnNpdmVUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0
QTlBQzIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUQyMUU5MkMxOTAwM0M5ODRE
IC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMzRBOUFFMjFFOTJDMUEwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNM
U3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0
QTlCMTIxRTkyQzFEMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjM0QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1
cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrRHVwbGlj
YXRlRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjMy
MUU5MkMyMTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjYyMUU5MkNDMDAwM0M5
ODREIC8qIFdITFNMSW50cmluc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludHJpbnNpY3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjcyMUU5MkNDMTAwM0M5ODRE
IC8qIFdITFNMSW50cmluc2ljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludHJpbnNp
Y3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM5OEVCRDIzMEExQjc2MDA2
NDE1MDcgLyogV0hMU0xOYW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lU3BhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThFNjExRkU4OTc5RTAwNTk0NzU5
IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkRE
MSAvKiBXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBpcGVs
aW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdCMjIx
RkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzI0QTU3QkEyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFyZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFByZXBhcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMUHJlcGFyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjYwMTdBMTFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9u
dEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhY2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0MxQzZEQjE5NDAwMTQ1
MUI2IC8qIEZvbnRGYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFjZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNEMUM2REMyMkMwMDE0NTFCNiAv
KiBKU0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpT
Rm9udEZhY2UuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQzI4MDgzM0UxQzZEQzIy
QzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNGb250RmFjZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNl
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODBCM0ZEMUVGNDYw
ODkwMEQzNTEzNSAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbk51bGwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNB
IC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZUFy
Z3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBBRjQxRTZCM0M2
QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY1MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2Vs
ZWN0aW9uQWxnb3JpdGhtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBC
MDMxRTZERTkyQzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU0MjUsMjI5ICsxNTIxMSwyOCBAQAogCQlEMDAwRUJBMTExQkRBRkQ0MDBD
NDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YmZyYW1lTG9hZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2
IC8qIFN1YmZyYW1lTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
YmZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDFEOUFCMjFC
MEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3OTIxQzg2NDVCMDA2MjJBQTYgLyog
V2ViR1BVQmluZEdyb3VwTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cExh
eW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3QTIxQzg2NDVCMDA2
MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVUJpbmRHcm91cExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVUJpbmRHcm91cExheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMDMyODg0MjFDOUEyMEQwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDMyODg2MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBl
bGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZUxheW91dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NzIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlw
ZWxpbmVMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzOTE0MTIyMjQ4RDQwMDA5ODk5OEMg
LyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDA0ODdEMjIyNDU3QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0U1MjI2QTYzNDIwMEVF
RDdEOSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDA0ODdFQjIyNzQyODEyMDBFRUQ3RDkgLyogTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Ik5hdmlnYXRvcitHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3
RUQyMjc0MjgxMzAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdF
RTIyNzQyODE0MDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmln
YXRvckdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdGRDIyNzdBRjgx
MDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIldvcmtlck5hdmlnYXRv
citHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RkUyMjc3QUY4
MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJO
YXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkQyMjQy
RUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAwRDc3RkUyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMgLyogV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcx
REIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAv
KiBXZWJHUFVBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQ
VUFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQWRhcHRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJH
UFVBZGFwdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVBZGFwdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAwRjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAwRjU5NTMyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVEZXZpY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFBMjdBQjEwQzlC
RkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDFCODExMjIyMTI1QUZDMDA2MjdCNkMgLyog
R1BVQ29sb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAxQjgxMTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDFCODExQzIyMTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdQVUJ1ZmZlclVzYWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgx
MUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUJ1ZmZlclVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjMyQjU4MjFD
QjQ5QjcwMDk0ODNCOSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dE1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDI0NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3VwTGF5b3V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVRXh0ZW50M0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVF
eHRlbnQzRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgzMjIwQTQ3
MkYwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVVc2FnZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDg1MjIwQTQ3NzIwMEFDNUY0
OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZVVzYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDhCMjIwQTVCMEIwMEFDNUY0OSAv
KiBHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QzIyMEE1QkFEMDBBQzVGNDkg
LyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyQzI2OTIyMTgxNDE2RDAw
RDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzMjExQ0Uy
MUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEwMjg0IC8q
IEdQVUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yU2NvcGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVF
cnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvclNjb3Blcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMzZERDhEMjA4RkZDMEMwMEY5RjRCMiAvKiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFTVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5QTIxRkZDNjY3
MDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXBhcmVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDNDODQ5RTIxRkZDRjAwMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDNDODRBMjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFMTIxQzlCNTBGMDAwMzJCNzUg
LyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMyQjc1IC8q
IFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVs
aW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTYyMUM5
QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBl
bGluZUxheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI3MEE0
MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9j
a0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdEJsb2Nr
Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVERDZERDIyMzg4NDA2
MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1
REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDQzIxN0ZFNUM2
MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNo
YWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDRDIxN0ZF
NUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
NjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVNoYWRlck1vZHVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjVC
RTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVQmluZEdyb3VwQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZBOUEyMTIyMDI2QzdBMDA4M0M2NjIg
LyogR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RDBD
RkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwNkMwRDhFMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92ZUZvcm1h
dENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZFRjU1MjIyMEJB
MjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVXRpbHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2RUY1NTMyMjBCQTI2QTAwMTg3MjRFIC8qIEdQ
VVV0aWxzTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVVdGlsc01ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDdERUFCNzBBMzY1NTRBMDBDQTMwRjggLyog
SW5zZXJ0TGlzdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc2VydExpc3RDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA3REVBQjgwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BVQnVmZmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwODQwMzNEMjIxRTE4NjQwMDAwNzIwNSAvKiBXZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg0M0E0QzIwRkVDMTY1MDBG
RTg2MEUgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwODVFNjRBMjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5kR3JvdXBN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cE1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5NjA5RDUzQUFCMDA1QkM3NEQgLyogVW5s
aW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtDb21t
YW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODZGRTk3MDlENTNBQUIwMDVC
Qzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVubGlua0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDg3Q0UzODIxQUNBOTQyMDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVldWVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVF1ZXVlTWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQ
YXNzRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Vu
Y29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0IyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQzIxQUNBOTQyMDBCREUxNzQgLyogR1BV
RGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0QyMUFDQTk0MjAwQkRFMTc0IC8q
IEdQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0Uz
RTIxQUNBOTQyMDBCREUxNzQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA4N0NFM0YyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4
OTAzMzUyMjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNzIyNDA2MUFDMDBGM0Y0NDAgLyogV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwODkwMzM4MjI0MDYyODkwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzOTIyNDA2NDJE
MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzNCMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQzIyNDFBOTlGMDBGM0Y0NDAg
LyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQ
aXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRDIyNDFBOTlG
MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwODkwMzNFMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwODkwMzNGMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0Vu
Y29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rl
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRDIyMEQwQjlD
MDA1OEM1MDIgLyogR1BVTG9hZE9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVMb2FkT3AuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRjIyMEQwQkQ1MDA1OEM1MDIgLyogR1BVTG9hZE9w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxvYWRPcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BV
U3RvcmVPcC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDMyMjIwRDBE
MEIwMDU4QzUwMiAvKiBHUFVTdG9yZU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN0b3JlT3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzYyMjBEMTlEQTAwNThDNTAyIC8q
IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM3MjIwRDFE
MDUwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA5QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA3MjMx
NzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
QzAwQTIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDlBQzAwQjIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRI
YW5kbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2
aWNlRXJyb3JTY29wZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDEyMkQwMkU1MzAwQzQ1MzhD
IC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VURldmljZUVycm9yU2NvcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5
QUZCMDIyMkQwNDcxOTAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNj
b3Blcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDlBRkIwNjIyRDQxN0IzMDBDNDUzOEMgLyogR1BVRXJyb3JGaWx0
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDA5QUZCMDcyMkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjA4MjJE
NTU0MjgwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBDMjJENTVFOTAwMEM0
NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBEMjJENTVGM0IwMEM0NTM4
QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmFsaWRhdGlvbkVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBFMjJENTVGRjUwMEM0
NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVVmFs
aWRhdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMTcy
MkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU91dE9m
TWVtb3J5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIxOTIy
RDY2OThBMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVPdXRPZk1lbW9yeUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFG
QjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjM3MjJEN0Q1
QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVU9iamVjdEJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBD
MjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQwQTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwQTNBNzMwMTQwNUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjYyMjIzMDlENzYwMEEyMjkzNSAv
KiBHUFVTYW1wbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTYW1wbGVyRGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MzIyMzA5RDc2MDBB
MjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNhbXBsZXJEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjgyMjMwQUFDQjAw
QTIyOTM1IC8qIEdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2FtcGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUgLyogR1BV
U2FtcGxlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2FtcGxlck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QzIyMzBCQjhFMDBBMjI5MzUg
LyogV2ViR1BVU2FtcGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJH
UFVTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RjIyMzBDMUYxMDBBMjI5MzUgLyogV2Vi
R1BVU2FtcGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2FtcGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyN0YyMjMyRjE3MzAwQTIyOTM1IC8q
IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5oOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlEMEFEQjI4QTIyMzc3MzYx
MDBBMjI5MzUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QzIyMzc4NDJFMDBBMjI5MzUg
LyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yU3RhdGVEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCMDU1NjYwOUM2NzAwMTAw
MzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyZWF0ZUxpbmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBH
UFVCbGVuZERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmxlbmREZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFCMjI0RUM2MjQwMDYxMDQ5QyAv
KiBHUFVCbGVuZERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5QyAvKiBH
UFVDb2xvcldyaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9y
V3JpdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEI4QkIwMTIxQzQ2RTc4MDAwQzc2ODEgLyogR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBC
RDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlCNiAvKiBE
aWN0YXRpb25Db21tYW5kSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
Y3RhdGlvbkNvbW1hbmRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEw
NEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA0
QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVCdWZmZXJCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
QkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBC
RTEwNEUyMUU2OTVFMjAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBC
aW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MjIxRTZBQTBEMDBFNDJBODkgLyog
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUzMjFF
NkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjAy
MUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjEyMUU2
QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVCaW5kR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA2
MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5k
R3JvdXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQjIxODNDRkEy
MDA5RUMxREUgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGMDIxODNF
QjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBD
NDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY5MjE4NDA0REEw
MDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENBQUQ1MzIyNzdDMkE2
MDA4MDFDREYgLyogV29ya2VyTmF2aWdhdG9yR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlck5hdmlnYXRvckdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQ0NB
OTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVP
cmlnaW4zRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0QTIyMjk5Rjk3
MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU9yaWdpbjNELmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ2OUM5RDIy
MkUwMEMyMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwRDY5QzlGMjIyRTAxNUUwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5k
aW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0ODcyMUI2NENBQTAwM0M5ODNDIC8qIEdQVUJ1ZmZlckRl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQnVmZmVyRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BV
QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDg2NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RDg2NDkxMjFCNzYwQzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5NDIxQkEx
NzNEMDAzQzk4M0MgLyogR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWZXJ0
ZXhJbnB1dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4
NjQ5NjIxQkExOEY0MDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDg2NDk4MjFCQTE5QTcwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZl
cnRleElucHV0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUIyMUJBMUMyRDAw
M0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVT
d2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2Fw
Q2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQ
VVN3YXBDaGFpbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFnZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVU2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVU
ZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBFQUNGODcyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwRUFDRjg4MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmll
dy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEVBQ0Y4QzIxOTQwM0M5MDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVDIC8qIFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhGMjE5NDBBMjIw
MDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwRUFDRjkwMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEVBQ0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTIyMTk0MEE1QjAwMEZB
NzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBFQUNGOTMyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRkFFMjE5RTMwRkQwMDBGQTc1QyAv
KiBHUFVUZXh0dXJlRm9ybWF0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVUZXh0dXJlRm9ybWF0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hl
ZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3
NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRjc1NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZl
ckluZGV4Q2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZlcnRleEJ1ZmZlckluZGV4
Q2FsY3VsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5OTIyMDM5
MUMzMDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTggLyogR1BV
TGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxpbWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdM
b2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGluZ0xvYWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMkNEQjVFRDYzOEY0M0FGODZGMDdBQTIgLyog
SlNFcnJvckV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRXJyb3JFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xOTE2NSwxMDMgKzE4NzUwLDYgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0g
MDsKIAkJfTsKLQkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTI5MTRDMkMyMkY5M0U1RDAwNTc4
MTUwIC8qIFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCAqLywKLQkJCQkxQzg0MEI5MDIxRUMzMEY5
MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIxQ0Q4OUUy
MDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFCRjcwOTIx
Q0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjczMDIxQ0Q4
OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJCTUyMTU4
NjJDMjI5Mzc3QjcwMDU5MjVFRiAvKiBXSExTTEFTVC5oICovLAotCQkJCUMyMUJGNzBBMjFDRDg5
Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJG
NkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJG
NzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2RjYyMUNE
ODlCNzAwMjI3OTc5IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcxQTIx
Q0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFEREVDRDMw
MEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MjIyMUNE
ODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTYy
MUNEODlENTAwMjI3OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcw
NjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAotCQkJCTUy
Q0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAqLywKLQkJCQlD
MjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAq
LywKLQkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmgg
Ki8sCi0JCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAq
LywKLQkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50LmggKi8sCi0JCQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8qIFdITFNM
RW50cnlQb2ludFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5NzkgLyogV0hM
U0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5
NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovLAotCQkJCUMyMUJGNzAyMjFDRDg5QzQw
MDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJCTUyMkQw
N0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovLAotCQkJCUMyMUJG
NzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcw
MDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovLAotCQkJCUMyMUJGNzM1
MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM4
MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFD
QjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLywKLQkJ
CQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCi0JCQkJQzIx
QkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJ
CQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgg
Ki8sCi0JCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0
aW9uLmggKi8sCi0JCQkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UuaCAqLywKLQkJCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hM
U0xJZlN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExT
TEluZGV4RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBX
SExTTEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5Nzkg
LyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2
QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUyMURFRDY0
OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzIy
MUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAot
CQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtl
UG9pbnRlckV4cHJlc3Npb24uaCAqLywKLQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyog
V0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJCQlDMjM5OEVCRDIzMEExQjc2MDA2NDE1MDcgLyogV0hM
U0xOYW1lU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3
OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjEyMUNE
ODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggKi8sCi0J
CQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLywKLQkJ
CQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xRdWFsaWZpZXIu
aCAqLywKLQkJCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5IC8qIFdITFNM
UmVmZXJlbmNlVHlwZS5oICovLAotCQkJCTMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAvKiBXSExT
TFJlcGxhY2VXaXRoLmggKi8sCi0JCQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNM
UmVzb2x2YWJsZVR5cGUuaCAqLywKLQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hM
U0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5Nzkg
LyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3
OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8q
IFdITFNMU2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzM2MjFD
RDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICov
LAotCQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRp
Yy5jcHAgKi8sCi0JCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91
dFNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3Rh
dGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExT
TFN0cnVjdHVyZUVsZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyog
V0hMU0xTd2l0Y2hDYXNlLmggKi8sCi0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdI
TFNMU3dpdGNoU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8q
IFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5
NzkgLyogV0hMU0xUeXBlLmggKi8sCi0JCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8qIFdI
TFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKLQkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyog
V0hMU0xUeXBlQXJndW1lbnQuaCAqLywKLQkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5NzkgLyog
V0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcwQzQ1QSAv
KiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAotCQkJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3
OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKLQkJCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4
NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8sCi0JCQkJMUMzMzI3NzIyMUNGMEQyRTAwMERD
OUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKLQkJCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4
NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLywKLQkJCQlDMjBGNEY2NzIxREZGM0E3MDA3
MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjcy
QjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggKi8sCi0J
CQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5
IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzE0MjFDRDg5RDMw
MDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MTMyMUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywK
LQkJCQlDMjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gQVNUOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
MUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5MjgxLDI4ICsxODc2OSw2IEBACiAJ
CQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDRUNCM0FEMjFGMkI5
NjQwMEY0NDU0MiAvKiBNZXRhbCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMUNFQ0IzQkEyMUY1MTFBQTAwRjQ0NTQyIC8qIFdITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmNwcCAqLywKLQkJCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xF
bnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLywKLQkJCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIg
LyogV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjIyMUYyQjk4NjAwRjQ0
NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQk3QzdDNzY5QzIyRjY3RUNEMDAz
MkJDQ0QgLyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLywKLQkJCQkxQ0VDQjNCNTIxRjUwQUM3MDBG
NDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwICovLAotCQkJCTFDRUNCM0I2MjFG
NTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAotCQkJCTFDRUNC
M0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywK
LQkJCQkxQ0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRl
ci5oICovLAotCQkJCTFDRUNCM0M2MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVX
cml0ZXIuY3BwICovLAotCQkJCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2
ZVR5cGVXcml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xU
eXBlTmFtZXIuY3BwICovLAotCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5
cGVOYW1lci5oICovLAotCQkJCUQwRjc1NTk5MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAgKi8sCi0JCQkJRDBGNzU1OTgyMjAzOTFDMzAwMTE4
MDU4IC8qIFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggKi8sCi0JCQkpOwotCQkJ
cGF0aCA9IE1ldGFsOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMUQwMDI2
OUEyMzc0QjlGODAwQ0E2Q0RGIC8qIFBpY3R1cmVJblBpY3R1cmUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjA1MDEsODAgKzE5OTY3LDYgQEAKIAkJCXBh
dGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQ5ODc3MEMx
MTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCUQwODdDRTM3MjFBQ0E5NDIwMEJERTE3NCAvKiBjb2NvYSAqLywKLQkJ
CQlEMEJFMTA1RTIxRTZCQUQzMDBFNDJBODkgLyogR1BVQmluZEdyb3VwLmggKi8sCi0JCQkJRDA2
NUJFNTcyMkZCNjE2RDAwNzZERDYwIC8qIEdQVUJpbmRHcm91cEFsbG9jYXRvci5oICovLAotCQkJ
CUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5nLmggKi8sCi0J
CQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAq
LywKLQkJCQlEMDI0NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3VwTGF5b3V0Lmgg
Ki8sCi0JCQkJRDBCNTZFQUEyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5o
ICovLAotCQkJCUQwODQwMzNBMjIxQ0JGNTQwMDAwNzIwNSAvKiBHUFVCdWZmZXIuY3BwICovLAot
CQkJCUQwRDg2NDkyMjFCNzYwRjIwMDNDOTgzQyAvKiBHUFVCdWZmZXIuaCAqLywKLQkJCQlEMEJF
MTA0QTIxRTY4NzJGMDBFNDJBODkgLyogR1BVQnVmZmVyQmluZGluZy5oICovLAotCQkJCUQwRDg2
NDg3MjFCNjRDQUEwMDNDOTgzQyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAx
QjgxMUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8sCi0JCQkJRDAwMUQ5
QUIyMUIwQzdCRjAwMjNCOUJDIC8qIEdQVUNvbG9yLmggKi8sCi0JCQkJRDBBREIyOEIyMjM3ODQy
RTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBCNTZFQUQy
MjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaCAqLywKLQkJCQkzMTJGRjhCRDIxQTRD
MkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCUQwM0M4NDlDMjFGRkM3
RkMwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVuY3Rpb24uaCAqLywKLQkJCQlEMDg5MDMzRjIyNDFD
RTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8sCi0JCQkJRDA4OTAzM0Ey
MjQxNzlCNTAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZS5oICovLAotCQkJCUQwODkwMzM5
MjI0MDY0MkQwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0J
CQkJRDAzQzg0OUEyMUZGQzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5oICovLAotCQkJCTMxMkZGOEJGMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuY3Bw
ICovLAotCQkJCTMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLywKLQkJ
CQlEMDlBRkIwODIyRDU1NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJCUQwOUFG
QjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8sCi0JCQkJRDA5QUZCMDcyMkQ1
MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8sCi0JCQkJRDA5QUZCMDIyMkQwNDcxOTAwQzQ1
MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8sCi0JCQkJRDAzNTg2QjIyMkQ3RjJFQTAwREEwMjg0
IC8qIEdQVUVycm9yU2NvcGVzLmNwcCAqLywKLQkJCQlEMDM1ODZCMTIyRDdGMkVBMDBEQTAyODQg
LyogR1BVRXJyb3JTY29wZXMuaCAqLywKLQkJCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyog
R1BVRXh0ZW50M0QuaCAqLywKLQkJCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTggLyogR1BVTGlt
aXRzLmggKi8sCi0JCQkJRDA4QUEwMkYyMjBEMEJENTAwNThDNTAyIC8qIEdQVUxvYWRPcC5oICov
LAotCQkJCUQwOUFGQjM3MjJEN0Q1QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8sCi0J
CQkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLywK
LQkJCQk5MTg2RjNCQTIzMjlGRTY4MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuY3BwICovLAotCQkJ
CTkxODZGM0IzMjMyOUZCMDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovLAotCQkJCTMxMkZG
OEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0J
CQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywK
LQkJCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywK
LQkJCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmggKi8sCi0JCQkJQTNDM0RDNUQyNTNBMTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRmb3JtVHlw
ZXMuaCAqLywKLQkJCQlEMDAzOTE0MTIyMjQ4RDQwMDA5ODk5OEMgLyogR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovLAotCQkJCTMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5
RCAvKiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDMTIx
QTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLywKLQkJCQlEMDMyMTFEMDIxQUM5NTRGMDA3
NjNDRjIgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDMyMTFDRTIxQUM5
NTRFMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhCOTIx
QTRDMkVGMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKLQkJCQkzMTJGRjhCQzIx
QTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJ
RDA2QTlBMjEyMjAyNkM3QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICov
LAotCQkJCUQwQURCMjY4MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8sCi0JCQkJ
RDBBREIyNjIyMjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCi0J
CQkJMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAotCQkJ
CTMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJRDA4QUEwMzIyMjBEMEQwQjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaCAqLywKLQkJ
CQkzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBB
REIyN0YyMjMyRjE3MzAwQTIyOTM1IC8qIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLywKLQkJ
CQkzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oICovLAotCQkJCUQwMjZG
NDhDMjIwQTVCQUQwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovLAotCQkJCTMx
MkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggKi8sCi0JCQkJRDAy
NkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5oICovLAotCQkJCUQwNkVG
NTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovLAotCQkJCUQwOUFGQjBFMjJENTVG
RjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjBEMjJE
NTVGM0IwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLywKLQkJCQlEMEQ4NjQ5QjIx
QkExQzJEMDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwRDg2NDlDMjFCQTFDRTgwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3Jp
cHRvci5oICovLAotCQkJKTsKLQkJCXBhdGggPSBncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQzMzQsNyArMjM3MjYsNiBAQAog
CQkJCTU3RDg0NjJBMUZFQUY1N0YwMENBMzY4MiAvKiB3ZWJhdXRobiAqLywKIAkJCQk5N0JDNjlE
NTE1MDVGMDU0MDAxQjc0QUMgLyogd2ViZGF0YWJhc2UgKi8sCiAJCQkJOTk2RTU5REExREYwMEQ0
NTAwNjYxMkI5IC8qIHdlYmRyaXZlciAqLywKLQkJCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIg
Lyogd2ViZ3B1ICovLAogCQkJCTk3QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRz
ICovLAogCQkJCUUxRUU4QUM2MjQxMkIxNkYwMEU3OTRENiAvKiB3ZWJ4ciAqLywKIAkJCSk7CkBA
IC0yNzAyMiw3ICsyNjQxMyw2IEBACiAJCQkJQ0Q5RDgyN0MxQzdCQjJFRDAwNkZGMDY2IC8qIGN2
ICovLAogCQkJCTBGRTVGQkM5MUMzREQ1MDYwMDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMgKi8sCiAJ
CQkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRlcnMgKi8sCi0JCQkJNDk4NzcwQzEx
MjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLywKIAkJCQk0NDFBRjBBNzBFQkE3QkJGMDA0NEVENEIg
LyogaW9zICovLAogCQkJCUNEODkyRjVBMUZCNTJBQ0YwMDkzMzNEMiAvKiBpc28gKi8sCiAJCQkJ
QjI3NTM1NDkwQjA1MzgxNDAwMkNFNjRGIC8qIG1hYyAqLywKQEAgLTI3NDU5LDggKzI2ODQ5LDYg
QEAKIAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uLm1tICovLAogCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi8sCiAJCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8s
Ci0JCQkJMzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8sCi0JCQkJ
MzE4NDM2REQyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLm1tICovLAogCQkJCTA3RjVD
RkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJ
CTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAq
LywKIAkJCSk7CkBAIC0yODMxOSw4NCArMjc3MDcsNiBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAv
KiBXSExTTCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
MUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLywKLQkJCQkxQ0VDQjNBRDIxRjJCOTY0
MDBGNDQ1NDIgLyogTWV0YWwgKi8sCi0JCQkJQzIwRjg4QUEyMjk2NkIwRTAwRDYxMEZBIC8qIFdI
TFNMQVNURHVtcGVyLmNwcCAqLywKLQkJCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hM
U0xBU1REdW1wZXIuaCAqLywKLQkJCQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyogV0hMU0xC
dWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICovLAotCQkJCUMyMzRBOUIyMjFFOTJD
MUYwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCAqLywKLQkJCQlD
MjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5o
ICovLAotCQkJCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuY3BwICov
LAotCQkJCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLywKLQkJ
CQk1MjRCRDQ3RTIzMjc3RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNw
cCAqLywKLQkJCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5j
ZVR5cGVzLmggKi8sCi0JCQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8q
IFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovLAotCQkJCTUyMkJBQjk2MjJFNkEzNjIw
MEM1NENFOSAvKiBXSExTTENvZGVMb2NhdGlvbi5oICovLAotCQkJCTFDODZDQTRCMjJBQTE5RkYw
MDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2Q0E0QzIy
QUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovLAotCQkJCTFDQjVG
RTg4MjJERUJDOEIwMDk0NDBFMiAvKiBXSExTTEVycm9yLmggKi8sCi0JCQkJMUNBMEMyRTQyMUVF
RDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovLAotCQkJCTFD
QTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8s
Ci0JCQkJMUM4NDBCOTkyMUVDNDAwODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0
ZW1zLmNwcCAqLywKLQkJCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuaCAqLywKLQkJCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLywKLQkJCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIg
LyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8sCi0JCQkJQzIzNEE5OUEyMUU5MEY1NjAwM0M5
ODREIC8qIFdITFNMSW5mZXJUeXBlcy5jcHAgKi8sCi0JCQkJQzIzNEE5OUIyMUU5MEY1NzAwM0M5
ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovLAotCQkJCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0
RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovLAotCQkJCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0
RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLywKLQkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0Qg
LyogV0hMU0xMZXhlci5jcHAgKi8sCi0JCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdI
TFNMTGV4ZXIuaCAqLywKLQkJCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRl
cmFsVHlwZUNoZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBX
SExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOThEMjFFODg4ODQwMDNDOTg0
RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLywKLQkJCQlDMjM0QTk4RTIxRTg4ODg1MDAzQzk4
NEQgLyogV0hMU0xOYW1lQ29udGV4dC5oICovLAotCQkJCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0
RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8sCi0JCQkJQzIzNEE5OEMyMUU4ODgzRTAwM0M5
ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8sCi0JCQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNF
MTJGIC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5
IC8qIFdITFNMUGFyc2VyLmNwcCAqLywKLQkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5NzkgLyog
V0hMU0xQYXJzZXIuaCAqLywKLQkJCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQ
YXJzaW5nTW9kZS5oICovLAotCQkJCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBXSExTTFBp
cGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBX
SExTTFByZXBhcmUuY3BwICovLAotCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExT
TFByZXBhcmUuaCAqLywKLQkJCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVz
ZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLywKLQkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQz
NkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJQzIxQkY3M0Ey
MUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAotCQkJCTFDQUE4MkY2MjI0MkFF
MDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAotCQkJCTFDQUE4MkY3
MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywKLQkJCQk1MjZC
M0YwMTIyRkI3QkREMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25zLmNwcCAqLywKLQkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hM
U0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCi0JCQkJMUNB
MEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8sCi0J
CQkJMUNBMEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICov
LAotCQkJCUMyMzRBOUFEMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVj
a2VyLmNwcCAqLywKLQkJCQlDMjM0QTlBQjIxRTkyQzE4MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNp
dmVUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOTk5MjFFOTBGMjkwMDNDOTg0RCAvKiBXSExT
TFJlc29sdmVPdmVybG9hZEltcGwuY3BwICovLAotCQkJCUMyMzRBOTk3MjFFOTBGMjgwMDNDOTg0
RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCAqLywKLQkJCQlDMjM0QTk5RDIxRTkxMEJE
MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBlLmggKi8sCi0JCQkJMUM1OUIwMTgyMjM4Njg3
OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLywKLQkJCQlDMjRBNTdCMjIxRkI4
RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovLAotCQkJCUMyNEE1N0Iz
MjFGQjhEREEwMDRDNkREMSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5oICovLAotCQkJCUMyMUJG
NzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCi0JCQkJ
MUNEQUJENkIyMkM4NDc5QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuaCAqLywKLQkJCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuY3BwICovLAotCQkJCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAvKiBX
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oICovLAotCQkJCTFDRUNCM0E5MjFGMkI2NzMw
MEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNF
Q0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgg
Ki8sCi0JCQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5jcHAgKi8sCi0JCQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycy5oICovLAotCQkJCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAv
KiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJQzIzNEE5
QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25z
LmggKi8sCi0JCQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAg
Ki8sCi0JCQkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovLAot
CQkJKTsKLQkJCXBhdGggPSBXSExTTDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yODg4MSwxNzggKzI4MTkxLDYgQEAKIAkJCXBh
dGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlEMDBGNTkzRTIx
NkVDQzQzMDAwRDcxREIgLyogd2ViZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQlDMjEwRTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8sCi0J
CQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcu
aCAqLywKLQkJCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0
QmluZGluZy5pZGwgKi8sCi0JCQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEQ2OUM5RDIyMkUwMEMyMDAzMjkyN0Ug
LyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBCNTZFQUIyMjRF
QzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAxQjgxMTky
MjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwMUI4
MTFDMjIxMzYyNzMwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCi0JCQkJRDA5M0Qy
MjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovLAotCQkJCUQwOTNE
MjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmggKi8sCi0JCQkJRDA5M0Qy
MjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaWRsICovLAotCQkJCUQwMUI4
MTEyMjIxMjVBRkMwMDYyN0I2QyAvKiBHUFVDb2xvci5pZGwgKi8sCi0JCQkJRDBBREIyOEMyMjM3
ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEI1
NkVBRTIyNEVDRTIwMDA2MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5pZGwgKi8sCi0JCQkJRDAzQzg0
OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8sCi0JCQkJRDAz
Qzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5p
ZGwgKi8sCi0JCQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmlk
bCAqLywKLQkJCQlEMDI2RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRsICov
LAotCQkJCUQwOEFBMDJEMjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAotCQkJ
CUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAotCQkJCUQwQ0NB
OTRBMjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCi0JCQkJRDA5QUZCMTcy
MkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovLAotCQkJCUQwMkMy
NjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovLAot
CQkJCUQwQURCMjYzMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwg
Ki8sCi0JCQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmggKi8s
Ci0JCQkJRDBERThGQjkyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmlkbCAqLywK
LQkJCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8sCi0JCQkJ
RDAyNkY0OEIyMjBBNUIwQjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCAqLywK
LQkJCQlEMEVBQ0ZBRTIxOUUzMEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8s
Ci0JCQkJRDAyNkY0ODMyMjBBNDcyRjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5pZGwgKi8s
Ci0JCQkJRDA5QUMwMDYyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmNwcCAqLywKLQkJCQlEMDlBQzAwNTIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQuaCAqLywKLQkJCQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuaWRsICovLAotCQkJCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4QyAvKiBH
UFVWYWxpZGF0aW9uRXJyb3IuaWRsICovLAotCQkJCUQwRDg2NDk2MjFCQTE4RjQwMDNDOTgzQyAv
KiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5ODIxQkEx
OUE3MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBE
ODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgKi8s
Ci0JCQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRsICovLAot
CQkJCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovLAotCQkJ
CUQwMDQ4N0VFMjI3NDI4MTQwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuaCAqLywKLQkJCQlEMDBG
NTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLywKLQkJCQlEMDBGNTk0NjIxNkVG
RTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCi0JCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURC
IC8qIFdlYkdQVS5pZGwgKi8sCi0JCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQ
VUFkYXB0ZXIuY3BwICovLAotCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVB
ZGFwdGVyLmggKi8sCi0JCQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0
ZXIuaWRsICovLAotCQkJCUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3Jv
dXAuY3BwICovLAotCQkJCUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3Jv
dXAuaCAqLywKLQkJCQlEMEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3Vw
LmlkbCAqLywKLQkJCQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3Vw
QmluZGluZy5oICovLAotCQkJCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmlkbCAqLywKLQkJCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBCRTEwNTIyMUU2QUEwRDAwRTQy
QTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEJFMTA1MzIxRTZB
QTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAw
MzI4N0EyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8sCi0J
CQkJRDAwMzI4NzkyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICov
LAotCQkJCUQwMDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQu
aWRsICovLAotCQkJCUQwRDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuY3Bw
ICovLAotCQkJCUQwRDg2NDhDMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaCAqLywK
LQkJCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKLQkJ
CQlEMEJFMTA0QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovLAot
CQkJCUQwQkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAq
LywKLQkJCQlEMDVERDZERDIyMzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAgKi8sCi0JCQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaCAqLywKLQkJCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1
ZmZlci5pZGwgKi8sCi0JCQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1h
bmRFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BV
Q29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsICovLAotCQkJCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAv
KiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMEQ3N0ZEMjI0MkVENDUw
MDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMDBENzdGRjIy
NDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLywKLQkJCQlE
MDg5MDMzRDIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLywK
LQkJCQlEMDg5MDMzQzIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgg
Ki8sCi0JCQkJRDA4OTAzM0UyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZS5pZGwgKi8sCi0JCQkJRDA4OTAzMzgyMjQwNjI4OTAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAv
KiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4OTAzMzUyMjQw
NjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAot
CQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovLAotCQkJ
CUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDBG
NTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKLQkJCQlEMDlBRkIw
MTIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwICovLAotCQkJ
CUQwOUFGQUZGMjJEMDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oICov
LAotCQkJCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5pZGwgKi8sCi0JCQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2
ZW50SGFuZGxlci5oICovLAotCQkJCUQwOUFDMDBCMjMxNzM1QkUwMDE4Nzc2MiAvKiBXZWJHUFVE
ZXZpY2VFdmVudEhhbmRsZXIuaWRsICovLAotCQkJCTkxODZGM0I2MjMyOUZCNEUwMEFGRjg1NyAv
KiBXZWJHUFVQaXBlbGluZS5jcHAgKi8sCi0JCQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8q
IFdlYkdQVVBpcGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKLQkJCQlEMEM0MTlGMTIxODNFQjMxMDA5
RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCi0JCQkJRDA1QTk5
RTUyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJCQlE
MDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywKLQkJ
CQlEMDVBOTlFNjIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsICov
LAotCQkJCUQwMDQ4N0QyMjI0NTdCRUEwMEVFRDdEOSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuY3BwICovLAotCQkJCUQwNUE5OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJC
NzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVBQ0Y5
MjIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICov
LAotCQkJCUQwRUFDRjkxMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oICovLAotCQkJCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8sCi0JCQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQw
IC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBDNDE5
RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5o
ICovLAotCQkJCUQwQzQxOUVDMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaWRsICovLAotCQkJCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBX
ZWJHUFVRdWV1ZS5jcHAgKi8sCi0JCQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQ
VVF1ZXVlLmggKi8sCi0JCQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVl
LmlkbCAqLywKLQkJCQlEMDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwRUFDRjhDMjE5NDAzQzkwMDBGQTc1QyAvKiBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAotCQkJCUQwOEFBMDM2MjIwRDE5REEwMDU4QzUw
MiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBFQUNGOEYyMTk0
MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVB
Q0Y4RTIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJ
CQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRs
ICovLAotCQkJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHAgKi8sCi0JCQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBp
cGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lLmlkbCAqLywKLQkJCQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEM0MTlGMjIxODNFRkVDMDA5
RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBDNDE5
RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwg
Ki8sCi0JCQkJRDBBREIyNkQyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuY3BwICov
LAotCQkJCUQwQURCMjZDMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmggKi8sCi0J
CQkJRDBBREIyNkYyMjMwQzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovLAotCQkJ
CUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAot
CQkJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywK
LQkJCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAq
LywKLQkJCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKLQkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCi0JCQkJRDAwNDg3RTUyMjZBNjM0MjAwRUVEN0Q5IC8q
IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQURCMjdFMjIzMkYwQzAw
MEEyMjkzNSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBFQUNGODUy
MTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuY3BwICovLAotCQkJCUQwRUFDRjg0MjE5
M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmggKi8sCi0JCQkJRDBFQUNGODYyMTkzQjAy
RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuaWRsICovLAotCQkJCUQwRUFDRjg4MjE5M0VFNEUw
MDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5jcHAgKi8sCi0JCQkJRDBFQUNGODcyMTkzRUU0
RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmggKi8sCi0JCQkJRDBFQUNGODkyMTkzRUU0
RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmlkbCAqLywKLQkJCQlEMDA0ODdGRDIyNzdB
RjgxMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8sCi0JCQkJRDBDQUFENTMy
Mjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8sCi0JCQkJRDAwNDg3
RkUyMjc3QUY4MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovLAotCQkJKTsKLQkJ
CXBhdGggPSB3ZWJncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlEMDg3
Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5k
R3JvdXBBbGxvY2F0b3JNZXRhbC5tbSAqLywKLQkJCQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkg
LyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gKi8sCi0JCQkJRDA4NUU2NEEyMjM2REVBRTAw
QzNFMUUyIC8qIEdQVUJpbmRHcm91cE1ldGFsLm1tICovLAotCQkJCUQwRDg2NDkxMjFCNzYwQzQw
MDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzODIxQUNBOTQyMDBC
REUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODkwMzQwMjI0MUNF
NDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg5
MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8sCi0J
CQkJRDA4N0NFM0MyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovLAotCQkJ
CTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91
dC5jcHAgKi8sCi0JCQkJMUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmggKi8sCi0JCQkJQTM4QTg3QTMyNTM4QkVFNzAwMzdBNDcyIC8qIEdQ
VVBsYXRmb3JtVHlwZXNNZXRhbC5oICovLAotCQkJCUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAv
KiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTM5MjFB
Q0E5NDIwMEJERTE3NCAvKiBHUFVRdWV1ZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNBMjFBQ0E5
NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdD
RTNEMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAotCQkJ
CUQwQURCMjZCMjIzMEFDQzAwMEEyMjkzNSAvKiBHUFVTYW1wbGVyTWV0YWwubW0gKi8sCi0JCQkJ
RDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovLAot
CQkJCUQwODdDRTNFMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLywK
LQkJCQlEMDg3Q0UzRjIxQUNBOTQyMDBCREUxNzQgLyogR1BVVGV4dHVyZU1ldGFsLm1tICovLAot
CQkJCUQwNkVGNTUzMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovLAotCQkJ
KTsKLQkJCXBhdGggPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJ
CURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMyODc4LDE4ICszMjAxNiw2IEBACiAJCQkJQzVENEFB
N0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEyMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEzMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLywK
LQkJCQkzMTJGRjkxNDIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyog
R1BVUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAv
KiBHUFVSZW5kZXJQaXBlbGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTcyMUE0QzM2
NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMzEyRkY5MTgyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzEyRkY5MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFBMjFBNEMzNjUwMEVCMTk5
RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFCMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQzIxQTRD
MzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzk2NDBEMDBCRjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDQ4MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNjA2Nyw3ICszNTE5Myw2IEBACiAJCQkJMEMzRjFGNUIxMEM4ODcx
MjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
Rjk5NUEyNjFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxODQzNkRFMjFCOURBQUYwMEVEMzgz
RSAvKiBXZWJHUFVMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjcxRkFBNDQ2MjAw
MzdEMUU2IC8qIFdlYkhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjUxODdC
OEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNjE0MSw5ICszNTI2Niw2IEBACiAJCQkJMkVCQkMzRDgxQjY1
OTg4MzAwRjUyNTNEIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkU5QjVEOEYxQjY2QTk0RTAwOEM2QTI0IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZl
bnRUZXN0TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTE5NTZGMjUyMzMxQUQ1MzAwNTdF
OUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1
NkYyNDIzMzFBRDIxMDA1N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBMTk1NkYyMzIzMzFBQ0YyMDA1N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQxMURDQjExNjRDMzlBODAwRDQ5QkMxIC8qIFdpZHRoQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaAppbmRleCAwYjVmOGVlMjNlOTNiODRmMWFhNjczZTY5NDgyZWUxZjY3
YzdmMDQ2Li5jOGRiNjg3OTlmOTYyMDAxNGMyYjQ0NTcyZGRkMmE1MzI3Mzg5N2JmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0x
MDQsMzQgKzEwNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHYW1lcGFkKSBc
CiAgICAgbWFjcm8oR2FtZXBhZEJ1dHRvbikgXAogICAgIG1hY3JvKEdhbWVwYWRFdmVudCkgXAot
ICAgIG1hY3JvKEdQVSkgXAotICAgIG1hY3JvKEdQVUFkYXB0ZXIpIFwKLSAgICBtYWNybyhHUFVC
aW5kR3JvdXApIFwKLSAgICBtYWNybyhHUFVCaW5kR3JvdXBMYXlvdXQpIFwKLSAgICBtYWNybyhH
UFVCdWZmZXIpIFwKLSAgICBtYWNybyhHUFVCdWZmZXJVc2FnZSkgXAotICAgIG1hY3JvKEdQVUNh
bnZhc0NvbnRleHQpIFwKLSAgICBtYWNybyhHUFVDb2xvcldyaXRlKSBcCi0gICAgbWFjcm8oR1BV
Q29tbWFuZEJ1ZmZlcikgXAotICAgIG1hY3JvKEdQVUNvbW1hbmRFbmNvZGVyKSBcCi0gICAgbWFj
cm8oR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBpcGVsaW5l
KSBcCi0gICAgbWFjcm8oR1BVRGV2aWNlKSBcCi0gICAgbWFjcm8oR1BVT3V0T2ZNZW1vcnlFcnJv
cikgXAotICAgIG1hY3JvKEdQVVBpcGVsaW5lTGF5b3V0KSBcCi0gICAgbWFjcm8oR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIpIFwKLSAgICBtYWNybyhHUFVRdWV1ZSkgXAotICAgIG1hY3JvKEdQ
VVJlbmRlclBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVUmVuZGVyUGlwZWxpbmUpIFwKLSAg
ICBtYWNybyhHUFVTYW1wbGVyKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxlKSBcCi0gICAg
bWFjcm8oR1BVU2hhZGVyU3RhZ2UpIFwKLSAgICBtYWNybyhHUFVTd2FwQ2hhaW4pIFwKLSAgICBt
YWNybyhHUFVUZXh0dXJlKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdlKSBcCi0gICAgbWFj
cm8oR1BVVGV4dHVyZVZpZXcpIFwKLSAgICBtYWNybyhHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCkg
XAotICAgIG1hY3JvKEdQVVZhbGlkYXRpb25FcnJvcikgXAogICAgIG1hY3JvKEhpZ2hsaWdodFJl
Z2lzdGVyKSBcCiAgICAgbWFjcm8oSGlnaGxpZ2h0KSBcCiAgICAgbWFjcm8oSFRNTEF0dGFjaG1l
bnRFbGVtZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ODJiNWYyNzVhMzgzN2Rl
N2Y2Mjg1Yzg5YWY4MDgyNzIxNGQ1MzA5Li4zMzgxZmJmMWM0OTY0MDY3ZTYzOGVmNzVmZDY4ZDdl
MmMyZjA5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMzNiw5ICszMzYsNiBAQAog
I2lmIEVOQUJMRShXRUJHTDIpCiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgog
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0Lmgi
Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYzOTQsMTAgKzYzOTEsNiBAQCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0
cmluZyYgdHlwZQogICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9
IH07CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52YXNDb250
ZXh0PigqY29udGV4dCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRy
PEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpjb250ZXh0
KSB9IH07Ci0jZW5kaWYKIAogICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPigqY29udGV4dCkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjOThlMjA1ZmFm
NzRlNDhhNmRkZmI5ZWZmZWRiZTE4MjdmZWE5ZjM4Li5jNGRmMDM3YjM5NDM5ZDkxNjdjYTdmYTNk
YzA4YjhjNWJkMWVmNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzE4LDkgKzMxOCw2IEBA
IHVzaW5nIFJlbmRlcmluZ0NvbnRleHQgPSBWYXJpYW50PAogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkdMMikKICAgICBSZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4sCi0jZW5kaWYKLSNpZiBF
TkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiwKICNlbmRpZgogICAg
IFJlZlB0cjxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+LAogICAgIFJlZlB0cjxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3NTc0MTQwODdh
NmJjYTYzNWEzZmNjOTVlZmZmNmUyNGRlM2RmMjVlLi42ODA0YjBmNTU2Y2U2NDAwNTQ0NDIxZmVl
NmFmYzc0MmVjZDFmZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0LDkgKzI0LDYg
QEAgdHlwZWRlZiAoCiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYmIEVOQUJM
RV9XRUJHTDIKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNpZiBkZWZp
bmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXNDb250ZXh0
IG9yCiAjZW5kaWYKICAgICBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5pbgppbmRleCAxNjAxMWFmNmVmMjMwNDc2OTUyNTgxMThjNjQ5MmIwYmVhMDlkYTJiLi4y
YmNkNzNjM2I4MzgwNmJkMWI3ZTEwOWU2ZmM4OTY3YjFiY2Y5OWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5pbgpAQCAtOTAsNyArOTAsNiBAQCBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50IGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFFbmNyeXB0ZWRFdmVudCBjb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUEKIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQQogUG9pbnRlckV2ZW50Ci1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBjb25kaXRpb25h
bD1XRUJHUFUKIEVudGVyUGljdHVyZUluUGljdHVyZUV2ZW50IGNvbmRpdGlvbmFsPVBJQ1RVUkVf
SU5fUElDVFVSRV9BUEkKIFhSSW5wdXRTb3VyY2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgogWFJJ
bnB1dFNvdXJjZXNDaGFuZ2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZjYwYzg5MjdhNTZiYzM1OGQxMDdiOWRiOGVj
ZTlhNGMzNzEyMzZjMi4uMWQ4YmE2NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNkMjUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Niw3ICs1Niw2
IEBAIFRleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCi1XZWJHUFVEZXZpY2Ug
Y29uZGl0aW9uYWw9V0VCR1BVCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVH
QUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTAxM2NlZGEwMzU3YWMxYWQyMGU1NTZmZjI3
NzZhMzEzY2M1ZWUzNi4uNzRmOGEyZWJkNzAyNTRkYjk4YzcyZWFjZTNmMDc2YTYxMzI5NjcxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTgxLDEwICs4
MSw2IEBACiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKFdFQlhSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvci5oIgpAQCAtMjcwLDE0ICsyNjYsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6Ogog
ICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIGlmIChtX2Nv
bnRleHQtPmlzV2ViR1BVKCkpIHsKLSAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBlKGNvbnRl
eHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0
PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKLSAgICAgICAgfQotI2VuZGlmCi0K
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQpAQCAtMzIzLDE1
ICszMTEsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OgogICAgIH0KICNlbmRpZgogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsKLSAgICAg
ICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwotICAgICAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7IGNvbnRleHQg
fSB9OwotICAgIH0KLSNlbmRpZgotCiAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIApAQCAtMzQ4LDExICszMjcsNiBAQCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBT
dHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR0woSFRNTENhbnZhc0Vs
ZW1lbnQ6OnRvV2ViR0xWZXJzaW9uKHR5cGUpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKLSAgICAg
ICAgcmV0dXJuIGdldENvbnRleHRXZWJHUFUodHlwZSk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCkBAIC00OTUsNDcgKzQ2OSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUs
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29s
IEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQotewot
ICAgIHJldHVybiB0eXBlID09ICJncHUiOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1MQ2Fu
dmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0g
ICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5
cGUpKTsKLSAgICBBU1NFUlQoIW1fY29udGV4dCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0
dGluZ3MoKS53ZWJHUFVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
bV9jb250ZXh0ID0gR1BVQ2FudmFzQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAobV9j
b250ZXh0KSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5k
IGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgotICAgICAgICBp
bnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdQVUNhbnZhc0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwotfQotCi1H
UFVDYW52YXNDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVShjb25z
dCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxl
bWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5n
cygpLndlYkdQVUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAo
bV9jb250ZXh0ICYmICFtX2NvbnRleHQtPmlzV2ViR1BVKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBjcmVhdGVDb250ZXh0
V2ViR1BVKHR5cGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0Kj4o
bV9jb250ZXh0LmdldCgpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIGJvb2wg
SFRNTENhbnZhc0VsZW1lbnQ6OmlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICByZXR1cm4gdHlwZSA9PSAiYml0bWFwcmVuZGVyZXIiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGY2NzhmMGVkYTNkOTI1NDZiNjUxMWZjYzA4
MjlkM2FkYjg4NjE5M2IuLjBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFlODk3OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTg5LDEyICs4OSw2
IEBAIHB1YmxpYzoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250ZXh0V2Vi
R0woV2ViR0xWZXJzaW9uIHR5cGUsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsgfSk7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJHUFVUeXBl
KGNvbnN0IFN0cmluZyYpOwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGNyZWF0ZUNvbnRleHRXZWJH
UFUoY29uc3QgU3RyaW5nJik7Ci0gICAgR1BVQ2FudmFzQ29udGV4dCogZ2V0Q29udGV4dFdlYkdQ
VShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCiAgICAgc3RhdGljIGJvb2wgaXNCaXRtYXBSZW5k
ZXJlclR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
KiBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0KiBnZXRDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaWRsCmluZGV4IGM2ZjFkMGZjNDBkZWUxNTQ3Y2ZmZDdjN2NjYzQ1ZTdhY2I3MmEw
NjYuLmE2Nzc5ZmRhOTk1N2RlYmYwOTIzYzcyNWFkMjNmZWIxMGM2ODQzZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCkBAIC0zMCw5ICszMCw2IEBAIHR5cGVk
ZWYgKAogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wyKSAmJiBFTkFCTEVfV0VCR0wy
CiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBvcgotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFC
TEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCi0gICAgR1BVQ2FudmFzQ29udGV4dCBvcgogI2Vu
ZGlmCiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IG9yIAogICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCkgUmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5MmMwM2MxOWU0Zjcx
NjRlOGFkODdhODllYmQ2ZDUwNDNmNWI1Y2IyLi43MTliNjMxZTAyNTI2ODdkMDM0YzZlNDFlMWU3
ZmM5MjdkYjFjMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02NCw5ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNXZWJHTDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYkdMMigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1dlYkdM
KCkgY29uc3QgeyByZXR1cm4gaXNXZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9Ci0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHUFUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzR1BVQmFzZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCmluZGV4IGM1ODc0YzcwODc0MTc3OTAyOTQ1OGZiOTJjZWNhNmQ0NmJmNmNhMGYuLjYx
Zjc2YzFjZDU4OGY2ODcxZTYwYjM1ZWViMGJkNWVhZDVlYTVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFkaWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgpAQCAtNjIsNyArNjEsNiBAQAogI2luY2x1ZGUgIkpTSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURldmljZS5o
IgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgogI2lu
Y2x1ZGUgIlBhdHRlcm4uaCIKQEAgLTg1LDcgKzgzLDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNs
dWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
ZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTEwMSw1MyArOTgsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LXN0YXRpYyBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZShD
YW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0LCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsK
LSAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsKLSAgICAgICAgYXV0byYg
Y29udGV4dEdQVSA9IGRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpOwotICAgICAg
ICBpZiAoYXV0byogd2ViR1BVU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4oKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8qIGdwdVN3YXBDaGFpbiA9IHdlYkdQVVN3YXBDaGFpbi0+c3dh
cENoYWluKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3B1U3dhcENoYWluID09IGRldmljZS5k
ZXZpY2UoKS5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTENh
bnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2FudmFzQmFzZSgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2Fu
dmFzQmFzZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogUmVmPEluc3BlY3RvckNh
bnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoY29udGV4
dCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JDYW52YXM+IEluc3Bl
Y3RvckNhbnZhczo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc3BlY3RvckNhbnZhcyhkZXZpY2UpKTsKLX0KLSNlbmRpZgotCiBJbnNw
ZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250
ZXh0KQogICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlzIHRo
ZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KLSAgICBBU1NFUlQoIWlzPEdQVUNh
bnZhc0NvbnRleHQ+KGNvbnRleHQpKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LUluc3BlY3RvckNhbnZhczo6SW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNlKQot
ICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpKQotICAgICwgbV9jb250ZXh0KGRldmljZSkKLXsKIH0KLSNlbmRpZgogCiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQoKSBj
b25zdAogewpAQCAtMTY1LDE5ICsxMjUsNiBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9y
Q2FudmFzOjpjYW52YXNFbGVtZW50KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gJmRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0LmNhbnZhc0Jhc2UoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
ICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFw
cGVyKSAtPiBIVE1MQ2FudmFzRWxlbWVudCogewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0g
ZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52
YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbnZhc0VsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10g
KE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NiwyMiArMTMzLDYgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotV2ViR1BVRGV2aWNlKiBJbnNwZWN0b3JD
YW52YXM6OmRldmljZUNvbnRleHQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBkZXZpY2VXcmFw
cGVyID0gV1RGOjpnZXRfaWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+Piht
X2NvbnRleHQpKQotICAgICAgICByZXR1cm4gJmRldmljZVdyYXBwZXItPmdldCgpOwotICAgIHJl
dHVybiBudWxscHRyOwotfQotCi1ib29sIEluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52
YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0gICAg
aWYgKGF1dG8qIGRldmljZSA9IGRldmljZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGNhbnZh
c0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoY29udGV4dCwgKmRldmljZSk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotI2VuZGlmCi0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckNhbnZh
czo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9jb250ZXh0LApAQCAtMjA5LDEyICsxNDAsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBJbnNwZWN0b3JDYW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAg
ICAgICAgICAgYXV0byYgY29udGV4dCA9IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAgIGF1
dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gZGV2
aWNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAg
ICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1LDExICsxNzAsNiBAQCBKU0M6OkpTVmFs
dWUgSW5zcGVjdG9yQ2FudmFzOjpyZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjKSBjb25zdAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKCk7CiAg
ICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFdlYkdQVURldmljZT4gZGV2aWNlV3JhcHBlcikgewotICAgICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBkZXZpY2VXcmFwcGVyLmdldCgpKTsKLSAgICAg
ICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUoKTsKQEAg
LTI2NCwyMSArMTg0LDYgQEAgSGFzaFNldDxFbGVtZW50Kj4gSW5zcGVjdG9yQ2FudmFzOjpjbGll
bnROb2RlcygpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdyYXBw
ZXIuZ2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCkuY3NzQ2Fu
dmFzQ2xpZW50cygpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsm
XSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsK
LSAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0KLSAgICAg
ICAgICAgIEhhc2hTZXQ8RWxlbWVudCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZhc0lm
Q29udGV4dE1hdGNoZXNEZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNFbGVtZW50Q2xpZW50cy5hZGQoY2FudmFzRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtd
IChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIEhhc2hTZXQ8RWxlbWVudCo+KCk7CkBAIC0zMTcsNyArMjIyLDYgQEAgdm9p
ZCBJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSgpCiAKICAgICBhdXRvKiBjb250
ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBz
dXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGNvbnRleHQt
PnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQpAQCAtODQ0
LDcgKzc0OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oU3RyaW5nJiYg
bmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvCiAKICAgICBhdXRvKiBjb250ZXh0
ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBw
b3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGlmIChpczxJbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpICYmIHNob3VsZFNuYXBzaG90Qml0bWFw
UmVuZGVyZXJBY3Rpb24obmFtZSkpCiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVlOwpA
QCAtOTI4LDExICs4MzEsNiBAQCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJH
UFUpCi0gICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsK
LSAgICAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q2FudmFzOjpDb250ZXh0VHlwZTo6V2ViR1BV
OwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTk5NiwyOCArODk0LDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5z
cGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNlbmRpZgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZp
Y2VXcmFwcGVyKSAtPiBDb250ZXh0QXR0cmlidXRlc1R5cGUgewotICAgICAgICAgICAgYXV0byYg
ZGV2aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdCBhdXRv
JiBvcHRpb25zID0gZGV2aWNlLmFkYXB0ZXIoKS5vcHRpb25zKCkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IFByb3RvY29sOjpDYW52YXM6OkNvbnRl
eHRBdHRyaWJ1dGVzOjpjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwot
ICAgICAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBwb3dlclByZWZlcmVuY2UgPSBvcHRpb25z
LT5wb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwb3dlclBy
ZWZlcmVuY2UudmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2VyUHJl
ZmVyZW5jZTo6TG93UG93ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0QXR0cmli
dXRlc1BheWxvYWQtPnNldFBvd2VyUHJlZmVyZW5jZSgibG93LXBvd2VyIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImhpZ2gtcGVyZm9ybWFu
Y2UiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNv
bnRleHRBdHRyaWJ1dGVzUGF5bG9hZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTA0OSw3ICs5MjUsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6UmVj
b3JkaW5nPiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VPYmplY3RGb3JSZWNvcmRpbmcoKQogCiAg
ICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7
Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0
b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAK
ICAgICBQcm90b2NvbDo6UmVjb3JkaW5nOjpUeXBlIHR5cGU7CiAgICAgaWYgKGlzPENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4oY29udGV4dCkpCkBAIC0xMjgxLDcgKzExNTYsNiBAQCBSZWY8UHJv
dG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5p
dGlhbFN0YXRlKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAg
IEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIw
MTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZv
ciBXZWJHUFVEZXZpY2UKIAogICAgIGF1dG8gaW5pdGlhbFN0YXRlUGF5bG9hZCA9IFByb3RvY29s
OjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZTo6Y3JlYXRlKCkucmVsZWFzZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggOGE0N2RlYzI1YWQ2Yzg4
MzEzYzdkNGFkNmYyNTA5NjFjMDA2MmVmZi4uNmE5OWVjZmY0N2I1ODBlYzRjNjk2MTAxMGZkNjUw
MWZkYTM1MzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
aApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2Fu
dmFzR3JhZGllbnQ7CkBAIC02MCwyMCArNTYsMTIgQEAgY2xhc3MgVHlwZWRPTUNTU0ltYWdlVmFs
dWU7CiBjbGFzcyBJbnNwZWN0b3JDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNw
ZWN0b3JDYW52YXM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZhcz4g
Y3JlYXRlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
IHN0YXRpYyBSZWY8SW5zcGVjdG9yQ2FudmFzPiBjcmVhdGUoV2ViR1BVRGV2aWNlJik7Ci0jZW5k
aWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzQ29udGV4dCgp
IGNvbnN0OwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFdlYkdQVURldmljZSogZGV2aWNlQ29udGV4dCgpIGNv
bnN0OwotICAgIGJvb2wgaXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmKSBjb25zdDsKLSNlbmRpZgotCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc29sdmVD
b250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTExNSw5ICsxMDMsNiBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyhXZWJHUFVE
ZXZpY2UmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBhcHBlbmRBY3Rpb25TbmFwc2hvdElmTmVlZGVk
KCk7CiAKQEAgLTE1NSw5ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgVmFyaWFudDwKICAgICAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiwKLSNpZiBF
TkFCTEUoV0VCR1BVKQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmlj
ZT4sCi0jZW5kaWYKICAgICAgICAgTW9ub3N0YXRlCiAgICAgPiBtX2NvbnRleHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggYzEyMTUyMzA3MWEwMjY4ODhjYmQ2MDgwMzFhZDE1ZGM4NWFmMTcxOS4uZmUyMDZh
ZWEzNWU2NzkzM2UyMDE5ZmM1YWYxZTkzYWZkYTBlMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTY5LDcg
KzY5LDYgQEAKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZWJ1
Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgotI2lu
Y2x1ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5j
bHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgiCkBAIC04MCwxMCArNzksNiBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpA
QCAtMTEyMiw0MyArMTExNyw2IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dl
YkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXRUJHUFUpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBj
YW52YXNBZ2VudC0+ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2Up
Ci17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BV
RGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q29uZmlndXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5l
d1N3YXBDaGFpbikKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+d2lsbENv
bmZpZ3VyZVN3YXBDaGFpbihjb250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2aWNl
LCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2Fu
dmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKGRldmljZSwgcGlwZWxpbmUpOwotfQot
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGlu
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVUGlw
ZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT53
aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKHBpcGVsaW5lKTsKLX0KLQotSW5zdHJ1bWVudGluZ0Fn
ZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQ
VURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmlj
ZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQotI2VuZGlmCi0KIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVm
ZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAg
ICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
QW5pbWF0aW9uQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3ZDVlN2Q1N2JmOTExZmRkZjkwZWQ0MDBhMjI1
YWZhMDgzZTZjODcxLi4zMWYwNWM1MGY4MDVkYjU3OWI4YzkzMGJjOTBiOWY2MWE5MmZhYzY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC01OSwxMSArNTksNiBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52
YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNlbmRpZgotCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogY2xhc3MgU2NyaXB0QXJn
dW1lbnRzOwpAQCAtMTA0LDExICs5OSw2IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Y2xhc3MgV2ViR1BVRGV2aWNlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotI2VuZGlmCi0KIGVu
dW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogCiBzdHJ1Y3QgQ29tcHV0ZWRFZmZlY3RU
aW1pbmc7CkBAIC0zMDMsMTMgKzI5Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dl
YkdMUHJvZ3JhbURpc2FibGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dy
YW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJMRShX
RUJHUFUpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmlj
ZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmlj
ZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29u
dGV4dCYsIFdlYkdQVVN3YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGljIHZv
aWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmCiAK
ICAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJh
bWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlV2ViQW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKQEAgLTUxMywxNCArNDk2LDYgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJH
TFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3Jh
bSYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVh
dGVXZWJHUFVEZXZpY2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmKTsK
LSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFdlYkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVT
d2FwQ2hhaW5JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBHUFVDYW52YXNDb250ZXh0JiwgV2Vi
R1BVU3dhcENoYWluJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGluZSYp
OwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBXZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYpOwotI2VuZGlmCiAKICAg
ICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9uJik7CkBAIC0xNDc1LDQzICsxNDUwLDYgQEAgaW5saW5l
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVk
KFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdl
YkdQVURldmljZSYgZGV2aWNlKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2
b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmlj
ZSkpCi0gICAgICAgIGRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNlKTsK
LX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdl
YkdQVURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50cyhkZXZpY2UpKQotICAgICAgICB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoKmFn
ZW50cywgZGV2aWNlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUsIFdl
YkdQVVN3YXBDaGFpbiYgbmV3U3dhcENoYWluKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzKGNvbnRleHRHUFUuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0g
ICAgICAgIHdpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKCphZ2VudHMsIGNvbnRleHRHUFUsIG5l
d1N3YXBDaGFpbik7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQVVBpcGVs
aW5lJiBwaXBlbGluZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2UpKQot
ICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgZGV2aWNlLCBwaXBl
bGluZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHMocGlwZWxpbmUuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
LSAgICAgICAgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgcGlwZWxpbmUp
OwotfQotI2VuZGlmCi0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZm
ZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA1NGVkODQwYmUwMTgyN2Qx
NzJhNGY4ZjliMzFiOTQ0MDY2NWE3NzcwLi5hMzBlMjE2NDNhMTU3YTgyYzVkZDdlNWI0ZDg1ODQw
Yjc0ZmE1MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clNoYWRlclByb2dyYW0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIgogCi0jaWYgRU5BQkxFKFdFQkdM
KSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckNhbnZhcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9y
eS5oPgpAQCAtNDIsMTUgKzQyLDYgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2lu
Y2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5o
IgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02MiwxMyAr
NTMsNiBAQCBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6Y3JlYXRlKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dy
YW06OmNyZWF0ZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZhcyYgaW5z
cGVjdG9yQ2FudmFzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclNoYWRl
clByb2dyYW0ocGlwZWxpbmUsIGluc3BlY3RvckNhbnZhcykpOwotfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoV0VCR0wpCiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52
YXMpCiAgICAgOiBtX2lkZW50aWZpZXIoInByb2dyYW06IiArIElkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpKQpAQCAtNzksMTYgKzYzLDYgQEAgSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3Bl
Y3RvckMKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvclNoYWRlclBy
b2dyYW06Okluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJ
bnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcykKLSAgICA6IG1faWRlbnRpZmllcigicGlw
ZWxpbmU6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9jYW52YXMoaW5zcGVjdG9yQ2FudmFzKQotICAgICwgbV9wcm9ncmFtKHBpcGVsaW5lKQotewot
ICAgIEFTU0VSVChtX2NhbnZhcy5kZXZpY2VDb250ZXh0KCkpOwotfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06OnByb2dy
YW0oKSBjb25zdAogewpAQCAtOTgsMTUgKzcyLDYgQEAgV2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JT
aGFkZXJQcm9ncmFtOjpwcm9ncmFtKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLVdlYkdQVVBpcGVsaW5lKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwaXBlbGluZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHBpcGVsaW5lV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+PihtX3Byb2dyYW0pKQotICAgICAg
ICByZXR1cm4gJnBpcGVsaW5lV3JhcHBlci0+Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIHN0YXRpYyBXZWJHTFNoYWRlciogc2hhZGVy
Rm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZh
czo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewpAQCAtMTI3LDMxICs5Miw2IEBAIHN0YXRpYyBX
ZWJHTFNoYWRlciogc2hhZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNhCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1zdGF0aWMg
UmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gc2hhZGVyRm9yVHlwZShXZWJHUFVQaXBlbGluZSYg
cGlwZWxpbmUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlKQotewotICAgIHN3aXRjaCAoc2hhZGVyVHlwZSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpDb21wdXRlOgotICAgICAgICBpZiAoaXM8V2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkuY29tcHV0ZVNoYWRlcigpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2Fu
dmFzOjpTaGFkZXJUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBp
cGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVUmVu
ZGVyUGlwZWxpbmU+KHBpcGVsaW5lKS5mcmFnbWVudFNoYWRlcigpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJU
eXBlOjpWZXJ0ZXg6Ci0gICAgICAgIGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxp
bmUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihw
aXBlbGluZSkudmVydGV4U2hhZGVyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotI2Vu
ZGlmCi0KIFN0cmluZyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291cmNl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcHJvZ3JhbSwKQEAgLTE2MiwxNyArMTAyLDkgQEAg
U3RyaW5nIEluc3BlY3RvclNoYWRlclByb2dyYW06OnJlcXVlc3RTaGFkZXJTb3VyY2UoSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjoKICAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVyLT5n
ZXRTb3VyY2UoKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfSwKLSNl
bmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxXZWJHUFVQaXBlbGluZT4gcGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAgICAgICAgICBhdXRv
JiBwaXBlbGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChhdXRv
IHNoYWRlciA9IHNoYWRlckZvclR5cGUocGlwZWxpbmUsIHNoYWRlclR5cGUpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBzaGFkZXItPnNvdXJjZSgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgICAgICB9LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSB7Ci0jaWYg
RU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CkBAIC0yMDEsMjQgKzEzMyw5IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0sCi0jZW5k
aWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAgICAgICAgICAgYXV0byYg
cGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoYXV0byog
ZGV2aWNlID0gbV9jYW52YXMuZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHBpcGVsaW5lLmNsb25lU2hhZGVyTW9kdWxlcygqZGV2aWNlKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBzaGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJUeXBl
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyLT51cGRhdGUoKmRldmljZSwgc291
cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlbGluZS5yZWNvbXBpbGUoKmRl
dmljZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25v
c3RhdGUpIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyOCwzMSArMTQ1LDE1IEBAIGJvb2wgSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
U2hhZGVyVHlwCiAKIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclByb2dy
YW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSgp
CiB7Ci0gICAgYm9vbCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IGZhbHNlOwotCiAgICAg
dXNpbmcgUHJvZ3JhbVR5cGVUeXBlID0gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpDYW52YXM6OlByb2dyYW1UeXBlPjsKICAgICBhdXRvIHByb2dyYW1UeXBlID0gV1RGOjpzd2l0
Y2hPbihtX3Byb2dyYW0sCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBbJl0gKHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKICAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpS
ZW5kZXI7CiAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBb
Jl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBl
cikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSAgICAgICAgICAgIGF1dG8mIHBpcGVsaW5lID0gcGlw
ZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVUNvbXB1dGVQaXBl
bGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpDb21wdXRlOwotICAgICAgICAgICAgaWYgKGlzPFdl
YkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBy
ZW5kZXJQaXBlbGluZSA9IGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlclBpcGVsaW5lLnZlcnRleFNoYWRlcigpID09IHJl
bmRlclBpcGVsaW5lLmZyYWdtZW50U2hhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAgIHNoYXJl
c1ZlcnRleEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVyOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwKICNlbmRp
ZgogICAgICAgICBbJl0gKE1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSNpZiBFTkFC
TEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yNjgsMTEgKzE2OSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
YW52YXM6OlNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqCiAg
ICAgICAgIC5zZXRQcm9ncmFtVHlwZShwcm9ncmFtVHlwZS52YWx1ZSgpKQogICAgICAgICAuc2V0
Q2FudmFzSWQobV9jYW52YXMuaWRlbnRpZmllcigpKQogICAgICAgICAucmVsZWFzZSgpOwotICAg
IGlmIChzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcikKLSAgICAgICAgcGF5bG9hZC0+c2V0U2hh
cmVzVmVydGV4RnJhZ21lbnRTaGFkZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHBheWxvYWQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5B
QkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAppbmRleCBjY2M3M2NlZjM3NDY3
MDY3MGQ1OTZhOTNiMzJmZTA5YTU1ZDQzNWJiLi5jOTJkZWJiNzdjYzQ1MThjNDE1YmQzYWZiMzAz
YjJmMzcxNGMyOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTaGFkZXJQcm9ncmFtLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQxLDE4ICs0MSwxMSBAQCBjbGFzcyBXZWJHTFByb2dy
YW07CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotY2xhc3MgV2ViR1BVUGlwZWxpbmU7Ci0jZW5kaWYKLQogY2xhc3MgSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclNoYWRl
clByb2dyYW0+IHsKIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGljIFJlZjxJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBjcmVhdGUoV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2Fu
dmFzJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2FudmFz
Jik7Ci0jZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogICAgIEluc3BlY3RvckNhbnZhcyYgY2FudmFzKCkgY29uc3Qg
eyByZXR1cm4gbV9jYW52YXM7IH0KQEAgLTYwLDkgKzUzLDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShXRUJHTCkKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0oKSBjb25zdDsKICNlbmRpZgotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgV2ViR1BVUGlwZWxpbmUqIHBpcGVsaW5lKCkgY29uc3Q7Ci0j
ZW5kaWYKIAogICAgIFN0cmluZyByZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNhbnZhczo6U2hhZGVyVHlwZSk7CiAgICAgYm9vbCB1cGRhdGVTaGFkZXIoSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CkBA
IC03OSw5ICs2OSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3BlY3Rv
clNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlw
ZWxpbmUmLCBJbnNwZWN0b3JDYW52YXMmKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKICAgICBJbnNwZWN0b3JDYW52YXMmIG1fY2FudmFzOwpAQCAtODksOSArNzYsNiBAQCBw
cml2YXRlOgogICAgIFZhcmlhbnQ8CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiwKICNlbmRp
ZgogICAgICAgICBXVEY6Ok1vbm9zdGF0ZQogICAgID4gbV9wcm9ncmFtOwpAQCAtMTAyLDQgKzg2
LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKaW5kZXggYTQwMmMzYjk4NDAzMGNmMGY4ZGQ2NWI2ZTEzYjkwOGZiZmJmOTZh
My4uNTlmNGQzOWI1YTcxOWUzZTE3ZTU3MzhmMmM2N2VmYzM4ZWFlNDMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHUFVDYW52YXNDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjgsMTEgKzY3
LDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2Vi
R0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2
aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0
b3J5Lmg+CkBAIC0xMDAsOSArOTQsOSBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNw
ZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2FudmFzRGVzdHJveWVk
VGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJG
aXJlZCkKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdF
QkdMKQogICAgICwgbV9wcm9ncmFtRGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cHJvZ3JhbURlc3Ryb3llZFRpbWVyRmlyZWQpCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIHsKIH0KIApA
QCAtMTQxLDI3ICsxMzUsMTIgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CiAgICAgICAgIGZvciAo
YXV0byogY29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7Ci0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQiIGZv
ciBXZWJHUFUgaXMgdGhlIGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgotICAgICAg
ICAgICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAgICAgICAgIGlmIChl
eGlzdHNJbkN1cnJlbnRQYWdlKGNvbnRleHQtPmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKQogICAgICAgICAgICAgICAgIGJpbmRDYW52YXMoKmNvbnRleHQsIGZhbHNlKTsK
ICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAg
Zm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7Ci0gICAgICAg
ICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpCi0gICAgICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEVOQUJMRShXRUJH
TCkKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3RhbmNl
c0xvY2soKSB9OwpAQCAtMTcyLDE2ICsxNTEsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB9CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICB7Ci0gICAgICAgIExvY2tlciBs
b2NrZXIgeyBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGZvciAo
YXV0byYgW3BpcGVsaW5lLCBkZXZpY2VdIDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpKSB7
Ci0gICAgICAgICAgICBpZiAoZGV2aWNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNlLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICYmIHBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKmRldmljZSwgKnBpcGVsaW5lKTsKLSAg
ICAgICAgfQotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAgICAgcmV0dXJuIHsg
fTsKIH0KIApAQCAtMjk3LDcgKzI2Niw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAKICAg
ICBhdXRvKiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAKLSAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3Rvcjog
Q2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRl
ZCJfcyk7CiAKQEAgLTMyNCw3ICsyOTIsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2NvbAogCiAg
ICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwogCi0g
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6
IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0
ZWQiX3MpOwogCkBAIC0zMzYsNyArMzAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJvdG9jb2wKICAg
ICByZXR1cm4geyB9OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQor
I2lmIEVOQUJMRShXRUJHTCkKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkNhbnZh
czo6UHJvZ3JhbUlkJiBwcm9ncmFtSWQsIFByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hh
ZGVyVHlwZSkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0z
NjYsNyArMzMzLDYgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihjb25zdCBQcm90b2NvbDoKICAgICByZXR1cm4geyB9Owog
fQogCi0jaWYgRU5BQkxFKFdFQkdMKQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBQcm90b2Nv
bDo6Q2FudmFzOjpQcm9ncmFtSWQmIHByb2dyYW1JZCwgYm9vbCBkaXNhYmxlZCkKIHsKICAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zOTMsNyArMzU5LDYgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRl
clByb2dyYW1IaWdobGlnaHRlZCgKICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCiAKIHZv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsK
QEAgLTQ1MCwxNyArNDE1LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ2hhbmdl
Q2FudmFzTWVtb3J5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JDYW52YXM7CiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkgewotICAgICAgICBmb3Ig
KGF1dG8mIGl0ZW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgaWYgKGl0ZW0tPmlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChjb250ZXh0KSkg
ewotICAgICAgICAgICAgICAgIGluc3BlY3RvckNhbnZhcyA9IGl0ZW07Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAg
IGlmICghaW5zcGVjdG9yQ2FudmFzKQogICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5z
cGVjdG9yQ2FudmFzKGNvbnRleHQpOwogCkBAIC02MTcsNjkgKzU3MSw2IEBAIGJvb2wgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xQcm9ncmFtJiBw
cm9ncmFtKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVEZXZpY2UoV2ViR1BV
RGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNlKSkg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGJpbmRDYW52YXMoZGV2aWNlLCB0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17
Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRldmljZSk7
Ci0gICAgQVNTRVJUKGluc3BlY3RvckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDYW52YXMp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVuYmluZENhbnZhcygqaW5zcGVjdG9yQ2FudmFzKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihH
UFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFp
bikKLXsKLSAgICBhdXRvIG5vdGlmeURldmljZUZvclN3YXBDaGFpbiA9IFsmXSAoV2ViR1BVU3dh
cENoYWluJiB3ZWJHUFVTd2FwQ2hhaW4pIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JD
YW52YXMgOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8qIGRldmljZSA9IGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRldmljZS0+ZGV2aWNlKCkuc3dhcENoYWluKCkgPT0g
d2ViR1BVU3dhcENoYWluLnN3YXBDaGFpbigpKQotICAgICAgICAgICAgICAgICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+Y2xpZW50Tm9kZXNDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+aWRlbnRp
ZmllcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAoYXV0
byogZXhpc3RpbmdTd2FwQ2hhaW4gPSBjb250ZXh0R1BVLnN3YXBDaGFpbigpKQotICAgICAgICBu
b3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4oKmV4aXN0aW5nU3dhcENoYWluKTsKLQotICAgIG5vdGlm
eURldmljZUZvclN3YXBDaGFpbihuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwg
V2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0g
ZmluZEluc3BlY3RvckNhbnZhcyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMp
OwotICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQocGlwZWxpbmUuaXNWYWxpZCgpKTsKLQotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbVJlZiA9
IEluc3BlY3RvclNoYWRlclByb2dyYW06OmNyZWF0ZShwaXBlbGluZSwgKmluc3BlY3RvckNhbnZh
cyk7Ci0gICAgYXV0byYgaW5zcGVjdG9yUHJvZ3JhbSA9IGluc3BlY3RvclByb2dyYW1SZWYuZ2V0
KCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnNldChpbnNwZWN0b3JQcm9n
cmFtLmlkZW50aWZpZXIoKSwgV1RGTW92ZShpbnNwZWN0b3JQcm9ncmFtUmVmKSk7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnByb2dyYW1DcmVhdGVkKGluc3BlY3RvclByb2dyYW0uYnVpbGRP
YmplY3RGb3JTaGFkZXJQcm9ncmFtKCkpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsK
LSAgICBhdXRvIGluc3BlY3RvclByb2dyYW0gPSBmaW5kSW5zcGVjdG9yUHJvZ3JhbShwaXBlbGlu
ZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1
bmJpbmRQcm9ncmFtKCppbnNwZWN0b3JQcm9ncmFtKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQotCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVudFR5cGUp
IFwKIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50
KSBcCiB7IFwKQEAgLTcxNSw3ICs2MDYsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQwogCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBpbnNwZWN0
b3JDYW52YXMtPmNhbnZhc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNh
bnZhc1JlbmRlcmluZ0NvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0
IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgICAgICAgICAgICAgICAg
ICBpZiAoY2FudmFzUmVuZGVyaW5nQ29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNo
UmVjb3JkaW5nQ2FudmFzRnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwpAQCAtNzM4LDcg
KzYyOCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKEluc3Bl
Y3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzLCBQcm90CiB7CiAgICAgYXV0byogY29udGV4dCA9
IGluc3BlY3RvckNhbnZhcy5jYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwot
ICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9y
OiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAg
ICAgaWYgKCFpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpCiAgICAgICAgICYm
ICFpczxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpCkBAIC03NzcsNyArNjY2
LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJGaXJl
ZCgpCiAgICAgbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAotI2lmIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIElu
c3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpCiB7CiAgICAg
aWYgKCFtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuc2l6ZSgpKQpAQCAtNzg4LDcgKzY3Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZpcmVk
KCkKIAogICAgIG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwogfQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKIHsKQEAgLTgwMiwxMiAr
NjkxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKICAgICBpZiAobV9j
YW52YXNEZXN0cm95ZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NhbnZhc0Rlc3Ryb3ll
ZFRpbWVyLnN0b3AoKTsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLmNsZWFy
KCk7CiAgICAgbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAgaWYgKG1f
cHJvZ3JhbURlc3Ryb3llZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcHJvZ3JhbURlc3Ry
b3llZFRpbWVyLnN0b3AoKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJH
UFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgbV9yZWNvcmRpbmdDYW52YXNJZGVu
dGlmaWVycy5jbGVhcigpOwogfQpAQCAtODM2LDE4ICs3MjUsNiBAQCBJbnNwZWN0b3JDYW52YXMm
IEluc3BlY3RvckNhbnZhc0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
IGNvbnRleAogICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXM7CiB9CiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotSW5zcGVjdG9yQ2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZhcyhX
ZWJHUFVEZXZpY2UmIGRldmljZSwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKQotewotICAgIGF1dG8g
aW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoZGV2aWNlKTsKLSAgICBt
X2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlm
aWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCkpOwotCi0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmNhbnZhc0FkZGVkKGluc3BlY3RvckNhbnZhcy0+YnVpbGRPYmplY3RGb3JDYW52YXMo
Y2FwdHVyZUJhY2t0cmFjZSkpOwotCi0gICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1bmJp
bmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiB7CiAjaWYgRU5BQkxF
KFdFQkdMKQpAQCAtODk1LDE4ICs3NzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNwZWN0
b3JDYW52YXM+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFzKFdlYkdQ
VURldmljZSYgZGV2aWNlKQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFzIDogbV9p
ZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGluc3Bl
Y3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgpID09ICZkZXZpY2UpCi0gICAgICAgICAgICByZXR1
cm4gaW5zcGVjdG9yQ2FudmFzOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQotCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQorI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVuYmluZFBy
b2dyYW0oSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSYgaW5zcGVjdG9yUHJvZ3JhbSkKIHsKICAgICBT
dHJpbmcgaWRlbnRpZmllciA9IGluc3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpOwpAQCAtOTMx
LDcgKzc5Nyw2IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShQcm90CiAgICAgcmV0dXJuIGluc3BlY3Rv
clByb2dyYW07CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCiBSZWZQdHI8SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dyYW0gOiBt
X2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0udmFsdWVzKCkpIHsKQEAgLTk0MiwxNiArODA3
LDQgQEAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50
OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHTFAKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IElu
c3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYg
cGlwZWxpbmUpCi17Ci0gICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9pZGVudGlm
aWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpbnNwZWN0b3JQ
cm9ncmFtLT5waXBlbGluZSgpID09ICZwaXBlbGluZSkKLSAgICAgICAgICAgIHJldHVybiBpbnNw
ZWN0b3JQcm9ncmFtOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGQ3YmRlZjNjODQ0NTU1
MjU1ZGM2ZDIyZjYyZjI3OTg3OTI2ZDUzMjMuLjdmMTAxMmFhMmEyNGY2ODJjZjY4OTFkMTM2NmRk
NGQyNjE1NzMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTQ0LDE5ICs0NCwxMSBAQCBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQotY2xh
c3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTsKICNpZiBFTkFCTEUoV0VCR0wpCitjbGFzcyBJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFz
cyBXZWJHUFVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKIAog
Y2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRC
YXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIsIHB1
YmxpYyBDYW52YXNPYnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEluc3BlY3RvckNhbnZh
c0FnZW50PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ2FudmFzQWdlbnQp
OwpAQCAtODAsMTQgKzcyLDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IHNldFJlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudChpbnQp
OwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnRSZWNv
cmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIHN0ZDo6
b3B0aW9uYWw8aW50PiYmIGZyYW1lQ291bnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1lbW9yeUxp
bWl0KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BS
ZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYpOwot
I2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IHJlcXVlc3RTaGFk
ZXJTb3VyY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gdXBkYXRlU2hhZGVyKGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2Fu
dmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0jaWYgRU5BQkxFKFdFQkdM
KQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hhZGVy
UHJvZ3JhbURpc2FibGVkKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3Jh
bUlkJiwgYm9vbCBkaXNhYmxlZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBib29sIGhpZ2hsaWdodGVkKTsKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQogCiAgICAgLy8gQ2FudmFzT2JzZXJ2ZXIKICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2FudmFz
QmFzZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwpAQCAtMTA5LDEz
ICs5OSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQoV2ViR0xQ
cm9ncmFtJik7CiAgICAgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUHJvZ3Jh
bSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHZv
aWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQgd2lsbERl
c3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgdm9pZCB3aWxsQ29uZmlndXJl
U3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICB2b2lk
IGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7
Ci0gICAgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJik7Ci0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUpIFwK
QEAgLTEzNCwzMiArMTE3LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhJ
bnNwZWN0b3JDYW52YXMmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRv
ciwgUmVjb3JkaW5nT3B0aW9ucyYmID0geyB9KTsKIAogICAgIHZvaWQgY2FudmFzRGVzdHJveWVk
VGltZXJGaXJlZCgpOwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBF
TkFCTEUoV0VCR0wpCiAgICAgdm9pZCBwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpOwotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKFdlYkdQVURl
dmljZSYsIGJvb2wgY2FwdHVyZUJhY2t0cmFjZSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ICAgICB2b2lkIHVuYmluZENhbnZhcyhJbnNwZWN0b3JDYW52YXMmKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yQ2FudmFzPiBhc3NlcnRJbnNwZWN0b3JDYW52YXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yQ2FudmFzPiBmaW5kSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZpbmRJbnNw
ZWN0b3JDYW52YXMoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAot
I2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdm9pZCB1bmJpbmRQcm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mKTsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkKTsKLSNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGZpbmRJ
bnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBm
aW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTE3MSwxMSArMTQzLDExIEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnM7CiAgICAg
VGltZXIgbV9jYW52YXNEZXN0cm95ZWRUaW1lcjsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5B
QkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPj4gbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFt
OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVyczsKICAgICBU
aW1lciBtX3Byb2dyYW1EZXN0cm95ZWRUaW1lcjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8
IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cm9jZXNzV2FybWluZy5jcHAKaW5kZXggYzNhYWM1NGM1N2YyNDA3YjM4ZjAzNmQ4NjUxNWRmYjIw
YWRiZjQ5MS4uMGMzMGQ5YjgwMmMxNmU1NTNiMzg4NWZjZjU1YTdkMGVjZmQwNDMzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTQyLDExICs0Miw2IEBACiAjaW5j
bHVkZSAiWE1MTlNOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAKLSNpZiBFTkFCTEUo
R1BVX0RSSVZFUl9QUkVXQVJNSU5HKQotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUg
IkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBQcm9jZXNzV2FybWluZzo6aW5pdGlhbGl6ZU5hbWVzKCkKQEAgLTc5LDEwICs3
NCw2IEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAjaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIFRlbGVwaG9uZU51bWJlckRldGVjdG9y
OjpwcmV3YXJtKCk7CiAjZW5kaWYKLQotI2lmIEVOQUJMRShHUFVfRFJJVkVSX1BSRVdBUk1JTkcp
Ci0gICAgR1BVRGV2aWNlOjpwcmV3YXJtKCk7Ci0jZW5kaWYKIH0KIAogV2ViQ29yZTo6UHJld2Fy
bUluZm9ybWF0aW9uIFByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAwNzA4NDdjMTM0YjU2MTYzZjRhMDYxMzkz
OThmMDNhMDU1OWE4NzhiLi44MjM1ODQzZmE1MTI5NTVjN2NlYjVlZmRmY2RmOTNkZTRhNTllMjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjAsNyArMTIwLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIE0oVmlld3BvcnRzKSBcCiAgICAgTShXZWJBdWRpbykgXAogICAg
IE0oV2ViR0wpIFwKLSAgICBNKFdlYkdQVSkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJS
VENTdGF0cykgXAogICAgIE0oWFIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0K
aW5kZXggNWE2MGJjYzFlNmI1MzJhNjFkNDhhY2MzNDRiYmFhMmFmOGQwMTZkZC4uMDJhMjZkNTdi
NTVlY2FkZTQzYzVmMmVlMzk1ZjgzMzI5MjY4NzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0KQEAgLTU3LDEwICs1Nyw2IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIldB
S1dpbmRvdy5oIgpAQCAtMjE4LDExICsyMTQsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0Zgog
ICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQogICAgICAg
ICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdQVUxheWVyIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0jZW5kaWYK
LQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTI3NSw3ICsyNjYsNyBAQCBQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVy
VHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0
QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZv
cm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzIG9yIFdlYkdQVUxheWVy
cy4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMjhmNzNhMDg2MWQxNTJiNzEzY2ViOWU5MzMyODNjYTgy
NmE1ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBHUFVTd2FwQ2hhaW47Ci19Ci0KLUBpbnRlcmZhY2UgV2ViR1BVTGF5ZXIgOiBD
QU1ldGFsTGF5ZXIgewotICAgIFdlYkNvcmU6OkdQVVN3YXBDaGFpbiogX3N3YXBDaGFpbjsKLSAg
ICBmbG9hdCBfZGV2aWNlU2NhbGVGYWN0b3I7Ci19Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBX
ZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbjsKLQotLSAoQ0dJbWFnZVJlZiljb3B5SW1h
Z2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKLQot
QGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNl
MjM4MmU0ZWJiMmMxZjAwZjliYmNkMzVlMGU2MDJkYjljYTQ2OGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5o
IgotCi1AaW1wbGVtZW50YXRpb24gV2ViR1BVTGF5ZXIKLQotQHN5bnRoZXNpemUgc3dhcENoYWlu
ID0gX3N3YXBDaGFpbjsKLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
Ci0KLSAgICAvLyBGSVhNRTogV2ViR1BVIC0gaGFuZGxlIHJldGluYSBjb3JyZWN0bHkuCi0gICAg
X2RldmljZVNjYWxlRmFjdG9yID0gMTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzZWxmLmNv
bnRlbnRzU2NhbGUgPSBfZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgc2VsZi5jb2xvcnNwYWNlID0g
V2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIHJldHVybiBzZWxmOwot
fQotCi0tIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29s
b3JTcGFjZVJlZiljb2xvclNwYWNlCi17Ci0gICAgaWYgKCFfc3dhcENoYWluKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjI5MmYxMzQ0YjU0YjIyYjllOWQ4MWYxOTE2ZmJmYjIxMjExODE2YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiR1BV
QnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRl
eHR1cmUuaCIKLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3I7Ci0KLXVz
aW5nIEFyZ3VtZW50QnVmZmVyID0gc3RkOjpwYWlyPGNvbnN0IFBsYXRmb3JtQnVmZmVyKiwgY29u
c3QgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMmPjsKLQotY2xh
c3MgR1BVQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdyb3VwPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZShjb25zdCBHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yJiwgR1BVQmluZEdyb3VwQWxsb2NhdG9yJik7Ci0KLSAgICB+R1BV
QmluZEdyb3VwKCk7Ci0gICAgCi0gICAgY29uc3QgQXJndW1lbnRCdWZmZXIgYXJndW1lbnRCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiB7IG1fYWxsb2NhdG9yLT5hcmd1bWVudEJ1ZmZlcigpLCBtX2Fy
Z3VtZW50QnVmZmVyT2Zmc2V0cyB9OyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVQnVmZmVy
Pj4mIGJvdW5kQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRCdWZmZXJzOyB9Ci0gICAg
Y29uc3QgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiBib3VuZFRleHR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZFRleHR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVQmluZEdyb3VwKEdQ
VUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYsIEdQVUJpbmRHcm91
cEFsbG9jYXRvciYsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYsIEhhc2hTZXQ8UmVmPEdQVVRl
eHR1cmU+PiYmKTsKLSAgICAKLSAgICBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVm
ZmVyT2Zmc2V0cyBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0czsKLSAgICBSZWY8R1BVQmluZEdyb3Vw
QWxsb2NhdG9yPiBtX2FsbG9jYXRvcjsKLSAgICBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiBtX2Jv
dW5kQnVmZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gbV9ib3VuZFRleHR1cmVz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Yzg0MzE5N2JmMzMyODMwMjMxNDM0N2IzNzgzZGE4NzRhZjYzNTQwNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5o
IgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1jbGFzcyBHUFVC
aW5kR3JvdXBBbGxvY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCaW5kR3JvdXBBbGxvY2F0
b3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gY3Jl
YXRlKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBzdHJ1Y3QgQXJndW1lbnRCdWZmZXJPZmZzZXRz
IHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gdmVydGV4
OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0PiBmcmFnbWVu
dDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0
ZTsKLSAgICB9OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRC
dWZmZXJPZmZzZXRzPiBhbGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFyZ3VtZW50RW5jb2RlciAq
dmVydGV4LCBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExBcmd1bWVudEVuY29kZXIg
KmNvbXB1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lkIHRyeVJlc2V0KCk7Ci0KLSAgICBjb25zdCBQ
bGF0Zm9ybUJ1ZmZlciogYXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50
QnVmZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVQmluZEdyb3VwQWxs
b2NhdG9yKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBib29sIHJlYWxsb2NhdGUoUGxhdGZvcm1H
UFVCdWZmZXJPZmZzZXQpOwotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX2FyZ3VtZW50
QnVmZmVyOwotICAgIFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0IG1fbGFzdE9mZnNldCB7IDAgfTsK
LQotICAgIFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLSAgICBpbnQgbV9udW1C
aW5kR3JvdXBzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3MmMzYTIzNjY4ODc1NmE3ZmNjZThjMzQzZTBmNWRmNjNhZmIxYWQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIkdQ
VVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVCaW5kaW5nUmVzb3VyY2Ug
PSBWYXJpYW50PFJlZjxjb25zdCBHUFVTYW1wbGVyPiwgUmVmPEdQVVRleHR1cmU+LCBHUFVCdWZm
ZXJCaW5kaW5nPjsKLQotc3RydWN0IEdQVUJpbmRHcm91cEJpbmRpbmcgewotICAgIHVuc2lnbmVk
IGJpbmRpbmc7Ci0gICAgR1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA4YTk3OGE5ZTg2
YTFlYjk2ZTJmY2ZkZTk0NWJjZmNhZWFkNTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5o
IgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIFJl
Zjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKLSAgICBWZWN0b3I8R1BVQmluZEdy
b3VwQmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMDE2ZmM5ODQ4MWUxYzQ3ODI1ZjUwODNlZmZlMjZkY2U4NjZhODUyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVEZXZpY2U7Ci0KLWNsYXNzIEdQVUJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVUJpbmRHcm91cExheW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQmlu
ZEdyb3VwTGF5b3V0PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciYpOwotCi0gICAgc3RydWN0IFVuaWZvcm1CdWZmZXIgewotICAg
ICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBE
eW5hbWljVW5pZm9ybUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFt
ZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFNhbXBsZXIgewotICAgIH07Ci0KLSAgICBzdHJ1Y3Qg
U2FtcGxlZFRleHR1cmUgewotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU3RvcmFnZUJ1ZmZlciB7Ci0g
ICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAgc3RydWN0
IER5bmFtaWNTdG9yYWdlQnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhO
YW1lOwotICAgIH07Ci0KLSAgICB1c2luZyBJbnRlcm5hbEJpbmRpbmdEZXRhaWxzID0gVmFyaWFu
dDxVbmlmb3JtQnVmZmVyLCBEeW5hbWljVW5pZm9ybUJ1ZmZlciwgU2FtcGxlciwgU2FtcGxlZFRl
eHR1cmUsIFN0b3JhZ2VCdWZmZXIsIER5bmFtaWNTdG9yYWdlQnVmZmVyPjsKLQotICAgIHN0cnVj
dCBCaW5kaW5nIHsKLSAgICAgICAgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyBleHRlcm5hbEJp
bmRpbmc7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTmFtZTsKLSAgICAgICAgSW50ZXJuYWxC
aW5kaW5nRGV0YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzOwotICAgIH07Ci0KLSAgICB1c2lu
ZyBCaW5kaW5nc01hcFR5cGUgPSBIYXNoTWFwPHVpbnQ2NF90LCBCaW5kaW5nLCBXVEY6OkludEhh
c2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90
Pj47Ci0gICAgY29uc3QgQmluZGluZ3NNYXBUeXBlJiBiaW5kaW5nc01hcCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmluZGluZ3NNYXA7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQXJndW1lbnRFbmNv
ZGVyICp2ZXJ0ZXhFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhFbmNvZGVyLmdldCgp
OyB9Ci0gICAgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudEVuY29kZXIoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYWdtZW50RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAq
Y29tcHV0ZUVuY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVFbmNvZGVyLmdldCgpOyB9
Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkKLSAgICBH
UFVCaW5kR3JvdXBMYXlvdXQoQmluZGluZ3NNYXBUeXBlJiYsIFJldGFpblB0cjxNVExBcmd1bWVu
dEVuY29kZXI+JiYgdmVydGV4LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIGZyYWdt
ZW50LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIGNvbXB1dGUpOwotCi0gICAgUmV0
YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gbV92ZXJ0ZXhFbmNvZGVyOwotICAgIFJldGFpblB0
cjxNVExBcmd1bWVudEVuY29kZXI+IG1fZnJhZ21lbnRFbmNvZGVyOwotICAgIFJldGFpblB0cjxN
VExBcmd1bWVudEVuY29kZXI+IG1fY29tcHV0ZUVuY29kZXI7Ci0jZW5kaWYgLy8gVVNFKE1FVEFM
KQotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSBtX2JpbmRpbmdzTWFwOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMzNhYzJlOWFjZDE1YzIwYzYx
YzgwMDAxOWU5Yjk4YmQ1ZmQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmRE
ZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWVudW0gY2xhc3MgR1BVQmxlbmRGYWN0b3IgewotICAgIFplcm8sCi0gICAgT25lLAotICAg
IFNyY0NvbG9yLAotICAgIE9uZU1pbnVzU3JjQ29sb3IsCi0gICAgU3JjQWxwaGEsCi0gICAgT25l
TWludXNTcmNBbHBoYSwKLSAgICBEc3RDb2xvciwKLSAgICBPbmVNaW51c0RzdENvbG9yLAotICAg
IERzdEFscGhhLAotICAgIE9uZU1pbnVzRHN0QWxwaGEsCi0gICAgU3JjQWxwaGFTYXR1cmF0ZWQs
Ci0gICAgQmxlbmRDb2xvciwKLSAgICBPbmVNaW51c0JsZW5kQ29sb3IsCi19OwotCi1lbnVtIGNs
YXNzIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICBBZGQsCi0gICAgU3VidHJhY3QsCi0gICAgUmV2
ZXJzZVN1YnRyYWN0LAotICAgIE1pbiwKLSAgICBNYXgsCi19OwotCi1zdHJ1Y3QgR1BVQmxlbmRE
ZXNjcmlwdG9yIHsKLSAgICBHUFVCbGVuZEZhY3RvciBzcmNGYWN0b3I7Ci0gICAgR1BVQmxlbmRG
YWN0b3IgZHN0RmFjdG9yOwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTc1NTk0NzEzMzAyZDA5MzdjZGU4NDgxZTVh
MzQzOGZjMmY3N2RmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjpQZW5kaW5nTWFwcGluZ0NhbGxiYWNrOjpQ
ZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIHBlbmRpbmcpCi0gICAgOiBj
YWxsYmFjayhXVEZNb3ZlKHBlbmRpbmcpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MzVhNWMzYWZjNGM4NjIyZWQzNjA0ZGFmZWYyMzZjZDcyMjVlMmM2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5oIgotI2lu
Y2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgR1BVQnVmZmVy
RGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247Ci0KLWNsYXNz
IEdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlcj4gewotcHVibGljOgotICAg
IGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBNYXBwZWQsCi0gICAgICAgIFVubWFwcGVkLAot
ICAgICAgICBEZXN0cm95ZWQKLSAgICB9OwotCi0gICAgfkdQVUJ1ZmZlcigpOwotCi0gICAgc3Rh
dGljIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZShHUFVEZXZpY2UmLCBjb25zdCBHUFVCdWZm
ZXJEZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3BlcyYpOwot
Ci0gICAgUGxhdGZvcm1CdWZmZXIqIHBsYXRmb3JtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybUJ1ZmZlci5nZXQoKTsgfQotICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc0NvcHlTb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7
IH0KLSAgICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5j
b250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNvcHlEZXN0aW5hdGlvbik7IH0KLSAgICBi
b29sIGlzSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6SW5kZXgpOyB9Ci0gICAgYm9vbCBpc1ZlcnRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgpOyB9Ci0gICAg
Ym9vbCBpc1VuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZl
clVzYWdlOjpGbGFnczo6VW5pZm9ybSk7IH0KLSAgICBib29sIGlzU3RvcmFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKTsg
fQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwotICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnNBbnkoeyBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6
Ok1hcFdyaXRlLCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQgfSk7IH0KLSAgICB1bnNp
Z25lZCBwbGF0Zm9ybVVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVVzYWdlOyB9Ci0g
ICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKLQotICAgIEpTQzo6QXJyYXlCdWZmZXIqIG1hcE9uQ3Jl
YXRpb24oKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21taXR0
ZWQoTVRMQ29tbWFuZEJ1ZmZlciAqKTsKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21wbGV0ZWQo
KTsKLSNlbmRpZgotCi0gICAgdXNpbmcgTWFwcGluZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKEpTQzo6QXJyYXlCdWZmZXIqKT47Ci0gICAgdm9pZCByZWdpc3Rlck1hcHBpbmdDYWxsYmFj
ayhNYXBwaW5nQ2FsbGJhY2smJiwgYm9vbCwgR1BVRXJyb3JTY29wZXMmKTsKLSAgICB2b2lkIHVu
bWFwKEdQVUVycm9yU2NvcGVzKik7Ci0gICAgdm9pZCBkZXN0cm95KEdQVUVycm9yU2NvcGVzKik7
Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxQZW5kaW5nTWFwcGluZ0NhbGxiYWNrPiB7Ci0gICAgICAgIHN0YXRpYyBSZWY8
UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gY3JlYXRlKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNr
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nTWFw
cGluZ0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBN
YXBwaW5nQ2FsbGJhY2sgY2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5n
TWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmKTsKLSAgICB9OwotCi0gICAgR1BVQnVm
ZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQdHImJiwgR1BVRGV2aWNlJiwgc2l6ZV90LCBPcHRpb25T
ZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uKTsKLSAgICBz
dGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURldmljZSYsIE9wdGlvblNl
dDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgSlNDOjpB
cnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvclJlYWQoKTsKLSAgICBKU0M6OkFycmF5QnVmZmVy
KiBzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKTsKLSAgICB2b2lkIHJ1bk1hcHBpbmdDYWxsYmFjaygp
OwotICAgIHZvaWQgY29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyopOwotCi0g
ICAgYm9vbCBpc01hcFdyaXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlKTsgfQotICAgIGJvb2wgaXNNYXBSZWFkKCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJl
YWQpOyB9Ci0gICAgYm9vbCBpc01hcFdyaXRlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzTWFwV3Jp
dGUoKSAmJiBzdGF0ZSgpID09IFN0YXRlOjpVbm1hcHBlZDsgfQotICAgIGJvb2wgaXNNYXBSZWFk
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzTWFwUmVhZCgpICYmIHN0YXRlKCkgPT0gU3RhdGU6OlVu
bWFwcGVkOyB9Ci0KLSAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG1fcGxhdGZvcm1CdWZmZXI7
Ci0gICAgUmVmPEdQVURldmljZT4gbV9kZXZpY2U7Ci0KLSAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gbV9zdGFnaW5nQnVmZmVyOwotICAgIFJlZlB0cjxQZW5kaW5nTWFwcGluZ0NhbGxiYWNr
PiBtX21hcHBpbmdDYWxsYmFjazsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgbV9tYXBw
aW5nQ2FsbGJhY2tUYXNrOwotCi0gICAgc2l6ZV90IG1fYnl0ZUxlbmd0aDsKLSAgICBPcHRpb25T
ZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVuc2lnbmVkIG1fcGxhdGZv
cm1Vc2FnZTsKLSAgICB1bnNpZ25lZCBtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzIHsgMCB9
OwotICAgIGJvb2wgbV9pc01hcHBlZEZyb21DcmVhdGlvbiB7IGZhbHNlIH07Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJCaW5kaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNmVlMDExMTAxZDQ3YzA0MWI1Zjk2
OTUwNjgzZTRkODNlYzZkYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJp
bmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQ
VUJ1ZmZlckJpbmRpbmcgewotICAgIFJlZjxHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1aW50NjRf
dCBvZmZzZXQ7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIwNzJkOWVmZjAyN2QyOWU5Mzc3OWJjOGYwNmJkNjQy
YzQzODU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlclVzYWdlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3IgewotICAg
IHVpbnQ2NF90IHNpemU7Ci0gICAgR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZTsKLX07Ci0KLWVu
dW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIHsKLSAgICBJc01hcHBlZCwKLSAgICBOb3RN
YXBwZWQKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQnVmZmVyVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXJVc2FnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGUxNDFlOGZm
MzUxYWVmOWUwMjA1MjI0NjVlNjZiNTRhNDI0ZDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCdWZmZXJVc2FnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVQnVmZmVy
VXNhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVCdWZmZXJVc2FnZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVUJ1ZmZlclVzYWdlPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBGbGFn
cyA6IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgTWFw
UmVhZCA9IDEgPDwgMCwKLSAgICAgICAgTWFwV3JpdGUgPSAxIDw8IDEsCi0gICAgICAgIENvcHlT
b3VyY2UgPSAxIDw8IDIsCi0gICAgICAgIENvcHlEZXN0aW5hdGlvbiA9IDEgPDwgMywKLSAgICAg
ICAgSW5kZXggPSAxIDw8IDQsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgNSwKLSAgICAgICAgVW5p
Zm9ybSA9IDEgPDwgNiwKLSAgICAgICAgU3RvcmFnZSA9IDEgPDwgNywKLSAgICB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZGE1MjY1NmRlMjNkMjYyNGQ2YTFiOGUzNTZiZDI2NGFk
YzE2MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xvciB7Ci0g
ICAgZmxvYXQgcjsKLSAgICBmbG9hdCBnOwotICAgIGZsb2F0IGI7Ci0gICAgZmxvYXQgYTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JT
dGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZDU1MjcyOGJjYzliMzgwNTc0NTU5OWU2YjU4NjgxOTFhYjEzNmU3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUJsZW5kRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNvbG9y
V3JpdGUuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RydWN0IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBHUFVUZXh0dXJl
Rm9ybWF0IGZvcm1hdDsKLQotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJsZW5kOwotICAg
IEdQVUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNvbG9yV3JpdGVGbGFncyB3
cml0ZU1hc2sgeyBzdGF0aWNfY2FzdDxHUFVDb2xvcldyaXRlRmxhZ3M+KEdQVUNvbG9yV3JpdGU6
OkZsYWdzOjpBbGwpIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRj
NmQ1YzhjOWRlNjFmNDMyODE0NWI0ZjM1NTEyZGZhN2IzMmExOTAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQ
VUNvbG9yV3JpdGVGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVDb2xvcldyaXRlIDogcHVi
bGljIFJlZkNvdW50ZWQ8R1BVQ29sb3JXcml0ZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3Mg
RmxhZ3MgOiBHUFVDb2xvcldyaXRlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAg
UmVkID0gMSA8PCAwLAotICAgICAgICBHcmVlbiA9IDEgPDwgMSwKLSAgICAgICAgQmx1ZSA9IDEg
PDwgMiwKLSAgICAgICAgQWxwaGEgPSAxIDw8IDMsCi0gICAgICAgIEFsbCA9ICgxIDw8IDQpIC0g
MSwKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MmZiNjJkNDRjMDViOTE1YTc1MjZiMjMxNTZmOTE5Njg0MDhhNWEyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVU9yaWdpbjNELmgiCi0jaW5jbHVk
ZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsK
LQotc3RydWN0IEdQVUV4dGVudDNEOwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsK
LSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgdW5zaWduZWQgcm93UGl0Y2g7Ci0gICAgdW5zaWdu
ZWQgaW1hZ2VIZWlnaHQ7Ci19OwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXcgZmluYWwgOiBH
UFVCdWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIEdQVUJ1ZmZlckNvcHlWaWV3KFJlZjxHUFVCdWZm
ZXI+JiYgYnVmZmVyQ29weSwgY29uc3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlJiBiYXNlKQotICAg
ICAgICA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZShiYXNlKQotICAgICAgICAsIGJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlckNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVQnVmZmVyPiBidWZm
ZXI7Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgdW5zaWduZWQg
bWlwTGV2ZWw7Ci0gICAgdW5zaWduZWQgYXJyYXlMYXllcjsKLSAgICBHUFVPcmlnaW4zRCBvcmln
aW47Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFsIDogR1BVVGV4dHVyZUNv
cHlWaWV3QmFzZSB7Ci0gICAgR1BVVGV4dHVyZUNvcHlWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHRl
eHR1cmVDb3B5LCBjb25zdCBHUFVUZXh0dXJlQ29weVZpZXdCYXNlJiBiYXNlKQotICAgICAgICA6
IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCB0ZXh0dXJlKFdURk1vdmUo
dGV4dHVyZUNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVy
ZTsKLX07Ci0KLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVD
b21tYW5kQnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVm
ZmVyPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybUNvbW1hbmRC
dWZmZXIqIHBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1D
b21tYW5kQnVmZmVyLmdldCgpOyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4m
IHVzZWRCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVyczsgfQotICAgIGNvbnN0
IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgdXNlZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4g
bV91c2VkVGV4dHVyZXM7IH0KLSAgICBib29sIGlzRW5jb2RpbmdQYXNzKCkgY29uc3QgeyByZXR1
cm4gbV9pc0VuY29kaW5nUGFzczsgfQotCi0gICAgdm9pZCBzZXRJc0VuY29kaW5nUGFzcyhib29s
IGlzRW5jb2RpbmcpIHsgbV9pc0VuY29kaW5nUGFzcyA9IGlzRW5jb2Rpbmc7IH0KLSNpZiBVU0Uo
TUVUQUwpCi0gICAgfkdQVUNvbW1hbmRCdWZmZXIoKTsKLSAgICB2b2lkIGVuZEJsaXRFbmNvZGlu
ZygpOwotI2VuZGlmCi0KLSAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVy
PiYmLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYsIHVpbnQ2NF90IGRzdE9m
ZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKEdQVUJ1
ZmZlckNvcHlWaWV3JiYsIEdQVVRleHR1cmVDb3B5VmlldyYmLCBjb25zdCBHUFVFeHRlbnQzRCYp
OwotICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcmJiwgR1BV
QnVmZmVyQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0
dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZpZXcmJiwg
Y29uc3QgR1BVRXh0ZW50M0QmKTsKLQotICAgIHZvaWQgdXNlQnVmZmVyKFJlZjxHUFVCdWZmZXI+
JiYgYnVmZmVyKSB7IG1fdXNlZEJ1ZmZlcnMuYWRkVm9pZChXVEZNb3ZlKGJ1ZmZlcikpOyB9Ci0g
ICAgdm9pZCB1c2VUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpIHsgbV91c2VkVGV4
dHVyZXMuYWRkVm9pZChXVEZNb3ZlKHRleHR1cmUpKTsgfQotCi1wcml2YXRlOgotICAgIEdQVUNv
bW1hbmRCdWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHImJik7Ci0KLSAgICBQbGF0
Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsKLSAgICBI
YXNoU2V0PFJlZjxHUFVCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOwotICAgIEhhc2hTZXQ8UmVmPEdQ
VVRleHR1cmU+PiBtX3VzZWRUZXh0dXJlczsKLSAgICBib29sIG1faXNFbmNvZGluZ1Bhc3MgeyBm
YWxzZSB9OwotI2lmIFVTRShNRVRBTCkKLSAgICBNVExCbGl0Q29tbWFuZEVuY29kZXIgKmJsaXRF
bmNvZGVyKCkgY29uc3Q7Ci0gICAgbXV0YWJsZSBSZXRhaW5QdHI8TVRMQmxpdENvbW1hbmRFbmNv
ZGVyPiBtX2JsaXRFbmNvZGVyOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlZTBiYmEzOWM5ZGZlNGQwMDI4OTNjOWFiNWMyOGQxMmZlNGMy
OGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBH
UFVDb21wYXJlRnVuY3Rpb24gewotICAgIE5ldmVyLAotICAgIExlc3MsCi0gICAgRXF1YWwsCi0g
ICAgTGVzc0VxdWFsLAotICAgIEdyZWF0ZXIsCi0gICAgTm90RXF1YWwsCi0gICAgR3JlYXRlckVx
dWFsLAotICAgIEFsd2F5cwotfTsKLQotdXNpbmcgUGxhdGZvcm1Db21wYXJlRnVuY3Rpb24gPSB1
bnNpZ25lZDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmEwNDE1ZDkwZDhjYmNmODdkYmNhMmEyYWNjZDI1YmExNGViOGE2Zi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVD
b21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiB0cnlDcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8
Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIGRpc3BhdGNoKHVuc2lnbmVk
IHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopOwotCi1wcml2YXRlOgotICAgIEdQVUNvbXB1dGVQ
YXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZvcm1Db21wdXRlUGFzc0Vu
Y29kZXJTbWFydFB0ciYmKTsKLSAgICB+R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKCkgeyBlbmRQYXNz
KCk7IH0KLQotICAgIC8vIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyCi0gICAgY29uc3QgUGxh
dGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0
IGZpbmFsOwotICAgIHZvaWQgaW52YWxpZGF0ZUVuY29kZXIoKSBmaW5hbCB7IG1fcGxhdGZvcm1D
b21wdXRlUGFzc0VuY29kZXIgPSBudWxscHRyOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIHZvaWQg
dXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQgdXNhZ2UpIGZpbmFsOwot
ICAgIHZvaWQgc2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciBv
ZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBmaW5hbDsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1Db21w
dXRlUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyOwotICAg
IFJlZlB0cjxjb25zdCBHUFVDb21wdXRlUGlwZWxpbmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGlu
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBl
bGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ5YzI3ZTMzMDQyODNhYjNl
NTA4ODlkODdiODdlYzg4ZmE1OGNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21w
dXRlUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBl
bGluZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSNp
bmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgR1BVUGlwZWxp
bmVMYXlvdXQ7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFz
cyBHUFVDb21wdXRlUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewotcHVibGlj
OgotICAgIHZpcnR1YWwgfkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZlB0
cjxHUFVDb21wdXRlUGlwZWxpbmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIGJv
b2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29s
IHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3ImJiBjb21wdXRlU3RhZ2UpOwotCi0gICAgY29uc3QgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmUq
IHBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbXB1
dGVQaXBlbGluZS5nZXQoKTsgfQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotICAgIFdI
TFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fY29tcHV0ZURpbWVuc2lvbnM7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLSAgICBHUFVDb21wdXRlUGlwZWxpbmUoUGxhdGZvcm1Db21wdXRlUGlw
ZWxpbmVTbWFydFB0ciYmLCBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMsIGNvbnN0IFJlZlB0cjxH
UFVQaXBlbGluZUxheW91dD4mKTsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1Db21wdXRlUGlwZWxp
bmVTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lOwotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgbV9jb21wdXRlRGltZW5zaW9u
cyB7IDAsIDAsIDAgfTsKLSNlbmRpZgotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVj
dG9yIHJlY29tcGlsYXRpb24uCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91
dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVDb21wdXRlUGlwZWxpbmUsIGlzQ29tcHV0ZVBpcGVs
aW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMzkxNTA1ZWVj
MjU5YTIzZDgxODFmNjc0ZGRkODdmYzA1MDYyNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlIHsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0cjxHUFVQaXBlbGlu
ZUxheW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIGNvbXB1
dGUpCi0gICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUobGF5b3V0
KSB9Ci0gICAgICAgICwgY29tcHV0ZVN0YWdlIHsgV1RGTW92ZShjb21wdXRlKSB9Ci0gICAgewot
ICAgIH0KLQotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2U7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0YTQ3ZDAzYjM2MmE2ODhiMmQ3OTEwYzdmYjE3OWJiMWU5OWUwNmU0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0
b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wYXJlRnVuY3Rp
b24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yIHsKLSAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkOwotICAgIEdQVUNvbXBh
cmVGdW5jdGlvbiBkZXB0aENvbXBhcmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2NmNTJiOWU1ZGNhNGIxMTlkZWFkZTQyZGVmYTliZWJmZjU0NDdlYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVURldmlj
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cC5oIgot
I2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRl
ICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRC
dWZmZXIuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIK
LSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVk
ZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlci5o
IgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0j
aW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZWZQdHI8R1BVQnVmZmVyPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZm
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQs
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1cm4gR1BVQnVmZmVyOjp0
cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGlzTWFwcGVkLCBlcnJvclNjb3Blcyk7Ci19Ci0K
LXN0YXRpYyB1bnNpZ25lZCBtYXhpbXVtTWlwTGV2ZWxDb3VudChHUFVUZXh0dXJlRGltZW5zaW9u
IGRpbWVuc2lvbiwgR1BVRXh0ZW50M0Qgc2l6ZSkKLXsKLSAgICB1bnNpZ25lZCB3aWR0aCA9IHNp
emUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNpZ25lZCBkZXB0aCA9
IDE7Ci0gICAgc3dpdGNoIChkaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNp
b246Ol8xZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpf
MmQ6Ci0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWln
aHQ7Ci0gICAgICAgIGRlcHRoID0gc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgYXV0byBtYXhEaW1lbnNpb24gPSBzdGQ6Om1heChzdGQ6Om1heCh3aWR0aCwgaGVpZ2h0
KSwgZGVwdGgpOwotICAgIGludCBpID0gc2l6ZW9mKEdQVUV4dGVudDNEOjpJbm5lclR5cGUpICog
OCAtIDE7Ci0gICAgd2hpbGUgKCEobWF4RGltZW5zaW9uICYgKDEgPDwgaSkpICYmIGkgPj0gMCkK
LSAgICAgICAgLS1pOwotICAgIEFTU0VSVChpID49IDApOwotICAgIHJldHVybiBpICsgMTsKLX0K
LQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlVGV4dHVyZShjb25zdCBH
UFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBpZiAoIWRlc2Ny
aXB0b3Iuc2l6ZS53aWR0aCB8fCAhZGVzY3JpcHRvci5zaXplLmhlaWdodCB8fCAhZGVzY3JpcHRv
ci5zaXplLmRlcHRoKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRF
cnJvcigiVGV4dHVyZXMgY2FuJ3QgaGF2ZSAwIGRpbWVuc2lvbnMuIik7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpIHsKLSAg
ICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlcyBjYW4n
dCBoYXZlIDAgbWlwbGV2ZWxzLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAg
IGlmICghZGVzY3JpcHRvci5zYW1wbGVDb3VudCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBzYW1wbGVzLiIpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9tZXRhbC9NZXRhbC1GZWF0dXJlLVNldC1UYWJsZXMucGRmCi0gICAgdW5zaWduZWQg
bWF4UmVndWxhclNpemUgPSA4MTkyOwotICAgIHVuc2lnbmVkIG1heERlcHRoU2l6ZSA9IDIwNDg7
Ci0gICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAgIGNhc2UgR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzFkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbWF4
UmVndWxhclNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4
ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJlIGlzIHRvbyB3aWRlOiAiLCBkZXNjcmlwdG9y
LnNpemUud2lkdGgsICIgbmVlZHMgdG8gYmUgPD0gIiwgbWF4UmVndWxhclNpemUsICIuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRv
ci5zaXplLmhlaWdodCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjFEIHRleHR1cmUgYXJyYXkgaGFz
IHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiBuZWVkcyB0byBi
ZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8y
ZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heFJlZ3VsYXJTaXplIHx8
IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhSZWd1bGFyU2l6ZSkgewotICAgICAgICAgICAg
bV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJEIHRleHR1
cmUgaXMgdG9vIGxhcmdlOiIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiBhbmQgIiwgZGVzY3Jp
cHRvci5zaXplLmhlaWdodCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXplLCAiLiIp
KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNj
b3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJEIHRleHR1cmUgYXJyYXkg
aGFzIHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmRlcHRoLCAiIG5lZWRzIHRv
IGJlIDw9ICIsIG1heERlcHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6
XzNkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbWF4RGVwdGhTaXplIHx8
IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUgfHwgZGVzY3JpcHRvci5zaXpl
LmRlcHRoID4gbWF4RGVwdGhTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiM0QgdGV4dHVyZSBpcyB0b28gbGFyZ2U6ICIs
IGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiwgIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiwg
YW5kICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heERlcHRo
U2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBHUFVUZXh0
dXJlRGltZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ICE9IDEpIHsKLSAg
ICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0dXJlcyBj
YW4ndCBoYXZlIG1pcG1hcHMiKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBh
dXRvIG1heExldmVscyA9IG1heGltdW1NaXBMZXZlbENvdW50KGRlc2NyaXB0b3IuZGltZW5zaW9u
LCBkZXNjcmlwdG9yLnNpemUpOwotICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgPiBt
YXhMZXZlbHMpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9y
KG1ha2VTdHJpbmcoIlRvbyBtYW55IG1pcGxldmVsczogIiwgZGVzY3JpcHRvci5taXBMZXZlbENv
dW50LCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heExldmVscywgIi4iKSk7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSAmJiBk
ZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlIHNhbXBsZUNvdW50IGNhbiBvbmx5IGJlIDEgb3Ig
NC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5z
YW1wbGVDb3VudCAhPSAxKSB7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBH
UFVUZXh0dXJlRGltZW5zaW9uOjpfMmQpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBkaW1lbnNpb24gaW5jb21wYXRpYmxlIHdpdGgg
bXVsdGlzYW1wbGluZy4iKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7Ci0gICAgICAgICAgICBt
X2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2FtcGxlZCB0ZXh0dXJl
cyBjYW4ndCBoYXZlIG1pcG1hcHMuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggIT0gMSkgewotICAgICAgICAg
ICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJBcnJheSB0ZXh0dXJlcyBj
YW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnVzYWdlICYgc3RhdGljX2Nhc3Q8R1BVVGV4dHVy
ZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7Ci0gICAgICAg
ICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2FtcGxlZCB0
ZXh0dXJlcyBjYW4ndCBoYXZlIFNUT1JBR0UgdXNhZ2UuIik7Ci0gICAgICAgICAgICByZXR1cm4g
eyB9OwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBPbmx5IHNvbWUgcGl4ZWwgZm9ybWF0
cyBhcmUgY2FwYWJsZSBvZiBNU0FBLiBXaGVuIHdlIGFkZCB0aG9zZSBuZXcgcGl4ZWwgZm9ybWF0
cywgd2UnbGwgaGF2ZSB0byBhZGQgZmlsdGVyaW5nIGNvZGUgaGVyZS4KLSAgICB9Ci0KLSAgICAv
LyBUaGUgaGVpZ2h0IGNvbXBvbmVudCBmb3IgMWQgdGV4dHVyZXMgaXMgdGhlIGFycmF5IGxlbmd0
aC4KLSAgICAvLyBUaGUgZGVwdGggY29tcG9uZW50IGZvciAyZCB0ZXh0dXJlcyBpcyB0aGUgYXJy
YXkgbGVuZ3RoLgotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBHUFVUZXh0dXJlRGlt
ZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsKLSAgICAgICAgbV9l
cnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0dXJlcyBjYW4ndCBoYXZl
IGRlcHRoICE9IDEuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRl
c2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4
ICYmIGRlc2NyaXB0b3IuZGltZW5zaW9uICE9IEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZCkgewot
ICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0ZW5j
aWwgdGV4dHVyZXMgbXVzdCBiZSAyZC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0K
LSAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgPT0gR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZs
b2F0U3RlbmNpbDggJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKSB7Ci0gICAgICAgIG1f
ZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGVwdGgvc3RlbmNpbCB0ZXh0dXJl
cyBjYW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRpY19jYXN0PEdQVVRleHR1cmVVc2FnZUZsYWdzPihkZXNjcmlwdG9yLnVz
YWdlKSA+PSBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVyZVVzYWdl
OjpGbGFnczo6TWF4aW11bVZhbHVlKSkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgdXNhZ2UgZmxhZ3MuIik7Ci0gICAgICAgIHJldHVybiB7
IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVz
Y3JpcHRvciwgbWFrZVJlZigqbV9lcnJvclNjb3BlcykpOwotfQotCi1SZWZQdHI8R1BVU2FtcGxl
cj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVTYW1wbGVyOjp0cnlDcmVhdGUo
KnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVE
ZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVCaW5kR3JvdXBM
YXlvdXQ6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJlZjxHUFVQaXBlbGlu
ZUxheW91dD4gR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVQaXBlbGlu
ZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoZGVzY3JpcHRvcikpOwotfQotCi1SZWZQdHI8R1BVU2hh
ZGVyTW9kdWxlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVT
aGFkZXJNb2R1bGU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5kZXJQaXBlbGluZShjb25z
dCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmU6OnRy
eUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQotCi1SZWZQdHI8R1BV
Q29tcHV0ZVBpcGVsaW5lPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25z
dCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3Bl
cyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVUNvbXB1dGVQaXBlbGluZTo6
dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci19Ci0KLVJlZlB0cjxH
UFVCaW5kR3JvdXA+IEdQVURldmljZTo6dHJ5Q3JlYXRlQmluZEdyb3VwKGNvbnN0IEdQVUJpbmRH
cm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Blcykg
Y29uc3QKLXsKLSAgICBpZiAoIW1fYmluZEdyb3VwQWxsb2NhdG9yKQotICAgICAgICBtX2JpbmRH
cm91cEFsbG9jYXRvciA9IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKGVycm9yU2NvcGVz
KTsKLQotICAgIHJldHVybiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShkZXNjcmlwdG9yLCAqbV9i
aW5kR3JvdXBBbGxvY2F0b3IpOwotfQotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVRGV2
aWNlOjp0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVQ29t
bWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzKTsKLX0KLQotUmVmUHRyPEdQVVF1ZXVlPiBHUFVE
ZXZpY2U6OnRyeUdldFF1ZXVlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0gICAgICAg
IG1fcXVldWUgPSBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVybiBtX3F1
ZXVlOwotfQotICAgIAotdm9pZCBHUFVEZXZpY2U6OnNldFN3YXBDaGFpbihSZWZQdHI8R1BVU3dh
cENoYWluPiYmIHN3YXBDaGFpbikKLXsKLSAgICBtX3N3YXBDaGFpbiA9IFdURk1vdmUoc3dhcENo
YWluKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZp
Y2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiYmJlMzA0ZmYwYjZhNzYyYjlm
NDhjNDQxM2ZhMTVlZjVmNDE1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9j
YXRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZv
cm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiR1BVU3dhcENoYWlu
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmlu
ZEdyb3VwOwotY2xhc3MgR1BVQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgR1BVQnVmZmVyOwotY2xh
c3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIEdQ
VUVycm9yU2NvcGVzOwotY2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBHUFVSZW5kZXJQ
aXBlbGluZTsKLWNsYXNzIEdQVVNhbXBsZXI7Ci1jbGFzcyBHUFVTaGFkZXJNb2R1bGU7Ci1jbGFz
cyBHUFVUZXh0dXJlOwotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKLXN0cnVjdCBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7
Ci1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwot
c3RydWN0IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9uczsKLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3Jp
cHRvcjsKLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotc3RydWN0IEdQVVN3YXBD
aGFpbkRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWVudW0gY2xh
c3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uOwotCi1jbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNlPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVEZXZpY2U+IHRyeUNyZWF0ZShjb25zdCBzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mKTsKLSAgICBzdGF0aWMgdm9pZCBw
cmV3YXJtKCk7Ci0KLSAgICBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGVCdWZmZXIoY29uc3Qg
R1BVQnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJyb3JTY29w
ZXMmKTsKLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlVGV4dHVyZShjb25zdCBHUFVU
ZXh0dXJlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVTYW1wbGVyPiB0cnlDcmVh
dGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBSZWZQ
dHI8R1BVQmluZEdyb3VwTGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxHUFVQaXBlbGluZUxh
eW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYp
IGNvbnN0OwotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZUJpbmRHcm91cChjb25z
dCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAg
IFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IHRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVVJlbmRlclBpcGVs
aW5lPiB0cnlDcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVDb21wdXRlUGlw
ZWxpbmU+IHRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVDb21t
YW5kQnVmZmVyPiB0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8
R1BVUXVldWU+IHRyeUdldFF1ZXVlKCkgY29uc3Q7Ci0gICAgCi0gICAgUGxhdGZvcm1EZXZpY2Uq
IHBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsg
fQotICAgIEdQVVN3YXBDaGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwQ2hh
aW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldFN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWluPiYm
KTsKLQotICAgIHZvaWQgc2V0RXJyb3JTY29wZXMoUmVmPEdQVUVycm9yU2NvcGVzPiYmIGVycm9y
U2NvcGVzKSB7IG1fZXJyb3JTY29wZXMgPSBXVEZNb3ZlKGVycm9yU2NvcGVzKTsgfQotCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHVzZVdITFNMID0gdHJ1ZTsKLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBHUFVEZXZpY2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmKTsKLQotICAgIFBsYXRm
b3JtRGV2aWNlU21hcnRQdHIgbV9wbGF0Zm9ybURldmljZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxH
UFVRdWV1ZT4gbV9xdWV1ZTsKLSAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsK
LSAgICBtdXRhYmxlIFJlZlB0cjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IG1fYmluZEdyb3VwQWxs
b2NhdG9yOwotICAgIFJlZlB0cjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyOGQ0ZmMxMmM4YTI0NzI4Y2UyMDY1YmQyNzIx
ZGJhZjgyYmZlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJHUFVFcnJvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVUVycm9yRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRXJyb3Ig
Y3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgc3dpdGNoIChmaWx0ZXIpIHsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpPdXRP
Zk1lbW9yeToKLSAgICAgICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVPdXRPZk1lbW9yeUVy
cm9yPihHUFVPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSkpOwotICAgIGNhc2UgR1BVRXJyb3JG
aWx0ZXI6OlZhbGlkYXRpb246Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BVVmFs
aWRhdGlvbkVycm9yPihHUFVWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSkpOwotICAg
IGNhc2UgR1BVRXJyb3JGaWx0ZXI6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gR1BVRXJyb3IoUmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BV
VmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoIkJhZCBlcnJvciEiKSkpOwotICAgIH0KLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY5ZmM4ZmFmYWZhNDVmMGZmMTQ3Y2I4YmJiNDcxMzMyMjc1MmMy
OWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkdQ
VVZhbGlkYXRpb25FcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLXVzaW5nIEdQVUVy
cm9yID0gVmFyaWFudDxSZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIFJlZlB0cjxHUFVWYWxp
ZGF0aW9uRXJyb3I+PjsKLQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXIsIGNv
bnN0IFN0cmluZyYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yRmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2OWZlZjMyNzA1ZDk5YmZlY2VhMDA4
OTFmZjE2NDRhMGE0ZDE3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
LWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXIgewotICAgIE5vbmUsCi0gICAgT3V0T2ZNZW1vcnks
Ci0gICAgVmFsaWRhdGlvbiwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmJlZTljZjFiZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVFcnJvclNjb3Blcy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jb25zdCB1bnNpZ25lZCBtYXhVbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkID0g
MjU2OwotCi1SZWY8R1BVRXJyb3JTY29wZXM+IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoVW5jYXB0
dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHUFVFcnJvclNjb3BlcyhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1HUFVFcnJvclNjb3Bl
czo6R1BVRXJyb3JTY29wZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAg
ICA6IG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBt
X251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQobWF4VW5jYXB0dXJlZEVycm9yRXZlbnRz
QWxsb3dlZCkKLXsKLX0KLQotdm9pZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BV
RXJyb3JGaWx0ZXIgZmlsdGVyKQotewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2Nv
cGUgeyBmaWx0ZXIsIHN0ZDo6bnVsbG9wdCB9KTsKLX0KLQotc3RkOjpvcHRpb25hbDxHUFVFcnJv
cj4gR1BVRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVzc2FnZSkKLXsK
LSAgICBpZiAobV9lcnJvclNjb3Blcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmFpbE1lc3NhZ2Ug
PSAiTm8gZXJyb3Igc2NvcGUgZXhpc3RzISI7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgYXV0byBzY29wZSA9IG1fZXJyb3JTY29wZXMudGFrZUxhc3QoKTsKLSAg
ICByZXR1cm4gc2NvcGUuZmlsdGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxs
b3B0IDogc2NvcGUuZXJyb3I7Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJy
b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCi17Ci0gICAg
YXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihtX2Vycm9yU2NvcGVzLnJiZWdpbigpLCBtX2Vy
cm9yU2NvcGVzLnJlbmQoKSwgW2ZpbHRlcl0oY29uc3QgRXJyb3JTY29wZSYgc2NvcGUpIHsKLSAg
ICAgICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSB8fCBzY29w
ZS5maWx0ZXIgPT0gZmlsdGVyOwotICAgIH0pOwotCi0gICAgaWYgKGl0ZXJhdG9yID09IG1fZXJy
b3JTY29wZXMucmVuZCgpKSB7Ci0gICAgICAgIGlmICghbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVu
dHNBbGxvd2VkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fdW5jYXB0dXJlZEVy
cm9yQ2FsbGJhY2soY3JlYXRlRXJyb3IoZmlsdGVyLCBtZXNzYWdlKSk7Ci0gICAgICAgIGlmICgh
KC0tbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKSkKLSAgICAgICAgICAgIG1fdW5j
YXB0dXJlZEVycm9yQ2FsbGJhY2soY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRp
b24sICJXZWJHUFU6IFRvbyBtYW55IGVycm9yczsgbm8gbW9yZSBlcnJvciBldmVudHMgd2lsbCBm
aXJlIG9uIHRoaXMgR1BVRGV2aWNlLiIpKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gSWYgdGhlIHNjb3BlIGhhcyBhbHJlYWR5IGNhcHR1cmVkIGFuIGVycm9yLCBpZ25vcmUg
dGhpcyBuZXcgb25lLgotICAgIGlmIChpdGVyYXRvci0+ZXJyb3IpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGl0ZXJhdG9yLT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSk7Ci19
Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCi17Ci0gICAgZ2VuZXJhdGVFcnJvcihtX3ByZWZpeCArIG1lc3NhZ2UsIEdQ
VUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE1MDljNjg0YTkzYzc2YjM3ZGY3Y2QwNzM1ZjdkZmU3OGUyYWM3ZjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5o
IgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVFcnJvclNjb3BlcyA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUVycm9yU2NvcGVzPiB7Ci1wdWJs
aWM6Ci0gICAgdXNpbmcgVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEdQ
VUVycm9yJiYpPjsKLSAgICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUoVW5jYXB0
dXJlZEVycm9yQ2FsbGJhY2smJik7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9y
RmlsdGVyKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmlu
ZyYgZmFpbE1lc3NhZ2UpOwotCi0gICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYs
IEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwotICAgIHZvaWQg
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0RXJyb3JQ
cmVmaXgoY29uc3QgU3RyaW5nJiBwcmVmaXgpIHsgbV9wcmVmaXggPSBwcmVmaXg7IH0KLQotcHJp
dmF0ZToKLSAgICBzdHJ1Y3QgRXJyb3JTY29wZSB7Ci0gICAgICAgIGNvbnN0IEdQVUVycm9yRmls
dGVyIGZpbHRlcjsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7Ci0gICAg
fTsKLQotICAgIEdQVUVycm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0g
ICAgVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgbV91bmNhcHR1cmVkRXJyb3JDYWxsYmFjazsKLQot
ICAgIFZlY3RvcjxFcnJvclNjb3BlPiBtX2Vycm9yU2NvcGVzOwotICAgIFN0cmluZyBtX3ByZWZp
eDsKLSAgICB1bnNpZ25lZCBtX251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNE
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ0ODI2NTIwY2M1ZTdlMGNjOWZmNDNmZDE0
MjgwZjUwNDRiN2ViZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVj
dCBHUFVFeHRlbnQzRCB7Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gdW5zaWduZWQ7Ci0gICAgSW5u
ZXJUeXBlIHdpZHRoOwotICAgIElubmVyVHlwZSBoZWlnaHQ7Ci0gICAgSW5uZXJUeXBlIGRlcHRo
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
aW1pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyZTUxYzNlNzNiOTU2MWNiYzgxNTRm
ZDA5NzZkNzhlOWVmODJhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGltaXRzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IHVu
c2lnbmVkIG1heFZlcnRleEJ1ZmZlcnMgPSAxNjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMb2FkT3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWEyNGVlZjUyNzRmYmMwYWQ3Njc0ZjZiYzU2ZThmMTk2ZTFjOTYxMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTG9hZE9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVTG9hZE9wIHsKLSAgICBDbGVhciwKLSAgICBM
b2FkCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVP
YmplY3RCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjJkOTE4YzJlNTQ1
MTdjYjM3ZmZmZWE2YjI2MmQ0NWY4MmZhOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VU9iamVjdEJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJv
clNjb3Blcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVT2JqZWN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVU9iamVj
dEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVPYmplY3RCYXNlKCkgPSBkZWZhdWx0
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgR1BVT2JqZWN0QmFzZShSZWY8R1BVRXJyb3JTY29wZXM+JiYg
cmVwb3J0ZXIpCi0gICAgICAgIDogbV9lcnJvclNjb3BlcyhXVEZNb3ZlKHJlcG9ydGVyKSkgeyB9
Ci0KLSAgICBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yU2NvcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9y
U2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVPdXRPZk1lbW9yeUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5ZjQyMGU5N2RmZTNiZjA3NTY2YzViNmEwZmRlYzQ2Njg5NjE3OTQzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvciA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdQVU91dE9mTWVtb3J5RXJyb3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEdQVU91dE9mTWVtb3J5RXJyb3I+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R1BVT3V0T2ZNZW1vcnlFcnJvcik7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2M4ODE2NTU0MzU3MTIzMTA1YjZlOWU3Yzg4MzM0MWZjMmJkODI2ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQ
aXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1HUFVQaXBlbGluZTo6fkdQVVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTQyZWU4ZDdhM2I3ZWZmMTk5MDZlOTUwMDgxMGYzNDQyYzNjZWI0NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVVBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmU+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVQaXBlbGluZSgpOwotCi0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19HUFVQSVBFTElORShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6R1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBwaXBlbGlu
ZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDEyMmJhOTM2ZGY0ZDAwNmViNjEzZTk2MTY5NjYwYzEx
Zjk5ZDQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlv
dXQuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQ
dHI8R1BVUGlwZWxpbmVMYXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IxOTkzYTllMmYwMGI0MmU0Mzg0MzE3Y2E2NWRhNGVk
NGRlYTFlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IEdQ
VVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVQaXBlbGluZUxheW91dChX
VEZNb3ZlKGRlc2NyaXB0b3IuYmluZEdyb3VwTGF5b3V0cykpKTsKLX0KLQotR1BVUGlwZWxpbmVM
YXlvdXQ6OkdQVVBpcGVsaW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5
b3V0Pj4mJiBsYXlvdXRzKQotICAgIDogbV9iaW5kR3JvdXBMYXlvdXRzKFdURk1vdmUobGF5b3V0
cykpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQaXBlbGluZUxheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk5
OTQ2ZmNiYTAxMmNjZWQ0NmE3ZjE3MjM5Mjk2NzQ1OTE4ZmMwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmVM
YXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBjcmVh
dGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYpOwotCi0gICAgY29uc3QgVmVjdG9yPFJl
Zjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiYgYmluZEdyb3VwTGF5b3V0cygpIGNvbnN0IHsg
cmV0dXJuIG1fYmluZEdyb3VwTGF5b3V0czsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQ
VVBpcGVsaW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mJik7
Ci0KLSAgICBWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IG1fYmluZEdyb3Vw
TGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM4YTFlZTJjNzc1MWY0NzFmZDc1NDU4MTBiNzc4YTU0MzIyZjU4
MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91
dC5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewotICAgIFZlY3RvcjxSZWY8Y29u
c3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjNzY3MjY3ODYyYTVlODAwN2ZkOGUzMzMx
ZGU3NmU2OWRlM2IxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBl
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIFVTRShNRVRBTCkKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzTWV0
YWwuaCIKLSNlbGlmIFVTRShEQVdOKQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXNEYXduLmgi
Ci0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSBmb3IgV2ViR1BVIgotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNWIwOWZhNGEwNTI2MzM0ZjBmN2QzZjdkOWRlODkxMWVlZDljY2EwMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6R1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlcikKLSAgICA6
IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotewotICAgIG1fY29tbWFu
ZEJ1ZmZlci0+c2V0SXNFbmNvZGluZ1Bhc3ModHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTcyNDRmMmVlMWZkY2Q1
ZDFiMTczNzVjOWU0MTFkMGY2NmRjNWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmluZEdyb3VwOwotY2xhc3Mg
R1BVUmVuZGVyUGlwZWxpbmU7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQot
ICAgIHZvaWQgZW5kUGFzcygpOwotICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVkLCBHUFVC
aW5kR3JvdXAmKTsKLQotcHJvdGVjdGVkOgotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1hbmRCdWZmZXImIGNvbW1h
bmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFz
c0VuY29kZXIoKSBjb25zdCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVFbmNvZGVyKCkgPSAwOwotI2lmIFVTRShNRVRBTCkKLSAgICB2aXJ0dWFsIHZvaWQgdXNl
UmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQpID0gMDsKLQotICAgIC8vIFJl
bmRlciBjb21tYW5kIGVuY29kZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVydGV4
QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRl
Z2VyLCB1bnNpZ25lZCkgeyB9Ci0gICAgLy8gQ29tcHV0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsg
fQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotICAgIFJlZjxHUFVDb21tYW5kQnVmZmVyPiBtX2Nv
bW1hbmRCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2MwNjI4ZWY3YTMwMzVlNTkyMjFmZWQ5ODdk
NWY1N2RiMDdhZDE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvckJhc2UgewotICAgIFN0cmluZyBlbnRyeVBvaW50OwotfTsKLQot
c3RydWN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcihS
ZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3JCYXNlKGJhc2UpCi0gICAgICAgICwgbW9kdWxlIHsgV1RGTW92ZShtb2R1bGUpIH0KLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc0ZDUyNzg1M2EzNGFmZTAzNTNjNGY3ODc3OTljY2JkNDY2ZDhl
YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVQbGF0
Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLWNs
YXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVR
dWV1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IHRyeUNyZWF0ZShj
b25zdCBHUFVEZXZpY2UmKTsKLQotICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVldWUoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0KLQotICAgIHZvaWQgc3VibWl0
KFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+JiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICBHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiwgY29uc3QgR1BVRGV2aWNl
Jik7Ci0KLSAgICBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1ZXVlOwotICAgIFdl
YWtQdHI8Y29uc3QgR1BVRGV2aWNlPiBtX2RldmljZTsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJs
ZVRhc2sgbV9wcmVzZW50VGFzazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWE2NGI0NTk0YWUxM2I0YzQ2ZDhlNWM2NmE3MjQ1Yjcw
MTE3OTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5j
bHVkZSAiR1BVTG9hZE9wLmgiCi0jaW5jbHVkZSAiR1BVU3RvcmVPcC5oIgotI2luY2x1ZGUgIkdQ
VVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7
Ci0gICAgR1BVTG9hZE9wIGxvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0b3JlT3A7Ci0gICAgR1BV
Q29sb3IgY2xlYXJDb2xvciB7IDAsIDAsIDAsIDEgfTsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYpOwotCi0gICAgUmVmPEdQVVRleHR1cmU+IGF0dGFjaG1l
bnQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yQmFzZSB7Ci0gICAgR1BVTG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIEdQVVN0b3JlT3Ag
ZGVwdGhTdG9yZU9wOwotICAgIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLSAgICAvLyBGSVhNRTogQWRk
IHN0ZW5jaWwgc3VwcG9ydC4KLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0
dXJlPiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsK
LSAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9y
QXR0YWNobWVudHM7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFz
c0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0NDNmNWQ0YzEyNDUw
MGY4ZmUzYzUxMjg3N2MwZTE1MzhhYmVjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21t
YW5kQnVmZmVyOwotCi1zdHJ1Y3QgR1BVQ29sb3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I7Ci0KLWNsYXNzIEdQVVJlbmRlclBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBh
c3NFbmNvZGVyPiB0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yJiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVUmVu
ZGVyUGlwZWxpbmU+JiYpOwotICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYp
OwotICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNl
dFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpOwotICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoR1BVQnVmZmVyJiwgdWludDY0
X3Qgb2Zmc2V0KTsKLSAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNv
bnN0IFZlY3RvcjxSZWY8R1BVQnVmZmVyPj4mLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZz
ZXRzKTsKLSAgICB2b2lkIGRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3Rh
bmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsK
LSAgICB2b2lkIGRyYXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3Rh
bmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBm
aXJzdEluc3RhbmNlKTsKLQotcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyJiYp
OwotICAgIH5HUFVSZW5kZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcgotICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGludmFsaWRhdGVFbmNvZGVyKCkgZmluYWwgeyBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIg
PSBudWxscHRyOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3Qg
TVRMUmVzb3VyY2UgKiwgdW5zaWduZWQgdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0VmVydGV4
QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5k
ZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMQnVmZmVyICos
IE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0KLSAgICBSZWZQdHI8
R1BVQnVmZmVyPiBtX2luZGV4QnVmZmVyOwotICAgIHVpbnQ2NF90IG1faW5kZXhCdWZmZXJPZmZz
ZXQ7Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi0gICAgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rl
clNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcjsKLSAgICBSZWZQdHI8Y29uc3Qg
R1BVUmVuZGVyUGlwZWxpbmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxNmEyNDFjMDQ1MzA4OWIwYmFhMTUwMWI4OTU3YjRiMmVj
OGZhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUg
IkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsK
LQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewot
cHVibGljOgotICAgIHZpcnR1YWwgfkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMg
UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29u
c3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAg
IGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJv
b2wgcmVjb21waWxlKGNvbnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvciYmIHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0
aFN0ZW5jaWxTdGF0ZSAqZGVwdGhTdGVuY2lsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlcHRo
U3RlbmNpbFN0YXRlLmdldCgpOyB9Ci0jZW5kaWYKLSAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
KiBwbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRl
clBpcGVsaW5lLmdldCgpOyB9Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9w
b2xvZ3koKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVRvcG9sb2d5OyB9Ci0gICAgc3RkOjpv
cHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4Rm9ybWF0OyB9Ci0KLXByaXZhdGU6Ci0jaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBp
cGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBzdGQ6Om9wdGlvbmFsPEdQ
VUluZGV4Rm9ybWF0PiwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYsIGNvbnN0IEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJldGFpblB0cjxNVExEZXB0
aFN0ZW5jaWxTdGF0ZT4gbV9kZXB0aFN0ZW5jaWxTdGF0ZTsKLSNlbmRpZiAvLyBVU0UoTUVUQUwp
Ci0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQaXBl
bGluZTsKLSAgICBHUFVQcmltaXRpdmVUb3BvbG9neSBtX3ByaW1pdGl2ZVRvcG9sb2d5OwotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7Ci0KLSAgICAvLyBQ
cmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBSZWZQdHI8R1BV
UGlwZWxpbmVMYXlvdXQ+IG1fbGF5b3V0OwotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVSZW5k
ZXJQaXBlbGluZSwgaXNSZW5kZXJQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2RlMmRhOWFhYTMzNmE3YWYwMWQ5MzI4MmRlZmUwMmFjOWE3MzkzMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0g
Y2xhc3MgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgewotICAgIFBvaW50TGlzdCwKLSAgICBMaW5lTGlz
dCwKLSAgICBMaW5lU3RyaXAsCi0gICAgVHJpYW5nbGVMaXN0LAotICAgIFRyaWFuZ2xlU3RyaXAK
LX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQ
cmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neTsKLSAgICBWZWN0b3I8R1BVQ29sb3JT
dGF0ZURlc2NyaXB0b3I+IGNvbG9yU3RhdGVzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVRGVwdGhT
dGVuY2lsU3RhdGVEZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IgdmVydGV4SW5wdXQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0
cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvciYmIHZlcnRleCwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3I+JiYgZnJhZ21lbnQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIGJh
c2UpCi0gICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUobGF5b3V0
KSB9Ci0gICAgICAgICwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZShiYXNlKQotICAg
ICAgICAsIHZlcnRleFN0YWdlKFdURk1vdmUodmVydGV4KSkKLSAgICAgICAgLCBmcmFnbWVudFN0
YWdlKFdURk1vdmUoZnJhZ21lbnQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFw
dGVyT3B0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmEwYmQxMDY2YjAx
YTA2M2NmYzM4NmNiYzFkZDRjOTNkODRiMTYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlIDxvcHRpb25hbD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVBv
d2VyUHJlZmVyZW5jZSA6IGJvb2wgeyBMb3dQb3dlciwgSGlnaFBlcmZvcm1hbmNlIH07Ci0KLXN0
cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUG93
ZXJQcmVmZXJlbmNlPiBwb3dlclByZWZlcmVuY2U7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmMWE2NDQ2OWZjY2ViNjc0ZDg5ZmVlYTBiYmExMmNlM2ZmM2YyYTM2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotCi1jbGFz
cyBHUFVTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2FtcGxlcj4gewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8R1BVU2FtcGxlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYs
IGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXIqIHBs
YXRmb3JtU2FtcGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1TYW1wbGVyLmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgR1BVU2FtcGxlcihQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciYmKTsK
LQotICAgIFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyIG1fcGxhdGZvcm1TYW1wbGVyOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBs
ZXJEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzcwZmVkZDQw
OWNmZTJiZDM3NjAxNTgyNjZlMDAzNDAxNzExYTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQ29tcGFyZUZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBHUFVBZGRyZXNzTW9kZSB7Ci0gICAgQ2xhbXBUb0VkZ2UsCi0gICAgUmVwZWF0LAotICAg
IE1pcnJvclJlcGVhdCwKLX07Ci0KLWVudW0gY2xhc3MgR1BVRmlsdGVyTW9kZSB7Ci0gICAgTmVh
cmVzdCwKLSAgICBMaW5lYXIsCi19OwotCi1zdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3Igewot
ICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVSB7IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRv
RWRnZSB9OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlViB7IEdQVUFkZHJlc3NNb2Rl
OjpDbGFtcFRvRWRnZSB9OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyB7IEdQVUFk
ZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9OwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmlsdGVyIHsg
R1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWluRmlsdGVyIHsg
R1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFwRmlsdGVy
IHsgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIGZsb2F0IGxvZE1pbkNsYW1wIHsgMCB9
OwotICAgIGZsb2F0IGxvZE1heENsYW1wIHsgMHhmZmZmZmZmZiB9OwotICAgIHVuc2lnbmVkIG1h
eEFuaXNvdHJvcHkgeyAxIH07Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlv
biB7IEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU1YTU2ZDExODY5YTJmOTMwOTk3MzE0ZmEwZDY2NDFlYTIwMGMx
OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRl
ICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7
Ci0KLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVTaGFkZXJN
b2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYsIGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1
bGUoKSBjb25zdCB7IHJldHVybiBtX3dobHNsTW9kdWxlID8gbnVsbHB0ciA6IG1fcGxhdGZvcm1T
aGFkZXJNb2R1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBXSExTTDo6U2hhZGVyTW9kdWxlKiB3aGxz
bE1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hsc2xNb2R1bGUuZ2V0KCk7IH0KLSNlbmRpZgot
Ci1wcml2YXRlOgotICAgIEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0
UHRyJiYpOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVTaGFkZXJNb2R1bGUo
VW5pcXVlUmVmPFdITFNMOjpTaGFkZXJNb2R1bGU+JiYgd2hsc2xNb2R1bGUpOwotI2VuZGlmCi0K
LSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXSExTTDo6
U2hhZGVyTW9kdWxlPiBtX3dobHNsTW9kdWxlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZmUwYWQ1YTg3YjMy
YzQ4YWUzNGJkNzZkMmYxYzU5ODFiZTdkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNzgzMjQ4OTEzZTQ1MWRjMzZhNDdhYjVmMGUyM2Nh
MjRhZGMzMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVT
dG9yZU9wIHsKLSAgICBTdG9yZQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2UyNzc0N2UzZTdlMjZkZGJlMTI3MDcwMDA4MGRhZDIwMTRhYWZhNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotLy8gUGxhdGZvcm1MYXllciBpbXBsZW1lbnRhdGlvbiBuZWVk
ZWQgb3RoZXJ3aXNlIGNvbXBpbGluZyBkZXJpdmVkIHNvdXJjZXMgd2lsbCBmYWlsLgotI2lmIFVT
RShOSUNPU0lBKQotI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCi0jZWxpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eVByb3ZpZGVyLmgiCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7
Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZUZvcm1hdDsKLQotY2xhc3MgR1BVU3dhcENoYWluIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxHUFVTd2FwQ2hhaW4+IHRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
JiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlH
ZXRDdXJyZW50VGV4dHVyZSgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIFJldGFpblB0cjxDQU1l
dGFsRHJhd2FibGU+IHRha2VEcmF3YWJsZSgpOwotI2VuZGlmCi0KLSAgICAvLyBGb3IgR1BVQ2Fu
dmFzQ29udGV4dC4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0K
LSAgICB2b2lkIHByZXNlbnQoKTsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKLSAgICB2b2lkIGRlc3Ryb3koKSB7IG1fY3VycmVudERyYXdhYmxlID0gbnVsbHB0cjsg
fQotCi1wcml2YXRlOgotICAgIEdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRy
JiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVN3
YXBMYXllclNtYXJ0UHRyIG1fcGxhdGZvcm1Td2FwTGF5ZXI7Ci0gICAgUGxhdGZvcm1EcmF3YWJs
ZVNtYXJ0UHRyIG1fY3VycmVudERyYXdhYmxlOwotICAgIE9wdGlvblNldDxHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzPiBtX3VzYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NTcwNDIwNDYzY2FhYmExNWZlN2Q3MzE2MmFhOGVhN2JkNDgx
ZjkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVk
ZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7
Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3Mg
dXNhZ2UgeyBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVyZVVzYWdl
OjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkgfTsKLX07Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yIDogR1BVU3dhcENoYWluRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IoUmVmPEdQVURldmljZT4mJiBncHVEZXZpY2UsIGNvbnN0IEdQVVN3YXBDaGFp
bkRlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JC
YXNlKGJhc2UpCi0gICAgICAgICwgZGV2aWNlKFdURk1vdmUoZ3B1RGV2aWNlKSkKLSAgICB7Ci0g
ICAgfQotICAgIAotICAgIFJlZjxHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWVmY2Q1NmY0MTg1NTgzYmY5MGM2ZGE3YjQ0YWM3ZjZjMDRiODUwMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0
dXJlVXNhZ2UuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBH
UFVUZXh0dXJlRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdQVVRleHR1cmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+
IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYs
IEdQVUVycm9yU2NvcGVzJik7Ci0gICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxh
dGZvcm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+
KTsKLQotICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KLSAgICBib29sIGlzQ29weVNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29w
eVNvdXJjZSk7IH0KLSAgICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24p
OyB9Ci0gICAgYm9vbCBpc091dHB1dEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdl
LmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpOyB9Ci0g
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWluc0FueSh7
IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6Rmxh
Z3M6OlNhbXBsZWQgfSk7IH0KLSAgICBib29sIGlzU2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCk7IH0KLSAgICBi
b29sIGlzU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6U3RvcmFnZSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVVzYWdlOyB9Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVy
ZT4gdHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBt
X3BsYXRmb3JtVGV4dHVyZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBH
UFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3Jt
VGV4dHVyZTsKLQotICAgIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3VzYWdl
OwotICAgIHVuc2lnbmVkIG1fcGxhdGZvcm1Vc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmE2ODVhMjE5ZjMyOWI2MDcwNGQzZTY1NjIz
YjVhNmFiN2VkZTIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUV4dGVudDNELmgi
Ci0jaW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2Fn
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZURpbWVu
c2lvbiB7Ci0gICAgXzFkLAotICAgIF8yZCwKLSAgICBfM2QKLX07Ci0gICAgCi1zdHJ1Y3QgR1BV
VGV4dHVyZURlc2NyaXB0b3IgewotICAgIEdQVUV4dGVudDNEIHNpemU7Ci0gICAgdW5zaWduZWQg
bWlwTGV2ZWxDb3VudDsKLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudDsKLSAgICBHUFVUZXh0dXJl
RGltZW5zaW9uIGRpbWVuc2lvbjsKLSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjZkMGZkYTE2NmI4MzAzODg4NWZiMTIyZGM0YjdlM2E4NmE0YTllMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRleHR1
cmVGb3JtYXQgewotICAgIFJnYmE4dW5vcm0sCi0gICAgUmdiYTh1aW50LAotICAgIEJncmE4dW5v
cm0sCi0gICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgQmdyYTh1bm9ybVNSR0IsCi0gICAg
UmdiYTE2ZmxvYXQsCi19OwotCi11c2luZyBQbGF0Zm9ybVRleHR1cmVGb3JtYXQgPSB1bnNpZ25l
ZDsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjQzZTZmYmFlOWVlNDA5NTFlODU0OGExNmE4YmQ3MjlhZDg4
YmFkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgPSB1bnNpZ25l
ZDsKLSAgICAKLWNsYXNzIEdQVVRleHR1cmVVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRl
eHR1cmVVc2FnZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVUZXh0dXJl
VXNhZ2VGbGFncyB7Ci0gICAgICAgIENvcHlTb3VyY2UgICAgICAgPSAxIDw8IDAsCi0gICAgICAg
IENvcHlEZXN0aW5hdGlvbiAgPSAxIDw8IDEsCi0gICAgICAgIFNhbXBsZWQgICAgICAgICAgPSAx
IDw8IDIsCi0gICAgICAgIFN0b3JhZ2UgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAgIE91dHB1
dEF0dGFjaG1lbnQgPSAxIDw8IDQsCi0gICAgICAgIE1heGltdW1WYWx1ZSAgICAgPSAxIDw8IDUs
Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVV
dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ5YTVjNzA3NGM0YWU2MzNl
OGU2MDEyYzVjYzg3NjhiZmI0ZjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGls
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlv
bi5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1QbGF0Zm9ybVRleHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4
dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0KTsKLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBs
YXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5j
dGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
VmFsaWRhdGlvbkVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
OTdlNTQ1NDYxMzg2Y2ZmY2Q0MTA4NzdkYzM2MTRmNmRmMTgyODc5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVW
YWxpZGF0aW9uRXJyb3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmPEdQVVZhbGlkYXRpb25FcnJvcj4gR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQ
VVZhbGlkYXRpb25FcnJvcihtZXNzYWdlKSk7Ci19Ci0KLUdQVVZhbGlkYXRpb25FcnJvcjo6R1BV
VmFsaWRhdGlvbkVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICA6IG1fbWVzc2FnZSht
ZXNzYWdlKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVZhbGlkYXRpb25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3MjI1YWMyMDdmY2EzYmVkYmU2MTE1NWE3NTk3YWRhNTU2NzM4NWUwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHUFVWYWxpZGF0aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVWYWxpZGF0aW9u
RXJyb3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVVZhbGlkYXRpb25FcnJvcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVZhbGlk
YXRpb25FcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDNhYzYzNWU4ZTVkNjc5ODQyNmNlNWNmZGJmZWNkZWUzMTI5ODA1My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVWZXJ0ZXhGb3JtYXQgewotICAg
IEZsb2F0LAotICAgIEZsb2F0MiwKLSAgICBGbG9hdDMsCi0gICAgRmxvYXQ0LAotfTsKLQotc3Ry
dWN0IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHVpbnQ2NF90IG9mZnNldDsK
LSAgICBHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0OwotICAgIHVuc2lnbmVkIHNoYWRlckxvY2F0aW9u
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1OGJhM2YyMzU0ODQxZDhhZDRlZThmMTI3MjJmNDIwMDgyNDRmMTAxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVt
IGNsYXNzIEdQVUlucHV0U3RlcE1vZGUgewotICAgIFZlcnRleCwKLSAgICBJbnN0YW5jZSwKLX07
Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRfdCBzdHJp
ZGU7Ci0gICAgR1BVSW5wdXRTdGVwTW9kZSBzdGVwTW9kZTsKLSAgICBWZWN0b3I8R1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvcj4gYXR0cmlidXRlU2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyMzJmZTU5OTE1ZWY1YTkx
YThhYTVhYTU4ZTc0YzA2NDM5ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUluZGV4Rm9ybWF0IHsKLSAgICBV
aW50MTYsCi0gICAgVWludDMyLAotfTsKLQotc3RydWN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRv
ciB7Ci0gICAgR1BVSW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQ7Ci0gICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRH
cm91cEFsbG9jYXRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgzNWU3ZDQyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxH
UFVCaW5kR3JvdXBBbGxvY2F0b3I+IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKEdQVUVy
cm9yU2NvcGVzJiBlcnJvcnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQmluZEdy
b3VwQWxsb2NhdG9yKGVycm9ycykpOwotfQotCi1HUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJp
bmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotICAgIDogbV9lcnJvclNj
b3BlcyhtYWtlUmVmKGVycm9ycykpCi17Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXN0ZDo6b3B0
aW9uYWw8R1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHM+IEdQVUJp
bmRHcm91cEFsbG9jYXRvcjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29k
ZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNv
ZGVyICpjb21wdXRlKQotewotICAgIGlkPE1UTERldmljZT4gZGV2aWNlID0gbmlsOwotICAgIGF1
dG8gY2hlY2tlZE9mZnNldCA9IENoZWNrZWQ8TlNVSW50ZWdlcj4obV9sYXN0T2Zmc2V0KTsKLQot
ICAgIGlmICh2ZXJ0ZXgpIHsKLSAgICAgICAgZGV2aWNlID0gdmVydGV4LmRldmljZTsKLSAgICAg
ICAgY2hlY2tlZE9mZnNldCArPSB2ZXJ0ZXguZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0gICAgaWYg
KGZyYWdtZW50KSB7Ci0gICAgICAgIGRldmljZSA9IGZyYWdtZW50LmRldmljZTsKLSAgICAgICAg
Y2hlY2tlZE9mZnNldCArPSBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLSAgICBpZiAo
Y29tcHV0ZSkgewotICAgICAgICBkZXZpY2UgPSBjb21wdXRlLmRldmljZTsKLSAgICAgICAgY2hl
Y2tlZE9mZnNldCArPSBjb21wdXRlLmVuY29kZWRMZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gTm8g
YXJndW1lbnRzOyBub3RoaW5nIHRvIGJlIGRvbmUuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBpZiAoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpIHsK
LSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6
Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBhdXRvIG5l
d09mZnNldCA9IGNoZWNrZWRPZmZzZXQudmFsdWUoKTsKLQotICAgIGlmIChtX2FyZ3VtZW50QnVm
ZmVyICYmIG5ld09mZnNldCA+IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKSB7Ci0gICAg
ICAgIGlmICghcmVhbGxvY2F0ZShuZXdPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9IGVsc2UgaWYgKCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgIC8vIEJhc2VkIG9m
ZiBtaW1pbXVtIGFsbG9jYXRpb24gZm9yIGEgc2hhcmVkLW1lbW9yeSBNVExCdWZmZXIgb24gbWFj
T1MuCi0gICAgICAgIE5TVUludGVnZXIgbWluaW11bVNpemUgPSA0MDk2OwotICAgICAgICBpZiAo
bWluaW11bVNpemUgPCBuZXdPZmZzZXQpCi0gICAgICAgICAgICBtaW5pbXVtU2l6ZSA9IG5ld09m
ZnNldDsKLQotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9h
cmd1bWVudEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm1pbmlt
dW1TaXplIG9wdGlvbnM6MF0pOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICAgICAgaWYgKCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2Nv
cGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFyZ3VtZW50QnVm
ZmVyT2Zmc2V0cyBvZmZzZXRzOwotCi0gICAgLy8gTWF0aCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rp
b24gaXMgZ3VhcmRlZCBhZ2FpbnN0IG92ZXJmbG93IGJ5IG5ld09mZnNldCBjYWxjdWxhdGlvbi4K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICh2ZXJ0ZXgpIHsKLSAg
ICAgICAgb2Zmc2V0cy52ZXJ0ZXggPSBtX2xhc3RPZmZzZXQ7Ci0gICAgICAgIFt2ZXJ0ZXggc2V0
QXJndW1lbnRCdWZmZXI6bV9hcmd1bWVudEJ1ZmZlci5nZXQoKSBvZmZzZXQ6Km9mZnNldHMudmVy
dGV4XTsKLSAgICB9Ci0gICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIG9mZnNldHMuZnJhZ21l
bnQgPSAodmVydGV4ID8gdmVydGV4LmVuY29kZWRMZW5ndGggOiAwKSArIG1fbGFzdE9mZnNldDsK
LSAgICAgICAgW2ZyYWdtZW50IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0
KCkgb2Zmc2V0OipvZmZzZXRzLmZyYWdtZW50XTsKLSAgICB9Ci0gICAgaWYgKGNvbXB1dGUpIHsK
LSAgICAgICAgb2Zmc2V0cy5jb21wdXRlID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3Ro
IDogMCkgKyAoZnJhZ21lbnQgPyBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBtX2xhc3RP
ZmZzZXQ7Ci0gICAgICAgIFtjb21wdXRlIHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZm
ZXIuZ2V0KCkgb2Zmc2V0OipvZmZzZXRzLmNvbXB1dGVdOwotICAgIH0KLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG1fbGFzdE9mZnNldCA9IG5ld09mZnNldDsKLSAgICAr
K21fbnVtQmluZEdyb3VwczsKLQotICAgIHJldHVybiBvZmZzZXRzOwotfQotCi0jZW5kaWYgLy8g
VVNFKE1FVEFMKQotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMDY1NywgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDY1OCBPcHRpbWl6ZSByZWFsbG9jYXRpb24gYW5kIHJlc2V0IGJlaGF2aW9yLgotYm9vbCBHUFVC
aW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUoTlNVSW50ZWdlciBuZXdPZmZzZXQpCi17Ci0g
ICAgTVRMQnVmZmVyICpuZXdCdWZmZXIgPSBuaWw7Ci0KLSAgICBhdXRvIG5ld0xlbmd0aCA9IENo
ZWNrZWQ8TlNVSW50ZWdlcj4obV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5sZW5ndGgpOwotICAgIHdo
aWxlIChuZXdMZW5ndGggPCBuZXdPZmZzZXQpIHsKLSAgICAgICAgbmV3TGVuZ3RoICs9IG5ld0xl
bmd0aCAvIDRVOwotCi0gICAgICAgIGlmIChuZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0g
ICAgICAgICAgICBuZXdMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPE5TVUludGVnZXI+Ojpt
YXgoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBuZXdCdWZmZXIgPSBbbV9hcmd1bWVudEJ1ZmZl
ci5nZXQoKS5kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDpuZXdMZW5ndGgudmFsdWUoKSBvcHRp
b25zOjBdOwotICAgIG1lbWNweShuZXdCdWZmZXIuY29udGVudHMsIG1fYXJndW1lbnRCdWZmZXIu
Z2V0KCkuY29udGVudHMsIG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsKLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbmV3QnVmZmVyKSB7Ci0gICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1l
bW9yeSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2FyZ3VtZW50QnVm
ZmVyID0gYWRvcHROUyhuZXdCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdQ
VUJpbmRHcm91cEFsbG9jYXRvcjo6dHJ5UmVzZXQoKQotewotICAgIC0tbV9udW1CaW5kR3JvdXBz
OwotICAgIAotICAgIEFTU0VSVChtX251bUJpbmRHcm91cHMgPiAtMSk7Ci0KLSAgICBpZiAoIW1f
bnVtQmluZEdyb3VwcykgewotICAgICAgICBtX2FyZ3VtZW50QnVmZmVyID0gbnVsbHB0cjsKLSAg
ICAgICAgbV9sYXN0T2Zmc2V0ID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3Vw
TGF5b3V0TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWFjZjc4NmJi
YmVlN2E5MWEwN2EzNDZlN2YwMWU0ZTFjMDBkZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTg5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJp
bmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2
aWNlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTERhdGFUeXBl
IE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoR1BVQmluZGluZ1R5cGUgdHlwZSkKLXsKLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAg
ICByZXR1cm4gTVRMRGF0YVR5cGVTYW1wbGVyOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlNh
bXBsZWRUZXh0dXJlOgotICAgICAgICByZXR1cm4gTVRMRGF0YVR5cGVUZXh0dXJlOwotICAgIGNh
c2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlw
ZTo6RHluYW1pY1VuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFn
ZUJ1ZmZlcjoKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpEeW5hbWljU3RvcmFnZUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlUG9pbnRlcjsKLSAgICB9Ci19Ci0KLXVzaW5nIEFy
Z3VtZW50QXJyYXkgPSBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnREZXNjcmlw
dG9yICo+PjsKLXN0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50VG9BcnJheShBcmd1bWVudEFycmF5
JiBhcnJheSwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnQpCi17Ci0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgaWYgKCFhcnJheSkKLSAgICAgICAg
YXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czph
cmd1bWVudC5nZXQoKSwgbmlsXSk7Ci0gICAgZWxzZQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OmFyZ3VtZW50LmdldCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0
YXRpYyBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiB0cnlDcmVhdGVNdGxBcmd1bWVudEVu
Y29kZXIoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEFyZ3VtZW50QXJyYXkgYXJyYXkpCi17Ci0g
ICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZW5jb2RlcjsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGVuY29kZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSBuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOmFycmF5LmdldCgpXSk7
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghZW5jb2RlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogVW5hYmxl
IHRvIGNyZWF0ZSBNVExBcmd1bWVudEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLSAgICByZXR1cm4gZW5jb2RlcjsKLX07Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRM
QXJndW1lbnREZXNjcmlwdG9yPiBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGUgZGF0YVR5
cGUsIE5TVUludGVnZXIgaW5kZXgpCi17Ci0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3Jp
cHRvcj4gbXRsQXJndW1lbnQ7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
bXRsQXJndW1lbnQgPSBhZG9wdE5TKFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XSk7Ci0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzODQgVGhpcyBuZWVkcyB0byBzZXQgdGhlICJ0
ZXh0dXJlVHlwZSIgZmllbGQKLSAgICBbbXRsQXJndW1lbnQgc2V0RGF0YVR5cGU6ZGF0YVR5cGVd
OwotICAgIFttdGxBcmd1bWVudCBzZXRJbmRleDppbmRleF07Ci0gICAgcmV0dXJuIG10bEFyZ3Vt
ZW50OwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBMYXlvdXQ6
OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURl
dmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNy
ZWF0ZSgpOiBJbnZhbGlkIE1UTERldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgQXJndW1lbnRBcnJheSB2ZXJ0ZXhBcmdzLCBmcmFnbWVudEFyZ3MsIGNvbXB1
dGVBcmdzLCB2ZXJ0ZXhMZW5ndGhzLCBmcmFnbWVudExlbmd0aHMsIGNvbXB1dGVMZW5ndGhzOwot
ICAgIEJpbmRpbmdzTWFwVHlwZSBiaW5kaW5nc01hcDsKLQotICAgIHVuc2lnbmVkIGludGVybmFs
TmFtZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhCYXNlID0gZGVzY3JpcHRvci5i
aW5kaW5ncy5zaXplKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBiaW5kaW5nIDogZGVzY3JpcHRv
ci5iaW5kaW5ncykgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4
OwotICAgICAgICBhdXRvIGludGVybmFsRGV0YWlscyA9IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBM
YXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgewotICAgICAgICAgICAgc3dpdGNoIChiaW5k
aW5nLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZm
ZXI6Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFzZSsrOwot
ICAgICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIg
eyAqZXh0cmFJbmRleCB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1p
Y1VuaWZvcm1CdWZmZXI6Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVu
Z3RoQmFzZSsrOwotICAgICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5
bmFtaWNVbmlmb3JtQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BV
QmluZGluZ1R5cGU6OlNhbXBsZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91
cExheW91dDo6U2FtcGxlciB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpT
YW1wbGVkVGV4dHVyZToKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0
OjpTYW1wbGVkVGV4dHVyZSB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpT
dG9yYWdlQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0
aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9y
YWdlQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGJpbmRpbmcudHlwZSA9PSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0
b3JhZ2VCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0
aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5h
bWljU3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0pKCk7Ci0gICAgICAgIEJpbmRpbmcgYmluZGluZ0RldGFpbHMgPSB7IGJpbmRpbmcsIGludGVy
bmFsTmFtZSsrLCBXVEZNb3ZlKGludGVybmFsRGV0YWlscykgfTsKLSAgICAgICAgaWYgKCFiaW5k
aW5nc01hcC5hZGQoYmluZGluZy5iaW5kaW5nLCBiaW5kaW5nRGV0YWlscykpIHsKLSAgICAgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBEdXBsaWNh
dGUgYmluZGluZyAldSBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yISIsIGJp
bmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQot
Ci0gICAgICAgIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0g
YXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoYmluZGluZy50eXBl
KSwgYmluZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lKTsKLQotICAgICAgICBpZiAoIW10bEFyZ3Vt
ZW50KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlD
cmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExBcmd1bWVudERlc2NyaXB0b3IgZm9yIGJpbmRp
bmcgJXUhIiwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhZGRJbmRpY2VzID0gWyZdKEFyZ3VtZW50QXJyYXkm
IGFyZ3MsIEFyZ3VtZW50QXJyYXkmIGxlbmd0aHMpIC0+IGJvb2wgewotICAgICAgICAgICAgYXBw
ZW5kQXJndW1lbnRUb0FycmF5KGFyZ3MsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAgIGlmIChl
eHRyYUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3Jp
cHRvcj4gbXRsQXJndW1lbnQgPSBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGVVSW50Miwg
KmV4dHJhSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghbXRsQXJndW1lbnQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRl
KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9yIGZvciBiaW5kaW5nICV1
ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRUb0FycmF5
KGxlbmd0aHMsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQ
VVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4KSAmJiAhYWRkSW5kaWNlcyh2ZXJ0ZXhBcmdzLCB2
ZXJ0ZXhMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAo
KGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6RnJhZ21lbnQpICYm
ICFhZGRJbmRpY2VzKGZyYWdtZW50QXJncywgZnJhZ21lbnRMZW5ndGhzKSkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNo
YWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkgJiYgIWFkZEluZGljZXMoY29tcHV0ZUFyZ3MsIGNv
bXB1dGVMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFt2ZXJ0ZXhBcmdzIGFkZE9iamVjdHNG
cm9tQXJyYXk6dmVydGV4TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2ZyYWdtZW50QXJncyBhZGRPYmpl
Y3RzRnJvbUFycmF5OmZyYWdtZW50TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2NvbXB1dGVBcmdzIGFk
ZE9iamVjdHNGcm9tQXJyYXk6Y29tcHV0ZUxlbmd0aHMuZ2V0KCldOwotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRl
eCwgZnJhZ21lbnQsIGNvbXB1dGU7Ci0KLSAgICBpZiAodmVydGV4QXJncyAmJiAhKHZlcnRleCA9
IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2RlcihkZXZpY2UsIHZlcnRleEFyZ3MpKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGZyYWdtZW50QXJncyAmJiAhKGZyYWdtZW50ID0g
dHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGRldmljZSwgZnJhZ21lbnRBcmdzKSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChjb21wdXRlQXJncyAmJiAhKGNvbXB1dGUgPSB0
cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoZGV2aWNlLCBjb21wdXRlQXJncykpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmluZEdyb3Vw
TGF5b3V0KFdURk1vdmUoYmluZGluZ3NNYXApLCBXVEZNb3ZlKHZlcnRleCksIFdURk1vdmUoZnJh
Z21lbnQpLCBXVEZNb3ZlKGNvbXB1dGUpKSk7Ci19Ci0KLUdQVUJpbmRHcm91cExheW91dDo6R1BV
QmluZEdyb3VwTGF5b3V0KEJpbmRpbmdzTWFwVHlwZSYmIGJpbmRpbmdzTWFwLCBSZXRhaW5QdHI8
TVRMQXJndW1lbnRFbmNvZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rl
cj4mJiBmcmFnbWVudCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKQot
ICAgIDogbV92ZXJ0ZXhFbmNvZGVyKFdURk1vdmUodmVydGV4KSkKLSAgICAsIG1fZnJhZ21lbnRF
bmNvZGVyKFdURk1vdmUoZnJhZ21lbnQpKQotICAgICwgbV9jb21wdXRlRW5jb2RlcihXVEZNb3Zl
KGNvbXB1dGUpKQotICAgICwgbV9iaW5kaW5nc01hcChXVEZNb3ZlKGJpbmRpbmdzTWFwKSkKLXsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCaW5kR3JvdXBNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTA2OThiMTlhZWNiZjJlOTQ5ODM4ZThjNjFkZGRkMjlmMDU5ZTFiZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KKysrIC9kZXYvbnVsbApA
QCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR1BVQmluZEdyb3VwLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVC
aW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNp
bXBvcnQgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cExh
eW91dC5oIgotI2ltcG9ydCAiR1BVU2FtcGxlci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVz
b3VyY2VBc0J1ZmZlckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAg
IFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEdQVUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IFJlc291cmNlIGlzIG5vdCBhIGJ1ZmZlciB0eXBlISIsIGZ1bmN0aW9uTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIGF1dG8mIGJ1ZmZl
ckJpbmRpbmcgPSBXVEY6OmdldDxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSk7Ci0gICAgaWYg
KCFidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IEludmFsaWQgTVRMQnVmZmVyIGluIEdQVUJ1ZmZlckJpbmRpbmchIiwgZnVu
Y3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgaWYg
KCFpc0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcuc2l6ZSkgfHwgYnVmZmVyQmlu
ZGluZy5zaXplID4gYnVmZmVyQmluZGluZy5idWZmZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlckJpbmRpbmcgc2l6ZSBpcyB0b28gbGFyZ2UhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAg
Ly8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9y
bXMuCi0gICAgaWYgKCFpc0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcub2Zmc2V0
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEJ1ZmZlciBvZmZzZXQgaXMgdG9vIGxhcmdl
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
ICAgIHJldHVybiBHUFVCdWZmZXJCaW5kaW5nIHsgYnVmZmVyQmluZGluZy5idWZmZXIuY29weVJl
ZigpLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH07Ci19Ci0KLXN0
YXRpYyB2b2lkIHNldEJ1ZmZlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50
RW5jb2RlciwgY29uc3QgR1BVQnVmZmVyQmluZGluZyYgYnVmZmVyQmluZGluZywgdW5zaWduZWQg
bmFtZSwgdW5zaWduZWQgbGVuZ3RoTmFtZSkKLXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVy
ICYmIGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKTsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIEJvdW5kcyBjaGVjayB3aGVuIGNvbnZlcnRp
bmcgR1BVQnVmZmVyQmluZGluZyBlbnN1cmVzIHRoYXQgTlNVSW50ZWdlciBjYXN0IG9mIHVpbnQ2
NF90IG9mZnNldCBpcyBzYWZlLgotICAgIFthcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZl
ckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpIG9mZnNldDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihidWZmZXJCaW5kaW5nLm9mZnNldCkgYXRJbmRleDpuYW1lXTsKLSAgICB2b2lkKiBs
ZW5ndGhQb2ludGVyID0gW2FyZ3VtZW50RW5jb2RlciBjb25zdGFudERhdGFBdEluZGV4Omxlbmd0
aE5hbWVdOwotICAgIG1lbWNweShsZW5ndGhQb2ludGVyLCAmYnVmZmVyQmluZGluZy5zaXplLCBz
aXplb2YodWludDY0X3QpKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0gICAg
Ci1zdGF0aWMgTVRMU2FtcGxlclN0YXRlICp0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihjb25z
dCBHUFVCaW5kaW5nUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlv
bk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFt
ZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IEdQ
VVNhbXBsZXI+PihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJj
ZSBpcyBub3QgYSBHUFVTYW1wbGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLSAgICBhdXRvIHNhbXBsZXJTdGF0ZSA9IFdURjo6Z2V0PFJlZjxjb25z
dCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpLT5wbGF0Zm9ybVNhbXBsZXIoKTsKLSAgICBpZiAoIXNh
bXBsZXJTdGF0ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMU2FtcGxl
clN0YXRlIGluIEdQVVNhbXBsZXIgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHNhbXBsZXJTdGF0ZTsKLX0KLQotc3Rh
dGljIHZvaWQgc2V0U2FtcGxlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50
RW5jb2RlciwgTVRMU2FtcGxlclN0YXRlICpzYW1wbGVyLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAg
ICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHNhbXBsZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRTYW1wbGVyU3RhdGU6c2Ft
cGxlciBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0K
LXN0YXRpYyBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUoY29uc3Qg
R1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lKQotICAgIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25O
YW1lKTsKLSNlbmRpZgotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8R1BVVGV4
dHVyZT4+KHJlc291cmNlKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJlc291cmNlIGlz
IG5vdCBhIEdQVVRleHR1cmVWaWV3ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLSAgICBhdXRvJiB0ZXh0dXJlUmVmID0gV1RGOjpnZXQ8UmVmPEdQVVRl
eHR1cmU+PihyZXNvdXJjZSk7Ci0gICAgaWYgKCF0ZXh0dXJlUmVmLT5wbGF0Zm9ybVRleHR1cmUo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBpbiBHUFVU
ZXh0dXJlVmlldyBiaW5kaW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLSAgICByZXR1cm4gdGV4dHVyZVJlZi5jb3B5UmVmKCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHNldFRleHR1cmVPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1bWVudEVu
Y29kZXIsIE1UTFRleHR1cmUgKnRleHR1cmUsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VS
VChhcmd1bWVudEVuY29kZXIgJiYgdGV4dHVyZSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICBbYXJndW1lbnRFbmNvZGVyIHNldFRleHR1cmU6dGV4dHVyZSBhdEluZGV4
OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLVJlZlB0cjxHUFVC
aW5kR3JvdXA+IEdQVUJpbmRHcm91cDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVUJpbmRHcm91cERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYgYWxsb2NhdG9yKQotewot
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVCaW5kR3JvdXA6OnRyeUNy
ZWF0ZSgpIjsKLSAgICAKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleEVuY29kZXIgPSBk
ZXNjcmlwdG9yLmxheW91dC0+dmVydGV4RW5jb2RlcigpOwotICAgIE1UTEFyZ3VtZW50RW5jb2Rl
ciAqZnJhZ21lbnRFbmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPmZyYWdtZW50RW5jb2Rlcigp
OwotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIgPSBkZXNjcmlwdG9yLmxh
eW91dC0+Y29tcHV0ZUVuY29kZXIoKTsKLQotICAgIGF1dG8gb2Zmc2V0cyA9IGFsbG9jYXRvci5h
bGxvY2F0ZUFuZFNldEVuY29kZXJzKHZlcnRleEVuY29kZXIsIGZyYWdtZW50RW5jb2RlciwgY29t
cHV0ZUVuY29kZXIpOwotICAgIGlmICghb2Zmc2V0cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCi0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gYm91bmRCdWZmZXJzOwotICAgIEhh
c2hTZXQ8UmVmPEdQVVRleHR1cmU+PiBib3VuZFRleHR1cmVzOwotCi0gICAgLy8gU2V0IGVhY2gg
cmVzb3VyY2Ugb24gZWFjaCBNVExBcmd1bWVudEVuY29kZXIgaXQgc2hvdWxkIGJlIHZpc2libGUg
b24uCi0gICAgY29uc3QgYXV0byYgbGF5b3V0QmluZGluZ3NNYXAgPSBkZXNjcmlwdG9yLmxheW91
dC0+YmluZGluZ3NNYXAoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNlQmluZGluZyA6
IGRlc2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgYXV0byBpbmRleCA9IHJlc291cmNlQmlu
ZGluZy5iaW5kaW5nOwotICAgICAgICBhdXRvIGxheW91dEl0ZXJhdG9yID0gbGF5b3V0QmluZGlu
Z3NNYXAuZmluZChpbmRleCk7Ci0gICAgICAgIGlmIChsYXlvdXRJdGVyYXRvciA9PSBsYXlvdXRC
aW5kaW5nc01hcC5lbmQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCaW5k
R3JvdXBCaW5kaW5nICV1IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rp
b25OYW1lLCBpbmRleCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvIGxheW91dEJpbmRpbmcgPSBsYXlvdXRJdGVyYXRvci0+dmFsdWU7Ci0gICAg
ICAgIGlmIChsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ID09IEdQVVNo
YWRlclN0YWdlOjpGbGFnczo6Tm9uZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGJvb2wgaXNGb3JWZXJ0ZXggPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmls
aXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpWZXJ0ZXg7Ci0gICAgICAgIGJvb2wgaXNGb3JG
cmFnbWVudCA9IGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVT
aGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50OwotICAgICAgICBib29sIGlzRm9yQ29tcHV0ZSA9
IGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFn
ZTo6RmxhZ3M6OkNvbXB1dGU7Ci0KLSAgICAgICAgaWYgKGlzRm9yVmVydGV4ICYmICF2ZXJ0ZXhF
bmNvZGVyKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBhcmd1bWVu
dCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzRm9y
RnJhZ21lbnQgJiYgIWZyYWdtZW50RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBObyBmcmFnbWVudCBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIs
IGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGlzRm9yQ29tcHV0ZSAmJiAhY29tcHV0ZUVuY29kZXIpIHsKLSAg
ICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gY29tcHV0ZSBhcmd1bWVudCBlbmNvZGVyIGZv
dW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGhhbmRsZUJ1ZmZlciA9
IFsmXSh1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWUpIC0+IGJvb2wgewotICAgICAgICAgICAg
YXV0byBidWZmZXJSZXNvdXJjZSA9IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKHJlc291
cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlmICghYnVm
ZmVyUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKGlzRm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2Rlcih2ZXJ0
ZXhFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lLCBp
bnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAg
ICAgICAgICAgICAgc2V0QnVmZmVyT25FbmNvZGVyKGZyYWdtZW50RW5jb2RlciwgKmJ1ZmZlclJl
c291cmNlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsK
LSAgICAgICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0QnVmZmVy
T25FbmNvZGVyKGNvbXB1dGVFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcu
aW50ZXJuYWxOYW1lLCBpbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgYm91bmRCdWZm
ZXJzLmFkZFZvaWQoV1RGTW92ZShidWZmZXJSZXNvdXJjZS0+YnVmZmVyKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1
ZmZlciYgdW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxl
QnVmZmVyKHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZd
KEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXImIGR5bmFtaWNVbmlmb3Jt
QnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIoZHluYW1p
Y1VuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6U2FtcGxlciYpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0byBzYW1w
bGVyU3RhdGUgPSB0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihyZXNvdXJjZUJpbmRpbmcucmVz
b3VyY2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaXNGb3JWZXJ0ZXgp
Ci0gICAgICAgICAgICAgICAgc2V0U2FtcGxlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVyLCBzYW1w
bGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChp
c0ZvckZyYWdtZW50KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIoZnJhZ21l
bnRFbmNvZGVyLCBzYW1wbGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAg
ICAgICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0U2FtcGxlck9u
RW5jb2Rlcihjb21wdXRlRW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVy
bmFsTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6U2FtcGxlZFRleHR1cmUmKSAtPiBib29sIHsKLSAgICAgICAgICAgIGF1
dG8gdGV4dHVyZVJlc291cmNlID0gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUocmVzb3VyY2VCaW5k
aW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCF0ZXh0dXJlUmVz
b3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlz
Rm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIodmVydGV4RW5j
b2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0QmluZGluZy5p
bnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAgICAgICAg
ICAgICAgc2V0VGV4dHVyZU9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIsIHRleHR1cmVSZXNvdXJj
ZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAg
ICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVyZU9uRW5j
b2Rlcihjb21wdXRlRW5jb2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwg
bGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgYm91bmRUZXh0dXJlcy5h
ZGRWb2lkKHRleHR1cmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVm
ZmVyJiBzdG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVC
dWZmZXIoc3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9LCBbJl0o
R1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZlciYgZHluYW1pY1N0b3JhZ2VC
dWZmZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUJ1ZmZlcihkeW5hbWlj
U3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9KSwgbGF5b3V0Qmlu
ZGluZy5pbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR1BVQmluZEdyb3VwKFdURk1vdmUoKm9mZnNldHMpLCBhbGxvY2F0b3IsIFdURk1vdmUo
Ym91bmRCdWZmZXJzKSwgV1RGTW92ZShib3VuZFRleHR1cmVzKSkpOwotfQotICAgIAotR1BVQmlu
ZEdyb3VwOjpHUFVCaW5kR3JvdXAoR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZl
ck9mZnNldHMmJiBvZmZzZXRzLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgSGFz
aFNldDxSZWY8R1BVQnVmZmVyPj4mJiBidWZmZXJzLCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4m
JiB0ZXh0dXJlcykKLSAgICA6IG1fYXJndW1lbnRCdWZmZXJPZmZzZXRzKFdURk1vdmUob2Zmc2V0
cykpCi0gICAgLCBtX2FsbG9jYXRvcihtYWtlUmVmKGFsbG9jYXRvcikpCi0gICAgLCBtX2JvdW5k
QnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQotICAgICwgbV9ib3VuZFRleHR1cmVzKFdURk1vdmUo
dGV4dHVyZXMpKQotewotfQotCi1HUFVCaW5kR3JvdXA6On5HUFVCaW5kR3JvdXAoKQotewotICAg
IG1fYWxsb2NhdG9yLT50cnlSZXNldCgpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkMDVkYThiMTMwM2JlOTNiZjBkNDkyNzhiMGRj
ZjljNmEyODQ5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0
YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW1wb3J0ICJHUFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9B
cnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3RleHByIGF1dG8gcmVhZE9ubHlGbGFncyA9
IE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdz
OjpJbmRleCwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgsIEdQVUJ1ZmZlclVzYWdlOjpG
bGFnczo6VW5pZm9ybSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlIH07Ci0KLQot
Ym9vbCBHUFVCdWZmZXI6OnZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVFcnJvclNjb3Bl
cyYgZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewot
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2
aWNlISIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHVzYWdlLmNv
bnRhaW5zQWxsKHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNh
Z2U6OkZsYWdzOjpNYXBSZWFkIH0pKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklU
RSB1c2FnZSEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1SZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShHUFVEZXZp
Y2UmIGRldmljZSwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVm
ZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBw
bGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBzaXplID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVy
dFNhZmVseShkZXNjcmlwdG9yLnNpemUsIHNpemUpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8R1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzPjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXZh
bGlkYXRlQnVmZmVyVXNhZ2UoZGV2aWNlLCB1c2FnZSwgZXJyb3JTY29wZXMpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIGNvcHlCdWZmZXJUb0J1ZmZlciBjYWxscyByZXF1aXJl
IDQtYnl0ZSBhbGlnbm1lbnQuICJVbm1hcHBpbmciIGEgbWFwcGVkLW9uLWNyZWF0aW9uIEdQVUJ1
ZmZlcgotICAgIC8vIHRoYXQgaXMgb3RoZXJ3aXNlIHVubWFwcGFibGUgcmVxdWlyZXMgc3VjaCBh
IGNvcHkgdG8gdXBsb2FkIGRhdGEuCi0gICAgaWYgKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBl
ZE9wdGlvbjo6SXNNYXBwZWQKLSAgICAgICAgJiYgIXVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFk
IH0pCi0gICAgICAgICYmIGRlc2NyaXB0b3Iuc2l6ZSAlIDQpIHsKLSAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJEYXRhIG11c3QgYmUgYWxpZ25lZCB0byBhIG11bHRp
cGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IC8vIEZJWE1FOiBNZXRhbCBiZXN0IHByYWN0aWNlczogUmVhZC1vbmx5IG9uZS10aW1lLXVzZSBk
YXRhIGxlc3MgdGhhbiA0IEtCIHNob3VsZCBub3QgYWxsb2NhdGUgYSBNVExCdWZmZXIgYW5kIGJl
IHVzZWQgaW4gW01UTENvbW1hbmRFbmNvZGVyIHNldCpCeXRlc10gY2FsbHMgaW5zdGVhZC4KLQot
ICAgIE1UTFJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMgPSBNVExSZXNvdXJjZUNQVUNh
Y2hlTW9kZURlZmF1bHRDYWNoZTsKLQotICAgIC8vIE1hcHBhYmxlIGJ1ZmZlcnMgdXNlIHNoYXJl
ZCBzdG9yYWdlIGFsbG9jYXRpb24uCi0gICAgcmVzb3VyY2VPcHRpb25zIHw9IHVzYWdlLmNvbnRh
aW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6
OkZsYWdzOjpNYXBSZWFkIH0pID8gTVRMUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA6IE1UTFJl
c291cmNlU3RvcmFnZU1vZGVQcml2YXRlOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbXRs
QnVmZmVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxCdWZm
ZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoTGVuZ3Ro
OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRlc2NyaXB0b3Iuc2l6ZSkgb3B0aW9uczpyZXNvdXJj
ZU9wdGlvbnNdKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICgh
bXRsQnVmZmVyKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVy
cm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10bEJ1ZmZlciks
IGRldmljZSwgc2l6ZSwgdXNhZ2UsIGlzTWFwcGVkKSk7Ci19Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVm
ZmVyKFJldGFpblB0cjxNVExCdWZmZXI+JiYgYnVmZmVyLCBHUFVEZXZpY2UmIGRldmljZSwgc2l6
ZV90IHNpemUsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVCdWZm
ZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQpCi0gICAgOiBtX3BsYXRmb3JtQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkKLSAgICAsIG1fZGV2aWNlKG1ha2VSZWYoZGV2aWNlKSkKLSAgICAsIG1fYnl0ZUxl
bmd0aChzaXplKQotICAgICwgbV91c2FnZSh1c2FnZSkKLSAgICAsIG1faXNNYXBwZWRGcm9tQ3Jl
YXRpb24oaXNNYXBwZWQgPT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCkKLXsKLSAg
ICBtX3BsYXRmb3JtVXNhZ2UgPSBNVExSZXNvdXJjZVVzYWdlUmVhZDsKLSAgICBpZiAoaXNTdG9y
YWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7
Ci19Ci0KLUdQVUJ1ZmZlcjo6fkdQVUJ1ZmZlcigpCi17Ci0gICAgZGVzdHJveShudWxscHRyKTsK
LX0KLQotYm9vbCBHUFVCdWZmZXI6OmlzUmVhZE9ubHkoKSBjb25zdAotewotICAgIHJldHVybiBt
X3VzYWdlLmNvbnRhaW5zQW55KHJlYWRPbmx5RmxhZ3MpOwotfQotCi1HUFVCdWZmZXI6OlN0YXRl
IEdQVUJ1ZmZlcjo6c3RhdGUoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybUJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIFN0YXRlOjpEZXN0cm95ZWQ7Ci0gICAgaWYgKG1faXNNYXBwZWRGcm9t
Q3JlYXRpb24gfHwgbV9tYXBwaW5nQ2FsbGJhY2spCi0gICAgICAgIHJldHVybiBTdGF0ZTo6TWFw
cGVkOwotCi0gICAgcmV0dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlNDOjpBcnJheUJ1ZmZl
ciogR1BVQnVmZmVyOjptYXBPbkNyZWF0aW9uKCkKLXsKLSAgICBBU1NFUlQobV9pc01hcHBlZEZy
b21DcmVhdGlvbik7Ci0gICAgcmV0dXJuIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpOwotfQotCi0j
aWYgVVNFKE1FVEFMKQotdm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoTVRM
Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgICsrbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVyczsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIE1ha2Ugc3VyZSB8dGhpc3wgb25seSBnZXRzIHJl
ZidkIC8gZGVyZWYnZCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaXMgbm90IFRocmVhZFNh
ZmVSZWZDb3VudGVkLgotICAgIFtjb21tYW5kQnVmZmVyIGFkZENvbXBsZXRlZEhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGlkPE1UTENv
bW1hbmRCdWZmZXI+KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGNv
bW1hbmRCdWZmZXJDb21wbGV0ZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuZ2V0KCldOwotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRC
dWZmZXJDb21wbGV0ZWQoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNT
RVJUKG1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMpOwotCi0gICAgaWYgKG1fbnVtU2NoZWR1
bGVkQ29tbWFuZEJ1ZmZlcnMgPT0gMSAmJiBzdGF0ZSgpID09IFN0YXRlOjpNYXBwZWQpCi0gICAg
ICAgIHJ1bk1hcHBpbmdDYWxsYmFjaygpOwotCi0gICAgLS1tX251bVNjaGVkdWxlZENvbW1hbmRC
dWZmZXJzOwotfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotdm9pZCBHUFVCdWZmZXI6OnJlZ2lz
dGVyTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29sIGlzUmVh
ZCwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIFJlamVjdCBpZiByZXF1
ZXN0IGlzIGludmFsaWQuCi0gICAgaWYgKGlzUmVhZCAmJiAhaXNNYXBSZWFkYWJsZSgpKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRp
b24hIik7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghaXNSZWFkICYmICFpc01hcFdyaXRlYWJsZSgpKSB7Ci0gICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAg
ICAgIGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUKCFtX21hcHBpbmdDYWxsYmFjayAmJiAhbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmlzUGVuZGlu
ZygpKTsKLQotICAgIC8vIEFuIGV4aXN0aW5nIGNhbGxiYWNrIG1lYW5zIHRoaXMgYnVmZmVyIGlz
IGluIHRoZSBtYXBwZWQgc3RhdGUuCi0gICAgbV9tYXBwaW5nQ2FsbGJhY2sgPSBQZW5kaW5nTWFw
cGluZ0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgLy8gSWYgR1BV
IGlzIG5vdCB1c2luZyB0aGlzIGJ1ZmZlciwgcnVuIHRoZSBjYWxsYmFjayBBU0FQLgotICAgIGlm
ICghbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVycykgewotICAgICAgICBtX21hcHBpbmdDYWxs
YmFja1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldICgpIG11dGFibGUgewotICAgICAgICAgICAgcnVuTWFwcGluZ0NhbGxiYWNrKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLX0KLQotdm9pZCBHUFVCdWZmZXI6OnJ1bk1hcHBpbmdDYWxsYmFjaygp
Ci17Ci0gICAgaWYgKG1fbWFwcGluZ0NhbGxiYWNrKQotICAgICAgICBtX21hcHBpbmdDYWxsYmFj
ay0+Y2FsbGJhY2soaXNNYXBSZWFkKCkgPyBzdGFnaW5nQnVmZmVyRm9yUmVhZCgpIDogc3RhZ2lu
Z0J1ZmZlckZvcldyaXRlKCkpOwotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6OnN0
YWdpbmdCdWZmZXJGb3JSZWFkKCkKLXsKLSAgICBpZiAoIW1fc3RhZ2luZ0J1ZmZlcikKLSAgICAg
ICAgbV9zdGFnaW5nQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3BsYXRmb3JtQnVmZmVy
LmdldCgpLmNvbnRlbnRzLCBtX2J5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbWVtY3B5
KG1fc3RhZ2luZ0J1ZmZlci0+ZGF0YSgpLCBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRz
LCBtX2J5dGVMZW5ndGgpOwotCi0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0K
LQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKQot
ewotICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoMSwgbV9ieXRlTGVu
Z3RoKTsKLSAgICByZXR1cm4gbV9zdGFnaW5nQnVmZmVyLmdldCgpOwotfQotCi12b2lkIEdQVUJ1
ZmZlcjo6Y29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMp
Ci17Ci0gICAgTVRMQ29tbWFuZFF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIW1fZGV2aWNlLT50cnlH
ZXRRdWV1ZSgpIHx8ICEocXVldWUgPSBtX2RldmljZS0+dHJ5R2V0UXVldWUoKS0+cGxhdGZvcm1R
dWV1ZSgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gc3Rh
Z2luZ010bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8v
IEdQVUJ1ZmZlciBjcmVhdGlvbiB2YWxpZGF0aW9uIGVuc3VyZXMgbV9ieXRlU2l6ZSBmaXRzIGlu
IE5TVUludGVnZXIuCi0gICAgc3RhZ2luZ010bEJ1ZmZlciA9IGFkb3B0TlMoW21fZGV2aWNlLT5w
bGF0Zm9ybURldmljZSgpIG5ld0J1ZmZlcldpdGhCeXRlczptX3N0YWdpbmdCdWZmZXItPmRhdGEo
KSBsZW5ndGg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKSBvcHRpb25zOk1U
TFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFzdGFnaW5nTXRsQnVmZmVyICYmIGVycm9yU2NvcGVzKSB7
Ci0gICAgICAgIGVycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6
T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSByZXRhaW5QdHIoW3F1
ZXVlIGNvbW1hbmRCdWZmZXJdKTsKLSAgICBhdXRvIGJsaXRFbmNvZGVyID0gcmV0YWluUHRyKFtj
b21tYW5kQnVmZmVyIGJsaXRDb21tYW5kRW5jb2Rlcl0pOwotCi0gICAgW2JsaXRFbmNvZGVyIGNv
cHlGcm9tQnVmZmVyOnN0YWdpbmdNdGxCdWZmZXIuZ2V0KCkgc291cmNlT2Zmc2V0OjAgdG9CdWZm
ZXI6bV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKSBkZXN0aW5hdGlvbk9mZnNldDowIHNpemU6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKV07Ci0gICAgW2JsaXRFbmNvZGVyIGVuZEVu
Y29kaW5nXTsKLSAgICBbY29tbWFuZEJ1ZmZlciBjb21taXRdOwotCi0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JTY29wZXMq
IGVycm9yU2NvcGVzKQotewotICAgIGlmICghbV9pc01hcHBlZEZyb21DcmVhdGlvbiAmJiAhaXNN
YXBwYWJsZSgpICYmIGVycm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLT5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9uOiBHUFVCdWZmZXIgaXMgbm90IG1hcHBh
YmxlISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhZ2luZ0J1ZmZl
cikgewotICAgICAgICBpZiAoaXNNYXBwYWJsZSgpKSB7Ci0gICAgICAgICAgICAvLyBNQVBfV1JJ
VEUgYW5kIE1BUF9SRUFEIGJ1ZmZlcnMgaGF2ZSBzaGFyZWQsIENQVS1hY2Nlc3NpYmxlIHN0b3Jh
Z2UuCi0gICAgICAgICAgICBBU1NFUlQobV9wbGF0Zm9ybUJ1ZmZlciAmJiBtX3BsYXRmb3JtQnVm
ZmVyLmdldCgpLmNvbnRlbnRzKTsKLSAgICAgICAgICAgIG1lbWNweShtX3BsYXRmb3JtQnVmZmVy
LmdldCgpLmNvbnRlbnRzLCBtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9ieXRlTGVuZ3RoKTsK
LSAgICAgICAgfSBlbHNlIGlmIChtX2lzTWFwcGVkRnJvbUNyZWF0aW9uKQotICAgICAgICAgICAg
Y29weVN0YWdpbmdCdWZmZXJUb0dQVShlcnJvclNjb3Blcyk7Ci0KLSAgICAgICAgbV9pc01hcHBl
ZEZyb21DcmVhdGlvbiA9IGZhbHNlOwotICAgICAgICBtX3N0YWdpbmdCdWZmZXIgPSBudWxscHRy
OwotICAgIH0KLQotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykgewotICAgICAgICBtX21hcHBp
bmdDYWxsYmFja1Rhc2suY2FuY2VsVGFzaygpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFjay0+
Y2FsbGJhY2sobnVsbHB0cik7Ci0gICAgICAgIG1fbWFwcGluZ0NhbGxiYWNrID0gbnVsbHB0cjsK
LSAgICB9Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpkZXN0cm95KEdQVUVycm9yU2NvcGVzKiBlcnJv
clNjb3BlcykKLXsKLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVkKQotICAgICAgICB1
bm1hcChlcnJvclNjb3Blcyk7Ci0KLSAgICBtX3BsYXRmb3JtQnVmZmVyID0gbnVsbHB0cjsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVD
b21tYW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZTFkY2M2YjE2ZDAyMzRiM2VjNGQxYzMzMDdkYzhkYzVlYWUxYzE0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwyNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgotI2ltcG9ydCAi
R1BVUXVldWUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29t
bWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmlj
ZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBncHVDb21t
YW5kUXVldWUgPSBkZXZpY2UudHJ5R2V0UXVldWUoKTsKLSAgICBpZiAoIWdwdUNvbW1hbmRRdWV1
ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG10bFF1ZXVlID0gZ3B1Q29t
bWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1
ZmZlcj4gYnVmZmVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBi
dWZmZXIgPSBbbXRsUXVldWUgY29tbWFuZEJ1ZmZlcl07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZl
ciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1HUFVDb21t
YW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPiYm
IGJ1ZmZlcikKLSAgICA6IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
LXsKLX0KLQotR1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKQotewotICAgIGVu
ZEJsaXRFbmNvZGluZygpOwotfQotCi1NVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNvbW1hbmRC
dWZmZXI6OmJsaXRFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ibGl0RW5jb2RlciA/
IG1fYmxpdEVuY29kZXIuZ2V0KCkgOiAobV9ibGl0RW5jb2RlciA9IFttX3BsYXRmb3JtQ29tbWFu
ZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29kZXJdKS5nZXQoKTsKLX0KLQotdm9pZCBHUFVDb21tYW5k
QnVmZmVyOjplbmRCbGl0RW5jb2RpbmcoKQotewotICAgIGlmICghbV9ibGl0RW5jb2RlcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2Js
aXRFbmNvZGVyIGVuZEVuY29kaW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV9ibGl0RW5jb2RlciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1aW50NjRfdCBzcmNPZmZz
ZXQsIFJlZjxHUFVCdWZmZXI+JiYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNp
emUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyYy0+aXNDb3B5U291cmNlKCkg
fHwgIWRzdC0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
Q29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChz
aXplICUgNCB8fCBzcmNPZmZzZXQgJSA0IHx8IGRzdE9mZnNldCAlIDQpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBDb3B5IG11
c3QgYmUgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQgc2l6ZSwg
b2Zmc2V0LCBhbmQgc2l6ZSArIG9mZnNldCBjYW4gc2FmZWx5IGZpdCBpbiBOU1VJbnRlZ2VyIHJl
Z2FyZGxlc3Mgb2YgcGxhdGZvcm0uCi0gICAgYXV0byBzcmNMZW5ndGggPSBjaGVja2VkU3VtPE5T
VUludGVnZXI+KHNpemUsIHNyY09mZnNldCk7Ci0gICAgYXV0byBkc3RMZW5ndGggPSBjaGVja2Vk
U3VtPE5TVUludGVnZXI+KHNpemUsIGRzdE9mZnNldCk7Ci0gICAgaWYgKHNyY0xlbmd0aC5oYXNP
dmVyZmxvd2VkKCkgfHwgZHN0TGVuZ3RoLmhhc092ZXJmbG93ZWQoKQotICAgICAgICB8fCBzcmNM
ZW5ndGggPiBzcmMtPmJ5dGVMZW5ndGgoKSB8fCBkc3RMZW5ndGggPiBkc3QtPmJ5dGVMZW5ndGgo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRv
QnVmZmVyKCk6IEludmFsaWQgb2Zmc2V0IG9yIGNvcHkgc2l6ZSEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gVGhl
c2UgY2FzdHMgYXJlIHNhZmUgZHVlIHRvIGVhcmxpZXIgY2hlY2tlZFN1bSgpIGNoZWNrcy4KLSAg
ICBbYmxpdEVuY29kZXIoKQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmMtPnBsYXRmb3JtQnVm
ZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNyY09m
ZnNldCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0LT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIGRl
c3RpbmF0aW9uT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRzdE9mZnNldCkKLSAgICAg
ICAgc2l6ZTpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzaXplKV07Ci0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICB1c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKLSAgICB1c2VC
dWZmZXIoV1RGTW92ZShkc3QpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVm
ZmVyVG9UZXh0dXJlKEdQVUJ1ZmZlckNvcHlWaWV3JiYgc3JjQnVmZmVyLCBHUFVUZXh0dXJlQ29w
eVZpZXcmJiBkc3RUZXh0dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAo
aXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjQnVmZmVyLmJ1ZmZlci0+aXNDb3B5U291cmNlKCkgfHwg
IWRzdFRleHR1cmUudGV4dHVyZS0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1UTEJ1ZmZl
ciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5T
VUludGVnZXIgc291cmNlT2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShz
cmNCdWZmZXIub2Zmc2V0LCBzb3VyY2VPZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IFNvdXJjZSBvZmZzZXQgaXMg
dG9vIGxhcmdlISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFk
ZCBNZXRhbCB2YWxpZGF0aW9uLgotCi0gICAgLy8gR1BVQnVmZmVyQ29weVZpZXc6Om9mZnNldDog
VGhlIGxvY2F0aW9uIG11c3QgYmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZSdzIHBpeGVsIGZvcm1hdC4gVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBv
ZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAg
Ly8gR1BVQnVmZmVyQ29weVZpZXc6OnJvd1BpdGNoOiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRp
cGxlIG9mIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuIFRo
ZSB2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAzMiw3NjcgbXVsdGlwbGllZCBi
eSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZeKAmXMgcGl4ZWwgc2l6ZS4KLQotICAgIC8vIEdQVUJ1
ZmZlckNvcHlWaWV3OjppbWFnZUhlaWdodDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBv
ZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAg
Ly8gR1BVRXh0ZW50M0Q6IFdoZW4geW91IGNvcHkgdG8gYSAxRCB0ZXh0dXJlLCBoZWlnaHQgYW5k
IGRlcHRoIG11c3QgYmUgMS4gV2hlbiB5b3UgY29weSB0byBhIDJEIHRleHR1cmUsIGRlcHRoIG11
c3QgYmUgMS4KLQotICAgIC8vIEdQVVRleHR1cmVDb3B5Vmlldzo6dGV4dHVyZTogVGhlIHZhbHVl
IG11c3Qgbm90IGJlIGEgZnJhbWVidWZmZXJPbmx5IHRleHR1cmUgYW5kIG11c3Qgbm90IGhhdmUg
YSBQVlJUQyBwaXhlbCBmb3JtYXQuCi0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIFtibGl0RW5jb2RlcigpCi0gICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyY0J1ZmZlci5i
dWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnNvdXJjZU9mZnNl
dAotICAgICAgICBzb3VyY2VCeXRlc1BlclJvdzpzcmNCdWZmZXIucm93UGl0Y2gKLSAgICAgICAg
c291cmNlQnl0ZXNQZXJJbWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWlnaHQKLSAgICAgICAgc291cmNl
U2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAg
ICAgICAgdG9UZXh0dXJlOmRzdFRleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAg
ICAgICAgZGVzdGluYXRpb25TbGljZTpkc3RUZXh0dXJlLmFycmF5TGF5ZXIKLSAgICAgICAgZGVz
dGluYXRpb25MZXZlbDpkc3RUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0aW9uT3Jp
Z2luOk1UTE9yaWdpbk1ha2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwgZHN0VGV4dHVyZS5vcmlnaW4u
eSwgZHN0VGV4dHVyZS5vcmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgdXNlQnVmZmVyKFdURk1vdmUoc3JjQnVmZmVyLmJ1ZmZlcikpOwotICAgIHVzZVRl
eHR1cmUoV1RGTW92ZShkc3RUZXh0dXJlLnRleHR1cmUpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5k
QnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyY1RleHR1
cmUsIEdQVUJ1ZmZlckNvcHlWaWV3JiYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6
ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjVGV4dHVyZS50ZXh0dXJlLT5p
c0NvcHlTb3VyY2UoKSB8fCAhZHN0QnVmZmVyLmJ1ZmZlci0+aXNDb3B5RGVzdGluYXRpb24oKSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1
ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAvLyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRm
b3Jtcy4KLSAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdU
Rjo6Y29udmVydFNhZmVseShkc3RCdWZmZXIub2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZm
ZXIoKTogRGVzdGluYXRpb24gb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAg
Y29weUZyb21UZXh0dXJlOnNyY1RleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAg
ICAgICAgc291cmNlU2xpY2U6c3JjVGV4dHVyZS5hcnJheUxheWVyCi0gICAgICAgIHNvdXJjZUxl
dmVsOnNyY1RleHR1cmUubWlwTGV2ZWwKLSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1h
a2Uoc3JjVGV4dHVyZS5vcmlnaW4ueCwgc3JjVGV4dHVyZS5vcmlnaW4ueSwgc3JjVGV4dHVyZS5v
cmlnaW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXpl
LmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0QnVmZmVyLmJ1ZmZlci0+
cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbk9m
ZnNldAotICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5yb3dQaXRjaAot
ICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdlSGVpZ2h0XTsK
LQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92
ZShzcmNUZXh0dXJlLnRleHR1cmUpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShkc3RCdWZmZXIu
YnVmZmVyKSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoR1BVVGV4dHVyZUNvcHlWaWV3JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3QsIGNv
bnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFz
cmMudGV4dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdC50ZXh0dXJlLT5pc0NvcHlEZXN0aW5h
dGlvbigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4
dHVyZVRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29w
eUZyb21UZXh0dXJlOnNyYy50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAgICBzb3Vy
Y2VTbGljZTpzcmMuYXJyYXlMYXllcgotICAgICAgICBzb3VyY2VMZXZlbDpzcmMubWlwTGV2ZWwK
LSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjLm9yaWdpbi54LCBzcmMub3Jp
Z2luLnksIHNyYy5vcmlnaW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXpl
LndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJlOmRzdC50
ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAgICBkZXN0aW5hdGlvblNsaWNlOmRzdC5h
cnJheUxheWVyCi0gICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0Lm1pcExldmVsCi0gICAgICAg
IGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1ha2UoZHN0Lm9yaWdpbi54LCBkc3Qub3JpZ2lu
LnksIGRzdC5vcmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgdXNlVGV4dHVyZShXVEZNb3ZlKHNyYy50ZXh0dXJlKSk7Ci0gICAgdXNlVGV4dHVyZShXVEZN
b3ZlKGRzdC50ZXh0dXJlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzYwZTQ1M2U3ZmMyZjVl
NGI5NjI2NWExZWM3M2Y5ZWQ5YTJhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29t
cHV0ZVBpcGVsaW5lLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRh
bC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OnRyeUNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAg
aWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTogRXhpc3RpbmcgcGFzcyBlbmNvZGVyIG11
c3QgYmUgZW5kZWQgZmlyc3QhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIGJ1ZmZlci0+ZW5kQmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyPiBtdGxFbmNvZGVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgbXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigp
IGNvbXB1dGVDb21tYW5kRW5jb2Rlcl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgaWYgKCFtdGxFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVDb21t
YW5kRW5jb2RlciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpLCBX
VEZNb3ZlKG10bEVuY29kZXIpKSk7Ci19Ci0KLUdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6R1BVQ29t
cHV0ZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgUmV0YWluUHRy
PE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQ
YXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNz
RW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBl
bGluZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52
YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
cGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCkpOwotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgc2V0Q29t
cHV0ZVBpcGVsaW5lU3RhdGU6cGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCldOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG1fcGlwZWxpbmUgPSBXVEZNb3Zl
KHBpcGVsaW5lKTsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVu
c2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3BsYXRmb3Jt
Q29tcHV0ZVBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFz
c0VuY29kZXI6OmRpc3BhdGNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IE5vIHZhbGlkIEdQVUNvbXB1dGVQ
aXBlbGluZSBmb3VuZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCht
X3BpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byB0aHJlYWRzUGVyVGhyZWFkZ3JvdXAgPSBNVExT
aXplTWFrZShtX3BpcGVsaW5lLT5jb21wdXRlRGltZW5zaW9ucygpLndpZHRoLCBtX3BpcGVsaW5l
LT5jb21wdXRlRGltZW5zaW9ucygpLmhlaWdodCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lv
bnMoKS5kZXB0aCk7Ci0KLSAgICBhdXRvIHRocmVhZGdyb3Vwc1BlckdyaWQgPSBNVExTaXplTWFr
ZSh4LCB5LCB6KTsKLQotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIGRpc3BhdGNo
VGhyZWFkZ3JvdXBzOnRocmVhZGdyb3Vwc1BlckdyaWQgdGhyZWFkc1BlclRocmVhZGdyb3VwOnRo
cmVhZHNQZXJUaHJlYWRncm91cF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVDb21wdXRlUGFzc0VuY29kZXI6OnBsYXRm
b3JtUGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtQ29tcHV0ZVBh
c3NFbmNvZGVyLmdldCgpOwotfQotCi0jaWYgVVNFKE1FVEFMKQotCi12b2lkIEdQVUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNp
Z25lZCB1c2FnZSkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcik7
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybUNvbXB1
dGVQYXNzRW5jb2RlciB1c2VSZXNvdXJjZTpyZXNvdXJjZSB1c2FnZTp1c2FnZV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6
c2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdlciBvZmZz
ZXQsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtQ29tcHV0ZVBhc3NF
bmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRm
b3JtQ29tcHV0ZVBhc3NFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdElu
ZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhOWNhMzc4YTBlYWZkYjNmYTYzNjNlZGExZmEwYzBmZjFmMTkzOTE1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbXBvcnQgIkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQg
IkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVVBp
cGVsaW5lTGF5b3V0LmgiCi0jaW1wb3J0ICJHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5o
IgotI2ltcG9ydCAiV0hMU0xQcmVwYXJlLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+
Ci0jaW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB0cnlT
ZXRNZXRhbEZ1bmN0aW9ucyhNVExMaWJyYXJ5ICpjb21wdXRlTWV0YWxMaWJyYXJ5LCBNVExDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBTdHJpbmcmIGNvbXB1
dGVFbnRyeVBvaW50TmFtZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFjb21wdXRlTWV0YWxMaWJyYXJ5
KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiTVRMTGlicmFy
eSBmb3IgY29tcHV0ZSBzdGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtjb21wdXRlTWV0YWxM
aWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29tcHV0ZUVudHJ5UG9pbnROYW1lXSk7Ci0gICAg
aWYgKCFmdW5jdGlvbikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSBjb21wdXRlIE1UTEZ1bmN0aW9uICciLCBjb21w
dXRlRW50cnlQb2ludE5hbWUsICInISIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIFttdGxEZXNjcmlwdG9yIHNldENvbXB1dGVGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zPiB0cnlTZXRG
dW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiBjb21wdXRlU3Rh
Z2UsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
KiBtdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgUmV0YWluUHRyPE1UTExpYnJhcnk+IGNvbXB1dGVMaWJyYXJ5OwotICAgIFN0cmluZyBj
b21wdXRlRW50cnlQb2ludDsKLQotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRl
RGltZW5zaW9ucyB7IDEsIDEsIDEgfTsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0b3IpIHsKLSAg
ICAgICAgQVNTRVJUKGNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAg
ICAgIHdobHNsRGVzY3JpcHRvci0+ZW50cnlQb2ludE5hbWUgPSBjb21wdXRlU3RhZ2UuZW50cnlQ
b2ludDsKLQotICAgICAgICBhdXRvIHdobHNsQ29tcGlsZVJlc3VsdCA9IFdITFNMOjpwcmVwYXJl
KCpjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpLCAqd2hsc2xEZXNjcmlwdG9yKTsK
LSAgICAgICAgaWYgKCF3aGxzbENvbXBpbGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExTTCBjb21waWxlIGVycm9y
OiAiLCB3aGxzbENvbXBpbGVSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hs
c2xDb21waWxlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKLQotICAgICAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLQotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFs
Q29tcGlsZVRpbWVzKQotICAgICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQgQWRkIGRp
cmVjdCBTdHJpbmdCdWlsZGVyIC0+IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQgZXh0cmEg
Y29weSBpbnRvIGEgV1RGOjpTdHJpbmcKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTp3aGxzbENvbXBp
bGVSZXN1bHQtPm1ldGFsU291cmNlLnRvU3RyaW5nKCkgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9y
XSk7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNZXRhbCBjb21waWxlIHRpbWVzOiAiLCAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBzdGFydFRpbWUpLm1pbGxpc2Vjb25kcygpLCAiIG1zIik7Ci0gICAgICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmICghY29tcHV0ZUxp
YnJhcnkpCi0gICAgICAgICAgICBOU0xvZyhAIiVAIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgICAg
IEFTU0VSVChjb21wdXRlTGlicmFyeSk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxsIHZhcmlh
YmxlcywgdGhlcmUgc2hvdWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0
byBBU1NFUlQoIWVycm9yKSBoZXJlLgotCi0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gd2hs
c2xDb21waWxlUmVzdWx0LT5tYW5nbGVkRW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBjb21wdXRlTGlicmFyeSA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPnBs
YXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gY29tcHV0
ZVN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgfQotCi0gICAgaWYgKHRyeVNldE1ldGFsRnVuY3Rpb25z
KGNvbXB1dGVMaWJyYXJ5LmdldCgpLCBtdGxEZXNjcmlwdG9yLCBjb21wdXRlRW50cnlQb2ludCwg
ZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdHJ1Y3QgQ29udmVydFJlc3VsdCB7Ci0gICAgUmV0
YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHBpcGVsaW5lRGVzY3JpcHRvcjsK
LSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1z
dGF0aWMgc3RkOjpvcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQot
ewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlw
dG9yOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsRGVzY3JpcHRv
ciA9IGFkb3B0TlMoW01UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAg
ICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRM
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICB9Ci0KLSAgICBjb25zdCBhdXRvJiBjb21wdXRlU3RhZ2UgPSBkZXNjcmlwdG9yLmNv
bXB1dGVTdGFnZTsKLQotICAgIGJvb2wgaXNXaGxzbCA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPndo
bHNsTW9kdWxlKCk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yPiB3aGxzbERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hsc2wpCi0gICAgICAgIHdo
bHNsRGVzY3JpcHRvciA9IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAg
ICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlm
IChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAg
ICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gY29tcHV0
ZURpbWVuc2lvbnMgPSB0cnlTZXRGdW5jdGlvbnMoY29tcHV0ZVN0YWdlLCBkZXZpY2UsIG10bERl
c2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICBy
ZXR1cm4ge3sgbXRsRGVzY3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19OwotCi0gICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENyZWF0ZVJlc3VsdCB7Ci0gICAgUmV0YWlu
UHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBwaXBlbGluZVN0YXRlOwotICAgIFdITFNMOjpD
b21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci0KLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPENyZWF0ZVJlc3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRl
dmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBjb252ZXJ0UmVzdWx0ID0gY29udmVydENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7Ci0gICAg
aWYgKCFjb252ZXJ0UmVzdWx0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIEFT
U0VSVChjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwotICAgIGF1dG8gbXRsRGVz
Y3JpcHRvciA9IGNvbnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKLQotICAgIFJldGFp
blB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmU7Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIHBpcGVs
aW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIG9wdGlvbnM6TVRMUGlwZWxp
bmVPcHRpb25Ob25lIHJlZmxlY3Rpb246bmlsIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlw
ZWxpbmUpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9y
ID8gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyA6ICJVbmFibGUgdG8gY3Jl
YXRlIE1UTENvbXB1dGVQaXBlbGluZVN0YXRlISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVy
biB7eyBwaXBlbGluZSwgY29udmVydFJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMgfX07Ci19Ci0K
LVJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgYXV0
byBjcmVhdGVSZXN1bHQgPSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2Us
IGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIWNyZWF0ZVJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbXB1dGVQ
aXBlbGluZShXVEZNb3ZlKGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSksIGNyZWF0ZVJlc3Vs
dC0+Y29tcHV0ZURpbWVuc2lvbnMsIGRlc2NyaXB0b3IubGF5b3V0KSk7Ci19Ci0KLUdQVUNvbXB1
dGVQaXBlbGluZTo6R1BVQ29tcHV0ZVBpcGVsaW5lKFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxp
bmVTdGF0ZT4mJiBwaXBlbGluZSwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1l
bnNpb25zLCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQpCi0gICAgOiBH
UFVQaXBlbGluZSgpCi0gICAgLCBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKFdURk1vdmUocGlw
ZWxpbmUpKQotICAgICwgbV9jb21wdXRlRGltZW5zaW9ucyhjb21wdXRlRGltZW5zaW9ucykKLSAg
ICAsIG1fbGF5b3V0KGxheW91dCkKLXsKLX0KLQotR1BVQ29tcHV0ZVBpcGVsaW5lOjp+R1BVQ29t
cHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIEdQVUNvbXB1dGVQaXBlbGluZTo6cmVj
b21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3ImJiBjb21wdXRlU3RhZ2UpCi17Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKGNvbXB1dGVT
dGFnZSkpOwotICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtd
IChHUFVFcnJvciYmKSB7IH0pOwotICAgIGlmIChhdXRvIGNyZWF0ZVJlc3VsdCA9IHRyeUNyZWF0
ZU1UTENvbXB1dGVQaXBlbGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMp
KSB7Ci0gICAgICAgIG1fcGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBXVEZNb3ZlKGNyZWF0ZVJl
c3VsdC0+cGlwZWxpbmVTdGF0ZSk7Ci0gICAgICAgIG1fY29tcHV0ZURpbWVuc2lvbnMgPSBjcmVh
dGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEzOGY2OTVhODczMDJmOTUwMTEyM2U4YjVlM2YyYTlhYzBlMGM4
YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lt
cG9ydCAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9NZXRhbFNQSS5o
PgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVEZXZpY2UoaWQgPE1UTERldmljZT4gZGV2
aWNlKQotewotICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIEdQVURldmljZTo6cHJld2FybSgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8v
IENhbGwgTVRMQ29weUFsbERldmljZXMoKSBvbiBhIGJhY2tncm91bmQgdGhyZWFkIHRvIGF2b2lk
IGhhbmdpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoMCwgMCksIF57Ci0gICAgICAgIGF1dG8gZGV2aWNlcyA9IGFkb3B0TlMo
TVRMQ29weUFsbERldmljZXMoKSk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQotUmVmUHRyPEdQVURl
dmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxNVExEZXZpY2U+IGRl
dmljZVB0cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMtPnBvd2VyUHJlZmVyZW5j
ZSB8fCBvcHRpb25zLT5wb3dlclByZWZlcmVuY2UgPT0gR1BVUG93ZXJQcmVmZXJlbmNlOjpMb3dQ
b3dlcikgewotICAgICAgICBhdXRvIGRldmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2Vz
KCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2UgOiBkZXZp
Y2VzLmdldCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZURldmljZShkZXZpY2Up
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGRldmljZS5sb3dQ
b3dlcikgewotICAgICAgICAgICAgICAgIGRldmljZVB0ciA9IGRldmljZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAgICBpZiAo
IWRldmljZVB0cikKLSAgICAgICAgZGV2aWNlUHRyID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1E
ZWZhdWx0RGV2aWNlKCkpOwotCi0gICAgaWYgKCFpc0FjY2VwdGFibGVEZXZpY2UoZGV2aWNlUHRy
LmdldCgpKSkKLSAgICAgICAgZGV2aWNlUHRyLmNsZWFyKCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KLSAgICBpZiAoIWRldmljZVB0cikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZpY2UhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIExPRyhXZWJHUFUsICJHUFVE
ZXZpY2U6OkdQVURldmljZSgpOiBNVExEZXZpY2UgaXMgJXAiLCBkZXZpY2VQdHIuZ2V0KCkpOwot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlUHRyKSkpOwot
fQotCi1HUFVEZXZpY2U6OkdQVURldmljZShSZXRhaW5QdHI8TVRMRGV2aWNlPiYmIGRldmljZSkK
LSAgICA6IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVlZTA5ODhjOTMwYTAwYjc0Njc3N2M3YTA2YjdkOWQxZjQxMzE2NjMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0
TGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlv
dXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91
dC5oIgotI2luY2x1ZGUgIkdQVVNoYWRlclN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFn
ZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PFdITFNM
OjpTaGFkZXJTdGFnZT4gcmVzdWx0OwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpG
bGFnczo6VmVydGV4KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVy
dGV4KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50KQot
ICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlm
IChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAgcmVzdWx0
LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4g
Y29udmVydEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cExheW91dDo6SW50ZXJuYWxCaW5kaW5nRGV0
YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKQotewotICAgIHJldHVybiBXVEY6OnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciB1bmlm
b3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWls
cz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VW5pZm9ybUJ1ZmZlckJpbmRpbmcgeyB1bmlm
b3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91
cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxX
SExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6
OlNhbXBsZXJCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNh
bXBsZWRUZXh0dXJlKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0
YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VGV4dHVyZUJpbmRpbmcgeyB9IH07Ci0g
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVy
KSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAg
ICAgICByZXR1cm4geyBXSExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVy
LmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJp
bmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSksIGlu
dGVybmFsQmluZGluZ0RldGFpbHMpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+
IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKLXsKLSAgICBX
SExTTDo6TGF5b3V0IHJlc3VsdDsKLSAgICBpZiAobGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlvdXQuYmlu
ZEdyb3VwTGF5b3V0cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGJpbmRH
cm91cExheW91dCA9IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKClbaV07Ci0gICAgICAgIFdITFNM
OjpCaW5kR3JvdXAgYmluZEdyb3VwOwotICAgICAgICBiaW5kR3JvdXAubmFtZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIg
OiBiaW5kR3JvdXBMYXlvdXQtPmJpbmRpbmdzTWFwKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGJpbmRpbmdEZXRhaWxzID0ga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICAgICAgV0hM
U0w6OkJpbmRpbmcgYmluZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcudmlzaWJpbGl0eSA9IGNv
bnZlcnRTaGFkZXJTdGFnZUZsYWdzKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy52aXNp
YmlsaXR5KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRp
bmdUeXBlKGJpbmRpbmdEZXRhaWxzLmludGVybmFsQmluZGluZ0RldGFpbHMpKQotICAgICAgICAg
ICAgICAgIGJpbmRpbmcuYmluZGluZyA9ICpiaW5kaW5nVHlwZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgaWYgKGJp
bmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgICAgICBiaW5kaW5nLmV4dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmV4dGVy
bmFsQmluZGluZy5iaW5kaW5nOwotICAgICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5hbWUgPSBi
aW5kaW5nRGV0YWlscy5pbnRlcm5hbE5hbWU7Ci0gICAgICAgICAgICBiaW5kR3JvdXAuYmluZGlu
Z3MuYXBwZW5kKFdURk1vdmUoYmluZGluZykpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoV1RGTW92ZShiaW5kR3JvdXApKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5N2RkNTJkZDdlNWRhMmFkMWQ0YTFjZGNmMmJjMTIxNWU4
MzUzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQ
aXBlbGluZUxheW91dDsKLQotc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5
b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1U
eXBlc01ldGFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVUGxhdGZvcm1UeXBlc01ldGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
OWFiNTQzNTg2ZTE0ZWU4ZmQ1NjA4YzA0ZWQzNmUxNzk4MWQzYzMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PG9iamMvTlNPYmpDUnVudGltZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JK
Q19DTEFTUyBDQU1ldGFsRHJhd2FibGU7Ci1PQkpDX0NMQVNTIFdlYkdQVUxheWVyOwotCi1PQkpD
X1BST1RPQ09MKE1UTEFyZ3VtZW50RW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJsaXRDb21t
YW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJ1ZmZlcik7Ci1PQkpDX1BST1RPQ09MKE1U
TENvbW1hbmRCdWZmZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kRW5jb2Rlcik7Ci1PQkpD
X1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVDb21t
YW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKLU9C
SkNfUFJPVE9DT0woTVRMRGVwdGhTdGVuY2lsU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExEZXZp
Y2UpOwotT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVy
Q29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsK
LU9CSkNfUFJPVE9DT0woTVRMUmVzb3VyY2UpOwotT0JKQ19QUk9UT0NPTChNVExTYW1wbGVyU3Rh
dGUpOwotT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci11c2luZyBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCA9IE5TVUludGVnZXI7Ci0KLS8vIE1ldGFs
IHR5cGVzCi11c2luZyBQbGF0Zm9ybUJ1ZmZlciA9IE1UTEJ1ZmZlcjsKLXVzaW5nIFBsYXRmb3Jt
QnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1CdWZmZXI+OwotCi11c2luZyBQbGF0
Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZvcm1Db21t
YW5kQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVyPjsKLQot
dXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgPSBNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXI7Ci11c2luZyBQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRy
PFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGlw
ZWxpbmUgPSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBp
cGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+OwotCi11
c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21h
cnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1EZXZpY2U+OwotCi11c2luZyBQbGF0Zm9ybURyYXdh
YmxlID0gQ0FNZXRhbERyYXdhYmxlOwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyID0g
UmV0YWluUHRyPFBsYXRmb3JtRHJhd2FibGU+OwotCi11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyID0gTVRMQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Qcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Ci11
c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1RdWV1ZT47Ci0K
LXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgPSBNVExSZW5kZXJDb21tYW5kRW5jb2Rl
cjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFpblB0cjxQ
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1SZW5kZXJQaXBlbGluZT47Ci0KLXVzaW5nIFBs
YXRmb3JtU2FtcGxlciA9IE1UTFNhbXBsZXJTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlclNt
YXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU2FtcGxlcj47Ci0KLXVzaW5nIFBsYXRmb3JtU2hh
ZGVyTW9kdWxlID0gTVRMTGlicmFyeTsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQ
dHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+OwotCi11c2luZyBQbGF0Zm9ybVN3
YXBMYXllciA9IFdlYkdQVUxheWVyOwotdXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9
IFJldGFpblB0cjxQbGF0Zm9ybVN3YXBMYXllcj47Ci0KLXVzaW5nIFBsYXRmb3JtVGV4dHVyZSA9
IE1UTFRleHR1cmU7Ci11c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0cjxQ
bGF0Zm9ybVRleHR1cmU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzY2I3OWRiODNiYTFlYjZlMGNiZGNiZTlkMGJhOWM5MDI0OWQ3OTg3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBh
c3NFbmNvZGVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIFtwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgZW5kRW5jb2RpbmddOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGludmFsaWRhdGVFbmNvZGVyKCk7Ci0gICAg
bV9jb21tYW5kQnVmZmVyLT5zZXRJc0VuY29kaW5nUGFzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgR1BV
QmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBhcmd1bWVudEJ1ZmZlciA9IGJpbmRHcm91
cC5hcmd1bWVudEJ1ZmZlcigpOwotICAgIGlmICghYXJndW1lbnRCdWZmZXIuZmlyc3QpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChhcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4KQotICAg
ICAgICBzZXRWZXJ0ZXhCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZl
ci5zZWNvbmQudmVydGV4LCBpbmRleCk7Ci0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5m
cmFnbWVudCkKLSAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3Qs
ICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuZnJhZ21lbnQsIGluZGV4KTsKLSAgICBpZiAoYXJndW1l
bnRCdWZmZXIuc2Vjb25kLmNvbXB1dGUpCi0gICAgICAgIHNldENvbXB1dGVCdWZmZXIoYXJndW1l
bnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSwgaW5kZXgpOwot
Ci0gICAgZm9yIChhdXRvJiBidWZmZXIgOiBiaW5kR3JvdXAuYm91bmRCdWZmZXJzKCkpIHsKLSAg
ICAgICAgdXNlUmVzb3VyY2UoYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxN
VExSZXNvdXJjZVVzYWdlPihidWZmZXItPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAgICBtX2Nv
bW1hbmRCdWZmZXItPnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICB9Ci0gICAgZm9y
IChhdXRvJiB0ZXh0dXJlIDogYmluZEdyb3VwLmJvdW5kVGV4dHVyZXMoKSkgewotICAgICAgICB1
c2VSZXNvdXJjZSh0ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSwgc3RhdGljX2Nhc3Q8TVRMUmVz
b3VyY2VVc2FnZT4odGV4dHVyZS0+cGxhdGZvcm1Vc2FnZSgpKSk7Ci0gICAgICAgIG1fY29tbWFu
ZEJ1ZmZlci0+dXNlVGV4dHVyZSh0ZXh0dXJlLmNvcHlSZWYoKSk7Ci0gICAgfQotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVl
dWVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxYjQyYjU5NDRmNDZi
OWYyN2RhOTBlNjQxNmM2ZGJmMGIwNWExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUXVldWVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
ID0gQCJjb20uYXBwbGUuV2ViS2l0IjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRR
dWV1ZUxhYmVsUHJlZml4ID0gQCJjb20uYXBwbGUuV2ViS2l0LiI7Ci0KLVJlZlB0cjxHUFVRdWV1
ZT4gR1BVUXVldWU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVR
dWV1ZTo6dHJ5Q3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBxdWV1ZTsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcXVldWUgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdDb21tYW5kUXVldWVdKTsKLSAgICBbcXVldWUg
c2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVF1ZXVlOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kUXVldWUhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgR1BVUXVldWUoV1RGTW92ZShxdWV1ZSksIGRldmljZSkpOwotfQotCi1HUFVRdWV1ZTo6R1BV
UXVldWUoUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBt
X2RldmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVlOjpzdWJt
aXQoVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKLXsKLSAg
ICBmb3IgKGF1dG8mIGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVycykgewotICAgICAgICAv
LyBWYWxpZGF0ZSByZXNvdXJjZSBpbnRlZ3JpdHkuCi0gICAgICAgIGZvciAoYXV0byYgYnVmZmVy
IDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1ZmZlcnMoKSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZl
ci0+c3RhdGUoKSAhPSBHUFVCdWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkgewotICAgICAgICAgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQnVmZmVyIHNl
dCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGNvbW1h
bmRCdWZmZXItPnVzZWRUZXh0dXJlcygpKSB7Ci0gICAgICAgICAgICBpZiAoIXRleHR1cmUtPnBs
YXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVl
OjpzdWJtaXQoKTogSW52YWxpZCBHUFVUZXh0dXJlIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIh
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNvbW1hbmRCdWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotICAgICAgICAvLyBPa2F5
IHRvIGNvbW1pdDsgcHJldmVudCBhbnkgYnVmZmVyIG1hcHBpbmcgY2FsbGJhY2tzIGZyb20gZXhl
Y3V0aW5nIHVudGlsIGNvbW1hbmQgYnVmZmVyIGlzIGNvbXBsZXRlLgotICAgICAgICBmb3IgKGF1
dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpCi0gICAgICAgICAgICBi
dWZmZXItPmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoY29tbWFuZEJ1ZmZlci0+cGxhdGZvcm1Db21t
YW5kQnVmZmVyKCkpOwotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgW2NvbW1hbmRCdWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1pdF07Ci0gICAg
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICBpZiAobV9wcmVzZW50
VGFzay5pc1BlbmRpbmcoKSB8fCAhbV9kZXZpY2UgfHwgIW1fZGV2aWNlLT5zd2FwQ2hhaW4oKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgYSBHUFVTd2FwQ2hhaW4gZXhpc3RzLCBlbnN1
cmUgdGhhdCBhIHByZXNlbnQgaXMgc2NoZWR1bGVkIGFmdGVyIGFsbCBjb21tYW5kIGJ1ZmZlcnMu
Ci0gICAgbV9wcmVzZW50VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgc3dhcENoYWluID0gbWFrZVJlZigqbV9kZXZpY2UtPnN3YXBDaGFpbigp
KV0gKCkgewotICAgICAgICBhdXRvIGN1cnJlbnREcmF3YWJsZSA9IHN3YXBDaGFpbi0+dGFrZURy
YXdhYmxlKCk7Ci0gICAgICAgIC8vIElmIHRoZSBHUFVTd2FwQ2hhaW4gaGFzIG5vIGRyYXdhYmxl
LCBpdCB3YXMgaW52YWxpZGF0ZWQgYmV0d2VlbiBjb21tYW5kIHN1Ym1pc3Npb24gYW5kIHRoaXMg
dGFzay4KLSAgICAgICAgaWYgKCFjdXJyZW50RHJhd2FibGUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgYXV0byBwcmVzZW50Q29tbWFuZEJ1ZmZlciA9IFttX3BsYXRmb3JtUXVldWUg
Y29tbWFuZEJ1ZmZlcl07Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBwcmVzZW50RHJh
d2FibGU6c3RhdGljX2Nhc3Q8aWQ8TVRMRHJhd2FibGU+PihjdXJyZW50RHJhd2FibGUuZ2V0KCkp
XTsKLSAgICAgICAgW3ByZXNlbnRDb21tYW5kQnVmZmVyIGNvbW1pdF07Ci0gICAgfSk7Ci19Ci0K
LVN0cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybVF1
ZXVlKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwcmVm
aXhlZExhYmVsID0gW21fcGxhdGZvcm1RdWV1ZSBsYWJlbF07Ci0KLSAgICBpZiAoW3ByZWZpeGVk
TGFiZWwgaXNFcXVhbFRvU3RyaW5nOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF0pCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgQVNTRVJUKHByZWZpeGVkTGFiZWwubGVuZ3Ro
ID4gY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoKTsKLSAgICByZXR1cm4gW3ByZWZpeGVk
TGFiZWwgc3Vic3RyaW5nRnJvbUluZGV4OmNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aF07
Ci19Ci0KLXZvaWQgR1BVUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0
Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBz
ZXRMYWJlbDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAgICAgW21f
cGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpbY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggc3RyaW5nQnlB
cHBlbmRpbmdTdHJpbmc6bGFiZWxdXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNv
ZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMzU1ZTIzYTE4MDk3
MTA3N2QxZmExYmNkMTU5Y2Q4ZmJiYjk2ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJ1
ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29sb3IuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIu
aCIKLSNpbXBvcnQgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5k
ZXJQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhC
dWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgTVRMTG9hZEFjdGlvbiBsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKEdQ
VUxvYWRPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVMb2FkT3A6OkNs
ZWFyOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkNsZWFyOwotICAgIGNhc2UgR1BVTG9h
ZE9wOjpMb2FkOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkxvYWQ7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTdG9yZUFjdGlvbiBzdG9y
ZUFjdGlvbkZvckdQVVN0b3JlT3AoR1BVU3RvcmVPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7
Ci0gICAgY2FzZSBHUFVTdG9yZU9wOjpTdG9yZToKLSAgICAgICAgcmV0dXJuIE1UTFN0b3JlQWN0
aW9uU3RvcmU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRp
YyBib29sIHBvcHVsYXRlTXRsQ29sb3JBdHRhY2htZW50c0FycmF5KE1UTFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgKmFycmF5LCBjb25zdCBWZWN0b3I8R1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJB
TShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGVzY3JpcHRvcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRv
ciA9IGRlc2NyaXB0b3JzW2ldOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuYXR0YWNobWVudC0+
cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxp
ZCBNVExUZXh0dXJlIGZvciBjb2xvciBhdHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaSk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXV0
byYgY29sb3IgPSBkZXNjcmlwdG9yLmNsZWFyQ29sb3I7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgYXV0byBtdGxBdHRhY2htZW50ID0gcmV0YWluUHRy
KFthcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6aV0pOwotICAgICAgICBbbXRsQXR0YWNo
bWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCld
OwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtl
KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEpXTsKLSAgICAgICAgW210bEF0dGFj
aG1lbnQgc2V0TG9hZEFjdGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IubG9h
ZE9wKV07Ci0gICAgICAgIFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9u
Rm9yR1BVU3RvcmVPcChkZXNjcmlwdG9yLnN0b3JlT3ApXTsKLQotICAgICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBi
b29sIHBvcHVsYXRlTXRsRGVwdGhTdGVuY2lsQXR0YWNobWVudChNVExSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvciAqbXRsQXR0YWNobWVudCwgY29uc3QgR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmICghZGVzY3JpcHRvci5hdHRhY2htZW50
LT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQg
TVRMVGV4dHVyZSBmb3IgZGVwdGggYXR0YWNobWVudCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBbbXRsQXR0YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+
cGxhdGZvcm1UZXh0dXJlKCldOwotICAgIFttdGxBdHRhY2htZW50IHNldENsZWFyRGVwdGg6ZGVz
Y3JpcHRvci5jbGVhckRlcHRoXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0aW9uOmxv
YWRBY3Rpb25Gb3JHUFVMb2FkT3AoZGVzY3JpcHRvci5kZXB0aExvYWRPcCldOwotICAgIFttdGxB
dHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlw
dG9yLmRlcHRoU3RvcmVPcCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHVzZUF0dGFjaG1lbnRzKEdQVUNvbW1h
bmRCdWZmZXImIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQot
ewotICAgIGZvciAoYXV0byYgY29sb3JBdHRhY2htZW50IDogZGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBidWZmZXIudXNlVGV4dHVyZShXVEZNb3ZlKGNvbG9yQXR0YWNobWVu
dC5hdHRhY2htZW50KSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCkKLSAgICAgICAgYnVmZmVyLnVzZVRleHR1cmUoV1RGTW92ZSgoKmRlc2NyaXB0b3IuZGVwdGhT
dGVuY2lsQXR0YWNobWVudCkuYXR0YWNobWVudCkpOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGFz
c0VuY29kZXI+IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRC
dWZmZXI+JiYgYnVmZmVyLCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjp0cnlDcmVhdGUoKSI7Ci0KLSAgICAvLyBPbmx5IG9uZSBjb21tYW5kIGVuY29kZXIgbWF5
IGJlIGFjdGl2ZSBhdCBhIHRpbWUuCi0gICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBtdXN0IGJl
IGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBS
ZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5T
KFtNVExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFwb3B1
bGF0ZU10bENvbG9yQXR0YWNobWVudHNBcnJheShtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0
YWNobWVudHMsIGRlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cywgZnVuY3Rpb25OYW1lKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50Ci0gICAgICAgICYmICFwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQo
bXRsRGVzY3JpcHRvci5nZXQoKS5kZXB0aEF0dGFjaG1lbnQsICpkZXNjcmlwdG9yLmRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgYnVmZmVyLT5lbmRCbGl0RW5jb2RpbmcoKTsKLQotICAgIFJldGFpblB0cjxNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgbXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZl
cigpIHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQo
KV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bEVuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRl
ckNvbW1hbmRFbmNvZGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIC8vIEFsbCBpcyB3ZWxsOyBlbnN1cmUgR1BVQ29tbWFuZEJ1ZmZlciBp
cyBhd2FyZSBvZiBuZXcgYXR0YWNobWVudHMuCi0gICAgdXNlQXR0YWNobWVudHMoYnVmZmVyLCBX
VEZNb3ZlKGRlc2NyaXB0b3IpKTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJl
bmRlclBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwot
fQotCi1HUFVSZW5kZXJQYXNzRW5jb2Rlcjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRF
bmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZN
b3ZlKGNvbW1hbmRCdWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKFdU
Rk1vdmUoZW5jb2RlcikpCi17Ci19Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmIHBp
cGVsaW5lKQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52
YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IE1ldGFsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgTVRMUGlw
ZWxpbmVTdGF0ZSdzIGF0dGFjaG1lbnQgZm9ybWF0cyBkbyBub3QgbWF0Y2ggdGhlIE1UTENvbW1h
bmRFbmNvZGVyJ3MgYXR0YWNobWVudCBmb3JtYXRzLgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBpZiAocGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCkpCi0gICAg
ICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0RGVwdGhTdGVuY2lsU3RhdGU6cGlw
ZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCldOwotCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlciBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9waXBl
bGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5n
IGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRCbGVu
ZENvbG9yUmVkOmNvbG9yLnIgZ3JlZW46Y29sb3IuZyBibHVlOmNvbG9yLmIgYWxwaGE6Y29sb3Iu
YV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgaWYgKCFt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2Rp
bmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZp
ZXdwb3J0OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCB9XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lz
c29yUmVjdCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFNjaXNzb3JSZWN0OiB7IHgsIHksIHdp
ZHRoLCBoZWlnaHQgfV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lk
IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1ZmZlciwg
dWludDY0X3Qgb2Zmc2V0KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhC
dWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvZmZzZXQgPj0gYnVmZmVyLmJ5dGVMZW5ndGgoKSB8
fCBvZmZzZXQgJSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvZmZzZXQhIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgQVNTRVJUKGJ1ZmZlci5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAvLyBCdWZm
ZXIgbXVzdCBiZSBjYWNoZWQgdG8gcHJvdmlkZSBpdCB0byBNZXRhbCB2aWEgZHJhd0luZGV4ZWRQ
cmltaXRpdmVzLgotICAgIG1faW5kZXhCdWZmZXIgPSBtYWtlUmVmUHRyKGJ1ZmZlcik7Ci0gICAg
bV9pbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9yPFJlZjxH
UFVCdWZmZXI+PiYgYnVmZmVycywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsK
LSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoKTogSW52YWxpZCBv
cGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUKGJ1ZmZlcnMuc2l6ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1ZmZlcnMu
c2l6ZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBt
dGxCdWZmZXJzID0gYnVmZmVycy5tYXAoW3RoaXNdIChhdXRvJiBidWZmZXIpIHsKLSAgICAgICAg
Y29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICAgICAgQVNT
RVJUKGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7Ci0gICAgICAgIHJldHVybiBidWZmZXItPnBs
YXRmb3JtQnVmZmVyKCk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGluZGV4UmFuZ2VzID0gTlNNYWtl
UmFuZ2UoV0hMU0w6Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCksIGJ1
ZmZlcnMuc2l6ZSgpKTsKLQotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0VmVy
dGV4QnVmZmVyczptdGxCdWZmZXJzLmRhdGEoKSBvZmZzZXRzOihjb25zdCBOU1VJbnRlZ2VyICop
b2Zmc2V0cy5kYXRhKCkgd2l0aFJhbmdlOmluZGV4UmFuZ2VzXTsKLQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLX0KLQotc3RhdGljIE1UTFByaW1pdGl2ZVR5cGUgbXRsUHJpbWl0aXZl
VHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KEdQVVByaW1pdGl2ZVRvcG9sb2d5IHR5cGUpCi17
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6UG9p
bnRMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVBvaW50OwotICAgIGNhc2Ug
R1BVUHJpbWl0aXZlVG9wb2xvZ3k6OkxpbmVMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0
aXZlVHlwZUxpbmU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6TGluZVN0cmlwOgot
ICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZUxpbmVTdHJpcDsKLSAgICBjYXNlIEdQVVBy
aW1pdGl2ZVRvcG9sb2d5OjpUcmlhbmdsZUxpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRp
dmVUeXBlVHJpYW5nbGU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVT
dHJpcDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVUcmlhbmdsZVN0cmlwOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50
LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBp
ZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5n
IGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGlu
ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTog
Tm8gdmFsaWQgR1BVUmVuZGVyUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyIAotICAgICAgICBkcmF3UHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBl
Rm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkK
LSAgICAgICAgdmVydGV4U3RhcnQ6Zmlyc3RWZXJ0ZXgKLSAgICAgICAgdmVydGV4Q291bnQ6dmVy
dGV4Q291bnQKLSAgICAgICAgaW5zdGFuY2VDb3VudDppbnN0YW5jZUNvdW50Ci0gICAgICAgIGJh
c2VJbnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXN0YXRpYyBNVExJbmRleFR5cGUgbXRsSW5kZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQo
R1BVSW5kZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2Fz
ZSBHUFVJbmRleEZvcm1hdDo6VWludDE2OgotICAgICAgICByZXR1cm4gTVRMSW5kZXhUeXBlVUlu
dDE2OwotICAgIGNhc2UgR1BVSW5kZXhGb3JtYXQ6OlVpbnQzMjoKLSAgICAgICAgcmV0dXJuIE1U
TEluZGV4VHlwZVVJbnQzMjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhD
b3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJh
c2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAot
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6ZHJhd0luZGV4ZWQoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uOiBF
bmNvZGluZyBpcyBlbmRlZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZh
bGlkIEdQVVJlbmRlclBpcGVsaW5lIGZvdW5kISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICIlczogTm8gR1BVSW5kZXhGb3JtYXQgc3BlY2lmaWVkISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2luZGV4QnVmZmVy
IHx8ICFtX2luZGV4QnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICIlczogTm8gdmFsaWQgaW5kZXggYnVmZmVyIHNldCEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBpbmRleEJ5dGVTaXplID0gKG1fcGlwZWxp
bmUtPmluZGV4Rm9ybWF0KCkgPT0gR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNikgPyBzaXplb2YodWlu
dDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90KTsKLQotICAgIC8vIFRoaXMgY2FsY3VsYXRpb24gY2Fu
bm90IG92ZXJmbG93IGFzIGZpcnN0SW5kZXggaXMgYm91bmRlZCB0byAzMiBiaXRzLCBhbmQgaW5k
ZXhCeXRlU2l6ZSB0byBzaXplb2YodWludDMyX3QpLgotICAgIHVpbnQ2NF90IGZpcnN0SW5kZXhP
ZmZzZXQgPSBmaXJzdEluZGV4ICogaW5kZXhCeXRlU2l6ZTsKLQotICAgIC8vIFRoaXMgY2FsbCBl
bnN1cmVzIHRoYXQgbmVpdGhlciBhcmd1bWVudCBub3IgdGhlaXIgc3VtIHdpbGwgb3ZlcmZsb3cg
TlNVSW50ZWdlci4KLSAgICBhdXRvIHRvdGFsT2Zmc2V0ID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2Vy
PihmaXJzdEluZGV4T2Zmc2V0LCBtX2luZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBpZiAodG90YWxP
ZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IHRvdGFsT2Zmc2V0ID49IG1faW5kZXhCdWZmZXItPmJ5
dGVMZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgZmlyc3RJbmRl
eCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tbWFu
ZEJ1ZmZlcigpLnVzZUJ1ZmZlcihtYWtlUmVmKCptX2luZGV4QnVmZmVyKSk7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
Ci0gICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJp
bWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAg
aW5kZXhDb3VudDppbmRleENvdW50Ci0gICAgICAgIGluZGV4VHlwZTptdGxJbmRleFR5cGVGb3JH
UFVJbmRleEZvcm1hdCgqbV9waXBlbGluZS0+aW5kZXhGb3JtYXQoKSkKLSAgICAgICAgaW5kZXhC
dWZmZXI6bV9pbmRleEJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBpbmRleEJ1ZmZl
ck9mZnNldDp0b3RhbE9mZnNldC52YWx1ZSgpCi0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFu
Y2VDb3VudAotICAgICAgICBiYXNlVmVydGV4OmJhc2VWZXJ0ZXgKLSAgICAgICAgYmFzZUluc3Rh
bmNlOmZpcnN0SW5zdGFuY2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
I2lmIFVTRShNRVRBTCkKLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2Uo
Y29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAgICBBU1NF
UlQobV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6
cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0K
LQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1
ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
QVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZlcnRl
eEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEZy
YWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwg
dW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rl
cik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyIHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zmc2V0IGF0
SW5kZXg6aW5kZXhdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2VuZGlm
IC8vIFVTRShNRVRBTCkKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZTc3ZTY5NTdiZmI0OTU0NDEyMjUxYTAzOTg1Njlj
OTY0M2E4YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVs
aW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJy
b3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVUxpbWl0cy5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2lt
cG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgotI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0jaW1wb3J0
IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhTdGVu
Y2lsU3RhdGU+IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVURlcHRoU3Rl
bmNpbFN0YXRlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2Us
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTERlcHRoU3RlbmNp
bERlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJVbmFibGUgdG8gY3JlYXRlIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbXRsRGVwdGhDb21w
YXJlID0gc3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5j
dGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmRlcHRoQ29tcGFyZSkpOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOm10bERlcHRoQ29tcGFyZV07
Ci0gICAgW210bERlc2NyaXB0b3Igc2V0RGVwdGhXcml0ZUVuYWJsZWQ6ZGVzY3JpcHRvci5kZXB0
aFdyaXRlRW5hYmxlZF07Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJhY2svZnJvbnRGYWNl
U3RlbmNpbC4KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gc3RhdGU7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHN0YXRlID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRv
cjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4
ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVwdGhTdGVuY2lsU3RhdGUhIik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0ZTsKLX0KLQotc3RhdGlj
IFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQg
dmVydGV4Rm9ybWF0KQotewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBH
UFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0NDoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3Jt
YXQ6OkZsb2F0UjMyRzMyQjMyQTMyOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDM6
Ci0gICAgICAgIHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMjsKLSAg
ICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQyOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZl
cnRleEZvcm1hdDo6RmxvYXRSMzJHMzI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZl
cnRleEZvcm1hdCA9PSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0KTsKLSAgICAgICAgcmV0dXJuIFdI
TFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V0hMU0w6OlRleHR1cmVGb3JtYXQ+IGNvbnZlcnRUZXh0dXJlRm9ybWF0KEdQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVU
ZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVG
b3JtYXQ6OlJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3Jt
OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07Ci0gICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRo
aXMuCi0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAg
cmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKLSAgICBjYXNlIEdQ
VVRleHR1cmVGb3JtYXQ6OlJnYmExNmZsb2F0OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1
cmVGb3JtYXQ6OlJHQkExNkZsb2F0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotfQotCi1zdGF0aWMgTVRMVmVydGV4Rm9ybWF0IG10bFZlcnRleEZv
cm1hdEZvckdQVVZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3
aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0OgotICAgICAg
ICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQ7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6
OkZsb2F0MjoKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0MjsKLSAgICBjYXNl
IEdQVVZlcnRleEZvcm1hdDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0
RmxvYXQzOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVy
biBNVExWZXJ0ZXhGb3JtYXRGbG9hdDQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXN0YXRpYyBNVExWZXJ0ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0aW9uRm9y
R1BVSW5wdXRTdGVwTW9kZShHUFVJbnB1dFN0ZXBNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBNb2RlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVy
biBNVExWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJWZXJ0ZXg7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBN
b2RlOjpJbnN0YW5jZToKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlvblBlcklu
c3RhbmNlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0vLyBGSVhN
RTogTW92ZSB0aGlzIGludG8gR1BVTGltaXRzIHdoZW4gdGhhdCBpcyBpbXBsZW1lbnRlZCBwcm9w
ZXJseS4KLWNvbnN0ZXhwciB1bnNpZ25lZCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7Ci0KLXN0
YXRpYyBib29sIHRyeVNldFZlcnRleElucHV0KGNvbnN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9y
LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERl
c2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBjb25zdCBhdXRv
JiBidWZmZXJzID0gZGVzY3JpcHRvci52ZXJ0ZXhCdWZmZXJzOwotCi0gICAgaWYgKGJ1ZmZlcnMu
c2l6ZSgpID4gbWF4VmVydGV4QnVmZmVycykgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzISIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBtdGxWZXJ0ZXhEZXNjcmlw
dG9yID0gYWRvcHROUyhbTVRMVmVydGV4RGVzY3JpcHRvciBuZXddKTsKLQotICAgIGF1dG8gbGF5
b3V0QXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzKTsK
LSAgICBhdXRvIGF0dHJpYnV0ZUFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3Iu
Z2V0KCkuYXR0cmlidXRlcyk7Ci0KLSAgICAvLyBBdHRyaWJ1dGUgc2hhZGVyTG9jYXRpb25zIG11
c3QgYmUgdW5pcXVlbHkgZmxhdC1tYXBwZWQgdG8gWzAsIHttYXggbnVtYmVyIG9mIHZlcnRleCBh
dHRyaWJ1dGVzfV0uCi0gICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXggPSAwOwotICAgIEhhc2hT
ZXQ8dW5zaWduZWQsIEludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4gbG9jYXRpb25zOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmICghYnVm
ZmVyc1tpbmRleF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRv
JiBhdHRyaWJ1dGVzID0gYnVmZmVyc1tpbmRleF0tPmF0dHJpYnV0ZVNldDsKLQotICAgICAgICBp
ZiAoYXR0cmlidXRlcy5zaXplKCkgKyBhdHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0dHJpYnV0
ZXMpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9v
IG1hbnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMhIik7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBOU1VJbnRlZ2VyIGlucHV0U3RyaWRlID0g
MDsKLSAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYnVmZmVyc1tpbmRleF0tPnN0cmlk
ZSwgaW5wdXRTdHJpZGUpKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IobWFrZVN0cmluZygiU3RyaWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
ICIsIGluZGV4LCAiIGlzIHRvbyBsYXJnZSEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlckluZGV4ID0gV0hMU0w6
Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCk7Ci0KLSAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIGF1dG8gbXRsTGF5b3V0RGVzYyA9IHJl
dGFpblB0cihbbGF5b3V0QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmNvbnZlcnRlZEJ1
ZmZlckluZGV4XSk7Ci0gICAgICAgIFttdGxMYXlvdXREZXNjIHNldFN0ZXBGdW5jdGlvbjptdGxT
dGVwRnVuY3Rpb25Gb3JHUFVJbnB1dFN0ZXBNb2RlKGJ1ZmZlcnNbaW5kZXhdLT5zdGVwTW9kZSld
OwotICAgICAgICBbbXRsTGF5b3V0RGVzYyBzZXRTdHJpZGU6aW5wdXRTdHJpZGVdOwotICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBh
dHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBpZiAoIWxvY2F0aW9ucy5hZGQo
YXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAg
ZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxpY2F0ZSBz
aGFkZXJMb2NhdGlvbiAiLCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZlcnRleCBh
dHRyaWJ1dGUhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgTlNVSW50ZWdlciBvZmZzZXQgPSAwOwotICAgICAgICAgICAgaWYg
KCFXVEY6OmNvbnZlcnRTYWZlbHkoYXR0cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewotICAgICAg
ICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJC
dWZmZXIgb2Zmc2V0IGZvciB2ZXJ0ZXggYXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFkZXJMb2Nh
dGlvbiwgIiBpcyB0b28gbGFyZ2UhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgICAgICBhdXRvIG10bEF0dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0dHJpYnV0
ZUFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDphdHRyaWJ1dGVJbmRleF0pOwotICAgICAg
ICAgICAgW210bEF0dHJpYnV0ZURlc2Mgc2V0Rm9ybWF0Om10bFZlcnRleEZvcm1hdEZvckdQVVZl
cnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KV07Ci0gICAgICAgICAgICBbbXRsQXR0cmlidXRl
RGVzYyBzZXRPZmZzZXQ6b2Zmc2V0XTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNl
dEJ1ZmZlckluZGV4OmNvbnZlcnRlZEJ1ZmZlckluZGV4XTsKLSAgICAgICAgICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICAgICAgaWYgKHdobHNsRGVzY3JpcHRvcikKLSAg
ICAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPnZlcnRleEF0dHJpYnV0ZXMuYXBwZW5kKHsg
Y29udmVydFZlcnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KSwgYXR0cmlidXRlLnNoYWRlckxv
Y2F0aW9uLCBhdHRyaWJ1dGVJbmRleCB9KTsKLQotICAgICAgICAgICAgKythdHRyaWJ1dGVJbmRl
eDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleERlc2Ny
aXB0b3I6bXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIE1UTENvbG9yV3JpdGVNYXNrIG10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JX
cml0ZUZsYWdzKEdQVUNvbG9yV3JpdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxhZ3MgPT0g
c3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxs
KSkKLSAgICAgICAgcmV0dXJuIE1UTENvbG9yV3JpdGVNYXNrQWxsOwotCi0gICAgYXV0byBvcHRp
b25zID0gT3B0aW9uU2V0PEdQVUNvbG9yV3JpdGU6OkZsYWdzPjo6ZnJvbVJhdyhmbGFncyk7Ci0K
LSAgICBNVExDb2xvcldyaXRlTWFzayBtYXNrID0gTVRMQ29sb3JXcml0ZU1hc2tOb25lOwotICAg
IGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OlJlZCkKLSAgICAgICAgbWFzayB8
PSBNVExDb2xvcldyaXRlTWFza1JlZDsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6
OkZsYWdzOjpHcmVlbikKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza0dyZWVuOwot
ICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkJsdWUpCi0gICAgICAgIG1h
c2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tCbHVlOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JX
cml0ZTo6RmxhZ3M6OkFscGhhKQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQWxw
aGE7Ci0KLSAgICByZXR1cm4gbWFzazsKLX0KLQotc3RhdGljIE1UTEJsZW5kT3BlcmF0aW9uIG10
bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRPcGVyYXRpb24oR1BVQmxlbmRPcGVyYXRpb24gb3Ap
Ci17Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OkFkZDoK
LSAgICAgICAgcmV0dXJuIE1UTEJsZW5kT3BlcmF0aW9uQWRkOwotICAgIGNhc2UgR1BVQmxlbmRP
cGVyYXRpb246OlN1YnRyYWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25TdWJ0
cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpSZXZlcnNlU3VidHJhY3Q6Ci0gICAg
ICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdDsKLSAgICBjYXNlIEdQ
VUJsZW5kT3BlcmF0aW9uOjpNaW46Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1p
bjsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpNYXg6Ci0gICAgICAgIHJldHVybiBNVExC
bGVuZE9wZXJhdGlvbk1heDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIE1UTEJsZW5kRmFjdG9yIG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Io
R1BVQmxlbmRGYWN0b3IgZmFjdG9yKQotewotICAgIHN3aXRjaCAoZmFjdG9yKSB7Ci0gICAgY2Fz
ZSBHUFVCbGVuZEZhY3Rvcjo6WmVybzoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yWmVy
bzsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmU6Ci0gICAgICAgIHJldHVybiBNVExCbGVu
ZEZhY3Rvck9uZTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNDb2xvcjoKLSAgICAgICAg
cmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rv
cjo6T25lTWludXNTcmNDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWlu
dXNTb3VyY2VDb2xvcjsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYToKLSAgICAg
ICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZh
Y3Rvcjo6T25lTWludXNTcmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25l
TWludXNTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpEc3RDb2xvcjoKLSAg
ICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvcjsKLSAgICBjYXNlIEdQ
VUJsZW5kRmFjdG9yOjpPbmVNaW51c0RzdENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6
RHN0QWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGE7
Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNEc3RBbHBoYToKLSAgICAgICAgcmV0
dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhOwotICAgIGNhc2UgR1BV
QmxlbmRGYWN0b3I6OlNyY0FscGhhU2F0dXJhdGVkOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpCbGVuZENvbG9yOgot
ICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JCbGVuZENvbG9yOwotICAgIGNhc2UgR1BVQmxl
bmRGYWN0b3I6Ok9uZU1pbnVzQmxlbmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yT25lTWludXNCbGVuZENvbG9yOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1zdGF0aWMgYm9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8R1BVQ29s
b3JTdGF0ZURlc2NyaXB0b3I+JiBjb2xvclN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFycmF5LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBl
cnJvclNjb3BlcykKLXsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0gbnVtYmVy
IG9mIGNvbG9yIGF0dGFjaG1lbnRzIHBlciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0cy4KLSAg
ICBpZiAoY29sb3JTdGF0ZXMuc2l6ZSgpID4gNCkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyEiKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbG9yU3RhdGVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gY29sb3JTdGF0ZXNbaV07Ci0gICAgICAg
IGF1dG8gZGVzY3JpcHRvciA9IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OmldKTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8
TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQo
c3RhdGUuZm9ybWF0KSldOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRXcml0ZU1hc2s6bXRsQ29s
b3JXcml0ZU1hc2tGb3JHUFVDb2xvcldyaXRlRmxhZ3Moc3RhdGUud3JpdGVNYXNrKV07Ci0gICAg
ICAgIFtkZXNjcmlwdG9yIHNldEJsZW5kaW5nRW5hYmxlZDpZRVNdOwotICAgICAgICBbZGVzY3Jp
cHRvciBzZXRBbHBoYUJsZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRP
cGVyYXRpb24oc3RhdGUuYWxwaGFCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rlc2NyaXB0
b3Igc2V0UmdiQmxlbmRPcGVyYXRpb246bXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVuZE9wZXJh
dGlvbihzdGF0ZS5jb2xvckJsZW5kLm9wZXJhdGlvbildOwotICAgICAgICBbZGVzY3JpcHRvciBz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZh
Y3RvcihzdGF0ZS5hbHBoYUJsZW5kLmRzdEZhY3RvcildOwotICAgICAgICBbZGVzY3JpcHRvciBz
ZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0
b3Ioc3RhdGUuY29sb3JCbGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0
U291cmNlQWxwaGFCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFjdG9yKHN0
YXRlLmFscGhhQmxlbmQuc3JjRmFjdG9yKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFNvdXJj
ZVJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29s
b3JCbGVuZC5zcmNGYWN0b3IpXTsKLQotICAgICAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBmb3JtYXQgPSBjb252ZXJ0VGV4dHVyZUZvcm1hdChzdGF0ZS5m
b3JtYXQpKQotICAgICAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+YXR0YWNobWVudHNTdGF0
ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwgaX0pOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQ
cmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBmb3IgR1BV
Q29sb3JTdGF0ZURlc2NyaXB0b3IgIiwgaSwgIiEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHRy
eVNldE1ldGFsRnVuY3Rpb25zKE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwgTVRMTGli
cmFyeSAqZnJhZ21lbnRNZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
bXRsRGVzY3JpcHRvciwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudEVudHJ5UG9pbnROYW1lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
ICAgICAvLyBNZXRhbCByZXF1aXJlcyBhIHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBl
bGluZXMuCi0gICAgICAgIGlmICghdmVydGV4TWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIHZlcnRleCBz
dGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFt2ZXJ0ZXhNZXRhbExpYnJh
cnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2ZXJ0ZXhFbnRyeVBvaW50TmFtZV0pOwotICAgICAgICBp
ZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gJyIsIHZl
cnRleEVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLQotICAgICAgICBbbXRsRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5j
dGlvbi5nZXQoKV07Ci0KLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAg
Ly8gSG93ZXZlciwgZnJhZ21lbnQgc2hhZGVycyBhcmUgb3B0aW9uYWwuCi0gICAgICAgIGlmICgh
ZnJhZ21lbnRNZXRhbExpYnJhcnkgfHwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZS5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9w
dE5TKFtmcmFnbWVudE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdtZW50RW50
cnlQb2ludE5hbWVdKTsKLQotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0
ZSBmcmFnbWVudCBNVExGdW5jdGlvbiAnIiwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgIichIikp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERl
c2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25z
dCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mIGZyYWdtZW50U3RhZ2Us
IGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIG10
bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAg
IFJldGFpblB0cjxNVExMaWJyYXJ5PiB2ZXJ0ZXhMaWJyYXJ5LCBmcmFnbWVudExpYnJhcnk7Ci0g
ICAgU3RyaW5nIHZlcnRleEVudHJ5UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludDsKLQotICAgIGlm
ICh3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKHZlcnRleFN0YWdlLm1vZHVsZS0+
d2hsc2xNb2R1bGUoKSk7Ci0gICAgICAgIEFTU0VSVCghZnJhZ21lbnRTdGFnZSB8fCBmcmFnbWVu
dFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3JpcHRv
ci0+dmVydGV4RW50cnlQb2ludE5hbWUgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAg
ICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZnJhZ21l
bnRFbnRyeVBvaW50TmFtZSA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAg
YXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgqdmVydGV4U3RhZ2UubW9k
dWxlLT53aGxzbE1vZHVsZSgpLCBmcmFnbWVudFN0YWdlID8gZnJhZ21lbnRTdGFnZS0+bW9kdWxl
LT53aGxzbE1vZHVsZSgpIDogbnVsbHB0ciwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlm
ICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwgd2hsc2xD
b21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotCi0gICAgICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAg
ICAgICAgaWYgKFdITFNMOjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBzdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIwMDQ3NCBBZGQgZGlyZWN0IFN0cmluZ0J1aWxkZXIgLT4gTlNTdHJpbmcg
Y29udmVyc2lvbiB0byBhdm9pZCBleHRyYSBjb3B5IGludG8gYSBXVEY6OlN0cmluZwotICAgICAg
ICB2ZXJ0ZXhMaWJyYXJ5ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGli
cmFyeVdpdGhTb3VyY2U6d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygp
IG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRh
bENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1l
czogIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwg
IiBtcyIpOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYg
KCF2ZXJ0ZXhMaWJyYXJ5ICYmIGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7
Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRp
ZgotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKHZlcnRleExpYnJhcnkpOwotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBP
bmNlIHdlIHplcm8tZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywg
c28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBm
cmFnbWVudExpYnJhcnkgPSB2ZXJ0ZXhMaWJyYXJ5OwotICAgICAgICB2ZXJ0ZXhFbnRyeVBvaW50
ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUudG9TdHJp
bmcoKTsKLSAgICAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICBmcmFnbWVudEVu
dHJ5UG9pbnQgPSB3aGxzbENvbXBpbGVSZXN1bHQtPm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnRO
YW1lLnRvU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IHZl
cnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAgdmVydGV4
RW50cnlQb2ludCA9IHZlcnRleFN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgICAgIGlmIChmcmFnbWVu
dFN0YWdlKSB7Ci0gICAgICAgICAgICBmcmFnbWVudExpYnJhcnkgPSBmcmFnbWVudFN0YWdlLT5t
b2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgICAgICBmcmFnbWVudEVudHJ5
UG9pbnQgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50OwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRyeVNldE1ldGFsRnVuY3Rpb25zKHZlcnRleExpYnJhcnkuZ2V0KCksIGZyYWdt
ZW50TGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgdmVydGV4RW50cnlQb2ludCwgZnJhZ21l
bnRFbnRyeVBvaW50LCBlcnJvclNjb3Blcyk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5Q
dHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhb
TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEi
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGlm
IHNoYWRlciBzb3VyY2UgaXMgaW4gV0hMU0wgb3IgTVNMLgotICAgIGNvbnN0IGF1dG8mIHZlcnRl
eFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZTsKLSAgICBjb25zdCBhdXRvJiBmcmFnbWVu
dFN0YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlOwotCi0gICAgaWYgKGZyYWdtZW50U3Rh
Z2UgJiYgc3RhdGljX2Nhc3Q8Ym9vbD4odmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgp
KSAhPSBzdGF0aWNfY2FzdDxib29sPihmcmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxl
KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhT
dGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7Ci0KLSAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1l
dGFsIHBpcGVsaW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIHN0
ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlw
dG9yOwotICAgIGlmIChpc1dobHNsKQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoIXRyeVNldFZlcnRleElucHV0
KGRlc2NyaXB0b3IudmVydGV4SW5wdXQsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3Jp
cHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICgh
dHJ5U2V0Q29sb3JTdGF0ZXMoZGVzY3JpcHRvci5jb2xvclN0YXRlcywgbXRsRGVzY3JpcHRvci5n
ZXQoKS5jb2xvckF0dGFjaG1lbnRzLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hs
c2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQo
KmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0
ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNj
b3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVM
YXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghdHJ5U2V0RnVuY3Rpb25zKHZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBk
ZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwot
fQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNyZWF0ZU10
bFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAg
ZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBtdGxEZXNjcmlwdG9y
ID0gY29udmVydFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZpY2UsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIW10bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKLSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVy
cm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5n
KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBwaXBlbGlu
ZTsKLX0KLQotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5
Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAg
ICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4g
ZGVwdGhTdGVuY2lsOwotCi0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUgJiYg
IShkZXB0aFN0ZW5jaWwgPSB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSgqZGVzY3JpcHRv
ci5kZXB0aFN0ZW5jaWxTdGF0ZSwgZGV2aWNlLCBlcnJvclNjb3BlcykpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4Mzg3IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGlzbid0
IGltcGxlbWVudGVkIHlldCBmb3IgV0hMU0wgY29tcGlsZXIuCi0KLSAgICBhdXRvIHBpcGVsaW5l
ID0gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIXBpcGVsaW5lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0
aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9n
eSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5sYXlvdXQs
IGRlc2NyaXB0b3IpKTsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5l
KFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0
cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9n
eSB0b3BvbG9neSwgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gZm9ybWF0LCBjb25zdCBS
ZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvckJhc2UmIHJlbmRlckRlc2NyaXB0b3JCYXNlKQotICAgIDogR1BVUGlwZWxpbmUo
KQotICAgICwgbV9kZXB0aFN0ZW5jaWxTdGF0ZShXVEZNb3ZlKGRlcHRoU3RlbmNpbCkpCi0gICAg
LCBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3By
aW1pdGl2ZVRvcG9sb2d5KHRvcG9sb2d5KQotICAgICwgbV9pbmRleEZvcm1hdChmb3JtYXQpCi0g
ICAgLCBtX2xheW91dChsYXlvdXQpCi0gICAgLCBtX3JlbmRlckRlc2NyaXB0b3JCYXNlKHJlbmRl
ckRlc2NyaXB0b3JCYXNlKQotewotfQotCi1HUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBp
cGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUo
Y29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYm
IHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4mJiBmcmFnbWVudFN0YWdlKQotewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKHZlcnRleFN0YWdl
KSwgV1RGTW92ZShmcmFnbWVudFN0YWdlKSwgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZSk7Ci0gICAg
YXV0byBlcnJvclNjb3BlcyA9IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoW10gKEdQVUVycm9yJiYp
IHsgfSk7Ci0gICAgaWYgKGF1dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGlu
ZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmOTczNTQ1YmRkNzhjNjhjZjI4MzA4
ZGJjNjAyZDAxNzZlMGRhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2Ft
cGxlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU2FtcGxlckRl
c2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTVRMU2FtcGxlckFkZHJlc3NNb2Rl
IG10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoR1BVQWRkcmVzc01vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZToK
LSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOwotICAgIGNh
c2UgR1BVQWRkcmVzc01vZGU6OlJlcGVhdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRy
ZXNzTW9kZVJlcGVhdDsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpNaXJyb3JSZXBlYXQ6Ci0g
ICAgICAgIHJldHVybiBNVExTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWluTWFn
RmlsdGVyIG10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQot
ewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoK
LSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OwotICAgIGNhc2Ug
R1BVRmlsdGVyTW9kZTo6TGluZWFyOgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pbk1hZ0Zp
bHRlckxpbmVhcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3Rh
dGljIE1UTFNhbXBsZXJNaXBGaWx0ZXIgbXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShHUFVGaWx0
ZXJNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVGaWx0ZXJN
b2RlOjpOZWFyZXN0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlck5lYXJlc3Q7
Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBNVExTYW1w
bGVyTWlwRmlsdGVyTGluZWFyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gdHJ5Q3JlYXRlTXRsU2FtcGxl
clN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVE
ZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0
cjxNVExTYW1wbGVyRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExTYW1wbGVy
RGVzY3JpcHRvciBuZXddKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBp
ZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRy
eUNyZWF0ZSgpOiBFcnJvciBjcmVhdGluZyBNVExTYW1wbGVyRGVzY3JpcHRvciEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0
ZT4gc2FtcGxlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttdGxE
ZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRl
c2NyaXB0b3IuYWRkcmVzc01vZGVVKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U0FkZHJlc3NN
b2RlOm10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVYp
XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JB
ZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVyldOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldE1pbkZpbHRlcjptdGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWlu
RmlsdGVyKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWFnRmlsdGVyOm10bE1pbk1hZ0ZpbHRl
ckZvckZpbHRlck1vZGUoZGVzY3JpcHRvci5tYWdGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRv
ciBzZXRNaXBGaWx0ZXI6bXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9yLm1pcG1h
cEZpbHRlcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1pbkNsYW1wOmRlc2NyaXB0b3Iu
bG9kTWluQ2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1heENsYW1wOmRlc2NyaXB0
b3IubG9kTWF4Q2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1heEFuaXNvdHJvcHk6ZGVz
Y3JpcHRvci5tYXhBbmlzb3Ryb3B5XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wYXJlRnVu
Y3Rpb246c3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5j
dGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlvbikpXTsK
LQotICAgIFttdGxEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6WUVTXTsKLQot
ICAgIHNhbXBsZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdTYW1wbGVy
U3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFzYW1wbGVyKQotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBsZXJTdGF0
ZSEiKTsKLQotICAgIHJldHVybiBzYW1wbGVyOwotfQotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BV
U2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1w
bGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSB0cnlDcmVh
dGVNdGxTYW1wbGVyU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yKTsKLSAgICBpZiAoIXNhbXBsZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVT
YW1wbGVyKFdURk1vdmUoc2FtcGxlcikpKTsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihS
ZXRhaW5QdHI8TVRMU2FtcGxlclN0YXRlPiYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2Ft
cGxlcihXVEZNb3ZlKHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFs
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY0NGMzNWIwYjAwOWQxZDlmNjEw
OTFhM2ZmYmY3ZmQ2M2I5MGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVT
aGFkZXJNb2R1bGVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChHUFVEZXZpY2U6
OnVzZVdITFNMKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShX
SExTTDo6Y3JlYXRlU2hhZGVyTW9kdWxlKGRlc2NyaXB0b3IuY29kZSkpKTsKLQotICAgIFBsYXRm
b3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgbW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtb2R1
bGUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJj
ZTpkZXNjcmlwdG9yLmNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFt
b2R1bGUpCi0gICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJyb3I6ICVz
IiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIG1vZHVsZSA/IGFkb3B0UmVmKG5l
dyBHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSkgOiBudWxscHRyOwotfQotCi1HUFVT
aGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRy
JiYgbW9kdWxlKQotICAgIDogbV9wbGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkp
Ci17Ci19Ci0KLUdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExT
TDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxlKQotICAgIDogbV93aGxzbE1vZHVsZSh3aGxz
bE1vZHVsZS5tb3ZlVG9VbmlxdWVQdHIoKSkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzZjYzg5MzUzMjBhMDQ5MmQyZmNkNTM0OTNhNjJhMDJjNDAxOWZjOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1w
b3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNp
bXBvcnQgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoR1BV
VGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgYXV0byBtdGxGb3JtYXQgPSBzdGF0aWNfY2Fz
dDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1h
dChmb3JtYXQpKTsKLQotICAgIHN3aXRjaCAobXRsRm9ybWF0KSB7Ci0gICAgY2FzZSBNVExQaXhl
bEZvcm1hdEJHUkE4VW5vcm06Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JH
QjoKLSAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBt
dGxGb3JtYXQ7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENo
YWluOjp0cnlDcmVhdGUoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc2V0
TGF5ZXJTaGFwZShXZWJHUFVMYXllciAqbGF5ZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsK
LSAgICBbbGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOwot
ICAgIFtsYXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8V2ViR1BVTGF5ZXI+IHRyeUNyZWF0ZVdlYkdQVUxheWVyKE1U
TERldmljZSAqZGV2aWNlLCBNVExQaXhlbEZvcm1hdCBmb3JtYXQsIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLXsKLQotICAgIFJldGFpblB0cjxXZWJHUFVMYXllcj4g
bGF5ZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFk
b3B0TlMoW1dlYkdQVUxheWVyIG5ld10pOwotCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWIgR1BV
IExheWVyIl07Ci0gICAgW2xheWVyIHNldE9wYXF1ZTowXTsKLQotICAgIFtsYXllciBzZXREZXZp
Y2U6ZGV2aWNlXTsKLSAgICBbbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5Oih1c2FnZSA9PSBHUFVU
ZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KV07Ci0gICAgW2xheWVyIHNldFBp
eGVsRm9ybWF0OmZvcm1hdF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
aWYgKCFsYXllcikKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRl
KCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOwotCi0gICAgcmV0dXJuIGxheWVy
OwotfQotCi1SZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZShjb25z
dCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCi17Ci0gICAgaWYgKCFkZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogSW52YWxpZCBH
UFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
cGl4ZWxGb3JtYXQgPSB0cnlHZXRTdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1h
dCk7Ci0gICAgaWYgKCFwaXhlbEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBhdXRvIHVzYWdlT3B0aW9ucyA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6
ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXVzYWdlT3B0aW9ucy5jb250YWlu
cyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogU3dhcCBjaGFpbiB1c2FnZSBt
dXN0IGluY2x1ZGUgT1VUUFVUX0FUVEFDSE1FTlQhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIGF1dG8gbGF5ZXIgPSB0cnlDcmVhdGVXZWJHUFVMYXllcihkZXNjcmlw
dG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSwgKnBpeGVsRm9ybWF0LCB1c2FnZU9wdGlvbnMp
OwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc2V0TGF5
ZXJTaGFwZShsYXllci5nZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhdXRvIHN3YXBDaGFp
biA9IGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShsYXllciksIHVzYWdlT3B0aW9u
cykpOwotICAgIGRlc2NyaXB0b3IuZGV2aWNlLT5zZXRTd2FwQ2hhaW4oc3dhcENoYWluLmNvcHlS
ZWYoKSk7Ci0gICAgcmV0dXJuIHN3YXBDaGFpbjsKLX0KLQotR1BVU3dhcENoYWluOjpHUFVTd2Fw
Q2hhaW4oUmV0YWluUHRyPFdlYkdQVUxheWVyPiYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRmb3JtU3dh
cExheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdlT3B0aW9u
cykKLXsKLSAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRTd2FwQ2hhaW46dGhpc107Ci19Ci0K
LVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkK
LXsKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAg
IG1fY3VycmVudERyYXdhYmxlID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVyIG5leHRE
cmF3YWJsZV0pOwotICAgIG10bFRleHR1cmUgPSBbbV9jdXJyZW50RHJhd2FibGUgdGV4dHVyZV07
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUo
KTogVW5hYmxlIHRvIGdldCBjdXJyZW50IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSht
dGxUZXh0dXJlKSwgbV91c2FnZSk7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkK
LXsKLSAgICBpZiAoIW1fY3VycmVudERyYXdhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBb
bV9jdXJyZW50RHJhd2FibGUgcHJlc2VudF07Ci0gICAgbV9jdXJyZW50RHJhd2FibGUgPSBudWxs
cHRyOwotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWln
aHQpCi17Ci0gICAgc2V0TGF5ZXJTaGFwZShtX3BsYXRmb3JtU3dhcExheWVyLmdldCgpLCB3aWR0
aCwgaGVpZ2h0KTsKLX0KLQotUGxhdGZvcm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsKLX0K
LQotI2lmIFVTRShNRVRBTCkKLVJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IEdQVVN3YXBDaGFp
bjo6dGFrZURyYXdhYmxlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiBwdHI7
Ci0gICAgcHRyLnN3YXAobV9jdXJyZW50RHJhd2FibGUpOwotICAgIHJldHVybiBwdHI7Ci19Ci0j
ZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkODIwMGViYjA1OTM0NTNjZGM4NWE2YzcwMjljNTMxYWE2YzBiZTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
R1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNl
LmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBNVExUZXh0dXJlVHlwZSBtdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9y
KGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHN3aXRjaCAo
ZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8x
ZDoKLSAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID09IDEpID8gTVRMVGV4
dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKLSAgICBjYXNlIEdQVVRleHR1cmVE
aW1lbnNpb246Ol8yZDogewotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoID09IDEp
Ci0gICAgICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkgPyBNVExU
ZXh0dXJlVHlwZTJEIDogTVRMVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlOwotICAgICAgICByZXR1
cm4gTVRMVGV4dHVyZVR5cGUyREFycmF5OyAvLyBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVB
cnJheSBpcyB1bmF2YWlsYWJsZSBvbiBpT1MuCi0gICAgfQotICAgIGNhc2UgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzNkOgotICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKLSAgICB9Ci19
Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdl
Rm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+
IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FC
TEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmIChm
bGFncy5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4dHVyZVVz
YWdlOjpGbGFnczo6U3RvcmFnZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJl
IGNhbm5vdCBoYXZlIGJvdGggU1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBNVExU
ZXh0dXJlVXNhZ2UgcmVzdWx0ID0gMDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExU
ZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BV
VGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2Ft
cGxlZCB9KSkKLSAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQ7Ci0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKQot
ICAgICAgICByZXN1bHQgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGU7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykKLXN0YXRpYyBNVExTdG9yYWdlTW9k
ZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxGb3JtYXQg
Zm9ybWF0LCB1bnNpZ25lZCBzYW1wbGVzKQotewotICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0
aFN0ZW5jaWwsIGFuZCBNdWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRo
IHRoZSBNVExTdG9yYWdlTW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgotICAgIGlmIChmb3Jt
YXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEp
Ci0gICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0KLSAgICByZXR1cm4gTVRM
U3RvcmFnZU1vZGVTaGFyZWQ7Ci19Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxNVExUZXh0
dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAgIFJldGFp
blB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFRl
eHR1cmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5h
YmxlIHRvIGNyZWF0ZSBuZXcgTVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2lkdGggPSBk
ZXNjcmlwdG9yLnNpemUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNp
Z25lZCBkZXB0aCA9IDE7Ci0gICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSAxOwotICAgIHN3aXRj
aCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246
Ol8xZDoKLSAgICAgICAgYXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAg
aGVpZ2h0ID0gZGVzY3JpcHRvci5zaXplLmhlaWdodDsKLSAgICAgICAgYXJyYXlMZW5ndGggPSBk
ZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0
OwotICAgICAgICBkZXB0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgYXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9y
bWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3Iu
Zm9ybWF0KSk7Ci0KLSAgICBhdXRvIG10bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4
dHVyZVVzYWdlRmxhZ3ModXNhZ2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgaWYgKCFtdGxVc2FnZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBz
dG9yYWdlTW9kZSA9IE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZTsKLSNlbHNlCi0gICAgYXV0byBzdG9y
YWdlTW9kZSA9IHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChwaXhlbEZv
cm1hdCwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0V2lkdGg6d2lkdGhdOwot
ICAgIFttdGxEZXNjcmlwdG9yIHNldEhlaWdodDpoZWlnaHRdOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldERlcHRoOmRlcHRoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRBcnJheUxlbmd0aDphcnJh
eUxlbmd0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWlwbWFwTGV2ZWxDb3VudDpkZXNjcmlw
dG9yLm1pcExldmVsQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFNhbXBsZUNvdW50OmRl
c2NyaXB0b3Iuc2FtcGxlQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBl
Om10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcildOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnBpeGVsRm9ybWF0XTsKLSAgICBbbXRsRGVz
Y3JpcHRvciBzZXRVc2FnZToqbXRsVXNhZ2VdOwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0U3Rv
cmFnZU1vZGU6c3RvcmFnZU1vZGVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgcmV0dXJuIG10bERlc2NyaXB0b3I7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVU
ZXh0dXJlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNy
ZWF0ZSgpIjsKLQotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIVtkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKSBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50
XSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmlu
ZygiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgIiwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCwgIiBz
YW1wbGUgY291bnQuIikpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGF1dG8g
dXNhZ2UgPSBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3Jp
cHRvci51c2FnZSk7Ci0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVy
ZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBkZXNjcmlwdG9yLCB1c2FnZSk7Ci0gICAgaWYgKCFt
dGxEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxN
VExUZXh0dXJlPiBtdGxUZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3
VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsVGV4dHVyZSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEdQVVRleHR1cmUoV1RGTW92ZShtdGxUZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQotUmVm
PEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4mJiB0
ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkp
OwotfQotCi1HUFVUZXh0dXJlOjpHUFVUZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJlPiYmIHRl
eHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAgICA6IG1f
cGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVzYWdlKQot
ewotICAgIG1fcGxhdGZvcm1Vc2FnZSA9IE1UTFJlc291cmNlVXNhZ2VSZWFkOwotICAgIGlmIChp
c1NhbXBsZWQoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNlVXNhZ2VT
YW1wbGU7Ci0gICAgZWxzZSBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2Fn
ZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVU
ZXh0dXJlOjp0cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQotewotICAgIFJldGFpblB0cjxN
VExUZXh0dXJlPiB0ZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICB0ZXh0dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdX
aXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghdGV4dHVyZSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4
dHVyZSksIG1fdXNhZ2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODMwODlmNGE0YzZiMjgzNGE5YWU2ZmFkNDA3NTcxNmFlNWRjNzA5Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVVV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsYXRmb3JtVGV4dHVyZUZvcm1h
dCBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3Jt
YXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJl
Rm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVu
b3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1aW50OgotICAgICAgICByZXR1
cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpC
Z3JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwotICAg
IGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJl
dHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICBjYXNlIEdQVVRl
eHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3Jt
YXRCR1JBOFVub3JtX3NSR0I7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9h
dDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBs
YXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5j
dGlvbiBmdW5jKQotewotICAgIHN3aXRjaCAoZnVuYykgewotICAgIGNhc2UgR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbk5ldmVyOwot
ICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOgotICAgICAgICByZXR1cm4gTVRMQ29t
cGFyZUZ1bmN0aW9uTGVzczsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw6Ci0g
ICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25FcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBh
cmVGdW5jdGlvbjo6TGVzc0VxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9u
TGVzc0VxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOgotICAgICAg
ICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVG
dW5jdGlvbjo6Tm90RXF1YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25Ob3RF
cXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOgotICAgICAg
ICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFsOwotICAgIGNhc2UgR1BVQ29t
cGFyZUZ1bmN0aW9uOjpBbHdheXM6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25B
bHdheXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQppbmRleCAzNjE2MDJlNTdiMjRmYjE2Y2Jl
MmE3YTk5ZjZlNWM4MGEzMzlmYWI3Li5jZThjN2Q0ODE3OTBhOGE2NWRlYjFmYWJiNWIwMTE1YTM2
MzdjODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0K
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJHZW9tZXRyeVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW1wb3J0ICJQYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5t
bQppbmRleCAxMjkzZGE1NTlmOTI5YTdhZWVjNTRkMDdhYTlhZTRmOTk0Zjk1YjQ0Li5mMDJjZThm
ZGYwZjBjNThmNDA3MGQ0YjRiNzgxZWRiNWYxZWMyMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNw
bGF5Q2FwdHVyZXJNYWMubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDZkMWJlNjEzYTEyOTRi
NWFmMjkxOGQ2MTY5MGZjYzdmZTIxZGI0MjIuLmNlNzY5Zjg1ZDYxYTk0YTQ4YTJkNzI4ZDcxMDA5
ZmMxOGZlOTA2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3RzKCk7CiAgICAgfQogI2VuZGlmCi0jaWYgRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
KyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgIGVsc2Ug
aWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJl
bmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRl
cmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJl
bmRlcmluZ0NvbnRleHQoKSkKQEAgLTI4ODUsNyArMjg4NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogICAg
IGlmICgoY2hhbmdlVHlwZSA9PSBNYXNrSW1hZ2VDaGFuZ2VkKSAmJiBtX21hc2tMYXllcikKICAg
ICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0
ZSgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FO
VkFTKQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBDYW52YXNDaGFuZ2VkIHx8IGNoYW5nZVR5cGUg
PT0gQ2FudmFzUGl4ZWxzQ2hhbmdlZCkgJiYgcmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZh
c0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRz
KSB7CiAgICAgICAgIGlmIChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQpCiAgICAgICAgICAg
ICBjb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0IGIv
U291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdAppbmRleCBh
ZTRlZTQ1N2EyMTMxMzM4ZjZhNWI3NWVkNzVmNjM2ZjNhMGY1MjYwLi4yMDI0ODNjNjVmMTA1ODU4
YWRhMmM5NmUwNjJhMjY0NmI1ODY2YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1
cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVhdHVy
ZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3QKQEAgLTIsOTUgKzIsOTAgQEAKIDwhRE9DVFlQ
RSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu
YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEu
MCI+CiA8ZGljdD4KLSAgICA8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5n
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAg
ICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0g
ICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVu
ZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9r
ZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1
ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAg
ICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAg
ICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
ICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGlj
dD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxz
ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV9wYXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19q
ZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3df
c2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8
L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgor
CQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJ
PGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5
PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxr
ZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCQk8a2V5PkF0dHJpYnV0
ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUv
PgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtl
eT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVy
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0
PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8
L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3Mv
V2ViS2l0LWlvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3Mu
cGxpc3QKaW5kZXggNjIxYzkyMTY2Yzg5MmNiNTQxY2ZhNzZiNjIzODE1NjY4YTFlYzI3Ny4uMTc0
NWEyZTk1NWI1NjE2MmZmNjRmYjZmYjZmYzNlNTIxOThkM2Q1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CkBAIC0yLDk1ICsyLDkwIEBACiA8IURPQ1RZ
UEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3
LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIx
LjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5n
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmlu
Zzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAg
PHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0g
ICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgot
ICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3Jl
bmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAg
ICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAg
ICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxz
ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAg
ICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGlj
dD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxz
ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV9wYXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5SQl9mdWxsX21hbmFnZV9XS19q
ZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3df
c2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8
L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgor
CQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJ
PGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5
PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxr
ZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRl
czwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+
CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5
PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxr
ZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0
cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+
CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KIDwv
ZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9X
ZWJLaXQtbWFjb3MucGxpc3QgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFj
b3MucGxpc3QKaW5kZXggNjIxYzkyMTY2Yzg5MmNiNTQxY2ZhNzZiNjIzODE1NjY4YTFlYzI3Ny4u
MTc0NWEyZTk1NWI1NjE2MmZmNjRmYjZmYjZmYzNlNTIxOThkM2Q1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdApAQCAtMiw5NSArMiw5MCBAQAog
PCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0
cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVy
c2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Nj
cm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19y
ZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxk
aWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0
cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNz
X2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nf
bWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0
PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVl
Lz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dl
YmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUv
PgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAg
ICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAg
ICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2Vi
R1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5h
Z2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292
ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRy
aWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0
cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJp
bmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9k
aWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0Pgor
CQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGlj
dD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJ
PHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+
CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGlj
dD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRf
cmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJ
PC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRz
YW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJl
RmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9X
ZWJLaXQtd2F0Y2hvcy5wbGlzdAppbmRleCBhZTRlZTQ1N2EyMTMxMzM4ZjZhNWI3NWVkNzVmNjM2
ZjNhMGY1MjYwLi4yMDI0ODNjNjVmMTA1ODU4YWRhMmM5NmUwNjJhMjY0NmI1ODY2YTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdApAQCAt
Miw5NSArMiw5MCBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0
ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVf
YW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9w
cm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9r
ZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4K
LSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8
a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxl
ZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9j
ZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPGZhbHNlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAg
IDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAg
IDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PkluQXBwQnJv
d3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVtZW50YWxfcGRm
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJYUjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KLSAg
ICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAg
ICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFz
eW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52
YXNfcmVuZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1
ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJv
Y2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwv
a2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJ
CTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVf
cHJvY2Vzc193ZWJydGM8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxm
YWxzZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNv
bXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFw
cEJyb3dzZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9k
ZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJ
PGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1
bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAppbmRleCAyYmE2
Mjg3M2YzMmIzMWMwMzY5YTFhNTE0ZmYxY2IwMzg5MjRlYjczLi43MDU3MjViMzE5N2I2YTNjN2E4
Y2QxZjdhOTJlMjA2OWQ5MWQxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKQEAgLTIzMiwxOSArMjMyLDYgQEAgYm9v
bCBkZWZhdWx0V2ViUlRDQ29kZWNzSW5HUFVQcm9jZXNzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxl
ZCgpCi17Ci0jaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKLSAgICByZXR1cm4gaXNGZWF0
dXJlRmxhZ0VuYWJsZWQoIldlYkdQVSIpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiBib29sIGRlZmF1bHRJbkFwcEJyb3dzZXJQ
cml2YWN5KCkKIHsKICNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAppbmRleCAzNWEy
ZjZmZGRkNzU1NDdlNjQ3OGFhMTY5ZmUwZmI5MjhjNGIxYTQ4Li5jZTdmNGZmZDY4N2IzYzUwOWI0
ZjgzZGIyMDM2ZTAxOTM5ODU5Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtODUsMTAgKzg1LDYgQEAgYm9vbCBkZWZh
dWx0Q2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0V2ViUlRD
Q29kZWNzSW5HUFVQcm9jZXNzKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1ib29s
IGRlZmF1bHRXZWJHUFVFbmFibGVkKCk7Ci0jZW5kaWYKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93
c2VyUHJpdmFjeSgpOwogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCmluZGV4IDdhZWUzYzViMGU0NTk1ZTliNmExZWQ2OTllMTNkODI1MzU1NmY5ZGEu
LmMyMWQ4MmJmMmFlMDhiZDQ1NDM1Mjk5MTk0MTE2MjgxOWE5MzZhNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaApAQCAtMjYxLDcgKzI2MSw2IEBACiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlvbnND
b21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRp
b25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlv
bnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRp
b25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKLSNkZWZpbmUgV2ViS2l0V2ViR1BV
RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgogI2RlZmluZSBXZWJL
aXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNYXNrV2ViR0xT
dHJpbmdzRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5h
YmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVk
IgogI2RlZmluZSBXZWJLaXRTZXJ2ZXJUaW1pbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktp
dFNlcnZlclRpbWluZ0VuYWJsZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBmZjczODg1YjE4NTRiY2U0ZGMzOTRlNzkxODkx
YWRjOTE0MGNmZDMwLi42ZGU0YWMxYzgwYzNkYWQzYTA5ZmRlNTdiYWM3NGZlNzk0NWVmNTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KQEAgLTMxNzAsMTYgKzMxNzAsNiBAQCAtICh2b2lkKXNldFdlYkdMMkVuYWJsZWQ6KEJPT0wp
ZW5hYmxlZAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2Vi
R0wyRW5hYmxlZFByZWZlcmVuY2VLZXldOwogfQogCi0tIChCT09MKXdlYkdQVUVuYWJsZWQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRXZWJHUFVFbmFibGVkUHJl
ZmVyZW5jZUtleV07Ci19Ci0KLS0gKHZvaWQpc2V0V2ViR1BVRW5hYmxlZDooQk9PTCllbmFibGVk
Ci17Ci0gICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJHUFVF
bmFibGVkUHJlZmVyZW5jZUtleV07Ci19Ci0KIC0gKEJPT0wpbWFza1dlYkdMU3RyaW5nc0VuYWJs
ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNYXNrV2ViR0xT
dHJpbmdzRW5hYmxlZFByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5k
ZXggYTU5Mjk3YWYzZmRhNTVjZjUzZDlkOTA4MWFiOTk3YzRmN2JlNTQ5Yy4uNTBjN2I4YjU3NjFi
NDdlYTRjZTJjMWY0YWQ3NmRhZGNmNmVjMzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
CkBAIC0zOSwxMCArMzksNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGJvb2wgaXNGZWF0dXJlRmxh
Z0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1i
b29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCk7Ci0jZW5kaWYKLQogI2lmIEhBVkUoSU5DUkVNRU5U
QUxfUERGX0FQSVMpCiBib29sIGRlZmF1bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbQppbmRleCAzNTJmZGM1ZTE4YWYyYzU4YjQyZmU0
ZTBlN2NmNjczNzFkNjhjZTZjLi40ZThhNTg5Mzg5YjNhZjA2MWNiODQxM2ExYWI1MjA4YjBkNGIz
NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbQpAQCAtNjIsMTkgKzYyLDYgQEAgYm9v
bCBpc0ZlYXR1cmVGbGFnRW5hYmxlZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogCiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKQot
ewotI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVhdHVyZUZs
YWdFbmFibGVkKCJXZWJHUFUiKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMp
CiAKIGJvb2wgZGVmYXVsdEluY3JlbWVudGFsUERGRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRl
eCA1MDc5NzUxNDg4ZTU1MWNmY2IyYjk0YjliNTgwM2Y2ZjNlOThjNzlmLi41YjI3MWYwOWEzMzU5
M2EzZjU3ODFhYTBlYmI3ZWRmMmRjYzBmZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTMzNSw3ICsz
MzUsNiBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJ
bnRlcm5hbE5vdGlmaWNhdGlvbiBXRUJLSVRfREVQUgogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgd2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkOwogQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgd2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkOwogQHBy
b3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViR0wyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHdlYkdQVUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBtYXNr
V2ViR0xTdHJpbmdzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2Vzc2li
aWxpdHlPYmplY3RNb2RlbEVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzZXJ2
ZXJUaW1pbmdFbmFibGVkOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2MGQ5NWVmMDI3MjBiMWM4NTI1NjE2OTQ5MzBiMThi
MjU1NzA3ZGQuLjIwNmFkM2VhNTExMzQ2MWQ5OWJlNTllOTBjOTI5NTk2ZjM2NWY0MjYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MjkgQEAKKzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFu
ZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgKiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1j
b250ZXh0LXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMv
cmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdw
dS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZXF1
ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3Zl
LXdlYmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hh
cmVkVmVydGV4RnJhZ21lbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdw
dS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZmFzdC9k
b20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiB3ZWJncHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9iaW5kLWdyb3Vwcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJp
cC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10
by10ZXh0dXJlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQt
Y29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L2JsaXQtY29tbWFuZHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYnVmZmVy
LWNvbW1hbmQtYnVmZmVyLXJhY2VzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvYnVmZmVyLWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9j
b2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFu
Z2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2RyYXctaW5kZXhlZC10
cmlhbmdsZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZHJhdy1p
bmRleGVkLXRyaWFuZ2xlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9lcnJvci1z
Y29wZXMtdGVzdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Vycm9y
LXNjb3Blcy10ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2V4cGFuZG8tcHJv
cGVydGllcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2V4cGFuZG8t
cHJvcGVydGllcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9yZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZzogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS91bmNhcHR1cmVkLWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFu
Z2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3ZpZXdw
b3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6bGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6bGUuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRp
b25zLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FyYml0
cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10
ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5
LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2FycmF5LW9vYi1hbGlhcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9hcnJheS1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9iYWQtYWRkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvYmFkLWFkZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
YWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9iYWQtbGl0ZXJhbHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYml0
d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9ib29sLW1hdHJpeC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
b29scy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Jvb2xz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC1l
eHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItZnJh
Z21lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0
aC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1s
ZW5ndGguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRl
eC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXIt
dmVydGV4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVj
dG9ycy0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVp
bHRpbi12ZWN0b3JzLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVp
bHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvYnVpbHRpbi12ZWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2Nhc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2Fz
dHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQt
c2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2Yt
cmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9jb21tZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvY29tcHV0ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2NvbXB1dGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
Y29weS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvcHku
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJp
bmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJlZmVy
ZW5jZS1vcmRlcmluZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJl
ZmVyZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUt
Y2hlY2suaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Bl
ci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9kZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNv
bnRpbnVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hp
bGUtbG9vcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb250LWNyYXNo
LXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9kb3VibGUtbm90Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90LXByb2R1Y2UtZHVwbGljYXRlLWN0
b3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGlj
YXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGljYXRlcy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2lu
dGVyLXVzYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1s
aWZldGltZS0zLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtcy0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bXMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9lbnVtcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2VudW1zLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VxdWFs
aXR5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZXF1YWxp
dHkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGguaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRl
ci10eXBlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9odWdlLWFycmF5
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5jcmVtZW50
LWRlY3JlbWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1l
bnQtc2V0dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
aW5jcmVtZW50LXNldHRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9p
bmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvanMvdGVzdC1oYXJuZXNzLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9sZXhpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9sZXhpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvbGl0ZXJhbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9saXRlcmFscy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb2dpY2Fs
LW5lZ2F0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
bG9naWNhbC1uZWdhdGlvbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9s
b29wcy1icmVhay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sb29wcy1icmVhay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29w
cy1jb250aW51ZS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sb29wcy1jb250aW51ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9s
b29wcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29w
cy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvbG9vcHMtc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sb29wcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb3RzLW9mLWxv
Y2FsLXZhcmlhYmxlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9sdmFsdWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21h
a2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNw
ZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LTIt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtMi5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdu
bWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFy
ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1j
b21wYXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2Fs
YXJzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1
Y3RvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFz
c2lnbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJp
eC1pbmRleC1hc3NpZ24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0
cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9udWxsLWFyZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1w
cm9wZXJ0eS1hY2Nlc3MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVs
bC1hcnJheS1yZWYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFj
Y2Vzcy0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29i
LWFjY2Vzcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1hY2Nl
c3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vb2ItYWNj
ZXNzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRp
di5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1l
cXVhbC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJh
dG9yLWVxdWFsLWVxdWFsLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvb3BlcmF0b3ItbWludXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
b3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9vcGVyYXRvci1wbHVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvb3BlcmF0b3ItdGltZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rv
ci1sb2FkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
eHkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRp
b24tb3JkZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9w
cm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGln
aC16b21iaWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlYWQtbW9k
aWZ5LXdyaXRlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlY3Vyc2l2
ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
cmVjdXJzaXZlLXN0cnVjdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
cmV0dXJuLWxvY2FsLXZhcmlhYmxlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTEwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTEwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTExLWV4cGVjdGVkLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTExLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTEzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTE2LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE3Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4LWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTE5LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTIxLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjEuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0yMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTIzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTI1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtNC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0
dGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0
cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtd2hpbGUtbG9v
cC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS13
aGlsZS1sb29wLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NtYWxsZXIt
dGhhbi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0z
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3Vw
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJp
bmQtZ3JvdXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUtbnVs
bC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0b3JlLW51
bGwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVy
dHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1m
aWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3N3aXRjaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3N3aXRjaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90
ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNh
bXBsZS1iaWFzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXktZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwt
YXJyYXkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRj
aC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R5cGUtbWlz
bWF0Y2guaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdWludC1iaXR3aXNl
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdWludC1iaXR3
aXNlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQt
dmFyaWFibGUtMi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3VzZS11bmRlZmluZWQtdmFyaWFibGUtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmctZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3Jz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNv
bnN0cnVjdG9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3It
bWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRl
ci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZvaWQtdmFy
aWFibGUtcGFyYW1ldGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3do
aWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvd2hsc2wtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0yLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFs
dWVzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8t
aW5pdGlhbGl6ZS12YWx1ZXMuaHRtbDogUmVtb3ZlZC4KKwogMjAyMS0wNy0yOCAgQXl1bWkgS29q
aW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlQYWQgXSBwbGF0Zm9y
bS9pcGFkL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9tZWRpYS1kb2N1bWVudHMvbWVkaWEt
ZG9jdW1lbnQtYXVkaW8taW9zLXNpemluZy5odG1sIGlzIGEgZmxha3kgdGltZW91dC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGQ5NzZlYjgyOGFlYzQ1NjIyZWM2MDM2YzBlODdmZjVkMWUxODc0Mjku
LjgwYWI4ZmY3NzkzOGYzMzAwMTAxNjE0YmNlOGE4ZjQ3YzgyMTczNDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMzM0Niw4ICszMzQ2LDYgQEAgZmFzdC9kb20vbGlua2lmeS1waG9uZS1udW1iZXJz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5OTAzOSBlZGl0aW5n
L2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS1wYXJhZ3JhcGgtMDAzLmh0bWwgWyBTa2lwIF0KIAotd2Vi
a2l0Lm9yZy9iLzE5OTAyOCB3ZWJncHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbCBbIFNs
b3cgXQotCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L29m
ZnNldFRvcExlZnQtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUZXN0IGlz
IGZhaWxpbmcgYW5kIGlzIHByaW50aW5nIGRpZmZlcmVudCB2YWx1ZXMgd2hlbiBpdCBmYWlscy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGExYTIyYzNiNTJlYjg3MTRkYjk2ZGJiOGRk
YTNjZTQ1ZWIyYjZjZTUuLjU5YTY1MTNhNWFhODNhY2E5Y2RkZjg3NzU1NTVkNmNiZGNiM2U0ZDUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNiBAQCBuYXZpZ2F0b3Iu
Y29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1u
YXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdh
dG9yLmxhbmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCkBAIC0zOSw3ICsz
OCw2IEBAIG5hdmlnYXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQg
aXMgT0sKIG5hdmlnYXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VV
cGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxl
ZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZXMg
aXMgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNv
bnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMv
Y3JlYXRlLWNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjE5MjAyZGQ1YzI4MWNiZjBiMGNlNjcwOGMxMGM3NTMyNWZiMTllNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwyMSArMCwwIEBACi1UZXN0IHRoYXQgQ2FudmFzTWFuYWdlciB0cmFja3MgY3Jl
YXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBjYW52YXNlcy4KLQotCi09PSBSdW5uaW5n
IHRlc3Qgc3VpdGU6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuTm9DYW52YXNlcwotUEFTUzogQ2FudmFz
TWFuYWdlciBzaG91bGQgaGF2ZSBubyBjYW52YXNlcy4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkRldmljZQotUEFTUzogQ2FudmFzIGNvbnRleHQg
c2hvdWxkIGJlIFdlYiBHUFUuCi0KLVBBU1M6IFJlbW92ZWQgY2FudmFzIGhhcyBleHBlY3RlZCBJ
RC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNh
bnZhcy5BdHRhY2hlZAotUEFTUzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0
ZWQgZm9yIGF0dGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BV
RGV2aWNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJH
UFUuQ2FudmFzLkRldGFjaGVkCi1QQVNTOiBJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUg
Y3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRob3V0IGNvbm5lY3RlZCBX
ZWJHUFVEZXZpY2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4
dFdlYkdQVS5DYW52YXMuQ1NTCi1QQVNTOiBJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUg
Y3JlYXRlZCBmb3IgQ1NTIEdQVUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BV
RGV2aWNlLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0
ZS1jb250ZXh0LXdlYmdwdS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVh
dGUtY29udGV4dC13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE0
MGYxMThkMDg4NmNiNzU4MDJmYTE1NDBjYTVmODU3NmFjNmEwMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvY3JlYXRlLWNvbnRleHQtdXRpbGl0aWVzLmNzcyI+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWNvbnRleHQtdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1
bmN0aW9uIGNyZWF0ZURldmljZSgpIHsKLSAgICBmdW5jdGlvbiByZWNlaXZlZERldmljZShkZXZp
Y2UpIHsKLSAgICAgICAgd2luZG93LmNvbnRleHRzLnB1c2goZGV2aWNlKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiByZWNlaXZlZEFkYXB0ZXIoYWRhcHRlcikgewotICAgICAgICBhZGFwdGVyLnJl
cXVlc3REZXZpY2UoKS50aGVuKHJlY2VpdmVkRGV2aWNlKTsKLSAgICB9Ci0KLSAgICBuYXZpZ2F0
b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkudGhlbihyZWNlaXZlZEFkYXB0ZXIpOwotfQotCi1mdW5j
dGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuQ3JlYXRlQ29udGV4
dFV0aWxpdGllcy5pbml0aWFsaXplVGVzdFN1aXRlKCJDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQ
VSIpOwotCi0gICAgSW5zcGVjdG9yVGVzdC5DcmVhdGVDb250ZXh0VXRpbGl0aWVzLmFkZFNpbXBs
ZVRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkRldmljZSIsCi0gICAgICAgIGV4cHJlc3Npb246
IGBjcmVhdGVEZXZpY2UoKWAsCi0gICAgICAgIGNvbnRleHRUeXBlOiBXSS5DYW52YXMuQ29udGV4
dFR5cGUuV2ViR1BVLAotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAg
ICBuYW1lOiAiQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkF0dGFjaGVkIiwKLSAg
ICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBhdHRhY2hlZCBHUFVDYW52YXNDb250ZXh0
IGFyZW4ndCB0cmFja2VkIGFzIGEgY2FudmFzLCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2Uu
IiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFs
c2U7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0Nv
bGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwg
KGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQu
ZGF0YS5pdGVtLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsK
LSAgICAgICAgICAgICAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVBdHRhY2hl
ZENhbnZhcygiZ3B1IilgKQotCi0gICAgICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0Nv
bGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRl
ZCwgbGlzdGVuZXIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNy
ZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgYXR0YWNo
ZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRob3V0IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0g
ICAgICAgIH0sCi0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5h
bWU6ICJDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuRGV0YWNoZWQiLAotICAgICAg
ICBkZXNjcmlwdGlvbjogIkVuc3VyZSB0aGF0IGRldGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgYXJl
bid0IHRyYWNrZWQgYXMgYSBjYW52YXMsIGluc3RlYWQgb2YgdGhlIFdlYkdQVURldmljZS4iLAot
ICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSBmYWxzZTsK
LSAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVj
dGlvbi5hZGRFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC5kYXRh
Lml0ZW0uY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUpOwotICAg
ICAgICAgICAgICAgIGNyZWF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZURldGFjaGVkQ2Fu
dmFzKCJncHUiKWApCi0KLSAgICAgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVj
dGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCBs
aXN0ZW5lcik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoY3JlYXRl
ZCwgIkluc3BlY3RvciBjYW52YXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZvciBkZXRhY2hlZCBH
UFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4iKTsKLSAgICAg
ICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkNhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5DU1MiLAotICAgICAgICBkZXNjcmlw
dGlvbjogIkVuc3VyZSB0aGF0IENTUyBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFz
IGEgY2FudmFzLCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMg
dGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRM
aXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRU
eXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBj
cmVhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDU1NDYW52YXMoImdwdSIsICJjc3MtY2Fu
dmFzIilgKQotCi0gICAgICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVu
ZXIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJ
bnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgQ1NTIEdQVUNhbnZhc0Nv
bnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLiIpOwotICAgICAgICB9LAotICAg
IH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0IHRoYXQgQ2Fu
dmFzTWFuYWdlciB0cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBjYW52
YXNlcy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFiZTczYzYzMTU4NTJkMDRj
OWVjYTkzMDU2N2ZiZDdkZTJhNzJlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnRO
b2Rlcy13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi16
Ci1UZXN0IHRoYXQgQ2FudmFzQWdlbnQgdHJhY2tzIGNoYW5nZXMgaW4gdGhlIGNsaWVudCBub2Rl
cyBvZiBhIFdlYkdQVSBkZXZpY2UuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMu
cmVxdWVzdENsaWVudE5vZGVzLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5y
ZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BVLkNyZWF0ZQotUEFTUzogVGhlcmUgc2hvdWxkIGJlIG9u
ZSBjbGllbnQgbm9kZS4KLVBBU1M6IENsaWVudCBub2RlICJjYW52YXMiIGlzIHZhbGlkLgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rl
cy13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVu
dE5vZGVzLXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWIzM2Zl
M2Y5ZDNhMTBlZTVjNGMxNTY4YTgzZGExNDE2MDg4ZjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVx
dWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBA
QAotejwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxlZCh0cnVlKTsKLQotYXN5bmMgZnVuY3Rpb24gY3JlYXRl
Q2xpZW50KCkgewotICAgIGxldCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0
QWRhcHRlcigpOwotICAgIGxldCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2Uo
KTsKLQotICAgIGxldCBjb250ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiku
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oe2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy5yZXF1ZXN0
Q2xpZW50Tm9kZXMuV2ViR1BVIik7Ci0KLSAgICBmdW5jdGlvbiBsb2dDbGllbnROb2RlcyhjbGll
bnROb2RlcykgewotICAgICAgICBmb3IgKGxldCBjbGllbnROb2RlIG9mIGNsaWVudE5vZGVzKSB7
Ci0gICAgICAgICAgICBpZiAoY2xpZW50Tm9kZSkKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoYENsaWVudCBub2RlICIke2NsaWVudE5vZGUuYXBwcm9wcmlhdGVTZWxlY3RvckZv
cigpfSIgaXMgdmFsaWQuYCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5mYWlsKCJJbnZhbGlkIGNsaWVudCBub2RlLiIpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnJlcXVl
c3RDbGllbnROb2Rlcy5XZWJHUFUuQ3JlYXRlIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVj
ayB0aGF0IGNyZWF0aW5nIGEgV2ViR1BVIGRldmljZSBjbGllbnQgbm9kZSBpcyB0cmFja2VkIGNv
cnJlY3RseS4iLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAg
V0kuQ2FudmFzLmF3YWl0RXZlbnQoV0kuQ2FudmFzLkV2ZW50LkNsaWVudE5vZGVzQ2hhbmdlZCkK
LSAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldC5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnJlcXVlc3RDbGll
bnROb2RlcygoY2xpZW50Tm9kZXMpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChjbGllbnROb2Rlcy5sZW5ndGgsIDEsICJUaGVyZSBzaG91bGQgYmUg
b25lIGNsaWVudCBub2RlLiIpOwotICAgICAgICAgICAgICAgICAgICBsb2dDbGllbnROb2Rlcyhj
bGllbnROb2Rlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGBjcmVhdGVDbGllbnQoKWApLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0
IENhbnZhc0FnZW50IHRyYWNrcyBjaGFuZ2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2YgYSBXZWJH
UFUgZGV2aWNlLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdw
dS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYTBlNGYxZjA1
NTkzNDhjODgzYjQxOWNmNzU0ZTFjYmVhYTVkYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0
U2hhZGVyU291cmNlLXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NiAr
MCwwIEBACi1XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlIGNvbW1h
bmQuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJj
ZS5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJj
ZS5XZWJHUFUuUHJvZ3JhbS5jb21wdXRlLlNoYWRlci5jb21wdXRlCi0KLVtudW10aHJlYWRzKDIs
IDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVy
IDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7
Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCld
ICogMi4wOwotfQotCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRl
clNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5jb21wdXRlLlNoYWRlci5mcmFnbWVudAotUEFTUzogU2hv
dWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE1pc3Npbmcgc2hhZGVyIG9mIGdpdmVu
IHNoYWRlclR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTog
Q2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uY29tcHV0ZS5TaGFkZXIu
dmVydGV4Ci1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTWlzc2lu
ZyBzaGFkZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3Jh
bS5yZW5kZXIuU2hhZGVyLmNvbXB1dGUKLVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlv
bi4KLUVycm9yOiBNaXNzaW5nIHNoYWRlciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBw
cm9ncmFtSWQKLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291
cmNlLldlYkdQVS5Qcm9ncmFtLnJlbmRlci5TaGFkZXIuZnJhZ21lbnQKLQotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDog
YXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3Jh
bS5yZW5kZXIuU2hhZGVyLnZlcnRleAotCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1Zf
UG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAw
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmJlNjBlZDFhMmI5ZTBjOWQwOTU5YTFjZjhh
NjAwNDNkMmQ2OGU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJn
cHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy13ZWJncHUuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVBc3luY1N1aXRlKCJDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUiKTsKLQotICAg
IGZvciAobGV0IHByb2dyYW1UeXBlIG9mIE9iamVjdC52YWx1ZXMoV0kuU2hhZGVyUHJvZ3JhbS5Q
cm9ncmFtVHlwZSkpIHsKLSAgICAgICAgZm9yIChsZXQgc2hhZGVyVHlwZSBvZiBPYmplY3QudmFs
dWVzKFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZSkpIHsKLSAgICAgICAgICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKLSAgICAgICAgICAgICAgICBuYW1lOiBgQ2FudmFzLnJlcXVlc3RTaGFkZXJT
b3VyY2UuV2ViR1BVLlByb2dyYW0uJHtwcm9ncmFtVHlwZX0uU2hhZGVyLiR7c2hhZGVyVHlwZX1g
LAotICAgICAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxl
dCBzaGFkZXJQcm9ncmFtID0gSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JU
eXBlKHByb2dyYW1UeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFt
KQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0i
OwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBsb2dTaGFkZXIgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsZXQge3NvdXJjZX0gPSBhd2FpdCBDYW52YXNBZ2VudC5y
ZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhzb3VyY2UpOwotICAg
ICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBpc0NvbXB1dGVQ
cm9ncmFtID0gcHJvZ3JhbVR5cGUgPT09IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29t
cHV0ZTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGlzQ29tcHV0ZVNoYWRlciA9IHNoYWRlclR5
cGUgPT09IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNDb21wdXRlUHJvZ3JhbSAhPT0gaXNDb21wdXRlU2hhZGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24obG9n
U2hhZGVyKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgYXdhaXQgbG9nU2hhZGVyKCkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwot
fQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImxvYWQoKSI+Ci08cD5XZWJHUFUg
dGVzdHMgZm9yIENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlIGNvbW1hbmQuPC9wPgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNv
bHZlQ29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nh
bnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNjE2OTIyMTJhOGYzZDc3ZGRkYzVkMGM2MTU1YzkzOGJkODkwZWJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNv
bnRleHQgY29tbWFuZCBmb3IgV2ViR1BVIGRldmljZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1
aXRlOiBDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBD
YW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUudmFsaWRJZGVudGlmaWVyCi1QQVNTOiBQYXlsb2Fk
IHNob3VsZCBoYXZlIHR5cGUgIm9iamVjdCIuCi1QQVNTOiBQYXlsb2FkIHNob3VsZCBoYXZlIGNs
YXNzTmFtZSAiR1BVRGV2aWNlIi4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU5MjViMjcxNjQ4ZjQ0NGMyM2M5ZDJhODVjYjg1MjA2MjRjYjYyNTcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQ5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxlZCh0cnVlKTsKLQotZnVuY3Rpb24g
Y3JlYXRlRGV2aWNlKCkgewotICAgIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKS50aGVu
KGZ1bmN0aW9uIGFkYXB0ZXJSZXF1ZXN0ZWQoYWRhcHRlcikgewotICAgICAgICBhZGFwdGVyLnJl
cXVlc3REZXZpY2UoKS50aGVuKGZ1bmN0aW9uIGRldmljZVJlcXVlc3RlZChkZXZpY2UpIHsKLSAg
ICAgICAgICAgIHdpbmRvdy5jb250ZXh0V2ViR1BVID0gZGV2aWNlOwotICAgICAgICB9KTsKLSAg
ICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUiKTsKLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogYENhbnZhcy5yZXNvbHZlQ29u
dGV4dFdlYkdQVS52YWxpZElkZW50aWZpZXJgLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3Vs
ZCByZXR1cm4gYSB2YWxpZCBvYmplY3QgZm9yIHRoZSBnaXZlbiBjYW52YXMgaWRlbnRpZmllci4i
LAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoIVdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5zaXplLCAiVGhlcmUgc2hvdWxk
IGJlIG5vIGNhbnZhc2VzLiIpOwotCi0gICAgICAgICAgICBsZXQgW2NhbnZhc0NvbGxlY3Rpb25J
dGVtQWRkZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgV0ku
Y2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmF3YWl0RXZlbnQoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtQWRkZWQpLAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGNyZWF0ZURldmljZSgpYCksCi0gICAgICAgICAgICBdKTsKLQotICAgICAgICAgICAg
bGV0IGNhbnZhcyA9IGNhbnZhc0NvbGxlY3Rpb25JdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMuY29udGV4dFR5cGUsIFdJLkNh
bnZhcy5Db250ZXh0VHlwZS5XZWJHUFUsICJBZGRlZCBjYW52YXMgc2hvdWxkIGJlIGEgV2ViR1BV
IGRldmljZS4iKTsKLQotICAgICAgICAgICAgY29uc3Qgb2JqZWN0R3JvdXAgPSAidGVzdCI7Ci0g
ICAgICAgICAgICBsZXQge29iamVjdH0gPSBhd2FpdCBDYW52YXNBZ2VudC5yZXNvbHZlQ29udGV4
dChjYW52YXMuaWRlbnRpZmllciwgb2JqZWN0R3JvdXApCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKG9iamVjdC50eXBlLCAib2JqZWN0IiwgYFBheWxvYWQgc2hvdWxkIGhh
dmUgdHlwZSAib2JqZWN0Ii5gKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwob2JqZWN0LmNsYXNzTmFtZSwgIkdQVURldmljZSIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIGNs
YXNzTmFtZSAiR1BVRGV2aWNlIi5gKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0cyBmb3IgdGhlIENhbnZhcy5yZXNvbHZlQ29u
dGV4dCBjb21tYW5kIGZvciBXZWJHUFUgZGV2aWNlcy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRk
LXJlbW92ZS13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4ZDFmYmFmYmZlMzRlNjhjOTRkOTg3NTNjYTAyNGQ1NWM0
ZmU4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotQ09OU09MRSBNRVNT
QUdFOiBHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBpbGUgZXJy
b3I6IENhbm5vdCBsZXg6IENhbm5vdCBjb25zdW1lIHRva2VuCi1DT05TT0xFIE1FU1NBR0U6IEdQ
VURldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5u
b3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2Uu
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBpbGUgZXJyb3I6IENhbm5vdCBsZXg6
IENhbm5vdCBjb25zdW1lIHRva2VuCi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3Qg
Y29uc3VtZSB0b2tlbgotVGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFu
ZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgc2hhZGVyIHByb2dyYW1zLgotCi0KLT09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkV4aXN0aW5nCi1QQVNTOiBBZGRlZCAi
Y29tcHV0ZSIgU2hhZGVyUHJvZ3JhbS4KLVBBU1M6IEFkZGVkICJyZW5kZXIiIFNoYWRlclByb2dy
YW0uCi1QQVNTOiBUaGVyZSBzaG91bGQgYmUgdHdvIFNoYWRlclByb2dyYW0uCi0KLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuQ29tcHV0ZS5W
YWxpZAotUEFTUzogQWRkZWQgImNvbXB1dGUiIFNoYWRlclByb2dyYW0uCi0KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuQ29tcHV0ZS5JbnZh
bGlkCi1QQVNTOiBTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFs
aWQgZGVzY3JpcHRvci4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5BZGRlZC5SZW5kZXIuVmFsaWQKLVBBU1M6IEFkZGVkICJyZW5kZXIiIFNoYWRl
clByb2dyYW0uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5X
ZWJHUFUuQWRkZWQuUmVuZGVyLkludmFsaWQKLVBBU1M6IFNob3VsZCBub3QgY3JlYXRlIGEgU2hh
ZGVyUHJvZ3JhbSBmb3IgYW4gaW52YWxpZCBkZXNjcmlwdG9yLgotCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLlBhcmVudERldmljZVJlbW92ZWQKLVBB
U1M6IFJlbW92ZWQgU2hhZGVyUHJvZ3JhbSBiZWZvcmUgQ2FudmFzLgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJn
cHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQt
cmVtb3ZlLXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWZiODc3
MmMwYjM3NWM0MGQ1ZDdhMGU0MjAyYTU0ZmY1ZDUyZDBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hh
ZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy13
ZWJncHUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXdpbmRvdy5iZWZvcmVUZXN0ID0gYXN5bmMg
ZnVuY3Rpb24oKSB7Ci0gICAgYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICBjcmVhdGVDb21w
dXRlUGlwZWxpbmUoIklOVkFMSUQiKSwKLSAgICAgICAgY3JlYXRlUmVuZGVyUGlwZWxpbmUoIklO
VkFMSUQiKSwKLSAgICBdKTsKLX07Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKGBDYW52YXMuU2hhZGVyUHJvZ3JhbS5X
ZWJHUFVgKTsKLQotICAgIGxldCBjYW52YXNlcyA9IEFycmF5LmZyb20oV0kuY2FudmFzTWFuYWdl
ci5jYW52YXNDb2xsZWN0aW9uKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXNlcy5s
ZW5ndGggPT09IDEsICJUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgY2FudmFzLiIpOwotCi0gICAg
bGV0IGNhbnZhcyA9IGNhbnZhc2VzWzBdOwotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZh
cywgIlRoZXJlIHNob3VsZCBiZSBhIGNhbnZhcy4iKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChjYW52YXMuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUsICJD
YW52YXMgc2hvdWxkIGJlIFdlYkdQVS4iKTsKLQotICAgIGFzeW5jIGZ1bmN0aW9uIGF3YWl0UHJv
Z3JhbUFkZGVkKHByb2dyYW1UeXBlKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXJJdGVtQWRkZWQgPSBj
YW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0
aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHBy
b2dyYW0gPSBldmVudC5kYXRhLml0ZW07Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyYW0ucHJv
Z3JhbVR5cGUgIT09IHByb2dyYW1UeXBlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocHJvZ3JhbSBpbnN0YW5j
ZW9mIFdJLlNoYWRlclByb2dyYW0sIGBBZGRlZCAiJHtwcm9ncmFtVHlwZX0iIFNoYWRlclByb2dy
YW0uYCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQocHJvZ3JhbS5jYW52
YXMgPT09IGNhbnZhcywgIlNoYWRlclByb2dyYW0gc2hvdWxkIGJlIGZvciB0aGUga25vd24gQ2Fu
dmFzLiIpOwotCi0gICAgICAgICAgICAgICAgcmVzb2x2ZShwcm9ncmFtKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAg
ICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuRXhpc3RpbmciLAotICAgICAg
ICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgU2hhZGVyUHJvZ3JhbUFkZGVkIGlzIHNlbnQgZm9y
IGEgcHJvZ3JhbSBjcmVhdGVkIGJlZm9yZSBDYW52YXNBZ2VudCBpcyBlbmFibGVkLiIsCi0gICAg
ICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBhc3luYyBmdW5jdGlvbiBjaGVja0V4aXN0
cyhwcm9ncmFtVHlwZSkgewotICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JUZXN0LlNoYWRl
clByb2dyYW0ucHJvZ3JhbUZvclR5cGUocHJvZ3JhbVR5cGUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWRkZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9n
cmFtLmApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRQcm9ncmFtQWRkZWQocHJvZ3JhbVR5cGUpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAg
ICAgICAgICAgY2hlY2tFeGlzdHMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRl
KSwKLSAgICAgICAgICAgICAgICBjaGVja0V4aXN0cyhXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1U
eXBlLlJlbmRlciksCi0gICAgICAgICAgICBdKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uc2l6ZSwgMiwgIlRo
ZXJlIHNob3VsZCBiZSB0d28gU2hhZGVyUHJvZ3JhbS4iKTsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRlclBy
b2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuVmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5
bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAg
ICAgICBhd2FpdFByb2dyYW1BZGRlZChXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1
dGUpLAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0
ZUNvbXB1dGVQaXBlbGluZSgpYCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuSW52YWxpZCIsCi0gICAgICAgIGRlc2NyaXB0
aW9uOiAiQ2hlY2sgdGhhdCBhZGRlZC9yZW1vdmVkIGV2ZW50cyBhcmUgc2VudC4iLAotICAgICAg
ICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW1BZGRlZCA9IGZh
bHNlOwotCi0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNv
bGxlY3Rpb24uc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVt
QWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIHNoYWRlclByb2dyYW1BZGRlZCA9
IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCJJTlZBTElEIilgKTsKLQot
ICAgICAgICAgICAgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uoc2hhZGVyUHJvZ3JhbUFkZGVkLCAiU2hvdWxk
IG5vdCBjcmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuIik7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAg
bmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5SZW5kZXIuVmFsaWQiLAot
ICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJl
IHNlbnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGF3YWl0IFByb21p
c2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhd2FpdFByb2dyYW1BZGRlZChXSS5TaGFkZXJQcm9n
cmFtLlByb2dyYW1UeXBlLlJlbmRlciksCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgY3JlYXRlUmVuZGVyUGlwZWxpbmUoKWApLAotICAgICAgICAgICAgXSk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAg
bmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5SZW5kZXIuSW52YWxpZCIs
Ci0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBhZGRlZC9yZW1vdmVkIGV2ZW50cyBh
cmUgc2VudC4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHNoYWRl
clByb2dyYW1BZGRlZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBjYW52
YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29s
bGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIHNo
YWRlclByb2dyYW1BZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAg
YXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlUmVuZGVyUGlwZWxpbmUo
IklOVkFMSUQiKWApOwotCi0gICAgICAgICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rp
b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlz
dGVuZXIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShzaGFkZXJQcm9n
cmFtQWRkZWQsICJTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFs
aWQgZGVzY3JpcHRvci4iKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVz
dENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLlBhcmVu
dERldmljZVJlbW92ZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIFNo
YWRlclByb2dyYW0gaXMgcmVtb3ZlZCBiZWZvcmUgaXQncyBwYXJlbnQgQ2FudmFzLiIsCi0gICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgY2FudmFzUmVtb3Zl
ZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rp
b24uc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtUmVtb3Zl
ZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVtb3ZlZCA9IHRydWU7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW1Db3VudCA9IGNh
bnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5zaXplOwotICAgICAgICAgICAgbGV0IGxpc3Rl
bmVySXRlbVJlbW92ZWQgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uYWRkRXZlbnRM
aXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCAoZXZlbnQpID0+IHsKLSAg
ICAgICAgICAgICAgICBpZiAoLS1zaGFkZXJQcm9ncmFtQ291bnQpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVj
dGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQs
IGxpc3RlbmVySXRlbVJlbW92ZWQpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RmFsc2UoY2FudmFzUmVtb3ZlZCwgIlJlbW92ZWQgU2hhZGVyUHJvZ3JhbSBiZWZvcmUgQ2Fu
dmFzLiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBkZWxldGVEZXZpY2UoKWAp
OwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkKCkiPgotICAgIDxw
PlRlc3QgdGhhdCBDYW52YXNNYW5hZ2VyIHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24g
b2YgV2ViR1BVIHNoYWRlciBwcm9ncmFtcy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJlZDM3MjIz
Yzc1YzBmZTU4NTYxZTgyYWIwZDE0OTY1YzRhY2JmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0
ZVNoYWRlci13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBA
QAotV2ViR1BVIHRlc3RzIGZvciBDYW52YXMudXBkYXRlU2hhZGVyIGNvbW1hbmQuCi0KLQotPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVQotLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuVmFsaWQKLVBB
U1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTog
Q2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuQ29tcHV0ZS5JbnZhbGlkCi1QQVNTOiBTaG91bGQg
cHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogRmFpbGVkIHRvIHVwZGF0ZSBzaGFkZXIgb2Yg
Z2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxk
IGhhdmUgY2hhbmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFk
ZXIuV2ViR1BVLlZlcnRleC5WYWxpZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQu
Ci0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5WZXJ0
ZXguSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IEZh
aWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVuIHByb2dy
YW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5GcmFnbWVudC5WYWxpZAotUEFTUzog
U291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52
YXMudXBkYXRlU2hhZGVyLldlYkdQVS5GcmFnbWVudC5JbnZhbGlkCi1QQVNTOiBTaG91bGQgcHJv
ZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogRmFpbGVkIHRvIHVwZGF0ZSBzaGFkZXIgb2YgZ2l2
ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhh
dmUgY2hhbmdlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91
cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0
ZXhGcmFnbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2
YWJjZDAwNjZlNzRjMmRkNGM1MTQ3NmM0ZjcwYzgwYTQ4N2VkOTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVdlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVw
ZGF0ZVNoYWRlciBjb21tYW5kIHdoZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBv
ZiBhIHJlbmRlciBwaXBlbGluZSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuCi0KLQotPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFn
bWVudAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlNo
YXJlZFZlcnRleEZyYWdtZW50LlNpbmdsZVBpcGVsaW5lCi1DcmVhdGluZyByZW5kZXIgcGlwZWxp
bmUuLi4KLVBBU1M6IFZlcnRleCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJl
IHRoZSBzYW1lLgotVXBkYXRpbmcgdmVydGV4IHNoYWRlciBzb3VyY2UuLi4KLVBBU1M6IFZlcnRl
eCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotUEFTUzog
VmVydGV4IHNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotVXBkYXRpbmcgZnJhZ21lbnQgc2hh
ZGVyIHNvdXJjZS4uLgotUEFTUzogVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBz
aG91bGQgYmUgdGhlIHNhbWUuCi1QQVNTOiBGcmFnbWVudCBzb3VyY2Ugc2hvdWxkIGhhdmUgY2hh
bmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BV
LlNoYXJlZFZlcnRleEZyYWdtZW50Lk11bHRpcGxlUGlwZWxpbmVzCi1DcmVhdGluZyByZW5kZXIg
cGlwZWxpbmUuLi4KLUNyZWF0aW5nIHJlbmRlciBwaXBlbGluZS4uLgotUEFTUzogQm90aCBwaXBl
bGluZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc291cmNlLgotVXBkYXRpbmcgcGlwZWxpbmUgMSB2
ZXJ0ZXggc291cmNlLi4uCi1QQVNTOiBTb3VyY2Ugb2YgcGlwZWxpbmUgMSBzaG91bGQgaGF2ZSBj
aGFuZ2VkLgotUEFTUzogQm90aCBwaXBlbGluZXMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IHNvdXJj
ZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hh
ZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZjlhNDc1NjIyNDIxYzgzNjg5YzlhZDM3
ZDIxOTBhMDFjZTllMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNo
YXJlZFZlcnRleEZyYWdtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRXZWJHUFVFbmFibGVkKHRydWUpOwotCi1jb25zdCByZW5kZXJQaXBlbGluZVNvdXJj
ZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX0KLWA7Ci0KLWxldCBkZXZpY2UgPSBudWxsOwotbGV0IHNoYWRlck1vZHVsZSA9IG51
bGw7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclBpcGVsaW5lKCkgewotICAgIGlmICgh
ZGV2aWNlKSB7Ci0gICAgICAgIGxldCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1
ZXN0QWRhcHRlcigpOwotICAgICAgICBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZp
Y2UoKTsKLSAgICB9Ci0KLSAgICBpZiAoIXNoYWRlck1vZHVsZSkKLSAgICAgICAgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogcmVuZGVyUGlwZWxpbmVTb3Vy
Y2V9KTsKLQotICAgIC8vIENvcGllZCBmcm9tIHdlYmdwdS93aGxzbC93aGxzbC5odG1sLgotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVy
TG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlk
ZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dDEgPSB7
c3RyaWRlOiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0MCwgaW5wdXQxXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZm
ZXJzOiBpbnB1dHN9OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVy
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH0pOwotfQotCi1mdW5jdGlvbiB0
ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
Q2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQiKTsKLQotICAg
IGFzeW5jIGZ1bmN0aW9uIGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKSB7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJDcmVhdGluZyByZW5kZXIgcGlwZWxpbmUuLi4iKTsKLSAgICAgICAgbGV0IGV2
YWx1dGVQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlUmVuZGVy
UGlwZWxpbmUoKWApOwotCi0gICAgICAgIGlmICghV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xs
ZWN0aW9uLnNpemUpCi0gICAgICAgICAgICBhd2FpdCBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0Nv
bGxlY3Rpb24uYXdhaXRFdmVudChXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCk7Ci0KLSAg
ICAgICAgbGV0IGNhbnZhcyA9IEFycmF5LmZyb20oV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xs
ZWN0aW9uKVswXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRU
eXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAiQ2FudmFzIHNob3VsZCBiZSBX
ZWJHUFUuIik7Ci0KLSAgICAgICAgbGV0IGl0ZW1BZGRlZEV2ZW50ID0gYXdhaXQgY2FudmFzLnNo
YWRlclByb2dyYW1Db2xsZWN0aW9uLmF3YWl0RXZlbnQoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVt
QWRkZWQpOwotICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IGl0ZW1BZGRlZEV2ZW50LmRhdGEu
aXRlbTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoc2hhZGVyUHJvZ3JhbS5wcm9ncmFt
VHlwZSA9PT0gV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIsICJTaGFkZXIgcHJv
Z3JhbSBzaG91bGQgYmUgYSByZW5kZXIgcGlwZWxpbmUuIik7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KHNoYWRlclByb2dyYW0uc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIsICJTaGFk
ZXIgcHJvZ3JhbSBzaG91bGQgaGF2ZSBhIHNoYXJlZCB2ZXJ0ZXggYW5kIGZyYWdtZW50IG1vZHVs
ZS4iKTsKLQotICAgICAgICBhd2FpdCBldmFsdXRlUHJvbWlzZTsKLSAgICAgICAgcmV0dXJuIHNo
YWRlclByb2dyYW07Ci0gICAgfQotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBu
YW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQuU2lu
Z2xlUGlwZWxpbmUiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdXBkYXRpbmcg
dGhlIHZlcnRleC9mcmFnbWVudCBzaGFkZXIgd2lsbCBhbHNvIGFmZmVjdCB0aGUgZnJhZ21lbnQv
dmVydGV4IHNoYWRlciBpZiB0aGV5IGJvdGggdXNlIHRoZSBzYW1lIG1vZHVsZS4iLAotICAgICAg
ICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW0gPSBhd2FpdCBh
d2FpdFByb2dyYW1DcmVhdGVkKCk7Ci0KLSAgICAgICAgICAgIGxldCBbb3JpZ2luYWxWZXJ0ZXhT
b3VyY2UsIG9yaWdpbmFsRnJhZ21lbnRTb3VyY2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAg
ICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3Jh
bS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAg
ICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0u
aWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAg
ICAgICAgIF0pOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwo
b3JpZ2luYWxWZXJ0ZXhTb3VyY2UsIG9yaWdpbmFsRnJhZ21lbnRTb3VyY2UsICJWZXJ0ZXggYW5k
IEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4iKTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIHZlcnRleCBzaGFkZXIgc291cmNlLi4u
Iik7Ci0gICAgICAgICAgICBhd2FpdCBDYW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJv
Z3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LCAiLy8g
TU9ESUZJRUQgVkVSVEVYXG5cbiIgKyBvcmlnaW5hbFZlcnRleFNvdXJjZS5zb3VyY2UpOwotCi0g
ICAgICAgICAgICBsZXQgW3ZlcnRleFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0ZXgsIGZyYWdtZW50
U291cmNlQWZ0ZXJVcGRhdGluZ1ZlcnRleF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAg
ICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlk
ZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAg
ICAgICAgIENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVu
dGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAg
ICAgXSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0
ZXhTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdW
ZXJ0ZXgsICJWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUg
c2FtZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFs
KHZlcnRleFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0ZXgsIG9yaWdpbmFsVmVydGV4U291cmNlLCAi
VmVydGV4IHNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotCi0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiVXBkYXRpbmcgZnJhZ21lbnQgc2hhZGVyIHNvdXJjZS4uLiIpOwotICAg
ICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRl
bnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50LCAiLy8gTU9ESUZJ
RUQgRlJBR01FTlRcblxuIiArIG9yaWdpbmFsRnJhZ21lbnRTb3VyY2Uuc291cmNlKTsKLQotICAg
ICAgICAgICAgbGV0IFt2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5nRnJhZ21lbnQsIGZyYWdtZW50
U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAg
ICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0u
aWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAg
ICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlk
ZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAg
ICAgICBdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHZl
cnRleFNvdXJjZUFmdGVyVXBkYXRpbmdGcmFnbWVudCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0
aW5nRnJhZ21lbnQsICJWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBi
ZSB0aGUgc2FtZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxv
d0VxdWFsKGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCBvcmlnaW5hbEZyYWdt
ZW50U291cmNlLCAiRnJhZ21lbnQgc291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuIik7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Lk11bHRpcGxl
UGlwZWxpbmVzIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIG9u
ZSBwaXBlbGluZSB3b24ndCBhZmZlY3QgYW55IG90aGVyIHBpcGVsaW5lcyBpZiB0aGV5IHNoYXJl
IHRoZSBzYW1lIG1vZHVsZS4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAg
bGV0IHNoYWRlclByb2dyYW0xID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwotICAgICAg
ICAgICAgbGV0IHNoYWRlclByb2dyYW0yID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwot
Ci0gICAgICAgICAgICBsZXQgW29yaWdpbmFsVmVydGV4U291cmNlMSwgb3JpZ2luYWxWZXJ0ZXhT
b3VyY2UyXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2Vu
dC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRl
clByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50
LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbTIuaWRlbnRpZmllciwgV0kuU2hhZGVy
UHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKG9yaWdpbmFsVmVydGV4U291cmNlMSwg
b3JpZ2luYWxWZXJ0ZXhTb3VyY2UyLCAiQm90aCBwaXBlbGluZXMgc2hvdWxkIGhhdmUgdGhlIHNh
bWUgc291cmNlLiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRpbmcg
cGlwZWxpbmUgMSB2ZXJ0ZXggc291cmNlLi4uIik7Ci0gICAgICAgICAgICBhd2FpdCBDYW52YXNB
Z2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbTEuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJv
Z3JhbS5TaGFkZXJUeXBlLlZlcnRleCwgIi8vIE1PRElGSUVEIFZFUlRFWFxuXG4iICsgb3JpZ2lu
YWxWZXJ0ZXhTb3VyY2UxLnNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGxldCBbbmV3VmVydGV4U291
cmNlMSwgbmV3VmVydGV4U291cmNlMl0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAg
ICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMS5pZGVu
dGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAg
ICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0yLmlkZW50
aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAg
XSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChvcmln
aW5hbFZlcnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTEsICJTb3VyY2Ugb2YgcGlwZWxpbmUg
MSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3ROb3RTaGFsbG93RXF1YWwobmV3VmVydGV4U291cmNlMSwgbmV3VmVydGV4U291cmNlMiwgIkJv
dGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBzb3VyY2VzLiIpOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+V2ViR1BVIHRlc3Rz
IGZvciBDYW52YXMudXBkYXRlU2hhZGVyIGNvbW1hbmQgd2hlbiB0aGUgdmVydGV4IGFuZCBmcmFn
bWVudCBzaGFkZXJzIG9mIGEgcmVuZGVyIHBpcGVsaW5lIHNoYXJlIHRoZSBzYW1lIG1vZHVsZS48
L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5M2MwZTg2NGE0M2I3MmIxN2MzMzVhNjU4MjY2YmZjOTA3NWU5NWIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy13
ZWJncHUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMudXBkYXRlU2hh
ZGVyLldlYkdQVSIpOwotCi0gICAgZnVuY3Rpb24gdGVzdCh7bmFtZSwgcHJvZ3JhbVR5cGUsIHNo
YWRlclR5cGUsIHNvdXJjZSwgc2hvdWxkVGhyb3d9KSB7Ci0gICAgICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICBhc3luYyB0ZXN0KCkgewotICAg
ICAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9n
cmFtLnByb2dyYW1Gb3JUeXBlKHByb2dyYW1UeXBlKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNo
YWRlclByb2dyYW0pCi0gICAgICAgICAgICAgICAgICAgIHRocm93ICJNaXNzaW5nIHNoYWRlciBw
cm9ncmFtIjsKLQotICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbFNvdXJjZSA9IGF3YWl0IENh
bnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBz
aGFkZXJUeXBlKTsKLQotICAgICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykgewotICAgICAg
ICAgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBDYW52YXNBZ2VudC51cGRhdGVT
aGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBzaGFkZXJUeXBlLCBzb3VyY2UpOwotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRl
bnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlKTsKLQotICAgICAgICAgICAgICAgIGxldCBuZXdT
b3VyY2UgPSBhd2FpdCBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dy
YW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7Ci0KLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChvcmlnaW5hbFNvdXJjZSwgbmV3U291cmNlLCAiU291
cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0KLQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5X
ZWJHUFUuQ29tcHV0ZS5WYWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9n
cmFtLlByb2dyYW1UeXBlLkNvbXB1dGUsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5Db21wdXRlLAotICAgICAgICBzb3VyY2U6IGAvLyBDSEFOR0VEIENP
TVBVVEUKLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIo
ZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBT
Vl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVm
ZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYCwKLSAgICB9KTsKLQotICAgIHRlc3Qo
ewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuQ29tcHV0ZS5JbnZh
bGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUu
Q29tcHV0ZSwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBl
LkNvbXB1dGUsCi0gICAgICAgIHNvdXJjZTogIklOVkFMSUQiLAotICAgICAgICBzaG91bGRUaHJv
dzogdHJ1ZSwKLSAgICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVw
ZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4LlZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJ
LlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBX
SS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LAotICAgICAgICBzb3VyY2U6IGAvLyBD
SEFOR0VEIFZFUlRFWAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9u
IDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsK
LSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfQotYCwKLSAgICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBuYW1l
OiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4LkludmFsaWQiLAotICAgICAgICBw
cm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIsCi0gICAgICAg
IHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgsCi0gICAgICAg
IHNvdXJjZTogIklOVkFMSUQiLAotICAgICAgICBzaG91bGRUaHJvdzogdHJ1ZSwKLSAgICB9KTsK
LQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUu
RnJhZ21lbnQuVmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Q
cm9ncmFtVHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5GcmFnbWVudCwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBGUkFHTUVO
VAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRl
KDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4g
cG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9u
OwotfQotYCwKLSAgICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVw
ZGF0ZVNoYWRlci5XZWJHUFUuRnJhZ21lbnQuSW52YWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBl
OiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlw
ZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50LAotICAgICAgICBzb3VyY2U6
ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+V2ViR1BVIHRlc3RzIGZvciBDYW52YXMudXBkYXRlU2hh
ZGVyIGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGMzYzY5YmExODBlNTJkMTFlODgyMGE0N2RjMjk5
ZjU3ZmQxYTBlMTAuLjhmMWRhNWFmNGZmMmYyYmQ3N2NiNTY2OGFjYTc1NmI3ZWE4YjE1ODAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2NjMsMTYg
KzE2NjMsNiBAQCBodHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvIFsgU2tpcCBdCiBodHRw
L3dwdC93ZWJhdXRobi8gWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3JlZGVudGlhbC1tYW5hZ2VtZW50LyBbIFNraXAgXQogCi0jIFdlYkdQVQotd2ViZ3B1IFsgU2tp
cCBdCi1pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBd
Ci1pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAg
XQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tp
cCBdCi1pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBd
Ci1pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBb
IFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lw
IF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFn
bWVudC5odG1sIFsgU2tpcCBdCi0KICMgV2ViR0wyCiB3ZWJraXQub3JnL2IvMTY2NTM2IGZhc3Qv
Y2FudmFzL3dlYmdsL3dlYmdsLXRyYW5zZm9ybWVkLXZhcnlpbmctbmFtZS1jcmFzaC5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvMTY2NTM2IGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1taXgt
d2l0aC1ib29sLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZTg0ZTE2ZDJhZDQyYWQzNTA3ZTAyMmEyYWEyY2E5NGYyOGZiY2VhYy4u
MTZiYWFiYjJjZTQxNTM4MGVmODhhYmVkY2NhNWM1NGFkZDY5Y2ZiNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU2LDE0ICs1Niw2IEBAIHdlYmtpdC5v
cmcvYi8yMDAzMDggZmFzdC9ldmVudHMvdG91Y2gvaW9zL2NvbnRlbnQtb2JzZXJ2YXRpb24vbm9u
LXZpc2libGUtY29udGVuCiAKIG1lZGlhL3ZpZGVvLXN1cHBvcnRzLWZ1bGxzY3JlZW4uaHRtbCBb
IFNraXAgXQogCi1pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsg
U2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBb
IFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1s
IFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsg
U2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUu
aHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwg
WyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0
ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBdCi0KICMgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMg
YXJlIG5vdCBlbmFibGVkCiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvCiAKQEAgLTM0ODcsNCArMzQ3
OSw0IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8td2VibS1zdGFsbC5odG1sIFsgU2tpcCBdCiAK
ICMgd2Via2l0Lm9yZy9iLzIyMzM4NSBUd28gaW1wb3J0ZWQgd2VicnRjIHRlc3RzIGFyZSBmbGFr
ZXkgdGV4dCBmYWlsaW5nIG9uIFJlbGVhc2UgZm9yIEJpZ1N1cisgYW5kIGlPUyAxNAogWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5l
Y3Rpb24tYWRkSWNlQ2FuZGlkYXRlLWNvbm5lY3Rpb25TZXR1cC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KLVsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q0R0bHNUcmFuc3BvcnQtc3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDRHRsc1RyYW5zcG9ydC1zdGF0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNjQz
OTFmYjcxMzYxNDQ4YmI4YzA0ZjQxZjZlOGVjNDc2ZDI4YzM4Li4wMDJhNDcxMGY1MmJlY2I1MmU3
NDJjYTNhZDVjYThlMzA2YTg5NjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NywxNSArNDcsNiBAQCBjc3MtY3VzdG9tLXByb3BlcnRp
ZXMtYXBpIFsgU2tpcCBdCiBjc3MtdHlwZWRvbSBbIFNraXAgXQogY3NzLWRhcmstbW9kZSBbIFNr
aXAgXQogCi13ZWJncHUgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQt
d2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVz
LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3Vy
Y2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQt
d2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQt
cmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRl
ci13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwgWyBTa2lwIF0KLQogIyBNZWRpYSBTdHJlYW0g
QVBJIHRlc3RpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgV0sxIHlldC4KIGZhc3QvbWVkaWFzdHJl
YW0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMK
QEAgLTEzODMsNCArMTM3NCw0IEBAIHdlYmtpdC5vcmcvYi8yMjc3NjIgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2ludGVyYWN0aW9uL2ZvY3VzL3RoZS1hCiB3ZWJraXQub3Jn
L2IvMjI4NTYxIGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21hY29zLWZ1
bGxzY3JlZW4tbWVkaWEtY29udHJvbHMvbWFjb3MtZnVsbHNjcmVlbi1tZWRpYS1jb250cm9scy1s
aXZlLWJyb2FkY2FzdC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyB3ZWJraXQub3JnL2IvMjI4
MjAwIEFkanVzdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgTW9udGVyZXkgb24gT3BlbiBTb3Vy
Y2UgPHJkYXI6Ly84MDM0NTA0OD46Ci1bIE1vbnRlcmV5IF0gd2VicnRjL2gyNjQtaGlnaC5odG1s
IFsgRmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorWyBNb250ZXJleSBdIHdl
YnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE0ZjJhMzUwYTc3Yjg4OTBhODQxNDA4ZDM4
ZGNjMDZiYmZjOWM0NDMuLjdiZWU3ZDJiNGFhOWIwMDI0NzI5ZjFiYjk3YzY0N2FkYjEwZmE0Mjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTk3NSwyMSArOTc1LDEzIEBAIHdlYmtpdC5vcmcvYi8xODc4MjggWyBSZWxlYXNlIF0gZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvZmxleC1jb250ZW50LXNpemVkLWNvbHVtbnMtCiAKIHdlYmtpdC5vcmcv
Yi8xOTg2NjMgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vz
cy10aGVuLW5hdmlnYXRlLXNhbWUtc2l0ZS1zaG91bGQtaGF2ZS1hY2Nlc3MuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xOTg5MjEgd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFu
Z2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2Iv
MTk5NjUxIFsgTW9qYXZlIERlYnVnIF0gd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0
bWwgWyBTbG93IF0KLQogd2Via2l0Lm9yZy9iLzE5OTA4OSBbIERlYnVnIF0gcGx1Z2lucy93aW5k
b3ctb3Blbi5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzU2NTA2MDYzPiBMYXlv
dXQgVGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUg
KDIwMzI1NikKIHdlYmtpdC5vcmcvYi8yMDMyNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0
ZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNTMwMSBpbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQotCiB3ZWJraXQub3JnL2IvMjA1ODA4IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3VuaWNv
ZGUtYmlkaS1vdGhlci1uZXV0cmFscy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzE5ODk0MiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNjg2NCBodHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS82MDkyOTIzOT4gWyBtYWNPUyB3azIgXSBlZGl0aW5nL3NlbGVj
dGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5Lmh0bWwgaXMgYSBmbGFreSB0aW1lb3V0CkBAIC05
OTksOTQgKzk5MSw1MCBAQCB3ZWJraXQub3JnL2IvMjA2NzA4IGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sIFsgUGFzcyBGYQogCiB3ZWJraXQub3JnL2Iv
MjA2OTYxIFsgTW9qYXZlIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDAzNS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzA3OCB3ZWJncHUvd2hsc2wvdGV4dHVyZXMt
c2FtcGxlLWxldmVsLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgQ3Jhc2ggXQotCi13ZWJr
aXQub3JnL2IvMjA3MTE3IHdlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzIwNzEyNyB3ZWJncHUvd2hsc2wvYnVmZmVy
LXZlcnRleC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIw
NjkwMyBpbnNwZWN0b3IvaGVhcC9nZXRSZW1vdGVPYmplY3QuaHRtbCBbIFBhc3MgQ3Jhc2ggRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDcxNDEgWyBEZWJ1ZyBdIGluc3BlY3Rvci9jYW52YXMv
Y3JlYXRlLWNvbnRleHQtYml0bWFwcmVuZGVyZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8yMDcxNjYgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFW
LWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzIwNzE5OSB3ZWJncHUvd2hsc2wvbG9vcHMuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcyMDAgd2ViZ3B1L3dobHNsL3do
aWxlLWxvb3AtY29udGludWUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtp
dC5vcmcvYi8yMDcyMDIgd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA2NzE4IGluc3BlY3Rvci9j
YW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdsMi5odG1sIFsgUGFzcyBDcmFzaCBd
CiAKIHdlYmtpdC5vcmcvYi8yMDcyMDkgaW5zcGVjdG9yL2hlYXAvZ2V0UHJldmlldy5odG1sIFsg
UGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMjA3MjIyIHdlYmdwdS93aGxz
bC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KLXdlYmtpdC5vcmcvYi8yMDcyNjcgd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFi
bGUtbGlmZXRpbWUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcv
Yi8yMDcyNjkgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VydmVy
LWNsb3NlLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzE4MzY4NCBodHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLXdlYmtpdC5vcmcvYi8yMDcyOTQgd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNzMwMyBsb2FkZXIv
c3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1zaXplLWlmcmFtZS5odG1sIFsgUGFzcyBDcmFzaCBdCiAK
LXdlYmtpdC5vcmcvYi8yMDc0NjAgd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8yMDc0NjUgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24tbG9uZy1xdWV1ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIw
NzQ2NiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nl
c3MtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDc0NzYgd2Vi
Z3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDc1MDggd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWxvYWQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcv
Yi8yMDc1OTkgd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDc2MzIgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c3RpY2t5L3N0aWNreS1kdXJpbmctcnViYmVyYmFuZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzYzMSB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9maXhl
ZC9maXhlZC1kdXJpbmctcnViYmVyYmFuZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
IAogd2Via2l0Lm9yZy9iLzIwNzYzNSBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1p
bnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdIAogCi13ZWJraXQub3JnL2Iv
MjA3NjM2IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzIwNzYzOCB3ZWJncHUvd2hsc2wvd2hsc2wu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDY4NTIgaW5z
cGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3NzAwIHdlYmdwdS93aGxzbC9y
ZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdl
YmtpdC5vcmcvYi8yMDc3MjggWyBSZWxlYXNlIF0gYWNjZXNzaWJpbGl0eS9wcmVzcy10YXJnZXRz
LWNlbnRlci1wb2ludC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzc3
OSB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNzc5NiBbIFJlbGVh
c2UgXSBmYXN0L2JveC1zaGFkb3cvaGlkcGktYm94LXNoYWRvdy5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzc5OCB3ZWJydGMvY29ubmVjdGlvbi1zdGF0
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzgzOSB3ZWJncHUvd2hs
c2wvbG9vcHMtYnJlYWsuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5v
cmcvYi8yMDc4NDQgc3RvcmFnZS9pbmRleGVkZGIvZGV0YWNoZWQtaWZyYW1lLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA3ODY0IHdlYmdwdS93aGxzbC9kby13aGlsZS1s
b29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3Jn
L2IvMjA3OTM4IGh0dHAvd3B0L2NyeXB0by9kZXJpdmUtaG1hYy1rZXktY3Jhc2guYW55Lmh0bWwg
WyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwNzk2MiBhY2Nlc3NpYmlsaXR5L21hYy9h
cmlhLW1lbnUtaXRlbS1zZWxlY3RlZC1ub3RpZmljYXRpb24uaHRtbCBbIFNsb3cgXQogCi13ZWJr
aXQub3JnL2IvMjA4MDA1IHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA4MDE0IFsgRGVidWcg
XSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL25vLXN1YnByb3RvY29sLmh0bWwgWyBQ
YXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwODA2MiBodHRwL3dwdC9mZXRjaC9kaXNhYmxl
LXNwZWN1bGF0aXZlLWZvci1yZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMDgyMjIgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA4MzQwIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8y
MDgzOTAgWyBEZWJ1ZyBdIGZhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1yZXBhaW50Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA4Mzk2IGh0dHAvdGVzdHMvbWlzYy9v
YmplY3QtZW1iZWRkaW5nLXN2Zy1kZWxheWVkLXNpemUtbmVnb3RpYXRpb24tMi5odG0gWyBQYXNz
IEZhaWx1cmUgXQpAQCAtMTA5OSw4ICsxMDQ3LDYgQEAgd2Via2l0Lm9yZy9iLzIwODg4OSBmYXN0
L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT24K
IAogd2Via2l0Lm9yZy9iLzIwOTAwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGlt
aW5nLzA4NS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTAyNCBbIERl
YnVnIF0gd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWwgWyBQYXNzIENyYXNoIF0KLQog
d2Via2l0Lm9yZy9iLzIwOTA3NyBzdmcvY3VzdG9tL29iamVjdC1zaXppbmctZXhwbGljaXQtd2lk
dGgueGh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA5MDUyIGZhc3Qvc2Ny
b2xsaW5nL21hYy9hYnNvbHV0ZS1pbi1vdmVyZmxvdy1zY3JvbGwtZHluYW1pYy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTExOTIsOSArMTEzOCw2IEBAIHdlYmtpdC5vcmcvYi82
ODI3OCBodHRwL3Rlc3RzL2hpc3RvcnkvYmFjay13aXRoLWZyYWdtZW50LWNoYW5nZS5weSBbIFBh
c3MgRmFpbHVyCiAjIDxyZGFyOi8vcHJvYmxlbS8zNzMzMDM3Nz4gQVNhbiB0ZXN0cyBleGl0aW5n
IGVhcmx5IGR1ZSB0byB0aW1lb3V0cwogWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cyBbIFNraXAgXQogCi0jIDxy
ZGFyOi8vcHJvYmxlbS82MDEwNTkyNz4gWyBNYWMgd2syIFJlbGVhc2UgXSB3ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBpcyBmbGFreSBmYWlsaW5nCi1bIFJlbGVhc2UgXSB3
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0K
ICMgPHJkYXI6Ly9wcm9ibGVtLzYwNTA3NTI2PiBSRUdSRVNTSU9OIChyMjU4MTI0LXIyNTgyMzAp
IFsgTWFjIHdrMiBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lv
bnMvYmxvY2tlZC13ZWJzb2NrZXQtY3Jhc2guaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMvYmxvY2tlZC13ZWJzb2Nr
ZXQtY3Jhc2guaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCkBAIC0xMjgyLDggKzEyMjUsNiBAQCB3ZWJr
aXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZh
bGlkYXRpb24tYmFjay1uYXZpZwogCiB3ZWJraXQub3JnL2IvMjE1NTgxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRzLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjE1NjA2IHdlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJr
aXQub3JnL2IvMjE1NjExIFsgRGVidWcgXSBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9v
dmVyZmxvdy1vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQog
CiAjIHJkYXI6Ly82NTI2OTU4OSAoWyBtYWNPUyBhbmQgaU9TIF0gbWVkaWEvdnA5Lmh0bWwgaXMg
ZmFpbGluZyBjb25zaXN0ZW50bHkuKQpAQCAtMTU4Niw3ICsxNTI3LDYgQEAgaW5zcGVjdG9yL2Nh
bnZhcy9yZWNvcmRpbmctMmQtZnVsbC5odG1sIFsgUGFzcyBDcmFzaCBdCiBpbnNwZWN0b3IvY2Fu
dmFzL3JlY29yZGluZy1iaXRtYXByZW5kZXJlci1mdWxsLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGlt
ZW91dCBdCiBpbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy1iaXRtYXByZW5kZXJlci1mcmFtZUNv
dW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiBpbnNwZWN0b3IvY2FudmFzL3JlY29y
ZGluZy1iaXRtYXByZW5kZXJlci1tZW1vcnlMaW1pdC5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3Iv
Y2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiBpbnNwZWN0
b3IvY2FudmFzL3JlY29yZGluZy1odG1sLTJkLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBD
cmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8yMjgwODIgZmFzdC9jYW52YXMvZ2V0UHV0SW1hZ2VEYXRh
UGFpclRlc3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCkBAIC0xNjE4LDQgKzE1NTgsNCBAQCB3ZWJr
aXQub3JnL2IvMjI4NTI4IFsgQmlnU3VyIERlYnVnIGFybTY0IF0gZmFzdC90ZXh0L2Vtb2ppLW92
ZXJsYXAuaHRtbCBbIFBhc3MgSQogWyBNb250ZXJleSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ltcG9ydC1zY3JpcHRzLWNy
b3NzLW9yaWdpbi5odHRwcy5odG1sIFsgRmFpbHVyZSBdCiBbIE1vbnRlcmV5IF0gbW9kZWwtZWxl
bWVudC9tb2RlbC1lbGVtZW50LXNvdXJjZS5odG1sIFsgUGFzcyBDcmFzaCBdCiBbIE1vbnRlcmV5
IFJlbGVhc2UgXSBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvYXN5Y2hyb25vdXMtZGVhZGxvY2st
d2l0aC10aW1lci1hbmQtZXZhbHVhdGUuaHRtbCBbIFBhc3MgQ3Jhc2ggXQotWyBNb250ZXJleSBS
ZWxlYXNlIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDAwNC5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitbIE1vbnRlcmV5IFJlbGVhc2UgXSBtZWRp
YS9tZWRpYS1mcmFnbWVudHMvVEMwMDA0Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGYx
Y2YyNGY0ZjFhYjNkMDY0MGIzMmUyMWE0ZWM1MDlkYWQyMmJjODEuLmRmOTAxMDkwNGQ1NzdlODVh
MDc2NjY3YTkzN2FkNzdlNmQ4ZjU5NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIG5hdmlnYXRvci5j
b250YWN0cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5j
cmVkZW50aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5h
dmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5pc0xvZ2dlZEluKCkgaXMgT0sKIG5hdmlnYXRv
ci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKQEAgLTQzLDcg
KzQyLDYgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxl
ZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFn
ZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2aWdhdG9yLmlzTG9nZ2Vk
SW4oKSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5n
dWFnZSBpcyBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAxMmZlYmZjZGIzYWYxNjA5NmI0MDM4OWQwOWI4YjNkYTZmOTFjNmNiLi45M2NkNTQ0MzhmZTIz
YjkxMTIyMjdjMjk2NzBjODg1MGQ1ZGEzMDUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU0NSwzOCArMTU0NSw2IEBAIHdlYmtpdC5vcmcvYi8yMTIx
NzIgWyBDYXRhbGluYSBdIGZhc3QvdGV4dC9mb250LWNvbGxlY3Rpb24uaHRtbCBbIEltYWdlT25s
eUZhaWx1CiAKIHdlYmtpdC5vcmcvYi8yMDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L3Zp
ZGVvX3RpbWV1cGRhdGVfb25fc2Vlay5odG1sIFsgVGltZW91dCBQYXNzIF0KIAotIyByZGFyOi8v
NTU0MDU4NTEgKFsgbWFjT1MgXSBMYXlvdXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5nbGUtc3RyaXAu
aHRtbCBhcmUgZmxha3kgZmFpbHVyZXMuICgyMDE4MjcpKQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3
ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1
L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgy
NyB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1
L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KLQotIyByZGFyOi8vNTUyMDQ3NzUgKFJFR1JFU1NJT04gKE1hY09TKTogTWFu
eSB3ZWJncHUvd2hsc2wvKiB0ZXN0cyBhcmUgZmxha3kgZmFpbHVyZXMpCi13ZWJncHUvd2hsc2wv
YXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12
YXJpYWJsZS1saWZldGltZS0zLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTcuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdIAotd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTI0Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA1NTI0IHdlYmdwdS93aGxz
bC9sb29wcy1jb250aW51ZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0
Lm9yZy9iLzIwNTUyNSB3ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCiAjIFRoZSB0ZXN0IHJ1bm5lciBpcyBmYWlsaW5nIGluIGFuIHVu
cmVsYXRlZCwgdW5leHBsYWluZWQsIGludmlzaWJsZSB0byB0aGUgaHVtYW4gZXllLCAyIHBpeGVs
cyBkaWZmZXJlbmNlLgogd2Via2l0Lm9yZy9iLzIwMTQwMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS12aWRlby1pcy12aXNpYmxlLmh0bWwg
WyBTa2lwIF0KIApAQCAtMTYxMiwxMCArMTU4MCw2IEBAIHdlYmtpdC5vcmcvYi8yMDIwNjQgd2Vi
YXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbCBbIFBhc3MK
IAogd2Via2l0Lm9yZy9iLzIwNTc1NiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvZ2xzbDMvbm8t
YXR0cmlidXRlLXZlcnRleC1zaGFkZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8yMDU4NjIgd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWsuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1ODY1IHdlYmdwdS93aGxzbC9lbnN1cmUt
cHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjA1ODY3IHdlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA0MzEyIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9zdHJ1Y3QtZG9tLTA2LWItbWFudWFs
LnN2ZyBbIEZhaWx1cmUgUGFzcyBdCiAKICMgTG9jYWxlLXNwZWNpZmljIHNoYXBpbmcgaXMgb25s
eSBlbmFibGVkIG9uIGNlcnRhaW4gT1Nlcy4KQEAgLTE2OTYsOCArMTY2MCw2IEBAIHdlYmtpdC5v
cmcvYi8yMDg1OTIgc3ZnL2N1c3RvbS9vYmplY3Qtc2l6aW5nLWV4cGxpY2l0LWhlaWdodC54aHRt
bCBbIFBhc3MgRmFpbHVyCiAKIHdlYmtpdC5vcmcvYi8yMDkyNTcgc3ZnL2FzLW9iamVjdC9vYmpl
Y3QtYm94LXNpemluZy1uby13aWR0aC1oZWlnaHQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8yMDkwNTYgd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sIFsgUGFzcyBD
cmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8yMDkwNzIgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY3NzL3No
YXJlZC1zdHlsZXNoZWV0LW11dGF0aW9uLXByZWNvbnN0cnVjdC5odG1sIFsgUGFzcyBDcmFzaCBG
YWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzE1MCBwbGF0Zm9ybS9tYWMvd2VicnRjL2NhcHR1
cmVDYW52YXMtd2VicnRjLXNvZnR3YXJlLWVuY29kZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1l
b3V0IF0KQEAgLTE3NzAsOCArMTczMiw2IEBAIHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNl
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvCiAKIHdl
YmtpdC5vcmcvYi8yMTUxNzcgWyBSZWxlYXNlIF0gZWRpdGluZy9zZWxlY3Rpb24vbmF2aWdhdGlv
bi1jbGVhcnMtZWRpdG9yLXN0YXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3Jn
L2IvMjE1MjQ3IHdlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIxNTI3MSBbIERlYnVnIF0gc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL25ldy1kYXRhYmFzZS1hZnRlci11c2VyLWRlbGV0ZS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIxNTQ1MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLXBsYXkt
bmVnYXRpdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xODY4LDExICsxODI4LDYgQEAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hh
bmdldHlwZS1wbGF5LXdpdGhvdXQKICMgPHJkYXI6Ly9wcm9ibGVtLzYyMzE3NzIzPiBbIEd1YXJk
LU1hbGxvYyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3RlLXBsYXliYWNr
L3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0aWFsLWNhbGxiYWNrLmh0bWwgaXMgZmxha3kgY3Jhc2hp
bmcgd2l0aCAnV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3RlSGFzQXZhaWxhYmlsaXR5
Q2FsbGJhY2tzQ2hhbmdlZCgpJyBhbGVydC4KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxheWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRpYWwt
Y2FsbGJhY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi0jIDxyZGFyOi8vcHJvYmxlbS81Njk2MTQ5
OT4gTWFueSB3ZWJHUFUgdGVzdCBmYWlsIG9uIHByb2R1Y3Rpb24gYW5kIGNyYXNoIG9uIERlYnVn
Ci1bIEJpZ1N1cisgXSBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1
Lmh0bWwgWyBTa2lwIF0KLVsgQmlnU3VyKyBdIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBdCi1bIEJpZ1N1cisgXSBp
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQotCiAjIFdl
YlAgaW1hZ2VzCiBbIEJpZ1N1cisgXSBmYXN0L2ltYWdlcy93ZWJwLWFzLWltYWdlLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQogWyBCaWdTdXIrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
d2VicC1hcy1pbWFnZS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDZjZWI2OGZmODgxZjJlYWYyNzkxYTQwM2FhY2VkZjY1NDk4YTFj
ZDUuLmY0YzIxYjA3Nzk3NGNiZDBlNWRkMTdkZGZiMDliMDRiYzliN2E2ZjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00MTI5LDE2ICs0MTI5LDYgQEAg
d2Via2l0Lm9yZy9iLzE5MDQ3MiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRz
LWh0bWxjb2xsZWN0aW9uLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTkwNTIwIGVkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LXBhc3RlLWFjcm9zcy1zaGFkb3ctYm91bmRhcmllcy13aXRoLXN0eWxlLTIu
aHRtbCBbIENyYXNoIEZhaWx1cmUgXQogCi0jIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdp
bmRvd3MKLXdlYmdwdSBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13
ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMt
d2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJj
ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13
ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1y
ZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJn
cHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTkx
MTk0IGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZS5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5s
aW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZXMyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xOTExOTQgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5o
dG1sIFsgRmFpbHVyZSBdCkBAIC00NjY3LDQgKzQ2NTcsNCBAQCB3ZWJhbmltYXRpb25zL2FjY2Vs
ZXJhdGVkLXRyYW5zZm9ybS1hbmltYXRpb24tdG8tc2NhbGUtemVyby13aXRoLWltcGxpY2l0LWZy
b20tawogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFnLWFuZC1kcm9wLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZh
c3QvZm9ybXMvbnVtYmVyL251bWJlci1sMTBuLWlucHV0Lmh0bWwgWyBQYXNzIENyYXNoIF0KLWZh
c3QvZm9ybXMvbnVtYmVyL251bWJlci1zcGluYnV0dG9uLWluLW11bHRpLWNvbHVtbi5odG1sIFsg
UGFzcyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZmFzdC9mb3Jtcy9udW1i
ZXIvbnVtYmVyLXNwaW5idXR0b24taW4tbXVsdGktY29sdW1uLmh0bWwgWyBQYXNzIENyYXNoIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMzA2MDFkMmRjOTQ4NGJjNjJlNzg3YTBlNmQxMTY2MTFiMzgw
OWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw4ICswLDAgQEAKLQotUEFTUyBDcmVhdGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJpbmRHcm91cC4K
LVBBU1MgQ3JlYXRlIGFuZCB1c2UgbWFueSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGNvbXB1
dGUgcGFzcy4KLVBBU1MgQ3JlYXRlIGFuZCBhY2Nlc3MgYSB1bmlmb3JtLWJ1ZmZlciBpbiBhIEdQ
VUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRlIGFuZCBhY2Nlc3MgYSBzYW1wbGVkIHRleHR1cmUgaW4g
YSBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBhbmQgdXNlIG11bHRpcGxlIEdQVUJpbmRHcm91
cHMgaW4gYSBzaW5nbGUgZGlzcGF0Y2guCi1QQVNTIEJpbmQgYSBzaW5nbGUgR1BVQnVmZmVyIHdp
dGggZGlmZmVyZW50IG9mZnNldHMgaW4gZGlmZmVyZW50IEdQVUJpbmRHcm91cHMKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvYmluZC1ncm91cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3
NzEwMjUxMTAyZGRlN2Q0YTk2YzljMjZjZTNkNjgwNGFlMTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91
cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+Q3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3Vw
LjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0KLWNvbnN0IGJhc2ljQnVmZmVyU2hh
ZGVyID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZV9tYWlu
KGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCkpCi17Ci0gICAgKytidWZmZXJbMF07
Ci19Ci1gOwotCi1sZXQgYmFzaWNQaXBlbGluZTsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgdXNlIGEg
YmFzaWMgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZm
ZXJMYXlvdXRCaW5kaW5nID0gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmls
aXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZm
ZXIiCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoeyBiaW5kaW5nczogW2J1ZmZlckxheW91dEJpbmRpbmddIH0pOwotCi0g
ICAgY29uc3QgYmFzaWNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsK
LSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0geyBidWZmZXI6IGJhc2ljQnVmZmVyLCBzaXplOiA0
IH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHsgYmluZGluZzogMCwgcmVzb3VyY2U6
IGJ1ZmZlckJpbmRpbmcgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoeyBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXSB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0K
LSAgICBjb25zdCBiYXNpY1NoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
eyBjb2RlOiBiYXNpY0J1ZmZlclNoYWRlciB9KTsKLSAgICBiYXNpY1BpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQs
Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBiYXNpY1NoYWRl
ck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBl
bGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
cGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCld
KTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBiYXNpY0J1ZmZl
ci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgYmFzaWNCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdHNbMF0sIDEsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4gdG8g
c3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgdXNlIG1hbnkgR1BVQmlu
ZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21wdXRlIHBhc3MuIl0gPSBhc3luYyBkZXZpY2UgPT4gewot
ICAgIGNvbnN0IGJ1ZmZlckxheW91dEJpbmRpbmcgPSB7Ci0gICAgICAgIGJpbmRpbmc6IDAsCi0g
ICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgIHR5cGU6
ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJpbmRpbmdzOiBbYnVmZmVyTGF5b3V0Qmlu
ZGluZ10gfSk7Ci0KLSAgICBjb25zdCBiYXNpY0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
eyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9SRUFEIH0pOwotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7IGJ1ZmZlcjogYmFzaWNC
dWZmZXIsIHNpemU6IDQgfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0geyBiaW5kaW5n
OiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZyB9OwotCi0gICAgY29uc3QgbnVtR3JvdXBzID0g
MTAwMDsKLSAgICBsZXQgYmluZEdyb3VwcyA9IG5ldyBBcnJheShudW1Hcm91cHMpOwotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgbnVtR3JvdXBzOyArK2kpCi0gICAgICAgIGJpbmRHcm91cHNbaV0g
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsgbGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRp
bmdzOiBbYmluZEdyb3VwQmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotCi0gICAgbGV0IGogPSAwOwotICAg
IGZvciAoOyBqIDwgbnVtR3JvdXBzOyArK2opIHsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXBzW2pdKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7
Ci0gICAgfQotCi0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3Vs
dHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0g
ICAgYmFzaWNCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIGos
ICJTdG9yYWdlIGJ1ZmZlciBhY2Nlc3NlZCBzdWNjZXNzZnVsbHkgdGhyb3VnaCBtdWx0aXBsZSBi
aW5kIGdyb3Vwcy4iKTsKLX07Ci0KLWNvbnN0IHVuaWZvcm1CdWZmZXJTaGFkZXIgPSBgCi1bbnVt
dGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oY29uc3RhbnQgaW50
W10gdW5pZm9ybXMgOiByZWdpc3RlcihiMCksIGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MSkpCi17Ci0gICAgYnVmZmVyWzBdICs9IHVuaWZvcm1zWzBdOwotfQotYDsKLQotdGVzdHNb
IkNyZWF0ZSBhbmQgYWNjZXNzIGEgdW5pZm9ybS1idWZmZXIgaW4gYSBHUFVCaW5kR3JvdXAuIl0g
PSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5
QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5QnVm
ZmVyKS5zZXQoWzQyXSk7Ci0gICAgdW5pZm9ybUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
c3RvcmFnZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0g
ICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAg
IHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAi
dW5pZm9ybS1idWZmZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0g
ICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAg
ICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDog
YmluZEdyb3VwTGF5b3V0LAotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRp
bmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjog
dW5pZm9ybUJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICByZXNvdXJj
ZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAgICAgICAgICAg
ICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRH
cm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1CdWZmZXJTaGFk
ZXIgfSk7Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxp
bmUoewotICAgICAgICBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3Rh
Z2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50
cnlQb2ludDogImNvbXB1dGVfbWFpbiIKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25z
dCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBw
YXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7
Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcg
SW50MzJBcnJheShhd2FpdCBzdG9yYWdlQnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBzdG9y
YWdlQnVmZmVyLnVubWFwKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCA0MiwgIlN0
b3JhZ2UgYnVmZmVyIGJpbmRpbmcgd3JpdHRlbiB0byBzdWNjZXNzZnVsbHkuIik7Ci19OwotCi1j
b25zdCBzYW1wbGVkVGV4dHVyZVNoYWRlciA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29t
cHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihUZXh0dXJlMkQ8dWludD4gaW5wdXRUZXh0dXJlIDogcmVn
aXN0ZXIodDApLCBzYW1wbGVyIGlucHV0U2FtcGxlciA6IHJlZ2lzdGVyKHMxKSwgZGV2aWNlIHVp
bnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1MikpCi17Ci0gICAgb3V0cHV0WzBdID0gU2FtcGxlKGlu
cHV0VGV4dHVyZSwgaW5wdXRTYW1wbGVyLCBmbG9hdDIoMCwgMCkpOwotfQotYDsKLQotdGVzdHNb
IkNyZWF0ZSBhbmQgYWNjZXNzIGEgc2FtcGxlZCB0ZXh0dXJlIGluIGEgR1BVQmluZEdyb3VwLiJd
ID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBbdGV4dHVyZURhdGFCdWZmZXIsIHRleHR1
cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIH0pOwotICAgIG5ldyBVaW50MzJBcnJheSh0ZXh0
dXJlQXJyYXlCdWZmZXIpLnNldChbNDJdKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAg
ICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDogInJnYmE4dWludCIsCi0gICAg
ICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZ
X0RTVAotICAgIH0pOwotCi0gICAgY29uc3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAg
ICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09N
UFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH0sIHsK
LSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFk
ZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH0s
IHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDIsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVT
aGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgot
ICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwKLSAgICAgICAgYmlu
ZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6
IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAxLAotICAgICAgICAgICAgcmVzb3VyY2U6IGRldmljZS5jcmVhdGVTYW1wbGVyKHt9
KQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAyLAotICAgICAgICAgICAgcmVz
b3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IG91dHB1dEJ1ZmZlciwKLSAgICAgICAg
ICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTog
c2FtcGxlZFRleHR1cmVTaGFkZXIgfSk7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XSB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBl
bGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVT
dGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBl
bnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNv
bW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoewotICAgICAgICBidWZmZXI6IHRleHR1
cmVEYXRhQnVmZmVyLAotICAgICAgICByb3dQaXRjaDogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6
IDAKLSAgICB9LCB7IHRleHR1cmU6IHRleHR1cmUgfSwgdGV4dHVyZVNpemUpOwotCi0gICAgY29u
c3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAg
cGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEp
OwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBu
ZXcgVWludDMyQXJyYXkoYXdhaXQgb3V0cHV0QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBv
dXRwdXRCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAi
Q29ycmVjdCB2YWx1ZSBzYW1wbGVkIGZyb20gYSBib3VuZCAyRCB0ZXh0dXJlLiIpOwotfTsKLQot
Y29uc3QgY29tYm9TaGFkZXIgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlX21haW4oCi0gICAgVGV4dHVyZTJEPHVpbnQ+IGlucHV0VGV4dHVyZSA6IHJlZ2lz
dGVyKHQwLCBzcGFjZTApLCAKLSAgICBzYW1wbGVyIGlucHV0U2FtcGxlciA6IHJlZ2lzdGVyKHMw
LCBzcGFjZTEpLCAKLSAgICBjb25zdGFudCB1aW50W10gaW5wdXQgOiByZWdpc3RlcihiMCwgc3Bh
Y2UyKSwgCi0gICAgZGV2aWNlIHVpbnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1MCwgc3BhY2UzKSkK
LXsKLSAgICBvdXRwdXRbMF0gPSBpbnB1dFswXSArIFNhbXBsZShpbnB1dFRleHR1cmUsIGlucHV0
U2FtcGxlciwgZmxvYXQyKDAsIDApKTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIHVzZSBt
dWx0aXBsZSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGRpc3BhdGNoLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBjb25zdCBbdGV4dHVyZURhdGFCdWZmZXIsIHRleHR1cmVBcnJheUJ1ZmZl
cl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLkNPUFlfU1JDIH0pOwotICAgIG5ldyBVaW50MzJBcnJheSh0ZXh0dXJlQXJyYXlCdWZm
ZXIpLnNldChbMTddKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgdGV4dHVyZVNpemUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxIH07Ci0gICAg
Y29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAgICAgc2l6ZTogdGV4
dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDogInJnYmE4dWludCIsCi0gICAgICAgIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVAotICAgIH0p
OwotCi0gICAgY29uc3QgW2lucHV0QnVmZmVyLCBpbnB1dEFycmF5QnVmZmVyXSA9IGRldmljZS5j
cmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9S
TSB9KTsKLSAgICBuZXcgVWludDMyQXJyYXkoaW5wdXRBcnJheUJ1ZmZlcikuc2V0KFsyNV0pOwot
ICAgIGlucHV0QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0Ug
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgIGNvbnN0IGJnbDAgPSBkZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAg
ICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09N
UFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH1dCi0g
ICAgfSk7Ci0gICAgY29uc3QgYmdsMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewot
ICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAg
ICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTog
InNhbXBsZXIiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmdsMiA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAg
IGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01Q
VVRFLAotICAgICAgICAgICAgdHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9XQotICAg
IH0pOwotICAgIGNvbnN0IGJnbDMgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAg
ICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAg
dmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJz
dG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KQotCi0gICAgY29uc3QgYmcwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmdsMCwKLSAgICAgICAgYmlu
ZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6
IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKQotICAgICAgICB9XQotICAgIH0pOwotICAgIGNv
bnN0IGJnMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJnbDEs
Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAg
ICAgIHJlc291cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7fSkKLSAgICAgICAgfV0KLSAgICB9
KTsKLSAgICBjb25zdCBiZzIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5
b3V0OiBiZ2wyLAotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAs
Ci0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogaW5wdXRC
dWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9
XQotICAgIH0pOwotICAgIGNvbnN0IGJnMyA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAg
ICAgICBsYXlvdXQ6IGJnbDMsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmlu
ZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAgICAgYnVmZmVy
OiBvdXRwdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQot
ICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGNvbWJvU2hhZGVyIH0pOwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0
czogW2JnbDAsIGJnbDEsIGJnbDIsIGJnbDNdIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmUgPSBk
ZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgbGF5b3V0OiBwaXBlbGluZUxh
eW91dCwKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IHNoYWRl
ck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZSh7
Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsCi0gICAgICAgIHJvd1BpdGNoOiA0
LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH0sIHsgdGV4dHVyZTogdGV4dHVyZSB9LCB0
ZXh0dXJlU2l6ZSk7Ci0KLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7
Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJnMCk7Ci0gICAgcGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDEsIGJnMSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDIsIGJn
Mik7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDMsIGJnMyk7Ci0gICAgcGFzc0VuY29k
ZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0g
ICAgY29uc3QgcmVzdWx0cyA9IG5ldyBVaW50MzJBcnJheShhd2FpdCBvdXRwdXRCdWZmZXIubWFw
UmVhZEFzeW5jKCkpOwotICAgIG91dHB1dEJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0c1swXSwgNDIsICJDb3JyZWN0IHZhbHVlIHNhbXBsZWQgZnJvbSBhIGJvdW5kIDJE
IHRleHR1cmUuIik7Ci19OwotCi10ZXN0c1siQmluZCBhIHNpbmdsZSBHUFVCdWZmZXIgd2l0aCBk
aWZmZXJlbnQgb2Zmc2V0cyBpbiBkaWZmZXJlbnQgR1BVQmluZEdyb3VwcyJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBjb25zdCBudW1JbnB1dHMgPSA0OwotICAgIGNvbnN0IFt1bmlmb3JtQnVm
ZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXpl
OiA0ICogbnVtSW5wdXRzLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBu
ZXcgSW50MzJBcnJheSh3cml0ZUFycmF5QnVmZmVyKS5zZXQoWzEsIDIsIDMsIDM2XSk7Ci0gICAg
dW5pZm9ybUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewot
ICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRl
clN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAg
ICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5
OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIgotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgbGV0IGJpbmRHcm91cHMgPSBuZXcgQXJy
YXkobnVtSW5wdXRzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytpKSB7
Ci0gICAgICAgIGJpbmRHcm91cHNbaV0gPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAg
ICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICAgICAgYmluZGluZ3M6IFt7
Ci0gICAgICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgICAgICByZXNvdXJjZTog
ewotICAgICAgICAgICAgICAgICAgICBidWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0gICAgICAgICAg
ICAgICAgICAgIG9mZnNldDogaSAqIG51bUlucHV0cywKLSAgICAgICAgICAgICAgICAgICAgc2l6
ZTogNAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAg
ICBiaW5kaW5nOiAxLAotICAgICAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZTog
NAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dCi0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdW5pZm9ybUJ1
ZmZlclNoYWRlciB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNv
bXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAg
ICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwot
ICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygp
OwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IG51bUlucHV0czsgKytpKSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiaW5kR3JvdXBzW2ldKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgfQotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQgc3RvcmFnZUJ1ZmZlci5tYXBSZWFkQXN5bmMo
KSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5
LiIpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5n
bGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2
MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtY29s
b3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhU
TUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBs
ZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2Fu
dmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZDYwYjhkNWI2ZDZlYzZjOTRhYjM3ODBi
MjBjZGZiNTMzYzI0YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3Jl
ZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJibGVuZC1jb2xvci10cmlhbmds
ZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBp
cyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4
X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmVzdWx0
ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAg
ICAgICByZXN1bHQgPSBmbG9hdDQoLTEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSAyOgotICAgICAgICByZXN1bHQgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlc3VsdCA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9h
dDQoMCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwot
ICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2Rl
IH0pOwotCi0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbewotICAgICAgICBmb3JtYXQ6ICJiZ3Jh
OHVub3JtIiwKLSAgICAgICAgYWxwaGFCbGVuZDogewotICAgICAgICAgICAgc3JjRmFjdG9yOiAi
YmxlbmQtY29sb3IiLAotICAgICAgICAgICAgZHN0RmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAg
ICAgICAgICAgb3BlcmF0aW9uOiAiYWRkIgotICAgICAgICB9LAotICAgICAgICBjb2xvckJsZW5k
OiB7Ci0gICAgICAgICAgICBzcmNGYWN0b3I6ICJibGVuZC1jb2xvciIsCi0gICAgICAgICAgICBk
c3RGYWN0b3I6ICJibGVuZC1jb2xvciIsCi0gICAgICAgICAgICBvcGVyYXRpb246ICJhZGQiCi0g
ICAgICAgIH0sCi0gICAgICAgIHdyaXRlTWFzazogR1BVQ29sb3JXcml0ZS5BTEwKLSAgICB9XTsK
LQotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUs
IGRldmljZSwgY29sb3JTdGF0ZXMpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJh
c2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBwYXNzRW5jb2Rl
ci5zZXRCbGVuZENvbG9yKHsgcjogMCwgZzogMSwgYjogMCwgYTogMSB9KTsKLSAgICBlbmNvZGVC
YXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUgPSBk
ZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmlu
aXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVm
ZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+
UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNh
bnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVh
cmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Js
ZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIw
NmEwYTc1NmQ4Y2MwYmNlMTUzYTE5ZmY1MTJlNWNlM2M3MTNjMmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRy
aWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRy
aWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3Jy
ZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0i
YmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHBvc2l0aW9uQXR0cmlidXRlTnVtID0g
MDsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9h
dDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUo
MCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgke3Bvc2l0aW9uQXR0cmlidXRlTnVtfSkpIHsKLSAgICBWZXJ0ZXhPdXQgdk91
dDsKLSAgICB2T3V0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgdk91dC5jb2xvciA9IGZsb2F0
NCgwLCAwLjUsIDAsIDAuNSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQg
MAotewotICAgIHJldHVybiBjb2xvcjsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsg
Y29kZTogc2hhZGVyQ29kZSB9KTsKLQotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3sKLSAgICAg
ICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6IHsgZHN0RmFjdG9y
OiAib25lIiB9LAotICAgICAgICBjb2xvckJsZW5kOiB7IGRzdEZhY3RvcjogIm9uZSIgfQotICAg
IH1dOwotCi0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gewotICAgICAgICBpbmRl
eEZvcm1hdDogInVpbnQzMiIsCi0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAg
ICBzdHJpZGU6IDQgKiA0LAotICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAg
ICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246
IHBvc2l0aW9uQXR0cmlidXRlTnVtCi0gICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07
Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxl
LCBkZXZpY2UsIGNvbG9yU3RhdGVzLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgdmVydGV4RGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAtMSwgMSwg
MCwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAg
ICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZUJ1
ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXplOiB2ZXJ0ZXhEYXRhLmJ5dGVMZW5ndGgsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4RGF0YS5idWZmZXIpOwotCi0gICAgY29u
c3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hh
aW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbih7IGRldmljZTogZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIiB9KTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnQgPSB7Ci0gICAgICAg
IGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRW
aWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3Jl
IiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0KLSAgICB9
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVy
UGFzcyh7IGNvbG9yQXR0YWNobWVudHM6IFtjb2xvckF0dGFjaG1lbnRdIH0pOwotICAgIHBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHBhc3NFbmNvZGVyLmRyYXcoNCwg
MSwgMCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBwYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEw
YWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1
YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxp
dC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGMxOWVlZTQ2ZGRlOTJiZTZhOWNmZDUwNGIw
Y2E0MTc3Mjc4OGVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgc2hvd3MgYSBncmVlbiBtaXAgY2hhaW4gb24g
YSByZWQgYmFja2dyb3VuZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJjYW52YXMiKTsKLWRyYXdHcmVlbk1pcENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1j
b21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0
LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkMWJmNjQxN2VkZGFhOGU3OTZlMTc5NTlkNmQxMDczN2M1NjI5ZTczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkJsaXR0aW5nIFRleHR1cmUgVG8gVGV4dHVyZTwvdGl0bGU+Ci08bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IkJsaXQgb3BlcmF0aW9ucyBwb3B1bGF0ZSBhIHRleHR1cmUgY29ycmVj
dGx5IChhbGwgbWlwIGxldmVscykuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29t
bWFuZHMtdGV4dHVyZS10by10ZXh0dXJlLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVh
cmUgY2FudmFzIGJlbG93IHNob3dzIGEgZ3JlZW4gbWlwIGNoYWluIG9uIGEgcmVkIGJhY2tncm91
bmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Ci08Ym9k
eT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2Fu
dmFzMmQpIHsKLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6ICBjYW52
YXMyZC53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBjYW52YXMyZC5oZWlnaHQsCi0gICAgICAgIGRl
cHRoOiAgMgotICAgIH07Ci0KLSAgICAvLyBNaXBtYXAgY291bnQKLSAgICBsZXQgbWF4UmVzb2x1
dGlvbiA9IE1hdGgubWF4KGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGxl
dCBtaXBMZXZlbENvdW50ID0gTWF0aC5jZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0aW9uKSk7Ci0g
ICAgaWYgKG1pcExldmVsQ291bnQgPCAxKSBtaXBMZXZlbENvdW50ID0gMTsKLQotICAgIGNvbnN0
IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAg
ICAgbWlwTGV2ZWxDb3VudDogbWlwTGV2ZWxDb3VudCwKLSAgICAgICAgc2FtcGxlQ291bnQ6IDEs
Ci0gICAgICAgIGRpbWVuc2lvbjogIjJkIiwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIs
Ci0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNh
Z2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCAKLSAgICB9OwotCi0gICAgLy8g
Q3JlYXRlIHRleHR1cmUgYW5kIGFsc28gYWRkIHRoZSBkZXNjcmlwdG9yCi0gICAgY29uc3QgdGV4
dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICB0ZXh0
dXJlU2l6ZS5kZXB0aCA9IDE7Ci0gICAgdGV4dHVyZS5kZXNjcmlwdG9yID0gdGV4dHVyZURlc2Ny
aXB0b3I7Ci0KLSAgICAvLyBUZXh0dXJlIGRhdGEgCi0gICAgY29uc3QgY29udGV4dDJkID0gY2Fu
dmFzMmQuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQu
Z2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotCi0g
ICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBp
bWFnZURhdGEuZGF0YS5sZW5ndGgsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZ
X1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURQotICAgIH07Ci0gICAgY29uc3QgdGV4dHVy
ZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0
YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZVdyaXRlQXJyYXkgPSBu
ZXcgVWludDhBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVXcml0ZUFycmF5
LnNldChpbWFnZURhdGEuZGF0YSk7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGRhdGFDb3B5VmlldyA9IHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwKLSAgICAgICAgb2Zmc2V0OiAwLAotICAgICAgICByb3dQaXRjaDogY2FudmFzMmQud2lk
dGggKiA0LAotICAgICAgICBpbWFnZUhlaWdodDogY2FudmFzMmQud2lkdGggKiBjYW52YXMyZC5o
ZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAg
IHRleHR1cmU6IHRleHR1cmUsCi0gICAgICAgIG1pcExldmVsOiAwLAotICAgICAgICBhcnJheUxh
eWVyOiAwLAotICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgfTsKLQot
ICAgIGNvbnN0IGJsaXRDb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOwotICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGRhdGFDb3B5
VmlldywgdGV4dHVyZUNvcHlWaWV3LCB0ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtibGl0Q29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIHJldHVybiB0
ZXh0dXJlOwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IGNh
bnZhczJkICA9IGF3YWl0IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGNv
bnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0KLSAgICAvLyB0ZXh0
dXJlQSAobGF5ZXIgMCwgbWlwIDApOiBHcmVlbgotICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAn
cmdiKDAsIDI1NSwgMCknOwotICAgIGNvbnRleHQyZC5maWxsUmVjdCgwLCAwLCBjYW52YXMyZC53
aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBjb25zdCB0ZXh0dXJlQSA9IGF3YWl0IGxvYWRU
ZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFzMmQpOwotCi0gICAgLy8gdGV4dHVyZUIg
KGxheWVyIDAsIG1pcCAwKTogUmVkCi0gICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICdyZ2IoMjU1
LCAwLCAwKSc7Ci0gICAgY29udGV4dDJkLmZpbGxSZWN0KDAsIDAsIGNhbnZhczJkLndpZHRoLCBj
YW52YXMyZC5oZWlnaHQpOwotICAgIGNvbnN0IHRleHR1cmVCID0gYXdhaXQgbG9hZFRleHR1cmVG
cm9tQ2FudmFzMmQoZGV2aWNlLCBjYW52YXMyZCk7Ci0KLSAgICAvLyBDbGVhbiBjYW52YXMgdG8g
Ymx1ZQotICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDAsIDAsIDI1NSknOwotICAgIGNv
bnRleHQyZC5maWxsUmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsK
LQotICAgIC8vIFRlc3QgY29weVRleHR1cmVUb1RleHR1cmUKLQotICAgIGxldCBzaXplID0gT2Jq
ZWN0LmFzc2lnbih7fSwgdGV4dHVyZUEuZGVzY3JpcHRvci5zaXplKTsKLSAgICBsZXQgYmxpdENv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgZm9yICh2
YXIgaSA9IDE7IGkgPCB0ZXh0dXJlQS5kZXNjcmlwdG9yLm1pcExldmVsQ291bnQ7ICsraSkgewot
ICAgICAgICBzaXplLndpZHRoICA9IE1hdGgubWF4KE1hdGguZmxvb3Ioc2l6ZS53aWR0aCAvIDIp
LCAxKTsKLSAgICAgICAgc2l6ZS5oZWlnaHQgPSBNYXRoLm1heChNYXRoLmZsb29yKHNpemUuaGVp
Z2h0IC8gMiksIDEpOwotCi0gICAgICAgIGxldCBzcmNUZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAg
ICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQSwKLSAgICAgICAgICAgIG1pcExldmVsOiAwLAotICAg
ICAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAw
LCB6OiAwIH0KLSAgICAgICAgfTsKLSAgICAgICAgbGV0IGRzdFRleHR1cmVDb3B5VmlldyA9IHsK
LSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVBLAotICAgICAgICAgICAgbWlwTGV2ZWw6IGks
Ci0gICAgICAgICAgICBhcnJheUxheWVyOiAxLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6IDAs
IHk6IDAsIHo6IDAgfQotICAgICAgICB9OwotICAgICAgICAvLyBQb3B1bGF0ZSB0ZXh0dXJlQSAo
bGF5ZXIgMSwgbWlwIGkpCi0gICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRv
VGV4dHVyZShzcmNUZXh0dXJlQ29weVZpZXcsIGRzdFRleHR1cmVDb3B5Vmlldywgc2l6ZSk7Ci0K
LSAgICAgICAgc3JjVGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICAgICAgdGV4dHVyZTogdGV4
dHVyZUEsCi0gICAgICAgICAgICBtaXBMZXZlbDogaSwKLSAgICAgICAgICAgIGFycmF5TGF5ZXI6
IDEsCi0gICAgICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgICAgIH07
Ci0gICAgICAgIGRzdFRleHR1cmVDb3B5VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRl
eHR1cmVCLAotICAgICAgICAgICAgbWlwTGV2ZWw6IDAsCi0gICAgICAgICAgICBhcnJheUxheWVy
OiAwLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6IDAsIHk6IHNpemUuaGVpZ2h0LCB6OiAwIH0K
LSAgICAgICAgfTsKLSAgICAgICAgLy8gUG9wdWxhdGUgdGV4dHVyZUIgKGxheWVyIDAsIG1pcCAw
KSB3aXRoIHRleHR1cmVBIChsYXllciAxLCBtaXAgaSkKLSAgICAgICAgYmxpdENvbW1hbmRFbmNv
ZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHNyY1RleHR1cmVDb3B5VmlldywgZHN0VGV4dHVyZUNv
cHlWaWV3LCBzaXplKTsKLSAgICB9Ci0KLSAgICAvLyBSZW5kZXIgdGV4dHVyZUIgaW50byBjYW52
YXMyZAotCi0gICAgY29uc3QgaW1hZ2VEYXRhTGVuZ3RoSW5CeXRlcyA9IGNhbnZhczJkLndpZHRo
ICogY2FudmFzMmQuaGVpZ2h0ICogNDsKLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0gewot
ICAgICAgICBzaXplOiBpbWFnZURhdGFMZW5ndGhJbkJ5dGVzLAotICAgICAgICB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgIH07Ci0g
ICAgY29uc3QgYnVmZmVyQSA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5VmlldyA9IHsKLSAgICAgICAgYnVmZmVyOiBidWZmZXJB
LAotICAgICAgICByb3dQaXRjaDogY2FudmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhl
aWdodDogY2FudmFzMmQud2lkdGggKiBjYW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBj
b25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmVCCi0gICAg
fTsKLSAgICBibGl0Q29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlQ29w
eVZpZXcsIGJ1ZmZlckNvcHlWaWV3LCB0ZXh0dXJlQS5kZXNjcmlwdG9yLnNpemUpOwotCi0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtibGl0Q29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsK
LQotICAgIGNvbnN0IGFiID0gYXdhaXQgYnVmZmVyQS5tYXBSZWFkQXN5bmMoKQotICAgIGNvbnN0
IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFiKTsKLSAgICBjb25zdCByZXN1bHRJbWFn
ZURhdGEgPSBuZXcgSW1hZ2VEYXRhKGFycmF5LCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVp
Z2h0KTsKLQotICAgIGNvbnRleHQyZC5wdXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAw
KTsKLQotICAgIGJ1ZmZlckEuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBjYW52YXMyZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImNhbnZhcyIpOwotICAgIGRyYXdHcmVlbk1pcENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMyZCk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2JsaXQtY29tbWFuZHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3
OTZhMzc1N2U1NDI1ZGIwOGIxNDMyYWZlZWM2ZjQxM2NkOWRiNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21t
YW5kcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkJhc2ljIEJsaXR0aW5nPC90aXRsZT4K
LTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iQmxpdCBvcGVyYXRpb25zIGNvcHkgYSBncmVl
biBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtZXhwZWN0
ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBn
cmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxi
b2R5PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLQotY29uc3QgY2FudmFzMmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlKCkgewotICAgIGNvbnN0IGltYWdlID0gbmV3
IEltYWdlKCk7Ci0gICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDAucG5nIjsKLSAg
ICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgdGVzdChkZXZpY2UsIGltYWdlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAg
ICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRyYXdHcmVlblNx
dWFyZUluU29mdHdhcmUoY2FudmFzMmQpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9
KTsKLSAgICB9Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlLCBpbWFnZSkgewotICAg
IGNhbnZhczJkLndpZHRoID0gaW1hZ2Uud2lkdGg7Ci0gICAgY2FudmFzMmQuaGVpZ2h0ID0gaW1h
Z2UuaGVpZ2h0OwotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJk
Jyk7Ci0gICAgY29udGV4dDJkLmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7Ci0KLSAgICBjb25zdCBp
bWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndpZHRoLCBpbWFn
ZS5oZWlnaHQpOwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6
ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLkNPUFlfU1JDCi0gICAgfTsKLSAgICBidWZmZXJBID0gY3JlYXRlQnVmZmVyV2l0aERhdGEo
ZGV2aWNlLCBidWZmZXJEZXNjcmlwdG9yLCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAg
YnVmZmVyRGVzY3JpcHRvci51c2FnZSB8PSBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVDsKLSAgICBj
b25zdCBidWZmZXJCID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBidWZmZXJWaWV3QiA9IHsKLSAgICAgICAgYnVmZmVyOiBidWZmZXJCLAotICAgICAg
ICByb3dQaXRjaDogaW1hZ2Uud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAg
IH07Ci0KLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGltYWdlLndp
ZHRoLAotICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKLSAgICAgICAgZGVwdGg6IDEKLSAg
ICB9OwotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiB0ZXh0
dXJlU2l6ZSwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9
OwotICAgIGNvbnN0IHRleHR1cmVBID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3QSA9IHsgdGV4dHVyZTogdGV4dHVyZUEgfTsK
LQotICAgIGNvbnN0IHRleHR1cmVCID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3QiA9IHsgdGV4dHVyZTogdGV4dHVyZUIgfTsK
LQotICAgIGNvbnN0IHJlYWRCdWZmZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFn
ZURhdGEuZGF0YS5ieXRlTGVuZ3RoLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09Q
WV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgIH07Ci0gICAgY29uc3QgcmVhZEJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVhZEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHJlYWRCdWZmZXJWaWV3ID0gewotICAgICAgICBidWZmZXI6IHJlYWRCdWZmZXIsCi0gICAg
ICAgIHJvd1BpdGNoOiBpbWFnZS53aWR0aCAqIDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0g
ICAgfTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKCk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEs
IDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5ndGgpOwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4
dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVy
Vmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNv
cHlUZXh0dXJlVG9UZXh0dXJlKHRleHR1cmVWaWV3QSwgdGV4dHVyZVZpZXdCLCB0ZXh0dXJlU2l6
ZSk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmlld0Is
IHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIGJ1ZmZlckEuZGVzdHJveSgpOwot
ICAgIGJ1ZmZlckIuZGVzdHJveSgpOwotICAgIHRleHR1cmVBLmRlc3Ryb3koKTsKLSAgICB0ZXh0
dXJlQi5kZXN0cm95KCk7Ci0KLSAgICBjb25zdCByZXN1bHRDb250ZXh0ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKLQotICAgIGF3YWl0IHJlYWRC
dWZmZXIubWFwUmVhZEFzeW5jKCkudGhlbihhYiA9PiB7Ci0gICAgICAgIGNvbnN0IGFycmF5ID0g
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFiKTsKLSAgICAgICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRh
ID0gbmV3IEltYWdlRGF0YShhcnJheSwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAg
ICAgICAgcmVzdWx0Q29udGV4dC5wdXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsK
LQotICAgICAgICByZWFkQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB9KTsKLX0KLQotbG9hZEltYWdl
KCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9i
dWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIz
MDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1
YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVm
ZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVy
LWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEwYjVjMzhlNjRjZGEzMWRlYTNmMmNlYzRjNzgwZWI1MTAwMTRiOWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZl
ci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQ
VSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJX
ZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0
Y2giIGhyZWY9ImJ1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5odG1sIj4KLTxw
PlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxj
YW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9Impz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVy
Q29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXgg
VmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0MiB4eSA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQzIHJn
YiA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRp
b24gPSBmbG9hdDQoeHksIDAsIDEpOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQocmdiLCAxKTsK
LSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxv
YXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNv
bG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0g
ICAgcmV0dXJuIHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0
ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogMiwKLSAgICAgICAgICAgIGF0
dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDIiLAotICAgICAg
ICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9LCB7
Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiAzLAotICAgICAgICAgICAgc3RlcE1vZGU6ICJpbnN0
YW5jZSIsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9y
bWF0OiAiZmxvYXQzIiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMQotICAgICAg
ICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFNldFZl
cnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRpY2VzKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKQotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0
YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJheS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBkcmF3
QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwgdmVydGV4QnVm
ZmVyLCBjb2xvckJ1ZmZlcikgewotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgZW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHM6IFthdHRhY2htZW50XSB9KTsKLSAg
ICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXJd
LCBbMCwgMF0pOwotICAgIGVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIGVuY29k
ZXIuZHJhdygzLCAxLCAwLCAwKTsKLSAgICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dh
cENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1N
U0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKTsKLSAgICBjb25zdCBwaXBlbGlu
ZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGws
IHZlcnRleElucHV0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB1cHBlckxlZnRCdWZmZXIgPSBj
cmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBbLTEsIDEsIC0xLCAtMSwgMCwgMV0pOwot
ICAgIGNvbnN0IG1pZGRsZUJ1ZmZlciA9IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2Us
IFswLCAxLCAtMSwgLTEsIDEsIC0xXSk7Ci0gICAgY29uc3QgdXBwZXJSaWdodEJ1ZmZlciA9IGNy
ZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIFswLCAxLCAxLCAxLCAxLCAtMV0pOwotCi0g
ICAgY29uc3QgZ3JlZW4gPSBbMCwgMSwgMF07Ci0gICAgY29uc3QgYmx1ZSA9IFswLCAwLCAxXTsK
LSAgICBjb25zdCBncmVlbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShncmVlbik7Ci0gICAgY29u
c3QgYmx1ZUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShibHVlKTsKLQotICAgIGNvbnN0IGNvbG9y
QnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IGdyZWVuQXJyYXku
Ynl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURSB9LCBncmVlbkFycmF5LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCBhdHRhY2htZW50
ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5j
cmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJsb2FkIiwKLSAgICAgICAgc3Rv
cmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAxLCBnOiAwLCBiOiAwLCBh
OiAxIH0KLSAgICB9OwotCi0gICAgLyogbWFwV3JpdGVBc3luYyBzaG91bGQgcmVzb2x2ZSBhZnRl
ciBHUFUgY29tbWFuZHMgYXJlIGNvbXBsZXRlLCBzbyB0cmlhbmdsZSBzaG91bGQgYmUgZ3JlZW4u
ICovCi0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1l
bnQsIHVwcGVyTGVmdEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIGF3YWl0IGNvbG9yQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKS50aGVuKGFiID0+IHsKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShhYik7Ci0gICAgICAgIGFycmF5LnNldChibHVlKTsKLSAgICAgICAgY29sb3JC
dWZmZXIudW5tYXAoKTsKLSAgICB9KTsKLQotICAgIGF3YWl0IGNvbG9yQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKS50aGVuKGFiID0+IHsKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eShhYik7Ci0gICAgICAgIGFycmF5LnNldChncmVlbik7Ci0gICAgfSk7Ci0KLSAgICAvKiBjb2xv
ckJ1ZmZlciB0aGF0IGlzIHN0aWxsIG1hcHBlZCBzaG91bGQgYmUgbm90IHN1Ym1pdHRlZCB0byBk
cmF3IGEgYmx1ZSB0cmlhbmdsZS4gKi8KLSAgICBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNl
LCBwaXBlbGluZSwgYXR0YWNobWVudCwgdXBwZXJMZWZ0QnVmZmVyLCBjb2xvckJ1ZmZlcik7Ci0K
LSAgICAvKiBjb2xvckJ1ZmZlciBkb2VzIG5vdCBhY3R1YWxseSBjb250YWluICJncmVlbiIgYWdh
aW4gdW50aWwgdGhpcyBjYWxsLiAqLwotICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7Ci0KLSAgICAv
KiBXcml0aW5nIGRhdGEgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5vdCBhZmZl
Y3QgdGhlIHByZWNlZGluZyBkcmF3IGNhbGwuICovCi0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRz
KGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29sb3JCdWZmZXIp
OwotICAgIGF3YWl0IG1hcFdyaXRlRGF0YVRvQnVmZmVyKGNvbG9yQnVmZmVyLCBibHVlQXJyYXku
YnVmZmVyKTsKLQotICAgIC8qIGRlc3Ryb3kgcmlnaHQgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5v
dCBhZmZlY3QgdGhlIGRyYXcgY2FsbC4gKi8KLSAgICBhd2FpdCBtYXBXcml0ZURhdGFUb0J1ZmZl
cihjb2xvckJ1ZmZlciwgZ3JlZW5BcnJheS5idWZmZXIpOwotICAgIGRyYXdBbmRTdWJtaXRDb21t
YW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCB1cHBlclJpZ2h0QnVmZmVyLCBjb2xv
ckJ1ZmZlcik7Ci0gICAgdXBwZXJSaWdodEJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAgICAvKiBkcmF3
IGNvbW1hbmQgd2l0aCBhIGRlc3Ryb3llZCBidWZmZXIgc2hvdWxkIGZhaWwgKi8KLSAgICBjb2xv
ckJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlw
ZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwotCi0gICAgdXBw
ZXJMZWZ0QnVmZmVyLmRlc3Ryb3koKTsKLSAgICBtaWRkbGVCdWZmZXIuZGVzdHJveSgpOwotICAg
IHVwcGVyUmlnaHRCdWZmZXIuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXIt
ZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1ZWVhOWQ1MzMzNTNk
ODZjYmUwZGQyZWRkZjZkNjdjZGQ0MDdhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQ
VURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQg
YW5kIE1BUF9XUklURSB1c2FnZSEKLQotUEFTUyBHUFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdp
dGggYm90aCByZWFkLW9ubHkgYW5kIFNUT1JBR0UgdXNhZ2VzLgotUEFTUyB1bm1hcCBvbiBhbHJl
YWR5IHVubWFwcGVkLCBtYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0ZSBlcnJv
ci4KLVBBU1MgR1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3Qg
YmUgcmVtYXBwZWQuCi1QQVNTIEdQVUJ1ZmZlckRlc2NyaXB0b3Igd2l0aCBib3RoIE1BUF9SRUFE
IGFuZCBNQVBfV1JJVEUgdXNhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIFRvby1sYXJnZSBHUFVCdWZm
ZXJEZXNjcmlwdG9yIHNpemUgc2hvdWxkIGZhaWwgd2l0aCBvdXQtb2YtbWVtb3J5IGVycm9yLgot
UEFTUyBtYXBSZWFkQXN5bmMgb24gbm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4K
LVBBU1MgbWFwV3JpdGVBc3luYyBvbiBub24tTUFQX1dSSVRFIEdQVUJ1ZmZlciBzaG91bGQgZmFp
bC4KLVBBU1MgdW5tYXAgb24gbm9uLW1hcHBhYmxlIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBB
U1MgY3JlYXRlQnVmZmVyTWFwcGVkOiBub24tNC1ieXRlLWFsaWduZWQgR1BVQnVmZmVyRGVzcmlw
dG9yIHNpemUgc2hvdWxkIGZhaWwuCi1QQVNTIEFueSBtZXRob2QgY2FsbCBvbiBhbiBpbnZhbGlk
IEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgQW55IG1ldGhvZCBjYWxsIG9uIGEgZGVzdHJv
eWVkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2J1ZmZlci1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3Jz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTE0NTgzOWZmMzMwYjUwYzM4
NzNiMDA0NjE0YTIyM2Y5NTlmYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08dGl0bGU+VGVzdCBHUFVCdWZmZXIgRXJyb3JzLjwvdGl0bGU+Ci08Ym9keT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0
IHRlc3RzID0ge307Ci0KLXRlc3RzWyJHUFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdpdGggYm90
aCByZWFkLW9ubHkgYW5kIFNUT1JBR0UgdXNhZ2VzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRl
QnVmZmVyKHsKLSAgICAgICAgc2l6ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLklOREVYIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMg
fCBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0p
OwotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJ1bm1hcCBv
biBhbHJlYWR5IHVubWFwcGVkLCBtYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0
ZSBlcnJvci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8
Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8Ci0gICAgICAgICAgICBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuSU5ERVggfAot
ICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8Ci0gICAgICAgICAgICBHUFVCdWZm
ZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZh
bGlkYXRpb24iKTsKLSAgICBidWZmZXIudW5tYXAoKTsKLSAgICByZXR1cm4gcG9wTnVsbEVycm9y
KGRldmljZSk7Ci19OwotCi10ZXN0c1siR1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNyZWF0ZUJ1ZmZl
ck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBwZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IFtidWZmZXIsIF9d
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDQsIHVzYWdlOiAwIH0pOwotICAg
IC8vIFNob3VsZCBub3QgZmFpbC4KLSAgICBidWZmZXIudW5tYXAoKTsKLSAgICBhd2FpdCBwb3BO
dWxsRXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlv
biIpOwotICAgIC8vIFNob3VsZCBmYWlsLgotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIGF3YWl0
IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgLy8gU2hvdWxkIGZhaWwuCi0gICAgYnVmZmVyLm1hcFJlYWRB
c3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30p
OwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJH
UFVCdWZmZXJEZXNjcmlwdG9yIHdpdGggYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdl
IHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
IH0pOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3Rz
WyJUb28tbGFyZ2UgR1BVQnVmZmVyRGVzY3JpcHRvciBzaXplIHNob3VsZCBmYWlsIHdpdGggb3V0
LW9mLW1lbW9yeSBlcnJvci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNp
emU6IDk5OTk5OTk5OTk5LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTk9ORSB9KTsKLSAgICByZXR1
cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJtYXBSZWFkQXN5bmMgb24g
bm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7
Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6
IDQsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfAotICAgICAgICAg
ICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2Uu
Q09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAg
ICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFJl
YWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4g
e30pOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3Rz
WyJtYXBXcml0ZUFzeW5jIG9uIG5vbi1NQVBfV1JJVEUgR1BVQnVmZmVyIHNob3VsZCBmYWlsLiJd
ID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHsKLSAgICAgICAgc2l6ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwKLSAgICAgICAg
ICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0gICAgICAgICAg
ICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7IGFzc2VydF91bnJlYWNo
ZWQoKTsgfSkuY2F0Y2goZSA9PiB7fSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihk
ZXZpY2UpOwotfTsKLQotdGVzdHNbInVubWFwIG9uIG5vbi1tYXBwYWJsZSBHUFVCdWZmZXIgc2hv
dWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoewotICAgICAgICBzaXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qg
fAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAgICAgIEdQVUJ1
ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfAot
ICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0gICAgZGV2aWNl
LnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0gICAg
cmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbImNyZWF0ZUJ1
ZmZlck1hcHBlZDogbm9uLTQtYnl0ZS1hbGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRvciBzaXplIHNo
b3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2Nv
cGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTog
NSwgdXNhZ2U6IDAgfSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
fTsKLQotdGVzdHNbIkFueSBtZXRob2QgY2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91
bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICByZXR1cm4gYXNzZXJ0QWxsQnVmZmVy
TWV0aG9kc0ZhaWwoZGV2aWNlLCBidWZmZXIpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2QgY2Fs
bCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2Ug
PT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIuZGVzdHJveSgpOwotICAgIGF3YWl0IHBv
cE51bGxFcnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNG
YWlsKGRldmljZSwgYnVmZmVyKTsKLX07Ci0KLWNvbnN0IGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNG
YWlsID0gYXN5bmMgKGRldmljZSwgYnVmZmVyKSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4g
eyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIGF3YWl0IHBvcFZh
bGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxp
ZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0
X3VucmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9u
RXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZp
Y2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVm
ZmVyLmRlc3Ryb3koKTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19
OwotCi1ydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvY29sb3It
d3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cg
aXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJp
YW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRy
aWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmY2E1Y2Jk
ODMzOTdhMmU5NDFlMjA0NGVlOGY2ZGNiMzZjNmFlNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1h
c2stdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxs
byBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUg
Y29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhy
ZWY9ImNvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5Q
YXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2Fu
dmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNv
ZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQp
IDogU1ZfUG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAg
IGNhc2UgMDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAs
IDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9h
dDQoMSwgMSwgMSwgMSk7Ci19Ci1gCi0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTog
c2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1h
dDogImJncmE4dW5vcm0iLAotICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAgY29sb3JC
bGVuZDoge30sCi0gICAgICAgIHdyaXRlTWFzazogR1BVQ29sb3JXcml0ZS5HUkVFTiB8IEdQVUNv
bG9yV3JpdGUuQUxQSEEKLSAgICB9XTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2lj
UGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0
IGNvbG9yQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xl
YXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6
IDAsIGc6IDAsIGI6IDAsIGE6IDAgfQotICAgIH07Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbY29sb3JB
dHRhY2htZW50XSB9KTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBl
bGluZSk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVl
LnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
Y29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5k
LWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjA3
NDUwYzU4MTYwZWUzOTBiMzdhMDhkZjA0YmQ0YTAyOTgzN2FiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1
ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mg
Q3JlYXRlIGEgZGVmYXVsdCBHUFVDb21tYW5kRW5jb2Rlci4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Nv
bW1hbmQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGRlMTc1
Y2I3OWVlYThiOWUyZGExNTUzNGI2ODJhY2NiNzk1M2M3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZl
cnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoY29tbWFu
ZEVuY29kZXIgaW5zdGFuY2VvZiBHUFVDb21tYW5kRW5jb2RlciwgIlN1Y2Nlc3NmdWxseSBjcmVh
dGVkIEdQVUNvbW1hbmRFbmNvZGVyLiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwot
fSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEVuY29kZXIuIik7Ci0KLS8vIEZJWE1FOiBj
cmVhdGVDb21tYW5kRW5jb2RlciBzaG91bGQgdGFrZSBhIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvciwgd2hpY2ggaXMgY3VycmVudGx5IGFuIGVtcHR5IGRpY3Rpb25hcnkuCi08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5l
LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGlu
ZS1lcnJvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjVi
YmJiODgzNmZjN2ZiNjE1NDFmNGVlNmY4ZDg4YzdkZDQwYTViLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBp
cGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAK
LQotUEFTUyBDb21wdXRlIGNvbXBpbGF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5
IHBvaW50IHN0cmluZy4KLVBBU1MgQ29tcHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQu
Ci1QQVNTIE1TTCBwaXBlbGluZSBjcmVhdGlvbiBmYWlsZWQgZHVlIHRvIGludmFsaWQgR1BVU2hh
ZGVyTW9kdWxlLgotUEFTUyBNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNv
cnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21w
dXRlLXBpcGVsaW5lLWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
OTc1NDRkOTNjZTlkOTJmYzIzYzc3MDBiMjkyNWZlN2Q3OGE1MjVmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRl
LXBpcGVsaW5lLWVycm9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2Nv
cGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci1sZXQgZ29vZE1vZHVsZTsKLQot
dGVzdHNbIkNvbXB1dGUgY29tcGlsYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkg
cG9pbnQgc3RyaW5nLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBnb29kV0hMU0wg
PSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBfY29tcHV0ZV9tYWluKCkg
eyB9Ci1gOwotICAgIGdvb2RNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29k
ZTogZ29vZFdITFNMIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0KLSAgICBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgY29tcHV0
ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IGdvb2RNb2R1bGUsCi0gICAgICAgICAgICBl
bnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1
cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ29tcHV0ZSBwaXBl
bGluZSBjcmVhdGlvbiBzdWNjZWVkZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxl
OiBnb29kTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07
Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbnZhbGlkIEdQ
VVNoYWRlck1vZHVsZS4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYmFkTVNMID0g
YFRoaXMgY29kZSBzaG91bGQgbm90IGNvbXBpbGUuYDsKLQotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgibm9uZSIpOwotCi0gICAgY29uc3QgYmFkTVNMTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7IGNvZGU6IGJhZE1TTCB9KTsKLQotICAgIGF3YWl0IGRldmljZS5wb3BFcnJv
clNjb3BlKCk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLQot
ICAgIGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21wdXRlU3RhZ2U6
IHsKLSAgICAgICAgICAgIG1vZHVsZTogYmFkTVNMTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQ
b2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBw
b3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUgY3Jl
YXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5
bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBnb29kTVNMID0gYAota2VybmVsIHZvaWQgX2NvbXB1
dGVfbWFpbigpIHsgfQotYDsKLSAgICBjb25zdCBtc2xNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHsgY29kZTogZ29vZE1TTCB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0g
ICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBtc2xNb2R1bGUsCi0g
ICAgICAgICAgICBlbnRyeVBvaW50OiAiX2NvbXB1dGVfbWFpIgotICAgICAgICB9Ci0gICAgfSk7
Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi1ydW5UZXN0
c1dpdGhEZXZpY2UodGVzdHMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVm
ZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1z
dHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2Ug
RmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48
L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdH
cmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNDQyNGJlODY1MmU3YTZmYzY3ODdkMjM0MWEzN2JjMDRk
ZGY5OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDExNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2Fu
dmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNv
bXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotCi1jb25zdCBzaGFkZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAg
IGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJp
YnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCB1aW50IGlpZCA6IFNWX0luc3RhbmNlSUQpCi17Ci0gICAgVmVy
dGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotCi0gICAgaWYgKGlp
ZCA9PSAwKSB7Ci0gICAgICAgIHZPdXQucG9zaXRpb24ueiA9IDAuNTsKLSAgICAgICAgdk91dC5j
b2xvciA9IGZsb2F0NCgxLCAwLCAwLCAxKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2T3V0LmNv
bG9yID0gZmxvYXQ0KDAsIDEsIDAsIDEpOwotICAgIH0KLQotICAgIHJldHVybiB2T3V0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1gCi0KLWZ1bmN0aW9u
IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDQgeHl6dwotICAgICAgICAtMSwgMSwg
MCwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAg
ICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShk
ZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJheS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5kZXhGb3Jt
YXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3Ry
aWRlOiA0ICogNCwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAg
ICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0g
ICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH0KLX0KLQotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2
aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFz
LCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2Rl
OiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1
ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZl
cnRleElucHV0RGVzY3JpcHRvcigpOwotICAgIGNvbnN0IGRlcHRoU3RhdGVEZXNjcmlwdG9yID0g
Y3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVzY3JpcHRvcigpOwotICAgIGNvbnN0IHBpcGVsaW5lID0g
Y3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgdmVy
dGV4SW5wdXREZXNjcmlwdG9yLCBkZXB0aFN0YXRlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIGNvbnN0
IGJhc2ljQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xl
YXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6
IDEuMCwgZzogMCwgYjogMCwgYTogMS4wIH0KLSAgICB9OwotCi0gICAgY29uc3QgZGVwdGhBdHRh
Y2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBjcmVhdGVCYXNpY0RlcHRoVGV4dHVyZShj
YW52YXMsIGRldmljZSkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgZGVwdGhMb2FkT3A6
ICJjbGVhciIsCi0gICAgICAgIGRlcHRoU3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJE
ZXB0aDogMS4wCi0gICAgfTsKLQotICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MoewotICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbYmFzaWNBdHRhY2ht
ZW50XSwKLSAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogZGVwdGhBdHRhY2htZW50Ci0g
ICAgfSk7Ci0KLSAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0s
IFswXSk7Ci0gICAgZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgZW5jb2Rlci5k
cmF3KDQsIDIsIDAsIDApOwotICAgIGVuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMw
NDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNh
bnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52
YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRl
eGVkLXRyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlh
bmdsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIyMWIzYmQwNWFmMzlk
YjI4Zjc1NWYwODUwZDU2MWQxYmY3YWNhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xl
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3Rp
dGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRl
cnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImRyYXctaW5kZXhl
ZC10cmlhbmdsZXMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0
Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNvbG9y
IDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGdyZWVuIDogYXR0cmlidXRlKDEpKQot
ewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIGdyZWVuLCAwLCAxKTsKLSAgICByZXR1cm4gdk91dDsK
LX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmli
dXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5j
dGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQ0IHh5encsIGZsb2F0IGcKLSAg
ICAgICAgLTEsIDEsIDAsIDEsIDAsCi0gICAgICAgIC0xLCAxLCAwLCAxLCAxLAotICAgICAgICAt
MSwgLTEsIDAsIDEsIDAsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgMSwg
MCwgMSwgMCwKLSAgICAgICAgMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEsIDAs
Ci0gICAgICAgIDEsIC0xLCAwLCAxLCAxCi0gICAgXSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZl
cldpdGhEYXRhKGRldmljZSwgeyBzaXplOiB2ZXJ0ZXhBcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0sIHZlcnRleEFycmF5LmJ1ZmZlcik7Ci19Ci0KLWNvbnN0
IGluZGV4QnVmZmVyT2Zmc2V0ID0gMjA0ODsgLy8gVGVzdCBhIGJ1ZmZlciBvZmZzZXQgZm9yIGlu
ZGV4IGFycmF5LgotY29uc3QgaW5kZXhPZmZzZXQgPSAtOTAwMTsgLy8gVGVzdCBhIGJhc2UgaW5k
ZXggdG8gYWRkIHRvIGluZGV4IGFycmF5IHZhbHVlcy4KLQotZnVuY3Rpb24gY3JlYXRlSW5kZXhC
dWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3Qgb2Zmc2V0QXJyYXkgPSBbMSwgMywgNSwgMywgNSwg
N10ubWFwKHYgPT4geyByZXR1cm4gdiAtIGluZGV4T2Zmc2V0OyB9KTsKLSAgICBjb25zdCBpbmRl
eEFycmF5ID0gbmV3IFVpbnQzMkFycmF5KFsxLCAzLCA1LCAzLCA1LCA3XS5tYXAodiA9PiB7IHJl
dHVybiB2IC0gaW5kZXhPZmZzZXQ7IH0pKTsKLSAgICBjb25zdCBidWZmZXIgPSBjcmVhdGVCdWZm
ZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2aWNlLCAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHNp
emU6IGluZGV4QXJyYXkuYnl0ZUxlbmd0aCArIGluZGV4QnVmZmVyT2Zmc2V0LCAKLSAgICAgICAg
ICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5JTkRFWCAKLSAgICAgICAgfSwKLSAgICAgICAgaW5k
ZXhBcnJheS5idWZmZXIsCi0gICAgICAgIGluZGV4QnVmZmVyT2Zmc2V0Ci0gICAgKTsKLQotICAg
IHJldHVybiBidWZmZXI7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRv
cigpIHsKLSAgICByZXR1cm4gewotICAgICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAg
ICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiA1LAotICAgICAg
ICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIs
Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAKLSAgICAgICAgICAgIH0sIHsKLSAg
ICAgICAgICAgICAgICBvZmZzZXQ6IDQgKiA0LAotICAgICAgICAgICAgICAgIGZvcm1hdDogImZs
b2F0IiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMQotICAgICAgICAgICAgfV0K
LSAgICAgICAgfV0KLSAgICB9OwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0g
ICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUg
fSk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSk7
Ci0gICAgY29uc3QgaW5kZXhCdWZmZXIgPSBjcmVhdGVJbmRleEJ1ZmZlcihkZXZpY2UpOwotICAg
IGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmlj
ZSwgbnVsbCwgbnVsbCwgY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCksIG51bGwsICJ0cmlh
bmdsZS1saXN0Iik7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotCi0gICAgcGFzc0VuY29kZXIuc2V0SW5k
ZXhCdWZmZXIoaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBwYXNzRW5jb2Rl
ci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3SW5kZXhlZCg2
LCAxLCAwLCBpbmRleE9mZnNldCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwot
ICAgIHZlcnRleEJ1ZmZlci5kZXN0cm95KCk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICB0ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNj
b3Blcy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMt
dGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZTNmZDA4
ODk1N2VkM2Q0ZWJkODFkNDE4NjRhZmIyYmVmY2UzMDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10
ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBD
YXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlkYXRpb24gZXJyb3IuCi1QQVNTIENhcHR1cmUgYSBzaW5n
bGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3IuCi1QQVNTIElnbm9yZSBlcnJvcnMgcGFzdCB0aGUgZmly
c3QuCi1QQVNTIENhcHR1cmVkIGVycm9ycyBtYXRjaCBlcnJvciBzY29wZSBmaWx0ZXIuCi1QQVNT
IFJlamVjdCBwb3BFcnJvclNjb3BlIGlmIG5vIHNjb3BlIGV4aXN0cy4KLVBBU1MgRmlsdGVyICdu
b25lJyBzaG91bGQgY2FwdHVyZSBidXQgbm90IHJlcG9ydCBlcnJvcnMuCi1QQVNTIFB1c2ggYW5k
IHBvcCBtYW55IGVycm9yIHNjb3BlcyB3aXRoIG5vIHJlamVjdGlvbnMuCi1QQVNTIENhdGNoIG1h
bnkgZXJyb3JzIGluIG5lc3RlZCBzY29wZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNj
b3Blcy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZWIxMzk3Mjg2
MGYwZTkyZGIwZTM5MjFlZWI3NjBjMzVkNDBkMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08
Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotbGV0IHRlc3RzID0ge307Ci0KLXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlk
YXRpb24gZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0g
ICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhcHR1
cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4gewot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGNhdXNlTWVt
b3J5RXJyb3IoZGV2aWNlKTsKLSAgICByZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNlKTsKLX07
Ci0KLXRlc3RzWyJJZ25vcmUgZXJyb3JzIHBhc3QgdGhlIGZpcnN0LiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjYXVzZVZhbGlkYXRpb25FcnJv
cihkZXZpY2UpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgCi0gICAg
Y29uc3QgZXJyb3IgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotICAgIGFzc2VydFZh
bGlkYXRpb25FcnJvcihlcnJvcik7Ci0KLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7
Ci19OwotCi10ZXN0c1siQ2FwdHVyZWQgZXJyb3JzIG1hdGNoIGVycm9yIHNjb3BlIGZpbHRlci4i
XSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0
aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5Iik7Ci0gICAg
Y2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVsbCA9
IGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRCZU51
bGwpOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVz
dHNbIlJlamVjdCBwb3BFcnJvclNjb3BlIGlmIG5vIHNjb3BlIGV4aXN0cy4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7Ci0gICAgY29uc3QgcHJvbWlzZSA9IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhl
bigoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCksIGFzeW5jIGUgPT4gewotICAgICAgICBhc3NlcnRf
ZmFsc2UoZSA9PT0gdW5kZWZpbmVkKTsKLSAgICAgICAgLy8gUG9wIHRoZSBleHRyYSAnbm9uZScg
c2NvcGUuCi0gICAgICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotICAgIH0pOwotICAg
IC8vICdwcm9taXNlJyBzaG91bGQgc3RpbGwgcmVqZWN0IGlmIGEgc2NvcGUgaXMgcHVzaGVkIGhl
cmUuCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJub25lIik7Ci0gICAgcmV0dXJuIHByb21p
c2U7Ci19OwotCi10ZXN0c1siRmlsdGVyICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQgbm90IHJl
cG9ydCBlcnJvcnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgibm9uZSIp
OwotICAgIGNhdXNlTWVtb3J5RXJyb3IoZGV2aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVs
bCA9IGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRC
ZU51bGwpOwotCi0gICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNb
IlB1c2ggYW5kIHBvcCBtYW55IGVycm9yIHNjb3BlcyB3aXRoIG5vIHJlamVjdGlvbnMuIl0gPSBh
c3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IG51bUl0ZXJhdGlvbnMgPSAxMjg7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpCi0gICAgICAgIGRldmljZS5wdXNo
RXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIAotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgbnVtSXRlcmF0aW9ucyAtIDE7ICsraSkKLSAgICAgICAgYXdhaXQgcG9wTnVsbEVycm9yKGRl
dmljZSk7Ci0KLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1si
Q2F0Y2ggbWFueSBlcnJvcnMgaW4gbmVzdGVkIHNjb3Blcy4iXSA9IGFzeW5jIGRldmljZSA9PiB7
Ci0gICAgY29uc3QgbnVtSXRlcmF0aW9ucyA9IDEyODsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IG51bUl0ZXJhdGlvbnM7ICsraSkgewotICAgICAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZh
bGlkYXRpb24iKTsKLSAgICAgICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLSAgICB9
Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnMgLSAxOyArK2kpCi0gICAg
ICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIHBvcFZh
bGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsK
LQotLyogSGVscGVyIEZ1bmN0aW9ucyAqLwotCi1jb25zdCBjYXVzZVZhbGlkYXRpb25FcnJvciA9
IGRldmljZSA9PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotY29uc3QgY2F1
c2VNZW1vcnlFcnJvciA9IGRldmljZSA9PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogOTk5
OTk5OTk5OTksIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5OT05FIH0pOwotCi08L3NjcmlwdD4KLTwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NmIwZThhZmUyNTc2MGU5
MTFiOWY4ODZiY2IzYzU2NTNiMzJmMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBWZXJpZnkgZXhw
YW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250ZXh0Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDY5Mzg1MTEzYWMwZWU1YWI5Mjk2NDc1YTE5Yzk5ZDcxMzM3OTgxMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+RW5z
dXJlIGV4cGFuZG8gcHJvcGVydGllcyBhcmUgcHJlc2VydmVkIG9uIHRoZSBXZWJHUFUgY29udGV4
dC48L3RpdGxlPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBw
eDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGluaXRpYWxp
emUoKSB7Ci0gICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLSAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGN0eC5teVBy
b3BlcnR5ID0gMjsKLX0KLQotZnVuY3Rpb24gY29sbGVjdEdhcmJhZ2UoKSB7Ci0gICAgaWYgKHdp
bmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5HQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OwotICAgIGVsc2UgaWYgKHdpbmRvdy5nYykKLSAgICAgICAgZ2MoKTsKLSAgICBlbHNlIGlmICh3
aW5kb3cuJHZtKQotICAgICAgICB3aW5kb3cuJHZtLmdjKCk7Ci0gICAgLy8gJHZtIGlzIGV4cG9z
ZWQgaW4gV2ViS2l0J3MgTWluaUJyb3dzZXIgd2l0aCB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50
IHZhcmlhYmxlcyBzZXQ6Ci0gICAgLy8gICBleHBvcnQgSlNDX3VzZURvbGxhclZNPTEKLSAgICAv
LyAgIGV4cG9ydCBfX1hQQ19KU0NfdXNlRG9sbGFyVk09MQotfQotCi0vLyBGSVhNRTogSFRNTENh
bnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgiZ3B1Iikgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUKLS8v
IFdlYkdQVSBzcGVjLiBXaGVuIFdlYktpdCBpcyB1cGRhdGVkIHRvIHRyYWNrIHRoZSBjdXJyZW50
IHNwZWMsIHRoaXMKLS8vIHRlc3QgYW5kIHRoZSBiaW5kaW5ncyBzaG91bGQgYmUgdXBkYXRlZCB0
byBob25vciB0aGUgc3BlYydzCi0vLyBndWFyYW50ZWVzIGFib3V0IHByZXNlcnZpbmcgZXhwYW5k
byBwcm9wZXJ0aWVzIG9uIHZhcmlvdXMKLS8vIGludGVyZmFjZXMuCi1sZXQgdGVzdDEgPSBhc3lu
Y190ZXN0KCdWZXJpZnkgZXhwYW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQgb24gdGhlIFdl
YkdQVSBjb250ZXh0Jyk7Ci10ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIGluaXRpYWxpemUo
KTsKLSAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
Y29sbGVjdEdhcmJhZ2UoKTsKLSAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLSAgICAgICAgbGV0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCJn
cHUiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjdHgubXlQcm9wZXJ0eSwgMik7Ci0gICAgICAg
IHRlc3QxLmRvbmUoKTsKLSAgICB9KSwgMjAwKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xh
eW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNjk1NTNjYjhhYTcwMTU0NzBlZWFjMzRhMmNjZDk0YzMxYmM4MWE1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICsw
LDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGdldEJhc2ljRGV2aWNlKCkgewotICAgIGNvbnN0IGFkYXB0
ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKHsgcG93ZXJQcmVmZXJlbmNl
OiAibG93LXBvd2VyIiB9KTsKLSAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVl
c3REZXZpY2UoKTsKLSAgICByZXR1cm4gZGV2aWNlOwotfQotCi1mdW5jdGlvbiBkcmF3R3JlZW5N
aXBDaGFpbk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0g
InJnYigyNTUsIDAsIDApIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0gICAgbGV0IG1pcExldmVsQ291bnQgPSBNYXRo
LmNlaWwoTWF0aC5sb2cyKG1heFJlc29sdXRpb24pKTsKLSAgICBpZiAobWlwTGV2ZWxDb3VudCA8
IDEpIG1pcExldmVsQ291bnQgPSAxOwotCi0gICAgbGV0IHdpZHRoICA9IGNhbnZhcy53aWR0aDsK
LSAgICBsZXQgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKLSAgICBmb3IgKHZhciBpID0gMTsgaSA8
IG1pcExldmVsQ291bnQ7ICsraSkgewotICAgICAgICB3aWR0aCAgPSBNYXRoLm1heChNYXRoLmZs
b29yKHdpZHRoICAvIDIpLCAxKTsKLSAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5mbG9v
cihoZWlnaHQgLyAyKSwgMSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigwLCAy
NTUsIDApIjsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCBoZWlnaHQsIHdpZHRoLCBoZWln
aHQpOwotICAgIH0KLQotfQotCi1mdW5jdGlvbiBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoIjJkIik7Ci0gICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7Ci0gICAgY29udGV4
dC5maWxsUmVjdCgwLCAwLCA0MDAsIDQwMCk7Ci0gICAgY29udGV4dC5maWxsU3R5bGUgPSAid2hp
dGUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMTAwLCAxMDAsIDIwMCwgMjAwKTsKLX0KLQotZnVu
Y3Rpb24gZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRl
eHQuZmlsbFN0eWxlID0gImJsdWUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0
MDApOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gImJsYWNrIjsKLSAgICBjb250ZXh0LmZpbGxS
ZWN0KDEwMCwgMTAwLCAyMDAsIDIwMCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlblNxdWFyZUlu
U29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCcyZCcpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBj
b250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci19Ci0K
LWZ1bmN0aW9uIGRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcykg
ewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLQotICAgIGNv
bnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250ZXh0LmZpbGxSZWN0
KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBjb25zdCBudW1Db2x1
bW5zID0gNDsKLSAgICBjb25zdCBudW1Sb3dzID0gNDsKLSAgICBjb250ZXh0LmJlZ2luUGF0aCgp
OwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAgICBmb3IgKGxl
dCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7ICsreCkgewotICAgICAgICBmb3IgKGxldCB5ID0gMDsg
eSA8IG51bVJvd3M7ICsreSkgewotICAgICAgICAgICAgaWYgKCh4ICsgeSkgJSAyID09IDApCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5yZWN0KAotICAgICAgICAgICAgICAgICAgICB4ICogY2Fu
dmFzLndpZHRoIC8gbnVtQ29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAgeSAqIGNhbnZhcy5o
ZWlnaHQgLyBudW1Sb3dzLAotICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggLyBudW1D
b2x1bW5zLAotICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0IC8gbnVtUm93cwotICAg
ICAgICAgICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfQotICAgIGNvbnRleHQuZmlsbCgp
OwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSkgewot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHsgZGV2aWNlOiBkZXZpY2UsIGZvcm1hdDogImJn
cmE4dW5vcm0iIH0pOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY0RlcHRoU3RhdGVEZXNjcmlw
dG9yKCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGRlcHRoV3JpdGVFbmFibGVkOiB0cnVlLAot
ICAgICAgICBkZXB0aENvbXBhcmU6ICJsZXNzIgotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZUJhc2ljRGVwdGhUZXh0dXJlKGNhbnZhcywgZGV2aWNlKSB7Ci0gICAgY29uc3QgZGVwdGhTaXpl
ID0gewotICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGNhbnZh
cy5oZWlnaHQsCi0gICAgICAgIGRlcHRoOiAxCi0gICAgfTsKLQotICAgIHJldHVybiBkZXZpY2Uu
Y3JlYXRlVGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IGRlcHRoU2l6ZSwKLSAgICAgICAgZm9ybWF0
OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2Fn
ZS5PVVRQVVRfQVRUQUNITUVOVAotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY1Bp
cGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBjb2xvclN0YXRlcywgcGlwZWxpbmVMYXlvdXQs
IHZlcnRleElucHV0RGVzY3JpcHRvciwgZGVwdGhTdGF0ZURlc2NyaXB0b3IsIHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIikgewotICAgIGNvbnN0IHZlcnRleFN0YWdlRGVzY3Jp
cHRvciA9IHsKLSAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhfbWFpbiIgCi0gICAgfTsKLQotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2VEZXNj
cmlwdG9yID0gewotICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgZW50cnlQ
b2ludDogImZyYWdtZW50X21haW4iCi0gICAgfTsKLQotICAgIGlmICghY29sb3JTdGF0ZXMpIHsK
LSAgICAgICAgY29sb3JTdGF0ZXMgPSBbeyAKLSAgICAgICAgICAgIGZvcm1hdDogImJncmE4dW5v
cm0iLAotICAgICAgICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgICAgICBjb2xvckJsZW5k
OiB7fQotICAgICAgICB9XTsKLSAgICB9Ci0KLSAgICBpZiAoIXZlcnRleElucHV0RGVzY3JpcHRv
cikKLSAgICAgICAgdmVydGV4SW5wdXREZXNjcmlwdG9yID0geyB2ZXJ0ZXhCdWZmZXJzOiBbXSB9
OwotCi0gICAgY29uc3QgcGlwZWxpbmVEZXNjcmlwdG9yID0gewotICAgICAgICB2ZXJ0ZXhTdGFn
ZTogdmVydGV4U3RhZ2VEZXNjcmlwdG9yLAotICAgICAgICBmcmFnbWVudFN0YWdlOiBmcmFnbWVu
dFN0YWdlRGVzY3JpcHRvciwKLSAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHByaW1pdGl2ZVRv
cG9sb2d5LAotICAgICAgICBjb2xvclN0YXRlczogY29sb3JTdGF0ZXMsCi0gICAgICAgIHZlcnRl
eElucHV0OiB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IKLSAgICB9OwotCi0gICAgaWYgKHBpcGVsaW5l
TGF5b3V0KQotICAgICAgICBwaXBlbGluZURlc2NyaXB0b3IubGF5b3V0ID0gcGlwZWxpbmVMYXlv
dXQ7Ci0KLSAgICBpZiAoZGVwdGhTdGF0ZURlc2NyaXB0b3IpCi0gICAgICAgIHBpcGVsaW5lRGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RhdGVEZXNjcmlwdG9yOwotCi0gICAg
cmV0dXJuIGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGluZURlc2NyaXB0b3IpOwot
fQotCi1mdW5jdGlvbiBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNv
ZGVyKSB7Ci0gICAgY29uc3QgYmFzaWNBdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50
OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAg
ICAgICBsb2FkT3A6ICJjbGVhciIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAg
IGNsZWFyQ29sb3I6IHsgcjogMS4wLCBnOiAwLCBiOiAwLCBhOiAxLjAgfQotICAgIH07Ci0KLSAg
ICAvLyBGSVhNRTogRmxlc2ggb3V0IHRoZSByZXN0IG9mIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LiAKLSAgICByZXR1cm4gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRh
Y2htZW50cyA6IFtiYXNpY0F0dGFjaG1lbnRdIH0pOwotfQotCi1mdW5jdGlvbiBlbmNvZGVCYXNp
Y0NvbW1hbmRzKHJlbmRlclBhc3NFbmNvZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVy
KSB7Ci0gICAgaWYgKHZlcnRleEJ1ZmZlcikKLSAgICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgZGVzY3JpcHRvciwgZGF0YSwg
b2Zmc2V0ID0gMCkgewotICAgIGNvbnN0IG1hcHBlZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXJNYXBwZWQoZGVzY3JpcHRvcik7Ci0gICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJy
YXkobWFwcGVkQnVmZmVyWzFdKTsKLSAgICBkYXRhQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGRh
dGEpLCBvZmZzZXQpOwotICAgIG1hcHBlZEJ1ZmZlclswXS51bm1hcCgpOwotICAgIHJldHVybiBt
YXBwZWRCdWZmZXJbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIG1hcFdyaXRlRGF0YVRvQnVmZmVy
KGJ1ZmZlciwgZGF0YSwgb2Zmc2V0ID0gMCkgewotICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdh
aXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB3cml0ZUFycmF5ID0gbmV3IFVp
bnQ4QXJyYXkoYXJyYXlCdWZmZXIpOwotICAgIHdyaXRlQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5
KGRhdGEpLCBvZmZzZXQpOwotICAgIGJ1ZmZlci51bm1hcCgpOwotfQotCi0vKioqIEZ1bmN0aW9u
cyBiZWxvdyB0aGlzIGxpbmUgcmVxdWlyZSBXUFQgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3RoYXJu
ZXNzcmVwb3J0LmpzLiAqKiovCi0KLWZ1bmN0aW9uIHJ1blRlc3RzV2l0aERldmljZSh0ZXN0cykg
ewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgdmFyIGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNl
KCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogV2ViR1BVIGlzIG5vdCBzdXBwb3J0ZWQuICov
IH0KLSAgICAKLSAgICAgICAgZm9yIChsZXQgbmFtZSBpbiB0ZXN0cykgewotICAgICAgICAgICAg
aWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICBkZXZpY2VQcm9taXNl
VGVzdChkZXZpY2UsIHRlc3RzW25hbWVdLCBuYW1lKTsKLSAgICAgICAgfQotICAgIH0pOwotfQot
Ci1mdW5jdGlvbiBkZXZpY2VQcm9taXNlVGVzdChkZXZpY2UsIGZ1bmMsIG5hbWUpIHsKLSAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICBpZiAoZGV2aWNlID09PSB1bmRlZmlu
ZWQpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVy
biBmdW5jKGRldmljZSk7Ci0gICAgfSwgbmFtZSk7Ci19OwotCi0vLyBBc3NlcnRpbmcgZXJyb3Jz
LgotCi1jb25zdCBwb3BWYWxpZGF0aW9uRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9y
U2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydFZhbGlkYXRpb25FcnJvcihlcnJvcikpOwotY29u
c3QgcG9wTWVtb3J5RXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVu
KGVycm9yID0+IGFzc2VydE1lbW9yeUVycm9yKGVycm9yKSk7Ci1jb25zdCBwb3BOdWxsRXJyb3Ig
PSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydE51
bGwoZXJyb3IpKTsKLWNvbnN0IGFzc2VydE51bGwgPSBlcnJvciA9PiB7Ci0gICAgbGV0IGFzc2Vy
dGlvbk1zZyA9ICJObyBlcnJvciBleHBlY3RlZCEiOwotICAgIGlmIChlcnJvciAmJiBlcnJvci5t
ZXNzYWdlKQotICAgICAgICBhc3NlcnRpb25Nc2cgKz0gIiBHb3Q6ICIgKyBlcnJvci5tZXNzYWdl
OwotICAgIGFzc2VydF90cnVlKGVycm9yID09PSBudWxsLCBhc3NlcnRpb25Nc2cpOwotfTsKLWNv
bnN0IGFzc2VydFZhbGlkYXRpb25FcnJvciA9IGVycm9yID0+IHsKLSAgICBsZXQgYXNzZXJ0aW9u
TXNnID0gIkV4cGVjdGVkIHZhbGlkYXRpb24gZXJyb3I6ICI7Ci0gICAgaWYgKGVycm9yICYmIGVy
cm9yLm1lc3NhZ2UpCi0gICAgICAgIGFzc2VydGlvbk1zZyArPSBlcnJvci5tZXNzYWdlOwotICAg
IGFzc2VydF90cnVlKGVycm9yIGluc3RhbmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yLCBhc3NlcnRp
b25Nc2cpOwotfTsKLWNvbnN0IGFzc2VydE1lbW9yeUVycm9yID0gZXJyb3IgPT4gYXNzZXJ0X3Ry
dWUoZXJyb3IgaW5zdGFuY2VvZiBHUFVPdXRPZk1lbW9yeUVycm9yLCAiRXhwZWN0ZWQgb3V0LW9m
LW1lbW9yeSBlcnJvciEiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVh
ZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZm
ZXJzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiYjYyNGRj
ODAzNzUwNzRjNmEwNWE4ODNmNWFkMGIzYzYzNmRkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVy
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1DT05TT0xFIE1F
U1NBR0U6IEdQVUJ1ZmZlci5tYXBSZWFkQXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi1DT05T
T0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9u
IQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFsaWQgb3Bl
cmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFs
aWQgb3BlcmF0aW9uIQotCi1QQVNTIG1hcFJlYWRBc3luYywgdW5tYXAsIGFuZCBkZXN0cm95IG9u
IGEgR1BVQnVmZmVyLgotUEFTUyBHUFVCdWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVyIGNy
ZWF0ZWQgdmlhIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQuCi1QQVNTIFJlamVjdCBhIG1h
cCByZWFkIG9uIGEgYnVmZmVyIG5vdCBjcmVhdGVkIHdpdGggTUFQX1JFQUQgdXNhZ2UuCi1QQVNT
IFJlamVjdCBhIG1hcCByZWFkIG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEg
cGVuZGluZyBtYXAgcmVhZCBpZiBHUFVCdWZmZXIgaXMgdW5tYXBwZWQuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhMTYzYTI3OGQyYTM4Njg2YWUzYzZhN2Y0NDZjOTEwMzgyNDQ4NzE1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAt
cmVhZC1idWZmZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGVC
dWZmZXJNYXBwZWQgYW5kIG1hcFJlYWRBc3luYyBvbiBhIEdQVUJ1ZmZlci48L3RpdGxlPgotPGJv
ZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIC8vIEJhc2ljIG1hcFJlYWRBc3lu
YyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJu
IGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYnVm
ZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyIHJldHVybmVkIGEgR1BVQnVm
ZmVyIik7Ci0KLSAgICAgICAgICAgIGxldCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBS
ZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVyIGluc3RhbmNl
b2YgQXJyYXlCdWZmZXIsICJmaXJzdCBtYXBSZWFkQXN5bmMgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5
Iik7Ci0KLSAgICAgICAgICAgIGNvbnN0IHJlYWRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJy
YXlCdWZmZXIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkQXJyYXlbMF0sIDAsICJz
dWNjZXNzZnVsbHkgYWNjZXNzIGEgdmFsdWUgZnJvbSBhIG1hcCByZWFkIik7Ci0KLSAgICAgICAg
ICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVy
Lm1hcFJlYWRBc3luYygpOyAvLyBUaGlzIHdpbGwgZXZlbnR1YWxseSByZWplY3QgZHVlIHRvIGJ1
ZmZlci5kZXN0cm95KCkKLQotICAgICAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKLQotICAgICAg
ICAgICAgYXdhaXQgcHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRlc3Ryb3llZCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+
IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJtYXBS
ZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBvbiBhIEdQVUJ1ZmZlci4iKTsKLQotICAgIC8v
IEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQKLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewot
ICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVyUmVzdWx0ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
ck1hcHBlZCh7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0g
ICAgICAgICAgICBjb25zdCBidWZmZXIgPSBidWZmZXJSZXN1bHRbMF07Ci0gICAgICAgICAgICBj
b25zdCBhcnJheUJ1ZmZlciA9IGJ1ZmZlclJlc3VsdFsxXTsKLQotICAgICAgICAgICAgYXNzZXJ0
X3RydWUoYnVmZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJl
dHVybmVkIGEgR1BVQnVmZmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZl
ciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJldHVybmVkIGFu
IEFycmF5QnVmZmVyIik7Ci0KLSAgICAgICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYXJyYXkuc2V0KFsxLCAyLCAzLCA0XSk7Ci0K
LSAgICAgICAgICAgIC8vIEJ1ZmZlciBzaG91bGQgYWxyZWFkeSBiZSAibWFwcGVkIi4KLSAgICAg
ICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJHUFVCdWZmZXIgY3JlYXRlZCB2aWEgR1BVQnVmZmVy
TWFwcGVkIGNhbm5vdCBiZSBtYXBwZWQgdW50aWwgYWZ0ZXIgZmlyc3QgdW5tYXAhIik7Ci0gICAg
ICAgICAgICB9LCAoKSA9PiB7fSk7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgICAgICAgICAvLyBCdWZmZXIgc2hvdWxkIG5vdCBiZSByZS1tYXBwYWJsZSBmb3Igd3JpdGVz
LgotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVk
IHdpdGggTUFQX1dSSVRFISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotCi0gICAgICAg
ICAgICAvLyBSZWFkIHJlc3VsdHMgb2Ygb3JpZ2luYWwgd3JpdGVzLgotICAgICAgICAgICAgbGV0
IHJlc3VsdEFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgICAg
ICAgICAgY29uc3QgcmVzdWx0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdEFycmF5QnVm
ZmVyKTsKLSAgICAgICAgICAgIHJlc3VsdEFycmF5LmZvckVhY2goKHYsIGkpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIGFycmF5W2ldLCAiU3VjY2Vzc2Z1bGx5IG1hcC1y
ZWFkIHZhbHVlIHdyaXR0ZW4gdG8gR1BVQnVmZmVyIG1hcHBlZCBvbiBjcmVhdGlvbiIpOwotICAg
ICAgICAgICAgfSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsK
LSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJHUFVCdWZmZXIu
bWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVyIGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVhdGVCdWZm
ZXJNYXBwZWQuIik7Ci0KLSAgICAvKiBCYXNpYyB2YWxpZGF0aW9uICovCi0gICAgLy8gRklYTUU6
IFRlc3QgaW52YWxpZCBjb21iaW5hdGlvbnMgb2YgR1BVQnVmZmVyVXNhZ2UgYWZ0ZXIgaW1wbGVt
ZW50aW5nIGVycm9yIGhhbmRsaW5nLgotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAg
ICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAx
NiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLQotICAgICAgICAgICAgYXdh
aXQgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCEiKTsK
LSAgICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIH0pOwotICAgIH0sICJSZWplY3QgYSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBub3QgY3JlYXRl
ZCB3aXRoIE1BUF9SRUFEIHVzYWdlLiIpOwotCi0gICAgLyogRXh0ZW5kZWQgdW5tYXAvZGVzdHJv
eSBhbmQgcHJvbWlzZSBzZXR0bGluZyB0ZXN0aW5nICovCi0KLSAgICBwcm9taXNlX3Rlc3QoKCkg
PT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9u
KGRldmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICAg
ICAgICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICAgICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdh
aXQgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoIk1hcCBvcGVyYXRpb24gd2FzIGludmFsaWQhIik7IC8vIGJ1ZmZlciB3
YXMgc3RpbGwgaW4gbWFwcGVkIHN0YXRlIGR1cmluZyBwcm9taXNlIGNyZWF0aW9uCi0gICAgICAg
ICAgICB9LCAoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsK
LSAgICB9LCAiUmVqZWN0IGEgbWFwIHJlYWQgb24gYSBtYXBwZWQgR1BVQnVmZmVyLiIpOwotCi0g
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCku
dGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEIH0pOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFJlYWRB
c3luYygpOwotICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgICAgIGF3YWl0
IHByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgi
QnVmZmVyIHdhcyB1bm1hcHBlZCEiKTsgLy8gYnVmZmVyIHdhcyB1bm1hcHBlZCwgd2hpY2ggcmVq
ZWN0cyBwZW5kaW5nIHByb21pc2VzCi0gICAgICAgICAgICB9LCgpID0+IHt9KTsKLSAgICAgICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJSZWplY3QgYSBwZW5kaW5nIG1h
cCByZWFkIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVzdHMoKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0
ZS1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVm
ZmVycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZGQ5NTEw
N2YyYmUxOWVhZDhhMTVhYmExMmQ1MjEyNTcwNzE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZm
ZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBHUFVCdWZmZXIubWFwV3JpdGVBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNP
TlNPTEUgTUVTU0FHRTogR1BVQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTogSW52YWxpZCBvcGVyYXRp
b24hCi0KLVBBU1MgTWFwIHdyaXRlLCB1bm1hcCwgYW5kIGRlc3Ryb3kgYSBHUFVCdWZmZXIuCi1Q
QVNTIFJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9X
UklURSB1c2FnZS4KLVBBU1MgUmVqZWN0IGEgbWFwIHdyaXRlIG9uIGEgbWFwcGVkIEdQVUJ1ZmZl
ci4KLVBBU1MgUmVqZWN0IGEgcGVuZGluZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFw
cGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWNmZDlmNTJjNzViNjU4YWRmMjZhNTk2YjAxZGMzNjUw
NDQzNTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsODcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRp
dGxlPlRlc3RzIGZvciBtYXBXcml0ZUFzeW5jIG9uIGEgR1BVQnVmZmVyLjwvdGl0bGU+Ci08Ym9k
eT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgLy8gQmFzaWMgbWFwV3JpdGVBc3lu
YyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJu
IGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1
ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZlciwgImNyZWF0ZUJ1ZmZlciByZXR1cm5lZCBhIEdQVUJ1
ZmZlciIpOwotCi0gICAgICAgICAgICBsZXQgYXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFw
V3JpdGVBc3luYygpOwotCi0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0
YW5jZW9mIEFycmF5QnVmZmVyLCAiZmlyc3QgbWFwV3JpdGVBc3luYyByZXNvbHZlZCBzdWNjZXNz
ZnVsbHkiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFycmF5WzBd
LCAwLCAibWFwV3JpdGVBc3luYyB6ZXJvZWQgb3V0IHN0b3JhZ2UiKTsKLSAgICAgICAgICAgIGFy
cmF5LnNldChbMSwgMiwgMywgNF0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBidWZmZXIu
dW5tYXAoKTsKLQotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7IC8vIFRoaXMgd2lsbCBldmVudHVhbGx5IHJlamVjdCBkdWUgdG8gYnVmZmVyLmRlc3Ry
b3koKQotCi0gICAgICAgICAgICBidWZmZXIuZGVzdHJveSgpOwotCi0gICAgICAgICAgICBhd2Fp
dCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
IkJ1ZmZlciB3YXMgZGVzdHJveWVkISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAg
ICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIk1hcCB3cml0ZSwgdW5t
YXAsIGFuZCBkZXN0cm95IGEgR1BVQnVmZmVyLiIpOwotCi0gICAgLyogQmFzaWMgdmFsaWRhdGlv
biAqLwotICAgIC8vIEZJWE1FOiBUZXN0IGludmFsaWQgY29tYmluYXRpb25zIG9mIEdQVUJ1ZmZl
clVzYWdlIGFmdGVyIGltcGxlbWVudGluZyBlcnJvciBoYW5kbGluZy4KLQotICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMg
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsK
LQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVk
IHdpdGggTUFQX1dSSVRFISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBv
biBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSB1c2FnZS4iKTsKLQotICAgIC8q
IEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kgYW5kIHByb21pc2Ugc2V0dGxpbmcgdGVzdGluZyAqLwot
Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNl
KCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURSB9KTsKLQotICAgICAgICAgICAgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLSAgICAgICAgICAgIH0s
ICgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJNYXAgb3BlcmF0aW9uIHdh
cyBpbnZhbGlkISIpOyAvLyBidWZmZXIgd2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0ZSBkdXJpbmcg
cHJvbWlzZSBjcmVhdGlvbgotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBvbiBh
IG1hcHBlZCBHUFVCdWZmZXIuIik7Ci0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAg
ICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewot
ICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotCi0gICAgICAgICAgICBjb25z
dCBwcm9taXNlID0gYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICAgICAgICAgIGJ1ZmZlci51
bm1hcCgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQhIik7IC8vIGJ1
ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNoIHJlamVjdHMgcGVuZGluZyBwcm9taXNlcwotICAgICAg
ICAgICAgfSwoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsK
LSAgICB9LCAiUmVqZWN0IGEgcGVuZGluZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFw
cGVkLiIpOwotfQotCi1ydW5UZXN0cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk2NTZlYjZhYmYwZDVhMTkzMDEzN2E2YjIxYWQ1YmI0YWViMDA0
YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNCArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci4KLVBBU1MgQ3JlYXRlIGEgYmFzaWMgR1BVUGlwZWxpbmVMYXlvdXQgd3RpaCBh
IEdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxh
eW91dHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMmI3OThlYTY0Y2JhNDNlYmIwMmNmMjliMzhj
MmY4YTg3NDIzNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTx0aXRsZT5DcmVhdGUgR1BVQmluZEdyb3VwTGF5b3V0LjwvdGl0bGU+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rp
b24gY3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpIHsKLSAgICByZXR1cm4gewotICAgICAg
ICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVO
VCB8IEdQVVNoYWRlclN0YWdlLlZFUlRFWCwKLSAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVy
IgotICAgIH07Ci19Ci0KLXRlc3QoKCkgPT4gewotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7IGJpbmRpbmdzOiBbY3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpXSB9
OwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGlu
Z3NbMF0udmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULCAwKTsKLSAgICBhc3Nl
cnRfbm90X2VxdWFscyhiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzWzBdLnZpc2li
aWxpdHkgJiBHUFVTaGFkZXJTdGFnZS5WRVJURVgsIDApOwotICAgIGFzc2VydF9lcXVhbHMoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5iaW5kaW5nc1swXS50eXBlLCAic3RvcmFnZS1idWZmZXIi
KTsKLX0sICJDcmVhdGUgYSBiYXNpYyBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLiIpOyAK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtjcmVhdGVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nKCldIH0pOwotICAgICAgICBhc3NlcnRfdHJ1ZShiaW5kR3JvdXBMYXlvdXQgaW5z
dGFuY2VvZiBHUFVCaW5kR3JvdXBMYXlvdXQsICJjcmVhdGVCaW5kR3JvdXBMYXlvdXQgcmV0dXJu
ZWQgYSBHUFVCaW5kR3JvdXBMYXlvdXQiKTsKLQotICAgICAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5k
R3JvdXBMYXlvdXRdIH0pOwotICAgICAgICBhc3NlcnRfdHJ1ZShwaXBlbGluZUxheW91dCBpbnN0
YW5jZW9mIEdQVVBpcGVsaW5lTGF5b3V0LCAiY3JlYXRlUGlwZWxpbmVMYXlvdXQgcmV0dXJuZWQg
YSBHUFVQaXBlbGluZUxheW91dCIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwg
IkNyZWF0ZSBhIGJhc2ljIEdQVVBpcGVsaW5lTGF5b3V0IHd0aWggYSBHUFVEZXZpY2UuIik7Ci08
L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1j
cmVhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24t
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGVjMjM3NmY3NmI1
NmFlYzBjNWQ0NDUwMjA4NGQ3ZTM5OGQ4YWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBnZXRRdWV1ZSgp
IG9uIEdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3F1ZXVlLWNy
ZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5NWE2Y2M3MDIwY2E5ZTZkZjFkY2MzYWJjZTc1
M2JhZTU5YjBhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0
aXRsZT5HZXQgdGhlIEdQVURldmljZSBhbmQgYXNrIGZvciB0aGUgR1BVUXVldWU8L3RpdGxlPgot
PGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLQotJ3VzZSBzdHJpY3QnOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Ci0gICAg
YXNzZXJ0X25vdF9lcXVhbHMobmF2aWdhdG9yLmdwdSwgdW5kZWZpbmVkLCAibmF2aWdhdG9yLmdw
dSBleGlzdHMiKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKS5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBhc3NlcnRfdHJ1ZShjb250ZXh0IGlu
c3RhbmNlb2YgR1BVQ2FudmFzQ29udGV4dCwgImdldENvbnRleHQgcmV0dXJuZWQgYSBHUFVDYW52
YXNDb250ZXh0LiIpOwotCi0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUo
KTsKLSAgICAgICAgYXNzZXJ0X3RydWUocXVldWUgaW5zdGFuY2VvZiBHUFVRdWV1ZSwgImdldFF1
ZXVlIHJldHVybmVkIGEgR1BVUXVldWUuIik7Ci0KLSAgICAgICAgcXVldWUubGFiZWwgPSAiRXhh
bXBsZSBsYWJlbCI7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocXVldWUubGFiZWwsICJFeGFtcGxl
IGxhYmVsIiwgInF1ZXVlLmxhYmVsIHdhcyBzZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgfSk7Ci19LCAiZ2V0UXVldWUoKSBvbiBHUFVEZXZpY2UuIik7Ci0KLTwvc2NyaXB0PgotPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29k
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNv
ZGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMzU3OWM0
YTk0OTMxYzFhYjg1NGVmNDFiOWE0ZDQ3YzA4OWQ2MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5k
LWVuY29kaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIEdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2Rpbmcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTQ4YjZlNDMyNTYzZjI4NTBlMDFjOWU4N2M0
OTNhOThkNzIyZDZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPHRpdGxlPkdldCB0aGUgR1BVRGV2aWNlIGFuZCBhc2sgZm9yIHRoZSBHUFVRdWV1
ZTwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVycyA9IGAKLXN0cnVjdCBWZXJ0ZXgKLXsKLSAg
ICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgYXR0cmlidXRlUG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKCkK
LXsKLSAgICBWZXJ0ZXggcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IGZsb2F0NCgwLCAw
LCAwLCAxKTsKLSAgICByZXN1bHQuYXR0cmlidXRlUG9zaXRpb24gPSByZXN1bHQucG9zaXRpb247
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4o
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfQotYAotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBn
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICBjb25zdCBz
d2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBz
aGFkZXJzIH0pOwotICAgICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUo
c2hhZGVyTW9kdWxlLCBkZXZpY2UpOwotCi0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKGNvbW1h
bmRFbmNvZGVyIGluc3RhbmNlb2YgR1BVQ29tbWFuZEVuY29kZXIsICJjcmVhdGVDb21tYW5kRW5j
b2RlciByZXR1cm5lZCBhIEdQVUNvbW1hbmRFbmNvZGVyIik7Ci0KLSAgICAgICAgY29uc3QgZW5j
b2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZShlbmNvZGVyIGluc3RhbmNlb2YgR1BVUmVuZGVyUGFzc0VuY29k
ZXIsICJiZWdpblJlbmRlclBhc3MoKSByZXR1cm5lZCBhIEdQVVJlbmRlclBhc3NFbmNvZGVyIik7
Ci0KLSAgICAgICAgZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgICAgIGVuY29k
ZXIuZW5kUGFzcygpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkdQVVJlbmRl
clBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZCIpOwotCi08L3Njcmlw
dD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxp
bmUtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxp
bmUtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFm
NjZmNThkYzRkZjY2YjA3ODM0MDY1NGQ3MGI5MjJkM2U2ZmM2Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBp
cGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBA
Ci0KLVBBU1MgR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJv
cnMuCi1QQVNTIEludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxk
IGZhaWwuCi1QQVNTIEludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciBmcmFnbWVudCBzdGFnZSBz
aG91bGQgZmFpbC4KLVBBU1MgRW1wdHkgZW50cnkgcG9pbnQgZm9yIHZlcnRleCBzdGFnZSBzaG91
bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBHUFVUZXh0dXJlRm9ybWF0IGluIEdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yIHNob3VsZCBmYWlsLgotUEFTUyBUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3Jp
cHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNTIFRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0
b3JzIHNob3VsZCBmYWlsLgotUEFTUyBUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9ycyBzaG91bGQgZmFpbC4KLVBBU1MgRHVwbGljYXRlIHNoYWRlckxvY2F0aW9uIGZvciB2ZXJ0
ZXggYXR0cmlidXRlcyBzaG91bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBlbnRyeSBwb2ludCBzdHJp
bmcgc2hvdWxkIGZhaWwuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXIt
cGlwZWxpbmUtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5l
LWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjliYzczZGM2ZjQ3
MmJmYWE0OThjZGI2NDBmNTM5ODBmMjU1YmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJy
b3JzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+
Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3QgcG9zaXRpb25Mb2NhdGlvbiA9IDA7Ci1jb25zdCBjb2xvckxvY2F0aW9u
ID0gMTsKLQotY29uc3QgY29sb3JPZmZzZXQgPSA0ICogNDsKLWNvbnN0IHZlcnRleFN0cmlkZSA9
IDggKiA0OwotCi1jb25zdCB3aGxzbFNvdXJjZSA9IGAKLXN0cnVjdCBGcmFnbWVudERhdGEgewot
ICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0
dHJpYnV0ZSgke2NvbG9yTG9jYXRpb259KTsKLX0KLQotdmVydGV4IEZyYWdtZW50RGF0YSB2ZXJ0
ZXhNYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgke3Bvc2l0aW9uTG9jYXRpb259KSwg
ZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKCR7Y29sb3JMb2NhdGlvbn0pKQotewotICAgIEZyYWdt
ZW50RGF0YSBvdXQ7Ci0KLSAgICBvdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBvdXQuY29s
b3IgPSBjb2xvcjsKLQotICAgIHJldHVybiBvdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudE1haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKCR7Y29sb3JMb2NhdGlvbn0pKSA6IFNW
X1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYDsKLQotbGV0IGdvb2RSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IsIGdvb2RNb2R1bGU7Ci0KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0
c1siR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJvcnMuIl0g
PSBhc3luYyBkZXZpY2UgPT4gewotICAgIGdvb2RNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogd2hsc2xTb3VyY2UgfSk7Ci0gICAgCi0gICAgZ29vZFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHsKLSAgICAgICAgdmVydGV4U3RhZ2U6IHsgbW9kdWxlOiBnb29kTW9k
dWxlLCBlbnRyeVBvaW50OiAidmVydGV4TWFpbiIgfSwKLSAgICAgICAgZnJhZ21lbnRTdGFnZTog
eyBtb2R1bGU6IGdvb2RNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudE1haW4iIH0sCi0gICAg
ICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGUtbGlzdCIsCi0gICAgICAgIGNvbG9yU3Rh
dGVzOiBbewotICAgICAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgICAgICBh
bHBoYUJsZW5kOiB7fSwKLSAgICAgICAgICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgICAgIH1dLAot
ICAgICAgICB2ZXJ0ZXhJbnB1dDogewotICAgICAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAg
ICAgICAgICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlv
bkxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAg
ICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JM
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBjb2xvck9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgICAgIH1dCi0gICAg
ICAgICAgICB9XQotICAgICAgICB9Ci0gICAgfTsKLSAgICBPYmplY3QuZnJlZXplKGdvb2RSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxp
ZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGdvb2RSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0K
LXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBm
YWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVj
dC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogIkZvbyIgfSk7
Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhNYWluIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVs
aW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlk
IEdQVVNoYWRlck1vZHVsZSBmb3IgZnJhZ21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuIl0gPSBhc3lu
YyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwg
Z29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0gICAgYmFkRGVz
Y3JpcHRvci5mcmFnbWVudFN0YWdlID0geyBtb2R1bGU6IGJhZFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleE1haW4iIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJv
cihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkVtcHR5IGVudHJ5IHBvaW50
IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhTdGFn
ZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICIiIH07Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsK
LQotdGVzdHNbIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0YXRlRGVzY3Jp
cHRvciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2Ny
aXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LSAgICBiYWREZXNjcmlwdG9yLmNvbG9yU3RhdGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiZGVw
dGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgIGNv
bG9yQmxlbmQ6IHt9Ci0gICAgfV07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJv
cihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIlRvbyBtYW55IEdQVUNvbG9y
U3RhdGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAg
bGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkQ29sb3JTdGF0ZXMgPSBuZXcgQXJyYXkoMTAwKTsKLSAg
ICBiYWRDb2xvclN0YXRlcy5maWxsKHsKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0g
ICAgICAgIGFscGhhQmxlbmQ6IHt9LAotICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgIH0pOwot
ICAgIGJhZERlc2NyaXB0b3IuY29sb3JTdGF0ZXMgPSBiYWRDb2xvclN0YXRlczsKLQotICAgIHJl
dHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19Owot
Ci10ZXN0c1siVG9vIG1hbnkgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwu
Il0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFz
c2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFZlcnRl
eEJ1ZmZlcnMgPSBuZXcgQXJyYXkoMTAwKTsKLSAgICBiYWRWZXJ0ZXhCdWZmZXJzLmZpbGwoewot
ICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewot
ICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHBvc2l0aW9uTG9jYXRpb24sCi0gICAgICAgICAg
ICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgYmFkRGVzY3JpcHRv
ci52ZXJ0ZXhJbnB1dCA9IHsgdmVydGV4QnVmZmVyczogYmFkVmVydGV4QnVmZmVycyB9OwotCi0g
ICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsK
LX07Ci0KLXRlc3RzWyJUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91
bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBP
YmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQg
YmFkQXR0cmlidXRlcyA9IG5ldyBBcnJheSgxMDApOwotICAgIGJhZEF0dHJpYnV0ZXMuZmlsbCh7
Ci0gICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICBmb3Jt
YXQ6ICJmbG9hdDQiCi0gICAgfSk7Ci0KLSAgICBiYWREZXNjcmlwdG9yLnZlcnRleElucHV0ID0g
ewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhT
dHJpZGUsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IGJhZEF0dHJpYnV0ZXMKLSAgICAgICAg
fV0KLSAgICB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBi
YWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJEdXBsaWNhdGUgc2hhZGVyTG9jYXRpb24gZm9y
IHZlcnRleCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4SW5wdXQgPSB7Ci0gICAgICAg
IHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAg
ICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlv
bjogY29sb3JMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAg
ICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgb2Zmc2V0OiBjb2xvck9mZnNldCwKLSAgICAgICAgICAgICAg
ICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3Ip
OwotfTsKLQotdGVzdHNbIkludmFsaWQgZW50cnkgcG9pbnQgc3RyaW5nIHNob3VsZCBmYWlsLiJd
ID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3Np
Z24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGJhZERlc2NyaXB0b3Iu
ZnJhZ21lbnRTdGFnZSA9IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAiYmFyIiB9
OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlw
dG9yKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERldmljZSh0ZXN0cyk7Ci0KLWNvbnN0IGNyZWF0ZVBp
cGVsaW5lQW5kRXJyb3IgPSAoZGV2aWNlLCBkZXNjcmlwdG9yKSA9PiB7Ci0gICAgZGV2aWNlLnB1
c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsK
LX07Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRl
ci1waXBlbGluZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NWNkYjUwNzkyNjZlOGY4ODRkMTYzZWI0OWFkNzY1NjNhODgyMTc1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXIt
cGlwZWxpbmVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIENyZWF0ZSBiYXNpYyBHUFVSZW5kZXJQaXBlbGluZQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3Jl
bmRlci1waXBlbGluZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MmIz
MzFlNmQ3ZDdjZTgyZTc4MzA4M2FhZDRiYmJlZmM1ODdhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVs
aW5lcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4o
dWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbgotewotICAgIGZsb2F0NCB2Owot
ICAgIHN3aXRjaCAodmlkKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAx
LCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB2ID0gZmxvYXQ0
KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgdiA9
IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNWX1Rhcmdl
dCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwgMC4wLCAxLjApOwotfQotYAotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotCi0gICAgICAgIGNvbnN0IGxh
eW91dEJpbmRpbmcgPSB7IGJpbmRpbmc6IDAsIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLlZF
UlRFWCwgdHlwZTogInN0b3JhZ2UtYnVmZmVyIiB9OwotICAgICAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtsYXlvdXRC
aW5kaW5nXSB9KTsKLSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsK
LQotICAgICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9k
dWxlLCBkZXZpY2UsIG51bGwsIHBpcGVsaW5lTGF5b3V0KTsKLSAgICAgICAgYXNzZXJ0X3RydWUo
cGlwZWxpbmUgaW5zdGFuY2VvZiBHUFVSZW5kZXJQaXBlbGluZSwgIlN1Y2Nlc3NmdWxseSBjcmVh
dGVkIEdQVVJlbmRlclBpcGVsaW5lIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19
LCAiQ3JlYXRlIGJhc2ljIEdQVVJlbmRlclBpcGVsaW5lIik7Ci08L3NjcmlwdD4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQu
cG5nIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJlZC5wbmcKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMmJiNmZhM2YzODYwYzAwNzRiMDk4ZmRmMGU5
MjIwZmUzNTdjMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMTMxNAp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVY0TUtMOUJlPzVoVyV6fGZEfkpqeDRSMyZlLUs9LWNsbChYMnhv
eXUKeldIQUUrdz1mN1pHUiZHSTBUZzV9QCRffE5mNlUxJEVXbVVwJjMtbG0xSXYwKDdzcnJfVFdf
eSM8WWhNQ1ZSa2g3Cnp7ci0mNDFmI2FELUdVaCR7Tl5fZyQqJChyVGx1Kl97Pzh7dk1nfUlQaDZW
LSYxcUtjZDVUWWR5VmhQTCE4dVE/dQp6MF4zSXQ/fVBrVkJqY0RWIVNqV3V2WTVYJiUyT1VIZ1Yo
UH1FK2FDR0FXN3N5KnlPVzM/UTZefE4pXnU/dTZAOWMKek5KTENiJGNZRnFGTnVrUGdAdThVKFpQ
WDFLbWRlaiQlOXd8dndfQXVoXkgjbk01ZVdRPnAheWVpX0Nwc19ra0plCnlRTHIxfS1YQDYkYjNQ
PWpzTHJFdDZyZV5qQm5zflJWbWZ0M1RyXnxoRD9lYXEjXkNBZD1kI1d6cCRQIUdlekF4RQoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZyBiL0xh
eW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmM3Zjg4ZTdjNWFiNTg4YTg2ODFjMTFkN2QxNmMzMmU5ZjZjNDNkOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxNDgKemNtZUFTQE4/KG9sSHlgdVZCcSFp
YTB5fnlWNE1LTGpMYmxoVTQ9e2ZmZlFxTGtoPkcoJjY3SXlLbmBidE1gU1NyCnoxR2d7O0djd0dZ
QkxOZy00KTYoYVclJG92NV9leilrZ01oQzt1dW1mPWp9bTVNai1GZGcwS0U+XlZ0PnZuZHFSdwpY
Kzx5WkRxb3ZzTjNYcUphdERubXtyLVVXfDRralFzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9z
aGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVhYzY4Zjg2MmEyOGZjNDJjNTg2ZTIxYWQ0ODI3ZmNkNjUyMjgzYmMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRl
ci1tb2R1bGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIFRlc3Qgc2hhZGVyIGNvZGUgdmFsaWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1vZHVsZXMuCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQyNjJlMTFjYjY2MWYyZTRkNzcyNDEwMjBlODI1ZGMyY2Y2NGYwYjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0
IHNoYWRlciB2YWxpZGF0aW9uLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlcnMgPSBgCi1zdHJ1Y3QgVmVy
dGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGF0
dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleCB2ZXJ0
ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBm
bG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAgcmVzdWx0LmF0dHJpYnV0ZVBvc2l0aW9uID0gcmVzdWx0
LnBvc2l0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAot
ewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAg
ICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAg
ICBsZXQgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNo
YWRlcnMgfSk7Ci0gICAgICAgIGFzc2VydF90cnVlKHNoYWRlck1vZHVsZSBpbnN0YW5jZW9mIEdQ
VVNoYWRlck1vZHVsZSwgIlNoYWRlciBtb2R1bGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIik7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiVGVzdCBzaGFkZXIgY29kZSB2YWxpZGF0
aW9uIHdoZW4gY3JlYXRpbmcgbW9kdWxlcy4iKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEw
YWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFz
cyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZh
cyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1w
bGUtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcw
NGQ0YmQyMTk2NTBkMzQxMjQ5Nzg3ZWM2YTdhNGEzMTQ1NjAzNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRy
aWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJp
YW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJl
Y3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJz
aW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXgg
ZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24K
LXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAg
ICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToK
LSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAu
MCwgMS4wKTsKLX0KLWAKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
Y2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dh
cENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJ
WE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAg
IGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmlj
ZSk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBD
aGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgIGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29k
ZXIsIHBpcGVsaW5lKTsKLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotCi0g
ICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzM4NDU4MjBiMjFkZDBhM2YyMzgzYjhmZDcyMWMwYjRkYmUzMTA2My4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZS1jcmVhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCww
IEBACi0KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIC0xIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAtMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBz
YW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFT
UyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAtMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IC0xIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdo
dCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IC0xIGRpbWVuc2lvbiAyZCBm
b3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lk
dGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVu
c2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAtMS4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMCBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IDAgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMCBkaW1lbnNpb24gMmQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEwMDAwIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAzMDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVs
Q291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2Fn
ZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMTAwMDAgZGVw
dGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVp
Z2h0IDEgZGVwdGggMzAwMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDMwMDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
MSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDMwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVw
dGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVp
Z2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1l
bnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDMg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZl
bENvdW50IDMgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQg
NCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgNCBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENv
dW50IDEgc2FtcGxlQ291bnQgMyBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMzAwIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1
bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQg
MiBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCA0IGRpbWVuc2lvbiAyZCBmb3Jt
YXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGgg
MSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAyIGRpbWVuc2lv
biAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUg
b2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAx
IGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBh
IHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1w
bGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBD
cmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVsQ291
bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9y
bSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMiBk
ZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQg
cmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBo
ZWlnaHQgMSBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Yg
d2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRp
bWVuc2lvbiAxZCBmb3JtYXQgZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3Vu
dCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxvYXQtc3RlbmNp
bDggdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMiBkaW1lbnNpb24gMmQgZm9ybWF0
IGRlcHRoMzJmbG9hdC1zdGVuY2lsOCB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUg
b2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAx
IGRpbWVuc2lvbiBnYXJiYWdlIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAx
IHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBnYXJiYWdlIHVzYWdlIDAuCi1QQVNT
IENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxD
b3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVpbnQgdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IGJncmE4dW5v
cm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IGJncmE4dW5vcm0tc3JnYiB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lk
dGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVu
c2lvbiAyZCBmb3JtYXQgcmdiYTE2ZmxvYXQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMTAwMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMzEu
Ci1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlw
TGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3Jt
IHVzYWdlIDguCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjYwMDU1N2ExZjk0NzhmZjMyNDNhMDg1NzE4YmNm
ODA0NzA3YzkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PHRpdGxlPlRlc3RzIGZvciBjcmVhdGluZyB0ZXh0dXJlIHZpZXdzLjwvdGl0bGU+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiBydW5U
ZXN0cygpIHsKLSAgICBsZXQgdGVzdHMgPSBbCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAg
ICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBz
YW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVw
dGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIs
IGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0KLSAgICAg
ICAgLy8gVGVzdCBuZWdhdGl2ZSB2YWx1ZXMKLSAgICAgICAge3dpZHRoOiAtMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0g
ICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAtMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwg
ZGVwdGg6IC0xLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAg
ICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAtMSwg
c2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVz
YWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IC0xLCBkaW1lbnNpb246ICIy
ZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAg
ICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNh
bXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogLTEsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IHplcm8gdmFsdWVzCi0g
ICAgICAgIHt3aWR0aDogMCwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwg
c2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVz
YWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAwLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAg
ICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMCwgbWlwTGV2ZWxDb3VudDogMSwgc2Ft
cGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdl
OiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0
aDogMSwgbWlwTGV2ZWxDb3VudDogMCwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwg
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAg
IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDAsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtYXhpbXVtIHNpemVzCi0gICAg
ICAgIHt3aWR0aDogMTAwMDAsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMzAw
MCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246
ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAot
ICAgICAgICB7d2lkdGg6IDEwMDAwLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50
OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6
IDEwMDAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVu
c2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxz
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwgbWlwTGV2ZWxD
b3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1
bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMzAwMCwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRp
bWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBm
YWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAzMDAwLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEs
IGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtaXBtYXBwZWQgdGV4dHVyZXMKLSAgICAgICAg
e3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVD
b3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lk
dGg6IDIsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDIsIHNhbXBsZUNvdW50
OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlw
TGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAy
LCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDogMSwg
ZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZl
bENvdW50OiAzLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiM2QiLCBmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IG11
bHRpc2FtcGxpbmcKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBM
ZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAx
LCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwg
ZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IHRydWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDQsIGRpbWVu
c2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxz
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0
OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDMsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDMwMCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6
IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9u
OiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwK
LSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAx
LCBzYW1wbGVDb3VudDogMiwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IGRpbWVuc2lvbgot
ICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAyLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAg
ICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAxLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6
IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7
d2lkdGg6IDEsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNv
dW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwg
c3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMiwg
bWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0
OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLQotICAgICAgICAvLyBU
ZXN0IGRlcHRoIHRleHR1cmVzCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9y
bWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwK
LSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAx
LCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJkZXB0aDMyZmxvYXQt
c3RlbmNpbDgiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDIsIGRp
bWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IGVudW1zCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogImdhcmJhZ2UiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJnYXJiYWdlIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRo
OiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDog
MSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVpbnQiLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiYmdy
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBo
ZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJiZ3JhOHVub3JtLXNyZ2IiLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTE2ZmxvYXQiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCB1
c2FnZQotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMTAwMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1l
bnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdl
LkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdlLlNB
TVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuU1RPUkFHRSB8IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRf
QVRUQUNITUVOVCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU1RPUkFH
RSwgc3VjY2VzczogZmFsc2V9LAotICAgIF07Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykg
ewotICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgbGV0IGNh
dWdodCA9IGZhbHNlOwotICAgICAgICAgICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0
aW9uIik7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlID0g
ZGV2aWNlLmNyZWF0ZVRleHR1cmUoe3NpemU6IHt3aWR0aDogdGVzdC53aWR0aCwgaGVpZ2h0OiB0
ZXN0LmhlaWdodCwgZGVwdGg6IHRlc3QuZGVwdGh9LCBtaXBMZXZlbENvdW50OiB0ZXN0Lm1pcExl
dmVsQ291bnQsIHNhbXBsZUNvdW50OiB0ZXN0LnNhbXBsZUNvdW50LCBkaW1lbnNpb246IHRlc3Qu
ZGltZW5zaW9uLCBmb3JtYXQ6IHRlc3QuZm9ybWF0LCB1c2FnZTogdGVzdC51c2FnZX0pOwotICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAi
Q2Fubm90IGNyZWF0ZSB0ZXh0dXJlLiIpOwotICAgICAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoIXRlc3Quc3VjY2VzcywgIkNyZWF0aW5nIHRleHR1cmUgc2hv
dWxkICIgKyAodGVzdC5zdWNjZXNzID8gIm5vdCAiIDogIiIpICsgImZhaWwuIik7Ci0gICAgICAg
ICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF3YWl0
IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihmdW5jdGlvbihlcnJvcikgewotICAgICAgICAg
ICAgICAgIGlmICh0ZXN0LnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3Nh
Z2UgPSAiQ291bGQgbm90IGNyZWF0ZSB0ZXh0dXJlOiAiOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgKz0gZXJyb3IubWVzc2FnZTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
cnJvciwgbnVsbCwgIkNvdWxkIG5vdCBjcmVhdGUgdGV4dHVyZTogIiArIG1lc3NhZ2UpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNhdWdodCkgewotICAgICAgICAgICAgICAgICAgICBs
ZXQgbWVzc2FnZSA9ICJDcmVhdGVkIHRleHR1cmU6ICI7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSBlcnJvci5tZXNzYWdlOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSghIShj
YXVnaHQgfHwgZXJyb3IpLCAiQ3JlYXRlZCB0ZXh0dXJlIHdoZW4gc2hvdWxkbid0IGhhdmU6ICIg
KyBtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgImRldmljZSBsb3N0Iik7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAgICB9KTsKLSAg
ICB9LCBgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoICR7dGVzdC53aWR0aH0gaGVpZ2h0ICR7
dGVzdC5oZWlnaHR9IGRlcHRoICR7dGVzdC5kZXB0aH0gbWlwTGV2ZWxDb3VudCAke3Rlc3QubWlw
TGV2ZWxDb3VudH0gc2FtcGxlQ291bnQgJHt0ZXN0LnNhbXBsZUNvdW50fSBkaW1lbnNpb24gJHt0
ZXN0LmRpbWVuc2lvbn0gZm9ybWF0ICR7dGVzdC5mb3JtYXR9IHVzYWdlICR7dGVzdC51c2FnZX0u
YCk7Ci0gICAgfQotfQotCi1ydW5UZXN0cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4
NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5Q
YXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVja2Vy
Ym9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7
Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJp
cC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhhMzU5NWYyNmY5ZWEwNDNiMmIwZTczZTE1
NDcwMWE4MWNiMjRmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEg
bmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBj
YW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZlcnRleC1idWZmZXItdHJpYW5nbGUt
c3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMg
YSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBwb3NpdGlvbkJ1ZmZlckluZGV4ID0g
MDsKLWNvbnN0IHRleENvb3Jkc0J1ZmZlckluZGV4ID0gMTsKLWNvbnN0IHBvc2l0aW9uQXR0cmli
dXRlTnVtID0gMDsKLWNvbnN0IHRleENvb3Jkc0F0dHJpYnV0ZU51bSA9IDE7Ci1jb25zdCBiaW5k
R3JvdXBJbmRleCA9IDA7Ci1jb25zdCB0ZXh0dXJlQmluZGluZ051bSA9IDA7Ci1jb25zdCBzYW1w
bGVyQmluZGluZ051bSA9IDE7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4
T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQyIHRl
eENvb3JkcyA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4X21h
aW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKCR7cG9zaXRpb25BdHRyaWJ1dGVOdW19KSwg
ZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgke3RleENvb3Jkc0F0dHJpYnV0ZU51bX0pKSB7
Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAg
IHZPdXQudGV4Q29vcmRzID0gdGV4Q29vcmRzOwotICAgIHJldHVybiB2T3V0OwotfQotCi1zdHJ1
Y3QgVGV4dHVyZVNhbXBsZXIKLXsKLSAgICBUZXh0dXJlMkQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIo
dCR7dGV4dHVyZUJpbmRpbmdOdW19LCBzcGFjZSR7YmluZEdyb3VwSW5kZXh9KTsKLSAgICBzYW1w
bGVyIHMgOiByZWdpc3RlcihzJHtzYW1wbGVyQmluZGluZ051bX0sIHNwYWNlJHtiaW5kR3JvdXBJ
bmRleH0pOwotfTsKLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQyIHRleENv
b3JkcyA6IGF0dHJpYnV0ZSgwKSwgVGV4dHVyZVNhbXBsZXIgdGV4dHVyZVNhbXBsZXIpIDogU1Zf
VGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gU2FtcGxlKHRleHR1cmVTYW1wbGVyLnQsIHRleHR1cmVT
YW1wbGVyLnMsIHRleENvb3Jkcyk7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0
RGVzY3JpcHRvcigpIHsKLSAgICB2YXIgYnVmZmVyRGVzY3JpcHRvcnMgPSBbXTsKLSAgICBidWZm
ZXJEZXNjcmlwdG9yc1twb3NpdGlvbkJ1ZmZlckluZGV4XSA9IHsKLSAgICAgICAgc3RyaWRlOiA0
ICogNCwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgZm9ybWF0OiAiZmxv
YXQ0IiwKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJpYnV0ZU51bQot
ICAgICAgICB9XQotICAgIH07Ci0gICAgYnVmZmVyRGVzY3JpcHRvcnNbdGV4Q29vcmRzQnVmZmVy
SW5kZXhdID0gewotICAgICAgICBzdHJpZGU6IDQgKiAyLAotICAgICAgICBhdHRyaWJ1dGVTZXQ6
IFt7Ci0gICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDIiLAotICAgICAgICAgICAgc2hhZGVyTG9j
YXRpb246IHRleENvb3Jkc0F0dHJpYnV0ZU51bQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICBy
ZXR1cm4geyB2ZXJ0ZXhCdWZmZXJzOiBidWZmZXJEZXNjcmlwdG9ycyB9OwotfQotCi1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBD
aGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNM
IHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0KLSAgICBjb25zdCBwb3NpdGlvbkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShbCi0gICAgICAgIC8vIGZsb2F0NCB4eXp3Ci0gICAgICAgIC0xLCAx
LCAwLCAxLAotICAgICAgICAtMSwgLTEsIDAsIDEsCi0gICAgICAgIDEsIDEsIDAsIDEsIAotICAg
ICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIGNvbnN0IHBvc2l0aW9uQnVmZmVyID0gY3Jl
YXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHBvc2l0aW9uQXJyYXkuYnl0ZUxlbmd0
aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCBwb3NpdGlvbkFycmF5LmJ1ZmZlcik7
Ci0KLSAgICBjb25zdCB0ZXhDb29yZHNBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAg
ICAvLyBmbG9hdDIgdGV4Q29vcmRzCi0gICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDEsCi0gICAg
ICAgIDEsIDAsCi0gICAgICAgIDEsIDEKLSAgICBdKTsKLSAgICBjb25zdCB0ZXh0dXJlQ29vcmRC
dWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdGV4Q29vcmRzQXJy
YXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB0ZXhDb29yZHNB
cnJheS5idWZmZXIpOwotCi0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRl
VmVydGV4SW5wdXREZXNjcmlwdG9yKCk7Ci0KLSAgICAvLyBMb2FkIHRleHR1cmUgaW1hZ2UKLSAg
ICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGNvbnN0IGltYWdlTG9hZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsgCi0gICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+
IHJlc29sdmUoKTsgCi0gICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvYmx1ZS1jaGVja2Vy
ZWQucG5nIjsKLSAgICB9KTsKLSAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoaW1hZ2VMb2FkUHJv
bWlzZSk7Ci0KLSAgICAvLyBDb252ZXJ0IGltYWdlIHRvIGRhdGEgYW5kIGZpbGwgR1BVQnVmZmVy
Ci0gICAgY29uc3QgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
LSAgICBjYW52YXMyZC53aWR0aCA9IGltYWdlLndpZHRoOwotICAgIGNhbnZhczJkLmhlaWdodCA9
IGltYWdlLmhlaWdodDsKLSAgICBjb25zdCBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0
KCIyZCIpOwotICAgIGNvbnRleHQyZC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgIGNvbnN0
IGltYWdlRGF0YSA9IGNvbnRleHQyZC5nZXRJbWFnZURhdGEoMCwgMCwgaW1hZ2Uud2lkdGgsIGlt
YWdlLmhlaWdodCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvciA9IHsKLSAg
ICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLAotICAgICAgICB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBjcmVh
dGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yLCBpbWFnZURh
dGEuZGF0YS5idWZmZXIpOwotCi0gICAgLy8gQ3JlYXRlIEdQVVRleHR1cmUKLSAgICBjb25zdCB0
ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLAotICAgICAgICBoZWln
aHQ6IGltYWdlLmhlaWdodCwKLSAgICAgICAgZGVwdGg6IDEKLSAgICB9OwotCi0gICAgY29uc3Qg
dGV4dHVyZURlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IHsgd2lkdGg6IGltYWdlLndpZHRo
LCBoZWlnaHQ6IGltYWdlLmhlaWdodCwgZGVwdGg6IDEgfSwKLSAgICAgICAgZm9ybWF0OiAicmdi
YTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVU
ZXh0dXJlVXNhZ2UuU0FNUExFRAotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5j
cmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLQotICAgIC8vIEJpbmQgdGV4dHVyZSBh
bmQgYSBzYW1wbGVyIHRvIHBpcGVsaW5lCi0gICAgY29uc3QgdGV4dHVyZUxheW91dEJpbmRpbmcg
PSB7IAotICAgICAgICBiaW5kaW5nOiB0ZXh0dXJlQmluZGluZ051bSwgCi0gICAgICAgIHZpc2li
aWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULCAKLSAgICAgICAgdHlwZTogInNhbXBsZWQt
dGV4dHVyZSIgCi0gICAgfTsKLSAgICBjb25zdCBzYW1wbGVyTGF5b3V0QmluZGluZyA9IHsKLSAg
ICAgICAgYmluZGluZzogc2FtcGxlckJpbmRpbmdOdW0sCi0gICAgICAgIHZpc2liaWxpdHk6IEdQ
VVNoYWRlclN0YWdlLkZSQUdNRU5ULAotICAgICAgICB0eXBlOiAic2FtcGxlciIKLSAgICB9Owot
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHsKLSAgICAgICAgYmluZGlu
Z3M6IFt0ZXh0dXJlTGF5b3V0QmluZGluZywgc2FtcGxlckxheW91dEJpbmRpbmddCi0gICAgfTsK
LSAgICBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91
dF0gfSk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQmluZGluZyA9IHsgCi0gICAgICAgIGJpbmRpbmc6
IHRleHR1cmVCaW5kaW5nTnVtLCAKLSAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKSAKLSAgICB9OwotICAgIGNvbnN0IHNhbXBsZXJCaW5kaW5nID0gewotICAgICAg
ICBiaW5kaW5nOiBzYW1wbGVyQmluZGluZ051bSwKLSAgICAgICAgcmVzb3VyY2U6IGRldmljZS5j
cmVhdGVTYW1wbGVyKHsgbWluRmlsdGVyOiAibmVhcmVzdCIsIG1hZ0ZpbHRlcjogIm5lYXJlc3Qi
IH0pCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7Ci0gICAgICAg
IGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICBiaW5kaW5nczogW3RleHR1cmVCaW5k
aW5nLCBzYW1wbGVyQmluZGluZ10KLSAgICB9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICAvLyBQaXBlbGlu
ZSBhbmQgcmVuZGVyCi0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNo
YWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBwaXBlbGluZUxheW91dCwgdmVydGV4SW5wdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOwotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7Ci0gICAgICAgIGJ1ZmZl
cjogdGV4dHVyZUJ1ZmZlciwKLSAgICAgICAgcm93UGl0Y2g6IGltYWdlLndpZHRoICogNCwKLSAg
ICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9
IHsgdGV4dHVyZTogdGV4dHVyZSB9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1Rl
eHR1cmUoYnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4dHVyZVNpemUpOwotICAg
IGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21t
YW5kRW5jb2Rlcik7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAg
IHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cChiaW5kR3JvdXBJbmRleCwgYmluZEdyb3VwKTsKLSAg
ICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKHBvc2l0aW9uQnVmZmVySW5kZXgsIFtwb3Np
dGlvbkJ1ZmZlciwgdGV4dHVyZUNvb3JkQnVmZmVyXSwgWzAsIDBdKTsKLSAgICBwYXNzRW5jb2Rl
ci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGNv
bnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgcXVldWUuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotICAgIHBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB0
ZXh0dXJlQ29vcmRCdWZmZXIuZGVzdHJveSgpOwotICAgIHRleHR1cmUuZGVzdHJveSgpOwotfQot
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlbkFuZEJs
dWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjk0M2RkYTRlYTg2N2QzMTRm
YzIyOGY3ZGZiY2ZmMDIwOTA0Zjg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIHRl
eHR1cmUgdmlldyBmcm9tIHN3YXAgY2hhaW4uCi1QQVNTIENyZWF0ZSBiYXNpYyBkZXB0aCB0ZXh0
dXJlIGZyb20gZGV2aWNlLgotUEFTUyBDcmVhdGUgYmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1
cmUuCi1QQVNTIENyZWF0ZSBiYXNpYyAzRCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBDcmVh
dGUgYSByZW5kZXIgdGFyZ2V0IHRleHR1cmUgKHdoaWNoIGNhbiBiZSBzYW1wbGVkKSBmcm9tIGRl
dmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2
aWV3cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzFhOTQzZGQ3Y2EwM2FlM2U5MjNhNWUz
MzVmNGY4ODg5N2E1MTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTx0aXRsZT5CYXNpYyBHUFVUZXh0dXJlIFRlc3RzLjwvdGl0bGU+Ci08Ym9keT4K
LTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsgICAgCi1sZXQgY29udGV4dDsKLQot
bGV0IHRleFNpemUgPSB7Ci0gICAgd2lkdGg6IGNhbnZhcy53aWR0aCwKLSAgICBoZWlnaHQ6IGNh
bnZhcy5oZWlnaHQsCi0gICAgZGVwdGg6IDEKLX07Ci0KLWxldCB0ZXhEZXNjcmlwdG9yID0gewot
ICAgIHNpemU6IHRleFNpemUsCi0gICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwK
LSAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5UCi19OwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgICAgIHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNh
bnZhcywgZGV2aWNlKTsKLQotICAgICAgICBjb25zdCB0ZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUgaW5zdGFuY2VvZiBH
UFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGFjcXVpcmVkIG5leHQgdGV4dHVyZS4iKTsKLQotICAg
ICAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAg
ICAgICAgYXNzZXJ0X3RydWUodGV4dHVyZVZpZXcgaW5zdGFuY2VvZiBHUFVUZXh0dXJlVmlldywg
IlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRleHR1cmUgdmlldyBmcm9tIG5leHQgdGV4dHVyZS4iKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgdGV4dHVyZSB2aWV3IGZy
b20gc3dhcCBjaGFpbi4iKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBkZXB0
aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsKLSAgICAgICAg
YXNzZXJ0X3RydWUoZGVwdGhUZXh0dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIlN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIGRlcHRoIHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
fSk7Ci19LCAiQ3JlYXRlIGJhc2ljIGRlcHRoIHRleHR1cmUgZnJvbSBkZXZpY2UuIik7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICAgICAgdGV4RGVzY3JpcHRvci5zYW1wbGVDb3VudCA9IDQ7Ci0g
ICAgICAgIHRleERlc2NyaXB0b3IuZm9ybWF0ID0gInJnYmE4dW5vcm0iOwotICAgICAgICB0ZXhE
ZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNh
Z2UuQ09QWV9TUkMKLQotICAgICAgICBjb25zdCBtdWx0aXNhbXBsZWRUZXh0dXJlID0gZGV2aWNl
LmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKG11bHRp
c2FtcGxlZFRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7
Ci19LCAiQ3JlYXRlIGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgICAgIHRleERlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7Ci0gICAgICAg
IHRleERlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPSAxOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLmRp
bWVuc2lvbiA9ICIzZCI7Ci0KLSAgICAgICAgY29uc3QgdGV4dHVyZTNkID0gZGV2aWNlLmNyZWF0
ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUzZCBp
bnN0YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBiYXNpYyAzRCB0ZXh0
dXJlLiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyAz
RCB0ZXh0dXJlIGZyb20gZGV2aWNlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRl
eERlc2NyaXB0b3IuZm9ybWF0ID0gInJnYmE4dW5vcm0iOwotICAgICAgICB0ZXhEZXNjcmlwdG9y
LnVzYWdlID0gR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5UIHwgR1BVVGV4dHVyZVVz
YWdlLlNBTVBMRUQ7Ci0KLSAgICAgICAgY29uc3QgcmVuZGVyVGFyZ2V0ID0gZGV2aWNlLmNyZWF0
ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKHJlbmRlclRhcmdl
dCBpbnN0YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBvZmYtc2NyZWVu
IHJlbmRlciB0YXJnZXQuIik7Ci0gICAgICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gcmVuZGVyVGFy
Z2V0LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmVWaWV3
IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZpZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCB0ZXh0dXJl
IHZpZXcgZnJvbSBvZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlICh3aGljaCBj
YW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZpY2UuIik7Ci0KLS8vIEZJWE1FOiBBZGQgdGVzdHMgZm9y
IDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJyYXlzLCBhbmQgR1BVVGV4dHVyZVZpZXdzLgotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5j
YXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVy
ZWQtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Ew
MmFjZDY4Y2VjZDBjZjRlN2ExNGUxMDc0OGEzY2VlZGE1YTE5NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJl
ZC1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1DT05T
T0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVmZmVyIGNhbm5vdCBoYXZl
IGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLUNPTlNPTEUgTUVTU0FHRTogR1BV
RGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiBCdWZmZXIgY2Fubm90IGhhdmUgYm90aCBNQVBfUkVBRCBh
bmQgTUFQX1dSSVRFIHVzYWdlIQotCi1QQVNTIEZpcmUgYW4gdW5jYXB0dXJlZCBHUFVEZXZpY2Ug
ZXJyb3IgZXZlbnQgYXQgJ2RldmljZScuCi1QQVNTIEludGVyY2VwdCBhbiB1bmNhcHR1cmVkIGVy
cm9yIHdpdGggR1BVRGV2aWNlLm9udW5jYXB0dXJlZGVycm9yIEV2ZW50SGFuZGxlci4KLVBBU1Mg
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgYXN5bmMgdGVzdC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
dW5jYXB0dXJlZC1lcnJvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUy
ZWM0MjBkMGRmOWU3YTY5M2FjNjE3Mzk5ZjU4YTQ5ODEyNzE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJl
ZC1lcnJvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3Rp
dGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotbGV0IGV2ZW50V2F0Y2hlcjsKLQotY29uc3Qg
Y2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVudCA9IGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLX07Ci0KLXRlc3RzWyJGaXJlIGFuIHVuY2FwdHVyZWQg
R1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0ICdkZXZpY2UnLiJdID0gYXN5bmMgZGV2aWNlID0+IHsK
LSAgICBjb25zdCBhc3luY1Rlc3QgPSBhc3luY190ZXN0KCJHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dCBhc3luYyB0ZXN0LiIpOwotICAgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNo
ZXIoYXN5bmNUZXN0LCBkZXZpY2UsICJ1bmNhcHR1cmVkZXJyb3IiKTsKLSAgICBjb25zdCBldmVu
dEZpcmVkID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCJ1bmNhcHR1cmVkZXJyb3IiKS50aGVuKGV2
ZW50ID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZXJyb3IgaW5zdGFuY2VvZiBHUFVW
YWxpZGF0aW9uRXJyb3IsICJTdWNjZXNzZnVsbHkgZmlyZWQgR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQuIik7Ci0gICAgICAgIGFzeW5jVGVzdC5kb25lKCk7Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0
aW1lb3V0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXJyb3IgZXZlbnQhIikgfSwg
MzAwMCk7Ci0gICAgfSk7Ci0KLSAgICBjYXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50KGRldmljZSk7
Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtldmVudEZpcmVkLCB0aW1lb3V0XSk7Ci19Owot
Ci10ZXN0c1siSW50ZXJjZXB0IGFuIHVuY2FwdHVyZWQgZXJyb3Igd2l0aCBHUFVEZXZpY2Uub251
bmNhcHR1cmVkZXJyb3IgRXZlbnRIYW5kbGVyLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBj
b25zdCBjYXB0dXJlZEVycm9yUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAg
ICAgICBkZXZpY2Uub251bmNhcHR1cmVkZXJyb3IgPSBldmVudCA9PiB7Ci0gICAgICAgICAgICBh
c3NlcnRfdHJ1ZShldmVudC5lcnJvciBpbnN0YW5jZW9mIEdQVVZhbGlkYXRpb25FcnJvciwgIlN1
Y2Nlc3NmdWxseSBmaXJlZCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC4iKTsKLSAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgfTsKLQotICAgICAgICBjYXVzZVVuY2FwdHVyZWRFcnJvckV2
ZW50KGRldmljZSk7Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2Uo
KF8sIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1l
ZCBvdXQgd2FpdGluZyBmb3IgZXJyb3IgZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAg
ICByZXR1cm4gUHJvbWlzZS5yYWNlKFtjYXB0dXJlZEVycm9yUHJvbWlzZSwgdGltZW91dF0pOwot
fTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92
ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVk
MjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYg
c3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
dmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3Zl
cnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2JiZTg3NTc3ZTZiMmU0ZTM1ZmMxY2ExNzBhMjE1ZmJmZjY4ZjhjZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTkg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVs
PSJtYXRjaCIgaHJlZj0idmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1s
Ij4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwv
cD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBz
cmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qg
c2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12
ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSwgZmxvYXQgZ3JlZW4gOiBhdHRyaWJ1dGUoMSkpCi17Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0g
ICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMCwg
Z3JlZW4sIDAsIDEpOwotICAgIHJldHVybiB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJh
Z21lbnRfbWFpbihmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsK
LSAgICByZXR1cm4gY29sb3I7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihk
ZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAg
ICAgICAvLyBmbG9hdDQgeHl6dywgZmxvYXQgZwotICAgICAgICAtMSwgMSwgMCwgMSwgMSwKLSAg
ICAgICAgLTEsIC0xLCAwLCAxLCAxLAotICAgICAgICAxLCAxLCAwLCAxLCAxLAotICAgICAgICAx
LCAtMSwgMCwgMSwgMQotICAgIF0pOwotCi0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRh
KAotICAgICAgICBkZXZpY2UsIAotICAgICAgICB7IAotICAgICAgICAgICAgc2l6ZTogdmVydGV4
QXJyYXkuYnl0ZUxlbmd0aCwgCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVS
VEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFCi0gICAgICAgIH0sCi0gICAgICAgIHZlcnRl
eEFycmF5LmJ1ZmZlcgotICAgICk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVz
Y3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAg
ICAgICAgICAgc3RyaWRlOiA0ICogNSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAg
ICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxv
Y2F0aW9uOiAwCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0OiA0ICog
NCwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdCIsCi0gICAgICAgICAgICAgICAgc2hh
ZGVyTG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAgfQotfQotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMg
ZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNp
Y1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBu
b24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
ID0gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSk7Ci0gICAgY29uc3QgdmVydGV4SW5wdXREZXNj
cmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCk7Ci0gICAgY29uc3QgcGlwZWxp
bmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBudWxs
LCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdp
bkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBlbmNvZGVC
YXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSwgdmVydGV4QnVmZmVyKTsKLSAgICBj
b25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFu
ZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpOwotfQotCi1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUlu
U29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5n
bGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4
ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQt
c2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxv
dyBpcyBhIDQgYnkgNCBibHVlL2dyZWVuIGNoZWNrZXJib2FyZC48L3A+Ci08Y2FudmFzIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlbkFuZEJsdWVDaGVja2Vy
Ym9hcmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU3OTQxNDYwNjFmZDU3NDUzMWExMjA2
MDg4NzliNDg5YTBkYmI5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xl
LXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xl
czwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkg
cmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmlld3Bv
cnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBp
ZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJvYXJk
LjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29u
c3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBT
Vl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbgotewotICAgIGZsb2F0NCB2OwotICAgIHN3aXRjaCAo
dmlkKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAtMSwgMCwg
MSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAx
LCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdiA9IGZsb2F0
NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNWX1RhcmdldCAwCi17Ci0gICAg
cmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwgMC4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRl
c3QoZGV2aWNlKSB7Ci0gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
Y2FudmFzIik7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2Fu
dmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJz
LgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBj
b2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBl
bGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBibHVlQXR0YWNobWVudCA9
IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3Jl
YXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9y
ZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDEsIGE6
IDEgfQotICAgIH07Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbYmx1ZUF0dGFjaG1lbnRdIH0pOwotICAg
IHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLQotICAgIGZ1bmN0aW9uIGRyYXdW
aWV3cG9ydCh4LCB5KSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldFZpZXdwb3J0KHgsIHksIDEw
MCwgMTAwLCAwLCAxKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBkcmF3U2Npc3NvclJlY3QoeCwgeSkgewotICAgICAgICBwYXNz
RW5jb2Rlci5zZXRTY2lzc29yUmVjdCh4LCB5LCAxMDAsIDEwMCk7Ci0gICAgICAgIHBhc3NFbmNv
ZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgfQotCi0gICAgcGFzc0VuY29kZXIuc2V0U2Npc3Nv
clJlY3QoMCwgMCwgMjAwLCA0MDApOwotICAgIGRyYXdWaWV3cG9ydCgxMDAsIDApOwotICAgIGRy
YXdWaWV3cG9ydCgwLCAxMDApOwotICAgIGRyYXdWaWV3cG9ydCgxMDAsIDIwMCk7Ci0gICAgZHJh
d1ZpZXdwb3J0KDAsIDMwMCk7Ci0KLSAgICAvLyBEcmF3IG91dHNpZGUgb2Ygc2Npc3NvciByZWN0
IHNob3VsZCBub3QgYXBwZWFyLgotICAgIGRyYXdWaWV3cG9ydCgyMDAsIDEwMCk7Ci0KLSAgICBw
YXNzRW5jb2Rlci5zZXRWaWV3cG9ydCgyMDAsIDAsIDIwMCwgNDAwLCAwLCAxKTsKLSAgICBkcmF3
U2Npc3NvclJlY3QoMzAwLCAwKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMjAwLCAxMDApOwotICAg
IGRyYXdTY2lzc29yUmVjdCgzMDAsIDIwMCk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0KDIwMCwgMzAw
KTsKLQotICAgIC8vIERyYXcgb3V0c2lkZSBvZiB2aWV3cG9ydCBzaG91bGQgbm90IGFwcGVhci4K
LSAgICBkcmF3U2Npc3NvclJlY3QoMCwgMCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7
Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1p
dChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmZjRlZWI2Mjk5OGNmY2I0ZmY2ZWM5ODdjOWQzZWI5ZmU1
NDIxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGNhbnRUYWtlQWRkcmVzc09mU3dpenps
ZQotUEFTUyBjYW50QXNzaWduUnZhbHVlU3dpenpsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQzMmYyNzllNDk5MjBjYWRlY2Q5ZGM5YmUzNTU1NjdjOTMzNjU2MzYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5iYWQgc3dpenpsZS48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jYW50VGFrZUFkZHJlc3NPZlN3
aXp6bGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9p
ZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB4
ID0gJnYueDsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICB0aHJl
YWQgaW50MiogeCA9ICZ2Lnh5OwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi13aGxzbFRlc3Rz
LmNhbnRBc3NpZ25SdmFsdWVTd2l6emxlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludDIgeCgpIHsKLSAgICAgICAgICAgIGludDIgdjsKLSAgICAgICAg
ICAgIHJldHVybiB2OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAg
ICAgeCgpLnh5ID0gaW50MigxMCwgMjApOwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgt
YXR0cmlidXRlLWxvY2F0aW9ucy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxv
Y2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgt
YXR0cmlidXRlLWxvY2F0aW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ZTNiZTM0MjA1M2Q2MWMwMTQ3MjM4NmVlYjVhM2M0Y2UyZWEwZGUyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9h
cmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewot
ICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0
cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMTczKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoNDk4KSkgewot
ICAgIFZlcnRleE91dCByZXN1bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0g
ICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJM
b2NhdGlvbjogMTczLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0g
e3NoYWRlckxvY2F0aW9uOiA0OTgsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAg
Y29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
MEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
M10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNl
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
b3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7Ymlu
ZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERl
c2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3Vw
QmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAo
YmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBm
b3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25m
aWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29s
b3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVU
YXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xv
cjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50
LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YjRlMDQ4YzFjMDZjZDUwMTc4Yzc5ODNiNDFmOTZmZmY2NjBjM2JmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGV2YWx1YXRpb25PcmRlckZvckFyZ3Vt
ZW50cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZh
bHVhdGlvbi1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2
YWx1YXRpb24tb3JkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzOGU4
ODhiY2UwZjgzY2ExNzhlMzhhY2Y4YWIwY2RkMzQ3Mjk2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1l
bnQtZXZhbHVhdGlvbi1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cyA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkg
eyByZXR1cm4gKmJhcigxMCkgKyAqYmFyKDIwKTsgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJh
cihpbnQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gdmFsdWU7Ci0gICAg
ICAgICAgICByZXR1cm4gJng7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkgeyByZXR1
cm4gcGx1cyhiYXIoMTApLCBiYXIoMjApKTsgfQotCi0gICAgICAgIGludCBwbHVzKHRocmVhZCBp
bnQqIHgsIHRocmVhZCBpbnQqIHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqeCAr
ICp5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgNDApOwotfTsKLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMzJkMmMzZGI4MzQ0NTRkZWRk
OThmMGNlN2JlNzY5MGM0ZWIwYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRl
c3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG5v
bkFycmF5UmVmQXJyYXlMZW5ndGhGYWlsCi1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNj
ZWVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgt
c3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1z
cGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzczZmNlZDI2
OGU3YWMxOTViYTJhZDZkZmRjMjdiNzNiOTY5MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0
aC1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ub25BcnJheVJlZkFycmF5TGVuZ3RoRmFpbCA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB0aHJlYWQgdWludCogbGVuZ3RoUHRyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpbnRbNDJdIGFycmF5OwotICAgICAgICAgICAgICAgIHJldHVybiAmKGFycmF5Lmxlbmd0aCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm5vbkFycmF5UmVm
QXJyYXlMZW5ndGhTdWNjZWVkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgdWludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdFs3NTRdIGFy
cmF5OwotICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKLSAgICAgICAgfQotICAgICAg
ICB1aW50IGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs3NTRdIGFycmF5OwotICAg
ICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc1
NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJi
YXIiLCBbXSksIDc1NCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFs
aWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxp
YXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2Qz
NTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcxY2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2It
YWxpYXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mg
ZmllbGRTaG91bGRCZU51bGwKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2FycmF5LW9vYi1hbGlhcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9v
Yi1hbGlhcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjEzMmEwOTdmYWYx
N2Q5NmQyYmI1ODA4MWVhZGE4ZDlhOTUzZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxp
YXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+b29iIG9uIGFycmF5cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5maWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4
OwotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICBpbnQgejsKLSAgICAgICAgfQotICAg
ICAgICBib29sIGZvbyh1aW50IGkpIHsKLSAgICAgICAgICAgIEZvb1sxMF0gZm9vczsKLSAgICAg
ICAgICAgIHRocmVhZCBGb28qIGZvbyA9ICZmb29zW2ldOwotICAgICAgICAgICAgdGhyZWFkIGlu
dCogcHRyID0gJihmb28tPnopOwotICAgICAgICAgICAgKnB0ciA9IDQyOwotICAgICAgICAgICAg
cmV0dXJuIGZvb3NbMF0ueiA9PSA0MjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmFyKCkg
ewotICAgICAgICAgICAgRm9vWzEwXSBmb29zOwotICAgICAgICAgICAgdGhyZWFkIEZvbyogZm9v
ID0gJmZvb3NbNDI0MjQyXTsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICYoZm9vLT56
KTsKLSAgICAgICAgICAgIHJldHVybiBmb28gPT0gJmZvb3NbMF07Ci0gICAgICAgIH0KLQotICAg
ICAgICBmbG9hdDMgcmV0RmxvYXQzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZs
b2F0MygxMC4wLCAwLjAsIDAuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdFsxMF0gcmV0
RmxvYXRBcnJheSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0WzEwXSB2OwotICAgICAg
ICAgICAgdlswXSA9IDEwLjA7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgYmF6KCkgewotICAgICAgICAgICAgcmV0dXJuIHJldEZsb2F0MygpWzQyXSA9
PSAxMC4wOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBqYXooKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmV0RmxvYXRBcnJheSgpWzQyXSA9PSAxMC4wOwotICAgICAgICB9Ci0gICAgYDsKLQot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VVaW50KGkpXSksIGkg
PT09IDAgPyB0cnVlIDogZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgxMCldKSwgdHJ1ZSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VV
aW50KDEwMDAwMDApXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgweGZmZmZmZmZmKV0pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJiYXIi
LCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImJheiIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiamF6IiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGU2NmE1NWZiNjE2YjE1MzQ5ZWFjNDA5ZGQ2NDA3ZGEzYTA4ZDcz
NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgYXJyYXlSZWZUb0FycmF5UmVmCi1QQVNTIGFz
c2lnbkxlbmd0aAotUEFTUyBhc3NpZ25MZW5ndGhIZWxwZXIKLVBBU1MgYnVpbGRBcnJheVRoZW5T
dW1JdAotUEFTUyBidWlsZEFycmF5VGhlblN1bUl0VXNpbmdBcnJheVJlZmVyZW5jZQotUEFTUyBw
YXNzaW5nQXJyYXlUb0Z1bmN0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJy
YXktc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDE1MzFi
YmM1NjEyZTc0YTg2ZTlkNjJhMmU4N2EyYmE2MWNlM2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1z
cGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYXJyYXlSZWZUb0FycmF5UmVm
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10g
cCA9IEB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdW10gcHAgPSBAcDsKLSAgICAgICAgICAg
IGludFtddGhyZWFkW110aHJlYWQgcXEgPSBwcDsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAw
OwotICAgICAgICAgICAgeCA9IDQyOwotICAgICAgICAgICAgcFswXSA9IDc2OwotICAgICAgICAg
ICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBwcFswXVswXSA9IDM5OwotICAgICAgICAgICAg
cmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBxcVswXVswXSA9IDgzOwotICAgICAgICAgICAgcmVz
dWx0ICs9IHg7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhd2FpdCBjaGVja0ZhaWwocHJvZ3JhbSk7Ci19Ci0KLXdobHNsVGVzdHMuYXNzaWduTGVu
Z3RoID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0
Wzc1NF0gYXJyYXk7Ci0gICAgICAgICAgICAgICAgKEBhcnJheSkubGVuZ3RoID0gNDI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5hc3NpZ25M
ZW5ndGhIZWxwZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICB2b2lkIGJhcih0aHJlYWQgZmxvYXRbXSBhcnJheSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBhcnJheS5sZW5ndGggPSA0MjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
bG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAgICAgIGJhcihAYXJyYXkpOwotICAgICAgICAg
ICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5idWlsZEFycmF5VGhlblN1bUl0ID0g
YXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAgICAgIGZvciAodWlu
dCBpID0gMDsgaSA8IDQyOyBpID0gaSArIDEpCi0gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBp
bnQoaSArIDUpOwotICAgICAgICAgICAgaW50IHJlc3VsdDsKLSAgICAgICAgICAgIGZvciAodWlu
dCBpID0gMDsgaSA8IDQyOyBpID0gaSArIDEpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVz
dWx0ICsgYXJyYXlbaV07Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCA0MiAqIDUgKyA0MiAqIDQxIC8gMik7Ci19Ci0KLXdobHNsVGVzdHMuYnVpbGRB
cnJheVRoZW5TdW1JdFVzaW5nQXJyYXlSZWZlcmVuY2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIodGhyZWFkIGludFtdIGFycmF5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAg
ICAgICAgICAgICAgIGFycmF5W2ldID0gaW50KGkgKyA1KTsKLSAgICAgICAgICAgIGludCByZXN1
bHQ7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGFycmF5W2ldOwotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQGFycmF5KTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIgKiA1ICsgNDIgKiA0MSAvIDIpOwotfQotCi13aGxz
bFRlc3RzLnBhc3NpbmdBcnJheVRvRnVuY3Rpb24gPSBhc3luYyAoKSA9PgotewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
WzEwXSBhcnI7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgYXJyW2ldID0gaW50KGkpICsgMTsKLSAgICAgICAgICAgIHJl
dHVybiBzdW0oYXJyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBzdW0oaW50WzEwXSB4cykK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IHQgPSAwOwotICAgICAgICAgICAgZm9yICh1aW50
IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgdCA9IHQgKyB4c1tp
XTsKLSAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA1NSk7Ci19
Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFjMTQ5NDgyZDU5OWI3YzY0OGI1OWYxYjBhOWY1ODdhMjljYmNmMDAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyAr
MCwwIEBACi0KLVBBU1MgYmFkQWRkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9iYWQtYWRkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWQ3NzIzNWE0OGU5NDJjMzI1MGVmZTI3
YzQwMTY1MGVjYzFkM2UzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkJh
ZCBhZGQuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYmFkQWRkID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIHZvaWQgZm9vKGludCB4LCB1aW50IHkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdWludCB6ID0geCArIHk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDczNDg2ZDc5NDg5NTdiN2UyYzFlMDU2OTg3NDI1NzNjZTExOTgwNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDQgKzAsMCBAQAotCi1QQVNTIGJhZEludExpdGVyYWxGb3JJbnQKLVBBU1MgYmFkSW50TGl0
ZXJhbEZvckZsb2F0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQt
bGl0ZXJhbHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4ZWRjZThmNThlYmM2Y2JkYWI0N2My
MzRjZGEwM2Y1NGY0ODU5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuYmFkSW50TGl0ZXJhbEZvckludCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKCAidm9pZCBmb28oKSB7IGludCB4ID0gMzAwMDAwMDAwMDsgfSIpOwotfQotCi13
aGxzbFRlc3RzLmJhZEludExpdGVyYWxGb3JGbG9hdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKCJ2b2lkIGZvbygpIHsgZmxvYXQgeCA9IDUwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDA7IH0iKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3
aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3
aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzI4NWM0NjM0NjVmM2E5ZTQyZDA0ZmYzNDQ4NTE3ODg1ZjM5NTQ4OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Yml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAg
QEAKLQotUEFTUyBib29sQml0QW5kCi1QQVNTIGJvb2xCaXRPcgotUEFTUyBib29sQml0WG9yCi1Q
QVNTIGJvb2xCaXROb3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jp
dHdpc2UtYm9vbC1vcHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJv
b2wtb3BzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOTdmZjI3OWY3ZGEz
NTUzNWEwYjc1YjE5ZjQwYzBkMjhjOWJhMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1v
cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRl
bnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgot
PHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hs
c2xUZXN0cy5ib29sQml0QW5kID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHNvdXJjZSA9IGAK
LSAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhICYgYjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICB7Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0
cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRy
dWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwg
W21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZh
bHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1
ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xCaXRPciA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJv
b2wgYSwgYm9vbCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSB8IGI7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUp
XSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBl
eHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1h
a2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VC
b29sKHRydWUpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAi
Zm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgIH0KLX07Ci0KLXdobHNsVGVzdHMuYm9vbEJpdFhvciA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
ewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJm
b28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wo
ZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1
cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1
bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxz
ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRl
c3RzLmJvb2xCaXROb3QgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gYAotICAg
ICAgICBib29sIGZvbyhib29sIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB+YTsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZh
bHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7Ci0gICAgfQotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTVlZTZhN2ZhZGU2M2QyMjBlZTAx
MDEwZjVmYWZkZDZiZDgzODgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgYm9vbE1hdHJpeAotUEFT
UyBib29sTWF0cml4MgotUEFTUyBib29sTWF0cml4MwotUEFTUyBib29sTWF0cml4NAotUEFTUyBi
b29sTWF0cml4NQotUEFTUyBib29sTWF0cml4QW55Ci1QQVNTIGJvb2xNYXRyaXhBbnkyCi1QQVNT
IGJvb2xNYXRyaXhBbGwKLVBBU1MgYm9vbE1hdHJpeEFsbDIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYm9vbC1tYXRyaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg5
NjVmY2NkOWZlNWM0NTMxOWM1ZjhiYTExYTZkMDUxZjZjOGU2Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9v
bC1tYXRyaXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmJvb2wgbWF0cml4LjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLmJvb2xNYXRyaXggPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBib29sMih0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICBt
WzFdID0gYm9vbDIodHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gaW50KG1bMF1bMF0p
ICsgaW50KG1bMF1bMV0pICsgaW50KG1bMV1bMF0pICsgaW50KG1bMV1bMV0pOwotICAgICAgICB9
Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCAzKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeDIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiAhbVswXVsxXSAmJiBtWzFdWzBdICYmICFt
WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLmJvb2xNYXRyaXgzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1bMF0gJiYgIW1b
MF1bMV0gJiYgbVsxXVswXSAmJiAhbVsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4NCA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJv
b2wyeDMgbSA9IGJvb2wyeDModHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiBtWzBdWzFdICYmIG1bMF1bMl0gJiYgIW1b
MV1bMF0gJiYgIW1bMV1bMV0gJiYgIW1bMV1bMl07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10p
LCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeDUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBi
b29sMngyIG07Ci0gICAgICAgICAgICBtWzBdID0gYm9vbDIodHJ1ZSwgZmFsc2UpOwotICAgICAg
ICAgICAgbVsxXSA9IGJvb2wyKHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBtWzBd
WzBdICYmICFtWzBdWzFdICYmIG1bMV1bMF0gJiYgIW1bMV1bMV07Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFueSA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OwotICAgICAgICAgICAgcmV0dXJuICFhbnkobSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10p
LCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFueTIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAg
ICBib29sMngyIG0gPSBib29sMngyKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAg
ICAgICAgcmV0dXJuIGFueShtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4QWxsID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBt
ID0gYm9vbDJ4Mih0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4g
IWFsbChtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5ib29sTWF0cml4QWxsMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKG0pOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2Jvb2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29scy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMWM5MmVmNDhiZDcw
M2EyMjRkNWFmY2M2OTQ3YzczN2I3NmI0YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIGJvb2xlYW5NYXRoCi1Q
QVNTIGlkZW50aXR5Qm9vbAotUEFTUyBsaXRlcmFsQm9vbAotUEFTUyBvcGVyYXRvckJvb2wKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWUzMjRhZTM2MzRkYWZiNGIzZTZhZTk1NzYxZGJlMDBjOGI0M2QzYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYm9vbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkJvb2xzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLmJvb2xlYW5NYXRoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZSAmJiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlICYmIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IGJvb2wgZm9vMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSAmJiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZSAmJiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSB8fCB0cnVlOwotICAgICAgICB9Ci0g
ICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlIHx8
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZSB8fCB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9v
OCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCBmYWxzZTsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgZmFsc2UpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIs
IFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzciLCBbXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vOCIs
IFtdKSwgZmFsc2UpOwotfQotCi0KLXdobHNsVGVzdHMuaWRlbnRpdHlCb29sID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1cm4geDsgfSI7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsK
LX0KLQotd2hsc2xUZXN0cy5saXRlcmFsQm9vbCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJv
Z3JhbSA9ICJib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0iOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLX0KLQot
d2hsc2xUZXN0cy5vcGVyYXRvckJvb2wgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGJvb2xGcm9tVWludEZhbHNlKCkgeyByZXR1cm4gYm9vbCh1aW50
KDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tVWludFRydWUoKSB7IHJldHVybiBib29sKHVp
bnQoMSkpOyB9Ci0KLSAgICAgICAgYm9vbCBib29sRnJvbUludEZhbHNlKCkgeyByZXR1cm4gYm9v
bChpbnQoMCkpOyB9Ci0gICAgICAgIGJvb2wgYm9vbEZyb21JbnRUcnVlKCkgeyByZXR1cm4gYm9v
bChpbnQoMSkpOyB9Ci0KLSAgICAgICAgYm9vbCBib29sRnJvbUZsb2F0RmFsc2UoKSB7IHJldHVy
biBib29sKGZsb2F0KDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tRmxvYXRUcnVlKCkgeyBy
ZXR1cm4gYm9vbChmbG9hdCgxKSk7IH0KLSAgICAgICAgYm9vbCBib29sRnJvbUZsb2F0TmFOKGZs
b2F0IGFyZykgeyByZXR1cm4gYm9vbChhcmcpOyB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiYm9vbEZyb21VaW50RmFsc2UiLCBb
XSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImJvb2xGcm9tVWludFRydWUiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUludEZhbHNlIiwgW10p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJib29sRnJvbUludFRydWUiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUZsb2F0RmFsc2UiLCBbXSks
IGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgImJvb2xGcm9tRmxvYXRUcnVlIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tRmxvYXROYU4iLCBbbWFrZUZs
b2F0KHByb2dyYW0sIE5hTildKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdDMgeDsKLSAgICAgICAgICAgICAgICBib29sIHIgPSBib29sKHgpOwotICAgICAg
ICAgICAgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBmbG9hdDN4MyB4OwotICAgICAgICAgICAgICAgIGJvb2wgciA9IGJvb2woeCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9idWZmZXItZnJhZ21lbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9idWZmZXItZnJhZ21lbnQtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9idWZmZXItZnJhZ21lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1
MTMyYTBjOTA2OWQwZjI4YjYwZjcwN2RiNjNkNTkwODFmZmRlOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVm
ZmVyLWZyYWdtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFk
ZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uLCBjb25zdGFudCBmbG9hdFtdIHRoZUJ1ZmZl
ciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCh0aGVC
dWZmZXJbMF0sIHRoZUJ1ZmZlclswXSwgdGhlQnVmZmVyWzBdLCAxLjApOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0
aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlk
ZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIx
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBb
MCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZl
ci1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MzFkOGU5MWUzMjkzYTZmNTNkNWQ5
OGJhNzZlYTI3MzM0YTUyNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVh
ZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgdWludFtdIGJ1
ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJ
RCkgewotICAgIGJ1ZmZlclswXSA9IGJ1ZmZlci5sZW5ndGg7Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRl
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVy
In07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBb
e2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0g
e2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0
ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDEzMzc7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0g
ICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgYnVmZmVyVWludDMyQXJyYXkgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlclVpbnQzMkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVm
ZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJp
bmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9Owot
ICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQs
IGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZm
ZXIsIDAsIDEgKiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCk7Ci0gICAgY29uc3QgY29t
cHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNo
KCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRB
c3luYygpOwotICAgIGNvbnN0IHJlc3VsdFVpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHJl
c3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdFVpbnQzMkFycmF5WzBdID09IDEzMzcp
Ci0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgi
Iik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2Ni
ZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tn
cm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZTE3ZDZlMDE0ZTI4MzVhYzUwOWI0ZmQ3Mjc5MWI3MDQ1Zjg4MWM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRl
cihjb25zdGFudCBmbG9hdDRbXSBidWZmZXIgOiByZWdpc3RlcihiMCksIHVpbnQgaWQgOiBTVl9W
ZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIGJ1ZmZlcltpZF07Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLjAsIDEuMCwgMS4wLCAxLjAp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRl
eEJ1ZmZlcnM6IFtdfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gNCAqIDQgKiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQ7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzRdID0g
LTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVs3XSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheVsxMV0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsK
LSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgcmVzb3VyY2VC
dWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFy
cmF5WzE1XSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307
Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91
dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWlu
RGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBz
d2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJl
KCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAx
LCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRw
dXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9y
ZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xv
ckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVz
Y3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rl
ci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJd
KTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYnVpbHRpbi12ZWN0b3JzLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTMxOTc4MDc5MmMzMzdhODUxN2EwMzJjNGQzMzRhZTZjMDM1ZGY4Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpblZlY3RvckdldHRlcnMKLVBBU1MgYnVpbHRp
blZlY3RvclNldHRlcnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1
aWx0aW4tdmVjdG9ycy0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12
ZWN0b3JzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwYzBmMmFkZjQy
NzI5MWM0MWMxYWRiZmViYjYxOGIxNGIwNzA1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0
b3JzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24s
Ci0gICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5j
dGlvbgotfTsKLWNvbnN0IHR5cGVOYW1lcyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwot
Y29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQgXTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5Iiwg
InoiLCAidyIgXTsKLWNvbnN0IGluaXRpYWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13
aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JHZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLQotICAgIGxl
dCB0ZXN0cyA9IFtdOwotICAgIGxldCBzcmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFtZSBv
ZiB0eXBlTmFtZXMpIHsKLSAgICAgICAgZm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1gOwot
ICAgICAgICAgICAgICAgIHNyYyArPSBgJHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5
cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlwZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlzdC5z
bGljZSgwLCBzaXplKS5qb2luKCIsICIpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHguJHtlbGVtZW50c1tpXX07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBgOwotICAgICAgICAgICAgICAgIHRlc3RzLnB1c2goeyB0eXBl
OiB0eXBlTmFtZSwgbmFtZTogZnVuY3Rpb25OYW1lLCBleHBlY3RhdGlvbjogaW5pdGlhbGl6ZXJM
aXN0W2ldIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IHBy
b2dyYW0gPSBzcmM7Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBjb25z
dCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2hlY2tGdW5jKHByb2dyYW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0LmV4cGVjdGF0
aW9uKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JTZXR0ZXJzID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgdGVzdHMgPSBbXTsKLSAgICBsZXQgc3JjID0gIiI7Ci0gICAg
Zm9yIChsZXQgdHlwZU5hbWUgb2YgdHlwZU5hbWVzKSB7Ci0gICAgICAgIGZvciAobGV0IHNpemUg
b2Ygc2l6ZXMpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXpl
fSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7
ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0o
JHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHguJHtlbGVtZW50c1tpXX0gPSAzNDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geC4ke2VsZW1lbnRzW2ldfTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGA7Ci0gICAgICAgICAgICAgICAgdGVz
dHMucHVzaCh7IHR5cGU6IHR5cGVOYW1lLCBuYW1lOiBmdW5jdGlvbk5hbWUsIGV4cGVjdGF0aW9u
OiAzNCB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBwcm9n
cmFtID0gc3JjOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3Qg
Y2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0ZXN0LnR5cGVdOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFtLCB0ZXN0Lm5hbWUsIFtdKSwgdGVzdC5leHBlY3RhdGlv
bik7Ci0gICAgfQotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3Jz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI0OTFmOWM1YTlk
NDFkZmFmZjAzNjBhMWFmMDA1YzRkOWZmODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3Rv
cnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVp
bHRpblZlY3RvckluZGV4U2V0dGVycwotUEFTUyBidWlsdGluVmVjdG9ycwotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk5NWM2MTk5YTcwNmE4YmFmOGQ2NGNmMWVlZTg5ZjRlNmIyNjUyMWEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9IHsKLSAgICAi
dWludCI6IGNhbGxVaW50RnVuY3Rpb24sCi0gICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAg
ICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLWNvbnN0IHR5cGVOYW1lcyA9IFsgInVp
bnQiLCAiaW50IiwgImZsb2F0IiBdOwotY29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQgXTsKLWNvbnN0
IGVsZW1lbnRzID0gWyAieCIsICJ5IiwgInoiLCAidyIgXTsKLWNvbnN0IGluaXRpYWxpemVyTGlz
dCA9IFsgMSwgMiwgMywgNCBdOwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JJbmRleFNldHRl
cnMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBzcmMgPSAi
IjsKLSAgICBmb3IgKGxldCB0eXBlTmFtZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAgZm9yIChs
ZXQgc2l6ZSBvZiBzaXplcykgewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0eXBlTmFt
ZX0ke3NpemV9JHtlbGVtZW50c1tpXX1gOwotICAgICAgICAgICAgICAgIHNyYyArPSBgJHt0eXBl
TmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlwZU5hbWV9
JHtzaXplfSgke2luaXRpYWxpemVyTGlzdC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIpfSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeFske2l9XSA9IDM0OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB4WyR7aX1dOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgYDsKLSAgICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHsg
dHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1bmN0aW9uTmFtZSwgZXhwZWN0YXRpb246IDM0IH0pOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IHByb2dyYW0gPSBzcmM7
Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBjb25zdCBjaGVja0Z1bmMg
PSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2hl
Y2tGdW5jKHByb2dyYW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9uKTsKLSAgICB9
Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAg
fQotICAgICAgICBpbnQgZm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGlu
dDIoMywgNCk7Ci0gICAgICAgICAgICBpbnQzIGIgPSBpbnQzKGEsIDUpOwotICAgICAgICAgICAg
cmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQzIGEgPSBpbnQzKDMsIDQsIDUpOwotICAgICAgICAgICAgaW50NCBiID0g
aW50NCg2LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAg
IGludCBmb280KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsK
LSAgICAgICAgICAgIGludDIgYiA9IGludDIoNSwgNik7Ci0gICAgICAgICAgICBpbnQ0IGMgPSBp
bnQ0KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAg
Ym9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50NCBhID0gaW50NCgzLCA0LCA1
LCA2KTsKLSAgICAgICAgICAgIGludDIgYiA9IGludDIoNCwgNSk7Ci0gICAgICAgICAgICBpbnQ0
IGMgPSBpbnQ0KDMsIGIsIDYpOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIg
YSA9IGludDIoNCwgNSk7Ci0gICAgICAgICAgICBpbnQzIGIgPSBpbnQzKDMsIGEpOwotICAgICAg
ICAgICAgaW50MyBjID0gaW50MygzLCA0LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYiA9
PSBjKTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZvb3UoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB1aW50MiBhID0gdWludDIoMywgNCk7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAg
ICAgICAgfQotICAgICAgICB1aW50IGZvb3UyKCkKLSAgICAgICAgewotICAgICAgICAgICAgdWlu
dDIgYSA9IHVpbnQyKDMsIDQpOwotICAgICAgICAgICAgdWludDMgYiA9IHVpbnQzKGEsIDUpOwot
ICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBmb291Mygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQzIGEgPSB1aW50MygzLCA0LCA1KTsKLSAgICAg
ICAgICAgIHVpbnQ0IGIgPSB1aW50NCg2LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwot
ICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vdTQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1
aW50MiBhID0gdWludDIoMywgNCk7Ci0gICAgICAgICAgICB1aW50MiBiID0gdWludDIoNSwgNik7
Ci0gICAgICAgICAgICB1aW50NCBjID0gdWludDQoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4g
Y1syXTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvb3U1KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdWludDQgYSA9IHVpbnQ0KDMsIDQsIDUsIDYpOwotICAgICAgICAgICAgdWludDIgYiA9
IHVpbnQyKDQsIDUpOwotICAgICAgICAgICAgdWludDQgYyA9IHVpbnQ0KDMsIGIsIDYpOwotICAg
ICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9v
dTYoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoNCwgNSk7Ci0gICAg
ICAgICAgICB1aW50MyBiID0gdWludDMoMywgYSk7Ci0gICAgICAgICAgICB1aW50MyBjID0gdWlu
dDMoMywgNCwgNik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgZm9vZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0g
ZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBmb29mMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0gZmxv
YXQyKDMuLCA0Lik7Ci0gICAgICAgICAgICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1Lik7Ci0gICAg
ICAgICAgICByZXR1cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MyBhID0gZmxvYXQzKDMuLCA0LiwgNS4pOwotICAg
ICAgICAgICAgZmxvYXQ0IGIgPSBmbG9hdDQoNi4sIGEpOwotICAgICAgICAgICAgcmV0dXJuIGJb
MV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZjQoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAgICAgZmxvYXQyIGIgPSBm
bG9hdDIoNS4sIDYuKTsKLSAgICAgICAgICAgIGZsb2F0NCBjID0gZmxvYXQ0KGEsIGIpOwotICAg
ICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb29mNSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NCBhID0gZmxvYXQ0KDMuLCA0LiwgNS4sIDYuKTsK
LSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDQuLCA1Lik7Ci0gICAgICAgICAgICBmbG9h
dDQgYyA9IGZsb2F0NCgzLiwgYiwgNi4pOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGMp
OwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vZjYoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmbG9hdDIgYSA9IGZsb2F0Mig0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQzIGIgPSBmbG9h
dDMoMy4sIGEpOwotICAgICAgICAgICAgZmxvYXQzIGMgPSBmbG9hdDMoMy4sIDQuLCA2Lik7Ci0g
ICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28y
IiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vMyIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBbXSksIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCBmYWxz
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b291IiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvb3UyIiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U0IiwgW10pLCA1KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U1IiwgW10p
LCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvb3U2IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZiIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjIiLCBbXSksIDQpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YzIiwgW10p
LCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb29mNCIsIFtdKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJmb29mNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNiIsIFtdKSwgZmFsc2UpOwotfTsKLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jYXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIyNDc4ZjczYzZmNTRlMTU4NTVmOGYwZjI3Y2FlNzBlMjNkNjQxZTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAot
Ci1QQVNTIGNhc3RzCi1QQVNTIHNlbGZDYXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvY2FzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWY1YzhiZDY5MGU4ZDRmYmEzNWE0
YTMxYTg3YzY3YmQxNzYwNGYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5C
YWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmNhc3RzID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7
Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBzdHJ1Y3QgQmFyIHsKLSAg
ICAgICAgICAgIGludCB5OwotICAgICAgICB9Ci0gICAgICAgIG9wZXJhdG9yIEJhcihGb28gZm9v
KSB7Ci0gICAgICAgICAgICBCYXIgYjsKLSAgICAgICAgICAgIGIueSA9IGZvby54ICsgNzsKLSAg
ICAgICAgICAgIHJldHVybiBiOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooaW50IHopIHsK
LSAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICBmb28ueCA9IHo7Ci0gICAgICAgICAg
ICBCYXIgYiA9IEJhcihmb28pOwotICAgICAgICAgICAgcmV0dXJuIGIueTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImJheiIsIFttYWtlSW50KDYpXSksIDEzKTsKLX0KLQotd2hsc2xUZXN0cy5zZWxmQ2FzdHMgPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsK
LSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9vLnggPSAyMTsKLSAgICAg
ICAgICAgIEZvbyBiYXIgPSBGb28oZm9vKTsKLSAgICAgICAgICAgIGJhci54ID0gNDI7Ci0gICAg
ICAgICAgICByZXR1cm4gZm9vLnggKyBiYXIueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEg
KyA0Mik7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQt
dHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5
LXdyaXRlLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxl
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVh
ZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOGY2YTc1MmI2N2IwZTc2MGJjNWUy
MzI0YjNjZGFiZDhiOTZmMjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBl
LW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
ODAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxz
Y3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVy
KHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0
NCB2ZWM7Ci0gICAgdmVjWzBdICs9IDQyLjA7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCld
ID0gdmVjWzBdOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBz
aXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1
ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8
IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVy
ID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVz
dWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JB
R0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsK
LSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
dWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5n
OiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3Jp
cHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5k
aW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZl
clRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwot
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0K
LSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJl
YWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0g
PT0gNDIpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTRlNzY5MWY4NTQ2MTJh
ZTE2YjE1ODExMjY3MWZmZjhkOWU5ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyB2ZWN0b3JDbGFt
cAotUEFTUyBtYXRyaXhDbGFtcAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY2xhbXAtc3RkbGliLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3Rk
bGliLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZjM0NmIwMjU3MDVhYTgx
NWI5ODc0NjJkMWYyMWQ5YjNlOWUwMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5DbGFtcC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2ls
b24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yQ2xhbXAgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKGZsb2F0IGEsIGZsb2F0IGIp
IHsKLSAgICAgICAgICAgIGZsb2F0MiB4OwotICAgICAgICAgICAgeFswXSA9IGE7Ci0gICAgICAg
ICAgICB4WzFdID0gYjsKLSAgICAgICAgICAgIGZsb2F0MiBib3R0b20gPSBmbG9hdDIoMSwgNSk7
Ci0gICAgICAgICAgICBmbG9hdDIgdG9wID0gZmxvYXQyKDEwLCA3KTsKLSAgICAgICAgICAgIHgg
PSBjbGFtcCh4LCBib3R0b20sIHRvcCk7Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55Owot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDEyKSwgbWFrZUZsb2F0KDIw
KV0pLCAxMCAvIDcsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNh
bGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDgpLCBtYWtlRmxvYXQo
NildKSwgOCAvIDYsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNh
bGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KC0xMCksIG1ha2VGbG9h
dCg2KV0pLCAxIC8gNiwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeENsYW1wID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbyhm
bG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiB4OwotICAgICAgICAgICAgeFswXSA9IGZsb2F0MihhLCBiKTsKLSAgICAgICAgICAgIHhbMV0g
PSBmbG9hdDIoYywgZCk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGJvdHRvbSA9IGZsb2F0Mngy
KGZsb2F0MigxLCAyKSwgZmxvYXQyKDMsIDQpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIHRvcCA9
IGZsb2F0MngyKGZsb2F0MigxMCwgMTEpLCBmbG9hdDIoMTIsIDEzKSk7Ci0KLSAgICAgICAgICAg
IHggPSBjbGFtcCh4LCBib3R0b20sIHRvcCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4WzBdWzBd
IC8gMSArIHhbMF1bMV0gLyAyICsgeFsxXVswXSAvIDMgKyB4WzFdWzFdIC8gNDsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdCgyKSwgbWFrZUZsb2F0KC0xKSwgbWFrZUZs
b2F0KDQpLCBtYWtlRmxvYXQoMTApXSksIDIvMSArIDIvMiArIDQvMyArIDEwLzQsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUZsb2F0KDEwMCksIG1ha2VGbG9hdCgxMDApLCBtYWtlRmxvYXQoMTAw
KSwgbWFrZUZsb2F0KDEwMCldKSwgMTAvMSArIDExLzIgKyAxMi8zICsgMTMvNCwgZXBzaWxvbik7
Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlRmxvYXQoLTEwMCksIG1ha2VGbG9hdCgtMTAwKSwgbWFrZUZsb2F0KC0x
MDApLCBtYWtlRmxvYXQoLTEwMCldKSwgMS8xICsgMi8yICsgMy8zICsgNC80LCBlcHNpbG9uKTsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VGbG9hdChOYU4pLCBtYWtlRmxvYXQoTmFOKSwgbWFrZUZsb2F0KE5hTiks
IG1ha2VGbG9hdChOYU4pXSksIDEvMSArIDIvMiArIDMvMyArIDQvNCwgZXBzaWxvbik7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkzZTg4YTZkY2VhOTc1NWEwOTljY2M5NmQ1NjAx
MDFlZmJiMWYxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNvbW1lbnRQYXJzaW5nCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiZTQzMGJiMTc5ODFhOTA2YzBjMmM1ZGJkNzc2NmQ0NDdk
NTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qg
c3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jb21tZW50
UGFyc2luZyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgLyog
dGhpcyBjb21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLwotICAgICAg
ICBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAg
ICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1
cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
bXB1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0
NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y29tcHV0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTM4MWY4NDAxODhh
ZDAyZTU5YzBmOTExMGVjM2UxZDdmZjJmZTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10
aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0
W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRo
cmVhZElEKSB7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhy
ZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNv
bnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
M10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RP
UkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRp
bmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJp
bmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJp
bmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFw
UmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVsw
XSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0g
OCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAg
ICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2Vk
KCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjI0YmM3NzZjMGNiZmZmOGJmYmNiMWE3OWU3NGMyY2Vl
MWIxM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvcHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0KLVBBU1MgY29weUFycmF5Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWIzMmIwMTUyY2I2NWU4Y2QwNGVk
MGIzMGE0MDI2ZmRiYzcyOThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkNv
cHlpbmcuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuY29weUFycmF5
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0geHM7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9IGlu
dChpKSArIDE7Ci0gICAgICAgICAgICBpbnRbMTBdIHlzID0geHM7Ci0gICAgICAgICAgICBmb3Ig
KHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9
IDA7Ci0gICAgICAgICAgICBpbnQgc3VtID0gMDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0g
MDsgaSA8IHlzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIHlzW2ld
OwotICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNTUpOwot
fQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDMzZTZjYTY2MmU0NTAz
OWI3YWRlMjg5OWU1ZGI0NTgzZGQ5NmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVy
aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNh
bGxBcmd1bWVudHNBcmVDb3BpZWRJbW1lZGlhdGVseUFmdGVyRXZhbHVhdGlvbgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTljOTZjMDVmNTRlNzA5MTZjZTdhNjU4M2U5Njk4
NTc5MjI2ZjEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5EZXJlZmVyZW5jZSBvcmRlcmluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5jYWxsQXJndW1lbnRzQXJlQ29waWVkSW1tZWRpYXRlbHlBZnRlckV2YWx1YXRp
b24gPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcig1KSArICpiYXIoNyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoaW50IHZhbHVlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgeCA9IHZhbHVlOwotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDEyKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVy
ZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2st
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Ut
cG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hl
Y2suaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJhNzEzY2I0MjNjNzk0MzVm
YzNlYWNmZDhiMzdjYWJmMDEwZDhiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRl
ci1zaG91bGQtdHlwZS1jaGVjay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0K
LXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0
OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHIyID0gJnNoYWRlOwotICAgICpwdHIyID0gc2hhZGU7
Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSAq
cHRyMjsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0g
InRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRG
YWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAx
NX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0g
bnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1h
dDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJM
b2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRy
aWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtz
dHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9
IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBb
e2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7
dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0
aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNh
bXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsK
LQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGlu
Z307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENo
YWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25z
dCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0
dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0
ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBi
OiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBv
dXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBz
dG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtj
b2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNz
RGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZl
cjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2Nv
bW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2
NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10
eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1j
aGVja2VyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBl
LWNoZWNrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1MWRiODU2MjQ2
MzhhNjU1ODg5NDkwYTRhY2I0NzNhZjUzNjRkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Bl
ci10eXBlLWNoZWNrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotc3RydWN0IFBvaW50IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0IHk7
Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIo
ZGV2aWNlIFBvaW50W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBT
Vl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQgeCA9IGJ1ZmZlclswXS54OwotICAgIGZs
b2F0IHkgPSBidWZmZXJbMF0ueTsKLSAgICB4ICs9IDEuMDsKLSAgICB5ICs9IDEuMDsKLSAgICBi
dWZmZXJbMF0ueCA9IHg7Ci0gICAgYnVmZmVyWzBdLnkgPSB5OwotfQotYDsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0
ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRl
ciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9
IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogMjsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAg
ICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSA0Mi4wOwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IDQzLjA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJl
c3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVm
ZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
e2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRH
cm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5j
b3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAg
ICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQ
YXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZm
ZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJB
cnJheVswXSA9PSA0My4wCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNDQu
MCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJl
YWstZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
LWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWU3
ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdo
aWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0Js
YWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rv
LXdoaWxlLWxvb3AtYnJlYWsuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGls
ZS1sb29wLWJyZWFrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMjlmNDk5
YWI3ODE3YWExMmIxZjc5Y2I0ZDA5MjUwNjZmODFjOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxl
LWxvb3AtYnJlYWsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXgg
VmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAg
IGJvb2wgYiA9IHRydWU7Ci0gICAgZG8gewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZhbHNlKSk7Ci0K
LSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFk
ZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9Owot
ICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2Nh
dGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1
dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJp
ZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307
Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0
b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVy
dGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9u
U3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBs
ZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5W
RVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1
ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShy
ZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJh
eVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3Qg
YmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307
Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91
dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWlu
RGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBz
d2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJl
KCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAx
LCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRw
dXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9y
ZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xv
ckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVz
Y3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRk
ODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250
aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGlu
dWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRmNjc3YTg5NjI3MWQ0MDNm
ODMyNzViMmZmYjExOTRjMWIwY2FmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250
aW51ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNl
ID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhP
dXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBi
ID0gdHJ1ZTsKLSAgICB1aW50IGkgPSAwOwotICAgIGRvIHsKLSAgICAgICAgaWYgKGIpIHsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gMC4wOwotICAg
IH0gd2hpbGUgKChpID0gaSArIDEsIHNoYWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkpOwotCi0g
ICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24g
c3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJm
bG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRp
b246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRl
cyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRl
OiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5w
dXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owot
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5k
aW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBl
bGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRl
eFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0
YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVD
b3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVS
VEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0KLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZm
ZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlb
MF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJC
aW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJp
bmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9Owot
ICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQs
IGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBj
b250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRl
c2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dh
cENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7
Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgp
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZh
dWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwg
YTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0
VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVP
cDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0
YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JB
dHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2Ny
aXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwg
WzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFu
ZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBk
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kby13aGlsZS1sb29wLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Yzg5N2E3
MGUxYjg0NDFkMTg5YWUwNWM1Y2I1N2U2Yjk3MDQ3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxl
LWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGRvIHsK
LSAgICAgICAgc2hhZGUgPSAxLjA7Ci0gICAgfSB3aGlsZShmYWxzZSk7Ci0KLSAgICByZXN1bHQu
cG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBz
aGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChz
aGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZp
Y2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZy
YWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVu
dFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxs
TW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xv
cldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNv
bnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9m
ZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9y
bWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJp
YnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRy
aWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0g
MC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0g
ICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7
YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVh
MzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTZjYTZlYjUyYjQ2ODQ1OGRjZmYxNDgz
NmVmOWVkYWMzMzRjNGI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
Ci1lbnVtIERvbnRDcmFzaCB7Ci0gICAgVmFsdWUKLX0KLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRl
KDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAg
IGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBm
b3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1
dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0
cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlu
cHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsK
LQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7Ymlu
ZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZl
cnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZm
ZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMy
QXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVz
b3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsK
LSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJj
ZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5n
OiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3Jp
cHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5k
aW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1h
dDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3Vy
ZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
ID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0
dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdl
dDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiBy
ZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25z
dCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZl
cnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rl
ci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJd
KTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZG90LWV4cHJlc3Npb25zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZG90LWV4cHJlc3Npb25zLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZG90LWV4cHJlc3Npb25zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1N2Ni
MjczMTIzN2U1ZmY1MjIzODMwZTU5MjkxZmZjY2UwNWE1NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1l
eHByZXNzaW9ucy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVy
U291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1Zf
UG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBW
ZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxv
YXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotICAgIHJl
c3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0
NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChk
ZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAg
IGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZs
b2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBh
dHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0
OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2
ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFy
cmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291
cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjog
cmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7
YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91
cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdy
b3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29s
dmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJD
b2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJs
ZS1ub3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3Qt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODZmNWExNTA1N2Fl
NDBmYTNjODYwZjk1ZTA1MjI0ZDcyYTBiM2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGRvdWJsZU5v
dAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWM3Zjc1NjI1NGRiZmI4MWQ4MDE2N2ExNDE2OWQzN2E0NjliMzli
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRvdWJsZU5vdCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgeCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEheDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLX0KLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNl
LWR1cGxpY2F0ZS1jdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hv
dWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9k
dWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NDJhNjEyYjZlMTE0Zjk0OWY0ZmM1Mjg3ZjFhZTAxNDhjMDNlNGE4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
dXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0
IFhZWiB7Ci0gICAgaW50IHg7Ci0gICAgaW50IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXR5cGVkZWYg
WFlaMSA9IFhZWjsKLXR5cGVkZWYgWFlaMiA9IFhZWjsKLXR5cGVkZWYgWFlaMyA9IFhZWjsKLQot
W251bXRocmVhZHMoMiwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2Ug
ZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3Bh
dGNoVGhyZWFkSUQpIHsKLSAgICBpbnQgdmFsdWU7Ci0gICAgZmxvYXQgdmFsdWUyOwotICAgIGlu
dFsxMF0gdmFsdWUzOwotCi0gICAgdGhyZWFkIGludCogeCA9ICZ2YWx1ZTsKLSAgICB0aHJlYWQg
aW50KiB5ID0gJnZhbHVlOwotICAgIHRocmVhZCBmbG9hdCogZjEgPSAmdmFsdWUyOwotICAgIHRo
cmVhZCBmbG9hdCogZjIgPSAmdmFsdWUyOwotICAgIFhZWjEgYTsKLSAgICBYWVoyIGI7Ci0gICAg
WFlaMyBjOwotICAgIHRocmVhZCBpbnRbXSBpbnRBcnJheVJlZjEgPSBAdmFsdWUzOwotICAgIHRo
cmVhZCBpbnRbXSBpbnRBcnJheVJlZjIgPSBAdmFsdWUzOwotICAgIGlmICgqeCA9PSAqeSAmJiB4
ID09IHkpIHsKLSAgICAgICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQo
dGhyZWFkSUQueCldICogMi4wOwotICAgIH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0
KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzog
MCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0
YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUg
PSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7
Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBi
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJy
YXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxv
YXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsK
LSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0g
e2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGlu
ZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmlu
ZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFti
aW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29k
ZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogOCk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZGlzcGF0Y2goMiwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAg
IGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJh
eUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0g
NwotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0
c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDc4NDYwYzY2ZDg4YTI2YzkyMGU3ZjYyZGY1ZmU2NzExM2IyM2EwMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLQotUEFTUyBkdXBsaWNhdGVGdW5jdGlvbnMKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kdXBsaWNhdGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2
ZjZkOGU0Y2NkNmY1NWM4MjVmZmI5OTRkMDIzMmJlNWFhN2YzOGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1
cGxpY2F0ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5kdXBsaWNhdGVGdW5jdGlvbnMgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAg
ICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIHZvaWQgZm9vKGludCB4KSB7IH0KLSAgICAgICAgdHlwZWRlZiBBID0gaW50OwotICAg
ICAgICB2b2lkIGZvbyhBIHgpIHsgfQotICAgIGApOwotCi0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGJhcigpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQot
ICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAg
fQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcigp
OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYmFyKDMpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMyk7Ci0KLSAg
ICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3ImW10odGhyZWFkIGludFtd
IGEsIHVpbnQgYikgewotICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIH0KLSAgICBgKTsK
LQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHVpbnQgb3BlcmF0b3IubGVuZ3RoKHRo
cmVhZCBpbnRbXSBhKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDsKLSAgICAgICAgfQotICAgIGAp
OwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KHRocmVh
ZCBpbnRbXSBhLCB0aHJlYWQgaW50W10gYikgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGJvb2wg
b3BlcmF0b3I9PSh0aHJlYWQgaW50KiBhLCB0aHJlYWQgaW50KiBiKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYjBkN2FkNGIyODg0NmU1OTMxZGVjZjE4
YTkzN2I5OTJmMDhjMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2Fn
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBub1Bv
aW50ZXJzSW5TdHJ1Y3RPckFycmF5Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDI3MmQxYzQwNTE1MTY2MzdhNTExMjBjOTdmMDY4Y2YwZDVkZjdhZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5jb3JyZWN0IHBvaW50ZXIgdXNhZ2UuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMubm9Qb2ludGVyc0luU3RydWN0T3JBcnJheSA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgUyB7IGludCB4OyB0aHJlYWQgaW50KiBw
dHI7IH0KLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqOwotICAgICAgICBzdHJ1Y3Qg
UyB7IGludCB4OyBUIHB0cjsgfQotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IFMgeyB0aHJlYWQgaW50Kls0Ml0g
YXJyOyB9Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLQotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgdGhyZWFkIGludCpb
NDJdIGFycjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAg
ICAgICAgICAgVFs0Ml0gYXJyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoYAotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgaW50Kls0Ml07Ci0gICAgICAgIHZv
aWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2
b2lkIGZvbygpIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgdGhyZWFkIGludCog
cHRyID0gJng7Ci0gICAgICAgICAgICAoJnB0cik7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqW107Ci0g
ICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICB0eXBlZGVmIEkgPSBpbnQ7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJKltd
OwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHR5cGVkZWYgVCA9
IHRocmVhZCBJW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50W107Ci0gICAgICAg
IHR5cGVkZWYgVCA9IHRocmVhZCBJW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7
Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50
KjsKLSAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIEkqOwotICAgICAgICB2b2lkIGZvbygpIHsg
fQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7
Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsK
LSAgICAgICAgICAgIChAYXJyKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAg
ICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKLSAgICAgICAgICAgICgmYXJyKTsKLSAgICAg
ICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJ
ID0gdGhyZWFkIGludFtdOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSSo7Ci0gICAgICAg
IHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vu
c3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2Ni
ZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlh
YmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vu
c3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZmY5NThhMGNlZmUxNDcxNWYyY2VkMDA2YWRhNzAzM2JhMTIx
MzZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0
cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAg
IGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1mbG9hdCBhc3NpZ25Ub1B0cih0aHJl
YWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gKnB0ciA9IHZhbHVlOwot
fQotCi10aHJlYWQgZmxvYXQqIHJlYWxQdHIoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuICZ2
YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiBmaXJzdFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJl
dHVybiByZWFsUHRyKHZhbHVlKTsKLX0KLQotdGhyZWFkIGZsb2F0KiBzZWNvbmRQdHIoZmxvYXQg
dmFsdWUpIHsKLSAgICByZXR1cm4gZmlyc3RQdHIodmFsdWUpOwotfQotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVh
ZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZpcnN0UHRyKHNoYWRlKTsKLSAgICB0aHJlYWQgZmxvYXQq
IHB0clRvU2hhZGUyID0gc2Vjb25kUHRyKDEuMCk7Ci0KLSAgICBmbG9hdCBkdW1teTsKLSAgICB0
aHJlYWQgZmxvYXQqIGR1bW15UHRyID0gJmR1bW15OwotCi0gICAgZHVtbXkgPSBhc3NpZ25Ub1B0
cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15MiA9IHJlYWxQdHIo
c2hhZGUpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQu
c2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3No
YWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQw
ID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZh
cmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxp
ZmV0aW1lLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4NjlmYWEwM2U1
ZWYyYmM2NzJlMDJiYjQ5MDc5ZDhiNjAyMDc0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Bl
ci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0K
LQotZmxvYXQgYXNzaWduVG9QdHIodGhyZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZhbHVlKSB7Ci0g
ICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiByZWFsUHRyKGZsb2F0
IHZhbHVlKQotewotICAgIGZsb2F0IHYgPSB2YWx1ZTsKLSAgICByZXR1cm4gJnY7Ci19Ci0KLXRo
cmVhZCBmbG9hdCogZmlyc3RQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gcmVhbFB0cih2
YWx1ZSk7Ci19Ci0KLXRocmVhZCBmbG9hdCogc2Vjb25kUHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAg
cmV0dXJuIGZpcnN0UHRyKHZhbHVlKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0
ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxvYXQqIHB0clRv
U2hhZGUgPSBmaXJzdFB0cihzaGFkZSk7Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlMiA9
IHNlY29uZFB0cigxLjApOwotCi0gICAgZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFkIGZsb2F0KiBk
dW1teVB0ciA9ICZkdW1teTsKLQotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZTIs
IDAuMCk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teTIgPSByZWFsUHRyKHNoYWRlKTsKLQotICAg
IHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRv
U2hhZGUyOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRl
eFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVy
In07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kg
PSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9u
dEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBb
e2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6
IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUg
PSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjog
MSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0g
W2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIw
LCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBd
OwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3Rh
Z2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUs
IGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50
OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9
IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFy
cmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJj
ZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9
IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRp
bmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdy
b3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAg
Y29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmlu
ZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRl
eHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3Jp
cHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hh
aW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRW
aWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAx
fTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0
dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAi
c3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0p
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBz
dGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Bl
ci12YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1k
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0OTZmN2UzNTE3ZjA0NGM3Yjc0ODY5NWVhZTVjMGUzNWMw
YTYxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRvUHRyKHRocmVh
ZCBmbG9hdCogcHRyLCBmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiAqcHRyID0gdmFsdWU7Ci19
Ci0KLXRocmVhZCBmbG9hdCogcmVhbFB0cihmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gJnZh
bHVlOwotfQotCi10aHJlYWQgZmxvYXQqIGZpcnN0UHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0
dXJuIHJlYWxQdHIodmFsdWUpOwotfQotCi10aHJlYWQgZmxvYXQqIHNlY29uZFB0cihmbG9hdCB2
YWx1ZSkgewotICAgIHJldHVybiBmaXJzdFB0cih2YWx1ZSk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhP
dXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFk
IGZsb2F0KiBwdHJUb1NoYWRlID0gZmlyc3RQdHIoc2hhZGUpOwotICAgIHRocmVhZCBmbG9hdCog
cHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIoMS4wKTsKLQotICAgIGZsb2F0IGR1bW15OwotICAgIHRo
cmVhZCBmbG9hdCogZHVtbXlQdHIgPSAmZHVtbXk7Ci0KLSAgICBkdW1teSA9IGFzc2lnblRvUHRy
KHB0clRvU2hhZGUyLCAwLjApOwotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZSwg
c2hhZGUpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQu
c2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3No
YWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQw
ID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmUyMWYyYjAwNmIy
MzE3MTZlZmNmMTBkZWYzYjgyYjZmMTQwYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQot
UEFTUyBzaW1wbGVFbnVtRnJvbUludAotUEFTUyBzaW1wbGVFbnVtRnJvbVVpbnQKLVBBU1Mgd2Vp
cmRFbnVtRnJvbUludAotUEFTUyB3ZWlyZEVudW1Gcm9tVWludAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNGE1Y2RjZmVkYjZmYTY4N2E1NmQzNGEwYjBmYjg4
YTJhOTYzODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
c2ltcGxlRW51bUZyb21JbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIEEsCi0gICAgICAgICAgICBCLAotICAgICAg
ICAgICAgQwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGZvbyhpbnQgeCkgewotICAgICAgICAg
ICAgcmV0dXJuIGludChGb28oeCkpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0Mild
KSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAxKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMild
KSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KC0xKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMjE0NzQ4MzY0NyldKSwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bUZy
b21VaW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVt
IEZvbyA6IHVpbnQgewotICAgICAgICAgICAgQSwKLSAgICAgICAgICAgIEIsCi0gICAgICAgICAg
ICBDCi0gICAgICAgIH0KLQotICAgICAgICB1aW50IGZvbyh1aW50IHgpIHsKLSAgICAgICAgICAg
IHJldHVybiB1aW50KEZvbyh4KSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCld
KSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoMSldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMildKSwgMik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoNDIpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEwMDAwMDApXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5
NjcyOTUpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy53ZWlyZEVudW1Gcm9tSW50ID0gYXN5bmMg
KCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyA6IGludCB7Ci0g
ICAgICAgICAgICBBID0gNDIsCi0gICAgICAgICAgICBCID0gLTEwMDAsCi0gICAgICAgICAgICBD
ID0gMTAxMDEwLAotICAgICAgICAgICAgRCA9IDAKLSAgICAgICAgfQotCi0gICAgICAgIGludCBm
b28oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vKHgpKTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQyKV0pLCA0Mik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KC0xMDAwKV0pLCAtMTAwMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEwMTAxMCldKSwgMTAxMDEwKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
LTEpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgyMTQ3NDgzNjQ3KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTIxNDc0ODM2
NDgpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy53ZWlyZEVudW1Gcm9tVWludCA9IGFzeW5jICgp
ID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAg
ICAgICAgICAgIEEgPSA0MiwKLSAgICAgICAgICAgIEMgPSAxMDEwMTAsCi0gICAgICAgICAgICBE
ID0gMAotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBmb28odWludCB4KSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdWludChGb28oeCkpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDAp
XSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMTAxMDEwKV0pLCAxMDEw
MTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDQyOTQ5NjcyOTUpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDApOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KDQxKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxMDEwMTEpXSksIDApOwotfTsKLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjhkY2VjMzI5MDVmMGIxY2UxOWY1YjYxY2I1NDFiOTJh
MDc0YjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotUEFTUyBlbnVtRHVwbGljYXRlcwotUEFTUyBkZWZh
dWx0RW51bUNvbnN0cnVjdG9yCi1QQVNTIGVudW1BcnJheVJlZkJhc2UKLVBBU1MgZW51bUZsb2F0
QmFzZQotUEFTUyBlbnVtUHRyQmFzZQotUEFTUyBlbnVtU3RydWN0QmFzZQotUEFTUyBlbnVtTm9N
ZW1iZXJzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMt
dGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxZjc4NzNlNzdhMjBlNDFiMzliNjY3
NmJiMDc0YjgyYzM4YzVjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5lbnVtRHVwbGljYXRlcyA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAg
IFdhciA9IDQyLAotICAgICAgICAgICAgICAgIEZhbWluZSA9IDAsCi0gICAgICAgICAgICAgICAg
UGVzdGlsZW5jZSA9IDIzLAotICAgICAgICAgICAgICAgIERlYXRoID0gNDIKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmRlZmF1bHRFbnVtQ29uc3RydWN0b3Ig
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBXZWVr
ZGF5IHsKLSAgICAgICAgICAgIE1vbmRheSwKLSAgICAgICAgICAgIFR1ZXNkYXksCi0gICAgICAg
ICAgICBXZWRuZXNkYXksCi0gICAgICAgICAgICBUaHVyc2RheSwKLSAgICAgICAgICAgIFBpenph
ZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFdlZWtkYXkgeCA9IFdlZWtkYXkoKTsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLmVudW1BcnJheVJlZkJhc2Ug
PSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBlbnVtIEZvbyA6IHRocmVhZCBpbnRbXSB7Ci0gICAgICAgICAgICAgICAgQmFyCi0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmVudW1GbG9hdEJhc2UgPSBh
c3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBlbnVtIEZvbyA6IGZsb2F0IHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVB0ckJhc2UgPSBhc3luYyAoKSA9PiB7
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6
IHRocmVhZCBpbnQqIHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVN0cnVjdEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgVGhpbmd5
IHsgfQotICAgICAgICAgICAgZW51bSBGb28gOiBUaGluZ3kgewotICAgICAgICAgICAgICAgIEJh
cgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bU5vTWVt
YmVycyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGVudW0gRm9vIHsgfQotICAgICAgICBgKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW51bXMtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZW51bXMtMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWY3
Zjk2YzE5YTMwZjM0ZGU5NWQ3MmVmZTQ2MTg2M2Y3ZTZlOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1z
LTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mgc2lt
cGxlRW51bQotUEFTUyBlbnVtV2l0aEV4cGxpY2l0SW50QmFzZQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2VudW1zLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0OWRkZjNi
YjAwODc5ZTg2M2ZjNTgxMzRkNzAzMjI1M2I1ZTFjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzU5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNs
VGVzdHMuc2ltcGxlRW51bSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgV2FyLAotICAgICAgICAgICAgRmFtaW5lLAot
ICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLQot
ICAgICAgICBGb28gX3dhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uV2Fy
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gX3dhcigpID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2Zh
bWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRmFtaW5lOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBmYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2ZhbWluZSgpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3Bl
c3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAg
fQotCi0gICAgICAgIEZvbyBfZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Rm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBkZWF0aCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBfZGVhdGgoKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZv
byBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIHRlc3RBbm90aGVyRXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2VxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2VxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB0ZXN0U2ltcGxlTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
X25vdEVxdWFscyhGb28uV2FyLCBGb28uV2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
dGVzdEFub3RoZXJOb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90
RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIHRlc3ROb3ROb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBfbm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpbnQgX2ludFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3dhcigp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gX2ludFdhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRGYW1p
bmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgaW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50UGVzdGls
ZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBfaW50UGVzdGlsZW5jZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aW50IF9pbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRo
KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGludERlYXRoKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIF9pbnREZWF0aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBp
bnRXYXJCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRX
YXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RmFtaW5lQmFj
a3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50RmFtaW5lKCkp
ID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludFBlc3RpbGVuY2VC
YWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0aWxl
bmNlKCkpID09IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRE
ZWF0aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludERl
YXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUi
LCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVF
cXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtd
KSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwg
W10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXIiLCBbXSksIDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRGYW1pbmUiLCBb
XSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXJCYWNrd2FyZHMiLCBb
XSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAiaW50RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludFBlc3RpbGVuY2VCYWNrd2FyZHMi
LCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiaW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5lbnVtV2l0aEV4cGxpY2l0SW50QmFzZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgZW51bSBGb28gOiBpbnQgewotICAgICAgICAgICAgV2FyLAotICAgICAg
ICAgICAgRmFtaW5lLAotICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgIERlYXRo
Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3dhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB3YXIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX3dhcigpID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBGb28gX2ZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28u
RmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmYW1pbmUoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gX2ZhbWluZSgpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBGb28gX3Blc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Rm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHBlc3RpbGVuY2UoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBGb28uUGVzdGls
ZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfZGVhdGgoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBkZWF0
aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZGVhdGgoKSA9PSBGb28uRGVhdGg7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBfbm90RXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGEgIT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyRXF1YWwoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2Up
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uV2FyLCBGb28uV2FyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3ROb3RFcXVhbCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgX2ludFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBpbnQoX3dhcigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpbnRXYXIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFdhcigpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IF9pbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9m
YW1pbmUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50RmFtaW5lKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBfaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQo
X3Blc3RpbGVuY2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50UGVzdGlsZW5jZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50UGVzdGlsZW5jZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaW50IF9pbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBpbnQoX2RlYXRoKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGludERlYXRoKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0aCgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBpbnRXYXJCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgaW50RmFtaW5lQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZv
byhfaW50RmFtaW5lKCkpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Rm9vKF9pbnRQZXN0aWxlbmNlKCkpID09IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBpbnREZWF0aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBGb28oX2ludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwg
dHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVl
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRl
c3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5v
dGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXIiLCBb
XSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJpbnRGYW1pbmUiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGgiLCBbXSksIDMpOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRX
YXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludFBlc3Rp
bGVuY2VCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwot
fTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhYjdmZTVmNGZlNjdmYTBmNTgzODE5YjE2OGUzNjI1MDVkM2E5YTZhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9lbnVtcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCww
IEBACi0KLVBBU1MgZmFpbFRyaWNreURvdWJsZVplcm8KLVBBU1Mgc2ltcGxlRGVjbGFyYXRpb24K
LVBBU1MgZW51bVdpdGhVaW50QmFzZQotUEFTUyBlbnVtV2l0aG91dFplcm8KLVBBU1MgZW51bU5l
Z2F0aXZlVWludAotUEFTUyBwYXN0SW50TWF4Ci1QQVNTIGVudW1XaXRoU29tZU1hbnVhbFZhbHVl
cwotUEFTUyBlbnVtU3dpdGNoQnJlYWtFeGhhdXN0aXZlCi1QQVNTIGVudW1Td2l0Y2hCcmVha05v
dFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZhdWx0Ci1QQVNTIGVudW1XaXRoTWFudWFsVmFsdWVzCi1Q
QVNTIGVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZQotUEFTUyBjb3B5Q29uc3RydWN0
b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdjZThlZmZhMWIxOThhYjQyM2MxZTZlNDc4OTFkYzJlMDM0NmI2ZjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2VudW1zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5FbnVtcy48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5mYWlsVHJpY2t5RG91YmxlWmVybyA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEUgewotICAgICAgICAgICAg
RiwKLSAgICAgICAgICAgIEcgPSAtMiwKLSAgICAgICAgICAgIEgsCi0gICAgICAgICAgICBJIC8v
IHNob3VsZCBnZXQgemVybywgYW5kIHRoYXQncyBhIGR1cGUuCi0gICAgICAgIH0KLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEUgZSA9IEUuRm9vOwotICAgICAgICAg
ICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJv
Z3JhbSk7Ci19OwotCi13aGxzbFRlc3RzLnNpbXBsZURlY2xhcmF0aW9uID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRSB7Ci0gICAgICAgICAgICBG
b28sCi0gICAgICAgICAgICBCYXIKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgRSBlID0gRS5Gb287Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhVaW50
QmFzZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBG
b28gOiB1aW50IHsKLSAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAg
ICAgICAgIFBlc3RpbGVuY2UsCi0gICAgICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAg
ICAgRm9vIF93YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIF93YXIoKSA9PSBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9m
YW1pbmUoKSA9PSBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxl
bmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIF9wZXN0aWxlbmNlKCkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBGb28gX2RlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5E
ZWF0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gX2RlYXRoKCkgPT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGEgPT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwg
Rm9vIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIHRlc3RTaW1wbGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBfZXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB0ZXN0QW5vdGhlckVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9l
cXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgdGVzdE5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9l
cXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
dGVzdFNpbXBsZU5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RF
cXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RB
bm90aGVyTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFs
cyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB0ZXN0Tm90Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25v
dEVxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlu
dCBfdWludFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF93YXIoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IHVpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gX3VpbnRXYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRG
YW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChfZmFtaW5lKCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdWludCB1aW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIF91aW50RmFtaW5lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IF91
aW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF9wZXN0
aWxlbmNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCB1aW50UGVzdGlsZW5jZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfdWludFBlc3RpbGVuY2UoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHVpbnQgX3VpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB1aW50KF9kZWF0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgdWludERlYXRo
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50RGVhdGgoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgdWludFdhckJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBGb28oX3VpbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgdWludEZhbWluZUJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBGb28oX3VpbnRGYW1pbmUoKSkgPT0gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgdWludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vKF91aW50UGVzdGlsZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgdWludERlYXRoQmFja3dhcmRzKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvbyhfdWludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJk
ZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFs
IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAidWludFdhciIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1
bmN0aW9uKHByb2dyYW0sICJ1aW50RmFtaW5lIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRQZXN0aWxlbmNlIiwgW10pLCAy
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVp
bnREZWF0aCIsIFtdKSwgMyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgInVpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidWludEZhbWluZUJhY2t3
YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJ1aW50UGVzdGlsZW5jZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RGVhdGhC
YWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQotCi13aGxzbFRlc3RzLmVudW1XaXRob3V0WmVy
byA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAg
ICAgICBGYW1pbmUgPSA2NCwKLSAgICAgICAgICAgICAgICBQZXN0aWxlbmNlID0gMjMsCi0gICAg
ICAgICAgICAgICAgRGVhdGggPSAtNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Owot
Ci13aGxzbFRlc3RzLmVudW1OZWdhdGl2ZVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAg
ICAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICAg
ICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgICAgICBEZWF0aCA9IC00MgotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMucGFzdEludE1heCA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9v
IDogaW50IHsKLSAgICAgICAgICAgICAgICBXYXIgPSAyMTQ3NDgzNjQ3LAotICAgICAgICAgICAg
ICAgIEZhbWluZSwKLSAgICAgICAgICAgICAgICBQZXN0aWxlbmNlID0gMCwKLSAgICAgICAgICAg
ICAgICBEZWF0aAotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMu
ZW51bVdpdGhTb21lTWFudWFsVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAg
ICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAwLAotICAgICAgICAgICAgRGVh
dGgKLSAgICAgICAgfQotICAgICAgICBpbnQgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGludChGb28uV2FyKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZmFtaW5lKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uRmFtaW5lKTsKLSAgICAgICAgfQot
ICAgICAgICBpbnQgcGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
bnQoRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0gICAgICAgIGludCBkZWF0aCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLkRlYXRoKTsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgIndh
ciIsIFtdKSwgNzIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmYW1pbmUiLCBbXSksIDczKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImRlYXRoIiwgW10pLCAxKTsKLX07
Ci0KLQotd2hsc2xUZXN0cy5lbnVtU3dpdGNoQnJlYWtFeGhhdXN0aXZlID0gYXN5bmMgKCkgPT4g
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBB
LCBCLCBDCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICBzd2l0Y2ggKEZvbyh4KSkgewot
ICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gMjc7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZvby5COgotICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGb28uQzoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMjcpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCA3NjI0
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMildKSwgNDkpOwotfQotCi0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJyZWFr
Tm90UXVpdGVFeGhhdXN0aXZlV2l0aERlZmF1bHQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIEEsIEIsIEMKLSAgICAg
ICAgfQotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
cmVzdWx0ID0gMDsKLSAgICAgICAgICAgIHN3aXRjaCAoRm9vKHgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEZvby5BOgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSAyNzsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRm9vLkI6Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ICs9IDc2MjQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSA0OTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgwKV0pLCAyNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpXSksIDc2MjQpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyKV0p
LCA0OSk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhNYW51YWxWYWx1ZXMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAg
IFdhciA9IDcyLAotICAgICAgICAgICAgRmFtaW5lID0gMCwKLSAgICAgICAgICAgIFBlc3RpbGVu
Y2UgPSAyMywKLSAgICAgICAgICAgIERlYXRoID0gLTQyCi0gICAgICAgIH0KLSAgICAgICAgaW50
IHdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLldhcik7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBpbnQoRm9vLkZhbWluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2UoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5QZXN0aWxlbmNlKTsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
aW50KEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDcyKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCAwKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVzdGls
ZW5jZSIsIFtdKSwgMjMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJkZWF0aCIsIFtdKSwgLTQyKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVN3aXRj
aEJyZWFrTm90UXVpdGVFeGhhdXN0aXZlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAg
IEEsIEIsIEMsIEQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28oRm9vIHgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoICh4KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIEZvby5COgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0g
NzYyNDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBG
b28uQzoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmNvcHlD
b25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgZW51bSBXZWVrZGF5IHsKLSAgICAgICAgICAgIE1vbmRheSwKLSAgICAgICAgICAgIFR1ZXNk
YXksCi0gICAgICAgICAgICBXZWRuZXNkYXksCi0gICAgICAgICAgICBUaHVyc2RheSwKLSAgICAg
ICAgICAgIFBpenphZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFdlZWtkYXkgeCA9IFdlZWtkYXkuTW9uZGF5OwotICAgICAgICAgICAgV2Vl
a2RheSB5ID0gV2Vla2RheSh4KTsKLSAgICAgICAgICAgIGZsb2F0NCB6ID0gZmxvYXQ0KDEsIDIs
IDMsIDQpOwotICAgICAgICAgICAgZmxvYXQ0IHcgPSBmbG9hdDQoeik7Ci0gICAgICAgICAgICBm
bG9hdDJ4MiBwOwotICAgICAgICAgICAgZmxvYXQyeDIgcSA9IGZsb2F0MngyKHApOwotICAgICAg
ICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9lcXVhbGl0eS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBjMzY2NGM5MDk4OTliNjE4YjBjNGVkMDIyN2RlZGNkNmJkZGUwZWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLQotUEFTUyBlcXVhbGl0eQotUEFTUyBub3RFcXVhbGl0eQotUEFTUyBlcXVhbGl0eVR5cGVG
YWlsdXJlCi1QQVNTIGVxdWFsc1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZXF1YWxzV3JvbmdS
ZXR1cm5UeXBlCi1QQVNTIGxlc3NFcXVhbFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbGVzc0Vx
dWFsV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGxlc3NUaGFuV3JvbmdBcmd1bWVudExlbmd0aAotUEFT
UyBsZXNzVGhhbldyb25nUmV0dXJuVHlwZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZXF1YWxpdHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0
eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWE3YTI2Yzk4YjIzYzVhNjM5
YWViZDdlNDU2MWU0NTY3M2EyMWYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLmVxdWFsaXR5ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50
KDcpXSksIHRydWUpOwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28oaW50IHgsIGludCB5KSB7IHJl
dHVybiB4ID09IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgZmFsc2UpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNyksIG1ha2VJbnQoNyldKSwgdHJ1ZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZvbyhi
b29sIHgsIGJvb2wgeSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1h
a2VCb29sKHRydWUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2Up
XSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci19Ci0KLXdobHNsVGVz
dHMubm90RXF1YWxpdHkgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBm
b28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1h
a2VVaW50KDUpXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg3KV0pLCBmYWxzZSk7
Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggIT0geTsg
fSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUludCg3KSwgbWFrZUludCg1KV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtl
SW50KDcpXSksIGZhbHNlKTsKLSAgICBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCwgYm9vbCB5
KSB7IHJldHVybiB4ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSld
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1
ZSksIG1ha2VCb29sKHRydWUpXSksIGZhbHNlKTsKLX07Ci0KLXdobHNsVGVzdHMuZXF1YWxpdHlU
eXBlRmFpbHVyZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoImJvb2wgZm9v
KGludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggPT0geTsgfSIpOwotfTsKLQotd2hsc2xUZXN0cy5l
cXVhbHNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KCkgeyByZXR1cm4g
dHJ1ZTsgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7
Ci19OwotCi13aGxzbFRlc3RzLmVxdWFsc1dyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28g
eyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I9PShGb28sIEZvbykgeyByZXR1cm4gNDI7IH0K
LSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc0VxdWFsV3JvbmdBcmd1bWVudExlbmd0
aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I8PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9y
PD0oaW50KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sZXNzRXF1
YWxXcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9y
PD0oRm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3Rz
Lmxlc3NUaGFuV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KCkgeyByZXR1
cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wg
b3BlcmF0b3I8KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19
Ci0KLXdobHNsVGVzdHMubGVzc1RoYW5Xcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsg
fQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPChGb28sIEZvbykgeyByZXR1cm4gNDI7IH0KLSAg
ICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWNjMTE5OGZkMjAyMzZjZGQwZDc3ZTdm
OTNmNzE0M2ZmOGQxY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZmxvYXRNYXRoCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMDcxN2YwMDQzZGQ4YWJjNDRhYjdhMGZhMTcxMWFjNGRmOTEzZmQwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9mbG9hdC1tYXRoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmZsb2F0TWF0aCA9IGFzeW5jICgp
ID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gNDIuNSA9PSA0Mi41OwotICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IGJhcihmbG9hdCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAg
ICAgfQotICAgICAgICBmbG9hdCBmb282KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGJhcig3LjUpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzkoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmxvYXQoNy41KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBm
b28xMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdCg3KTsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBmb28xMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHgg
PSA3LjU7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQoeCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ym9vbCBkaXYoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMC41IC8gMiA9PSAwLjI1
OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNiIsIFtdKSwgNy41KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10p
LCA3LjUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzEyIiwgW10pLCA3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1
bmN0aW9uKHByb2dyYW0sICJmb28xMyIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImRpdiIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIo
NC4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wZik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB1aW50IGJhcih1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHVp
bnQgYmFyKHVpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGJhcig0LjBmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTNlMGM2MzFlZTAxOTBkN2FkZGU3MjFj
MmNhNTRkMThmYzk1MDEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgZ2V0dGVyVHlwZQot
UEFTUyBzZXR0ZXJUeXBlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9n
ZXR0ZXItc2V0dGVyLXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXIt
c2V0dGVyLXR5cGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4M2RiOWIz
Y2Q4MWRjOGIyNTUwNTNkNGIwMDZmOTk4ZTJlMDhlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNl
dHRlci10eXBlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLmdldHRlclR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IG9wZXJhdG9yLngodGhyZWFkIGludFtdIGZvbykK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGAp
OyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3IueChpbnRbM10g
Zm9vKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vWzBdOwotICAgICAgICB9Ci0g
ICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvcltdKHRo
cmVhZCBpbnRbXSBmb28sIGludCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZvb1tpbmRleF07Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgaW50IG9wZXJhdG9yLngoaW50WzNdIGZvbykKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9
Ci0gICAgICAgIGludCBvcGVyYXRvcltdKEZvbyBmb28sIHVpbnQ0IGluZGV4KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZm9vW2luZGV4LnhdOwotICAgICAgICB9Ci0gICAgYCk7IAot
fTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJUeXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHRocmVhZCBpbnRbXSBvcGVyYXRvci54PSh0aHJlYWQgaW50W10g
Zm9vLCB1aW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAg
IH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50WzNdIG9wZXJh
dG9yLng9KGludFszXSBmb28sIHVpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZvbzsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICB0aHJlYWQgaW50W10gb3BlcmF0b3JbXT0odGhyZWFkIGludFtdIGZvbywgdWludCB4LCB1aW50
IHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBg
KTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50WzNdIG9wZXJhdG9yLng9KGlu
dFszXSBmb28sIHVpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbzsKLSAg
ICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3Qg
Rm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIEZvbyBvcGVyYXRv
cltdPShGb28gZm9vLCBmbG9hdDQgeSwgdWludCB6KQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAg
ICAgICBpbnQgb3BlcmF0b3IueShGb28gZm9vKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICAgICAgRm9vIG9wZXJhdG9yLnk9KEZvbyBmb28sIGlu
dDQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIHJlc3VsdDsKLSAgICAgICAgICAgIGZv
by54ID0geC54OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGAp
OyAKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvaHVnZS1hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1Z2UtYXJy
YXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ2YzkxNjdmNGVhY2MxMDM0
MjJiNzJkNmI3NmI3ZGJhN2M2MDk2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBm
aWxsKHRocmVhZCBmbG9hdFtdIGFycmF5LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBp
ID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7
Ci0gICAgfQotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRl
U2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJ
RCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdFsxMDAwXSBhcnJheTsKLSAgICBp
ZiAoYXJyYXkubGVuZ3RoICE9IDEwMDApCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKHVpbnQg
aSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0g
MCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhcnJheVswXSA9IDAuMTMzNzsK
LSAgICBpZiAoYXJyYXlbMF0gIT0gMC4xMzM3KQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aHJl
YWQgZmxvYXRbXSBhcnJheVB0ciA9IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQdHIubGVuZ3RoICE9
IDEwMDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbGwoYXJyYXlQdHIsIDAuMTAxMCk7Ci0g
ICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXlQdHIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
aWYgKGFycmF5UHRyW2ldICE9IDAuMTAxMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKGFycmF5W2ldICE9IDAuMTAxMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmaWxsKEBhcnJheSwgMC4wMTAxKTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5s
ZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXlQdHJbaV0gIT0gMC4wMTAxKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gMC4wMTAxKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0
ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRl
ciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9
IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVy
LCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFy
cmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0
c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UK
LSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lm
LXN0YXRlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5
NThhMmMzMzFhMWQ0NzAzYWY3YjhkOWU3OGMxYjA0OWI0NTdjMGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lm
LXN0YXRlbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQot
UEFTUyBpZlN0YXRlbWVudAotUEFTUyBpZkVsc2VTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZTdGF0
ZW1lbnQKLVBBU1MgaWZFbHNlSWZFbHNlU3RhdGVtZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVh
ODVhZmQ3N2ZjODBhMjVlOGIzYmZjOTIwOGZjNGU5YzM0NTNmNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYt
c3RhdGVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pZlN0YXRlbWVudCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAg
ICAgICAgICAgICB5ID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5Owot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDYpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCg1KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCg4KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgNik7Ci19Ci0KLXdobHNsVGVzdHMuaWZF
bHNlU3RhdGVtZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAg
ICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDQpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgOSk7Ci19
Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZTdGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAg
ICAgeSA9IDg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgewotICAgICAgICAgICAg
ICAgIHkgPSA5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgzKV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgNik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDUpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg2KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDgpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg5KV0pLCA2KTsKLX0KLQotd2hsc2xUZXN0cy5pZkVsc2VJZkVs
c2VTdGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAg
ICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKHggPT0gOCkgewotICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB5ID0gMTA7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDEwKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNCldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDEw
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0pLCAx
MCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMTI0NWM2NTJjYTBi
MGYwYmQzZGY2NmYzYTQ0MjIyMDYwNzgzNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNy
ZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mg
aW5jcmVtZW50QW5kRGVjcmVtZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aW5jcmVtZW50LWRlY3JlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
OTdmNzFiNGNmNGRjMzg3Mjc1YTI5ZGNlM2MxMWY2Mzk4ZTkzMmZlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9p
bmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuaW5jcmVtZW50QW5kRGVjcmVtZW50ID0gYXN5bmMg
KCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vMSgpIHsgaW50IHgg
PSAwOyByZXR1cm4geCsrOyB9Ci0gICAgICAgIGludCBmb28yKCkgeyBpbnQgeCA9IDA7IHgrKzsg
cmV0dXJuIHg7IH0KLSAgICAgICAgaW50IGZvbzMoKSB7IGludCB4ID0gMDsgcmV0dXJuICsreDsg
fQotICAgICAgICBpbnQgZm9vNCgpIHsgaW50IHggPSAwOyArK3g7IHJldHVybiB4OyB9Ci0gICAg
ICAgIGludCBmb281KCkgeyBpbnQgeCA9IDA7IHJldHVybiB4LS07IH0KLSAgICAgICAgaW50IGZv
bzYoKSB7IGludCB4ID0gMDsgeC0tOyByZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9vNygpIHsg
aW50IHggPSAwOyByZXR1cm4gLS14OyB9Ci0gICAgICAgIGludCBmb284KCkgeyBpbnQgeCA9IDA7
IC0teDsgcmV0dXJuIHg7IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28xIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDEpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280Iiwg
W10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vNSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbzYiLCBbXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNyIsIFtdKSwgLTEpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb284IiwgW10pLCAtMSk7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYmI3MzQwYWFjNGZkYjFkYWQyZWUyMjQ1
ZDU1YjBhZWExOWUyMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgaW5jcmVtZW50U2V0dGVy
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTQxNDRlM2MzZTY5NjdhNzJjNmRmZmVhMDBi
NTAwNTNhNjY2NjAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuaW5jcmVtZW50U2V0dGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgejsKLSAgICAgICAg
ICAgIGludCB3OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBG
b28gZm9vOwotICAgICAgICAgICAgZm9vLnogPSAzOwotICAgICAgICAgICAgZm9vLncgPSAxOwot
ICAgICAgICAgICAgaW50IHZhbHVlID0gZm9vLncrKzsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZSoxMDAgKyBmb28ueioxMCArIGZvby53OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAxMDAgKyAz
MCArIDIpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0
ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjUwZTk0Mjkx
NTk5NjhkZWVkMTQ3YWY3ODc5NDU3YzJjZTMwMzlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0
ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1Q
QVNTIHBvaW50ZXJJbmRleEdldHRlcgotUEFTUyBwb2ludGVyR2V0dGVyCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwY2YyN2EzM2ViN2M2MjIyMGU4OThlMjZhMWIxZTViOWU5MmYx
YjQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw4MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRl
c3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5wb2ludGVySW5kZXhHZXR0ZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShkZXZpY2Ug
aW50KiwgdWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwot
ICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW10odGhyZWFkIGludCosIHVpbnQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcltdKHRocmVhZGdyb3VwIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdKGNvbnN0YW50IGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
cG9pbnRlckdldHRlciA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oZGV2aWNlIGludCopCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3IuZm9vKHRocmVhZCBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWRncm91
cCBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhjb25zdGFudCBpbnQqKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGAp
OwotfQotCi0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDZlZjA3YTdhYzMwZDE1YjIzNjI4MTIzNDk2
YmZmNzgwZTZhNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBBU1MgaW50Qml0QW5kCi1QQVNTIGludEJp
dE9yCi1QQVNTIGludEJpdFhvcgotUEFTUyBpbnRCaXROb3QKLVBBU1MgaW50TFNoaWZ0Ci1QQVNT
IGludFJTaGlmdAotUEFTUyBpbnRTaW1wbGVNYXRoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pbnQtYml0LW1hdGguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3MDVj
Yzc1NTk4NjFiZTNmMDM1Mjg3MWEzMDUxNGFhNDE3MjA1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJp
dC1tYXRoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pbnRCaXRBbmQgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCBpbnQgYikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGEgJiBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
MSksIG1ha2VJbnQoNyldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZUludCg0MildKSwgNDIp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgtMSksIG1ha2VJbnQoLTcpXSksIC03KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQo
ODU3MzIpXSksIDApOwotfQotCi13aGxzbFRlc3RzLmludEJpdE9yID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIHwgYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDEpLCBtYWtlSW50KDcpXSksIDcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSks
IDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0pLCAtMSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBt
YWtlSW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0WG9yID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwg
aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1h
a2VJbnQoNDIpXSksIDY1NDkzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0pLCA2KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDg1NzMyKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRC
aXROb3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKGludCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gfmE7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCgxKV0pLCAtMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KV0pLCAtNjU1MzYpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCgtMSldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIC0xKTsKLX0KLQotd2hsc2xUZXN0cy5p
bnRMU2hpZnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKGludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIDw8
IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMTI4KTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNjU1MzUpLCBtYWtlVWludCgyKV0pLCAyNjIxNDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1h
a2VVaW50KDUpXSksIC0zMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX0KLQot
d2hsc2xUZXN0cy5pbnRSU2hpZnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhID4+IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZVVpbnQo
NyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMTYzODMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgtMSksIG1ha2VVaW50KDUpXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VVaW50KDMpXSksIDAp
OwotfQotCi13aGxzbFRlc3RzLmludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMTIpOwotICAgIHByb2dyYW0gPSAiaW50IGZvbyhpbnQg
eCwgaW50IHkpIHsgcmV0dXJuIHggLSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwg
Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDUpLCBtYWtlSW50KDcpXSksIC0yKTsKLSAgICBwcm9ncmFtID0gImludCBm
b28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50
KDUpXSksIDM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoLTUpXSksIC0zNSk7Ci19Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZmM4NzkwNmUxYTIxOGQyYzhjZGFiMWQyZmZj
OWQwNGI5Yjg1ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgdHdvSW50TGl0ZXJhbHMK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBh
cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNjhiYzhhNGMyOGUwMzBmZTVjNGM0
ZjJmN2Q1OGFkYjk5ZjMzMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnR3b0ludExpdGVyYWxzID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiA0MiA9PSA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRy
dWUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcyBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJkNTZjOTY4MjQwOTk2Njc4NWFiMDE5OTFlMmM0ZWI4Y2RjNjVmYWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDU0
NSArMCwwIEBACi0vKiBUeXBlIFV0aWx0aWVzICovCi0KLS8vIEZJWE1FOiBTdXBwb3J0IGFsbCBX
SExTTCBzY2FsYXIgYW5kIHZlY3RvciB0eXBlcy4KLS8vIEZJWE1FOiBTdXBwb3J0IHRleHR1cmVz
IGFuZCBzYW1wbGVycy4KLWNvbnN0IFR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7Ci0gICAgQk9PTDog
U3ltYm9sKCJib29sIiksCi0gICAgSU5UOiBTeW1ib2woImludCIpLAotICAgIFVDSEFSOiBTeW1i
b2woInVjaGFyIiksCi0gICAgVUlOVDogU3ltYm9sKCJ1aW50IiksCi0gICAgRkxPQVQ6IFN5bWJv
bCgiZmxvYXQiKSwKLSAgICBGTE9BVDQ6IFN5bWJvbCgiZmxvYXQ0IiksCi0gICAgRkxPQVQ0WDQ6
IFN5bWJvbCgiZmxvYXQ0eDQiKSwKLSAgICBNQVhfU0laRTogNjQgLy8gVGhpcyBuZWVkcyB0byBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW55IHNpbmd1bGFyIFdITFNMIHR5cGUuCi19KTsKLQotZnVu
Y3Rpb24gaXNTY2FsYXIodHlwZSkKLXsKLSAgICBzd2l0Y2godHlwZSkgewotICAgICAgICBjYXNl
IFR5cGVzLkZMT0FUNDoKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udmVydFR5cGVUb0FycmF5VHlwZSh0eXBlKQotewot
ICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZXMuQk9PTDoKLSAgICAgICAgICAg
IHJldHVybiBJbnQzMkFycmF5OwotICAgICAgICBjYXNlIFR5cGVzLklOVDoKLSAgICAgICAgICAg
IHJldHVybiBJbnQzMkFycmF5OwotICAgICAgICBjYXNlIFR5cGVzLlVDSEFSOgotICAgICAgICAg
ICAgcmV0dXJuIFVpbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUlOVDoKLSAgICAgICAg
ICAgIHJldHVybiBVaW50MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAgICAg
ICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0WDQ6Ci0gICAg
ICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBjb252ZXJ0VHlwZVRvV0hMU0xUeXBlKHR5cGUpCi17Ci0gICAgc3dpdGNoKHR5
cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlcy5CT09MOgotICAgICAgICAgICAgcmV0dXJuICJib29s
IjsKLSAgICAgICAgY2FzZSBUeXBlcy5JTlQ6Ci0gICAgICAgICAgICByZXR1cm4gImludCI7Ci0g
ICAgICAgIGNhc2UgVHlwZXMuVUNIQVI6Ci0gICAgICAgICAgICByZXR1cm4gInVjaGFyIjsKLSAg
ICAgICAgY2FzZSBUeXBlcy5VSU5UOgotICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICAg
ICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAg
ICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0IjsKLSAgICAg
ICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0eDQiOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFRZ
UEUgcHJvdmlkZWQhIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB3aGxzbEFyZ3VtZW50VHlwZSh0
eXBlKQotewotICAgIGlmICh0eXBlID09PSBUeXBlcy5CT09MKQotICAgICAgICByZXR1cm4gImlu
dCI7Ci0gICAgcmV0dXJuIGNvbnZlcnRUeXBlVG9XSExTTFR5cGUodHlwZSk7Ci19Ci0KLWZ1bmN0
aW9uIGNvbnZlcnRUb1dITFNMT3V0cHV0VHlwZShjb2RlLCB0eXBlKQotewotICAgIGlmICh0eXBl
ICE9PSBUeXBlcy5CT09MKQotICAgICAgICByZXR1cm4gY29kZTsKLSAgICByZXR1cm4gYGludCgk
e2NvZGV9KWA7Ci19Ci0KLWZ1bmN0aW9uIGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGNvZGUsIHR5
cGUpCi17Ci0gICAgaWYgKHR5cGUgIT09IFR5cGVzLkJPT0wpCi0gICAgICAgIHJldHVybiBjb2Rl
OwotICAgIHJldHVybiBgYm9vbCgke2NvZGV9KWA7Ci19Ci0KLS8qIEhhcm5lc3MgQ2xhc3NlcyAq
LwotCi1jbGFzcyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgRXJyb3IgewotICAgIGNv
bnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCJObyBHUFVEZXZpY2UgZGV0ZWN0ZWQh
Iik7Ci0gICAgfQotfTsKLQotY2xhc3MgRGF0YSB7Ci0gICAgLyoqCi0gICAgICogVXBsb2FkIHR5
cGVkIGRhdGEgdG8gYW5kIHJldHVybiBhIHdyYXBwZXIgb2YgYSBHUFVCdWZmZXIuCi0gICAgICog
QHBhcmFtIHtUeXBlc30gdHlwZSAtIFRoZSBXSExTTCB0eXBlIHRvIGJlIHN0b3JlZCBpbiB0aGlz
IERhdGEuCi0gICAgICogQHBhcmFtIHtOdW1iZXIgb3IgQXJyYXlbTnVtYmVyXX0gdmFsdWVzIC0g
VGhlIHJhdyBkYXRhIHRvIGJlIHVwbG9hZGVkLgotICAgICAqLwotICAgIGNvbnN0cnVjdG9yKGhh
cm5lc3MsIHR5cGUsIHZhbHVlcywgaXNCdWZmZXIgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlm
IChoYXJuZXNzLmRldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAvLyBPbmUgb3IgbW9yZSBzY2FsYXJzIGluIGFuIGFycmF5IGNhbiBiZSBhY2Nlc3NlZCB0
aHJvdWdoIGFuIGFycmF5IHJlZmVyZW5jZS4KLSAgICAgICAgLy8gSG93ZXZlciwgdmVjdG9yIHR5
cGVzIGFyZSBhbHNvIGNyZWF0ZWQgdmlhIGFuIGFycmF5IG9mIHNjYWxhcnMuCi0gICAgICAgIC8v
IFRoaXMgZW5zdXJlcyB0aGF0IGJ1ZmZlcnMgb2YganVzdCBvbmUgdmVjdG9yIGFyZSB1c2FibGUg
aW4gYSB0ZXN0IGZ1bmN0aW9uLgotICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKQot
ICAgICAgICAgICAgdGhpcy5faXNCdWZmZXIgPSBpc1NjYWxhcih0eXBlKSA/IHRydWUgOiBpc0J1
ZmZlcjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9pc0J1ZmZlciA9IGZhbHNl
OwotICAgICAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl90eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy5fYnl0ZUxlbmd0aCA9IChjb252ZXJ0VHlw
ZVRvQXJyYXlUeXBlKHR5cGUpKS5CWVRFU19QRVJfRUxFTUVOVCAqIHZhbHVlcy5sZW5ndGg7Ci0K
LSAgICAgICAgY29uc3QgW2J1ZmZlciwgYXJyYXlCdWZmZXJdID0gaGFybmVzcy5kZXZpY2UuY3Jl
YXRlQnVmZmVyTWFwcGVkKHsKLSAgICAgICAgICAgIHNpemU6IHRoaXMuX2J5dGVMZW5ndGgsCi0g
ICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9SRUFECi0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IHR5cGVkQXJyYXkgPSBuZXcg
KGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkpKGFycmF5QnVmZmVyKTsKLSAgICAgICAgdHlw
ZWRBcnJheS5zZXQodmFsdWVzKTsKLSAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAg
dGhpcy5fYnVmZmVyID0gYnVmZmVyOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm5z
IEFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoaXMgRGF0YS4KLSAg
ICAgKi8KLSAgICBhc3luYyBnZXRBcnJheUJ1ZmZlcigpCi0gICAgewotICAgICAgICBpZiAoaGFy
bmVzcy5kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVV
bnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAgICAgICAgbGV0IHJlc3VsdDsKLSAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuX2J1ZmZlci5tYXBSZWFkQXN5bmMoKTsK
LSAgICAgICAgICAgIHRoaXMuX2J1ZmZlci51bm1hcCgpOwotICAgICAgICB9IGNhdGNoIHsKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRGF0YSBlcnJvcjogVW5hYmxlIHRvIGdldCBBcnJh
eUJ1ZmZlciEiKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQotICAgIGdldCBpc0J1ZmZlcigp
IHsgcmV0dXJuIHRoaXMuX2lzQnVmZmVyOyB9Ci0gICAgZ2V0IGJ1ZmZlcigpIHsgcmV0dXJuIHRo
aXMuX2J1ZmZlcjsgfQotICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fYnl0ZUxl
bmd0aDsgfQotfQotCi1jbGFzcyBIYXJuZXNzIHsKLSAgICBjb25zdHJ1Y3RvciAoKQotICAgIHsK
LSAgICAgICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYXN5bmMgcmVxdWVz
dERldmljZSgpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgY29uc3QgYWRhcHRl
ciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAgICAgIHRo
aXMuX2RldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwotICAgICAgICB9IGNh
dGNoIHsKLSAgICAgICAgICAgIC8vIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkLgotICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBHUFVBZGFwdGVyUmVxdWVzdE9wdGlvbnMgYW5k
IEdQVURldmljZURlc2NyaXB0b3IsCi0gICAgICAgICAgICAvLyBhbmQgZGlmZmVyZW50aWF0ZSBi
ZXR3ZWVuIGRlc2NyaXB0b3IgdmFsaWRhdGlvbiBlcnJvcnMgYW5kIG5vIFdlYkdQVSBzdXBwb3J0
LgotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybiB0aGUgcmV0dXJuIHZh
bHVlIG9mIGEgV0hMU0wgZnVuY3Rpb24uCi0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRo
ZSByZXR1cm4gdHlwZSBvZiB0aGUgV0hMU0wgZnVuY3Rpb24uCi0gICAgICogQHBhcmFtIHtTdHJp
bmd9IGZ1bmN0aW9ucyAtIEN1c3RvbSBXSExTTCBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKiBA
cGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5jdGlvbiB3aGlj
aCBtdXN0IGJlIHByZXNlbnQgaW4gJ2Z1bmN0aW9ucycuCi0gICAgICogQHBhcmFtIHtEYXRhIG9y
IEFycmF5W0RhdGFdfSBhcmdzIC0gRGF0YSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBj
YWxsIG9mICduYW1lJy4KLSAgICAgKiBAcmV0dXJucyB7VHlwZWRBcnJheX0gLSBBIHR5cGVkIGFy
cmF5IGNvbnRhaW5pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KLSAg
ICAgKi8KLSAgICBhc3luYyBjYWxsVHlwZWRGdW5jdGlvbih0eXBlLCBmdW5jdGlvbnMsIG5hbWUs
IGFyZ3MpCi0gICAgeyAgIAotICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZCkKLSAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiR1BVIGRldmljZSBub3QgbG9hZGVkLiIpOwotCi0gICAgICAgIGlm
ICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJH
UFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAgICAgICAgY29uc3QgW2FyZ3NMYXlvdXRzLCBhcmdz
UmVzb3VyY2VCaW5kaW5ncywgYXJnc0RlY2xhcmF0aW9ucywgZnVuY3Rpb25DYWxsQXJnc10gPSB0
aGlzLl9zZXRVcEFyZ3VtZW50cyhhcmdzKTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0QnVm
ZmVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9jbGVhclJlc3VsdHMoKQotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgdGhpcy5fcmVzdWx0QnVmZmVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQnVm
ZmVyKHsgCi0gICAgICAgICAgICAgICAgc2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAgICAgICAg
ICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVAotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBhcmdzTGF5b3V0cy51bnNoaWZ0KHsKLSAgICAgICAgICAgIGJpbmRpbmc6
IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAg
ICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9KTsKLSAgICAgICAgYXJn
c1Jlc291cmNlQmluZGluZ3MudW5zaGlmdCh7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAg
ICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IHRoaXMuX3Jlc3Vs
dEJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiBUeXBlcy5NQVhfU0laRQotICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBsZXQgZW50cnlQb2ludENvZGU7Ci0gICAgICAg
IGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUodHlw
ZSl9W10gcmVzdWx0IDogcmVnaXN0ZXIodTApYCk7Ci0gICAgICAgIGxldCBjYWxsQ29kZSA9IGAk
e25hbWV9KCR7ZnVuY3Rpb25DYWxsQXJncy5qb2luKCIsICIpfSlgOwotICAgICAgICBjYWxsQ29k
ZSA9IGNvbnZlcnRUb1dITFNMT3V0cHV0VHlwZShjYWxsQ29kZSwgdHlwZSk7Ci0gICAgICAgIGVu
dHJ5UG9pbnRDb2RlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2Nv
bXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhdGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgcmVzdWx0
WzBdID0gJHtjYWxsQ29kZX07Ci19Ci1gOwotICAgICAgICBjb25zdCBjb2RlID0gZnVuY3Rpb25z
ICsgZW50cnlQb2ludENvZGU7Ci0gICAgICAgIGF3YWl0IHRoaXMuX2NhbGxGdW5jdGlvbihjb2Rl
LCBhcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MpOwotICAgIAotICAgICAgICB0cnkg
ewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IHRoaXMuX3Jlc3VsdEJ1ZmZlci5tYXBS
ZWFkQXN5bmMoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkhhcm5lc3MgZXJyb3I6IFVuYWJsZSB0byByZWFkIHJlc3VsdHMhIik7Ci0gICAgICAgIH0K
LSAgICAgICAgY29uc3QgYXJyYXkgPSBuZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkp
KHJlc3VsdCk7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdEJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAg
IHJldHVybiBhcnJheTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDYWxsIGEgV0hMU0wgZnVu
Y3Rpb24gdG8gbW9kaWZ5IHRoZSB2YWx1ZSBvZiBhcmd1bWVudChidWZmZXIpcy4KLSAgICAgKiBA
cGFyYW0ge1N0cmluZ30gZnVuY3Rpb25zIC0gQ3VzdG9tIFdITFNMIGNvZGUgdG8gYmUgdGVzdGVk
LgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIFdITFNMIGZ1
bmN0aW9uIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiAnZnVuY3Rpb25zJy4KLSAgICAgKiBAcGFy
YW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19IGFyZ3MgLSBEYXRhIGFyZ3VtZW50cyB0byBiZSBwYXNz
ZWQgdG8gdGhlIGNhbGwgb2YgJ25hbWUnLgotICAgICAqLwotICAgIGNhbGxWb2lkRnVuY3Rpb24o
ZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9
PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IFthcmdz
TGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9u
Q2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBBcmd1bWVudHMoYXJncyk7Ci0KLSAgICAgICAgbGV0IGVu
dHJ5UG9pbnRDb2RlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2Nv
bXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhdGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgJHtuYW1l
fSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9pbigiLCAiKX0pOwotfWA7Ci0gICAgICAgIGNvbnN0IGNv
ZGUgPSBmdW5jdGlvbnMgKyBlbnRyeVBvaW50Q29kZTsKLSAgICAgICAgdGhpcy5fY2FsbEZ1bmN0
aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBhcmdzUmVzb3VyY2VCaW5kaW5ncyk7Ci0gICAgfQotCi0g
ICAgLyoqCi0gICAgICogQXNzZXJ0IHRoYXQgbWFsZm9ybWVkIHNoYWRlciBjb2RlIGRvZXMgbm90
IGNvbXBpbGUuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IHNvdXJjZSAtIEN1c3RvbSBjb2RlIHRv
IGJlIHRlc3RlZC4KLSAgICAgKi8KLSAgICBhc3luYyBjaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBsb2FkZWQuIik7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Rl
dmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkdQVVVuc3VwcG9y
dGVkRXJyb3IoKTsKLSAgICAgICAgCi0gICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKLVtu
dW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4oKSB7IH1gOwot
Ci0gICAgICAgIGNvbnN0IGNvZGUgPSBzb3VyY2UgKyBlbnRyeVBvaW50Q29kZTsKLQotICAgICAg
ICB0aGlzLl9kZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsg
Y29kZTogY29kZSB9KTsKLSAgICAKLSAgICAgICAgdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbXB1dGVQ
aXBlbGluZSh7Ci0gICAgICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgICAgICBt
b2R1bGU6IHNoYWRlcnMsCi0gICAgICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21h
aW4iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IGVycm9yID0g
YXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLSAgICAgICAgaWYgKCFlcnJvcikK
LSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29tcGlsZXIgZXJyb3I6IHNoYWRlciBjb2Rl
IGRpZCBub3QgZmFpbCB0byBjb21waWxlISIpOwotICAgIH0KLQotICAgIGdldCBkZXZpY2UoKSB7
IHJldHVybiB0aGlzLl9kZXZpY2U7IH0KLQotICAgIF9jbGVhclJlc3VsdHMoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl9jbGVhckJ1ZmZlcikgewotICAgICAgICAgICAgdGhpcy5fY2xlYXJC
dWZmZXIgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAgc2l6
ZTogVHlwZXMuTUFYX1NJWkUsIAotICAgICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5DT1BZX1NSQwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAg
ICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHRoaXMuX2NsZWFyQnVmZmVyLCAw
LCB0aGlzLl9yZXN1bHRCdWZmZXIsIDAsIFR5cGVzLk1BWF9TSVpFKTsKLSAgICAgICAgdGhpcy5f
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAg
IH0KLQotICAgIF9zZXRVcEFyZ3VtZW50cyhhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKCFBcnJh
eS5pc0FycmF5KGFyZ3MpKSB7Ci0gICAgICAgICAgICBpZiAoYXJncyBpbnN0YW5jZW9mIERhdGEp
Ci0gICAgICAgICAgICAgICAgYXJncyA9IFthcmdzXTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFh
cmdzKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBbXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEV4cGFuZCBiaW5kIGdyb3VwIHN0cnVjdHVyZSB0byByZXByZXNlbnQgYW55IGFyZ3VtZW50cy4K
LSAgICAgICAgbGV0IGFyZ3NEZWNsYXJhdGlvbnMgPSBbXTsKLSAgICAgICAgbGV0IGZ1bmN0aW9u
Q2FsbEFyZ3MgPSBbXTsKLSAgICAgICAgbGV0IGFyZ3NMYXlvdXRzID0gW107Ci0gICAgICAgIGxl
dCBhcmdzUmVzb3VyY2VCaW5kaW5ncyA9IFtdOwotCi0gICAgICAgIGZvciAobGV0IGkgPSAxOyBp
IDw9IGFyZ3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbaSAt
IDFdOwotICAgICAgICAgICAgYXJnc0RlY2xhcmF0aW9ucy5wdXNoKGBkZXZpY2UgJHt3aGxzbEFy
Z3VtZW50VHlwZShhcmcudHlwZSl9W10gYXJnJHtpfSA6IHJlZ2lzdGVyKHUke2l9KWApOwotICAg
ICAgICAgICAgZnVuY3Rpb25DYWxsQXJncy5wdXNoKGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGBh
cmcke2l9YCArIChhcmcuaXNCdWZmZXIgPyAiIiA6ICJbMF0iKSwgYXJnLnR5cGUpKTsKLSAgICAg
ICAgICAgIGFyZ3NMYXlvdXRzLnB1c2goewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IGksCi0g
ICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAg
ICAgICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRpbmdzLnB1c2goewotICAgICAgICAgICAgICAgIGJpbmRp
bmc6IGksCi0gICAgICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICAgICAg
YnVmZmVyOiBhcmcuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXplOiBhcmcuYnl0ZUxl
bmd0aAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNs
YXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdOwotICAgIH0KLQotICAgIGFzeW5jIF9jYWxsRnVu
Y3Rpb24oY29kZSwgYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJjZUJpbmRpbmdzKQotICAgIHsKLSAg
ICAgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dCh7Ci0gICAgICAgICAgICBiaW5kaW5nczogYXJnc0xheW91dHMKLSAgICAgICAgfSk7
Ci0KLSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSB0aGlzLl9kZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQot
ICAgICAgICBjb25zdCBiaW5kR3JvdXAgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsK
LSAgICAgICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICAgICAgYmluZGlu
Z3M6IGFyZ3NSZXNvdXJjZUJpbmRpbmdzCi0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2Rl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgICAgIGNvbnN0IHNoYWRl
cnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAg
ICAKLSAgICAgICAgY29uc3QgcGlwZWxpbmUgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKHsKLSAgICAgICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgICAg
ICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAg
ICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5fZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgICAgICBwYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cGlwZWxpbmUpOwotICAgICAgICBwYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICAg
ICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0gICAgICAg
IGNvbnN0IGVycm9yID0gYXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLSAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2Up
OwotICAgIH0KLX0KLQotLyogSGFybmVzcyBTZXR1cCAqLwotCi1jb25zdCBoYXJuZXNzID0gbmV3
IEhhcm5lc3MoKTsKLWhhcm5lc3MucmVxdWVzdERldmljZSgpOwotCi0vKiBHbG9iYWwgSGVscGVy
IEZ1bmN0aW9ucyAqLwotCi0vKioKLSAqIFRoZSBtYWtlX19fIGZ1bmN0aW9ucyBhcmUgd3JhcHBl
cnMgYXJvdW5kIHRoZSBEYXRhIGNvbnN0cnVjdG9yLgotICogVmFsdWVzIHBhc3NlZCBpbiBhcyBh
biBhcnJheSB3aWxsIGJlIHBhc3NlZCBpbiB2aWEgYSBkZXZpY2UtYWRkcmVzc2VkIHBvaW50ZXIg
dHlwZSBpbiB0aGUgc2hhZGVyLgotICogQHBhcmFtIHtCb29sZWFuLCBOdW1iZXIsIG9yIEFycmF5
fSB2YWx1ZXMgLSBUaGUgZGF0YSB0byBiZSBzdG9yZWQgb24gdGhlIEdQVS4KLSAqIEByZXR1cm5z
IEEgbmV3IERhdGEgb2JqZWN0IHdpdGggc3RvcmFnZSBhbGxvY2F0ZWQgdG8gc3RvcmUgdmFsdWVz
LgotICovCi1mdW5jdGlvbiBtYWtlQm9vbCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRh
KGhhcm5lc3MsIFR5cGVzLkJPT0wsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VJbnQodmFs
dWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5JTlQsIHZhbHVlcyk7
Ci19Ci0KLWZ1bmN0aW9uIG1ha2VVY2hhcih2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRh
KGhhcm5lc3MsIFR5cGVzLlVDSEFSLCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlVWludCh2
YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVJTlQsIHZhbHVl
cyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VGbG9hdCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBE
YXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FULCB2YWx1ZXMpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7
QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBvZiBmbG9hdCB2
YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVtYmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0IGJlIGRpdmlz
aWJsZSBieSA0LgotICogQSBzaW5nbGUgNC1lbGVtZW50IGFycmF5IG9mIGZsb2F0cyB3aWxsIGJl
IHRyZWF0ZWQgYXMgYSBzaW5nbGUgZmxvYXQ0IGFyZ3VtZW50IGluIHRoZSBzaGFkZXIuCi0gKi8K
LWZ1bmN0aW9uIG1ha2VGbG9hdDQodmFsdWVzKQotewotICAgIGNvbnN0IHJlc3VsdHMgPSBwcm9j
ZXNzQXJyYXlzKHZhbHVlcywgNCk7Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVz
LkZMT0FUNCwgcmVzdWx0cy52YWx1ZXMsIHJlc3VsdHMuaXNCdWZmZXIpOwotfQotCi0vKioKLSAq
IEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBv
ZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVtYmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0
IGJlIGRpdmlzaWJsZSBieSAxNi4KLSAqIEEgc2luZ2xlIDE2LWVsZW1lbnQgYXJyYXkgb2YgZmxv
YXRzIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSBmbG9hdDR4NCBhcmd1bWVudCBpbiB0aGUg
c2hhZGVyLgotICogVGhpcyBzaG91bGQgZm9sbG93IHRoZSBnbE1hdHJpeC9PcGVuR0wgbWV0aG9k
IG9mIHN0b3JpbmcgNHg0IG1hdHJpY2VzLAotICogd2hlcmUgdGhlIHgsIHksIHogdHJhbnNsYXRp
b24gY29tcG9uZW50cyBhcmUgdGhlIDEzdGgsIDE0dGgsIGFuZCAxNXRoIGVsZW1lbnRzIHJlc3Bl
Y3RpdmVseS4KLSAqLwotZnVuY3Rpb24gbWFrZUZsb2F0NHg0KHZhbHVlcykKLXsKLSAgICBjb25z
dCByZXN1bHRzID0gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIDE2KTsKLSAgICByZXR1cm4gbmV3IERh
dGEoaGFybmVzcywgVHlwZXMuRkxPQVQ0WDQsIHJlc3VsdHMudmFsdWVzLCByZXN1bHRzLmlzQnVm
ZmVyKTsKLX0KLQotZnVuY3Rpb24gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIG1pbmltdW1MZW5ndGgp
Ci17Ci0gICAgY29uc3Qgb3JpZ2luYWxMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwotICAgIC8vIFRo
aXMgd29ya3MgYmVjYXVzZSBmbG9hdDQgaXMgdGlnaHRseSBwYWNrZWQuCi0gICAgLy8gV2hlbiBp
bXBsZW1lbnRpbmcgb3RoZXIgdmVjdG9yIHR5cGVzLCBhZGQgcGFkZGluZyBpZiBuZWVkZWQuCi0g
ICAgdmFsdWVzID0gdmFsdWVzLmZsYXQoKTsKLSAgICBpZiAodmFsdWVzLmxlbmd0aCAlIG1pbmlt
dW1MZW5ndGggIT0gMCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG51bWJlciBv
ZiBlbGVtZW50cyBpbiBub24tc2NhbGFyIHR5cGUhIik7Ci0gICAgCi0gICAgcmV0dXJuIHsgdmFs
dWVzOiB2YWx1ZXMsIGlzQnVmZmVyOiBvcmlnaW5hbExlbmd0aCA9PT0gMSB8fCB2YWx1ZXMubGVu
Z3RoID4gbWluaW11bUxlbmd0aCB9OwotfQotCi0vKioKLSAqIEBwYXJhbSB7U3RyaW5nfSBmdW5j
dGlvbnMgLSBTaGFkZXIgc291cmNlIGNvZGUgdGhhdCBtdXN0IGNvbnRhaW4gYSBkZWZpbml0aW9u
IGZvciAnbmFtZScuCi0gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBmdW5jdGlvbiB0byBi
ZSBjYWxsZWQgZnJvbSAnZnVuY3Rpb25zJy4KLSAqIEBwYXJhbSB7RGF0YSBvciBBcnJheVtEYXRh
XX0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1l
Jy4KLSAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFs
dWUgb2YgYSBjYWxsIHRvICduYW1lJyB3aXRoICdhcmdzJy4KLSAqLwotYXN5bmMgZnVuY3Rpb24g
Y2FsbEJvb2xGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuICEh
KGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuQk9PTCwgZnVuY3Rpb25zLCBu
YW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxJbnRGdW5jdGlvbihmdW5j
dGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBl
ZEZ1bmN0aW9uKFR5cGVzLklOVCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFz
eW5jIGZ1bmN0aW9uIGNhbGxVY2hhckZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsK
LSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuVUNIQVIs
IGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsVWlu
dEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhh
cm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuVUlOVCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdz
KSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxGbG9hdEZ1bmN0aW9uKGZ1bmN0aW9ucywg
bmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rp
b24oVHlwZXMuRkxPQVQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBm
dW5jdGlvbiBjYWxsRmxvYXQ0RnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAg
IHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihUeXBlcy5GTE9BVDQsIGZ1
bmN0aW9ucywgbmFtZSwgYXJncykpLnN1YmFycmF5KDAsIDQpOwotfQotCi1hc3luYyBmdW5jdGlv
biBjYWxsRmxvYXQ0eDRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0
dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FUNFg0LCBmdW5j
dGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJhcnJheSgwLCAxNik7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9u
IGNoZWNrRmFpbChzb3VyY2UpIAotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jaGVja0Nv
bXBpbGVGYWlsKHNvdXJjZSkpOwotfQotCi0vKioKLSAqIERvZXMgbm90IHJldHVybiBhIFByb21p
c2UuIFRvIG9ic2VydmUgdGhlIHJlc3VsdHMgb2YgYSBjYWxsLCAKLSAqIGNhbGwgJ2dldEFycmF5
QnVmZmVyJyBvbiB0aGUgRGF0YSBvYmplY3QgcmV0YWluaW5nIHlvdXIgb3V0cHV0IGJ1ZmZlci4K
LSAqLwotZnVuY3Rpb24gY2FsbFZvaWRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17
Ci0gICAgaGFybmVzcy5jYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncyk7Ci19
Ci0KLWNvbnN0IHdlYkdQVVByb21pc2VUZXN0ID0gKHRlc3RGdW5jLCBtc2cpID0+IHsKLSAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geyAKLSAgICAgICAgcmV0dXJuIHRlc3RGdW5jKCkuY2F0
Y2goZSA9PiB7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVy
cm9yKSkKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0pOwotICAgIH0sIG1zZyk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKG9iaikgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgICAgICBhd2FpdCBoYXJuZXNzLnJlcXVlc3REZXZp
Y2UoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBvYmop
IHsKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKSAKLSAgICAgICAg
ICAgICAgICAgICAgYXdhaXQgd2ViR1BVUHJvbWlzZVRlc3Qob2JqW25hbWVdLCBuYW1lKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSk7Ci19
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0MjA2ZmEzZjQ1
NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JJbmRl
eEFzc2lnbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0
ZGxpYi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWIuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA0NzQ0NDNkMGMyMWIwN2I1N2E4ODJjMGM5
YTNmMDNlYjQxODk4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5MZW5ndGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4w
MDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiKSB7
Ci0gICAgICAgICAgICBmbG9hdDIgeDsKLSAgICAgICAgICAgIHhbMF0gPSBhOwotICAgICAgICAg
ICAgeFsxXSA9IGI7Ci0gICAgICAgICAgICByZXR1cm4gbGVuZ3RoKHgpOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGNvbnN0IGRhdGEgPSBbCi0gICAgICAgIFtOYU4sIDEwXSwKLSAgICAgICAg
WzEwLCBOYU5dLAotICAgICAgICBbMjAsIDEwXSwKLSAgICAgICAgWzAsIDBdLAotICAgIF07Ci0K
LSAgICBmb3IgKGNvbnN0IFt4LCB5XSBvZiBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9
IGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VGbG9hdCh4KSwg
bWFrZUZsb2F0KHkpXSk7Ci0gICAgICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkgewotICAg
ICAgICAgICAgaWYgKCFpc05hTihyZXN1bHQpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiUmVzdWx0IHNob3VsZCBiZSBOYU4uIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0LCBNYXRoLnNxcnQoeCp4ICsgeSp5KSwgZXBz
aWxvbik7Ci0gICAgfQotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDJhZmNkY2FiMGFhYzE0MGMwMjZkYjExYTk4
NGFjMWE4ODEyYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBsZXhpbmdLZXl3b3JkTGlrZUlkZW50aWZpZXJz
Ci1QQVNTIGtleXdvcmRzQXNJZGVudGlmaWVycwotUEFTUyBjb21tZW50cwotUEFTUyBvcGVyYXRv
ck5hbWVzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmcuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmEwM2Y5MDM3YmI5OTVmMjllYzg0MWNiNGJkOTQxOWVjM2IzMWY0NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQot
Y29uc3Qga2V5d29yZHMgPSBbCi0gICAgInN0cnVjdCIKLSAgICAsICJ0eXBlZGVmIgotICAgICwg
ImVudW0iCi0gICAgLCAib3BlcmF0b3IiCi0gICAgLCAiaWYiCi0gICAgLCAiZWxzZSIKLSAgICAs
ICJjb250aW51ZSIKLSAgICAsICJicmVhayIKLSAgICAsICJzd2l0Y2giCi0gICAgLCAiY2FzZSIK
LSAgICAsICJkZWZhdWx0IgotICAgICwgImZhbGx0aHJvdWdoIgotICAgICwgImZvciIKLSAgICAs
ICJ3aGlsZSIKLSAgICAsICJkbyIKLSAgICAsICJyZXR1cm4iCi0gICAgLCAibnVsbCIKLSAgICAs
ICJ0cnVlIgotICAgICwgImZhbHNlIgotICAgICwgImNvbnN0YW50IgotICAgICwgImRldmljZSIK
LSAgICAsICJ0aHJlYWRncm91cCIKLSAgICAsICJ0aHJlYWQiCi0gICAgLCAic3BhY2UiCi0gICAg
LCAidmVydGV4IgotICAgICwgImZyYWdtZW50IgotICAgICwgImNvbXB1dGUiCi0gICAgLCAibnVt
dGhyZWFkcyIKLSAgICAsICJTVl9JbnN0YW5jZUlEIgotICAgICwgIlNWX1ZlcnRleElEIgotICAg
ICwgIlBTSVpFIgotICAgICwgIlNWX1Bvc2l0aW9uIgotICAgICwgIlNWX0lzRnJvbnRGYWNlIgot
ICAgICwgIlNWX1NhbXBsZUluZGV4IgotICAgICwgIlNWX0lubmVyQ292ZXJhZ2UiCi0gICAgLCAi
U1ZfVGFyZ2V0IgotICAgICwgIlNWX0RlcHRoIgotICAgICwgIlNWX0NvdmVyYWdlIgotICAgICwg
IlNWX0Rpc3BhdGNoVGhyZWFkSUQiCi0gICAgLCAiU1ZfR3JvdXBJRCIKLSAgICAsICJTVl9Hcm91
cEluZGV4IgotICAgICwgIlNWX0dyb3VwVGhyZWFkSUQiCi0gICAgLCAiYXR0cmlidXRlIgotICAg
ICwgInJlZ2lzdGVyIgotICAgICwgInNwZWNpYWxpemVkIgotICAgICwgIm5hdGl2ZSIKLSAgICAs
ICJyZXN0cmljdGVkIgotICAgICwgIl8iCi0gICAgLCAiYXV0byIKLSAgICAsICJwcm90b2NvbCIK
LSAgICAsICJjb25zdCIKLSAgICAsICJzdGF0aWMiCi0gICAgLCAibm9pbnRlcnBvbGF0aW9uIgot
ICAgICwgIm5vcGVyc3BlY3RpdmUiCi0gICAgLCAidW5pZm9ybSIKLSAgICAsICJjZW50cm9pZCIK
LSAgICAsICJzYW1wbGUiCi1dOwotCi1jb25zdCBzdWZmaXhlcyA9IFsiZm9vIiwgIjEzMzciLCAi
X2ZvbyJdOwotCi13aGxzbFRlc3RzLmxleGluZ0tleXdvcmRMaWtlSWRlbnRpZmllcnMgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7Ci0gICAgICAg
IGZvciAoY29uc3Qgc3VmZml4IG9mIHN1ZmZpeGVzKSB7Ci0gICAgICAgICAgICBjb25zdCB2YXJp
YWJsZU5hbWUgPSBrZXl3b3JkICsgc3VmZml4OwotICAgICAgICAgICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgICAgICAgICBpbnQg
JHt2YXJpYWJsZU5hbWV9ID0gNDI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAke3Zhcmlh
YmxlTmFtZX07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgYDsKLQotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIDQyKTsKLSAgICAgICAgfQotICAgIH0KLQotfTsKLQotd2hsc2xUZXN0cy5rZXl3b3Jkc0Fz
SWRlbnRpZmllcnMgPSBhc3luYyAoKSA9PiB7Ci0KLSAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yg
a2V5d29yZHMpIHsKLSAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0ga2V5d29yZDsKLSAgICAg
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAg
ICAgICAgIGludCAke3ZhcmlhYmxlTmFtZX0gPSA0MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YDsKLSAgICAgICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotICAgIH0KLX07Ci0KLXdobHNs
VGVzdHMuY29tbWVudHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgLyoKLSAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICAqLwotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAg
ICAgICAgIHJldHVybiA0LyoqLzI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotfTsKLQotd2hsc2xU
ZXN0cy5vcGVyYXRvck5hbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9y
LiQoRm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQot
ICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0K
LSAgICAgICAgaW50IG9wZXJhdG9yLiMoRm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVj
dCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLkAoRm9vKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9w
ZXJhdG9yLiolKEZvbykgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAg
YCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3ImJihpbnQg
eCwgaW50IHkpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGApOwot
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgYm9vbCBvcGVyYXRvcnx8KGludCB4LCBp
bnQgeSkgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEwMjU2YzVjYjY3MzdjNWU3OWIzZDRjMGZmYjg2MTY5MTBhYWU0OWYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIGxpdGVyYWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9saXRlcmFscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNjQ2MWIyYjNhYTc2MjY3MDRk
ZThlZTdiMzc4ZWMwYzA2YTljZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25z
dCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLmxpdGVyYWxzID0gYXN5bmMgKCkgPT4g
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAtMTA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBk
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC4xOwotICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMS45OwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLS4xOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGcoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gLTEuOTsKLSAgICAgICAgfQotICAgICAgICBpbnQgaCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAweGI0ZEIzM0Y7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGkoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gLTB4YjRkQjMzRjsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBb
XSksIC0xMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgICJiIiwgW10pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgICJjIiwgW10pLCAwKTsKLQotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMC4xLCBlcHNpbG9uKTsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImUiLCBbXSksIDEuOSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtMC4xLCBlcHNpbG9uKTsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImciLCBbXSksIC0xLjksIGVwc2lsb24pOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJoIiwgW10pLCAweGI0ZEIzM0YpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiaSIsIFtdKSwgLTB4YjRk
QjMzRik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmEzMzE3ZWU3MDRjZmYy
ZmI2MDQyZjMyNGZmMjIxOWU1MjFiODU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9u
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvZ2lj
YWxOZWdhdGlvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9naWNh
bC1uZWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRp
b24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQwMGIwMTBhZGFiMGNmNmEw
OTg3OTJmMmZjNzZmZjg2Mjk5ODliYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5MdmFsdWVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLmxvZ2ljYWxOZWdhdGlvbiA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSAiYm9vbCBmb28oYm9vbCB4KSB7IHJldHVybiAheDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwg
ZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdC
bGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b29wcy1icmVhay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNjQzY2ExNTU5M2I3MzA2NzVkY2Vk
ZDI3NzNjZDNiMTcyZmM2ZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVy
dGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBz
aGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgx
KSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIGZv
ciAodWludCBpID0gMDsgaSA8IDEwOyAoaSA9IGkgKyAxLCBzaGFkZSA9IHNoYWRlICsgMS4wKSkg
ewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUs
IHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0
ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0g
ICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQi
LCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJp
YnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0
dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwot
ICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
cmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNv
dXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29u
dGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250
aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0
OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1j
b250aW51ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29u
dGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWUyMTM5ODEwOWViMmY3ZjcyNjZlNTUx
ZGY4NDYzYjZmNzNiMWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZl
cnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGlmIChiKSB7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBzaGFkZSA9IHNoYWRlICsg
MS4wOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3Vs
dC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUx
ID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3Qg
aW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29u
c3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRl
eEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
N10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51
bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZP
Uk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6
IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0
dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6
ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNj
cmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAg
IGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAs
IGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRy
YXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sb29wcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sb29wcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjM1ODRkMWQ1MTg4M2I0Y2E2MmY2Yzg5NzQ3ODMxZmYwMTVhOGQ5ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
ICswLDAgQEAKLQotUEFTUyBkb1doaWxlCi1QQVNTIHNpbXBsZVdoaWxlCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3ZWM0OTE5OGY4YWFhYzNkY2Y0YzIzOWQ4NWQyYzBmMjk2MDI3NTkxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2
OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZG9XaGlsZSA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28xKGludCB4KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDc7Ci0gICAgICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
IHdoaWxlICh4IDwgMTApOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaW50IGZvbzIoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNzsKLSAg
ICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB5ID0gODsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHkgPT0gNyk7Ci0gICAgICAgICAgICByZXR1cm4g
eTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vMyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaW50IHN1bSA9IDA7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYg
KHggPT0gMTEpIHsKLSAgICAgICAgICAgICAgICAgICAgeCA9IDE1OwotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3VtID0g
c3VtICsgeDsKLSAgICAgICAgICAgICAgICB4ID0geCArIDE7Ci0gICAgICAgICAgICB9IHdoaWxl
ICh4IDwgMTMpOwotICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEiLCBb
bWFrZUludCgxKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMSIsIFttYWtlSW50KDExKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFttYWtlSW50KDEpXSksIDgp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28z
IiwgW21ha2VJbnQoOSldKSwgMTkpOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVdoaWxlID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkK
LSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHggPCAxMykKLSAgICAgICAgICAgICAgICB4
ID0geCAqIDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDEpXSksIDE2KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgyMzFlNWI4MWY4YTg0ZDQ5MTE2NmQ3NzAwNDEyMzNiNjNjZWM1YTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xvb3BzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVy
dGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
LCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0K
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIHNoYWRl
ID0gc2hhZGUgKyAwLjE7Ci0gICAgfQotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247
Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwg
MS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0
OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsK
LSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVz
fTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
dW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBE
ZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0g
YXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOV0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0g
PSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNl
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZm
ZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdw
dSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2Fw
Q2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3
YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3
ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25z
dCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2ht
ZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51
bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFy
aWFibGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxv
Y2FsLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFmNzBmZmQ0ZGU2MDdiMmEwMDNlZmM3NDdkMjhmZDQ4YjQxYzVhOTQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDMgKzAsMCBAQAotCi1QQVNTIGxvdHNPZkxvY2FsVmFyaWFibGVzCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NzU2ZjM5MjcwNzQ0NDFhYzRiYzNhN2NkODRlMWJk
Nzk2ODgxYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPkxvdHMgb2YgbG9jYWwgdmFyaWFibGVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLmxvdHNPZkxvY2FsVmFyaWFibGVzID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgc3JjID0gImludCBzdW0oKSB7XG4iOwotICAgIHNyYyArPSAiICAgIGludCBpID0gMDtc
biI7Ci0gICAgbGV0IHRhcmdldCA9IDA7Ci0gICAgY29uc3QgbnVtVmFycyA9IDUwOwotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgbnVtVmFyczsgaSsrKSB7Ci0gICAgICAgIHNyYyArPSBgICAgaSA9
ICR7aX07XG5gOwotICAgICAgICBzcmMgKz0gYCAgIGludCBWJHtpfSA9IChpICsgMykgKiAoaSAr
IDMpO1xuYDsKLSAgICAgICAgdGFyZ2V0ICs9IChpICsgMykgKiAoaSArIDMpOwotICAgIH0KLSAg
ICBzcmMgKz0gIiAgICBpbnQgcmVzdWx0ID0gMDtcbiI7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBudW1WYXJzOyBpKyspIHsKLSAgICAgICAgc3JjICs9IGAgICAgcmVzdWx0ICs9IFYke2l9O1xu
YDsKLSAgICB9Ci0gICAgc3JjICs9ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7Ci0gICAgc3JjICs9
ICJ9IjsKLSAgICBsZXQgcHJvZ3JhbSA9IHNyYzsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAic3VtIiwgW10pLCB0YXJnZXQpOwotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE5NzYxY2VjMmI5MTZiNmVkZjg3MTRkMmUwMGE5MmU3ZThhZmEzNTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0K
LVBBU1MgbFZhbHVlcwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZh
bHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBlOTgwNGQwNjM0YmY2MTBkYjA0ZDQ4OGM3ZTdhYjFh
MzViY2I2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+THZhbHVlcy48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sVmFsdWVzID0gYXN5bmMg
KCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0g
Jih4KyspOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJigrK3gpOwotICAg
ICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9
IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJih4ID0gMyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAg
ICAgICAgIHRocmVhZCBpbnQqIHkgPSAmMzsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAg
ICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgYmFyKGlu
dCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geCArIDE7Ci0gICAgICAgIH0KLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRo
cmVhZCBpbnQqIHkgPSAmYmFyKDMpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9
Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5
ID0gJig3LCB4KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOwot
ICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGVudW0gRGF5cyB7Ci0gICAgICAgICAgICBN
b25kYXksCi0gICAgICAgICAgICBUdWVzZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBp
bnQqIHkgPSAmKERheXMuTW9uZGF5KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAg
fQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGJvb2wqIHkgPSAmKHRydWUgJiYgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJl
YWQgYm9vbCogeSA9ICYoIXRydWUpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9
Ci0gICAgYCk7IAotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDM7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5
ID0gJng7Ci0gICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMp
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10
ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAzMTEyYTNjZDZjNjY1M2Y4YWI3ODU1YzlkYTFiMmVlYTFiY2NlYjYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi0KLVBBU1MgbWFrZUFycmF5UmVmRnJvbUFycmF5UmVmCi1QQVNTIG1ha2VB
cnJheVJlZkZyb21Mb2NhbAotUEFTUyBtYWtlQXJyYXlSZWZGcm9tUG9pbnRlcgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNkY2I2YmZlNTUwZDU3NzE3Nzkz
NTNjNWQzYTA5NjgwNjRmMTA2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10
ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubWFrZUFycmF5UmVmRnJvbUFycmF5UmVm
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IGJhcih0aHJlYWQgaW50W10gcmVmKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYmF6
KHRocmVhZCBpbnRbXSBwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGJhcihAcHRyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gNDg7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGJheihAeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3Rz
Lm1ha2VBcnJheVJlZkZyb21Mb2NhbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGludCBiYXIodGhyZWFkIGludFtdIHJlZikKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHJlZlswXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW50IHggPSA0ODsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQHgp
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0OCk7Ci19Ci0KLXdobHNsVGVzdHMubWFrZUFycmF5
UmVmRnJvbVBvaW50ZXIgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgYmFyKHRocmVhZCBpbnRbXSByZWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiByZWZbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJheih0aHJlYWQgaW50KiBwdHIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQHB0cik7Ci0gICAgICAgIH0KLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gNDg7Ci0gICAg
ICAgICAgICByZXR1cm4gYmF6KCZ4KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDgpOwotfQot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNl
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTg3Mzc2MTQ4N2JhNGFhZGYwYjVlZDg2NGM3OTIxOGQ3
NWQyMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxODUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIHRlc3QxKCkg
ewotICAgIGludCB2YWx1ZSA9IDQyOwotICAgIHRocmVhZCBpbnRbXSBhcnJheSA9IEB2YWx1ZTsK
LSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlb
MTIwMjEzXSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXJyYXlbMF0gPSAx
MzM3OwotICAgIGlmICh2YWx1ZSAhPSAxMzM3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB0ZXN0MigpIHsKLSAgICBpbnQgdmFsdWUgPSA0MjsK
LSAgICB0aHJlYWQgaW50KiBwdHIgPSAmdmFsdWU7Ci0gICAgaWYgKCpwdHIgIT0gNDIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRocmVhZCBpbnRbXSBhcnJheSA9IEBwdHI7Ci0gICAg
aWYgKGFycmF5Lmxlbmd0aCAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFy
cmF5WzBdICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzEyMzc0
MjE3XSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgICpwdHIgPSA2NjY7
Ci0gICAgaWYgKCpwdHIgIT0gNjY2KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZh
bHVlICE9IDY2NikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheS5sZW5ndGgg
IT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheVswXSAhPSA2NjYpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGFycmF5WzBdID0gNDI0MjsKLSAgICBpZiAoKnB0
ciAhPSA0MjQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlICE9IDQyNDIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNDI0MikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGVzdDMoKSB7Ci0gICAg
aW50WzQyXSB4OwotICAgIHRocmVhZCBpbnRbNDJdKiBhcnJheVB0ciA9ICZ4OwotICAgIGlmIChh
cnJheVB0ci0+bGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB4WzQx
XSA9IDY2NjsKLSAgICBpZiAoKCphcnJheVB0cilbNDFdICE9IDY2NikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICgoKmFycmF5UHRyKVswXSAhPSAwKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICB0aHJlYWQgaW50W10gYXJyYXkgPSBAeDsKLSAgICBpZiAoYXJyYXkubGVuZ3Ro
ICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcnJheVswXSA9IDEzMzc7Ci0g
ICAgaWYgKHhbMF0gIT0gMTMzNykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFy
cmF5UHRyKVswXSAhPSAxMzM3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCB0ZXN0NCgpIHsKLSAgICBpbnQgeCA9IDQyOwotICAgIHRocmVhZCBp
bnQqIHB0ciA9ICZ4OwotCi0gICAgdGhyZWFkIGludFtdIGFycmF5ID0gQHB0cjsKLSAgICBpZiAo
YXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhcnJh
eVswXSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGFycmF5WzEwMDAw
MF0gIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmlj
ZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3Bh
dGNoVGhyZWFkSUQpIHsKLSAgICBpZiAoIXRlc3QxKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghdGVzdDIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0ZXN0MygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXRlc3Q0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBi
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9Owot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1
bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0g
ICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3MmQzZGQzMGY2
ODRlOWQ1N2VjNTdiYWQ5ZjUyNGVjZTBmM2FlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cmljZXMtc3Bl
Yy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFT
UyBidWlsdGluTWF0cmljZXMKLVBBU1MgbWF0cml4TXVsdGlwbGljYXRpb24KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OWM5ZGYzMWZiNDJlOTcyODIzMmM2OWU5MTMwNmMxNDU0
ZDhjN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDIwNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5idWlsdGluTWF0cmljZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MngyIGE7Ci0gICAgICAgICAgICBhWzBdWzBdID0gMTsKLSAgICAgICAgICAgIGFbMF1bMV0g
PSAyOwotICAgICAgICAgICAgYVsxXVswXSA9IDM7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNDsK
LSAgICAgICAgICAgIHJldHVybiBhWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MyBhOwotICAgICAgICAgICAgYVsw
XVswXSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMF1bMl0g
PSAzOwotICAgICAgICAgICAgYVsxXVswXSA9IDQ7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNTsK
LSAgICAgICAgICAgIGFbMV1bMl0gPSA2OwotICAgICAgICAgICAgcmV0dXJuIGFbMV1bMl07Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MngyIGE7Ci0gICAgICAgICAgICByZXR1cm4gYVswXVswXTsKLSAgICAgICAgfQotICAgICAg
ICBib29sIGZvbzQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAg
ICAgICAgYVswXVswXSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAg
IGFbMV1bMF0gPSAzOwotICAgICAgICAgICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBiOwotICAgICAgICAgICAgYlswXVswXSA9IDU7Ci0gICAgICAgICAgICBiWzBdWzFdID0g
NjsKLSAgICAgICAgICAgIGJbMV1bMF0gPSA3OwotICAgICAgICAgICAgYlsxXVsxXSA9IDg7Ci0g
ICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVpbnQgaiA9IDA7IGogPCAyOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgYVtp
XVtqXSArPSA0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBhbGwoYSA9PSBiKTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVswXSA9IGZsb2F0
MigxLCAyKTsKLSAgICAgICAgICAgIGFbMV0gPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBm
bG9hdDJ4MiBiOwotICAgICAgICAgICAgYlswXVswXSA9IDE7Ci0gICAgICAgICAgICBiWzBdWzFd
ID0gMjsKLSAgICAgICAgICAgIGJbMV1bMF0gPSAzOwotICAgICAgICAgICAgYlsxXVsxXSA9IDQ7
Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGEgPT0gYik7Ci0gICAgICAgIH0KLSAgICAgICAgYm9v
bCBmb282KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgYTsKLSAgICAgICAgICAg
IGFbMF1bMF0gPSAxOwotICAgICAgICAgICAgYVswXVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzFd
WzBdID0gMzsKLSAgICAgICAgICAgIGFbMV1bMV0gPSA0OwotICAgICAgICAgICAgZmxvYXQyeDIg
YjsKLSAgICAgICAgICAgIGJbMF1bMF0gPSA1OwotICAgICAgICAgICAgYlswXVsxXSA9IDEwOwot
ICAgICAgICAgICAgYlsxXVswXSA9IDE4OwotICAgICAgICAgICAgYlsxXVsxXSA9IDI0OwotICAg
ICAgICAgICAgYVswXSAqPSA1OwotICAgICAgICAgICAgYVsxXSAqPSA2OwotICAgICAgICAgICAg
cmV0dXJuIGFsbChhID09IGIpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzcoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MyBhID0gZmxvYXQyeDMoZmxvYXQzKDMsIDQsIDUp
LCBmbG9hdDMoNiwgNywgOCkpOwotICAgICAgICAgICAgcmV0dXJuIGFbMF1bMl07Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNCIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vNiIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNyIsIFtdKSwgNSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeE11bHRpcGxpY2F0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdDJ4NCBtdWx0aXBseShmbG9hdDJ4MyB4LCBmbG9hdDN4NCB5
KSB7Ci0gICAgICAgICAgICAvLyBDb3BpZWQgYW5kIHBhc3RlZCBmcm9tIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5Ci0gICAgICAgICAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHRb
MF1bMF0gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBd
OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgICAg
ICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgICAgICAgICAgcmVz
dWx0WzBdWzFdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzBdICogeVsw
XVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsxXVsxXTsKLSAg
ICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzJdICogeVsyXVsxXTsKLSAgICAgICAgICAg
IHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVswXSAq
IHlbMF1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVsxXSAqIHlbMV1bMl07
Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMl1bMl07Ci0gICAgICAg
ICAgICByZXN1bHRbMF1bM10gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1b
MF0gKiB5WzBdWzNdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMV0gKiB5WzFd
WzNdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMl0gKiB5WzJdWzNdOwotICAg
ICAgICAgICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzBdICogeVswXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzFdICog
eVsxXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzJdICogeVsyXVswXTsK
LSAgICAgICAgICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsx
XSAqIHlbMV1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsyXSAqIHlbMl1b
MV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMF0gKiB5WzBdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhb
MV1bMV0gKiB5WzFdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5
WzJdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICAgICAgICAgIHJlc3Vs
dFsxXVszXSArPSB4WzFdWzBdICogeVswXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSAr
PSB4WzFdWzFdICogeVsxXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzJd
ICogeVsyXVszXTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgZmxvYXQyeDMgbWF0cml4MSgpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIHg7Ci0gICAgICAg
ICAgICB4WzBdWzBdID0gMjsKLSAgICAgICAgICAgIHhbMF1bMV0gPSAzOwotICAgICAgICAgICAg
eFswXVsyXSA9IDU7Ci0gICAgICAgICAgICB4WzFdWzBdID0gNzsKLSAgICAgICAgICAgIHhbMV1b
MV0gPSAxMTsKLSAgICAgICAgICAgIHhbMV1bMl0gPSAxMzsKLSAgICAgICAgICAgIHJldHVybiB4
OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0M3g0IG1hdHJpeDIoKSB7Ci0gICAgICAgICAgICBm
bG9hdDN4NCB5OwotICAgICAgICAgICAgeVswXVswXSA9IDE3OwotICAgICAgICAgICAgeVswXVsx
XSA9IDE5OwotICAgICAgICAgICAgeVswXVsyXSA9IDIzOwotICAgICAgICAgICAgeVswXVszXSA9
IDI5OwotICAgICAgICAgICAgeVsxXVswXSA9IDMxOwotICAgICAgICAgICAgeVsxXVsxXSA9IDM3
OwotICAgICAgICAgICAgeVsxXVsyXSA9IDQxOwotICAgICAgICAgICAgeVsxXVszXSA9IDQzOwot
ICAgICAgICAgICAgeVsyXVswXSA9IDQ3OwotICAgICAgICAgICAgeVsyXVsxXSA9IDUzOwotICAg
ICAgICAgICAgeVsyXVsyXSA9IDU5OwotICAgICAgICAgICAgeVsyXVszXSA9IDYxOwotICAgICAg
ICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDAoKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzBdOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzAxKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRp
cGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVswXVsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9h
dCBmb28wMigpIHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJp
eDIoKSlbMF1bMl07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDMoKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzNdOwotICAgICAg
ICB9Ci0gICAgICAgIGZsb2F0IGZvbzEwKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5
KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBm
b28xMSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIo
KSlbMV1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTIoKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzFdWzJdOwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGZvbzEzKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1h
dHJpeDEoKSwgbWF0cml4MigpKVsxXVszXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDAiLCBbXSksIDE3
ICogMiArIDMxICogMyArIDQ3ICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDEiLCBbXSksIDE5ICogMiArIDM3ICogMyArIDUzICog
NSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vMDIiLCBbXSksIDIzICogMiArIDQxICogMyArIDU5ICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDMiLCBbXSksIDI5ICogMiAr
IDQzICogMyArIDYxICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vMTAiLCBbXSksIDE3ICogNyArIDMxICogMTEgKyA0NyAqIDEzKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28x
MSIsIFtdKSwgMTkgKiA3ICsgMzcgKiAxMSArIDUzICogMTMpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCAyMyAqIDcgKyA0
MSAqIDExICsgNTkgKiAxMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vMTMiLCBbXSksIDI5ICogNyArIDQzICogMTEgKyA2MSAqIDEzKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJp
eC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEzYjE2NTAyYWEwZjM0NzEzNTJiZDY3Zjc2NzlmMmQ2
ZmRiMWRhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDE1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLWJvb2wgYWxsRXF1YWwoZmxvYXQ0eDQg
bWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSAr
IDEpIHsKLSAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgNDsgaiA9IGogKyAxKSB7Ci0gICAg
ICAgICAgICBpZiAobWF0W2ldW2pdICE9IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBmaWxs
KHRocmVhZCBmbG9hdDR4NCogbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAg
ICByZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0K
LSAgICAqbWF0ID0gcmVzdWx0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGZpbGwodGhy
ZWFkIGZsb2F0NCogdmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IGZvciAodWludCBpID0gMDsgaSA8IDQ7IGkgPSBpICsgMSkgewotICAgICAgICByZXN1bHRbaV0g
PSB2YWx1ZTsKLSAgICB9Ci0gICAgKnZlYyA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBhbGxFcXVhbChmbG9hdDQgdmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCA0OyBpID0gaSArIDEpIHsKLSAgICAgICAgaWYgKHZlY1tpXSAhPSB2YWx1
ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2
aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9E
aXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0eDQgbWF0OwotICAgIGZpbGwoJm1hdCwgMSk7
Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQsIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9h
dDQgdmVjOwotICAgIGZpbGwoJnZlYywgMSk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMsIDEpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDQgdmVjMiA9IG11bChtYXQsIHZlYyk7Ci0gICAg
aWYgKCFhbGxFcXVhbCh2ZWMyLCA0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0eDQg
bWF0MiA9IG11bChtYXQsIG1hdCk7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQyLCA0KSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbWF0MiA9IG11bChtYXQyLCBtYXQyKTsKLSAgICBpZiAoIWFsbEVx
dWFsKG1hdDIsIDY0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYnVmZmVyW3VpbnQodGhyZWFk
SUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29t
cHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNo
YWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsK
LSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0
XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVm
ZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCg0LCAxLCAx
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9
IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMy
QXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNG
bG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09
IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRy
aXgtYWxpZ25tZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdu
bWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODI0OGYyNzM0NDk2Njg4
NDkzODczYmY2YzUzMzU1Yjc1OThmZTI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBg
Ci1zdHJ1Y3QgQ29udGFpbmVyMngyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0MngyIG07Ci0g
ICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjJ4MyB7Ci0gICAgZmxvYXQgeDsKLSAg
ICBmbG9hdDJ4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIyeDQgewot
ICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQyeDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3Qg
Q29udGFpbmVyM3gyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0M3gyIG07Ci0gICAgZmxvYXQg
eTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjN4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDN4
MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIzeDQgewotICAgIGZsb2F0
IHg7Ci0gICAgZmxvYXQzeDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVy
NHgyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0NHgyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQot
c3RydWN0IENvbnRhaW5lcjR4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDR4MyBtOwotICAg
IGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXI0eDQgewotICAgIGZsb2F0IHg7Ci0gICAg
ZmxvYXQ0eDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMngyKGRldmljZSBDb250YWluZXIyeDJbXSBpbnB1dCA6
IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0g
ICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFsw
XS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyMngzKGRldmljZSBDb250YWluZXIyeDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNl
IGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRb
MF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFk
cygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMng0KGRldmljZSBDb250YWlu
ZXIyeDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVn
aXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRw
dXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUg
dm9pZCBjb21wdXRlU2hhZGVyM3gyKGRldmljZSBDb250YWluZXIzeDJbXSBpbnB1dCA6IHJlZ2lz
dGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0
cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55Owot
fQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gz
KGRldmljZSBDb250YWluZXIzeDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0
W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVsw
XVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3g0KGRldmljZSBDb250YWluZXIzeDRb
XSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIo
dTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0g
PSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBj
b21wdXRlU2hhZGVyNHgyKGRldmljZSBDb250YWluZXI0eDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUw
KSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBd
ID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1b
bnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgzKGRldmlj
ZSBDb250YWluZXI0eDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0
cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsK
LSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHg0KGRldmljZSBDb250YWluZXI0eDRbXSBpbnB1
dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7
Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1
dFswXS55OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlLCBpc1dITFNMOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJz
dG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3Jh
Z2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGlucHV0U2l6ZSA9
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDMyOwotICAgIGNvbnN0IG91dHB1dFNp
emUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAyOwotCi0gICAgY29uc3QgdXBs
b2FkQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBpbnB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgdXBs
b2FkQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih1cGxvYWRCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB1cGxvYWRCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHVwbG9hZEJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh1cGxvYWRCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAzMjsgKytpKQotICAgICAgICB1cGxvYWRCdWZmZXJGbG9hdDMyQXJyYXlbaV0gPSBp
OwotICAgIHVwbG9hZEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgaW5wdXRCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IGlucHV0U2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNU
IHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRX07Ci0gICAgY29uc3QgaW5wdXRCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGlucHV0QnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBvdXRw
dXRCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IG91dHB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IG91dHB1
dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIob3V0cHV0QnVmZmVyRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZToge2J1ZmZlcjogaW5wdXRCdWZmZXIs
IHNpemU6IGlucHV0U2l6ZX19LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHtidWZmZXI6IG91dHB1
dEJ1ZmZlciwgc2l6ZTogb3V0cHV0U2l6ZX19XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGxldCB0ZXN0
cyA9IFsiY29tcHV0ZVNoYWRlcjJ4MiIsICJjb21wdXRlU2hhZGVyMngzIiwgImNvbXB1dGVTaGFk
ZXIyeDQiLCAiY29tcHV0ZVNoYWRlcjN4MiIsICJjb21wdXRlU2hhZGVyM3gzIiwgImNvbXB1dGVT
aGFkZXIzeDQiLCAiY29tcHV0ZVNoYWRlcjR4MiIsICJjb21wdXRlU2hhZGVyNHgzIiwgImNvbXB1
dGVTaGFkZXI0eDQiXTsKLSAgICBsZXQgcmVzdWx0cyA9IFtdOwotICAgIGZvciAobGV0IHRlc3Qg
b2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZSh7Y29tcHV0ZVN0YWdlOiB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6IHRlc3R9LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fSk7Ci0gICAgICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0g
ICAgICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcih1cGxvYWRCdWZmZXIsIDAs
IGlucHV0QnVmZmVyLCAwLCBpbnB1dFNpemUpOwotICAgICAgICBjb25zdCBjb21wdXRlUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgICAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICAgICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKLSAgICAgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgICAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKLQotICAgICAgICBjb25zdCBvdXRwdXRBcnJheUJ1ZmZlciA9IGF3YWl0IG91dHB1
dEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgY29uc3Qgb3V0cHV0RmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShvdXRwdXRBcnJheUJ1ZmZlcik7Ci0gICAgICAgIHJlc3VsdHMu
cHVzaChvdXRwdXRGbG9hdDMyQXJyYXlbMF0pOwotICAgICAgICByZXN1bHRzLnB1c2gob3V0cHV0
RmxvYXQzMkFycmF5WzFdKTsKLSAgICAgICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7Ci0gICAgfQot
ICAgIGxldCBleHBlY3RlZCA9IFsyLCA2LCA0LCAxMiwgNCwgMTIsIDIsIDgsIDQsIDE2LCA0LCAx
NiwgMiwgMTAsIDQsIDIwLCA0LCAyMF07Ci0gICAgbGV0IGVycm9yID0gZmFsc2U7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAocmVz
dWx0c1tpXSAhPSBleHBlY3RlZFtpXSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdGVzdFBhc3NlZCgiIik7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHRl
c3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtY29tcGFyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LWNvbXBhcmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5M2MzYzFhYjM4ZmVmNzI4MWJlMzAwNWEwMTc3NDdhZjIyNjQ4NTNmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtY29tcGFyZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi0KLVBBU1MgbWF0cml4TFQKLVBBU1MgbWF0cml4TFQyCi1QQVNTIG1hdHJpeExU
RQotUEFTUyBtYXRyaXhMVEUyCi1QQVNTIG1hdHJpeExURTMKLVBBU1MgbWF0cml4R1QKLVBBU1Mg
bWF0cml4R1QyCi1QQVNTIG1hdHJpeEdURQotUEFTUyBtYXRyaXhHVEUyCi1QQVNTIG1hdHJpeEdU
RTMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJiYjk2ODZhNDNjNWVjOTBkNDcwNGM0YzlkYzA5
ZGVjODE3MjdjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
Pj09LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhMVCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9h
dDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZs
b2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJl
dHVybiBhbGwodiA8IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhMVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAg
ICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLSAgICAg
ICAgICAgIHYyWzBdWzBdIC09IDExLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyeDIgcmVzdWx0ID0g
diA8IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFd
ICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeExURSA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4w
KTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7
Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFRFMiA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAg
ICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAy
MC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJu
IGFsbCh2IDw9IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy5tYXRyaXhMVEUzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAg
ICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAgICAgICAgICAgIHYyWzBdWzBdIC09IDEuMDsKLQot
ICAgICAgICAgICAgYm9vbDJ4MiByZXN1bHQgPSB2IDw9IHYyOwotICAgICAgICAgICAgcmV0dXJu
ICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0
WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLm1hdHJpeEdUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAs
IDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIg
PSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnko
diA+IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhHVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAg
ZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjJbMF1bMF0gKz0gMS4wOwotICAgICAgICAg
ICAgdjJbMF1bMV0gLT0gMS4wOwotICAgICAgICAgICAgdjJbMV1bMF0gLT0gMS4wOwotICAgICAg
ICAgICAgdjJbMV1bMV0gLT0gMS4wOwotCi0gICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYg
PiB2MjsKLSAgICAgICAgICAgIHJldHVybiAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsxXSAm
JiByZXN1bHRbMV1bMF0gICYmIHJlc3VsdFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBm
bG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAuMCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7
Ci0gICAgICAgICAgICBmbG9hdDN4MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwot
Ci0gICAgICAgICAgICByZXR1cm4gIWFueSh2ID49IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28i
LCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUyID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIw
LjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIgPSB2OwotCi0gICAgICAgICAgICByZXR1cm4g
YWxsKHYgPj0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeEdURTMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAg
ICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjJbMF1bMF0gKz0gMS4wOwotCi0g
ICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPj0gdjI7Ci0gICAgICAgICAgICByZXR1cm4g
IXJlc3VsdFswXVswXSAmJiByZXN1bHRbMF1bMV0gJiYgcmVzdWx0WzFdWzBdICAmJiByZXN1bHRb
MV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NDA1OGNkOTI2NDRlOTZhZTQ2YjE3NmNiOGM2MDA1
NjY4MWIyYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgbWF0cml4Q29uc3RydWN0b3IK
LVBBU1MgbWF0cml4Q29uc3RydWN0b3IyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNj
YWxhcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzhmYWM3
OWQ2NjEzYzg1OGI3YmU2YmI4MjhjNDljNmZlMTJhOWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgt
Y29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBsaXN0T2ZTY2FsYXJzTWF0cml4Q29uc3RydWN0b3JzCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3Jz
LWxpc3Qtb2Ytc2NhbGFycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1j
b25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDUxY2UxZjQ3MGVmMzIxZjAwYzA3MjY1ZjE5Yjc1OWZmNjJkYjcyMWUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw3NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBl
cHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLmxpc3RPZlNjYWxhcnNNYXRyaXhDb25zdHJ1
Y3RvcnMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9h
dCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKDEsIDIs
IDMsIDQpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgYigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngzIG0gPSBmbG9hdDJ4Mygx
LCAyLCAzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4NCBtID0g
ZmxvYXQyeDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCk7Ci0gICAgICAgICAgICByZXR1cm4gbVsx
XVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQzeDIgbSA9IGZsb2F0M3gyKDEsIDIsIDMsIDQsIDUsIDYpOwotICAgICAgICAgICAg
cmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0M3gzIG0gPSBmbG9hdDN4MygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDN4NCBtID0gZmxvYXQzeDQoMSwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMik7Ci0gICAgICAgICAgICByZXR1cm4g
bVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBnKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQ0eDIgbSA9IGZsb2F0NHgyKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgpOwotICAg
ICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgaCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NHgzIG0gPSBmbG9hdDR4MygxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyKTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDR4NCBtID0gZmxvYXQ0eDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0LCAxNSwgMTYpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICJhIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiYiIsIFtdKSwgNCwgZXBzaWxvbik7
Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImMiLCBbXSksIDUsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJkIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZSIs
IFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgImYiLCBbXSksIDUsIGVwc2lsb24pOwotICAgIGFzc2VydF9h
cHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJnIiwgW10pLCAz
LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAiaCIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImkiLCBbXSksIDUsIGVwc2ls
b24pOwotfQotCi0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyMjcxMTFlZmFiOGYwYjFiOThlYmQ4MTE4
ZGI5N2EzNDk3MThiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5tYXRyaXggY3Rvci48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhDb25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9h
dDN4MihmbG9hdDIoMS4wLCAyLjApLCBmbG9hdDIoMy4wLCA0LjApLCBmbG9hdDIoNS4wLCA2LjAp
KTsKLSAgICAgICAgICAgIHJldHVybiB2WzBdWzBdID09IDEuMCAmJiB2WzBdWzFdID09IDIuMCAK
LSAgICAgICAgICAgICAgICAmJiB2WzFdWzBdID09IDMuMCAmJiB2WzFdWzFdID09IDQuMCAKLSAg
ICAgICAgICAgICAgICAmJiB2WzJdWzBdID09IDUuMCAmJiB2WzJdWzFdID09IDYuMDsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDb25z
dHJ1Y3RvcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMS4wLCAyLjAs
IDMuMCwgNC4wLCA1LjAsIDYuMCk7Ci0gICAgICAgICAgICByZXR1cm4gdlswXVswXSA9PSAxLjAg
JiYgdlswXVsxXSA9PSAyLjAgCi0gICAgICAgICAgICAgICAgJiYgdlsxXVswXSA9PSAzLjAgJiYg
dlsxXVsxXSA9PSA0LjAgCi0gICAgICAgICAgICAgICAgJiYgdlsyXVswXSA9PSA1LjAgJiYgdlsy
XVsxXSA9PSA2LjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3Np
Z24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2Qz
NTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcxY2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5k
ZXgtYXNzaWduLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bWF0cml4LWluZGV4LWFzc2lnbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ODc4MTc4YmI2YWJiNDIyYjFjNGJlZmZhNTJlMTBlMWZjY2JkMDIxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXgtaW5kZXgtYXNzaWduLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm1hdHJpeC1pbmRleC1hc3NpZ24tc3dp
enpsZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNob3Vs
ZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBi
b29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIG1hdDsKLSAgICAgICAgICAgIG1hdFsw
XSA9IGZsb2F0MygxMC4wLCAyMC4wLCAzMC4wKTsKLQotICAgICAgICAgICAgaWYgKCFhbGwobWF0
WzBdID09IGZsb2F0MygxMC4wLCAyMC4wLCAzMC4wKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoIWFsbChtYXRbMF0ueHkgPT0gZmxvYXQyKDEwLjAs
IDIwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlm
ICghYWxsKG1hdFswXS55eCA9PSBmbG9hdDIoMjAuMCwgMTAuMCkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgbWF0WzBdLnh5ID0gZmxvYXQyKDEuMCwgMi4w
KTsKLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXS54eSA9PSBmbG9hdDIoMS4wLCAyLjApKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1hdFswXS55eC55
eCA9IGZsb2F0MigxMDAuMCwgMjAwLjApOwotICAgICAgICAgICAgaWYgKCFhbGwobWF0WzBdLnh5
ID09IGZsb2F0MigxMDAuMCwgMjAwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5YWZkYmQzZGI3
Y2UxZjMwY2ZmNGJjNjljZTgxOGRhY2FjMzAzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4
LW9yZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNT
IG1hdE11bAotUEFTUyBtYXRNdWwyCi1QQVNTIG1hdE11bDMKLVBBU1MgbWF0TXVsNAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5OTQ0MzJhOWY2N2FlMGZmODhmM2UxMWZiNmM0MjE4
ODc2NjUwY2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+bWF0cml4LWluZGV4LW9yZGVyLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLm1hdE11bCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIGEgPSBmbG9hdDJ4MygKLSAg
ICAgICAgICAgICAgICBmbG9hdDMoMSwgMiwgMyksCi0gICAgICAgICAgICAgICAgZmxvYXQzKDQs
IDUsIDYpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxvYXQz
eDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDcsIDgpLAotICAgICAgICAgICAgICAgIGZsb2F0
Mig5LCAxMCksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDExLCAxMikKLSAgICAgICAgICAgICk7
Ci0KLSAgICAgICAgICAgIGZsb2F0M3gzIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAg
ICAgZmxvYXQzeDMgZXhwZWN0ZWQgPSBmbG9hdDN4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMo
MzksIDU0LCA2OSksCi0gICAgICAgICAgICAgICAgZmxvYXQzKDQ5LCA2OCwgODcpLAotICAgICAg
ICAgICAgICAgIGZsb2F0Myg1OSwgODIsIDEwNSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAg
ICByZXR1cm4gYWxsKGV4cGVjdGVkID09IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwg
W10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0TXVsMiA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZs
b2F0MngyIGEgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMSwgOCksCi0gICAg
ICAgICAgICAgICAgZmxvYXQyKDUsIDEyKQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAg
ZmxvYXQyIGIgPSBmbG9hdDIoMjIsIDQ1KTsKLQotICAgICAgICAgICAgZmxvYXQyIHJlc3VsdCA9
IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyIGV4cGVjdGVkID0gZmxvYXQyKDI0Nywg
NzE2KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdE11bDMg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28o
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAg
ZmxvYXQyKDEsIDIpLAotICAgICAgICAgICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgYiA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAg
IGZsb2F0Mig1LCA2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAg
ICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9h
dDIoMjMsIDM0KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMzEsIDQ2KQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBiYXIoKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiID0gZmxv
YXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEsIDIpLAotICAgICAgICAgICAgICAgIGZs
b2F0MigzLCA0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgYSA9IGZs
b2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCA2KSwKLSAgICAgICAgICAgICAgICBm
bG9hdDIoNywgOCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIHJlc3Vs
dCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQgPSBmbG9hdDJ4
MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTksIDIyKSwKLSAgICAgICAgICAgICAgICBmbG9h
dDIoNDMsIDUwKQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBl
Y3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiYmFyIiwgW10p
LCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0TXVsNCA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
Mng0IGEgPSBmbG9hdDJ4NCgKLSAgICAgICAgICAgICAgICBmbG9hdDQoMSwgMiwgMywgNCksCi0g
ICAgICAgICAgICAgICAgZmxvYXQ0KDUsIDYsIDcsIDgpCi0gICAgICAgICAgICApOwotCi0gICAg
ICAgICAgICBmbG9hdDN4MiBiID0gZmxvYXQzeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDks
IDEwKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTEsIDEyKSwKLSAgICAgICAgICAgICAgICBm
bG9hdDIoMTMsIDE0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQzeDQgcmVz
dWx0ID0gbXVsKGEsIGIpOwotCi0gICAgICAgICAgICBmbG9hdDN4NCBleHBlY3RlZCA9IGZsb2F0
M3g0KAotICAgICAgICAgICAgICAgIGZsb2F0NCg1OSwgNzgsIDk3LCAxMTYpLAotICAgICAgICAg
ICAgICAgIGZsb2F0NCg3MSwgOTQsIDExNywgMTQwKSwKLSAgICAgICAgICAgICAgICBmbG9hdDQo
ODMsIDExMCwgMTM3LCAxNjQpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICByZXR1cm4g
YWxsKGV4cGVjdGVkID09IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0
MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9y
eS1sYXlvdXQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNT
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwMTA4NWEyNGFkZDU4YzAxOTdiZjA2MWYy
N2M4ZWFiYTFiMTY5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10
aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0
NHg0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRj
aFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb2F0
NCgxLCAyLCAzLCA0KTsKLSAgICByZXN1bHRbMV0gPSBmbG9hdDQoNSwgNiwgNywgOCk7Ci0gICAg
cmVzdWx0WzJdID0gZmxvYXQ0KDksIDEwLCAxMSwgMTIpOwotICAgIHJlc3VsdFszXSA9IGZsb2F0
NCgxMywgMTQsIDE1LCAxNik7Ci0KLSAgICBmbG9hdDR4NCBtYXQgPSBidWZmZXJbMF07Ci0KLSAg
ICBpZiAobWF0WzBdWzBdID09IDAKLSAgICAgICAgJiYgbWF0WzBdWzFdID09IDEKLSAgICAgICAg
JiYgbWF0WzBdWzJdID09IDIKLSAgICAgICAgJiYgbWF0WzBdWzNdID09IDMKLQotICAgICAgICAm
JiBtYXRbMV1bMF0gPT0gNAotICAgICAgICAmJiBtYXRbMV1bMV0gPT0gNQotICAgICAgICAmJiBt
YXRbMV1bMl0gPT0gNgotICAgICAgICAmJiBtYXRbMV1bM10gPT0gNwotCi0gICAgICAgICYmIG1h
dFsyXVswXSA9PSA4Ci0gICAgICAgICYmIG1hdFsyXVsxXSA9PSA5Ci0gICAgICAgICYmIG1hdFsy
XVsyXSA9PSAxMAotICAgICAgICAmJiBtYXRbMl1bM10gPT0gMTEKLQotICAgICAgICAmJiBtYXRb
M11bMF0gPT0gMTIKLSAgICAgICAgJiYgbWF0WzNdWzFdID09IDEzCi0gICAgICAgICYmIG1hdFsz
XVsyXSA9PSAxNAotICAgICAgICAmJiBtYXRbM11bM10gPT0gMTUpIHsKLSAgICAgICAgYnVmZmVy
WzBdID0gcmVzdWx0OwotICAgIH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmlj
ZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlz
aWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE2OwotCi0g
ICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1
ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFd
ID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVszXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzRdID0gNDsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDY7Ci0gICAg
YnVmZmVyRmxvYXQzMkFycmF5WzddID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbOF0gPSA4
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IDk7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzEwXSA9IDEwOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxMTsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbMTJdID0gMTI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDEzOwot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
MTVdID0gMTU7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1
ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0
IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVy
LCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIo
YnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0
IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7
Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0
c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PT0gMQotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09PSAyCi0gICAgICAgICYmIHJlc3VsdHNG
bG9hdDMyQXJyYXlbMl0gPT09IDMKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9
PT0gNAotCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT09IDUKLSAgICAgICAg
JiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PT0gNgotICAgICAgICAmJiByZXN1bHRzRmxvYXQz
MkFycmF5WzZdID09PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT09IDgK
LQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzhdID09PSA5Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbOV0gPT09IDEwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJy
YXlbMTBdID09PSAxMQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzExXSA9PT0gMTIK
LQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzEyXSA9PT0gMTMKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVsxM10gPT09IDE0Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMy
QXJyYXlbMTRdID09PSAxNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzE1XSA9PT0g
MTYpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXguaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmM2MDJiYmJlNWUxM2IwMmRjNDMyODkxNzQ1N2Q3YTViNzJmZjFjZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi1ib29sIGFsbEVxdWFsKGZsb2F0MngzIG1hdCwgZmxvYXQgdmFsdWUp
Ci17Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMjsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZv
ciAodWludCBqID0gMDsgaiA8IDM7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYgKG1hdFtp
XVtqXSAhPSB2YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29t
cHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQy
eDMgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9vID0gZm9vICsgZmxvYXQyeDMoZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBmbG9hdDMoMS4w
LCAxLjAsIDEuMCkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAxKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZm9vID0gZm9vICogZmxvYXQyeDMoZmxvYXQzKDguNSwgOC41LCA4LjUpLCBmbG9h
dDMoOC41LCA4LjUsIDguNSkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA4LjUpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gLSBmbG9hdDJ4MyhmbG9hdDMoNy41LCA3LjUsIDcu
NSksIGZsb2F0Myg3LjUsIDcuNSwgNy41KSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDEpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmbG9hdDJ4MyhmbG9hdDMoMS4wLCAx
LjAsIDEuMCksIGZsb2F0MygxLjAsIDEuMCwgMS4wKSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28s
IDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmb287Ci0gICAgaWYgKCFh
bGxFcXVhbChmb28sIDQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmb287
Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9h
dDMgZm91cnR5VHdvOwotICAgIGZvdXJ0eVR3by54ID0gNDI7Ci0gICAgZm91cnR5VHdvLnkgPSA0
MjsKLSAgICBmb3VydHlUd28ueiA9IDQyOwotCi0gICAgZm9vWzBdID0gZm91cnR5VHdvOwotICAg
IGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFsKGZvbywgNDIpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb29bMTMzN10gPSBmb3VydHlUd287Ci0gICAgaWYgKCFhbGxFcXVh
bChmb28sIDQyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vWzEwMDAwMDBdID0gZm91cnR5
VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGZvdXJ0eVR3b1sxMzM3XSA9IDUwOwotICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm91cnR5VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFdID0gZm91
cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvdXJ0eVR3b1sxMDAwMDAwXSA9IDUwOwotICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm91cnR5VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFd
ID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZsb2F0MyBzaG91bGRCZUZvdXJ0eVR3byA9IGZvb1sxMDAwMDBdOwotICAgIGlm
IChzaG91bGRCZUZvdXJ0eVR3by54ICE9IDQyIHx8IHNob3VsZEJlRm91cnR5VHdvLnkgIT0gNDIg
fHwgc2hvdWxkQmVGb3VydHlUd28ueiAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGZvdXJ0eVR3b1sxMDAwMDAwMF0gIT0gNDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJ1ZmZl
clt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0K
LWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3Jh
Z2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
LSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9y
ID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2Fn
ZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBd
ID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAg
YnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4
OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2Fn
ZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRz
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwg
MCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlz
cGF0Y2goNCwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRz
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNv
bnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1
ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAg
ICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0
MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwot
ICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgibm90IGNvcnJlY3QiKTsKLSAg
ICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFs
dWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4
cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZDcwZTUwNjU1YjAyMzUxZTRlNDdjZDQ0MGY2
MDMxYmM1MzhhMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAK
LQotc3RydWN0IEJhciB7Ci0gICAgZmxvYXQgc2hhZGU7Ci19Ci1zdHJ1Y3QgRm9vIHsKLSAgICBC
YXIgYmFyOwotfQotCi1zdHJ1Y3QgV3JhcHBlciB7Ci0gICAgRm9vIGZvbzsKLX0KLQotc3RydWN0
IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxv
YXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMSkpIHsKLSAgICBXcmFwcGVyIHdyYXBwZXI7Ci0gICAgd3JhcHBlci5mb28uYmFyLnNoYWRl
ID0gc2hhZGU7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSB3cmFwcGVyLmZvby5iYXIuc2hhZGU7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVk
LWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9v
cC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIy
ZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9v
cC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyZjdlODI2Y2U0MGU2OGVhYjA4ZDRhNTY1NDY3Njk3Y2ZmNmUw
YjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTc1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAg
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0
ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7
IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICBpZiAoYikgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgc2hhZGUgPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICBpZiAoYikgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgZG8gewotICAgICAg
ICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gc2hhZGUgKyAxLjAsIGZhbHNlKSk7Ci0KLSAgICAg
ICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gc2hhZGUgLSAxLjAsIGZh
bHNlKSk7Ci0KLSAgICAgICAgd2hpbGUgKChzaGFkZSA9IHNoYWRlICsgMS4wLCB0cnVlKSkgewot
ICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlICgoc2hhZGUgPSBzaGFkZSAtIDEuMCwgdHJ1
ZSkpIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3Np
dGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNo
YWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAg
PSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAg
Y29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBv
ZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0
ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJp
YnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElu
cHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHBy
aW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0
ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5l
TGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZl
cnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZm
ZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAg
IHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVz
b3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsK
LSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJj
ZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5n
OiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3Jp
cHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5k
aW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1h
dDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3Vy
ZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
ID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0
dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdl
dDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiBy
ZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25z
dCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZl
cnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwot
ICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2
aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tn
cm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhMTQwMWNlNmU0NzIwOWMyMzZlOGRm
NzM3ZmJhODI5ZTNkNzQzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbnVsbElzRXJyb3IKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNThhNWQwMzM1MmQ4ZTM1MGIzYzY5NDE3ZWFjMzNjYWI5YjFmZjdmYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbnVsbC1hcmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bnVsbC48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5udWxsSXNFcnJvciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50KiBwdHIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAqcHRyOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vKG51bGwpOwotICAgICAgICB9Ci0gICAg
YCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGJhcigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHg7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgYmFyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGhyZWFkIGludFtdIHg7Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjM5MWYxYzlhOWVlYzNkMTc2
Nzk5ZDU0MDdhY2JhZGIxOGQyZGE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5
LWFjY2Vzcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFT
UyBzdG9yZU51bGxBcnJheVJlZgotUEFTUyBsb2FkTnVsbEFycmF5UmVmCi1QQVNTIG51bGxOYW1l
ZEFjY2VzcwotUEFTUyBudWxsTmFtZWRBY2Nlc3MyCi1QQVNTIG51bGxOYW1lZEFjY2Vzc1NpbmsK
LVBBU1MgbnVsbE5hbWVkQWNjZXNzU2luazIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2NhMDlkZWZkZTE4ODhiNmViMmEzMzMwODUxNDg2ZGUwMjIyNTcx
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDYwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+bG9hZC9zdG9yZSB0byBudWxsLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLnN0b3JlTnVsbEFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKSB7IG51bGxbMF0gPSA0Mjsg
fQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sb2FkTnVsbEFycmF5UmVmID0gYXN5bmMg
KCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9p
ZCBzaW5rKHRocmVhZCBpbnQqIHgpIHsgfQotICAgICAgICAgICAgdm9pZCBmb28oKSB7IHNpbmso
bnVsbFswXSk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNz
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBmb28oKSB7IG51bGwtPng7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVz
dHMubnVsbE5hbWVkQWNjZXNzMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBudWxsLng7IH0KLSAgICAgICAg
YCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzU2luayA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayhp
bnQgeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luayhudWxsLT54KTsgfQotICAg
ICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5udWxsTmFtZWRBY2Nlc3NTaW5rMiA9IGFzeW5jICgp
ID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQg
c2luayhpbnQgeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luayhudWxsLngpOyB9
Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcmVm
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1MTdhZDQwM2ZmZWIwZDc2ZjU2Y2RhNDM0OGE1
Y2M1MjMzMjIzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDY0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5kZXJl
ZmVyZW5jZURlZmF1bHROdWxsQXJyYXlSZWYgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFk
IGludFtdIHA7Ci0gICAgICAgICAgICByZXR1cm4gcFswXTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
KSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMuZGVmYXVsdEluaXRpYWxpemVkTnVsbEFycmF5UmVmSW50
TGl0ZXJhbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gcCA9IG51bGw7Ci0g
ICAgICAgICAgICByZXR1cm4gcFswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci19Ci0K
LXdobHNsVGVzdHMucGFzc051bGxUb1B0ck1vbm9tb3JwaGljQXJyYXlSZWYgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKHRocmVhZCBpbnRbXSBw
dHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdHJbMHVdOwotICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vKG51bGwp
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5sb2FkTnVsbCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICB2b2lkIHNpbmsodGhyZWFkIGludCogeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygp
IHsgc2luaygqbnVsbCk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29vYi1hY2Nlc3MtMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNhMTNhZjg4ZTEyNTllZmY1YWMzMmI4NjRhMTY0MjExNjJkNmZhNWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29vYi1hY2Nlc3MtMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LQotUEFTUyBvb2IKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1h
Y2Nlc3MtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2NjYTVkZWRlMDdjOWJlYWY3MjI2NWQw
MTg3MWI4ZTlkYTc4NzI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+T09CLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm9vYiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50IHggPSAzOwotICAgICAgICAgICAgdGhyZWFkIGludFtd
IGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJu
IHg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaW50WzEwXSB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAg
ICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJuIHhbMF07Ci0gICAgICAgIH0K
LQotICAgICAgICBpbnQgYmF6KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzEwXSB4Owot
ICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9
IDI1OwotICAgICAgICAgICAgcmV0dXJuIHhbMV07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDI1
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFy
IiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImJheiIsIFtdKSwgMCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1h
Y2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3Mt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb29iLWFjY2Vzcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
YzkxNGQ4YzNiNThmMTBkZmU2ZDYzZjk4YmUxNjVmNDBiN2I0NjFiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
b2ItYWNjZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLVtudW10aHJlYWRzKDQsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFk
ZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQg
OiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyWzEzMzddID0gMC4wOwotICAgIGJ1
ZmZlcls0MjQyNDI0Ml0gPSAwLjA7Ci0gICAgaWYgKGJ1ZmZlclsxMDAwMDBdID09IDAuMCkKLSAg
ICAgICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCld
ICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXpl
ID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0Owot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVd
ID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNv
bnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVm
ZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZm
ZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRl
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNv
bnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAwCi0g
ICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRz
RmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9
PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAg
ICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiNTY2MWQ0ZGM2MDA0NmFlYjhlYzRiN2NiMTA4
MzI4OGFhN2Y4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvckRpdgotUEFTUyB2ZWN0b3JE
aXZXaXRoU2NhbGFyCi1QQVNTIHZlY3RvckRpdldpdGhTY2FsYXIyCi1QQVNTIG1hdHJpeERpdgot
UEFTUyBtYXRyaXhEaXZTY2FsYXIKLVBBU1MgbWF0cml4RGl2U2NhbGFyMgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdlNmE5Yjk0ZTNhYTc3MmJmZGQ4NjMwZWUxMmViMGVmYzYyOTU0NTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLWRpdi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RGl2LjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JE
aXYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQg
Zm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDMwKTsKLSAgICAgICAg
ICAgIGZsb2F0MiB5ID0gZmxvYXQyKDUsIDEwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAv
IHk7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAyLzMsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRo
U2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZs
b2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAg
ICAgICAgICBmbG9hdDIgciA9IHggLyA1LjA7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyLzUsIGVwc2lsb24pOwotfTsKLQot
d2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRoU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIg
eCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxvYXQyIHIgPSAxMDAgLyB4OwotICAg
ICAgICAgICAgcmV0dXJuIHIueCAvIHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
KSwgMTAvNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdiA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0g
ICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIGZsb2F0Mngy
IG0yOwotICAgICAgICAgICAgbTJbMF0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0gICAgICAgICAg
ICBtMlsxXSA9IGZsb2F0MigtMS4wLCAtMS4wKTsKLQotICAgICAgICAgICAgbSA9IG0gLyBtMjsK
LQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAm
JiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxhciA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7
Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSBt
IC8gLTEuMDsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9
PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxh
cjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBm
b28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0
MigxMCwgMjApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0MigyNSwgNTApOwotCi0gICAgICAg
ICAgICBtID0gMTAwLjAgLyBtOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAxMC4wICYm
IG1bMF1bMV0gPT0gNS4wICYmIG1bMV1bMF0gPT0gNC4wICYmIG1bMV1bMV0gPT0gMi4wKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1lcXVhbC1lcXVhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlMDc3ZWFhZWVlN2Q5NWEzYjAwNThiNjRlNDk3OWRhNGQ2YTBiMmJmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLQotUEFTUyBtYXRyaXhFcXVhbAotUEFTUyB2ZWN0b3JFcXVh
bHMKLVBBU1Mgc2NhbGFyRXF1YWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDc5ZGEwNDBmNTNkMzhhZTgyMGQ1OTEyZTYxNDQ4NDJjMzllY2EyZjAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhF
cXVhbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29s
IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxv
YXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtMyA9IG07Ci0gICAgICAgICAgICBtM1swXVsxXSArPSAxMC4wOwotCi0g
ICAgICAgICAgICBib29sMngyIG0yID0gbSA9PSBtMzsKLQotICAgICAgICAgICAgcmV0dXJuIG0y
WzBdWzBdICYmICFtMlswXVsxXSAmJiBtMlsxXVswXSAmJiBtMlsxXVsxXTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JFcXVhbHMgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAg
IGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYyID09IHY7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgcmVzdWx0Lnk7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuc2NhbGFyRXF1YWxzID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAg
ICAgICAgICAgZmxvYXQgeCA9IDEwLjA7Ci0gICAgICAgICAgICBmbG9hdCB5ID0geDsKLSAgICAg
ICAgICAgIHJldHVybiB4ID09IHk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlZDQ1ODdlNzRmZjExNmQwMGRmODY0OGU4
NWUxYjE4ZTcyOWMyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIHZlY3Rvck1pbnVzCi1QQVNT
IHZlY3Rvck5lZ2F0ZQotUEFTUyB2ZWN0b3JNaW51c1NjYWxhcgotUEFTUyB2ZWN0b3JNaW51c1Nj
YWxhcjIKLVBBU1MgbWF0cml4TWludXMKLVBBU1MgbWF0cml4TWludXNTY2FsYXIKLVBBU1MgbWF0
cml4TWludXNTY2FsYXIyCi1QQVNTIG1hdHJpeE5lZ2F0ZQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZjAwZGQ2YmFjZDVlMWNiOWU4NzU5MTRmZmIzNzU1ODljMTRhMTJhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1taW51cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+TWludXMuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3Rvck1p
bnVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBp
bnQyIHkgPSBpbnQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBpbnQyIHIgPSB5IC0geDsKLSAgICAg
ICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAyKTsKLX07
Ci0KLXdobHNsVGVzdHMudmVjdG9yTmVnYXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQy
KDEwLCAyNSk7Ci0gICAgICAgICAgICB4ID0gLXg7Ci0gICAgICAgICAgICByZXR1cm4geC54ICsg
eC55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgLTM1KTsKLX07Ci0KLXdobHNsVGVzdHMudmVj
dG9yTWludXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAuMCwg
MjUuMCk7Ci0gICAgICAgICAgICB4ID0geCAtIDUuMDsKLSAgICAgICAgICAgIHJldHVybiB4Lnkg
LyB4Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAyMC81LCBlcHNpbG9uKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTWludXNTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZs
b2F0MiB4ID0gZmxvYXQyKC0xMC4wLCAtMjUuMCk7Ci0gICAgICAgICAgICB4ID0gNS4wIC0geDsK
LSAgICAgICAgICAgIHJldHVybiB4LnkgLyB4Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW10pLCAzMC8xNSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAs
IDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLSAgICAgICAgICAgIG0g
PSBtIC0gbTsKLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDAgJiYgbVswXVsxXSA9PSAwICYm
IG1bMV1bMF0gPT0gMCAmJiBtWzFdWzFdID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFyID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAg
ICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQotICAgICAgICAgICAgbSA9IG0gLSAxLjA7
Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDE5LjAgJiYgbVswXVsxXSA9PSAyOS4wICYm
IG1bMV1bMF0gPT0gMzkuMCAmJiBtWzFdWzFdID09IDQ5LjApCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFyMiA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7
Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAw
LjAgLSBtOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09
IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TmVnYXRlID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAs
IDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQotICAgICAgICAgICAg
bSA9IC1tOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09
IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3Bl
cmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjlhYzQxYjRkMzkzZDMzYmVlNjAwYTkxOTA3YmIxMGMyM2Q3MWY4ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyAr
MCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JXaXRob3V0VW5pbmZlcnJhYmxlVHlwZVZhcmlhYmxlCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMTg1NGM3ZDIxZmNmZmQxNzVjMWRmOGZiNDc0
ODdiNjJmODNmMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPk9wZXJhdG9yKyBvdmVybG9hZC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hs
c2xUZXN0cy5vcGVyYXRvcldpdGhvdXRVbmluZmVycmFibGVUeXBlVmFyaWFibGUgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAg
ICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgRm9vIG9wZXJhdG9yKyhGb28gYSwgRm9v
IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1
bHQueCA9IGEueCArIGIueDsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZvbyBhOwotICAgICAg
ICAgICAgYS54ID0gNjQ1OwotICAgICAgICAgICAgRm9vIGI7Ci0gICAgICAgICAgICBiLnggPSAt
MzU7Ci0gICAgICAgICAgICByZXR1cm4gKGEgKyBiKS54OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCA2NDUgLSAzNSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1N2FlN2E2YzIxMTRiYjM1
NmE4ZTQzMjRkZGQxYmFhMDNmODBhMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgdmVjdG9yUGx1
cwotUEFTUyB2ZWN0b3JQbHVzU2NhbGFyCi1QQVNTIHZlY3RvclBsdXNTY2FsYXIyCi1QQVNTIG1h
dHJpeFBsdXMKLVBBU1MgbWF0cml4VGltZXNTY2FsYXIKLVBBU1MgbWF0cml4VGltZXNTY2FsYXIy
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODQ2YmU1MGI2NDgwYzk5NDMyODFiNWY3NWFmMjI1Mjg3
NmViNDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5QbHVz
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQot
d2hsc2xUZXN0cy52ZWN0b3JQbHVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQy
KDEwLCAyNSk7Ci0gICAgICAgICAgICBmbG9hdDIgeSA9IGZsb2F0MigyMCwgMzApOwotICAgICAg
ICAgICAgZmxvYXQyIHIgPSB5ICsgeDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwLzU1LCBlcHNpbG9uKTsKLX07Ci0KLXdo
bHNsVGVzdHMudmVjdG9yUGx1c1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZs
b2F0MigxMCwgMjApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB4ICsgMTAuMDsKLSAgICAgICAg
ICAgIHJldHVybiByLnkgLyByLng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMw
LzIwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1c1NjYWxhcjIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZsb2F0
MiByID0gMTAuMCArIHg7Ci0gICAgICAgICAgICByZXR1cm4gci55IC8gci54OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMC8yMCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdHJpeFBsdXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwot
ICAgICAgICAgICAgZmxvYXQyeDIgbTI7Ci0gICAgICAgICAgICBtMlswXSA9IGZsb2F0MigtMjAs
IC0zMCk7Ci0gICAgICAgICAgICBtMlsxXSA9IGZsb2F0MigtNDAsIC01MCk7Ci0gICAgICAgICAg
ICBtID0gbSArIG0yOwotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gMCAmJiBtWzBdWzFdID09
IDAgJiYgbVsxXVswXSA9PSAwICYmIG1bMV1bMV0gPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwg
W10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4VGltZXNTY2FsYXIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwot
ICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gbSAr
IDEwLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDMwLjAgJiYgbVswXVsxXSA9PSA0
MC4wICYmIG1bMV1bMF0gPT0gNTAuMCAmJiBtWzFdWzFdID09IDYwLjApCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIw
LCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAg
IG0gPSAxMC4wICsgbTsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gMzAuMCAmJiBtWzBd
WzFdID09IDQwLjAgJiYgbVsxXVswXSA9PSA1MC4wICYmIG1bMV1bMV0gPT0gNjAuMCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
b3BlcmF0b3Itc3ludGF4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
cGVyYXRvci1zeW50YXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzMTY5MTU2ZGMzMDliMTYxNzU4ODdhMDRhYTlmYmNkNGYxOWU4NmExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0KLVBBU1Mgb3BlcmF0b3JTeW50YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLXN5bnRheC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTFi
Nzc5MzViYzY4YWU2YWYzNzQ2NmQ2YWJjM2U4NGMyNTNkMjkyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVy
YXRvci1zeW50YXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+U29tZSBvcGVyYXRvcnMgc2hvdWxkIGJlIHN5bnRh
eCBlcnJvcnMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMub3BlcmF0
b3JTeW50YXggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAg
IHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb28oRm9vKSB7IHJldHVybiA0
MjsgfQotICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28g
eyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb289KEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oRm9vKSB7IGludCB4OyByZXR1cm4gJng7IH0K
LSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9
Ci0gICAgICAgIGludCBvcGVyYXRvcltdKEZvbywgdWludCkgeyByZXR1cm4gNDI7IH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgIGludCBvcGVyYXRvcltdPShGb28sIHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICB0
aHJlYWQgaW50KiBvcGVyYXRvciZbXShGb28sIHVpbnQpIHsgaW50IHg7IHJldHVybiAmeDsgfQot
ICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzhlNWE1ZmExODA0ZGVjZDQ3
YWY4MTBkZWQ4NDFmYzhhNWZmOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvclRpbWVz
Ci1QQVNTIHZlY3RvclRpbWVzV2l0aFNjYWxhcgotUEFTUyB2ZWN0b3JUaW1lc1dpdGhTY2FsYXIy
Ci1QQVNTIG1hdHJpeFRpbWVzCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyCi1QQVNTIG1hdHJpeFRp
bWVzU2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3ItdGltZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjQ3ZTAyNDg3NzZhNjE3YzMxYmRk
MDg4M2ViYjUwZWM1MjJkMzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGltZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9u
ID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvclRpbWVzID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZs
b2F0MiB4ID0gZmxvYXQyKDIsIDUpOwotICAgICAgICAgICAgZmxvYXQyIHkgPSBmbG9hdDIoMywg
MTApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB5ICogeDsKLSAgICAgICAgICAgIHJldHVybiBy
LnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDYvNTAsIGVwc2lsb24p
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUaW1lc1dpdGhTY2FsYXIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAg
ICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAq
IDIuMDsKLSAgICAgICAgICAgIHJldHVybiByLnggKiByLnk7Ci0gICAgICAgIH0KLSAgICBgOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbXSksIDIwICogNDAsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JU
aW1lc1dpdGhTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAy
MCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IDIuMCAqIHg7Ci0gICAgICAgICAgICByZXR1cm4g
ci54ICogci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMCAqIDQwLCBlcHNp
bG9uKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4VGltZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAg
bVsxXSA9IGZsb2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBmbG9hdDJ4MiBtMjsKLSAgICAg
ICAgICAgIG0yWzBdID0gZmxvYXQyKC0xLjAsIC0xLjApOwotICAgICAgICAgICAgbTJbMV0gPSBm
bG9hdDIoLTEuMCwgLTEuMCk7Ci0KLSAgICAgICAgICAgIG0gPSBtICogbTI7Ci0KLSAgICAgICAg
ICAgIGlmIChtWzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9
PSAtNDAuMCAmJiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhUaW1lc1NjYWxhciA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAg
ICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtICogLTEuMDsK
LQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAm
JiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAz
MCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0g
PSAtMS4wICogbTsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsx
XSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNzYyODZmMzQyMDZmYTNmNDU3MWM5YzliOTM1NjYyZTVjYTNiZWRl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3RvckluZGV4QXNzaWduCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWdu
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlNjY0MTZiZTYxMjRlNjMxZTQ5
MzllOGUwM2JkMzg2N2M5OWRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWdu
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3Rz
ID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckluZGV4
QXNzaWduID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB4WzBdID0gMjA7Ci0g
ICAgICAgICAgICB4WzFdID0gMTA7Ci0gICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAgICAg
ICAgICByZXR1cm4geC54IC8geC55ICsgeFs1MDAwXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IDQwIC8gMTAgKyA0MCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZl
Y3Rvci1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRv
ci12ZWN0b3ItbG9hZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg5NzI1NTcxN2NkNzRlOTE0ZjhjZjY2NWJhNmVmZGNiZDBlZGEzMjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIHZlY3RvckluZGV4TG9hZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2N2IzNzQ2N2EwMjcwMDBkMGEyZTEyZmVhMDI1ODViOGJiYjVjNDcwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZp
eC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAu
MDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJbmRleExvYWQgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGludDIg
eDsKLSAgICAgICAgICAgIHgueCA9IDIwOwotICAgICAgICAgICAgeC55ID0gMTA7Ci0gICAgICAg
ICAgICB4WzUwMDBdID0gNDA7Ci0gICAgICAgICAgICByZXR1cm4geFswXSAvIHhbMV0gKyB4WzUw
MDBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgNDAvMTAgKyA0MCk7Ci19OwotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci14eS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgzYTM5ODBhYWE4MTgxZDEwNDBhM2I0ZGE1NWY4YTMxOTM3OGNjMjguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXh5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yWFkKLVBBU1MgYXNzaWduT3BlcmF0b3JYWQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHkuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzN2NhNWE4YzA4OTA2NWExMTBlZjI1OWQ0NzczOTE3ODgzZDllOTlhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci14eS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT54eS48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMub3BlcmF0
b3JYWSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKCkgewotICAgICAgICAgICAgaWYgKGJvb2wyKHRydWUsIGZhbHNlKS54eS54KQotICAgICAg
ICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBpZiAoYm9vbDIodHJ1ZSwgZmFsc2UpLnl4
LnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI0OwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW50IGJheigpIHsKLSAgICAgICAgICAgIGludDIgeCA9IGludDIo
MjAsIDEwKTsKLSAgICAgICAgICAgIHggPSB4Lnh5OwotICAgICAgICAgICAgcmV0dXJuIHgueCAt
IHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMjQpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbXSksIDEwKTsK
LX07Ci0KLXdobHNsVGVzdHMuYXNzaWduT3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCBpbnQgYikgewotICAgICAg
ICAgICAgaW50MiB4OwotICAgICAgICAgICAgeC54eSA9IGludDIoYSwgYik7Ci0gICAgICAgICAg
ICByZXR1cm4geC54IC0geC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMCksIG1h
a2VJbnQoMTApXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMTApLCBtYWtlSW50KDIwKV0pLCAtMTApOwotfTsK
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ODVlZjdjMWZkY2I5NWU2NjZiZjZiZTc2ZTRkOGZhZDU5YWEyZjM4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vdmVybG9hZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLQotUEFTUyBpbnRPdmVybG9hZFJlc29sdXRpb24KLVBBU1MgaW50T3ZlcmxvYWRS
ZXNvbHV0aW9uUmV2ZXJzZU9yZGVyCi1QQVNTIG5vdEVxdWFsc092ZXJsb2FkCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk3OTZhZTY0ZDQ1NDQwYzAyNDFjMzU3MWE0NWE5ZTUxZjQ2YmRjYjAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L292ZXJsb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk92ZXJsb2FkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLmludE92ZXJsb2FkUmVzb2x1dGlvbiA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGZs
b2F0KSB7IHJldHVybiAzOyB9Ci0gICAgICAgIGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiYmFyIiwgW10pLCAxKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRPdmVybG9hZFJlc29sdXRpb25S
ZXZlcnNlT3JkZXIgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9Ci0gICAgICAgIGludCBmb28odWludCkgeyBy
ZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBp
bnQgYmFyKCkgeyByZXR1cm4gZm9vKDQyKTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMSk7Ci19Ci0KLXdobHNs
VGVzdHMubm90RXF1YWxzT3ZlcmxvYWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShGb28sIEZvbykgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTgxOGI1MDcyNzUyNjQ4YWIyYjc5ZDhmNTM3NmQ0OGUw
Y2M2NmU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBsdXNFcXVhbHNS
ZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEwOWI3MjQzY2FlNDJkOWVlNjUzNGZjODhkMjFiOTJi
OWIxMDg5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDM5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBv
dmVycmlkZSBzdWJzY3JpcHRzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRl
c3RzLnBsdXNFcXVhbHMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4ICs9IDQyOwotICAg
ICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4
NSArIDQyKTsKLX0KLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHggKz0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgzODUpXSksIDM4NSArIDQyKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50
ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9p
bnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjk3YjI0ZjMxMTg3NTRmZWRhMzE3NjlkN2FlY2RmOWQ0ZjdkNzVkMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotCi1QQVNTIHBvaW50ZXJUb1BvaW50ZXIKLVBBU1MgcG9pbnRlclRvTWVtYmVyCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI4NTUwYjVmZjYwYzZhYzI3Y2Q1NmM1ZjE4
MWI3Y2M1Yzk3ZTFhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5wb2ludGVyVG9Qb2ludGVyID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGludCB4OwotICAgICAgICAgICAgdGhyZWFkIGludCogcCA9ICZ4OwotICAgICAgICAgICAg
dGhyZWFkIGludCoqIHBwID0gJnA7Ci0gICAgICAgICAgICBpbnQqdGhyZWFkKnRocmVhZCBxcSA9
IHBwOwotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICB4ID0gNDI7Ci0g
ICAgICAgICAgICAqcCA9IDc2OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAg
ICAqKnBwID0gMzk7Ci0gICAgICAgICAgICByZXN1bHQgKz0geDsKLSAgICAgICAgICAgICoqcXEg
PSA4MzsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotfQot
Ci13aGxzbFRlc3RzLnBvaW50ZXJUb01lbWJlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzIHg7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGZs
b2F0KiB5ID0gJnhbMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzeDMgeDsKLSAgICAgICAgICAgICAgICB0aHJlYWQg
ZmxvYXQzKiB5ID0gJnhbMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYwNDQzOTY3MTQ0ZmI1ZTA5NzQwZmYxM2IzM2Y1ODIxZGY1Mzg3
NDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2ICswLDAgQEAKLQotUEFTUyBwcmVmaXhQbHVzUGx1cwotUEFTUyBwcmVmaXhQ
bHVzUGx1c1Jlc3VsdAotUEFTUyBwb3N0Zml4UGx1c1BsdXMKLVBBU1MgcG9zdGZpeFBsdXNQbHVz
UmVzdWx0Ci1QQVNTIHByZWZpeE1pbnVzTWludXMKLVBBU1MgcHJlZml4TWludXNNaW51c1Jlc3Vs
dAotUEFTUyBwb3N0Zml4TWludXNNaW51cwotUEFTUyBwb3N0Zml4TWludXNNaW51c1Jlc3VsdAot
UEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBsdXNFcXVhbHNSZXN1bHQKLVBBU1MgbWludXNFcXVhbHMK
LVBBU1MgbWludXNFcXVhbHNSZXN1bHQKLVBBU1MgdGltZXNFcXVhbHMKLVBBU1MgdGltZXNFcXVh
bHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgt
cHJlZml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyZjdjYzhlZTExNjZjYTAwYTFmMTU5
NmI4OWY1ZmNmNDc1MmFjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMucHJlZml4UGx1c1BsdXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICAr
K3g7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0
KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4UGx1c1BsdXNSZXN1bHQgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKyt4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNjQpXSksIDY1KTsKLX0KLQotd2hsc2xUZXN0cy5wb3N0Zml4UGx1c1BsdXMgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB4Kys7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeFBs
dXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHgrKzsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NCk7Ci19Ci0KLXdobHNsVGVzdHMucHJl
Zml4TWludXNNaW51cyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC0teDsKLSAgICAgICAg
ICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDYzKTsKLX0K
LQotd2hsc2xUZXN0cy5wcmVmaXhNaW51c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIC0teDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2
Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB4LS07Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXNS
ZXN1bHQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geC0tOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDY0KTsKLX0KLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxz
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhp
bnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeCArPSA0MjsKLSAgICAgICAgICAgIHJldHVy
biB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0K
LXdobHNsVGVzdHMucGx1c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiB4ICs9IDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUg
KyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMubWludXNFcXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHggLT0gNDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOwotfQotCi13aGxzbFRlc3RzLm1pbnVzRXF1YWxz
UmVzdWx0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCAtPSA0MjsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOwotfQotCi13aGxzbFRlc3Rz
LnRpbWVzRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4ICo9IDQyOwotICAgICAg
ICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAq
IDQyKTsKLX0KLQotd2hsc2xUZXN0cy50aW1lc0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHggKj0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgz
ODUpXSksIDM4NSAqIDQyKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1l
dmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9w
cm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWE5MzM5NDJlODFmZDgxOTZlNjFiODAxNzMxZmE2MWM4OTMxN2ZlMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UKLVBBU1Mg
ZG9udEV2YWx1YXRlVHdpY2UyCi1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlMwotUEFTUyBkb250RXZh
bHVhdGVUd2ljZTQKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U1Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3
aWNlNgotUEFTUyBkb250RXZhbHVhdGVUd2ljZTcKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U4Ci1Q
QVNTIGRvbnRFdmFsdWF0ZVR3aWNlOQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTdjMjg3MTkxYTc3ODM0YmVhODY3MWUzOTU1Nzg2YjljOGUzN2NiMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMjQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+ZXZh
bHVhdGlvbiBvcmRlciBhbmQgdGltZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAg
ICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAg
ICAgICAgcmV0dXJuIG9sZDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAg
ICAgICAgICAgdWludCB4ID0gMDsKLSAgICAgICAgICAgIGludFs0Ml0gYXJyOwotICAgICAgICAg
ICAgYXJyWzBdID0gNDI7Ci0KLSAgICAgICAgICAgIGludCByZXN1bHQgPSBhcnJbYmFyKCZ4KV07
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0ID09IDQyICYmIHggPT0gMTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2lj
ZTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBi
YXIodGhyZWFkIHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAg
ICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7
Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsK
LQotICAgICAgICAgICAgdWludFszXSBpbmRpY2VzOwotCi0gICAgICAgICAgICB1aW50WzRdWzRd
WzRdIGFycjsKLQotICAgICAgICAgICAgYXJyW2JhcihAaW5kaWNlcywgMCwgJngpXVtiYXIoQGlu
ZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRpY2VzLCAyLCAmeCldID0gNDI7Ci0gICAgICAgICAgICBy
ZXR1cm4gYXJyWzBdWzBdWzBdID09IDQyCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1swXSA9
PSAxIAotICAgICAgICAgICAgICAgICYmIGluZGljZXNbMV0gPT0gMiAKLSAgICAgICAgICAgICAg
ICAmJiBpbmRpY2VzWzJdID09IDMKLSAgICAgICAgICAgICAgICAmJiB4ID09IDQ7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRl
VHdpY2UzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVp
bnRbMl1bMl0gYmFzZSh0aHJlYWQgdWludFtdIGFyciwgdWludCBpbmRleCwgdGhyZWFkIHVpbnQq
IHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgYXJyW2lu
ZGV4XSA9IG9sZDsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHVp
bnRbMl1bMl0gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdID0gNDI7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBiYXIodGhyZWFk
IHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAg
IHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAg
ICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLQotICAgICAg
ICAgICAgdWludFszXSBpbmRpY2VzOwotCi0gICAgICAgICAgICB1aW50IHJlc3VsdCA9IGJhc2Uo
QGluZGljZXMsIDAsICZ4KVtiYXIoQGluZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRpY2VzLCAyLCAm
eCldOwotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0ID09IDQyCi0gICAgICAgICAgICAgICAg
JiYgaW5kaWNlc1swXSA9PSAxCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1sxXSA9PSAyIAot
ICAgICAgICAgICAgICAgICYmIGluZGljZXNbMl0gPT0gMwotICAgICAgICAgICAgICAgICYmIHgg
PT0gNDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5kb250RXZhbHVhdGVUd2ljZTQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWlu
dCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAg
cmV0dXJuIG9sZDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgdWludFsyXSBhcnI7Ci0KLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAg
IGFycltiYXIoJngpXSArPSA2NjY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhcnJbMV0gPT0gNjY2
ICYmIHggPT0gMjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgdGhyZWFkIHVpbnQqIGdldFB0cih0aHJlYWQgdWludCogcHRyKSB7
Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcHRyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAx
OwotICAgICAgICAgICAgdWludCByZXN1bHQgPSAoKmdldFB0cigmeCkpKys7Ci0gICAgICAgICAg
ICByZXR1cm4geCA9PSAzICYmIHJlc3VsdCA9PSAyOwotICAgICAgICB9Ci0gICAgYDsKLQotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtd
KSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlNiA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWludCogZ2V0UHRy
KHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAg
ICAgICAgIHJldHVybiBwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIHVpbnQgeCA9IDE7Ci0gICAgICAgICAgICB1aW50IHJlc3VsdCA9ICsrKCpnZXRQ
dHIoJngpKTsKLSAgICAgICAgICAgIHJldHVybiB4ID09IDMgJiYgcmVzdWx0ID09IDM7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1
YXRlVHdpY2U3ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IHRocmVhZCB1aW50W10gZ2V0QXJyKHRocmVhZCB1aW50W10gdmFsdWUsIHRocmVhZCB1aW50W10g
aW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5k
aWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBnZXRWYWx1ZSh1
aW50IHJldCwgdGhyZWFkIHVpbnRbXSBpbmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWludCog
cHRyKSB7Ci0gICAgICAgICAgICBpbmRpY2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAgICAq
cHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAg
dWludFszXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFs
dWVbMF0gPSAxOwotCi0gICAgICAgICAgICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAwLCAmeClbZ2V0
VmFsdWUoMCwgQGFyciwgMSwgJngpXSArPSBnZXRWYWx1ZSg2NjUsIEBhcnIsIDIsICZ4KTsKLSAg
ICAgICAgICAgIHJldHVybiB4ID09IDQKLSAgICAgICAgICAgICAgICAmJiBhcnJbMF0gPT0gMQot
ICAgICAgICAgICAgICAgICYmIGFyclsxXSA9PSAyCi0gICAgICAgICAgICAgICAgJiYgYXJyWzJd
ID09IDMKLSAgICAgICAgICAgICAgICAmJiB2YWx1ZVswXSA9PSA2NjY7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U4
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZ2V0
VmFsdWUodWludCByZXQsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFk
IHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAg
ICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
fQotCi0gICAgICAgIHRocmVhZCB1aW50W10gZ2V0QXJyKHRocmVhZCB1aW50W10gdmFsdWUsIHRo
cmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAg
ICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIg
KyAxOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludFszXSBh
cnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAx
OwotCi0gICAgICAgICAgICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAwLCAmeClbYXJyW2dldFZhbHVl
KDAsIEBhcnIsIDEsICZ4KV1dICs9IGdldFZhbHVlKDY2NSwgQGFyciwgMiwgJngpOwotCi0gICAg
ICAgICAgICByZXR1cm4geCA9PSA0Ci0gICAgICAgICAgICAgICAgJiYgYXJyWzBdID09IDEKLSAg
ICAgICAgICAgICAgICAmJiBhcnJbMV0gPT0gMgotICAgICAgICAgICAgICAgICYmIGFyclsyXSA9
PSAzCi0gICAgICAgICAgICAgICAgJiYgdmFsdWVbMF0gPT0gNjY2OwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlOSA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWlu
dFsxXSogZ2V0VmFsdWUodGhyZWFkIHVpbnRbMV0qIGFyciwgdGhyZWFkIHVpbnRbXSBpbmRpY2Vz
LCB1aW50IGluZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRpY2VzW2lu
ZGV4XSA9ICpwdHI7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAg
ICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludFsxXSBhcnI7Ci0gICAgICAgICAgICB1aW50
WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICAoKmdl
dFZhbHVlKCZ2YWx1ZSwgQGFyciwgMCwgJngpKVswXSArPSA2NjU7Ci0KLSAgICAgICAgICAgIHJl
dHVybiB4ID09IDIKLSAgICAgICAgICAgICAgICAmJiBhcnJbMF0gPT0gMQotICAgICAgICAgICAg
ICAgICYmIHZhbHVlWzBdID09IDY2NjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1o
aWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9y
ZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Jl
YWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMWI0ZDQ0ZGZjNjQ1ODA0NTI0NjFiMmQ4MTI2NWVmNzk3YzYyNjI5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotYm9vbCBmaWxsKHRo
cmVhZCBmbG9hdDR4NCogbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAgICBy
ZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0KLSAg
ICAqbWF0ID0gcmVzdWx0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6
IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewot
ICAgIGZsb2F0NHg0IG1hdDsKLSAgICBmaWxsKCZtYXQsIDQpOwotCi0gICAgZmxvYXQ0IHZlYzsK
LSAgICB2ZWNbMF0gKz0gbWF0WzBdWzBdICsgbWF0WzBdWzFdICsgbWF0WzNdWzJdOwotCi0gICAg
ZmxvYXQgdmFsdWUgPSA0MjsKLSAgICB2YWx1ZSArPSB2ZWNbMF07Ci0KLSAgICBtYXRbMF1bMF0g
Kz0gKG1hdFswXVswXSArPSAodmFsdWUgKz0gbWF0WzBdWzBdKSk7Ci0KLSAgICBidWZmZXJbdWlu
dCh0aHJlYWRJRC54KV0gPSBtYXRbMF1bMF07Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVT
dGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAx
OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
YnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZm
ZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRp
bmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBC
aW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5n
czogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5k
RW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBz
aXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
bkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2Nv
bW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0
c0Zsb2F0MzJBcnJheVswXSA9PSA2NikKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxz
ZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19
Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVh
ZC1tb2RpZnktd3JpdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwNTZh
M2FmYmZlM2Y5ZjA5NzU5Nzg2ZjBmMjYyN2IzNzMxMzhhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1t
b2RpZnktd3JpdGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVT
aGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgewotICAgIGJ1ZmZlclsw
XSA9IDE7Ci0gICAgYnVmZmVyWzFdID0gYnVmZmVyWzBdKys7Ci0KLSAgICBidWZmZXJbMl0gPSAx
OwotICAgIGJ1ZmZlclszXSA9ICsrYnVmZmVyWzJdOwotCi0gICAgYnVmZmVyWzRdID0gMTsKLSAg
ICBidWZmZXJbNF0gKz0gNTsKLQotICAgIGJ1ZmZlcls1XSA9IDE7Ci0gICAgYnVmZmVyWzVdICo9
IDc7Ci0KLSAgICBpbnQgdG90YWwgPSAxNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBp
ICs9IDIpIHsKLSAgICAgICAgdG90YWwgKz0gaTsKLSAgICB9Ci0gICAgYnVmZmVyWzZdID0gdG90
YWw7Ci0KLSAgICB0b3RhbCA9IDE0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkg
ewotICAgICAgICB0b3RhbCArPSBpOwotICAgIH0KLSAgICBidWZmZXJbN10gPSB0b3RhbDsKLX0K
LWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2Fp
dCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdh
aXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21w
dXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07
Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBidWZmZXIsIHNpemV9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJp
bmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQg
YnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJh
eShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzWzBdID09IDIKLSAgICAgICAg
JiYgcmVzdWx0c1sxXSA9PSAxCi0gICAgICAgICYmIHJlc3VsdHNbMl0gPT0gMgotICAgICAgICAm
JiByZXN1bHRzWzNdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1s0XSA9PSA2Ci0gICAgICAgICYm
IHJlc3VsdHNbNV0gPT0gNwotICAgICAgICAmJiByZXN1bHRzWzZdID09IDM0Ci0gICAgICAgICYm
IHJlc3VsdHNbN10gPT0gNTkpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2
ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNp
dmUtc3RydWN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1
NjA4NjI2NTFhOWJhM2UwMzVlOTliZmRmNjdmZjk3NWQzOTJkMmUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Jl
Y3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIG11dHVhbGx5UmVjdXJzaXZlU3RydWN0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgzN2RmZThkYzIzYjdiZjY1Y2NhZTg5YmI4N2FiOGZlZjlmOTVmNzcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1
Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0cnVjdCBCYXIgewotICAgICAgICAgICAgICAgIEZvbyBmb287
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotLy8gRklYTUUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc2NjogVGhpcyBzaG91bGQg
Y29tcGlsZS4KLS8vIHdobHNsVGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRl
cnNCcm9rZW4gPSBhc3luYyAoKSA9PgotLy8gewotLy8gICAgIGxldCBwcm9ncmFtID0gYAotLy8g
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLS8vICAgICAgICAgICAgIHRocmVhZCBCYXIqIGJhcjsKLS8v
ICAgICAgICAgICAgIGludCBmb287Ci0vLyAgICAgICAgIH0KLS8vICAgICAgICAgc3RydWN0IEJh
ciB7Ci0vLyAgICAgICAgICAgICB0aHJlYWQgRm9vKiBmb287Ci0vLyAgICAgICAgICAgICBpbnQg
YmFyOwotLy8gICAgICAgICB9Ci0vLyAgICAgICAgIGludCBmb28oKQotLy8gICAgICAgICB7Ci0v
LyAgICAgICAgICAgICBGb28gZm9vOwotLy8gICAgICAgICAgICAgQmFyIGJhcjsKLS8vICAgICAg
ICAgICAgIGZvby5mb28gPSA1NjQ7Ci0vLyAgICAgICAgICAgICBiYXIuYmFyID0gNTM7Ci0vLyAg
ICAgICAgICAgICByZXR1cm4gZm9vLmJhci0+YmFyIC0gYmFyLmZvby0+Zm9vOwotLy8gICAgICAg
ICB9Ci0vLyAgICAgYDsKLS8vICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW10pLCAwKTsKLS8vIH0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNj
MGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzBjMjgzZmU2OGI3NjVkZjYyNjAyZDczZDE2YjRiMjAw
MjlmMzBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0
ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApOwotfQotCi1mbG9hdCBjb3B5KGZsb2F0IHYpIHsKLSAgICBmbG9h
dCBsb2NhbCA9IHY7Ci0gICAgcmV0dXJuIGxvY2FsOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZl
cnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHJlc3VsdC5wb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IGNvcHkoc2hhZGUpOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJu
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVy
bi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWE5YWFkMDU1NjUyYjBkNWJmMWI0OTdjZTcwNTI0YjYyZTQwOGNmYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotCi1QQVNTIHJldHVybklmCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvU2FtZVBhcmFtZXRl
cgotUEFTUyByZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMK
LVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9QYXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9M
b2NhbFZhcmlhYmxlV2l0aE5lc3RpbmcKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlh
YmxlCi1QQVNTIHJldHVybkludExpdGVyYWxVaW50Ci1QQVNTIHJldHVybkludExpdGVyYWxGbG9h
dAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVz
dHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzlmOGIxNDBhYTczMzljNGI4MjUzYzZk
ZmE0YTI3YTAyNjc2ZTg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLnJldHVybklmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYg
KHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50
IHkgPSA2OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LQotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIDg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHJldHVybiAxMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDMpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCAxMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDYpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDEwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoOSldKSwgMTApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlu
dCB5ID0gNjsKLSAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiA4OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA9PSA5KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGApOwotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09
IDcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgeSA9IDk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
eTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDkpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA5
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoNSldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDkpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoOCldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDkpXSksIDkpOwotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0g
NykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiAxMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0K
LSAgICBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KQotICAgICAgICAgICAg
ICAgIGludCB5ID0gODsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNyldKSwgNik7Ci19OwotCi13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5jZVRvU2Ft
ZVBhcmFtZXRlciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwbHVzKGJhcig1KSwgYmFy
KDcpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBwbHVzKHRocmVhZCBpbnQqIHgsIHRocmVh
ZCBpbnQqIHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqeCArICp5OwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmFyKGludCB4KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJng7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMTQpOwotfTsKLQotd2hs
c2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMg
PSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcigxMCkgKyAqYmF6KDIwKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmF6KGlu
dCB5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnk7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdKSwgMzApOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRl
ciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhi
b29sIGNvbmRpdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpiYXIoY29uZGl0
aW9uLCAxLCAyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJhcihib29sIGNv
bmRpdGlvbiwgaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29u
ZGl0aW9uID8gJmEgOiAmYjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSks
IDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUJvb2woZmFsc2UpXSksIDIpOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZl
cmVuY2VUb0xvY2FsVmFyaWFibGVXaXRoTmVzdGluZyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAqYmFyKCkgKyAqYmF6KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBi
YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgYSA9IDIwOwotICAgICAgICAgICAgcmV0
dXJuICZhOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmF6KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaW50IGEgPSAyMjsKLSAgICAgICAgICAgIHJldHVybiAmYTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5j
ZVRvTG9jYWxWYXJpYWJsZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYmFyKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgYSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbFVpbnQgPSBh
c3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAidWludCBmb28oKSB7IHJldHVybiA0Mjsg
fSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbEZsb2F0ID0g
YXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImZsb2F0IGZvbygpIHsgcmV0dXJuIDQy
OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
MC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWI4NDMxMmZkNTAw
YmE1NTEyYzc3NmRlYWRmMWQzNDYxZWY3M2NmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZs
b2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bv
c2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEx
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29s
dmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJD
b2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hp
dGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWUx
ZjM1YzU4NDU1NjFmMjQxNWVlZGQ1ZmRiMWM5Mjc2ZGNlN2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAot
dmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
KSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
KSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28gZjsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEs
IDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0
ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJh
Z21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNv
bnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0
ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAg
ICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwg
Y29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUg
PSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0
ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJp
bWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3Rl
bmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQg
KiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRl
eEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWlu
RGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBz
d2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJl
KCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAx
LCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRw
dXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9y
ZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xv
ckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVz
Y3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0xMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcy
MTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYzNDRiOTZmNDc2ZDA4M2EzY2NmNTJmMGU1NGMyZDhiYjJjY2M5MDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTEyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlv
bjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAg
ICB2Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyBmID0gRm9vLnY7Ci0gICAgcmV0
dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21l
bnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJp
cCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3Vs
bE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1
bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29s
b3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0g
ICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2Us
IGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNv
bG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAx
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjM0MTIyOTRmMDAzNTk3MmYyMTdm
YTQyMzA3MWQxOGQ2YTQyYzVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBpbnQ7
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBm
cmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJp
YnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTZk
OTM0N2QxMzkzODgzZTZhZjI2OTE4OTQyMzAwM2JmN2Y2ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0
IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3Vy
Y2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hh
ZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwot
ICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2Rl
OiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0i
LCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3Jp
dGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNv
bnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0g
ICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07
Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2
ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVm
ZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEz
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6
IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0
dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6
ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNj
cmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAg
IGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0
ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk0MmI3Mjc1OTg0ODI5ZGM5OGI0MzhmZGJl
YjEwNDQ4NTdkZWNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci12
ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci1mcmFnbWVudCBmbG9h
dDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFy
Z2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1
bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAg
IGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kg
PSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9u
dEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBb
e2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6
IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUg
PSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwg
Zm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmli
dXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBj
b25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVy
aXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0
LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTog
RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFw
V3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
NF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0g
PSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAg
IHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwg
Zm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29u
ZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9
Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNv
bG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZl
VGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29s
b3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAg
IGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVu
Y29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNo
KCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1p
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNl
KS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRl
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwMTUw
OTA4NWE3NTA4MTA2ZWJkNmZjNzY2NzM0MDg4ZTkzNmE5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZs
b2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZlcnRl
eCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50
U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQz
YzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xNy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MWIxNWU3Njc3YWRmMmQwZjIxY2M3NzlkYmVjMmJlMjQ2
Y2I4ZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE3Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGZsb2F0OwotdmVydGV4IGZs
b2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bv
c2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGZsb2F0OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsK
LSAgICBGb28geCA9IDE7Ci0gICAgcmV0dXJuIGZsb2F0NCh4LCAxLCAxLCAxKTsKLX0KLWA7Ci0K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdl
ID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVy
In07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVU
b3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRl
ID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFC
bGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0
YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdy
aXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5j
aWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0
aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRd
OwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1
ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7
ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29u
dGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0
IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwot
Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAg
Y29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcs
IHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwg
Y2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51
bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rl
ci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJd
KTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJi
NzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xOC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1k
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYmM4Yjg3YWY1ODljNWUzYzhmMDMxNTYyOGEwY2I3NzI4Njc4NDY2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNl
ID0gYAotc3RydWN0IEZvbyB7Ci0gICAgZmxvYXQgeDsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0g
YAotc3RydWN0IEZvbyB7Ci0gICAgZmxvYXQgeDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgRm9vIGY7Ci0gICAgZi54ID0gMTsKLSAgICByZXR1cm4gZmxvYXQ0KGYueCwgMSwgMSwgMSk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZl
cnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVu
dFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtz
aGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7
c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1
dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVm
ZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNj
cmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVs
dFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6
IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRl
eHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6
ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0
YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlw
dG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVy
XSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0
Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTE5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTcyNTA5ZTI4YWJhNWY2NTg0N2QyY2ZiYWViMWZhMDE5MDk0YjllYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNo
YWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRl
eFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9
IGAKLWVudW0gRm9vIHsKLSAgICB4ID0gMCwKLSAgICB5ID0gMQotfQotZnJhZ21lbnQgZmxvYXQ0
IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICBpbnQgeSA9IGludChGb28ueSk7Ci0gICAgcmV0dXJuIGZsb2F0NChmbG9hdCh5
KSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAs
IDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQz
YzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGFkN2IzNjczZWZjMGM3Zjg4NmViMzVkN2EyM2EwNDA2NWU0NzE5
YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZl
cnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBl
cigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0
IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0
YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRl
LCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3Vu
dDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUg
PSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
dmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUi
KTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdy
YTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2Fw
Q2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9
IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3Qg
cmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVu
dHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxs
LCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRl
clBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5S
ZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVy
dGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJkY2JmZjVmMGUzZmIxODJiZjlhOWZlZDZjMWI2MGQ0ODIyZmUz
ZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBv
c2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhl
bHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZmxvYXQ0IGhlbHBl
cigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0
IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0
UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIx
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNm
NzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTIxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBA
QAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTIxLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0M2VlMzZlZGRiZmY3ZTA1
MDA4ZTVjOTdiODA1MjFhMThlODNkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw2NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9h
dDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotdHlwZWRlZiBGb28gPSBpbnQ7Ci10eXBlZGVmIEZvbyA9IGludDsKLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRl
OiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lu
cHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owot
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAo
eCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2
NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTIwZDgyYzEzNDhjOTY1OGQxYWM0NzlhYWY4ODQzMWIyMjdiY2UzNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291
cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQot
Y29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsK
LX0KLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVy
biBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2Fj
ZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAg
QEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0yMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yjg4OTMxZWE3YjlmOGVl
OTVjM2EwZTFhNGI3MzRjOTBiZTc0NGU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci1lbnVtIEZvbyB7Ci0gICAgeAotfQot
ZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQot
YDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVy
cm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAg
IGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTI0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRi
ZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjNkYTY2NDVhZDBkMWQzMmNkNTQ4NGU0MjM1
ZjdiOGYzMGY5ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJl
dHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZs
b2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gMTsKLX0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzYXR1cmF0ZSgzLCA0KSwgc2F0dXJh
dGUoMiksIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNv
bnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAg
IGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmYTQ2ZGY1NmY5ZDhmOWMzNzZlMzZiOTE3OGZjMmQ1Yjg0MzRlMTcxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7
Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyMihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
ZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAi
dHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZh
Y2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zv
cm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1
fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBu
dWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25z
dCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBm
cmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xv
clN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAg
IHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZm
ZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MjYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyZDI1ZTkzMGY4N2ZmZWE2MmIyNzdhODM3YzlmZWE0N2I4NzViNGFmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
Ni5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVy
U291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVy
dGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9u
U3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBs
ZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
N10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
ImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVT
d2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9
IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVW
aWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRh
Y2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6
IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVk
fV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0
YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjct
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0MmZlZTU1NTZlOTU0MTU4MzliYmVhYWIyYWJhYTk3
NjVjMjQ5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
biwgYm9vbCBpc0ZvbnRGYWNlIDogU1ZfSXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0
UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
UEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGNmOTIxNWRjYzhhOTg3ZDk4OTA0
ZmJjY2M3MjQ1NWM2ZTM3N2IwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0g
YAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFk
ZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2
ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3Rh
dGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBo
YUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
U3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwg
d3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTog
MTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1
dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2
ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRp
b25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2Ft
cGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgp
Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtNC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmNh
YmJjYzE4ODRkYjk2NjQzZDc4OTg2NWRhYWRkMTc1Zjk0NjczLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAK
LXR5cGVkZWYgRm9vID0gaW50OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRp
b247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9h
dDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFy
Z2V0IDAgewotICAgIEZvbyB4OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1g
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVy
dGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0
ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRT
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0
cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9
IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRz
fTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJy
b3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAg
aWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyMzlhOGI4NWI5OGE0MjYzOTNjNzE3MTliMTE2Y2E5NzlkYTllMzdmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJj
ZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotCi12ZXJ0ZXggZmxvYXQ0IHZlcnRl
eFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9
IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZsb2F0NCgx
LCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0
IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAg
Y29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9y
U2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQ
YXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUzMDgyYWZhNTAyNGEzOGM5MjE3ZjYxZTUxNzQ3OGQzMzlhNGQ3
NDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qg
dmVydGV4U2hhZGVyU291cmNlID0gYAotZW51bSBGb28gewotICAgIHYKLX0KLXZlcnRleCBmbG9h
dDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geCA9IEZvby52OwotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0
UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTct
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3
NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
NzdkYjY0MjUxOTc0MmNmZDQ1YzFjOTI1M2M2OTQyOGQ3MTYwZGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAK
LWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdt
ZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVy
KCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmlt
aXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVu
Y2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4
QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5E
ZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3
YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9y
QXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtOC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQwNWFkYzk4
YzUwYjg3NDM2MjNhM2E4MjBjMjcyY2ZhYzhhYjU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRl
eCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50
U2hhZGVyU291cmNlID0gYAotZmxvYXQgc2F0dXJhdGUoZmxvYXQgeCkgewotICAgIHJldHVybiAw
OwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEp
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZy
YWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1
dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwot
fQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0g
ICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy05LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtOS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTM4M2Y1M2M3ODRlOWFhN2RmODg1OGZjOGRkN2RjZmZjZDk5NGJjMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
OS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgYm9vbDIgPSBpbnQ7
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19
Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
dmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2
ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21l
bnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7
c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0g
e3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNo
RXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAg
ICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJh
NDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWE5ZDg1NWU4NGU5ZTQ1NjkwMmZkOWQ4MTFkZDg1OTUwMzQxNWYwYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNo
YWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwot
fWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAw
IHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBm
cmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZy
YWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2
ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1h
dDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNl
dDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2
ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRp
b25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2Ft
cGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1h
dDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3Vy
ZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
ID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0
dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdl
dDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiBy
ZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25z
dCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNz
KCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwot
ICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXR0ZXIt
c3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVy
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ZjI0NDc2N2JlMTdiMWJjOGJlY2ZhYTVjYTVmN2Y1NzhlY2MxMTQ1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAg
QEAKLQotUEFTUyBzZXR0ZXJXaXRoTWF0Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0aE5vR2V0dGVy
T3ZlcmxvYWQKLVBBU1Mgc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZAotUEFTUyByZWN1
cnNpdmVTZXR0ZXJzCi1QQVNTIGxvbmVTZXR0ZXIKLVBBU1MgbG9uZVNldHRlclBvaW50ZXIKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA0MDUwOWVlNmFjMjE3NDkyYjNlYmQyNWI1ZmEw
YTc1YjE1ZGI4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEyOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5zZXR0ZXJXaXRoTWF0Y2hlZFR5cGUgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvci5mb28oaW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IuZm9vPShpbnQs
IGludCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgfQotICAg
ICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB4LmZvbyA9
IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcigp
IHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgcmV0dXJuIHguZm9vOwotICAgICAg
ICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWQg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIHN0cnVjdCBCYXIgeyB9Ci0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3IuZm9vKEZvbykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gNTM0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQmFyIG9wZXJhdG9yLmZv
bz0oQmFyLCBpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJhcigp
OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMu
c2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEJhciB7IH0KLSAgICAgICAgaW50IG9wZXJh
dG9yLmZvbyhCYXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA1MzQ7Ci0gICAgICAg
IH0KLSAgICAgICAgQmFyIG9wZXJhdG9yLmZvbz0oQmFyLCBpbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBCYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAg
ICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIHJldHVybiBiYXIuZm9vOwotICAgICAgICB9
Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBCYXIgYmFyOwotICAgICAgICAgICAg
YmFyLmZvbyA9IDUyOwotICAgICAgICAgICAgcmV0dXJuIGJhci5mb287Ci0gICAgICAgIH0KLSAg
ICBgKTsKLX0KLQotd2hsc2xUZXN0cy5yZWN1cnNpdmVTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAg
IGludCB4OwotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RydWN0IEJh
ciB7Ci0gICAgICAgICAgICBpbnQgYTsKLSAgICAgICAgICAgIGludCBiOwotICAgICAgICB9Ci0g
ICAgICAgIGludCBvcGVyYXRvci5jKEJhciBiYXIpIHsgcmV0dXJuIGJhci5hOyB9Ci0gICAgICAg
IEJhciBvcGVyYXRvci5iYXIoRm9vIGZvbykgeyBCYXIgYjsgYi5hID0gZm9vLng7IGIuYiA9IGZv
by55OyByZXR1cm4gYjsgfQotICAgICAgICBCYXIgb3BlcmF0b3IuYz0oQmFyIGJhciwgaW50IG5l
d3ZhbCkgeyBiYXIuYSA9IG5ld3ZhbDsgcmV0dXJuIGJhcjsgfQotICAgICAgICBGb28gb3BlcmF0
b3IuYmFyPShGb28gZm9vLCBCYXIgbmV3dmFsKSB7IGZvby54ID0gbmV3dmFsLmE7IGZvby55ID0g
bmV3dmFsLmI7IHJldHVybiBmb287IH0KLSAgICAgICAgaW50IGYoKSB7Ci0gICAgICAgICAgICBG
b28gZm9vOwotICAgICAgICAgICAgZm9vLnggPSBmb28ueSA9IDM7Ci0gICAgICAgICAgICBmb28u
YmFyLmMgPSA4OwotICAgICAgICAgICAgcmV0dXJuIGZvby54KjEwICsgZm9vLnk7Ci0gICAgICAg
IH0KLSAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sb25lU2V0dGVyID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
ci5mb289KGludCwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1
NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0
cy5sb25lU2V0dGVyUG9pbnRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvci5mb289KHRocmVh
ZCBpbnQqIHB0ciwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBw
dHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxl
LWFycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTczYWNkNDgyOWYzMTM3Njk0OGU5Y2Mw
YzZkYzc4MDFmZDNkYWU1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBmaWxs
KHRocmVhZCBpbnRbXSBhcnJheSwgaW50IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYXJyYXlbaV0gPSB2YWx1ZTsKLSAgICB9
Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIo
ZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1Zf
RGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGludFs0Ml0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxl
bmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFy
cmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAwKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFycmF5WzBdID0gNTE3OwotICAgIGlmIChhcnJheVsw
XSAhPSA1MTcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRocmVhZCBpbnRbXSBhcnJheVB0ciA9
IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQdHIubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpbnRbNDJdIGFycmF5MjsKLSAgICBhcnJheTIgPSBhcnJheTsKLSAgICBpZiAoYXJy
YXkyLmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhcnJheTJbMF0gIT0g
NTE3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmaWxsKGFycmF5UHRyLCAxMzM3KTsKLSAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheVB0ci5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAo
YXJyYXlQdHJbaV0gIT0gMTMzNykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFy
cmF5W2ldICE9IDEzMzcpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGFy
cmF5MlswXSAhPSA1MTcpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXJyYXkyLmxlbmd0aCAh
PSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodWludCBpID0gMTsgaSA8IGFycmF5Mi5s
ZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXkyW2ldICE9IDApCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYnVmZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07
Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0
b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2Nv
bXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25z
dCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShidWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmlu
ZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91
cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNv
bnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRp
bmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5k
RW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1h
bmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAs
IHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJp
bmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQg
cmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkg
PSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzSW50
MzJBcnJheVswXSA9PT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgi
Iik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJmODdiNWM2ODE1OGVmNDM3OTg4NzBiNzBhZTUyOTJjNTNmZjE0NWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVByb3BlcnR5R2V0Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OTMzZmU1OGM1MmE2NDYwYzE0OGFlYjJkYzdkNDQxM2Jh
ZTFkMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwzMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5zaW1wbGVQcm9wZXJ0eUdldCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZv
bzsKLSAgICAgICAgICAgIGZvby54ID0gNzgwNDsKLSAgICAgICAgICAgIHJldHVybiBmb28ueDsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNzgwNCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjFmNGU4ZWNkNDU1MTA1NWMzYTQ4OTUwYmY3YzE0M2FjMDc1NzBjYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAot
Ci1QQVNTIHNpbXBsZVVucmVhY2hhYmxlQ29kZQotUEFTUyBzaW1wbGVOb1JldHVybgotUEFTUyBz
aW1wbGVSZWN1cnNpdmVTdHJ1Y3QKLVBBU1Mgc2ltcGxlUmVjdXJzaW9uCi1QQVNTIHNpbXBsZVJl
Y3Vyc2lvbjIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10
ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGRjM2JmYjU0NzI3MTkxMWY5ZDkwZmIwZDAw
NTg0MDQ0NDVhMmUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLnNpbXBsZVVucmVhY2hhYmxlQ29kZSA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaW50IHg7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZU5vUmV0
dXJuID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgiaW50IGZvbygpIHsgfSIp
OwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28g
ewotICAgICAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
fQotCi13aGxzbFRlc3RzLnNpbXBsZVJlY3Vyc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvbyh4KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50
IHgpIHsKLSAgICAgICAgICAgICAgICBmb28oeCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBmb28oYmFyKHgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiMThhODg4OTY1MmJjY2Fh
NzBkYmI0Yzk3YjIzNjBlZTUzMDg2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3At
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc2ltcGxl
V2hpbGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS13aGls
ZS1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3Au
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3MTFjMThlMTZjZjc2NjZmNzJl
NmU4MmVjMmZkZjBlMmI3ZjdkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZVdoaWxlID0gYXN5bmMgKCkgPT4gewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICB3aGlsZSAoeCA8IDEzKQotICAgICAgICAgICAgICAgIHggPSB4ICogMjsKLSAgICAg
ICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgMTYpOwot
fQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQt
dHlwZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDQ3ZWJm
ZjZiN2NiMTJmNDdlYzgwZWVjM2M4OWI0YjgwMTgzMWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVy
LXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIHNtYWxsVHlwZXNTaG91bGRGYWlsCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJpdC10eXBlcy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDU2MGE3Y2I3ZTllYTRiY2I4ODI0YzQzYTIxY2I0YTdj
ZTkzMGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPnNtYWxsZXIgdGhhbiAzMi1iaXQgdHlwZXMgc2hvdWxkIG5vdCBwYXJzZS48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zbWFsbFR5cGVzU2hvdWxkRmFpbCA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVjaGFyIHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNoYXIgeDsKLSAgICAgICAgfQotICAgIGApOyAKLQotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgc2hvcnQg
eDsKLSAgICAgICAgfQotICAgIGApOyAKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAg
IHZvaWQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdXNob3J0IHg7Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGhhbGYgeDsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0y
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5N2MzMTdmMDFmMWRiZDRjY2I0MmQzNjJlY2RjOTBmZmY1MmE4
MDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDog
cmVnaXN0ZXIodTEpKSB7Ci0gICAgYnVmZmVyWzBdID0gMTc7Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRl
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVy
In07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBb
e2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7Ymlu
ZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29t
cHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0p
OwotICAgIGNvbnN0IGJ1ZmZlcjIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplLCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfSk7Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1
ZmZlcjEsIHNpemV9fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIyLCBz
aXplfX1dfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEs
IDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVm
ZmVyID0gYXdhaXQgYnVmZmVyMi5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlm
IChyZXN1bHRzRmxvYXQzMkFycmF5WzBdID09IDE3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIudW5tYXAoKTsK
LX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRl
c3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWRiZjE1ODU2ODFlZTBlOTI5NzY4ZGYxMDU0OGE4YzdlZDNlZTBjZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25z
dCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBj
b21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUxKSkgewotICAg
IGJ1ZmZlclswXSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiAwLCB0eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3Qg
YnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JB
R0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdz
OiBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIxLCBzaXplfX0sIHtiaW5k
aW5nOiAxLCByZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMiwgc2l6ZX19XX0pOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1
dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBl
bGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAp
OwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5k
RW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlcjIu
bWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJh
eVswXSA9PSAxNykKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICBidWZmZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFz
c2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQt
Z3JvdXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5k
LWdyb3VwLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNl
LWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkzODIyNGMzZjlkNGNiOWMxNDI3N2YzYjU0ZmZm
MmYxYjZmOTVjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMo
MSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZm
ZXIgOiByZWdpc3Rlcih1MCwgc3BhY2UxKSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXQs
IGJpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNp
emUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVm
ZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5T
VE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0Ug
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwMSA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXAoe2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCByZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMSwgc2l6ZX19XX0pOwotICAg
IGNvbnN0IGJpbmRHcm91cDIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1
ZmZlcjIsIHNpemV9fV19KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgxLCBiaW5kR3JvdXAyKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0
Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJy
YXlCdWZmZXIgPSBhd2FpdCBidWZmZXIyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3Vs
dHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0g
ICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMTcpCi0gICAgICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyMi51bm1h
cCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmNjZlOTM1OGY1OWRlYjFlOWFmNzMwNjM0NDY3OGI4ZDIzYzAyYTc0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIHN0b3JlTnVsbAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc3RvcmUtbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkMmZkMzIyYjJlNzUxOTc3NTUy
NDgzNWMzN2Y0MjgzZDcxMDcxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuc3RvcmVOdWxsID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyAqbnVsbCA9IDQyOyB9Ci0gICAgICAgIGAp
OwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRl
cy1wcm9wZXJseS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3Jl
LXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBm
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBk
YXRlcy1wcm9wZXJseS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXBy
b3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGM4OTNjNTkzZTFiYzBlZWY5ZDg0ZmMxZDQwYTRiYzhmMWU0YjhkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTU1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7
Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMCk7Ci19Ci0KLXN0cnVjdCBCYXIgewotICAgIGludCB4OwotICAgIGZsb2F0IHk7
Ci0gICAgaW50IHo7Ci19Ci0KLXN0cnVjdCBGb28gewotICAgIEJhciBiYXI7Ci0gICAgQmFyIGJh
cjI7Ci19Ci0KLXRocmVhZCBGb28qIHB0cigpIHsKLSAgICBGb28gbG9jYWw7Ci0gICAgcmV0dXJu
ICZsb2NhbDsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZl
cnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgRm9vKiBwID0gcHRyKCk7Ci0gICAgcC0+YmFy
Mi55ID0gMS4wOwotICAgIGZsb2F0IHZhbHVlID0gcC0+YmFyMi55OwotCi0gICAgcmVzdWx0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gdmFsdWU7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hh
ZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFn
bWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRT
aGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7
Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1v
ZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9y
bSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JX
cml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25z
dCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZz
ZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1h
dDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1
dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmli
dXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBj
b25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAg
IHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1
ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBb
YmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7
ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29u
dGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0
IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwot
Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAg
Y29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcs
IHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwg
Y2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51
bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3N0cnVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNhNTIxMTMwOWYwNmNi
ZDgzOWIwZGE2ZGFmZWI0MDQ0MTZkZGFkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGVtcHR5U3RydWN0Ci1Q
QVNTIHNldHRpbmdBbkFycmF5SW5zaWRlQVN0cnVjdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Ry
dWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMGY2ODYwNDdlZWUxZjY0
NWU1OTc3MDI1NDBjMDYxMDA2OTE1YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuZW1wdHlTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgVGhpbmd5IHRoaW5neTsKLSAgICAgICAgICAgIHJldHVybiA0NjsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgNDYpOwotfTsKLQotd2hsc2xUZXN0cy5zZXR0aW5nQW5BcnJheUluc2lk
ZUFTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBz
dHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludFsxXSBhcnJheTsKLSAgICAgICAgfQotICAgICAg
ICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAg
IHRocmVhZCBGb28qIGJhciA9ICZmb287Ci0gICAgICAgICAgICBiYXItPmFycmF5WzBdID0gMjE7
Ci0gICAgICAgICAgICByZXR1cm4gZm9vLmFycmF5WzBdOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCAyMSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVt
ZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZTBiZjYwZTUxOGI5ZjliNGNkMjAz
NGY0MzU3MDg2NzA3OWU3NzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJh
dGlvbi1lbGVtZW50LWNsYXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotCi1QQVNTIHN3aXRjaEJyZWFrCi1QQVNTIHVua25vd25WYXJpYWJsZUluRG90RXhwcmVz
c2lvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZp
ZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTcyODk0M2MxNTg2NzViY2JkMTU3ZTA1YTdjOGMw
NDRjNGFlZTAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxl
bWVudC1jbGFzaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN3aXRjaEJyZWFrID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7IGludCB4OyB9Ci0g
ICAgICAgIGVudW0gQmFyIHsgeCA9IDQyLCB5ID0gMCB9Ci0gICAgICAgIGludCBmKCkgewotICAg
ICAgICAgICAgRm9vIEJhcjsKLSAgICAgICAgICAgIHJldHVybiBpbnQoQmFyLngpOwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZiIsIFtdKSwgMCk7Ci19Ci13aGxzbFRlc3RzLnVua25vd25WYXJpYWJsZUluRG90RXhw
cmVzc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIGludCBhID0gdmFyaWFi
bGUueDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0
Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmNlNTRjMjI0
ZmRhM2FmNzU2OTA2OTczZjFlYjY3NTNlYTJiYzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2gtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc3dpdGNoQnJl
YWsKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNTU0YTBiOGYwOTY3MDRkOWZkMzI0MjMzYWNhOWM1ZmNkODk5NzM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zd2l0Y2guaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zd2l0Y2hCcmVhayA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwotICAgICAgICAgICAgc3dpdGNo
ICh4KSB7Ci0gICAgICAgICAgICBjYXNlIDc2NzoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0g
Mjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDY5OgotICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNzY3KV0pLCAyNyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY5KV0pLCA3
NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoMCldKSwgNDkpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
cm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRhOGZhMjdmNjlhMzg1NjhhMzE5NWJmOWI4ODg5M2RkM2E2MWIyYzIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIHRlcm5hcnlFeHByZXNzaW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk3MjRjZTY1N2M5ZmY3NGI3YWM4MjdhM2Q5MTFhZmZjYjFmNWMxZTMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgaW50IGJpdCBtYXRo
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnRlcm5hcnlFeHByZXNz
aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCA8IDMgPyA0IDogNTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgYmFyKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4geCA8IDEwID8gMTEgOiB4IDwgMTIgPyAxNCA6IDE1OwotICAgICAgICB9Ci0gICAgICAg
IGludCBiYXooaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAzIDwgNCA/IHgg
OiA1OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNzY3KV0pLCA1KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMild
KSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImJhciIsIFttYWtlSW50KDgpXSksIDExKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoOSldKSwgMTEpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgx
MCldKSwgMTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJiYXIiLCBbbWFrZUludCgxMSldKSwgMTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMildKSwgMTUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFr
ZUludCgxMyldKSwgMTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJiYXoiLCBbbWFrZUludCgxNCldKSwgMTQpOwotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgKDQgPCA1ID8geCA6IDcpID0gODsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpbnQgeDsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAgICAoMCA8IDEg
PyB4IDogeSkgPSA0MjsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAg
ICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAgICB0aHJlYWQgaW50KiB6ID0gJigwIDwg
MSA/IHggOiB5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKno7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
aW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAg
ICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGludFtdIHogPSBAKDAgPCAx
ID8geCA6IHkpOwotICAgICAgICAgICAgICAgIHJldHVybiAqejsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAg
ICAgICAgICBmbG9hdCB5OwotICAgICAgICAgICAgICAgIHJldHVybiA0IDwgNSA/IHggOiB5Owot
ICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiA0IDwgNSA/IDYgOiA3LjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2Y2Q5YjBiMjQ2MWQ5ZTU2ZjVhNzQ4OGRh
NTE4ZjgyN2Q5MjJkMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoRkFJ
TCksIG1lc3NhZ2UgPSA1IGR1cGxpY2F0ZSB0ZXN0IG5hbWVzOiAiUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0NCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4iLCAiUmV0dXJu
IGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1
ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLiIKLQotUEFTUyBSZXR1cm4g
YSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2
YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFu
IGV4cGVjdGVkIHVpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1
ZS4KLVBBU1MgVXBsb2FkIGFuZCByZXR1cm4gYSBib29sIHZhbHVlLgotUEFTUyBSZXR1cm4gYW4g
ZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVl
LgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4
cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBVcGxvYWQgbWFueSBib29sIHZhbHVlcyBhbmQgcmV0
dXJuIGEgY2FsY3VsYXRlZCByZXN1bHQuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQg
dmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBh
biBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFs
dWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBh
biBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVl
LgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBl
eHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUu
Ci1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhw
ZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFVwbG9hZCBhbmQgY2FsY3VsYXRlIGEgcmVzdWx0IGZy
b20gdmFyaWVkIGFyZ3VtZW50IHR5cGVzLgotUEFTUyBTdG9yZSBpbnRvIGEgZmxvYXQ0W10uCi1Q
QVNTIFVwbG9hZCBhIGludFtdIGFuZCBzdG9yZSBpbnRvIGEgaW50W10uCi1QQVNTIFVwbG9hZCBh
IGZsb2F0NHg0W10gYW5kIHN0b3JlIGludG8gYSBmbG9hdDR4NFtdLgotUEFTUyBSZXR1cm4gYW4g
ZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDR4
NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIENvZGUgc2hvdWxkIG5vdCBj
b21waWxlLCBhbmQgbm8gZXJyb3IgaXMgcmVwb3J0ZWQuCi1QQVNTIFN1Y2Nlc3NmdWxseSBjb21w
aWxpbmcgY29kZSBpbiBjaGVja0ZhaWwgaXMgYW4gZXJyb3IuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgwODM5ODdhOTJiMTFmYmU2NjFjNmMyMGY0ZjE1MDU4Mjc0MjMwYmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExT
TCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi1jb25z
dCBudW1lcmljU2NhbGFyVHlwZXMgPSBbImludCIsICJ1aW50IiwgImZsb2F0Il07Ci0KLWNvbnN0
IG51bWVyaWNTY2FsYXJGdW5jcyA9IHsKLSAgICAiaW50IjogY2FsbEludEZ1bmN0aW9uLAotICAg
ICJ1aW50IjogY2FsbFVpbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlv
bgotfTsKLQotY29uc3Qgc2NhbGFyQXJnTWFrZXJzID0gewotICAgICJib29sIjogbWFrZUJvb2ws
Ci0gICAgImludCI6IG1ha2VJbnQsCi0gICAgInVpbnQiOiBtYWtlVWludCwKLSAgICAiZmxvYXQi
OiBtYWtlRmxvYXQKLX07Ci0KLWNvbnN0IGFycmF5VHlwZUxlbmd0aHMgPSB7Ci0gICAgImZsb2F0
NCI6IDQsCi0gICAgImZsb2F0NHg0IjogMTYKLX07Ci0KLWNvbnN0IGFycmF5RnVuY3MgPSB7Ci0g
ICAgImZsb2F0NCI6IGNhbGxGbG9hdDRGdW5jdGlvbiwKLSAgICAiZmxvYXQ0eDQiOiBjYWxsRmxv
YXQ0eDRGdW5jdGlvbiwKLX07Ci0KLWNvbnN0IGFycmF5QXJnTWFrZXJzID0gewotICAgICJmbG9h
dDQiOiBtYWtlRmxvYXQ0LAotICAgICJmbG9hdDR4NCI6IG1ha2VGbG9hdDR4NAotfTsKLQotY29u
c3QgZmxvYXQ0eDRleHBlY3RlZCA9IFswLCA0LCA4LCAxMiwgMSwgNSwgOSwgMTMsIDIsIDYsIDEw
LCAxNCwgMywgNywgMTEsIDE1XTsKLWNvbnN0IGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQgPSBbMCwg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV07Ci1jb25z
dCBmbG9hdDRleHBlY3RlZCA9IFswLCAxLCAyLCAzXTsKLQotbGV0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5saXRlcmFscyA9ICgpID0+IHsKLSAgICBjaGVja0Jvb2xzKCJSZXR1cm4g
YSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4iLCAicmV0dXJuIHRydWU7Iik7Ci0gICAgY2hlY2tBcnJh
eXMoImZsb2F0NCIsICJyZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOyIsIFtdLCBmbG9hdDRleHBl
Y3RlZCk7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycygicmV0dXJuIDQyOyIsIFtdLCA0Mik7Ci19
OwotCi13aGxzbFRlc3RzLnNpbmdsZUFyZ3VtZW50ID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMo
IlVwbG9hZCBhbmQgcmV0dXJuIGEgYm9vbCB2YWx1ZS4iLCAicmV0dXJuIGluMDsiLCBbdHJ1ZV0p
OwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCAicmV0dXJuIGluMDsiLCBbZmxvYXQ0ZXhwZWN0
ZWRdLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycygicmV0dXJuIGlu
MDsiLCBbNDJdLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLm1hbnlBcmd1bWVudHMgPSAoKSA9PiB7
Ci0gICAgY2hlY2tCb29scygiVXBsb2FkIG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBhIGNh
bGN1bGF0ZWQgcmVzdWx0LiIsCi0gICAgICAgICJyZXR1cm4gaW4wICYgaW4xICYgaW4yICYgaW4z
ICYgaW40ICYgaW41ICYgaW42ICYgaW43OyIsCi0gICAgICAgIFt0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXSk7Ci0KLSAgICBsZXQgYm9keSA9ICJyZXR1cm4g
ZmxvYXQ0KGluMC54LCBpbjEueSwgaW4yLnosIGluMy53KTsiCi0gICAgbGV0IGFyZ3MgPSBbXTsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAgICAgYXJncy5wdXNoKGZsb2F0
NGV4cGVjdGVkKTsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9keSwgYXJncywgZmxvYXQ0
ZXhwZWN0ZWQpOwotCi0gICAgYm9keSA9IGByZXR1cm4gaW4wICsgaW4xICsgaW4yICsgaW4zICsg
aW40ICsgaW41ICsgaW42ICsgaW43O2A7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycyhib2R5LCBb
MCwgMSwgMiwgMywgNCwgNSwgNiwgN10sIDI4KTsKLX07Ci0KLXdobHNsVGVzdHMuYnVmZmVyc1dp
dGhPbmVWYWx1ZSA9ICgpID0+IHsKLSAgICBjb25zdCBib2R5ID0gYHJldHVybiBpbjBbMF07YAot
ICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCBib2R5LCBbW2Zsb2F0NGV4cGVjdGVkXV0sIGZsb2F0
NGV4cGVjdGVkKTsKLSAgICBjaGVja051bWVyaWNTY2FsYXJzKGJvZHksIFtbNDJdXSwgNDIpOwot
fTsKLQotd2hsc2xUZXN0cy5tdWx0aXBsZUJ1ZmZlckFyZ3VtZW50cyA9ICgpID0+IHsKLSAgICBs
ZXQgYm9keSA9IGAKLSAgICBmbG9hdCB4ID0gaW4wWzBdLnggKyBpbjBbMV0ueCArIGluMFsyXS54
ICsgaW4xLnggKyBpbjJbMF0ueDsKLSAgICBmbG9hdCB5ID0gaW4wWzBdLnkgKyBpbjBbMV0ueSAr
IGluMFsyXS55ICsgaW4xLnkgKyBpbjJbMF0ueTsKLSAgICBmbG9hdCB6ID0gaW4wWzBdLnogKyBp
bjBbMV0ueiArIGluMFsyXS56ICsgaW4xLnogKyBpbjJbMF0uejsKLSAgICBmbG9hdCB3ID0gaW4w
WzBdLncgKyBpbjBbMV0udyArIGluMFsyXS53ICsgaW4xLncgKyBpbjJbMF0udzsKLQotICAgIHJl
dHVybiBmbG9hdDQoeCwgeSwgeiwgdyk7YDsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9k
eSwgW1tmbG9hdDRleHBlY3RlZCwgZmxvYXQ0ZXhwZWN0ZWQsIGZsb2F0NGV4cGVjdGVkXSwgZmxv
YXQ0ZXhwZWN0ZWQsIFtmbG9hdDRleHBlY3RlZF1dLCBbMCwgNSwgMTAsIDE1XSk7Ci0KLSAgICBi
b2R5ID0gYHJldHVybiBpbjBbMF0gKyBpbjBbMV0gKyBpbjBbMl0gKyBpbjEgKyBpbjJbMF07YDsK
LSAgICBjaGVja051bWVyaWNTY2FsYXJzKGJvZHksIFtbMCwgMSwgMl0sIDMsIFs0XV0sIDEwKTsK
LX07Ci0KLXdobHNsVGVzdHMubXVsdGlwbGVBcmd1bWVudFR5cGVzID0gKCkgPT4gewotICAgIGNv
bnN0IHNyYyA9IGBmbG9hdCB0ZXN0KGludCBpLCB1aW50IGMsIGZsb2F0NCBmNCwgZGV2aWNlIHVp
bnRbXSB1LCBkZXZpY2UgZmxvYXRbXSBmcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmbG9hdChp
KSArIGZsb2F0KGMpICsgZjQueCArIGY0LnkgKyBmNC56ICsgZjQudyArIGZsb2F0KHVbMF0pICsg
ZnNbMF0gKyBmc1sxXTsKLSAgICB9YDsKLSAgICBjb25zdCBpID0gbWFrZUludCgxKTsKLSAgICBj
b25zdCBjID0gbWFrZVVpbnQoMik7Ci0gICAgY29uc3QgZjQgPSBtYWtlRmxvYXQ0KFs0LCA1LCA2
LCA3XSk7Ci0gICAgY29uc3QgdSA9IG1ha2VVaW50KFszXSk7Ci0gICAgY29uc3QgZnMgPSBtYWtl
RmxvYXQoWzgsIDldKTsKLSAgICB3ZWJHUFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBjYWxsRmxvYXRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgW2ksIGMsIGY0LCB1LCBmc10pLnRo
ZW4ocmVzdWx0ID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3VsdCwg
NDUsIGVwc2lsb24sICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9
KTsKLSAgICB9LCAiVXBsb2FkIGFuZCBjYWxjdWxhdGUgYSByZXN1bHQgZnJvbSB2YXJpZWQgYXJn
dW1lbnQgdHlwZXMuIik7Ci19OwotCi13aGxzbFRlc3RzLmJ1ZmZlclN0b3JlcyA9ICgpID0+IHsK
LSAgICBsZXQgc3JjID0gYHZvaWQgdGVzdChkZXZpY2UgZmxvYXQ0W10gb3V0KSB7Ci0gICAgICAg
IG91dFswXSA9IGZsb2F0NCgwLCAxLCAyLCAzKTsKLSAgICB9YDsKLSAgICBjb25zdCBmbG9hdDRP
dXQgPSBtYWtlRmxvYXQ0KFtbMCwgMCwgMCwgMF1dKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNy
YywgInRlc3QiLCBmbG9hdDRPdXQpOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewot
ICAgICAgICByZXR1cm4gZmxvYXQ0T3V0LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZl
ciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5
QnVmZmVyKTsKLSAgICAgICAgICAgIGZvciAobGV0IGk7IGkgPCA0OyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHRbaV0sIGksICJUZXN0IHN0b3JlZCBl
eHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sICJT
dG9yZSBpbnRvIGEgZmxvYXQ0W10uIik7Ci0KLSAgICBzcmMgPSBgdm9pZCB0ZXN0KGRldmljZSBp
bnRbXSBpbiwgZGV2aWNlIGludFtdIG91dCkgewotICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCA1OyBpID0gaSArIDEpCi0gICAgICAgICAgICBvdXRbaV0gPSBpbltpXTsKLSAgICB9YDsKLSAg
ICBjb25zdCBhcnJheSA9IFswLCAxLCAyLCAzLCA0XTsKLSAgICBjb25zdCBpbnB1dCA9IG1ha2VJ
bnQoYXJyYXkpOwotICAgIGNvbnN0IG91dHB1dCA9IG1ha2VJbnQoWzAsIDAsIDAsIDAsIDBdKTsK
LSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0pOwotCi0g
ICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gb3V0cHV0LmdldEFy
cmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1
bHQgPSBuZXcgVWludDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhcnJheSwgcmVzdWx0LCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIp
OwotICAgICAgICB9KTsKLSAgICB9LCAiVXBsb2FkIGEgaW50W10gYW5kIHN0b3JlIGludG8gYSBp
bnRbXS4iKTsKLX07Ci0KLXdobHNsVGVzdHMuZmxvYXQ0eDR0ZXN0cyA9ICgpID0+IHsKLSAgICBj
b25zdCBzcmMgPSBgdm9pZCB0ZXN0KGRldmljZSBmbG9hdDR4NFtdIGluLCBkZXZpY2UgZmxvYXQ0
eDRbXSBvdXQpIHsKLSAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKQot
ICAgICAgICAgICAgb3V0W2ldID0gaW5baV07Ci0gICAgfWA7Ci0gICAgY29uc3QgaW5wdXQgPSBt
YWtlRmxvYXQ0eDQoW2Zsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0
ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWRdKTsKLSAgICBjb25zdCBvdXRwdXQgPSBtYWtlRmxv
YXQ0eDQobmV3IEFycmF5KDY0KS5maWxsKDApKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywg
InRlc3QiLCBbaW5wdXQsIG91dHB1dF0pOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4g
ewotICAgICAgICByZXR1cm4gb3V0cHV0LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZl
ciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5
QnVmZmVyKTsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxNjsgKytqKQotICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHRbaSAqIDE2ICsgal0sIGZsb2F0NHg0ZXhw
ZWN0ZWRbal0sIGVwc2lsb24sICJUZXN0IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sICJVcGxvYWQgYSBmbG9hdDR4NFtdIGFuZCBz
dG9yZSBpbnRvIGEgZmxvYXQ0eDRbXS4iKTsKLQotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIs
ICJyZXR1cm4gZmxvYXQ0eDQoZmxvYXQ0KDAsIDEsIDIsIDMpLCBmbG9hdDQoNCwgNSwgNiwgNyks
IGZsb2F0NCg4LCA5LCAxMCwgMTEpLCBmbG9hdDQoMTIsIDEzLCAxNCwgMTUpKTsiLCBbXSwgZmxv
YXQ0eDRDb2x1bW5FeHBlY3RlZCk7Ci0gICAgY2hlY2tBcnJheXMoImZsb2F0NHg0IiwgInJldHVy
biBpbjA7IiwgW2Zsb2F0NHg0ZXhwZWN0ZWRdLCBmbG9hdDR4NGV4cGVjdGVkKTsKLSAgICBsZXQg
bXVsdGlwbGU0eDRhcmdzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IGFyZyA9IG5ldyBBcnJheSgxNik7Ci0gICAgICAgIGFyZy5maWxsKDAp
OwotICAgICAgICBhcmdbaV0gPSBpOwotICAgICAgICBtdWx0aXBsZTR4NGFyZ3MucHVzaChhcmcp
OwotICAgIH0KLSAgICBjaGVja0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGluMCArIGluMSAr
IGluMiArIGluMyArIGluNCArIGluNSArIGluNiArIGluNyArIGluOCArIGluOSArIGluMTAgKyBp
bjExICsgaW4xMiArIGluMTMgKyBpbjE0ICsgaW4xNTsiLCBtdWx0aXBsZTR4NGFyZ3MsIGZsb2F0
NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4g
aW4wWzBdOyIsIFtbZmxvYXQ0eDRleHBlY3RlZF1dLCBmbG9hdDR4NGV4cGVjdGVkKTsKLX07Ci0K
LXdobHNsVGVzdHMuY2hlY2tGYWlsVGVzdHMgPSAoKSA9PiB7Ci0gICAgd2ViR1BVUHJvbWlzZVRl
c3QoKCkgPT4gewotICAgICAgICByZXR1cm4gY2hlY2tGYWlsKGBEb29ycyBhbmQgY29ybmVycywg
a2lkLiBUaGF0J3Mgd2hlcmUgdGhleSBnZXRjaGEuYCk7Ci0gICAgfSwgIkNvZGUgc2hvdWxkIG5v
dCBjb21waWxlLCBhbmQgbm8gZXJyb3IgaXMgcmVwb3J0ZWQuIik7Ci0KLSAgICB3ZWJHUFVQcm9t
aXNlVGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjaGVja0ZhaWwoIiIpLmNhdGNoKGUgPT4g
ewotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIEVycm9yLCAiQW4gZXhwZWN0
ZWQgRXJyb3Igd2FzIGNhdWdodC4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlN1Y2Nlc3NmdWxs
eSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwgaXMgYW4gZXJyb3IuIikKLX07Ci0KLXdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIHRyeSB7Ci0gICAg
ICAgIGF3YWl0IGhhcm5lc3MucmVxdWVzdERldmljZSgpOwotICAgICAgICBmb3IgKGNvbnN0IG5h
bWUgaW4gd2hsc2xUZXN0cykgewotICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8i
KSkKLSAgICAgICAgICAgICAgICB3aGxzbFRlc3RzW25hbWVdKCk7Ci0gICAgICAgIH0KLSAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAKLSAgICAgICAgdGhyb3cgZTsKLSAg
ICB9Ci19KTsKLQotLyogSGVscGVyIGZ1bmN0aW9ucyAqLwotCi1jb25zdCBjaGVja051bWVyaWNT
Y2FsYXJzID0gKGJvZHksIGFyZ1ZhbHVlcywgZXhwZWN0ZWQpID0+IHsKLSAgICBsZXQgZnVuY3Rp
b25zID0gW107Ci0gICAgbGV0IHNyYyA9ICIiOwotICAgIGZvciAobGV0IHR5cGUgb2YgbnVtZXJp
Y1NjYWxhclR5cGVzKSB7Ci0gICAgICAgIGxldCBuYW1lLCB2YWx1ZXM7Ci0gICAgICAgIFtzcmMs
IG5hbWUsIHZhbHVlc10gPSBhcHBlbmRTY2FsYXJGdW5jdGlvblRvU291cmNlKHNyYywgdHlwZSwg
Ym9keSwgYXJnVmFsdWVzKTsKLSAgICAgICAgZnVuY3Rpb25zLnB1c2goeyB0eXBlOiB0eXBlLCBu
YW1lOiBuYW1lLCBhcmdzOiB2YWx1ZXMsIGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKLSAgICB9Ci0K
LSAgICBmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0IGNhbGxGdW5j
ID0gbnVtZXJpY1NjYWxhckZ1bmNzW2YudHlwZV07Ci0gICAgICAgIHdlYkdQVVByb21pc2VUZXN0
KGFzeW5jICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsRnVuYyhzcmMsIGYubmFtZSwg
Zi5hcmdzKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMocmVzdWx0LCBmLmV4cGVjdGVkLCBlcHNpbG9uLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBgUmV0dXJuIGFuIGV4cGVj
dGVkICR7Zi50eXBlfSB2YWx1ZS5gKTsKLSAgICB9Ci19OwotCi1jb25zdCBjaGVja0Jvb2xzID0g
KG1zZyA9ICJSZXR1cm4gYW4gZXhwZWN0ZWQgYm9vbCB2YWx1ZS4iLCBib2R5LCBhcmdWYWx1ZXMg
PSBbXSwgZXhwZWN0ZWQgPSB0cnVlKSA9PiB7Ci0gICAgY29uc3QgW3NyYywgbmFtZSwgdmFsdWVz
XSA9IGFwcGVuZFNjYWxhckZ1bmN0aW9uVG9Tb3VyY2UoIiIsICJib29sIiwgYm9keSwgYXJnVmFs
dWVzKTsgCi0KLSAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBjYWxsQm9vbEZ1bmN0aW9uKHNyYywgbmFtZSwgdmFsdWVzKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9LCBlID0+IHsKLSAgICAgICAgICAgIGlm
ICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgICAg
ICB0aHJvdyBlOwotICAgICAgICB9KTsKLSAgICB9LCBtc2cpOwotfTsKLQotY29uc3QgY2hlY2tB
cnJheXMgPSAodHlwZSwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVjdGVkKSA9PiB7Ci0gICAg
bGV0IGlucHV0QXJncyA9IFtdOwotICAgIGxldCB2YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAvLyBTdXBwb3J0IGFy
cmF5cyBvZiBmbG9hdDQsIGluY2x1ZGluZyBvbmUgd2l0aCBhIHNpbmdsZSBmbG9hdDQuCi0gICAg
ICAgIGNvbnN0IHRvdGFsTGVuZ3RoID0gYXJnVmFsdWVzW2ldLmZsYXQoKS5sZW5ndGg7Ci0gICAg
ICAgIGNvbnN0IGlzQnVmZmVyID0gYXJnVmFsdWVzW2ldLmxlbmd0aCA9PT0gMSB8fCB0b3RhbExl
bmd0aCA+IGFycmF5VHlwZUxlbmd0aHNbdHlwZV07Ci0gICAgICAgIGlucHV0QXJncy5wdXNoKGAk
e2lzQnVmZmVyID8gImRldmljZSAiIDogIiJ9JHt0eXBlfSR7aXNCdWZmZXIgPyAiW10iIDogIiJ9
IGluJHtpfWApOwotICAgICAgICB2YWx1ZXMucHVzaChhcnJheUFyZ01ha2Vyc1t0eXBlXShhcmdW
YWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBjb25zdCBzcmMgPSBgJHt0eXBlfSAke3R5cGV9VGVz
dCgke2lucHV0QXJncy5qb2luKCIsICIpfSkgeyAke2JvZHl9IH0KLSAgICBgOwotCi0gICAgd2Vi
R1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICByZXR1cm4gYXJyYXlGdW5jc1t0
eXBlXShzcmMsIGAke3R5cGV9VGVzdGAsIHZhbHVlcykudGhlbihyZXN1bHQgPT4gewotICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheVR5cGVMZW5ndGhzW3R5cGVdOyArK2kpCi0g
ICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0W2ldLCBleHBlY3RlZFtp
XSwgZXBzaWxvbiwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgIH0p
OwotICAgIH0sIGBSZXR1cm4gYW4gZXhwZWN0ZWQgJHt0eXBlfSB2YWx1ZS5gKTsKLX0KLQotY29u
c3QgYXBwZW5kU2NhbGFyRnVuY3Rpb25Ub1NvdXJjZSA9IChzcmMsIHR5cGUsIGJvZHksIGFyZ1Zh
bHVlcykgPT4gewotICAgIGNvbnN0IG5hbWUgPSBgJHt0eXBlfVRlc3RgOwotCi0gICAgbGV0IGlu
cHV0QXJncyA9IFtdOwotICAgIGxldCB2YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBjb25zdCBpc0J1ZmZlciA9IEFy
cmF5LmlzQXJyYXkoYXJnVmFsdWVzW2ldKTsKLSAgICAgICAgaW5wdXRBcmdzLnB1c2goYCR7aXNC
dWZmZXIgPyAiZGV2aWNlICIgOiAiIn0ke3R5cGV9JHtpc0J1ZmZlciA/ICJbXSIgOiAiIn0gaW4k
e2l9YCk7Ci0gICAgICAgIHZhbHVlcy5wdXNoKHNjYWxhckFyZ01ha2Vyc1t0eXBlXShhcmdWYWx1
ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBzcmMgKz0gYCR7dHlwZX0gJHtuYW1lfSgke2lucHV0QXJn
cy5qb2luKCIsICIpfSkgeyAke2JvZHl9IH0KLSAgICBgOwotICAgIAotICAgIHJldHVybiBbc3Jj
LCBuYW1lLCB2YWx1ZXNdOwotfTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNp
b25zLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWFjYTM0ODAwMmVkNjNjNGFlMTUyMzkwMTcw
YzY1MjcyMWVhODY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10
aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoVGV4dHVyZTJEPGZs
b2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgZGV2aWNlIHVpbnRbXSB0aGVCdWZmZXIg
OiByZWdpc3Rlcih1MSkpIHsKLSAgICB1aW50IHdpZHRoOwotICAgIHVpbnQgaGVpZ2h0OwotICAg
IHVpbnQgbnVtYmVyT2ZMZXZlbHM7Ci0gICAgR2V0RGltZW5zaW9ucyh0aGVUZXh0dXJlLCAwLCAm
d2lkdGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7Ci0gICAgdGhlQnVmZmVyWzBdID0gd2lk
dGg7Ci0gICAgdGhlQnVmZmVyWzFdID0gaGVpZ2h0OwotICAgIHRoZUJ1ZmZlclsyXSA9IG51bWJl
ck9mTGV2ZWxzOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEfTsKLSAg
ICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwot
Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQgKiAzLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZTogVWludDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiAzfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7Ymlu
ZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfV07Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c1VpbnQz
MkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJl
c3VsdHNVaW50MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNVaW50MzJBcnJheVsx
XSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNVaW50MzJBcnJheVsyXSA9PSAxKQotICAgICAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJl
c3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJj
M2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTA4MjJjODUwNzlkNjM4YWYxMjY3MTk0MWRhZDE3ZDA4OGVjZDNkYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRp
b247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0
PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
TG9hZCh0aGVUZXh0dXJlLCBpbnQyKDAsIDApKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJh
Z21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1z
dHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3Iiwg
Y3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdi
YTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BV
Q29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAg
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0
dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRz
OiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJl
RGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURh
dGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDI1NTsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0
XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAxMjg7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
OF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMTI4OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTJdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAxMjg7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDEyODsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIs
IGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRl
eHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsKLSAgICBjb25z
dCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJl
Vmlld31dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcg
PSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHt0ZXh0dXJl
OiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBk
ZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJD
b3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNv
bG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVu
dHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxs
LCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNz
RGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsK
LSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVy
UGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwg
MSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1i
aWFzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLWJpYXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNl
N2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLWJpYXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0
ZDBhZGY1ZGQ3MzBlZDM1ZDA0YTJjMWFiZGE3NmU1NGIwYzE5Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBJbnRlcm1lZGlhdGUgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0MiB0ZXh0dXJlQ29vcmRpbmF0ZSA6IGF0dHJp
YnV0ZSgwKTsKLX0KLQotdmVydGV4IEludGVybWVkaWF0ZSB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1
dGUoMSkpIHsKLSAgICBJbnRlcm1lZGlhdGUgcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgIHJlc3VsdC50ZXh0dXJlQ29vcmRpbmF0ZSA9IHRleHR1cmVDb29yZGlu
YXRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMCksIFRleHR1cmUyRDxm
bG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJl
Z2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIFNhbXBsZUJpYXModGhlVGV4
dHVyZSwgdGhlU2FtcGxlciwgdGV4dHVyZUNvb3JkaW5hdGUsIDEpOwotfQotYDsKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0g
InRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRG
YWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAx
NX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0g
bnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0g
ICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQy
In07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogMiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4
dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0ICsgRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogMiAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0g
PSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxN10gPSAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThd
ID0gMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEwMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIwXSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzIxXSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMl0gPSAxMDA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyM10gPSAxMDA7Ci0gICAgdmVydGV4QnVm
ZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
Q09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVE
YXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0
dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMDsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzZdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTUKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTUKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzE3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMThdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNj
cmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVs
Q291bnQ6IDIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNB
TVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBk
ZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVy
ZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVy
RGVzY3JpcHRvciA9IHthZGRyZXNzTW9kZVU6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVY6ICJyZXBl
YXQiLCBhZGRyZXNzTW9kZVc6ICJyZXBlYXQiLCBtYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0
ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIo
c2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2Jp
bmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTog
c2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFW
aWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3Rl
eHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0
OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShi
dWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3Qg
YnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWlu
dDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcg
PSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9
IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29w
eUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHky
U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9
OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1
cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJz
dG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZl
cjBdLCBbMCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDRdKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNh
ZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzM2NmVmMDZmNWVlNjk4MTcyOTViZGUxZmMxOGYy
OGMwMzBiNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNh
bXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIFNhbXBsZUdyYWQodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwg
ZmxvYXQyKDEsIDApLCBmbG9hdDIoMCwgMSkpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChk
ZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAK
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlMF19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3Vw
TGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZl
VG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0
YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVm
ZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3
YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
cik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
M10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBV
aW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JD
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFC
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheSA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsy
XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbNV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9
IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbOV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAw
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzEyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0g
MDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzE3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9y
ID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6
IDIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQg
fCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2Uu
Y3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcg
PSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3Jp
cHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBj
b25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0
ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0
IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdz
OiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVy
ZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAy
fTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAg
IGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAg
Y29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1
cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1
ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICog
MSAqIDF9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwg
bWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZm
ZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBj
bGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2lu
UmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1
ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNh
bXBsZS1sZXZlbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1
cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwNGM3OGUxNTYxODcxODAzMzE3NGE4Y2JmODg0ZjU5ZDUzN2E4M2IyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1
NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoVGV4dHVy
ZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVy
IDogcmVnaXN0ZXIoczEpKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gU2FtcGxlTGV2ZWwo
dGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgMSk7Ci19Ci1gOwotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hh
ZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xv
Z3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtm
cm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMg
PSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1h
c2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3Rh
dGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBh
dHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07
Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzog
MCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwg
dmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVu
dFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRl
cywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0
OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4
QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIg
KyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZl
ckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
M10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzZdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMjU1OwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs5XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzEwXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9
IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1OwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxNF0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE2XSA9IDI1NTsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVsxOF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzE5XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
dGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAx
fSwgbWlwTGV2ZWxDb3VudDogMiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0
dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVH07Ci0gICAgY29uc3Qg
dGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNv
bnN0IHNhbXBsZXJEZXNjcmlwdG9yID0ge21hZ0ZpbHRlcjogImxpbmVhciIsIG1pbkZpbHRlcjog
ImxpbmVhciJ9OwotICAgIGNvbnN0IHNhbXBsZXIgPSBkZXZpY2UuY3JlYXRlU2FtcGxlcihzYW1w
bGVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBzYW1w
bGVyfV07Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3Jl
YXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5MVZpZXcg
PSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MVZpZXcgPSB7dGV4dHVy
ZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29weTFTaXplID0ge3dpZHRoOiAyLCBoZWlnaHQ6IDIs
IGRlcHRoOiAxfTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZl
ckNvcHkxVmlldywgdGV4dHVyZUNvcHkxVmlldywgY29weTFTaXplKTsKLSAgICBjb25zdCBidWZm
ZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0OiBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCByb3dQaXRjaDogVWludDhBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxLCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiAxICogMX07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHkyVmlldyA9IHt0
ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZlbDogMX07Ci0gICAgY29uc3QgY29weTJTaXplID0ge3dp
ZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxfTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkyVmlldywgdGV4dHVyZUNvcHkyVmlldywgY29weTJTaXpl
KTsKLQotICAgIGNvbnN0IGNsZWFyQ29sb3IgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0g
ICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZp
ZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3Jl
IiwgY2xlYXJDb2xvcn1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkODZhYjVk
NWI2MTY2ZmNkMGQyMjQxMTFmZjE0Y2Y5MzNlYzg3MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291
cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJl
IDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBTYW1wbGUodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxv
YXQyKDAuNSwgMC41KSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFn
ZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNv
bnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBs
ZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAg
Y29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
QyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRh
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVsyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVs1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzEwXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1
cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIGZv
cm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVU
ZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRl
VGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9
IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBz
YW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJl
Vmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRH
cm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5k
R3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBj
b3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3
LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0p
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdh
ZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXkuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDE1YjYxOTM3MTQ5ZmNmMjUzZDY1MmEzYzRlZDU4YzRiZWQ1NDcz
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12b2lkIGZpbGwodGhyZWFk
IGZsb2F0WzEwXVtdIGFycmF5LCBmbG9hdFsxMF0gdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBhcnJheVtpXSA9IHZh
bHVlOwotICAgIH0KLX0KLQotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFtdIGFycmF5LCBmbG9hdCB2
YWx1ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSA9IGkgKyAx
KSB7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1ib29sIGNvbnRhaW5z
KHRocmVhZCBmbG9hdFsxMF1bXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQg
aSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBmb3IgKHVpbnQg
aiA9IDA7IGogPCBhcnJheVtqXS5sZW5ndGg7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYg
KGFycmF5W2ldW2pdICE9IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBjb250YWlucyh0aHJl
YWQgZmxvYXRbXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRl
dmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rp
c3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdFsxMF1bNV0gYXJyYXk7Ci0gICAgaWYgKGFycmF5
Lmxlbmd0aCAhPSA1KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFjb250YWlucyhAYXJyYXks
IDApKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5s
ZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBmbG9hdFsxMF0gdmFsdWU7Ci0gICAgICAgIGZp
bGwoQHZhbHVlLCBmbG9hdChpKSk7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQot
Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsKLSAg
ICAgICAgZmxvYXRbMTBdIHZhbHVlID0gYXJyYXlbaV07Ci0gICAgICAgIGlmICghY29udGFpbnMo
QHZhbHVlLCBmbG9hdChpKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVm
ZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNp
emUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgSW50MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwg
R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAg
Y29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNC
dWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1
ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1
dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAg
Y29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5
bmMoKTsKLSAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRz
QXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAg
ICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjc4ZWI2MWE2YTM4MTYyNGZmMWQ5Mzk3ZDMx
ZDhlODk0ZTU3YzQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIHR5cGVNaXNtYXRjaFJldHVybgot
UEFTUyB0eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wKLVBBU1MgdHlwZU1pc21hdGNoQXNzaWdubWVu
dAotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1cm5QYXJhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3R5cGUtbWlzbWF0Y2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4
ZTE0ODFlNWVhMTA2ZTA0NGZjY2RkYThkZWZmOTQ0NThiYzkzMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlw
ZS1taXNtYXRjaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hSZXR1
cm4gPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IDEwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnR5cGVN
aXNtYXRjaFZhcmlhYmxlRGVjbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW50IHkgPSB4OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LX0KLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hBc3NpZ25tZW50ID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKHVp
bnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAg
ICAgICB5ID0geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
dHlwZU1pc21hdGNoUmV0dXJuUGFyYW0gPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyh1aW50IHgpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGAp
OwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLQotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzRhYjg5MTZkNzdjZWExOTJjZDgzNGY1Y2Jh
NzZhYjg1MDZiY2YyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBBU1MgdWludEJpdEFuZAotUEFTUyB1aW50
Qml0T3IKLVBBU1MgdWludEJpdFhvcgotUEFTUyB1aW50Qml0Tm90Ci1QQVNTIHVpbnRMU2hpZnQK
LVBBU1MgdWludFJTaGlmdAotUEFTUyB1aW50U2ltcGxlTWF0aAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdWludC1iaXR3aXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhiM2Q2YjBiNjJmOWIwOWEyNzM3OWRjODVlNWY1NGYzZDc4ZGRhYTguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3VpbnQtYml0d2lzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNz
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnVpbnRCaXRB
bmQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9v
KHVpbnQgYSwgdWludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAmIGI7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
VWludCg2NTUzNSksIG1ha2VVaW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwg
MzIpIC0gMSksIG1ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KDApLCBtYWtlVWludCg4NTczMildKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMudWlu
dEJpdE9yID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50
IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgfCBi
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0MildKSwgNjU1MzUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRoLnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2
NzI5NSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdo
bHNsVGVzdHMudWludEJpdFhvciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhIF4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50
KDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0g
NyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0K
LXdobHNsVGVzdHMudWludEJpdE5vdCA9IGFzeW5jICgpID0+IHsgCi0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIH5hOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlVWludCg2NTUzNSldKSwgNDI5NDkwMTc2MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwg
MzIpIC0gMSldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCldKSwgNDI5NDk2NzI5NSk7Ci19Ci0KLXdobHNs
VGVzdHMudWludExTaGlmdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhIDw8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3
KV0pLCAxMjgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMjYyMTQwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDMpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy51aW50
UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50
IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPj4g
YjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDApOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMTYzODMpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDEpLCBtYWtlVWludCg1KV0pLCAxMzQyMTc3MjcpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDAp
LCBtYWtlVWludCgzKV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBh
c3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkp
IHsgcmV0dXJuIHggKyB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOwot
Ci0gICAgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7
IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFr
ZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7Ci0KLSAgICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQg
eCwgdWludCB5KSB7IHJldHVybiB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUp
XSksIDM1KTsKLQotICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTYwMgotICAgIC8vIHByb2dyYW0gPSAidWludCBm
b28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLyB5OyB9IjsKLSAgICAvLyBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwg
bWFrZVVpbnQoMildKSwgMyk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVm
aW5lZC12YXJpYWJsZS0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91
c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2ZDkzNTYwZTEyZjg1ODc2ZmM2OGYzMmIzODFhNWE5Y2U0MzE3OWNlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogNDoyNTogQ2Fubm90IGZpbmQg
dGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2QzMDRhZTU0YTRkYWI3Mzk5M2YzZmIwOWIwN2EzYjExMGRhZjNhYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEp
XQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVn
aXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAg
ZmxvYXQ0IHZlYyA9IGZsb2F0NCh4LHgseCx4KTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RB
ZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNl
KCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0K
LQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJs
ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NzNjM2QwMDM5
ZTk4NWRiMmM1Zjc0YTIwMjBiZjhiZDU5OTk0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmlu
ZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wg
Y29tcGlsZSBlcnJvcjogNjo5OiBDYW5ub3QgZmluZCB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24u
Ci1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFy
aWFibGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlh
YmxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTAwNzM3YjJmY2U2MDYx
YzhiNThkODk3Mjg4NjJjMTUwNjkxNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFy
aWFibGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNl
ID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihk
ZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNW
X0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdCBmb287Ci0gICAgaWYgKGZvbykgewotICAg
ICAgICB4ID0geCArIDE7Ci0gICAgfQotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIo
KTsKLSAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLQot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0
eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotfQotCi13aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0p
OwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiOWIyZDAxZmRjNTdlM2QzZjQ5MGIxMTk5OTRm
ODAzNjcyM2YwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZhcmlhYmxlU2hhZG93aW5n
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dp
bmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YTBjYmE3ZDE3MGUxYWM0ZjE5ZjJl
MDc1NDM1NmQyMmU5MjQ0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMudmFyaWFibGVTaGFkb3dpbmcgPSBhc3luYyAoKSA9PgotewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IHk7Ci0gICAgICAgICAgICBpbnQgeCA9IDc7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaW50IHggPSA4OwotICAgICAgICAgICAgICAgIHkgPSB4OwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDgpOwotCi0gICAg
cHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dCB5OwotICAgICAgICAgICAgaW50IHggPSA3OwotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGludCB4ID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHkgPSB4OwotICAgICAg
ICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDcpOwotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ3NmU2NTE2ZmFhMWUyZmNkMWI1YTlmOTY3YjYxYzFmYWUzN2FjNmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDEyICswLDAgQEAKLQotUEFTUyB2ZWN0b3JMVAotUEFTUyB2ZWN0b3JMVDIKLVBBU1Mg
dmVjdG9yTFQzCi1QQVNTIHZlY3RvckxURQotUEFTUyB2ZWN0b3JMVEUyCi1QQVNTIHZlY3RvckxU
RTMKLVBBU1MgdmVjdG9yR1QKLVBBU1MgdmVjdG9yR1RFCi1QQVNTIHZlY3RvckdURTIKLVBBU1Mg
dmVjdG9yR1RFMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9y
LWNvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWJkNjkzY2NmNzc4MDU2M2FiYmY2
M2M0MDQ3ZjFhZDg2MWMxOTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+PT0uPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0g
MC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckxUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYg
PSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAg
ICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDwgdjIpOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxU
MiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGlu
dDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgLT0gMTA7Ci0KLSAgICAgICAgICAgIHJldHVybiAh
YW55KHYgPCB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdo
bHNsVGVzdHMudmVjdG9yTFQzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgaW50MiB2ID0gaW50MigxMCwgMjAp
OwotICAgICAgICAgICAgaW50MiB2MiA9IHY7Ci0gICAgICAgICAgICB2Mi55ICs9IDEwOwotCi0g
ICAgICAgICAgICBib29sMiByZXN1bHQgPSB2IDwgdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJl
c3VsdC54ICYmIHJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi13aGxzbFRlc3RzLnZlY3RvckxURSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxv
YXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAg
IHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFRFMiA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAg
ICAgZmxvYXQyIHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JM
VEUzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAg
ICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIueSAtPSAxLjA7Ci0KLSAgICAg
ICAgICAgIGJvb2wyIHJlc3VsdCA9IHYgPD0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnggJiYgIXJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLnZlY3RvckdUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIg
Kz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZs
b2F0MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1
cm4gIWFueSh2ID49IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsK
LQotd2hsc2xUZXN0cy52ZWN0b3JHVEUyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgaW50MiB2ID0gaW50Migx
MCwgMjApOwotICAgICAgICAgICAgaW50MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIHJldHVybiBh
bGwodiA+PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdo
bHNsVGVzdHMudmVjdG9yR1RFMyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIw
KTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2OwotICAgICAgICAgICAgdjIueSArPSAxMDsKLQot
ICAgICAgICAgICAgYm9vbDIgcmVzdWx0ID0gdiA+PSB2MjsKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQueCAmJiAhcmVzdWx0Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MDIwMDllZjAzMjBmMDI3
NWM0ZWZhYzRlNWJmM2Q5ODY0OGEwNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3Rv
cnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgdmVj
dG9yQ29uc3RydWN0b3IKLVBBU1MgdmVjdG9yQ29uc3RydWN0b3IyCi1QQVNTIHZlY3RvckNvbnN0
cnVjdG9yMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNv
bnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1
Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyZmM0ZWRhZWU4MjI5
Y2U0Y2QyZTQwY2ZlMGJhYjQzMDQ4ZDc4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVj
dG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT52ZWN0b3IgY3Rvci48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
MyB2ID0gZmxvYXQzKGZsb2F0MigxMC4wLCAxMS4wKSwgMTIuMCk7Ci0gICAgICAgICAgICByZXR1
cm4gdi54ID09IDEwLjAgJiYgdi55ID09IDExLjAgJiYgdi56ID09IDEyLjA7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0
b3IyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgZmxvYXQzIHYgPSBmbG9hdDMoMTAuMCwgZmxvYXQyKDExLjAs
IDEyLjApKTsKLSAgICAgICAgICAgIHJldHVybiB2LnggPT0gMTAuMCAmJiB2LnkgPT0gMTEuMCAm
JiB2LnogPT0gMTIuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1Y3RvcjMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMyB2ID0g
Ym9vbDModHJ1ZSwgYm9vbDIoZmFsc2UsIHRydWUpKTsKLSAgICAgICAgICAgIHJldHVybiB2Lngg
JiYgIXYueSAmJiB2Lno7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1h
ZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc5MDI3ODk5MzU3N2JkN2QxZjE1ZGQxMDdjNmZlYjZkZGY4YWRhYTguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgdmVjdG9yQWRkaXRpb24KLVBBU1Mg
dmVjdG9yU3VidHJhY3Rpb24KLVBBU1MgbWF0cml4QWRkaXRpb24KLVBBU1MgbWF0cml4U3VidHJh
Y3Rpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRy
aXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92
ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI1OGQ3NDI3Yzc2YjYxYTg1ZDE1OWU1MDZkMDQzMWU5ZmJiNTY4MDMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1j
b25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckFkZGl0aW9uID0gYXN5
bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBm
bG9hdDIgdSA9IHYgKyA3OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgKyA3OwotICAgICAgICAgICAgcmV0dXJu
IHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2
OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAg
ICAgICBmbG9hdDIgdSA9IDcgKyB2OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBm
bG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0
dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9ICt2
OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBb
XSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSks
IDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDMs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZl
Y3RvclN1YnRyYWN0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJu
IHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgLSA3
OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAg
ICAgICBmbG9hdDIgdSA9IDcgLSB2OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBm
bG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgLSB2OwotICAgICAgICAgICAg
cmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9
IC12OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBm
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAg
ICAgICAgICBmbG9hdDIgdSA9IC12OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImMiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJlIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEFkZGl0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAg
ICAgICAgIGZsb2F0MngyIG4gPSBtICsgNzsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAg
ICAgZmxvYXQyeDIgbiA9IG0gKyA3OwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAg
ICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0Mngy
IG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBm
bG9hdDJ4MiBuID0gNyArIG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9
IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0
MngyIG4gPSA3ICsgbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxv
YXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIg
biA9ICttOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4Mihm
bG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gK207
Ci0gICAgICAgICAgICByZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEi
LCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBb
XSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSks
IDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1
bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdHJpeFN1YnRyYWN0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZs
b2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0Mngy
IG4gPSBtIC0gNzsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQy
eDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9
IG0gLSA3OwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4Mihm
bG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyAt
IG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9h
dCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0
MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSA3IC0gbTsK
LSAgICAgICAgICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMs
IDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IC1tOwotICAgICAg
ICAgICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZs
b2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gLW07Ci0gICAgICAgICAgICBy
ZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC00LCBlcHNp
bG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAgImIiLCBbXSksIC0zLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDQsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAtMywgZXBzaWxvbik7Ci0g
ICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwg
ICJmIiwgW10pLCAtNCwgZXBzaWxvbik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zl
Y3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1zeW50YXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDY0
M2E0OGNkOTAyMGJmYTYyOGEwNzQyMTY0MzhhYjQ5YTYzNmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0
b3Itc3ludGF4LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIHZlY3RvclR5cGVTeW50YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZlY3Rvci1zeW50YXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3It
c3ludGF4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MWY1NmZlZTYwYjY5
ZDVkNDgzMDBkZmFhMGY1ZWRkNGViMzBjY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLnZlY3RvclR5cGVTeW50YXggPSBhc3luYyAoKSA9PgotewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dDIgeDsKLSAgICAgICAgICAgIHZlY3RvcjxpbnQsIDI+IHogPSBpbnQyKDMsIDQpOwotICAgICAg
ICAgICAgeCA9IHo7Ci0gICAgICAgICAgICByZXR1cm4geC55OwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IGZvbzMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQzIHg7Ci0gICAgICAgICAg
ICB2ZWN0b3I8aW50LCAzPiB6ID0gaW50MygzLCA0LCA1KTsKLSAgICAgICAgICAgIHggPSB6Owot
ICAgICAgICAgICAgcmV0dXJuIHguejsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmb280KCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50NCB4OwotICAgICAgICAgICAgdmVjdG9yPGludCw0
PiB6ID0gaW50NCgzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAg
cmV0dXJuIHgudzsKLSAgICAgICAgfWA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA2KTsK
LQotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIHR5cGVkZWYgaSA9IGludDsKLSAgICAgICAgaW50
IGZvbzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB2ZWN0
b3I8aSwgMj4geiA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAg
IHJldHVybiB4Lnk7Ci0gICAgICAgIH1gOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwotfQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzM4MjhjNzQxYzJlNWQzOTZkN2YxMTYwMTg2OTA0
NDFiYjNkMTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyB2b2lkVmFyaWFibGUK
LVBBU1Mgdm9pZFBhcmFtZXRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiYWY2MTk1MGZiZDM2OGEyODI3YzU1MGM4NWNmODRjNDVlNGM4MjAyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudm9pZFZhcmlhYmxlID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIHZvaWQgeDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudm9pZFBhcmFtZXRlciA9IGFzeW5jICgpID0+
Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZv
byh2b2lkIHgpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRl
MGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhODZhMmY0NWM5YWJmMTE2NmQ4YzUzMjllYTQwMGI4M2Q5OWRkNjI3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsK
LX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0gICAgd2hpbGUg
KGkgPCAxMCkgewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICAgICAgaSA9IGkgKyAxOwotICAg
IH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9
IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRl
eFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVy
In07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kg
PSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9u
dEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBb
e2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6
IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUg
PSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRl
ckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0
dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0g
e3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAu
bWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwot
Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3Jl
YXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0g
e2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJl
bmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBh
c3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0
ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZmYzNTcxOWNlODBkN2U0ODFhZDMwZTEw
MGIxOGEwNDM3OGFlOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVj
dCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZs
b2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmli
dXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0g
ICAgdWludCBpID0gMDsKLSAgICB3aGlsZSAoKHNoYWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkp
IHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGkgPSBpICsgMTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gMC4wOwotICAgIH0KLQotICAg
IHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9u
OiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMg
PSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhT
dGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0
ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291
bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRF
WCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9
IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4xOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBd
ID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmlu
ZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNj
cmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVs
dFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6
IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRl
eHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6
ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0
YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlw
dG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFsw
XSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1
ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3dobHNsLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdi
ZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNs
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIxOWJiMGEzODdjOThlMTcwYmE5Y2QzNThmYjRhNzZlYmE5MjNlZWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3dobHNsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFk
ZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0g
ICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0
IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9
OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJs
ZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0g
ICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJp
YnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0In07Ci0gICAg
Y29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsK
LSAgICBjb25zdCBpbnB1dDEgPSB7c3RyaWRlOiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUx
XX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MCwgaW5wdXQxXTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
MEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
M10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMURlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMURlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjEubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjFBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMUZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJh
eVsxXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsyXSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyMUZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMS51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyMCwgdmVydGV4QnVmZmVyMV0sIFswLCAwXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAg
Y29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmlj
ZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3Vt
ZW50LWxlbmd0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3
YjE4MTlmMGEyMTI1YTE4ZjlkYzkzNTEyOGNlMzA0YzlhOWMyMzAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dy
b25nLWFyZ3VtZW50LWxlbmd0aC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSAr
MCwwIEBACi0KLVBBU1MgYml0QW5kV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXROb3RXcm9u
Z0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGJpdE9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXRY
b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRlY1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1Mg
ZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBkb3RPcGVyYXRvclNldHRlcldyb25nQXJn
dW1lbnRMZW5ndGgKLVBBU1MgZG90T3BlcmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGdy
ZWF0ZXJFcXVhbFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZ3JlYXRlcldyb25nQXJndW1lbnRM
ZW5ndGgKLVBBU1MgaW5jV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBpbmRleE9wZXJhdG9yU2V0
dGVyV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBpbmRleE9wZXJhdG9yV3JvbmdBcmd1bWVudExl
bmd0aAotUEFTUyBsU2hpZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIG1pbnVzV3JvbmdBcmd1
bWVudExlbmd0aAotUEFTUyBtb2R1bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHBsdXNXcm9u
Z0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHJTaGlmdFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgdGlt
ZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTZkYTcxZTJmZmI1OGEzMzBmNzJkNjM4MjgxNGU0N2JmY2ZmZTY5NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNjQgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0
aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5iaXRBbmRXcm9uZ0Fy
Z3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0
b3ImKEZvbykgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAg
ICAgICAgIGludCBvcGVyYXRvciYoRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciYoRm9vLCBGb28sIEZvbykgeyBy
ZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5iaXROb3RX
cm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcn4oKSB7IHJldHVybiAzMjsgfQot
ICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yfihGb28s
IEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVz
dHMuYml0T3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3J8KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZv
byB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcnwoRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcnwoRm9vLCBG
b28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xU
ZXN0cy5iaXRYb3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oKSB7IHJl
dHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yXihGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yXihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQot
ICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmRlY1dyb25nQXJndW1lbnRMZW5n
dGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yLS0oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oRm9vLCBGb28pIHsgcmV0dXJu
IDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZGl2aWRlV3JvbmdB
cmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IvKCkgeyByZXR1cm4gMzI7IH0KLSAgICAg
ICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci8oRm9vKSB7IHJl
dHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvci8oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotd2hsc2xUZXN0cy5kb3RPcGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGgg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KCkgeyBy
ZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBv
cGVyYXRvci5mb289KEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KEZvbywgaW50LCBpbnQpIHsgcmV0dXJu
IDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZG90T3BlcmF0b3JX
cm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oKSB7IHJldHVybiA0Mjsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZv
byhGb28sIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hs
c2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I+PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I+PShGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PShGb28sIEZvbywgRm9v
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMu
Z3JlYXRlcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4oKSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9w
ZXJhdG9yPihGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIHRydWU7
IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5pbmNXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcisrKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcisrKEZvbywgRm9vKSB7IHJl
dHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmluZGV4T3Bl
cmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPSgpIHsg
cmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQpIHsgcmV0dXJuIDQy
OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQsIGludCkgeyByZXR1cm4gNDI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yW109KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
NDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5pbmRleE9wZXJhdG9y
V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSgpIHsgcmV0dXJuIDQyOyB9
Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAg
YCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAg
ICAgaW50IG9wZXJhdG9yW10oaW50LCBpbnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAg
YCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5sU2hpZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGludCBvcGVyYXRvcjw8KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZv
byB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw8KEZvbykgeyByZXR1cm4gNTM0OyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I8PChGb28s
IEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxz
bFRlc3RzLm1pbnVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItKCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvci0oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotd2hsc2xUZXN0cy5tb2R1bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBv
cGVyYXRvciUoKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yJShGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJShGb28sIEZvbywgRm9vKSB7
IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLnBsdXNX
cm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcisoKSB7IHJldHVybiAzMjsgfQot
ICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKyhGb28s
IEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxz
bFRlc3RzLnJTaGlmdFdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yPj4oKSB7
IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50
IG9wZXJhdG9yPj4oRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcj4+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2
OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMudGltZXNXcm9uZ0FyZ3Vt
ZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvciooKSB7IHJldHVybiAzMjsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKihGb28pIHsgcmV0dXJu
IDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yKihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ0OTFlNTMxNmM5ZjY2YThmY2VjOGU5MjEyYjYyNGVl
ZDczMDc4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgZGVjV3JvbmdUeXBlcwotUEFTUyBpbmNXcm9u
Z1R5cGVzCi1QQVNTIGdyZWF0ZXJUaGFuV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGdyZWF0ZXJFcXVh
bFdyb25nUmV0dXJuVHlwZQotUEFTUyBpbmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlwZQotUEFT
UyBzZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3Jv
bmctdHlwZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxYWIyY2ZiZTI0
NDQxMjdjMjE5OTU1M2Q1MDUyOTY5YWM3ZjY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuZGVjV3JvbmdUeXBlcyA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItLShmbG9h
dCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3Rz
LmluY1dyb25nVHlwZXMgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yKysoZmxvYXQpIHsgcmV0dXJuIDMyOyB9
Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5ncmVhdGVyVGhhbldyb25n
UmV0dXJuVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I+KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSAr
IGI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLmdyZWF0ZXJFcXVh
bFdyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I+PShpbnQgYSwgaW50IGIpIHsgcmV0
dXJuIGEgKyBiOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5pbmRl
eFNldHRlcldpdGhNaXNtYXRjaGVkVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBmbG9hdCBvcGVyYXRvcltdKGludCwgdWludCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQsIHVpbnQsIGludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLX0KLQotd2hsc2xUZXN0cy5zZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBhc3luYyAoKSA9
PgotewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZmxvYXQgb3BlcmF0
b3IuZm9vKGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb289KGludCwgaW50KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6
ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8t
aW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTNmNzk2MWVhZWZiMWZmYTJiOWQzNGY4ODUxZDQ0YTZjOWM4
MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0
ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApOwotfQotCi1zdHJ1Y3QgQmFyIHsKLSAgICBmbG9hdCB5OwotICAg
IGZsb2F0IHkxOwotICAgIGZsb2F0IHkyOwotICAgIGZsb2F0IHkzOwotICAgIGZsb2F0IHk0Owot
ICAgIGZsb2F0IHk1OwotICAgIGZsb2F0IHk2OwotICAgIGZsb2F0IHk3OwotICAgIGZsb2F0IHk4
OwotICAgIGZsb2F0IHk5OwotICAgIGZsb2F0IHkxMDsKLSAgICBmbG9hdCB5MTE7Ci0gICAgZmxv
YXQgeTEyOwotICAgIGZsb2F0IHkxMzsKLSAgICBmbG9hdCB5MTQ7Ci0gICAgZmxvYXQgeTE1Owot
ICAgIGZsb2F0IHkxNjsKLSAgICBmbG9hdCB5MTc7Ci0gICAgZmxvYXQgeTE4OwotICAgIGZsb2F0
IHkxOTsKLSAgICBmbG9hdCB5MjA7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgQmFyIGJhcjsKLQotICAgIHJlc3Vs
dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IGJhci55MjA7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9h
dDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJh
Z21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1z
dHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3Iiwg
Y3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdi
YTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BV
Q29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAg
ICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
LCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEs
IGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFth
dHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwg
YXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsK
LSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdl
LCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBj
b2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDog
MSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBk
ZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJh
eUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91
cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNv
bnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRp
bmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0
ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0
b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWlu
ID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAg
IGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmll
dygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVu
Y29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07
Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVy
ZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0
b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2ht
ZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29k
ZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29k
ZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVy
XSk7Ci19Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBz
dGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdC
bGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgz
YTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAzNmY4NDU0NGM5NTY0NDE1NzY0OGZj
ZmE0NmEyOTI3ZjcwNWM0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
c3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0g
ICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXRocmVhZCBmbG9hdCogcHRyKCkg
ewotICAgIGZsb2F0IGxvY2FsOwotICAgIHJldHVybiAmbG9jYWw7Ci19Ci0KLXZlcnRleCBWZXJ0
ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhy
ZWFkIGZsb2F0KiBwID0gcHRyKCk7Ci0gICAgKnAgPSAxLjA7Ci0gICAgZmxvYXQgdmFsdWUgPSAq
cHRyKCk7IC8vIGNhbGxpbmcgcHRyKCkgemVybyBpbml0aWFsaXplcy4KLQotICAgIHJlc3VsdC5w
b3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHZhbHVlOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNo
YWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmlj
ZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJh
Z21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50
U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAi
OwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxN
b2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
ckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5v
cm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9y
V3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29u
c3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zm
c2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3Jt
YXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmli
dXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJp
YnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlz
aWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JT
dGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5j
cmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZl
cnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsw
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAx
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
OV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNv
dXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZm
ZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAg
ICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHti
dWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5k
aW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczog
W2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNh
bnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0g
e2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNv
bnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsK
LQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAg
IGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3
LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIs
IGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBu
dWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMs
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwot
fQotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434514</attachid>
            <date>2021-07-29 04:01:02 -0700</date>
            <delta_ts>2021-07-29 13:25:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210729040058.patch</filename>
            <type>text/plain</type>
            <size>3895488</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi40NDY5MGI5Zjg0YTUyYzQ1
ZGY1NDI0YTkyZGY1ZTY2ZDA1MjYzZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGMwODU4ZTM4NWZlZDlmNWNhYmI1MjBlZmQzOTM4Y2U5MGRhODM0MzEuLmUyZGMy
YjA4NTcxMmMxNDFmMGNiMWVkNjgwMzk4YTM5MDRjMzVkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXVkaW9dIEFkZCB3ZWJtL29w
dXMgY29udGFpbmVyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NjRhNTIzNjAwY2U5N2MxZjZhMGUx
OWVlNWIxYTEwMjNiMzMzNGY3Li4yZjE3OTlkZjIwMzMzZTRkMmVmYTNhOGU3ZmVkYWM4YzhjOGQ1
OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDg5IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1
aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBz
aXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgx
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BV
T3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9m
TWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRl
eHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3Iu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVz
Y3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
K0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BV
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNz
RXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVs
dERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5j
dGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2Fs
RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxl
VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2Uu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0
Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0
YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2Fs
Y3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
QVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVw
bGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJp
ZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVM
aWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmlu
Z1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNj
b3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5k
YXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1l
cmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRp
bmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNj
b3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3Lmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmg6IFJl
bW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmlk
bDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdl
YkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
OjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJl
Y29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250
ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUlt
cGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BV
RGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnBpcGVsaW5lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZEFjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ry
b3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hhaW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJv
eVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3Vw
QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRC
dWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
cGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JG
aWx0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JTY29wZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvclNjb3Blcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVFeHRlbnQzRC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMaW1pdHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTG9hZE9wLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VU9iamVjdEJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVT3V0T2ZNZW1vcnlFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UGxhdGZvcm1UeXBlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVR
dWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBs
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxl
ckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3RvcmVPcC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25F
cnJvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZh
bGlkYXRpb25FcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJp
bmRHcm91cEFsbG9jYXRvck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZl
ck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxp
bmVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVRGV2aWNlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVl
TWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hh
ZGVyTW9kdWxlTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2Vk
KToKKwogMjAyMS0wNy0yOCAgQWRhIENoYW4gIDxhZGEuY2hhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYlhSXSBSZXF1aXJlIEdMX09FU19FR0xfaW1hZ2UgZXh0ZW5zaW9uIGZvciB4ckNvbXBh
dGlibGUgR0wgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjNmU1MDg1ZDI0ZDkyNWQ5NDU5NGU5YzNiNzBm
YjlkMTg5MWEwODVlLi4wYjA5MmUzOGI2ZGFiNTliN2YxYjdjMmViOWQ3ZDk4ZWZlMDljNDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdl
YkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZlYXR1cmVGbGFn
cy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQt
aW9zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3Q6Cisg
ICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC13YXRjaG9zLnBsaXN0OgorICAgICAgICAqIFNo
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpk
ZWZhdWx0V2ViR1BVRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5oOgorCiAyMDIxLTA3LTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1ZGlvXSBBZGQgd2VibS9vcHVzIGNvbnRh
aW5lciBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNWFkNzA0YTNiYWNi
NmFhNzliMmZlYTAzM2FkOTgxMDQ5MmRkN2U4NS4uNDRiNDJiNDU4MjU4ZTIwNzVjNWMxODM4NGQz
YzdmNzlhMTUyMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNv
bXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2Vi
UHJlZmVyZW5jZXMgd2ViR1BVRW5hYmxlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBzZXRXZWJHUFVFbmFibGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW06CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVF
bmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oOgorCiAyMDIxLTA3LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPUyBNb250ZXJleV0gUHJlc3NpbmcgRm4rRSBzaG91bGQgcHJlc2Vu
dCB0aGUgZW1vamkgcGlja2VyIHdoZW4gZWRpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KaW5kZXggMDhjMTAwNTE3NmE5
NjBlNzM0MWQ0MGE5ZDc1MjVmYTY1MWIzNGJmZi4uNTEzM2FjNzViZDhhOTVmNTc0MTk2YmM0MjA0
MmVkYTYxMzFhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9DYW52YXMuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCkBAIC0xMSwyNSArMTEsMjUgQEAKICAgICAgICAgfSwK
ICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAi
Y29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAo
ZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAi
Y29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAg
ICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJV
bmlxdWUgc2hhZGVyIHByb2dyYW0gaWRlbnRpZmllci4iCiAgICAgICAgIH0sCiAgICAgICAgIHsK
ICAgICAgICAgICAgICJpZCI6ICJDb250ZXh0VHlwZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciLAotICAgICAgICAgICAgImVudW0iOiBbImNhbnZhcy0yZCIsICJiaXRtYXByZW5kZXJl
ciIsICJ3ZWJnbCIsICJ3ZWJnbDIiLCAid2ViZ3B1Il0sCisgICAgICAgICAgICAiZW51bSI6IFsi
Y2FudmFzLTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiJdLAogICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIHJlbmRlcmluZyBjb250ZXh0IGJhY2tp
bmcgdGhlIGNhbnZhcyBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAg
ICAgImlkIjogIlByb2dyYW1UeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmlu
ZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJH
UFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciLAogICAgICAgICAgICAgImVudW0iOiBbImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAg
ICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlNoYWRlclR5cGUiLAotICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdM
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsi
Y29tcHV0ZSIsICJmcmFnbWVudCIsICJ2ZXJ0ZXgiXQogICAgICAgICB9LApAQCAtNDUsNyArNDUs
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlbXVsdGlwbGllZEFscGhhIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwg
V2ViR0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc2VydmVEcmF3aW5nQnVm
ZmVyIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJXZWJHTCwgV2ViR0wyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmFpbElmTWFq
b3JQZXJmb3JtYW5jZUNhdmVhdCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyLCBXZWJHUFUiIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInBvd2VyUHJlZmVyZW5jZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyIiB9CiAgICAgICAgICAg
ICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTY0LDE0ICs2NCwxMyBAQAogICAgICAgICB9
LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiU2hhZGVyUHJvZ3JhbSIsCi0gICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBXZWJHTC9XZWJHTDIgc2hh
ZGVyIHByb2dyYW0gb3IgV2ViR1BVIHNoYWRlciBwaXBlbGluZS4iLAotICAgICAgICAgICAgImNv
bmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRl
ZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9n
cmFtLiIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAm
JiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlk
IiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJv
Z3JhbVR5cGUiLCAiJHJlZiI6ICJQcm9ncmFtVHlwZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQifSAsCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhl
IHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVyIG1vZHVsZXMgYXJlIHRoZSBzYW1lIG9iamVjdCBm
b3IgYSByZW5kZXIgc2hhZGVyIHBpcGxlaW5lIGZvciBhIFdlYkdQVSBkZXZpY2UuIiB9CisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjYW52YXNJZCIsICIkcmVmIjogIkNhbnZhc0lkIn0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC0xNTEsNyArMTUwLDcgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdFNoYWRlclNvdXJjZSIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhlIHNvdXJjZSBvZiB0aGUgc2hhZGVyIG9m
IHRoZSBnaXZlbiB0eXBlIGZyb20gdGhlIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gaWQuIiwKLSAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVf
V0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAg
ICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9X
RUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9CkBAIC0xNjMs
NyArMTYyLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRlU2hhZGVy
IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3MgdGhlIHNo
YWRlciB3aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUu
IiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBF
TkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUp
IiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVO
QUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9LApA
QCAtMjQ2LDE0ICsyNDUsMTQgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAg
Im5hbWUiOiAicHJvZ3JhbUNyZWF0ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVm
aW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dF
QkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZp
bmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyUHJvZ3JhbSIsICIkcmVm
IjogIlNoYWRlclByb2dyYW0iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAg
ewogICAgICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbURlbGV0ZWQiLAotICAgICAgICAgICAgImNv
bmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRl
ZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNv
bmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3Jh
bUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9CiAgICAgICAgICAgICBdCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3Iu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0b3IucHkKaW5kZXggMjlhMmRlYTcyNGYwYmJlY2ZlYmE2ZGI5MjA2MDgxNzAxZTUxMGM1MS4u
YmM0ODUwYmZmNDMzYzc5Njg0YmUwOTQzNGEwZTBkYzE4MjlkNDcwMCAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvci5weQpAQCAtNTEsNyArNTEsNiBAQCBfRU5VTV9JREVOVElGSUVSX1JFTkFNRV9NQVAg
PSB7CiAgICAgJ2NhbnZhcy13ZWJnbDInOiAnQ2FudmFzV2ViR0wyJywgICMgUmVjb3JkaW5nLlR5
cGUuY2FudmFzLXdlYmdsMgogICAgICd3ZWJnbCc6ICdXZWJHTCcsICAjIENhbnZhcy5Db250ZXh0
VHlwZS53ZWJnbAogICAgICd3ZWJnbDInOiAnV2ViR0wyJywgICMgQ2FudmFzLkNvbnRleHRUeXBl
LndlYmdsMgotICAgICd3ZWJncHUnOiAnV2ViR1BVJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmdw
dQogICAgICdiaXRtYXByZW5kZXJlcic6ICdCaXRtYXBSZW5kZXJlcicsICAjIENhbnZhcy5Db250
ZXh0VHlwZS5iaXRtYXByZW5kZXJlcgogICAgICdtZWRpYXNvdXJjZSc6ICdNZWRpYVNvdXJjZScs
ICAjIENvbnNvbGUuQ2hhbm5lbFNvdXJjZS5tZWRpYXNvdXJjZQogICAgICd3ZWJydGMnOiAnV2Vi
UlRDJywgICMgQ29uc29sZS5DaGFubmVsU291cmNlLndlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbAppbmRleCAzNjBhMGNkODJjOGI2YzNjOGZhZTRmODRlMTUzYmNhMTU4YjM2NGMzLi45
ZjkyNjFkNzY3MjAxZDIyOWE3OWQ0M2UwZTE1ZWI4ZDYwZWRiYjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBl
cmltZW50YWwueWFtbApAQCAtMTIyNSwxOSArMTIyNSw2IEBAIFdlYkdMVXNpbmdNZXRhbDoKICAg
ICAgICJIQVZFKFdFQkdMX0NPTVBBVElCTEVfTUVUQUwpIjogdHJ1ZQogICAgICAgZGVmYXVsdDog
ZmFsc2UKIAotV2ViR1BVRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFt
ZTogIldlYkdQVSIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiV2ViR1BVIFNrZXRjaCBw
cm90b3R5cGUiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVu
YWJsZWQoKQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFdlYkdQ
VUVuYWJsZWQoKQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBXZWJNRm9y
bWF0UmVhZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICB3ZWJjb3JlQmluZGluZzogUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZDEwYWE0MmI4MGEy
YjU3NmM5ZThjNWM2OTlhNWQ4YjBlZTJkODAwOS4uZDg2ODhkY2ViNjA5YmUwZTcxMjNlNTQxOTlk
NjJmMzIxYzhhYzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC05MDIsMTAgKzkwMiw2
IEBACiAjZXJyb3IgIkVOQUJMRShXRUJHTDIpIHJlcXVpcmVzIEVOQUJMRShXRUJHTCkiCiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikgJiYgIUVOQUJMRShXRUJHUFUpCi0jZXJy
b3IgIkVOQUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpICYmICFFTkFCTEUo
T0ZGU0NSRUVOX0NBTlZBUykKICNlcnJvciAiRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09S
S0VSUykgcmVxdWlyZXMgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpIgogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYTllMTBhMjUxOWUwOTM5MzEzYmYyZjU4ZjRh
OTY5NmVlMjFmNTdhZC4uNTg1N2I3Njc1OGQ1ODkxMDFhMzgxYzllZWM3NWRmZjc1NjYxNzQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjYxLDEwICsyNjEsNiBAQAog
I2VuZGlmCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9HUFVfRFJJVkVSX1BSRVdBUk1J
TkcpICYmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE2MDAKLSNkZWZpbmUgRU5BQkxFX0dQVV9EUklWRVJfUFJFV0FSTUlORyAxCi0jZW5kaWYK
LQogI2lmICFkZWZpbmVkKEVOQUJMRV9IQVJEV0FSRV9KUEVHKSAmJiAhKFBMQVRGT1JNKE1BQykg
JiYgQ1BVKFg4Nl82NCkpCiAjZGVmaW5lIEVOQUJMRV9IQVJEV0FSRV9KUEVHIDEKICNlbmRpZgpA
QCAtNjE5LDE0ICs2MTUsNiBAQAogI2RlZmluZSBFTkFCTEVfV0VCR0wyIDEKICNlbmRpZgogCi0j
aWYgIWRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShNQUNDQVRBTFlT
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VC
R1BVIDEKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dITFNMX0NPTVBJTEVSKSAmJiBF
TkFCTEUoV0VCR1BVKQotI2RlZmluZSBFTkFCTEVfV0hMU0xfQ09NUElMRVIgMQotI2VuZGlmCi0K
ICNpZiAhZGVmaW5lZChFTkFCTEVfV0VCUFJPQ0VTU19OU1JVTkxPT1ApICYmIFBMQVRGT1JNKE1B
QykKICNkZWZpbmUgRU5BQkxFX1dFQlBST0NFU1NfTlNSVU5MT09QIDEKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBjNTRhMjgyNmY3MDFmNDJhZmY0MjYyZjNlZTViZDQ5YjRlN2VjNDVh
Li5jODg0ODAyYzJmNmQwZjE4MzhjNThlY2RiYjNlYTk4YTA3MGZhZDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtNjAzLDY5ICs2MDMsNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxF
UwogCiAgICAgTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwKIAotICAg
IE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCi0gICAgTW9kdWxl
cy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dl
YmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVy
RGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1
L0dQVUNvbG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9y
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZp
bHRlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9HUFVMb2FkT3AuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUv
R1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3Rh
Z2UuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKLSAgICBNb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlRm9ybWF0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhC
dWZmZXJEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVz
Y3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAotICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2VFcnJvclNjb3Blcy5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VF
dmVudEhhbmRsZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwK
LSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCi0g
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbAot
ICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAotICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5h
dmlnYXRvcitHUFUuaWRsCi0KICAgICBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwK
ICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiYzMxNjg3ZjYwZGJlMGE4
OTQ2NTQ1OGM1MzMzYmE0ZDM4YjExMGRjLi43NzM5NGI3NmM0NWY2YmFlOTdhMDUwMWFjMWJhMjBl
ZjEwNGJhMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTU1MSw3NCArNTUxLDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9HUFVDb2xvcldyaXRlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29s
b3JXcml0ZUJpdHMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJl
RnVuY3Rpb24uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5j
aWxTdGF0ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVF
cnJvckZpbHRlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNE
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVSW5wdXRTdGF0ZURlc2NyaXB0
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvR1BVU2hhZGVyU3RhZ2VCaXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVTdG9yZU9wLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlRm9ybWF0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVz
YWdlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJy
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVm
ZmVyRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRl
eElucHV0RGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L05hdmln
YXRvcitHUFUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1
aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvV2ViR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJp
bmRpbmcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwTGF5b3V0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFu
ZGxlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZUxheW91dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvTmF2aWdhdG9y
K1dlYlhSLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCA0MmJlNTczZjMzZDliMmI0Zjc0MTgwYjE0MTIwMGY5YjI3ZTFlYjkwLi5m
NDdlNTk5NDIwOWJhNzI2NTliODI1NDkxOTAyMzM1YTYyODViMjQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNTg3LDggKzU4Nyw2
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93
V2ViRGF0YWJhc2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNET01XaW5kb3dXZWJHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1dlYkdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RhdGFDdWUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RhdGFDdWUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhVHJhbnNmZXIuY3BwCkBAIC04NTMsNjgg
Kzg1MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Rm9ybURhdGFFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRm9ybURhdGFFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5n
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUJsZW5kRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVQmxlbmREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVz
Y3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUJ1ZmZlclVzYWdlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVCdWZmZXJVc2FnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNhbnZhc0NvbnRleHQuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNhbnZhc0NvbnRleHQuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZUJp
dHMuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VUNvbG9yV3JpdGVCaXRzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0aW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21wYXJlRnVuY3Rpb24uaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUVycm9yRmlsdGVyLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRlci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVudDNE
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVF
eHRlbnQzRC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUlucHV0U3RhdGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUxvYWRPcC5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVTG9hZE9wLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3JpZ2luM0Qu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU9y
aWdpbjNELmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVT3V0T2ZNZW1vcnlFcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2UuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRl
clN0YWdlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVU2hhZGVyU3RhZ2VCaXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0YWdlQml0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU3RvcmVPcC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU3RvcmVPcC5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0
dXJlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVRleHR1cmVGb3JtYXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVGb3JtYXQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlVXNhZ2UuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZhbGlkYXRpb25FcnJvci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVy
cm9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleElu
cHV0RGVzY3JpcHRvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dhaW5Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHYWluTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dhaW5PcHRpb25zLmNwcApAQCAtMTQxOSw4ICsxMzU1LDYgQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrQ3JlZGVu
dGlhbHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U05hdmlnYXRvcitDcmVkZW50aWFscy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitFTUUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitFTUUuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR1BVLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
K0dhbWVwYWQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU05hdmlnYXRvcitHYW1lcGFkLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dlb2xvY2F0aW9uLmNwcApAQCAtMTQ0OSw4ICsxMzgz
LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZp
Z2F0b3JDcmVkZW50aWFscy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTmF2aWdhdG9yQ3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JFTUUuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckVNRS5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdQVS5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
R1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2
aWdhdG9yR2FtZXBhZC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTmF2aWdhdG9yR2FtZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtMjQzNyw3MiAr
MjM2OSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUFkYXB0ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUFkYXB0ZXIuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXAuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRH
cm91cC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUJpbmRHcm91cEJpbmRpbmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZm
ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVUJ1ZmZlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJ1ZmZlckJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21t
YW5kQnVmZmVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2UuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURl
dmljZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUV2ZW50SGFuZGxl
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVRGV2aWNlRXZlbnRIYW5kbGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dC5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVRdWV1ZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVUXVldWUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdQVVNhbXBsZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNhbXBsZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGUuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZS5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTd2FwQ2hhaW4uY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVN3
YXBDaGFpbi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVVRleHR1cmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVRleHR1cmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRpb25F
dmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0yNjAxLDEy
ICsyNDY3LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV29ya2VyR2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJMb2NhdGlvbi5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24uaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0
b3IrR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXb3JrZXJOYXZpZ2F0b3IrR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3JHUFUuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5h
dmlnYXRvckdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dvcmtlclR5cGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dvcmtlclR5cGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXb3JrbGV0LmNwcApAQCAtMjcyOSw4ICsyNTkxLDYgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVHJhbnNmb3JtU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvVXNlckFnZW50U2NyaXB0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Vc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFN0eWxlU2hlZXRzLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRMaWJyYXJ5
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVy
bmFscy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJD
b3JlSlNCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDVjY2Fl
ZWEzMGQwZWI2MmMxYTAxNGU5NGM5MjMwZjMxMDMzYzMyMjguLmYxMzMyYzBkM2Y5MjNiYTBhMmE3
NTMzZGEzYjk4MDMzOTc0ODM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
NDYwLDY4ICs0NjAsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yK1dlYkRyaXZlci5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvR1BVU3RvcmVPcC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVGb3JtYXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQ
VVRleHR1cmVVc2FnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQ
VVZhbGlkYXRpb25FcnJvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUFkYXB0ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwQmluZGluZy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlckJpbmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQaXBlbGluZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnhyL05hdmln
YXRvcitXZWJYUi5pZGwgXApAQCAtMTg0NiwxOCArMTc4NCw2IEBAICQoR0VORVJBVEVfU0VUVElO
R1MpIDogJSA6ICQoV2ViQ29yZSkvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy8lLmVyYiAkKFdF
Ql9QUkVGCiAKICMgLS0tLS0tLS0KIAotIyBXSExTTCBTdGFuZGFyZCBMaWJyYXJ5Ci0KLWFsbCA6
IFdITFNMU3RhbmRhcmRMaWJyYXJ5LmggV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5j
cHAKLQotV0hMU0xTdGFuZGFyZExpYnJhcnkuaCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL3h4ZC5wbCAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRM
aWJyYXJ5LnR4dAotCWJhc2ggLWMgIiQoUEVSTCkgJDwgV0hMU0xTdGFuZGFyZExpYnJhcnkgPChn
emlwIC1jbiAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJy
YXJ5LnR4dCkgJEAiCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwIDogJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAucHkgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJk
TGlicmFyeS50eHQKLQkkKFBZVEhPTikgJDwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQgJEAKLQotIyAtLS0tLS0tLQotCiAjIENvbW1vbiBn
ZW5lcmF0b3IgdGhpbmdzCiAKIENPTU1PTl9CSU5ESU5HU19TQ1JJUFRTID0gXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWQwZWRmM2MyMjI5YzkxODI4
MzhhZmVhZjhiMmYwNmNhMzM0OGYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExh
eW91dEJpbmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFk
ZXJTdGFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQmluZGlu
Z1R5cGUgewotICAgIFVuaWZvcm1CdWZmZXIsCi0gICAgRHluYW1pY1VuaWZvcm1CdWZmZXIsCi0g
ICAgU2FtcGxlciwKLSAgICBTYW1wbGVkVGV4dHVyZSwKLSAgICBTdG9yYWdlQnVmZmVyLAotICAg
IER5bmFtaWNTdG9yYWdlQnVmZmVyLAotfTsKLQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dEJp
bmRpbmcgewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAgR1BVU2hhZGVyU3RhZ2VGbGFncyB2
aXNpYmlsaXR5OwotICAgIEdQVUJpbmRpbmdUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwZmYwN2I5NzEwNjJlNWFjYjE4ZmU4
MjI5ZDcyMzA3MTYyYjM2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRC
aW5kaW5nLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dTMyOwotdHlwZWRlZiB1MzIgR1BVU2hhZGVyU3RhZ2VGbGFnczsKLQotWwotICAgIEltcGxlbWVu
dGVkQXM9R1BVQmluZGluZ1R5cGUKLV0gZW51bSBHUFVCaW5kaW5nVHlwZSB7Ci0gICAgInVuaWZv
cm0tYnVmZmVyIiwKLSAgICAiZHluYW1pYy11bmlmb3JtLWJ1ZmZlciIsCi0gICAgInNhbXBsZXIi
LAotICAgICJzYW1wbGVkLXRleHR1cmUiLAotICAgICJzdG9yYWdlLWJ1ZmZlciIsCi0gICAgImR5
bmFtaWMtc3RvcmFnZS1idWZmZXIiCi0gICAgLy8gVE9ETyBvdGhlciBiaW5kaW5nIHR5cGVzCi19
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVCi1dIGRpY3Rpb25hcnkgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyB7Ci0gICAgcmVxdWly
ZWQgdTMyIGJpbmRpbmc7Ci0gICAgcmVxdWlyZWQgR1BVU2hhZGVyU3RhZ2VGbGFncyB2aXNpYmls
aXR5OwotICAgIHJlcXVpcmVkIEdQVUJpbmRpbmdUeXBlIHR5cGU7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjM2YmZlNGQ3MmVkOWE0
YjU0MDcwYTU3YTNiMDkzMzk1Y2RkNjJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
IHsKLSAgICBWZWN0b3I8R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZk
YTdiZDRjYmIxODkxODg4YzY1MjRjYzUzNDIzNzc5MGZkMDc3NS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
Ci1dIGRpY3Rpb25hcnkgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgcmVxdWly
ZWQgc2VxdWVuY2U8R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZz4gYmluZGluZ3M7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MjE5MjM3N2U2Yzg3MTg3ZmZmNmRi
N2RiYzUxNTc2YWZmN2FkNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9y
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVCbGVu
ZEZhY3RvcgotXSBlbnVtIEdQVUJsZW5kRmFjdG9yIHsKLSAgICAiemVybyIsCi0gICAgIm9uZSIs
Ci0gICAgInNyYy1jb2xvciIsCi0gICAgIm9uZS1taW51cy1zcmMtY29sb3IiLAotICAgICJzcmMt
YWxwaGEiLAotICAgICJvbmUtbWludXMtc3JjLWFscGhhIiwKLSAgICAiZHN0LWNvbG9yIiwKLSAg
ICAib25lLW1pbnVzLWRzdC1jb2xvciIsCi0gICAgImRzdC1hbHBoYSIsCi0gICAgIm9uZS1taW51
cy1kc3QtYWxwaGEiLAotICAgICJzcmMtYWxwaGEtc2F0dXJhdGVkIiwKLSAgICAiYmxlbmQtY29s
b3IiLAotICAgICJvbmUtbWludXMtYmxlbmQtY29sb3IiCi19OwotCi1bCi0gICAgSW1wbGVtZW50
ZWRBcz1HUFVCbGVuZE9wZXJhdGlvbgotXSBlbnVtIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICAi
YWRkIiwKLSAgICAic3VidHJhY3QiLAotICAgICJyZXZlcnNlLXN1YnRyYWN0IiwKLSAgICAibWlu
IiwKLSAgICAibWF4IgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0g
ICAgR1BVQmxlbmRGYWN0b3Igc3JjRmFjdG9yID0gIm9uZSI7Ci0gICAgR1BVQmxlbmRGYWN0b3Ig
ZHN0RmFjdG9yID0gInplcm8iOwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbiA9ICJh
ZGQiOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1
ZmZlckRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVm
ZmVyRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZGYyNGZl
N2YxMWNlODRjM2RjZmE0YzE5MTZhYTgwZTk0OGRmZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
QnVmZmVyRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgdTY0OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVUJ1ZmZlclVzYWdl
RmxhZ3M7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJl
ZCB1NjQgc2l6ZTsKLSAgICByZXF1aXJlZCBHUFVCdWZmZXJVc2FnZUZsYWdzIHVzYWdlOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzE0ZDUyYWYzOTRkZGNjNWJhZWMxNGI2
M2EzYzA1M2MyMzJmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUJ1ZmZlclVzYWdlIHsKLSAgICBjb25zdCB1
MzIgTk9ORSA9IDA7Ci0gICAgY29uc3QgdTMyIE1BUF9SRUFEID0gMTsKLSAgICBjb25zdCB1MzIg
TUFQX1dSSVRFID0gMjsKLSAgICBjb25zdCB1MzIgQ09QWV9TUkMgPSA0OwotICAgIGNvbnN0IHUz
MiBDT1BZX0RTVCA9IDg7Ci0gICAgY29uc3QgdTMyIElOREVYID0gMTY7Ci0gICAgY29uc3QgdTMy
IFZFUlRFWCA9IDMyOwotICAgIGNvbnN0IHUzMiBVTklGT1JNID0gNjQ7Ci0gICAgY29uc3QgdTMy
IFNUT1JBR0UgPSAxMjg7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVDYW52YXNDb250ZXh0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhi
MTUyOGZmYzNhOTUyNTg1MGE5NGQ2NWVkMjc5NGE0ZDgwNGMzNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVDYW52YXNDb250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRl
eHQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJM
b2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdQVUNhbnZh
c0NvbnRleHQpOwotCi1zdGQ6OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4gR1BVQ2FudmFz
Q29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKLXsKLSAgICBhdXRvIGNvbnRleHQg
PSBzdGQ6OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4obmV3IEdQVUNhbnZhc0NvbnRleHQo
Y2FudmFzKSk7Ci0gICAgY29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNv
bnRleHQ7Ci19Ci0KLUdQVUNhbnZhc0NvbnRleHQ6OkdQVUNhbnZhc0NvbnRleHQoQ2FudmFzQmFz
ZSYgY2FudmFzKQotICAgIDogR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykK
LXsKLX0KLQotUmVmPFdlYkdQVVN3YXBDaGFpbj4gR1BVQ2FudmFzQ29udGV4dDo6Y29uZmlndXJl
U3dhcENoYWluKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17
Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci5hc0dQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVT
d2FwQ2hhaW46OmNyZWF0ZShudWxscHRyKTsKLSAgICAKLSAgICBhdXRvIGdwdVN3YXBDaGFpbiA9
IEdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCpncHVEZXNjcmlwdG9yLCBjYW52YXNCYXNlKCkud2lk
dGgoKSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBncHVTd2Fw
Q2hhaW47Ci0gICAgYXV0byBuZXdTd2FwQ2hhaW4gPSBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShX
VEZNb3ZlKGdwdVN3YXBDaGFpbikpOwotICAgIAotICAgIC8vIFVwb24gc3VjY2VzcywgaW52YWxp
ZGF0ZSBhbmQgcmVwbGFjZSBhbnkgZXhpc3Rpbmcgc3dhcCBjaGFpbi4KLSAgICBpZiAoc3VjY2Vz
cykgewotICAgICAgICAvLyBGSVhNRTogVGVzdCB0aGF0IHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQg
d2l0aCBlcnJvciByZXBvcnRpbmcuCi0gICAgICAgIGlmIChtX3N3YXBDaGFpbikKLSAgICAgICAg
ICAgIG1fc3dhcENoYWluLT5kZXN0cm95KCk7Ci0KLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluKCp0aGlzLCBuZXdTd2FwQ2hhaW4uZ2V0KCkp
OwotCi0gICAgICAgIG1fc3dhcENoYWluID0gbmV3U3dhcENoYWluLmNvcHlSZWYoKTsKLQotICAg
ICAgICBub3RpZnlDYW52YXNDb250ZW50Q2hhbmdlZCgpOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gbmV3U3dhcENoYWluOwotfQotCi1QbGF0Zm9ybUxheWVyKiBHUFVDYW52YXNDb250ZXh0Ojpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hh
aW4tPnN3YXBDaGFpbigpKQotICAgICAgICByZXR1cm4gbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigp
LT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ2Fu
dmFzQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKG1f
c3dhcENoYWluICYmIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgbV9zd2FwQ2hh
aW4tPnN3YXBDaGFpbigpLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwotCi0gICAgbm90aWZ5Q2Fu
dmFzQ29udGVudENoYW5nZWQoKTsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpCi17Ci0gICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0
cnVlOwotfQotCi12b2lkIEdQVUNhbnZhc0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkKLXsKLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICBpZiAobV9pc0Rp
c3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFp
bigpKSB7Ci0gICAgICAgIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKS0+cHJlc2VudCgpOwotICAg
ICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZhbHNlOwotICAgIH0KLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWIwZmU3YjBkMDhjZTkzYzdlY2E4Njk0YTAwZDE2MzJlMTNkMGM5
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0j
aW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4u
aCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKLSAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEdQVUNhbnZhc0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R1BVQ2FudmFzQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmKTsK
LQotICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsgfQotCi0gICAgV2ViR1BVU3dhcENo
YWluKiBzd2FwQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotICAg
IFJlZjxXZWJHUFVTd2FwQ2hhaW4+IGNvbmZpZ3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yJik7Ci0KLXByaXZhdGU6Ci0gICAgR1BVQ2FudmFzQ29udGV4dChDYW52
YXNCYXNlJik7Ci0KLSAgICAvLyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQKLSAgICBi
b29sIGlzV2ViR1BVKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KCkgZmluYWw7Ci0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygp
IGZpbmFsOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR1BVQ2FudmFzQ29udGV4dCI7
IH0KLSAgICAvLyBGSVhNRTogU3R1YnMuCi0gICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9Ci0KLSAg
ICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBhaW50IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8V2Vi
R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsKLX07Ci0KLX0gLy8gbgFhbWVzcGFjZSBXZWJDb3Jl
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3Jl
OjpHUFVDYW52YXNDb250ZXh0LCBpc1dlYkdQVSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0Nv
bnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4
dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YTI0MTYxMWQwMGQ2YjE2ZGM1
M2ZiNzdlNjBiMjZmYmI5MzJlMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4
dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVVRl
eHR1cmVVc2FnZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvcgotXSBkaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgewotICAgIHJl
cXVpcmVkIFdlYkdQVURldmljZSBkZXZpY2U7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1h
dCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7IC8vIEZJWE1FOiBkZWZh
dWx0IGlzIEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVC4KLX07Ci0KLVsKLSAgICBB
Y3RpdmVET01PYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENhbnZhc0Jhc2UsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUNhbnZhc0NvbnRleHQgewotICAgIC8v
IGJhY2stcmVmZXJlbmNlIHRvIHRoZSBjYW52YXMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRN
TENhbnZhc0VsZW1lbnQgY2FudmFzOwotCi0gICAgLy8gQ2FsbGluZyBjb25maWd1cmVTd2FwQ2hh
aW4gYSBzZWNvbmQgdGltZSBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXMgb25lLAotICAgIC8vIGFu
ZCBhbGwgb2YgdGhlIHRleHR1cmVzIGl04oCZcyBwcm9kdWNlZC4KLSAgICBXZWJHUFVTd2FwQ2hh
aW4gY29uZmlndXJlU3dhcENoYWluKFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgZGVzY3JpcHRv
cik7Ci0KLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0LgotICAgIC8vIFByb21pc2U8R1BVVGV4
dHVyZUZvcm1hdD4gZ2V0U3dhcENoYWluUHJlZmVycmVkRm9ybWF0KEdQVURldmljZSBkZXZpY2Up
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI4OTVmNWYyMjNhMzkxZTRkMzE3ZWQyOWVhZDBhZjQ3
MjZmYWRjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUNvbG9yIHsKLSAgICByZXF1aXJlZCBmbG9hdCByOwot
ICAgIHJlcXVpcmVkIGZsb2F0IGc7Ci0gICAgcmVxdWlyZWQgZmxvYXQgYjsKLSAgICByZXF1aXJl
ZCBmbG9hdCBhOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTFhMDMwOTVmNjJlN2RkYzgyOGYyNzFhNjhmODM1NGM0MTI4NjUxNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVUNvbG9yV3JpdGVGbGFnczsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJl
Rm9ybWF0IGZvcm1hdDsKLQotICAgIHJlcXVpcmVkIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJs
ZW5kOwotICAgIHJlcXVpcmVkIEdQVUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQ
VUNvbG9yV3JpdGVGbGFncyB3cml0ZU1hc2s7IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4ZGM1ODgxYTAxNzk3YjUxMDE0ODM4ZTVlMGM3ZjFk
Yjk2MmRlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2Vk
PVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVQ29sb3JXcml0ZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUg
PSAwOwotICAgIGNvbnN0IHUzMiBSRUQgPSAxOwotICAgIGNvbnN0IHUzMiBHUkVFTiA9IDI7Ci0g
ICAgY29uc3QgdTMyIEJMVUUgPSA0OwotICAgIGNvbnN0IHUzMiBBTFBIQSA9IDg7Ci0gICAgY29u
c3QgdTMyIEFMTCA9IDE1OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MGZmYjRmMWRmMmRkYmU5MzQxYWNjM2ZkMTFmNWEyNzBhYzRlNDAxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBl
bnVtIEdQVUNvbXBhcmVGdW5jdGlvbiB7Ci0gICAgIm5ldmVyIiwKLSAgICAibGVzcyIsCi0gICAg
ImVxdWFsIiwKLSAgICAibGVzcy1lcXVhbCIsCi0gICAgImdyZWF0ZXIiLAotICAgICJub3QtZXF1
YWwiLAotICAgICJncmVhdGVyLWVxdWFsIiwKLSAgICAiYWx3YXlzIgotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM5MmZi
MGQzODkzNjFhZTI2NmVjZWU5NGQwNGQwYmZkMGY2YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbGVh
biBkZXB0aFdyaXRlRW5hYmxlZCA9IGZhbHNlOwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0
aENvbXBhcmUgPSAiYWx3YXlzIjsKLQotLyogTm90IFlldCBJbXBsZW1lbnRlZAotICAgIEdQVVN0
ZW5jaWxTdGF0ZUZhY2VEZXNjcmlwdG9yIHN0ZW5jaWxGcm9udDsKLSAgICBHUFVTdGVuY2lsU3Rh
dGVGYWNlRGVzY3JpcHRvciBzdGVuY2lsQmFjazsKLQotICAgIHUzMiBzdGVuY2lsUmVhZE1hc2s7
Ci0gICAgdTMyIHN0ZW5jaWxXcml0ZU1hc2s7Ci0qLwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWI4ZjQ5YTYxYzI3OWU5MDI2NDg0YzZlZjkwNjQ1ZWFkNWIxYWJhMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBlbnVtIEdQVUVycm9yRmlsdGVyIHsKLSAgICAibm9uZSIsCi0gICAgIm91dC1vZi1tZW1vcnki
LAotICAgICJ2YWxpZGF0aW9uIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUV4dGVudDNELmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDExOTc2OTcz
NjA3MTU2NjQ1ZWFmMDMzNWI4MmUwODgyMTdiYWMyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVF
eHRlbnQzRC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIEdQVUludGVnZXJDb29yZGluYXRlOwotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BV
RXh0ZW50M0QgewotICAgIHJlcXVpcmVkIEdQVUludGVnZXJDb29yZGluYXRlIHdpZHRoOwotICAg
IHJlcXVpcmVkIEdQVUludGVnZXJDb29yZGluYXRlIGhlaWdodDsKLSAgICByZXF1aXJlZCBHUFVJ
bnRlZ2VyQ29vcmRpbmF0ZSBkZXB0aDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVTG9hZE9wLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MyZDRmYTI4
MmZjNjk2MDI3ZTljZmE1ZjM1YTQ2NzJhNzkzYTczYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVM
b2FkT3AuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVMb2FkT3AgewotICAg
ICJjbGVhciIsCi0gICAgImxvYWQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVU9yaWdpbjNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMmI3YjM2ZGRj
YTNhYWM1Y2IzNTBlMDA0MDhhMjc0MTZkMjY1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3Jp
Z2luM0QuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RydWN0IEdQVU9yaWdpbjNEIHsKLSAgICB1bnNpZ25lZCB4IHsgMCB9OwotICAgIHVuc2lnbmVk
IHkgeyAwIH07Ci0gICAgdW5zaWduZWQgeiB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDI3NzE5YzAyMjRkMzM3YjFhMTY2MGI4ZDA2MDgxMTI3YjM5NWJjZWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVT3JpZ2luM0QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5z
aWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVPcmlnaW4zRCB7Ci0gICAgdTMyIHgg
PSAwOwotICAgIHUzMiB5ID0gMDsKLSAgICB1MzIgeiA9IDA7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ODBhZTAyZGExZmM1YjA0MDE3NGVhNzJmOTIzODc1
NmNmMWFkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVU91dE9mTWVtb3J5RXJyb3IgewotICAgIGNv
bnN0cnVjdG9yKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFlYTAwZDYxYWJmOGE1MDRhNDAxOTk0YTdjYmRhMTEyYmQzOGU5N2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVQb3dlclByZWZlcmVuY2UKLV0gZW51
bSBHUFVQb3dlclByZWZlcmVuY2UgewotICAgICJsb3ctcG93ZXIiLAotICAgICJoaWdoLXBlcmZv
cm1hbmNlIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyB7Ci0g
ICAgR1BVUG93ZXJQcmVmZXJlbmNlPyBwb3dlclByZWZlcmVuY2U7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTMxMzY4NDk5ZmNlMmY0YmNjODE5MDlkNzNh
ZDgxMGM1YzNlMTY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1b
Ci0gICAgSW1wbGVtZW50ZWRBcz1HUFVBZGRyZXNzTW9kZQotXSBlbnVtIEdQVUFkZHJlc3NNb2Rl
IHsKLSAgICAiY2xhbXAtdG8tZWRnZSIsCi0gICAgInJlcGVhdCIsCi0gICAgIm1pcnJvci1yZXBl
YXQiCi19OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVGaWx0ZXJNb2RlCi1dIGVudW0gR1BV
RmlsdGVyTW9kZSB7Ci0gICAgIm5lYXJlc3QiLAotICAgICJsaW5lYXIiCi19OwotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rp
b25hcnkgR1BVU2FtcGxlckRlc2NyaXB0b3IgewotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NN
b2RlVSA9ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVWID0g
ImNsYW1wVG9FZGdlIjsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVcgPSAiY2xhbXBU
b0VkZ2UiOwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIEdQ
VUZpbHRlck1vZGUgbWluRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIEdQVUZpbHRlck1vZGUgbWlw
bWFwRmlsdGVyID0gIm5lYXJlc3QiOwotICAgIGZsb2F0IGxvZE1pbkNsYW1wID0gMDsKLSAgICBm
bG9hdCBsb2RNYXhDbGFtcCA9IDB4ZmZmZmZmZmY7IC8vIFRPRE86IFdoYXQgc2hvdWxkIHRoaXMg
YmU/IFdhcyBOdW1iZXIuTUFYX1ZBTFVFLgotICAgIHUzMiBtYXhBbmlzb3Ryb3B5ID0gMTsKLSAg
ICBHUFVDb21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1bmN0aW9uID0gIm5ldmVyIjsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1YWQ0N2VmZGQ4MGU0Yzk1MjYxZTVkMjllYWMxYTNhYjg5
ODI0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdXNpbmcgR1BVU2hhZGVyU3RhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBH
UFVTaGFkZXJTdGFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNoYWRlclN0YWdlPiB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBGbGFncyA6IEdQVVNoYWRlclN0YWdlRmxhZ3MgewotICAgICAgICBOb25l
ID0gMCwKLSAgICAgICAgVmVydGV4ID0gMSA8PCAwLAotICAgICAgICBGcmFnbWVudCA9IDEgPDwg
MSwKLSAgICAgICAgQ29tcHV0ZSA9IDEgPDwgMiwKLSAgICB9OwotfTsKLQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYzMxYzIzOTVlM2FiNjJkYTVhMzVhMjMwODU3N2M1ODg3Yzc0YzYyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwot
XSBpbnRlcmZhY2UgR1BVU2hhZGVyU3RhZ2UgewotICAgIGNvbnN0IHUzMiBOT05FID0gMDsKLSAg
ICBjb25zdCB1MzIgVkVSVEVYID0gMTsKLSAgICBjb25zdCB1MzIgRlJBR01FTlQgPSAyOwotICAg
IGNvbnN0IHUzMiBDT01QVVRFID0gNDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVN0b3JlT3AuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzEyYjk1
MmU4NzQ4MDBjZTY2YTlkNzk3ODhmMDQ1NDUyYWEyYjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVN0b3JlT3AuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVTdG9yZU9wIHsK
LSAgICAic3RvcmUiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZmEwYzNjMjQ4YmQ4ZmFjMWJjMTU2OGQ3ZDYxMmJhMzY5NGZlZWYzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10
eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVSW50ZWdlckNvb3JkaW5hdGU7
Ci10eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVU2l6ZTMyOwotdHlwZWRl
ZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVVRleHR1cmVVc2FnZUZsYWdzOwotCi1b
Ci0gICAgSW1wbGVtZW50ZWRBcz1HUFVUZXh0dXJlRGltZW5zaW9uCi1dIGVudW0gR1BVVGV4dHVy
ZURpbWVuc2lvbiB7Ci0gICAgIjFkIiwKLSAgICAiMmQiLAotICAgICIzZCIKLX07Ci0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGlj
dGlvbmFyeSBHUFVUZXh0dXJlRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgR1BVRXh0ZW50M0Qg
c2l6ZTsKLSAgICBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBtaXBMZXZlbENvdW50ID0gMTsKLSAgICBH
UFVTaXplMzIgc2FtcGxlQ291bnQgPSAxOwotICAgIEdQVVRleHR1cmVEaW1lbnNpb24gZGltZW5z
aW9uID0gIjJkIjsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICBy
ZXF1aXJlZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjOWExZjc3NmU0MTc3NTJkMDhiMjhhZDdlZThkNzRlZDJkNTIyMzdk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVUZXh0dXJlRm9ybWF0IHsK
LSAgICAicmdiYTh1bm9ybSIsCi0gICAgInJnYmE4dWludCIsCi0gICAgImJncmE4dW5vcm0iLAot
ICAgICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiLAotICAgICJiZ3JhOHVub3JtLXNyZ2IiLAotICAg
ICJyZ2JhMTZmbG9hdCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZVVzYWdlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FjYzM4
ZjdkNjVlOTU1ZTlkNmI3YjkxMzJhZmViYTFjNTIzYjZkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlVXNhZ2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVj
a0NvbnN0YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVUZXh0
dXJlVXNhZ2UgewotICAgIGNvbnN0IHUzMiBDT1BZX1NSQyA9IDE7Ci0gICAgY29uc3QgdTMyIENP
UFlfRFNUID0gMjsKLSAgICBjb25zdCB1MzIgU0FNUExFRCA9IDQ7Ci0gICAgY29uc3QgdTMyIFNU
T1JBR0UgPSA4OwotICAgIGNvbnN0IHUzMiBPVVRQVVRfQVRUQUNITUVOVCA9IDE2OwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRF
cnJvckV2ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY5ZDFiYTNhZTQ3
NzI5N2ZkZDgzYjdiYWEyMmQxNjM3OGM4OTllMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQpOwotCi1SZWY8R1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQ+IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwotfQotCi1SZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQ+IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgR1BVRXJyb3ImJiBlcnJvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudCh0eXBlLCBXVEZNb3ZlKGVycm9yKSkpOwotfQotCi1HUFVVbmNhcHR1
cmVkRXJyb3JFdmVudDo6R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi0gICAg
OiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQotICAgICwgbV9lcnJvcihpbml0
aWFsaXplci5lcnJvcikKLXsKLX0KLQotR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEdQVUVycm9yJiYgZXJyb3Ip
Ci0gICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAg
ICwgbV9lcnJvcihXVEZNb3ZlKGVycm9yKSkKLXsKLX0KLQotRXZlbnRJbnRlcmZhY2UgR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnRJbnRlcmZhY2VUeXBlOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZWVlOTVkYWRlZjViYWIzYThiZTZlYzJlZTQzM2Y3
YzZmM2YyMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkdQ
VUVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKLSAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLXB1Ymxp
YzoKLSAgICBzdHJ1Y3QgSW5pdDogRXZlbnRJbml0IHsKLSAgICAgICAgR1BVRXJyb3IgZXJyb3I7
Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pOwotICAgIHN0YXRpYyBSZWY8R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiwgR1BVRXJyb3ImJik7Ci0KLSAgICBjb25zdCBHUFVFcnJvciBlcnJvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYp
OwotCi0gICAgLy8gRXZlbnQKLSAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOwotCi0gICAgR1BVRXJyb3IgbV9lcnJvcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjY2Q4MTVjYmQxNWZiYWNmMmVmMWMxOTg0
MGZmNDBkMWZkY2VhMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZl
bnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgKEdQVU91dE9mTWVtb3J5RXJy
b3Igb3IgR1BVVmFsaWRhdGlvbkVycm9yKSBHUFVFcnJvcjsKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgcmVxdWlyZWQgR1BVRXJy
b3IgZXJyb3I7Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudCA6IEV2ZW50IHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlw
ZSwgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnRJbml0IGdwdVVuY2FwdHVyZWRFcnJvckV2ZW50SW5p
dERpY3QpOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEdQVUVycm9yIGVycm9yOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3Iu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWM1YjE1NmZiNzI4YzYzMGZkNzNj
ZWQ2NzIxYTM1YTk5OTY2NDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJv
ci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVWYWxpZGF0aW9uRXJyb3Ig
ewotICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBtZXNzYWdlKTsKLQotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDNkMjZjNTMwZTJmNjMzYzBkMjdiYzEx
MDM2YzUwMzllYTM2NWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBsZW1l
bnRlZEFzPUdQVVZlcnRleEZvcm1hdAotXSBlbnVtIEdQVVZlcnRleEZvcm1hdCB7Ci0gICAgImZs
b2F0IiwKLSAgICAiZmxvYXQyIiwKLSAgICAiZmxvYXQzIiwKLSAgICAiZmxvYXQ0IgotfTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHU2NCBvZmZz
ZXQgPSAwOwotICAgIHJlcXVpcmVkIEdQVVZlcnRleEZvcm1hdCBmb3JtYXQ7Ci0gICAgcmVxdWly
ZWQgdTMyIHNoYWRlckxvY2F0aW9uOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZTA4ZjY1ODZkZDg5NTJjMTc3MDc2Y2ZmOTI1YmNkNDEz
MTU2OGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVSW5w
dXRTdGVwTW9kZQotXSBlbnVtIEdQVUlucHV0U3RlcE1vZGUgewotICAgICJ2ZXJ0ZXgiLAotICAg
ICJpbnN0YW5jZSIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
IHsKLSAgICByZXF1aXJlZCB1NjQgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1v
ZGUgPSAidmVydGV4IjsKLSAgICBzZXF1ZW5jZTxHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
PiBhdHRyaWJ1dGVTZXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNmOTdiMTBlZTQxYTgxMWZjM2QyOTI5MzAyZTQyNzc1ZjBlYTczZjYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgSW1wbGVt
ZW50ZWRBcz1HUFVJbmRleEZvcm1hdAotXSBlbnVtIEdQVUluZGV4Rm9ybWF0IHsKLSAgICAidWlu
dDE2IiwKLSAgICAidWludDMyIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVZlcnRleElucHV0RGVz
Y3JpcHRvciB7Ci0gICAgR1BVSW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQgPSAidWludDMyIjsKLSAg
ICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yPz4gdmVydGV4QnVm
ZmVyczsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZp
Z2F0b3IrR1BVLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitH
UFUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjBmOGYxNzU2OTQ5NDA1YjQ5
NGYyNDI3ODE3NDI2OTEwOTNmNDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI25hdmlnYXRvci1ncHUKLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50
ZWRCeT1OYXZpZ2F0b3JHUFUKLV0gcGFydGlhbCBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKLSAgICBb
U2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkzZmMwN2JiNjU4ZmQ2MTlhZmYzZDI0OTM4YzYwZDhlMWQ1Y2Y4NTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
TmF2aWdhdG9yR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTmF2aWdh
dG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTmF2
aWdhdG9yR1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCi17Ci0g
ICAgTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4o
U3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkp
OwotICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7Ci0gICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVu
dDsKLX0KLQotY29uc3QgY2hhciogTmF2aWdhdG9yR1BVOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0g
ICAgcmV0dXJuICJOYXZpZ2F0b3JHUFUiOwotfQotCi1jb25zdCBXZWJHUFUqIE5hdmlnYXRvckdQ
VTo6Z3B1KE5hdmlnYXRvciYgbmF2aWdhdG9yKQotewotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLndlYkdQVUVuYWJs
ZWQpOwotICAgIHJldHVybiBOYXZpZ2F0b3JHUFU6OmZyb20oJm5hdmlnYXRvciktPmdwdSgpOwot
fQotCi1jb25zdCBXZWJHUFUqIE5hdmlnYXRvckdQVTo6Z3B1KCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fZ3B1KQotICAgICAgICBtX2dwdSA9IFdlYkdQVTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1f
Z3B1LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1OGQwODQ2Y2Q2NzI5ZjQ4ZWU5NWU3
NzIzYjlmZGI5MWY0OGI3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5hdmlnYXRvcjsKLWNsYXNzIFdlYkdQVTsKLQotY2xh
c3MgTmF2aWdhdG9yR1BVIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFdl
YkdQVSogZ3B1KE5hdmlnYXRvciYpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBOYXZpZ2F0b3JH
UFUqIGZyb20oTmF2aWdhdG9yKik7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7Ci0gICAgCi0gICAgY29uc3QgV2ViR1BVKiBncHUoKSBjb25zdDsKLQotICAgIG11dGFi
bGUgUmVmUHRyPFdlYkdQVT4gbV9ncHU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjQ2M2Y5ZTBhMTZkZWVhZTE1MGJlNTE3MmQxMmIxYjcyN2M0OTI5Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJy
YXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rp
b25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUg
IldITFNMQmxvY2suaCIKLSNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCi0jaW5jbHVk
ZSAiV0hMU0xCcmVhay5oIgotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5j
bHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTENvbnRpbnVlLmgiCi0jaW5jbHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRp
b25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xF
eHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGYWxsdGhyb3VnaC5oIgotI2luY2x1ZGUgIldI
TFNMRmxvYXRMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0
ZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExT
TEluZGV4RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNp
bmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTG9naWNh
bEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1
YWxpZmllci5oIgotI2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgot
I2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJs
ZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJX
SExTTFJldHVybi5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJX
SExTTFN0YXRlbWVudExpc3QuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN3
aXRjaENhc2UuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUg
IldITFNMVGVybmFyeUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0jaW5j
bHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFkZHJlc3NFc2NhcGVNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxM2IyOTZkOGQzM2Q1YmY2YTk0OTZiYjBjMzExNjc3ZGEyOWM5ZTFlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgQWRkcmVzc0VzY2FwZU1v
ZGUgOiB1aW50OF90IHsKLSAgICBFc2NhcGVzLCAvLyBDb25zZXJ2YXRpdmVseSwgdGhpcyBhZGRy
ZXNzLW9mIG9wZXJhdGlvbiBtaWdodCBlc2NhcGUuCi0gICAgRG9lc05vdEVzY2FwZSAvLyBUaGlz
IGFkZHJlc3Mtb2Ygb3BlcmF0aW9uIGRlZmluaXRlbHkgZG9lcyBub3QgZXNjYXBlLgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NT
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRk
cmVzc1NwYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODY2NjhiNjY3ZTg0
NjVjNzg5ODlhMDAwNmI2YTBmNmQwZDIxOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQWRkcmVzc1NwYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgQWRkcmVzc1NwYWNlIDogdWludDhf
dCB7Ci0gICAgQ29uc3RhbnQsCi0gICAgRGV2aWNlLAotICAgIFRocmVhZGdyb3VwLAotICAgIFRo
cmVhZAotfTsKLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IHRvU3RyaW5nKEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UpCi17Ci0gICAgc3dpdGNoIChhZGRyZXNzU3BhY2UpIHsKLSAgICBjYXNl
IEFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ6Ci0gICAgICAgIHJldHVybiAiY29uc3RhbnQiOwotICAg
IGNhc2UgQWRkcmVzc1NwYWNlOjpEZXZpY2U6Ci0gICAgICAgIHJldHVybiAiZGV2aWNlIjsKLSAg
ICBjYXNlIEFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFk
Z3JvdXAiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2UgPT0gQWRk
cmVzc1NwYWNlOjpUaHJlYWQpOwotICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0gICAgfQotfQot
Ci1zdHJ1Y3QgTGVmdFZhbHVlIHsKLSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwotfTsK
LQotc3RydWN0IEFic3RyYWN0TGVmdFZhbHVlIHsKLX07Ci0KLXN0cnVjdCBSaWdodFZhbHVlIHsK
LX07Ci0KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgotY2xhc3MgVHlwZUFu
bm90YXRpb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5
cGVBbm5vdGF0aW9uKCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICA6IG1fZW1wdHkodHJ1
ZSkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihMZWZ0VmFsdWUg
dikKLSAgICAgICAgOiBtX2lubmVyKHYpCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0
aW9uKEFic3RyYWN0TGVmdFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAg
ICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihSaWdodFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5l
cih2KQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlQW5ub3RhdGlvbihjb25zdCBUeXBlQW5ub3Rh
dGlvbiYpID0gZGVmYXVsdDsKLSAgICBUeXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIG90
aGVyKSA9IGRlZmF1bHQ7Ci0KLSAgICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFR5
cGVBbm5vdGF0aW9uJikgPSBkZWZhdWx0OwotICAgIFR5cGVBbm5vdGF0aW9uJiBvcGVyYXRvcj0o
VHlwZUFubm90YXRpb24mJiBvdGhlcikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpvcHRpb25hbDxB
ZGRyZXNzU3BhY2U+IGxlZnRBZGRyZXNzU3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2VtcHR5KTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZh
bHVlPihtX2lubmVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxMZWZ0VmFsdWU+KG1f
aW5uZXIpLmFkZHJlc3NTcGFjZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICBib29sIGlzUmlnaHRWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
IW1fZW1wdHkpOwotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSaWdodFZh
bHVlPihtX2lubmVyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4g
YXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0
KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJpYW50PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0VmFs
dWUsIFJpZ2h0VmFsdWU+Jj4oKSkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwot
ICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzQWJzdHJhY3RMZWZ0VmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KCFtX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QWJzdHJh
Y3RMZWZ0VmFsdWU+KG1faW5uZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYW50PExl
ZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICBib29sIG1fZW1wdHkgeyBmYWxzZSB9OwotI2VuZGlmCi19OwotCi19
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZl
cmVuY2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBcnJheVJlZmVyZW5jZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMy
NzYwYTE0NWZmOTY2NjgyOWJlNjg5Zjk2NzFmYjMwOWJhYzZmMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIGZpbmFsIDogcHVi
bGljIFJlZmVyZW5jZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgdXNpbmcgQmFzZSA9
IFJlZmVyZW5jZVR5cGU7Ci0KLSAgICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1l
bnRUeXBlKQotICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShl
bGVtZW50VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxBcnJheVJlZmVyZW5jZVR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24g
bG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxl
bWVudFR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVJlZmVy
ZW5jZVR5cGUobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsK
LSAgICB9Ci0KLSAgICB+QXJyYXlSZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy0+QmFzZTo6aGFz
aCgpIF4gU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2goImFycmF5Iik7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVz
c1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwotICAgIH0K
LQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICJbXSIpOwotICAgIH0KLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9UWVBFKEFycmF5UmVmZXJlbmNlVHlwZSwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSkKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQzZTViZmNiMzAxZDMxZjk3NmEyZTgwNTQwZjIxYmI4OTQ0Y2M0
MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVk
VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBBcnJheVR5cGUgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5cGUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFycmF5VHlwZSk7Ci0gICAgQXJyYXlUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVu
bmFtZWRUeXBlPiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgICAgIDog
VW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6OkFycmF5KQotICAgICAgICAsIG1fZWxlbWVudFR5
cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCi0gICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVt
ZW50cykKLSAgICB7Ci0gICAgfQotcHVibGljOgotCi0gICAgc3RhdGljIFJlZjxBcnJheVR5cGU+
IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5
cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXJyYXlUeXBlKGxvY2F0aW9uLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgbnVtRWxlbWVu
dHMpKTsKLSAgICB9Ci0KLSAgICB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgY29uc3Qg
VW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAg
VW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgdW5zaWdu
ZWQgbnVtRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUVsZW1lbnRzOyB9Ci0KLSAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OkludEhhc2g8
dW5zaWduZWQ+OjpoYXNoKG1fbnVtRWxlbWVudHMpIF4gbV9lbGVtZW50VHlwZS0+aGFzaCgpOwot
ICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcnJheVR5cGUmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRzKCkgPT0gb3RoZXIubnVtRWxlbWVu
dHMoKSAmJiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0eXBlKCkudG9T
dHJpbmcoKSwgJ1snLCBudW1FbGVtZW50cygpLCAnXScpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBSZWY8VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7Ci0gICAgdW5zaWduZWQgbV9udW1FbGVt
ZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKEFycmF5VHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBF
KEFycmF5VHlwZSwgaXNBcnJheVR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZDk5OGI1MjVmYzZmM2E4NTQ0NWQ3ZGJlNDNjZWY2NjNkZTI3N2E1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgQXNzaWdubWVudEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpBc3NpZ25tZW50KQotICAgICAgICAsIG1f
bGVmdChXVEZNb3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0g
ICAgewotI2lmIENQVShBRERSRVNTMzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZCk7Ci0j
ZW5kaWYKLSAgICB9Ci0KLSAgICB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0K
LSAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihjb25zdCBBc3NpZ25tZW50RXhwcmVzc2lvbiYpID0g
ZGVsZXRlOwotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uJiYp
ID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0K
LSAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLSAgICBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gdGFrZVJpZ2h0KCkgeyByZXR1cm4gV1RGTW92ZShtX3JpZ2h0KTsgfQot
Ci1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7Ci0gICAgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IG1fcmlnaHQ7Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICBjaGFyIG1f
cGFkWzFdOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShBc3NpZ25tZW50RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEFzc2lnbm1lbnRFeHByZXNzaW9uLCBpc0Fzc2ln
bm1lbnRFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
YXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNTU2MjVjOGZkYzQxODFlYjRjZDRlOTZmNWU2ZjExY2E0ZTMxZmM3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRp
b24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAg
IDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
fkJhc2VGdW5jdGlvbkF0dHJpYnV0ZSgpID0gZGVmYXVsdDsKLQotICAgIEJhc2VGdW5jdGlvbkF0
dHJpYnV0ZShjb25zdCBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKLSAgICBCYXNl
RnVuY3Rpb25BdHRyaWJ1dGUoQmFzZUZ1bmN0aW9uQXR0cmlidXRlJiYpID0gZGVmYXVsdDsKLQot
cHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCYXNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJhc2VTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDk4
OGE2MGZmZjVhNjg0ZDdiMTM3ZDM1Y2M3MzlhZmQyMDQ3NmViLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVu
dHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBJbnRyaW5zaWNzOwotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotY2xhc3MgVW5uYW1l
ZFR5cGU7Ci0KLWNsYXNzIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgQmFzZVNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAg
ICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+QmFzZVNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAgQmFzZVNlbWFudGljKGNvbnN0
IEJhc2VTZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIEJhc2VTZW1hbnRpYyhCYXNlU2VtYW50aWMm
JikgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3Qg
VW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QgPSAwOwotCi0gICAgZW51bSBj
bGFzcyBTaGFkZXJJdGVtRGlyZWN0aW9uIDogdWludDhfdCB7Ci0gICAgICAgIElucHV0LAotICAg
ICAgICBPdXRwdXQKLSAgICB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFk
ZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
RW50cnlQb2ludFR5cGU+JikgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlv
biBtX2NvZGVMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZDkyNGJhNzVjZmI2ZWRlNGQ4NGNiZWQ1MmQ0ZGQ5MTRjNjViMzczLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJsb2NrIGZpbmFsIDogcHVibGljIFN0
YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQmxv
Y2soQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJsb2NrKQotICAgICAgICAsIG1fc3RhdGVt
ZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+QmxvY2soKSA9
IGRlZmF1bHQ7Ci0KLSAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOwotICAgIEJsb2Nr
KEJsb2NrJiYpID0gZGVmYXVsdDsKLQotICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJl
dHVybiBtX3N0YXRlbWVudHM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0ZW1lbnRzIG1fc3RhdGVt
ZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKEJsb2NrKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChCbG9jaywgaXNCbG9jaygpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Qm9vbGVhbkxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4
MzYwNTE2N2ZiYTVlZTAzYWFmYmM2N2M4MTMxYzUzMWUwMTA1MTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJvb2xlYW5MaXRlcmFsIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEJvb2xlYW5MaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbCB2YWx1ZSkKLSAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpCb29sZWFuTGl0ZXJhbCkKLSAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Qm9vbGVhbkxpdGVyYWwoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0g
ZGVsZXRlOwotICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsK
LQotICAgIEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9
IGRlbGV0ZTsKLSAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYp
ID0gZGVmYXVsdDsKLQotICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
Ci0KLSAgICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBCb29s
ZWFuTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICBjb3B5
VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGJvb2wgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEJvb2xlYW5MaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQm9vbGVhbkxpdGVyYWwsIGlzQm9vbGVhbkxpdGVy
YWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQ3NjFiYTI4YjdjYjcyNDg0ZDdjNjIzNjdjNDc4YTQy
ZGFiZjBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgQnJlYWsgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBCcmVhayhDb2RlTG9jYXRpb24g
bG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCcmVhaykKLSAg
ICB7Ci0gICAgfQotCi0gICAgfkJyZWFrKCkgPSBkZWZhdWx0OwotCi0gICAgQnJlYWsoY29uc3Qg
QnJlYWsmKSA9IGRlbGV0ZTsKLSAgICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZh
dGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShCcmVhaykKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
QnJlYWssIGlzQnJlYWsoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1
aWx0SW5TZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjM2U0ZGYyZWMxYjQxNGQwY2I4M2M2OWIyNzY2MjQ0YjliNmI2NzIxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBCdWlsdEluU2VtYW50aWM6OmlzQWNj
ZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzKSBjb25zdAotewotICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAg
IGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZW
ZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
dWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICBjYXNlIFZh
cmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZh
Y2U6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmJvb2xU
eXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2Ug
VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJn
ZXQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0
NFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuIG1h
dGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIGNhc2UgVmFy
aWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBp
bnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJl
YWRJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxv
YXQzVHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVk
VHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3Vw
VGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmZsb2F0M1R5cGUoKSk7Ci0gICAgfQotfQotCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlv
biwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBj
b25zdAotewotICAgIHN3aXRjaCAoKmVudHJ5UG9pbnRUeXBlKSB7Ci0gICAgY2FzZSBFbnRyeVBv
aW50VHlwZTo6VmVydGV4OgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBj
YXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3Zh
cmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAg
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0
cHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNl
IFZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgewotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAg
ICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklz
RnJvbnRGYWNlOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAg
ICAgICAgIGNhc2UgVmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZh
cmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWVGFyZ2V0OgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1
dGU6Ci0gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2hhZGVySXRl
bURpcmVjdGlvbjo6SW5wdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgICAg
IGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
R3JvdXBJbmRleDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNo
YWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1YTUxODI3MTA1MWM1ZDBjMzk5NTFlYzdh
Y2IyYWM3NDZiMGNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdElu
U2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQnVpbHRJblNlbWFudGljIDog
cHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgZW51bSBjbGFzcyBWYXJpYWJsZSA6IHVpbnQ4X3QgewotICAgICAgICBTVkluc3Rh
bmNlSUQsCi0gICAgICAgIFNWVmVydGV4SUQsCi0gICAgICAgIFBTaXplLAotICAgICAgICBTVlBv
c2l0aW9uLAotICAgICAgICBTVklzRnJvbnRGYWNlLAotICAgICAgICBTVlNhbXBsZUluZGV4LAot
ICAgICAgICBTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFNWVGFyZ2V0LAotICAgICAgICBTVkRl
cHRoLAotICAgICAgICBTVkNvdmVyYWdlLAotICAgICAgICBTVkRpc3BhdGNoVGhyZWFkSUQsCi0g
ICAgICAgIFNWR3JvdXBJRCwKLSAgICAgICAgU1ZHcm91cEluZGV4LAotICAgICAgICBTVkdyb3Vw
VGhyZWFkSUQKLSAgICB9OwotCi0gICAgQnVpbHRJblNlbWFudGljKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVmFyaWFibGUgdmFyaWFibGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFyZ2V0
SW5kZXggPSBzdGQ6Om51bGxvcHQpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQot
ICAgICAgICAsIG1fdmFyaWFibGUodmFyaWFibGUpCi0gICAgICAgICwgbV90YXJnZXRJbmRleChX
VEZNb3ZlKHRhcmdldEluZGV4KSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QnVpbHRJ
blNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAgQnVpbHRJblNlbWFudGljKGNvbnN0IEJ1aWx0
SW5TZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIEJ1aWx0SW5TZW1hbnRpYyhCdWlsdEluU2VtYW50
aWMmJikgPSBkZWZhdWx0OwotCi0gICAgVmFyaWFibGUgdmFyaWFibGUoKSBjb25zdCB7IHJldHVy
biBtX3ZhcmlhYmxlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mIHRhcmdldEluZGV4
KCkgeyByZXR1cm4gbV90YXJnZXRJbmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEJ1aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92
YXJpYWJsZSA9PSBvdGhlci5tX3ZhcmlhYmxlICYmIG1fdGFyZ2V0SW5kZXggPT0gb3RoZXIubV90
YXJnZXRJbmRleDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQnVpbHRJblNl
bWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdWaWV3IHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklu
c3RhbmNlSUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSW5zdGFuY2VJRCI7Ci0gICAgICAgIGNh
c2UgVmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWVmVydGV4SUQi
OwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgICAgIHJldHVybiAiUFNp
emUiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICAgICAgcmV0
dXJuICJTVlBvc2l0aW9uIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToK
LSAgICAgICAgICAgIHJldHVybiAiU1ZJc0Zyb250RmFjZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFi
bGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWU2FtcGxlSW5kZXgiOwot
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgICAgICByZXR1
cm4gIlNWSW5uZXJDb3ZlcmFnZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVGFyZ2V0Ogot
ICAgICAgICAgICAgcmV0dXJuICJTVlRhcmdldCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
RGVwdGg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWRGVwdGgiOwotICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkNvdmVyYWdlOgotICAgICAgICAgICAgcmV0dXJuICJTVkNvdmVyYWdlIjsKLSAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJu
ICJTVkRpc3BhdGNoVGhyZWFkSUQiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6
Ci0gICAgICAgICAgICByZXR1cm4gIlNWR3JvdXBJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWR3JvdXBJbmRleDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZHcm91cEluZGV4IjsKLSAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgotICAgICAgICAgICAgcmV0dXJuICJT
Vkdyb3VwVGhyZWFkSUQiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFi
bGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJ
dGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0
IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7Ci0gICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV90YXJnZXRJbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxF
eHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDYWxsRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQxMThl
MjFiMzUwOTVjZjg0NWIxMWY2YjkxNGQ4ZWVkNzRlNmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBDYWxs
RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDYWxsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgYXJn
dW1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNhbGwpCi0gICAg
ICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92
ZShhcmd1bWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBD
YWxsRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBh
cmd1bWVudHMoKSB7IHJldHVybiBtX2FyZ3VtZW50czsgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkg
eyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICB+Q2FsbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0K
LSAgICB2b2lkIHNldENhc3REYXRhKE5hbWVkVHlwZSYgbmFtZWRUeXBlKQotICAgIHsKLSAgICAg
ICAgbV9jYXN0UmV0dXJuVHlwZSA9ICZuYW1lZFR5cGU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Nh
c3QoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9Ci0gICAgTmFtZWRUeXBlKiBjYXN0UmV0
dXJuVHlwZSgpIHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGU7IH0KLSAgICBGdW5jdGlvbkRlY2xh
cmF0aW9uJiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9mdW5jdGlvbik7Ci0g
ICAgICAgIHJldHVybiAqbV9mdW5jdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZ1bmN0aW9u
KEZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewotICAgICAg
ICBBU1NFUlQoIW1fZnVuY3Rpb24pOwotICAgICAgICBtX2Z1bmN0aW9uID0gJmZ1bmN0aW9uRGVj
bGFyYXRpb247Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVj
dG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9hcmd1bWVudHM7Ci0gICAgRnVuY3Rpb25EZWNs
YXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxwdHIgfTsKLSAgICBOYW1lZFR5cGUqIG1fY2FzdFJl
dHVyblR5cGUgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShDYWxsRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKENhbGxFeHByZXNzaW9uLCBpc0NhbGxFeHByZXNz
aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1h
RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjQ4YmIzODgxNTEz
M2Y5NmQxOGI1ZjhiOTAwZmQyNWQzYTExYzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBDb21tYUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ29tbWFFeHByZXNz
aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4m
JiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNvbW1hKQotICAg
ICAgICAsIG1fbGlzdChXVEZNb3ZlKGxpc3QpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Q29tbWFF
eHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1h
RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGxp
c3QoKSB7IHJldHVybiBtX2xpc3Q7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8VW5pcXVlUmVm
PEV4cHJlc3Npb24+PiBtX2xpc3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShDb21tYUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDb21tYUV4cHJlc3Npb24sIGlzQ29tbWFFeHBy
ZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDQx
MzdlODViZmNjNTgxN2I3ZDI1ZmRmZjViNDA2NGUwOGEzNDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNpbmNsdWRl
ICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRM
aXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldI
TFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggbWFjT1MgU2llcnJhIGRvZXNuJ3Qg
c2VlbSB0byBzdXBwb3J0IHB1dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAotLy8gc28g
dGhpcyBpcyBhIHdyYXBwZXIgY2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4u
IEFzIHNvb24gYXMgd2UgZG9uJ3QKLS8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2Fu
IGJlIG1pZ3JhdGVkIHRvIGEgVmFyaWFudCBwcm9wZXIuCi1jbGFzcyBDb25zdGFudEV4cHJlc3Np
b24gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENv
bnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJMaXRlcmFsKQotICAgICAg
ICA6IG1fdmFyaWFudChXVEZNb3ZlKGludGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgQ29uc3RhbnRFeHByZXNzaW9uKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZElu
dGVnZXJMaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRM
aXRlcmFsJiYgZmxvYXRMaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGZsb2F0
TGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihCb29sZWFu
TGl0ZXJhbCYmIGJvb2xlYW5MaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGJv
b2xlYW5MaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLSAgICAg
ICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9u
JikgPSBkZWxldGU7Ci0gICAgQ29uc3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShjb25zdCBD
b25zdGFudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb24mIG9w
ZXJhdG9yPShDb25zdGFudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxp
dGVyYWwmIGludGVnZXJMaXRlcmFsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZpc2l0b3Ip
IC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZhcmlhbnQ8SW50
ZWdlckxpdGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIEZsb2F0TGl0ZXJhbCwgQm9vbGVh
bkxpdGVyYWwsIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRv
cikgY29uc3QgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFy
aWFudDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgRmxvYXRMaXRlcmFs
LCBCb29sZWFuTGl0ZXJhbCwgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPiY+KCkpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YXJpYW50KTsKLSAgICB9Ci0K
LSAgICBDb25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwm
IGludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0
dXJuIGludGVnZXJMaXRlcmFsLmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJl
c3Npb24gewotICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUo
KTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9u
ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFs
KSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGJvb2xlYW5MaXRl
cmFsLmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAg
ICAgICAgICAgIHJldHVybiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuY2xvbmUoKTsKLSAgICAg
ICAgfSksIG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IENvbnN0
YW50RXhwcmVzc2lvbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlc3VsdDsKLSAgICAgICAgZG91YmxlIHZhbHVlOwotICAgICAgICB2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwg
WyZdKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwp
IHsKLSAgICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwot
ICAgICAgICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAg
ICAgICAgIHZhbHVlID0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25z
dCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgYXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0
PEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0g
ICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgb3RoZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCk7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkgPT0gb3Ro
ZXJNZW1iZXJSZWZlcmVuY2UuZW51bWVyYXRpb25NZW1iZXIoKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9KSk7Ci0KLSAgICAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiAqcmVzdWx0OwotCi0gICAgICAgIG90
aGVyLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEludGVnZXJMaXRlcmFsJiBpbnRl
Z2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gaW50ZWdlckxpdGVy
YWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwm
IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09
IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZs
b2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9
PSBmbG9hdExpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRl
cmFsJikgewotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0sIFsmXShjb25z
dCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBmYWxz
ZTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICByZXR1
cm4gKnJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFudDwKLSAgICAgICAgSW50
ZWdlckxpdGVyYWwsCi0gICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIEZs
b2F0TGl0ZXJhbCwKLSAgICAgICAgQm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbAotICAgICAgICA+IG1fdmFyaWFudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRp
bnVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250
aW51ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDUxYzI0MmFmMDZmOGMzM2M2
NGQwNTZiY2NjOWEzZGQwZjkwZjc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnRpbnVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQ29udGludWUgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBDb250aW51ZShDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxv
Y2F0aW9uLCBLaW5kOjpDb250aW51ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkNvbnRpbnVlKCkg
PSBkZWZhdWx0OwotCi0gICAgQ29udGludWUoY29uc3QgQ29udGludWUmKSA9IGRlbGV0ZTsKLSAg
ICBDb250aW51ZShDb250aW51ZSYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShDb250aW51
ZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQ29udGludWUsIGlz
Q29udGludWUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHRE
ZWxldGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERl
ZmF1bHREZWxldGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiMjUyNTlhMjlm
Nzc4MjE4YjNhMzlkMjg3YWQwZjc4NjI2YWQ5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZWZhdWx0RGVsZXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLQotI2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUo
dHlwZSkgXAotICAgIG5hbWVzcGFjZSBzdGQgeyBcCi0gICAgICAgIHRlbXBsYXRlPD4gXAotICAg
ICAgICBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBc
Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gXAotICAgICAgICAgICAgdm9pZCBj
YWxsRGVsZXRlKFQqIHQpIFwKLSAgICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIGRlbGV0
ZSB0OyBcCi0gICAgICAgICAgICB9IFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBcCi0gICAgICAgICAgICB2b2lkIGNhbGxEZXN0cm95KFQqIHQpIFwKLSAgICAgICAgICAgIHsg
XAotICAgICAgICAgICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3koKnQp
OyBcCi0gICAgICAgICAgICB9IFwKLSAgICAgICAgICAgIGNvbnN0ZXhwciB2b2lkIG9wZXJhdG9y
KCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZSogdmFsdWUpIFwKLSAgICAgICAgICAgIHsgXAot
ICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19maW5hbDxXZWJDb3JlOjpXSExT
TDo6QVNUOjp0eXBlPjo6dmFsdWUpIFwKLSAgICAgICAgICAgICAgICAgICAgY2FsbERlbGV0ZSh2
YWx1ZSk7IFwKLSAgICAgICAgICAgICAgICBlbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgY2Fs
bERlc3Ryb3kodmFsdWUpOyBcCi0gICAgICAgICAgICB9IFwKLSAgICAgICAgfTsgXAotICAgIH0g
XAotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJl
ZmVyZW5jZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjMWUx
NjQzMWYzMGJkZTk1ZDlkZTUxMTE2ZGI4YWE2N2I0Yjk0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0x
LDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRGVyZWZlcmVuY2VFeHByZXNz
aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcG9pbnRl
cikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpEZXJlZmVyZW5jZSkKLSAg
ICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
fkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIERlcmVmZXJlbmNlRXhw
cmVzc2lvbihjb25zdCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBEZXJl
ZmVyZW5jZUV4cHJlc3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQot
ICAgIEV4cHJlc3Npb24mIHBvaW50ZXIoKSB7IHJldHVybiBtX3BvaW50ZXI7IH0KLQotcHJpdmF0
ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wb2ludGVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRGVyZWZlcmVuY2VF
eHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRGVy
ZWZlcmVuY2VFeHByZXNzaW9uLCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg3ZWJmZDllODRmMzI5ODMwNmQxNTA5NDRmYmZmZjc4YTU1OTNh
Y2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIERvV2hpbGVMb29w
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgRG9XaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFs
KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6RG9XaGlsZUxvb3ApCi0gICAg
ICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZN
b3ZlKGNvbmRpdGlvbmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkRvV2hpbGVMb29wKCkgPSBk
ZWZhdWx0OwotCi0gICAgRG9XaGlsZUxvb3AoY29uc3QgRG9XaGlsZUxvb3AmKSA9IGRlbGV0ZTsK
LSAgICBEb1doaWxlTG9vcChEb1doaWxlTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1l
bnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25h
bCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8
U3RhdGVtZW50PiBtX2JvZHk7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9u
YWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShEb1doaWxlTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoRG9XaGlsZUxvb3AsIGlzRG9XaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2RmYjQyMjMwNDVmZTAyZjk2YzkwYjhjNzU3ZTliM2I2NGJiNzU2Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBEb3RF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
YmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbihsb2NhdGlvbiwgS2luZDo6RG90LCBXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1fZmll
bGROYW1lKFdURk1vdmUoZmllbGROYW1lKSkKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSht
X3BhZGRpbmcpOwotICAgIH0KLQotICAgIH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0g
ICAgRG90RXhwcmVzc2lvbihjb25zdCBEb3RFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgRG90
RXhwcmVzc2lvbihEb3RFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZyYgZmll
bGROYW1lKCkgeyByZXR1cm4gbV9maWVsZE5hbWU7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcg
bV9maWVsZE5hbWU7Ci0gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IGZvciByZXBsYWNlV2l0
aCBpbnRvIGEgYmlnZ2VyIHR5cGUuCi0gICAgY2hhciBtX3BhZGRpbmdbMTJdOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRG90RXhw
cmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKERvdEV4
cHJlc3Npb24sIGlzRG90RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmJhMWRkNzg4MGU1Yzg2ZTU1ZTZl
ODdjZTUxYjk3ZGU5MDk5NzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwg
OiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4
cHJlc3Npb24tPmNvZGVMb2NhdGlvbigpLCBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uKQotICAg
ICAgICAsIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbihXVEZNb3ZlKGVmZmVjdGZ1bEV4cHJlc3Npb24p
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0g
ZGVmYXVsdDsKLQotICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwotICAgIEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBFeHByZXNzaW9uJiBlZmZlY3RmdWxFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9lZmZlY3Rm
dWxFeHByZXNzaW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1f
ZWZmZWN0ZnVsRXhwcmVzc2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQsIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NDQ2ZGYxMGI3NTVkZDZjNjA1YjM5NjQ5ODM2MWYx
NmVjNzdiYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5
cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPGNzdGRpbnQ+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKLSAgICBWZXJ0
ZXgsCi0gICAgRnJhZ21lbnQsCi0gICAgQ29tcHV0ZSwKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3Ry
aW5nVmlldyB0b1N0cmluZyhFbnRyeVBvaW50VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlw
ZSkgewotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuICJ2
ZXJ0ZXgiOwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1
cm4gImZyYWdtZW50IjsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAg
ICByZXR1cm4gImNvbXB1dGUiOwotICAgIH0KLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0
aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZjhkZTVhYzIzZjRhN2FiYzM0
NWRjZThhNTFjZWZiNjVmOWQ5NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0
aW9uTWVtYmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51
bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBl
KQotICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIGxvY2F0
aW9uLCBXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAg
IHsKLSAgICB9Ci0KLSAgICB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0g
ICAgRW51bWVyYXRpb25EZWZpbml0aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0g
ZGVsZXRlOwotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24m
JikgPSBkZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7
IH0KLQotICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQotICAgIHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlx
dWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwotICAgICAgICByZXR1cm4g
cmVzdWx0LmlzTmV3RW50cnk7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIG1lbWJl
ckJ5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9tZW1iZXJzLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX21lbWJl
cnMuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxFbnVtZXJhdGlvbk1lbWJlcj4+IGVudW1lcmF0aW9uTWVtYmVycygpCi0gICAgewot
ICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxFbnVtZXJhdGlvbk1lbWJlcj4+
IHJlc3VsdDsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9tZW1iZXJzKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgqcGFpci52YWx1ZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBtX21lbWJlcnM7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RF
TEVURShFbnVtZXJhdGlvbkRlZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfVFlQRShFbnVtZXJhdGlvbkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRp
b25NZW1iZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI4ODhmMzVhOWUwYzlm
OGQ0ZDE3YzE5MjU0YjRjNjlmYzY2NGI0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBFbnVtZXJhdGlvbk1lbWJlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRW51bWVyYXRpb25NZW1iZXIoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcm
JiBuYW1lLCBpbnQ2NF90IHZhbHVlKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9u
KQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBk
ZWZhdWx0OwotCi0gICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXIm
KSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgU3RyaW5nIG5hbWUoKSB7IHJldHVybiBt
X25hbWU7IH0KLSAgICBpbnQ2NF90IHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotCi1wcml2
YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBTdHJpbmcgbV9uYW1l
OwotICAgIGludDY0X3QgbV92YWx1ZTsKLX07Ci0KLXVzaW5nIEVudW1lcmF0aW9uTWVtYmVycyA9
IFZlY3RvcjxFbnVtZXJhdGlvbk1lbWJlcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE4MzRlOTc3YWNjZTkwYWYwZjIxOThmMTg1ZjFmOTkyMmUxNjA0NDcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJh
dGlvbk1lbWJlcjsKLQotY2xhc3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24s
IEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92
ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgZXhw
bGljaXQgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYpID0gZGVsZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBvcGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7
Ci0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwgd3JhcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYm
IHJpZ2h0LCBFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51
bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQotICAgIHsKLSAgICAgICAgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsIHJlc3VsdChsb2NhdGlvbiwgV1RGTW92ZShsZWZ0KSwgV1RGTW92
ZShyaWdodCkpOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51
bWVyYXRpb25EZWZpbml0aW9uOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9
ICZlbnVtZXJhdGlvbk1lbWJlcjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQotCi0gICAgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvZGVMb2NhdGlvbigpLCBTdHJpbmcobV9s
ZWZ0KSwgU3RyaW5nKG1fcmlnaHQpKTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25NZW1i
ZXIgPSBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVy
YXRpb25EZWZpbml0aW9uOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogZW51
bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1l
cmF0aW9uRGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVy
YXRpb25NZW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7
Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0RW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikK
LSAgICB7Ci0gICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVm
aW5pdGlvbjsKLSAgICAgICAgbV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJl
cjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbGVmdDsKLSAgICBTdHJpbmcgbV9y
aWdodDsKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIG1fZW51bWVyYXRpb25EZWZpbml0aW9u
IHsgbnVsbHB0ciB9OwotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBtX2VudW1lcmF0aW9uTWVtYmVy
IHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJ
TkVfREVGQVVMVF9ERUxFVEUoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCBp
c0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTFlOGRjMzZhODk0YjM5OWU3ZjNjYTYzMGI2NmE4ZjI0MTYwYjQ5Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIxMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xBU1QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdm9pZCBFeHByZXNzaW9uOjpkZXN0cm95KEV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PENv
bW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RGVy
ZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dp
Y2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxMb2dp
Y2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBkZWxldGUgJmRv
d25jYXN0PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PERvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgot
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNz
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoK
LSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0
ZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihl
eHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpU
ZXJuYXJ5OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50
ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIEV4cHJlc3Npb246OmRlc3RydWN0KEV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgZG93bmNhc3Q8
QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Bc3NpZ25tZW50RXhwcmVzc2lvbigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRl
cmFsOgotICAgICAgICBkb3duY2FzdDxCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikufkJvb2xl
YW5MaXRlcmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
Q2FsbDoKLSAgICAgICAgZG93bmNhc3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5DYWxs
RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkNvbW1hOgotICAgICAgICBkb3duY2FzdDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5D
b21tYUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpEZXJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9u
PihleHByZXNzaW9uKS5+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBkb3duY2Fz
dDxGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pLn5GbG9hdExpdGVyYWwoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAg
ZG93bmNhc3Q8SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pLn5JbnRlZ2VyTGl0ZXJhbCgpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAg
ICAgIGRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TG9naWNhbEV4cHJl
c3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dp
Y2FsTm90OgotICAgICAgICBkb3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikufkxvZ2ljYWxOb3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
Ok1ha2VQb2ludGVyOgotICAgICAgICBkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4
cHJlc3Npb24pLn5NYWtlUG9pbnRlckV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAgICAgIGRvd25jYXN0PERvdEV4cHJlc3Np
b24+KGV4cHJlc3Npb24pLn5Eb3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRv
d25jYXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpJbmRleDoKLSAgICAgICAgZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5+
SW5kZXhFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6UmVhZE1vZGlmeVdyaXRlOgotICAgICAgICBkb3duY2FzdDxSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uPihleHByZXNzaW9uKS5+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6Ci0gICAgICAg
IGRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKS5+VGVybmFyeUV4cHJlc3Np
b24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFs
PihleHByZXNzaW9uKS5+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAg
ICAgICAgZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKS5+RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PFZhcmlhYmxl
UmVmZXJlbmNlPihleHByZXNzaW9uKS5+VmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotfQotCi1ib29sIEV4cHJlc3Npb246Om1heUJlRWZmZWN0ZnVsKCkgY29uc3QK
LXsKLSAgICBhdXRvJiBleHByZXNzaW9uID0gY29uc3RfY2FzdDxFeHByZXNzaW9uJj4oKnRoaXMp
OwotCi0gICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9h
dExpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5wb2ludGVyKCkubWF5
QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0
KCkubWF5QmVFZmZlY3RmdWwoKSB8fCBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikucmlnaHQoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpMb2dpY2FsTm90OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLm9wZXJhbmQoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBk
b3duY2FzdDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0VmFs
dWUoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtl
UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbikubGVmdFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikuYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OkluZGV4OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNz
aW9uPihleHByZXNzaW9uKS5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSB8fCBkb3duY2FzdDxJbmRl
eEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmluZGV4RXhwcmVzc2lvbigpLm1heUJlRWZmZWN0ZnVs
KCk7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM2YTA0
NzM0MmM1MzRmZWQzNzY3ZGYwZjFkNzUzZWVmNDc2OGFjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgIldI
TFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3RlZDoKLSAgICB+RXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKLQotcHVibGljOgotCi0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Ci0gICAg
ICAgIEFzc2lnbm1lbnQsCi0gICAgICAgIEJvb2xlYW5MaXRlcmFsLAotICAgICAgICBDYWxsLAot
ICAgICAgICBDb21tYSwKLSAgICAgICAgRGVyZWZlcmVuY2UsCi0gICAgICAgIERvdCwKLSAgICAg
ICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAg
ICAgSW5kZXgsCi0gICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBMb2dpY2FsLAotICAg
ICAgICBMb2dpY2FsTm90LAotICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCi0gICAgICAgIE1h
a2VQb2ludGVyLAotICAgICAgICBSZWFkTW9kaWZ5V3JpdGUsCi0gICAgICAgIFRlcm5hcnksCi0g
ICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIFZhcmlhYmxlUmVmZXJlbmNl
LAotICAgICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIEV4cHJl
c3Npb24oQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IG1f
Y29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICB7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgZGVzdHJveShFeHByZXNzaW9uJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGVzdHJ1Y3QoRXhwcmVzc2lvbiYpOwotCi0gICAgRXhwcmVzc2lvbihjb25zdCBF
eHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKLQotICAgIEV4cHJlc3Npb24mIG9wZXJhdG9yPShjb25zdCBFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgRXhwcmVzc2lvbiYgb3BlcmF0b3I9KEV4cHJlc3Npb24mJikgPSBkZWZhdWx0
OwotCi0gICAgVW5uYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV90eXBl
ID8gJiptX3R5cGUgOiBudWxscHRyOyB9Ci0KLSAgICBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBl
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUpOwotICAgICAgICByZXR1cm4gKm1fdHlw
ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5
cGUpOwotICAgIH0KLQotICAgIGNvbnN0IFR5cGVBbm5vdGF0aW9uKiBtYXliZVR5cGVBbm5vdGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlQW5ub3RhdGlvbiA/ICYqbV90eXBlQW5ub3RhdGlv
biA6IG51bGxwdHI7IH0KLQotICAgIGNvbnN0IFR5cGVBbm5vdGF0aW9uJiB0eXBlQW5ub3RhdGlv
bigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlQW5ub3RhdGlvbik7Ci0gICAg
ICAgIHJldHVybiAqbV90eXBlQW5ub3RhdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFR5cGVB
bm5vdGF0aW9uKFR5cGVBbm5vdGF0aW9uJiYgdHlwZUFubm90YXRpb24pCi0gICAgewotICAgICAg
ICBBU1NFUlQoIW1fdHlwZUFubm90YXRpb24pOwotICAgICAgICBtX3R5cGVBbm5vdGF0aW9uID0g
V1RGTW92ZSh0eXBlQW5ub3RhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZVRvKEV4
cHJlc3Npb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVk
VHlwZSA9IGNvbnN0X2Nhc3Q8RXhwcmVzc2lvbio+KHRoaXMpLT5tYXliZVJlc29sdmVkVHlwZSgp
KQotICAgICAgICAgICAgb3RoZXIuc2V0VHlwZSgqcmVzb2x2ZWRUeXBlKTsKLSAgICB9Ci0KLSAg
ICBib29sIG1heUJlRWZmZWN0ZnVsKCkgY29uc3Q7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCAg
eyByZXR1cm4gbV9raW5kOyB9Ci0gICAgYm9vbCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFzc2lnbm1lbnQ7IH0KLSAgICBib29sIGlzQm9v
bGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Qm9vbGVhbkxpdGVy
YWw7IH0KLSAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6Q2FsbDsgfQotICAgIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6Q29tbWE7IH0KLSAgICBib29sIGlzRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRlcmVmZXJlbmNlOyB9Ci0g
ICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
RG90OyB9Ci0gICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBp
c0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGbG9hdExpdGVy
YWw7IH0KLSAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OkluZGV4OyB9Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0xvZ2lj
YWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWw7IH0K
LSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6TG9naWNhbE5vdDsgfQotICAgIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VBcnJheVJlZmVyZW5j
ZTsgfQotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6TWFrZVBvaW50ZXI7IH0KLSAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gaXNEb3RFeHByZXNzaW9uKCkgfHwgaXNJbmRleEV4
cHJlc3Npb24oKTsgfQotICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlJlYWRNb2RpZnlXcml0ZTsgfQotICAgIGJvb2wg
aXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUZXJu
YXJ5OyB9Ci0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQotICAgIGJvb2wgaXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJs
ZVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOyB9Ci0K
LSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9j
YXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRp
b24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAgIENvZGVM
b2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsK
LSAgICBzdGQ6Om9wdGlvbmFsPFR5cGVBbm5vdGF0aW9uPiBtX3R5cGVBbm5vdGF0aW9uOwotICAg
IEtpbmQgbV9raW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJ
TkVfREVGQVVMVF9ERUxFVEUoRXhwcmVzc2lvbikKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5
cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pIHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRl
OyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZGU0NGZjNTUwZTliYjM2ZDcyOTFhZGNkMjJhZjk1YmY4Yzg3NGZlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgRmFsbHRocm91Z2ggZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGYWxsdGhyb3VnaChDb2RlTG9jYXRp
b24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpGYWxsdGhy
b3VnaCkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OwotCi0g
ICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKLSAgICBGYWxsdGhy
b3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGYWxsdGhyb3Vn
aCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRmFsbHRocm91Z2gs
IGlzRmFsbHRocm91Z2goKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZs
b2F0TGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmxvYXRMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MWY5ZDRi
MDlkNzhiZDMxOTM0Yzg5MzJlMGFkOGNlOTEwZjFlNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBG
bG9hdExpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmxvYXRMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgZmxvYXQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
RmxvYXRMaXRlcmFsKQotICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZsb2F0TGl0ZXJhbCgpID0g
ZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0
ZTsKLSAgICBGbG9hdExpdGVyYWwoRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEZs
b2F0TGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwotICAg
IEZsb2F0TGl0ZXJhbCYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBGbG9hdExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgZmxvYXQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBGbG9hdExpdGVyYWwgY2xv
bmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRp
b24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlw
ZSgpKQotICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpV
bm5hbWVkVHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdExp
dGVyYWxUeXBlIG1fdHlwZTsKLSAgICBmbG9hdCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBp
c0Zsb2F0TGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzczMDhjMDBlNzVmMDRkMmE3ODNiODkxOTY5OTY1NTQzM2Q1YjgwOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1GbG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgZmxvYXQgdmFsdWUpCi0gICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpGbG9hdExpdGVy
YWwpCi0gICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZl
cmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgImZsb2F0Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17
Ci19Ci0KLWJvb2wgRmxvYXRMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBl
KSBjb25zdAotewotICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7
Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2Fz
dDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBl
RGVjbGFyYXRpb24uaXNGbG9hdGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50RmxvYXQoKShtX3ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBGbG9h
dExpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUpIGNvbnN0Ci17Ci0gICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlw
ZSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1GbG9hdExpdGVyYWxU
eXBlIEZsb2F0TGl0ZXJhbFR5cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBGbG9hdExpdGVyYWxU
eXBlIHJlc3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAg
ICBpZiAoYXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIHJlc3VsdC5y
ZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7Ci0gICAgcmVzdWx0
Lm1fcHJlZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNGUwODU5YjdjMDhmNTYyMmRhNGIwZTRlYTc0
MjFiNzM3NWY1ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi1jbGFzcyBGbG9hdExpdGVyYWxUeXBlIGZpbmFs
IDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBGbG9hdExpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgZmxvYXQgdmFsdWUp
OwotCi0gICAgfkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVy
YWxUeXBlKGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVy
YWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFs
VHlwZSYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBG
bG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5
cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0K
LQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQg
Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIEZsb2F0TGl0
ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBmbG9hdCBtX3ZhbHVlOwot
ICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRl
bmN5IGJldHdlZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4g
VHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAg
IFJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGbG9hdExpdGVyYWxUeXBl
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoRmxvYXRMaXRlcmFsVHlwZSwg
aXNGbG9hdExpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGb3JMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGb3JMb29wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YTU3NDBmODc1ZmZk
ZDc5ZWRhZTcyYWY4MzU4NGE4ODYyOGZlM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRm9yTG9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBGb3JMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRm9yTG9vcChDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpGb3JMb29wKQotICAgICAgICAsIG1faW5pdGlhbGl6
YXRpb24oV1RGTW92ZShpbml0aWFsaXphdGlvbikpCi0gICAgICAgICwgbV9jb25kaXRpb24oV1RG
TW92ZShjb25kaXRpb24pKQotICAgICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5jcmVtZW50
KSkKLSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICB7Ci0gICAgfQotCi0gICAg
fkZvckxvb3AoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGb3JMb29wKGNvbnN0IEZvckxvb3AmKSA9IGRl
bGV0ZTsKLSAgICBGb3JMb29wKEZvckxvb3AmJikgPSBkZWZhdWx0OwotCi0gICAgVW5pcXVlUmVm
PFN0YXRlbWVudD4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsg
fQotICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uLmdldCgp
OyB9Ci0gICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQuZ2V0
KCk7IH0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0
ZToKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2luaXRpYWxpemF0aW9uOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbV9pbmNyZW1lbnQ7Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9E
RUxFVEUoRm9yTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
Rm9yTG9vcCwgaXNGb3JMb29wKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGJjNWI2NzRmMzRmOTE1NGIwY2FlMmVhNDI2NWE2MjJjYTczMjljZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotdXNpbmcgRnVuY3Rpb25BdHRyaWJ1dGUgPSBWYXJpYW50PE51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZT47Ci11c2luZyBBdHRyaWJ1dGVCbG9jayA9IFZlY3RvcjxGdW5j
dGlvbkF0dHJpYnV0ZT47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViMjRkMmUyOGY2MWNmYjVhZGM5
NDJlMjY4OGUzNGE3MjM3MjljNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldI
TFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzaW5nTW9kZS5oIgotI2luY2x1ZGUg
IldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgUmVmPFVubmFtZWRUeXBlPiB0
eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIHN0
ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9yLCBQYXJz
aW5nTW9kZSBwYXJzaW5nTW9kZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikK
LSAgICAgICAgLCBtX2F0dHJpYnV0ZUJsb2NrKFdURk1vdmUoYXR0cmlidXRlQmxvY2spKQotICAg
ICAgICAsIG1fZW50cnlQb2ludFR5cGUoZW50cnlQb2ludFR5cGUpCi0gICAgICAgICwgbV9pc09w
ZXJhdG9yKGlzT3BlcmF0b3IpCi0gICAgICAgICwgbV9wYXJzaW5nTW9kZShwYXJzaW5nTW9kZSkK
LSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92
ZShuYW1lKSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKLSAg
ICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIH5GdW5jdGlvbkRlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRnVuY3Rp
b25EZWNsYXJhdGlvbihjb25zdCBGdW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAg
RnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQot
ICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxv
Y2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJsb2NrOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbnRy
eVBvaW50VHlwZTsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBT
dHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBib29sIGlzQ2FzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZSA9PSAib3BlcmF0b3IgY2FzdCI7IH0KLSAgICBjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsg
fQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzOyB9Ci0gICAgU2VtYW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5n
ZXQoKTsgfQotICAgIGJvb2wgaXNPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGVyYXRv
cjsgfQotICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlTG9jYXRpb247IH0KLQotICAgIFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzaW5nTW9kZTsgfQotCi0gICAgTmFtZVNwYWNlIG5hbWVTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXROYW1lU3BhY2UoTmFt
ZVNwYWNlIG5hbWVTcGFjZSkgeyBtX25hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRl
OgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBBdHRyaWJ1dGVCbG9jayBt
X2F0dHJpYnV0ZUJsb2NrOwotICAgIHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50
cnlQb2ludFR5cGU7Ci0gICAgYm9vbCBtX2lzT3BlcmF0b3I7Ci0gICAgUGFyc2luZ01vZGUgbV9w
YXJzaW5nTW9kZTsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zIG1fcGFyYW1ldGVyczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2VtYW50aWM+IG1fc2VtYW50aWM7Ci0gICAgTmFtZVNwYWNlIG1fbmFtZVNwYWNl
IHsgTmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNU
SU9OX0RFQ0xBUkFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkg
XAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDI0OGZiNWE3YTQ1NGVlNTI5NzI3YmJmMjdkYTgxOTJhZDc1ZGUwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2lu
Y2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlv
bkRlY2xhcmF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFy
YXRpb24sIEJsb2NrJiYgYmxvY2spCi0gICAgICAgIDogRnVuY3Rpb25EZWNsYXJhdGlvbihXVEZN
b3ZlKGZ1bmN0aW9uRGVjbGFyYXRpb24pKQotICAgICAgICAsIG1fYmxvY2soV1RGTW92ZShibG9j
aykpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVmaW5pdGlvbigpID0g
ZGVmYXVsdDsKLQotICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihjb25zdCBGdW5jdGlvbkRlZmluaXRp
b24mKSA9IGRlbGV0ZTsKLSAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWZpbml0aW9u
JiYpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBt
X2Jsb2NrOyB9Ci0KLXByaXZhdGU6Ci0gICAgQmxvY2sgbV9ibG9jazsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9GVU5D
VElPTl9ERUNMQVJBVElPTihGdW5jdGlvbkRlZmluaXRpb24sIGlzRnVuY3Rpb25EZWZpbml0aW9u
KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTJlMWZiNjA4NmQ5ZjBiNmUyNjFhM2YxZTMzYWU3MmExYWU0Y2E2ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgYmFzZSwgU3RydWN0dXJlRWxlbWVudCogc3RydWN0RmllbGQpCi0gICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi0g
ICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCi0gICAgICAgICwgbV9zdHJ1Y3RGaWVsZCgq
c3RydWN0RmllbGQpCi0gICAgewotICAgICAgICBBU1NFUlQoc3RydWN0RmllbGQpOwotICAgIH0K
LQotICAgIH5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBT
dHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3RGaWVsZCgpIHsgcmV0dXJuIG1fc3RydWN0RmllbGQ7IH0K
LQotICAgIEV4cHJlc3Npb24mIGJhc2UoKSB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KLQotcHJp
dmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotICAgIFN0cnVjdHVyZUVs
ZW1lbnQmIG1fc3RydWN0RmllbGQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlLCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTlkNmRhM2NkMTYwMWE4YjlhMTVkM2FhYjE1ZmJmOWJmY2M4MmQwMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIElmU3Rh
dGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgSWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4m
JiBib2R5LCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6
IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6SWYpCi0gICAgICAgICwgbV9jb25kaXRpb25hbChX
VEZNb3ZlKGNvbmRpdGlvbmFsKSkKLSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAg
ICAgICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0
YXRlbWVudCYpID0gZGVsZXRlOwotICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVm
YXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRp
b25hbDsgfQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotICAgIFN0
YXRlbWVudCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7Ci0gICAgVW5pcXVl
UmVmPFN0YXRlbWVudD4gbV9ib2R5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1f
ZWxzZUJvZHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShJZlN0YXRlbWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoSWZTdGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNzQxNWUzMWI0MzlmMTA3OWUxODRhZGE3ZTJiNzA0MTFm
YzM1YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEluZGV4RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEluZGV4RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIGJhc2UsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGluZGV4KQotICAgICAgICA6IFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6SW5kZXgsIFdURk1vdmUoYmFz
ZSkpCi0gICAgICAgICwgbV9pbmRleChXVEZNb3ZlKGluZGV4KSkKLSAgICB7Ci0jaWYgQ1BVKEFE
RFJFU1MzMikKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1fcGFkZGluZyk7Ci0jZW5kaWYKLSAgICB9
Ci0KLSAgICB+SW5kZXhFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgSW5kZXhFeHByZXNz
aW9uKGNvbnN0IEluZGV4RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEluZGV4RXhwcmVzc2lv
bihJbmRleEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgaW5kZXhF
eHByZXNzaW9uKCkgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYgaW5kZXhSZWZlcmVuY2UoKSB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IHRha2VJbmRleCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbmRleCk7IH0KLQotcHJp
dmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9pbmRleDsKLSNpZiBDUFUoQUREUkVT
UzMyKQotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBmb3IgcmVwbGFjZVdpdGggaW50byBh
IGJpZ2dlciB0eXBlLgotICAgIGNoYXIgbV9wYWRkaW5nWzRdOwotI2VuZGlmCi19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbmRleEV4
cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbmRl
eEV4cHJlc3Npb24sIGlzSW5kZXhFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVhNzI3YThmOWI4MGE5OTkyMjdkYWU0MTFlMWUzODhjMGE3MjcxM2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1pbnQ2NF90IEludGVnZXJM
aXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Ci17Ci0gICAgYXV0byYgdHlwZVJl
ZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7
Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4gbmF0
aXZlVHlwZURlY2xhcmF0aW9uLmZvcm1hdFZhbHVlRnJvbUludGVnZXIoKShtX3ZhbHVlKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY3MDlmZWRkZDEzZGVhNTE0ODU5OGYyOWEwNTcwNGI5OTJiZjJkZWIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW50ZWdl
ckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgICAgICwgbV90eXBl
KGxvY2F0aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJh
bChjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFsKElu
dGVnZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsJiBvcGVyYXRv
cj0oY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbCYg
b3BlcmF0b3I9KEludGVnZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRl
cmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGludCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEludGVnZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92
YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAgICAg
aWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1fdHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAg
ICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlw
ZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5
cGUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOwot
ICAgIGludCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoSW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbnRlZ2VyTGl0ZXJhbCwgaXNJbnRlZ2VyTGl0ZXJhbCgp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNjY3NTBi
NjQzZWI2NjIwNmEzN2UyOTkwMWE0NjdjMmJiZGU3ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotSW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2Vy
TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgOiBSZXNv
bHZhYmxlVHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0g
ICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50
Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19Ci0KLWJvb2wgSW50ZWdlckxpdGVyYWxUeXBl
OjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1l
ZFR5cGU+KHR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBl
ID0gZG93bmNhc3Q8TmFtZWRUeXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVw
cmVzZW50SW50ZWdlcigpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNv
c3QoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRj
aGVzKHVubmFtZWRUeXBlLCBtX3ByZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gMTsKLX0KLQotSW50ZWdlckxpdGVyYWxUeXBlIEludGVnZXJMaXRlcmFsVHlwZTo6
Y2xvbmUoKSBjb25zdAotewotICAgIEludGVnZXJMaXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJy
ZWRUeXBlLT5jb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBt
YXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICByZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFT
VDo6VW5uYW1lZFR5cGUmPigqdHlwZSkpOwotICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBt
X3ByZWZlcnJlZFR5cGUuY29weVJlZigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc0YWVkZjQ3NmIzMmI3ZmJmNzllOGMwZDdkYzQ3YzgzMTkxYjYwYWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBl
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVS
ZWZlcmVuY2U7Ci0KLWNsYXNzIEludGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNv
bHZhYmxlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
SW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwgaW50IHZhbHVlKTsKLQotICAgIH5JbnRl
Z2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoY29u
c3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBl
KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5
cGUmIG9wZXJhdG9yPShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJ
bnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZh
dWx0OwotCi0gICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAg
VHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsg
fQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25l
ZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgSW50ZWdl
ckxpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7
Ci0gICAgLy8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVu
ZGVuY3kgYmV0d2VlbgotICAgIC8vIENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAt
PiBUeXBlUmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0g
ICAgUmVmPFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFs
VHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEludGVnZXJMaXRlcmFs
VHlwZSwgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYzFlOTMxMTBmZTJiNTJiZThjNmNhMWYxYzQ2OTRiNDQ3Nzc4MGFmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZW51bSBj
bGFzcyBUeXBlIDogdWludDhfdCB7Ci0gICAgICAgIEFuZCwKLSAgICAgICAgT3IKLSAgICB9Owot
Ci0gICAgTG9naWNhbEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBUeXBlIHR5cGUs
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJp
Z2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCi0gICAg
ICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCi0gICAg
ICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkxvZ2lj
YWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3Qg
TG9naWNhbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dp
Y2FsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KLQotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7
IH0KLSAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KLQotcHJpdmF0
ZToKLSAgICBUeXBlIG1fdHlwZTsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0Owot
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTG9naWNhbEV4cHJlc3Npb24p
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVz
c2lvbiwgaXNMb2dpY2FsRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUzZWRjMzYzNTJiZWFiMDQ4YTM4ZTk4ZTczZGM1NjkxNzViZmM2
YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Np
b24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIG9wZXJhbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwg
S2luZDo6TG9naWNhbE5vdCkKLSAgICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkK
LSAgICB7Ci0gICAgfQotCi0gICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owot
Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKLSAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVy
YW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3BlcmFuZDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKExvZ2ljYWxOb3RFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0VYUFJFU1NJT04oTG9naWNhbE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24o
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2M1ZDY0Y2I5NTczMTYwMjA5NTcxN2IyYmFmYzY0YmU3ZTM2MDkyNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJl
c3NFc2NhcGVNb2RlLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
biB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUp
Ci0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TWFrZUFycmF5UmVmZXJlbmNl
KQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBt
X2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
biYpID0gZGVsZXRlOwotICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0
VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotCi0gICAgYm9vbCBtaWdodEVzY2FwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6
OkVzY2FwZXM7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0
VmFsdWU7Ci0gICAgQWRkcmVzc0VzY2FwZU1vZGUgbV9hZGRyZXNzRXNjYXBlTW9kZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFhMjdjMjFjNTA1YTAzNjgzY2JlOTU2MDQ2MjMyOTUxZWIxMTJmZmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NF
c2NhcGVNb2RlLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IE1ha2VQb2ludGVyRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBNYWtlUG9pbnRlckV4cHJlc3Np
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFs
dWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQotICAgICAgICAsIG1fbGVmdFZhbHVl
KFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJl
c3NFc2NhcGVNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TWFrZVBvaW50ZXJFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2lu
dGVyRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtl
UG9pbnRlckV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgbGVmdFZh
bHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLQotICAgIGJvb2wgbWlnaHRFc2NhcGUoKSBj
b25zdCB7IHJldHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVNb2RlOjpF
c2NhcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdFZh
bHVlOwotICAgIEFkZHJlc3NFc2NhcGVNb2RlIG1fYWRkcmVzc0VzY2FwZU1vZGU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShNYWtl
UG9pbnRlckV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVT
U0lPTihNYWtlUG9pbnRlckV4cHJlc3Npb24sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTQ2ZmRmYTJkMjVkM2E4N2Y1MmFlZDI4MWJlZTYwZDEy
OWQ0M2IwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi0vLyBEaWZmZXJlbnQgc2hhZGVy
IG1vZHVsZXMgb3BlcmF0ZSBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KLS8vIFRoaXMgbWVhbnMg
aXQncyBwb3NzaWJsZSB0byBoYXZlIHR3byBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBzaWduYXR1
cmVzLCBhcyBsb25nIGFzIHRoZXkgYXJlIGluIGRpZmZlcmVudCBtb2R1bGVzLgotZW51bSBjbGFz
cyBOYW1lU3BhY2UgOiB1aW50OF90IHsKLSAgICBTdGFuZGFyZExpYnJhcnkgPSAwLAotICAgIE5h
bWVTcGFjZTEgPSAxLAotICAgIE5hbWVTcGFjZTIgPSAyCi19OwotCi1jb25zdGV4cHIgdW5zaWdu
ZWQgbmFtZVNwYWNlQ291bnQgPSAzOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmIxMWY4YmEzMDY2ODg5NDZjYjdmMmYxOTdiNTk2YjVjYjM5NmMyNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBOYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0KLXByb3RlY3RlZDoKLSAgICB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6
Ci0gICAgTmFtZWRUeXBlKEtpbmQga2luZCwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcm
JiBuYW1lKQotICAgICAgICA6IFR5cGUoa2luZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihs
b2NhdGlvbikKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgTmFtZWRUeXBlKGNvbnN0IE5hbWVkVHlwZSYpID0gZGVsZXRlOwotICAgIE5hbWVkVHlw
ZShOYW1lZFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2Rl
TG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRp
b247IH0KLQotICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgTmFt
ZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNwYWNlOyB9Ci0gICAgdm9p
ZCBzZXROYW1lU3BhY2UoTmFtZVNwYWNlIG5hbWVTcGFjZSkgeyBtX25hbWVTcGFjZSA9IG5hbWVT
cGFjZTsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVu
aWZ5Tm9kZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVM
b2NhdGlvbjsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE5hbWVTcGFjZSBtX25hbWVTcGFjZSB7
IE5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShOYW1lZFR5cGUpCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShOYW1lZFR5cGUsIGlzTmFtZWRUeXBlKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZDlh
YWY1YmRlMmNhN2E4ZTM5YzU1Y2M1ODQ4MGIzY2E0MjhiN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KEZ1bmN0aW9uRGVjbGFyYXRpb24mJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICA6IEZ1
bmN0aW9uRGVjbGFyYXRpb24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVs
dDsKLQotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiYpID0gZGVsZXRlOwotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzTmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQot
cHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLCBpc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NGExNjJiNzgxN2Q0NzNhODJkZDk3
OTNhMGJlOTEyMzBhMzRlZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVm
ZXJlbmNlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uIGZpbmFs
IDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3Ry
aW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgICAgIDogTmFt
ZWRUeXBlKEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFt
ZSkpCi0gICAgICAgICwgbV90eXBlQXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0g
ICAgewotICAgIH0KLQotICAgIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0K
LSAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikg
PSBkZWxldGU7Ci0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkgeyBy
ZXR1cm4gbV90eXBlQXJndW1lbnRzOyB9Ci0KLSAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1
cm4gbV9pc0ludDsgfQotICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2lzTnVt
YmVyOyB9Ci0gICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zsb2F0aW5n
OyB9Ci0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdG9taWM7IH0KLSAg
ICBib29sIGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZlY3RvcjsgfQotICAgIGJvb2wg
aXNNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX2lzTWF0cml4OyB9Ci0gICAgYm9vbCBpc09wYXF1
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3BhcXVlVHlwZTsgfQotICAgIGJvb2wgaXNUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1RleHR1cmU7IH0KLSAgICBib29sIGlzVGV4dHVyZUFy
cmF5KCkgY29uc3QgeyByZXR1cm4gbV9pc1RleHR1cmVBcnJheTsgfQotICAgIGJvb2wgaXNEZXB0
aFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVwdGhUZXh0dXJlOyB9Ci0gICAgYm9vbCBp
c1dyaXRhYmxlVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNXcml0YWJsZVRleHR1cmU7IH0K
LSAgICBib29sIGlzQ3ViZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ3ViZVRleHR1cmU7
IH0KLSAgICB1aW50IHRleHR1cmVEaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVE
aW1lbnNpb247IH0KLSAgICBib29sIGlzU2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpZ25l
ZDsgfQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiYgY2FuUmVwcmVzZW50SW50
ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUmVwcmVzZW50SW50ZWdlcjsgfQotICAgIGNvbnN0
IHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiBjYW5SZXByZXNlbnRVbnNpZ25lZEludGVn
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcjsgfQotICAg
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+JiBjYW5SZXByZXNlbnRGbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuUmVwcmVzZW50RmxvYXQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGludDY0X3QoaW50NjRfdCk+JiBzdWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nl
c3NvcjsgfQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYgZm9ybWF0VmFs
dWVGcm9tSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlcjsg
fQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiBmb3JtYXRWYWx1
ZUZyb21VbnNpZ25lZEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZhbHVlRnJvbVVu
c2lnbmVkSW50ZWdlcjsgfQotICAgIHZvaWQgaXRlcmF0ZUFsbFZhbHVlcyhjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woaW50NjRfdCk+JiBjYWxsYmFjaykgeyBtX2l0ZXJhdGVBbGxWYWx1ZXMoY2Fs
bGJhY2spOyB9Ci1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1hdHJpeERpbWVuc2lvbih1bnNpZ25l
ZCB0eXBlQXJndW1lbnRJbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01hdHJpeCgpKTsK
LSAgICAgICAgQVNTRVJUKHR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIHJl
dHVybiBXVEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4odHlwZUFyZ3VtZW50cygpW3R5
cGVBcmd1bWVudEluZGV4XSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLXB1Ymxp
YzoKLSAgICB1bnNpZ25lZCBudW1iZXJPZk1hdHJpeFJvd3MoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1hdHJpeERpbWVuc2lvbigyKTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRy
aXhDb2x1bW5zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMSk7Ci0g
ICAgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgdmVjdG9yVHlwZUFyZ3VtZW50KCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpc1ZlY3RvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxB
U1Q6OlR5cGVSZWZlcmVuY2U+Pih0eXBlQXJndW1lbnRzKClbMF0pOwotICAgIH0KLQotICAgIHVu
c2lnbmVkIHZlY3RvclNpemUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmVjdG9yKCkpOwot
ICAgICAgICByZXR1cm4gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5cGVBcmd1
bWVudHMoKVsxXSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIH0KLQotICAgIFR5cGVS
ZWZlcmVuY2UmIG1hdHJpeFR5cGVBcmd1bWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNN
YXRyaXgoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNl
Pj4odHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldElzSW50KCkgeyBt
X2lzSW50ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNOdW1iZXIoKSB7IG1faXNOdW1iZXIgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0Zsb2F0aW5nKCkgeyBtX2lzRmxvYXRpbmcgPSB0cnVlOyB9
Ci0gICAgdm9pZCBzZXRJc0F0b21pYygpIHsgbV9pc0F0b21pYyA9IHRydWU7IH0KLSAgICB2b2lk
IHNldElzVmVjdG9yKCkgeyBtX2lzVmVjdG9yID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNNYXRy
aXgoKSB7IG1faXNNYXRyaXggPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc09wYXF1ZVR5cGUoKSB7
IG1faXNPcGFxdWVUeXBlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNUZXh0dXJlKCkgeyBtX2lz
VGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzVGV4dHVyZUFycmF5KCkgeyBtX2lzVGV4
dHVyZUFycmF5ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNEZXB0aFRleHR1cmUoKSB7IG1faXNE
ZXB0aFRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1dyaXRhYmxlVGV4dHVyZSgpIHsg
bV9pc1dyaXRhYmxlVGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ3ViZVRleHR1cmUo
KSB7IG1faXNDdWJlVGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldFRleHR1cmVEaW1lbnNp
b24odWludCB0ZXh0dXJlRGltZW5zaW9uKSB7IG1fdGV4dHVyZURpbWVuc2lvbiA9IHRleHR1cmVE
aW1lbnNpb247IH0KLSAgICB2b2lkIHNldElzU2lnbmVkKCkgeyBtX2lzU2lnbmVkID0gdHJ1ZTsg
fQotICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50SW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2woaW50
KT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRJbnRlZ2VyID0gV1RGTW92ZShjYW5S
ZXByZXNlbnQpOyB9Ci0gICAgdm9pZCBzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoc3Rk
OjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNl
bnRVbnNpZ25lZEludGVnZXIgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lkIHNl
dENhblJlcHJlc2VudEZsb2F0KHN0ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+JiYgY2FuUmVwcmVz
ZW50KSB7IG1fY2FuUmVwcmVzZW50RmxvYXQgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAg
ICB2b2lkIHNldFN1Y2Nlc3NvcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRfdCk+JiYgc3Vj
Y2Vzc29yKSB7IG1fc3VjY2Vzc29yID0gV1RGTW92ZShzdWNjZXNzb3IpOyB9Ci0gICAgdm9pZCBz
ZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiYmIGZv
cm1hdFZhbHVlKSB7IG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlciA9IFdURk1vdmUoZm9ybWF0VmFs
dWUpOyB9Ci0gICAgdm9pZCBzZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoc3RkOjpm
dW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVl
RnJvbVVuc2lnbmVkSW50ZWdlciA9IFdURk1vdmUoZm9ybWF0VmFsdWUpOyB9Ci0gICAgdm9pZCBz
ZXRJdGVyYXRlQWxsVmFsdWVzKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woaW50NjRfdCk+Jik+JiYgaXRlcmF0ZUFsbFZhbHVlcykgeyBtX2l0ZXJhdGVBbGxWYWx1
ZXMgPSBXVEZNb3ZlKGl0ZXJhdGVBbGxWYWx1ZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZUFy
Z3VtZW50cyBtX3R5cGVBcmd1bWVudHM7Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKGludCk+IG1f
Y2FuUmVwcmVzZW50SW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiBt
X2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxv
YXQpPiBtX2NhblJlcHJlc2VudEZsb2F0OwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2
NF90KT4gbV9zdWNjZXNzb3I7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+IG1fZm9y
bWF0VmFsdWVGcm9tSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQp
PiBtX2Zvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYpPiBtX2l0ZXJhdGVBbGxWYWx1
ZXM7Ci0gICAgdWludCBtX3RleHR1cmVEaW1lbnNpb24geyAwIH07Ci0gICAgYm9vbCBtX2lzSW50
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNOdW1iZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9p
c0Zsb2F0aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNBdG9taWMgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9pc1ZlY3RvciB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTWF0cml4IHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNPcGFxdWVUeXBlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUZXh0
dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUZXh0dXJlQXJyYXkgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9pc0RlcHRoVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzV3JpdGFibGVU
ZXh0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDdWJlVGV4dHVyZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2lzU2lnbmVkIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiwgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NDk5OGIxNDRjMWM0
YjE2NGI0ZWYyYzljOTBhYTJjZTRkMDg1NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IHVuc2lnbmVkIGRlcHRoKQotICAgICAgICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShsb2NhdGlv
bikKLSAgICAgICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICAgICAsIG1faGVpZ2h0KGhlaWdodCkK
LSAgICAgICAgLCBtX2RlcHRoKGRlcHRoKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5O
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUoY29uc3QgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikgPSBk
ZWxldGU7Ci0gICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2lkdGg7IH0KLSAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2hlaWdodDsgfQotICAgIHVuc2lnbmVkIGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aDsg
fQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbV9oZWln
aHQ7Ci0gICAgdW5zaWduZWQgbV9kZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlw
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWZiZGI2YWI0YTZmYjgzYmU1ZDM0
YzJkODg4YzAxNTA5OGUyNWRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBv
aW50ZXJUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0j
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IFBvaW50ZXJUeXBlIGZpbmFsIDogcHVibGljIFJlZmVyZW5jZVR5cGUgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJUeXBlKTsK
LSAgICB1c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsKLQotICAgIFBvaW50ZXJUeXBlKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRU
eXBlPiBlbGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2Us
IFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpQb2ludGVyKQotICAgIHsKLSAgICB9Ci0KLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBvaW50ZXJUeXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1l
bnRUeXBlKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFBvaW50
ZXJUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgflBvaW50ZXJUeXBlKCkgPSBkZWZh
dWx0OwotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy0+QmFzZTo6aGFzaCgpIF4gU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2goInBv
aW50ZXIiKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pbnRlclR5cGUm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90
aGVyLmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUo
KTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50b1N0cmluZygpLCAnKicpOwotICAgIH0K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKFBvaW50ZXJUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUG9p
bnRlclR5cGUsIGlzUG9pbnRlclR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYTIzZDBhMzU2Y2I3MzQ4YjQzNjAzZTc3NWJiMzg3
MmM2Nzc3NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHJvdGVjdGVkOgotICAgIH5Q
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQsIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlv
biwga2luZCkKLSAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShiYXNlKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNvbnN0IFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsg
cmV0dXJuIG1fYmFzZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYgYmFzZVJlZmVyZW5j
ZSgpIHsgcmV0dXJuIG1fYmFzZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlQmFz
ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9iYXNlKTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiBtX2Jhc2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNDg3N2RmMjJlZDIxNmQ2ZTBmMDNmNDdmNGNmMWY0ODgzN2I5YzgyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWVudW0gY2xhc3MgUXVhbGlmaWVyIDogdWludDhf
dCB7Ci0gICAgTm9pbnRlcnBvbGF0aW9uLAotICAgIE5vcGVyc3BlY3RpdmUsCi0gICAgVW5pZm9y
bSwKLSAgICBDZW50cm9pZCwKLSAgICBTYW1wbGUKLX07Ci0KLXVzaW5nIFF1YWxpZmllcnMgPSBW
ZWN0b3I8UXVhbGlmaWVyPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTAzZWM4
ZDE4MGM4YjU5Y2QxZGIxNGNmNWQ1NjdhYjA1MTY5ZTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDE0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVm
ZXJlbmNlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi0vKgotICogIDEuIEV2YWx1YXRl
IG1fbGVmdFZhbHVlCi0gKiAgMi4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9vbGRWYWx1ZQotICog
IDMuIEV2YWx1YXRlIG1fbmV3VmFsdWVFeHByZXNzaW9uCi0gKiAgNC4gQXNzaWduIHRoZSByZXN1
bHQgdG8gbV9uZXdWYWx1ZQotICogIDUuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbGVmdFZhbHVl
Ci0gKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCi0gKiAgNy4gUmV0dXJuIHRoZSBy
ZXN1bHQKLSAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IGxlZnRWYWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
LCBLaW5kOjpSZWFkTW9kaWZ5V3JpdGUpCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShs
ZWZ0VmFsdWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURl
Y2xhcmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVs
bHB0ciwgbnVsbHB0cikpCi0gICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlh
YmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygp
LCBudWxscHRyLCBudWxscHRyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBs
ZWZ0VmFsdWUsIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBvbGRWYWx1ZSwgVW5pcXVl
UmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG5ld1ZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIEtpbmQ6OlJlYWRNb2RpZnlXcml0ZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShX
VEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShXVEZNb3ZlKG9sZFZhbHVl
KSkKLSAgICAgICAgLCBtX25ld1ZhbHVlKFdURk1vdmUobmV3VmFsdWUpKQotICAgIHsKLSAgICB9
Ci0KLQotICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAg
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
JikgPSBkZWxldGU7Ci0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgc2V0TmV3VmFsdWVFeHByZXNz
aW9uKFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIG5ld1ZhbHVlRXhwcmVzc2lvbikKLSAgICB7Ci0g
ICAgICAgIG1fbmV3VmFsdWVFeHByZXNzaW9uID0gV1RGTW92ZShuZXdWYWx1ZUV4cHJlc3Npb24p
OwotICAgIH0KLQotICAgIHZvaWQgc2V0UmVzdWx0RXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiByZXN1bHRFeHByZXNzaW9uKQotICAgIHsKLSAgICAgICAgbV9yZXN1bHRFeHByZXNz
aW9uID0gV1RGTW92ZShyZXN1bHRFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8
VmFyaWFibGVSZWZlcmVuY2U+IG9sZFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5j
ZTo6d3JhcChtX29sZFZhbHVlKSk7Ci0gICAgfQotCi0gICAgVW5pcXVlUmVmPFZhcmlhYmxlUmVm
ZXJlbmNlPiBuZXdWYXJpYWJsZVJlZmVyZW5jZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9u
ZXdWYWx1ZSkpOwotICAgIH0KLQotICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJu
IG1fbGVmdFZhbHVlOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiBsZWZ0VmFsdWVSZWZl
cmVuY2UoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24m
IG9sZFZhbHVlKCkgeyByZXR1cm4gbV9vbGRWYWx1ZTsgfQotICAgIFZhcmlhYmxlRGVjbGFyYXRp
b24mIG5ld1ZhbHVlKCkgeyByZXR1cm4gbV9uZXdWYWx1ZTsgfQotICAgIEV4cHJlc3Npb24mIG5l
d1ZhbHVlRXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9uZXdWYWx1ZUV4cHJl
c3Npb24pOwotICAgICAgICByZXR1cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOwotICAgIH0KLSAg
ICBFeHByZXNzaW9uJiByZXN1bHRFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3Jlc3VsdEV4cHJlc3Npb24pOwotICAgICAgICByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsK
LSAgICB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VMZWZ0VmFsdWUoKSB7IHJldHVy
biBXVEZNb3ZlKG1fbGVmdFZhbHVlKTsgfQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0
aW9uPiB0YWtlT2xkVmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fb2xkVmFsdWUpOyB9Ci0gICAg
VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IHRha2VOZXdWYWx1ZSgpIHsgcmV0dXJuIFdU
Rk1vdmUobV9uZXdWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZU5ld1Zh
bHVlRXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IFdURk1vdmUobV9u
ZXdWYWx1ZUV4cHJlc3Npb24udmFsdWUoKSk7Ci0gICAgICAgIG1fbmV3VmFsdWVFeHByZXNzaW9u
LnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiB0YWtlUmVzdWx0RXhwcmVzc2lvbigpCi0gICAgewotICAgICAgICBhdXRvIHJl
c3VsdCA9IFdURk1vdmUobV9yZXN1bHRFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX3Jl
c3VsdEV4cHJlc3Npb24ucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdFZhbHVlOwotICAgIFVu
aXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX29sZFZhbHVlOwotICAgIFVuaXF1ZVJlZjxW
YXJpYWJsZURlY2xhcmF0aW9uPiBtX25ld1ZhbHVlOwotICAgIHN0ZDo6b3B0aW9uYWw8VW5pcXVl
UmVmPEV4cHJlc3Npb24+PiBtX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFs
PFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9yZXN1bHRFeHByZXNzaW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNl
VHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmFjZDMxNWMxYzIxNDM1Nzll
YTVkMGQyZTAyNWI1ZWM0ZWYwZTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlZmVyZW5jZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZmVyZW5jZVR5cGUpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflJlZmVyZW5jZVR5cGUoKSA9IGRl
ZmF1bHQ7Ci0KLXByb3RlY3RlZDoKLSAgICBSZWZlcmVuY2VUeXBlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50
VHlwZSwgS2luZCBraW5kKQotICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBraW5kKQot
ICAgICAgICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKLSAgICAgICAgLCBtX2VsZW1l
bnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQotICAgIHsKLSAgICB9Ci0KLQotcHVibGljOgot
ICAgIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NT
cGFjZTsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudFR5cGU7IH0KLSAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSB7IHJl
dHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiB+bV9lbGVtZW50VHlwZS0+aGFzaCgpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBZGRyZXNzU3BhY2UgbV9hZGRyZXNzU3BhY2U7Ci0gICAgUmVmPFVubmFtZWRUeXBl
PiBtX2VsZW1lbnRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoUmVmZXJlbmNlVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9UWVBFKFJlZmVyZW5jZVR5cGUsIGlzUmVmZXJlbmNlVHlwZSgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMTRmYmNjOGU3YmQwMWYzZGYwNTEzYzQwM2VkYmZjYmNh
NmY3YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IE5ldywgdHlwZW5hbWUgT2xkLCB0eXBlbmFtZSAuLi5BcmdzPgotQUxXQVlTX0lOTElORSBOZXcq
IHJlcGxhY2VXaXRoKE9sZCYgb2xkLCBBcmdzJiYuLi4gYXJncykKLXsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihOZXcpIDw9IHNpemVvZihPbGQpLCAiVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBw
bGFjZW1lbnQgbmV3IGJlbG93IHRvIG5vdCBvdmVyd3JpdGUgdW5vd25lZCBtZW1vcnkuIik7Ci0g
ICAgdm9pZCogbG9jYXRpb24gPSAmb2xkOwotICAgIE9sZDo6ZGVzdHJ1Y3Qob2xkKTsKLSAgICBy
ZXR1cm4gbmV3IChsb2NhdGlvbikgTmV3KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci19
Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpXSExTTDo6QVNUCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTIyYTFkN2VjY2VlMTI0MTg4NTVkZTUxNDc0ZmVlOWEyNGJi
NjE2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXNvbHZhYmxlVHlwZSA6IHB1
YmxpYyBUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgot
ICAgIH5SZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIFJlc29sdmFi
bGVUeXBlKEtpbmQga2luZCkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgeyB9Ci0KLQotICAg
IFJlc29sdmFibGVUeXBlKGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVz
b2x2YWJsZVR5cGUoUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgUmVzb2x2YWJs
ZVR5cGUmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwotICAgIFJl
c29sdmFibGVUeXBlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwotCi0g
ICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252
ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgY29uc3QgVW5uYW1l
ZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUg
PyAmKm1fcmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiBy
ZXNvbHZlZFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBl
KTsKLSAgICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICBVbm5hbWVk
VHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9y
ZXNvbHZlZFR5cGUgOiBudWxscHRyOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgp
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4g
Km1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHZvaWQgcmVzb2x2ZShSZWY8VW5uYW1lZFR5
cGU+IHR5cGUpCi0gICAgewotICAgICAgICBtX3Jlc29sdmVkVHlwZSA9IFdURk1vdmUodHlwZSk7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV9yZXNvbHZlZFR5
cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShSZXNvbHZhYmxlVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9U
WVBFKFJlc29sdmFibGVUeXBlLCBpc1Jlc29sdmFibGVUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJi
N2Y4YzcyMTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2Vt
YW50aWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNl
LmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlw
ZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFJlZmVy
ZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9v
bCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1
bm5hbWVkVHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBz
d2l0Y2ggKG1fbW9kZSkgewotICAgIGNhc2UgTW9kZTo6VW5vcmRlcmVkQWNjZXNzVmlldzoKLSAg
ICAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAg
YXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBl
KTsKLSAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09IEFk
ZHJlc3NTcGFjZTo6Q29uc3RhbnQgfHwgcmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSA9PSBB
ZGRyZXNzU3BhY2U6OkRldmljZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXM8VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0g
ZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgaWYgKGlz
PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlw
ZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6VGV4dHVyZToKLSAgICAgICAgaWYgKGlz
PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1Nw
YWNlOjpDb25zdGFudDsKLSAgICAgICAgaWYgKGlzPEFycmF5VHlwZT4odW5uYW1lZFR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChpczxUeXBlUmVmZXJlbmNlPih1
bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2Fz
dDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBpZiAoaXM8TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpKS5pc1RleHR1cmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY2FzZSBNb2RlOjpCdWZmZXI6Ci0gICAgICAgIGlmIChpczxSZWZlcmVu
Y2VUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVmZXJl
bmNlVHlwZT4odW5uYW1lZFR5cGUpLmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NTcGFjZTo6Q29u
c3RhbnQ7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlNhbXBsZXI6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnNhbXBsZXJUeXBl
KCkpOwotICAgIH0KLX0KLQotYm9vbCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVzb3VyY2VTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGQ1
ZWQzN2U4YWI5N2ZmN2E1OTAyZDdmMWVhZWJmYTY1NWVhYzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEw
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldI
TFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgUmVzb3VyY2VTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4
X3QgewotICAgICAgICBVbm9yZGVyZWRBY2Nlc3NWaWV3LAotICAgICAgICBUZXh0dXJlLAotICAg
ICAgICBCdWZmZXIsCi0gICAgICAgIFNhbXBsZXIKLSAgICB9OwotCi0gICAgUmVzb3VyY2VTZW1h
bnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVu
c2lnbmVkIHNwYWNlKQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICAgICAg
LCBtX21vZGUobW9kZSkKLSAgICAgICAgLCBtX2luZGV4KGluZGV4KQotICAgICAgICAsIG1fc3Bh
Y2Uoc3BhY2UpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflJlc291cmNlU2VtYW50aWMo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBSZXNvdXJjZVNlbWFudGljKGNvbnN0IFJlc291cmNlU2VtYW50
aWMmKSA9IGRlbGV0ZTsKLSAgICBSZXNvdXJjZVNlbWFudGljKFJlc291cmNlU2VtYW50aWMmJikg
PSBkZWZhdWx0OwotCi0gICAgU3RyaW5nVmlldyB0b1N0cmluZygpCi0gICAgewotICAgICAgICBz
d2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc6
Ci0gICAgICAgICAgICByZXR1cm4gIlVub3JkZXJlZEFjY2Vzc1ZpZXciOwotICAgICAgICBjYXNl
IE1vZGU6OlRleHR1cmU6Ci0gICAgICAgICAgICByZXR1cm4gIlRleHR1cmUiOwotICAgICAgICBj
YXNlIE1vZGU6OkJ1ZmZlcjoKLSAgICAgICAgICAgIHJldHVybiAiQnVmZmVyIjsKLSAgICAgICAg
Y2FzZSBNb2RlOjpTYW1wbGVyOgotICAgICAgICAgICAgcmV0dXJuICJTYW1wbGVyIjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQot
ICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQotICAgIHVuc2ln
bmVkIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fbW9kZSA9PSBvdGhlci5tX21vZGUgJiYgbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
ICYmIG1fc3BhY2UgPT0gb3RoZXIubV9zcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVzb3VyY2VTZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVU
eXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVt
RGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92
ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIE1vZGUgbV9tb2RlOwotICAgIHVuc2lnbmVkIG1faW5k
ZXg7Ci0gICAgdW5zaWduZWQgbV9zcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYmI1NmJjODBmODA1MDliODhmMTRjNmJlYTc5Zjky
ODZlZGE0MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgUmV0dXJuIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUmV0dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgdmFsdWUpCi0gICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uLCBLaW5kOjpSZXR1cm4pCi0gICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZh
bHVlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflJldHVybigpID0gZGVmYXVsdDsKLQotICAgIFJl
dHVybihjb25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKLSAgICBSZXR1cm4oUmV0dXJuJiYpID0gZGVm
YXVsdDsKLQotICAgIEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsg
fQotCi1wcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ZhbHVlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoUmV0dXJuKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1
cm4sIGlzUmV0dXJuKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1h
bnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2Vt
YW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3YmE2MmJlMGQ1N2ZiNGFj
MTk3ZDcyZDQwNDA4NmQ1MjU3MmU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMu
aCIKLSNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgotI2lu
Y2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotdXNpbmcgU2VtYW50aWMgPSBWYXJpYW50PEJ1aWx0SW5TZW1hbnRpYywgUmVz
b3VyY2VTZW1hbnRpYywgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLCBTdGFnZUluT3V0
U2VtYW50aWM+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTRmMDE1Mzk0ZTFmNjZlYTY3NDU3NDFkNzA3OTlkNmEyZDViZWE0ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBl
RGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Ym9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QKLXsK
LSAgICBpZiAoIWlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNl
Pih1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZl
ZFR5cGUoKSkuaXNOdW1iZXIoKTsKLX0KLQotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVj
dGlvbiBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29u
c3QKLXsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjM5ZWMxOTZm
ODk5NWMyMDk1ZWQxZTJjMDRmODhmZTg4ZDFjOGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBCYXNl
U2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAg
ICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljJikgPSBkZWxldGU7Ci0gICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25z
dCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsK
LQotcHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmRjNjQ5NjViMzIzMTY1NTA5
ZWM2MWNjZTJkYjRhOTY4MGViZDMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91
dFNlbWFudGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1ib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAotewotICAg
IGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4o
dW5uYW1lZFR5cGUpOwotICAgIGF1dG8mIHJlc29sdmVkVHlwZSA9IHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCk7Ci0gICAgaWYgKGlzPEVudW1lcmF0aW9uRGVmaW5pdGlvbj4ocmVzb2x2ZWRU
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KHJlc29sdmVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5
cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFy
YXRpb24uaXNOdW1iZXIoKQotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0
b3IoKQotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKLX0KLQot
Ym9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rp
b24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50
cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRy
eVBvaW50VHlwZSkgewotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci0gICAgY2Fz
ZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzBlMjNjYWE0ZDdlMjEyZjYyYTBjNTM2YTdlM2FjOWY0YTEz
Nzk3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFz
ZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTdGFnZUluT3V0U2VtYW50aWMgOiBwdWJs
aWMgQmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBTdGFnZUluT3V0U2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCBp
bmRleCkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0gICAgICAgICwgbV9pbmRl
eChpbmRleCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGlj
KCkgPSBkZWZhdWx0OwotCi0gICAgU3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRT
ZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2Vt
YW50aWMmJikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RhZ2VJbk91dFNlbWFu
dGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVy
Lm1faW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0YWdlSW5PdXRT
ZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRU
eXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRl
OgotICAgIHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGRjZmQ3NjNmYTFjZTg4Y2NlMjQwODAwNTc2
MTc4YjU3MjU2NjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVu
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29k
ZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3RlY3Rl
ZDoKLSAgICB+U3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBLaW5kIDogdWludDhfdCB7Ci0gICAgICAgIEJsb2NrLAotICAgICAgICBCcmVhaywKLSAgICAg
ICAgQ29udGludWUsCi0gICAgICAgIERvV2hpbGVMb29wLAotICAgICAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uLAotICAgICAgICBGYWxsdGhyb3VnaCwKLSAgICAgICAgRm9yTG9vcCwKLSAgICAgICAg
SWYsCi0gICAgICAgIFJldHVybiwKLSAgICAgICAgU3RhdGVtZW50TGlzdCwKLSAgICAgICAgU3dp
dGNoQ2FzZSwKLSAgICAgICAgU3dpdGNoLAotICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywK
LSAgICAgICAgV2hpbGVMb29wLAotICAgIH07Ci0gICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24sIEtpbmQga2luZCkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9j
YXRpb24pCi0gICAgICAgICwgbV9raW5kKGtpbmQpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koU3RhdGVtZW50Jik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoU3Rh
dGVtZW50Jik7Ci0KLSAgICBTdGF0ZW1lbnQoY29uc3QgU3RhdGVtZW50JikgPSBkZWxldGU7Ci0g
ICAgU3RhdGVtZW50KFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLQotICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpCbG9jazsgfQotICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpCcmVhazsgfQotICAgIGJvb2wgaXNDb250aW51ZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDb250aW51ZTsgfQotICAgIGJvb2wgaXNEb1do
aWxlTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb1doaWxlTG9vcDsgfQot
ICAgIGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb247IH0KLSAgICBib29sIGlzRmFsbHRo
cm91Z2goKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmFsbHRocm91Z2g7IH0KLSAg
ICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGb3JMb29w
OyB9Ci0gICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OklmOyB9Ci0gICAgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpSZXR1cm47IH0KLSAgICBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpTdGF0ZW1lbnRMaXN0OyB9Ci0gICAgYm9vbCBpc1N3aXRjaENhc2Uo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoQ2FzZTsgfQotICAgIGJvb2wg
aXNTd2l0Y2hTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNo
OyB9Ci0gICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0gICAgYm9vbCBp
c1doaWxlTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpXaGlsZUxvb3A7IH0K
LQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVM
b2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29k
ZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIEtpbmQgbV9raW5kOwotfTsKLQotdXNpbmcg
U3RhdGVtZW50cyA9IFZlY3RvcjxVbmlxdWVSZWY8U3RhdGVtZW50Pj47Ci0KLX0KLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShTdGF0ZW1lbnQpCi0KLSNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUp
IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9W
YWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGlj
YXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MwMjczODczZjFhNjIwNGU3OTkxZWU3MTczMjcw
NzQ0MTVmZjU2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVE
ZWZpbml0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRU
eXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1
cmVEZWZpbml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgU3RydWN0
dXJlRWxlbWVudHMmJiBzdHJ1Y3R1cmVFbGVtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUoS2lu
ZDo6U3RydWN0dXJlRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0gICAgICAg
ICwgbV9zdHJ1Y3R1cmVFbGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgflN0cnVjdHVyZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBT
dHJ1Y3R1cmVEZWZpbml0aW9uKGNvbnN0IFN0cnVjdHVyZURlZmluaXRpb24mKSA9IGRlbGV0ZTsK
LSAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKFN0cnVjdHVyZURlZmluaXRpb24mJikgPSBkZWZhdWx0
OwotCi0gICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVyZUVsZW1lbnRzKCkgeyByZXR1cm4g
bV9zdHJ1Y3R1cmVFbGVtZW50czsgfQotICAgIFN0cnVjdHVyZUVsZW1lbnQqIGZpbmQoY29uc3Qg
U3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9p
ZihtX3N0cnVjdHVyZUVsZW1lbnRzLmJlZ2luKCksIG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCks
IFsmXShTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KSAtPiBib29sIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSA9PSBuYW1lOwotICAgICAgICB9
KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fc3RydWN0dXJlRWxlbWVudHMuZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICYqaXRlcmF0b3I7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIFN0cnVjdHVyZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVu
dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShTdHJ1Y3R1cmVEZWZpbml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1RZUEUoU3RydWN0dXJlRGVmaW5pdGlvbiwgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVt
ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYzI4NmNmMmQwMmYzYzQwZGVk
YzZiOGE0YTNlY2QyZmEwZGVjYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgot
I2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgU3RydWN0dXJlRWxlbWVudCBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmlu
ZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKLSAgICAgICAg
OiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX3F1YWxpZmllcnMoV1RGTW92
ZShxdWFsaWZpZXJzKSkKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAgICAg
LCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUoc2Vt
YW50aWMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3RydWN0dXJlRWxlbWVudCgpID0gZGVmYXVs
dDsKLQotICAgIFN0cnVjdHVyZUVsZW1lbnQoY29uc3QgU3RydWN0dXJlRWxlbWVudCYpID0gZGVs
ZXRlOwotICAgIFN0cnVjdHVyZUVsZW1lbnQoU3RydWN0dXJlRWxlbWVudCYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5
cGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBT
ZW1hbnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljLmdldCgpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFF1YWxpZmllcnMgbV9x
dWFsaWZpZXJzOwotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIFN0cmluZyBtX25h
bWU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotfTsKLQotdXNp
bmcgU3RydWN0dXJlRWxlbWVudHMgPSBWZWN0b3I8U3RydWN0dXJlRWxlbWVudD47Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaENhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN3aXRjaENhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZGM3
YTVjOWVlYTk1NTViZGE3YzQ2NDIxYjNlODVlYTRlZGYzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNM
U3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
U3dpdGNoQ2FzZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9j
aykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCi0gICAg
ICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUo
YmxvY2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKLQot
ICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwotICAgIFN3aXRjaENh
c2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50
RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIEJsb2NrJiBibG9j
aygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPENv
bnN0YW50RXhwcmVzc2lvbj4gbV92YWx1ZTsKLSAgICBCbG9jayBtX2Jsb2NrOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3dpdGNo
Q2FzZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoQ2Fz
ZSwgaXNTd2l0Y2hDYXNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MzI5MzJhMzM4Y2E5Y2Y0YjM3NGE1NjE0ZWZhZmZjZjAxMjU2ZDRiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgU3dpdGNoU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3dpdGNoU3RhdGVtZW50KENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxTd2l0
Y2hDYXNlPiYmIHN3aXRjaENhc2VzKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2lu
ZDo6U3dpdGNoKQotICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwg
bV9zd2l0Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
flN3aXRjaFN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIFN3aXRjaFN0YXRlbWVudChjb25z
dCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNo
U3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQotICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJl
dHVybiBtX3N3aXRjaENhc2VzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Np
b24+IG1fdmFsdWU7Ci0gICAgVmVjdG9yPFN3aXRjaENhc2U+IG1fc3dpdGNoQ2FzZXM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShT
d2l0Y2hTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5U
KFN3aXRjaFN0YXRlbWVudCwgaXNTd2l0Y2hTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDhlNDQ5MjIwNWM1ZTcwY2NmNTkyYzg2ZGI1N2IwMzMx
NWExMzg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNz
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgVGVybmFyeUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBwcmVkaWNhdGUsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNz
aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpUZXJuYXJ5KQotICAgICAgICAsIG1fcHJlZGljYXRl
KFdURk1vdmUocHJlZGljYXRlKSkKLSAgICAgICAgLCBtX2JvZHlFeHByZXNzaW9uKFdURk1vdmUo
Ym9keUV4cHJlc3Npb24pKQotICAgICAgICAsIG1fZWxzZUV4cHJlc3Npb24oV1RGTW92ZShlbHNl
RXhwcmVzc2lvbikpCi0gICAgewotICAgIH0KLQotICAgIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0g
ZGVmYXVsdDsKLQotICAgIFRlcm5hcnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9u
JikgPSBkZWxldGU7Ci0gICAgVGVybmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4gbV9wcmVk
aWNhdGU7IH0KLSAgICBFeHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fYm9k
eUV4cHJlc3Npb247IH0KLSAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJu
IG1fZWxzZUV4cHJlc3Npb247IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9wcmVkaWNhdGU7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYm9keUV4cHJlc3Np
b247Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fZWxzZUV4cHJlc3Npb247Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUZXJu
YXJ5RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KFRlcm5hcnlFeHByZXNzaW9uLCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFmODgyZGQ5OTFiODBkOWY1NWQ1YTAxYmNiMzhiMDhjNzc4ZGQ5NmQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBl
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5UeXBl
KCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7
Ci0gICAgICAgIC8vIFVubmFtZWRUeXBlcwotICAgICAgICBUeXBlUmVmZXJlbmNlLAotICAgICAg
ICBQb2ludGVyLAotICAgICAgICBBcnJheVJlZmVyZW5jZSwKLSAgICAgICAgQXJyYXksCi0gICAg
ICAgIC8vIE5hbWVkVHlwZXMKLSAgICAgICAgVHlwZURlZmluaXRpb24sCi0gICAgICAgIFN0cnVj
dHVyZURlZmluaXRpb24sCi0gICAgICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiwKLSAgICAgICAg
TmF0aXZlVHlwZURlY2xhcmF0aW9uLAotICAgICAgICAvLyBSZXNvbHZhYmxlVHlwZXMKLSAgICAg
ICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCwKLSAgICB9OwotCi0gICAgVHlwZShLaW5kIGtpbmQpCi0gICAgICAg
IDogbV9raW5kKGtpbmQpCi0gICAgeyB9Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShUeXBlJik7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVHlwZSYpOwotCi0gICAgZXhwbGljaXQgVHlwZShj
b25zdCBUeXBlJikgPSBkZWxldGU7Ci0gICAgVHlwZShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAg
IFR5cGUmIG9wZXJhdG9yPShjb25zdCBUeXBlJikgPSBkZWxldGU7Ci0gICAgVHlwZSYgb3BlcmF0
b3I9KFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kOyB9Ci0KLSAgICBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPj0gS2luZDo6VHlwZVJlZmVyZW5jZSAmJiBraW5kKCkgPD0gS2luZDo6QXJyYXk7IH0KLSAg
ICBib29sIGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVE
ZWZpbml0aW9uICYmIGtpbmQoKSA8PSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb247IH0KLSAg
ICBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6
RmxvYXRMaXRlcmFsICYmIGtpbmQoKSA8PSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9
Ci0KLSAgICBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpUeXBlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc1BvaW50ZXJUeXBlKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OlBvaW50ZXI7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVu
Y2VUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlOyB9
Ci0gICAgYm9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpB
cnJheTsgfQotICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNQb2lu
dGVyVHlwZSgpIHx8IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCk7IH0KLQotICAgIGJvb2wgaXNUeXBl
RGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUeXBlRGVmaW5pdGlv
bjsgfQotICAgIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb247IH0KLSAgICBib29sIGlzRW51bWVyYXRp
b25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbjsgfQotICAgIGJvb2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9Ci0KLSAgICBi
b29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpG
bG9hdExpdGVyYWw7IH0KLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc1Vuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOwotICAgIGNv
bnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxUeXBlKj4odGhpcyktPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBL
aW5kIG1fa2luZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5F
X0RFRkFVTFRfREVMRVRFKFR5cGUpCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlJiB0eXBl
KSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3Vt
ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0ZTEwYmY3NTQyOWQ4NjZm
NjQ0NTUwNTNhOTQzMTEyOGJjN2Y1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlQXJndW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFu
dEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotVHlw
ZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQotewot
ICAgIFR5cGVBcmd1bWVudHMgcmVzdWx0OwotICAgIGZvciAoY29uc3QgYXV0byYgdHlwZUFyZ3Vt
ZW50IDogdHlwZUFyZ3VtZW50cykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjbG9uZSh0eXBlQXJn
dW1lbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1UeXBlQXJndW1lbnQgY2xvbmUoY29u
c3QgVHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhw
cmVzc2lvbikgLT4gVHlwZUFyZ3VtZW50IHsKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVz
c2lvbi5jbG9uZSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxUeXBlUmVmZXJlbmNlPiYgdHlwZVJl
ZmVyZW5jZSkgLT4gVHlwZUFyZ3VtZW50IHsKLSAgICAgICAgcmV0dXJuIHR5cGVSZWZlcmVuY2Uu
Y29weVJlZigpOwotICAgIH0pLCB0eXBlQXJndW1lbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJn
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVBcmd1bWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTJhMzJlYjZlYjUx
ODFkZjMwNjgyYmEyZTRkMjNmMjI1ZDMxNzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVBcmd1bWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci0KLXVzaW5nIFR5cGVBcmd1bWVudCA9IFZh
cmlhbnQ8Q29uc3RhbnRFeHByZXNzaW9uLCBSZWY8VHlwZVJlZmVyZW5jZT4+OwotdXNpbmcgVHlw
ZUFyZ3VtZW50cyA9IFZlY3RvcjxUeXBlQXJndW1lbnQ+OwotCi1UeXBlQXJndW1lbnQgY2xvbmUo
Y29uc3QgVHlwZUFyZ3VtZW50Jik7Ci1UeXBlQXJndW1lbnRzIGNsb25lKGNvbnN0IFR5cGVBcmd1
bWVudHMmKTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUyOTA1NTdiZWVlZmIwZmU0ZTIwY2IxOGYxODZiMjEyYzQzZGI4
NzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAor
KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IFR5cGVEZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVHlwZURlZmluaXRpb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAg
IDogTmFtZWRUeXBlKEtpbmQ6OlR5cGVEZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1l
KSkKLSAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
flR5cGVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgVHlwZURlZmluaXRpb24oY29uc3Qg
VHlwZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5p
dGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1f
dHlwZTsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVu
aWZ5Tm9kZUltcGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7
Ci0gICAgfQotCi0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlRGVmaW5pdGlv
bikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFR5cGVEZWZpbml0aW9uLCBp
c1R5cGVEZWZpbml0aW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
YjMzMWMzMmQ1NTQwZjYzMWMxNDFmMmJjNDY5MWExODIxODRhZWJkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVSZWZlcmVuY2UuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1SZWY8VHlwZVJlZmVyZW5jZT4gVHlwZVJlZmVyZW5jZTo6d3JhcChD
b2RlTG9jYXRpb24gbG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotewotICAgIFR5
cGVBcmd1bWVudHMgdHlwZUFyZ3VtZW50czsKLSAgICBpZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPihyZXNvbHZlZFR5cGUpKQotICAgICAgICB0eXBlQXJndW1lbnRzID0gQVNUOjpjbG9uZShk
b3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVkVHlwZSkudHlwZUFyZ3VtZW50
cygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwg
U3RyaW5nKHJlc29sdmVkVHlwZS5uYW1lKCkpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKTsKLSAg
ICByZXN1bHQtPnNldFJlc29sdmVkVHlwZShyZXNvbHZlZFR5cGUpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjZkZWVlZmZlYWIwN2QwNDA0OWE4NTQ2Mjc3NzFjZWYzMDYyYmQ0Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3Vt
ZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBOYW1lZFR5cGU7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgVW5uYW1l
ZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFR5cGVSZWZlcmVuY2UpOwotICAgIFR5cGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAg
ICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6VHlwZVJlZmVyZW5jZSkKLSAgICAg
ICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RG
TW92ZSh0eXBlQXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8VHlwZVJlZmVyZW5jZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYg
bmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKiBuZXcgVHlwZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZSh0eXBlQXJndW1lbnRzKSkpOwotICAgIH0KLQotICAgIH5UeXBlUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwotCi0gICAgc3RhdGljIFJlZjxUeXBlUmVmZXJlbmNlPiB3cmFwKENvZGVMb2Nh
dGlvbiwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpOwotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyBy
ZXR1cm4gbV9uYW1lOyB9Ci0gICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0
dXJuIG1fdHlwZUFyZ3VtZW50czsgfQotICAgIE5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZTsgfQotICAgIE5hbWVkVHlwZSYgcmVzb2x2
ZWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0g
ICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSZXNv
bHZlZFR5cGUoTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCi0gICAgewotICAgICAgICBtX3Jlc29s
dmVkVHlwZSA9ICZyZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0Ci0gICAgewotICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkgdXNlIHRoaXMgZnVuY3Rp
b24gYWZ0ZXIgdGhlIG5hbWUgcmVzb2x2ZXIgcnVucy4KLSAgICAgICAgLy8gUmVseWluZyBvbiBo
YXZpbmcgYSByZXNvbHZlZCB0eXBlIHNpbXBsaWZpZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KLSAg
ICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFz
aDxjb25zdCBUeXBlKj46Omhhc2goJnVuaWZ5Tm9kZSgpKTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVHlwZVJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gJnVuaWZ5Tm9kZSgpID09
ICZvdGhlci51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJu
IG1fcmVzb2x2ZWRUeXBlLT5uYW1lKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlm
eU5vZGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFR5cGVBcmd1bWVudHMg
bV90eXBlQXJndW1lbnRzOwotICAgIE5hbWVkVHlwZSogbV9yZXNvbHZlZFR5cGUgeyBudWxscHRy
IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShUeXBlUmVmZXJlbmNlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZ
UEUoVHlwZVJlZmVyZW5jZSwgaXNUeXBlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFkOTBlNzg0MjUxMzc0OWE5OGVhZjZiZmNmZGViYzI2NzAzZDQ3N2YuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldI
TFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi11bnNpZ25lZCBVbm5hbWVkVHlwZTo6aGFz
aCgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChraW5kKCkpIHsKLSAgICBjYXNlIEtpbmQ6OlR5cGVS
ZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcyku
aGFzaCgpOwotICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFBvaW50ZXJUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVu
Y2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS5o
YXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFy
cmF5VHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotYm9vbCBVbm5hbWVkVHlwZTo6b3BlcmF0
b3I9PShjb25zdCBVbm5hbWVkVHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG90aGVyLmtp
bmQoKSAhPSBraW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoa2lu
ZCgpKSB7Ci0gICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93
bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpID09IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG90
aGVyKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxQ
b2ludGVyVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PFBvaW50ZXJUeXBlPihvdGhlcik7Ci0gICAg
Y2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5
UmVmZXJlbmNlVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3Ro
ZXIpOwotICAgIGNhc2UgS2luZDo6QXJyYXk6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJh
eVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVR5cGU+KG90aGVyKTsKLSAgICBkZWZhdWx0
OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVk
VHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTgxZTVlMzg3OTQxYzYyODdl
NDg3ZjEyODU1NTY0ZDNlMGRkYjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFVubmFtZWRUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFVubmFtZWRUeXBlIDogcHVi
bGljIFR5cGUsIHB1YmxpYyBSZWZDb3VudGVkPFVubmFtZWRUeXBlPiB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5uYW1lZFR5cGUpOwot
cHVibGljOgotICAgIFVubmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5k
KQotICAgICAgICA6IFR5cGUoa2luZCkKLSAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlv
bikKLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3Q7Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlw
ZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2Rl
TG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlwZSkKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9UWVBFKFVubmFtZWRUeXBlLCBpc1VubmFtZWRUeXBlKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZUhhc2guaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTY3YzBkNzRiYjI2ZjQxOThkMTZmNjJh
N2EzYjY3YTRiYTUyZjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFt
ZWRUeXBlSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgVW5uYW1lZFR5cGVL
ZXkgewotcHVibGljOgotICAgIFVubmFtZWRUeXBlS2V5KCkgPSBkZWZhdWx0OwotICAgIFVubmFt
ZWRUeXBlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3R5
cGUoYml0d2lzZV9jYXN0PEFTVDo6VW5uYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgVW5uYW1lZFR5cGVLZXkoQVNUOjpVbm5hbWVkVHlw
ZSYgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUoJnR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGJv
b2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1fdHlwZTsgfQotICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gYml0d2lzZV9j
YXN0PEFTVDo6VW5uYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0g
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS0+aGFzaCgpOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlS2V5JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gKm1fdHlwZSA9PSAqb3RoZXIubV90eXBlOyB9Ci0gICAgQVNUOjpVbm5hbWVkVHlwZSYgdW5u
YW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiAqbV90eXBlOyB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7
Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VW5uYW1lZFR5cGVLZXkmIGEsIGNvbnN0IFVubmFtZWRUeXBlS2V5JiBiKSB7IHJldHVybiBhID09
IGI7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IHRydWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUcmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8VW5uYW1lZFR5cGVLZXk+IHsKLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgVW5uYW1lZFR5cGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmlz
RW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAgICBBU1Q6OlVubmFtZWRUeXBl
KiBtX3R5cGUgeyBudWxscHRyIH07Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBl
S2V5PiA6IFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleTo6VHJhaXRzIHsgfTsKLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleT4g
OiBXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk6Okhhc2ggeyB9OwotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ3YWZiNDE4MjYyZjc4YzExOThmM2U4ODEzMGM4MDY2MzA0OTE3NzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotaW50NjRfdCBV
bnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Ci17Ci0g
ICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KG1fdHlwZS5y
ZXNvbHZlZFR5cGUoKSk7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNh
c3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsK
LSAgICByZXR1cm4gbmF0aXZlVHlwZURlY2xhcmF0aW9uLmZvcm1hdFZhbHVlRnJvbVVuc2lnbmVk
SW50ZWdlcigpKG1fdmFsdWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMDE2ZTVj
MjI3MjE5NDYzNGM0YTA3NjRmZjdkNjEzNDYyZTQ0NzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHZh
bHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpCi0gICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bCgpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29uc3QgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwo
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVs
ZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNsb25lKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVM
b2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9u
ZSgpOwotICAgICAgICBpZiAoYXV0byogcmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2
ZWRUeXBlKCkpCi0gICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxB
U1Q6OlVubmFtZWRUeXBlJj4oKnJlc29sdmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgaW50NjRfdCB2YWx1
ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlIG1fdHlwZTsKLSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5NWQyMWZhYTA0ZTQ3ODFhMDIxMGMzZDQ0YTk3NjU1YjAyNTQzYTZjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQg
dmFsdWUpCi0gICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
KQotICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJl
bmNlOjpjcmVhdGUobG9jYXRpb24sICJ1aW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCi17Ci19
Ci0KLWJvb2wgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlw
ZSYgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+
KHR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0g
ZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0
aXZlVHlwZURlY2xhcmF0aW9uLmlzSW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc1NpZ25lZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50VW5zaWduZWRJ
bnRlZ2VyKCkobV92YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdW5zaWduZWQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25D
b3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBpZiAobWF0
Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgcmV0dXJuIDE7Ci19Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUgcmVzdWx0KG1fcHJlZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUp
OwotICAgIGlmIChhdXRvKiB0eXBlID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVz
dWx0LnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICBy
ZXN1bHQubV9wcmVmZXJyZWRUeXBlID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE3ZWQz
OWY4OGRmNDg1NTZmMGE3ODNiMjFhMzRiZDQ4NTQyZjcyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNl
OwotCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNv
bHZhYmxlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCB1bnNpZ25lZCB2YWx1ZSk7
Ci0KLSAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRl
bGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVk
VHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZl
KGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBV
bm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xv
bmUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3ZhbHVlOwotICAgIC8vIFRo
aXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdl
ZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVy
ZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgotICAgIFJlZjxUeXBl
UmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MThiNmNkZGJhNDFjOWM2MDUwMWEyZjkw
ZTM2OTczOTk2ZDhjOWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotLy8gRmluYWwgYmVjYXVzZSB3ZSBtYWRlIHRoZSBk
ZXN0cnVjdG9yIG5vbi12aXJ0dWFsLgotcHVibGljOgotICAgIHN0cnVjdCBSYXJlRGF0YSB7Ci0g
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgUmFyZURhdGEo
UXVhbGlmaWVycyYmIHF1YWxpZmllcnNBcmd1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGlj
PiYmIHNlbWFudGljQXJndW1lbnQpCi0gICAgICAgICAgICA6IHF1YWxpZmllcnMoV1RGTW92ZShx
dWFsaWZpZXJzQXJndW1lbnQpKQotICAgICAgICAgICAgLCBzZW1hbnRpYyhXVEZNb3ZlKHNlbWFu
dGljQXJndW1lbnQpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgUXVhbGlmaWVycyBx
dWFsaWZpZXJzOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IHNlbWFudGljOwot
ICAgIH07Ci0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRp
b24sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWZQdHI8VW5uYW1lZFR5cGU+IHR5cGUsIFN0
cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgc3RkOjp1
bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgaW5pdGlhbGl6ZXIpCi0gICAgICAgIDogbV9jb2RlTG9j
YXRpb24oY29kZUxvY2F0aW9uKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAg
ICAgICAsIG1faW5pdGlhbGl6ZXIoV1RGTW92ZShpbml0aWFsaXplcikpCi0gICAgICAgICwgbV9u
YW1lKFdURk1vdmUobmFtZSkpCi0gICAgewotICAgICAgICBpZiAoc2VtYW50aWMgfHwgIXF1YWxp
ZmllcnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFy
ZURhdGE+KFdURk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKLSAgICB9Ci0K
LSAgICB+VmFyaWFibGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlRGVj
bGFyYXRpb24oY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwotICAgIFZhcmlh
YmxlRGVjbGFyYXRpb24oVmFyaWFibGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBT
dHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIC8vIFdlIHVzZSB0aGlzIGZv
ciBSZWFkTW9kaWZ5V3JpdGUgZXhwcmVzc2lvbnMsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHR5
cGUgb2YgdGhlaXIKLSAgICAvLyBpbnRlcm5hbCB2YXJpYWJsZXMgdW50aWwgdGhlIGNoZWNrZXIg
cnVucy4gQWxsIG90aGVyIHZhcmlhYmxlcyBzaG91bGQgc3RhcnQgbGlmZSBvdXQKLSAgICAvLyB3
aXRoIGEgdHlwZS4KLSAgICB2b2lkIHNldFR5cGUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX3R5cGUpOwotICAgICAgICBtX3R5cGUgPSBXVEZNb3ZlKHR5
cGUpOwotICAgIH0KLSAgICBjb25zdCBSZWZQdHI8VW5uYW1lZFR5cGU+JiB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVybiBtX3R5
cGUgPyAmKm1fdHlwZSA6IG51bGxwdHI7IH0KLSAgICBFeHByZXNzaW9uKiBpbml0aWFsaXplcigp
IHsgcmV0dXJuIG1faW5pdGlhbGl6ZXIuZ2V0KCk7IH0KLSAgICBib29sIGlzQW5vbnltb3VzKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+IHRha2VJbml0aWFsaXplcigpIHsgcmV0dXJuIFdURk1vdmUobV9pbml0aWFsaXpl
cik7IH0KLSAgICB2b2lkIHNldEluaXRpYWxpemVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBleHByZXNzaW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpbml0aWFsaXplcigpKTsKLSAg
ICAgICAgQVNTRVJUKGV4cHJlc3Npb24pOwotICAgICAgICBtX2luaXRpYWxpemVyID0gV1RGTW92
ZShleHByZXNzaW9uKTsKLSAgICB9Ci0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLSAgICBTZW1hbnRpYyogc2VtYW50aWMo
KSB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+c2VtYW50aWMuZ2V0KCkgOiBudWxs
cHRyOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAg
IFJlZlB0cjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiBtX2luaXRpYWxpemVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJl
RGF0YSB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwotfTsKLQotdXNpbmcgVmFyaWFi
bGVEZWNsYXJhdGlvbnMgPSBWZWN0b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PjsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MzI4YzRiMmNmZDQyZTkz
MzFhYTg1NmY5NGE2ZjgyNDRlZjVlOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxl
RGVjbGFyYXRpb25zJiYgdmFyaWFibGVEZWNsYXJhdGlvbnMpCi0gICAgICAgIDogU3RhdGVtZW50
KGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgLCBtX3Zhcmlh
YmxlRGVjbGFyYXRpb25zKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0K
LSAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCYpID0gZGVsZXRlOwotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIFZl
Y3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4+JiB2YXJpYWJsZURlY2xhcmF0aW9u
cygpIHsgcmV0dXJuIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAgICBW
YXJpYWJsZURlY2xhcmF0aW9ucyBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBpc1ZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGNiZDA2YWNhZTFmZWVlYTcwNTE3YjhkZjhjYjg2N2RkOTM2Yzk2Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVmFyaWFibGVS
ZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBTdHJpbmcmJiBuYW1lKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtp
bmQ6OlZhcmlhYmxlUmVmZXJlbmNlKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB+VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBWYXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOwot
ICAgIFZhcmlhYmxlUmVmZXJlbmNlKFZhcmlhYmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKLQot
ICAgIHN0YXRpYyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZh
cmlhYmxlRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSByZXN1
bHQodmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSk7Ci0gICAgICAgIHJlc3VsdC5t
X3ZhcmlhYmxlID0gJnZhcmlhYmxlRGVjbGFyYXRpb247Ci0gICAgICAgIHJlc3VsdC5tX25hbWUg
PSB2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIFZhcmlh
YmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsgfQotCi0gICAg
dm9pZCBzZXRWYXJpYWJsZShWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9u
KQotICAgIHsKLSAgICAgICAgbV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRp
b24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVu
Y2UpCi0gICAgewotICAgIH0KLQotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmFyaWFibGVEZWNs
YXJhdGlvbiogbV92YXJpYWJsZSB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFZhcmlhYmxlUmVmZXJlbmNlKQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVmFyaWFibGVSZWZlcmVu
Y2UsIGlzVmFyaWFibGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMV2hpbGVMb29wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTk2
NDliMTU0ZjMwMTljYTg5N2VhYmNiYjQxYmQ4ZTY0ZGJkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBXaGlsZUxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXaGlsZUxvb3AoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwg
VW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
biwgS2luZDo6V2hpbGVMb29wKQotICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25k
aXRpb25hbCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAgewotICAgIH0K
LQotICAgIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7Ci0KLSAgICBXaGlsZUxvb3AoY29uc3QgV2hp
bGVMb29wJikgPSBkZWxldGU7Ci0gICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7
IH0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KLQotcHJpdmF0ZToK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKLSAgICBVbmlxdWVSZWY8
U3RhdGVtZW50PiBtX2JvZHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShXaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKFdoaWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxMTNhMDYxOGJh
MWMyNzEzODhlZjFkNDRiMGFiMGU1NjE2OTgzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
MjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1z
LmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExT
TFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMg
U3RyaW5nIGF0dHJpYnV0ZUZvclNlbWFudGljKEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdElu
U2VtYW50aWMpCi17Ci0gICAgc3dpdGNoIChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSkgewot
ICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0g
ICAgICAgIHJldHVybiAiW1tpbnN0YW5jZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiW1t2ZXJ0
ZXhfaWRdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpQ
U2l6ZToKLSAgICAgICAgcmV0dXJuICJbW3BvaW50X3NpemVdXSJfc3RyOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4g
IltbcG9zaXRpb25dXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gIltbZnJvbnRfZmFjaW5nXV0iX3N0
cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZTYW1wbGVJbmRl
eDoKLSAgICAgICAgcmV0dXJuICJbW3NhbXBsZV9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJu
ICJbW3NhbXBsZV9tYXNrXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJbW2NvbG9yKCIs
ICpidWlsdEluU2VtYW50aWMudGFyZ2V0SW5kZXgoKSwgIildXSIpOwotICAgIGNhc2UgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gIltbZGVw
dGgoYW55KV1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAg
Y2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoK
LSAgICAgICAgcmV0dXJuICJbW3RocmVhZF9wb3NpdGlvbl9pbl9ncmlkXV0iX3N0cjsKLSAgICBj
YXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICBy
ZXR1cm4gIltbdGhyZWFkZ3JvdXBfcG9zaXRpb25faW5fZ3JpZF1dIl9zdHI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0
dXJuICJbW3RocmVhZF9pbmRleF9pbl90aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuICJb
W3RocmVhZF9wb3NpdGlvbl9pbl90aHJlYWRncm91cF1dIl9zdHI7Ci0gICAgfQotfQotCi1zdGF0
aWMgU3RyaW5nIGF0dHJpYnV0ZUZvclNlbWFudGljKEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQot
ewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPihz
ZW1hbnRpYykpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhXVEY6OmdldDxB
U1Q6OkJ1aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpKTsKLSAgICBhdXRvJiBzdGFnZUluT3V0U2Vt
YW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpOwotICAg
IHJldHVybiBtYWtlU3RyaW5nKCJbW3VzZXIodXNlciIsIHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRl
eCgpLCAiKV1dIik7Ci19Ci0KLUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RW50cnlQb2ludFNjYWZm
b2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJp
bnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMm
IGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAs
IExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpCi0gICAgOiBtX2Z1bmN0aW9uRGVmaW5pdGlvbihmdW5j
dGlvbkRlZmluaXRpb24pCi0gICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAsIG1f
dHlwZU5hbWVyKHR5cGVOYW1lcikKLSAgICAsIG1fZW50cnlQb2ludEl0ZW1zKGVudHJ5UG9pbnRJ
dGVtcykKLSAgICAsIG1fcmVzb3VyY2VNYXAocmVzb3VyY2VNYXApCi0gICAgLCBtX2xheW91dChs
YXlvdXQpCi0gICAgLCBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZShnZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUpCi17Ci0gICAgbV9uYW1lZEJpbmRHcm91cHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX2xheW91dC5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTmFtZWRCaW5kR3JvdXAgbmFtZWRCaW5kR3JvdXA7Ci0g
ICAgICAgIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpOwotICAgICAgICBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUgPSBtX2dl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICBuYW1lZEJpbmRHcm91cC5hcmd1bWVu
dEJ1ZmZlckluZGV4ID0gbV9sYXlvdXRbaV0ubmFtZTsgLy8gY29udmVydExheW91dCgpIGluIEdQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW0gbWFrZXMgc3VyZSB0aGVzZSBkb24ndCBjb2xsaWRlLgot
ICAgICAgICBuYW1lZEJpbmRHcm91cC5uYW1lZEJpbmRpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAg
TmFtZWRCaW5kaW5nIG5hbWVkQmluZGluZzsKLSAgICAgICAgICAgIG5hbWVkQmluZGluZy5lbGVt
ZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7
Ci0gICAgICAgICAgICBuYW1lZEJpbmRpbmcuaW5kZXggPSBtX2xheW91dFtpXS5iaW5kaW5nc1tq
XS5pbnRlcm5hbE5hbWU7Ci0gICAgICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKFVuaWZvcm1CdWZmZXJCaW5kaW5nJiB1bmlmb3JtQnVmZmVyQmluZGluZykgewotICAgICAg
ICAgICAgICAgIExlbmd0aEluZm9ybWF0aW9uIGxlbmd0aEluZm9ybWF0aW9uIHsgbV90eXBlTmFt
ZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKSwgbV9nZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUoKSwgdW5pZm9ybUJ1ZmZlckJpbmRpbmcubGVuZ3RoTmFtZSB9OwotICAgICAgICAg
ICAgICAgIG5hbWVkQmluZGluZy5sZW5ndGhJbmZvcm1hdGlvbiA9IGxlbmd0aEluZm9ybWF0aW9u
OwotICAgICAgICAgICAgfSwgWyZdKFNhbXBsZXJCaW5kaW5nJikgewotICAgICAgICAgICAgfSwg
WyZdKFRleHR1cmVCaW5kaW5nJikgewotICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJC
aW5kaW5nJiBzdG9yYWdlQnVmZmVyQmluZGluZykgewotICAgICAgICAgICAgICAgIExlbmd0aElu
Zm9ybWF0aW9uIGxlbmd0aEluZm9ybWF0aW9uIHsgbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3Ry
dWN0dXJlRWxlbWVudE5hbWUoKSwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgc3RvcmFn
ZUJ1ZmZlckJpbmRpbmcubGVuZ3RoTmFtZSB9OwotICAgICAgICAgICAgICAgIG5hbWVkQmluZGlu
Zy5sZW5ndGhJbmZvcm1hdGlvbiA9IGxlbmd0aEluZm9ybWF0aW9uOwotICAgICAgICAgICAgfSks
IG1fbGF5b3V0W2ldLmJpbmRpbmdzW2pdLmJpbmRpbmcpOwotICAgICAgICAgICAgbmFtZWRCaW5k
R3JvdXAubmFtZWRCaW5kaW5ncy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZEJpbmRpbmcp
KTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWVkQmluZEdyb3Vwcy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShuYW1lZEJpbmRHcm91cCkpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm1fZW50cnlQ
b2ludEl0ZW1zLmlucHV0c1tpXS5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgTmFtZWRCdWlsdEluIG5hbWVkQnVpbHRJbjsKLSAgICAgICAgbmFtZWRCdWlsdEluLmlu
ZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBpOwotICAgICAgICBuYW1lZEJ1aWx0SW4udmFyaWFibGVO
YW1lID0gbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbV9uYW1lZEJ1aWx0
SW5zLmFwcGVuZChXVEZNb3ZlKG5hbWVkQnVpbHRJbikpOwotICAgIH0KLQotICAgIG1fcGFyYW1l
dGVyVmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9mdW5jdGlvbkRlZmluaXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0
aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcGFyYW1l
dGVyVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
KTsKLX0KLQotdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5
cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCwg
U2hhZGVyU3RhZ2Ugc2hhZGVyU3RhZ2UpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRl
bnQsICJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsK
LSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwot
ICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRl
bXM7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRp
bmdzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYmluZGluZyA9IG1fbGF5
b3V0W2ldLmJpbmRpbmdzW2pdOwotICAgICAgICAgICAgICAgIGlmICghYmluZGluZy52aXNpYmls
aXR5LmNvbnRhaW5zKHNoYWRlclN0YWdlKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNb
aV0ubmFtZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGlu
ZGV4ID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5pbmRleDsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byBsZW5ndGhJbmZvcm1hdGlvbiA9IG1fbmFtZWRCaW5kR3JvdXBz
W2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihsZW5ndGhJbmZvcm1hdGlvbi0+
aW5kZXgsIG1ha2VTdHJpbmcoInVpbnQyICIsIGxlbmd0aEluZm9ybWF0aW9uLT5lbGVtZW50TmFt
ZSwgIiBbW2lkKCIsIGxlbmd0aEluZm9ybWF0aW9uLT5pbmRleCwgIildXTsiKSkpOwotCi0gICAg
ICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRb
aV0uYmluZGluZ3Nbal0pOwotICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3Jlc291
cmNlTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIHR5cGUgPSBtX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS51bm5hbWVkVHlwZS0+dW5pZnlOb2Rl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSAm
JiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5cGUp
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25j
YXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odHlwZSkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkcmVzc1NwYWNlID0gdG9TdHJpbmcocmVmZXJl
bmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJ
dGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoYWRkcmVzc1NwYWNl
LCAiICIsIG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRl
eCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmFt
ZWRUeXBlPih0eXBlKSAmJiBpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KHR5cGUpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYg
bmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGluZGV4LCBtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwg
IiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYmluZGluZyBk
b2Vzbid0IGFwcGVhciBpbiB0aGUgc2hhZGVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAg
Ly8gSG93ZXZlciwgd2UgbXVzdCBzdGlsbCBlbWl0IGEgcGxhY2Vob2xkZXIsIHNvIHN1Y2Nlc3Np
dmUgaXRlbXMgaW4gdGhlIGFyZ3VtZW50IGJ1ZmZlciBzdHJ1Y3QgaGF2ZSB0aGUgY29ycmVjdCBv
ZmZzZXQuCi0gICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGJpbmRpbmcgZG9lc24n
dCBhcHBlYXIgaW4gdGhlIHNoYWRlciBzb3VyY2UsIHdlIGRvbid0IGtub3cgd2hpY2ggZXhhY3Qg
dHlwZSB0aGUgYmluZCBwb2ludCBzaG91bGQgaGF2ZS4KLSAgICAgICAgICAgICAgICAgICAgLy8g
VGhlcmVmb3JlLCB3ZSBtdXN0IHN5bnRoZXNpemUgYSB0eXBlIG91dCBvZiB0aGluIGFpci4KLSAg
ICAgICAgICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3Jt
QnVmZmVyQmluZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJjb25zdGFudCB2b2lkKiAiLCBl
bGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0sIFsmXShTYW1wbGVyQmluZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJzYW1wbGVy
ICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTM4
NCBXZSBkb24ndCBrbm93IHdoaWNoIHRleHR1cmUgdHlwZSB0aGUgYmluZGluZyByZXByZXNlbnRz
LiBUaGlzIGlzIG5vIGdvb2QgdmVyeSBiYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoInRleHR1cmUy
ZDxmbG9hdD4gIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAg
ICAgICAgICAgICAgICAgICB9LCBbJl0oU3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwg
bWFrZVN0cmluZygiZGV2aWNlIHZvaWQqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgs
ICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSksIGJpbmRpbmcuYmluZGluZyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RkOjpzb3J0KHN0
cnVjdEl0ZW1zLmJlZ2luKCksIHN0cnVjdEl0ZW1zLmVuZCgpLCBbXShjb25zdCBzdGQ6OnBhaXI8
dW5zaWduZWQsIFN0cmluZz4mIGxlZnQsIGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5n
PiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdC5maXJzdCA8IHJpZ2h0LmZp
cnN0OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVj
dEl0ZW0gOiBzdHJ1Y3RJdGVtcykKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChpbmRlbnQsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKLSAgICAgICAgfQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLSAgICB9Ci19Ci0KLWJvb2wg
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hIGluY2x1ZGVQcmVjZWRpbmdD
b21tYSkKLXsKLSAgICBpZiAoIW1fbGF5b3V0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKGluY2x1ZGVQcmVjZWRpbmdDb21tYSA9PSBJbmNsdWRlUHJlY2VkaW5nQ29t
bWE6OlllcykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChp
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIGF1dG8m
IG5hbWVkQmluZEdyb3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJkZXZpY2UgIiwgbmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwg
bmFtZWRCaW5kR3JvdXAudmFyaWFibGVOYW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3Vw
LmFyZ3VtZW50QnVmZmVySW5kZXgsICIpXV0iKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXN0YXRpYyBTdHJpbmdWaWV3IGludGVybmFsVHlwZUZvclNlbWFudGljKGNvbnN0IEFTVDo6
QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMpCi17Ci0gICAgc3dpdGNoIChidWlsdElu
U2VtYW50aWMudmFyaWFibGUoKSkgewotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVy
biAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXpl
OgotICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuICJmbG9hdDQiOwotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAg
ICByZXR1cm4gImJvb2wiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVlNhbXBsZUluZGV4OgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVy
biAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFy
Z2V0OgotICAgICAgICByZXR1cm4geyB9OwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJu
ICJ1aW50IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNw
YXRjaFRocmVhZElEOgotICAgICAgICByZXR1cm4gInVpbnQzIjsKLSAgICBjYXNlIEFTVDo6QnVp
bHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gInVpbnQz
IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4
OgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChi
dWlsdEluU2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJldHVybiAidWludDMiOwotICAgIH0KLX0K
LQotYm9vbCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdEluc1NpZ25hdHVyZShTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgaW5jbHVkZVBy
ZWNlZGluZ0NvbW1hKQotewotICAgIGlmICghbV9uYW1lZEJ1aWx0SW5zLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGluY2x1ZGVQcmVjZWRpbmdDb21tYSA9PSBJbmNs
dWRlUHJlY2VkaW5nQ29tbWE6OlllcykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
Iik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbmFtZWRCdWlsdElucy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsICIpOwotICAgICAgICBhdXRvJiBuYW1lZEJ1aWx0SW4gPSBtX25hbWVkQnVpbHRJbnNbaV07
Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWls
dEluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdOwotICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50
aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKml0ZW0uc2VtYW50aWMpOwotICAg
ICAgICBhdXRvIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKGJ1aWx0SW5T
ZW1hbnRpYyk7Ci0gICAgICAgIGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW50ZXJuYWxUeXBlKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCppdGVtLnVubmFtZWRUeXBlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcg
JywgbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhi
dWlsdEluU2VtYW50aWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1NFUlQoIXBhdGgu
aXNFbXB0eSgpKTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgQVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAobV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT5u
YW1lKCkgPT0gcGF0aFswXSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9w
YXJhbWV0ZXJWYXJpYWJsZXNbaV0pOwotICAgICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbV9m
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCktPnVuaWZ5Tm9kZSgpOwot
ICAgICAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4o
bmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9ICZk
b3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBBU1NFUlQoZm91bmQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBp
IDwgcGF0aC5zaXplKCk7ICsraSkgewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlv
bik7Ci0gICAgICAgIGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKHBhdGhb
aV0pOwotICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7
Ci0gICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgICAgICBhdXRvJiB1
bmlmeU5vZGUgPSBuZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChpczxBU1Q6
Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0g
ZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgICAgICBpZiAoaXM8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgIHN0
cnVjdHVyZURlZmluaXRpb24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihu
YW1lZFR5cGUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdE1hbmdsZWRPdXRwdXRQYXRoKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IFZlY3RvcjxTdHJpbmc+JiBwYXRoKQotewotICAgIEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiog
c3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgYXV0byYgdW5pZnlOb2RlID0gbV9m
dW5jdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgIHN0cnVjdHVyZURlZmlu
aXRpb24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6
Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBwYXRo
KSB7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgYXV0byog
bmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29tcG9uZW50KTsKLSAgICAgICAgQVNT
RVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsIG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwotICAgICAgICBzdHJ1Y3R1
cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+
dHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tS
ZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIElu
ZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVu
Y3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1f
ZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSwgJyAnLCBtX3BhcmFt
ZXRlclZhcmlhYmxlc1tpXSwgIjtcbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IG1fbmFt
ZWRCaW5kR3JvdXBzW2ldLnZhcmlhYmxlTmFtZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0p
OwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VNYXAuZW5kKCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9uYW1lZEJpbmRHcm91cHNb
aV0ubmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbikgewotICAgICAgICAgICAgICAg
IGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS5w
YXRoOwotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vw
c1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8g
bGVuZ3RoRWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pd
Lmxlbmd0aEluZm9ybWF0aW9uLT5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICBhdXRvIGxl
bmd0aFRlbXBvcmFyeU5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pd
Lmxlbmd0aEluZm9ybWF0aW9uLT50ZW1wb3JhcnlOYW1lOwotCi0gICAgICAgICAgICAgICAgYXV0
byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1
ZV0udW5uYW1lZFR5cGU7Ci0gICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBt
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBl
Pih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAic2l6ZV90ICIsIGxl
bmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVu
dE5hbWUsICIueTtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9y
YXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAotICAgICAg
ICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiIHwgIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1l
LCAiLng7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFyeU5h
bWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBl
TmFtZSwgIik7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgbGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA+IDB4RkZGRkZGRkYpXG4iLAotICAgICAgICAgICAgICAgICAgICBp
bmRlbnQsICIgICAgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9IDB4RkZGRkZGRkY7XG4iCi0g
ICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCk7Ci0gICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVp
bGRlciwgcGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAg
ICAgICAgICAgICAgICAgICIgPSB7ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
Iiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIpIH07XG4i
Ci0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVd
LnBhdGg7Ci0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3Jv
dXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAgICAg
ICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVs
ZW1lbnROYW1lLCAiO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIG5hbWVkQnVpbHRJbiA6IG1fbmFtZWRCdWlsdElucykgewotICAgICAgICBh
dXRvJiBpdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkQnVpbHRJbi5pbmRleElu
RW50cnlQb2ludEl0ZW1zXTsKLSAgICAgICAgYXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKLSAgICAg
ICAgYXV0byYgdmFyaWFibGVOYW1lID0gbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKLSAgICAg
ICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
Kml0ZW0udW5uYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCk7Ci0gICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcs
IHZhcmlhYmxlTmFtZSwgIik7XG4iKTsKLSAgICB9Ci19Ci0KLVZlcnRleEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1l
ciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxC
aW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0
aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhh
c2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMp
Ci0gICAgOiBFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5z
aWNzLCB0eXBlTmFtZXIsIGVudHJ5UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKQotICAgICwgbV9tYXRjaGVkVmVydGV4QXR0
cmlidXRlcyhtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAsIG1fc3RhZ2VJblN0cnVjdE5h
bWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3JldHVyblN0cnVj
dE5hbWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3N0YWdlSW5Q
YXJhbWV0ZXJOYW1lKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0gICAgbV9uYW1l
ZFN0YWdlSW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkVmVydGV4QXR0cmlidXRl
cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogbV9tYXRjaGVkVmVydGV4
QXR0cmlidXRlcykgewotICAgICAgICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwotICAgICAg
ICBuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGtleVZhbHVlUGFpci52YWx1
ZTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJh
dGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmF0dHJp
YnV0ZUluZGV4ID0ga2V5VmFsdWVQYWlyLmtleS0+bWV0YWxMb2NhdGlvbjsKLSAgICAgICAgbV9u
YW1lZFN0YWdlSW5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAg
IH0KLQotICAgIG1fbmFtZWRPdXRwdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9l
bnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRw
dXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRw
dXQgbmFtZWRPdXRwdXQ7Ci0gICAgICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBl
TmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5n
VmlldyBpbnRlcm5hbFR5cGU7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFT
VDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBp
bnRlcm5hbFR5cGUgPSBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0
SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5h
bFR5cGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1l
ID0gaW50ZXJuYWxUeXBlLnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5h
bWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKm91dHB1dEl0ZW0udW5uYW1lZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCAic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7
Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAg
IGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgICAg
ICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
bV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0
ZW1zXS51bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRT
dGFnZUluLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5h
bWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmli
dXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgIGluZGVudCwgIn07XG5cbiIsCi0gICAgICAg
IGluZGVudCwgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgotICAgICk7Ci0g
ICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91
dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUg
PSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmli
dXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcs
IGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn07XG5cbiIpOwotICAgIAotICAgIGVt
aXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6
OlZlcnRleCk7Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2ln
bmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUg
ZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCAidmVydGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5j
dGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJp
bmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5z
U2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIElu
ZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRC
dWlsdElucyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lZFN0
YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQ
b2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0
aDsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7
Ci0gICAgICAgIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAg
ICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxl
bWVudE5hbWUsICI7XG4iKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFy
aWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZh
cmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGluZGVudCwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFt
ZSwgIjtcbiIpOwotICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAx
ICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7Ci0gICAgICAg
IGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBt
X25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBl
TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgIGF1dG8m
IHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnRO
YW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7Ci0g
ICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLSAgICB9Ci19Ci0KLUZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRl
bXMsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91
dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiYpCi0gICAg
OiBFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0
eXBlTmFtZXIsIGVudHJ5UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKQotICAgICwgbV9zdGFnZUluU3RydWN0TmFtZSh0eXBl
TmFtZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fcmV0dXJuU3RydWN0TmFtZSh0
eXBlTmFtZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fc3RhZ2VJblBhcmFtZXRl
ck5hbWUobV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0cy5zaXplKCk7ICsraSkgewotICAgICAg
ICBhdXRvJiBpbnB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV07Ci0gICAgICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmlu
cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYg
c3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCpp
bnB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBOYW1lZFN0YWdlSW4gbmFtZWRTdGFnZUluOwot
ICAgICAgICBuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGk7Ci0gICAgICAg
IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVj
dHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleCA9
IHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpOwotICAgICAgICBtX25hbWVkU3RhZ2VJbnMuYXBw
ZW5kKFdURk1vdmUobmFtZWRTdGFnZUluKSk7Ci0gICAgfQotCi0gICAgbV9uYW1lZE91dHB1dHMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVt
cy5vdXRwdXRzW2ldOwotICAgICAgICBOYW1lZE91dHB1dCBuYW1lZE91dHB1dDsKLSAgICAgICAg
bmFtZWRPdXRwdXQuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1
cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBTdHJpbmdWaWV3IGludGVybmFsVHlwZTsKLSAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRw
dXRJdGVtLnNlbWFudGljKSkKLSAgICAgICAgICAgIGludGVybmFsVHlwZSA9IGludGVybmFsVHlw
ZUZvclNlbWFudGljKFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5z
ZW1hbnRpYykpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAgICAgICAg
ICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBpbnRlcm5hbFR5cGUudG9TdHJpbmco
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqb3V0cHV0SXRlbS51bm5hbWVkVHlw
ZSk7Ci0gICAgICAgIG1fbmFtZWRPdXRwdXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVk
T3V0cHV0KSk7Ci0gICAgfQotfQotCi12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRp
b248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVj
dCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50
YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJ
biA6IG1fbmFtZWRTdGFnZUlucykgewotICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0
c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAg
ICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAg
ICAgICAgICAgIGF1dG8gYXR0cmlidXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5k
ZXg7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBl
TmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIodXNlciIsIGF0dHJpYnV0ZUluZGV4LCAi
KV1dO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgIGluZGVudCwgIn07XG5cbiIsCi0gICAgICAgIGluZGVudCwgInN0cnVjdCAiLCBtX3Jl
dHVyblN0cnVjdE5hbWUsICIge1xuIgotICAgICk7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlv
blNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9l
bnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYg
b3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgICAgICBh
dXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFt
ZTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVt
ZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50
aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJp
YnV0ZSwgIjtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgIn07XG5cbiIpOwotCi0gICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5n
QnVpbGRlciwgaW5kZW50LCBTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotfQotCi12b2lkIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlv
bjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAiZnJhZ21l
bnQgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdl
SW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1d
Iik7Ci0gICAgZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVj
ZWRpbmdDb21tYTo6WWVzKTsKLSAgICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRl
ciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpXG4iKTsKLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVu
cGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQp
Ci17Ci0gICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRl
ciwgaW5kZW50KTsKLQotICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdl
SW5zKSB7Ci0gICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFt
ZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBhdGg7Ci0gICAgICAgIGF1dG8mIGVs
ZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmlu
Z0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbV9z
dGFnZUluUGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgIH0KLX0K
LQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFt
ZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+
IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3Ry
dWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRy
eVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0c1swXS5wYXRoLnNpemUoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFt
ZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
bmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0
VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5h
bWU7Ci0gICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5p
bnRlcm5hbFR5cGVOYW1lOwotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91
dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5h
bWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUpOwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBh
dGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
O1xuIik7Ci0gICAgfQotfQotCi1Db21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjpDb21wdXRl
RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRl
ZmluaXRpb24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBF
bnRyeVBvaW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90
PiYgcmVzb3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJp
YWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpCi0gICAgOiBFbnRyeVBvaW50
U2NhZmZvbGRpbmcoZnVuY3Rpb25EZWZpbml0aW9uLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGVu
dHJ5UG9pbnRJdGVtcywgcmVzb3VyY2VNYXAsIGxheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUpKQotewotfQotCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlv
bjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRl
ciwgaW5kZW50LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7Ci19Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5k
ZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImtlcm5lbCB2b2lkICIs
IGZ1bmN0aW9uTmFtZSwgJygnKTsKLSAgICBib29sIGFkZGVkVG9TaWduYXR1cmUgPSBlbWl0UmVz
b3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7
Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIGFkZGVkVG9TaWduYXR1
cmUgPyBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6OlllcyA6IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6
Tm8pOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBDb21wdXRl
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2Vz
QW5kTmFtZWRCdWlsdElucyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwotfQotCi12b2lkIENvbXB1
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVk
VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9s
ZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjU2Mjg4Y2JlYTI1NzFhZjFk
MDlkMTUxMTIzMTU4MGJkNWViZTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVs
aW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQot
fQotCi1zdHJ1Y3QgRW50cnlQb2ludEl0ZW1zOwotY2xhc3MgSW50cmluc2ljczsKLQotbmFtZXNw
YWNlIE1ldGFsIHsKLQotY2xhc3MgVHlwZU5hbWVyOwotCi1jbGFzcyBFbnRyeVBvaW50U2NhZmZv
bGRpbmcgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHZpcnR1
YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgdm9p
ZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5j
dGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVtaXRVbnBh
Y2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFy
aWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotCi0g
ICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBwYXJhbWV0ZXJWYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3BhcmFtZXRlclZhcmlhYmxlczsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlQb2lu
dFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVO
YW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291
cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpOwotCi0gICAgdm9pZCBlbWl0UmVzb3VyY2VIZWxwZXJU
eXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4sIFNoYWRlclN0YWdlKTsKLQotICAg
IGVudW0gY2xhc3MgSW5jbHVkZVByZWNlZGluZ0NvbW1hIHsKLSAgICAgICAgWWVzLAotICAgICAg
ICBObwotICAgIH07Ci0gICAgYm9vbCBlbWl0UmVzb3VyY2VTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSk7Ci0gICAgYm9vbCBlbWl0QnVpbHRJbnNTaWduYXR1
cmUoU3RyaW5nQnVpbGRlciYsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSk7Ci0KLSAgICB2b2lkIGVt
aXRNYW5nbGVkSW5wdXRQYXRoKFN0cmluZ0J1aWxkZXImLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCk7
Ci0gICAgdm9pZCBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoU3RyaW5nQnVpbGRlciYsIFZlY3RvcjxT
dHJpbmc+JiBwYXRoKTsKLSAgICB2b2lkIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0
SW5zKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pik7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYgbV9mdW5jdGlvbkRlZmluaXRpb247Ci0gICAgSW50cmluc2ljcyYgbV9pbnRy
aW5zaWNzOwotICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1z
JiBtX2VudHJ5UG9pbnRJdGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiBtX3Jl
c291cmNlTWFwOwotICAgIExheW91dCYgbV9sYXlvdXQ7Ci0gICAgc3RkOjpmdW5jdGlvbjxNYW5n
bGVkVmFyaWFibGVOYW1lKCk+IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lOwotCi0gICAgc3Ry
dWN0IExlbmd0aEluZm9ybWF0aW9uIHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnRO
YW1lIGVsZW1lbnROYW1lOwotICAgICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHRlbXBvcmFyeU5h
bWU7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmlu
ZGluZyB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsK
LSAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoSW5m
b3JtYXRpb24+IGxlbmd0aEluZm9ybWF0aW9uOwotICAgIH07Ci0gICAgc3RydWN0IE5hbWVkQmlu
ZEdyb3VwIHsKLSAgICAgICAgTWFuZ2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7Ci0gICAgICAgIE1h
bmdsZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lOwotICAgICAgICBWZWN0b3I8TmFtZWRCaW5k
aW5nPiBuYW1lZEJpbmRpbmdzOwotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudEJ1ZmZlckluZGV4
OwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkQmluZEdyb3VwPiBtX25hbWVkQmluZEdyb3Vwczsg
Ly8gUGFyYWxsZWwgdG8gbV9sYXlvdXQKLQotICAgIHN0cnVjdCBOYW1lZEJ1aWx0SW4gewotICAg
ICAgICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xlZFZhcmlh
YmxlTmFtZSB2YXJpYWJsZU5hbWU7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRCdWlsdEluPiBt
X25hbWVkQnVpbHRJbnM7Ci0KLSAgICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV9wYXJh
bWV0ZXJWYXJpYWJsZXM7Ci19OwotCi1jbGFzcyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcg
ZmluYWwgOiBwdWJsaWMgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5z
aWNzJiwgVHlwZU5hbWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6
ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxl
TmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1
dGUqLCBzaXplX3Q+JiBtYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB+VmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZv
aWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rp
b25OYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0
cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFj
ayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFt
ZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotCi0gICAg
SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+JiBtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1
dGVzOwotICAgIE1hbmdsZWRUeXBlTmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmds
ZWRUeXBlTmFtZSBtX3JldHVyblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBt
X3N0YWdlSW5QYXJhbWV0ZXJOYW1lOwotCi0gICAgc3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAg
ICAgIHNpemVfdCBpbmRleEluRW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0
dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUlu
ZGV4OwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkU3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwot
Ci0gICAgc3RydWN0IE5hbWVkT3V0cHV0IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1l
bnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRl
cm5hbFR5cGVOYW1lOwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0
cHV0czsKLX07Ci0KLWNsYXNzIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nIGZpbmFsIDog
cHVibGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgRnJhZ21lbnRFbnRy
eVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwg
VHlwZU5hbWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYg
cmVzb3VyY2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgp
PiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRv
ciosIHNpemVfdD4mIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKLSAgICB2aXJ0dWFsIH5GcmFn
bWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2
b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJy
aWRlOwotICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0
aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFjayhT
dHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFBh
Y2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5h
bWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLQotICAg
IE1hbmdsZWRUeXBlTmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRUeXBlTmFt
ZSBtX3JldHVyblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBtX3N0YWdlSW5Q
YXJhbWV0ZXJOYW1lOwotCi0gICAgc3RydWN0IE5hbWVkU3RhZ2VJbiB7Ci0gICAgICAgIHNpemVf
dCBpbmRleEluRW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVu
dE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4OwotICAg
IH07Ci0gICAgVmVjdG9yPE5hbWVkU3RhZ2VJbj4gbV9uYW1lZFN0YWdlSW5zOwotCi0gICAgc3Ry
dWN0IE5hbWVkT3V0cHV0IHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVs
ZW1lbnROYW1lOwotICAgICAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBpbnRlcm5hbFR5cGVO
YW1lOwotICAgIH07Ci0gICAgVmVjdG9yPE5hbWVkT3V0cHV0PiBtX25hbWVkT3V0cHV0czsKLX07
Ci0KLWNsYXNzIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmluYWwgOiBwdWJsaWMgRW50
cnlQb2ludFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBDb21wdXRlRW50cnlQb2ludFNjYWZm
b2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYs
IEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFw
LCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpOwotICAgIHZpcnR1YWwgfkNvbXB1dGVFbnRyeVBvaW50U2NhZmZv
bGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMo
U3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRT
aWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9u
PDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVu
dGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBN
YW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVO
YW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci19OwotCi19Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiNDU5MGE1NWZjMzE3YjI2MDIz
MWRlMzhiNDIwZmZhNjk3ZGEzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25Xcml0
ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUg
IldITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIE1ldGFsIHsKLQotc3RhdGljIHZvaWQgZGVjbGFyZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJh
dGlvbiwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZykKLXsKLSAgICBpZiAo
ZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIGl0ZXJhdG9yID0gZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFy
YXRpb24pOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBmdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVu
Y3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpW2ldLT50
eXBlKCkpKTsKLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLX0KLQot
c3RydWN0IFZhcmlhYmxlIHsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG5hbWU7Ci0gICAgTWFu
Z2xlZFR5cGVOYW1lIHR5cGU7Ci19OwotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIg
OiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgY2xhc3MgSG9pc3RlZFZhcmlhYmxlQ29sbGVjdG9yIDog
cHVibGljIFZpc2l0b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgIEhvaXN0ZWRWYXJpYWJs
ZUNvbGxlY3RvcihGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXImIGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcikKLSAgICAgICAgICAgIDogZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKGZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2aXNp
dChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgVmVjdG9yPFZhcmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICBz
aXplX3Qgc2l6ZSA9IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsKLSAgICAgICAg
ICAgIGJvb2wgaXNWb2lkID0gbWF0Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwg
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1faW50cmluc2ljcy52b2lkVHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmICghaXNWb2lkKQotICAgICAgICAgICAgICAgICsrc2l6ZTsKLSAgICAgICAgICAg
IHZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotCi0gICAgICAgICAgICBm
b3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHR5cGUgPSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGFyZ3VtZW50LT5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgYXV0byBuYW1lID0gZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlcy51bmNoZWNrZWRBcHBl
bmQoVmFyaWFibGUgeyBuYW1lLCB0eXBlIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoIWlzVm9pZCkKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMudW5jaGVja2VkQXBwZW5k
KFZhcmlhYmxlIHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpLCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSB9KTsKLQotICAgICAgICAgICAg
dG9Ib2lzdC5hZGQoJmNhbGxFeHByZXNzaW9uLCBXVEZNb3ZlKHZhcmlhYmxlcykpOwotCi0gICAg
ICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlm
eVdyaXRlKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBWZWN0b3I8VmFyaWFibGU+
IHZhcmlhYmxlczsKLSAgICAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoVmFyaWFibGUgeyBmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnJlYWRNb2Rp
ZnlXcml0ZS5vbGRWYWx1ZSgpLnR5cGUoKSkgfSk7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBw
ZW5kKFZhcmlhYmxlIHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpLCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCpyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWUoKS50eXBlKCkpIH0pOwotCi0gICAg
ICAgICAgICB0b0hvaXN0LmFkZCgmcmVhZE1vZGlmeVdyaXRlLCBXVEZNb3ZlKHZhcmlhYmxlcykp
OwotCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChyZWFkTW9kaWZ5V3JpdGUpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyJiBmdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI7Ci0gICAgICAgIEhhc2hNYXA8QVNUOjpFeHByZXNzaW9uKiwgVmVjdG9yPFZhcmlh
YmxlPj4gdG9Ib2lzdDsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEludHJpbnNpY3MmIGludHJpbnNp
Y3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIExheW91dCYgbGF5b3V0
KQotICAgICAgICA6IG1fc3RyaW5nQnVpbGRlcihzdHJpbmdCdWlsZGVyKQotICAgICAgICAsIG1f
aW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAgICAgICAsIG1fdHlwZU5hbWVyKHR5cGVOYW1lcikK
LSAgICAgICAgLCBtX2Z1bmN0aW9uTWFwcGluZyhmdW5jdGlvbk1hcHBpbmcpCi0gICAgICAgICwg
bV9sYXlvdXQobGF5b3V0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZm
b2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgPSAwOwotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
U3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNvbnRpbnVlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVM
b29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpSZXR1cm4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6RmxvYXRMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5M
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29tbWFF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJp
ZGU7Ci0KLSAgICBlbnVtIGNsYXNzIExvb3BDb25kaXRpb25Mb2NhdGlvbiB7Ci0gICAgICAgIEJl
Zm9yZUJvZHksCi0gICAgICAgIEFmdGVyQm9keQotICAgIH07Ci0gICAgdm9pZCBlbWl0TG9vcChM
b29wQ29uZGl0aW9uTG9jYXRpb24sIEFTVDo6RXhwcmVzc2lvbiogY29uZGl0aW9uRXhwcmVzc2lv
biwgQVNUOjpFeHByZXNzaW9uKiBpbmNyZW1lbnQsIEFTVDo6U3RhdGVtZW50JiBib2R5KTsKLQot
ICAgIHZvaWQgZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbiYpOwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKSB7IHJldHVybiB7IG1fdmFyaWFibGVDb3VudCsrIH07IH0KLQotICAgIGVudW0gY2xhc3Mg
QnJlYWtDb250ZXh0IHsKLSAgICAgICAgTG9vcCwKLSAgICAgICAgU3dpdGNoCi0gICAgfTsKLQot
ICAgIHN0ZDo6b3B0aW9uYWw8QnJlYWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0NvbnRleHQ7Ci0K
LSAgICBTdHJpbmdCdWlsZGVyJiBtX3N0cmluZ0J1aWxkZXI7Ci0gICAgSW50cmluc2ljcyYgbV9p
bnRyaW5zaWNzOwotICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7Ci0gICAgSGFzaE1hcDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlvbk1h
cHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBNYW5nbGVkVmFy
aWFibGVOYW1lPiBtX3ZhcmlhYmxlTWFwcGluZzsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eVBvaW50U2NhZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwotICAgIExheW91dCYg
bV9sYXlvdXQ7Ci0gICAgdW5zaWduZWQgbV92YXJpYWJsZUNvdW50IHsgMCB9OwotICAgIHN0ZDo6
b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV9icmVha091dE9mQ3VycmVudExvb3BFYXJs
eVZhcmlhYmxlOwotICAgIEluZGVudGF0aW9uPDQ+IG1faW5kZW50IHsgMCB9OwotICAgIEhhc2hN
YXA8QVNUOjpFeHByZXNzaW9uKiwgVmVjdG9yPFZhcmlhYmxlPj4gbV9ob2lzdGVkVmFyaWFibGVz
OwotfTsKLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYpCi17Ci0gICAgLy8gV2UgaW5saW5lIG5hdGl2ZSBmdW5jdGlv
biBjYWxscy4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0KLSAgICB7Ci0gICAg
ICAgIEhvaXN0ZWRWYXJpYWJsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnRoaXMpOwotICAgICAgICBj
b2xsZWN0b3IuVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgbV9o
b2lzdGVkVmFyaWFibGVzID0gV1RGTW92ZShjb2xsZWN0b3IudG9Ib2lzdCk7Ci0gICAgfQotCi0g
ICAgYXV0byBkZWZpbmVIb2lzdGVkVmFyaWFibGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChjb25z
dCBhdXRvJiB2ZWN0b3IgOiBtX2hvaXN0ZWRWYXJpYWJsZXMudmFsdWVzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byB2YXJpYWJsZSA6IHZlY3RvcikKLSAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCB2YXJpYWJsZS50eXBlLCAnICcsIHZhcmlhYmxlLm5h
bWUsICI7XG4iKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9m
dW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICBBU1NFUlQoaXRl
cmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIGlmIChmdW5jdGlvbkRlZmlu
aXRpb24uZW50cnlQb2ludFR5cGUoKSkgewotICAgICAgICBhdXRvIGVudHJ5UG9pbnRTY2FmZm9s
ZGluZyA9IGNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24pOwot
ICAgICAgICBpZiAoIWVudHJ5UG9pbnRTY2FmZm9sZGluZykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBXVEZNb3ZlKGVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyk7Ci0gICAgICAgIAotICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1p
dEhlbHBlclR5cGVzKG1fc3RyaW5nQnVpbGRlciwgbV9pbmRlbnQpOwotICAgICAgICBtX2VudHJ5
UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFNpZ25hdHVyZShtX3N0cmluZ0J1aWxkZXIsIGl0ZXJhdG9y
LT52YWx1ZSwgbV9pbmRlbnQpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5k
ZW50LCAie1xuIik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2Nv
cGUobV9pbmRlbnQpOwotCi0gICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1p
dFVucGFjayhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsKLSAgICAgICAgCi0gICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFi
bGVNYXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRy
eVBvaW50U2NhZmZvbGRpbmctPnBhcmFtZXRlclZhcmlhYmxlcygpW2ldKTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0KLSAg
ICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuXG4iKTsKLQot
ICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IG51bGxwdHI7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID09IG51bGxwdHIpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZh
bHVlLCAnKCcpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5p
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAg
ICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBh
dXRvJiBwYXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwotICAg
ICAgICAgICAgYXV0byBwYXJhbWV0ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7
Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcGFy
YW1ldGVyLCBwYXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkp
LCAnICcsIHBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIilcbiIpOwotCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIntcbiIp
OwotCi0gICAgICAgIGRlZmluZUhvaXN0ZWRWYXJpYWJsZXMoKTsKLQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQm
IHN0YXRlbWVudCkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spCi17Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIntcbiIpOwotICAgIHsKLSAgICAg
ICAgSW5kZW50YXRpb25TY29wZSBzY29wZShtX2luZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYg
c3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN0YXRlbWVudCk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9p
bmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0
KEFTVDo6QnJlYWsmKQotewotICAgIEFTU0VSVChtX2N1cnJlbnRCcmVha0NvbnRleHQpOwotICAg
IHN3aXRjaCAoKm1fY3VycmVudEJyZWFrQ29udGV4dCkgewotICAgIGNhc2UgQnJlYWtDb250ZXh0
OjpTd2l0Y2g6Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJicmVh
aztcbiIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJyZWFrQ29udGV4dDo6TG9vcDoKLSAg
ICAgICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgKm1fYnJl
YWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IHRydWU7XG4iLAotICAgICAgICAg
ICAgbV9pbmRlbnQsICJicmVhaztcbiIKLSAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpDb250aW51
ZSYpCi17Ci0gICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImJyZWFrO1xuIik7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJl
c3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQotewotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsICJbW2NsYW5nOjpmYWxsdGhyb3VnaF1dO1xuIik7IC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA4IE1ha2Ugc3Vy
ZSB0aGlzIGlzIG9rYXkuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGRvIG5vdGhpbmcgYW5kIGp1
c3QgcmV0dXJuIGhlcmUgaW5zdGVhZC4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OmVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbiBsb29wQ29uZGl0aW9uTG9jYXRpb24s
IEFTVDo6RXhwcmVzc2lvbiogY29uZGl0aW9uRXhwcmVzc2lvbiwgQVNUOjpFeHByZXNzaW9uKiBp
bmNyZW1lbnQsIEFTVDo6U3RhdGVtZW50JiBib2R5KQotewotICAgIFNldEZvclNjb3BlPHN0ZDo6
b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkp
OwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgbV9pbmRlbnQsICJib29s
ICIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIs
Ci0gICAgICAgIG1faW5kZW50LCAid2hpbGUgKHRydWUpIHtcbiIKLSAgICApOwotICAgIHsKLSAg
ICAgICAgSW5kZW50YXRpb25TY29wZSB3aGlsZVNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICBp
ZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3Jl
Qm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAg
ICAgICAgICAgICAgIiAgICBicmVhaztcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImRvIHtcbiIpOwotICAgICAgICBTZXRGb3JTY29w
ZTxzdGQ6Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVh
a0NvbnRleHQsIEJyZWFrQ29udGV4dDo6TG9vcCk7Ci0KLSAgICAgICAgewotICAgICAgICAgICAg
SW5kZW50YXRpb25TY29wZSBkb1Njb3BlKG1faW5kZW50KTsKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChib2R5KTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAifSB3aGlsZShmYWxzZSk7IFxuIik7Ci0KLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCIsICptX2JyZWFrT3V0
T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIpXG4iLAotICAgICAgICAgICAgbV9pbmRlbnQs
ICIgICAgYnJlYWs7XG4iKTsKLQotICAgICAgICBpZiAoaW5jcmVtZW50KSB7Ci0gICAgICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIoIik7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoKmluY3JlbWVudCk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
O1xuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09
IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24p
IHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
bV9pbmRlbnQsICJpZiAoISgiKTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29u
ZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgICAgICIpKVxuIiwKLSAgICAgICAgICAgICAgICAiICAgIGJyZWFrO1xuIik7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50
LCAifSBcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgZW1pdExvb3AoTG9vcENvbmRpdGlv
bkxvY2F0aW9uOjpBZnRlckJvZHksICZkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpLCBudWxscHRy
LCBkb1doaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBlbWl0TG9vcChMb29w
Q29uZGl0aW9uTG9jYXRpb246OkJlZm9yZUJvZHksICZ3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSwg
bnVsbHB0ciwgd2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX2luZGVudCwgIntcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25T
Y29wZSBzY29wZShtX2luZGVudCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29w
LmluaXRpYWxpemF0aW9uKCkpOwotICAgICAgICBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRp
b246OkJlZm9yZUJvZHksIGZvckxvb3AuY29uZGl0aW9uKCksIGZvckxvb3AuaW5jcmVtZW50KCks
IGZvckxvb3AuYm9keSgpKTsKLSAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2lu
ZGVudCwgIn1cbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2luZGVudCwgImlmICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1l
bnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsK
LQotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBpZlNjb3BlKG1faW5kZW50KTsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotCi0g
ICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgIn0gZWxzZSB7XG4iKTsKLSAgICAgICAgewotICAgICAgICAgICAg
SW5kZW50YXRpb25TY29wZSBlbHNlU2NvcGUobV9pbmRlbnQpOwotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0
ZW1lbnQpCi17Ci0gICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIGF1
dG8gdGVtcFJldHVybk5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsgCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKS0+cmVzb2x2ZWRUeXBlKCkpLCAnICcsIHRl
bXBSZXR1cm5OYW1lLCAiID0gIik7IAotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJldHVy
blN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xu
Iik7Ci0KLSAgICAgICAgaWYgKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nKSB7Ci0gICAgICAgICAg
ICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAg
ICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRQYWNrKG1fc3RyaW5nQnVpbGRlciwg
dGVtcFJldHVybk5hbWUsIHZhcmlhYmxlTmFtZSwgbV9pbmRlbnQpOwotICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7
XG4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCAicmV0dXJuICIsIHRlbXBSZXR1cm5OYW1lLCAiO1xuIik7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm47XG4iKTsK
LX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3Rh
dGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
X2luZGVudCwgInN3aXRjaCAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRl
bWVudC52YWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHsiKTsKLQotICAg
IHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzd2l0Y2hTY29wZShtX2luZGVudCk7Ci0gICAg
ICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygp
KQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2Up
Ci17Ci0gICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCAiY2FzZSAiKTsKLSAgICAgICAgZW1pdENvbnN0YW50RXhwcmVz
c2lvblN0cmluZygqc3dpdGNoQ2FzZS52YWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiOlxuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJkZWZhdWx0OlxuIik7Ci0gICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25h
bDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVh
a0NvbnRleHQ6OlN3aXRjaCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxv
Y2soKSk7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU4MTIgRmlndXJlIG91dCB3aGV0aGVyIHdlIG5lZWQgdG8gYnJlYWsgb3IgZmFsbHRo
cm91Z2guCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7
Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShpbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5
cGVOYW1lLCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwotfQotCi12b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
JiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0g
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVz
b2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIs
IG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAi
KSIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGbG9h
dExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9hdExpdGVyYWwucmVzb2x2ZWRUeXBlKCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBl
TmFtZSwgIj4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0
ZXJhbCkKLXsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShib29sZWFuTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29s
ZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIikiKTsKLX0KLQotdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgQVNTRVJUKGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgYXV0byBt
YW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1hbmdsZWRUeXBlTmFtZSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVt
ZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVy
KCkpKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsK
LX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIE1hbmdsZWRT
dHJ1Y3R1cmVFbGVtZW50TmFtZSBtYW5nbGVkRmllbGROYW1lID0gbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZp
ZWxkKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpLT4iLCBtYW5nbGVkRmllbGROYW1lKTsKLX0KLQotdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lv
bikKLXsKLSAgICBhdXRvJiB0eXBlID0gZG90RXhwcmVzc2lvbi5iYXNlKCkucmVzb2x2ZWRUeXBl
KCkudW5pZnlOb2RlKCk7Ci0KLSAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0
eXBlKSkgewotICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAgYXV0byogc3RydWN0dXJlRWxl
bWVudCA9IHN0cnVjdHVyZURlZmluaXRpb24uZmluZChkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgp
KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICBhdXRvIGVsZW1l
bnROYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpzdHJ1
Y3R1cmVFbGVtZW50KTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikuIiwgZWxlbWVudE5hbWUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSA9IGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCk7
Ci0gICAgICAgIGlmIChlbGVtZW50TmFtZSA9PSAibGVuZ3RoIiAmJiAoaXM8QVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGU+KHR5cGUpIHx8IGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSB8fCAoaXM8QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSkpIHsKLSAgICAgICAgICAgIGlmIChpczxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIpLmxlbmd0aCIpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5
VHlwZT4odHlwZSkpIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCco
Jyk7Ci0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFz
ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25j
YXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS5udW1FbGVtZW50cygpLCAiKSIpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgp
KTsKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS52ZWN0b3JTaXplKCksICIpIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVz
c2lvbi5iYXNlKCkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS4iLCBl
bGVtZW50TmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQot
ewotICAgIGF1dG8mIHR5cGUgPSBpbmRleEV4cHJlc3Npb24uYmFzZSgpLnJlc29sdmVkVHlwZSgp
LnVuaWZ5Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkp
IHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIikucG9pbnRlclsoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
bmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpIDwgKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHBy
ZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikubGVuZ3Ro
ID8gIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhF
eHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAwXSIpOwot
ICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4
RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLmRh
dGEoKVsoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5k
ZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDwgIiwg
ZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHR5cGUpLm51bUVsZW1lbnRzKCksICIgPyAiKTsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24o
KSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA6IDBdIik7Ci0gICAgfSBlbHNl
IGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0
byYgbmF0aXZlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBl
KTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZTsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUuaXNNYXRy
aXgoKSkKLSAgICAgICAgICAgIHNpemUgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Q29sdW1u
cygpOwotICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlLmlzVmVjdG9yKCkpCi0gICAgICAgICAg
ICBzaXplID0gbmF0aXZlVHlwZS52ZWN0b3JTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNz
aW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilbKCIpOwotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigp
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIDwgIiwgc2l6ZSwgIikgPyAoIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNz
aW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogMF0iKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCi19Ci0KLXZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24m
IHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxlRGVjbGFyYXRpb24u
dHlwZSgpKTsKLSAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZ2YXJpYWJs
ZURlY2xhcmF0aW9uLCB2YXJpYWJsZU5hbWUpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjAgSW1wbGVtZW50IHF1YWxpZmllcnMuCi0gICAg
aWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkgewotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
KnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKTsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxp
emVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFy
aWFibGVOYW1lLCAiID0geyB9O1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lv
bikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgnKScpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICgiKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAg
YXV0byBpdGVyID0gbV9ob2lzdGVkVmFyaWFibGVzLmZpbmQoJmNhbGxFeHByZXNzaW9uKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1faG9pc3RlZFZhcmlhYmxlcy5lbmQoKSk7Ci0gICAg
YXV0byYgdmFyaWFibGVzID0gaXRlci0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbEV4
cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpIDw9IHZhcmlhYmxlcy5zaXplKCkpOwotICAgIFZl
Y3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiBhcmd1bWVudE5hbWVzOwotCi0gICAgTWFuZ2xlZFZh
cmlhYmxlTmFtZSByZXN1bHROYW1lOwotICAgIGlmICghbWF0Y2hlcyhjYWxsRXhwcmVzc2lvbi5y
ZXNvbHZlZFR5cGUoKSwgbV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAgICByZXN1bHRO
YW1lID0gdmFyaWFibGVzLmxhc3QoKS5uYW1lOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbEV4cHJlc3Npb24uYXJndW1l
bnRzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXJndW1lbnROYW1lcy5hcHBlbmQodmFyaWFi
bGVzW2ldLm5hbWUpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZhcmlhYmxlc1tp
XS5uYW1lLCAiID0gKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Np
b24uYXJndW1lbnRzKClbaV0pOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAi
KTsKLSAgICB9Ci0KLSAgICBpZiAoaXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihj
YWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkgewotICAgICAgICBpbmxpbmVOYXRpdmVGdW5jdGlv
bihtX3N0cmluZ0J1aWxkZXIsIGRvd25jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSksIGFyZ3VtZW50TmFtZXMsIHJlc3VsdE5hbWUs
IG1fdHlwZU5hbWVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9m
dW5jdGlvbk1hcHBpbmcuZmluZCgmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSk7Ci0gICAgICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJs
ZXNbaV0ubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KScpOwotICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBj
b21tYUV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAg
IGJvb2wgcmFuT25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNvbW1h
RXhwcmVzc2lvbi5saXN0KCkpIHsKLSAgICAgICAgaWYgKHJhbk9uY2UpCi0gICAgICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICByYW5PbmNlID0gdHJ1ZTsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9u
KQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiooIik7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIigoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2lj
YWxFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
Ci0gICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6
TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICYmICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJl
c3Npb246OlR5cGU6Ok9yOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSkiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RF
eHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiEoIik7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1h
ZGUgdG8gd29yay4gSXQgcHJvYmFibHkgc2hvdWxkIGJlIHVzaW5nIHRoZSBsYXN0IGxlZnRWYWx1
ZSB0b28uCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODgzOAotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAg
IGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxl
ZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1hbmdsZWRUeXBlTmFtZSwgInsgIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCAxIH0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlU
eXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlw
ZSgpKSkgewotICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlw
ZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsg
Iik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmxlZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLmRhdGEo
KSwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICIgfSIpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiIHsgJiIpOwotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0
VmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAg
fQotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCImKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlUG9pbnRlckV4
cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsK
LX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKQotewotICAgIC8qCi0gICAgICogIDEu
IEV2YWx1YXRlIG1fbGVmdFZhbHVlCi0gICAgICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1f
b2xkVmFsdWUKLSAgICAgKiAgMy4gRXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Npb24KLSAgICAg
KiAgNC4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9uZXdWYWx1ZQotICAgICAqICA1LiBBc3NpZ24g
dGhlIHJlc3VsdCB0byBtX2xlZnRWYWx1ZQotICAgICAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4
cHJlc3Npb24KLSAgICAgKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQKLSAgICAgKi8KLQotICAgIGF1
dG8gaXRlciA9IG1faG9pc3RlZFZhcmlhYmxlcy5maW5kKCZyZWFkTW9kaWZ5V3JpdGUpOwotICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9ob2lzdGVkVmFyaWFibGVzLmVuZCgpKTsKLSAgICBh
dXRvJiB2YXJpYWJsZXMgPSBpdGVyLT52YWx1ZTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YXJpYWJs
ZXMuc2l6ZSgpID09IDIpOwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvbGRWYWx1ZVZhcmlh
YmxlID0gdmFyaWFibGVzWzBdLm5hbWU7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSBuZXdWYWx1
ZVZhcmlhYmxlID0gdmFyaWFibGVzWzFdLm5hbWU7Ci0KLSAgICBtX3ZhcmlhYmxlTWFwcGluZy5h
ZGQoJnJlYWRNb2RpZnlXcml0ZS5vbGRWYWx1ZSgpLCBvbGRWYWx1ZVZhcmlhYmxlKTsKLSAgICBt
X3ZhcmlhYmxlTWFwcGluZy5hZGQoJnJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZSgpLCBuZXdWYWx1
ZVZhcmlhYmxlKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQob2xkVmFsdWVWYXJpYWJsZSwgIiA9ICIpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkpOwotCi0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBuZXdWYWx1ZVZhcmlhYmxlLCAiID0gIik7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0K
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChyZWFkTW9kaWZ5V3JpdGUubGVmdFZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiA9ICIsIG5ld1ZhbHVlVmFyaWFibGUsICIsICIpOwotCi0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFy
eUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikg
PyAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHBy
ZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgOiAoIik7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNl
KQotewotICAgIEFTU0VSVCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJp
YWJsZSgpKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkp
OwotCi0gICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB2YXJpYWJsZU5hbWUgPSBpdGVyYXRvci0+dmFs
dWU7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh2YXJpYWJsZU5hbWUpOwotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyhB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKQotewotICAgIGNvbnN0
YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbJl0oQVNUOjpJ
bnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwp
IHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFs
JiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoZmxv
YXRMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpCb29sZWFu
TGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChib29sZWFuTGl0ZXJh
bC52YWx1ZSgpKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInRydWUi
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJmYWxzZSIpOwotICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAgICAgQVNT
RVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVm
aW5pdGlvbigpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25EZWZpbml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0
aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkp
OwotICAgICAgICB9Ci0gICAgKSk7Ci19Ci0KLWNsYXNzIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlciBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewotcHVibGlj
OgotICAgIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJp
bmdCdWlsZGVyLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwg
SGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYg
ZnVuY3Rpb25NYXBwaW5nLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGlj
cywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0
cmluZ0J1aWxkZXIsIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlv
dXQpCi0gICAgICAgICwgbV9tYXRjaGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGlj
cykpCi0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKSBvdmVycmlkZTsKLQotICAgIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MgbV9t
YXRjaGVkU2VtYW50aWNzOwotfTsKLQotc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9s
ZGluZz4gUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsK
LSAgICBhdXRvIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSA9IFt0aGlzXSgpIC0+IE1hbmdsZWRW
YXJpYWJsZU5hbWUgewotICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7Ci0gICAgfTsKLSAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRT
ZW1hbnRpY3MudmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBt
X3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVt
cywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwg
V1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0
Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1f
bWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9p
bnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
RW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJj
ZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRj
aGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotY2xhc3MgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewotcHVibGljOgotICAgIENvbXB1dGVGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW50cmlu
c2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZywg
TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91
dCkKLSAgICAgICAgOiBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgaW50
cmluc2ljcywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIGxheW91dCkKLSAgICAgICAgLCBt
X21hdGNoZWRTZW1hbnRpY3MoV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSkKLSAgICB7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+
IGNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92
ZXJyaWRlOwotCi0gICAgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MgbV9tYXRjaGVkU2VtYW50aWNz
OwotfTsKLQotc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBnZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhpc10oKSAtPiBNYW5nbGVkVmFyaWFibGVOYW1lIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIH07
Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRl
cikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VN
YXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwotICAgIHJl
dHVybiBudWxscHRyOwotfQotCi1zdGF0aWMgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiBnZW5lcmF0ZU1ldGFsRnVuY3Rpb25zTWFwcGluZyhQ
cm9ncmFtJiBwcm9ncmFtKQotewotICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9ucyA9IDA7Ci0gICAg
SGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiBm
dW5jdGlvbk1hcHBpbmc7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGZ1
bmN0aW9uTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbiwgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZSB7IG51bUZ1bmN0aW9ucysrIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIHJldHVybiBmdW5jdGlvbk1hcHBp
bmc7Ci19Ci0KLXN0YXRpYyB2b2lkIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1l
ciwgY29uc3QgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiYgcmVhY2hhYmxlRnVu
Y3Rpb25zLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlv
bk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcpCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmlu
aXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAoIWZ1
bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUoKSAmJiByZWFjaGFibGVGdW5jdGlvbnMu
Y29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAgICBkZWNsYXJlRnVuY3Rp
b24oc3RyaW5nQnVpbGRlciwgZnVuY3Rpb25EZWZpbml0aW9uLCB0eXBlTmFtZXIsIGZ1bmN0aW9u
TWFwcGluZyk7Ci0gICAgfQotCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci19Ci0K
LWNsYXNzIFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyIGZpbmFsIDogcHVibGljIFZpc2l0b3Ig
ewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5j
dGlvbkRlY2xhcmF0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBt
X3JlYWNoYWJsZUZ1bmN0aW9ucy5hZGQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlv
bkRlY2xhcmF0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Np
b24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQoY2FsbEV4cHJlc3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRp
b24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5m
dW5jdGlvbigpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KGNhbGxFeHByZXNzaW9u
LmZ1bmN0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbio+IHRha2VSZWFjaGFibGVGdW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hh
YmxlRnVuY3Rpb25zKTsgfQotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKj4gbV9yZWFjaGFibGVGdW5jdGlvbnM7Ci19OwotCi1SZW5kZXJNZXRhbEZ1bmN0
aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRjaGVkUmVu
ZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAg
YXV0byYgdmVydGV4U2hhZGVyRW50cnlQb2ludCA9ICptYXRjaGVkU2VtYW50aWNzLnZlcnRleFNo
YWRlcjsKLSAgICBhdXRvKiBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQgPSBtYXRjaGVkU2VtYW50
aWNzLmZyYWdtZW50U2hhZGVyOwotCi0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVh
Y2hhYmxlRnVuY3Rpb25zR2F0aGVyZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIu
VmlzaXRvcjo6dmlzaXQodmVydGV4U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKGZyYWdtZW50
U2hhZGVyRW50cnlQb2ludCkKLSAgICAgICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlz
aXRvcjo6dmlzaXQoKmZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgYXV0byByZWFjaGFi
bGVGdW5jdGlvbnMgPSByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci50YWtlUmVhY2hhYmxlRnVu
Y3Rpb25zKCk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uTWFwcGluZyA9IGdlbmVyYXRlTWV0YWxGdW5j
dGlvbnNNYXBwaW5nKHByb2dyYW0pOwotICAgIAotICAgIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9u
cyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9ucywg
ZnVuY3Rpb25NYXBwaW5nKTsKLQotICAgIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBm
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbS5pbnRyaW5zaWNz
KCksIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3Mp
LCBsYXlvdXQpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5m
dW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5j
b250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHJldHVy
biB7IGZ1bmN0aW9uTWFwcGluZy5nZXQoJnZlcnRleFNoYWRlckVudHJ5UG9pbnQpLCBmcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnQgPyBmdW5jdGlvbk1hcHBpbmcuZ2V0KGZyYWdtZW50U2hhZGVyRW50
cnlQb2ludCkgOiBNYW5nbGVkRnVuY3Rpb25OYW1lIHsgMCB9IH07Ci19Ci0KLUNvbXB1dGVNZXRh
bEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIsIFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXRj
aGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQot
ewotICAgIGF1dG8mIGVudHJ5UG9pbnQgPSAqbWF0Y2hlZFNlbWFudGljcy5zaGFkZXI7Ci0KLSAg
ICBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlcjsK
LSAgICByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdChlbnRyeVBvaW50
KTsKLSAgICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhl
cmVyLnRha2VSZWFjaGFibGVGdW5jdGlvbnMoKTsKLQotICAgIGF1dG8gZnVuY3Rpb25NYXBwaW5n
ID0gZ2VuZXJhdGVNZXRhbEZ1bmN0aW9uc01hcHBpbmcocHJvZ3JhbSk7Ci0gICAgZW1pdFNoYXJl
ZE1ldGFsRnVuY3Rpb25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hh
YmxlRnVuY3Rpb25zLCBmdW5jdGlvbk1hcHBpbmcpOwotCi0gICAgQ29tcHV0ZUZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgcHJv
Z3JhbS5pbnRyaW5zaWNzKCksIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1h
dGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0
aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKHJlYWNo
YWJsZUZ1bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAg
IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAg
IH0KLQotICAgIHJldHVybiB7IGZ1bmN0aW9uTWFwcGluZy5nZXQoJmVudHJ5UG9pbnQpIH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RnVuY3Rpb25Xcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTQ0OTM5ZjE2MTZlOGUxMjNiNTllM2U3ODBiNWY5NjY5NDcwODgzMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUg
IldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xh
c3MgVHlwZU5hbWVyOwotCi1zdHJ1Y3QgUmVuZGVyTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIHsK
LSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAg
ICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsK
LVJlbmRlck1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5n
QnVpbGRlciYsIFByb2dyYW0mLCBUeXBlTmFtZXImLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYs
IExheW91dCYpOwotCi1zdHJ1Y3QgQ29tcHV0ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyB7Ci0g
ICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci19OwotQ29tcHV0
ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRl
ciYsIFByb2dyYW0mLCBUeXBlTmFtZXImLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmLCBMYXlv
dXQmKTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTWFuZ2xlZE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YjYwNGVkNzNlMDI3Mzg2MTNkYzZkY2JiM2M0NTgzNGMyMmRlOWVjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMTWFuZ2xlZE5hbWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RydWN0IE1hbmdsZWRWYXJpYWJsZU5hbWUg
ewotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KLSAgICB1bnNpZ25lZCB2YWx1
ZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gInZhcmlhYmxlIjsKLX07Ci0KLXN0cnVjdCBN
YW5nbGVkVHlwZU5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogcHJlZml4ID0gInR5cGUiOwotfTsKLQotc3RydWN0IE1hbmdsZWRTdHJ1
Y3R1cmVFbGVtZW50TmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAic3RydWN0dXJlRWxlbWVudCI7Ci19OwotCi1zdHJ1
Y3QgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAiZW51bWVyYXRpb25NZW1i
ZXIiOwotfTsKLQotc3RydWN0IE1hbmdsZWRGdW5jdGlvbk5hbWUgewotICAgIHVuc2lnbmVkIHZh
bHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gImZ1bmN0aW9u
IjsKLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcocHJl
Zml4LCB2YWx1ZSk7IH0KLX07Ci0KLXVzaW5nIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lID0gVmFy
aWFudDxNYW5nbGVkVHlwZU5hbWUsIFN0cmluZz47Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hbmdsZWROYW1lVHlwZT4KLWNsYXNzIE1h
bmdsZWROYW1lQWRhcHRvciB7Ci1wdWJsaWM6Ci0gICAgTWFuZ2xlZE5hbWVBZGFwdG9yKE1hbmds
ZWROYW1lVHlwZSBuYW1lKQotICAgICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBzdHJsZW4oTWFuZ2xlZE5hbWVUeXBl
OjpwcmVmaXgpICsgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcobV9uYW1lLnZhbHVlKTsgfQotICAg
IGJvb2wgaXM4Qml0KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKLSAg
ICB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVmaXgpLCBzdHJs
ZW4oTWFuZ2xlZE5hbWVUeXBlOjpwcmVmaXgpKTsKLSAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZm
ZXIobV9uYW1lLnZhbHVlLCBkZXN0aW5hdGlvbiArIHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6OnBy
ZWZpeCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNYW5nbGVkTmFtZVR5cGUgbV9uYW1lOwot
fTsKLQotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6
TWV0YWw6Ok1hbmdsZWRWYXJpYWJsZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRh
cHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRWYXJpYWJsZU5hbWU+IHsKLXB1Ymxp
YzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRW
YXJpYWJsZU5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAg
ICB7Ci0gICAgfQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWRO
YW1lQWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZT4gewotcHVi
bGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFR5cGVOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAg
ewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lLCB2b2lkPiA6IHB1Ymxp
YyBNYW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0
dXJlRWxlbWVudE5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBuYW1lKQotICAgICAg
ICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8
PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRF
bnVtZXJhdGlvbk1lbWJlck5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWU+IHsKLXB1
YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmds
ZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0
b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFk
YXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lLCB2b2lkPiA6
IHB1YmxpYyBNYW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVk
RnVuY3Rpb25OYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xl
ZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3Mg
U3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkT3JOYXRpdmVU
eXBlTmFtZSwgdm9pZD4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG5hbWUpCi0gICAg
ICAgIDogbV9uYW1lIHsgbmFtZSB9Ci0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0
aCgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJiBt
YW5nbGVkVHlwZU5hbWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RybGVuKFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpICsgbGVuZ3RoT2ZJbnRlZ2Vy
QXNTdHJpbmcobWFuZ2xlZFR5cGVOYW1lLnZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzOEJpdCgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX25h
bWUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFR5cGVOYW1lJikgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVU
byhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIFdURjo6c3dpdGNo
T24obV9uYW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6
Ok1hbmdsZWRUeXBlTmFtZSYgbWFuZ2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4
KSwgc3RybGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgp
KTsKLSAgICAgICAgICAgICAgICB3cml0ZUludGVnZXJUb0J1ZmZlcihtYW5nbGVkVHlwZU5hbWUu
dmFsdWUsIGRlc3RpbmF0aW9uICsgc3RybGVuKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xl
ZFR5cGVOYW1lOjpwcmVmaXgpKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB7IHN0cmlu
ZyB9LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSYgbV9uYW1lOwotfTsKLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENv
ZGVHZW5lcmF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGFmZWJkYTU2
ZDZkNjczMDE4ZDgzMWFmNjQzMmYzN2QxNjE3YjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFt
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29k
ZSA9IGZhbHNlOwotCi1zdGF0aWMgU3RyaW5nVmlldyBtZXRhbENvZGVQcm9sb2d1ZSgpCi17Ci0g
ICAgcmV0dXJuIFN0cmluZ1ZpZXcgewotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj5c
biIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9hdG9taWM+XG4iCi0gICAgICAgICIjaW5jbHVk
ZSA8bWV0YWxfbWF0aD5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9yZWxhdGlvbmFsPlxu
IgotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX2NvbXB1dGU+XG4iCi0gICAgICAgICIjaW5jbHVk
ZSA8bWV0YWxfdGV4dHVyZT5cbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidXNpbmcgbmFtZXNw
YWNlIG1ldGFsO1xuIgotICAgICAgICAiXG4iCi0gICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgaW50IENvbHMsIGludCBSb3dzPlxuIgotICAgICAgICAic3RydWN0IFdTTE1hdHJpeFxuIgot
ICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzxULCBSb3dzPiBjb2x1bW5zW0NvbHNdO1xu
IgotICAgICAgICAiICAgIHByaXZhdGU6XG4iCi0gICAgICAgICIgICAgcHVibGljOlxuIgotICAg
ICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoKSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAg
ICAiICAgIGlubGluZSBXU0xNYXRyaXgoKSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAg
ICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWQgV1NMTWF0cml4PFQsIENvbHMsIFJv
d3M+ICZ0aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xN
YXRyaXgoY29uc3QgZGV2aWNlIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFk
ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0
YW50IFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIK
LSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZGdyb3VwIFdTTE1hdHJp
eDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAg
ICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4g
JnRoYXQpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0
cml4KGNvbnN0IGRldmljZSBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50
ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGNvbnN0
YW50IFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xu
IgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkZ3JvdXAgV1NMTWF0
cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAg
ICIgICAgcHVibGljOlxuIgotICAgICAgICAiICAgIGlubGluZSB0aHJlYWQgdmVjPFQsIFJvd3M+
ICZvcGVyYXRvcltdKGludCByKSB0aHJlYWRcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAg
ICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAg
ICAgIiAgICBpbmxpbmUgZGV2aWNlIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgZGV2
aWNlXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1u
c1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIHRocmVhZGdy
b3VwIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgdGhyZWFkZ3JvdXBcbiIKLSAgICAg
ICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAg
ICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgdGhyZWFkIHZlYzxULCBS
b3dzPiAmb3BlcmF0b3JbXShpbnQgcikgY29uc3QgdGhyZWFkXG4iCi0gICAgICAgICIgICAge1xu
IgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9
XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0IGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJh
dG9yW10oaW50IHIpIGNvbnN0IGRldmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAg
IiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAg
ICAiICAgIGlubGluZSBjb25zdCBjb25zdGFudCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50
IHIpIGNvbnN0IGNvbnN0YW50XG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAg
ICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAg
aW5saW5lIGNvbnN0IHRocmVhZGdyb3VwIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikg
Y29uc3QgdGhyZWFkZ3JvdXBcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAg
IHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn07XG4i
Ci0KLQotICAgIH07Ci0KLX0KLQotc3RhdGljIHZvaWQgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgaWYgKGR1bXBNZXRhbENvZGUpIHsK
LSAgICAgICAgZGF0YUxvZ0xuKCJHZW5lcmF0ZWQgTWV0YWwgY29kZTogIik7Ci0gICAgICAgIGRh
dGFMb2dMbihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KLX0KLQotUmVuZGVyTWV0
YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHByb2dyYW0sIE1hdGNoZWRSZW5kZXJT
ZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxD
b2RlUHJvbG9ndWUoKSk7Ci0KLSAgICBUeXBlTmFtZXIgdHlwZU5hbWVyKHByb2dyYW0pOwotICAg
IHR5cGVOYW1lci5lbWl0TWV0YWxUeXBlcyhzdHJpbmdCdWlsZGVyKTsKLSAgICAKLSAgICBhdXRv
IG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyA9IE1ldGFsOjplbWl0TWV0YWxGdW5jdGlvbnMoc3Ry
aW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3Mp
LCBsYXlvdXQpOwotCi0gICAgZHVtcE1ldGFsQ29kZUlmTmVlZGVkKHN0cmluZ0J1aWxkZXIpOwot
Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShzdHJpbmdCdWlsZGVyKSwgV1RGTW92ZShtZXRhbEZ1bmN0
aW9uRW50cnlQb2ludHMubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lKSwgV1RGTW92ZShtZXRh
bEZ1bmN0aW9uRW50cnlQb2ludHMubWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUpIH07Ci19
Ci0KLUNvbXB1dGVNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwg
TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91
dCkKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWV0YWxDb2RlUHJvbG9ndWUoKSk7Ci0KLSAgICBUeXBlTmFtZXIgdHlwZU5hbWVy
KHByb2dyYW0pOwotICAgIHR5cGVOYW1lci5lbWl0TWV0YWxUeXBlcyhzdHJpbmdCdWlsZGVyKTsK
LQotICAgIGF1dG8gbWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzID0gTWV0YWw6OmVtaXRNZXRhbEZ1
bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hl
ZFNlbWFudGljcyksIGxheW91dCk7Ci0KLSAgICBkdW1wTWV0YWxDb2RlSWZOZWVkZWQoc3RyaW5n
QnVpbGRlcik7Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHN0cmluZ0J1aWxkZXIpLCBXVEZNb3Zl
KG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cy5tYW5nbGVkRW50cnlQb2ludE5hbWUpIH07Ci19Ci0K
LX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFs
Q29kZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2M0ODc2MTdjYjkwNWFlMmViMDY5NDBhMTc0ZTQwOTU4MmI4YzNiYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNp
bmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50
aWNNYXRjaGVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0K
LW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0cnVjdCBSZW5kZXJNZXRhbENvZGUgewotICAgIFN0cmlu
Z0J1aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVy
dGV4RW50cnlQb2ludE5hbWU7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21l
bnRFbnRyeVBvaW50TmFtZTsKLX07Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3Mg
bmVlZCB0byBiZSBkb25lIGVhcmxpZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2Yg
dGhlIGNvbXBpbGVyLgotUmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0m
LCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0Jik7Ci0K
LXN0cnVjdCBDb21wdXRlTWV0YWxDb2RlIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNl
OwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotfTsKLS8v
IENhbid0IGZhaWwuIEFueSBmYWlsdXJlIGNoZWNrcyBuZWVkIHRvIGJlIGRvbmUgZWFybGllciwg
aW4gdGhlIGJhY2tlbmQtYWdub3N0aWMgcGFydCBvZiB0aGUgY29tcGlsZXIuCi1Db21wdXRlTWV0
YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGlj
cyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYpOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkMmM4YTg3YmM2
N2M5ZmU2MmNlM2U2NDRhNjY0YTg2NGM0NjVkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3Bh
Y2UuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVE
ZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJXSExT
TFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyBTdHJp
bmcgbWFwRnVuY3Rpb25OYW1lKFN0cmluZyYgZnVuY3Rpb25OYW1lKQotewotICAgIGlmIChmdW5j
dGlvbk5hbWUgPT0gImRkeCIpCi0gICAgICAgIHJldHVybiAiZGZkeCJfc3RyOwotICAgIGlmIChm
dW5jdGlvbk5hbWUgPT0gImRkeSIpCi0gICAgICAgIHJldHVybiAiZGZkeSJfc3RyOwotICAgIGlm
IChmdW5jdGlvbk5hbWUgPT0gImFzaW50IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGludDMy
X3Q+Il9zdHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiYXN1aW50IikKLSAgICAgICAgcmV0
dXJuICJhc190eXBlPHVpbnQzMl90PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFz
ZmxvYXQiKQotICAgICAgICByZXR1cm4gImFzX3R5cGU8ZmxvYXQ+Il9zdHI7Ci0gICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTsKLX0KLQotc3RhdGljIFN0cmluZyBhdG9taWNOYW1lKFN0cmluZyBpbnB1
dCkKLXsKLSAgICBpZiAoaW5wdXQgPT0gIkFkZCIpCi0gICAgICAgIHJldHVybiAiZmV0Y2hfYWRk
Il9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJBbmQiKQotICAgICAgICByZXR1cm4gImZldGNoX2Fu
ZCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiRXhjaGFuZ2UiKQotICAgICAgICByZXR1cm4gImV4
Y2hhbmdlIl9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJNYXgiKQotICAgICAgICByZXR1cm4gImZl
dGNoX21heCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiTWluIikKLSAgICAgICAgcmV0dXJuICJm
ZXRjaF9taW4iX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk9yIikKLSAgICAgICAgcmV0dXJuICJm
ZXRjaF9vciJfc3RyOwotICAgIEFTU0VSVChpbnB1dCA9PSAiWG9yIik7Ci0gICAgICAgIHJldHVy
biAiZmV0Y2hfeG9yIl9zdHI7Ci19Ci0KLXN0YXRpYyBpbnQgdmVjdG9yTGVuZ3RoKEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaW50IHZl
Y3Rvckxlbmd0aCA9IDE7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3Vt
ZW50cygpLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRp
b24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgICAgIHZlY3Rvckxlbmd0aCA9IFdURjo6Z2V0
PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3Vt
ZW50cygpWzFdKS5pbnRlZ2VyTGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotICAgIHJldHVybiB2
ZWN0b3JMZW5ndGg7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB2ZWN0b3JTdWZmaXgoaW50IHZl
Y3Rvckxlbmd0aCkKLXsKLSAgICBzd2l0Y2ggKHZlY3Rvckxlbmd0aCkgewotICAgIGNhc2UgMToK
LSAgICAgICAgcmV0dXJuICIiOwotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuICIyIjsKLSAg
ICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiAiMyI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUKHZlY3Rvckxlbmd0aCA9PSA0KTsKLSAgICAgICAgcmV0dXJuICI0IjsKLSAgICB9Ci19Ci0K
LWVudW0gY2xhc3MgU2FtcGxlVHlwZSB7Ci0gICAgU2FtcGxlLAotICAgIFNhbXBsZUxldmVsLAot
ICAgIFNhbXBsZUJpYXMsCi0gICAgU2FtcGxlR3JhZAotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U2FtcGxlVHlwZT4gc2FtcGxlVHlwZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsK
LSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGUiKQotICAgICAgICByZXR1cm4gU2FtcGxl
VHlwZTo6U2FtcGxlOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUxldmVsIikKLSAg
ICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOwotICAgIGlmIChmdW5jdGlvbk5h
bWUgPT0gIlNhbXBsZUJpYXMiKQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlQmlh
czsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVHcmFkIikKLSAgICAgICAgcmV0dXJu
IFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQot
dm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24s
IGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgYXJncywgTWFuZ2xlZFZhcmlhYmxl
TmFtZSByZXN1bHROYW1lLCBUeXBlTmFtZXImIHR5cGVOYW1lcikKLXsKLSAgICBhdXRvIGFzTWF0
cml4VHlwZSA9IFsmXSAoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIC0+IEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uKiB7Ci0gICAgICAgIGF1dG8mIHJlYWxUeXBlID0gdW5uYW1lZFR5
cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghcmVhbFR5cGUuaXNOYXRpdmVUeXBlRGVjbGFy
YXRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGF1dG8mIG1h
eWJlTWF0cml4VHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZWFs
VHlwZSk7Ci0gICAgICAgIGlmIChtYXliZU1hdHJpeFR5cGUuaXNNYXRyaXgoKSkKLSAgICAgICAg
ICAgIHJldHVybiAmbWF5YmVNYXRyaXhUeXBlOwotCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH07Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5pc0Nhc3QoKSkgewot
ICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBl
KCk7Ci0gICAgICAgIGF1dG8gbWV0YWxSZXR1cm5UeXBlTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUocmV0dXJuVHlwZSk7Ci0KLSAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ldGFsUmV0dXJuVHlwZU5hbWUsICIgeyB9Iik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5
cGUgPSAqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsK
LQotICAgICAgICAgICAgYXV0byBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0
eXBlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlzPEFTVDo6TmFtZWRUeXBlPih0eXBlKSAm
JiBpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+
KHR5cGUpKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhdXRvJiB1bmlmaWVkUmV0dXJu
VHlwZSA9IHJldHVyblR5cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICBpZiAoaXNFbnVtZXJh
dGlvbkRlZmluaXRpb24odW5pZmllZFJldHVyblR5cGUpICYmICFpc0VudW1lcmF0aW9uRGVmaW5p
dGlvbihwYXJhbWV0ZXJUeXBlLnVuaWZ5Tm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8m
IGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0
aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1
cm5UeXBlTmFtZSwgIj4oKCIpOwotICAgICAgICAgICAgICAgIGJvb2wgbG9vcGVkT25jZSA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJh
dGlvbk1lbWJlcnMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobG9vcGVkT25jZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGhhc1plcm9DYXNlIHw9ICFtZW1iZXIuZ2V0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1swXSwgIiA9PSAiLCBt
ZW1iZXIuZ2V0KCkudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxvb3BlZE9uY2UgPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGhh
c1plcm9DYXNlLCBoYXNaZXJvQ2FzZSk7Ci0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKSA/ICIsIGFyZ3NbMF0sICIgOiAwKSIpOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1ldGFs
UmV0dXJuVHlwZU5hbWUsICI+KCIsIGFyZ3NbMF0sICIpIik7Ci0KLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhU
eXBlKHJldHVyblR5cGUpKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBlaXRoZXIgY29uc3RydWN0
aW5nIHdpdGggYWxsIGluZGl2aWR1YWwgZWxlbWVudHMsIG9yIHdpdGgKLSAgICAgICAgICAgIC8v
IHZlY3RvcnMgZm9yIGVhY2ggY29sdW1uLgotCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnKCcpOwotICAgICAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IG1hdHJpeFR5cGUtPm51
bWJlck9mTWF0cml4Q29sdW1ucygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5n
IHdpdGggdmVjdG9ycyBmb3IgZWFjaCBjb2x1bW4uCi0gICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7
Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICIu
Y29sdW1uc1siLCBpLCAiXSA9ICIsIGFyZ3NbaV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHdpdGggYWxs
IGVsZW1lbnRzLgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3Muc2l6ZSgpID09
IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpICogbWF0cml4VHlwZS0+bnVtYmVy
T2ZNYXRyaXhSb3dzKCkpOwotCi0gICAgICAgICAgICAgICAgc2l6ZV90IGFyZ051bWJlciA9IDA7
Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1i
ZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhSb3dzKCk7ICsraikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ051bWJlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICIuY29sdW1uc1siLCBpLCAi
XVsiLCBqLCAiXSA9ICIsIGFyZ3NbYXJnTnVtYmVyXSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICArK2FyZ051bWJlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwg
cmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsUmV0dXJuVHlwZU5hbWUsICcoJyk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChhcmdzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnKScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uaXNPcGVyYXRvcigpKSB7Ci0gICAgICAgIGF1dG8gb3BlcmF0b3JOYW1l
ID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciJf
c3RyLmxlbmd0aCgpKTsKLQotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgb2sgdG8g
ZG8gc2luY2UgdGhlIGFyZ3MgdG8gdGhpcyBmdW5jdGlvbiBhcmUgYWxsIHRlbXBzLgotICAgICAg
ICAgICAgLy8gU28gdGhpbmdzIGxpa2UgKysgYW5kIC0tIGFyZSBvayB0byBkby4KLQotICAgICAg
ICAgICAgaWYgKGF1dG8qIG1hdHJpeFR5cGUgPSBhc01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi50eXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0cml4
VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1l
LCAnWycsIGksICJdID0gIiwgb3BlcmF0b3JOYW1lLCBhcmdzWzBdLCAnWycsIGksICddJyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvcGVyYXRvck5hbWUsIGFyZ3NbMF0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgaWYgKGF1dG8qIGxl
ZnRNYXRyaXggPSBhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpWzBdLT50eXBlKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmlnaHRNYXRyaXgg
PSBhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFd
LT50eXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gbWF0cml4IDxvcD4gbWF0cml4Ci0gICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5z
KCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwg
J1snLCBpLCAiXSAiLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgJ1snLCBpLCAnXScpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBtYXRyaXggPG9wPiBzY2FsYXIKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZWZ0TWF0cml4LT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3Vs
dE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdzWzBdLCAnWycsIGksICJdICIsIG9wZXJhdG9yTmFt
ZSwgJyAnLCBhcmdzWzFdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChhdXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKLSAgICAg
ICAgICAgIEFTU0VSVCghYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVswXS0+dHlwZSgpKSk7Ci0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBtYXRy
aXgKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmlnaHRNYXRyaXgtPm51bWJlck9mTWF0cml4Q29sdW1u
cygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIGFyZ3NbMF0sICcgJywgb3BlcmF0
b3JOYW1lLCAnICcsIGFyZ3NbMV0sICdbJywgaSwgJ10nKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBzY2FsYXIKLSAgICAgICAg
ICAgIC8vIHZlY3RvciA8b3A+IHZlY3RvcgotICAgICAgICAgICAgLy8gdmVjdG9yIDxvcD4gc2Nh
bGFyCi0gICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICcoJywgYXJnc1swXSwgJyAnLCBvcGVy
YXRvck5hbWUsICcgJywgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImNvcyIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNp
biIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRhbiIK
LSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFjb3MiCi0g
ICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2luIgotICAg
ICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbiIKLSAgICAg
ICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNvc2giCi0gICAgICAg
IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJzaW5oIgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAidGFuaCIKLSAgICAgICAgfHwg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNlaWwiCi0gICAgICAgIHx8IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJleHAiCi0gICAgICAgIHx8IG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9vciIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxvZyIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInJvdW5kIgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAidHJ1bmMiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJkZHgiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpID09ICJkZHkiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJpc25vcm1hbCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzZmluaXRlIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNpbmYiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpID09ICJpc25hbiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzaW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiYXN1aW50IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiYXNmbG9hdCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxlbmd0aCIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpLCAnKCcsIGFyZ3NbMF0sICcpJyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gInBvdyIgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4yIikg
ewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCku
c2l6ZSgpID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAnKCcsIGFyZ3NbMF0sICIsICIsIGFy
Z3NbMV0sICcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImNsYW1wIikgewotICAgICAgICBBU1NFUlQobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotCi0gICAg
ICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24udHlwZSgpKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICAgICAgICAgIGJvb2wgcmFuT25jZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbWF0cml4VHlw
ZS0+bnVtYmVyT2ZNYXRyaXhSb3dzKCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAo
cmFuT25jZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIpOwotICAgICAgICAgICAgICAgICAgICByYW5PbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHROYW1lLCAnWycsIGksICJdWyIsIGosICJdID0gY2xhbXAoIiwgYXJnc1swXSwgJ1snLCBpLCAi
XVsiLCBqLCAiXSwgIiwgYXJnc1sxXSwgJ1snLCBpLCAiXVsiLCBqLCAiXSwgIiwgYXJnc1syXSwg
J1snLCBpLCAiXVsiLCBqLCAiXSkiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAiKSIp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgImNsYW1wKCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsICIsIGFy
Z3NbMl0sICcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVtb3J5QmFycmllcldp
dGhHcm91cFN5bmMiKSB7Ci0gICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICAiKHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKSwg
dGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCksIHRocmVhZGdy
b3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGV4dHVyZSkpIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRl
dmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2Zs
YWdzOjptZW1fZGV2aWNlKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91cE1lbW9yeUJhcnJpZXJXaXRo
R3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXAp
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkuc3RhcnRzV2l0aCgiSW50ZXJsb2NrZWQiX3N0cikpIHsKLSAgICAgICAg
aWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZSIpIHsKLSAgICAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiKGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtf
ZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1l
bW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCksICIsCi0gICAgICAgICAg
ICAgICAgJyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIGF1dG8gbmFtZSA9IGF0b21p
Y05hbWUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJbnRlcmxv
Y2tlZCJfc3RyLmxlbmd0aCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgJyonLCBhcmdzWzJdLCAiID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQoIiwg
YXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBzYW1wbGVUeXBlID0gV0hMU0w6Ok1l
dGFsOjpzYW1wbGVUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSkgewotICAg
ICAgICBzaXplX3QgYmFzZUFyZ3VtZW50Q291bnQgPSAwOwotICAgICAgICBzd2l0Y2ggKCpzYW1w
bGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlOgotICAgICAgICAgICAg
YmFzZUFyZ3VtZW50Q291bnQgPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U2FtcGxlVHlwZTo6U2FtcGxlTGV2ZWw6Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxl
QmlhczoKLSAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gNDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBi
YXNlQXJndW1lbnRDb3VudCA9IDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IGJhc2VBcmd1bWVudENvdW50IHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCArIDEpOwotICAgICAgICAKLSAgICAg
ICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8mIGxvY2F0
aW9uVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMl0t
PnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byBsb2NhdGlvblZlY3Rvckxlbmd0
aCA9IHZlY3Rvckxlbmd0aChsb2NhdGlvblR5cGUpOwotICAgICAgICBhdXRvJiByZXR1cm5UeXBl
ID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpOwot
ICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBl
KTsKLQotICAgICAgICBpbnQgYXJndW1lbnRJbmRleCA9IDA7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGFyZ3NbYXJndW1lbnRJbmRleF0sICIuc2FtcGxlKCIsIGFyZ3NbYXJndW1lbnRJ
bmRleCArIDFdLCAiLCAiKTsKLSAgICAgICAgYXJndW1lbnRJbmRleCArPSAyOwotCi0gICAgICAg
IGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGFyZ3NbYXJndW1lbnRJbmRleF0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9j
YXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1thcmd1bWVudEluZGV4XSwgJy4nLCAi
eHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKLSAgICAg
ICAgICAgICsrYXJndW1lbnRJbmRleDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwotCi0gICAgICAgIHN3aXRj
aCAoKnNhbXBsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDoKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGxldmVsKCIsIGFyZ3NbYXJndW1lbnRJ
bmRleCsrXSwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5
cGU6OlNhbXBsZUJpYXM6Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBiaWFz
KCIsIGFyZ3NbYXJndW1lbnRJbmRleCsrXSwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ6Ci0gICAgICAgICAgICBpZiAodGV4dHVy
ZVR5cGUuaXNDdWJlVGV4dHVyZSgpKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsIGdyYWRpZW50Y3ViZSgiLCBhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLCAiLCBhcmdzW2Fy
Z3VtZW50SW5kZXggKyAxXSwgIikiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBncmFkaWVudDJkKCIsIGFyZ3NbYXJndW1lbnRJbmRl
eF0sICIsICIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAiKSIpOwotICAgICAgICAgICAgYXJn
dW1lbnRJbmRleCArPSAyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJh
c2VBcmd1bWVudENvdW50ICsgMSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIsIGFyZ3NbYXJndW1lbnRJbmRleCsrXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpIik7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUoKSkKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
cmV0dXJuVmVjdG9yTGVuZ3RoKSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiTG9hZCIpIHsKLSAgICAgICAg
QVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAy
KTsKLQotICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAg
YXV0byYgbG9jYXRpb25UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKVsxXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIGxvY2F0aW9u
VmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKGxvY2F0aW9uVHlwZSk7Ci0gICAgICAgIGF1dG8m
IHJldHVyblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5
Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3Ro
KHJldHVyblR5cGUpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVHlwZU5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGxvY2F0aW9uVHlwZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJygnLCBhcmdzWzFdLCAiID0gIik7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5p
c1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5n
dGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdz
WzFdLCAiLCAiLCBsb2NhdGlvblR5cGVOYW1lLCAnKCcpOwotICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwot
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSwgIiwgbG9jYXRpb25UeXBlTmFt
ZSwgJygnKTsKLQotICAgICAgICAgICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsgIndpZHRoIl9z
dHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
ICAgIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSAtIDEiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAg
IGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSAtIDEpKSIpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsIDAsICIsIGFyZ3Nb
MF0sICIuZ2V0X3dpZHRoKCkgLSAxKSIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsICIsIGxvY2F0
aW9uVHlwZU5hbWUsICIoMCwgMCIpOwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rv
ckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAwIik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIsIGxvY2F0
aW9uVHlwZU5hbWUsICcoJywgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSAtIDEsICIsIGFyZ3NbMF0s
ICIuZ2V0X2hlaWdodCgpIC0gMSIpOwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rv
ckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpIC0gMSIpOwotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1swXSwgIi5yZWFkKCIpOwotCi0gICAg
ICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NF
UlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICco
JywgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxl
bmd0aCAtIDEpLCAiKSwgdWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUo
KSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJz
dHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoJyknKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsb2FkIikgewotICAgICAgICBBU1NFUlQobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJhdG9taWNfbG9hZF9leHBsaWNp
dCgiLCBhcmdzWzBdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
c3RvcmUiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgImF0b21pY19zdG9yZV9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFd
LCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2V0RGltZW5zaW9u
cyIpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLQotICAgICAgICBhdXRv
JiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLQotICAgICAgICBzaXplX3QgaW5kZXggPSAx
OwotICAgICAgICBib29sIGhhc01pcExldmVsID0gIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0
dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDE7Ci0gICAgICAgIGlm
IChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIGNvbnN0IE1hbmds
ZWRWYXJpYWJsZU5hbWUmIHdpZHRoTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICArK2luZGV4
OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5hbWU7
Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMikgewotICAg
ICAgICAgICAgaGVpZ2h0TmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsK
LSAgICAgICAgfQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRl
cHRoTmFtZTsKLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAz
KSB7Ci0gICAgICAgICAgICBkZXB0aE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsr
aW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVO
YW1lPiBlbGVtZW50c05hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJh
eSgpKSB7Ci0gICAgICAgICAgICBlbGVtZW50c05hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAg
ICAgICsraW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFy
aWFibGVOYW1lPiBudW1iZXJPZkxldmVsc05hbWU7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUu
aXNXcml0YWJsZVRleHR1cmUoKSAmJiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0g
MSkgewotICAgICAgICAgICAgbnVtYmVyT2ZMZXZlbHNOYW1lID0gYXJnc1tpbmRleF07Ci0gICAg
ICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChpbmRleCA9PSBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgJyonLCB3aWR0aE5hbWUsICIgPSAiLCBh
cmdzWzBdLCAiLmdldF93aWR0aCgiKTsKLSAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgaWYgKGhlaWdodE5hbWUpIHsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIsICoiLCAqaGVpZ2h0TmFt
ZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgiKTsKLSAgICAgICAgICAgIGlmIChoYXNN
aXBMZXZlbCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGRlcHRoTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgIiwgKiIsICpkZXB0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9k
ZXB0aCgiKTsKLSAgICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVsZW1lbnRzTmFtZSkgewotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICpl
bGVtZW50c05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkiKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobnVtYmVyT2ZMZXZlbHNOYW1lKSB7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKm51bWJlck9mTGV2ZWxz
TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X251bV9taXBfbGV2ZWxzKCkiKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdh
dGhlciIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IkdhdGhlclJlZCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlNhbXBsZUNtcCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlNhbXBsZUNtcExldmVsWmVybyIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRo
aXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlN0b3JlIikgewotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQg
dGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQWxwaGEiKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIElt
cGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYg
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJCbHVlIikgewotICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyQ21wIikg
ewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVy
Q21wUmVkIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiR2F0aGVyR3JlZW4iKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjA4MTEwYWU1OWJhYzAxNGMzYmI1N2Q0OTAwMWVlMTQyNzgxMThlZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIElu
dHJpbnNpY3M7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uOwotCi19Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQot
dm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uJiwgY29uc3QgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmd1
bWVudE5hbWVzLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5cGVOYW1lciYpOwot
Ci19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVUeXBlV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFhNjhjYmQxZWNkNWVhYzRiOWZiMzllZGM4NjU5OWIxMTU1MDdkYzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZVdyaXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBN
ZXRhbCB7Ci0KLVN0cmluZyB3cml0ZU5hdGl2ZVR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAidm9pZCIpCi0gICAgICAgIHJldHVybiAidm9pZCJfc3RyOwotICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJib29sIikKLSAgICAgICAgcmV0dXJu
ICJib29sIl9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVp
bnQiKQotICAgICAgICByZXR1cm4gInVpbnQzMl90Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImludCIpCi0gICAgICAgIHJldHVybiAiaW50MzJfdCJfc3Ry
OwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpCi0gICAg
ICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiYXRvbWljX2ludCIpCi0gICAgICAgIHJldHVybiAiYXRvbWljX2ludCJfc3RyOwot
ICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfdWludCIpCi0g
ICAgICAgIHJldHVybiAiYXRvbWljX3VpbnQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAic2FtcGxlciIpCi0gICAgICAgIHJldHVybiAic2FtcGxlciJfc3Ry
OwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ2ZWN0b3IiKSB7Ci0g
ICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUo
KSA9PSAyKTsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6
VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0p
KTsKLSAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVS
ZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAg
ICAgICAgYXV0byYgdW5pZnlOb2RlID0gdHlwZVJlZmVyZW5jZS0+dW5pZnlOb2RlKCk7Ci0gICAg
ICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUp
OwotICAgICAgICBhdXRvJiBwYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGF1dG8gcHJlZml4ID0gKFsmXSgpIC0+
IFN0cmluZyB7Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImJvb2wi
KQotICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAgICAgICBpZiAocGFyYW1l
dGVyVHlwZS5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICAgICAgICAgIHJldHVybiAidWludCI7
Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuICJpbnQiOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUu
bmFtZSgpID09ICJmbG9hdCIpOwotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAg
IH0pKCk7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKSk7
Ci0gICAgICAgIGF1dG8mIGNvbnN0YW50RXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsK
LSAgICAgICAgYXV0byYgaW50ZWdlckxpdGVyYWwgPSBjb25zdGFudEV4cHJlc3Npb24uaW50ZWdl
ckxpdGVyYWwoKTsKLSAgICAgICAgYXV0byBzdWZmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZWdlckxpdGVyYWwudmFsdWUoKSkgewotICAgICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgICAgIHJldHVybiAiMiJfc3RyOwotICAgICAgICAgICAgY2Fz
ZSAzOgotICAgICAgICAgICAgICAgIHJldHVybiAiMyJfc3RyOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBBU1NFUlQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSA9PSA0KTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gIjQiX3N0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSkoKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCBzdWZmaXgpOwotICAgIH0K
LSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAibWF0cml4IikgewotICAg
ICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkg
PT0gMyk7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7
Ci0gICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVm
ZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAg
ICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHR5cGVSZWZlcmVuY2UtPnVuaWZ5Tm9kZSgpOwotICAgICAg
ICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsK
LSAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvIHByZWZpeCA9IChbJl0gewotICAg
ICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJib29sIikKLSAgICAgICAgICAg
ICAgICByZXR1cm4gImJvb2wiOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclR5cGUubmFt
ZSgpID09ICJmbG9hdCIpOwotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIH0p
KCk7Ci0KLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIldTTE1hdHJpeDwiLCBwcmVmaXgsICIs
ICIsIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSwgIiwgIiwg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm51bWJlck9mTWF0cml4Um93cygpLCAiPiIpOwotICAgIH0K
LSAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkg
PT0gMSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJl
ZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAg
ICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwotICAgIGF1dG8gcHJl
Zml4ID0gKFsmXSgpIC0+IFN0cmluZyB7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJUZXh0dXJlMUQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWQi
X3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTFEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTFkIl9zdHI7Ci0gICAgICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIpCi0gICAg
ICAgICAgICByZXR1cm4gInRleHR1cmUxZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgICAg
ICByZXR1cm4gInRleHR1cmUxZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4
dHVyZTJkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUyRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUyZCJfc3RyOwotICAg
ICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXki
KQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAg
ICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUzRCIpCi0gICAgICAgICAgICByZXR1
cm4gInRleHR1cmUzZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiUldUZXh0dXJlM0QiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlM2QiX3N0
cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVD
dWJlIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZWN1YmUiX3N0cjsKLSAgICAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEIikKLSAgICAg
ICAgICAgIHJldHVybiAiZGVwdGgyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkRBcnJheSIpCi0gICAgICAgICAgICByZXR1
cm4gImRlcHRoMmRfYXJyYXkiX3N0cjsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aEN1YmUiKTsKLSAgICAgICAgcmV0dXJuICJkZXB0
aGN1YmUiX3N0cjsKLSAgICB9KSgpOwotICAgIGF1dG8gaW5uZXJUeXBlID0gKFsmXSgpIC0+IFN0
cmluZyB7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gInVpbnQiKQotICAg
ICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5u
YW1lKCkgPT0gInVpbnQyIikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAg
ICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50MyIpCi0gICAgICAgICAgICByZXR1
cm4gInVpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWlu
dDQiKQotICAgICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVm
ZXJlbmNlLT5uYW1lKCkgPT0gImludCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwot
ICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQyIikKLSAgICAgICAgICAg
IHJldHVybiAiaW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0g
ImludDMiKQotICAgICAgICAgICAgcmV0dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVS
ZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50NCIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3Ry
OwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdCIpCi0gICAgICAg
ICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1l
KCkgPT0gImZsb2F0MiIpCi0gICAgICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgICAg
IGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0MyIpCi0gICAgICAgICAgICByZXR1
cm4gImZsb2F0Il9zdHI7Ci0gICAgICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0g
ImZsb2F0NCIpOwotICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgfSkoKTsKLSAgICBh
dXRvIGlzUmVhZFdyaXRlID0gbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0
dXJlMUQiCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTFEQXJyYXkiCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlJXVGV4dHVyZTJEIgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJSV1RleHR1cmUyREFycmF5IgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJSV1RleHR1cmUzRCI7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCAnPCcs
IGlubmVyVHlwZSwgIiwgIiwgaXNSZWFkV3JpdGUgPyAiYWNjZXNzOjpyZWFkX3dyaXRlIiA6ICJh
Y2Nlc3M6OnNhbXBsZSIsICc+Jyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MDdlOTYyZDY0MjFlM2ZjZDRiNDNjMTZiOGNl
Y2NkMGZjNTU4NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVU
eXBlV3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9u
OwotCi19Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVN0cmluZyB3cml0ZU5hdGl2ZVR5cGUoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkMjc3MTU0MTQ0NDg2MDMzOGE0ODc2ODVjNWQyZjEwMzlkYTUz
NjUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDM2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldI
TFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlv
bkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVXcml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlz
aXRvci5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLVR5
cGVOYW1lcjo6VHlwZU5hbWVyKFByb2dyYW0mIHByb2dyYW0pCi0gICAgOiBtX3Byb2dyYW0ocHJv
Z3JhbSkKLXsKLX0KLQotVHlwZU5hbWVyOjp+VHlwZU5hbWVyKCkgPSBkZWZhdWx0OwotCi12b2lk
IFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAg
Z2VuZXJhdGVVbmlxdWVkVHlwZU5hbWUodW5uYW1lZFR5cGUpOwotfQotCi12b2lkIFR5cGVOYW1l
cjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlv
bikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5n
LmFkZCgmZW51bWVyYXRpb25EZWZpbml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpKTsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAg
ICB9Ci0KLSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZp
bml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9lbnVtZXJhdGlvbk1lbWJlck1hcHBpbmcuYWRkKCZzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyJj4oZW51bWVyYXRpb25NZW1iZXIpLCBnZW5lcmF0ZU5leHRFbnVtZXJhdGlvbk1l
bWJlck5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQoZW51bWVyYXRpb25EZWZp
bml0aW9uKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lH
cmFwaC5hZGQoJmVudW1lcmF0aW9uRGVmaW5pdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHsgZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSB9
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIC8vIE5hdGl2ZSB0eXBlIGRl
Y2xhcmF0aW9ucyBhbHJlYWR5IGhhdmUgbmFtZXMsIGFuZCBhcmUgYWxyZWFkeSBkZWNsYXJlZCBp
biBNZXRhbC4KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmbmF0
aXZlVHlwZURlY2xhcmF0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVu
bmFtZWRUeXBlPj4geyB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX25hbWVkVHlwZU1hcHBpbmcuYWRkKCZzdHJ1Y3R1cmVEZWZpbml0aW9uLCBn
ZW5lcmF0ZU5leHRUeXBlTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0
dXJlRGVmaW5pdGlvbik7Ci0gICAgewotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gbmVpZ2hib3JzOwotICAgICAgICBmb3IgKGF1dG8mIHN0
cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGlu
Zy5hZGQoJnN0cnVjdHVyZUVsZW1lbnQsIGdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1l
KCkpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICAgICAgICAgIG5laWdoYm9ycy5hcHBlbmQoc3RydWN0dXJlRWxlbWVudC50
eXBlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5
R3JhcGguYWRkKCZzdHJ1Y3R1cmVEZWZpbml0aW9uLCBXVEZNb3ZlKG5laWdoYm9ycykpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVE
ZWZpbml0aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlw
ZU1hcHBpbmcuYWRkKCZ0eXBlRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0g
ICAgfQotICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICB7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRkKCZ0eXBlRGVmaW5pdGlvbiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHsgdHlwZURl
ZmluaXRpb24udHlwZSgpIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFt
ZShleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNz
aW9uKTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNh
bGxFeHByZXNzaW9uKQotewotICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lv
bi5hcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFyZ3VtZW50KTsKLX0K
LQotU3RyaW5nIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgcmV0dXJuIHdyaXRlTmF0
aXZlVHlwZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotfQotCi1zdGF0aWMgQVNUOjpVbm5hbWVk
VHlwZSogcGFyZW50KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIHN3aXRj
aCAodW5uYW1lZFR5cGUua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEFTVDo6
VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNU
OjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuICZkb3du
Y2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7
Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJu
ICZkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpLnR5cGUoKTsKLSAgICBkZWZh
dWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQot
dm9pZCBUeXBlTmFtZXI6OmdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKEFTVDo6VW5uYW1lZFR5cGUm
IHVubmFtZWRUeXBlKQotewotICAgIGF1dG8qIHBhcmVudFVubmFtZWRUeXBlID0gcGFyZW50KHVu
bmFtZWRUeXBlKTsKLSAgICBpZiAocGFyZW50VW5uYW1lZFR5cGUpCi0gICAgICAgIGdlbmVyYXRl
VW5pcXVlZFR5cGVOYW1lKCpwYXJlbnRVbm5hbWVkVHlwZSk7Ci0KLSAgICBtX3VubmFtZWRUeXBl
TWFwcGluZy5lbnN1cmUoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9LCBbJl0gewotICAg
ICAgICByZXR1cm4gZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKTsKLSAgICB9KTsKLX0KLQotY2xhc3Mg
TWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRp
b25Xcml0ZXIoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgc3RkOjpmdW5jdGlvbjxNYW5n
bGVkT3JOYXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiYmIG1hbmdsZWROYW1lRm9yTmFt
ZWRUeXBlKQotICAgICAgICA6IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoV1RGTW92ZShtYW5n
bGVkTmFtZUZvck5hbWVkVHlwZSkpCi0gICAgICAgICwgbV9zdHJpbmdCdWlsZGVyKHN0cmluZ0J1
aWxkZXIpCi0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9y
TmFtZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiO1xuIik7Ci0gICAgfQotCi0gICAgc3Rk
OjpmdW5jdGlvbjxNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiBtX21h
bmdsZWROYW1lRm9yTmFtZWRUeXBlOwotICAgIFN0cmluZ0J1aWxkZXImIG1fc3RyaW5nQnVpbGRl
cjsKLX07Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKFN0cmlu
Z0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgTWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0
ZXIgbWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgWyZdKEFTVDo6TmFt
ZWRUeXBlJiBuYW1lZFR5cGUpIC0+IE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIHsKLSAgICAgICAg
cmV0dXJuIG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpOwotICAgIH0pOwotICAgIG1ldGFs
VHlwZURlY2xhcmF0aW9uV3JpdGVyLlZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci19Ci0KLXZv
aWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBNYW5nbGVkVHlwZU5h
bWUgbWFuZ2xlZE5hbWUsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlw
ZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKQotewotICAg
IGlmIChlbWl0dGVkVW5uYW1lZFR5cGVzLmNvbnRhaW5zKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1l
ZFR5cGUgfSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2lu
ZCgpKSB7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7
Ci0gICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVu
Y2U+KHVubmFtZWRUeXBlKTsKLQotICAgICAgICBhdXRvJiBwYXJlbnQgPSB0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpOwotICAgICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xl
ZE5hbWVGb3JUeXBlKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9kZXBlbmRlbmN5R3JhcGguZmluZCgmcGFyZW50KTsKLSAgICAgICAgQVNT
RVJUKGl0ZXJhdG9yICE9IG1fZGVwZW5kZW5jeUdyYXBoLmVuZCgpKTsKLSAgICAgICAgZW1pdE5h
bWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50LCBpdGVyYXRvci0+dmFsdWUs
IGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCBwYXJlbnRNYW5nbGVkTmFtZSwgJyAnLCBtYW5n
bGVkTmFtZSwgIjtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7Ci0gICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0g
ZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8m
IHBhcmVudCA9IHBvaW50ZXJUeXBlLmVsZW1lbnRUeXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50
TWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVu
bmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWRO
YW1lLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgdG9TdHJpbmcocG9pbnRlclR5cGUuYWRk
cmVzc1NwYWNlKCkpLCAnICcsIHBhcmVudE1hbmdsZWROYW1lLCAiKiAiLCBtYW5nbGVkTmFtZSwg
IjtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5
cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotCi0g
ICAgICAgIGF1dG8mIHBhcmVudCA9IGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpOwot
ICAgICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVu
dCk7Ci0gICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFy
ZW50LCBwYXJlbnRNYW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVk
VHlwZXMpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInN0
cnVjdCAiLCBtYW5nbGVkTmFtZSwgIiB7XG4iCi0gICAgICAgICAgICAiICAgICIsIHRvU3RyaW5n
KGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcGFyZW50TWFuZ2xlZE5h
bWUsICIqIHBvaW50ZXI7XG4iCi0gICAgICAgICAgICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIK
LSAgICAgICAgICAgICJ9O1xuIgotICAgICAgICApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewotICAgICAgICBhdXRvJiBh
cnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotCi0gICAg
ICAgIGF1dG8mIHBhcmVudCA9IGFycmF5VHlwZS50eXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50
TWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVu
bmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWRO
YW1lLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgcGFyZW50TWFuZ2xlZE5hbWUs
ICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBtYW5nbGVkTmFtZSwgIjtcbiIp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFk
ZChVbm5hbWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0pOwotfQotCi12b2lkIFR5cGVOYW1lcjo6
ZW1pdE5hbWVkVHlwZURlZmluaXRpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNU
OjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpVbm5hbWVkVHlwZT4+JiBuZWlnaGJvcnMsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1p
dHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5
cGVzKQotewotICAgIGlmIChlbWl0dGVkTmFtZWRUeXBlcy5jb250YWlucygmbmFtZWRUeXBlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiB1bm5hbWVUeXBlIDogbmVpZ2hib3Jz
KQotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHVubmFt
ZVR5cGUsIG1hbmdsZWROYW1lRm9yVHlwZSh1bm5hbWVUeXBlKSwgZW1pdHRlZE5hbWVkVHlwZXMs
IGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAgc3dpdGNoIChuYW1lZFR5cGUua2luZCgpKSB7
Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOiB7
Ci0gICAgICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvJiBiYXNlVHlwZSA9
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0KLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1l
cmF0aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNU
OjpOYW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0byYgZW51
bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJz
KCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1l
Rm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRp
b25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgifTtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVk
VHlwZTo6S2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOiB7Ci0gICAgICAgIC8vIE5hdGl2ZSB0
eXBlcyBhbHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGluZyB0byBkby4KLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OlN0cnVj
dHVyZURlZmluaXRpb246IHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRv
d25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1
cmVEZWZpbml0aW9uKSwgIiB7XG4iKTsKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVt
ZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0
dXJlRWxlbWVudC50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChz
dHJ1Y3R1cmVFbGVtZW50KSwgIjtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fTtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6
S2luZDo6VHlwZURlZmluaXRpb246IHsKLSAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBk
b3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5p
dGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiksICI7
XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgZW1pdHRlZE5hbWVkVHlwZXMu
YWRkKCZuYW1lZFR5cGUpOwotfQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURlZmlu
aXRpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgSGFzaFNldDxBU1Q6
Ok5hbWVkVHlwZSo+IGVtaXR0ZWROYW1lZFR5cGVzOwotICAgIEhhc2hTZXQ8VW5uYW1lZFR5cGVL
ZXk+IGVtaXR0ZWRVbm5hbWVkVHlwZXM7Ci0gICAgZm9yIChhdXRvJiBbbmFtZWRUeXBlLCBuZWln
aGJvcnNdIDogbV9kZXBlbmRlbmN5R3JhcGgpCi0gICAgICAgIGVtaXROYW1lZFR5cGVEZWZpbml0
aW9uKHN0cmluZ0J1aWxkZXIsICpuYW1lZFR5cGUsIG5laWdoYm9ycywgZW1pdHRlZE5hbWVkVHlw
ZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgIGZvciAoYXV0byYgW3VubmFtZWRUeXBlS2V5
LCBtYW5nbGVkTmFtZV0gOiBtX3VubmFtZWRUeXBlTWFwcGluZykKLSAgICAgICAgZW1pdFVubmFt
ZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlw
ZSgpLCBtYW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMp
OwotfQotCi1NYW5nbGVkVHlwZU5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclR5cGUoQVNU
OjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fdW5u
YW1lZFR5cGVNYXBwaW5nLmZpbmQoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLSAg
ICBBU1NFUlQoaXRlcmF0b3IgIT0gbV91bm5hbWVkVHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJl
dHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIFR5cGVO
YW1lcjo6bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0g
ICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAg
ICByZXR1cm4gbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9uYW1lZFR5cGVNYXBw
aW5nLmZpbmQoJm5hbWVkVHlwZSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmFtZWRUeXBl
TWFwcGluZy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotTWFuZ2xl
ZEVudW1lcmF0aW9uTWVtYmVyTmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yRW51bWVyYXRp
b25NZW1iZXIoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmZpbmQoJmVudW1l
cmF0aW9uTWVtYmVyKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9lbnVtZXJhdGlvbk1lbWJl
ck1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLU1hbmds
ZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yU3RydWN0dXJl
RWxlbWVudChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fc3RydWN0dXJlRWxlbWVudE1hcHBpbmcuZmluZCgmc3RydWN0dXJl
RWxlbWVudCk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fc3RydWN0dXJlRWxlbWVudE1hcHBp
bmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgVHlwZU5h
bWVyOjplbWl0TWV0YWxUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAg
IFZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci0KLSAgICBlbWl0TWV0YWxUeXBlRGVjbGFyYXRp
b25zKHN0cmluZ0J1aWxkZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAg
IGVtaXRNZXRhbFR5cGVEZWZpbml0aW9ucyhzdHJpbmdCdWlsZGVyKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYWQxYWU4MTA0MDVhY2I1OGRhZjky
N2IxY2M4MjZmNjRjYzEwY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xU
eXBlTmFtZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGVIYXNoLmgiCi0j
aW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZp
bml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7Ci1jbGFzcyBOYW1lZFR5cGU7Ci1jbGFz
cyBOYXRpdmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uOwotY2xh
c3MgVHlwZURlZmluaXRpb247Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotfQotCi1jbGFzcyBQcm9n
cmFtOwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBCYXNlVHlwZU5hbWVOb2RlOwotCi1j
bGFzcyBUeXBlTmFtZXIgOiBwcml2YXRlIFZpc2l0b3IgewotcHVibGljOgotICAgIFR5cGVOYW1l
cihQcm9ncmFtJik7Ci0gICAgdmlydHVhbCB+VHlwZU5hbWVyKCk7Ci0KLSAgICB2b2lkIGVtaXRN
ZXRhbFR5cGVzKFN0cmluZ0J1aWxkZXImKTsKLQotICAgIC8vIE11c3QgYmUgY2FsbGVkIGFmdGVy
IGNhbGxpbmcgZW1pdE1ldGFsVHlwZXMoKS4KLSAgICBTdHJpbmcgbWFuZ2xlZE5hbWVGb3JUeXBl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1hbmds
ZWROYW1lRm9yVHlwZShBU1Q6OlVubmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZE9yTmF0aXZlVHlw
ZU5hbWUgbWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgTWFuZ2xlZEVu
dW1lcmF0aW9uTWVtYmVyTmFtZSBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKEFTVDo6
RW51bWVyYXRpb25NZW1iZXImKTsKLSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFu
Z2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpOwotCi0g
ICAgTWFuZ2xlZFR5cGVOYW1lIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkgeyByZXR1cm4geyBtX3R5
cGVDb3VudCsrIH07IH0KLSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZ2VuZXJhdGVO
ZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKSB7IHJldHVybiB7IG1fc3RydWN0dXJlRWxlbWVudENv
dW50KysgfTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotCi0gICAgTWFuZ2xlZEVudW1lcmF0aW9uTWVt
YmVyTmFtZSBnZW5lcmF0ZU5leHRFbnVtZXJhdGlvbk1lbWJlck5hbWUoKSB7IHJldHVybiB7IG1f
ZW51bWVyYXRpb25NZW1iZXJDb3VudCsrIH07IH0KLQotICAgIHZvaWQgZW1pdE5hbWVkVHlwZURl
ZmluaXRpb24oU3RyaW5nQnVpbGRlciYsIEFTVDo6TmFtZWRUeXBlJiwgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+JiwgSGFzaFNldDxBU1Q6Ok5hbWVkVHlw
ZSo+JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRV
bm5hbWVkVHlwZXMpOwotICAgIHZvaWQgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdC
dWlsZGVyJiwgQVNUOjpVbm5hbWVkVHlwZSYsIE1hbmdsZWRUeXBlTmFtZSwgSGFzaFNldDxBU1Q6
Ok5hbWVkVHlwZSo+JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4m
IGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgIHZvaWQgZW1pdE1ldGFsVHlwZURlY2xhcmF0aW9u
cyhTdHJpbmdCdWlsZGVyJik7Ci0gICAgdm9pZCBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoU3Ry
aW5nQnVpbGRlciYpOwotCi0gICAgdm9pZCBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShBU1Q6OlVu
bmFtZWRUeXBlJik7Ci0KLSAgICBQcm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgSGFzaE1hcDxVbm5h
bWVkVHlwZUtleSwgTWFuZ2xlZFR5cGVOYW1lPiBtX3VubmFtZWRUeXBlTWFwcGluZzsKLSAgICBI
YXNoTWFwPEFTVDo6TmFtZWRUeXBlKiwgTWFuZ2xlZFR5cGVOYW1lPiBtX25hbWVkVHlwZU1hcHBp
bmc7Ci0gICAgSGFzaE1hcDxBU1Q6Ok5hbWVkVHlwZSosIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+Pj4gbV9kZXBlbmRlbmN5R3JhcGg7Ci0gICAgSGFzaE1h
cDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKiwgTWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZT4g
bV9lbnVtZXJhdGlvbk1lbWJlck1hcHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6OlN0cnVjdHVyZUVs
ZW1lbnQqLCBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWU+IG1fc3RydWN0dXJlRWxlbWVudE1h
cHBpbmc7Ci0gICAgdW5zaWduZWQgbV90eXBlQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9l
bnVtZXJhdGlvbk1lbWJlckNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fc3RydWN0dXJlRWxl
bWVudENvdW50IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJ
bmRleENhbGN1bGF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGFkMmQ5
ZDdmZmZmYzM0ZWMzNjRmNjEyNTc0MjYyNmMwODU3NzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi11bnNpZ25lZCBjYWxjdWxhdGVWZXJ0ZXhCdWZm
ZXJJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBSZXNlcnZlIHRoZSBmaXJzdCBmZXcg
TVRMQnVmZmVyIHNsb3RzIGZvciBhcmd1bWVudCBidWZmZXJzIGZvciBHUFVCaW5kR3JvdXBzLgot
ICAgIHJldHVybiBpbmRleCArIDg7Ci19Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJ
bmRleENhbGN1bGF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1NGQwZjM1
YmMyMWE3MDZhNjcyNmRkOTEwOTRmNDJkYmU4NzU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVZlcnRleEJ1ZmZl
ckluZGV4KHVuc2lnbmVkKTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQVNURHVtcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQVNURHVtcGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAw
NGZkMWRmZDRkZWU5ODFmZjcyNjZmYTdjZDY4NDMyY2IxNGExYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NzIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1
bXBlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
U1QuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoUHJvZ3JhbSYgcHJv
Z3JhbSkKLXsKLSAgICBtX291dC5wcmludGxuKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAg
ICB2aXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHBy
b2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJp
bnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFt
Lm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLm5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5c
biIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9u
cygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygp
W2ldKTsKLSAgICBpZiAocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAg
IG1fb3V0LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dy
YW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJv
Z3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5zdHJ1Y3R1
cmVEZWZpbml0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25z
KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0
aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6
ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAg
ICAgdmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotCi0gICAgbV9vdXQu
cHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYg
dW5uYW1lZFR5cGUpCi17Ci0gICAgQmFzZTo6dmlzaXQodW5uYW1lZFR5cGUpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBCYXNl
Ojp2aXNpdChuYW1lZFR5cGUpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBl
RGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQoInR5cGVkZWYg
IiwgdHlwZURlZmluaXRpb24ubmFtZSgpLCAiID0gIik7Ci0gICAgdmlzaXQodHlwZURlZmluaXRp
b24udHlwZSgpKTsKLSAgICBtX291dC5wcmludGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVy
Ojp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17
Ci0gICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgInN0cnVjdCAiLCBzdHJ1Y3R1cmVEZWZpbml0
aW9uLm5hbWUoKSwgIiB7Iik7Ci0gICAgewotICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRl
bnQoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVm
aW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJl
RWxlbWVudCk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7Ci0gICAg
bV9vdXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1
cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50
KTsKLSAgICB2aXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQo
IiAiLCBzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSk7Ci0gICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQu
c2VtYW50aWMoKSkKLSAgICAgICAgdmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7
Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBt
X291dC5wcmludChtX2luZGVudCwgImVudW0gIik7Ci0gICAgdmlzaXQoZW51bWVyYXRpb25EZWZp
bml0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiB7Iik7Ci0KLSAgICB7Ci0gICAgICAg
IGF1dG8gaW5kZW50ID0gYnVtcEluZGVudCgpOwotICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsK
LSAgICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5p
dGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAgICAgICAgICAgaWYgKG9uY2UpCi0gICAg
ICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICBtX291dC5wcmludGxu
KCk7Ci0gICAgICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7Ci0gICAgICAgICAgICB2aXNp
dChlbnVtZXJhdGlvbk1lbWJlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX291dC5wcmlu
dGxuKCk7Ci0gICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgIn0iKTsKLSAgICBtX291dC5wcmlu
dGxuKCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
JiBlbnVtZXJhdGlvbk1lbWJlcikKLXsKLSAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJl
ci5uYW1lKCksICIgPSAiLCBlbnVtZXJhdGlvbk1lbWJlci52YWx1ZSgpKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRp
b24pCi17Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgIHZp
c2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLSAgICBtX291dC5wcmludCgiXG5cbiIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5k
ZW50KTsKLSAgICBtX291dC5wcmludCgibmF0aXZlICIpOwotICAgIHZpc2l0KHN0YXRpY19jYXN0
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsK
LSAgICBtX291dC5wcmludGxuKCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgdmlzaXQoZnVu
Y3Rpb25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsKLSAgICBpZiAoZnVuY3Rpb25EZWNs
YXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICBtX291dC5wcmludChBU1Q6OnRvU3Ry
aW5nKCpmdW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBlKCkpLCAiICIpOwotICAgIHZp
c2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiICIsIGZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwot
ICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsK
LSAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0KHBhcmFtZXRlcik7Ci0gICAgfQot
ICAgIG1fb3V0LnByaW50KCIpIik7Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50
aWMoKSkKLSAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci0g
ICAgbV9vdXQucHJpbnQoIiAiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgbV9vdXQu
cHJpbnQobV9pbmRlbnQsICJuYXRpdmUgdHlwZWRlZiAiKTsKLSAgICBtX291dC5wcmludChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIjwiKTsKLSAg
ICAgICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50
IDogbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKSkgewotICAgICAgICAgICAg
aWYgKG9uY2UpCi0gICAgICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAg
ICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgICAg
IH0KLSAgICAgICAgbV9vdXQucHJpbnQoIj4iKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnRsbigi
OyIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBl
UmVmZXJlbmNlKQotewotICAgIG1fb3V0LnByaW50KHR5cGVSZWZlcmVuY2UubmFtZSgpKTsKLQot
ICAgIGlmICh0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAg
Ym9vbCBvbmNlID0gZmFsc2U7Ci0gICAgICAgIG1fb3V0LnByaW50KCI8Iik7Ci0gICAgICAgIGZv
ciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpIHsK
LSAgICAgICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIp
OwotICAgICAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1l
bnQpOwotICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi17Ci0g
ICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRlclR5cGUpKTsK
LSAgICBtX291dC5wcmludCgiKiIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpB
cnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICB2aXNpdChzdGF0
aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLSAgICBt
X291dC5wcmludCgiW10iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QXJyYXlU
eXBlJiBhcnJheVR5cGUpCi17Ci0gICAgdmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIlsiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIl0iKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAg
QmFzZTo6dmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJlbmNlVHlwZSkKLXsKLSAgICBtX291dC5wcmludChBU1Q6
OnRvU3RyaW5nKHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAiICIpOwotICAgIHZpc2l0
KHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlNlbWFudGljJiBzZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludCgiIDogIik7Ci0g
ICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYg
YnVpbHRJblNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAg
fSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VTZW1hbnRpYykgewotICAgICAg
ICB2aXNpdChyZXNvdXJjZVNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYykgewotICAg
ICAgICB2aXNpdChzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgIH0sIFsmXShB
U1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7Ci0gICAgICAgIHZp
c2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgfSksIHNlbWFudGljKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Np
b24pCi17Ci0gICAgQmFzZTo6dmlzaXQoY29uc3RhbnRFeHByZXNzaW9uKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0dHJpYnV0ZUJsb2NrKQotewot
ICAgIGlmIChhdHRyaWJ1dGVCbG9jay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fb3V0LnByaW50KCJbIik7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGF0
dHJpYnV0ZUJsb2NrKQotICAgICAgICB2aXNpdChmdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgbV9v
dXQucHJpbnQoIl0gIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAgIG1fb3V0LnByaW50KGJ1aWx0SW5TZW1h
bnRpYy50b1N0cmluZygpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYyYgcmVzb3VyY2VTZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludChyZXNvdXJj
ZVNlbWFudGljLnRvU3RyaW5nKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKQotewotICAgIC8vIEZJWE1FOiBIYW5kbGUg
dGhpcyB3aGVuIHdlIGltcGxlbWVudCBpdC4KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6U3RhZ2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpCi17Ci0gICAgbV9vdXQu
cHJpbnQoImF0dHJpYnV0ZSgiLCBzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSwgIikiKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRl
cmFsKQotewotICAgIG1fb3V0LnByaW50KGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KHVuc2lnbmVkSW50ZWdlckxpdGVy
YWwudmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJh
bCYgZmxvYXRMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50KGZsb2F0TGl0ZXJhbC52YWx1ZSgp
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xl
YW5MaXRlcmFsKQotewotICAgIGlmIChib29sZWFuTGl0ZXJhbC52YWx1ZSgpKQotICAgICAgICBt
X291dC5wcmludCgidHJ1ZSIpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQoImZhbHNl
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYp
Ci17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJikKLXsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFs
VHlwZSYpCi17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIG1fb3V0LnByaW50
KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5sZWZ0KCksICIuIiwgZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLnJpZ2h0KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGdW5jdGlv
bkF0dHJpYnV0ZSYgZnVuY3Rpb25BdHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFk
c0Z1bmN0aW9uQXR0cmlidXRlKSB7Ci0gICAgICAgIHZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZSk7Ci0gICAgfSksIGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzQXR0
cmlidXRlKQotewotICAgIG1fb3V0LnByaW50KCJudW10aHJlYWRzKCIsIG51bVRocmVhZHNBdHRy
aWJ1dGUud2lkdGgoKSwgIiwgIiwgbnVtVGhyZWFkc0F0dHJpYnV0ZS5oZWlnaHQoKSwgIiwgIiwg
bnVtVGhyZWFkc0F0dHJpYnV0ZS5kZXB0aCgpLCAiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spCi17Ci0gICAgbV9vdXQucHJpbnRsbigieyIpOwotICAg
IHsKLSAgICAgICAgYXV0byBpbmRlbnQgPSBidW1wSW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0
byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKSB7Ci0gICAgICAgICAgICBtX291dC5w
cmludChtX2luZGVudCk7Ci0gICAgICAgICAgICB2aXNpdChzdGF0ZW1lbnQpOwotICAgICAgICAg
ICAgbV9vdXQucHJpbnRsbigiOyIpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fb3V0LnByaW50
KG1faW5kZW50LCAifSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdGF0ZW1l
bnQmIHN0YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0JiBzdGF0ZW1lbnRMaXN0KQotewot
ICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogc3RhdGVt
ZW50TGlzdC5zdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBt
X291dC5wcmludCgiO1xuIiwgbV9pbmRlbnQpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAg
ICAgdmlzaXQoc3RhdGVtZW50KTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkJyZWFrJikKLXsKLSAgICBtX291dC5wcmludCgiYnJlYWsiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6Q29udGludWUmKQotewotICAgIG1fb3V0LnByaW50KCJjb250aW51
ZSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9v
cCkKLXsKLSAgICBtX291dC5wcmludCgid2hpbGUgKCIpOwotICAgIHZpc2l0KHdoaWxlTG9vcC5j
b25kaXRpb25hbCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotICAgIHZpc2l0KHdoaWxlTG9v
cC5ib2R5KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYg
ZG9XaGlsZUxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoImRvICIpOwotICAgIHZpc2l0KGRvV2hp
bGVMb29wLmJvZHkoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiB3aGlsZSgiKTsKLSAgICB2aXNpdChk
b1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIG1fb3V0
LnByaW50KCJmb3IgKCIpOwotICAgIHZpc2l0KGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0g
ICAgbV9vdXQucHJpbnQoIjsgIik7Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0gICAg
ICAgIHZpc2l0KCpmb3JMb29wLmNvbmRpdGlvbigpKTsKLSAgICBtX291dC5wcmludCgiOyAiKTsK
LSAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKLSAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5j
cmVtZW50KCkpOwotICAgIG1fb3V0LnByaW50KCIpICIpOwotICAgIHZpc2l0KGZvckxvb3AuYm9k
eSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbikKLXsKLSAgICBib29sIHNraXBQYXJlbnMgPSBpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihl
eHByZXNzaW9uKQotICAgICAgICB8fCBpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikK
LSAgICAgICAgfHwgaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAg
fHwgaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8
fCBpczxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAg
fHwgaXM8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFT
VDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOwotCi0gICAgaWYgKGF1dG8qIGFubm90
YXRpb24gPSBleHByZXNzaW9uLm1heWJlVHlwZUFubm90YXRpb24oKSkgewotICAgICAgICBpZiAo
YXV0byBhZGRyZXNzU3BhY2UgPSBhbm5vdGF0aW9uLT5sZWZ0QWRkcmVzc1NwYWNlKCkpCi0gICAg
ICAgICAgICBtX291dC5wcmludCgiPExWOiIsIEFTVDo6dG9TdHJpbmcoKmFkZHJlc3NTcGFjZSkp
OwotICAgICAgICBlbHNlIGlmIChhbm5vdGF0aW9uLT5pc0Fic3RyYWN0TGVmdFZhbHVlKCkpCi0g
ICAgICAgICAgICBtX291dC5wcmludCgiPEFMViIpOwotICAgICAgICBlbHNlIGlmIChhbm5vdGF0
aW9uLT5pc1JpZ2h0VmFsdWUoKSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCI8UlYiKTsKLQot
ICAgICAgICBtX291dC5wcmludCgiLCAiLCBleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLnRvU3Ry
aW5nKCksICI+Iik7Ci0KLSAgICAgICAgc2tpcFBhcmVucyA9IGZhbHNlOwotICAgIH0KLQotICAg
IGlmICghc2tpcFBhcmVucykKLSAgICAgICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICBCYXNlOjp2
aXNpdChleHByZXNzaW9uKTsKLSAgICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnBy
aW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24m
IGRvdEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24mPihkb3RFeHByZXNzaW9uKSk7Ci0gICAgbV9vdXQucHJpbnQoIi4iLCBk
b3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewot
ICAgIHZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9vdXQucHJp
bnQoIj0+IiwgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKS5uYW1lKCkpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhw
cmVzc2lvbikKLXsKLSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiY+KGluZGV4RXhwcmVzc2lvbikpOwotICAgIG1fb3V0LnByaW50KCJbIik7Ci0gICAg
dmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmlu
dCgiXSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQmIGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoZWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkZhbGx0aHJvdWdoJikKLXsKLSAgICBtX291dC5wcmludCgiZmFsbHRocm91Z2giKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQot
ewotICAgIG1fb3V0LnByaW50KCJpZiAoIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0
aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikgIik7Ci0gICAgdmlzaXQoaWZTdGF0ZW1lbnQu
Ym9keSgpKTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewotICAgICAgICBtX291
dC5wcmludCgiIGVsc2UgIik7Ci0gICAgICAgIHZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgp
KTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJu
U3RhdGVtZW50KQotewotICAgIG1fb3V0LnByaW50KCJyZXR1cm4iKTsKLSAgICBpZiAocmV0dXJu
U3RhdGVtZW50LnZhbHVlKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICAgICAg
dmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAg
IG1fb3V0LnByaW50KCJzd2l0Y2ggKCIpOwotICAgIHZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1
ZSgpKTsKLSAgICBtX291dC5wcmludGxuKCIpIHsiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsK
LSAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMo
KSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50bG4oKTsKLSAg
ICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICAg
ICAgdmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50KCJcbiIsIG1faW5k
ZW50LCAifSIpOwotCi19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2Um
IHN3aXRjaENhc2UpCi17Ci0gICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBt
X291dC5wcmludCgiY2FzZSAiKTsKLSAgICAgICAgdmlzaXQoKnN3aXRjaENhc2UudmFsdWUoKSk7
Ci0gICAgICAgIG1fb3V0LnByaW50KCI6ICIpOwotICAgIH0gZWxzZQotICAgICAgICBtX291dC5w
cmludCgiZGVmYXVsdDogIik7Ci0gICAgdmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotewotICAgIEJhc2U6OnZpc2l0KHZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAo
dmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpIHsKLSAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVj
bGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKLSAgICB9Ci0KLSAg
ICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICBtX291
dC5wcmludCgiJCIsIFJhd1BvaW50ZXIoJnZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fb3V0LnByaW50KHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKTsKLQotICAg
IGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCp2YXJp
YWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9u
LmluaXRpYWxpemVyKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgICAgICB2
aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50
RXhwcmVzc2lvbikKLXsKLSAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwot
ICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5y
aWdodCgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24m
IGNhbGxFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KGNhbGxFeHByZXNzaW9uLm5hbWUo
KSwgIigiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAg
ICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAg
IHZpc2l0KGFyZ3VtZW50KTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24p
Ci17Ci0gICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBm
b3IgKGF1dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAg
IGlmIChvbmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2Ug
PSB0cnVlOwotICAgICAgICB2aXNpdChleHByZXNzaW9uKTsKLSAgICB9Ci0gICAgbV9vdXQucHJp
bnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIioiKTsK
LSAgICB2aXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9u
KQotewotICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24u
bGVmdCgpKTsKLSAgICBzd2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewotICAgIGNh
c2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kOgotICAgICAgICBtX291dC5wcmlu
dCgiICYmICIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Np
b246OlR5cGU6Ok9yOgotICAgICAgICBtX291dC5wcmludCgiIHx8ICIpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5v
dEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIh
KCIpOwotICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAg
ICBtX291dC5wcmludCgiQCIpOwotICAgIHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24ubGVmdFZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmlu
dCgiJiIpOwotICAgIHZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24m
IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBvbGRWYXJpYWJsZSA9IHJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICBhdXRv
IG5ld1ZhcmlhYmxlID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYXJpYWJsZVJlZmVy
ZW5jZSgpOwotCi0gICAgbV9vdXQucHJpbnQoIlJNVygiKTsKLSAgICB2aXNpdChvbGRWYXJpYWJs
ZS5nZXQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0g
ICAgdmlzaXQobmV3VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAg
ICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsK
LSAgICBtX291dC5wcmludCgiLCAiKTsKLQotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24ubGVmdFZhbHVlKCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2aXNpdChu
ZXdWYXJpYWJsZS5nZXQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChy
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQu
cHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJl
c3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHRlcm5hcnlFeHByZXNzaW9u
LnByZWRpY2F0ZSgpKTsKLSAgICBtX291dC5wcmludCgiID8gIik7Ci0gICAgdmlzaXQodGVybmFy
eUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA6ICIpOwot
ICAgIHZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVu
Y2UpCi17Ci0gICAgaWYgKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fb3V0LnByaW50KCIkIiwgUmF3UG9pbnRlcih2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJs
ZSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX291dC5wcmludCh2YXJpYWJsZVJlZmVyZW5jZS5u
YW1lKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWEwMjczNmZjMDJiZDMxNDBmZjM4OGY3ZDUwMmI4YmNlMmM0
YmI3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi0j
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBBU1REdW1wZXIgOiBWaXNpdG9yIHsKLSAgICB1
c2luZyBCYXNlID0gVmlzaXRvcjsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBv
dmVycmlkZTsKLQotICAgIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuIG1fb3V0LnRvU3RyaW5n
KCk7IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpOYW1lZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VHlwZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlv
bkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpT
dHJ1Y3R1cmVFbGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6Q29uc3RhbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkF0
dHJpYnV0ZUJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1h
bnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6SW50ZWdlckxpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkZsb2F0TGl0ZXJhbFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0
aW9uQXR0cmlidXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6R2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5k
ZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0
aHJvdWdoJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRj
aENhc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpE
ZXJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9n
aWNhbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5v
dEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZSYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBJbmRlbnQgewotICAgICAg
ICBJbmRlbnQoQVNURHVtcGVyJiBkdW1wZXIpCi0gICAgICAgICAgICA6IG1fc2NvcGUoZHVtcGVy
Lm1faW5kZW50LCBkdW1wZXIubV9pbmRlbnQgKyAiICAgIikKLSAgICAgICAgeyB9Ci0gICAgICAg
IFNldEZvclNjb3BlPFN0cmluZz4gbV9zY29wZTsKLSAgICB9OwotCi0gICAgSW5kZW50IGJ1bXBJ
bmRlbnQoKSB7IHJldHVybiBJbmRlbnQoKnRoaXMpOyB9Ci0KLSAgICBmcmllbmQgc3RydWN0IElu
ZGVudDsKLQotICAgIFN0cmluZ1ByaW50U3RyZWFtIG1fb3V0OwotICAgIFN0cmluZyBtX2luZGVu
dDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIGR1bXBB
U1ROb2RlKFByaW50U3RyZWFtJiBvdXQsIFQmIHZhbHVlKQotewotICAgIEFTVER1bXBlciBkdW1w
ZXI7Ci0gICAgZHVtcGVyLnZpc2l0KHZhbHVlKTsKLSAgICBvdXQucHJpbnQoZHVtcGVyLnRvU3Ry
aW5nKCkpOwotfQotTUFLRV9QUklOVF9BREFQVE9SKEV4cHJlc3Npb25EdW1wZXIsIEFTVDo6RXhw
cmVzc2lvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihTdGF0ZW1lbnREdW1w
ZXIsIEFTVDo6U3RhdGVtZW50JiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFBy
b2dyYW1EdW1wZXIsIFByb2dyYW0mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1Io
U3RydWN0dXJlRGVmaW5pdGlvbkR1bXBlciwgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiwgZHVt
cEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKEZ1bmN0aW9uRGVmaW5pdGlvbkR1bXBlciwg
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBU
T1IoTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbkR1bXBlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFR5cGVEdW1wZXIs
IEFTVDo6VW5uYW1lZFR5cGUmLCBkdW1wQVNUTm9kZSk7Ci0KLQotc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBkdW1wQVNUKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgZGF0YUxvZ0xuKFByb2dy
YW1EdW1wZXIocHJvZ3JhbSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNzE3ODk1NDQ4OTkwZGM4YWM2ODc3YmMxMDRkOWRiYThl
NjkxNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0j
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
aW1wb3J0IHN5cwotaW1wb3J0IHJlCi0KLXJlZ3VsYXJFeHByZXNzaW9uID0gcmUuY29tcGlsZShy
Ii9cKiBGdW5jdGlvbnMgbmFtZWQgKC4qKSBcKi8iKQotCi1pbmZpbGUgPSBvcGVuKHN5cy5hcmd2
WzFdLCAiciIpCi1jb250ZW50cyA9IGluZmlsZS5yZWFkKCkKLWluZmlsZS5jbG9zZSgpCi0KLW91
dGZpbGUgPSBvcGVuKHN5cy5hcmd2WzJdLCAidyIpCi1vdXRmaWxlLndyaXRlKCIiIgotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotSGFzaE1hcDxTdHJpbmcsIFN1YnN0
cmluZ0xvY2F0aW9uPiBjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKQotewotICAg
IEhhc2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gcmVzdWx0OwotIiIiKQotCi0jIEZJ
WE1FOiBDb21wdXRlIFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwIGF0IGJ1aWxkLXRpbWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTQ0OAotCi1wcmV2aW91cyA9
IDAKLXByZXZpb3VzTmFtZSA9ICIiCi1ib3VuZGFyeSA9IDAKLWZvciBtYXRjaCBpbiByZWd1bGFy
RXhwcmVzc2lvbi5maW5kaXRlcihjb250ZW50cyk6Ci0gICAgaWYgcHJldmlvdXMgPT0gMDoKLSAg
ICAgICAgcHJldmlvdXMgPSBtYXRjaC5zdGFydCgpCi0gICAgICAgIGJvdW5kYXJ5ID0gcHJldmlv
dXMKLSAgICAgICAgcHJldmlvdXNOYW1lID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgY29udGlu
dWUKLSAgICBvdXRmaWxlLndyaXRlKCIgICAgcmVzdWx0LmFkZChcIiIgKyBwcmV2aW91c05hbWUg
KyAiXCJfc3RyLCBTdWJzdHJpbmdMb2NhdGlvbiB7ICIgKyBzdHIocHJldmlvdXMpICsgIiwgIiAr
IHN0cihtYXRjaC5zdGFydCgpKSArICIgfSk7XG4iKQotICAgIHByZXZpb3VzID0gbWF0Y2guc3Rh
cnQoKQotICAgIHByZXZpb3VzTmFtZSA9IG1hdGNoLmdyb3VwKDEpCi1vdXRmaWxlLndyaXRlKCIg
ICAgcmVzdWx0LmFkZChcIiIgKyBwcmV2aW91c05hbWUgKyAiXCJfc3RyLCBTdWJzdHJpbmdMb2Nh
dGlvbiB7ICIgKyBzdHIocHJldmlvdXMpICsgIiwgIiArIHN0cihsZW4oY29udGVudHMpKSArICIg
fSk7XG4iKQotb3V0ZmlsZS53cml0ZSgiIiIKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi11bnNp
Z25lZCBmaXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKQotewotIiIiKQotCi1v
dXRmaWxlLndyaXRlKCIgICAgcmV0dXJuICIgKyBzdHIoYm91bmRhcnkpICsgIjtcbiIpCi0KLW91
dGZpbGUud3JpdGUoIiIiCi19Ci0KLX0KLQotfQotCi0jZW5kaWYKLSIiIikKLW91dGZpbGUuY2xv
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDU5YmVkMWVjZWQ0NmRiMWQ3ZmE3YmZiNGUxYzNlMzQ4M2MzMTcz
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25z
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZl
cmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRHVwbGljYXRlRnVuY3Rp
b25LZXkgewotcHVibGljOgotICAgIER1cGxpY2F0ZUZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0Owot
ICAgIER1cGxpY2F0ZUZ1bmN0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkK
LSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7Ci0gICAgfQotCi0gICAgRHVw
bGljYXRlRnVuY3Rpb25LZXkoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlv
bikKLSAgICAgICAgOiBtX2Z1bmN0aW9uKCZmdW5jdGlvbikKLSAgICB7IH0KLQotICAgIGJvb2wg
aXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1fZnVuY3Rpb247IH0KLSAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbiA9PSBiaXR3
aXNlX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PigxKSk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5z
aWduZWQgaGFzaCA9IEludEhhc2g8c2l6ZV90Pjo6aGFzaChtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJz
KCkuc2l6ZSgpKTsKLSAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT5uYW1lKCkuaGFzaCgpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+cGFyYW1ldGVycygp
W2ldLT50eXBlKCktPmhhc2goKTsKLQotICAgICAgICBpZiAobV9mdW5jdGlvbi0+aXNDYXN0KCkp
Ci0gICAgICAgICAgICBoYXNoIF49IG1fZnVuY3Rpb24tPnR5cGUoKS5oYXNoKCk7Ci0KLSAgICAg
ICAgcmV0dXJuIGhhc2g7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IER1cGxp
Y2F0ZUZ1bmN0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2Z1bmN0
aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPnBhcmFtZXRlcnMo
KS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fZnVu
Y3Rpb24tPm5hbWUoKSAhPSBvdGhlci5tX2Z1bmN0aW9uLT5uYW1lKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9IEFT
VDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkKLSAgICAgICAgICAgICYmIG90aGVyLm1fZnVu
Y3Rpb24tPm5hbWVTcGFjZSgpICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkKLSAg
ICAgICAgICAgICYmIG1fZnVuY3Rpb24tPm5hbWVTcGFjZSgpICE9IG90aGVyLm1fZnVuY3Rpb24t
Pm5hbWVTcGFjZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIEFTU0VS
VChtX2Z1bmN0aW9uLT5pc0Nhc3QoKSA9PSBvdGhlci5tX2Z1bmN0aW9uLT5pc0Nhc3QoKSk7Ci0K
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcygqbV9mdW5jdGlvbi0+cGFy
YW1ldGVycygpW2ldLT50eXBlKCksICpvdGhlci5tX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0t
PnR5cGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFtX2Z1bmN0aW9uLT5pc0Nhc3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgICAgIGlmIChtYXRjaGVzKG1fZnVuY3Rpb24tPnR5cGUoKSwgb3RoZXIubV9mdW5j
dGlvbi0+dHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBrZXkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgRHVwbGljYXRlRnVuY3Rpb25LZXkmIGEsIGNvbnN0IER1cGxpY2F0
ZUZ1bmN0aW9uS2V5JiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1Ymxp
YyBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxEdXBsaWNhdGVGdW5jdGlvbktleT4gewotICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktl
eSYga2V5KSB7IHJldHVybiBrZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRl
OgotICAgIGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxw
dHIgfTsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cyhjb25zdCBQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGF1dG8gcGFzc2VzU3RhdGljQ2hlY2tz
ID0gWyZdIChjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKSAtPiBFeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gewotICAgICAgICBpZiAoZnVuY3Rpb24ubmFtZSgpID09ICJvcGVy
YXRvcj09IgotICAgICAgICAgICAgJiYgZnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAy
Ci0gICAgICAgICAgICAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNvbnN0
IEFTVDo6VW5uYW1lZFR5cGUmPigqZnVuY3Rpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKQot
ICAgICAgICAgICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBB
U1Q6OlVubmFtZWRUeXBlJj4oKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAg
ICAgICAgICAgICYmIG1hdGNoZXMoKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLCAq
ZnVuY3Rpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgZGVmaW5lIG9wZXJhdG9yPT0gb24gdHdvIHJlZmVy
ZW5jZSB0eXBlcy4iKSk7Ci0gICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9uLmlzQ2FzdCgpICYmIGZ1
bmN0aW9uLnBhcmFtZXRlcnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZ5
Tm9kZSA9IGZ1bmN0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSAmJiBpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICAg
ICAgICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlwZSgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBkZWZp
bmUgYSBjYXN0IG9uIGFuIG9wYXF1ZSB0eXBlLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKLQotICAgIEhhc2hTZXQ8RHVwbGljYXRl
RnVuY3Rpb25LZXksIER1cGxpY2F0ZUZ1bmN0aW9uS2V5OjpIYXNoLCBEdXBsaWNhdGVGdW5jdGlv
bktleTo6VHJhaXRzPiBmdW5jdGlvbnM7Ci0KLSAgICBhdXRvIGFkZCA9IFsmXSAoY29uc3QgQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBmdW5jdGlvbnMuYWRkKER1cGxpY2F0ZUZ1bmN0
aW9uS2V5IHsgZnVuY3Rpb24gfSk7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkZvdW5kIGR1cGxpY2F0
ZSBmdW5jdGlvbiIpKTsKLSAgICAgICAgcmV0dXJuIHBhc3Nlc1N0YXRpY0NoZWNrcyhmdW5jdGlv
bik7Ci0gICAgfTsKLQotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBhZGQo
ZnVuY3Rpb25EZWZpbml0aW9uLmdldCgpKTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQpCi0gICAg
ICAgICAgICByZXR1cm4gYWRkUmVzdWx0OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMo
KSkgewotICAgICAgICAvLyBXZSBnZW5lcmF0ZSBkdXBsaWNhdGUgbmF0aXZlIGZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucyBpbiBzeW50aGVzaXplIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgLy8gRklYTUU6
IGlzIHRoaXMgcmlnaHQ/Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTg1ODAKLSAgICAgICAgLy8KLSAgICAgICAgLy8gU2luY2Ugd2UgZG8gdGhh
dCwgd2UganVzdCBuZWVkIHRvIG1ha2Ugc3VyZSBubyBuYXRpdmUgZnVuY3Rpb24gaXMgYSBkdXBs
aWNhdGUKLSAgICAgICAgLy8gb2YgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24uCi0KLSAgICAgICAg
Ly8gRklYTUU6IEFkZCBiYWNrIHRoaXMgYXNzZXJ0IG9uY2Ugd2UgYmVnaW4gdG8gYXV0byBnZW5l
cmF0ZSB0aGVzZSBpbiB0aGUgY29tcGlsZXIKLSAgICAgICAgLy8gaW5zdGVhZCBvZiBoYXZpbmcg
dGhlbSBpbiB0aGUgc3RkbGliCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg4NjEKLSAgICAgICAgLy8gQVNTRVJUKHBhc3Nlc1N0YXRpY0NoZWNr
cyhuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmdldCgpKSk7Ci0gICAgICAgIGlmIChmdW5jdGlv
bnMuY29udGFpbnMoRHVwbGljYXRlRnVuY3Rpb25LZXkgeyBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmdldCgpIH0pKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJE
dXBsaWNhdGUgbmF0aXZlIGZ1bmN0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDdkMzJlNTJlNmE0ZTI3
MGIxOThkMjM1OTU3MjY5MzhiYjc2MGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
aGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cyhjb25zdCBQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTUzMTU0NzM5NDg2MDQxNmM1YmU3MjJkMjlkNjVlM2I0ZWRjNTU0Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hM
U0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotY2xhc3MgUmVmZXJlbmNlVHlwZUNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1w
dWJsaWM6Ci0gICAgUmVmZXJlbmNlVHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVh
bCB+UmVmZXJlbmNlVHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIGNoZWNrVHlwZShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlLCBDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uLCBjb25zdCBjaGFyKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIGF1
dG8mIHVuaWZpZWRUeXBlID0gdHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6
UmVmZXJlbmNlVHlwZT4odW5pZmllZFR5cGUpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJv
cihlcnJvciwgY29kZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKQotICAgICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZp
ZWRUeXBlKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJl
ZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja1R5cGUocmVmZXJlbmNl
VHlwZS5lbGVtZW50VHlwZSgpLCByZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpLCAicmVmZXJl
bmNlIHR5cGUgY2Fubm90IGhhdmUgYW5vdGhlciByZWZlcmVuY2UgdHlwZSBhcyBhbiBpbm5lciB0
eXBlIik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBl
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tUeXBlKGFycmF5VHlwZS50eXBlKCksIGFy
cmF5VHlwZS5jb2RlTG9jYXRpb24oKSwgImFycmF5IHR5cGUgY2Fubm90IGhhdmUgYSByZWZlcmVu
Y2UgdHlwZSBhcyBpdHMgaW5uZXIgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgY2hlY2tUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpLCBzdHJ1Y3R1cmVFbGVtZW50
LmNvZGVMb2NhdGlvbigpLCAiY2Fubm90IGhhdmUgYSBzdHJ1Y3R1cmUgZmllbGQgd2hpY2ggaXMg
YSByZWZlcmVuY2UgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNz
aW9uJiBleHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQo
ZXhwcmVzc2lvbik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29s
dmVkVHlwZSgpKTsKLSAgICB9Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZl
cmVuY2VUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoaXMgcGFzcyBkb2VzIHRo
ZXNlIHRoaW5nczoKLSAgICAvLyAxLiBEaXNhbGxvdyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdo
aWNoIGFyZSByZWZlcmVuY2VzLiBUaGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCi0gICAg
Ly8gZmlndXJlIG91dCBob3cgdG8gZGVmYXVsdCBpbml0aWFsaXplIHN1Y2ggYSBzdHJ1Y3QuIFdl
IGNvdWxkIHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSBpZiB3ZQotICAgIC8vIGRpZCBhbiBhbmFs
eXNpcyBvbiB3aGljaCBzdHJ1Y3RzIGNvbnRhaW4gcmVmZXJlbmNlIGZpZWxkcywgYW5kIGVuc3Vy
ZSBzdWNoIHN0cnVjdCB2YXJpYWJsZXMKLSAgICAvLyBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMu
IFRoaXMgd291bGQgYWxzbyByZXF1aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0
cnVjdHMgd2hpY2gKLSAgICAvLyBpbml0aWFsaXplIGVhY2ggZmllbGQuCi0gICAgLy8gMi4gV2Ug
YWxzbyBkbyB0aGUgc2FtZSBmb3IgYXJyYXlzLgotICAgIC8vIDMuIFJlZmVyZW5jZXMgY2FuIG9u
bHkgYmUgb25lIGxldmVsIGRlZXAuIFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZl
cmVuY2VzIHRvCi0gICAgLy8gcmVmZXJlbmNlcywgZXRjLiBUaGlzIGlzIHRvIHN1cHBvcnQgbG9n
aWNhbCBtb2RlLgotICAgIFJlZmVyZW5jZVR5cGVDaGVja2VyIHJlZmVyZW5jZVR5cGVDaGVja2Vy
OwotICAgIHJlZmVyZW5jZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsK
LSAgICByZXR1cm4gcmVmZXJlbmNlVHlwZUNoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc1MzYyYTgwNDQyM2IyYTBmZTI4NTNjMzczMjJlMjYxZTcxODE3
NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGNoZWNrUmVmZXJlbmNlVHlwZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmNlNmMwMDM4N2VjMWNjOGViYWU1NDQ3
N2ViOTYyMzkzOWNkYmIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0
dXJlUmVmZXJlbmNlcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrVGV4dHVyZVJl
ZmVyZW5jZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJU
eXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFRleHR1cmVSZWZl
cmVuY2VzQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBUZXh0
dXJlUmVmZXJlbmNlc0NoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5UZXh0dXJl
UmVmZXJlbmNlc0NoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlBvaW50ZXJUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotCi0g
ICAgYm9vbCBjb250YWluc1RleHR1cmVPclNhbXBsZXIoQVNUOjpVbm5hbWVkVHlwZSYpOwotfTsK
LQotY2xhc3MgU2VhcmNoZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgU2VhcmNo
ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5TZWFyY2hlcigpID0gZGVmYXVsdDsKLQot
ICAgIGJvb2wgZm91bmQoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0gICAgYm9vbCBt
X2ZvdW5kIHsgZmFsc2UgfTsKLX07Ci0KLXZvaWQgU2VhcmNoZXI6OnZpc2l0KEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKLSAgICAgICAgbV9mb3VuZCA9IHRydWU7
Ci19Ci0KLWJvb2wgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjpjb250YWluc1RleHR1cmVPclNh
bXBsZXIoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgU2VhcmNoZXIgc2Vh
cmNoZXI7Ci0gICAgc2VhcmNoZXIuY2hlY2tFcnJvckFuZFZpc2l0KHVubmFtZWRUeXBlKTsKLSAg
ICByZXR1cm4gc2VhcmNoZXIuZm91bmQoKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0No
ZWNrZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQotewotICAgIFZpc2l0
b3I6OnZpc2l0KHBvaW50ZXJUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChjb250YWluc1RleHR1cmVPclNhbXBsZXIocG9pbnRlclR5cGUuZWxlbWVu
dFR5cGUoKSkpCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhIHBvaW50ZXIg
dG8gYSB0ZXh0dXJlIG9yIHNhbXBsZXIuIiwgcG9pbnRlclR5cGUuY29kZUxvY2F0aW9uKCkpKTsK
LX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoYXJy
YXlSZWZlcmVuY2VUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChjb250YWluc1RleHR1cmVPclNhbXBsZXIoYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1l
bnRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYW4gYXJyYXkg
cmVmZXJlbmNlIHRvIGEgdGV4dHVyZSBvciBzYW1wbGVyLiIsIGFycmF5UmVmZXJlbmNlVHlwZS5j
b2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlz
aXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChhcnJh
eVR5cGUpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNv
bnRhaW5zVGV4dHVyZU9yU2FtcGxlcihhcnJheVR5cGUudHlwZSgpKSkKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCBoYXZlIGFuIGFycmF5IG9mIHRleHR1cmVzIG9yIHNhbXBsZXJzLiIs
IGFycmF5VHlwZS5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2Vz
Q2hlY2tlcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIFZpc2l0
b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9u
LnJlc29sdmVkVHlwZSgpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZp
c2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAg
aWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFu
ZGFyZExpYnJhcnkpCi0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7
Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24mKQotewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFRleHR1cmVSZWZlcmVu
Y2VzQ2hlY2tlciB0ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI7Ci0gICAgdGV4dHVyZVJlZmVyZW5j
ZXNDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICByZXR1cm4gdGV4dHVy
ZVJlZmVyZW5jZXNDaGVja2VyLnJlc3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDY5NDk2ZWU5ZDI5YTBhNTg5NjUzMWRlYWQ1ZjgyZTNlNzU2ZjcwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVj
a1RleHR1cmVSZWZlcmVuY2VzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2FhMjdhNmM4YTk4YzNlNWJmNjdmZjI5YzIyYWJhODYwODNmMmQ0Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hl
Y2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xB
cnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1
ZGUgIldITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENhbGxFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3Au
aCIKLSNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5
UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xH
YXRoZXJFbnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlw
ZXMuaCIKLSNpbmNsdWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNv
bHZpbmdUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFN3
aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Npb24uaCIKLSNp
bmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIFBPRENoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgUE9E
Q2hlY2tlcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgflBPRENoZWNrZXIoKSA9IGRlZmF1
bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJh
dGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChl
bnVtZXJhdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAg
ICAgICYmICFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQotICAgICAgICAgICAgJiYg
IW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJpeCgpKQotICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIlVzZSBvZiBuYXRpdmUgdHlwZSBpcyBub3QgYSBQT0QgaW4gZW50cnlwb2ludCBzZW1h
bnRpYy4iLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5p
dGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN0cnVjdHVyZURl
ZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYg
dHlwZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdCh0
eXBlRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYg
YXJyYXlUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlU
eXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJU
eXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIklsbGVnYWwgdXNl
IG9mIHBvaW50ZXIgaW4gZW50cnlwb2ludCBzZW1hbnRpYy4iLCBwb2ludGVyVHlwZS5jb2RlTG9j
YXRpb24oKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9y
KEVycm9yKCJJbGxlZ2FsIHVzZSBvZiBhcnJheSByZWZlcmVuY2UgaW4gZW50cnlwb2ludCBzZW1h
bnRpYy4iLCBhcnJheVJlZmVyZW5jZVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJlc29sdmVk
VHlwZSgpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbktleSB7Ci1wdWJsaWM6Ci0gICAg
RnVuY3Rpb25LZXkoKSA9IGRlZmF1bHQ7Ci0gICAgRnVuY3Rpb25LZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQotICAgIHsKLSAgICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9IGJpdHdp
c2VfY2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotICAg
IH0KLQotICAgIEZ1bmN0aW9uS2V5KFN0cmluZyBuYW1lLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gdHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0
dXJuVHlwZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAg
ICAgICwgbV90eXBlcyhXVEZNb3ZlKHR5cGVzKSkKLSAgICAgICAgLCBtX2Nhc3RSZXR1cm5UeXBl
KGNhc3RSZXR1cm5UeXBlKQotICAgIHsgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWUuaXNOdWxsKCk7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZSA9PSBiaXR3aXNlX2Nhc3Q8
QVNUOjpOYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBoYXNoID0gSW50SGFz
aDxzaXplX3Q+OjpoYXNoKG1fdHlwZXMuc2l6ZSgpKTsKLSAgICAgICAgaGFzaCBePSBtX25hbWUu
aGFzaCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBoYXNoIF49IG1fdHlwZXNbaV0uZ2V0KCkuaGFzaCgpICsgaTsKLQot
ICAgICAgICBpZiAobV9jYXN0UmV0dXJuVHlwZSkKLSAgICAgICAgICAgIGhhc2ggXj0gV1RGOjpQ
dHJIYXNoPEFTVDo6VHlwZSo+OjpoYXNoKCZtX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSk7
Ci0KLSAgICAgICAgcmV0dXJuIGhhc2g7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZ1bmN0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX3R5cGVz
LnNpemUoKSAhPSBvdGhlci5tX3R5cGVzLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBpZiAobV9uYW1lICE9IG90aGVyLm1fbmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHlwZXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcyhtX3R5cGVzW2ldLmdldCgpLCBv
dGhlci5tX3R5cGVzW2ldLmdldCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4obV9jYXN0UmV0dXJuVHlw
ZSkgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4ob3RoZXIubV9jYXN0UmV0dXJuVHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFtX2Nhc3RSZXR1cm5UeXBlKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKCZtX2Nhc3RSZXR1cm5UeXBlLT51
bmlmeU5vZGUoKSA9PSAmb3RoZXIubV9jYXN0UmV0dXJuVHlwZS0+dW5pZnlOb2RlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGdW5j
dGlvbktleSYga2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZ1bmN0aW9uS2V5
JiBhLCBjb25zdCBGdW5jdGlvbktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGEgPT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6
IHB1YmxpYyBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxGdW5jdGlvbktleT4gewotICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBGdW5jdGlvbktleSYga2V5KSB7IHJl
dHVybiBrZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAgIFN0cmlu
ZyBtX25hbWU7Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVk
VHlwZT4+IG1fdHlwZXM7Ci0gICAgQVNUOjpOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGU7Ci19
OwotCi1zdGF0aWMgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIHJlc29sdmVXaXRoUmVm
ZXJlbmNlQ29tcGFyYXRvcihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJlc29sdmluZ1R5cGUmIGZp
cnN0QXJndW1lbnQsIFJlc29sdmluZ1R5cGUmIHNlY29uZEFyZ3VtZW50LCBjb25zdCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzKQotewotICAgIGNvbnN0IGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0g
ICAgYXV0byByZXR1cm5UeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBp
bnRyaW5zaWNzLmJvb2xUeXBlKCkpOwotICAgIGF1dG8gYXJndW1lbnRUeXBlID0gZmlyc3RBcmd1
bWVudC52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5u
YW1lZFR5cGUpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiB1bm5h
bWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4mKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gc2Vjb25k
QXJndW1lbnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4m
IHVubmFtZWRUeXBlKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0
dXJuIHVubmFtZWRUeXBlLmNvcHlSZWYoKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZT4mKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAg
ICAgLy8gV2UgZW5jb3VudGVyZWQgIm51bGwgPT0gbnVsbCIuCi0gICAgICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MiBUaGlzIGNh
biBwcm9iYWJseSBiZSBnZW5lcmFsaXplZCwgdXNpbmcgdGhlICJwcmVmZXJyZWQgdHlwZSIgaW5m
cmFzdHJ1Y3R1cmUgdXNlZCBieSBnZW5lcmljIGxpdGVyYWxzCi0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAobG9jYXRpb24sIGludHJpbnNpY3MuaW50VHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0p
KTsKLSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1l
dGVycy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0
aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgYXJndW1lbnRUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBX
VEZNb3ZlKGFyZ3VtZW50VHlwZSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAg
cmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKHJldHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFy
c2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotfQotCi1lbnVtIGNsYXNzIEFjY2VwdGFiaWxp
dHkgewotICAgIFllcywKLSAgICBObwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0
cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzKQotewotICAgIGlmIChuYW1lID09ICJvcGVyYXRvcj09IiAmJiB0eXBlcy5zaXpl
KCkgPT0gMikgewotICAgICAgICBhdXRvIGFjY2VwdGFiaWxpdHkgPSBbXShSZXNvbHZpbmdUeXBl
JiByZXNvbHZpbmdUeXBlKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgIHJldHVybiBy
ZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JiB1bm5hbWVkVHlwZSkgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAgICAgICAgICAgICAgYXV0
byYgdW5pZnlOb2RlID0gdW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgICAg
IHJldHVybiBpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpICYmIGlzPEFTVDo6UmVmZXJl
bmNlVHlwZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkgPyBBY2NlcHRh
YmlsaXR5OjpZZXMgOiBBY2NlcHRhYmlsaXR5OjpObzsKLSAgICAgICAgICAgIH0sIFtdKFJlZlB0
cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQWNjZXB0YWJpbGl0eTo6Tm87Ci0gICAgICAgICAgICB9KSk7Ci0gICAg
ICAgIH07Ci0gICAgICAgIGF1dG8gbGVmdEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRhYmlsaXR5KHR5
cGVzWzBdLmdldCgpKTsKLSAgICAgICAgYXV0byByaWdodEFjY2VwdGFiaWxpdHkgPSBhY2NlcHRh
YmlsaXR5KHR5cGVzWzFdLmdldCgpKTsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChsZWZ0QWNjZXB0YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMgJiYgcmln
aHRBY2NlcHRhYmlsaXR5ID09IEFjY2VwdGFiaWxpdHk6OlllcykgewotICAgICAgICAgICAgYXV0
byYgdW5uYW1lZFR5cGUxID0gKnR5cGVzWzBdLmdldCgpLmdldFVubmFtZWRUeXBlKCk7Ci0gICAg
ICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZTIgPSAqdHlwZXNbMV0uZ2V0KCkuZ2V0VW5uYW1lZFR5
cGUoKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBtYXRjaGVzKHVubmFtZWRUeXBlMSwgdW5uYW1l
ZFR5cGUyKTsKLSAgICAgICAgfSAKLSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21wYXJhdG9yKGxvY2F0aW9uLCB0eXBlc1swXS5n
ZXQoKSwgdHlwZXNbMV0uZ2V0KCksIGludHJpbnNpY3MpOwotICAgIH0KLSAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotfQotCi1zdGF0aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBpbnB1dEl0ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVt
cywgY29uc3Qgc3RkOjpvcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5
cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgewotICAgICAgICBhdXRv
IGNoZWNrRHVwbGljYXRlU2VtYW50aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4mIGl0ZW1zKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSAr
IDE7IGogPCBpdGVtcy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRl
bXNbaV0uc2VtYW50aWMgPT0gaXRlbXNbal0uc2VtYW50aWMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICghY2hlY2tEdXBs
aWNhdGVTZW1hbnRpY3MoaW5wdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGlmICghY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3Mob3V0cHV0SXRlbXMpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1Nl
bWFudGljVHlwZXMgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+
IGJvb2wgewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGFjY2VwdGFibGUgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZd
KGNvbnN0IEFTVDo6QmFzZVNlbWFudGljJiBzZW1hbnRpYykgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZW1hbnRpYy5pc0FjY2VwdGFibGVUeXBlKCppdGVtLnVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzKTsKLSAgICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwot
ICAgICAgICAgICAgICAgIGlmICghYWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH07Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY1R5cGVzKGlucHV0SXRlbXMpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhv
dXRwdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewot
ICAgICAgICBhdXRvIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlID0gWyZdKGNvbnN0IFZlY3Rv
cjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6U2hhZGVySXRlbURp
cmVjdGlvbiBkaXJlY3Rpb24pIC0+IGJvb2wgewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVt
IDogaXRlbXMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFjY2VwdGFibGUgPSBXVEY6OnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEFTVDo6QmFzZVNlbWFudGljJiBzZW1hbnRpYykg
LT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYy5pc0FjY2VwdGFi
bGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKGRpcmVjdGlvbiwgZW50cnlQb2ludFR5cGUpOwotICAg
ICAgICAgICAgICAgIH0pLCAqaXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFh
Y2NlcHRhYmxlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFj
aGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShpbnB1dEl0ZW1zLCBBU1Q6OkJhc2VTZW1hbnRpYzo6
U2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKG91dHB1dEl0ZW1zLCBBU1Q6
OkJhc2VTZW1hbnRpYzo6U2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0KSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gY2hlY2tQT0REYXRh
ID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgUE9E
Q2hlY2tlciBwb2RDaGVja2VyOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJU
eXBlPihpdGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgcG9kQ2hlY2tlci5j
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKml0ZW0udW5uYW1l
ZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPihpdGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAg
ICAgcG9kQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU+KCppdGVtLnVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAg
ICAgICAgICAgICAgICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkudHlwZSgpKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
IChwb2RDaGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Owot
ICAgICAgICBpZiAoIWNoZWNrUE9ERGF0YShpbnB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVja1BPRERhdGEob3V0cHV0SXRlbXMpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgYm9vbCBjaGVja09wZXJhdG9yT3ZlcmxvYWQoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIENoZWNrS2luZCB7Ci0g
ICAgICAgIEluZGV4LAotICAgICAgICBEb3QKLSAgICB9OwotCi0gICAgaWYgKCFmdW5jdGlvbkRl
ZmluaXRpb24uaXNPcGVyYXRvcigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZnVu
Y3Rpb25EZWZpbml0aW9uLmlzQ2FzdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
ZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IrKyIgfHwgZnVuY3Rpb25EZWZp
bml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3ItLSIpIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
RGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEKLSAgICAgICAgICAgICYmIG1hdGNo
ZXMoKmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSwgZnVuY3Rpb25E
ZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgfQotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFt
ZSgpID09ICJvcGVyYXRvcisiIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJh
dG9yLSIpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNp
emUoKSA9PSAxIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7
Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKiIKLSAgICAg
ICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IvIgotICAgICAgICB8
fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvciUiCi0gICAgICAgIHx8IGZ1
bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yJiIKLSAgICAgICAgfHwgZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3J8IgotICAgICAgICB8fCBmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcl4iCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5p
dGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yPDwiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlv
bi5uYW1lKCkgPT0gIm9wZXJhdG9yPj4iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9u
Lm5hbWUoKSA9PSAib3BlcmF0b3J+IikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5pdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDE7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1jbGFz
cyBDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIENoZWNrZXIoY29uc3Qg
SW50cmluc2ljcyYgaW50cmluc2ljcywgUHJvZ3JhbSYgcHJvZ3JhbSkKLSAgICAgICAgOiBtX2lu
dHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX3Byb2dyYW0ocHJvZ3JhbSkKLSAgICB7
Ci0gICAgICAgIGF1dG8gYWRkRnVuY3Rpb24gPSBbJl0gKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biYgZnVuY3Rpb24pIHsKLSAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24uaXNDYXN0KCkgJiYgaXM8QVNU
OjpOYW1lZFR5cGU+KGZ1bmN0aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpCi0gICAgICAgICAgICAg
ICAgY2FzdFJldHVyblR5cGUgPSAmZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGZ1bmN0aW9uLnR5
cGUoKS51bmlmeU5vZGUoKSk7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB0eXBlczsKLSAgICAgICAgICAgIHR5cGVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0KLSAgICAg
ICAgICAgIGZvciAoYXV0byYgcGFyYW0gOiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkpCi0gICAgICAg
ICAgICAgICAgdHlwZXMudW5jaGVja2VkQXBwZW5kKG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25L
ZXkoKnBhcmFtLT50eXBlKCkpKTsKLQotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Z1
bmN0aW9ucy5hZGQoRnVuY3Rpb25LZXkgeyBmdW5jdGlvbi5uYW1lKCksIFdURk1vdmUodHlwZXMp
LCBjYXN0UmV0dXJuVHlwZSB9LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24+LCAxPigpKTsKLSAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuYXBwZW5kKGZ1bmN0aW9uKTsKLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uIDogbV9wcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAg
ICAgIGFkZEZ1bmN0aW9uKGZ1bmN0aW9uLmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5j
dGlvbiA6IG1fcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKQotICAgICAgICAg
ICAgYWRkRnVuY3Rpb24oZnVuY3Rpb24uZ2V0KCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkNo
ZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlkZTsK
LQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhc3NpZ25UeXBlcygpOwotCi1wcml2YXRlOgot
ICAgIGJvb2wgY2hlY2tTaGFkZXJUeXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7
Ci0gICAgYm9vbCBpc0Jvb2xUeXBlKFJlc29sdmluZ1R5cGUmKTsKLSAgICBzdHJ1Y3QgUmVjdXJz
ZUluZm8gewotICAgICAgICBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlOwotICAgICAgICBj
b25zdCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uOwotICAgIH07Ci0gICAgc3Rk
OjpvcHRpb25hbDxSZWN1cnNlSW5mbz4gcmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9u
JiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJl
Y3Vyc2VJbmZvPiBnZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFs
dWUgPSBmYWxzZSk7Ci0gICAgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHJlY3Vyc2VBbmRXcmFw
QmFzZVR5cGUoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKTsKLSAgICBib29sIHJlY3Vy
c2VBbmRSZXF1aXJlQm9vbFR5cGUoQVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdm9pZCBhc3NpZ25D
b25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBBU1Q6
OlR5cGVBbm5vdGF0aW9uKTsKLSAgICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJl
c3Npb24mLCBBU1Q6Ok5hbWVkVHlwZSYsIEFTVDo6VHlwZUFubm90YXRpb24pOwotICAgIHZvaWQg
YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2U+LCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLSAgICB2b2lkIGZvcndhcmRUeXBlKEFTVDo6RXhw
cmVzc2lvbiYsIFJlc29sdmluZ1R5cGUmLCBBU1Q6OlR5cGVBbm5vdGF0aW9uKTsKLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVuY2VF
eHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVy
YWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxl
TG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpDb21tYUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VGVybmFy
eUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLQotICAgIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1
bmN0aW9uKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2Fz
dFJldHVyblR5cGUgPSBudWxscHRyKTsKLQotICAgIEFTVDo6VW5uYW1lZFR5cGUmIHdyYXBwZWRG
bG9hdFR5cGUoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dyYXBwZWRGbG9hdFR5cGUpCi0gICAg
ICAgICAgICBtX3dyYXBwZWRGbG9hdFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoeyB9
LCBtX2ludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgICAgICByZXR1cm4gKm1fd3JhcHBlZEZs
b2F0VHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiB3cmFwcGVkVWludFR5cGUo
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dyYXBwZWRVaW50VHlwZSkKLSAgICAgICAgICAgIG1f
d3JhcHBlZFVpbnRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKHsgfSwgbV9pbnRyaW5z
aWNzLnVpbnRUeXBlKCkpOwotICAgICAgICByZXR1cm4gKm1fd3JhcHBlZFVpbnRUeXBlOwotICAg
IH0KLQotICAgIEFTVDo6VW5uYW1lZFR5cGUmIG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXko
QVNUOjpVbm5hbWVkVHlwZSYgdHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8qIHVuaWZ5Tm9kZSA9
ICZ0eXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAodW5pZnlOb2RlID09ICZtX2ludHJpbnNp
Y3MudWludFR5cGUoKSB8fCB1bmlmeU5vZGUgPT0gJm1faW50cmluc2ljcy5pbnRUeXBlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gd3JhcHBlZEZsb2F0VHlwZSgpOwotCi0gICAgICAgIHJldHVybiB0
eXBlOwotICAgIH0KLQotICAgIFJlZlB0cjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fd3JhcHBlZEZs
b2F0VHlwZTsKLSAgICBSZWZQdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3dyYXBwZWRVaW50VHlw
ZTsKLSAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIHN0ZDo6dW5pcXVlX3B0cjxSZXNvbHZp
bmdUeXBlPj4gbV90eXBlTWFwOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZlcnRleEVudHJ5UG9p
bnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2ZyYWdtZW50
RW50cnlQb2ludHNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1f
Y29tcHV0ZUVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIGNvbnN0IEludHJp
bnNpY3MmIG1faW50cmluc2ljczsKLSAgICBQcm9ncmFtJiBtX3Byb2dyYW07Ci0gICAgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9OwotICAgIEhh
c2hNYXA8RnVuY3Rpb25LZXksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbj4sIDE+LCBGdW5jdGlvbktleTo6SGFzaCwgRnVuY3Rpb25LZXk6OlRy
YWl0cz4gbV9mdW5jdGlvbnM7Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNl
IHsgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotICAgIGJvb2wgbV9pc1Zpc2l0
aW5nUGFyYW1ldGVycyB7IGZhbHNlIH07Ci19OwotCi12b2lkIENoZWNrZXI6OnZpc2l0KFByb2dy
YW0mIHByb2dyYW0pCi17Ci0gICAgLy8gVGhlc2UgdmlzaXRpbmcgZnVuY3Rpb25zIG1pZ2h0IGFk
ZCBuZXcgZ2xvYmFsIHN0YXRlbWVudHMsIHNvIGRvbid0IHVzZSBmb3JlYWNoIHN5bnRheC4KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9u
cygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0dXJlRGVm
aW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dy
YW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9u
cygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRp
dmVUeXBlRGVjbGFyYXRpb25zKClbaV0pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5z
aXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbnMoKVtpXSk7Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBDaGVj
a2VyOjphc3NpZ25UeXBlcygpCi17Ci0gICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtX3R5
cGVNYXApIHsKLSAgICAgICAgYXV0byBzdWNjZXNzID0ga2V5VmFsdWVQYWlyLnZhbHVlLT52aXNp
dChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBl
KSAtPiBib29sIHsKLSAgICAgICAgICAgIGtleVZhbHVlUGFpci5rZXktPnNldFR5cGUodW5uYW1l
ZFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBb
Jl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UpIC0+IGJvb2wgewotICAgICAgICAgICAgaWYgKCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+
cmVzb2x2YWJsZVR5cGUoKS5tYXliZVJlc29sdmVkVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFzdGF0aWNfY2FzdDxib29sPihjb21taXQocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJl
c29sdmFibGVUeXBlKCkpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAga2V5VmFsdWVQYWlyLmtleS0+c2V0VHlwZShyZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSkpOwotICAgICAgICBpZiAoIXN1Y2Nlc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCByZXNv
bHZlIHRoZSB0eXBlIG9mIGEgY29uc3RhbnQuIikpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07
Ci19Ci0KLWJvb2wgQ2hlY2tlcjo6Y2hlY2tTaGFkZXJUeXBlKGNvbnN0IEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIHN3aXRjaCAoKmZ1bmN0
aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9p
bnRUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3ZlcnRl
eEVudHJ5UG9pbnRzW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAg
IGNhc2UgQVNUOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX2ZyYWdtZW50RW50cnlQb2ludHNbaW5kZXhdLmFkZChmdW5jdGlvbkRl
ZmluaXRpb24ubmFtZSgpKSk7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRl
OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb21wdXRlRW50cnlQb2ludHNb
aW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSk7Ci0gICAgfQotfQotCi12b2lk
IENoZWNrZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJh
dGlvbikKLXsKLSAgICBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzID0gdHJ1ZTsKLSAgICBWaXNpdG9y
Ojp2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJz
ID0gZmFsc2U7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBmdW5j
dGlvbkRlZmluaXRpb24ubmFtZVNwYWNlKCk7Ci0gICAgbV9jdXJyZW50RnVuY3Rpb24gPSAmZnVu
Y3Rpb25EZWZpbml0aW9uOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5
cGUoKSkgewotICAgICAgICBpZiAoIWNoZWNrU2hhZGVyVHlwZShmdW5jdGlvbkRlZmluaXRpb24p
KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRHVwbGljYXRlIGVudHJ5cG9pbnQgZnVu
Y3Rpb24uIiwgZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBnYXRo
ZXJFbnRyeVBvaW50SXRlbXMobV9pbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24pOwotICAg
ICAgICBpZiAoIWVudHJ5UG9pbnRJdGVtcykgewotICAgICAgICAgICAgc2V0RXJyb3IoZW50cnlQ
b2ludEl0ZW1zLmVycm9yKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICghY2hlY2tTZW1hbnRpY3MoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGVudHJ5UG9p
bnRJdGVtcy0+b3V0cHV0cywgZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCksIG1f
aW50cmluc2ljcykpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJCYWQgc2VtYW50aWNz
IGZvciBlbnRyeXBvaW50LiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghY2hlY2tPcGVy
YXRvck92ZXJsb2FkKGZ1bmN0aW9uRGVmaW5pdGlvbikpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIk9wZXJhdG9yIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHNpZ25hdHVyZS4iLCBmdW5jdGlv
bkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci19Ci0KLXN0YXRpYyBSZWZQ
dHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYgbGVmdCwg
UmVzb2x2aW5nVHlwZSYgcmlnaHQpCi17Ci0gICAgcmV0dXJuIGxlZnQudmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiBsZWZ0KSAtPiBSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1l
ZFR5cGU+IHsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGxlZnQsIHJpZ2h0KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbGVmdC5jb3B5UmVmKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJpZ2h0
KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIG1hdGNo
QW5kQ29tbWl0KGxlZnQsIHJpZ2h0LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSkpOwot
ICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAtPiBSZWZQ
dHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gcmlnaHQudmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gUmVmUHRyPEFT
VDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChyaWdo
dCwgbGVmdC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2U+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsK
LSAgICAgICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChsZWZ0LT5yZXNvbHZhYmxlVHlwZSgp
LCByaWdodC0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSk7Ci19Ci0K
LXN0YXRpYyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5n
VHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0g
ICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiByZXNvbHZpbmdUeXBlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlw
ZT4gewotICAgICAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZSkpCi0g
ICAgICAgICAgICByZXR1cm4gJnVubmFtZWRUeXBlOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2aW5nVHlw
ZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIG1hdGNoQW5k
Q29tbWl0KHVubmFtZWRUeXBlLCByZXNvbHZpbmdUeXBlLT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAg
ICB9KSk7Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUmIHJl
c29sdmluZ1R5cGUsIEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUpCi17Ci0gICAgcmV0dXJuIHJl
c29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JiByZXNvbHZpbmdUeXBlKSB7Ci0gICAgICAgIGlmIChtYXRjaGVzKHJlc29sdmluZ1R5cGUs
IG5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZp
bmdUeXBlKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVkVHlw
ZSwgcmVzb2x2aW5nVHlwZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgfSkpOwotfQotCi1zdGF0
aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChSZXNvbHZpbmdUeXBlJiByZXNvbHZp
bmdUeXBlKQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJlZlB0cjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0g
ICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBl
UmVmZXJlbmNlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICBpZiAoIXJl
c29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBl
KCkpCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5y
ZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKTsKLSAgICB9KSk7Ci19Ci0KLUFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiogQ2hlY2tlcjo6cmVzb2x2ZUZ1bmN0aW9uKFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5
cGUpCi17Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlw
ZT4+IHVubmFtZWRUeXBlczsKLSAgICB1bm5hbWVkVHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSh0eXBlcy5zaXplKCkpOwotCi0gICAgZm9yIChhdXRvIHJlc29sdmluZ1R5cGUgOiB0eXBlcykg
ewotICAgICAgICBBU1Q6OlVubmFtZWRUeXBlKiB0eXBlID0gcmVzb2x2aW5nVHlwZS5nZXQoKS52
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRU
eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgICAgICByZXR1cm4gdW5uYW1lZFR5
cGUucHRyKCk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAg
ICAgICAgaWYgKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJl
UmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICZyZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5yZXNvbHZlZFR5cGUoKTsKLQotICAgICAgICAgICAg
aWYgKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzRmxvYXRMaXRl
cmFsVHlwZSgpCi0gICAgICAgICAgICAgICAgfHwgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJl
c29sdmFibGVUeXBlKCkuaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8
IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJndyYXBwZWRGbG9hdFR5
cGUoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKSkuZ2V0KCk7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBpZiAo
IXR5cGUpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDb3VsZCBub3QgcmVzb2x2ZSB0
aGUgdHlwZSBvZiBhIGNvbnN0YW50LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdW5uYW1lZFR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxp
emVkVHlwZUZvckZ1bmN0aW9uS2V5KCp0eXBlKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBh
dXRvIGl0ZXIgPSBtX2Z1bmN0aW9ucy5maW5kKEZ1bmN0aW9uS2V5IHsgbmFtZSwgV1RGTW92ZSh1
bm5hbWVkVHlwZXMpLCBjYXN0UmV0dXJuVHlwZSB9KTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gbV9m
dW5jdGlvbnMuZW5kKCkpIHsKLSAgICAgICAgICAgIGlmIChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoaXRlci0+dmFsdWUsIHR5cGVz
LCBjYXN0UmV0dXJuVHlwZSwgbV9jdXJyZW50TmFtZVNwYWNlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYXV0byBuZXdGdW5j
dGlvbiA9IHJlc29sdmVCeUluc3RhbnRpYXRpb24obmFtZSwgbG9jYXRpb24sIHR5cGVzLCBtX2lu
dHJpbnNpY3MpKSB7Ci0gICAgICAgIG1fcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmV3RnVuY3Rp
b24pKTsKLSAgICAgICAgcmV0dXJuICZtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKS5sYXN0KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5p
dGlvbikKLXsKLSAgICBib29sIGlzU2lnbmVkOwotICAgIGF1dG8qIGJhc2VUeXBlID0gKFsmXSgp
IC0+IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICAgICAgYXV0byYgYmFzZVR5
cGUgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICBp
ZiAoIWlzPEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+
KGJhc2VUeXBlKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
bmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4obmFtZWRUeXBlKTsKLSAgICAgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNJbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpc1NpZ25lZCA9IG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5pc1NpZ25lZCgpOwotICAgICAgICByZXR1cm4gJm5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjsKLSAgICB9KSgpOwotICAgIGlmICghYmFzZVR5cGUpIHsKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkludmFsaWQgYmFzZSB0eXBlIGZvciBlbnVtLiIsIGVudW1lcmF0aW9uRGVm
aW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
YXV0byBlbnVtZXJhdGlvbk1lbWJlcnMgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRp
b25NZW1iZXJzKCk7Ci0KLSAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVy
cykgewotICAgICAgICBpbnQ2NF90IHZhbHVlID0gbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAg
ICAgIGlmIChpc1NpZ25lZCkgewotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDY0X3Q+
KHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcigiSW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIuZ2V0
KCkuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSkgIT0gdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBzZXRFcnJvcihFcnJvcigiSW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZS4iLCBtZW1iZXIu
Z2V0KCkuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVu
dW1lcmF0aW9uTWVtYmVycy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gZW51
bWVyYXRpb25NZW1iZXJzW2ldLmdldCgpLnZhbHVlKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IGVudW1lcmF0aW9uTWVtYmVycy5zaXplKCk7ICsraikgewotICAgICAgICAg
ICAgYXV0byBvdGhlclZhbHVlID0gZW51bWVyYXRpb25NZW1iZXJzW2pdLmdldCgpLnZhbHVlKCk7
Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gb3RoZXJWYWx1ZSkgewotICAgICAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVjbGFyZSBkdXBsaWNhdGUgZW51bWVyYXRpb24gdmFs
dWVzLiIsIGVudW1lcmF0aW9uTWVtYmVyc1tqXS5nZXQoKS5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGJvb2wgZm91bmRaZXJvID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVt
ZXJhdGlvbk1lbWJlcnMpIHsKLSAgICAgICAgaWYgKCFtZW1iZXIuZ2V0KCkudmFsdWUoKSkgewot
ICAgICAgICAgICAgZm91bmRaZXJvID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGlmICghZm91bmRaZXJvKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9y
KCJlbnVtIGRlZmluaXRpb24gbXVzdCBjb250YWluIGEgemVybyB2YWx1ZS4iLCBlbnVtZXJhdGlv
bkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2Up
Ci17Ci0gICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0KLSAg
ICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotYXV0byBD
aGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJv
b2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+Ci17Ci0g
ICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGdldEluZm8oZXhwcmVzc2lvbiwg
cmVxdWlyZXNMZWZ0VmFsdWUpOwotfQotCi1hdXRvIENoZWNrZXI6OmdldEluZm8oQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlv
bmFsPFJlY3Vyc2VJbmZvPgotewotICAgIGF1dG8gdHlwZUl0ZXJhdG9yID0gbV90eXBlTWFwLmZp
bmQoJmV4cHJlc3Npb24pOwotICAgIEFTU0VSVCh0eXBlSXRlcmF0b3IgIT0gbV90eXBlTWFwLmVu
ZCgpKTsKLQotICAgIGNvbnN0IGF1dG8mIHR5cGVBbm5vdGF0aW9uID0gZXhwcmVzc2lvbi50eXBl
QW5ub3RhdGlvbigpOwotICAgIGlmIChyZXF1aXJlc0xlZnRWYWx1ZSAmJiB0eXBlQW5ub3RhdGlv
bi5pc1JpZ2h0VmFsdWUoKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCBy
dmFsdWUuIiwgZXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLSAgICByZXR1cm4ge3sgKnR5cGVJdGVyYXRvci0+dmFsdWUsIHR5
cGVBbm5vdGF0aW9uIH19OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICAvLyBSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9ucyBhcmUgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgYW5vbnltb3VzIHZhcmlhYmxl
cyBleGlzdCwKLSAgICAvLyBhbmQgdGhhdCBkb2Vzbid0IHJlY3Vyc2Ugb24gdGhlIGFub255bW91
cyB2YXJpYWJsZXMsIHNvIHdlIGNhbiBhc3N1bWUgdGhlIHZhcmlhYmxlIGhhcyBhIHR5cGUuCi0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAg
aWYgKG1hdGNoZXMoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpLCBtX2ludHJpbnNpY3Mudm9p
ZFR5cGUoKSkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlZhcmlhYmxlcyBjYW4ndCBoYXZl
IHZvaWQgdHlwZS4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6
ZXIoKSkgewotICAgICAgICBhdXRvJiBsaHNUeXBlID0gKnZhcmlhYmxlRGVjbGFyYXRpb24udHlw
ZSgpOwotICAgICAgICBhdXRvIGluaXRpYWxpemVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKCp2
YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBpZiAoIWluaXRpYWxp
emVySW5mbykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1p
dChpbml0aWFsaXplckluZm8tPnJlc29sdmluZ1R5cGUsIGxoc1R5cGUpKSB7Ci0gICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcigiRGVjbGFyZWQgdmFyaWFibGUgdHlwZSBkb2VzIG5vdCBtYXRjaCBp
dHMgaW5pdGlhbGl6ZXIncyB0eXBlLiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIW1f
aXNWaXNpdGluZ1BhcmFtZXRlcnMgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPih2YXJpYWJsZURl
Y2xhcmF0aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OlBv
aW50ZXJUeXBlPih2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKQotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk11c3QgYXNzaWduIHRvIGEgcG9pbnRlciB2YXJpYWJs
ZSBkZWNsYXJhdGlvbiBpbiBpdHMgaW5pdGlhbGl6ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChpczxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5
Tm9kZSgpKSk7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiTXVzdCBhc3NpZ24gdG8gYW4g
YXJyYXkgcmVmZXJlbmNlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIGl0cyBpbml0aWFsaXplci4i
LCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUo
QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1l
ZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFs
dWUoKSkKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24s
IG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJl
c3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12
b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Np
b24sIEFTVDo6TmFtZWRUeXBlJiB0eXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIGFubm90YXRpb24p
Ci17Ci0gICAgYXV0byB1bm5hbWVkVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh0eXBl
LmNvZGVMb2NhdGlvbigpLCB0eXBlKTsKLSAgICBWaXNpdG9yOjp2aXNpdCh1bm5hbWVkVHlwZSk7
Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGV4cHJlc3Npb24sIFdURk1vdmUodW5uYW1lZFR5cGUp
LCBhbm5vdGF0aW9uKTsKLX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVz
c2lvbiYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFT
VDo6UmlnaHRWYWx1ZSgpKQotewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlKSkpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5
cGVBbm5vdGF0aW9uKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlR5
cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCi17Ci0gICAg
cmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtl
VW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9KSk7Ci0gICAg
ZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdu
bWVudEV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZv
KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0SW5mbykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byByaWdodEluZm8gPSByZWN1cnNlQW5kR2V0SW5m
byhhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLSAgICBpZiAoIXJpZ2h0SW5mbykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byByZXN1bHRUeXBlID0gbWF0Y2hBbmRDb21taXQobGVm
dEluZm8tPnJlc29sdmluZ1R5cGUsIHJpZ2h0SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYg
KCFyZXN1bHRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJMZWZ0IGhhbmQgc2lkZSBv
ZiBhc3NpZ25tZW50IGRvZXMgbm90IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSByaWdodCBoYW5kIHNp
ZGUuIiwgYXNzaWdubWVudEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShhc3NpZ25tZW50RXhwcmVzc2lv
biwgKnJlc3VsdFR5cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRv
IGxlZnRWYWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uLmxlZnRWYWx1ZSgpLCB0cnVlKTsKLSAgICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAg
IHJldHVybjsKLQotICAgIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFsdWUoKS5zZXRU
eXBlKCpsZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlLmdldFVubmFtZWRUeXBlKCkpOwotCi0g
ICAgYXV0byBuZXdWYWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICBpZiAoIW5ld1ZhbHVlSW5mbykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRj
aGVkVHlwZSA9IG1hdGNoQW5kQ29tbWl0KGxlZnRWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG5l
d1ZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSkpCi0gICAgICAgIHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24ubmV3VmFsdWUoKS5zZXRUeXBlKCptYXRjaGVkVHlwZSk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJCYXNlIG9mIHRoZSByZWFkLW1vZGlmeS13cml0ZSBleHByZXNz
aW9uIGRvZXMgbm90IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSBuZXcgdmFsdWUuIiwgcmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgYXV0byByZXN1bHRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotICAgIGlmICghcmVzdWx0SW5mbykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yd2FyZFR5cGUocmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiwgcmVzdWx0SW5mby0+cmVzb2x2aW5nVHlwZSwgQVNUOjpSaWdodFZhbHVlKCkpOwotfQot
Ci1zdGF0aWMgQVNUOjpVbm5hbWVkVHlwZSogZ2V0VW5uYW1lZFR5cGUoUmVzb2x2aW5nVHlwZSYg
cmVzb2x2aW5nVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdHlwZSkgLT4gQVNUOjpVbm5hbWVk
VHlwZSogewotICAgICAgICByZXR1cm4gdHlwZS5wdHIoKTsKLSAgICB9LCBbXShSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+JiB0eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGUgdHlwZSBpc24ndCBjb21taXR0ZWQsIHNob3VsZCB3ZSBqdXN0
IGNvbW1pdCgpIGl0IG5vdz8KLSAgICAgICAgcmV0dXJuIHR5cGUtPnJlc29sdmFibGVUeXBlKCku
bWF5YmVSZXNvbHZlZFR5cGUoKTsKLSAgICB9KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQo
QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAg
ICBhdXRvIHBvaW50ZXJJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oZGVyZWZlcmVuY2VFeHByZXNz
aW9uLnBvaW50ZXIoKSk7Ci0gICAgaWYgKCFwb2ludGVySW5mbykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byogdW5uYW1lZFR5cGUgPSBnZXRVbm5hbWVkVHlwZShwb2ludGVySW5mby0+cmVz
b2x2aW5nVHlwZSk7Ci0KLSAgICBhdXRvKiBwb2ludGVyVHlwZSA9IChbJl0oQVNUOjpVbm5hbWVk
VHlwZSogdW5uYW1lZFR5cGUpIC0+IEFTVDo6UG9pbnRlclR5cGUqIHsKLSAgICAgICAgaWYgKCF1
bm5hbWVkVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB1
bmlmeU5vZGUgPSB1bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNU
OjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICBhdXRvJiB1bm5hbWVkVW5pZnlUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlw
ZT4odW5pZnlOb2RlKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVk
VW5pZnlUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRVbmlmeVR5cGUpOwotICAgIH0pKHVu
bmFtZWRUeXBlKTsKLSAgICBpZiAoIXBvaW50ZXJUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJDYW5ub3QgZGVyZWZlcmVuY2UgYSBub24tcG9pbnRlciB0eXBlLiIsIGRlcmVmZXJlbmNl
RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXNzaWduQ29uY3JldGVUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbiwgcG9pbnRlclR5cGUt
PmVsZW1lbnRUeXBlKCksIEFTVDo6TGVmdFZhbHVlIHsgcG9pbnRlclR5cGUtPmFkZHJlc3NTcGFj
ZSgpIH0pOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNz
aW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8obWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLCB0cnVl
KTsKLSAgICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8g
bGVmdEFkZHJlc3NTcGFjZSA9IGxlZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRy
ZXNzU3BhY2UoKTsKLSAgICBpZiAoIWxlZnRBZGRyZXNzU3BhY2UpIHsKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCB0YWtlIHRoZSBhZGRyZXNzIG9mIGEgbm9uIGx2YWx1ZS4iLCBtYWtl
UG9pbnRlckV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGF1dG8qIGxlZnRWYWx1ZVR5cGUgPSBnZXRVbm5hbWVkVHlwZShsZWZ0VmFsdWVJ
bmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWxlZnRWYWx1ZVR5cGUpIHsKLSAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB0YWtlIHRoZSBhZGRyZXNzIG9mIGEgdmFsdWUgd2l0aG91
dCBhIHR5cGUuIiwgbWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZVBvaW50ZXJF
eHByZXNzaW9uLCBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobWFrZVBvaW50ZXJFeHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpLCAqbGVmdEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0K
LQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24m
IG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZv
ID0gcmVjdXJzZUFuZEdldEluZm8obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFs
dWUoKSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvKiBsZWZ0VmFsdWVUeXBlID0gZ2V0VW5uYW1lZFR5cGUobGVmdFZhbHVlSW5mby0+cmVzb2x2
aW5nVHlwZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJDYW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2Ugb2YgYSB2YWx1ZSB3aXRob3V0IGEg
dHlwZS4iLCBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB1bmlmeU5vZGUgPSBsZWZ0VmFsdWVU
eXBlLT51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2Rl
KSkgewotICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5
cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVk
VHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQ
b2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBl
KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpj
cmVhdGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgcG9pbnRl
clR5cGUuYWRkcmVzc1NwYWNlKCksIHBvaW50ZXJUeXBlLmVsZW1lbnRUeXBlKCkpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFj
ZSA9IGxlZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAg
ICAgICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJv
cigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVmZXJlbmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4i
LCBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+
KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8
QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYzIFNhdmUgdGhlIG51bWJl
ciBvZiBlbGVtZW50cy4KLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksICpsZWZ0QWRkcmVzc1NwYWNl
LCBhcnJheVR5cGUudHlwZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBhdXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5u
b3RhdGlvbi5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2Ug
ZnJvbSBhIG5vbi1sZWZ0LXZhbHVlLiIsIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNy
ZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCks
ICpsZWZ0QWRkcmVzc1NwYWNlLCAqbGVmdFZhbHVlVHlwZSkpOwotfQotCi12b2lkIENoZWNrZXI6
OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGJh
c2VJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgIGlm
ICghYmFzZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gYmFzZVVubmFtZWRUeXBl
ID0gY29tbWl0KGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWJhc2VVbm5hbWVk
VHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdGhlIHR5cGUg
b2YgdGhlIGJhc2Ugb2YgYSBkb3QgZXhwcmVzc2lvbi4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFz
ZVVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uPih0eXBlKSkgewotICAgICAgICBhdXRvJiBzdHJ1Y3R1cmUgPSBkb3duY2FzdDxBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpOyAgICAKLSAgICAgICAgaWYgKEFTVDo6U3RydWN0
dXJlRWxlbWVudCogZWxlbWVudCA9IHN0cnVjdHVyZS5maW5kKGRvdEV4cHJlc3Npb24uZmllbGRO
YW1lKCkpKQotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGVs
ZW1lbnQtPnR5cGUoKSwgYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcihtYWtlU3RyaW5nKCJGaWVsZCBuYW1lOiAnIiwg
ZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSwgIicgZG9lcyBub3QgZXhpc3Qgb24gc3RydWN0dXJl
OiAiLCBzdHJ1Y3R1cmUubmFtZSgpKSwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkb3RFeHByZXNz
aW9uLmZpZWxkTmFtZSgpID09ICJsZW5ndGgiKSB7Ci0gICAgICAgIGlmIChpczxBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZT4odHlwZSkKLSAgICAgICAgICAgIHx8IGlzPEFTVDo6QXJyYXlUeXBlPih0
eXBlKQotICAgICAgICAgICAgfHwgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBl
KSAmJiBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3Io
KSkpIHsKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCB3cmFw
cGVkVWludFR5cGUoKSwgQVNUOjpSaWdodFZhbHVlKCkpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIi5sZW5ndGggZmllbGQgaXMgb25seSBhdmFpbGFibGUg
b24gYXJyYXlzLCBhcnJheSByZWZlcmVuY2VzLCBvciB2ZWN0b3JzLiIsIGRvdEV4cHJlc3Npb24u
Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSB7Ci0gICAgICAg
IGlmICghbV9wcm9ncmFtLmlzVmFsaWRWZWN0b3JQcm9wZXJ0eShkb3RFeHByZXNzaW9uLmZpZWxk
TmFtZSgpKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiJy4iLCBk
b3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpLCAiJyBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBvbiBh
IHZlY3Rvci4iKSwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJ
bmZvLT50eXBlQW5ub3RhdGlvbi5pc1JpZ2h0VmFsdWUoKSA/IEFTVDo6VHlwZUFubm90YXRpb24g
eyBBU1Q6OlJpZ2h0VmFsdWUoKSB9IDogQVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJh
Y3RMZWZ0VmFsdWUoKSB9OwotCi0gICAgICAgIHNpemVfdCBmaWVsZExlbmd0aCA9IGRvdEV4cHJl
c3Npb24uZmllbGROYW1lKCkubGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8mIGlubmVyVHlwZSA9IGRv
d25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS52ZWN0b3JUeXBlQXJndW1l
bnQoKTsKLSAgICAgICAgaWYgKGZpZWxkTGVuZ3RoID09IDEpCi0gICAgICAgICAgICBhc3NpZ25D
b25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgaW5uZXJUeXBlLCB0eXBlQW5ub3RhdGlvbik7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJp
bnNpY3MuYm9vbFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRv
dEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5n
dGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaGVzKGlubmVy
VHlwZSwgbV9pbnRyaW5zaWNzLmludFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29u
Y3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5pbnRWZWN0b3JUeXBlRm9yU2l6
ZShmaWVsZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1h
dGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MudWludFR5cGUoKSkpCi0gICAgICAgICAgICAg
ICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIG1faW50cmluc2ljcy51aW50VmVj
dG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKSkK
LSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRy
aW5zaWNzLmZsb2F0VmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlv
bik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzZXRFcnJvcihFcnJv
cigiQmFzZSB2YWx1ZSBvZiBkb3QgZXhwcmVzc2lvbiBtdXN0IGJlIGEgc3RydWN0dXJlLCBhcnJh
eSwgb3IgdmVjdG9yLiIsIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQot
ewotICAgIHsKLSAgICAgICAgYXV0byBpbmRleEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhpbmRl
eEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBpZiAoIWluZGV4SW5mbykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KGluZGV4
SW5mby0+cmVzb2x2aW5nVHlwZSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkpKSB7Ci0gICAgICAg
ICAgICBzZXRFcnJvcihFcnJvcigiSW5kZXggaW4gYW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJl
IGEgdWludC4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gYmFzZUluZm8gPSByZWN1cnNl
QW5kR2V0SW5mbyhpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICBpZiAoIWJhc2VJbmZvKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJhc2VVbm5hbWVkVHlwZSA9IGNvbW1pdChiYXNl
SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFiYXNlVW5uYW1lZFR5cGUpIHsKLSAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9m
IGFuIGluZGV4IGV4cHJlc3Npb24uIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiB0eXBlID0gYmFzZVVubmFtZWRU
eXBlLT51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5
cGUpKSB7Ci0gICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKTsKLSAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGlu
ZGV4RXhwcmVzc2lvbiwgYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCksIEFTVDo6TGVm
dFZhbHVlIHsgYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpIH0pOwotICAgIH0gZWxz
ZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKQotICAgICAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoaW5kZXhFeHByZXNzaW9uLCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkudHlwZSgp
LCBiYXNlSW5mby0+dHlwZUFubm90YXRpb24pOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlKSkgewotICAgICAgICBhdXRvJiBuYXRpdmVUeXBlID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpOwotICAgICAgICBhdXRvIHR5
cGVBbm5vdGF0aW9uID0gYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpID8g
QVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6UmlnaHRWYWx1ZSgpIH0gOiBBU1Q6OlR5cGVBbm5v
dGF0aW9uIHsgQVNUOjpBYnN0cmFjdExlZnRWYWx1ZSgpIH07Ci0gICAgICAgIGlmIChuYXRpdmVU
eXBlLmlzVmVjdG9yKCkpCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHBy
ZXNzaW9uLCBuYXRpdmVUeXBlLnZlY3RvclR5cGVBcmd1bWVudCgpLCB0eXBlQW5ub3RhdGlvbik7
Ci0gICAgICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUuaXNNYXRyaXgoKSkgewotICAgICAgICAgICAg
YXV0byYgaW5uZXJUeXBlID0gbmF0aXZlVHlwZS5tYXRyaXhUeXBlQXJndW1lbnQoKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIG51bVJvd3MgPSBuYXRpdmVUeXBlLm51bWJlck9mTWF0cml4Um93cygp
OwotICAgICAgICAgICAgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5
cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lv
biwgbV9pbnRyaW5zaWNzLmJvb2xWZWN0b3JUeXBlRm9yU2l6ZShudW1Sb3dzKSwgdHlwZUFubm90
YXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmlu
c2ljcy5mbG9hdFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGlu
ZGV4RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLmZsb2F0VmVjdG9yVHlwZUZvclNpemUobnVtUm93
cyksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGV4cHJlc3Npb24gb24gdW5rbm93biB0eXBlLiIsIGlu
ZGV4RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGV4cHJl
c3Npb24gb24gYW4gdW5rbm93biBiYXNlIHR5cGUuIEJhc2UgdHlwZSBtdXN0IGJlIGFuIGFycmF5
LCBhcnJheSByZWZlcmVuY2UsIHZlY3Rvciwgb3IgbWF0cml4LiIsIGluZGV4RXhwcmVzc2lvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewot
ICAgIEFTU0VSVCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICBBU1NFUlQodmFy
aWFibGVSZWZlcmVuY2UudmFyaWFibGUoKS0+dHlwZSgpKTsKLSAgICAKLSAgICBhc3NpZ25Db25j
cmV0ZVR5cGUodmFyaWFibGVSZWZlcmVuY2UsICp2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgp
LT50eXBlKCksIEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsK
LX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQot
ewotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkgewotICAgICAgICBhdXRvIHZhbHVl
SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAg
ICAgIGlmICghdmFsdWVJbmZvKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIW1h
dGNoQW5kQ29tbWl0KHZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSwgbV9jdXJyZW50RnVuY3Rpb24t
PnR5cGUoKSkpCi0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiVHlwZSBvZiB0aGUgcmV0dXJu
IHZhbHVlIG11c3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4iLCByZXR1
cm5TdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghbWF0Y2hlcyhtX2N1cnJlbnRGdW5jdGlvbi0+dHlwZSgpLCBtX2ludHJpbnNpY3Mu
dm9pZFR5cGUoKSkpCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmV0dXJuIGEgdmFs
dWUgZnJvbSBhIHZvaWQgZnVuY3Rpb24uIiwgcmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigp
KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpCi17Ci0gICAg
Ly8gRm9sbG93aW5nIHBvaW50ZXIgdHlwZXMgY2FuIGNhdXNlIGluZmluaXRlIGxvb3BzIGJlY2F1
c2Ugb2YgZGF0YSBzdHJ1Y3R1cmVzCi0gICAgLy8gbGlrZSBsaW5rZWQgbGlzdHMuCi0gICAgLy8g
RklYTUU6IE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBlbXB0eQotfQotCi12b2lk
IENoZWNrZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikKLXsKLSAgICAvLyBGb2xs
b3dpbmcgYXJyYXkgcmVmZXJlbmNlIHR5cGVzIGNhbiBjYXVzZSBpbmZpbml0ZSBsb29wcyBiZWNh
dXNlIG9mIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIGxpa2UgbGlua2VkIGxpc3RzLgotICAgIC8v
IEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZW1wdHkKLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsK
LSAgICBhc3NpZ25UeXBlKGludGVnZXJMaXRlcmFsLCBhZG9wdFJlZigqbmV3IFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlKGludGVnZXJMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpCi17Ci0gICAgYXNzaWduVHlwZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsLCBhZG9wdFJlZigq
bmV3IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgp
KSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExp
dGVyYWwpCi17Ci0gICAgYXNzaWduVHlwZShmbG9hdExpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UoZmxvYXRMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBD
aGVja2VyOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkKLXsKLSAg
ICBhc3NpZ25Db25jcmV0ZVR5cGUoYm9vbGVhbkxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6
d3JhcChib29sZWFuTGl0ZXJhbC5jb2RlTG9jYXRpb24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBl
KCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIEFTU0VSVChlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgIGF1dG8mIGVudW1l
cmF0aW9uRGVmaW5pdGlvbiA9ICplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25E
ZWZpbml0aW9uKCk7Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5j
b2RlTG9jYXRpb24oKSwgZW51bWVyYXRpb25EZWZpbml0aW9uKSk7Ci19Ci0KLWJvb2wgQ2hlY2tl
cjo6aXNCb29sVHlwZShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKQotewotICAgIHJldHVy
biByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYgbGVmdCkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKGxlZnQsIG1f
aW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlPiYgbGVmdCkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihtYXRjaEFuZENvbW1pdChtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSwgbGVmdC0+cmVzb2x2
YWJsZVR5cGUoKSkpOwotICAgIH0pKTsKLX0KLQotYm9vbCBDaGVja2VyOjpyZWN1cnNlQW5kUmVx
dWlyZUJvb2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGV4
cHJlc3Npb25JbmZvID0gcmVjdXJzZUFuZEdldEluZm8oZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFl
eHByZXNzaW9uSW5mbykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNCb29sVHlw
ZShleHByZXNzaW9uSW5mby0+cmVzb2x2aW5nVHlwZSkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkV4cGVjdGVkIGJvb2wgdHlwZSBmcm9tIGV4cHJlc3Npb24uIiwgZXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24m
IGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29s
VHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpKQotICAgICAgICByZXR1cm47Ci0g
ICAgYXNzaWduQ29uY3JldGVUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAobG9naWNhbE5vdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIG1faW50cmlu
c2ljcy5ib29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVx
dWlyZUJvb2xUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSkpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUobG9naWNhbEV4cHJlc3Npb24ucmln
aHQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobG9naWNhbEV4
cHJlc3Npb24sIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2dpY2FsRXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsKLX0KLQotdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBpZiAoIXJlY3Vy
c2VBbmRSZXF1aXJlQm9vbFR5cGUoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSkpCi0gICAgICAg
IHJldHVybjsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAg
ICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6
OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29s
VHlwZSh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlz
aXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShk
b1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6
OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5p
dGlhbGl6YXRpb24oKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkgewotICAgICAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1
aXJlQm9vbFR5cGUoKmZvckxvb3AuY29uZGl0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9y
TG9vcC5ib2R5KCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVt
ZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgYXV0byogdmFsdWVUeXBlID0gKFsmXSgpIC0+
IEFTVDo6TmFtZWRUeXBlKiB7Ci0gICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8oc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwotICAgICAgICBpZiAoIXZhbHVlSW5mbykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiB2YWx1ZVR5cGUgPSBn
ZXRVbm5hbWVkVHlwZSh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgICAgICBpZiAoIXZh
bHVlVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvJiB2YWx1
ZVVuaWZ5Tm9kZSA9IHZhbHVlVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNU
OjpOYW1lZFR5cGU+KHZhbHVlVW5pZnlOb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBhdXRvJiB2YWx1ZU5hbWVkVW5pZnlOb2RlID0gZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHZhbHVlVW5pZnlOb2RlKTsKLSAgICAgICAgaWYgKCEoaXM8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KHZhbHVlTmFtZWRVbmlmeU5vZGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKS5pc0ludCgpKQotICAgICAgICAg
ICAgJiYgIWlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2Rl
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gJnZhbHVlTmFt
ZWRVbmlmeU5vZGU7Ci0gICAgfSkoKTsKLSAgICBpZiAoIXZhbHVlVHlwZSkgewotICAgICAgICBz
ZXRFcnJvcihFcnJvcigiSW52YWxpZCB0eXBlIGZvciB0aGUgZXhwcmVzc2lvbiBjb25kaXRpb24g
b2YgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhc0RlZmF1bHQgPSBmYWxz
ZTsKLSAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2Fz
ZXMoKSkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsK
LSAgICAgICAgaWYgKCFzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGhhc0RlZmF1
bHQgPSB0cnVlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0
byBzdWNjZXNzID0gc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwg
aW50ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkZsb2F0
TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCBmbG9hdExpdGVyYWwudHlw
ZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJikgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygqdmFsdWVUeXBlLCBtX2ludHJpbnNpY3MuYm9vbFR5
cGUoKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNj
ZXNzKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiSW52YWxpZCB0eXBlIGZvciBzd2l0
Y2ggY2FzZS4iLCBzd2l0Y2hDYXNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN3aXRj
aFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGZp
cnN0Q2FzZSA9IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpW2ldOwotICAgICAgICBmb3Ig
KHNpemVfdCBqID0gaSArIDE7IGogPCBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXpl
KCk7ICsraikgewotICAgICAgICAgICAgYXV0byYgc2Vjb25kQ2FzZSA9IHN3aXRjaFN0YXRlbWVu
dC5zd2l0Y2hDYXNlcygpW2pdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8Ym9vbD4oZmlyc3RDYXNlLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGJvb2w+KHNlY29u
ZENhc2UudmFsdWUoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
IGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4oZmlyc3RDYXNlLnZhbHVlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWZpbmUgbXVsdGlwbGUgZGVmYXVsdCBjYXNl
cyBpbiBzd2l0Y2ggc3RhdGVtZW50LiIsIHNlY29uZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8g
c3VjY2VzcyA9IGZpcnN0Q2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBmaXJzdEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9v
bCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVl
KCkgIT0gc2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBb
Jl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRl
cmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGZpcnN0SW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAg
ICB9LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmIGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+
IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4o
Zmlyc3RVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0
X3Q+KHNlY29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIH0sIFsm
XShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1
ZSgpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAg
fSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2Uu
dmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVt
ZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNlY29uZEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVt
YmVyKCkgIT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVy
KCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9
LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9KSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlZmluZSBkdXBsaWNhdGUgY2FzZSBzdGF0ZW1lbnRz
IGluIGEgc3dpdGNoLiIsIHNlY29uZENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
IWhhc0RlZmF1bHQpIHsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
PigqdmFsdWVUeXBlKSkgewotICAgICAgICAgICAgSGFzaFNldDxpbnQ2NF90PiB2YWx1ZXM7Ci0g
ICAgICAgICAgICBib29sIHplcm9WYWx1ZUV4aXN0czsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
c3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byB2YWx1ZSA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3Qg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxl
Y3RlZFR5cGUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5
cGUoKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gaW50NjRfdCB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgICAgICAgICAgICAgemVyb1ZhbHVlRXhpc3RzID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hZGQodmFsdWUpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAg
IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdmFsdWVUeXBlKS5pdGVyYXRl
QWxsVmFsdWVzKFsmXShpbnQ2NF90IHZhbHVlKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghemVyb1ZhbHVlRXhpc3RzKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmICghdmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJTd2l0Y2ggY2FzZXMgbXVzdCBiZSBleGhhdXN0aXZlIG9yIHlvdSBtdXN0IGRlZmlu
ZSBhIGRlZmF1bHQgY2FzZS4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBIYXNoU2V0PEFTVDo6RW51bWVyYXRpb25NZW1iZXIqPiB2YWx1ZXM7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2Fz
ZXMoKSkgewotICAgICAgICAgICAgICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgICAgICB2
YWx1ZXMuYWRkKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsK
LSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgewotICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZG93bmNhc3Q8QVNUOjpF
bnVtZXJhdGlvbkRlZmluaXRpb24+KCp2YWx1ZVR5cGUpLmVudW1lcmF0aW9uTWVtYmVycygpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXMuY29udGFpbnMoJmVudW1lcmF0aW9uTWVtYmVy
LmdldCgpKSkgewotICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dpdGNoIGNh
c2VzIG92ZXIgYW4gZW51bSBtdXN0IGJlIGV4aGF1c3RpdmUgb3IgeW91IG11c3QgZGVmaW5lIGEg
ZGVmYXVsdCBjYXNlLiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q29tbWFFeHBy
ZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgQVNTRVJUKGNvbW1hRXhwcmVzc2lvbi5s
aXN0KCkuc2l6ZSgpID4gMCk7Ci0gICAgVmlzaXRvcjo6dmlzaXQoY29tbWFFeHByZXNzaW9uKTsK
LSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbGFzdEluZm8g
PSBnZXRJbmZvKGNvbW1hRXhwcmVzc2lvbi5saXN0KCkubGFzdCgpKTsKLSAgICBmb3J3YXJkVHlw
ZShjb21tYUV4cHJlc3Npb24sIGxhc3RJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLX0KLQotdm9pZCBD
aGVja2VyOjp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikK
LXsKLSAgICBhdXRvIHByZWRpY2F0ZUluZm8gPSByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKHRl
cm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBpZiAoIXByZWRpY2F0ZUluZm8pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gYm9keUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyh0
ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBhdXRvIGVsc2VJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8odGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0g
ICAgCi0gICAgYXV0byByZXN1bHRUeXBlID0gbWF0Y2hBbmRDb21taXQoYm9keUluZm8tPnJlc29s
dmluZ1R5cGUsIGVsc2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIXJlc3VsdFR5cGUp
IHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoImxocyBhbmQgcmhzIG9mIGEgdGVybmFyeSBleHBy
ZXNzaW9uIG11c3QgbWF0Y2guIiwgdGVybmFyeUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZSh0ZXJuYXJ5
RXhwcmVzc2lvbiwgKnJlc3VsdFR5cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiB0eXBlczsKLSAgICB0eXBlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSk7Ci0gICAgZm9y
IChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAg
IGF1dG8gYXJndW1lbnRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oYXJndW1lbnQpOwotICAgICAg
ICBpZiAoIWFyZ3VtZW50SW5mbykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMu
dW5jaGVja2VkQXBwZW5kKGFyZ3VtZW50SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgfQotICAg
IC8vIERvbid0IHJlY3Vyc2Ugb24gdGhlIGNhc3RSZXR1cm5UeXBlLCBiZWNhdXNlIGl0J3MgZ3Vh
cmFudGVlZCB0byBiZSBhIE5hbWVkVHlwZSwgd2hpY2ggd2lsbCBnZXQgdmlzaXRlZCBsYXRlci4K
LSAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJlY3Vyc2UgdG8gdGhlIHNhbWUgbm9kZSB0d2ljZS4K
LQotICAgIGF1dG8qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKHR5cGVzLCBjYWxsRXhwcmVz
c2lvbi5uYW1lKCksIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKTsKLSAgICBpZiAoaGFz
RXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAg
ICBOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKTsKLSAg
ICAgICAgYXV0byBjYXN0VHlwZXMgPSBuYW1lQ29udGV4dC5nZXRUeXBlcyhjYWxsRXhwcmVzc2lv
bi5uYW1lKCksIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgICAgIGlmIChjYXN0VHlwZXMuc2l6
ZSgpID09IDEpIHsKLSAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBlJiBjYXN0VHlwZSA9IGNhc3RU
eXBlc1swXS5nZXQoKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKHR5
cGVzLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwg
JmNhc3RUeXBlKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBjYWxs
RXhwcmVzc2lvbi5zZXRDYXN0RGF0YShjYXN0VHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYmV0dGVyIGVycm9yIG1l
c3NhZ2VzIGZvciB3aHkgd2UgY2FuJ3QgcmVzb2x2ZSB0byBvbmUgb2YgdGhlIG92ZXJyaWRlcy4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEz
MwotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCB0
byBhIGNvbmNyZXRlIGNhbGxlZS4gTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgY29tcGF0aWJsZSB0
eXBlcy4iLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi0+cGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQodHlwZXNbaV0u
Z2V0KCksICpmdW5jdGlvbi0+cGFyYW1ldGVycygpW2ldLT50eXBlKCkpKSB7Ci0gICAgICAgICAg
ICBzZXRFcnJvcihFcnJvcihtYWtlU3RyaW5nKCJJbnZhbGlkIHR5cGUgZm9yIHBhcmFtZXRlciBu
dW1iZXIgIiwgaSArIDEsICIgaW4gZnVuY3Rpb24gY2FsbC4iKSwgY2FsbEV4cHJlc3Npb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGNhbGxFeHByZXNzaW9uLnNldEZ1bmN0aW9uKCpmdW5jdGlvbik7Ci0KLSAgICBhc3NpZ25D
b25jcmV0ZVR5cGUoY2FsbEV4cHJlc3Npb24sIGZ1bmN0aW9uLT50eXBlKCkpOwotfQotCi1FeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gY2hlY2soUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBDaGVja2Vy
IGNoZWNrZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHByb2dyYW0pOwotICAgIGNoZWNrZXIuY2hl
Y2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIGlmIChjaGVja2VyLmhhc0Vycm9yKCkpCi0g
ICAgICAgIHJldHVybiBjaGVja2VyLnJlc3VsdCgpOwotICAgIHJldHVybiBjaGVja2VyLmFzc2ln
blR5cGVzKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY2NjRlM2UxN2E4YzBhMmI3MzA1ZjU4MjQwY2UxZjUyMTc3NGU2
OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dy
YW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2Nh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9j
YXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVmZmZkOGQ4N2E5NTQyMDll
ZjcyOWUyYzcyNTNlZDE5MTVlNGViZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENv
ZGVMb2NhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMTmFtZVNwYWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotc3RydWN0IFRva2VuOwotCi1jbGFzcyBDb2RlTG9jYXRpb24gewotcHVibGljOgot
ICAgIENvZGVMb2NhdGlvbigpCi0gICAgICAgIDogbV9zdGFydE9mZnNldCgweDdGRkZGRkZGKQot
ICAgICAgICAsIG1fZW5kT2Zmc2V0KDB4N0ZGRkZGRkYpCi0gICAgICAgICwgbV9uYW1lU3BhY2Uo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBDb2RlTG9jYXRpb24odW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1f
c3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0
KQotICAgICAgICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW1lU3BhY2Up
KQotICAgIHsKLSAgICB9Ci0KLSAgICBDb2RlTG9jYXRpb24oY29uc3QgVG9rZW4mKTsKLQotICAg
IENvZGVMb2NhdGlvbihjb25zdCBDb2RlTG9jYXRpb24mIGxvY2F0aW9uMSwgY29uc3QgQ29kZUxv
Y2F0aW9uJiBsb2NhdGlvbjIpCi0gICAgICAgIDogbV9zdGFydE9mZnNldChsb2NhdGlvbjEuc3Rh
cnRPZmZzZXQoKSkKLSAgICAgICAgLCBtX2VuZE9mZnNldChsb2NhdGlvbjIuZW5kT2Zmc2V0KCkp
Ci0gICAgICAgICwgbV9uYW1lU3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvY2F0aW9uMS5u
YW1lU3BhY2UoKSkpCi0gICAgewotICAgICAgICBBU1NFUlQobG9jYXRpb24xLm5hbWVTcGFjZSgp
ID09IGxvY2F0aW9uMi5uYW1lU3BhY2UoKSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2VuZE9mZnNldDsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFTVDo6TmFtZVNwYWNlPiht
X25hbWVTcGFjZSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVMb2Nh
dGlvbiYgb3RoZXIpIGNvbnN0IAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhcnRPZmZzZXQg
PT0gb3RoZXIubV9zdGFydE9mZnNldAotICAgICAgICAgICAgJiYgbV9lbmRPZmZzZXQgPT0gb3Ro
ZXIubV9lbmRPZmZzZXQKLSAgICAgICAgICAgICYmIG1fbmFtZVNwYWNlID09IG90aGVyLm1fbmFt
ZVNwYWNlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlTG9jYXRpb24m
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IENvZGVMb2NhdGlvbigp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCA6IDMxOwotICAgIHVu
c2lnbmVkIG1fZW5kT2Zmc2V0IDogMzE7Ci0gICAgdW5zaWduZWQgbV9uYW1lU3BhY2UgOiAyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyOThkNDljODg2YTE2NjVjYjk4MDli
NWViZTMyZTNlMDBmYjFhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVE
aW1lbnNpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSAiV0hM
U0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5z
aW9ucz4gY29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mIGVudHJ5UG9pbnQpCi17Ci0gICAgc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5z
aW9ucz4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5p
dGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGJvb2wgZm91
bmROdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRv
JiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGZ1bmN0aW9uRGVmaW5pdGlvbi0+YXR0cmlidXRlQmxvY2so
KSkgewotICAgICAgICAgICAgYXV0byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvdW5kTnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgZm91bmROdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09ICZlbnRyeVBvaW50KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghY29tcHV0ZURpbWVuc2lvbnMpOwotICAgICAgICAgICAg
ICAgICAgICBjb21wdXRlRGltZW5zaW9ucyA9IHt7IG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS53aWR0aCgpLCBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaGVpZ2h0KCksIG51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZS5kZXB0aCgpIH19OwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0
ZSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAvLyBDYW5u
b3QgZGVjbGFyZSBtdWx0aXBsZSBudW10aHJlYWQgYXR0cmlidXRlcyBvbiBhIHNpbmdsZSBmdW5j
dGlvbi4KLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25zOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZGRmMGE4M2FhNjQyN2UzYjM1NzlkYWM1NTI5OTg3
YjNlNTM3ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9u
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQcmVw
YXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQotCi1jbGFzcyBQ
cm9ncmFtOwotCi1zdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5z
aW9ucyhQcm9ncmFtJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFiNzg2ZGZhZmVjOTgzMTBmMzExNTFiNThhYWVkZWJkMGNhN2Q0OTYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEVycm9yIHsKLXB1YmxpYzoK
LSAgICBFcnJvcihTdHJpbmcmJiBtZXNzYWdlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKQot
ICAgICAgICA6IG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQotICAgICAgICAsIG1fbG9jYXRp
b24oY29kZUxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBFcnJvcihTdHJpbmcmJiBtZXNz
YWdlKQotICAgICAgICA6IG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
dGlvbjsgfQotICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9
Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbWVzc2FnZTsKLSAgICBDb2RlTG9jYXRpb24gbV9s
b2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlv
blN0YWdlQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2M2RlOGRj
OGUwYmJhNDU5NzlhNGI4MTA5MTcxMmIxMzFhZjRhYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25TdGFnZUNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9p
bnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRnVuY3Rpb25TdGFnZUNoZWNrZXIgOiBw
dWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25TdGFnZUNoZWNrZXIoQVNUOjpF
bnRyeVBvaW50VHlwZSBlbnRyeVBvaW50VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2lj
cykKLSAgICAgICAgOiBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQotICAgICAgICAs
IG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2
b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgaWYgKCgmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJp
bnNpY3MuZGR4KCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNz
LmRkeSgpKSAmJiBtX2VudHJ5UG9pbnRUeXBlICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdt
ZW50KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSBkZHggb3IgZGR5
IGluIGEgbm9uLWZyYWdtZW50IHNoYWRlci4iLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoJmNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmFsbE1lbW9yeUJhcnJpZXIoKSB8
fCAmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuZGV2aWNlTWVtb3J5
QmFycmllcigpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5n
cm91cE1lbW9yeUJhcnJpZXIoKSkKLSAgICAgICAgICAgICYmIG1fZW50cnlQb2ludFR5cGUgIT0g
QVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCB1c2UgbWVtb3J5IGJhcnJpZXIgaW4gYSBub24tY29tcHV0ZSBzaGFkZXIuIiwg
Y2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigp
KTsKLSAgICB9Ci0KLSAgICBBU1Q6OkVudHJ5UG9pbnRUeXBlIG1fZW50cnlQb2ludFR5cGU7Ci0g
ICAgY29uc3QgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwg
RXJyb3I+IGNoZWNrRnVuY3Rpb25TdGFnZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBmb3Ig
KGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygp
KSB7Ci0gICAgICAgIGlmICghZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlwZSgpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEZ1bmN0aW9uU3RhZ2VDaGVja2VyIGZ1bmN0
aW9uU3RhZ2VDaGVja2VyKCpmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCksIHBy
b2dyYW0uaW50cmluc2ljcygpKTsKLSAgICAgICAgZnVuY3Rpb25TdGFnZUNoZWNrZXIuVmlzaXRv
cjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uU3RhZ2VD
aGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZnVu
Y3Rpb25TdGFnZUNoZWNrZXIucmVzdWx0KCkuZXJyb3IoKSk7Ci0gICAgfQotICAgIHJldHVybiB7
IH07Ci19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlv
blN0YWdlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MTMzZmQ5MmZkZGIxN2Q1NGM4MjNkOThiYmFlMzJlNTE1MTRlMzViLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tGdW5jdGlvblN0YWdl
cyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xH
YXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MDVlODhhNjAxYzgyMTFhNzk1ZjBjMTZlODM5NmYwMjY4NzI2MDY4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRl
ZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExT
TEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmFy
aWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEdhdGhlcmVyIDogcHVi
bGljIFZpc2l0b3IgewotcHVibGljOgotICAgIEdhdGhlcmVyKGNvbnN0IEludHJpbnNpY3MmIGlu
dHJpbnNpY3MsIEFTVDo6U2VtYW50aWMqIHNlbWFudGljID0gbnVsbHB0cikKLSAgICAgICAgOiBt
X2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX2N1cnJlbnRTZW1hbnRpYyhzZW1h
bnRpYykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+R2F0aGVyZXIoKSA9IGRlZmF1bHQ7
Ci0KLSAgICB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudFNlbWFudGljID0g
bnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbiA9IHsgfTsKLSAgICB9
Ci0KLSAgICBWZWN0b3I8RW50cnlQb2ludEl0ZW0+IHRha2VFbnRyeVBvaW50SXRlbXMoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobV9lbnRyeVBvaW50SXRlbXMpOwotICAgIH0KLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZh
cmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0obV90eXBlUmVmZXJlbmNl
cy5sYXN0KCkuZ2V0KCksICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFy
Z3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBpZiAobWF0Y2hlcyhuYXRpdmVUeXBlRGVjbGFyYXRpb24s
IG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IlVuZXhwZWN0ZWQgdm9pZCB0eXBlIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVu
dFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShtX3R5cGVSZWZl
cmVuY2VzLmxhc3QoKS5nZXQoKSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVm
aW5pdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhwZWN0ZWQgc2VtYW50aWMgZm9yIHN0cnVjdCBlbnRy
eXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxl
bWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkgewotICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgICAgICAgICBt
X2N1cnJlbnRTZW1hbnRpYyA9IHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKTsKLSAgICAgICAg
ICAgIG1fcGF0aC5hcHBlbmQoc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgbV9wYXRo
LnRha2VMYXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlw
ZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi0gICAgewotICAgICAgICBtX3R5cGVS
ZWZlcmVuY2VzLmFwcGVuZCh0eXBlUmVmZXJlbmNlKTsKLSAgICAgICAgYXV0byBkZXB0aCA9IG1f
dHlwZVJlZmVyZW5jZXMuc2l6ZSgpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZGVwdGgsIG1f
dHlwZVJlZmVyZW5jZXMuc2l6ZSgpID09IGRlcHRoKTsKLSAgICAgICAgbV90eXBlUmVmZXJlbmNl
cy5yZW1vdmVMYXN0KCk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBl
JiBwb2ludGVyVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsK
LSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlw
b2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVu
dHJ5UG9pbnRJdGVtKHBvaW50ZXJUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVm
ZXJlbmNlVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2lu
dCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5
UG9pbnRJdGVtKGFycmF5UmVmZXJlbmNlVHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi0g
ICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwg
bV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShhcnJh
eVR5cGUsICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAg
ewotICAgICAgICBBU1NFUlQoIW1fY3VycmVudFNlbWFudGljKTsKLSAgICAgICAgbV9jdXJyZW50
VmFyaWFibGVMb2NhdGlvbiA9IHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCk7Ci0g
ICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgICAgICBt
X2N1cnJlbnRTZW1hbnRpYyA9IHZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKTsKLSAgICAg
ICAgQVNTRVJUKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgbV9wYXRoLmFw
cGVuZCh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBtX3BhdGgudGFrZUxh
c3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9wYXRoOwotICAg
IGNvbnN0IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLSAgICBBU1Q6OlNlbWFudGljKiBtX2N1
cnJlbnRTZW1hbnRpYyB7IG51bGxwdHIgfTsKLSAgICBDb2RlTG9jYXRpb24gbV9jdXJyZW50VmFy
aWFibGVMb2NhdGlvbjsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PiBtX3R5cGVSZWZlcmVuY2VzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4gbV9lbnRyeVBvaW50SXRlbXM7Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRlbXMsIEVy
cm9yPiBnYXRoZXJFbnRyeVBvaW50SXRlbXMoY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcywg
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBBU1NF
UlQoZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpOwotICAgIEdhdGhlcmVyIGlu
cHV0R2F0aGVyZXIoaW50cmluc2ljcyk7Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIucmVz
ZXQoKTsKLSAgICAgICAgaW5wdXRHYXRoZXJlci5jaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVy
KTsKLSAgICAgICAgaWYgKGlucHV0R2F0aGVyZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChpbnB1dEdhdGhlcmVyLnJlc3VsdCgpLmVycm9yKCkpOwotICAg
IH0KLSAgICBHYXRoZXJlciBvdXRwdXRHYXRoZXJlcihpbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmlu
aXRpb24uc2VtYW50aWMoKSk7Ci0gICAgaWYgKCpmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2lu
dFR5cGUoKSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlKQotICAgICAgICBvdXRwdXRH
YXRoZXJlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0g
ICAgaWYgKG91dHB1dEdhdGhlcmVyLmhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChvdXRwdXRHYXRoZXJlci5yZXN1bHQoKS5lcnJvcigpKTsKLQotICAgIHJldHVybiB7
eyBpbnB1dEdhdGhlcmVyLnRha2VFbnRyeVBvaW50SXRlbXMoKSwgb3V0cHV0R2F0aGVyZXIudGFr
ZUVudHJ5UG9pbnRJdGVtcygpIH19OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhl
ckVudHJ5UG9pbnRJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2I0YjhkOWNlNGM3YzM0NzE5NTI0NDFkMmI5MzhhYTRmZjI3Mjc3My4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldI
TFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLQotfQot
Ci1jbGFzcyBJbnRyaW5zaWNzOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLXN0cnVjdCBFbnRyeVBv
aW50SXRlbSB7Ci0gICAgRW50cnlQb2ludEl0ZW0oQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUsIEFTVDo6U2VtYW50aWMmIHNlbWFudGljLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLSAgICAg
ICAgOiB1bm5hbWVkVHlwZSgmdW5uYW1lZFR5cGUpCi0gICAgICAgICwgc2VtYW50aWMoJnNlbWFu
dGljKQotICAgICAgICAsIHBhdGgocGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5h
bWVkVHlwZSogdW5uYW1lZFR5cGU7Ci0gICAgQVNUOjpTZW1hbnRpYyogc2VtYW50aWM7Ci0gICAg
VmVjdG9yPFN0cmluZz4gcGF0aDsKLX07Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRlbXMgewotICAg
IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gaW5wdXRzOwotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4gb3V0cHV0czsKLX07Ci0KLUV4cGVjdGVkPEVudHJ5UG9pbnRJdGVtcywgRXJyb3I+IGdhdGhl
ckVudHJ5UG9pbnRJdGVtcyhjb25zdCBJbnRyaW5zaWNzJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mKTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZjcwMTE4M2Q1MjJkNWMxZmQ1MDVj
NjQ4MThkZTcxMTgxZDZkMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xIaWdoWm9tYmllRmluZGVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgot
I2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIEhpZ2hab21iaWVGaW5kZXIgOiBwdWJsaWMgVmlzaXRvciB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24m
IHJlYWRNb2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKS5tYXlCZUVm
ZmVjdGZ1bCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYg
ZG90RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFk
b3RFeHByZXNzaW9uLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW5kZXhFeHByZXNzaW9uLmJhc2UoKS5tYXlC
ZUVmZmVjdGZ1bCgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVzc2lvbi5p
bmRleEV4cHJlc3Npb24oKS5tYXlCZUVmZmVjdGZ1bCgpKTsKLSAgICB9Ci19OwotCi12b2lkIGZp
bmRIaWdoWm9tYmllcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9n
cmFtKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgSGlnaFpvbWJpZUZpbmRlciBmaW5kZXI7
Ci0gICAgZmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotI2VuZGlmCi19Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwM2IyMWIxMDBkMDE3ZjMxZjFhMDNj
YzhkMDUwMTk0NDEyY2FjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21i
aWVGaW5kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGZp
bmRIaWdoWm9tYmllcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRkZjM4ZTZkNTQ1NWNmZjVkODY3ZDRkY2UxNzkyNmRmNmY3YTgzZjEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
SW5mZXJUeXBlcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgot
I2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRl
clR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgQVNUOjpU
eXBlJiB1bmlmeVRoaXMsIGNvbnN0IEFTVDo6VHlwZSYgdW5pZnlPdGhlcikKLXsKLSAgICBpZiAo
JnVuaWZ5VGhpcyA9PSAmdW5pZnlPdGhlcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5VGhpcykgJiYgaXM8QVNUOjpOYW1lZFR5cGU+KHVu
aWZ5T3RoZXIpKSB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYXV0byYgbmFtZWRUaGlz
ID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5VGhpcyk7Ci0gICAgICAgIGF1dG8mIG5h
bWVkT3RoZXIgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlPdGhlcik7Ci0gICAgICAg
IEFTU0VSVCghaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUaGlzKSAmJiAhaXM8QVNUOjpU
eXBlRGVmaW5pdGlvbj4obmFtZWRPdGhlcikpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5VGhpcykgJiYgaXM8
QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlPdGhlcikpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFRo
aXMgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeVRoaXMpOwotICAgICAgICBhdXRv
JiB1bm5hbWVkT3RoZXIgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU90aGVyKTsK
LSAgICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUaGlzKSAmJiAh
aXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkT3RoZXIpKTsKLSAgICAgICAgcmV0dXJuIHVu
bmFtZWRUaGlzID09IHVubmFtZWRPdGhlcjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0
IEFTVDo6VW5uYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhj
b25zdCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYgb3Ro
ZXIpCi17Ci0gICAgcmV0dXJuIG1hdGNoZXMobmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51
bmlmeU5vZGUoKSk7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiB1
bm5hbWVkVHlwZSwgY29uc3QgQVNUOjpOYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCBvdGhlci51bmlmeU5vZGUoKSk7Ci19Ci0K
LXN0YXRpYyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpUeXBl
JiB1bmlmeU5vZGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAg
IEFTU0VSVCghcmVzb2x2YWJsZVR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFy
ZXNvbHZhYmxlVHlwZS5jYW5SZXNvbHZlKHVuaWZ5Tm9kZSkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICBh
dXRvJiBuYW1lZFVuaWZ5Tm9kZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUp
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChuYW1lZFVu
aWZ5Tm9kZS5jb2RlTG9jYXRpb24oKSwgbmFtZWRVbmlmeU5vZGUpOwotICAgICAgICByZXNvbHZh
YmxlVHlwZS5yZXNvbHZlKHJlc3VsdC5jb3B5UmVmKCkpOwotICAgICAgICByZXR1cm4geyBXVEZN
b3ZlKHJlc3VsdCkgfTsKLSAgICB9Ci0KLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0
ID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICByZXNvbHZhYmxl
VHlwZS5yZXNvbHZlKHJlc3VsdC5jb3B5UmVmKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlVubmFtZWRUeXBl
JiB1bm5hbWVkVHlwZSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0g
ICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpLCByZXNvbHZh
YmxlVHlwZSk7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChB
U1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxl
VHlwZSkKLXsKLSAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobmFtZWRUeXBlLnVuaWZ5Tm9kZSgp
LCByZXNvbHZhYmxlVHlwZSk7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFu
ZENvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZTEsIEFTVDo6UmVzb2x2
YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlMikKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBl
MS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlMi5tYXli
ZVJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoaXM8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNv
bHZhYmxlVHlwZTEpICYmIGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUy
KSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkZsb2F0
TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAg
cmVzb2x2YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihy
ZXNvbHZhYmxlVHlwZTIpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNh
c3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUo
KTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxl
VHlwZTEpICYmIGlzPEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpKSB7
Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6SW50ZWdlckxp
dGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJl
c29sdmFibGVUeXBlMi5yZXNvbHZlKGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihy
ZXNvbHZhYmxlVHlwZTIpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNh
c3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlw
ZSgpOwotICAgIH0KLSAgICBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihy
ZXNvbHZhYmxlVHlwZTIpKSB7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25j
YXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJl
ZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJy
ZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChB
U1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICBBU1NFUlQoIXJlc29s
dmFibGVUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0
ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKSkgewotICAgICAgICBhdXRvJiBmbG9hdExpdGVyYWxU
eXBlID0gZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0g
ICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRU
eXBlKCkpOwotICAgICAgICByZXR1cm4gJmZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgp
OwotICAgIH0KLSAgICBpZiAoaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVU
eXBlKSkgewotICAgICAgICBhdXRvJiBpbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6
OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpOwotICAgICAgICByZXNvbHZhYmxl
VHlwZS5yZXNvbHZlKGludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAg
ICByZXR1cm4gJmludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAg
IGlmIChpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkp
IHsKLSAgICAgICAgYXV0byYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAg
IHJlc29sdmFibGVUeXBlLnJlc29sdmUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVy
cmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZ1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5w
cmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIGlu
ZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFT
VDo6VHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykKLXsKLSAgICBpZiAoaXM8QVNUOjpUeXBl
RGVmaW5pdGlvbj4ocG9zc2libGVUeXBlKQotICAgICAgICB8fCBpczxBU1Q6OlN0cnVjdHVyZURl
ZmluaXRpb24+KHBvc3NpYmxlVHlwZSkKLSAgICAgICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24+KHBvc3NpYmxlVHlwZSkpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHMu
aXNFbXB0eSgpOwotICAgIH0KLQotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRv
d25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihwb3NzaWJsZVR5cGUpOwotICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSAhPSB0eXBlQXJn
dW1lbnRzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCk7ICsr
aSkgewotICAgICAgICBBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiogdHlwZUFyZ3VtZW50RXhwcmVz
c2lvbiA9IG51bGxwdHI7Ci0gICAgICAgIEFTVDo6VHlwZVJlZmVyZW5jZSogdHlwZUFyZ3VtZW50
VHlwZVJlZmVyZW5jZSA9IG51bGxwdHI7Ci0gICAgICAgIEFTVDo6Q29uc3RhbnRFeHByZXNzaW9u
KiBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uID0gbnVsbHB0cjsKLSAgICAgICAgQVNUOjpU
eXBlUmVmZXJlbmNlKiBuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlID0gbnVsbHB0cjsK
LQotICAgICAgICBhdXRvIGFzc2lnbiA9IFsmXShBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3Vt
ZW50LCBBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiomIGV4cHJlc3Npb24sIEFTVDo6VHlwZVJlZmVy
ZW5jZSomIHR5cGVSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikg
ewotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAmY29uc3RhbnRFeHByZXNzaW9uOwotICAg
ICAgICAgICAgfSwgWyZdKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+JiB0aGVUeXBlUmVmZXJlbmNl
KSB7Ci0gICAgICAgICAgICAgICAgdHlwZVJlZmVyZW5jZSA9IHRoZVR5cGVSZWZlcmVuY2UucHRy
KCk7Ci0gICAgICAgICAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBhc3NpZ24odHlwZUFyZ3VtZW50c1tpXSwgdHlwZUFyZ3VtZW50RXhwcmVzc2lvbiwgdHlwZUFy
Z3VtZW50VHlwZVJlZmVyZW5jZSk7Ci0gICAgICAgIGFzc2lnbihuYXRpdmVUeXBlRGVjbGFyYXRp
b24udHlwZUFyZ3VtZW50cygpW2ldLCBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uLCBuYXRp
dmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlKTsKLQotICAgICAgICBpZiAodHlwZUFyZ3VtZW50
RXhwcmVzc2lvbiAmJiBuYXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uKSB7Ci0gICAgICAgICAg
ICBpZiAoIXR5cGVBcmd1bWVudEV4cHJlc3Npb24tPm1hdGNoZXMoKm5hdGl2ZVR5cGVBcmd1bWVu
dEV4cHJlc3Npb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBl
bHNlIGlmICh0eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlICYmIG5hdGl2ZVR5cGVBcmd1bWVudFR5
cGVSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlcygqdHlwZUFyZ3VtZW50VHlw
ZVJlZmVyZW5jZSwgKm5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZUtpbmQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wg
aW5mZXJUeXBlc0ZvckNhbGxJbXBsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVG
dW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBh
cmd1bWVudFR5cGVzLCBjb25zdCBUeXBlS2luZCogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgaWYg
KHBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKSAhPSBhcmd1bWVudFR5cGVzLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byBzdWNjZXNzID0gYXJndW1lbnRUeXBlc1tpXS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNpdG9y
KFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBib29sIHsKLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaGVzKCpwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS0+
dHlwZSgpLCB1bm5hbWVkVHlwZSk7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5
cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY2Fu
UmVzb2x2ZShwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT51bmlmeU5v
ZGUoKSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FzdFJldHVyblR5cGUgJiYgIW1hdGNoZXMo
cG9zc2libGVGdW5jdGlvbi50eXBlKCksICpjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNU
OjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKQotewotICAgIHJldHVybiBpbmZlclR5cGVzRm9y
Q2FsbEltcGwocG9zc2libGVGdW5jdGlvbiwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUp
OwotfQotCi1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYg
cG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5n
VHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJu
VHlwZSkKLXsKLSAgICByZXR1cm4gaW5mZXJUeXBlc0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rp
b24sIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbmZlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEluZmVyVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyMmYz
N2RjMGQ4NmM4NzYwNzVjZDc0YWYwN2U4YTIxNGE3MDhkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEluZmVyVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3Vt
ZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0
aW9uOwotY2xhc3MgTmFtZWRUeXBlOwotY2xhc3MgUmVzb2x2YWJsZVR5cGU7Ci1jbGFzcyBVbm5h
bWVkVHlwZTsKLQotfQotCi1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYsIGNv
bnN0IEFTVDo6VW5uYW1lZFR5cGUmKTsKLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6Ok5hbWVkVHlw
ZSYsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJik7Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpVbm5h
bWVkVHlwZSYsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlw
ZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpVbm5hbWVkVHlwZSYsIEFTVDo6UmVzb2x2YWJsZVR5cGUm
KTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6Ok5hbWVkVHlw
ZSYsIEFTVDo6UmVzb2x2YWJsZVR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRj
aEFuZENvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJiwgQVNUOjpSZXNvbHZhYmxlVHlwZSYpOwot
UmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IGNvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1i
b29sIGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5
cGUsIEFTVDo6VHlwZUFyZ3VtZW50cyYpOwotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpOYW1l
ZFR5cGUqIGNhc3RSZXR1cm5UeXBlKTsKLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwoQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFTVDo6VW5uYW1l
ZFR5cGUqIGNhc3RSZXR1cm5UeXBlKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEludHJpbnNpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmQ0MzdhMmNlMmVjNjA4NGI5NWIzY2Q1NjE3YmI2OGIyNGY4OWVlNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJ
bnRyaW5zaWNzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50Lmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgot
I2luY2x1ZGUgPGNzdHJpbmc+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZVR5cGVO
YW1lc1tdOwotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJpbnNpY3M6Om1fdGV4dHVyZUlubmVy
VHlwZU5hbWVzW107Ci1jb25zdGV4cHIgY29uc3QgY2hhciogSW50cmluc2ljczo6bV9kZXB0aFRl
eHR1cmVJbm5lclR5cGVzW107Ci0KLUludHJpbnNpY3M6OkludHJpbnNpY3MoKQotewotfQotCi12
b2lkIEludHJpbnNpY3M6OmFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJkZHgiKQotICAgICAgICBtX2RkeCA9ICZuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJkZHkiKQotICAgICAgICBtX2RkeSA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAg
IGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1vcnlC
YXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fYWxsTWVtb3J5QmFycmllciA9ICZuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAg
ICAgIG1fZGV2aWNlTWVtb3J5QmFycmllciA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwot
ICAgIGVsc2UgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91cE1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikKLSAgICAgICAgbV9ncm91cE1lbW9yeUJhcnJpZXIg
PSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRQ
cmltaXRpdmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXpl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJ2b2lkIikKLSAgICAgICAgbV92b2lkVHlwZSA9ICZuYXRpdmVUeXBlRGVj
bGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
Ym9vbCIpCi0gICAgICAgIG1fYm9vbFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAg
IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInVpbnQiKSB7Ci0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0ludCgpOwotICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0SXNOdW1iZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldENhblJlcHJlc2VudEludGVnZXIoW10oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB4
ID49IDA7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2Fu
UmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRD
YW5SZXByZXNlbnRGbG9hdChbXShmbG9hdCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KSkgPT0geDsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRTdWNjZXNzb3IoW10oaW50NjRfdCB4
KSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
eCArIDEpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZv
cm1hdFZhbHVlRnJvbUludGVnZXIoW10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoW10o
dW5zaWduZWQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldEl0ZXJhdGVBbGxWYWx1ZXMoW10oY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3Qp
PiYgY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGZvciAoaW50NjRfdCBpID0gMDsgaSA8IDB4MTAw
MDAwMDAwOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2soaSkpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAg
bV91aW50VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRJc0ludCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0
SXNOdW1iZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzU2lnbmVkKCk7
Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtd
KGludCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKFtdKHVu
c2lnbmVkIHgpIHsKLSAgICAgICAgICAgIHJldHVybiB4IDw9IDIxNDc0ODM2NDc7Ci0gICAgICAg
IH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQo
W10oZmxvYXQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0
aWNfY2FzdDxpbnQzMl90Pih4KSkgPT0geDsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRTdWNjZXNzb3IoW10oaW50NjRfdCB4KSAtPiBpbnQ2NF90IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih4ICsgMSk7Ci0gICAgICAgIH0p
OwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdl
cihbXShpbnQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50MzJfdD4oeCk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkIHgpIC0+IGludDY0
X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpOwotICAgICAg
ICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEl0ZXJhdGVBbGxWYWx1ZXMo
W10oY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsKLSAgICAg
ICAgICAgIGZvciAoaW50NjRfdCBpID0gLTIxNDc0ODM2NDc7IGkgPCAyMTQ3NDgzNjQ4OyArK2kp
IHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2soaSkpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgbV9pbnRUeXBlID0g
Jm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImZsb2F0IikgewotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0SXNOdW1iZXIoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzRmxvYXRp
bmcoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVn
ZXIoW10oaW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIo
W10odW5zaWduZWQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAg
ICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEZsb2F0KFtdKGZsb2F0
KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmxv
YXRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY19pbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRJc0F0b21pYygpOwotICAgICAgICBtX2F0b21pY0ludFR5cGUgPSAm
bmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiYXRvbWljX3VpbnQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0F0b21pYygpOwotICAgICAgICBtX2F0b21pY1VpbnRUeXBlID0gJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gInNhbXBsZXIiKSB7Ci0gICAgICAgIG1fc2FtcGxlclR5cGUgPSAmbmF0aXZlVHlwZURl
Y2xhcmF0aW9uOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFxdWVUeXBl
KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZFZlY3RvcihBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpICE9ICJ2ZWN0b3IiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkg
PT0gMik7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJl
ZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAg
ICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4o
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgIGF1dG8mIGlu
bmVyVHlwZSA9IHN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZSY+KFdURjo6Z2V0PFJlZjxB
U1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
WzBdKSk7Ci0gICAgYXV0byYgbGVuZ3RoRXhwcmVzc2lvbiA9IFdURjo6Z2V0PEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKTsK
LSAgICBBU1NFUlQoIWlubmVyVHlwZS50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbioqIGFycmF5OwotICAgIGlmIChpbm5lclR5cGUubmFtZSgp
ID09ICJib29sIikKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvckJvb2w7Ci0gICAgZWxzZSBpZiAo
aW5uZXJUeXBlLm5hbWUoKSA9PSAidWludCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JVaW50
OwotICAgIGVsc2UgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gImludCIpCi0gICAgICAgIGFycmF5
ID0gbV92ZWN0b3JJbnQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpbm5lclR5cGUubmFt
ZSgpID09ICJmbG9hdCIpOwotICAgICAgICBhcnJheSA9IG1fdmVjdG9yRmxvYXQ7Ci0gICAgfQot
ICAgIGludCBsZW5ndGggPSBsZW5ndGhFeHByZXNzaW9uLmludGVnZXJMaXRlcmFsKCkudmFsdWUo
KTsKLSAgICBBU1NFUlQobGVuZ3RoID49IDIgJiYgbGVuZ3RoIDw9IDQpOwotICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRJc1ZlY3RvcigpOwotICAgIGFycmF5W2xlbmd0aCAtIDJdID0gJm5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5z
aWNzOjphZGRNYXRyaXgoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAibWF0
cml4IikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldElzTWF0cml4KCk7Ci0KLSAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJn
dW1lbnRzKClbMF0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsx
XSkpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzJdKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW50cmluc2ljczo6YWRkRnVsbFRleHR1cmUoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVm
ZXJlbmNlJiBpbm5lclR5cGUpCi17Ci0gICAgYXV0byB0ZXh0dXJlVHlwZUluZGV4ID0gc3RkOjpm
aW5kKG1fdGV4dHVyZVR5cGVOYW1lcywgbV90ZXh0dXJlVHlwZU5hbWVzICsgV1RGX0FSUkFZX0xF
TkdUSChtX3RleHR1cmVUeXBlTmFtZXMpLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKSAt
IG1fdGV4dHVyZVR5cGVOYW1lczsKLSAgICBpZiAodGV4dHVyZVR5cGVJbmRleCA9PSBXVEZfQVJS
QVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVOYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHVuc2lnbmVkIGlubmVyVHlwZUluZGV4ID0gV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJ
bm5lclR5cGVOYW1lcyk7Ci0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gMDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVO
YW1lcyk7ICsraSkgewotICAgICAgICBpZiAoaW5uZXJUeXBlLm5hbWUoKS5zdGFydHNXaXRoKG1f
dGV4dHVyZUlubmVyVHlwZU5hbWVzW2ldKSkgewotICAgICAgICAgICAgaW5uZXJUeXBlSW5kZXgg
PSBpOwotICAgICAgICAgICAgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gbV90ZXh0dXJlSW5uZXJU
eXBlTmFtZXNbaV0pCi0gICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gMTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlubmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkgPT0gc3RybGVuKG1fdGV4dHVyZUlubmVyVHlw
ZU5hbWVzW2ldKSArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFd
ID09ICcyJwotICAgICAgICAgICAgICAgICAgICB8fCBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlw
ZS5uYW1lKCkubGVuZ3RoKCkgLSAxXSA9PSAnMycKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5u
ZXJUeXBlLm5hbWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzQnKTsKLSAg
ICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5u
YW1lKCkubGVuZ3RoKCkgLSAxXSAtICcwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgICBSRUxFQVNFX0FTU0VSVCh2ZWN0b3JMZW5ndGggJiYgdmVjdG9yTGVuZ3RoIDwgNSk7
Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5uZXJUeXBlSW5kZXggIT0g
V1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcykpOwotICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1cmUoKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0SXNPcGFxdWVUeXBlKCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlRleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0
dXJlMkRBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJl
MkRBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1cmVBcnJh
eSgpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUx
RCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiIHx8IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIiB8fCBuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnNldElzV3JpdGFibGVUZXh0dXJlKCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiUldUZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlRleHR1cmUxREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUxREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1
cmVEaW1lbnNpb24oMSk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlRleHR1cmUyRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJl
MkQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIiB8fCBu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRBcnJheSIgfHwgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDIpOwotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlM0QiIHx8IG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24oMyk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJlIikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLnNldElzQ3ViZVRleHR1cmUoKTsKLSAgICBtX2Z1bGxUZXh0dXJlc1t0ZXh0dXJlVHlwZUlu
ZGV4XVtpbm5lclR5cGVJbmRleF1bdmVjdG9yTGVuZ3RoIC0gMV0gPSAmbmF0aXZlVHlwZURlY2xh
cmF0aW9uOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZERlcHRo
VGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LCBBU1Q6OlR5cGVSZWZlcmVuY2UmIGlubmVyVHlwZSkKLXsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbioqIHRleHR1cmUgPSBudWxscHRyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGgyRCIpCi0gICAgICAgIHRleHR1cmUgPSBtX3Rl
eHR1cmVEZXB0aDJEOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlRleHR1cmVEZXB0aDJEQXJyYXkiKQotICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJlRGVw
dGgyREFycmF5OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoQ3ViZSIpOwotICAgICAgICB0ZXh0dXJlID0gbV90
ZXh0dXJlRGVwdGhDdWJlOwotICAgIH0KLSAgICBhdXRvIGlubmVyVHlwZUluZGV4ID0gc3RkOjpm
aW5kKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcywgbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzICsg
V1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpLCBpbm5lclR5cGUubmFt
ZSgpKSAtIG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlczsKLSAgICBBU1NFUlQoaW5uZXJUeXBlSW5k
ZXggIT0gV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpKTsKLSAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldElzT3BhcXVlVHlwZSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURl
cHRoMkRBcnJheSkKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZUFy
cmF5KCk7Ci0gICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlRGVwdGhDdWJlKQotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNDdWJlVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDIpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0RlcHRoVGV4dHVyZSgpOwotICAgIHRleHR1cmVbaW5uZXJUeXBlSW5kZXhdID0g
Jm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGRUZXh0dXJl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0g
ICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09
IDEpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZl
cmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAg
YXV0byYgaW5uZXJUeXBlID0gc3RhdGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4oV1RGOjpn
ZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJn
dW1lbnRzKClbMF0pKTsKLSAgICBBU1NFUlQoIWlubmVyVHlwZS50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpKTsKLSAgICBpZiAoYWRkRnVsbFRleHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uLCBpbm5l
clR5cGUpKSB7Ci0gICAgICAgIG1fdGV4dHVyZVNldC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYWRkRGVwdGhUZXh0dXJlKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiwgaW5uZXJUeXBlKTsKLSAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRpdmVU
eXBlRGVjbGFyYXRpb24pOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZChBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChhZGRQcmlt
aXRpdmUobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChh
ZGRWZWN0b3IobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
IChhZGRNYXRyaXgobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGFkZFRleHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbnRyaW5zaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEludHJpbnNpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZmZmZh
NWU0NGU0MGQzNjk2ODI2YWI4ZDhkNmFmNzY1Yzg1NTJkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEludHJpbnNpY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3Mg
ewotcHVibGljOgotICAgIEludHJpbnNpY3MoKTsKLQotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIHZvaWQgYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJik7Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdm9pZFR5cGUoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdm9pZFR5cGUpOwotICAgICAgICByZXR1cm4g
Km1fdm9pZFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGJv
b2xUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Jvb2xUeXBlKTsKLSAgICAg
ICAgcmV0dXJuICptX2Jvb2xUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBib29sVmVjdG9yVHlwZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9
PSA0KTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckJvb2xbc2l6ZSAtIDJdOwotICAgIH0KLQot
ICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VHlwZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV91aW50VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV91aW50VHlwZTsK
LSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9pbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX2lu
dFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnQyVHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JVaW50WzBdKTsKLSAgICAg
ICAgcmV0dXJuICptX3ZlY3RvclVpbnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIHVpbnQ0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92
ZWN0b3JVaW50WzJdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvclVpbnRbMl07Ci0gICAgfQot
Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnRWZWN0b3JUeXBlRm9yU2l6ZSh1
bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9
PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9y
VWludFtzaXplIC0gMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IGludDJUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckludFswXSk7
Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24mIGludDRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3ZlY3RvckludFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JJbnRbMl07Ci0gICAg
fQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGludFZlY3RvclR5cGVGb3JTaXpl
KHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXpl
ID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0
b3JJbnRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBzYW1wbGVyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9zYW1wbGVyVHlw
ZSk7Ci0gICAgICAgIHJldHVybiAqbV9zYW1wbGVyVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxvYXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2Zsb2F0VHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9mbG9hdFR5cGU7Ci0gICAgfQot
Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0MlR5cGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRbMF0pOwotICAgICAgICByZXR1cm4gKm1f
dmVjdG9yRmxvYXRbMF07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IGZsb2F0M1R5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRb
MV0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbMV07Ci0gICAgfQotCi0gICAgQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdmVjdG9yRmxvYXRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxv
YXRbMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VmVj
dG9yVHlwZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAg
cmV0dXJuICptX3ZlY3RvckZsb2F0W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgbWF5IGhhdmUgYmVlbiBwcnVuZWQgZnJvbSB0aGUgQVNUIGlmIHRoZXkgYXJlIHVu
dXNlZC4KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRkeCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9kZHg7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKiBkZHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR5
OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogYWxsTWVtb3J5
QmFycmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hbGxNZW1vcnlCYXJyaWVy
OwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGV2aWNlTWVt
b3J5QmFycmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kZXZpY2VNZW1vcnlC
YXJyaWVyOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZ3Jv
dXBNZW1vcnlCYXJyaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyb3VwTWVt
b3J5QmFycmllcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBhZGRQcmltaXRpdmUoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZFZlY3RvcihBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJik7Ci0gICAgYm9vbCBhZGRGdWxsVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYsIEFTVDo6VHlwZVJlZmVyZW5jZSYpOwotICAgIHZvaWQgYWRkRGVwdGhUZXh0dXJl
KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiwgQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAg
dm9pZCBhZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBIYXNo
U2V0PGNvbnN0IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKj4gbV90ZXh0dXJlU2V0OwotCi0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdm9pZFR5cGUgeyBudWxscHRyIH07Ci0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYm9vbFR5cGUgeyBudWxscHRyIH07Ci0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdWludFR5cGUgeyBudWxscHRyIH07Ci0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1faW50VHlwZSB7IG51bGxwdHIgfTsKLSAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9mbG9hdFR5cGUgeyBudWxscHRyIH07Ci0g
ICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYXRvbWljSW50VHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9hdG9taWNVaW50VHlwZSB7IG51
bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9zYW1wbGVyVHlwZSB7
IG51bGxwdHIgfTsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3RvckJv
b2xbM10geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yVWlu
dFszXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JJbnRb
M10geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yRmxvYXRb
M10geyAwIH07Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1fdGV4dHVyZVR5
cGVOYW1lc1tdID0geyAiVGV4dHVyZTFEIiwgIlJXVGV4dHVyZTFEIiwgIlRleHR1cmUyRCIsICJS
V1RleHR1cmUyRCIsICJUZXh0dXJlM0QiLCAiUldUZXh0dXJlM0QiLCAiVGV4dHVyZUN1YmUiLCAi
VGV4dHVyZTFEQXJyYXkiLCAiUldUZXh0dXJlMURBcnJheSIsICJUZXh0dXJlMkRBcnJheSIsICJS
V1RleHR1cmUyREFycmF5IiB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBt
X3RleHR1cmVJbm5lclR5cGVOYW1lc1tdID0geyAidWludCIsICJpbnQiLCAiZmxvYXQiIH07Ci0K
LSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9mdWxsVGV4dHVyZXNbV1RGX0FSUkFZ
X0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMpXVtXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlu
bmVyVHlwZU5hbWVzKV1bNF0ge3t7IDAgfX19OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXNbXSA9ICB7ICJmbG9hdCIgfTsKLQotICAg
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEW1dURl9BUlJBWV9M
RU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24qIG1fdGV4dHVyZURlcHRoMkRBcnJheVtXVEZfQVJSQVlfTEVOR1RIKG1f
ZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uKiBtX3RleHR1cmVEZXB0aEN1YmVbV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVy
ZUlubmVyVHlwZXMpXSB7IDAgfTsKLQotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biogbV9kZHggeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KiBtX2RkeSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24q
IG1fYWxsTWVtb3J5QmFycmllciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24qIG1fZGV2aWNlTWVtb3J5QmFycmllciB7IG51bGxwdHIgfTsKLSAgICBBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZ3JvdXBNZW1vcnlCYXJyaWVyIHsgbnVsbHB0
ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWQ2YjBlYWNjZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3NDNiOTdiYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE3NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTExleGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3QgY2hhciogVG9rZW46
OnR5cGVOYW1lKFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFR5
cGU6OkludExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAiaW50IGxpdGVyYWwiOwotICAgIGNhc2Ug
VHlwZTo6VWludExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAidWludCBsaXRlcmFsIjsKLSAgICBj
YXNlIFR5cGU6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCBsaXRlcmFsIjsK
LSAgICBjYXNlIFR5cGU6OlN0cnVjdDoKLSAgICAgICAgcmV0dXJuICJzdHJ1Y3QiOwotICAgIGNh
c2UgVHlwZTo6VHlwZWRlZjoKLSAgICAgICAgcmV0dXJuICJ0eXBlZGVmIjsKLSAgICBjYXNlIFR5
cGU6OkVudW06Ci0gICAgICAgIHJldHVybiAiZW51bSI7Ci0gICAgY2FzZSBUeXBlOjpPcGVyYXRv
cjoKLSAgICAgICAgcmV0dXJuICJvcGVyYXRvciI7Ci0gICAgY2FzZSBUeXBlOjpJZjoKLSAgICAg
ICAgcmV0dXJuICJpZiI7Ci0gICAgY2FzZSBUeXBlOjpFbHNlOgotICAgICAgICByZXR1cm4gImVs
c2UiOwotICAgIGNhc2UgVHlwZTo6Q29udGludWU6Ci0gICAgICAgIHJldHVybiAiY29udGludWUi
OwotICAgIGNhc2UgVHlwZTo6QnJlYWs6Ci0gICAgICAgIHJldHVybiAiYnJlYWsiOwotICAgIGNh
c2UgVHlwZTo6U3dpdGNoOgotICAgICAgICByZXR1cm4gInN3aXRjaCI7Ci0gICAgY2FzZSBUeXBl
OjpDYXNlOgotICAgICAgICByZXR1cm4gImNhc2UiOwotICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuICJkZWZhdWx0IjsKLSAgICBjYXNlIFR5cGU6OkZhbGx0aHJvdWdoOgot
ICAgICAgICByZXR1cm4gImZhbGx0aHJvdWdoIjsKLSAgICBjYXNlIFR5cGU6OkZvcjoKLSAgICAg
ICAgcmV0dXJuICJmb3IiOwotICAgIGNhc2UgVHlwZTo6V2hpbGU6Ci0gICAgICAgIHJldHVybiAi
d2hpbGUiOwotICAgIGNhc2UgVHlwZTo6RG86Ci0gICAgICAgIHJldHVybiAiZG8iOwotICAgIGNh
c2UgVHlwZTo6UmV0dXJuOgotICAgICAgICByZXR1cm4gInJldHVybiI7Ci0gICAgY2FzZSBUeXBl
OjpOdWxsOgotICAgICAgICByZXR1cm4gIm51bGwiOwotICAgIGNhc2UgVHlwZTo6VHJ1ZToKLSAg
ICAgICAgcmV0dXJuICJ0cnVlIjsKLSAgICBjYXNlIFR5cGU6OkZhbHNlOgotICAgICAgICByZXR1
cm4gImZhbHNlIjsKLSAgICBjYXNlIFR5cGU6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNv
bnN0YW50IjsKLSAgICBjYXNlIFR5cGU6OkRldmljZToKLSAgICAgICAgcmV0dXJuICJkZXZpY2Ui
OwotICAgIGNhc2UgVHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgIHJldHVybiAidGhyZWFkZ3Jv
dXAiOwotICAgIGNhc2UgVHlwZTo6VGhyZWFkOgotICAgICAgICByZXR1cm4gInRocmVhZCI7Ci0g
ICAgY2FzZSBUeXBlOjpTcGFjZToKLSAgICAgICAgcmV0dXJuICJzcGFjZSI7Ci0gICAgY2FzZSBU
eXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVybiAidmVydGV4IjsKLSAgICBjYXNlIFR5cGU6OkZy
YWdtZW50OgotICAgICAgICByZXR1cm4gImZyYWdtZW50IjsKLSAgICBjYXNlIFR5cGU6OkNvbXB1
dGU6Ci0gICAgICAgIHJldHVybiAiY29tcHV0ZSI7Ci0gICAgY2FzZSBUeXBlOjpOdW1UaHJlYWRz
OgotICAgICAgICByZXR1cm4gIm51bXRocmVhZHMiOwotICAgIGNhc2UgVHlwZTo6U1ZJbnN0YW5j
ZUlEOgotICAgICAgICByZXR1cm4gIlNWX0luc3RhbmNlSUQiOwotICAgIGNhc2UgVHlwZTo6U1ZW
ZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuICJTVl9WZXJ0ZXhJRCI7Ci0gICAgY2FzZSBUeXBlOjpQ
U2l6ZToKLSAgICAgICAgcmV0dXJuICJQU0laRSI7Ci0gICAgY2FzZSBUeXBlOjpTVlBvc2l0aW9u
OgotICAgICAgICByZXR1cm4gIlNWX1Bvc2l0aW9uIjsKLSAgICBjYXNlIFR5cGU6OlNWSXNGcm9u
dEZhY2U6Ci0gICAgICAgIHJldHVybiAiU1ZfSXNGcm9udEZhY2UiOwotICAgIGNhc2UgVHlwZTo6
U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJTVl9TYW1wbGVJbmRleCI7Ci0gICAgY2Fz
ZSBUeXBlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiU1ZfSW5uZXJDb3ZlcmFn
ZSI7Ci0gICAgY2FzZSBUeXBlOjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJuICJTVl9UYXJnZXQi
OwotICAgIGNhc2UgVHlwZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJTVl9EZXB0aCI7Ci0g
ICAgY2FzZSBUeXBlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIlNWX0NvdmVyYWdlIjsK
LSAgICBjYXNlIFR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJTVl9E
aXNwYXRjaFRocmVhZElEIjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0
dXJuICJTVl9Hcm91cElEIjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAg
cmV0dXJuICJTVl9Hcm91cEluZGV4IjsKLSAgICBjYXNlIFR5cGU6OlNWR3JvdXBUaHJlYWRJRDoK
LSAgICAgICAgcmV0dXJuICJTVl9Hcm91cFRocmVhZElEIjsKLSAgICBjYXNlIFR5cGU6OkF0dHJp
YnV0ZToKLSAgICAgICAgcmV0dXJuICJTVl9BdHRyaWJ1dGUiOwotICAgIGNhc2UgVHlwZTo6UmVn
aXN0ZXI6Ci0gICAgICAgIHJldHVybiAicmVnaXN0ZXIiOwotICAgIGNhc2UgVHlwZTo6U3BlY2lh
bGl6ZWQ6Ci0gICAgICAgIHJldHVybiAic3BlY2lhbGl6ZWQiOwotICAgIGNhc2UgVHlwZTo6TmF0
aXZlOgotICAgICAgICByZXR1cm4gIm5hdGl2ZSI7Ci0gICAgY2FzZSBUeXBlOjpSZXN0cmljdGVk
OgotICAgICAgICByZXR1cm4gInJlc3RyaWN0ZWQiOwotICAgIGNhc2UgVHlwZTo6VW5kZXJzY29y
ZToKLSAgICAgICAgcmV0dXJuICJfIjsKLSAgICBjYXNlIFR5cGU6OkF1dG86Ci0gICAgICAgIHJl
dHVybiAiYXV0byI7Ci0gICAgY2FzZSBUeXBlOjpQcm90b2NvbDoKLSAgICAgICAgcmV0dXJuICJw
cm90b2NvbCI7Ci0gICAgY2FzZSBUeXBlOjpDb25zdDoKLSAgICAgICAgcmV0dXJuICJjb25zdCI7
Ci0gICAgY2FzZSBUeXBlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAic3RhdGljIjsKLSAgICBj
YXNlIFR5cGU6OlF1YWxpZmllcjoKLSAgICAgICAgcmV0dXJuICJxdWFsaWZpZXIiOwotICAgIGNh
c2UgVHlwZTo6SWRlbnRpZmllcjoKLSAgICAgICAgcmV0dXJuICJpZGVudGlmaWVyIjsKLSAgICBj
YXNlIFR5cGU6Ok9wZXJhdG9yTmFtZToKLSAgICAgICAgcmV0dXJuICJvcGVyYXRvciBuYW1lIjsK
LSAgICBjYXNlIFR5cGU6OkVxdWFsc1NpZ246Ci0gICAgICAgIHJldHVybiAiPSI7Ci0gICAgY2Fz
ZSBUeXBlOjpTZW1pY29sb246Ci0gICAgICAgIHJldHVybiAiOyI7Ci0gICAgY2FzZSBUeXBlOjpM
ZWZ0Q3VybHlCcmFja2V0OgotICAgICAgICByZXR1cm4gInsiOwotICAgIGNhc2UgVHlwZTo6Umln
aHRDdXJseUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiAifSI7Ci0gICAgY2FzZSBUeXBlOjpDb2xv
bjoKLSAgICAgICAgcmV0dXJuICI6IjsKLSAgICBjYXNlIFR5cGU6OkNvbW1hOgotICAgICAgICBy
ZXR1cm4gIiwiOwotICAgIGNhc2UgVHlwZTo6TGVmdFBhcmVudGhlc2lzOgotICAgICAgICByZXR1
cm4gIigiOwotICAgIGNhc2UgVHlwZTo6UmlnaHRQYXJlbnRoZXNpczoKLSAgICAgICAgcmV0dXJu
ICIpIjsKLSAgICBjYXNlIFR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgotICAgICAgICByZXR1cm4g
IltdIjsKLSAgICBjYXNlIFR5cGU6OkxlZnRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4g
IlsiOwotICAgIGNhc2UgVHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4g
Il0iOwotICAgIGNhc2UgVHlwZTo6U3RhcjoKLSAgICAgICAgcmV0dXJuICIqIjsKLSAgICBjYXNl
IFR5cGU6Okxlc3NUaGFuU2lnbjoKLSAgICAgICAgcmV0dXJuICI8IjsKLSAgICBjYXNlIFR5cGU6
OkdyZWF0ZXJUaGFuU2lnbjoKLSAgICAgICAgcmV0dXJuICI+IjsKLSAgICBjYXNlIFR5cGU6OkZ1
bGxTdG9wOgotICAgICAgICByZXR1cm4gIi4iOwotICAgIGNhc2UgVHlwZTo6UGx1c0VxdWFsczoK
LSAgICAgICAgcmV0dXJuICIrPSI7Ci0gICAgY2FzZSBUeXBlOjpNaW51c0VxdWFsczoKLSAgICAg
ICAgcmV0dXJuICItPSI7Ci0gICAgY2FzZSBUeXBlOjpUaW1lc0VxdWFsczoKLSAgICAgICAgcmV0
dXJuICIqPSI7Ci0gICAgY2FzZSBUeXBlOjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIHJldHVybiAi
Lz0iOwotICAgIGNhc2UgVHlwZTo6TW9kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiU9IjsKLSAg
ICBjYXNlIFR5cGU6OlhvckVxdWFsczoKLSAgICAgICAgcmV0dXJuICJePSI7Ci0gICAgY2FzZSBU
eXBlOjpBbmRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiJj0iOwotICAgIGNhc2UgVHlwZTo6T3JF
cXVhbHM6Ci0gICAgICAgIHJldHVybiAifD0iOwotICAgIGNhc2UgVHlwZTo6UmlnaHRTaGlmdEVx
dWFsczoKLSAgICAgICAgcmV0dXJuICI+Pj0iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0RXF1
YWxzOgotICAgICAgICByZXR1cm4gIjw8PSI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzUGx1czoKLSAg
ICAgICAgcmV0dXJuICIrKyI7Ci0gICAgY2FzZSBUeXBlOjpNaW51c01pbnVzOgotICAgICAgICBy
ZXR1cm4gIi0tIjsKLSAgICBjYXNlIFR5cGU6OkFycm93OgotICAgICAgICByZXR1cm4gIi0+IjsK
LSAgICBjYXNlIFR5cGU6OlF1ZXN0aW9uTWFyazoKLSAgICAgICAgcmV0dXJuICI/IjsKLSAgICBj
YXNlIFR5cGU6Ok9yT3I6Ci0gICAgICAgIHJldHVybiAifHwiOwotICAgIGNhc2UgVHlwZTo6QW5k
QW5kOgotICAgICAgICByZXR1cm4gIiYmIjsKLSAgICBjYXNlIFR5cGU6Ok9yOgotICAgICAgICBy
ZXR1cm4gInwiOwotICAgIGNhc2UgVHlwZTo6WG9yOgotICAgICAgICByZXR1cm4gIl4iOwotICAg
IGNhc2UgVHlwZTo6QW5kOgotICAgICAgICByZXR1cm4gIiYiOwotICAgIGNhc2UgVHlwZTo6TGVz
c1RoYW5PckVxdWFsVG86Ci0gICAgICAgIHJldHVybiAiPD0iOwotICAgIGNhc2UgVHlwZTo6R3Jl
YXRlclRoYW5PckVxdWFsVG86Ci0gICAgICAgIHJldHVybiAiPj0iOwotICAgIGNhc2UgVHlwZTo6
RXF1YWxDb21wYXJpc29uOgotICAgICAgICByZXR1cm4gIj09IjsKLSAgICBjYXNlIFR5cGU6Ok5v
dEVxdWFsOgotICAgICAgICByZXR1cm4gIiE9IjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U2hpZnQ6
Ci0gICAgICAgIHJldHVybiAiPj4iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNoaWZ0OgotICAgICAg
ICByZXR1cm4gIjw8IjsKLSAgICBjYXNlIFR5cGU6OlBsdXM6Ci0gICAgICAgIHJldHVybiAiKyI7
Ci0gICAgY2FzZSBUeXBlOjpNaW51czoKLSAgICAgICAgcmV0dXJuICItIjsKLSAgICBjYXNlIFR5
cGU6OkRpdmlkZToKLSAgICAgICAgcmV0dXJuICIvIjsKLSAgICBjYXNlIFR5cGU6Ok1vZDoKLSAg
ICAgICAgcmV0dXJuICIlIjsKLSAgICBjYXNlIFR5cGU6OlRpbGRlOgotICAgICAgICByZXR1cm4g
In4iOwotICAgIGNhc2UgVHlwZTo6RXhjbGFtYXRpb25Qb2ludDoKLSAgICAgICAgcmV0dXJuICIh
IjsKLSAgICBjYXNlIFR5cGU6OkF0OgotICAgICAgICByZXR1cm4gIkAiOwotICAgIGNhc2UgVHlw
ZTo6RW5kT2ZGaWxlOgotICAgICAgICByZXR1cm4gIkVPRiI7Ci0gICAgY2FzZSBUeXBlOjpJbnZh
bGlkOgotICAgICAgICByZXR1cm4gIkxFWElOR19FUlJPUiI7Ci0gICAgfQotfQotCi1zdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRJZGVudGlmaWVyU3RhcnQoVUNoYXIgdGhlQ2hhcikK
LXsKLSAgICByZXR1cm4gKHRoZUNoYXIgPj0gJ2EnICYmIHRoZUNoYXIgPD0gJ3onKQotICAgICAg
ICB8fCAodGhlQ2hhciA+PSAnQScgJiYgdGhlQ2hhciA8PSAnWicpCi0gICAgICAgIHx8ICh0aGVD
aGFyID09ICdfJyk7Ci19Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZE5vblN0
YXJ0aW5nSWRlbnRpZmllckNoYXIoVUNoYXIgdGhlQ2hhcikKLXsKLSAgICByZXR1cm4gKHRoZUNo
YXIgPj0gJ2EnICYmIHRoZUNoYXIgPD0gJ3onKQotICAgICAgICB8fCAodGhlQ2hhciA+PSAnQScg
JiYgdGhlQ2hhciA8PSAnWicpCi0gICAgICAgIHx8ICh0aGVDaGFyID49ICcwJyAmJiB0aGVDaGFy
IDw9ICc5JykKLSAgICAgICAgfHwgKHRoZUNoYXIgPT0gJ18nKTsKLX0KLQotc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0hleGFkZWNpbWFsQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLXsK
LSAgICByZXR1cm4gKGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykKLSAgICAg
ICAgfHwgKGNoYXJhY3RlciA+PSAnYScgJiYgY2hhcmFjdGVyIDw9ICdmJykKLSAgICAgICAgfHwg
KGNoYXJhY3RlciA+PSAnQScgJiYgY2hhcmFjdGVyIDw9ICdGJyk7Ci19Ci0KLXN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNEaWdpdChVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiB0aGVD
aGFyID49ICcwJyAmJiB0aGVDaGFyIDw9ICc5JzsKLX0KLQotYXV0byBMZXhlcjo6Y29uc3VtZVRv
a2VuRnJvbVN0cmVhbSgpIC0+IFRva2VuCi17Ci0gICAgVUNoYXIgY3VycmVudCA9IDA7Ci0gICAg
dW5zaWduZWQgb2Zmc2V0ID0gbV9vZmZzZXQ7Ci0KLSAgICBhdXRvIHBlZWsgPSBbJl0gKCkgLT4g
VUNoYXIgewotICAgICAgICBpZiAob2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG1fc3RyaW5nVmlld1tvZmZzZXRdOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9OwotCi0gICAgYXV0byBzaGlmdCA9IFsmXSB7Ci0gICAgICAgIGlmIChvZmZzZXQgPCBt
X3N0cmluZ1ZpZXcubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBtX3N0cmluZ1Zp
ZXdbb2Zmc2V0XTsKLSAgICAgICAgICAgICsrb2Zmc2V0OwotICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnQ7Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudCA9IDA7Ci0gICAgICAgIHJldHVybiBj
dXJyZW50OwotICAgIH07Ci0KLSAgICBhdXRvIGNvbnN1bWUgPSBbJl0gKFVDaGFyIHRoZUNoYXIp
IHsKLSAgICAgICAgaWYgKHBlZWsoKSA9PSB0aGVDaGFyKSB7Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH07Ci0KLSAgICBhdXRvIG5leHRJc0lkZW50aWZpZXIgPSBbJl0gewotICAgICAg
ICByZXR1cm4gaXNWYWxpZE5vblN0YXJ0aW5nSWRlbnRpZmllckNoYXIocGVlaygpKTsKLSAgICB9
OwotCi0gICAgYXV0byB0b2tlbiA9IFsmXSAoVG9rZW46OlR5cGUgdHlwZSkgLT4gVG9rZW4gewot
ICAgICAgICBhdXRvIG9sZE9mZnNldCA9IG1fb2Zmc2V0OwotICAgICAgICBtX29mZnNldCA9IG9m
ZnNldDsKLSAgICAgICAgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOwotICAgICAgICByZXR1
cm4geyB7IG9sZE9mZnNldCwgb2Zmc2V0LCBtX25hbWVTcGFjZSB9LCB0eXBlIH07Ci0gICAgfTsK
LQotICAgIHN3aXRjaCAoc2hpZnQoKSkgewotICAgIGNhc2UgJ0EnOgotICAgIGNhc2UgJ0InOgot
ICAgIGNhc2UgJ0MnOgotICAgIGNhc2UgJ0QnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ0Yn
OgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJ0gnOgotICAgIGNhc2UgJ0knOgotICAgIGNhc2Ug
J0onOgotICAgIGNhc2UgJ0snOgotICAgIGNhc2UgJ0wnOgotICAgIGNhc2UgJ00nOgotICAgIGNh
c2UgJ04nOgotICAgIGNhc2UgJ08nOgotICAgIGNhc2UgJ1EnOgotICAgIGNhc2UgJ1InOgotICAg
IGNhc2UgJ1QnOgotICAgIGNhc2UgJ1UnOgotICAgIGNhc2UgJ1YnOgotICAgIGNhc2UgJ1cnOgot
ICAgIGNhc2UgJ1gnOgotICAgIGNhc2UgJ1knOgotICAgIGNhc2UgJ1onOgotICAgIGNhc2UgJ2cn
OgotICAgIGNhc2UgJ2gnOgotICAgIGNhc2UgJ2onOgotICAgIGNhc2UgJ2snOgotICAgIGNhc2Ug
J2wnOgotICAgIGNhc2UgJ20nOgotICAgIGNhc2UgJ3EnOgotICAgIGNhc2UgJ3gnOgotICAgIGNh
c2UgJ3knOgotICAgIGNhc2UgJ3onOgotcGFyc2VJZGVudGlmaWVyOgotICAgICAgICB3aGlsZSAo
aXNWYWxpZE5vblN0YXJ0aW5nSWRlbnRpZmllckNoYXIocGVlaygpKSkKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0K
LSAgICBjYXNlICdzJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAn
YSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotCi0gICAgICAgIGNhc2UgJ3cn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3dpdGNoKTsKLQotICAgICAgICBjYXNlICd0JzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAg
ICAgICAgY2FzZSAncic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlN0cnVjdCk7Ci0gICAgICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3RhdGljKTsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAn
YSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3BhY2UpOwotICAgICAgICAgICAgY2FzZSAn
ZSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
eicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3BlY2lhbGl6
ZWQpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICdTJzoKLSAgICAgICAg
aWYgKCFjb25zdW1lKCdWJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgaWYgKCFjb25zdW1lKCdfJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLQotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdHJzoKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLQotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBJRCk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpT
Vkdyb3VwSW5kZXgpOwotCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBjYXNlICdUJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0K
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdlJzoK
LSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
cCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEZXB0aCk7
Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Mn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnVCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnSScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQpOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgY2FzZSAnQyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlKTsKLSAgICAg
ICAgY2FzZSAnVCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWVGFyZ2V0
KTsKLSAgICAgICAgY2FzZSAnUyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCds
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpTVlNhbXBsZUluZGV4KTsKLSAgICAgICAgY2FzZSAnUCc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Mn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpT
VlBvc2l0aW9uKTsKLSAgICAgICAgY2FzZSAnVic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVlZlcnRleElEKTsKLSAgICAg
ICAgY2FzZSAnSSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChw
ZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdGJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0YnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVklzRnJvbnRGYWNlKTsK
LSAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICduJzoKLSAg
ICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdDJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd2JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlNWSW5uZXJDb3ZlcmFnZSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0g
ICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQpOwotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAg
ICBjYXNlICd0JzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAncic6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRydWUp
OwotICAgICAgICBjYXNlICd5JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
VHlwZWRlZik7Ci0gICAgICAgIGNhc2UgJ2gnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAg
ICAgICAgICBpZiAoIW5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0KLSAgICAgICAgICAgIGlmIChwZWVrKCkgIT0g
J2cnKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSAnZycpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpU
aHJlYWRncm91cCk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICdlJzoKLSAgICAgICAgc3dpdGNoIChw
ZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVudW0pOwotICAgICAgICBjYXNlICdsJzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RWxzZSk7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQot
Ci0gICAgY2FzZSAnbyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
YScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLQotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICcm
JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz4nKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBpZiAo
Y29uc3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3Bl
cmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoY29uc3VtZSgnPCcpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc9
JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5h
bWUpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUp
OwotCi0gICAgICAgIGNhc2UgJysnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IGNvbnN1bWUoJysnKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3Bl
cmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBjb25zdW1lKCctJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnfCc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5h
bWUpOwotCi0gICAgICAgIGNhc2UgJz0nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6SW52YWxpZCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnKic6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwot
Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICcl
JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnISc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5h
bWUpOwotCi0gICAgICAgIGNhc2UgJ34nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBj
YXNlICdeJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpPcGVyYXRvcik7Ci0KLSAgICBjYXNlICdpJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykp
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OklmKTsKLQotICAgIGNhc2UgJ2MnOgotICAgICAgICBz
d2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q2FzZSk7Ci0KLSAgICAgICAgY2FzZSAnZSc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlm
aWVyKTsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ20nOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
Q29tcHV0ZSk7Ci0gICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAndCc6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpDb250aW51ZSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNvbnN0KTsKLQotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24n
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29uc3RhbnQp
OwotCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgfQotCi0gICAgY2FzZSAnYic6Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgnYScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICgh
Y29uc3VtZSgnaycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpCcmVhayk7Ci0KLSAgICBjYXNl
ICdkJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6RG8pOwotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAn
Zic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIH0KLQotCi0gICAgY2FzZSAnZic6Ci0gICAgICAgIHN3aXRjaCAo
cGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6Rm9yKTsKLSAgICAgICAgY2FzZSAncic6Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RnJhZ21lbnQpOwotICAgICAgICBjYXNlICdhJzoK
LSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAgICAgICAgc3dpdGNo
IChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
aCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
RmFsbHRocm91Z2gpOwotCi0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZhbHNlKTsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdmJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkRlZmF1bHQpOwotICAgICAgICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRldmljZSk7Ci0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
fQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgfQotCi0gICAgY2FzZSAndyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnaCcpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
aScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgnbCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpXaGlsZSk7Ci0KLSAgICBj
YXNlICdyJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAn
dCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1Jykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6UmV0dXJuKTsKLSAgICAgICAgY2FzZSAnZyc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlJlZ2lzdGVyKTsKLSAgICAgICAgY2FzZSAncyc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3In
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpS
ZXN0cmljdGVkKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICduJzoKLSAgICAgICAgc3dpdGNoIChwZWVr
KCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOYXRpdmUpOwot
ICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOdWxsKTsKLSAgICAgICAg
ICAgIGNhc2UgJ20nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TnVtVGhyZWFkcyk7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdw
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICB9Ci0KLSAgICBjYXNlICd2JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25z
dW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlZlcnRleCk7Ci0KLSAgICBj
YXNlICdQJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdTJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdaJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdFJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBTaXplKTsKLQotICAgIGNhc2UgJ3UnOgotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLQotICAgIGNhc2UgJ3AnOgotICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6UHJvdG9jb2wpOwotCi0gICAgY2FzZSAnXyc6Ci0gICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVbmRlcnNjb3JlKTsKLQotICAgIGNh
c2UgJ2EnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICd0JzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2InKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkF0dHJpYnV0ZSk7Ci0gICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBdXRvKTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICc+
JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz4nKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUo
Jz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U2hp
ZnRFcXVhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFNo
aWZ0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbyk7Ci0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduKTsKLSAgICBjYXNlICc8
JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJzwnKSkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUo
Jz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlm
dEVxdWFscyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRTaGlm
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVzc1RoYW5PckVxdWFsVG8pOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbik7Ci0KLSAgICBjYXNlICcrJzoKLSAg
ICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6UGx1c0VxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCcrJykpCi0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBsdXNQbHVzKTsKLSAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpQbHVzKTsKLQotICAgIGNhc2UgJy0nOgotICAgICAgICBpZiAoY29u
c3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51c0Vx
dWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCctJykpCi0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6Ok1pbnVzTWludXMpOwotICAgICAgICBpZiAoY29uc3VtZSgnPicpKQot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBcnJvdyk7Ci0gICAgICAgIGlm
IChpc0RpZ2l0KHBlZWsoKSkpIHsKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBn
b3RvIHBhcnNlTnVtYmVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCcuJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlRmxvYXRBZnRlckRvdDsKLSAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpNaW51cyk7Ci0KLSAgICBjYXNlICcqJzoKLSAgICAgICAgaWYgKGNvbnN1
bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VGltZXNFcXVh
bHMpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0YXIpOwotCi0gICAgY2Fz
ZSAnLyc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6RGl2aWRlKTsKLQotICAgIGNhc2UgJyUnOgotICAgICAgICBpZiAoY29uc3VtZSgn
PScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2RFcXVhbHMpOwot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1vZCk7Ci0KLSAgICBjYXNlICdeJzoK
LSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6WG9yRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpY
b3IpOwotCi0gICAgY2FzZSAnJic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZEVxdWFscyk7Ci0gICAgICAgIGlmIChj
b25zdW1lKCcmJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFuZEFu
ZCk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QW5kKTsKLQotICAgIGNhc2Ug
J3wnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpPckVxdWFscyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCd8JykpCi0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9yT3IpOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok9yKTsKLQotICAgIGNhc2UgJ1snOgotICAgICAgICBpZiAoY29u
c3VtZSgnXScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcXVhcmVC
cmFja2V0UGFpcik7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFNxdWFy
ZUJyYWNrZXQpOwotCi0gICAgY2FzZSAnPSc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVxdWFsQ29tcGFyaXNvbik7Ci0g
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbik7Ci0KLSAgICBjYXNl
ICchJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6Tm90RXF1YWwpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkV4Y2xhbWF0aW9uUG9pbnQpOwotCi0gICAgY2FzZSAnOyc6Ci0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6U2VtaWNvbG9uKTsKLQotICAgIGNhc2UgJ3snOgotICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkxlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgY2FzZSAn
fSc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQp
OwotCi0gICAgY2FzZSAnOic6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29s
b24pOwotCi0gICAgY2FzZSAnLCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
Q29tbWEpOwotCi0gICAgY2FzZSAnKCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6TGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGNhc2UgJyknOgotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgY2FzZSAnXSc6Ci0gICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KTsKLQotICAg
IGNhc2UgJy4nOgotICAgICAgICBpZiAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAgZ290
byBwYXJzZUZsb2F0QWZ0ZXJEb3Q7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
RnVsbFN0b3ApOwotCi0gICAgY2FzZSAnPyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6UXVlc3Rpb25NYXJrKTsKLQotICAgIGNhc2UgJ34nOgotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlRpbGRlKTsKLQotICAgIGNhc2UgJ0AnOgotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OkF0KTsKLQotICAgIGNhc2UgJzAnOgotICAgIGNhc2UgJzEnOgot
ICAgIGNhc2UgJzInOgotICAgIGNhc2UgJzMnOgotICAgIGNhc2UgJzQnOgotICAgIGNhc2UgJzUn
OgotICAgIGNhc2UgJzYnOgotICAgIGNhc2UgJzcnOgotICAgIGNhc2UgJzgnOgotICAgIGNhc2Ug
JzknOiB7Ci1wYXJzZU51bWJlcjoKLSAgICAgICAgaWYgKGN1cnJlbnQgPT0gJzAnICYmIGNvbnN1
bWUoJ3gnKSkgewotICAgICAgICAgICAgd2hpbGUgKGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIocGVl
aygpKSkKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUo
J3UnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVpbnRMaXRl
cmFsKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAg
ICAgc2hpZnQoKTsKLQotICAgICAgICBpZiAoY29uc3VtZSgnLicpKSB7Ci1wYXJzZUZsb2F0QWZ0
ZXJEb3Q6Ci0gICAgICAgICAgICB3aGlsZSAoaXNEaWdpdChwZWVrKCkpKQotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBjb25zdW1lKCdmJyk7Ci0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoY29uc3VtZSgnZicpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpGbG9hdExpdGVyYWwpOwotCi0gICAgICAgIGlmIChjb25zdW1lKCd1JykpCi0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLQotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkludExpdGVyYWwpOwotICAgIH0KLQotICAgIGRlZmF1bHQ6
IAotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobV9vZmZzZXQgPT0gbV9zdHJpbmdW
aWV3Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVuZE9mRmls
ZSk7Ci0gICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnZhbGlkKTsKLX0KLQotCi0vLyBX
ZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdHdvIHByb3BlcnRpZXMgb2YgVW5pY29kZToKLS8vIDEu
IFRoZSBjb25zaXR1dGVudCBVVEYtMTYgY29kZSB1bml0cyBmb3IgYWxsIG5vbi1CTVAgY29kZSBw
b2ludHMgYXJlIHN1cnJvZ2F0ZXMsCi0vLyB3aGljaCBtZWFucyB3ZSdsbCBuZXZlciBzZWUgYSBm
YWxzZSBtYXRjaC4gSWYgd2Ugc2VlIGEgQk1QIGNvZGUgdW5pdCwgd2UKLS8vIHJlYWxseSBoYXZl
IGEgQk1QIGNvZGUgcG9pbnQuCi0vLyAyLiBFdmVyeXRoaW5nIHdlJ3JlIGxvb2tpbmcgZm9yIGlz
IGluIEJNUAotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGNvZGVVbml0
KQotewotICAgIHN3aXRjaCAoY29kZVVuaXQpIHsKLSAgICBjYXNlICcgJzoKLSAgICBjYXNlICdc
dCc6Ci0gICAgY2FzZSAnXHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGlj
IGlubGluZSBib29sIGlzTmV3bGluZShVQ2hhciBjb2RlVW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNv
ZGVVbml0KSB7Ci0gICAgY2FzZSAnXHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQot
YXV0byBMZXhlcjo6bGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nVmlldywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0KSAtPiBMaW5lQW5kQ29sdW1uCi17
Ci0gICAgLy8gQ291bnRpbmcgZnJvbSAxIHRvIG1hdGNoIG1vc3QgdGV4dCBlZGl0b3JzLgotICAg
IHVuc2lnbmVkIGxpbmVOdW1iZXIgPSAxOwotICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IDE7
Ci0gICAgZm9yICh1bnNpZ25lZCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzdGQ6Om1pbihzdHJpbmdW
aWV3Lmxlbmd0aCgpLCB0YXJnZXRPZmZzZXQpOyArK29mZnNldCkgewotICAgICAgICArK2NvbHVt
bk51bWJlcjsKLSAgICAgICAgaWYgKGlzTmV3bGluZShzdHJpbmdWaWV3W29mZnNldF0pKSB7Ci0g
ICAgICAgICAgICArK2xpbmVOdW1iZXI7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSAxOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB7IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciB9
OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNw
YWNlKEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25z
dCBTdHJpbmcqIHNvdXJjZTIpCi17Ci0gICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKLSAgICBjYXNl
IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMToKLSAgICAgICAgcmV0
dXJuIFN0cmluZ1ZpZXcoc291cmNlMSk7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNw
YWNlMjoKLSAgICAgICAgQVNTRVJUKHNvdXJjZTIpOwotICAgICAgICByZXR1cm4gU3RyaW5nVmll
dygqc291cmNlMik7Ci0gICAgfQotfQotCi1TdHJpbmcgTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9y
IGVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMikKLXsK
LSAgICBpZiAoYXV0byBjb2RlTG9jYXRpb24gPSBlcnJvci5jb2RlTG9jYXRpb24oKSkgewotICAg
ICAgICBpZiAoYXV0byBzb3VyY2UgPSBzb3VyY2VGcm9tTmFtZVNwYWNlKGNvZGVMb2NhdGlvbi5u
YW1lU3BhY2UoKSwgc291cmNlMSwgc291cmNlMikpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZUFu
ZENvbHVtbiA9IGxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KCpzb3VyY2UsIGVycm9yLmNv
ZGVMb2NhdGlvbigpLnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcobGluZUFuZENvbHVtbi5saW5lLCAnOicsIGxpbmVBbmRDb2x1bW4uY29sdW1uLCAiOiAiLCBl
cnJvci5tZXNzYWdlKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlcnJvci5tZXNz
YWdlKCk7Ci19Ci0KLXZvaWQgTGV4ZXI6OnNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKQotewot
ICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAgICBp
ZiAoaXNXaGl0ZXNwYWNlKG1fc3RyaW5nVmlld1ttX29mZnNldF0pKQotICAgICAgICAgICAgKytt
X29mZnNldDsKLSAgICAgICAgZWxzZSBpZiAobV9zdHJpbmdWaWV3W21fb2Zmc2V0XSA9PSAnLycg
JiYgbV9vZmZzZXQgKyAxIDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBp
ZiAobV9zdHJpbmdWaWV3W21fb2Zmc2V0ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gTGluZSBjb21tZW50Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgXHJcbiB0aGlzIG1ha2VzIHRoZSBj
b21tZW50IGVuZCBvbiB0aGUgXHIuIEl0IGlzIGZpbmUsIGFzIHRoZSBcbiBhZnRlciB0aGF0IGlz
IHNpbXBsZSB3aGl0ZXNwYWNlLgotICAgICAgICAgICAgICAgIGZvciAoIDsgbV9vZmZzZXQgPCBt
X3N0cmluZ1ZpZXcubGVuZ3RoKCkgJiYgIWlzTmV3bGluZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRd
KTsgKyttX29mZnNldCkgeyB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RyaW5nVmlld1tt
X29mZnNldCArIDFdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIExvbmcgY29tbWVudAot
ICAgICAgICAgICAgICAgIGZvciAoIDsgbV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkg
OyArK21fb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0cmluZ1ZpZXdbbV9v
ZmZzZXRdID09ICcqJyAmJiBtX29mZnNldCArIDEgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkgJiYg
bV9zdHJpbmdWaWV3W21fb2Zmc2V0ICsgMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX29mZnNldCArPSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2Y4NDMxNzFkMjE4OTI0NjQ0NmVhMGI1ZDMxMTQ3M2Q2NTA4YmFiNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgTGV4ZXI7
Ci0KLXN0cnVjdCBUb2tlbiB7Ci0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbjsKLSAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgSW50TGl0ZXJhbCwKLSAgICAgICAg
VWludExpdGVyYWwsCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgU3RydWN0LAotICAg
ICAgICBUeXBlZGVmLAotICAgICAgICBFbnVtLAotICAgICAgICBPcGVyYXRvciwKLSAgICAgICAg
SWYsCi0gICAgICAgIEVsc2UsCi0gICAgICAgIENvbnRpbnVlLAotICAgICAgICBCcmVhaywKLSAg
ICAgICAgU3dpdGNoLAotICAgICAgICBDYXNlLAotICAgICAgICBEZWZhdWx0LAotICAgICAgICBG
YWxsdGhyb3VnaCwKLSAgICAgICAgRm9yLAotICAgICAgICBXaGlsZSwKLSAgICAgICAgRG8sCi0g
ICAgICAgIFJldHVybiwKLSAgICAgICAgTnVsbCwKLSAgICAgICAgVHJ1ZSwKLSAgICAgICAgRmFs
c2UsCi0gICAgICAgIENvbnN0YW50LAotICAgICAgICBEZXZpY2UsCi0gICAgICAgIFRocmVhZGdy
b3VwLAotICAgICAgICBUaHJlYWQsCi0gICAgICAgIFNwYWNlLAotICAgICAgICBWZXJ0ZXgsCi0g
ICAgICAgIEZyYWdtZW50LAotICAgICAgICBDb21wdXRlLAotICAgICAgICBOdW1UaHJlYWRzLAot
ICAgICAgICBTVkluc3RhbmNlSUQsCi0gICAgICAgIFNWVmVydGV4SUQsCi0gICAgICAgIFBTaXpl
LAotICAgICAgICBTVlBvc2l0aW9uLAotICAgICAgICBTVklzRnJvbnRGYWNlLAotICAgICAgICBT
VlNhbXBsZUluZGV4LAotICAgICAgICBTVklubmVyQ292ZXJhZ2UsCi0gICAgICAgIFNWVGFyZ2V0
LAotICAgICAgICBTVkRlcHRoLAotICAgICAgICBTVkNvdmVyYWdlLAotICAgICAgICBTVkRpc3Bh
dGNoVGhyZWFkSUQsCi0gICAgICAgIFNWR3JvdXBJRCwKLSAgICAgICAgU1ZHcm91cEluZGV4LAot
ICAgICAgICBTVkdyb3VwVGhyZWFkSUQsCi0gICAgICAgIEF0dHJpYnV0ZSwKLSAgICAgICAgUmVn
aXN0ZXIsCi0gICAgICAgIFNwZWNpYWxpemVkLAotICAgICAgICBOYXRpdmUsCi0gICAgICAgIFJl
c3RyaWN0ZWQsCi0gICAgICAgIFVuZGVyc2NvcmUsCi0gICAgICAgIEF1dG8sCi0gICAgICAgIFBy
b3RvY29sLAotICAgICAgICBDb25zdCwKLSAgICAgICAgU3RhdGljLAotICAgICAgICBRdWFsaWZp
ZXIsCi0gICAgICAgIElkZW50aWZpZXIsCi0gICAgICAgIE9wZXJhdG9yTmFtZSwKLSAgICAgICAg
RXF1YWxzU2lnbiwKLSAgICAgICAgU2VtaWNvbG9uLAotICAgICAgICBMZWZ0Q3VybHlCcmFja2V0
LAotICAgICAgICBSaWdodEN1cmx5QnJhY2tldCwKLSAgICAgICAgQ29sb24sCi0gICAgICAgIENv
bW1hLAotICAgICAgICBMZWZ0UGFyZW50aGVzaXMsCi0gICAgICAgIFJpZ2h0UGFyZW50aGVzaXMs
Ci0gICAgICAgIFNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBMZWZ0U3F1YXJlQnJhY2tldCwK
LSAgICAgICAgUmlnaHRTcXVhcmVCcmFja2V0LAotICAgICAgICBTdGFyLAotICAgICAgICBMZXNz
VGhhblNpZ24sCi0gICAgICAgIEdyZWF0ZXJUaGFuU2lnbiwKLSAgICAgICAgRnVsbFN0b3AsCi0g
ICAgICAgIFBsdXNFcXVhbHMsCi0gICAgICAgIE1pbnVzRXF1YWxzLAotICAgICAgICBUaW1lc0Vx
dWFscywKLSAgICAgICAgRGl2aWRlRXF1YWxzLAotICAgICAgICBNb2RFcXVhbHMsCi0gICAgICAg
IFhvckVxdWFscywKLSAgICAgICAgQW5kRXF1YWxzLAotICAgICAgICBPckVxdWFscywKLSAgICAg
ICAgUmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgTGVmdFNoaWZ0RXF1YWxzLAotICAgICAgICBQ
bHVzUGx1cywKLSAgICAgICAgTWludXNNaW51cywKLSAgICAgICAgQXJyb3csCi0gICAgICAgIFF1
ZXN0aW9uTWFyaywKLSAgICAgICAgT3JPciwKLSAgICAgICAgQW5kQW5kLAotICAgICAgICBPciwK
LSAgICAgICAgWG9yLAotICAgICAgICBBbmQsCi0gICAgICAgIExlc3NUaGFuT3JFcXVhbFRvLAot
ICAgICAgICBHcmVhdGVyVGhhbk9yRXF1YWxUbywKLSAgICAgICAgRXF1YWxDb21wYXJpc29uLAot
ICAgICAgICBOb3RFcXVhbCwKLSAgICAgICAgUmlnaHRTaGlmdCwKLSAgICAgICAgTGVmdFNoaWZ0
LAotICAgICAgICBQbHVzLAotICAgICAgICBNaW51cywKLSAgICAgICAgRGl2aWRlLAotICAgICAg
ICBNb2QsCi0gICAgICAgIFRpbGRlLAotICAgICAgICBFeGNsYW1hdGlvblBvaW50LAotICAgICAg
ICBBdCwKLSAgICAgICAgRW5kT2ZGaWxlLAotICAgICAgICBJbnZhbGlkCi0gICAgfSB0eXBlIHtU
eXBlOjpJbnZhbGlkfTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0eXBlTmFtZShUeXBlKTsK
LQotICAgIGlubGluZSBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcoY29uc3QgTGV4ZXImKSBjb25zdDsK
LQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKTsKLSAgICB9Ci19OwotCi1pbmxpbmUgQ29kZUxv
Y2F0aW9uOjpDb2RlTG9jYXRpb24oY29uc3QgVG9rZW4mIHRva2VuKQotICAgIDogQ29kZUxvY2F0
aW9uKHRva2VuLmNvZGVMb2NhdGlvbikKLXsKLX0KLQotY2xhc3MgTGV4ZXIgewotcHVibGljOgot
ICAgIExleGVyKCkgPSBkZWZhdWx0OwotCi0gICAgTGV4ZXIoU3RyaW5nVmlldyBzdHJpbmdWaWV3
LCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi0gICAgICAgIDogbV9zdHJpbmdWaWV3KHN0cmlu
Z1ZpZXcpCi0gICAgICAgICwgbV9uYW1lU3BhY2UobmFtZVNwYWNlKQotICAgIHsKLSAgICAgICAg
c2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOwotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBj
b25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsxXSA9IGNvbnN1
bWVUb2tlbkZyb21TdHJlYW0oKTsKLSAgICB9Ci0KLSAgICBMZXhlcihjb25zdCBMZXhlciYpID0g
ZGVsZXRlOwotICAgIExleGVyKExleGVyJiYpID0gZGVmYXVsdDsKLQotICAgIExleGVyJiBvcGVy
YXRvcj0oY29uc3QgTGV4ZXImKSA9IGRlbGV0ZTsKLSAgICBMZXhlciYgb3BlcmF0b3I9KExleGVy
JiYpID0gZGVmYXVsdDsKLQotCi0gICAgVG9rZW4gY29uc3VtZVRva2VuKCkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XTsKLSAgICAg
ICAgbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlckluZGV4XSA9IGNvbnN1bWVUb2tlbkZyb21TdHJl
YW0oKTsKLSAgICAgICAgbV9yaW5nQnVmZmVySW5kZXggPSAobV9yaW5nQnVmZmVySW5kZXggKyAx
KSAlIDI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgVG9rZW4gcGVlaygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyW21fcmluZ0J1ZmZlcklu
ZGV4XTsKLSAgICB9Ci0KLSAgICBUb2tlbiBwZWVrRnVydGhlcigpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9yaW5nQnVmZmVyWyhtX3JpbmdCdWZmZXJJbmRleCArIDEpICUgMl07Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGlzCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODM1NwotICAgIHN0cnVjdCBT
dGF0ZSB7Ci0gICAgICAgIFRva2VuIHJpbmdCdWZmZXJbMl07Ci0gICAgICAgIHVuc2lnbmVkIHJp
bmdCdWZmZXJJbmRleDsKLSAgICAgICAgdW5zaWduZWQgb2Zmc2V0OwotICAgIH07Ci0KLSAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBTdGF0ZSBzdGF0ZTsKLSAgICAgICAg
c3RhdGUucmluZ0J1ZmZlclswXSA9IG1fcmluZ0J1ZmZlclswXTsKLSAgICAgICAgc3RhdGUucmlu
Z0J1ZmZlclsxXSA9IG1fcmluZ0J1ZmZlclsxXTsKLSAgICAgICAgc3RhdGUucmluZ0J1ZmZlcklu
ZGV4ID0gbV9yaW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIHN0YXRlLm9mZnNldCA9IG1fb2Zmc2V0
OwotICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdGF0ZShjb25z
dCBTdGF0ZSYgc3RhdGUpCi0gICAgewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBzdGF0ZS5y
aW5nQnVmZmVyWzBdOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBzdGF0ZS5yaW5nQnVmZmVy
WzFdOwotICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9IHN0YXRlLnJpbmdCdWZmZXJJbmRleDsK
LSAgICAgICAgbV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQ7Ci0KLSAgICB9Ci0KLSAgICB2b2lkIHNl
dFN0YXRlKFN0YXRlJiYgc3RhdGUpCi0gICAgewotICAgICAgICBtX3JpbmdCdWZmZXJbMF0gPSBX
VEZNb3ZlKHN0YXRlLnJpbmdCdWZmZXJbMF0pOwotICAgICAgICBtX3JpbmdCdWZmZXJbMV0gPSBX
VEZNb3ZlKHN0YXRlLnJpbmdCdWZmZXJbMV0pOwotICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9
IFdURk1vdmUoc3RhdGUucmluZ0J1ZmZlckluZGV4KTsKLSAgICAgICAgbV9vZmZzZXQgPSBXVEZN
b3ZlKHN0YXRlLm9mZnNldCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Z1bGx5Q29uc3VtZWQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBlZWsoKS50eXBlID09IFRva2VuOjpUeXBlOjpF
bmRPZkZpbGU7Ci0gICAgfQotCi0gICAgU3RyaW5nIGVycm9yU3RyaW5nKGNvbnN0IFRva2VuJiB0
b2tlbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIlBhcnNlIGVycm9yIGF0IGxpbmUgIiwgbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZz
ZXQobV9zdHJpbmdWaWV3LCB0b2tlbi5zdGFydE9mZnNldCgpKS5saW5lLCAiOiAiLCBtZXNzYWdl
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RyaW5nIGVycm9yU3RyaW5nKEVycm9yLCBjb25zdCBT
dHJpbmcmIHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMiA9IG51bGxwdHIpOwotCi0gICAg
QVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0K
LQotcHJpdmF0ZToKLSAgICBmcmllbmQgc3RydWN0IFRva2VuOwotICAgIFRva2VuIGNvbnN1bWVU
b2tlbkZyb21TdHJlYW0oKTsKLQotICAgIHZvaWQgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygp
OwotCi0gICAgc3RydWN0IExpbmVBbmRDb2x1bW4gewotICAgICAgICB1bnNpZ25lZCBsaW5lOwot
ICAgICAgICB1bnNpZ25lZCBjb2x1bW47Ci0gICAgfTsKLSAgICBzdGF0aWMgTGluZUFuZENvbHVt
biBsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldChjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWdu
ZWQgb2Zmc2V0KTsKLQotICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwotICAgIFRva2VuIG1f
cmluZ0J1ZmZlclsyXTsKLSAgICB1bnNpZ25lZCBtX3JpbmdCdWZmZXJJbmRleCB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKLSAgICBBU1Q6Ok5hbWVTcGFjZSBtX25hbWVTcGFj
ZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLVN0cmluZ1ZpZXcg
VG9rZW46OnN0cmluZ1ZpZXcoY29uc3QgTGV4ZXImIGxleGVyKSBjb25zdAotewotICAgIHJldHVy
biBsZXhlci5tX3N0cmluZ1ZpZXcuc3Vic3RyaW5nKGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgp
LCBjb2RlTG9jYXRpb24uZW5kT2Zmc2V0KCkgLSBjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2Vy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlNzFjZjU2MjAzNGQ1NzQ3ZWQ5
YWUzMzQwNGYwMGMxZDE2N2Y4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVy
YWxUeXBlQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTElu
dGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi1zdGF0aWMgQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24qIGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihBU1Q6OlJlc29s
dmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICBpZiAoIWlzPEFTVDo6VHlwZVJlZmVy
ZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJl
bmNlPihyZXNvbHZhYmxlVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKCFpczxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotfQotCi1jbGFzcyBM
aXRlcmFsVHlwZUNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci1wcml2YXRlOgot
ICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0
TmF0aXZlVHlwZURlY2xhcmF0aW9uKGZsb2F0TGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQo
bmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi0+Y2FuUmVwcmVzZW50RmxvYXQoKShmbG9hdExpdGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJiBpbnRlZ2VyTGl0
ZXJhbFR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFy
YXRpb24gPSBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24oaW50ZWdlckxpdGVyYWxUeXBlKTsKLSAg
ICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRp
dmVUeXBlRGVjbGFyYXRpb24tPmNhblJlcHJlc2VudEludGVnZXIoKShpbnRlZ2VyTGl0ZXJhbFR5
cGUudmFsdWUoKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBnZXROYXRpdmVUeXBlRGVj
bGFyYXRpb24odW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0
aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi0+Y2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKCkodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUudmFsdWUoKSkpOwotICAgIH0KLX07Ci0jZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKLQotdm9p
ZCBjaGVja0xpdGVyYWxUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgTGl0ZXJhbFR5cGVDaGVja2VyKCkuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjFjYWJmODhhODkwYjM3MDYzZThhMjAwYTUwZDgxZDJlNjQ1NzkwZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMo
UHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFt
ZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMGRhODRiOGY0
MTIwMWFmZWI2MDhkNDE0MTA2NWRkZTE5NGQ0ZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xOYW1lQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURl
ZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotTmFtZUNvbnRleHQ6Ok5hbWVDb250ZXh0KE5hbWVDb250ZXh0KiBw
YXJlbnQpCi0gICAgOiBtX3BhcmVudChwYXJlbnQpCi17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9u
KQotewotICAgIGlmIChhdXRvIGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHModHlwZURlZmluaXRp
b24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNh
dGUgbmFtZSBpbiBwcm9ncmFtIiwgKmV4aXN0aW5nKSk7Ci0gICAgdHlwZURlZmluaXRpb24uc2V0
TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90
eXBlc1tpbmRleF0uYWRkKHR5cGVEZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHR5cGVEZWZpbml0
aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNv
bnRleHQ6OmFkZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24p
Ci17Ci0gICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BMZXZlbEV4aXN0cyhzdHJ1Y3R1cmVEZWZp
bml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVw
bGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCAqZXhpc3RpbmcpKTsKLSAgICBzdHJ1Y3R1cmVEZWZp
bml0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fdHlwZXNbaW5kZXhdLmFkZChzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUoKSwgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBB
U1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
JiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi17Ci0gICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BM
ZXZlbEV4aXN0cyhlbnVtZXJhdGlvbkRlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsICpleGlz
dGluZykpOwotICAgIGVudW1lcmF0aW9uRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50
TmFtZVNwYWNlKTsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3Vy
cmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoZW51
bWVyYXRpb25EZWZpbml0aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpOYW1lZFR5cGU+LCAxPigpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGVudW1lcmF0aW9uRGVmaW5pdGlvbik7
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0
OjphZGQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAg
ICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7
Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhmdW5jdGlvbkRlZmluaXRpb24ubmFt
ZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFt
ZSBpbiBwcm9ncmFtLiIsIHR5cGUtPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgZnVuY3Rpb25EZWZp
bml0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0
ID0gbV9mdW5jdGlvbnNbaW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpLCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPigp
KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbkRlZmluaXRpb24p
OwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4
dDo6YWRkKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbikKLXsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3Vy
cmVudE5hbWVTcGFjZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24o
KSkpOwotICAgIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVu
dE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX2Z1bmN0aW9uc1tpbmRleF0uYWRkKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPigpKTsKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmFwcGVuZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICByZXR1cm4g
eyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGF1dG8g
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBp
ZiAoYXV0byogZnVuY3Rpb24gPSBzZWFyY2hGdW5jdGlvbnMobmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRl
IG5hbWUgaW4gcHJvZ3JhbS4iLCBmdW5jdGlvbi0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAg
YXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPigp
KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChuYXRpdmVUeXBlRGVjbGFyYXRp
b24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29u
dGV4dDo6YWRkKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikK
LXsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiB7IH07Ci0gICAgaWYgKGF1dG8qIGRlY2xhcmF0aW9uID0gbG9jYWxFeGlzdHModmFy
aWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgZGVjbGFyYXRpb24tPmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3ZhcmlhYmxlcy5hZGQoU3RyaW5nKHZhcmlh
YmxlRGVjbGFyYXRpb24ubmFtZSgpKSwgJnZhcmlhYmxlRGVjbGFyYXRpb24pOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBOYW1l
Q29udGV4dDo6Z2V0VHlwZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBBU1Q6Ok5hbWVTcGFjZSBmcm9t
TmFtZXNwYWNlKQotewotICAgIC8vIE5hbWVkIHR5cGVzIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGlu
IHRoZSBnbG9iYWwgbmFtZSBjb250ZXh0LgotICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0
dXJuIG1fcGFyZW50LT5nZXRUeXBlcyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4gcmVzdWx0OwotCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7
Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYg
KGl0ZXJhdG9yICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byB0
eXBlIDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsK
LSAgICB9Ci0KLSAgICBpZiAoZnJvbU5hbWVzcGFjZSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRh
cmRMaWJyYXJ5KSB7Ci0gICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6
TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpdGVyYXRvciA9IG1fdHlwZXNb
aW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4
XS5lbmQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFsdWUp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IE5hbWVDb250ZXh0OjpnZXRGdW5jdGlvbnMo
Y29uc3QgU3RyaW5nJiBuYW1lLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKQotewotICAg
IC8vIEZ1bmN0aW9ucyBjYW4gb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29u
dGV4dC4KLSAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVudC0+Z2V0RnVu
Y3Rpb25zKG5hbWUsIGZyb21OYW1lc3BhY2UpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gcmVzdWx0OwotCi0gICAgdW5z
aWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbU5hbWVzcGFjZSk7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChp
dGVyYXRvciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgZm9yIChhdXRv
IHR5cGUgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUp
OwotICAgIH0KLQotICAgIGlmIChmcm9tTmFtZXNwYWNlICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFu
ZGFyZExpYnJhcnkpIHsKLSAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNU
OjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgIGl0ZXJhdG9yID0gbV9mdW5j
dGlvbnNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2Z1bmN0
aW9uc1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0
b3ItPnZhbHVlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1BU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24qIE5hbWVDb250ZXh0OjpnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1fdmFyaWFibGVzLmVuZCgpKSB7Ci0gICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAg
ICAgICAgIHJldHVybiBtX3BhcmVudC0+Z2V0VmFyaWFibGUobmFtZSk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1BU1Q6
Ok5hbWVkVHlwZSogTmFtZUNvbnRleHQ6OnNlYXJjaFR5cGVzKFN0cmluZyYgbmFtZSkgY29uc3QK
LXsKLSAgICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICBpZiAobV9jdXJyZW50TmFtZVNwYWNlID09
IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0
eXBlcyA6IG1fdHlwZXMpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IHR5cGVzLmZpbmQobmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoaXRlciAhPSB0eXBlcy5lbmQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzW2luZGV4XS5m
aW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKQotICAgICAg
ICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaXRlciA9
IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV90eXBlc1tpbmRl
eF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29udGV4
dDo6c2VhcmNoRnVuY3Rpb25zKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1f
cGFyZW50KTsKLSAgICBpZiAobV9jdXJyZW50TmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpT
dGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbnMgOiBtX2Z1bmN0
aW9ucykgewotICAgICAgICAgICAgYXV0byBpdGVyID0gZnVuY3Rpb25zLmZpbmQobmFtZSk7Ci0g
ICAgICAgICAgICBpZiAoaXRlciAhPSBmdW5jdGlvbnMuZW5kKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnNbaW5kZXhd
LmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKQot
ICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0gICAgaW5kZXggPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAg
aXRlciA9IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1f
ZnVuY3Rpb25zW2luZGV4XS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5n
ZXQoKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1zdGQ6Om9wdGlvbmFsPENvZGVMb2Nh
dGlvbj4gTmFtZUNvbnRleHQ6OnRvcExldmVsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsK
LSAgICBpZiAoYXV0byogdHlwZSA9IHNlYXJjaFR5cGVzKG5hbWUpKQotICAgICAgICByZXR1cm4g
dHlwZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVu
Y3Rpb25zKG5hbWUpKQotICAgICAgICByZXR1cm4gZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigpOwot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLUFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiog
TmFtZUNvbnRleHQ6OmxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9wYXJlbnQpOwotICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVzLmZpbmQobmFtZSk7Ci0g
ICAgaWYgKGl0ZXIgIT0gbV92YXJpYWJsZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52
YWx1ZTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDA3ZDUwNmEyYzdk
MTRkNDIwM2JiZDYxNWNiZTQ2ZWNhMWUyNmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZUNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
TmFtZWRUeXBlOwotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVEZWZpbml0
aW9uOwotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5p
dGlvbjsKLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb247Ci1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBWYXJpYWJsZURl
Y2xhcmF0aW9uOwotCi19Ci0KLWNsYXNzIE5hbWVDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBOYW1l
Q29udGV4dChOYW1lQ29udGV4dCogcGFyZW50ID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEN1
cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgY3VycmVudE5hbWVTcGFjZSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbV9wYXJlbnQpOwotICAgICAgICBtX2N1cnJlbnROYW1lU3BhY2UgPSBj
dXJyZW50TmFtZVNwYWNlOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQo
QVNUOjpUeXBlRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBh
ZGQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YWRkKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQs
IEVycm9yPiBhZGQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gYWRkKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotCi0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiBnZXRUeXBlcyhjb25z
dCBTdHJpbmcmLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKTsKLSAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBnZXRGdW5j
dGlvbnMoY29uc3QgU3RyaW5nJiwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7Ci0gICAg
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmKTsKLQot
cHJpdmF0ZToKLSAgICBBU1Q6Ok5hbWVkVHlwZSogc2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBj
b25zdDsKLSAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHNlYXJjaEZ1bmN0aW9ucyhTdHJp
bmcmIG5hbWUpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8Q29kZUxvY2F0aW9uPiB0b3BMZXZl
bEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
biogbG9jYWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLQotICAgIEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+PiBtX3R5
cGVzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPj4gbV9mdW5j
dGlvbnNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbio+IG1fdmFyaWFibGVzOwotICAgIE5hbWVDb250ZXh0KiBtX3BhcmVu
dDsKLSAgICBBU1Q6Ok5hbWVTcGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFj
ZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzAwY2E1NTk1ZGQ2NDgxYzAxY2FiN2NlZjU2MDVhYWJhY2RmNDNiYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTE5hbWVSZXNvbHZlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90RXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3Au
aCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
SWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAi
V0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUg
IldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgotI2luY2x1ZGUgIldITFNMU2NvcGVkU2V0QWRk
ZXIuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1OYW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lQ29udGV4
dCYgbmFtZUNvbnRleHQpCi0gICAgOiBtX25hbWVDb250ZXh0KG5hbWVDb250ZXh0KQotewotfQot
Ci1OYW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lUmVzb2x2ZXImIHBhcmVudFJlc29sdmVy
LCBOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQpCi0gICAgOiBtX25hbWVDb250ZXh0KG5hbWVDb250
ZXh0KQotICAgICwgbV9wYXJlbnROYW1lUmVzb2x2ZXIoJnBhcmVudFJlc29sdmVyKQotICAgICwg
bV9jdXJyZW50TmFtZVNwYWNlKHBhcmVudFJlc29sdmVyLm1fY3VycmVudE5hbWVTcGFjZSkKLXsK
LX0KLQotTmFtZVJlc29sdmVyOjp+TmFtZVJlc29sdmVyKCkKLXsKLSAgICBpZiAoaGFzRXJyb3Io
KSAmJiBtX3BhcmVudE5hbWVSZXNvbHZlcikKLSAgICAgICAgbV9wYXJlbnROYW1lUmVzb2x2ZXIt
PnNldEVycm9yKHJlc3VsdCgpLmVycm9yKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAgIFNjb3BlZFNldEFk
ZGVyPEFTVDo6VHlwZVJlZmVyZW5jZSo+IGFkZGVyKG1fdHlwZVJlZmVyZW5jZXMsICZ0eXBlUmVm
ZXJlbmNlKTsKLSAgICBpZiAoIWFkZGVyLmlzTmV3RW50cnkoKSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiQ2Fubm90IHVzZSByZWN1cnNpdmUgdHlwZSBhcmd1bWVudHMuIiwgdHlwZVJlZmVy
ZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmlz
aXRvcjo6dmlzaXQodHlwZVJlZmVyZW5jZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKSAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MSBTaG91
bGRuJ3Qgd2Uga25vdyBieSBub3cgd2hldGhlciB0aGUgdHlwZSBoYXMgYmVlbiByZXNvbHZlZCBv
ciBub3Q/Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY2FuZGlkYXRlcyA9IG1fbmFtZUNv
bnRleHQuZ2V0VHlwZXModHlwZVJlZmVyZW5jZS5uYW1lKCksIG1fY3VycmVudE5hbWVTcGFjZSk7
Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVzKQotICAgICAgICBWaXNpdG9y
Ojp2aXNpdChjYW5kaWRhdGUpOwotICAgIGlmIChhdXRvIHJlc3VsdCA9IHJlc29sdmVUeXBlT3Zl
cmxvYWRJbXBsKGNhbmRpZGF0ZXMsIHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKSkKLSAg
ICAgICAgdHlwZVJlZmVyZW5jZS5zZXRSZXNvbHZlZFR5cGUoKnJlc3VsdCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0eXBlIGFyZ3VtZW50cy4i
LCB0eXBlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYg
ZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIE5hbWVDb250ZXh0IG5ld05hbWVDb250ZXh0KCZt
X25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBu
ZXdOYW1lQ29udGV4dCk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bi50eXBlKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9y
IChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKQotICAg
ICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAg
bmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxv
Y2soKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykK
LXsKLSAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFt
ZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05h
bWVSZXNvbHZlci5WaXNpdG9yOjp2aXNpdChibG9jayk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVy
Ojp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHsKLSAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRl
eHQoJm1fbmFtZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVy
KCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9y
QW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICB9Ci0gICAgaWYgKGhhc0Vycm9yKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0g
ICAgICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAg
TmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAg
ICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9k
eSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OldoaWxlTG9v
cCYgd2hpbGVMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0
aW9uYWwoKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5h
bWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIg
bmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFtZVJlc29sdmVy
LmNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBOYW1lUmVz
b2x2ZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICB7Ci0gICAg
ICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFt
ZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBu
ZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAg
IH0KLQotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19
Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0g
ICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNv
bHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVz
b2x2ZXIuVmlzaXRvcjo6dmlzaXQoZm9yTG9vcCk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0g
ICAgaWYgKCFtX25hbWVDb250ZXh0LmFkZCh2YXJpYWJsZURlY2xhcmF0aW9uKSkgewotICAgICAg
ICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRlIHZhcmlhYmxlcy4iLCB2
YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgVmlzaXRvcjo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbik7Ci19Ci0KLXZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVy
ZW5jZSkKLXsKLSAgICBpZiAodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGF1dG8qIHZhcmlhYmxlID0gbV9uYW1lQ29udGV4dC5nZXRWYXJp
YWJsZSh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCkpKQotICAgICAgICB2YXJpYWJsZVJlZmVyZW5j
ZS5zZXRWYXJpYWJsZSgqdmFyaWFibGUpOwotICAgIGVsc2UgewotICAgICAgICBzZXRFcnJvcihF
cnJvcigiQ2Fubm90IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLiIsIHZhcmlhYmxlUmVm
ZXJlbmNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24p
Ci17Ci0gICAgaWYgKGlzPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFz
ZSgpKSkgewotICAgICAgICBhdXRvJiB2YXJpYWJsZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6
VmFyaWFibGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgaWYgKCFt
X25hbWVDb250ZXh0LmdldFZhcmlhYmxlKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSkpIHsKLSAg
ICAgICAgICAgIGF1dG8gYmFzZU5hbWUgPSB2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCk7Ci0gICAg
ICAgICAgICBhdXRvIGVudW1lcmF0aW9uVHlwZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKGJh
c2VOYW1lLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgICAgICAgICAgaWYgKGVudW1lcmF0aW9u
VHlwZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlw
ZSA9IGVudW1lcmF0aW9uVHlwZXNbMF07Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICBBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOwotICAgICAgICAgICAgICAgICAgICBhdXRv
IG1lbWJlck5hbWUgPSBkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZpbml0aW9uLm1lbWJlckJ5TmFt
ZShtZW1iZXJOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwgPSBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6d3JhcChkb3RF
eHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKGJhc2VOYW1lKSwgV1RGTW92ZShtZW1i
ZXJOYW1lKSwgZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+
KGRvdEV4cHJlc3Npb24sIFdURk1vdmUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk5vIGVudW0gbWVtYmVyIG1hdGNoZXMgdGhl
IHVzZWQgbmFtZS4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25UeXBlcy5pc0VtcHR5KCkpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQoZG90RXhwcmVzc2lvbik7Ci19Ci0K
LXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIGlmIChlbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBl
bnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyhlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwubGVmdCgpLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChlbnVtZXJhdGlv
blR5cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MzM1IFRoaXMgbmVlZHMgdG8gd29yayB3aXRoIHR5
cGVkZWYnZWQgZW51bXMuCi0gICAgICAgIEFTVDo6TmFtZWRUeXBlJiB0eXBlID0gZW51bWVyYXRp
b25UeXBlc1swXTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0
eXBlKSkgewotICAgICAgICAgICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBl
KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24u
bWVtYmVyQnlOYW1lKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yaWdodCgpKSkgewotICAgICAg
ICAgICAgICAgIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5zZXRFbnVtZXJhdGlvbk1lbWJlcihl
bnVtZXJhdGlvbkRlZmluaXRpb24sICptZW1iZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHNldEVycm9yKEVycm9yKCJD
YW5ub3QgcmVzb2x2ZSBlbnVtZXJhdGlvbiBtZW1iZXIgbGl0ZXJhbC4iLCBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZp
c2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbikKLXsKLSAgICBOYW1lQ29udGV4dCBuZXdOYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7
Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcihuZXdOYW1lQ29udGV4dCk7Ci0gICAg
bmV3TmFtZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24p
OwotfQotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODE2NyBNYWtlIHN1cmUgYWxsIHRoZSBuYW1lcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi0KLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0mIHByb2dyYW0s
IE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAgIGZvciAoYXV0byYgdHlwZURlZmlu
aXRpb24gOiBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZl
ci5zZXRDdXJyZW50TmFtZVNwYWNlKHR5cGVEZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsK
LSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbik7
Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVy
biBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgc3RydWN0dXJl
RGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBu
YW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShzdHJ1Y3R1cmVEZWZpbml0aW9uLmdldCgp
Lm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChz
dHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigp
KQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAg
Zm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVm
aW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShl
bnVtZXJhdGlvbkRlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVz
b2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAg
IGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVz
b2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0
aW9uIDogcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJl
c29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2UobmF0aXZlVHlwZURlY2xhcmF0aW9uLmdldCgpLm5h
bWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChuYXRp
dmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZVR5cGVOYW1lc0lu
RnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQot
ewotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRl
ZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2Uo
ZnVuY3Rpb25EZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29s
dmVyLmNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAo
bmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVy
LnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24gOiBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFt
ZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2UobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5n
ZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlz
aXQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIu
aGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0g
ICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVS
ZXNvbHZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWE0ZWRiZDZhNzg3YzNi
ZTE0OTE0NjkwZTJhN2U4MjdjMDg2NDc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TmFtZVJlc29sdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUg
IldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotY2xhc3MgUHJvZ3JhbTsKLQotY2xhc3MgTmFtZVJlc29sdmVyIDogcHVibGljIFZpc2l0b3Ig
ewotcHVibGljOgotICAgIE5hbWVSZXNvbHZlcihOYW1lQ29udGV4dCYpOwotICAgIE5hbWVSZXNv
bHZlcihOYW1lUmVzb2x2ZXImLCBOYW1lQ29udGV4dCYpOwotCi0gICAgdmlydHVhbCB+TmFtZVJl
c29sdmVyKCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2Ug
bmFtZVNwYWNlKSB7IG1fY3VycmVudE5hbWVTcGFjZSA9IG5hbWVTcGFjZTsgfQotCi1wcml2YXRl
OgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVt
ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVS
ZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwm
KSBvdmVycmlkZTsKLQotICAgIE5hbWVDb250ZXh0JiBtX25hbWVDb250ZXh0OwotICAgIEhhc2hT
ZXQ8QVNUOjpUeXBlUmVmZXJlbmNlKj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBOYW1lUmVzb2x2
ZXIqIG1fcGFyZW50TmFtZVJlc29sdmVyIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmFtZVNwYWNl
IG1fY3VycmVudE5hbWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsK
LX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlTmFtZXNJblR5cGVzKFByb2dyYW0m
LCBOYW1lUmVzb2x2ZXImKTsKLUV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlVHlwZU5hbWVz
SW5GdW5jdGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZDQ3MjE2YzIz
MmM5ZWUwYmRhZTYyODBjNDcwMTFkZGYzNTU5ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA4OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5o
IgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dy
YW0uaCIKLSNpbmNsdWRlIDx3dGYvZHRvYS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLSNkZWZpbmUgUEFSU0UobmFt
ZSwgZWxlbWVudCwgLi4uKSBcCi0gICAgYXV0byBuYW1lID0gcGFyc2UjI2VsZW1lbnQoX19WQV9B
UkdTX18pOyBcCi0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChuYW1lLmVycm9yKCkpOyBcCi0KLSNkZWZpbmUgQ09OU1VNRV9UWVBFKG5hbWUsIHR5cGUpIFwK
LSAgICBhdXRvIG5hbWUgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6dHlwZSk7IFwKLSAgICBp
ZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7
Ci0KLSNkZWZpbmUgUEVFSyhuYW1lKSBcCi0gICAgYXV0byBuYW1lID0gcGVlaygpOyBcCi0gICAg
aWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkp
OwotCi0jZGVmaW5lIFBFRUtfRlVSVEhFUihuYW1lKSBcCi0gICAgYXV0byBuYW1lID0gcGVla0Z1
cnRoZXIoKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobmFtZS5lcnJvcigpKTsKLQotYXV0byBQYXJzZXI6OnBhcnNlKFByb2dyYW0mIHByb2dyYW0s
IFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgUGFyc2luZ01vZGUgbW9kZSwgQVNUOjpOYW1lU3BhY2Ug
bmFtZVNwYWNlKSAtPiBFeHBlY3RlZDx2b2lkLCBFcnJvcj4KLXsKLSAgICBtX2xleGVyID0gTGV4
ZXIoc3RyaW5nVmlldywgbmFtZVNwYWNlKTsKLSAgICBtX21vZGUgPSBtb2RlOwotCi0gICAgd2hp
bGUgKCFtX2xleGVyLmlzRnVsbHlDb25zdW1lZCgpKSB7Ci0gICAgICAgIGF1dG8gdG9rZW4gPSBt
X2xleGVyLnBlZWsoKTsKLSAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7Ci0gICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6OkludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpTZW1pY29sb246Ci0gICAgICAgICAgICBtX2xleGVyLmNvbnN1
bWVUb2tlbigpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5
cGU6OlR5cGVkZWY6IHsKLSAgICAgICAgICAgIGF1dG8gdHlwZURlZmluaXRpb24gPSBwYXJzZVR5
cGVEZWZpbml0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIXR5cGVEZWZpbml0aW9uKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0eXBlRGVmaW5pdGlvbi5lcnJvcigpKTsK
LSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgq
dHlwZURlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpTdHJ1Y3Q6IHsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0dXJlRGVmaW5pdGlvbiA9IHBhcnNl
U3RydWN0dXJlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVEZWZpbml0
aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChzdHJ1Y3R1cmVEZWZp
bml0aW9uLmVycm9yKCkpOwotICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFt
LmFwcGVuZChXVEZNb3ZlKCpzdHJ1Y3R1cmVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAo
IWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBw
ZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RW51bTogewotICAgICAgICAgICAgYXV0byBlbnVtZXJh
dGlvbkRlZmluaXRpb24gPSBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgICAgICAg
ICAgaWYgKCFlbnVtZXJhdGlvbkRlZmluaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAg
IGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqZW51bWVyYXRpb25E
ZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TmF0
aXZlOiB7Ci0gICAgICAgICAgICBpZiAobV9tb2RlICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiJ25hdGl2ZScg
Y2FuJ3QgZXhpc3Qgb3V0c2lkZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeS4iKSk7Ci0gICAgICAg
ICAgICBhdXRvIGZ1cnRoZXJUb2tlbiA9IHBlZWtGdXJ0aGVyKCk7Ci0gICAgICAgICAgICBpZiAo
IWZ1cnRoZXJUb2tlbikKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAg
aWYgKGZ1cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VHlwZWRlZikgewotICAgICAg
ICAgICAgICAgIGF1dG8gbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gcGFyc2VOYXRpdmVUeXBlRGVj
bGFyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbikK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHBy
b2dyYW0uYXBwZW5kKFdURk1vdmUoKm5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOwotICAgICAgICAg
ICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uID0gcGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAg
ICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgICAgICBhdXRvIGZ1bmN0aW9uRGVmaW5pdGlvbiA9IHBhcnNlRnVuY3Rpb25EZWZpbml0
aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZnVuY3Rpb25EZWZpbml0aW9uLmVycm9yKCkpOwot
ICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpm
dW5jdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBQYXJzZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBUcnlUb1BlZWsgdHJ5VG9QZWVrKSAtPiBVbmV4cGVjdGVkPEVycm9yPgotewotICAgIGlm
ICh0cnlUb1BlZWsgPT0gVHJ5VG9QZWVrOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gbmV4dFRv
a2VuID0gcGVlaygpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1f
bGV4ZXIuZXJyb3JTdHJpbmcoKm5leHRUb2tlbiwgbWVzc2FnZSkpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBsZXg6ICIsIG1lc3Nh
Z2UpKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwZWVrKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9y
PgotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAodG9rZW4udHlw
ZSAhPSBUb2tlbjo6VHlwZTo6SW52YWxpZCAmJiB0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpF
bmRPZkZpbGUpCi0gICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNh
bm5vdCBjb25zdW1lIHRva2VuIl9zdHIsIFRyeVRvUGVlazo6Tm8pOwotfQotCi1hdXRvIFBhcnNl
cjo6cGVla0Z1cnRoZXIoKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0
b2tlbiA9IG1fbGV4ZXIucGVla0Z1cnRoZXIoKTsKLSAgICBpZiAodG9rZW4udHlwZSAhPSBUb2tl
bjo6VHlwZTo6SW52YWxpZCAmJiB0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpFbmRPZkZpbGUp
Ci0gICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBjb25z
dW1lIHR3byB0b2tlbnMiX3N0ciwgVHJ5VG9QZWVrOjpObyk7Ci19Ci0KLXRlbXBsYXRlIDxUb2tl
bjo6VHlwZSB0LCBUb2tlbjo6VHlwZS4uLiB0cz4KLXN0cnVjdCBUeXBlcyB7Ci0gICAgc3RhdGlj
IGJvb2wgaW5jbHVkZXMoVG9rZW46OlR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
ID09IHR5cGUgfHwgVHlwZXM8dHMuLi4+OjppbmNsdWRlcyh0eXBlKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBhcHBlbmROYW1lVG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKLSAgICB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7Ci0gICAgICAg
IFR5cGVzPHRzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwotICAgIH0KLX07Ci10ZW1wbGF0
ZSA8VG9rZW46OlR5cGUgdD4KLXN0cnVjdCBUeXBlczx0PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5j
bHVkZXMoVG9rZW46OlR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ID09IHR5cGU7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIpCi0gICAgewotICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCkp
OwotICAgIH0KLX07Ci0KLQotYm9vbCBQYXJzZXI6OnBlZWtUeXBlKFRva2VuOjpUeXBlIHR5cGUp
Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIHJldHVybiB0b2tlbi50
eXBlID09IHR5cGU7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLWJvb2wg
UGFyc2VyOjpwZWVrVHlwZXMoKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsK
LSAgICByZXR1cm4gVHlwZXM8dHlwZXMuLi4+OjppbmNsdWRlcyh0b2tlbi50eXBlKTsKLX0KLQot
c3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlKFRva2VuOjpUeXBlIHR5cGUpCi17
Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmICh0b2tlbi50eXBlID09
IHR5cGUpCi0gICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+
Ci1zdGQ6Om9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGVzKCkKLXsKLSAgICBhdXRvIHRv
a2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXMo
dG9rZW4udHlwZSkpCi0gICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsK
LSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGUo
VG9rZW46OlR5cGUgdHlwZSkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8g
dG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgIGlmICh0b2tlbi50eXBlID09IHR5
cGUpCi0gICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwobWFrZVN0cmlu
ZygiVW5leHBlY3RlZCB0b2tlbiAoZXhwZWN0ZWQgIiwgVG9rZW46OnR5cGVOYW1lKHR5cGUpLCAi
IGdvdCAiLCBUb2tlbjo6dHlwZU5hbWUodG9rZW4udHlwZSksICIpIikpOwotfQotCi10ZW1wbGF0
ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci1hdXRvIFBhcnNlcjo6Y29uc3VtZVR5cGVzKCkgLT4g
RXhwZWN0ZWQ8VG9rZW4sIEVycm9yPgotewotICAgIGF1dG8gYnVpbGRFeHBlY3RlZFN0cmluZyA9
IFsmXSgpIC0+IFN0cmluZyB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIlsiKTsKLSAgICAgICAgVHlwZXM8dHlwZXMuLi4+OjphcHBlbmRO
YW1lVG8oYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7Ci0gICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBtX2xl
eGVyLmNvbnN1bWVUb2tlbigpOwotICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRv
a2VuLnR5cGUpKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBmYWlsKG1h
a2VTdHJpbmcoIlVuZXhwZWN0ZWQgdG9rZW4gKGV4cGVjdGVkIG9uZSBvZiAiLCBidWlsZEV4cGVj
dGVkU3RyaW5nKCksICIgZ290ICIsIFRva2VuOjp0eXBlTmFtZSh0b2tlbi50eXBlKSwgIikiKSk7
Ci19Ci0KLXN0YXRpYyBpbnQgZGlnaXRWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgaWYg
KGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlciAtICcwJzsKLSAgICBpZiAoY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0g
J2YnKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyIC0gJ2EnICsgMTA7Ci0gICAgcmV0dXJuIGNo
YXJhY3RlciAtICdBJyArIDEwOwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8aW50LCBFcnJvcj4gaW50
TGl0ZXJhbFRvSW50KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAgICBib29sIG5lZ2F0ZSA9IGZhbHNl
OwotICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoIi0iX3N0cikpIHsKLSAgICAgICAgbmVnYXRlID0g
dHJ1ZTsKLSAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDEpOwotICAgIH0KLSAgICBpbnQg
YmFzZSA9IDEwOwotICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoIjB4Il9zdHIpKSB7Ci0gICAgICAg
IHRleHQgPSB0ZXh0LnN1YnN0cmluZygyKTsKLSAgICAgICAgYmFzZSA9IDE2OwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IHRleHQu
Y29kZVBvaW50cygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRpZ2l0ID0gZGlnaXRWYWx1ZShjb2Rl
UG9pbnQpOwotICAgICAgICBhdXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQg
PSByZXN1bHQgKiBiYXNlICsgZGlnaXQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQg
bGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICBpZiAo
bmVnYXRlKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9m
KHVuc2lnbmVkKSAmJiBzaXplb2YoaW50NjRfdCkgPiBzaXplb2YoaW50KSwgIlRoaXMgY29kZSB3
b3VsZCBiZSB3cm9uZyBvdGhlcndpc2UiKTsKLSAgICAgICAgaW50NjRfdCBpbnRSZXN1bHQgPSAt
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzdWx0KTsKLSAgICAgICAgaWYgKGludFJlc3VsdCA8IHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBsaXRl
cmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgICAgIHJldHVybiB7IHN0
YXRpY19jYXN0PGludD4oaW50UmVzdWx0KSB9OwotICAgIH0KLSAgICBpZiAocmVzdWx0ID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiaW50IGxpdGVyYWwg
IiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICByZXR1cm4geyBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc3VsdCkgfTsKLX0KLQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4g
dWludExpdGVyYWxUb1VpbnQoU3RyaW5nVmlldyB0ZXh0KQotewotICAgIHVuc2lnbmVkIGJhc2Ug
PSAxMDsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCIweCJfc3RyKSkgewotICAgICAgICB0ZXh0
ID0gdGV4dC5zdWJzdHJpbmcoMik7Ci0gICAgICAgIGJhc2UgPSAxNjsKLSAgICB9Ci0gICAgQVNT
RVJUKHRleHQuZW5kc1dpdGgoInUiKSk7Ci0gICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRl
eHQubGVuZ3RoKCkgLSAxKTsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0
byBjb2RlUG9pbnQgOiB0ZXh0LmNvZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdp
dCA9IGRpZ2l0VmFsdWUoY29kZVBvaW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3Vs
dDsKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAo
cmVzdWx0IDwgcHJldmlvdXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IobWFrZVN0cmluZygidWludCBsaXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIp
KSk7Ci0gICAgfQotICAgIHJldHVybiB7IHJlc3VsdCB9OwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8
ZmxvYXQsIEVycm9yPiBmbG9hdExpdGVyYWxUb0Zsb2F0KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAg
ICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VEb3VibGUodGV4
dCwgcGFyc2VkTGVuZ3RoKTsKLSAgICBpZiAocGFyc2VkTGVuZ3RoICE9IHRleHQubGVuZ3RoKCkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3Qg
cGFyc2UgZmxvYXQgIiwgdGV4dCkpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJl
c3VsdCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhw
ZWN0ZWQ8VmFyaWFudDxpbnQsIHVuc2lnbmVkPiwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3Jh
bExpdGVyYWxUb2tlbiA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwgVG9r
ZW46OlR5cGU6OlVpbnRMaXRlcmFsPigpOwotICAgIGlmICghaW50ZWdyYWxMaXRlcmFsVG9rZW4p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWxUb2tlbi5lcnJv
cigpKTsKLQotICAgIHN3aXRjaCAoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnR5cGUpIHsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW50
TGl0ZXJhbFRvSW50KGludGVncmFsTGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsK
LSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19Owot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAg
ICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6VWludExpdGVyYWwpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHVpbnRM
aXRlcmFsVG9VaW50KGludGVncmFsTGl0ZXJhbFRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsK
LSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB7eyAqcmVzdWx0IH19Owot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOwotICAgIH0KLSAg
ICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwo
KSAtPiBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+Ci17Ci0gICAgYXV0byBpbnRlZ3JhbExpdGVy
YWwgPSBjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFpbnRlZ3JhbExpdGVyYWwp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWwuZXJyb3IoKSk7
Ci0gICAgYXV0byByZXN1bHQgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oaW50IHgp
IC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKLSAgICAgICAgaWYgKHggPCAwKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfSwgW10o
dW5zaWduZWQgeCkgLT4gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gewotICAgICAgICByZXR1cm4g
eDsKLSAgICB9KSwgKmludGVncmFsTGl0ZXJhbCk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
cmV0dXJuICpyZXN1bHQ7Ci0gICAgcmV0dXJuIGZhaWwoImludCBsaXRlcmFsIGlzIG5lZ2F0aXZl
Il9zdHIpOwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiByZWNvZ25pemVT
aW1wbGVVbnNpZ25lZEludGVnZXIoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQotewotICAgIHVuc2ln
bmVkIHJlc3VsdCA9IDA7Ci0gICAgaWYgKHN0cmluZ1ZpZXcubGVuZ3RoKCkgPCAxKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2lnbmVk
IGxpdGVyYWwgIiwgc3RyaW5nVmlldywgIiBpcyB0b28gc2hvcnQiKSkpOwotICAgIGZvciAoYXV0
byBjb2RlUG9pbnQgOiBzdHJpbmdWaWV3LmNvZGVQb2ludHMoKSkgewotICAgICAgICBpZiAoY29k
ZVBvaW50IDwgJzAnIHx8IGNvZGVQb2ludCA+ICc5JykKLSAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJhbCAiLCBz
dHJpbmdWaWV3LCAiIGlzbid0IG9mIHRoZSBmb3JtIFswLTldKyIpKSk7Ci0gICAgICAgIGF1dG8g
cHJldmlvdXMgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgKGNvZGVQ
b2ludCAtICcwJyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQg
bGl0ZXJhbCAiLCBzdHJpbmdWaWV3LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDb25zdGFudEV4cHJlc3Np
b24oKSAtPiBFeHBlY3RlZDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiwgRXJyb3I+Ci17Ci0gICAg
YXV0byB0eXBlID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6SW50TGl0ZXJh
bCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6RmxvYXRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6TnVsbCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlRydWUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpGYWxzZSwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OklkZW50aWZpZXI+KCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkg
ewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IGludExpdGVyYWxUb0ludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJv
cigpKTsKLSAgICAgICAgcmV0dXJuIHt7IEFTVDo6SW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAq
dmFsdWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewot
ICAgICAgICBhdXRvIHZhbHVlID0gdWludExpdGVyYWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyht
X2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpGbG9hdExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGZsb2F0TGl0
ZXJhbFRvRmxvYXQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0g
ICAgICAgIHJldHVybiB7eyBBU1Q6OkZsb2F0TGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07
Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRydWU6Ci0gICAgICAgIHJldHVybiB7IEFT
VDo6Qm9vbGVhbkxpdGVyYWwoV1RGTW92ZSgqdHlwZSksIHRydWUpIH07Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6RmFsc2U6Ci0gICAgICAgIHJldHVybiB7IEFTVDo6Qm9vbGVhbkxpdGVyYWwoV1RG
TW92ZSgqdHlwZSksIGZhbHNlKSB9OwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5
cGUtPnR5cGUgPT0gVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBDT05TVU1FX1RZ
UEUoZnVsbFN0b3AsIEZ1bGxTdG9wKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKG5leHQsIElkZW50
aWZpZXIpOwotICAgICAgICByZXR1cm4geyBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCh7
ICp0eXBlLCAqbmV4dCB9LCB0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIG5l
eHQtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSkgfTsKLSAgICB9Ci0gICAgfQotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVB
cmd1bWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhuZXh0VG9rZW4pOwotICAgIFBFRUtfRlVSVEhF
UihmdXJ0aGVyVG9rZW4pOwotICAgIGlmIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6
OklkZW50aWZpZXIgfHwgZnVydGhlclRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpGdWxsU3Rv
cCkgewotICAgICAgICBQQVJTRShjb25zdGFudEV4cHJlc3Npb24sIENvbnN0YW50RXhwcmVzc2lv
bik7Ci0gICAgICAgIHJldHVybiBBU1Q6OlR5cGVBcmd1bWVudChXVEZNb3ZlKCpjb25zdGFudEV4
cHJlc3Npb24pKTsKLSAgICB9Ci0gICAgQ09OU1VNRV9UWVBFKHJlc3VsdCwgSWRlbnRpZmllcik7
Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpyZXN1bHQpOwotICAgIHJldHVybiBBU1Q6OlR5
cGVBcmd1bWVudChBU1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgcmVzdWx0LT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIEFTVDo6VHlwZUFyZ3VtZW50cygpKSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVBcmd1bWVudHMoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5
cGVBcmd1bWVudHMsIEVycm9yPgotewotICAgIEFTVDo6VHlwZUFyZ3VtZW50cyB0eXBlQXJndW1l
bnRzOwotICAgIGF1dG8gbGVzc1RoYW5TaWduID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6TGVzc1Ro
YW5TaWduKTsKLSAgICBpZiAoIWxlc3NUaGFuU2lnbikKLSAgICAgICAgcmV0dXJuIHR5cGVBcmd1
bWVudHM7Ci0KLSAgICBhdXRvIGdyZWF0ZXJUaGFuU2lnbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6
OkdyZWF0ZXJUaGFuU2lnbik7Ci0gICAgaWYgKGdyZWF0ZXJUaGFuU2lnbikKLSAgICAgICAgcmV0
dXJuIHR5cGVBcmd1bWVudHM7Ci0KLSAgICBQQVJTRSh0eXBlQXJndW1lbnQsIFR5cGVBcmd1bWVu
dCk7Ci0gICAgdHlwZUFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFyZ3VtZW50KSk7Ci0K
LSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBhdXRvIGdyZWF0ZXJUaGFuU2lnbiA9IHRyeVR5
cGUoVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2lnbik7Ci0gICAgICAgIGlmIChncmVhdGVyVGhh
blNpZ24pCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDT05TVU1FX1RZUEUoY29tbWEs
IENvbW1hKTsKLSAgICAgICAgUEFSU0UodHlwZUFyZ3VtZW50LCBUeXBlQXJndW1lbnQpOwotICAg
ICAgICB0eXBlQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCp0eXBlQXJndW1lbnQpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHlwZUFyZ3VtZW50czsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlw
ZVN1ZmZpeEFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBF
cnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6
VHlwZTo6U3RhciwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYgKCF0b2tlbikK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRva2VuLmVycm9yKCkpOwotICAgIGlmICh0
b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAg
YXV0byBudW1FbGVtZW50cyA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwot
ICAgICAgICBpZiAoIW51bUVsZW1lbnRzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKG51bUVsZW1lbnRzLmVycm9yKCkpOwotICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVh
cmVCcmFja2V0LCBSaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9r
ZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCAqbnVtRWxlbWVudHMgfX07Ci0gICAg
fQotICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9wdCB9fTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0
ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0g
Y29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6U3RhciwKLSAgICAgICAgVG9rZW46
OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFy
ZUJyYWNrZXQ+KCk7Ci0gICAgaWYgKCF0b2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKHRva2VuLmVycm9yKCkpOwotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6
TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgYXV0byBudW1FbGVtZW50cyA9IGNvbnN1bWVO
b25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgICAgICBpZiAoIW51bUVsZW1lbnRzKQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9yKCkpOwot
ICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFyZUJyYWNr
ZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwg
KnRva2VuLCBzdGQ6Om51bGxvcHQsICpudW1FbGVtZW50cyB9fTsKLSAgICB9Ci0gICAgYXV0byBh
ZGRyZXNzU3BhY2VUb2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkNv
bnN0YW50LAotICAgICAgICBUb2tlbjo6VHlwZTo6RGV2aWNlLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6VGhyZWFkZ3JvdXAsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWQ+KCk7Ci0gICAgaWYg
KCFhZGRyZXNzU3BhY2VUb2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFkZHJl
c3NTcGFjZVRva2VuLmVycm9yKCkpOwotICAgIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFj
ZTsKLSAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6Q29uc3RhbnQ6Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1Nw
YWNlOjpDb25zdGFudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGV2
aWNlOgotICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cDoKLSAgICAg
ICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlVG9rZW4t
PnR5cGUgPT0gVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFT
VDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4ge3sgeyAqdG9rZW4gfSwgKnRva2VuLCB7IGFkZHJlc3NTcGFjZSB9LCBzdGQ6Om51bGxvcHQg
fX07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpV
bm5hbWVkVHlwZT4sIEVycm9yPgotewotICAgIGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSB0cnlU
eXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkNvbnN0YW50LAotICAgICAgICBUb2tlbjo6VHlw
ZTo6RGV2aWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXAsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpUaHJlYWQ+KCk7Ci0KLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmll
cik7Ci0gICAgUEFSU0UodHlwZUFyZ3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0KLSAgICBpZiAo
YWRkcmVzc1NwYWNlVG9rZW4pIHsKLSAgICAgICAgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1Nw
YWNlOwotICAgICAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZVRva2VuLT50eXBlKSB7Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0g
QVNUOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkRldmljZToKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFT
VDo6QWRkcmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6VGhyZWFkKTsKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6
QWRkcmVzc1NwYWNlOjpUaHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBhdXRvIGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4QWJicmV2aWF0ZWQgPSBbJl0oY29uc3Qg
VHlwZVN1ZmZpeEFiYnJldmlhdGVkJiB0eXBlU3VmZml4QWJicmV2aWF0ZWQsIFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYmIHByZXZpb3VzKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAg
ICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCphZGRyZXNzU3BhY2VUb2tlbiwgdHlwZVN1ZmZp
eEFiYnJldmlhdGVkLmxvY2F0aW9uKTsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZVN1ZmZpeEFi
YnJldmlhdGVkLnRva2VuLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0
YXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKGxv
Y2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgYWRkcmVzc1Nw
YWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHR5cGVTdWZmaXhBYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2Vu
OjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgQVNU
OjpBcnJheVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksICp0eXBlU3Vm
Zml4QWJicmV2aWF0ZWQubnVtRWxlbWVudHMpIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07
Ci0gICAgICAgIFBBUlNFKGZpcnN0VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBUeXBlU3VmZml4QWJi
cmV2aWF0ZWQpOwotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0ID0gQVNUOjpU
eXBlUmVmZXJlbmNlOjpjcmVhdGUoV1RGTW92ZSgqYWRkcmVzc1NwYWNlVG9rZW4pLCBuYW1lLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsK
LSAgICAgICAgYXV0byBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCgq
Zmlyc3RUeXBlU3VmZml4QWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJl
c3VsdCA9IFdURk1vdmUobmV4dCk7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICBQRUVLKG5leHRUb2tlbik7Ci0gICAgICAgICAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRv
a2VuOjpUeXBlOjpTdGFyCi0gICAgICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRv
a2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcgotICAgICAgICAgICAgICAgICYmIG5leHRUb2tl
bi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBBUlNFKHR5cGVTdWZmaXhB
YmJyZXZpYXRlZCwgVHlwZVN1ZmZpeEFiYnJldmlhdGVkKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGUgbmVzdGluZyBoZXJlIG1pZ2h0IGJlIGluIHRoZSB3cm9uZyBvcmRlci4KLSAgICAgICAg
ICAgIG5leHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkKCp0eXBlU3VmZml4
QWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXVEZN
b3ZlKG5leHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci0g
ICAgfQotCi0gICAgYXV0byBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVkID0g
WyZdKGNvbnN0IFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeE5vbkFiYnJldmlh
dGVkLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKCpuYW1lLCB0eXBlU3VmZml4
Tm9uQWJicmV2aWF0ZWQubG9jYXRpb24pOwotICAgICAgICBzd2l0Y2ggKHR5cGVTdWZmaXhOb25B
YmJyZXZpYXRlZC50b2tlbi50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6
Ci0gICAgICAgICAgICByZXR1cm4geyBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobG9jYXRpb24s
ICp0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQuYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3Vz
KSkgfTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAg
ICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKGxvY2F0aW9u
LCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91
cykpIH07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQodHlwZVN1ZmZpeE5v
bkFiYnJldmlhdGVkLnRva2VuLnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0
KTsKLSAgICAgICAgICAgIHJldHVybiB7IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24s
IFdURk1vdmUocHJldmlvdXMpLCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLm51bUVsZW1lbnRz
KSB9OwotICAgICAgICB9Ci0gICAgfTsKLSAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gcmVzdWx0
ID0gQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUoKm5hbWUsIG5hbWUtPnN0cmluZ1ZpZXcobV9s
ZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50cykpOwotICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICAgICAgaWYgKG5leHRUb2tlbi0+
dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3RhcgotICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBl
ICE9IFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcgotICAgICAgICAgICAgJiYgbmV4dFRv
a2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUEFSU0UodHlwZVN1ZmZpeE5vbkFiYnJldmlh
dGVkLCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQpOwotICAgICAgICAvLyBGSVhNRTogVGhlIG5l
c3RpbmcgaGVyZSBtaWdodCBiZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCi0gICAgICAgIGF1dG8gbmV4
dCA9IGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4Tm9uQWJicmV2aWF0ZWQoKnR5cGVTdWZmaXhOb25B
YmJyZXZpYXRlZCwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShu
ZXh0KTsKLSAgICB9Ci0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlVHlwZURlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZpbml0aW9u
LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBUeXBlZGVmKTsKLSAgICBDT05T
VU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgQ09OU1VNRV9UWVBFKGVxdWFscywgRXF1
YWxzU2lnbik7Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWlj
b2xvbiwgU2VtaWNvbG9uKTsKLSAgICByZXR1cm4gQVNUOjpUeXBlRGVmaW5pdGlvbih7ICpvcmln
aW4sICpzZW1pY29sb24gfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBX
VEZNb3ZlKCp0eXBlKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUJ1aWx0SW5TZW1hbnRpYygp
IC0+IEV4cGVjdGVkPEFTVDo6QnVpbHRJblNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBhdXRvIG9y
aWdpbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJRCwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlNWVmVydGV4SUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQ
U2l6ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWUG9zaXRpb24sCi0gICAgICAgIFRva2VuOjpU
eXBlOjpTVklzRnJvbnRGYWNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlNWVGFyZ2V0LAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZEZXB0aCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlNWQ292ZXJhZ2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhy
ZWFkSUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwSUQsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpTVkdyb3VwSW5kZXgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFkSUQ+
KCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChvcmln
aW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKG9yaWdpbi0+dHlwZSkgewotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFu
dGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFu
Y2VJRCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJu
IEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWVmVydGV4SUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlBTaXplOgotICAg
ICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6UFNpemUpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWUG9z
aXRpb246Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwg
QVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0aW9uKTsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2Vt
YW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zy
b250RmFjZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAg
cmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWU2FtcGxlSW5kZXgpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNW
SW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9y
aWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZSk7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZUYXJnZXQ6IHsKLSAgICAgICAgYXV0byB0YXJnZXQg
PSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MDcgTWFrZSB0aGlzIHdvcmsgd2l0
aCBzdHJpbmdzIGxpa2UgIlNWX1RhcmdldDAiLgotICAgICAgICBpZiAoIXRhcmdldCkKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0YXJnZXQuZXJyb3IoKSk7Ci0gICAgICAgIHJl
dHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50
aWM6OlZhcmlhYmxlOjpTVlRhcmdldCwgKnRhcmdldCk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46
OlR5cGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpv
cmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoKTsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdElu
U2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZD
b3ZlcmFnZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAg
ICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEKTsKLSAgICBjYXNlIFRva2Vu
OjpUeXBlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7
ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQpOwot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuIEFTVDo6
QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWR3JvdXBJbmRleCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKG9yaWdpbi0+
dHlwZSA9PSBUb2tlbjo6VHlwZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuIEFT
VDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFy
aWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VS
ZXNvdXJjZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpSZXNvdXJjZVNlbWFudGljLCBFcnJv
cj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBSZWdpc3Rlcik7Ci0gICAgQ09OU1VNRV9U
WVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIENPTlNVTUVfVFlQ
RShpbmZvLCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIGluZm9TdHJpbmdWaWV3ID0gaW5mby0+c3Ry
aW5nVmlldyhtX2xleGVyKTsKLSAgICBpZiAoaW5mb1N0cmluZ1ZpZXcubGVuZ3RoKCkgPCAyIHx8
IChpbmZvU3RyaW5nVmlld1swXSAhPSAndScKLSAgICAgICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0g
IT0gJ3QnCi0gICAgICAgICYmIGluZm9TdHJpbmdWaWV3WzBdICE9ICdiJwotICAgICAgICAmJiBp
bmZvU3RyaW5nVmlld1swXSAhPSAncycpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXJyb3IobWFrZVN0cmluZyhpbmZvU3RyaW5nVmlldy5zdWJzdHJpbmcoMCwgMSksICIgaXMgbm90
IGEga25vd24gcmVzb3VyY2UgdHlwZSAoJ3UnLCAndCcsICdiJywgb3IgJ3MnKSIpKSk7Ci0KLSAg
ICBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGUgbW9kZTsKLSAgICBzd2l0Y2ggKGluZm9TdHJp
bmdWaWV3WzBdKSB7Ci0gICAgY2FzZSAndSc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNl
U2VtYW50aWM6Ok1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgJ3QnOgotICAgICAgICBtb2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpU
ZXh0dXJlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICdiJzoKLSAgICAgICAgbW9kZSA9IEFT
VDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6QnVmZmVyOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlICdzJzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6U2Ft
cGxlcjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gcmVjb2duaXplU2lt
cGxlVW5zaWduZWRJbnRlZ2VyKGluZm9TdHJpbmdWaWV3LnN1YnN0cmluZygxKSk7Ci0gICAgaWYg
KCFpbmRleCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGluZGV4LmVycm9yKCkpOwot
Ci0gICAgdW5zaWduZWQgc3BhY2UgPSAwOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpD
b21tYSkpIHsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNwYWNlVG9rZW4sIElkZW50aWZpZXIpOwot
ICAgICAgICBhdXRvIHNwYWNlVG9rZW5TdHJpbmdWaWV3ID0gc3BhY2VUb2tlbi0+c3RyaW5nVmll
dyhtX2xleGVyKTsKLSAgICAgICAgU3RyaW5nVmlldyBwcmVmaXggeyAic3BhY2UiIH07Ci0gICAg
ICAgIGlmICghc3BhY2VUb2tlblN0cmluZ1ZpZXcuc3RhcnRzV2l0aChwcmVmaXgpKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBhcmd1
bWVudCB0byByZXNvdXJjZSBzZW1hbnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBuZWVk
cyBiZSBvZiB0aGUgZm9ybSAnc3BhY2UwJyIpKSk7Ci0gICAgICAgIGlmIChzcGFjZVRva2VuU3Ry
aW5nVmlldy5sZW5ndGgoKSA8PSBwcmVmaXgubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2Vjb25kIGFyZ3VtZW50IHRvIHJlc291
cmNlIHNlbWFudGljICIsIHNwYWNlVG9rZW5TdHJpbmdWaWV3LCAiIG5lZWRzIGJlIG9mIHRoZSBm
b3JtICdzcGFjZTAnIikpKTsKLSAgICAgICAgYXV0byBzcGFjZVZhbHVlID0gcmVjb2duaXplU2lt
cGxlVW5zaWduZWRJbnRlZ2VyKHNwYWNlVG9rZW5TdHJpbmdWaWV3LnN1YnN0cmluZyhwcmVmaXgu
bGVuZ3RoKCkpKTsKLSAgICAgICAgaWYgKCFzcGFjZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKHNwYWNlVmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHNwYWNlID0gKnNw
YWNlVmFsdWU7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJp
Z2h0UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIEFTVDo6UmVzb3VyY2VTZW1hbnRpYyh7ICpv
cmlnaW4sICpyaWdodFBhcmVudGhlc2lzIH0sIG1vZGUsICppbmRleCwgc3BhY2UpOwotfQotCi1h
dXRvIFBhcnNlcjo6cGFyc2VTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSAtPiBFeHBl
Y3RlZDxBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAg
Q09OU1VNRV9UWVBFKG9yaWdpbiwgU3BlY2lhbGl6ZWQpOwotICAgIHJldHVybiBBU1Q6OlNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygqb3JpZ2luKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlU3RhZ2VJbk91dFNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdGFnZUluT3V0U2VtYW50
aWMsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIEF0dHJpYnV0ZSk7Ci0gICAg
Q09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1
dG8gaW5kZXggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAo
IWluZGV4KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5kZXguZXJyb3IoKSk7Ci0K
LSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0K
LSAgICByZXR1cm4gQVNUOjpTdGFnZUluT3V0U2VtYW50aWMoeyAqb3JpZ2luLCAqcmlnaHRQYXJl
bnRoZXNpcyB9LCAqaW5kZXgpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+
IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+Ci17Ci0gICAg
aWYgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpDb2xvbikpCi0gICAgICAgIHJldHVybiB7IG51bGxw
dHIgfTsKLQotICAgIFBFRUsodG9rZW4pOwotICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBT
dGFnZUluT3V0U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlNwZWNpYWxpemVkOiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRp
Yz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UmVn
aXN0ZXI6ICB7Ci0gICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkg
fTsKLSAgICB9Ci0gICAgZGVmYXVsdDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdElu
U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdU
Rk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIH0KLX0KLUFTVDo6UXVhbGlmaWVycyBQYXJz
ZXI6OnBhcnNlUXVhbGlmaWVycygpCi17Ci0gICAgQVNUOjpRdWFsaWZpZXJzIHF1YWxpZmllcnM7
Ci0gICAgd2hpbGUgKGF1dG8gbmV4dCA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlF1YWxpZmllcikp
IHsKLSAgICAgICAgYXV0byBuZXh0U3RyaW5nVmlldyA9IG5leHQtPnN0cmluZ1ZpZXcobV9sZXhl
cik7Ci0gICAgICAgIGlmICgibm9pbnRlcnBvbGF0aW9uIiA9PSBuZXh0U3RyaW5nVmlldykKLSAg
ICAgICAgICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpOb2ludGVycG9sYXRp
b24pOwotICAgICAgICBlbHNlIGlmICgibm9wZXJzcGVjdGl2ZSIgPT0gbmV4dFN0cmluZ1ZpZXcp
Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Tm9wZXJzcGVj
dGl2ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCJ1bmlmb3JtIiA9PSBuZXh0U3RyaW5nVmlldykKLSAg
ICAgICAgICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpVbmlmb3JtKTsKLSAg
ICAgICAgZWxzZSBpZiAoImNlbnRyb2lkIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAg
IHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpDZW50cm9pZCk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgQVNTRVJUKCJzYW1wbGUiID09IG5leHRTdHJpbmdWaWV3KTsKLSAg
ICAgICAgICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpTYW1wbGUpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBxdWFsaWZpZXJzOwotfQotCi1hdXRvIFBhcnNlcjo6
cGFyc2VTdHJ1Y3R1cmVFbGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVFbGVtZW50
LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVh
bGlmaWVycyA9IHBhcnNlUXVhbGlmaWVycygpOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0g
ICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHNlbWFudGljLCBT
ZW1hbnRpYyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAg
IHJldHVybiBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQoeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIFdU
Rk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4
ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnNlbWFudGljKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZVN0cnVjdHVyZURlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFN0cnVjdCk7Ci0gICAg
Q09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3Vy
bHlCcmFja2V0LCBMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAgIEFTVDo6U3RydWN0dXJlRWxlbWVu
dHMgc3RydWN0dXJlRWxlbWVudHM7Ci0gICAgd2hpbGUgKCFwZWVrVHlwZShUb2tlbjo6VHlwZTo6
UmlnaHRDdXJseUJyYWNrZXQpKSB7Ci0gICAgICAgIFBBUlNFKHN0cnVjdHVyZUVsZW1lbnQsIFN0
cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICBzdHJ1Y3R1cmVFbGVtZW50cy5hcHBlbmQoV1RGTW92
ZSgqc3RydWN0dXJlRWxlbWVudCkpOwotICAgIH0KLQotICAgIGF1dG8gcmlnaHRDdXJseUJyYWNr
ZXQgPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotCi0gICAgcmV0dXJuIEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbih7ICpvcmlnaW4sIHJpZ2h0Q3VybHlCcmFja2V0IH0sIG5hbWUtPnN0cmluZ1Zp
ZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZShzdHJ1Y3R1cmVFbGVtZW50cykpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oKSAtPiBFeHBlY3RlZDxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9y
aWdpbiwgRW51bSk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotCi0gICAg
YXV0byB0eXBlID0gKFsmXSgpIC0+IEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJy
b3I+IHsKLSAgICAgICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbG9uKSkgewotICAgICAg
ICAgICAgUEFSU0UocGFyc2VkVHlwZSwgVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGTW92
ZSgqcGFyc2VkVHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgQVNUOjpUeXBlUmVm
ZXJlbmNlOjpjcmVhdGUoKm9yaWdpbiwgImludCJfc3RyLCBBU1Q6OlR5cGVBcmd1bWVudHMoKSkg
fTsKLSAgICB9KSgpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKHR5cGUuZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwg
TGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBpbnQ2NF90IG5leHRWYWx1ZSA9IDA7Ci0gICAgUEFS
U0UoZmlyc3RFbnVtZXJhdGlvbk1lbWJlciwgRW51bWVyYXRpb25NZW1iZXIsIG5leHRWYWx1ZSk7
Ci0gICAgbmV4dFZhbHVlID0gZmlyc3RFbnVtZXJhdGlvbk1lbWJlci0+dmFsdWUoKSArIDE7Ci0K
LSAgICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiByZXN1bHQoeyB9LCBuYW1lLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGUpKTsKLSAgICBhdXRvIHN1Y2Nl
c3MgPSByZXN1bHQuYWRkKFdURk1vdmUoKmZpcnN0RW51bWVyYXRpb25NZW1iZXIpKTsKLSAgICBp
ZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBmYWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9u
IG1lbWJlciJfc3RyKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkp
IHsKLSAgICAgICAgUEFSU0UobWVtYmVyLCBFbnVtZXJhdGlvbk1lbWJlciwgbmV4dFZhbHVlKTsK
LSAgICAgICAgbmV4dFZhbHVlID0gbWVtYmVyLT52YWx1ZSgpICsgMTsKLSAgICAgICAgc3VjY2Vz
cyA9IHJlc3VsdC5hZGQoV1RGTW92ZSgqbWVtYmVyKSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykK
LSAgICAgICAgICAgIHJldHVybiBmYWlsKCJDYW5ub3QgYWRkIGVudW1lcmF0aW9uIG1lbWJlciJf
c3RyKTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRDdXJseUJyYWNrZXQsIFJpZ2h0
Q3VybHlCcmFja2V0KTsKLSAgICByZXN1bHQudXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdpbiwg
KnJpZ2h0Q3VybHlCcmFja2V0fSk7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VFbnVtZXJhdGlvbk1lbWJlcihpbnQ2NF90IGRlZmF1bHRWYWx1
ZSkgLT4gRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciwgRXJyb3I+Ci17Ci0gICAgQ09O
U1VNRV9UWVBFKGlkZW50aWZpZXIsIElkZW50aWZpZXIpOwotICAgIGF1dG8gbmFtZSA9IGlkZW50
aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIGlmICh0cnlUeXBl
KFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKSkgewotICAgICAgICBQQVJTRShjb25zdGFudEV4cHJl
c3Npb24sIENvbnN0YW50RXhwcmVzc2lvbik7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2
NF90PiB2YWx1ZTsKLSAgICAgICAgY29uc3RhbnRFeHByZXNzaW9uLT52aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAg
ICAgICAgdmFsdWUgPSBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAg
ICAgICAgICB2YWx1ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAg
fSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJikgewotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFu
TGl0ZXJhbCYpIHsKLSAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
JikgewotICAgICAgICB9KSk7Ci0KLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiZW51bSBpbml0aWFsaXphdGlvbiB2YWx1ZXMgY2Fu
IG9ubHkgYmUgYW4gaW50IG9yIHVpbnQgY29uc3RhbnQuIikpOwotICAgICAgICByZXR1cm4gQVNU
OjpFbnVtZXJhdGlvbk1lbWJlcigqaWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgKnZhbHVlKTsK
LSAgICB9Ci0gICAgcmV0dXJuIEFTVDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdU
Rk1vdmUobmFtZSksIGRlZmF1bHRWYWx1ZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU5hdGl2
ZVR5cGVEZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBOYXRpdmUpOwotICAgIENPTlNV
TUVfVFlQRShwYXJzZWRUeXBlZGVmLCBUeXBlZGVmKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwg
SWRlbnRpZmllcik7Ci0gICAgUEFSU0UodHlwZUFyZ3VtZW50cywgVHlwZUFyZ3VtZW50cyk7Ci0g
ICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbih7ICpvcmlnaW4sICpzZW1pY29sb24gfSwgbmFtZS0+c3Ry
aW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1lbnRzKSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSgpIC0+IEV4
cGVjdGVkPEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLCBFcnJvcj4KLXsKLSAgICBD
T05TVU1FX1RZUEUob3JpZ2luLCBOdW1UaHJlYWRzKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBh
cmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgYXV0byB3aWR0aCA9IGNvbnN1bWVO
b25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh3aWR0aC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShj
b21tYSwgQ29tbWEpOwotCi0gICAgYXV0byBoZWlnaHQgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRl
Z3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGhlaWdodC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShzZWNvbmRDb21tYSwg
Q29tbWEpOwotCi0gICAgYXV0byBkZXB0aCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0
ZXJhbCgpOwotICAgIGlmICghZGVwdGgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChk
ZXB0aC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdo
dFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZSh7ICpvcmlnaW4sICpyaWdodFBhcmVudGhlc2lzIH0sICp3aWR0aCwgKmhlaWdodCwgKmRl
cHRoKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQXR0cmlidXRlQmxvY2soKSAtPiBFeHBlY3Rl
ZDxBU1Q6OkF0dHJpYnV0ZUJsb2NrLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUobGVmdFNx
dWFyZUJyYWNrZXQsIExlZnRTcXVhcmVCcmFja2V0KTsKLQotICAgIEFTVDo6QXR0cmlidXRlQmxv
Y2sgcmVzdWx0OwotCi0gICAgd2hpbGUgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNxdWFy
ZUJyYWNrZXQpKSB7Ci0gICAgICAgIFBBUlNFKG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwg
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZN
b3ZlKCpudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQYXJhbWV0ZXIoKSAtPiBF
eHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIGF1dG8gc3Rh
cnRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgQVNUOjpRdWFs
aWZpZXJzIHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLSAgICBQQVJTRSh0eXBlLCBU
eXBlKTsKLQotICAgIFN0cmluZyBuYW1lOwotICAgIGlmIChhdXRvIHRva2VuID0gdHJ5VHlwZShU
b2tlbjo6VHlwZTo6SWRlbnRpZmllcikpCi0gICAgICAgIG5hbWUgPSB0b2tlbi0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpOwotCi0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsK
LQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQot
ICAgIHJldHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24oeyBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUocXVhbGlmaWVycyksIHsgV1RGTW92
ZSgqdHlwZSkgfSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBudWxscHRyKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUGFyYW1ldGVycygpIC0+IEV4cGVjdGVkPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMsIEVycm9yPgotewotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnMgcGFyYW1ldGVyczsKLQotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQ
YXJlbnRoZXNpcyk7Ci0KLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRo
ZXNpcykpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwotCi0gICAgUEFSU0Uo
Zmlyc3RQYXJhbWV0ZXIsIFBhcmFtZXRlcik7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKmZpcnN0UGFyYW1ldGVy
KSkpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAg
ICBQQVJTRShwYXJhbWV0ZXIsIFBhcmFtZXRlcik7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXBwZW5k
KG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpwYXJhbWV0
ZXIpKSk7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0
UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIFdURk1vdmUocGFyYW1ldGVycyk7Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBQQVJTRShmdW5jdGlvbkRlY2xhcmF0aW9u
LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBQQVJTRShibG9jaywgQmxvY2spOwotICAgIHJl
dHVybiBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbihXVEZNb3ZlKCpmdW5jdGlvbkRlY2xhcmF0aW9u
KSwgV1RGTW92ZSgqYmxvY2spKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ29tcHV0ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVy
cm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNFKGF0dHJpYnV0ZUJsb2NrLCBB
dHRyaWJ1dGVCbG9jayk7Ci0gICAgQ09OU1VNRV9UWVBFKGNvbXB1dGUsIENvbXB1dGUpOwotICAg
IFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsK
LSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywg
U2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9m
ZnNldCgpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBt
X2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoKmF0dHJpYnV0ZUJsb2NrKSwgQVNUOjpFbnRy
eVBvaW50VHlwZTo6Q29tcHV0ZSwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9s
ZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGlj
KSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVmVydGV4T3JG
cmFnbWVudEZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24sIEVycm9yPgotewotICAgIGF1dG8gZW50cnlQb2ludCA9IGNvbnN1bWVUeXBlczxU
b2tlbjo6VHlwZTo6VmVydGV4LCBUb2tlbjo6VHlwZTo6RnJhZ21lbnQ+KCk7Ci0gICAgaWYgKCFl
bnRyeVBvaW50KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZW50cnlQb2ludC5lcnJv
cigpKTsKLSAgICBhdXRvIGVudHJ5UG9pbnRUeXBlID0gKGVudHJ5UG9pbnQtPnR5cGUgPT0gVG9r
ZW46OlR5cGU6OlZlcnRleCkgPyBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXggOiBBU1Q6OkVu
dHJ5UG9pbnRUeXBlOjpGcmFnbWVudDsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENP
TlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRShwYXJhbWV0ZXJzLCBQYXJh
bWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRP
ZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgYm9vbCBpc09wZXJh
dG9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IGVudHJ5
UG9pbnQtPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7
IH0sIGVudHJ5UG9pbnRUeXBlLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xl
eGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMp
LCBpc09wZXJhdG9yLCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VSZWd1bGFyRnVu
Y3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwg
RXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0K
LSAgICBhdXRvIG5hbWUgPSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6OklkZW50aWZpZXIsIFRv
a2VuOjpUeXBlOjpPcGVyYXRvck5hbWU+KCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsKLSAgICBhdXRvIGlzT3BlcmF0b3IgPSBu
YW1lLT50eXBlID09IFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWU7Ci0KLSAgICBQQVJTRShwYXJh
bWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0g
ICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAg
cmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwg
ZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3Zl
KCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBF
eHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVf
VFlQRShvcmlnaW4sIE9wZXJhdG9yKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBQQVJT
RShwYXJhbWV0ZXJzLCBQYXJhbWV0ZXJzKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMp
OwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwot
Ci0gICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFt
ZVNwYWNlKCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCAib3BlcmF0b3Ig
Y2FzdCJfc3RyLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09w
ZXJhdG9yLCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0
aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAg
ICBQRUVLKHRva2VuKTsKLSAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6T3BlcmF0b3I6Ci0gICAgICAgIHJldHVybiBwYXJzZU9wZXJhdG9yRnVuY3Rpb25E
ZWNsYXJhdGlvbigpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlZlcnRleDoKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuIHBhcnNlVmVydGV4T3JGcmFnbWVu
dEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJl
QnJhY2tldDoKLSAgICAgICAgcmV0dXJuIHBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFyYXRpb24o
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gcGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNs
YXJhdGlvbigpOwotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwg
RXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG5hdGl2ZSwgTmF0aXZlKTsKLSAgICBQQVJTRShm
dW5jdGlvbkRlY2xhcmF0aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBDT05TVU1FX1RZ
UEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbihXVEZNb3ZlKCpmdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZUJsb2NrKCkgLT4gRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+Ci17Ci0g
ICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTGVmdEN1cmx5QnJhY2tldCk7Ci0gICAgUEFSU0UocmVz
dWx0LCBCbG9ja0JvZHkpOwotICAgIENPTlNVTUVfVFlQRShyaWdodEN1cmx5QnJhY2tldCwgUmln
aHRDdXJseUJyYWNrZXQpOwotICAgIHJlc3VsdC0+dXBkYXRlQ29kZUxvY2F0aW9uKHsgKm9yaWdp
biwgKnJpZ2h0Q3VybHlCcmFja2V0IH0pOwotICAgIHJldHVybiBXVEZNb3ZlKCpyZXN1bHQpOwot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VCbG9ja0JvZHkoKSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2Nr
LCBFcnJvcj4KLXsKLSAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRP
ZmZzZXQoKTsKLQotICAgIEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwotICAgIHdoaWxlICgh
cGVla1R5cGVzPFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCwgVG9rZW46OlR5cGU6OkNh
c2UsIFRva2VuOjpUeXBlOjpEZWZhdWx0PigpKSB7Ci0gICAgICAgIFBBUlNFKHN0YXRlbWVudCwg
U3RhdGVtZW50KTsKLSAgICAgICAgc3RhdGVtZW50cy5hcHBlbmQoV1RGTW92ZSgqc3RhdGVtZW50
KSk7Ci0gICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9m
ZnNldCgpOwotCi0gICAgcmV0dXJuIEFTVDo6QmxvY2soeyBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoc3RhdGVtZW50cykpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VJZlN0YXRlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6SWZTdGF0ZW1lbnQs
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIElmKTsKLSAgICBDT05TVU1FX1RZ
UEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGNvbmRpdGlv
bmFsLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmln
aHRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxBU1Q6OlN0YXRlbWVudD4gZWxzZUJvZHkobnVsbHB0cik7Ci0gICAgaWYgKHRy
eVR5cGUoVG9rZW46OlR5cGU6OkVsc2UpKSB7Ci0gICAgICAgIFBBUlNFKHBhcnNlZEVsc2VCb2R5
LCBTdGF0ZW1lbnQpOwotICAgICAgICBlbHNlQm9keSA9ICgqcGFyc2VkRWxzZUJvZHkpLm1vdmVU
b1VuaXF1ZVB0cigpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVr
KCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
Pj4gY2FzdEFyZ3VtZW50czsKLSAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpjb25k
aXRpb25hbCkpOwotICAgIGF1dG8gYm9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4
cHJlc3Npb24+KFRva2VuKCpvcmlnaW4pLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVu
dHMpKTsKLSAgICByZXR1cm4gQVNUOjpJZlN0YXRlbWVudCh7IG9yaWdpbi0+c3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUoYm9vbENhc3QpLCBX
VEZNb3ZlKCpib2R5KSwgV1RGTW92ZShlbHNlQm9keSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VTd2l0Y2hTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRlbWVudCwgRXJy
b3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgU3dpdGNoKTsKLSAgICBDT05TVU1FX1RZ
UEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKHZhbHVlLCBF
eHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJl
bnRoZXNpcyk7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRDdXJseUJyYWNrZXQsIExlZnRDdXJseUJy
YWNrZXQpOwotCi0gICAgVmVjdG9yPEFTVDo6U3dpdGNoQ2FzZT4gc3dpdGNoQ2FzZXM7Ci0gICAg
UEVFSyhuZXh0VG9rZW4pOwotICAgIHdoaWxlIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5
cGU6OlJpZ2h0Q3VybHlCcmFja2V0KSB7Ci0gICAgICAgIFBBUlNFKHN3aXRjaENhc2UsIFN3aXRj
aENhc2UpOwotICAgICAgICBzd2l0Y2hDYXNlcy5hcHBlbmQoV1RGTW92ZSgqc3dpdGNoQ2FzZSkp
OwotICAgICAgICBQRUVLKG5leHRUb2tlbkluTG9vcCk7Ci0gICAgICAgIG5leHRUb2tlbiA9IG5l
eHRUb2tlbkluTG9vcDsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZFRva2VuID0gbV9sZXhlci5jb25z
dW1lVG9rZW4oKTsKLQotICAgIHJldHVybiBBU1Q6OlN3aXRjaFN0YXRlbWVudCh7ICpvcmlnaW4s
IGVuZFRva2VuIH0sIFdURk1vdmUoKnZhbHVlKSwgV1RGTW92ZShzd2l0Y2hDYXNlcykpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VTd2l0Y2hDYXNlKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hD
YXNlLCBFcnJvcj4KLXsKLSAgICBhdXRvIG9yaWdpbiA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlw
ZTo6Q2FzZSwgVG9rZW46OlR5cGU6OkRlZmF1bHQ+KCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChvcmlnaW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2gg
KG9yaWdpbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNhc2U6IHsKLSAgICAgICAg
UEFSU0UodmFsdWUsIENvbnN0YW50RXhwcmVzc2lvbik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShj
b2xvbiwgQ29sb24pOwotCi0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAg
ICAgIHJldHVybiBBU1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2Nr
LT5jb2RlTG9jYXRpb24oKX0sIFdURk1vdmUoKnZhbHVlKSwgV1RGTW92ZSgqYmxvY2spKTsKLSAg
ICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQob3JpZ2luLT50eXBlID09IFRva2Vu
OjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKGNvbG9uLCBDb2xvbik7Ci0K
LSAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrQm9keSk7Ci0KLSAgICAgICAgcmV0dXJuIEFTVDo6
U3dpdGNoQ2FzZSh7IG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigp
fSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCpibG9jaykpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1
dG8gUGFyc2VyOjpwYXJzZUZvckxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkZvckxvb3AsIEVycm9y
PgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIEZvcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8gcGFyc2VSZW1haW5k
ZXIgPSBbJl0oVW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiYmIGluaXRpYWxpemF0aW9uKSAtPiBF
eHBlY3RlZDxBU1Q6OkZvckxvb3AsIEVycm9yPiB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1p
Y29sb24sIFNlbWljb2xvbik7Ci0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVz
c2lvbj4gY29uZGl0aW9uKG51bGxwdHIpOwotICAgICAgICBpZiAoIXRyeVR5cGUoVG9rZW46OlR5
cGU6OlNlbWljb2xvbikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJz
ZUV4cHJlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBjb25kaXRpb24gPSAoKmV4cHJlc3Npb24p
Lm1vdmVUb1VuaXF1ZVB0cigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09O
U1VNRV9UWVBFKHNlY29uZFNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IGluY3JlbWVudChudWxscHRyKTsK
LSAgICAgICAgaWYgKCF0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpKQotICAg
ICAgICAgICAgICAgIGluY3JlbWVudCA9ICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJl
bnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBQQVJTRShi
b2R5LCBTdGF0ZW1lbnQpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5j
b2RlTG9jYXRpb24sICgqYm9keSktPmNvZGVMb2NhdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIEFT
VDo6Rm9yTG9vcChsb2NhdGlvbiwgV1RGTW92ZShpbml0aWFsaXphdGlvbiksIFdURk1vdmUoY29u
ZGl0aW9uKSwgV1RGTW92ZShpbmNyZW1lbnQpLCBXVEZNb3ZlKCpib2R5KSk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbnMgPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3Rl
ZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBFcnJvcj4+KFsmXSgpIHsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMoKTsKLSAgICB9KTsKLSAgICBp
ZiAodmFyaWFibGVEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6U3RhdGVt
ZW50PiBkZWNsYXJhdGlvblN0YXRlbWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlUmVtYWluZGVyKFdURk1vdmUoZGVjbGFyYXRpb25TdGF0ZW1lbnQp
KTsKLSAgICB9Ci0KLSAgICBQQVJTRShlZmZlY3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxFeHBy
ZXNzaW9uKTsKLQotICAgIHJldHVybiBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKCplZmZlY3RmdWxF
eHByZXNzaW9uKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVdoaWxlTG9vcCgpIC0+IEV4cGVj
dGVkPEFTVDo6V2hpbGVMb29wLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBX
aGlsZSk7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lz
KTsKLSAgICBQQVJTRShjb25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBF
KHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0
YXRlbWVudCk7Ci0KLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5jb2RlTG9jYXRp
b24sICAoKmJvZHkpLT5jb2RlTG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIEFTVDo6V2hpbGVMb29w
KGxvY2F0aW9uLCBXVEZNb3ZlKCpjb25kaXRpb25hbCksIFdURk1vdmUoKmJvZHkpKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlRG9XaGlsZUxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OkRvV2hpbGVM
b29wLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBEbyk7Ci0gICAgUEFSU0Uo
Ym9keSwgU3RhdGVtZW50KTsKLSAgICBDT05TVU1FX1RZUEUod2hpbGVLZXl3b3JkLCBXaGlsZSk7
Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRShjb25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0
UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29s
b24sIFNlbWljb2xvbik7Ci0KLSAgICByZXR1cm4gQVNUOjpEb1doaWxlTG9vcCh7ICpvcmlnaW4s
ICpzZW1pY29sb259LCBXVEZNb3ZlKCpib2R5KSwgV1RGTW92ZSgqY29uZGl0aW9uYWwpKTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mJiB0eXBlKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9y
PgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIGF1dG8gcXVhbGlmaWVycyA9IHBhcnNlUXVh
bGlmaWVycygpOwotCi0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBB
UlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHBy
ZXNzaW9uPiBpbml0aWFsaXplciA9IG51bGxwdHI7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5
cGU6OkVxdWFsc1NpZ24pKSB7Ci0gICAgICAgIFBBUlNFKGluaXRpYWxpemluZ0V4cHJlc3Npb24s
IFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAgaW5pdGlhbGl6ZXIgPSBpbml0
aWFsaXppbmdFeHByZXNzaW9uLnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotCi0g
ICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIHJl
dHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCB7IFdU
Rk1vdmUodHlwZSkgfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZN
b3ZlKCpzZW1hbnRpYyksIFdURk1vdmUoaW5pdGlhbGl6ZXIpKTsKLX0KLQotYXV0byBQYXJzZXI6
OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMoKSAtPiBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQ
QVJTRSh0eXBlLCBUeXBlKTsKLQotICAgIGF1dG8gZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uID0g
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKHR5cGUtPmNvcHlSZWYoKSk7Ci0gICAgaWYgKCFmaXJz
dFZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmaXJz
dFZhcmlhYmxlRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbj4+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCpmaXJzdFZhcmlhYmxl
RGVjbGFyYXRpb24pKSk7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEp
KSB7Ci0gICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IHBhcnNlVmFyaWFibGVEZWNs
YXJhdGlvbih0eXBlLT5jb3B5UmVmKCkpOwotICAgICAgICBpZiAoIXZhcmlhYmxlRGVjbGFyYXRp
b24pCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFyaWFibGVEZWNsYXJhdGlv
bi5lcnJvcigpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbikpKTsKLSAgICB9
Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0g
ICAgcmV0dXJuIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoeyBvcmlnaW4tPnN0
YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHJl
c3VsdCkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAg
ICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVmdEN1cmx5
QnJhY2tldDogewotICAgICAgICBQQVJTRShibG9jaywgQmxvY2spOwotICAgICAgICByZXR1cm4g
eyBtYWtlVW5pcXVlUmVmPEFTVDo6QmxvY2s+KFdURk1vdmUoKmJsb2NrKSkgfTsKLSAgICB9Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6SWY6IHsKLSAgICAgICAgUEFSU0UoaWZTdGF0ZW1lbnQsIElm
U3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OklmU3RhdGVt
ZW50PihXVEZNb3ZlKCppZlN0YXRlbWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5
cGU6OlN3aXRjaDogewotICAgICAgICBQQVJTRShzd2l0Y2hTdGF0ZW1lbnQsIFN3aXRjaFN0YXRl
bWVudCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpTd2l0Y2hTdGF0ZW1l
bnQ+KFdURk1vdmUoKnN3aXRjaFN0YXRlbWVudCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46
OlR5cGU6OkZvcjogewotICAgICAgICBQQVJTRShmb3JMb29wLCBGb3JMb29wKTsKLSAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZvckxvb3A+KFdURk1vdmUoKmZvckxvb3ApKSB9
OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpXaGlsZTogewotICAgICAgICBQQVJTRSh3
aGlsZUxvb3AsIFdoaWxlTG9vcCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpXaGlsZUxvb3A+KFdURk1vdmUoKndoaWxlTG9vcCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkRvOiB7Ci0gICAgICAgIFBBUlNFKGRvV2hpbGVMb29wLCBEb1doaWxlTG9vcCk7
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpEb1doaWxlTG9vcD4oV1RGTW92
ZSgqZG9XaGlsZUxvb3ApKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpCcmVhazog
ewotICAgICAgICBhdXRvIGJyZWFrVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAg
ICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGJy
ZWFrT2JqZWN0ID0gQVNUOjpCcmVhayhXVEZNb3ZlKGJyZWFrVG9rZW4pKTsKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJyZWFrPihXVEZNb3ZlKGJyZWFrT2JqZWN0KSkgfTsK
LSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Q29udGludWU6IHsKLSAgICAgICAgYXV0byBj
b250aW51ZVRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgQ09OU1VNRV9U
WVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byBjb250aW51ZU9iamVjdCA9
IEFTVDo6Q29udGludWUoV1RGTW92ZShjb250aW51ZVRva2VuKSk7Ci0gICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWVSZWY8QVNUOjpDb250aW51ZT4oV1RGTW92ZShjb250aW51ZU9iamVjdCkpIH07
Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZhbGx0aHJvdWdoOiB7Ci0gICAgICAgIGF1
dG8gZmFsbHRocm91Z2hUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENP
TlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gZmFsbHRocm91
Z2hPYmplY3QgPSBBU1Q6OkZhbGx0aHJvdWdoKFdURk1vdmUoZmFsbHRocm91Z2hUb2tlbikpOwot
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RmFsbHRocm91Z2g+KFdURk1vdmUo
ZmFsbHRocm91Z2hPYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSZXR1
cm46IHsKLSAgICAgICAgYXV0byByZXR1cm5Ub2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7
Ci0gICAgICAgIGlmIChhdXRvIHNlbWljb2xvbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OlNlbWlj
b2xvbikpIHsKLSAgICAgICAgICAgIGF1dG8gcmV0dXJuT2JqZWN0ID0gQVNUOjpSZXR1cm4oV1RG
TW92ZShyZXR1cm5Ub2tlbiksIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZVJlZjxBU1Q6OlJldHVybj4oV1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgICAgICB9
Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIEV4cHJlc3Npb24pOwotICAgICAgICBDT05TVU1F
X1RZUEUoZmluYWxTZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gcmV0dXJuT2Jq
ZWN0ID0gQVNUOjpSZXR1cm4oV1RGTW92ZShyZXR1cm5Ub2tlbiksICgqZXhwcmVzc2lvbikubW92
ZVRvVW5pcXVlUHRyKCkpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6UmV0
dXJuPihXVEZNb3ZlKHJldHVybk9iamVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5
cGU6OkNvbnN0YW50OgotICAgIGNhc2UgVG9rZW46OlR5cGU6OkRldmljZToKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpUaHJlYWRncm91cDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWQ6IHsK
LSAgICAgICAgUEFSU0UodmFyaWFibGVEZWNsYXJhdGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25z
KTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpIH07Ci0gICAgfQotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OklkZW50aWZpZXI6IHsKLSAgICAgICAgUEVFS19GVVJUSEVSKG5leHRUb2tlbik7
Ci0gICAgICAgIHN3aXRjaCAobmV4dFRva2VuLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46
OlR5cGU6OklkZW50aWZpZXI6Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2ln
bjoKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjoKLSAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6UXVhbGlmaWVyOiB7Ci0gICAgICAgICAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9u
cywgVmFyaWFibGVEZWNsYXJhdGlvbnMpOwotICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWlj
b2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJh
dGlvbnMpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGVmZmVjdGZ1bEV4cHJlc3Np
b24gPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+
LCBFcnJvcj4+KFsmXSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVy
cm9yPiB7Ci0gICAgICAgICAgICBQQVJTRShyZXN1bHQsIEVmZmVjdGZ1bEV4cHJlc3Npb24pOwot
ICAgICAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoZWZmZWN0ZnVsRXhw
cmVzc2lvbikKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNzaW9u
KTsKLSAgICB9Ci0KLSAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNs
YXJhdGlvbnMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0
ZW1lbnQ+LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0gICAgaWYgKG9yaWdpbi0+dHlw
ZSA9PSBUb2tlbjo6VHlwZTo6U2VtaWNvbG9uKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6QmxvY2s+KCpvcmlnaW4sIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+
PigpKSB9OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNz
aW9uczsKLSAgICBQQVJTRShlZmZlY3RmdWxFeHByZXNzaW9uLCBFZmZlY3RmdWxBc3NpZ25tZW50
KTsKLSAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZWZmZWN0ZnVsRXhwcmVzc2lvbikp
OwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQ
QVJTRShleHByZXNzaW9uLCBFZmZlY3RmdWxBc3NpZ25tZW50KTsKLSAgICAgICAgZXhwcmVzc2lv
bnMuYXBwZW5kKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBpZiAoZXhwcmVz
c2lvbnMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihXVEZNb3ZlKGV4cHJlc3Npb25zWzBdKSkgfTsK
LSAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwot
ICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCwgbV9sZXhlci5uYW1lU3BhY2UoKSk7Ci0gICAgYXV0byBjb21tYUV4cHJlc3Npb24gPSBtYWtl
VW5pcXVlUmVmPEFTVDo6Q29tbWFFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShleHByZXNz
aW9ucykpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50PihXVEZNb3ZlKGNvbW1hRXhwcmVzc2lvbikpIH07Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZUVmZmVjdGZ1bEFzc2lnbm1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgYm9vbCBp
c0VmZmVjdGZ1bCA9IGZhbHNlOwotICAgIFBBUlNFKGV4cHJlc3Npb24sIFBvc3NpYmxlUHJlZml4
LCAmaXNFZmZlY3RmdWwpOwotCi0gICAgaWYgKCFpc0VmZmVjdGZ1bCB8fCBwZWVrVHlwZXM8Ci0g
ICAgICAgIFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1
c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpY
b3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHMKLSAgICA+KCkpIHsKLSAgICAg
ICAgcmV0dXJuIGNvbXBsZXRlQXNzaWdubWVudChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGV4cHJlc3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUxpbWl0
ZWRTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAt
PiBTdWZmaXhFeHByZXNzaW9uCi17Ci0gICAgYXV0byB0eXBlID0gY29uc3VtZVR5cGVzPAotICAg
ICAgICBUb2tlbjo6VHlwZTo6RnVsbFN0b3AsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBcnJvdywK
LSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdHlw
ZSkKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZh
bHNlKTsKLQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6
OkZ1bGxTdG9wOiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2Vu
OjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAg
ICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAg
ICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlk
ZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBpZGVudGlm
aWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6QXJyb3c6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29u
c3VtZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3Vz
KSwgZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVM
b2NhdGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMp
KSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0g
ICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gcGFy
c2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAg
IGlmIChhdXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpS
aWdodFNxdWFyZUJyYWNrZXQpKSB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24o
cHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAg
ICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJl
c3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikp
LCB0cnVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZN
b3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZVN1ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMp
IC0+IFN1ZmZpeEV4cHJlc3Npb24KLXsKLSAgICBhdXRvIHN1ZmZpeCA9IGNvbnN1bWVUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OkZ1bGxTdG9wLAotICAgICAgICBUb2tlbjo6VHlwZTo6QXJy
b3csCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlBsdXNQbHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNNaW51cz4oKTsK
LSAgICBpZiAoIXN1ZmZpeCkKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92
ZShwcmV2aW91cyksIGZhbHNlKTsKLQotICAgIHN3aXRjaCAoc3VmZml4LT50eXBlKSB7Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RnVsbFN0b3A6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
Y29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50
aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZp
b3VzKSwgZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNv
ZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNz
aW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShw
cmV2aW91cyksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRy
dWUpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpBcnJvdzogewotICAgICAgICBhdXRv
IGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAg
ICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlv
bihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJu
IFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0
aW9uLCBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihXVEZNb3ZlKCpz
dWZmaXgpLCBXVEZNb3ZlKHByZXZpb3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhl
cikudG9TdHJpbmcoKSksIHRydWUpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0
U3F1YXJlQnJhY2tldDogewotICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Np
b24oKTsKLSAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZp
eEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgaWYgKGF1dG8g
cmlnaHRTcXVhcmVCcmFja2V0ID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJl
QnJhY2tldCkpIHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+
Y29kZUxvY2F0aW9uKCksICpyaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgcmV0dXJu
IFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4obG9j
YXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpleHByZXNzaW9uKSksIHRydWUpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlv
dXMpLCBmYWxzZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7Ci0g
ICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpz
dWZmaXgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAg
ICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7
Ci0gICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNU
OjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2Fs
bEFyZ3VtZW50cykpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3Vs
dC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNz
aW9uKFdURk1vdmUocmVzdWx0KSwgdHJ1ZSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAg
ICAgQVNTRVJUKHN1ZmZpeC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXNNaW51cyk7Ci0gICAg
ICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZm
aXgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFy
Z3VtZW50cykpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+
b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KFdURk1vdmUocmVzdWx0KSwgdHJ1ZSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6
OnBhcnNlRXhwcmVzc2lvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4KLXsKLSAgICBQQVJTRShmaXJzdCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwp
OwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0g
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAoKmZpcnN0KS0+Y29kZUxvY2F0aW9uKCkuc3RhcnRP
ZmZzZXQoKTsKLSAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZmlyc3QpKTsKLQotICAg
IHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgUEFSU0UoZXhw
cmVzc2lvbiwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgICAgICBleHByZXNzaW9u
cy5hcHBlbmQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIH0KLQotICAgIGlmIChleHByZXNz
aW9ucy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoZXhwcmVzc2lvbnNbMF0p
OwotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLSAg
ICBDb2RlTG9jYXRpb24gbG9jYXRpb24oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbV9sZXhlci5u
YW1lU3BhY2UoKSk7Ci0gICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVz
c2lvbj4obG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKSB9OwotfQotCi1hdXRvIFBhcnNl
cjo6Y29tcGxldGVUZXJuYXJ5Q29uZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4m
JiBwcmVkaWNhdGUpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBDT05TVU1FX1RZUEUocXVlc3Rpb25NYXJrLCBRdWVzdGlvbk1hcmspOwotICAg
IFBBUlNFKGJvZHlFeHByZXNzaW9uLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUoY29s
b24sIENvbG9uKTsKLSAgICBQQVJTRShlbHNlRXhwcmVzc2lvbiwgUG9zc2libGVUZXJuYXJ5Q29u
ZGl0aW9uYWwpOwotCi0gICAgQ29kZUxvY2F0aW9uIHByZWRpY2F0ZUxvY2F0aW9uID0gcHJlZGlj
YXRlLT5jb2RlTG9jYXRpb24oKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGNhc3RBcmd1bWVudHM7Ci0gICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVk
aWNhdGUpKTsKLSAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPihwcmVkaWNhdGVMb2NhdGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0QXJndW1l
bnRzKSk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZWRpY2F0ZUxvY2F0aW9uLCAoKmVs
c2VFeHByZXNzaW9uKS0+Y29kZUxvY2F0aW9uKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVS
ZWY8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoYm9vbENhc3QpLCBX
VEZNb3ZlKCpib2R5RXhwcmVzc2lvbiksIFdURk1vdmUoKmVsc2VFeHByZXNzaW9uKSkgfTsKLX0K
LQotYXV0byBQYXJzZXI6OmNvbXBsZXRlQXNzaWdubWVudChVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiYmIGxlZnQpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBhdXRvIGFzc2lnbm1lbnRPcGVyYXRvciA9IGNvbnN1bWVUeXBlczwKLSAgICAg
ICAgVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1
YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpUaW1lc0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVx
dWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5
cGU6Ok9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscz4oKTsKLSAgICBpZiAoIWFzc2lnbm1l
bnRPcGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFzc2lnbm1lbnRPcGVy
YXRvci5lcnJvcigpKTsKLQotICAgIFBBUlNFKHJpZ2h0LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRp
b25hbCk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uID0geyBsZWZ0LT5jb2RlTG9jYXRpb24o
KSwgKCpyaWdodCktPmNvZGVMb2NhdGlvbigpIH07Ci0KLSAgICBpZiAoYXNzaWdubWVudE9wZXJh
dG9yLT50eXBlID09IFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKQotICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3Zl
KGxlZnQpLCBXVEZNb3ZlKCpyaWdodCkpfTsKLQotICAgIFN0cmluZyBuYW1lOwotICAgIHN3aXRj
aCAoYXNzaWdubWVudE9wZXJhdG9yLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1
c0VxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcisiX3N0cjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3Bl
cmF0b3ItIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRpbWVz
RXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yKiJfc3RyOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3Bl
cmF0b3IvIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1vZEVx
dWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvciUiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9y
XiJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpBbmRFcXVhbHM6
Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3ImIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVG9rZW46OlR5cGU6Ok9yRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yfCJfc3Ry
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxz
OgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yPj4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcjw8Il9z
dHI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxl
ZnQpKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVu
dHM7Ci0gICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5j
ZSgpKTsKLSAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwotICAgIHJl
c3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVz
c2lvbj4obG9jYXRpb24sIFdURk1vdmUobmFtZSksIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsK
LSAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVy
ZW5jZSgpKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9z
c2libGVQcmVmaXgpOwotCi0gICAgaWYgKHBlZWtUeXBlczxUb2tlbjo6VHlwZTo6RXF1YWxzU2ln
biwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpNaW51c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1
YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6QW5kRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNo
aWZ0RXF1YWxzPigpKSB7Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92
ZSgqZXhwcmVzc2lvbikpOwotICAgIH0KLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3Np
YmxlU2hpZnQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBl
eHByZXNzaW9uID0gY29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKmV4cHJlc3Npb24p
KTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChl
eHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVB
ZGQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNz
aW9uID0gY29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgq
ZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxl
dGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqZXhwcmVzc2lvbikpOwot
ICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJl
c3Npb24uZXJyb3IoKSk7Ci0KLSAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgaWYgKG5leHRUb2tl
bi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6UXVlc3Rpb25NYXJrKQotICAgICAgICByZXR1cm4gY29t
cGxldGVUZXJuYXJ5Q29uZGl0aW9uYWwoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIHJldHVy
biBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZUxvZ2ljYWxCaW5h
cnlPcGVyYXRpb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJy
b3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlUmVsYXRpb25hbEJpbmFy
eU9wZXJhdGlvbik7Ci0gICAgcmV0dXJuIGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3Bl
cmF0aW9uKFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21w
bGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiYmIHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8gbG9naWNhbEJpbmFyeU9wZXJhdGlvbiA9IHRyeVR5
cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6T3JPciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFu
ZEFuZCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yLAotICAgICAgICBUb2tlbjo6VHlwZTo6WG9y
LAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kCi0gICAgICAgID4oKSkgewotICAgICAgICBQQVJT
RShuZXh0LCBQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24pOwotICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2Rl
TG9jYXRpb24oKSk7Ci0KLSAgICAgICAgc3dpdGNoIChsb2dpY2FsQmluYXJ5T3BlcmF0aW9uLT50
eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9yT3I6Ci0gICAgICAgICAgICBwcmV2
aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFT
VDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6Ok9yLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92
ZSgqbmV4dCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OkFuZEFuZDoKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2lj
YWxFeHByZXNzaW9uPihsb2NhdGlvbiwgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5k
LCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9yOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxs
QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAgICBjYWxsQXJn
dW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcnwiX3N0
ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpYb3I6IHsKLSAgICAgICAgICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGNhbGxB
cmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yXiJf
c3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChsb2dpY2FsQmluYXJ5
T3BlcmF0aW9uLT50eXBlID09IFRva2VuOjpUeXBlOjpBbmQpOwotICAgICAgICAgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgY2Fs
bEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlvdXMg
PSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3Im
Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB7IFdURk1vdmUocHJldmlvdXMp
IH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJh
dGlvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsK
LSAgICBQQVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVTaGlmdCk7Ci0gICAgcmV0dXJuIGNv
bXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKnBhcnNlZFBy
ZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJp
bmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUg
KGF1dG8gcmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbiA9IHRyeVR5cGVzPAotICAgICAgICBUb2tl
bjo6VHlwZTo6TGVzc1RoYW5TaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5T
aWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVzc1RoYW5PckVxdWFsVG8sCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbywKLSAgICAgICAgVG9rZW46OlR5cGU6OkVx
dWFsQ29tcGFyaXNvbiwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok5vdEVxdWFsCi0gICAgICAgID4o
KSkgewotICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZVNoaWZ0KTsKLSAgICAgICAgQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxv
Y2F0aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2
aW91cykpOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0K
LSAgICAgICAgc3dpdGNoIChyZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50eXBlKSB7Ci0gICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbjogewotICAgICAgICAgICAgcHJldmlv
dXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0
b3I8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduOiB7Ci0g
ICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvcj4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNz
VGhhbk9yRXF1YWxUbzogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8PSJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvOiB7Ci0gICAgICAgICAgICBwcmV2
aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvcj49Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29uOiB7
Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lv
bj4obG9jYXRpb24sICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAg
ICAgICAgQVNTRVJUKHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUgPT0gVG9rZW46OlR5
cGU6Ok5vdEVxdWFsKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShjYWxs
QXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlU2hpZnQo
KSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAg
UEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlQWRkKTsKLSAgICByZXR1cm4gY29tcGxldGVQ
b3NzaWJsZVNoaWZ0KFdURk1vdmUoKnBhcnNlZFByZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2Vy
Ojpjb21wbGV0ZVBvc3NpYmxlU2hpZnQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2
aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewot
ICAgIHdoaWxlIChhdXRvIHNoaWZ0ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpM
ZWZ0U2hpZnQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0Ci0gICAgICAgID4oKSkg
ewotICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZUFkZCk7Ci0gICAgICAgIENvZGVMb2NhdGlv
biBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlv
bigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxB
cmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMp
KTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAg
ICAgIHN3aXRjaCAoc2hpZnQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVm
dFNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcjw8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3Vt
ZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDog
ewotICAgICAgICAgICAgQVNTRVJUKHNoaWZ0LT50eXBlID09IFRva2VuOjpUeXBlOjpSaWdodFNo
aWZ0KTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPj4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3Nz
aWJsZUFkZCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4K
LXsKLSAgICBQQVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVNdWx0aXBseSk7Ci0gICAgcmV0
dXJuIGNvbXBsZXRlUG9zc2libGVBZGQoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQot
YXV0byBQYXJzZXI6OmNvbXBsZXRlUG9zc2libGVBZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPgotewotICAgIHdoaWxlIChhdXRvIGFkZCA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6
VHlwZTo6UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzCi0gICAgICAgID4oKSkgewot
ICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZU11bHRpcGx5KTsKLSAgICAgICAgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0
aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2Fs
bEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91
cykpOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAg
ICAgICAgc3dpdGNoIChhZGQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1
czogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAg
ICAgICAgICAgQVNTRVJUKGFkZC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXMpOwotICAgICAg
ICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0
aW9uLCAib3BlcmF0b3ItIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZN
b3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVNdWx0aXBseSgp
IC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQ
QVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVQcmVmaXgpOwotICAgIHJldHVybiBjb21wbGV0
ZVBvc3NpYmxlTXVsdGlwbHkoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQ
YXJzZXI6OmNvbXBsZXRlUG9zc2libGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiYmIHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJy
b3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8gbXVsdGlwbHkgPSB0cnlUeXBlczwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlN0YXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGUsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpNb2QKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3Np
YmxlUHJlZml4KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2Rl
TG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFy
Z3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBjYWxsQXJndW1lbnRz
LmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAgc3dpdGNoIChtdWx0aXBseS0+dHlw
ZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTdGFyOiB7Ci0gICAgICAgICAgICBwcmV2
aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvcioiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpEaXZpZGU6IHsKLSAgICAgICAg
ICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlv
biwgIm9wZXJhdG9yLyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VS
VChtdWx0aXBseS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TW9kKTsKLSAgICAgICAgICAgIHByZXZp
b3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yJSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91
cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmlzRWZmZWN0
ZnVsKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0g
ICAgaWYgKGF1dG8gcHJlZml4ID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVz
UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzTWludXMsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpQbHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXMsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpUaWxkZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpBbmQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBdCwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlN0YXIKLSAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2li
bGVQcmVmaXgpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKnByZWZpeCwgKCpuZXh0
KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIHN3aXRjaCAocHJlZml4LT50eXBlKSB7Ci0g
ICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7Ci0gICAgICAgICAgICBpZiAoaXNF
ZmZlY3RmdWwpCi0gICAgICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxs
QXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAg
ICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJn
dW1lbnRzKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3Vs
dC0+bmV3VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBXVEZNb3Zl
KHJlc3VsdCkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpNaW51c01p
bnVzOiB7Ci0gICAgICAgICAgICBpZiAoaXNFZmZlY3RmdWwpCi0gICAgICAgICAgICAgICAgKmlz
RWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0
KSk7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxB
cmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZh
cmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJl
c3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yLS0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAgICAgICAgICAgcmVzdWx0
LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+bmV3VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrIl9zdHIsIFdU
Rk1vdmUoY2FsbEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6TWludXM6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdU
Rk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0iX3N0ciwgV1RGTW92ZShjYWxsQXJn
dW1lbnRzKSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpUaWxkZTog
ewotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJn
dW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkp
OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9u
Pihsb2NhdGlvbiwgIm9wZXJhdG9yfiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9Owot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6IHsK
LSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FzdEFyZ3Vt
ZW50czsKLSAgICAgICAgICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsK
LSAgICAgICAgICAgIGF1dG8gYm9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsKLSAg
ICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lv
bj4obG9jYXRpb24sIFdURk1vdmUoYm9vbENhc3QpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6OkFuZDoKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8
QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSwgQVNU
OjpBZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlcykgfTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6QXQ6Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpLCBBU1Q6OkFkZHJl
c3NFc2NhcGVNb2RlOjpFc2NhcGVzKSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
QVNTRVJUKHByZWZpeC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6U3Rhcik7Ci0gICAgICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlv
biwgV1RGTW92ZSgqbmV4dCkpIH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFy
c2VQb3NzaWJsZVN1ZmZpeChpc0VmZmVjdGZ1bCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBv
c3NpYmxlU3VmZml4KGJvb2wgKmlzRWZmZWN0ZnVsKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgUEVFS19GVVJU
SEVSKG5leHRUb2tlbik7Ci0KLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6Oklk
ZW50aWZpZXIgJiYgbmV4dFRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVz
aXMpIHsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgQ2FsbEV4cHJlc3Npb24pOwotICAgICAg
ICBpZiAoaXNFZmZlY3RmdWwpCi0gICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAg
ICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgUEVFSyhzdWZmaXhUb2tlbik7Ci0gICAg
ICAgICAgICBpZiAoc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9wICYm
IHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpBcnJvdyAmJiBzdWZmaXhUb2tlbi0+
dHlwZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlTGltaXRlZFN1ZmZpeE9wZXJh
dG9yKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICAgICAgICAgIGV4cHJlc3Npb24gPSBXVEZN
b3ZlKHJlc3VsdC5yZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBleHByZXNzaW9u
OwotICAgIH0KLQotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBhcmVu
dGhlc2lzICYmIGlzRWZmZWN0ZnVsKQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotCi0g
ICAgUEFSU0UoZXhwcmVzc2lvbiwgVGVybSk7Ci0gICAgYm9vbCBpc0xhc3RTdWZmaXhUb2tlbkVm
ZmVjdGZ1bCA9IGZhbHNlOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFBFRUsoc3VmZml4
VG9rZW4pOwotICAgICAgICBpZiAoc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkZ1
bGxTdG9wCi0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6
QXJyb3cKLSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpM
ZWZ0U3F1YXJlQnJhY2tldAotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9r
ZW46OlR5cGU6OlBsdXNQbHVzCi0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBU
b2tlbjo6VHlwZTo6TWludXNNaW51cykgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgaXNMYXN0U3VmZml4VG9rZW5FZmZlY3RmdWwgPSBzdWZmaXhUb2tlbi0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6UGx1c1BsdXMgfHwgc3VmZml4VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5
cGU6Ok1pbnVzTWludXM7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VTdWZmaXhPcGVyYXRv
cihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgICAgIGV4cHJlc3Npb24gPSBXVEZNb3ZlKHJl
c3VsdC5yZXN1bHQpOwotICAgIH0KLSAgICBpZiAoaXNMYXN0U3VmZml4VG9rZW5FZmZlY3RmdWwg
JiYgaXNFZmZlY3RmdWwpCi0gICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgcmV0dXJu
IGV4cHJlc3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNhbGxFeHByZXNzaW9uKCkgLT4g
RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIENPTlNV
TUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBhdXRvIGNhbGxOYW1lID0gbmFtZS0+c3Ry
aW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJl
bnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPj4gYXJndW1lbnRzOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdo
dFBhcmVudGhlc2lzKSkKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZShjYWxsTmFtZSksIFdURk1vdmUoYXJn
dW1lbnRzKSkgfTsKLQotICAgIFBBUlNFKGZpcnN0QXJndW1lbnQsIFBvc3NpYmxlVGVybmFyeUNv
bmRpdGlvbmFsKTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmZpcnN0QXJndW1lbnQp
KTsKLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBB
UlNFKGFyZ3VtZW50LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoV1RGTW92ZSgqYXJndW1lbnQpKTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZ
UEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKCpuYW1lLCAqcmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGNhbGxOYW1l
KSwgV1RGTW92ZShhcmd1bWVudHMpKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUZXJtKCkg
LT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIGF1
dG8gdHlwZSA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkludExpdGVyYWws
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6
OkZsb2F0TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok51bGwsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpUcnVlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmFsc2UsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpJZGVudGlmaWVyLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lz
PigpOwotICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUu
ZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpJbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQo
dHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWVSZWY8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsK
LSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VWludExpdGVyYWw6IHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwot
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZh
bHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6RmxvYXRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBmbG9hdExpdGVy
YWxUb0Zsb2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RmxvYXRMaXRlcmFsPigqdHlwZSwgKnZh
bHVlKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpOdWxsOgotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIidudWxsJyBpcyBhIHJlc2VydmVkIGtleXdvcmQuIiwg
dHlwZS0+Y29kZUxvY2F0aW9uKSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VHJ1ZToKLSAgICAg
ICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdHlwZSwgdHJ1
ZSkgfTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxzZToKLSAgICAgICAgcmV0dXJuIHsgbWFr
ZVVuaXF1ZVJlZjxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdHlwZSwgZmFsc2UpIH07Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllcjogewotICAgICAgICBhdXRvIG5hbWUgPSB0eXBlLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oKnR5cGUsIFdURk1vdmUobmFtZSkpIH07Ci0g
ICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUgPT0gVG9rZW46
OlR5cGU6OkxlZnRQYXJlbnRoZXNpcyk7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIEV4cHJl
c3Npb24pOwotICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJl
bnRoZXNpcyk7Ci0KLSAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSgqZXhwcmVzc2lvbikgfTsKLSAg
ICB9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjRlZWEzMjZkYjQ3NDc3ZTZlOWUzMzY5NjMzN2I2ZTY1ZDMxNzc2
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hM
U0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNp
bmdNb2RlLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
Y2xhc3MgUHJvZ3JhbTsKLQotY2xhc3MgUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gcGFyc2UoUHJvZ3JhbSYsIFN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlLCBBU1Q6
Ok5hbWVTcGFjZSk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVl
ZCB0aGlzCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODM1NwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgYmFja3RyYWNraW5nU2NvcGUoc3RkOjpm
dW5jdGlvbjxUKCk+IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgYXV0byBzdGF0ZSA9IG1fbGV4
ZXIuc3RhdGUoKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjYWxsYmFjaygpOwotICAgICAgICBp
ZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgbV9sZXhlci5z
ZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgZW51bSBjbGFzcyBUcnlUb1BlZWsgewotICAgICAgICBZZXMsCi0gICAgICAgIE5vCi0g
ICAgfTsKLSAgICBVbmV4cGVjdGVkPEVycm9yPiBmYWlsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
VHJ5VG9QZWVrID0gVHJ5VG9QZWVrOjpZZXMpOwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4g
cGVlaygpOwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gcGVla0Z1cnRoZXIoKTsKLSAgICBi
b29sIHBlZWtUeXBlKFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4g
dHlwZXM+Ci0gICAgYm9vbCBwZWVrVHlwZXMoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0
cnlUeXBlKFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+
Ci0gICAgc3RkOjpvcHRpb25hbDxUb2tlbj4gdHJ5VHlwZXMoKTsKLSAgICBFeHBlY3RlZDxUb2tl
biwgRXJyb3I+IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8VG9rZW46
OlR5cGUuLi4gdHlwZXM+Ci0gICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZXMo
KTsKLQotICAgIEV4cGVjdGVkPFZhcmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPiBjb25zdW1l
SW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiBjb25zdW1l
Tm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkNvbnN0YW50
RXhwcmVzc2lvbiwgRXJyb3I+IHBhcnNlQ29uc3RhbnRFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0
ZWQ8QVNUOjpUeXBlQXJndW1lbnQsIEVycm9yPiBwYXJzZVR5cGVBcmd1bWVudCgpOwotICAgIEV4
cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50cywgRXJyb3I+IHBhcnNlVHlwZUFyZ3VtZW50cygpOwot
ICAgIHN0cnVjdCBUeXBlU3VmZml4QWJicmV2aWF0ZWQgewotICAgICAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb247Ci0gICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBudW1FbGVtZW50czsKLSAgICB9OwotICAgIEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJy
ZXZpYXRlZCwgRXJyb3I+IHBhcnNlVHlwZVN1ZmZpeEFiYnJldmlhdGVkKCk7Ci0gICAgc3RydWN0
IFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlv
bjsKLSAgICAgICAgVG9rZW4gdG9rZW47Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8QVNUOjpBZGRy
ZXNzU3BhY2U+IGFkZHJlc3NTcGFjZTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bnVtRWxlbWVudHM7Ci0gICAgfTsKLSAgICBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0
ZWQsIEVycm9yPiBwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpOwotICAgIEV4cGVjdGVk
PFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlQWRkcmVzc1NwYWNlVHlwZSgpOwot
ICAgIEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+IHBhcnNlTm9uQWRkcmVz
c1NwYWNlVHlwZSgpOwotICAgIEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+
IHBhcnNlVHlwZSgpOwotICAgIEV4cGVjdGVkPEFTVDo6VHlwZURlZmluaXRpb24sIEVycm9yPiBw
YXJzZVR5cGVEZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCdWlsdEluU2VtYW50aWMs
IEVycm9yPiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYywgRXJyb3I+IHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpOwotICAgIEV4cGVjdGVk
PEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLCBFcnJvcj4gcGFyc2VTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYywgRXJyb3I+IHBhcnNlU3RhZ2VJbk91dFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8
c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4gcGFyc2VTZW1hbnRpYygpOwot
ICAgIEFTVDo6UXVhbGlmaWVycyBwYXJzZVF1YWxpZmllcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQsIEVycm9yPiBwYXJzZVN0cnVjdHVyZUVsZW1lbnQoKTsKLSAgICBF
eHBlY3RlZDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24sIEVycm9yPiBwYXJzZVN0cnVjdHVyZURl
ZmluaXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRXJy
b3I+IHBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlciwgRXJyb3I+IHBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZh
dWx0VmFsdWUpOwotICAgIEV4cGVjdGVkPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBFcnJv
cj4gcGFyc2VOYXRpdmVUeXBlRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwgRXJyb3I+IHBhcnNlTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+IHBhcnNl
QXR0cmlidXRlQmxvY2soKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24s
IEVycm9yPiBwYXJzZVBhcmFtZXRlcigpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnMsIEVycm9yPiBwYXJzZVBhcmFtZXRlcnMoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0aW9u
KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VW
ZXJ0ZXhPckZyYWdtZW50RnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlUmVndWxhckZ1bmN0aW9uRGVjbGFyYXRp
b24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJz
ZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4
cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VGdW5jdGlvbkRlZmlu
aXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIEVy
cm9yPiBwYXJzZU5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLQotICAgIEV4cGVjdGVkPEFT
VDo6QmxvY2ssIEVycm9yPiBwYXJzZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpCbG9jaywg
RXJyb3I+IHBhcnNlQmxvY2tCb2R5KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpJZlN0YXRlbWVudCwg
RXJyb3I+IHBhcnNlSWZTdGF0ZW1lbnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN3aXRjaFN0YXRl
bWVudCwgRXJyb3I+IHBhcnNlU3dpdGNoU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpT
d2l0Y2hDYXNlLCBFcnJvcj4gcGFyc2VTd2l0Y2hDYXNlKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpG
b3JMb29wLCBFcnJvcj4gcGFyc2VGb3JMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpXaGlsZUxv
b3AsIEVycm9yPiBwYXJzZVdoaWxlTG9vcCgpOwotICAgIEV4cGVjdGVkPEFTVDo6RG9XaGlsZUxv
b3AsIEVycm9yPiBwYXJzZURvV2hpbGVMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYmKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50LCBFcnJvcj4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpOwotICAgIEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPiBwYXJzZVN0YXRlbWVudCgpOwotCi0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+IHBhcnNlRWZmZWN0
ZnVsRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4gcGFyc2VFZmZlY3RmdWxBc3NpZ25tZW50KCk7Ci0gICAgc3RydWN0IFN1ZmZpeEV4
cHJlc3Npb24gewotICAgICAgICBTdWZmaXhFeHByZXNzaW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYgcmVzdWx0LCBib29sIHN1Y2Nlc3MpCi0gICAgICAgICAgICA6IHJlc3VsdChXVEZN
b3ZlKHJlc3VsdCkpCi0gICAgICAgICAgICAsIHN1Y2Nlc3Moc3VjY2VzcykKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4gcmVzdWx0Owot
ICAgICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBzdWNjZXNzOyB9Ci0gICAgfTsKLSAgICBTdWZmaXhFeHByZXNzaW9uIHBhcnNlTGltaXRl
ZFN1ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYpOwotICAgIFN1ZmZp
eEV4cHJlc3Npb24gcGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiYmKTsKLQotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4g
cGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7Ci0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVRlcm5hcnlDb25k
aXRpb25hbChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSk7Ci0gICAgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZUFzc2lnbm1l
bnQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBsZWZ0KTsKLSAgICBFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVMb2dpY2FsQmluYXJ5
T3BlcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPiBjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9u
KCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21w
bGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVTaGlmdCgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZUFkZCgpOwotICAgIEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUFkZChV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVNdWx0aXBseSgpOwot
ICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQ
b3NzaWJsZU11bHRpcGx5KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwot
ICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3Nz
aWJsZVByZWZpeChib29sICppc0VmZmVjdGZ1bCA9IG51bGxwdHIpOwotICAgIEV4cGVjdGVkPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVN1ZmZpeChib29s
ICppc0VmZmVjdGZ1bCA9IG51bGxwdHIpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VDYWxsRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VUZXJtKCk7Ci0KLSAgICBMZXhl
ciBtX2xleGVyOwotICAgIFBhcnNpbmdNb2RlIG1fbW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2luZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2luZ01vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRm
MDczNzZjZjhkNDBlYzdiYThjMGNhMzcwNzIzNDBkNDYyMDFkMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotZW51bSBjbGFz
cyBQYXJzaW5nTW9kZSA6IHVpbnQ4X3QgewotICAgIFN0YW5kYXJkTGlicmFyeSwKLSAgICBVc2Vy
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3MDU5ODgwZDUzZGVjYThiNjQyNGZl
MjYwNTVmZWEwY2VlZmIyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5l
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1lbnVtIGNsYXNzIFZlcnRleEZvcm1hdCA6IHVpbnQ4X3QgewotICAgIEZsb2F0UjMyRzMyQjMy
QTMyLAotICAgIEZsb2F0UjMyRzMyQjMyLAotICAgIEZsb2F0UjMyRzMyLAotICAgIEZsb2F0UjMy
Ci19OwotCi1zdHJ1Y3QgVmVydGV4QXR0cmlidXRlIHsKLSAgICBWZXJ0ZXhGb3JtYXQgdmVydGV4
Rm9ybWF0OwotICAgIHVuc2lnbmVkIHNoYWRlckxvY2F0aW9uOwotICAgIHVuc2lnbmVkIG1ldGFs
TG9jYXRpb247Ci19OwotCi11c2luZyBWZXJ0ZXhBdHRyaWJ1dGVzID0gVmVjdG9yPFZlcnRleEF0
dHJpYnV0ZT47Ci0KLS8vIEZJWE1FOiBBZGQgYmFjayA8IDMyIGJpdCB0ZXh0dXJlIHZhbHVlcyBh
bmQgZmlndXJlIG91dCBob3cgdG8gYm94IHRoZW0gaW4gd2lkZXIgdHlwZXMgd2hlbiB3ZSBsb2Fk
IGZyb20gdGhlbS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAzMTUKLQotZW51bSBjbGFzcyBUZXh0dXJlRm9ybWF0IHsKLSAgICBSOFVub3JtLAotICAgIFI4
VW5vcm1TcmdiLAotICAgIFI4U25vcm0sCi0gICAgUjE2VW5vcm0sCi0gICAgUjE2U25vcm0sCi0g
ICAgUjE2RmxvYXQsCi0gICAgUkc4VW5vcm0sCi0gICAgUkc4VW5vcm1TcmdiLAotICAgIFJHOFNu
b3JtLAotICAgIEI1RzZSNVVub3JtLAotICAgIFIzMlVpbnQsCi0gICAgUjMyU2ludCwKLSAgICBS
MzJGbG9hdCwKLSAgICBSRzE2VW5vcm0sCi0gICAgUkcxNlNub3JtLAotICAgIFJHMTZGbG9hdCwK
LSAgICBSR0JBOFVub3JtLAotICAgIFJHQkE4VW5vcm1TcmdiLAotICAgIFJHQkE4U25vcm0sCi0g
ICAgQkdSQThVbm9ybSwKLSAgICBCR1JBOFVub3JtU3JnYiwKLSAgICBSR0IxMEEyVW5vcm0sCi0g
ICAgUkcxMUIxMEZsb2F0LAotICAgIFJHMzJVaW50LAotICAgIFJHMzJTaW50LAotICAgIFJHMzJG
bG9hdCwKLSAgICBSR0JBMTZVbm9ybSwKLSAgICBSR0JBMTZTbm9ybSwKLSAgICBSR0JBMTZGbG9h
dCwKLSAgICBSR0JBMzJVaW50LAotICAgIFJHQkEzMlNpbnQsCi0gICAgUkdCQTMyRmxvYXQKLX07
Ci0KLXN0cnVjdCBBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgVGV4dHVyZUZvcm1hdCB0ZXh0
dXJlRm9ybWF0OwotICAgIHVuc2lnbmVkIG5hbWU7Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudHNT
dGF0ZURlc2NyaXB0b3IgewotICAgIFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4gYXR0YWNo
bWVudERlc2NyaXB0b3JzOwotICAgIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOwotfTsKLQotZW51bSBjbGFzcyBTaGFk
ZXJTdGFnZSA6IHVpbnQ4X3QgewotICAgIE5vbmUgPSAwLAotICAgIFZlcnRleCA9IDEgPDwgMCwK
LSAgICBGcmFnbWVudCA9IDEgPDwgMSwKLSAgICBDb21wdXRlID0gMSA8PCAyCi19OwotCi1zdHJ1
Y3QgVW5pZm9ybUJ1ZmZlckJpbmRpbmcgewotICAgIHVuc2lnbmVkIGxlbmd0aE5hbWU7Ci19Owot
Ci1zdHJ1Y3QgU2FtcGxlckJpbmRpbmcgewotfTsKLQotc3RydWN0IFRleHR1cmVCaW5kaW5nIHsK
LX07Ci0KLXN0cnVjdCBTdG9yYWdlQnVmZmVyQmluZGluZyB7Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
TmFtZTsKLX07Ci0KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MTY4IEFkZCB0aGUgZHluYW1pYyB0eXBlcwotCi1zdHJ1Y3QgQmluZGluZyB7Ci0g
ICAgdXNpbmcgQmluZGluZ0RldGFpbHMgPSBWYXJpYW50PFVuaWZvcm1CdWZmZXJCaW5kaW5nLCBT
YW1wbGVyQmluZGluZywgVGV4dHVyZUJpbmRpbmcsIFN0b3JhZ2VCdWZmZXJCaW5kaW5nPjsKLSAg
ICBPcHRpb25TZXQ8U2hhZGVyU3RhZ2U+IHZpc2liaWxpdHk7Ci0gICAgQmluZGluZ0RldGFpbHMg
YmluZGluZzsKLSAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWU7Ci0gICAgdW5zaWduZWQgZXh0ZXJu
YWxOYW1lOwotfTsKLQotc3RydWN0IEJpbmRHcm91cCB7Ci0gICAgVmVjdG9yPEJpbmRpbmc+IGJp
bmRpbmdzOwotICAgIHVuc2lnbmVkIG5hbWU7Ci19OwotCi11c2luZyBMYXlvdXQgPSBWZWN0b3I8
QmluZEdyb3VwPjsKLQotc3RydWN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7Ci0gICAgVmVy
dGV4QXR0cmlidXRlcyB2ZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIEF0dGFjaG1lbnRzU3RhdGVEZXNj
cmlwdG9yIGF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yOwotICAgIExheW91dCBsYXlvdXQ7Ci0g
ICAgU3RyaW5nIHZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIFN0cmluZyBmcmFnbWVudEVudHJ5
UG9pbnROYW1lOwotfTsKLQotc3RydWN0IENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgewotICAg
IExheW91dCBsYXlvdXQ7Ci0gICAgU3RyaW5nIGVudHJ5UG9pbnROYW1lOwotfTsKLQotdXNpbmcg
UGlwZWxpbmVEZXNjcmlwdG9yID0gVmFyaWFudDxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I+OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBh
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QyYzVjYWM0M2M5NTlhM2U3MThk
MGEwYjQ4ZWJjMWM0ZTRiODM1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBh
cmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVER1bXBlci5oIgotI2luY2x1ZGUg
IldITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCIK
LSNpbmNsdWRlICJXSExTTENoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTENvbXB1dGVEaW1lbnNp
b25zLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oIgotI2luY2x1ZGUg
IldITFNMSGlnaFpvbWJpZUZpbmRlci5oIgotI2luY2x1ZGUgIldITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCIKLSNpbmNsdWRlICJX
SExTTE5hbWVSZXNvbHZlci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xQYXJzZXIuaCIKLSNpbmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGlt
ZXMuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5
UmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNs
dWRlICJXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRp
Y01hdGNoZXIuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIgot
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hM
U0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplRW51
bWVyYXRpb25GdW5jdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBTaGFkZXJN
b2R1bGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgU2hh
ZGVyTW9kdWxlKGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpCi0gICAgICAgIDogd2hsc2xTb3Vy
Y2Uod2hsc2xTb3VyY2UpCi0gICAgewotICAgIH0KLQotICAgIFN0cmluZyB3aGxzbFNvdXJjZTsK
LX07Ci0KLX0KLQotfQotCi1uYW1lc3BhY2Ugc3RkIHsKLQotdm9pZCBkZWZhdWx0X2RlbGV0ZTxX
ZWJDb3JlOjpXSExTTDo6U2hhZGVyTW9kdWxlPjo6b3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6
U2hhZGVyTW9kdWxlKiBzaGFkZXJNb2R1bGUpIGNvbnN0Ci17Ci0gICAgZGVsZXRlIHNoYWRlck1v
ZHVsZTsKLX0KLQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsK
LXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7Ci1zdGF0
aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEF0RW5kID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHBy
IGJvb2wgYWx3YXlzRHVtcFBhc3NGYWlsdXJlcyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBi
b29sIGR1bXBQYXNzRmFpbHVyZSA9IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8fCBkdW1wQVNUQWZ0
ZXJQYXJzaW5nIHx8IGR1bXBBU1RBdEVuZCB8fCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzOwotc3Rh
dGljIGNvbnN0ZXhwciBib29sIGR1bXBQaGFzZVRpbWVzID0gZmFsc2U7Ci0KLXN0YXRpYyBjb25z
dGV4cHIgYm9vbCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkgPSBmYWxzZTsKLQotc3RhdGljIGJv
b2wgZHVtcEFTVElmTmVlZGVkKGJvb2wgc2hvdWxkRHVtcCwgUHJvZ3JhbSYgcHJvZ3JhbSwgY29u
c3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICBpZiAoc2hvdWxkRHVtcCkgewotICAgICAgICBkYXRh
TG9nTG4obWVzc2FnZSk7Ci0gICAgICAgIGR1bXBBU1QocHJvZ3JhbSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgZHVt
cEFTVEFmdGVyUGFyc2luZ0lmTmVlZGVkKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgcmV0dXJu
IGR1bXBBU1RJZk5lZWRlZChkdW1wQVNUQWZ0ZXJQYXJzaW5nLCBwcm9ncmFtLCAiQVNUIGFmdGVy
IHBhcnNpbmciKTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVl
ZGVkKFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgcmV0dXJu
IGR1bXBBU1RJZk5lZWRlZChkdW1wQVNUQmVmb3JlRWFjaFBhc3MsIHByb2dyYW0sIG1lc3NhZ2Up
OwotfQotCi1zdGF0aWMgYm9vbCBkdW1wQVNUQXRFbmRJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFt
KQotewotICAgIHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEF0RW5kLCBwcm9ncmFtLCAi
QVNUIGF0IGVuZCIpOwotfQotCi11c2luZyBQaGFzZVRpbWVzID0gVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFNlY29uZHM+PjsKLQotc3RhdGljIHZvaWQgbG9nUGhhc2VUaW1lcyhQaGFzZVRpbWVz
JiBwaGFzZVRpbWVzKQotewotICAgIGlmICghZHVtcFBoYXNlVGltZXMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAoYXV0byYgZW50cnkgOiBwaGFzZVRpbWVzKQotICAgICAgICBkYXRhTG9n
TG4oZW50cnkuZmlyc3QsICI6ICIsIGVudHJ5LnNlY29uZC5taWxsaXNlY29uZHMoKSwgIiBtcyIp
OwotfQotCi1jbGFzcyBQaGFzZVRpbWVyIHsKLXB1YmxpYzoKLSAgICBQaGFzZVRpbWVyKGNvbnN0
IGNoYXIqIHBoYXNlTmFtZSwgUGhhc2VUaW1lcyYgcGhhc2VUaW1lcykKLSAgICAgICAgOiBtX3Bo
YXNlVGltZXMocGhhc2VUaW1lcykKLSAgICB7Ci0gICAgICAgIGlmIChkdW1wUGhhc2VUaW1lcykg
ewotICAgICAgICAgICAgbV9waGFzZU5hbWUgPSBwaGFzZU5hbWU7Ci0gICAgICAgICAgICBtX3N0
YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+UGhh
c2VUaW1lcigpCi0gICAgewotICAgICAgICBpZiAoZHVtcFBoYXNlVGltZXMpIHsKLSAgICAgICAg
ICAgIGF1dG8gdG90YWxUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0OwotICAg
ICAgICAgICAgbV9waGFzZVRpbWVzLmFwcGVuZCh7IG1fcGhhc2VOYW1lLCB0b3RhbFRpbWUgfSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fcGhhc2VOYW1lOwot
ICAgIFBoYXNlVGltZXMmIG1fcGhhc2VUaW1lczsKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnQ7
Ci19OwotCi1VbmlxdWVSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3Qg
U3RyaW5nJiB3aGxzbFNvdXJjZSkKLXsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg3MiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIGFz
IG11Y2ggd29yayBmcm9tIHByZXBhcmUoKSBpbnRvIGhlcmUgYXMgcG9zc2libGUuCi0gICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8U2hhZGVyTW9kdWxlPih3aGxzbFNvdXJjZSk7Ci19Ci0KLSNkZWZp
bmUgQ0hFQ0tfUEFTUyhwYXNzLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgZHVtcEFTVEJl
dHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYmVmb3JlICIgIyBwYXNzKTsgXAot
ICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCi0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gcGFzcyhfX1ZBX0FSR1NfXyk7IFwKLSAgICAgICAgaWYgKCFyZXN1
bHQpIHsgXAotICAgICAgICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkgXAotICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbigiZmFpbGVkIHBhc3M6ICIgIyBwYXNzLCBMZXhlcjo6ZXJyb3JTdHJpbmco
cmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7IFwKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocmVzdWx0LmVycm9y
KCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7IFwKLSAgICAgICAgfSBcCi0gICAgfSB3
aGlsZSAoMCkKLQotI2RlZmluZSBSVU5fUEFTUyhwYXNzLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAg
ICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCNwYXNzLCBwaGFzZVRpbWVzKTsgXAotICAgICAg
ICBkdW1wQVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBiZWZvcmUgIiAj
IHBhc3MpOyBcCi0gICAgICAgIHBhc3MoX19WQV9BUkdTX18pOyBcCi0gICAgfSB3aGlsZSAoMCkK
LQotc3RhdGljIEV4cGVjdGVkPFByb2dyYW0sIFN0cmluZz4gcHJlcGFyZVNoYXJlZChQaGFzZVRp
bWVzJiBwaGFzZVRpbWVzLCBjb25zdCBTdHJpbmcmIHdobHNsU291cmNlMSwgY29uc3QgU3RyaW5n
KiB3aGxzbFNvdXJjZTIgPSBudWxscHRyKQotewotICAgIFByb2dyYW0gcHJvZ3JhbTsKLSAgICBQ
YXJzZXIgcGFyc2VyOwotCi0gICAgewotICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0
Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0KLSAgICAgICAg
UGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwYXJzZSIsIHBoYXNlVGltZXMpOwotICAgICAgICBhdXRv
IHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sIHdobHNsU291cmNlMSwgUGFyc2lu
Z01vZGU6OlVzZXIsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICAgICAgaWYgKCFw
YXJzZVJlc3VsdCkgewotICAgICAgICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkKLSAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6
OmVycm9yU3RyaW5nKHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3Vy
Y2UyKSk7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3Ry
aW5nKHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHdobHNsU291cmNlMikgewotICAgICAgICAgICAgcHJvZ3Jh
bS5uYW1lQ29udGV4dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVT
cGFjZTIpOwotICAgICAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9n
cmFtLCAqd2hsc2xTb3VyY2UyLCBQYXJzaW5nTW9kZTo6VXNlciwgQVNUOjpOYW1lU3BhY2U6Ok5h
bWVTcGFjZTIpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkgewotICAgICAgICAgICAg
ICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
ZmFpbGVkIHRvIHBhcnNlIHRoZSBwcm9ncmFtOiAiLCBMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VS
ZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKHBhcnNlUmVzdWx0
LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2UyKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgcHJvZ3JhbS5uYW1lQ29udGV4dCgpLnNldEN1cnJlbnROYW1lU3Bh
Y2UoQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImluY2x1ZGVTdGFuZGFyZExpYnJhcnkiLCBwaGFz
ZVRpbWVzKTsKLSAgICAgICAgaW5jbHVkZVN0YW5kYXJkTGlicmFyeShwcm9ncmFtLCBwYXJzZXIs
IHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSk7Ci0gICAgfQotCi0gICAgaWYgKCFkdW1wQVNUQmV0
d2VlbkVhY2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBhZnRlciBwYXJzaW5nIikpCi0gICAg
ICAgIGR1bXBBU1RBZnRlclBhcnNpbmdJZk5lZWRlZChwcm9ncmFtKTsKLQotICAgIE5hbWVSZXNv
bHZlciBuYW1lUmVzb2x2ZXIocHJvZ3JhbS5uYW1lQ29udGV4dCgpKTsKLSAgICBDSEVDS19QQVNT
KHJlc29sdmVOYW1lc0luVHlwZXMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hFQ0tf
UEFTUyhjaGVja1JlY3Vyc2l2ZVR5cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKHN5bnRo
ZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhyZXNv
bHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7Ci0gICAgQ0hF
Q0tfUEFTUyhzeW50aGVzaXplQ29uc3RydWN0b3JzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNT
KGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zLCBwcm9ncmFtKTsKLQotICAgIENIRUNLX1BBU1MoY2hl
Y2ssIHByb2dyYW0pOwotICAgIFJVTl9QQVNTKHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMsIHByb2dyYW0pOwotCi0gICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlwZXMs
IHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJvZ3Jh
bSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1JlZmVyZW5jZVR5cGVzLCBwcm9ncmFtKTsKLSAgICBS
VU5fUEFTUyhyZXNvbHZlUHJvcGVydGllcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MoZmluZEhp
Z2hab21iaWVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrU3RhdGVtZW50QmVoYXZp
b3IsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWN1cnNpb24sIHByb2dyYW0pOwot
ICAgIENIRUNLX1BBU1MoY2hlY2tGdW5jdGlvblN0YWdlcywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BB
U1MocHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcywgcHJvZ3JhbSk7Ci0KLSAgICBkdW1wQVNUQXRF
bmRJZk5lZWRlZChwcm9ncmFtKTsKLQotICAgIHJldHVybiBwcm9ncmFtOwotfQotCi1FeHBlY3Rl
ZDxSZW5kZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVyTW9kdWxl
JiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGNvbnN0IFNoYWRlck1vZHVsZSogZnJhZ21lbnRTaGFkZXJN
b2R1bGUsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KQotewotICAgIFBoYXNlVGltZXMgcGhhc2VUaW1lczsKLSAgICBNZXRhbDo6UmVuZGVyTWV0YWxD
b2RlIGdlbmVyYXRlZENvZGU7Ci0KLSAgICB7Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1l
cigicHJlcGFyZSB0b3RhbCIsIHBoYXNlVGltZXMpOwotICAgICAgICBjb25zdCBTdHJpbmcqIHNl
Y29uZFNoYWRlciA9IG51bGxwdHI7Ci0gICAgICAgIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRl
ciA9IGZhbHNlOwotICAgICAgICBpZiAoZnJhZ21lbnRTaGFkZXJNb2R1bGUgJiYgZnJhZ21lbnRT
aGFkZXJNb2R1bGUgIT0gJnZlcnRleFNoYWRlck1vZHVsZSkgewotICAgICAgICAgICAgc2Vjb25k
U2hhZGVyID0gJmZyYWdtZW50U2hhZGVyTW9kdWxlLT53aGxzbFNvdXJjZTsKLSAgICAgICAgICAg
IGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8g
cHJvZ3JhbSA9IHByZXBhcmVTaGFyZWQocGhhc2VUaW1lcywgdmVydGV4U2hhZGVyTW9kdWxlLndo
bHNsU291cmNlLCBzZWNvbmRTaGFkZXIpOwotICAgICAgICBpZiAoIXByb2dyYW0pCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQotICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRp
Y3MiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNl
bWFudGljcygqcHJvZ3JhbSwgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBkaXN0aW5jdEZyYWdt
ZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlck1vZHVsZSk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNo
ZWRTZW1hbnRpY3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVy
OjplcnJvclN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3RyKSwgdmVy
dGV4U2hhZGVyTW9kdWxlLndobHNsU291cmNlLCBzZWNvbmRTaGFkZXIpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigiZ2VuZXJhdGVN
ZXRhbENvZGUiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIGdlbmVyYXRlZENvZGUgPSBNZXRh
bDo6Z2VuZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1vdmUoKm1hdGNoZWRTZW1hbnRpY3Mp
LCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGxvZ1BoYXNlVGltZXMocGhhc2VUaW1lcyk7Ci0KLSAgICBSZW5kZXJQcmVwYXJlUmVzdWx0
IHJlc3VsdDsKLSAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUu
bWV0YWxTb3VyY2UpOwotICAgIHJlc3VsdC5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUgPSBX
VEZNb3ZlKGdlbmVyYXRlZENvZGUubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lKTsKLSAgICBy
ZXN1bHQubWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENv
ZGUubWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLUV4cGVjdGVkPENvbXB1dGVQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3Qg
U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IpCi17Ci0gICAgUGhhc2VUaW1lcyBwaGFzZVRpbWVzOwot
ICAgIE1ldGFsOjpDb21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlZENvZGU7Ci0gICAgc3RkOjpvcHRp
b25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICB7Ci0gICAg
ICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicHJlcGFyZSB0b3RhbCIsIHBoYXNlVGltZXMpOwot
ICAgICAgICBhdXRvIHByb2dyYW0gPSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHNoYWRlck1v
ZHVsZS53aGxzbFNvdXJjZSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwotCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBw
aGFzZVRpbWVzKTsKLSAgICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGlj
cygqcHJvZ3JhbSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgICAgICAgICBpZiAo
IW1hdGNoZWRTZW1hbnRpY3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KExleGVyOjplcnJvclN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNoIHNlbWFudGljcyJfc3Ry
KSwgc2hhZGVyTW9kdWxlLndobHNsU291cmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0g
ICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImNvbXB1dGVEaW1lbnNpb25zIiwgcGhh
c2VUaW1lcyk7Ci0gICAgICAgICAgICBjb21wdXRlRGltZW5zaW9ucyA9IFdITFNMOjpjb21wdXRl
RGltZW5zaW9ucygqcHJvZ3JhbSwgKm1hdGNoZWRTZW1hbnRpY3MtPnNoYWRlcik7Ci0gICAgICAg
ICAgICBpZiAoIWNvbXB1dGVEaW1lbnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBjb21w
dXRlIGRpbWVuc2lvbnMiX3N0ciksIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJnZW5l
cmF0ZU1ldGFsQ29kZSIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgZ2VuZXJhdGVkQ29kZSA9
IE1ldGFsOjpnZW5lcmF0ZU1ldGFsQ29kZSgqcHJvZ3JhbSwgV1RGTW92ZSgqbWF0Y2hlZFNlbWFu
dGljcyksIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0KTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGxvZ1BoYXNlVGltZXMocGhhc2VUaW1lcyk7Ci0KLSAgICBDb21wdXRlUHJlcGFy
ZVJlc3VsdCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92ZShnZW5lcmF0
ZWRDb2RlLm1ldGFsU291cmNlKTsKLSAgICByZXN1bHQubWFuZ2xlZEVudHJ5UG9pbnROYW1lID0g
V1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRFbnRyeVBvaW50TmFtZSk7Ci0gICAgcmVzdWx0
LmNvbXB1dGVEaW1lbnNpb25zID0gV1RGTW92ZSgqY29tcHV0ZURpbWVuc2lvbnMpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMzM5YWJiOTQzZThkOGNhODNmZjRmNDE5ODMzYjIzODc2
Y2E0M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gSGlkZSB0aGUgY29udGVudHMg
b2YgdGhlIFNoYWRlck1vZHVsZS4gQ2xpZW50cyBvZiB0aGUgY29tcGlsZXIgc2hvdWxkbid0IGNh
cmUgd2hhdCdzIGluc2lkZSBpdC4KLXN0cnVjdCBTaGFkZXJNb2R1bGU7Ci0KLX0KLQotfQotCi1u
YW1lc3BhY2Ugc3RkIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29y
ZTo6V0hMU0w6OlNoYWRlck1vZHVsZT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShXZWJDb3JlOjpX
SExTTDo6U2hhZGVyTW9kdWxlKikgY29uc3Q7Ci19OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29tcGls
ZVRpbWVzID0gZmFsc2U7Ci0KLVVuaXF1ZVJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1v
ZHVsZShjb25zdCBTdHJpbmcmIHdobHNsU291cmNlKTsKLQotc3RydWN0IFJlbmRlclByZXBhcmVS
ZXN1bHQgewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWV0YWw6Ok1hbmds
ZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1ldGFsOjpN
YW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLUV4
cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJN
b2R1bGUmIHZlcnRleFNoYWRlck1vZHVsZSwgY29uc3QgU2hhZGVyTW9kdWxlKiBmcmFnbWVudFNo
YWRlck1vZHVsZSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0KLXN0cnVjdCBDb21wdXRl
RGltZW5zaW9ucyB7Ci0gICAgdW5zaWduZWQgd2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0Owot
ICAgIHVuc2lnbmVkIGRlcHRoOwotfTsKLQotc3RydWN0IENvbXB1dGVQcmVwYXJlUmVzdWx0IHsK
LSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1ldGFsOjpNYW5nbGVkRnVuY3Rp
b25OYW1lIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKLSAgICBDb21wdXRlRGltZW5zaW9ucyBjb21w
dXRlRGltZW5zaW9uczsKLX07Ci1FeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5n
PiBwcmVwYXJlKGNvbnN0IFNoYWRlck1vZHVsZSYsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Im
KTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4OWQwN2Q4
MDg4NjQ0ZWZhZDQ0NTM0YTkwNmIzYTU2MzNjNDkwNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEFTVER1bXBl
ci5oIgotI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LSNpbmNsdWRlICJXSExTTFJlcGxhY2VXaXRoLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gVGhpcyBw
YXNzIHdvcmtzIGJ5IGVuc3VyaW5nIHByb3BlciB2YXJpYWJsZSBsaWZldGltZXMuIEluIFdITFNM
LCBlYWNoIHZhcmlhYmxlCi0vLyBoYXMgZ2xvYmFsIGxpZmV0aW1lLiBTbyByZXR1cm5pbmcgYSBw
b2ludGVyIHRvIGEgbG9jYWwgdmFyaWFibGUgaXMgYSB0b3RhbGx5Ci0vLyBsZWdpdGltYXRlIGFu
ZCB3ZWxsLXNwZWNpZmllZCB0aGluZyB0byBkby4KLS8vCi0vLyBXZSBpbXBsZW1lbnQgdGhpcyBi
eToKLS8vIC0gV2Ugbm90ZSBldmVyeSB2YXJpYWJsZSB3aG9zZSBhZGRyZXNzIHdlIHRha2UuCi0v
LyAtIEVhY2ggc3VjaCB2YXJpYWJsZSBnZXRzIGRlZmluZWQgYXMgYSBmaWVsZCBpbiBhIHN0cnVj
dC4KLS8vIC0gRWFjaCBmdW5jdGlvbiB3aGljaCBpcyBhbiBlbnRyeSBwb2ludCBkZWZpbmVzIHRo
aXMgc3RydWN0LgotLy8gLSBFYWNoIG5vbiBlbnRyeSBwb2ludCB0YWtlcyBhIHBvaW50ZXIgdG8g
dGhpcyBzdHJ1Y3QgYXMgaXRzIGZpbmFsIHBhcmFtZXRlci4KLS8vIC0gRWFjaCBjYWxsIHRvIGEg
bm9uLW5hdGl2ZSBmdW5jdGlvbiBpcyByZXdyaXR0ZW4gdG8gcGFzcyBhIHBvaW50ZXIgdG8gdGhl
Ci0vLyAgIHN0cnVjdCBhcyB0aGUgbGFzdCBjYWxsIGFyZ3VtZW50LgotLy8gLSBFYWNoIHZhcmlh
YmxlIHJlZmVyZW5jZSB0byAieCIsIHdoZXJlICJ4IiBlbmRzIHVwIGluIHRoZSBzdHJ1Y3QsIGlz
Ci0vLyAgIG1vZGlmaWVkIHRvIGluc3RlYWQgYmUgInN0cnVjdC0+eCIuIFdlIHN0b3JlIHRvICJz
dHJ1Y3QtPngiIGFmdGVyIGRlY2xhcmluZwotLy8gICAieCIuIElmICJ4IiBpcyBhIGZ1bmN0aW9u
IHBhcmFtZXRlciwgd2Ugc3RvcmUgdG8gInN0cnVjdC0+eCIgYXMgdGhlIGZpcnN0Ci0vLyAgIHRo
aW5nIHdlIGRvIGluIHRoZSBmdW5jdGlvbiBib2R5LgotCi1jbGFzcyBFc2NhcGVkVmFyaWFibGVD
b2xsZWN0b3IgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0
b3I7Ci1wdWJsaWM6Ci0KLSAgICB2b2lkIGVzY2FwZVZhcmlhYmxlVXNlKEFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIGlmICghaXM8QVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZT4oZXhwcmVzc2lvbikpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2UgbWlzc2lu
ZyBhbnkgaW50ZXJlc3RpbmcgcHJvZHVjdGlvbnMgaGVyZT8KLSAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMTEKLSAgICAgICAgICAgIEJh
c2U6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgYXV0byogdmFyaWFibGUgPSBkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
PihleHByZXNzaW9uKS52YXJpYWJsZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGUpOwotICAg
ICAgICAvLyBGSVhNRTogV2UgY291bGQgc2tpcCB0aGlzIGlmIHdlIG1hcmsgYWxsIGludGVybmFs
IHZhcmlhYmxlcyB3aXRoIGEgYml0LCBzaW5jZSB3ZQotICAgICAgICAvLyBuZXZlciBtYWtlIGFu
eSBpbnRlcm5hbCB2YXJpYWJsZSBlc2NhcGUgdGhlIGN1cnJlbnQgc2NvcGUgaXQgaXMgZGVmaW5l
ZCBpbjoKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODM4MwotICAgICAgICBtX2VzY2FwZWRWYXJpYWJsZXMuYWRkKHZhcmlhYmxlLCBtYWtlU3Ry
aW5nKCJfIiwgdmFyaWFibGUtPm5hbWUoKSwgIl8iLCBtX2NvdW50KyspKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJl
c3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobWFrZVBvaW50ZXJFeHByZXNzaW9u
Lm1pZ2h0RXNjYXBlKCkpCi0gICAgICAgICAgICBlc2NhcGVWYXJpYWJsZVVzZShtYWtlUG9pbnRl
ckV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24ubWlnaHRFc2NhcGUoKSkKLSAgICAgICAgICAgIGVzY2FwZVZhcmlhYmxlVXNlKG1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQ
YXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgQmFzZTo6dmlzaXQoZnVu
Y3Rpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbiosIFN0cmluZz4gdGFrZUVzY2FwZWRWYXJpYWJsZXMoKSB7IHJldHVybiBXVEZNb3Zl
KG1fZXNjYXBlZFZhcmlhYmxlcyk7IH0KLQotcHJpdmF0ZToKLSAgICBzaXplX3QgbV9jb3VudCB7
IDEgfTsKLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmluZz4gbV9l
c2NhcGVkVmFyaWFibGVzOwotfTsKLQotc3RhdGljIEFMV0FZU19JTkxJTkUgVG9rZW4gYW5vbnlt
b3VzVG9rZW4oVG9rZW46OlR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gVG9rZW4geyB7IH0sIHR5
cGUgfTsKLX0KLQotY2xhc3MgUHJlc2VydmVMaWZldGltZXMgOiBwdWJsaWMgVmlzaXRvciB7Ci0g
ICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0gICAgUHJlc2VydmVMaWZldGltZXMo
UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4gc3RydWN0VHlwZSwgY29uc3QgSGFzaE1hcDxBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgdmFyaWFibGVNYXBw
aW5nKQotICAgICAgICA6IG1fc3RydWN0VHlwZShXVEZNb3ZlKHN0cnVjdFR5cGUpKQotICAgICAg
ICAsIG1fcG9pbnRlclRvU3RydWN0VHlwZShBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUoYW5vbnlt
b3VzVG9rZW4oVG9rZW46OlR5cGU6OklkZW50aWZpZXIpLCBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhy
ZWFkLCBtX3N0cnVjdFR5cGUuY29weVJlZigpKSkKLSAgICAgICAgLCBtX3ZhcmlhYmxlTWFwcGlu
Zyh2YXJpYWJsZU1hcHBpbmcpCi0gICAgeyB9Ci0KLSAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJs
ZVJlZmVyZW5jZT4gbWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAg
IGF1dG8gc3RydWN0VmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoKm1fc3RydWN0VmFyaWFi
bGUpKTsKLSAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoKm1fc3RydWN0
VmFyaWFibGUtPnR5cGUoKSk7Ci0gICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRU
eXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQg
fSk7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZTsKLSAgICB9Ci0KLSAg
ICBVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4gYXNzaWduVmFyaWFibGVJbnRv
U3RydWN0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGUsIEFTVDo6U3RydWN0dXJl
RWxlbWVudCogZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGF1dG8gbGhzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPih2YXJpYWJsZS5jb2RlTG9jYXRpb24oKSwg
bWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCksIGVsZW1lbnQpOwotICAgICAgICBsaHMtPnNl
dFR5cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIGxocy0+c2V0VHlwZUFubm90YXRpb24o
QVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAg
IGF1dG8gcmhzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlOjp3cmFwKHZhcmlhYmxlKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZSgq
dmFyaWFibGUudHlwZSgpKTsKLSAgICAgICAgcmhzLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6Okxl
ZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAgICAgICAgYXV0byBh
c3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPih2YXJp
YWJsZS5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocykpOwotICAgICAg
ICBhc3NpZ25tZW50LT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBhc3NpZ25t
ZW50LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgcmV0
dXJuIGFzc2lnbm1lbnQ7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYg
KGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpID09IFBhcnNpbmdNb2RlOjpTdGFuZGFy
ZExpYnJhcnkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYm9vbCBpc0VudHJ5UG9p
bnQgPSAhIWZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpOwotICAgICAgICBpZiAo
aXNFbnRyeVBvaW50KSB7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRp
b24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZp
bml0aW9uLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAg
ICBtX3N0cnVjdFR5cGUuY29weVJlZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0K
LSAgICAgICAgICAgIGF1dG8gc3RydWN0VmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoc3Ry
dWN0VmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgc3RydWN0VmFyaWFibGVSZWZl
cmVuY2UtPnNldFR5cGUobV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBzdHJ1
Y3RWYXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotCi0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zOwotICAgICAgICAgICAgc3Ry
dWN0VmFyaWFibGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUoc3RydWN0VmFyaWFibGVEZWNs
YXJhdGlvbikpOwotICAgICAgICAgICAgYXV0byBzdHJ1Y3REZWNsYXJhdGlvblN0YXRlbWVudCA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rp
b25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlRGVjbGFy
YXRpb25zKSk7Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+
IG1ha2VQb2ludGVyRXhwcmVzc2lvbihuZXcgQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24oZnVu
Y3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVm
ZXJlbmNlKSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSkpOwotICAgICAg
ICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlKG1fcG9pbnRlclRvU3RydWN0VHlw
ZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBl
QW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gcG9pbnRl
ckRlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1
bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAg
ICAgICAgICAgICAgbV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgIndyYXBwZXIiX3Ms
IG51bGxwdHIsIFdURk1vdmUobWFrZVBvaW50ZXJFeHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBt
X3N0cnVjdFZhcmlhYmxlID0gJnBvaW50ZXJEZWNsYXJhdGlvbjsKLQotICAgICAgICAgICAgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnM7Ci0gICAg
ICAgICAgICBwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUocG9pbnRl
ckRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvblN0YXRl
bWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4o
ZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHBvaW50ZXJWYXJpYWJs
ZURlY2xhcmF0aW9ucykpOwotCi0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2so
KS5zdGF0ZW1lbnRzKCkuaW5zZXJ0KDAsIFdURk1vdmUoc3RydWN0RGVjbGFyYXRpb25TdGF0ZW1l
bnQpKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMo
KS5pbnNlcnQoMSwgV1RGTW92ZShwb2ludGVyRGVjbGFyYXRpb25TdGF0ZW1lbnQpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9uID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2Rl
TG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAgICAgICAgICAgbV9wb2ludGVy
VG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgIndyYXBwZXIiX3MsIG51bGxwdHIsIG51bGxwdHIpOwot
ICAgICAgICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0gICAg
ICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLmFwcGVuZChXVEZNb3ZlKHBv
aW50ZXJEZWNsYXJhdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgQmFzZTo6dmlzaXQoZnVu
Y3Rpb25EZWZpbml0aW9uKTsKLQotICAgICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0
aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IG1f
dmFyaWFibGVNYXBwaW5nLmZpbmQoJnBhcmFtZXRlcik7Ci0gICAgICAgICAgICBpZiAoaXRlciA9
PSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2Vy
dChpc0VudHJ5UG9pbnQgPyAyIDogMCwKLSAgICAgICAgICAgICAgICBtYWtlVW5pcXVlUmVmPEFT
VDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oYXNzaWduVmFyaWFibGVJbnRvU3RydWN0
KHBhcmFtZXRlciwgaXRlci0+dmFsdWUpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbm5l
ciBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIFdITFNMLiBTbyB0aGlzIGlzIGZpbmUuCi0g
ICAgICAgIG1fc3RydWN0VmFyaWFibGUgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBCYXNl
Ojp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0KLSAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNl
IGl0J3MgaWxsZWdhbCB0byBjYWxsIGFuIGVudHJ5cG9pbnQuIFRoZXJlZm9yZSwgd2UgY2FuIG9u
bHkKLSAgICAgICAgLy8gY2FsbCBmdW5jdGlvbnMgd2hlcmUgd2UndmUgYWxyZWFkeSBhcHBlbmRl
ZCB0aGlzIHN0cnVjdCBhcyBpdHMgZmluYWwgcGFyYW1ldGVyLgotICAgICAgICBpZiAoIWNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkuaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgJiYgY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKS5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFu
ZGFyZExpYnJhcnkpCi0gICAgICAgICAgICBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5hcHBl
bmQobWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAg
ICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKHZhcmlhYmxlUmVmZXJlbmNlLnZh
cmlhYmxlKCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdHlw
ZSA9ICp2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpLT50eXBlKCk7Ci0gICAgICAgIEFTVDo6
VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSB2YXJpYWJsZVJlZmVyZW5jZS50eXBlQW5u
b3RhdGlvbigpOwotICAgICAgICBhdXRvKiBpbnRlcm5hbEZpZWxkID0gQVNUOjpyZXBsYWNlV2l0
aDxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPih2YXJpYWJsZVJlZmVyZW5jZSwgdmFyaWFi
bGVSZWZlcmVuY2UuY29kZUxvY2F0aW9uKCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgp
LCBpdGVyLT52YWx1ZSk7Ci0gICAgICAgIGludGVybmFsRmllbGQtPnNldFR5cGUoV1RGTW92ZSh0
eXBlKSk7Ci0gICAgICAgIGludGVybmFsRmllbGQtPnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUo
dHlwZUFubm90YXRpb24pKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7Ci0K
LSAgICAgICAgQmFzZTo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwotCi0g
ICAgICAgIEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwotICAgICAgICBmb3IgKFVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+JiB2YXJpYWJsZURlY2xhcmF0aW9uIDogdmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQudmFyaWFibGVEZWNsYXJhdGlvbnMoKSkgewotICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZSA9IHZhcmlhYmxlRGVjbGFy
YXRpb24uZ2V0KCk7Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zIGRlY2xhcmF0aW9uczsKLSAgICAgICAgICAgICAgICBkZWNsYXJhdGlv
bnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAg
IHN0YXRlbWVudHMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudD4odmFyaWFibGUuY29kZUxvY2F0aW9uKCksIFdURk1vdmUoZGVjbGFyYXRpb25z
KSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxl
TWFwcGluZy5maW5kKCZ2YXJpYWJsZSk7Ci0gICAgICAgICAgICBpZiAoaXRlciAhPSBtX3Zhcmlh
YmxlTWFwcGluZy5lbmQoKSkKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtl
VW5pcXVlUmVmPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oYXNzaWduVmFyaWFi
bGVJbnRvU3RydWN0KHZhcmlhYmxlLCBpdGVyLT52YWx1ZSkpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpTdGF0ZW1lbnRMaXN0Pih2YXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCwgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuY29kZUxvY2F0aW9u
KCksIFdURk1vdmUoc3RhdGVtZW50cykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24qIG1fc3RydWN0VmFyaWFibGUgeyBudWxscHRyIH07Ci0KLSAgICBS
ZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiBtX3N0cnVjdFR5cGU7Ci0gICAgUmVmPEFTVDo6UG9pbnRl
clR5cGU+IG1fcG9pbnRlclRvU3RydWN0VHlwZTsKLSAgICAvLyBJZiB0aGlzIG1hcHBpbmcgY29u
dGFpbnMgdGhlIHZhcmlhYmxlLCBpdCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSdzIGNhbm9uaWNh
bCBsb2NhdGlvbgotICAgIC8vIGlzIGluIHRoZSBzdHJ1Y3Qgd2UgdXNlIHRvIHByZXNlcnZlIHZh
cmlhYmxlIGxpZmV0aW1lcy4KLSAgICBjb25zdCBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbiosIEFTVDo6U3RydWN0dXJlRWxlbWVudCo+JiBtX3ZhcmlhYmxlTWFwcGluZzsKLX07Ci0K
LXZvaWQgcHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAg
IEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgU3RyaW5nPiBlc2NhcGVkVmFyaWFi
bGVzOwotICAgIHsKLSAgICAgICAgRXNjYXBlZFZhcmlhYmxlQ29sbGVjdG9yIGNvbGxlY3RvcjsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3Rvci52aXNpdChwcm9ncmFtLmZ1
bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgICAgIGVzY2FwZWRWYXJpYWJsZXMgPSBjb2xs
ZWN0b3IudGFrZUVzY2FwZWRWYXJpYWJsZXMoKTsKLSAgICB9Ci0KLSAgICBBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnRzIGVsZW1lbnRzOwotICAgIGZvciAoYXV0byYgcGFpciA6IGVzY2FwZWRWYXJpYWJs
ZXMpIHsKLSAgICAgICAgYXV0byogdmFyaWFibGUgPSBwYWlyLmtleTsKLSAgICAgICAgU3RyaW5n
IG5hbWUgPSBwYWlyLnZhbHVlOwotICAgICAgICBlbGVtZW50cy5hcHBlbmQoQVNUOjpTdHJ1Y3R1
cmVFbGVtZW50IHsgdmFyaWFibGUtPmNvZGVMb2NhdGlvbigpLCB7IH0sICp2YXJpYWJsZS0+dHlw
ZSgpLCBXVEZNb3ZlKG5hbWUpLCBudWxscHRyIH0pOwotICAgIH0KLQotICAgIC8vIE5hbWUgb2Yg
dGhpcyBkb2Vzbid0IG1hdHRlciwgc2luY2Ugd2UgZG9uJ3QgdXNlIHN0cnVjdCBuYW1lcyB3aGVu
Ci0gICAgLy8gZ2VuZXJhdGluZyBNZXRhbCB0eXBlIG5hbWVzLiBXZSBqdXN0IHBpY2sgc29tZXRo
aW5nIGhlcmUgdG8gbWFrZSBpdAotICAgIC8vIGVhc3kgdG8gcmVhZCBpbiBBU1QgZHVtcHMuCi0g
ICAgYXV0byB3cmFwcGVyU3RydWN0RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uPihhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6U3RydWN0KSwgIl9f
V3JhcHBlclN0cnVjdF9fIl9zLCBXVEZNb3ZlKGVsZW1lbnRzKSk7Ci0KLSAgICBIYXNoTWFwPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIEFTVDo6U3RydWN0dXJlRWxlbWVudCo+IHZhcmlhYmxl
TWFwcGluZzsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgZm9yIChhdXRvJiBwYWlyIDog
ZXNjYXBlZFZhcmlhYmxlcykKLSAgICAgICAgdmFyaWFibGVNYXBwaW5nLmFkZChwYWlyLmtleSwg
JndyYXBwZXJTdHJ1Y3REZWZpbml0aW9uLT5zdHJ1Y3R1cmVFbGVtZW50cygpW2luZGV4KytdKTsK
LQotICAgIHsKLSAgICAgICAgYXV0byB3cmFwcGVyU3RydWN0VHlwZSA9IEFTVDo6VHlwZVJlZmVy
ZW5jZTo6d3JhcChhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllciksIHdyYXBw
ZXJTdHJ1Y3REZWZpbml0aW9uKTsKLSAgICAgICAgUHJlc2VydmVMaWZldGltZXMgcHJlc2VydmVM
aWZldGltZXMoV1RGTW92ZSh3cmFwcGVyU3RydWN0VHlwZSksIHZhcmlhYmxlTWFwcGluZyk7Ci0g
ICAgICAgIHByZXNlcnZlTGlmZXRpbWVzLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIH0K
LQotICAgIHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5hcHBlbmQoV1RGTW92ZSh3cmFw
cGVyU3RydWN0RGVmaW5pdGlvbikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0YTY0ZjdhMjhiYTg0Y2ZkMGU0Njc4MTAxOTllZDBhYzM5NzQwYmQ2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgcHJlc2VydmVWYXJpYWJs
ZUxpZmV0aW1lcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFByb2dyYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExYTJlMmMwMzg3
MjU1ZDU3ZjA5YmE0ZDFlOTJhYWZmNGU0ZWVkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFByb2dyYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIK
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW50
cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExT
TE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3Jh
bSB7Ci1wdWJsaWM6Ci0gICAgUHJvZ3JhbSgpID0gZGVmYXVsdDsKLSAgICBQcm9ncmFtKFByb2dy
YW0mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6
OlR5cGVEZWZpbml0aW9uJiYgdHlwZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBtX3R5cGVE
ZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPihXVEZN
b3ZlKHR5cGVEZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQo
bV90eXBlRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gYXBwZW5kKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYmIHN0cnVjdHVyZURlZmluaXRp
b24pCi0gICAgewotICAgICAgICBtX3N0cnVjdHVyZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5p
cXVlUmVmPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oV1RGTW92ZShzdHJ1Y3R1cmVEZWZpbml0
aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9zdHJ1Y3R1cmVEZWZp
bml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBl
bmQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi0g
ICAgewotICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVS
ZWY8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZW51bWVyYXRpb25EZWZpbml0
aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9lbnVtZXJhdGlvbkRl
ZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFw
cGVuZChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYmIGZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICB7
Ci0gICAgICAgIG1fZnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbj4oV1RGTW92ZShmdW5jdGlvbkRlZmluaXRpb24pKSk7Ci0gICAg
ICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX2Z1bmN0aW9uRGVmaW5pdGlvbnMubGFzdCgp
KTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYmIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgewot
ICAgICAgICBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNpY3MuYWRkKG1fbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1f
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3Rl
ZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZl
VHlwZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25z
LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihXVEZNb3Zl
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25h
dGl2ZVR5cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRl
eHQuYWRkKG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIGJv
b2wgaXNWYWxpZFZlY3RvclByb3BlcnR5KFN0cmluZyk7Ci0KLSAgICBOYW1lQ29udGV4dCYgbmFt
ZUNvbnRleHQoKSB7IHJldHVybiBtX25hbWVDb250ZXh0OyB9Ci0gICAgSW50cmluc2ljcyYgaW50
cmluc2ljcygpIHsgcmV0dXJuIG1faW50cmluc2ljczsgfQotICAgIGNvbnN0IEludHJpbnNpY3Mm
IGludHJpbnNpY3MoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBWZWN0b3I8
VW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+PiYgdHlwZURlZmluaXRpb25zKCkgeyByZXR1
cm4gbV90eXBlRGVmaW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4+JiBzdHJ1Y3R1cmVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fc3RydWN0
dXJlRGVmaW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uPj4mIGVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2VudW1lcmF0
aW9uRGVmaW5pdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uPj4mIGZ1bmN0aW9uRGVmaW5pdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uRGVmaW5pdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uPj4mIGZ1bmN0aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVm
aW5pdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbj4+JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4+JiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucygpIHsgcmV0dXJuIG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7IH0KLQotcHJpdmF0
ZToKLSAgICBOYW1lQ29udGV4dCBtX25hbWVDb250ZXh0OwotICAgIEludHJpbnNpY3MgbV9pbnRy
aW5zaWNzOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlvbj4+IG1fdHlw
ZURlZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uPj4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RW51bWVyYXRpb25EZWZpbml0aW9uPj4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOwotICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiBtX2Z1bmN0aW9uRGVmaW5p
dGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24+PiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+PiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMwZmEwYjk5ZThhNTNiOTBhMzI1NzQxMmFk
ZWY0YjQ5Y2FjOGQzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVz
b2x2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgiCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2lu
Y2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNp
bmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jbGFzcyBQcm9wZXJ0eVJlc29sdmVyIDogcHVibGljIFZpc2l0b3Igewot
ICAgIHZvaWQgaGFuZGxlTGVmdEhhbmRTaWRlQmFzZShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiBiYXNlLCBVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYgc2xvdCwgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+PiYgZXhwcmVzc2lvbnMpCi0gICAgewotICAgICAgICBpZiAoIWJh
c2UtPm1heUJlRWZmZWN0ZnVsKCkpIHsKLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGJhc2Up
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBsZWZ0QWRk
cmVzc1NwYWNlID0gYmFzZS0+dHlwZUFubm90YXRpb24oKS5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGxlZnRBZGRyZXNzU3BhY2UpOwotICAgICAgICBDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uID0gYmFzZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIFJlZjxB
U1Q6OlVubmFtZWRUeXBlPiBiYXNlVHlwZSA9IGJhc2UtPnJlc29sdmVkVHlwZSgpOwotICAgICAg
ICBSZWY8QVNUOjpQb2ludGVyVHlwZT4gcG9pbnRlclR5cGUgPSBBU1Q6OlBvaW50ZXJUeXBlOjpj
cmVhdGUoY29kZUxvY2F0aW9uLCAqbGVmdEFkZHJlc3NTcGFjZSwgYmFzZVR5cGUuY29weVJlZigp
KTsKLQotICAgICAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBwb2ludGVy
VmFyaWFibGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oY29kZUxv
Y2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCBwb2ludGVyVHlwZS5wdHIoKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpOwotCi0gICAgICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJlbmNl
ID0gWyZdIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAo
cG9pbnRlclZhcmlhYmxlKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlw
ZShwb2ludGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRo
cmVhZCB9KTsKLSAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAg
fTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJPZkJhc2UgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIFdURk1vdmUo
YmFzZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpOwotICAgICAgICAg
ICAgcG9pbnRlck9mQmFzZS0+c2V0VHlwZShwb2ludGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAg
ICAgICAgcG9pbnRlck9mQmFzZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkp
OwotCi0gICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCks
IFdURk1vdmUocG9pbnRlck9mQmFzZSkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlw
ZShwb2ludGVyVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlw
ZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICBleHByZXNzaW9u
cy5hcHBlbmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0g
ICAgICAgICAgICBhdXRvIGRlcmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0g
ICAgICAgICAgICBkZXJlZmVyZW5jZS0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAg
ICAgICAgICAgZGVyZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsg
KmxlZnRBZGRyZXNzU3BhY2UgfSk7Ci0KLSAgICAgICAgICAgIHNsb3QgPSBXVEZNb3ZlKGRlcmVm
ZXJlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3Zl
KHBvaW50ZXJWYXJpYWJsZSkpOwotICAgIH0KLQotICAgIHZvaWQgaGFuZGxlUHJvcGVydHlBY2Nl
c3MoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzLCBWZWN0b3I8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+JiBleHByZXNzaW9ucykKLSAgICB7Ci0gICAgICAg
IEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKiBjdXJyZW50UHRyID0gJnByb3BlcnR5QWNj
ZXNzOwotICAgICAgICAvLyBhLmJbY10uZCB3aWxsIGdvIGludG8gdGhpcyBhcnJheSBhcyBbLmQs
IFtjXSwgLmJdCi0gICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uPj4gY2hhaW47Ci0KLSAgICAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgICAgIEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1
cnJlbnRQdHI7Ci0gICAgICAgICAgICBjaGFpbi5hcHBlbmQoY3VycmVudCk7Ci0gICAgICAgICAg
ICBpZiAoaXM8QVNUOjpJbmRleEV4cHJlc3Npb24+KGN1cnJlbnQpKQotICAgICAgICAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY3VycmVu
dCkuaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICAgICAgaWYgKCFpczxBU1Q6OlByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbj4oY3VycmVudC5iYXNlKCkpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY3VycmVudFB0ciA9ICZkb3duY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbj4oY3VycmVudC5iYXNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKLQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoY3VycmVudC5iYXNlKCkpOwotCi0gICAgICAgIENvZGVMb2Nh
dGlvbiBiYXNlQ29kZUxvY2F0aW9uID0gY3VycmVudC5iYXNlKCkuY29kZUxvY2F0aW9uKCk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoY3VycmVudC5iYXNlKCkudHlwZUFubm90YXRpb24oKS5pc1Jp
Z2h0VmFsdWUoKSkgewotICAgICAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbj4gY29weSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihiYXNl
Q29kZUxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCAmY3VycmVudC5iYXNlKCkucmVzb2x2
ZWRUeXBlKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIFJlZjxB
U1Q6OlVubmFtZWRUeXBlPiBiYXNlVHlwZSA9IGN1cnJlbnQuYmFzZSgpLnJlc29sdmVkVHlwZSgp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSA9
IFsmXSB7Ci0gICAgICAgICAgICAgICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3Jh
cChjb3B5KSk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoYmFz
ZVR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0
VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFk
IH0pOwotICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAg
ICAgIH07Ci0KLSAgICAgICAgICAgIGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oYmFzZUNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVm
ZXJlbmNlKCksIGN1cnJlbnQudGFrZUJhc2UoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5z
ZXRUeXBlKGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRU
eXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Np
b25zLmFwcGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgY3VycmVudC5iYXNlUmVmZXJlbmNlKCkgPSBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKTsKLQot
ICAgICAgICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdURk1vdmUoY29weSkpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UoY3VycmVudC50YWtlQmFz
ZSgpLCBjdXJyZW50LmJhc2VSZWZlcmVuY2UoKSwgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBjaGFpbi5zaXplKCk7IGktLTsgKSB7Ci0gICAgICAgICAgICBhdXRvJiBh
Y2Nlc3MgPSBjaGFpbltpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkluZGV4RXhw
cmVzc2lvbj4oYWNjZXNzKSAmJiBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oYWNjZXNz
KS5pbmRleEV4cHJlc3Npb24oKS5tYXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byYgaW5kZXhFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGFj
Y2Vzcyk7Ci0KLSAgICAgICAgICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gaW5kZXhUeXBl
ID0gaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpLnJlc29sdmVkVHlwZSgpOwotCi0g
ICAgICAgICAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4gaW5kZXhW
YXJpYWJsZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihhY2Nlc3Mu
Y29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycyB7IH0sIGluZGV4VHlwZS5wdHIoKSwgU3Ry
aW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBtYWtlVmFy
aWFibGVSZWZlcmVuY2UgPSBbJl0gewotICAgICAgICAgICAgICAgICAgICBhdXRvIHZhcmlhYmxl
UmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlOjp3cmFwKGluZGV4VmFyaWFibGUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGUoaW5kZXhUeXBlLmNvcHlSZWYoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6
OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YXJpYWJsZVJlZmVyZW5jZTsKLSAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24s
IG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgpLCBpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwot
ICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlKGluZGV4VHlwZS5jb3B5UmVm
KCkpOwotICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlvbihB
U1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBw
ZW5kKFdURk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGluZGV4RXhwcmVzc2lvbi5pbmRleFJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxlUmVm
ZXJlbmNlKCk7Ci0KLSAgICAgICAgICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQoV1RGTW92ZShp
bmRleFZhcmlhYmxlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2
b2lkIGhhbmRsZVByb3BlcnR5QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBw
cm9wZXJ0eUFjY2VzcykKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0KLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MocHJv
cGVydHlBY2Nlc3MsIGV4cHJlc3Npb25zKTsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4gYWNjZXNzVHlwZSA9IHByb3BlcnR5QWNjZXNzLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAg
IEFTVDo6Q29tbWFFeHByZXNzaW9uKiBjb21tYTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVM
b2NhdGlvbiA9IHByb3BlcnR5QWNjZXNzLmNvZGVMb2NhdGlvbigpOwotICAgICAgICBpZiAoaXM8
QVNUOjpJbmRleEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKSkgewotICAgICAgICAgICAgYXV0
byYgaW5kZXhFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KHByb3Bl
cnR5QWNjZXNzKTsKLQotICAgICAgICAgICAgYXV0byBuZXdJbmRleEV4cHJlc3Npb24gPSBtYWtl
VW5pcXVlUmVmPEFTVDo6SW5kZXhFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGluZGV4RXhwcmVz
c2lvbi50YWtlQmFzZSgpLCBpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOwotICAgICAgICAg
ICAgbmV3SW5kZXhFeHByZXNzaW9uLT5zZXRUeXBlKGluZGV4RXhwcmVzc2lvbi5yZXNvbHZlZFR5
cGUoKSk7Ci0gICAgICAgICAgICBuZXdJbmRleEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9u
KEFTVDo6VHlwZUFubm90YXRpb24oaW5kZXhFeHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCkpKTsK
LQotICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUobmV3SW5kZXhFeHByZXNz
aW9uKSk7Ci0KLSAgICAgICAgICAgIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1h
RXhwcmVzc2lvbj4oaW5kZXhFeHByZXNzaW9uLCBjb2RlTG9jYXRpb24sIFdURk1vdmUoZXhwcmVz
c2lvbnMpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlz
PEFTVDo6RG90RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3MpKTsKLSAgICAgICAgICAgIGF1dG8m
IGRvdEV4cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNj
ZXNzKTsKLQotICAgICAgICAgICAgYXV0byBuZXdEb3RFeHByZXNzaW9uID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgZG90RXhwcmVzc2lvbi50YWtlQmFz
ZSgpLCBTdHJpbmcoZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSkpOwotICAgICAgICAgICAgbmV3
RG90RXhwcmVzc2lvbi0+c2V0VHlwZShkb3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAg
ICAgICAgICAgIG5ld0RvdEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6VHlwZUFu
bm90YXRpb24oZG90RXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAg
IGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld0RvdEV4cHJlc3Npb24pKTsKLQotICAgICAg
ICAgICAgY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6Q29tbWFFeHByZXNzaW9uPihkb3RF
eHByZXNzaW9uLCBjb2RlTG9jYXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGNvbW1hLT5zZXRUeXBlKFdURk1vdmUoYWNjZXNzVHlwZSkpOwotICAgICAg
ICBjb21tYS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgIH0KLQot
cHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG90RXhwcmVz
c2lvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5k
ZXhFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nl
c3MoaW5kZXhFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Np
b24oKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0
RXhwcmVzc2lvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4+IGV4cHJlc3Npb25zOwotCi0gICAgICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24gPSBy
ZWFkTW9kaWZ5V3JpdGUuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAgICAgUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+IHR5cGUgPSByZWFkTW9kaWZ5V3JpdGUucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAg
aWYgKGlzPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUubGVm
dFZhbHVlKCkpKQotICAgICAgICAgICAgaGFuZGxlUHJvcGVydHlBY2Nlc3MoZG93bmNhc3Q8QVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSks
IGV4cHJlc3Npb25zKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGFuZGxlTGVmdEhhbmRT
aWRlQmFzZShyZWFkTW9kaWZ5V3JpdGUudGFrZUxlZnRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUu
bGVmdFZhbHVlUmVmZXJlbmNlKCksIGV4cHJlc3Npb25zKTsKLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBuZXdSZWFkTW9k
aWZ5V3JpdGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4o
Ci0gICAgICAgICAgICAgICAgcmVhZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpLCByZWFkTW9k
aWZ5V3JpdGUudGFrZUxlZnRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU9sZFZhbHVlKCks
IHJlYWRNb2RpZnlXcml0ZS50YWtlTmV3VmFsdWUoKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9k
aWZ5V3JpdGUtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihyZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1Zh
bHVlRXhwcmVzc2lvbigpKTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0UmVz
dWx0RXhwcmVzc2lvbihyZWFkTW9kaWZ5V3JpdGUudGFrZVJlc3VsdEV4cHJlc3Npb24oKSk7Ci0g
ICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUtPnNldFR5cGUodHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlR5
cGVBbm5vdGF0aW9uKHJlYWRNb2RpZnlXcml0ZS50eXBlQW5ub3RhdGlvbigpKSk7Ci0KLSAgICAg
ICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKG5ld1JlYWRNb2RpZnlXcml0ZSkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYXV0byogY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6
Q29tbWFFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3JpdGUsIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShl
eHByZXNzaW9ucykpOwotICAgICAgICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKHR5cGUpKTsKLSAg
ICAgICAgY29tbWEtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmlu
aXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhcmlhYmxl
cy5pc0VtcHR5KCkpOwotCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLQotICAgICAg
ICBpZiAoIW1fdmFyaWFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZnVuY3Rpb25EZWZp
bml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgwLCAKLSAgICAgICAgICAgICAgICBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KGZ1bmN0aW9u
RGVmaW5pdGlvbi5ibG9jaygpLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKG1fdmFyaWFibGVzKSkp
OwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnMgbV92YXJpYWJsZXM7Ci19OwotCi12b2lkIHJlc29sdmVQcm9wZXJ0aWVzKFByb2dyYW0m
IHByb2dyYW0pCi17Ci0gICAgLy8gVGhlIGdvYWwgb2YgdGhpcyBwaGFzZSBpcyB0d28gYWxsb3cg
dHdvIHRoaW5nczoKLSAgICAvLyAxLiBGb3IgcHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb25zLCBt
ZXRhbCBjb2RlZ2VuIHNob3VsZCBiZSBhbGxvd2VkIHRvIGV2YWx1YXRlCi0gICAgLy8gdGhlIGJh
c2UsIGFuZCBpZiBpdCdzIGFuIGluZGV4IGV4cHJlc3Npb24sIHRoZSBpbmRleCwgYXMgbWFueSB0
aW1lcyBhcyBuZWVkZWQuCi0gICAgLy8gU28gdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgaWYgTWV0
YWwgZXZhbHVhdGVzIHN1Y2ggdGhpbmdzLCBlZmZlY3RzIGFyZW4ndCBwZXJmb3JtZWQKLSAgICAv
LyBtb3JlIHRoYW4gb25jZS4KLSAgICAvLwotICAgIC8vIDIuIEZvciBSZWFkTW9kaWZ5V3JpdGUg
ZXhwcmVzc2lvbnMsIG1ldGFsIGNvZGVnZW4gc2hvdWxkIGJlIGFibGUgdG8gZXZhbHVhdGUgdGhl
Ci0gICAgLy8gbGVmdFZhbHVlRXhwcmVzc2lvbiBhcyBtYW55IHRpbWVzIGFzIGl0J2QgbGlrZSB3
aXRob3V0IHBlcmZvcm1pbmcgdGhlIGVmZmVjdHMgb2YKLSAgICAvLyBsZWZ0VmFsdWVFeHByZXNz
aW9uIG1vcmUgdGhhbiBvbmNlLgotICAgIC8vCi0gICAgLy8gV2UgZG8gdGhlc2UgdGhpbmdzIGJl
Y2F1c2UgaXQncyBjb252ZW5pZW50IGZvciBtZXRhbCBjb2RlZ2VuIHRvIGJlIGFibGUgdG8gcmVs
eSBvbgotICAgIC8vIHRoaXMgd2l0aCB0aGUgd2F5IGl0IHN0cnVjdHVyZXMgdGhlIGdlbmVyYXRl
ZCBjb2RlLgotICAgIFByb3BlcnR5UmVzb2x2ZXIgcmVzb2x2ZXI7Ci0gICAgZm9yIChhdXRvJiBm
dW5jdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICByZXNvbHZl
ci52aXNpdChmdW5jdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9w
ZXJ0eVJlc29sdmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZWRhYTRlOGQ4
YjUwNmEzNmFmZjFiMjBhOGUzOGE4NjM5ODg3ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3Jh
bTsKLQotdm9pZCByZXNvbHZlUHJvcGVydGllcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUxMTY1NzljMzYwNzUzZmJiYmNlOGY4ZGVjNjVkYmNjMjViMWI3
MTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiBmdW5jdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbik7Ci0gICAgICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9u
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHBy
ZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJl
c3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHBy
ZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICB9Ci0KLSAg
ICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9u
cygpIHsgcmV0dXJuIFdURk1vdmUobV9yZWFjaGFibGVGdW5jdGlvbnMpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rp
b25zOwotfTsKLQotdm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25z
KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNo
YWJsZVN0ZGxpYkZ1bmN0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uPj4gZnVuY3Rpb25EZWZpbml0aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkpOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmlu
aXRpb25zKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQYXJzaW5n
TW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgcmVhY2hhYmxlU3RkbGliRnVuY3Rp
b25zLnZpc2l0KGZ1bmN0aW9uLmdldCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWZ1bmN0aW9uLT5lbnRyeVBvaW50VHlwZSgpKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVh
Y2hhYmxlRnVuY3Rpb25zKCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4+IG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnM7Ci0gICAgZm9yIChVbmlxdWVSZWY8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24+JiBlbnRyeSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKLSAg
ICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZW50cnkuZ2V0KCkpKQotICAg
ICAgICAgICAgbmV3RnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwot
ICAgIH0KLQotICAgIHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdG
dW5jdGlvbkRlZmluaXRpb25zKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVu
cmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdjODQ2OTc1ZWI2M2E4MThl
NDhmOWY4OTA1YzBhY2MzN2ZkMzZiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
dW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3MGVlMTI0NjgwYWJiZmJhZTY1ODI3NGZiOWJjYTYyZjNjYmE4NzdlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldI
TFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5j
bHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0vLyBNYWtlcyBzdXJlIHRoZXJl
IGlzIG5vIGZ1bmN0aW9uIHJlY3Vyc2lvbi4KLWNsYXNzIFJlY3Vyc2lvbkNoZWNrZXIgZmluYWwg
OiBwdWJsaWMgVmlzaXRvciB7Ci1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYgcHJv
Z3JhbSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0
aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBpZiAobV9maW5pc2hlZFZpc2l0aW5nLmNvbnRhaW5zKCZmdW5jdGlvbkRl
ZmluaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zdGFydGVkVmlzaXRpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBp
ZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
Q2Fubm90IHVzZSByZWN1cnNpb24gaW4gdGhlIGNhbGwgZ3JhcGguIiwgZnVuY3Rpb25EZWZpbml0
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01v
ZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9u
RGVmaW5pdGlvbik7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2ZpbmlzaGVkVmlzaXRpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJl
c3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVz
c2lvbik7Ci0gICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJl
c3Npb24uZnVuY3Rpb24oKSkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsK
LSAgICB9Ci0KLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9zdGFydGVk
VmlzaXRpbmc7Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IG1fZmluaXNo
ZWRWaXNpdGluZzsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2lvbihQ
cm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlY3Vyc2lvbkNoZWNrZXIgcmVjdXJzaW9uQ2hlY2tl
cjsKLSAgICByZWN1cnNpb25DaGVja2VyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIHJl
dHVybiByZWN1cnNpb25DaGVja2VyLnJlc3VsdCgpOwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM0N2FjMjUwZTRiYzU0YjBhYjkxOTE1ZDFlZjIwODU2MzUzZWU2
ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0j
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNo
ZWNrUmVjdXJzaW9uKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZDFjNTA3YWM1NjgwMTNmZTkzMmZjMDVhMmM1MjY4ZjQ5Njll
ZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUg
IldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUmVjdXJzaXZlVHlwZUNoZWNr
ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVE
ZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0K
LXByaXZhdGU6Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGUqPiBtX3N0YXJ0ZWRWaXNpdGluZzsKLSAg
ICBIYXNoU2V0PEFTVDo6VHlwZSo+IG1fZmluaXNoZWRWaXNpdGluZzsKLX07Ci0KLSNkZWZpbmUg
U1RBUlRfVklTSVRJTkcodCkgXAotZG8geyBcCi0gICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5j
b250YWlucyh0KSkgXAotICAgICAgICByZXR1cm47IFwKLSAgICBhdXRvIHJlc3VsdFN0YXJ0ZWRW
aXNpdGluZyA9IG1fc3RhcnRlZFZpc2l0aW5nLmFkZCh0KTsgXAotICAgIGlmICghcmVzdWx0U3Rh
cnRlZFZpc2l0aW5nLmlzTmV3RW50cnkpIHsgXAotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IGRlY2xhcmUgcmVjdXJzaXZlIHR5cGVzLiIsICh0KS0+Y29kZUxvY2F0aW9uKCkpKTsgXAot
ICAgICAgICByZXR1cm47IFwKLSAgICB9IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotI2RlZmluZSBF
TkRfVklTSVRJTkcodCkgXAotZG8geyBcCi0gICAgYXV0byByZXN1bHRGaW5pc2hlZFZpc2l0aW5n
ID0gbV9maW5pc2hlZFZpc2l0aW5nLmFkZCh0KTsgXAotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
RmluaXNoZWRWaXNpdGluZywgcmVzdWx0RmluaXNoZWRWaXNpdGluZy5pc05ld0VudHJ5KTsgXAot
fSB3aGlsZSAoZmFsc2UpOwotCi12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6
OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBTVEFSVF9WSVNJVElORygm
dHlwZURlZmluaXRpb24pOwotCi0gICAgVmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwot
Ci0gICAgRU5EX1ZJU0lUSU5HKCZ0eXBlRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZl
VHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVm
aW5pdGlvbikKLXsKLSAgICBTVEFSVF9WSVNJVElORygmc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0K
LSAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLQotICAgIEVORF9WSVNJ
VElORygmc3RydWN0dXJlRGVmaW5pdGlvbik7Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNr
ZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBTVEFS
VF9WSVNJVElORygmdHlwZVJlZmVyZW5jZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVu
dCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQodHlwZUFyZ3VtZW50KTsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVk
VHlwZSgpKSAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODE2MSBTaG91bGRuJ3Qgd2Uga25vdyBieSBub3cgd2hldGhlciB0aGUgdHlwZSBoYXMgYmVl
biByZXNvbHZlZCBvciBub3Q/Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpKTsKLQotICAgIEVORF9WSVNJVElORygmdHlwZVJlZmVyZW5jZSk7
Ci19Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlw
ZSYpCi17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2l2ZVR5cGVzKFBy
b2dyYW0mIHByb2dyYW0pCi17Ci0gICAgUmVjdXJzaXZlVHlwZUNoZWNrZXIgcmVjdXJzaXZlVHlw
ZUNoZWNrZXI7Ci0gICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURl
ZmluaXRpb25zKCkpCi0gICAgICAgIHJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRW
aXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9u
IDogcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBl
Q2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgcmV0
dXJuIHJlY3Vyc2l2ZVR5cGVDaGVja2VyLnJlc3VsdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBmMWFjMGY1NzEzMDRiYmVhYTg4MTc1MGQwZGZjMjA2MmU3ZDI0ODcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVj
a1JlY3Vyc2l2ZVR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWUzNmM0NzI1ODY5NjQ4Mjk4ZTI4NTU2YTAxYzQzNzNjNzZi
NDNlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgPGxpbWl0cz4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgdW5zaWduZWQgY29udmVyc2lvbkNv
c3QoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBjYW5kaWRhdGUsIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcykKLXsKLSAg
ICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYW5kaWRhdGUucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnZlcnNp
b25Db3N0ICs9IGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JikgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBy
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gdW5zaWduZWQgewotICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmNvbnZlcnNpb25Db3N0
KCpjYW5kaWRhdGUucGFyYW1ldGVycygpW2ldLT50eXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAg
fQotICAgIC8vIFRoZSByZXR1cm4gdHlwZSBjYW4gbmV2ZXIgYmUgYSBsaXRlcmFsIHR5cGUsIHNv
IGl0cyBjb252ZXJzaW9uIGNvc3QgaXMgYWx3YXlzIDAuCi0gICAgcmV0dXJuIGNvbnZlcnNpb25D
b3N0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZUtpbmQ+Ci1zdGF0aWMgQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxl
RnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4m
IGFyZ3VtZW50VHlwZXMsIFR5cGVLaW5kKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2Ug
bmFtZVNwYWNlKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbj4sIDE+IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJs
ZUZ1bmN0aW9uIDogcG9zc2libGVGdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKHBvc3NpYmxlRnVu
Y3Rpb24uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAobmFtZVNwYWNlID09IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsK
LSAgICAgICAgICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IEFT
VDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQo
KS5uYW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5ICYmIHBvc3Np
YmxlRnVuY3Rpb24uZ2V0KCkubmFtZVNwYWNlKCkgIT0gbmFtZVNwYWNlKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yQ2FsbChw
b3NzaWJsZUZ1bmN0aW9uLmdldCgpLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCi0g
ICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpKTsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCBtaW5pbXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5k
aWRhdGVzKQotICAgICAgICBtaW5pbXVtQ29udmVyc2lvbkNvc3QgPSBzdGQ6Om1pbihtaW5pbXVt
Q29udmVyc2lvbkNvc3QsIGNvbnZlcnNpb25Db3N0KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRU
eXBlcykpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uPiwgMT4gbWluaW11bUNvc3RDYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYg
Y2FuZGlkYXRlIDogY2FuZGlkYXRlcykgewotICAgICAgICBpZiAoY29udmVyc2lvbkNvc3QoY2Fu
ZGlkYXRlLmdldCgpLCBhcmd1bWVudFR5cGVzKSA9PSBtaW5pbXVtQ29udmVyc2lvbkNvc3QpCi0g
ICAgICAgICAgICBtaW5pbXVtQ29zdENhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7Ci0gICAg
fQotCi0gICAgaWYgKG1pbmltdW1Db3N0Q2FuZGlkYXRlcy5zaXplKCkgPT0gMSkKLSAgICAgICAg
cmV0dXJuICZtaW5pbXVtQ29zdENhbmRpZGF0ZXNbMF0uZ2V0KCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3Zlcmxv
YWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
PiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxS
ZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkK
LXsKLSAgICByZXR1cm4gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rp
b25zLCBhcmd1bWVudFR5cGVzLCBzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KG51bGxwdHIp
LCBuYW1lU3BhY2UpOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5j
dGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSog
Y2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICByZXR1cm4g
cmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxlRnVuY3Rpb25zLCBhcmd1bWVudFR5
cGVzLCBjYXN0UmV0dXJuVHlwZSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBl
cywgQVNUOjpVbm5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVT
cGFjZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKHBvc3NpYmxl
RnVuY3Rpb25zLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSwgbmFtZVNwYWNlKTsKLX0K
LQotQVNUOjpOYW1lZFR5cGUqIHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4mIHBvc3NpYmxlVHlwZXMsIEFTVDo6
VHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykKLXsKLSAgICBBU1Q6Ok5hbWVkVHlwZSogcmVz
dWx0ID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIHBvc3NpYmxlVHlwZSA6IHBvc3NpYmxlVHlw
ZXMpIHsKLSAgICAgICAgaWYgKGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHBvc3NpYmxlVHlw
ZSwgdHlwZUFyZ3VtZW50cykpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICByZXN1bHQgPSAmc3RhdGljX2Nhc3Q8
QVNUOjpOYW1lZFR5cGUmPihwb3NzaWJsZVR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3Zlcmxv
YWRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29s
dmVPdmVybG9hZEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzMjJlODQ0
ZGYzZmI4YmFhYTg2OTA4ODhmNzg5MmExMTY3MzlmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYW1lZFR5cGU7
Ci0KLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9h
ZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+
LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1lU3BhY2UpOwotQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5j
dGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJn
dW1lbnRUeXBlcywgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFj
ZSk7Ci1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+
JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2
aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSwgQVNUOjpOYW1lU3BhY2UpOwotQVNUOjpOYW1lZFR5cGUqIHJlc29sdmVUeXBlT3ZlcmxvYWRJ
bXBsKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4mLCBB
U1Q6OlR5cGVBcmd1bWVudHMmKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
Y2VhNDU3YTg1MzIwYjk5ZDk5OWZkMTk2ZmIwMTY4NzRkNzZkNTI1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVzb2x2YWJs
ZVR5cGU7Ci0KLX0KLQotLy8gVGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSB0eXBlIG9mIG9uZSBB
U1Qgbm9kZSBzaG91bGQgbWF0Y2ggdGhlIHR5cGUgb2YgYW5vdGhlciBBU1Qgbm9kZS4KLS8vIE9u
ZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlIGNvbW1hIGV4cHJlc3Npb24gLSB0aGUgdHlwZSBvZiB0
aGUgY29tbWEgZXhwcmVzc2lvbiBzaG91bGQgbWF0Y2ggdGhlIHR5cGUgb2YgaXRzIGxhc3QgaXRl
bS4KLS8vIElmIHRoaXMgdHlwZSBoYXBwZW5zIHRvIGJlIGEgcmVzb2x2YWJsZSB0eXBlLCBpdCB3
aWxsIGdldCByZXNvbHZlZCBsYXRlci4gV2hlbiB0aGF0IGhhcHBlbnMsCi0vLyBib3RoIG9mIHRo
ZSBBU1Qgbm9kZXMgaGF2ZSB0byBiZSByZXNvbHZlZCB0byB0aGUgcmVzdWx0IHR5cGUuIFRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhCi0vLyByZWZlcmVuY2UgY291bnRlZCB3cmFwcGVyIGFyb3VuZCBh
IHJlc29sdmFibGUgdHlwZSBzbyBib3RoIGVudHJpZXMgaW4gdGhlIHR5cGUgbWFwIGNhbiBwb2lu
dAotLy8gdG8gdGhlIHNhbWUgcmVzb2x2YWJsZSB0eXBlLCBzbyByZXNvbHZpbmcgaXQgb25jZSBy
ZXNvbHZlcyBib3RoIHRoZSBlbnRyaWVzIGluIHRoZSBtYXAuCi0vLyBUaGlzIGNsYXNzIGNvdWxk
IHByb2JhYmx5IGJlIHJlcHJlc2VudGVkIGFzCi0vLyAiY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UgOiBwdWJsaWMgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlJlc29sdmFibGVUeXBl
PiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Uge30iCi0vLyBidXQg
SSBkaWRuJ3Qgd2FudCB0byBiZSB0b28gY2xldmVyLgotY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewotcHVi
bGljOgotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJl
c29sdmFibGVUeXBlKQotICAgICAgICA6IG1fcmVzb2x2YWJsZVR5cGUoJnJlc29sdmFibGVUeXBl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShjb25zdCBSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlKFJlc29sdmFibGVUeXBlUmVmZXJlbmNlJiYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9
IGRlbGV0ZTsKLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlJiYpID0gZGVsZXRlOwotCi0gICAgQVNUOjpSZXNvbHZhYmxlVHlwZSYg
cmVzb2x2YWJsZVR5cGUoKSB7IHJldHVybiAqbV9yZXNvbHZhYmxlVHlwZTsgfQotCi1wcml2YXRl
OgotICAgIEFTVDo6UmVzb2x2YWJsZVR5cGUqIG1fcmVzb2x2YWJsZVR5cGU7Ci19OwotCi0vLyBU
aGlzIGlzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBhIFZhcmlhbnQuCi0vLyBJdCBleGlzdHMgc28g
d2UgY2FuIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJp
Z2h0IHRoaW5nLgotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNTggVGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi1jbGFzcyBS
ZXNvbHZpbmdUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBSZXNvbHZpbmdUeXBlKCkKLSAgICAgICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZT4oKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZShSZWY8QVNU
OjpVbm5hbWVkVHlwZT4gdikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAgewot
ICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
PiB2KQotICAgICAgICA6IG1faW5uZXIoV1RGTW92ZSh2KSkKLSAgICB7Ci0gICAgfQotCi0gICAg
UmVzb2x2aW5nVHlwZShjb25zdCBSZXNvbHZpbmdUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2
aW5nVHlwZShSZXNvbHZpbmdUeXBlJiYgb3RoZXIpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3Zl
KG90aGVyLm1faW5uZXIpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlJiBvcGVy
YXRvcj0oY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmluZ1R5cGUm
IG9wZXJhdG9yPShSZXNvbHZpbmdUeXBlJiYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2lubmVy
ID0gV1RGTW92ZShvdGhlci5tX2lubmVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0K
LQotICAgIEFTVDo6VW5uYW1lZFR5cGUqIGdldFVubmFtZWRUeXBlKCkKLSAgICB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlVubmFtZWRUeXBlPj4obV9pbm5l
cikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+Piht
X2lubmVyKS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRv
cikgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+Jj4o
KSkpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2lubmVyKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFudDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJl
ZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+IG1faW5uZXI7Ci19OwotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIzYzExNWUxYzE0YmE5N2Q3NWNkMGExOGZkMTQ4MzFh
MTA1Yjk5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFNjb3BlZFNldEFkZGVyIHsKLXB1YmxpYzoKLSAgICBTY29wZWRT
ZXRBZGRlcihIYXNoU2V0PFQ+JiBzZXQsIFQmJiBpdGVtKQotICAgICAgICA6IG1fc2V0KHNldCkK
LSAgICAgICAgLCBtX2l0ZW0oV1RGTW92ZShpdGVtKSkKLSAgICB7Ci0gICAgICAgIG1faXNOZXdF
bnRyeSA9IHN0YXRpY19jYXN0PGJvb2w+KG1fc2V0LmFkZChtX2l0ZW0pKTsKLSAgICB9Ci0KLSAg
ICB+U2NvcGVkU2V0QWRkZXIoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lzTmV3RW50cnkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fc2V0LnJlbW92ZSht
X2l0ZW0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgIH0K
LQotICAgIGJvb2wgaXNOZXdFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdFbnRyeTsgfQot
Ci1wcml2YXRlOgotICAgIEhhc2hTZXQ8VD4mIG1fc2V0OwotICAgIFQgbV9pdGVtOwotICAgIGJv
b2wgbV9pc05ld0VudHJ5OwotfTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJmMjA4ODJlOTA1NTMxMjY0YTA3NzM1MWVlNDkwNTAxOWI0MmY4NTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpY01hdGNoZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxp
bmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hM
U0xSZXNvdXJjZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIGJvb2wgbWF0Y2hNb2RlKEJpbmRpbmc6OkJpbmRp
bmdEZXRhaWxzIGJpbmRpbmdUeXBlLCBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGUgbW9kZSkK
LXsKLSAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVm
ZmVyQmluZGluZykgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYzo6TW9kZTo6QnVmZmVyOwotICAgIH0sIFsmXShTYW1wbGVyQmluZGluZykgLT4g
Ym9vbCB7Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9k
ZTo6U2FtcGxlcjsKLSAgICB9LCBbJl0oVGV4dHVyZUJpbmRpbmcpIC0+IGJvb2wgewotICAgICAg
ICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlRleHR1cmU7Ci0g
ICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5kaW5nKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJu
IG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3
OwotICAgIH0pLCBiaW5kaW5nVHlwZSk7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hN
YXA8QmluZGluZyosIHNpemVfdD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4mIGVudHJ5UG9pbnRJdGVtcywgTGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdlIHNoYWRlclN0
YWdlKQotewotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hT
ZXQ8c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgYmluZEdyb3Vw
IDogbGF5b3V0KSB7Ci0gICAgICAgIGF1dG8gc3BhY2UgPSBiaW5kR3JvdXAubmFtZTsKLSAgICAg
ICAgZm9yIChhdXRvJiBiaW5kaW5nIDogYmluZEdyb3VwLmJpbmRpbmdzKSB7Ci0gICAgICAgICAg
ICBpZiAoIWJpbmRpbmcudmlzaWJpbGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVu
dHJ5UG9pbnRJdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGl0ZW0g
PSBlbnRyeVBvaW50SXRlbXNbaV07Ci0gICAgICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAq
aXRlbS5zZW1hbnRpYzsKLSAgICAgICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGF1dG8mIHJlc291cmNlU2VtYW50aWMgPSBXVEY6
OmdldDxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIW1hdGNoTW9kZShiaW5kaW5nLmJpbmRpbmcsIHJlc291cmNlU2VtYW50aWMubW9kZSgpKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGJpbmRp
bmcuZXh0ZXJuYWxOYW1lICE9IHJlc291cmNlU2VtYW50aWMuaW5kZXgoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHNwYWNlICE9IHJlc291cmNl
U2VtYW50aWMuc3BhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZCgmYmluZGluZywgaSk7Ci0gICAgICAgICAgICAgICAgaXRlbUlu
ZGljZXMuYWRkKGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYXV0byYgaXRlbSA9IGVudHJ5UG9pbnRJdGVtc1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50
aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEFTVDo6UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmICghaXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRp
YyBib29sIG1hdGNoSW5wdXRzT3V0cHV0cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiB2ZXJ0ZXhP
dXRwdXRzLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudElucHV0cykKLXsKLSAgICBm
b3IgKGF1dG8mIGZyYWdtZW50SW5wdXQgOiBmcmFnbWVudElucHV0cykgewotICAgICAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCpmcmFnbWVu
dElucHV0LnNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBm
cmFnbWVudElucHV0U3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0
U2VtYW50aWM+KCpmcmFnbWVudElucHV0LnNlbWFudGljKTsKLSAgICAgICAgYm9vbCBmb3VuZCA9
IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIHZlcnRleE91dHB1dCA6IHZlcnRleE91dHB1dHMp
IHsKLSAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5P
dXRTZW1hbnRpYz4oKnZlcnRleE91dHB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBhdXRvJiB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMg
PSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKnZlcnRleE91dHB1dC5zZW1hbnRp
Yyk7Ci0gICAgICAgICAgICBpZiAoZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYy5pbmRl
eCgpID09IHZlcnRleE91dHB1dFN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1hdGNoZXMoKmZyYWdtZW50SW5wdXQudW5uYW1lZFR5cGUsICp2ZXJ0ZXhP
dXRwdXQudW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp
ZiAoIWZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFZlcnRleEZvcm1hdCB2
ZXJ0ZXhGb3JtYXQsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzKQotewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBWZXJ0
ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyQjMyQTMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5h
bWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmVydGV4Rm9ybWF0
OjpGbG9hdFIzMkczMkIzMjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICBjYXNlIFZlcnRleEZvcm1hdDo6RmxvYXRSMzJH
MzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0
MlR5cGUoKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZlcnRleEZvcm1hdCA9PSBW
ZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyKTsKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJp
YnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1
dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIEhh
c2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXpl
X3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7Ci0gICAgZm9yIChhdXRvJiB2ZXJ0ZXhBdHRyaWJ1dGUg
OiB2ZXJ0ZXhBdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVy
dGV4SW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gdmVydGV4
SW5wdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsK
LSAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgYXV0byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2Vt
YW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgIGlmIChzdGFnZUluT3V0U2VtYW50aWMuaW5k
ZXgoKSAhPSB2ZXJ0ZXhBdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24pCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdCh2ZXJ0ZXhBdHRy
aWJ1dGUudmVydGV4Rm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIHJlc3VsdC5hZGQo
JnZlcnRleEF0dHJpYnV0ZSwgaSk7Ci0gICAgICAgICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlcnRleElucHV0
cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBpdGVtID0gdmVydGV4SW5wdXRzW2ldOwot
ICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5z
KGkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVGb3JtYXQoVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgSW50cmlu
c2ljcyYgaW50cmluc2ljcywgYm9vbCBpc0NvbG9yKQotewotICAgIGlmIChpc0NvbG9yKSB7Ci0g
ICAgICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgewotICAgICAgICBjYXNlIFRleHR1cmVGb3Jt
YXQ6OlI4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhVbm9ybVNyZ2I6Ci0g
ICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZTbm9ybToK
LSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZGbG9hdDoKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSMzJGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpSRzhVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhVbm9ybVNyZ2I6Ci0g
ICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukc4U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UkcxNlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZTbm9y
bToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzE2RmxvYXQ6Ci0gICAgICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6UkczMkZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpCNUc2UjVVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzExQjEw
RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5mbG9hdDNUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm06
Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpCR1JBOFVub3JtU3JnYjoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFNub3Jt
OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQjEwQTJVbm9ybToKLSAgICAgICAgY2Fz
ZSBUZXh0dXJlRm9ybWF0OjpSR0JBMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpSR0JBMTZTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDoK
LSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJGbG9hdDoKLSAgICAgICAgICAgIHJl
dHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRj
aGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlIzMlNpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVk
VHlwZSwgaW50cmluc2ljcy5pbnRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6
OlJHMzJVaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJp
bnNpY3MudWludDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJTaW50
OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50
MlR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyVWludDoKLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnQ0VHlwZSgp
KTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJTaW50OgotICAgICAgICAgICAg
cmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50NFR5cGUoKSk7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBz
aXplX3Q+PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJh
Z21lbnRPdXRwdXRzLCBWZWN0b3I8QXR0YWNobWVudERlc2NyaXB0b3I+JiBhdHRhY2htZW50RGVz
Y3JpcHRvcnMsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgSGFzaE1hcDxBdHRhY2ht
ZW50RGVzY3JpcHRvciosIHNpemVfdD4gcmVzdWx0OwotICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZh
dWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVf
dD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYgYXR0YWNobWVudERlc2NyaXB0b3IgOiBh
dHRhY2htZW50RGVzY3JpcHRvcnMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
cmFnbWVudE91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBm
cmFnbWVudE91dHB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNl
bWFudGljOwotICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdl
SW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1h
bnRpYy5pbmRleCgpICE9IGF0dGFjaG1lbnREZXNjcmlwdG9yLm5hbWUpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdChhdHRhY2ht
ZW50RGVzY3JpcHRvci50ZXh0dXJlRm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2lj
cywgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgIHJlc3VsdC5hZGQoJmF0dGFjaG1lbnREZXNjcmlwdG9yLCBpKTsKLSAgICAgICAgICAgIGl0
ZW1JbmRpY2VzLmFkZChpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhZ21lbnRPdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGl0
ZW0gPSBmcmFnbWVudE91dHB1dHNbaV07Ci0gICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0u
c2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdl
SW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmICghaXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIG1h
dGNoRGVwdGhBdHRhY2htZW50KFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0
cywgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnREZXNjcmlwdG9yLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAgIGF1dG8gaXRl
cmF0b3IgPSBzdGQ6OmZpbmRfaWYoZnJhZ21lbnRPdXRwdXRzLmJlZ2luKCksIGZyYWdtZW50T3V0
cHV0cy5lbmQoKSwgWyZdKEVudHJ5UG9pbnRJdGVtJiBpdGVtKSB7Ci0gICAgICAgIGF1dG8mIHNl
bWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1
aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICByZXR1cm4gYnVpbHRJblNlbWFudGlj
LnZhcmlhYmxlKCkgPT0gQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRlcHRoOwot
ICAgIH0pOwotICAgIGlmIChpdGVyYXRvciA9PSBmcmFnbWVudE91dHB1dHMuZW5kKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yKSB7Ci0gICAgICAgIEFTU0VSVCghZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3It
Pm5hbWUpOwotICAgICAgICByZXR1cm4gaXNBY2NlcHRhYmxlRm9ybWF0KGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yLT50ZXh0dXJlRm9ybWF0LCAqaXRlcmF0b3ItPnVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLCBmYWxzZSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFt
JiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhp
c3RzKQotewotICAgIGF1dG8gdmVydGV4RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgp
LmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5h
bWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICBpZiAodmVydGV4RnVuY3Rpb25z
LnNpemUoKSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUo
KSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQo
KSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byYgdmVydGV4U2hhZGVy
RW50cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5j
dGlvbnNbMF0uZ2V0KCkpOwotICAgIGF1dG8gdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zID0g
Z2F0aGVyRW50cnlQb2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCB2ZXJ0ZXhTaGFkZXJF
bnRyeVBvaW50KTsKLSAgICBpZiAoIXZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcykKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHZlcnRleFNoYWRlclJlc291cmNlTWFw
ID0gbWF0Y2hSZXNvdXJjZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpWZXJ0ZXgpOwotICAg
IGlmICghdmVydGV4U2hhZGVyUmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgYXV0byBtYXRjaGVkVmVydGV4QXR0cmlidXRlcyA9IG1hdGNoVmVydGV4QXR0cmli
dXRlcyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLnZlcnRleEF0dHJpYnV0ZXMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKLSAgICBp
ZiAoIW1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIGlmICghZnJhZ21lbnRTaGFkZXJFeGlzdHMpCi0gICAgICAgIHJldHVybiB7eyAmdmVy
dGV4U2hhZGVyRW50cnlQb2ludCwgbnVsbHB0ciwgKnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVt
cywgRW50cnlQb2ludEl0ZW1zKCksICp2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgSGFzaE1hcDxC
aW5kaW5nKiwgc2l6ZV90PigpLCAqbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMsIEhhc2hNYXA8QXR0
YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+KCkgfX07Ci0KLSAgICBhdXRvIGZyYWdtZW50TmFt
ZVNwYWNlID0gZGlzdGluY3RGcmFnbWVudFNoYWRlciA/IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3Bh
Y2UyIDogQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTE7Ci0gICAgYXV0byBmcmFnbWVudEZ1bmN0
aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmZyYWdtZW50RW50cnlQb2ludE5hbWUsIGZyYWdtZW50TmFtZVNwYWNlKTsKLSAg
ICBpZiAoZnJhZ21lbnRGdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZyYWdtZW50RnVuY3Rpb25z
WzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
PihmcmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgYXV0byYgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+KGZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRv
IGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKHBy
b2dyYW0uaW50cmluc2ljcygpLCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlmICgh
ZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgYXV0byBmcmFnbWVudFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXMo
ZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsKLSAgICBpZiAoIWZyYWdtZW50
U2hhZGVyUmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFtYXRjaElucHV0c091dHB1dHModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRz
LCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzID0gbWF0Y2hD
b2xvckF0dGFjaG1lbnRzKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNo
bWVudERlc2NyaXB0b3JzLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0gICAgaWYgKCFtYXRjaGVk
Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAo
IW1hdGNoRGVwdGhBdHRhY2htZW50KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRw
dXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3Iu
ZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIHByb2dyYW0uaW50cmluc2ljcygpKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRl
ckVudHJ5UG9pbnQsICZmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQsICp2ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50SXRlbXMsICpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKnZlcnRleFNoYWRl
clJlc291cmNlTWFwLCAqZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgKm1hdGNoZWRWZXJ0ZXhB
dHRyaWJ1dGVzLCAqbWF0Y2hlZENvbG9yQXR0YWNobWVudHMgfX07Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dy
YW0sIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ip
Ci17Ci0gICAgYXV0byBmdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rp
b25zKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuZW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNw
YWNlOjpOYW1lU3BhY2UxKTsKLSAgICBpZiAoZnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmdW5j
dGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgYXV0byYgZW50cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
PihmdW5jdGlvbnNbMF0uZ2V0KCkpOwotICAgIGF1dG8gZW50cnlQb2ludEl0ZW1zID0gZ2F0aGVy
RW50cnlQb2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCBlbnRyeVBvaW50KTsKLSAgICBp
ZiAoIWVudHJ5UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBB
U1NFUlQoZW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLmlzRW1wdHkoKSk7Ci0gICAgYXV0byByZXNv
dXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKGVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCBjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIGlm
ICghcmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IHt7ICZlbnRyeVBvaW50LCAqZW50cnlQb2ludEl0ZW1zLCAqcmVzb3VyY2VNYXAgfX07Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZGJmNmM2NzNkM2RlYjZjN2ZjMWYzMjM5ZWE4YjBmZDBhMzI3
ODcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1zdHJ1Y3QgTWF0Y2hlZFJlbmRlclNlbWFudGlj
cyB7Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHZlcnRleFNoYWRlcjsKLSAgICBBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiogZnJhZ21lbnRTaGFkZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1z
IHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtczsKLSAgICBFbnRyeVBvaW50SXRlbXMgZnJhZ21l
bnRTaGFkZXJFbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiB2
ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcDsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IGZy
YWdtZW50U2hhZGVyUmVzb3VyY2VNYXA7Ci0gICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBz
aXplX3Q+IG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIEhhc2hNYXA8QXR0YWNobWVudERl
c2NyaXB0b3IqLCBzaXplX3Q+IG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzOwotfTsKLQotc3RkOjpv
cHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBi
b29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKTsKLQotc3RydWN0IE1hdGNoZWRDb21wdXRlU2VtYW50
aWNzIHsKLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogc2hhZGVyOwotICAgIEVudHJ5UG9p
bnRJdGVtcyBlbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiBy
ZXNvdXJjZU1hcDsKLX07Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+
IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3YzA1NjIyNjdhN2JiYzFkNWI0ZGI5Yjg5MzlmNWRm
NzAxYWEwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxODAwMyArMCwwIEBACi0vLyBUaGlzIHdhcyBhdXRvZ2Vu
ZXJhdGVkIGZyb20gR2VuZXJhdGVfU3RhbmRhcmRfTGlicmFyeS5qcy4KLS8vIFRoaXMgc3RhbmRh
cmQgbGlicmFyeSBoYXMgYmVlbiBwcm9jZXNzZWQgc3VjaCB0aGF0IGZ1bmN0aW9ucyB3aGljaCBz
aGFyZSBhIG5hbWUgYXJlIG5leHQgdG8gZWFjaCBvdGhlciwKLS8vIGFuZCBiZWZvcmUgZWFjaCBn
cm91cCBvZiBmdW5jdGlvbnMsIHRoZXJlJ3MgYSBwcmVmaXggdGhhdCBoYXMgdG8gYmUgaW4gYSBw
YXJ0aWN1bGFyIGZvcm0uCi0vLyBUaGUgV2ViS2l0IGJ1aWxkIHByb2Nlc3MgZXhwbG9pdHMgdGhp
cyBzdHJ1Y3R1cmUgdG8gYnVpbGQgYSBtYXAgb2Ygd2hpY2ggZnVuY3Rpb24gbmFtZSBjb3JyZXNw
b25kcyB0byB3aGljaAotLy8gcGFydCBvZiB0aGlzIGZpbGUuIFRoZW4sIHdoZW4gd2UgcGFyc2Ug
V0hMU0wgcHJvZ3JhbXMsIHdlIGNhbiBvbmx5IHBhcnNlIHRoZSBwaWVjZXMgb2YgdGhpcyBzdGFu
ZGFyZCBsaWJyYXJ5Ci0vLyB3aGljaCBjb3JyZXNwb25kIHRvIGZ1bmN0aW9ucyB0aGF0IGFyZSBh
Y3R1YWxseSB1c2VkIGluIHRoZSB1c2VyIHByb2dyYW0uCi0KLW5hdGl2ZSB0eXBlZGVmIHZvaWQ7
Ci1uYXRpdmUgdHlwZWRlZiBib29sOwotbmF0aXZlIHR5cGVkZWYgdWludDsKLW5hdGl2ZSB0eXBl
ZGVmIGludDsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0OwotbmF0aXZlIHR5cGVkZWYgYXRvbWljX2lu
dDsKLW5hdGl2ZSB0eXBlZGVmIGF0b21pY191aW50OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJv
b2wsIDI+OwotdHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29sLCAyPjsKLW5hdGl2ZSB0eXBlZGVm
IHZlY3Rvcjxib29sLCAzPjsKLXR5cGVkZWYgYm9vbDMgPSB2ZWN0b3I8Ym9vbCwgMz47Ci1uYXRp
dmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgND47Ci10eXBlZGVmIGJvb2w0ID0gdmVjdG9yPGJvb2ws
IDQ+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwotdHlwZWRlZiB1aW50MiA9IHZl
Y3Rvcjx1aW50LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKLXR5cGVkZWYg
dWludDMgPSB2ZWN0b3I8dWludCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47
Ci10eXBlZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGludCwgMj47Ci10eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKLW5hdGl2ZSB0eXBlZGVm
IHZlY3RvcjxpbnQsIDM+OwotdHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47Ci1uYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKLXR5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQsIDQ+Owot
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAyPjsKLXR5cGVkZWYgZmxvYXQyID0gdmVjdG9y
PGZsb2F0LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Ci10eXBlZGVmIGZs
b2F0MyA9IHZlY3RvcjxmbG9hdCwgMz47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+
OwotdHlwZWRlZiBmbG9hdDQgPSB2ZWN0b3I8ZmxvYXQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBt
YXRyaXg8ZmxvYXQsIDIsIDI+OwotdHlwZWRlZiBmbG9hdDJ4MiA9IG1hdHJpeDxmbG9hdCwgMiwg
Mj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIsIDM+OwotdHlwZWRlZiBmbG9hdDJ4
MyA9IG1hdHJpeDxmbG9hdCwgMiwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDIs
IDQ+OwotdHlwZWRlZiBmbG9hdDJ4NCA9IG1hdHJpeDxmbG9hdCwgMiwgND47Ci1uYXRpdmUgdHlw
ZWRlZiBtYXRyaXg8ZmxvYXQsIDMsIDI+OwotdHlwZWRlZiBmbG9hdDN4MiA9IG1hdHJpeDxmbG9h
dCwgMywgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotdHlwZWRlZiBm
bG9hdDN4MyA9IG1hdHJpeDxmbG9hdCwgMywgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Zmxv
YXQsIDMsIDQ+OwotdHlwZWRlZiBmbG9hdDN4NCA9IG1hdHJpeDxmbG9hdCwgMywgND47Ci1uYXRp
dmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDI+OwotdHlwZWRlZiBmbG9hdDR4MiA9IG1hdHJp
eDxmbG9hdCwgNCwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotdHlw
ZWRlZiBmbG9hdDR4MyA9IG1hdHJpeDxmbG9hdCwgNCwgMz47Ci1uYXRpdmUgdHlwZWRlZiBtYXRy
aXg8ZmxvYXQsIDQsIDQ+OwotdHlwZWRlZiBmbG9hdDR4NCA9IG1hdHJpeDxmbG9hdCwgNCwgND47
Ci0KLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCAyPjsKLXR5cGVkZWYgYm9vbDJ4MiA9
IG1hdHJpeDxib29sLCAyLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAyLCAzPjsK
LXR5cGVkZWYgYm9vbDJ4MyA9IG1hdHJpeDxib29sLCAyLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1h
dHJpeDxib29sLCAyLCA0PjsKLXR5cGVkZWYgYm9vbDJ4NCA9IG1hdHJpeDxib29sLCAyLCA0PjsK
LW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCAyPjsKLXR5cGVkZWYgYm9vbDN4MiA9IG1h
dHJpeDxib29sLCAzLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCAzLCAzPjsKLXR5
cGVkZWYgYm9vbDN4MyA9IG1hdHJpeDxib29sLCAzLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJp
eDxib29sLCAzLCA0PjsKLXR5cGVkZWYgYm9vbDN4NCA9IG1hdHJpeDxib29sLCAzLCA0PjsKLW5h
dGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0LCAyPjsKLXR5cGVkZWYgYm9vbDR4MiA9IG1hdHJp
eDxib29sLCA0LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxib29sLCA0LCAzPjsKLXR5cGVk
ZWYgYm9vbDR4MyA9IG1hdHJpeDxib29sLCA0LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxi
b29sLCA0LCA0PjsKLXR5cGVkZWYgYm9vbDR4NCA9IG1hdHJpeDxib29sLCA0LCA0PjsKLQotbmF0
aXZlIHR5cGVkZWYgc2FtcGxlcjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50PjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8
dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUxRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDI+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTFEPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludDQ+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUxRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0Mz47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMUQ8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5
PHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWludDI+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJy
YXk8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUxREFycmF5PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJy
YXk8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQ0PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFy
cmF5PGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdDM+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUyRDx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50Mj47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMkQ8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQ0PjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJE
PGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludDM+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTJEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUyRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZs
b2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUyREFycmF5PHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWlu
dDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWludDM+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEQXJyYXk8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8
aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGludDI+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEQXJyYXk8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxp
bnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUyREFycmF5PGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50
Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTNEPHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTNEPGludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludDM+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNE
PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9hdDI+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTNEPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQ0PjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZUN1YmU8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludDM+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8
aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGludDI+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZUN1YmU8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQ0PjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVD
dWJlPGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdDM+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZUN1YmU8ZmxvYXQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0
aDJEPGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD47Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCByZXZlcnNlYml0cyAqLwotdWludCByZXZlcnNlYml0cyh1aW50IHgpIHsKLSAgICByZXR1
cm4gdWludCgoKHggJiB1aW50KDEgPDwgMCkpIDw8IDMxKSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCAxKSkgPDwgMjkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIpKSA8PCAy
NykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMykpIDw8IDI1KSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCA0KSkgPDwgMjMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDUpKSA8PCAyMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNikpIDw8IDE5KSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA3KSkgPDwgMTcpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDgpKSA8PCAxNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgOSkpIDw8
IDEzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxMCkpIDw8IDExKSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCAxMSkpIDw8IDkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDEyKSkgPDwgNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTMpKSA8PCA1KSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNCkpIDw8IDMpIHwKLSAgICAgICAgICAgKCh4
ICYgdWludCgxIDw8IDE1KSkgPDwgMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTYp
KSA+PiAxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNykpID4+IDMpIHwKLSAgICAg
ICAgICAgKCh4ICYgdWludCgxIDw8IDE4KSkgPj4gNSkgfAotICAgICAgICAgICAoKHggJiB1aW50
KDEgPDwgMTkpKSA+PiA3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMCkpID4+IDkp
IHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIxKSkgPj4gMTEpIHwKLSAgICAgICAgICAg
KCh4ICYgdWludCgxIDw8IDIyKSkgPj4gMTMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDIzKSkgPj4gMTUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI0KSkgPj4gMTcpIHwK
LSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI1KSkgPj4gMTkpIHwKLSAgICAgICAgICAgKCh4
ICYgdWludCgxIDw8IDI2KSkgPj4gMjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI3
KSkgPj4gMjMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI4KSkgPj4gMjUpIHwKLSAg
ICAgICAgICAgKCh4ICYgdWludCgxIDw8IDI5KSkgPj4gMjcpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDMwKSkgPj4gMjkpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMxKSkg
Pj4gMzEpKTsKLX0KLXVpbnQyIHJldmVyc2ViaXRzKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
cmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIHJldmVyc2Vi
aXRzKHVpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmV2ZXJz
ZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gcmV2ZXJzZWJpdHMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0
IHJldmVyc2ViaXRzKHVpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gcmV2ZXJzZWJpdHMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmV2ZXJzZWJpdHMoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gcmV2ZXJzZWJpdHMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcmV2
ZXJzZWJpdHMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgaXNvcmRlcmVkICovCi1ib29sIGlzb3JkZXJlZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0g
ICAgcmV0dXJuICh4ID09IHgpICYmICh5ID09IHkpOwotfQotYm9vbDIgaXNvcmRlcmVkKGZsb2F0
MiB4LCBmbG9hdDIgeSkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29y
ZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc29yZGVyZWQoZmxvYXQzIHgsIGZsb2F0
MyB5KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzb3JkZXJlZCh4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc29yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gaXNvcmRlcmVkKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sNCBpc29yZGVyZWQoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGlzb3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBp
c29yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNvcmRlcmVkKHhbMl0sIHlb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGlzb3JkZXJlZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdHJhbnNwb3NlICovCi1mbG9hdCB0cmFu
c3Bvc2UoZmxvYXQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQyeDIgdHJhbnNwb3NlKGZs
b2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFsw
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IHhb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgdHJhbnNwb3NlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFd
OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1b
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRyYW5zcG9zZShmbG9hdDJ4NCB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwot
ICAgIHJlc3VsdFszXVswXSA9IHhbMF1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07
Ci0gICAgcmVzdWx0WzNdWzFdID0geFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgdHJhbnNwb3NlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAg
IHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRyYW5zcG9zZShmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVz
dWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJl
c3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAg
cmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyB0cmFuc3Bvc2UoZmxvYXQzeDQgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1
bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJl
c3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAg
cmVzdWx0WzNdWzJdID0geFsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
dHJhbnNwb3NlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0cmFuc3Bvc2UoZmxvYXQ0eDMgeCkgewotICAgIGZs
b2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsx
XVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRb
MF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1
bHRbMF1bM10gPSB4WzNdWzBdOwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0gICAgcmVz
dWx0WzJdWzNdID0geFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdHJh
bnNwb3NlKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsy
XVswXSA9IHhbMF1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRb
MF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3Vs
dFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1
bHRbMl1bMl0gPSB4WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmVz
dWx0WzBdWzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzNdWzFdOwotICAgIHJl
c3VsdFsyXVszXSA9IHhbM11bMl07Ci0gICAgcmVzdWx0WzNdWzNdID0geFszXVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZEFkZCAq
LwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwg
dGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNf
aW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZp
Y2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRBZGQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3Vw
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50Kiwg
aW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVh
ZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWlu
dCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3Vw
IGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
QWRkKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwg
dGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzYXR1cmF0ZSAqLwotZmxv
YXQgc2F0dXJhdGUoZmxvYXQgeCkgewotICAgIHJldHVybiBjbGFtcCh4LCAwLCAxKTsKLX0KLWZs
b2F0MiBzYXR1cmF0ZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2F0dXJhdGUoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzYXR1cmF0ZShmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gc2F0dXJhdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzYXR1cmF0ZShmbG9hdDQgeCkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2F0dXJhdGUoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gc2F0dXJhdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2F0dXJhdGUoeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gc2F0dXJhdGUoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngyIHNhdHVyYXRlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0
dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIHNhdHVyYXRlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsy
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNhdHVyYXRlKGZsb2F0NHgy
IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJh
dGUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0
dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNhdHVyYXRlKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gz
IHNhdHVyYXRlKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJh
dGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0
dXJhdGUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNhdHVyYXRlKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gc2F0dXJhdGUoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IHNhdHVyYXRlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0
dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
c2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gc2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gc2F0dXJhdGUoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNh
dHVyYXRlKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gc2F0dXJhdGUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2F0dXJhdGUo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJh
dGUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gc2F0dXJhdGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0
dXJhdGUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2F0dXJhdGUoeFsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNhdHVyYXRlKGZsb2F0NHg0IHgpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2F0dXJhdGUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gc2F0dXJhdGUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc2F0dXJhdGUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2F0dXJhdGUoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2F0dXJhdGUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc2F0dXJhdGUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2F0dXJhdGUoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2F0dXJhdGUoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gc2F0dXJhdGUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2F0dXJhdGUo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2F0dXJhdGUoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzNdWzJdID0gc2F0dXJhdGUoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2F0dXJh
dGUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2F0dXJhdGUoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gc2F0dXJhdGUoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc2F0
dXJhdGUoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIG1hZCAqLwotCi1mbG9hdCBtYWQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewotICAg
IHJldHVybiB4ICogeSArIHo7Ci19Ci1mbG9hdDIgbWFkKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxv
YXQyIHopIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtYWQoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMg
eikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0s
IHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBtYWQoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBtYWQoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsx
XSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYWQoeFsyXSwgeVsy
XSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWFkKHhbM10sIHlbM10sIHpbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtYWQoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxv
YXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQo
eFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1b
MF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5
WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsx
XSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1hZChmbG9hdDN4
MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1b
MV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBt
YWQoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQo
eFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWFkKHhbM11b
MV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBt
YWQoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgbWFkKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0s
IHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQo
eFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgzIG1hZChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IG1hZCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQo
eFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1b
Ml0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5
WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsy
XSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWFkKHhbM11bMl0sIHlbM11bMl0sIHpb
M11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtYWQoZmxvYXQyeDQgeCwg
ZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1b
Ml0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5
WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVsz
XSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpb
MV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtYWQoZmxvYXQzeDQgeCwg
ZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQo
eFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsy
XSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IG1hZCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgbWFkKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0
IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5
WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVsw
XSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IG1hZCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1h
ZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYWQoeFsz
XVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10s
IHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFd
WzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwg
elsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbWFkKHhbM11bM10sIHlbM11bM10sIHpbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1vZGYg
Ki8KLQotZmxvYXQgbW9kZihmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIGlwKSB7Ci0gICAgdWludCBy
ZXN1bHQgPSB1aW50KHgpOwotICAgICppcCA9IHggLSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVy
biBmbG9hdChyZXN1bHQpOwotfQotZmxvYXQyIG1vZGYoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIq
IHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbW9kZihmbG9hdDMgeCwgdGhyZWFkIGZsb2F0Myog
eSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhyZWFkIGZsb2F0
NCogeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3Vs
dFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVy
OwotICAgIHJlc3VsdFszXSA9IG1vZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1
ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCB0
aHJlYWQgZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVm
ZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4
WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJlYWQg
ZmxvYXQzeDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwot
ICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2Rm
KGZsb2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYo
eFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4
LCB0aHJlYWQgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBtb2RmKGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBt
b2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIG1vZGYoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2Rm
KHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVy
OwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsz
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9h
dDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQqIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
ZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1v
ZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgdGhy
ZWFkIGZsb2F0M3g0KiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsy
XVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
MV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgq
eSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYo
eFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgbW9kZihmbG9hdDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHkp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9k
Zih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFsw
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
M10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVszXSA9IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVszXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0
IG1vZGYoZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWlu
dCh4KTsKLSAgICAqaXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVz
dWx0KTsKLX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1v
ZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHkpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhb
MF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9k
Zih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9
IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHkpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2Rm
KHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0g
bW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10gPSBidWZmZXI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0
MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2Rm
KHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4
LCBkZXZpY2UgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9k
Zih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsy
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11b
MV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1vZGYoZmxvYXQyeDMgeCwgZGV2aWNlIGZs
b2F0MngzKiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBt
b2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihm
bG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhb
MV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9
IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtb2Rm
KGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYo
eFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1v
ZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgZGV2
aWNlIGZsb2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFsw
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
MV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0g
bW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4
NCogeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4
WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0g
PSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2Rm
KHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIp
OwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBt
b2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4
WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11b
M10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBtb2RmKGZsb2F0
IHgsIHRocmVhZGdyb3VwIGZsb2F0KiBpcCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsK
LSAgICAqaXAgPSB4IC0gZmxvYXQocmVzdWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsK
LX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHkpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhb
MF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9k
Zih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgbW9kZihmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9k
Zih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9
IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQq
IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwotICAgICgqeSlbM10gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1vZGYoZmxvYXQyeDIgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCB0aHJl
YWRncm91cCBmbG9hdDN4MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2Rm
KHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIG1vZGYoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHkpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYo
eFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1v
ZGYoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9k
Zih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtb2RmKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0
M3gzKiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2Rm
KHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsy
XSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbW9kZihmbG9hdDR4MyB4LCB0aHJlYWRncm91
cCBmbG9hdDR4MyogeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1v
ZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhb
M11bMl0sICZidWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQq
IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3Vs
dFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsx
XVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
Ml0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHkpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVsw
XSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBt
b2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4
WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsw
XVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1b
M10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBtb2RmKGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2Rm
KHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVy
OwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsz
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIp
OwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFd
WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsz
XSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbM11bM10gPSBtb2RmKHhbM11bM10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10g
PSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
SW50ZXJsb2NrZWRNaW4gKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1p
bihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2Ug
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZp
Y2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBh
dG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZE1pbih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZE1pbih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
bGVuZ3RoICovCi1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0KTsKLW5hdGl2ZSBmbG9hdCBsZW5n
dGgoZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdCBs
ZW5ndGgoZmxvYXQ0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLS0gKi8KLXVpbnQg
b3BlcmF0b3ItLSh1aW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLWludCBv
cGVyYXRvci0tKGludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSAtIDE7Ci19Ci1mbG9hdCBv
cGVyYXRvci0tKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPDwgKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I8PChpbnQs
IHVpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3I8PCh1aW50LCB1aW50KTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIGV4cDIgKi8KLWZsb2F0IGV4cDIoZmxvYXQgeCkgewotICAgIHJldHVybiBleHAo
eCAqIGxvZyhmbG9hdCgyKSkpOwotfQotZmxvYXQyIGV4cDIoZmxvYXQyIHgpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZXhwMih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGV4cDIoZmxvYXQzIHgp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZXhwMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZXhwMihmbG9hdDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAy
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cDIoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZXhw
Mih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZXhwMihmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGV4cDIoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZXhwMihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZXhwMihmbG9hdDJ4MyB4KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBl
eHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBleHAyKGZsb2F0M3gzIHgpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4
cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGV4cDIoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cDIoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gZXhwMih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgZXhwMihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDQgZXhwMihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4
cDIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBleHAyKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBleHAyKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhw
Mih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBleHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBleHAyKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cDIoeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gZXhwMih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgaXN1bm9yZGVyZWQgKi8KLQotYm9vbCBpc3Vub3JkZXJlZChm
bG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIGlzbmFuKHgpIHx8IGlzbmFuKHkpOwotfQot
Ym9vbDIgaXN1bm9yZGVyZWQoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgYm9vbDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGlzdW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
MyBpc3Vub3JkZXJlZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gaXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0g
aXN1bm9yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsy
XSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzdW5vcmRlcmVkKGZsb2F0
NCB4LCBmbG9hdDQgeSkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vu
b3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc3Vub3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXN1
bHRbM10gPSBpc3Vub3JkZXJlZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgYXRhbiAqLwotbmF0aXZlIGZsb2F0IGF0YW4oZmxvYXQpOwot
ZmxvYXQyIGF0YW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzIGF0YW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBhdGFuKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgYXRhbihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YXRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGF0YW4oeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgYXRhbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIGF0YW4oZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
dGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgYXRhbihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0
YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgYXRhbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRh
bih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyBhdGFuKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
YXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgzIGF0YW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBh
dGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbih4
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXRhbihmbG9hdDJ4NCB4
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gYXRhbih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRh
bihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFu
KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gYXRhbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhdGFuKGZsb2F0NHg0IHgpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4o
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBh
dGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gYXRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGF0YW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXRhbih4
WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9n
ICovCi1uYXRpdmUgZmxvYXQgbG9nKGZsb2F0KTsKLWZsb2F0MiBsb2coZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBsb2coeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2coZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBsb2coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbG9nKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBsb2coeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZyhmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgbG9nKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxv
Zyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGxvZyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGxvZyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2coeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIGxvZyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBsb2coZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2co
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBs
b2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxv
Zyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBsb2coeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0Mng0IGxvZyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IGxvZyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbG9nKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsb2coZmxvYXQ0eDQgeCkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGxvZyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2coeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGxvZyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsb2coeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIExvYWQgKi8KLW5hdGl2ZSB1
aW50IExvYWQoVGV4dHVyZTFEPHVpbnQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9h
ZChUZXh0dXJlMURBcnJheTx1aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2Fk
KFRleHR1cmUyRDx1aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1
cmUyREFycmF5PHVpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVy
ZTNEPHVpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUxRDx1
aW50Mj4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMURBcnJheTx1
aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTJEPHVpbnQy
PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTNEPHVpbnQyPiwg
aW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMUQ8dWludDM+LCBpbnQg
bG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBpbnQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUyRDx1aW50Mz4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUzRDx1aW50Mz4sIGludDMgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTFEPHVpbnQ0PiwgaW50IGxvY2F0aW9uKTsK
LW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMkQ8dWludDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5h
dGl2ZSB1aW50NCBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1u
YXRpdmUgdWludDQgTG9hZChUZXh0dXJlM0Q8dWludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQgTG9hZChUZXh0dXJlMUQ8aW50PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9h
ZChUZXh0dXJlMURBcnJheTxpbnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChU
ZXh0dXJlMkQ8aW50PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTJE
QXJyYXk8aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTNEPGlu
dD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMUQ8aW50Mj4sIGlu
dCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUxREFycmF5PGludDI+LCBpbnQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTJEPGludDI+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIGludDMgbG9jYXRp
b24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlM0Q8aW50Mj4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIGludDMgTG9hZChUZXh0dXJlMUQ8aW50Mz4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MyBMb2FkKFRleHR1cmUxREFycmF5PGludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBp
bnQzIExvYWQoVGV4dHVyZTJEPGludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExv
YWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9h
ZChUZXh0dXJlM0Q8aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0
dXJlMUQ8aW50ND4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUxREFy
cmF5PGludDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEPGlu
dDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlM0Q8aW50ND4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTFEPGZsb2F0PiwgaW50IGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0PiwgaW50MiBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMkQ8ZmxvYXQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0PiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlM0Q8ZmxvYXQ+LCBpbnQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMUQ8ZmxvYXQyPiwgaW50IGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBpbnQyIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMkQ8ZmxvYXQyPiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgaW50MyBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTNEPGZsb2F0Mj4sIGludDMgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUxRDxmbG9hdDM+LCBpbnQgbG9jYXRpb24pOwot
bmF0aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGludDIgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUyRDxmbG9hdDM+LCBpbnQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBpbnQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlM0Q8ZmxvYXQzPiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQ0IExvYWQoVGV4dHVyZTFEPGZsb2F0ND4sIGludCBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQ0IExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQ0IExvYWQoVGV4dHVyZTJEPGZsb2F0ND4sIGludDIgbG9jYXRpb24pOwot
bmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIGludDMgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUzRDxmbG9hdDQ+LCBpbnQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgaW50MyBsb2Nh
dGlvbik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzaW4gKi8KLW5hdGl2ZSBmbG9hdCBzaW4oZmxv
YXQpOwotZmxvYXQyIHNpbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIHNpbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBzaW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBzaW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNp
bih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2lu
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgc2luKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc2luKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzaW4oZmxv
YXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc2luKGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBz
aW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNp
bih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2luKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNpbihmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBzaW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2lu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4o
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbih4
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc2luKGZsb2F0Mng0IHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBz
aW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNp
bih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc2luKGZsb2F0M3g0
IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IHNpbihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2luKHhbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IHNpbih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgc2luY29zICovCi12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxv
YXQqIHksIHRocmVhZCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29z
KHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHksIHRocmVhZCBm
bG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQz
KiB5LCB0aHJlYWQgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0
aHJlYWQgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIHRocmVh
ZCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIHRocmVhZCBm
bG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
eDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMg
eCwgdGhyZWFkIGZsb2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxv
YXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRo
cmVhZCBmbG9hdDN4NCogeSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBm
bG9hdDR4NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwg
dGhyZWFkIGZsb2F0KiB5LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAg
ICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxvYXQyKiB5
LCBkZXZpY2UgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhy
ZWFkIGZsb2F0MyogeSwgZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZs
b2F0NCogeSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0
MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gy
KiB5LCBkZXZpY2UgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5
LCBkZXZpY2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwg
ZGV2aWNlIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgZGV2aWNl
IGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4
LCB0aHJlYWQgZmxvYXQ0eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsz
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0IHgsIHRocmVhZCBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAq
eSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0
aHJlYWQgZmxvYXQyKiB5LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0IHgsIHRocmVhZCBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRo
cmVhZCBmbG9hdDJ4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0
M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mngz
IHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQz
eDMgeCwgdGhyZWFkIGZsb2F0M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHksIHRo
cmVhZGdyb3VwIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwgdGhy
ZWFkZ3JvdXAgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0M3g0IHgsIHRocmVhZCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIGRldmljZSBmbG9hdCogeSwgdGhyZWFkIGZsb2F0
KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDIgeCwgZGV2aWNlIGZsb2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHksIHRocmVhZCBmbG9hdDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCBkZXZp
Y2UgZmxvYXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3gyIHgsIGRldmljZSBmbG9hdDN4MiogeSwgdGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSwgdGhyZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQy
eDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMq
IHksIHRocmVhZCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHksIHRocmVhZCBmbG9hdDR4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4
LCBkZXZpY2UgZmxvYXQyeDQqIHksIHRocmVhZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5LCB0
aHJlYWQgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWQg
ZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIGRl
dmljZSBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQot
dm9pZCBzaW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIGRldmljZSBmbG9hdDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCBkZXZp
Y2UgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCBkZXZpY2UgZmxv
YXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
eDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5LCBkZXZpY2UgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIGRldmljZSBmbG9hdDN4
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIGRldmljZSBmbG9hdDR4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2
aWNlIGZsb2F0MngzKiB5LCBkZXZpY2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgZGV2aWNl
IGZsb2F0M3gzKiB5LCBkZXZpY2UgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmljZSBmbG9h
dDN4NCogeSwgZGV2aWNlIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCog
eSwgZGV2aWNlIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZs
b2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6
ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRo
cmVhZGdyb3VwIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIGRl
dmljZSBmbG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2
aWNlIGZsb2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5LCB0
aHJlYWRncm91cCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgs
IGRldmljZSBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIg
eCwgZGV2aWNlIGZsb2F0NHgyKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgZGV2aWNlIGZsb2F0Mngz
KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQz
eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2
aWNlIGZsb2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZp
Y2UgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIHRocmVhZCBmbG9hdCogeikgewotICAgICp5
ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRo
cmVhZGdyb3VwIGZsb2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0Myogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCB0aHJlYWQgZmxvYXQ0KiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQz
eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9h
dDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4
MyB4LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5
LCB0aHJlYWQgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHks
IHRocmVhZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIHksIGRldmljZSBm
bG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBz
aW5jb3MoZmxvYXQyIHgsIHRocmVhZGdyb3VwIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0Miogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwg
ZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCBk
ZXZpY2UgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHksIGRldmljZSBmbG9hdDJ4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gy
KiB5LCBkZXZpY2UgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDIqIHksIGRldmljZSBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHksIGRldmljZSBmbG9h
dDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgZGV2aWNlIGZs
b2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVh
ZGdyb3VwIGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFk
Z3JvdXAgZmxvYXQyeDQqIHksIGRldmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsz
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHks
IGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeSwg
ZGV2aWNlIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQqIHksIHRocmVhZGdyb3VwIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAg
KnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQy
KiB5LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9hdDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJl
YWRncm91cCBmbG9hdDJ4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeSwgdGhyZWFkZ3Jv
dXAgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHksIHRo
cmVhZGdyb3VwIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZGdy
b3VwIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgs
IHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4
NCB4LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdy
b3VwIGZsb2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJl
YWRncm91cCBmbG9hdDR4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlICovCi1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB1
aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwg
dWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hh
bmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQs
IHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFy
ZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZGdyb3VwIGludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRv
bWljX3VpbnQqLCB1aW50LCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgaW50LCB0
aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJl
YWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50Kiwg
aW50LCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkZ3JvdXAg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIHNtb290aHN0ZXAgKi8KLWZsb2F0IHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZs
b2F0IGVkZ2UxLCBmbG9hdCB4KSB7Ci0gICAgZmxvYXQgdCA9IGNsYW1wKCh4IC0gZWRnZTApIC8g
KGVkZ2UxIC0gZWRnZTApLCAwLCAxKTsKLSAgICByZXR1cm4gdCAqIHQgKiAoMyAtIDIgKiB0KTsK
LX0KLWZsb2F0MiBzbW9vdGhzdGVwKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNtb290aHN0ZXAoeFswXSwgeVswXSwg
elswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3RlcCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHNtb290aHN0ZXAoZmxvYXQzIHgsIGZsb2F0MyB5
LCBmbG9hdDMgeikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc21vb3Ro
c3RlcCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzbW9vdGhzdGVwKHhbMV0s
IHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNtb290aHN0ZXAoeFsyXSwgeVsyXSwgelsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzbW9vdGhzdGVwKGZsb2F0NCB4LCBm
bG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHNtb290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gc21vb3Roc3Rl
cCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVwKHhbMl0sIHlb
Ml0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IHNtb290aHN0ZXAoeFszXSwgeVszXSwgelszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNtb290aHN0ZXAoZmxvYXQyeDIgeCwg
ZmxvYXQyeDIgeSwgZmxvYXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzbW9vdGhzdGVwKGZsb2F0M3gyIHgsIGZs
b2F0M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNtb290aHN0ZXAoZmxvYXQ0eDIgeCwg
ZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNtb290aHN0ZXAoZmxvYXQy
eDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc21vb3Roc3RlcChmbG9h
dDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0s
IHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsy
XSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFd
WzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlb
Ml1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzbW9vdGhz
dGVwKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVsw
XSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNd
WzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlb
MF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwg
eVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFd
LCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11b
MV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFsw
XVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVw
KHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNtb290aHN0
ZXAoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IHNtb290aHN0ZXAoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsx
XVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVw
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0
ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Ro
c3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9v
dGhzdGVwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNt
b290aHN0ZXAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IHNtb290aHN0ZXAoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQg
eikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVw
KHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0
ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Ro
c3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9v
dGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNt
b290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
c21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gc21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBzbW9vdGhzdGVwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IHNtb290aHN0ZXAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gc21vb3Roc3RlcCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc21vb3Roc3RlcChmbG9hdDR4NCB4LCBmbG9hdDR4
NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IHNtb290aHN0ZXAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gc21vb3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzbW9vdGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpb
M11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNtb290aHN0ZXAoeFswXVszXSwgeVswXVszXSwg
elswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5WzFdWzNd
LCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzbW9vdGhzdGVwKHhbMl1bM10sIHlbMl1b
M10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHNtb290aHN0ZXAoeFszXVszXSwgeVsz
XVszXSwgelszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIGV4cCAqLwotbmF0aXZlIGZsb2F0IGV4cChmbG9hdCk7Ci1mbG9hdDIgZXhwKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZXhwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZXhw
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cCh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGV4cChmbG9hdDQgeCkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGV4cCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
ZXhwKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBleHAoZmxvYXQyeDIg
eCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGV4cChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBleHAoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhw
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBleHAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBleHAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgZXhwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBleHAoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGV4cChmbG9h
dDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBleHAoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhw
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBleHAoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBl
eHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4
cCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZXhwKGZsb2F0NHg0
IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGV4cCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBleHAoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZXhwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBleHAoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZXhwKHhbM11bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbGwgKi8KLWJv
b2wgYWxsKGJvb2wgeCkgewotICAgIHJldHVybiB4OwotfQotYm9vbCBhbGwoYm9vbDIgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0pOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYWxsKGJvb2wzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KGJvb2w0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsK
LX0KLWJvb2wgYWxsKHVpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsx
XSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludDMgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwodWludDQg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGludCB4KSB7Ci0gICAgcmV0
dXJuIHggIT0gMDsKLX0KLWJvb2wgYWxsKGludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQz
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wg
YWxsKGludDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0IHgp
IHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbGwoZmxvYXQyIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbGwoZmxvYXQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbGwoZmxvYXQyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYWxsKGZsb2F0M3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHgyIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQyeDMgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoZmxvYXQzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsyXSAhPSAw
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQ0eDMgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
Ml1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbGwoZmxvYXQyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsx
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFsbChmbG9hdDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJd
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzJdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4
NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzNdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVszXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29s
M3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1b
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDIgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChib29sM3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
Ml1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2w0eDMgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsy
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDJ4
NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sM3g0IHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1b
Ml07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJv
b2w0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsx
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsyXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFszXVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGxvdyAqLwot
dWludCBmaXJzdGJpdGxvdyh1aW50IHgpIHsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMCkpICE9
IDApCi0gICAgICAgIHJldHVybiAzMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMSkpICE9IDAp
Ci0gICAgICAgIHJldHVybiAzMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMikpICE9IDApCi0g
ICAgICAgIHJldHVybiAyOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMykpICE9IDApCi0gICAg
ICAgIHJldHVybiAyODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNCkpICE9IDApCi0gICAgICAg
IHJldHVybiAyNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNSkpICE9IDApCi0gICAgICAgIHJl
dHVybiAyNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNikpICE9IDApCi0gICAgICAgIHJldHVy
biAyNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNykpICE9IDApCi0gICAgICAgIHJldHVybiAy
NDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgOCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMzsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMjsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMTApKSAhPSAwKQotICAgICAgICByZXR1cm4gMjE7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDExKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIwOwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAxMikpICE9IDApCi0gICAgICAgIHJldHVybiAxOTsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMTMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTg7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDE0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE3OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxNSkpICE9IDApCi0gICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMTYpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTU7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDE3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE0OwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAxOCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMTkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDIwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDExOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAy
MSkpICE9IDApCi0gICAgICAgIHJldHVybiAxMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjIp
KSAhPSAwKQotICAgICAgICByZXR1cm4gOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjMpKSAh
PSAwKQotICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjQpKSAhPSAw
KQotICAgICAgICByZXR1cm4gNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjUpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjYpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjcpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjgpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjkpKSAhPSAwKQotICAgICAgICByZXR1
cm4gMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMzApKSAhPSAwKQotICAgICAgICByZXR1cm4g
MTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMzEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gMzI7Ci19Ci11aW50IGZpcnN0Yml0bG93KGludCB4KSB7Ci0gICAgcmV0dXJu
IGZpcnN0Yml0bG93KHVpbnQoeCkpOwotfQotdWludDIgZmlyc3RiaXRsb3codWludDIgeCkgewot
ICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDMgZmlyc3RiaXRsb3codWludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludDQgZmlyc3RiaXRsb3codWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJz
dGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBmaXJzdGJpdGxvdyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWlu
dDIgZmlyc3RiaXRsb3coaW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGZpcnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGxvdyhpbnQzIHgpIHsKLSAg
ICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRs
b3coeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KGludDQg
eCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBm
aXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJpdGxvdyh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I8PSAqLwot
bmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9
KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8PShmbG9hdCwgZmxvYXQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPD0odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRv
cjw9KHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8PSh1aW50NCwgdWludDQp
OwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPD0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3Bl
cmF0b3I8PShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9KGludDQsIGludDQp
OwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPD0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wz
IG9wZXJhdG9yPD0oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0oZmxv
YXQ0LCBmbG9hdDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I8PShmbG9hdDJ4MiwgZmxvYXQy
eDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I8PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0
aXZlIGJvb2w0eDIgb3BlcmF0b3I8PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wy
eDMgb3BlcmF0b3I8PShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0
b3I8PShmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I8PShmbG9h
dDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I8PShmbG9hdDJ4NCwgZmxv
YXQyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I8PShmbG9hdDN4NCwgZmxvYXQzeDQpOwot
bmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I8PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgZGR4X2ZpbmUgKi8KLWZsb2F0IGRkeF9maW5lKGZsb2F0IHgpIHsKLSAgICBy
ZXR1cm4gZGR4KHgpOwotfQotZmxvYXQyIGRkeF9maW5lKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeF9maW5l
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmlu
ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBkZHhfZmluZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeF9maW5l
KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfZmlu
ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBkZHhfZmluZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHhfZmluZSh4WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR4X2ZpbmUoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4X2ZpbmUoZmxvYXQzeDIgeCkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgZGR4X2ZpbmUoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmlu
ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBkZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhf
ZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBk
ZHhfZmluZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR4X2Zp
bmUoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgZGR4X2ZpbmUoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmlu
ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhf
ZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBk
ZHhfZmluZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR4X2Zp
bmUoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBkZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmlu
ZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR4X2ZpbmUoZmxvYXQyeDQgeCkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgZGR4X2ZpbmUoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHhfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfZmlu
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhf
ZmluZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBkZHhfZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBk
ZHhfZmluZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4X2Zp
bmUoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHhfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfZmluZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBkZHhfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfZmluZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHhfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfZmluZSh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHhfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfZmlu
ZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHhfZmluZSh4WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBkZHhfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhf
ZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHhfZmluZSh4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSBkZHhfZmluZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IgY2FzdCAqLwotbmF0aXZlIG9wZXJhdG9y
IHVpbnQoaW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRv
ciBpbnQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRv
ciBmbG9hdCh1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpOwotbmF0aXZlIG9wZXJh
dG9yIGludChib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sKHVpbnQpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2woaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sKGZsb2F0KTsKLW5hdGl2ZSBvcGVy
YXRvciBib29sMihib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sLCBib29s
LCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDMoYm9vbCwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBib29sLCBib29s
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMiwgYm9vbCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDQoYm9vbCwgYm9vbCwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJv
b2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbDMsIGJvb2wpOwotbmF0aXZl
IG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Mih1aW50
LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50LCB1aW50LCB1aW50KTsKLW5hdGl2
ZSBvcGVyYXRvciB1aW50Myh1aW50MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWlu
dCwgdWludDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQsIHVpbnQsIHVpbnQp
OwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVy
YXRvciB1aW50NCh1aW50LCB1aW50MiwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWlu
dCwgdWludCwgdWludDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50Mik7Ci1u
YXRpdmUgb3BlcmF0b3IgdWludDQodWludDMsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0
KHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQyKGludCwgaW50KTsKLW5hdGl2ZSBv
cGVyYXRvciBpbnQzKGludCwgaW50LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDMoaW50Miwg
aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQzKGludCwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0b3Ig
aW50NChpbnQsIGludCwgaW50LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MiwgaW50
LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQyLCBpbnQpOwotbmF0aXZlIG9w
ZXJhdG9yIGludDQoaW50LCBpbnQsIGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50Miwg
aW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQzLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9y
IGludDQoaW50LCBpbnQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDIoZmxvYXQsIGZsb2F0KTsK
LW5hdGl2ZSBvcGVyYXRvciBmbG9hdDMoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQzKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9h
dCwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDIsIGZsb2F0LCBmbG9hdCk7Ci1u
YXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
NChmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MywgZmxvYXQp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRv
ciBmbG9hdDJ4MihmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDMoZmxv
YXQzLCBmbG9hdDMpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0NCwgZmxvYXQ0KTsK
LW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDN4MyhmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDN4NChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVyYXRvciBm
bG9hdDR4MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9y
IGZsb2F0NHgzKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgb3BlcmF0
b3IgZmxvYXQ0eDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDJ4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0
b3IgZmxvYXQyeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1u
YXRpdmUgb3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDN4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDN4NChmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
NHgzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHg0
KGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsK
LW5hdGl2ZSBvcGVyYXRvciBib29sMngyKGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDJ4Myhib29sMywgYm9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDQoYm9vbDQsIGJv
b2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gyKGJvb2wyLCBib29sMiwgYm9vbDIpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2wzeDMoYm9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0
b3IgYm9vbDN4NChib29sNCwgYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgy
KGJvb2wyLCBib29sMiwgYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJv
b2wzLCBib29sMywgYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHg0KGJvb2w0
LCBib29sNCwgYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngyKGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDMoYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4NChib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sM3gyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2wzeDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4NChib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sNHgyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRp
dmUgb3BlcmF0b3IgYm9vbDR4NChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGxvYWQgKi8KLW5hdGl2ZSBpbnQgbG9hZChkZXZpY2Ug
YXRvbWljX2ludCopOwotbmF0aXZlIHVpbnQgbG9hZChkZXZpY2UgYXRvbWljX3VpbnQqKTsKLW5h
dGl2ZSBpbnQgbG9hZCh0aHJlYWRncm91cCBhdG9taWNfaW50Kik7Ci1uYXRpdmUgdWludCBsb2Fk
KHRocmVhZGdyb3VwIGF0b21pY191aW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3VudF9i
aXRzICovCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByc3FydCAqLwotZmxvYXQgcnNxcnQoZmxvYXQg
eCkgewotICAgIHJldHVybiAxIC8gc3FydCh4KTsKLX0KLWZsb2F0MiByc3FydChmbG9hdDIgeCkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBy
c3FydChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNx
cnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
cnNxcnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByc3FydChmbG9hdDQg
eCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcnNxcnQoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gcnNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcnNxcnQoeFsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gcnNxcnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngyIHJzcXJ0KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJz
cXJ0KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNx
cnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIHJzcXJ0KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNx
cnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJzcXJ0KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJzcXJ0KGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcnNxcnQo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNx
cnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcnNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcnNx
cnQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHJzcXJ0KGZsb2F0
M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcnNx
cnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gcnNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcnNxcnQoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJzcXJ0KGZsb2F0NHg0IHgp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcnNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcnNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gcnNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcnNxcnQoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gcnNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcnNx
cnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcnNxcnQoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gcnNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcnNxcnQoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcnNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gcnNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcnNxcnQoeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gcnNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
cnNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcnNxcnQoeFsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gcnNxcnQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIHNxcnQgKi8KLWZsb2F0IHNxcnQoZmxvYXQgeCkgewotICAgIHJl
dHVybiBwb3coeCwgMC41KTsKLX0KLWZsb2F0MiBzcXJ0KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNx
cnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzcXJ0KGZsb2F0MyB4KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNxcnQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc3FydCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzcXJ0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNxcnQo
eFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNxcnQoZmxvYXQyeDIgeCkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzcXJ0KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
cXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNxcnQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNx
cnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNxcnQoZmxvYXQyeDMgeCkgewot
ICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3Fy
dCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc3FydChmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzcXJ0KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBz
cXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0KHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IHNxcnQoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IHNxcnQoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IHNxcnQoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gc3FydCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
c3FydChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gc3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBz
cXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gc3FydCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzcXJ0KHhbMl1bM10pOwotICAg
IHJlc3VsdFszXVszXSA9IHNxcnQoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIGFjb3MgKi8KLW5hdGl2ZSBmbG9hdCBhY29zKGZsb2F0KTsKLWZs
b2F0MiBhY29zKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MyBhY29zKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gYWNvcyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGFjb3MoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFj
b3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
Y29zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFjb3MoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGFjb3MoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFj
b3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBhY29zKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNv
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IGFjb3MoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29z
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIGFjb3MoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3Mo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgYWNvcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFj
b3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MyBhY29zKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWNv
cyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFjb3MoeFsz
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFjb3MoZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGFjb3MoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGFjb3Mo
ZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
Y29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4
WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGFjb3MoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYWNvcyhmbG9hdDR4NCB4KSB7Ci0gICAg
ZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNv
cyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBhY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGFjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBhY29zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGFjb3MoeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJh
dG9yPiAqLwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9w
ZXJhdG9yPih1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9hdCwgZmxvYXQp
OwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPih1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9w
ZXJhdG9yPih1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPih1aW50NCwgdWlu
dDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPihpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBv
cGVyYXRvcj4oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KGludDQsIGludDQp
OwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPihmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMg
b3BlcmF0b3I+KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4oZmxvYXQ0
LCBmbG9hdDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I+KGZsb2F0MngyLCBmbG9hdDJ4Mik7
Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj4oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBi
b29sNHgyIG9wZXJhdG9yPihmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3Bl
cmF0b3I+KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj4oZmxv
YXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPihmbG9hdDR4MywgZmxv
YXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I+KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1u
YXRpdmUgYm9vbDN4NCBvcGVyYXRvcj4oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29s
NHg0IG9wZXJhdG9yPihmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
b3BlcmF0b3ImICovCi1ib29sIG9wZXJhdG9yJihib29sIGEsIGJvb2wgYikgewotICAgIHJldHVy
biBhICYmIGI7Ci19Ci1uYXRpdmUgaW50IG9wZXJhdG9yJihpbnQsIGludCk7Ci1uYXRpdmUgdWlu
dCBvcGVyYXRvciYodWludCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0YW5oICovCi1u
YXRpdmUgZmxvYXQgdGFuaChmbG9hdCk7Ci1mbG9hdDIgdGFuaChmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSB0YW5oKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgdGFuaChmbG9hdDMg
eCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSB0YW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCB0YW5oKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRh
bmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0
YW5oKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiB0YW5oKGZsb2F0Mngy
IHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgdGFuaChmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0YW5oKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0YW5oKGZsb2F0MngzIHgp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRhbmgoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
dGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdGFuaChmbG9hdDR4MyB4KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuaCh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSB0YW5oKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCB0YW5oKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFu
aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0YW5oKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5o
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
dGFuaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHRhbmgoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IHRhbmgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0
YW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHRhbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuaCh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSB0YW5oKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvciogKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3Iq
KGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yKih1aW50LCB1aW50KTsKLW5hdGl2ZSBm
bG9hdCBvcGVyYXRvciooZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWlu
dDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludDIsIHVpbnQpOwotbmF0aXZl
IHVpbnQyIG9wZXJhdG9yKih1aW50LCB1aW50Mik7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVp
bnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQzLCB1aW50KTsKLW5hdGl2
ZSB1aW50MyBvcGVyYXRvcioodWludCwgdWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1
aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50NCwgdWludCk7Ci1uYXRp
dmUgdWludDQgb3BlcmF0b3IqKHVpbnQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihp
bnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQyLCBpbnQpOwotbmF0aXZlIGlu
dDIgb3BlcmF0b3IqKGludCwgaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvciooaW50MywgaW50
Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvciooaW50MywgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJh
dG9yKihpbnQsIGludDMpOwotbmF0aXZlIGludDQgb3BlcmF0b3IqKGludDQsIGludDQpOwotbmF0
aXZlIGludDQgb3BlcmF0b3IqKGludDQsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvciooaW50
LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IqKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2
ZSBmbG9hdDIgb3BlcmF0b3IqKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRv
ciooZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdDMsIGZsb2F0
Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9h
dDMgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxv
YXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQ0LCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQ0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBv
cGVyYXRvciooZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcioo
ZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0
MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvciooZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5h
dGl2ZSBmbG9hdDN4MiBvcGVyYXRvciooZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4
MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvcioo
ZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQ0eDIs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciooZmxvYXQsIGZsb2F0NHgyKTsKLW5h
dGl2ZSBmbG9hdDJ4MyBvcGVyYXRvciooZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9h
dDJ4MyBvcGVyYXRvciooZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRv
ciooZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQzeDMsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9h
dDR4MyBvcGVyYXRvciooZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVy
YXRvciooZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciooZmxvYXQs
IGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciooZmxvYXQyeDQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvciooZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDJ4NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVy
YXRvciooZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxv
YXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0M3g0
KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvciooZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2
ZSBmbG9hdDR4NCBvcGVyYXRvciooZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBv
cGVyYXRvciooZmxvYXQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvcyAqLwot
bmF0aXZlIGZsb2F0IGNvcyhmbG9hdCk7Ci1mbG9hdDIgY29zKGZsb2F0MiB4KSB7Ci0gICAgZmxv
YXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Y29zKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgY29zKGZsb2F0MyB4KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gY29zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNvcyh4WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNvcyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBjb3MoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29zKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBjb3MoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIGNvcyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBjb3MoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3Mo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gY29zKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MyBjb3MoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBj
b3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMg
Y29zKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGNvcyhmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3MoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gY29zKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBjb3MoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3Mo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gY29zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCBjb3MoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBj
b3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNv
cyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvcyh4WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgY29zKGZsb2F0NHg0IHgpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Y29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBjb3MoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBj
b3MoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gY29zKHhbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcj09ICovCi1uYXRpdmUg
Ym9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQs
IGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wg
b3BlcmF0b3I9PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0oYm9vbDIs
IGJvb2wyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGJvb2wzLCBib29sMyk7Ci1uYXRpdmUg
Ym9vbDQgb3BlcmF0b3I9PShib29sNCwgYm9vbDQpOwotbmF0aXZlIGJvb2wyIG9wZXJhdG9yPT0o
dWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KHVpbnQzLCB1aW50Myk7Ci1u
YXRpdmUgYm9vbDQgb3BlcmF0b3I9PSh1aW50NCwgdWludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPT0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShpbnQzLCBpbnQzKTsK
LW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KGludDQsIGludDQpOwotbmF0aXZlIGJvb2wyIG9wZXJh
dG9yPT0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZl
IGJvb2wyeDIgb3BlcmF0b3I9PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIg
b3BlcmF0b3I9PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9
PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I9PShmbG9hdDJ4
MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I9PShmbG9hdDN4MywgZmxvYXQz
eDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I9PShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0
aXZlIGJvb2wyeDQgb3BlcmF0b3I9PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wz
eDQgb3BlcmF0b3I9PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0
b3I9PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I9PShib29s
MngyLCBib29sMngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPT0oYm9vbDN4MiwgYm9vbDN4
Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj09KGJvb2w0eDIsIGJvb2w0eDIpOwotbmF0aXZl
IGJvb2wyeDMgb3BlcmF0b3I9PShib29sMngzLCBib29sMngzKTsKLW5hdGl2ZSBib29sM3gzIG9w
ZXJhdG9yPT0oYm9vbDN4MywgYm9vbDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj09KGJv
b2w0eDMsIGJvb2w0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I9PShib29sMng0LCBib29s
Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPT0oYm9vbDN4NCwgYm9vbDN4NCk7Ci1uYXRp
dmUgYm9vbDR4NCBvcGVyYXRvcj09KGJvb2w0eDQsIGJvb2w0eDQpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgb3BlcmF0b3I+PiAqLwotbmF0aXZlIGludCBvcGVyYXRvcj4+KGludCwgdWludCk7Ci1u
YXRpdmUgdWludCBvcGVyYXRvcj4+KHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
cmVmbGVjdCAqLwotZmxvYXQgcmVmbGVjdChmbG9hdCBpLCBmbG9hdCBuKSB7Ci0gICAgcmV0dXJu
IGkgLSAyICogbiAqIGRvdChpLCBuKTsKLX0KLWZsb2F0MiByZWZsZWN0KGZsb2F0MiBpLCBmbG9h
dDIgbikgewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDMgcmVm
bGVjdChmbG9hdDMgaSwgZmxvYXQzIG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGks
IG4pOwotfQotZmxvYXQ0IHJlZmxlY3QoZmxvYXQ0IGksIGZsb2F0NCBuKSB7Ci0gICAgcmV0dXJu
IGkgLSAyICogbiAqIGRvdChpLCBuKTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGl0ICov
Ci1mbG9hdDQgbGl0KGZsb2F0IG5fZG90X2wsIGZsb2F0IG5fZG90X2gsIGZsb2F0IG0pIHsKLSAg
ICBmbG9hdCBhbWJpZW50ID0gMTsKLSAgICBmbG9hdCBkaWZmdXNlID0gbWF4KDAsIG5fZG90X2wp
OwotICAgIGZsb2F0IHNwZWN1bGFyID0gbl9kb3RfbCA8IDAgfHwgbl9kb3RfaCA8IDAgPyAwIDog
bl9kb3RfaCAqIG07Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IGFtYmllbnQ7
Ci0gICAgcmVzdWx0LnkgPSBkaWZmdXNlOwotICAgIHJlc3VsdC56ID0gc3BlY3VsYXI7Ci0gICAg
cmVzdWx0LncgPSAxOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBsb2cyICovCi1mbG9hdCBsb2cyKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9n
KGZsb2F0KDIpKTsKLX0KLWZsb2F0MiBsb2cyKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzIoeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2cyKGZsb2F0MyB4KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGxvZzIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGxvZzIoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGxvZzIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBsb2cyKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzIoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZzIoZmxvYXQyeDIgeCkgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBsb2cyKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGxvZzIoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBsb2cyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxvZzIoZmxvYXQyeDMgeCkgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbG9nMihmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsb2cyKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9n
Mih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGxvZzIoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IGxvZzIoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cy
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IGxvZzIoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBs
b2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gbG9nMih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMihm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxv
ZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gbG9nMih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbG9nMih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGxvZzIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9n
Mih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cyKHhbMl1bM10pOwotICAgIHJlc3Vs
dFszXVszXSA9IGxvZzIoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIG5vcm1hbGl6ZSAqLwotZmxvYXQgbm9ybWFsaXplKGZsb2F0IHgpIHsKLSAg
ICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0MiBub3JtYWxpemUoZmxvYXQyIHgpIHsK
LSAgICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0MyBub3JtYWxpemUoZmxvYXQzIHgp
IHsKLSAgICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLWZsb2F0NCBub3JtYWxpemUoZmxvYXQ0
IHgpIHsKLSAgICByZXR1cm4geCAvIGxlbmd0aCh4KTsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgbGRleHAgKi8KLWZsb2F0IGxkZXhwKGZsb2F0IHgsIGZsb2F0IGUpIHsKLSAgICByZXR1cm4g
eCAqIHBvdygyLCBlKTsKLX0KLWZsb2F0MiBsZGV4cChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgbGRleHAoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4
WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZGV4cCh4WzJdLCB5WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxkZXhwKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbGRleHAoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwg
eVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbGRleHAoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIGxkZXhwKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBm
bG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IGxkZXhwKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIGxkZXhwKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRl
eHAoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwg
eVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gbGRleHAoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngzIGxkZXhwKGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxkZXhwKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsx
XVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
bGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IGxkZXhwKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFsz
XVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bGRleHAoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IGxkZXhwKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGRleHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gbGRleHAoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsx
XVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxkZXhwKGZs
b2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRl
eHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbGRleHAoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAo
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbGRleHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGRleHAoeFsy
XVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxkZXhwKGZs
b2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbGRleHAoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGRl
eHAoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGRleHAoeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGRleHAoeFszXVswXSwgeVszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbGRleHAoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbGRleHAoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGRleHAo
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGRleHAoeFszXVsxXSwgeVsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGRleHAoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbGRleHAoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbGRleHAoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGRleHAoeFsz
XVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGRleHAoeFswXVszXSwgeVswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGRleHAoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbGRleHAoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0g
bGRleHAoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGFicyAqLwotdWludCBhYnModWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19
Ci1pbnQgYWJzKGludCB4KSB7Ci0gICAgaWYgKHggPCAwKQotICAgICAgICByZXR1cm4gLXg7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1mbG9hdCBhYnMoZmxvYXQgeCkgewotICAgIGlmICh4IDwgMCkKLSAg
ICAgICAgcmV0dXJuIC14OwotICAgIHJldHVybiB4OwotfQotdWludDIgYWJzKHVpbnQyIHgpIHsK
LSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgYWJzKHVpbnQz
IHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGFicyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MiBhYnMoaW50MiB4KSB7Ci0gICAgaW50MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBhYnMoaW50MyB4KSB7Ci0gICAgaW50MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWludDQgYWJzKGludDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFi
cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJz
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyIGFicyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzIGFicyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBh
YnMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGFicyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgYWJzKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
YWJzKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhYnMoZmxvYXQz
eDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYWJzKGZsb2F0NHgyIHgpIHsK
LSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4
WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgYWJzKGZsb2F0MngzIHgp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
YnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGFicyhmbG9hdDN4MyB4KSB7Ci0gICAg
ZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyBhYnMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFicyh4WzNd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYWJzKGZsb2F0Mng0IHgpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4
WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYWJzKGZsb2F0M3g0IHgp
IHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
YnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFi
cyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBhYnMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IGFicyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGFicyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBhYnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
YWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWJzKHhbM11bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBh
YnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJlc3Vs
dFszXVszXSA9IGFicyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCByb3VuZCAqLwotbmF0aXZlIGZsb2F0IHJvdW5kKGZsb2F0KTsKLWZsb2F0
MiByb3VuZChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
cm91bmQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MyByb3VuZChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gcm91bmQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gcm91bmQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCByb3VuZChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gcm91bmQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcm91bmQoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gcm91bmQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcm91bmQoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHJvdW5kKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIHJvdW5kKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
cm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJvdW5kKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQo
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJvdW5kKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
cm91bmQoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJvdW5kKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91
bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
cm91bmQoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHJvdW5kKGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91
bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcm91bmQoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcm91bmQo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJvdW5kKGZsb2F0Mng0
IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcm91bmQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
cm91bmQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IHJvdW5kKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gcm91bmQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IHJvdW5kKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcm91bmQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcm91bmQoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcm91bmQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
cm91bmQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcm91bmQoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcm91bmQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcm91bmQo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcm91bmQoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gcm91bmQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcm91bmQoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcm91bmQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gcm91bmQoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcm91bmQoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gcm91bmQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcm91
bmQoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcm91bmQoeFszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG11bCAqLwotdWludCBtdWwodWlu
dCB4LCB1aW50IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci1pbnQgbXVsKGludCB4LCBpbnQg
eSkgewotICAgIHJldHVybiB4ICogeTsKLX0KLWZsb2F0IG11bChmbG9hdCB4LCBmbG9hdCB5KSB7
Ci0gICAgcmV0dXJuIHggKiB5OwotfQotdWludDIgbXVsKHVpbnQgeCwgdWludDIgeSkgewotICAg
IHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0g
PSB4ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgbXVsKHVpbnQyIHgsIHVp
bnQgeSkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAg
ICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbXVs
KHVpbnQgeCwgdWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4
ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICog
eVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgbXVsKHVpbnQzIHgsIHVpbnQgeSkg
ewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1
bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotdWludDQgbXVsKHVpbnQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsK
LSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXN1bHRbM10gPSB4ICogeVszXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgbXVsKHVpbnQ0IHgsIHVpbnQgeSkgewotICAgIHVp
bnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4
WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNd
ICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MiBtdWwoaW50IHgsIGludDIgeSkgewot
ICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsx
XSA9IHggKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQyIG11bChpbnQyIHgsIGlu
dCB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAg
cmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGlu
dCB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVsw
XTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBtdWwoaW50MyB4LCBpbnQgeSkgewotICAgIGlu
dDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhb
MV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1pbnQ0IG11bChpbnQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJd
ID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0geCAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWludDQgbXVsKGludDQgeCwgaW50IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1
bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1bHRbM10gPSB4WzNdICogeTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdCB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlb
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0IHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJl
c3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZs
b2F0IHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4
ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICog
eVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDMgeCwgZmxvYXQg
eSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAg
cmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHgg
KiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdCB5
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICBy
ZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXN1
bHRbM10gPSB4WzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZs
b2F0IHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1b
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11bChmbG9hdDJ4MiB4LCBmbG9h
dCB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0g
KiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9
IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQgeCwgZmxvYXQzeDIgeSkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAg
cmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAq
IHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIG11bChmbG9hdCB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9
IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFszXVswXSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5
WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1b
MF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICBy
ZXN1bHRbM11bMF0gPSB4WzNdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICog
eTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
WzJdWzFdICogeTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzNdWzFdICogeTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngzIG11bChmbG9hdDJ4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVsw
XSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJl
c3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5
OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MyBtdWwoZmxvYXQgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRb
MF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0g
PSB4ICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0
M3gzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVz
dWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7
Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsy
XVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdCB4LCBmbG9hdDR4MyB5KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJd
WzBdOwotICAgIHJlc3VsdFszXVswXSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9
IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwot
ICAgIHJlc3VsdFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsy
XSA9IHggKiB5WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxv
YXQ0eDMgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICog
eTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4
WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRb
M11bMV0gPSB4WzNdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJd
ICogeTsKLSAgICByZXN1bHRbM11bMl0gPSB4WzNdWzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdDJ4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsx
XVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAg
IHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0g
KiB5OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFswXVszXSA9
IHhbMF1bM10gKiB5OwotICAgIHJlc3VsdFsxXVszXSA9IHhbMV1bM10gKiB5OwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZs
b2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVsz
XTsKLSAgICByZXN1bHRbMV1bM10gPSB4ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4
ICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0M3g0
IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
eFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0
WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsx
XSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmVz
dWx0WzBdWzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7
Ci0gICAgcmVzdWx0WzJdWzNdID0geFsyXVszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IG11bChmbG9hdCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHgg
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFsz
XVswXSA9IHggKiB5WzNdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJd
WzFdOwotICAgIHJlc3VsdFszXVsxXSA9IHggKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9
IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHggKiB5WzNdWzJdOwot
ICAgIHJlc3VsdFswXVszXSA9IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5
WzFdWzNdOwotICAgIHJlc3VsdFsyXVszXSA9IHggKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsz
XSA9IHggKiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxv
YXQ0eDQgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzNdWzBdICog
eTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4
WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRb
M11bMV0gPSB4WzNdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJd
ICogeTsKLSAgICByZXN1bHRbM11bMl0gPSB4WzNdWzJdICogeTsKLSAgICByZXN1bHRbMF1bM10g
PSB4WzBdWzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAgICByZXN1
bHRbMl1bM10gPSB4WzJdWzNdICogeTsKLSAgICByZXN1bHRbM11bM10gPSB4WzNdWzNdICogeTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludCBtdWwodWludDIgeCwgdWludDIgeSkgewotICAg
IHJldHVybiBkb3QoeCwgeSk7Ci19Ci11aW50IG11bCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAg
cmV0dXJuIGRvdCh4LCB5KTsKLX0KLXVpbnQgbXVsKHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICBy
ZXR1cm4gZG90KHgsIHkpOwotfQotaW50IG11bChpbnQyIHgsIGludDIgeSkgewotICAgIHJldHVy
biBkb3QoeCwgeSk7Ci19Ci1pbnQgbXVsKGludDMgeCwgaW50MyB5KSB7Ci0gICAgcmV0dXJuIGRv
dCh4LCB5KTsKLX0KLWludCBtdWwoaW50NCB4LCBpbnQ0IHkpIHsKLSAgICByZXR1cm4gZG90KHgs
IHkpOwotfQotZmxvYXQgbXVsKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVybiBkb3Qo
eCwgeSk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgcmV0dXJuIGRv
dCh4LCB5KTsKLX0KLWZsb2F0IG11bChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICByZXR1cm4g
ZG90KHgsIHkpOwotfQotZmxvYXQyIG11bChmbG9hdDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzFdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9h
dDJ4MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
MDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhb
MV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1b
MV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0g
KiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0g
Kz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0g
eFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJl
c3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IG11bChmbG9hdDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1
bHRbM10gKz0geFswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0NCB5
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFsw
XSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBd
ICogeVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICog
eVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9
IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDMgeCwgZmxvYXQyeDMgeSkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFsw
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsx
XSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1
bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFd
OwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwot
ICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzIG11bChmbG9hdDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhb
Ml0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
Ml0gKz0geFsyXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwo
ZmxvYXQzeDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSAr
PSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAg
cmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsy
XTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsK
LSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1b
Ml0gKiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0MyB4LCBm
bG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAg
IHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsK
LSAgICByZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM10gKz0geFsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl0gKiB5
WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0NHgzIHgsIGZs
b2F0NCB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJl
c3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlb
MV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4
WzNdWzBdICogeVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBd
WzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0
WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsK
LSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAg
ICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0g
KiB5WzJdOwotICAgIHJlc3VsdFsyXSArPSB4WzNdWzJdICogeVszXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyIG11bChmbG9hdDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4
WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAg
IHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJl
c3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlb
MV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07
Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdICs9IHhbMF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNd
ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDQgeCwgZmxv
YXQzeDQgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICBy
ZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0g
eFszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFsw
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107
Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5
WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0g
eFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFsw
XVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3Vs
dFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsy
XSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAg
cmVzdWx0WzNdICs9IHhbMF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICog
eVsxXTsKLSAgICByZXN1bHRbM10gKz0geFsyXVszXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQ0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsy
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3Vs
dFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdICs9IHhbM10gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAg
cmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9
IHhbM10gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhb
MF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdICogeVszXVsxXTsKLSAgICByZXN1
bHRbM10gKz0geFsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdICs9IHhbM10gKiB5WzNdWzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NCB5
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFsw
XSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdWzBd
ICogeVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICog
eVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9
IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdWzFdICogeVszXTsKLSAgICBy
ZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1
bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl1bMl0gKiB5WzJd
OwotICAgIHJlc3VsdFsyXSArPSB4WzNdWzJdICogeVszXTsKLSAgICByZXN1bHRbM10gPSAwOwot
ICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXVsz
XSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl1bM10gKiB5WzJdOwotICAgIHJlc3VsdFsz
XSArPSB4WzNdWzNdICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVs
KGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsx
XVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQyeDIgeCwgZmxv
YXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
bXVsKGZsb2F0MngyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11b
MF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1b
MV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJd
WzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVs
KGZsb2F0M3gyIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0M3gzIHkpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAg
cmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsx
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IG11bChmbG9hdDN4MiB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1b
MF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFd
WzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0g
ICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsx
XVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICBy
ZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhb
MV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0Mng0
IHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlb
MF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsx
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChm
bG9hdDR4MiB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNd
OwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11b
MF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFd
WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJl
c3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJd
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQ0eDIgeCwgZmxv
YXQ0eDQgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
Ml1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsK
LSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBd
ICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4
WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07
Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsw
XSArPSB4WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsx
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1
bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVsz
XTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNd
WzFdICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0
MngzIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBd
ID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsx
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwo
ZmxvYXQyeDMgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFd
WzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSAr
PSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0g
PSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICBy
ZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhb
MV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3Vs
dFszXVsyXSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgbXVsKGZsb2F0M3gzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1b
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdDN4MyB4LCBmbG9h
dDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsy
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAw
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5
WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQzeDMgeCwg
ZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAw
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1b
MF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0g
MDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBd
WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0g
PSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhb
MF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsK
LSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzJd
ID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4
WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsy
XSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0g
eFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFd
OwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1b
MF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0g
MDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1b
M107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsz
XVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIG11bChmbG9hdDR4MyB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0g
KiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAg
cmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3Vs
dFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNd
OwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11b
MV0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFd
WzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQ0eDQgeSkgewot
ICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRb
Ml1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
Ml1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsK
LSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0
WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzNdWzBd
ICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsx
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAw
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5
WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1
bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9
IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzNdWzFdICogeVszXVsz
XTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNd
WzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJl
c3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsx
XVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMl0g
PSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1bMl0g
KiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzNdWzJdICogeVszXVszXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MngyIHkpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsy
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0g
eFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0M3gyIHkpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1b
MF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1b
MF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBd
WzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsw
XVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsK
LSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNd
ICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4
WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDR4
MiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVsw
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBd
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBd
WzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwot
ICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0g
Kz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRb
M11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0g
KiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhb
MF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVszXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsz
XSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
bXVsKGZsb2F0M3g0IHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsw
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1b
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFd
WzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJl
c3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsx
XVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQzeDMg
eSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsy
XTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSAr
PSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsK
LSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVsz
XVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsx
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAw
OwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11b
MV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5
WzNdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0g
MDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBd
WzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFsz
XVsyXSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAq
IHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFsw
XVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bM10g
PSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhb
MF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzNd
ID0gMDsKLSAgICByZXN1bHRbM11bM10gKz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0
WzNdWzNdICs9IHhbMV1bM10gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzJdWzNd
ICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0NHg0
IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJd
WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFsw
XVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10g
Kz0geFszXVszXSAqIHlbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11
bChmbG9hdDR4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBd
WzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
M11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsx
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5
WzJdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSAr
PSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFsw
XVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsy
XVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbM11bM10gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbM11bM10g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhb
MF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzNd
ICs9IHhbM11bM10gKiB5WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBt
dWwoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJd
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzNdWzBdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICog
eVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBd
WzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFsz
XVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAq
IHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJl
c3VsdFszXVsxXSArPSB4WzNdWzFdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
Ml1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsK
LSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJd
ICogeVsyXVszXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4
WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07
Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVsy
XSArPSB4WzNdWzJdICogeVszXVszXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3Vs
dFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVsz
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFswXVszXSArPSB4WzNdWzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAw
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
M10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzNdWzNdICogeVsxXVszXTsKLSAgICByZXN1
bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9
IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzNdWzNdICogeVsyXVsz
XTsKLSAgICByZXN1bHRbM11bM10gPSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzNdWzNdICs9IHhbMl1bM10gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzNd
WzNdICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgcmFkaWFucyAqLwotZmxvYXQgcmFkaWFucyhmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggKiAz
LjE0MTU5IC8gMTgwOwotfQotZmxvYXQyIHJhZGlhbnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
cmFkaWFucyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJhZGlhbnMoZmxv
YXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJhZGlhbnMoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByYWRp
YW5zKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcmFkaWFucyhmbG9hdDQg
eCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFucyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSByYWRpYW5zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJhZGlhbnMo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcmFkaWFucyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgcmFkaWFucyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIHJhZGlhbnMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcmFkaWFucyhmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgcmFkaWFucyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByYWRpYW5zKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IHJhZGlhbnMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSByYWRpYW5zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmFkaWFucyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgcmFkaWFucyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgcmFkaWFucyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHJhZGlhbnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByYWRpYW5zKHhbMl1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByYWRpYW5zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSByYWRpYW5zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSByYWRpYW5zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJhZGlhbnMo
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gcmFkaWFucyh4WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY2VpbCAqLwotbmF0aXZlIGZsb2F0
IGNlaWwoZmxvYXQpOwotZmxvYXQyIGNlaWwoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY2VpbCh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNlaWwoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gY2VpbCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgY2VpbChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gY2VpbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWlsKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGNlaWwoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY2VpbCh4WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY2VpbChmbG9hdDJ4MiB4KSB7Ci0gICAg
ZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIGNlaWwoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgY2VpbChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Y2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGNlaWwoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgY2VpbChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBjZWlsKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgzIGNlaWwoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWls
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gY2VpbCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
Y2VpbChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgY2VpbChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNl
aWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBjZWlsKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjZWlsKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2Vp
bCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBjZWlsKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBjZWlsKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gY2VpbCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjZWls
KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNlaWwoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gY2VpbCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgYXNpbiAqLwotbmF0aXZlIGZsb2F0IGFzaW4oZmxvYXQpOwotZmxvYXQyIGFz
aW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW4o
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIGFzaW4oZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGFzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc2luKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXNpbihm
bG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW4oeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gYXNpbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgYXNpbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFzaW4o
ZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
c2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYXNpbihm
bG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFz
aW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gYXNpbih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgYXNpbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBhc2luKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGFzaW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGFzaW4o
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
c2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2luKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGFzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXNpbih4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYXNpbihmbG9hdDJ4NCB4KSB7Ci0gICAg
ZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNp
bih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXNpbihmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2lu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
YXNpbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhc2luKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gYXNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
c2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGFzaW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXNpbih4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGFzaW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXNpbih4WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXN1aW50ICovCi11
aW50IGFzdWludChpbnQgeCkgewotICAgIHJldHVybiB1aW50KHgpOwotfQotdWludDIgYXN1aW50
KGludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50MyBhc3VpbnQoaW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gYXN1aW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhc3Vp
bnQoaW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1
aW50KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludCBhc3VpbnQodWludCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50MiBh
c3VpbnQodWludDIgeCkgewotICAgIHJldHVybiB4OwotfQotdWludDMgYXN1aW50KHVpbnQzIHgp
IHsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQ0IGFzdWludCh1aW50NCB4KSB7Ci0gICAgcmV0dXJu
IHg7Ci19Ci1uYXRpdmUgdWludCBhc3VpbnQoZmxvYXQpOwotdWludDIgYXN1aW50KGZsb2F0MiB4
KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQz
IGFzdWludChmbG9hdDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFzdWludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgYXN1aW50KGZs
b2F0NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzdWludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcG93ICovCi1uYXRpdmUgZmxvYXQgcG93KGZsb2F0
LCBmbG9hdCk7Ci1mbG9hdDIgcG93KGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9
IHBvdyh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHBvdyhmbG9h
dDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBv
dyh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gcG93KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQg
cG93KGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gcG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBwb3coeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gcG93KHhb
M10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBwb3coZmxvYXQyeDIg
eCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIHBvdyhmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gcG93KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFd
LCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBwb3coZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0
NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVsw
XSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11b
MV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBwb3coZmxvYXQy
eDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFd
WzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcG93KGZsb2F0
M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFd
WzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsy
XVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBwb3coeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIHBvdyhmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3co
eFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBwb3coZmxvYXQyeDQgeCwgZmxv
YXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3co
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcG93
KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHBvdyh4WzFdWzJdLCB5WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gcG93KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4NCBwb3coZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBv
dyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBw
b3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
cG93KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHBvdyh4WzJdWzNdLCB5
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcG93KGZsb2F0NHg0IHgs
IGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gcG93KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IHBvdyh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBwb3coeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNd
LCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBwb3coeFsyXVszXSwgeVsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gcG93KHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0YW4gKi8KLW5hdGl2ZSBmbG9hdCB0YW4oZmxv
YXQpOwotZmxvYXQyIHRhbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIHRhbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSB0YW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCB0YW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRh
bih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFu
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHRhbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgdGFuKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gdGFuKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0YW4oZmxv
YXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuKGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0
YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRh
bih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdGFuKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRhbihmbG9hdDN4MyB4KSB7Ci0g
ICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyB0YW4oZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4o
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRhbih4
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdGFuKGZsb2F0Mng0IHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0
YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRh
bih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuKGZsb2F0M3g0
IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSB0YW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IHRhbihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuKHhbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSB0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IHRhbih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgZm1hICovCi1mbG9hdCBmbWEoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikgewotICAgIHJldHVybiB4ICogeSArIHo7Ci19Ci1mbG9hdDIgZm1hKGZsb2F0MiB4LCBmbG9h
dDIgeSwgZmxvYXQyIHopIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZt
YSh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmbWEoZmxvYXQzIHgsIGZsb2F0MyB5
LCBmbG9hdDMgeikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhb
MF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBmbWEoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBmbWEoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbWEo
eFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZm1hKHhbM10sIHlbM10sIHpbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmbWEoZmxvYXQyeDIgeCwgZmxvYXQy
eDIgeSwgZmxvYXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Zm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsx
XSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZt
YShmbG9hdDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
Zm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBmbWEoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZs
b2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwg
elswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
Zm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MyBmbWEoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwg
elswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgZm1hKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHop
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0s
IHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFd
WzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwg
elsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBmbWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgzIGZtYShmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBd
WzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBmbWEoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsy
XSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1hKHhbM11bMl0sIHlb
M11bMl0sIHpbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbWEoZmxv
YXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVsz
XSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlb
MV1bM10sIHpbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbWEoZmxv
YXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
Zm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4
WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsy
XSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlb
MV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJd
LCB6WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVswXVszXSwgelsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10p
OwotICAgIHJlc3VsdFsyXVszXSA9IGZtYSh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZm1hKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHks
IGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
Zm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4
WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVsw
XSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlb
M11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBmbWEoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1h
KHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFd
WzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwg
eVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZm1hKHhbM11bM10sIHlbM11b
M10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBkZXRlcm1pbmFudCAqLwotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQgeCkgewotICAgIHJldHVy
biB4OwotfQotZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQyeDIgeCkgewotICAgIHJldHVybiB4WzBd
WzBdICogeFsxXVsxXSAtIHhbMV1bMF0gKiB4WzBdWzFdOwotfQotZmxvYXQgZGV0ZXJtaW5hbnQo
ZmxvYXQzeDMgeCkgewotICAgIHJldHVybiB4WzBdWzBdICogeFsxXVsxXSAqIHhbMl1bMl0gKwot
ICAgICAgICAgICB4WzFdWzBdICogeFsyXVsxXSAqIHhbMF1bMl0gKwotICAgICAgICAgICB4WzJd
WzBdICogeFswXVsxXSAqIHhbMV1bMl0gLQotICAgICAgICAgICB4WzBdWzJdICogeFsxXVsxXSAq
IHhbMl1bMF0gLQotICAgICAgICAgICB4WzFdWzJdICogeFsyXVsxXSAqIHhbMF1bMF0gLQotICAg
ICAgICAgICB4WzJdWzJdICogeFswXVsxXSAqIHhbMV1bMF07Ci19Ci1mbG9hdCBkZXRlcm1pbmFu
dChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQgcmVzdWx0OwotICAgIGZsb2F0M3gzIG1pbm9yOwot
ICAgIG1pbm9yWzBdWzBdID0geFsxXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMl1bMV07Ci0g
ICAgbWlub3JbMl1bMF0gPSB4WzNdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFsxXVsyXTsKLSAg
ICBtaW5vclsxXVsxXSA9IHhbMl1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAg
IG1pbm9yWzBdWzJdID0geFsxXVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMl1bM107Ci0gICAg
bWlub3JbMl1bMl0gPSB4WzNdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIHhbMF1bMF0gKiBk
ZXRlcm1pbmFudChtaW5vcik7Ci0gICAgbWlub3JbMF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9y
WzFdWzBdID0geFsyXVsxXTsKLSAgICBtaW5vclsyXVswXSA9IHhbM11bMV07Ci0gICAgbWlub3Jb
MF1bMV0gPSB4WzBdWzJdOwotICAgIG1pbm9yWzFdWzFdID0geFsyXVsyXTsKLSAgICBtaW5vclsy
XVsxXSA9IHhbM11bMl07Ci0gICAgbWlub3JbMF1bMl0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFd
WzJdID0geFsyXVszXTsKLSAgICBtaW5vclsyXVsyXSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IC0geFsxXVswXSAqIGRldGVybWluYW50KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9
IHhbMF1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzFdWzFdOwotICAgIG1pbm9yWzJdWzBdID0g
eFszXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhbMF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4
WzFdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFszXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhb
MF1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzFdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFsz
XVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyB4WzJdWzBdICogZGV0ZXJtaW5hbnQobWlub3Ip
OwotICAgIG1pbm9yWzBdWzBdID0geFswXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMV1bMV07
Ci0gICAgbWlub3JbMl1bMF0gPSB4WzJdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFswXVsyXTsK
LSAgICBtaW5vclsxXVsxXSA9IHhbMV1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzJdWzJdOwot
ICAgIG1pbm9yWzBdWzJdID0geFswXVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMV1bM107Ci0g
ICAgbWlub3JbMl1bMl0gPSB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAtIHhbM11bMF0g
KiBkZXRlcm1pbmFudChtaW5vcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGZsb29yICovCi1uYXRpdmUgZmxvYXQgZmxvb3IoZmxvYXQpOwotZmxvYXQyIGZs
b29yKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9v
cih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGZsb29yKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBmbG9vcih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBmbG9vcih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGZsb29yKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBm
bG9vcih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbG9vcih4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBmbG9vcih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmbG9vcih4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgZmxvb3IoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDIgZmxvb3IoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9v
cih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgZmxvb3IoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9v
cih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZmxvb3IoZmxvYXQyeDMgeCkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9v
cih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZmxvb3IoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbG9v
cih4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZmxvb3IoZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9vcih4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9v
cih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbG9vcih4WzNd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZmxvb3IoZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbG9vcih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9v
cih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgZmxvb3IoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbG9v
cih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBmbG9vcih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZmxv
b3IoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmbG9vcih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbG9vcih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmbG9vcih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbG9v
cih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbG9vcih4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBmbG9vcih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbG9vcih4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbG9vcih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBmbG9vcih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbG9vcih4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBmbG9vcih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBm
bG9vcih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbG9vcih4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBmbG9vcih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbG9vcih4
WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmbG9vcih4WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY3Jvc3MgKi8KLWZsb2F0MyBjcm9zcyhm
bG9hdDMgdSwgZmxvYXQzIHYpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0g
dS55ICogdi56IC0gdS56ICogdi55OwotICAgIHJlc3VsdC55ID0gdS56ICogdi54IC0gdS54ICog
di56OwotICAgIHJlc3VsdC56ID0gdS54ICogdi55IC0gdS55ICogdi54OwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc2Zpbml0ZSAqLwotbmF0aXZlIGJvb2wg
aXNmaW5pdGUoZmxvYXQpOwotYm9vbDIgaXNmaW5pdGUoZmxvYXQyIHgpIHsKLSAgICBib29sMiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5pdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
aXNmaW5pdGUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzZmluaXRlKGZs
b2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlz
ZmluaXRlKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc2Zpbml0ZShmbG9h
dDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zpbml0ZSh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc2Zp
bml0ZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc2Zpbml0ZSh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRPciAqLwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCosIGludCwg
dGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX3Vp
bnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZp
Y2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRPcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91
cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJl
YWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwg
ZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBhdGFuMiAqLwotbmF0aXZlIGZsb2F0IGF0YW4yKGZsb2F0LCBm
bG9hdCk7Ci1mbG9hdDIgYXRhbjIoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhdGFuMih4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGF0YW4y
KGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYXRhbjIoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gYXRhbjIoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBhdGFuMihmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0
YW4yKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAg
IHJlc3VsdFszXSA9IGF0YW4yKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MiBhdGFuMihmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhdGFuMihmbG9h
dDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4y
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBhdGFuMihmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0
YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0s
IHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4y
KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhdGFu
MihmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MyBhdGFuMihmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhb
MF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1b
Ml0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhdGFuMihmbG9h
dDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4y
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhb
Ml1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGF0YW4yKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11b
Ml0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhdGFuMihmbG9h
dDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGF0YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4y
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhb
MF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhdGFuMihmbG9hdDN4NCB4LCBm
bG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0
YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGF0YW4yKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4y
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGF0YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4yKHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4yKHhbMl1bM10sIHlbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhdGFuMihmbG9hdDR4NCB4LCBm
bG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0
YW4yKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4yKHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4yKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGF0YW4yKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGF0YW4yKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4y
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4yKHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4yKHhbM11bMV0sIHlbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGF0YW4yKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGF0YW4yKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4yKHhb
Ml1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGF0YW4yKHhbM11bMl0sIHlbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGF0YW4yKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGF0YW4yKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGF0YW4yKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGF0YW4yKHhbM11b
M10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZvaWQgRGV2aWNl
TWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGZtb2Qg
Ki8KLQotZmxvYXQgZm1vZChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgdWludCB3aG9sZSA9IHVp
bnQoeCAvIHkpOwotICAgIGZsb2F0IG11bHRpcGxlID0gZmxvYXQod2hvbGUpICogeTsKLSAgICBy
ZXR1cm4geCAtIG11bHRpcGxlOwotfQotZmxvYXQyIGZtb2QoZmxvYXQyIHgsIGZsb2F0MiB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGZtb2QoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBmbW9kKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZm1vZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NCBmbW9kKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1vZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBmbW9kKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZtb2QoeFsyXSwgeVsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gZm1vZCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgZm1vZChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZtb2QoZmxvYXQz
eDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1v
ZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZm1v
ZChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Zm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsy
XVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZm1vZChmbG9hdDJ4MyB4LCBmbG9h
dDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2Qo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbW9kKGZsb2F0M3gz
IHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2Qo
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgzIGZtb2QoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11b
MF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2Qo
eFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
Zm1vZCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
Zm1vZChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2Qo
eFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZm1vZChmbG9hdDN4NCB4LCBm
bG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZt
b2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1b
MV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtb2Qo
eFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1vZCh4WzFdWzNdLCB5WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbW9kKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmbW9kKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZm1vZCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBmbW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2Qo
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGZtb2QoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
Zm1vZCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10s
IHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZtb2QoeFsyXVszXSwgeVsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gZm1vZCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3ItICovCi1uYXRpdmUgaW50IG9w
ZXJhdG9yLShpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvci0odWludCwgdWludCk7Ci1u
YXRpdmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgaW50IG9wZXJhdG9y
LShpbnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3Bl
cmF0b3ItKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQsIHVpbnQy
KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci0odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9w
ZXJhdG9yLSh1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50LCB1aW50
Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3ItKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBv
cGVyYXRvci0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludCwgdWlu
dDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLSh1aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBv
cGVyYXRvci0oaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50LCBpbnQyKTsK
LW5hdGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQyLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3It
KGludDMsIGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludCwgaW50Myk7Ci1uYXRpdmUg
aW50MyBvcGVyYXRvci0oaW50MywgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQ0LCBp
bnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQsIGludDQpOwotbmF0aXZlIGludDQgb3Bl
cmF0b3ItKGludDQsIGludCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0
Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9h
dDIgb3BlcmF0b3ItKGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxv
YXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Myk7Ci1u
YXRpdmUgZmxvYXQzIG9wZXJhdG9yLShmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3Bl
cmF0b3ItKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0LCBm
bG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUg
aW50MiBvcGVyYXRvci0oaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50Myk7Ci1uYXRp
dmUgaW50NCBvcGVyYXRvci0oaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIp
OwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0
b3ItKGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdDJ4
Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQyeDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3Bl
cmF0b3ItKGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIsIGZs
b2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0M3gyKTsKLW5h
dGl2ZSBmbG9hdDN4MiBvcGVyYXRvci0oZmxvYXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4
MiBvcGVyYXRvci0oZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4
MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDIp
OwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZs
b2F0NHgyIG9wZXJhdG9yLShmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZs
b2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9h
dDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQyeDMgb3BlcmF0b3ItKGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRv
ci0oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci0oZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9w
ZXJhdG9yLShmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShm
bG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4MywgZmxv
YXQpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLShmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQy
eDQgb3BlcmF0b3ItKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0
b3ItKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3ItKGZsb2F0Mng0KTsKLW5hdGl2ZSBm
bG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBv
cGVyYXRvci0oZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxv
YXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci0oZmxvYXQzeDQpOwotbmF0
aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0
NHg0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9y
LShmbG9hdDR4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLShmbG9hdDR4NCk7
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBtaW4gKi8KLXVpbnQgbWluKHVpbnQgeCwgdWludCB5KSB7
Ci0gICAgcmV0dXJuIHggPiB5ID8geSA6IHg7Ci19Ci11aW50MiBtaW4odWludDIgeCwgdWludDIg
eSkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50MyBtaW4odWludDMgeCwgdWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotdWludDQgbWluKHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFd
LCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gbWluKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgbWluKGludCB4
LCBpbnQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotaW50MiBtaW4oaW50MiB4
LCBpbnQyIHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwg
eVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQzIG1pbihpbnQzIHgsIGludDMgeSkgewotICAgIGludDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQ0IG1pbihpbnQ0IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9
IG1pbih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgbWluKGZsb2F0
IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLWZsb2F0MiBtaW4o
ZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWluKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAg
IGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtaW4oZmxvYXQ0IHgsIGZsb2F0NCB5
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4
WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIG1pbihmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAg
ZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbWluKGZs
b2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4o
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1pbihm
bG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4o
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWlu
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1pbihmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1p
bih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtaW4oZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBt
aW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbWluKGZsb2F0NHgzIHgs
IGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbWluKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBtaW4oeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IG1pbihmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFswXVsyXSwgeVswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IG1pbih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVsz
XSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1pbihmbG9hdDN4
NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1b
MV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gbWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBd
WzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gbWluKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtaW4oZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFsz
XVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhb
M11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1pbih4
WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtaW4oeFswXVszXSwgeVswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWluKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IG1pbih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBtaW4o
eFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIEludGVybG9ja2VkWG9yICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZp
Y2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRYb3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX2ludCosIGludCwg
ZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY191
aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRY
b3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFk
Z3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIEdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lkIEdy
b3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHRy
dW5jICovCi1uYXRpdmUgZmxvYXQgdHJ1bmMoZmxvYXQpOwotZmxvYXQyIHRydW5jKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IHRydW5jKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0
cnVuYyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSB0cnVuYyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHRydW5jKGZsb2F0
NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0cnVuYyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSB0cnVuYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0cnVuYyh4WzJd
KTsKLSAgICByZXN1bHRbM10gPSB0cnVuYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgdHJ1bmMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
dHJ1bmMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0
cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgdHJ1bmMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0
cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgdHJ1bmMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgdHJ1bmMoZmxvYXQzeDMgeCkgewotICAg
IGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVu
Yyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0cnVuYyh4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdHJ1bmMoZmxvYXQ0eDMgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0cnVu
Yyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0
cnVuYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdHJ1bmMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0
Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB0cnVuYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSB0
cnVuYyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJ1bmMoZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVu
Yyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0
cnVuYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSB0cnVuYyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0cnVuYyh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdHJ1bmMoZmxvYXQ0eDQg
eCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0cnVuYyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0cnVuYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSB0cnVuYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0cnVuYyh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSB0cnVuYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0
cnVuYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0cnVuYyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSB0cnVuYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0cnVuYyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0cnVuYyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSB0cnVuYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0cnVuYyh4WzNdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSB0cnVuYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSB0cnVuYyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0cnVuYyh4WzJdWzNdKTsKLSAg
ICByZXN1bHRbM11bM10gPSB0cnVuYyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgbWF4ICovCi11aW50IG1heCh1aW50IHgsIHVpbnQgeSkgewot
ICAgIHJldHVybiB4ID4geSA/IHggOiB5OwotfQotdWludDIgbWF4KHVpbnQyIHgsIHVpbnQyIHkp
IHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDMgbWF4KHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLXVpbnQ0IG1heCh1aW50NCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwg
eVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9
IG1heCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLQotaW50IG1heChp
bnQgeCwgaW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLWludDIgbWF4KGlu
dDIgeCwgaW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotaW50MyBtYXgoaW50MyB4LCBpbnQzIHkpIHsKLSAgICBpbnQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotaW50NCBtYXgoaW50NCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRb
M10gPSBtYXgoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1mbG9hdCBt
YXgoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHggOiB5OwotfQotZmxv
YXQyIG1heChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtYXgoZmxvYXQzIHgsIGZsb2F0MyB5
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4
WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1heChmbG9hdDQgeCwg
ZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1heCh4WzNdLCB5WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWF4KGZsb2F0MngyIHgsIGZsb2F0MngyIHkp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBtYXgoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgbWF4KGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1b
MV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbWF4KGZsb2F0MngzIHgsIGZsb2F0Mngz
IHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBd
WzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1heChmbG9hdDN4MyB4LCBmbG9hdDN4
MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBd
WzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsx
XVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhb
Ml1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtYXgoZmxv
YXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhb
MV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgo
eFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbWF4KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4
KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1heCh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gbWF4KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1h
eCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWF4
KGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1h
eCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBt
YXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
bWF4KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtYXgoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1heChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IG1heCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwg
eVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBtYXgoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gbWF4KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNd
LCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gbWF4KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IG1heCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBhc2ludCAqLwotaW50IGFzaW50KGludCB4KSB7Ci0gICAgcmV0dXJu
IHg7Ci19Ci1pbnQyIGFzaW50KGludDIgeCkgewotICAgIHJldHVybiB4OwotfQotaW50MyBhc2lu
dChpbnQzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludDQgYXNpbnQoaW50NCB4KSB7Ci0gICAg
cmV0dXJuIHg7Ci19Ci1pbnQgYXNpbnQodWludCB4KSB7Ci0gICAgcmV0dXJuIGludCh4KTsKLX0K
LWludDIgYXNpbnQodWludDIgeCkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1pbnQzIGFzaW50KHVpbnQzIHgpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBh
c2ludCh1aW50NCB4KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNp
bnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLW5hdGl2ZSBpbnQgYXNpbnQoZmxvYXQpOwotaW50MiBhc2ludChmbG9hdDIgeCkgewot
ICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIGFzaW50KGZs
b2F0MyB4KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgYXNpbnQoZmxvYXQ0IHgpIHsKLSAgICBp
bnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhc2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBhc2ludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgY2xhbXAgKi8KLW5hdGl2ZSB1aW50IGNsYW1wKHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0
aXZlIHVpbnQyIGNsYW1wKHVpbnQyLCB1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQzIGNsYW1w
KHVpbnQzLCB1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQ0IGNsYW1wKHVpbnQ0LCB1aW50NCwg
dWludDQpOwotbmF0aXZlIGludCBjbGFtcChpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBpbnQyIGNs
YW1wKGludDIsIGludDIsIGludDIpOwotbmF0aXZlIGludDMgY2xhbXAoaW50MywgaW50MywgaW50
Myk7Ci1uYXRpdmUgaW50NCBjbGFtcChpbnQ0LCBpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdCBj
bGFtcChmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgY2xhbXAoZmxvYXQyLCBm
bG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIGNsYW1wKGZsb2F0MywgZmxvYXQzLCBmbG9h
dDMpOwotbmF0aXZlIGZsb2F0NCBjbGFtcChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2
ZSBmbG9hdDJ4MiBjbGFtcChmbG9hdDJ4MiwgZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBm
bG9hdDN4MiBjbGFtcChmbG9hdDN4MiwgZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9h
dDR4MiBjbGFtcChmbG9hdDR4MiwgZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4
MyBjbGFtcChmbG9hdDJ4MywgZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDN4MyBj
bGFtcChmbG9hdDN4MywgZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBjbGFt
cChmbG9hdDR4MywgZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBjbGFtcChm
bG9hdDJ4NCwgZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBjbGFtcChmbG9h
dDN4NCwgZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBjbGFtcChmbG9hdDR4
NCwgZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPCAq
LwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9y
PCh1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9hdCwgZmxvYXQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPCh1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9y
PCh1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPCh1aW50NCwgdWludDQpOwot
bmF0aXZlIGJvb2wyIG9wZXJhdG9yPChpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRv
cjwoaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8KGludDQsIGludDQpOwotbmF0
aXZlIGJvb2wyIG9wZXJhdG9yPChmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0
b3I8KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwoZmxvYXQ0LCBmbG9h
dDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I8KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRp
dmUgYm9vbDN4MiBvcGVyYXRvcjwoZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgy
IG9wZXJhdG9yPChmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0b3I8
KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcjwoZmxvYXQzeDMs
IGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPChmbG9hdDR4MywgZmxvYXQ0eDMp
OwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I8KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUg
Ym9vbDN4NCBvcGVyYXRvcjwoZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9w
ZXJhdG9yPChmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNuYW4g
Ki8KLW5hdGl2ZSBib29sIGlzbmFuKGZsb2F0KTsKLQotYm9vbDIgaXNuYW4oZmxvYXQyIHgpIHsK
LSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gaXNuYW4oeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzbmFu
KGZsb2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbmFu
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc25hbihmbG9hdDQgeCkgewot
ICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25hbih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBpc25hbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc25hbih4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBpc25hbih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5hdGl2ZSB2b2lk
IEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBv
cGVyYXRvcl4gKi8KLWJvb2wgb3BlcmF0b3JeKGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAgaWYgKGEp
Ci0gICAgICAgIHJldHVybiAhYjsKLSAgICByZXR1cm4gYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0
b3JeKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50LCB1aW50KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIGlzaW5mICovCi1uYXRpdmUgYm9vbCBpc2luZihmbG9hdCk7Ci1ib29s
MiBpc2luZihmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBp
c2luZih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbDMgaXNpbmYoZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gaXNpbmYoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0
IGlzaW5mKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlz
aW5mKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzaW5mKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGlzaW5mKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzaW5mKHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcnwgKi8KLWJvb2wgb3BlcmF0
b3J8KGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAgcmV0dXJuIGEgfHwgYjsKLX0KLW5hdGl2ZSBpbnQg
b3BlcmF0b3J8KGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yfCh1aW50LCB1aW50KTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIGRlZ3JlZXMgKi8KLWZsb2F0IGRlZ3JlZXMoZmxvYXQgeCkg
ewotICAgIHJldHVybiB4ICogMTgwIC8gMy4xNDE1OTsKLX0KLWZsb2F0MiBkZWdyZWVzKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBkZWdyZWVzKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRlZ3JlZXMoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gZGVncmVlcyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IGRlZ3JlZXMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGRlZ3JlZXMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBkZWdyZWVzKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRlZ3JlZXMoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRlZ3JlZXMoZmxvYXQyeDIgeCkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZWdyZWVzKGZsb2F0M3gyIHgpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRl
Z3JlZXMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBkZWdyZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRlZ3JlZXMoZmxvYXQyeDMgeCkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMg
ZGVncmVlcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZWdyZWVzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBkZWdyZWVzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRlZ3JlZXMoeFsz
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRlZ3JlZXMoZmxvYXQyeDQg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdyZWVzKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRlZ3JlZXMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4
WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGRlZ3JlZXMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGVncmVlcyh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGVncmVlcyhmbG9hdDR4
NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBkZWdyZWVzKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3JlZXMo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBkZWdyZWVzKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRlZ3JlZXMo
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIFNh
bXBsZSAqLwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUxRDx1aW50Piwgc2FtcGxlciwgZmxv
YXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyRDx1
aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0
dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0
dXJlM0Q8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1w
bGUoVGV4dHVyZTNEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTFEPHVpbnQyPiwgc2FtcGxl
ciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMURBcnJheTx1
aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRl
eHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIg
U2FtcGxlKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
dWludDIgU2FtcGxlKFRleHR1cmUzRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUzRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTx1
aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRl
eHR1cmUxRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBT
YW1wbGUoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQz
IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlM0Q8dWlu
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
MyBTYW1wbGUoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMUQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdCBsb2Nh
dGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVy
ZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgdWludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUo
VGV4dHVyZTNEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGUoVGV4dHVyZTNEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQz
IG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUxRDxpbnQ+LCBz
YW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMURBcnJh
eTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4
dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBs
ZShUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0
dXJlM0Q8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxl
KFRleHR1cmUzRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsK
LW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTFEPGludDI+LCBzYW1wbGVyLCBmbG9h
dCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEPGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1
cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1
cmUzRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBs
ZShUZXh0dXJlM0Q8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQp
OwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUxRDxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUxREFycmF5PGludDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUy
RDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShU
ZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShU
ZXh0dXJlM0Q8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBT
YW1wbGUoVGV4dHVyZTNEPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMUQ8aW50ND4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTxp
bnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0
dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1w
bGUoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1w
bGUoVGV4dHVyZTNEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDQgU2FtcGxlKFRleHR1cmUzRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQz
IG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUxRDxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNh
bXBsZShUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0IFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVy
ZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBT
YW1wbGUoVGV4dHVyZTFEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2
ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyRDxmbG9h
dDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9h
dDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRl
eHR1cmUzRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
MiBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50
MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUxRDxm
bG9hdDM+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShU
ZXh0dXJlMURBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0MyBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUz
RDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMUQ8ZmxvYXQ0Piwgc2FtcGxlciwg
ZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRl
eHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
NCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShU
ZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZs
b2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0
aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgU2FtcGxlTGV2ZWwgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1
aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2
ZWwoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1
aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0
IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUy
REFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsK
LW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVs
KFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2Ft
cGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChU
ZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDIgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3Vi
ZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGlu
dDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChU
ZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBT
YW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVM
ZXZlbChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZl
bChUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9h
dDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2
ZWwoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBM
T0QpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZl
bChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0Qs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZs
b2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVM
ZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxl
dmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVMZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlQmlh
cyAqLwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1
cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBC
aWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVp
bnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVC
aWFzKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBT
YW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0
dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBTYW1w
bGVCaWFzKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJp
YXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludCBT
YW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmVD
dWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRl
eHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5h
dGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQz
IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJp
YXMoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50NCBT
YW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVy
ZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZs
b2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0
MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZs
b2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxv
YXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBC
aWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBm
bG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8Zmxv
YXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZl
IGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0
IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJp
YXMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBTYW1wbGVHcmFkICovCi1uYXRpdmUgdWlu
dCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJE
PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFks
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1u
YXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChU
ZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFkpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWlu
dDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQzIFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGVHcmFkKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7
Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVH
cmFkKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3Jh
ZChUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIERE
WCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVH
cmFkKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8
aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBp
bnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJl
MkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIERE
WSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxp
bnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQo
VGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFkpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxl
R3JhZChUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMg
RERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0
aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3Vi
ZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDMg
U2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJl
Q3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0
MyBERFkpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZs
b2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRl
eHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwg
ZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQg
U2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNp
bmggKi8KLW5hdGl2ZSBmbG9hdCBzaW5oKGZsb2F0KTsKLWZsb2F0MiBzaW5oKGZsb2F0MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW5o
KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNpbmgoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gc2luaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzaW5oKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IHNpbmgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNpbmgo
ZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBz
aW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzaW5oKGZsb2F0M3gyIHgpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNp
bmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHNpbmgoZmxvYXQ0eDIgeCkgewot
ICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2lu
aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IHNpbmgoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHNpbmgoZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5o
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c2luaCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc2luaChmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBz
aW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzaW5oKGZsb2F0NHgzIHgpIHsK
LSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNp
bmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBzaW5oKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbmgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IHNpbmgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBzaW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHNpbmgoZmxvYXQzeDQgeCkgewotICAgIGZs
b2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBzaW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDQgc2luaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IHNpbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNp
bmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBzaW5oKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbmgoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gc2luaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW5oKHhb
Ml1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHNpbmgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeSAqLwotbmF0aXZlIGZsb2F0IGRkeShm
bG9hdCk7Ci1mbG9hdDIgZGR5KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBkZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR5KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBkZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGRkeSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IGRkeShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBk
ZHkoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBkZHkoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeShm
bG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHkoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZGR5KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHkoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5KGZsb2F0M3gzIHgpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHko
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgzIGRkeShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHkoZmxvYXQyeDQg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZGR5KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHkoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgZGR5KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGR5KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHkoeFsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGRkeSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gZGR5KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcj49ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KGlu
dCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7Ci1uYXRpdmUgYm9v
bCBvcGVyYXRvcj49KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+PSh1aW50
MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPj0odWludDMsIHVpbnQzKTsKLW5hdGl2
ZSBib29sNCBvcGVyYXRvcj49KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+
PShpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KGludDMsIGludDMpOwotbmF0
aXZlIGJvb2w0IG9wZXJhdG9yPj0oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+
PShmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PShmbG9hdDMsIGZsb2F0
Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9v
bDJ4MiBvcGVyYXRvcj49KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVy
YXRvcj49KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj49KGZs
b2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj49KGZsb2F0MngzLCBm
bG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj49KGZsb2F0M3gzLCBmbG9hdDN4Myk7
Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj49KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUg
Ym9vbDJ4NCBvcGVyYXRvcj49KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBv
cGVyYXRvcj49KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj49
KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkc3QgKi8KLXVpbnQ0
IGRzdCh1aW50NCBzcmMwLCB1aW50NCBzcmMxKSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJl
c3VsdC54ID0gMTsKLSAgICByZXN1bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAgICByZXN1bHQu
eiA9IHNyYzAuejsKLSAgICByZXN1bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50NCBkc3QoaW50NCBzcmMwLCBpbnQ0IHNyYzEpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAg
ICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMxLnk7Ci0gICAgcmVz
dWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBkc3QoZmxvYXQ0IHNyYzAsIGZsb2F0NCBzcmMxKSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMx
Lnk7Ci0gICAgcmVzdWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZG90ICovCi11aW50IGRv
dCh1aW50IGEsIHVpbnQgYikgewotICAgIHJldHVybiBhICogYjsKLX0KLXVpbnQgZG90KHVpbnQy
IGEsIHVpbnQyIGIpIHsKLSAgICB1aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgZG90KHVpbnQzIGEsIHVpbnQzIGIpIHsKLSAgICB1aW50
IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAq
IGJbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgZG90KHVpbnQ0IGEsIHVpbnQ0IGIp
IHsKLSAgICB1aW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJb
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVszXSAqIGJbM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50IGEsIGludCBiKSB7Ci0gICAgcmV0dXJu
IGEgKiBiOwotfQotaW50IGRvdChpbnQyIGEsIGludDIgYikgewotICAgIGludCByZXN1bHQgPSAw
OwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCArIGFbMV0gKiBiWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludDMgYSwg
aW50MyBiKSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsw
XSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3Qo
aW50NCBhLCBpbnQ0IGIpIHsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1
bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBh
WzNdICogYlszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgZG90KGZsb2F0IGEsIGZs
b2F0IGIpIHsKLSAgICByZXR1cm4gYSAqIGI7Ci19Ci1mbG9hdCBkb3QoZmxvYXQyIGEsIGZsb2F0
MiBiKSB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBd
ICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQgZG90KGZsb2F0MyBhLCBmbG9hdDMgYikgewotICAgIGZsb2F0IHJl
c3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJb
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdDQgYSwgZmxvYXQ0IGIp
IHsKLSAgICBmbG9hdCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBi
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBiWzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc2Zsb2F0ICovCi1u
YXRpdmUgZmxvYXQgYXNmbG9hdChpbnQpOwotZmxvYXQyIGFzZmxvYXQoaW50MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhc2Zs
b2F0KGludDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9h
dCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhc2Zsb2F0KGlu
dDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxv
YXQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXNmbG9hdCh4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotbmF0aXZlIGZsb2F0IGFzZmxvYXQodWludCk7Ci1mbG9hdDIgYXNmbG9hdCh1aW50
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBhc2Zsb2F0KHVpbnQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgYXNmbG9hdCh1aW50NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2Zsb2F0KHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBhc2Zsb2F0KGZsb2F0IHgpIHsKLSAgICByZXR1
cm4geDsKLX0KLWZsb2F0MiBhc2Zsb2F0KGZsb2F0MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1m
bG9hdDMgYXNmbG9hdChmbG9hdDMgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0IGFzZmxv
YXQoZmxvYXQ0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MngyIGFzZmxvYXQoZmxvYXQy
eDIgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDIgYXNmbG9hdChmbG9hdDN4MiB4KSB7
Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDR4MiBhc2Zsb2F0KGZsb2F0NHgyIHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLWZsb2F0MngzIGFzZmxvYXQoZmxvYXQyeDMgeCkgewotICAgIHJldHVybiB4
OwotfQotZmxvYXQzeDMgYXNmbG9hdChmbG9hdDN4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1m
bG9hdDR4MyBhc2Zsb2F0KGZsb2F0NHgzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0Mng0
IGFzZmxvYXQoZmxvYXQyeDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQzeDQgYXNmbG9h
dChmbG9hdDN4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDR4NCBhc2Zsb2F0KGZsb2F0
NHg0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzbm9ybWFs
ICovCi1uYXRpdmUgYm9vbCBpc25vcm1hbChmbG9hdCk7Ci0KLWJvb2wyIGlzbm9ybWFsKGZsb2F0
MiB4KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sMyBpc25vcm1hbChmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBpc25vcm1hbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBpc25vcm1hbCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbDQgaXNub3JtYWwoZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gaXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gaXNub3JtYWwoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNub3JtYWwo
eFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50
ZXJsb2NrZWRFeGNoYW5nZSAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZp
Y2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBk
ZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRv
bWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNo
YW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJl
YWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3Jv
dXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50
KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2Uo
dGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBHZXREaW1lbnNpb25zICovCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJl
YWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGlu
dDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCBkZXZpY2Ug
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+
LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQy
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxm
bG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQz
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBv
cGVyYXRvcisgKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCwgaW50KTsKLW5hdGl2ZSB1aW50
IG9wZXJhdG9yKyh1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQsIGZs
b2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcisodWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50
MiBvcGVyYXRvcisodWludCwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50Miwg
dWludCk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IrKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWlu
dDMgb3BlcmF0b3IrKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcisodWludDMs
IHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVp
bnQ0IG9wZXJhdG9yKyh1aW50LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0
LCB1aW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQy
IG9wZXJhdG9yKyhpbnQsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludDIsIGludCk7
Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRv
cisoaW50LCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQzLCBpbnQpOwotbmF0aXZl
IGludDQgb3BlcmF0b3IrKGludDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludCwg
aW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvcisoaW50NCwgaW50KTsKLW5hdGl2ZSBmbG9hdDIg
b3BlcmF0b3IrKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0
LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQyLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQzIG9wZXJhdG9yKyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJh
dG9yKyhmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0MywgZmxv
YXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZs
b2F0NCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhm
bG9hdDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIsIGZsb2F0
MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2
ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBv
cGVyYXRvcisoZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvciso
ZmxvYXQsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvcisoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5h
dGl2ZSBmbG9hdDR4MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4
MiBvcGVyYXRvcisoZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvciso
ZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQsIGZs
b2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9h
dDN4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRv
cisoZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMs
IGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0NHgzKTsK
LW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9h
dDJ4NCBvcGVyYXRvcisoZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVy
YXRvcisoZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQy
eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQsIGZsb2F0M3g0
KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBm
bG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVy
YXRvcisoZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxv
YXQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQ0eDQsIGZsb2F0
KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcisodWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9y
Kyh1aW50Myk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0KTsKLW5hdGl2ZSBpbnQyIG9w
ZXJhdG9yKyhpbnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQzKTsKLW5hdGl2ZSBpbnQ0
IG9wZXJhdG9yKyhpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0Mik7Ci1uYXRp
dmUgZmxvYXQzIG9wZXJhdG9yKyhmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvcisoZmxv
YXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvcisoZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0
M3gyIG9wZXJhdG9yKyhmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0
NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvcisoZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0
M3gzIG9wZXJhdG9yKyhmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0
NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvcisoZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0
M3g0IG9wZXJhdG9yKyhmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0
NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGZyYWMgKi8KLWZsb2F0IGZyYWMoZmxvYXQgeCkg
ewotICAgIHJldHVybiB4IC0gZmxvb3IoeCk7Ci19Ci1mbG9hdDIgZnJhYyhmbG9hdDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZnJhYyhm
bG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBmcmFjKGZsb2F0NCB4KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGZyYWMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZnJhYyh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBmcmFjKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmcmFjKGZs
b2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJh
Yyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZnJhYyhmbG9hdDN4MiB4KSB7Ci0g
ICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFj
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmcmFjKGZsb2F0NHgyIHgpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBm
cmFjKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmcmFjKGZsb2F0
MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZy
YWMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZyYWMoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJh
Yyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZnJhYyhmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFj
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZnJhYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmcmFjKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBmcmFjKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
cmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZnJhYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmcmFjKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZnJhYyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGZyYWMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IGZyYWMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBmcmFjKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFj
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
ZnJhYyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmcmFjKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGZyYWMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZnJhYyh4WzJd
WzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmcmFjKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzdG9yZSAqLwotbmF0aXZlIHZvaWQgc3RvcmUo
ZGV2aWNlIGF0b21pY19pbnQqLCBpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUoZGV2aWNlIGF0b21p
Y191aW50KiwgdWludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBhdG9taWNfaW50
KiwgaW50KTsKLW5hdGl2ZSB2b2lkIHN0b3JlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWlu
dCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByZWZyYWN0ICovCi1mbG9hdCByZWZyYWN0KGZsb2F0
IGksIGZsb2F0IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBmbG9hdCBr
ID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAo
ayA8IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRh
ICogZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQyIHJlZnJhY3QoZmxvYXQyIGks
IGZsb2F0MiBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGsg
PSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlmIChr
IDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChldGEg
KiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDMgcmVmcmFjdChmbG9hdDMgaSwg
ZmxvYXQzIG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgayA9
IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAgaWYgKGsg
PCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0gKGV0YSAq
IGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0NCByZWZyYWN0KGZsb2F0NCBpLCBm
bG9hdDQgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBrID0g
MSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8
IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICog
ZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9nMTAg
Ki8KLWZsb2F0IGxvZzEwKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gbG9nKHgpIC8gbG9nKGZsb2F0
KDEwKSk7Ci19Ci1mbG9hdDIgbG9nMTAoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nMTAoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGxvZzEwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzEwKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbG9nMTAoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGxvZzEwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZzEwKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzEwKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZzEw
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cxMChmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBsb2cxMChmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEw
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2cxMChmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBsb2cxMChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBsb2cxMChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBsb2cxMChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEw
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGxvZzEwKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
NCBsb2cxMChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzEwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzEw
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsb2cxMChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzEw
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGxvZzEwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxvZzEwKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBsb2cxMChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzEwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZzEwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzEwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGxvZzEwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzEw
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzEwKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxvZzEwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzEwKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzEwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGxvZzEwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzEwKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGxvZzEwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxv
ZzEwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZzEwKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGxvZzEwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxvZzEwKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVy
YXRvci8gKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3IvKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9w
ZXJhdG9yLyh1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci8odWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBv
cGVyYXRvci8odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLyh1aW50LCB1aW50
Mik7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IvKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMg
b3BlcmF0b3IvKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci8odWludCwgdWlu
dDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLyh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0
IG9wZXJhdG9yLyh1aW50NCwgdWludCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IvKHVpbnQsIHVp
bnQ0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLyhpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9w
ZXJhdG9yLyhpbnQyLCBpbnQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IvKGludCwgaW50Mik7Ci1u
YXRpdmUgaW50MyBvcGVyYXRvci8oaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8o
aW50MywgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLyhpbnQsIGludDMpOwotbmF0aXZlIGlu
dDQgb3BlcmF0b3IvKGludDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludDQsIGlu
dCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci8oaW50LCBpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3Bl
cmF0b3IvKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0Miwg
ZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUg
ZmxvYXQzIG9wZXJhdG9yLyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9y
LyhmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDMp
OwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci8oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0
NCBvcGVyYXRvci8oZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLyhmbG9h
dCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0Mngy
KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDJ4MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVy
YXRvci8oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxv
YXQzeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvci8oZmxvYXQsIGZsb2F0M3gy
KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci8oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2
ZSBmbG9hdDR4MiBvcGVyYXRvci8oZmxvYXQ0eDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBv
cGVyYXRvci8oZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxv
YXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQyeDMsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2
ZSBmbG9hdDN4MyBvcGVyYXRvci8oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDN4
MyBvcGVyYXRvci8oZmxvYXQzeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvci8o
ZmxvYXQsIGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZs
b2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQ0eDMsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDR4MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4
NCBvcGVyYXRvci8oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRv
ci8oZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci8oZmxvYXQsIGZs
b2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci8oZmxvYXQzeDQsIGZsb2F0M3g0KTsK
LW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvci8oZmxvYXQzeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9h
dDN4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRv
ci8oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQ0
eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NHg0KTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeV9maW5lICovCi1mbG9hdCBkZHlfZmluZShmbG9hdCB4
KSB7Ci0gICAgcmV0dXJuIGRkeSh4KTsKLX0KLWZsb2F0MiBkZHlfZmluZShmbG9hdDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2ZpbmUoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBkZHlfZmluZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZGR5X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZGR5X2ZpbmUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBkZHlfZmluZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZGR5X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2ZpbmUoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZGR5X2ZpbmUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2ZpbmUoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeV9maW5lKGZsb2F0MngyIHgp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUo
eFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeV9maW5lKGZsb2F0
M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2Zp
bmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5
X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIGRkeV9maW5lKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZGR5X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIGRkeV9maW5lKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2Zp
bmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5
X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeV9maW5lKGZsb2F0M3gzIHgpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgzIGRkeV9maW5lKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2Zp
bmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5
X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZGR5X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeV9maW5lKGZsb2F0Mng0IHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2Zp
bmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeV9maW5lKGZsb2F0M3g0IHgpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZGR5X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2ZpbmUoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gZGR5X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IGRkeV9maW5lKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGR5X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2Zp
bmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2ZpbmUoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZGR5X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5
X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2ZpbmUoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZGR5X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZGR5X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2ZpbmUoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR5X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2ZpbmUoeFszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gZGR5X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2ZpbmUoeFsy
XVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR5X2ZpbmUoeFszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFueSAqLwotYm9vbCBhbnkoYm9vbCB4
KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1ib29sIGFueShib29sMiB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wz
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNCB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0p
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFueSh1aW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBh
bnkodWludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludDMgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
Ml0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQ0IHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoaW50IHgpIHsKLSAgICByZXR1cm4geCAh
PSAwOwotfQotYm9vbCBhbnkoaW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQzIHgpIHsK
LSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShp
bnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQgeCkgewot
ICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFueShmbG9hdDIgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoZmxvYXQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFueShmbG9hdDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFueShmbG9hdDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYW55KGZsb2F0M3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFd
ICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4MiB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
M11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFdICE9IDAp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDJ4MyB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoZmxvYXQzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NHgzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsz
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzJdICE9IDApOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFueShmbG9hdDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
ZmxvYXQ0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFszXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMl0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzNdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
Ml1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzNdICE9IDApOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMngyIHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFueShib29sM3gyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sNHgyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sMngzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29sM3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShib29s
NHgzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFueShib29sMng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eShib29sM3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFd
WzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFueShib29sNHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFd
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzBdWzFdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4
WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzNdWzJdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzFdWzNd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCB4WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBk
ZHlfY29hcnNlICovCi1mbG9hdCBkZHlfY29hcnNlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR5
KHgpOwotfQotZmxvYXQyIGRkeV9jb2Fyc2UoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5
X2NvYXJzZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeV9jb2Fyc2Uo
ZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9jb2Fy
c2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBkZHlfY29hcnNlKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR5
X2NvYXJzZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR5X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGRkeV9jb2Fyc2UoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR5X2NvYXJz
ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR5X2NvYXJzZShmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9j
b2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IGRkeV9jb2Fyc2UoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5X2NvYXJzZShmbG9h
dDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9j
b2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGRkeV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5
X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5X2Nv
YXJzZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5
X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHlfY29hcnNlKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5
X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNl
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeV9jb2Fyc2UoZmxvYXQ0eDMgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlfY29hcnNl
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeV9jb2Fyc2UoeFszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fy
c2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2NvYXJzZSh4WzNdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR5X2NvYXJzZShmbG9hdDJ4NCB4KSB7Ci0g
ICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fy
c2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGRkeV9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR5X2NvYXJzZShmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fy
c2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2Nv
YXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGRkeV9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfY29hcnNlKHhb
Ml1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHlfY29hcnNlKGZsb2F0
NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2Nv
YXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZGR5X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlf
Y29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fyc2Uo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBkZHlfY29hcnNlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRk
eV9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR5X2NvYXJzZSh4WzNdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3Ir
KyAqLwotdWludCBvcGVyYXRvcisrKHVpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAx
OwotfQotaW50IG9wZXJhdG9yKysoaW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlICsgMTsK
LX0KLWZsb2F0IG9wZXJhdG9yKysoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAx
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRBbmQgKi8KLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhy
ZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50
KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmlj
ZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZEFuZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3Jv
dXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNf
dWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0
aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50Kiwg
aW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91
cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGlu
dCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3J+ICovCi1ib29sIG9wZXJhdG9yfihi
b29sIHZhbHVlKSB7Ci0gICAgcmV0dXJuICF2YWx1ZTsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3J+
KGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcn4odWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBkZHggKi8KLW5hdGl2ZSBmbG9hdCBkZHgoZmxvYXQpOwotZmxvYXQyIGRkeChmbG9hdDIgeCkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGRkeCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeChm
bG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGRkeCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHgoeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHgoZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBk
ZHgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRk
eCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR4KGZsb2F0MngyIHgp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZHgoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgZGR4KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGR4KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgZGR4KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIGRkeChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHgoZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZGR4KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDQgZGR4KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgZGR4KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHgo
eFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeChmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBk
ZHgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRk
eCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gZGR4KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeCh4WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRN
YXggKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRv
bWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgo
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRn
cm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZE1heCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBp
bnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY29zaCAqLwotbmF0
aXZlIGZsb2F0IGNvc2goZmxvYXQpOwotZmxvYXQyIGNvc2goZmxvYXQyIHgpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Y29zaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGNvc2goZmxvYXQzIHgp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gY29zaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgY29zaChmbG9hdDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3No
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNvc2goeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gY29z
aCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY29zaChmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGNvc2goZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgY29zaChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Y29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgY29zaChmbG9hdDJ4MyB4KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBj
b3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBjb3NoKGZsb2F0M3gzIHgpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNv
c2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGNvc2goZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvc2goeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gY29zaCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgY29zaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2go
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDQgY29zaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNv
c2goeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1
bHRbMl1bM10gPSBjb3NoKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBjb3NoKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29z
aCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3NoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBjb3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBjb3NoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvc2goeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gY29zaCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgZGR4X2NvYXJzZSAqLwotZmxvYXQgZGR4X2NvYXJzZShmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIGRkeCh4KTsKLX0KLWZsb2F0MiBkZHhfY29hcnNlKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBkZHhfY29hcnNlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9jb2Fy
c2UoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGRkeF9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZGR4X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhfY29hcnNlKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IGRkeF9jb2Fyc2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngyIGRkeF9jb2Fyc2UoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZHhfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9h
dDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgyIGRkeF9jb2Fyc2UoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2Nv
YXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngzIGRkeF9jb2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2Nv
YXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMg
ZGR4X2NvYXJzZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2Nv
YXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhf
Y29hcnNlKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHhfY29h
cnNlKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhf
Y29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBkZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2Uo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRk
eF9jb2Fyc2UoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9j
b2Fyc2UoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2Uo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRk
eF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRkeF9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IGRkeF9jb2Fyc2UoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJz
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
ZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gZGR4X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgZGR4X2NvYXJzZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29h
cnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBkZHhfY29hcnNlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9j
b2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBkZHhfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IGRkeF9jb2Fyc2UoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGZpcnN0Yml0aGlnaCAqLwotdWludCBmaXJzdGJpdGhpZ2godWludCB4KSB7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgaWYgKCh4ICYgdWludCgxIDw8IDMwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDI5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDI4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDI3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDI2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDI1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDI0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDIzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIy
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIxKSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDEwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMCkpICE9
IDApCi0gICAgICAgIHJldHVybiAxMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTkpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMTI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE4KSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDEzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNykpICE9IDApCi0g
ICAgICAgIHJldHVybiAxNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTYpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMTU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE1KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDE2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAg
IHJldHVybiAxNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTMpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gMTg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEyKSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDE5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJldHVy
biAyMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTApKSAhPSAwKQotICAgICAgICByZXR1cm4g
MjE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjI7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjM7Ci0g
ICAgaWYgKCh4ICYgdWludCgxIDw8IDcpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjQ7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDYpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjU7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDQpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDApKSAhPSAwKQotICAgICAgICByZXR1cm4gMzE7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBm
aXJzdGJpdGhpZ2goaW50IHgpIHsKLSAgICByZXR1cm4gZmlyc3RiaXRoaWdoKHVpbnQoeCkpOwot
fQotdWludDIgZmlyc3RiaXRoaWdoKHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0
aGlnaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKHVp
bnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdo
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBmaXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZp
cnN0Yml0aGlnaCh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZp
cnN0Yml0aGlnaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDIgZmlyc3RiaXRo
aWdoKGludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJp
dGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGhpZ2goaW50MyB4KSB7Ci0gICAgdWludDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGhpZ2goaW50NCB4KSB7
Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmly
c3RiaXRoaWdoKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0aGlnaCh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmNwICovCi1mbG9hdCBy
Y3AoZmxvYXQgeCkgewotICAgIHJldHVybiAxIC8geDsKLX0KLWZsb2F0MiByY3AoZmxvYXQyIHgp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSByY3AoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyByY3Ao
ZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSByY3AoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmNwKHhbMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgcmNwKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByY3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
cmNwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJjcCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBy
Y3AoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHJjcChmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgcmNwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIHJjcChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3Ao
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IHJjcCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngzIHJjcChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBy
Y3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MyByY3AoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHJjcCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcmNwKGZsb2F0
NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByY3AoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IHJjcChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3Ao
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IHJjcChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBy
Y3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJj
cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gcmNwKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmNw
KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCByY3AoZmxvYXQ0eDQg
eCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
cmNwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IHJjcCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBy
Y3AoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IHJjcCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSByY3AoeFszXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZ3aWR0aCAqLwot
Ci1mbG9hdCBmd2lkdGgoZmxvYXQgeCkgewotICAgIHJldHVybiBhYnMoZGR4KHgpKSArIGFicyhk
ZHkoeCkpOwotfQotZmxvYXQyIGZ3aWR0aChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZ3aWR0aCh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZ3aWR0aChmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGZ3aWR0aCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmd2lkdGgoeFsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBmd2lkdGgoZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBmd2lkdGgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZndpZHRoKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGZ3aWR0aCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZndp
ZHRoKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZndpZHRoKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmd2lkdGgo
ZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
d2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lk
dGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgZndpZHRoKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZndpZHRoKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBm
d2lkdGgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZ3aWR0aChm
bG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3
aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0
aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MyBmd2lkdGgoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBmd2lkdGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBm
d2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGZ3aWR0aCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgZndpZHRoKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0
aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gZndpZHRoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZ3aWR0aCh4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZndpZHRoKGZsb2F0M3g0IHgp
IHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBm
d2lkdGgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGZ3aWR0aCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmd2lk
dGgoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZ3aWR0aChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0
aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gZndpZHRoKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
ZndpZHRoKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZ3aWR0aCh4WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbGVycCAqLwotZmxvYXQg
bGVycChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBzKSB7Ci0gICAgcmV0dXJuIHggKiAoMSAtIHMp
ICsgeSAqIHM7Ci19Ci1mbG9hdDIgbGVycChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0sIHpb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBsZXJwKGZsb2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIHopIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVswXSwgelsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gbGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBsZXJwKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgbGVycChmbG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBsZXJwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGxlcnAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGVycCh4WzJdLCB5
WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBsZXJwKHhbM10sIHlbM10sIHpbM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsZXJwKGZsb2F0MngyIHgsIGZsb2F0MngyIHks
IGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJw
KHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFsw
XVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFd
LCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbGVy
cChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MiBsZXJwKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsK
LSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5
WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1b
MF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwg
elsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBsZXJwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsZXJwKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0
MngzIHopIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1b
MF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFd
WzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0s
IHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxlcnAoZmxvYXQzeDMgeCwg
ZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
ZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJd
WzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0s
IHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsx
XVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJd
LCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbGVycChmbG9hdDR4
MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGxlcnAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJw
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsy
XVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFd
LCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsy
XSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsZXJwKHhbM11bMl0sIHlbM11bMl0sIHpbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBsZXJwKGZsb2F0Mng0IHgsIGZs
b2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVy
cCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhb
MF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5
WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1b
M10sIHpbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsZXJwKGZsb2F0
M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxl
cnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwg
eVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBd
WzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10s
IHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxlcnAoZmxvYXQ0eDQgeCwg
ZmxvYXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBs
ZXJwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAo
eFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFd
WzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0s
IHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxlcnAoeFszXVsxXSwgeVsz
XVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBdWzJd
LCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGVycCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGxlcnAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbGVycCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBsZXJwKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkaXN0YW5jZSAqLwotZmxvYXQgZGlzdGFuY2Uo
ZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiBsZW5ndGgoeCAtIHkpOwotfQotZmxvYXQg
ZGlzdGFuY2UoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7
Ci19Ci1mbG9hdCBkaXN0YW5jZShmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICByZXR1cm4gbGVu
Z3RoKHggLSB5KTsKLX0KLWZsb2F0IGRpc3RhbmNlKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAg
IHJldHVybiBsZW5ndGgoeCAtIHkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDkwYzI5OWEyZjBmOGUw
ZWM3MDZkOTFkM2NmYWNlMWM4ODA3ZDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBTdWJzdHJpbmdMb2NhdGlvbiB7
Ci0gICAgdW5zaWduZWQgc3RhcnQ7Ci0gICAgdW5zaWduZWQgZW5kOwotfTsKLQotSGFzaE1hcDxT
dHJpbmcsIFN1YnN0cmluZ0xvY2F0aW9uPiBjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAoKTsKLQotdW5zaWduZWQgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5KCk7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5
VXRpbGl0aWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNkNDMzMGQwMTkz
NjQzYWFiZTk0MGU5OWIwNTY5MDNjMTJmYTMwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUGFy
c2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFy
ZExpYnJhcnkuaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgi
Ci0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHBhbC9HdW56aXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0KLXN0YXRpYyBT
dHJpbmcgZGVjb21wcmVzc0FuZERlY29kZVN0YW5kYXJkTGlicmFyeSgpCi17Ci0gICAgYXV0byBk
ZWNvbXByZXNzZWRTdGFuZGFyZExpYnJhcnkgPSBndW56aXAoV0hMU0xTdGFuZGFyZExpYnJhcnks
IHNpemVvZihXSExTTFN0YW5kYXJkTGlicmFyeSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGRlY29tcHJlc3NlZFN0YW5kYXJkTGlicmFyeS5kYXRhKCksIGRlY29tcHJlc3NlZFN0YW5k
YXJkTGlicmFyeS5zaXplKCkpOwotfQotCi1jbGFzcyBOYW1lRmluZGVyIDogcHVibGljIFZpc2l0
b3IgewotcHVibGljOgotICAgIEhhc2hTZXQ8U3RyaW5nPiB0YWtlRnVuY3Rpb25OYW1lcygpCi0g
ICAgewotICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0OwotICAgICAgICBzdGQ6OnN3YXAo
cmVzdWx0LCBtX2Z1bmN0aW9uTmFtZXMpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHBy
ZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbk5hbWVzLmFkZChjYWxs
RXhwcmVzc2lvbi5uYW1lKCkpOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lv
bik7Ci0gICAgfQotCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fZnVuY3Rpb25OYW1lczsKLX07Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mIHBy
b2dyYW0sIFBhcnNlciYgcGFyc2VyLCBib29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdGFuZGFyZExpYnJhcnkoZGVjb21w
cmVzc0FuZERlY29kZVN0YW5kYXJkTGlicmFyeSgpKTsKLSAgICBpZiAocGFyc2VGdWxsU3RhbmRh
cmRMaWJyYXJ5KSB7Ci0gICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJv
Z3JhbSwgc3RhbmRhcmRMaWJyYXJ5LmdldCgpLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
LCBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaWYgKCFwYXJzZVJl
c3VsdCkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJv
cigpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xvY2F0aW9uPj4gc3RhbmRhcmRMaWJyYXJ5
RnVuY3Rpb25NYXAoY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKCkpOwotCi0gICAg
YXV0byBzdHJpbmdWaWV3ID0gU3RyaW5nVmlldyhzdGFuZGFyZExpYnJhcnkuZ2V0KCkpLnN1YnN0
cmluZygwLCBmaXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgYXV0
byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdHJpbmdWaWV3LCBQYXJzaW5n
TW9kZTo6U3RhbmRhcmRMaWJyYXJ5LCBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsK
LSAgICBpZiAoIXBhcnNlUmVzdWx0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocGFy
c2VSZXN1bHQuZXJyb3IoKSk7Ci0KLSAgICBOYW1lRmluZGVyIG5hbWVGaW5kZXI7Ci0gICAgbmFt
ZUZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSAgICBIYXNoU2V0PFN0cmluZz4gZnVu
Y3Rpb25OYW1lcyA9IG5hbWVGaW5kZXIudGFrZUZ1bmN0aW9uTmFtZXMoKTsKLSAgICBIYXNoU2V0
PFN0cmluZz4gYWxsRnVuY3Rpb25OYW1lczsKLSAgICAvLyBUaGUgbmFtZSBvZiBhIGNhbGwgdG8g
YSBjYXN0IG9wZXJhdG9yIGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlLCBzbyB3ZSBjYW4ndCBtYXRj
aCB0aGVtIHVwIGNvcnJlY3RseS4KLSAgICAvLyBJbnN0ZWFkLCBqdXN0IGluY2x1ZGUgYWxsIGNh
c3Rpbmcgb3BlcmF0b3JzLgotICAgIGZ1bmN0aW9uTmFtZXMuYWRkKCJvcGVyYXRvciBjYXN0Il9z
dHIpOwotICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYW4gYXV0aG9yIGNhbid0IHdy
aXRlIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUgYXMgYW55dGhpbmcgaW4gdGhl
IHN0YW5kYXJkIGxpYnJhcnkuCi0gICAgLy8gSWYgdGhleSBkbyBzbywgd2UgbmVlZCB0byBtYWtl
IHN1cmUgaXQgY29sbGlkZXMsIHNvIHdlIGluY2x1ZGUgYWxsIHBvdGVudGlhbCBkdXBsaWNhdGVz
IGhlcmUsIGFuZCB0aGUgImNoZWNrRHVwbGljYXRlRnVuY3Rpb25zIiBwYXNzIGVuZm9yY2VzIGl0
LgotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRl
ZmluaXRpb25zKCkpCi0gICAgICAgIGZ1bmN0aW9uTmFtZXMuYWRkKGZ1bmN0aW9uRGVmaW5pdGlv
bi0+bmFtZSgpKTsKLSAgICB3aGlsZSAoIWZ1bmN0aW9uTmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGF1dG8gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudCA9IHByb2dyYW0ubmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIGF1dG8gZnVuY3Rpb25EZWZp
bml0aW9uc0NvdW50ID0gcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOwotICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiBmdW5jdGlvbk5hbWVzKSB7Ci0gICAgICAgICAg
ICBpZiAoYWxsRnVuY3Rpb25OYW1lcy5jb250YWlucyhuYW1lKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5nZXQoKS5maW5kKG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IHN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmdldCgpLmVuZCgpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgYXV0byBzdHJpbmdWaWV3ID0gU3RyaW5nVmlldyhzdGFuZGFy
ZExpYnJhcnkuZ2V0KCkpLnN1YnN0cmluZyhpdGVyYXRvci0+dmFsdWUuc3RhcnQsIGl0ZXJhdG9y
LT52YWx1ZS5lbmQgLSBpdGVyYXRvci0+dmFsdWUuc3RhcnQpOwotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dMbihzdHJpbmdWaWV3KTsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBzdGFydCA9IHByb2dyYW0uZnVuY3Rpb25EZWZp
bml0aW9ucygpLnNpemUoKTsKLSAgICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIu
cGFyc2UocHJvZ3JhbSwgc3RyaW5nVmlldywgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwg
QVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNl
UmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3Vs
dC5lcnJvcigpKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKSAhPSBzdGFydCkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJub24gbmF0aXZlIHN0ZGxpYiBmdW5jdGlvbjogJyIs
IG5hbWUsICInIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbGxGdW5jdGlvbk5hbWVz
LmFkZChuYW1lKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKCA7IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zQ291bnQgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6
ZSgpOyArK25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQpCi0gICAgICAgICAgICBuYW1l
RmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMo
KVtuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50XSk7Ci0gICAgICAgIGZvciAoIDsgZnVu
Y3Rpb25EZWZpbml0aW9uc0NvdW50IDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6
ZSgpOyArK2Z1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCkKLSAgICAgICAgICAgIG5hbWVGaW5kZXIu
VmlzaXRvcjo6dmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbZnVuY3Rpb25EZWZp
bml0aW9uc0NvdW50XSk7Ci0gICAgICAgIGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VG
dW5jdGlvbk5hbWVzKCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjJmMzgyNDcxYTYwNDc4N2IwNzI0MGYzOWI2Mjc1
ZTUyMjk1YTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5
VXRpbGl0aWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotY2xhc3MgUGFyc2VyOwotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IGluY2x1ZGVTdGFuZGFyZExpYnJhcnkoUHJvZ3JhbSYsIFBhcnNlciYsIGJvb2wgcGFyc2VG
dWxsU3RhbmRhcmRMaWJyYXJ5KTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ODMyZmQxNzY0Y2Q5NmIwYmI1ZjhmNDFhODJmZTUx
OWZjMjkxMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
QmxvY2suaCIKLSNpbmNsdWRlICJXSExTTEJyZWFrLmgiCi0jaW5jbHVkZSAiV0hMU0xDb250aW51
ZS5oIgotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5o
IgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5o
IgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0j
aW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgQmVoYXZp
b3IgOiB1aW50OF90IHsKLSAgICAgICAgUmV0dXJuID0gMSA8PCAwLAotICAgICAgICBCcmVhayA9
IDEgPDwgMSwKLSAgICAgICAgQ29udGludWUgPSAxIDw8IDIsCi0gICAgICAgIEZhbGx0aHJvdWdo
ID0gMSA8PCAzLAotICAgICAgICBOb3RoaW5nID0gMSA8PCA0Ci0gICAgfTsKLQotICAgIE9wdGlv
blNldDxCZWhhdmlvcj4gdGFrZUZ1bmN0aW9uQmVoYXZpb3IoKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fc3RhY2suc2l6ZSgpID09IDEpOwotICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFz
dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6QnJlYWsgfSk7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkZhbGx0aHJvdWdoIH0pOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpDb250aW51ZSB9KTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1f
c3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OlJldHVybiB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmICho
YXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNr
LnRha2VMYXN0KCk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAg
IGIucmVtb3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpO
b3RoaW5nKTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBU
aGUgaW5pdGlhbGl6YXRpb24gYWx3YXlzIGhhcyBhIGJlaGF2aW9yIG9mIE5vdGhpbmcsIHdoaWNo
IHdlIGFscmVhZHkgYWRkIHVuY29uZGl0aW9uYWxseSBiZWxvdywKLSAgICAgICAgLy8gc28gd2Ug
Y2FuIGp1c3QgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbi4KLQotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAg
ICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlv
cjo6Q29udGludWUpOwotICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAg
IG1fc3RhY2suYXBwZW5kKGIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxv
b3AmIHdoaWxlTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dCh3aGlsZUxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAg
Yi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNv
bnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0
YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYg
c3dpdGNoQ2FzZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN3aXRj
aENhc2UpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3
aXRjaFN0YXRlbWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChzd2l0Y2hTdGF0ZW1l
bnQuc3dpdGNoQ2FzZXMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5k
KHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAg
Zm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsK
LSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLSAgICAgICAgICAg
IGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGF1
dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIHJlZHVjdGlvbiA9IHJlZHVj
dGlvbiB8IGI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlZHVjdGlvbi5jb250YWlucyhCZWhh
dmlvcjo6Tm90aGluZykpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0Y2ggc3Rh
dGVtZW50IG11c3QgZW5kIGluIGEgYnJlYWsvZmFsbHRocm91Z2gvcmV0dXJuIiwgc3dpdGNoU3Rh
dGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgcmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICByZWR1
Y3Rpb24ucmVtb3ZlKEJlaGF2aW9yOjpGYWxsdGhyb3VnaCk7Ci0gICAgICAgIHJlZHVjdGlvbi5h
ZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChyZWR1Y3Rpb24p
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Ym9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgT3B0aW9uU2V0PEJl
aGF2aW9yPiBiUHJpbWU7Ci0gICAgICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0g
ICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwot
ICAgICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgYlByaW1lID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGJQcmltZSA9IHsgQmVoYXZpb3I6Ok5vdGhpbmcgfTsKLSAgICAgICAgbV9zdGFj
ay5hcHBlbmQoYiB8IGJQcmltZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFj
ay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0
KEFTVDo6QmxvY2smIGJsb2NrKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLnN0
YXRlbWVudHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVo
YXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMTsgKytpKSB7Ci0g
ICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2ldKTsKLSAg
ICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIGlmICghYi5j
b250YWlucyhCZWhhdmlvcjo6Tm90aGluZykpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiU3RhdGVtZW50IGluc2lkZSBhbiBpbm5lciBibG9jayBtdXN0IGJlIHJlYWNoYWJsZS4i
LCBibG9jay5zdGF0ZW1lbnRzKClbaV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6
Ok5vdGhpbmcpOwotICAgICAgICAgICAgaWYgKGIuY29udGFpbnMoQmVoYXZpb3I6OkZhbGx0aHJv
dWdoKSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJGYWxsdGhyb3VnaCBtdXN0
IGJlIHRoZSBsYXN0IHN0YXRlbWVudCBpbiBhIGJsb2NrLiIsIGJsb2NrLnN0YXRlbWVudHMoKVtp
XS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZWR1Y3Rpb24gPSByZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbYmxvY2suc3RhdGVt
ZW50cygpLnNpemUoKSAtIDFdKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAg
bV9zdGFjay5hcHBlbmQocmVkdWN0aW9uIHwgYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQotCi0gICAg
VmVjdG9yPE9wdGlvblNldDxCZWhhdmlvcj4+IG1fc3RhY2s7Ci19OwotCi1FeHBlY3RlZDx2b2lk
LCBFcnJvcj4gY2hlY2tTdGF0ZW1lbnRCZWhhdmlvcihQcm9ncmFtJiBwcm9ncmFtKQotewotICAg
IFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlciBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI7Ci0gICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuVmlzaXRvcjo6dmlzaXQo
ZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tl
ci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tl
ci5yZXN1bHQoKTsKLSAgICAgICAgYXV0byBiZWhhdmlvciA9IHN0YXRlbWVudEJlaGF2aW9yQ2hl
Y2tlci50YWtlRnVuY3Rpb25CZWhhdmlvcigpOwotICAgICAgICBpZiAobWF0Y2hlcyhmdW5jdGlv
bkRlZmluaXRpb24tPnR5cGUoKSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5cGUoKSkpIHsK
LSAgICAgICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJl
aGF2aW9yOjpSZXR1cm4pOwotICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICAgICAgaWYgKGJlaGF2
aW9yICE9IE9wdGlvblNldDxTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yPigpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGVuZCBh
IHZvaWQgZnVuY3Rpb24gd2l0aCBhIGJyZWFrLCBjb250aW51ZSwgb3IgZmFsbHRocm91Z2guIikp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9IFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6OlJldHVybikKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIk5vbi12b2lkIGZ1bmN0aW9ucyBtdXN0IHJldHVybiBh
IHZhbHVlIG9uIGFsbCBjb2RlIHBhdGhzLiIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hl
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlZTAz
ZDY2NDU0ZjZjZDBjNjYzNjg4OTM5ZTFmOGZmMjdkMDg1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBl
Y3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNs
YXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1N0YXRlbWVudEJlaGF2
aW9yKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmNjOTBhMzY0MDVhMmVkMTc0ZGQzNTYzMmQ2NjlhNDk3MTI4YmYyZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgot
I2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFVu
bmFtZWRUeXBlSGFzaC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIEZpbmRBbGxUeXBlcyA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5GaW5kQWxsVHlwZXMoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5IHsgcG9pbnRlclR5cGUgfSk7
Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHBvaW50ZXJUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBtX3VubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBh
cnJheVJlZmVyZW5jZVR5cGUgfSk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5UmVmZXJl
bmNlVHlwZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlU
eXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVubmFtZWRU
eXBlS2V5IHsgYXJyYXlUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUp
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVu
dW1lcmF0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGFwcGVuZE5hbWVk
VHlwZShlbnVtZXJhdGlvbkRlZmluaXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChlbnVt
ZXJhdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgYXBwZW5kTmFtZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBWaXNpdG9y
Ojp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBhcHBlbmROYW1lZFR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsK
LSAgICAgICAgVmlzaXRvcjo6dmlzaXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICB9Ci0K
LSAgICBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiB0YWtlVW5uYW1lZFR5cGVzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBXVEZNb3ZlKG1fdW5uYW1lZFR5cGVzKTsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IHRha2VOYW1lZFR5cGVz
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fbmFtZWRUeXBlcyk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIHZvaWQgYXBwZW5kTmFtZWRUeXBlKEFTVDo6TmFtZWRUeXBlJiB0eXBl
KQotICAgIHsKLSAgICAgICAgLy8gVGhlIHdheSB3ZSB3YWxrIHRoZSBBU1QgZW5zdXJlcyB3ZSBz
aG91bGQgbmV2ZXIgdmlzaXQgYSBuYW1lZCB0eXBlIHR3aWNlLgotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX25hbWVkVHlwZXMpCi0gICAgICAgICAgICBB
U1NFUlQoJmVudHJ5LmdldCgpLnVuaWZ5Tm9kZSgpICE9ICZ0eXBlLnVuaWZ5Tm9kZSgpKTsKLSNl
bmRpZgotICAgICAgICBtX25hbWVkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgIH0KLQotICAgIEhh
c2hTZXQ8VW5uYW1lZFR5cGVLZXk+IG1fdW5uYW1lZFR5cGVzOwotICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPj4gbV9uYW1lZFR5cGVzOwotfTsKLQotRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3Jh
bSkKLXsKLSAgICBGaW5kQWxsVHlwZXMgZmluZEFsbFR5cGVzOwotICAgIGZpbmRBbGxUeXBlcy5j
aGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0gICAgYXV0byB1bm5hbWVkVHlwZXMgPSBmaW5k
QWxsVHlwZXMudGFrZVVubmFtZWRUeXBlcygpOwotICAgIGF1dG8gbmFtZWRUeXBlcyA9IGZpbmRB
bGxUeXBlcy50YWtlTmFtZWRUeXBlcygpOwotCi0gICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsK
LQotICAgIGZvciAoYXV0byYgdW5uYW1lZFR5cGVLZXkgOiB1bm5hbWVkVHlwZXMpIHsKLSAgICAg
ICAgYXV0byYgdW5uYW1lZFR5cGUgPSB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpOwotICAg
ICAgICBhdXRvIGxvY2F0aW9uID0gdW5uYW1lZFR5cGUuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAg
ICAgewotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwg
JnVubmFtZWRUeXBlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9w
dCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyks
IG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAg
ICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENv
bnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1
dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3Ry
LCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNp
bmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChX
VEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikp
OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgbmFtZWRUeXBlIDogbmFtZWRUeXBlcykgewotICAg
ICAgICBpZiAobWF0Y2hlcyhuYW1lZFR5cGUsIHByb2dyYW0uaW50cmluc2ljcygpLnZvaWRUeXBl
KCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSAm
JiBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpO
YW1lZFR5cGUmPihuYW1lZFR5cGUpKS5pc0F0b21pYygpKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgYXV0byBsb2NhdGlvbiA9IG5hbWVkVHlwZS5nZXQoKS5jb2RlTG9jYXRpb24o
KTsKLQotICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksIFN0cmluZygp
LCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBw
YXJhbWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVj
bGFyYXRpb24pKTsKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlD
b25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmli
dXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRp
b24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkp
KTsKLSAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsKLQot
ICAgICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFT
VDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0
aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpOwotICAgICAgICAgICAgaWYgKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24g
ZGVmYXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShk
ZWZhdWx0Q29uc3RydWN0b3IpKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1Y3RvciIpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXpl
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmEyMjU1MGVhMmZiZDJiYjIxNjIwZGEwMjVmODFkYWUxZDRmZGE1ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYv
RXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0
cnVjdG9ycyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDUwNzM4MjNjN2RhMWQ3YTEyN2Yz
ZDU2YmI2ZjIwNTFhOWRmZmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTeW50
aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRo
ZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGJvb2wg
aXNPcGVyYXRvciA9IHRydWU7Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24g
OiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGxvY2F0
aW9uID0gZW51bWVyYXRpb25EZWZpbml0aW9uLT5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgewot
ICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uMSA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6
VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3Ry
aW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xh
cmF0aW9uMiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlv
biwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwg
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAg
ICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAg
ICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMSkpOwotICAg
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMikp
OwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0
dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxv
Y2F0aW9uLCBwcm9ncmFtLmludHJpbnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0
ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgb3BlcmF0b3I9PSBmb3IgZW51bSB0
eXBlLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFi
bGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihs
b2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2Nh
dGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OwotICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAg
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7
Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUo
KSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNP
cGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYg
KCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUg
Y29weSBjb25zdHJ1Y3RvciBmb3IgZW51bSB0eXBlLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksICZl
bnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OwotICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAg
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7
Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9j
YXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1v
dmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFy
ZExpYnJhcnkpKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlICdvcGVyYXRvciBjYXN0JyBmb3IgZW51bSB0eXBl
LiIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1YmUxNGVjMTNiYzYwMDk0
YmZhY2QxNTY0NzdkYWNkMDgwM2E3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5
bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFZpc2l0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODBmZDUwOGM2Y2Ey
ZDI0OWNmZjA0ZTYyNjFiZmYxNWM3NjBkNzQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVk
ZSAiV0hMU0xQcm9ncmFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotdm9pZCBWaXNpdG9yOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8v
IFRoZXNlIHZpc2l0aW5nIGZ1bmN0aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRz
LCBzbyBkb24ndCB1c2UgZm9yZWFjaCBzeW50YXguCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25z
KClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRl
ZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9n
cmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkK
LXsKLSAgICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCi0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRU
eXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5u
YW1lZFR5cGUpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJh
eVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBp
ZiAoaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAg
IGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4o
bmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+
KG5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVk
VHlwZSkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5
cGVEZWZpbml0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50
eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
biYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1l
bnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQot
ewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsK
LSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9u
LmVudW1lcmF0aW9uTWVtYmVycygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVy
YXRpb25NZW1iZXIpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0
YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikp
OwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0
aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVu
dCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh0eXBlQXJndW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGVB
cmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLSAgICBpZiAodHlwZVJlZmVyZW5jZS5tYXliZVJl
c29sdmVkVHlwZSgpICYmIGlzPEFTVDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpKSB7Ci0gICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8
QVNUOjpUeXBlRGVmaW5pdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4o
cG9pbnRlclR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJl
bmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChz
dGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihhcnJheVJlZmVyZW5jZVR5cGUpKTsKLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChhcnJheVR5cGUudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICBpZiAoc3Ry
dWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN0
cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpFbnVtZXJhdGlvbk1lbWJlciYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLmF0dHJpYnV0ZUJsb2NrKCkpOwotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgZm9yIChh
dXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFy
YXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmdW5jdGlvbkRl
Y2xhcmF0aW9uLnNlbWFudGljKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlw
ZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjb25zdGFudEV4cHJlc3Npb24pOwotICAgIH0sIFsm
XShSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgewotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5jZSk7Ci0gICAgfSksIHR5cGVBcmd1bWVudCk7Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBl
KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewot
ICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpCdWlsdEluU2VtYW50aWMm
IGJ1aWx0SW5TZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYnVpbHRJblNl
bWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpSZXNvdXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFu
dGljKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZXNvdXJjZVNlbWFudGljKTsKLSAg
ICB9LCBbJl0oQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpTdGFnZUluT3V0U2Vt
YW50aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICB9KSwgc2VtYW50aWMpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17
Ci0gICAgY29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChpbnRlZ2VyTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFs
JiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJh
bCk7Ci0gICAgfSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChib29sZWFuTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFT
VDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk7Ci0g
ICAgfSkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0
dHJpYnV0ZUJsb2NrKQotewotICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRy
aWJ1dGVCbG9jaykKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uQXR0cmlidXRl
KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpCi17Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikKLXsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYp
Ci17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKQot
ewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJM
aXRlcmFsKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbC50eXBlKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYg
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbC50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZs
b2F0TGl0ZXJhbC50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Qm9vbGVh
bkxpdGVyYWwmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVy
YWxUeXBlJiBpbnRlZ2VyTGl0ZXJhbFR5cGUpCi17Ci0gICAgaWYgKGludGVnZXJMaXRlcmFsVHlw
ZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdl
ckxpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50
ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUpCi17Ci0gICAgaWYgKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLm1heWJlUmVzb2x2
ZWRUeXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKQotewotICAgIGlm
IChmbG9hdExpdGVyYWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChmbG9hdExpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikKLXsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJp
YnV0ZSkKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0g
ICAgfSksIGZ1bmN0aW9uQXR0cmlidXRlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpCbG9jayYgYmxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9j
ay5zdGF0ZW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3RhdGVtZW50TGlz
dCkKLXsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IHN0YXRlbWVudExpc3Quc3RhdGVtZW50
cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGVtZW50KTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQotewotICAgIHN3aXRjaCAo
c3RhdGVtZW50LmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJsb2Nr
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3RhdGVt
ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJy
ZWFrOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3Rh
dGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6
OkNvbnRpbnVlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb250
aW51ZT4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1l
bnQ6OktpbmQ6OkRvV2hpbGVMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb246Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQ+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpGYWxsdGhyb3VnaDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6U3RhdGVtZW50OjpLaW5kOjpGb3JMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6SWY6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6UmV0dXJuOgotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTdGF0ZW1lbnRMaXN0Ogot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0Pihz
dGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2lu
ZDo6U3dpdGNoQ2FzZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpT
dGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM6Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6V2hpbGVMb29wOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCcmVhayYpCi17Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpDb250aW51ZSYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29w
LmNvbmRpdGlvbmFsKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbikKLXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29s
ZWFuTGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9v
bGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6
OkV4cHJlc3Npb246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5j
ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VF
eHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHBy
ZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpMb2dpY2FsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dp
Y2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJl
ZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
RG90OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24p
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkluZGV4
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Np
b24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4
cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihkb3RF
eHByZXNzaW9uKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSYgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24mPihpbmRleEV4cHJlc3Npb24pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZXhwcmVzc2lvbi5iYXNlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5lZmZlY3RmdWxFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RmFsbHRocm91Z2gmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Rm9yTG9v
cCYgZm9yTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5pbml0aWFsaXph
dGlvbigpKTsKLSAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCpmb3JMb29wLmNvbmRpdGlvbigpKTsKLSAgICBpZiAoZm9yTG9vcC5pbmNyZW1l
bnQoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQot
ewotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZh
bHVlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqc3dpdGNoQ2FzZS52YWx1ZSgpKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgZm9y
IChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCkKLXsKLSAgICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbi5nZXQoKSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYg
KHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
KnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlv
bi5zZW1hbnRpYygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFy
YXRpb24uc2VtYW50aWMoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6
ZXIoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4
cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChh
c3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFy
Z3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChhcmd1bWVudCk7Ci0gICAgaWYgKGNhbGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBl
KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY2FsbEV4cHJlc3Npb24uY2FzdFJldHVy
blR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24m
IGNvbW1hRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4
cHJlc3Npb24ubGlzdCgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRl
cmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVu
Y2VFeHByZXNzaW9uLnBvaW50ZXIoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpM
b2dpY2FsRXhwcmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6TG9naWNhbE5vdEV4cHJlc3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQotewotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lv
bikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRW
YWx1ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkp
OwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1Zh
bHVlRXhwcmVzc2lvbigpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLX0K
LQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikKLXsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTU3YzI1NTkxZjY0MWFlNGJkNzZhY2I1Mjc0ZjliNjhhZDdkNmNmNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBUeXBlRGVmaW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRp
b247Ci1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRp
b247Ci1jbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURl
Y2xhcmF0aW9uOwotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLWNsYXNzIFBvaW50ZXJUeXBlOwotY2xh
c3MgQXJyYXlSZWZlcmVuY2VUeXBlOwotY2xhc3MgQXJyYXlUeXBlOwotY2xhc3MgU3RydWN0dXJl
RWxlbWVudDsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotY2xhc3MgRnVuY3Rpb25EZWNsYXJh
dGlvbjsKLWNsYXNzIFJlZmVyZW5jZVR5cGU7Ci1jbGFzcyBDb25zdGFudEV4cHJlc3Npb247Ci1j
bGFzcyBCdWlsdEluU2VtYW50aWM7Ci1jbGFzcyBSZXNvdXJjZVNlbWFudGljOwotY2xhc3MgU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOwotY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljOwot
Y2xhc3MgSW50ZWdlckxpdGVyYWw7Ci1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsOwotY2xh
c3MgRmxvYXRMaXRlcmFsOwotY2xhc3MgQm9vbGVhbkxpdGVyYWw7Ci1jbGFzcyBFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWw7Ci1jbGFzcyBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU7Ci1jbGFz
cyBCbG9jazsKLWNsYXNzIFN0YXRlbWVudExpc3Q7Ci1jbGFzcyBTdGF0ZW1lbnQ7Ci1jbGFzcyBC
cmVhazsKLWNsYXNzIENvbnRpbnVlOwotY2xhc3MgRG9XaGlsZUxvb3A7Ci1jbGFzcyBFeHByZXNz
aW9uOwotY2xhc3MgRG90RXhwcmVzc2lvbjsKLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
OwotY2xhc3MgSW5kZXhFeHByZXNzaW9uOwotY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
OwotY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDsKLWNsYXNzIEZhbGx0aHJvdWdo
OwotY2xhc3MgRm9yTG9vcDsKLWNsYXNzIElmU3RhdGVtZW50OwotY2xhc3MgUmV0dXJuOwotY2xh
c3MgU3dpdGNoQ2FzZTsKLWNsYXNzIFN3aXRjaFN0YXRlbWVudDsKLWNsYXNzIFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50OwotY2xhc3MgV2hpbGVMb29wOwotY2xhc3MgVmFyaWFibGVEZWNs
YXJhdGlvbjsKLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uOwotY2xhc3MgQ2FsbEV4cHJlc3Np
b247Ci1jbGFzcyBDb21tYUV4cHJlc3Npb247Ci1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb247
Ci1jbGFzcyBMb2dpY2FsRXhwcmVzc2lvbjsKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uOwot
Y2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjsKLWNsYXNzIE1ha2VQb2ludGVyRXhw
cmVzc2lvbjsKLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb247Ci1jbGFzcyBUZXJuYXJ5
RXhwcmVzc2lvbjsKLWNsYXNzIFZhcmlhYmxlUmVmZXJlbmNlOwotY2xhc3MgVW5uYW1lZFR5cGU7
Ci1jbGFzcyBOYW1lZFR5cGU7Ci0KLX0KLQotY2xhc3MgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+VmlzaXRvcigpID0gZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTcxIEFkZCBhIHdheSB0byB2aXNpdCBh
IGNvbnN0IFByb2dyYW0KLQotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpOYW1lZFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBl
RGVmaW5pdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJy
YXlUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OlJlZmVyZW5jZVR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTZW1h
bnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkludGVnZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0
ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpCbG9jayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVu
dExpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkNvbnRpbnVlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3Am
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6SW5kZXhFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OkZhbGx0aHJvdWdoJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6UmV0dXJuJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dp
dGNoQ2FzZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpDb21tYUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhw
cmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVz
c2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJik7Ci0KLSAg
ICBib29sIGhhc0Vycm9yKCkgY29uc3QgeyByZXR1cm4gIW1fZXhwZWN0ZWRFcnJvcjsgfQotICAg
IEV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXN1bHQoKSB7IHJldHVybiBtX2V4cGVjdGVkRXJyb3I7
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KFQm
IHgpCi0gICAgewotICAgICAgICBpZiAoIWhhc0Vycm9yKCkpCi0gICAgICAgICAgICB2aXNpdCh4
KTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHNldEVycm9yKEVycm9yIGVycm9yKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFoYXNFcnJvcigpKTsKLSAgICAgICAgbV9leHBlY3RlZEVy
cm9yID0gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBFeHBl
Y3RlZDx2b2lkLCBFcnJvcj4gbV9leHBlY3RlZEVycm9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZDU4OWNhZjc2NzIxMTliOGE1NDU4YmI1N2EzYmRl
ZDZhZWU0ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNp
bmNsdWRlICJKU1dlYkdQVUFkYXB0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8
V2ViR1BVPiBXZWJHUFU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVKTsKLX0KLQotdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYg
ZGVmZXJyZWQpIGNvbnN0Ci17Ci0gICAgYXV0byBhZGFwdGVyID0gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKFdURk1vdmUob3B0aW9ucykpOwotICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4YjA1MjQwZDAwNmIzYzQyNGI0OTA2N2MyM2UxNDkzY2FiZDIzMDgxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIklETFR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BV
QWRhcHRlcjsKLQotc3RydWN0IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9uczsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJH
UFUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYkdQVT4gY3JlYXRlKCk7Ci0KLSAgICB1c2luZyBXZWJHUFVBZGFwdGVyUHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+OwotCi0gICAgdm9p
ZCByZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4m
JiwgV2ViR1BVQWRhcHRlclByb21pc2UmJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BV
KCkgPSBkZWZhdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmUyNWQ4NmEyY2EyNDg5ZGIxMzI0M2IzYzY3
NTIwYWRkMDk4ZTdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFj
ZU5hbWU9R1BVLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFUgewotICAg
IFByb21pc2U8V2ViR1BVQWRhcHRlcj4gcmVxdWVzdEFkYXB0ZXIob3B0aW9uYWwgR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJiNmY5OTRmYjIwMzU0YjNlYTk4OTMyMzdkY2MxMTExYjZlZWIxNGYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVEZXZpY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKHN0ZDo6b3B0
aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR1BVQWRhcHRlcihXVEZNb3ZlKG9wdGlvbnMpKSk7Ci19Ci0KLVdl
YkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnM+JiYgb3B0aW9ucykKLSAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQot
ewotfQotCi12b2lkIFdlYkdQVUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBEZXZpY2VSZXF1ZXN0UHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Ci17Ci0gICAgZG9jdW1l
bnQucG9zdFRhc2soW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKGF1dG8gZGV2aWNlID0gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29u
dGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSkpIHsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKCpkZXZpY2UpOwotCi0gICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUoZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3MTljZWQ0NjI0MmZhOGE0MTcxYjdlM2Y4NTgxY2VhZTQ2ZTU5NmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIklETFR5cGVz
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBXZWJHUFVEZXZp
Y2U7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJl
ZDsKLQotY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0
ZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7Ci0KLSAgICB1c2luZyBEZXZp
Y2VSZXF1ZXN0UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BV
RGV2aWNlPj47Ci0gICAgdm9pZCByZXF1ZXN0RGV2aWNlKERvY3VtZW50JiwgRGV2aWNlUmVxdWVz
dFByb21pc2UmJikgY29uc3Q7Ci0gICAgCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1
ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucz4gbV9vcHRpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ2NjFhYjAwNjQzOTBkOWZmYTkyMTQ2YmY5YTE5MDY1NzI4OGMzNDAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQWRhcHRlciwKLSAg
ICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQWRhcHRlciB7Ci0gICAgLy8gcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0
ZSBXZWJHUFVFeHRlbnNpb25zIGV4dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRl
IFdlYkdQVUxpbWl0cyBsaW1pdHM7IERvbid0IGV4cG9zZSBoaWdoZXIgbGltaXRzIGZvciBub3cu
Ci0KLSAgICAvLyBNYXkgcmVqZWN0IHdpdGggRE9NRXhjZXB0aW9uICAvLyBUT0RPOiBET01FeGNl
cHRpb24oIk9wZXJhdGlvbkVycm9yIik/Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNl
PFdlYkdQVURldmljZT4gcmVxdWVzdERldmljZSgvKkdQVURldmljZURlc2NyaXB0b3IgZGVzY3Jp
cHRvciovKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ4ZmUxZGYxNjNm
YzU1YWNiY2M1MWE3NDIwOTA2ZjJkYzE2NGY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJpbmRH
cm91cD4gV2ViR1BVQmluZEdyb3VwOjpjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5k
R3JvdXApCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQmluZEdyb3VwKFdURk1v
dmUoYmluZEdyb3VwKSkpOwotfQotCi1XZWJHUFVCaW5kR3JvdXA6OldlYkdQVUJpbmRHcm91cChS
ZWZQdHI8R1BVQmluZEdyb3VwPiYmIGJpbmRHcm91cCkKLSAgICA6IG1fYmluZEdyb3VwKFdURk1v
dmUoYmluZEdyb3VwKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzI1ZmIyYWVm
NTU0MWIwMzRkMmQ5MWU1YTY3MWM1YzI2ZmE3MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdy
b3VwLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQmluZEdyb3VwIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVQmluZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJHUFVCaW5kR3JvdXA+IGNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwPiYmKTsKLQotICAg
IEdQVUJpbmRHcm91cCogYmluZEdyb3VwKCkgeyByZXR1cm4gbV9iaW5kR3JvdXAuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVCaW5kR3JvdXAoUmVmUHRyPEdQVUJpbmRH
cm91cD4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwPiBtX2JpbmRHcm91cDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc5MzAyOTQ4YjQ1M2IzZWU3Zjk1NmM2NGFmMzhi
NGZjOTBlOWQ0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJ
bnRlcmZhY2VOYW1lPUdQVUJpbmRHcm91cCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZh
Y2UgV2ViR1BVQmluZEdyb3VwIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ3ODAwMTAzYzlhN2UzNWY0NzYyNjY1MzFmNTEyYThjYmU3OWZiM2EuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJH
UFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIFdlYkdQVUJpbmRp
bmdSZXNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPFdlYkdQVVNhbXBsZXI+LCBSZWZQdHI8V2ViR1BV
VGV4dHVyZVZpZXc+LCBXZWJHUFVCdWZmZXJCaW5kaW5nPjsKLQotc3RydWN0IFdlYkdQVUJpbmRH
cm91cEJpbmRpbmcgewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAgV2ViR1BVQmluZGluZ1Jl
c291cmNlIHJlc291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDg0ZjZhZWVmODM5MzlhYTUyMzUwZDljMDlhOWMwNWRjZmU5YzM1NmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgKFdlYkdQVVNhbXBsZXIg
b3IgV2ViR1BVVGV4dHVyZVZpZXcgb3IgV2ViR1BVQnVmZmVyQmluZGluZykgV2ViR1BVQmluZGlu
Z1Jlc291cmNlOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVQmluZEdyb3VwQmluZGluZyB7Ci0gICAg
cmVxdWlyZWQgdTMyIGJpbmRpbmc7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQmluZGluZ1Jlc291cmNl
IHJlc291cmNlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDI5YzhlZDkzYTE4MDRjMDk4Nzk3MWE5ZTdmYjEyYTZhMzUxNzY5NGQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1
ZmZlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBib29sIHZhbGlkYXRlQnVmZmVyQmluZGlu
Z1R5cGUoY29uc3QgR1BVQnVmZmVyKiBidWZmZXIsIGNvbnN0IEdQVUJpbmRHcm91cExheW91dEJp
bmRpbmcmIGJpbmRpbmcsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBM
T0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0g
ICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpIHsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlm
b3JtQnVmZmVyOgotICAgICAgICBpZiAoIWJ1ZmZlci0+aXNVbmlmb3JtKCkpIHsKLSAgICAgICAg
ICAgIExPRyhXZWJHUFUsICIlczogR1BVQnVmZmVyIHJlc291cmNlIGZvciBiaW5kaW5nICV1IGRv
ZXMgbm90IGhhdmUgVU5JRk9STSB1c2FnZSEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGlu
Zyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAg
aWYgKCFidWZmZXItPmlzU3RvcmFnZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IEdQVUJ1ZmZlciByZXNvdXJjZSBmb3IgYmluZGluZyAldSBkb2VzIG5vdCBoYXZlIFNUT1JBR0Ug
dXNhZ2UhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTGF5b3V0IGJpbmRpbmcgJXUgaXMgbm90IGEgYnVm
ZmVyLXR5cGUgcmVzb3VyY2UhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91
cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRH
cm91cERlc2NyaXB0b3IoKSBjb25zdAotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9u
TmFtZSA9ICJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCgpIjsKLQotICAgIGlmICghbGF5b3V0
IHx8ICFsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogSW52YWxpZCBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBpZiAoYmluZGluZ3Muc2l6ZSgpICE9
IGxheW91dC0+YmluZEdyb3VwTGF5b3V0KCktPmJpbmRpbmdzTWFwKCkuc2l6ZSgpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICIlczogTWlzbWF0Y2hlZCBudW1iZXIgb2YgR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZ3MgYW5kIEdQVUJpbmRHcm91cEJpbmRpbmdzISIsIGZ1bmN0aW9uTmFtZSk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBsYXlvdXRNYXAg
PSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpOwotCi0gICAgVmVjdG9y
PEdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRHcm91cEJpbmRpbmdzOwotICAgIGJpbmRHcm91cEJp
bmRpbmdzLnJlc2VydmVDYXBhY2l0eShiaW5kaW5ncy5zaXplKCkpOwotCi0gICAgZm9yIChjb25z
dCBhdXRvJiBiaW5kaW5nIDogYmluZGluZ3MpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IGxh
eW91dE1hcC5maW5kKGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBs
YXlvdXRNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQmluZEdy
b3VwTGF5b3V0QmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1
bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBhdXRvIGxheW91dEJpbmRpbmcgPSBp
dGVyYXRvci0+dmFsdWU7Ci0KLSAgICAgICAgYXV0byBiaW5kaW5nUmVzb3VyY2VWaXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBSZWZQdHI8V2ViR1BVU2FtcGxlcj4mIHNhbXBsZXIp
IC0+IHN0ZDo6b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAgICBpZiAo
IXNhbXBsZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgIGF1dG8gZ3B1U2FtcGxlciA9IHNhbXBsZXItPnNhbXBsZXIoKTsKLSAgICAgICAgICAgIGlm
ICghZ3B1U2FtcGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVm
KCpncHVTYW1wbGVyKSk7Ci0gICAgICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVUZXh0dXJl
Vmlldz4mIHZpZXcpIC0+IHN0ZDo6b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAg
ICAgICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IHZpZXctPnRleHR1cmUoKTsKLSAgICAgICAgICAg
IGlmICghdGV4dHVyZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVm
KCp0ZXh0dXJlKSk7Ci0gICAgICAgIH0sIFsmbGF5b3V0QmluZGluZywgZnVuY3Rpb25OYW1lXSAo
V2ViR1BVQnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJp
bmRpbmdSZXNvdXJjZT4gewotICAgICAgICAgICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
ICAgICBpZiAoIXZhbGlkYXRlQnVmZmVyQmluZGluZ1R5cGUoYnVmZmVyLCBsYXlvdXRCaW5kaW5n
LmV4dGVybmFsQmluZGluZywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGlu
Z1Jlc291cmNlPihHUFVCdWZmZXJCaW5kaW5nIHsgbWFrZVJlZigqYnVmZmVyKSwgYnVmZmVyQmlu
ZGluZy5vZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgYXV0byBiaW5kaW5nUmVzb3VyY2UgPSBXVEY6OnZpc2l0KGJpbmRpbmdSZXNvdXJjZVZpc2l0
b3IsIGJpbmRpbmcucmVzb3VyY2UpOwotICAgICAgICBpZiAoIWJpbmRpbmdSZXNvdXJjZSkgewot
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHJlc291cmNlIGZvciBiaW5kaW5n
ICV1ISIsIGZ1bmN0aW9uTmFtZSwgbGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcuYmluZGlu
Zyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYmluZEdyb3VwQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKEdQVUJpbmRHcm91cEJpbmRpbmcg
eyBiaW5kaW5nLmJpbmRpbmcsIFdURk1vdmUoYmluZGluZ1Jlc291cmNlLnZhbHVlKCkpIH0pOwot
ICAgIH0KLQotICAgIHJldHVybiBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsgbWFrZVJlZigqbGF5
b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSksIFdURk1vdmUoYmluZEdyb3VwQmluZGluZ3MpIH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjUyMTA4ZTA1
ZWU3Y2RlNzVkNzU3MDVlZmQ0ZDYxYTdhZTUyMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IldlYkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlv
dXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwot
Ci1zdHJ1Y3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRpb25hbDxH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCkg
Y29uc3Q7Ci0KLSAgICBSZWZQdHI8Y29uc3QgV2ViR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7
Ci0gICAgVmVjdG9yPFdlYkdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNzVjNjMyNTkwMDI5
OTFhMTY2ZGE1MDBlZDIyYjc0Zjg1YTVhNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5
IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVUJpbmRHcm91
cExheW91dCBsYXlvdXQ7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8V2ViR1BVQmluZEdyb3VwQmlu
ZGluZz4gYmluZGluZ3M7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQzZDJmODc5MDE0ZTU2M2RmOTE1MzYwNWJiMGUzMDVmNjNmZDE3NTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVUJpbmRHcm91
cExheW91dDo6Y3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJpbmRHcm91cExheW91dChXVEZNb3ZlKGxh
eW91dCkpKTsKLX0KLQotV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpXZWJHUFVCaW5kR3JvdXBMYXlv
dXQoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX2JpbmRHcm91
cExheW91dChXVEZNb3ZlKGxheW91dCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NWNjNWE3NTEyYmMwN2FhNWI5NTI4NjA3YWYyY2Q4NDFhOTIyMDAzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFdlYkdQVUJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVUJpbmRHcm91cExheW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQmlu
ZEdyb3VwTGF5b3V0PiBjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJik7Ci0KLSAg
ICBjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQqIGJpbmRHcm91cExheW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmluZEdyb3VwTGF5b3V0LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
V2ViR1BVQmluZEdyb3VwTGF5b3V0KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYpOwotCi0g
ICAgUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gbV9iaW5kR3JvdXBMYXlvdXQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91
dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZTNlMjRmMTJhM2FlODFhZGNl
Y2M1ZTVlMThmMGJhNzhiMTI3ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVCaW5kR3JvdXBMYXlvdXQsCi0gICAgRXhw
b3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUJpbmRHcm91cExheW91dCB7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNjYyNjQ5NDE4YjQ2OGRiNGYwOTMwMjg2YjcxYjIzYzIz
OTc3YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVC
dWZmZXI+JiYgYnVmZmVyLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZXJyb3JTY29w
ZXMpKTsKLX0KLQotV2ViR1BVQnVmZmVyOjpXZWJHUFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4m
JiBidWZmZXIsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLSAgICA6IEdQVU9iamVjdEJh
c2UobWFrZVJlZihlcnJvclNjb3BlcykpCi0gICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
Ci17Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjptYXBSZWFkQXN5bmMoQnVmZmVyTWFwcGluZ1By
b21pc2UmJiBwcm9taXNlKQotewotICAgIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJhY2so
V1RGTW92ZShwcm9taXNlKSwgdHJ1ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjptYXBXcml0
ZUFzeW5jKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJl
Z2lzdGVyUHJvbWlzZUNhbGxiYWNrKFdURk1vdmUocHJvbWlzZSksIGZhbHNlKTsKLX0KLQotdm9p
ZCBXZWJHUFVCdWZmZXI6OnVubWFwKCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJl
Zml4KCJHUFVCdWZmZXIudW5tYXAoKTogIik7Ci0KLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAg
ICBlcnJvclNjb3BlcygpLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb246
IGludmFsaWQgR1BVQnVmZmVyISIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPnVubWFw
KCZlcnJvclNjb3BlcygpKTsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6OmRlc3Ryb3koKQotewot
ICAgIGVycm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgoIkdQVUJ1ZmZlci5kZXN0cm95KCk6ICIp
OwotCi0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIpOwotICAgIGVsc2UgewotICAgICAgICBt
X2J1ZmZlci0+ZGVzdHJveSgmZXJyb3JTY29wZXMoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVs
bHB0cjsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjpyZWplY3RPclJlZ2lzdGVyUHJv
bWlzZUNhbGxiYWNrKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYgcHJvbWlzZSwgYm9vbCBpc1JlYWQp
Ci17Ci0gICAgZXJyb3JTY29wZXMoKS5zZXRFcnJvclByZWZpeChtYWtlU3RyaW5nKCJHUFVCdWZm
ZXIubWFwIiwgaXNSZWFkID8gIlJlYWQiIDogIldyaXRlIiwgIkFzeW5jKCk6ICIpKTsKLQotICAg
IGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIkludmFsaWQgb3BlcmF0aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAg
cHJvbWlzZS5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYnVmZmVy
LT5yZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBy
b3RlY3RlZEVycm9yU2NvcGVzID0gbWFrZVJlZihlcnJvclNjb3BlcygpKV0gKEpTQzo6QXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGFycmF5QnVmZmVyKQot
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCphcnJheUJ1ZmZlcik7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgLy8gRklYTUU6IEl0J3MgcG9zc2libGUgdG8gaGl0IHRoaXMgY29kZSBw
YXRoIGluIHJlc3BvbnNlIHRvIGFuIHVubWFwIGNhbGwsIHdoZXJlCi0gICAgICAgICAgICAvLyB0
aGUgQXJyYXlCdWZmZXIgd2lsbCBkZWZpbml0ZWx5IGJlIG51bGwsIGFuZCB0aHVzIGFuIG91dCBv
ZiBtZW1vcnkgZXJyb3IgbWFrZXMgbm8gc2Vuc2UuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTY2Ci0gICAgICAgICAgICBwcm90ZWN0
ZWRFcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVt
b3J5KTsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICB9LCBp
c1JlYWQsIGVycm9yU2NvcGVzKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJlZWUyMDkyYTNk
ZWRmN2I3MzUyNmQ5ZWQ4YTMyOTIzYWVmNGI3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIK
LSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIK
LSNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJs
aWMgR1BVT2JqZWN0QmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWZQdHI8R1BVQnVmZmVyPiYmLCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgR1BV
QnVmZmVyKiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEdQ
VUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLQotICAg
IHVzaW5nIEJ1ZmZlck1hcHBpbmdQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVy
ZmFjZTxKU0M6OkFycmF5QnVmZmVyPj47Ci0gICAgdm9pZCBtYXBSZWFkQXN5bmMoQnVmZmVyTWFw
cGluZ1Byb21pc2UmJik7Ci0gICAgdm9pZCBtYXBXcml0ZUFzeW5jKEJ1ZmZlck1hcHBpbmdQcm9t
aXNlJiYpOwotICAgIHZvaWQgdW5tYXAoKTsKLSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJHUFVCdWZmZXIoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJy
b3JTY29wZXMmKTsKLQotICAgIHZvaWQgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhC
dWZmZXJNYXBwaW5nUHJvbWlzZSYmLCBib29sKTsKLQotICAgIFJlZlB0cjxHUFVCdWZmZXI+IG1f
YnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjBhOTBjNDExN2MxZjA0N2NjZDRj
OWUxNTQzODJlNzg1MTIzNmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0Owot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEludGVyZmFjZU5hbWU9R1BVQnVmZmVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVCdWZmZXIgewotICAgIFByb21pc2U8QXJyYXlCdWZmZXI+IG1hcFJlYWRB
c3luYygpOwotICAgIFByb21pc2U8QXJyYXlCdWZmZXI+IG1hcFdyaXRlQXN5bmMoKTsKLSAgICB1
bmRlZmluZWQgdW5tYXAoKTsKLQotICAgIHVuZGVmaW5lZCBkZXN0cm95KCk7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Q4YjhjODBmOWQwZWY4ZmZlNTRjYzA0NmY2
MDY4M2U2YzY3YTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQ
VUJ1ZmZlckJpbmRpbmcgewotICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1
aW50NjRfdCBvZmZzZXQ7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMWQ4MjZkZGY2YTBmNmViODRlOTk1ZTUyYzVhMmE1N2JjYjdm
Mzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IFdlYkdQVUJ1ZmZlckJpbmRpbmcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZlciBi
dWZmZXI7Ci0gICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgdTY0IHNpemU7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUxMDUxMTc3NmQ4N2ViNTI3
MTg3NTUyMjYwMzUzODAzOWUxZmM2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21t
YW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1XZWJHUFVDb21tYW5kQnVmZmVyOjpX
ZWJHUFVDb21tYW5kQnVmZmVyKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAg
ICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgzYTFkYTRlYTNjMDliY2Q5N2E3Yzg2ZDc2Y2ViOGIwMDliZmUz
NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIEdQ
VUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFJlZlB0cjxHUFVD
b21tYW5kQnVmZmVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1h
bmRCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFlMmYy
ZGNiY2IyYjE1NzZhMWYxOGVlM2JhNjIwMGNmNTdiZTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kQnVmZmVy
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVDb21tYW5kQnVmZmVyIHsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkM2U0N2Q3MDU2
ZTUxNmQwZDQ5NjJjYmUzYTg4ZjAwNTM5ZjVhYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29k
ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IldlYkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgot
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BV
QnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKLXsKLSAg
ICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2Vi
IEdQVSB2YWxpZGF0aW9uLgotCi0gICAgcmV0dXJuIEdQVUJ1ZmZlckNvcHlWaWV3IHsgbWFrZVJl
ZigqYnVmZmVyLT5idWZmZXIoKSksICp0aGlzIH07Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVVGV4
dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVD
b3B5VmlldygpIGNvbnN0Ci17Ci0gICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJl
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlk
IHRleHR1cmUgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICByZXR1cm4g
R1BVVGV4dHVyZUNvcHlWaWV3IHsgbWFrZVJlZigqdGV4dHVyZS0+dGV4dHVyZSgpKSwgKnRoaXMg
fTsKLX0KLQotUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6
Y3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kRW5jb2RlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0K
LQotV2ViR1BVQ29tbWFuZEVuY29kZXI6OldlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVD
b21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpCi17Ci19Ci0KLVJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFu
ZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBM
T0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcygpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2Ny
aXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURl
c2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KG51bGxwdHIpOwotCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRy
eUNyZWF0ZShtYWtlUmVmKCptX2NvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKCpncHVEZXNjcmlwdG9y
KSk7Ci0gICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShl
bmNvZGVyKSk7Ci19Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1h
bmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNzKCkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZl
cikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29t
cHV0ZVBhc3MoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAgYXV0byBlbmNv
ZGVyID0gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5k
QnVmZmVyKSk7Ci0gICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKFdU
Rk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVm
ZmVyVG9CdWZmZXIoV2ViR1BVQnVmZmVyJiBzcmMsIHVpbnQ2NF90IHNyY09mZnNldCwgV2ViR1BV
QnVmZmVyJiBkc3QsIHVpbnQ2NF90IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBp
ZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFu
ZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXNyYy5idWZmZXIoKSB8fCAhZHN0LmJ1ZmZl
cigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgR1BVQnVmZmVyISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2Nv
bW1hbmRCdWZmZXItPmNvcHlCdWZmZXJUb0J1ZmZlcihtYWtlUmVmKCpzcmMuYnVmZmVyKCkpLCBz
cmNPZmZzZXQsIG1ha2VSZWYoKmRzdC5idWZmZXIoKSksIGRzdE9mZnNldCwgc2l6ZSk7Ci19Ci0K
LXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2Vi
R1BVQnVmZmVyQ29weVZpZXcmIHNyY0J1ZmZlciwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3
JiBkc3RUZXh0dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29t
bWFuZEJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVCdWZmZXJWaWV3ID0gc3JjQnVmZmVyLnRyeUNyZWF0
ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7Ci0gICAgYXV0byBncHVUZXh0dXJlVmlldyA9IGRzdFRleHR1
cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0KLSAgICBpZiAoIWdwdUJ1ZmZlclZp
ZXcgfHwgIWdwdVRleHR1cmVWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
QWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZl
clRvVGV4dHVyZShXVEZNb3ZlKCpncHVCdWZmZXJWaWV3KSwgV1RGTW92ZSgqZ3B1VGV4dHVyZVZp
ZXcpLCBzaXplKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUsIGNvbnN0IFdl
YkdQVUJ1ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQot
ewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJH
UFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlv
biEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0g
c3JjVGV4dHVyZS50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdUJ1
ZmZlclZpZXcgPSBkc3RCdWZmZXIudHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLQotICAg
IGlmICghZ3B1VGV4dHVyZVZpZXcgfHwgIWdwdUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5k
QnVmZmVyLT5jb3B5VGV4dHVyZVRvQnVmZmVyKFdURk1vdmUoKmdwdVRleHR1cmVWaWV3KSwgV1RG
TW92ZSgqZ3B1QnVmZmVyVmlldyksIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNv
ZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNy
YywgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBkc3QsIGNvbnN0IEdQVUV4dGVudDNEJiBz
aXplKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBncHVTcmNWaWV3
ID0gc3JjLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1RHN0Vmll
dyA9IGRzdC50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1U3Jj
VmlldyB8fCAhZ3B1RHN0VmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJl
VG9UZXh0dXJlKFdURk1vdmUoKmdwdVNyY1ZpZXcpLCBXVEZNb3ZlKCpncHVEc3RWaWV3KSwgc2l6
ZSk7Ci19Ci0gICAgCi1SZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OmZpbmlzaCgpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIgfHwgbV9jb21tYW5kQnVm
ZmVyLT5pc0VuY29kaW5nUGFzcygpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21t
YW5kRW5jb2Rlcjo6ZmluaXNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICAvLyBQ
YXNzZXMgdGhlIHJlZmVyZW5jZWQgR1BVQ29tbWFuZEJ1ZmZlciB0byB0aGUgV2ViR1BVQ29tbWFu
ZEJ1ZmZlciwgaW52YWxpZGF0aW5nIHRoaXMgV2ViR1BVQ29tbWFuZEVuY29kZXIuCi0gICAgcmV0
dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIucmVsZWFzZU5v
bk51bGwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZlMTg0YTEx
NGYyZGRkZmY5MGJlMzMyOGY1ZDFlNjA3NDVjYjczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJH
UFVUZXh0dXJlOwotCi1zdHJ1Y3QgR1BVRXh0ZW50M0Q7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNv
cHlWaWV3QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3Jl
YXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+
IGJ1ZmZlcjsKLX07Ci0KLXN0cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJl
Q29weVZpZXdCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gdHJ5
Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVVGV4
dHVyZT4gdGV4dHVyZTsKLX07Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVQ29tbWFuZEVuY29kZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+
JiYpOwotCi0gICAgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBiZWdpblJlbmRlclBhc3Mo
Y29uc3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICBSZWY8V2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyPiBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9C
dWZmZXIoV2ViR1BVQnVmZmVyJiwgdWludDY0X3Qgc3JjT2Zmc2V0LCBXZWJHUFVCdWZmZXImLCB1
aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRv
VGV4dHVyZShjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVD
b3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVm
ZmVyKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlW
aWV3JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJl
KGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5Vmll
dyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGZp
bmlzaCgpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVyKFJlZlB0cjxHUFVD
b21tYW5kQnVmZmVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1h
bmRCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQy
MmUwNDg0OGQyODU0YjhmNWMxMzI0NWM0NjIxNjg4NjIyOTEzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEltcGxlbWVudGVkQXM9V2ViR1BVQnVmZmVyQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVC
dWZmZXJDb3B5VmlldyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQnVmZmVyIGJ1ZmZlcjsKLSAgICB1
NjQgb2Zmc2V0ID0gMDsKLSAgICByZXF1aXJlZCB1MzIgcm93UGl0Y2g7Ci0gICAgcmVxdWlyZWQg
dTMyIGltYWdlSGVpZ2h0OwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVD
b3B5VmlldwotXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVDb3B5VmlldyB7Ci0gICAgcmVxdWlyZWQg
V2ViR1BVVGV4dHVyZSB0ZXh0dXJlOwotICAgIHUzMiBtaXBMZXZlbCA9IDA7Ci0gICAgdTMyIGFy
cmF5TGF5ZXIgPSAwOwotICAgIEdQVU9yaWdpbjNEIG9yaWdpbjsgLy8ge3g6IDAsIHk6IDAsIHo6
IDB9Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNl
TmFtZT1HUFVDb21tYW5kRW5jb2RlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2Ug
V2ViR1BVQ29tbWFuZEVuY29kZXIgewotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2lu
UmVuZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBX
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcygpOwotCi0gICAgdW5kZWZp
bmVkIGNvcHlCdWZmZXJUb0J1ZmZlcigKLSAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKLSAgICAg
ICAgdTY0IHNyY09mZnNldCwKLSAgICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKLSAgICAgICAgdTY0
IGRzdE9mZnNldCwKLSAgICAgICAgdTY0IHNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlCdWZm
ZXJUb1RleHR1cmUoCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAg
R1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5
U2l6ZSk7Ci0KLSAgICB1bmRlZmluZWQgY29weVRleHR1cmVUb0J1ZmZlcigKLSAgICAgICAgR1BV
VGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BVQnVmZmVyQ29weVZpZXcgZGVzdGlu
YXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKLQotICAgIHVuZGVmaW5lZCBj
b3B5VGV4dHVyZVRvVGV4dHVyZSgKLSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwK
LSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRl
bnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGZpbmlzaCgpOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZhNzg4
Yzg2YmM5MWI4YjA3M2E2ZDViM2Q1NTE1NzcyNzIzY2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGlu
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXI+IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFz
c0VuY29kZXI+JiYgZW5jb2RlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwotfQotCi1XZWJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OldlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8R1BVQ29tcHV0ZVBh
c3NFbmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBtX3Bhc3NFbmNvZGVyIHsgV1RGTW92ZShlbmNv
ZGVyKSB9Ci17Ci19Ci0KLXZvaWQgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGlu
ZShjb25zdCBXZWJHUFVDb21wdXRlUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9w
YXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
OjpzZXRQaXBlbGluZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoIXBpcGVsaW5lLmNvbXB1dGVQaXBlbGluZSgpKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQg
cGlwZWxpbmUhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+
c2V0UGlwZWxpbmUobWFrZVJlZigqcGlwZWxpbmUuY29tcHV0ZVBpcGVsaW5lKCkpKTsKLX0KLQot
dm9pZCBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2ln
bmVkIHksIHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IEludmFsaWQg
b3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0gICAgbV9wYXNzRW5jb2Rlci0+ZGlzcGF0Y2goeCwgeSwg
eik7Ci19Ci0KLUdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OnBhc3NFbmNvZGVyKCkKLXsKLSAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsK
LX0KLQotY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlcjo6cGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVy
LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFl
ZGMxMmUyZmMzMjhkOWE5NzYxOGI1YzkwZTM1MzliZjQzZTc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGFzc0Vu
Y29kZXI7Ci1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVUNv
bXB1dGVQaXBlbGluZTsKLQotY2xhc3MgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGlj
IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21wdXRlUGFzc0Vu
Y29kZXI+JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVDb21wdXRlUGlw
ZWxpbmUmKTsKLSAgICB2b2lkIGRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2ln
bmVkIHopOwotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWZQdHI8
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiYmKTsKLQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyKiBwYXNzRW5jb2RlcigpIGZpbmFsOwotICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKiBwYXNzRW5jb2RlcigpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0NmM5NDg3Y2QxNjYyOTM4ODRiYWRlOTRiNTMwOTZi
MDYwYjhjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgSW50ZXJmYWNlTmFtZT1HUFVDb21wdXRlUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQ
YXNzRW5jb2RlciA6IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICB1bmRlZmlu
ZWQgc2V0UGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKTsKLSAgICB1bmRl
ZmluZWQgZGlzcGF0Y2godTMyIHgsIHUzMiB5LCB1MzIgeik7Ci0KLSAgICAvLyBUT0RPIGFkZCBt
aXNzaW5nIGNvbW1hbmRzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwZmZhMjgwYjljZThkNzQ2MThhNjgwNzI5Y2E2ODA1MDgxNjAzODYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNp
bmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNs
dWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lOjpjcmVhdGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVDb21wdXRl
UGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BV
UGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVUNvbXB1dGVQaXBlbGluZShkZXZpY2UsIFdURk1vdmUocGlwZWxpbmUp
LCBlcnJvclNjb3BlcywgV1RGTW92ZShjb21wdXRlU2hhZGVyKSkpOwotfQotCi1XZWJHUFVDb21w
dXRlUGlwZWxpbmU6OldlYkdQVUNvbXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwg
UmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpCi0g
ICAgOiBXZWJHUFVQaXBlbGluZShkZXZpY2UsIGVycm9yU2NvcGVzKQotICAgICwgbV9jb21wdXRl
UGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX2NvbXB1dGVTaGFkZXIoV1RGTW92
ZShjb21wdXRlU2hhZGVyKSkKLXsKLX0KLQotV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjp+V2ViR1BV
Q29tcHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZTo6Y2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAg
IGlmIChtX2NvbXB1dGVTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNvbXB1
dGVTb3VyY2UgPSBtX2NvbXB1dGVTaGFkZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgbV9j
b21wdXRlU2hhZGVyLm1vZHVsZSA9IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRl
ck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyBjb21wdXRlU291cmNlIH0pLCBj
b21wdXRlU291cmNlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBXZWJHUFVDb21wdXRlUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBX
ZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAobV9jb21wdXRlUGlwZWxpbmUgJiYgbV9j
b21wdXRlU2hhZGVyLm1vZHVsZSkgewotICAgICAgICBpZiAoYXV0byogZ3B1Q29tcHV0ZVNoYWRl
ck1vZHVsZSA9IG1fY29tcHV0ZVNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKSB7Ci0gICAgICAgICAg
ICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlKG1ha2VSZWYoKmdw
dUNvbXB1dGVTaGFkZXJNb2R1bGUpLCB7IG1fY29tcHV0ZVNoYWRlci5lbnRyeVBvaW50IH0pOwot
ICAgICAgICAgICAgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lLT5yZWNvbXBpbGUoZGV2aWNlLmRl
dmljZSgpLCBXVEZNb3ZlKGNvbXB1dGVTdGFnZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDcx
MzUyZTI4MmE0YmVkODlkNmQ4N2FiODJiYmUwZDlkODgwNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIEdQVVBpcGVs
aW5lOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBX
ZWJHUFVTaGFkZXJNb2R1bGU7Ci0KLWNsYXNzIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBmaW5hbCA6
IHB1YmxpYyBXZWJHUFVQaXBlbGluZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVQ29t
cHV0ZVBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4g
Y3JlYXRlKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYsIEdQVUVy
cm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBjb21wdXRlU2hhZGVyKTsK
LQotICAgIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0K
LSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlUGlwZWxpbmUoKTsgfQot
ICAgIGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZSogY29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjb21wdXRlU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlU2hhZGVyLm1v
ZHVsZTsgfQotCi0gICAgYm9vbCBjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNl
Jik7Ci0gICAgYm9vbCByZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVDb21w
dXRlUGlwZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRh
dGEmJiBjb21wdXRlU2hhZGVyKTsKLQotICAgIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IG1f
Y29tcHV0ZVBpcGVsaW5lOwotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJl
Y29tcGlsYXRpb24uCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgbV9jb21wdXRlU2hh
ZGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dFQkdQVVBJUEVMSU5FKFdlYkNvcmU6OldlYkdQVUNvbXB1dGVQaXBlbGluZSwgaXNDb21w
dXRlUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhMmNlMmY0MjljNzU2YmM5YmJkMGY4ZDc5
YjJiMzNiYzZjNDAwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVDb21wdXRl
UGlwZWxpbmUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbXB1dGVQ
aXBlbGluZSB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDhkYjdkMzU4OGI3ZjFhZjgyMDMwYjQ5YTg1MTExMDgxZjkx
YjM1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0
byBwaXBlbGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxh
eW91dCgpKSA6IG51bGxwdHI7Ci0KLSAgICBhdXRvIGNvbXB1dGUgPSBjb21wdXRlU3RhZ2UudHJ5
Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFjb21wdXRl
KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIkdQVURldmljZTo6Y3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKCk6IEludmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZShwaXBlbGluZUxheW91dCksIFdU
Rk1vdmUoKmNvbXB1dGUpIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYjdlZjM2OTQyYTJhOTZiNjk3YjA0ODZiYjg1NWUwMGUz
ZjNlOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQot
c3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgc3RkOjpvcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAg
ICBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYxYmM2NzNjOTVlMjgyMmI1ZWViNmVkYzMxYWZmZDhmNjZiMzgxMWIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBX
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZWJlNzNmNTdjMDZjMWNkMDAyZGI1NTkzNTVkOGNkMzc2ZmJmMjQ5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVE
ZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVC
dWZmZXJCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIK
LSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxp
bmUuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIgotI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1
ZmZlclNvdXJjZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVk
ZSAiSlNHUFVPdXRPZk1lbW9yeUVycm9yLmgiCi0jaW5jbHVkZSAiSlNHUFVWYWxpZGF0aW9uRXJy
b3IuaCIKLSNpbmNsdWRlICJKU1dlYkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRp
bmcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgotI2luY2x1ZGUgIldlYkdQ
VUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVBp
cGVsaW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiV2ViR1BVUXVldWUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgot
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldl
YkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRl
ICJXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENo
YWluLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR1BVRGV2aWNlKTsKLQotTG9jayBXZWJH
UFVEZXZpY2U6OnNfaW5zdGFuY2VzTG9jazsKLQotUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BV
RGV2aWNlOjp0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNv
bnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKLXsKLSAgICBpZiAoYXV0byBkZXZpY2UgPSBH
UFVEZXZpY2U6OnRyeUNyZWF0ZShhZGFwdGVyLT5vcHRpb25zKCkpKSB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShjb250ZXh0LCBXVEZNb3ZlKGFkYXB0
ZXIpLCBtYWtlUmVmKCpkZXZpY2UpKSk7Ci0gICAgICAgIGRldmljZS0+c2V0RXJyb3JTY29wZXMo
cmVzdWx0LT5tX2Vycm9yU2NvcGVzLmNvcHlSZWYoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1IYXNoU2V0PFdlYkdQVURldmljZSo+
JiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4+IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2Vz
OwotfQotCi1Mb2NrJiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc0xvY2soKQotewotICAgIHJldHVy
biBzX2luc3RhbmNlc0xvY2s7Ci19Ci0KLVdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFk
YXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKLSAgICAs
IG1fZGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKLSAgICAsIG1fZXJyb3JTY29wZXMoR1BVRXJyb3JT
Y29wZXM6OmNyZWF0ZShbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEdQVUVy
cm9yJiYgZXJyb3IpIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgZGlzcGF0
Y2hVbmNhcHR1cmVkRXJyb3IoV1RGTW92ZShlcnJvcikpOwotICAgIH0pKQotewotICAgIEFTU0VS
VChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaXNEb2N1bWVudCgpKTsKLQotICAgIHsKLSAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBpbnN0YW5jZXMo
KS5hZGQodGhpcyk7Ci0gICAgfQotfQotCi1XZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZpY2UoKQot
ewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2Uo
KnRoaXMpOwotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlwZWxpbmU6
Omluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhp
cykgewotICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR1BVUGlwZWxpbmUg
ZnJvbSB0aGUgaW5zdGFuY2VzIGxpc3QsIGFzIHRoZXkgbWF5IHN0aWxsIGV4aXN0LgotICAgICAg
ICAgICAgICAgIC8vIE9ubHkgcmVtb3ZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIGEgV2ViR1BVIGRl
dmljZS4KLSAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBp
bnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRo
aXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwotICAgIH0KLX0KLQotUmVm
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRF
cnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiAiKTsKLQotICAgIGF1dG8gYnVm
ZmVyID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBw
ZWRPcHRpb246Ok5vdE1hcHBlZCwgbV9lcnJvclNjb3Blcyk7Ci0gICAgcmV0dXJuIFdlYkdQVUJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgbV9lcnJvclNjb3Blcyk7Ci19Ci0KLVZlY3Rv
cjxKU0M6OkpTVmFsdWU+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVm
aXgoIkdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoKTogIik7Ci0KLSAgICBKU0M6OkpTVmFs
dWUgd3JhcHBlZEFycmF5QnVmZmVyID0gSlNDOjpqc051bGwoKTsKLQotICAgIGF1dG8gYnVmZmVy
ID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRP
cHRpb246OklzTWFwcGVkLCBtX2Vycm9yU2NvcGVzKTsKLSAgICBpZiAoYnVmZmVyKSB7Ci0gICAg
ICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBidWZmZXItPm1hcE9uQ3JlYXRpb24oKTsKLSAgICAgICAg
d3JhcHBlZEFycmF5QnVmZmVyID0gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksIGFycmF5QnVmZmVy
KTsKLSAgICB9Ci0KLSAgICBhdXRvIHdlYkJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSwgbV9lcnJvclNjb3Blcyk7Ci0gICAgYXV0byB3cmFwcGVkV2ViQnVmZmVy
ID0gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksIHdlYkJ1ZmZlcik7Ci0KLSAgICByZXR1cm4geyB3
cmFwcGVkV2ViQnVmZmVyLCB3cmFwcGVkQXJyYXlCdWZmZXIgfTsKLX0KLQotUmVmPFdlYkdQVVRl
eHR1cmU+IFdlYkdQVURldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclBy
ZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZVRleHR1cmUoKTogIik7Ci0KLSAgICBhdXRvIHRleHR1cmUg
PSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gV2Vi
R1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOwotfQotCi1SZWY8V2ViR1BVU2Ft
cGxlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gc2FtcGxlciA9IG1fZGV2aWNlLT50
cnlDcmVhdGVTYW1wbGVyKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBXZWJHUFVTYW1wbGVyOjpj
cmVhdGUoV1RGTW92ZShzYW1wbGVyKSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+
IFdlYkdQVURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBsYXlvdXQgPSBt
X2RldmljZS0+dHJ5Q3JlYXRlQmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGxheW91dCkpOwotfQotCi1S
ZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlv
dXQoY29uc3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25z
dAotewotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAg
ICByZXR1cm4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShudWxscHRyKTsKLSAgICAKLSAg
ICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT5jcmVhdGVQaXBlbGluZUxheW91dChXVEZNb3ZlKCpn
cHVEZXNjcmlwdG9yKSk7Ci0gICAgcmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUo
V1RGTW92ZShsYXlvdXQpKTsKLX0KLQotUmVmPFdlYkdQVUJpbmRHcm91cD4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikgY29uc3QKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNy
ZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0g
ICAgICAgIHJldHVybiBXZWJHUFVCaW5kR3JvdXA6OmNyZWF0ZShudWxscHRyKTsKLQotICAgIGF1
dG8gYmluZEdyb3VwID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJpbmRHcm91cCgqZ3B1RGVzY3JpcHRv
ciwgbV9lcnJvclNjb3Blcyk7Ci0gICAgcmV0dXJuIFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFdU
Rk1vdmUoYmluZEdyb3VwKSk7Ci19Ci0KLVJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURl
dmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgY2FuIGJlIHZhbGlk
YXRlZCBoZXJlPwotICAgIGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVNoYWRlck1v
ZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pOwotICAg
IHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShXVEZNb3ZlKG1vZHVsZSksIGRlc2Ny
aXB0b3IuY29kZSk7Ci19Ci0KLVJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQ
VURldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3Jp
cHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKG1f
ZXJyb3JTY29wZXMpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdl
YkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIG51bGxwdHIsIG1fZXJyb3JTY29wZXMs
IHsgfSwgeyB9KTsKLQotICAgIGF1dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRl
UmVuZGVyUGlwZWxpbmUoKmdwdURlc2NyaXB0b3IsIG1fZXJyb3JTY29wZXMpOwotCi0gICAgV2Vi
R1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgdmVydGV4U2hhZGVyID0geyBkZXNjcmlwdG9yLnZlcnRl
eFN0YWdlLm1vZHVsZSwgZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50IH07Ci0KLSAg
ICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBmcmFnbWVudFNoYWRlcjsKLSAgICBpZiAoZGVz
Y3JpcHRvci5mcmFnbWVudFN0YWdlKQotICAgICAgICBmcmFnbWVudFNoYWRlciA9IHsgZGVzY3Jp
cHRvci5mcmFnbWVudFN0YWdlLnZhbHVlKCkubW9kdWxlLCBkZXNjcmlwdG9yLmZyYWdtZW50U3Rh
Z2UudmFsdWUoKS5lbnRyeVBvaW50IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5lID0gV2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShncHVQaXBlbGluZSksIG1f
ZXJyb3JTY29wZXMsIFdURk1vdmUodmVydGV4U2hhZGVyKSwgV1RGTW92ZShmcmFnbWVudFNoYWRl
cikpOwotICAgIGlmICh3ZWJHUFVQaXBlbGluZS0+aXNWYWxpZCgpKQotICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCp0aGlzLCB3ZWJHUFVQ
aXBlbGluZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHdlYkdQVVBpcGVsaW5lOwotfQotCi1SZWY8V2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShj
b25zdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAg
IG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKCk6ICIpOwotCi0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlD
cmVhdGVHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKG1fZXJyb3JTY29wZXMpOwotICAgIGlm
ICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6
Y3JlYXRlKCp0aGlzLCBudWxscHRyLCBtX2Vycm9yU2NvcGVzLCB7IH0pOwotCi0gICAgYXV0byBn
cHVQaXBlbGluZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoKmdwdURlc2Ny
aXB0b3IsIG1fZXJyb3JTY29wZXMpOwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEg
Y29tcHV0ZVNoYWRlciA9IHsgZGVzY3JpcHRvci5jb21wdXRlU3RhZ2UubW9kdWxlLCBkZXNjcmlw
dG9yLmNvbXB1dGVTdGFnZS5lbnRyeVBvaW50IH07Ci0KLSAgICBhdXRvIHdlYkdQVVBpcGVsaW5l
ID0gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZ3B1UGlwZWxp
bmUpLCBtX2Vycm9yU2NvcGVzLCBXVEZNb3ZlKGNvbXB1dGVTaGFkZXIpKTsKLSAgICBpZiAod2Vi
R1BVUGlwZWxpbmUtPmlzVmFsaWQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqdGhpcywgd2ViR1BVUGlwZWxpbmUuZ2V0KCkpOwot
ICAgIHJldHVybiB3ZWJHUFVQaXBlbGluZTsKLX0KLQotUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVy
PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCkgY29uc3QKLXsKLSAgICBhdXRv
IGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAg
IHJldHVybiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKFdURk1vdmUoY29tbWFuZEJ1ZmZl
cikpOwotfQotCi1SZWY8V2ViR1BVUXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKSBjb25z
dAotewotICAgIGlmICghbV9xdWV1ZSkKLSAgICAgICAgbV9xdWV1ZSA9IFdlYkdQVVF1ZXVlOjpj
cmVhdGUobV9kZXZpY2UtPnRyeUdldFF1ZXVlKCkpOwotCi0gICAgcmV0dXJuIG1ha2VSZWYoKm1f
cXVldWUuZ2V0KCkpOwotfQotCi12b2lkIFdlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZShFcnJv
clByb21pc2UmJiBwcm9taXNlKQotewotICAgIFN0cmluZyBmYWlsTWVzc2FnZTsKLSAgICBzdGQ6
Om9wdGlvbmFsPEdQVUVycm9yPiBlcnJvciA9IG1fZXJyb3JTY29wZXMtPnBvcEVycm9yU2NvcGUo
ZmFpbE1lc3NhZ2UpOwotICAgIGlmIChmYWlsTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIHBy
b21pc2UucmVzb2x2ZShlcnJvcik7Ci0gICAgZWxzZQotICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkdQVURldmljZTo6cG9wRXJyb3JTY29wZSgpOiAi
ICsgZmFpbE1lc3NhZ2UgfSk7Ci19Ci0KLS8vIEVycm9ycyByZXBvcnRlZCB2aWEgdGhlIHZhbGlk
YXRpb24gZXJyb3IgZXZlbnQgc2hvdWxkIGFsc28gYXBwZWFyIGluIHRoZSBjb25zb2xlIGFzIHdh
cm5pbmdzLgotc3RhdGljIHZvaWQgcHJpbnRWYWxpZGF0aW9uRXJyb3JUb0NvbnNvbGUoR1BVRXJy
b3ImIGVycm9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3Ip
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHZhbGlkYXRpb25FcnJvciA9IFdURjo6Z2V0
PFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+PihlcnJvcik7Ci0gICAgaWYgKCF2YWxpZGF0aW9u
RXJyb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbWVzc2FnZSA9IHZhbGlkYXRpb25F
cnJvci0+bWVzc2FnZSgpOwotICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKLQotICAgIGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKGNvbnNvbGVN
ZXNzYWdlKSk7Ci19Ci0KLXZvaWQgV2ViR1BVRGV2aWNlOjpkaXNwYXRjaFVuY2FwdHVyZWRFcnJv
cihHUFVFcnJvciYmIGVycm9yKQotewotICAgIHByaW50VmFsaWRhdGlvbkVycm9yVG9Db25zb2xl
KGVycm9yLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAgY2FsbE9uTWFpblRocmVh
ZChbZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS51bmNhcHR1cmVkZXJyb3JFdmVudCwgV1RG
TW92ZShlcnJvcikpKTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YWIwOTJmOTY2
MWRhYzIzYjYxMDE1NTk4ZjhjMjY4YmEyMjFjNjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIK
LSNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKLSNpbmNs
dWRlICJXZWJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVPdXRPZk1lbW9yeUVycm9yOwotY2xhc3MgR1BV
VmFsaWRhdGlvbkVycm9yOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdl
YkdQVUJpbmRHcm91cDsKLWNsYXNzIFdlYkdQVUJpbmRHcm91cExheW91dDsKLWNsYXNzIFdlYkdQ
VUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyOwotY2xhc3MgV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lOwotY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBXZWJHUFVSZW5k
ZXJQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVNhbXBsZXI7Ci1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1
bGU7Ci1jbGFzcyBXZWJHUFVTd2FwQ2hhaW47Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1
Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlw
dG9yOwotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNj
cmlwdG9yOwotc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0
IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0
ZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJl
ZDsKLQotdXNpbmcgRXJyb3JJRExVbmlvbiA9IElETFVuaW9uPElETEludGVyZmFjZTxHUFVPdXRP
Zk1lbW9yeUVycm9yPiwgSURMSW50ZXJmYWNlPEdQVVZhbGlkYXRpb25FcnJvcj4+OwotdXNpbmcg
RXJyb3JQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPEVycm9ySURMVW5p
b24+PjsKLQotY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2
aWNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewotICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoV2ViR1BVRGV2aWNlKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVE
ZXZpY2UoKTsKLQotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVRGV2aWNlPiB0cnlDcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmKTsKLQotICAg
IHN0YXRpYyBIYXNoU2V0PFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhpbnN0YW5jZXNMb2NrKCkpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkg
V1RGX1JFVFVSTlNfTE9DSyhzX2luc3RhbmNlc0xvY2spOwotCi0gICAgY29uc3QgV2ViR1BVQWRh
cHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQotICAgIEdQ
VURldmljZSYgZGV2aWNlKCkgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KLSAgICBjb25zdCBH
UFVEZXZpY2UmIGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0KLSAg
ICBSZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRv
ciYpIGNvbnN0OwotICAgIFZlY3RvcjxKU0M6OkpTVmFsdWU+IGNyZWF0ZUJ1ZmZlck1hcHBlZChK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpIGNvbnN0Owot
ICAgIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNj
cmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoY29u
c3QgR1BVU2FtcGxlckRlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVCaW5kR3Jv
dXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQ
aXBlbGluZUxheW91dChjb25zdCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImKSBjb25z
dDsKLSAgICBSZWY8V2ViR1BVQmluZEdyb3VwPiBjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvciYpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVVNoYWRlck1vZHVs
ZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Im
KSBjb25zdDsKLSAgICBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVs
aW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIFJlZjxXZWJH
UFVDb21wdXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0KLSAgICBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+
IGNyZWF0ZUNvbW1hbmRFbmNvZGVyKCkgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVUXVldWU+IGdl
dFF1ZXVlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVy
IGZpbHRlcikgeyBtX2Vycm9yU2NvcGVzLT5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOyB9Ci0gICAg
dm9pZCBwb3BFcnJvclNjb3BlKEVycm9yUHJvbWlzZSYmKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAm
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVRGV2
aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiwg
UmVmPEdQVURldmljZT4mJik7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2Vi
R1BVRGV2aWNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJy
b3ImJik7Ci0KLSAgICBzdGF0aWMgTG9jayBzX2luc3RhbmNlc0xvY2s7Ci0KLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLSAgICBSZWY8Y29u
c3QgV2ViR1BVQWRhcHRlcj4gbV9hZGFwdGVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNl
OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkdQVVF1ZXVlPiBtX3F1ZXVlOwotCi0gICAgUmVmPEdQ
VUVycm9yU2NvcGVzPiBtX2Vycm9yU2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
YzdiNDZkNDVkNzk2NThkMDMxMGJhZDRhYTMwYzM0ZGUxZjM1ZWIyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBzZXF1
ZW5jZTxhbnk+IEdQVU1hcHBlZEJ1ZmZlcjsgIC8vIFtHUFVCdWZmZXIsIEFycmF5QnVmZmVyXQot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEludGVyZmFjZU5hbWU9R1BVRGV2aWNlLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgOiBFdmVudFRh
cmdldCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKLQot
ICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlw
dG9yKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBHUFVNYXBwZWRCdWZmZXIgY3JlYXRl
QnVmZmVyTWFwcGVkKEdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BV
VGV4dHVyZSBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwot
ICAgIFdlYkdQVVNhbXBsZXIgY3JlYXRlU2FtcGxlcihHUFVTYW1wbGVyRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKLQotICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVQ
aXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVQmluZEdyb3VwIGNyZWF0ZUJpbmRHcm91
cChXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgV2ViR1BVU2hh
ZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
IGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVs
aW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJH
UFVDb21wdXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBH
UFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IgaXMgYW4gZW1wdHkgZGljdGlvbmFyeS4KLSAgICBX
ZWJHUFVDb21tYW5kRW5jb2RlciBjcmVhdGVDb21tYW5kRW5jb2RlcigvKkdQVUNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKi8pOwotCi0gICAgV2ViR1BVUXVldWUgZ2V0UXVldWUo
KTsKLQotICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkLgotICAgIC8vIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXZWJHUFVFeHRlbnNpb25zIGV4dGVuc2lvbnM7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmli
dXRlIFdlYkdQVUxpbWl0cyBsaW1pdHM7Ci0KLSAgICAvLyBXZWJHUFVGZW5jZSBjcmVhdGVGZW5j
ZShXZWJHUFVGZW5jZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICAvLyBhdHRyaWJ1dGUg
V2ViR1BVTG9nQ2FsbGJhY2sgb25Mb2c7Ci0gICAgLy8gV2ViR1BVT2JqZWN0U3RhdHVzUXVlcnkg
Z2V0T2JqZWN0U3RhdHVzKFN0YXR1c2FibGVPYmplY3Qgc3RhdHVzYWJsZU9iamVjdCk7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJy
b3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTMxMTAwZGI1
NDUxMzg3OTQ0NzU2YzBmYjAxZmQ4ODJhMzAxYTgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZUVycm9yU2NvcGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlRXJy
b3JTY29wZXMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvckZp
bHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXM6OnB1c2hFcnJvclNjb3BlKFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvckZpbHRl
ciBmaWx0ZXIpCi17Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKGZpbHRlcik7Ci19Ci0KLXZv
aWQgV2ViR1BVRGV2aWNlRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoV2ViR1BVRGV2aWNlJiBk
ZXZpY2UsIEVycm9yUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgZGV2aWNlLnBvcEVycm9yU2Nv
cGUoV1RGTW92ZShwcm9taXNlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjIwZjA3YWJlMzk4YmY5YTczNGQ0NDZhZjU4OTQ1M2MwZGIwYzEwOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLWNsYXNzIFdlYkdQVURldmljZUVycm9y
U2NvcGVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBwdXNoRXJyb3JTY29wZShXZWJHUFVE
ZXZpY2UmLCBHUFVFcnJvckZpbHRlcik7Ci0gICAgc3RhdGljIHZvaWQgcG9wRXJyb3JTY29wZShX
ZWJHUFVEZXZpY2UmLCBFcnJvclByb21pc2UmJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGM2MDJmYWIwZTJkZmZlMmI2ZGE0MTI2YTI5MDg2ZDUz
NjZkYTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIChHUFVPdXRPZk1lbW9yeUVycm9yIG9yIEdQ
VVZhbGlkYXRpb25FcnJvcikgR1BVRXJyb3I7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1XZWJHUFVE
ZXZpY2VFcnJvclNjb3BlcwotXSBwYXJ0aWFsIGludGVyZmFjZSBXZWJHUFVEZXZpY2UgewotICAg
IHVuZGVmaW5lZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlciBmaWx0ZXIpOwotICAgIFBy
b21pc2U8R1BVRXJyb3I/PiBwb3BFcnJvclNjb3BlKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDQzNDMyNGQ0NWMzMzU3NDAzMWZhYTJh
Yjg1YWUzMDZjYzNiYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5k
bGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQnk9V2ViR1BV
RGV2aWNlRXZlbnRIYW5kbGVyCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdlYkdQVURldmljZSB7Ci0g
ICAgW0V4cG9zZWQ9V2luZG93XSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udW5jYXB0dXJlZGVy
cm9yOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRiNzgxMzMwYzY2NDI0YjU0
YWMzODE3YmE2ZGQ4NTg2MzkwMzMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Mb2NrIFdlYkdQVVBp
cGVsaW5lOjpzX2luc3RhbmNlc0xvY2s7Ci0KLUhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJH
UFVEZXZpY2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPj4gaW5z
dGFuY2VzOwotICAgIHJldHVybiBpbnN0YW5jZXM7Ci19Ci0KLUxvY2smIFdlYkdQVVBpcGVsaW5l
OjppbnN0YW5jZXNMb2NrKCkKLXsKLSAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1X
ZWJHUFVQaXBlbGluZTo6V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVy
cm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLSAgICA6IEdQVU9iamVjdEJhc2UobWFrZVJlZihlcnJv
clNjb3BlcykpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkZXZpY2Uuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotewotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07
Ci0gICAgICAgIGluc3RhbmNlcygpLmFkZCh0aGlzLCAmZGV2aWNlKTsKLSAgICB9Ci19Ci0KLVdl
YkdQVVBpcGVsaW5lOjp+V2ViR1BVUGlwZWxpbmUoKQotewotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSgqdGhpcyk7Ci0KLSAgICB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgQVNTRVJUKGlu
c3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRo
aXMpOwotICAgIH0KLX0KLQotdm9pZCBXZWJHUFVQaXBlbGluZTo6Y29udGV4dERlc3Ryb3llZCgp
Ci17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVs
aW5lKCp0aGlzKTsKLQotICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVz
dHJveWVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0Y2JjN2FmYWFiMmVhODEzZjdl
NTY0YWJlMTliZWFlNjRjMTc5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmgiCi0jaW5jbHVkZSAiR1BVT2JqZWN0QmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVVNo
YWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci0KLWNsYXNz
IFdlYkdQVVBpcGVsaW5lIDogcHVibGljIEdQVU9iamVjdEJhc2UsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUGlwZWxpbmUo
KTsKLQotICAgIHN0YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4m
IGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7Ci0gICAgc3Rh
dGljIExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9j
ayk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwot
Ci0gICAgc3RydWN0IFNoYWRlckRhdGEgewotICAgICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBtb2R1bGU7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBvaW50OwotICAgIH07Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYpID0gMDsKLQot
ICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2Vi
R1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgTG9jayBzX2luc3RhbmNlc0xvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShU
b1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6V2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBwaXBlbGluZS5wcmVkaWNhdGU7
IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjhhMGI4NDVlNDI4OTBjNTkyM2NkZmRkNDhlMDhkYTE1N2Q3MjhlMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVm
UHRyPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMzJjNzA0MzllYTFlMjQ4ZGIwM2FiYjAxMDZm
NjYyNzQxNzFhMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UgewotICAgIFdlYkdQVVBpcGVsaW5lTGF5b3V0PyBsYXlvdXQgPSBu
dWxsOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiNWQ0
Y2I0ZjlmMThmZGQ4ODczNzY5MDBiYjUxM2RlOGUyYjEyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZUxheW91dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5l
TGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxXZWJHUFVQaXBlbGluZUxheW91dD4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShS
ZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0KQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVBpcGVsaW5lTGF5b3V0KFdURk1vdmUobGF5b3V0KSkpOwotfQotCi1XZWJH
UFVQaXBlbGluZUxheW91dDo6V2ViR1BVUGlwZWxpbmVMYXlvdXQoUmVmUHRyPEdQVVBpcGVsaW5l
TGF5b3V0PiYmIGxheW91dCkKLSAgICA6IG1fcGlwZWxpbmVMYXlvdXQoV1RGTW92ZShsYXlvdXQp
KQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTZmODlkY2RlMTFi
YTk0M2VhYTg2Y2M5MzIwY2JlZDI3MjA5MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBl
bGluZUxheW91dC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVUGlwZWxpbmVM
YXlvdXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQaXBlbGluZUxheW91dD4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShSZWZQdHI8R1BV
UGlwZWxpbmVMYXlvdXQ+JiYpOwotCi0gICAgR1BVUGlwZWxpbmVMYXlvdXQqIHBpcGVsaW5lTGF5
b3V0KCkgeyByZXR1cm4gbV9waXBlbGluZUxheW91dC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IFdlYkdQVVBpcGVsaW5lTGF5b3V0KFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4m
Jik7Ci0KLSAgICBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+IG1fcGlwZWxpbmVMYXlvdXQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2Q4NDVjNzA2ZTkxZWZk
ZWQ0YmYyMGRkNGRkNzBiNjMwM2FhODAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVQaXBlbGluZUxheW91dCwKLSAgICBF
eHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUGlwZWxpbmVMYXlvdXQgewotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMThjMjhlYjE1NDFjY2NiYjlhMGJlODBkZTZjNDIzY2M1YzAyODVmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RkOjpvcHRpb25hbDxH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cjo6dHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBW
ZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGdwdUxheW91dHM7Ci0gICAgZ3B1
TGF5b3V0cy5yZXNlcnZlQ2FwYWNpdHkoYmluZEdyb3VwTGF5b3V0cy5zaXplKCkpOwotICAgIAot
ICAgIGZvciAoY29uc3QgYXV0byYgbGF5b3V0IDogYmluZEdyb3VwTGF5b3V0cykgewotICAgICAg
ICBpZiAoIWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKTogSW52YWxp
ZCBHUFVCaW5kR3JvdXBMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBncHVMYXlvdXRzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlUmVmKCpsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSk7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgeyBXVEZNb3ZlKGdwdUxheW91dHMp
IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4MzRjNzk1NGYzNzdhYTJhNzkyNzdiZDU0YTA5NjdhOTcyNjkzNDYxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICAKLXN0cnVjdCBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I7Ci0KLXN0cnVj
dCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IoKSBjb25zdDsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVQmluZEdyb3VwTGF5b3V0
Pj4gYmluZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmZTU1MmE4ZGFjMjRkNGRjMTI4MjkwZGIwY2E1
M2UxNTc5YzBkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdlYkdQVUJpbmRH
cm91cExheW91dD4gYmluZEdyb3VwTGF5b3V0czsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNDNjYTcxNDkzYjkwNjczZDg0
N2JiNWVlN2I0M2Q5NTE0YjU1NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldl
YkdQVUJpbmRHcm91cC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQotewotICAgIGlmICghcGFzc0VuY29kZXIo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVu
ZFBhc3MoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgcGFzc0VuY29kZXIoKS0+ZW5kUGFzcygpOwotfQotCi12b2lkIFdlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQgaW5kZXgsIFdlYkdQVUJpbmRHcm91
cCYgYmluZEdyb3VwKQotewotICAgIGlmICghcGFzc0VuY29kZXIoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBNYXhpbXVt
IG51bWJlciBvZiBiaW5kIGdyb3VwcyBzdXBwb3J0ZWQgaW4gV2ViIEdQVS4KLSAgICBpZiAoaW5k
ZXggPj0gNCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIGluZGV4ISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmICghYmluZEdyb3VwLmJpbmRHcm91cCgpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQg
V2ViR1BVQmluZEdyb3VwISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1F
OiBBbnkgdmFsaWRhdGlvbiAoZS5nLiBpbmRleCBkdXBsaWNhdGVzLCBub3QgaW4gcGlwZWxpbmUg
bGF5b3V0KS4KLSAgICBwYXNzRW5jb2RlcigpLT5zZXRCaW5kR3JvdXAoaW5kZXgsICpiaW5kR3Jv
dXAuYmluZEdyb3VwKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk2NWY1MGE0MzIzM2IyNjE1OWQ1NTc3NmY2MDAzNjgwMzFkMWViNjQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xh
c3MgV2ViR1BVQmluZEdyb3VwOwotCi1jbGFzcyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNp
Z25lZCwgV2ViR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5
ODc1YmM0MDgyNjY3Zjk1YmM5ZDhhYTI3YWRkOTgyYTk2MGE0MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIEV4
cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7
Ci0gICAgdW5kZWZpbmVkIGVuZFBhc3MoKTsKLSAgICB1bmRlZmluZWQgc2V0QmluZEdyb3VwKHUz
MiBpbmRleCwgV2ViR1BVQmluZEdyb3VwIGJpbmRHcm91cC8qLCBvcHRpb25hbCBzZXF1ZW5jZTx1
MzI+IGR5bmFtaWNPZmZzZXRzKi8pOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmE0ZjdmYmU5Y2IzMGNjZjk3
OTYwYjMzMTQxOGI0MmVlYzQ1MzY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdAotewotICAgIGlmICghbW9kdWxlIHx8ICFtb2R1
bGUtPm1vZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7
IG1ha2VSZWYoKm1vZHVsZS0+bW9kdWxlKCkpLCAqdGhpcyB9OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFiNjkwMjQ2NzA2
MGI1NmZjYjNiNDFhYmRiODBiMDI5ZGM5NjkyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJH
UFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IG1v
ZHVsZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGQ4ZWQ1ZDMyMzdlY2VmYzhjOTMxOTExMzNhYzJhMGRkODJlNDg3
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXZWJHUFVT
aGFkZXJTdGFnZUVudW07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7Ci0gICAg
cmVxdWlyZWQgRE9NU3RyaW5nIGVudHJ5UG9pbnQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlM2FjYTdiMmQwZDE1YzZmMTJmMGMxOTY1ZjJjM2M0NDQ2YjZjM2FhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0j
aW5jbHVkZSAiR1BVUXVldWUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVR
dWV1ZT4gV2ViR1BVUXVldWU6OmNyZWF0ZShSZWZQdHI8R1BVUXVldWU+JiYgcXVldWUpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUXVldWUoV1RGTW92ZShxdWV1ZSkpKTsKLX0K
LQotV2ViR1BVUXVldWU6OldlYkdQVVF1ZXVlKFJlZlB0cjxHUFVRdWV1ZT4mJiBxdWV1ZSkKLSAg
ICA6IG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCi17Ci19Ci0KLXZvaWQgV2ViR1BVUXVldWU6OnN1
Ym1pdChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYgYnVmZmVycykK
LXsKLSAgICBpZiAoIW1fcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpz
dWJtaXQoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZm
ZXJzLnJlc2VydmVDYXBhY2l0eShidWZmZXJzLnNpemUoKSk7Ci0gICAgCi0gICAgZm9yIChhdXRv
JiBidWZmZXIgOiBidWZmZXJzKSB7Ci0gICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmNv
bW1hbmRCdWZmZXIoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJt
aXQoKTogSW52YWxpZCBHUFVDb21tYW5kQnVmZmVyIGluIGxpc3QhIik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1QnVmZmVycy51bmNoZWNrZWRBcHBlbmQobWFr
ZVJlZigqYnVmZmVyLT5jb21tYW5kQnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAgICBtX3F1ZXVlLT5z
dWJtaXQoV1RGTW92ZShncHVCdWZmZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk4OTIyN2U0
MGI4MjllMTcwMTRmOWY4YzNkYzQ4NDcxZjUzMzg1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVRdWV1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVF1ZXVlLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7Ci0KLWNs
YXNzIFdlYkdQVVF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUXVldWU+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVF1ZXVlPiBjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYm
KTsKLQotICAgIHZvaWQgc3VibWl0KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4+Jik7Ci0KLSAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLT5s
YWJlbCgpOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSB7IG1fcXVl
dWUtPnNldExhYmVsKGxhYmVsKTsgfQotCi1wcml2YXRlOgotICAgIFdlYkdQVVF1ZXVlKFJlZlB0
cjxHUFVRdWV1ZT4mJik7Ci0KLSAgICBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMzU1Y2VhOTY1OTFlNDI2ZGY5MzhmOTYyNDZhMTQ5ODcwYjM2NWJl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1H
UFVRdWV1ZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUXVldWUgewot
ICAgIHVuZGVmaW5lZCBzdWJtaXQoc2VxdWVuY2U8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gYnVmZmVy
cyk7Ci0KLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICAvLyB1bmRlZmluZWQgc2ln
bmFsKFdlYkdQVUZlbmNlIGZlbmNlLCB1NjQgc2lnbmFsVmFsdWUpOwotICAgIC8vIHVuZGVmaW5l
ZCB3YWl0KFdlYkdQVUZlbmNlIGZlbmNlLCB1NjQgdmFsdWVUb1dhaXQpOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4YjQ3ODJjN2U3
MzVhYWM0MWIzMTdkNDAzMzBhNzMyZTMzNGU4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUsIGNvbnN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFz
ZSkKLSAgICA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNl
KQotICAgICwgYXR0YWNobWVudChXVEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1HUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlLCBjb25z
dCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNl
KQotICAgIDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFz
ZShiYXNlKQotICAgICwgYXR0YWNobWVudChXVEZNb3ZlKHRleHR1cmUpKQotewotfQotCi1zdGQ6
Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdAotewotICAgIC8v
IEZJWE1FOiBJbXByb3ZlIGVycm9yIGNoZWNraW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yIGlzIGFkZGVkIHRvIHNwZWMuCi0gICAgaWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogTm8gY29s
b3IgYXR0YWNobWVudHMgc3BlY2lmaWVkIGZvciBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciEiKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8R1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdUNvbG9yQXR0YWNobWVudHM7Ci0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IGNvbG9yQXR0YWNobWVudHMp
IHsKLSAgICAgICAgaWYgKCFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudAotICAgICAgICAgICAg
fHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCkKLSAgICAgICAgICAgIHx8
ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1l
bnQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
OiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0g
ICAgICAgIGdwdUNvbG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRl
eHR1cmUoKSksIGNvbG9yQXR0YWNobWVudCB9KTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFs
PEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhB
dHRhY2htZW50OwotCi0gICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKLSAgICAgICAg
aWYgKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50Ci0gICAgICAgICAgICB8fCAh
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpCi0gICAgICAgICAg
ICB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091
dHB1dEF0dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgfQotICAgICAgICBncHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgeyBtYWtlUmVmKCpkZXB0aFN0ZW5j
aWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkpLCAqZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCB9OwotICAgIH0KLQotICAgIHJldHVybiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7IFdU
Rk1vdmUoZ3B1Q29sb3JBdHRhY2htZW50cyksIFdURk1vdmUoZ3B1RGVwdGhBdHRhY2htZW50KSB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1Zjk0
YTRjZmYwZDBlMzY2MzExNzU4NTBkNzc3NmJhZDgxNzZjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1
cmVWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3I7Ci0KLXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6
IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRy
PFdlYkdQVVRleHR1cmVWaWV3PiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IFdlYkdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciA6IEdQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIFJlZlB0cjxXZWJHUFVUZXh0
dXJlVmlldz4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvciB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gdHJ5Q3Jl
YXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdDsKLQotICAgIFZlY3RvcjxXZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODMyNDgyZTVhMTMwZWQzZDUzNWZkMmRi
N2RmNWVmMDNlNmViMjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJH
UFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5IEdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVU
ZXh0dXJlVmlldyBhdHRhY2htZW50OwotICAgIC8vIEdQVVRleHR1cmVWaWV3PyByZXNvbHZlVGFy
Z2V0OwotCi0gICAgcmVxdWlyZWQgR1BVTG9hZE9wIGxvYWRPcDsKLSAgICByZXF1aXJlZCBHUFVT
dG9yZU9wIHN0b3JlT3A7Ci0gICAgR1BVQ29sb3IgY2xlYXJDb2xvcjsgLy8ge3I6IDAuMCwgZzog
MC4wLCBiOiAwLjAsIGE6IDEuMH0KLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVk
IFdlYkdQVVRleHR1cmVWaWV3IGF0dGFjaG1lbnQ7Ci0KLSAgICByZXF1aXJlZCBHUFVMb2FkT3Ag
ZGVwdGhMb2FkT3A7Ci0gICAgcmVxdWlyZWQgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7Ci0gICAg
cmVxdWlyZWQgZmxvYXQgY2xlYXJEZXB0aDsKLQotLyogTm90IHlldCBpbXBsZW1lbnRlZAotICAg
IEdQVUxvYWRPcCBzdGVuY2lsTG9hZE9wOwotICAgIEdQVVN0b3JlT3Agc3RlbmNpbFN0b3JlT3A7
Ci0gICAgdTMyIGNsZWFyU3RlbmNpbDsKLSovCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIEdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj8gZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYmY3YTBkNDBmZmFmYzRhYjQ0MmIxYjQzNTk4NmFlMmUyNGM5ZTQwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVQ29sb3IuaCIKLSNpbmNsdWRlICJHUFVMaW1pdHMuaCIKLSNpbmNsdWRlICJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgot
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
Y3JlYXRlKFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2Rl
cikpKTsKLX0KLQotV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyKFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNz
RW5jb2RlciB7IFdURk1vdmUoZW5jb2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYgcGlwZWxp
bmUpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFwaXBlbGluZS5yZW5kZXJQaXBlbGlu
ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlw
ZWxpbmUoKTogSW52YWxpZCBwaXBlbGluZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX3Bhc3NFbmNvZGVyLT5zZXRQaXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5yZW5kZXJQaXBl
bGluZSgpKSk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29s
b3IoY29uc3QgR1BVQ29sb3ImIGNvbG9yKQotewotICAgIGlmICghbV9wYXNzRW5jb2Rlcikgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3Io
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9w
YXNzRW5jb2Rlci0+c2V0QmxlbmRDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKLXsKLSAgICBpZiAo
IW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBtaW5EZXB0aCwgbWF4RGVwdGgpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KCk6IElu
dmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghd2lk
dGggfHwgIWhlaWdodCkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFNjaXNzb3JSZWN0KCk6IFdpZHRoIG9yIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhh
biAwISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNldFNj
aXNzb3JSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihXZWJHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qg
b2Zmc2V0KQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0
aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghYnVmZmVyLmJ1ZmZlcigp
IHx8ICFidWZmZXIuYnVmZmVyKCktPmlzSW5kZXgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKCk6IEludmFsaWQgR1BVQnVmZmVy
ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXNzRW5jb2Rlci0+c2V0SW5k
ZXhCdWZmZXIoKmJ1ZmZlci5idWZmZXIoKSwgb2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBzdGFydFNsb3QsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIG9mZnNldHMpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVy
cygpIjsKLSNlbmRpZgotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGJ1ZmZlcnMuaXNFbXB0eSgpIHx8IGJ1ZmZlcnMuc2l6ZSgp
ICE9IG9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBu
dW1iZXIgb2YgYnVmZmVycyBvciBvZmZzZXRzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHN0YXJ0U2xvdCArIGJ1ZmZlcnMuc2l6ZSgpID4gbWF4VmVy
dGV4QnVmZmVycykgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc3RhcnRTbG90
ICV1IGZvciAlbHUgYnVmZmVycyEiLCBmdW5jdGlvbk5hbWUsIHN0YXJ0U2xvdCwgYnVmZmVycy5z
aXplKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFJlZjxHUFVCdWZm
ZXI+PiBncHVCdWZmZXJzOwotICAgIGdwdUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlcnMu
c2l6ZSgpKTsKLQotICAgIGZvciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBp
ZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBJbnZhbGlkIG9yIGRlc3Ryb3llZCBidWZmZXIgaW4gbGlzdCEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFidWZm
ZXItPmJ1ZmZlcigpLT5pc1ZlcnRleCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IEJ1ZmZlciB3YXMgbm90IGNyZWF0ZWQgd2l0aCBWRVJURVggdXNhZ2UhIiwgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdwdUJ1ZmZlcnMu
dW5jaGVja2VkQXBwZW5kKG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpKTsKLSAgICB9Ci0KLSAg
ICBtX3Bhc3NFbmNvZGVyLT5zZXRWZXJ0ZXhCdWZmZXJzKHN0YXJ0U2xvdCwgZ3B1QnVmZmVycywg
b2Zmc2V0cyk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5zaWdu
ZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVy
dGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotICAgIGlmICghbV9wYXNzRW5jb2Rlcikg
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52
YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6
IFdoYXQga2luZCBvZiB2YWxpZGF0aW9uIGRvIHdlIG5lZWQgdG8gaGFuZGxlIGhlcmU/Ci0gICAg
bV9wYXNzRW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0
ZXgsIGZpcnN0SW5zdGFuY2UpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpk
cmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1
bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5j
ZSkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgot
ICAgIG1fcGFzc0VuY29kZXItPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQs
IGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwotfQotCi1HUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2RlciogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkK
LXsKLSAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotY29uc3QgR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2Rlcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhjMDJhYmE3OGFlYzhhZTJhZjE2N2IyNTBj
NTkxZGQxOTQ4MzE5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcjsKLWNsYXNzIEdQVVJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVQnVm
ZmVyOwotY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmU7Ci0KLXN0cnVjdCBHUFVDb2xvcjsKLQot
Y2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwotCi0g
ICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYpOwotICAgIHZv
aWQgc2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYpOwotICAgIHZvaWQgc2V0Vmlld3BvcnQo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVw
dGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgs
IHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwotICAgIHZvaWQg
c2V0SW5kZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0KTsKLSAgICB2b2lk
IHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgc3RhcnRTbG90LCBjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkdQVUJ1ZmZlcj4+JiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cyk7Ci0gICAg
dm9pZCBkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1
bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0gICAgdm9pZCBk
cmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1
bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5j
ZSk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmUHRyPEdQVVJl
bmRlclBhc3NFbmNvZGVyPiYmKTsKLQotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBw
YXNzRW5jb2RlcigpIGZpbmFsOwotICAgIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KiBwYXNzRW5jb2RlcigpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiBtX3Bhc3NFbmNvZGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjA2ZjljYjVjMmUzZDU1YzlkMTYzY2I3ODM1NmVlMmFhOWI0OWRhOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBsb25nIGkzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1
MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFt
ZT1HUFVSZW5kZXJQYXNzRW5jb2RlciwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBF
eHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgOiBXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKFdl
YkdQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKTsKLSAgICB1bmRlZmluZWQgc2V0QmxlbmRDb2xv
cihHUFVDb2xvciBjb2xvcik7Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCB2aWV3cG9ydCBpcyAoMC4w
LCAwLjAsIHcsIGgsIDAuMCwgMS4wKSwgd2hlcmUgdyBhbmQgaCBhcmUgdGhlIGRpbWVuc2lvbnMg
b2YgYmFjayBidWZmZXIKLSAgICB1bmRlZmluZWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERl
cHRoKTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IHNjaXNzb3IgcmVjdGFuZ2xlIGlzICgwLCAwLCB3
LCBoKSwgd2hlcmUgdyBhbmQgaCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgYmFjayBidWZmZXIuCi0g
ICAgLy8gV2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLiBPdGhlcndpc2Us
IGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgotICAgIHVuZGVmaW5lZCBzZXRTY2lzc29yUmVj
dCh1MzIgeCwgdTMyIHksIHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7Ci0KLSAgICB1bmRlZmluZWQg
c2V0SW5kZXhCdWZmZXIoV2ViR1BVQnVmZmVyIGJ1ZmZlciwgdTY0IG9mZnNldCk7Ci0gICAgdW5k
ZWZpbmVkIHNldFZlcnRleEJ1ZmZlcnModTMyIHN0YXJ0U2xvdCwgc2VxdWVuY2U8V2ViR1BVQnVm
ZmVyPiBidWZmZXJzLCBzZXF1ZW5jZTx1NjQ+IG9mZnNldHMpOwotCi0gICAgdW5kZWZpbmVkIGRy
YXcodTMyIHZlcnRleENvdW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0VmVydGV4LCB1
MzIgZmlyc3RJbnN0YW5jZSk7Ci0gICAgdW5kZWZpbmVkIGRyYXdJbmRleGVkKHUzMiBpbmRleENv
dW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0SW5kZXgsIGkzMiBiYXNlVmVydGV4LCB1
MzIgZmlyc3RJbnN0YW5jZSk7Ci0KLS8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICB1bmRlZmlu
ZWQgc2V0U3RlbmNpbFJlZmVyZW5jZSh1MzIgcmVmZXJlbmNlKTsKLSovCi19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODVjNmJmYTBhMjA0NTRhMTdiNjI2NzMw
NmY5YjU3OTlkMDQ3N2EzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkdQ
VVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1
bGUuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
V2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQ
aXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmlj
ZSwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYg
ZXJyb3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBX
ZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKGRldmljZSwgV1RGTW92ZShwaXBl
bGluZSksIGVycm9yU2NvcGVzLCBXVEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1vdmUoZnJhZ21l
bnRTaGFkZXIpKSk7Ci19Ci0KLVdlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBl
bGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBp
cGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFk
ZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdt
ZW50U2hhZGVyKQotICAgIDogV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykKLSAg
ICAsIG1fcmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3ZlcnRleFNo
YWRlcihXVEZNb3ZlKHZlcnRleFNoYWRlcikpCi0gICAgLCBtX2ZyYWdtZW50U2hhZGVyKFdURk1v
dmUoZnJhZ21lbnRTaGFkZXIpKQotewotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6fldlYkdQ
VVJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIFdlYkdQVVJlbmRlclBpcGVsaW5l
OjpjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAg
aWYgKG1fdmVydGV4U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBib29sIHNoYXJlc1ZlcnRleEZy
YWdtZW50U2hhZGVyTW9kdWxlID0gbV9mcmFnbWVudFNoYWRlci5tb2R1bGUgPT0gbV92ZXJ0ZXhT
aGFkZXIubW9kdWxlOwotCi0gICAgICAgIGNvbnN0IGF1dG8mIHZlcnRleFNvdXJjZSA9IG1fdmVy
dGV4U2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAgIG1fdmVydGV4U2hhZGVyLm1vZHVs
ZSA9IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRl
KGRldmljZS5kZXZpY2UoKSwgeyB2ZXJ0ZXhTb3VyY2UgfSksIHZlcnRleFNvdXJjZSk7Ci0KLSAg
ICAgICAgaWYgKG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgICAgICBpZiAoc2hh
cmVzVmVydGV4RnJhZ21lbnRTaGFkZXJNb2R1bGUpCi0gICAgICAgICAgICAgICAgbV9mcmFnbWVu
dFNoYWRlci5tb2R1bGUgPSBtX3ZlcnRleFNoYWRlci5tb2R1bGU7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBmcmFnbWVudFNvdXJjZSA9IG1fZnJhZ21l
bnRTaGFkZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgICAgICAgICBtX2ZyYWdtZW50U2hh
ZGVyLm1vZHVsZSA9IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1vZHVsZTo6
dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2UoKSwgeyBmcmFnbWVudFNvdXJjZSB9KSwgZnJhZ21lbnRT
b3VyY2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6cmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChtX3Jl
bmRlclBpcGVsaW5lICYmIG1fdmVydGV4U2hhZGVyLm1vZHVsZSkgewotICAgICAgICBpZiAoYXV0
byogZ3B1VmVydGV4U2hhZGVyTW9kdWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlLT5tb2R1bGUo
KSkgewotICAgICAgICAgICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0
YWdlKG1ha2VSZWYoKmdwdVZlcnRleFNoYWRlck1vZHVsZSksIHsgbV92ZXJ0ZXhTaGFkZXIuZW50
cnlQb2ludCB9KTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotICAgICAgICAgICAgaWYgKG1fZnJhZ21lbnRT
aGFkZXIubW9kdWxlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGdwdUZyYWdtZW50U2hh
ZGVyTW9kdWxlID0gbV9mcmFnbWVudFNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKQotICAgICAgICAg
ICAgICAgICAgICBmcmFnbWVudFN0YWdlID0gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
KG1ha2VSZWYoKmdwdUZyYWdtZW50U2hhZGVyTW9kdWxlKSwgeyBtX2ZyYWdtZW50U2hhZGVyLmVu
dHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9yZW5kZXJQ
aXBlbGluZS0+cmVjb21waWxlKGRldmljZS5kZXZpY2UoKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSks
IFdURk1vdmUoZnJhZ21lbnRTdGFnZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDYwYjEzNzkzZmNi
ZDI1MzQ1N2M0MjgxMWM4MmQ5MmNkNTEyMmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BV
UGlwZWxpbmUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVVBpcGVsaW5lOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFz
cyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVNoYWRl
ck1vZHVsZTsKLQotY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgV2Vi
R1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVsaW5l
KCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoV2ViR1BV
RGV2aWNlJiwgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdl
YkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6
U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hhZGVyKTsKLQotICAgIGJvb2wgaXNSZW5kZXJQaXBlbGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlclBpcGVsaW5lKCk7IH0KLSAgICBjb25zdCBHUFVSZW5kZXJQaXBlbGluZSog
cmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmdldCgpOyB9
Ci0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gdmVydGV4U2hhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlOyB9Ci0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1v
ZHVsZT4gZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyLm1v
ZHVsZTsgfQotCi0gICAgYm9vbCBjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNl
Jik7Ci0gICAgYm9vbCByZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJik7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRh
JiYgdmVydGV4U2hhZGVyLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGZyYWdtZW50U2hh
ZGVyKTsKLQotICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQaXBlbGluZTsK
LQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAg
IFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIG1fdmVydGV4U2hhZGVyOwotICAgIFdlYkdQVVBp
cGVsaW5lOjpTaGFkZXJEYXRhIG1fZnJhZ21lbnRTaGFkZXI7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQRUxJTkUoV2ViQ29y
ZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3ZjgyYzJkMjhjNzVjNTQ3NjgyNDg1YWFiMGZmZmE3ZjFhOThiMGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgSW50ZXJmYWNlTmFtZT1HUFVSZW5kZXJQaXBlbGluZSwKLSAgICBFeHBvc2VkPVdpbmRvdwot
XSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmJjZGI5ZGY5MGM4
NDU5MDczMTM0N2Y4ZDVhOTY1ODdjOTFjNzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVUVycm9yU2NvcGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25h
bDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0gbGF5b3V0
ID8gbWFrZVJlZlB0cihsYXlvdXQtPnBpcGVsaW5lTGF5b3V0KCkpIDogbnVsbHB0cjsKLQotICAg
IGF1dG8gdmVydGV4ID0gdmVydGV4U3RhZ2UudHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yKCk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcj4gZnJhZ21lbnQ7Ci0gICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgIGZyYWdt
ZW50ID0gZnJhZ21lbnRTdGFnZS0+dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yKCk7Ci0KLSAgICBpZiAoIXZlcnRleCB8fCAoZnJhZ21lbnRTdGFnZSAmJiAhZnJhZ21lbnQp
KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlYiBHUFUgdmFsaWRhdGlvbiwgZS5nLiBm
YWlsIGlmIGNvbG9yU3RhdGVzIGlzIGxhcmdlciB0aGFuIChtYXggbnVtYmVyIG9mIHN1cHBvcnRl
ZCBjb2xvciBzdGF0ZXMpLgotCi0gICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciB7IFdURk1vdmUocGlwZWxpbmVMYXlvdXQpLCBXVEZNb3ZlKCp2ZXJ0ZXgpLCBXVEZNb3ZlKGZy
YWdtZW50KSwgKnRoaXMgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBiNjBkMmViZTY5Mzk1ZTM1MWYxYTlkOGM1MDA2MzQ4NDY4YmIw
ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2lu
Y2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihH
UFVFcnJvclNjb3BlcyYpIGNvbnN0OwotCi0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yIHZlcnRleFN0YWdlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDBkOTQ2ZmVmZjllNTVjYjBk
NzBhZDY3Mjg3Mjk3YTk5ZDA3MWVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxl
bWVudGVkQXM9R1BVUHJpbWl0aXZlVG9wb2xvZ3kKLV0gZW51bSBHUFVQcmltaXRpdmVUb3BvbG9n
eSB7Ci0gICAgInBvaW50LWxpc3QiLAotICAgICJsaW5lLWxpc3QiLAotICAgICJsaW5lLXN0cmlw
IiwKLSAgICAidHJpYW5nbGUtbGlzdCIsCi0gICAgInRyaWFuZ2xlLXN0cmlwIgotfTsKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBk
aWN0aW9uYXJ5IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UgewotICAgIHJlcXVpcmVkIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3I/IGZyYWdtZW50U3RhZ2UgPSBudWxsOwotCi0gICAgcmVxdWlyZWQgR1BVUHJpbWl0aXZlVG9w
b2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQ29sb3JT
dGF0ZURlc2NyaXB0b3I+IGNvbG9yU3RhdGVzOwotICAgIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVz
Y3JpcHRvcj8gZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIHJlcXVpcmVkIEdQVVZlcnRl
eElucHV0RGVzY3JpcHRvciB2ZXJ0ZXhJbnB1dDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiYTUyMGU2M2ExYTAwNTQ5MDk3ZTQwMWFlZWI4YjQzMmQ1ZDEyNjAxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTYW1w
bGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZjxXZWJHUFVTYW1wbGVyPiBXZWJHUFVTYW1wbGVyOjpjcmVhdGUoUmVmUHRyPEdQVVNhbXBsZXI+
JiYgc2FtcGxlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTYW1wbGVyKFdU
Rk1vdmUoc2FtcGxlcikpKTsKLX0KLQotV2ViR1BVU2FtcGxlcjo6V2ViR1BVU2FtcGxlcihSZWZQ
dHI8R1BVU2FtcGxlcj4mJiBzYW1wbGVyKQotICAgIDogbV9zYW1wbGVyKFdURk1vdmUoc2FtcGxl
cikpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
YW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MjQ5NjZjNjk3YTU2NTU4YzY2MzRjYmM0
Y2YzN2YzZDI1ZWEwNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBXZWJHUFVTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BV
U2FtcGxlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVU2FtcGxlcj4gY3JlYXRl
KFJlZlB0cjxHUFVTYW1wbGVyPiYmKTsKLQotICAgIGNvbnN0IEdQVVNhbXBsZXIqIHNhbXBsZXIo
KSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJH
UFVTYW1wbGVyKFJlZlB0cjxHUFVTYW1wbGVyPiYmKTsKLQotICAgIFJlZlB0cjxHUFVTYW1wbGVy
PiBtX3NhbXBsZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2FtcGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
YW1wbGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzYWFjMjY5YTE1OGVi
NTg3YmFmNWQ0MTRkMGYyZTIxZmI0MmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1w
bGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVTYW1wbGVyLAotICAgIEV4cG9zZWQ9V2luZG93
Ci1dIGludGVyZmFjZSBXZWJHUFVTYW1wbGVyIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDMxNDU0NWRkM2Y0NmNlODYyMDhmM2Q1NDZhZmY3MTQ0MjczM2M5OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZlB0cjxH
UFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpLCBz
b3VyY2UpKTsKLX0KLQotV2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQotICAg
IDogbV9tb2R1bGUoV1RGTW92ZShtb2R1bGUpKQotICAgICwgbV9zb3VyY2Uoc291cmNlKQotewot
fQotCi12b2lkIFdlYkdQVVNoYWRlck1vZHVsZTo6dXBkYXRlKGNvbnN0IFdlYkdQVURldmljZSYg
ZGV2aWNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBtX3NvdXJjZSA9IHNvdXJjZTsK
LSAgICBtX21vZHVsZSA9IEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGRldmljZS5kZXZpY2Uo
KSwgeyBtX3NvdXJjZSB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MGJi
OGQyZjYzNjRjMjRlMWRhNWRjYjQ1NTA1MDFhNGYyZDAxNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBX
ZWJHUFVEZXZpY2U7Ci0KLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkdQVVNoYWRlck1vZHVsZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BV
U2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UpOwotCi0gICAgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZHVsZS5nZXQoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2U7IH0KLQotICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdlYkdQVURldmlj
ZSYsIGNvbnN0IFN0cmluZyYgc291cmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTaGFkZXJN
b2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwot
Ci0gICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gbV9tb2R1bGU7Ci0KLSAgICAvLyBQcmVzZXJ2
ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBTdHJpbmcgbV9zb3VyY2U7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
TW9kdWxlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkNzdmMDc5ZTMyOWQ2
NWQzODQ0ZjhiZWY1M2Q4MzA1YTU0Yjg5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVNoYWRlck1vZHVsZSwKLSAgICBFeHBv
c2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU2hhZGVyTW9kdWxlIHsKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMzJhOTg5ZWQ1
YzUwNmRmM2E3ZGNiMDkzNTVjZTUyNjg0YzMwOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKLSAgICBTdHJpbmcgY29kZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE3
YTlkNGM4ZGE0NTM3NjYwMGY5YmEwYmY2ZmUyY2ExNmQ0NzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUK
LV0gZGljdGlvbmFyeSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJl
ZCAvKkFycmF5QnVmZmVyKi8gRE9NU3RyaW5nIGNvZGU7IC8vIEZJWE1FOiBET01TdHJpbmcgZm9y
IE1UTCBwcm90b3R5cGluZyBvbmx5LgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzNjI1OWQ3ZjZlMTNiZDYyNjA2MjA4MDc3YWVjOTdlNDMzZTAyMzljLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBD
aGFpbi5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNp
bmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPFdlYkdQVVN3YXBDaGFpbj4gV2ViR1BVU3dhcENoYWluOjpjcmVhdGUoUmVmUHRy
PEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVU3dhcENoYWluKFdURk1vdmUoc3dhcENoYWluKSkpOwotfQotCi1XZWJHUFVTd2FwQ2hh
aW46OldlYkdQVVN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLSAg
ICA6IG1fc3dhcENoYWluKFdURk1vdmUoc3dhcENoYWluKSkKLXsKLX0KLQotUmVmPFdlYkdQVVRl
eHR1cmU+IFdlYkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUoKQotewotICAgIGlmICgh
bV9zd2FwQ2hhaW4pIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3Vy
cmVudFRleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJH
UFVUZXh0dXJlOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIG1fY3VycmVudFRleHR1cmUg
PSBXZWJHUFVUZXh0dXJlOjpjcmVhdGUobV9zd2FwQ2hhaW4tPnRyeUdldEN1cnJlbnRUZXh0dXJl
KCkpOwotICAgIHJldHVybiBtYWtlUmVmKCptX2N1cnJlbnRUZXh0dXJlKTsKLX0KLQotdm9pZCBX
ZWJHUFVTd2FwQ2hhaW46OmRlc3Ryb3koKQotewotICAgIGlmICghbV9zd2FwQ2hhaW4pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc3dhcENoYWluLT5kZXN0cm95KCk7Ci0gICAgbV9zd2FwQ2hh
aW4gPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFRleHR1cmUgJiYgbV9jdXJyZW50VGV4
dHVyZS0+dGV4dHVyZSgpKQotICAgICAgICBtX2N1cnJlbnRUZXh0dXJlLT5kZXN0cm95KCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGExZTBkZjY0ODA0ZjExMTlmMzE1ZTMwZTFhMDYx
MDhjMzQyN2IzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgIldl
YkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvcjsKLQotY2xhc3MgV2ViR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTd2Fw
Q2hhaW4+IGNyZWF0ZShSZWZQdHI8R1BVU3dhcENoYWluPiYmKTsKLQotICAgIEdQVVN3YXBDaGFp
biogc3dhcENoYWluKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZ2V0KCk7IH0KLQotICAgIFJlZjxX
ZWJHUFVUZXh0dXJlPiBnZXRDdXJyZW50VGV4dHVyZSgpOwotCi0gICAgdm9pZCBkZXN0cm95KCk7
Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVU3dhcENoYWluKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYp
OwotCi0gICAgUmVmUHRyPEdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci0gICAgUmVmUHRyPFdl
YkdQVVRleHR1cmU+IG1fY3VycmVudFRleHR1cmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE0MzJjZjNhNGU0NTA0YzhiYTFmYWZkOWFjYWI2ZGRiYjFlMmZkMGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEludGVyZmFjZU5hbWU9R1BVU3dhcENoYWluLAotICAgIFNraXBWVGFibGVWYWxpZGF0aW9u
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVTd2FwQ2hhaW4gewotICAg
IFdlYkdQVVRleHR1cmUgZ2V0Q3VycmVudFRleHR1cmUoKTsKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTM0ZmNkMzMzNzM5OTVmNmE5OGQ0
NzlhZjQwMmY3Y2Q5N2IwNjUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRl
c2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4g
V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcjo6YXNHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKCkgY29u
c3QKLXsKLSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ2FudmFz
Q29udGV4dDo6Y29uZmlndXJlU3dhcENoYWluKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gR1BVU3dh
cENoYWluRGVzY3JpcHRvciB7IG1ha2VSZWYoZGV2aWNlLT5kZXZpY2UoKSksICp0aGlzIH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjg3NGQ2Zjcw
MDAwMzk1OWRiNTg5MTE5YjRkYjAwMmU5YzMyMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdl
YkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgOiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgc3RkOjpvcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBhc0dQVVN3YXBDaGFpbkRl
c2NyaXB0b3IoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGRldmljZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2RhMDYwMTIzMWU3ZThmNTgzOTRjN2M0MjM5NTE4
NGViN2EzN2M2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0
dXJlPiBXZWJHUFVUZXh0dXJlOjpjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVy
ZSkpKTsKLX0KLQotV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShSZWZQdHI8R1BVVGV4dHVy
ZT4mJiB0ZXh0dXJlKQotICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0K
LVJlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXco
KQotewotICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0
dXJlOjpjcmVhdGVEZWZhdWx0VmlldygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAg
cmV0dXJuIFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotCi0gICAg
YXV0byB2aWV3ID0gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShtX3RleHR1cmUtPnRyeUNyZWF0
ZURlZmF1bHRUZXh0dXJlVmlldygpKTsKLSAgICBtX3RleHR1cmVWaWV3cy5hcHBlbmQodmlldy5j
b3B5UmVmKCkpOwotICAgIHJldHVybiB2aWV3OwotfQotCi12b2lkIFdlYkdQVVRleHR1cmU6OmRl
c3Ryb3koKQotewotICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVUZXh0dXJlOjpkZXN0cm95KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGZvciAoYXV0byYgdmlldyA6IG1fdGV4dHVyZVZpZXdzKQotICAgICAg
ICB2aWV3LT5kZXN0cm95KCk7Ci0gICAgbV90ZXh0dXJlVmlld3MuY2xlYXIoKTsKLQotICAgIG1f
dGV4dHVyZS0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZmZDU4YzI2NDJmY2M2YTYyZjM3MmFjYjRhMjczOGUxYzZiNzI1MmIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBX
ZWJHUFVUZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJl
PiYmKTsKLQotICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0
KCk7IH0KLQotICAgIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlRGVmYXVsdFZpZXcoKTsK
LSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVUZXh0
dXJlKFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3Rl
eHR1cmU7Ci0gICAgVmVjdG9yPFJlZjxXZWJHUFVUZXh0dXJlVmlldz4+IG1fdGV4dHVyZVZpZXdz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTRhNWY5OTNiNjQ1ZGE5NWMyYTNkNzhj
OGRmMWMyYzM3MzdkMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAg
IEludGVyZmFjZU5hbWU9R1BVVGV4dHVyZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZh
Y2UgV2ViR1BVVGV4dHVyZSB7Ci0gICAgV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlRGVmYXVsdFZp
ZXcoKTsKLSAgICB1bmRlZmluZWQgZGVzdHJveSgpOwotCi0gICAgLy8gTm90IFlldCBJbXBsZW1l
bnRlZDoKLSAgICAvLyBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVUZXh0dXJlVmlldyhXZWJHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3IgZGVzYyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZTAzMmFmMGMwMTZkYzVlYmQ1YWU0ZGRkNmM2NGIyMzRiNDA1Mzk5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViR1BVVGV4dHVyZVZpZXcuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3Jl
YXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHZpZXcpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOwotfQotCi1XZWJHUFVUZXh0dXJl
Vmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmUHRyPEdQVVRleHR1cmU+JiYgdmlldykKLSAgICA6
IG1fdGV4dHVyZShXVEZNb3ZlKHZpZXcpKQotewotfQotCi12b2lkIFdlYkdQVVRleHR1cmVWaWV3
OjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV90ZXh0dXJlLT5kZXN0cm95KCk7Ci0gICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNTBlMjE4NGM1MjNjZjg1ZmRlZDZhYmRjZmVi
ZmMyMzZmMTI5MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJH
UFVUZXh0dXJlVmlldz4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZp
ZXc+IGNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0gICAgfldlYkdQVVRleHR1cmVWaWV3
KCkgeyBkZXN0cm95KCk7IH0KLQotICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KLQotICAgIHZvaWQgZGVzdHJveSgpOwotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXZWJHUFVUZXh0dXJlVmlldyhSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0gICAgCi0g
ICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVmZmJkZWJiYzkwNWFjZjZkNzEzZWQwNDI3NzVmYWQzNGVlM2I1MDYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1l
PUdQVVRleHR1cmVWaWV3LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVU
ZXh0dXJlVmlldyB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGEyZGFlZTY0Mjc1YjVmNzkzMjcwY2UzZDVmNDUzNzExNDJmMTJlYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZp
Z2F0b3ItZ3B1Ci0vLyBGSVhNRTogVGhlIHNwZWMgc2F5cyB0aGlzIHNob3VsZCBvbmx5IGJlIGV4
cG9zZWQgdG8gRGVkaWNhdGVkV29ya2Vycy4KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1Xb3JrZXJOYXZp
Z2F0b3JHUFUKLV0gcGFydGlhbCBpbnRlcmZhY2UgV29ya2VyTmF2aWdhdG9yIHsKLSAgICBbU2Ft
ZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVSBncHU7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMDdmMzY2ODNkYzMwMzg0MzI0ZjVhNzI0YjIyMTBi
OTFkOGVkNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yR1BVLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQ
VS5oIgotI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVdvcmtlck5hdmlnYXRvckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5h
dmlnYXRvciogbmF2aWdhdG9yKQotewotICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2
aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKLSAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3Jr
ZXJOYXZpZ2F0b3JHUFU+KCk7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwotICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0K
LWNvbnN0IGNoYXIqIFdvcmtlck5hdmlnYXRvckdQVTo6c3VwcGxlbWVudE5hbWUoKQotewotICAg
IHJldHVybiAiV29ya2VyTmF2aWdhdG9yR1BVIjsKLX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJO
YXZpZ2F0b3JHUFU6OmdwdShXb3JrZXJOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRv
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1
ZXMoKS53ZWJHUFVFbmFibGVkKTsKLSAgICByZXR1cm4gV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9t
KCZuYXZpZ2F0b3IpLT5ncHUoKTsKLX0KLQotY29uc3QgV2ViR1BVKiBXb3JrZXJOYXZpZ2F0b3JH
UFU6OmdwdSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJH
UFU6OmNyZWF0ZSgpOwotICAgIHJldHVybiBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU2NzQ1M2Y5NGJiY2E2Yjk4OWJkNThmNTk1YzgzOGIwMWExMjBhNzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBXZWJHUFU7Ci1jbGFzcyBXb3JrZXJOYXZpZ2F0b3I7Ci0KLWNsYXNzIFdv
cmtlck5hdmlnYXRvckdQVSBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRv
cj4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBXZWJHUFUqIGdwdShXb3JrZXJOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0
aWMgV29ya2VyTmF2aWdhdG9yR1BVKiBmcm9tKFdvcmtlck5hdmlnYXRvciopOwotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSog
Z3B1KCkgY29uc3Q7Ci0KLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMmVhOWNjNTY5Y2Y0NWQ1ZjQyODhlMzBlOGI0ZjNmYTNiNjA4MGIzNC4uNTQ0
NDNmYjg4YTRkY2FiY2JiMzZlNTFmNWMyNzdlNGZmY2NmNWE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTMyMCw5MSArMzIwLDYgQEAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3Bw
CiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcAogTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvR1BV
Q2FudmFzQ29udGV4dC5jcHAKLU1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmNwcAotTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAotTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRXhwcmVzc2lvbi5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0
TGl0ZXJhbFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0
ZXJhbC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlw
ZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZVJlZmVyZW5jZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRU
eXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50
U2NhZmZvbGRpbmcuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9u
V3JpdGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5l
cmF0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3Jp
dGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRv
ci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVu
c2lvbnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2Vy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEludHJpbnNpY3MuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xOYW1lUmVzb2x2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvZ3JhbS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVy
dHlSZXNvbHZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVjdXJzaW9uQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZl
VHlwZUNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dl
YkdQVS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXAuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUXVldWUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1w
bGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHAKIE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmNwcAogTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTIwNzks
MTQgKzE5OTQsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2Uu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVy
LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVFcnJvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Bl
cy5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtMzA3MiwzNCArMjk3
OSw2IEBAIEpTRm9jdXNPcHRpb25zLmNwcAogSlNGb250RmFjZS5jcHAKIEpTRm9udEZhY2VTZXQu
Y3BwCiBKU0Zvcm1EYXRhRXZlbnQuY3BwCi1KU0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuY3Bw
Ci1KU0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuY3BwCi1KU0dQVUJsZW5kRGVzY3JpcHRv
ci5jcHAKLUpTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKLUpTR1BVQnVmZmVyVXNhZ2UuY3BwCi1K
U0dQVUNhbnZhc0NvbnRleHQuY3BwCi1KU0dQVUNvbG9yLmNwcAotSlNHUFVDb2xvclN0YXRlRGVz
Y3JpcHRvci5jcHAKLUpTR1BVQ29sb3JXcml0ZS5jcHAKLUpTR1BVQ29tcGFyZUZ1bmN0aW9uLmNw
cAotSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUVycm9yRmlsdGVy
LmNwcAotSlNHUFVFeHRlbnQzRC5jcHAKLUpTR1BVTG9hZE9wLmNwcAotSlNHUFVPcmlnaW4zRC5j
cHAKLUpTR1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAKLUpTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
LmNwcAotSlNHUFVTYW1wbGVyRGVzY3JpcHRvci5jcHAKLUpTR1BVU2hhZGVyU3RhZ2UuY3BwCi1K
U0dQVVN0b3JlT3AuY3BwCi1KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmNwcAotSlNHUFVUZXh0dXJl
Rm9ybWF0LmNwcAotSlNHUFVUZXh0dXJlVXNhZ2UuY3BwCi1KU0dQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmNwcAotSlNHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCi1KU0dQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuY3BwCi1KU0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVZlcnRl
eElucHV0RGVzY3JpcHRvci5jcHAKIEpTR2Fpbk5vZGUuY3BwCiBKU0dhaW5PcHRpb25zLmNwcAog
SlNHYW1lcGFkLmNwcApAQCAtMzc2MSwzOCArMzY0MCw2IEBAIEpTV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5jcHAKIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCiBKU1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwCiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCi1KU1dlYkdQVS5jcHAK
LUpTV2ViR1BVQWRhcHRlci5jcHAKLUpTV2ViR1BVQmluZEdyb3VwLmNwcAotSlNXZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmNwcAotSlNXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAotSlNXZWJH
UFVCaW5kR3JvdXBMYXlvdXQuY3BwCi1KU1dlYkdQVUJ1ZmZlci5jcHAKLUpTV2ViR1BVQnVmZmVy
QmluZGluZy5jcHAKLUpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKLUpTV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwCi1KU1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKLUpTV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lLmNwcAotSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotSlNX
ZWJHUFVEZXZpY2UuY3BwCi1KU1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcAotSlNXZWJHUFVE
ZXZpY2VFdmVudEhhbmRsZXIuY3BwCi1KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3Bw
Ci1KU1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuY3BwCi1KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVF1ZXVlLmNwcAotSlNXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
Ci1KU1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCi1KU1dlYkdQVVNhbXBsZXIuY3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAK
LUpTV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVU3dhcENoYWluLmNw
cAotSlNXZWJHUFVUZXh0dXJlLmNwcAotSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwCiBKU1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwCiBKU1dlYktpdE1l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjgyZGJj
YzA2Y2VhZTdkNzZjMWUwZTlhNjZhYmY0MjdlMWNjYjQ5Yi4uMGNmOGZiZTQzMzRlMWMyZGIxNTZl
NjU4Mjc2NzE4ZDA2YzlkNzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zODcsNyAr
Mzg3LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXll
ckRlbGVnYXRlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHUFVMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9U
cmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2Nh
ZGVDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5j
cHAKQEAgLTM5OCwyNCArMzk3LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QnVmZmVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVm
ZmVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0Vu
Y29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBl
bGluZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwu
bW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExh
eW91dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRh
bC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0
YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFs
Lm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTYxNiw3ICs1OTcsMyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3Bw
IEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5n
LmNwcCBAbm8tdW5pZnkKLQotLy8gRGVyaXZlZCBTb3VyY2VzCi0KLVdITFNMU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25NYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzJmMzZmYTUzMzg1ZTEzYzMzYjZkNjcwNmQ2YjVmMWI3
YzNhYWY0Zi4uMzQyZTExNmVjMTcwYmYzYWJiM2UxMmQ4NmQyOTNhMTI0NDlkZDBkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTExLDE4ICs5MTEsNiBAQAogCQkzMTI4OEU3NTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJh
bWVzUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyODhFNzEwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCAqLzsgfTsKIAkJ
MzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjhDQTZBMTQ3MzMx
NjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTEx
IC8qIE5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxMkZGOTExMjFB
NEMzNjUwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BV
Q29tbWFuZEJ1ZmZlci5oICovOyB9OwotCQkzMTJGRjkxMjIxQTRDMzY1MDBFQjE5OUQgLyogR1BV
RGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNlLmggKi87IH07Ci0JCTMxMkZGOTEz
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDNDIxQTRDMkY0MDBF
QjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovOyB9OwotCQkzMTJGRjkxNDIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMjIxQTRDMkYz
MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMx
MkZGOTE1MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQ
VVF1ZXVlLmggKi87IH07Ci0JCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQ
aXBlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi87IH07Ci0J
CTMxMkZGOTE3MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJD
MjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLzsgfTsK
LQkJMzEyRkY5MTgyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkIyMUE0QzJGMDAw
RUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICovOyB9OwotCQkzMTJGRjkxOTIxQTRDMzY1MDBF
QjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzEyRkY5MUEyMUE0QzM2NTAwRUIx
OTlEIC8qIEdQVVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEyRkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICov
OyB9OwotCQkzMTJGRjkxQjIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzUyMUE0QzJGNDAw
RUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLzsgfTsKLQkJMzEyRkY5MUMyMUE0QzM2NTAwRUIxOTlE
IC8qIEdQVVRleHR1cmVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0
LmggKi87IH07CiAJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxNzE1NDFGQjA3
OUQxMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTMxMzU5MTA2MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VD
b25uZWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMzU5MTAwMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3RhdGUu
aCAqLzsgfTsKIAkJMzEzNTkxMDcxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM1
OTEwMTFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCAqLzsgfTsKQEAg
LTk1Nyw3ICs5NDUsNiBAQAogCQkzMTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVk
Q2xpY2tPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE3RDNG
RjMyMTU1OTlGNDAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE3RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBv
aW50ZXJFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJbWFnZUJpdG1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFEMjZCQkYxRjg2RDE4OTAw
OEZGMjU1IC8qIEltYWdlQml0bWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMzE4NDM2REUyMUI5REFBRjAwRUQzODNFIC8qIFdlYkdQVUxheWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTg0MzZE
QjIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCAqLzsgfTsKIAkJMzE4ODkxNjExQUI3
RUVBMTAwRUE2MjdCIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjQxOTk5MUFCMERBMTQwMDRFNjRFMSAvKiBt
aXNzaW5nSW1hZ2VAM3gucG5nICovOyB9OwogCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyog
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEVBRDRBMUZBOTExNTcwMDhDRUY4NiAvKiBJ
bWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAv
KiBBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE5ODQ3RkYxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmggKi87
IH07CkBAIC0zMjY5LDkgKzMyNTYsNiBAQAogCQlBMTg4OTBBRjFBQTEzRjI1MDAyNkMzMDEgLyog
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODg5MEFEMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExOTU2RjFDMjMzMUE2NzcwMDU3RTlEMiAvKiBKU0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExOTU2RjFCMjMzMUE2NDYwMDU3RTlEMiAvKiBKU0FwcGxlUGF5Q2FuY2VsRXZlbnQuaCAq
LzsgfTsKIAkJQTE5NTZGMjAyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTk1NkYx
RDIzMzFBOEM3MDA1N0U5RDIgLyogQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCAqLzsgfTsKLQkJQTE5
NTZGMjMyMzMxQUNGMjAwNTdFOUQyIC8qIFdITFNMUmVwbGFjZVdpdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTFGNzBCMjJDQUQ4REEwMDE1QjQw
RCAvKiBXSExTTFJlcGxhY2VXaXRoLmggKi87IH07Ci0JCUExOTU2RjI0MjMzMUFEMjEwMDU3RTlE
MiAvKiBXSExTTFByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLzsg
fTsKLQkJQTE5NTZGMjUyMzMxQUQ1MzAwNTdFOUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjFCRjZG
NDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLzsgfTsKIAkJ
QTE5QUVBMjExQUFBODA4NjAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5QUVBMUUx
QUFBODA2RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyB9Owog
CQlBMTlBRUEyMjFBQUE4MDhBMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUFF
QTFEMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICov
OyB9OwogCQlBMTlEOTM0QjFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExOUQ5MzQ5MUFBMTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02
OTUxLDIwICs2OTM1LDE0IEBACiAJCTFDMjRFRUE2MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRG
YWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRm9udEZh
Y2VTZXQuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNlU2V0LmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyNEVFQTcxQzcyQTdC
NDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSlNGb250RmFjZVNldC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zv
bnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjY0
OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMjgxQzZEMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENo
ZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja1Rl
eHR1cmVSZWZlcmVuY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMyODFD
NkUyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVp
bGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFu
dEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzMzMjc3MTIxQ0Yw
QkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1l
ZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3NzIyMUNGMEQyRTAw
MERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVk
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzM5NjlDRjFCNzQyMTFFMDAy
QkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzQzREU2ODIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xs
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudFRy
YWl0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2QTIy
QUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzREMEREMTI0RDlGMERCMDAz
RDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoQnVmZmVy
TWVtYmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUwQzQ5NTIyQzg0RjI0
MDBBNkU0QkUgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2Nv
cGVkU2V0QWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTY29wZWRTZXRBZGRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9u
dEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRjFDNkU3Q0E2MDBBQjUy
N0MgLyogRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM2Qjk1REQyMkM4NThBNDAwRTZG
MTRGIC8qIFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhv
bjsgcGF0aCA9IFdITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2RkQ4QUMyNTBBMjk0RDAwRDZFOTIwIC8qIEZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhBRDI1
MEEyRTUzMDBENkU5MjAgLyogR2x5cGhQYWdlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2x5cGhQYWdlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzZGRDhBRTI1MEEzMTE1MDBENkU5MjAgLyogRm9udENhc2NhZGVDb3JlVGV4dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY5NzMsNDggKzY5NTEsMTcgQEAKIAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCN0Qy
MUVCRTBCODAwRDA1MDBEIC8qIFdITFNMRW50cnlQb2ludFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xFbnRyeVBvaW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0
MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xBZGRyZXNzU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4
NDBCOTcyMUVDNDAwNzAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOTkyMUVD
NDAwODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50
cnlQb2ludEl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAw
RCAvKiBXSExTTENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYx
IC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xD
b21wdXRlRGltZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZD
QTRDMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUM4NkNBNEUyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0
TGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5
b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEYyMkFBMjNDOTAw
MUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMg
LyogV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzhEMjZEMDIyQzA5Q0RFMDBEMTI1RjMgLyogbGliY29tcHJlc3Npb24udGJkICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNv
ZGUudGV4dC1iYXNlZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYmNvbXByZXNzaW9uLnRi
ZDsgcGF0aCA9IHVzci9saWIvbGliY29tcHJlc3Npb24udGJkOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKIAkJMUM5MDRERjkwQkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGln
aFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5k
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlBRTVDQjIxRUQ5REY1MDA2
OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGln
aFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJERTIx
RUVCNUY0MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0EwQzJFMDIxRUVCNUY1MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDQTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9u
U3RhZ2VDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNo
ZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNTIxRUVEMTJB
MDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0FBODJGNjIyNDJBRTA1MDBFODRC
QkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
UHJvcGVydHlSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE4
MkY3MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3Jp
cHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkRFMjUzMDI0NUEw
MDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIg
LyogV0hMU0xFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVycm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29s
dmFibGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb2x2YWJsZVR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdITFNM
RmxvYXRMaXRlcmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZB
IC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM3MjFE
RUQ2NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRM
aXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0
NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0I2OUIzQjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNC
OUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZC
MjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRVbmRlcmxpbmVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUND
REY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJB
RCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNEQUJENkIyMkM4NDc5QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAx
NDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViQ29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTcwMjMsMjAgKzY5NzAsNiBAQAogCQkxQ0U4RDEyNTI2MTg1QkQ4
MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDRThEMTJCMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlz
cGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAv
KiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0VDQjNBOTIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIg
LyogV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjAyMUYy
Qjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlw
ZU5hbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IxMjFGMkI5ODUw
MEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5
cGVOYW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IyMjFGMkI5
ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
RnVuY3Rpb25Xcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjUy
MUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUNFQ0IzQjYyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNC
OTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0JCMjFGNTExQUEwMEY0
NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0VDQjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5
cGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjBCRkQ0MjI5ODcwNjgwMEVEMjA3NCAvKiBUZXh0
U2l6ZUFkanVzdG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFNpemVBZGp1c3RtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1
OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHls
aWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwogCQkxRDAwMjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJl
V2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGljdHVyZUluUGlj
dHVyZVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2NiwyMiArNzM5
OSw2IEBACiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0tleWZyYW1lc1J1bGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIx
OTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVs
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJBMjFBNEMyRUYwMEVC
MTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU3dhcENoYWluLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBH
UFVTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJEMjFB
NEMyRjEwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNv
bW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkUyMUE0
QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkYyMUE0QzJGMTAwRUIxOTlEIC8q
IEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEMxMjFBNEMyRjIw
MEVCMTk5RCAvKiBHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhD
MzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVUZXh0dXJlRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM0
MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJG
RjkzOTIxQTYxQzlGMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVRdWV1ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMkZGOTNEMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1
ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVUXVldWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRkY5M0UyMUE2MUYwNzAwRUIxOTlEIC8q
IEpTV2ViR1BVUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU0
MUZCMDc5RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbnZhc0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1
NjQsOCArNzQ4MSw2IEBACiAJCTMxN0QzRkVGMjE1NTk5RTEwMDM0RTNCOSAvKiBQb2ludGVyRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFBvaW50ZXJFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxN0QzRkYxMjE1NTk5RTIwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pbnRlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzE3RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb2ludGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE4NDM2
REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxODQzNkREMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkdQVUxheWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTg5RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IHBsdWdJbnMuY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMThFQUQ0QTFGQTkxMTU3MDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0U2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFE
NEMxRkE5MTM1MjAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjczLDcgKzc1ODgsNiBAQAogCQkzMzUwM0M5RjEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlm
aWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RpZmlj
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzUxRjcwQjIyQ0FEOERB
MDAxNUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlcGxh
Y2VXaXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM1Qzc0RkQzMjI4QTE5MTIw
MDBDMjFBMCAvKiBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNUM3NEZENzIyOEExOUE2MDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM2NjJGOTg0MDQ3Q0VEQkU1REREQUZBQSAvKiBSZW5k
ZXJNYXRoTUxNZW5jbG9zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTE0LDE5ICs5MDI4LDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRl
bnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25T
dHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRl
bnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVB
MUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMTU4NjJDMjI5Mzc3Qjcw
MDU5MjVFRiAvKiBXSExTTEFTVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFTVC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjI1NkNBQTIzMEYxNEFEMDA0M0UxMkYgLyogV0hMU0xO
YW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xOYW1lU3BhY2UuaDsgcGF0aCA9IEFTVC9X
SExTTE5hbWVTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJCQUI5NjIy
RTZBMzYyMDBDNTRDRTkgLyogV0hMU0xDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xDb2RlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRDA3QTMy
MkZCQUI0MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJE
QTNEMzIyOUUxRDM5MDA0MkQxNTEgLyogV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIy
RTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNM
Q2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjRCRDQ4MDIz
Mjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
NjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNGMDEyMkZCN0JERDAw
NzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjZCM0YwMzIy
RkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NDI1
NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1YUkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mjcz
Q0M3NTI1NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtWFJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M5
QTI1NjNCMjEyMDA4NTAwMDcgLyogSlNXZWJYUlRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJYUlRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTEzOCwxMiArOTA0MSw5IEBACiAJCTUyNzNDQ0FEMjU2NDU3NkMwMDg1MDAwNyAv
KiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSVmlld0luaXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hM
U0xQYXJzaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExT
TEFkZHJlc3NFc2NhcGVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdD
RTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3
RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAv
KiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxl
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEZWZhdWx0RGVsZXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFu
YWdlck9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0xheWVyTWFuYWdlck9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVB
MThFMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NzcsMTMg
KzEwNjc3LDEwIEBACiAJCTdDN0JGOTQ5MjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3JtYW5jZU1l
YXN1cmVPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5NEIyNTE2RkE1NDAwODA4Njgy
IC8qIFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3Vy
ZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzdCRjk1MDI1MTZG
QjU0MDA4MDg2ODIgLyogUGVyZm9ybWFuY2VNZWFzdXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBlcmZvcm1hbmNlTWVhc3VyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdD
N0M3NjlDMjJGNjdFQ0QwMDMyQkNDRCAvKiBXSExTTE1hbmdsZWROYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTE1hbmdsZWROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzgxMzlBMzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RP
TU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVu
bmFtZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4NEYgLyog
V0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZUhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4ODI0QzQyNDlEN0IwNTAwRUQ4
RkM0IC8qIFNWR1BhdGhTZWdWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoU2VnVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RTM0
OTIxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnZlcnRBbnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4RTM0OTMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1MjcsMTAgKzExNDI0LDYgQEAKIAkJOTE3NUNF
NTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTE3NUNFNUEyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNF
NUEyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0Iz
MjMyOUZCMDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
MTg2RjNCNjIzMjlGQjRFMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5MTg2RjNCNzIzMjlGQjRGMDBBRkY4NTcgLyogV2ViR1BVUGlw
ZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3
IC8qIEdQVVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVVBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOEYwQjMy
MTk1M0Q2NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlU3VtbWFyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDZXJ0aWZpY2F0ZVN1bW1hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY29yZGluZ1N3aXp6bGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTMsNyArMTI2MDYsNiBAQAogCQlB
MzdBNDJFMDI1MjdCNDlDMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTIyNTI3QjQ5
RDAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzOEE4N0Ez
MjUzOEJFRTcwMDM3QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzQUY5RDgxMjAzMjUyRUUwMDZDQUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNl
ckFnZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNl
ckFnZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MjEsNyArMTI2
MTMsNiBAQAogCQlBM0JGN0VGMjI1NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJD
b21waWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY0MjU2QzhENzIwMDQ0QkM3
NSAvKiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY1
MjU2QzhENzQwMDQ0QkM3NSAvKiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEtI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNENDJBODQxRjMzQkEzNjAwQTY0QjYyIC8qIExheW91dFVuaXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAv
KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFj
Y2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NzA3LDEyMSArMTQ1OTgsMTYgQEAKIAkJQzFGN0I3MkYyNDQ4RjJB
QzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
R1hDb21waWxlclNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUY3
QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFHWENvbXBpbGVyU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRl
cmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MEY4OEFBMjI5NjZCMEUwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTEFTVER1bXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMEY4OEFDMjI5NjZCMEYwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEFTVER1bXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEw
RTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTIy
MUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2
QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xC
dWlsdEluU2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEEx
NTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMTM4QTE2MjFEREVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5Nzkg
LyogV0hMU0xDb250aW51ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnRpbnVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExT
TEJvb2xlYW5MaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQm9vbGVhbkxpdGVyYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8q
IFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW5kZXhFeHByZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY4MjFDRDg5QkIwMDIy
Nzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdl
ckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjkyMUNEODlC
RDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRp
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5
NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlU2VtYW50
aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3
OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb1doaWxlTG9v
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5
NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZG
RTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMU3RydWN0dXJlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMzIxQ0Q4
OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5
IC8qIFdITFNMV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBX
SExTTEZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25BdHRy
aWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDYyMUNEODlDNzAw
MjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29t
bWFFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA4MjFD
RDg5QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xSZXNvdXJjZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcw
QTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRp
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5
NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3
OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAv
KiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVS
ZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTQyMUNEODlE
MzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE2MjFDRDg5RDUwMDIy
Nzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTgyMUNEODlE
NzAwMjI3OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERv
dEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTkyMUNE
ODlENzAwMjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3
aXRjaENhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUEyMUNEODlE
ODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCcmVhay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyog
V0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxQzIxQ0Q4OURBMDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzFEMjFDRDg5REIwMDIyNzk3OSAvKiBXSExTTFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUYyMUNEODlEQzAw
MjI3OTc5IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVS
ZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjAyMUNEODlE
RDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5
NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCdWlsdElu
U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjMyMUNEODlF
MTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVu
Y2VUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExT
TEVudW1lcmF0aW9uTWVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1i
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3
OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0
cnVjdHVyZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdI
TFNMVHlwZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlRGVmaW5pdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyQTIxQ0Q4OUU3MDAyMjc5Nzkg
LyogV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50
ZXJFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3
OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5
NzkgLyogV0hMU0xQb2ludGVyVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBvaW50ZXJUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMwMjFDRDg5RUQwMDIyNzk3
OSAvKiBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXNz
aWdubWVudEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMU3dpdGNoU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTG9naWNhbEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAvKiBXSExT
TEZvckxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGb3JMb29wLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0
ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY3MzcyMUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MzgyMUNEOEEwMzAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzNBMjFDRDhENzAw
MDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9ncmFtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMUJGNzQyMjFDRDk2M0IwMDIyNzk3OSAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXSExTTFN0YW5kYXJkTGli
cmFyeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJkTGlicmFy
eS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlDMjFCRjc0NTIxQ0Q5
Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdITFNMU3RhbmRh
cmRMaWJyYXJ5LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlF
NEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9u
dFZhcmlhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0Zv
bnRWYXJpYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4
NTIxRTg4NkE5MDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMVmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTg3
MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xW
aXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThBMjFFODg4M0Uw
MDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TE5hbWVSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThD
MjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE5hbWVSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4
RDIxRTg4ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTE5hbWVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIzNEE5OEUyMUU4ODg4NTAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xOYW1lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjM0QTk5NzIxRTkwRjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjM0QTk5OTIxRTkwRjI5MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3Zl
cmxvYWRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1w
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlBMjFFOTBGNTYwMDND
OTg0RCAvKiBXSExTTEluZmVyVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbmZl
clR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUIyMUU5MEY1
NzAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZmVy
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUQyMUU5MTBCRDAw
M0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29s
dmluZ1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUIyMUU5MkMx
ODAwM0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTlBQzIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25G
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUQyMUU5MkMxOTAw
M0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOUFFMjFFOTJDMUEwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8q
IFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTlCMTIxRTkyQzFEMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3Jz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xD
aGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIz
NEE5QjMyMUU5MkMyMTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjYyMUU5MkND
MDAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludHJp
bnNpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjcyMUU5MkNDMTAw
M0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTElu
dHJpbnNpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM5OEVCRDIzMEEx
Qjc2MDA2NDE1MDcgLyogV0hMU0xOYW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1l
U3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThFNjExRkU4OTc5RTAw
NTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZUNv
cmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0FGMjFGQUQ1M0Yw
MDRDNkREMSAvKiBXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRB
NTdCMjIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNo
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QkEyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFy
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFByZXBhcmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlcGFyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjYwMTdBMTFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyog
Q1NTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9u
dEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0MxQzZEQjE5
NDAwMTQ1MUI2IC8qIEZvbnRGYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFj
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNEMUM2REMyMkMwMDE0
NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTRm9udEZhY2UuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRG
YWNlLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQzI4MDgzM0Ux
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNGb250RmFjZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zv
bnRGYWNlLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODBCM0ZE
MUVGNDYwODkwMEQzNTEzNSAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbk51bGwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25O
dWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI4OEM3MkQyMUM5OTFEQTAw
MkRGNUNBIC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
VHlwZUFyZ3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBBRjQx
RTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY1MUU2QjNDNkMwMDEzNDhDNSAvKiBG
b250U2VsZWN0aW9uQWxnb3JpdGhtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzJBQjBCMDMxRTZERTkyQzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU0MjgsMjI5ICsxNTIxNCwyOCBAQAogCQlEMDAwRUJBMTExQkRB
RkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YmZyYW1lTG9h
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjYxMUMxQjlDRDAw
QzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN1YmZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDFE
OUFCMjFCMEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3OTIxQzg2NDVCMDA2MjJB
QTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJpbmRH
cm91cExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3QTIxQzg2
NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVUJpbmRHcm91cExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUJpbmRHcm91cExheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMDMyODg0MjFDOUEyMEQwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDMyODg2MjFDOUE0RTUwMDYyMkFBNiAvKiBH
UFVQaXBlbGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZUxheW91dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NzIxQzlBNEU1MDA2MjJBQTYgLyog
R1BVUGlwZWxpbmVMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlv
dXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzOTE0MTIyMjQ4RDQwMDA5
ODk5OEMgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDA0ODdEMjIyNDU3QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0U1MjI2QTYz
NDIwMEVFRDdEOSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDA0ODdFQjIyNzQyODEyMDBFRUQ3RDkgLyogTmF2aWdhdG9yK0dQVS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gIk5hdmlnYXRvcitHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAwNDg3RUQyMjc0MjgxMzAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDA0ODdFRTIyNzQyODE0MDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRvckdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdGRDIy
NzdBRjgxMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIldvcmtlck5h
dmlnYXRvcitHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RkUy
Mjc3QUY4MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
b3JrZXJOYXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3
RkQyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRDc3RkUyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMg
LyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NjIxNkVGRTU0
MDAwRDcxREIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTRGMjE2RkZBQzIwMDBE
NzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8q
IFdlYkdQVUFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQWRhcHRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAv
KiBXZWJHUFVBZGFwdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVBZGFwdGVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmlj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRjU5NTMyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVEZXZpY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFBMjdB
QjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRT
dHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0cmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDFCODExMjIyMTI1QUZDMDA2MjdC
NkMgLyogR1BVQ29sb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAxQjgxMTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDFCODExQzIyMTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEdQVUJ1ZmZlclVzYWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAxQjgxMUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUJ1ZmZlclVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjMy
QjU4MjFDQjQ5QjcwMDk0ODNCOSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dE1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDI0NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3Vw
TGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50
M0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRXh0ZW50M0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVFeHRlbnQzRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgz
MjIwQTQ3MkYwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVV
c2FnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDg1MjIwQTQ3NzIw
MEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZVVz
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDhCMjIwQTVCMEIwMEFD
NUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QzIyMEE1QkFEMDBB
QzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyQzI2OTIyMTgx
NDE2RDAwRDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAz
MjExQ0UyMUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEw
Mjg0IC8qIEdQVUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yU2NvcGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAv
KiBHUFVFcnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvclNjb3Blcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMzZERDhEMjA4RkZDMEMwMEY5RjRC
MiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5QTIx
RkZDNjY3MDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXBhcmVGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5RTIxRkZDRjAwMDAwMjIyN0YgLyogR1BVQ29tcGFy
ZUZ1bmN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDNDODRBMjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFMTIxQzlCNTBGMDAw
MzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyog
V2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlv
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMy
Qjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5
RTYyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVQaXBlbGluZUxheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNF
RDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3Jt
YXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1h
dEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVERDZERDIy
Mzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDQzIx
N0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZD
RDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwNjVCRTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQmluZEdyb3VwQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0
b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvck1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZBOUEyMTIyMDI2QzdBMDA4
M0M2NjIgLyogR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZD
MEQ4RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwNkMwRDhFMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92
ZUZvcm1hdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZFRjU1
MjIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2RUY1NTMyMjBCQTI2QTAwMTg3MjRF
IC8qIEdQVVV0aWxzTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVVdGlsc01ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDdERUFCNzBBMzY1NTRBMDBDQTMw
RjggLyogSW5zZXJ0TGlzdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDA3REVBQjgwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BV
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODQwMzNEMjIxRTE4NjQwMDAwNzIwNSAvKiBXZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg0M0E0QzIwRkVD
MTY1MDBGRTg2MEUgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODVFNjRBMjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5k
R3JvdXBNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cE1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5NjA5RDUzQUFCMDA1QkM3NEQg
LyogVW5saW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxp
bmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODZGRTk3MDlENTNB
QUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVubGlua0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDg3Q0UzODIxQUNBOTQyMDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVl
dWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVF1ZXVlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVS
ZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVy
UGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NF
M0IyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQzIxQUNBOTQyMDBCREUxNzQg
LyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0QyMUFDQTk0MjAwQkRF
MTc0IC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDg3Q0UzRTIxQUNBOTQyMDBCREUxNzQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDA4N0NFM0YyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVs
ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAv
KiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA4OTAzMzUyMjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNzIyNDA2MUFDMDBGM0Y0NDAgLyogV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzM4MjI0MDYyODkwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzOTIy
NDA2NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwODkwMzNCMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlw
ZWxpbmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQzIyNDFBOTlGMDBG
M0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNv
bXB1dGVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRDIy
NDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwODkwMzNFMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzNGMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRl
UGFzc0VuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNz
RW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRDIy
MEQwQjlDMDA1OEM1MDIgLyogR1BVTG9hZE9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVMb2FkT3AuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRjIyMEQwQkQ1MDA1OEM1MDIgLyogR1BV
TG9hZE9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxvYWRPcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gR1BVU3RvcmVPcC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDMy
MjIwRDBEMEIwMDU4QzUwMiAvKiBHUFVTdG9yZU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN0b3Jl
T3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzYyMjBEMTlEQTAwNThD
NTAyIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM3
MjIwRDFEMDUwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXND
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0Nv
bnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAv
KiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFD
MDA3MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDlBQzAwQTIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDlBQzAwQjIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNl
RXZlbnRIYW5kbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2Vi
R1BVRGV2aWNlRXJyb3JTY29wZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDEyMkQwMkU1MzAw
QzQ1MzhDIC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA5QUZCMDIyMkQwNDcxOTAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VF
cnJvclNjb3Blcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwNjIyRDQxN0IzMDBDNDUzOEMgLyogR1BVRXJy
b3JGaWx0ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA5QUZCMDcyMkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFG
QjA4MjJENTU0MjgwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBDMjJENTVF
OTAwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVZhbGlkYXRpb25F
cnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBEMjJENTVGM0Iw
MEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmFsaWRh
dGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBFMjJENTVG
RjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVVmFsaWRhdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5
QUZCMTcyMkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQ
VU91dE9mTWVtb3J5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
RkIxOTIyRDY2OThBMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVPdXRPZk1lbW9yeUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwOUFGQjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjM3
MjJEN0Q1QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVU9i
amVjdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBB
NjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQTNBNzMwMTQwNUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjYyMjIzMDlENzYwMEEy
MjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTYW1wbGVy
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MzIyMzA5
RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNhbXBsZXJE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjgyMjMw
QUFDQjAwQTIyOTM1IC8qIEdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2FtcGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUg
LyogR1BVU2FtcGxlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2FtcGxlck1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QzIyMzBCQjhFMDBB
MjI5MzUgLyogV2ViR1BVU2FtcGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAv
KiBXZWJHUFVTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RjIyMzBDMUYxMDBBMjI5MzUg
LyogV2ViR1BVU2FtcGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2FtcGxlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyN0YyMjMyRjE3MzAwQTIy
OTM1IC8qIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlEMEFEQjI4QTIy
Mzc3MzYxMDBBMjI5MzUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVD
b2xvclN0YXRlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QzIyMzc4NDJFMDBB
MjI5MzUgLyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCMDU1NjYwOUM2
NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5
QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmxlbmREZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFCMjI0RUM2MjQwMDYx
MDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5
QyAvKiBHUFVDb2xvcldyaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQ
VUNvbG9yV3JpdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEI4QkIwMTIxQzQ2RTc4MDAwQzc2ODEgLyogR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAv
KiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlC
NiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBCRTEwNEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEJFMTA0QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVCdWZmZXJCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwQkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCRTEwNEUyMUU2OTVFMjAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MjIxRTZBQTBEMDBFNDJB
ODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUx
MDUzMjFFNkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBC
RTEwNjAyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEw
NjEyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVCaW5kR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQjIx
ODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlG
MDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURF
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY5MjE4
NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENBQUQ1MzIy
NzdDMkE2MDA4MDFDREYgLyogV29ya2VyTmF2aWdhdG9yR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdvcmtlck5hdmlnYXRvckdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVPcmlnaW4zRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0QTIy
Mjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU9yaWdpbjNELmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8q
IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ2
OUM5RDIyMkUwMEMyMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDY5QzlGMjIyRTAxNUUwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0ODcyMUI2NENBQTAwM0M5ODNDIC8qIEdQVUJ1
ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQnVmZmVyRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyog
V2ViR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVm
ZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZm
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwRDg2NDkxMjFCNzYwQzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5
NDIxQkExNzNEMDAzQzk4M0MgLyogR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEQ4NjQ5NjIxQkExOEY0MDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDk4MjFCQTE5QTcwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhC
dWZmZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8q
IEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUIyMUJB
MUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJH
UFVTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRl
clN0YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFn
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR1BVU2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNv
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdl
YkdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBX
ZWJHUFVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRl
eHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVU
ZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBFQUNGODcyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRUFDRjg4MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0
dXJlVmlldy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEVBQ0Y4QzIxOTQwM0M5MDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVD
IC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhGMjE5
NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRUFDRjkwMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEVBQ0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTIyMTk0MEE1
QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTMyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRkFFMjE5RTMwRkQwMDBG
QTc1QyAvKiBHUFVUZXh0dXJlRm9ybWF0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVUZXh0dXJlRm9ybWF0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8q
IENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRjc1NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZlcnRleEJ1ZmZl
ckluZGV4Q2FsY3VsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5
OTIyMDM5MUMzMDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTgg
LyogR1BVTGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxpbWl0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8q
IFBpbmdMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGluZ0xvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMkNEQjVFRDYzOEY0M0FGODZGMDdB
QTIgLyogSlNFcnJvckV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRXJyb3JFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xOTE2OCwxMDMgKzE4NzUzLDYgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKLQkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTI5MTRDMkMyMkY5M0U1
RDAwNTc4MTUwIC8qIFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCAqLywKLQkJCQkxQzg0MEI5MDIx
RUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIx
Q0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFC
RjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjcz
MDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJ
CTUyMTU4NjJDMjI5Mzc3QjcwMDU5MjVFRiAvKiBXSExTTEFTVC5oICovLAotCQkJCUMyMUJGNzBB
MjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJ
CUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJ
CUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2
RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFC
RjcxQTIxQ0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFE
REVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3
MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIx
QkY3MTYyMUNEODlENTAwMjI3OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAq
LywKLQkJCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAot
CQkJCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAqLywK
LQkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNz
aW9uLmggKi8sCi0JCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxv
b3AuaCAqLywKLQkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50LmggKi8sCi0JCQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8q
IFdITFNMRW50cnlQb2ludFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjcyNjIxQ0Q4OUUz
MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovLAotCQkJCUMyMUJGNzAyMjFD
RDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJ
CTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovLAotCQkJ
CUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovLAotCQkJCUMy
MUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5oICovLAotCQkJCTFD
QjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLAot
CQkJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAq
LywKLQkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCi0J
CQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LywKLQkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0
aW9uLmggKi8sCi0JCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25E
ZWZpbml0aW9uLmggKi8sCi0JCQkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKLQkJCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5Nzkg
LyogV0hMU0xJZlN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAv
KiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1
QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAy
Mjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMw
MDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUy
MURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
ICovLAotCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hM
U0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywKLQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5
RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJCQlDMjM5OEVCRDIzMEExQjc2MDA2NDE1MDcg
LyogV0hMU0xOYW1lU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyog
V0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlF
NzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3
MjEyMUNEODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgg
Ki8sCi0JCQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAq
LywKLQkJCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xRdWFs
aWZpZXIuaCAqLywKLQkJCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5IC8q
IFdITFNMUmVmZXJlbmNlVHlwZS5oICovLAotCQkJCTMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAv
KiBXSExTTFJlcGxhY2VXaXRoLmggKi8sCi0JCQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8q
IFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywKLQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEg
LyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAy
Mjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlD
NTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3
OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEg
LyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJG
NzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5oICovLAotCQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3Rh
Z2VJbk91dFNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdI
TFNMU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNM
U3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAv
KiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5
NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8sCi0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5
IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3
OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxRDIxQ0Q4OURC
MDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8sCi0JCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNB
IC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKLQkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5
NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLywKLQkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5
NzkgLyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcw
QzQ1QSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAotCQkJCUMyMUJGNzFGMjFDRDg5REMw
MDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKLQkJCQk3Qzg1QjIwMTIyRkIwNDg1
MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8sCi0JCQkJMUMzMzI3NzIyMUNGMEQy
RTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKLQkJCQk3Qzg1QjIwNDIyRkIwNjMy
MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLywKLQkJCQlDMjBGNEY2NzIxREZG
M0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlD
MjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgg
Ki8sCi0JCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MTAyMUNEODlEMDAw
MjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzE0MjFD
RDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8s
Ci0JCQkJQzIxQkY3MTMyMUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2Uu
aCAqLywKLQkJCQlDMjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gQVNUOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5Mjg0LDI4ICsxODc3Miw2
IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDRUNCM0FE
MjFGMkI5NjQwMEY0NDU0MiAvKiBNZXRhbCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUNFQ0IzQkEyMUY1MTFBQTAwRjQ0NTQyIC8qIFdITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmNwcCAqLywKLQkJCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyog
V0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLywKLQkJCQkxQ0VDQjNBRjIxRjJCOTg0MDBG
NDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjIyMUYyQjk4
NjAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQk3QzdDNzY5QzIyRjY3
RUNEMDAzMkJDQ0QgLyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLywKLQkJCQkxQ0VDQjNCNTIxRjUw
QUM3MDBGNDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwICovLAotCQkJCTFDRUNC
M0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAotCQkJ
CTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNw
cCAqLywKLQkJCQkxQ0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5oICovLAotCQkJCTFDRUNCM0M2MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2
ZVR5cGVXcml0ZXIuY3BwICovLAotCQkJCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExT
TE5hdGl2ZVR5cGVXcml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyog
V0hMU0xUeXBlTmFtZXIuY3BwICovLAotCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBX
SExTTFR5cGVOYW1lci5oICovLAotCQkJCUQwRjc1NTk5MjIwMzkxQzMwMDExODA1OCAvKiBXSExT
TFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAgKi8sCi0JCQkJRDBGNzU1OTgyMjAzOTFD
MzAwMTE4MDU4IC8qIFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggKi8sCi0JCQkp
OwotCQkJcGF0aCA9IE1ldGFsOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
MUQwMDI2OUEyMzc0QjlGODAwQ0E2Q0RGIC8qIFBpY3R1cmVJblBpY3R1cmUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjA1MDQsODAgKzE5OTcwLDYgQEAK
IAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQ5
ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCUQwODdDRTM3MjFBQ0E5NDIwMEJERTE3NCAvKiBjb2NvYSAq
LywKLQkJCQlEMEJFMTA1RTIxRTZCQUQzMDBFNDJBODkgLyogR1BVQmluZEdyb3VwLmggKi8sCi0J
CQkJRDA2NUJFNTcyMkZCNjE2RDAwNzZERDYwIC8qIEdQVUJpbmRHcm91cEFsbG9jYXRvci5oICov
LAotCQkJCUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5nLmgg
Ki8sCi0JCQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cERlc2NyaXB0
b3IuaCAqLywKLQkJCQlEMDI0NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3VwTGF5
b3V0LmggKi8sCi0JCQkJRDBCNTZFQUEyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3Jp
cHRvci5oICovLAotCQkJCUQwODQwMzNBMjIxQ0JGNTQwMDAwNzIwNSAvKiBHUFVCdWZmZXIuY3Bw
ICovLAotCQkJCUQwRDg2NDkyMjFCNzYwRjIwMDNDOTgzQyAvKiBHUFVCdWZmZXIuaCAqLywKLQkJ
CQlEMEJFMTA0QTIxRTY4NzJGMDBFNDJBODkgLyogR1BVQnVmZmVyQmluZGluZy5oICovLAotCQkJ
CUQwRDg2NDg3MjFCNjRDQUEwMDNDOTgzQyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8sCi0J
CQkJRDAxQjgxMUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8sCi0JCQkJ
RDAwMUQ5QUIyMUIwQzdCRjAwMjNCOUJDIC8qIEdQVUNvbG9yLmggKi8sCi0JCQkJRDBBREIyOEIy
MjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBC
NTZFQUQyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaCAqLywKLQkJCQkzMTJGRjhC
RDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCUQwM0M4NDlD
MjFGRkM3RkMwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVuY3Rpb24uaCAqLywKLQkJCQlEMDg5MDMz
RjIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8sCi0JCQkJRDA4
OTAzM0EyMjQxNzlCNTAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZS5oICovLAotCQkJCUQw
ODkwMzM5MjI0MDY0MkQwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJRDAzQzg0OUEyMUZGQzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRl
RGVzY3JpcHRvci5oICovLAotCQkJCTMxMkZGOEJGMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZp
Y2UuY3BwICovLAotCQkJCTMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAq
LywKLQkJCQlEMDlBRkIwODIyRDU1NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJ
CUQwOUFGQjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8sCi0JCQkJRDA5QUZC
MDcyMkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8sCi0JCQkJRDA5QUZCMDIyMkQwNDcx
OTAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8sCi0JCQkJRDAzNTg2QjIyMkQ3RjJFQTAw
REEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmNwcCAqLywKLQkJCQlEMDM1ODZCMTIyRDdGMkVBMDBE
QTAyODQgLyogR1BVRXJyb3JTY29wZXMuaCAqLywKLQkJCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVG
NDkgLyogR1BVRXh0ZW50M0QuaCAqLywKLQkJCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTggLyog
R1BVTGltaXRzLmggKi8sCi0JCQkJRDA4QUEwMkYyMjBEMEJENTAwNThDNTAyIC8qIEdQVUxvYWRP
cC5oICovLAotCQkJCUQwOUFGQjM3MjJEN0Q1QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmgg
Ki8sCi0JCQkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3Iu
aCAqLywKLQkJCQk5MTg2RjNCQTIzMjlGRTY4MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuY3BwICov
LAotCQkJCTkxODZGM0IzMjMyOUZCMDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovLAotCQkJ
CTMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgg
Ki8sCi0JCQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNw
cCAqLywKLQkJCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQu
aCAqLywKLQkJCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmggKi8sCi0JCQkJQTNDM0RDNUQyNTNBMTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRm
b3JtVHlwZXMuaCAqLywKLQkJCQlEMDAzOTE0MTIyMjQ4RDQwMDA5ODk5OEMgLyogR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAv
KiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovLAotCQkJCTMxMkZGOEMyMjFBNEMyRjMw
MEVCMTk5RCAvKiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJG
RjhDMTIxQTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLywKLQkJCQlEMDMyMTFEMDIxQUM5
NTRGMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDMyMTFD
RTIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJG
RjhCOTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKLQkJCQkzMTJG
RjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8s
Ci0JCQkJRDA2QTlBMjEyMjAyNkM3QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cy5oICovLAotCQkJCUQwQURCMjY4MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8s
Ci0JCQkJRDBBREIyNjIyMjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICov
LAotCQkJCTMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmggKi8sCi0JCQkJRDA4QUEwMzIyMjBEMEQwQjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaCAq
LywKLQkJCQkzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8sCi0J
CQkJRDBBREIyN0YyMjMyRjE3MzAwQTIyOTM1IC8qIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAq
LywKLQkJCQkzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oICovLAotCQkJ
CUQwMjZGNDhDMjIwQTVCQUQwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovLAot
CQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggKi8sCi0J
CQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5oICovLAotCQkJ
CUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovLAotCQkJCUQwOUFGQjBF
MjJENTVGRjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3BwICovLAotCQkJCUQwOUFG
QjBEMjJENTVGM0IwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLywKLQkJCQlEMEQ4
NjQ5QjIxQkExQzJEMDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oICov
LAotCQkJCUQwRDg2NDlDMjFCQTFDRTgwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlw
dG9yLmggKi8sCi0JCQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0
RGVzY3JpcHRvci5oICovLAotCQkJKTsKLQkJCXBhdGggPSBncHU7Ci0JCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwotCQl9OwogCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQzMzcsNyArMjM3Mjks
NiBAQAogCQkJCTU3RDg0NjJBMUZFQUY1N0YwMENBMzY4MiAvKiB3ZWJhdXRobiAqLywKIAkJCQk5
N0JDNjlENTE1MDVGMDU0MDAxQjc0QUMgLyogd2ViZGF0YWJhc2UgKi8sCiAJCQkJOTk2RTU5REEx
REYwMEQ0NTAwNjYxMkI5IC8qIHdlYmRyaXZlciAqLywKLQkJCQlEMDBGNTkzRTIxNkVDQzQzMDAw
RDcxREIgLyogd2ViZ3B1ICovLAogCQkJCTk3QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJz
b2NrZXRzICovLAogCQkJCUUxRUU4QUM2MjQxMkIxNkYwMEU3OTRENiAvKiB3ZWJ4ciAqLywKIAkJ
CSk7CkBAIC0yNzAyNyw3ICsyNjQxOCw2IEBACiAJCQkJQ0Q5RDgyN0MxQzdCQjJFRDAwNkZGMDY2
IC8qIGN2ICovLAogCQkJCTBGRTVGQkM5MUMzREQ1MDYwMDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMg
Ki8sCiAJCQkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRlcnMgKi8sCi0JCQkJNDk4
NzcwQzExMjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLywKIAkJCQk0NDFBRjBBNzBFQkE3QkJGMDA0
NEVENEIgLyogaW9zICovLAogCQkJCUNEODkyRjVBMUZCNTJBQ0YwMDkzMzNEMiAvKiBpc28gKi8s
CiAJCQkJQjI3NTM1NDkwQjA1MzgxNDAwMkNFNjRGIC8qIG1hYyAqLywKQEAgLTI3NDY0LDggKzI2
ODU0LDYgQEAKIAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uLm1tICovLAogCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi8sCiAJCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
bW0gKi8sCi0JCQkJMzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8s
Ci0JCQkJMzE4NDM2REQyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLm1tICovLAogCQkJ
CTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICov
LAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2Nv
YS5tbSAqLywKIAkJCSk7CkBAIC0yODMyNCw4NCArMjc3MTIsNiBAQAogCQkJbmFtZSA9IG1hYzsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUMyMTBFOTBEMjFCNEJDQTQwMEI3
RjgzRCAvKiBXSExTTCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLywKLQkJCQkxQ0VDQjNBRDIx
RjJCOTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8sCi0JCQkJQzIwRjg4QUEyMjk2NkIwRTAwRDYxMEZB
IC8qIFdITFNMQVNURHVtcGVyLmNwcCAqLywKLQkJCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEg
LyogV0hMU0xBU1REdW1wZXIuaCAqLywKLQkJCQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyog
V0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICovLAotCQkJCUMyMzRBOUIy
MjFFOTJDMUYwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCAqLywK
LQkJCQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0
aW9ucy5oICovLAotCQkJCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIu
Y3BwICovLAotCQkJCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAq
LywKLQkJCQk1MjRCRDQ3RTIzMjc3RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5
cGVzLmNwcCAqLywKLQkJCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1Jl
ZmVyZW5jZVR5cGVzLmggKi8sCi0JCQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNM
Q2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkx
QzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovLAotCQkJCTUyMkJBQjk2MjJF
NkEzNjIwMEM1NENFOSAvKiBXSExTTENvZGVMb2NhdGlvbi5oICovLAotCQkJCTFDODZDQTRCMjJB
QTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2
Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovLAotCQkJ
CTFDQjVGRTg4MjJERUJDOEIwMDk0NDBFMiAvKiBXSExTTEVycm9yLmggKi8sCi0JCQkJMUNBMEMy
RTQyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovLAot
CQkJCTFDQTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2Vy
LmggKi8sCi0JCQkJMUM4NDBCOTkyMUVDNDAwODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQ
b2ludEl0ZW1zLmNwcCAqLywKLQkJCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xH
YXRoZXJFbnRyeVBvaW50SXRlbXMuaCAqLywKLQkJCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIg
LyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLywKLQkJCQkxQzlBRTVDQjIxRUQ5REY1MDA2
OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8sCi0JCQkJQzIzNEE5OUEyMUU5MEY1
NjAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5jcHAgKi8sCi0JCQkJQzIzNEE5OUIyMUU5MEY1
NzAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovLAotCQkJCUMyMzRBOUI3MjFFOTJDQzEw
MDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovLAotCQkJCUMyMzRBOUI2MjFFOTJDQzAw
MDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLywKLQkJCQlDMjEwRTkxMTIxQjRCRDEwMDBC
N0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8sCi0JCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNE
IC8qIFdITFNMTGV4ZXIuaCAqLywKLQkJCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hM
U0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2
MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOThEMjFFODg4ODQw
MDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLywKLQkJCQlDMjM0QTk4RTIxRTg4ODg1
MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5oICovLAotCQkJCUMyMzRBOThBMjFFODg4M0Uw
MDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8sCi0JCQkJQzIzNEE5OEMyMUU4ODgz
RTAwM0M5ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8sCi0JCQkJNTIyNTZDQUEyMzBGMTRB
RDAwNDNFMTJGIC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MzcyMUNEOEEwMjAw
MjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLywKLQkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5
NzkgLyogV0hMU0xQYXJzZXIuaCAqLywKLQkJCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyog
V0hMU0xQYXJzaW5nTW9kZS5oICovLAotCQkJCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBX
SExTTFBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkRE
MSAvKiBXSExTTFByZXBhcmUuY3BwICovLAotCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAv
KiBXSExTTFByZXBhcmUuaCAqLywKLQkJCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLywKLQkJCQk1MjJFMUExOTIyOTdENkQ0
MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJQzIx
QkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAotCQkJCTFDQUE4MkY2
MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAotCQkJCTFD
QUE4MkY3MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywKLQkJ
CQk1MjZCM0YwMTIyRkI3QkREMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCAqLywKLQkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0Qg
LyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCi0J
CQkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAg
Ki8sCi0JCQkJMUNBMEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tl
ci5oICovLAotCQkJCUMyMzRBOUFEMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5
cGVDaGVja2VyLmNwcCAqLywKLQkJCQlDMjM0QTlBQjIxRTkyQzE4MDAzQzk4NEQgLyogV0hMU0xS
ZWN1cnNpdmVUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOTk5MjFFOTBGMjkwMDNDOTg0RCAv
KiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwICovLAotCQkJCUMyMzRBOTk3MjFFOTBGMjgw
MDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCAqLywKLQkJCQlDMjM0QTk5RDIx
RTkxMEJEMDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBlLmggKi8sCi0JCQkJMUM1OUIwMTgy
MjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLywKLQkJCQlDMjRBNTdC
MjIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovLAotCQkJCUMy
NEE1N0IzMjFGQjhEREEwMDRDNkREMSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5oICovLAotCQkJ
CUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8s
Ci0JCQkJMUNEQUJENkIyMkM4NDc5QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuaCAqLywKLQkJCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFu
ZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwICovLAotCQkJCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVG
MyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oICovLAotCQkJCTFDRUNCM0E5MjFG
MkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCi0J
CQkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVj
a2VyLmggKi8sCi0JCQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6
ZUNvbnN0cnVjdG9ycy5jcHAgKi8sCi0JCQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdI
TFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oICovLAotCQkJCUMyMzRBOUIzMjFFOTJDMjEwMDND
OTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJ
QzIzNEE5QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmggKi8sCi0JCQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRv
ci5jcHAgKi8sCi0JCQkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5o
ICovLAotCQkJKTsKLQkJCXBhdGggPSBXSExTTDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yODg4NiwxNzggKzI4MTk2LDYgQEAK
IAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlEMDBG
NTkzRTIxNkVDQzQzMDAwRDcxREIgLyogd2ViZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDMjEwRTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wg
Ki8sCi0JCQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJp
bmRpbmcuaCAqLywKLQkJCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3Vw
TGF5b3V0QmluZGluZy5pZGwgKi8sCi0JCQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEQ2OUM5RDIyMkUwMEMyMDAz
MjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBCNTZF
QUIyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAx
QjgxMTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJ
CUQwMUI4MTFDMjIxMzYyNzMwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCi0JCQkJ
RDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovLAotCQkJ
CUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmggKi8sCi0JCQkJ
RDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaWRsICovLAotCQkJ
CUQwMUI4MTEyMjIxMjVBRkMwMDYyN0I2QyAvKiBHUFVDb2xvci5pZGwgKi8sCi0JCQkJRDBBREIy
OEMyMjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJ
CQlEMEI1NkVBRTIyNEVDRTIwMDA2MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5pZGwgKi8sCi0JCQkJ
RDAzQzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8sCi0J
CQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5pZGwgKi8sCi0JCQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmls
dGVyLmlkbCAqLywKLQkJCQlEMDI2RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0Qu
aWRsICovLAotCQkJCUQwOEFBMDJEMjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICov
LAotCQkJCUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAotCQkJ
CUQwQ0NBOTRBMjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCi0JCQkJRDA5
QUZCMTcyMkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovLAotCQkJ
CUQwMkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRs
ICovLAotCQkJCUQwQURCMjYzMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRv
ci5pZGwgKi8sCi0JCQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdl
LmggKi8sCi0JCQkJRDBERThGQjkyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmlk
bCAqLywKLQkJCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8s
Ci0JCQkJRDAyNkY0OEIyMjBBNUIwQjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmlk
bCAqLywKLQkJCQlEMEVBQ0ZBRTIxOUUzMEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5p
ZGwgKi8sCi0JCQkJRDAyNkY0ODMyMjBBNDcyRjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5p
ZGwgKi8sCi0JCQkJRDA5QUMwMDYyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmNwcCAqLywKLQkJCQlEMDlBQzAwNTIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuaCAqLywKLQkJCQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsICovLAotCQkJCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4
QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsICovLAotCQkJCUQwRDg2NDk2MjFCQTE4RjQwMDND
OTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5
ODIxQkExOUE3MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCi0J
CQkJRDBEODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5p
ZGwgKi8sCi0JCQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRs
ICovLAotCQkJCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICov
LAotCQkJCUQwMDQ4N0VFMjI3NDI4MTQwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuaCAqLywKLQkJ
CQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLywKLQkJCQlEMDBGNTk0
NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCi0JCQkJRDAwRjU5NDgyMTZFRkU1NDAw
MEQ3MURCIC8qIFdlYkdQVS5pZGwgKi8sCi0JCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8q
IFdlYkdQVUFkYXB0ZXIuY3BwICovLAotCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBX
ZWJHUFVBZGFwdGVyLmggKi8sCi0JCQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQ
VUFkYXB0ZXIuaWRsICovLAotCQkJCUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVC
aW5kR3JvdXAuY3BwICovLAotCQkJCUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVC
aW5kR3JvdXAuaCAqLywKLQkJCQlEMEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmlu
ZEdyb3VwLmlkbCAqLywKLQkJCQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmlu
ZEdyb3VwQmluZGluZy5oICovLAotCQkJCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJH
UFVCaW5kR3JvdXBCaW5kaW5nLmlkbCAqLywKLQkJCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUg
LyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBCRTEwNTIyMUU2QUEw
RDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEJFMTA1
MzIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8sCi0J
CQkJRDAwMzI4N0EyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAg
Ki8sCi0JCQkJRDAwMzI4NzkyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91
dC5oICovLAotCQkJCUQwMDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaWRsICovLAotCQkJCUQwRDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZm
ZXIuY3BwICovLAotCQkJCUQwRDg2NDhDMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIu
aCAqLywKLQkJCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAq
LywKLQkJCQlEMEJFMTA0QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5o
ICovLAotCQkJCUQwQkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5n
LmlkbCAqLywKLQkJCQlEMDVERDZERDIyMzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHAgKi8sCi0JCQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1h
bmRCdWZmZXIuaCAqLywKLQkJCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29t
bWFuZEJ1ZmZlci5pZGwgKi8sCi0JCQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQ
VUNvbW1hbmRFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyog
V2ViR1BVQ29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMg
LyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsICovLAotCQkJCUQwMEQ3N0ZFMjI0MkVENDUwMDQz
RjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMEQ3N0ZEMjI0
MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMDBE
NzdGRjIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLywK
LQkJCQlEMDg5MDMzRDIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNw
cCAqLywKLQkJCQlEMDg5MDMzQzIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmggKi8sCi0JCQkJRDA4OTAzM0UyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQ
aXBlbGluZS5pZGwgKi8sCi0JCQkJRDA4OTAzMzgyMjQwNjI4OTAwRjNGNDQwIC8qIFdlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwODkwMzM0MjI0MDYwMUQwMEYz
RjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4OTAz
MzUyMjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRs
ICovLAotCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICov
LAotCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKLQkJ
CQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKLQkJCQlE
MDlBRkIwMTIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwICov
LAotCQkJCUQwOUFGQUZGMjJEMDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5oICovLAotCQkJCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJv
clNjb3Blcy5pZGwgKi8sCi0JCQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURl
dmljZUV2ZW50SGFuZGxlci5oICovLAotCQkJCUQwOUFDMDBCMjMxNzM1QkUwMDE4Nzc2MiAvKiBX
ZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsICovLAotCQkJCTkxODZGM0I2MjMyOUZCNEUwMEFG
Rjg1NyAvKiBXZWJHUFVQaXBlbGluZS5jcHAgKi8sCi0JCQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZG
ODU3IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURF
IC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKLQkJCQlEMEM0MTlGMTIxODNF
QjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCi0JCQkJ
RDA1QTk5RTUyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywK
LQkJCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAq
LywKLQkJCQlEMDVBOTlFNjIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aWRsICovLAotCQkJCUQwMDQ4N0QyMjI0NTdCRUEwMEVFRDdEOSAvKiBXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwNUE5OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBX
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDVBOTlFMjIxQzlCNTBG
MDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlE
MEVBQ0Y5MjIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
Y3BwICovLAotCQkJCUQwRUFDRjkxMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5oICovLAotCQkJCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8sCi0JCQkJRDA4OTAzMzcyMjQwNjFBQzAw
RjNGNDQwIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJ
RDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvci5oICovLAotCQkJCUQwQzQxOUVDMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaWRsICovLAotCQkJCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5
RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8sCi0JCQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8q
IFdlYkdQVVF1ZXVlLmggKi8sCi0JCQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQ
VVF1ZXVlLmlkbCAqLywKLQkJCQlEMDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwRUFDRjhDMjE5NDAzQzkwMDBGQTc1QyAv
KiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAotCQkJCUQwOEFBMDM2MjIwRDE5REEw
MDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBFQUNG
OEYyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywKLQkJ
CQlEMEVBQ0Y4RTIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAq
LywKLQkJCQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaWRsICovLAotCQkJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAgKi8sCi0JCQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbCAqLywKLQkJCQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEM0MTlGMjIxODNF
RkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJ
RDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5pZGwgKi8sCi0JCQkJRDBBREIyNkQyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIu
Y3BwICovLAotCQkJCUQwQURCMjZDMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmgg
Ki8sCi0JCQkJRDBBREIyNkYyMjMwQzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICov
LAotCQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3Bw
ICovLAotCQkJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUu
aCAqLywKLQkJCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbCAqLywKLQkJCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oICovLAotCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMERBMEJFNTIxNzkzMEUyMDA3
RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKLQkJCQlEMERBMEJFNDIxNzkzMEUyMDA3
RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZF
MkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCi0JCQkJRDAwNDg3RTUyMjZBNjM0MjAwRUVE
N0Q5IC8qIFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQURCMjdFMjIz
MkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBF
QUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuY3BwICovLAotCQkJCUQwRUFD
Rjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmggKi8sCi0JCQkJRDBFQUNGODYy
MTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuaWRsICovLAotCQkJCUQwRUFDRjg4MjE5
M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5jcHAgKi8sCi0JCQkJRDBFQUNGODcy
MTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmggKi8sCi0JCQkJRDBFQUNGODky
MTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmlkbCAqLywKLQkJCQlEMDA0ODdG
RDIyNzdBRjgxMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8sCi0JCQkJRDBD
QUFENTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8sCi0JCQkJ
RDAwNDg3RkUyMjc3QUY4MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovLAotCQkJ
KTsKLQkJCXBhdGggPSB3ZWJncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
CQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBH
UFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSAqLywKLQkJCQlEMDIzMkI1ODIxQ0I0OUI3MDA5
NDgzQjkgLyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gKi8sCi0JCQkJRDA4NUU2NEEyMjM2
REVBRTAwQzNFMUUyIC8qIEdQVUJpbmRHcm91cE1ldGFsLm1tICovLAotCQkJCUQwRDg2NDkxMjFC
NzYwQzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzODIxQUNB
OTQyMDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODkwMzQw
MjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJ
CQlEMDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0g
Ki8sCi0JCQkJRDA4N0NFM0MyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICov
LAotCQkJCTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVy
dExheW91dC5jcHAgKi8sCi0JCQkJMUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVs
aW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggKi8sCi0JCQkJQTM4QTg3QTMyNTM4QkVFNzAwMzdBNDcy
IC8qIEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oICovLAotCQkJCUQwODdDRTNCMjFBQ0E5NDIwMEJE
RTE3NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdD
RTM5MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVRdWV1ZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNB
MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJ
CUQwODdDRTNEMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICov
LAotCQkJCUQwQURCMjZCMjIzMEFDQzAwMEEyMjkzNSAvKiBHUFVTYW1wbGVyTWV0YWwubW0gKi8s
Ci0JCQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1t
ICovLAotCQkJCUQwODdDRTNFMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5t
bSAqLywKLQkJCQlEMDg3Q0UzRjIxQUNBOTQyMDBCREUxNzQgLyogR1BVVGV4dHVyZU1ldGFsLm1t
ICovLAotCQkJCUQwNkVGNTUzMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICov
LAotCQkJKTsKLQkJCXBhdGggPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMyODgzLDE4ICszMjAyMSw2IEBACiAJCQkJ
QzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIx
OTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEyMjFB
NEMzNjUwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEz
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkzMTJGRjkxNDIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5
OUQgLyogR1BVUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE2MjFBNEMzNjUwMEVC
MTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTcy
MUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzEyRkY5MTgyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFBMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFCMjFB
NEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkx
QzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyNzk2NDBEMDBCRjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjA3Myw3ICszNTE5OSw2IEBACiAJCQkJMEMzRjFGNUIx
MEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2Rjk5NUEyNjFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxODQzNkRFMjFCOURBQUYw
MEVEMzgzRSAvKiBXZWJHUFVMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjcxRkFB
NDQ2MjAwMzdEMUU2IC8qIFdlYkhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBF
MjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjE0Nyw5ICszNTI3Miw2IEBACiAJCQkJMkVCQkMz
RDgxQjY1OTg4MzAwRjUyNTNEIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkU5QjVEOEYxQjY2QTk0RTAwOEM2QTI0IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRl
ck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTE5NTZGMjUyMzMxQUQ1
MzAwNTdFOUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBMTk1NkYyNDIzMzFBRDIxMDA1N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBMTk1NkYyMzIzMzFBQ0YyMDA1N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQxMURDQjExNjRDMzlBODAwRDQ5QkMxIC8qIFdpZHRoQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAwYjVmOGVlMjNlOTNiODRmMWFhNjczZTY5NDgy
ZWUxZjY3YzdmMDQ2Li5jOGRiNjg3OTlmOTYyMDAxNGMyYjQ0NTcyZGRkMmE1MzI3Mzg5N2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CkBAIC0xMDQsMzQgKzEwNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHYW1l
cGFkKSBcCiAgICAgbWFjcm8oR2FtZXBhZEJ1dHRvbikgXAogICAgIG1hY3JvKEdhbWVwYWRFdmVu
dCkgXAotICAgIG1hY3JvKEdQVSkgXAotICAgIG1hY3JvKEdQVUFkYXB0ZXIpIFwKLSAgICBtYWNy
byhHUFVCaW5kR3JvdXApIFwKLSAgICBtYWNybyhHUFVCaW5kR3JvdXBMYXlvdXQpIFwKLSAgICBt
YWNybyhHUFVCdWZmZXIpIFwKLSAgICBtYWNybyhHUFVCdWZmZXJVc2FnZSkgXAotICAgIG1hY3Jv
KEdQVUNhbnZhc0NvbnRleHQpIFwKLSAgICBtYWNybyhHUFVDb2xvcldyaXRlKSBcCi0gICAgbWFj
cm8oR1BVQ29tbWFuZEJ1ZmZlcikgXAotICAgIG1hY3JvKEdQVUNvbW1hbmRFbmNvZGVyKSBcCi0g
ICAgbWFjcm8oR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBp
cGVsaW5lKSBcCi0gICAgbWFjcm8oR1BVRGV2aWNlKSBcCi0gICAgbWFjcm8oR1BVT3V0T2ZNZW1v
cnlFcnJvcikgXAotICAgIG1hY3JvKEdQVVBpcGVsaW5lTGF5b3V0KSBcCi0gICAgbWFjcm8oR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIpIFwKLSAgICBtYWNybyhHUFVRdWV1ZSkgXAotICAgIG1h
Y3JvKEdQVVJlbmRlclBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVUmVuZGVyUGlwZWxpbmUp
IFwKLSAgICBtYWNybyhHUFVTYW1wbGVyKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxlKSBc
Ci0gICAgbWFjcm8oR1BVU2hhZGVyU3RhZ2UpIFwKLSAgICBtYWNybyhHUFVTd2FwQ2hhaW4pIFwK
LSAgICBtYWNybyhHUFVUZXh0dXJlKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdlKSBcCi0g
ICAgbWFjcm8oR1BVVGV4dHVyZVZpZXcpIFwKLSAgICBtYWNybyhHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudCkgXAotICAgIG1hY3JvKEdQVVZhbGlkYXRpb25FcnJvcikgXAogICAgIG1hY3JvKEhpZ2hs
aWdodFJlZ2lzdGVyKSBcCiAgICAgbWFjcm8oSGlnaGxpZ2h0KSBcCiAgICAgbWFjcm8oSFRNTEF0
dGFjaG1lbnRFbGVtZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ODJiNWYyNzVh
MzgzN2RlN2Y2Mjg1Yzg5YWY4MDgyNzIxNGQ1MzA5Li4zMzgxZmJmMWM0OTY0MDY3ZTYzOGVmNzVm
ZDY4ZDdlMmMyZjA5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMzNiw5ICszMzYs
NiBAQAogI2lmIEVOQUJMRShXRUJHTDIpCiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5oIgogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250
ZXh0LmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYzOTQsMTAgKzYzOTEsNiBAQCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNv
bnN0IFN0cmluZyYgdHlwZQogICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29u
dGV4dCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250
ZXh0KSB9IH07CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52
YXNDb250ZXh0PigqY29udGV4dCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsg
UmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpj
b250ZXh0KSB9IH07Ci0jZW5kaWYKIAogICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVm
UHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEPigqY29udGV4dCkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjOThl
MjA1ZmFmNzRlNDhhNmRkZmI5ZWZmZWRiZTE4MjdmZWE5ZjM4Li5jNGRmMDM3YjM5NDM5ZDkxNjdj
YTdmYTNkYzA4YjhjNWJkMWVmNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzE4LDkgKzMx
OCw2IEBAIHVzaW5nIFJlbmRlcmluZ0NvbnRleHQgPSBWYXJpYW50PAogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQkdMMikKICAgICBSZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4sCi0jZW5kaWYK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiwKICNlbmRp
ZgogICAgIFJlZlB0cjxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+LAogICAgIFJlZlB0cjxD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3NTc0
MTQwODdhNmJjYTYzNWEzZmNjOTVlZmZmNmUyNGRlM2RmMjVlLi42ODA0YjBmNTU2Y2U2NDAwNTQ0
NDIxZmVlNmFmYzc0MmVjZDFmZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0LDkg
KzI0LDYgQEAgdHlwZWRlZiAoCiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYm
IEVOQUJMRV9XRUJHTDIKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNp
ZiBkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXND
b250ZXh0IG9yCiAjZW5kaWYKICAgICBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5pbgppbmRleCAxNjAxMWFmNmVmMjMwNDc2OTUyNTgxMThjNjQ5MmIwYmVhMDlk
YTJiLi4yYmNkNzNjM2I4MzgwNmJkMWI3ZTEwOWU2ZmM4OTY3YjFiY2Y5OWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5pbgpAQCAtOTAsNyArOTAsNiBAQCBPdmVyY29uc3RyYWluZWRFcnJvckV2
ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFFbmNyeXB0ZWRFdmVudCBjb25kaXRp
b25hbD1FTkNSWVBURURfTUVESUEKIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVO
Q1JZUFRFRF9NRURJQQogUG9pbnRlckV2ZW50Ci1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBjb25k
aXRpb25hbD1XRUJHUFUKIEVudGVyUGljdHVyZUluUGljdHVyZUV2ZW50IGNvbmRpdGlvbmFsPVBJ
Q1RVUkVfSU5fUElDVFVSRV9BUEkKIFhSSW5wdXRTb3VyY2VFdmVudCBjb25kaXRpb25hbD1XRUJY
UgogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZjYwYzg5MjdhNTZiYzM1OGQxMDdi
OWRiOGVjZTlhNGMzNzEyMzZjMi4uMWQ4YmE2NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNk
MjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Niw3
ICs1Niw2IEBAIFRleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpZGVvVHJhY2tMaXN0
IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCi1XZWJHUFVE
ZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9u
YWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTAxM2NlZGEwMzU3YWMxYWQyMGU1
NTZmZjI3NzZhMzEzY2M1ZWUzNi4uNzRmOGEyZWJkNzAyNTRkYjk4YzcyZWFjZTNmMDc2YTYxMzI5
NjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTgx
LDEwICs4MSw2IEBACiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdFQlhSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgpAQCAtMjcwLDE0ICsyNjYsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChK
U0M6OgogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIGlm
IChtX2NvbnRleHQtPmlzV2ViR1BVKCkpIHsKLSAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBl
KGNvbnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRv
d25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKLSAgICAgICAgfQotI2Vu
ZGlmCi0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQpAQCAt
MzIzLDE1ICszMTEsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OgogICAgIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsK
LSAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwot
ICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7IGNv
bnRleHQgfSB9OwotICAgIH0KLSNlbmRpZgotCiAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIApAQCAtMzQ4LDExICszMjcsNiBA
QCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR0woSFRNTENh
bnZhc0VsZW1lbnQ6OnRvV2ViR0xWZXJzaW9uKHR5cGUpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkK
LSAgICAgICAgcmV0dXJuIGdldENvbnRleHRXZWJHUFUodHlwZSk7Ci0jZW5kaWYKLQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC00OTUsNDcgKzQ2OSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9u
IHR5cGUsCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1ib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQotewotICAgIHJldHVybiB0eXBlID09ICJncHUiOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUp
Ci17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVU
eXBlKHR5cGUpKTsKLSAgICBBU1NFUlQoIW1fY29udGV4dCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS53ZWJHUFVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgbV9jb250ZXh0ID0gR1BVQ2FudmFzQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKLSAgICBp
ZiAobV9jb250ZXh0KSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5
ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgotICAg
ICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdQVUNhbnZhc0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwot
fQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQ
VShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2Fu
dmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLndlYkdQVUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRleHQtPmlzV2ViR1BVKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBjcmVhdGVD
b250ZXh0V2ViR1BVKHR5cGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250
ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0K
IGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICByZXR1cm4gdHlwZSA9PSAiYml0bWFwcmVuZGVyZXIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGY2NzhmMGVkYTNkOTI1NDZiNjUx
MWZjYzA4MjlkM2FkYjg4NjE5M2IuLjBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFl
ODk3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTg5LDEy
ICs4OSw2IEBAIHB1YmxpYzoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250
ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsg
fSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJH
UFVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGNyZWF0ZUNvbnRl
eHRXZWJHUFUoY29uc3QgU3RyaW5nJik7Ci0gICAgR1BVQ2FudmFzQ29udGV4dCogZ2V0Q29udGV4
dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCiAgICAgc3RhdGljIGJvb2wgaXNCaXRt
YXBSZW5kZXJlclR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0KiBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0KiBnZXRDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCmluZGV4IGM2ZjFkMGZjNDBkZWUxNTQ3Y2ZmZDdjN2NjYzQ1ZTdh
Y2I3MmEwNjYuLmE2Nzc5ZmRhOTk1N2RlYmYwOTIzYzcyNWFkMjNmZWIxMGM2ODQzZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCkBAIC0zMCw5ICszMCw2IEBA
IHR5cGVkZWYgKAogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wyKSAmJiBFTkFCTEVf
V0VCR0wyCiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBvcgotI2VuZGlmCi0jaWYgZGVmaW5l
ZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCi0gICAgR1BVQ2FudmFzQ29udGV4dCBv
cgogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IG9yIAogICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCkgUmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5MmMwM2Mx
OWU0ZjcxNjRlOGFkODdhODllYmQ2ZDUwNDNmNWI1Y2IyLi43MTliNjMxZTAyNTI2ODdkMDM0YzZl
NDFlMWU3ZmM5MjdkYjFjMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02NCw5ICs2NCw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1dlYkdMMigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBp
c1dlYkdMKCkgY29uc3QgeyByZXR1cm4gaXNXZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9Ci0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHUFUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzR1BVQmFzZWQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCmluZGV4IGM1ODc0YzcwODc0MTc3OTAyOTQ1OGZiOTJjZWNhNmQ0NmJmNmNh
MGYuLjYxZjc2YzFjZDU4OGY2ODcxZTYwYjM1ZWViMGJkNWVhZDVlYTVmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNyw3ICszNyw2IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgpAQCAtNjIsNyArNjEsNiBAQAogI2luY2x1ZGUgIkpTSW1hZ2VTbW9v
dGhpbmdRdWFsaXR5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURl
dmljZS5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5o
IgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKQEAgLTg1LDcgKzgzLDYgQEAKICNpbmNsdWRlICJXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIK
ICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2
aWNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTEwMSw1MyArOTgsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLXN0YXRpYyBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzSWZDb250ZXh0TWF0Y2hlc0Rl
dmljZShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0LCBXZWJHUFVEZXZpY2UmIGRldmlj
ZSkKLXsKLSAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsKLSAgICAgICAg
YXV0byYgY29udGV4dEdQVSA9IGRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpOwot
ICAgICAgICBpZiAoYXV0byogd2ViR1BVU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4o
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGdwdVN3YXBDaGFpbiA9IHdlYkdQVVN3YXBDaGFp
bi0+c3dhcENoYWluKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3B1U3dhcENoYWluID09IGRl
dmljZS5kZXZpY2UoKS5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8
SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2FudmFzQmFzZSgpKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRH
UFUuY2FudmFzQmFzZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogUmVmPEluc3Bl
Y3RvckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMo
Y29udGV4dCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JDYW52YXM+
IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNhbnZhcyhkZXZpY2UpKTsKLX0KLSNlbmRpZgot
CiBJbnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiBjb250ZXh0KQogICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BV
IGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KLSAgICBBU1NFUlQoIWlz
PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLUluc3BlY3RvckNhbnZhczo6SW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2
aWNlKQotICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwgbV9jb250ZXh0KGRldmljZSkKLXsKIH0KLSNlbmRp
ZgogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRl
eHQoKSBjb25zdAogewpAQCAtMTY1LDE5ICsxMjUsNiBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5z
cGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0LmNhbnZhc0Jhc2UoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZp
Y2VXcmFwcGVyKSAtPiBIVE1MQ2FudmFzRWxlbWVudCogewotICAgICAgICAgICAgYXV0byYgZGV2
aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygp
IH07Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNl
KCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAg
ICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NiwyMiArMTMzLDYgQEAgSFRNTENhbnZh
c0VsZW1lbnQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotV2ViR1BVRGV2aWNlKiBJbnNw
ZWN0b3JDYW52YXM6OmRldmljZUNvbnRleHQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBkZXZp
Y2VXcmFwcGVyID0gV1RGOjpnZXRfaWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZp
Y2U+PihtX2NvbnRleHQpKQotICAgICAgICByZXR1cm4gJmRldmljZVdyYXBwZXItPmdldCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIEluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VG
b3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17
Ci0gICAgaWYgKGF1dG8qIGRldmljZSA9IGRldmljZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJu
IGNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoY29udGV4dCwgKmRldmljZSk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3Rv
ckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9jb250ZXh0LApAQCAtMjA5LDEyICsxNDAsNiBAQCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogICAgICAgICAgICAgYXV0byYgY29udGV4dCA9IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1
cm4gZGV2aWNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgfSwKLSNlbmRpZgog
ICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1LDExICsxNzAsNiBAQCBKU0M6
OkpTVmFsdWUgSW5zcGVjdG9yQ2FudmFzOjpyZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjKSBjb25zdAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
KCk7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4gZGV2aWNlV3JhcHBlcikgewotICAgICAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBkZXZpY2VXcmFwcGVyLmdldCgpKTsK
LSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUo
KTsKQEAgLTI2NCwyMSArMTg0LDYgQEAgSGFzaFNldDxFbGVtZW50Kj4gSW5zcGVjdG9yQ2FudmFz
OjpjbGllbnROb2RlcygpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4
dFdyYXBwZXIuZ2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCku
Y3NzQ2FudmFzQ2xpZW50cygpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAg
ICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBw
ZXIpIHsKLSAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0K
LSAgICAgICAgICAgIEhhc2hTZXQ8RWxlbWVudCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8q
IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5j
ZXMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNh
bnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmlj
ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNFbGVtZW50Q2xpZW50cy5hZGQoY2Fu
dmFzRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICB9LAotI2VuZGlmCiAgICAg
ICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8RWxlbWVudCo+KCk7CkBAIC0zMTcsNyArMjIyLDYg
QEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSgpCiAKICAgICBhdXRv
KiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2Fu
dmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGNv
bnRleHQtPnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQpA
QCAtODQ0LDcgKzc0OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oU3Ry
aW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvCiAKICAgICBhdXRvKiBj
b250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBG
SVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFz
OiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGlmIChp
czxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpICYmIHNob3VsZFNuYXBzaG90
Qml0bWFwUmVuZGVyZXJBY3Rpb24obmFtZSkpCiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0
cnVlOwpAQCAtOTI4LDExICs4MzEsNiBAQCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlm
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmlj
ZT4pIHsKLSAgICAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q2FudmFzOjpDb250ZXh0VHlwZTo6
V2ViR1BVOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTk5NiwyOCArODk0LDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZh
cz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNl
bmRpZgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNl
PiBkZXZpY2VXcmFwcGVyKSAtPiBDb250ZXh0QXR0cmlidXRlc1R5cGUgewotICAgICAgICAgICAg
YXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjb25z
dCBhdXRvJiBvcHRpb25zID0gZGV2aWNlLmFkYXB0ZXIoKS5vcHRpb25zKCkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IFByb3RvY29sOjpDYW52YXM6
OkNvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAucmVsZWFz
ZSgpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBwb3dlclByZWZlcmVuY2UgPSBv
cHRpb25zLT5wb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChw
b3dlclByZWZlcmVuY2UudmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBv
d2VyUHJlZmVyZW5jZTo6TG93UG93ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldFBvd2VyUHJlZmVyZW5jZSgibG93LXBvd2VyIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQ
VVBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImhpZ2gtcGVy
Zm9ybWFuY2UiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0
YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTA0OSw3ICs5MjUsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGlu
Zzo6UmVjb3JkaW5nPiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VPYmplY3RGb3JSZWNvcmRpbmco
KQogCiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJ
bnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2
aWNlCiAKICAgICBQcm90b2NvbDo6UmVjb3JkaW5nOjpUeXBlIHR5cGU7CiAgICAgaWYgKGlzPENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oY29udGV4dCkpCkBAIC0xMjgxLDcgKzExNTYsNiBAQCBS
ZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkSW5pdGlhbFN0YXRlKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgp
OwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRp
bmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGF1dG8gaW5pdGlhbFN0YXRlUGF5bG9hZCA9IFBy
b3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZTo6Y3JlYXRlKCkucmVsZWFzZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggOGE0N2RlYzI1
YWQ2Yzg4MzEzYzdkNGFkNmYyNTA5NjFjMDA2MmVmZi4uNmE5OWVjZmY0N2I1ODBlYzRjNjk2MTAx
MGZkNjUwMWZkYTM1MzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ2FudmFzR3JhZGllbnQ7CkBAIC02MCwyMCArNTYsMTIgQEAgY2xhc3MgVHlwZWRPTUNTU0lt
YWdlVmFsdWU7CiBjbGFzcyBJbnNwZWN0b3JDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbnNwZWN0b3JDYW52YXM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNh
bnZhcz4gY3JlYXRlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQ2FudmFzPiBjcmVhdGUoV2ViR1BVRGV2aWNlJik7
Ci0jZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzQ29u
dGV4dCgpIGNvbnN0OwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KCkgY29u
c3Q7CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFdlYkdQVURldmljZSogZGV2aWNlQ29udGV4
dCgpIGNvbnN0OwotICAgIGJvb2wgaXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmKSBjb25zdDsKLSNlbmRpZgotCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgSlNDOjpKU1ZhbHVlIHJl
c29sdmVDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTExNSw5ICsxMDMs
NiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyhX
ZWJHUFVEZXZpY2UmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBhcHBlbmRBY3Rpb25TbmFwc2hvdElm
TmVlZGVkKCk7CiAKQEAgLTE1NSw5ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgVmFyaWFudDwK
ICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiwK
LSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQ
VURldmljZT4sCi0jZW5kaWYKICAgICAgICAgTW9ub3N0YXRlCiAgICAgPiBtX2NvbnRleHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggYzEyMTUyMzA3MWEwMjY4ODhjYmQ2MDgwMzFhZDE1ZGM4NWFmMTcxOS4u
ZmUyMDZhZWEzNWU2NzkzM2UyMDE5ZmM1YWYxZTkzYWZkYTBlMzgzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJX
ZWJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgi
CiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC04MCwxMCArNzksNiBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgi
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwpAQCAtMTEyMiw0MyArMTExNyw2IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2Fu
dmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAg
ICAgICBjYW52YXNBZ2VudC0+ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBk
ZXZpY2UpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95
V2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hh
aW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+
d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihjb250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYg
ZGV2aWNlLCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZh
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAg
ICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKGRldmljZSwgcGlwZWxpbmUp
OwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQ
aXBlbGluZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2Vi
R1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0Fn
ZW50LT53aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKHBpcGVsaW5lKTsKLX0KLQotSW5zdHJ1bWVu
dGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRz
KFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRz
KGRldmljZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQotI2VuZGlmCi0KIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlm
cmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykK
IHsKICAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nQW5pbWF0aW9uQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3ZDVlN2Q1N2JmOTExZmRkZjkwZWQ0
MDBhMjI1YWZhMDgzZTZjODcxLi4zMWYwNWM1MGY4MDVkYjU3OWI4YzkzMGJjOTBiOWY2MWE5MmZh
YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCkBAIC01OSwxMSArNTksNiBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJH
UFVDYW52YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNlbmRpZgot
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogY2xhc3MgU2Ny
aXB0QXJndW1lbnRzOwpAQCAtMTA0LDExICs5OSw2IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotY2xhc3MgV2ViR1BVRGV2aWNlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotI2VuZGlm
Ci0KIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogCiBzdHJ1Y3QgQ29tcHV0ZWRF
ZmZlY3RUaW1pbmc7CkBAIC0zMDMsMTMgKzI5Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJH
TFByb2dyYW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVO
QUJMRShXRUJHUFUpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQ
VURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQ
VURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2Fu
dmFzQ29udGV4dCYsIFdlYkdQVVN3YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0
ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3Rh
dGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwotI2Vu
ZGlmCiAKICAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50Jiwg
S2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKQEAgLTUxMywxNCArNDk2
LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wg
aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdM
UHJvZ3JhbSYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVXZWJHUFVEZXZpY2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZp
Y2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIFdlYkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25m
aWd1cmVTd2FwQ2hhaW5JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBHUFVDYW52YXNDb250ZXh0
JiwgV2ViR1BVU3dhcENoYWluJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlw
ZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBl
bGluZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYpOwotI2VuZGlm
CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGlt
aW5nKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9uJik7CkBAIC0xNDc1LDQzICsxNDUwLDYgQEAg
aW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hs
aWdodGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2
aWNlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
KGRldmljZSkpCi0gICAgICAgIGRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2
aWNlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVz
dHJveVdlYkdQVURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhkZXZpY2UpKQotICAgICAgICB3aWxsRGVzdHJveVdlYkdQVURldmljZUlt
cGwoKmFnZW50cywgZGV2aWNlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRH
UFUsIFdlYkdQVVN3YXBDaGFpbiYgbmV3U3dhcENoYWluKQotewotICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzKGNvbnRleHRHUFUuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpCi0gICAgICAgIHdpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKCphZ2VudHMsIGNvbnRleHRH
UFUsIG5ld1N3YXBDaGFpbik7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQ
VVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZp
Y2UpKQotICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgZGV2aWNl
LCBwaXBlbGluZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0g
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMocGlwZWxpbmUuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKLSAgICAgICAgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgcGlw
ZWxpbmUpOwotfQotI2VuZGlmCi0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVj
dCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA1NGVkODQwYmUw
MTgyN2QxNzJhNGY4ZjliMzFiOTQ0MDY2NWE3NzcwLi5hMzBlMjE2NDNhMTU3YTgyYzVkZDdlNWI0
ZDg1ODQwYjc0ZmE1MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclNoYWRlclByb2dyYW0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIgogCi0jaWYgRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUg
Ikluc3BlY3RvckNhbnZhcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJz
RmFjdG9yeS5oPgpAQCAtNDIsMTUgKzQyLDYgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5o
IgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBl
bGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02
MiwxMyArNTMsNiBAQCBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6Y3JlYXRlKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbQogfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoV0VCR1BVKQotUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRl
clByb2dyYW06OmNyZWF0ZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZh
cyYgaW5zcGVjdG9yQ2FudmFzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rv
clNoYWRlclByb2dyYW0ocGlwZWxpbmUsIGluc3BlY3RvckNhbnZhcykpOwotfQotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoV0VCR0wpCiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0
b3JDYW52YXMpCiAgICAgOiBtX2lkZW50aWZpZXIoInByb2dyYW06IiArIElkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQpAQCAtNzksMTYgKzYzLDYgQEAgSW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0s
IEluc3BlY3RvckMKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvclNo
YWRlclByb2dyYW06Okluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmIHBpcGVs
aW5lLCBJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcykKLSAgICA6IG1faWRlbnRpZmll
cigicGlwZWxpbmU6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQot
ICAgICwgbV9jYW52YXMoaW5zcGVjdG9yQ2FudmFzKQotICAgICwgbV9wcm9ncmFtKHBpcGVsaW5l
KQotewotICAgIEFTU0VSVChtX2NhbnZhcy5kZXZpY2VDb250ZXh0KCkpOwotfQotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06
OnByb2dyYW0oKSBjb25zdAogewpAQCAtOTgsMTUgKzcyLDYgQEAgV2ViR0xQcm9ncmFtKiBJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFtKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLVdlYkdQVVBpcGVsaW5lKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwaXBl
bGluZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHBpcGVsaW5lV3JhcHBlciA9IFdURjo6Z2V0
X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+PihtX3Byb2dyYW0pKQot
ICAgICAgICByZXR1cm4gJnBpcGVsaW5lV3JhcHBlci0+Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIHN0YXRpYyBXZWJHTFNoYWRlciog
c2hhZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewpAQCAtMTI3LDMxICs5Miw2IEBAIHN0
YXRpYyBXZWJHTFNoYWRlciogc2hhZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNhCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1z
dGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gc2hhZGVyRm9yVHlwZShXZWJHUFVQaXBl
bGluZSYgcGlwZWxpbmUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBz
aGFkZXJUeXBlKQotewotICAgIHN3aXRjaCAoc2hhZGVyVHlwZSkgewotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpDb21wdXRlOgotICAgICAgICBpZiAo
aXM8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkuY29tcHV0ZVNoYWRlcigp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJl
bmRlclBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2Vi
R1BVUmVuZGVyUGlwZWxpbmU+KHBpcGVsaW5lKS5mcmFnbWVudFNoYWRlcigpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpT
aGFkZXJUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4o
cGlwZWxpbmUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVs
aW5lPihwaXBlbGluZSkudmVydGV4U2hhZGVyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotI2VuZGlmCi0KIFN0cmluZyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVy
U291cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBl
KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcHJvZ3JhbSwKQEAgLTE2MiwxNyArMTAy
LDkgQEAgU3RyaW5nIEluc3BlY3RvclNoYWRlclByb2dyYW06OnJlcXVlc3RTaGFkZXJTb3VyY2Uo
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjoKICAgICAgICAgICAgICAgICByZXR1cm4gc2hh
ZGVyLT5nZXRTb3VyY2UoKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
fSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGluZT4gcGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBwaXBlbGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlm
IChhdXRvIHNoYWRlciA9IHNoYWRlckZvclR5cGUocGlwZWxpbmUsIHNoYWRlclR5cGUpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzaGFkZXItPnNvdXJjZSgpOwotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgICAgICB9LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSB7
Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC0yMDEsMjQgKzEzMyw5IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVy
VHlwCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0s
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAgICAgICAgICAg
YXV0byYgcGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
YXV0byogZGV2aWNlID0gbV9jYW52YXMuZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHBpcGVsaW5lLmNsb25lU2hhZGVyTW9kdWxlcygqZGV2aWNlKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBzaGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFk
ZXJUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyLT51cGRhdGUoKmRldmlj
ZSwgc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlbGluZS5yZWNvbXBp
bGUoKmRldmljZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZd
IChNb25vc3RhdGUpIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYg
RU5BQkxFKFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyOCwzMSArMTQ1LDE1IEBAIGJvb2wgSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNh
bnZhczo6U2hhZGVyVHlwCiAKIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRl
clByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJv
Z3JhbSgpCiB7Ci0gICAgYm9vbCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IGZhbHNlOwot
CiAgICAgdXNpbmcgUHJvZ3JhbVR5cGVUeXBlID0gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlPjsKICAgICBhdXRvIHByb2dyYW1UeXBlID0gV1RG
Ojpzd2l0Y2hPbihtX3Byb2dyYW0sCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBbJl0gKHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsK
ICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1U
eXBlOjpSZW5kZXI7CiAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
ICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5l
V3JhcHBlcikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSAgICAgICAgICAgIGF1dG8mIHBpcGVsaW5l
ID0gcGlwZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVUNvbXB1
dGVQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpDb21wdXRlOwotICAgICAgICAgICAgaWYg
KGlzPFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvJiByZW5kZXJQaXBlbGluZSA9IGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBl
bGluZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlclBpcGVsaW5lLnZlcnRleFNoYWRlcigp
ID09IHJlbmRlclBpcGVsaW5lLmZyYWdtZW50U2hhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAg
IHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVyOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwK
ICNlbmRpZgogICAgICAgICBbJl0gKE1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSNp
ZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0yNjgsMTEgKzE2OSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxk
T2JqCiAgICAgICAgIC5zZXRQcm9ncmFtVHlwZShwcm9ncmFtVHlwZS52YWx1ZSgpKQogICAgICAg
ICAuc2V0Q2FudmFzSWQobV9jYW52YXMuaWRlbnRpZmllcigpKQogICAgICAgICAucmVsZWFzZSgp
OwotICAgIGlmIChzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcikKLSAgICAgICAgcGF5bG9hZC0+
c2V0U2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHBheWxvYWQ7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAppbmRleCBjY2M3M2Nl
ZjM3NDY3MDY3MGQ1OTZhOTNiMzJmZTA5YTU1ZDQzNWJiLi5jOTJkZWJiNzdjYzQ1MThjNDE1YmQz
YWZiMzAzYjJmMzcxNGMyOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQxLDE4ICs0MSwxMSBAQCBjbGFzcyBXZWJH
TFByb2dyYW07CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotY2xhc3MgV2ViR1BVUGlwZWxpbmU7Ci0jZW5kaWYKLQogY2xhc3Mg
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3Rv
clNoYWRlclByb2dyYW0+IHsKIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGlj
IFJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBjcmVhdGUoV2ViR0xQcm9ncmFtJiwgSW5zcGVj
dG9yQ2FudmFzJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9y
Q2FudmFzJik7Ci0jZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIEluc3BlY3RvckNhbnZhcyYgY2FudmFzKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW52YXM7IH0KQEAgLTYwLDkgKzUzLDYgQEAgcHVibGljOgogI2lm
IEVOQUJMRShXRUJHTCkKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0oKSBjb25zdDsKICNlbmRp
ZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgV2ViR1BVUGlwZWxpbmUqIHBpcGVsaW5lKCkgY29u
c3Q7Ci0jZW5kaWYKIAogICAgIFN0cmluZyByZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSk7CiAgICAgYm9vbCB1cGRhdGVTaGFkZXIoSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSk7CkBAIC03OSw5ICs2OSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIElu
c3BlY3RvclNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2Vi
R1BVUGlwZWxpbmUmLCBJbnNwZWN0b3JDYW52YXMmKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKICAgICBJbnNwZWN0b3JDYW52YXMmIG1fY2FudmFzOwpAQCAtODksOSArNzYs
NiBAQCBwcml2YXRlOgogICAgIFZhcmlhbnQ8CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4sCi0jZW5kaWYKLSNpZiBFTkFCTEUo
V0VCR1BVKQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiwK
ICNlbmRpZgogICAgICAgICBXVEY6Ok1vbm9zdGF0ZQogICAgID4gbV9wcm9ncmFtOwpAQCAtMTAy
LDQgKzg2LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYTQwMmMzYjk4NDAzMGNmMGY4ZGQ2NWI2ZTEzYjkwOGZi
ZmJmOTZhMy4uNTlmNGQzOWI1YTcxOWUzZTE3ZTU3MzhmMmM2N2VmYzM4ZWFlNDMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHUFVDYW52
YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjgs
MTEgKzY3LDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVk
ZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJH
UFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmll
cnNGYWN0b3J5Lmg+CkBAIC0xMDAsOSArOTQsOSBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5z
cGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwg
bV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2FudmFzRGVz
dHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVk
VGltZXJGaXJlZCkKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5B
QkxFKFdFQkdMKQogICAgICwgbV9wcm9ncmFtRGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0
b3JDYW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ryb3llZFRpbWVyRmlyZWQpCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIHsK
IH0KIApAQCAtMTQxLDI3ICsxMzUsMTIgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CiAgICAgICAg
IGZvciAoYXV0byogY29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygp
KSB7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRl
eHQiIGZvciBXZWJHUFUgaXMgdGhlIGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+Lgot
ICAgICAgICAgICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAgICAgICAg
IGlmIChleGlzdHNJbkN1cnJlbnRQYWdlKGNvbnRleHQtPmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKQogICAgICAgICAgICAgICAgIGJpbmRDYW52YXMoKmNvbnRleHQsIGZh
bHNlKTsKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAg
ICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7Ci0g
ICAgICAgICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpCi0gICAgICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEVOQUJM
RShXRUJHTCkKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omlu
c3RhbmNlc0xvY2soKSB9OwpAQCAtMTcyLDE2ICsxNTEsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICB7Ci0gICAgICAgIExv
Y2tlciBsb2NrZXIgeyBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAg
IGZvciAoYXV0byYgW3BpcGVsaW5lLCBkZXZpY2VdIDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNl
cygpKSB7Ci0gICAgICAgICAgICBpZiAoZGV2aWNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2
aWNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICYmIHBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICAgICAgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKmRldmljZSwgKnBpcGVsaW5l
KTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAgICAgcmV0
dXJuIHsgfTsKIH0KIApAQCAtMjk3LDcgKzI2Niw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2Nv
CiAKICAgICBhdXRvKiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7
CiAKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UK
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1
cHBvcnRlZCJfcyk7CiAKQEAgLTMyNCw3ICsyOTIsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2Nv
bAogCiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgp
OwogCi0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNw
ZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNl
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBz
dXBwb3J0ZWQiX3MpOwogCkBAIC0zMzYsNyArMzAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJvdG9j
b2wKICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VC
R1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4g
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3QgUHJvdG9jb2w6
OkNhbnZhczo6UHJvZ3JhbUlkJiBwcm9ncmFtSWQsIFByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7
CkBAIC0zNjYsNyArMzMzLDYgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihjb25zdCBQcm90b2NvbDoKICAgICByZXR1cm4g
eyB9OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBQ
cm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmIHByb2dyYW1JZCwgYm9vbCBkaXNhYmxlZCkKIHsK
ICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zOTMsNyArMzU5LDYg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNl
dFNoYWRlclByb2dyYW1IaWdobGlnaHRlZCgKICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUp
CiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFt
ZSkKIHsKQEAgLTQ1MCwxNyArNDE1LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlk
Q2hhbmdlQ2FudmFzTWVtb3J5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQKIHsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JDYW52YXM7CiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkgewotICAgICAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMo
KSkgewotICAgICAgICAgICAgaWYgKGl0ZW0tPmlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChjb250
ZXh0KSkgewotICAgICAgICAgICAgICAgIGluc3BlY3RvckNhbnZhcyA9IGl0ZW07Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYK
LQogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQogICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBm
aW5kSW5zcGVjdG9yQ2FudmFzKGNvbnRleHQpOwogCkBAIC02MTcsNjkgKzU3MSw2IEBAIGJvb2wg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xQcm9n
cmFtJiBwcm9ncmFtKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShX
RUJHUFUpCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVEZXZpY2Uo
V2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2
aWNlKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGJpbmRDYW52YXMoZGV2aWNlLCB0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZp
Y2UpCi17Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRl
dmljZSk7Ci0gICAgQVNTRVJUKGluc3BlY3RvckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JD
YW52YXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuYmluZENhbnZhcygqaW5zcGVjdG9yQ2Fu
dmFzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBD
aGFpbihHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3
YXBDaGFpbikKLXsKLSAgICBhdXRvIG5vdGlmeURldmljZUZvclN3YXBDaGFpbiA9IFsmXSAoV2Vi
R1BVU3dhcENoYWluJiB3ZWJHUFVTd2FwQ2hhaW4pIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnNw
ZWN0b3JDYW52YXMgOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8qIGRldmljZSA9IGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29u
dGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRldmljZS0+ZGV2aWNlKCkuc3dhcENoYWlu
KCkgPT0gd2ViR1BVU3dhcENoYWluLnN3YXBDaGFpbigpKQotICAgICAgICAgICAgICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2xpZW50Tm9kZXNDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+
aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBp
ZiAoYXV0byogZXhpc3RpbmdTd2FwQ2hhaW4gPSBjb250ZXh0R1BVLnN3YXBDaGFpbigpKQotICAg
ICAgICBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4oKmV4aXN0aW5nU3dhcENoYWluKTsKLQotICAg
IG5vdGlmeURldmljZUZvclN3YXBDaGFpbihuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRl
dmljZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2Fu
dmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JD
YW52YXMpOwotICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQocGlwZWxpbmUuaXNWYWxpZCgpKTsKLQotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3Jh
bVJlZiA9IEluc3BlY3RvclNoYWRlclByb2dyYW06OmNyZWF0ZShwaXBlbGluZSwgKmluc3BlY3Rv
ckNhbnZhcyk7Ci0gICAgYXV0byYgaW5zcGVjdG9yUHJvZ3JhbSA9IGluc3BlY3RvclByb2dyYW1S
ZWYuZ2V0KCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnNldChpbnNwZWN0
b3JQcm9ncmFtLmlkZW50aWZpZXIoKSwgV1RGTW92ZShpbnNwZWN0b3JQcm9ncmFtUmVmKSk7Ci0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnByb2dyYW1DcmVhdGVkKGluc3BlY3RvclByb2dyYW0u
YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9ncmFtKCkpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZh
c0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGlu
ZSkKLXsKLSAgICBhdXRvIGluc3BlY3RvclByb2dyYW0gPSBmaW5kSW5zcGVjdG9yUHJvZ3JhbShw
aXBlbGluZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB1bmJpbmRQcm9ncmFtKCppbnNwZWN0b3JQcm9ncmFtKTsKLX0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQotCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVu
dFR5cGUpIFwKIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFy
Z3VtZW50KSBcCiB7IFwKQEAgLTcxNSw3ICs2MDYsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5n
QwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBp
bnNwZWN0b3JDYW52YXMtPmNhbnZhc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBz
dXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAoY2FudmFzUmVuZGVyaW5nQ29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlk
RmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwpAQCAt
NzM4LDcgKzYyOCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5n
KEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzLCBQcm90CiB7CiAgICAgYXV0byogY29u
dGV4dCA9IGluc3BlY3RvckNhbnZhcy5jYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRl
eHQpOwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5z
cGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmlj
ZQogCiAgICAgaWYgKCFpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpCiAgICAg
ICAgICYmICFpczxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpCkBAIC03Nzcs
NyArNjY2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGlt
ZXJGaXJlZCgpCiAgICAgbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAot
I2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2
b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpCiB7
CiAgICAgaWYgKCFtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuc2l6ZSgpKQpAQCAtNzg4LDcg
KzY3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1l
ckZpcmVkKCkKIAogICAgIG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwogfQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKIHsKQEAgLTgw
MiwxMiArNjkxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKICAgICBp
ZiAobV9jYW52YXNEZXN0cm95ZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NhbnZhc0Rl
c3Ryb3llZFRpbWVyLnN0b3AoKTsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFt
LmNsZWFyKCk7CiAgICAgbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAg
aWYgKG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcHJvZ3Jh
bURlc3Ryb3llZFRpbWVyLnN0b3AoKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJM
RShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgbV9yZWNvcmRpbmdDYW52
YXNJZGVudGlmaWVycy5jbGVhcigpOwogfQpAQCAtODM2LDE4ICs3MjUsNiBAQCBJbnNwZWN0b3JD
YW52YXMmIEluc3BlY3RvckNhbnZhc0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleAogICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXM7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotSW5zcGVjdG9yQ2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENh
bnZhcyhXZWJHUFVEZXZpY2UmIGRldmljZSwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKQotewotICAg
IGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoZGV2aWNlKTsK
LSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5p
ZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCkpOwotCi0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmNhbnZhc0FkZGVkKGluc3BlY3RvckNhbnZhcy0+YnVpbGRPYmplY3RGb3JD
YW52YXMoY2FwdHVyZUJhY2t0cmFjZSkpOwotCi0gICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsK
LX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
Ojp1bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiB7CiAjaWYg
RU5BQkxFKFdFQkdMKQpAQCAtODk1LDE4ICs3NzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yQ2FudmFz
PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJp
bgogICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJ
bnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFz
KFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFz
IDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYg
KGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgpID09ICZkZXZpY2UpCi0gICAgICAgICAg
ICByZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVu
YmluZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSYgaW5zcGVjdG9yUHJvZ3JhbSkKIHsK
ICAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluc3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpOwpA
QCAtOTMxLDcgKzc5Nyw2IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShQcm90CiAgICAgcmV0dXJuIGlu
c3BlY3RvclByb2dyYW07CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCiBSZWZQdHI8SW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFt
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dy
YW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0udmFsdWVzKCkpIHsKQEAgLTk0Miwx
NiArODA3LDQgQEAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZh
c0FnZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHTFAKIH0KICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dy
YW0+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBl
bGluZSYgcGlwZWxpbmUpCi17Ci0gICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9p
ZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpbnNw
ZWN0b3JQcm9ncmFtLT5waXBlbGluZSgpID09ICZwaXBlbGluZSkKLSAgICAgICAgICAgIHJldHVy
biBpbnNwZWN0b3JQcm9ncmFtOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGQ3YmRlZjNj
ODQ0NTU1MjU1ZGM2ZDIyZjYyZjI3OTg3OTI2ZDUzMjMuLjdmMTAxMmFhMmEyNGY2ODJjZjY4OTFk
MTM2NmRkNGQyNjE1NzMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTQ0LDE5ICs0NCwxMSBAQCBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQotY2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTsKICNpZiBFTkFCTEUoV0VCR0wpCitjbGFz
cyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7
Ci1jbGFzcyBXZWJHUFVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkKIAogY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIsIHB1YmxpYyBDYW52YXNPYnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEluc3BlY3Rv
ckNhbnZhc0FnZW50PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ2FudmFz
QWdlbnQpOwpAQCAtODAsMTQgKzcyLDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFJlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3Vu
dChpbnQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3Rh
cnRSZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYs
IHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZyYW1lQ291bnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1l
bW9yeUxpbWl0KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IHN0b3BSZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJ
ZCYpOwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IHJlcXVl
c3RTaGFkZXJTb3VyY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFt
SWQmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gdXBkYXRlU2hhZGVyKGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0jaWYgRU5BQkxF
KFdFQkdMKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0
U2hhZGVyUHJvZ3JhbURpc2FibGVkKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbUlkJiwgYm9vbCBkaXNhYmxlZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBib29sIGhpZ2hsaWdodGVkKTsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQogCiAgICAgLy8gQ2FudmFzT2JzZXJ2ZXIKICAgICB2b2lkIGNhbnZhc0NoYW5nZWQo
Q2FudmFzQmFzZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwpAQCAt
MTA5LDEzICs5OSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQo
V2ViR0xQcm9ncmFtJik7CiAgICAgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdM
UHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQg
d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgdm9pZCB3aWxsQ29u
ZmlndXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAg
ICB2b2lkIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVs
aW5lJik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5l
Jik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5
cGUpIFwKQEAgLTEzNCwzMiArMTE3LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlY29y
ZGluZyhJbnNwZWN0b3JDYW52YXMmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6Oklu
aXRpYXRvciwgUmVjb3JkaW5nT3B0aW9ucyYmID0geyB9KTsKIAogICAgIHZvaWQgY2FudmFzRGVz
dHJveWVkVGltZXJGaXJlZCgpOwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkK
KyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgp
OwotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgSW5zcGVjdG9yQ2FudmFzJiBi
aW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2Up
OwotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKFdl
YkdQVURldmljZSYsIGJvb2wgY2FwdHVyZUJhY2t0cmFjZSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKICAgICB2b2lkIHVuYmluZENhbnZhcyhJbnNwZWN0b3JDYW52YXMmKTsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yQ2FudmFzPiBhc3NlcnRJbnNwZWN0b3JDYW52YXMoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yQ2FudmFzPiBmaW5kSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZp
bmRJbnNwZWN0b3JDYW52YXMoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgdm9pZCB1bmJpbmRQcm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mKTsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlk
KTsKLSNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+
IGZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShX
RUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtPiBmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpDYW52YXNCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTE3MSwxMSArMTQzLDExIEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnM7
CiAgICAgVGltZXIgbV9jYW52YXNEZXN0cm95ZWRUaW1lcjsKIAotI2lmIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPj4gbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQ
cm9ncmFtOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVyczsK
ICAgICBUaW1lciBtX3Byb2dyYW1EZXN0cm95ZWRUaW1lcjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggYzNhYWM1NGM1N2YyNDA3YjM4ZjAzNmQ4NjUx
NWRmYjIwYWRiZjQ5MS4uMGMzMGQ5YjgwMmMxNmU1NTNiMzg4NWZjZjU1YTdkMGVjZmQwNDMzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTQyLDExICs0Miw2IEBA
CiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAKLSNpZiBF
TkFCTEUoR1BVX0RSSVZFUl9QUkVXQVJNSU5HKQotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2lu
Y2x1ZGUgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBQcm9jZXNzV2FybWluZzo6aW5pdGlhbGl6ZU5hbWVzKCkKQEAgLTc5
LDEwICs3NCw2IEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIFRlbGVwaG9uZU51bWJlckRl
dGVjdG9yOjpwcmV3YXJtKCk7CiAjZW5kaWYKLQotI2lmIEVOQUJMRShHUFVfRFJJVkVSX1BSRVdB
Uk1JTkcpCi0gICAgR1BVRGV2aWNlOjpwcmV3YXJtKCk7Ci0jZW5kaWYKIH0KIAogV2ViQ29yZTo6
UHJld2FybUluZm9ybWF0aW9uIFByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAwNzA4NDdjMTM0YjU2MTYzZjRh
MDYxMzkzOThmMDNhMDU1OWE4NzhiLi44MjM1ODQzZmE1MTI5NTVjN2NlYjVlZmRmY2RmOTNkZTRh
NTllMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjAsNyArMTIwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oVmlld3BvcnRzKSBcCiAgICAgTShXZWJBdWRpbykg
XAogICAgIE0oV2ViR0wpIFwKLSAgICBNKFdlYkdQVSkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAg
TShXZWJSVENTdGF0cykgXAogICAgIE0oWFIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KaW5kZXggNWE2MGJjYzFlNmI1MzJhNjFkNDhhY2MzNDRiYmFhMmFmOGQwMTZkZC4uMDJh
MjZkNTdiNTVlY2FkZTQzYzVmMmVlMzk1ZjgzMzI5MjY4NzlhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KQEAgLTU3LDEwICs1Nyw2IEBACiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2lmIEVOQUJMRShX
RUJHUFUpCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBv
cnQgIldBS1dpbmRvdy5oIgpAQCAtMjE4LDExICsyMTQsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQ
bGF0ZgogICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQog
ICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwogCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdQVUxheWVyIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0j
ZW5kaWYKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTI3NSw3ICsyNjYs
NyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBl
IGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBB
TDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUg
UGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzIG9yIFdlYkdQ
VUxheWVycy4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29h
cyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMjhmNzNhMDg2MWQxNTJiNzEzY2ViOWU5MzMy
ODNjYTgyNmE1ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBHUFVTd2FwQ2hhaW47Ci19Ci0KLUBpbnRlcmZhY2UgV2ViR1BVTGF5
ZXIgOiBDQU1ldGFsTGF5ZXIgewotICAgIFdlYkNvcmU6OkdQVVN3YXBDaGFpbiogX3N3YXBDaGFp
bjsKLSAgICBmbG9hdCBfZGV2aWNlU2NhbGVGYWN0b3I7Ci19Ci0KLUBwcm9wZXJ0eSAobm9uYXRv
bWljKSBXZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbjsKLQotLSAoQ0dJbWFnZVJlZilj
b3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFj
ZTsKLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNlMjM4MmU0ZWJiMmMxZjAwZjliYmNkMzVlMGU2MDJkYjljYTQ2OGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR1BVTGF5ZXIKLQotQHN5bnRoZXNpemUgc3dh
cENoYWluID0gX3N3YXBDaGFpbjsKLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0KLSAgICAvLyBGSVhNRTogV2ViR1BVIC0gaGFuZGxlIHJldGluYSBjb3JyZWN0bHku
Ci0gICAgX2RldmljZVNjYWxlRmFjdG9yID0gMTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBz
ZWxmLmNvbnRlbnRzU2NhbGUgPSBfZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgc2VsZi5jb2xvcnNw
YWNlID0gV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6
KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlCi17Ci0gICAgaWYgKCFfc3dhcENoYWluKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjI5MmYxMzQ0YjU0YjIyYjllOWQ4MWYxOTE2ZmJmYjIxMjExODE2
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUg
IkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3I7
Ci0KLXVzaW5nIEFyZ3VtZW50QnVmZmVyID0gc3RkOjpwYWlyPGNvbnN0IFBsYXRmb3JtQnVmZmVy
KiwgY29uc3QgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMmPjsK
LQotY2xhc3MgR1BVQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdyb3VwPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZShjb25z
dCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiwgR1BVQmluZEdyb3VwQWxsb2NhdG9yJik7Ci0KLSAg
ICB+R1BVQmluZEdyb3VwKCk7Ci0gICAgCi0gICAgY29uc3QgQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiB7IG1fYWxsb2NhdG9yLT5hcmd1bWVudEJ1ZmZlcigp
LCBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyB9OyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BV
QnVmZmVyPj4mIGJvdW5kQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRCdWZmZXJzOyB9
Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiBib3VuZFRleHR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZFRleHR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVQmluZEdy
b3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYsIEdQVUJp
bmRHcm91cEFsbG9jYXRvciYsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYsIEhhc2hTZXQ8UmVm
PEdQVVRleHR1cmU+PiYmKTsKLSAgICAKLSAgICBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3Vt
ZW50QnVmZmVyT2Zmc2V0cyBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0czsKLSAgICBSZWY8R1BVQmlu
ZEdyb3VwQWxsb2NhdG9yPiBtX2FsbG9jYXRvcjsKLSAgICBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+
PiBtX2JvdW5kQnVmZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gbV9ib3VuZFRl
eHR1cmVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzg0MzE5N2JmMzMyODMwMjMxNDM0N2IzNzgzZGE4NzRhZjYzNTQwNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1U
eXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1jbGFz
cyBHUFVCaW5kR3JvdXBBbGxvY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCaW5kR3JvdXBB
bGxvY2F0b3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91cEFsbG9jYXRv
cj4gY3JlYXRlKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBzdHJ1Y3QgQXJndW1lbnRCdWZmZXJP
ZmZzZXRzIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4g
dmVydGV4OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0PiBm
cmFnbWVudDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4g
Y29tcHV0ZTsKLSAgICB9OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIHN0ZDo6b3B0aW9uYWw8QXJn
dW1lbnRCdWZmZXJPZmZzZXRzPiBhbGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFyZ3VtZW50RW5j
b2RlciAqdmVydGV4LCBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExBcmd1bWVudEVu
Y29kZXIgKmNvbXB1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lkIHRyeVJlc2V0KCk7Ci0KLSAgICBj
b25zdCBQbGF0Zm9ybUJ1ZmZlciogYXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Fy
Z3VtZW50QnVmZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVQmluZEdy
b3VwQWxsb2NhdG9yKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBib29sIHJlYWxsb2NhdGUoUGxh
dGZvcm1HUFVCdWZmZXJPZmZzZXQpOwotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX2Fy
Z3VtZW50QnVmZmVyOwotICAgIFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0IG1fbGFzdE9mZnNldCB7
IDAgfTsKLQotICAgIFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLSAgICBpbnQg
bV9udW1CaW5kR3JvdXBzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3MmMzYTIzNjY4ODc1NmE3ZmNjZThjMzQzZTBmNWRmNjNhZmIxYWQx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1
ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVCaW5kaW5nUmVz
b3VyY2UgPSBWYXJpYW50PFJlZjxjb25zdCBHUFVTYW1wbGVyPiwgUmVmPEdQVVRleHR1cmU+LCBH
UFVCdWZmZXJCaW5kaW5nPjsKLQotc3RydWN0IEdQVUJpbmRHcm91cEJpbmRpbmcgewotICAgIHVu
c2lnbmVkIGJpbmRpbmc7Ci0gICAgR1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA4YTk3
OGE5ZTg2YTFlYjk2ZTJmY2ZkZTk0NWJjZmNhZWFkNTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExh
eW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3Igewot
ICAgIFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKLSAgICBWZWN0b3I8R1BV
QmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhMDE2ZmM5ODQ4MWUxYzQ3ODI1ZjUwODNlZmZlMjZkY2U4NjZh
ODUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVUJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdQVUJpbmRHcm91cExheW91dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
R1BVQmluZEdyb3VwTGF5b3V0PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpOwotCi0gICAgc3RydWN0IFVuaWZvcm1CdWZmZXIg
ewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0
cnVjdCBEeW5hbWljVW5pZm9ybUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVu
Z3RoTmFtZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFNhbXBsZXIgewotICAgIH07Ci0KLSAgICBz
dHJ1Y3QgU2FtcGxlZFRleHR1cmUgewotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU3RvcmFnZUJ1ZmZl
ciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAg
c3RydWN0IER5bmFtaWNTdG9yYWdlQnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxM
ZW5ndGhOYW1lOwotICAgIH07Ci0KLSAgICB1c2luZyBJbnRlcm5hbEJpbmRpbmdEZXRhaWxzID0g
VmFyaWFudDxVbmlmb3JtQnVmZmVyLCBEeW5hbWljVW5pZm9ybUJ1ZmZlciwgU2FtcGxlciwgU2Ft
cGxlZFRleHR1cmUsIFN0b3JhZ2VCdWZmZXIsIER5bmFtaWNTdG9yYWdlQnVmZmVyPjsKLQotICAg
IHN0cnVjdCBCaW5kaW5nIHsKLSAgICAgICAgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyBleHRl
cm5hbEJpbmRpbmc7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTmFtZTsKLSAgICAgICAgSW50
ZXJuYWxCaW5kaW5nRGV0YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzOwotICAgIH07Ci0KLSAg
ICB1c2luZyBCaW5kaW5nc01hcFR5cGUgPSBIYXNoTWFwPHVpbnQ2NF90LCBCaW5kaW5nLCBXVEY6
OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj47Ci0gICAgY29uc3QgQmluZGluZ3NNYXBUeXBlJiBiaW5kaW5nc01hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmluZGluZ3NNYXA7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQXJndW1l
bnRFbmNvZGVyICp2ZXJ0ZXhFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhFbmNvZGVy
LmdldCgpOyB9Ci0gICAgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudEVuY29kZXIoKSBjb25z
dCB7IHJldHVybiBtX2ZyYWdtZW50RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5j
b2RlciAqY29tcHV0ZUVuY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVFbmNvZGVyLmdl
dCgpOyB9Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkK
LSAgICBHUFVCaW5kR3JvdXBMYXlvdXQoQmluZGluZ3NNYXBUeXBlJiYsIFJldGFpblB0cjxNVExB
cmd1bWVudEVuY29kZXI+JiYgdmVydGV4LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYm
IGZyYWdtZW50LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIGNvbXB1dGUpOwotCi0g
ICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gbV92ZXJ0ZXhFbmNvZGVyOwotICAgIFJl
dGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fZnJhZ21lbnRFbmNvZGVyOwotICAgIFJldGFp
blB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fY29tcHV0ZUVuY29kZXI7Ci0jZW5kaWYgLy8gVVNF
KE1FVEFMKQotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSBtX2JpbmRpbmdzTWFwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERl
c2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMzNhYzJlOWFjZDE1
YzIwYzYxYzgwMDAxOWU5Yjk4YmQ1ZmQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QmxlbmREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQmxlbmRGYWN0b3IgewotICAgIFplcm8sCi0gICAgT25l
LAotICAgIFNyY0NvbG9yLAotICAgIE9uZU1pbnVzU3JjQ29sb3IsCi0gICAgU3JjQWxwaGEsCi0g
ICAgT25lTWludXNTcmNBbHBoYSwKLSAgICBEc3RDb2xvciwKLSAgICBPbmVNaW51c0RzdENvbG9y
LAotICAgIERzdEFscGhhLAotICAgIE9uZU1pbnVzRHN0QWxwaGEsCi0gICAgU3JjQWxwaGFTYXR1
cmF0ZWQsCi0gICAgQmxlbmRDb2xvciwKLSAgICBPbmVNaW51c0JsZW5kQ29sb3IsCi19OwotCi1l
bnVtIGNsYXNzIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICBBZGQsCi0gICAgU3VidHJhY3QsCi0g
ICAgUmV2ZXJzZVN1YnRyYWN0LAotICAgIE1pbiwKLSAgICBNYXgsCi19OwotCi1zdHJ1Y3QgR1BV
QmxlbmREZXNjcmlwdG9yIHsKLSAgICBHUFVCbGVuZEZhY3RvciBzcmNGYWN0b3I7Ci0gICAgR1BV
QmxlbmRGYWN0b3IgZHN0RmFjdG9yOwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9wZXJhdGlvbjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTc1NTk0NzEzMzAyZDA5MzdjZGU4
NDgxZTVhMzQzOGZjMmY3N2RmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjpQZW5kaW5nTWFwcGluZ0NhbGxi
YWNrOjpQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIHBlbmRpbmcpCi0g
ICAgOiBjYWxsYmFjayhXVEZNb3ZlKHBlbmRpbmcpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5MzVhNWMzYWZjNGM4NjIyZWQzNjA0ZGFmZWYyMzZjZDcyMjVlMmM2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5o
IgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgR1BV
QnVmZmVyRGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247Ci0K
LWNsYXNzIEdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlcj4gewotcHVibGlj
OgotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBNYXBwZWQsCi0gICAgICAgIFVubWFw
cGVkLAotICAgICAgICBEZXN0cm95ZWQKLSAgICB9OwotCi0gICAgfkdQVUJ1ZmZlcigpOwotCi0g
ICAgc3RhdGljIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZShHUFVEZXZpY2UmLCBjb25zdCBH
UFVCdWZmZXJEZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3Bl
cyYpOwotCi0gICAgUGxhdGZvcm1CdWZmZXIqIHBsYXRmb3JtQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKTsgfQotICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc0NvcHlTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNv
dXJjZSk7IH0KLSAgICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91
c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNvcHlEZXN0aW5hdGlvbik7IH0K
LSAgICBib29sIGlzSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1
ZmZlclVzYWdlOjpGbGFnczo6SW5kZXgpOyB9Ci0gICAgYm9vbCBpc1ZlcnRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgpOyB9
Ci0gICAgYm9vbCBpc1VuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQ
VUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSk7IH0KLSAgICBib29sIGlzU3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpTdG9y
YWdlKTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwotICAgIGJvb2wgaXNNYXBwYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnNBbnkoeyBHUFVCdWZmZXJVc2FnZTo6
RmxhZ3M6Ok1hcFdyaXRlLCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQgfSk7IH0KLSAg
ICB1bnNpZ25lZCBwbGF0Zm9ybVVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVVzYWdl
OyB9Ci0gICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKLQotICAgIEpTQzo6QXJyYXlCdWZmZXIqIG1h
cE9uQ3JlYXRpb24oKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJD
b21taXR0ZWQoTVRMQ29tbWFuZEJ1ZmZlciAqKTsKLSAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21w
bGV0ZWQoKTsKLSNlbmRpZgotCi0gICAgdXNpbmcgTWFwcGluZ0NhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEpTQzo6QXJyYXlCdWZmZXIqKT47Ci0gICAgdm9pZCByZWdpc3Rlck1hcHBpbmdD
YWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiwgYm9vbCwgR1BVRXJyb3JTY29wZXMmKTsKLSAgICB2
b2lkIHVubWFwKEdQVUVycm9yU2NvcGVzKik7Ci0gICAgdm9pZCBkZXN0cm95KEdQVUVycm9yU2Nv
cGVzKik7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nTWFwcGluZ0NhbGxiYWNrPiB7Ci0gICAgICAgIHN0YXRp
YyBSZWY8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gY3JlYXRlKE1hcHBpbmdDYWxsYmFjayYmIGNh
bGxiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5k
aW5nTWFwcGluZ0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBNYXBwaW5nQ2FsbGJhY2sgY2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQ
ZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmKTsKLSAgICB9OwotCi0gICAg
R1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQdHImJiwgR1BVRGV2aWNlJiwgc2l6ZV90LCBP
cHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uKTsK
LSAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURldmljZSYsIE9w
dGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAg
SlNDOjpBcnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvclJlYWQoKTsKLSAgICBKU0M6OkFycmF5
QnVmZmVyKiBzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKTsKLSAgICB2b2lkIHJ1bk1hcHBpbmdDYWxs
YmFjaygpOwotICAgIHZvaWQgY29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3Blcyop
OwotCi0gICAgYm9vbCBpc01hcFdyaXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlKTsgfQotICAgIGJvb2wgaXNNYXBSZWFk
KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6
Ok1hcFJlYWQpOyB9Ci0gICAgYm9vbCBpc01hcFdyaXRlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlz
TWFwV3JpdGUoKSAmJiBzdGF0ZSgpID09IFN0YXRlOjpVbm1hcHBlZDsgfQotICAgIGJvb2wgaXNN
YXBSZWFkYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzTWFwUmVhZCgpICYmIHN0YXRlKCkgPT0gU3Rh
dGU6OlVubWFwcGVkOyB9Ci0KLSAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG1fcGxhdGZvcm1C
dWZmZXI7Ci0gICAgUmVmPEdQVURldmljZT4gbV9kZXZpY2U7Ci0KLSAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gbV9zdGFnaW5nQnVmZmVyOwotICAgIFJlZlB0cjxQZW5kaW5nTWFwcGluZ0Nh
bGxiYWNrPiBtX21hcHBpbmdDYWxsYmFjazsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sg
bV9tYXBwaW5nQ2FsbGJhY2tUYXNrOwotCi0gICAgc2l6ZV90IG1fYnl0ZUxlbmd0aDsKLSAgICBP
cHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVuc2lnbmVkIG1f
cGxhdGZvcm1Vc2FnZTsKLSAgICB1bnNpZ25lZCBtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJz
IHsgMCB9OwotICAgIGJvb2wgbV9pc01hcHBlZEZyb21DcmVhdGlvbiB7IGZhbHNlIH07Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJC
aW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNmVlMDExMTAxZDQ3YzA0
MWI1Zjk2OTUwNjgzZTRkODNlYzZkYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1
ZmZlckJpbmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZm
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IEdQVUJ1ZmZlckJpbmRpbmcgewotICAgIFJlZjxHUFVCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1
aW50NjRfdCBvZmZzZXQ7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIwNzJkOWVmZjAyN2QyOWU5Mzc3OWJjOGYw
NmJkNjQyYzQzODU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlclVzYWdl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3Ig
ewotICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZTsKLX07
Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIHsKLSAgICBJc01hcHBlZCwKLSAg
ICBOb3RNYXBwZWQKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQnVmZmVyVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCdWZmZXJVc2FnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGUx
NDFlOGZmMzUxYWVmOWUwMjA1MjI0NjVlNjZiNTRhNDI0ZDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BV
QnVmZmVyVXNhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVCdWZmZXJVc2FnZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlclVzYWdlPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBGbGFncyA6IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAgICAg
ICAgTWFwUmVhZCA9IDEgPDwgMCwKLSAgICAgICAgTWFwV3JpdGUgPSAxIDw8IDEsCi0gICAgICAg
IENvcHlTb3VyY2UgPSAxIDw8IDIsCi0gICAgICAgIENvcHlEZXN0aW5hdGlvbiA9IDEgPDwgMywK
LSAgICAgICAgSW5kZXggPSAxIDw8IDQsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgNSwKLSAgICAg
ICAgVW5pZm9ybSA9IDEgPDwgNiwKLSAgICAgICAgU3RvcmFnZSA9IDEgPDwgNywKLSAgICB9Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZGE1MjY1NmRlMjNkMjYyNGQ2YTFiOGUzNTZi
ZDI2NGFkYzE2MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xv
ciB7Ci0gICAgZmxvYXQgcjsKLSAgICBmbG9hdCBnOwotICAgIGZsb2F0IGI7Ci0gICAgZmxvYXQg
YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
Q29sb3JTdGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZDU1MjcyOGJjYzliMzgwNTc0NTU5OWU2YjU4NjgxOTFhYjEzNmU3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJsZW5kRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQ
VUNvbG9yV3JpdGUuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdDsKLQotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBhbHBoYUJsZW5k
OwotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNvbG9yV3JpdGVG
bGFncyB3cml0ZU1hc2sgeyBzdGF0aWNfY2FzdDxHUFVDb2xvcldyaXRlRmxhZ3M+KEdQVUNvbG9y
V3JpdGU6OkZsYWdzOjpBbGwpIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRjNmQ1YzhjOWRlNjFmNDMyODE0NWI0ZjM1NTEyZGZhN2IzMmExOTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVz
aW5nIEdQVUNvbG9yV3JpdGVGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVDb2xvcldyaXRl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29sb3JXcml0ZT4gewotcHVibGljOgotICAgIGVudW0g
Y2xhc3MgRmxhZ3MgOiBHUFVDb2xvcldyaXRlRmxhZ3MgewotICAgICAgICBOb25lID0gMCwKLSAg
ICAgICAgUmVkID0gMSA8PCAwLAotICAgICAgICBHcmVlbiA9IDEgPDwgMSwKLSAgICAgICAgQmx1
ZSA9IDEgPDwgMiwKLSAgICAgICAgQWxwaGEgPSAxIDw8IDMsCi0gICAgICAgIEFsbCA9ICgxIDw8
IDQpIC0gMSwKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMmZiNjJkNDRjMDViOTE1YTc1MjZiMjMxNTZmOTE5Njg0MDhhNWEyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVU9yaWdpbjNELmgiCi0j
aW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURl
dmljZTsKLQotc3RydWN0IEdQVUV4dGVudDNEOwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXdC
YXNlIHsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgdW5zaWduZWQgcm93UGl0Y2g7Ci0gICAg
dW5zaWduZWQgaW1hZ2VIZWlnaHQ7Ci19OwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXcgZmlu
YWwgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIEdQVUJ1ZmZlckNvcHlWaWV3KFJlZjxH
UFVCdWZmZXI+JiYgYnVmZmVyQ29weSwgY29uc3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlJiBiYXNl
KQotICAgICAgICA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZShiYXNlKQotICAgICAgICAsIGJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlckNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVQnVmZmVy
PiBidWZmZXI7Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgdW5z
aWduZWQgbWlwTGV2ZWw7Ci0gICAgdW5zaWduZWQgYXJyYXlMYXllcjsKLSAgICBHUFVPcmlnaW4z
RCBvcmlnaW47Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFsIDogR1BVVGV4
dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgR1BVVGV4dHVyZUNvcHlWaWV3KFJlZjxHUFVUZXh0dXJl
PiYmIHRleHR1cmVDb3B5LCBjb25zdCBHUFVUZXh0dXJlQ29weVZpZXdCYXNlJiBiYXNlKQotICAg
ICAgICA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCB0ZXh0dXJlKFdU
Rk1vdmUodGV4dHVyZUNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BVVGV4dHVyZT4g
dGV4dHVyZTsKLX07Ci0KLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHUFVDb21tYW5kQnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVDb21t
YW5kQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybUNv
bW1hbmRCdWZmZXIqIHBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1Db21tYW5kQnVmZmVyLmdldCgpOyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVQnVm
ZmVyPj4mIHVzZWRCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVyczsgfQotICAg
IGNvbnN0IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgdXNlZFRleHR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VkVGV4dHVyZXM7IH0KLSAgICBib29sIGlzRW5jb2RpbmdQYXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0VuY29kaW5nUGFzczsgfQotCi0gICAgdm9pZCBzZXRJc0VuY29kaW5nUGFz
cyhib29sIGlzRW5jb2RpbmcpIHsgbV9pc0VuY29kaW5nUGFzcyA9IGlzRW5jb2Rpbmc7IH0KLSNp
ZiBVU0UoTUVUQUwpCi0gICAgfkdQVUNvbW1hbmRCdWZmZXIoKTsKLSAgICB2b2lkIGVuZEJsaXRF
bmNvZGluZygpOwotI2VuZGlmCi0KLSAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BV
QnVmZmVyPiYmLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYsIHVpbnQ2NF90
IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJl
KEdQVUJ1ZmZlckNvcHlWaWV3JiYsIEdQVVRleHR1cmVDb3B5VmlldyYmLCBjb25zdCBHUFVFeHRl
bnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcm
JiwgR1BVQnVmZmVyQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNv
cHlUZXh0dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZp
ZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLQotICAgIHZvaWQgdXNlQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fdXNlZEJ1ZmZlcnMuYWRkVm9pZChXVEZNb3ZlKGJ1ZmZlcikp
OyB9Ci0gICAgdm9pZCB1c2VUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpIHsgbV91
c2VkVGV4dHVyZXMuYWRkVm9pZChXVEZNb3ZlKHRleHR1cmUpKTsgfQotCi1wcml2YXRlOgotICAg
IEdQVUNvbW1hbmRCdWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHImJik7Ci0KLSAg
ICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsK
LSAgICBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOwotICAgIEhhc2hTZXQ8
UmVmPEdQVVRleHR1cmU+PiBtX3VzZWRUZXh0dXJlczsKLSAgICBib29sIG1faXNFbmNvZGluZ1Bh
c3MgeyBmYWxzZSB9OwotI2lmIFVTRShNRVRBTCkKLSAgICBNVExCbGl0Q29tbWFuZEVuY29kZXIg
KmJsaXRFbmNvZGVyKCkgY29uc3Q7Ci0gICAgbXV0YWJsZSBSZXRhaW5QdHI8TVRMQmxpdENvbW1h
bmRFbmNvZGVyPiBtX2JsaXRFbmNvZGVyOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTBiYmEzOWM5ZGZlNGQwMDI4OTNjOWFiNWMyOGQx
MmZlNGMyOGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgIE5ldmVyLAotICAgIExlc3MsCi0gICAgRXF1
YWwsCi0gICAgTGVzc0VxdWFsLAotICAgIEdyZWF0ZXIsCi0gICAgTm90RXF1YWwsCi0gICAgR3Jl
YXRlckVxdWFsLAotICAgIEFsd2F5cwotfTsKLQotdXNpbmcgUGxhdGZvcm1Db21wYXJlRnVuY3Rp
b24gPSB1bnNpZ25lZDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmEwNDE1ZDkwZDhjYmNmODdkYmNhMmEyYWNjZDI1YmExNGViOGE2Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBHUFVDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiB0
cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGlu
ZShSZWY8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIGRpc3BhdGNoKHVu
c2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopOwotCi1wcml2YXRlOgotICAgIEdQVUNv
bXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZvcm1Db21wdXRl
UGFzc0VuY29kZXJTbWFydFB0ciYmKTsKLSAgICB+R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKCkgeyBl
bmRQYXNzKCk7IH0KLQotICAgIC8vIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyCi0gICAgY29u
c3QgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGxhdGZvcm1QYXNzRW5jb2Rlcigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaW52YWxpZGF0ZUVuY29kZXIoKSBmaW5hbCB7IG1fcGxh
dGZvcm1Db21wdXRlUGFzc0VuY29kZXIgPSBudWxscHRyOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAg
IHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQgdXNhZ2UpIGZp
bmFsOwotICAgIHZvaWQgc2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50
ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBmaW5hbDsKLSNlbmRpZgotCi0gICAgUGxhdGZv
cm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVy
OwotICAgIFJlZlB0cjxjb25zdCBHUFVDb21wdXRlUGlwZWxpbmU+IG1fcGlwZWxpbmU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQ
aXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1
dGVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ5YzI3ZTMzMDQy
ODNhYjNlNTA4ODlkODdiODdlYzg4ZmE1OGNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgR1BV
UGlwZWxpbmVMYXlvdXQ7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwot
Ci1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewot
cHVibGljOgotICAgIHZpcnR1YWwgfkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGlj
IFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBj
b25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQot
ICAgIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAg
ICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3ImJiBjb21wdXRlU3RhZ2UpOwotCi0gICAgY29uc3QgUGxhdGZvcm1Db21wdXRlUGlw
ZWxpbmUqIHBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bUNvbXB1dGVQaXBlbGluZS5nZXQoKTsgfQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
ICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fY29tcHV0ZURpbWVuc2lvbnM7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVDb21wdXRlUGlwZWxpbmUoUGxhdGZvcm1Db21w
dXRlUGlwZWxpbmVTbWFydFB0ciYmLCBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMsIGNvbnN0IFJl
ZlB0cjxHUFVQaXBlbGluZUxheW91dD4mKTsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1Db21wdXRl
UGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lOwotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgbV9jb21wdXRlRGlt
ZW5zaW9ucyB7IDAsIDAsIDAgfTsKLSNlbmRpZgotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIg
SW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBt
X2xheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVDb21wdXRlUGlwZWxpbmUsIGlzQ29tcHV0
ZVBpcGVsaW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMzkx
NTA1ZWVjMjU5YTIzZDgxODFmNjc0ZGRkODdmYzA1MDYyNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlIHsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0cjxHUFVQ
aXBlbGluZUxheW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYm
IGNvbXB1dGUpCi0gICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUo
bGF5b3V0KSB9Ci0gICAgICAgICwgY29tcHV0ZVN0YWdlIHsgV1RGTW92ZShjb21wdXRlKSB9Ci0g
ICAgewotICAgIH0KLQotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRl
U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTQ3ZDAzYjM2MmE2ODhiMmQ3OTEwYzdmYjE3OWJiMWU5
OWUwNmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wYXJl
RnVuY3Rpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkOwotICAgIEdQ
VUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2NmNTJiOWU1ZGNhNGIxMTlkZWFkZTQyZGVmYTliZWJmZjU0NDdlYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQ
VURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cC5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNp
bmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUNv
bW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRl
ICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29w
ZXMuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0j
aW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2Ft
cGxlci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BV
U2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJl
LmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWZQdHI8R1BVQnVmZmVyPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBH
UFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24gaXNN
YXBwZWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1cm4gR1BVQnVm
ZmVyOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGlzTWFwcGVkLCBlcnJvclNjb3Blcyk7
Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBtYXhpbXVtTWlwTGV2ZWxDb3VudChHUFVUZXh0dXJlRGlt
ZW5zaW9uIGRpbWVuc2lvbiwgR1BVRXh0ZW50M0Qgc2l6ZSkKLXsKLSAgICB1bnNpZ25lZCB3aWR0
aCA9IHNpemUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNpZ25lZCBk
ZXB0aCA9IDE7Ci0gICAgc3dpdGNoIChkaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVE
aW1lbnNpb246Ol8xZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5z
aW9uOjpfMmQ6Ci0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVpZ2h0ID0gc2l6
ZS5oZWlnaHQ7Ci0gICAgICAgIGRlcHRoID0gc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgYXV0byBtYXhEaW1lbnNpb24gPSBzdGQ6Om1heChzdGQ6Om1heCh3aWR0aCwg
aGVpZ2h0KSwgZGVwdGgpOwotICAgIGludCBpID0gc2l6ZW9mKEdQVUV4dGVudDNEOjpJbm5lclR5
cGUpICogOCAtIDE7Ci0gICAgd2hpbGUgKCEobWF4RGltZW5zaW9uICYgKDEgPDwgaSkpICYmIGkg
Pj0gMCkKLSAgICAgICAgLS1pOwotICAgIEFTU0VSVChpID49IDApOwotICAgIHJldHVybiBpICsg
MTsKLX0KLQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlVGV4dHVyZShj
b25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBpZiAo
IWRlc2NyaXB0b3Iuc2l6ZS53aWR0aCB8fCAhZGVzY3JpcHRvci5zaXplLmhlaWdodCB8fCAhZGVz
Y3JpcHRvci5zaXplLmRlcHRoKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiVGV4dHVyZXMgY2FuJ3QgaGF2ZSAwIGRpbWVuc2lvbnMuIik7Ci0gICAgICAg
IHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQp
IHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJl
cyBjYW4ndCBoYXZlIDAgbWlwbGV2ZWxzLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0K
LQotICAgIGlmICghZGVzY3JpcHRvci5zYW1wbGVDb3VudCkgewotICAgICAgICBtX2Vycm9yU2Nv
cGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBzYW1wbGVz
LiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIC8vIGh0dHBzOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9tZXRhbC9NZXRhbC1GZWF0dXJlLVNldC1UYWJsZXMucGRmCi0gICAgdW5z
aWduZWQgbWF4UmVndWxhclNpemUgPSA4MTkyOwotICAgIHVuc2lnbmVkIG1heERlcHRoU2l6ZSA9
IDIwNDg7Ci0gICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAgIGNhc2UgR1BV
VGV4dHVyZURpbWVuc2lvbjo6XzFkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRo
ID4gbWF4UmVndWxhclNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRl
UHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJlIGlzIHRvbyB3aWRlOiAiLCBkZXNj
cmlwdG9yLnNpemUud2lkdGgsICIgbmVlZHMgdG8gYmUgPD0gIiwgbWF4UmVndWxhclNpemUsICIu
IikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVz
Y3JpcHRvci5zaXplLmhlaWdodCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJv
clNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjFEIHRleHR1cmUgYXJy
YXkgaGFzIHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiBuZWVk
cyB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNp
b246Ol8yZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heFJlZ3VsYXJT
aXplIHx8IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhSZWd1bGFyU2l6ZSkgewotICAgICAg
ICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJE
IHRleHR1cmUgaXMgdG9vIGxhcmdlOiIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiBhbmQgIiwg
ZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXpl
LCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9l
cnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJEIHRleHR1cmUg
YXJyYXkgaGFzIHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmRlcHRoLCAiIG5l
ZWRzIHRvIGJlIDw9ICIsIG1heERlcHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
eyB9OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVu
c2lvbjo6XzNkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbWF4RGVwdGhT
aXplIHx8IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUgfHwgZGVzY3JpcHRv
ci5zaXplLmRlcHRoID4gbWF4RGVwdGhTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVz
LT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiM0QgdGV4dHVyZSBpcyB0b28gbGFy
Z2U6ICIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiwgIiwgZGVzY3JpcHRvci5zaXplLmhlaWdo
dCwgIiwgYW5kICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1h
eERlcHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBH
UFVUZXh0dXJlRGltZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ICE9IDEp
IHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0
dXJlcyBjYW4ndCBoYXZlIG1pcG1hcHMiKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0K
LSAgICBhdXRvIG1heExldmVscyA9IG1heGltdW1NaXBMZXZlbENvdW50KGRlc2NyaXB0b3IuZGlt
ZW5zaW9uLCBkZXNjcmlwdG9yLnNpemUpOwotICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291
bnQgPiBtYXhMZXZlbHMpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhl
ZEVycm9yKG1ha2VTdHJpbmcoIlRvbyBtYW55IG1pcGxldmVsczogIiwgZGVzY3JpcHRvci5taXBM
ZXZlbENvdW50LCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heExldmVscywgIi4iKSk7Ci0gICAgICAg
IHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0g
MSAmJiBkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlIHNhbXBsZUNvdW50IGNhbiBvbmx5IGJl
IDEgb3IgNC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3Jp
cHRvci5zYW1wbGVDb3VudCAhPSAxKSB7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lv
biAhPSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29w
ZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBkaW1lbnNpb24gaW5jb21wYXRpYmxl
IHdpdGggbXVsdGlzYW1wbGluZy4iKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7Ci0gICAgICAg
ICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2FtcGxlZCB0
ZXh0dXJlcyBjYW4ndCBoYXZlIG1pcG1hcHMuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggIT0gMSkgewotICAg
ICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJBcnJheSB0ZXh0
dXJlcyBjYW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnVzYWdlICYgc3RhdGljX2Nhc3Q8R1BV
VGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7Ci0g
ICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRpc2Ft
cGxlZCB0ZXh0dXJlcyBjYW4ndCBoYXZlIFNUT1JBR0UgdXNhZ2UuIik7Ci0gICAgICAgICAgICBy
ZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBPbmx5IHNvbWUgcGl4ZWwg
Zm9ybWF0cyBhcmUgY2FwYWJsZSBvZiBNU0FBLiBXaGVuIHdlIGFkZCB0aG9zZSBuZXcgcGl4ZWwg
Zm9ybWF0cywgd2UnbGwgaGF2ZSB0byBhZGQgZmlsdGVyaW5nIGNvZGUgaGVyZS4KLSAgICB9Ci0K
LSAgICAvLyBUaGUgaGVpZ2h0IGNvbXBvbmVudCBmb3IgMWQgdGV4dHVyZXMgaXMgdGhlIGFycmF5
IGxlbmd0aC4KLSAgICAvLyBUaGUgZGVwdGggY29tcG9uZW50IGZvciAyZCB0ZXh0dXJlcyBpcyB0
aGUgYXJyYXkgbGVuZ3RoLgotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9PSBHUFVUZXh0
dXJlRGltZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsKLSAgICAg
ICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0dXJlcyBjYW4n
dCBoYXZlIGRlcHRoICE9IDEuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAg
aWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0
ZW5jaWw4ICYmIGRlc2NyaXB0b3IuZGltZW5zaW9uICE9IEdQVVRleHR1cmVEaW1lbnNpb246Ol8y
ZCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRo
L3N0ZW5jaWwgdGV4dHVyZXMgbXVzdCBiZSAyZC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgPT0gR1BVVGV4dHVyZUZvcm1hdDo6RGVw
dGgzMmZsb2F0U3RlbmNpbDggJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKSB7Ci0gICAg
ICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGVwdGgvc3RlbmNpbCB0
ZXh0dXJlcyBjYW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRpY19jYXN0PEdQVVRleHR1cmVVc2FnZUZsYWdzPihkZXNjcmlw
dG9yLnVzYWdlKSA+PSBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6TWF4aW11bVZhbHVlKSkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgdXNhZ2UgZmxhZ3MuIik7Ci0gICAgICAgIHJl
dHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OnRyeUNyZWF0ZSgqdGhp
cywgZGVzY3JpcHRvciwgbWFrZVJlZigqbV9lcnJvclNjb3BlcykpOwotfQotCi1SZWZQdHI8R1BV
U2FtcGxlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVTYW1wbGVyOjp0cnlD
cmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0
PiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVCaW5k
R3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJlZjxHUFVQ
aXBlbGluZUxheW91dD4gR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVQ
aXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoZGVzY3JpcHRvcikpOwotfQotCi1SZWZQdHI8
R1BVU2hhZGVyTW9kdWxlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVy
biBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0KLVJl
ZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5kZXJQaXBlbGlu
ZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9y
U2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxp
bmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQotCi1SZWZQ
dHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVUNvbXB1dGVQaXBl
bGluZTo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci19Ci0KLVJl
ZlB0cjxHUFVCaW5kR3JvdXA+IEdQVURldmljZTo6dHJ5Q3JlYXRlQmluZEdyb3VwKGNvbnN0IEdQ
VUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykgY29uc3QKLXsKLSAgICBpZiAoIW1fYmluZEdyb3VwQWxsb2NhdG9yKQotICAgICAgICBt
X2JpbmRHcm91cEFsbG9jYXRvciA9IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKGVycm9y
U2NvcGVzKTsKLQotICAgIHJldHVybiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShkZXNjcmlwdG9y
LCAqbV9iaW5kR3JvdXBBbGxvY2F0b3IpOwotfQotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4g
R1BVRGV2aWNlOjp0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
R1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzKTsKLX0KLQotUmVmUHRyPEdQVVF1ZXVl
PiBHUFVEZXZpY2U6OnRyeUdldFF1ZXVlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0g
ICAgICAgIG1fcXVldWUgPSBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biBtX3F1ZXVlOwotfQotICAgIAotdm9pZCBHUFVEZXZpY2U6OnNldFN3YXBDaGFpbihSZWZQdHI8
R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLXsKLSAgICBtX3N3YXBDaGFpbiA9IFdURk1vdmUo
c3dhcENoYWluKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiYmJlMzA0ZmYwYjZh
NzYyYjlmNDhjNDQxM2ZhMTVlZjVmNDE1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cEFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BV
UGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiR1BVU3dh
cENoYWluLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVQmluZEdyb3VwOwotY2xhc3MgR1BVQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgR1BVQnVmZmVy
OwotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKLWNs
YXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBHUFVS
ZW5kZXJQaXBlbGluZTsKLWNsYXNzIEdQVVNhbXBsZXI7Ci1jbGFzcyBHUFVTaGFkZXJNb2R1bGU7
Ci1jbGFzcyBHUFVUZXh0dXJlOwotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKLXN0
cnVjdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVUJ1ZmZlckRlc2Ny
aXB0b3I7Ci1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOwotc3RydWN0IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9uczsKLXN0cnVjdCBHUFVTYW1wbGVy
RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotc3RydWN0IEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWVu
dW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uOwotCi1jbGFzcyBHUFVEZXZpY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNl
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVEZXZpY2U+IHRyeUNyZWF0ZShjb25z
dCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mKTsKLSAgICBzdGF0aWMg
dm9pZCBwcmV3YXJtKCk7Ci0KLSAgICBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGVCdWZmZXIo
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJy
b3JTY29wZXMmKTsKLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlVGV4dHVyZShjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVTYW1wbGVyPiB0
cnlDcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAg
ICBSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29u
c3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxHUFVQaXBl
bGluZUxheW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yJiYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNyZWF0ZUJpbmRHcm91
cChjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsK
LQotICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IHRyeUNyZWF0ZVNoYWRlck1vZHVsZShjb25z
dCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiB0cnlDcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwotICAgIFJlZlB0cjxHUFVDb21w
dXRlUGlwZWxpbmU+IHRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFJlZlB0cjxH
UFVDb21tYW5kQnVmZmVyPiB0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBS
ZWZQdHI8R1BVUXVldWU+IHRyeUdldFF1ZXVlKCkgY29uc3Q7Ci0gICAgCi0gICAgUGxhdGZvcm1E
ZXZpY2UqIHBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5n
ZXQoKTsgfQotICAgIEdQVVN3YXBDaGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9z
d2FwQ2hhaW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldFN3YXBDaGFpbihSZWZQdHI8R1BVU3dhcENo
YWluPiYmKTsKLQotICAgIHZvaWQgc2V0RXJyb3JTY29wZXMoUmVmPEdQVUVycm9yU2NvcGVzPiYm
IGVycm9yU2NvcGVzKSB7IG1fZXJyb3JTY29wZXMgPSBXVEZNb3ZlKGVycm9yU2NvcGVzKTsgfQot
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHVzZVdITFNMID0gdHJ1ZTsKLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBHUFVEZXZpY2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmKTsKLQotICAg
IFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgbV9wbGF0Zm9ybURldmljZTsKLSAgICBtdXRhYmxlIFJl
ZlB0cjxHUFVRdWV1ZT4gbV9xdWV1ZTsKLSAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBD
aGFpbjsKLSAgICBtdXRhYmxlIFJlZlB0cjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IG1fYmluZEdy
b3VwQWxsb2NhdG9yOwotICAgIFJlZlB0cjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyOGQ0ZmMxMmM4YTI0NzI4Y2UyMDY1
YmQyNzIxZGJhZjgyYmZlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJHUFVFcnJvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUVycm9yRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BV
RXJyb3IgY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgc3dpdGNoIChmaWx0ZXIpIHsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVy
OjpPdXRPZk1lbW9yeToKLSAgICAgICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVPdXRPZk1l
bW9yeUVycm9yPihHUFVPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSkpOwotICAgIGNhc2UgR1BV
RXJyb3JGaWx0ZXI6OlZhbGlkYXRpb246Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8
R1BVVmFsaWRhdGlvbkVycm9yPihHUFVWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSkp
OwotICAgIGNhc2UgR1BVRXJyb3JGaWx0ZXI6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gR1BVRXJyb3IoUmVmUHRyPEdQVVZhbGlkYXRpb25FcnJv
cj4oR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoIkJhZCBlcnJvciEiKSkpOwotICAgIH0KLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZmM4ZmFmYWZhNDVmMGZmMTQ3Y2I4YmJiNDcxMzMy
Mjc1MmMyOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1
ZGUgIkdQVVZhbGlkYXRpb25FcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLXVzaW5n
IEdQVUVycm9yID0gVmFyaWFudDxSZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIFJlZlB0cjxH
UFVWYWxpZGF0aW9uRXJyb3I+PjsKLQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0
ZXIsIGNvbnN0IFN0cmluZyYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9y
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JG
aWx0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2OWZlZjMyNzA1ZDk5YmZl
Y2VhMDA4OTFmZjE2NDRhMGE0ZDE3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JGaWx0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXIgewotICAgIE5vbmUsCi0gICAgT3V0T2ZN
ZW1vcnksCi0gICAgVmFsaWRhdGlvbiwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmJlZTljZjFiZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jb25zdCB1bnNpZ25lZCBtYXhVbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxv
d2VkID0gMjU2OwotCi1SZWY8R1BVRXJyb3JTY29wZXM+IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUo
VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHUFVFcnJvclNjb3BlcyhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1HUFVFcnJv
clNjb3Blczo6R1BVRXJyb3JTY29wZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFj
aykKLSAgICA6IG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0g
ICAgLCBtX251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQobWF4VW5jYXB0dXJlZEVycm9y
RXZlbnRzQWxsb3dlZCkKLXsKLX0KLQotdm9pZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2Nv
cGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQotewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVy
cm9yU2NvcGUgeyBmaWx0ZXIsIHN0ZDo6bnVsbG9wdCB9KTsKLX0KLQotc3RkOjpvcHRpb25hbDxH
UFVFcnJvcj4gR1BVRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVzc2Fn
ZSkKLXsKLSAgICBpZiAobV9lcnJvclNjb3Blcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmFpbE1l
c3NhZ2UgPSAiTm8gZXJyb3Igc2NvcGUgZXhpc3RzISI7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBzY29wZSA9IG1fZXJyb3JTY29wZXMudGFrZUxhc3Qo
KTsKLSAgICByZXR1cm4gc2NvcGUuZmlsdGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3Rk
OjpudWxsb3B0IDogc2NvcGUuZXJyb3I7Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVy
YXRlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCi17
Ci0gICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihtX2Vycm9yU2NvcGVzLnJiZWdpbigp
LCBtX2Vycm9yU2NvcGVzLnJlbmQoKSwgW2ZpbHRlcl0oY29uc3QgRXJyb3JTY29wZSYgc2NvcGUp
IHsKLSAgICAgICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSB8
fCBzY29wZS5maWx0ZXIgPT0gZmlsdGVyOwotICAgIH0pOwotCi0gICAgaWYgKGl0ZXJhdG9yID09
IG1fZXJyb3JTY29wZXMucmVuZCgpKSB7Ci0gICAgICAgIGlmICghbV9udW1VbmNhcHR1cmVkRXJy
b3JFdmVudHNBbGxvd2VkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fdW5jYXB0
dXJlZEVycm9yQ2FsbGJhY2soY3JlYXRlRXJyb3IoZmlsdGVyLCBtZXNzYWdlKSk7Ci0gICAgICAg
IGlmICghKC0tbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKSkKLSAgICAgICAgICAg
IG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXI6OlZh
bGlkYXRpb24sICJXZWJHUFU6IFRvbyBtYW55IGVycm9yczsgbm8gbW9yZSBlcnJvciBldmVudHMg
d2lsbCBmaXJlIG9uIHRoaXMgR1BVRGV2aWNlLiIpKTsKLQotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gSWYgdGhlIHNjb3BlIGhhcyBhbHJlYWR5IGNhcHR1cmVkIGFuIGVycm9yLCBp
Z25vcmUgdGhpcyBuZXcgb25lLgotICAgIGlmIChpdGVyYXRvci0+ZXJyb3IpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGl0ZXJhdG9yLT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2Fn
ZSk7Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgZ2VuZXJhdGVFcnJvcihtX3ByZWZpeCArIG1lc3Nh
Z2UsIEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE1MDljNjg0YTkzYzc2YjM3ZGY3Y2QwNzM1ZjdkZmU3OGUyYWM3ZjIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvckZp
bHRlci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHUFVFcnJvclNjb3BlcyA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUVycm9yU2NvcGVzPiB7
Ci1wdWJsaWM6Ci0gICAgdXNpbmcgVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKEdQVUVycm9yJiYpPjsKLSAgICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUo
VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJik7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQ
VUVycm9yRmlsdGVyKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3Bl
KFN0cmluZyYgZmFpbE1lc3NhZ2UpOwotCi0gICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0
cmluZyYsIEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwotICAg
IHZvaWQgZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0
RXJyb3JQcmVmaXgoY29uc3QgU3RyaW5nJiBwcmVmaXgpIHsgbV9wcmVmaXggPSBwcmVmaXg7IH0K
LQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgRXJyb3JTY29wZSB7Ci0gICAgICAgIGNvbnN0IEdQVUVy
cm9yRmlsdGVyIGZpbHRlcjsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7
Ci0gICAgfTsKLQotICAgIEdQVUVycm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYp
OwotCi0gICAgVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgbV91bmNhcHR1cmVkRXJyb3JDYWxsYmFj
azsKLQotICAgIFZlY3RvcjxFcnJvclNjb3BlPiBtX2Vycm9yU2NvcGVzOwotICAgIFN0cmluZyBt
X3ByZWZpeDsKLSAgICB1bnNpZ25lZCBtX251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4
dGVudDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50
M0QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ0ODI2NTIwY2M1ZTdlMGNjOWZm
NDNmZDE0MjgwZjUwNDRiN2ViZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50
M0QuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
LXN0cnVjdCBHUFVFeHRlbnQzRCB7Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gdW5zaWduZWQ7Ci0g
ICAgSW5uZXJUeXBlIHdpZHRoOwotICAgIElubmVyVHlwZSBoZWlnaHQ7Ci0gICAgSW5uZXJUeXBl
IGRlcHRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMaW1pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
aW1pdHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyZTUxYzNlNzNiOTU2MWNi
YzgxNTRmZDA5NzZkNzhlOWVmODJhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGlt
aXRzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNv
bnN0IHVuc2lnbmVkIG1heFZlcnRleEJ1ZmZlcnMgPSAxNjsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMb2FkT3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWEyNGVlZjUyNzRmYmMwYWQ3Njc0ZjZiYzU2ZThmMTk2ZTFjOTYxMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVTG9hZE9wIHsKLSAgICBDbGVhciwK
LSAgICBMb2FkCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVPYmplY3RCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjJkOTE4
YzJlNTQ1MTdjYjM3ZmZmZWE2YjI2MmQ0NWY4MmZhOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVU9iamVjdEJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT2JqZWN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VU9iamVjdEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVPYmplY3RCYXNlKCkgPSBk
ZWZhdWx0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgR1BVT2JqZWN0QmFzZShSZWY8R1BVRXJyb3JTY29w
ZXM+JiYgcmVwb3J0ZXIpCi0gICAgICAgIDogbV9lcnJvclNjb3BlcyhXVEZNb3ZlKHJlcG9ydGVy
KSkgeyB9Ci0KLSAgICBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yU2NvcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPEdQVUVycm9yU2NvcGVzPiBt
X2Vycm9yU2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZjQyMGU5N2RmZTNiZjA3NTY2YzViNmEwZmRlYzQ2Njg5NjE3OTQzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvciA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVU91dE9mTWVtb3J5RXJyb3I+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEdQVU91dE9mTWVtb3J5RXJyb3I+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR1BVT3V0T2ZNZW1vcnlFcnJvcik7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2M4ODE2NTU0MzU3MTIzMTA1YjZlOWU3Yzg4MzM0MWZjMmJkODI2ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVQaXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1HUFVQaXBlbGluZTo6fkdQVVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTQyZWU4ZDdhM2I3ZWZmMTk5MDZlOTUwMDgxMGYzNDQyYzNj
ZWI0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlw
ZWxpbmU+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVQaXBlbGluZSgpOwotCi0gICAgdmly
dHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19HUFVQSVBFTElORShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6R1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBw
aXBlbGluZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDEyMmJhOTM2ZGY0ZDAwNmViNjEzZTk2MTY5
NjYwYzExZjk5ZDQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxp
bmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAg
ICBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IxOTkzYTllMmYwMGI0MmU0Mzg0MzE3Y2E2
NWRhNGVkNGRlYTFlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlv
dXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8R1BVUGlwZWxpbmVMYXlv
dXQ+IEdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
JiYgZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVQaXBlbGluZUxh
eW91dChXVEZNb3ZlKGRlc2NyaXB0b3IuYmluZEdyb3VwTGF5b3V0cykpKTsKLX0KLQotR1BVUGlw
ZWxpbmVMYXlvdXQ6OkdQVVBpcGVsaW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0Pj4mJiBsYXlvdXRzKQotICAgIDogbV9iaW5kR3JvdXBMYXlvdXRzKFdURk1vdmUo
bGF5b3V0cykpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlNzk5OTQ2ZmNiYTAxMmNjZWQ0NmE3ZjE3MjM5Mjk2NzQ1OTE4ZmMwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlw
ZWxpbmVMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVVBpcGVsaW5lTGF5b3V0
PiBjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYpOwotCi0gICAgY29uc3QgVmVj
dG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiYgYmluZEdyb3VwTGF5b3V0cygpIGNv
bnN0IHsgcmV0dXJuIG1fYmluZEdyb3VwTGF5b3V0czsgfQotCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IEdQVVBpcGVsaW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0
Pj4mJik7Ci0KLSAgICBWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IG1fYmlu
ZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YTFlZTJjNzc1MWY0NzFmZDc1NDU4MTBiNzc4YTU0
MzIyZjU4MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cExheW91dC5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewotICAgIFZlY3RvcjxS
ZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlw
ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjNzY3MjY3ODYyYTVlODAwN2Zk
OGUzMzMxZGU3NmU2OWRlM2IxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZv
cm1UeXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShNRVRBTCkKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5
cGVzTWV0YWwuaCIKLSNlbGlmIFVTRShEQVdOKQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXNE
YXduLmgiCi0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSBmb3IgV2ViR1BVIgot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWIwOWZhNGEwNTI2MzM0ZjBmN2QzZjdkOWRlODkxMWVlZDljY2Ew
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6R1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlcikK
LSAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotewotICAgIG1f
Y29tbWFuZEJ1ZmZlci0+c2V0SXNFbmNvZGluZ1Bhc3ModHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTcyNDRmMmVl
MWZkY2Q1ZDFiMTczNzVjOWU0MTFkMGY2NmRjNWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmluZEdyb3VwOwot
Y2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVs
dDsKLQotICAgIHZvaWQgZW5kUGFzcygpOwotICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVk
LCBHUFVCaW5kR3JvdXAmKTsKLQotcHJvdGVjdGVkOgotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1hbmRCdWZmZXIm
IGNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0K
LSAgICB2aXJ0dWFsIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRm
b3JtUGFzc0VuY29kZXIoKSBjb25zdCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVFbmNvZGVyKCkgPSAwOwotI2lmIFVTRShNRVRBTCkKLSAgICB2aXJ0dWFsIHZv
aWQgdXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQpID0gMDsKLQotICAg
IC8vIFJlbmRlciBjb21tYW5kIGVuY29kZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBO
U1VJbnRlZ2VyLCB1bnNpZ25lZCkgeyB9Ci0gICAgLy8gQ29tcHV0ZS4KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWdu
ZWQpIHsgfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotICAgIFJlZjxHUFVDb21tYW5kQnVmZmVy
PiBtX2NvbW1hbmRCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2MwNjI4ZWY3YTMwMzVlNTkyMjFm
ZWQ5ODdkNWY1N2RiMDdhZDE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvckJhc2UgewotICAgIFN0cmluZyBlbnRyeVBvaW50Owot
fTsKLQotc3RydWN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvcihSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3JCYXNlKGJhc2UpCi0gICAgICAgICwgbW9kdWxlIHsgV1RGTW92ZShtb2R1bGUp
IH0KLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZDUyNzg1M2EzNGFmZTAzNTNjNGY3ODc3OTljY2Jk
NDY2ZDhlYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJH
UFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZl
cjsKLWNsYXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHUFVRdWV1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IHRyeUNy
ZWF0ZShjb25zdCBHUFVEZXZpY2UmKTsKLQotICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVl
dWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0KLQotICAgIHZvaWQg
c3VibWl0KFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+JiYpOwotCi0gICAgU3RyaW5nIGxh
YmVsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiwgY29uc3QgR1BV
RGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1ZXVlOwot
ICAgIFdlYWtQdHI8Y29uc3QgR1BVRGV2aWNlPiBtX2RldmljZTsKLSAgICBNYWluVGhyZWFkRGVm
ZXJyYWJsZVRhc2sgbV9wcmVzZW50VGFzazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWE2NGI0NTk0YWUxM2I0YzQ2ZDhlNWM2NmE3
MjQ1YjcwMTE3OTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgi
Ci0jaW5jbHVkZSAiR1BVTG9hZE9wLmgiCi0jaW5jbHVkZSAiR1BVU3RvcmVPcC5oIgotI2luY2x1
ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QmFzZSB7Ci0gICAgR1BVTG9hZE9wIGxvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0b3JlT3A7Ci0g
ICAgR1BVQ29sb3IgY2xlYXJDb2xvciB7IDAsIDAsIDAsIDEgfTsKLX07Ci0KLXN0cnVjdCBHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYpOwotCi0gICAgUmVmPEdQVVRleHR1cmU+IGF0
dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVTG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIEdQVVN0
b3JlT3AgZGVwdGhTdG9yZU9wOwotICAgIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLSAgICAvLyBGSVhN
RTogQWRkIHN0ZW5jaWwgc3VwcG9ydC4KLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxH
UFVUZXh0dXJlPiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yIHsKLSAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+
IGNvbG9yQXR0YWNobWVudHM7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBh
c3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0NDNmNWQ0
YzEyNDUwMGY4ZmUzYzUxMjg3N2MwZTE1MzhhYmVjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBH
UFVDb21tYW5kQnVmZmVyOwotCi1zdHJ1Y3QgR1BVQ29sb3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVJlbmRlclBhc3NFbmNvZGVyIDogcHVibGljIEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJl
bmRlclBhc3NFbmNvZGVyPiB0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yJiYpOwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8Y29uc3Qg
R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwotICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25zdCBHUFVD
b2xvciYpOwotICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2
b2lkIHNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpOwotICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoR1BVQnVmZmVyJiwg
dWludDY0X3Qgb2Zmc2V0KTsKLSAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5k
ZXgsIGNvbnN0IFZlY3RvcjxSZWY8R1BVQnVmZmVyPj4mLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBvZmZzZXRzKTsKLSAgICB2b2lkIGRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVk
IGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3Rh
bmNlKTsKLSAgICB2b2lkIGRyYXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVk
IGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNp
Z25lZCBmaXJzdEluc3RhbmNlKTsKLQotcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQYXNzRW5jb2Rl
cihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0
UHRyJiYpOwotICAgIH5HUFVSZW5kZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9Ci0KLSAg
ICAvLyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcgotICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkgZmluYWwgeyBtX3BsYXRmb3JtUmVuZGVyUGFzc0Vu
Y29kZXIgPSBudWxscHRyOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2Uo
Y29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQgdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0
VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWdu
ZWQgaW5kZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMQnVm
ZmVyICosIE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0KLSAgICBS
ZWZQdHI8R1BVQnVmZmVyPiBtX2luZGV4QnVmZmVyOwotICAgIHVpbnQ2NF90IG1faW5kZXhCdWZm
ZXJPZmZzZXQ7Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi0gICAgUGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlclNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcjsKLSAgICBSZWZQdHI8
Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxNmEyNDFjMDQ1MzA4OWIwYmFhMTUwMWI4OTU3
YjRiMmVjOGZhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2lu
Y2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNj
b3BlczsKLQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxp
bmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0KLSAgICBz
dGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNl
JiwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsK
LQotICAgIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBN
VExEZXB0aFN0ZW5jaWxTdGF0ZSAqZGVwdGhTdGVuY2lsU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X2RlcHRoU3RlbmNpbFN0YXRlLmdldCgpOyB9Ci0jZW5kaWYKLSAgICBQbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKiBwbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bVJlbmRlclBpcGVsaW5lLmdldCgpOyB9Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0
aXZlVG9wb2xvZ3koKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVRvcG9sb2d5OyB9Ci0gICAg
c3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4Rm9ybWF0OyB9Ci0KLXByaXZhdGU6Ci0jaWYgVVNFKE1FVEFMKQotICAgIEdQVVJl
bmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBzdGQ6Om9wdGlv
bmFsPEdQVUluZGV4Rm9ybWF0PiwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYsIGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJldGFpblB0cjxN
VExEZXB0aFN0ZW5jaWxTdGF0ZT4gbV9kZXB0aFN0ZW5jaWxTdGF0ZTsKLSNlbmRpZiAvLyBVU0Uo
TUVUQUwpCi0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5k
ZXJQaXBlbGluZTsKLSAgICBHUFVQcmltaXRpdmVUb3BvbG9neSBtX3ByaW1pdGl2ZVRvcG9sb2d5
OwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7Ci0KLSAg
ICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBSZWZQ
dHI8R1BVUGlwZWxpbmVMYXlvdXQ+IG1fbGF5b3V0OwotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpH
UFVSZW5kZXJQaXBlbGluZSwgaXNSZW5kZXJQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2RlMmRhOWFhYTMzNmE3YWYwMWQ5MzI4MmRlZmUwMmFjOWE3Mzkz
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29sb3JTdGF0ZURlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVmVydGV4SW5wdXREZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgewotICAgIFBvaW50TGlzdCwKLSAgICBM
aW5lTGlzdCwKLSAgICBMaW5lU3RyaXAsCi0gICAgVHJpYW5nbGVMaXN0LAotICAgIFRyaWFuZ2xl
U3RyaXAKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAg
ICBHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neTsKLSAgICBWZWN0b3I8R1BV
Q29sb3JTdGF0ZURlc2NyaXB0b3I+IGNvbG9yU3RhdGVzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBHUFVW
ZXJ0ZXhJbnB1dERlc2NyaXB0b3IgdmVydGV4SW5wdXQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvciYmIHZlcnRleCwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+JiYgZnJhZ21lbnQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJh
c2UmIGJhc2UpCi0gICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUo
bGF5b3V0KSB9Ci0gICAgICAgICwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZShiYXNl
KQotICAgICAgICAsIHZlcnRleFN0YWdlKFdURk1vdmUodmVydGV4KSkKLSAgICAgICAgLCBmcmFn
bWVudFN0YWdlKFdURk1vdmUoZnJhZ21lbnQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmEwYmQx
MDY2YjAxYTA2M2NmYzM4NmNiYzFkZDRjOTNkODRiMTYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDxvcHRpb25hbD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IEdQVVBvd2VyUHJlZmVyZW5jZSA6IGJvb2wgeyBMb3dQb3dlciwgSGlnaFBlcmZvcm1hbmNlIH07
Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgewotICAgIHN0ZDo6b3B0aW9uYWw8
R1BVUG93ZXJQcmVmZXJlbmNlPiBwb3dlclByZWZlcmVuY2U7Ci19OwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMWE2NDQ2OWZjY2ViNjc0ZDg5ZmVlYTBiYmExMmNlM2ZmM2YyYTM2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwot
Ci1jbGFzcyBHUFVTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2FtcGxlcj4gewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVU2FtcGxlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYsIGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBs
ZXIqIHBsYXRmb3JtU2FtcGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1TYW1wbGVyLmdl
dCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVU2FtcGxlcihQbGF0Zm9ybVNhbXBsZXJTbWFydFB0
ciYmKTsKLQotICAgIFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyIG1fcGxhdGZvcm1TYW1wbGVyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1w
bGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVNhbXBsZXJEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5Mzcw
ZmVkZDQwOWNmZTJiZDM3NjAxNTgyNjZlMDAzNDAxNzExYTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVQ29tcGFyZUZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
ZW51bSBjbGFzcyBHUFVBZGRyZXNzTW9kZSB7Ci0gICAgQ2xhbXBUb0VkZ2UsCi0gICAgUmVwZWF0
LAotICAgIE1pcnJvclJlcGVhdCwKLX07Ci0KLWVudW0gY2xhc3MgR1BVRmlsdGVyTW9kZSB7Ci0g
ICAgTmVhcmVzdCwKLSAgICBMaW5lYXIsCi19OwotCi1zdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0
b3IgewotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVSB7IEdQVUFkZHJlc3NNb2RlOjpD
bGFtcFRvRWRnZSB9OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlViB7IEdQVUFkZHJl
c3NNb2RlOjpDbGFtcFRvRWRnZSB9OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyB7
IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9OwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmls
dGVyIHsgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWluRmls
dGVyIHsgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFw
RmlsdGVyIHsgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdCB9OwotICAgIGZsb2F0IGxvZE1pbkNsYW1w
IHsgMCB9OwotICAgIGZsb2F0IGxvZE1heENsYW1wIHsgMHhmZmZmZmZmZiB9OwotICAgIHVuc2ln
bmVkIG1heEFuaXNvdHJvcHkgeyAxIH07Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVG
dW5jdGlvbiB7IEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXIgfTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YTU2ZDExODY5YTJmOTMwOTk3MzE0ZmEwZDY2NDFl
YTIwMGMxOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNp
bmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVE
ZXZpY2U7Ci0KLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVT
aGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYsIGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFk
ZXJNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3dobHNsTW9kdWxlID8gbnVsbHB0ciA6IG1fcGxh
dGZvcm1TaGFkZXJNb2R1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBXSExTTDo6U2hhZGVyTW9kdWxl
KiB3aGxzbE1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hsc2xNb2R1bGUuZ2V0KCk7IH0KLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVs
ZVNtYXJ0UHRyJiYpOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVTaGFkZXJN
b2R1bGUoVW5pcXVlUmVmPFdITFNMOjpTaGFkZXJNb2R1bGU+JiYgd2hsc2xNb2R1bGUpOwotI2Vu
ZGlmCi0KLSAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJN
b2R1bGU7Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
SExTTDo6U2hhZGVyTW9kdWxlPiBtX3dobHNsTW9kdWxlOwotI2VuZGlmCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZmUwYWQ1
YTg3YjMyYzQ4YWUzNGJkNzZkMmYxYzU5ODFiZTdkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3Jl
T3AuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNzgzMjQ4OTEzZTQ1MWRjMzZhNDdhYjVm
MGUyM2NhMjRhZGMzMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFz
cyBHUFVTdG9yZU9wIHsKLSAgICBTdG9yZQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2UyNzc0N2UzZTdlMjZkZGJlMTI3MDcwMDA4MGRhZDIwMTRhYWZhNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotLy8gUGxhdGZvcm1MYXllciBpbXBsZW1lbnRhdGlv
biBuZWVkZWQgb3RoZXJ3aXNlIGNvbXBpbGluZyBkZXJpdmVkIHNvdXJjZXMgd2lsbCBmYWlsLgot
I2lmIFVTRShOSUNPU0lBKQotI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCi0jZWxp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eVByb3ZpZGVyLmgiCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5j
bHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZUZvcm1hdDsKLQotY2xhc3MgR1BVU3dhcENo
YWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IHRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJl
PiB0cnlHZXRDdXJyZW50VGV4dHVyZSgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIFJldGFpblB0
cjxDQU1ldGFsRHJhd2FibGU+IHRha2VEcmF3YWJsZSgpOwotI2VuZGlmCi0KLSAgICAvLyBGb3Ig
R1BVQ2FudmFzQ29udGV4dC4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7Ci0KLSAgICB2b2lkIHByZXNlbnQoKTsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKLSAgICB2b2lkIGRlc3Ryb3koKSB7IG1fY3VycmVudERyYXdhYmxlID0gbnVs
bHB0cjsgfQotCi1wcml2YXRlOgotICAgIEdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNt
YXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0
Zm9ybVN3YXBMYXllclNtYXJ0UHRyIG1fcGxhdGZvcm1Td2FwTGF5ZXI7Ci0gICAgUGxhdGZvcm1E
cmF3YWJsZVNtYXJ0UHRyIG1fY3VycmVudERyYXdhYmxlOwotICAgIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTcwNDIwNDYzY2FhYmExNWZlN2Q3MzE2MmFhOGVh
N2JkNDgxZjkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0j
aW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
QmFzZSB7Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdl
RmxhZ3MgdXNhZ2UgeyBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkgfTsKLX07Ci0KLXN0cnVjdCBHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yIDogR1BVU3dhcENoYWluRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IoUmVmPEdQVURldmljZT4mJiBncHVEZXZpY2UsIGNvbnN0IEdQVVN3
YXBDaGFpbkRlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3JCYXNlKGJhc2UpCi0gICAgICAgICwgZGV2aWNlKFdURk1vdmUoZ3B1RGV2aWNlKSkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIFJlZjxHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWVmY2Q1NmY0MTg1NTgzYmY5MGM2ZGE3YjQ0YWM3ZjZjMDRi
ODUwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJH
UFVUZXh0dXJlVXNhZ2UuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLXN0
cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVVRleHR1cmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVRl
eHR1cmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvciYsIEdQVUVycm9yU2NvcGVzJik7Ci0gICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVh
dGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M+KTsKLQotICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KLSAgICBib29sIGlzQ29weVNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFn
czo6Q29weVNvdXJjZSk7IH0KLSAgICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGlu
YXRpb24pOyB9Ci0gICAgYm9vbCBpc091dHB1dEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQp
OyB9Ci0gICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
c0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OlNhbXBsZWQgfSk7IH0KLSAgICBib29sIGlzU2FtcGxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCk7IH0K
LSAgICBib29sIGlzU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BV
VGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVz
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVVzYWdlOyB9Ci0KLSAgICBSZWZQdHI8R1BV
VGV4dHVyZT4gdHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95
KCkgeyBtX3BsYXRmb3JtVGV4dHVyZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVU
ZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3Bs
YXRmb3JtVGV4dHVyZTsKLQotICAgIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBt
X3VzYWdlOwotICAgIHVuc2lnbmVkIG1fcGxhdGZvcm1Vc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmE2ODVhMjE5ZjMyOWI2MDcwNGQz
ZTY1NjIzYjVhNmFiN2VkZTIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUV4dGVu
dDNELmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1
cmVVc2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVy
ZURpbWVuc2lvbiB7Ci0gICAgXzFkLAotICAgIF8yZCwKLSAgICBfM2QKLX07Ci0gICAgCi1zdHJ1
Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3IgewotICAgIEdQVUV4dGVudDNEIHNpemU7Ci0gICAgdW5z
aWduZWQgbWlwTGV2ZWxDb3VudDsKLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudDsKLSAgICBHUFVU
ZXh0dXJlRGltZW5zaW9uIGRpbWVuc2lvbjsKLSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsK
LSAgICBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjZkMGZkYTE2NmI4MzAzODg4NWZiMTIyZGM0YjdlM2E4NmE0
YTllMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQ
VVRleHR1cmVGb3JtYXQgewotICAgIFJnYmE4dW5vcm0sCi0gICAgUmdiYTh1aW50LAotICAgIEJn
cmE4dW5vcm0sCi0gICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgQmdyYTh1bm9ybVNSR0Is
Ci0gICAgUmdiYTE2ZmxvYXQsCi19OwotCi11c2luZyBQbGF0Zm9ybVRleHR1cmVGb3JtYXQgPSB1
bnNpZ25lZDsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQzZTZmYmFlOWVlNDA5NTFlODU0OGExNmE4YmQ3
MjlhZDg4YmFkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgPSB1
bnNpZ25lZDsKLSAgICAKLWNsYXNzIEdQVVRleHR1cmVVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVVRleHR1cmVVc2FnZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVU
ZXh0dXJlVXNhZ2VGbGFncyB7Ci0gICAgICAgIENvcHlTb3VyY2UgICAgICAgPSAxIDw8IDAsCi0g
ICAgICAgIENvcHlEZXN0aW5hdGlvbiAgPSAxIDw8IDEsCi0gICAgICAgIFNhbXBsZWQgICAgICAg
ICAgPSAxIDw8IDIsCi0gICAgICAgIFN0b3JhZ2UgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAg
IE91dHB1dEF0dGFjaG1lbnQgPSAxIDw8IDQsCi0gICAgICAgIE1heGltdW1WYWx1ZSAgICAgPSAx
IDw8IDUsCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVVdGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ5YTVjNzA3NGM0
YWU2MzNlOGU2MDEyYzVjYzg3NjhiZmI0ZjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVVdGlscy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1QbGF0Zm9ybVRleHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9y
R1BVVGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0KTsKLVBsYXRmb3JtQ29tcGFyZUZ1bmN0
aW9uIHBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBh
cmVGdW5jdGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzOTdlNTQ1NDYxMzg2Y2ZmY2Q0MTA4NzdkYzM2MTRmNmRmMTgyODc5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUmVmPEdQVVZhbGlkYXRpb25FcnJvcj4gR1BVVmFsaWRhdGlvbkVycm9y
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdQVVZhbGlkYXRpb25FcnJvcihtZXNzYWdlKSk7Ci19Ci0KLUdQVVZhbGlkYXRpb25FcnJv
cjo6R1BVVmFsaWRhdGlvbkVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICA6IG1fbWVz
c2FnZShtZXNzYWdlKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3MjI1YWMyMDdmY2EzYmVkYmU2MTE1NWE3NTk3YWRhNTU2NzM4NWUwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVWYWxpZGF0aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVWYWxp
ZGF0aW9uRXJyb3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVVZhbGlkYXRpb25FcnJv
cj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQ
VVZhbGlkYXRpb25FcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1f
bWVzc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhYzYzNWU4ZTVkNjc5ODQyNmNlNWNmZGJmZWNkZWUzMTI5
ODA1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVWZXJ0ZXhGb3JtYXQg
ewotICAgIEZsb2F0LAotICAgIEZsb2F0MiwKLSAgICBGbG9hdDMsCi0gICAgRmxvYXQ0LAotfTsK
LQotc3RydWN0IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHVpbnQ2NF90IG9m
ZnNldDsKLSAgICBHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0OwotICAgIHVuc2lnbmVkIHNoYWRlckxv
Y2F0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1OGJhM2YyMzU0ODQxZDhhZDRlZThmMTI3MjJmNDIwMDgyNDRmMTAxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1lbnVtIGNsYXNzIEdQVUlucHV0U3RlcE1vZGUgewotICAgIFZlcnRleCwKLSAgICBJbnN0YW5j
ZSwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRf
dCBzdHJpZGU7Ci0gICAgR1BVSW5wdXRTdGVwTW9kZSBzdGVwTW9kZTsKLSAgICBWZWN0b3I8R1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4gYXR0cmlidXRlU2V0OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyMzJmZTU5OTE1
ZWY1YTkxYThhYTVhYTU4ZTc0YzA2NDM5ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUluZGV4Rm9ybWF0IHsK
LSAgICBVaW50MTYsCi0gICAgVWludDMyLAotfTsKLQotc3RydWN0IEdQVVZlcnRleElucHV0RGVz
Y3JpcHRvciB7Ci0gICAgR1BVSW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQ7Ci0gICAgVmVjdG9yPHN0
ZDo6b3B0aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgzNWU3
ZDQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0
b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNp
bXBvcnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRl
KEdQVUVycm9yU2NvcGVzJiBlcnJvcnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BV
QmluZEdyb3VwQWxsb2NhdG9yKGVycm9ycykpOwotfQotCi1HUFVCaW5kR3JvdXBBbGxvY2F0b3I6
OkdQVUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotICAgIDogbV9l
cnJvclNjb3BlcyhtYWtlUmVmKGVycm9ycykpCi17Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXN0
ZDo6b3B0aW9uYWw8R1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHM+
IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVu
dEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1l
bnRFbmNvZGVyICpjb21wdXRlKQotewotICAgIGlkPE1UTERldmljZT4gZGV2aWNlID0gbmlsOwot
ICAgIGF1dG8gY2hlY2tlZE9mZnNldCA9IENoZWNrZWQ8TlNVSW50ZWdlcj4obV9sYXN0T2Zmc2V0
KTsKLQotICAgIGlmICh2ZXJ0ZXgpIHsKLSAgICAgICAgZGV2aWNlID0gdmVydGV4LmRldmljZTsK
LSAgICAgICAgY2hlY2tlZE9mZnNldCArPSB2ZXJ0ZXguZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0g
ICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIGRldmljZSA9IGZyYWdtZW50LmRldmljZTsKLSAg
ICAgICAgY2hlY2tlZE9mZnNldCArPSBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLSAg
ICBpZiAoY29tcHV0ZSkgewotICAgICAgICBkZXZpY2UgPSBjb21wdXRlLmRldmljZTsKLSAgICAg
ICAgY2hlY2tlZE9mZnNldCArPSBjb21wdXRlLmVuY29kZWRMZW5ndGg7Ci0gICAgfQotCi0gICAg
Ly8gTm8gYXJndW1lbnRzOyBub3RoaW5nIHRvIGJlIGRvbmUuCi0gICAgaWYgKCFkZXZpY2UpCi0g
ICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2Vk
KCkpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JG
aWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBh
dXRvIG5ld09mZnNldCA9IGNoZWNrZWRPZmZzZXQudmFsdWUoKTsKLQotICAgIGlmIChtX2FyZ3Vt
ZW50QnVmZmVyICYmIG5ld09mZnNldCA+IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKSB7
Ci0gICAgICAgIGlmICghcmVhbGxvY2F0ZShuZXdPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9IGVsc2UgaWYgKCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgIC8vIEJh
c2VkIG9mZiBtaW1pbXVtIGFsbG9jYXRpb24gZm9yIGEgc2hhcmVkLW1lbW9yeSBNVExCdWZmZXIg
b24gbWFjT1MuCi0gICAgICAgIE5TVUludGVnZXIgbWluaW11bVNpemUgPSA0MDk2OwotICAgICAg
ICBpZiAobWluaW11bVNpemUgPCBuZXdPZmZzZXQpCi0gICAgICAgICAgICBtaW5pbXVtU2l6ZSA9
IG5ld09mZnNldDsKLQotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgbV9hcmd1bWVudEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3Ro
Om1pbmltdW1TaXplIG9wdGlvbnM6MF0pOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICAgICAgaWYgKCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgICAgICBtX2Vy
cm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkp
OwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFyZ3Vt
ZW50QnVmZmVyT2Zmc2V0cyBvZmZzZXRzOwotCi0gICAgLy8gTWF0aCBpbiB0aGUgZm9sbG93aW5n
IHNlY3Rpb24gaXMgZ3VhcmRlZCBhZ2FpbnN0IG92ZXJmbG93IGJ5IG5ld09mZnNldCBjYWxjdWxh
dGlvbi4KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICh2ZXJ0ZXgp
IHsKLSAgICAgICAgb2Zmc2V0cy52ZXJ0ZXggPSBtX2xhc3RPZmZzZXQ7Ci0gICAgICAgIFt2ZXJ0
ZXggc2V0QXJndW1lbnRCdWZmZXI6bV9hcmd1bWVudEJ1ZmZlci5nZXQoKSBvZmZzZXQ6Km9mZnNl
dHMudmVydGV4XTsKLSAgICB9Ci0gICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIG9mZnNldHMu
ZnJhZ21lbnQgPSAodmVydGV4ID8gdmVydGV4LmVuY29kZWRMZW5ndGggOiAwKSArIG1fbGFzdE9m
ZnNldDsKLSAgICAgICAgW2ZyYWdtZW50IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZm
ZXIuZ2V0KCkgb2Zmc2V0OipvZmZzZXRzLmZyYWdtZW50XTsKLSAgICB9Ci0gICAgaWYgKGNvbXB1
dGUpIHsKLSAgICAgICAgb2Zmc2V0cy5jb21wdXRlID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVk
TGVuZ3RoIDogMCkgKyAoZnJhZ21lbnQgPyBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBt
X2xhc3RPZmZzZXQ7Ci0gICAgICAgIFtjb21wdXRlIHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1l
bnRCdWZmZXIuZ2V0KCkgb2Zmc2V0OipvZmZzZXRzLmNvbXB1dGVdOwotICAgIH0KLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG1fbGFzdE9mZnNldCA9IG5ld09mZnNldDsK
LSAgICArK21fbnVtQmluZEdyb3VwczsKLQotICAgIHJldHVybiBvZmZzZXRzOwotfQotCi0jZW5k
aWYgLy8gVVNFKE1FVEFMKQotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDY1NywgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDY1OCBPcHRpbWl6ZSByZWFsbG9jYXRpb24gYW5kIHJlc2V0IGJlaGF2aW9yLgotYm9v
bCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnJlYWxsb2NhdGUoTlNVSW50ZWdlciBuZXdPZmZzZXQp
Ci17Ci0gICAgTVRMQnVmZmVyICpuZXdCdWZmZXIgPSBuaWw7Ci0KLSAgICBhdXRvIG5ld0xlbmd0
aCA9IENoZWNrZWQ8TlNVSW50ZWdlcj4obV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5sZW5ndGgpOwot
ICAgIHdoaWxlIChuZXdMZW5ndGggPCBuZXdPZmZzZXQpIHsKLSAgICAgICAgbmV3TGVuZ3RoICs9
IG5ld0xlbmd0aCAvIDRVOwotCi0gICAgICAgIGlmIChuZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgp
KSB7Ci0gICAgICAgICAgICBuZXdMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPE5TVUludGVn
ZXI+OjptYXgoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBuZXdCdWZmZXIgPSBbbV9hcmd1bWVu
dEJ1ZmZlci5nZXQoKS5kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDpuZXdMZW5ndGgudmFsdWUo
KSBvcHRpb25zOjBdOwotICAgIG1lbWNweShuZXdCdWZmZXIuY29udGVudHMsIG1fYXJndW1lbnRC
dWZmZXIuZ2V0KCkuY29udGVudHMsIG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsKLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbmV3QnVmZmVyKSB7Ci0g
ICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpP
dXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2FyZ3Vt
ZW50QnVmZmVyID0gYWRvcHROUyhuZXdCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6dHJ5UmVzZXQoKQotewotICAgIC0tbV9udW1CaW5k
R3JvdXBzOwotICAgIAotICAgIEFTU0VSVChtX251bUJpbmRHcm91cHMgPiAtMSk7Ci0KLSAgICBp
ZiAoIW1fbnVtQmluZEdyb3VwcykgewotICAgICAgICBtX2FyZ3VtZW50QnVmZmVyID0gbnVsbHB0
cjsKLSAgICAgICAgbV9sYXN0T2Zmc2V0ID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmlu
ZEdyb3VwTGF5b3V0TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWFj
Zjc4NmJiYmVlN2E5MWEwN2EzNDZlN2YwMWU0ZTFjMDBkZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTERh
dGFUeXBlIE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoR1BVQmluZGluZ1R5cGUgdHlwZSkKLXsK
LSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgot
ICAgICAgICByZXR1cm4gTVRMRGF0YVR5cGVTYW1wbGVyOwotICAgIGNhc2UgR1BVQmluZGluZ1R5
cGU6OlNhbXBsZWRUZXh0dXJlOgotICAgICAgICByZXR1cm4gTVRMRGF0YVR5cGVUZXh0dXJlOwot
ICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5k
aW5nVHlwZTo6RHluYW1pY1VuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6
U3RvcmFnZUJ1ZmZlcjoKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpEeW5hbWljU3RvcmFnZUJ1
ZmZlcjoKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlUG9pbnRlcjsKLSAgICB9Ci19Ci0KLXVz
aW5nIEFyZ3VtZW50QXJyYXkgPSBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnRE
ZXNjcmlwdG9yICo+PjsKLXN0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50VG9BcnJheShBcmd1bWVu
dEFycmF5JiBhcnJheSwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnQp
Ci17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgaWYgKCFhcnJheSkKLSAg
ICAgICAgYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0czphcmd1bWVudC5nZXQoKSwgbmlsXSk7Ci0gICAgZWxzZQotICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OmFyZ3VtZW50LmdldCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiB0cnlDcmVhdGVNdGxBcmd1
bWVudEVuY29kZXIoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEFyZ3VtZW50QXJyYXkgYXJyYXkp
Ci17Ci0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZW5jb2RlcjsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGVuY29kZXIgPSBhZG9wdE5TKFtkZXZpY2Uu
cGxhdGZvcm1EZXZpY2UoKSBuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOmFycmF5Lmdl
dCgpXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghZW5jb2Rlcikg
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTog
VW5hYmxlIHRvIGNyZWF0ZSBNVExBcmd1bWVudEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gZW5jb2RlcjsKLX07Ci0KLXN0YXRpYyBSZXRhaW5Q
dHI8TVRMQXJndW1lbnREZXNjcmlwdG9yPiBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGUg
ZGF0YVR5cGUsIE5TVUludGVnZXIgaW5kZXgpCi17Ci0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50
RGVzY3JpcHRvcj4gbXRsQXJndW1lbnQ7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgbXRsQXJndW1lbnQgPSBhZG9wdE5TKFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XSk7
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzODQgVGhpcyBuZWVkcyB0byBzZXQg
dGhlICJ0ZXh0dXJlVHlwZSIgZmllbGQKLSAgICBbbXRsQXJndW1lbnQgc2V0RGF0YVR5cGU6ZGF0
YVR5cGVdOwotICAgIFttdGxBcmd1bWVudCBzZXRJbmRleDppbmRleF07Ci0gICAgcmV0dXJuIG10
bEFyZ3VtZW50OwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBM
YXlvdXQ6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0
Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6
OnRyeUNyZWF0ZSgpOiBJbnZhbGlkIE1UTERldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgQXJndW1lbnRBcnJheSB2ZXJ0ZXhBcmdzLCBmcmFnbWVudEFyZ3Ms
IGNvbXB1dGVBcmdzLCB2ZXJ0ZXhMZW5ndGhzLCBmcmFnbWVudExlbmd0aHMsIGNvbXB1dGVMZW5n
dGhzOwotICAgIEJpbmRpbmdzTWFwVHlwZSBiaW5kaW5nc01hcDsKLQotICAgIHVuc2lnbmVkIGlu
dGVybmFsTmFtZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhCYXNlID0gZGVzY3Jp
cHRvci5iaW5kaW5ncy5zaXplKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBiaW5kaW5nIDogZGVz
Y3JpcHRvci5iaW5kaW5ncykgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBleHRy
YUluZGV4OwotICAgICAgICBhdXRvIGludGVybmFsRGV0YWlscyA9IChbJl0oKSAtPiBHUFVCaW5k
R3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgewotICAgICAgICAgICAgc3dpdGNo
IChiaW5kaW5nLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZv
cm1CdWZmZXI6Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFz
ZSsrOwotICAgICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1C
dWZmZXIgeyAqZXh0cmFJbmRleCB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6
RHluYW1pY1VuaWZvcm1CdWZmZXI6Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVy
bmFsTGVuZ3RoQmFzZSsrOwotICAgICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlv
dXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNh
c2UgR1BVQmluZGluZ1R5cGU6OlNhbXBsZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJp
bmRHcm91cExheW91dDo6U2FtcGxlciB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdU
eXBlOjpTYW1wbGVkVGV4dHVyZToKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3Vw
TGF5b3V0OjpTYW1wbGVkVGV4dHVyZSB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdU
eXBlOjpTdG9yYWdlQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5h
bExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0
OjpTdG9yYWdlQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGJpbmRpbmcudHlwZSA9PSBHUFVCaW5kaW5nVHlwZTo6RHlu
YW1pY1N0b3JhZ2VCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5h
bExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0
OjpEeW5hbWljU3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0pKCk7Ci0gICAgICAgIEJpbmRpbmcgYmluZGluZ0RldGFpbHMgPSB7IGJpbmRpbmcs
IGludGVybmFsTmFtZSsrLCBXVEZNb3ZlKGludGVybmFsRGV0YWlscykgfTsKLSAgICAgICAgaWYg
KCFiaW5kaW5nc01hcC5hZGQoYmluZGluZy5iaW5kaW5nLCBiaW5kaW5nRGV0YWlscykpIHsKLSAg
ICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBE
dXBsaWNhdGUgYmluZGluZyAldSBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotCi0gICAgICAgIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3Vt
ZW50ID0gYXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoYmluZGlu
Zy50eXBlKSwgYmluZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lKTsKLQotICAgICAgICBpZiAoIW10
bEFyZ3VtZW50KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0
Ojp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExBcmd1bWVudERlc2NyaXB0b3IgZm9y
IGJpbmRpbmcgJXUhIiwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhZGRJbmRpY2VzID0gWyZdKEFyZ3VtZW50
QXJyYXkmIGFyZ3MsIEFyZ3VtZW50QXJyYXkmIGxlbmd0aHMpIC0+IGJvb2wgewotICAgICAgICAg
ICAgYXBwZW5kQXJndW1lbnRUb0FycmF5KGFyZ3MsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAg
IGlmIChleHRyYUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50
RGVzY3JpcHRvcj4gbXRsQXJndW1lbnQgPSBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGVV
SW50MiwgKmV4dHJhSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghbXRsQXJndW1lbnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5
Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9yIGZvciBiaW5k
aW5nICV1ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRU
b0FycmF5KGxlbmd0aHMsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0
eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4KSAmJiAhYWRkSW5kaWNlcyh2ZXJ0ZXhB
cmdzLCB2ZXJ0ZXhMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6RnJhZ21l
bnQpICYmICFhZGRJbmRpY2VzKGZyYWdtZW50QXJncywgZnJhZ21lbnRMZW5ndGhzKSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAm
IEdQVVNoYWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkgJiYgIWFkZEluZGljZXMoY29tcHV0ZUFy
Z3MsIGNvbXB1dGVMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFt2ZXJ0ZXhBcmdzIGFkZE9i
amVjdHNGcm9tQXJyYXk6dmVydGV4TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2ZyYWdtZW50QXJncyBh
ZGRPYmplY3RzRnJvbUFycmF5OmZyYWdtZW50TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2NvbXB1dGVB
cmdzIGFkZE9iamVjdHNGcm9tQXJyYXk6Y29tcHV0ZUxlbmd0aHMuZ2V0KCldOwotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+
IHZlcnRleCwgZnJhZ21lbnQsIGNvbXB1dGU7Ci0KLSAgICBpZiAodmVydGV4QXJncyAmJiAhKHZl
cnRleCA9IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2RlcihkZXZpY2UsIHZlcnRleEFyZ3MpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGZyYWdtZW50QXJncyAmJiAhKGZyYWdt
ZW50ID0gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGRldmljZSwgZnJhZ21lbnRBcmdzKSkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChjb21wdXRlQXJncyAmJiAhKGNvbXB1
dGUgPSB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoZGV2aWNlLCBjb21wdXRlQXJncykpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmlu
ZEdyb3VwTGF5b3V0KFdURk1vdmUoYmluZGluZ3NNYXApLCBXVEZNb3ZlKHZlcnRleCksIFdURk1v
dmUoZnJhZ21lbnQpLCBXVEZNb3ZlKGNvbXB1dGUpKSk7Ci19Ci0KLUdQVUJpbmRHcm91cExheW91
dDo6R1BVQmluZEdyb3VwTGF5b3V0KEJpbmRpbmdzTWFwVHlwZSYmIGJpbmRpbmdzTWFwLCBSZXRh
aW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50
RW5jb2Rlcj4mJiBmcmFnbWVudCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21w
dXRlKQotICAgIDogbV92ZXJ0ZXhFbmNvZGVyKFdURk1vdmUodmVydGV4KSkKLSAgICAsIG1fZnJh
Z21lbnRFbmNvZGVyKFdURk1vdmUoZnJhZ21lbnQpKQotICAgICwgbV9jb21wdXRlRW5jb2RlcihX
VEZNb3ZlKGNvbXB1dGUpKQotICAgICwgbV9iaW5kaW5nc01hcChXVEZNb3ZlKGJpbmRpbmdzTWFw
KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTA2OThiMTlhZWNiZjJlOTQ5ODM4ZThjNjFkZGRkMjlmMDU5ZTFiZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR1BVQmluZEdyb3VwLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0
ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cEJpbmRpbmcu
aCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRH
cm91cExheW91dC5oIgotI2ltcG9ydCAiR1BVU2FtcGxlci5oIgotI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5
R2V0UmVzb3VyY2VBc0J1ZmZlckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxF
RAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEdQVUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IFJlc291cmNlIGlzIG5vdCBhIGJ1ZmZlciB0eXBlISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIGF1dG8m
IGJ1ZmZlckJpbmRpbmcgPSBXVEY6OmdldDxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSk7Ci0g
ICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMQnVmZmVyIGluIEdQVUJ1ZmZlckJpbmRpbmch
IiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0g
ICAgaWYgKCFpc0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcuc2l6ZSkgfHwgYnVm
ZmVyQmluZGluZy5zaXplID4gYnVmZmVyQmluZGluZy5idWZmZXItPmJ5dGVMZW5ndGgoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlckJpbmRpbmcgc2l6ZSBpcyB0b28gbGFy
Z2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBw
bGF0Zm9ybXMuCi0gICAgaWYgKCFpc0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcu
b2Zmc2V0KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEJ1ZmZlciBvZmZzZXQgaXMgdG9v
IGxhcmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotICAgIHJldHVybiBHUFVCdWZmZXJCaW5kaW5nIHsgYnVmZmVyQmluZGluZy5idWZmZXIu
Y29weVJlZigpLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH07Ci19
Ci0KLXN0YXRpYyB2b2lkIHNldEJ1ZmZlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFy
Z3VtZW50RW5jb2RlciwgY29uc3QgR1BVQnVmZmVyQmluZGluZyYgYnVmZmVyQmluZGluZywgdW5z
aWduZWQgbmFtZSwgdW5zaWduZWQgbGVuZ3RoTmFtZSkKLXsKLSAgICBBU1NFUlQoYXJndW1lbnRF
bmNvZGVyICYmIGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIEJvdW5kcyBjaGVjayB3aGVuIGNv
bnZlcnRpbmcgR1BVQnVmZmVyQmluZGluZyBlbnN1cmVzIHRoYXQgTlNVSW50ZWdlciBjYXN0IG9m
IHVpbnQ2NF90IG9mZnNldCBpcyBzYWZlLgotICAgIFthcmd1bWVudEVuY29kZXIgc2V0QnVmZmVy
OmJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpIG9mZnNldDpzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLm9mZnNldCkgYXRJbmRleDpuYW1lXTsKLSAgICB2
b2lkKiBsZW5ndGhQb2ludGVyID0gW2FyZ3VtZW50RW5jb2RlciBjb25zdGFudERhdGFBdEluZGV4
Omxlbmd0aE5hbWVdOwotICAgIG1lbWNweShsZW5ndGhQb2ludGVyLCAmYnVmZmVyQmluZGluZy5z
aXplLCBzaXplb2YodWludDY0X3QpKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0gICAgCi1zdGF0aWMgTVRMU2FtcGxlclN0YXRlICp0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxl
cihjb25zdCBHUFVCaW5kaW5nUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBjb25zdCBm
dW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0
aW9uTmFtZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNv
bnN0IEdQVVNhbXBsZXI+PihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBS
ZXNvdXJjZSBpcyBub3QgYSBHUFVTYW1wbGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICBhdXRvIHNhbXBsZXJTdGF0ZSA9IFdURjo6Z2V0PFJl
Zjxjb25zdCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpLT5wbGF0Zm9ybVNhbXBsZXIoKTsKLSAgICBp
ZiAoIXNhbXBsZXJTdGF0ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRM
U2FtcGxlclN0YXRlIGluIEdQVVNhbXBsZXIgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHNhbXBsZXJTdGF0ZTsKLX0K
LQotc3RhdGljIHZvaWQgc2V0U2FtcGxlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFy
Z3VtZW50RW5jb2RlciwgTVRMU2FtcGxlclN0YXRlICpzYW1wbGVyLCB1bnNpZ25lZCBpbmRleCkK
LXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHNhbXBsZXIpOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRTYW1wbGVyU3Rh
dGU6c2FtcGxlciBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXN0YXRpYyBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUo
Y29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVu
Y3Rpb25OYW1lKQotICAgIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVu
Y3Rpb25OYW1lKTsKLSNlbmRpZgotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
R1BVVGV4dHVyZT4+KHJlc291cmNlKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJlc291
cmNlIGlzIG5vdCBhIEdQVVRleHR1cmVWaWV3ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICBhdXRvJiB0ZXh0dXJlUmVmID0gV1RGOjpnZXQ8UmVm
PEdQVVRleHR1cmU+PihyZXNvdXJjZSk7Ci0gICAgaWYgKCF0ZXh0dXJlUmVmLT5wbGF0Zm9ybVRl
eHR1cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBp
biBHUFVUZXh0dXJlVmlldyBiaW5kaW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gdGV4dHVyZVJlZi5jb3B5UmVmKCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHNldFRleHR1cmVPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1
bWVudEVuY29kZXIsIE1UTFRleHR1cmUgKnRleHR1cmUsIHVuc2lnbmVkIGluZGV4KQotewotICAg
IEFTU0VSVChhcmd1bWVudEVuY29kZXIgJiYgdGV4dHVyZSk7Ci0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBbYXJndW1lbnRFbmNvZGVyIHNldFRleHR1cmU6dGV4dHVyZSBh
dEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLVJlZlB0
cjxHUFVCaW5kR3JvdXA+IEdQVUJpbmRHcm91cDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVUJpbmRHcm91
cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYgYWxsb2NhdG9y
KQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVCaW5kR3JvdXA6
OnRyeUNyZWF0ZSgpIjsKLSAgICAKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleEVuY29k
ZXIgPSBkZXNjcmlwdG9yLmxheW91dC0+dmVydGV4RW5jb2RlcigpOwotICAgIE1UTEFyZ3VtZW50
RW5jb2RlciAqZnJhZ21lbnRFbmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPmZyYWdtZW50RW5j
b2RlcigpOwotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIgPSBkZXNjcmlw
dG9yLmxheW91dC0+Y29tcHV0ZUVuY29kZXIoKTsKLQotICAgIGF1dG8gb2Zmc2V0cyA9IGFsbG9j
YXRvci5hbGxvY2F0ZUFuZFNldEVuY29kZXJzKHZlcnRleEVuY29kZXIsIGZyYWdtZW50RW5jb2Rl
ciwgY29tcHV0ZUVuY29kZXIpOwotICAgIGlmICghb2Zmc2V0cykKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gYm91bmRCdWZmZXJzOwot
ICAgIEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiBib3VuZFRleHR1cmVzOwotCi0gICAgLy8gU2V0
IGVhY2ggcmVzb3VyY2Ugb24gZWFjaCBNVExBcmd1bWVudEVuY29kZXIgaXQgc2hvdWxkIGJlIHZp
c2libGUgb24uCi0gICAgY29uc3QgYXV0byYgbGF5b3V0QmluZGluZ3NNYXAgPSBkZXNjcmlwdG9y
LmxheW91dC0+YmluZGluZ3NNYXAoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNlQmlu
ZGluZyA6IGRlc2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgYXV0byBpbmRleCA9IHJlc291
cmNlQmluZGluZy5iaW5kaW5nOwotICAgICAgICBhdXRvIGxheW91dEl0ZXJhdG9yID0gbGF5b3V0
QmluZGluZ3NNYXAuZmluZChpbmRleCk7Ci0gICAgICAgIGlmIChsYXlvdXRJdGVyYXRvciA9PSBs
YXlvdXRCaW5kaW5nc01hcC5lbmQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBH
UFVCaW5kR3JvdXBCaW5kaW5nICV1IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwg
ZnVuY3Rpb25OYW1lLCBpbmRleCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotICAgICAgICBhdXRvIGxheW91dEJpbmRpbmcgPSBsYXlvdXRJdGVyYXRvci0+dmFsdWU7
Ci0gICAgICAgIGlmIChsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ID09
IEdQVVNoYWRlclN0YWdlOjpGbGFnczo6Tm9uZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIGJvb2wgaXNGb3JWZXJ0ZXggPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52
aXNpYmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpWZXJ0ZXg7Ci0gICAgICAgIGJvb2wg
aXNGb3JGcmFnbWVudCA9IGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkg
JiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50OwotICAgICAgICBib29sIGlzRm9yQ29t
cHV0ZSA9IGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFk
ZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGU7Ci0KLSAgICAgICAgaWYgKGlzRm9yVmVydGV4ICYmICF2
ZXJ0ZXhFbmNvZGVyKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBh
cmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5k
ZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGlzRm9yRnJhZ21lbnQgJiYgIWZyYWdtZW50RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBObyBmcmFnbWVudCBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5n
ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzRm9yQ29tcHV0ZSAmJiAhY29tcHV0ZUVuY29kZXIp
IHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gY29tcHV0ZSBhcmd1bWVudCBlbmNv
ZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGhhbmRsZUJ1
ZmZlciA9IFsmXSh1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWUpIC0+IGJvb2wgewotICAgICAg
ICAgICAgYXV0byBidWZmZXJSZXNvdXJjZSA9IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5n
KHJlc291cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlm
ICghYnVmZmVyUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgaWYgKGlzRm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2Rl
cih2ZXJ0ZXhFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxO
YW1lLCBpbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQp
Ci0gICAgICAgICAgICAgICAgc2V0QnVmZmVyT25FbmNvZGVyKGZyYWdtZW50RW5jb2RlciwgKmJ1
ZmZlclJlc291cmNlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhO
YW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0
QnVmZmVyT25FbmNvZGVyKGNvbXB1dGVFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJp
bmRpbmcuaW50ZXJuYWxOYW1lLCBpbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgYm91
bmRCdWZmZXJzLmFkZFZvaWQoV1RGTW92ZShidWZmZXJSZXNvdXJjZS0+YnVmZmVyKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIHN1Y2Nlc3Mg
PSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5p
Zm9ybUJ1ZmZlciYgdW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4g
aGFuZGxlQnVmZmVyKHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAg
fSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXImIGR5bmFtaWNV
bmlmb3JtQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIo
ZHluYW1pY1VuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZd
KEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlciYpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0
byBzYW1wbGVyU3RhdGUgPSB0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihyZXNvdXJjZUJpbmRp
bmcucmVzb3VyY2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIXNhbXBsZXJTdGF0
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaXNGb3JW
ZXJ0ZXgpCi0gICAgICAgICAgICAgICAgc2V0U2FtcGxlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVy
LCBzYW1wbGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAg
IGlmIChpc0ZvckZyYWdtZW50KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIo
ZnJhZ21lbnRFbmNvZGVyLCBzYW1wbGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1l
KTsKLSAgICAgICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0U2Ft
cGxlck9uRW5jb2Rlcihjb21wdXRlRW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5n
LmludGVybmFsTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZd
KEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlZFRleHR1cmUmKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIGF1dG8gdGV4dHVyZVJlc291cmNlID0gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUocmVzb3Vy
Y2VCaW5kaW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCF0ZXh0
dXJlUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKGlzRm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIodmVy
dGV4RW5jb2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0Qmlu
ZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAg
ICAgICAgICAgICAgc2V0VGV4dHVyZU9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIsIHRleHR1cmVS
ZXNvdXJjZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsK
LSAgICAgICAgICAgIGlmIChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVy
ZU9uRW5jb2Rlcihjb21wdXRlRW5jb2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1
cmUoKSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgYm91bmRUZXh0
dXJlcy5hZGRWb2lkKHRleHR1cmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9y
YWdlQnVmZmVyJiBzdG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBo
YW5kbGVCdWZmZXIoc3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9
LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZlciYgZHluYW1pY1N0
b3JhZ2VCdWZmZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUJ1ZmZlcihk
eW5hbWljU3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9KSwgbGF5
b3V0QmluZGluZy5pbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNz
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR1BVQmluZEdyb3VwKFdURk1vdmUoKm9mZnNldHMpLCBhbGxvY2F0b3IsIFdU
Rk1vdmUoYm91bmRCdWZmZXJzKSwgV1RGTW92ZShib3VuZFRleHR1cmVzKSkpOwotfQotICAgIAot
R1BVQmluZEdyb3VwOjpHUFVCaW5kR3JvdXAoR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVu
dEJ1ZmZlck9mZnNldHMmJiBvZmZzZXRzLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRv
ciwgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4mJiBidWZmZXJzLCBIYXNoU2V0PFJlZjxHUFVUZXh0
dXJlPj4mJiB0ZXh0dXJlcykKLSAgICA6IG1fYXJndW1lbnRCdWZmZXJPZmZzZXRzKFdURk1vdmUo
b2Zmc2V0cykpCi0gICAgLCBtX2FsbG9jYXRvcihtYWtlUmVmKGFsbG9jYXRvcikpCi0gICAgLCBt
X2JvdW5kQnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQotICAgICwgbV9ib3VuZFRleHR1cmVzKFdU
Rk1vdmUodGV4dHVyZXMpKQotewotfQotCi1HUFVCaW5kR3JvdXA6On5HUFVCaW5kR3JvdXAoKQot
ewotICAgIG1fYWxsb2NhdG9yLT50cnlSZXNldCgpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkMDVkYThiMTMwM2JlOTNiZjBkNDky
NzhiMGRjZjljNmEyODQ5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVm
ZmVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW1wb3J0ICJHUFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVE
ZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9BcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBv
cnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3RleHByIGF1dG8gcmVhZE9ubHlG
bGFncyA9IE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHsgR1BVQnVmZmVyVXNhZ2U6
OkZsYWdzOjpJbmRleCwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgsIEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6VW5pZm9ybSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlIH07
Ci0KLQotYm9vbCBHUFVCdWZmZXI6OnZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2Uo
KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQg
R1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHVz
YWdlLmNvbnRhaW5zQWxsKHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVy
YXRlUHJlZml4ZWRFcnJvcigiQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1B
UF9XUklURSB1c2FnZSEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1SZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShH
UFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
R1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24g
c29tZSBwbGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBzaXplID0gMDsKLSAgICBpZiAoIVdURjo6
Y29udmVydFNhZmVseShkZXNjcmlwdG9yLnNpemUsIHNpemUpKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBp
ZiAoIXZhbGlkYXRlQnVmZmVyVXNhZ2UoZGV2aWNlLCB1c2FnZSwgZXJyb3JTY29wZXMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIGNvcHlCdWZmZXJUb0J1ZmZlciBjYWxscyBy
ZXF1aXJlIDQtYnl0ZSBhbGlnbm1lbnQuICJVbm1hcHBpbmciIGEgbWFwcGVkLW9uLWNyZWF0aW9u
IEdQVUJ1ZmZlcgotICAgIC8vIHRoYXQgaXMgb3RoZXJ3aXNlIHVubWFwcGFibGUgcmVxdWlyZXMg
c3VjaCBhIGNvcHkgdG8gdXBsb2FkIGRhdGEuCi0gICAgaWYgKGlzTWFwcGVkID09IEdQVUJ1ZmZl
ck1hcHBlZE9wdGlvbjo6SXNNYXBwZWQKLSAgICAgICAgJiYgIXVzYWdlLmNvbnRhaW5zQW55KHsg
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpN
YXBSZWFkIH0pCi0gICAgICAgICYmIGRlc2NyaXB0b3Iuc2l6ZSAlIDQpIHsKLSAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJEYXRhIG11c3QgYmUgYWxpZ25lZCB0byBh
IG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIC8vIEZJWE1FOiBNZXRhbCBiZXN0IHByYWN0aWNlczogUmVhZC1vbmx5IG9uZS10aW1l
LXVzZSBkYXRhIGxlc3MgdGhhbiA0IEtCIHNob3VsZCBub3QgYWxsb2NhdGUgYSBNVExCdWZmZXIg
YW5kIGJlIHVzZWQgaW4gW01UTENvbW1hbmRFbmNvZGVyIHNldCpCeXRlc10gY2FsbHMgaW5zdGVh
ZC4KLQotICAgIE1UTFJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMgPSBNVExSZXNvdXJj
ZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZTsKLQotICAgIC8vIE1hcHBhYmxlIGJ1ZmZlcnMgdXNl
IHNoYXJlZCBzdG9yYWdlIGFsbG9jYXRpb24uCi0gICAgcmVzb3VyY2VPcHRpb25zIHw9IHVzYWdl
LmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVy
VXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pID8gTVRMUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA6
IE1UTFJlc291cmNlU3RvcmFnZU1vZGVQcml2YXRlOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZl
cj4gbXRsQnVmZmVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBt
dGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRo
TGVuZ3RoOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRlc2NyaXB0b3Iuc2l6ZSkgb3B0aW9uczpy
ZXNvdXJjZU9wdGlvbnNdKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
IGlmICghbXRsQnVmZmVyKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIs
IEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10bEJ1
ZmZlciksIGRldmljZSwgc2l6ZSwgdXNhZ2UsIGlzTWFwcGVkKSk7Ci19Ci0KLUdQVUJ1ZmZlcjo6
R1BVQnVmZmVyKFJldGFpblB0cjxNVExCdWZmZXI+JiYgYnVmZmVyLCBHUFVEZXZpY2UmIGRldmlj
ZSwgc2l6ZV90IHNpemUsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBH
UFVCdWZmZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQpCi0gICAgOiBtX3BsYXRmb3JtQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKLSAgICAsIG1fZGV2aWNlKG1ha2VSZWYoZGV2aWNlKSkKLSAgICAsIG1f
Ynl0ZUxlbmd0aChzaXplKQotICAgICwgbV91c2FnZSh1c2FnZSkKLSAgICAsIG1faXNNYXBwZWRG
cm9tQ3JlYXRpb24oaXNNYXBwZWQgPT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCkK
LXsKLSAgICBtX3BsYXRmb3JtVXNhZ2UgPSBNVExSZXNvdXJjZVVzYWdlUmVhZDsKLSAgICBpZiAo
aXNTdG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdl
V3JpdGU7Ci19Ci0KLUdQVUJ1ZmZlcjo6fkdQVUJ1ZmZlcigpCi17Ci0gICAgZGVzdHJveShudWxs
cHRyKTsKLX0KLQotYm9vbCBHUFVCdWZmZXI6OmlzUmVhZE9ubHkoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHJlYWRPbmx5RmxhZ3MpOwotfQotCi1HUFVCdWZmZXI6
OlN0YXRlIEdQVUJ1ZmZlcjo6c3RhdGUoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybUJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIFN0YXRlOjpEZXN0cm95ZWQ7Ci0gICAgaWYgKG1faXNNYXBw
ZWRGcm9tQ3JlYXRpb24gfHwgbV9tYXBwaW5nQ2FsbGJhY2spCi0gICAgICAgIHJldHVybiBTdGF0
ZTo6TWFwcGVkOwotCi0gICAgcmV0dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlNDOjpBcnJh
eUJ1ZmZlciogR1BVQnVmZmVyOjptYXBPbkNyZWF0aW9uKCkKLXsKLSAgICBBU1NFUlQobV9pc01h
cHBlZEZyb21DcmVhdGlvbik7Ci0gICAgcmV0dXJuIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpOwot
fQotCi0jaWYgVVNFKE1FVEFMKQotdm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21taXR0
ZWQoTVRMQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICsrbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVyczsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIE1ha2Ugc3VyZSB8dGhpc3wgb25seSBn
ZXRzIHJlZidkIC8gZGVyZWYnZCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaXMgbm90IFRo
cmVhZFNhZmVSZWZDb3VudGVkLgotICAgIFtjb21tYW5kQnVmZmVyIGFkZENvbXBsZXRlZEhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGlk
PE1UTENvbW1hbmRCdWZmZXI+KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAg
ICAgIGNvbW1hbmRCdWZmZXJDb21wbGV0ZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuZ2V0KCld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNv
bW1hbmRCdWZmZXJDb21wbGV0ZWQoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgQVNTRVJUKG1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMpOwotCi0gICAgaWYgKG1fbnVt
U2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMgPT0gMSAmJiBzdGF0ZSgpID09IFN0YXRlOjpNYXBwZWQp
Ci0gICAgICAgIHJ1bk1hcHBpbmdDYWxsYmFjaygpOwotCi0gICAgLS1tX251bVNjaGVkdWxlZENv
bW1hbmRCdWZmZXJzOwotfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotdm9pZCBHUFVCdWZmZXI6
OnJlZ2lzdGVyTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29s
IGlzUmVhZCwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIFJlamVjdCBp
ZiByZXF1ZXN0IGlzIGludmFsaWQuCi0gICAgaWYgKGlzUmVhZCAmJiAhaXNNYXBSZWFkYWJsZSgp
KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICghaXNSZWFkICYmICFpc01hcFdyaXRlYWJsZSgpKSB7Ci0gICAgICAg
IGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7
Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKCFtX21hcHBpbmdDYWxsYmFjayAmJiAhbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmlz
UGVuZGluZygpKTsKLQotICAgIC8vIEFuIGV4aXN0aW5nIGNhbGxiYWNrIG1lYW5zIHRoaXMgYnVm
ZmVyIGlzIGluIHRoZSBtYXBwZWQgc3RhdGUuCi0gICAgbV9tYXBwaW5nQ2FsbGJhY2sgPSBQZW5k
aW5nTWFwcGluZ0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgLy8g
SWYgR1BVIGlzIG5vdCB1c2luZyB0aGlzIGJ1ZmZlciwgcnVuIHRoZSBjYWxsYmFjayBBU0FQLgot
ICAgIGlmICghbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVycykgewotICAgICAgICBtX21hcHBp
bmdDYWxsYmFja1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICAgICAgcnVuTWFwcGluZ0NhbGxiYWNrKCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotdm9pZCBHUFVCdWZmZXI6OnJ1bk1hcHBpbmdDYWxs
YmFjaygpCi17Ci0gICAgaWYgKG1fbWFwcGluZ0NhbGxiYWNrKQotICAgICAgICBtX21hcHBpbmdD
YWxsYmFjay0+Y2FsbGJhY2soaXNNYXBSZWFkKCkgPyBzdGFnaW5nQnVmZmVyRm9yUmVhZCgpIDog
c3RhZ2luZ0J1ZmZlckZvcldyaXRlKCkpOwotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZm
ZXI6OnN0YWdpbmdCdWZmZXJGb3JSZWFkKCkKLXsKLSAgICBpZiAoIW1fc3RhZ2luZ0J1ZmZlcikK
LSAgICAgICAgbV9zdGFnaW5nQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3BsYXRmb3Jt
QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2J5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bWVtY3B5KG1fc3RhZ2luZ0J1ZmZlci0+ZGF0YSgpLCBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNv
bnRlbnRzLCBtX2J5dGVMZW5ndGgpOwotCi0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQo
KTsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yV3Jp
dGUoKQotewotICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoMSwgbV9i
eXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gbV9zdGFnaW5nQnVmZmVyLmdldCgpOwotfQotCi12b2lk
IEdQVUJ1ZmZlcjo6Y29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyogZXJyb3JT
Y29wZXMpCi17Ci0gICAgTVRMQ29tbWFuZFF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIW1fZGV2aWNl
LT50cnlHZXRRdWV1ZSgpIHx8ICEocXVldWUgPSBtX2RldmljZS0+dHJ5R2V0UXVldWUoKS0+cGxh
dGZvcm1RdWV1ZSgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZl
cj4gc3RhZ2luZ010bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIC8vIEdQVUJ1ZmZlciBjcmVhdGlvbiB2YWxpZGF0aW9uIGVuc3VyZXMgbV9ieXRlU2l6ZSBm
aXRzIGluIE5TVUludGVnZXIuCi0gICAgc3RhZ2luZ010bEJ1ZmZlciA9IGFkb3B0TlMoW21fZGV2
aWNlLT5wbGF0Zm9ybURldmljZSgpIG5ld0J1ZmZlcldpdGhCeXRlczptX3N0YWdpbmdCdWZmZXIt
PmRhdGEoKSBsZW5ndGg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKSBvcHRp
b25zOk1UTFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlXSk7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFzdGFnaW5nTXRsQnVmZmVyICYmIGVycm9yU2Nv
cGVzKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZp
bHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSByZXRhaW5Q
dHIoW3F1ZXVlIGNvbW1hbmRCdWZmZXJdKTsKLSAgICBhdXRvIGJsaXRFbmNvZGVyID0gcmV0YWlu
UHRyKFtjb21tYW5kQnVmZmVyIGJsaXRDb21tYW5kRW5jb2Rlcl0pOwotCi0gICAgW2JsaXRFbmNv
ZGVyIGNvcHlGcm9tQnVmZmVyOnN0YWdpbmdNdGxCdWZmZXIuZ2V0KCkgc291cmNlT2Zmc2V0OjAg
dG9CdWZmZXI6bV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKSBkZXN0aW5hdGlvbk9mZnNldDowIHNpemU6
c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKV07Ci0gICAgW2JsaXRFbmNvZGVy
IGVuZEVuY29kaW5nXTsKLSAgICBbY29tbWFuZEJ1ZmZlciBjb21taXRdOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JT
Y29wZXMqIGVycm9yU2NvcGVzKQotewotICAgIGlmICghbV9pc01hcHBlZEZyb21DcmVhdGlvbiAm
JiAhaXNNYXBwYWJsZSgpICYmIGVycm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLT5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9uOiBHUFVCdWZmZXIgaXMgbm90
IG1hcHBhYmxlISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhZ2lu
Z0J1ZmZlcikgewotICAgICAgICBpZiAoaXNNYXBwYWJsZSgpKSB7Ci0gICAgICAgICAgICAvLyBN
QVBfV1JJVEUgYW5kIE1BUF9SRUFEIGJ1ZmZlcnMgaGF2ZSBzaGFyZWQsIENQVS1hY2Nlc3NpYmxl
IHN0b3JhZ2UuCi0gICAgICAgICAgICBBU1NFUlQobV9wbGF0Zm9ybUJ1ZmZlciAmJiBtX3BsYXRm
b3JtQnVmZmVyLmdldCgpLmNvbnRlbnRzKTsKLSAgICAgICAgICAgIG1lbWNweShtX3BsYXRmb3Jt
QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9ieXRlTGVu
Z3RoKTsKLSAgICAgICAgfSBlbHNlIGlmIChtX2lzTWFwcGVkRnJvbUNyZWF0aW9uKQotICAgICAg
ICAgICAgY29weVN0YWdpbmdCdWZmZXJUb0dQVShlcnJvclNjb3Blcyk7Ci0KLSAgICAgICAgbV9p
c01hcHBlZEZyb21DcmVhdGlvbiA9IGZhbHNlOwotICAgICAgICBtX3N0YWdpbmdCdWZmZXIgPSBu
dWxscHRyOwotICAgIH0KLQotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykgewotICAgICAgICBt
X21hcHBpbmdDYWxsYmFja1Rhc2suY2FuY2VsVGFzaygpOwotICAgICAgICBtX21hcHBpbmdDYWxs
YmFjay0+Y2FsbGJhY2sobnVsbHB0cik7Ci0gICAgICAgIG1fbWFwcGluZ0NhbGxiYWNrID0gbnVs
bHB0cjsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpkZXN0cm95KEdQVUVycm9yU2NvcGVz
KiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVkKQotICAg
ICAgICB1bm1hcChlcnJvclNjb3Blcyk7Ci0KLSAgICBtX3BsYXRmb3JtQnVmZmVyID0gbnVsbHB0
cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZTFkY2M2YjE2ZDAyMzRiM2VjNGQxYzMzMDdkYzhkYzVlYWUxYzE0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0K
KysrIC9kZXYvbnVsbApAQCAtMSwyNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgotI2lt
cG9ydCAiR1BVUXVldWUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8
R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQ
VURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBn
cHVDb21tYW5kUXVldWUgPSBkZXZpY2UudHJ5R2V0UXVldWUoKTsKLSAgICBpZiAoIWdwdUNvbW1h
bmRRdWV1ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG10bFF1ZXVlID0g
Z3B1Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29t
bWFuZEJ1ZmZlcj4gYnVmZmVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBidWZmZXIgPSBbbXRsUXVldWUgY29tbWFuZEJ1ZmZlcl07Ci0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFu
ZEJ1ZmZlciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1H
UFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKFJldGFpblB0cjxNVExDb21tYW5kQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICA6IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKLXsKLX0KLQotR1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKQotewot
ICAgIGVuZEJsaXRFbmNvZGluZygpOwotfQotCi1NVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNv
bW1hbmRCdWZmZXI6OmJsaXRFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ibGl0RW5j
b2RlciA/IG1fYmxpdEVuY29kZXIuZ2V0KCkgOiAobV9ibGl0RW5jb2RlciA9IFttX3BsYXRmb3Jt
Q29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29kZXJdKS5nZXQoKTsKLX0KLQotdm9pZCBHUFVD
b21tYW5kQnVmZmVyOjplbmRCbGl0RW5jb2RpbmcoKQotewotICAgIGlmICghbV9ibGl0RW5jb2Rl
cikKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IFttX2JsaXRFbmNvZGVyIGVuZEVuY29kaW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgbV9ibGl0RW5jb2RlciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1
ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1aW50NjRfdCBz
cmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2
NF90IHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyYy0+aXNDb3B5U291
cmNlKCkgfHwgIWRzdC0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0
aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmIChzaXplICUgNCB8fCBzcmNPZmZzZXQgJSA0IHx8IGRzdE9mZnNldCAlIDQpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBD
b3B5IG11c3QgYmUgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQg
c2l6ZSwgb2Zmc2V0LCBhbmQgc2l6ZSArIG9mZnNldCBjYW4gc2FmZWx5IGZpdCBpbiBOU1VJbnRl
Z2VyIHJlZ2FyZGxlc3Mgb2YgcGxhdGZvcm0uCi0gICAgYXV0byBzcmNMZW5ndGggPSBjaGVja2Vk
U3VtPE5TVUludGVnZXI+KHNpemUsIHNyY09mZnNldCk7Ci0gICAgYXV0byBkc3RMZW5ndGggPSBj
aGVja2VkU3VtPE5TVUludGVnZXI+KHNpemUsIGRzdE9mZnNldCk7Ci0gICAgaWYgKHNyY0xlbmd0
aC5oYXNPdmVyZmxvd2VkKCkgfHwgZHN0TGVuZ3RoLmhhc092ZXJmbG93ZWQoKQotICAgICAgICB8
fCBzcmNMZW5ndGggPiBzcmMtPmJ5dGVMZW5ndGgoKSB8fCBkc3RMZW5ndGggPiBkc3QtPmJ5dGVM
ZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1
ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb2Zmc2V0IG9yIGNvcHkgc2l6ZSEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
Ly8gVGhlc2UgY2FzdHMgYXJlIHNhZmUgZHVlIHRvIGVhcmxpZXIgY2hlY2tlZFN1bSgpIGNoZWNr
cy4KLSAgICBbYmxpdEVuY29kZXIoKQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmMtPnBsYXRm
b3JtQnVmZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+
KHNyY09mZnNldCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0LT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAg
ICAgIGRlc3RpbmF0aW9uT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRzdE9mZnNldCkK
LSAgICAgICAgc2l6ZTpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzaXplKV07Ci0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB1c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKLSAg
ICB1c2VCdWZmZXIoV1RGTW92ZShkc3QpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpj
b3B5QnVmZmVyVG9UZXh0dXJlKEdQVUJ1ZmZlckNvcHlWaWV3JiYgc3JjQnVmZmVyLCBHUFVUZXh0
dXJlQ29weVZpZXcmJiBkc3RUZXh0dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAg
ICBpZiAoaXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjQnVmZmVyLmJ1ZmZlci0+aXNDb3B5U291cmNl
KCkgfHwgIWRzdFRleHR1cmUudGV4dHVyZS0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJ
bnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1U
TEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgot
ICAgIE5TVUludGVnZXIgc291cmNlT2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNh
ZmVseShzcmNCdWZmZXIub2Zmc2V0LCBzb3VyY2VPZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IFNvdXJjZSBvZmZz
ZXQgaXMgdG9vIGxhcmdlISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IEFkZCBNZXRhbCB2YWxpZGF0aW9uLgotCi0gICAgLy8gR1BVQnVmZmVyQ29weVZpZXc6Om9m
ZnNldDogVGhlIGxvY2F0aW9uIG11c3QgYmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiB0aGUgZGVz
dGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIGZvcm1hdC4gVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0
aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgot
Ci0gICAgLy8gR1BVQnVmZmVyQ29weVZpZXc6OnJvd1BpdGNoOiBUaGUgdmFsdWUgbXVzdCBiZSBh
IG11bHRpcGxlIG9mIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0
ZXMuIFRoZSB2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAzMiw3NjcgbXVsdGlw
bGllZCBieSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZeKAmXMgcGl4ZWwgc2l6ZS4KLQotICAgIC8v
IEdQVUJ1ZmZlckNvcHlWaWV3OjppbWFnZUhlaWdodDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0
aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgot
Ci0gICAgLy8gR1BVRXh0ZW50M0Q6IFdoZW4geW91IGNvcHkgdG8gYSAxRCB0ZXh0dXJlLCBoZWln
aHQgYW5kIGRlcHRoIG11c3QgYmUgMS4gV2hlbiB5b3UgY29weSB0byBhIDJEIHRleHR1cmUsIGRl
cHRoIG11c3QgYmUgMS4KLQotICAgIC8vIEdQVVRleHR1cmVDb3B5Vmlldzo6dGV4dHVyZTogVGhl
IHZhbHVlIG11c3Qgbm90IGJlIGEgZnJhbWVidWZmZXJPbmx5IHRleHR1cmUgYW5kIG11c3Qgbm90
IGhhdmUgYSBQVlJUQyBwaXhlbCBmb3JtYXQuCi0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIFtibGl0RW5jb2RlcigpCi0gICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyY0J1
ZmZlci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnNvdXJj
ZU9mZnNldAotICAgICAgICBzb3VyY2VCeXRlc1BlclJvdzpzcmNCdWZmZXIucm93UGl0Y2gKLSAg
ICAgICAgc291cmNlQnl0ZXNQZXJJbWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWlnaHQKLSAgICAgICAg
c291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0
aCkKLSAgICAgICAgdG9UZXh0dXJlOmRzdFRleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJl
KCkKLSAgICAgICAgZGVzdGluYXRpb25TbGljZTpkc3RUZXh0dXJlLmFycmF5TGF5ZXIKLSAgICAg
ICAgZGVzdGluYXRpb25MZXZlbDpkc3RUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0
aW9uT3JpZ2luOk1UTE9yaWdpbk1ha2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwgZHN0VGV4dHVyZS5v
cmlnaW4ueSwgZHN0VGV4dHVyZS5vcmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgdXNlQnVmZmVyKFdURk1vdmUoc3JjQnVmZmVyLmJ1ZmZlcikpOwotICAg
IHVzZVRleHR1cmUoV1RGTW92ZShkc3RUZXh0dXJlLnRleHR1cmUpKTsKLX0KLQotdm9pZCBHUFVD
b21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKEdQVVRleHR1cmVDb3B5VmlldyYmIHNy
Y1RleHR1cmUsIEdQVUJ1ZmZlckNvcHlWaWV3JiYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQz
RCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjVGV4dHVyZS50ZXh0
dXJlLT5pc0NvcHlTb3VyY2UoKSB8fCAhZHN0QnVmZmVyLmJ1ZmZlci0+aXNDb3B5RGVzdGluYXRp
b24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1
cmVUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAvLyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21l
IHBsYXRmb3Jtcy4KLSAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKLSAgICBp
ZiAoIVdURjo6Y29udmVydFNhZmVseShkc3RCdWZmZXIub2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNl
dCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJl
VG9CdWZmZXIoKTogRGVzdGluYXRpb24gb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAg
ICAgICAgY29weUZyb21UZXh0dXJlOnNyY1RleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJl
KCkKLSAgICAgICAgc291cmNlU2xpY2U6c3JjVGV4dHVyZS5hcnJheUxheWVyCi0gICAgICAgIHNv
dXJjZUxldmVsOnNyY1RleHR1cmUubWlwTGV2ZWwKLSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9y
aWdpbk1ha2Uoc3JjVGV4dHVyZS5vcmlnaW4ueCwgc3JjVGV4dHVyZS5vcmlnaW4ueSwgc3JjVGV4
dHVyZS5vcmlnaW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRo
LCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0QnVmZmVyLmJ1
ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5h
dGlvbk9mZnNldAotICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5yb3dQ
aXRjaAotICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdlSGVp
Z2h0XTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUo
V1RGTW92ZShzcmNUZXh0dXJlLnRleHR1cmUpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShkc3RC
dWZmZXIuYnVmZmVyKSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVU
b1RleHR1cmUoR1BVVGV4dHVyZUNvcHlWaWV3JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBk
c3QsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygp
IHx8ICFzcmMudGV4dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdC50ZXh0dXJlLT5pc0NvcHlE
ZXN0aW5hdGlvbigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpj
b3B5VGV4dHVyZVRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAg
ICAgY29weUZyb21UZXh0dXJlOnNyYy50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAg
ICBzb3VyY2VTbGljZTpzcmMuYXJyYXlMYXllcgotICAgICAgICBzb3VyY2VMZXZlbDpzcmMubWlw
TGV2ZWwKLSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjLm9yaWdpbi54LCBz
cmMub3JpZ2luLnksIHNyYy5vcmlnaW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFr
ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJl
OmRzdC50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAgICBkZXN0aW5hdGlvblNsaWNl
OmRzdC5hcnJheUxheWVyCi0gICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0Lm1pcExldmVsCi0g
ICAgICAgIGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1ha2UoZHN0Lm9yaWdpbi54LCBkc3Qu
b3JpZ2luLnksIGRzdC5vcmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgdXNlVGV4dHVyZShXVEZNb3ZlKHNyYy50ZXh0dXJlKSk7Ci0gICAgdXNlVGV4dHVy
ZShXVEZNb3ZlKGRzdC50ZXh0dXJlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzYwZTQ1M2U3
ZmMyZjVlNGI5NjI2NWExZWM3M2Y5ZWQ5YTJhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAi
R1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnRyeUNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17
Ci0gICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTogRXhpc3RpbmcgcGFzcyBlbmNv
ZGVyIG11c3QgYmUgZW5kZWQgZmlyc3QhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIGJ1ZmZlci0+ZW5kQmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRM
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBtdGxFbmNvZGVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgbXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1
ZmZlcigpIGNvbXB1dGVDb21tYW5kRW5jb2Rlcl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgaWYgKCFtdGxFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVD
b21wdXRlUGFzc0VuY29kZXI6OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1
dGVDb21tYW5kRW5jb2RlciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShidWZm
ZXIpLCBXVEZNb3ZlKG10bEVuY29kZXIpKSk7Ci19Ci0KLUdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgUmV0
YWluUHRyPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybUNv
bXB1dGVQYXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewotfQotCi12b2lkIEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4m
JiBwaXBlbGluZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQocGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCkpOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIg
c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6cGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5l
KCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG1fcGlwZWxpbmUgPSBX
VEZNb3ZlKHBpcGVsaW5lKTsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3Bs
YXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21w
dXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKCk6IE5vIHZhbGlkIEdQVUNv
bXB1dGVQaXBlbGluZSBmb3VuZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVChtX3BpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byB0aHJlYWRzUGVyVGhyZWFkZ3JvdXAg
PSBNVExTaXplTWFrZShtX3BpcGVsaW5lLT5jb21wdXRlRGltZW5zaW9ucygpLndpZHRoLCBtX3Bp
cGVsaW5lLT5jb21wdXRlRGltZW5zaW9ucygpLmhlaWdodCwgbV9waXBlbGluZS0+Y29tcHV0ZURp
bWVuc2lvbnMoKS5kZXB0aCk7Ci0KLSAgICBhdXRvIHRocmVhZGdyb3Vwc1BlckdyaWQgPSBNVExT
aXplTWFrZSh4LCB5LCB6KTsKLQotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIGRp
c3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZGdyb3Vwc1BlckdyaWQgdGhyZWFkc1BlclRocmVhZGdy
b3VwOnRocmVhZHNQZXJUaHJlYWRncm91cF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi19Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVDb21wdXRlUGFzc0VuY29kZXI6
OnBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtQ29t
cHV0ZVBhc3NFbmNvZGVyLmdldCgpOwotfQotCi0jaWYgVVNFKE1FVEFMKQotCi12b2lkIEdQVUNv
bXB1dGVQYXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNl
LCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5j
b2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9y
bUNvbXB1dGVQYXNzRW5jb2RlciB1c2VSZXNvdXJjZTpyZXNvdXJjZSB1c2FnZTp1c2FnZV07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5j
b2Rlcjo6c2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdl
ciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtQ29tcHV0
ZVBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFtt
X3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNl
dCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLSNl
bmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhOWNhMzc4YTBlYWZkYjNmYTYzNjNlZGExZmEwYzBmZjFmMTkzOTE1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNp
bXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQg
IkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0jaW1wb3J0ICJHUFVQaXBlbGluZU1ldGFsQ29udmVydExh
eW91dC5oIgotI2ltcG9ydCAiV0hMU0xQcmVwYXJlLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9EYXRh
TG9nLmg+Ci0jaW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5oPgotI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9v
bCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhNVExMaWJyYXJ5ICpjb21wdXRlTWV0YWxMaWJyYXJ5LCBN
VExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBTdHJpbmcm
IGNvbXB1dGVFbnRyeVBvaW50TmFtZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFjb21wdXRlTWV0YWxM
aWJyYXJ5KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiTVRM
TGlicmFyeSBmb3IgY29tcHV0ZSBzdGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtjb21wdXRl
TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29tcHV0ZUVudHJ5UG9pbnROYW1lXSk7
Ci0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSBjb21wdXRlIE1UTEZ1bmN0aW9uICci
LCBjb21wdXRlRW50cnlQb2ludE5hbWUsICInISIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldENvbXB1dGVGdW5jdGlvbjpmdW5jdGlvbi5n
ZXQoKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zPiB0
cnlTZXRGdW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiBjb21w
dXRlU3RhZ2UsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBNVExDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgUmV0YWluUHRyPE1UTExpYnJhcnk+IGNvbXB1dGVMaWJyYXJ5OwotICAgIFN0
cmluZyBjb21wdXRlRW50cnlQb2ludDsKLQotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBj
b21wdXRlRGltZW5zaW9ucyB7IDEsIDEsIDEgfTsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0b3Ip
IHsKLSAgICAgICAgQVNTRVJUKGNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwot
Ci0gICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZW50cnlQb2ludE5hbWUgPSBjb21wdXRlU3RhZ2Uu
ZW50cnlQb2ludDsKLQotICAgICAgICBhdXRvIHdobHNsQ29tcGlsZVJlc3VsdCA9IFdITFNMOjpw
cmVwYXJlKCpjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpLCAqd2hsc2xEZXNjcmlw
dG9yKTsKLSAgICAgICAgaWYgKCF3aGxzbENvbXBpbGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExTTCBjb21waWxl
IGVycm9yOiAiLCB3aGxzbENvbXBpbGVSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbXB1dGVEaW1lbnNpb25z
ID0gd2hsc2xDb21waWxlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKLQotICAgICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKLQotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVt
cE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQg
QWRkIGRpcmVjdCBTdHJpbmdCdWlsZGVyIC0+IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQg
ZXh0cmEgY29weSBpbnRvIGEgV1RGOjpTdHJpbmcKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBh
ZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTp3aGxz
bENvbXBpbGVSZXN1bHQtPm1ldGFsU291cmNlLnRvU3RyaW5nKCkgb3B0aW9uczpuaWwgZXJyb3I6
JmVycm9yXSk7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJNZXRhbCBjb21waWxlIHRpbWVzOiAiLCAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBzdGFydFRpbWUpLm1pbGxpc2Vjb25kcygpLCAiIG1zIik7Ci0gICAgICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmICghY29t
cHV0ZUxpYnJhcnkpCi0gICAgICAgICAgICBOU0xvZyhAIiVAIiwgZXJyb3IpOwotI2VuZGlmCi0g
ICAgICAgIEFTU0VSVChjb21wdXRlTGlicmFyeSk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxs
IHZhcmlhYmxlcywgdGhlcmUgc2hvdWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUg
YWJsZSB0byBBU1NFUlQoIWVycm9yKSBoZXJlLgotCi0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50
ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkRW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBjb21wdXRlTGlicmFyeSA9IGNvbXB1dGVTdGFnZS5tb2R1
bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0g
Y29tcHV0ZVN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgfQotCi0gICAgaWYgKHRyeVNldE1ldGFsRnVu
Y3Rpb25zKGNvbXB1dGVMaWJyYXJ5LmdldCgpLCBtdGxEZXNjcmlwdG9yLCBjb21wdXRlRW50cnlQ
b2ludCwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci0K
LSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdHJ1Y3QgQ29udmVydFJlc3VsdCB7Ci0g
ICAgUmV0YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHBpcGVsaW5lRGVzY3Jp
cHRvcjsKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19
OwotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxE
ZXNjcmlwdG9yOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsRGVz
Y3JpcHRvciA9IGFkb3B0TlMoW01UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7
Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRp
bmcgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBjb25zdCBhdXRvJiBjb21wdXRlU3RhZ2UgPSBkZXNjcmlw
dG9yLmNvbXB1dGVTdGFnZTsKLQotICAgIGJvb2wgaXNXaGxzbCA9IGNvbXB1dGVTdGFnZS5tb2R1
bGUtPndobHNsTW9kdWxlKCk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yPiB3aGxzbERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hsc2wpCi0gICAg
ICAgIHdobHNsRGVzY3JpcHRvciA9IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKCk7
Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkK
LSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8g
Y29tcHV0ZURpbWVuc2lvbnMgPSB0cnlTZXRGdW5jdGlvbnMoY29tcHV0ZVN0YWdlLCBkZXZpY2Us
IG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAg
ICAgICByZXR1cm4ge3sgbXRsRGVzY3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19OwotCi0g
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENyZWF0ZVJlc3VsdCB7Ci0gICAg
UmV0YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBwaXBlbGluZVN0YXRlOwotICAgIFdI
TFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci0KLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENyZWF0ZVJlc3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVy
YXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBjb252ZXJ0UmVzdWx0ID0gY29udmVydENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7
Ci0gICAgaWYgKCFjb252ZXJ0UmVzdWx0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIEFTU0VSVChjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwotICAgIGF1dG8g
bXRsRGVzY3JpcHRvciA9IGNvbnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKLQotICAg
IFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmU7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAg
IHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIG9wdGlvbnM6TVRM
UGlwZWxpbmVPcHRpb25Ob25lIHJlZmxlY3Rpb246bmlsIGVycm9yOiZlcnJvcl0pOwotICAgIGlm
ICghcGlwZWxpbmUpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9y
KGVycm9yID8gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyA6ICJVbmFibGUg
dG8gY3JlYXRlIE1UTENvbXB1dGVQaXBlbGluZVN0YXRlISIpOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
IHJldHVybiB7eyBwaXBlbGluZSwgY29udmVydFJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMgfX07
Ci19Ci0KLVJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5
Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0g
ICAgYXV0byBjcmVhdGVSZXN1bHQgPSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShk
ZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIWNyZWF0ZVJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNv
bXB1dGVQaXBlbGluZShXVEZNb3ZlKGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSksIGNyZWF0
ZVJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMsIGRlc2NyaXB0b3IubGF5b3V0KSk7Ci19Ci0KLUdQ
VUNvbXB1dGVQaXBlbGluZTo6R1BVQ29tcHV0ZVBpcGVsaW5lKFJldGFpblB0cjxNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZT4mJiBwaXBlbGluZSwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1
dGVEaW1lbnNpb25zLCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQpCi0g
ICAgOiBHUFVQaXBlbGluZSgpCi0gICAgLCBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKQotICAgICwgbV9jb21wdXRlRGltZW5zaW9ucyhjb21wdXRlRGltZW5zaW9u
cykKLSAgICAsIG1fbGF5b3V0KGxheW91dCkKLXsKLX0KLQotR1BVQ29tcHV0ZVBpcGVsaW5lOjp+
R1BVQ29tcHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIEdQVUNvbXB1dGVQaXBlbGlu
ZTo6cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3ImJiBjb21wdXRlU3RhZ2UpCi17Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKGNv
bXB1dGVTdGFnZSkpOwotICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3Jl
YXRlKFtdIChHUFVFcnJvciYmKSB7IH0pOwotICAgIGlmIChhdXRvIGNyZWF0ZVJlc3VsdCA9IHRy
eUNyZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JT
Y29wZXMpKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBXVEZNb3ZlKGNy
ZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSk7Ci0gICAgICAgIG1fY29tcHV0ZURpbWVuc2lvbnMg
PSBjcmVhdGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOGY2OTVhODczMDJmOTUwMTEyM2U4YjVlM2YyYTlh
YzBlMGM4YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFs
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2ltcG9ydCAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCi0jaW1wb3J0ICJMb2dnaW5n
LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9NZXRh
bFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVEZXZpY2UoaWQgPE1UTERldmlj
ZT4gZGV2aWNlKQotewotICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIEdQVURldmljZTo6cHJld2FybSgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIC8vIENhbGwgTVRMQ29weUFsbERldmljZXMoKSBvbiBhIGJhY2tncm91bmQgdGhyZWFkIHRv
IGF2b2lkIGhhbmdpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoMCwgMCksIF57Ci0gICAgICAgIGF1dG8gZGV2aWNlcyA9IGFk
b3B0TlMoTVRMQ29weUFsbERldmljZXMoKSk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQotUmVmUHRy
PEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxNVExEZXZp
Y2U+IGRldmljZVB0cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMtPnBvd2VyUHJl
ZmVyZW5jZSB8fCBvcHRpb25zLT5wb3dlclByZWZlcmVuY2UgPT0gR1BVUG93ZXJQcmVmZXJlbmNl
OjpMb3dQb3dlcikgewotICAgICAgICBhdXRvIGRldmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxE
ZXZpY2VzKCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2Ug
OiBkZXZpY2VzLmdldCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZURldmljZShk
ZXZpY2UpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGRldmlj
ZS5sb3dQb3dlcikgewotICAgICAgICAgICAgICAgIGRldmljZVB0ciA9IGRldmljZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAg
ICBpZiAoIWRldmljZVB0cikKLSAgICAgICAgZGV2aWNlUHRyID0gYWRvcHROUyhNVExDcmVhdGVT
eXN0ZW1EZWZhdWx0RGV2aWNlKCkpOwotCi0gICAgaWYgKCFpc0FjY2VwdGFibGVEZXZpY2UoZGV2
aWNlUHRyLmdldCgpKSkKLSAgICAgICAgZGV2aWNlUHRyLmNsZWFyKCk7Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIWRldmljZVB0cikgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZp
Y2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIExPRyhXZWJHUFUs
ICJHUFVEZXZpY2U6OkdQVURldmljZSgpOiBNVExEZXZpY2UgaXMgJXAiLCBkZXZpY2VQdHIuZ2V0
KCkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlUHRy
KSkpOwotfQotCi1HUFVEZXZpY2U6OkdQVURldmljZShSZXRhaW5QdHI8TVRMRGV2aWNlPiYmIGRl
dmljZSkKLSAgICA6IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotewotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVs
aW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZTA5ODhjOTMwYTAwYjc0Njc3N2M3YTA2YjdkOWQxZjQx
MzE2NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVNZXRhbENvbnZl
cnRMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGlu
ZUxheW91dC5oIgotI2luY2x1ZGUgIkdQVVNoYWRlclN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFk
ZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0
PFdITFNMOjpTaGFkZXJTdGFnZT4gcmVzdWx0OwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0
YWdlOjpGbGFnczo6VmVydGV4KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFn
ZTo6VmVydGV4KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdt
ZW50KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwot
ICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAg
cmVzdWx0LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0
YWlscz4gY29udmVydEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cExheW91dDo6SW50ZXJuYWxCaW5k
aW5nRGV0YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKQotewotICAgIHJldHVybiBXVEY6OnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZl
ciB1bmlmb3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5n
RGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VW5pZm9ybUJ1ZmZlckJpbmRpbmcg
eyB1bmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hM
U0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRp
b25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsg
V0hMU0w6OlNhbXBsZXJCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlv
dXQ6OlNhbXBsZWRUZXh0dXJlKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5k
aW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VGV4dHVyZUJpbmRpbmcgeyB9
IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdl
QnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4g
ewotICAgICAgICByZXR1cm4geyBXSExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdl
QnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRp
bmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fSksIGludGVybmFsQmluZGluZ0RldGFpbHMpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpM
YXlvdXQ+IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKLXsK
LSAgICBXSExTTDo6TGF5b3V0IHJlc3VsdDsKLSAgICBpZiAobGF5b3V0LmJpbmRHcm91cExheW91
dHMoKS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlv
dXQuYmluZEdyb3VwTGF5b3V0cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8m
IGJpbmRHcm91cExheW91dCA9IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKClbaV07Ci0gICAgICAg
IFdITFNMOjpCaW5kR3JvdXAgYmluZEdyb3VwOwotICAgICAgICBiaW5kR3JvdXAubmFtZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1
ZVBhaXIgOiBiaW5kR3JvdXBMYXlvdXQtPmJpbmRpbmdzTWFwKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGJpbmRpbmdEZXRhaWxzID0ga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICAg
ICAgV0hMU0w6OkJpbmRpbmcgYmluZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcudmlzaWJpbGl0
eSA9IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGlu
Zy52aXNpYmlsaXR5KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVy
dEJpbmRpbmdUeXBlKGJpbmRpbmdEZXRhaWxzLmludGVybmFsQmluZGluZ0RldGFpbHMpKQotICAg
ICAgICAgICAgICAgIGJpbmRpbmcuYmluZGluZyA9ICpiaW5kaW5nVHlwZTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAg
aWYgKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgICAgICBiaW5kaW5nLmV4dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxz
LmV4dGVybmFsQmluZGluZy5iaW5kaW5nOwotICAgICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5h
bWUgPSBiaW5kaW5nRGV0YWlscy5pbnRlcm5hbE5hbWU7Ci0gICAgICAgICAgICBiaW5kR3JvdXAu
YmluZGluZ3MuYXBwZW5kKFdURk1vdmUoYmluZGluZykpOwotICAgICAgICB9Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZShiaW5kR3JvdXApKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5N2RkNTJkZDdlNWRhMmFkMWQ0YTFjZGNmMmJj
MTIxNWU4MzUzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5l
TWV0YWxDb252ZXJ0TGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
V0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBHUFVQaXBlbGluZUxheW91dDsKLQotc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252
ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxh
dGZvcm1UeXBlc01ldGFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGUzOWFiNTQzNTg2ZTE0ZWU4ZmQ1NjA4YzA0ZWQzNmUxNzk4MWQzYzMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotT0JKQ19DTEFTUyBDQU1ldGFsRHJhd2FibGU7Ci1PQkpDX0NMQVNTIFdlYkdQVUxheWVyOwot
Ci1PQkpDX1BST1RPQ09MKE1UTEFyZ3VtZW50RW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJs
aXRDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJ1ZmZlcik7Ci1PQkpDX1BST1RP
Q09MKE1UTENvbW1hbmRCdWZmZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kRW5jb2Rlcik7
Ci1PQkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1
dGVDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRl
KTsKLU9CSkNfUFJPVE9DT0woTVRMRGVwdGhTdGVuY2lsU3RhdGUpOwotT0JKQ19QUk9UT0NPTChN
VExEZXZpY2UpOwotT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKLU9CSkNfUFJPVE9DT0woTVRM
UmVuZGVyQ29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0
YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRMUmVzb3VyY2UpOwotT0JKQ19QUk9UT0NPTChNVExTYW1w
bGVyU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi11c2luZyBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCA9IE5TVUludGVnZXI7Ci0KLS8v
IE1ldGFsIHR5cGVzCi11c2luZyBQbGF0Zm9ybUJ1ZmZlciA9IE1UTEJ1ZmZlcjsKLXVzaW5nIFBs
YXRmb3JtQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1CdWZmZXI+OwotCi11c2lu
ZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZv
cm1Db21tYW5kQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVy
PjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgPSBNVExDb21wdXRlQ29tbWFu
ZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0
YWluUHRyPFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21w
dXRlUGlwZWxpbmUgPSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtQ29t
cHV0ZVBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+
OwotCi11c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2
aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1EZXZpY2U+OwotCi11c2luZyBQbGF0Zm9y
bURyYXdhYmxlID0gQ0FNZXRhbERyYXdhYmxlOwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0
UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtRHJhd2FibGU+OwotCi11c2luZyBQbGF0Zm9ybVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyID0gTVRMQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Qcm9ncmFt
bWFibGVQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVl
dWU7Ci11c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1RdWV1
ZT47Ci0KLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgPSBNVExSZW5kZXJDb21tYW5k
RW5jb2RlcjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFp
blB0cjxQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBp
cGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1SZW5kZXJQaXBlbGluZT47Ci0KLXVz
aW5nIFBsYXRmb3JtU2FtcGxlciA9IE1UTFNhbXBsZXJTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtU2Ft
cGxlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU2FtcGxlcj47Ci0KLXVzaW5nIFBsYXRm
b3JtU2hhZGVyTW9kdWxlID0gTVRMTGlicmFyeTsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxl
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+OwotCi11c2luZyBQbGF0
Zm9ybVN3YXBMYXllciA9IFdlYkdQVUxheWVyOwotdXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFy
dFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVN3YXBMYXllcj47Ci0KLXVzaW5nIFBsYXRmb3JtVGV4
dHVyZSA9IE1UTFRleHR1cmU7Ci11c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFp
blB0cjxQbGF0Zm9ybVRleHR1cmU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2I3OWRiODNiYTFlYjZlMGNiZGNiZTlkMGJhOWM5MDI0
OWQ3OTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5o
IgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9p
ZCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwbGF0
Zm9ybVBhc3NFbmNvZGVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFtwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgZW5kRW5jb2RpbmddOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGludmFsaWRhdGVFbmNvZGVyKCk7
Ci0gICAgbV9jb21tYW5kQnVmZmVyLT5zZXRJc0VuY29kaW5nUGFzcyhmYWxzZSk7Ci19Ci0KLXZv
aWQgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRl
eCwgR1BVQmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNv
ZGVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
OjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBhcmd1bWVudEJ1ZmZlciA9IGJp
bmRHcm91cC5hcmd1bWVudEJ1ZmZlcigpOwotICAgIGlmICghYXJndW1lbnRCdWZmZXIuZmlyc3Qp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4
KQotICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVu
dEJ1ZmZlci5zZWNvbmQudmVydGV4LCBpbmRleCk7Ci0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNl
Y29uZC5mcmFnbWVudCkKLSAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXIoYXJndW1lbnRCdWZmZXIu
Zmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuZnJhZ21lbnQsIGluZGV4KTsKLSAgICBpZiAo
YXJndW1lbnRCdWZmZXIuc2Vjb25kLmNvbXB1dGUpCi0gICAgICAgIHNldENvbXB1dGVCdWZmZXIo
YXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSwgaW5k
ZXgpOwotCi0gICAgZm9yIChhdXRvJiBidWZmZXIgOiBiaW5kR3JvdXAuYm91bmRCdWZmZXJzKCkp
IHsKLSAgICAgICAgdXNlUmVzb3VyY2UoYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpLCBzdGF0aWNf
Y2FzdDxNVExSZXNvdXJjZVVzYWdlPihidWZmZXItPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAg
ICBtX2NvbW1hbmRCdWZmZXItPnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICB9Ci0g
ICAgZm9yIChhdXRvJiB0ZXh0dXJlIDogYmluZEdyb3VwLmJvdW5kVGV4dHVyZXMoKSkgewotICAg
ICAgICB1c2VSZXNvdXJjZSh0ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSwgc3RhdGljX2Nhc3Q8
TVRMUmVzb3VyY2VVc2FnZT4odGV4dHVyZS0+cGxhdGZvcm1Vc2FnZSgpKSk7Ci0gICAgICAgIG1f
Y29tbWFuZEJ1ZmZlci0+dXNlVGV4dHVyZSh0ZXh0dXJlLmNvcHlSZWYoKSk7Ci0gICAgfQotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1
ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVUXVldWVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxYjQyYjU5
NDRmNDZiOWYyN2RhOTBlNjQxNmM2ZGJmMGIwNWExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2lt
cG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVs
dExhYmVsID0gQCJjb20uYXBwbGUuV2ViS2l0IjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNv
bW1hbmRRdWV1ZUxhYmVsUHJlZml4ID0gQCJjb20uYXBwbGUuV2ViS2l0LiI7Ci0KLVJlZlB0cjxH
UFVRdWV1ZT4gR1BVUXVldWU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsK
LSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBx
dWV1ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcXVldWUgPSBh
ZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdDb21tYW5kUXVldWVdKTsKLSAgICBb
cXVldWUgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVF1ZXVlOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kUXVl
dWUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR1BVUXVldWUoV1RGTW92ZShxdWV1ZSksIGRldmljZSkpOwotfQotCi1HUFVRdWV1
ZTo6R1BVUXVldWUoUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0g
ICAgLCBtX2RldmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVl
OjpzdWJtaXQoVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykK
LXsKLSAgICBmb3IgKGF1dG8mIGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVycykgewotICAg
ICAgICAvLyBWYWxpZGF0ZSByZXNvdXJjZSBpbnRlZ3JpdHkuCi0gICAgICAgIGZvciAoYXV0byYg
YnVmZmVyIDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1ZmZlcnMoKSkgewotICAgICAgICAgICAgaWYg
KGJ1ZmZlci0+c3RhdGUoKSAhPSBHUFVCdWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkgewotICAgICAg
ICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQnVm
ZmVyIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoYXV0byYgdGV4dHVyZSA6
IGNvbW1hbmRCdWZmZXItPnVzZWRUZXh0dXJlcygpKSB7Ci0gICAgICAgICAgICBpZiAoIXRleHR1
cmUtPnBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBHUFVUZXh0dXJlIHNldCBvbiBhIEdQVUNvbW1hbmRC
dWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNvbW1hbmRCdWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotICAgICAgICAv
LyBPa2F5IHRvIGNvbW1pdDsgcHJldmVudCBhbnkgYnVmZmVyIG1hcHBpbmcgY2FsbGJhY2tzIGZy
b20gZXhlY3V0aW5nIHVudGlsIGNvbW1hbmQgYnVmZmVyIGlzIGNvbXBsZXRlLgotICAgICAgICBm
b3IgKGF1dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpCi0gICAgICAg
ICAgICBidWZmZXItPmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoY29tbWFuZEJ1ZmZlci0+cGxhdGZv
cm1Db21tYW5kQnVmZmVyKCkpOwotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAgICAgW2NvbW1hbmRCdWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1pdF07
Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICBpZiAobV9w
cmVzZW50VGFzay5pc1BlbmRpbmcoKSB8fCAhbV9kZXZpY2UgfHwgIW1fZGV2aWNlLT5zd2FwQ2hh
aW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgYSBHUFVTd2FwQ2hhaW4gZXhpc3Rz
LCBlbnN1cmUgdGhhdCBhIHByZXNlbnQgaXMgc2NoZWR1bGVkIGFmdGVyIGFsbCBjb21tYW5kIGJ1
ZmZlcnMuCi0gICAgbV9wcmVzZW50VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc3dhcENoYWluID0gbWFrZVJlZigqbV9kZXZpY2UtPnN3YXBD
aGFpbigpKV0gKCkgewotICAgICAgICBhdXRvIGN1cnJlbnREcmF3YWJsZSA9IHN3YXBDaGFpbi0+
dGFrZURyYXdhYmxlKCk7Ci0gICAgICAgIC8vIElmIHRoZSBHUFVTd2FwQ2hhaW4gaGFzIG5vIGRy
YXdhYmxlLCBpdCB3YXMgaW52YWxpZGF0ZWQgYmV0d2VlbiBjb21tYW5kIHN1Ym1pc3Npb24gYW5k
IHRoaXMgdGFzay4KLSAgICAgICAgaWYgKCFjdXJyZW50RHJhd2FibGUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgYXV0byBwcmVzZW50Q29tbWFuZEJ1ZmZlciA9IFttX3BsYXRmb3Jt
UXVldWUgY29tbWFuZEJ1ZmZlcl07Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBwcmVz
ZW50RHJhd2FibGU6c3RhdGljX2Nhc3Q8aWQ8TVRMRHJhd2FibGU+PihjdXJyZW50RHJhd2FibGUu
Z2V0KCkpXTsKLSAgICAgICAgW3ByZXNlbnRDb21tYW5kQnVmZmVyIGNvbW1pdF07Ci0gICAgfSk7
Ci19Ci0KLVN0cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0
Zm9ybVF1ZXVlKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5n
ICpwcmVmaXhlZExhYmVsID0gW21fcGxhdGZvcm1RdWV1ZSBsYWJlbF07Ci0KLSAgICBpZiAoW3By
ZWZpeGVkTGFiZWwgaXNFcXVhbFRvU3RyaW5nOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF0pCi0g
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgQVNTRVJUKHByZWZpeGVkTGFiZWwu
bGVuZ3RoID4gY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoKTsKLSAgICByZXR1cm4gW3By
ZWZpeGVkTGFiZWwgc3Vic3RyaW5nRnJvbUluZGV4OmNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxl
bmd0aF07Ci19Ci0KLXZvaWQgR1BVUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwp
IGNvbnN0Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21fcGxhdGZvcm1R
dWV1ZSBzZXRMYWJlbDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAg
ICAgW21fcGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpbY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggc3Ry
aW5nQnlBcHBlbmRpbmdTdHJpbmc6bGFiZWxdXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBh
c3NFbmNvZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMzU1ZTIz
YTE4MDk3MTA3N2QxZmExYmNkMTU5Y2Q4ZmJiYjk2ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw0MTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
R1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29sb3IuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRC
dWZmZXIuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJH
UFVSZW5kZXJQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xW
ZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTVRMTG9hZEFjdGlvbiBsb2FkQWN0aW9uRm9yR1BVTG9h
ZE9wKEdQVUxvYWRPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVMb2Fk
T3A6OkNsZWFyOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkNsZWFyOwotICAgIGNhc2Ug
R1BVTG9hZE9wOjpMb2FkOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkxvYWQ7Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTdG9yZUFjdGlv
biBzdG9yZUFjdGlvbkZvckdQVVN0b3JlT3AoR1BVU3RvcmVPcCBvcCkKLXsKLSAgICBzd2l0Y2gg
KG9wKSB7Ci0gICAgY2FzZSBHUFVTdG9yZU9wOjpTdG9yZToKLSAgICAgICAgcmV0dXJuIE1UTFN0
b3JlQWN0aW9uU3RvcmU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXN0YXRpYyBib29sIHBvcHVsYXRlTXRsQ29sb3JBdHRhY2htZW50c0FycmF5KE1UTFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgKmFycmF5LCBjb25zdCBWZWN0b3I8R1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3Qg
Y2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNF
RF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGVzY3JpcHRvcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVz
Y3JpcHRvciA9IGRlc2NyaXB0b3JzW2ldOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuYXR0YWNo
bWVudC0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczog
SW52YWxpZCBNVExUZXh0dXJlIGZvciBjb2xvciBhdHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFt
ZSwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29u
c3QgYXV0byYgY29sb3IgPSBkZXNjcmlwdG9yLmNsZWFyQ29sb3I7Ci0KLSAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgYXV0byBtdGxBdHRhY2htZW50ID0gcmV0
YWluUHRyKFthcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6aV0pOwotICAgICAgICBbbXRs
QXR0YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0
dXJlKCldOwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29s
b3JNYWtlKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEpXTsKLSAgICAgICAgW210
bEF0dGFjaG1lbnQgc2V0TG9hZEFjdGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0
b3IubG9hZE9wKV07Ci0gICAgICAgIFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3Jl
QWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlwdG9yLnN0b3JlT3ApXTsKLQotICAgICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBib29sIHBvcHVsYXRlTXRsRGVwdGhTdGVuY2lsQXR0YWNobWVudChNVExSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqbXRsQXR0YWNobWVudCwgY29uc3QgR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBj
aGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VE
X1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmICghZGVzY3JpcHRvci5hdHRh
Y2htZW50LT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgTVRMVGV4dHVyZSBmb3IgZGVwdGggYXR0YWNobWVudCEiLCBmdW5jdGlvbk5hbWUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBbbXRsQXR0YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNo
bWVudC0+cGxhdGZvcm1UZXh0dXJlKCldOwotICAgIFttdGxBdHRhY2htZW50IHNldENsZWFyRGVw
dGg6ZGVzY3JpcHRvci5jbGVhckRlcHRoXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0
aW9uOmxvYWRBY3Rpb25Gb3JHUFVMb2FkT3AoZGVzY3JpcHRvci5kZXB0aExvYWRPcCldOwotICAg
IFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChk
ZXNjcmlwdG9yLmRlcHRoU3RvcmVPcCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHVzZUF0dGFjaG1lbnRzKEdQ
VUNvbW1hbmRCdWZmZXImIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKQotewotICAgIGZvciAoYXV0byYgY29sb3JBdHRhY2htZW50IDogZGVzY3JpcHRvci5jb2xv
ckF0dGFjaG1lbnRzKQotICAgICAgICBidWZmZXIudXNlVGV4dHVyZShXVEZNb3ZlKGNvbG9yQXR0
YWNobWVudC5hdHRhY2htZW50KSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0
YWNobWVudCkKLSAgICAgICAgYnVmZmVyLnVzZVRleHR1cmUoV1RGTW92ZSgoKmRlc2NyaXB0b3Iu
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCkuYXR0YWNobWVudCkpOwotfQotCi1SZWZQdHI8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyLCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0
b3IpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBh
c3NFbmNvZGVyOjp0cnlDcmVhdGUoKSI7Ci0KLSAgICAvLyBPbmx5IG9uZSBjb21tYW5kIGVuY29k
ZXIgbWF5IGJlIGFjdGl2ZSBhdCBhIHRpbWUuCi0gICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bh
c3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBt
dXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBh
ZG9wdE5TKFtNVExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYg
KCFwb3B1bGF0ZU10bENvbG9yQXR0YWNobWVudHNBcnJheShtdGxEZXNjcmlwdG9yLmdldCgpLmNv
bG9yQXR0YWNobWVudHMsIGRlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cywgZnVuY3Rpb25OYW1l
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0
ZW5jaWxBdHRhY2htZW50Ci0gICAgICAgICYmICFwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFj
aG1lbnQobXRsRGVzY3JpcHRvci5nZXQoKS5kZXB0aEF0dGFjaG1lbnQsICpkZXNjcmlwdG9yLmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYnVmZmVyLT5lbmRCbGl0RW5jb2RpbmcoKTsKLQotICAgIFJldGFpblB0cjxN
VExSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFu
ZEJ1ZmZlcigpIHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRv
ci5nZXQoKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10
bEVuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1U
TFJlbmRlckNvbW1hbmRFbmNvZGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIC8vIEFsbCBpcyB3ZWxsOyBlbnN1cmUgR1BVQ29tbWFuZEJ1
ZmZlciBpcyBhd2FyZSBvZiBuZXcgYXR0YWNobWVudHMuCi0gICAgdXNlQXR0YWNobWVudHMoYnVm
ZmVyLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVy
KSkpOwotfQotCi1HUFVSZW5kZXJQYXNzRW5jb2Rlcjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmV0YWluUHRyPE1UTFJlbmRlckNv
bW1hbmRFbmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
cihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNv
ZGVyKFdURk1vdmUoZW5jb2RlcikpCi17Ci19Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5l
PiYmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
KTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IE1ldGFsIHRocm93cyBhbiBlcnJvciBpZiB0aGUg
TVRMUGlwZWxpbmVTdGF0ZSdzIGF0dGFjaG1lbnQgZm9ybWF0cyBkbyBub3QgbWF0Y2ggdGhlIE1U
TENvbW1hbmRFbmNvZGVyJ3MgYXR0YWNobWVudCBmb3JtYXRzLgotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAocGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCkp
Ci0gICAgICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0RGVwdGhTdGVuY2lsU3Rh
dGU6cGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCldOwotCi0gICAgW21fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlciBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybVJl
bmRlclBpcGVsaW5lKCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
bV9waXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAo
IW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoKTogSW52YWxpZCBvcGVyYXRpb246IEVu
Y29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBz
ZXRCbGVuZENvbG9yUmVkOmNvbG9yLnIgZ3JlZW46Y29sb3IuZyBibHVlOmNvbG9yLmIgYWxwaGE6
Y29sb3IuYV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAg
aWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbjog
RW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
IHNldFZpZXdwb3J0OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCB9
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFz
c0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRTY2lzc29yUmVjdCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFNjaXNzb3JSZWN0OiB7IHgs
IHksIHdpZHRoLCBoZWlnaHQgfV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
Ci12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvZmZzZXQgPj0gYnVmZmVyLmJ5dGVMZW5n
dGgoKSB8fCBvZmZzZXQgJSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvZmZzZXQhIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKGJ1ZmZlci5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAv
LyBCdWZmZXIgbXVzdCBiZSBjYWNoZWQgdG8gcHJvdmlkZSBpdCB0byBNZXRhbCB2aWEgZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzLgotICAgIG1faW5kZXhCdWZmZXIgPSBtYWtlUmVmUHRyKGJ1ZmZlcik7
Ci0gICAgbV9pbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKLX0KLQotdm9pZCBHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9y
PFJlZjxHUFVCdWZmZXI+PiYgYnVmZmVycywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0
cykKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoKTogSW52
YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUKGJ1ZmZlcnMuc2l6ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1
ZmZlcnMuc2l6ZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
YXV0byBtdGxCdWZmZXJzID0gYnVmZmVycy5tYXAoW3RoaXNdIChhdXRvJiBidWZmZXIpIHsKLSAg
ICAgICAgY29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICAg
ICAgQVNTRVJUKGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7Ci0gICAgICAgIHJldHVybiBidWZm
ZXItPnBsYXRmb3JtQnVmZmVyKCk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGluZGV4UmFuZ2VzID0g
TlNNYWtlUmFuZ2UoV0hMU0w6Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRl
eCksIGJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIg
c2V0VmVydGV4QnVmZmVyczptdGxCdWZmZXJzLmRhdGEoKSBvZmZzZXRzOihjb25zdCBOU1VJbnRl
Z2VyICopb2Zmc2V0cy5kYXRhKCkgd2l0aFJhbmdlOmluZGV4UmFuZ2VzXTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotc3RhdGljIE1UTFByaW1pdGl2ZVR5cGUgbXRsUHJp
bWl0aXZlVHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KEdQVVByaW1pdGl2ZVRvcG9sb2d5IHR5
cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9n
eTo6UG9pbnRMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVBvaW50OwotICAg
IGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6OkxpbmVMaXN0OgotICAgICAgICByZXR1cm4gTVRM
UHJpbWl0aXZlVHlwZUxpbmU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6TGluZVN0
cmlwOgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZUxpbmVTdHJpcDsKLSAgICBjYXNl
IEdQVVByaW1pdGl2ZVRvcG9sb2d5OjpUcmlhbmdsZUxpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQ
cmltaXRpdmVUeXBlVHJpYW5nbGU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJp
YW5nbGVTdHJpcDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVUcmlhbmdsZVN0cmlw
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRl
clBhc3NFbmNvZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5j
ZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsK
LSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb246IEVu
Y29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9w
aXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRy
YXcoKTogTm8gdmFsaWQgR1BVUmVuZGVyUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0
Zm9ybVJlbmRlclBhc3NFbmNvZGVyIAotICAgICAgICBkcmF3UHJpbWl0aXZlczptdGxQcmltaXRp
dmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xv
Z3koKSkKLSAgICAgICAgdmVydGV4U3RhcnQ6Zmlyc3RWZXJ0ZXgKLSAgICAgICAgdmVydGV4Q291
bnQ6dmVydGV4Q291bnQKLSAgICAgICAgaW5zdGFuY2VDb3VudDppbnN0YW5jZUNvdW50Ci0gICAg
ICAgIGJhc2VJbnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi19Ci0KLXN0YXRpYyBNVExJbmRleFR5cGUgbXRsSW5kZXhUeXBlRm9yR1BVSW5kZXhG
b3JtYXQoR1BVSW5kZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0g
ICAgY2FzZSBHUFVJbmRleEZvcm1hdDo6VWludDE2OgotICAgICAgICByZXR1cm4gTVRMSW5kZXhU
eXBlVUludDE2OwotICAgIGNhc2UgR1BVSW5kZXhGb3JtYXQ6OlVpbnQzMjoKLSAgICAgICAgcmV0
dXJuIE1UTEluZGV4VHlwZVVJbnQzMjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQg
aW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwg
aW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0jaWYgIUxPR19ESVNB
QkxFRAotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6ZHJhd0luZGV4ZWQoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0
aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IE5vIHZhbGlkIEdQVVJlbmRlclBpcGVsaW5lIGZvdW5kISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gR1BVSW5kZXhGb3JtYXQgc3BlY2lmaWVkISIs
IGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2luZGV4
QnVmZmVyIHx8ICFtX2luZGV4QnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICIlczogTm8gdmFsaWQgaW5kZXggYnVmZmVyIHNldCEiLCBmdW5jdGlvbk5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBpbmRleEJ5dGVTaXplID0gKG1f
cGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkgPT0gR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNikgPyBzaXpl
b2YodWludDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90KTsKLQotICAgIC8vIFRoaXMgY2FsY3VsYXRp
b24gY2Fubm90IG92ZXJmbG93IGFzIGZpcnN0SW5kZXggaXMgYm91bmRlZCB0byAzMiBiaXRzLCBh
bmQgaW5kZXhCeXRlU2l6ZSB0byBzaXplb2YodWludDMyX3QpLgotICAgIHVpbnQ2NF90IGZpcnN0
SW5kZXhPZmZzZXQgPSBmaXJzdEluZGV4ICogaW5kZXhCeXRlU2l6ZTsKLQotICAgIC8vIFRoaXMg
Y2FsbCBlbnN1cmVzIHRoYXQgbmVpdGhlciBhcmd1bWVudCBub3IgdGhlaXIgc3VtIHdpbGwgb3Zl
cmZsb3cgTlNVSW50ZWdlci4KLSAgICBhdXRvIHRvdGFsT2Zmc2V0ID0gY2hlY2tlZFN1bTxOU1VJ
bnRlZ2VyPihmaXJzdEluZGV4T2Zmc2V0LCBtX2luZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBpZiAo
dG90YWxPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IHRvdGFsT2Zmc2V0ID49IG1faW5kZXhCdWZm
ZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgZmly
c3RJbmRleCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Y29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZlcihtYWtlUmVmKCptX2luZGV4QnVmZmVyKSk7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyCi0gICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9y
R1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAg
ICAgICAgaW5kZXhDb3VudDppbmRleENvdW50Ci0gICAgICAgIGluZGV4VHlwZTptdGxJbmRleFR5
cGVGb3JHUFVJbmRleEZvcm1hdCgqbV9waXBlbGluZS0+aW5kZXhGb3JtYXQoKSkKLSAgICAgICAg
aW5kZXhCdWZmZXI6bV9pbmRleEJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBpbmRl
eEJ1ZmZlck9mZnNldDp0b3RhbE9mZnNldC52YWx1ZSgpCi0gICAgICAgIGluc3RhbmNlQ291bnQ6
aW5zdGFuY2VDb3VudAotICAgICAgICBiYXNlVmVydGV4OmJhc2VWZXJ0ZXgKLSAgICAgICAgYmFz
ZUluc3RhbmNlOmZpcnN0SW5zdGFuY2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LX0KLQotI2lmIFVTRShNRVRBTCkKLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dXNlUmVz
b3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAg
ICBBU1NFUlQobV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgdXNlUmVz
b3VyY2U6cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0
IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNl
dFZlcnRleEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9m
ZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0
Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zm
c2V0IGF0SW5kZXg6aW5kZXhdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
I2VuZGlmIC8vIFVTRShNRVRBTCkKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZTc3ZTY5NTdiZmI0OTU0NDEyMjUxYTAz
OTg1NjljOTY0M2E4YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRl
clBpcGVsaW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAi
R1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVUxpbWl0cy5oIgotI2ltcG9ydCAiR1BVUGlw
ZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5o
IgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2lt
cG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgot
I2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0j
aW1wb3J0IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMRGVw
dGhTdGVuY2lsU3RhdGU+IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRM
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTERlcHRo
U3RlbmNpbERlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKCJVbmFibGUgdG8gY3JlYXRlIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0
b3IhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbXRsRGVw
dGhDb21wYXJlID0gc3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBh
cmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmRlcHRoQ29tcGFyZSkp
OwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOm10bERlcHRoQ29t
cGFyZV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0RGVwdGhXcml0ZUVuYWJsZWQ6ZGVzY3JpcHRv
ci5kZXB0aFdyaXRlRW5hYmxlZF07Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJhY2svZnJv
bnRGYWNlU3RlbmNpbC4KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gc3Rh
dGU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHN0YXRlID0gYWRv
cHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVz
Y3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRl
UHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVwdGhTdGVuY2lsU3RhdGUhIik7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0ZTsKLX0KLQot
c3RhdGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhG
b3JtYXQgdmVydGV4Rm9ybWF0KQotewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAg
Y2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0NDoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0
ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyQjMyQTMyOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpG
bG9hdDM6Ci0gICAgICAgIHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIz
MjsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQyOgotICAgICAgICByZXR1cm4gV0hM
U0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUKHZlcnRleEZvcm1hdCA9PSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0KTsKLSAgICAgICAgcmV0
dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyOwotICAgIH0KLX0KLQotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V0hMU0w6OlRleHR1cmVGb3JtYXQ+IGNvbnZlcnRUZXh0dXJlRm9ybWF0KEdQ
VVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2Fz
ZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6OlRl
eHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3Jh
OHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07
Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3
aXRoIHRoaXMuCi0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAg
ICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKLSAgICBj
YXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmExNmZsb2F0OgotICAgICAgICByZXR1cm4gV0hMU0w6
OlRleHR1cmVGb3JtYXQ6OlJHQkExNkZsb2F0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1zdGF0aWMgTVRMVmVydGV4Rm9ybWF0IG10bFZl
cnRleEZvcm1hdEZvckdQVVZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0KQotewot
ICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0Ogot
ICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQ7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhG
b3JtYXQ6OkZsb2F0MjoKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0MjsKLSAg
ICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4
Rm9ybWF0RmxvYXQzOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAg
IHJldHVybiBNVExWZXJ0ZXhGb3JtYXRGbG9hdDQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExWZXJ0ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0
aW9uRm9yR1BVSW5wdXRTdGVwTW9kZShHUFVJbnB1dFN0ZXBNb2RlIG1vZGUpCi17Ci0gICAgc3dp
dGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBNb2RlOjpWZXJ0ZXg6Ci0gICAgICAg
IHJldHVybiBNVExWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJWZXJ0ZXg7Ci0gICAgY2FzZSBHUFVJbnB1
dFN0ZXBNb2RlOjpJbnN0YW5jZToKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlv
blBlckluc3RhbmNlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGlzIGludG8gR1BVTGltaXRzIHdoZW4gdGhhdCBpcyBpbXBsZW1lbnRl
ZCBwcm9wZXJseS4KLWNvbnN0ZXhwciB1bnNpZ25lZCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7
Ci0KLXN0YXRpYyBib29sIHRyeVNldFZlcnRleElucHV0KGNvbnN0IEdQVVZlcnRleElucHV0RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNj
cmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3
aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBjb25z
dCBhdXRvJiBidWZmZXJzID0gZGVzY3JpcHRvci52ZXJ0ZXhCdWZmZXJzOwotCi0gICAgaWYgKGJ1
ZmZlcnMuc2l6ZSgpID4gbWF4VmVydGV4QnVmZmVycykgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3Jz
ISIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBtdGxWZXJ0ZXhE
ZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMVmVydGV4RGVzY3JpcHRvciBuZXddKTsKLQotICAgIGF1
dG8gbGF5b3V0QXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlv
dXRzKTsKLSAgICBhdXRvIGF0dHJpYnV0ZUFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2Ny
aXB0b3IuZ2V0KCkuYXR0cmlidXRlcyk7Ci0KLSAgICAvLyBBdHRyaWJ1dGUgc2hhZGVyTG9jYXRp
b25zIG11c3QgYmUgdW5pcXVlbHkgZmxhdC1tYXBwZWQgdG8gWzAsIHttYXggbnVtYmVyIG9mIHZl
cnRleCBhdHRyaWJ1dGVzfV0uCi0gICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXggPSAwOwotICAg
IEhhc2hTZXQ8dW5zaWduZWQsIEludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbG9jYXRpb25zOwotCi0gICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlm
ICghYnVmZmVyc1tpbmRleF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25z
dCBhdXRvJiBhdHRyaWJ1dGVzID0gYnVmZmVyc1tpbmRleF0tPmF0dHJpYnV0ZVNldDsKLQotICAg
ICAgICBpZiAoYXR0cmlidXRlcy5zaXplKCkgKyBhdHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0
dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJv
cigiVG9vIG1hbnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMhIik7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBOU1VJbnRlZ2VyIGlucHV0U3Ry
aWRlID0gMDsKLSAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYnVmZmVyc1tpbmRleF0t
PnN0cmlkZSwgaW5wdXRTdHJpZGUpKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiU3RyaWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9yICIsIGluZGV4LCAiIGlzIHRvbyBsYXJnZSEiKSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlckluZGV4ID0g
V0hMU0w6Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCk7Ci0KLSAgICAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIGF1dG8gbXRsTGF5b3V0RGVz
YyA9IHJldGFpblB0cihbbGF5b3V0QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmNvbnZl
cnRlZEJ1ZmZlckluZGV4XSk7Ci0gICAgICAgIFttdGxMYXlvdXREZXNjIHNldFN0ZXBGdW5jdGlv
bjptdGxTdGVwRnVuY3Rpb25Gb3JHUFVJbnB1dFN0ZXBNb2RlKGJ1ZmZlcnNbaW5kZXhdLT5zdGVw
TW9kZSldOwotICAgICAgICBbbXRsTGF5b3V0RGVzYyBzZXRTdHJpZGU6aW5wdXRTdHJpZGVdOwot
ICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBpZiAoIWxvY2F0aW9u
cy5hZGQoYXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAg
ICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxp
Y2F0ZSBzaGFkZXJMb2NhdGlvbiAiLCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZl
cnRleCBhdHRyaWJ1dGUhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgTlNVSW50ZWdlciBvZmZzZXQgPSAwOwotICAgICAgICAg
ICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYXR0cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewot
ICAgICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3Ry
aW5nKCJCdWZmZXIgb2Zmc2V0IGZvciB2ZXJ0ZXggYXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFk
ZXJMb2NhdGlvbiwgIiBpcyB0b28gbGFyZ2UhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgICAgICAgICBhdXRvIG10bEF0dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0
dHJpYnV0ZUFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDphdHRyaWJ1dGVJbmRleF0pOwot
ICAgICAgICAgICAgW210bEF0dHJpYnV0ZURlc2Mgc2V0Rm9ybWF0Om10bFZlcnRleEZvcm1hdEZv
ckdQVVZlcnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KV07Ci0gICAgICAgICAgICBbbXRsQXR0
cmlidXRlRGVzYyBzZXRPZmZzZXQ6b2Zmc2V0XTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVE
ZXNjIHNldEJ1ZmZlckluZGV4OmNvbnZlcnRlZEJ1ZmZlckluZGV4XTsKLSAgICAgICAgICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICAgICAgaWYgKHdobHNsRGVzY3JpcHRv
cikKLSAgICAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPnZlcnRleEF0dHJpYnV0ZXMuYXBw
ZW5kKHsgY29udmVydFZlcnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KSwgYXR0cmlidXRlLnNo
YWRlckxvY2F0aW9uLCBhdHRyaWJ1dGVJbmRleCB9KTsKLQotICAgICAgICAgICAgKythdHRyaWJ1
dGVJbmRleDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRl
eERlc2NyaXB0b3I6bXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIE1UTENvbG9yV3JpdGVNYXNrIG10bENvbG9yV3JpdGVNYXNrRm9yR1BV
Q29sb3JXcml0ZUZsYWdzKEdQVUNvbG9yV3JpdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxh
Z3MgPT0gc3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFn
czo6QWxsKSkKLSAgICAgICAgcmV0dXJuIE1UTENvbG9yV3JpdGVNYXNrQWxsOwotCi0gICAgYXV0
byBvcHRpb25zID0gT3B0aW9uU2V0PEdQVUNvbG9yV3JpdGU6OkZsYWdzPjo6ZnJvbVJhdyhmbGFn
cyk7Ci0KLSAgICBNVExDb2xvcldyaXRlTWFzayBtYXNrID0gTVRMQ29sb3JXcml0ZU1hc2tOb25l
OwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OlJlZCkKLSAgICAgICAg
bWFzayB8PSBNVExDb2xvcldyaXRlTWFza1JlZDsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9y
V3JpdGU6OkZsYWdzOjpHcmVlbikKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza0dy
ZWVuOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkJsdWUpCi0gICAg
ICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tCbHVlOwotICAgIGlmIChvcHRpb25zICYgR1BV
Q29sb3JXcml0ZTo6RmxhZ3M6OkFscGhhKQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVN
YXNrQWxwaGE7Ci0KLSAgICByZXR1cm4gbWFzazsKLX0KLQotc3RhdGljIE1UTEJsZW5kT3BlcmF0
aW9uIG10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRPcGVyYXRpb24oR1BVQmxlbmRPcGVyYXRp
b24gb3ApCi17Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246
OkFkZDoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kT3BlcmF0aW9uQWRkOwotICAgIGNhc2UgR1BV
QmxlbmRPcGVyYXRpb246OlN1YnRyYWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRp
b25TdWJ0cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpSZXZlcnNlU3VidHJhY3Q6
Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdDsKLSAgICBj
YXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpNaW46Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJh
dGlvbk1pbjsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpNYXg6Ci0gICAgICAgIHJldHVy
biBNVExCbGVuZE9wZXJhdGlvbk1heDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotc3RhdGljIE1UTEJsZW5kRmFjdG9yIG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRG
YWN0b3IoR1BVQmxlbmRGYWN0b3IgZmFjdG9yKQotewotICAgIHN3aXRjaCAoZmFjdG9yKSB7Ci0g
ICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6WmVybzoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yWmVybzsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmU6Ci0gICAgICAgIHJldHVybiBN
VExCbGVuZEZhY3Rvck9uZTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNDb2xvcjoKLSAg
ICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVu
ZEZhY3Rvcjo6T25lTWludXNTcmNDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9y
T25lTWludXNTb3VyY2VDb2xvcjsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYToK
LSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVC
bGVuZEZhY3Rvcjo6T25lTWludXNTcmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yT25lTWludXNTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpEc3RDb2xv
cjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvcjsKLSAgICBj
YXNlIEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c0RzdENvbG9yOgotICAgICAgICByZXR1cm4gTVRM
QmxlbmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZh
Y3Rvcjo6RHN0QWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9u
QWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNEc3RBbHBoYToKLSAgICAg
ICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhOwotICAgIGNh
c2UgR1BVQmxlbmRGYWN0b3I6OlNyY0FscGhhU2F0dXJhdGVkOgotICAgICAgICByZXR1cm4gTVRM
QmxlbmRGYWN0b3JTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpCbGVuZENv
bG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JCbGVuZENvbG9yOwotICAgIGNhc2Ug
R1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzQmxlbmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJs
ZW5kRmFjdG9yT25lTWludXNCbGVuZENvbG9yOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1zdGF0aWMgYm9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8
R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+JiBjb2xvclN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFycmF5LCBzdGQ6Om9wdGlvbmFsPFdITFNM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0g
bnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnRzIHBlciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0
cy4KLSAgICBpZiAoY29sb3JTdGF0ZXMuc2l6ZSgpID4gNCkgewotICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9y
cyEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbG9yU3RhdGVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gY29sb3JTdGF0ZXNbaV07Ci0g
ICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVk
U3Vic2NyaXB0OmldKTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGlj
X2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVG
b3JtYXQoc3RhdGUuZm9ybWF0KSldOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRXcml0ZU1hc2s6
bXRsQ29sb3JXcml0ZU1hc2tGb3JHUFVDb2xvcldyaXRlRmxhZ3Moc3RhdGUud3JpdGVNYXNrKV07
Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldEJsZW5kaW5nRW5hYmxlZDpZRVNdOwotICAgICAgICBb
ZGVzY3JpcHRvciBzZXRBbHBoYUJsZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BV
QmxlbmRPcGVyYXRpb24oc3RhdGUuYWxwaGFCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rl
c2NyaXB0b3Igc2V0UmdiQmxlbmRPcGVyYXRpb246bXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVu
ZE9wZXJhdGlvbihzdGF0ZS5jb2xvckJsZW5kLm9wZXJhdGlvbildOwotICAgICAgICBbZGVzY3Jp
cHRvciBzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVC
bGVuZEZhY3RvcihzdGF0ZS5hbHBoYUJsZW5kLmRzdEZhY3RvcildOwotICAgICAgICBbZGVzY3Jp
cHRvciBzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxl
bmRGYWN0b3Ioc3RhdGUuY29sb3JCbGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0
b3Igc2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFj
dG9yKHN0YXRlLmFscGhhQmxlbmQuc3JjRmFjdG9yKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNl
dFNvdXJjZVJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3Rh
dGUuY29sb3JCbGVuZC5zcmNGYWN0b3IpXTsKLQotICAgICAgICBpZiAod2hsc2xEZXNjcmlwdG9y
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBmb3JtYXQgPSBjb252ZXJ0VGV4dHVyZUZvcm1hdChz
dGF0ZS5mb3JtYXQpKQotICAgICAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+YXR0YWNobWVu
dHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwg
aX0pOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBm
b3IgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IgIiwgaSwgIiEiKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBi
b29sIHRyeVNldE1ldGFsRnVuY3Rpb25zKE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwg
TVRMTGlicmFyeSAqZnJhZ21lbnRNZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwg
Y29uc3QgU3RyaW5nJiBmcmFnbWVudEVudHJ5UG9pbnROYW1lLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMpCi17Ci0gICAgewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgICAgICAvLyBNZXRhbCByZXF1aXJlcyBhIHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRl
ciBwaXBlbGluZXMuCi0gICAgICAgIGlmICghdmVydGV4TWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIHZl
cnRleCBzdGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFt2ZXJ0ZXhNZXRh
bExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2ZXJ0ZXhFbnRyeVBvaW50TmFtZV0pOwotICAg
ICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24g
JyIsIHZlcnRleEVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICBbbXRsRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlv
bjpmdW5jdGlvbi5nZXQoKV07Ci0KLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICAgICAgLy8gSG93ZXZlciwgZnJhZ21lbnQgc2hhZGVycyBhcmUgb3B0aW9uYWwuCi0gICAgICAg
IGlmICghZnJhZ21lbnRNZXRhbExpYnJhcnkgfHwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZS5pc051
bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24g
PSBhZG9wdE5TKFtmcmFnbWVudE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdt
ZW50RW50cnlQb2ludE5hbWVdKTsKLQotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90
IGNyZWF0ZSBmcmFnbWVudCBNVExGdW5jdGlvbiAnIiwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwg
IichIikpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAg
W210bERlc2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9u
cyhjb25zdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mIGZyYWdtZW50
U3RhZ2UsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIG10bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQot
ewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiB2ZXJ0ZXhMaWJyYXJ5LCBmcmFnbWVudExpYnJh
cnk7Ci0gICAgU3RyaW5nIHZlcnRleEVudHJ5UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludDsKLQot
ICAgIGlmICh3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKHZlcnRleFN0YWdlLm1v
ZHVsZS0+d2hsc2xNb2R1bGUoKSk7Ci0gICAgICAgIEFTU0VSVCghZnJhZ21lbnRTdGFnZSB8fCBm
cmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVz
Y3JpcHRvci0+dmVydGV4RW50cnlQb2ludE5hbWUgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50Owot
ICAgICAgICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+
ZnJhZ21lbnRFbnRyeVBvaW50TmFtZSA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0KLSAg
ICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgqdmVydGV4U3Rh
Z2UubW9kdWxlLT53aGxzbE1vZHVsZSgpLCBmcmFnbWVudFN0YWdlID8gZnJhZ21lbnRTdGFnZS0+
bW9kdWxlLT53aGxzbE1vZHVsZSgpIDogbnVsbHB0ciwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAg
ICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwg
d2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotCi0gICAgICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZTsKLSAgICAgICAgaWYgKFdITFNMOjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAg
ICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwMDQ3NCBBZGQgZGlyZWN0IFN0cmluZ0J1aWxkZXIgLT4gTlNT
dHJpbmcgY29udmVyc2lvbiB0byBhdm9pZCBleHRyYSBjb3B5IGludG8gYSBXVEY6OlN0cmluZwot
ICAgICAgICB2ZXJ0ZXhMaWJyYXJ5ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkg
bmV3TGlicmFyeVdpdGhTb3VyY2U6d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0
cmluZygpIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1
bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGls
ZSB0aW1lczogIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29u
ZHMoKSwgIiBtcyIpOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAg
ICAgaWYgKCF2ZXJ0ZXhMaWJyYXJ5ICYmIGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0
cmluZyk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsK
LSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKHZlcnRleExpYnJhcnkpOwotICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTc3MSBPbmNlIHdlIHplcm8tZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJu
aW5ncywgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAg
ICAgICBmcmFnbWVudExpYnJhcnkgPSB2ZXJ0ZXhMaWJyYXJ5OwotICAgICAgICB2ZXJ0ZXhFbnRy
eVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUu
dG9TdHJpbmcoKTsKLSAgICAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICBmcmFn
bWVudEVudHJ5UG9pbnQgPSB3aGxzbENvbXBpbGVSZXN1bHQtPm1hbmdsZWRGcmFnbWVudEVudHJ5
UG9pbnROYW1lLnRvU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmVydGV4TGlicmFy
eSA9IHZlcnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAg
dmVydGV4RW50cnlQb2ludCA9IHZlcnRleFN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgICAgIGlmIChm
cmFnbWVudFN0YWdlKSB7Ci0gICAgICAgICAgICBmcmFnbWVudExpYnJhcnkgPSBmcmFnbWVudFN0
YWdlLT5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgICAgICBmcmFnbWVu
dEVudHJ5UG9pbnQgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50OwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRyeVNldE1ldGFsRnVuY3Rpb25zKHZlcnRleExpYnJhcnkuZ2V0KCks
IGZyYWdtZW50TGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgdmVydGV4RW50cnlQb2ludCwg
ZnJhZ21lbnRFbnRyeVBvaW50LCBlcnJvclNjb3Blcyk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3Qg
R1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBS
ZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRv
cHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3Jp
cHRvciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJt
aW5lIGlmIHNoYWRlciBzb3VyY2UgaXMgaW4gV0hMU0wgb3IgTVNMLgotICAgIGNvbnN0IGF1dG8m
IHZlcnRleFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZTsKLSAgICBjb25zdCBhdXRvJiBm
cmFnbWVudFN0YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlOwotCi0gICAgaWYgKGZyYWdt
ZW50U3RhZ2UgJiYgc3RhdGljX2Nhc3Q8Ym9vbD4odmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1v
ZHVsZSgpKSAhPSBzdGF0aWNfY2FzdDxib29sPihmcmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNs
TW9kdWxlKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBib29sIGlzV2hsc2wgPSB2
ZXJ0ZXhTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7Ci0KLSAgICAvLyBTZXQgZGF0YSBmb3Ig
dGhlIE1ldGFsIHBpcGVsaW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgot
ICAgIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xE
ZXNjcmlwdG9yOwotICAgIGlmIChpc1dobHNsKQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBX
SExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoIXRyeVNldFZlcnRl
eElucHV0KGRlc2NyaXB0b3IudmVydGV4SW5wdXQsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNs
RGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGlmICghdHJ5U2V0Q29sb3JTdGF0ZXMoZGVzY3JpcHRvci5jb2xvclN0YXRlcywgbXRsRGVzY3Jp
cHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVz
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQg
JiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRM
YXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+
bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlw
ZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmICghdHJ5U2V0RnVuY3Rpb25zKHZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JT
Y29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtdGxEZXNjcmlw
dG9yOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNy
ZWF0ZU10bFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMm
IGVycm9yU2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAg
ICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmlj
ZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBtdGxEZXNj
cmlwdG9yID0gY29udmVydFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZp
Y2UsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIW10bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHBpcGVs
aW5lOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmlj
ZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdl
dCgpIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4
U3RyaW5nKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBw
aXBlbGluZTsKLX0KLQotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGlu
ZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykK
LXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxT
dGF0ZT4gZGVwdGhTdGVuY2lsOwotCi0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3Rh
dGUgJiYgIShkZXB0aFN0ZW5jaWwgPSB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSgqZGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0ZSwgZGV2aWNlLCBlcnJvclNjb3BlcykpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4Mzg3IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9y
IGlzbid0IGltcGxlbWVudGVkIHlldCBmb3IgV0hMU0wgY29tcGlsZXIuCi0KLSAgICBhdXRvIHBp
cGVsaW5lID0gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0
b3IsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIXBpcGVsaW5lKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92
ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVU
b3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5s
YXlvdXQsIGRlc2NyaXB0b3IpKTsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBp
cGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJl
dGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVU
b3BvbG9neSB0b3BvbG9neSwgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gZm9ybWF0LCBj
b25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQsIGNvbnN0IEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvckJhc2UmIHJlbmRlckRlc2NyaXB0b3JCYXNlKQotICAgIDogR1BVUGlw
ZWxpbmUoKQotICAgICwgbV9kZXB0aFN0ZW5jaWxTdGF0ZShXVEZNb3ZlKGRlcHRoU3RlbmNpbCkp
Ci0gICAgLCBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAg
LCBtX3ByaW1pdGl2ZVRvcG9sb2d5KHRvcG9sb2d5KQotICAgICwgbV9pbmRleEZvcm1hdChmb3Jt
YXQpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi0gICAgLCBtX3JlbmRlckRlc2NyaXB0b3JCYXNl
KHJlbmRlckRlc2NyaXB0b3JCYXNlKQotewotfQotCi1HUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJl
bmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNv
bXBpbGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvciYmIHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKQotewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciBkZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKHZlcnRl
eFN0YWdlKSwgV1RGTW92ZShmcmFnbWVudFN0YWdlKSwgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZSk7
Ci0gICAgYXV0byBlcnJvclNjb3BlcyA9IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoW10gKEdQVUVy
cm9yJiYpIHsgfSk7Ci0gICAgaWYgKGF1dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQ
aXBlbGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAg
IG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJN
ZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmOTczNTQ1YmRkNzhjNjhj
ZjI4MzA4ZGJjNjAyZDAxNzZlMGRhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVU2FtcGxlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5n
LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTVRMU2FtcGxlckFkZHJl
c3NNb2RlIG10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoR1BVQWRkcmVzc01vZGUgbW9kZSkK
LXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRv
RWRnZToKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOwot
ICAgIGNhc2UgR1BVQWRkcmVzc01vZGU6OlJlcGVhdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBs
ZXJBZGRyZXNzTW9kZVJlcGVhdDsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpNaXJyb3JSZXBl
YXQ6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVy
TWluTWFnRmlsdGVyIG10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUoR1BVRmlsdGVyTW9kZSBt
b2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TmVh
cmVzdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OwotICAg
IGNhc2UgR1BVRmlsdGVyTW9kZTo6TGluZWFyOgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1p
bk1hZ0ZpbHRlckxpbmVhcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIE1UTFNhbXBsZXJNaXBGaWx0ZXIgbXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShH
UFVGaWx0ZXJNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVG
aWx0ZXJNb2RlOjpOZWFyZXN0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlck5l
YXJlc3Q7Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBN
VExTYW1wbGVyTWlwRmlsdGVyTGluZWFyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gdHJ5Q3JlYXRlTXRs
U2FtcGxlclN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgp
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogSW52YWxp
ZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJl
dGFpblB0cjxNVExTYW1wbGVyRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExT
YW1wbGVyRGVzY3JpcHRvciBuZXddKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBs
ZXI6OnRyeUNyZWF0ZSgpOiBFcnJvciBjcmVhdGluZyBNVExTYW1wbGVyRGVzY3JpcHRvciEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFNhbXBs
ZXJTdGF0ZT4gc2FtcGxlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IFttdGxEZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NN
b2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVVKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U0Fk
ZHJlc3NNb2RlOm10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNz
TW9kZVYpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6bXRsQWRkcmVzc01v
ZGVGb3JBZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVyldOwotICAgIFttdGxEZXNj
cmlwdG9yIHNldE1pbkZpbHRlcjptdGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0
b3IubWluRmlsdGVyKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWFnRmlsdGVyOm10bE1pbk1h
Z0ZpbHRlckZvckZpbHRlck1vZGUoZGVzY3JpcHRvci5tYWdGaWx0ZXIpXTsKLSAgICBbbXRsRGVz
Y3JpcHRvciBzZXRNaXBGaWx0ZXI6bXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9y
Lm1pcG1hcEZpbHRlcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1pbkNsYW1wOmRlc2Ny
aXB0b3IubG9kTWluQ2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1heENsYW1wOmRl
c2NyaXB0b3IubG9kTWF4Q2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1heEFuaXNvdHJv
cHk6ZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21w
YXJlRnVuY3Rpb246c3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBh
cmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlv
bikpXTsKLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6WUVT
XTsKLQotICAgIHNhbXBsZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdT
YW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFzYW1wbGVyKQotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBs
ZXJTdGF0ZSEiKTsKLQotICAgIHJldHVybiBzYW1wbGVyOwotfQotCi1SZWZQdHI8R1BVU2FtcGxl
cj4gR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBH
UFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSB0
cnlDcmVhdGVNdGxTYW1wbGVyU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yKTsKLSAgICBpZiAoIXNh
bXBsZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHUFVTYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpKTsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2Ft
cGxlcihSZXRhaW5QdHI8TVRMU2FtcGxlclN0YXRlPiYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRm
b3JtU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVs
ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY0NGMzNWIwYjAwOWQx
ZDlmNjEwOTFhM2ZmYmY3ZmQ2M2I5MGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVs
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1w
b3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmlj
ZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChHUFVE
ZXZpY2U6OnVzZVdITFNMKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1v
ZHVsZShXSExTTDo6Y3JlYXRlU2hhZGVyTW9kdWxlKGRlc2NyaXB0b3IuY29kZSkpKTsKLQotICAg
IFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgbW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAg
ICBtb2R1bGUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0
aFNvdXJjZTpkZXNjcmlwdG9yLmNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAg
aWYgKCFtb2R1bGUpCi0gICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJy
b3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIG1vZHVsZSA/IGFkb3B0
UmVmKG5ldyBHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSkgOiBudWxscHRyOwotfQot
Ci1HUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNt
YXJ0UHRyJiYgbW9kdWxlKQotICAgIDogbV9wbGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1v
ZHVsZSkpCi17Ci19Ci0KLUdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJl
ZjxXSExTTDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxlKQotICAgIDogbV93aGxzbE1vZHVs
ZSh3aGxzbE1vZHVsZS5tb3ZlVG9VbmlxdWVQdHIoKSkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzZjYzg5MzUzMjBhMDQ5MmQyZmNkNTM0OTNhNjJhMDJjNDAxOWZj
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0K
KysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aCIKLSNpbXBvcnQgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0j
aW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3Jt
YXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgYXV0byBtdGxGb3JtYXQgPSBzdGF0
aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVy
ZUZvcm1hdChmb3JtYXQpKTsKLQotICAgIHN3aXRjaCAobXRsRm9ybWF0KSB7Ci0gICAgY2FzZSBN
VExQaXhlbEZvcm1hdEJHUkE4VW5vcm06Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5v
cm1fc1JHQjoKLSAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ6Ci0gICAgICAgIHJl
dHVybiBtdGxGb3JtYXQ7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
U3dhcENoYWluOjp0cnlDcmVhdGUoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgc2V0TGF5ZXJTaGFwZShXZWJHUFVMYXllciAqbGF5ZXIsIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKLXsKLSAgICBbbGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdo
dCldOwotICAgIFtsYXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0
KV07Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8V2ViR1BVTGF5ZXI+IHRyeUNyZWF0ZVdlYkdQVUxh
eWVyKE1UTERldmljZSAqZGV2aWNlLCBNVExQaXhlbEZvcm1hdCBmb3JtYXQsIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLXsKLQotICAgIFJldGFpblB0cjxXZWJHUFVM
YXllcj4gbGF5ZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXll
ciA9IGFkb3B0TlMoW1dlYkdQVUxheWVyIG5ld10pOwotCi0gICAgW2xheWVyIHNldE5hbWU6QCJX
ZWIgR1BVIExheWVyIl07Ci0gICAgW2xheWVyIHNldE9wYXF1ZTowXTsKLQotICAgIFtsYXllciBz
ZXREZXZpY2U6ZGV2aWNlXTsKLSAgICBbbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5Oih1c2FnZSA9
PSBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KV07Ci0gICAgW2xheWVy
IHNldFBpeGVsRm9ybWF0OmZvcm1hdF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5
Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOwotCi0gICAgcmV0dXJu
IGxheWVyOwotfQotCi1SZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0
ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCi17Ci0gICAgaWYgKCFkZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2Uo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IGF1dG8gcGl4ZWxGb3JtYXQgPSB0cnlHZXRTdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXNjcmlwdG9y
LmZvcm1hdCk7Ci0gICAgaWYgKCFwaXhlbEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBhdXRvIHVzYWdlT3B0aW9ucyA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZs
YWdzPjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXVzYWdlT3B0aW9ucy5j
b250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogU3dhcCBjaGFpbiB1
c2FnZSBtdXN0IGluY2x1ZGUgT1VUUFVUX0FUVEFDSE1FTlQhIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbGF5ZXIgPSB0cnlDcmVhdGVXZWJHUFVMYXllcihk
ZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSwgKnBpeGVsRm9ybWF0LCB1c2FnZU9w
dGlvbnMpOwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
c2V0TGF5ZXJTaGFwZShsYXllci5nZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhdXRvIHN3
YXBDaGFpbiA9IGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShsYXllciksIHVzYWdl
T3B0aW9ucykpOwotICAgIGRlc2NyaXB0b3IuZGV2aWNlLT5zZXRTd2FwQ2hhaW4oc3dhcENoYWlu
LmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHN3YXBDaGFpbjsKLX0KLQotR1BVU3dhcENoYWluOjpH
UFVTd2FwQ2hhaW4oUmV0YWluUHRyPFdlYkdQVUxheWVyPiYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlv
blNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRm
b3JtU3dhcExheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdl
T3B0aW9ucykKLXsKLSAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRTd2FwQ2hhaW46dGhpc107
Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0
dXJlKCkKLXsKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0g
ICAgICAgIG1fY3VycmVudERyYXdhYmxlID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVy
IG5leHREcmF3YWJsZV0pOwotICAgIG10bFRleHR1cmUgPSBbbV9jdXJyZW50RHJhd2FibGUgdGV4
dHVyZV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRl
eHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRl
eHR1cmUoKTogVW5hYmxlIHRvIGdldCBjdXJyZW50IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RG
TW92ZShtdGxUZXh0dXJlKSwgbV91c2FnZSk7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVz
ZW50KCkKLXsKLSAgICBpZiAoIW1fY3VycmVudERyYXdhYmxlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBbbV9jdXJyZW50RHJhd2FibGUgcHJlc2VudF07Ci0gICAgbV9jdXJyZW50RHJhd2FibGUg
PSBudWxscHRyOwotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCi17Ci0gICAgc2V0TGF5ZXJTaGFwZShtX3BsYXRmb3JtU3dhcExheWVyLmdldCgp
LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotUGxhdGZvcm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQo
KTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLVJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IEdQVVN3
YXBDaGFpbjo6dGFrZURyYXdhYmxlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxl
PiBwdHI7Ci0gICAgcHRyLnN3YXAobV9jdXJyZW50RHJhd2FibGUpOwotICAgIHJldHVybiBwdHI7
Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkODIwMGViYjA1OTM0NTNjZGM4NWE2YzcwMjljNTMxYWE2YzBiZTRkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KKysrIC9kZXYvbnVs
bApAQCAtMSwyMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BV
RGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BV
VXRpbHMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBNVExUZXh0dXJlVHlwZSBtdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNj
cmlwdG9yKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHN3
aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNp
b246Ol8xZDoKLSAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID09IDEpID8g
TVRMVGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKLSAgICBjYXNlIEdQVVRl
eHR1cmVEaW1lbnNpb246Ol8yZDogewotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRo
ID09IDEpCi0gICAgICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkg
PyBNVExUZXh0dXJlVHlwZTJEIDogTVRMVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlOwotICAgICAg
ICByZXR1cm4gTVRMVGV4dHVyZVR5cGUyREFycmF5OyAvLyBNVExUZXh0dXJlVHlwZTJETXVsdGlz
YW1wbGVBcnJheSBpcyB1bmF2YWlsYWJsZSBvbiBpT1MuCi0gICAgfQotICAgIGNhc2UgR1BVVGV4
dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVy
ZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M+IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9H
X0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAg
IGlmIChmbGFncy5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3Vy
Y2UsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4
dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBU
ZXh0dXJlIGNhbm5vdCBoYXZlIGJvdGggU1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICBNVExUZXh0dXJlVXNhZ2UgcmVzdWx0ID0gMDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BV
VGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkpCi0gICAgICAgIHJlc3VsdCB8
PSBNVExUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55
KHsgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFn
czo6U2FtcGxlZCB9KSkKLSAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJl
YWQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3Jh
Z2UpKQotICAgICAgICByZXN1bHQgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGU7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykKLXN0YXRpYyBNVExTdG9y
YWdlTW9kZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxG
b3JtYXQgZm9ybWF0LCB1bnNpZ25lZCBzYW1wbGVzKQotewotICAgIC8vIERlcHRoLCBTdGVuY2ls
LCBEZXB0aFN0ZW5jaWwsIGFuZCBNdWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRl
ZCB3aXRoIHRoZSBNVExTdG9yYWdlTW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgotICAgIGlm
IChmb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxl
cyA+IDEpCi0gICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0KLSAgICByZXR1
cm4gTVRMU3RvcmFnZU1vZGVTaGFyZWQ7Ci19Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxN
VExUZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3Qg
Y2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAg
IFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMo
W01UTFRleHR1cmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogVW5hYmxlIHRvIGNyZWF0ZSBuZXcgTVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25O
YW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2lk
dGggPSBkZXNjcmlwdG9yLnNpemUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAg
ICB1bnNpZ25lZCBkZXB0aCA9IDE7Ci0gICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSAxOwotICAg
IHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1l
bnNpb246Ol8xZDoKLSAgICAgICAgYXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAg
ICAgICAgaGVpZ2h0ID0gZGVzY3JpcHRvci5zaXplLmhlaWdodDsKLSAgICAgICAgYXJyYXlMZW5n
dGggPSBkZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BV
VGV4dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUu
aGVpZ2h0OwotICAgICAgICBkZXB0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBp
eGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2Ny
aXB0b3IuZm9ybWF0KSk7Ci0KLSAgICBhdXRvIG10bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9y
R1BVVGV4dHVyZVVzYWdlRmxhZ3ModXNhZ2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgaWYgKCFtdGxV
c2FnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
YXV0byBzdG9yYWdlTW9kZSA9IE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZTsKLSNlbHNlCi0gICAgYXV0
byBzdG9yYWdlTW9kZSA9IHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChw
aXhlbEZvcm1hdCwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCk7Ci0jZW5kaWYKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0V2lkdGg6d2lk
dGhdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldEhlaWdodDpoZWlnaHRdOwotICAgIFttdGxEZXNj
cmlwdG9yIHNldERlcHRoOmRlcHRoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRBcnJheUxlbmd0
aDphcnJheUxlbmd0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWlwbWFwTGV2ZWxDb3VudDpk
ZXNjcmlwdG9yLm1pcExldmVsQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFNhbXBsZUNv
dW50OmRlc2NyaXB0b3Iuc2FtcGxlQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFRleHR1
cmVUeXBlOm10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcild
OwotICAgIFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnBpeGVsRm9ybWF0XTsKLSAgICBb
bXRsRGVzY3JpcHRvciBzZXRVc2FnZToqbXRsVXNhZ2VdOwotCi0gICAgW210bERlc2NyaXB0b3Ig
c2V0U3RvcmFnZU1vZGU6c3RvcmFnZU1vZGVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgcmV0dXJuIG10bERlc2NyaXB0b3I7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJl
PiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6
OnRyeUNyZWF0ZSgpIjsKLQotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIVtkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKSBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBs
ZUNvdW50XSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFr
ZVN0cmluZygiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgIiwgZGVzY3JpcHRvci5zYW1wbGVDb3Vu
dCwgIiBzYW1wbGUgY291bnQuIikpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAg
IGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz46OmZyb21SYXco
ZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRs
VGV4dHVyZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBkZXNjcmlwdG9yLCB1c2FnZSk7Ci0gICAg
aWYgKCFtdGxEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFp
blB0cjxNVExUZXh0dXJlPiBtdGxUZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNl
KCkgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsVGV4dHVyZSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RGTW92ZShtdGxUZXh0dXJlKSwgdXNhZ2UpKTsKLX0K
LQotUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShSZXRhaW5QdHI8TVRMVGV4dHVy
ZT4mJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1
c2FnZSkpOwotfQotCi1HUFVUZXh0dXJlOjpHUFVUZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJl
PiYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAg
ICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVz
YWdlKQotewotICAgIG1fcGxhdGZvcm1Vc2FnZSA9IE1UTFJlc291cmNlVXNhZ2VSZWFkOwotICAg
IGlmIChpc1NhbXBsZWQoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNl
VXNhZ2VTYW1wbGU7Ci0gICAgZWxzZSBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZv
cm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJl
PiBHUFVUZXh0dXJlOjp0cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQotewotICAgIFJldGFp
blB0cjxNVExUZXh0dXJlPiB0ZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICB0ZXh0dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRd
KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghdGV4dHVyZSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1v
dmUodGV4dHVyZSksIG1fdXNhZ2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODMwODlmNGE0YzZiMjgzNGE5YWU2ZmFkNDA3NTcxNmFlNWRjNzA5
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsYXRmb3JtVGV4dHVy
ZUZvcm1hdCBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVU
ZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRS
R0JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1aW50OgotICAgICAg
ICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9y
bWF0OjpCZ3JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3Jt
OwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAg
ICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICBjYXNl
IEdQVVRleHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4gTVRMUGl4
ZWxGb3JtYXRCR1JBOFVub3JtX3NSR0I7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2Jh
MTZmbG9hdDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ7Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVBsYXRmb3JtQ29tcGFyZUZ1bmN0
aW9uIHBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBh
cmVGdW5jdGlvbiBmdW5jKQotewotICAgIHN3aXRjaCAoZnVuYykgewotICAgIGNhc2UgR1BVQ29t
cGFyZUZ1bmN0aW9uOjpOZXZlcjoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbk5l
dmVyOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOgotICAgICAgICByZXR1cm4g
TVRMQ29tcGFyZUZ1bmN0aW9uTGVzczsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1
YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25FcXVhbDsKLSAgICBjYXNlIEdQ
VUNvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1
bmN0aW9uTGVzc0VxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOgot
ICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlcjsKLSAgICBjYXNlIEdQVUNv
bXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rp
b25Ob3RFcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOgot
ICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFsOwotICAgIGNhc2Ug
R1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXM6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVu
Y3Rpb25BbHdheXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQppbmRleCAzNjE2MDJlNTdiMjRm
YjE2Y2JlMmE3YTk5ZjZlNWM4MGEzMzlmYWI3Li5jZThjN2Q0ODE3OTBhOGE2NWRlYjFmYWJiNWIw
MTE1YTM2MzdjODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJh
Z0ltYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJ
T1MubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJHZW9t
ZXRyeVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW1wb3J0ICJQYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJl
ck1hYy5tbQppbmRleCAxMjkzZGE1NTlmOTI5YTdhZWVjNTRkMDdhYTlhZTRmOTk0Zjk1YjQ0Li5m
MDJjZThmZGYwZjBjNThmNDA3MGQ0YjRiNzgxZWRiNWYxZWMyMWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDZkMWJlNjEz
YTEyOTRiNWFmMjkxOGQ2MTY5MGZjYzdmZTIxZGI0MjIuLmNlNzY5Zjg1ZDYxYTk0YTQ4YTJkNzI4
ZDcxMDA5ZmMxOGZlOTA2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRp
bmdBbmNlcwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3RzKCk7CiAgICAgfQogI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NB
TlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAg
IGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0
ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52
YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKQEAgLTI4ODUsNyArMjg4NSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VUeXBl
KQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBNYXNrSW1hZ2VDaGFuZ2VkKSAmJiBtX21hc2tMYXll
cikKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlv
blVwZGF0ZSgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTKQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBDYW52YXNDaGFuZ2VkIHx8IGNoYW5n
ZVR5cGUgPT0gQ2FudmFzUGl4ZWxzQ2hhbmdlZCkgJiYgcmVuZGVyZXIoKS5pc0NhbnZhcygpICYm
IGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNv
bnRlbnRzKSB7CiAgICAgICAgIGlmIChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQpCiAgICAg
ICAgICAgICBjb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBs
aXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdApp
bmRleCBmMWI0YWFhZWUwYjE3MTQ3ZDM2NWZjMWUyYmY3NzYzMDk4YjI3YTNhLi40ODE2Mzc2NTMx
OTkyM2VlOWVlMzc5YjRmOWRiYmY3ZWExYjNmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3QKQEAgLTIsMTAwICsyLDk1IEBACiA8
IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRw
Oi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJz
aW9uPSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Ny
b2xsaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3Jl
bmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRp
Y3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRy
dWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nf
ZG9tX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19t
ZWRpYTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+
Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUv
PgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2Vi
Z2w8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAg
IDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2Uv
PgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAg
ICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAg
ICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2Vi
R1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV93ZWJhdWRp
bzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAg
PHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxp
bmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJPGRpY3Q+CisJ
CTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5Pgor
CQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGlj
dD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5Pmdw
dV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNv
bXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVf
cHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZh
bHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KKwk8ZGljdD4K
KwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5
PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwv
ZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PmluY3Jl
bWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUv
PgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5
X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4K
Kwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtl
eT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRy
dWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9mdWxsX21hbmFn
ZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVl
Lz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZs
YWdzL1dlYktpdC1pb3MucGxpc3QKaW5kZXggNTBkMDNjZmJkNzQxNzU4ZGE5M2RmMjZlZjg4ODMy
OGY3NDRkZTM2Zi4uNzlhNGUzYzk4NDJiMjFkODQzNWZjMTkxZDE4NjMyMDVhN2FkMjEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CkBAIC0yLDEwMCAr
Miw5NSBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAv
L0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8
cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVfYW5kX292
ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8
L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNz
X2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0g
ICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAg
ICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5Pmdw
dV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1
X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAg
ICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAg
ICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9w
cm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dl
YnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+
Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUv
PgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJp
dmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV93ZWJhdWRpbzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dL
X2pldHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxv
d19zY3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVl
Lz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRl
czwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+
CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJ
PGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1
dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVl
Lz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxr
ZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJ
PGtleT52cDlfZGVjb2Rlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KKwk8a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5h
YmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRl
cjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGlj
dD4KKwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV93ZWJhdWRpbzwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1
bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QKaW5kZXggNTBkMDNjZmJkNzQxNzU4ZGE5
M2RmMjZlZjg4ODMyOGY3NDRkZTM2Zi4uNzlhNGUzYzk4NDJiMjFkODQzNWZjMTkxZDE4NjMyMDVh
N2FkMjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1h
Y29zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5w
bGlzdApAQCAtMiwxMDAgKzIsOTUgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxl
Ly9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlM
aXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFz
eW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0
cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmli
dXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVt
ZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25f
YmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5S
Ql9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19m
cmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3Jl
bmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgor
CQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwv
a2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
ZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZh
bHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4K
KwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2Rp
Y3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nl
c3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dz
ZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2Uv
PgorCTwvZGljdD4KKwk8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5
PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVy
X29uX2JhdHRlcnk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxz
ZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53
ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8
a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVk
aW88L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdAppbmRl
eCBmMWI0YWFhZWUwYjE3MTQ3ZDM2NWZjMWUyYmY3NzYzMDk4YjI3YTNhLi40ODE2Mzc2NTMxOTky
M2VlOWVlMzc5YjRmOWRiYmY3ZWExYjNmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Zl
YXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1
cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdApAQCAtMiwxMDAgKzIsOTUgQEAKIDwhRE9DVFlQ
RSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu
YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEu
MCI+CiA8ZGljdD4KLSAgICA8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5n
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAg
ICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0g
ICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVu
ZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAg
ICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9r
ZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1
ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAg
ICAgICAgIDxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAg
ICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
ICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGlj
dD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxz
ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV9wYXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+
Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5
PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0
PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwv
ZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nl
c3NfbWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4K
KwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8
L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNz
X3dlYmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgor
CTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5
PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxk
aWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0Pgor
CTwvZGljdD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+aW5jcmVtZW50YWxf
cGRmPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9k
aWN0PgorCTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgorCTxkaWN0PgorCQk8
a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT52cDlfZGVjb2Rl
cjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGlj
dD4KKwk8a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1f
cGFyc2VyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJ
PC9kaWN0PgorCTxrZXk+d2VibV93ZWJhdWRpbzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJs
ZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pl
dHNhbTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwv
ZGljdD4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAppbmRleCA5NzJiZjFiZjc0MjM0MGRlMTE4
OTA3NDc4MTM2ODhjMTVkYzRjNzJiLi43MTE4Yjc5NTM2MjY3MDA5MzVjNmYxZmRiYTdiZTc1MjE2
NzAxNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5jcHAKQEAgLTIzMiwxOSArMjMyLDYgQEAgYm9vbCBkZWZhdWx0V2ViUlRD
Q29kZWNzSW5HUFVQcm9jZXNzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotYm9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi17Ci0jaWYgSEFW
RShTWVNURU1fRkVBVFVSRV9GTEFHUykKLSAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWQo
IldlYkdQVSIpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQotCiBib29sIGRlZmF1bHRJbkFwcEJyb3dzZXJQcml2YWN5KCkKIHsKICNp
ZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAppbmRleCA4YjM1M2MwZjBlOTU1ZWU5MDJj
OTE0ZWU2ZGY5ZjAxZTY2YmM1YzE2Li5lNmZmMTgzNjBiMmJkYjA4ZWNmMTZmYThmYmRlOTQwOTg5
NmM1NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaApAQCAtODUsMTAgKzg1LDYgQEAgYm9vbCBkZWZhdWx0Q2FwdHVyZVZpZGVv
SW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0V2ViUlRDQ29kZWNzSW5HUFVQcm9j
ZXNzKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1ib29sIGRlZmF1bHRXZWJHUFVF
bmFibGVkKCk7Ci0jZW5kaWYKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93c2VyUHJpdmFjeSgpOwog
CiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4
IDdhZWUzYzViMGU0NTk1ZTliNmExZWQ2OTllMTNkODI1MzU1NmY5ZGEuLmMyMWQ4MmJmMmFlMDhi
ZDQ1NDM1Mjk5MTk0MTE2MjgxOWE5MzZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMjYx
LDcgKzI2MSw2IEBACiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRp
b25zRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRpb25zQ29tcG9zaXRlT3Bl
cmF0aW9uc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxp
bmVzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVs
aW5lc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0V2ViR0wyRW5hYmxlZCIKLSNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgogI2RlZmluZSBXZWJLaXRNYXNrV2ViR0xTdHJp
bmdzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZFByZWZlcmVuY2VL
ZXkgQCJXZWJLaXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkIgogI2RlZmluZSBXZWJL
aXRTZXJ2ZXJUaW1pbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFNlcnZlclRpbWluZ0Vu
YWJsZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQppbmRleCBmZjczODg1YjE4NTRiY2U0ZGMzOTRlNzkxODkxYWRjOTE0MGNmZDMwLi42
ZGU0YWMxYzgwYzNkYWQzYTA5ZmRlNTdiYWM3NGZlNzk0NWVmNTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTMxNzAsMTYg
KzMxNzAsNiBAQCAtICh2b2lkKXNldFdlYkdMMkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIFtz
ZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR0wyRW5hYmxlZFByZWZl
cmVuY2VLZXldOwogfQogCi0tIChCT09MKXdlYkdQVUVuYWJsZWQKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5jZUtleV07Ci19
Ci0KLS0gKHZvaWQpc2V0V2ViR1BVRW5hYmxlZDooQk9PTCllbmFibGVkCi17Ci0gICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5j
ZUtleV07Ci19Ci0KIC0gKEJPT0wpbWFza1dlYkdMU3RyaW5nc0VuYWJsZWQKIHsKICAgICByZXR1
cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXggNzFhY2Q4MDg4Njgz
NTlmZTE2ODFiNzA0ZGE1ZWE1MDc5ZTM2NDk2Mi4uZDA4Y2JjYmVjZjM0ZWM1MTdmMjQzZDlkMDVh
YjgyZDAzZTY1MTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC0zOSwxMCArMzks
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGJvb2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3Qg
U3RyaW5nJik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1ib29sIGRlZmF1bHRXZWJH
UFVFbmFibGVkKCk7Ci0jZW5kaWYKLQogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiBi
b29sIGRlZmF1bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5tbQppbmRleCAxNmM1OTcyMjkxOTcxZjE5OTFjNDBhZWE4MWQwZmZiZDZmNjU5
ZDNiLi45YTk0ZDY1ZDg1ZDE3N2I3NzcyYjc5YzM4Nzg0OGFkNGM3Mjc1ZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5tbQpAQCAtNjIsMTkgKzYyLDYgQEAgYm9vbCBpc0ZlYXR1cmVGbGFn
RW5hYmxlZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogCiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKQotewotI2lmIEhBVkUoU1lT
VEVNX0ZFQVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVhdHVyZUZsYWdFbmFibGVkKCJXZWJH
UFUiKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKLQogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAKIGJvb2wgZGVmYXVs
dEluY3JlbWVudGFsUERGRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA1MDc5NzUxNDg4ZTU1
MWNmY2IyYjk0YjliNTgwM2Y2ZjNlOThjNzlmLi41YjI3MWYwOWEzMzU5M2EzZjU3ODFhYTBlYmI3
ZWRmMmRjYzBmZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTMzNSw3ICszMzUsNiBAQCBleHRlcm4g
TlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNh
dGlvbiBXRUJLSVRfREVQUgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQW5pbWF0aW9u
c0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
d2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgd2ViR0wyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkdQ
VUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBtYXNrV2ViR0xTdHJpbmdzRW5h
YmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2Vzc2liaWxpdHlPYmplY3RNb2Rl
bEVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzZXJ2ZXJUaW1pbmdFbmFibGVk
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDUwMDM1MmZkNjM5MmMwZTlhNDMzNWM1ODFhMTI0MWRkZjFiMzExNWMuLmE2MTQ5
NTA1OThhNzVhZDFhYmJmZmRjMzZmNzQxYTlmMTZiNWI1NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0Mjkg
QEAKKzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29t
cGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5v
ZGVzLXdlYmdwdS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nh
bnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNl
LXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb2x2
ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFt
LWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nh
bnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21l
bnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgKiB3ZWJncHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9iaW5kLWdyb3Vwcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJlLWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVy
ZS10by10ZXh0dXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFu
ZHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVy
LXJhY2VzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2J1ZmZlci1j
b21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9idWZm
ZXItZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYnVmZmVy
LWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb2xvci13cml0ZS1tYXNr
LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xl
cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcmVu
ZGVyLWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9yZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
c2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9z
aGFkZXItbW9kdWxlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9zaW1wbGUtdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvc2lt
cGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1
cmUtY3JlYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS90ZXh0
dXJlLWNyZWF0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1cmUtdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4
dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS90ZXh0
dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
dW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS91bmNhcHR1cmVkLWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92ZXJ0
ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVj
dC10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9h
ZGRyZXNzLW9mLXN3aXp6bGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6bGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLWV4cGVjdGVkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0
cmlidXRlLWxvY2F0aW9ucy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9h
cmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRl
c3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlh
cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LW9v
Yi1hbGlhcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJy
YXktc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9iYWQt
YWRkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYmFkLWFk
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9v
bC1vcHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9ib29sLW1hdHJp
eC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0
b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2FzdHMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVh
ZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3Jp
dGUtdmFyaWFibGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NsYW1w
LXN0ZGxpYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Ns
YW1wLXN0ZGxpYi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jb21tZW50
LXBhcnNpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9j
b21tZW50LXBhcnNpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29t
cHV0ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvbXB1
dGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvcHkuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmctZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1wb2ludGVy
LXNob3VsZC10eXBlLWNoZWNrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXIt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXZpY2UtcHJv
cGVyLXR5cGUtY2hlY2tlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS1l
eHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb250LWNyYXNo
LXBhcnNpbmctZW51bS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb3Qt
ZXhwcmVzc2lvbnMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvZG90LWV4cHJlc3Npb25zLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9kb3VibGUtbm90Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2R1cGxp
Y2F0ZS10eXBlcy1zaG91bGQtbm90LXByb2R1Y2UtZHVwbGljYXRlLWN0b3JzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3Vs
ZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZHVwbGljYXRlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUt
bGlmZXRpbWUtMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXIt
dmFyaWFibGUtbGlmZXRpbWUtMy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9lbnVtcy0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvZW51bXMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVt
cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1zLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGguaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXktZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9odWdlLWFycmF5Lmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50LWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRl
ci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0
dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW5kZXgt
Z2V0dGVyLXNldHRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbnQt
Yml0LW1hdGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9p
bnQtYml0LW1hdGguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWxp
dGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvanMvdGVzdC1oYXJuZXNzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sZXhpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9s
ZXhpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbGl0ZXJhbHMtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9saXRlcmFscy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlv
bi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1icmVhay5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS1leHBl
Y3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1jb250aW51
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10
ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9j
YWwtdmFyaWFibGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2x2YWx1
ZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sdmFsdWVz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtMi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0
b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24u
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVy
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWlu
ZGV4LW9yZGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1t
ZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvbWF0cml4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL25lc3Rl
ZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1ZS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9udWxsLWFyZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3Mu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy0yLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy0yLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vb2ItYWNjZXNzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFs
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLW1pbnVzLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWlu
dXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3Zlcmxv
YWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci1vdmVybG9hZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci1wbHVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3Bl
cmF0b3ItcGx1cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci1zeW50YXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9v
cGVyYXRvci1zeW50YXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3Bl
cmF0b3ItdGltZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9vcGVyYXRvci10aW1lcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9v
cGVyYXRvci12ZWN0b3ItYXNzaWduLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3IteHkuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0
aW9uLW9yZGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlYWQtbW9k
aWZ5LXdyaXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
cmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVjdXJzaXZlLXN0cnVj
dHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZh
cmlhYmxlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Jl
dHVybi1sb2NhbC12YXJpYWJsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZXR1cm4tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTEwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEwLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTExLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTExLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEz
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5LWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MjYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0yNy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy00LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtNS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtNi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTguaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlw
ZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zbWFsbGVy
LXRoYW4tMzItYml0LXR5cGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9w
ZXJseS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9y
ZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3N0cnVjdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9z
dHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlv
bi1lbGVtZW50LWNsYXNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N3
aXRjaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N3aXRj
aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVz
dC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Rlcm5hcnkt
c3BlYy10ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Rlc3QtaGFy
bmVzcy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
dGVzdC1oYXJuZXNzLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
dGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
Z3JhZC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtZ3JhZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXktZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXkuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtMi1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQt
dmFyaWFibGUtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91c2UtdW5k
ZWZpbmVkLXZhcmlhYmxlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9u
LXN1YnRyYWN0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUtcGFyYW1ldGVy
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWst
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9v
cC1icmVhay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGlsZS1sb29w
LWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3doaWxlLWxvb3AtY29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvd2hsc2wtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
d2hsc2wuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvd3JvbmctYXJndW1l
bnQtbGVuZ3RoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
d3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvd3JvbmctdHlwZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
emVyby1pbml0aWFsaXplLXZhbHVlcy0yLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLWV4cGVjdGVkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1
ZXMuaHRtbDogUmVtb3ZlZC4KKwogMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIOKYgu+4jyBbR1BVIFByb2Nlc3NdIERlZmVyIHJl
bW92YWwgb2YgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcyB1bnRpbCB3ZSd2ZSBleGVjdXRl
ZCBhbGwgZGlzcGxheSBsaXN0IGl0ZW1zIHdoaWNoIHJlZmVyZW5jZSB0aGVtCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBkOTc2ZWI4MjhhZWM0NTYyMmVjNjAzNmMwZTg3ZmY1ZDFlMTg3NDI5Li44MGFi
OGZmNzc5MzhmMzMwMDEwMTYxNGJjZThhOGY0N2M4MjE3MzQ5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTMzNDYsOCArMzM0Niw2IEBAIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTkwMzkgZWRpdGluZy9kZWxl
dGluZy9zbWFydC1kZWxldGUtcGFyYWdyYXBoLTAwMy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5v
cmcvYi8xOTkwMjggd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwgWyBTbG93IF0K
LQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9vZmZzZXRU
b3BMZWZ0LWlubGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGVzdCBpcyBmYWls
aW5nIGFuZCBpcyBwcmludGluZyBkaWZmZXJlbnQgdmFsdWVzIHdoZW4gaXQgZmFpbHMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBhMWEyMmMzYjUyZWI4NzE0ZGI5NmRiYjhkZGEzY2U0
NWViMmI2Y2U1Li41OWE2NTEzYTVhYTgzYWNhOWNkZGY4Nzc1NTU1ZDZjYmRjYjNlNGQ1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEwLDcgKzEwLDYgQEAgbmF2aWdhdG9yLmNvbnRh
Y3RzIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRl
bnRpYWxzIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdh
dG9yLmdwdSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5s
YW5ndWFnZSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlcyBpcyBPSwpAQCAtMzksNyArMzgsNiBA
QCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9L
CiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRl
cygpIGlzIE9LCi1uYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBp
cyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9L
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0
LXdlYmdwdS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0
ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYxOTIwMmRkNWMyODFjYmYwYjBjZTY3MDhjMTBjNzUzMjVmYjE5ZTYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMjEgKzAsMCBAQAotVGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9u
IGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgY2FudmFzZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLk5vQ2FudmFzZXMKLVBBU1M6IENhbnZhc01hbmFn
ZXIgc2hvdWxkIGhhdmUgbm8gY2FudmFzZXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52
YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5EZXZpY2UKLVBBU1M6IENhbnZhcyBjb250ZXh0IHNob3Vs
ZCBiZSBXZWIgR1BVLgotCi1QQVNTOiBSZW1vdmVkIGNhbnZhcyBoYXMgZXhwZWN0ZWQgSUQuCi0K
LS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMu
QXR0YWNoZWQKLVBBU1M6IEluc3BlY3RvciBjYW52YXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZv
ciBhdHRhY2hlZCBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmlj
ZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNh
bnZhcy5EZXRhY2hlZAotUEFTUzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0
ZWQgZm9yIGRldGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BV
RGV2aWNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJH
UFUuQ2FudmFzLkNTUwotUEFTUzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0
ZWQgZm9yIENTUyBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmlj
ZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29u
dGV4dC13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNv
bnRleHQtd2ViZ3B1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDBmMTE4
ZDA4ODZjYjc1ODAyZmExNTQwY2E1Zjg1NzZhYzZhMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVh
dGUtY29udGV4dC13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL2NyZWF0ZS1jb250ZXh0LXV0aWxpdGllcy5jc3MiPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1jb250ZXh0LXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRXZWJHUFVFbmFibGVkKHRydWUpOwotCi1mdW5jdGlv
biBjcmVhdGVEZXZpY2UoKSB7Ci0gICAgZnVuY3Rpb24gcmVjZWl2ZWREZXZpY2UoZGV2aWNlKSB7
Ci0gICAgICAgIHdpbmRvdy5jb250ZXh0cy5wdXNoKGRldmljZSk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcmVjZWl2ZWRBZGFwdGVyKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0
RGV2aWNlKCkudGhlbihyZWNlaXZlZERldmljZSk7Ci0gICAgfQotCi0gICAgbmF2aWdhdG9yLmdw
dS5yZXF1ZXN0QWRhcHRlcigpLnRoZW4ocmVjZWl2ZWRBZGFwdGVyKTsKLX0KLQotZnVuY3Rpb24g
dGVzdCgpIHsKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LkNyZWF0ZUNvbnRleHRVdGls
aXRpZXMuaW5pdGlhbGl6ZVRlc3RTdWl0ZSgiQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUiKTsK
LQotICAgIEluc3BlY3RvclRlc3QuQ3JlYXRlQ29udGV4dFV0aWxpdGllcy5hZGRTaW1wbGVUZXN0
Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJEZXZpY2UiLAotICAgICAgICBleHByZXNzaW9uOiBgY3Jl
YXRlRGV2aWNlKClgLAotICAgICAgICBjb250ZXh0VHlwZTogV0kuQ2FudmFzLkNvbnRleHRUeXBl
LldlYkdQVSwKLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFt
ZTogIkNhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5BdHRhY2hlZCIsCi0gICAgICAg
IGRlc2NyaXB0aW9uOiAiRW5zdXJlIHRoYXQgYXR0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCBhcmVu
J3QgdHJhY2tlZCBhcyBhIGNhbnZhcywgaW5zdGVhZCBvZiB0aGUgV2ViR1BVRGV2aWNlLiIsCi0g
ICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBsZXQgY3JlYXRlZCA9IGZhbHNlOwot
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0
aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVu
dCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEu
aXRlbS5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAg
ICAgICAgICAgICAgY3JlYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQXR0YWNoZWRDYW52
YXMoImdwdSIpYCkKLQotICAgICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0
aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxp
c3RlbmVyKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVk
LCAiSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGF0dGFjaGVkIEdQ
VUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLiIpOwotICAgICAg
ICB9LAotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAi
Q2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkRldGFjaGVkIiwKLSAgICAgICAgZGVz
Y3JpcHRpb246ICJFbnN1cmUgdGhhdCBkZXRhY2hlZCBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0
cmFja2VkIGFzIGEgY2FudmFzLCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAg
ICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVt
LmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAg
ICAgICAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXRhY2hlZENhbnZhcygi
Z3B1IilgKQotCi0gICAgICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVu
ZXIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJ
bnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BVQ2Fu
dmFzQ29udGV4dCB3aXRob3V0IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0gICAgICAgIH0s
Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52
YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuQ1NTIiwKLSAgICAgICAgZGVzY3JpcHRpb246
ICJFbnN1cmUgdGhhdCBDU1MgR1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNh
bnZhcywgaW5zdGVhZCBvZiB0aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3Qo
KSB7Ci0gICAgICAgICAgICBsZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQ1NTQ2FudmFzKCJncHUiLCAiY3NzLWNhbnZhcyIp
YCkKLQotICAgICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsK
LQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVj
dG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52YXNDb250ZXh0
IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4iKTsKLSAgICAgICAgfSwKLSAgICB9KTsK
LQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0IENhbnZhc01h
bmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgY2FudmFzZXMu
PC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYmU3M2M2MzE1ODUyZDA0YzllY2E5
MzA1NjdmYmQ3ZGUyYTcyZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMt
d2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotegotVGVz
dCB0aGF0IENhbnZhc0FnZW50IHRyYWNrcyBjaGFuZ2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2Yg
YSBXZWJHUFUgZGV2aWNlLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlcXVl
c3RDbGllbnROb2Rlcy5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVz
dENsaWVudE5vZGVzLldlYkdQVS5DcmVhdGUKLVBBU1M6IFRoZXJlIHNob3VsZCBiZSBvbmUgY2xp
ZW50IG5vZGUuCi1QQVNTOiBDbGllbnQgbm9kZSAiY2FudmFzIiBpcyB2YWxpZC4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2Vi
Z3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rl
cy13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViMzNmZTNmOWQz
YTEwZWU1YzRjMTU2OGE4M2RhMTQxNjA4OGYwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RD
bGllbnROb2Rlcy13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLXo8
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsaWVu
dCgpIHsKLSAgICBsZXQgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKTsKLSAgICBsZXQgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0K
LSAgICBsZXQgY29udGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVxdWVzdENsaWVu
dE5vZGVzLldlYkdQVSIpOwotCi0gICAgZnVuY3Rpb24gbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9k
ZXMpIHsKLSAgICAgICAgZm9yIChsZXQgY2xpZW50Tm9kZSBvZiBjbGllbnROb2RlcykgewotICAg
ICAgICAgICAgaWYgKGNsaWVudE5vZGUpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5w
YXNzKGBDbGllbnQgbm9kZSAiJHtjbGllbnROb2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IoKX0i
IGlzIHZhbGlkLmApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZmFpbCgiSW52YWxpZCBjbGllbnQgbm9kZS4iKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5yZXF1ZXN0Q2xp
ZW50Tm9kZXMuV2ViR1BVLkNyZWF0ZSIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBjcmVhdGluZyBhIFdlYkdQVSBkZXZpY2UgY2xpZW50IG5vZGUgaXMgdHJhY2tlZCBjb3JyZWN0
bHkuIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLkNh
bnZhcy5hd2FpdEV2ZW50KFdJLkNhbnZhcy5FdmVudC5DbGllbnROb2Rlc0NoYW5nZWQpCi0gICAg
ICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChldmVudC50YXJnZXQuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlw
ZS5XZWJHUFUpOwotICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5yZXF1ZXN0Q2xpZW50Tm9k
ZXMoKGNsaWVudE5vZGVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoY2xpZW50Tm9kZXMubGVuZ3RoLCAxLCAiVGhlcmUgc2hvdWxkIGJlIG9uZSBj
bGllbnQgbm9kZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgbG9nQ2xpZW50Tm9kZXMoY2xpZW50
Tm9kZXMpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZShgY3JlYXRlQ2xpZW50KClgKS5jYXRjaChyZWplY3QpOwotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3QgdGhhdCBDYW52
YXNBZ2VudCB0cmFja3MgY2hhbmdlcyBpbiB0aGUgY2xpZW50IG5vZGVzIG9mIGEgV2ViR1BVIGRl
dmljZS48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWEwZTRmMWYwNTU5MzQ4
Yzg4M2I0MTljZjc1NGUxY2JlYWE1ZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRl
clNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotV2ViR1BVIHRlc3RzIGZvciBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZSBjb21tYW5kLgot
Ci0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2Vi
R1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2Vi
R1BVLlByb2dyYW0uY29tcHV0ZS5TaGFkZXIuY29tcHV0ZQotCi1bbnVtdGhyZWFkcygyLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIu
MDsKLX0KLQotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3Vy
Y2UuV2ViR1BVLlByb2dyYW0uY29tcHV0ZS5TaGFkZXIuZnJhZ21lbnQKLVBBU1M6IFNob3VsZCBw
cm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBNaXNzaW5nIHNoYWRlciBvZiBnaXZlbiBzaGFk
ZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQKLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZh
cy5yZXF1ZXN0U2hhZGVyU291cmNlLldlYkdQVS5Qcm9ncmFtLmNvbXB1dGUuU2hhZGVyLnZlcnRl
eAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE1pc3Npbmcgc2hh
ZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVu
ZGVyLlNoYWRlci5jb21wdXRlCi1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1F
cnJvcjogTWlzc2luZyBzaGFkZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3Jh
bUlkCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5X
ZWJHUFUuUHJvZ3JhbS5yZW5kZXIuU2hhZGVyLmZyYWdtZW50Ci0KLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJp
YnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24p
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVu
ZGVyLlNoYWRlci52ZXJ0ZXgKLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0
aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJiZTYwZWQxYTJiOWUwYzlkMDk1OWExY2Y4YTYwMDQz
ZDJkNjhlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1m
dW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVIik7Ci0KLSAgICBmb3Ig
KGxldCBwcm9ncmFtVHlwZSBvZiBPYmplY3QudmFsdWVzKFdJLlNoYWRlclByb2dyYW0uUHJvZ3Jh
bVR5cGUpKSB7Ci0gICAgICAgIGZvciAobGV0IHNoYWRlclR5cGUgb2YgT2JqZWN0LnZhbHVlcyhX
SS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUpKSB7Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7Ci0gICAgICAgICAgICAgICAgbmFtZTogYENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNl
LldlYkdQVS5Qcm9ncmFtLiR7cHJvZ3JhbVR5cGV9LlNoYWRlci4ke3NoYWRlclR5cGV9YCwKLSAg
ICAgICAgICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgc2hh
ZGVyUHJvZ3JhbSA9IEluc3BlY3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShw
cm9ncmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJNaXNzaW5nIHNoYWRlciBwcm9ncmFtIjsKLQot
ICAgICAgICAgICAgICAgICAgICBsZXQgbG9nU2hhZGVyID0gYXN5bmMgKCkgPT4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IHtzb3VyY2V9ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVxdWVz
dFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coc291cmNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICBsZXQgaXNDb21wdXRlUHJvZ3Jh
bSA9IHByb2dyYW1UeXBlID09PSBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGU7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBpc0NvbXB1dGVTaGFkZXIgPSBzaGFkZXJUeXBlID09
PSBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuQ29tcHV0ZTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzQ29tcHV0ZVByb2dyYW0gIT09IGlzQ29tcHV0ZVNoYWRlcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGxvZ1NoYWRl
cik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3
YWl0IGxvZ1NoYWRlcigpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+V2ViR1BVIHRlc3Rz
IGZvciBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZSBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNv
bnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMv
cmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTYxNjkyMjEyYThmM2Q3N2RkZGM1ZDBjNjE1NWM5MzhiZDg5MGViYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw4ICswLDAgQEAKLVRlc3RzIGZvciB0aGUgQ2FudmFzLnJlc29sdmVDb250ZXh0
IGNvbW1hbmQgZm9yIFdlYkdQVSBkZXZpY2VzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
Q2FudmFzLnJlc29sdmVDb250ZXh0V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFz
LnJlc29sdmVDb250ZXh0V2ViR1BVLnZhbGlkSWRlbnRpZmllcgotUEFTUzogUGF5bG9hZCBzaG91
bGQgaGF2ZSB0eXBlICJvYmplY3QiLgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05h
bWUgIkdQVURldmljZSIuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52
YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlOTI1YjI3MTY0OGY0NDRjMjNjOWQyYTg1Y2I4NTIwNjI0Y2I2MjU3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0
OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGNyZWF0
ZURldmljZSgpIHsKLSAgICBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkudGhlbihmdW5j
dGlvbiBhZGFwdGVyUmVxdWVzdGVkKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0
RGV2aWNlKCkudGhlbihmdW5jdGlvbiBkZXZpY2VSZXF1ZXN0ZWQoZGV2aWNlKSB7Ci0gICAgICAg
ICAgICB3aW5kb3cuY29udGV4dFdlYkdQVSA9IGRldmljZTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnJlc29sdmVDb250ZXh0V2ViR1BVIik7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6IGBDYW52YXMucmVzb2x2ZUNvbnRleHRX
ZWJHUFUudmFsaWRJZGVudGlmaWVyYCwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0
dXJuIGEgdmFsaWQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gY2FudmFzIGlkZW50aWZpZXIuIiwKLSAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFX
SS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uc2l6ZSwgIlRoZXJlIHNob3VsZCBiZSBu
byBjYW52YXNlcy4iKTsKLQotICAgICAgICAgICAgbGV0IFtjYW52YXNDb2xsZWN0aW9uSXRlbUFk
ZGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIFdJLmNhbnZh
c01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5hd2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQu
SXRlbUFkZGVkKSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KGBjcmVhdGVEZXZpY2UoKWApLAotICAgICAgICAgICAgXSk7Ci0KLSAgICAgICAgICAgIGxldCBj
YW52YXMgPSBjYW52YXNDb2xsZWN0aW9uSXRlbUFkZGVkRXZlbnQuZGF0YS5pdGVtOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlLCBXSS5DYW52YXMu
Q29udGV4dFR5cGUuV2ViR1BVLCAiQWRkZWQgY2FudmFzIHNob3VsZCBiZSBhIFdlYkdQVSBkZXZp
Y2UuIik7Ci0KLSAgICAgICAgICAgIGNvbnN0IG9iamVjdEdyb3VwID0gInRlc3QiOwotICAgICAg
ICAgICAgbGV0IHtvYmplY3R9ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVzb2x2ZUNvbnRleHQoY2Fu
dmFzLmlkZW50aWZpZXIsIG9iamVjdEdyb3VwKQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChvYmplY3QudHlwZSwgIm9iamVjdCIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIHR5
cGUgIm9iamVjdCIuYCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG9i
amVjdC5jbGFzc05hbWUsICJHUFVEZXZpY2UiLCBgUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05h
bWUgIkdQVURldmljZSIuYCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNvbnRleHQg
Y29tbWFuZCBmb3IgV2ViR1BVIGRldmljZXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1v
dmUtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hh
ZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM2OGQxZmJhZmJmZTM0ZTY4Yzk0ZDk4NzUzY2EwMjRkNTVjNGZlOGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTog
R1BVRGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBD
YW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogQ2Fubm90IGxl
eDogQ2Fubm90IGNvbnN1bWUgdG9rZW4KLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5u
b3QgY29uc3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1
bWUgdG9rZW4KLVRlc3QgdGhhdCBDYW52YXNNYW5hZ2VyIHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVz
dHJ1Y3Rpb24gb2YgV2ViR1BVIHNoYWRlciBwcm9ncmFtcy4KLQotCi09PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IENhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IENhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5FeGlzdGluZwotUEFTUzogQWRkZWQgImNvbXB1
dGUiIFNoYWRlclByb2dyYW0uCi1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgot
UEFTUzogVGhlcmUgc2hvdWxkIGJlIHR3byBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuVmFsaWQK
LVBBU1M6IEFkZGVkICJjb21wdXRlIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuSW52YWxpZAot
UEFTUzogU2hvdWxkIG5vdCBjcmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRl
c2NyaXB0b3IuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5X
ZWJHUFUuQWRkZWQuUmVuZGVyLlZhbGlkCi1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9n
cmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BV
LkFkZGVkLlJlbmRlci5JbnZhbGlkCi1QQVNTOiBTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclBy
b2dyYW0gZm9yIGFuIGludmFsaWQgZGVzY3JpcHRvci4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IENhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkCi1QQVNTOiBS
ZW1vdmVkIFNoYWRlclByb2dyYW0gYmVmb3JlIENhbnZhcy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92
ZS13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmYjg3NzJjMGIz
NzVjNDBkNWQ3YTBlNDIwMmE1NGZmNWQ1MmQwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclBy
b2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci13aW5kb3cuYmVmb3JlVGVzdCA9IGFzeW5jIGZ1bmN0
aW9uKCkgewotICAgIGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKCJJTlZBTElEIiksCi0gICAgICAgIGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElE
IiksCi0gICAgXSk7Ci19OwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZShgQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BV
YCk7Ci0KLSAgICBsZXQgY2FudmFzZXMgPSBBcnJheS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2Fu
dmFzQ29sbGVjdGlvbik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXMubGVuZ3Ro
ID09PSAxLCAiVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGNhbnZhcy4iKTsKLQotICAgIGxldCBj
YW52YXMgPSBjYW52YXNlc1swXTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMsICJU
aGVyZSBzaG91bGQgYmUgYSBjYW52YXMuIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2Fu
dmFzLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAiQ2FudmFz
IHNob3VsZCBiZSBXZWJHUFUuIik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFByb2dyYW1B
ZGRlZChwcm9ncmFtVHlwZSkgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4gewotICAgICAgICAgICAgbGV0IGxpc3RlbmVySXRlbUFkZGVkID0gY2FudmFz
LnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBwcm9ncmFt
ID0gZXZlbnQuZGF0YS5pdGVtOwotICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLnByb2dyYW1U
eXBlICE9PSBwcm9ncmFtVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHByb2dyYW0gaW5zdGFuY2VvZiBX
SS5TaGFkZXJQcm9ncmFtLCBgQWRkZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9ncmFtLmAp
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHByb2dyYW0uY2FudmFzID09
PSBjYW52YXMsICJTaGFkZXJQcm9ncmFtIHNob3VsZCBiZSBmb3IgdGhlIGtub3duIENhbnZhcy4i
KTsKLQotICAgICAgICAgICAgICAgIHJlc29sdmUocHJvZ3JhbSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBu
YW1lOiAiQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkV4aXN0aW5nIiwKLSAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IFNoYWRlclByb2dyYW1BZGRlZCBpcyBzZW50IGZvciBhIHBy
b2dyYW0gY3JlYXRlZCBiZWZvcmUgQ2FudmFzQWdlbnQgaXMgZW5hYmxlZC4iLAotICAgICAgICBh
c3luYyB0ZXN0KCkgewotICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeGlzdHMocHJv
Z3JhbVR5cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9n
cmFtLnByb2dyYW1Gb3JUeXBlKHByb2dyYW1UeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnBhc3MoYEFkZGVkICIke3Byb2dyYW1UeXBlfSIgU2hhZGVyUHJvZ3JhbS5g
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGF3YWl0IGF3YWl0UHJvZ3JhbUFkZGVkKHByb2dyYW1UeXBlKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAg
ICAgIGNoZWNrRXhpc3RzKFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZSksCi0g
ICAgICAgICAgICAgICAgY2hlY2tFeGlzdHMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5S
ZW5kZXIpLAotICAgICAgICAgICAgXSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnNpemUsIDIsICJUaGVyZSBz
aG91bGQgYmUgdHdvIFNoYWRlclByb2dyYW0uIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFt
LldlYkdQVS5BZGRlZC5Db21wdXRlLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVj
ayB0aGF0IGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5jIHRl
c3QoKSB7Ci0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAg
YXdhaXRQcm9ncmFtQWRkZWQoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlKSwK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDb21w
dXRlUGlwZWxpbmUoKWApLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5BZGRlZC5Db21wdXRlLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5
bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsK
LQotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0
aW9uLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVk
LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVl
OwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoYGNyZWF0ZUNvbXB1dGVQaXBlbGluZSgiSU5WQUxJRCIpYCk7Ci0KLSAgICAg
ICAgICAgIGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHNoYWRlclByb2dyYW1BZGRlZCwgIlNob3VsZCBub3Qg
Y3JlYXRlIGEgU2hhZGVyUHJvZ3JhbSBmb3IgYW4gaW52YWxpZCBkZXNjcmlwdG9yLiIpOwotICAg
ICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6
ICJDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLlZhbGlkIiwKLSAgICAg
ICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFyZSBzZW50
LiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFs
bChbCi0gICAgICAgICAgICAgICAgYXdhaXRQcm9ncmFtQWRkZWQoV0kuU2hhZGVyUHJvZ3JhbS5Q
cm9ncmFtVHlwZS5SZW5kZXIpLAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKClgKSwKLSAgICAgICAgICAgIF0pOwotICAg
ICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6
ICJDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLkludmFsaWQiLAotICAg
ICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNl
bnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9n
cmFtQWRkZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gY2FudmFzLnNo
YWRlclByb2dyYW1Db2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rp
b24uRXZlbnQuSXRlbUFkZGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBzaGFkZXJQ
cm9ncmFtQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZB
TElEIilgKTsKLQotICAgICAgICAgICAgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVy
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uoc2hhZGVyUHJvZ3JhbUFk
ZGVkLCAiU2hvdWxkIG5vdCBjcmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRl
c2NyaXB0b3IuIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5QYXJlbnREZXZp
Y2VSZW1vdmVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBTaGFkZXJQ
cm9ncmFtIGlzIHJlbW92ZWQgYmVmb3JlIGl0J3MgcGFyZW50IENhbnZhcy4iLAotICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGNhbnZhc1JlbW92ZWQgPSBm
YWxzZTsKLQotICAgICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIChl
dmVudCkgPT4gewotICAgICAgICAgICAgICAgIGNhbnZhc1JlbW92ZWQgPSB0cnVlOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQ291bnQgPSBjYW52YXMu
c2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uc2l6ZTsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lckl0
ZW1SZW1vdmVkID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtUmVtb3ZlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgaWYgKC0tc2hhZGVyUHJvZ3JhbUNvdW50KQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCBsaXN0
ZW5lckl0ZW1SZW1vdmVkKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKGNhbnZhc1JlbW92ZWQsICJSZW1vdmVkIFNoYWRlclByb2dyYW0gYmVmb3JlIENhbnZhcy4i
KTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZGVsZXRlRGV2aWNlKClgKTsKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLSAgICA8cD5UZXN0
IHRoYXQgQ2FudmFzTWFuYWdlciB0cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdl
YkdQVSBzaGFkZXIgcHJvZ3JhbXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZWQzNzIyM2M3NWMw
ZmU1ODU2MWU4MmFiMGQxNDk2NWM0YWNiZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFk
ZXItd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVdl
YkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLgotCi0KLT09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5Db21wdXRlLlZhbGlkCi1QQVNTOiBT
b3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZh
cy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1
Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVu
IHNoYWRlclR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZl
IGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldl
YkdQVS5WZXJ0ZXguVmFsaWQKLVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0t
LSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4Lklu
dmFsaWQKLVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBGYWlsZWQg
dG8gdXBkYXRlIHNoYWRlciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQK
LVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuRnJhZ21lbnQuVmFsaWQKLVBBU1M6IFNvdXJj
ZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVw
ZGF0ZVNoYWRlci5XZWJHUFUuRnJhZ21lbnQuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2Ug
YW4gZXhjZXB0aW9uLgotRXJyb3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNo
YWRlclR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNo
YW5nZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRl
U2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJh
Z21lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmFiY2Qw
MDY2ZTc0YzJkZDRjNTE0NzZjNGY3MGM4MGE0ODdlZDkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy51cGRhdGVT
aGFkZXIgY29tbWFuZCB3aGVuIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb2YgYSBy
ZW5kZXIgcGlwZWxpbmUgc2hhcmUgdGhlIHNhbWUgbW9kdWxlLgotCi0KLT09IFJ1bm5pbmcgdGVz
dCBzdWl0ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQK
LS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRW
ZXJ0ZXhGcmFnbWVudC5TaW5nbGVQaXBlbGluZQotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4u
Ci1QQVNTOiBWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUg
c2FtZS4KLVVwZGF0aW5nIHZlcnRleCBzaGFkZXIgc291cmNlLi4uCi1QQVNTOiBWZXJ0ZXggYW5k
IEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVBBU1M6IFZlcnRl
eCBzb3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4KLVVwZGF0aW5nIGZyYWdtZW50IHNoYWRlciBz
b3VyY2UuLi4KLVBBU1M6IFZlcnRleCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxk
IGJlIHRoZSBzYW1lLgotUEFTUzogRnJhZ21lbnQgc291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQu
Ci0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFy
ZWRWZXJ0ZXhGcmFnbWVudC5NdWx0aXBsZVBpcGVsaW5lcwotQ3JlYXRpbmcgcmVuZGVyIHBpcGVs
aW5lLi4uCi1DcmVhdGluZyByZW5kZXIgcGlwZWxpbmUuLi4KLVBBU1M6IEJvdGggcGlwZWxpbmVz
IHNob3VsZCBoYXZlIHRoZSBzYW1lIHNvdXJjZS4KLVVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4
IHNvdXJjZS4uLgotUEFTUzogU291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdl
ZC4KLVBBU1M6IEJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBzb3VyY2VzLgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13
ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2Y5YTQ3NTYyMjQyMWM4MzY4OWM5YWQzN2QyMTkw
YTAxY2U5ZTM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRW
ZXJ0ZXhGcmFnbWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0V2ViR1BVRW5hYmxlZCh0cnVlKTsKLQotY29uc3QgcmVuZGVyUGlwZWxpbmVTb3VyY2UgPSBg
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19Ci1gOwotCi1sZXQgZGV2aWNlID0gbnVsbDsKLWxldCBzaGFkZXJNb2R1bGUgPSBudWxsOwot
Ci1hc3luYyBmdW5jdGlvbiBjcmVhdGVSZW5kZXJQaXBlbGluZSgpIHsKLSAgICBpZiAoIWRldmlj
ZSkgewotICAgICAgICBsZXQgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFk
YXB0ZXIoKTsKLSAgICAgICAgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7
Ci0gICAgfQotCi0gICAgaWYgKCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHJlbmRlclBpcGVsaW5lU291cmNlfSk7
Ci0KLSAgICAvLyBDb3BpZWQgZnJvbSB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbC4KLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRl
eFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0
aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlk
ZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdz
OiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZh
cy51cGRhdGVTaGFkZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Iik7Ci0KLSAgICBhc3lu
YyBmdW5jdGlvbiBhd2FpdFByb2dyYW1DcmVhdGVkKCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uIik7Ci0gICAgICAgIGxldCBldmFsdXRl
UHJvbWlzZSA9IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVs
aW5lKClgKTsKLQotICAgICAgICBpZiAoIVdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlv
bi5zaXplKQotICAgICAgICAgICAgYXdhaXQgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0
aW9uLmF3YWl0RXZlbnQoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpOwotCi0gICAgICAg
IGxldCBjYW52YXMgPSBBcnJheS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlv
bilbMF07Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhcy5jb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSwgIkNhbnZhcyBzaG91bGQgYmUgV2ViR1BV
LiIpOwotCi0gICAgICAgIGxldCBpdGVtQWRkZWRFdmVudCA9IGF3YWl0IGNhbnZhcy5zaGFkZXJQ
cm9ncmFtQ29sbGVjdGlvbi5hd2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVk
KTsKLSAgICAgICAgbGV0IHNoYWRlclByb2dyYW0gPSBpdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHNoYWRlclByb2dyYW0ucHJvZ3JhbVR5cGUg
PT09IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLCAiU2hhZGVyIHByb2dyYW0g
c2hvdWxkIGJlIGEgcmVuZGVyIHBpcGVsaW5lLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChzaGFkZXJQcm9ncmFtLnNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyLCAiU2hhZGVyIHBy
b2dyYW0gc2hvdWxkIGhhdmUgYSBzaGFyZWQgdmVydGV4IGFuZCBmcmFnbWVudCBtb2R1bGUuIik7
Ci0KLSAgICAgICAgYXdhaXQgZXZhbHV0ZVByb21pc2U7Ci0gICAgICAgIHJldHVybiBzaGFkZXJQ
cm9ncmFtOwotICAgIH0KLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50LlNpbmdsZVBp
cGVsaW5lIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIHRoZSB2
ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIHdpbGwgYWxzbyBhZmZlY3QgdGhlIGZyYWdtZW50L3ZlcnRl
eCBzaGFkZXIgaWYgdGhleSBib3RoIHVzZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAgICAgICAgYXN5
bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gYXdhaXQgYXdhaXRQ
cm9ncmFtQ3JlYXRlZCgpOwotCi0gICAgICAgICAgICBsZXQgW29yaWdpbmFsVmVydGV4U291cmNl
LCBvcmlnaW5hbEZyYWdtZW50U291cmNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAg
ICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRl
bnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAg
ICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50
aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAgICAg
ICBdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKG9yaWdp
bmFsVmVydGV4U291cmNlLCBvcmlnaW5hbEZyYWdtZW50U291cmNlLCAiVmVydGV4IGFuZCBGcmFn
bWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0KLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJVcGRhdGluZyB2ZXJ0ZXggc2hhZGVyIHNvdXJjZS4uLiIpOwot
ICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0u
aWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwgIi8vIE1PRElG
SUVEIFZFUlRFWFxuXG4iICsgb3JpZ2luYWxWZXJ0ZXhTb3VyY2Uuc291cmNlKTsKLQotICAgICAg
ICAgICAgbGV0IFt2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCBmcmFnbWVudFNvdXJj
ZUFmdGVyVXBkYXRpbmdWZXJ0ZXhdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAg
ICAgIENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlm
aWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAg
ICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmll
ciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAgICAgICAgIF0p
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodmVydGV4U291
cmNlQWZ0ZXJVcGRhdGluZ1ZlcnRleCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4
LCAiVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUu
Iik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbCh2ZXJ0
ZXhTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCBvcmlnaW5hbFZlcnRleFNvdXJjZSwgIlZlcnRl
eCBzb3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlVwZGF0aW5nIGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4iKTsKLSAgICAgICAg
ICAgIGF3YWl0IENhbnZhc0FnZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZp
ZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCwgIi8vIE1PRElGSUVEIEZS
QUdNRU5UXG5cbiIgKyBvcmlnaW5hbEZyYWdtZW50U291cmNlLnNvdXJjZSk7Ci0KLSAgICAgICAg
ICAgIGxldCBbdmVydGV4U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCBmcmFnbWVudFNvdXJj
ZUFmdGVyVXBkYXRpbmdGcmFnbWVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAg
ICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50
aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAg
ICAgIENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlm
aWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAgICAg
XSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhT
b3VyY2VBZnRlclVwZGF0aW5nRnJhZ21lbnQsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0Zy
YWdtZW50LCAiVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhl
IHNhbWUuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVh
bChmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdGcmFnbWVudCwgb3JpZ2luYWxGcmFnbWVudFNv
dXJjZSwgIkZyYWdtZW50IHNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52
YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5NdWx0aXBsZVBpcGVs
aW5lcyIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB1cGRhdGluZyBvbmUgcGlw
ZWxpbmUgd29uJ3QgYWZmZWN0IGFueSBvdGhlciBwaXBlbGluZXMgaWYgdGhleSBzaGFyZSB0aGUg
c2FtZSBtb2R1bGUuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBz
aGFkZXJQcm9ncmFtMSA9IGF3YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLSAgICAgICAgICAg
IGxldCBzaGFkZXJQcm9ncmFtMiA9IGF3YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLQotICAg
ICAgICAgICAgbGV0IFtvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNl
Ml0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1
ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0yLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG9yaWdp
bmFsVmVydGV4U291cmNlMiwgIkJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHNv
dXJjZS4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIHBpcGVs
aW5lIDEgdmVydGV4IHNvdXJjZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQu
dXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5WZXJ0ZXgsICIvLyBNT0RJRklFRCBWRVJURVhcblxuIiArIG9yaWdpbmFsVmVy
dGV4U291cmNlMS5zb3VyY2UpOwotCi0gICAgICAgICAgICBsZXQgW25ld1ZlcnRleFNvdXJjZTEs
IG5ld1ZlcnRleFNvdXJjZTJdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAg
IENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbTEuaWRlbnRpZmll
ciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAg
Q2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMi5pZGVudGlmaWVy
LCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgIF0pOwot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwob3JpZ2luYWxW
ZXJ0ZXhTb3VyY2UxLCBuZXdWZXJ0ZXhTb3VyY2UxLCAiU291cmNlIG9mIHBpcGVsaW5lIDEgc2hv
dWxkIGhhdmUgY2hhbmdlZC4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90
U2hhbGxvd0VxdWFsKG5ld1ZlcnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTIsICJCb3RoIHBp
cGVsaW5lcyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgc291cmNlcy4iKTsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPldlYkdQVSB0ZXN0cyBmb3Ig
Q2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kIHdoZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQg
c2hhZGVycyBvZiBhIHJlbmRlciBwaXBlbGluZSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuPC9wPgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTNjMGU4NjRhNDNiNzJiMTdjMzM1YTY1ODI2NmJmYzkwNzVlOTViMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0
ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnVwZGF0ZVNoYWRlci5X
ZWJHUFUiKTsKLQotICAgIGZ1bmN0aW9uIHRlc3Qoe25hbWUsIHByb2dyYW1UeXBlLCBzaGFkZXJU
eXBlLCBzb3VyY2UsIHNob3VsZFRocm93fSkgewotICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
Ci0gICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IEluc3BlY3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5w
cm9ncmFtRm9yVHlwZShwcm9ncmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQ
cm9ncmFtKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiTWlzc2luZyBzaGFkZXIgcHJvZ3Jh
bSI7Ci0KLSAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxTb3VyY2UgPSBhd2FpdCBDYW52YXNB
Z2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVy
VHlwZSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVy
KHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGF3YWl0IENhbnZhc0FnZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZp
ZXIsIHNoYWRlclR5cGUsIHNvdXJjZSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgbmV3U291cmNl
ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlk
ZW50aWZpZXIsIHNoYWRlclR5cGUpOwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3ROb3RTaGFsbG93RXF1YWwob3JpZ2luYWxTb3VyY2UsIG5ld1NvdXJjZSwgIlNvdXJjZSBz
aG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BV
LkNvbXB1dGUuVmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Q
cm9ncmFtVHlwZS5Db21wdXRlLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuQ29tcHV0ZSwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBDT01QVVRF
Ci1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmlj
ZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlz
cGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1
aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAg
ICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuSW52YWxpZCIs
Ci0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1
dGUsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21w
dXRlLAotICAgICAgICBzb3VyY2U6ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRy
dWUsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVT
aGFkZXIuV2ViR1BVLlZlcnRleC5WYWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFk
ZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdF
RCBWRVJURVgKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNh
bnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlZlcnRleC5JbnZhbGlkIiwKLSAgICAgICAgcHJvZ3Jh
bVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFk
ZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LAotICAgICAgICBzb3Vy
Y2U6ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAg
ICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdt
ZW50LlZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3Jh
bVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRl
clR5cGUuRnJhZ21lbnQsCi0gICAgICAgIHNvdXJjZTogYC8vIENIQU5HRUQgRlJBR01FTlQKLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwg
ZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0K
LWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVT
aGFkZXIuV2ViR1BVLkZyYWdtZW50LkludmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0ku
U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJ
LlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCwKLSAgICAgICAgc291cmNlOiAiSU5W
QUxJRCIsCi0gICAgICAgIHNob3VsZFRocm93OiB0cnVlLAotICAgIH0pOwotCi0gICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0ibG9hZCgpIj4KLTxwPldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBj
b21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBjM2M2OWJhMTgwZTUyZDExZTg4MjBhNDdkYzI5OWY1N2Zk
MWEwZTEwLi44ZjFkYTVhZjRmZjJmMmJkNzdjYjU2NjhhY2E3NTZiN2VhOGIxNTgwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjYzLDE2ICsxNjYz
LDYgQEAgaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50LyBbIFNraXAgXQogaHR0cC93cHQv
d2ViYXV0aG4vIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NyZWRl
bnRpYWwtbWFuYWdlbWVudC8gWyBTa2lwIF0KIAotIyBXZWJHUFUKLXdlYmdwdSBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lw
IF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQu
aHRtbCBbIFNraXAgXQotCiAjIFdlYkdMMgogd2Via2l0Lm9yZy9iLzE2NjUzNiBmYXN0L2NhbnZh
cy93ZWJnbC93ZWJnbC10cmFuc2Zvcm1lZC12YXJ5aW5nLW5hbWUtY3Jhc2guaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzE2NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItbWl4LXdpdGgt
Ym9vbC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGU4NGUxNmQyYWQ0MmFkMzUwN2UwMjJhMmFhMmNhOTRmMjhmYmNlYWMuLjE2YmFh
YmIyY2U0MTUzODBlZjg4YWJlZGNjYTVjNTRhZGQ2OWNmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC01NiwxNCArNTYsNiBAQCB3ZWJraXQub3JnL2Iv
MjAwMzA4IGZhc3QvZXZlbnRzL3RvdWNoL2lvcy9jb250ZW50LW9ic2VydmF0aW9uL25vbi12aXNp
YmxlLWNvbnRlbgogCiBtZWRpYS92aWRlby1zdXBwb3J0cy1mdWxsc2NyZWVuLmh0bWwgWyBTa2lw
IF0KIAotaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAg
XQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lw
IF0KLWluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNr
aXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAg
XQotaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwg
WyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tp
cCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJh
Z21lbnQuaHRtbCBbIFNraXAgXQotCiAjIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBu
b3QgZW5hYmxlZAogbWVkaWEvZW5jcnlwdGVkLW1lZGlhLwogCkBAIC0zNDg3LDQgKzM0NzksNCBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXdlYm0tc3RhbGwuaHRtbCBbIFNraXAgXQogCiAjIHdl
YmtpdC5vcmcvYi8yMjMzODUgVHdvIGltcG9ydGVkIHdlYnJ0YyB0ZXN0cyBhcmUgZmxha2V5IHRl
eHQgZmFpbGluZyBvbiBSZWxlYXNlIGZvciBCaWdTdXIrIGFuZCBpT1MgMTQKIFsgUmVsZWFzZSBd
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LWFkZEljZUNhbmRpZGF0ZS1jb25uZWN0aW9uU2V0dXAuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1b
IFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEdGxz
VHJhbnNwb3J0LXN0YXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK1sgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ0R0bHNUcmFuc3BvcnQtc3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjY0MzkxZmI3
MTM2MTQ0OGJiOGMwNGY0MWY2ZThlYzQ3NmQyOGMzOC4uMDAyYTQ3MTBmNTJiZWNiNTJlNzQyY2Ez
YWQ1Y2E4ZTMwNmE4OTY3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNDcsMTUgKzQ3LDYgQEAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFw
aSBbIFNraXAgXQogY3NzLXR5cGVkb20gWyBTa2lwIF0KIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0K
IAotd2ViZ3B1IFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdw
dS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJn
cHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdl
YmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdw
dS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92
ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBdCi0KICMgTWVkaWEgU3RyZWFtIEFQSSB0
ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdLMSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zCkBAIC0x
MzgzLDQgKzEzNzQsNCBAQCB3ZWJraXQub3JnL2IvMjI3NzYyIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlvbi9mb2N1cy90aGUtYQogd2Via2l0Lm9yZy9iLzIy
ODU2MSBodHRwL3Rlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9tYWNvcy1mdWxsc2Ny
ZWVuLW1lZGlhLWNvbnRyb2xzL21hY29zLWZ1bGxzY3JlZW4tbWVkaWEtY29udHJvbHMtbGl2ZS1i
cm9hZGNhc3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgd2Via2l0Lm9yZy9iLzIyODIwMCBB
ZGp1c3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgZm9yIE1vbnRlcmV5IG9uIE9wZW4gU291cmNlIDxy
ZGFyOi8vODAzNDUwNDg+OgotWyBNb250ZXJleSBdIHdlYnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZh
aWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1sgTW9udGVyZXkgXSB3ZWJydGMv
aDI2NC1oaWdoLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzZDg2NmRlOTEyYzMwYmUzODE3YTc2NDZjYjM2MjU5
YWZjMGE5OGYwLi4wOTFhN2EyOWY1NGVmYmM2MGFiN2FkMzk5MTY5MjU2YjQ1Yjc1NGY4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC05NzUs
MjEgKzk3NSwxMyBAQCB3ZWJraXQub3JnL2IvMTg3ODI4IFsgUmVsZWFzZSBdIGZhc3QvY3NzLWdy
aWQtbGF5b3V0L2ZsZXgtY29udGVudC1zaXplZC1jb2x1bW5zLQogCiB3ZWJraXQub3JnL2IvMTk4
NjYzIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtdGhl
bi1uYXZpZ2F0ZS1zYW1lLXNpdGUtc2hvdWxkLWhhdmUtYWNjZXNzLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogCi13ZWJraXQub3JnL2IvMTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1z
dHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzE5OTY1
MSBbIE1vamF2ZSBEZWJ1ZyBdIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsg
U2xvdyBdCi0KIHdlYmtpdC5vcmcvYi8xOTkwODkgWyBEZWJ1ZyBdIHBsdWdpbnMvd2luZG93LW9w
ZW4uaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS81NjUwNjA2Mz4gTGF5b3V0IFRl
c3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rp
b24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlICgyMDMy
NTYpCiB3ZWJraXQub3JnL2IvMjAzMjU2IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0
cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDUzMDEgaW5zcGVjdG9y
L2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzIwNTgwOCBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC91bmljb2RlLWJp
ZGktb3RoZXItbmV1dHJhbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8x
OTg5NDIgd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDY4NjQgaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8
cmRhcjovL3Byb2JsZW0vNjA5MjkyMzk+IFsgbWFjT1Mgd2syIF0gZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sIGlzIGEgZmxha3kgdGltZW91dApAQCAtOTk5LDk0
ICs5OTEsNTAgQEAgd2Via2l0Lm9yZy9iLzIwNjcwOCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBbIFBhc3MgRmEKIAogd2Via2l0Lm9yZy9iLzIwNjk2
MSBbIE1vamF2ZSBdIG1lZGlhL21lZGlhLWZyYWdtZW50cy9UQzAwMzUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcwNzggd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBs
ZS1sZXZlbC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9y
Zy9iLzIwNzExNyB3ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcxMjcgd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0
ZXguaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDY5MDMg
aW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0Lmh0bWwgWyBQYXNzIENyYXNoIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMjA3MTQxIFsgRGVidWcgXSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0
ZS1jb250ZXh0LWJpdG1hcHJlbmRlcmVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMjA3MTY2IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRp
by12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMDcxOTkgd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjAwIHdlYmdwdS93aGxzbC93aGlsZS1s
b29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3Jn
L2IvMjA3MjAyIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNjcxOCBpbnNwZWN0b3IvY2FudmFz
L3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJnbDIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3
ZWJraXQub3JnL2IvMjA3MjA5IGluc3BlY3Rvci9oZWFwL2dldFByZXZpZXcuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzIwNzIyMiB3ZWJncHUvd2hsc2wvemVy
by1pbml0aWFsaXplLXZhbHVlcy0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMjA3MjY3IHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxp
ZmV0aW1lLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3
MjY5IFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlcnZlci1jbG9z
ZS5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xODM2ODQgaHR0cC90ZXN0cy9h
cHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjA3Mjk0IHdlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDczMDMgbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS1pZnJhbWUuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi13ZWJr
aXQub3JnL2IvMjA3NDYwIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3
ZWJraXQub3JnL2IvMjA3NDY1IFsgRGVidWcgXSBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWxvbmctcXVldWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc0NjYg
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNy
YXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA3NDc2IHdlYmdwdS93
aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3NTA4IHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1sb2FkLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3
NTk5IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NjMyIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3N0aWNr
eS9zdGlja3ktZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8yMDc2MzEgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZml4ZWQvZml4
ZWQtZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8yMDc2MzUgZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0
LXJlcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXSAKIAotd2Via2l0Lm9yZy9iLzIwNzYz
NiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDc2Mzggd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA2ODUyIGluc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzIwNzcwMCB3ZWJncHUvd2hsc2wvcmV0dXJu
LWxvY2FsLXZhcmlhYmxlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQu
b3JnL2IvMjA3NzI4IFsgUmVsZWFzZSBdIGFjY2Vzc2liaWxpdHkvcHJlc3MtdGFyZ2V0cy1jZW50
ZXItcG9pbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDc3Nzkgd2Vi
Z3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDc3OTYgWyBSZWxlYXNlIF0g
ZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3cuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc3OTggd2VicnRjL2Nvbm5lY3Rpb24tc3RhdGUuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDc4Mzkgd2ViZ3B1L3dobHNsL2xv
b3BzLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2Iv
MjA3ODQ0IHN0b3JhZ2UvaW5kZXhlZGRiL2RldGFjaGVkLWlmcmFtZS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzg2NCB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1j
b250aW51ZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIw
NzkzOCBodHRwL3dwdC9jcnlwdG8vZGVyaXZlLWhtYWMta2V5LWNyYXNoLmFueS5odG1sIFsgUGFz
cyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8yMDc5NjIgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1t
ZW51LWl0ZW0tc2VsZWN0ZWQtbm90aWZpY2F0aW9uLmh0bWwgWyBTbG93IF0KIAotd2Via2l0Lm9y
Zy9iLzIwODAwNSB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwODAxNCBbIERlYnVnIF0gaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9uby1zdWJwcm90b2NvbC5odG1sIFsgUGFzcyBD
cmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8yMDgwNjIgaHR0cC93cHQvZmV0Y2gvZGlzYWJsZS1zcGVj
dWxhdGl2ZS1mb3ItcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MjA4MjIyIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwODM0MCB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA4Mzkw
IFsgRGVidWcgXSBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvZGVsYXktcmVwYWludC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwODM5NiBodHRwL3Rlc3RzL21pc2Mvb2JqZWN0
LWVtYmVkZGluZy1zdmctZGVsYXllZC1zaXplLW5lZ290aWF0aW9uLTIuaHRtIFsgUGFzcyBGYWls
dXJlIF0KQEAgLTEwOTksOCArMTA0Nyw2IEBAIHdlYmtpdC5vcmcvYi8yMDg4ODkgZmFzdC9pbWFn
ZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sIFsgUGFzcyBJbWFnZU9uCiAKIHdl
YmtpdC5vcmcvYi8yMDkwMDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8w
ODUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDkwMjQgWyBEZWJ1ZyBd
IHdlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sIFsgUGFzcyBDcmFzaCBdCi0KIHdlYmtp
dC5vcmcvYi8yMDkwNzcgc3ZnL2N1c3RvbS9vYmplY3Qtc2l6aW5nLWV4cGxpY2l0LXdpZHRoLnho
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwOTA1MiBmYXN0L3Njcm9sbGlu
Zy9tYWMvYWJzb2x1dGUtaW4tb3ZlcmZsb3ctc2Nyb2xsLWR5bmFtaWMuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCkBAIC0xMTkyLDkgKzExMzgsNiBAQCB3ZWJraXQub3JnL2IvNjgyNzgg
aHR0cC90ZXN0cy9oaXN0b3J5L2JhY2std2l0aC1mcmFnbWVudC1jaGFuZ2UucHkgWyBQYXNzIEZh
aWx1cgogIyA8cmRhcjovL3Byb2JsZW0vMzczMzAzNzc+IEFTYW4gdGVzdHMgZXhpdGluZyBlYXJs
eSBkdWUgdG8gdGltZW91dHMKIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViQ3J5cHRvQVBJL2Rlcml2ZV9iaXRzX2tleXMgWyBTa2lwIF0KIAotIyA8cmRhcjov
L3Byb2JsZW0vNjAxMDU5Mjc+IFsgTWFjIHdrMiBSZWxlYXNlIF0gd2ViZ3B1L3dobHNsL21ha2Ut
YXJyYXktcmVmZXJlbmNlLmh0bWwgaXMgZmxha3kgZmFpbGluZwotWyBSZWxlYXNlIF0gd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiAjIDxy
ZGFyOi8vcHJvYmxlbS82MDUwNzUyNj4gUkVHUkVTU0lPTiAocjI1ODEyNC1yMjU4MjMwKSBbIE1h
YyB3azIgXSBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NvbnRlbnRleHRlbnNpb25zL2Js
b2NrZWQtd2Vic29ja2V0LWNyYXNoLmh0bWwgaXMgZmxha3kgY3Jhc2hpbmcuCiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2NvbnRlbnRleHRlbnNpb25zL2Jsb2NrZWQtd2Vic29ja2V0LWNy
YXNoLmh0bWwgWyBQYXNzIENyYXNoIF0KIApAQCAtMTI4Miw4ICsxMjI1LDYgQEAgd2Via2l0Lm9y
Zy9iLzE3OTc5NiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS12YWxpZGF0
aW9uLWJhY2stbmF2aWcKIAogd2Via2l0Lm9yZy9iLzIxNTU4MSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIxNTYwNiB3ZWJncHUvd2hsc2wvZG8td2hp
bGUtbG9vcC1icmVhay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9y
Zy9iLzIxNTYxMSBbIERlYnVnIF0gZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmZs
b3ctb3ZlcmxheS1zY3JvbGxiYXItaG92ZXJlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyBy
ZGFyOi8vNjUyNjk1ODkgKFsgbWFjT1MgYW5kIGlPUyBdIG1lZGlhL3ZwOS5odG1sIGlzIGZhaWxp
bmcgY29uc2lzdGVudGx5LikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBmMWNmMjRmNGYxYWIzZDA2NDBiMzJlMjFhNGVjNTA5
ZGFkMjJiYzgxLi5kZjkwMTA5MDRkNTc3ZTg1YTA3NjY2N2E5MzdhZDc3ZTZkOGY1OTU3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
CkBAIC05LDcgKzksNiBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5jb29r
aWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRvci5n
ZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3Iu
aXNMb2dnZWRJbigpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdh
dG9yLmxhbmd1YWdlIGlzIE9LCkBAIC00Myw3ICs0Miw2IEBAIG5hdmlnYXRvci5jb250YWN0cyBp
cyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50aWFs
cyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRvci5n
cHUgaXMgT0sKIG5hdmlnYXRvci5pc0xvZ2dlZEluKCkgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5h
YmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzJhMWI5N2NlODczNTJiY2U4ZTA2MDUxMjBl
MDU1NDdhMDc0ODE4Ny4uMTk0YzE2MTY5OWRiYjE5OTM4MTc4MDRmNDU1MzZmM2ExOTAwNjFjNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NDUsMzgg
KzE1NDUsNiBAQCB3ZWJraXQub3JnL2IvMjEyMTcyIFsgQ2F0YWxpbmEgXSBmYXN0L3RleHQvZm9u
dC1jb2xsZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogCiB3ZWJraXQub3JnL2IvMjAwMTI4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRtbCBb
IFRpbWVvdXQgUGFzcyBdCiAKLSMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0IHRl
c3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAoMjAx
ODI3KSkKLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0
cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3
ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0
cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3
ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJp
cC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2Vi
Z3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5n
bGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgcmRhcjovLzU1MjA0
Nzc1IChSRUdSRVNTSU9OIChNYWNPUyk6IE1hbnkgd2ViZ3B1L3dobHNsLyogdGVzdHMgYXJlIGZs
YWt5IGZhaWx1cmVzKQotd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxv
Y2F0aW9ucy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9uZXN0
ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQot
d2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEwLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTExLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTEyLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEzLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTE1Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXSAKLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xOC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Vi
a2l0Lm9yZy9iLzIwNTUyNCB3ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDU1MjUgd2ViZ3B1L3dobHNsL2J1
ZmZlci1mcmFnbWVudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyBUaGUgdGVz
dCBydW5uZXIgaXMgZmFpbGluZyBpbiBhbiB1bnJlbGF0ZWQsIHVuZXhwbGFpbmVkLCBpbnZpc2li
bGUgdG8gdGhlIGh1bWFuIGV5ZSwgMiBwaXhlbHMgZGlmZmVyZW5jZS4KIHdlYmtpdC5vcmcvYi8y
MDE0MDEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtdmlkZW8taXMtdmlzaWJsZS5odG1sIFsgU2tpcCBdCiAKQEAgLTE2MTIsMTAgKzE1ODAs
NiBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRl
ZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNzCiAKIHdlYmtpdC5vcmcvYi8yMDU3NTYgd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL25vLWF0dHJpYnV0ZS12ZXJ0ZXgtc2hhZGVyLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1ODYyIHdlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNTg2NyB3ZWJncHUv
ZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9p
bXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcgWyBGYWlsdXJlIFBhc3MgXQogCiAjIExv
Y2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5hYmxlZCBvbiBjZXJ0YWluIE9TZXMuCkBA
IC0xNjk2LDggKzE2NjAsNiBAQCB3ZWJraXQub3JnL2IvMjA4NTkyIHN2Zy9jdXN0b20vb2JqZWN0
LXNpemluZy1leHBsaWNpdC1oZWlnaHQueGh0bWwgWyBQYXNzIEZhaWx1cgogCiB3ZWJraXQub3Jn
L2IvMjA5MjU3IHN2Zy9hcy1vYmplY3Qvb2JqZWN0LWJveC1zaXppbmctbm8td2lkdGgtaGVpZ2h0
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA5MDU2IHdlYmdwdS93aGxz
bC91aW50LWJpdHdpc2UuaHRtbCBbIFBhc3MgQ3Jhc2ggXQotCiB3ZWJraXQub3JnL2IvMjA5MDcy
IFsgRGVidWcgXSBodHRwL3Rlc3RzL2Nzcy9zaGFyZWQtc3R5bGVzaGVldC1tdXRhdGlvbi1wcmVj
b25zdHJ1Y3QuaHRtbCBbIFBhc3MgQ3Jhc2ggRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDcx
NTAgcGxhdGZvcm0vbWFjL3dlYnJ0Yy9jYXB0dXJlQ2FudmFzLXdlYnJ0Yy1zb2Z0d2FyZS1lbmNv
ZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCkBAIC0xNzcxLDggKzE3MzMsNiBAQCB3
ZWJraXQub3JnL2IvMjE1MTEwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1hbmltYXRpbwogCiB3ZWJraXQub3JnL2IvMjE1MTc3IFsgUmVsZWFzZSBd
IGVkaXRpbmcvc2VsZWN0aW9uL25hdmlnYXRpb24tY2xlYXJzLWVkaXRvci1zdGF0ZS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIxNTI0NyB3ZWJncHUvd2hsc2wvZG9udC1j
cmFzaC1wYXJzaW5nLWVudW0uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtp
dC5vcmcvYi8yMTUyNzEgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9uZXctZGF0
YWJhc2UtYWZ0ZXItdXNlci1kZWxldGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMTU0NTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5LW5lZ2F0aXZlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQpAQCAtMTg2OSwxMSArMTgyOSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWNoYW5nZXR5cGUtcGxheS13aXRob3V0CiAjIDxyZGFy
Oi8vcHJvYmxlbS82MjMxNzcyMz4gWyBHdWFyZC1NYWxsb2MgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3JlbW90ZS1wbGF5YmFjay93YXRjaC1hdmFpbGFiaWxpdHktaW5pdGlhbC1j
YWxsYmFjay5odG1sIGlzIGZsYWt5IGNyYXNoaW5nIHdpdGggJ1dlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW90ZUhhc0F2YWlsYWJpbGl0eUNhbGxiYWNrc0NoYW5nZWQoKScgYWxlcnQuCiBb
IE1vamF2ZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3RlLXBsYXliYWNr
L3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0aWFsLWNhbGxiYWNrLmh0bWwgWyBQYXNzIENyYXNoIF0K
IAotIyA8cmRhcjovL3Byb2JsZW0vNTY5NjE0OTk+IE1hbnkgd2ViR1BVIHRlc3QgZmFpbCBvbiBw
cm9kdWN0aW9uIGFuZCBjcmFzaCBvbiBEZWJ1ZwotWyBCaWdTdXIrIF0gaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1bIEJpZ1N1cisgXSBp
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQu
aHRtbCBbIFNraXAgXQotWyBCaWdTdXIrIF0gaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIt
d2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLQogIyBXZWJQIGltYWdlcwogWyBCaWdTdXIrIF0gZmFzdC9p
bWFnZXMvd2VicC1hcy1pbWFnZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIFsgQmln
U3VyKyBdIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLXdlYnAtYXMtaW1hZ2UuaHRtbCBbIFBhc3MgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2Y2ViNjhmZjg4
MWYyZWFmMjc5MWE0MDNhYWNlZGY2NTQ5OGExY2Q1Li5mNGMyMWIwNzc5NzRjYmQwZTVkZDE3ZGRm
YjA5YjA0YmM5YjdhNmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNDEyOSwxNiArNDEyOSw2IEBAIHdlYmtpdC5vcmcvYi8xOTA0NzIgZmFzdC9mb3Jt
cy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1odG1sY29sbGVjdGlvbi5odG1sIFsKIAogd2Vi
a2l0Lm9yZy9iLzE5MDUyMCBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hY3Jvc3Mtc2hh
ZG93LWJvdW5kYXJpZXMtd2l0aC1zdHlsZS0yLmh0bWwgWyBDcmFzaCBGYWlsdXJlIF0KIAotIyBX
ZWJHUFUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzCi13ZWJncHUgWyBTa2lwIF0KLWluc3Bl
Y3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rv
ci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0
b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3Bl
Y3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rv
ci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwg
WyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE5MTE5NCBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1j
b250ZW50LXdpdGgtZmxvYXRpbmctaW1hZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE5MTE5NCBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXRpbmctaW1h
Z2VzMi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvZG9tL2lubGlu
ZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbCBbIEZhaWx1cmUgXQpAQCAtNDY2Nyw0ICs0
NjU3LDQgQEAgd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2Zvcm0tYW5pbWF0aW9uLXRv
LXNjYWxlLXplcm8td2l0aC1pbXBsaWNpdC1mcm9tLWsKIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAw
Mi5odG1sIFsgUGFzcyBDcmFzaCBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZHJhZy1hbmQt
ZHJvcC5odG1sIFsgUGFzcyBDcmFzaCBdCiBmYXN0L2Zvcm1zL251bWJlci9udW1iZXItbDEwbi1p
bnB1dC5odG1sIFsgUGFzcyBDcmFzaCBdCi1mYXN0L2Zvcm1zL251bWJlci9udW1iZXItc3BpbmJ1
dHRvbi1pbi1tdWx0aS1jb2x1bW4uaHRtbCBbIFBhc3MgQ3Jhc2ggXQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK2Zhc3QvZm9ybXMvbnVtYmVyL251bWJlci1zcGluYnV0dG9uLWluLW11bHRp
LWNvbHVtbi5odG1sIFsgUGFzcyBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3Jv
dXBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMwNjAxZDJk
Yzk0ODRiYzYyZTc4N2EwZTZkMTE2NjExYjM4MDljYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIGFu
ZCB1c2UgYSBiYXNpYyBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBhbmQgdXNlIG1hbnkgR1BV
QmluZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21wdXRlIHBhc3MuCi1QQVNTIENyZWF0ZSBhbmQgYWNj
ZXNzIGEgdW5pZm9ybS1idWZmZXIgaW4gYSBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBhbmQg
YWNjZXNzIGEgc2FtcGxlZCB0ZXh0dXJlIGluIGEgR1BVQmluZEdyb3VwLgotUEFTUyBDcmVhdGUg
YW5kIHVzZSBtdWx0aXBsZSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGRpc3BhdGNoLgotUEFT
UyBCaW5kIGEgc2luZ2xlIEdQVUJ1ZmZlciB3aXRoIGRpZmZlcmVudCBvZmZzZXRzIGluIGRpZmZl
cmVudCBHUFVCaW5kR3JvdXBzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5k
LWdyb3Vwcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NzcxMDI1MTEwMmRkZTdkNGE5NmM5YzI2Y2UzZDY4
MDRhZTE0NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0
NDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxl
PkNyZWF0ZSBhIGJhc2ljIEdQVUJpbmRHcm91cC48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9
IHt9OwotCi1jb25zdCBiYXNpY0J1ZmZlclNoYWRlciA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEp
XQotY29tcHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0
ZXIodTApKQotewotICAgICsrYnVmZmVyWzBdOwotfQotYDsKLQotbGV0IGJhc2ljUGlwZWxpbmU7
Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJpbmRHcm91cC4iXSA9IGFzeW5j
IGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyTGF5b3V0QmluZGluZyA9IHsKLSAgICAgICAg
YmluZGluZzogMCwKLSAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwK
LSAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgIH07Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFti
dWZmZXJMYXlvdXRCaW5kaW5nXSB9KTsKLQotICAgIGNvbnN0IGJhc2ljQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHsg
YnVmZmVyOiBiYXNpY0J1ZmZlciwgc2l6ZTogNCB9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7IGJpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nIH07Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsgbGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBwaXBl
bGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3QgYmFzaWNTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogYmFzaWNCdWZmZXJTaGFkZXIgfSk7
Ci0gICAgYmFzaWNQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAg
ICAgICBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAg
ICAgICAgICAgIG1vZHVsZTogYmFzaWNTaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBv
aW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IHBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKGJhc2ljUGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEp
OwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3
IEludDMyQXJyYXkoYXdhaXQgYmFzaWNCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIGJhc2lj
QnVmZmVyLnVubWFwKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCAxLCAiU3RvcmFn
ZSBidWZmZXIgYmluZGluZyB3cml0dGVuIHRvIHN1Y2Nlc3NmdWxseS4iKTsKLX07Ci0KLXRlc3Rz
WyJDcmVhdGUgYW5kIHVzZSBtYW55IEdQVUJpbmRHcm91cHMgaW4gYSBzaW5nbGUgY29tcHV0ZSBw
YXNzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXJMYXlvdXRCaW5kaW5n
ID0gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJT
dGFnZS5DT01QVVRFLAotICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
eyBiaW5kaW5nczogW2J1ZmZlckxheW91dEJpbmRpbmddIH0pOwotCi0gICAgY29uc3QgYmFzaWNC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0geyBidWZmZXI6IGJhc2ljQnVmZmVyLCBzaXplOiA0IH07Ci0gICAgY29uc3Qg
YmluZEdyb3VwQmluZGluZyA9IHsgYmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmcg
fTsKLQotICAgIGNvbnN0IG51bUdyb3VwcyA9IDEwMDA7Ci0gICAgbGV0IGJpbmRHcm91cHMgPSBu
ZXcgQXJyYXkobnVtR3JvdXBzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUdyb3Vwczsg
KytpKQotICAgICAgICBiaW5kR3JvdXBzW2ldID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7IGxh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddIH0pOwot
Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBh
c3MoKTsKLQotICAgIGxldCBqID0gMDsKLSAgICBmb3IgKDsgaiA8IG51bUdyb3VwczsgKytqKSB7
Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGJhc2ljUGlwZWxpbmUpOwotICAgICAg
ICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vwc1tqXSk7Ci0gICAgICAgIHBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIH0KLQotICAgIHBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQgYmFz
aWNCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIGJhc2ljQnVmZmVyLnVubWFwKCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCBqLCAiU3RvcmFnZSBidWZmZXIgYWNjZXNzZWQgc3Vj
Y2Vzc2Z1bGx5IHRocm91Z2ggbXVsdGlwbGUgYmluZCBncm91cHMuIik7Ci19OwotCi1jb25zdCB1
bmlmb3JtQnVmZmVyU2hhZGVyID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZv
aWQgY29tcHV0ZV9tYWluKGNvbnN0YW50IGludFtdIHVuaWZvcm1zIDogcmVnaXN0ZXIoYjApLCBk
ZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0ZXIodTEpKQotewotICAgIGJ1ZmZlclswXSArPSB1
bmlmb3Jtc1swXTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIGFjY2VzcyBhIHVuaWZvcm0t
YnVmZmVyIGluIGEgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25z
dCBbdW5pZm9ybUJ1ZmZlciwgd3JpdGVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVy
TWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0gICAg
bmV3IEludDMyQXJyYXkod3JpdGVBcnJheUJ1ZmZlcikuc2V0KFs0Ml0pOwotICAgIHVuaWZvcm1C
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHN0b3JhZ2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAg
ICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5D
T01QVVRFLAotICAgICAgICAgICAgdHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9LCB7
Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hh
ZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAg
ICAgICAgfV0KLSAgICB9KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwKLSAgICAgICAgYmlu
ZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6
IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0gICAgICAgICAgICAg
ICAgc2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5k
aW5nOiAxLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6
IHN0b3JhZ2VCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQot
ICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XSB9KTsKLQotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiB1bmlmb3JtQnVmZmVyU2hhZGVyIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmUg
PSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dCwKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IHNo
YWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxp
bmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7
Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQgc3RvcmFnZUJ1ZmZl
ci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4g
dG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotY29uc3Qgc2FtcGxlZFRleHR1cmVTaGFkZXIgPSBg
Ci1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oVGV4dHVy
ZTJEPHVpbnQ+IGlucHV0VGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciBpbnB1dFNhbXBs
ZXIgOiByZWdpc3RlcihzMSksIGRldmljZSB1aW50W10gb3V0cHV0IDogcmVnaXN0ZXIodTIpKQot
ewotICAgIG91dHB1dFswXSA9IFNhbXBsZShpbnB1dFRleHR1cmUsIGlucHV0U2FtcGxlciwgZmxv
YXQyKDAsIDApKTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIGFjY2VzcyBhIHNhbXBsZWQg
dGV4dHVyZSBpbiBhIEdQVUJpbmRHcm91cC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29u
c3QgW3RleHR1cmVEYXRhQnVmZmVyLCB0ZXh0dXJlQXJyYXlCdWZmZXJdID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB9
KTsKLSAgICBuZXcgVWludDMyQXJyYXkodGV4dHVyZUFycmF5QnVmZmVyKS5zZXQoWzQyXSk7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVTaXplID0g
eyB3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSB9OwotICAgIGNvbnN0IHRleHR1cmUgPSBk
ZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IHRleHR1cmVTaXplLAotICAgICAg
ICBmb3JtYXQ6ICJyZ2JhOHVpbnQiLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNB
TVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9KTsKLQotICAgIGNvbnN0IG91
dHB1dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAg
ICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZp
c2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAic2Ft
cGxlZC10ZXh0dXJlIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAotICAg
ICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAg
IHR5cGU6ICJzYW1wbGVyIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAyLAot
ICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAg
ICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBi
aW5kR3JvdXBMYXlvdXQsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGlu
ZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkK
LSAgICAgICAgfSwgewotICAgICAgICAgICAgYmluZGluZzogMSwKLSAgICAgICAgICAgIHJlc291
cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7fSkKLSAgICAgICAgfSwgewotICAgICAgICAgICAg
YmluZGluZzogMiwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyOiBvdXRwdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAg
fQotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNhbXBsZWRUZXh0dXJlU2hhZGVyIH0pOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmlu
ZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTog
c2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0
dXJlKHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwKLSAgICAgICAgcm93UGl0
Y2g6IDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAgfSwgeyB0ZXh0dXJlOiB0ZXh0dXJl
IH0sIHRleHR1cmVTaXplKTsKLQotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29k
ZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVs
aW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBw
YXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7
Ci0KLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
XSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IFVpbnQzMkFycmF5KGF3YWl0IG91dHB1dEJ1
ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCA0MiwgIkNvcnJlY3QgdmFsdWUgc2FtcGxlZCBmcm9tIGEg
Ym91bmQgMkQgdGV4dHVyZS4iKTsKLX07Ci0KLWNvbnN0IGNvbWJvU2hhZGVyID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZV9tYWluKAotICAgIFRleHR1cmUy
RDx1aW50PiBpbnB1dFRleHR1cmUgOiByZWdpc3Rlcih0MCwgc3BhY2UwKSwgCi0gICAgc2FtcGxl
ciBpbnB1dFNhbXBsZXIgOiByZWdpc3RlcihzMCwgc3BhY2UxKSwgCi0gICAgY29uc3RhbnQgdWlu
dFtdIGlucHV0IDogcmVnaXN0ZXIoYjAsIHNwYWNlMiksIAotICAgIGRldmljZSB1aW50W10gb3V0
cHV0IDogcmVnaXN0ZXIodTAsIHNwYWNlMykpCi17Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0g
KyBTYW1wbGUoaW5wdXRUZXh0dXJlLCBpbnB1dFNhbXBsZXIsIGZsb2F0MigwLCAwKSk7Ci19Ci1g
OwotCi10ZXN0c1siQ3JlYXRlIGFuZCB1c2UgbXVsdGlwbGUgR1BVQmluZEdyb3VwcyBpbiBhIHNp
bmdsZSBkaXNwYXRjaC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgW3RleHR1cmVE
YXRhQnVmZmVyLCB0ZXh0dXJlQXJyYXlCdWZmZXJdID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBl
ZCh7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB9KTsKLSAgICBuZXcg
VWludDMyQXJyYXkodGV4dHVyZUFycmF5QnVmZmVyKS5zZXQoWzE3XSk7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVTaXplID0geyB3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSB9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRl
VGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IHRleHR1cmVTaXplLAotICAgICAgICBmb3JtYXQ6ICJy
Z2JhOHVpbnQiLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVU
ZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9KTsKLQotICAgIGNvbnN0IFtpbnB1dEJ1ZmZlciwg
aW5wdXRBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0gICAgbmV3IFVpbnQzMkFycmF5KGlu
cHV0QXJyYXlCdWZmZXIpLnNldChbMjVdKTsKLSAgICBpbnB1dEJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7
Ci0KLSAgICBjb25zdCBiZ2wwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAg
ICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZp
c2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAic2Ft
cGxlZC10ZXh0dXJlIgotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnbDEgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAg
ICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2Uu
Q09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVyIgotICAgICAgICB9XQotICAgIH0p
OwotICAgIGNvbnN0IGJnbDIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAg
ICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlz
aWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJ1bmlm
b3JtLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZ2wzID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAg
ICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNP
TVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgICAgIH1dCi0g
ICAgfSkKLQotICAgIGNvbnN0IGJnMCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAg
ICBsYXlvdXQ6IGJnbDAsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGlu
ZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkK
LSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzEgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wxLAotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAg
ICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTogZGV2aWNlLmNyZWF0ZVNh
bXBsZXIoe30pCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmcyID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmdsMiwKLSAgICAgICAgYmluZGluZ3M6
IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAg
ICAgICAgICAgICAgICBidWZmZXI6IGlucHV0QnVmZmVyLAotICAgICAgICAgICAgICAgIHNpemU6
IDQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzMgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wzLAotICAgICAgICBi
aW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJj
ZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogb3V0cHV0QnVmZmVyLAotICAgICAgICAgICAg
ICAgIHNpemU6IDQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV0KLSAgICB9KTsKLQotICAgIGNv
bnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBjb21i
b1NoYWRlciB9KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiZ2wwLCBiZ2wxLCBiZ2wyLCBiZ2wzXSB9
KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7
Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTog
ewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBv
aW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoewotICAgICAgICBidWZmZXI6IHRleHR1cmVEYXRh
QnVmZmVyLAotICAgICAgICByb3dQaXRjaDogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAg
ICB9LCB7IHRleHR1cmU6IHRleHR1cmUgfSwgdGV4dHVyZVNpemUpOwotCi0gICAgY29uc3QgcGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiZzApOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgxLCBiZzEpOwotICAgIHBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgyLCBiZzIpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgzLCBiZzMpOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIHBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgVWludDMy
QXJyYXkoYXdhaXQgb3V0cHV0QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBvdXRwdXRCdWZm
ZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiQ29ycmVjdCB2
YWx1ZSBzYW1wbGVkIGZyb20gYSBib3VuZCAyRCB0ZXh0dXJlLiIpOwotfTsKLQotdGVzdHNbIkJp
bmQgYSBzaW5nbGUgR1BVQnVmZmVyIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4gZGlmZmVyZW50
IEdQVUJpbmRHcm91cHMiXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgbnVtSW5wdXRz
ID0gNDsKLSAgICBjb25zdCBbdW5pZm9ybUJ1ZmZlciwgd3JpdGVBcnJheUJ1ZmZlcl0gPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCAqIG51bUlucHV0cywgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfSk7Ci0gICAgbmV3IEludDMyQXJyYXkod3JpdGVBcnJheUJ1ZmZl
cikuc2V0KFsxLCAyLCAzLCAzNl0pOwotICAgIHVuaWZvcm1CdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IHN0b3JhZ2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsK
LQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAg
ICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAg
dHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5n
OiAxLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAg
ICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KTsKLQot
ICAgIGxldCBiaW5kR3JvdXBzID0gbmV3IEFycmF5KG51bUlucHV0cyk7Ci0gICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBudW1JbnB1dHM7ICsraSkgewotICAgICAgICBiaW5kR3JvdXBzW2ldID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91
dCwKLSAgICAgICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IDAs
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVy
OiB1bmlmb3JtQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGkgKiBudW1JbnB1
dHMsCi0gICAgICAgICAgICAgICAgICAgIHNpemU6IDQKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgYmluZGluZzogMSwKLSAgICAgICAgICAgICAg
ICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgICAgICBidWZmZXI6IHN0b3JhZ2VCdWZmZXIs
Ci0gICAgICAgICAgICAgICAgICAgIHNpemU6IDQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9XQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1CdWZmZXJTaGFkZXIgfSk7Ci0KLSAgICBjb25zdCBw
aXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1v
ZHVsZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFp
biIKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShwaXBlbGluZSk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JbnB1dHM7ICsraSkgewot
ICAgICAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vwc1tpXSk7Ci0gICAg
ICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIH0KLSAgICBwYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rl
ci5maW5pc2goKV0pOwotCi0gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBJbnQzMkFycmF5KGF3YWl0
IHN0b3JhZ2VCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIHN0b3JhZ2VCdWZmZXIudW5tYXAo
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiU3RvcmFnZSBidWZmZXIgYmlu
ZGluZyB3cml0dGVuIHRvIHN1Y2Nlc3NmdWxseS4iKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERldmlj
ZSh0ZXN0cyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1
ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYg
c3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGVu
ZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1ZmQ2MGI4ZDViNmQ2ZWM2Yzk0YWIzNzgwYjIwY2RmYjUzM2MyNGJlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVu
ZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BV
IEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ildl
YkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5Q
YXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2Fu
dmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNv
ZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQp
IDogU1ZfUG9zaXRpb24gewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgc3dpdGNoICh2aWQpIHsK
LSAgICBjYXNlIDA6Ci0gICAgICAgIHJlc3VsdCA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgcmVzdWx0ID0gZmxvYXQ0KC0xLCAtMSwg
MCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgcmVzdWx0ID0gZmxv
YXQ0KDEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXN1bHQgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDAsIDEsIDEsIDEpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2lj
U3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5v
bi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLQotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3sKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6
IHsKLSAgICAgICAgICAgIHNyY0ZhY3RvcjogImJsZW5kLWNvbG9yIiwKLSAgICAgICAgICAgIGRz
dEZhY3RvcjogImJsZW5kLWNvbG9yIiwKLSAgICAgICAgICAgIG9wZXJhdGlvbjogImFkZCIKLSAg
ICAgICAgfSwKLSAgICAgICAgY29sb3JCbGVuZDogewotICAgICAgICAgICAgc3JjRmFjdG9yOiAi
YmxlbmQtY29sb3IiLAotICAgICAgICAgICAgZHN0RmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAg
ICAgICAgICAgb3BlcmF0aW9uOiAiYWRkIgotICAgICAgICB9LAotICAgICAgICB3cml0ZU1hc2s6
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgfV07Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0
ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAg
IGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21t
YW5kRW5jb2Rlcik7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmxlbmRDb2xvcih7IHI6IDAsIGc6IDEs
IGI6IDAsIGE6IDEgfSk7Ci0gICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlw
ZWxpbmUpOwotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0KLSAgICBxdWV1
ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9ibGVuZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBp
cyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDZhMGE3NTZkOGNjMGJjZTE1M2ExOWZmNTEyZTVj
ZTNjNzEzYzJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTAwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMu
Ij4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVk
Lmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3Jl
ZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1j
b25zdCBwb3NpdGlvbkF0dHJpYnV0ZU51bSA9IDA7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1z
dHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0g
ICAgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2
ZXJ0ZXhfbWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoJHtwb3NpdGlvbkF0dHJpYnV0
ZU51bX0pKSB7Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMCwgMC41LCAwLCAwLjUpOwotICAgIHJldHVy
biB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3Ig
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0KLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAg
ICAgICBhbHBoYUJsZW5kOiB7IGRzdEZhY3RvcjogIm9uZSIgfSwKLSAgICAgICAgY29sb3JCbGVu
ZDogeyBkc3RGYWN0b3I6ICJvbmUiIH0KLSAgICB9XTsKLQotICAgIGNvbnN0IHZlcnRleElucHV0
RGVzY3JpcHRvciA9IHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2
ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgICAg
IGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAg
ICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJpYnV0ZU51bQotICAgICAg
ICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVh
dGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBjb2xvclN0YXRlcywgbnVsbCwg
dmVydGV4SW5wdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleERhdGEgPSBuZXcgRmxv
YXQzMkFycmF5KFsKLSAgICAgICAgLTEsIDEsIDAsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwK
LSAgICAgICAgMSwgMSwgMCwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTog
dmVydGV4RGF0YS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0sIHZl
cnRleERhdGEuYnVmZmVyKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hh
aW4oeyBkZXZpY2U6IGRldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSIgfSk7Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3Vy
cmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJjbGVh
ciIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyQ29sb3I6IHsgcjog
MCwgZzogMCwgYjogMCwgYTogMCB9Ci0gICAgfTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIg
PSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbY29s
b3JBdHRhY2htZW50XSB9KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7
Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBd
KTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNv
ZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBS
ZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMi
KTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJl
LXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTRjMTllZWU0NmRkZTkyYmU2YTljZmQ1MDRiMGNhNDE3NzI3ODhlZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1j
b21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IHNob3dzIGEgZ3JlZW4gbWlwIGNoYWluIG9uIGEgcmVkIGJhY2tncm91bmQuPC9wPgotPGNhbnZh
cyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5NaXBDaGFp
bk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiZjY0MTdlZGRhYThlNzk2ZTE3
OTU5ZDZkMTA3MzdjNTYyOWU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRl
eHR1cmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5CbGl0dGluZyBUZXh0dXJlIFRvIFRl
eHR1cmU8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJCbGl0IG9wZXJhdGlv
bnMgcG9wdWxhdGUgYSB0ZXh0dXJlIGNvcnJlY3RseSAoYWxsIG1pcCBsZXZlbHMpLiI+Ci08bGlu
ayByZWw9Im1hdGNoIiBocmVmPSJibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBl
Y3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBzaG93cyBhIGdyZWVu
IG1pcCBjaGFpbiBvbiBhIHJlZCBiYWNrZ3JvdW5kLjwvcD4KLTxjYW52YXMgd2lkdGg9IjUxMiIg
aGVpZ2h0PSI1MTIiPjwvY2FudmFzPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1hc3luYyBmdW5jdGlvbiBsb2FkVGV4
dHVyZUZyb21DYW52YXMyZChkZXZpY2UsIGNhbnZhczJkKSB7Ci0gICAgY29uc3QgdGV4dHVyZVNp
emUgPSB7Ci0gICAgICAgIHdpZHRoOiAgY2FudmFzMmQud2lkdGgsCi0gICAgICAgIGhlaWdodDog
Y2FudmFzMmQuaGVpZ2h0LAotICAgICAgICBkZXB0aDogIDIKLSAgICB9OwotCi0gICAgLy8gTWlw
bWFwIGNvdW50Ci0gICAgbGV0IG1heFJlc29sdXRpb24gPSBNYXRoLm1heChjYW52YXMyZC53aWR0
aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBsZXQgbWlwTGV2ZWxDb3VudCA9IE1hdGguY2VpbChN
YXRoLmxvZzIobWF4UmVzb2x1dGlvbikpOwotICAgIGlmIChtaXBMZXZlbENvdW50IDwgMSkgbWlw
TGV2ZWxDb3VudCA9IDE7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHsKLSAgICAg
ICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIG1pcExldmVsQ291bnQ6IG1pcExldmVsQ291
bnQsCi0gICAgICAgIHNhbXBsZUNvdW50OiAxLAotICAgICAgICBkaW1lbnNpb246ICIyZCIsCi0g
ICAgICAgIGZvcm1hdDogInJnYmE4dW5vcm0iLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVz
YWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdl
LlNBTVBMRUQgCi0gICAgfTsKLQotICAgIC8vIENyZWF0ZSB0ZXh0dXJlIGFuZCBhbHNvIGFkZCB0
aGUgZGVzY3JpcHRvcgotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0
ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgdGV4dHVyZVNpemUuZGVwdGggPSAxOwotICAgIHRleHR1
cmUuZGVzY3JpcHRvciA9IHRleHR1cmVEZXNjcmlwdG9yOwotCi0gICAgLy8gVGV4dHVyZSBkYXRh
IAotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0gICAg
Y29uc3QgaW1hZ2VEYXRhID0gY29udGV4dDJkLmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMyZC53
aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVz
Y3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLAotICAgICAg
ICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEUKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdGV4dHVyZUFy
cmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHRleHR1cmVXcml0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZUFycmF5QnVm
ZmVyKTsKLSAgICB0ZXh0dXJlV3JpdGVBcnJheS5zZXQoaW1hZ2VEYXRhLmRhdGEpOwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBkYXRhQ29weVZpZXcgPSB7Ci0g
ICAgICAgIGJ1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsCi0gICAgICAgIG9mZnNldDogMCwKLSAg
ICAgICAgcm93UGl0Y2g6IGNhbnZhczJkLndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6
IGNhbnZhczJkLndpZHRoICogY2FudmFzMmQuaGVpZ2h0ICogNAotICAgIH07Ci0gICAgY29uc3Qg
dGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlLAotICAgICAgICBt
aXBMZXZlbDogMCwKLSAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgb3JpZ2luOiB7IHg6
IDAsIHk6IDAsIHo6IDAgfQotICAgIH07Ci0KLSAgICBjb25zdCBibGl0Q29tbWFuZEVuY29kZXIg
PSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBibGl0Q29tbWFuZEVuY29kZXIu
Y29weUJ1ZmZlclRvVGV4dHVyZShkYXRhQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4dHVy
ZVNpemUpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbYmxpdENvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpXSk7Ci0KLSAgICByZXR1cm4gdGV4dHVyZTsKLX0KLQotYXN5bmMgZnVuY3Rpb24g
dGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBjYW52YXMyZCAgPSBhd2FpdCBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJjYW52YXMiKTsKLSAgICBjb25zdCBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRD
b250ZXh0KCcyZCcpOwotCi0gICAgLy8gdGV4dHVyZUEgKGxheWVyIDAsIG1pcCAwKTogR3JlZW4K
LSAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250ZXh0
MmQuZmlsbFJlY3QoMCwgMCwgY2FudmFzMmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0gICAg
Y29uc3QgdGV4dHVyZUEgPSBhd2FpdCBsb2FkVGV4dHVyZUZyb21DYW52YXMyZChkZXZpY2UsIGNh
bnZhczJkKTsKLQotICAgIC8vIHRleHR1cmVCIChsYXllciAwLCBtaXAgMCk6IFJlZAotICAgIGNv
bnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDI1NSwgMCwgMCknOwotICAgIGNvbnRleHQyZC5maWxs
UmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBjb25zdCB0
ZXh0dXJlQiA9IGF3YWl0IGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFzMmQp
OwotCi0gICAgLy8gQ2xlYW4gY2FudmFzIHRvIGJsdWUKLSAgICBjb250ZXh0MmQuZmlsbFN0eWxl
ID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAgICBjb250ZXh0MmQuZmlsbFJlY3QoMCwgMCwgY2FudmFz
MmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0KLSAgICAvLyBUZXN0IGNvcHlUZXh0dXJlVG9U
ZXh0dXJlCi0KLSAgICBsZXQgc2l6ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVBLmRlc2Ny
aXB0b3Iuc2l6ZSk7Ci0gICAgbGV0IGJsaXRDb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOwotICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGV4dHVyZUEuZGVzY3Jp
cHRvci5taXBMZXZlbENvdW50OyArK2kpIHsKLSAgICAgICAgc2l6ZS53aWR0aCAgPSBNYXRoLm1h
eChNYXRoLmZsb29yKHNpemUud2lkdGggLyAyKSwgMSk7Ci0gICAgICAgIHNpemUuaGVpZ2h0ID0g
TWF0aC5tYXgoTWF0aC5mbG9vcihzaXplLmhlaWdodCAvIDIpLCAxKTsKLQotICAgICAgICBsZXQg
c3JjVGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZUEsCi0g
ICAgICAgICAgICBtaXBMZXZlbDogMCwKLSAgICAgICAgICAgIGFycmF5TGF5ZXI6IDAsCi0gICAg
ICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAgICAg
IGxldCBkc3RUZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJl
QSwKLSAgICAgICAgICAgIG1pcExldmVsOiBpLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMSwK
LSAgICAgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0KLSAgICAgICAgfTsKLSAg
ICAgICAgLy8gUG9wdWxhdGUgdGV4dHVyZUEgKGxheWVyIDEsIG1pcCBpKQotICAgICAgICBibGl0
Q29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb1RleHR1cmUoc3JjVGV4dHVyZUNvcHlWaWV3LCBk
c3RUZXh0dXJlQ29weVZpZXcsIHNpemUpOwotCi0gICAgICAgIHNyY1RleHR1cmVDb3B5VmlldyA9
IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVBLAotICAgICAgICAgICAgbWlwTGV2ZWw6
IGksCi0gICAgICAgICAgICBhcnJheUxheWVyOiAxLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6
IDAsIHk6IDAsIHo6IDAgfQotICAgICAgICB9OwotICAgICAgICBkc3RUZXh0dXJlQ29weVZpZXcg
PSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQiwKLSAgICAgICAgICAgIG1pcExldmVs
OiAwLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgICAgIG9yaWdpbjogeyB4
OiAwLCB5OiBzaXplLmhlaWdodCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAgICAgIC8vIFBvcHVs
YXRlIHRleHR1cmVCIChsYXllciAwLCBtaXAgMCkgd2l0aCB0ZXh0dXJlQSAobGF5ZXIgMSwgbWlw
IGkpCi0gICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZShzcmNU
ZXh0dXJlQ29weVZpZXcsIGRzdFRleHR1cmVDb3B5Vmlldywgc2l6ZSk7Ci0gICAgfQotCi0gICAg
Ly8gUmVuZGVyIHRleHR1cmVCIGludG8gY2FudmFzMmQKLQotICAgIGNvbnN0IGltYWdlRGF0YUxl
bmd0aEluQnl0ZXMgPSBjYW52YXMyZC53aWR0aCAqIGNhbnZhczJkLmhlaWdodCAqIDQ7Ci0gICAg
Y29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhTGVuZ3Ro
SW5CeXRlcywKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1JFQUQKLSAgICB9OwotICAgIGNvbnN0IGJ1ZmZlckEgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcg
PSB7Ci0gICAgICAgIGJ1ZmZlcjogYnVmZmVyQSwKLSAgICAgICAgcm93UGl0Y2g6IGNhbnZhczJk
LndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IGNhbnZhczJkLndpZHRoICogY2FudmFz
MmQuaGVpZ2h0ICogNAotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHlWaWV3ID0gewotICAg
ICAgICB0ZXh0dXJlOiB0ZXh0dXJlQgotICAgIH07Ci0gICAgYmxpdENvbW1hbmRFbmNvZGVyLmNv
cHlUZXh0dXJlVG9CdWZmZXIodGV4dHVyZUNvcHlWaWV3LCBidWZmZXJDb3B5VmlldywgdGV4dHVy
ZUEuZGVzY3JpcHRvci5zaXplKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbYmxp
dENvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCBhYiA9IGF3YWl0IGJ1ZmZl
ckEubWFwUmVhZEFzeW5jKCkKLSAgICBjb25zdCBhcnJheSA9IG5ldyBVaW50OENsYW1wZWRBcnJh
eShhYik7Ci0gICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJheSwg
Y2FudmFzMmQud2lkdGgsIGNhbnZhczJkLmhlaWdodCk7Ci0KLSAgICBjb250ZXh0MmQucHV0SW1h
Z2VEYXRhKHJlc3VsdEltYWdlRGF0YSwgMCwgMCk7Ci0KLSAgICBidWZmZXJBLmRlc3Ryb3koKTsK
LX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3Qo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbihl
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QgY2Fu
dmFzMmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLSAgICBkcmF3R3JlZW5N
aXBDaGFpbk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzMmQpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwv
c2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29t
bWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNzk2YTM3NTdlNTQyNWRiMDhiMTQzMmFmZWVjNmY0
MTNjZDlkYjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5CYXNpYyBCbGl0dGluZzwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
IkJsaXQgb3BlcmF0aW9ucyBjb3B5IGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNo
IiBocmVmPSJibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUg
Y2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IGNhbnZhczJkID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFn
ZSgpIHsKLSAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGltYWdlLnNyYyA9ICJy
ZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZyI7Ci0gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAg
ICAgICAgIHRlc3QoZGV2aWNlLCBpbWFnZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhczJkKTsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1hc3luYyBmdW5jdGlv
biB0ZXN0KGRldmljZSwgaW1hZ2UpIHsKLSAgICBjYW52YXMyZC53aWR0aCA9IGltYWdlLndpZHRo
OwotICAgIGNhbnZhczJkLmhlaWdodCA9IGltYWdlLmhlaWdodDsKLSAgICBjb25zdCBjb250ZXh0
MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHQyZC5kcmF3SW1hZ2Uo
aW1hZ2UsIDAsIDApOwotCi0gICAgY29uc3QgaW1hZ2VEYXRhID0gY29udGV4dDJkLmdldEltYWdl
RGF0YSgwLCAwLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0KTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5ndGgs
Ci0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQwotICAgIH07Ci0gICAgYnVm
ZmVyQSA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgYnVmZmVyRGVzY3JpcHRvciwgaW1h
Z2VEYXRhLmRhdGEuYnVmZmVyKTsKLQotICAgIGJ1ZmZlckRlc2NyaXB0b3IudXNhZ2UgfD0gR1BV
QnVmZmVyVXNhZ2UuQ09QWV9EU1Q7Ci0gICAgY29uc3QgYnVmZmVyQiA9IGRldmljZS5jcmVhdGVC
dWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyVmlld0IgPSB7Ci0gICAg
ICAgIGJ1ZmZlcjogYnVmZmVyQiwKLSAgICAgICAgcm93UGl0Y2g6IGltYWdlLndpZHRoICogNCwK
LSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9OwotCi0gICAgY29uc3QgdGV4dHVyZVNpemUg
PSB7Ci0gICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBpbWFnZS5o
ZWlnaHQsCi0gICAgICAgIGRlcHRoOiAxCi0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlRGVzY3Jp
cHRvciA9IHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDogInJn
YmE4dW5vcm0iLAotICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDIHwgR1BV
VGV4dHVyZVVzYWdlLkNPUFlfRFNUCi0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQSA9IGRldmlj
ZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmll
d0EgPSB7IHRleHR1cmU6IHRleHR1cmVBIH07Ci0KLSAgICBjb25zdCB0ZXh0dXJlQiA9IGRldmlj
ZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmll
d0IgPSB7IHRleHR1cmU6IHRleHR1cmVCIH07Ci0KLSAgICBjb25zdCByZWFkQnVmZmVyRGVzY3Jp
cHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCwKLSAgICAg
ICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JF
QUQKLSAgICB9OwotICAgIGNvbnN0IHJlYWRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJl
YWRCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZWFkQnVmZmVyVmlldyA9IHsKLSAgICAg
ICAgYnVmZmVyOiByZWFkQnVmZmVyLAotICAgICAgICByb3dQaXRjaDogaW1hZ2Uud2lkdGggKiA0
LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH07Ci0KLSAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1hbmRFbmNvZGVy
LmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAwLCBidWZmZXJCLCAwLCBpbWFnZURhdGEuZGF0
YS5ieXRlTGVuZ3RoKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1
ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1cmVTaXplKTsKLSAgICBjb21tYW5kRW5jb2Rl
ci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1cmVT
aXplKTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZSh0ZXh0dXJlVmll
d0EsIHRleHR1cmVWaWV3QiwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlU
ZXh0dXJlVG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywgdGV4dHVyZVNpemUp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCld
KTsKLSAgICBidWZmZXJBLmRlc3Ryb3koKTsKLSAgICBidWZmZXJCLmRlc3Ryb3koKTsKLSAgICB0
ZXh0dXJlQS5kZXN0cm95KCk7Ci0gICAgdGV4dHVyZUIuZGVzdHJveSgpOwotCi0gICAgY29uc3Qg
cmVzdWx0Q29udGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpLmdldENvbnRl
eHQoJzJkJyk7Ci0KLSAgICBhd2FpdCByZWFkQnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oYWIg
PT4gewotICAgICAgICBjb25zdCBhcnJheSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhYik7Ci0g
ICAgICAgIGNvbnN0IHJlc3VsdEltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEoYXJyYXksIGltYWdl
LndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgICAgIHJlc3VsdENvbnRleHQucHV0SW1hZ2VE
YXRhKHJlc3VsdEltYWdlRGF0YSwgMCwgMCk7Ci0KLSAgICAgICAgcmVhZEJ1ZmZlci5kZXN0cm95
KCk7Ci0gICAgfSk7Ci19Ci0KLWxvYWRJbWFnZSgpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJh
Y2VzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBmNWE5
YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5k
LWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBS
ZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMi
KTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGI1YzM4ZTY0Y2RhMzFkZWEzZjJjZWM0Yzc4
MGViNTEwMDE0YjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3Jl
ZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJidWZmZXItY29tbWFuZC1idWZm
ZXItcmFjZXMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cg
aXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0Ci17
Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNvbG9yIDog
YXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihmbG9hdDIg
eHkgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyByZ2IgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0
ZXhPdXQgdk91dDsKLSAgICB2T3V0LnBvc2l0aW9uID0gZmxvYXQ0KHh5LCAwLCAxKTsKLSAgICB2
T3V0LmNvbG9yID0gZmxvYXQ0KHJnYiwgMSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xvcjsKLX0KLWAKLQotZnVuY3Rpb24gY3JlYXRl
VmVydGV4SW5wdXREZXNjcmlwdG9yKCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGluZGV4Rm9y
bWF0OiAidWludDMyIiwKLSAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgIHN0
cmlkZTogNCAqIDIsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAg
ICAgZm9ybWF0OiAiZmxvYXQyIiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMAot
ICAgICAgICAgICAgfV0KLSAgICAgICAgfSwgewotICAgICAgICAgICAgc3RyaWRlOiA0ICogMywK
LSAgICAgICAgICAgIHN0ZXBNb2RlOiAiaW5zdGFuY2UiLAotICAgICAgICAgICAgYXR0cmlidXRl
U2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0MyIsCi0gICAgICAgICAgICAg
ICAgc2hhZGVyTG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAgfQot
fQotCi1mdW5jdGlvbiBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCB2ZXJ0aWNlcykg
ewotICAgIGNvbnN0IHZlcnRleEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlcykKLSAg
ICByZXR1cm4gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHZlcnRleEFycmF5
LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4QXJyYXku
YnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlw
ZWxpbmUsIGF0dGFjaG1lbnQsIHZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXIpIHsKLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNv
bnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFj
aG1lbnRzOiBbYXR0YWNobWVudF0gfSk7Ci0gICAgZW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAs
IFt2ZXJ0ZXhCdWZmZXIsIGNvbG9yQnVmZmVyXSwgWzAsIDBdKTsKLSAgICBlbmNvZGVyLnNldFBp
cGVsaW5lKHBpcGVsaW5lKTsKLSAgICBlbmNvZGVyLmRyYXcoMywgMSwgMCwgMCk7Ci0gICAgZW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5j
b2Rlci5maW5pc2goKV0pOwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25z
dCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAg
Ly8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7
Ci0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXREZXNj
cmlwdG9yKCk7Ci0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRl
ck1vZHVsZSwgZGV2aWNlLCBudWxsLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgdXBwZXJMZWZ0QnVmZmVyID0gY3JlYXRlQW5kU2V0VmVydGV4QnVmZmVyKGRldmlj
ZSwgWy0xLCAxLCAtMSwgLTEsIDAsIDFdKTsKLSAgICBjb25zdCBtaWRkbGVCdWZmZXIgPSBjcmVh
dGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBbMCwgMSwgLTEsIC0xLCAxLCAtMV0pOwotICAg
IGNvbnN0IHVwcGVyUmlnaHRCdWZmZXIgPSBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNl
LCBbMCwgMSwgMSwgMSwgMSwgLTFdKTsKLQotICAgIGNvbnN0IGdyZWVuID0gWzAsIDEsIDBdOwot
ICAgIGNvbnN0IGJsdWUgPSBbMCwgMCwgMV07Ci0gICAgY29uc3QgZ3JlZW5BcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoZ3JlZW4pOwotICAgIGNvbnN0IGJsdWVBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkoYmx1ZSk7Ci0KLSAgICBjb25zdCBjb2xvckJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRh
KGRldmljZSwgeyBzaXplOiBncmVlbkFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSwgZ3JlZW5BcnJheS5idWZm
ZXIpOwotCi0gICAgY29uc3QgYXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dh
cENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAg
bG9hZE9wOiAibG9hZCIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFy
Q29sb3I6IHsgcjogMSwgZzogMCwgYjogMCwgYTogMSB9Ci0gICAgfTsKLQotICAgIC8qIG1hcFdy
aXRlQXN5bmMgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgR1BVIGNvbW1hbmRzIGFyZSBjb21wbGV0ZSwg
c28gdHJpYW5nbGUgc2hvdWxkIGJlIGdyZWVuLiAqLwotICAgIGRyYXdBbmRTdWJtaXRDb21tYW5k
cyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCB1cHBlckxlZnRCdWZmZXIsIGNvbG9yQnVm
ZmVyKTsKLSAgICBhd2FpdCBjb2xvckJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbihhYiA9PiB7
Ci0gICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYWIpOwotICAgICAgICBhcnJh
eS5zZXQoYmx1ZSk7Ci0gICAgICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7Ci0gICAgfSk7Ci0KLSAg
ICBhd2FpdCBjb2xvckJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbihhYiA9PiB7Ci0gICAgICAg
IGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYWIpOwotICAgICAgICBhcnJheS5zZXQoZ3Jl
ZW4pOwotICAgIH0pOwotCi0gICAgLyogY29sb3JCdWZmZXIgdGhhdCBpcyBzdGlsbCBtYXBwZWQg
c2hvdWxkIGJlIG5vdCBzdWJtaXR0ZWQgdG8gZHJhdyBhIGJsdWUgdHJpYW5nbGUuICovCi0gICAg
ZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIHVwcGVy
TGVmdEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotCi0gICAgLyogY29sb3JCdWZmZXIgZG9lcyBub3Qg
YWN0dWFsbHkgY29udGFpbiAiZ3JlZW4iIGFnYWluIHVudGlsIHRoaXMgY2FsbC4gKi8KLSAgICBj
b2xvckJ1ZmZlci51bm1hcCgpOwotCi0gICAgLyogV3JpdGluZyBkYXRhIGltbWVkaWF0ZWx5IGFm
dGVyIGEgc3VibWl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBwcmVjZWRpbmcgZHJhdyBjYWxsLiAq
LwotICAgIGRyYXdBbmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50
LCBtaWRkbGVCdWZmZXIsIGNvbG9yQnVmZmVyKTsKLSAgICBhd2FpdCBtYXBXcml0ZURhdGFUb0J1
ZmZlcihjb2xvckJ1ZmZlciwgYmx1ZUFycmF5LmJ1ZmZlcik7Ci0KLSAgICAvKiBkZXN0cm95IHJp
Z2h0IGFmdGVyIGEgc3VibWl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBkcmF3IGNhbGwuICovCi0g
ICAgYXdhaXQgbWFwV3JpdGVEYXRhVG9CdWZmZXIoY29sb3JCdWZmZXIsIGdyZWVuQXJyYXkuYnVm
ZmVyKTsKLSAgICBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNo
bWVudCwgdXBwZXJSaWdodEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIHVwcGVyUmlnaHRCdWZm
ZXIuZGVzdHJveSgpOwotCi0gICAgLyogZHJhdyBjb21tYW5kIHdpdGggYSBkZXN0cm95ZWQgYnVm
ZmVyIHNob3VsZCBmYWlsICovCi0gICAgY29sb3JCdWZmZXIuZGVzdHJveSgpOwotICAgIGRyYXdB
bmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCBtaWRkbGVCdWZm
ZXIsIGNvbG9yQnVmZmVyKTsKLQotICAgIHVwcGVyTGVmdEJ1ZmZlci5kZXN0cm95KCk7Ci0gICAg
bWlkZGxlQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB1cHBlclJpZ2h0QnVmZmVyLmRlc3Ryb3koKTsK
LX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3Qo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5T
cXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDkwNWVlYTlkNTMzMzUzZDg2Y2JlMGRkMmVkZGY2ZDY3Y2RkNDA3YTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2J1ZmZlci1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQg
KzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyKCk6IEJ1ZmZl
ciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2UhCi0KLVBBU1Mg
R1BVQnVmZmVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIGJvdGggcmVhZC1vbmx5IGFuZCBTVE9SQUdF
IHVzYWdlcy4KLVBBU1MgdW5tYXAgb24gYWxyZWFkeSB1bm1hcHBlZCwgbWFwcGFibGUgR1BVQnVm
ZmVyIHNob3VsZCBub3QgZ2VuZXJhdGUgZXJyb3IuCi1QQVNTIEdQVUJ1ZmZlciBjcmVhdGVkIHZp
YSBjcmVhdGVCdWZmZXJNYXBwZWQgY2Fubm90IGJlIHJlbWFwcGVkLgotUEFTUyBHUFVCdWZmZXJE
ZXNjcmlwdG9yIHdpdGggYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIHNob3VsZCBm
YWlsLgotUEFTUyBUb28tbGFyZ2UgR1BVQnVmZmVyRGVzY3JpcHRvciBzaXplIHNob3VsZCBmYWls
IHdpdGggb3V0LW9mLW1lbW9yeSBlcnJvci4KLVBBU1MgbWFwUmVhZEFzeW5jIG9uIG5vbi1NQVBf
UkVBRCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIG1hcFdyaXRlQXN5bmMgb24gbm9uLU1B
UF9XUklURSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIHVubWFwIG9uIG5vbi1tYXBwYWJs
ZSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNTIGNyZWF0ZUJ1ZmZlck1hcHBlZDogbm9uLTQt
Ynl0ZS1hbGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRvciBzaXplIHNob3VsZCBmYWlsLgotUEFTUyBB
bnkgbWV0aG9kIGNhbGwgb24gYW4gaW52YWxpZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi1QQVNT
IEFueSBtZXRob2QgY2FsbCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZmExNDU4MzlmZjMzMGI1MGMzODczYjAwNDYxNGEyMjNmOTU5ZmI1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS9idWZmZXItZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgR1BVQnVmZmVy
IEVycm9ycy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0c1siR1BVQnVm
ZmVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIGJvdGggcmVhZC1vbmx5IGFuZCBTVE9SQUdFIHVzYWdl
cy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxp
ZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0g
ICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5JTkRF
WCB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQ
VUJ1ZmZlclVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRl
dmljZSk7Ci19OwotCi10ZXN0c1sidW5tYXAgb24gYWxyZWFkeSB1bm1hcHBlZCwgbWFwcGFibGUg
R1BVQnVmZmVyIHNob3VsZCBub3QgZ2VuZXJhdGUgZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4g
ewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoewotICAgICAgICBzaXpl
OiA0LAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfAotICAgICAgICAg
ICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2Uu
Q09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAg
ICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLnVubWFw
KCk7Ci0gICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkdQVUJ1
ZmZlciBjcmVhdGVkIHZpYSBjcmVhdGVCdWZmZXJNYXBwZWQgY2Fubm90IGJlIHJlbWFwcGVkLiJd
ID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLSAgICBjb25zdCBbYnVmZmVyLCBfXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQo
eyBzaXplOiA0LCB1c2FnZTogMCB9KTsKLSAgICAvLyBTaG91bGQgbm90IGZhaWwuCi0gICAgYnVm
ZmVyLnVubWFwKCk7Ci0gICAgYXdhaXQgcG9wTnVsbEVycm9yKGRldmljZSk7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAvLyBTaG91bGQgZmFpbC4KLSAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsK
LQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIC8vIFNob3Vs
ZCBmYWlsLgotICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0X3Vu
cmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVy
cm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siR1BVQnVmZmVyRGVzY3JpcHRvciB3aXRoIGJvdGgg
TUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlv
bkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siVG9vLWxhcmdlIEdQVUJ1ZmZlckRlc2NyaXB0
b3Igc2l6ZSBzaG91bGQgZmFpbCB3aXRoIG91dC1vZi1tZW1vcnkgZXJyb3IuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwot
ICAgIGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA5OTk5OTk5OTk5OSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLk5PTkUgfSk7Ci0gICAgcmV0dXJuIHBvcE1lbW9yeUVycm9yKGRldmljZSk7Ci19
OwotCi10ZXN0c1sibWFwUmVhZEFzeW5jIG9uIG5vbi1NQVBfUkVBRCBHUFVCdWZmZXIgc2hvdWxk
IGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIoewotICAgICAgICBzaXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwK
LSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0g
ICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZl
clVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0
X3VucmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlv
bkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1sibWFwV3JpdGVBc3luYyBvbiBub24tTUFQX1dS
SVRFIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29u
c3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0gICAg
ICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAgICAgICAgICBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQyB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8
Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAotICAgICAgICAgICAgR1BVQnVm
ZmVyVXNhZ2UuSU5ERVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8Ci0g
ICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIubWFwV3JpdGVBc3luYygp
LnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAg
IHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJ1bm1hcCBv
biBub24tbWFwcGFibGUgR1BVQnVmZmVyIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+
IHsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6
ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwKLSAgICAgICAg
ICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0gICAgICAgICAg
ICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2
aWNlKTsKLX07Ci0KLXRlc3RzWyJjcmVhdGVCdWZmZXJNYXBwZWQ6IG5vbi00LWJ5dGUtYWxpZ25l
ZCBHUFVCdWZmZXJEZXNyaXB0b3Igc2l6ZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9
PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNl
LmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDUsIHVzYWdlOiAwIH0pOwotICAgIHJldHVybiBw
b3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJBbnkgbWV0aG9kIGNhbGwg
b24gYW4gaW52YWxpZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4g
ewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7
Ci0gICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsKGRldmljZSwgYnVmZmVyKTsK
LX07Ci0KLXRlc3RzWyJBbnkgbWV0aG9kIGNhbGwgb24gYSBkZXN0cm95ZWQgR1BVQnVmZmVyIHNo
b3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
IH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVm
ZmVyLmRlc3Ryb3koKTsKLSAgICBhd2FpdCBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLQotICAgIHJl
dHVybiBhc3NlcnRBbGxCdWZmZXJNZXRob2RzRmFpbChkZXZpY2UsIGJ1ZmZlcik7Ci19OwotCi1j
b25zdCBhc3NlcnRBbGxCdWZmZXJNZXRob2RzRmFpbCA9IGFzeW5jIChkZXZpY2UsIGJ1ZmZlcikg
PT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZl
ci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgpOyB9KS5jYXRj
aChlID0+IHt9KTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCkudGhlbigoKSA9PiB7IGFzc2VydF91bnJlYWNoZWQoKTsgfSkuY2F0Y2goZSA9PiB7
fSk7Ci0gICAgYXdhaXQgcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIudW5tYXAoKTsKLSAgICBh
d2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgcmV0dXJuIHBv
cFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Nv
bG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0
YmE1ZWQyMzA0MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+
UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNh
bnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVh
cmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxZmNhNWNiZDgzMzk3YTJlOTQxZTIwNDRlZThmNmRjYjM2YzZh
ZTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2Fu
dmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJjb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xl
LXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlz
IGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotCi1jb25zdCBzaGFkZXJDb2RlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhf
bWFpbih1aW50IHZpZCA6IFNWX1ZlcnRleElEKSA6IFNWX1Bvc2l0aW9uCi17Ci0gICAgZmxvYXQ0
IHY7Ci0gICAgc3dpdGNoICh2aWQpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHYgPSBmbG9hdDQo
LTEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHYgPSBm
bG9hdDQoLTEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAg
ICB2ID0gZmxvYXQ0KDEsIDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICB2ID0gZmxvYXQ0KDEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB2OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDogU1Zf
VGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYAotCi1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3
YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbewotICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgYWxw
aGFCbGVuZDoge30sCi0gICAgICAgIGNvbG9yQmxlbmQ6IHt9LAotICAgICAgICB3cml0ZU1hc2s6
IEdQVUNvbG9yV3JpdGUuR1JFRU4gfCBHUFVDb2xvcldyaXRlLkFMUEhBCi0gICAgfV07Ci0gICAg
Y29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNl
LCBjb2xvclN0YXRlcyk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnQgPSB7Ci0gICAgICAg
IGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRW
aWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3Jl
IiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0KLSAgICB9
OwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHsgY29sb3JBdHRhY2htZW50czogW2NvbG9yQXR0YWNobWVudF0gfSk7Ci0gICAgZW5jb2RlQmFz
aWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlwZWxpbmUpOwotICAgIGNvbnN0IHF1ZXVlID0gZGV2
aWNlLmdldFF1ZXVlKCk7Ci0KLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAg
ICB0ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJh
d0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYwNzQ1MGM1ODE2MGVlMzkwYjM3YTA4ZGYwNGJkNGEw
Mjk4MzdhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEVu
Y29kZXIuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkZTE3NWNiNzllZWE4YjllMmRhMTU1MzRiNjgyYWNjYjc5
NTNjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewot
ICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BVQ29tbWFu
ZEVuY29kZXIsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBHUFVDb21tYW5kRW5jb2Rlci4iKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgYSBkZWZhdWx0IEdQVUNvbW1h
bmRFbmNvZGVyLiIpOwotCi0vLyBGSVhNRTogY3JlYXRlQ29tbWFuZEVuY29kZXIgc2hvdWxkIHRh
a2UgYSBHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IsIHdoaWNoIGlzIGN1cnJlbnRseSBhbiBl
bXB0eSBkaWN0aW9uYXJ5LgotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1YmJiYjg4MzZmYzdmYjYxNTQxZjRlZTZmOGQ4OGM3
ZGQ0MGE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgQ29tcHV0ZSBjb21waWxhdGlvbiBm
YWlsZWQgZHVlIHRvIGluY29ycmVjdCBlbnRyeSBwb2ludCBzdHJpbmcuCi1QQVNTIENvbXB1dGUg
cGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZGVkLgotUEFTUyBNU0wgcGlwZWxpbmUgY3JlYXRpb24g
ZmFpbGVkIGR1ZSB0byBpbnZhbGlkIEdQVVNoYWRlck1vZHVsZS4KLVBBU1MgTVNMIHBpcGVsaW5l
IGNyZWF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbXB1dGUtcGlwZWxpbmUtZXJyb3JzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk3NTQ0ZDkzY2U5ZDkyZmMyM2M3NzAwYjI5MjVm
ZTdkNzhhNTI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDg1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTx0aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0
IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0
cyA9IHt9OwotbGV0IGdvb2RNb2R1bGU7Ci0KLXRlc3RzWyJDb21wdXRlIGNvbXBpbGF0aW9uIGZh
aWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgY29uc3QgZ29vZFdITFNMID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1j
b21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigpIHsgfQotYDsKLSAgICBnb29kTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGdvb2RXSExTTCB9KTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxl
OiBnb29kTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2Up
OwotfTsKLQotdGVzdHNbIkNvbXB1dGUgcGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZGVkLiJdID0g
YXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24i
KTsKLQotICAgIGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21wdXRl
U3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTogZ29vZE1vZHVsZSwKLSAgICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1
cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siTVNMIHBpcGVsaW5lIGNyZWF0
aW9uIGZhaWxlZCBkdWUgdG8gaW52YWxpZCBHUFVTaGFkZXJNb2R1bGUuIl0gPSBhc3luYyBkZXZp
Y2UgPT4gewotICAgIGNvbnN0IGJhZE1TTCA9IGBUaGlzIGNvZGUgc2hvdWxkIG5vdCBjb21waWxl
LmA7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm5vbmUiKTsKLQotICAgIGNvbnN0IGJh
ZE1TTE1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBiYWRNU0wgfSk7
Ci0KLSAgICBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotCi0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0KLSAgICBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVs
aW5lKHsKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IGJhZE1T
TE1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAgICAg
ICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19
OwotCi10ZXN0c1siTVNMIHBpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0
IGVudHJ5IHBvaW50IHN0cmluZy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgZ29v
ZE1TTCA9IGAKLWtlcm5lbCB2b2lkIF9jb21wdXRlX21haW4oKSB7IH0KLWA7Ci0gICAgY29uc3Qg
bXNsTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGdvb2RNU0wgfSk7
Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLQotICAgIGRldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAg
ICAgICAgIG1vZHVsZTogbXNsTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21w
dXRlX21haSIKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQt
dHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1l
bmFibGVkLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRmNjBmNWE5YzUxN2M5NjJlZmYyYTBhZmQyYTk0YmE1ZWQyMzA0MjAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFz
IGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFibGVk
LXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10
cmlhbmdsZS1zdHJpcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzQ0MjRi
ZTg2NTJlN2E2ZmM2Nzg3ZDIzNDFhMzdiYzA0ZGRmOTllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFibGVk
LXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxv
IFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBj
b3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJl
Zj0idmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3Mg
aWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9
IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgdWludCBpaWQg
OiBTVl9JbnN0YW5jZUlEKQotewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRp
b24gPSBwb3NpdGlvbjsKLQotICAgIGlmIChpaWQgPT0gMCkgewotICAgICAgICB2T3V0LnBvc2l0
aW9uLnogPSAwLjU7Ci0gICAgICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMSwgMCwgMCwgMSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCAxLCAwLCAxKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21h
aW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0
dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKSB7
Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8g
ZmxvYXQ0IHh5encKLSAgICAgICAgLTEsIDEsIDAsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwK
LSAgICAgICAgMSwgMSwgMCwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsKLSAgICBy
ZXR1cm4gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHZlcnRleEFycmF5LmJ5
dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4QXJyYXkuYnVm
ZmVyKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCkgewotICAg
IHJldHVybiB7Ci0gICAgICAgIGluZGV4Rm9ybWF0OiAidWludDMyIiwKLSAgICAgICAgdmVydGV4
QnVmZmVyczogW3sKLSAgICAgICAgICAgIHN0cmlkZTogNCAqIDQsCi0gICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IiwKLSAgICAgICAg
ICAgICAgICBzaGFkZXJMb2NhdGlvbjogMAotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAg
ICB9Ci19Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVw
bGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIgPSBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dERlc2NyaXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKTsKLSAgICBj
b25zdCBkZXB0aFN0YXRlRGVzY3JpcHRvciA9IGNyZWF0ZUJhc2ljRGVwdGhTdGF0ZURlc2NyaXB0
b3IoKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9k
dWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIHZlcnRleElucHV0RGVzY3JpcHRvciwgZGVwdGhTdGF0
ZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7Ci0KLSAgICBjb25zdCBiYXNpY0F0dGFjaG1lbnQgPSB7Ci0gICAgICAg
IGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRW
aWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3Jl
IiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAxLjAsIGc6IDAsIGI6IDAsIGE6IDEuMCB9Ci0g
ICAgfTsKLQotICAgIGNvbnN0IGRlcHRoQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVu
dDogY3JlYXRlQmFzaWNEZXB0aFRleHR1cmUoY2FudmFzLCBkZXZpY2UpLmNyZWF0ZURlZmF1bHRW
aWV3KCksCi0gICAgICAgIGRlcHRoTG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBkZXB0aFN0b3Jl
T3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyRGVwdGg6IDEuMAotICAgIH07Ci0KLSAgICBjb25z
dCBlbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsKLSAgICAgICAgY29s
b3JBdHRhY2htZW50czogW2Jhc2ljQXR0YWNobWVudF0sCi0gICAgICAgIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQ6IGRlcHRoQXR0YWNobWVudAotICAgIH0pOwotCi0gICAgZW5jb2Rlci5zZXRWZXJ0
ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIGVuY29kZXIuc2V0UGlwZWxp
bmUocGlwZWxpbmUpOwotICAgIGVuY29kZXIuZHJhdyg0LCAyLCAwLCAwKTsKLSAgICBlbmNvZGVy
LmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xl
cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmds
ZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTlj
NTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRy
aWFuZ2xlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVu
Y2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVl
bi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRy
YXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQyMjFiM2JkMDVhZjM5ZGIyOGY3NTVmMDg1MGQ1NjFkMWJmN2FjYTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEy
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29u
dGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayBy
ZWw9Im1hdGNoIiBocmVmPSJkcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwiPgot
PHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgot
PGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0i
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBzaGFk
ZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRl
eCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBm
bG9hdCBncmVlbiA6IGF0dHJpYnV0ZSgxKSkKLXsKLSAgICBWZXJ0ZXhPdXQgdk91dDsKLSAgICB2
T3V0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCBncmVl
biwgMCwgMSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAg
IHJldHVybiBjb2xvcjsKLX0KLWAKLQotZnVuY3Rpb24gY3JlYXRlVmVydGV4QnVmZmVyKGRldmlj
ZSkgewotICAgIGNvbnN0IHZlcnRleEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCi0gICAgICAg
IC8vIGZsb2F0NCB4eXp3LCBmbG9hdCBnCi0gICAgICAgIC0xLCAxLCAwLCAxLCAwLAotICAgICAg
ICAtMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLCAwLAotICAgICAgICAtMSwg
LTEsIDAsIDEsIDEsCi0gICAgICAgIDEsIDEsIDAsIDEsIDAsCi0gICAgICAgIDEsIDEsIDAsIDEs
IDEsCi0gICAgICAgIDEsIC0xLCAwLCAxLCAwLAotICAgICAgICAxLCAtMSwgMCwgMSwgMQotICAg
IF0pOwotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVy
dGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0
ZXhBcnJheS5idWZmZXIpOwotfQotCi1jb25zdCBpbmRleEJ1ZmZlck9mZnNldCA9IDIwNDg7IC8v
IFRlc3QgYSBidWZmZXIgb2Zmc2V0IGZvciBpbmRleCBhcnJheS4KLWNvbnN0IGluZGV4T2Zmc2V0
ID0gLTkwMDE7IC8vIFRlc3QgYSBiYXNlIGluZGV4IHRvIGFkZCB0byBpbmRleCBhcnJheSB2YWx1
ZXMuCi0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4QnVmZmVyKGRldmljZSkgewotICAgIGNvbnN0IG9m
ZnNldEFycmF5ID0gWzEsIDMsIDUsIDMsIDUsIDddLm1hcCh2ID0+IHsgcmV0dXJuIHYgLSBpbmRl
eE9mZnNldDsgfSk7Ci0gICAgY29uc3QgaW5kZXhBcnJheSA9IG5ldyBVaW50MzJBcnJheShbMSwg
MywgNSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAtIGluZGV4T2Zmc2V0OyB9KSk7Ci0g
ICAgY29uc3QgYnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoCi0gICAgICAgIGRldmljZSwg
Ci0gICAgICAgIHsgCi0gICAgICAgICAgICBzaXplOiBpbmRleEFycmF5LmJ5dGVMZW5ndGggKyBp
bmRleEJ1ZmZlck9mZnNldCwgCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuSU5E
RVggCi0gICAgICAgIH0sCi0gICAgICAgIGluZGV4QXJyYXkuYnVmZmVyLAotICAgICAgICBpbmRl
eEJ1ZmZlck9mZnNldAotICAgICk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1mdW5jdGlv
biBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
aW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAg
ICAgICAgc3RyaWRlOiA0ICogNSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0
aW9uOiAwCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0OiA0ICogNCwK
LSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdCIsCi0gICAgICAgICAgICAgICAgc2hhZGVy
TG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAgfTsKLX0KLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNT
d2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9u
LU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9
IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IGluZGV4QnVmZmVyID0gY3Jl
YXRlSW5kZXhCdWZmZXIoZGV2aWNlKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2lj
UGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIGNyZWF0ZVZlcnRleElu
cHV0RGVzY3JpcHRvcigpLCBudWxsLCAidHJpYW5nbGUtbGlzdCIpOwotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFz
c0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVy
KTsKLQotICAgIHBhc3NFbmNvZGVyLnNldEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLCBpbmRleEJ1
ZmZlck9mZnNldCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyXSwgWzBdKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0g
ICAgcGFzc0VuY29kZXIuZHJhd0luZGV4ZWQoNiwgMSwgMCwgaW5kZXhPZmZzZXQsIDApOwotICAg
IHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpOwot
fQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNx
dWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1M2UzZmQwODg5NTdlZDNkNGViZDgxZDQxODY0YWZiMmJlZmNl
MzA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMCArMCwwIEBACi0KLVBBU1MgQ2FwdHVyZSBhIHNpbmdsZSBHUFVWYWxpZGF0aW9u
IGVycm9yLgotUEFTUyBDYXB0dXJlIGEgc2luZ2xlIEdQVU91dE9mTWVtb3J5IGVycm9yLgotUEFT
UyBJZ25vcmUgZXJyb3JzIHBhc3QgdGhlIGZpcnN0LgotUEFTUyBDYXB0dXJlZCBlcnJvcnMgbWF0
Y2ggZXJyb3Igc2NvcGUgZmlsdGVyLgotUEFTUyBSZWplY3QgcG9wRXJyb3JTY29wZSBpZiBubyBz
Y29wZSBleGlzdHMuCi1QQVNTIEZpbHRlciAnbm9uZScgc2hvdWxkIGNhcHR1cmUgYnV0IG5vdCBy
ZXBvcnQgZXJyb3JzLgotUEFTUyBQdXNoIGFuZCBwb3AgbWFueSBlcnJvciBzY29wZXMgd2l0aCBu
byByZWplY3Rpb25zLgotUEFTUyBDYXRjaCBtYW55IGVycm9ycyBpbiBuZXN0ZWQgc2NvcGVzLgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0M2ViMTM5NzI4NjBmMGU5MmRiMGUzOTIxZWViNzYwYzM1ZDQwZDM2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5U
ZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0
c1siQ2FwdHVyZSBhIHNpbmdsZSBHUFVWYWxpZGF0aW9uIGVycm9yLiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjYXVz
ZVZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3Io
ZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xlIEdQVU91dE9mTWVtb3J5IGVy
cm9yLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm91
dC1vZi1tZW1vcnkiKTsKLSAgICBjYXVzZU1lbW9yeUVycm9yKGRldmljZSk7Ci0gICAgcmV0dXJu
IHBvcE1lbW9yeUVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siSWdub3JlIGVycm9ycyBwYXN0
IHRoZSBmaXJzdC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0gICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLSAgICBjYXVzZVZhbGlkYXRp
b25FcnJvcihkZXZpY2UpOwotICAgIAotICAgIGNvbnN0IGVycm9yID0gYXdhaXQgZGV2aWNlLnBv
cEVycm9yU2NvcGUoKTsKLSAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoZXJyb3IpOwotCi0gICAg
cmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhcHR1cmVkIGVycm9y
cyBtYXRjaCBlcnJvciBzY29wZSBmaWx0ZXIuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGRldmljZS5wdXNoRXJyb3JT
Y29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7
Ci0KLSAgICBjb25zdCBzaG91bGRCZU51bGwgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgp
OwotICAgIGFzc2VydE51bGwoc2hvdWxkQmVOdWxsKTsKLQotICAgIHJldHVybiBwb3BWYWxpZGF0
aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJSZWplY3QgcG9wRXJyb3JTY29wZSBpZiBu
byBzY29wZSBleGlzdHMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IHByb21pc2Ug
PSBkZXZpY2UucG9wRXJyb3JTY29wZSgpLnRoZW4oKCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgpLCBh
c3luYyBlID0+IHsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGUgPT09IHVuZGVmaW5lZCk7Ci0gICAg
ICAgIC8vIFBvcCB0aGUgZXh0cmEgJ25vbmUnIHNjb3BlLgotICAgICAgICBhd2FpdCBwb3BOdWxs
RXJyb3IoZGV2aWNlKTsKLSAgICB9KTsKLSAgICAvLyAncHJvbWlzZScgc2hvdWxkIHN0aWxsIHJl
amVjdCBpZiBhIHNjb3BlIGlzIHB1c2hlZCBoZXJlLgotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgibm9uZSIpOwotICAgIHJldHVybiBwcm9taXNlOwotfTsKLQotdGVzdHNbIkZpbHRlciAnbm9u
ZScgc2hvdWxkIGNhcHR1cmUgYnV0IG5vdCByZXBvcnQgZXJyb3JzLiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm91dC1vZi1tZW1vcnkiKTsKLSAgICBk
ZXZpY2UucHVzaEVycm9yU2NvcGUoIm5vbmUiKTsKLSAgICBjYXVzZU1lbW9yeUVycm9yKGRldmlj
ZSk7Ci0KLSAgICBjb25zdCBzaG91bGRCZU51bGwgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29w
ZSgpOwotICAgIGFzc2VydE51bGwoc2hvdWxkQmVOdWxsKTsKLQotICAgIHJldHVybiBwb3BOdWxs
RXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJQdXNoIGFuZCBwb3AgbWFueSBlcnJvciBzY29w
ZXMgd2l0aCBubyByZWplY3Rpb25zLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBu
dW1JdGVyYXRpb25zID0gMTI4OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9u
czsgKytpKQotICAgICAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoIm91dC1vZi1tZW1vcnkiKTsK
LSAgICAKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnMgLSAxOyArK2kpCi0g
ICAgICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIHBvcE51bGxF
cnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhdGNoIG1hbnkgZXJyb3JzIGluIG5lc3RlZCBz
Y29wZXMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IG51bUl0ZXJhdGlvbnMgPSAx
Mjg7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKLSAgICAg
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgIGNhdXNlVmFs
aWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgfQotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBu
dW1JdGVyYXRpb25zIC0gMTsgKytpKQotICAgICAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3Io
ZGV2aWNlKTsKLQotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0K
LXJ1blRlc3RzV2l0aERldmljZSh0ZXN0cyk7Ci0KLS8qIEhlbHBlciBGdW5jdGlvbnMgKi8KLQot
Y29uc3QgY2F1c2VWYWxpZGF0aW9uRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURSB9KTsKLWNvbnN0IGNhdXNlTWVtb3J5RXJyb3IgPSBkZXZpY2UgPT4gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDk5OTk5OTk5OTk5LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuTk9ORSB9KTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NjZiMGU4YWZlMjU3NjBlOTExYjlmODg2YmNiM2M1NjUzYjMyZjEzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgVmVyaWZ5IGV4cGFuZG8gcHJvcGVydGllcyBhcmUgcHJlc2VydmVk
IG9uIHRoZSBXZWJHUFUgY29udGV4dAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
ZXhwYW5kby1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZXhwYW5kby1wcm9w
ZXJ0aWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2OTM4NTExM2FjMGVl
NWFiOTI5NjQ3NWExOWM5OWQ3MTMzNzk4MTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPkVuc3VyZSBleHBhbmRvIHByb3BlcnRpZXMgYXJlIHBy
ZXNlcnZlZCBvbiB0aGUgV2ViR1BVIGNvbnRleHQuPC90aXRsZT4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotCi1mdW5jdGlvbiBpbml0aWFsaXplKCkgewotICAgIGxldCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0gICAgbGV0IGN0eCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJncHUiKTsKLSAgICBjdHgubXlQcm9wZXJ0eSA9IDI7Ci19Ci0KLWZ1bmN0aW9uIGNv
bGxlY3RHYXJiYWdlKCkgewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICB3
aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBlbHNlIGlmICh3aW5kb3cuZ2MpCi0g
ICAgICAgIGdjKCk7Ci0gICAgZWxzZSBpZiAod2luZG93LiR2bSkKLSAgICAgICAgd2luZG93LiR2
bS5nYygpOwotICAgIC8vICR2bSBpcyBleHBvc2VkIGluIFdlYktpdCdzIE1pbmlCcm93c2VyIHdp
dGggdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0OgotICAgIC8vICAgZXhw
b3J0IEpTQ191c2VEb2xsYXJWTT0xCi0gICAgLy8gICBleHBvcnQgX19YUENfSlNDX3VzZURvbGxh
clZNPTEKLX0KLQotLy8gRklYTUU6IEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoImdwdSIp
IG5vIGxvbmdlciBleGlzdHMgaW4gdGhlCi0vLyBXZWJHUFUgc3BlYy4gV2hlbiBXZWJLaXQgaXMg
dXBkYXRlZCB0byB0cmFjayB0aGUgY3VycmVudCBzcGVjLCB0aGlzCi0vLyB0ZXN0IGFuZCB0aGUg
YmluZGluZ3Mgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gaG9ub3IgdGhlIHNwZWMncwotLy8gZ3VhcmFu
dGVlcyBhYm91dCBwcmVzZXJ2aW5nIGV4cGFuZG8gcHJvcGVydGllcyBvbiB2YXJpb3VzCi0vLyBp
bnRlcmZhY2VzLgotbGV0IHRlc3QxID0gYXN5bmNfdGVzdCgnVmVyaWZ5IGV4cGFuZG8gcHJvcGVy
dGllcyBhcmUgcHJlc2VydmVkIG9uIHRoZSBXZWJHUFUgY29udGV4dCcpOwotdGVzdDEuc3RlcChm
dW5jdGlvbigpIHsKLSAgICBpbml0aWFsaXplKCk7Ci0gICAgc2V0VGltZW91dCh0ZXN0MS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbGxlY3RHYXJiYWdlKCk7Ci0gICAgICAgIGxl
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0gICAgICAgIGxl
dCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
Y3R4Lm15UHJvcGVydHksIDIpOwotICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgfSksIDIwMCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY5NTUzY2I4YWE3MDE1
NDcwZWVhYzM0YTJjY2Q5NGMzMWJjODFhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1hc3luYyBmdW5jdGlvbiBnZXRCYXNp
Y0RldmljZSgpIHsKLSAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1
ZXN0QWRhcHRlcih7IHBvd2VyUHJlZmVyZW5jZTogImxvdy1wb3dlciIgfSk7Ci0gICAgY29uc3Qg
ZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgcmV0dXJuIGRldmlj
ZTsKLX0KLQotZnVuY3Rpb24gZHJhd0dyZWVuTWlwQ2hhaW5PblJlZEJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZ2IoMjU1LCAwLCAwKSI7Ci0gICAgY29udGV4
dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotCi0gICAgbGV0
IG1heFJlc29sdXRpb24gPSBNYXRoLm1heChjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwot
ICAgIGxldCBtaXBMZXZlbENvdW50ID0gTWF0aC5jZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0aW9u
KSk7Ci0gICAgaWYgKG1pcExldmVsQ291bnQgPCAxKSBtaXBMZXZlbENvdW50ID0gMTsKLQotICAg
IGxldCB3aWR0aCAgPSBjYW52YXMud2lkdGg7Ci0gICAgbGV0IGhlaWdodCA9IGNhbnZhcy5oZWln
aHQ7Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtaXBMZXZlbENvdW50OyArK2kpIHsKLSAgICAg
ICAgd2lkdGggID0gTWF0aC5tYXgoTWF0aC5mbG9vcih3aWR0aCAgLyAyKSwgMSk7Ci0gICAgICAg
IGhlaWdodCA9IE1hdGgubWF4KE1hdGguZmxvb3IoaGVpZ2h0IC8gMiksIDEpOwotICAgICAgICBj
b250ZXh0LmZpbGxTdHlsZSA9ICJyZ2IoMCwgMjU1LCAwKSI7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3QoMCwgaGVpZ2h0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0KLX0KLQotZnVuY3Rpb24g
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQuZmls
bFN0eWxlID0gImJsdWUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDApOwot
ICAgIGNvbnRleHQuZmlsbFN0eWxlID0gIndoaXRlIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDEw
MCwgMTAwLCAyMDAsIDIwMCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiMmQiKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJibHVlIjsKLSAgICBj
b250ZXh0LmZpbGxSZWN0KDAsIDAsIDQwMCwgNDAwKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9
ICJibGFjayI7Ci0gICAgY29udGV4dC5maWxsUmVjdCgxMDAsIDEwMCwgMjAwLCAyMDApOwotfQot
Ci1mdW5jdGlvbiBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBjb250ZXh0LmZpbGxTdHls
ZSA9ICdyZ2IoMCwgMjU1LCAwKSc7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMu
d2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotfQotCi1mdW5jdGlvbiBkcmF3R3JlZW5BbmRCbHVlQ2hl
Y2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoJzJkJyk7Ci0KLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2IoMCwgMjU1
LCAwKSc7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5o
ZWlnaHQpOwotCi0gICAgY29uc3QgbnVtQ29sdW1ucyA9IDQ7Ci0gICAgY29uc3QgbnVtUm93cyA9
IDQ7Ci0gICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdy
Z2IoMCwgMCwgMjU1KSc7Ci0gICAgZm9yIChsZXQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyArK3gp
IHsKLSAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKLSAgICAgICAg
ICAgIGlmICgoeCArIHkpICUgMiA9PSAwKQotICAgICAgICAgICAgICAgIGNvbnRleHQucmVjdCgK
LSAgICAgICAgICAgICAgICAgICAgeCAqIGNhbnZhcy53aWR0aCAvIG51bUNvbHVtbnMsCi0gICAg
ICAgICAgICAgICAgICAgIHkgKiBjYW52YXMuaGVpZ2h0IC8gbnVtUm93cywKLSAgICAgICAgICAg
ICAgICAgICAgY2FudmFzLndpZHRoIC8gbnVtQ29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAg
Y2FudmFzLmhlaWdodCAvIG51bVJvd3MKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBjb250ZXh0LmZpbGwoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQmFzaWNT
d2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIHJldHVybiBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbih7
IGRldmljZTogZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIiB9KTsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAgICAg
ICBkZXB0aFdyaXRlRW5hYmxlZDogdHJ1ZSwKLSAgICAgICAgZGVwdGhDb21wYXJlOiAibGVzcyIK
LSAgICB9OwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY0RlcHRoVGV4dHVyZShjYW52YXMsIGRl
dmljZSkgewotICAgIGNvbnN0IGRlcHRoU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGNhbnZhcy53
aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAotICAgICAgICBkZXB0aDogMQot
ICAgIH07Ci0KLSAgICByZXR1cm4gZGV2aWNlLmNyZWF0ZVRleHR1cmUoewotICAgICAgICBzaXpl
OiBkZXB0aFNpemUsCi0gICAgICAgIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0g
ICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwg
Y29sb3JTdGF0ZXMsIHBpcGVsaW5lTGF5b3V0LCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IsIGRlcHRo
U3RhdGVEZXNjcmlwdG9yLCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCIpIHsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IgPSB7Ci0gICAgICAgIG1vZHVsZTogc2hh
ZGVyTW9kdWxlLAotICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4X21haW4iIAotICAgIH07Ci0K
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKLSAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsCi0gICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFnbWVudF9tYWluIgotICAgIH07
Ci0KLSAgICBpZiAoIWNvbG9yU3RhdGVzKSB7Ci0gICAgICAgIGNvbG9yU3RhdGVzID0gW3sgCi0g
ICAgICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgICAgIGFscGhhQmxlbmQ6
IHt9LAotICAgICAgICAgICAgY29sb3JCbGVuZDoge30KLSAgICAgICAgfV07Ci0gICAgfQotCi0g
ICAgaWYgKCF2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpCi0gICAgICAgIHZlcnRleElucHV0RGVzY3Jp
cHRvciA9IHsgdmVydGV4QnVmZmVyczogW10gfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lRGVzY3Jp
cHRvciA9IHsKLSAgICAgICAgdmVydGV4U3RhZ2U6IHZlcnRleFN0YWdlRGVzY3JpcHRvciwKLSAg
ICAgICAgZnJhZ21lbnRTdGFnZTogZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IsCi0gICAgICAgIHBy
aW1pdGl2ZVRvcG9sb2d5OiBwcmltaXRpdmVUb3BvbG9neSwKLSAgICAgICAgY29sb3JTdGF0ZXM6
IGNvbG9yU3RhdGVzLAotICAgICAgICB2ZXJ0ZXhJbnB1dDogdmVydGV4SW5wdXREZXNjcmlwdG9y
Ci0gICAgfTsKLQotICAgIGlmIChwaXBlbGluZUxheW91dCkKLSAgICAgICAgcGlwZWxpbmVEZXNj
cmlwdG9yLmxheW91dCA9IHBpcGVsaW5lTGF5b3V0OwotCi0gICAgaWYgKGRlcHRoU3RhdGVEZXNj
cmlwdG9yKQotICAgICAgICBwaXBlbGluZURlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUgPSBk
ZXB0aFN0YXRlRGVzY3JpcHRvcjsKLQotICAgIHJldHVybiBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotZnVuY3Rpb24gYmVnaW5CYXNpY1JlbmRl
clBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2RlcikgewotICAgIGNvbnN0IGJhc2ljQXR0YWNo
bWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJl
KCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAg
ICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDEuMCwgZzogMCwg
YjogMCwgYTogMS4wIH0KLSAgICB9OwotCi0gICAgLy8gRklYTUU6IEZsZXNoIG91dCB0aGUgcmVz
dCBvZiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci4gCi0gICAgcmV0dXJuIGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHMgOiBbYmFzaWNBdHRhY2htZW50XSB9
KTsKLX0KLQotZnVuY3Rpb24gZW5jb2RlQmFzaWNDb21tYW5kcyhyZW5kZXJQYXNzRW5jb2Rlciwg
cmVuZGVyUGlwZWxpbmUsIHZlcnRleEJ1ZmZlcikgewotICAgIGlmICh2ZXJ0ZXhCdWZmZXIpCi0g
ICAgICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZl
cl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZW5kUGFzcygpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCdWZmZXJXaXRoRGF0
YShkZXZpY2UsIGRlc2NyaXB0b3IsIGRhdGEsIG9mZnNldCA9IDApIHsKLSAgICBjb25zdCBtYXBw
ZWRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKGRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IGRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KG1hcHBlZEJ1ZmZlclsxXSk7Ci0gICAgZGF0
YUFycmF5LnNldChuZXcgVWludDhBcnJheShkYXRhKSwgb2Zmc2V0KTsKLSAgICBtYXBwZWRCdWZm
ZXJbMF0udW5tYXAoKTsKLSAgICByZXR1cm4gbWFwcGVkQnVmZmVyWzBdOwotfQotCi1hc3luYyBm
dW5jdGlvbiBtYXBXcml0ZURhdGFUb0J1ZmZlcihidWZmZXIsIGRhdGEsIG9mZnNldCA9IDApIHsK
LSAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3Qgd3JpdGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTsKLSAgICB3
cml0ZUFycmF5LnNldChuZXcgVWludDhBcnJheShkYXRhKSwgb2Zmc2V0KTsKLSAgICBidWZmZXIu
dW5tYXAoKTsKLX0KLQotLyoqKiBGdW5jdGlvbnMgYmVsb3cgdGhpcyBsaW5lIHJlcXVpcmUgV1BU
IHRlc3RoYXJuZXNzLmpzIGFuZCB0ZXN0aGFybmVzc3JlcG9ydC5qcy4gKioqLwotCi1mdW5jdGlv
biBydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpIHsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZhciBk
ZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0RldmljZSgpOwotICAgICAgICB9IGNhdGNoIChlKSB7IC8q
IFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkLiAqLyB9Ci0gICAgCi0gICAgICAgIGZvciAobGV0IG5h
bWUgaW4gdGVzdHMpIHsKLSAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJfIikpCi0g
ICAgICAgICAgICAgICAgZGV2aWNlUHJvbWlzZVRlc3QoZGV2aWNlLCB0ZXN0c1tuYW1lXSwgbmFt
ZSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZGV2aWNlUHJvbWlzZVRlc3Qo
ZGV2aWNlLCBmdW5jLCBuYW1lKSB7Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKLSAg
ICAgICAgaWYgKGRldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOwotICAgICAgICByZXR1cm4gZnVuYyhkZXZpY2UpOwotICAgIH0sIG5hbWUp
OwotfTsKLQotLy8gQXNzZXJ0aW5nIGVycm9ycy4KLQotY29uc3QgcG9wVmFsaWRhdGlvbkVycm9y
ID0gZGV2aWNlID0+IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihlcnJvciA9PiBhc3NlcnRW
YWxpZGF0aW9uRXJyb3IoZXJyb3IpKTsKLWNvbnN0IHBvcE1lbW9yeUVycm9yID0gZGV2aWNlID0+
IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihlcnJvciA9PiBhc3NlcnRNZW1vcnlFcnJvcihl
cnJvcikpOwotY29uc3QgcG9wTnVsbEVycm9yID0gZGV2aWNlID0+IGRldmljZS5wb3BFcnJvclNj
b3BlKCkudGhlbihlcnJvciA9PiBhc3NlcnROdWxsKGVycm9yKSk7Ci1jb25zdCBhc3NlcnROdWxs
ID0gZXJyb3IgPT4gewotICAgIGxldCBhc3NlcnRpb25Nc2cgPSAiTm8gZXJyb3IgZXhwZWN0ZWQh
IjsKLSAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkKLSAgICAgICAgYXNzZXJ0aW9uTXNn
ICs9ICIgR290OiAiICsgZXJyb3IubWVzc2FnZTsKLSAgICBhc3NlcnRfdHJ1ZShlcnJvciA9PT0g
bnVsbCwgYXNzZXJ0aW9uTXNnKTsKLX07Ci1jb25zdCBhc3NlcnRWYWxpZGF0aW9uRXJyb3IgPSBl
cnJvciA9PiB7Ci0gICAgbGV0IGFzc2VydGlvbk1zZyA9ICJFeHBlY3RlZCB2YWxpZGF0aW9uIGVy
cm9yOiAiOwotICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICBhc3NlcnRp
b25Nc2cgKz0gZXJyb3IubWVzc2FnZTsKLSAgICBhc3NlcnRfdHJ1ZShlcnJvciBpbnN0YW5jZW9m
IEdQVVZhbGlkYXRpb25FcnJvciwgYXNzZXJ0aW9uTXNnKTsKLX07Ci1jb25zdCBhc3NlcnRNZW1v
cnlFcnJvciA9IGVycm9yID0+IGFzc2VydF90cnVlKGVycm9yIGluc3RhbmNlb2YgR1BVT3V0T2ZN
ZW1vcnlFcnJvciwgIkV4cGVjdGVkIG91dC1vZi1tZW1vcnkgZXJyb3IhIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY3YmI2MjRkYzgwMzc1MDc0YzZhMDVhODgzZjVhZDBiM2M2MzZk
ZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMTEgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFzeW5j
KCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwV3Jp
dGVBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVy
Lm1hcFJlYWRBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BV
QnVmZmVyLm1hcFJlYWRBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLQotUEFTUyBtYXBSZWFk
QXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBvbiBhIEdQVUJ1ZmZlci4KLVBBU1MgR1BVQnVmZmVy
Lm1hcFJlYWRBc3luYyBvbiBhIGJ1ZmZlciBjcmVhdGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRlQnVm
ZmVyTWFwcGVkLgotUEFTUyBSZWplY3QgYSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBub3QgY3JlYXRl
ZCB3aXRoIE1BUF9SRUFEIHVzYWdlLgotUEFTUyBSZWplY3QgYSBtYXAgcmVhZCBvbiBhIG1hcHBl
ZCBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIHBlbmRpbmcgbWFwIHJlYWQgaWYgR1BVQnVmZmVy
IGlzIHVubWFwcGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQt
YnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2M2EyNzhkMmEzODY4NmFlM2M2YTdmNDQ2
YzkxMDM4MjQ0ODcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTx0aXRsZT5UZXN0cyBmb3IgY3JlYXRlQnVmZmVyTWFwcGVkIGFuZCBtYXBSZWFkQXN5bmMg
b24gYSBHUFVCdWZmZXIuPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiBydW5UZXN0cygp
IHsKLSAgICAvLyBCYXNpYyBtYXBSZWFkQXN5bmMgZnVuY3Rpb25hbGl0eQotICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMg
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsK
LSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZlciwgImNy
ZWF0ZUJ1ZmZlciByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotCi0gICAgICAgICAgICBsZXQgYXJy
YXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiZmlyc3QgbWFwUmVh
ZEFzeW5jIHJlc29sdmVkIHN1Y2Nlc3NmdWxseSIpOwotCi0gICAgICAgICAgICBjb25zdCByZWFk
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhZEFycmF5WzBdLCAwLCAic3VjY2Vzc2Z1bGx5IGFjY2VzcyBhIHZhbHVlIGZy
b20gYSBtYXAgcmVhZCIpOwotCi0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAg
ICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsgLy8gVGhpcyB3aWxs
IGV2ZW50dWFsbHkgcmVqZWN0IGR1ZSB0byBidWZmZXIuZGVzdHJveSgpCi0KLSAgICAgICAgICAg
IGJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAgICAgICAgICAgIGF3YWl0IHByb21pc2UudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQnVmZmVyIHdhcyBkZXN0cm95
ZWQhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICB9KTsKLSAgICB9LCAibWFwUmVhZEFzeW5jLCB1bm1hcCwgYW5kIGRlc3Ryb3kg
b24gYSBHUFVCdWZmZXIuIik7Ci0KLSAgICAvLyBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVk
Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNl
KCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZl
clJlc3VsdCA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiAxNiwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gYnVm
ZmVyUmVzdWx0WzBdOwotICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBidWZmZXJSZXN1
bHRbMV07Ci0KLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1
ZmZlciwgImNyZWF0ZUJ1ZmZlck1hcHBlZCByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciwgImNy
ZWF0ZUJ1ZmZlck1hcHBlZCByZXR1cm5lZCBhbiBBcnJheUJ1ZmZlciIpOwotCi0gICAgICAgICAg
ICBsZXQgYXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAg
IGFycmF5LnNldChbMSwgMiwgMywgNF0pOwotCi0gICAgICAgICAgICAvLyBCdWZmZXIgc2hvdWxk
IGFscmVhZHkgYmUgIm1hcHBlZCIuCi0gICAgICAgICAgICBhd2FpdCBidWZmZXIubWFwUmVhZEFz
eW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiR1BV
QnVmZmVyIGNyZWF0ZWQgdmlhIEdQVUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgbWFwcGVkIHVudGls
IGFmdGVyIGZpcnN0IHVubWFwISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotCi0gICAg
ICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAgLy8gQnVmZmVyIHNob3VsZCBu
b3QgYmUgcmUtbWFwcGFibGUgZm9yIHdyaXRlcy4KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiQnVmZmVyIHdhcyBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSEiKTsKLSAgICAgICAg
ICAgIH0sICgpID0+IHt9KTsKLQotICAgICAgICAgICAgLy8gUmVhZCByZXN1bHRzIG9mIG9yaWdp
bmFsIHdyaXRlcy4KLSAgICAgICAgICAgIGxldCByZXN1bHRBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1
ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGNvbnN0IHJlc3VsdEFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXN1bHRBcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICByZXN1bHRBcnJh
eS5mb3JFYWNoKCh2LCBpKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCBh
cnJheVtpXSwgIlN1Y2Nlc3NmdWxseSBtYXAtcmVhZCB2YWx1ZSB3cml0dGVuIHRvIEdQVUJ1ZmZl
ciBtYXBwZWQgb24gY3JlYXRpb24iKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB9KTsKLSAgICB9LCAiR1BVQnVmZmVyLm1hcFJlYWRBc3luYyBvbiBhIGJ1ZmZlciBjcmVh
dGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkLiIpOwotCi0gICAgLyogQmFzaWMg
dmFsaWRhdGlvbiAqLwotICAgIC8vIEZJWE1FOiBUZXN0IGludmFsaWQgY29tYmluYXRpb25zIG9m
IEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGluZyBlcnJvciBoYW5kbGluZy4KLQotICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRo
ZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEUgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5v
dCBjcmVhdGVkIHdpdGggTUFQX1JFQUQhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0g
ICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgbWFw
IHJlYWQgb24gYSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCB1c2FnZS4iKTsKLQot
ICAgIC8qIEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kgYW5kIHByb21pc2Ugc2V0dGxpbmcgdGVzdGlu
ZyAqLwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2lj
RGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0
IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgICAgICAgICBidWZmZXIubWFwUmVhZEFzeW5jKCku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0gICAgICAgICAg
ICB9LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgpOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJNYXAgb3BlcmF0aW9u
IHdhcyBpbnZhbGlkISIpOyAvLyBidWZmZXIgd2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0ZSBkdXJp
bmcgcHJvbWlzZSBjcmVhdGlvbgotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCByZWFkIG9u
IGEgbWFwcGVkIEdQVUJ1ZmZlci4iKTsKLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAg
ICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTog
MTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgICAgICAgICAgY29u
c3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGJ1ZmZlci51
bm1hcCgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQhIik7IC8vIGJ1
ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNoIHJlamVjdHMgcGVuZGluZyBwcm9taXNlcwotICAgICAg
ICAgICAgfSwoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsK
LSAgICB9LCAiUmVqZWN0IGEgcGVuZGluZyBtYXAgcmVhZCBpZiBHUFVCdWZmZXIgaXMgdW5tYXBw
ZWQuIik7Ci19Ci0KLXJ1blRlc3RzKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkZWRkOTUxMDdmMmJlMTllYWQ4YTE1YWJhMTJkNTIxMjU3MDcx
OTkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotCi1QQVNTIE1hcCB3cml0ZSwgdW5tYXAs
IGFuZCBkZXN0cm95IGEgR1BVQnVmZmVyLgotUEFTUyBSZWplY3QgYSBtYXAgd3JpdGUgb24gYSBi
dWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBNQVBfV1JJVEUgdXNhZ2UuCi1QQVNTIFJlamVjdCBhIG1h
cCB3cml0ZSBvbiBhIG1hcHBlZCBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIHBlbmRpbmcgbWFw
IHdyaXRlIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvbWFw
LXdyaXRlLWJ1ZmZlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljZmQ5
ZjUyYzc1YjY1OGFkZjI2YTU5NmIwMWRjMzY1MDQ0MzU3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1
ZmZlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0cyBmb3IgbWFwV3JpdGVBc3luYyBv
biBhIEdQVUJ1ZmZlci48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkg
ewotICAgIC8vIEJhc2ljIG1hcFdyaXRlQXN5bmMgZnVuY3Rpb25hbGl0eQotICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMg
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7
Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShidWZmZXIgaW5zdGFuY2VvZiBHUFVCdWZmZXIsICJj
cmVhdGVCdWZmZXIgcmV0dXJuZWQgYSBHUFVCdWZmZXIiKTsKLQotICAgICAgICAgICAgbGV0IGFy
cmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLQotICAgICAgICAgICAg
YXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciwgImZpcnN0IG1h
cFdyaXRlQXN5bmMgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5Iik7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhcnJheVswXSwgMCwgIm1hcFdyaXRlQXN5bmMgemVyb2VkIG91
dCBzdG9yYWdlIik7Ci0gICAgICAgICAgICBhcnJheS5zZXQoWzEsIDIsIDMsIDRdKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgICAgIGNvbnN0
IHByb21pc2UgPSBidWZmZXIubWFwV3JpdGVBc3luYygpOyAvLyBUaGlzIHdpbGwgZXZlbnR1YWxs
eSByZWplY3QgZHVlIHRvIGJ1ZmZlci5kZXN0cm95KCkKLQotICAgICAgICAgICAgYnVmZmVyLmRl
c3Ryb3koKTsKLQotICAgICAgICAgICAgYXdhaXQgcHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRlc3Ryb3llZCEiKTsKLSAg
ICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IH0pOwotICAgIH0sICJNYXAgd3JpdGUsIHVubWFwLCBhbmQgZGVzdHJveSBhIEdQVUJ1ZmZlci4i
KTsKLQotICAgIC8qIEJhc2ljIHZhbGlkYXRpb24gKi8KLSAgICAvLyBGSVhNRTogVGVzdCBpbnZh
bGlkIGNvbWJpbmF0aW9ucyBvZiBHUFVCdWZmZXJVc2FnZSBhZnRlciBpbXBsZW1lbnRpbmcgZXJy
b3IgaGFuZGxpbmcuCi0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4g
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAg
ICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiQnVmZmVyIHdhcyBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSEiKTsKLSAgICAgICAg
ICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwot
ICAgIH0sICJSZWplY3QgYSBtYXAgd3JpdGUgb24gYSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBN
QVBfV1JJVEUgdXNhZ2UuIik7Ci0KLSAgICAvKiBFeHRlbmRlZCB1bm1hcC9kZXN0cm95IGFuZCBw
cm9taXNlIHNldHRsaW5nIHRlc3RpbmcgKi8KLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6
ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7Ci0KLSAgICAgICAgICAg
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyLnVubWFwKCk7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IGJ1
ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgiTWFwIG9wZXJhdGlvbiB3YXMgaW52YWxpZCEiKTsgLy8gYnVmZmVyIHdhcyBz
dGlsbCBpbiBtYXBwZWQgc3RhdGUgZHVyaW5nIHByb21pc2UgY3JlYXRpb24KLSAgICAgICAgICAg
IH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAg
IH0sICJSZWplY3QgYSBtYXAgd3JpdGUgb24gYSBtYXBwZWQgR1BVQnVmZmVyLiIpOwotCi0gICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhl
bihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB9KTsKLQotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAgYXdhaXQg
cHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJC
dWZmZXIgd2FzIHVubWFwcGVkISIpOyAvLyBidWZmZXIgd2FzIHVubWFwcGVkLCB3aGljaCByZWpl
Y3RzIHBlbmRpbmcgcHJvbWlzZXMKLSAgICAgICAgICAgIH0sKCkgPT4ge30pOwotICAgICAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIHBlbmRpbmcgbWFw
IHdyaXRlIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVzdHMoKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5l
LWxheW91dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91
dHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjU2ZWI2YWJm
MGQ1YTE5MzAxMzdhNmIyMWFkNWJiNGFlYjAwNGFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlvdXRz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIENyZWF0
ZSBhIGJhc2ljIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuCi1QQVNTIENyZWF0ZSBhIGJh
c2ljIEdQVVBpcGVsaW5lTGF5b3V0IHd0aWggYSBHUFVEZXZpY2UuCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvcGlwZWxpbmUtbGF5b3V0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
ZDJiNzk4ZWE2NGNiYTQzZWJiMDJjZjI5YjM4YzJmOGE4NzQyMzc2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGlu
ZS1sYXlvdXRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+Q3JlYXRlIEdQVUJpbmRHcm91cExh
eW91dC48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGNyZWF0ZUJpbmRHcm91cExheW91dEJpbmRp
bmcoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgdmlzaWJp
bGl0eTogR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQgfCBHUFVTaGFkZXJTdGFnZS5WRVJURVgsCi0g
ICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9OwotfQotCi10ZXN0KCgpID0+IHsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0geyBiaW5kaW5nczogW2NyZWF0
ZUJpbmRHcm91cExheW91dEJpbmRpbmcoKV0gfTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzWzBdLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJT
dGFnZS5GUkFHTUVOVCwgMCk7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMoYmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5iaW5kaW5nc1swXS52aXNpYmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2UuVkVSVEVY
LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGlu
Z3NbMF0udHlwZSwgInN0b3JhZ2UtYnVmZmVyIik7Ci19LCAiQ3JlYXRlIGEgYmFzaWMgR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvci4iKTsgCi0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAg
cmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJp
bmRpbmdzOiBbY3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpXSB9KTsKLSAgICAgICAgYXNz
ZXJ0X3RydWUoYmluZEdyb3VwTGF5b3V0IGluc3RhbmNlb2YgR1BVQmluZEdyb3VwTGF5b3V0LCAi
Y3JlYXRlQmluZEdyb3VwTGF5b3V0IHJldHVybmVkIGEgR1BVQmluZEdyb3VwTGF5b3V0Iik7Ci0K
LSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLSAgICAgICAgYXNz
ZXJ0X3RydWUocGlwZWxpbmVMYXlvdXQgaW5zdGFuY2VvZiBHUFVQaXBlbGluZUxheW91dCwgImNy
ZWF0ZVBpcGVsaW5lTGF5b3V0IHJldHVybmVkIGEgR1BVUGlwZWxpbmVMYXlvdXQiKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgYSBiYXNpYyBHUFVQaXBlbGluZUxh
eW91dCB3dGloIGEgR1BVRGV2aWNlLiIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjRlYzIzNzZmNzZiNTZhZWMwYzVkNDQ1MDIwODRkN2UzOThkOGFlMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgZ2V0UXVldWUoKSBvbiBHUFVEZXZpY2UuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3F1ZXVlLWNyZWF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRj
OTVhNmNjNzAyMGNhOWU2ZGYxZGNjM2FiY2U3NTNiYWU1OWIwYWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3F1ZXVlLWNy
ZWF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+R2V0IHRoZSBHUFVEZXZpY2UgYW5kIGFz
ayBmb3IgdGhlIEdQVVF1ZXVlPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLSd1c2Ugc3RyaWN0JzsKLQotcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4gewotICAgIGFzc2VydF9ub3RfZXF1YWxzKG5hdmlnYXRvci5n
cHUsIHVuZGVmaW5lZCwgIm5hdmlnYXRvci5ncHUgZXhpc3RzIik7Ci0KLSAgICBjb25zdCBjb250
ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiZ3B1Iik7
Ci0gICAgYXNzZXJ0X3RydWUoY29udGV4dCBpbnN0YW5jZW9mIEdQVUNhbnZhc0NvbnRleHQsICJn
ZXRDb250ZXh0IHJldHVybmVkIGEgR1BVQ2FudmFzQ29udGV4dC4iKTsKLQotICAgIHJldHVybiBn
ZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNv
bnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHF1ZXVl
IGluc3RhbmNlb2YgR1BVUXVldWUsICJnZXRRdWV1ZSByZXR1cm5lZCBhIEdQVVF1ZXVlLiIpOwot
Ci0gICAgICAgIHF1ZXVlLmxhYmVsID0gIkV4YW1wbGUgbGFiZWwiOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKHF1ZXVlLmxhYmVsLCAiRXhhbXBsZSBsYWJlbCIsICJxdWV1ZS5sYWJlbCB3YXMgc2V0
LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgImdldFF1ZXVlKCkgb24gR1BV
RGV2aWNlLiIpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxYTM1NzljNGE5NDkzMWMxYWI4NTRlZjQxYjlhNGQ0N2MwODlk
NjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBHUFVSZW5kZXJQYXNzRW5jb2RlciBjcmVh
dGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5kZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVu
ZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDk0OGI2ZTQzMjU2M2YyODUwZTAxYzllODdjNDkzYTk4ZDcyMmQ2Yy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVy
LWNvbW1hbmQtZW5jb2RpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5HZXQgdGhlIEdQVURl
dmljZSBhbmQgYXNrIGZvciB0aGUgR1BVUXVldWU8L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
cnMgPSBgCi1zdHJ1Y3QgVmVydGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b247Ci0gICAgZmxvYXQ0IGF0dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmlidXRlKDApOwotfTsKLQot
dmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4IHJlc3VsdDsKLSAgICBy
ZXN1bHQucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAgcmVzdWx0LmF0dHJpYnV0
ZVBvc2l0aW9uID0gcmVzdWx0LnBvc2l0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKLSAgICAgICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hh
aW4oY2FudmFzLCBkZXZpY2UpOwotICAgICAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVycyB9KTsKLSAgICAgICAgY29uc3QgcGlw
ZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlKTsKLQotICAg
ICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OwotICAgICAgICBhc3NlcnRfdHJ1ZShjb21tYW5kRW5jb2RlciBpbnN0YW5jZW9mIEdQVUNvbW1h
bmRFbmNvZGVyLCAiY3JlYXRlQ29tbWFuZEVuY29kZXIgcmV0dXJuZWQgYSBHUFVDb21tYW5kRW5j
b2RlciIpOwotCi0gICAgICAgIGNvbnN0IGVuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhz
d2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZW5jb2RlciBp
bnN0YW5jZW9mIEdQVVJlbmRlclBhc3NFbmNvZGVyLCAiYmVnaW5SZW5kZXJQYXNzKCkgcmV0dXJu
ZWQgYSBHUFVSZW5kZXJQYXNzRW5jb2RlciIpOwotCi0gICAgICAgIGVuY29kZXIuc2V0UGlwZWxp
bmUocGlwZWxpbmUpOwotICAgICAgICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAgICB9LCBmdW5jdGlv
bigpIHsKLSAgICB9KTsKLX0sICJHUFVSZW5kZXJQYXNzRW5jb2RlciBjcmVhdGVkIGFuZCBzdWNj
ZXNzZnVsbHkgZW5kZWQiKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZjY2ZjU4ZGM0ZGY2NmIwNzgzNDA2NTRkNzBiOTIy
ZDNlNmZjNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIEdQVVJlbmRlclBpcGVsaW5lIGNy
ZWF0aW9uIHN1Y2NlZWRzIHdpdGggbm8gZXJyb3JzLgotUEFTUyBJbnZhbGlkIEdQVVNoYWRlck1v
ZHVsZSBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWlsLgotUEFTUyBJbnZhbGlkIEdQVVNoYWRl
ck1vZHVsZSBmb3IgZnJhZ21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEVtcHR5IGVudHJ5
IHBvaW50IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEludmFsaWQgR1BVVGV4
dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciBzaG91bGQgZmFpbC4KLVBBU1Mg
VG9vIG1hbnkgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3JzIHNob3VsZCBmYWlsLgotUEFTUyBUb28g
bWFueSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4KLVBBU1MgVG9vIG1h
bnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNTIER1cGxp
Y2F0ZSBzaGFkZXJMb2NhdGlvbiBmb3IgdmVydGV4IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwuCi1Q
QVNTIEludmFsaWQgZW50cnkgcG9pbnQgc3RyaW5nIHNob3VsZCBmYWlsLgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGI5YmM3M2RjNmY0NzJiZmFhNDk4Y2RiNjQwZjUzOTgwZjI1NWJlOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTkwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRs
ZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHBvc2l0aW9uTG9jYXRp
b24gPSAwOwotY29uc3QgY29sb3JMb2NhdGlvbiA9IDE7Ci0KLWNvbnN0IGNvbG9yT2Zmc2V0ID0g
NCAqIDQ7Ci1jb25zdCB2ZXJ0ZXhTdHJpZGUgPSA4ICogNDsKLQotY29uc3Qgd2hsc2xTb3VyY2Ug
PSBgCi1zdHJ1Y3QgRnJhZ21lbnREYXRhIHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoJHtjb2xvckxvY2F0aW9ufSk7Ci19
Ci0KLXZlcnRleCBGcmFnbWVudERhdGEgdmVydGV4TWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoJHtwb3NpdGlvbkxvY2F0aW9ufSksIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgke2Nv
bG9yTG9jYXRpb259KSkKLXsKLSAgICBGcmFnbWVudERhdGEgb3V0OwotCi0gICAgb3V0LnBvc2l0
aW9uID0gcG9zaXRpb247Ci0gICAgb3V0LmNvbG9yID0gY29sb3I7Ci0KLSAgICByZXR1cm4gb3V0
OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRNYWluKGZsb2F0NCBjb2xvciA6IGF0dHJp
YnV0ZSgke2NvbG9yTG9jYXRpb259KSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xv
cjsKLX0KLWA7Ci0KLWxldCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBnb29kTW9kdWxl
OwotCi1sZXQgdGVzdHMgPSB7fTsKLQotdGVzdHNbIkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0aW9u
IHN1Y2NlZWRzIHdpdGggbm8gZXJyb3JzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBnb29k
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHdobHNsU291cmNlIH0p
OwotICAgIAotICAgIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHZl
cnRleFN0YWdlOiB7IG1vZHVsZTogZ29vZE1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleE1haW4i
IH0sCi0gICAgICAgIGZyYWdtZW50U3RhZ2U6IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRNYWluIiB9LAotICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogInRyaWFu
Z2xlLWxpc3QiLAotICAgICAgICBjb2xvclN0YXRlczogW3sKLSAgICAgICAgICAgIGZvcm1hdDog
ImJncmE4dW5vcm0iLAotICAgICAgICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgICAgICBj
b2xvckJsZW5kOiB7fQotICAgICAgICB9XSwKLSAgICAgICAgdmVydGV4SW5wdXQ6IHsKLSAgICAg
ICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhT
dHJpZGUsCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgICAg
ICAgICBzaGFkZXJMb2NhdGlvbjogcG9zaXRpb25Mb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAg
ICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
IG9mZnNldDogY29sb3JPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0
NCIKLSAgICAgICAgICAgICAgICB9XQotICAgICAgICAgICAgfV0KLSAgICAgICAgfQotICAgIH07
Ci0gICAgT2JqZWN0LmZyZWV6ZShnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
cG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siSW52YWxpZCBHUFVTaGFkZXJNb2R1
bGUgZm9yIHZlcnRleCBzdGFnZSBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0g
ICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkU2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7IGNvZGU6ICJGb28iIH0pOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4U3Rh
Z2UgPSB7IG1vZHVsZTogYmFkU2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4TWFpbiIg
fTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3Jp
cHRvcik7Ci19OwotCi10ZXN0c1siSW52YWxpZCBHUFVTaGFkZXJNb2R1bGUgZm9yIGZyYWdtZW50
IHN0YWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVz
Y3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ip
OwotICAgIGxldCBiYWRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsg
Y29kZTogIkZvbyIgIH0pOwotICAgIGJhZERlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSA9IHsgbW9k
dWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhNYWluIiB9OwotCi0gICAg
cmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07
Ci0KLXRlc3RzWyJFbXB0eSBlbnRyeSBwb2ludCBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWls
LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5h
c3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogIkZvbyIgIH0pOwot
ICAgIGJhZERlc2NyaXB0b3IudmVydGV4U3RhZ2UgPSB7IG1vZHVsZTogYmFkU2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3Io
ZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVRleHR1cmVG
b3JtYXQgaW4gR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3Igc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29v
ZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgYmFkRGVzY3JpcHRvci5jb2xvclN0YXRl
cyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0gICAgICAg
IGFscGhhQmxlbmQ6IHt9LAotICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgIH1dOwotCi0gICAg
cmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07
Ci0KLXRlc3RzWyJUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwu
Il0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFz
c2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZENvbG9y
U3RhdGVzID0gbmV3IEFycmF5KDEwMCk7Ci0gICAgYmFkQ29sb3JTdGF0ZXMuZmlsbCh7Ci0gICAg
ICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAg
ICAgY29sb3JCbGVuZDoge30KLSAgICB9KTsKLSAgICBiYWREZXNjcmlwdG9yLmNvbG9yU3RhdGVz
ID0gYmFkQ29sb3JTdGF0ZXM7Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihk
ZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIlRvbyBtYW55IEdQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3JzIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBs
ZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOwotICAgIGxldCBiYWRWZXJ0ZXhCdWZmZXJzID0gbmV3IEFycmF5KDEwMCk7Ci0g
ICAgYmFkVmVydGV4QnVmZmVycy5maWxsKHsKLSAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhTdHJpZGUs
Ci0gICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBw
b3NpdGlvbkxvY2F0aW9uLAotICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICB9
XQotICAgIH0pOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4SW5wdXQgPSB7IHZlcnRleEJ1ZmZl
cnM6IGJhZFZlcnRleEJ1ZmZlcnMgfTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVy
cm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0c1siVG9vIG1hbnkgR1BVVmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4g
ewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZEF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoMTAw
KTsKLSAgICBiYWRBdHRyaWJ1dGVzLmZpbGwoewotICAgICAgICBzaGFkZXJMb2NhdGlvbjogcG9z
aXRpb25Mb2NhdGlvbiwKLSAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgIH0pOwotCi0gICAg
YmFkRGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsKLSAgICAgICAgdmVydGV4QnVmZmVyczogW3sK
LSAgICAgICAgICAgIHN0cmlkZTogdmVydGV4U3RyaWRlLAotICAgICAgICAgICAgYXR0cmlidXRl
U2V0OiBiYWRBdHRyaWJ1dGVzCi0gICAgICAgIH1dCi0gICAgfTsKLQotICAgIHJldHVybiBjcmVh
dGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0c1si
RHVwbGljYXRlIHNoYWRlckxvY2F0aW9uIGZvciB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZmFp
bC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3Qu
YXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBiYWREZXNjcmlw
dG9yLnZlcnRleElucHV0ID0gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAg
ICAgc3RyaWRlOiB2ZXJ0ZXhTdHJpZGUsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0g
ICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAg
IHNoYWRlckxvY2F0aW9uOiBjb2xvckxvY2F0aW9uLAotICAgICAgICAgICAgICAgIG9mZnNldDog
Y29sb3JPZmZzZXQsCi0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAg
ICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5k
RXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIGVudHJ5
IHBvaW50IHN0cmluZyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0
IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLSAgICBiYWREZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UgPSB7IG1vZHVsZTogZ29v
ZE1vZHVsZSwgZW50cnlQb2ludDogImJhciIgfTsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGlu
ZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZp
Y2UodGVzdHMpOwotCi1jb25zdCBjcmVhdGVQaXBlbGluZUFuZEVycm9yID0gKGRldmljZSwgZGVz
Y3JpcHRvcikgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
cG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjZGI1MDc5MjY2ZThmODg0ZDE2M2ViNDlhZDc2
NTYzYTg4MjE3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBDcmVhdGUgYmFzaWMgR1BVUmVuZGVyUGlw
ZWxpbmUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OTJiMzMxZTZkN2Q3Y2U4MmU3ODMwODNhYWQ0YmJiZWZj
NTg3YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlckNvZGUgPSBg
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1Zf
UG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2Ug
MDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMC4w
LCAxLjAsIDAuMCwgMS4wKTsKLX0KLWAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1
cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVy
Q29kZSB9KTsKLQotICAgICAgICBjb25zdCBsYXlvdXRCaW5kaW5nID0geyBiaW5kaW5nOiAwLCB2
aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5WRVJURVgsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIg
fTsKLSAgICAgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dCh7IGJpbmRpbmdzOiBbbGF5b3V0QmluZGluZ10gfSk7Ci0gICAgICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICAgICAgY29uc3QgcGlwZWxpbmUgPSBj
cmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBwaXBlbGluZUxh
eW91dCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHBpcGVsaW5lIGluc3RhbmNlb2YgR1BVUmVuZGVy
UGlwZWxpbmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBHUFVSZW5kZXJQaXBlbGluZSIpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyBHUFVSZW5kZXJQaXBl
bGluZSIpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvcmVzb3VyY2VzL2JsdWUtY2hlY2tlcmVkLnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZXNv
dXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YjJiYjZmYTNmMzg2MGMwMDc0YjA5OGZkZjBlOTIyMGZlMzU3YzM5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpsaXRlcmFsIDEzMTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlWNE1LTDlCZT81
aFclenxmRH5Kang0UjMmZS1LPS1jbGwoWDJ4b3l1CnpXSEFFK3c9ZjdaR1ImR0kwVGc1fUAkX3xO
ZjZVMSRFV21VcCYzLWxtMUl2MCg3c3JyX1RXX3kjPFloTUNWUmtoNwp6e3ItJjQxZiNhRC1HVWgk
e05eX2ckKiQoclRsdSpfez84e3ZNZ31JUGg2Vi0mMXFLY2Q1VFlkeVZoUEwhOHVRP3UKejBeM0l0
P31Qa1ZCamNEViFTald1dlk1WCYlMk9VSGdWKFB9RSthQ0dBVzdzeSp5T1czP1E2XnxOKV51P3U2
QDljCnpOSkxDYiRjWUZxRk51a1BnQHU4VShaUFgxS21kZWokJTl3fHZ3X0F1aF5II25NNWVXUT5w
IXllaV9DcHNfa2tKZQp5UUxyMX0tWEA2JGIzUD1qc0xyRXQ2cmVeakJuc35SVm1mdDNUcl58aEQ/
ZWFxI15DQWQ9ZCNXenAkUCFHZXpBeEUKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
cmVzb3VyY2VzL2dyZWVuLTQwMC5wbmcgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVzb3VyY2VzL2dy
ZWVuLTQwMC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjN2Y4OGU3YzVhYjU4
OGE4NjgxYzExZDdkMTZjMzJlOWY2YzQzZDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVy
YWwgMTQ4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VjRNS0xqTGJsaFU0PXtmZmZRcUxraD5H
KCY2N0l5S25gYnRNYFNTcgp6MUdneztHY3dHWUJMTmctNCk2KGFXJSRvdjVfZXopa2dNaEM7dXVt
Zj1qfW01TWotRmRnMEtFPl5WdD52bmRxUncKWCs8eVpEcW92c04zWHFKYXREbm17ci1VV3w0a2pR
cwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWM2OGY4NjJhMjhmYzQyYzU4NmUyMWFkNDgy
N2ZjZDY1MjI4M2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBUZXN0IHNoYWRlciBjb2RlIHZhbGlkYXRp
b24gd2hlbiBjcmVhdGluZyBtb2R1bGVzLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvc2hhZGVyLW1vZHVsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxl
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjYyZTExY2I2NjFmMmU0ZDc3
MjQxMDIwZTgyNWRjMmNmNjRmMGIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+VGVzdCBzaGFkZXIgdmFsaWRhdGlvbi48L3RpdGxlPgot
PHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJzID0gYAotc3RydWN0IFZlcnRleAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBhdHRyaWJ1dGVQb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXggdmVydGV4X21haW4oKQotewotICAgIFZlcnRleCByZXN1
bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDEpOwotICAgIHJlc3Vs
dC5hdHRyaWJ1dGVQb3NpdGlvbiA9IHJlc3VsdC5wb3NpdGlvbjsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1g
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgbGV0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJzIH0pOwotICAgICAgICBhc3NlcnRfdHJ1
ZShzaGFkZXJNb2R1bGUgaW5zdGFuY2VvZiBHUFVTaGFkZXJNb2R1bGUsICJTaGFkZXIgbW9kdWxl
IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwot
fSwgIlRlc3Qgc2hhZGVyIGNvZGUgdmFsaWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1vZHVsZXMuIik7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1w
bGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1w
bGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
c2ltcGxlLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBj
b21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDRkNGJkMjE5NjUwZDM0MTI0OTc4N2VjNmE3YTRh
MzE0NTYwMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4i
PgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ic2ltcGxlLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVk
Lmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3Jl
ZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1j
b25zdCBzaGFkZXJDb2RlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhfbWFpbih1aW50IHZpZCA6
IFNWX1ZlcnRleElEKSA6IFNWX1Bvc2l0aW9uCi17Ci0gICAgZmxvYXQ0IHY7Ci0gICAgc3dpdGNo
ICh2aWQpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHYgPSBmbG9hdDQoLTEsIDEsIDAsIDEpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHYgPSBmbG9hdDQoLTEsIC0xLCAw
LCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICB2ID0gZmxvYXQ0KDEs
IDEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICB2ID0gZmxv
YXQ0KDEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB2Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDogU1ZfVGFyZ2V0IDAKLXsKLSAg
ICByZXR1cm4gZmxvYXQ0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Ci19Ci1gCi0KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0
ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWlu
KGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hh
ZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2lj
UGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIg
PSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBl
bmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVl
dWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODQ1ODIwYjIxZGQwYTNmMjM4M2I4
ZmQ3MjFjMGI0ZGJlMzEwNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24tZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNT
IENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxD
b3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdl
IDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAtMSBoZWlnaHQgMSBkZXB0aCAx
IG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1
bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQg
LTEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggLTEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5z
aW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAtMSBzYW1wbGVDb3Vu
dCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGlu
ZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBz
YW1wbGVDb3VudCAtMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgLTEuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAwIGhlaWdodCAxIGRlcHRo
IDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdo
dCAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxIGhlaWdodCAxIGRlcHRoIDAgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5z
aW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAwIHNhbXBsZUNvdW50
IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDAgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNT
IENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAxIG1pcExl
dmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1
c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMzAwMCBk
ZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQg
cmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMTAw
MDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDEgaGVpZ2h0IDEwMDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNv
dW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDMwMDAgbWlwTGV2ZWxDb3Vu
dCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAu
Ci1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAzMDAwIGhlaWdodCAxIGRlcHRoIDEg
bWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVu
b3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAz
MDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxIGhlaWdodCAxIGRlcHRoIDMwMDAgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4
dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAyIHNhbXBsZUNv
dW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAy
IHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1Q
QVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2
ZWxDb3VudCAyIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVz
YWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRo
IDIgbWlwTGV2ZWxDb3VudCAyIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDNkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdo
dCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAzIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAyIGhlaWdodCAyIGRlcHRoIDIgbWlwTGV2ZWxDb3VudCAzIHNhbXBsZUNvdW50IDEgZGltZW5z
aW9uIDNkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDQgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5n
IGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNT
IENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxD
b3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdl
IDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEg
bWlwTGV2ZWxDb3VudCAyIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVu
b3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAx
IGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDNkIGZvcm1h
dCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAy
IGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDMgZGltZW5zaW9u
IDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBv
ZiB3aWR0aCAyIGhlaWdodCAyIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDMw
MCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENv
dW50IDEgc2FtcGxlQ291bnQgMiBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5v
cm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDIg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEg
aGVpZ2h0IDEgZGVwdGggMiBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxl
Q291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMiBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IGRlcHRoMzJmbG9h
dC1zdGVuY2lsOCB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBo
ZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEg
dGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBs
ZUNvdW50IDIgZGltZW5zaW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxvYXQtc3RlbmNpbDggdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gZ2FyYmFnZSBmb3JtYXQgcmdi
YTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWln
aHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBm
b3JtYXQgZ2FyYmFnZSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGgg
MSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lv
biAyZCBmb3JtYXQgcmdiYTh1aW50IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBv
ZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEg
ZGltZW5zaW9uIDJkIGZvcm1hdCBiZ3JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEg
dGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBiZ3JhOHVub3JtLXNyZ2IgdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmExNmZsb2F0IHVz
YWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRo
IDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2Jh
OHVub3JtIHVzYWdlIDEwMDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhl
aWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJk
IGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDMxLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Yg
d2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCA0IGRp
bWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSA4LgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmUtY3JlYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2
MDA1NTdhMWY5NDc4ZmYzMjQzYTA4NTcxOGJjZjgwNDcwN2M5Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1j
cmVhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0cyBmb3IgY3JlYXRpbmcgdGV4
dHVyZSB2aWV3cy48L3RpdGxlPgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgbGV0IHRlc3RzID0gWwot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAg
ICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiM2QiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6
IDAsIHN1Y2Nlc3M6IHRydWV9LAotCi0gICAgICAgIC8vIFRlc3QgbmVnYXRpdmUgdmFsdWVzCi0g
ICAgICAgIHt3aWR0aDogLTEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogLTEs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAg
ICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAtMSwgbWlwTGV2ZWxDb3VudDogMSwg
c2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVz
YWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogLTEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIy
ZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAg
ICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNh
bXBsZUNvdW50OiAtMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRl
cHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQi
LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IC0xLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAg
ICAgICAgLy8gVGVzdCB6ZXJvIHZhbHVlcwotICAgICAgICB7d2lkdGg6IDAsIGhlaWdodDogMSwg
ZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIy
ZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAg
ICAgICB7d2lkdGg6IDEsIGhlaWdodDogMCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNh
bXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVw
dGg6IDAsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIs
IGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAg
ICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDAsIHNhbXBs
ZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTog
MCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6
IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAwLCBkaW1lbnNpb246ICIyZCIsIGZv
cm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotCi0gICAgICAg
IC8vIFRlc3QgbWF4aW11bSBzaXplcwotICAgICAgICB7d2lkdGg6IDEwMDAwLCBoZWlnaHQ6IDEs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAg
ICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDMwMDAsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAx
LCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxMDAwMCwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxMDAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdo
dDogMSwgZGVwdGg6IDMwMDAsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1l
bnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFs
c2V9LAotICAgICAgICB7d2lkdGg6IDMwMDAsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMzAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vzczog
ZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDMwMDAsIG1pcExl
dmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJn
YmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotCi0gICAgICAgIC8vIFRlc3Qg
bWlwbWFwcGVkIHRleHR1cmVzCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291
bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBz
dWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBt
aXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6
IDIsIGhlaWdodDogMiwgZGVwdGg6IDIsIG1pcExldmVsQ291bnQ6IDIsIHNhbXBsZUNvdW50OiAx
LCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMywgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwg
aGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMywgc2FtcGxlQ291bnQ6IDEsIGRp
bWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBm
YWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtdWx0aXNhbXBsaW5nCi0gICAgICAgIHt3aWR0aDog
MSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQs
IGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAyLCBo
ZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRy
dWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDIsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNp
b246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9
LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6
IDEsIHNhbXBsZUNvdW50OiAzLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDog
MiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAzMDAsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDIsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0K
LSAgICAgICAgLy8gVGVzdCBkaW1lbnNpb24KLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAg
ICAgICB7d2lkdGg6IDEsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNh
bXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0
aDogMiwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwg
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAg
IHt3aWR0aDogMiwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDIsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lk
dGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDIsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50
OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCBkZXB0aCB0ZXh0dXJlcwotICAgICAgICB7
d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNv
dW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAyLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogImRlcHRo
MzJmbG9hdC1zdGVuY2lsOCIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAg
Ly8gVGVzdCBlbnVtcwotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1p
cExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICJnYXJiYWdlIiwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3
aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291
bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiZ2FyYmFnZSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAi
cmdiYTh1aW50IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEs
IGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIyZCIsIGZvcm1hdDogImJncmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vzczog
dHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxD
b3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiYmdyYTh1
bm9ybS1zcmdiIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEs
IGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmExNmZsb2F0IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IHRydWV9LAotCi0gICAgICAgIC8vIFRlc3QgdXNhZ2UKLSAgICAgICAge3dpZHRoOiAxLCBoZWln
aHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5z
aW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDEwMDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENv
dW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5D
T1BZX0RTVCB8IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlNUT1JB
R0UgfCBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQsIHN1Y2Nlc3M6IHRydWV9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNUT1JBR0UsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICBdOwot
ICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICAgICAgICAgIGxldCBjYXVnaHQgPSBmYWxzZTsKLSAgICAgICAgICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHtzaXplOiB7
d2lkdGg6IHRlc3Qud2lkdGgsIGhlaWdodDogdGVzdC5oZWlnaHQsIGRlcHRoOiB0ZXN0LmRlcHRo
fSwgbWlwTGV2ZWxDb3VudDogdGVzdC5taXBMZXZlbENvdW50LCBzYW1wbGVDb3VudDogdGVzdC5z
YW1wbGVDb3VudCwgZGltZW5zaW9uOiB0ZXN0LmRpbWVuc2lvbiwgZm9ybWF0OiB0ZXN0LmZvcm1h
dCwgdXNhZ2U6IHRlc3QudXNhZ2V9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXh0
dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIkNhbm5vdCBjcmVhdGUgdGV4dHVyZS4iKTsKLSAg
ICAgICAgICAgIH0gY2F0Y2ggewotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKCF0ZXN0LnN1
Y2Nlc3MsICJDcmVhdGluZyB0ZXh0dXJlIHNob3VsZCAiICsgKHRlc3Quc3VjY2VzcyA/ICJub3Qg
IiA6ICIiKSArICJmYWlsLiIpOwotICAgICAgICAgICAgICAgIGNhdWdodCA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpLnRoZW4o
ZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVzdC5zdWNjZXNzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkNvdWxkIG5vdCBjcmVhdGUgdGV4dHVy
ZTogIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLm1lc3NhZ2UpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9IGVycm9yLm1lc3NhZ2U7Ci0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IsIG51bGwsICJDb3VsZCBub3QgY3JlYXRl
IHRleHR1cmU6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjYXVn
aHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAiQ3JlYXRlZCB0ZXh0dXJl
OiAiOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyb3IubWVzc2FnZTsKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoISEoY2F1Z2h0IHx8IGVycm9yKSwgIkNyZWF0ZWQgdGV4
dHVyZSB3aGVuIHNob3VsZG4ndCBoYXZlOiAiICsgbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZmFsc2UsICJkZXZpY2UgbG9zdCIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgYENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAke3Rlc3Qud2lkdGh9IGhlaWdodCAke3Rlc3QuaGVpZ2h0fSBkZXB0aCAke3Rlc3QuZGVw
dGh9IG1pcExldmVsQ291bnQgJHt0ZXN0Lm1pcExldmVsQ291bnR9IHNhbXBsZUNvdW50ICR7dGVz
dC5zYW1wbGVDb3VudH0gZGltZW5zaW9uICR7dGVzdC5kaW1lbnNpb259IGZvcm1hdCAke3Rlc3Qu
Zm9ybWF0fSB1c2FnZSAke3Rlc3QudXNhZ2V9LmApOwotICAgIH0KLX0KLQotcnVuVGVzdHMoKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1
cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0
dXJlLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZjOGZlMmI5Y2UzNjc0NWVmNmVkODUwYmIzMTVkMjM5NjA2MDA4MDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlz
IGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuQW5kQmx1ZUNoZWNrZXJib2Fy
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90
ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg4YTM1OTVmMjZmOWVhMDQzYjJiMGU3M2UxNTQ3MDFhODFjYjI0ZjYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1
cmUtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVs
bG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BV
IGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBo
cmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFz
cyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJv
YXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQot
Y29uc3QgcG9zaXRpb25CdWZmZXJJbmRleCA9IDA7Ci1jb25zdCB0ZXhDb29yZHNCdWZmZXJJbmRl
eCA9IDE7Ci1jb25zdCBwb3NpdGlvbkF0dHJpYnV0ZU51bSA9IDA7Ci1jb25zdCB0ZXhDb29yZHNB
dHRyaWJ1dGVOdW0gPSAxOwotY29uc3QgYmluZEdyb3VwSW5kZXggPSAwOwotY29uc3QgdGV4dHVy
ZUJpbmRpbmdOdW0gPSAwOwotY29uc3Qgc2FtcGxlckJpbmRpbmdOdW0gPSAxOwotCi1jb25zdCBz
aGFkZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1dGUoMCk7Ci19Owot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgke3Bvc2l0aW9uQXR0cmlidXRlTnVtfSksIGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1dGUo
JHt0ZXhDb29yZHNBdHRyaWJ1dGVOdW19KSkgewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZP
dXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB2T3V0LnRleENvb3JkcyA9IHRleENvb3JkczsK
LSAgICByZXR1cm4gdk91dDsKLX0KLQotc3RydWN0IFRleHR1cmVTYW1wbGVyCi17Ci0gICAgVGV4
dHVyZTJEPGZsb2F0ND4gdCA6IHJlZ2lzdGVyKHQke3RleHR1cmVCaW5kaW5nTnVtfSwgc3BhY2Uk
e2JpbmRHcm91cEluZGV4fSk7Ci0gICAgc2FtcGxlciBzIDogcmVnaXN0ZXIocyR7c2FtcGxlckJp
bmRpbmdOdW19LCBzcGFjZSR7YmluZEdyb3VwSW5kZXh9KTsKLX07Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudF9tYWluKGZsb2F0MiB0ZXhDb29yZHMgOiBhdHRyaWJ1dGUoMCksIFRleHR1cmVT
YW1wbGVyIHRleHR1cmVTYW1wbGVyKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIFNhbXBs
ZSh0ZXh0dXJlU2FtcGxlci50LCB0ZXh0dXJlU2FtcGxlci5zLCB0ZXhDb29yZHMpOwotfQotYAot
Ci1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgdmFyIGJ1ZmZl
ckRlc2NyaXB0b3JzID0gW107Ci0gICAgYnVmZmVyRGVzY3JpcHRvcnNbcG9zaXRpb25CdWZmZXJJ
bmRleF0gPSB7Ci0gICAgICAgIHN0cmlkZTogNCAqIDQsCi0gICAgICAgIGF0dHJpYnV0ZVNldDog
W3sKLSAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICBzaGFkZXJMb2Nh
dGlvbjogcG9zaXRpb25BdHRyaWJ1dGVOdW0KLSAgICAgICAgfV0KLSAgICB9OwotICAgIGJ1ZmZl
ckRlc2NyaXB0b3JzW3RleENvb3Jkc0J1ZmZlckluZGV4XSA9IHsKLSAgICAgICAgc3RyaWRlOiA0
ICogMiwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgZm9ybWF0OiAiZmxv
YXQyIiwKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiB0ZXhDb29yZHNBdHRyaWJ1dGVOdW0K
LSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJuIHsgdmVydGV4QnVmZmVyczogYnVmZmVy
RGVzY3JpcHRvcnMgfTsKLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8v
IEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwot
Ci0gICAgY29uc3QgcG9zaXRpb25BcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAv
LyBmbG9hdDQgeHl6dwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAx
LAotICAgICAgICAxLCAxLCAwLCAxLCAKLSAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKTsKLSAg
ICBjb25zdCBwb3NpdGlvbkJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBz
aXplOiBwb3NpdGlvbkFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJU
RVggfSwgcG9zaXRpb25BcnJheS5idWZmZXIpOwotCi0gICAgY29uc3QgdGV4Q29vcmRzQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQyIHRleENvb3JkcwotICAgICAg
ICAwLCAwLAotICAgICAgICAwLCAxLAotICAgICAgICAxLCAwLAotICAgICAgICAxLCAxCi0gICAg
XSk7Ci0gICAgY29uc3QgdGV4dHVyZUNvb3JkQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEo
ZGV2aWNlLCB7IHNpemU6IHRleENvb3Jkc0FycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfSwgdGV4Q29vcmRzQXJyYXkuYnVmZmVyKTsKLQotICAgIGNvbnN0IHZl
cnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwotCi0g
ICAgLy8gTG9hZCB0ZXh0dXJlIGltYWdlCi0gICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsK
LSAgICBjb25zdCBpbWFnZUxvYWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7IAot
ICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7IAotICAgICAgICBpbWFnZS5z
cmMgPSAicmVzb3VyY2VzL2JsdWUtY2hlY2tlcmVkLnBuZyI7Ci0gICAgfSk7Ci0gICAgYXdhaXQg
UHJvbWlzZS5yZXNvbHZlKGltYWdlTG9hZFByb21pc2UpOwotCi0gICAgLy8gQ29udmVydCBpbWFn
ZSB0byBkYXRhIGFuZCBmaWxsIEdQVUJ1ZmZlcgotICAgIGNvbnN0IGNhbnZhczJkID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzMmQud2lkdGggPSBpbWFnZS53
aWR0aDsKLSAgICBjYW52YXMyZC5oZWlnaHQgPSBpbWFnZS5oZWlnaHQ7Ci0gICAgY29uc3QgY29u
dGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICBjb250ZXh0MmQuZHJhd0lt
YWdlKGltYWdlLCAwLCAwKTsKLSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1h
Z2VEYXRhKDAsIDAsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgY29uc3QgdGV4
dHVyZUJ1ZmZlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IGltYWdlRGF0YS5kYXRhLmxl
bmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDCi0gICAgfTsKLSAg
ICBjb25zdCB0ZXh0dXJlQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB0ZXh0
dXJlQnVmZmVyRGVzY3JpcHRvciwgaW1hZ2VEYXRhLmRhdGEuYnVmZmVyKTsKLQotICAgIC8vIENy
ZWF0ZSBHUFVUZXh0dXJlCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7Ci0gICAgICAgIHdpZHRo
OiBpbWFnZS53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsCi0gICAgICAgIGRl
cHRoOiAxCi0gICAgfTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAgICAg
ICBzaXplOiB7IHdpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsIGRlcHRo
OiAxIH0sCi0gICAgICAgIGZvcm1hdDogInJnYmE4dW5vcm0iLAotICAgICAgICB1c2FnZTogR1BV
VGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQKLSAgICB9Owot
ICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRv
cik7Ci0KLSAgICAvLyBCaW5kIHRleHR1cmUgYW5kIGEgc2FtcGxlciB0byBwaXBlbGluZQotICAg
IGNvbnN0IHRleHR1cmVMYXlvdXRCaW5kaW5nID0geyAKLSAgICAgICAgYmluZGluZzogdGV4dHVy
ZUJpbmRpbmdOdW0sIAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVO
VCwgCi0gICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiIAotICAgIH07Ci0gICAgY29uc3Qg
c2FtcGxlckxheW91dEJpbmRpbmcgPSB7Ci0gICAgICAgIGJpbmRpbmc6IHNhbXBsZXJCaW5kaW5n
TnVtLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCwKLSAgICAg
ICAgdHlwZTogInNhbXBsZXIiCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7Ci0gICAgICAgIGJpbmRpbmdzOiBbdGV4dHVyZUxheW91dEJpbmRpbmcsIHNh
bXBsZXJMYXlvdXRCaW5kaW5nXQotICAgIH07Ci0gICAgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRH
cm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3QgdGV4dHVyZUJp
bmRpbmcgPSB7IAotICAgICAgICBiaW5kaW5nOiB0ZXh0dXJlQmluZGluZ051bSwgCi0gICAgICAg
IHJlc291cmNlOiB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgCi0gICAgfTsKLSAgICBjb25z
dCBzYW1wbGVyQmluZGluZyA9IHsKLSAgICAgICAgYmluZGluZzogc2FtcGxlckJpbmRpbmdOdW0s
Ci0gICAgICAgIHJlc291cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7IG1pbkZpbHRlcjogIm5l
YXJlc3QiLCBtYWdGaWx0ZXI6ICJuZWFyZXN0IiB9KQotICAgIH07Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0gewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwKLSAg
ICAgICAgYmluZGluZ3M6IFt0ZXh0dXJlQmluZGluZywgc2FtcGxlckJpbmRpbmddCi0gICAgfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgLy8gUGlwZWxpbmUgYW5kIHJlbmRlcgotICAgIGNvbnN0IHBpcGVs
aW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgcGlw
ZWxpbmVMYXlvdXQsIHZlcnRleElucHV0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckNvcHlWaWV3ID0gewotICAgICAgICBidWZmZXI6IHRleHR1cmVCdWZmZXIsCi0gICAgICAgIHJv
d1BpdGNoOiBpbWFnZS53aWR0aCAqIDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAgfTsK
LSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7IHRleHR1cmU6IHRleHR1cmUgfTsKLSAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHlWaWV3LCB0ZXh0dXJl
Q29weVZpZXcsIHRleHR1cmVTaXplKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFz
aWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgIHBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoYmlu
ZEdyb3VwSW5kZXgsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cyhwb3NpdGlvbkJ1ZmZlckluZGV4LCBbcG9zaXRpb25CdWZmZXIsIHRleHR1cmVDb29yZEJ1ZmZl
cl0sIFswLCAwXSk7Ci0gICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBwYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgp
OwotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICBwb3Np
dGlvbkJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgdGV4dHVyZUNvb3JkQnVmZmVyLmRlc3Ryb3koKTsK
LSAgICB0ZXh0dXJlLmRlc3Ryb3koKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTY5NDNkZGE0ZWE4NjdkMzE0ZmMyMjhmN2RmYmNmZjAyMDkwNGY4NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDcgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJvbSBzd2FwIGNoYWluLgot
UEFTUyBDcmVhdGUgYmFzaWMgZGVwdGggdGV4dHVyZSBmcm9tIGRldmljZS4KLVBBU1MgQ3JlYXRl
IGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLgotUEFTUyBDcmVhdGUgYmFzaWMgM0QgdGV4
dHVyZSBmcm9tIGRldmljZS4KLVBBU1MgQ3JlYXRlIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlICh3
aGljaCBjYW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZpY2UuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjcxYTk0M2RkN2NhMDNhZTNlOTIzYTVlMzM1ZjRmODg4OTdhNTE3My4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4
dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+QmFzaWMgR1BVVGV4
dHVyZSBUZXN0cy48L3RpdGxlPgotPGJvZHk+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2Fu
dmFzIik7ICAgIAotbGV0IGNvbnRleHQ7Ci0KLWxldCB0ZXhTaXplID0gewotICAgIHdpZHRoOiBj
YW52YXMud2lkdGgsCi0gICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAotICAgIGRlcHRoOiAxCi19
OwotCi1sZXQgdGV4RGVzY3JpcHRvciA9IHsKLSAgICBzaXplOiB0ZXhTaXplLAotICAgIGZvcm1h
dDogImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0gICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5P
VVRQVVRfQVRUQUNITUVOVAotfTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4g
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBzd2FwQ2hh
aW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0KLSAgICAgICAgY29u
c3QgdGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgICAgICBhc3Nl
cnRfdHJ1ZSh0ZXh0dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBhY3F1
aXJlZCBuZXh0IHRleHR1cmUuIik7Ci0KLSAgICAgICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmVWaWV3
IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZpZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCB0ZXh0dXJl
IHZpZXcgZnJvbSBuZXh0IHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7
Ci19LCAiQ3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hhaW4uIik7Ci0KLXByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICAgICAgY29uc3QgZGVwdGhUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1
cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlcHRoVGV4dHVyZSBpbnN0
YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBkZXB0aCB0ZXh0dXJlLiIp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyBkZXB0aCB0
ZXh0dXJlIGZyb20gZGV2aWNlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVy
biBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERl
c2NyaXB0b3Iuc2FtcGxlQ291bnQgPSA0OwotICAgICAgICB0ZXhEZXNjcmlwdG9yLmZvcm1hdCA9
ICJyZ2JhOHVub3JtIjsKLSAgICAgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRleHR1cmVV
c2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDCi0KLSAgICAgICAgY29uc3Qg
bXVsdGlzYW1wbGVkVGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3Ip
OwotICAgICAgICBhc3NlcnRfdHJ1ZShtdWx0aXNhbXBsZWRUZXh0dXJlIGluc3RhbmNlb2YgR1BV
VGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyA0eCBtdWx0aXNh
bXBsZWQgdGV4dHVyZS4iKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICB0ZXhEZXNjcmlw
dG9yLnNpemUuZGVwdGggPSAzOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnNhbXBsZUNvdW50ID0g
MTsKLSAgICAgICAgdGV4RGVzY3JpcHRvci5kaW1lbnNpb24gPSAiM2QiOwotCi0gICAgICAgIGNv
bnN0IHRleHR1cmUzZCA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOwotICAg
ICAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlM2QgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vz
c2Z1bGx5IGNyZWF0ZWQgYmFzaWMgM0QgdGV4dHVyZS4iKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICB9KTsKLX0sICJDcmVhdGUgYmFzaWMgM0QgdGV4dHVyZSBmcm9tIGRldmljZS4iKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgICAgICB0ZXhEZXNjcmlwdG9yLmZvcm1hdCA9ICJyZ2JhOHVu
b3JtIjsKLSAgICAgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRleHR1cmVVc2FnZS5PVVRQ
VVRfQVRUQUNITUVOVCB8IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEOwotCi0gICAgICAgIGNvbnN0
IHJlbmRlclRhcmdldCA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOwotICAg
ICAgICBhc3NlcnRfdHJ1ZShyZW5kZXJUYXJnZXQgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3Vj
Y2Vzc2Z1bGx5IGNyZWF0ZWQgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0LiIpOwotICAgICAgICBj
b25zdCB0ZXh0dXJlVmlldyA9IHJlbmRlclRhcmdldC5jcmVhdGVEZWZhdWx0VmlldygpOwotICAg
ICAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlVmlldyBpbnN0YW5jZW9mIEdQVVRleHR1cmVWaWV3LCAi
U3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgdGV4dHVyZSB2aWV3IGZyb20gb2ZmLXNjcmVlbiByZW5kZXIg
dGFyZ2V0LiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBhIHJl
bmRlciB0YXJnZXQgdGV4dHVyZSAod2hpY2ggY2FuIGJlIHNhbXBsZWQpIGZyb20gZGV2aWNlLiIp
OwotCi0vLyBGSVhNRTogQWRkIHRlc3RzIGZvciAxRCB0ZXh0dXJlcywgdGV4dHVyZUFycmF5cywg
YW5kIEdQVVRleHR1cmVWaWV3cy4KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS91bmNhcHR1cmVkLWVycm9ycy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMDJhY2Q2OGNlY2QwY2Y0ZTdhMTRlMTA3NDhhM2Nl
ZWRhNWExOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDcgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRl
QnVmZmVyKCk6IEJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUg
dXNhZ2UhCi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVmZmVy
IGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLQotUEFTUyBG
aXJlIGFuIHVuY2FwdHVyZWQgR1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0ICdkZXZpY2UnLgotUEFT
UyBJbnRlcmNlcHQgYW4gdW5jYXB0dXJlZCBlcnJvciB3aXRoIEdQVURldmljZS5vbnVuY2FwdHVy
ZWRlcnJvciBFdmVudEhhbmRsZXIuCi1QQVNTIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50IGFzeW5j
IHRlc3QuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS91bmNhcHR1cmVkLWVycm9y
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMmVjNDIwZDBkZjllN2E2OTNhYzYxNzM5OWY1OGE0
OTgxMjcxNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw1MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
dGl0bGU+VGVzdCBFcnJvciBTY29wZXMuPC90aXRsZT4KLTxib2R5PgotPHNjcmlwdCBzcmM9Impz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1sZXQgdGVzdHMgPSB7fTsK
LWxldCBldmVudFdhdGNoZXI7Ci0KLWNvbnN0IGNhdXNlVW5jYXB0dXJlZEVycm9yRXZlbnQgPSBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7Ci19Owot
Ci10ZXN0c1siRmlyZSBhbiB1bmNhcHR1cmVkIEdQVURldmljZSBlcnJvciBldmVudCBhdCAnZGV2
aWNlJy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYXN5bmNUZXN0ID0gYXN5bmNf
dGVzdCgiR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgYXN5bmMgdGVzdC4iKTsKLSAgICBjb25zdCBl
dmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKGFzeW5jVGVzdCwgZGV2aWNlLCAidW5jYXB0
dXJlZGVycm9yIik7Ci0gICAgY29uc3QgZXZlbnRGaXJlZCA9IGV2ZW50V2F0Y2hlci53YWl0X2Zv
cigidW5jYXB0dXJlZGVycm9yIikudGhlbihldmVudCA9PiB7Ci0gICAgICAgIGFzc2VydF90cnVl
KGV2ZW50LmVycm9yIGluc3RhbmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yLCAiU3VjY2Vzc2Z1bGx5
IGZpcmVkIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LiIpOwotICAgICAgICBhc3luY1Rlc3QuZG9u
ZSgpOwotICAgIH0pOwotCi0gICAgY29uc3QgdGltZW91dCA9IG5ldyBQcm9taXNlKChfLCByZWpl
Y3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGltZWQgb3V0IHdh
aXRpbmcgZm9yIGVycm9yIGV2ZW50ISIpIH0sIDMwMDApOwotICAgIH0pOwotCi0gICAgY2F1c2VV
bmNhcHR1cmVkRXJyb3JFdmVudChkZXZpY2UpOwotCi0gICAgcmV0dXJuIFByb21pc2UucmFjZShb
ZXZlbnRGaXJlZCwgdGltZW91dF0pOwotfTsKLQotdGVzdHNbIkludGVyY2VwdCBhbiB1bmNhcHR1
cmVkIGVycm9yIHdpdGggR1BVRGV2aWNlLm9udW5jYXB0dXJlZGVycm9yIEV2ZW50SGFuZGxlci4i
XSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgY2FwdHVyZWRFcnJvclByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgZGV2aWNlLm9udW5jYXB0dXJlZGVycm9y
ID0gZXZlbnQgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZXJyb3IgaW5zdGFu
Y2VvZiBHUFVWYWxpZGF0aW9uRXJyb3IsICJTdWNjZXNzZnVsbHkgZmlyZWQgR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuIik7Ci0gICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgY2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVudChkZXZpY2UpOwotICAgIH0pOwotCi0gICAg
Y29uc3QgdGltZW91dCA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGVycm9yIGV2ZW50
ISIpIH0sIDMwMDApOwotICAgIH0pOwotCi0gICAgcmV0dXJuIFByb21pc2UucmFjZShbY2FwdHVy
ZWRFcnJvclByb21pc2UsIHRpbWVvdXRdKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERldmljZSh0ZXN0
cyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUt
c3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1
YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZl
ci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRN
TCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxl
dGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52
YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYmU4NzU3N2U2YjJlNGUzNWZjMWNh
MTcwYTIxNWZiZmY2OGY4Y2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxl
PgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMg
YSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZlcnRleC1idWZmZXIt
dHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMg
YmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4
T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNv
bG9yIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGdyZWVuIDogYXR0cmlidXRlKDEp
KQotewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBwb3NpdGlvbjsK
LSAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIGdyZWVuLCAwLCAxKTsKLSAgICByZXR1cm4gdk91
dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0
cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1m
dW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4QXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQ0IHh5encsIGZsb2F0IGcK
LSAgICAgICAgLTEsIDEsIDAsIDEsIDEsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwgMSwKLSAgICAg
ICAgMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEsIDEKLSAgICBdKTsKLQotICAg
IHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2aWNlLCAKLSAgICAgICAg
eyAKLSAgICAgICAgICAgIHNpemU6IHZlcnRleEFycmF5LmJ5dGVMZW5ndGgsIAotICAgICAgICAg
ICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RQotICAgICAgICB9LAotICAgICAgICB2ZXJ0ZXhBcnJheS5idWZmZXIKLSAgICApOwotfQotCi1m
dW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAg
ICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgIHN0cmlkZTogNCAqIDUsCi0gICAg
ICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0
IiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMAotICAgICAgICAgICAgfSwgewot
ICAgICAgICAgICAgICAgIG9mZnNldDogNCAqIDQsCi0gICAgICAgICAgICAgICAgZm9ybWF0OiAi
ZmxvYXQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxCi0gICAgICAgICAgICB9
XQotICAgICAgICB9XQotICAgIH0KLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwot
ICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2Rl
IH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2Up
OwotICAgIGNvbnN0IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVz
Y3JpcHRvcigpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFk
ZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgdmVydGV4SW5wdXREZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwot
ICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBj
b21tYW5kRW5jb2Rlcik7Ci0gICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlw
ZWxpbmUsIHZlcnRleEJ1ZmZlcik7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUo
KTsKLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0gICAgdmVy
dGV4QnVmZmVyLmRlc3Ryb3koKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nv
ci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
dmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOGZlMmI5Y2UzNjc0NWVmNmVkODUwYmIzMTVkMjM5
NjA2MDA4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVj
a2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFz
Iik7Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1y
ZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Np
c3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBlNzk0MTQ2MDYxZmQ1NzQ1MzFhMTIwNjA4ODc5YjQ4OWEwZGJiOTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Zp
ZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9InZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBhIDQg
YnkgNCBibHVlL2dyZWVuIGNoZWNrZXJib2FyZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsK
LSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAg
diA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAg
ICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9t
YWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAuMCwg
MS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGNvbnN0IHN3YXBDaGFp
biA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTog
UmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25z
dCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgY29uc3QgYmx1ZUF0dGFjaG1lbnQgPSB7Ci0gICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBD
aGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRWaWV3KCksCi0gICAgICAgIGxv
YWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJD
b2xvcjogeyByOiAwLCBnOiAwLCBiOiAxLCBhOiAxIH0KLSAgICB9OwotICAgIGNvbnN0IHBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2htZW50
czogW2JsdWVBdHRhY2htZW50XSB9KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBl
bGluZSk7Ci0KLSAgICBmdW5jdGlvbiBkcmF3Vmlld3BvcnQoeCwgeSkgewotICAgICAgICBwYXNz
RW5jb2Rlci5zZXRWaWV3cG9ydCh4LCB5LCAxMDAsIDEwMCwgMCwgMSk7Ci0gICAgICAgIHBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHJhd1NjaXNz
b3JSZWN0KHgsIHkpIHsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0U2Npc3NvclJlY3QoeCwgeSwg
MTAwLCAxMDApOwotICAgICAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIH0K
LQotICAgIHBhc3NFbmNvZGVyLnNldFNjaXNzb3JSZWN0KDAsIDAsIDIwMCwgNDAwKTsKLSAgICBk
cmF3Vmlld3BvcnQoMTAwLCAwKTsKLSAgICBkcmF3Vmlld3BvcnQoMCwgMTAwKTsKLSAgICBkcmF3
Vmlld3BvcnQoMTAwLCAyMDApOwotICAgIGRyYXdWaWV3cG9ydCgwLCAzMDApOwotCi0gICAgLy8g
RHJhdyBvdXRzaWRlIG9mIHNjaXNzb3IgcmVjdCBzaG91bGQgbm90IGFwcGVhci4KLSAgICBkcmF3
Vmlld3BvcnQoMjAwLCAxMDApOwotCi0gICAgcGFzc0VuY29kZXIuc2V0Vmlld3BvcnQoMjAwLCAw
LCAyMDAsIDQwMCwgMCwgMSk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0KDMwMCwgMCk7Ci0gICAgZHJh
d1NjaXNzb3JSZWN0KDIwMCwgMTAwKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMzAwLCAyMDApOwot
ICAgIGRyYXdTY2lzc29yUmVjdCgyMDAsIDMwMCk7Ci0KLSAgICAvLyBEcmF3IG91dHNpZGUgb2Yg
dmlld3BvcnQgc2hvdWxkIG5vdCBhcHBlYXIuCi0gICAgZHJhd1NjaXNzb3JSZWN0KDAsIDApOwot
Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdl
dFF1ZXVlKCk7Ci0KLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7
Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICB0ZXN0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dyZWVu
QW5kQmx1ZUNoZWNrZXJib2FyZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6
bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dp
enpsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZmY0ZWVi
NjI5OThjZmNiNGZmNmVjOTg3YzlkM2ViOWZlNTQyMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mt
b2Ytc3dpenpsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQot
UEFTUyBjYW50VGFrZUFkZHJlc3NPZlN3aXp6bGUKLVBBU1MgY2FudEFzc2lnblJ2YWx1ZVN3aXp6
bGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dp
enpsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzJmMjc5ZTQ5OTIwY2FkZWNkOWRj
OWJlMzU1NTY3YzkzMzY1NjM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hZGRyZXNzLW9mLXN3aXp6bGUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+YmFkIHN3aXp6bGUuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuY2FudFRha2VBZGRyZXNzT2ZTd2l6emxlID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgaW50MiB2
OwotICAgICAgICAgICAgdGhyZWFkIGludCogeCA9ICZ2Lng7Ci0gICAgICAgIH0KLSAgICBgKTsK
LQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAg
ICAgaW50MiB2OwotICAgICAgICAgICAgdGhyZWFkIGludDIqIHggPSAmdi54eTsKLSAgICAgICAg
fQotICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5jYW50QXNzaWduUnZhbHVlU3dpenpsZSA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQyIHgoKSB7Ci0g
ICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQotICAg
ICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgIHgoKS54eSA9IGludDIoMTAsIDIwKTsKLSAg
ICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnkt
dmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZh
NTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRy
aWJ1dGUtbG9jYXRpb25zLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9h
cmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UzYmUzNDIwNTNkNjFjMDE0NzIzODZlZWI1YTNj
NGNlMmVhMGRlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9j
YXRpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRl
eE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDE3MyksIGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDQ5OCkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotICAgIHJl
c3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0
NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChk
ZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAg
IGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDE3MywgZm9ybWF0OiAiZmxvYXQ0
In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogNDk4LCBmb3JtYXQ6
ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBh
dHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAu
bWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwot
Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3Jl
YXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0g
e2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJl
bmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBh
c3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI0ZTA0OGMxYzA2Y2Q1
MDE3OGM3OTgzYjQxZjk2ZmZmNjYwYzNiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVh
dGlvbi1vcmRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQot
UEFTUyBldmFsdWF0aW9uT3JkZXJGb3JBcmd1bWVudHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzhlODg4YmNlMGY4M2NhMTc4ZTM4YWNmOGFiMGNkZDM0
NzI5NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+Q29weWluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5l
dmFsdWF0aW9uT3JkZXJGb3JBcmd1bWVudHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsgcmV0dXJuICpiYXIoMTApICsgKmJhcigyMCk7
IH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoaW50IHZhbHVlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQgeCA9IHZhbHVlOwotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9
Ci0KLSAgICAgICAgaW50IGJheigpIHsgcmV0dXJuIHBsdXMoYmFyKDEwKSwgYmFyKDIwKSk7IH0K
LQotICAgICAgICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gKnggKyAqeTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
MzApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJi
YXoiLCBbXSksIDQwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5n
dGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJy
YXktbGVuZ3RoLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxZDMyZDJjM2RiODM0NDU0ZGVkZDk4ZjBjZTdiZTc2OTBjNGViMGEzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBub25BcnJheVJlZkFycmF5TGVuZ3RoRmFpbAotUEFT
UyBub25BcnJheVJlZkFycmF5TGVuZ3RoU3VjY2VlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYXJyYXktbGVuZ3RoLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMTM3M2ZjZWQyNjhlN2FjMTk1YmEyYWQ2ZGZkYzI3YjczYjk2OTA2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5U
ZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubm9u
QXJyYXlSZWZBcnJheUxlbmd0aEZhaWwgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdGhyZWFkIHVpbnQqIGxlbmd0aFB0cigpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gJihhcnJheS5sZW5ndGgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LX0KLQotd2hsc2xUZXN0cy5ub25BcnJheVJlZkFycmF5TGVuZ3RoU3VjY2VlZCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBhcnJh
eS5sZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBiYXIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnRbNzU0XSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBhcnJheS5sZW5ndGg7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA3NTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCA3NTQpOwotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODEzMTdlZWNkMzU0ODRiMDVjOTY0YzJjYWUxODBhM2Q3MWNkYzEy
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGYxMzJhMDk3ZmFmMTdkOTZkMmJiNTgwODFlYWRhOGQ5YTk1M2YyNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2
OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm9vYiBvbiBhcnJh
eXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZmllbGRTaG91bGRC
ZU51bGwgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3Ry
dWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIGludCB5OwotICAgICAg
ICAgICAgaW50IHo7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb28odWludCBpKSB7Ci0gICAg
ICAgICAgICBGb29bMTBdIGZvb3M7Ci0gICAgICAgICAgICB0aHJlYWQgRm9vKiBmb28gPSAmZm9v
c1tpXTsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICYoZm9vLT56KTsKLSAgICAgICAg
ICAgICpwdHIgPSA0MjsKLSAgICAgICAgICAgIHJldHVybiBmb29zWzBdLnogPT0gNDI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBib29sIGJhcigpIHsKLSAgICAgICAgICAgIEZvb1sxMF0gZm9vczsK
LSAgICAgICAgICAgIHRocmVhZCBGb28qIGZvbyA9ICZmb29zWzQyNDI0Ml07Ci0gICAgICAgICAg
ICB0aHJlYWQgaW50KiBwdHIgPSAmKGZvby0+eik7Ci0gICAgICAgICAgICByZXR1cm4gZm9vID09
ICZmb29zWzBdOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQzIHJldEZsb2F0MygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdDMoMTAuMCwgMC4wLCAwLjApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZmxvYXRbMTBdIHJldEZsb2F0QXJyYXkoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdFsxMF0gdjsKLSAgICAgICAgICAgIHZbMF0gPSAxMC4wOwotICAgICAgICAg
ICAgcmV0dXJuIHY7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGJheigpIHsKLSAgICAgICAg
ICAgIHJldHVybiByZXRGbG9hdDMoKVs0Ml0gPT0gMTAuMDsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgamF6KCkgewotICAgICAgICAgICAgcmV0dXJuIHJldEZsb2F0QXJyYXkoKVs0Ml0gPT0g
MTAuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyAr
K2kpCi0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFttYWtlVWludChpKV0pLCBpID09PSAwID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbbWFr
ZVVpbnQoMTApXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgxMDAwMDAwKV0pLCB0cnVlKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbbWFr
ZVVpbnQoMHhmZmZmZmZmZildKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiYmFyIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJiYXoiLCBbXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImpheiIs
IFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVz
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVz
dHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjZhNTVmYjYx
NmIxNTM0OWVhYzQwOWRkNjQwN2RhM2EwOGQ3MzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNT
IGFycmF5UmVmVG9BcnJheVJlZgotUEFTUyBhc3NpZ25MZW5ndGgKLVBBU1MgYXNzaWduTGVuZ3Ro
SGVscGVyCi1QQVNTIGJ1aWxkQXJyYXlUaGVuU3VtSXQKLVBBU1MgYnVpbGRBcnJheVRoZW5TdW1J
dFVzaW5nQXJyYXlSZWZlcmVuY2UKLVBBU1MgcGFzc2luZ0FycmF5VG9GdW5jdGlvbgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxNTMxYmJjNTYxMmU3NGE4NmU5ZDYyYTJlODdhMmJhNjFj
ZTNlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1o
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13
aGxzbFRlc3RzLmFycmF5UmVmVG9BcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4
OwotICAgICAgICAgICAgdGhyZWFkIGludFtdIHAgPSBAeDsKLSAgICAgICAgICAgIHRocmVhZCBp
bnRbXVtdIHBwID0gQHA7Ci0gICAgICAgICAgICBpbnRbXXRocmVhZFtddGhyZWFkIHFxID0gcHA7
Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgICAgIHggPSA0MjsKLSAgICAg
ICAgICAgIHBbMF0gPSA3NjsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAg
cHBbMF1bMF0gPSAzOTsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgcXFb
MF1bMF0gPSA4MzsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0p
OwotfQotCi13aGxzbFRlc3RzLmFzc2lnbkxlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAgICAg
IChAYXJyYXkpLmxlbmd0aCA9IDQyOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICAg
ICAgCi19Ci0KLXdobHNsVGVzdHMuYXNzaWduTGVuZ3RoSGVscGVyID0gYXN5bmMgKCkgPT4gewot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBiYXIodGhy
ZWFkIGZsb2F0W10gYXJyYXkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXJyYXku
bGVuZ3RoID0gNDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKLSAgICAgICAgICAg
ICAgICBiYXIoQGFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMuYnVpbGRBcnJheVRoZW5TdW1JdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs0Ml0g
YXJyYXk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQot
ICAgICAgICAgICAgICAgIGFycmF5W2ldID0gaW50KGkgKyA1KTsKLSAgICAgICAgICAgIGludCBy
ZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGFycmF5W2ldOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIgKiA1ICsgNDIgKiA0MSAv
IDIpOwotfQotCi13aGxzbFRlc3RzLmJ1aWxkQXJyYXlUaGVuU3VtSXRVc2luZ0FycmF5UmVmZXJl
bmNlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYmFy
KHRocmVhZCBpbnRbXSBhcnJheSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1aW50IGkg
PSAwOyBpIDwgNDI7IGkgPSBpICsgMSkKLSAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGludChp
ICsgNSk7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0OwotICAgICAgICAgICAgZm9yICh1aW50IGkg
PSAwOyBpIDwgNDI7IGkgPSBpICsgMSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQg
KyBhcnJheVtpXTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs0Ml0gYXJyYXk7Ci0gICAg
ICAgICAgICByZXR1cm4gYmFyKEBhcnJheSk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyICog
NSArIDQyICogNDEgLyAyKTsKLX0KLQotd2hsc2xUZXN0cy5wYXNzaW5nQXJyYXlUb0Z1bmN0aW9u
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0gYXJyOwotICAgICAgICAgICAgZm9yICh1
aW50IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFycltpXSA9
IGludChpKSArIDE7Ci0gICAgICAgICAgICByZXR1cm4gc3VtKGFycik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpbnQgc3VtKGludFsxMF0geHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB0
ID0gMDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgICAgIHQgPSB0ICsgeHNbaV07Ci0gICAgICAgICAgICByZXR1cm4gdDsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFtdKSwgNTUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jh
ZC1hZGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzE0OTQ4MmQ1OTliN2M2
NDhiNTlmMWIwYTlmNTg3YTI5Y2JjZjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGJhZEFkZAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDFkNzcyMzVhNDhlOTQyYzMyNTBlZmUyN2M0MDE2NTBlY2MxZDNlMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYmFkLWFkZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5CYWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLmJhZEFkZCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCwgdWludCB5KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQgeiA9IHggKyB5OwotICAgICAgICAg
ICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJh
bHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MzQ4NmQ3OTQ4OTU3
YjdlMmMxZTA1Njk4NzQyNTczY2UxMTk4MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBiYWRJbnRM
aXRlcmFsRm9ySW50Ci1QQVNTIGJhZEludExpdGVyYWxGb3JGbG9hdAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVjOGVkY2U4ZjU4ZWJjNmNiZGFiNDdjMjM0Y2RhMDNmNTRmNDg1OWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2JhZC1saXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJhZEludExpdGVyYWxGb3JJbnQg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCggInZvaWQgZm9vKCkgeyBpbnQg
eCA9IDMwMDAwMDAwMDA7IH0iKTsKLX0KLQotd2hsc2xUZXN0cy5iYWRJbnRMaXRlcmFsRm9yRmxv
YXQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgidm9pZCBmb28oKSB7IGZs
b2F0IHggPSA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOyB9Iik7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyODVjNDYzNDY1ZjNhOWU0MmQwNGZmMzQ0ODUx
Nzg4NWYzOTU0ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgYm9vbEJpdEFuZAotUEFTUyBi
b29sQml0T3IKLVBBU1MgYm9vbEJpdFhvcgotUEFTUyBib29sQml0Tm90Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZDk3ZmYyNzlmN2RhMzU1MzVhMGI3NWIxOWY0MGMwZDI4YzliYTBkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBX
SExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYm9vbEJpdEFuZCA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9v
bCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAmIGI7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2
YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZh
bHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUp
LCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQot
fTsKLQotd2hsc2xUZXN0cy5ib29sQml0T3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qgc291
cmNlID0gYAotICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wgYikKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGEgfCBiOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIHsKLSAgICAg
ICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21h
a2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0g
ICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2Us
ICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4i
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBl
Y3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VC
b29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCBy
ZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xC
aXRYb3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gYAotICAgICAgICBib29s
IGZvbyhib29sIGEsIGJvb2wgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgXiBi
OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9v
bCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJl
dHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJl
c3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZh
bHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBm
YWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAgewot
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFs
dWUuIik7Ci0gICAgfQotfTsKLQotd2hsc2xUZXN0cy5ib29sQml0Tm90ID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHNvdXJjZSA9IGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gfmE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewot
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLX07Ci0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Jvb2wtbWF0cml4LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmE1ZWU2YTdmYWRlNjNkMjIwZWUwMTAxMGY1ZmFmZGQ2YmQ4Mzg4My4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAs
MCBAQAotCi1QQVNTIGJvb2xNYXRyaXgKLVBBU1MgYm9vbE1hdHJpeDIKLVBBU1MgYm9vbE1hdHJp
eDMKLVBBU1MgYm9vbE1hdHJpeDQKLVBBU1MgYm9vbE1hdHJpeDUKLVBBU1MgYm9vbE1hdHJpeEFu
eQotUEFTUyBib29sTWF0cml4QW55MgotUEFTUyBib29sTWF0cml4QWxsCi1QQVNTIGJvb2xNYXRy
aXhBbGwyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJp
eC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OTY1ZmNjZDlmZTVjNDUzMTljNWY4YmExMWE2ZDA1
MWY2YzhlNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5ib29s
IG1hdHJpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29sTWF0
cml4ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG07Ci0gICAgICAgICAgICBtWzBdID0gYm9vbDIo
dHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgbVsxXSA9IGJvb2wyKHRydWUsIHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuIGludChtWzBdWzBdKSArIGludChtWzBdWzFdKSArIGludChtWzFdWzBd
KSArIGludChtWzFdWzFdKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgMyk7Ci19OwotCi13
aGxzbFRlc3RzLmJvb2xNYXRyaXgyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4
Mih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1bMF0g
JiYgIW1bMF1bMV0gJiYgbVsxXVswXSAmJiAhbVsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28i
LCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4MyA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAg
ICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKLSAgICAg
ICAgICAgIHJldHVybiBtWzBdWzBdICYmICFtWzBdWzFdICYmIG1bMV1bMF0gJiYgIW1bMV1bMV07
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9v
bE1hdHJpeDQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngzIG0gPSBib29sMngzKHRydWUsIHRydWUs
IHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1bMF0g
JiYgbVswXVsxXSAmJiBtWzBdWzJdICYmICFtWzFdWzBdICYmICFtWzFdWzFdICYmICFtWzFdWzJd
OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmJv
b2xNYXRyaXg1ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9
IGJvb2wyKHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIG1bMV0gPSBib29sMih0cnVlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiAhbVswXVsxXSAmJiBtWzFdWzBdICYm
ICFtWzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLmJvb2xNYXRyaXhBbnkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBib29sMngy
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiAhYW55KG0p
OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmJv
b2xNYXRyaXhBbnkyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4MihmYWxzZSwg
ZmFsc2UsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBhbnkobSk7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFs
bCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICFhbGwobSk7Ci0gICAgICAgIH0KLSAgICBgOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFsbDIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBib29sMngyIG0gPSBib29sMngyKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuIGFsbChtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMzFjOTJlZjQ4YmQ3MDNhMjI0ZDVhZmNjNjk0N2M3MzdiNzZiNGI4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLQotUEFTUyBib29sZWFuTWF0aAotUEFTUyBpZGVudGl0eUJvb2wKLVBBU1MgbGl0ZXJh
bEJvb2wKLVBBU1Mgb3BlcmF0b3JCb29sCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9ib29scy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMzI0YWUzNjM0ZGFmYjRiM2U2YWU5NTc2
MWRiZTAwYzhiNDNkM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Cb29s
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29sZWFuTWF0aCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWUgJiYgdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBib29sIGZvbzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSAm
JiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzMoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2UgJiYgdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZv
bzQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2UgJiYgZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHRydWUgfHwgdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzYoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSB8fCBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
b29sIGZvbzcoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2UgfHwgdHJ1ZTsK
LSAgICAgICAgfQotICAgICAgICBib29sIGZvbzgoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2UgfHwgZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBb
XSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzMiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzUiLCBbXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNiIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb283IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzgiLCBbXSksIGZhbHNlKTsKLX0KLQotCi13aGxzbFRl
c3RzLmlkZW50aXR5Qm9vbCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJib29s
IGZvbyhib29sIHgpIHsgcmV0dXJuIHg7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci19Ci0KLXdobHNsVGVzdHMubGl0ZXJhbEJvb2wg
PSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28oKSB7IHJldHVybiB0
cnVlOyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JCb29sID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBib29sRnJvbVVp
bnRGYWxzZSgpIHsgcmV0dXJuIGJvb2wodWludCgwKSk7IH0KLSAgICAgICAgYm9vbCBib29sRnJv
bVVpbnRUcnVlKCkgeyByZXR1cm4gYm9vbCh1aW50KDEpKTsgfQotCi0gICAgICAgIGJvb2wgYm9v
bEZyb21JbnRGYWxzZSgpIHsgcmV0dXJuIGJvb2woaW50KDApKTsgfQotICAgICAgICBib29sIGJv
b2xGcm9tSW50VHJ1ZSgpIHsgcmV0dXJuIGJvb2woaW50KDEpKTsgfQotCi0gICAgICAgIGJvb2wg
Ym9vbEZyb21GbG9hdEZhbHNlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgwKSk7IH0KLSAgICAgICAg
Ym9vbCBib29sRnJvbUZsb2F0VHJ1ZSgpIHsgcmV0dXJuIGJvb2woZmxvYXQoMSkpOyB9Ci0gICAg
ICAgIGJvb2wgYm9vbEZyb21GbG9hdE5hTihmbG9hdCBhcmcpIHsgcmV0dXJuIGJvb2woYXJnKTsg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImJvb2xGcm9tVWludEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbVVpbnRUcnVlIiwgW10p
LCB0cnVlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAiYm9vbEZyb21JbnRGYWxzZSIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiYm9vbEZyb21JbnRUcnVlIiwgW10pLCB0
cnVlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiYm9vbEZyb21GbG9hdEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUZsb2F0VHJ1ZSIsIFtdKSwg
dHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICJib29sRnJvbUZsb2F0TmFOIiwgW21ha2VGbG9hdChwcm9ncmFtLCBOYU4pXSksIHRydWUpOwot
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzIHg7Ci0gICAgICAgICAgICAg
ICAgYm9vbCByID0gYm9vbCh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZv
bygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzeDMgeDsKLSAgICAgICAg
ICAgICAgICBib29sIHIgPSBib29sKHgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4cGVj
dGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUz
Y2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNTEzMmEwYzkwNjlkMGYyOGI2MGY3MDdkYjYzZDU5
MDgxZmZkZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTI4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0
cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
biwgY29uc3RhbnQgZmxvYXRbXSB0aGVCdWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfVGFyZ2V0
IDAgewotICAgIHJldHVybiBmbG9hdDQodGhlQnVmZmVyWzBdLCB0aGVCdWZmZXJbMF0sIHRoZUJ1
ZmZlclswXSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsK
LSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29u
c3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25l
In07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhh
QmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQifTsKLSAg
ICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19
OwotICAgIGNvbnN0IGlucHV0MSA9IHtzdHJpZGU6IDQsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0
ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAx
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMS5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMUFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFy
cmF5WzFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzJdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxLnVubWFw
KCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXIwLCB2ZXJ0ZXhCdWZmZXIxXSwgWzAsIDBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0
NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNjMxZDhlOTFlMzI5M2E2ZjUzZDVkOThiYTc2ZWEyNzMzNGE1Mjc5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNv
bXB1dGVTaGFkZXIoZGV2aWNlIHVpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0
aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBidWZmZXJbMF0gPSBidWZmZXIu
bGVuZ3RoOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXpl
ID0gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxMzM3OwotCi0gICAgY29uc3QgYnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwg
R1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlclVpbnQzMkFy
cmF5ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJVaW50
MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRz
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8
IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAg
IGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRz
QnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAs
IHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9y
ID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmdd
fTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91
cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9C
dWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCAxICogVWludDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEp
OwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0g
YXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRVaW50
MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChy
ZXN1bHRVaW50MzJBcnJheVswXSA9PSAxMzM3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAg
ICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAo
KTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2J1ZmZlci12ZXJ0ZXgtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYnVmZmVyLXZlcnRleC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZl
ci12ZXJ0ZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUxN2Q2ZTAxNGUy
ODM1YWM1MDliNGZkNzI3OTFiNzA0NWY4ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRl
eC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0g
YAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoY29uc3RhbnQgZmxvYXQ0W10gYnVmZmVyIDog
cmVnaXN0ZXIoYjApLCB1aW50IGlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24gewotICAg
IHJldHVybiBidWZmZXJbaWRdOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJh
Z21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1z
dHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3Iiwg
Y3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdi
YTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BV
Q29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAg
ICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBbXX07Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3Qgc2l6ZSA9IDQgKiA0ICogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UOwotCi0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VC
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAx
LjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFy
cmF5WzldID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMTNdID0gMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsK
LSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHJlc291cmNlQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3Vy
Y2VCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzog
MCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0
b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGlu
Z119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdy
b3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
ImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVT
d2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9
IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVW
aWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRh
Y2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6
IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVk
fV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0
YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMTk3ODA3OTJjMzM3YTg1
MTdhMDMyYzRkMzM0YWU2YzAzNWRmOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0y
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJ1aWx0
aW5WZWN0b3JHZXR0ZXJzCi1QQVNTIGJ1aWx0aW5WZWN0b3JTZXR0ZXJzCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZkMGMwZjJhZGY0MjcyOTFjNDFjMWFkYmZlYmI2MThiMTRiMDcwNWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw4MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9v
cHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLWNvbnN0IGNoZWNrRnVuY3MgPSB7Ci0g
ICAgInVpbnQiOiBjYWxsVWludEZ1bmN0aW9uLAotICAgICJpbnQiOiBjYWxsSW50RnVuY3Rpb24s
Ci0gICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rpb24KLX07Ci1jb25zdCB0eXBlTmFtZXMgPSBb
ICJ1aW50IiwgImludCIsICJmbG9hdCIgXTsKLWNvbnN0IHNpemVzID0gWyAyLCAzLCA0IF07Ci1j
b25zdCBlbGVtZW50cyA9IFsgIngiLCAieSIsICJ6IiwgInciIF07Ci1jb25zdCBpbml0aWFsaXpl
ckxpc3QgPSBbIDEsIDIsIDMsIDQgXTsKLQotd2hsc2xUZXN0cy5idWlsdGluVmVjdG9yR2V0dGVy
cyA9IGFzeW5jICgpID0+Ci17Ci0KLSAgICBsZXQgdGVzdHMgPSBbXTsKLSAgICBsZXQgc3JjID0g
IiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2YgdHlwZU5hbWVzKSB7Ci0gICAgICAgIGZvciAo
bGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5h
bWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlw
ZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1l
fSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LiR7ZWxlbWVudHNbaV19OwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYDsKLSAgICAg
ICAgICAgICAgICB0ZXN0cy5wdXNoKHsgdHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1bmN0aW9uTmFt
ZSwgZXhwZWN0YXRpb246IGluaXRpYWxpemVyTGlzdFtpXSB9KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0IHRl
c3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0ZXN0
LnR5cGVdOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFtLCB0
ZXN0Lm5hbWUsIFtdKSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfTsKLQotd2hsc2xUZXN0
cy5idWlsdGluVmVjdG9yU2V0dGVycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHRlc3RzID0g
W107Ci0gICAgbGV0IHNyYyA9ICIiOwotICAgIGZvciAobGV0IHR5cGVOYW1lIG9mIHR5cGVOYW1l
cykgewotICAgICAgICBmb3IgKGxldCBzaXplIG9mIHNpemVzKSB7Ci0gICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmN0
aW9uTmFtZSA9IGAke3R5cGVOYW1lfSR7c2l6ZX0ke2VsZW1lbnRzW2ldfWA7Ci0gICAgICAgICAg
ICAgICAgc3JjICs9IGAke3R5cGVOYW1lfSAke2Z1bmN0aW9uTmFtZX0oKQotICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dHlwZU5hbWV9JHtz
aXplfSB4ID0gJHt0eXBlTmFtZX0ke3NpemV9KCR7aW5pdGlhbGl6ZXJMaXN0LnNsaWNlKDAsIHNp
emUpLmpvaW4oIiwgIil9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LiR7ZWxlbWVu
dHNbaV19ID0gMzQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguJHtlbGVt
ZW50c1tpXX07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBgOwotICAgICAgICAgICAgICAgIHRlc3RzLnB1c2goeyB0eXBlOiB0eXBlTmFtZSwgbmFt
ZTogZnVuY3Rpb25OYW1lLCBleHBlY3RhdGlvbjogMzQgfSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBsZXQgcHJvZ3JhbSA9IHNyYzsKLSAgICBmb3IgKGxldCB0ZXN0
IG9mIHRlc3RzKSB7Ci0gICAgICAgIGNvbnN0IGNoZWNrRnVuYyA9IGNoZWNrRnVuY3NbdGVzdC50
eXBlXTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjaGVja0Z1bmMocHJvZ3JhbSwgdGVz
dC5uYW1lLCBbXSksIHRlc3QuZXhwZWN0YXRpb24pOwotICAgIH0KLX0KLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDEyNDkxZjljNWE5ZDQxZGZhZmYwMzYwYTFhZjAwNWM0ZDlmZjgyNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJ1aWx0aW5WZWN0b3JJbmRleFNldHRlcnMKLVBBU1Mg
YnVpbHRpblZlY3RvcnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1
aWx0aW4tdmVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVj
dG9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTVjNjE5OWE3MDZhOGJh
ZjhkNjRjZjFlZWU4OWY0ZTZiMjY1MjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LWNvbnN0IGNoZWNrRnVuY3MgPSB7Ci0gICAgInVpbnQiOiBjYWxsVWludEZ1bmN0aW9uLAotICAg
ICJpbnQiOiBjYWxsSW50RnVuY3Rpb24sCi0gICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rpb24K
LX07Ci1jb25zdCB0eXBlTmFtZXMgPSBbICJ1aW50IiwgImludCIsICJmbG9hdCIgXTsKLWNvbnN0
IHNpemVzID0gWyAyLCAzLCA0IF07Ci1jb25zdCBlbGVtZW50cyA9IFsgIngiLCAieSIsICJ6Iiwg
InciIF07Ci1jb25zdCBpbml0aWFsaXplckxpc3QgPSBbIDEsIDIsIDMsIDQgXTsKLQotd2hsc2xU
ZXN0cy5idWlsdGluVmVjdG9ySW5kZXhTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQg
dGVzdHMgPSBbXTsKLSAgICBsZXQgc3JjID0gIiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2Yg
dHlwZU5hbWVzKSB7Ci0gICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAg
ICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBl
TmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xp
Y2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhb
JHtpfV0gPSAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geFske2l9XTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGA7Ci0g
ICAgICAgICAgICAgICAgdGVzdHMucHVzaCh7IHR5cGU6IHR5cGVOYW1lLCBuYW1lOiBmdW5jdGlv
bk5hbWUsIGV4cGVjdGF0aW9uOiAzNCB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMp
IHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0ZXN0LnR5cGVdOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFtLCB0ZXN0Lm5hbWUsIFtd
KSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfTsKLQotd2hsc2xUZXN0cy5idWlsdGluVmVj
dG9ycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOwotICAgICAg
ICAgICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOwotICAgICAgICAgICAgaW50MyBi
ID0gaW50MyhhLCA1KTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAg
ICAgIGludCBmb28zKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50MyBhID0gaW50MygzLCA0
LCA1KTsKLSAgICAgICAgICAgIGludDQgYiA9IGludDQoNiwgYSk7Ci0gICAgICAgICAgICByZXR1
cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vNCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICBpbnQyIGIgPSBpbnQyKDUs
IDYpOwotICAgICAgICAgICAgaW50NCBjID0gaW50NChhLCBiKTsKLSAgICAgICAgICAgIHJldHVy
biBjWzJdOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludDQgYSA9IGludDQoMywgNCwgNSwgNik7Ci0gICAgICAgICAgICBpbnQyIGIgPSBp
bnQyKDQsIDUpOwotICAgICAgICAgICAgaW50NCBjID0gaW50NCgzLCBiLCA2KTsKLSAgICAgICAg
ICAgIHJldHVybiBhbGwoYSA9PSBjKTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzYoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDQsIDUpOwotICAgICAgICAgICAg
aW50MyBiID0gaW50MygzLCBhKTsKLSAgICAgICAgICAgIGludDMgYyA9IGludDMoMywgNCwgNik7
Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICAgICAgdWlu
dCBmb291KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwot
ICAgICAgICAgICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBmb291Migp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQyIGEgPSB1aW50MigzLCA0KTsKLSAgICAgICAg
ICAgIHVpbnQzIGIgPSB1aW50MyhhLCA1KTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAg
ICAgICB9Ci0gICAgICAgIHVpbnQgZm9vdTMoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50
MyBhID0gdWludDMoMywgNCwgNSk7Ci0gICAgICAgICAgICB1aW50NCBiID0gdWludDQoNiwgYSk7
Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZvb3U0
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwotICAgICAg
ICAgICAgdWludDIgYiA9IHVpbnQyKDUsIDYpOwotICAgICAgICAgICAgdWludDQgYyA9IHVpbnQ0
KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9v
bCBmb291NSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQ0IGEgPSB1aW50NCgzLCA0LCA1
LCA2KTsKLSAgICAgICAgICAgIHVpbnQyIGIgPSB1aW50Mig0LCA1KTsKLSAgICAgICAgICAgIHVp
bnQ0IGMgPSB1aW50NCgzLCBiLCA2KTsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBjKTsK
LSAgICAgICAgfQotICAgICAgICBib29sIGZvb3U2KCkKLSAgICAgICAgewotICAgICAgICAgICAg
dWludDIgYSA9IHVpbnQyKDQsIDUpOwotICAgICAgICAgICAgdWludDMgYiA9IHVpbnQzKDMsIGEp
OwotICAgICAgICAgICAgdWludDMgYyA9IHVpbnQzKDMsIDQsIDYpOwotICAgICAgICAgICAgcmV0
dXJuIGFsbChiID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvb2YoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAgICAg
cmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZjIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAgICAgZmxv
YXQzIGIgPSBmbG9hdDMoYSwgNS4pOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZm9vZjMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDMg
YSA9IGZsb2F0MygzLiwgNC4sIDUuKTsKLSAgICAgICAgICAgIGZsb2F0NCBiID0gZmxvYXQ0KDYu
LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGZvb2Y0KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoMy4sIDQu
KTsKLSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDUuLCA2Lik7Ci0gICAgICAgICAgICBm
bG9hdDQgYyA9IGZsb2F0NChhLCBiKTsKLSAgICAgICAgICAgIHJldHVybiBjWzJdOwotICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgZm9vZjUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDQg
YSA9IGZsb2F0NCgzLiwgNC4sIDUuLCA2Lik7Ci0gICAgICAgICAgICBmbG9hdDIgYiA9IGZsb2F0
Mig0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQ0IGMgPSBmbG9hdDQoMy4sIGIsIDYuKTsKLSAg
ICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBjKTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZv
b2Y2KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoNC4sIDUuKTsK
LSAgICAgICAgICAgIGZsb2F0MyBiID0gZmxvYXQzKDMuLCBhKTsKLSAgICAgICAgICAgIGZsb2F0
MyBjID0gZmxvYXQzKDMuLCA0LiwgNi4pOwotICAgICAgICAgICAgcmV0dXJuIGFsbChiID09IGMp
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA1
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZv
bzUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vNiIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vdSIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291MiIsIFtdKSwgNCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291MyIs
IFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb291NCIsIFtdKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmb291NSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb291NiIsIFtdKSwgZmFsc2UpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YiLCBb
XSksIDMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvb2YyIiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1
bmN0aW9uKHByb2dyYW0sICJmb29mMyIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjQiLCBbXSksIDUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjUiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vZjYiLCBbXSksIGZhbHNlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjQ3OGY3M2M2ZjU0ZTE1ODU1Zjhm
MGYyN2NhZTcwZTIzZDY0MWU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBjYXN0cwotUEFTUyBzZWxmQ2FzdHMK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmFmNWM4YmQ2OTBlOGQ0ZmJhMzVhNGEzMWE4N2M2N2JkMTc2MDRmMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvY2FzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+QmFkIGFkZC48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5jYXN0cyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAg
IH0KLSAgICAgICAgc3RydWN0IEJhciB7Ci0gICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgfQot
ICAgICAgICBvcGVyYXRvciBCYXIoRm9vIGZvbykgewotICAgICAgICAgICAgQmFyIGI7Ci0gICAg
ICAgICAgICBiLnkgPSBmb28ueCArIDc7Ci0gICAgICAgICAgICByZXR1cm4gYjsKLSAgICAgICAg
fQotICAgICAgICBpbnQgYmF6KGludCB6KSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAg
ICAgICAgZm9vLnggPSB6OwotICAgICAgICAgICAgQmFyIGIgPSBCYXIoZm9vKTsKLSAgICAgICAg
ICAgIHJldHVybiBiLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbbWFrZUludCg2KV0pLCAxMyk7Ci19
Ci0KLXdobHNsVGVzdHMuc2VsZkNhc3RzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAg
fQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAg
ICAgICAgICAgIGZvby54ID0gMjE7Ci0gICAgICAgICAgICBGb28gYmFyID0gRm9vKGZvbyk7Ci0g
ICAgICAgICAgICBiYXIueCA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGZvby54ICsgYmFyLng7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIxICsgNDIpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFy
aWFibGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2VyLXNo
b3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1v
Zi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2No
ZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJl
YWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0MjhmNmE3NTJiNjdiMGU3NjBiYzVlMjMyNGIzY2RhYmQ4Yjk2ZjIzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJs
ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0g
YAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZp
Y2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rp
c3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdDQgdmVjOwotICAgIHZlY1swXSArPSA0Mi4wOwot
ICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IHZlY1swXTsKLX0KLWA7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1
dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFk
ZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
PSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0g
ICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNC
dWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRz
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAg
IGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBdID09IDQyKQotICAgICAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIu
dW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYWE0ZTc2OTFmODU0NjEyYWUxNmIxNTgxMTI2NzFmZmY4ZDllOWYxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0KLVBBU1MgdmVjdG9yQ2xhbXAKLVBBU1MgbWF0cml4Q2xhbXAKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMWYzNDZiMDI1NzA1YWE4MTViOTg3NDYyZDFmMjFkOWIzZTllMDMyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jbGFtcC1zdGRsaWIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEg
bmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+Q2xhbXAuPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3
aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZl
Y3RvckNsYW1wID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeDsKLSAg
ICAgICAgICAgIHhbMF0gPSBhOwotICAgICAgICAgICAgeFsxXSA9IGI7Ci0gICAgICAgICAgICBm
bG9hdDIgYm90dG9tID0gZmxvYXQyKDEsIDUpOwotICAgICAgICAgICAgZmxvYXQyIHRvcCA9IGZs
b2F0MigxMCwgNyk7Ci0gICAgICAgICAgICB4ID0gY2xhbXAoeCwgYm90dG9tLCB0b3ApOwotICAg
ICAgICAgICAgcmV0dXJuIHgueCAvIHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VGbG9hdCgxMiksIG1ha2VGbG9hdCgyMCldKSwgMTAgLyA3LCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VGbG9hdCg4KSwgbWFrZUZsb2F0KDYpXSksIDggLyA2LCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VGbG9hdCgtMTApLCBtYWtlRmxvYXQoNildKSwgMSAvIDYsIGVwc2lsb24pOwotfTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhDbGFtcCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdCBmb28oZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYywgZmxv
YXQgZCkgewotICAgICAgICAgICAgZmxvYXQyeDIgeDsKLSAgICAgICAgICAgIHhbMF0gPSBmbG9h
dDIoYSwgYik7Ci0gICAgICAgICAgICB4WzFdID0gZmxvYXQyKGMsIGQpOwotCi0gICAgICAgICAg
ICBmbG9hdDJ4MiBib3R0b20gPSBmbG9hdDJ4MihmbG9hdDIoMSwgMiksIGZsb2F0MigzLCA0KSk7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiB0b3AgPSBmbG9hdDJ4MihmbG9hdDIoMTAsIDExKSwgZmxv
YXQyKDEyLCAxMykpOwotCi0gICAgICAgICAgICB4ID0gY2xhbXAoeCwgYm90dG9tLCB0b3ApOwot
Ci0gICAgICAgICAgICByZXR1cm4geFswXVswXSAvIDEgKyB4WzBdWzFdIC8gMiArIHhbMV1bMF0g
LyAzICsgeFsxXVsxXSAvIDQ7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxv
YXQoMiksIG1ha2VGbG9hdCgtMSksIG1ha2VGbG9hdCg0KSwgbWFrZUZsb2F0KDEwKV0pLCAyLzEg
KyAyLzIgKyA0LzMgKyAxMC80LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdCgxMDApLCBt
YWtlRmxvYXQoMTAwKSwgbWFrZUZsb2F0KDEwMCksIG1ha2VGbG9hdCgxMDApXSksIDEwLzEgKyAx
MS8yICsgMTIvMyArIDEzLzQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KC0xMDApLCBt
YWtlRmxvYXQoLTEwMCksIG1ha2VGbG9hdCgtMTAwKSwgbWFrZUZsb2F0KC0xMDApXSksIDEvMSAr
IDIvMiArIDMvMyArIDQvNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxvYXQoTmFOKSwgbWFr
ZUZsb2F0KE5hTiksIG1ha2VGbG9hdChOYU4pLCBtYWtlRmxvYXQoTmFOKV0pLCAxLzEgKyAyLzIg
KyAzLzMgKyA0LzQsIGVwc2lsb24pOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21t
ZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbW1l
bnQtcGFyc2luZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5
M2U4OGE2ZGNlYTk3NTVhMDk5Y2NjOTZkNTYwMTAxZWZiYjFmMTYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
bW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LQotUEFTUyBjb21tZW50UGFyc2luZwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvY29tbWVudC1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29t
bWVudC1wYXJzaW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYmU0MzBi
YjE3OTgxYTkwNmMwYzJjNWRiZDc3NjZkNDQ3ZDU2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbW1lbnQt
cGFyc2luZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3Rz
ID0ge307Ci0KLXdobHNsVGVzdHMuY29tbWVudFBhcnNpbmcgPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIC8qIHRoaXMgY29tbWVudAotICAgICAgICBydW5zIG92
ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5l
cwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvY29tcHV0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICsw
LDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmEzODFmODQwMTg4YWQwMmU1OWMwZjkxMTBlYzNlMWQ3ZmYyZmU3NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxv
YXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50KHRo
cmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1
dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVy
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
Q307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAg
ICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9
IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJy
YXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxv
YXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1
ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RT
VCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGlu
Z307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9
Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0
c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMiwg
MSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZm
ZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3Vs
dHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0g
ICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2
Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1
bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1
XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1h
cCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2NvcHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2NvcHktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmIyNGJj
Nzc2YzBjYmZmZjhiZmJjYjFhNzllNzRjMmNlZTFiMTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNvcHlBcnJh
eQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvcHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmViMzJiMDE1MmNiNjVlOGNkMDRlZDBiMzBhNDAyNmZkYmM3Mjk4Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvY29weS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLmNvcHlBcnJheSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnRb
MTBdIHhzOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKysp
Ci0gICAgICAgICAgICAgICAgeHNbaV0gPSBpbnQoaSkgKyAxOwotICAgICAgICAgICAgaW50WzEw
XSB5cyA9IHhzOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgeHNbaV0gPSAwOwotICAgICAgICAgICAgaW50IHN1bSA9IDA7
Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB5cy5sZW5ndGg7IGkrKykKLSAgICAg
ICAgICAgICAgICBzdW0gPSBzdW0gKyB5c1tpXTsKLSAgICAgICAgICAgIHJldHVybiBzdW07Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDU1KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
ZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZGVyZWZlcmVuY2Utb3JkZXJpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNTQzM2U2Y2E2NjJlNDUwMzliN2FkZTI4OTllNWRiNDU4M2RkOTZiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBjYWxsQXJndW1lbnRzQXJlQ29waWVkSW1tZWRpYXRl
bHlBZnRlckV2YWx1YXRpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2RlcmVmZXJlbmNlLW9yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVy
ZWZlcmVuY2Utb3JkZXJpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk5
Yzk2YzA1ZjU0ZTcwOTE2Y2U3YTY1ODNlOTY5ODU3OTIyNmYxMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVy
ZWZlcmVuY2Utb3JkZXJpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RGVyZWZlcmVuY2Ugb3JkZXJpbmcuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNv
cGllZEltbWVkaWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICpiYXIoNSkgKyAqYmFyKDcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCog
YmFyKGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSB2YWx1ZTsKLSAg
ICAgICAgICAgIHJldHVybiAmeDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAxMik7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUt
Y2hlY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5j
ZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2stZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXIt
c2hvdWxkLXR5cGUtY2hlY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVy
ZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGEyYTcxM2NiNDIzYzc5NDM1ZmMzZWFjZmQ4YjM3Y2FiZjAxMGQ4YmQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBW
ZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRyMiA9
ICZzaGFkZTsKLSAgICAqcHRyMiA9IHNoYWRlOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9z
aXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gKnB0cjI7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBz
aGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUw
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwg
b2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1
dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRy
aWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBw
cmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhT
dGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3Vy
Y2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9w
ZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
ZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNlNTFkYjg1NjI0NjM4YTY1NTg4OTQ5MGE0YWNiNDczYWY1MzY0ZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw5MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBQb2ludCB7
Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBQb2ludFtdIGJ1ZmZlciA6IHJlZ2lz
dGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZs
b2F0IHggPSBidWZmZXJbMF0ueDsKLSAgICBmbG9hdCB5ID0gYnVmZmVyWzBdLnk7Ci0gICAgeCAr
PSAxLjA7Ci0gICAgeSArPSAxLjA7Ci0gICAgYnVmZmVyWzBdLnggPSB4OwotICAgIGJ1ZmZlclsw
XS55ID0geTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywg
dHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6
ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDI7Ci0KLSAgICBjb25zdCBidWZm
ZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBH
UFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9
IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gNDIuMDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSA0My4wOwot
ICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5D
T1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVy
QmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwg
cmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5z
ZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0
Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJy
YXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0
IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZl
cik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNDMuMAotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQ0LjApCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1h
cCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZj
YzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiMTI5ZjQ5OWFiNzgxN2FhMTJiMWY3OWNiNGQwOTI1MDY2Zjgx
Yzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0
IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6
IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewot
ICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIGRvIHsKLSAg
ICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSB3aGls
ZSAoKHNoYWRlID0gMS4wLCBmYWxzZSkpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRp
b247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFk
ZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNv
bnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zm
c2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUx
XTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1
dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1
dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBl
OiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5k
R3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmlt
aXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVu
Y2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUg
KiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0
ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVy
ID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5
QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291
cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VC
dWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzog
MCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0
b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGlu
Z119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdy
b3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
ImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVT
d2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9
IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVW
aWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRh
Y2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6
IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVk
fV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0
YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0
ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3At
Y29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGls
ZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJkZjY3N2E4OTYyNzFkNDAzZjgzMjc1YjJmZmIxMTk0YzFiMGNhZjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDE0NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAg
IGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmli
dXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVy
dGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgdWludCBpID0gMDsKLSAg
ICBkbyB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotICAgICAgICBzaGFkZSA9IDAuMDsKLSAgICB9IHdoaWxlICgoaSA9IGkgKyAxLCBzaGFkZSA9
IHNoYWRlICsgMC4xLCBpIDwgMTApKTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9u
OwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
ZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDAp
KSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUs
IDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtz
aGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25z
dCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNl
dDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07
Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRl
c307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQg
PSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTog
InVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdy
b3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0
aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNp
bFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlv
dXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICog
NCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4
QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9
IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1
ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
MF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRd
ID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJj
ZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAg
IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51
bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVm
ZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAs
IHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9y
ID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmdd
fTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91
cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJn
cHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAi
YmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dh
cENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBz
d2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmll
dyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29u
c3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNo
bWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBu
dWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1d
OwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJl
bmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVn
aW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4
QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAg
Y29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmlj
ZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVl
M2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmOWM4OTdhNzBlMWI4NDQxZDE4OWFlMDVjNWNiNTdlNmI5NzA0
N2E5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAg
ICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZl
cnRleE91dCByZXN1bHQ7Ci0KLSAgICBkbyB7Ci0gICAgICAgIHNoYWRlID0gMS4wOwotICAgIH0g
d2hpbGUoZmFsc2UpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVz
dWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBm
bG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFy
Z2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0K
LWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2
ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRp
dmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0
YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxw
aGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
clN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQs
IHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0
aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0
ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0g
ICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25z
dCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBj
b25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9n
eSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZl
cnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVy
dGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTog
RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5J
Rk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VC
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0K
LSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6
IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6
IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNv
bnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAg
IGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3Jt
In07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dh
cENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5n
ZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0
VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIg
PSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7
cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7
YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRP
cDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29u
c3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rl
c2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBh
c3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAo
MCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAs
IFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEs
IDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5n
LWVudW0tZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2Jl
N2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1j
cmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzE2Y2E2ZWI1MmI0Njg0NThkY2ZmMTQ4MzZlZjllZGFjMzM0YzRiOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLQotZW51bSBEb250Q3Jhc2ggewotICAgIFZhbHVl
Ci19Ci0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmli
dXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQifTsKLSAgICBjb25zdCBp
bnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNv
bnN0IGlucHV0MSA9IHtzdHJpZGU6IDQsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTFdfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1p
dGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5j
aWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBl
bGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVy
MERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIg
PSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
LnVubWFwKCk7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMUFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMS5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMUFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIx
RmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5WzJdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIxRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIxLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIw
LCB2ZXJ0ZXhCdWZmZXIxXSwgWzAsIDBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2Ni
ZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTdjYjI3MzEyMzdlNWZmNTIyMzgzMGU1OTI5MWZmY2Nl
MDVhNTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQg
ewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3No
YWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQw
ID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1p
dChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTg2ZjVhMTUwNTdhZTQwZmEzYzg2MGY5NWUwNTIyNGQ3MmEwYjNiYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLQotUEFTUyBkb3VibGVOb3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
b3VibGUtbm90Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjN2Y3NTYyNTRk
YmZiODFkODAxNjdhMTQxNjlkMzdhNDY5YjM5YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3Qu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+Q29weWluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hs
c2xUZXN0cy5kb3VibGVOb3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbyhib29sIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
IXg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIHRydWUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VC
b29sKGZhbHNlKV0pLCBmYWxzZSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGlj
YXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90LXBy
b2R1Y2UtZHVwbGljYXRlLWN0b3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3Rv
cnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZS10eXBlcy1zaG91bGQtbm90LXBy
b2R1Y2UtZHVwbGljYXRlLWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVw
bGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQyYTYxMmI2ZTExNGY5NDlmNGZjNTI4N2YxYWUw
MTQ4YzAzZTRhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJv
ZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBYWVogewotICAgIGludCB4OwotICAgIGludCB5
OwotICAgIGludCB6OwotfQotCi10eXBlZGVmIFhZWjEgPSBYWVo7Ci10eXBlZGVmIFhZWjIgPSBY
WVo7Ci10eXBlZGVmIFhZWjMgPSBYWVo7Ci0KLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTAp
LCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgaW50IHZhbHVl
OwotICAgIGZsb2F0IHZhbHVlMjsKLSAgICBpbnRbMTBdIHZhbHVlMzsKLQotICAgIHRocmVhZCBp
bnQqIHggPSAmdmFsdWU7Ci0gICAgdGhyZWFkIGludCogeSA9ICZ2YWx1ZTsKLSAgICB0aHJlYWQg
ZmxvYXQqIGYxID0gJnZhbHVlMjsKLSAgICB0aHJlYWQgZmxvYXQqIGYyID0gJnZhbHVlMjsKLSAg
ICBYWVoxIGE7Ci0gICAgWFlaMiBiOwotICAgIFhZWjMgYzsKLSAgICB0aHJlYWQgaW50W10gaW50
QXJyYXlSZWYxID0gQHZhbHVlMzsKLSAgICB0aHJlYWQgaW50W10gaW50QXJyYXlSZWYyID0gQHZh
bHVlMzsKLSAgICBpZiAoKnggPT0gKnkgJiYgeCA9PSB5KSB7Ci0gICAgICAgIGJ1ZmZlclt1aW50
KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLSAgICB9Ci19
Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9y
YWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA4OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVm
ZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFdID0gMjsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMl0gPSAzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDQ7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzRdID0gNTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA2OwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDc7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0g
ODsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlw
dG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0
c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9
OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1
ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBi
aW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0
IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIs
IDAsIHJlc3VsdHNCdWZmZXIsIDAsIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDgp
OwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29t
cHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDIsIDEsIDEpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFu
ZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0
c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxv
YXQzMkFycmF5WzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxXSA9PSA0
Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT0gNgotICAgICAgICAmJiByZXN1
bHRzRmxvYXQzMkFycmF5WzNdID09IDgKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs0
XSA9PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0gPT0gNgotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzZdID09IDcKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVs3XSA9PSA4KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGlj
YXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlcy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODQ2MGM2NmQ4OGEy
NmM5MjBlN2Y2MmRmNWZlNjcxMTNiMjNhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZHVwbGljYXRl
RnVuY3Rpb25zCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNh
dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlcy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmY2ZDhlNGNjZDZmNTVjODI1ZmZiOTk0ZDAyMzJi
ZTVhYTdmMzhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qg
cHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
ZHVwbGljYXRlRnVuY3Rpb25zID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7
Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbyhpbnQgeCkgeyB9Ci0g
ICAgICAgIHR5cGVkZWYgQSA9IGludDsKLSAgICAgICAgdm9pZCBmb28oQSB4KSB7IH0KLSAgICBg
KTsKLQotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcihpbnQgeCkgewotICAg
ICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmF6
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcigzKTsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJiYXoiLCBbXSksIDMpOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
aW50IG9wZXJhdG9yJltdKHRocmVhZCBpbnRbXSBhLCB1aW50IGIpIHsKLSAgICAgICAgICAgIHJl
dHVybiA0OwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAg
ICAgICB1aW50IG9wZXJhdG9yLmxlbmd0aCh0aHJlYWQgaW50W10gYSkgewotICAgICAgICAgICAg
cmV0dXJuIDQ7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PSh0aHJlYWQgaW50W10gYSwgdGhyZWFkIGludFtdIGIpIHsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICBib29sIG9wZXJhdG9yPT0odGhyZWFkIGludCogYSwgdGhy
ZWFkIGludCogYikgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICBg
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVz
YWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVy
LXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZGIwZDdhZDRiMjg4NDZlNTkzMWRlY2YxOGE5MzdiOTkyZjA4YzE0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgbm9Qb2ludGVyc0luU3RydWN0T3JBcnJheQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVz
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVy
LXVzYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNzJkMWM0MDUxNTE2
NjM3YTUxMTIwYzk3ZjA2OGNmMGQ1ZGY3YWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXIt
cG9pbnRlci11c2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+Y29ycmVjdCBwb2ludGVyIHVzYWdlLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm5vUG9pbnRlcnNJblN0cnVjdE9y
QXJyYXkgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3Ry
dWN0IFMgeyBpbnQgeDsgdGhyZWFkIGludCogcHRyOyB9Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9
Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIFQgPSB0
aHJlYWQgaW50KjsKLSAgICAgICAgc3RydWN0IFMgeyBpbnQgeDsgVCBwdHI7IH0KLSAgICAgICAg
dm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAg
IHN0cnVjdCBTIHsgdGhyZWFkIGludCpbNDJdIGFycjsgfQotICAgICAgICB2b2lkIGZvbygpIHsg
fQotICAgIGApOwotCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygp
IHsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqWzQyXSBhcnI7Ci0gICAgICAgIH0KLSAgICBgKTsK
LQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQq
OwotICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgIFRbNDJdIGFycjsKLSAgICAgICAg
fQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBUID0g
dGhyZWFkIGludCpbNDJdOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAg
YXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQg
eDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICZ4OwotICAgICAgICAgICAgKCZwdHIp
OwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0
eXBlZGVmIFQgPSB0aHJlYWQgaW50KltdOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGAp
OwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0gaW50OwotICAg
ICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSSpbXTsKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgSSA9IHRocmVh
ZCBpbnQqOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOwotICAgICAgICB2b2lkIGZv
bygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRl
ZiBJID0gdGhyZWFkIGludFtdOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOwotICAg
ICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVh
ZCBJKjsKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAg
ICAgICB0aHJlYWQgaW50W10gYXJyID0gQHg7Ci0gICAgICAgICAgICAoQGFycik7Ci0gICAgICAg
IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkg
ewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gYXJyID0gQHg7
Ci0gICAgICAgICAgICAoJmFycik7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgSSA9IHRocmVhZCBpbnRbXTsKLSAgICAgICAgdHlw
ZWRlZiBUID0gdGhyZWFkIEkqOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotfTsK
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1l
LTItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVy
LXZhcmlhYmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1l
LTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxl
LWxpZmV0aW1lLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZmOTU4YTBj
ZWZlMTQ3MTVmMmNlZDAwNmFkYTcwMzNiYTEyMTM2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXBy
b3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsK
LX0KLQotZmxvYXQgYXNzaWduVG9QdHIodGhyZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZhbHVlKSB7
Ci0gICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiByZWFsUHRyKGZs
b2F0IHZhbHVlKQotewotICAgIHJldHVybiAmdmFsdWU7Ci19Ci0KLXRocmVhZCBmbG9hdCogZmly
c3RQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gcmVhbFB0cih2YWx1ZSk7Ci19Ci0KLXRo
cmVhZCBmbG9hdCogc2Vjb25kUHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIGZpcnN0UHRy
KHZhbHVlKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZl
cnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUgPSBmaXJzdFB0
cihzaGFkZSk7Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlMiA9IHNlY29uZFB0cigxLjAp
OwotCi0gICAgZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teVB0ciA9ICZkdW1t
eTsKLQotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZTIsIDAuMCk7Ci0gICAgdGhy
ZWFkIGZsb2F0KiBkdW1teTIgPSByZWFsUHRyKHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3NpdGlv
biA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0
ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUt
bGlmZXRpbWUtMy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE0ODY5ZmFhMDNlNWVmMmJjNjcyZTAyYmI0OTA3OWQ4YjYwMjA3NGMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0
IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxv
YXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRvUHRyKHRocmVhZCBm
bG9hdCogcHRyLCBmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiAqcHRyID0gdmFsdWU7Ci19Ci0K
LXRocmVhZCBmbG9hdCogcmVhbFB0cihmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdCB2ID0gdmFs
dWU7Ci0gICAgcmV0dXJuICZ2OwotfQotCi10aHJlYWQgZmxvYXQqIGZpcnN0UHRyKGZsb2F0IHZh
bHVlKSB7Ci0gICAgcmV0dXJuIHJlYWxQdHIodmFsdWUpOwotfQotCi10aHJlYWQgZmxvYXQqIHNl
Y29uZFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiBmaXJzdFB0cih2YWx1ZSk7Ci19Ci0K
LXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0
OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlID0gZmlyc3RQdHIoc2hhZGUpOwotICAg
IHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIoMS4wKTsKLQotICAgIGZsb2F0
IGR1bW15OwotICAgIHRocmVhZCBmbG9hdCogZHVtbXlQdHIgPSAmZHVtbXk7Ci0KLSAgICBkdW1t
eSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUyLCAwLjApOwotICAgIHRocmVhZCBmbG9hdCogZHVt
bXkyID0gcmVhbFB0cihzaGFkZSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsK
LQotICAgIHJlc3VsdC5zaGFkZSA9ICpwdHJUb1NoYWRlMjsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUs
IHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0
ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0
dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAx
Nn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAg
ICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsK
LSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2
ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5p
Zm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVh
dGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBM
YXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGlu
ZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVU
b3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3Rh
dGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNj
cmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZm
ZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdh
aXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVy
KTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
Nl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAx
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVz
b3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFw
KCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIs
IHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVz
b3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7
bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119Owot
ICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIp
OwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3Jh
OHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hh
aW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBD
aGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0g
b3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBy
ZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50
cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGws
IGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0g
ICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJl
bmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZm
ZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFi
bGUtbGlmZXRpbWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlh
YmxlLWxpZmV0aW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDk2Zjdl
MzUxN2YwNDRjN2I3NDg2OTVlYWU1YzBlMzVjMGE2MTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItdmFyaWFibGUtbGlmZXRpbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwot
fQotCi1mbG9hdCBhc3NpZ25Ub1B0cih0aHJlYWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFsdWUpIHsK
LSAgICByZXR1cm4gKnB0ciA9IHZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIHJlYWxQdHIoZmxv
YXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuICZ2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiBmaXJz
dFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiByZWFsUHRyKHZhbHVlKTsKLX0KLQotdGhy
ZWFkIGZsb2F0KiBzZWNvbmRQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gZmlyc3RQdHIo
dmFsdWUpOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVy
dGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZpcnN0UHRy
KHNoYWRlKTsKLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUyID0gc2Vjb25kUHRyKDEuMCk7
Ci0KLSAgICBmbG9hdCBkdW1teTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15UHRyID0gJmR1bW15
OwotCi0gICAgZHVtbXkgPSBhc3NpZ25Ub1B0cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAgICBkdW1t
eSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUsIHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3NpdGlv
biA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1p
bnRlZ2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0YTJlMjFmMmIwMDZiMjMxNzE2ZWZjZjEwZGVmM2I4MmI2ZjE0MGIzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1Mgc2ltcGxlRW51bUZyb21JbnQKLVBBU1Mg
c2ltcGxlRW51bUZyb21VaW50Ci1QQVNTIHdlaXJkRW51bUZyb21JbnQKLVBBU1Mgd2VpcmRFbnVt
RnJvbVVpbnQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50
ZWdlci1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50
ZWdlci1jb25zdHJ1Y3Rvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzRh
NWNkY2ZlZGI2ZmE2ODdhNTZkMzRhMGIwZmI4OGEyYTk2Mzg3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
LWludGVnZXItY29uc3RydWN0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkVudW1zLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW1Gcm9tSW50ID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAg
ICBBLAotICAgICAgICAgICAgQiwKLSAgICAgICAgICAgIEMKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBmb28oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vKHgpKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNDIpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgwKV0pLCAwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMSldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDIxNDc0ODM2NDcpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMjE0NzQ4MzY0OCldKSwgMCk7Ci19
OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW1Gcm9tVWludCA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgIEEs
Ci0gICAgICAgICAgICBCLAotICAgICAgICAgICAgQwotICAgICAgICB9Ci0KLSAgICAgICAgdWlu
dCBmb28odWludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChGb28oeCkpOwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDEpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KDIpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxMDAw
MDAwKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlVWludCg0Mjk0OTY3Mjk1KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVz
dHMud2VpcmRFbnVtRnJvbUludCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgZW51bSBGb28gOiBpbnQgewotICAgICAgICAgICAgQSA9IDQyLAotICAgICAgICAg
ICAgQiA9IC0xMDAwLAotICAgICAgICAgICAgQyA9IDEwMTAxMCwKLSAgICAgICAgICAgIEQgPSAw
Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgZm9vKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1
cm4gaW50KEZvbyh4KSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDApOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCg0MildKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMTAwMCldKSwgLTEwMDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgx
MDEwMTApXSksIDEwMTAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMjE0NzQ4MzY0
NyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMu
d2VpcmRFbnVtRnJvbVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGVudW0gRm9vIDogdWludCB7Ci0gICAgICAgICAgICBBID0gNDIsCi0gICAgICAgICAg
ICBDID0gMTAxMDEwLAotICAgICAgICAgICAgRCA9IDAKLSAgICAgICAgfQotCi0gICAgICAgIHVp
bnQgZm9vKHVpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHVpbnQoRm9vKHgpKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0MildKSwgNDIp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KDEwMTAxMCldKSwgMTAxMDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0Mjk0OTY3Mjk1KV0p
LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlVWludCgxKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg0MSldKSwgMCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMTAxMDExKV0pLCAwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMt
dGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjI4ZGNl
YzMyOTA1ZjBiMWNlMTlmNWI2MWNiNTQxYjkyYTA3NGI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBB
U1MgZW51bUR1cGxpY2F0ZXMKLVBBU1MgZGVmYXVsdEVudW1Db25zdHJ1Y3RvcgotUEFTUyBlbnVt
QXJyYXlSZWZCYXNlCi1QQVNTIGVudW1GbG9hdEJhc2UKLVBBU1MgZW51bVB0ckJhc2UKLVBBU1Mg
ZW51bVN0cnVjdEJhc2UKLVBBU1MgZW51bU5vTWVtYmVycwotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEwMWY3ODczZTc3YTIwZTQxYjM5YjY2NzZiYjA3NGI4MmMzOGM1YzYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2VudW0tc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhh
cm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZW51bUR1cGxp
Y2F0ZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgICAg
IGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBXYXIgPSA0MiwKLSAgICAgICAgICAgICAgICBG
YW1pbmUgPSAwLAotICAgICAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAyMywKLSAgICAgICAgICAg
ICAgICBEZWF0aCA9IDQyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfTsKLQotd2hsc2xU
ZXN0cy5kZWZhdWx0RW51bUNvbnN0cnVjdG9yID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGVudW0gV2Vla2RheSB7Ci0gICAgICAgICAgICBNb25kYXksCi0g
ICAgICAgICAgICBUdWVzZGF5LAotICAgICAgICAgICAgV2VkbmVzZGF5LAotICAgICAgICAgICAg
VGh1cnNkYXksCi0gICAgICAgICAgICBQaXp6YWRheQotICAgICAgICB9Ci0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWVrZGF5IHggPSBXZWVrZGF5KCk7Ci0gICAg
ICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIpOwotfTsKLQot
d2hsc2xUZXN0cy5lbnVtQXJyYXlSZWZCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiB0aHJlYWQgaW50W10g
ewotICAgICAgICAgICAgICAgIEJhcgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQot
d2hsc2xUZXN0cy5lbnVtRmxvYXRCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiBmbG9hdCB7Ci0gICAgICAg
ICAgICAgICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3Rz
LmVudW1QdHJCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgZW51bSBGb28gOiB0aHJlYWQgaW50KiB7Ci0gICAgICAgICAgICAg
ICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmVudW1T
dHJ1Y3RCYXNlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IFRoaW5neSB7IH0KLSAgICAgICAgICAgIGVudW0gRm9vIDog
VGhpbmd5IHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7
Ci19OwotCi13aGxzbFRlc3RzLmVudW1Ob01lbWJlcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyB7IH0KLSAgICAg
ICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFmN2Y5NmMxOWEzMGYzNGRlOTVkNzJlZmU0NjE4NjNm
N2U2ZTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHNpbXBsZUVudW0KLVBBU1MgZW51bVdpdGhFeHBsaWNp
dEludEJhc2UKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy0yLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU2NDlkZGYzYmIwMDg3OWU4NjNmYzU4MTM0ZDcwMzIyNTNiNWUx
Y2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1OSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkVudW1zLjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZUVudW0gPSBhc3luYyAoKSA9
PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAg
IFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAg
ICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF93YXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
d2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93YXIoKSA9PSBGb28uV2FyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZmFtaW5lKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUoKSA9PSBGb28uRmFtaW5lOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBw
ZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNlKCkg
PT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2RlYXRoKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2RlYXRoKCkg
PT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBG
b28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1w
bGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5XYXIs
IEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZv
by5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdEVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRl
YXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBl
c3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90Tm90RXF1YWwoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uRmFtaW5lLCBGb28u
RGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRXYXIoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gaW50KF93YXIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQg
aW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnRXYXIoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBfaW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGludEZhbWlu
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50RmFtaW5lKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbnQgX2ludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGlu
dFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFBlc3RpbGVu
Y2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RGVhdGgoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gaW50KF9kZWF0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlu
dCBpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50RGVhdGgoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50V2FyQmFja3dhcmRzKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50V2FyKCkpID09IEZvby5XYXI7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGludEZhbWluZUJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBGb28oX2ludEZhbWluZSgpKSA9PSBGb28uRmFtaW5lOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBpbnRQZXN0aWxlbmNlQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEZvbyhfaW50UGVzdGlsZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RGVhdGhCYWNrd2FyZHMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vKF9pbnREZWF0aCgpKSA9PSBGb28uRGVhdGg7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInBlc3RpbGVuY2UiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
ZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxlRXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJFcXVh
bCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVOb3RFcXVhbCIsIFtd
KSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdE5vdE5vdEVxdWFsIiwgW10p
LCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiaW50V2FyIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiaW50RmFtaW5lIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50UGVzdGlsZW5jZSIsIFtdKSwgMik7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImludERlYXRo
IiwgW10pLCAzKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiaW50V2FyQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludEZhbWluZUJhY2t3YXJkcyIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJpbnRQZXN0aWxlbmNlQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludERlYXRoQmFja3dhcmRzIiwg
W10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhFeHBsaWNpdEludEJhc2UgPSBh
c3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIDogaW50
IHsKLSAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBl
c3RpbGVuY2UsCi0gICAgICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF93
YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93YXIo
KSA9PSBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUoKSA9
PSBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IF9wZXN0aWxlbmNlKCkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBG
b28gX2RlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX2RlYXRoKCkgPT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBf
ZXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBib29sIHRlc3RTaW1wbGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBf
ZXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0
QW5vdGhlckVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9v
LlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
dGVzdE5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9v
LkZhbWluZSwgRm9vLkRlYXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBs
ZU5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9v
LldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90
RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVz
dGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0
Tm90Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhG
b28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRXYXIo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF93YXIoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpbnQgaW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9p
bnRXYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RmFtaW5lKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IGludEZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50RmFt
aW5lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2ludFBlc3RpbGVuY2UoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaW50IGludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2ludFBlc3RpbGVuY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50RGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9kZWF0aCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGludCBpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBfaW50RGVhdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50V2FyQmFja3dhcmRz
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50V2FyKCkpID09IEZvby5X
YXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludEZhbWluZUJhY2t3YXJkcygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludEZhbWluZSgpKSA9PSBGb28uRmFtaW5l
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRQZXN0aWxlbmNlQmFja3dhcmRzKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50UGVzdGlsZW5jZSgpKSA9PSBGb28u
UGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RGVhdGhCYWNrd2FyZHMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnREZWF0aCgpKSA9PSBGb28u
RGVhdGg7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInBlc3Rp
bGVuY2UiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxlRXF1YWwiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
dGVzdEFub3RoZXJFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBbXSksIGZhbHNlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1w
bGVOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdE5v
dE5vdEVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiaW50V2FyIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lIiwgW10pLCAxKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50UGVzdGlsZW5j
ZSIsIFtdKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImludERlYXRoIiwgW10pLCAzKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50V2FyQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludEZhbWlu
ZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlQmFja3dhcmRzIiwgW10pLCB0cnVlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludERl
YXRoQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZW51bXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3ZmU1ZjRmZTY3ZmEwZjU4
MzgxOWIxNjhlMzYyNTA1ZDNhOWE2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotCi1QQVNTIGZhaWxUcmlja3lEb3VibGVa
ZXJvCi1QQVNTIHNpbXBsZURlY2xhcmF0aW9uCi1QQVNTIGVudW1XaXRoVWludEJhc2UKLVBBU1Mg
ZW51bVdpdGhvdXRaZXJvCi1QQVNTIGVudW1OZWdhdGl2ZVVpbnQKLVBBU1MgcGFzdEludE1heAot
UEFTUyBlbnVtV2l0aFNvbWVNYW51YWxWYWx1ZXMKLVBBU1MgZW51bVN3aXRjaEJyZWFrRXhoYXVz
dGl2ZQotUEFTUyBlbnVtU3dpdGNoQnJlYWtOb3RRdWl0ZUV4aGF1c3RpdmVXaXRoRGVmYXVsdAot
UEFTUyBlbnVtV2l0aE1hbnVhbFZhbHVlcwotUEFTUyBlbnVtU3dpdGNoQnJlYWtOb3RRdWl0ZUV4
aGF1c3RpdmUKLVBBU1MgY29weUNvbnN0cnVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZW51bXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2U4ZWZmYTFiMTk4YWI0MjNj
MWU2ZTQ3ODkxZGMyZTAzNDZiNmYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZmFpbFRy
aWNreURvdWJsZVplcm8gPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZW51bSBFIHsKLSAgICAgICAgICAgIEYsCi0gICAgICAgICAgICBHID0gLTIsCi0gICAg
ICAgICAgICBILAotICAgICAgICAgICAgSSAvLyBzaG91bGQgZ2V0IHplcm8sIGFuZCB0aGF0J3Mg
YSBkdXBlLgotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBFIGUgPSBFLkZvbzsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotfTsKLQotd2hsc2xUZXN0cy5zaW1w
bGVEZWNsYXJhdGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBlbnVtIEUgewotICAgICAgICAgICAgRm9vLAotICAgICAgICAgICAgQmFyCi0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEUgZSA9IEUuRm9v
OwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19
OwotCi13aGxzbFRlc3RzLmVudW1XaXRoVWludEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIDogdWludCB7Ci0gICAgICAgICAgICBXYXIs
Ci0gICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICBQZXN0aWxlbmNlLAotICAgICAgICAg
ICAgRGVhdGgKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfd2FyKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHdhcigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfd2FyKCkgPT0gRm9vLldhcjsKLSAgICAg
ICAgfQotCi0gICAgICAgIEZvbyBfZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZhbWluZSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZmFtaW5lKCkgPT0gRm9vLkZhbWluZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIEZvbyBfcGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgcGVzdGls
ZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfcGVzdGlsZW5jZSgpID09IEZv
by5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9kZWF0aCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGRlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9kZWF0aCgpID09IEZv
by5EZWF0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX2VxdWFscyhGb28gYSwgRm9vIGIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIF9ub3RFcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYSAhPSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlRXF1
YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uV2FyLCBGb28u
V2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJFcXVhbCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVz
dGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3RFcXVhbCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1wbGVOb3RFcXVhbCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlck5vdEVxdWFsKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxl
bmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdE5vdEVxdWFsKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRXYXIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gdWludChfd2FyKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCB1
aW50V2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50V2FyKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1aW50IF91aW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHVpbnQoX2ZhbWluZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgdWlu
dEZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfdWludEZhbWluZSgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdWludCBfdWludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gdWludChfcGVzdGlsZW5jZSgpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHVpbnQgdWludFBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
X3VpbnRQZXN0aWxlbmNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IF91aW50RGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChfZGVhdGgoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB1aW50IHVpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBfdWludERlYXRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRXYXJCYWNr
d2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50V2FyKCkpID09
IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRGYW1pbmVCYWNrd2FyZHMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50RmFtaW5lKCkpID09IEZv
by5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnRQZXN0aWxlbmNlQmFja3dh
cmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfdWludFBlc3RpbGVuY2Uo
KSkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHVpbnREZWF0
aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnREZWF0
aCgpKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIHRydWUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwg
W10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgInBlc3RpbGVuY2UiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIHRydWUpOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0U2ltcGxlRXF1
YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAidGVzdEFub3RoZXJFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90RXF1YWwiLCBbXSks
IGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgInRlc3RTaW1wbGVOb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdEFub3RoZXJOb3RFcXVhbCIsIFtd
KSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAidGVzdE5vdE5vdEVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRXYXIiLCBbXSksIDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAidWludEZhbWluZSIs
IFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJ1aW50UGVzdGlsZW5jZSIsIFtdKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50V2FyQmFja3dh
cmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgInVpbnRGYW1pbmVCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidWludFBlc3RpbGVuY2VC
YWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAidWludERlYXRoQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLX07Ci0K
LQotd2hsc2xUZXN0cy5lbnVtV2l0aG91dFplcm8gPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAg
ICAgICAgV2FyID0gNzIsCi0gICAgICAgICAgICAgICAgRmFtaW5lID0gNjQsCi0gICAgICAgICAg
ICAgICAgUGVzdGlsZW5jZSA9IDIzLAotICAgICAgICAgICAgICAgIERlYXRoID0gLTQyCi0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5lbnVtTmVnYXRpdmVVaW50
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgICAgICBXYXIsCi0gICAgICAgICAg
ICAgICAgRmFtaW5lLAotICAgICAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAgICAgICAgICAg
ICAgRGVhdGggPSAtNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRl
c3RzLnBhc3RJbnRNYXggPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IGludCB7Ci0gICAgICAgICAgICAgICAgV2Fy
ID0gMjE0NzQ4MzY0NywKLSAgICAgICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICAgICAg
UGVzdGlsZW5jZSA9IDAsCi0gICAgICAgICAgICAgICAgRGVhdGgKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1XaXRoU29tZU1hbnVhbFZhbHVlcyA9IGFz
eW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gewotICAg
ICAgICAgICAgV2FyID0gNzIsCi0gICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICBQZXN0
aWxlbmNlID0gMCwKLSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLSAgICAgICAgaW50IHdh
cigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLldhcik7Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
bnQoRm9vLkZhbWluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2UoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAg
fQotICAgICAgICBpbnQgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50
KEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDcyKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCA3Myk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgInBlc3RpbGVu
Y2UiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJkZWF0aCIsIFtdKSwgMSk7Ci19OwotCi0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJy
ZWFrRXhoYXVzdGl2ZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgZW51bSBGb28gewotICAgICAgICAgICAgQSwgQiwgQwotICAgICAgICB9Ci0gICAgICAgIGlu
dCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwotICAg
ICAgICAgICAgc3dpdGNoIChGb28oeCkpIHsKLSAgICAgICAgICAgIGNhc2UgRm9vLkE6Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBGb28uQjoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRm9vLkM6Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDAp
XSksIDI3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoMSldKSwgNzYyNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDQ5KTsKLX0KLQot
Ci13aGxzbFRlc3RzLmVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZhdWx0
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7
Ci0gICAgICAgICAgICBBLCBCLCBDCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhpbnQgeCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICBzd2l0
Y2ggKEZvbyh4KSkgewotICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZv
by5COgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNDk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMjcpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgxKV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNDkpOwotfQotCi13aGxzbFRlc3RzLmVudW1X
aXRoTWFudWFsVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgIEZhbWlu
ZSA9IDAsCi0gICAgICAgICAgICBQZXN0aWxlbmNlID0gMjMsCi0gICAgICAgICAgICBEZWF0aCA9
IC00MgotICAgICAgICB9Ci0gICAgICAgIGludCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50KEZvby5XYXIpOwotICAgICAgICB9Ci0gICAgICAgIGludCBmYW1pbmUoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5GYW1pbmUpOwotICAgICAgICB9
Ci0gICAgICAgIGludCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGludChGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGRlYXRoKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uRGVhdGgpOwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
d2FyIiwgW10pLCA3Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZhbWluZSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgInBlc3RpbGVuY2UiLCBbXSksIDIzKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZGVhdGgiLCBbXSksIC00Mik7
Ci19OwotCi13aGxzbFRlc3RzLmVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZSA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBBLCBCLCBDLCBECi0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnQgZm9vKEZvbyB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGludCByZXN1bHQgPSAwOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoeCkgewotICAgICAgICAg
ICAgICAgIGNhc2UgRm9vLkE6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAyNzsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQjoKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDc2MjQ7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRm9vLkM6Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSA0OTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfTsKLQotd2hsc2xUZXN0cy5jb3B5Q29uc3RydWN0b3JzID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gV2Vla2RheSB7Ci0gICAgICAgICAg
ICBNb25kYXksCi0gICAgICAgICAgICBUdWVzZGF5LAotICAgICAgICAgICAgV2VkbmVzZGF5LAot
ICAgICAgICAgICAgVGh1cnNkYXksCi0gICAgICAgICAgICBQaXp6YWRheQotICAgICAgICB9Ci0g
ICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWVrZGF5IHggPSBXZWVr
ZGF5Lk1vbmRheTsKLSAgICAgICAgICAgIFdlZWtkYXkgeSA9IFdlZWtkYXkoeCk7Ci0gICAgICAg
ICAgICBmbG9hdDQgeiA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKLSAgICAgICAgICAgIGZsb2F0NCB3
ID0gZmxvYXQ0KHopOwotICAgICAgICAgICAgZmxvYXQyeDIgcDsKLSAgICAgICAgICAgIGZsb2F0
MngyIHEgPSBmbG9hdDJ4MihwKTsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdKSwgNDIpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHktZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzM2NjRjOTA5ODk5YjYxOGIwYzRl
ZDAyMjdkZWRjZDZiZGRlMGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgZXF1YWxpdHkKLVBBU1Mgbm90
RXF1YWxpdHkKLVBBU1MgZXF1YWxpdHlUeXBlRmFpbHVyZQotUEFTUyBlcXVhbHNXcm9uZ0FyZ3Vt
ZW50TGVuZ3RoCi1QQVNTIGVxdWFsc1dyb25nUmV0dXJuVHlwZQotUEFTUyBsZXNzRXF1YWxXcm9u
Z0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGxlc3NFcXVhbFdyb25nUmV0dXJuVHlwZQotUEFTUyBsZXNz
VGhhbldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbGVzc1RoYW5Xcm9uZ1JldHVyblR5cGUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmVhN2EyNmM5OGIyM2M1YTYzOWFlYmQ3ZTQ1NjFlNDU2NzNhMjFmMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZXF1YWxpdHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFy
bmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5lcXVhbGl0eSA9
IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJib29sIGZvbyh1aW50IHgsIHVpbnQg
eSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgZmFs
c2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg3KV0pLCB0cnVlKTsKLSAgICBwcm9ncmFtID0g
ImJvb2wgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcp
LCBtYWtlSW50KDUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDcpXSksIHRydWUp
OwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28oYm9vbCB4LCBib29sIHkpIHsgcmV0dXJuIHggPT0g
eTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pLCBmYWxzZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2Up
LCBtYWtlQm9vbChmYWxzZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRy
dWUpXSksIHRydWUpOwotfQotCi13aGxzbFRlc3RzLm5vdEVxdWFsaXR5ID0gYXN5bmMgKCkgPT4g
ewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4
ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCB0cnVlKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dCg3KSwgbWFrZVVpbnQoNyldKSwgZmFsc2UpOwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28oaW50
IHgsIGludCB5KSB7IHJldHVybiB4ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSld
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg3KV0pLCBmYWxzZSk7Ci0gICAgcHJvZ3Jh
bSA9ICJib29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4geCAhPSB5OyB9IjsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
Qm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBt
YWtlQm9vbChmYWxzZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxz
ZSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pLCBmYWxzZSk7
Ci19OwotCi13aGxzbFRlc3RzLmVxdWFsaXR5VHlwZUZhaWx1cmUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKCJib29sIGZvbyhpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09
IHk7IH0iKTsKLX07Ci0KLXdobHNsVGVzdHMuZXF1YWxzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShp
bnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCwgaW50KSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotfTsKLQotd2hsc2xUZXN0cy5lcXVhbHNXcm9u
Z1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9y
PT0oRm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3Rz
Lmxlc3NFcXVhbFdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oKSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw9KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
Ym9vbCBvcGVyYXRvcjw9KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAg
YCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc0VxdWFsV3JvbmdSZXR1cm5UeXBlID0gYXN5bmMgKCkg
PT4gewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw9KEZvbywgRm9vKSB7IHJldHVybiA0MjsgfQot
ICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sZXNzVGhhbldyb25nQXJndW1lbnRMZW5ndGgg
PSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBib29sIG9wZXJhdG9yPCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPChp
bnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPChpbnQsIGludCwgaW50KSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmxlc3NUaGFuV3JvbmdS
ZXR1cm5UeXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcjwo
Rm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMDFjYzExOThmZDIwMjM2Y2RkMGQ3N2U3ZjkzZjcxNDNmZjhkMWNhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9mbG9hdC1tYXRoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
Ci1QQVNTIGZsb2F0TWF0aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZmxvYXQtbWF0aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGguaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3MTdmMDA0M2RkOGFiYzQ0YWI3YTBm
YTE3MTFhYzRkZjkxM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hs
c2xUZXN0cy5mbG9hdE1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGJvb2wgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDQyLjUgPT0g
NDIuNTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiYXIoZmxvYXQgeCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoNy41KTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb285KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0KDcuNSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTIoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmxvYXQoNyk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdCB4ID0gNy41OwotICAgICAgICAgICAgcmV0dXJuIGZs
b2F0KHgpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZGl2KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIDAuNSAvIDIgPT0gMC4yNTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzYiLCBbXSksIDcuNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vOSIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMiIsIFtdKSwgNyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMiLCBbXSks
IDcuNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICJkaXYiLCBbXSksIHRydWUpOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgYmFyKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgYmFyKDQuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
YmFyKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgYmFyKDQuMGYpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdWludCBiYXIodWludCB4KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmFy
KDQuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB1aW50IGJhcih1aW50IHgpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wZik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2dldHRl
ci1zZXR0ZXItdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0
dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWUzZTBjNjMxZWUwMTkwZDdhZGRlNzIxYzJjYTU0ZDE4ZmM5NTAxMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZ2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotCi1QQVNTIGdldHRlclR5cGUKLVBBU1Mgc2V0dGVyVHlwZQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNjODNkYjliM2NkODFkYzhiMjU1MDUzZDRiMDA2Zjk5OGUyZTA4
ZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2dldHRlci1zZXR0ZXItdHlwZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTAzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5nZXR0ZXJU
eXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBv
cGVyYXRvci54KHRocmVhZCBpbnRbXSBmb28pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBmb29bMF07Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgaW50IG9wZXJhdG9yLngoaW50WzNdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWQgaW50W10gZm9vLCBpbnQgaW5kZXgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb29baW5kZXhdOwotICAgICAgICB9Ci0gICAg
YCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvci54KGludFsz
XSBmb28pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb29bMF07Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0g
ICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXShGb28g
Zm9vLCB1aW50NCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1tpbmRl
eC54XTsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXdobHNsVGVzdHMuc2V0dGVyVHlwZSA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0aHJlYWQgaW50
W10gb3BlcmF0b3IueD0odGhyZWFkIGludFtdIGZvbywgdWludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZm9vOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludFszXSBvcGVyYXRvci54PShpbnRbM10gZm9vLCB1aW50IHgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdGhyZWFkIGludFtdIG9wZXJhdG9yW109KHRo
cmVhZCBpbnRbXSBmb28sIHVpbnQgeCwgdWludCB5KQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9vOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIGludFszXSBvcGVyYXRvci54PShpbnRbM10gZm9vLCB1aW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgfQotICAgICAgICBGb28gb3BlcmF0b3JbXT0oRm9vIGZvbywgZmxvYXQ0IHksIHVpbnQg
eikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvby54OwotICAgICAgICB9Ci0gICAg
YCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAg
ICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IG9wZXJhdG9yLnkoRm9vIGZvbykK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvby54OwotICAgICAgICB9Ci0gICAgICAg
IEZvbyBvcGVyYXRvci55PShGb28gZm9vLCBpbnQ0IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICBmb28ueCA9IHgueDsKLSAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgKTsgCi19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aHVnZS1hcnJheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3
MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1
Z2UtYXJyYXktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNT
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg0NmM5MTY3ZjRlYWNjMTAzNDIyYjcyZDZiNzZiN2RiYTdjNjA5NmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXZvaWQgZmlsbCh0aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxv
YXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykg
ewotICAgICAgICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLX0KLQotW251bXRocmVhZHMoMSwg
MSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVyIDog
cmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0g
ICAgZmxvYXRbMTAwMF0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxMDAwKQotICAg
ICAgICByZXR1cm47Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgYXJyYXlbMF0gPSAwLjEzMzc7Ci0gICAgaWYgKGFycmF5WzBdICE9IDAuMTMzNykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgdGhyZWFkIGZsb2F0W10gYXJyYXlQdHIgPSBAYXJyYXk7
Ci0gICAgaWYgKGFycmF5UHRyLmxlbmd0aCAhPSAxMDAwKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmaWxsKGFycmF5UHRyLCAwLjEwMTApOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5
UHRyLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhcnJheVB0cltpXSAhPSAwLjEwMTApCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAwLjEwMTApCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmlsbChAYXJyYXksIDAuMDEwMSk7Ci0gICAg
Zm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFy
cmF5UHRyW2ldICE9IDAuMDEwMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFy
cmF5W2ldICE9IDAuMDEwMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBidWZm
ZXJbMF0gPSAxOwotfQotYDsKLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywg
dHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6
ZSA9IEludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BV
QnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJh
eSA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1
ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBH
UFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBj
b25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1
ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCBy
ZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9
IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07
Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVm
ZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0
ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFz
c0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBj
b25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3lu
YygpOwotICAgIGxldCByZXN1bHRzSW50MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KHJlc3VsdHNB
cnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNJbnQzMkFycmF5WzBdID09PSAxKQotICAgICAg
ICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
IHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTU4YTJjMzMxYTFkNDcwM2FmN2I4ZDllNzhjMWIw
NDliNDU3YzBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgaWZTdGF0ZW1lbnQKLVBBU1MgaWZFbHNl
U3RhdGVtZW50Ci1QQVNTIGlmRWxzZUlmU3RhdGVtZW50Ci1QQVNTIGlmRWxzZUlmRWxzZVN0YXRl
bWVudAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTg1YWZkNzdmYzgwYTI1ZThiM2JmYzkyMDhmYzRl
OWMzNDUzZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
aWZTdGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAg
ICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMp
XSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg0KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNSldKSwgNik7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYp
XSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOCldKSwgNik7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDkp
XSksIDYpOwotfQotCi13aGxzbFRlc3RzLmlmRWxzZVN0YXRlbWVudCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAg
ICAgICAgICAgICB5ID0gODsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
eSA9IDk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDMpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA5KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNSld
KSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDYpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOCld
KSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDkpXSksIDkpOwotfQotCi13aGxzbFRlc3RzLmlmRWxzZUlmU3RhdGVt
ZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
byhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAg
aWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBlbHNl
IGlmICh4ID09IDgpIHsKLSAgICAgICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgNik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDQpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgNik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgNik7
Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZFbHNlU3RhdGVtZW50ID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAg
ICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBlbHNlIGlmICh4ID09IDgpIHsKLSAgICAg
ICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
eSA9IDEwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCgzKV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDEwKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
NSldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg2KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgMTApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1MTEyNDVjNjUyY2EwYjBmMGJkM2RmNjZmM2E0NDIyMjA2MDc4MzU1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGluY3JlbWVudEFuZERlY3JlbWVudAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjcxYjRjZjRkYzM4NzI3NWEyOWRjZTNjMTFm
NjM5OGU5MzJmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmlu
Y3JlbWVudEFuZERlY3JlbWVudCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbzEoKSB7IGludCB4ID0gMDsgcmV0dXJuIHgrKzsgfQotICAgICAgICBp
bnQgZm9vMigpIHsgaW50IHggPSAwOyB4Kys7IHJldHVybiB4OyB9Ci0gICAgICAgIGludCBmb28z
KCkgeyBpbnQgeCA9IDA7IHJldHVybiArK3g7IH0KLSAgICAgICAgaW50IGZvbzQoKSB7IGludCB4
ID0gMDsgKyt4OyByZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9vNSgpIHsgaW50IHggPSAwOyBy
ZXR1cm4geC0tOyB9Ci0gICAgICAgIGludCBmb282KCkgeyBpbnQgeCA9IDA7IHgtLTsgcmV0dXJu
IHg7IH0KLSAgICAgICAgaW50IGZvbzcoKSB7IGludCB4ID0gMDsgcmV0dXJuIC0teDsgfQotICAg
ICAgICBpbnQgZm9vOCgpIHsgaW50IHggPSAwOyAtLXg7IHJldHVybiB4OyB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMSIsIFtd
KSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbzIiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28zIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzUiLCBbXSksIDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCAtMSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzci
LCBbXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vOCIsIFtdKSwgLTEpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lu
Y3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lu
Y3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2ZGJiNzM0MGFhYzRmZGIxZGFkMmVlMjI0NWQ1NWIwYWVhMTllMjJlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pbmNyZW1lbnQtc2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIGluY3JlbWVudFNldHRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2luY3JlbWVudC1zZXR0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Yjk0MTQ0ZTNjM2U2OTY3YTcyYzZkZmZlYTAwYjUwMDUzYTY2NjYwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aW5jcmVtZW50LXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmluY3JlbWVudFNldHRlciA9IGFz
eW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28gewot
ICAgICAgICAgICAgaW50IHo7Ci0gICAgICAgICAgICBpbnQgdzsKLSAgICAgICAgfQotICAgICAg
ICBpbnQgYmFyKCkgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby56ID0g
MzsKLSAgICAgICAgICAgIGZvby53ID0gMTsKLSAgICAgICAgICAgIGludCB2YWx1ZSA9IGZvby53
Kys7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUqMTAwICsgZm9vLnoqMTAgKyBmb28udzsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImJhciIsIFtdKSwgMTAwICsgMzAgKyAyKTsKLX0KLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWY1MGU5NDI5MTU5OTY4ZGVlZDE0N2FmNzg3OTQ1N2MyY2UzMDM5
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwb2ludGVySW5kZXhHZXR0ZXIKLVBBU1Mg
cG9pbnRlckdldHRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5k
ZXgtZ2V0dGVyLXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4LWdl
dHRlci1zZXR0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNmMjdhMzNl
YjdjNjIyMjBlODk4ZTI2YTFiMWU1YjllOTJmMWI0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgtZ2V0
dGVyLXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucG9pbnRlckluZGV4R2V0dGVy
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yW10oZGV2aWNlIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdKHRocmVhZCBpbnQqLCB1aW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWRncm91cCBp
bnQqLCB1aW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShjb25zdGFudCBpbnQqLCB1aW50KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnBvaW50ZXJHZXR0ZXIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3IuZm9vKGRldmljZSBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWQgaW50KikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQot
ICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvci5mb28odGhyZWFkZ3JvdXAgaW50KikKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28o
Y29uc3RhbnQgaW50KikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQz
OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2ludC1iaXQtbWF0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWQ2ZWYwN2E3YWMzMGQxNWIyMzYyODEyMzQ5NmJmZjc4MGU2YTcxNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
aW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
Ci1QQVNTIGludEJpdEFuZAotUEFTUyBpbnRCaXRPcgotUEFTUyBpbnRCaXRYb3IKLVBBU1MgaW50
Qml0Tm90Ci1QQVNTIGludExTaGlmdAotUEFTUyBpbnRSU2hpZnQKLVBBU1MgaW50U2ltcGxlTWF0
aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNzA1Y2M3NTU5ODYxYmUzZjAzNTI4NzFhMzA1MTRhYTQx
NzIwNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBp
bnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuaW50
Qml0QW5kID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICYgYjsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDEpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDQyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0p
LCAtNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCAwKTsKLX0KLQotd2hsc2xUZXN0
cy5pbnRCaXRPciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSB8
IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUludCg3KV0pLCA3KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTUzNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKSwgbWFrZUlu
dCgtNyldKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgwKSwgbWFrZUludCg4NTczMildKSwgODU3MzIpOwotfQot
Ci13aGxzbFRlc3RzLmludEJpdFhvciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGludCBmb28oaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUludCg3
KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTQ5Myk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KC0xKSwgbWFrZUludCgtNyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4
NTczMik7Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0Tm90ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIH5hOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgLTIpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCg2NTUzNSldKSwgLTY1NTM2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpXSksIDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgw
KV0pLCAtMSk7Ci19Ci0KLXdobHNsVGVzdHMuaW50TFNoaWZ0ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgdWludCBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA8PCBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMSksIG1ha2VVaW50KDcpXSksIDEyOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVpbnQoMild
KSwgMjYyMTQwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMzIpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgw
KSwgbWFrZVVpbnQoMyldKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMuaW50UlNoaWZ0ID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgdWlu
dCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA+PiBiOwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoMSksIG1ha2VVaW50KDcpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1h
a2VVaW50KDIpXSksIDE2MzgzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRTaW1wbGVN
YXRoID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGlu
dCB5KSB7IHJldHVybiB4ICsgeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDEyKTsK
LSAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4IC0geTsgfSI7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KSwgbWFrZUludCg3KV0p
LCAtMik7Ci0gICAgcHJvZ3JhbSA9ICJpbnQgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4geCAq
IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg1KV0pLCAzNSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtl
SW50KC01KV0pLCAtMzUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFs
LWNvbXBhcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRl
cmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZmZjODc5MDZlMWEyMThkMmM4Y2RhYjFkMmZmYzlkMDRiOWI4NWQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9p
bnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIHR3b0ludExpdGVyYWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjYTY4YmM4YTRjMjhlMDMwZmU1YzRjNGYyZjdkNThhZGI5OWYzMzIyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy50d29JbnRMaXRlcmFscyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNDIgPT0gNDI7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvanMvdGVz
dC1oYXJuZXNzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDU2Yzk2ODI0MDk5
NjY3ODVhYjAxOTkxZTJjNGViOGNkYzY1ZmFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5l
c3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NDUgKzAsMCBAQAotLyogVHlwZSBVdGlsdGllcyAq
LwotCi0vLyBGSVhNRTogU3VwcG9ydCBhbGwgV0hMU0wgc2NhbGFyIGFuZCB2ZWN0b3IgdHlwZXMu
Ci0vLyBGSVhNRTogU3VwcG9ydCB0ZXh0dXJlcyBhbmQgc2FtcGxlcnMuCi1jb25zdCBUeXBlcyA9
IE9iamVjdC5mcmVlemUoewotICAgIEJPT0w6IFN5bWJvbCgiYm9vbCIpLAotICAgIElOVDogU3lt
Ym9sKCJpbnQiKSwKLSAgICBVQ0hBUjogU3ltYm9sKCJ1Y2hhciIpLAotICAgIFVJTlQ6IFN5bWJv
bCgidWludCIpLAotICAgIEZMT0FUOiBTeW1ib2woImZsb2F0IiksCi0gICAgRkxPQVQ0OiBTeW1i
b2woImZsb2F0NCIpLAotICAgIEZMT0FUNFg0OiBTeW1ib2woImZsb2F0NHg0IiksCi0gICAgTUFY
X1NJWkU6IDY0IC8vIFRoaXMgbmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFueSBzaW5n
dWxhciBXSExTTCB0eXBlLgotfSk7Ci0KLWZ1bmN0aW9uIGlzU2NhbGFyKHR5cGUpCi17Ci0gICAg
c3dpdGNoKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAgICAgIGNhc2Ug
VHlwZXMuRkxPQVQ0WDQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnZl
cnRUeXBlVG9BcnJheVR5cGUodHlwZSkKLXsKLSAgICBzd2l0Y2godHlwZSkgewotICAgICAgICBj
YXNlIFR5cGVzLkJPT0w6Ci0gICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheTsKLSAgICAgICAg
Y2FzZSBUeXBlcy5JTlQ6Ci0gICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheTsKLSAgICAgICAg
Y2FzZSBUeXBlcy5VQ0hBUjoKLSAgICAgICAgICAgIHJldHVybiBVaW50OEFycmF5OwotICAgICAg
ICBjYXNlIFR5cGVzLlVJTlQ6Ci0gICAgICAgICAgICByZXR1cm4gVWludDMyQXJyYXk7Ci0gICAg
ICAgIGNhc2UgVHlwZXMuRkxPQVQ6Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0OgotICAgICAg
ICBjYXNlIFR5cGVzLkZMT0FUNFg0OgotICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBU
WVBFIHByb3ZpZGVkISIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udmVydFR5cGVUb1dITFNM
VHlwZSh0eXBlKQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZXMuQk9P
TDoKLSAgICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuSU5UOgot
ICAgICAgICAgICAgcmV0dXJuICJpbnQiOwotICAgICAgICBjYXNlIFR5cGVzLlVDSEFSOgotICAg
ICAgICAgICAgcmV0dXJuICJ1Y2hhciI7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUlOVDoKLSAgICAg
ICAgICAgIHJldHVybiAidWludCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ6Ci0gICAgICAg
ICAgICByZXR1cm4gImZsb2F0IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAgICAg
ICAgICByZXR1cm4gImZsb2F0NCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0WDQ6Ci0gICAg
ICAgICAgICByZXR1cm4gImZsb2F0NHg0IjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBUWVBFIHByb3ZpZGVkISIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gd2hsc2xBcmd1bWVudFR5cGUodHlwZSkKLXsKLSAgICBpZiAodHlwZSA9PT0gVHlw
ZXMuQk9PTCkKLSAgICAgICAgcmV0dXJuICJpbnQiOwotICAgIHJldHVybiBjb252ZXJ0VHlwZVRv
V0hMU0xUeXBlKHR5cGUpOwotfQotCi1mdW5jdGlvbiBjb252ZXJ0VG9XSExTTE91dHB1dFR5cGUo
Y29kZSwgdHlwZSkKLXsKLSAgICBpZiAodHlwZSAhPT0gVHlwZXMuQk9PTCkKLSAgICAgICAgcmV0
dXJuIGNvZGU7Ci0gICAgcmV0dXJuIGBpbnQoJHtjb2RlfSlgOwotfQotCi1mdW5jdGlvbiBjb252
ZXJ0VG9XSExTTElucHV0VHlwZShjb2RlLCB0eXBlKQotewotICAgIGlmICh0eXBlICE9PSBUeXBl
cy5CT09MKQotICAgICAgICByZXR1cm4gY29kZTsKLSAgICByZXR1cm4gYGJvb2woJHtjb2RlfSlg
OwotfQotCi0vKiBIYXJuZXNzIENsYXNzZXMgKi8KLQotY2xhc3MgV2ViR1BVVW5zdXBwb3J0ZWRF
cnJvciBleHRlbmRzIEVycm9yIHsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBz
dXBlcigiTm8gR1BVRGV2aWNlIGRldGVjdGVkISIpOwotICAgIH0KLX07Ci0KLWNsYXNzIERhdGEg
ewotICAgIC8qKgotICAgICAqIFVwbG9hZCB0eXBlZCBkYXRhIHRvIGFuZCByZXR1cm4gYSB3cmFw
cGVyIG9mIGEgR1BVQnVmZmVyLgotICAgICAqIEBwYXJhbSB7VHlwZXN9IHR5cGUgLSBUaGUgV0hM
U0wgdHlwZSB0byBiZSBzdG9yZWQgaW4gdGhpcyBEYXRhLgotICAgICAqIEBwYXJhbSB7TnVtYmVy
IG9yIEFycmF5W051bWJlcl19IHZhbHVlcyAtIFRoZSByYXcgZGF0YSB0byBiZSB1cGxvYWRlZC4K
LSAgICAgKi8KLSAgICBjb25zdHJ1Y3RvcihoYXJuZXNzLCB0eXBlLCB2YWx1ZXMsIGlzQnVmZmVy
ID0gZmFsc2UpCi0gICAgewotICAgICAgICBpZiAoaGFybmVzcy5kZXZpY2UgPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gT25lIG9yIG1vcmUgc2NhbGFycyBp
biBhbiBhcnJheSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBhbiBhcnJheSByZWZlcmVuY2UuCi0g
ICAgICAgIC8vIEhvd2V2ZXIsIHZlY3RvciB0eXBlcyBhcmUgYWxzbyBjcmVhdGVkIHZpYSBhbiBh
cnJheSBvZiBzY2FsYXJzLgotICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBidWZmZXJzIG9m
IGp1c3Qgb25lIHZlY3RvciBhcmUgdXNhYmxlIGluIGEgdGVzdCBmdW5jdGlvbi4KLSAgICAgICAg
aWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkKLSAgICAgICAgICAgIHRoaXMuX2lzQnVmZmVyID0g
aXNTY2FsYXIodHlwZSkgPyB0cnVlIDogaXNCdWZmZXI7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgdGhpcy5faXNCdWZmZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIHZhbHVlcyA9IFt2YWx1
ZXNdOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgICAgIHRo
aXMuX2J5dGVMZW5ndGggPSAoY29udmVydFR5cGVUb0FycmF5VHlwZSh0eXBlKSkuQllURVNfUEVS
X0VMRU1FTlQgKiB2YWx1ZXMubGVuZ3RoOwotCi0gICAgICAgIGNvbnN0IFtidWZmZXIsIGFycmF5
QnVmZmVyXSA9IGhhcm5lc3MuZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7Ci0gICAgICAgICAg
ICBzaXplOiB0aGlzLl9ieXRlTGVuZ3RoLAotICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgICAgICB9KTsKLQotICAg
ICAgICBjb25zdCB0eXBlZEFycmF5ID0gbmV3IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUp
KShhcnJheUJ1ZmZlcik7Ci0gICAgICAgIHR5cGVkQXJyYXkuc2V0KHZhbHVlcyk7Ci0gICAgICAg
IGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjsKLSAgICB9
Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJucyBBbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRo
ZSBjb250ZW50cyBvZiB0aGlzIERhdGEuCi0gICAgICovCi0gICAgYXN5bmMgZ2V0QXJyYXlCdWZm
ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKGhhcm5lc3MuZGV2aWNlID09PSB1bmRlZmluZWQpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcigpOwotCi0gICAgICAg
IGxldCByZXN1bHQ7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0
aGlzLl9idWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgICAgICB0aGlzLl9idWZmZXIudW5t
YXAoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRh
dGEgZXJyb3I6IFVuYWJsZSB0byBnZXQgQXJyYXlCdWZmZXIhIik7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMu
X3R5cGU7IH0KLSAgICBnZXQgaXNCdWZmZXIoKSB7IHJldHVybiB0aGlzLl9pc0J1ZmZlcjsgfQot
ICAgIGdldCBidWZmZXIoKSB7IHJldHVybiB0aGlzLl9idWZmZXI7IH0KLSAgICBnZXQgYnl0ZUxl
bmd0aCgpIHsgcmV0dXJuIHRoaXMuX2J5dGVMZW5ndGg7IH0KLX0KLQotY2xhc3MgSGFybmVzcyB7
Ci0gICAgY29uc3RydWN0b3IgKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNl
OwotICAgIH0KLQotICAgIGFzeW5jIHJlcXVlc3REZXZpY2UoKQotICAgIHsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVl
c3RBZGFwdGVyKCk7Ci0gICAgICAgICAgICB0aGlzLl9kZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJl
cXVlc3REZXZpY2UoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICAvLyBXZWJHUFUg
aXMgbm90IHN1cHBvcnRlZC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
R1BVQWRhcHRlclJlcXVlc3RPcHRpb25zIGFuZCBHUFVEZXZpY2VEZXNjcmlwdG9yLAotICAgICAg
ICAgICAgLy8gYW5kIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBkZXNjcmlwdG9yIHZhbGlkYXRpb24g
ZXJyb3JzIGFuZCBubyBXZWJHUFUgc3VwcG9ydC4KLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAg
ICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioK
LSAgICAgKiBSZXR1cm4gdGhlIHJldHVybiB2YWx1ZSBvZiBhIFdITFNMIGZ1bmN0aW9uLgotICAg
ICAqIEBwYXJhbSB7VHlwZXN9IHR5cGUgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIFdITFNMIGZ1
bmN0aW9uLgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmdW5jdGlvbnMgLSBDdXN0b20gV0hMU0wg
Y29kZSB0byBiZSB0ZXN0ZWQuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgbmFt
ZSBvZiB0aGUgV0hMU0wgZnVuY3Rpb24gd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluICdmdW5jdGlv
bnMnLgotICAgICAqIEBwYXJhbSB7RGF0YSBvciBBcnJheVtEYXRhXX0gYXJncyAtIERhdGEgYXJn
dW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgY2FsbCBvZiAnbmFtZScuCi0gICAgICogQHJldHVy
bnMge1R5cGVkQXJyYXl9IC0gQSB0eXBlZCBhcnJheSBjb250YWluaW5nIHRoZSByZXR1cm4gdmFs
dWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gICAgICovCi0gICAgYXN5bmMgY2FsbFR5cGVkRnVu
Y3Rpb24odHlwZSwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotICAgIHsgICAKLSAgICAgICAgaWYg
KCF0aGlzLl9sb2FkZWQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdQVSBkZXZpY2Ug
bm90IGxvYWRlZC4iKTsKLQotICAgICAgICBpZiAodGhpcy5fZGV2aWNlID09PSB1bmRlZmluZWQp
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcigpOwotCi0gICAg
ICAgIGNvbnN0IFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNsYXJh
dGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBBcmd1bWVudHMoYXJncyk7Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdEJ1ZmZlcikgewotICAgICAgICAgICAgdGhpcy5fY2xl
YXJSZXN1bHRzKCkKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3Jlc3VsdEJ1
ZmZlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IAotICAgICAgICAgICAgICAgIHNpemU6
IFR5cGVzLk1BWF9TSVpFLCAKLSAgICAgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
U1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9E
U1QKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgYXJnc0xheW91dHMudW5z
aGlmdCh7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTog
R1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciIKLSAgICAgICAgfSk7Ci0gICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRpbmdzLnVuc2hpZnQoewot
ICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAg
ICAgICAgICAgYnVmZmVyOiB0aGlzLl9yZXN1bHRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6
ZTogVHlwZXMuTUFYX1NJWkUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
bGV0IGVudHJ5UG9pbnRDb2RlOwotICAgICAgICBhcmdzRGVjbGFyYXRpb25zLnVuc2hpZnQoYGRl
dmljZSAke3dobHNsQXJndW1lbnRUeXBlKHR5cGUpfVtdIHJlc3VsdCA6IHJlZ2lzdGVyKHUwKWAp
OwotICAgICAgICBsZXQgY2FsbENvZGUgPSBgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9p
bigiLCAiKX0pYDsKLSAgICAgICAgY2FsbENvZGUgPSBjb252ZXJ0VG9XSExTTE91dHB1dFR5cGUo
Y2FsbENvZGUsIHR5cGUpOwotICAgICAgICBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJlYWRz
KDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4oJHthcmdzRGVjbGFyYXRpb25z
LmpvaW4oIiwgIil9KQotewotICAgIHJlc3VsdFswXSA9ICR7Y2FsbENvZGV9OwotfQotYDsKLSAg
ICAgICAgY29uc3QgY29kZSA9IGZ1bmN0aW9ucyArIGVudHJ5UG9pbnRDb2RlOwotICAgICAgICBh
d2FpdCB0aGlzLl9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJjZUJp
bmRpbmdzKTsKLSAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBh
d2FpdCB0aGlzLl9yZXN1bHRCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgICAgIH0gY2F0Y2gg
ewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJIYXJuZXNzIGVycm9yOiBVbmFibGUgdG8g
cmVhZCByZXN1bHRzISIpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IChj
b252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKShyZXN1bHQpOwotICAgICAgICB0aGlzLl9yZXN1
bHRCdWZmZXIudW5tYXAoKTsKLQotICAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQotCi0gICAg
LyoqCi0gICAgICogQ2FsbCBhIFdITFNMIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgdmFsdWUgb2Yg
YXJndW1lbnQoYnVmZmVyKXMuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IGZ1bmN0aW9ucyAtIEN1
c3RvbSBXSExTTCBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFt
ZSAtIFRoZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5jdGlvbiB3aGljaCBtdXN0IGJlIHByZXNlbnQg
aW4gJ2Z1bmN0aW9ucycuCi0gICAgICogQHBhcmFtIHtEYXRhIG9yIEFycmF5W0RhdGFdfSBhcmdz
IC0gRGF0YSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAg
ICAgKi8KLSAgICBjYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBjb25zdCBbYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJjZUJpbmRpbmdz
LCBhcmdzRGVjbGFyYXRpb25zLCBmdW5jdGlvbkNhbGxBcmdzXSA9IHRoaXMuX3NldFVwQXJndW1l
bnRzKGFyZ3MpOwotCi0gICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJlYWRz
KDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4oJHthcmdzRGVjbGFyYXRpb25z
LmpvaW4oIiwgIil9KQotewotICAgICR7bmFtZX0oJHtmdW5jdGlvbkNhbGxBcmdzLmpvaW4oIiwg
Iil9KTsKLX1gOwotICAgICAgICBjb25zdCBjb2RlID0gZnVuY3Rpb25zICsgZW50cnlQb2ludENv
ZGU7Ci0gICAgICAgIHRoaXMuX2NhbGxGdW5jdGlvbihjb2RlLCBhcmdzTGF5b3V0cywgYXJnc1Jl
c291cmNlQmluZGluZ3MpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFzc2VydCB0aGF0IG1h
bGZvcm1lZCBzaGFkZXIgY29kZSBkb2VzIG5vdCBjb21waWxlLgotICAgICAqIEBwYXJhbSB7U3Ry
aW5nfSBzb3VyY2UgLSBDdXN0b20gY29kZSB0byBiZSB0ZXN0ZWQuCi0gICAgICovCi0gICAgYXN5
bmMgY2hlY2tDb21waWxlRmFpbChzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2xv
YWRlZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRldmljZSBub3QgbG9hZGVk
LiIpOwotCi0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0gICAgICAgIAotICAgICAg
ICBsZXQgZW50cnlQb2ludENvZGUgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUg
dm9pZCBfY29tcHV0ZV9tYWluKCkgeyB9YDsKLQotICAgICAgICBjb25zdCBjb2RlID0gc291cmNl
ICsgZW50cnlQb2ludENvZGU7Ci0KLSAgICAgICAgdGhpcy5fZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBzaGFkZXJzID0gdGhpcy5f
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGNvZGUgfSk7Ci0gICAgCi0gICAgICAg
IHRoaXMuX2RldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICAgICAgY29tcHV0
ZVN0YWdlOiB7Ci0gICAgICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJzLAotICAgICAgICAgICAg
ICAgIGVudHJ5UG9pbnQ6ICJfY29tcHV0ZV9tYWluIgotICAgICAgICAgICAgfQotICAgICAgICB9
KTsKLQotICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRoaXMuX2RldmljZS5wb3BFcnJvclNj
b3BlKCk7Ci0gICAgICAgIGlmICghZXJyb3IpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkNvbXBpbGVyIGVycm9yOiBzaGFkZXIgY29kZSBkaWQgbm90IGZhaWwgdG8gY29tcGlsZSEiKTsK
LSAgICB9Ci0KLSAgICBnZXQgZGV2aWNlKCkgeyByZXR1cm4gdGhpcy5fZGV2aWNlOyB9Ci0KLSAg
ICBfY2xlYXJSZXN1bHRzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2xlYXJCdWZmZXIp
IHsKLSAgICAgICAgICAgIHRoaXMuX2NsZWFyQnVmZmVyID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih7IAotICAgICAgICAgICAgICAgIHNpemU6IFR5cGVzLk1BWF9TSVpFLCAKLSAgICAgICAg
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5fZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJU
b0J1ZmZlcih0aGlzLl9jbGVhckJ1ZmZlciwgMCwgdGhpcy5fcmVzdWx0QnVmZmVyLCAwLCBUeXBl
cy5NQVhfU0laRSk7Ci0gICAgICAgIHRoaXMuX2RldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB9Ci0KLSAgICBfc2V0VXBBcmd1bWVudHMoYXJn
cykKLSAgICB7Ci0gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgewotICAgICAgICAg
ICAgaWYgKGFyZ3MgaW5zdGFuY2VvZiBEYXRhKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBbYXJn
c107Ci0gICAgICAgICAgICBlbHNlIGlmICghYXJncykKLSAgICAgICAgICAgICAgICBhcmdzID0g
W107Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFeHBhbmQgYmluZCBncm91cCBzdHJ1Y3R1cmUg
dG8gcmVwcmVzZW50IGFueSBhcmd1bWVudHMuCi0gICAgICAgIGxldCBhcmdzRGVjbGFyYXRpb25z
ID0gW107Ci0gICAgICAgIGxldCBmdW5jdGlvbkNhbGxBcmdzID0gW107Ci0gICAgICAgIGxldCBh
cmdzTGF5b3V0cyA9IFtdOwotICAgICAgICBsZXQgYXJnc1Jlc291cmNlQmluZGluZ3MgPSBbXTsK
LQotICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBhcmdzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBhcmcgPSBhcmdzW2kgLSAxXTsKLSAgICAgICAgICAgIGFyZ3NEZWNsYXJh
dGlvbnMucHVzaChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUoYXJnLnR5cGUpfVtdIGFyZyR7
aX0gOiByZWdpc3Rlcih1JHtpfSlgKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbEFyZ3MucHVz
aChjb252ZXJ0VG9XSExTTElucHV0VHlwZShgYXJnJHtpfWAgKyAoYXJnLmlzQnVmZmVyID8gIiIg
OiAiWzBdIiksIGFyZy50eXBlKSk7Ci0gICAgICAgICAgICBhcmdzTGF5b3V0cy5wdXNoKHsKLSAg
ICAgICAgICAgICAgICBiaW5kaW5nOiBpLAotICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQ
VVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIgotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBhcmdzUmVzb3VyY2VCaW5kaW5ncy5w
dXNoKHsKLSAgICAgICAgICAgICAgICBiaW5kaW5nOiBpLAotICAgICAgICAgICAgICAgIHJlc291
cmNlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogYXJnLmJ1ZmZlciwKLSAgICAgICAg
ICAgICAgICAgICAgc2l6ZTogYXJnLmJ5dGVMZW5ndGgKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBbYXJnc0xheW91dHMsIGFy
Z3NSZXNvdXJjZUJpbmRpbmdzLCBhcmdzRGVjbGFyYXRpb25zLCBmdW5jdGlvbkNhbGxBcmdzXTsK
LSAgICB9Ci0KLSAgICBhc3luYyBfY2FsbEZ1bmN0aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBhcmdz
UmVzb3VyY2VCaW5kaW5ncykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IHRoaXMuX2RldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICAgICAgYmluZGlu
Z3M6IGFyZ3NMYXlvdXRzCi0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICAgICAgY29uc3QgYmluZEdyb3VwID0gdGhp
cy5fZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgICAgICBsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwKLSAgICAgICAgICAgIGJpbmRpbmdzOiBhcmdzUmVzb3VyY2VCaW5kaW5ncwotICAg
ICAgICB9KTsKLQotICAgICAgICB0aGlzLl9kZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLQotICAgICAgICBjb25zdCBzaGFkZXJzID0gdGhpcy5fZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7IGNvZGU6IGNvZGUgfSk7Ci0gICAgCi0gICAgICAgIGNvbnN0IHBpcGVsaW5lID0g
dGhpcy5fZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgICAgICBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAg
ICAgICAgbW9kdWxlOiBzaGFkZXJzLAotICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJfY29t
cHV0ZV9tYWluIgotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IHRoaXMuX2RldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAg
ICAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3Mo
KTsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
ICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICAgICAgcGFzc0VuY29k
ZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICAgICAgCi0gICAgICAgIHRoaXMuX2RldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLQotICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRoaXMuX2Rl
dmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTsKLSAgICB9Ci19Ci0KLS8qIEhhcm5lc3MgU2V0
dXAgKi8KLQotY29uc3QgaGFybmVzcyA9IG5ldyBIYXJuZXNzKCk7Ci1oYXJuZXNzLnJlcXVlc3RE
ZXZpY2UoKTsKLQotLyogR2xvYmFsIEhlbHBlciBGdW5jdGlvbnMgKi8KLQotLyoqCi0gKiBUaGUg
bWFrZV9fXyBmdW5jdGlvbnMgYXJlIHdyYXBwZXJzIGFyb3VuZCB0aGUgRGF0YSBjb25zdHJ1Y3Rv
ci4KLSAqIFZhbHVlcyBwYXNzZWQgaW4gYXMgYW4gYXJyYXkgd2lsbCBiZSBwYXNzZWQgaW4gdmlh
IGEgZGV2aWNlLWFkZHJlc3NlZCBwb2ludGVyIHR5cGUgaW4gdGhlIHNoYWRlci4KLSAqIEBwYXJh
bSB7Qm9vbGVhbiwgTnVtYmVyLCBvciBBcnJheX0gdmFsdWVzIC0gVGhlIGRhdGEgdG8gYmUgc3Rv
cmVkIG9uIHRoZSBHUFUuCi0gKiBAcmV0dXJucyBBIG5ldyBEYXRhIG9iamVjdCB3aXRoIHN0b3Jh
Z2UgYWxsb2NhdGVkIHRvIHN0b3JlIHZhbHVlcy4KLSAqLwotZnVuY3Rpb24gbWFrZUJvb2wodmFs
dWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5CT09MLCB2YWx1ZXMp
OwotfQotCi1mdW5jdGlvbiBtYWtlSW50KHZhbHVlcykKLXsKLSAgICByZXR1cm4gbmV3IERhdGEo
aGFybmVzcywgVHlwZXMuSU5ULCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlVWNoYXIodmFs
dWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5VQ0hBUiwgdmFsdWVz
KTsKLX0KLQotZnVuY3Rpb24gbWFrZVVpbnQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0
YShoYXJuZXNzLCBUeXBlcy5VSU5ULCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlRmxvYXQo
dmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5GTE9BVCwgdmFs
dWVzKTsKLX0KLQotLyoqCi0gKiBAcGFyYW0ge0FycmF5IG9yIEFycmF5W0FycmF5XX0gdmFsdWVz
IC0gMUQgb3IgMkQgYXJyYXkgb2YgZmxvYXQgdmFsdWVzLgotICogVGhlIHRvdGFsIG51bWJlciBv
ZiBmbG9hdCB2YWx1ZXMgbXVzdCBiZSBkaXZpc2libGUgYnkgNC4KLSAqIEEgc2luZ2xlIDQtZWxl
bWVudCBhcnJheSBvZiBmbG9hdHMgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIGZsb2F0NCBh
cmd1bWVudCBpbiB0aGUgc2hhZGVyLgotICovCi1mdW5jdGlvbiBtYWtlRmxvYXQ0KHZhbHVlcykK
LXsKLSAgICBjb25zdCByZXN1bHRzID0gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIDQpOwotICAgIHJl
dHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5GTE9BVDQsIHJlc3VsdHMudmFsdWVzLCByZXN1
bHRzLmlzQnVmZmVyKTsKLX0KLQotLyoqCi0gKiBAcGFyYW0ge0FycmF5IG9yIEFycmF5W0FycmF5
XX0gdmFsdWVzIC0gMUQgb3IgMkQgYXJyYXkgb2YgZmxvYXQgdmFsdWVzLgotICogVGhlIHRvdGFs
IG51bWJlciBvZiBmbG9hdCB2YWx1ZXMgbXVzdCBiZSBkaXZpc2libGUgYnkgMTYuCi0gKiBBIHNp
bmdsZSAxNi1lbGVtZW50IGFycmF5IG9mIGZsb2F0cyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzaW5n
bGUgZmxvYXQ0eDQgYXJndW1lbnQgaW4gdGhlIHNoYWRlci4KLSAqIFRoaXMgc2hvdWxkIGZvbGxv
dyB0aGUgZ2xNYXRyaXgvT3BlbkdMIG1ldGhvZCBvZiBzdG9yaW5nIDR4NCBtYXRyaWNlcywKLSAq
IHdoZXJlIHRoZSB4LCB5LCB6IHRyYW5zbGF0aW9uIGNvbXBvbmVudHMgYXJlIHRoZSAxM3RoLCAx
NHRoLCBhbmQgMTV0aCBlbGVtZW50cyByZXNwZWN0aXZlbHkuCi0gKi8KLWZ1bmN0aW9uIG1ha2VG
bG9hdDR4NCh2YWx1ZXMpCi17Ci0gICAgY29uc3QgcmVzdWx0cyA9IHByb2Nlc3NBcnJheXModmFs
dWVzLCAxNik7Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FUNFg0LCBy
ZXN1bHRzLnZhbHVlcywgcmVzdWx0cy5pc0J1ZmZlcik7Ci19Ci0KLWZ1bmN0aW9uIHByb2Nlc3NB
cnJheXModmFsdWVzLCBtaW5pbXVtTGVuZ3RoKQotewotICAgIGNvbnN0IG9yaWdpbmFsTGVuZ3Ro
ID0gdmFsdWVzLmxlbmd0aDsKLSAgICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgZmxvYXQ0IGlzIHRp
Z2h0bHkgcGFja2VkLgotICAgIC8vIFdoZW4gaW1wbGVtZW50aW5nIG90aGVyIHZlY3RvciB0eXBl
cywgYWRkIHBhZGRpbmcgaWYgbmVlZGVkLgotICAgIHZhbHVlcyA9IHZhbHVlcy5mbGF0KCk7Ci0g
ICAgaWYgKHZhbHVlcy5sZW5ndGggJSBtaW5pbXVtTGVuZ3RoICE9IDApCi0gICAgICAgIHRocm93
IG5ldyBFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgZWxlbWVudHMgaW4gbm9uLXNjYWxhciB0eXBl
ISIpOwotICAgIAotICAgIHJldHVybiB7IHZhbHVlczogdmFsdWVzLCBpc0J1ZmZlcjogb3JpZ2lu
YWxMZW5ndGggPT09IDEgfHwgdmFsdWVzLmxlbmd0aCA+IG1pbmltdW1MZW5ndGggfTsKLX0KLQot
LyoqCi0gKiBAcGFyYW0ge1N0cmluZ30gZnVuY3Rpb25zIC0gU2hhZGVyIHNvdXJjZSBjb2RlIHRo
YXQgbXVzdCBjb250YWluIGEgZGVmaW5pdGlvbiBmb3IgJ25hbWUnLgotICogQHBhcmFtIHtTdHJp
bmd9IG5hbWUgLSBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gJ2Z1bmN0aW9ucycuCi0g
KiBAcGFyYW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19IGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGJl
IHBhc3NlZCB0byB0aGUgY2FsbCBvZiAnbmFtZScuCi0gKiBAcmV0dXJucyBBIFByb21pc2UgdGhh
dCByZXNvbHZlcyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgY2FsbCB0byAnbmFtZScgd2l0aCAn
YXJncycuCi0gKi8KLWFzeW5jIGZ1bmN0aW9uIGNhbGxCb29sRnVuY3Rpb24oZnVuY3Rpb25zLCBu
YW1lLCBhcmdzKQotewotICAgIHJldHVybiAhIShhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0
aW9uKFR5cGVzLkJPT0wsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBm
dW5jdGlvbiBjYWxsSW50RnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIHJl
dHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihUeXBlcy5JTlQsIGZ1bmN0aW9u
cywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsVWNoYXJGdW5jdGlv
bihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNh
bGxUeXBlZEZ1bmN0aW9uKFR5cGVzLlVDSEFSLCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKVswXTsK
LX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbFVpbnRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFy
Z3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVz
LlVJTlQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBj
YWxsRmxvYXRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChh
d2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FULCBmdW5jdGlvbnMsIG5h
bWUsIGFyZ3MpKVswXTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NEZ1bmN0aW9uKGZ1
bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5
cGVkRnVuY3Rpb24oVHlwZXMuRkxPQVQ0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJhcnJh
eSgwLCA0KTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NHg0RnVuY3Rpb24oZnVuY3Rp
b25zLCBuYW1lLCBhcmdzKQotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRG
dW5jdGlvbihUeXBlcy5GTE9BVDRYNCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSkuc3ViYXJyYXko
MCwgMTYpOwotfQotCi1hc3luYyBmdW5jdGlvbiBjaGVja0ZhaWwoc291cmNlKSAKLXsKLSAgICBy
ZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2hlY2tDb21waWxlRmFpbChzb3VyY2UpKTsKLX0KLQotLyoq
Ci0gKiBEb2VzIG5vdCByZXR1cm4gYSBQcm9taXNlLiBUbyBvYnNlcnZlIHRoZSByZXN1bHRzIG9m
IGEgY2FsbCwgCi0gKiBjYWxsICdnZXRBcnJheUJ1ZmZlcicgb24gdGhlIERhdGEgb2JqZWN0IHJl
dGFpbmluZyB5b3VyIG91dHB1dCBidWZmZXIuCi0gKi8KLWZ1bmN0aW9uIGNhbGxWb2lkRnVuY3Rp
b24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIGhhcm5lc3MuY2FsbFZvaWRGdW5jdGlv
bihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpOwotfQotCi1jb25zdCB3ZWJHUFVQcm9taXNlVGVzdCA9
ICh0ZXN0RnVuYywgbXNnKSA9PiB7Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsgCi0g
ICAgICAgIHJldHVybiB0ZXN0RnVuYygpLmNhdGNoKGUgPT4gewotICAgICAgICBpZiAoIShlIGlu
c3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyBlOwot
ICAgICAgICB9KTsKLSAgICB9LCBtc2cpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0cyhvYmopIHsK
LSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICAg
ICAgYXdhaXQgaGFybmVzcy5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuYW1l
LnN0YXJ0c1dpdGgoIl8iKSkgCi0gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdlYkdQVVByb21p
c2VUZXN0KG9ialtuYW1lXSwgbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGhy
b3cgZTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY3NjI4NmYzNDIwNmZhM2Y0NTcxYzljOWI5MzU2NjJlNWNhM2JlZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xlbmd0aC1zdGRsaWItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgdmVjdG9ySW5kZXhBc3NpZ24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sZW5ndGgtc3RkbGliLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQwNDc0NDQzZDBjMjFiMDdiNTdhODgyYzBjOWEzZjAzZWI0MTg5ODguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xlbmd0aC1zdGRsaWIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+TGVuZ3RoLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJbmRl
eEFzc2lnbiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBmb28oZmxvYXQgYSwgZmxvYXQgYikgewotICAgICAgICAgICAgZmxvYXQyIHg7Ci0gICAg
ICAgICAgICB4WzBdID0gYTsKLSAgICAgICAgICAgIHhbMV0gPSBiOwotICAgICAgICAgICAgcmV0
dXJuIGxlbmd0aCh4KTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBjb25zdCBkYXRhID0gWwot
ICAgICAgICBbTmFOLCAxMF0sCi0gICAgICAgIFsxMCwgTmFOXSwKLSAgICAgICAgWzIwLCAxMF0s
Ci0gICAgICAgIFswLCAwXSwKLSAgICBdOwotCi0gICAgZm9yIChjb25zdCBbeCwgeV0gb2YgZGF0
YSkgewotICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFttYWtlRmxvYXQoeCksIG1ha2VGbG9hdCh5KV0pOwotICAgICAgICBpZiAo
aXNOYU4oeCkgfHwgaXNOYU4oeSkpIHsKLSAgICAgICAgICAgIGlmICghaXNOYU4ocmVzdWx0KSkK
LSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJlc3VsdCBzaG91bGQgYmUgTmFOLiIp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3Vs
dCwgTWF0aC5zcXJ0KHgqeCArIHkqeSksIGVwc2lsb24pOwotICAgIH0KLX07Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbGV4aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sZXhpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
NTAyYWZjZGNhYjBhYWMxNDBjMDI2ZGIxMWE5ODRhYzFhODgxMmEyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
ZXhpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1Mg
bGV4aW5nS2V5d29yZExpa2VJZGVudGlmaWVycwotUEFTUyBrZXl3b3Jkc0FzSWRlbnRpZmllcnMK
LVBBU1MgY29tbWVudHMKLVBBU1Mgb3BlcmF0b3JOYW1lcwotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bGV4aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMDNmOTAzN2JiOTk1
ZjI5ZWM4NDFjYjRiZDk0MTllYzNiMzFmNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLWNvbnN0IGtleXdvcmRzID0gWwotICAgICJzdHJ1
Y3QiCi0gICAgLCAidHlwZWRlZiIKLSAgICAsICJlbnVtIgotICAgICwgIm9wZXJhdG9yIgotICAg
ICwgImlmIgotICAgICwgImVsc2UiCi0gICAgLCAiY29udGludWUiCi0gICAgLCAiYnJlYWsiCi0g
ICAgLCAic3dpdGNoIgotICAgICwgImNhc2UiCi0gICAgLCAiZGVmYXVsdCIKLSAgICAsICJmYWxs
dGhyb3VnaCIKLSAgICAsICJmb3IiCi0gICAgLCAid2hpbGUiCi0gICAgLCAiZG8iCi0gICAgLCAi
cmV0dXJuIgotICAgICwgIm51bGwiCi0gICAgLCAidHJ1ZSIKLSAgICAsICJmYWxzZSIKLSAgICAs
ICJjb25zdGFudCIKLSAgICAsICJkZXZpY2UiCi0gICAgLCAidGhyZWFkZ3JvdXAiCi0gICAgLCAi
dGhyZWFkIgotICAgICwgInNwYWNlIgotICAgICwgInZlcnRleCIKLSAgICAsICJmcmFnbWVudCIK
LSAgICAsICJjb21wdXRlIgotICAgICwgIm51bXRocmVhZHMiCi0gICAgLCAiU1ZfSW5zdGFuY2VJ
RCIKLSAgICAsICJTVl9WZXJ0ZXhJRCIKLSAgICAsICJQU0laRSIKLSAgICAsICJTVl9Qb3NpdGlv
biIKLSAgICAsICJTVl9Jc0Zyb250RmFjZSIKLSAgICAsICJTVl9TYW1wbGVJbmRleCIKLSAgICAs
ICJTVl9Jbm5lckNvdmVyYWdlIgotICAgICwgIlNWX1RhcmdldCIKLSAgICAsICJTVl9EZXB0aCIK
LSAgICAsICJTVl9Db3ZlcmFnZSIKLSAgICAsICJTVl9EaXNwYXRjaFRocmVhZElEIgotICAgICwg
IlNWX0dyb3VwSUQiCi0gICAgLCAiU1ZfR3JvdXBJbmRleCIKLSAgICAsICJTVl9Hcm91cFRocmVh
ZElEIgotICAgICwgImF0dHJpYnV0ZSIKLSAgICAsICJyZWdpc3RlciIKLSAgICAsICJzcGVjaWFs
aXplZCIKLSAgICAsICJuYXRpdmUiCi0gICAgLCAicmVzdHJpY3RlZCIKLSAgICAsICJfIgotICAg
ICwgImF1dG8iCi0gICAgLCAicHJvdG9jb2wiCi0gICAgLCAiY29uc3QiCi0gICAgLCAic3RhdGlj
IgotICAgICwgIm5vaW50ZXJwb2xhdGlvbiIKLSAgICAsICJub3BlcnNwZWN0aXZlIgotICAgICwg
InVuaWZvcm0iCi0gICAgLCAiY2VudHJvaWQiCi0gICAgLCAic2FtcGxlIgotXTsKLQotY29uc3Qg
c3VmZml4ZXMgPSBbImZvbyIsICIxMzM3IiwgIl9mb28iXTsKLQotd2hsc2xUZXN0cy5sZXhpbmdL
ZXl3b3JkTGlrZUlkZW50aWZpZXJzID0gYXN5bmMgKCkgPT4gewotICAgIGZvciAoY29uc3Qga2V5
d29yZCBvZiBrZXl3b3JkcykgewotICAgICAgICBmb3IgKGNvbnN0IHN1ZmZpeCBvZiBzdWZmaXhl
cykgewotICAgICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0ga2V5d29yZCArIHN1ZmZpeDsK
LSAgICAgICAgICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgICAgICAgICAgaW50IGZvbygp
IHsKLSAgICAgICAgICAgICAgICAgICAgaW50ICR7dmFyaWFibGVOYW1lfSA9IDQyOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gJHt2YXJpYWJsZU5hbWV9OwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGA7Ci0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCA0Mik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LX07Ci0KLXdobHNsVGVzdHMua2V5d29yZHNBc0lkZW50aWZpZXJzID0gYXN5bmMgKCkgPT4gewot
Ci0gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7Ci0gICAgICAgIGNvbnN0IHZh
cmlhYmxlTmFtZSA9IGtleXdvcmQ7Ci0gICAgICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
ICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgICAgICBpbnQgJHt2YXJpYWJsZU5hbWV9ID0g
NDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGA7Ci0gICAgICAgIGF3YWl0IGNoZWNrRmFpbChw
cm9ncmFtKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmNvbW1lbnRzID0gYXN5bmMgKCkgPT4g
ewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIC8qCi0gICAgYCk7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgKi8KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICByZXR1cm4gNC8qKi8yOwotICAgICAg
ICB9Ci0gICAgYCk7Ci0KLX07Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JOYW1lcyA9IGFzeW5jICgp
ID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4kKEZvbykgewotICAgICAgICAgICAgcmV0dXJu
IDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4jKEZvbykg
ewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBvcGVyYXRvci5AKEZvbykgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9
Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsK
LSAgICAgICAgfQotCi0gICAgICAgIGludCBvcGVyYXRvci4qJShGb28pIHsKLSAgICAgICAgICAg
IHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgaW50IG9wZXJhdG9yJiYoaW50IHgsIGludCB5KSB7Ci0gICAgICAgICAgICByZXR1
cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3J8fChpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAgIHJldHVybiA0
MjsKLSAgICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRl
cmFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGl0ZXJhbHMtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDI1NmM1Y2I2NzM3YzVl
NzliM2Q0YzBmZmI4NjE2OTEwYWFlNDlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsaXRlcmFscwotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGl0ZXJhbHMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYTY0NjFiMmIzYWE3NjI2NzA0ZGU4ZWU3YjM3OGVjMGMwNmE5Y2VjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9saXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xU
ZXN0cy5saXRlcmFscyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGEoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTEwOwotICAgICAgICB9
Ci0gICAgICAgIGludCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDEwOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAuMTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIDEuOTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIC0uMTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBnKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0xLjk7Ci0gICAgICAgIH0KLSAgICAgICAg
aW50IGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMHhiNGRCMzNGOwotICAgICAg
ICB9Ci0gICAgICAgIGludCBpKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0weGI0
ZEIzM0Y7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAtMTApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiYiIsIFtdKSwgMTApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiYyIsIFtdKSwgMCk7Ci0K
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImQiLCBbXSksIDAuMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAxLjksIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICAiZiIsIFtdKSwgLTAuMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJnIiwgW10pLCAtMS45LCBlcHNpbG9uKTsK
LQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiaCIs
IFtdKSwgMHhiNGRCMzNGKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAgImkiLCBbXSksIC0weGI0ZEIzM0YpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWJhMzMxN2VlNzA0Y2ZmMmZiNjA0MmYzMjRmZjIyMTllNTIxYjg1Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBsb2dpY2FsTmVnYXRpb24KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY0MDBiMDEwYWRhYjBjZjZhMDk4NzkyZjJmYzc2ZmY4NjI5OTg5YmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+THZhbHVlcy48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sb2dpY2FsTmVnYXRpb24gPSBhc3lu
YyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1cm4g
IXg7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSldKSwg
dHJ1ZSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWstZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4
MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWsuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb29wcy1icmVhay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMjY0M2NhMTU1OTNiNzMwNjc1ZGNlZGQyNzczY2QzYjE3MmZjNmY0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sb29wcy1icmVhay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZl
cnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0Owot
Ci0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgKGkgPSBp
ICsgMSwgc2hhZGUgPSBzaGFkZSArIDEuMCkpIHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gc2hhZGUgKyAxLjA7Ci0gICAg
fQotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0g
c2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9
ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250
RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9
IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3Jt
YXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVy
TG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0
cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7
c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1
dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0K
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMy
QXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBi
dWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNv
bnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRp
bmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91
cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZm
ZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0
ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzVlMjEzOTgxMDllYjJmN2Y3MjY2ZTU1MWRmODQ2M2I2ZjczYjFmNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbG9vcHMtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12
ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsK
LQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMTA7IGkgPSBp
ICsgMSkgewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9z
aXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFk
ZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFk
ZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNo
YWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsK
LSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9k
ZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JC
bGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldy
aXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0
IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNl
dDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0
OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0
ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1
dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTld
ID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3Vy
Y2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
ID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFy
cmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAg
cmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVm
ZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGlu
ZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmlu
ZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFti
aW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVs
bDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bG9vcHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVl
M2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1leHBlY3RlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTg0ZDFkNTE4ODNiNGNhNjJmNmM4
OTc0NzgzMWZmMDE1YThkOWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLXNwZWMtdGVzdHMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgZG9XaGlsZQotUEFT
UyBzaW1wbGVXaGlsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9v
cHMtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLXNwZWMt
dGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjNDkxOThmOGFhYWMz
ZGNmNGMyMzlkODVkMmMwZjI5NjAyNzU5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmRvV2hpbGUgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vMShpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkg
PSA3OwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAoeCA8IDEwKTsKLSAgICAgICAgICAg
IHJldHVybiB5OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28yKGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeSA9IDc7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAg
ICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdoaWxlICh5
ID09IDcpOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZv
bzMoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBzdW0gPSAwOwotICAgICAgICAg
ICAgZG8gewotICAgICAgICAgICAgICAgIGlmICh4ID09IDExKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHggPSAxNTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIHg7Ci0gICAgICAgICAgICAgICAgeCA9
IHggKyAxOwotICAgICAgICAgICAgfSB3aGlsZSAoeCA8IDEzKTsKLSAgICAgICAgICAgIHJldHVy
biBzdW07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28xIiwgW21ha2VJbnQoMSldKSwgOCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEiLCBbbWFrZUludCgx
MSldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzIiLCBbbWFrZUludCgxKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFttYWtlSW50KDkpXSksIDE5KTsKLX0KLQot
d2hsc2xUZXN0cy5zaW1wbGVXaGlsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxl
ICh4IDwgMTMpCi0gICAgICAgICAgICAgICAgeCA9IHggKiAyOwotICAgICAgICAgICAgcmV0dXJu
IHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAxNik7Ci19Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbG9vcHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29w
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjMxZTViODFmOGE4NGQ0OTEx
NjZkNzcwMDQxMjMzYjYzY2VjNWE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRl
eE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkp
IHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMTA7
IGkgPSBpICsgMSkgewotICAgICAgICBzaGFkZSA9IHNoYWRlICsgMC4xOwotICAgIH0KLQotICAg
IHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9u
OiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMg
PSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhT
dGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0
ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291
bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRF
WCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9
IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4xOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBd
ID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmlu
ZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNj
cmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVs
dFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6
IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRl
eHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6
ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0
YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlw
dG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFsw
XSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1
ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjcwZmZkNGRlNjA3YjJhMDAzZWZjNzQ3ZDI4
ZmQ0OGI0MWM1YTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsb3RzT2ZMb2Nh
bFZhcmlhYmxlcwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG90cy1v
Zi1sb2NhbC12YXJpYWJsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9m
LWxvY2FsLXZhcmlhYmxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTc1
NmYzOTI3MDc0NDQxYWM0YmMzYTdjZDg0ZTFiZDc5Njg4MWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3Rz
LW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Mb3RzIG9mIGxvY2FsIHZhcmlhYmxl
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sb3RzT2ZMb2NhbFZh
cmlhYmxlcyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHNyYyA9ICJpbnQgc3VtKCkge1xuIjsK
LSAgICBzcmMgKz0gIiAgICBpbnQgaSA9IDA7XG4iOwotICAgIGxldCB0YXJnZXQgPSAwOwotICAg
IGNvbnN0IG51bVZhcnMgPSA1MDsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVZhcnM7IGkr
KykgewotICAgICAgICBzcmMgKz0gYCAgIGkgPSAke2l9O1xuYDsKLSAgICAgICAgc3JjICs9IGAg
ICBpbnQgViR7aX0gPSAoaSArIDMpICogKGkgKyAzKTtcbmA7Ci0gICAgICAgIHRhcmdldCArPSAo
aSArIDMpICogKGkgKyAzKTsKLSAgICB9Ci0gICAgc3JjICs9ICIgICAgaW50IHJlc3VsdCA9IDA7
XG4iOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVmFyczsgaSsrKSB7Ci0gICAgICAgIHNy
YyArPSBgICAgIHJlc3VsdCArPSBWJHtpfTtcbmA7Ci0gICAgfQotICAgIHNyYyArPSAiICAgIHJl
dHVybiByZXN1bHQ7XG4iOwotICAgIHNyYyArPSAifSI7Ci0gICAgbGV0IHByb2dyYW0gPSBzcmM7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgInN1bSIs
IFtdKSwgdGFyZ2V0KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwv
aHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTc2MWNlYzJiOTE2YjZlZGY4NzE0ZDJl
MDBhOTJlN2U4YWZhMzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sdmFsdWVzLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxWYWx1ZXMKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTk4
MDRkMDYzNGJmNjEwZGIwNGQ0ODhjN2U3YWIxYTM1YmNiNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1
ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRl
bnQ9ImxvbmciPgotPHRpdGxlPkx2YWx1ZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMubFZhbHVlcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAwOwot
ICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICYoeCsrKTsKLSAgICAgICAgICAgIHJldHVybiAq
eTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAwOwotICAgICAgICAgICAg
dGhyZWFkIGludCogeSA9ICYoKyt4KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAg
fQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50IHggPSAwOwotICAgICAgICAgICAgdGhyZWFkIGludCog
eSA9ICYoeCA9IDMpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7
IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJjM7Ci0g
ICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgaW50IGJhcihpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHgg
KyAxOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJmJhcigzKTsKLSAgICAg
ICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAw
OwotICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICYoNywgeCk7Ci0gICAgICAgICAgICByZXR1
cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBlbnVtIERheXMgewotICAgICAgICAgICAgTW9uZGF5LAotICAgICAgICAgICAgVHVlc2RheQot
ICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJihEYXlzLk1vbmRheSk7Ci0gICAg
ICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBi
b29sKiB5ID0gJih0cnVlICYmIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAg
ICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkK
LSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGJvb2wqIHkgPSAmKCF0cnVlKTsKLSAgICAg
ICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAz
OwotICAgICAgICAgICAgdGhyZWFkIGludCogeSA9ICZ4OwotICAgICAgICAgICAgcmV0dXJuICp5
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzExMmEzY2Q2YzY2NTNmOGFiNzg1NWM5ZGEx
YjJlZWExYmNjZWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotCi1QQVNTIG1ha2VBcnJh
eVJlZkZyb21BcnJheVJlZgotUEFTUyBtYWtlQXJyYXlSZWZGcm9tTG9jYWwKLVBBU1MgbWFrZUFy
cmF5UmVmRnJvbVBvaW50ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIzZGNiNmJmZTU1MGQ1NzcxNzc5MzUzYzVkM2EwOTY4MDY0ZjEwNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUg
V0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRl
c3RzLm1ha2VBcnJheVJlZkZyb21BcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIodGhyZWFkIGludFtdIHJl
ZikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVmWzBdOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaW50IGJheih0aHJlYWQgaW50W10gcHRyKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBiYXIoQHB0cik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg
eCA9IDQ4OwotICAgICAgICAgICAgICAgIHJldHVybiBiYXooQHgpOwotICAgICAgICAgICAgfQot
ICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5tYWtlQXJyYXlSZWZGcm9tTG9jYWwgPSBhc3lu
YyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYmFyKHRocmVhZCBp
bnRbXSByZWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gNDg7
Ci0gICAgICAgICAgICByZXR1cm4gYmFyKEB4KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDgp
OwotfQotCi13aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21Qb2ludGVyID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGJhcih0aHJlYWQgaW50W10gcmVm
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVmWzBdOwotICAgICAgICB9Ci0gICAg
ICAgIGludCBiYXoodGhyZWFkIGludCogcHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYmFyKEBwdHIpOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgeCA9IDQ4OwotICAgICAgICAgICAgcmV0dXJuIGJheigmeCk7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDQ4KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtl
LWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFr
ZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFy
cmF5LXJlZmVyZW5jZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDk4NzM3
NjE0ODdiYTRhYWRmMGI1ZWQ4NjRjNzkyMThkNzVkMjBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFy
cmF5LXJlZmVyZW5jZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotYm9vbCB0ZXN0MSgpIHsKLSAgICBpbnQgdmFsdWUgPSA0MjsKLSAgICB0
aHJlYWQgaW50W10gYXJyYXkgPSBAdmFsdWU7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzBdICE9IDQyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzEyMDIxM10gIT0gNDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGFycmF5WzBdID0gMTMzNzsKLSAgICBpZiAodmFsdWUgIT0gMTMzNykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGVz
dDIoKSB7Ci0gICAgaW50IHZhbHVlID0gNDI7Ci0gICAgdGhyZWFkIGludCogcHRyID0gJnZhbHVl
OwotICAgIGlmICgqcHRyICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0aHJl
YWQgaW50W10gYXJyYXkgPSBAcHRyOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheVswXSAhPSA0MikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChhcnJheVsxMjM3NDIxN10gIT0gNDIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICAqcHRyID0gNjY2OwotICAgIGlmICgqcHRyICE9IDY2NikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh2YWx1ZSAhPSA2NjYpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYXJyYXlbMF0gIT0gNjY2KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBh
cnJheVswXSA9IDQyNDI7Ci0gICAgaWYgKCpwdHIgIT0gNDI0MikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICh2YWx1ZSAhPSA0MjQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGFycmF5WzBdICE9IDQyNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJy
YXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIHRlc3QzKCkgewotICAgIGludFs0Ml0geDsKLSAgICB0aHJlYWQgaW50WzQy
XSogYXJyYXlQdHIgPSAmeDsKLSAgICBpZiAoYXJyYXlQdHItPmxlbmd0aCAhPSA0MikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgeFs0MV0gPSA2NjY7Ci0gICAgaWYgKCgqYXJyYXlQdHIp
WzQxXSAhPSA2NjYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKCphcnJheVB0cilb
MF0gIT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGhyZWFkIGludFtdIGFycmF5
ID0gQHg7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXJyYXlbMF0gPSAxMzM3OwotICAgIGlmICh4WzBdICE9IDEzMzcpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoKCphcnJheVB0cilbMF0gIT0gMTMzNykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGVzdDQoKSB7Ci0g
ICAgaW50IHggPSA0MjsKLSAgICB0aHJlYWQgaW50KiBwdHIgPSAmeDsKLQotICAgIHRocmVhZCBp
bnRbXSBhcnJheSA9IEBwdHI7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChhcnJheVsxMDAwMDBdICE9IDQyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21w
dXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0ZXIodTAp
LCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgaWYgKCF0ZXN0
MSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXRlc3QyKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghdGVzdDMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0ZXN0
NCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBidWZmZXJbMF0gPSAxOwotfQotYDsKLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNv
bXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVT
aGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEludDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9Owot
ICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAwOwotICAgIGJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBi
dWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307
Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91
dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0g
ICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1
ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVu
Y29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwg
MSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGxldCByZXN1bHRzSW50
MzJBcnJheSA9IG5ldyBJbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJl
c3VsdHNJbnQzMkFycmF5WzBdID09PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBl
bHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsK
LX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZiNzJkM2RkMzBmNjg0ZTlkNTdlYzU3YmFkOWY1MjRlY2UwZjNhZTgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpbk1hdHJpY2VzCi1QQVNTIG1hdHJp
eE11bHRpcGxpY2F0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cmlj
ZXMtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODljOWRm
MzFmYjQyZTk3MjgyMzJjNjllOTEzMDZjMTQ1NGQ4YzdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNl
cy1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3Mu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYnVpbHRpbk1hdHJpY2Vz
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVswXVsw
XSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMV1bMF0gPSAz
OwotICAgICAgICAgICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICByZXR1cm4gYVswXVswXTsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28yKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyeDMgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAgICAgYVswXVsx
XSA9IDI7Ci0gICAgICAgICAgICBhWzBdWzJdID0gMzsKLSAgICAgICAgICAgIGFbMV1bMF0gPSA0
OwotICAgICAgICAgICAgYVsxXVsxXSA9IDU7Ci0gICAgICAgICAgICBhWzFdWzJdID0gNjsKLSAg
ICAgICAgICAgIHJldHVybiBhWzFdWzJdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgcmV0dXJu
IGFbMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb280KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyeDIgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAg
ICAgYVswXVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzFdWzBdID0gMzsKLSAgICAgICAgICAgIGFb
MV1bMV0gPSA0OwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1bMF0g
PSA1OwotICAgICAgICAgICAgYlswXVsxXSA9IDY7Ci0gICAgICAgICAgICBiWzFdWzBdID0gNzsK
LSAgICAgICAgICAgIGJbMV1bMV0gPSA4OwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgMjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgMjsgKytq
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFbaV1bal0gKz0gNDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGEgPT0gYik7Ci0gICAgICAg
IH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIg
YTsKLSAgICAgICAgICAgIGFbMF0gPSBmbG9hdDIoMSwgMik7Ci0gICAgICAgICAgICBhWzFdID0g
ZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1b
MF0gPSAxOwotICAgICAgICAgICAgYlswXVsxXSA9IDI7Ci0gICAgICAgICAgICBiWzFdWzBdID0g
MzsKLSAgICAgICAgICAgIGJbMV1bMV0gPSA0OwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09
IGIpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBhWzBdWzBdID0gMTsKLSAgICAgICAgICAgIGFb
MF1bMV0gPSAyOwotICAgICAgICAgICAgYVsxXVswXSA9IDM7Ci0gICAgICAgICAgICBhWzFdWzFd
ID0gNDsKLSAgICAgICAgICAgIGZsb2F0MngyIGI7Ci0gICAgICAgICAgICBiWzBdWzBdID0gNTsK
LSAgICAgICAgICAgIGJbMF1bMV0gPSAxMDsKLSAgICAgICAgICAgIGJbMV1bMF0gPSAxODsKLSAg
ICAgICAgICAgIGJbMV1bMV0gPSAyNDsKLSAgICAgICAgICAgIGFbMF0gKj0gNTsKLSAgICAgICAg
ICAgIGFbMV0gKj0gNjsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBiKTsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBmb283KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDMg
YSA9IGZsb2F0MngzKGZsb2F0MygzLCA0LCA1KSwgZmxvYXQzKDYsIDcsIDgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBhWzBdWzJdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSks
IDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbzMiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbzQiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzUiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzYiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbzciLCBbXSksIDUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhNdWx0aXBsaWNhdGlvbiA9
IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQyeDQgbXVs
dGlwbHkoZmxvYXQyeDMgeCwgZmxvYXQzeDQgeSkgewotICAgICAgICAgICAgLy8gQ29waWVkIGFu
ZCBwYXN0ZWQgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgICAgICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICAgICAgICAgIHJlc3Vs
dFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVswXSAr
PSB4WzBdWzFdICogeVsxXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzJd
ICogeVsyXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgICAgICAgICBy
ZXN1bHRbMF1bMV0gKz0geFswXVswXSAqIHlbMF1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMF1b
MV0gKz0geFswXVsxXSAqIHlbMV1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMV0gKz0geFsw
XVsyXSAqIHlbMl1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgICAgICAg
ICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMF0gKiB5WzBdWzJdOwotICAgICAgICAgICAgcmVzdWx0
WzBdWzJdICs9IHhbMF1bMV0gKiB5WzFdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzJdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICAg
ICAgICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzBdICogeVswXVszXTsKLSAgICAgICAgICAgIHJl
c3VsdFswXVszXSArPSB4WzBdWzFdICogeVsxXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsz
XSArPSB4WzBdWzJdICogeVsyXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgICAgICAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMF1bMF07Ci0gICAgICAgICAg
ICByZXN1bHRbMV1bMF0gKz0geFsxXVsxXSAqIHlbMV1bMF07Ci0gICAgICAgICAgICByZXN1bHRb
MV1bMF0gKz0geFsxXVsyXSAqIHlbMl1bMF07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgICAgICAgICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgICAg
ICAgICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgICAgICAgICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJd
ID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzBdICogeVswXVsyXTsKLSAg
ICAgICAgICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzFdICogeVsxXVsyXTsKLSAgICAgICAgICAg
IHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsyXVsyXTsKLSAgICAgICAgICAgIHJlc3VsdFsx
XVszXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMV1bM10gKz0geFsxXVswXSAqIHlbMF1bM107
Ci0gICAgICAgICAgICByZXN1bHRbMV1bM10gKz0geFsxXVsxXSAqIHlbMV1bM107Ci0gICAgICAg
ICAgICByZXN1bHRbMV1bM10gKz0geFsxXVsyXSAqIHlbMl1bM107Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0MngzIG1hdHJpeDEoKSB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MyB4OwotICAgICAgICAgICAgeFswXVswXSA9IDI7Ci0gICAgICAgICAg
ICB4WzBdWzFdID0gMzsKLSAgICAgICAgICAgIHhbMF1bMl0gPSA1OwotICAgICAgICAgICAgeFsx
XVswXSA9IDc7Ci0gICAgICAgICAgICB4WzFdWzFdID0gMTE7Ci0gICAgICAgICAgICB4WzFdWzJd
ID0gMTM7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdDN4
NCBtYXRyaXgyKCkgewotICAgICAgICAgICAgZmxvYXQzeDQgeTsKLSAgICAgICAgICAgIHlbMF1b
MF0gPSAxNzsKLSAgICAgICAgICAgIHlbMF1bMV0gPSAxOTsKLSAgICAgICAgICAgIHlbMF1bMl0g
PSAyMzsKLSAgICAgICAgICAgIHlbMF1bM10gPSAyOTsKLSAgICAgICAgICAgIHlbMV1bMF0gPSAz
MTsKLSAgICAgICAgICAgIHlbMV1bMV0gPSAzNzsKLSAgICAgICAgICAgIHlbMV1bMl0gPSA0MTsK
LSAgICAgICAgICAgIHlbMV1bM10gPSA0MzsKLSAgICAgICAgICAgIHlbMl1bMF0gPSA0NzsKLSAg
ICAgICAgICAgIHlbMl1bMV0gPSA1MzsKLSAgICAgICAgICAgIHlbMl1bMl0gPSA1OTsKLSAgICAg
ICAgICAgIHlbMl1bM10gPSA2MTsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGZvbzAwKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJp
eDEoKSwgbWF0cml4MigpKVswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28wMSgp
IHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMF1b
MV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDIoKSB7Ci0gICAgICAgICAgICByZXR1
cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzJdOwotICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzAzKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEo
KSwgbWF0cml4MigpKVswXVszXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMCgpIHsK
LSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bMF07
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTEoKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzFdWzFdOwotICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzEyKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwg
bWF0cml4MigpKVsxXVsyXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMygpIHsKLSAg
ICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bM107Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbzAwIiwgW10pLCAxNyAqIDIgKyAzMSAqIDMgKyA0NyAqIDUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzAxIiwg
W10pLCAxOSAqIDIgKyAzNyAqIDMgKyA1MyAqIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzAyIiwgW10pLCAyMyAqIDIgKyA0MSAqIDMg
KyA1OSAqIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzAzIiwgW10pLCAyOSAqIDIgKyA0MyAqIDMgKyA2MSAqIDUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEwIiwgW10pLCAx
NyAqIDcgKyAzMSAqIDExICsgNDcgKiAxMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTEiLCBbXSksIDE5ICogNyArIDM3ICogMTEgKyA1
MyAqIDEzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICJmb28xMiIsIFtdKSwgMjMgKiA3ICsgNDEgKiAxMSArIDU5ICogMTMpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEzIiwgW10pLCAy
OSAqIDcgKyA0MyAqIDExICsgNjEgKiAxMyk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgt
Mi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBm
NDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0yLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhM2Ix
NjUwMmFhMGYzNDcxMzUyYmQ2N2Y3Njc5ZjJkNmZkYjFkYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJp
eC0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2Ug
PSBgCi1ib29sIGFsbEVxdWFsKGZsb2F0NHg0IG1hdCwgZmxvYXQgdmFsdWUpCi17Ci0gICAgZm9y
ICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZvciAodWludCBqID0g
MDsgaiA8IDQ7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYgKG1hdFtpXVtqXSAhPSB2YWx1
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZmlsbCh0aHJlYWQgZmxvYXQ0eDQqIG1hdCwgZmxvYXQg
dmFsdWUpCi17Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8
IDQ7IGkgPSBpICsgMSkgewotICAgICAgICAgICAgcmVzdWx0W2ldID0gZmxvYXQ0KHZhbHVlLCB2
YWx1ZSwgdmFsdWUsIHZhbHVlKTsKLSAgICB9Ci0gICAgKm1hdCA9IHJlc3VsdDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDQqIHZlYywgZmxvYXQgdmFsdWUp
Ci17Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0g
aSArIDEpIHsKLSAgICAgICAgcmVzdWx0W2ldID0gdmFsdWU7Ci0gICAgfQotICAgICp2ZWMgPSBy
ZXN1bHQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgYWxsRXF1YWwoZmxvYXQ0IHZlYywg
ZmxvYXQgdmFsdWUpCi17Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7
Ci0gICAgICAgIGlmICh2ZWNbaV0gIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVy
KHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0
NHg0IG1hdDsKLSAgICBmaWxsKCZtYXQsIDEpOwotICAgIGlmICghYWxsRXF1YWwobWF0LCAxKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0IHZlYzsKLSAgICBmaWxsKCZ2ZWMsIDEpOwot
ICAgIGlmICghYWxsRXF1YWwodmVjLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0
IHZlYzIgPSBtdWwobWF0LCB2ZWMpOwotICAgIGlmICghYWxsRXF1YWwodmVjMiwgNCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZsb2F0NHg0IG1hdDIgPSBtdWwobWF0LCBtYXQpOwotICAgIGlm
ICghYWxsRXF1YWwobWF0MiwgNCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1hdDIgPSBtdWwo
bWF0MiwgbWF0Mik7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQyLCA2NCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElE
LngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTog
NywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRz
OiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
c2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBi
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0g
NDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0
c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0Ug
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAg
ICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVy
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0
c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAw
LCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5n
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3Jv
dXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRv
QnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29t
cHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAg
IGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZGlzcGF0Y2goNCwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNo
KCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRB
c3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0g
MgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVz
dWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlb
M10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAg
JiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMy
QXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0g
ICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZk
ZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTgyNDhmMjczNDQ5NjY4ODQ5Mzg3M2JmNmM1MzM1NWI3NTk4ZmUyNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTky
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2Ny
aXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IENvbnRhaW5lcjJ4MiB7Ci0gICAg
ZmxvYXQgeDsKLSAgICBmbG9hdDJ4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250
YWluZXIyeDMgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQyeDMgbTsKLSAgICBmbG9hdCB5Owot
fQotCi1zdHJ1Y3QgQ29udGFpbmVyMng0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0Mng0IG07
Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjN4MiB7Ci0gICAgZmxvYXQgeDsK
LSAgICBmbG9hdDN4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIzeDMg
ewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQzeDMgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1
Y3QgQ29udGFpbmVyM3g0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0M3g0IG07Ci0gICAgZmxv
YXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjR4MiB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9h
dDR4MiBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXI0eDMgewotICAgIGZs
b2F0IHg7Ci0gICAgZmxvYXQ0eDMgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFp
bmVyNHg0IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0NHg0IG07Ci0gICAgZmxvYXQgeTsKLX0K
LQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjJ4Mihk
ZXZpY2UgQ29udGFpbmVyMngyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtd
IG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1b
MF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwg
MSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjJ4MyhkZXZpY2UgQ29udGFpbmVyMngzW10g
aW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUx
KSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0g
aW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29t
cHV0ZVNoYWRlcjJ4NChkZXZpY2UgQ29udGFpbmVyMng0W10gaW5wdXQgOiByZWdpc3Rlcih1MCks
IGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9
IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251
bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjN4MihkZXZpY2Ug
Q29udGFpbmVyM3gyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1
dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0g
ICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1j
b21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjN4MyhkZXZpY2UgQ29udGFpbmVyM3gzW10gaW5wdXQg
OiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewot
ICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRb
MF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNo
YWRlcjN4NChkZXZpY2UgQ29udGFpbmVyM3g0W10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmlj
ZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0
WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVh
ZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjR4MihkZXZpY2UgQ29udGFp
bmVyNHgyW10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJl
Z2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0
cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRl
IHZvaWQgY29tcHV0ZVNoYWRlcjR4MyhkZXZpY2UgQ29udGFpbmVyNHgzW10gaW5wdXQgOiByZWdp
c3Rlcih1MCksIGRldmljZSBmbG9hdFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91
dHB1dFswXSA9IGlucHV0WzBdLm1bMF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsK
LX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcjR4
NChkZXZpY2UgQ29udGFpbmVyNHg0W10gaW5wdXQgOiByZWdpc3Rlcih1MCksIGRldmljZSBmbG9h
dFtdIG91dHB1dCA6IHJlZ2lzdGVyKHUxKSkgewotICAgIG91dHB1dFswXSA9IGlucHV0WzBdLm1b
MF1bMF07Ci0gICAgb3V0cHV0WzFdID0gaW5wdXRbMF0ueTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZSwgaXNXSExTTDogdHJ1ZX0pOwotCi0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5n
OiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6IDEs
IHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBpbnB1dFNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiAzMjsKLSAgICBjb25zdCBvdXRwdXRTaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogMjsKLQotICAgIGNvbnN0IHVwbG9hZEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTog
aW5wdXRTaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IHVwbG9hZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodXBsb2FkQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB1cGxvYWRCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHVw
bG9hZEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodXBsb2FkQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7ICsraSkKLSAgICAgICAgdXBs
b2FkQnVmZmVyRmxvYXQzMkFycmF5W2ldID0gaTsKLSAgICB1cGxvYWRCdWZmZXIudW5tYXAoKTsK
LQotICAgIGNvbnN0IGlucHV0QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBpbnB1dFNpemUsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0V9Owot
ICAgIGNvbnN0IGlucHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihpbnB1dEJ1ZmZlckRl
c2NyaXB0b3IpOwotCi0gICAgY29uc3Qgb3V0cHV0QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBv
dXRwdXRTaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9SRUFEfTsKLSAgICBjb25zdCBvdXRwdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KG91dHB1dEJ1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVz
b3VyY2U6IHtidWZmZXI6IGlucHV0QnVmZmVyLCBzaXplOiBpbnB1dFNpemV9fSwge2JpbmRpbmc6
IDEsIHJlc291cmNlOiB7YnVmZmVyOiBvdXRwdXRCdWZmZXIsIHNpemU6IG91dHB1dFNpemV9fV19
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBsZXQgdGVzdHMgPSBbImNvbXB1dGVTaGFkZXIyeDIiLCAiY29t
cHV0ZVNoYWRlcjJ4MyIsICJjb21wdXRlU2hhZGVyMng0IiwgImNvbXB1dGVTaGFkZXIzeDIiLCAi
Y29tcHV0ZVNoYWRlcjN4MyIsICJjb21wdXRlU2hhZGVyM3g0IiwgImNvbXB1dGVTaGFkZXI0eDIi
LCAiY29tcHV0ZVNoYWRlcjR4MyIsICJjb21wdXRlU2hhZGVyNHg0Il07Ci0gICAgbGV0IHJlc3Vs
dHMgPSBbXTsKLSAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7Ci0gICAgICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoe2NvbXB1dGVTdGFn
ZToge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiB0ZXN0fSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH0pOwotICAgICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgICAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9CdWZmZXIodXBsb2FkQnVmZmVyLCAwLCBpbnB1dEJ1ZmZlciwgMCwgaW5wdXRTaXplKTsK
LSAgICAgICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5D
b21wdXRlUGFzcygpOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lKTsKLSAgICAgICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwg
MSk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICAgICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICAgICAgY29uc3Qgb3V0
cHV0QXJyYXlCdWZmZXIgPSBhd2FpdCBvdXRwdXRCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAg
ICAgIGNvbnN0IG91dHB1dEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkob3V0cHV0QXJy
YXlCdWZmZXIpOwotICAgICAgICByZXN1bHRzLnB1c2gob3V0cHV0RmxvYXQzMkFycmF5WzBdKTsK
LSAgICAgICAgcmVzdWx0cy5wdXNoKG91dHB1dEZsb2F0MzJBcnJheVsxXSk7Ci0gICAgICAgIG91
dHB1dEJ1ZmZlci51bm1hcCgpOwotICAgIH0KLSAgICBsZXQgZXhwZWN0ZWQgPSBbMiwgNiwgNCwg
MTIsIDQsIDEyLCAyLCA4LCA0LCAxNiwgNCwgMTYsIDIsIDEwLCA0LCAyMCwgNCwgMjBdOwotICAg
IGxldCBlcnJvciA9IGZhbHNlOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0gIT0gZXhwZWN0ZWRbaV0pIHsKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotICAgIHRlc3RQYXNzZWQoIiIpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oZSkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJlLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjM2MxYWIzOGZlZjcyODFiZTMw
MDVhMDE3NzQ3YWYyMjY0ODUzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIG1hdHJpeExUCi1Q
QVNTIG1hdHJpeExUMgotUEFTUyBtYXRyaXhMVEUKLVBBU1MgbWF0cml4TFRFMgotUEFTUyBtYXRy
aXhMVEUzCi1QQVNTIG1hdHJpeEdUCi1QQVNTIG1hdHJpeEdUMgotUEFTUyBtYXRyaXhHVEUKLVBB
U1MgbWF0cml4R1RFMgotUEFTUyBtYXRyaXhHVEUzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1jb21wYXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYy
YmI5Njg2YTQzYzVlYzkwZDQ3MDRjNGM5ZGMwOWRlYzgxNzI3YzguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC1jb21wYXJlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT49PS48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMubWF0cml4TFQgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAuMCwgMTAuMCwgMTAuMCwgMjAuMCwg
MjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2MiA9IHY7Ci0gICAgICAgICAgICB2
MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPCB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFQyID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAg
ICAgICAgICAgIHYyICs9IDEwLjA7Ci0gICAgICAgICAgICB2MlswXVswXSAtPSAxMS4wOwotCi0g
ICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPCB2MjsKLSAgICAgICAgICAgIHJldHVybiAh
cmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3VsdFsx
XVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5tYXRyaXhMVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAuMCwg
MTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2MiA9
IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYg
PD0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLm1hdHJpeExURTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAu
MCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2
MiA9IHY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFRFMyA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIHY7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2MiA9IHY7Ci0gICAg
ICAgICAgICB2MlswXVswXSAtPSAxLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyeDIgcmVzdWx0ID0g
diA8PSB2MjsKLSAgICAgICAgICAgIHJldHVybiAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsx
XSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3VsdFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28i
LCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVCA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4w
KTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7
Ci0KLSAgICAgICAgICAgIHJldHVybiAhYW55KHYgPiB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4R1QyID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAgICAgICAgICAg
IHYyWzBdWzBdICs9IDEuMDsKLSAgICAgICAgICAgIHYyWzBdWzFdIC09IDEuMDsKLSAgICAgICAg
ICAgIHYyWzFdWzBdIC09IDEuMDsKLSAgICAgICAgICAgIHYyWzFdWzFdIC09IDEuMDsKLQotICAg
ICAgICAgICAgYm9vbDJ4MiByZXN1bHQgPSB2ID4gdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJl
c3VsdFswXVswXSAmJiByZXN1bHRbMF1bMV0gJiYgcmVzdWx0WzFdWzBdICAmJiByZXN1bHRbMV1b
MV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMu
bWF0cml4R1RFID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAsIDEw
LjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIgPSB2
OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+
PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMubWF0cml4R1RFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4w
LCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYy
ID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2ID49IHYyKTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUzID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAg
ICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAgICAg
ICAgICAgIHYyWzBdWzBdICs9IDEuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiByZXN1bHQgPSB2
ID49IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFd
ICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjQw
NThjZDkyNjQ0ZTk2YWU0NmIxNzZjYjhjNjAwNTY2ODFiMmE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRy
aXgtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBA
QAotCi1QQVNTIG1hdHJpeENvbnN0cnVjdG9yCi1QQVNTIG1hdHJpeENvbnN0cnVjdG9yMgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1s
aXN0LW9mLXNjYWxhcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4ZmFjNzlkNjYxM2M4NThiN2JlNmJiODI4YzQ5YzZmZTEy
YTlkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbGlzdE9m
U2NhbGFyc01hdHJpeENvbnN0cnVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWNlMWY0NzBlZjMyMWYwMGMwNzI2
NWYxOWI3NTlmZjYyZGI3MjFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxp
c3Qtb2Ytc2NhbGFycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0
cy5saXN0T2ZTY2FsYXJzTWF0cml4Q29uc3RydWN0b3JzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZsb2F0MngyIG0gPSBmbG9hdDJ4MigxLCAyLCAzLCA0KTsKLSAgICAgICAgICAgIHJldHVybiBt
WzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MyBtID0gZmxvYXQyeDMoMSwgMiwgMywgNCwgNSwgNik7Ci0gICAgICAgICAg
ICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyeDQgbSA9IGZsb2F0Mng0KDEsIDIsIDMsIDQsIDUsIDYsIDcs
IDgpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxv
YXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIG0gPSBmbG9hdDN4MigxLCAy
LCAzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDN4MyBtID0gZmxv
YXQzeDMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSk7Ci0gICAgICAgICAgICByZXR1cm4gbVsx
XVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQzeDQgbSA9IGZsb2F0M3g0KDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx
MSwgMTIpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NHgyIG0gPSBmbG9hdDR4Migx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDR4
MyBtID0gZmxvYXQ0eDMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMik7Ci0g
ICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBpKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQ0eDQgbSA9IGZsb2F0NHg0KDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2KTsKLSAgICAgICAgICAg
IHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiYSIsIFtdKSwgMywgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgImIiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJjIiwgW10pLCA1LCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
ZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImUiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmIiwgW10p
LCA1LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZyIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImgiLCBbXSksIDQsIGVw
c2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICJpIiwgW10pLCA1LCBlcHNpbG9uKTsKLX0KLQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYXRyaXgtY29uc3RydWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiMjI3MTExZWZhYjhmMGIxYjk4ZWJkODExOGRiOTdhMzQ5NzE4YjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bWF0cml4IGN0b3IuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubWF0cml4Q29uc3RydWN0b3IgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoZmxvYXQyKDEuMCwgMi4wKSwgZmxvYXQy
KDMuMCwgNC4wKSwgZmxvYXQyKDUuMCwgNi4wKSk7Ci0gICAgICAgICAgICByZXR1cm4gdlswXVsw
XSA9PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCi0gICAgICAgICAgICAgICAgJiYgdlsxXVswXSA9
PSAzLjAgJiYgdlsxXVsxXSA9PSA0LjAgCi0gICAgICAgICAgICAgICAgJiYgdlsyXVswXSA9PSA1
LjAgJiYgdlsyXVsxXSA9PSA2LjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMubWF0cml4Q29uc3RydWN0b3IyID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQzeDIgdiA9IGZsb2F0M3gyKDEuMCwgMi4wLCAzLjAsIDQuMCwgNS4wLCA2LjApOwotICAgICAg
ICAgICAgcmV0dXJuIHZbMF1bMF0gPT0gMS4wICYmIHZbMF1bMV0gPT0gMi4wIAotICAgICAgICAg
ICAgICAgICYmIHZbMV1bMF0gPT0gMy4wICYmIHZbMV1bMV0gPT0gNC4wIAotICAgICAgICAgICAg
ICAgICYmIHZbMl1bMF0gPT0gNS4wICYmIHZbMl1bMV0gPT0gNi4wOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFk
NTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODEzMTdlZWNkMzU0ODRiMDVjOTY0YzJjYWUxODBhM2Q3MWNkYzEy
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBmaWVsZFNob3VsZEJlTnVsbAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24uaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg3ODE3OGJiNmFiYjQyMmIxYzRiZWZmYTUyZTEw
ZTFmY2NiZDAyMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5tYXRyaXgtaW5kZXgtYXNzaWduLXN3aXp6bGUuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuZmllbGRTaG91bGRCZU51bGwgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MyBtYXQ7Ci0gICAgICAgICAgICBtYXRbMF0gPSBmbG9hdDMoMTAuMCwgMjAuMCwgMzAuMCk7
Ci0KLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXSA9PSBmbG9hdDMoMTAuMCwgMjAuMCwgMzAu
MCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgaWYgKCFh
bGwobWF0WzBdLnh5ID09IGZsb2F0MigxMC4wLCAyMC4wKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoIWFsbChtYXRbMF0ueXggPT0gZmxvYXQyKDIw
LjAsIDEwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAg
IG1hdFswXS54eSA9IGZsb2F0MigxLjAsIDIuMCk7Ci0gICAgICAgICAgICBpZiAoIWFsbChtYXRb
MF0ueHkgPT0gZmxvYXQyKDEuMCwgMi4wKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgICAgICBtYXRbMF0ueXgueXggPSBmbG9hdDIoMTAwLjAsIDIwMC4wKTsKLSAg
ICAgICAgICAgIGlmICghYWxsKG1hdFswXS54eSA9PSBmbG9hdDIoMTAwLjAsIDIwMC4wKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE1OWFmZGJkM2RiN2NlMWYzMGNmZjRiYzY5Y2U4MThkYWNhYzMwMzUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBtYXRNdWwKLVBBU1MgbWF0TXVsMgotUEFTUyBt
YXRNdWwzCi1QQVNTIG1hdE11bDQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1pbmRleC1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC1pbmRleC1vcmRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTk0
NDMyYTlmNjdhZTBmZjg4ZjNlMTFmYjZjNDIxODg3NjY1MGNmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRy
aXgtaW5kZXgtb3JkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm1hdHJpeC1pbmRleC1vcmRlci48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5tYXRNdWwgPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MyBhID0gZmxvYXQyeDMoCi0gICAgICAgICAgICAgICAgZmxvYXQzKDEsIDIsIDMp
LAotICAgICAgICAgICAgICAgIGZsb2F0Myg0LCA1LCA2KQotICAgICAgICAgICAgKTsKLQotICAg
ICAgICAgICAgZmxvYXQzeDIgYiA9IGZsb2F0M3gyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig3
LCA4KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoOSwgMTApLAotICAgICAgICAgICAgICAgIGZs
b2F0MigxMSwgMTIpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MyByZXN1
bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAgIGZsb2F0M3gzIGV4cGVjdGVkID0gZmxvYXQz
eDMoCi0gICAgICAgICAgICAgICAgZmxvYXQzKDM5LCA1NCwgNjkpLAotICAgICAgICAgICAgICAg
IGZsb2F0Myg0OSwgNjgsIDg3KSwKLSAgICAgICAgICAgICAgICBmbG9hdDMoNTksIDgyLCAxMDUp
Ci0gICAgICAgICAgICApOwotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1
bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdE11bDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhID0gZmxvYXQyeDIoCi0gICAgICAg
ICAgICAgICAgZmxvYXQyKDEsIDgpLAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCAxMikKLSAg
ICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDIyLCA0NSk7Ci0K
LSAgICAgICAgICAgIGZsb2F0MiByZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAgIGZs
b2F0MiBleHBlY3RlZCA9IGZsb2F0MigyNDcsIDcxNik7Ci0KLSAgICAgICAgICAgIHJldHVybiBh
bGwoZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotd2hsc2xUZXN0cy5tYXRNdWwzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgYSA9
IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0MigxLCAyKSwKLSAgICAgICAgICAgICAg
ICBmbG9hdDIoMywgNCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGIg
PSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoNSwgNiksCi0gICAgICAgICAgICAg
ICAgZmxvYXQyKDcsIDgpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDJ4MiBy
ZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGV4cGVjdGVkID0gZmxv
YXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDIzLCAzNCksCi0gICAgICAgICAgICAgICAg
ZmxvYXQyKDMxLCA0NikKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwo
ZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmFyKCkgewot
ICAgICAgICAgICAgZmxvYXQyeDIgYiA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0
MigxLCAyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMywgNCkKLSAgICAgICAgICAgICk7Ci0K
LSAgICAgICAgICAgIGZsb2F0MngyIGEgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9h
dDIoNSwgNiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDcsIDgpCi0gICAgICAgICAgICApOwot
Ci0gICAgICAgICAgICBmbG9hdDJ4MiByZXN1bHQgPSBtdWwoYSwgYik7Ci0KLSAgICAgICAgICAg
IGZsb2F0MngyIGV4cGVjdGVkID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDE5
LCAyMiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDQzLCA1MCkKLSAgICAgICAgICAgICk7Ci0K
LSAgICAgICAgICAgIHJldHVybiBhbGwoZXhwZWN0ZWQgPT0gcmVzdWx0KTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImJhciIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1h
dE11bDQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4NCBhID0gZmxvYXQyeDQoCi0gICAgICAgICAg
ICAgICAgZmxvYXQ0KDEsIDIsIDMsIDQpLAotICAgICAgICAgICAgICAgIGZsb2F0NCg1LCA2LCA3
LCA4KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQzeDIgYiA9IGZsb2F0M3gy
KAotICAgICAgICAgICAgICAgIGZsb2F0Mig5LCAxMCksCi0gICAgICAgICAgICAgICAgZmxvYXQy
KDExLCAxMiksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEzLCAxNCkKLSAgICAgICAgICAgICk7
Ci0KLSAgICAgICAgICAgIGZsb2F0M3g0IHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAg
ICAgZmxvYXQzeDQgZXhwZWN0ZWQgPSBmbG9hdDN4NCgKLSAgICAgICAgICAgICAgICBmbG9hdDQo
NTksIDc4LCA5NywgMTE2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDQoNzEsIDk0LCAxMTcsIDE0
MCksCi0gICAgICAgICAgICAgICAgZmxvYXQ0KDgzLCAxMTAsIDEzNywgMTY0KQotICAgICAgICAg
ICAgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMxMDEwODVhMjRhZGQ1OGMwMTk3YmYwNjFmMjdjOGVhYmExYjE2OWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdDR4NFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwg
ZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbG9hdDQoMSwgMiwgMywgNCk7Ci0gICAgcmVzdWx0WzFd
ID0gZmxvYXQ0KDUsIDYsIDcsIDgpOwotICAgIHJlc3VsdFsyXSA9IGZsb2F0NCg5LCAxMCwgMTEs
IDEyKTsKLSAgICByZXN1bHRbM10gPSBmbG9hdDQoMTMsIDE0LCAxNSwgMTYpOwotCi0gICAgZmxv
YXQ0eDQgbWF0ID0gYnVmZmVyWzBdOwotCi0gICAgaWYgKG1hdFswXVswXSA9PSAwCi0gICAgICAg
ICYmIG1hdFswXVsxXSA9PSAxCi0gICAgICAgICYmIG1hdFswXVsyXSA9PSAyCi0gICAgICAgICYm
IG1hdFswXVszXSA9PSAzCi0KLSAgICAgICAgJiYgbWF0WzFdWzBdID09IDQKLSAgICAgICAgJiYg
bWF0WzFdWzFdID09IDUKLSAgICAgICAgJiYgbWF0WzFdWzJdID09IDYKLSAgICAgICAgJiYgbWF0
WzFdWzNdID09IDcKLQotICAgICAgICAmJiBtYXRbMl1bMF0gPT0gOAotICAgICAgICAmJiBtYXRb
Ml1bMV0gPT0gOQotICAgICAgICAmJiBtYXRbMl1bMl0gPT0gMTAKLSAgICAgICAgJiYgbWF0WzJd
WzNdID09IDExCi0KLSAgICAgICAgJiYgbWF0WzNdWzBdID09IDEyCi0gICAgICAgICYmIG1hdFsz
XVsxXSA9PSAxMwotICAgICAgICAmJiBtYXRbM11bMl0gPT0gMTQKLSAgICAgICAgJiYgbWF0WzNd
WzNdID09IDE1KSB7Ci0gICAgICAgIGJ1ZmZlclswXSA9IHJlc3VsdDsKLSAgICB9Ci19Ci1gOwot
Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJj
b21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1
ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQgKiAxNjsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAw
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSAzOwotICAgIGJ1ZmZlckZsb2F0
MzJBcnJheVs0XSA9IDQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNTsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbNl0gPSA2OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDc7Ci0g
ICAgYnVmZmVyRmxvYXQzMkFycmF5WzhdID0gODsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbOV0g
PSA5OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxMDsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMTFdID0gMTE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDEyOwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVsxM10gPSAxMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTRdID0g
MTQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE1OwotICAgIGJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5k
aW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
QmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29u
c3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGlu
Z3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFu
ZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwg
c2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVn
aW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21w
dXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMiwgMSwgMSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBy
ZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMF0gPT09IDEKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsx
XSA9PT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09PSAzCi0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT09IDQKLQotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzRdID09PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0gPT09
IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PT0gNwotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzddID09PSA4Ci0KLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVs4XSA9PT0gOQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzldID09PSAxMAot
ICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzEwXSA9PT0gMTEKLSAgICAgICAgJiYgcmVz
dWx0c0Zsb2F0MzJBcnJheVsxMV0gPT09IDEyCi0KLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVsxMl0gPT09IDEzCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTNdID09PSAx
NAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzE0XSA9PT0gMTUKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVsxNV0gPT09IDE2KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5t
YXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjAyYmJiZTVlMTNiMDJkYzQz
Mjg5MTc0NTdkN2E1YjcyZmYxY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotYm9vbCBhbGxFcXVh
bChmbG9hdDJ4MyBtYXQsIGZsb2F0IHZhbHVlKQotewotICAgIGZvciAodWludCBpID0gMDsgaSA8
IDI7IGkgPSBpICsgMSkgewotICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCAzOyBqID0gaiAr
IDEpIHsKLSAgICAgICAgICAgIGlmIChtYXRbaV1bal0gIT0gdmFsdWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmlj
ZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlz
cGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0MngzIGZvbzsKLSAgICBpZiAoIWFsbEVxdWFsKGZv
bywgMCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvbyA9IGZvbyArIGZsb2F0MngzKGZsb2F0
MygxLjAsIDEuMCwgMS4wKSwgZmxvYXQzKDEuMCwgMS4wLCAxLjApKTsKLSAgICBpZiAoIWFsbEVx
dWFsKGZvbywgMSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvbyA9IGZvbyAqIGZsb2F0Mngz
KGZsb2F0Myg4LjUsIDguNSwgOC41KSwgZmxvYXQzKDguNSwgOC41LCA4LjUpKTsKLSAgICBpZiAo
IWFsbEVxdWFsKGZvbywgOC41KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vIC0g
ZmxvYXQyeDMoZmxvYXQzKDcuNSwgNy41LCA3LjUpLCBmbG9hdDMoNy41LCA3LjUsIDcuNSkpOwot
ICAgIGlmICghYWxsRXF1YWwoZm9vLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0g
Zm9vICsgZmxvYXQyeDMoZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBmbG9hdDMoMS4wLCAxLjAsIDEu
MCkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9vID0gZm9vICsgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0KSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9vID0gZm9vICsgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA4KSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQzIGZvdXJ0eVR3bzsKLSAgICBmb3VydHlUd28u
eCA9IDQyOwotICAgIGZvdXJ0eVR3by55ID0gNDI7Ci0gICAgZm91cnR5VHdvLnogPSA0MjsKLQot
ICAgIGZvb1swXSA9IGZvdXJ0eVR3bzsKLSAgICBmb29bMV0gPSBmb3VydHlUd287Ci0gICAgaWYg
KCFhbGxFcXVhbChmb28sIDQyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vWzEzMzddID0g
Zm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZvb1sxMDAwMDAwXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFsKGZvbywg
NDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3VydHlUd29bMTMzN10gPSA1MDsKLSAgICBp
ZiAoZm91cnR5VHdvLnggIT0gNTApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3b1sx
MzM3XSA9IDQyOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFsKGZv
bywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3VydHlUd29bMTAwMDAwMF0gPSA1MDsK
LSAgICBpZiAoZm91cnR5VHdvLnggIT0gNTApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0
eVR3b1sxMzM3XSA9IDQyOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVx
dWFsKGZvbywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDMgc2hvdWxkQmVGb3Vy
dHlUd28gPSBmb29bMTAwMDAwXTsKLSAgICBpZiAoc2hvdWxkQmVGb3VydHlUd28ueCAhPSA0MiB8
fCBzaG91bGRCZUZvdXJ0eVR3by55ICE9IDQyIHx8IHNob3VsZEJlRm91cnR5VHdvLnogIT0gNDIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3VydHlUd29bMTAwMDAwMDBdICE9IDQyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBidWZmZXJbdWludCh0aHJlYWRJRC54KV0gPSBidWZmZXJb
dWludCh0aHJlYWRJRC54KV0gKiAyLjA7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChk
ZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9k
dWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAs
IHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFn
ZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0g
ZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA4Owot
Ci0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVm
ZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIp
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzFdID0gMjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAzOwotICAgIGJ1ZmZlckZsb2F0
MzJBcnJheVszXSA9IDQ7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzRdID0gNTsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbNV0gPSA2OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDc7Ci0g
ICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0gODsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
cmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHti
dWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcg
PSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRH
cm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmlu
ZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVy
LmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOwot
ICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0
ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDQsIDEsIDEpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1
ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1
ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxvYXQz
MkFycmF5WzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxXSA9PSA0Ci0g
ICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT0gNgotICAgICAgICAmJiByZXN1bHRz
RmxvYXQzMkFycmF5WzNdID09IDgKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs0XSA9
PSA1Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNV0gPT0gNgotICAgICAgICAmJiBy
ZXN1bHRzRmxvYXQzMkFycmF5WzZdID09IDcKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJh
eVs3XSA9PSA4KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
c3RGYWlsZWQoIm5vdCBjb3JyZWN0Iik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1ZS1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4
M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZh
bHVlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4
cHJlc3Npb24tcnZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWRv
dC1leHByZXNzaW9uLXJ2YWx1ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YmQ3MGU1MDY1NWIwMjM1MWU0ZTQ3Y2Q0NDBmNjAzMWJjNTM4YTE1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9u
ZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi0KLXN0cnVjdCBCYXIgewotICAgIGZsb2F0IHNo
YWRlOwotfQotc3RydWN0IEZvbyB7Ci0gICAgQmFyIGJhcjsKLX0KLQotc3RydWN0IFdyYXBwZXIg
ewotICAgIEZvbyBmb287Ci19Ci0KLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1
dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgV3JhcHBlciB3cmFwcGVy
OwotICAgIHdyYXBwZXIuZm9vLmJhci5zaGFkZSA9IHNoYWRlOwotICAgIFZlcnRleE91dCByZXN1
bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0g
d3JhcHBlci5mb28uYmFyLnNoYWRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwot
fQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1p
dGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9u
U3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBh
bHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVu
ZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hh
ZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3Qg
YXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVy
aXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0
LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
MC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAx
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJp
bmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRH
cm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3
YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5j
cmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzog
MCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVu
dDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFy
Iiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhT
dGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVy
UGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhC
dWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0ZTBl
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bmVzdGVkLWxvb3AuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY3ZTgyNmNl
NDBlNjhlYWIwOGQ0YTU2NTQ2NzY5N2NmZjZlMGIwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxv
b3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9
IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
OwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0
IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRl
IDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9
IHRydWU7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMTA7IGkgPSBpICsgMSkgewotICAgICAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNoYWRlID0gMS4wOwotICAgICAgICB9
Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gMS4wLCBmYWxz
ZSkpOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKChzaGFkZSA9IHNo
YWRlICsgMS4wLCBmYWxzZSkpOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChiKSB7
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hp
bGUgKChzaGFkZSA9IHNoYWRlIC0gMS4wLCBmYWxzZSkpOwotCi0gICAgICAgIHdoaWxlICgoc2hh
ZGUgPSBzaGFkZSArIDEuMCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3aGls
ZSAoKHNoYWRlID0gc2hhZGUgLSAxLjAsIHRydWUpKSB7Ci0gICAgICAgICAgICBpZiAoYikgewot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hh
ZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmli
dXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3Ry
aWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBb
aW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3ti
aW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIw
XSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9udWxsLWFyZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMyYTE0MDFjZTZlNDcyMDljMjM2ZThkZjczN2ZiYTgyOWUzZDc0MzMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
Ci1QQVNTIG51bGxJc0Vycm9yCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9udWxsLWFyZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YTVkMDMzNTJkOGUzNTBiM2M2OTQxN2Vh
YzMzY2FiOWIxZmY3ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm51
bGwuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubnVsbElzRXJyb3Ig
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28o
dGhyZWFkIGludCogcHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnB0cjsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZvbyhudWxsKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgdm9pZCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB4
OwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2
b2lkIGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSB4OwotICAgICAg
ICB9Ci0gICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9w
ZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwt
YXJyYXktcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWIzOTFmMWM5YTllZWMzZDE3Njc5OWQ1NDA3YWNiYWRiMThkMmRhNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1Mgc3RvcmVOdWxsQXJyYXlSZWYKLVBBU1MgbG9h
ZE51bGxBcnJheVJlZgotUEFTUyBudWxsTmFtZWRBY2Nlc3MKLVBBU1MgbnVsbE5hbWVkQWNjZXNz
MgotUEFTUyBudWxsTmFtZWRBY2Nlc3NTaW5rCi1QQVNTIG51bGxOYW1lZEFjY2Vzc1NpbmsyCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5
LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVy
dHktYWNjZXNzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYTA5ZGVmZGUx
ODg4YjZlYjJhMzMzMDg1MTQ4NmRlMDIyMjU3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXkt
cHJvcGVydHktYWNjZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmxvYWQvc3RvcmUgdG8gbnVsbC48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zdG9yZU51bGxBcnJheVJlZiA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IHZvaWQgZm9vKCkgeyBudWxsWzBdID0gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVz
dHMubG9hZE51bGxBcnJheVJlZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayh0aHJlYWQgaW50KiB4KSB7IH0KLSAg
ICAgICAgICAgIHZvaWQgZm9vKCkgeyBzaW5rKG51bGxbMF0pOyB9Ci0gICAgICAgIGApOwotfQot
Ci13aGxzbFRlc3RzLm51bGxOYW1lZEFjY2VzcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBudWxsLT54OyB9
Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm51bGxOYW1lZEFjY2VzczIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lk
IGZvbygpIHsgbnVsbC54OyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm51bGxOYW1l
ZEFjY2Vzc1NpbmsgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsoaW50IHgpIHsgfQotICAgICAgICAgICAgdm9pZCBm
b28oKSB7IHNpbmsobnVsbC0+eCk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVs
bE5hbWVkQWNjZXNzU2luazIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsoaW50IHgpIHsgfQotICAgICAgICAgICAg
dm9pZCBmb28oKSB7IHNpbmsobnVsbC54KTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL251bGwtYXJyYXktcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1
NTE3YWQ0MDNmZmViMGQ3NmY1NmNkYTQzNDhhNWNjNTIzMzIyMzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251
bGwtYXJyYXktcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuZGVyZWZlcmVuY2VEZWZhdWx0TnVsbEFycmF5UmVmID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBwOwotICAgICAgICAgICAgcmV0dXJu
IHBbMF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDApOwotfQotCi13aGxzbFRlc3RzLmRlZmF1
bHRJbml0aWFsaXplZE51bGxBcnJheVJlZkludExpdGVyYWwgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGhyZWFkIGludFtdIHAgPSBudWxsOwotICAgICAgICAgICAgcmV0dXJuIHBbMF07Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDApOwotfQotCi13aGxzbFRlc3RzLnBhc3NOdWxsVG9QdHJNb25v
bW9ycGhpY0FycmF5UmVmID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyh0aHJlYWQgaW50W10gcHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcHRyWzB1XTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGZvbyhudWxsKTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMCk7
Ci19Ci0KLXdobHNsVGVzdHMubG9hZE51bGwgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBzaW5rKHRocmVhZCBpbnQqIHgp
IHsgfQotICAgICAgICAgICAgdm9pZCBmb28oKSB7IHNpbmsoKm51bGwpOyB9Ci0gICAgICAgIGAp
OwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy0yLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTEzYWY4OGUxMjU5ZWZmNWFjMzJiODY0YTE2
NDIxMTYyZDZmYTVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb29iCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGNjY2E1ZGVkZTA3YzliZWFmNzIyNjVkMDE4NzFiOGU5ZGE3ODcyNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb29iLWFjY2Vzcy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk9PQi48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5vb2IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0g
MzsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhID0gQHg7Ci0gICAgICAgICAgICBhWzQyNDI0
Ml0gPSAyNTsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgaW50
IGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0geDsKLSAgICAgICAgICAgIHRo
cmVhZCBpbnRbXSBhID0gQHg7Ci0gICAgICAgICAgICBhWzQyNDI0Ml0gPSAyNTsKLSAgICAgICAg
ICAgIHJldHVybiB4WzBdOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGJheigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludFsxMF0geDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhID0g
QHg7Ci0gICAgICAgICAgICBhWzQyNDI0Ml0gPSAyNTsKLSAgICAgICAgICAgIHJldHVybiB4WzFd
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMjUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbXSksIDApOwotfTsKLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFj
Y2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5MTRkOGMzYjU4ZjEwZGZlNmQ2M2Y5OGJlMTY1
ZjQwYjdiNDYxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcyg0LCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGJ1ZmZlclsxMzM3XSA9IDAuMDsKLSAgICBidWZmZXJbNDI0MjQyNDJdID0gMC4wOwotICAgIGlm
IChidWZmZXJbMTAwMDAwXSA9PSAwLjApCi0gICAgICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngp
XSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIi
fTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7
YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7
Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRl
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAg
YnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJC
aW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdy
b3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAg
Y29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmlu
ZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwg
MCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShj
b21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwg
YmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2Fp
dCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJl
c3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5
WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQz
MkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0g
ICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRz
RmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UK
LSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLWRpdi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBj
YjU2NjFkNGRjNjAwNDZhZWI4ZWM0YjdjYjEwODMyODhhYTdmOGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLWRpdi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQot
UEFTUyB2ZWN0b3JEaXYKLVBBU1MgdmVjdG9yRGl2V2l0aFNjYWxhcgotUEFTUyB2ZWN0b3JEaXZX
aXRoU2NhbGFyMgotUEFTUyBtYXRyaXhEaXYKLVBBU1MgbWF0cml4RGl2U2NhbGFyCi1QQVNTIG1h
dHJpeERpdlNjYWxhcjIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLWRpdi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTZhOWI5NGUzYWE3NzJiZmRkODYz
MGVlMTJlYjBlZmM2Mjk1NDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1kaXYuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPkRpdi48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAw
LjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4
ID0gZmxvYXQyKDEwLCAzMCk7Ci0gICAgICAgICAgICBmbG9hdDIgeSA9IGZsb2F0Mig1LCAxMCk7
Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggLyB5OwotICAgICAgICAgICAgcmV0dXJuIHIueCAv
IHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQg
Y2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMi8zLCBlcHNpbG9uKTsKLX07
Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2V2l0aFNjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB4IC8gNS4wOwot
ICAgICAgICAgICAgcmV0dXJuIHIueCAvIHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdKSwgMi81LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yRGl2V2l0aFNjYWxh
cjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQg
Zm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDI1KTsKLSAgICAgICAg
ICAgIGZsb2F0MiByID0gMTAwIC8geDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEwLzQsIGVwc2lsb24pOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhEaXYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAg
ICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwg
NTApOwotCi0gICAgICAgICAgICBmbG9hdDJ4MiBtMjsKLSAgICAgICAgICAgIG0yWzBdID0gZmxv
YXQyKC0xLjAsIC0xLjApOwotICAgICAgICAgICAgbTJbMV0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7
Ci0KLSAgICAgICAgICAgIG0gPSBtIC8gbTI7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09
IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFdWzFd
ID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhEaXZTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAg
ICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0
MCwgNTApOwotCi0gICAgICAgICAgICBtID0gbSAvIC0xLjA7Ci0KLSAgICAgICAgICAgIGlmICht
WzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAm
JiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhEaXZTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIG1bMV0g
PSBmbG9hdDIoMjUsIDUwKTsKLQotICAgICAgICAgICAgbSA9IDEwMC4wIC8gbTsKLQotICAgICAg
ICAgICAgaWYgKG1bMF1bMF0gPT0gMTAuMCAmJiBtWzBdWzFdID09IDUuMCAmJiBtWzFdWzBdID09
IDQuMCAmJiBtWzFdWzFdID09IDIuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3N2VhYWVlZTdkOTVh
M2IwMDU4YjY0ZTQ5NzlkYTRkNmEwYjJiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwt
ZXF1YWwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1Mg
bWF0cml4RXF1YWwKLVBBU1MgdmVjdG9yRXF1YWxzCi1QQVNTIHNjYWxhckVxdWFscwotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWRhMDQwZjUzZDM4YWU4MjBkNTkxMmU2MTQ0
ODQyYzM5ZWNhMmYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT49PS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAw
LjAwMDE7Ci0KLXdobHNsVGVzdHMubWF0cml4RXF1YWwgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsx
XSA9IGZsb2F0Mig0MCwgNTApOwotICAgICAgICAgICAgZmxvYXQyeDIgbTMgPSBtOwotICAgICAg
ICAgICAgbTNbMF1bMV0gKz0gMTAuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiBtMiA9IG0gPT0g
bTM7Ci0KLSAgICAgICAgICAgIHJldHVybiBtMlswXVswXSAmJiAhbTJbMF1bMV0gJiYgbTJbMV1b
MF0gJiYgbTJbMV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMudmVjdG9yRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9h
dDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotCi0gICAgICAgICAg
ICBib29sMiByZXN1bHQgPSB2MiA9PSB2OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC54ICYm
IHJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLnNjYWxhckVxdWFscyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0IHggPSAxMC4wOwotICAg
ICAgICAgICAgZmxvYXQgeSA9IHg7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSB5OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
cGVyYXRvci1taW51cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNiZWQ0NTg3ZTc0ZmYxMTZkMDBkZjg2NDhlODVlMWIxOGU3MjljMjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAg
QEAKLQotUEFTUyB2ZWN0b3JNaW51cwotUEFTUyB2ZWN0b3JOZWdhdGUKLVBBU1MgdmVjdG9yTWlu
dXNTY2FsYXIKLVBBU1MgdmVjdG9yTWludXNTY2FsYXIyCi1QQVNTIG1hdHJpeE1pbnVzCi1QQVNT
IG1hdHJpeE1pbnVzU2NhbGFyCi1QQVNTIG1hdHJpeE1pbnVzU2NhbGFyMgotUEFTUyBtYXRyaXhO
ZWdhdGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW1p
bnVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwMGRkNmJhY2Q1ZTFjYjllODc1OTE0ZmZi
Mzc1NTg5YzE0YTEyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEyNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPk1pbnVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAu
MDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JNaW51cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50MiB4ID0g
aW50MigxMCwgMjUpOwotICAgICAgICAgICAgaW50MiB5ID0gaW50MigyMCwgMzApOwotICAgICAg
ICAgICAgaW50MiByID0geSAtIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAg
ICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgMik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck5lZ2F0ZSA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkg
ewotICAgICAgICAgICAgaW50MiB4ID0gaW50MigxMCwgMjUpOwotICAgICAgICAgICAgeCA9IC14
OwotICAgICAgICAgICAgcmV0dXJuIHgueCArIHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IC0zNSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck1pbnVzU2NhbGFyID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAg
ICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLjAsIDI1LjApOwotICAgICAgICAgICAgeCA9IHggLSA1
LjA7Ci0gICAgICAgICAgICByZXR1cm4geC55IC8geC54OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgMjAvNSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3Rvck1pbnVz
U2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigtMTAuMCwgLTI1LjAp
OwotICAgICAgICAgICAgeCA9IDUuMCAtIHg7Ci0gICAgICAgICAgICByZXR1cm4geC55IC8geC54
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgMzAvMTUsIGVwc2lsb24pOwotfTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhNaW51cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0gICAgICAgICAgICBtID0gbSAtIG07Ci0gICAgICAgICAgICBpZiAobVsw
XVswXSA9PSAwICYmIG1bMF1bMV0gPT0gMCAmJiBtWzFdWzBdID09IDAgJiYgbVsxXVsxXSA9PSAw
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRy
aXhNaW51c1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBt
WzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7
Ci0KLSAgICAgICAgICAgIG0gPSBtIC0gMS4wOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9
PSAxOS4wICYmIG1bMF1bMV0gPT0gMjkuMCAmJiBtWzFdWzBdID09IDM5LjAgJiYgbVsxXVsxXSA9
PSA0OS4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5tYXRyaXhNaW51c1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAg
ICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0
MCwgNTApOwotCi0gICAgICAgICAgICBtID0gMC4wIC0gbTsKLQotICAgICAgICAgICAgaWYgKG1b
MF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYm
IG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeE5lZ2F0ZSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAtbTsKLQotICAgICAgICAgICAgaWYgKG1b
MF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYm
IG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YWM0MWI0ZDM5M2QzM2JlZTYwMGE5MTkw
N2JiMTBjMjNkNzFmOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yV2l0aG91
dFVuaW5mZXJyYWJsZVR5cGVWYXJpYWJsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci1vdmVybG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MTE4NTRjN2QyMWZjZmZkMTc1YzFkZjhmYjQ3NDg3YjYyZjgzZjA4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
cGVyYXRvci1vdmVybG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5PcGVyYXRvcisgb3ZlcmxvYWQuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JXaXRob3V0VW5pbmZl
cnJhYmxlVHlwZVZhcmlhYmxlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAg
ICAgIEZvbyBvcGVyYXRvcisoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBG
b28gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnggPSBhLnggKyBiLng7Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBGb28gYTsKLSAgICAgICAgICAgIGEueCA9IDY0NTsKLSAgICAgICAgICAg
IEZvbyBiOwotICAgICAgICAgICAgYi54ID0gLTM1OwotICAgICAgICAgICAgcmV0dXJuIChhICsg
YikueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNjQ1IC0gMzUpOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmNTdhZTdhNmMyMTE0YmIzNTZhOGU0MzI0ZGRkMWJhYTAzZjgwYTJlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDggKzAsMCBAQAotCi1QQVNTIHZlY3RvclBsdXMKLVBBU1MgdmVjdG9yUGx1c1NjYWxhcgotUEFT
UyB2ZWN0b3JQbHVzU2NhbGFyMgotUEFTUyBtYXRyaXhQbHVzCi1QQVNTIG1hdHJpeFRpbWVzU2Nh
bGFyCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L29wZXJhdG9yLXBsdXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg0NmJl
NTBiNjQ4MGM5OTQzMjgxYjVmNzVhZjIyNTI4NzZlYjQwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3ItcGx1cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+UGx1cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1cyA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0g
ICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxvYXQy
IHkgPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geSArIHg7Ci0gICAg
ICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCAzMC81NSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvclBsdXNTY2FsYXIgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZs
b2F0MiByID0geCArIDEwLjA7Ci0gICAgICAgICAgICByZXR1cm4gci55IC8gci54OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMC8yMCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRl
c3RzLnZlY3RvclBsdXNTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQy
KDEwLCAyMCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IDEwLjAgKyB4OwotICAgICAgICAgICAg
cmV0dXJuIHIueSAvIHIueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzAvMjAs
IGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhQbHVzID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAg
ZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAg
ICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG0yOwotICAg
ICAgICAgICAgbTJbMF0gPSBmbG9hdDIoLTIwLCAtMzApOwotICAgICAgICAgICAgbTJbMV0gPSBm
bG9hdDIoLTQwLCAtNTApOwotICAgICAgICAgICAgbSA9IG0gKyBtMjsKLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IDAgJiYgbVswXVsxXSA9PSAwICYmIG1bMV1bMF0gPT0gMCAmJiBtWzFdWzFd
ID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdHJpeFRpbWVzU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAg
ICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAs
IDUwKTsKLQotICAgICAgICAgICAgbSA9IG0gKyAxMC4wOwotCi0gICAgICAgICAgICBpZiAobVsw
XVswXSA9PSAzMC4wICYmIG1bMF1bMV0gPT0gNDAuMCAmJiBtWzFdWzBdID09IDUwLjAgJiYgbVsx
XVsxXSA9PSA2MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhUaW1lc1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwot
ICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZs
b2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gMTAuMCArIG07Ci0KLSAgICAgICAgICAg
IGlmIChtWzBdWzBdID09IDMwLjAgJiYgbVswXVsxXSA9PSA0MC4wICYmIG1bMV1bMF0gPT0gNTAu
MCAmJiBtWzFdWzFdID09IDYwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE2OTE1NmRjMzA5YjE2MTc1ODg3YTA0YWE5
ZmJjZDRmMTllODZhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yU3ludGF4Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxYjc3OTM1YmM2OGFlNmFmMzc0NjZkNmFiYzNlODRj
MjUzZDI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw0NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlNv
bWUgb3BlcmF0b3JzIHNob3VsZCBiZSBzeW50YXggZXJyb3JzLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLm9wZXJhdG9yU3ludGF4ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQg
b3BlcmF0b3IuZm9vKEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3IuZm9v
PShGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciYuZm9v
KEZvbykgeyBpbnQgeDsgcmV0dXJuICZ4OyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXShGb28s
IHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICBpbnQgb3BlcmF0b3JbXT0oRm9vLCB1aW50
KSB7IHJldHVybiA0MjsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAg
ICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10oRm9vLCB1
aW50KSB7IGludCB4OyByZXR1cm4gJng7IH0KLSAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItdGltZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhN2M4ZTVhNWZhMTgwNGRlY2Q0N2FmODEwZGVkODQxZmM4YTVmZjkxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4
ICswLDAgQEAKLQotUEFTUyB2ZWN0b3JUaW1lcwotUEFTUyB2ZWN0b3JUaW1lc1dpdGhTY2FsYXIK
LVBBU1MgdmVjdG9yVGltZXNXaXRoU2NhbGFyMgotUEFTUyBtYXRyaXhUaW1lcwotUEFTUyBtYXRy
aXhUaW1lc1NjYWxhcgotUEFTUyBtYXRyaXhUaW1lc1NjYWxhcjIKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDY0N2UwMjQ4Nzc2YTYxN2MzMWJkZDA4ODNlYmI1MGVjNTIyZDMxNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRpbWVzLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JUaW1lcyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigyLCA1KTsKLSAgICAg
ICAgICAgIGZsb2F0MiB5ID0gZmxvYXQyKDMsIDEwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0g
eSAqIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10pLCA2LzUwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yVGlt
ZXNXaXRoU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyMCk7
Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggKiAyLjA7Ci0gICAgICAgICAgICByZXR1cm4gci54
ICogci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMCAqIDQwLCBlcHNpbG9u
KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yVGltZXNXaXRoU2NhbGFyMiA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAg
ICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSAy
LjAgKiB4OwotICAgICAgICAgICAgcmV0dXJuIHIueCAqIHIueTsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgMjAgKiA0MCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eFRpbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBm
bG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQotICAg
ICAgICAgICAgZmxvYXQyeDIgbTI7Ci0gICAgICAgICAgICBtMlswXSA9IGZsb2F0MigtMS4wLCAt
MS4wKTsKLSAgICAgICAgICAgIG0yWzFdID0gZmxvYXQyKC0xLjAsIC0xLjApOwotCi0gICAgICAg
ICAgICBtID0gbSAqIG0yOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAmJiBt
WzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4
VGltZXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwot
Ci0gICAgICAgICAgICBtID0gbSAqIC0xLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09
IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFdWzFd
ID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhUaW1lc1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAg
ICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0
Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gLTEuMCAqIG07Ci0KLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAu
MCAmJiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWdu
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0MjA2
ZmEzZjQ1NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVj
dG9yLWFzc2lnbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQot
UEFTUyB2ZWN0b3JJbmRleEFzc2lnbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGI0ZTY2NDE2YmU2MTI0ZTYzMWU0OTM5ZThlMDNiZDM4NjdjOTlkYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9w
b3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAw
MTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJbmRleEFzc2lnbiA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50MiB4
OwotICAgICAgICAgICAgeFswXSA9IDIwOwotICAgICAgICAgICAgeFsxXSA9IDEwOwotICAgICAg
ICAgICAgeFs1MDAwXSA9IDQwOwotICAgICAgICAgICAgcmV0dXJuIHgueCAvIHgueSArIHhbNTAw
MF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCA0MCAvIDEwICsgNDApOwotfTsKLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTcyNTU3MTdjZDc0ZTkxNGY4Y2Y2NjViYTZl
ZmRjYmQwZWRhMzI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JJbmRleExv
YWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rv
ci1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxv
YWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiMzc0NjdhMDI3MDAwZDBh
MmUxMmZlYTAyNTg1YjhiYmI1YzQ3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxv
YWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9ySW5k
ZXhMb2FkID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB4LnggPSAyMDsKLSAg
ICAgICAgICAgIHgueSA9IDEwOwotICAgICAgICAgICAgeFs1MDAwXSA9IDQwOwotICAgICAgICAg
ICAgcmV0dXJuIHhbMF0gLyB4WzFdICsgeFs1MDAwXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IDQwLzEwICsgNDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHktZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2EzOTgwYWFhODE4MWQxMDQw
YTNiNGRhNTVmOGEzMTkzNzhjYzI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBvcGVyYXRvclhZCi1Q
QVNTIGFzc2lnbk9wZXJhdG9yWFkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLXh5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
eHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdjYTVhOGMwODkwNjVhMTEw
ZWYyNTlkNDc3MzkxNzg4M2Q5ZTk5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHkuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+eHkuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0g
MC4wMDAxOwotCi13aGxzbFRlc3RzLm9wZXJhdG9yWFkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGlmIChib29s
Mih0cnVlLCBmYWxzZSkueHkueCkKLSAgICAgICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkgewotICAgICAgICAg
ICAgaWYgKGJvb2wyKHRydWUsIGZhbHNlKS55eC55KQotICAgICAgICAgICAgICAgIHJldHVybiAy
NDsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooKSB7
Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDIwLCAxMCk7Ci0gICAgICAgICAgICB4ID0geC54
eTsKLSAgICAgICAgICAgIHJldHVybiB4LnggLSB4Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
KSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJiYXIiLCBbXSksIDI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiYmF6IiwgW10pLCAxMCk7Ci19OwotCi13aGxzbFRlc3RzLmFzc2lnbk9wZXJh
dG9yWFkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbyhpbnQgYSwgaW50IGIpIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHgu
eHkgPSBpbnQyKGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIHgueCAtIHgueTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMjApLCBtYWtlSW50KDEwKV0pLCAxMCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEw
KSwgbWFrZUludCgyMCldKSwgLTEwKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3Zl
cmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1ZWY3YzFmZGNiOTVl
NjY2YmY2YmU3NmU0ZDhmYWQ1OWFhMmYzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgaW50T3ZlcmxvYWRS
ZXNvbHV0aW9uCi1QQVNTIGludE92ZXJsb2FkUmVzb2x1dGlvblJldmVyc2VPcmRlcgotUEFTUyBu
b3RFcXVhbHNPdmVybG9hZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
b3ZlcmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzk2YWU2NGQ0NTQ0MGMwMjQxYzM1NzFhNDVh
OWU1MWY0NmJkY2IwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5PdmVy
bG9hZC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pbnRPdmVybG9h
ZFJlc29sdXRpb24gPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBpbnQgZm9vKHVpbnQpIHsgcmV0
dXJuIDI7IH0KLSAgICAgICAgaW50IGZvbyhmbG9hdCkgeyByZXR1cm4gMzsgfQotICAgICAgICBp
bnQgYmFyKCkgeyByZXR1cm4gZm9vKDQyKTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMSk7Ci19Ci0KLXdobHNs
VGVzdHMuaW50T3ZlcmxvYWRSZXNvbHV0aW9uUmV2ZXJzZU9yZGVyID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhmbG9hdCkgeyByZXR1cm4gMzsg
fQotICAgICAgICBpbnQgZm9vKHVpbnQpIHsgcmV0dXJuIDI7IH0KLSAgICAgICAgaW50IGZvbyhp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICAgICAgaW50IGJhcigpIHsgcmV0dXJuIGZvbyg0Mik7IH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJiYXIiLCBbXSksIDEpOwotfQotCi13aGxzbFRlc3RzLm5vdEVxdWFsc092ZXJsb2FkID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oRm9vLCBGb28pIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BsdXMt
ZXF1YWxzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4MThi
NTA3Mjc1MjY0OGFiMmI3OWQ4ZjUzNzZkNDhlMGNjNjZlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1l
cXVhbHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mg
cGx1c0VxdWFscwotUEFTUyBwbHVzRXF1YWxzUmVzdWx0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3BsdXMtZXF1YWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMDli
NzI0M2NhZTQyZDllZTY1MzRmYzg4ZDIxYjkyYjliMTA4OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BsdXMt
ZXF1YWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNv
bnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgb3ZlcnJpZGUgc3Vic2NyaXB0cy48L3RpdGxlPgot
PHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0
IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgeCArPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMucGx1
c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICs9IDQy
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5N2IyNGYzMTE4NzU0ZmVkYTMxNzY5ZDdh
ZWNkZjlkNGY3ZDc1ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwb2ludGVyVG9Qb2lu
dGVyCi1QQVNTIHBvaW50ZXJUb01lbWJlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiODU1MGI1ZmY2MGM2YWMyN2NkNTZjNWYxODFiN2NjNWM5N2UxYTMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3BvaW50ZXItc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhh
cm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucG9pbnRlclRv
UG9pbnRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRocmVh
ZCBpbnQqIHAgPSAmeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqKiBwcCA9ICZwOwotICAgICAg
ICAgICAgaW50KnRocmVhZCp0aHJlYWQgcXEgPSBwcDsKLSAgICAgICAgICAgIGludCByZXN1bHQg
PSAwOwotICAgICAgICAgICAgeCA9IDQyOwotICAgICAgICAgICAgKnAgPSA3NjsKLSAgICAgICAg
ICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgKipwcCA9IDM5OwotICAgICAgICAgICAgcmVz
dWx0ICs9IHg7Ci0gICAgICAgICAgICAqKnFxID0gODM7Ci0gICAgICAgICAgICByZXN1bHQgKz0g
eDsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGF3
YWl0IGNoZWNrRmFpbChwcm9ncmFtKTsKLX0KLQotd2hsc2xUZXN0cy5wb2ludGVyVG9NZW1iZXIg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0MyB4
OwotICAgICAgICAgICAgICAgIHRocmVhZCBmbG9hdCogeSA9ICZ4WzFdOwotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0M3gz
IHg7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGZsb2F0MyogeSA9ICZ4WzFdOwotICAgICAgICAg
ICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXBy
ZWZpeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVm
aXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDQ0Mzk2NzE0
NGZiNWUwOTc0MGZmMTNiMzNmNTgyMWRmNTM4NzQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXBy
ZWZpeC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLVBBU1Mg
cHJlZml4UGx1c1BsdXMKLVBBU1MgcHJlZml4UGx1c1BsdXNSZXN1bHQKLVBBU1MgcG9zdGZpeFBs
dXNQbHVzCi1QQVNTIHBvc3RmaXhQbHVzUGx1c1Jlc3VsdAotUEFTUyBwcmVmaXhNaW51c01pbnVz
Ci1QQVNTIHByZWZpeE1pbnVzTWludXNSZXN1bHQKLVBBU1MgcG9zdGZpeE1pbnVzTWludXMKLVBB
U1MgcG9zdGZpeE1pbnVzTWludXNSZXN1bHQKLVBBU1MgcGx1c0VxdWFscwotUEFTUyBwbHVzRXF1
YWxzUmVzdWx0Ci1QQVNTIG1pbnVzRXF1YWxzCi1QQVNTIG1pbnVzRXF1YWxzUmVzdWx0Ci1QQVNT
IHRpbWVzRXF1YWxzCi1QQVNTIHRpbWVzRXF1YWxzUmVzdWx0Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUzMmY3Y2M4ZWUxMTY2Y2EwMGExZjE1OTZiODlmNWZjZjQ3NTJhYzAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnByZWZpeFBsdXNQbHVzID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQg
eCkKLSAgICAgICAgewotICAgICAgICAgICAgKyt4OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjUpOwotfQotCi13aGxzbFRlc3RzLnBy
ZWZpeFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICsr
eDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVz
dHMucG9zdGZpeFBsdXNQbHVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeCsrOwotICAg
ICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjUp
OwotfQotCi13aGxzbFRlc3RzLnBvc3RmaXhQbHVzUGx1c1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB4Kys7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCld
KSwgNjQpOwotfQotCi13aGxzbFRlc3RzLnByZWZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICAtLXg7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4TWludXNNaW51
c1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtLXg7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjMpOwotfQotCi13aGxzbFRlc3RzLnBvc3RmaXhN
aW51c01pbnVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeC0tOwotICAgICAgICAgICAg
cmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjMpOwotfQotCi13
aGxzbFRlc3RzLnBvc3RmaXhNaW51c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHgtLTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NCk7
Ci19Ci0KLXdobHNsVGVzdHMucGx1c0VxdWFscyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHggKz0gNDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDM4NSldKSwgMzg1ICsgNDIpOwotfQotCi13aGxzbFRlc3RzLnBsdXNFcXVhbHNSZXN1bHQg
PSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGlu
dCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCArPSA0MjsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1ICsgNDIpOwotfQotCi13aGxzbFRlc3RzLm1pbnVz
RXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4IC09IDQyOwotICAgICAgICAgICAg
cmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAtIDQyKTsK
LX0KLQotd2hsc2xUZXN0cy5taW51c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHggLT0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSks
IDM4NSAtIDQyKTsKLX0KLQotd2hsc2xUZXN0cy50aW1lc0VxdWFscyA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewot
ICAgICAgICAgICAgeCAqPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKiA0Mik7Ci19Ci0KLXdobHNsVGVzdHMudGltZXNF
cXVhbHNSZXN1bHQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICo9IDQyOwot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKiA0Mik7Ci19Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOTMzOTQyZTgxZmQ4MTk2
ZTYxYjgwMTczMWZhNjFjODkzMTdmZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRp
b24tb3JkZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi1Q
QVNTIGRvbnRFdmFsdWF0ZVR3aWNlCi1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlMgotUEFTUyBkb250
RXZhbHVhdGVUd2ljZTMKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U0Ci1QQVNTIGRvbnRFdmFsdWF0
ZVR3aWNlNQotUEFTUyBkb250RXZhbHVhdGVUd2ljZTYKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U3
Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlOAotUEFTUyBkb250RXZhbHVhdGVUd2ljZTkKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24tb3Jk
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9y
ZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YzI4NzE5MWE3NzgzNGJl
YTg2NzFlMzk1NTc4NmI5YzhlMzdjYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRp
b24tb3JkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmV2YWx1YXRpb24gb3JkZXIgYW5kIHRpbWVzLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFyKHRo
cmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAg
ICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBvbGQ7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDA7Ci0gICAgICAg
ICAgICBpbnRbNDJdIGFycjsKLSAgICAgICAgICAgIGFyclswXSA9IDQyOwotCi0gICAgICAgICAg
ICBpbnQgcmVzdWx0ID0gYXJyW2JhcigmeCldOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9
PSA0MiAmJiB4ID09IDE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFyKHRocmVhZCB1aW50W10gYXJyLCB1aW50IGlu
ZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICB1aW50IG9sZCA9ICpwdHI7Ci0g
ICAgICAgICAgICBhcnJbaW5kZXhdID0gb2xkOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAx
OwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIHVpbnRbM10gaW5kaWNl
czsKLQotICAgICAgICAgICAgdWludFs0XVs0XVs0XSBhcnI7Ci0KLSAgICAgICAgICAgIGFyclti
YXIoQGluZGljZXMsIDAsICZ4KV1bYmFyKEBpbmRpY2VzLCAxLCAmeCldW2JhcihAaW5kaWNlcywg
MiwgJngpXSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGFyclswXVswXVswXSA9PSA0MgotICAg
ICAgICAgICAgICAgICYmIGluZGljZXNbMF0gPT0gMSAKLSAgICAgICAgICAgICAgICAmJiBpbmRp
Y2VzWzFdID09IDIgCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1syXSA9PSAzCi0gICAgICAg
ICAgICAgICAgJiYgeCA9PSA0OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlMyA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICB1aW50WzJdWzJdIGJhc2UodGhyZWFkIHVpbnRbXSBh
cnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xk
ID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRy
ID0gKnB0ciArIDE7Ci0gICAgICAgICAgICB1aW50WzJdWzJdIHJlc3VsdDsKLSAgICAgICAgICAg
IHJlc3VsdFswXVswXSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fQotCi0gICAgICAgIHVpbnQgYmFyKHRocmVhZCB1aW50W10gYXJyLCB1aW50IGluZGV4LCB0aHJl
YWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICB1aW50IG9sZCA9ICpwdHI7Ci0gICAgICAgICAg
ICBhcnJbaW5kZXhdID0gb2xkOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIHVpbnRbM10gaW5kaWNlczsKLQotICAg
ICAgICAgICAgdWludCByZXN1bHQgPSBiYXNlKEBpbmRpY2VzLCAwLCAmeClbYmFyKEBpbmRpY2Vz
LCAxLCAmeCldW2JhcihAaW5kaWNlcywgMiwgJngpXTsKLQotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdCA9PSA0MgotICAgICAgICAgICAgICAgICYmIGluZGljZXNbMF0gPT0gMQotICAgICAgICAg
ICAgICAgICYmIGluZGljZXNbMV0gPT0gMiAKLSAgICAgICAgICAgICAgICAmJiBpbmRpY2VzWzJd
ID09IDMKLSAgICAgICAgICAgICAgICAmJiB4ID09IDQ7Ci0gICAgICAgIH0KLSAgICBgOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwg
W10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U0ID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgYmFyKHRocmVhZCB1
aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAgICpw
dHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBvbGQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnRbMl0gYXJyOwotCi0gICAgICAgICAg
ICB1aW50IHggPSAxOwotCi0gICAgICAgICAgICBhcnJbYmFyKCZ4KV0gKz0gNjY2OwotCi0gICAg
ICAgICAgICByZXR1cm4gYXJyWzFdID09IDY2NiAmJiB4ID09IDI7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U1ID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHRocmVhZCB1aW50
KiBnZXRQdHIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAx
OwotICAgICAgICAgICAgcmV0dXJuIHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLSAgICAgICAgICAgIHVpbnQgcmVzdWx0ID0g
KCpnZXRQdHIoJngpKSsrOwotICAgICAgICAgICAgcmV0dXJuIHggPT0gMyAmJiByZXN1bHQgPT0g
MjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5k
b250RXZhbHVhdGVUd2ljZTYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgdGhyZWFkIHVpbnQqIGdldFB0cih0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAg
ICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAg
ICAgICAgdWludCByZXN1bHQgPSArKygqZ2V0UHRyKCZ4KSk7Ci0gICAgICAgICAgICByZXR1cm4g
eCA9PSAzICYmIHJlc3VsdCA9PSAzOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlNyA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWludFtdIGdldEFycih0aHJlYWQg
dWludFtdIHZhbHVlLCB0aHJlYWQgdWludFtdIGluZGljZXMsIHVpbnQgaW5kZXgsIHRocmVhZCB1
aW50KiBwdHIpIHsKLSAgICAgICAgICAgIGluZGljZXNbaW5kZXhdID0gKnB0cjsKLSAgICAgICAg
ICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHVpbnQgZ2V0VmFsdWUodWludCByZXQsIHRocmVhZCB1aW50W10gaW5kaWNl
cywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tp
bmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAg
cmV0dXJuIHJldDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAg
ICAgdWludCB4ID0gMTsKLSAgICAgICAgICAgIHVpbnRbM10gYXJyOwotICAgICAgICAgICAgdWlu
dFsxXSB2YWx1ZTsKLSAgICAgICAgICAgIHZhbHVlWzBdID0gMTsKLQotICAgICAgICAgICAgZ2V0
QXJyKEB2YWx1ZSwgQGFyciwgMCwgJngpW2dldFZhbHVlKDAsIEBhcnIsIDEsICZ4KV0gKz0gZ2V0
VmFsdWUoNjY1LCBAYXJyLCAyLCAmeCk7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSA0Ci0gICAg
ICAgICAgICAgICAgJiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiBhcnJbMV0gPT0g
MgotICAgICAgICAgICAgICAgICYmIGFyclsyXSA9PSAzCi0gICAgICAgICAgICAgICAgJiYgdmFs
dWVbMF0gPT0gNjY2OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlOCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICB1aW50IGdldFZhbHVlKHVpbnQgcmV0LCB0aHJlYWQgdWludFtd
IGluZGljZXMsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIGlu
ZGljZXNbaW5kZXhdID0gKnB0cjsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAg
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgdWludFtdIGdl
dEFycih0aHJlYWQgdWludFtdIHZhbHVlLCB0aHJlYWQgdWludFtdIGluZGljZXMsIHVpbnQgaW5k
ZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIGluZGljZXNbaW5kZXhdID0gKnB0
cjsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4
ID0gMTsKLSAgICAgICAgICAgIHVpbnRbM10gYXJyOwotICAgICAgICAgICAgdWludFsxXSB2YWx1
ZTsKLSAgICAgICAgICAgIHZhbHVlWzBdID0gMTsKLQotICAgICAgICAgICAgZ2V0QXJyKEB2YWx1
ZSwgQGFyciwgMCwgJngpW2FycltnZXRWYWx1ZSgwLCBAYXJyLCAxLCAmeCldXSArPSBnZXRWYWx1
ZSg2NjUsIEBhcnIsIDIsICZ4KTsKLQotICAgICAgICAgICAgcmV0dXJuIHggPT0gNAotICAgICAg
ICAgICAgICAgICYmIGFyclswXSA9PSAxCi0gICAgICAgICAgICAgICAgJiYgYXJyWzFdID09IDIK
LSAgICAgICAgICAgICAgICAmJiBhcnJbMl0gPT0gMwotICAgICAgICAgICAgICAgICYmIHZhbHVl
WzBdID09IDY2NjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTkgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgdGhyZWFkIHVpbnRbMV0qIGdldFZhbHVlKHRocmVhZCB1aW50WzFd
KiBhcnIsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0
cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0
ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIGFycjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLSAgICAgICAgICAgIHVp
bnRbMV0gYXJyOwotICAgICAgICAgICAgdWludFsxXSB2YWx1ZTsKLSAgICAgICAgICAgIHZhbHVl
WzBdID0gMTsKLQotICAgICAgICAgICAgKCpnZXRWYWx1ZSgmdmFsdWUsIEBhcnIsIDAsICZ4KSlb
MF0gKz0gNjY1OwotCi0gICAgICAgICAgICByZXR1cm4geCA9PSAyCi0gICAgICAgICAgICAgICAg
JiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiB2YWx1ZVswXSA9PSA2NjY7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQt
bW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpv
bWJpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFiNGQ0NGRmYzY0NTgw
NDUyNDYxYjJkODEyNjVlZjc5N2M2MjYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3Jp
dGUtaGlnaC16b21iaWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlclNvdXJjZSA9IGAKLWJvb2wgZmlsbCh0aHJlYWQgZmxvYXQ0eDQqIG1hdCwgZmxvYXQgdmFs
dWUpCi17Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDQ7
IGkgPSBpICsgMSkgewotICAgICAgICAgICAgcmVzdWx0W2ldID0gZmxvYXQ0KHZhbHVlLCB2YWx1
ZSwgdmFsdWUsIHZhbHVlKTsKLSAgICB9Ci0gICAgKm1hdCA9IHJlc3VsdDsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNo
YWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJ
RCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdDR4NCBtYXQ7Ci0gICAgZmlsbCgm
bWF0LCA0KTsKLQotICAgIGZsb2F0NCB2ZWM7Ci0gICAgdmVjWzBdICs9IG1hdFswXVswXSArIG1h
dFswXVsxXSArIG1hdFszXVsyXTsKLQotICAgIGZsb2F0IHZhbHVlID0gNDI7Ci0gICAgdmFsdWUg
Kz0gdmVjWzBdOwotCi0gICAgbWF0WzBdWzBdICs9IChtYXRbMF1bMF0gKz0gKHZhbHVlICs9IG1h
dFswXVswXSkpOwotCi0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gbWF0WzBdWzBdOwot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3Rv
cmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVh
dGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBM
YXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGlu
ZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxp
bmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVz
YWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1
ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
MF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwg
c2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJj
ZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1
ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwot
ICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNB
cnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNjYpCi0gICAg
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMDU2YTNhZmJmZTNmOWYwOTc1OTc4NmYwZjI2MjdiMzcz
MTM4YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiBy
ZWdpc3Rlcih1MCkpIHsKLSAgICBidWZmZXJbMF0gPSAxOwotICAgIGJ1ZmZlclsxXSA9IGJ1ZmZl
clswXSsrOwotCi0gICAgYnVmZmVyWzJdID0gMTsKLSAgICBidWZmZXJbM10gPSArK2J1ZmZlclsy
XTsKLQotICAgIGJ1ZmZlcls0XSA9IDE7Ci0gICAgYnVmZmVyWzRdICs9IDU7Ci0KLSAgICBidWZm
ZXJbNV0gPSAxOwotICAgIGJ1ZmZlcls1XSAqPSA3OwotCi0gICAgaW50IHRvdGFsID0gMTQ7Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSArPSAyKSB7Ci0gICAgICAgIHRvdGFsICs9IGk7
Ci0gICAgfQotICAgIGJ1ZmZlcls2XSA9IHRvdGFsOwotCi0gICAgdG90YWwgPSAxNDsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAgICAgdG90YWwgKz0gaTsKLSAgICB9
Ci0gICAgYnVmZmVyWzddID0gdG90YWw7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydCgp
IHsKLSAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRl
cigpOwotICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwot
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25z
dCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdF
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0ge2J1ZmZlcjogYnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
e2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRH
cm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0
IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBj
b25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c1swXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNbMV0gPT0gMQotICAgICAgICAm
JiByZXN1bHRzWzJdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1szXSA9PSAyCi0gICAgICAgICYm
IHJlc3VsdHNbNF0gPT0gNgotICAgICAgICAmJiByZXN1bHRzWzVdID09IDcKLSAgICAgICAgJiYg
cmVzdWx0c1s2XSA9PSAzNAotICAgICAgICAmJiByZXN1bHRzWzddID09IDU5KQotICAgICAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIGJ1
ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvcmVjdXJzaXZlLXN0cnVjdHMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTYwODYyNjUxYTliYTNlMDM1ZTk5YmZkZjY3ZmY5
NzVkMzkyZDJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBtdXR1YWxseVJlY3Vyc2l2ZVN0
cnVjdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVjdXJzaXZlLXN0
cnVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzdkZmU4ZGMyM2I3YmY2NWNjYWU4
OWJiODdhYjhmZWY5Zjk1Zjc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLm11dHVhbGx5UmVjdXJzaXZlU3RydWN0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAg
ICAgICAgICAgIEJhciBiYXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3QgQmFy
IHsKLSAgICAgICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci0KLS8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NjY6IFRoaXMgc2hvdWxkIGNvbXBpbGUuCi0vLyB3aGxzbFRlc3RzLm11dHVh
bGx5UmVjdXJzaXZlU3RydWN0V2l0aFBvaW50ZXJzQnJva2VuID0gYXN5bmMgKCkgPT4KLS8vIHsK
LS8vICAgICBsZXQgcHJvZ3JhbSA9IGAKLS8vICAgICAgICAgc3RydWN0IEZvbyB7Ci0vLyAgICAg
ICAgICAgICB0aHJlYWQgQmFyKiBiYXI7Ci0vLyAgICAgICAgICAgICBpbnQgZm9vOwotLy8gICAg
ICAgICB9Ci0vLyAgICAgICAgIHN0cnVjdCBCYXIgewotLy8gICAgICAgICAgICAgdGhyZWFkIEZv
byogZm9vOwotLy8gICAgICAgICAgICAgaW50IGJhcjsKLS8vICAgICAgICAgfQotLy8gICAgICAg
ICBpbnQgZm9vKCkKLS8vICAgICAgICAgewotLy8gICAgICAgICAgICAgRm9vIGZvbzsKLS8vICAg
ICAgICAgICAgIEJhciBiYXI7Ci0vLyAgICAgICAgICAgICBmb28uZm9vID0gNTY0OwotLy8gICAg
ICAgICAgICAgYmFyLmJhciA9IDUzOwotLy8gICAgICAgICAgICAgcmV0dXJuIGZvby5iYXItPmJh
ciAtIGJhci5mb28tPmZvbzsKLS8vICAgICAgICAgfQotLy8gICAgIGA7Ci0vLyAgICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci0v
LyB9Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFi
bGUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0
MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLWxv
Y2FsLXZhcmlhYmxlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0
ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1
cm4tbG9jYWwtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4t
bG9jYWwtdmFyaWFibGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjcwYzI4
M2ZlNjhiNzY1ZGY2MjYwMmQ3M2QxNmI0YjIwMDI5ZjMwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJu
LWxvY2FsLXZhcmlhYmxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotZmxv
YXQgY29weShmbG9hdCB2KSB7Ci0gICAgZmxvYXQgbG9jYWwgPSB2OwotICAgIHJldHVybiBsb2Nh
bDsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91
dCByZXN1bHQ7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQu
c2hhZGUgPSBjb3B5KHNoYWRlKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwot
fQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1p
dGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9u
U3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBh
bHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVu
ZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hh
ZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3Qg
YXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVy
aXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0
LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
MC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAx
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJp
bmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRH
cm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3
YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5j
cmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzog
MCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVu
dDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFy
Iiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhT
dGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVy
UGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhC
dWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOWFhZDA1NTY1MmIwZDViZjFiNDk3Y2U3MDUy
NGI2MmU0MDhjZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyByZXR1cm5JZgotUEFTUyBy
ZXR1cm5SZWZlcmVuY2VUb1NhbWVQYXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9QYXJh
bWV0ZXJXaXRoRGlmZmVyZW50RnVuY3Rpb25zCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvUGFyYW1l
dGVyCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZVdpdGhOZXN0aW5nCi1QQVNT
IHJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZQotUEFTUyByZXR1cm5JbnRMaXRlcmFsVWlu
dAotUEFTUyByZXR1cm5JbnRMaXRlcmFsRmxvYXQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTM5ZjhiMTQwYWE3MzM5YzRiODI1M2M2ZGZhNGEyN2EwMjY3NmU4NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3Qg
aGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5yZXR1cm5J
ZiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50
IHkgPSA2OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZv
byhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAg
ICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4geTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB5ID0gODsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAgICBpZiAo
eCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAg
ICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHJldHVybiA4OwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzKV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDEw
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoNSldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSks
IDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUludCg4KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDkpXSksIDEwKTsKLQotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYg
KHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHggPT0gOSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IDg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgzKV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg2KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg5KV0pLCA5KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkgPSA2
OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMTE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAg
ICAgaWYgKHggPT0gNykKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDg7Ci0gICAgICAgICAgICBy
ZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDYpOwotfTsKLQotd2hs
c2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1NhbWVQYXJhbWV0ZXIgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gcGx1cyhiYXIoNSksIGJhcig3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
bnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKnggKyAqeTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJh
cihpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbXSksIDE0KTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuUmVmZXJlbmNlVG9QYXJh
bWV0ZXJXaXRoRGlmZmVyZW50RnVuY3Rpb25zID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICpiYXIoMTApICsgKmJheigyMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBi
YXIoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmeDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRocmVhZCBpbnQqIGJheihpbnQgeSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZ5OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwKTsKLX07Ci0KLXdobHNsVGVz
dHMucmV0dXJuUmVmZXJlbmNlVG9QYXJhbWV0ZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oYm9vbCBjb25kaXRpb24pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAqYmFyKGNvbmRpdGlvbiwgMSwgMik7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aHJlYWQgaW50KiBiYXIoYm9vbCBjb25kaXRpb24sIGludCBhLCBpbnQgYikKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbiA/ICZhIDogJmI7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pLCAyKTsK
LX07Ci0KLXdobHNsVGVzdHMucmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlV2l0aE5lc3Rp
bmcgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcigpICsgKmJheigpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IGEgPSAyMDsKLSAgICAgICAgICAgIHJldHVybiAmYTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRocmVhZCBpbnQqIGJheigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBhID0gMjI7Ci0g
ICAgICAgICAgICByZXR1cm4gJmE7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIpOwotfTsK
LQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb0xvY2FsVmFyaWFibGUgPSBhc3luYyAoKSA9
PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gKmJhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGlu
dCogYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGEgPSA0MjsKLSAgICAgICAgICAg
IHJldHVybiAmYTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRl
c3RzLnJldHVybkludExpdGVyYWxVaW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gInVpbnQgZm9vKCkgeyByZXR1cm4gNDI7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRl
c3RzLnJldHVybkludExpdGVyYWxGbG9hdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9ICJmbG9hdCBmb28oKSB7IHJldHVybiA0MjsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTEwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIx
NWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTEwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGViODQzMTJmZDUwMGJhNTUxMmM3NzZkZWFkZjFkMzQ2MWVmNzNjZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRl
eFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9u
OwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBp
bnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1Zf
UG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyB4OwotICAgIHJldHVybiBmbG9hdDQo
MSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAs
IDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTExLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJh
NDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTExLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlMWYzNWM1ODQ1NTYxZjI0MTVlZWRkNWZkYjFjOTI3
NmRjZTdjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0
IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIGY7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVy
dGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9u
U3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBs
ZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
N10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
ImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVT
d2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9
IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVW
aWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRh
Y2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6
IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVk
fV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0
YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTItZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
Mi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQ0Yjk2ZjQ3NmQw
ODNhM2NjZjUyZjBlNTRjMmQ4YmIyY2NjOTA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZs
b2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bv
c2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAgdgotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsK
LSAgICBGb28gZiA9IEZvby52OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRl
OiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lu
cHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owot
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
OF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
NV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9y
ID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXco
KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9Owot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVW
aWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9y
ZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQg
PSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVu
dHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTEzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYx
MThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGIzNDEyMjk0ZjAwMzU5NzJmMjE3ZmE0MjMwNzFkMThkNmE0MmM1ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNv
dXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBl
ZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgx
LCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
dmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1
bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsK
LSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29u
c3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25l
In07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhh
QmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0
cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25z
dCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBj
b25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1
ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1
ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJh
eUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
OV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3
YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5j
cmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzog
MCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVu
dDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFy
Iiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhT
dGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVy
UGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0
M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGU2ZDkzNDdkMTM5Mzg4M2U2YWYyNjkxODk0MjMwMDNi
ZjdmNmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci12
ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2Ug
PSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYs
IGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07
Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVs
bDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRl
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3
NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRy
YXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg5NDJiNzI3NTk4NDgyOWRjOThiNDM4ZmRiZWIxMDQ0ODU3ZGVjZDguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2Ug
PSBgCi1lbnVtIEZvbyB7Ci0gICAgeAotfQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4g
cG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZv
byB7Ci0gICAgeAotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xNi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQz
YzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MDE1MDkwODVhNzUwODEwNmViZDZmYzc2NjczNDA4OGU5
MzZhOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE2Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJldHVybiBm
bG9hdDQoMCwgMCwgMCwgMCk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxw
ZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9
ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250
RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9
IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1
dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
PSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJp
emF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQs
IHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBm
b3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25m
aWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29s
b3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVU
YXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xv
cjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5k
UGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTctZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xNy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTcuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0xNy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTFiMTVl
NzY3N2FkZjJkMGYyMWNjNzc5ZGJlYzJiZTI0NmNiOGQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdHlw
ZWRlZiBGb28gPSBmbG9hdDsKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9u
OwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBm
bG9hdDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHggPSAxOwotICAgIHJldHVybiBm
bG9hdDQoeCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3Vy
Y2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hh
ZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwot
ICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2Rl
OiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0i
LCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3Jp
dGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNv
bnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0g
ICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07
Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2
ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVm
ZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEz
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6
IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0
dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6
ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNj
cmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAg
IGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTgtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0
ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjOGI4N2FmNTg5YzVlM2M4ZjAzMTU2Mjhh
MGNiNzcyODY3ODQ2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGZsb2F0
IHg7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGZsb2F0IHg7
Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1Zf
UG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyBmOwotICAgIGYueCA9IDE7Ci0gICAg
cmV0dXJuIGZsb2F0NChmLngsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChk
ZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVu
dFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhT
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFn
bWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJm
cmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xl
LXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ci
LCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBH
UFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAg
ICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZs
b2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0
dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4
SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhT
dGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0
ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291
bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVY
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1
Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJn
cmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBD
aGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dh
cENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcg
PSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5k
RW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0
IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1l
bnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVs
bCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2lu
UmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZl
cnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0g
ICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRl
dmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5LWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MjUwOWUyOGFiYTVmNjU4
NDdkMmNmYmFlYjFmYTAxOTA5NGI5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0g
ICAgeAotfQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQot
Y29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAgeCA9IDAsCi0g
ICAgeSA9IDEKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgaW50IHkgPSBpbnQoRm9vLnkp
OwotICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeSksIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJp
YnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDdiMzY3M2Vm
YzBjN2Y4ODZlYjM1ZDdhMjNhMDQwNjVlNDcxOWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXgg
ZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
UG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNo
YWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigpOwot
fQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVy
dGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0
ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRT
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0
cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9
IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRz
fTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZl
VG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0
YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRl
eHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3Jp
cHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hh
aW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRW
aWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAx
fTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0
dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAi
c3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0s
IFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFu
ZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2Fk
MzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGNiZmY1ZjBl
M2ZiMTgyYmY5YTlmZWQ2YzFiNjBkNDgyMmZlM2Y3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0
ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDog
U1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgx
LCAxLCAxLCAxKTsKLX0KLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigpOwot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdt
ZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9
IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlu
cHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVz
aEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAg
ICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2Ew
ZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5NDNlZTM2ZWRkYmZmN2UwNTAwOGU1Yzk3YjgwNTIxYTE4ZTgzZDdhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0yMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsK
LX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50
OwotdHlwZWRlZiBGb28gPSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0
YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVu
dFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxs
TW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xv
cldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAg
ICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0
ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQg
PSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwg
cHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRo
U3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5w
b3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMGQ4MmMxMzQ4Yzk2NThkMWFjNDc5YWFm
ODg0MzFiMjI3YmNlMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNj
cmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0g
YAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsK
LX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsK
LX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1
c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0K
LXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAg
ICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWI4ODkzMWVhN2I5ZjhlZTk1YzNhMGUxYTRiNzM0YzkwYmU3NDRlNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4
U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1lbnVtIEZvbyB7Ci0gICAg
eAotfQotZW51bSBGb28gewotICAgIHgKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2
aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcw
NzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
YzYzZGE2NjQ1YWQwZDFkMzJjZDU0ODRlNDIzNWY3YjhmMzBmOWQ3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0g
YAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRl
KDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3Qg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdCBzYXR1cmF0ZShmbG9hdCB4LCBmbG9hdCB5
KSB7Ci0gICAgcmV0dXJuIDE7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2F0dXJhdGUoMywgNCksIHNhdHVyYXRlKDIpLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEx
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29s
dmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJD
b2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNT
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NmRmNTZmOWQ4ZjljMzc2ZTM2Yjkx
NzhmYzJkNWI4NDM0ZTE3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0
ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsK
LSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcjIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQyNWU5MzBmODdmZmVhNjJiMjc3
YTgzN2M5ZmVhNDdiODc1YjRhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEw
NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmlt
aXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVu
Y2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4
QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5E
ZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3
YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9y
QXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2Qx
ZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTI3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NDJm
ZWU1NTU2ZTk1NDE1ODM5YmJlYWFiMmFiYWE5NzY1YzI0OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAK
LXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29uc3Qg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVy
biBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24sIGJvb2wgaXNGb250RmFjZSA6IFNWX0lzRnJv
bnRGYWNlKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdt
ZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9
IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlu
cHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVz
aEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAg
ICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZi
MGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
My5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmRjZjkyMTVkY2M4YTk4N2Q5ODkwNGZiY2NjNzI0NTVjNmUzNzdiMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGhlbHBlcigpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFn
ZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRT
aGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7
Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1v
ZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9y
bSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JX
cml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAg
Y29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsK
LSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVd
fTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0g
e3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHBy
aW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0
ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5l
TGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9w
RXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
dGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
NC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJjYWJiY2MxODg0ZGI5NjY0M2Q3ODk4NjVkYWFkZDE3
NWY5NDY3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1j
b25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGludDsKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Q
b3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hh
ZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geDsKLSAgICByZXR1
cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2
aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21l
bnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJh
Z21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1z
dHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3Iiwg
Y3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdi
YTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BV
Q29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAg
Ci0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRy
aWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElu
cHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZp
Y2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtNS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5YThiODViOThhNDI2MzkzYzcxNzE5YjEx
NmNhOTc5ZGE5ZTM3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQg
eDsKLX0KLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQot
Y29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAg
IEZvbyB4OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0
dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhT
dGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0
ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291
bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAg
ICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA4MmFmYTUw
MjRhMzhjOTIxN2Y2MWU1MTc0NzhkMzM5YTRkNzQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0g
Rm9vIHsKLSAgICB2Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsK
LX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBm
cmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQg
MCB7Ci0gICAgRm9vIHggPSBGb28udjsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdt
ZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9
IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlu
cHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVz
aEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAg
ICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtNy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRk
YmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzc3ZGI2NDI1MTk3NDJjZmQ0NWMxYzkyNTNjNjk0
MjhkNzE2MGRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1mbG9hdDQgaGVscGVyKCkgewotICAgIHJldHVy
biBmbG9hdDQoMCwgMCwgMCwgMCk7Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9h
dDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBo
ZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGhlbHBlcigpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVS
VEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
Z3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDog
ImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0g
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZp
ZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNv
bnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7
Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAg
IGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTguaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGJkMDVhZGM5OGM1MGI4NzQzNjIzYTNhODIwYzI3MmNmYWM4YWI1
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0IHNhdHVy
YXRlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZy
YWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJh
Z21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZl
cnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0
OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2
ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRl
c3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRl
c3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNm
NzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODNmNTNjNzg0ZTlhYTdkZjg4
NThmYzhkZDdkY2ZmY2Q5OTRiYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSBgCi10eXBlZGVmIGJvb2wyID0gaW50OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBy
ZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21l
bnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVu
dFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJh
Z21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0g
ICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJm
bG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFth
dHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBk
ZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBh
c3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOWQ4NTVlODRlOWU0
NTY5MDJmZDlkODExZGQ4NTk1MDM0MTVmMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0
IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRp
b24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNv
dXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAx
LCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4
U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZy
YWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRl
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1
dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHBy
aW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0
ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5l
TGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9
IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhC
dWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIg
PSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YyNDQ3NjdiZTE3YjFiYzhiZWNmYWE1Y2E1Zjdm
NTc4ZWNjMTE0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1Mgc2V0dGVyV2l0aE1hdGNoZWRU
eXBlCi1QQVNTIHNldHRlcldpdGhOb0dldHRlck92ZXJsb2FkCi1QQVNTIHNldHRlcldpdGhOb0dl
dHRlck92ZXJsb2FkRml4ZWQKLVBBU1MgcmVjdXJzaXZlU2V0dGVycwotUEFTUyBsb25lU2V0dGVy
Ci1QQVNTIGxvbmVTZXR0ZXJQb2ludGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NldHRlci1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUw
NDA1MDllZTZhYzIxNzQ5MmIzZWJkMjViNWZhMGE3NWIxNWRiODkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
dHRlci1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3
aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE1hdGNoZWRUeXBlID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3Iu
Zm9vKGludCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaW50IG9wZXJhdG9yLmZvbz0oaW50LCBpbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiA1NDM7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAg
IGludCB4OwotICAgICAgICAgICAgeC5mb28gPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4Owot
ICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAg
ICAgICAgIHJldHVybiB4LmZvbzsKLSAgICAgICAgfQotICAgIGApOwotfQotCi13aGxzbFRlc3Rz
LnNldHRlcldpdGhOb0dldHRlck92ZXJsb2FkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
ICAgICBzdHJ1Y3QgQmFyIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhGb28pCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDUzNDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIEJhciBvcGVyYXRvci5mb289KEJhciwgaW50KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBCYXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLnNldHRlcldpdGhOb0dldHRlck92ZXJsb2FkRml4
ZWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVj
dCBCYXIgeyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb28oQmFyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gNTM0OwotICAgICAgICB9Ci0gICAgICAgIEJhciBvcGVyYXRvci5mb289
KEJhciwgaW50KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQmFyKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIEJhciBiYXI7Ci0gICAgICAgICAg
ICByZXR1cm4gYmFyLmZvbzsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKCkgewotICAgICAg
ICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIGJhci5mb28gPSA1MjsKLSAgICAgICAgICAgIHJl
dHVybiBiYXIuZm9vOwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMucmVjdXJz
aXZlU2V0dGVycyA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAg
ICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIGludCB5Owot
ICAgICAgICB9Ci0gICAgICAgIHN0cnVjdCBCYXIgewotICAgICAgICAgICAgaW50IGE7Ci0gICAg
ICAgICAgICBpbnQgYjsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IuYyhCYXIgYmFy
KSB7IHJldHVybiBiYXIuYTsgfQotICAgICAgICBCYXIgb3BlcmF0b3IuYmFyKEZvbyBmb28pIHsg
QmFyIGI7IGIuYSA9IGZvby54OyBiLmIgPSBmb28ueTsgcmV0dXJuIGI7IH0KLSAgICAgICAgQmFy
IG9wZXJhdG9yLmM9KEJhciBiYXIsIGludCBuZXd2YWwpIHsgYmFyLmEgPSBuZXd2YWw7IHJldHVy
biBiYXI7IH0KLSAgICAgICAgRm9vIG9wZXJhdG9yLmJhcj0oRm9vIGZvbywgQmFyIG5ld3ZhbCkg
eyBmb28ueCA9IG5ld3ZhbC5hOyBmb28ueSA9IG5ld3ZhbC5iOyByZXR1cm4gZm9vOyB9Ci0gICAg
ICAgIGludCBmKCkgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby54ID0g
Zm9vLnkgPSAzOwotICAgICAgICAgICAgZm9vLmJhci5jID0gODsKLSAgICAgICAgICAgIHJldHVy
biBmb28ueCoxMCArIGZvby55OwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
bG9uZVNldHRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMubG9uZVNldHRlclBvaW50ZXIgPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdGhy
ZWFkIGludCogb3BlcmF0b3IuZm9vPSh0aHJlYWQgaW50KiBwdHIsIGludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2
ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU3M2FjZDQ4MjlmMzEzNzY5NDhlOWNjMGM2ZGM3ODAxZmQzZGFlNTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NpbXBsZS1hcnJheXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLXZvaWQgZmlsbCh0aHJlYWQgaW50W10gYXJyYXksIGludCB2YWx1
ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpbnRb
NDJdIGFycmF5OwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gNDIpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoYXJyYXlbaV0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhcnJh
eVswXSA9IDUxNzsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNTE3KQotICAgICAgICByZXR1cm47Ci0K
LSAgICB0aHJlYWQgaW50W10gYXJyYXlQdHIgPSBAYXJyYXk7Ci0gICAgaWYgKGFycmF5UHRyLmxl
bmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50WzQyXSBhcnJheTI7Ci0gICAg
YXJyYXkyID0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Mi5sZW5ndGggIT0gNDIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoYXJyYXkyWzBdICE9IDUxNykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZmlsbChhcnJheVB0ciwgMTMzNyk7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXlQdHIu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFycmF5UHRyW2ldICE9IDEzMzcpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAxMzM3KQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhcnJheTJbMF0gIT0gNTE3KQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKGFycmF5Mi5sZW5ndGggIT0gNDIpCi0gICAgICAgIHJldHVybjsKLSAgICBm
b3IgKHVpbnQgaSA9IDE7IGkgPCBhcnJheTIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFy
cmF5MltpXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZlclsw
XSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBl
OiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5k
R3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRl
UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0g
SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNj
cmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0g
bmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1
ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0
IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVy
LCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIo
YnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0
IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7
Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5
QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRl
c3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVz
dWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWdldHRlci1zZXR0ZXItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjg3YjVjNjgxNThlZjQzNzk4
ODcwYjcwYWU1MjkyYzUzZmYxNDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRl
ci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBzaW1w
bGVQcm9wZXJ0eUdldAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2lt
cGxlLWdldHRlci1zZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUt
Z2V0dGVyLXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODkzM2Zl
NThjNTJhNjQ2MGMxNDhhZWIyZGM3ZDQ0MTNiYWUxZDM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUt
Z2V0dGVyLXNldHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3Mu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlUHJvcGVydHlH
ZXQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBG
b28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICBmb28ueCA9IDc4MDQ7
Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc4MDQp
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjRlOGVjZDQ1NTEwNTVjM2E0ODk1MGJmN2Mx
NDNhYzA3NTcwY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotUEFTUyBzaW1wbGVVbnJlYWNoYWJsZUNvZGUK
LVBBU1Mgc2ltcGxlTm9SZXR1cm4KLVBBU1Mgc2ltcGxlUmVjdXJzaXZlU3RydWN0Ci1QQVNTIHNp
bXBsZVJlY3Vyc2lvbgotUEFTUyBzaW1wbGVSZWN1cnNpb24yCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzhkYzNiZmI1NDcyNzE5MTFmOWQ5MGZiMGQwMDU4NDA0NDQ1YTJlMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2ltcGxlLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1wbGVVbnJlYWNoYWJs
ZUNvZGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsK
LX0KLQotd2hsc2xUZXN0cy5zaW1wbGVOb1JldHVybiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoImludCBmb28oKSB7IH0iKTsKLX0KLQotd2hsc2xUZXN0cy5zaW1wbGVSZWN1
cnNpdmVTdHJ1Y3QgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBGb28gZm9vOwot
ICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5zaW1wbGVSZWN1cnNp
b24gPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICB2b2lkIGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
b28oeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBs
ZVJlY3Vyc2lvbjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICAgICAgZm9vKHgp
OwotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dm9pZCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9vKGJhcih4
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU0YjE4YTg4ODk2NTJiY2NhYTcwZGJiNGM5N2IyMzYwZWU1MzA4NmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVdoaWxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtd2hpbGUtbG9vcC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgwNzExYzE4ZTE2Y2Y3NjY2ZjcyZTZlODJlYzJmZGYwZTJiN2Y3ZGMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1w
bGVXaGlsZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHggPCAxMykKLSAgICAg
ICAgICAgICAgICB4ID0geCAqIDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDEpXSksIDE2KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
bWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ0N2ViZmY2YjdjYjEyZjQ3ZWM4MGVlYzNjODliNGI4MDE4
MzFiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJpdC10eXBlcy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBzbWFsbFR5cGVzU2hvdWxk
RmFpbAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10aGFu
LTMyLWJpdC10eXBlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhh
bi0zMi1iaXQtdHlwZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1NjBh
N2NiN2U5ZWE0YmNiODgyNGM0M2EyMWNiNGE3Y2U5MzBiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxl
ci10aGFuLTMyLWJpdC10eXBlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5zbWFsbGVyIHRoYW4gMzItYml0IHR5
cGVzIHNob3VsZCBub3QgcGFyc2UuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNs
VGVzdHMuc21hbGxUeXBlc1Nob3VsZEZhaWwgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB1Y2hh
ciB4OwotICAgICAgICB9Ci0gICAgYCk7IAotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAg
ICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIHg7Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHNob3J0IHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0KLSAg
ICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHVzaG9ydCB4OwotICAgICAgICB9Ci0gICAgYCk7IAotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgdm9pZCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBoYWxmIHg7
Ci0gICAgICAgIH0KLSAgICBgKTsgCi19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
cGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zcGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Bh
cnNlLWJpbmQtZ3JvdXAtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1i
aW5kLWdyb3VwLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdjMzE3ZjAx
ZjFkYmQ0Y2NiNDJkMzYyZWNkYzkwZmZmNTJhODAyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJp
bmQtZ3JvdXAtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJT
b3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUxKSkgewotICAgIGJ1ZmZlclsw
XSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyMSA9
IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdF
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVC
dWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2JpbmRp
bmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIxLCBzaXplfX0sIHtiaW5kaW5nOiAxLCBy
ZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMiwgc2l6ZX19XX0pOwotCi0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlcjIubWFwUmVhZEFz
eW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAx
NykKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICBidWZmZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAt
My1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBm
NDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5k
LWdyb3VwLTMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNT
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYmYxNTg1NjgxZWUwZTkyOTc2OGRmMTA1NDhh
OGM3ZWQzZWUwY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVh
ZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBi
dWZmZXIgOiByZWdpc3Rlcih1MSkpIHsKLSAgICBidWZmZXJbMF0gPSAxNzsKLX0KLWA7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1
dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogMCwgdHlwZTogInN0b3JhZ2UtYnVmZmVy
In0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEfSk7Ci0gICAgY29uc3QgYnVmZmVyMiA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
KTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoe2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZToge2J1
ZmZlcjogYnVmZmVyMSwgc2l6ZX19LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1
ZmZlcjIsIHNpemV9fV19KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlz
cGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRz
QXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJl
c3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7
Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMTcpCi0gICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyMi51
bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNm
NzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NwYXJzZS1iaW5kLWdyb3VwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5
MzgyMjRjM2Y5ZDRjYjljMTQyNzdmM2I1NGZmZjJmMWI2Zjk1Y2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nw
YXJzZS1iaW5kLWdyb3VwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1
dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTAsIHNwYWNlMSkpIHsK
LSAgICBidWZmZXJbMF0gPSAxNzsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmlj
ZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlz
aWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0LCBiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9
IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHtz
aXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9S
RUFEfSk7Ci0gICAgY29uc3QgYnVmZmVyMiA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsK
LQotICAgIGNvbnN0IGJpbmRHcm91cDEgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZm
ZXI6IGJ1ZmZlcjEsIHNpemV9fV19KTsKLSAgICBjb25zdCBiaW5kR3JvdXAyID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2JpbmRp
bmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIyLCBzaXplfX1dfSk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0
ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cDEp
OwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMSwgYmluZEdyb3VwMik7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyMi5tYXBS
ZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBd
ID09IDE3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIudW5tYXAoKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2ZTkzNThmNTlkZWIxZTlhZjczMDYz
NDQ2NzhiOGQyM2MwMmE3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBzdG9yZU51bGwKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVlZDJmZDMyMmIyZTc1MTk3NzU1MjQ4MzVjMzdmNDI4M2Q3MTA3MTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3N0b3JlLW51bGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN0b3JlTnVsbCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygp
IHsgKm51bGwgPSA0MjsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2
YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXBy
b3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjODkzYzU5M2UxYmMwZWVmOWQ4NGZjMWQ0
MGE0YmM4ZjFlNGI4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMt
cHJvcGVybHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1zdHJ1Y3QgQmFy
IHsKLSAgICBpbnQgeDsKLSAgICBmbG9hdCB5OwotICAgIGludCB6OwotfQotCi1zdHJ1Y3QgRm9v
IHsKLSAgICBCYXIgYmFyOwotICAgIEJhciBiYXIyOwotfQotCi10aHJlYWQgRm9vKiBwdHIoKSB7
Ci0gICAgRm9vIGxvY2FsOwotICAgIHJldHVybiAmbG9jYWw7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhP
dXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFk
IEZvbyogcCA9IHB0cigpOwotICAgIHAtPmJhcjIueSA9IDEuMDsKLSAgICBmbG9hdCB2YWx1ZSA9
IHAtPmJhcjIueTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3Vs
dC5zaGFkZSA9IHZhbHVlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUx
ID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3Qg
aW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29u
c3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRl
eEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
N10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51
bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZP
Uk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6
IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0
dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6
ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNj
cmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAg
IGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAs
IGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAzYTUyMTEzMDlmMDZjYmQ4MzliMGRhNmRhZmViNDA0NDE2ZGRhZDYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICsw
LDAgQEAKLQotUEFTUyBlbXB0eVN0cnVjdAotUEFTUyBzZXR0aW5nQW5BcnJheUluc2lkZUFTdHJ1
Y3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZDBmNjg2MDQ3ZWVlMWY2NDVlNTk3NzAyNTQwYzA2MTAwNjkxNWI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zdHJ1Y3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmVtcHR5U3RydWN0ID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IFRoaW5neSB7IH0KLSAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRoaW5neSB0aGluZ3k7Ci0gICAg
ICAgICAgICByZXR1cm4gNDY7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQ2KTsKLX07Ci0KLXdo
bHNsVGVzdHMuc2V0dGluZ0FuQXJyYXlJbnNpZGVBU3RydWN0ID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnRb
MV0gYXJyYXk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB0aHJlYWQgRm9vKiBiYXIgPSAmZm9vOwotICAg
ICAgICAgICAgYmFyLT5hcnJheVswXSA9IDIxOwotICAgICAgICAgICAgcmV0dXJuIGZvby5hcnJh
eVswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1lcmF0
aW9uLWVsZW1lbnQtY2xhc2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5NWUwYmY2MGU1MThiOWY5YjRjZDIwMzRmNDM1NzA4NjcwNzllNzc4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBzd2l0Y2hCcmVhawotUEFT
UyB1bmtub3duVmFyaWFibGVJbkRvdEV4cHJlc3Npb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1lcmF0
aW9uLWVsZW1lbnQtY2xhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3
Mjg5NDNjMTU4Njc1YmNiZDE1N2UwNWE3YzhjMDQ0YzRhZWUwMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Ry
dWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDM2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5zd2l0Y2hCcmVhayA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAg
ICAgIHN0cnVjdCBGb28geyBpbnQgeDsgfQotICAgICAgICBlbnVtIEJhciB7IHggPSA0MiwgeSA9
IDAgfQotICAgICAgICBpbnQgZigpIHsKLSAgICAgICAgICAgIEZvbyBCYXI7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50KEJhci54KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImYiLCBbXSksIDApOwotfQotd2hsc2xU
ZXN0cy51bmtub3duVmFyaWFibGVJbkRvdEV4cHJlc3Npb24gPSBhc3luYyAoKSA9PiB7Ci0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpIHsKLSAg
ICAgICAgICAgICAgICBpbnQgYSA9IHZhcmlhYmxlLng7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmZjZTU0YzIyNGZkYTNhZjc1NjkwNjk3M2YxZWI2NzUzZWEyYmM0
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDMgKzAsMCBAQAotCi1QQVNTIHN3aXRjaEJyZWFrCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zd2l0Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0
Y2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU1NGEwYjhmMDk2NzA0ZDlm
ZDMyNDIzM2FjYTljNWZjZDg5OTczNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuc3dpdGNoQnJlYWsgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcmVz
dWx0ID0gMDsKLSAgICAgICAgICAgIHN3aXRjaCAoeCkgewotICAgICAgICAgICAgY2FzZSA3Njc6
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSA2OToKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDc2
NyldKSwgMjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCg2OSldKSwgNzYyNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDQ5KTsKLX0K
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYThmYTI3ZjY5YTM4NTY4YTMxOTViZjli
ODg4OTNkZDNhNjFiMmMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB0ZXJuYXJ5RXhwcmVz
c2lvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVybmFyeS1zcGVj
LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzI0Y2U2NTdjOWZmNzRiN2FjODI3
YTNkOTExYWZmY2IxZjVjMWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy50ZXJuYXJ5RXhwcmVzc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHggPCAzID8gNCA6IDU7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcihpbnQg
eCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggPCAxMCA/IDExIDogeCA8IDEyID8g
MTQgOiAxNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmF6KGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gMyA8IDQgPyB4IDogNTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDc2NyldKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDIpXSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCg4KV0pLCAxMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtt
YWtlSW50KDkpXSksIDExKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTApXSksIDE0KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTEpXSksIDE0
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFy
IiwgW21ha2VJbnQoMTIpXSksIDE1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoMTMpXSksIDE1KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmF6IiwgW21ha2VJbnQoMTQp
XSksIDE0KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGlu
dCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4OwotICAgICAgICAg
ICAgICAgICg0IDwgNSA/IHggOiA3KSA9IDg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgaW50
IHk7Ci0gICAgICAgICAgICAgICAgKDAgPCAxID8geCA6IHkpID0gNDI7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAg
ICAgICAgdGhyZWFkIGludCogeiA9ICYoMCA8IDEgPyB4IDogeSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICp6OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgICAgIGludCB5OwotICAgICAgICAgICAg
ICAgIHRocmVhZCBpbnRbXSB6ID0gQCgwIDwgMSA/IHggOiB5KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gKno7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gNCA8IDUgPyB4IDogeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNCA8IDUgPyA2IDogNy4wOwotICAg
ICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0
LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVz
dC1oYXJuZXNzLXRlc3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlNmNkOWIwYjI0NjFkOWU1NmY1YTc0ODhkYTUxOGY4MjdkOTIyZDJjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyAr
MCwwIEBACi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gNSBkdXBsaWNhdGUgdGVz
dCBuYW1lczogIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuIiwgIlJldHVybiBhbiBl
eHBlY3RlZCBpbnQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLiIsICJS
ZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCBmbG9h
dDR4NCB2YWx1ZS4iCi0KLVBBU1MgUmV0dXJuIGEgbGl0ZXJhbCBvZiB0eXBlIGJvb2wuCi1QQVNT
IFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3Rl
ZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFVwbG9hZCBhbmQgcmV0dXJuIGEg
Ym9vbCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4KLVBBU1Mg
UmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIHVp
bnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4KLVBBU1MgVXBs
b2FkIG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBhIGNhbGN1bGF0ZWQgcmVzdWx0LgotUEFT
UyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBBU1Mg
UmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQg
ZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZs
b2F0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWlu
dCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBVcGxv
YWQgYW5kIGNhbGN1bGF0ZSBhIHJlc3VsdCBmcm9tIHZhcmllZCBhcmd1bWVudCB0eXBlcy4KLVBB
U1MgU3RvcmUgaW50byBhIGZsb2F0NFtdLgotUEFTUyBVcGxvYWQgYSBpbnRbXSBhbmQgc3RvcmUg
aW50byBhIGludFtdLgotUEFTUyBVcGxvYWQgYSBmbG9hdDR4NFtdIGFuZCBzdG9yZSBpbnRvIGEg
ZmxvYXQ0eDRbXS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLgotUEFT
UyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBl
Y3RlZCBmbG9hdDR4NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZh
bHVlLgotUEFTUyBDb2RlIHNob3VsZCBub3QgY29tcGlsZSwgYW5kIG5vIGVycm9yIGlzIHJlcG9y
dGVkLgotUEFTUyBTdWNjZXNzZnVsbHkgY29tcGlsaW5nIGNvZGUgaW4gY2hlY2tGYWlsIGlzIGFu
IGVycm9yLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVzdC1oYXJu
ZXNzLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVz
dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDgzOTg3YTkyYjExZmJlNjYx
YzZjMjBmNGYxNTA1ODI3NDIzMGJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotY29uc3QgbnVtZXJpY1NjYWxhclR5cGVzID0gWyJpbnQi
LCAidWludCIsICJmbG9hdCJdOwotCi1jb25zdCBudW1lcmljU2NhbGFyRnVuY3MgPSB7Ci0gICAg
ImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24sCi0g
ICAgImZsb2F0IjogY2FsbEZsb2F0RnVuY3Rpb24KLX07Ci0KLWNvbnN0IHNjYWxhckFyZ01ha2Vy
cyA9IHsKLSAgICAiYm9vbCI6IG1ha2VCb29sLAotICAgICJpbnQiOiBtYWtlSW50LAotICAgICJ1
aW50IjogbWFrZVVpbnQsCi0gICAgImZsb2F0IjogbWFrZUZsb2F0Ci19OwotCi1jb25zdCBhcnJh
eVR5cGVMZW5ndGhzID0gewotICAgICJmbG9hdDQiOiA0LAotICAgICJmbG9hdDR4NCI6IDE2Ci19
OwotCi1jb25zdCBhcnJheUZ1bmNzID0gewotICAgICJmbG9hdDQiOiBjYWxsRmxvYXQ0RnVuY3Rp
b24sCi0gICAgImZsb2F0NHg0IjogY2FsbEZsb2F0NHg0RnVuY3Rpb24sCi19OwotCi1jb25zdCBh
cnJheUFyZ01ha2VycyA9IHsKLSAgICAiZmxvYXQ0IjogbWFrZUZsb2F0NCwKLSAgICAiZmxvYXQ0
eDQiOiBtYWtlRmxvYXQ0eDQKLX07Ci0KLWNvbnN0IGZsb2F0NHg0ZXhwZWN0ZWQgPSBbMCwgNCwg
OCwgMTIsIDEsIDUsIDksIDEzLCAyLCA2LCAxMCwgMTQsIDMsIDcsIDExLCAxNV07Ci1jb25zdCBm
bG9hdDR4NENvbHVtbkV4cGVjdGVkID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTVdOwotY29uc3QgZmxvYXQ0ZXhwZWN0ZWQgPSBbMCwgMSwgMiwg
M107Ci0KLWxldCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubGl0ZXJhbHMgPSAoKSA9
PiB7Ci0gICAgY2hlY2tCb29scygiUmV0dXJuIGEgbGl0ZXJhbCBvZiB0eXBlIGJvb2wuIiwgInJl
dHVybiB0cnVlOyIpOwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCAicmV0dXJuIGZsb2F0NCgw
LCAxLCAyLCAzKTsiLCBbXSwgZmxvYXQ0ZXhwZWN0ZWQpOwotICAgIGNoZWNrTnVtZXJpY1NjYWxh
cnMoInJldHVybiA0MjsiLCBbXSwgNDIpOwotfTsKLQotd2hsc2xUZXN0cy5zaW5nbGVBcmd1bWVu
dCA9ICgpID0+IHsKLSAgICBjaGVja0Jvb2xzKCJVcGxvYWQgYW5kIHJldHVybiBhIGJvb2wgdmFs
dWUuIiwgInJldHVybiBpbjA7IiwgW3RydWVdKTsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0Iiwg
InJldHVybiBpbjA7IiwgW2Zsb2F0NGV4cGVjdGVkXSwgZmxvYXQ0ZXhwZWN0ZWQpOwotICAgIGNo
ZWNrTnVtZXJpY1NjYWxhcnMoInJldHVybiBpbjA7IiwgWzQyXSwgNDIpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYW55QXJndW1lbnRzID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMoIlVwbG9hZCBtYW55
IGJvb2wgdmFsdWVzIGFuZCByZXR1cm4gYSBjYWxjdWxhdGVkIHJlc3VsdC4iLAotICAgICAgICAi
cmV0dXJuIGluMCAmIGluMSAmIGluMiAmIGluMyAmIGluNCAmIGluNSAmIGluNiAmIGluNzsiLAot
ICAgICAgICBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0p
OwotCi0gICAgbGV0IGJvZHkgPSAicmV0dXJuIGZsb2F0NChpbjAueCwgaW4xLnksIGluMi56LCBp
bjMudyk7IgotICAgIGxldCBhcmdzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyAr
K2kpCi0gICAgICAgIGFyZ3MucHVzaChmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tBcnJheXMo
ImZsb2F0NCIsIGJvZHksIGFyZ3MsIGZsb2F0NGV4cGVjdGVkKTsKLQotICAgIGJvZHkgPSBgcmV0
dXJuIGluMCArIGluMSArIGluMiArIGluMyArIGluNCArIGluNSArIGluNiArIGluNztgOwotICAg
IGNoZWNrTnVtZXJpY1NjYWxhcnMoYm9keSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDddLCAyOCk7
Ci19OwotCi13aGxzbFRlc3RzLmJ1ZmZlcnNXaXRoT25lVmFsdWUgPSAoKSA9PiB7Ci0gICAgY29u
c3QgYm9keSA9IGByZXR1cm4gaW4wWzBdO2AKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9k
eSwgW1tmbG9hdDRleHBlY3RlZF1dLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmlj
U2NhbGFycyhib2R5LCBbWzQyXV0sIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMubXVsdGlwbGVCdWZm
ZXJBcmd1bWVudHMgPSAoKSA9PiB7Ci0gICAgbGV0IGJvZHkgPSBgCi0gICAgZmxvYXQgeCA9IGlu
MFswXS54ICsgaW4wWzFdLnggKyBpbjBbMl0ueCArIGluMS54ICsgaW4yWzBdLng7Ci0gICAgZmxv
YXQgeSA9IGluMFswXS55ICsgaW4wWzFdLnkgKyBpbjBbMl0ueSArIGluMS55ICsgaW4yWzBdLnk7
Ci0gICAgZmxvYXQgeiA9IGluMFswXS56ICsgaW4wWzFdLnogKyBpbjBbMl0ueiArIGluMS56ICsg
aW4yWzBdLno7Ci0gICAgZmxvYXQgdyA9IGluMFswXS53ICsgaW4wWzFdLncgKyBpbjBbMl0udyAr
IGluMS53ICsgaW4yWzBdLnc7Ci0KLSAgICByZXR1cm4gZmxvYXQ0KHgsIHksIHosIHcpO2A7Ci0g
ICAgY2hlY2tBcnJheXMoImZsb2F0NCIsIGJvZHksIFtbZmxvYXQ0ZXhwZWN0ZWQsIGZsb2F0NGV4
cGVjdGVkLCBmbG9hdDRleHBlY3RlZF0sIGZsb2F0NGV4cGVjdGVkLCBbZmxvYXQ0ZXhwZWN0ZWRd
XSwgWzAsIDUsIDEwLCAxNV0pOwotCi0gICAgYm9keSA9IGByZXR1cm4gaW4wWzBdICsgaW4wWzFd
ICsgaW4wWzJdICsgaW4xICsgaW4yWzBdO2A7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycyhib2R5
LCBbWzAsIDEsIDJdLCAzLCBbNF1dLCAxMCk7Ci19OwotCi13aGxzbFRlc3RzLm11bHRpcGxlQXJn
dW1lbnRUeXBlcyA9ICgpID0+IHsKLSAgICBjb25zdCBzcmMgPSBgZmxvYXQgdGVzdChpbnQgaSwg
dWludCBjLCBmbG9hdDQgZjQsIGRldmljZSB1aW50W10gdSwgZGV2aWNlIGZsb2F0W10gZnMpCi0g
ICAgewotICAgICAgICByZXR1cm4gZmxvYXQoaSkgKyBmbG9hdChjKSArIGY0LnggKyBmNC55ICsg
ZjQueiArIGY0LncgKyBmbG9hdCh1WzBdKSArIGZzWzBdICsgZnNbMV07Ci0gICAgfWA7Ci0gICAg
Y29uc3QgaSA9IG1ha2VJbnQoMSk7Ci0gICAgY29uc3QgYyA9IG1ha2VVaW50KDIpOwotICAgIGNv
bnN0IGY0ID0gbWFrZUZsb2F0NChbNCwgNSwgNiwgN10pOwotICAgIGNvbnN0IHUgPSBtYWtlVWlu
dChbM10pOwotICAgIGNvbnN0IGZzID0gbWFrZUZsb2F0KFs4LCA5XSk7Ci0gICAgd2ViR1BVUHJv
bWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gY2FsbEZsb2F0RnVuY3Rpb24oc3JjLCAi
dGVzdCIsIFtpLCBjLCBmNCwgdSwgZnNdKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHQsIDQ1LCBlcHNpbG9uLCAiVGVzdCByZXR1cm5lZCBl
eHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlVwbG9hZCBhbmQgY2FsY3Vs
YXRlIGEgcmVzdWx0IGZyb20gdmFyaWVkIGFyZ3VtZW50IHR5cGVzLiIpOwotfTsKLQotd2hsc2xU
ZXN0cy5idWZmZXJTdG9yZXMgPSAoKSA9PiB7Ci0gICAgbGV0IHNyYyA9IGB2b2lkIHRlc3QoZGV2
aWNlIGZsb2F0NFtdIG91dCkgewotICAgICAgICBvdXRbMF0gPSBmbG9hdDQoMCwgMSwgMiwgMyk7
Ci0gICAgfWA7Ci0gICAgY29uc3QgZmxvYXQ0T3V0ID0gbWFrZUZsb2F0NChbWzAsIDAsIDAsIDBd
XSk7Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgZmxvYXQ0T3V0KTsKLQotICAg
IHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGZsb2F0NE91dC5nZXRB
cnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZmZXIgPT4gewotICAgICAgICAgICAgY29uc3QgcmVz
dWx0ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBmb3IgKGxl
dCBpOyBpIDwgNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
cmVzdWx0W2ldLCBpLCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKLSAgICB9LCAiU3RvcmUgaW50byBhIGZsb2F0NFtdLiIpOwotCi0g
ICAgc3JjID0gYHZvaWQgdGVzdChkZXZpY2UgaW50W10gaW4sIGRldmljZSBpbnRbXSBvdXQpIHsK
LSAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNTsgaSA9IGkgKyAxKQotICAgICAgICAgICAg
b3V0W2ldID0gaW5baV07Ci0gICAgfWA7Ci0gICAgY29uc3QgYXJyYXkgPSBbMCwgMSwgMiwgMywg
NF07Ci0gICAgY29uc3QgaW5wdXQgPSBtYWtlSW50KGFycmF5KTsKLSAgICBjb25zdCBvdXRwdXQg
PSBtYWtlSW50KFswLCAwLCAwLCAwLCAwXSk7Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMsICJ0
ZXN0IiwgW2lucHV0LCBvdXRwdXRdKTsKLQotICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsK
LSAgICAgICAgcmV0dXJuIG91dHB1dC5nZXRBcnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZmZXIg
PT4gewotICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQzMkFycmF5KGFycmF5QnVm
ZmVyKTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIHJlc3VsdCwgIlRl
c3Qgc3RvcmVkIGV4cGVjdGVkIHZhbHVlcy4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlVwbG9h
ZCBhIGludFtdIGFuZCBzdG9yZSBpbnRvIGEgaW50W10uIik7Ci19OwotCi13aGxzbFRlc3RzLmZs
b2F0NHg0dGVzdHMgPSAoKSA9PiB7Ci0gICAgY29uc3Qgc3JjID0gYHZvaWQgdGVzdChkZXZpY2Ug
ZmxvYXQ0eDRbXSBpbiwgZGV2aWNlIGZsb2F0NHg0W10gb3V0KSB7Ci0gICAgICAgIGZvciAodWlu
dCBpID0gMDsgaSA8IDQ7IGkgPSBpICsgMSkKLSAgICAgICAgICAgIG91dFtpXSA9IGluW2ldOwot
ICAgIH1gOwotICAgIGNvbnN0IGlucHV0ID0gbWFrZUZsb2F0NHg0KFtmbG9hdDR4NGV4cGVjdGVk
LCBmbG9hdDR4NGV4cGVjdGVkLCBmbG9hdDR4NGV4cGVjdGVkLCBmbG9hdDR4NGV4cGVjdGVkXSk7
Ci0gICAgY29uc3Qgb3V0cHV0ID0gbWFrZUZsb2F0NHg0KG5ldyBBcnJheSg2NCkuZmlsbCgwKSk7
Ci0gICAgY2FsbFZvaWRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgW2lucHV0LCBvdXRwdXRdKTsKLQot
ICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIG91dHB1dC5nZXRB
cnJheUJ1ZmZlcigpLnRoZW4oYXJyYXlCdWZmZXIgPT4gewotICAgICAgICAgICAgY29uc3QgcmVz
dWx0ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBq
IDwgMTY7ICsraikKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVz
dWx0W2kgKiAxNiArIGpdLCBmbG9hdDR4NGV4cGVjdGVkW2pdLCBlcHNpbG9uLCAiVGVzdCBzdG9y
ZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9
LCAiVXBsb2FkIGEgZmxvYXQ0eDRbXSBhbmQgc3RvcmUgaW50byBhIGZsb2F0NHg0W10uIik7Ci0K
LSAgICBjaGVja0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGZsb2F0NHg0KGZsb2F0NCgwLCAx
LCAyLCAzKSwgZmxvYXQ0KDQsIDUsIDYsIDcpLCBmbG9hdDQoOCwgOSwgMTAsIDExKSwgZmxvYXQ0
KDEyLCAxMywgMTQsIDE1KSk7IiwgW10sIGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAgIGNo
ZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gaW4wOyIsIFtmbG9hdDR4NGV4cGVjdGVkXSwg
ZmxvYXQ0eDRleHBlY3RlZCk7Ci0gICAgbGV0IG11bHRpcGxlNHg0YXJncyA9IFtdOwotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkgewotICAgICAgICBjb25zdCBhcmcgPSBuZXcgQXJy
YXkoMTYpOwotICAgICAgICBhcmcuZmlsbCgwKTsKLSAgICAgICAgYXJnW2ldID0gaTsKLSAgICAg
ICAgbXVsdGlwbGU0eDRhcmdzLnB1c2goYXJnKTsKLSAgICB9Ci0gICAgY2hlY2tBcnJheXMoImZs
b2F0NHg0IiwgInJldHVybiBpbjAgKyBpbjEgKyBpbjIgKyBpbjMgKyBpbjQgKyBpbjUgKyBpbjYg
KyBpbjcgKyBpbjggKyBpbjkgKyBpbjEwICsgaW4xMSArIGluMTIgKyBpbjEzICsgaW4xNCArIGlu
MTU7IiwgbXVsdGlwbGU0eDRhcmdzLCBmbG9hdDR4NENvbHVtbkV4cGVjdGVkKTsKLSAgICBjaGVj
a0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGluMFswXTsiLCBbW2Zsb2F0NHg0ZXhwZWN0ZWRd
XSwgZmxvYXQ0eDRleHBlY3RlZCk7Ci19OwotCi13aGxzbFRlc3RzLmNoZWNrRmFpbFRlc3RzID0g
KCkgPT4gewotICAgIHdlYkdQVVByb21pc2VUZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGNo
ZWNrRmFpbChgRG9vcnMgYW5kIGNvcm5lcnMsIGtpZC4gVGhhdCdzIHdoZXJlIHRoZXkgZ2V0Y2hh
LmApOwotICAgIH0sICJDb2RlIHNob3VsZCBub3QgY29tcGlsZSwgYW5kIG5vIGVycm9yIGlzIHJl
cG9ydGVkLiIpOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1
cm4gY2hlY2tGYWlsKCIiKS5jYXRjaChlID0+IHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGUg
aW5zdGFuY2VvZiBFcnJvciwgIkFuIGV4cGVjdGVkIEVycm9yIHdhcyBjYXVnaHQuIik7Ci0gICAg
ICAgIH0pOwotICAgIH0sICJTdWNjZXNzZnVsbHkgY29tcGlsaW5nIGNvZGUgaW4gY2hlY2tGYWls
IGlzIGFuIGVycm9yLiIpCi19OwotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFz
eW5jICgpID0+IHsKLSAgICB0cnkgewotICAgICAgICBhd2FpdCBoYXJuZXNzLnJlcXVlc3REZXZp
Y2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHdobHNsVGVzdHMpIHsKLSAgICAgICAg
ICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJfIikpCi0gICAgICAgICAgICAgICAgd2hsc2xUZXN0
c1tuYW1lXSgpOwotICAgICAgICB9Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICAgICAgCi0gICAgICAgIHRocm93IGU7Ci0gICAgfQotfSk7Ci0KLS8qIEhlbHBlciBmdW5jdGlv
bnMgKi8KLQotY29uc3QgY2hlY2tOdW1lcmljU2NhbGFycyA9IChib2R5LCBhcmdWYWx1ZXMsIGV4
cGVjdGVkKSA9PiB7Ci0gICAgbGV0IGZ1bmN0aW9ucyA9IFtdOwotICAgIGxldCBzcmMgPSAiIjsK
LSAgICBmb3IgKGxldCB0eXBlIG9mIG51bWVyaWNTY2FsYXJUeXBlcykgewotICAgICAgICBsZXQg
bmFtZSwgdmFsdWVzOwotICAgICAgICBbc3JjLCBuYW1lLCB2YWx1ZXNdID0gYXBwZW5kU2NhbGFy
RnVuY3Rpb25Ub1NvdXJjZShzcmMsIHR5cGUsIGJvZHksIGFyZ1ZhbHVlcyk7Ci0gICAgICAgIGZ1
bmN0aW9ucy5wdXNoKHsgdHlwZTogdHlwZSwgbmFtZTogbmFtZSwgYXJnczogdmFsdWVzLCBleHBl
Y3RlZDogZXhwZWN0ZWQgfSk7Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBmIG9mIGZ1bmN0aW9u
cykgewotICAgICAgICBjb25zdCBjYWxsRnVuYyA9IG51bWVyaWNTY2FsYXJGdW5jc1tmLnR5cGVd
OwotICAgICAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gY2FsbEZ1bmMoc3JjLCBmLm5hbWUsIGYuYXJncykudGhlbihyZXN1bHQgPT4gewotICAg
ICAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3VsdCwgZi5leHBlY3RlZCwgZXBz
aWxvbiwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSwgYFJldHVybiBhbiBleHBlY3RlZCAke2YudHlwZX0gdmFsdWUuYCk7Ci0gICAg
fQotfTsKLQotY29uc3QgY2hlY2tCb29scyA9IChtc2cgPSAiUmV0dXJuIGFuIGV4cGVjdGVkIGJv
b2wgdmFsdWUuIiwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVjdGVkID0gdHJ1ZSkgPT4gewot
ICAgIGNvbnN0IFtzcmMsIG5hbWUsIHZhbHVlc10gPSBhcHBlbmRTY2FsYXJGdW5jdGlvblRvU291
cmNlKCIiLCAiYm9vbCIsIGJvZHksIGFyZ1ZhbHVlcyk7IAotCi0gICAgd2ViR1BVUHJvbWlzZVRl
c3QoYXN5bmMgKCkgPT4gewotICAgICAgICByZXR1cm4gY2FsbEJvb2xGdW5jdGlvbihzcmMsIG5h
bWUsIHZhbHVlcykudGhlbihyZXN1bHQgPT4gewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIGV4cGVjdGVkLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAg
ICAgfSwgZSA9PiB7Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBw
b3J0ZWRFcnJvcikpCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSk7Ci0gICAg
fSwgbXNnKTsKLX07Ci0KLWNvbnN0IGNoZWNrQXJyYXlzID0gKHR5cGUsIGJvZHksIGFyZ1ZhbHVl
cyA9IFtdLCBleHBlY3RlZCkgPT4gewotICAgIGxldCBpbnB1dEFyZ3MgPSBbXTsKLSAgICBsZXQg
dmFsdWVzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdWYWx1ZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgLy8gU3VwcG9ydCBhcnJheXMgb2YgZmxvYXQ0LCBpbmNsdWRpbmcgb25l
IHdpdGggYSBzaW5nbGUgZmxvYXQ0LgotICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGFyZ1Zh
bHVlc1tpXS5mbGF0KCkubGVuZ3RoOwotICAgICAgICBjb25zdCBpc0J1ZmZlciA9IGFyZ1ZhbHVl
c1tpXS5sZW5ndGggPT09IDEgfHwgdG90YWxMZW5ndGggPiBhcnJheVR5cGVMZW5ndGhzW3R5cGVd
OwotICAgICAgICBpbnB1dEFyZ3MucHVzaChgJHtpc0J1ZmZlciA/ICJkZXZpY2UgIiA6ICIifSR7
dHlwZX0ke2lzQnVmZmVyID8gIltdIiA6ICIifSBpbiR7aX1gKTsKLSAgICAgICAgdmFsdWVzLnB1
c2goYXJyYXlBcmdNYWtlcnNbdHlwZV0oYXJnVmFsdWVzW2ldKSk7Ci0gICAgfQotCi0gICAgY29u
c3Qgc3JjID0gYCR7dHlwZX0gJHt0eXBlfVRlc3QoJHtpbnB1dEFyZ3Muam9pbigiLCAiKX0pIHsg
JHtib2R5fSB9Ci0gICAgYDsKLQotICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsK
LSAgICAgICAgcmV0dXJuIGFycmF5RnVuY3NbdHlwZV0oc3JjLCBgJHt0eXBlfVRlc3RgLCB2YWx1
ZXMpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJy
YXlUeXBlTGVuZ3Roc1t0eXBlXTsgKytpKQotICAgICAgICAgICAgICAgIGFzc2VydF9hcHByb3hf
ZXF1YWxzKHJlc3VsdFtpXSwgZXhwZWN0ZWRbaV0sIGVwc2lsb24sICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9KTsKLSAgICB9LCBgUmV0dXJuIGFuIGV4cGVjdGVk
ICR7dHlwZX0gdmFsdWUuYCk7Ci19Ci0KLWNvbnN0IGFwcGVuZFNjYWxhckZ1bmN0aW9uVG9Tb3Vy
Y2UgPSAoc3JjLCB0eXBlLCBib2R5LCBhcmdWYWx1ZXMpID0+IHsKLSAgICBjb25zdCBuYW1lID0g
YCR7dHlwZX1UZXN0YDsKLQotICAgIGxldCBpbnB1dEFyZ3MgPSBbXTsKLSAgICBsZXQgdmFsdWVz
ID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdWYWx1ZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgY29uc3QgaXNCdWZmZXIgPSBBcnJheS5pc0FycmF5KGFyZ1ZhbHVlc1tpXSk7Ci0g
ICAgICAgIGlucHV0QXJncy5wdXNoKGAke2lzQnVmZmVyID8gImRldmljZSAiIDogIiJ9JHt0eXBl
fSR7aXNCdWZmZXIgPyAiW10iIDogIiJ9IGluJHtpfWApOwotICAgICAgICB2YWx1ZXMucHVzaChz
Y2FsYXJBcmdNYWtlcnNbdHlwZV0oYXJnVmFsdWVzW2ldKSk7Ci0gICAgfQotCi0gICAgc3JjICs9
IGAke3R5cGV9ICR7bmFtZX0oJHtpbnB1dEFyZ3Muam9pbigiLCAiKX0pIHsgJHtib2R5fSB9Ci0g
ICAgYDsKLSAgICAKLSAgICByZXR1cm4gW3NyYywgbmFtZSwgdmFsdWVzXTsKLX07Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJl
cy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWdldGRpbWVuc2lvbnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTVhY2EzNDgwMDJlZDYzYzRhZTE1MjM5MDE3MGM2NTI3MjFlYTg2Ny4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0
MCksIGRldmljZSB1aW50W10gdGhlQnVmZmVyIDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgdWludCB3
aWR0aDsKLSAgICB1aW50IGhlaWdodDsKLSAgICB1aW50IG51bWJlck9mTGV2ZWxzOwotICAgIEdl
dERpbWVuc2lvbnModGhlVGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmbnVtYmVyT2ZMZXZl
bHMpOwotICAgIHRoZUJ1ZmZlclswXSA9IHdpZHRoOwotICAgIHRoZUJ1ZmZlclsxXSA9IGhlaWdo
dDsKLSAgICB0aGVCdWZmZXJbMl0gPSBudW1iZXJPZkxldmVsczsKLX0KLWA7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1
dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFk
ZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7
YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7
Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRl
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6ZToge3dpZHRo
OiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuU0FNUExFRH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVh
dGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMywgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAg
Y29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNC
dWZmZXIsIHNpemU6IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogM307Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmll
d30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ31dOwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBi
aW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29tcHV0
ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFz
c0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBj
b25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3lu
YygpOwotICAgIGNvbnN0IHJlc3VsdHNVaW50MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheShyZXN1
bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzVWludDMyQXJyYXlbMF0gPT0gMgotICAg
ICAgICAmJiByZXN1bHRzVWludDMyQXJyYXlbMV0gPT0gMgotICAgICAgICAmJiByZXN1bHRzVWlu
dDMyQXJyYXlbMl0gPT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgi
Iik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1sb2FkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYz
ZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRl
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1
cmVzLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwODIyYzg1MDc5ZDYzOGFmMTI2NzE5
NDFkYWQxN2QwODhlY2QzZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Q
b3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJh
Z21lbnRTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSkg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIExvYWQodGhlVGV4dHVyZSwgaW50MigwLCAwKSk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9XX07
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
PSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJp
emF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQs
IHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTog
RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIw
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25z
dCB0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiAyICogMiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eSA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVszXSA9IDI1NTsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzVdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2
XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVs5XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTBdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEyXSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxNF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE1XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURl
c2NyaXB0b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgZm9ybWF0
OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1
cmVVc2FnZS5DT1BZX0RTVH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0
dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0gW3ti
aW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9XTsKLSAgICBjb25zdCBiaW5kR3JvdXBE
ZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdyb3Vw
QmluZGluZ3N9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAo
YmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBm
b3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25m
aWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LQotICAgIGNvbnN0IGJ1ZmZlckNvcHlWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIs
IHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVp
Z2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25z
dCB0ZXh0dXJlQ29weVZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29weVNp
emUgPSB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVy
LmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgY29w
eVNpemUpOwotCi0gICAgY29uc3QgY2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAx
fTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0
dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAi
c3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9
IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50
cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIg
PSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIu
ZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7
Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNh
ZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNGQwYWRmNWRkNzMwZWQzNWQwNGEyYzFhYmRhNzZl
NTRiMGMxOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgSW50
ZXJtZWRpYXRlIHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9h
dDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBJbnRlcm1l
ZGlhdGUgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQy
IHRleHR1cmVDb29yZGluYXRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgSW50ZXJtZWRpYXRlIHJl
c3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQudGV4dHVy
ZUNvb3JkaW5hdGUgPSB0ZXh0dXJlQ29vcmRpbmF0ZTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQyIHRleHR1cmVDb29yZGluYXRl
IDogYXR0cmlidXRlKDApLCBUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIo
dDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBTYW1wbGVCaWFzKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIHRleHR1cmVDb29y
ZGluYXRlLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3Qg
aW5wdXQwID0ge3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCwgYXR0
cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVy
TG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0MiJ9OwotICAgIGNvbnN0IGlucHV0MSA9IHtzdHJp
ZGU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDIsIGF0dHJpYnV0ZVNldDogW2F0
dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwg
cHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRo
U3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCArIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDIgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVy
dGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNl0gPSAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOV0gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMF0gPSAx
MDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMV0gPSAwOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMjJdID0gMTAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMjNdID0gMTAwOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRl
eHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAx
ICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1
ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5
KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0gPSAw
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzVdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs4XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMjU1Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTJdID0gMjU1Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDA7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzE1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTZdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTldID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFw
KCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhl
aWdodDogMiwgZGVwdGg6IDF9LCBtaXBMZXZlbENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlf
RFNUfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7YWRkcmVzc01vZGVVOiAi
cmVwZWF0IiwgYWRkcmVzc01vZGVWOiAicmVwZWF0IiwgYWRkcmVzc01vZGVXOiAicmVwZWF0Iiwg
bWFnRmlsdGVyOiAibGluZWFyIiwgbWluRmlsdGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qgc2Ft
cGxlciA9IGRldmljZS5jcmVhdGVTYW1wbGVyKHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cEJpbmRpbmdzID0gW3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZp
ZXd9LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdy
b3VwQmluZGluZ3N9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLQotICAgIGNvbnN0IGJ1ZmZlckNvcHkxVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVm
ZmVyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyLCBpbWFn
ZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMn07Ci0gICAg
Y29uc3QgdGV4dHVyZUNvcHkxVmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBj
b3B5MVNpemUgPSB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weTFWaWV3LCB0ZXh0dXJlQ29weTFW
aWV3LCBjb3B5MVNpemUpOwotICAgIGNvbnN0IGJ1ZmZlckNvcHkyVmlldyA9IHtidWZmZXI6IHRl
eHR1cmVEYXRhQnVmZmVyLCBvZmZzZXQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogMiAqIDIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEs
IGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxfTsK
LSAgICBjb25zdCB0ZXh0dXJlQ29weTJWaWV3ID0ge3RleHR1cmU6IHRleHR1cmUsIG1pcExldmVs
OiAxfTsKLSAgICBjb25zdCBjb3B5MlNpemUgPSB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6
IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weTJW
aWV3LCB0ZXh0dXJlQ29weTJWaWV3LCBjb3B5MlNpemUpOwotCi0gICAgY29uc3QgY2xlYXJDb2xv
ciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRz
ID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwg
bG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAgY29u
c3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rl
c2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBh
c3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAo
MCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAs
IFt2ZXJ0ZXhCdWZmZXIwLCB2ZXJ0ZXhCdWZmZXIwXSwgWzAsIEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiA0XSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4cGVj
dGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUz
Y2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdy
YWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1w
bGUtZ3JhZC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3
YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtc2FtcGxlLWdyYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtZ3JhZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTMz
NjZlZjA2ZjVlZTY5ODE3Mjk1YmRlMWZjMThmMjhjMDMwYjcwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtZ3JhZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0
aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3Rlcihz
MSkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBTYW1wbGVHcmFkKHRoZVRleHR1cmUsIHRo
ZVNhbXBsZXIsIGZsb2F0MigwLjUsIDAuNSksIGZsb2F0MigxLCAwKSwgZmxvYXQyKDAsIDEpKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0
cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1
dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHti
aW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlciJ9XX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3Rh
Z2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUs
IGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50
OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9
IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGF0
YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDQgKiAyICogMiArIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDEsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1
cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJBcnJh
eUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJl
RGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVszXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNF0g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzVdID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNl0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOF0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMDsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDA7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzE1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTZdID0g
MjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTldID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7Ci0K
LSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDog
MiwgZGVwdGg6IDF9LCBtaXBMZXZlbENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsK
LSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmlldygp
OwotCi0gICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7bWFnRmlsdGVyOiAibGluZWFyIiwg
bWluRmlsdGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qgc2FtcGxlciA9IGRldmljZS5jcmVhdGVT
YW1wbGVyKHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdz
ID0gW3tiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9LCB7YmluZGluZzogMSwgcmVz
b3VyY2U6IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdyb3VwQmluZGluZ3N9OwotICAgIGNv
bnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAg
IGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3Jt
In07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dh
cENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5n
ZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0
VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIg
PSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLQotICAgIGNvbnN0IGJ1ZmZl
ckNvcHkxVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCByb3dQaXRjaDogVWludDhB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyLCBpbWFnZUhlaWdodDogVWludDhBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMn07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHkxVmll
dyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5MVNpemUgPSB7d2lkdGg6IDIs
IGhlaWdodDogMiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1Rl
eHR1cmUoYnVmZmVyQ29weTFWaWV3LCB0ZXh0dXJlQ29weTFWaWV3LCBjb3B5MVNpemUpOwotICAg
IGNvbnN0IGJ1ZmZlckNvcHkyVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCBvZmZz
ZXQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIsIHJvd1BpdGNoOiBV
aW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEsIGltYWdlSGVpZ2h0OiBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29w
eTJWaWV3ID0ge3RleHR1cmU6IHRleHR1cmUsIG1pcExldmVsOiAxfTsKLSAgICBjb25zdCBjb3B5
MlNpemUgPSB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNv
ZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weTJWaWV3LCB0ZXh0dXJlQ29weTJWaWV3
LCBjb3B5MlNpemUpOwotCi0gICAgY29uc3QgY2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAx
LCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRw
dXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9y
ZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRh
Y2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRk
ODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2
ZWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRjNzhlMTU2MTg3MTgwMzMxNzRh
OGNiZjg4NGY1OWQ1MzdhODNiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVs
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBg
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdp
c3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQg
MCB7Ci0gICAgcmV0dXJuIFNhbXBsZUxldmVsKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIGZsb2F0
MigwLjUsIDAuNSksIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19Owot
ICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3Zl
cnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1w
bGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVy
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1
ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAg
IGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0
dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5ldyBV
aW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
NV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0g
PSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAwOwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzEyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNd
ID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDog
InJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJl
VXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVy
ZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdG
aWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVy
ID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
YmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30s
IHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERl
c2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBC
aW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
Ci0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIs
IHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVp
Z2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25z
dCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNvcHkx
U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29k
ZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcs
IGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVy
ZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAy
ICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9
OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07
Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcs
IHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4ZDg2YWI1ZDViNjE2NmZjZDBkMjI0MTExZmYxNGNmOTMzZWM4
NzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDE0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
VGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVT
YW1wbGVyIDogcmVnaXN0ZXIoczEpKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gU2FtcGxl
KHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIGZsb2F0MigwLjUsIDAuNSkpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0
cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwot
ICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAs
IHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1
ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0
dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJy
YXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVy
ZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDI1NTsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbOF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMTJdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDI1NTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6
IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQ
VVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsKLSAgICBj
b25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0g
ICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0b3IgPSB7bWFnRmlsdGVyOiAibGluZWFyIiwgbWluRmls
dGVyOiAibGluZWFyIn07Ci0gICAgY29uc3Qgc2FtcGxlciA9IGRldmljZS5jcmVhdGVTYW1wbGVy
KHNhbXBsZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0gW3ti
aW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXd9LCB7YmluZGluZzogMSwgcmVzb3VyY2U6
IHNhbXBsZXJ9XTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmlu
ZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogYmluZEdyb3VwQmluZGluZ3N9OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLQotICAgIGNvbnN0IGJ1ZmZlckNvcHlW
aWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7dGV4
dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29weVNpemUgPSB7d2lkdGg6IDIsIGhlaWdodDog
MiwgZGVwdGg6IDF9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVm
ZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgY29weVNpemUpOwotCi0gICAgY29uc3QgY2xl
YXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yfV07Ci0g
ICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJl
bmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZm
ZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5zaW9u
YWwtYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1l
bnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVu
c2lvbmFsLWFycmF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lv
bmFsLWFycmF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNWI2MTkzNzE0
OWZjZjI1M2Q2NTJhM2M0ZWQ1OGM0YmVkNTQ3M2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNp
b25hbC1hcnJheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVy
U291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFsxMF1bXSBhcnJheSwgZmxvYXRbMTBd
IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSAr
IDEpIHsKLSAgICAgICAgYXJyYXlbaV0gPSB2YWx1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgZmlsbCh0
aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7
IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBhcnJheVtpXSA9IHZhbHVl
OwotICAgIH0KLX0KLQotYm9vbCBjb250YWlucyh0aHJlYWQgZmxvYXRbMTBdW10gYXJyYXksIGZs
b2F0IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0g
aSArIDEpIHsKLSAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgYXJyYXlbal0ubGVuZ3RoOyBq
ID0gaiArIDEpIHsKLSAgICAgICAgICAgIGlmIChhcnJheVtpXVtqXSAhPSB2YWx1ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgY29udGFpbnModGhyZWFkIGZsb2F0W10gYXJyYXksIGZsb2F0IHZhbHVl
KSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsK
LSAgICAgICAgaWYgKGFycmF5W2ldICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotW251bXRocmVhZHMoMSwgMSwgMSldCi1j
b21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgaW50W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXRb
MTBdWzVdIGFycmF5OwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gNSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGlmICghY29udGFpbnMoQGFycmF5LCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsKLSAgICAgICAg
ZmxvYXRbMTBdIHZhbHVlOwotICAgICAgICBmaWxsKEB2YWx1ZSwgZmxvYXQoaSkpOwotICAgICAg
ICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLQotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFy
cmF5Lmxlbmd0aDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZsb2F0WzEwXSB2YWx1ZSA9IGFycmF5
W2ldOwotICAgICAgICBpZiAoIWNvbnRhaW5zKEB2YWx1ZSwgZmxvYXQoaSkpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0
ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRl
ciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczog
W3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19Owot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9
IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVy
LCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFy
cmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0
c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UK
LSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGI3OGViNjFhNmEzODE2MjRmZjFkOTM5N2QzMWQ4ZTg5NGU1N2M0My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAK
LQotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1cm4KLVBBU1MgdHlwZU1pc21hdGNoVmFyaWFibGVEZWNs
Ci1QQVNTIHR5cGVNaXNtYXRjaEFzc2lnbm1lbnQKLVBBU1MgdHlwZU1pc21hdGNoUmV0dXJuUGFy
YW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90eXBlLW1pc21hdGNoLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0OGUxNDgxZTVlYTEwNmUwNDRmY2NkZGE4ZGVmZjk0
NDU4YmM5MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDYyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1o
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiAxMC41OwotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLX0KLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wgPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9p
ZCBmb28odWludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0geDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudHlwZU1pc21hdGNo
QXNzaWdubWVudCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICAgICAgeSA9IHg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFJldHVyblBhcmFtID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBmb28odWludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4
OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci0KLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3VpbnQtYml0d2lzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmM0YWI4OTE2ZDc3Y2VhMTkyY2Q4MzRmNWNiYTc2YWI4NTA2YmNmMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
Ci1QQVNTIHVpbnRCaXRBbmQKLVBBU1MgdWludEJpdE9yCi1QQVNTIHVpbnRCaXRYb3IKLVBBU1Mg
dWludEJpdE5vdAotUEFTUyB1aW50TFNoaWZ0Ci1QQVNTIHVpbnRSU2hpZnQKLVBBU1MgdWludFNp
bXBsZU1hdGgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQtYml0
d2lzZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjNkNmIwYjYyZjliMDlhMjczNzlkYzg1ZTVm
NTRmM2Q3OGRkYWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy51aW50Qml0QW5kID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGEgJiBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgx
KSwgbWFrZVVpbnQoNyldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0MildKSwg
NDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRoLnBvdygy
LCAzMikgLSA3KV0pLCA0Mjk0OTY3Mjg5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKSwgbWFrZVVpbnQoODU3MzIp
XSksIDApOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXRPciA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhIHwgYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMSksIG1ha2VVaW50KDcpXSksIDcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVp
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoNDIp
XSksIDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoTWF0
aC5wb3coMiwgMzIpICAtIDcpXSksIDQyOTQ5NjcyOTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWlu
dCg4NTczMildKSwgODU3MzIpOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXRYb3IgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWlu
dCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0KLSAg
ICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSks
IG1ha2VVaW50KDQyKV0pLCA2NTQ5Myk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSks
IG1ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtl
VWludCg4NTczMildKSwgODU3MzIpOwotfQotCi13aGxzbFRlc3RzLnVpbnRCaXROb3QgPSBhc3lu
YyAoKSA9PiB7IAotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB+YTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoMSldKSwgNDI5NDk2NzI5NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpXSksIDQyOTQ5MDE3
NjApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpXSksIDApOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDAp
XSksIDQyOTQ5NjcyOTUpOwotfQotCi13aGxzbFRlc3RzLnVpbnRMU2hpZnQgPSBhc3luYyAoKSA9
PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA8PCBiOwotICAgICAgICB9Ci0gICAg
YDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgMTI4KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSks
IG1ha2VVaW50KDIpXSksIDI2MjE0MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSks
IG1ha2VVaW50KDUpXSksIDQyOTQ5NjcyNjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0p
LCAwKTsKLX07Ci0KLXdobHNsVGVzdHMudWludFJTaGlmdCA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDEpLCBtYWtlVWludCg3KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDIp
XSksIDE2MzgzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoNSld
KSwgMTM0MjE3NzI3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgwKSwgbWFrZVVpbnQoMyldKSwgMCk7Ci19OwotCi13
aGxzbFRlc3RzLnVpbnRTaW1wbGVNYXRoID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICsgeTsgfSI7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoNyksIG1ha2VVaW50KDUpXSksIDEyKTsKLQotICAgIHByb2dyYW0gPSAidWludCBmb28odWlu
dCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQo
NSldKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoNSksIG1ha2VVaW50KDcpXSksIDQyOTQ5NjcyOTQpOwotCi0g
ICAgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAqIHk7IH0i
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCAzNSk7Ci0KLSAgICAvLyBGSVhNRTogbWFr
ZSB0aGlzIHdvcms6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk2
MDIKLSAgICAvLyBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4
IC8geTsgfSI7Ci0gICAgLy8gYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDIpXSksIDMpOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtMi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ5MzU2MGUxMmY4NTg3NmZj
NjhmMzJiMzgxYTVhOWNlNDMxNzljZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJp
YWJsZS0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09M
RSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBp
bGUgZXJyb3I6IDQ6MjU6IENhbm5vdCBmaW5kIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KLVBB
U1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJs
ZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJs
ZS0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMzA0YWU1NGE0ZGFiNzM5
OTNmM2ZiMDliMDdhM2IxMTBkYWYzYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFy
aWFibGUtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
KGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDog
U1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NCB2ZWMgPSBmbG9hdDQoeCx4LHgseCk7
Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICBjb25zdCBhZGFwdGVyID0g
YXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpOwotICAgIGNvbnN0IGRldmljZSA9
IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDczYzNkMDAzOWU5ODVkYjJjNWY3NGEyMDIwYmY4YmQ1OTk5NGZj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBpbGUgZXJyb3I6IDY6OTogQ2Fubm90IGZp
bmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5YzUwMDczN2IyZmNlNjA2MWM4YjU4ZDg5NzI4ODYyYzE1MDY5MTRiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQot
Y29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0
ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxv
YXQgZm9vOwotICAgIGlmIChmb28pIHsKLSAgICAgICAgeCA9IHggKyAxOwotICAgIH0KLX0KLWA7
Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBu
YXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdhaXQg
YWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBj
b21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRl
U2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1z
aGFkb3dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZhcmlhYmxl
LXNoYWRvd2luZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNj
YjliMmQwMWZkYzU3ZTNkM2Y0OTBiMTE5OTk0ZjgwMzY3MjNmMDYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zh
cmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAg
QEAKLQotUEFTUyB2YXJpYWJsZVNoYWRvd2luZwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAxNWEwY2JhN2QxNzBlMWFjNGYxOWYyZTA3NTQzNTZkMjJlOTI0NDkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZhcmlhYmxlLXNoYWRvd2luZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4
LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnZhcmlhYmxlU2hhZG93
aW5nID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
bygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAgICAgICAgaW50IHggPSA3
OwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gODsKLSAgICAgICAgICAg
ICAgICB5ID0geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10pLCA4KTsKLQotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgIGludCB4ID0gNzsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeCA9IDg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB5ID0geDsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCA3KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzZlNjUxNmZhYTFl
MmZjZDFiNWE5Zjk2N2I2MWMxZmFlMzdhYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFy
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgdmVj
dG9yTFQKLVBBU1MgdmVjdG9yTFQyCi1QQVNTIHZlY3RvckxUMwotUEFTUyB2ZWN0b3JMVEUKLVBB
U1MgdmVjdG9yTFRFMgotUEFTUyB2ZWN0b3JMVEUzCi1QQVNTIHZlY3RvckdUCi1QQVNTIHZlY3Rv
ckdURQotUEFTUyB2ZWN0b3JHVEUyCi1QQVNTIHZlY3RvckdURTMKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWFiZDY5M2NjZjc3ODA1NjNhYmJmNjNjNDA0N2YxYWQ4NjFjMTkyZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JM
VCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAg
ICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBhbGwodiA8IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHYgPSBp
bnQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBpbnQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyIC09
IDEwOwotCi0gICAgICAgICAgICByZXR1cm4gIWFueSh2IDwgdjIpOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxUMyA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2Owot
ICAgICAgICAgICAgdjIueSArPSAxMDsKLQotICAgICAgICAgICAgYm9vbDIgcmVzdWx0ID0gdiA8
IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHQueCAmJiByZXN1bHQueTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVEUgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAg
IGZsb2F0MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICBy
ZXR1cm4gYWxsKHYgPD0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19
OwotCi13aGxzbFRlc3RzLnZlY3RvckxURTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZs
b2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFRFMyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2
ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAg
ICAgICAgIHYyLnkgLT0gMS4wOwotCi0gICAgICAgICAgICBib29sMiByZXN1bHQgPSB2IDw9IHYy
OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC54ICYmICFyZXN1bHQueTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVCA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxv
YXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVy
biAhYW55KHYgPiB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMudmVjdG9yR1RFID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIg
Kz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+PSB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFMiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIg
PSB2OwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPj0gdjIpOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckdURTMgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBpbnQyIHYgPSBpbnQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBpbnQyIHYyID0gdjsK
LSAgICAgICAgICAgIHYyLnkgKz0gMTA7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYg
Pj0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgIXJlc3VsdC55OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNTAyMDA5ZWYwMzIwZjAyNzVjNGVmYWM0ZTViZjNkOTg2NDhhMDU1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotCi1QQVNTIHZlY3RvckNvbnN0cnVjdG9yCi1QQVNTIHZlY3RvckNv
bnN0cnVjdG9yMgotUEFTUyB2ZWN0b3JDb25zdHJ1Y3RvcjMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVhMmZjNGVkYWVlODIyOWNlNGNkMmU0MGNmZTBiYWI0MzA0OGQ3ODMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+dmVjdG9yIGN0
b3IuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3Ry
dWN0b3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDMgdiA9IGZsb2F0MyhmbG9hdDIoMTAuMCwgMTEu
MCksIDEyLjApOwotICAgICAgICAgICAgcmV0dXJuIHYueCA9PSAxMC4wICYmIHYueSA9PSAxMS4w
ICYmIHYueiA9PSAxMi4wOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLnZlY3RvckNvbnN0cnVjdG9yMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MyB2
ID0gZmxvYXQzKDEwLjAsIGZsb2F0MigxMS4wLCAxMi4wKSk7Ci0gICAgICAgICAgICByZXR1cm4g
di54ID09IDEwLjAgJiYgdi55ID09IDExLjAgJiYgdi56ID09IDEyLjA7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0b3Iz
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgYm9vbDMgdiA9IGJvb2wzKHRydWUsIGJvb2wyKGZhbHNlLCB0cnVl
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdi54ICYmICF2LnkgJiYgdi56OwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTAyNzg5OTM1NzdiZDdkMWYxNWRk
MTA3YzZmZWI2ZGRmOGFkYWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9u
LXN1YnRyYWN0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAot
Ci1QQVNTIHZlY3RvckFkZGl0aW9uCi1QQVNTIHZlY3RvclN1YnRyYWN0aW9uCi1QQVNTIG1hdHJp
eEFkZGl0aW9uCi1QQVNTIG1hdHJpeFN1YnRyYWN0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFj
dGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNThkNzQyN2M3NmI2MWE4
NWQxNTllNTA2ZDA0MzFlOWZiYjU2ODAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFk
ZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hs
c2xUZXN0cy52ZWN0b3JBZGRpdGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0g
ZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSB2ICsgNzsKLSAgICAgICAgICAg
IHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUg
PSB2ICsgNzsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxv
YXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwot
ICAgICAgICAgICAgZmxvYXQyIHUgPSA3ICsgdjsKLSAgICAgICAgICAgIHJldHVybiB1Lng7Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0
MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSA3ICsgdjsKLSAgICAg
ICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxv
YXQyIHUgPSArdjsKLSAgICAgICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQp
OwotICAgICAgICAgICAgZmxvYXQyIHUgPSArdjsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwgW10p
LCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0
RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJkIiwgW10pLCAx
MSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImYiLCBbXSksIDQsIGVw
c2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JTdWJ0cmFjdGlvbiA9IGFzeW5jICgpID0+
IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUg
PSB2IC0gNzsKLSAgICAgICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxv
YXQgYigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwot
ICAgICAgICAgICAgZmxvYXQyIHUgPSB2IC0gNzsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0
MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSA3IC0gdjsKLSAgICAg
ICAgICAgIHJldHVybiB1Lng7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxv
YXQyIHUgPSA3IC0gdjsKLSAgICAgICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZmxvYXQgZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDMs
IDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSAtdjsKLSAgICAgICAgICAgIHJldHVybiB1Lng7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MiB2ID0gZmxvYXQyKDMsIDQpOwotICAgICAgICAgICAgZmxvYXQyIHUgPSAtdjsKLSAgICAg
ICAgICAgIHJldHVybiB1Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAtNCwg
ZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgICJiIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCA0LCBlcHNp
bG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAgImQiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZSIsIFtdKSwgLTMsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZiIsIFtdKSwgLTQsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhBZGRp
dGlvbiA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQg
YSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIo
MywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gbSArIDc7Ci0g
ICAgICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0
KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtICsgNzsKLSAgICAg
ICAgICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBm
bG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IDcgKyBtOwotICAgICAgICAg
ICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0
Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyArIG07Ci0gICAgICAgICAgICBy
ZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUs
IDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSArbTsKLSAgICAgICAgICAgIHJldHVybiBu
WzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwot
ICAgICAgICAgICAgZmxvYXQyeDIgbiA9ICttOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJhIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNz
ZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwg
W10pLCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAxMCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJkIiwgW10p
LCAxMSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0
RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImYiLCBbXSksIDQs
IGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhTdWJ0cmFjdGlvbiA9IGFzeW5jICgp
ID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgYSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1
LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gbSAtIDc7Ci0gICAgICAgICAgICByZXR1
cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYp
KTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtIC0gNzsKLSAgICAgICAgICAgIHJldHVybiBu
WzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwot
ICAgICAgICAgICAgZmxvYXQyeDIgbiA9IDcgLSBtOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1b
MF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBuID0gNyAtIG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVsxXTsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxv
YXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAg
ICAgIGZsb2F0MngyIG4gPSAtbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAgICAg
ICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBt
ID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxv
YXQyeDIgbiA9IC1tOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgICJhIiwgW10pLCAtNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwgW10pLCAtMywgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJjIiwgW10pLCA0LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDMsIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICAiZSIsIFtdKSwgLTMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgLTQsIGVwc2lsb24pOwotfTsK
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2NDNhNDhjZDkwMjBiZmE2MjhhMDc0MjE2NDM4YWI0
OWE2MzZjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JUeXBlU3ludGF4Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLXN5bnRheC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxOTFmNTZmZWU2MGI2OWQ1ZDQ4MzAwZGZhYTBmNWVkZDRlYjMwY2NhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUeXBlU3ludGF4
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbzIo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8aW50
LCAyPiB6ID0gaW50MigzLCA0KTsKLSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAgcmV0
dXJuIHgueTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmb28zKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaW50MyB4OwotICAgICAgICAgICAgdmVjdG9yPGludCwgMz4geiA9IGludDMoMywg
NCwgNSk7Ci0gICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lno7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgZm9vNCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDQg
eDsKLSAgICAgICAgICAgIHZlY3RvcjxpbnQsND4geiA9IGludDQoMywgNCwgNSwgNik7Ci0gICAg
ICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lnc7Ci0gICAgICAgIH1gOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBb
XSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28zIiwgW10pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgNik7Ci0KLSAgICBwcm9ncmFtID0gYAotICAgICAgICB0
eXBlZGVmIGkgPSBpbnQ7Ci0gICAgICAgIGludCBmb28yKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaW50MiB4OwotICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBpbnQyKDMsIDQpOwotICAg
ICAgICAgICAgeCA9IHo7Ci0gICAgICAgICAgICByZXR1cm4geC55OwotICAgICAgICB9YDsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28yIiwg
W10pLCA0KTsKLX0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUt
cGFyYW1ldGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcz
ODI4Yzc0MWMyZTVkMzk2ZDdmMTE2MDE4NjkwNDQxYmIzZDE5OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9p
ZC12YXJpYWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0KLVBBU1Mgdm9pZFZhcmlhYmxlCi1QQVNTIHZvaWRQYXJhbWV0ZXIKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUtcGFyYW1ldGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFmNjE5NTBmYmQzNjhhMjgyN2M1NTBj
ODVjZjg0YzQ1ZTRjODIwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLnZvaWRWYXJpYWJsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAg
ICAgICB2b2lkIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3Rz
LnZvaWRQYXJhbWV0ZXIgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28odm9pZCB4KSB7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVh
ay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJl
YWstZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDky
MmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9v
cC1icmVhay1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9v
cC1icmVhay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWsu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg2YTJmNDVjOWFiZjExNjZkOGM1
MzI5ZWE0MDBiODNkOTlkZDYyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRy
aWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsK
LSAgICB1aW50IGkgPSAwOwotICAgIHdoaWxlIChpIDwgMTApIHsKLSAgICAgICAgaWYgKGIpIHsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gc2hhZGUgKyAx
LjA7Ci0gICAgICAgIGkgPSBpICsgMTsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUs
IHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0
ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0g
ICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQi
LCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJp
YnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0
dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwot
ICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
cmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNv
dXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLQotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1s
b29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hp
bGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvd2hpbGUtbG9vcC1jb250aW51ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyZWZmMzU3MTljZTgwZDdlNDgxYWQzMGUxMDBiMThhMDQzNzhhZThiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0K
LQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1
bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKChz
aGFkZSA9IHNoYWRlICsgMC4xLCBpIDwgMTApKSB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAg
ICAgICBpID0gaSArIDE7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg
ICBzaGFkZSA9IDAuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsK
LSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAx
LjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3Qg
YXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6
IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwot
ICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9
OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0g
e3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1
bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91
cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2
ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxT
dGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0
fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERl
c2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1
ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBh
d2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZm
ZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4xOwotCi0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs5XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9
IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4xOwotICAgIHZlcnRl
eEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VC
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5t
YXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZl
ciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCBy
ZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9
IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07
Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1
Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJn
cmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBD
aGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dh
cENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcg
PSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5k
RW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0
IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1l
bnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVs
bCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2lu
UmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1
ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hsc2wtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVh
MzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvd2hsc2wuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTliYjBhMzg3Yzk4ZTE3MGJhOWNk
MzU4ZmI0YTc2ZWJhOTIzZWVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTI4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0
cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0g
InRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRG
YWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAx
NX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0g
bnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9u
OiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBh
dHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTog
NCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1
dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAu
bWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFG
bG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAx
OwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwg
MF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5k
RW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAg
ICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRy
YXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2IxODE5ZjBhMjEyNWExOGY5ZGM5MzUxMjhjZTMw
NGM5YTljMjMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi1QQVNTIGJpdEFuZFdyb25nQXJn
dW1lbnRMZW5ndGgKLVBBU1MgYml0Tm90V3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXRPcldy
b25nQXJndW1lbnRMZW5ndGgKLVBBU1MgYml0WG9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBk
ZWNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRpdmlkZVdyb25nQXJndW1lbnRMZW5ndGgKLVBB
U1MgZG90T3BlcmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRvdE9wZXJhdG9y
V3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBncmVhdGVyRXF1YWxXcm9uZ0FyZ3VtZW50TGVuZ3Ro
Ci1QQVNTIGdyZWF0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGluY1dyb25nQXJndW1lbnRM
ZW5ndGgKLVBBU1MgaW5kZXhPcGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1Mg
aW5kZXhPcGVyYXRvcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbFNoaWZ0V3JvbmdBcmd1bWVu
dExlbmd0aAotUEFTUyBtaW51c1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbW9kdWxvV3JvbmdB
cmd1bWVudExlbmd0aAotUEFTUyBwbHVzV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyByU2hpZnRX
cm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHRpbWVzV3JvbmdBcmd1bWVudExlbmd0aAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZGE3MWUyZmZiNThhMzMwZjcyZDYzODI4
MTRlNDdiZmNmZmU2OTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzY0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+VGVzdCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMuYml0QW5kV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJihGb28pIHsgcmV0dXJuIDMyOyB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ImKEZvbykgeyBy
ZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQg
b3BlcmF0b3ImKEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLX0KLXdobHNsVGVzdHMuYml0Tm90V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3J+KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIGludCBvcGVyYXRvcn4oRm9vLCBGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmJpdE9yV3JvbmdBcmd1bWVudExlbmd0aCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yfCgpIHsgcmV0dXJu
IDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0
b3J8KEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAg
ICAgICAgICBpbnQgb3BlcmF0b3J8KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuYml0WG9yV3JvbmdBcmd1bWVudExlbmd0
aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBpbnQgb3BlcmF0b3JeKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0
IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oRm9vKSB7IHJldHVybiA1MzQ7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oRm9v
LCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hs
c2xUZXN0cy5kZWNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci0tKCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvci0tKEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci13aGxzbFRlc3RzLmRpdmlkZVdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9Pgot
ewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJh
dG9yLygpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3IvKEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3IvKEZvbywgRm9vLCBGb28pIHsgcmV0
dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZG90T3BlcmF0
b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
ICAgICBGb28gb3BlcmF0b3IuZm9vPSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgICAgICBGb28gb3BlcmF0b3IuZm9vPShGb28pIHsgcmV0dXJuIDQy
OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBGb28gb3BlcmF0b3Iu
Zm9vPShGb28sIGludCwgaW50KSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci13aGxzbFRlc3RzLmRvdE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3IuZm9vKCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oRm9vLCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZ3JlYXRlckVxdWFsV3JvbmdBcmd1
bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oRm9vKSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBi
b29sIG9wZXJhdG9yPj0oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmdyZWF0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I+KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAgICAg
ICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4oRm9vKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPihG
b28sIEZvbywgRm9vKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0K
LXdobHNsVGVzdHMuaW5jV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IrKygp
IHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBp
bnQgb3BlcmF0b3IrKyhGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotd2hsc2xUZXN0cy5pbmRleE9wZXJhdG9yU2V0dGVyV3JvbmdBcmd1bWVudExlbmd0
aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBpbnQgb3BlcmF0b3JbXT0oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3JbXT0oaW50KSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3Jb
XT0oaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LX0KLXdobHNsVGVzdHMuaW5kZXhPcGVyYXRvcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50
IG9wZXJhdG9yW10oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShp
bnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMu
bFNoaWZ0V3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I8PCgpIHsgcmV0dXJu
IDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0
b3I8PChGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yPDwoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5taW51c1dyb25nQXJndW1lbnRMZW5n
dGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yLSgpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItKEZvbywgRm9vLCBGb28pIHsgcmV0
dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMubW9kdWxvV3Jv
bmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IlKCkgeyByZXR1cm4gMzI7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciUoRm9vKSB7
IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGlu
dCBvcGVyYXRvciUoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotfQotd2hsc2xUZXN0cy5wbHVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3IrKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIGludCBvcGVyYXRvcisoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5yU2hpZnRXcm9uZ0FyZ3VtZW50TGVu
Z3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGludCBvcGVyYXRvcj4+KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcj4+KEZvbykgeyByZXR1cm4gNTM0
OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I+
PihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19
Ci13aGxzbFRlc3RzLnRpbWVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3Iq
KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAg
IGludCBvcGVyYXRvciooRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZv
byB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciooRm9vLCBGb28sIEZvbykgeyByZXR1cm4g
NzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9u
Zy10eXBlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDkx
ZTUzMTZjOWY2NmE4ZmNlYzhlOTIxMmI2MjRlZWQ3MzA3ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25n
LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNT
IGRlY1dyb25nVHlwZXMKLVBBU1MgaW5jV3JvbmdUeXBlcwotUEFTUyBncmVhdGVyVGhhbldyb25n
UmV0dXJuVHlwZQotUEFTUyBncmVhdGVyRXF1YWxXcm9uZ1JldHVyblR5cGUKLVBBU1MgaW5kZXhT
ZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0aE1pc21hdGNoZWRUeXBlCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy10eXBlcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZjMWFiMmNmYmUyNDQ0MTI3YzIxOTk1NTNkNTA1Mjk2OWFjN2Y2NzYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgaW50IGJpdCBt
YXRoLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRlY1dyb25nVHlw
ZXMgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IG9wZXJhdG9yLS0oZmxvYXQpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5pbmNXcm9uZ1R5cGVzID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvcisrKGZsb2F0KSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci0K
LXdobHNsVGVzdHMuZ3JlYXRlclRoYW5Xcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9Pgotewot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9y
PihpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGEgKyBiOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LX0KLQotd2hsc2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9
PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yPj0oaW50IGEsIGludCBiKSB7IHJldHVybiBhICsgYjsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi19Ci0KLXdobHNsVGVzdHMuaW5kZXhTZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBh
c3luYyAoKSA9PgotewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZmxv
YXQgb3BlcmF0b3JbXShpbnQsIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDUuNDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXT0o
aW50LCB1aW50LCBpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0
MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0
aE1pc21hdGNoZWRUeXBlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGZsb2F0IG9wZXJhdG9yLmZvbyhpbnQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDUuNDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
bnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5
ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVl
cy0yLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxp
emUtdmFsdWVzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxp
emUtdmFsdWVzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzZjc5NjFl
YWVmYjFmZmEyYjlkMzRmODg1MWQ0NGE2YzljODBhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0
aWFsaXplLXZhbHVlcy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotc3Ry
dWN0IEJhciB7Ci0gICAgZmxvYXQgeTsKLSAgICBmbG9hdCB5MTsKLSAgICBmbG9hdCB5MjsKLSAg
ICBmbG9hdCB5MzsKLSAgICBmbG9hdCB5NDsKLSAgICBmbG9hdCB5NTsKLSAgICBmbG9hdCB5NjsK
LSAgICBmbG9hdCB5NzsKLSAgICBmbG9hdCB5ODsKLSAgICBmbG9hdCB5OTsKLSAgICBmbG9hdCB5
MTA7Ci0gICAgZmxvYXQgeTExOwotICAgIGZsb2F0IHkxMjsKLSAgICBmbG9hdCB5MTM7Ci0gICAg
ZmxvYXQgeTE0OwotICAgIGZsb2F0IHkxNTsKLSAgICBmbG9hdCB5MTY7Ci0gICAgZmxvYXQgeTE3
OwotICAgIGZsb2F0IHkxODsKLSAgICBmbG9hdCB5MTk7Ci0gICAgZmxvYXQgeTIwOwotfQotCi12
ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsK
LQotICAgIEJhciBiYXI7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBy
ZXN1bHQuc2hhZGUgPSBiYXIueTIwOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRy
aWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9
OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAg
Y29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZv
cm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9w
b2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRl
LCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVy
MERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBz
aXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsK
LSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1
bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWlu
KHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hh
aW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91
dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVk
ID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMg
PSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBs
b2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBh
c3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9
OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5k
ZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0
LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3Qg
Y29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRR
dWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1
ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxp
emUtdmFsdWVzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNh
ZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3pl
cm8taW5pdGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
ZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYwMzZmODQ1NDRjOTU2NDQxNTc2NDhmY2ZhNDZhMjkyN2Y3MDVjNDkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDAp
OwotfQotCi10aHJlYWQgZmxvYXQqIHB0cigpIHsKLSAgICBmbG9hdCBsb2NhbDsKLSAgICByZXR1
cm4gJmxvY2FsOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAg
VmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcCA9IHB0cigpOwotICAgICpw
ID0gMS4wOwotICAgIGZsb2F0IHZhbHVlID0gKnB0cigpOyAvLyBjYWxsaW5nIHB0cigpIHplcm8g
aW5pdGlhbGl6ZXMuCi0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1
bHQuc2hhZGUgPSB2YWx1ZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQot
YDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZl
cnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2
ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3Rh
dGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBo
YUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
U3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwg
d3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRl
MSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAg
ICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0
IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1
ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1
ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19
OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5
LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVy
dGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklG
T1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFw
V3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTog
NH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTog
YnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHty
OiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3th
dHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9w
OiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwg
MCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1h
bmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUo
KS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434565</attachid>
            <date>2021-07-29 13:26:04 -0700</date>
            <delta_ts>2021-07-29 13:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210729132559.patch</filename>
            <type>text/plain</type>
            <size>3940043</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi40NDY5MGI5Zjg0YTUyYzQ1
ZGY1NDI0YTkyZGY1ZTY2ZDA1MjYzZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGMwODU4ZTM4NWZlZDlmNWNhYmI1MjBlZmQzOTM4Y2U5MGRhODM0MzEuLmUyZGMy
YjA4NTcxMmMxNDFmMGNiMWVkNjgwMzk4YTM5MDRjMzVkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXVkaW9dIEFkZCB3ZWJtL29w
dXMgY29udGFpbmVyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NjRhNTIzNjAwY2U5N2MxZjZhMGUx
OWVlNWIxYTEwMjNiMzMzNGY3Li4zZWYyZjg4YTFlNzg3ZmZkMjY0ODc0YmUwYTJmMjdhZjY1MmU3
NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDg3IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1
aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBz
aXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgx
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BV
T3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9m
TWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVRl
eHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3Iu
aWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVz
Y3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
K0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BV
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNz
RXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVs
dERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5j
dGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2Fs
RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxl
VHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2Uu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0
Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0
YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2Fs
Y3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
QVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVw
bGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJp
ZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVM
aWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmlu
Z1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNj
b3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5k
YXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1l
cmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRp
bmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNj
b3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3Lmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmg6IFJl
bW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmlk
bDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdl
YkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
OjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJl
Y29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpkZXZpY2VDb250
ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUlt
cGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BV
RGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnBpcGVsaW5lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZEFjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVURldmljZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ry
b3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hhaW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJv
eVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3Vw
QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRC
dWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
cGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURl
c2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RXJyb3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJv
ckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yU2NvcGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUV4dGVudDNELmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxpbWl0cy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMb2FkT3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVT2JqZWN0QmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVPdXRPZk1lbW9yeUVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVQbGF0Zm9ybVR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVF1ZXVlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2Ft
cGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1w
bGVyRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTaGFkZXJNb2R1bGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNh
Z2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
VmFsaWRhdGlvbkVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVm
ZmVyTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBl
bGluZU1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVEZXZpY2VNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFs
Q29udmVydExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVl
dWVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFs
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVT
aGFkZXJNb2R1bGVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNh
cHR1cmVyTWFjLm1tOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5n
ZWQpOgorCiAyMDIxLTA3LTI4ICBBZGEgQ2hhbiAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViWFJdIFJlcXVpcmUgR0xfT0VTX0VHTF9pbWFnZSBleHRlbnNpb24gZm9yIHhyQ29t
cGF0aWJsZSBHTCBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2ZTUwODVkMjRkOTI1ZDk0NTk0ZTljM2I3
MGZiOWQxODkxYTA4NWUuLjBiMDkyZTM4YjZkYWI1OWI3ZjFiN2MyZWI5ZDdkOThlZmUwOWM0ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcg
V2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRmVhdHVyZUZs
YWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3Q6CisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktp
dC1pb3MucGxpc3Q6CisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdDoK
KyAgICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3Q6CisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmRlZmF1bHRXZWJHUFVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6CisKIDIwMjEtMDctMjggIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXVkaW9dIEFkZCB3ZWJtL29wdXMgY29u
dGFpbmVyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1YWQ3MDRhM2Jh
Y2I2YWE3OWIyZmVhMDMzYWQ5ODEwNDkyZGQ3ZTg1Li40NGI0MmI0NTgyNThlMjA3NWM1YzE4Mzg0
ZDNjN2Y3OWExNTIyZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wg
Y29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtX
ZWJQcmVmZXJlbmNlcyB3ZWJHUFVFbmFibGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIHNldFdlYkdQVUVuYWJsZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbToKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdFdlYkdQ
VUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmg6CisKIDIwMjEtMDctMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TIE1vbnRlcmV5XSBQcmVzc2luZyBGbitFIHNob3VsZCBwcmVz
ZW50IHRoZSBlbW9qaSBwaWNrZXIgd2hlbiBlZGl0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgppbmRleCAwOGMxMDA1MTc2
YTk2MGU3MzQxZDQwYTlkNzUyNWZhNjUxYjM0YmZmLi41MTMzYWM3NWJkOGE5NWY1NzQxOTZiYzQy
MDQyZWRhNjEzMWEyZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTExLDI1ICsxMSwyNSBAQAogICAgICAgICB9
LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiUHJvZ3JhbUlkIiwKLSAgICAgICAgICAg
ICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8
IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAg
ICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlVuaXF1ZSBzaGFkZXIgcHJvZ3JhbSBpZGVudGlmaWVyLiIKICAgICAgICAgfSwKICAgICAgICAg
ewogICAgICAgICAgICAgImlkIjogIkNvbnRleHRUeXBlIiwKICAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCi0gICAgICAgICAgICAiZW51bSI6IFsiY2FudmFzLTJkIiwgImJpdG1hcHJlbmRl
cmVyIiwgIndlYmdsIiwgIndlYmdsMiIsICJ3ZWJncHUiXSwKKyAgICAgICAgICAgICJlbnVtIjog
WyJjYW52YXMtMmQiLCAiYml0bWFwcmVuZGVyZXIiLCAid2ViZ2wiLCAid2ViZ2wyIl0sCiAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2YgcmVuZGVyaW5nIGNvbnRleHQgYmFj
a2luZyB0aGUgY2FudmFzIGVsZW1lbnQuIgogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAg
ICAgICAiaWQiOiAiUHJvZ3JhbVR5cGUiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVm
aW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dF
QkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZp
bmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiY29tcHV0ZSIsICJyZW5kZXIiXQogICAg
ICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiU2hhZGVyVHlwZSIsCi0gICAg
ICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dF
QkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAg
ICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VC
R0wiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJlbnVtIjog
WyJjb21wdXRlIiwgImZyYWdtZW50IiwgInZlcnRleCJdCiAgICAgICAgIH0sCkBAIC00NSw3ICs0
NSw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVtdWx0aXBsaWVkQWxwaGEiLCAi
dHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdM
LCBXZWJHTDIiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIldlYkdMLCBXZWJHTDIiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmYWlsSWZN
YWpvclBlcmZvcm1hbmNlQ2F2ZWF0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wyIiB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicG93ZXJQcmVmZXJlbmNlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIsIFdlYkdQVSIgfQorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicG93ZXJQcmVmZXJlbmNlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIiIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtNjQsMTQgKzY0LDEzIEBACiAgICAgICAg
IH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJTaGFkZXJQcm9ncmFtIiwKLSAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBhIFdlYkdML1dlYkdMMiBz
aGFkZXIgcHJvZ3JhbSBvciBXZWJHUFUgc2hhZGVyIHBpcGVsaW5lLiIsCi0gICAgICAgICAgICAi
Y29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAo
ZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBXZWJHTC9XZWJHTDIgc2hhZGVyIHBy
b2dyYW0uIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wp
ICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAg
ICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFt
SWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJw
cm9ncmFtVHlwZSIsICIkcmVmIjogIlByb2dyYW1UeXBlIiB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52YXNJZCJ9ICwKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyIiwgInR5cGUiOiAiYm9vbGVh
biIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0
aGUgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIgbW9kdWxlcyBhcmUgdGhlIHNhbWUgb2JqZWN0
IGZvciBhIHJlbmRlciBzaGFkZXIgcGlwbGVpbmUgZm9yIGEgV2ViR1BVIGRldmljZS4iIH0KKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQifQog
ICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKQEAgLTE1MSw3ICsxNTAsNyBAQAogICAg
ICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0U2hhZGVyU291cmNlIiwKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGUgc291cmNlIG9mIHRoZSBzaGFkZXIg
b2YgdGhlIGdpdmVuIHR5cGUgZnJvbSB0aGUgcHJvZ3JhbSB3aXRoIHRoZSBnaXZlbiBpZC4iLAot
ICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJM
RV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAor
ICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxF
X1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVmIjogIlNoYWRlclR5cGUiIH0KQEAgLTE2
Myw3ICsxNjIsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJ1cGRhdGVTaGFk
ZXIiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBpbGVzIGFuZCBsaW5rcyB0aGUg
c2hhZGVyIHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3aXRoIHRoZSBnaXZlbiBzb3VyY2UgY29k
ZS4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQ
VSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYg
RU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVmIjogIlNoYWRlclR5cGUiIH0s
CkBAIC0yNDYsMTQgKzI0NSwxNCBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAg
ICAibmFtZSI6ICJwcm9ncmFtQ3JlYXRlZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihk
ZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVf
V0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRl
ZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkZXJQcm9ncmFtIiwgIiRy
ZWYiOiAiU2hhZGVyUHJvZ3JhbSIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFtRGVsZXRlZCIsCi0gICAgICAgICAgICAi
Y29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAo
ZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAi
Y29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9n
cmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0KICAgICAgICAgICAgIF0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvci5weQppbmRleCAyOWEyZGVhNzI0ZjBiYmVjZmViYTZkYjkyMDYwODE3MDFlNTEwYzUx
Li5iYzQ4NTBiZmY0MzNjNzk2ODRiZTA5NDM0YTBlMGRjMTgyOWQ0NzAwIDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3Iu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdG9yLnB5CkBAIC01MSw3ICs1MSw2IEBAIF9FTlVNX0lERU5USUZJRVJfUkVOQU1FX01B
UCA9IHsKICAgICAnY2FudmFzLXdlYmdsMic6ICdDYW52YXNXZWJHTDInLCAgIyBSZWNvcmRpbmcu
VHlwZS5jYW52YXMtd2ViZ2wyCiAgICAgJ3dlYmdsJzogJ1dlYkdMJywgICMgQ2FudmFzLkNvbnRl
eHRUeXBlLndlYmdsCiAgICAgJ3dlYmdsMic6ICdXZWJHTDInLCAgIyBDYW52YXMuQ29udGV4dFR5
cGUud2ViZ2wyCi0gICAgJ3dlYmdwdSc6ICdXZWJHUFUnLCAgIyBDYW52YXMuQ29udGV4dFR5cGUu
Z3B1CiAgICAgJ2JpdG1hcHJlbmRlcmVyJzogJ0JpdG1hcFJlbmRlcmVyJywgICMgQ2FudmFzLkNv
bnRleHRUeXBlLmJpdG1hcHJlbmRlcmVyCiAgICAgJ21lZGlhc291cmNlJzogJ01lZGlhU291cmNl
JywgICMgQ29uc29sZS5DaGFubmVsU291cmNlLm1lZGlhc291cmNlCiAgICAgJ3dlYnJ0Yyc6ICdX
ZWJSVEMnLCAgIyBDb25zb2xlLkNoYW5uZWxTb3VyY2Uud2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sCmluZGV4IDM2MGEwY2Q4MmM4YjZjM2M4ZmFlNGY4NGUxNTNiY2ExNThiMzY0YzMu
LjlmOTI2MWQ3NjcyMDFkMjI5YTc5ZDQzZTBlMTVlYjhkNjBlZGJiMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55
YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sCkBAIC0xMjI1LDE5ICsxMjI1LDYgQEAgV2ViR0xVc2luZ01ldGFsOgog
ICAgICAgIkhBVkUoV0VCR0xfQ09NUEFUSUJMRV9NRVRBTCkiOiB0cnVlCiAgICAgICBkZWZhdWx0
OiBmYWxzZQogCi1XZWJHUFVFbmFibGVkOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFibGVO
YW1lOiAiV2ViR1BVIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJXZWJHUFUgU2tldGNo
IHByb3RvdHlwZSIKLSAgY29uZGl0aW9uOiBFTkFCTEUoV0VCR1BVKQotICBkZWZhdWx0VmFsdWU6
Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVsdDogV2ViS2l0OjpkZWZhdWx0V2ViR1BV
RW5hYmxlZCgpCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVsdDogV2ViS2l0OjpkZWZhdWx0V2Vi
R1BVRW5hYmxlZCgpCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KIFdlYk1G
b3JtYXRSZWFkZXJFbmFibGVkOgogICB0eXBlOiBib29sCiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBkMTBhYTQyYjgw
YTJiNTc2YzllOGM1YzY5OWE1ZDhiMGVlMmQ4MDA5Li5kODY4OGRjZWI2MDliZTBlNzEyM2U1NDE5
OWQ2MmYzMjFjOGFjOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTkwMiwxMCArOTAy
LDYgQEAKICNlcnJvciAiRU5BQkxFKFdFQkdMMikgcmVxdWlyZXMgRU5BQkxFKFdFQkdMKSIKICNl
bmRpZgogCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKSAmJiAhRU5BQkxFKFdFQkdQVSkKLSNl
cnJvciAiRU5BQkxFKFdITFNMX0NPTVBJTEVSKSByZXF1aXJlcyBFTkFCTEUoV0VCR1BVKSIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykgJiYgIUVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTKQogI2Vycm9yICJFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKSByZXF1aXJlcyBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykiCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCBhOWUxMGEyNTE5ZTA5MzkzMTNiZjJmNThm
NGE5Njk2ZWUyMWY1N2FkLi40NGI0MmQyYjk5NmNhNmU5YjliOTIzYTA3ZWY3N2RjOWFhMTBhOTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC02MTksMTQgKzYxOSw2IEBA
CiAjZGVmaW5lIEVOQUJMRV9XRUJHTDIgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVf
V0VCR1BVKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCi0jZGVmaW5lIEVOQUJMRV9XRUJHUFUgMQotI2VuZGlmCi0KLSNp
ZiAhZGVmaW5lZChFTkFCTEVfV0hMU0xfQ09NUElMRVIpICYmIEVOQUJMRShXRUJHUFUpCi0jZGVm
aW5lIEVOQUJMRV9XSExTTF9DT01QSUxFUiAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJM
RV9XRUJQUk9DRVNTX05TUlVOTE9PUCkgJiYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBFTkFCTEVf
V0VCUFJPQ0VTU19OU1JVTkxPT1AgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGM1
NGEyODI2ZjcwMWY0MmFmZjQyNjJmM2VlNWJkNDliNGU3ZWM0NWEuLmM4ODQ4MDJjMmY2ZDBmMTgz
OGM1OGVjZGJiM2VhOThhMDcwZmFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02MDMsNjkg
KzYwMyw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAKICAgICBNb2R1bGVzL3dl
YmRyaXZlci9OYXZpZ2F0b3IrV2ViRHJpdmVyLmlkbAogCi0gICAgTW9kdWxlcy93ZWJncHUvR1BV
QmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3Jp
cHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbAotICAg
IE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQ
VUNhbnZhc0NvbnRleHQuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCi0gICAg
TW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVu
Y3Rpb24uaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlw
dG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5p
ZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRv
ci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9HUFVTdG9yZU9wLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCi0gICAg
TW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRp
b25FcnJvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cEJpbmRpbmcuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsCi0g
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlckJpbmRpbmcuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsCi0gICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVz
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUXVldWUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCi0g
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNhbXBsZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZVZpZXcuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKLQog
ICAgIE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaWRsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CmluZGV4IGJjMzE2ODdmNjBkYmUwYTg5NDY1NDU4YzUzMzNiYTRkMzhi
MTEwZGMuLjc3Mzk0Yjc2YzQ1ZjZiYWU5N2EwNTAxYWMxYmEyMGVmMTA0YmExYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNTUxLDc0
ICs1NTEsNiBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3IrV2ViRHJpdmVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29s
b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3Jp
cHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlQml0cy5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0dQVU9yaWdpbjNELmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
T3V0T2ZNZW1vcnlFcnJvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VVNhbXBsZXJEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
U2hhZGVyU3RhZ2UuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJT
dGFnZUJpdC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlG
dW5jdGlvbk1hcC5weQotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
dGFuZGFyZExpYnJhcnkudHh0Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsCi0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbAotJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZVZpZXcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZp
Z2F0b3IrR1BVLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9OYXZpZ2F0b3IrV2ViWFIuaWRsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQyYmU1
NzNmMzNkOWIyYjRmNzQxODBiMTQxMjAwZjliMjdlMWViOTAuLmY0N2U1OTk0MjA5YmE3MjY1OWI4
MjU0OTE5MDIzMzVhNjI4NWIyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC01ODcsOCArNTg3LDYgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dTcGVlY2hTeW50aGVzaXMu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJEYXRhYmFzZS5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1dlYkdQ
VS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9N
V2luZG93V2ViR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRGF0YUN1ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRGF0YUN1ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RhdGFUcmFuc2Zlci5jcHAKQEAgLTg1Myw2OCArODUxLDYgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb3JtRGF0YUV2ZW50LmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb3JtRGF0YUV2
ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR0NP
YnNlcnZhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTR0NPYnNlcnZhdGlvbi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dEJpbmRp
bmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmxlbmREZXNjcmlw
dG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVCbGVuZERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZl
clVzYWdlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVQ2FudmFzQ29udGV4dC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVQ2FudmFzQ29udGV4dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVUNvbG9yV3JpdGUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yV3JpdGUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlQml0cy5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZUJpdHMuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21wYXJl
RnVuY3Rpb24uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRGVwdGhTdGVuY2ls
U3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVRXJyb3JGaWx0ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUVycm9yRmlsdGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXh0ZW50M0QuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVudDNELmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVSW5wdXRTdGF0ZURlc2Ny
aXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUlucHV0U3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVTG9hZE9wLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVMb2FkT3AuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVPcmlnaW4zRC5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVT3JpZ2luM0QuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVPdXRPZk1lbW9yeUVycm9y
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVP
dXRPZk1lbW9yeUVycm9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTYW1wbGVy
RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTR1BVU2FtcGxlckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFnZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2UuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFnZUJpdC5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2hh
ZGVyU3RhZ2VCaXQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVTdG9yZU9wLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVTdG9yZU9wLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVEZXNjcmlwdG9yLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZUZv
cm1hdC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVVGV4dHVyZUZvcm1hdC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVzYWdlLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVycm9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWYWxpZGF0aW9uRXJyb3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4QnVm
ZmVyRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2Fpbk5vZGUuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhaW5Ob2Rl
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2Fpbk9w
dGlvbnMuY3BwCkBAIC0xNDE5LDggKzEzNTUsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitDcmVkZW50aWFscy5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0NyZWRlbnRp
YWxzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2
aWdhdG9yK0VNRS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTmF2aWdhdG9yK0VNRS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHUFUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR2FtZXBhZC5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0dhbWVw
YWQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZp
Z2F0b3IrR2VvbG9jYXRpb24uY3BwCkBAIC0xNDQ5LDggKzEzODMsNiBAQCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckNyZWRlbnRpYWxzLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0
b3JDcmVkZW50aWFscy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU05hdmlnYXRvckVNRS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yRU1FLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHUFUuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHYW1lcGFkLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JH
YW1lcGFkLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCkBAIC0yNDM3LDcyICsyMzY5LDYgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVQWRhcHRlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVQWRhcHRlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwQmluZGlu
Zy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVQmluZEdyb3VwQmluZGluZy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVCaW5kR3JvdXBMYXlvdXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cExheW91dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJ1ZmZlci5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQnVmZmVyLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQnVmZmVyQmlu
ZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVQnVmZmVyQmluZGluZy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRCdWZmZXIuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kRW5j
b2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVQ29tbWFuZEVuY29kZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VUNvbXB1dGVQaXBlbGluZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXJyb3JTY29w
ZXMuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVURldmljZUVycm9yU2NvcGVzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFdmVudEhhbmRs
ZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVM
YXlvdXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVVBpcGVsaW5lTGF5b3V0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVF1ZXVl
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVRdWV1ZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2FtcGxl
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVU2FtcGxlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxlLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVN3YXBDaGFpbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU3dhcENoYWluLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZS5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4
dHVyZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVVRleHR1cmVWaWV3LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRpb25FdmVu
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTI2MDEsMTIgKzI0NjcsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dvcmtlckxvY2F0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJMb2NhdGlvbi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvcitHUFUuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvcitH
UFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3Jr
ZXJOYXZpZ2F0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dvcmtlck5hdmlnYXRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvckdQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yR1BVLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyVHlwZS5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyVHlw
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmts
ZXQuY3BwCkBAIC0yNzI5LDggKzI1OTEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTY3JpcHRz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2Vu
dFNjcmlwdHNEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvVXNlckFnZW50U3R5bGVTaGVldHMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFyZExpYnJhcnkuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dl
YkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNvcmVKU0J1aWx0aW5zLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNWNjYWVlYTMwZDBlYjYyYzFhMDE0ZTk0
YzkyMzBmMzEwMzNjMzIyOC4uZjEzMzJjMGQzZjkyM2JhMGEyYTc1MzNkYTNiOTgwMzM5NzQ4Mzk4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00NjAsNjggKzQ2MCw2IEBAIEpT
X0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3IrV2ViRHJpdmVyLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L0dQVUxvYWRPcC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BV
T3JpZ2luM0QuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVt
b3J5RXJyb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVNo
YWRlclN0YWdlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9w
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZm
ZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0
ZXhJbnB1dERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L05h
dmlnYXRvcitHUFUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVy
cm9yU2NvcGVzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2VFdmVudEhhbmRsZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVF1ZXVlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNhbXBsZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yK0dQVS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2VieHIvTmF2aWdhdG9yK1dlYlhSLmlkbCBcCkBA
IC0xODQ2LDE4ICsxNzg0LDYgQEAgJChHRU5FUkFURV9TRVRUSU5HUykgOiAlIDogJChXZWJDb3Jl
KS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzLyUuZXJiICQoV0VCX1BSRUYKIAogIyAtLS0tLS0t
LQogCi0jIFdITFNMIFN0YW5kYXJkIExpYnJhcnkKLQotYWxsIDogV0hMU0xTdGFuZGFyZExpYnJh
cnkuaCBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAotCi1XSExTTFN0YW5kYXJk
TGlicmFyeS5oIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0Ci0JYmFzaCAt
YyAiJChQRVJMKSAkPCBXSExTTFN0YW5kYXJkTGlicmFyeSA8KGd6aXAgLWNuICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0KSAkQCIKLQotV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAgOiAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAotCSQoUFlU
SE9OKSAkPCAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJy
YXJ5LnR4dCAkQAotCi0jIC0tLS0tLS0tCi0KICMgQ29tbW9uIGdlbmVyYXRvciB0aGluZ3MKIAog
Q09NTU9OX0JJTkRJTkdTX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZlZDBlZGYzYzIyMjljOTE4MjgzOGFmZWFmOGIyZjA2Y2EzMzQ4
ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVNoYWRlclN0YWdlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVCaW5kaW5nVHlwZSB7Ci0gICAgVW5pZm9y
bUJ1ZmZlciwKLSAgICBEeW5hbWljVW5pZm9ybUJ1ZmZlciwKLSAgICBTYW1wbGVyLAotICAgIFNh
bXBsZWRUZXh0dXJlLAotICAgIFN0b3JhZ2VCdWZmZXIsCi0gICAgRHluYW1pY1N0b3JhZ2VCdWZm
ZXIsCi19OwotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyB7Ci0gICAgdW5zaWdu
ZWQgYmluZGluZzsKLSAgICBHUFVTaGFkZXJTdGFnZUZsYWdzIHZpc2liaWxpdHk7Ci0gICAgR1BV
QmluZGluZ1R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4ZDBmZjA3Yjk3MTA2MmU1YWNiMThmZTgyMjlkNzIzMDcxNjJiMzYxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHUzMiBH
UFVTaGFkZXJTdGFnZUZsYWdzOwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVCaW5kaW5nVHlw
ZQotXSBlbnVtIEdQVUJpbmRpbmdUeXBlIHsKLSAgICAidW5pZm9ybS1idWZmZXIiLAotICAgICJk
eW5hbWljLXVuaWZvcm0tYnVmZmVyIiwKLSAgICAic2FtcGxlciIsCi0gICAgInNhbXBsZWQtdGV4
dHVyZSIsCi0gICAgInN0b3JhZ2UtYnVmZmVyIiwKLSAgICAiZHluYW1pYy1zdG9yYWdlLWJ1ZmZl
ciIKLSAgICAvLyBUT0RPIG90aGVyIGJpbmRpbmcgdHlwZXMKLX07Ci0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBH
UFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nIHsKLSAgICByZXF1aXJlZCB1MzIgYmluZGluZzsKLSAg
ICByZXF1aXJlZCBHUFVTaGFkZXJTdGFnZUZsYWdzIHZpc2liaWxpdHk7Ci0gICAgcmVxdWlyZWQg
R1BVQmluZGluZ1R5cGUgdHlwZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzZiZmU0ZDcyZWQ5YTRiNTQwNzBhNTdhM2IwOTMzOTVj
ZGQ2MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dEJp
bmRpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgewotICAgIFZlY3RvcjxHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nPiBiaW5kaW5nczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmRhN2JkNGNiYjE4OTE4ODhjNjUy
NGNjNTM0MjM3NzkwZmQwNzc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVCaW5k
R3JvdXBMYXlvdXRCaW5kaW5nPiBiaW5kaW5nczsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTQyMTkyMzc3ZTZjODcxODdmZmY2ZGI3ZGJjNTE1NzZhZmY3YWQ2OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUJsZW5kRmFjdG9yCi1dIGVudW0gR1BV
QmxlbmRGYWN0b3IgewotICAgICJ6ZXJvIiwKLSAgICAib25lIiwKLSAgICAic3JjLWNvbG9yIiwK
LSAgICAib25lLW1pbnVzLXNyYy1jb2xvciIsCi0gICAgInNyYy1hbHBoYSIsCi0gICAgIm9uZS1t
aW51cy1zcmMtYWxwaGEiLAotICAgICJkc3QtY29sb3IiLAotICAgICJvbmUtbWludXMtZHN0LWNv
bG9yIiwKLSAgICAiZHN0LWFscGhhIiwKLSAgICAib25lLW1pbnVzLWRzdC1hbHBoYSIsCi0gICAg
InNyYy1hbHBoYS1zYXR1cmF0ZWQiLAotICAgICJibGVuZC1jb2xvciIsCi0gICAgIm9uZS1taW51
cy1ibGVuZC1jb2xvciIKLX07Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUJsZW5kT3BlcmF0
aW9uCi1dIGVudW0gR1BVQmxlbmRPcGVyYXRpb24gewotICAgICJhZGQiLAotICAgICJzdWJ0cmFj
dCIsCi0gICAgInJldmVyc2Utc3VidHJhY3QiLAotICAgICJtaW4iLAotICAgICJtYXgiCi19Owot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
Ci1dIGRpY3Rpb25hcnkgR1BVQmxlbmREZXNjcmlwdG9yIHsKLSAgICBHUFVCbGVuZEZhY3RvciBz
cmNGYWN0b3IgPSAib25lIjsKLSAgICBHUFVCbGVuZEZhY3RvciBkc3RGYWN0b3IgPSAiemVybyI7
Ci0gICAgR1BVQmxlbmRPcGVyYXRpb24gb3BlcmF0aW9uID0gImFkZCI7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBkZjI0ZmU3ZjExY2U4NGMzZGNmYTRjMTkx
NmFhODBlOTQ4ZGZlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1BVQnVmZmVyVXNhZ2VGbGFnczsKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9u
YXJ5IEdQVUJ1ZmZlckRlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHU2NCBzaXplOwotICAgIHJl
cXVpcmVkIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMDgzMTRkNTJhZjM5NGRkY2M1YmFlYzE0YjYzYTNjMDUzYzIzMmYxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgR1BVQnVmZmVyVXNhZ2UgewotICAgIGNvbnN0IHUzMiBOT05FID0gMDsKLSAgICBj
b25zdCB1MzIgTUFQX1JFQUQgPSAxOwotICAgIGNvbnN0IHUzMiBNQVBfV1JJVEUgPSAyOwotICAg
IGNvbnN0IHUzMiBDT1BZX1NSQyA9IDQ7Ci0gICAgY29uc3QgdTMyIENPUFlfRFNUID0gODsKLSAg
ICBjb25zdCB1MzIgSU5ERVggPSAxNjsKLSAgICBjb25zdCB1MzIgVkVSVEVYID0gMzI7Ci0gICAg
Y29uc3QgdTMyIFVOSUZPUk0gPSA2NDsKLSAgICBjb25zdCB1MzIgU1RPUkFHRSA9IDEyODsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGIxNTI4ZmZjM2E5NTI1ODUwYTk0
ZDY1ZWQyNzk0YTRkODA0YzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgotI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoR1BVQ2FudmFzQ29udGV4dCk7Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxHUFVDYW52YXNDb250ZXh0PiBHUFVDYW52YXNDb250ZXh0OjpjcmVhdGUoQ2Fu
dmFzQmFzZSYgY2FudmFzKQotewotICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxH
UFVDYW52YXNDb250ZXh0PihuZXcgR1BVQ2FudmFzQ29udGV4dChjYW52YXMpKTsKLSAgICBjb250
ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKLX0KLQotR1BVQ2Fu
dmFzQ29udGV4dDo6R1BVQ2FudmFzQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCi0gICAgOiBH
UFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQotewotfQotCi1SZWY8V2ViR1BV
U3dhcENoYWluPiBHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1cmVTd2FwQ2hhaW4oY29uc3QgV2Vi
R1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIGdwdURlc2Ny
aXB0b3IgPSBkZXNjcmlwdG9yLmFzR1BVU3dhcENoYWluRGVzY3JpcHRvcigpOwotICAgIGlmICgh
Z3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVVN3YXBDaGFpbjo6Y3JlYXRlKG51
bGxwdHIpOwotICAgIAotICAgIGF1dG8gZ3B1U3dhcENoYWluID0gR1BVU3dhcENoYWluOjp0cnlD
cmVhdGUoKmdwdURlc2NyaXB0b3IsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCku
aGVpZ2h0KCkpOwotICAgIGJvb2wgc3VjY2VzcyA9IGdwdVN3YXBDaGFpbjsKLSAgICBhdXRvIG5l
d1N3YXBDaGFpbiA9IFdlYkdQVVN3YXBDaGFpbjo6Y3JlYXRlKFdURk1vdmUoZ3B1U3dhcENoYWlu
KSk7Ci0gICAgCi0gICAgLy8gVXBvbiBzdWNjZXNzLCBpbnZhbGlkYXRlIGFuZCByZXBsYWNlIGFu
eSBleGlzdGluZyBzd2FwIGNoYWluLgotICAgIGlmIChzdWNjZXNzKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUZXN0IHRoYXQgdGhpcyB3b3JrcyBhcyBleHBlY3RlZCB3aXRoIGVycm9yIHJlcG9ydGlu
Zy4KLSAgICAgICAgaWYgKG1fc3dhcENoYWluKQotICAgICAgICAgICAgbV9zd2FwQ2hhaW4tPmRl
c3Ryb3koKTsKLQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb25maWd1
cmVTd2FwQ2hhaW4oKnRoaXMsIG5ld1N3YXBDaGFpbi5nZXQoKSk7Ci0KLSAgICAgICAgbV9zd2Fw
Q2hhaW4gPSBuZXdTd2FwQ2hhaW4uY29weVJlZigpOwotCi0gICAgICAgIG5vdGlmeUNhbnZhc0Nv
bnRlbnRDaGFuZ2VkKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuZXdTd2FwQ2hhaW47Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIEdQVUNhbnZhc0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAotewotICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCi0g
ICAgICAgIHJldHVybiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCktPnBsYXRmb3JtTGF5ZXIoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpyZXNoYXBl
KGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpZiAobV9zd2FwQ2hhaW4gJiYgbV9zd2Fw
Q2hhaW4tPnN3YXBDaGFpbigpKQotICAgICAgICBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCktPnJl
c2hhcGUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICBub3RpZnlDYW52YXNDb250ZW50Q2hhbmdlZCgp
OwotfQotCi12b2lkIEdQVUNhbnZhc0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkKLXsKLSAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IHRydWU7Ci19Ci0KLXZvaWQgR1BV
Q2FudmFzQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQotewotICAgIC8v
IEZJWE1FOiBVbmltcGxlbWVudGVkLgotICAgIGlmIChtX2lzRGlzcGxheWluZ1dpdGhQYWludCAm
JiBtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpIHsKLSAgICAgICAgbV9z
d2FwQ2hhaW4tPnN3YXBDaGFpbigpLT5wcmVzZW50KCk7Ci0gICAgICAgIG1faXNEaXNwbGF5aW5n
V2l0aFBhaW50ID0gZmFsc2U7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
YjBmZTdiMGQwOGNlOTNjN2VjYTg2OTRhMDBkMTYzMmUxM2QwYzk4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVQ2FudmFzQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBHUFVC
YXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
R1BVQ2FudmFzQ29udGV4dCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
UFVDYW52YXNDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYpOwotCi0gICAgSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhcygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50
PihjYW52YXNCYXNlKCkpOyB9Ci0KLSAgICBXZWJHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgpOyB9Ci0gICAgUmVmPFdlYkdQVVN3YXBDaGFp
bj4gY29uZmlndXJlU3dhcENoYWluKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImKTsK
LQotcHJpdmF0ZToKLSAgICBHUFVDYW52YXNDb250ZXh0KENhbnZhc0Jhc2UmKTsKLQotICAgIC8v
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dAotICAgIGJvb2wgaXNXZWJHUFUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKLSAg
ICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7Ci0KLSAgICAvLyBB
Y3RpdmVET01PYmplY3QuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQotICAgIC8vIEZJWE1FOiBT
dHVicy4KLSAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KLQotICAgIGJvb2wgbV9pc0Rpc3BsYXlp
bmdXaXRoUGFpbnQgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dh
cENoYWluOwotfTsKLQotfSAvLyBuAWFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19DQU5WQVNSRU5ERVJJTkdDT05URVhUKFdlYkNvcmU6OkdQVUNhbnZhc0NvbnRleHQs
IGlzV2ViR1BVKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzVhMjQxNjExZDAwZDZiMTZkYzUzZmI3N2U2MGIyNmZiYjkzMmUw
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3M7Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yCi1dIGRpY3Rpb25h
cnkgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVRGV2aWNl
IGRldmljZTsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICBHUFVU
ZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsgLy8gRklYTUU6IGRlZmF1bHQgaXMgR1BVVGV4dHVyZVVz
YWdlLk9VVFBVVF9BVFRBQ0hNRU5ULgotfTsKLQotWwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ2FudmFzQmFzZSwKLSAgICBFeHBvc2VkPVdpbmRvdwot
XSBpbnRlcmZhY2UgR1BVQ2FudmFzQ29udGV4dCB7Ci0gICAgLy8gYmFjay1yZWZlcmVuY2UgdG8g
dGhlIGNhbnZhcwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ2FudmFzRWxlbWVudCBjYW52
YXM7Ci0KLSAgICAvLyBDYWxsaW5nIGNvbmZpZ3VyZVN3YXBDaGFpbiBhIHNlY29uZCB0aW1lIGlu
dmFsaWRhdGVzIHRoZSBwcmV2aW91cyBvbmUsCi0gICAgLy8gYW5kIGFsbCBvZiB0aGUgdGV4dHVy
ZXMgaXTigJlzIHByb2R1Y2VkLgotICAgIFdlYkdQVVN3YXBDaGFpbiBjb25maWd1cmVTd2FwQ2hh
aW4oV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIC8vIE5vdCBp
bXBsZW1lbnRlZCB5ZXQuCi0gICAgLy8gUHJvbWlzZTxHUFVUZXh0dXJlRm9ybWF0PiBnZXRTd2Fw
Q2hhaW5QcmVmZXJyZWRGb3JtYXQoR1BVRGV2aWNlIGRldmljZSk7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhMjg5NWY1ZjIyM2EzOTFlNGQzMTdlZDI5ZWFkMGFmNDcyNmZhZGMxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25h
cnkgR1BVQ29sb3IgewotICAgIHJlcXVpcmVkIGZsb2F0IHI7Ci0gICAgcmVxdWlyZWQgZmxvYXQg
ZzsKLSAgICByZXF1aXJlZCBmbG9hdCBiOwotICAgIHJlcXVpcmVkIGZsb2F0IGE7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURl
c2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWEwMzA5NWY2MmU3
ZGRjODI4ZjI3MWE2OGY4MzU0YzQxMjg2NTE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9y
U3RhdGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgR1BVQ29sb3JXcml0ZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQ29sb3JTdGF0
ZURlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotCi0g
ICAgcmVxdWlyZWQgR1BVQmxlbmREZXNjcmlwdG9yIGFscGhhQmxlbmQ7Ci0gICAgcmVxdWlyZWQg
R1BVQmxlbmREZXNjcmlwdG9yIGNvbG9yQmxlbmQ7Ci0gICAgR1BVQ29sb3JXcml0ZUZsYWdzIHdy
aXRlTWFzazsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5NzhkYzU4ODFhMDE3OTdiNTEwMTQ4MzhlNWUwYzdmMWRiOTYyZGUyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFj
ZSBHUFVDb2xvcldyaXRlIHsKLSAgICBjb25zdCB1MzIgTk9ORSA9IDA7Ci0gICAgY29uc3QgdTMy
IFJFRCA9IDE7Ci0gICAgY29uc3QgdTMyIEdSRUVOID0gMjsKLSAgICBjb25zdCB1MzIgQkxVRSA9
IDQ7Ci0gICAgY29uc3QgdTMyIEFMUEhBID0gODsKLSAgICBjb25zdCB1MzIgQUxMID0gMTU7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1
bmN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5j
dGlvbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZmZiNGYxZGYyZGRiZTkz
NDFhY2MzZmQxMWY1YTI3MGFjNGU0MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1
bmN0aW9uLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVQ29tcGFyZUZ1bmN0
aW9uIHsKLSAgICAibmV2ZXIiLAotICAgICJsZXNzIiwKLSAgICAiZXF1YWwiLAotICAgICJsZXNz
LWVxdWFsIiwKLSAgICAiZ3JlYXRlciIsCi0gICAgIm5vdC1lcXVhbCIsCi0gICAgImdyZWF0ZXIt
ZXF1YWwiLAotICAgICJhbHdheXMiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzkyZmIwZDM4OTM2MWFlMjY2ZWNlZTk0
ZDA0ZDBiZmQwZjZhNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVE
ZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVRGVw
dGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBib29sZWFuIGRlcHRoV3JpdGVFbmFibGVk
ID0gZmFsc2U7Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZSA9ICJhbHdheXMi
OwotCi0vKiBOb3QgWWV0IEltcGxlbWVudGVkCi0gICAgR1BVU3RlbmNpbFN0YXRlRmFjZURlc2Ny
aXB0b3Igc3RlbmNpbEZyb250OwotICAgIEdQVVN0ZW5jaWxTdGF0ZUZhY2VEZXNjcmlwdG9yIHN0
ZW5jaWxCYWNrOwotCi0gICAgdTMyIHN0ZW5jaWxSZWFkTWFzazsKLSAgICB1MzIgc3RlbmNpbFdy
aXRlTWFzazsKLSovCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVRXJyb3JGaWx0ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RXJyb3JGaWx0ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjhmNDlhNjFj
Mjc5ZTkwMjY0ODRjNmVmOTA2NDVlYWQ1YjFhYmEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUVy
cm9yRmlsdGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BVRXJyb3JGaWx0
ZXIgewotICAgICJub25lIiwKLSAgICAib3V0LW9mLW1lbW9yeSIsCi0gICAgInZhbGlkYXRpb24i
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50
M0QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTE5NzY5NzM2MDcxNTY2NDVlYWYwMzM1Yjgy
ZTA4ODIxN2JhYzJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BV
SW50ZWdlckNvb3JkaW5hdGU7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVFeHRlbnQzRCB7Ci0gICAgcmVx
dWlyZWQgR1BVSW50ZWdlckNvb3JkaW5hdGUgd2lkdGg7Ci0gICAgcmVxdWlyZWQgR1BVSW50ZWdl
ckNvb3JkaW5hdGUgaGVpZ2h0OwotICAgIHJlcXVpcmVkIEdQVUludGVnZXJDb29yZGluYXRlIGRl
cHRoOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUxv
YWRPcC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzJkNGZhMjgyZmM2OTYwMjdlOWNmYTVmMzVh
NDY3MmE3OTNhNzNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVUxvYWRPcCB7Ci0gICAgImNsZWFyIiwKLSAgICAibG9h
ZCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmln
aW4zRC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYyYjdiMzZkZGNhM2FhYzVjYjM1MGUwMDQwOGEy
NzQxNmQyNjVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVT3JpZ2luM0Qg
ewotICAgIHVuc2lnbmVkIHggeyAwIH07Ci0gICAgdW5zaWduZWQgeSB7IDAgfTsKLSAgICB1bnNp
Z25lZCB6IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVU9yaWdpbjNELmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdp
bjNELmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3MTljMDIyNGQzMzdiMWEx
NjYwYjhkMDYwODExMjdiMzk1YmNlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVU9yaWdpbjNEIHsKLSAgICB1MzIgeCA9IDA7Ci0gICAgdTMyIHkgPSAw
OwotICAgIHUzMiB6ID0gMDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYTQ4MGFlMDJkYTFmYzViMDQwMTc0ZWE3MmY5MjM4NzU2Y2YxYWQzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgR1BVT3V0T2ZNZW1vcnlFcnJvciB7Ci0gICAgY29uc3RydWN0b3IoKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhMDBkNjFh
YmY4YTUwNGE0MDE5OTRhN2NiZGExMTJiZDM4ZTk3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBJ
bXBsZW1lbnRlZEFzPUdQVVBvd2VyUHJlZmVyZW5jZQotXSBlbnVtIEdQVVBvd2VyUHJlZmVyZW5j
ZSB7Ci0gICAgImxvdy1wb3dlciIsCi0gICAgImhpZ2gtcGVyZm9ybWFuY2UiCi19OwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRp
Y3Rpb25hcnkgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBHUFVQb3dlclByZWZlcmVu
Y2U/IHBvd2VyUHJlZmVyZW5jZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRlMzEzNjg0OTlmY2UyZjRiY2M4MTkwOWQ3M2FkODEwYzVjM2UxNjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFz
PUdQVUFkZHJlc3NNb2RlCi1dIGVudW0gR1BVQWRkcmVzc01vZGUgewotICAgICJjbGFtcC10by1l
ZGdlIiwKLSAgICAicmVwZWF0IiwKLSAgICAibWlycm9yLXJlcGVhdCIKLX07Ci0KLVsKLSAgICBJ
bXBsZW1lbnRlZEFzPUdQVUZpbHRlck1vZGUKLV0gZW51bSBHUFVGaWx0ZXJNb2RlIHsKLSAgICAi
bmVhcmVzdCIsCi0gICAgImxpbmVhciIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVTYW1wbGVyRGVz
Y3JpcHRvciB7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVzc01vZGVVID0gImNsYW1wVG9FZGdl
IjsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVYgPSAiY2xhbXBUb0VkZ2UiOwotICAg
IEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyA9ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVRmls
dGVyTW9kZSBtYWdGaWx0ZXIgPSAibmVhcmVzdCI7Ci0gICAgR1BVRmlsdGVyTW9kZSBtaW5GaWx0
ZXIgPSAibmVhcmVzdCI7Ci0gICAgR1BVRmlsdGVyTW9kZSBtaXBtYXBGaWx0ZXIgPSAibmVhcmVz
dCI7Ci0gICAgZmxvYXQgbG9kTWluQ2xhbXAgPSAwOwotICAgIGZsb2F0IGxvZE1heENsYW1wID0g
MHhmZmZmZmZmZjsgLy8gVE9ETzogV2hhdCBzaG91bGQgdGhpcyBiZT8gV2FzIE51bWJlci5NQVhf
VkFMVUUuCi0gICAgdTMyIG1heEFuaXNvdHJvcHkgPSAxOwotICAgIEdQVUNvbXBhcmVGdW5jdGlv
biBjb21wYXJlRnVuY3Rpb24gPSAibmV2ZXIiOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MzVhZDQ3ZWZkZDgwZTRjOTUyNjFlNWQyOWVhYzFhM2FiODk4MjQ2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVNoYWRlclN0YWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVT
aGFkZXJTdGFnZUZsYWdzID0gdW5zaWduZWQ7Ci0KLWNsYXNzIEdQVVNoYWRlclN0YWdlIDogcHVi
bGljIFJlZkNvdW50ZWQ8R1BVU2hhZGVyU3RhZ2U+IHsKLXB1YmxpYzoKLSAgICBlbnVtIEZsYWdz
IDogR1BVU2hhZGVyU3RhZ2VGbGFncyB7Ci0gICAgICAgIE5vbmUgPSAwLAotICAgICAgICBWZXJ0
ZXggPSAxIDw8IDAsCi0gICAgICAgIEZyYWdtZW50ID0gMSA8PCAxLAotICAgICAgICBDb21wdXRl
ID0gMSA8PCAyLAotICAgIH07Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVTaGFkZXJTdGFnZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzFj
MjM5NWUzYWI2MmRhNWEzNWEyMzA4NTc3YzU4ODdjNzRjNjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVU2hhZGVyU3RhZ2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVj
a0NvbnN0YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVTaGFk
ZXJTdGFnZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUgPSAwOwotICAgIGNvbnN0IHUzMiBWRVJURVgg
PSAxOwotICAgIGNvbnN0IHUzMiBGUkFHTUVOVCA9IDI7Ci0gICAgY29uc3QgdTMyIENPTVBVVEUg
PSA0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN0
b3JlT3AuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTJiOTUyZTg3NDgwMGNlNjZhOWQ3OTc4
OGYwNDU0NTJhYTJiODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVVN0b3JlT3AgewotICAgICJzdG9yZSIKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3Jp
cHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYTBjM2MyNDhiZDhmYWMx
YmMxNTY4ZDdkNjEyYmEzNjk0ZmVlZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgW0VuZm9yY2VSYW5n
ZV0gdW5zaWduZWQgbG9uZyBHUFVJbnRlZ2VyQ29vcmRpbmF0ZTsKLXR5cGVkZWYgW0VuZm9yY2VS
YW5nZV0gdW5zaWduZWQgbG9uZyBHUFVTaXplMzI7Ci10eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVu
c2lnbmVkIGxvbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3M7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFz
PUdQVVRleHR1cmVEaW1lbnNpb24KLV0gZW51bSBHUFVUZXh0dXJlRGltZW5zaW9uIHsKLSAgICAi
MWQiLAotICAgICIyZCIsCi0gICAgIjNkIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVE
ZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBHUFVFeHRlbnQzRCBzaXplOwotICAgIEdQVUludGVn
ZXJDb29yZGluYXRlIG1pcExldmVsQ291bnQgPSAxOwotICAgIEdQVVNpemUzMiBzYW1wbGVDb3Vu
dCA9IDE7Ci0gICAgR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24gPSAiMmQiOwotICAgIHJl
cXVpcmVkIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotICAgIHJlcXVpcmVkIEdQVVRleHR1cmVV
c2FnZUZsYWdzIHVzYWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5
YTFmNzc2ZTQxNzc1MmQwOGIyOGFkN2VlOGQ3NGVkMmQ1MjIzN2QuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVQotXSBlbnVtIEdQVVRleHR1cmVGb3JtYXQgewotICAgICJyZ2JhOHVub3JtIiwK
LSAgICAicmdiYTh1aW50IiwKLSAgICAiYmdyYTh1bm9ybSIsCi0gICAgImRlcHRoMzJmbG9hdC1z
dGVuY2lsOCIsCi0gICAgImJncmE4dW5vcm0tc3JnYiIsCi0gICAgInJnYmExNmZsb2F0IgotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2Fn
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWNjMzhmN2Q2NWU5NTVlOWQ2YjdiOTEz
MmFmZWJhMWM1MjNiNmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVVRleHR1cmVVc2FnZSB7Ci0gICAgY29u
c3QgdTMyIENPUFlfU1JDID0gMTsKLSAgICBjb25zdCB1MzIgQ09QWV9EU1QgPSAyOwotICAgIGNv
bnN0IHUzMiBTQU1QTEVEID0gNDsKLSAgICBjb25zdCB1MzIgU1RPUkFHRSA9IDg7Ci0gICAgY29u
c3QgdTMyIE9VVFBVVF9BVFRBQ0hNRU5UID0gMTY7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjlkMWJhM2FlNDc3Mjk3ZmRkODNiN2JhYTIyZDE2
Mzc4Yzg5OWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChHUFVVbmNhcHR1
cmVkRXJyb3JFdmVudCk7Ci0KLVJlZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4gR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVz
dGVkKSk7Ci19Ci0KLVJlZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4gR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBHUFVFcnJvciYmIGVycm9y
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KHR5
cGUsIFdURk1vdmUoZXJyb3IpKSk7Ci19Ci0KLUdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKLSAgICA6IEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpCi0gICAgLCBtX2Vycm9yKGluaXRpYWxpemVyLmVycm9yKQotewot
fQotCi1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgR1BVRXJyb3ImJiBlcnJvcikKLSAgICA6IEV2ZW50KHR5cGUs
IENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCi0gICAgLCBtX2Vycm9yKFdURk1vdmUo
ZXJyb3IpKQotewotfQotCi1FdmVudEludGVyZmFjZSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBHUFVVbmNhcHR1cmVkRXJyb3JF
dmVudEludGVyZmFjZVR5cGU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjdlZWU5NWRhZGVmNWJhYjNhOGJlNmVjMmVlNDMzZjdjNmYzZjIzMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewotICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQpOwotcHVibGljOgotICAgIHN0cnVjdCBJbml0
OiBFdmVudEluaXQgewotICAgICAgICBHUFVFcnJvciBlcnJvcjsKLSAgICB9OwotCi0gICAgc3Rh
dGljIFJlZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7Ci0gICAgc3RhdGljIFJl
ZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBHUFVF
cnJvciYmKTsKLQotICAgIGNvbnN0IEdQVUVycm9yIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvcjsgfQotCi1wcml2YXRlOgotICAgIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKLSAgICBHUFVVbmNhcHR1cmVkRXJy
b3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgR1BVRXJyb3ImJik7Ci0KLSAgICAvLyBFdmVudAot
ICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICBHUFVFcnJvciBtX2Vycm9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGNjZDgxNWNiZDE1ZmJhY2YyZWYxYzE5ODQwZmY0MGQxZmRjZWExYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotdHlwZWRlZiAoR1BVT3V0T2ZNZW1vcnlFcnJvciBvciBHUFVWYWxpZGF0aW9u
RXJyb3IpIEdQVUVycm9yOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnRJ
bml0IDogRXZlbnRJbml0IHsKLSAgICByZXF1aXJlZCBHUFVFcnJvciBlcnJvcjsKLX07Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50IDog
RXZlbnQgewotICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBHUFVVbmNhcHR1cmVkRXJy
b3JFdmVudEluaXQgZ3B1VW5jYXB0dXJlZEVycm9yRXZlbnRJbml0RGljdCk7Ci0KLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgR1BVRXJyb3IgZXJyb3I7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMxYzViMTU2ZmI3MjhjNjMwZmQ3M2NlZDY3MjFhMzVhOTk5NjY0MDEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIEdQVVZhbGlkYXRpb25FcnJvciB7Ci0gICAgY29uc3RydWN0b3Io
RE9NU3RyaW5nIG1lc3NhZ2UpOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBt
ZXNzYWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBkM2QyNmM1MzBlMmY2MzNjMGQyN2JjMTEwMzZjNTAzOWVhMzY1ZDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVVmVydGV4Rm9y
bWF0Ci1dIGVudW0gR1BVVmVydGV4Rm9ybWF0IHsKLSAgICAiZmxvYXQiLAotICAgICJmbG9hdDIi
LAotICAgICJmbG9hdDMiLAotICAgICJmbG9hdDQiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvciB7Ci0gICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWly
ZWQgR1BVVmVydGV4Rm9ybWF0IGZvcm1hdDsKLSAgICByZXF1aXJlZCB1MzIgc2hhZGVyTG9jYXRp
b247Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGFlMDhmNjU4NmRkODk1MmMxNzcwNzZjZmY5MjViY2Q0MTMxNTY4Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdTY0OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVJbnB1dFN0ZXBNb2RlCi1dIGVudW0g
R1BVSW5wdXRTdGVwTW9kZSB7Ci0gICAgInZlcnRleCIsCi0gICAgImluc3RhbmNlIgotfTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIHU2
NCBzdHJpZGU7Ci0gICAgR1BVSW5wdXRTdGVwTW9kZSBzdGVwTW9kZSA9ICJ2ZXJ0ZXgiOwotICAg
IHNlcXVlbmNlPEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+IGF0dHJpYnV0ZVNldDsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4
SW5wdXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5N2Ix
MGVlNDFhODExZmMzZDI5MjkzMDJlNDI3NzVmMGVhNzNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUluZGV4Rm9y
bWF0Ci1dIGVudW0gR1BVSW5kZXhGb3JtYXQgewotICAgICJ1aW50MTYiLAotICAgICJ1aW50MzIi
Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHsKLSAgICBHUFVJ
bmRleEZvcm1hdCBpbmRleEZvcm1hdCA9ICJ1aW50MzIiOwotICAgIHJlcXVpcmVkIHNlcXVlbmNl
PEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3I/PiB2ZXJ0ZXhCdWZmZXJzOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQyMGY4ZjE3NTY5NDk0MDViNDk0ZjI0Mjc4MTc0MjY5MTA5M2Y0
MzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jbmF2aWdhdG9yLWdwdQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PU5hdmlnYXRvckdQVQot
XSBwYXJ0aWFsIGludGVyZmFjZSBOYXZpZ2F0b3IgewotICAgIFtTYW1lT2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgV2ViR1BVIGdwdTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNm
YzA3YmI2NThmZDYxOWFmZjNkMjQ5MzhjNjBkOGUxZDVjZjg1My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3JHUFUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3JHUFUuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJX
ZWJHUFUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OYXZpZ2F0b3JHUFUqIE5hdmlnYXRv
ckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKLXsKLSAgICBOYXZpZ2F0b3JHUFUqIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PE5hdmlnYXRv
cj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7Ci0gICAgaWYgKCFzdXBwbGVt
ZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
R1BVPigpOwotICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKLSAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50OwotfQotCi1jb25zdCBjaGFy
KiBOYXZpZ2F0b3JHUFU6OnN1cHBsZW1lbnROYW1lKCkKLXsKLSAgICByZXR1cm4gIk5hdmlnYXRv
ckdQVSI7Ci19Ci0KLWNvbnN0IFdlYkdQVSogTmF2aWdhdG9yR1BVOjpncHUoTmF2aWdhdG9yJiBu
YXZpZ2F0b3IpCi17Ci0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbmF2aWdhdG9y
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkud2ViR1BVRW5hYmxlZCk7Ci0gICAgcmV0dXJuIE5h
dmlnYXRvckdQVTo6ZnJvbSgmbmF2aWdhdG9yKS0+Z3B1KCk7Ci19Ci0KLWNvbnN0IFdlYkdQVSog
TmF2aWdhdG9yR1BVOjpncHUoKSBjb25zdAotewotICAgIGlmICghbV9ncHUpCi0gICAgICAgIG1f
Z3B1ID0gV2ViR1BVOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gbV9ncHUuZ2V0KCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NzU4ZDA4NDZjZDY3MjlmNDhlZTk1ZTc3MjNiOWZkYjkxZjQ4Yjc5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgTmF2aWdhdG9yOwotY2xhc3MgV2ViR1BVOwotCi1jbGFzcyBOYXZpZ2F0b3JHUFUgZmlu
YWwgOiBwdWJsaWMgU3VwcGxlbWVudDxOYXZpZ2F0b3I+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgV2ViR1BVKiBncHUoTmF2aWdhdG9y
Jik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIE5hdmlnYXRvckdQVSogZnJvbShOYXZpZ2F0b3Iq
KTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLSAgICAKLSAgICBj
b25zdCBXZWJHUFUqIGdwdSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBSZWZQdHI8V2ViR1BVPiBt
X2dwdTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDYzZjllMGExNmRlZWFl
MTUwYmU1MTcyZDEyYjFiNzI3YzQ5MjkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXNzaWdubWVudEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2lu
Y2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2lu
Y2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEJyZWFrLmgiCi0j
aW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENhbGxFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKLSNp
bmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRG9X
aGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5
UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIK
LSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZvckxv
b3AuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJZlN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMSW5kZXhFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VQb2ludGVyRXhw
cmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5o
IgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWZl
cmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50TGlzdC5o
IgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
U3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1
ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3Vt
ZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
VHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9v
cC5oIgotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc0VzY2FwZU1v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJl
c3NFc2NhcGVNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYjI5NmQ4ZDMz
ZDViZjZhOTQ5NmJiMGMzMTE2NzdkYTI5YzllMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotZW51bSBjbGFzcyBBZGRyZXNzRXNjYXBlTW9kZSA6IHVpbnQ4X3QgewotICAg
IEVzY2FwZXMsIC8vIENvbnNlcnZhdGl2ZWx5LCB0aGlzIGFkZHJlc3Mtb2Ygb3BlcmF0aW9uIG1p
Z2h0IGVzY2FwZS4KLSAgICBEb2VzTm90RXNjYXBlIC8vIFRoaXMgYWRkcmVzcy1vZiBvcGVyYXRp
b24gZGVmaW5pdGVseSBkb2VzIG5vdCBlc2NhcGUuCi19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QK
LQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE4NjY2OGI2NjdlODQ2NWM3ODk4OWEwMDA2YjZhMGY2
ZDBkMjE5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDxjc3RkaW50Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotZW51bSBjbGFzcyBBZGRyZXNzU3BhY2UgOiB1aW50OF90IHsKLSAgICBDb25zdGFudCwK
LSAgICBEZXZpY2UsCi0gICAgVGhyZWFkZ3JvdXAsCi0gICAgVGhyZWFkCi19OwotCi1BTFdBWVNf
SU5MSU5FIFN0cmluZ1ZpZXcgdG9TdHJpbmcoQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSkKLXsK
LSAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZSkgewotICAgIGNhc2UgQWRkcmVzc1NwYWNlOjpDb25z
dGFudDoKLSAgICAgICAgcmV0dXJuICJjb25zdGFudCI7Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6
OkRldmljZToKLSAgICAgICAgcmV0dXJuICJkZXZpY2UiOwotICAgIGNhc2UgQWRkcmVzc1NwYWNl
OjpUaHJlYWRncm91cDoKLSAgICAgICAgcmV0dXJuICJ0aHJlYWRncm91cCI7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUKGFkZHJlc3NTcGFjZSA9PSBBZGRyZXNzU3BhY2U6OlRocmVhZCk7
Ci0gICAgICAgIHJldHVybiAidGhyZWFkIjsKLSAgICB9Ci19Ci0KLXN0cnVjdCBMZWZ0VmFsdWUg
ewotICAgIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2U7Ci19OwotCi1zdHJ1Y3QgQWJzdHJhY3RM
ZWZ0VmFsdWUgewotfTsKLQotc3RydWN0IFJpZ2h0VmFsdWUgewotfTsKLQotLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggVGhpcyB3cmFwcGVy
IG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi1jbGFzcyBUeXBlQW5ub3RhdGlvbiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVHlwZUFubm90YXRpb24oKQotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgICAgIDogbV9lbXB0eSh0cnVlKQotI2VuZGlmCi0gICAgewot
ICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKExlZnRWYWx1ZSB2KQotICAgICAgICA6IG1faW5u
ZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oQWJzdHJhY3RMZWZ0VmFs
dWUgdikKLSAgICAgICAgOiBtX2lubmVyKHYpCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5v
dGF0aW9uKFJpZ2h0VmFsdWUgdikKLSAgICAgICAgOiBtX2lubmVyKHYpCi0gICAgewotICAgIH0K
LQotICAgIFR5cGVBbm5vdGF0aW9uKGNvbnN0IFR5cGVBbm5vdGF0aW9uJikgPSBkZWZhdWx0Owot
ICAgIFR5cGVBbm5vdGF0aW9uKFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVmYXVsdDsKLQot
ICAgIFR5cGVBbm5vdGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgVHlwZUFubm90YXRpb24mKSA9IGRl
ZmF1bHQ7Ci0gICAgVHlwZUFubm90YXRpb24mIG9wZXJhdG9yPShUeXBlQW5ub3RhdGlvbiYmIG90
aGVyKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEFkZHJlc3NTcGFjZT4gbGVmdEFk
ZHJlc3NTcGFjZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxMZWZ0VmFsdWU+KG1faW5uZXIpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PExlZnRWYWx1ZT4obV9pbm5lcikuYWRkcmVzc1NwYWNl
OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGJvb2wgaXNSaWdo
dFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAg
IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJpZ2h0VmFsdWU+KG1faW5uZXIpOwotICAg
IH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZp
c2l0b3ImIHZpc2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpkZWNs
dmFsPFZhcmlhbnQ8TGVmdFZhbHVlLCBBYnN0cmFjdExlZnRWYWx1ZSwgUmlnaHRWYWx1ZT4mPigp
KSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiBXVEY6
OnZpc2l0KHZpc2l0b3IsIG1faW5uZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBYnN0cmFjdExl
ZnRWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fZW1wdHkpOwotICAgICAg
ICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBYnN0cmFjdExlZnRWYWx1ZT4obV9pbm5l
cik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8TGVmdFZhbHVlLCBBYnN0cmFjdExl
ZnRWYWx1ZSwgUmlnaHRWYWx1ZT4gbV9pbm5lcjsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGJv
b2wgbV9lbXB0eSB7IGZhbHNlIH07Ci0jZW5kaWYKLX07Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlw
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzI3NjBhMTQ1ZmY5NjY2ODI5YmU2
ODlmOTY3MWZiMzA5YmFjNmYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFy
cmF5UmVmZXJlbmNlVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgZmluYWwgOiBwdWJsaWMgUmVmZXJlbmNlVHlwZSB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXJyYXlSZWZlcmVuY2VUeXBlKTsKLSAgICB1c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsKLQot
ICAgIEFycmF5UmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDog
QmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6
QXJyYXlSZWZlcmVuY2UpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFy
cmF5UmVmZXJlbmNlVHlwZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1Nw
YWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5UmVmZXJlbmNlVHlwZShsb2NhdGlvbiwg
YWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOwotICAgIH0KLQotICAgIH5BcnJh
eVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5CYXNlOjpoYXNoKCkgXiBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVMaXRlcmFsSGFzaCgiYXJyYXkiKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZGRyZXNzU3BhY2UoKSA9PSBvdGhlci5hZGRyZXNzU3BhY2UoKSAmJiBlbGVtZW50
VHlwZSgpID09IG90aGVyLmVsZW1lbnRUeXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBl
KCkudG9TdHJpbmcoKSwgIltdIik7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoQXJyYXlSZWZlcmVu
Y2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDNlNWJmY2IzMDFkMzFmOTc2YTJlODA1NDBmMjFiYjg5NDRjYzQyMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xU
eXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVO
dW1iZXJzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEFycmF5VHlwZSBmaW5hbCA6IHB1YmxpYyBVbm5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlUeXBlKTsKLSAgICBB
cnJheVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRU
eXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlv
biwgS2luZDo6QXJyYXkpCi0gICAgICAgICwgbV9lbGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRU
eXBlKSkKLSAgICAgICAgLCBtX251bUVsZW1lbnRzKG51bUVsZW1lbnRzKQotICAgIHsKLSAgICB9
Ci1wdWJsaWM6Ci0KLSAgICBzdGF0aWMgUmVmPEFycmF5VHlwZT4gY3JlYXRlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxl
bWVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVR5cGUobG9j
YXRpb24sIFdURk1vdmUoZWxlbWVudFR5cGUpLCBudW1FbGVtZW50cykpOwotICAgIH0KLQotICAg
IH5BcnJheVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgp
IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KLSAgICB1bnNpZ25lZCBudW1FbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtRWxlbWVudHM7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2gobV9u
dW1FbGVtZW50cykgXiBtX2VsZW1lbnRUeXBlLT5oYXNoKCk7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFycmF5VHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbnVtRWxlbWVudHMoKSA9PSBvdGhlci5udW1FbGVtZW50cygpICYmIHR5cGUoKSA9PSBv
dGhlci50eXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHR5cGUoKS50b1N0cmluZygpLCAnWycsIG51bUVs
ZW1lbnRzKCksICddJyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFJlZjxVbm5hbWVkVHlwZT4g
bV9lbGVtZW50VHlwZTsKLSAgICB1bnNpZ25lZCBtX251bUVsZW1lbnRzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQXJyYXlUeXBl
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5
VHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNk
OTk4YjUyNWZjNmYzYTg1NDQ1ZDdkYmU0M2NlZjY2M2RlMjc3YTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBBc3NpZ25tZW50RXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQs
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OkFzc2lnbm1lbnQpCi0gICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkp
Ci0gICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKLSAgICB7Ci0jaWYgQ1BVKEFERFJF
U1MzMikKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1fcGFkKTsKLSNlbmRpZgotICAgIH0KLQotICAg
IH5Bc3NpZ25tZW50RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIEFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnN0IEFzc2lnbm1lbnRFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQXNzaWdu
bWVudEV4cHJlc3Npb24oQXNzaWdubWVudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAg
RXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIEV4cHJlc3Npb24mIHJp
Z2h0KCkgeyByZXR1cm4gbV9yaWdodDsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtl
UmlnaHQoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmlnaHQpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdDsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9y
aWdodDsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgIGNoYXIgbV9wYWRbMV07Ci0jZW5kaWYKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KEFzc2lnbm1lbnRFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oQXNzaWdubWVudEV4cHJlc3Npb24sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1
bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NTYyNWM4
ZmRjNDE4MWViNGNkNGU5NmY1ZTZmMTFjYTRlMzFmYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQmFzZUZ1bmN0aW9uQXR0
cmlidXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihs
b2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QmFzZUZ1bmN0aW9uQXR0cmli
dXRlKCkgPSBkZWZhdWx0OwotCi0gICAgQmFzZUZ1bmN0aW9uQXR0cmlidXRlKGNvbnN0IEJhc2VG
dW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOwotICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShC
YXNlRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIENvZGVM
b2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGlj
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTg4YTYwZmZmNWE2ODRkN2IxMzdk
MzVjYzczOWFmZDIwNDc2ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFz
ZVNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3M7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotY2xhc3MgQmFz
ZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBC
YXNlU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IG1fY29kZUxvY2F0
aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5CYXNlU2VtYW50aWMo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBCYXNlU2VtYW50aWMoY29uc3QgQmFzZVNlbWFudGljJikgPSBk
ZWxldGU7Ci0gICAgQmFzZVNlbWFudGljKEJhc2VTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0
IEludHJpbnNpY3MmKSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIGNsYXNzIFNoYWRlckl0ZW1EaXJl
Y3Rpb24gOiB1aW50OF90IHsKLSAgICAgICAgSW5wdXQsCi0gICAgICAgIE91dHB1dAotICAgIH07
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hh
ZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBj
b25zdCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJsb2NrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkOTI0
YmE3NWNmYjZlZGU0ZDg0Y2JlZDUyZDRkZDkxNGM2NWIzNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmxvY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgQmxvY2sgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBCbG9jayhDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0YXRlbWVudChsb2Nh
dGlvbiwgS2luZDo6QmxvY2spCi0gICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVt
ZW50cykpCi0gICAgewotICAgIH0KLQotICAgIH5CbG9jaygpID0gZGVmYXVsdDsKLQotICAgIEJs
b2NrKGNvbnN0IEJsb2NrJikgPSBkZWxldGU7Ci0gICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0
OwotCi0gICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsg
fQotCi1wcml2YXRlOgotICAgIFN0YXRlbWVudHMgbV9zdGF0ZW1lbnRzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQmxvY2spCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJsb2NrLCBpc0Jsb2NrKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVy
YWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgzNjA1MTY3ZmJhNWVlMDNhYWZi
YzY3YzgxMzFjNTMxZTAxMDUxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
b29sZWFuTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgQm9vbGVhbkxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQm9vbGVhbkxpdGVyYWwoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OkJvb2xlYW5MaXRlcmFsKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0g
ICAgewotICAgIH0KLQotICAgIH5Cb29sZWFuTGl0ZXJhbCgpID0gZGVmYXVsdDsKLQotICAgIEJv
b2xlYW5MaXRlcmFsKGNvbnN0IEJvb2xlYW5MaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgQm9vbGVh
bkxpdGVyYWwoQm9vbGVhbkxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgQm9vbGVhbkxpdGVy
YWwmIG9wZXJhdG9yPShjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEJvb2xl
YW5MaXRlcmFsJiBvcGVyYXRvcj0oQm9vbGVhbkxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAg
Ym9vbCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIEJvb2xlYW5MaXRl
cmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEJvb2xlYW5MaXRlcmFsIHJlc3VsdChj
b2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0KTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBtX3ZhbHVl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9E
RUxFVEUoQm9vbGVhbkxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQ
UkVTU0lPTihCb29sZWFuTGl0ZXJhbCwgaXNCb29sZWFuTGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZhNDc2MWJhMjhiN2NiNzI0ODRkN2M2MjM2N2M0NzhhNDJkYWJmMGUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBC
cmVhayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIEJyZWFrKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAg
OiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJyZWFrKQotICAgIHsKLSAgICB9Ci0KLSAgICB+
QnJlYWsoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCcmVhayhjb25zdCBCcmVhayYpID0gZGVsZXRlOwot
ICAgIEJyZWFrKEJyZWFrJiYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEJyZWFrKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChCcmVhaywgaXNCcmVhaygpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1h
bnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTRkZjJlYzFiNDE0ZDBj
YjgzYzY5YjI3NjYyNDRiOWI2YjY3MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQnVpbHRJblNl
bWFudGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2lu
Y2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpIGNv
bnN0Ci17Ci0gICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZJ
bnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBj
YXNlIFZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUs
IGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246
Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5
cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgY2FzZSBW
YXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNv
dmVyYWdlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51
aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNl
IFZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToK
LSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUo
KSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAgIGNh
c2UgVmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3Vw
SW5kZXg6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVp
bnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAgICAg
cmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAg
ICB9Ci19Ci0KLWJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNo
ICgqZW50cnlQb2ludFR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0g
ICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6SW5wdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFi
bGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAgICBz
d2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgot
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlw
ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2Ug
U2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFi
bGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3Zl
cmFnZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBj
YXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92
YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6
U1ZDb3ZlcmFnZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKLSAgICAgICAgc3dpdGNo
IChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoK
LSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJp
YWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZH
cm91cElEOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAg
ICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6
T3V0cHV0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ODVhNTE4MjcxMDUxYzVkMGMzOTk1MWVjN2FjYjJhYzc0NmIwY2Y2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBCdWlsdEluU2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGlj
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IFZhcmlhYmxlIDogdWludDhfdCB7Ci0gICAgICAgIFNWSW5zdGFuY2VJRCwKLSAgICAgICAgU1ZW
ZXJ0ZXhJRCwKLSAgICAgICAgUFNpemUsCi0gICAgICAgIFNWUG9zaXRpb24sCi0gICAgICAgIFNW
SXNGcm9udEZhY2UsCi0gICAgICAgIFNWU2FtcGxlSW5kZXgsCi0gICAgICAgIFNWSW5uZXJDb3Zl
cmFnZSwKLSAgICAgICAgU1ZUYXJnZXQsCi0gICAgICAgIFNWRGVwdGgsCi0gICAgICAgIFNWQ292
ZXJhZ2UsCi0gICAgICAgIFNWRGlzcGF0Y2hUaHJlYWRJRCwKLSAgICAgICAgU1ZHcm91cElELAot
ICAgICAgICBTVkdyb3VwSW5kZXgsCi0gICAgICAgIFNWR3JvdXBUaHJlYWRJRAotICAgIH07Ci0K
LSAgICBCdWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJp
YWJsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9w
dCkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0gICAgICAgICwgbV92YXJpYWJs
ZSh2YXJpYWJsZSkKLSAgICAgICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgp
KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5CdWlsdEluU2VtYW50aWMoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBCdWlsdEluU2VtYW50aWMoY29uc3QgQnVpbHRJblNlbWFudGljJikgPSBkZWxl
dGU7Ci0gICAgQnVpbHRJblNlbWFudGljKEJ1aWx0SW5TZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBWYXJpYWJsZSB2YXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KLSAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgdGFyZ2V0SW5kZXgoKSB7IHJldHVybiBtX3Rhcmdl
dEluZGV4OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQnVpbHRJblNlbWFudGljJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhcmlhYmxlID09IG90aGVyLm1f
dmFyaWFibGUgJiYgbV90YXJnZXRJbmRleCA9PSBvdGhlci5tX3RhcmdldEluZGV4OwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAg
IFN0cmluZ1ZpZXcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3Zh
cmlhYmxlKSB7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAg
ICAgIHJldHVybiAiU1ZJbnN0YW5jZUlEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0
ZXhJRDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZWZXJ0ZXhJRCI7Ci0gICAgICAgIGNhc2UgVmFy
aWFibGU6OlBTaXplOgotICAgICAgICAgICAgcmV0dXJuICJQU2l6ZSI7Ci0gICAgICAgIGNhc2Ug
VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgICAgICByZXR1cm4gIlNWUG9zaXRpb24iOwot
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICAgICAgcmV0dXJu
ICJTVklzRnJvbnRGYWNlIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoK
LSAgICAgICAgICAgIHJldHVybiAiU1ZTYW1wbGVJbmRleCI7Ci0gICAgICAgIGNhc2UgVmFyaWFi
bGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgICAgIHJldHVybiAiU1ZJbm5lckNvdmVyYWdl
IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgICAgICByZXR1cm4g
IlNWVGFyZ2V0IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgICAg
IHJldHVybiAiU1ZEZXB0aCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNWQ292ZXJhZ2UiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpT
VkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWRGlzcGF0Y2hUaHJlYWRJ
RCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgICAgIHJldHVy
biAiU1ZHcm91cElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAg
ICAgICAgICAgcmV0dXJuICJTVkdyb3VwSW5kZXgiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpT
Vkdyb3VwVGhyZWFkSUQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWR3JvdXBUaHJlYWRJRCI7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1l
ZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0Fj
Y2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgVmFyaWFibGUgbV92YXJpYWJsZTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBtX3RhcmdldEluZGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNDExOGUyMWIzNTA5NWNmODQ1YjExZjZi
OTE0ZDhlZWQ3NGU2ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4
cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBOYW1lZFR5cGU7Ci0KLWNsYXNzIENhbGxFeHByZXNzaW9uIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIENhbGxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFt
ZSwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBhcmd1bWVudHMpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q2FsbCkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92
ZShuYW1lKSkKLSAgICAgICAgLCBtX2FyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCi0gICAg
ewotICAgIH0KLQotICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0Owot
Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0dXJu
IG1fYXJndW1lbnRzOyB9Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0K
LQotICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgc2V0Q2FzdERh
dGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCi0gICAgewotICAgICAgICBtX2Nhc3RSZXR1cm5UeXBl
ID0gJm5hbWVkVHlwZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2Fz
dFJldHVyblR5cGU7IH0KLSAgICBOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKCkgeyByZXR1cm4g
bV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Z1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuICptX2Z1
bmN0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJhdGlv
biYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9mdW5jdGlv
bik7Ci0gICAgICAgIG1fZnVuY3Rpb24gPSAmZnVuY3Rpb25EZWNsYXJhdGlvbjsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJl
c3Npb24+PiBtX2FyZ3VtZW50czsKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Z1bmN0aW9u
IHsgbnVsbHB0ciB9OwotICAgIE5hbWVkVHlwZSogbV9jYXN0UmV0dXJuVHlwZSB7IG51bGxwdHIg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKENhbGxFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oQ2FsbEV4cHJlc3Npb24sIGlzQ2FsbEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNDhiYjM4ODE1MTMzZjk2ZDE4YjVmOGI5MDBmZDI1
ZDNhMTFjN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNz
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIENvbW1h
RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDb21tYUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGxpc3QpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29tbWEpCi0gICAgICAgICwgbV9saXN0KFdURk1v
dmUobGlzdCkpCi0gICAgewotICAgIH0KLQotICAgIH5Db21tYUV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7Ci0KLSAgICBDb21tYUV4cHJlc3Npb24oY29uc3QgQ29tbWFFeHByZXNzaW9uJikgPSBkZWxl
dGU7Ci0gICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgbGlzdCgpIHsgcmV0dXJuIG1fbGlz
dDsgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fbGlz
dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKENvbW1hRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwgaXNDb21tYUV4cHJlc3Npb24oKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDEzN2U4NWJmY2M1ODE3YjdkMjVm
ZGZmNWI0MDY0ZTA4YTM0NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKLSNpbmNsdWRl
ICJXSExTTEludGVnZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE1OCBtYWNPUyBTaWVycmEgZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgcHV0
dGluZyBWYXJpYW50cyBpbnNpZGUgVmFyaWFudHMsCi0vLyBzbyB0aGlzIGlzIGEgd3JhcHBlciBj
bGFzcyB0byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGhhcHBlbi4gQXMgc29vbiBhcyB3ZSBkb24n
dAotLy8gaGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwgdGhpcyBjYW4gYmUgbWlncmF0ZWQgdG8gYSBW
YXJpYW50IHByb3Blci4KLWNsYXNzIENvbnN0YW50RXhwcmVzc2lvbiBmaW5hbCB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ29uc3RhbnRFeHByZXNzaW9uKElu
dGVnZXJMaXRlcmFsJiYgaW50ZWdlckxpdGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1v
dmUoaW50ZWdlckxpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Np
b24oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi0gICAg
ICAgIDogbV92YXJpYW50KFdURk1vdmUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkpCi0gICAgewot
ICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihGbG9hdExpdGVyYWwmJiBmbG9hdExpdGVy
YWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoZmxvYXRMaXRlcmFsKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEJvb2xlYW5MaXRlcmFsJiYgYm9vbGVhbkxp
dGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoYm9vbGVhbkxpdGVyYWwpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotICAgICAgICA6IG1fdmFyaWFudChXVEZN
b3ZlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0
YW50RXhwcmVzc2lvbihjb25zdCBDb25zdGFudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBD
b25zdGFudEV4cHJlc3Npb24oQ29uc3RhbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAg
IENvbnN0YW50RXhwcmVzc2lvbiYgb3BlcmF0b3I9KGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbiYp
ID0gZGVsZXRlOwotICAgIENvbnN0YW50RXhwcmVzc2lvbiYgb3BlcmF0b3I9KENvbnN0YW50RXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVy
YWwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SW50ZWdl
ckxpdGVyYWw+KG1fdmFyaWFudCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8SW50ZWdlckxp
dGVyYWw+KG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0
b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4gZGVjbHR5cGUoV1RGOjp2
aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCwgRmxvYXRMaXRlcmFsLCBCb29sZWFuTGl0ZXJhbCwgRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsPiY+KCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQo
dmlzaXRvciwgbV92YXJpYW50KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlz
aXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSBjb25zdCAtPiBkZWNsdHlw
ZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJpYW50PEludGVnZXJMaXRlcmFs
LCBVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBGbG9hdExpdGVyYWwsIEJvb2xlYW5MaXRlcmFsLCBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+Jj4oKSkpCi0gICAgewotICAgICAgICByZXR1cm4gV1RG
Ojp2aXNpdCh2aXNpdG9yLCBtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVz
c2lvbiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+
IENvbnN0YW50RXhwcmVzc2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gaW50ZWdlckxpdGVyYWwu
Y2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lvbiB7Ci0gICAgICAgICAg
ICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0o
Y29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lvbiB7
Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXRMaXRlcmFsLmNsb25lKCk7Ci0gICAgICAgIH0sIFsm
XShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVz
c2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVyYWwuY2xvbmUoKTsKLSAgICAg
ICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0dXJuIGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9KSwgbV92YXJpYW50KTsK
LSAgICB9Ci0KLSAgICBib29sIG1hdGNoZXMoY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0OwotICAg
ICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgIHZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNv
bnN0IEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUg
PSBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgdmFs
dWUgPSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25z
dCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSBmbG9h
dExpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBi
b29sZWFuTGl0ZXJhbCkgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
Qm9vbGVhbkxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICBjb25z
dCBhdXRvJiBvdGhlckJvb2xlYW5MaXRlcmFsID0gV1RGOjpnZXQ8Qm9vbGVhbkxpdGVyYWw+KG90
aGVyLm1fdmFyaWFudCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYm9vbGVhbkxpdGVyYWwu
dmFsdWUoKSA9PSBvdGhlckJvb2xlYW5MaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSwgWyZdKGNvbnN0
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0g
ICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw+KG90aGVyLm1fdmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBv
dGhlck1lbWJlclJlZmVyZW5jZSA9IFdURjo6Z2V0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4o
b3RoZXIubV92YXJpYW50KTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSA9PSBvdGhlck1lbWJlclJlZmVyZW5jZS5l
bnVtZXJhdGlvbk1lbWJlcigpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBpZiAocmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0KLSAgICAgICAgb3RoZXIudmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAg
ICB9LCBbJl0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gdW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExp
dGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IGZsb2F0TGl0ZXJhbC52YWx1
ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9KSk7Ci0K
LSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiAqcmVzdWx0OwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBWYXJpYW50PAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAg
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAgICAg
ICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsCi0gICAg
ICAgID4gbV92YXJpYW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQwNTFjMjQyYWYwNmY4YzMzYzY0ZDA1NmJjY2M5YTNkZDBmOTBm
NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBDb250aW51ZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENvbnRpbnVlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkNvbnRp
bnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Q29udGludWUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBD
b250aW51ZShjb25zdCBDb250aW51ZSYpID0gZGVsZXRlOwotICAgIENvbnRpbnVlKENvbnRpbnVl
JiYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbnRpbnVlKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGIyNTI1OWEyOWY3NzgyMThiM2EzOWQyODdhZDBm
Nzg2MjZhZDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxl
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgotCi0jZGVmaW5lIERFRklORV9ERUZBVUxUX0RFTEVURSh0eXBlKSBcCi0gICAgbmFtZXNw
YWNlIHN0ZCB7IFwKLSAgICAgICAgdGVtcGxhdGU8PiBcCi0gICAgICAgIHN0cnVjdCBkZWZhdWx0
X2RlbGV0ZTxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlPiB7IFwKLSAgICAgICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBcCi0gICAgICAgICAgICB2b2lkIGNhbGxEZWxldGUoVCogdCkgXAot
ICAgICAgICAgICAgeyBcCi0gICAgICAgICAgICAgICAgZGVsZXRlIHQ7IFwKLSAgICAgICAgICAg
IH0gXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFwKLSAgICAgICAgICAgIHZv
aWQgY2FsbERlc3Ryb3koVCogdCkgXAotICAgICAgICAgICAgeyBcCi0gICAgICAgICAgICAgICAg
V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZTo6ZGVzdHJveSgqdCk7IFwKLSAgICAgICAgICAgIH0g
XAotICAgICAgICAgICAgY29uc3RleHByIHZvaWQgb3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6
QVNUOjp0eXBlKiB2YWx1ZSkgXAotICAgICAgICAgICAgeyBcCi0gICAgICAgICAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2ZpbmFsPFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGU+Ojp2YWx1
ZSkgXAotICAgICAgICAgICAgICAgICAgICBjYWxsRGVsZXRlKHZhbHVlKTsgXAotICAgICAgICAg
ICAgICAgIGVsc2UgXAotICAgICAgICAgICAgICAgICAgICBjYWxsRGVzdHJveSh2YWx1ZSk7IFwK
LSAgICAgICAgICAgIH0gXAotICAgICAgICB9OyBcCi0gICAgfSBcCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmMxZTE2NDMxZjMwYmRlOTVkOWRlNTEx
MTZkYjhhYTY3YjRiOTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIERlcmVmZXJlbmNlRXhwcmVz
c2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBwb2ludGVyKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQotICAgICAgICAsIG1fcG9pbnRlcihX
VEZNb3ZlKHBvaW50ZXIpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RGVyZWZlcmVuY2VFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVm
ZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihE
ZXJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgcG9p
bnRlcigpIHsgcmV0dXJuIG1fcG9pbnRlcjsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiBtX3BvaW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShEZXJlZmVyZW5jZUV4cHJlc3Npb24pCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihEZXJlZmVyZW5jZUV4cHJlc3Npb24s
IGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEb1doaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODdlYmZkOWU4NGYzMjk4MzA2ZDE1MDk0NGZiZmZmNzhhNTU5M2FjYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRG9XaGlsZUxvb3AgZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBEb1do
aWxlTG9vcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9k
eSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwpCi0gICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uLCBLaW5kOjpEb1doaWxlTG9vcCkKLSAgICAgICAgLCBtX2JvZHkoV1RGTW92
ZShib2R5KSkKLSAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB+RG9XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7Ci0KLSAgICBEb1do
aWxlTG9vcChjb25zdCBEb1doaWxlTG9vcCYpID0gZGVsZXRlOwotICAgIERvV2hpbGVMb29wKERv
V2hpbGVMb29wJiYpID0gZGVmYXVsdDsKLQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJu
IG1fYm9keTsgfQotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25k
aXRpb25hbDsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKERvV2hpbGVMb29w
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChEb1doaWxlTG9vcCwg
aXNEb1doaWxlTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRG90RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGZiNDIy
MzA0NWZlMDJmOTZjOTBiOGM3NTdlOWIzYjY0YmI3NTY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRG90RXhwcmVz
c2lvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERvdEV4cHJlc3Npb24oQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJpbmcmJiBmaWVs
ZE5hbWUpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpEb3QsIFdURk1vdmUoYmFzZSkpCi0gICAgICAgICwgbV9maWVsZE5hbWUoV1RGTW92ZShmaWVs
ZE5hbWUpKQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1fcGFkZGluZyk7Ci0gICAgfQot
Ci0gICAgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBEb3RFeHByZXNzaW9uKGNv
bnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJl
c3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgU3RyaW5nJiBmaWVsZE5hbWUoKSB7IHJldHVybiBt
X2ZpZWxkTmFtZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2ZpZWxkTmFtZTsKLSAgICAv
LyBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgZm9yIHJlcGxhY2VXaXRoIGludG8gYSBiaWdnZXIgdHlw
ZS4KLSAgICBjaGFyIG1fcGFkZGluZ1sxMl07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShEb3RFeHByZXNzaW9uKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHBy
ZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVmYmExZGQ3ODgwZTVjODZlNTVlNmU4N2NlNTFiOTdkZTkwOTk3N2Qu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWZmZWN0ZnVsRXhwcmVz
c2lvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQoZWZmZWN0ZnVsRXhwcmVzc2lvbi0+Y29kZUxvY2F0
aW9uKCksIEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgICwgbV9lZmZlY3RmdWxF
eHByZXNzaW9uKFdURk1vdmUoZWZmZWN0ZnVsRXhwcmVzc2lvbikpCi0gICAgewotICAgIH0KLQot
ICAgIH5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgRWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChjb25zdCBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50JikgPSBkZWxldGU7Ci0gICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChFZmZlY3Rm
dWxFeHByZXNzaW9uU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGVm
ZmVjdGZ1bEV4cHJlc3Npb24oKSB7IHJldHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KLQot
cHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9lZmZlY3RmdWxFeHByZXNzaW9u
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9E
RUxFVEUoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzc0NDZkZjEwYjc1NWRkNmM2MDViMzk2NDk4MzYxZjE2ZWM3N2JiMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotZW51bSBjbGFz
cyBFbnRyeVBvaW50VHlwZSA6IHVpbnQ4X3QgewotICAgIFZlcnRleCwKLSAgICBGcmFnbWVudCwK
LSAgICBDb21wdXRlLAotfTsKLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IHRvU3RyaW5nKEVu
dHJ5UG9pbnRUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFbnRy
eVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gInZlcnRleCI7Ci0gICAgY2FzZSBF
bnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiAiZnJhZ21lbnQiOwotICAg
IGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVybiAiY29tcHV0ZSI7
Ci0gICAgfQotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmJmOGRlNWFjMjNmNGE3YWJjMzQ1ZGNlOGE1MWNlZmI2NWY5ZDk1
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKLSNpbmNs
dWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24g
ZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAgIDogTmFtZWRU
eXBlKEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkp
Ci0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgewotICAgIH0KLQotICAgIH5F
bnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmlu
aXRpb24oY29uc3QgRW51bWVyYXRpb25EZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgRW51bWVy
YXRpb25EZWZpbml0aW9uKEVudW1lcmF0aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBhZGQo
RW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJl
cj4oV1RGTW92ZShtZW1iZXIpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsK
LSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogbWVtYmVyQnlOYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX21lbWJlcnMuZmluZChu
YW1lKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fbWVtYmVycy5lbmQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwotICAgIH0KLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9u
TWVtYmVyPj4gZW51bWVyYXRpb25NZW1iZXJzKCkKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVtYmVyPj4gcmVzdWx0OwotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX21lbWJlcnMpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpw
YWlyLnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5p
cXVlX3B0cjxFbnVtZXJhdGlvbk1lbWJlcj4+IG1fbWVtYmVyczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uRGVm
aW5pdGlvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEVudW1lcmF0aW9u
RGVmaW5pdGlvbiwgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjg4OGYzNWE5ZTBjOWY4ZDRkMTdjMTkyNTRiNGM2OWZj
NjY0YjRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVt
YmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
ZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVy
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBFbnVtZXJhdGlv
bk1lbWJlcihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIGludDY0X3QgdmFs
dWUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9uYW1l
KFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+RW51bWVyYXRpb25NZW1iZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBFbnVt
ZXJhdGlvbk1lbWJlcihjb25zdCBFbnVtZXJhdGlvbk1lbWJlciYpID0gZGVsZXRlOwotICAgIEVu
dW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9uTWVtYmVyJiYpID0gZGVmYXVsdDsKLQotICAgIGNv
bnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9j
YXRpb247IH0KLSAgICBTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGludDY0
X3QgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0
aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgaW50NjRfdCBtX3Zh
bHVlOwotfTsKLQotdXNpbmcgRW51bWVyYXRpb25NZW1iZXJzID0gVmVjdG9yPEVudW1lcmF0aW9u
TWVtYmVyPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgzNGU5NzdhY2NlOTBhZjBm
MjE5OGYxODVmMWY5OTIyZTE2MDQ0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotCi1jbGFz
cyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVmdCwgU3RyaW5nJiYg
cmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKQotICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQotICAgICAgICAs
IG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewotICAgIH0KLQotICAgIH5FbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwoY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0g
ICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShjb25z
dCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmIG9wZXJhdG9yPShFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZh
dWx0OwotCi0gICAgc3RhdGljIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCB3cmFwKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVmdCwgU3RyaW5nJiYgcmlnaHQsIEVudW1lcmF0aW9u
RGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51
bWVyYXRpb25NZW1iZXIpCi0gICAgewotICAgICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwg
cmVzdWx0KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpLCBXVEZNb3ZlKHJpZ2h0KSk7Ci0gICAgICAg
IHJlc3VsdC5tX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICZlbnVtZXJhdGlvbkRlZmluaXRpb247
Ci0gICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVy
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgbGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIGNvbnN0IFN0cmluZyYgcmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwg
Y2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwoY29kZUxvY2F0aW9uKCksIFN0cmluZyhtX2xlZnQpLCBTdHJpbmcobV9yaWdo
dCkpOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9IG1fZW51bWVyYXRpb25N
ZW1iZXI7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVmaW5p
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247Ci0g
ICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRpb24o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uOwot
ICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAgICB9Ci0KLSAgICBFbnVt
ZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRFbnVtZXJh
dGlvbk1lbWJlcihFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwg
RW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQotICAgIHsKLSAgICAgICAgbV9l
bnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOwotICAgICAgICBt
X2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBTdHJpbmcgbV9sZWZ0OwotICAgIFN0cmluZyBtX3JpZ2h0OwotICAgIEVudW1lcmF0
aW9uRGVmaW5pdGlvbiogbV9lbnVtZXJhdGlvbkRlZmluaXRpb24geyBudWxscHRyIH07Ci0gICAg
RW51bWVyYXRpb25NZW1iZXIqIG1fZW51bWVyYXRpb25NZW1iZXIgeyBudWxscHRyIH07Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwsIGlzRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJl
c3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWU4ZGMzNmE4OTRiMzk5
ZTdmM2NhNjMwYjY2YThmMjQxNjBiNDk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi12b2lkIEV4cHJlc3Npb246OmRlc3Ryb3koRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
LXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFzc2lnbm1lbnRF
eHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxCb29s
ZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6Q2FsbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxDYWxsRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6Q29tbWE6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJl
ZmVyZW5jZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxEZXJlZmVyZW5jZUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxGbG9hdExpdGVyYWw+KGV4
cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Oklu
dGVnZXJMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PEludGVnZXJMaXRlcmFsPihl
eHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpM
b2dpY2FsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dp
Y2FsTm90OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PExvZ2ljYWxOb3RFeHByZXNzaW9uPihl
eHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpN
YWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RG90
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkluZGV4OgotICAgICAgICBkZWxldGUgJmRv
d25jYXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgotICAgICAgICBkZWxldGUg
JmRvd25jYXN0PFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6Ci0gICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6
Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVz
c2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXZvaWQgRXhwcmVzc2lvbjo6ZGVzdHJ1Y3QoRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
LXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBkb3duY2FzdDxBc3NpZ25tZW50RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikufkFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGRvd25j
YXN0PEJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKS5+Qm9vbGVhbkxpdGVyYWwoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBkb3du
Y2FzdDxDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkNhbGxFeHByZXNzaW9uKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6Ci0gICAgICAgIGRv
d25jYXN0PENvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkNvbW1hRXhwcmVzc2lvbigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgot
ICAgICAgICBkb3duY2FzdDxEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5EZXJl
ZmVyZW5jZUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGRvd25jYXN0PEZsb2F0TGl0ZXJhbD4oZXhw
cmVzc2lvbikufkZsb2F0TGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJl
c3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxJbnRlZ2VyTGl0
ZXJhbD4oZXhwcmVzc2lvbikufkludGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgZG93bmNhc3Q8TG9naWNh
bEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Mb2dpY2FsRXhwcmVzc2lvbigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGRv
d25jYXN0PExvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TG9naWNhbE5vdEV4cHJl
c3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtl
QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLn5NYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAg
ICAgIGRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1ha2VQb2lu
dGVyRXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246Oktp
bmQ6OkRvdDoKLSAgICAgICAgZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkRv
dEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pLn5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkluZGV4OgotICAgICAgICBk
b3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5JbmRleEV4cHJlc3Npb24oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3Jp
dGU6Ci0gICAgICAgIGRvd25jYXN0PFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Np
b24pLn5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAgICAgICAgZG93bmNhc3Q8VGVybmFyeUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pLn5UZXJuYXJ5RXhwcmVzc2lvbigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0g
ICAgICAgIGRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pLn5VbnNp
Z25lZEludGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgotICAgICAgICBkb3duY2FzdDxFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pLn5FbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJs
ZVJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Np
b24pLn5WYXJpYWJsZVJlZmVyZW5jZSgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLWJv
b2wgRXhwcmVzc2lvbjo6bWF5QmVFZmZlY3RmdWwoKSBjb25zdAotewotICAgIGF1dG8mIGV4cHJl
c3Npb24gPSBjb25zdF9jYXN0PEV4cHJlc3Npb24mPigqdGhpcyk7Ci0KLSAgICBzd2l0Y2ggKGV4
cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0
ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKLSAgICBjYXNl
IEV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VmFyaWFi
bGVSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEZXJlZmVyZW5j
ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLnBvaW50ZXIoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0g
ICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmxlZnQoKS5tYXlCZUVmZmVjdGZ1bCgp
IHx8IGRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKS5yaWdodCgpLm1heUJl
RWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
b3BlcmFuZCgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmxlZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVs
KCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgotICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKS5sZWZ0VmFs
dWUoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6
Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKS5iYXNl
KCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6
Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmJh
c2UoKS5tYXlCZUVmZmVjdGZ1bCgpIHx8IGRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikuaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzZhMDQ3MzQyYzUzNGZlZDM3NjdkZjBm
MWQ3NTNlZWY0NzY4YWMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJl
c3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LQotcHJvdGVjdGVkOgotICAgIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0K
LSAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50OF90IHsKLSAgICAgICAgQXNzaWdubWVudCwKLSAg
ICAgICAgQm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIENhbGwsCi0gICAgICAgIENvbW1hLAotICAg
ICAgICBEZXJlZmVyZW5jZSwKLSAgICAgICAgRG90LAotICAgICAgICBHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZSwKLSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBJbmRleCwKLSAgICAgICAg
SW50ZWdlckxpdGVyYWwsCi0gICAgICAgIExvZ2ljYWwsCi0gICAgICAgIExvZ2ljYWxOb3QsCi0g
ICAgICAgIE1ha2VBcnJheVJlZmVyZW5jZSwKLSAgICAgICAgTWFrZVBvaW50ZXIsCi0gICAgICAg
IFJlYWRNb2RpZnlXcml0ZSwKLSAgICAgICAgVGVybmFyeSwKLSAgICAgICAgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCwKLSAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UsCi0gICAgICAgIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCwKLSAgICB9OwotCi0gICAgRXhwcmVzc2lvbihDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxv
Y2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEV4cHJlc3Npb24mKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cnVjdChF
eHByZXNzaW9uJik7Ci0KLSAgICBFeHByZXNzaW9uKGNvbnN0IEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKLSAgICBFeHByZXNzaW9uKEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVz
c2lvbiYgb3BlcmF0b3I9KGNvbnN0IEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBFeHByZXNz
aW9uJiBvcGVyYXRvcj0oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbm5hbWVkVHlw
ZSogbWF5YmVSZXNvbHZlZFR5cGUoKSB7IHJldHVybiBtX3R5cGUgPyAmKm1fdHlwZSA6IG51bGxw
dHI7IH0KLQotICAgIFVubmFtZWRUeXBlJiByZXNvbHZlZFR5cGUoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV90eXBlOwotICAgIH0KLQotICAgIHZv
aWQgc2V0VHlwZShSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgewotICAgICAgICBBU1NFUlQo
IW1fdHlwZSk7Ci0gICAgICAgIG1fdHlwZSA9IFdURk1vdmUodHlwZSk7Ci0gICAgfQotCi0gICAg
Y29uc3QgVHlwZUFubm90YXRpb24qIG1heWJlVHlwZUFubm90YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3R5cGVBbm5vdGF0aW9uID8gJiptX3R5cGVBbm5vdGF0aW9uIDogbnVsbHB0cjsgfQotCi0g
ICAgY29uc3QgVHlwZUFubm90YXRpb24mIHR5cGVBbm5vdGF0aW9uKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgcmV0dXJuICptX3R5cGVB
bm5vdGF0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0VHlwZUFubm90YXRpb24oVHlwZUFubm90
YXRpb24mJiB0eXBlQW5ub3RhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlQW5u
b3RhdGlvbik7Ci0gICAgICAgIG1fdHlwZUFubm90YXRpb24gPSBXVEZNb3ZlKHR5cGVBbm5vdGF0
aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUeXBlVG8oRXhwcmVzc2lvbiYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoYXV0byogcmVzb2x2ZWRUeXBlID0gY29uc3RfY2FzdDxF
eHByZXNzaW9uKj4odGhpcyktPm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAgICBvdGhl
ci5zZXRUeXBlKCpyZXNvbHZlZFR5cGUpOwotICAgIH0KLQotICAgIGJvb2wgbWF5QmVFZmZlY3Rm
dWwoKSBjb25zdDsKLQotICAgIEtpbmQga2luZCgpIGNvbnN0ICB7IHJldHVybiBtX2tpbmQ7IH0K
LSAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6QXNzaWdubWVudDsgfQotICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpCb29sZWFuTGl0ZXJhbDsgfQotICAgIGJvb2wgaXND
YWxsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDYWxsOyB9Ci0g
ICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpDb21tYTsgfQotICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6RGVyZWZlcmVuY2U7IH0KLSAgICBib29sIGlzRG90RXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb3Q7IH0KLSAgICBib29sIGlz
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQotICAgIGJvb2wgaXNJ
bmRleEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW5kZXg7IH0K
LSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6SW50ZWdlckxpdGVyYWw7IH0KLSAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TG9naWNhbDsgfQotICAgIGJvb2wgaXNMb2dpY2Fs
Tm90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2FsTm90
OyB9Ci0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc01h
a2VQb2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtl
UG9pbnRlcjsgfQotICAgIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBpc0RvdEV4cHJlc3Npb24oKSB8fCBpc0luZGV4RXhwcmVzc2lvbigpOyB9Ci0gICAg
Ym9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6UmVhZE1vZGlmeVdyaXRlOyB9Ci0gICAgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlRlcm5hcnk7IH0KLSAgICBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOyB9Ci0gICAg
Ym9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw7IH0KLQotICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQg
dXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlv
biA9IGxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0
aW9uOwotICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIHN0ZDo6b3B0aW9uYWw8
VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247Ci0gICAgS2luZCBtX2tpbmQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShF
eHByZXNzaW9uKQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVT
U0lPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbikgeyByZXR1cm4gZXhwcmVzc2lvbi5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFs
bHRocm91Z2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZhbGx0aHJvdWdoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTQ0ZmM1NTBl
OWJiMzZkNzI5MWFkY2QyMmFmOTViZjhjODc0ZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmFsbHRocm91Z2guaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGYWxsdGhyb3Vn
aCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIEZhbGx0aHJvdWdoKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZhbGx0aHJvdWdoKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7Ci0KLSAgICBGYWxsdGhyb3VnaChjb25z
dCBGYWxsdGhyb3VnaCYpID0gZGVsZXRlOwotICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYp
ID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEZhbGx0aHJvdWdoKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGYWxsdGhyb3VnaCwgaXNGYWxsdGhyb3VnaCgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxZjlkNGIwOWQ3OGJkMzE5MzRjODkzMmUw
YWQ4Y2U5MTBmMWU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExp
dGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBGbG9hdExpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkK
LSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpGbG9hdExpdGVyYWwpCi0gICAg
ICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgRmxv
YXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJh
bChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRv
cj0oY29uc3QgRmxvYXRMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsJiBvcGVy
YXRvcj0oRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KLQotICAgIEZsb2F0TGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAg
ICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9uZSgpOwotICAgICAgICBpZiAoYXV0byog
cmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAgICBy
ZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnJlc29s
dmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZsb2F0TGl0ZXJhbFR5cGUgbV90eXBlOwot
ICAgIGZsb2F0IG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShGbG9hdExpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihGbG9hdExpdGVyYWwsIGlzRmxvYXRMaXRlcmFsKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJh
bFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzMwOGMwMGU3NWYwNGQy
YTc4M2I4OTE5Njk5NjU1NDMzZDViODA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLUZsb2F0TGl0ZXJhbFR5
cGU6OkZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkK
LSAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0TGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUo
dmFsdWUpCi0gICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0
aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKLXsKLX0KLQotYm9vbCBGbG9hdExp
dGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYg
KCFpczxOYW1lZFR5cGU+KHR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYg
bmFtZWRUeXBlID0gZG93bmNhc3Q8TmFtZWRUeXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4obmFtZWRUeXBlKTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0Zsb2F0
aW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5jYW5SZXByZXNlbnRGbG9hdCgpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIEZsb2F0TGl0ZXJhbFR5cGU6OmNvbnZl
cnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKLXsKLSAgICBp
ZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLUZsb2F0TGl0ZXJhbFR5cGUgRmxvYXRMaXRlcmFsVHlw
ZTo6Y2xvbmUoKSBjb25zdAotewotICAgIEZsb2F0TGl0ZXJhbFR5cGUgcmVzdWx0KG1fcHJlZmVy
cmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgIGlmIChhdXRvKiB0eXBlID0g
bWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJlc29sdmUoY29uc3RfY2FzdDxB
U1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQubV9wcmVmZXJyZWRUeXBlID0g
bV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjE0ZTA4NTliN2MwOGY1NjIyZGE0YjBlNGVhNzQyMWI3Mzc1ZjVlNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZl
cmVuY2U7Ci0KLWNsYXNzIEZsb2F0TGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJs
ZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZsb2F0
TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCBmbG9hdCB2YWx1ZSk7Ci0KLSAgICB+RmxvYXRMaXRl
cmFsVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0TGl0ZXJhbFR5cGUoY29uc3QgRmxvYXRM
aXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFs
VHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29u
c3QgRmxvYXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9w
ZXJhdG9yPShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIGZsb2F0IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVy
cmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQotCi0gICAgYm9vbCBjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25z
dCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgRmxvYXRMaXRlcmFsVHlwZSBjbG9uZSgpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIGZsb2F0IG1fdmFsdWU7Ci0gICAgLy8gVGhpcyBpcyBhIHVu
aXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbgotICAgIC8v
IENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5
cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0gICAgUmVmPFR5cGVSZWZlcmVuY2U+
IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
REVGSU5FX0RFRkFVTFRfREVMRVRFKEZsb2F0TGl0ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfVFlQRShGbG9hdExpdGVyYWxUeXBlLCBpc0Zsb2F0TGl0ZXJhbFR5cGUo
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhNTc0MGY4NzVmZmRkNzllZGFlNzJhZjgzNTg0YTg4
NjI4ZmUzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZvckxv
b3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBGb3JMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PFN0YXRlbWVudD4mJiBpbml0aWFsaXphdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
JiYgY29uZGl0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBpbmNyZW1lbnQsIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24s
IEtpbmQ6OkZvckxvb3ApCi0gICAgICAgICwgbV9pbml0aWFsaXphdGlvbihXVEZNb3ZlKGluaXRp
YWxpemF0aW9uKSkKLSAgICAgICAgLCBtX2NvbmRpdGlvbihXVEZNb3ZlKGNvbmRpdGlvbikpCi0g
ICAgICAgICwgbV9pbmNyZW1lbnQoV1RGTW92ZShpbmNyZW1lbnQpKQotICAgICAgICAsIG1fYm9k
eShXVEZNb3ZlKGJvZHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Rm9yTG9vcCgpID0gZGVmYXVs
dDsKLQotICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOwotICAgIEZvckxvb3Ao
Rm9yTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiYgaW5pdGlh
bGl6YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9Ci0gICAgRXhwcmVzc2lvbiog
Y29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24uZ2V0KCk7IH0KLSAgICBFeHByZXNzaW9u
KiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudC5nZXQoKTsgfQotICAgIFN0YXRlbWVu
dCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxT
dGF0ZW1lbnQ+IG1faW5pdGlhbGl6YXRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+IG1fY29uZGl0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2luY3Jl
bWVudDsKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGb3JMb29wKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGb3JMb29wLCBpc0Zvckxvb3Ao
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlv
bkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmM1YjY3NGYzNGY5
MTU0YjBjYWUyZWE0MjY1YTYyMmNhNzMyOWNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi11c2lu
ZyBGdW5jdGlvbkF0dHJpYnV0ZSA9IFZhcmlhbnQ8TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
PjsKLXVzaW5nIEF0dHJpYnV0ZUJsb2NrID0gVmVjdG9yPEZ1bmN0aW9uQXR0cmlidXRlPjsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjZWIyNGQyZTI4ZjYxY2ZiNWFkYzk0MmUyNjg4ZTM0YTcyMzcyOWM2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNp
bmNsdWRlICJXSExTTFBhcnNpbmdNb2RlLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgot
I2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEF0
dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5
cGU+IGVudHJ5UG9pbnRUeXBlLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUs
IFZhcmlhYmxlRGVjbGFyYXRpb25zJiYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPFNlbWFu
dGljPiYmIHNlbWFudGljLCBib29sIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlIHBhcnNpbmdNb2Rl
KQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fYXR0cmli
dXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVCbG9jaykpCi0gICAgICAgICwgbV9lbnRyeVBvaW50
VHlwZShlbnRyeVBvaW50VHlwZSkKLSAgICAgICAgLCBtX2lzT3BlcmF0b3IoaXNPcGVyYXRvcikK
LSAgICAgICAgLCBtX3BhcnNpbmdNb2RlKHBhcnNpbmdNb2RlKQotICAgICAgICAsIG1fdHlwZShX
VEZNb3ZlKHR5cGUpKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAs
IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQotICAgICAgICAsIG1fc2VtYW50aWMo
V1RGTW92ZShzZW1hbnRpYykpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9u
RGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0
IEZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9u
KEZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBib29sIGlz
RnVuY3Rpb25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLQotICAgIEF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaygpIHsgcmV0dXJuIG1fYXR0
cmlidXRlQmxvY2s7IH0KLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYg
ZW50cnlQb2ludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5UG9pbnRUeXBlOyB9Ci0gICAg
Y29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBV
bm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQotICAgIGJvb2wgaXNDYXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lID09
ICJvcGVyYXRvciBjYXN0IjsgfQotICAgIGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zJiBwYXJh
bWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Ci0gICAgVmFyaWFibGVEZWNs
YXJhdGlvbnMmIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KLSAgICBTZW1h
bnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljLmdldCgpOyB9Ci0gICAgYm9vbCBp
c09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09wZXJhdG9yOyB9Ci0gICAgY29uc3QgQ29k
ZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsg
fQotCi0gICAgUGFyc2luZ01vZGUgcGFyc2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNp
bmdNb2RlOyB9Ci0KLSAgICBOYW1lU3BhY2UgbmFtZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lU3BhY2U7IH0KLSAgICB2b2lkIHNldE5hbWVTcGFjZShOYW1lU3BhY2UgbmFtZVNwYWNlKSB7
IG1fbmFtZVNwYWNlID0gbmFtZVNwYWNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9u
IG1fY29kZUxvY2F0aW9uOwotICAgIEF0dHJpYnV0ZUJsb2NrIG1fYXR0cmlidXRlQmxvY2s7Ci0g
ICAgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gbV9lbnRyeVBvaW50VHlwZTsKLSAgICBi
b29sIG1faXNPcGVyYXRvcjsKLSAgICBQYXJzaW5nTW9kZSBtX3BhcnNpbmdNb2RlOwotICAgIFJl
ZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmFyaWFibGVE
ZWNsYXJhdGlvbnMgbV9wYXJhbWV0ZXJzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4g
bV9zZW1hbnRpYzsKLSAgICBOYW1lU3BhY2UgbV9uYW1lU3BhY2UgeyBOYW1lU3BhY2U6OlN0YW5k
YXJkTGlicmFyeSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZGVm
aW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04oVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHR5
cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMjQ4ZmI1
YTdhNDU0ZWU1Mjk3MjdiYmYyN2RhODE5MmFkNzVkZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRnVuY3Rpb25EZWZpbml0aW9uIDogcHVibGljIEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgQmxvY2smJiBibG9j
aykKLSAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNsYXJh
dGlvbikpCi0gICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+RnVuY3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRnVu
Y3Rpb25EZWZpbml0aW9uKGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwotICAg
IEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KLQotcHJpdmF0
ZToKLSAgICBCbG9jayBtX2Jsb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKEZ1
bmN0aW9uRGVmaW5pdGlvbiwgaXNGdW5jdGlvbkRlZmluaXRpb24oKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmUxZmI2MDg2ZDlmMGI2ZTI2
MWEzZjFlMzNhZTcyYTFhZTRjYTZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBT
dHJ1Y3R1cmVFbGVtZW50KiBzdHJ1Y3RGaWVsZCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX2Jhc2UoV1RG
TW92ZShiYXNlKSkKLSAgICAgICAgLCBtX3N0cnVjdEZpZWxkKCpzdHJ1Y3RGaWVsZCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3RGaWVsZCk7Ci0gICAgfQotCi0gICAgfkdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIAotICAgIFN0cnVjdHVyZUVsZW1lbnQmIHN0
cnVjdEZpZWxkKCkgeyByZXR1cm4gbV9zdHJ1Y3RGaWVsZDsgfQotCi0gICAgRXhwcmVzc2lvbiYg
YmFzZSgpIHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiBtX2Jhc2U7Ci0gICAgU3RydWN0dXJlRWxlbWVudCYgbV9zdHJ1Y3RGaWVs
ZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsIGlzR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3Rh
dGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
ZlN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWQ2ZGEzY2QxNjAx
YThiOWExNWQzYWFiMTVmYmY5YmZjYzgyZDAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTElmU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgot
I2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgSWZTdGF0ZW1lbnQgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBJZlN0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIHN0ZDo6dW5pcXVl
X3B0cjxTdGF0ZW1lbnQ+JiYgZWxzZUJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpJZikKLSAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwp
KQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIG1fZWxzZUJvZHko
V1RGTW92ZShlbHNlQm9keSkpCi0gICAgewotICAgIH0KLQotICAgIH5JZlN0YXRlbWVudCgpID0g
ZGVmYXVsdDsKLQotICAgIElmU3RhdGVtZW50KGNvbnN0IElmU3RhdGVtZW50JikgPSBkZWxldGU7
Ci0gICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVz
c2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9Ci0gICAgU3RhdGVt
ZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0gICAgU3RhdGVtZW50KiBlbHNlQm9keSgp
IHsgcmV0dXJuIG1fZWxzZUJvZHkuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2Jv
ZHk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9lbHNlQm9keTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKElmU3Rh
dGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChJZlN0YXRl
bWVudCwgaXNJZlN0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSW5kZXhFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTE3NDE1ZTMxYjQzOWYxMDc5ZTE4NGFkYTdlMmI3MDQxMWZjMzVjOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgSW5kZXhF
eHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW5kZXhFeHByZXNzaW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgaW5kZXgpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92ZShiYXNlKSkKLSAgICAgICAgLCBtX2lu
ZGV4KFdURk1vdmUoaW5kZXgpKQotICAgIHsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgICAgICBV
TlVTRURfUEFSQU0obV9wYWRkaW5nKTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5JbmRleEV4cHJl
c3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbmRleEV4cHJlc3Npb24oY29uc3QgSW5kZXhFeHBy
ZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgSW5kZXhFeHByZXNzaW9uKEluZGV4RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24oKSB7IHJldHVy
biBtX2luZGV4OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiBpbmRleFJlZmVyZW5jZSgp
IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZUluZGV4
KCkgeyByZXR1cm4gV1RGTW92ZShtX2luZGV4KTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiBtX2luZGV4OwotI2lmIENQVShBRERSRVNTMzIpCi0gICAgLy8gVGhpcyBp
cyB1c2VkIHRvIGFsbG93IGZvciByZXBsYWNlV2l0aCBpbnRvIGEgYmlnZ2VyIHR5cGUuCi0gICAg
Y2hhciBtX3BhZGRpbmdbNF07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEluZGV4RXhwcmVzc2lvbikKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEluZGV4RXhwcmVzc2lvbiwgaXNJbmRl
eEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEludGVnZXJMaXRlcmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE3
MjdhOGY5YjgwYTk5OTIyN2RhZTQxMWUxZTM4OGMwYTcyNzEzYS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMSW50ZWdlckxpdGVyYWwuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBl
UmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLWludDY0X3QgSW50ZWdlckxpdGVyYWw6OnZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKCkgY29uc3QKLXsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8
VHlwZVJlZmVyZW5jZT4obV90eXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBhdXRvJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
Zm9ybWF0VmFsdWVGcm9tSW50ZWdlcigpKG1fdmFsdWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SW50ZWdlckxpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjcwOWZlZGRk
MTNkZWE1MTQ4NTk4ZjI5YTA1NzA0Yjk5MmJmMmRlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRp
b24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQot
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5JbnRlZ2VyTGl0
ZXJhbCgpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsKGNvbnN0IEludGVnZXJMaXRl
cmFsJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWwoSW50ZWdlckxpdGVyYWwmJikgPSBk
ZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBJbnRlZ2VyTGl0
ZXJhbCYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0oSW50ZWdlckxp
dGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gbV90eXBlOyB9Ci0gICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQotCi0gICAgSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgSW50
ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICAgICAgcmVz
dWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9uZSgpOwotICAgICAgICBpZiAoYXV0byogcmVzb2x2ZWRU
eXBlID0gbV90eXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgICAgICByZXN1bHQubV90
eXBlLnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnJlc29sdmVkVHlwZSkp
OwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi0gICAgaW50NjRfdCB2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0OwotCi1wcml2
YXRlOgotICAgIEludGVnZXJMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fdmFsdWU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShJbnRlZ2VyTGl0ZXJhbCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2Njc1MGI2NDNlYjY2MjA2YTM3ZTI5OTAx
YTQ2N2MyYmJkZTdkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlw
ZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZl
clR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1JbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9j
YXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6Oklu
dGVnZXJMaXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlw
ZShUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sICJpbnQiX3N0ciwgVHlwZUFyZ3VtZW50
cygpKSkKLXsKLX0KLQotYm9vbCBJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3Qg
VHlwZSYgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5
cGU+KHR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
ID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgIGlmICgh
bmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5jYW5SZXByZXNlbnRJbnRlZ2VyKCkobV92
YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5z
aWduZWQgSW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1f
cHJlZmVycmVkVHlwZSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1J
bnRlZ2VyTGl0ZXJhbFR5cGUgSW50ZWdlckxpdGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0g
ICAgSW50ZWdlckxpdGVyYWxUeXBlIHJlc3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlv
bigpLCBtX3ZhbHVlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkp
Ci0gICAgICAgIHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0
eXBlKSk7Ci0gICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5
UmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhZWRmNDc2
YjMyYjdmYmY3OWU4YzBkN2RjNDdjODMxOTFiNjBhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLQotY2xhc3Mg
SW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUo
Q29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwotCi0gICAgfkludGVnZXJMaXRlcmFsVHlwZSgpID0g
ZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5
cGUmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBl
JiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0
IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRlcmFsVHlwZSYg
b3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBpbnQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiBwcmVm
ZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9Ci0KLSAgICBib29sIGNhblJl
c29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUo
KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV92YWx1ZTsKLSAgICAvLyBUaGlzIGlzIGEg
dW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAg
Ly8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxUeXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4g
VHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Npb24KLSAgICBSZWY8VHlwZVJlZmVyZW5j
ZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoSW50ZWdlckxpdGVyYWxUeXBlKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJMaXRl
cmFsVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TExvZ2ljYWxFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMWU5
MzExMGZlMmI1MmJlOGM2Y2ExZjFjNDY5NGI0NDc3NzgwYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDgy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBM
b2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90
IHsKLSAgICAgICAgQW5kLAotICAgICAgICBPcgotICAgIH07Ci0KLSAgICBMb2dpY2FsRXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFR5cGUgdHlwZSwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbCkKLSAgICAgICAgLCBtX3R5cGUodHlwZSkK
LSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdURk1v
dmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TG9naWNhbEV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBMb2dpY2FsRXhwcmVzc2lvbihjb25zdCBMb2dpY2FsRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOwotICAgIExvZ2ljYWxFeHByZXNzaW9uKExvZ2ljYWxFeHByZXNzaW9uJiYpID0g
ZGVmYXVsdDsKLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0g
ICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIEV4cHJlc3Npb24m
IHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdodDsgfQotCi1wcml2YXRlOgotICAgIFR5cGUgbV90eXBl
OwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7Ci0gICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IG1fcmlnaHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxFeHByZXNzaW9uLCBpc0xvZ2ljYWxFeHBy
ZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTNlZGMzNjM1MmJlYWIwNDhhMzhlOThlNzNkYzU2OTE3NWJmYzZhYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIExvZ2ljYWxOb3RFeHBy
ZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgb3Bl
cmFuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpMb2dpY2FsTm90KQot
ICAgICAgICAsIG1fb3BlcmFuZChXVEZNb3ZlKG9wZXJhbmQpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+TG9naWNhbE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBMb2dpY2FsTm90RXhw
cmVzc2lvbihjb25zdCBMb2dpY2FsTm90RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIExvZ2lj
YWxOb3RFeHByZXNzaW9uKExvZ2ljYWxOb3RFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAg
IEV4cHJlc3Npb24mIG9wZXJhbmQoKSB7IHJldHVybiBtX29wZXJhbmQ7IH0KLQotcHJpdmF0ZToK
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9vcGVyYW5kOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTG9naWNhbE5vdEV4cHJl
c3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2Fs
Tm90RXhwcmVzc2lvbiwgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzVkNjRjYjk1
NzMxNjAyMDk1NzE3YjJiYWZjNjRiZTdlMzYwOTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCIKLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVl
LCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2UpCi0gICAgICAgICwgbV9sZWZ0
VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUo
YWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIH5NYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbihjb25zdCBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAg
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1f
bGVmdFZhbHVlOyB9Ci0KLSAgICBib29sIG1pZ2h0RXNjYXBlKCkgY29uc3QgeyByZXR1cm4gbV9h
ZGRyZXNzRXNjYXBlTW9kZSA9PSBBZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlczsgfQotCi1wcml2
YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnRWYWx1ZTsKLSAgICBBZGRyZXNz
RXNjYXBlTW9kZSBtX2FkZHJlc3NFc2NhcGVNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtl
UG9pbnRlckV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyN2My
MWM1MDVhMDM2ODNjYmU5NTYwNDYyMzI5NTFlYjExMmZmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0x
LDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCIKLSNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTWFrZVBvaW50ZXJFeHByZXNz
aW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1v
ZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6TWFrZVBvaW50ZXIpCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUp
KQotICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAg
ewotICAgIH0KLQotICAgIH5NYWtlUG9pbnRlckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBNYWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFrZVBvaW50ZXJFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKE1ha2VQb2ludGVyRXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xl
ZnRWYWx1ZTsgfQotCi0gICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRk
cmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7IH0KLQotcHJpdmF0
ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7Ci0gICAgQWRkcmVzc0Vz
Y2FwZU1vZGUgbV9hZGRyZXNzRXNjYXBlTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKE1ha2VQb2ludGVyRXhwcmVzc2lvbikK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE1ha2VQb2ludGVyRXhw
cmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM5NDZmZGZhMmQyNWQzYTg3ZjUyYWVkMjgxYmVlNjBkMTI5ZDQzYjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLS8vIERpZmZlcmVudCBzaGFkZXIgbW9kdWxlcyBvcGVyYXRlIGlu
IGRpZmZlcmVudCBuYW1lc3BhY2VzLgotLy8gVGhpcyBtZWFucyBpdCdzIHBvc3NpYmxlIHRvIGhh
dmUgdHdvIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZXMsIGFzIGxvbmcgYXMgdGhl
eSBhcmUgaW4gZGlmZmVyZW50IG1vZHVsZXMuCi1lbnVtIGNsYXNzIE5hbWVTcGFjZSA6IHVpbnQ4
X3QgewotICAgIFN0YW5kYXJkTGlicmFyeSA9IDAsCi0gICAgTmFtZVNwYWNlMSA9IDEsCi0gICAg
TmFtZVNwYWNlMiA9IDIKLX07Ci0KLWNvbnN0ZXhwciB1bnNpZ25lZCBuYW1lU3BhY2VDb3VudCA9
IDM7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xO
YW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE5hbWVkVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjExZjhiYTMwNjY4
ODk0NmNiN2YyZjE5N2I1OTZiNWNiMzk2YzI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE5hbWVkVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgot
I2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlwZSA6IHB1
YmxpYyBUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgot
ICAgIH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBOYW1lZFR5cGUoS2lu
ZCBraW5kLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDog
VHlwZShraW5kKQotICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAgICB9Ci0KLSAgICBOYW1lZFR5cGUoY29u
c3QgTmFtZWRUeXBlJikgPSBkZWxldGU7Ci0gICAgTmFtZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi0gICAgU3RyaW5n
JiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBOYW1lU3BhY2UgbmFtZVNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0KLSAgICB2b2lkIHNldE5hbWVTcGFjZShOYW1l
U3BhY2UgbmFtZVNwYWNlKSB7IG1fbmFtZVNwYWNlID0gbmFtZVNwYWNlOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0
dXJuICp0aGlzOyB9Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFN0cmlu
ZyBtX25hbWU7Ci0gICAgTmFtZVNwYWNlIG1fbmFtZVNwYWNlIHsgTmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5F
X0RFRkFVTFRfREVMRVRFKE5hbWVkVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9UWVBFKE5hbWVkVHlwZSwgaXNOYW1lZFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRkOWFhZjViZGUyY2E3YThlMzljNTVj
YzU4NDgwYjNjYTQyOGI3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVi
bGljIEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oRnVuY3Rpb25EZWNsYXJhdGlv
biYmIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgICAgIDogRnVuY3Rpb25EZWNsYXJhdGlvbihX
VEZNb3ZlKGZ1bmN0aW9uRGVjbGFyYXRpb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5OYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihjb25zdCBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxl
dGU7Ci0gICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcml2YXRlOgotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIGlzTmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTU0YTE2MmI3ODE3ZDQ3M2E4MmRkOTc5M2EwYmU5MTIzMGEzNGVkMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xU
eXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBl
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOYXRpdmVUeXBl
RGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJn
dW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5
cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
fk5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbihjb25zdCBOYXRpdmVUeXBlRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBOYXRp
dmVUeXBlRGVjbGFyYXRpb24oTmF0aXZlVHlwZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQot
ICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVu
dHM7IH0KLQotICAgIGJvb2wgaXNJbnQoKSBjb25zdCB7IHJldHVybiBtX2lzSW50OyB9Ci0gICAg
Ym9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1iZXI7IH0KLSAgICBib29sIGlz
RmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzRmxvYXRpbmc7IH0KLSAgICBib29sIGlzQXRv
bWljKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0b21pYzsgfQotICAgIGJvb2wgaXNWZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2lzVmVjdG9yOyB9Ci0gICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNYXRyaXg7IH0KLSAgICBib29sIGlzT3BhcXVlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNPcGFxdWVUeXBlOyB9Ci0gICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX2lzVGV4dHVyZTsgfQotICAgIGJvb2wgaXNUZXh0dXJlQXJyYXkoKSBjb25zdCB7IHJldHVy
biBtX2lzVGV4dHVyZUFycmF5OyB9Ci0gICAgYm9vbCBpc0RlcHRoVGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZXB0aFRleHR1cmU7IH0KLSAgICBib29sIGlzV3JpdGFibGVUZXh0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1dyaXRhYmxlVGV4dHVyZTsgfQotICAgIGJvb2wgaXNDdWJlVGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdWJlVGV4dHVyZTsgfQotICAgIHVpbnQgdGV4dHVy
ZURpbWVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZURpbWVuc2lvbjsgfQotICAgIGJv
b2wgaXNTaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2lnbmVkOyB9Ci0gICAgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGludCk+JiBjYW5SZXByZXNlbnRJbnRlZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5SZXByZXNlbnRJbnRlZ2VyOyB9Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
KHVuc2lnbmVkKT4mIGNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyOyB9Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGZsb2F0KT4mIGNhblJlcHJlc2VudEZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9jYW5S
ZXByZXNlbnRGbG9hdDsgfQotICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90
KT4mIHN1Y2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yOyB9Ci0gICAgY29uc3Qg
c3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+JiBmb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyOyB9Ci0gICAgY29uc3Qgc3RkOjpm
dW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4mIGZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyOyB9Ci0g
ICAgdm9pZCBpdGVyYXRlQWxsVmFsdWVzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90
KT4mIGNhbGxiYWNrKSB7IG1faXRlcmF0ZUFsbFZhbHVlcyhjYWxsYmFjayk7IH0KLXByaXZhdGU6
Ci0gICAgdW5zaWduZWQgbWF0cml4RGltZW5zaW9uKHVuc2lnbmVkIHR5cGVBcmd1bWVudEluZGV4
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWF0cml4KCkpOwotICAgICAgICBBU1NFUlQodHlw
ZUFyZ3VtZW50cygpLnNpemUoKSA9PSAzKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uPih0eXBlQXJndW1lbnRzKClbdHlwZUFyZ3VtZW50SW5kZXhdKS5p
bnRlZ2VyTGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotcHVibGljOgotICAgIHVuc2lnbmVkIG51
bWJlck9mTWF0cml4Um93cygpCi0gICAgewotICAgICAgICByZXR1cm4gbWF0cml4RGltZW5zaW9u
KDIpOwotICAgIH0KLSAgICB1bnNpZ25lZCBudW1iZXJPZk1hdHJpeENvbHVtbnMoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1hdHJpeERpbWVuc2lvbigxKTsKLSAgICB9Ci0KLSAgICBUeXBlUmVm
ZXJlbmNlJiB2ZWN0b3JUeXBlQXJndW1lbnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmVj
dG9yKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+
KHR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdmVjdG9yU2l6ZSgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNWZWN0b3IoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6
OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4odHlwZUFyZ3VtZW50cygpWzFdKS5pbnRlZ2Vy
TGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgVHlwZVJlZmVyZW5jZSYgbWF0cml4VHlw
ZUFyZ3VtZW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01hdHJpeCgpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+Pih0eXBlQXJndW1lbnRzKClb
MF0pOwotICAgIH0KLQotICAgIHZvaWQgc2V0SXNJbnQoKSB7IG1faXNJbnQgPSB0cnVlOyB9Ci0g
ICAgdm9pZCBzZXRJc051bWJlcigpIHsgbV9pc051bWJlciA9IHRydWU7IH0KLSAgICB2b2lkIHNl
dElzRmxvYXRpbmcoKSB7IG1faXNGbG9hdGluZyA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQXRv
bWljKCkgeyBtX2lzQXRvbWljID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNWZWN0b3IoKSB7IG1f
aXNWZWN0b3IgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc01hdHJpeCgpIHsgbV9pc01hdHJpeCA9
IHRydWU7IH0KLSAgICB2b2lkIHNldElzT3BhcXVlVHlwZSgpIHsgbV9pc09wYXF1ZVR5cGUgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1RleHR1cmUoKSB7IG1faXNUZXh0dXJlID0gdHJ1ZTsgfQot
ICAgIHZvaWQgc2V0SXNUZXh0dXJlQXJyYXkoKSB7IG1faXNUZXh0dXJlQXJyYXkgPSB0cnVlOyB9
Ci0gICAgdm9pZCBzZXRJc0RlcHRoVGV4dHVyZSgpIHsgbV9pc0RlcHRoVGV4dHVyZSA9IHRydWU7
IH0KLSAgICB2b2lkIHNldElzV3JpdGFibGVUZXh0dXJlKCkgeyBtX2lzV3JpdGFibGVUZXh0dXJl
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNDdWJlVGV4dHVyZSgpIHsgbV9pc0N1YmVUZXh0dXJl
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0VGV4dHVyZURpbWVuc2lvbih1aW50IHRleHR1cmVEaW1l
bnNpb24pIHsgbV90ZXh0dXJlRGltZW5zaW9uID0gdGV4dHVyZURpbWVuc2lvbjsgfQotICAgIHZv
aWQgc2V0SXNTaWduZWQoKSB7IG1faXNTaWduZWQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRDYW5S
ZXByZXNlbnRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiYmIGNhblJlcHJlc2VudCkg
eyBtX2NhblJlcHJlc2VudEludGVnZXIgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KLSAgICB2
b2lkIHNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2wodW5z
aWduZWQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlciA9
IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQotICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50RmxvYXQo
c3RkOjpmdW5jdGlvbjxib29sKGZsb2F0KT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNl
bnRGbG9hdCA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQotICAgIHZvaWQgc2V0U3VjY2Vzc29y
KHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4mJiBzdWNjZXNzb3IpIHsgbV9zdWNjZXNz
b3IgPSBXVEZNb3ZlKHN1Y2Nlc3Nvcik7IH0KLSAgICB2b2lkIHNldEZvcm1hdFZhbHVlRnJvbUlu
dGVnZXIoc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3Jt
YXRWYWx1ZUZyb21JbnRlZ2VyID0gV1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KLSAgICB2b2lkIHNl
dEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5z
aWduZWQpPiYmIGZvcm1hdFZhbHVlKSB7IG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2Vy
ID0gV1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KLSAgICB2b2lkIHNldEl0ZXJhdGVBbGxWYWx1ZXMo
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4m
JiBpdGVyYXRlQWxsVmFsdWVzKSB7IG1faXRlcmF0ZUFsbFZhbHVlcyA9IFdURk1vdmUoaXRlcmF0
ZUFsbFZhbHVlcyk7IH0KLQotcHJpdmF0ZToKLSAgICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3Vt
ZW50czsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4gbV9jYW5SZXByZXNlbnRJbnRlZ2Vy
OwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+IG1fY2FuUmVwcmVzZW50VW5zaWdu
ZWRJbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChmbG9hdCk+IG1fY2FuUmVwcmVzZW50
RmxvYXQ7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiBtX3N1Y2Nlc3NvcjsK
LSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50KT4gbV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2Vy
OwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+IG1fZm9ybWF0VmFsdWVGcm9t
VW5zaWduZWRJbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woaW50NjRfdCk+Jik+IG1faXRlcmF0ZUFsbFZhbHVlczsKLSAgICB1aW50IG1fdGV4
dHVyZURpbWVuc2lvbiB7IDAgfTsKLSAgICBib29sIG1faXNJbnQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9pc051bWJlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRmxvYXRpbmcgeyBmYWxzZSB9
OwotICAgIGJvb2wgbV9pc0F0b21pYyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzVmVjdG9yIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1faXNNYXRyaXggeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc09w
YXF1ZVR5cGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1RleHR1cmUgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9pc1RleHR1cmVBcnJheSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRGVwdGhUZXh0
dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNXcml0YWJsZVRleHR1cmUgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9pc0N1YmVUZXh0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTaWduZWQg
eyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmF0aXZlVHlwZURlY2xhcmF0aW9uLCBpc05hdGl2
ZVR5cGVEZWNsYXJhdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc0OTk4YjE0NGMxYzRiMTY0YjRlZjJjOWM5MGFhMmNl
NGQwODU2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlIDogcHVibGlj
IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZGVwdGgpCi0g
ICAgICAgIDogQmFzZUZ1bmN0aW9uQXR0cmlidXRlKGxvY2F0aW9uKQotICAgICAgICAsIG1fd2lk
dGgod2lkdGgpCi0gICAgICAgICwgbV9oZWlnaHQoaGVpZ2h0KQotICAgICAgICAsIG1fZGVwdGgo
ZGVwdGgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZSgpID0gZGVmYXVsdDsKLQotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShj
b25zdCBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKLSAgICBOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUoTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiYpID0gZGVm
YXVsdDsKLQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQot
ICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgdW5z
aWduZWQgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoOyB9Ci0KLXByaXZhdGU6Ci0gICAg
dW5zaWduZWQgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBtX2hlaWdodDsKLSAgICB1bnNpZ25lZCBt
X2RlcHRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk1ZmJkYjZhYjRhNmZiODNiZTVkMzRjMmQ4ODhjMDE1MDk4ZTI1ZGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUG9pbnRlclR5cGUgZmluYWwg
OiBwdWJsaWMgUmVmZXJlbmNlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9pbnRlclR5cGUpOwotICAgIHVzaW5nIEJhc2UgPSBS
ZWZlcmVuY2VUeXBlOwotCi0gICAgUG9pbnRlclR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBB
ZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQot
ICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlw
ZSksIEtpbmQ6OlBvaW50ZXIpCi0gICAgewotICAgIH0KLQotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UG9pbnRlclR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUG9pbnRlclR5cGUobG9jYXRpb24sIGFk
ZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICB+UG9pbnRlclR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5CYXNlOjpoYXNoKCkg
XiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaCgicG9pbnRlciIpOwotICAgIH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2ludGVyVHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNlKCkg
JiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwotICAgIH0KLQotICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhl
bGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICcqJyk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUG9pbnRlclR5cGUpCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShQb2ludGVyVHlwZSwgaXNQb2ludGVy
VHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTFhMjNkMGEzNTZjYjczNDhiNDM2MDNlNzc1YmIzODcyYzY3Nzc0ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wcm90ZWN0ZWQ6Ci0gICAgflByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbigpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtpbmQga2luZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgYmFzZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBraW5kKQotICAgICAgICAs
IG1fYmFzZShXVEZNb3ZlKGJhc2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0g
ICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gbV9iYXNlOyB9Ci0g
ICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiBiYXNlUmVmZXJlbmNlKCkgeyByZXR1cm4gbV9iYXNl
OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VCYXNlKCkgeyByZXR1cm4gV1RGTW92
ZShtX2Jhc2UpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFz
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiwgaXNQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFF1YWxpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUXVhbGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ODc3ZGYy
MmVkMjE2ZDZlMGYwM2Y0N2Y0Y2YxZjQ4ODM3YjljODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUXVhbGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotZW51bSBjbGFzcyBRdWFsaWZpZXIgOiB1aW50OF90IHsKLSAgICBOb2ludGVycG9s
YXRpb24sCi0gICAgTm9wZXJzcGVjdGl2ZSwKLSAgICBVbmlmb3JtLAotICAgIENlbnRyb2lkLAot
ICAgIFNhbXBsZQotfTsKLQotdXNpbmcgUXVhbGlmaWVycyA9IFZlY3RvcjxRdWFsaWZpZXI+Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMDNlYzhkMTgwYzhiNTljZDFkYjE0Y2Y1
ZDU2N2FiMDUxNjllNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLS8qCi0gKiAgMS4gRXZhbHVhdGUgbV9sZWZ0VmFsdWUKLSAqICAy
LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX29sZFZhbHVlCi0gKiAgMy4gRXZhbHVhdGUgbV9uZXdW
YWx1ZUV4cHJlc3Npb24KLSAqICA0LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX25ld1ZhbHVlCi0g
KiAgNS4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9sZWZ0VmFsdWUKLSAqICA2LiBFdmFsdWF0ZSBt
X3Jlc3VsdEV4cHJlc3Npb24KLSAqICA3LiBSZXR1cm4gdGhlIHJlc3VsdAotICovCi1jbGFzcyBS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbGVm
dFZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlJlYWRNb2RpZnlX
cml0ZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAg
ICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9u
LCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSkKLSAg
ICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4obG9j
YXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+IGxlZnRWYWx1ZSwgVW5pcXVlUmVm
PFZhcmlhYmxlRGVjbGFyYXRpb24+IG9sZFZhbHVlLCBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJh
dGlvbj4gbmV3VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6UmVh
ZE1vZGlmeVdyaXRlKQotICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkK
LSAgICAgICAgLCBtX29sZFZhbHVlKFdURk1vdmUob2xkVmFsdWUpKQotICAgICAgICAsIG1fbmV3
VmFsdWUoV1RGTW92ZShuZXdWYWx1ZSkpCi0gICAgewotICAgIH0KLQotCi0gICAgflJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKGNvbnN0IFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OwotCi0gICAgdm9pZCBzZXROZXdWYWx1ZUV4cHJlc3Npb24oVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgbmV3VmFsdWVFeHByZXNzaW9uKQotICAgIHsKLSAgICAgICAgbV9uZXdWYWx1ZUV4
cHJlc3Npb24gPSBXVEZNb3ZlKG5ld1ZhbHVlRXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRSZXN1bHRFeHByZXNzaW9uKFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJlc3VsdEV4cHJl
c3Npb24pCi0gICAgewotICAgICAgICBtX3Jlc3VsdEV4cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3Vs
dEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4g
b2xkVmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVS
ZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fb2xkVmFsdWUp
KTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+IG5ld1ZhcmlhYmxl
UmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFZhcmlhYmxl
UmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChtX25ld1ZhbHVlKSk7Ci0gICAgfQot
Ci0gICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLSAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mIGxlZnRWYWx1ZVJlZmVyZW5jZSgpIHsgcmV0dXJuIG1f
bGVmdFZhbHVlOyB9Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFsdWUoKSB7IHJldHVy
biBtX29sZFZhbHVlOyB9Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgbmV3VmFsdWUoKSB7IHJl
dHVybiBtX25ld1ZhbHVlOyB9Ci0gICAgRXhwcmVzc2lvbiYgbmV3VmFsdWVFeHByZXNzaW9uKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX25ld1ZhbHVlRXhwcmVzc2lvbik7Ci0gICAgICAgIHJl
dHVybiAqbV9uZXdWYWx1ZUV4cHJlc3Npb247Ci0gICAgfQotICAgIEV4cHJlc3Npb24mIHJlc3Vs
dEV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzdWx0RXhwcmVzc2lvbik7
Ci0gICAgICAgIHJldHVybiAqbV9yZXN1bHRFeHByZXNzaW9uOwotICAgIH0KLSAgICBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gdGFrZUxlZnRWYWx1ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9sZWZ0VmFs
dWUpOyB9Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IHRha2VPbGRWYWx1ZSgp
IHsgcmV0dXJuIFdURk1vdmUobV9vbGRWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8VmFyaWFibGVE
ZWNsYXJhdGlvbj4gdGFrZU5ld1ZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX25ld1ZhbHVlKTsg
fQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlTmV3VmFsdWVFeHByZXNzaW9uKCkKLSAg
ICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gV1RGTW92ZShtX25ld1ZhbHVlRXhwcmVzc2lvbi52
YWx1ZSgpKTsKLSAgICAgICAgbV9uZXdWYWx1ZUV4cHJlc3Npb24ucmVzZXQoKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VSZXN1
bHRFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gV1RGTW92ZShtX3Jl
c3VsdEV4cHJlc3Npb24udmFsdWUoKSk7Ci0gICAgICAgIG1fcmVzdWx0RXhwcmVzc2lvbi5yZXNl
dCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+IG1fb2xkVmFsdWU7Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+
IG1fbmV3VmFsdWU7Ci0gICAgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1f
bmV3VmFsdWVFeHByZXNzaW9uOwotICAgIHN0ZDo6b3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Np
b24+PiBtX3Jlc3VsdEV4cHJlc3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU2YWNkMzE1YzFjMjE0MzU3OWVhNWQwZDJlMDI1YjVlYzRlZjBl
NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3Bh
Y2UuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVW5u
YW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgUmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBVbm5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVmZXJlbmNlVHlwZSk7Ci0K
LXByb3RlY3RlZDoKLSAgICB+UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKLQotcHJvdGVjdGVk
OgotICAgIFJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlLCBLaW5kIGtpbmQpCi0g
ICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIGtpbmQpCi0gICAgICAgICwgbV9hZGRyZXNz
U3BhY2UoYWRkcmVzc1NwYWNlKQotICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RGTW92ZShlbGVt
ZW50VHlwZSkpCi0gICAgewotICAgIH0KLQotCi1wdWJsaWM6Ci0gICAgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9Ci0gICAgY29uc3Qg
VW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsg
fQotICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7
IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIH5t
X2VsZW1lbnRUeXBlLT5oYXNoKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFkZHJlc3NTcGFj
ZSBtX2FkZHJlc3NTcGFjZTsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShSZWZlcmVuY2VUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUmVm
ZXJlbmNlVHlwZSwgaXNSZWZlcmVuY2VUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmUxNGZiY2M4ZTdiZDAxZjNkZjA1MTNjNDAzZWRiZmNiY2E2ZjdhZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3LCB0eXBlbmFtZSBPbGQs
IHR5cGVuYW1lIC4uLkFyZ3M+Ci1BTFdBWVNfSU5MSU5FIE5ldyogcmVwbGFjZVdpdGgoT2xkJiBv
bGQsIEFyZ3MmJi4uLiBhcmdzKQotewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ldykgPD0g
c2l6ZW9mKE9sZCksICJUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHBsYWNlbWVudCBuZXcgYmVsb3cg
dG8gbm90IG92ZXJ3cml0ZSB1bm93bmVkIG1lbW9yeS4iKTsKLSAgICB2b2lkKiBsb2NhdGlvbiA9
ICZvbGQ7Ci0gICAgT2xkOjpkZXN0cnVjdChvbGQpOwotICAgIHJldHVybiBuZXcgKGxvY2F0aW9u
KSBOZXcoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLX0KLQotfSB9IH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmU6OldITFNMOjpBU1QKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlc29sdmFibGVUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhMjJhMWQ3ZWNjZWUxMjQxODg1NWRlNTE0NzRmZWU5YTI0YmI2MTZiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVu
bmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIFJlc29sdmFibGVUeXBlIDogcHVibGljIFR5cGUgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflJlc29sdmFibGVUeXBl
KCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgUmVzb2x2YWJsZVR5cGUoS2luZCBraW5kKQot
ICAgICAgICA6IFR5cGUoa2luZCkKLSAgICB7IH0KLQotCi0gICAgUmVzb2x2YWJsZVR5cGUoY29u
c3QgUmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZhYmxlVHlwZShSZXNvbHZh
YmxlVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KGNv
bnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGUmIG9wZXJh
dG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGNhblJlc29sdmUo
Y29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVu
bmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSogbWF5YmVSZXNvbHZl
ZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZlZFR5cGUg
OiBudWxscHRyOyB9Ci0gICAgY29uc3QgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4g
Km1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVk
VHlwZSgpIHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJiptX3Jlc29sdmVkVHlwZSA6IG51bGxw
dHI7IH0KLSAgICBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0g
ICAgfQotCi0gICAgdm9pZCByZXNvbHZlKFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAgICB7Ci0g
ICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gV1RGTW92ZSh0eXBlKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3Jlc29sdmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJlc29sdmFibGVU
eXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUmVzb2x2YWJsZVR5cGUs
IGlzUmVzb2x2YWJsZVR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc291cmNlU2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI0NmU3YTJiZmY4YjE0ZmRiNjA4YWE0NDdkYWM4YmI3ZjhjNzIxMWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExT
TEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldI
TFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1ib29sIFJlc291cmNlU2VtYW50aWM6
OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAotewotICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0g
ICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OgotICAgICAgICBpZiAoaXM8UmVmZXJl
bmNlVHlwZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VUeXBl
ID0gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgcmV0
dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpDb25zdGFu
dCB8fCByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09IEFkZHJlc3NTcGFjZTo6RGV2aWNl
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkp
IHsKLSAgICAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBpZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVk
VHlwZSgpKS5pc1RleHR1cmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY2FzZSBNb2RlOjpUZXh0dXJlOgotICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVu
bmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OwotICAg
ICAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgaWYgKGlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgewotICAg
ICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVu
bmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5
cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
LmlzVGV4dHVyZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNl
IE1vZGU6OkJ1ZmZlcjoKLSAgICAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlw
ZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6U2FtcGxlcjoKLSAgICAgICAgcmV0dXJuIG1hdGNo
ZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Muc2FtcGxlclR5cGUoKSk7Ci0gICAgfQotfQotCi1i
b29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24o
U2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQ
b2ludFR5cGU+JikgY29uc3QKLXsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1E
aXJlY3Rpb246OklucHV0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZDVlZDM3ZThhYjk3ZmY3YTU5MDJk
N2YxZWFlYmZhNjU1ZWFjMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVz
b3VyY2VTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXNvdXJjZVNlbWFu
dGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7Ci0gICAgICAgIFVub3Jk
ZXJlZEFjY2Vzc1ZpZXcsCi0gICAgICAgIFRleHR1cmUsCi0gICAgICAgIEJ1ZmZlciwKLSAgICAg
ICAgU2FtcGxlcgotICAgIH07Ci0KLSAgICBSZXNvdXJjZVNlbWFudGljKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgTW9kZSBtb2RlLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3BhY2UpCi0gICAg
ICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAg
ICAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgICAgICwgbV9zcGFjZShzcGFjZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+UmVzb3VyY2VTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAg
IFJlc291cmNlU2VtYW50aWMoY29uc3QgUmVzb3VyY2VTZW1hbnRpYyYpID0gZGVsZXRlOwotICAg
IFJlc291cmNlU2VtYW50aWMoUmVzb3VyY2VTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBT
dHJpbmdWaWV3IHRvU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0g
ICAgICAgIGNhc2UgTW9kZTo6VW5vcmRlcmVkQWNjZXNzVmlldzoKLSAgICAgICAgICAgIHJldHVy
biAiVW5vcmRlcmVkQWNjZXNzVmlldyI7Ci0gICAgICAgIGNhc2UgTW9kZTo6VGV4dHVyZToKLSAg
ICAgICAgICAgIHJldHVybiAiVGV4dHVyZSI7Ci0gICAgICAgIGNhc2UgTW9kZTo6QnVmZmVyOgot
ICAgICAgICAgICAgcmV0dXJuICJCdWZmZXIiOwotICAgICAgICBjYXNlIE1vZGU6OlNhbXBsZXI6
Ci0gICAgICAgICAgICByZXR1cm4gIlNhbXBsZXIiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9Ci0gICAgdW5zaWduZWQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgdW5zaWduZWQgc3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX3NwYWNlOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VT
ZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9tb2RlID09IG90
aGVyLm1fbW9kZSAmJiBtX2luZGV4ID09IG90aGVyLm1faW5kZXggJiYgbV9zcGFjZSA9PSBvdGhl
ci5tX3NwYWNlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVNl
bWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5
cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6
Ci0gICAgTW9kZSBtX21vZGU7Ci0gICAgdW5zaWduZWQgbV9pbmRleDsKLSAgICB1bnNpZ25lZCBt
X3NwYWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjFiYjU2YmM4MGY4MDUwOWI4OGYxNGM2YmVhNzlmOTI4NmVkYTQyYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaAorKysgL2Rldi9udWxsCkBAIC0xLDcy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNM
U3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXR1cm4gZmlu
YWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBSZXR1cm4oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4mJiB2YWx1ZSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6
OlJldHVybikKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgIHsKLSAgICB9
Ci0KLSAgICB+UmV0dXJuKCkgPSBkZWZhdWx0OwotCi0gICAgUmV0dXJuKGNvbnN0IFJldHVybiYp
ID0gZGVsZXRlOwotICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVz
c2lvbiogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShSZXR1cm4pCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFJldHVybiwgaXNSZXR1cm4oKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5YTdiYTYyYmUwZDU3ZmI0YWMxOTdkNzJkNDA0MDg2ZDUyNTcy
ZTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRp
Yy5oIgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi11c2luZyBT
ZW1hbnRpYyA9IFZhcmlhbnQ8QnVpbHRJblNlbWFudGljLCBSZXNvdXJjZVNlbWFudGljLCBTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMsIFN0YWdlSW5PdXRTZW1hbnRpYz47Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGYwMTUzOTRlMWY2NmVhNjc0
NTc0MWQ3MDc5OWQ2YTJkNWJlYTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1ib29sIFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYgdW5u
YW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAotewotICAgIGlmICghaXM8VHlwZVJl
ZmVyZW5jZT4odW5uYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYg
dHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAg
ICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG93bmNhc3Q8TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKS5pc051bWJlcigp
OwotfQotCi1ib29sIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAotewotICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MzllYzE5NmY4OTk1YzIwOTVlZDFlMmMwNGY4
OGZlODhkMWM4ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBCYXNlU2VtYW50aWMo
bG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYyhjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSA9IGRlbGV0ZTsK
LSAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYyYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29u
c3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE2ZGM2NDk2NWIzMjMxNjU1MDllYzYxY2NlMmRiNGE5NjgwZWJk
MzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGlj
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWJvb2wgU3RhZ2VJ
bk91dFNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVk
VHlwZSwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0Ci17Ci0gICAgaWYgKGlzPEFycmF5VHlwZT4o
dW5uYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPFR5cGVSZWZl
cmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIHR5
cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAg
YXV0byYgcmVzb2x2ZWRUeXBlID0gdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKTsKLSAgICBp
ZiAoaXM8RW51bWVyYXRpb25EZWZpbml0aW9uPihyZXNvbHZlZFR5cGUpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZl
ZFR5cGUoKSk7Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051bWJlcigpCi0g
ICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc1ZlY3RvcigpCi0gICAgICAgIHx8IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJpeCgpOwotfQotCi1ib29sIFN0YWdlSW5PdXRTZW1h
bnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5
UG9pbnRUeXBlKSBjb25zdAotewotICAgIHN3aXRjaCAoKmVudHJ5UG9pbnRUeXBlKSB7Ci0gICAg
Y2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBj
YXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9
PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpD
b21wdXRlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzMGUyM2NhYTRkN2UyMTJmNjJhMGM1MzZhN2UzYWM5ZjRhMTM3OTcxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0YWdlSW5PdXRTZW1h
bnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIGluZGV4KQotICAgICAgICA6IEJh
c2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICAgICAgLCBtX2luZGV4KGluZGV4KQotICAgIHsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIH5TdGFnZUluT3V0U2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBTdGFnZUluT3V0U2VtYW50aWMoY29uc3QgU3RhZ2VJbk91dFNlbWFudGljJikgPSBkZWxldGU7
Ci0gICAgU3RhZ2VJbk91dFNlbWFudGljKFN0YWdlSW5PdXRTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdGFnZUluT3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RhZ2VJbk91dFNlbWFudGljJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5z
aWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQ
b2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9p
bmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM4ZGNmZDc2M2ZhMWNlODhjY2UyNDA4MDA1NzYxNzhiNTcyNTY2MDkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3RhdGVtZW50IHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5TdGF0ZW1lbnQo
KSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50OF90IHsK
LSAgICAgICAgQmxvY2ssCi0gICAgICAgIEJyZWFrLAotICAgICAgICBDb250aW51ZSwKLSAgICAg
ICAgRG9XaGlsZUxvb3AsCi0gICAgICAgIEVmZmVjdGZ1bEV4cHJlc3Npb24sCi0gICAgICAgIEZh
bGx0aHJvdWdoLAotICAgICAgICBGb3JMb29wLAotICAgICAgICBJZiwKLSAgICAgICAgUmV0dXJu
LAotICAgICAgICBTdGF0ZW1lbnRMaXN0LAotICAgICAgICBTd2l0Y2hDYXNlLAotICAgICAgICBT
d2l0Y2gsCi0gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zLAotICAgICAgICBXaGlsZUxvb3As
Ci0gICAgfTsKLSAgICBTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBr
aW5kKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBt
X2tpbmQoa2luZCkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgZGVzdHJveShTdGF0
ZW1lbnQmKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cnVjdChTdGF0ZW1lbnQmKTsKLQotICAgIFN0
YXRlbWVudChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBTdGF0ZW1lbnQoU3RhdGVt
ZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQotCi0gICAgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkJsb2NrOyB9Ci0gICAgYm9vbCBpc0JyZWFrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkJyZWFrOyB9Ci0gICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OkNvbnRpbnVlOyB9Ci0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkRvV2hpbGVMb29wOyB9Ci0gICAgYm9vbCBpc0VmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvbjsgfQotICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpGYWxsdGhyb3VnaDsgfQotICAgIGJvb2wgaXNGb3JMb29wKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZvckxvb3A7IH0KLSAgICBib29sIGlzSWZT
dGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SWY7IH0KLSAgICBib29s
IGlzUmV0dXJuKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlJldHVybjsgfQotICAg
IGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0
YXRlbWVudExpc3Q7IH0KLSAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpTd2l0Y2hDYXNlOyB9Ci0gICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2g7IH0KLSAgICBib29sIGlzVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KLSAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OldoaWxlTG9vcDsgfQotCi0gICAgQ29kZUxvY2F0aW9u
IGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9p
ZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0
aW9uID0gbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9j
YXRpb247Ci0gICAgS2luZCBtX2tpbmQ7Ci19OwotCi11c2luZyBTdGF0ZW1lbnRzID0gVmVjdG9y
PFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+PjsKLQotfQotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKFN0YXRlbWVudCkKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1NUQVRFTUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50
JiBzdGF0ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YzAyNzM4NzNmMWE2MjA0ZTc5OTFlZTcxNzMyNzA3NDQxNWZmNTYxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAorKysgL2Rl
di9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZUVs
ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3Ry
dWN0dXJlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0cnVjdHVyZURlZmluaXRpb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVj
dHVyZUVsZW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1l
bnRzKFdURk1vdmUoc3RydWN0dXJlRWxlbWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3Ry
dWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFN0cnVjdHVyZURlZmluaXRpb24o
Y29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRlOwotICAgIFN0cnVjdHVyZURlZmlu
aXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVF
bGVtZW50cyYgc3RydWN0dXJlRWxlbWVudHMoKSB7IHJldHVybiBtX3N0cnVjdHVyZUVsZW1lbnRz
OyB9Ci0gICAgU3RydWN0dXJlRWxlbWVudCogZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAg
ewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKG1fc3RydWN0dXJlRWxlbWVu
dHMuYmVnaW4oKSwgbV9zdHJ1Y3R1cmVFbGVtZW50cy5lbmQoKSwgWyZdKFN0cnVjdHVyZUVsZW1l
bnQmIHN0cnVjdHVyZUVsZW1lbnQpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIHN0cnVj
dHVyZUVsZW1lbnQubmFtZSgpID09IG5hbWU7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9zdHJ1Y3R1cmVFbGVtZW50cy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICByZXR1cm4gJippdGVyYXRvcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgU3RydWN0dXJlRWxlbWVudHMgbV9zdHJ1Y3R1cmVFbGVtZW50czsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0cnVjdHVyZURl
ZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShTdHJ1Y3R1cmVE
ZWZpbml0aW9uLCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTNjMjg2Y2YyZDAyZjNjNDBkZWRjNmI4YTRhM2VjZDJmYTBkZWNh
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2Nh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1h
bnRpYy5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTdHJ1Y3R1cmVF
bGVtZW50IGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBTdHJ1Y3R1cmVFbGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1
YWxpZmllcnMsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxv
Y2F0aW9uKQotICAgICAgICAsIG1fcXVhbGlmaWVycyhXVEZNb3ZlKHF1YWxpZmllcnMpKQotICAg
ICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5h
bWUpKQotICAgICAgICAsIG1fc2VtYW50aWMoV1RGTW92ZShzZW1hbnRpYykpCi0gICAgewotICAg
IH0KLQotICAgIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgU3RydWN0dXJl
RWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3RydWN0dXJl
RWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIGNvbnN0IENvZGVM
b2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0K
LSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGNvbnN0IFN0
cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFNlbWFudGljKiBzZW1hbnRpYygp
IHsgcmV0dXJuIG1fc2VtYW50aWMuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRp
b24gbV9jb2RlTG9jYXRpb247Ci0gICAgUXVhbGlmaWVycyBtX3F1YWxpZmllcnM7Ci0gICAgUmVm
PFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2VtYW50aWM+IG1fc2VtYW50aWM7Ci19OwotCi11c2luZyBTdHJ1Y3R1cmVFbGVtZW50
cyA9IFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGFkYzdhNWM5ZWVhOTU1NWJkYTdjNDY0
MjFiM2U4NWVhNGVkZjMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRj
aENhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
QmxvY2suaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
Q29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTd2l0Y2hDYXNlIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgU3dpdGNoQ2FzZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q29u
c3RhbnRFeHByZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoQ2FzZSkKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1v
dmUodmFsdWUpKQotICAgICAgICAsIG1fYmxvY2soV1RGTW92ZShibG9jaykpCi0gICAgewotICAg
IH0KLQotICAgIH5Td2l0Y2hDYXNlKCkgPSBkZWZhdWx0OwotCi0gICAgU3dpdGNoQ2FzZShjb25z
dCBTd2l0Y2hDYXNlJikgPSBkZWxldGU7Ci0gICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0g
ZGVmYXVsdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUo
KSB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgQmxvY2smIGJsb2NrKCkgeyByZXR1cm4gbV9ibG9j
azsgfQotCi1wcml2YXRlOgotICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBt
X3ZhbHVlOwotICAgIEJsb2NrIG1fYmxvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hDYXNlKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVt
ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMjkzMmEzMzhjYTljZjRiMzc0
YTU2MTRlZmFmZmNmMDEyNTZkNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3dpdGNoU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQg
ZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBTd2l0Y2hTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2Fz
ZXMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2gpCi0gICAgICAg
ICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAgICAgLCBtX3N3aXRjaENhc2VzKFdURk1v
dmUoc3dpdGNoQ2FzZXMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+U3dpdGNoU3RhdGVtZW50KCkg
PSBkZWZhdWx0OwotCi0gICAgU3dpdGNoU3RhdGVtZW50KGNvbnN0IFN3aXRjaFN0YXRlbWVudCYp
ID0gZGVsZXRlOwotICAgIFN3aXRjaFN0YXRlbWVudChTd2l0Y2hTdGF0ZW1lbnQmJikgPSBkZWZh
dWx0OwotCi0gICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAg
VmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7
IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV92YWx1ZTsKLSAgICBW
ZWN0b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFN3aXRjaFN0YXRlbWVudCkKLQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoU3RhdGVtZW50LCBp
c1N3aXRjaFN0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBkOGU0NDkyMjA1YzVlNzBjY2Y1OTJjODZkYjU3YjAzMzE1YTEzODUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUZXJuYXJ5RXhwcmVzc2lv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHByZWRpY2F0
ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Npb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24s
IEtpbmQ6OlRlcm5hcnkpCi0gICAgICAgICwgbV9wcmVkaWNhdGUoV1RGTW92ZShwcmVkaWNhdGUp
KQotICAgICAgICAsIG1fYm9keUV4cHJlc3Npb24oV1RGTW92ZShib2R5RXhwcmVzc2lvbikpCi0g
ICAgICAgICwgbV9lbHNlRXhwcmVzc2lvbihXVEZNb3ZlKGVsc2VFeHByZXNzaW9uKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgflRlcm5hcnlFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgVGVy
bmFyeUV4cHJlc3Npb24oY29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBU
ZXJuYXJ5RXhwcmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBF
eHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiBtX3ByZWRpY2F0ZTsgfQotICAgIEV4cHJl
c3Npb24mIGJvZHlFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9ib2R5RXhwcmVzc2lvbjsgfQotICAg
IEV4cHJlc3Npb24mIGVsc2VFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9lbHNlRXhwcmVzc2lvbjsg
fQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKLSAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKLSAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFRlcm5hcnlFeHByZXNzaW9uKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVGVybmFyeUV4cHJlc3Npb24s
IGlzVGVybmFyeUV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY4ODJkZDk5MWI4MGQ5ZjU1
ZDVhMDFiY2IzOGIwOGM3NzhkZDk2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvVHlwZUNhc3RzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGUgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1
YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50OF90IHsKLSAgICAgICAgLy8gVW5uYW1l
ZFR5cGVzCi0gICAgICAgIFR5cGVSZWZlcmVuY2UsCi0gICAgICAgIFBvaW50ZXIsCi0gICAgICAg
IEFycmF5UmVmZXJlbmNlLAotICAgICAgICBBcnJheSwKLSAgICAgICAgLy8gTmFtZWRUeXBlcwot
ICAgICAgICBUeXBlRGVmaW5pdGlvbiwKLSAgICAgICAgU3RydWN0dXJlRGVmaW5pdGlvbiwKLSAg
ICAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uLAotICAgICAgICBOYXRpdmVUeXBlRGVjbGFyYXRp
b24sCi0gICAgICAgIC8vIFJlc29sdmFibGVUeXBlcwotICAgICAgICBGbG9hdExpdGVyYWwsCi0g
ICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAot
ICAgIH07Ci0KLSAgICBUeXBlKEtpbmQga2luZCkKLSAgICAgICAgOiBtX2tpbmQoa2luZCkKLSAg
ICB7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFR5cGUmKTsKLSAgICBzdGF0aWMgdm9pZCBk
ZXN0cnVjdChUeXBlJik7Ci0KLSAgICBleHBsaWNpdCBUeXBlKGNvbnN0IFR5cGUmKSA9IGRlbGV0
ZTsKLSAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZSYgb3BlcmF0b3I9KGNv
bnN0IFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBUeXBlJiBvcGVyYXRvcj0oVHlwZSYmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLQotICAgIGJv
b2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlUmVm
ZXJlbmNlICYmIGtpbmQoKSA8PSBLaW5kOjpBcnJheTsgfQotICAgIGJvb2wgaXNOYW1lZFR5cGUo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6VHlwZURlZmluaXRpb24gJiYga2luZCgp
IDw9IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQotICAgIGJvb2wgaXNSZXNvbHZhYmxl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpGbG9hdExpdGVyYWwgJiYga2lu
ZCgpIDw9IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KLQotICAgIGJvb2wgaXNUeXBl
UmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7
IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6UG9pbnRlcjsgfQotICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXlSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzQXJyYXlU
eXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFycmF5OyB9Ci0gICAgYm9vbCBp
c1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJh
eVJlZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlR5cGVEZWZpbml0aW9uOyB9Ci0gICAgYm9vbCBpc1N0
cnVjdHVyZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RydWN0
dXJlRGVmaW5pdGlvbjsgfQotICAgIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOyB9Ci0gICAg
Ym9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb247IH0KLQotICAgIGJvb2wgaXNGbG9hdExpdGVyYWxU
eXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQotICAg
IGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6SW50ZWdlckxpdGVyYWw7IH0KLSAgICBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bDsgfQotCi0gICAgVHlwZSYgdW5pZnlOb2RlKCk7Ci0gICAgY29uc3QgVHlwZSYgdW5pZnlOb2Rl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFR5cGUqPih0aGlzKS0+
dW5pZnlOb2RlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEtpbmQgbV9raW5kOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlw
ZSkKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVG9WYWx1ZVR5
cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJl
ZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OTRlMTBiZjc1NDI5ZDg2NmY2NDQ1NTA1M2E5NDMxMTI4YmM3
ZjVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
LSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1UeXBlQXJndW1lbnRzIGNsb25lKGNv
bnN0IFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgVHlwZUFyZ3VtZW50cyBy
ZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlQXJndW1lbnRz
KQotICAgICAgICByZXN1bHQuYXBwZW5kKGNsb25lKHR5cGVBcmd1bWVudCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVR5cGVBcmd1bWVudCBjbG9uZShjb25zdCBUeXBlQXJndW1lbnQmIHR5
cGVBcmd1bWVudCkKLXsKLSAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtd
KGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSAtPiBUeXBlQXJn
dW1lbnQgewotICAgICAgICByZXR1cm4gY29uc3RhbnRFeHByZXNzaW9uLmNsb25lKCk7Ci0gICAg
fSwgW10oY29uc3QgUmVmPFR5cGVSZWZlcmVuY2U+JiB0eXBlUmVmZXJlbmNlKSAtPiBUeXBlQXJn
dW1lbnQgewotICAgICAgICByZXR1cm4gdHlwZVJlZmVyZW5jZS5jb3B5UmVmKCk7Ci0gICAgfSks
IHR5cGVBcmd1bWVudCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmEzMmViNmViNTE4MWRmMzA2ODJiYTJlNGQyM2Yy
MjVkMzE3MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlw
ZVJlZmVyZW5jZTsKLQotdXNpbmcgVHlwZUFyZ3VtZW50ID0gVmFyaWFudDxDb25zdGFudEV4cHJl
c3Npb24sIFJlZjxUeXBlUmVmZXJlbmNlPj47Ci11c2luZyBUeXBlQXJndW1lbnRzID0gVmVjdG9y
PFR5cGVBcmd1bWVudD47Ci0KLVR5cGVBcmd1bWVudCBjbG9uZShjb25zdCBUeXBlQXJndW1lbnQm
KTsKLVR5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYpOwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZURlZmluaXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTI5MDU1N2JlZWVmYjBmZTRlMjBjYjE4ZjE4NmIyMTJjNDNkYjg3NC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZURlZmluaXRpb24gZmlu
YWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBUeXBlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYm
IG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6
VHlwZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlw
ZShXVEZNb3ZlKHR5cGUpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VHlwZURlZmluaXRpb24oKSA9
IGRlZmF1bHQ7Ci0KLSAgICBUeXBlRGVmaW5pdGlvbihjb25zdCBUeXBlRGVmaW5pdGlvbiYpID0g
ZGVsZXRlOwotICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsK
LQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAgICBSZWY8
VW5uYW1lZFR5cGU+IG1fdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGVEZWZpbml0aW9uKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURlZmluaXRpb24oKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5j
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMzMxYzMyZDU1NDBmNjMxYzE0
MWYyYmM0NjkxYTE4MjE4NGFlYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZVJlZmVyZW5jZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVU
eXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLVJl
ZjxUeXBlUmVmZXJlbmNlPiBUeXBlUmVmZXJlbmNlOjp3cmFwKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCi17Ci0gICAgVHlwZUFyZ3VtZW50cyB0eXBlQXJn
dW1lbnRzOwotICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVkVHlwZSkp
Ci0gICAgICAgIHR5cGVBcmd1bWVudHMgPSBBU1Q6OmNsb25lKGRvd25jYXN0PE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKS50eXBlQXJndW1lbnRzKCkpOwotICAgIGF1dG8gcmVz
dWx0ID0gVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCBTdHJpbmcocmVzb2x2ZWRUeXBl
Lm5hbWUoKSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpOwotICAgIHJlc3VsdC0+c2V0UmVzb2x2
ZWRUeXBlKHJlc29sdmVkVHlwZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZVJlZmVyZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmRl
ZWVmZmVhYjA3ZDA0MDQ5YTg1NDYyNzc3MWNlZjMwNjJiZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
TmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJX
SExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlwZTsKLQotY2xh
c3MgVHlwZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBVbm5hbWVkVHlwZSB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHlwZVJlZmVyZW5j
ZSk7Ci0gICAgVHlwZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5h
bWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAgICA6IFVubmFtZWRUeXBl
KGxvY2F0aW9uLCBLaW5kOjpUeXBlUmVmZXJlbmNlKQotICAgICAgICAsIG1fbmFtZShXVEZNb3Zl
KG5hbWUpKQotICAgICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMp
KQotICAgIHsKLSAgICB9Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUeXBlUmVmZXJlbmNlPiBj
cmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRz
JiYgdHlwZUFyZ3VtZW50cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqIG5ldyBU
eXBlUmVmZXJlbmNlKGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHR5cGVBcmd1bWVu
dHMpKSk7Ci0gICAgfQotCi0gICAgflR5cGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBz
dGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29kZUxvY2F0aW9uLCBOYW1lZFR5cGUmIHJl
c29sdmVkVHlwZSk7Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAg
ICBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gbV90eXBlQXJndW1lbnRz
OyB9Ci0gICAgTmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRUeXBlOyB9Ci0gICAgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX3Jl
c29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5cGUm
IHJlc29sdmVkVHlwZSkKLSAgICB7Ci0gICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29sdmVk
VHlwZTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IC8vIEN1cnJlbnRseSwgd2Ugb25seSB1c2UgdGhpcyBmdW5jdGlvbiBhZnRlciB0aGUgbmFtZSBy
ZXNvbHZlciBydW5zLgotICAgICAgICAvLyBSZWx5aW5nIG9uIGhhdmluZyBhIHJlc29sdmVkIHR5
cGUgc2ltcGxpZmllcyB0aGlzIGltcGxlbWVudGF0aW9uLgotICAgICAgICBBU1NFUlQobV9yZXNv
bHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPGNvbnN0IFR5cGUqPjo6aGFz
aCgmdW5pZnlOb2RlKCkpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBl
UmVmZXJlbmNlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVk
VHlwZSk7Ci0gICAgICAgIHJldHVybiAmdW5pZnlOb2RlKCkgPT0gJm90aGVyLnVuaWZ5Tm9kZSgp
OwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPm5h
bWUoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlw
ZSYgdW5pZnlOb2RlSW1wbCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUp
OwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQot
ICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1bWVudHM7Ci0g
ICAgTmFtZWRUeXBlKiBtX3Jlc29sdmVkVHlwZSB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGVSZWZlcmVu
Y2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUeXBlUmVmZXJlbmNlLCBp
c1R5cGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
bmFtZWRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVubmFtZWRUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5MGU3
ODQyNTEzNzQ5YTk4ZWFmNmJmY2ZkZWJjMjY3MDNkNDc3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVW5u
YW1lZFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLXVuc2lnbmVkIFVubmFtZWRUeXBlOjpoYXNoKCkgY29uc3QKLXsKLSAgICBz
d2l0Y2ggKGtpbmQoKSkgewotICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBL
aW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlz
KS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtp
bmQ6OkFycmF5OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykuaGFz
aCgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotfQotCi1ib29sIFVubmFtZWRUeXBlOjpvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRU
eXBlJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAob3RoZXIua2luZCgpICE9IGtpbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChraW5kKCkpIHsKLSAgICBjYXNlIEtp
bmQ6OlR5cGVSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNl
PigqdGhpcykgPT0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4ob3RoZXIpOwotICAgIGNhc2UgS2lu
ZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhpcykg
PT0gZG93bmNhc3Q8UG9pbnRlclR5cGU+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5UmVm
ZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhp
cykgPT0gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5k
OjpBcnJheToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRoaXMpID09IGRv
d25jYXN0PEFycmF5VHlwZT4ob3RoZXIpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM5ODFlNWUzODc5NDFjNjI4N2U0ODdmMTI4NTU1NjRkM2UwZGRi
OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgVW5uYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSwgcHVibGljIFJl
ZkNvdW50ZWQ8VW5uYW1lZFR5cGU+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbm5hbWVkVHlwZSk7Ci1wdWJsaWM6Ci0gICAgVW5uYW1l
ZFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogVHlwZShr
aW5kKQotICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVu
bmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLQotICAg
IENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlv
bjsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5
Tm9kZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2Nh
dGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKFVubmFtZWRUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZ
UEUoVW5uYW1lZFR5cGUsIGlzVW5uYW1lZFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGVIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk5NjdjMGQ3NGJiMjZmNDE5OGQxNmY2MmE3YTNiNjdhNGJhNTJmNDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGVIYXNoLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBVbm5hbWVkVHlwZUtleSB7Ci1wdWJsaWM6Ci0gICAg
VW5uYW1lZFR5cGVLZXkoKSA9IGRlZmF1bHQ7Ci0gICAgVW5uYW1lZFR5cGVLZXkoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fdHlwZShiaXR3aXNlX2Nhc3Q8QVNU
OjpVbm5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBVbm5hbWVkVHlwZUtleShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlKQotICAgICAgICA6
IG1fdHlwZSgmdHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBj
b25zdCB7IHJldHVybiAhbV90eXBlOyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBiaXR3aXNlX2Nhc3Q8QVNUOjpVbm5hbWVkVHlw
ZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlLT5oYXNoKCk7IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVW5uYW1lZFR5cGVLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiAqbV90eXBlID09ICpvdGhl
ci5tX3R5cGU7IH0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuICptX3R5cGU7IH0KLQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgVW5uYW1lZFR5cGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2go
KTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVbm5hbWVkVHlwZUtleSYgYSwg
Y29uc3QgVW5uYW1lZFR5cGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAgICB9Owot
Ci0gICAgc3RydWN0IFRyYWl0cyA6IHB1YmxpYyBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxV
bm5hbWVkVHlwZUtleT4gewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBVbm5hbWVkVHlwZUtleSYga2V5KSB7IHJldHVybiBrZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAg
ICB9OwotCi1wcml2YXRlOgotICAgIEFTVDo6VW5uYW1lZFR5cGUqIG1fdHlwZSB7IG51bGxwdHIg
fTsKLX07Ci0KLX0KLQotfQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk+IDogV2ViQ29yZTo6V0hM
U0w6OlVubmFtZWRUeXBlS2V5OjpUcmFpdHMgeyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8V2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5PiA6IFdlYkNvcmU6OldITFNMOjpV
bm5hbWVkVHlwZUtleTo6SGFzaCB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdhZmI0MTgyNjJm
NzhjMTE5OGYzZTg4MTMwYzgwNjYzMDQ5MTc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1pbnQ2NF90IFVuc2lnbmVkSW50ZWdlckxpdGVy
YWw6OnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QKLXsKLSAgICBhdXRvJiB0eXBlUmVmZXJl
bmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4obV90eXBlLnJlc29sdmVkVHlwZSgpKTsKLSAg
ICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIHJldHVybiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKCkobV92YWx1ZSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAwMTZlNWMyMjcyMTk0NjM0YzRhMDc2NGZm
N2Q2MTM0NjJlNDQ3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAg
LCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAg
ewotICAgIH0KLQotICAgIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0g
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikg
PSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9y
PShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZh
dWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBt
X3R5cGU7IH0KLSAgICB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
LQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUp
OwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNsb25lKCk7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigq
cmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0KTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBpbnQ2NF90IHZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBl
OwotICAgIHVuc2lnbmVkIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZDIxZmFhMDRlNDc4MWEw
MjEwYzNkNDRhOTc2NTViMDI1NDNhNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCB2YWx1ZSkKLSAgICA6IFJlc29s
dmFibGVUeXBlKEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi0gICAgLCBtX3ZhbHVlKHZh
bHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlv
biwgInVpbnQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKLXsKLX0KLQotYm9vbCBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAotewot
ICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFp
czxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24u
aXNJbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xh
cmF0aW9uLmlzU2lnbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoKShtX3ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCBt
X3ByZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQot
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNs
b25lKCkgY29uc3QKLXsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSByZXN1bHQobV9w
cmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5
cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICByZXN1bHQucmVzb2x2ZShjb25zdF9j
YXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlwZSkpOwotICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5
cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJlZigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdlZDM5Zjg4ZGY0ODU1NmYwYTc4M2Iy
MWEzNGJkNDg1NDJmNzI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci0KLWNsYXNzIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZShDb2RlTG9jYXRpb24sIHVuc2lnbmVkIHZhbHVlKTsKLQotICAgIH5VbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikg
PSBkZWZhdWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShj
b25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUm
JikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9w
cmVmZXJyZWRUeXBlOyB9Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0
OwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7
Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2
YXRlOgotICAgIHVuc2lnbmVkIG1fdmFsdWU7Ci0gICAgLy8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIg
dG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbgotICAgIC8vIENvbnN0YW50
RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVu
dHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0gICAgUmVmPFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVy
cmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1RZUEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUsIGlzVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjkxOGI2Y2RkYmE0MWM5YzYwNTAxYTJmOTBlMzY5NzM5OTZkOGM5YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGlj
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0vLyBGaW5hbCBiZWNhdXNlIHdlIG1hZGUgdGhlIGRlc3RydWN0b3Igbm9uLXZpcnR1
YWwuCi1wdWJsaWM6Ci0gICAgc3RydWN0IFJhcmVEYXRhIHsKLSAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBSYXJlRGF0YShRdWFsaWZpZXJzJiYgcXVhbGlm
aWVyc0FyZ3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWNBcmd1bWVu
dCkKLSAgICAgICAgICAgIDogcXVhbGlmaWVycyhXVEZNb3ZlKHF1YWxpZmllcnNBcmd1bWVudCkp
Ci0gICAgICAgICAgICAsIHNlbWFudGljKFdURk1vdmUoc2VtYW50aWNBcmd1bWVudCkpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotICAgICAgICBRdWFsaWZpZXJzIHF1YWxpZmllcnM7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gc2VtYW50aWM7Ci0gICAgfTsKLQotICAgIFZhcmlh
YmxlRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1
YWxpZmllcnMsIFJlZlB0cjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1
bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4mJiBpbml0aWFsaXplcikKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24p
Ci0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgICAgICwgbV9pbml0aWFsaXpl
cihXVEZNb3ZlKGluaXRpYWxpemVyKSkKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkK
LSAgICB7Ci0gICAgICAgIGlmIChzZW1hbnRpYyB8fCAhcXVhbGlmaWVycy5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oV1RGTW92ZShxdWFs
aWZpZXJzKSwgV1RGTW92ZShzZW1hbnRpYykpOwotICAgIH0KLQotICAgIH5WYXJpYWJsZURlY2xh
cmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbihjb25zdCBWYXJp
YWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbihWYXJp
YWJsZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQotCi0gICAgLy8gV2UgdXNlIHRoaXMgZm9yIFJlYWRNb2RpZnlXcml0ZSBl
eHByZXNzaW9ucywgc2luY2Ugd2UgZG9uJ3Qga25vdyB0aGUgdHlwZSBvZiB0aGVpcgotICAgIC8v
IGludGVybmFsIHZhcmlhYmxlcyB1bnRpbCB0aGUgY2hlY2tlciBydW5zLiBBbGwgb3RoZXIgdmFy
aWFibGVzIHNob3VsZCBzdGFydCBsaWZlIG91dAotICAgIC8vIHdpdGggYSB0eXBlLgotICAgIHZv
aWQgc2V0VHlwZShSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgewotICAgICAgICBBU1NFUlQo
IW1fdHlwZSk7Ci0gICAgICAgIG1fdHlwZSA9IFdURk1vdmUodHlwZSk7Ci0gICAgfQotICAgIGNv
bnN0IFJlZlB0cjxVbm5hbWVkVHlwZT4mIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
LSAgICBVbm5hbWVkVHlwZSogdHlwZSgpIHsgcmV0dXJuIG1fdHlwZSA/ICYqbV90eXBlIDogbnVs
bHB0cjsgfQotICAgIEV4cHJlc3Npb24qIGluaXRpYWxpemVyKCkgeyByZXR1cm4gbV9pbml0aWFs
aXplci5nZXQoKTsgfQotICAgIGJvb2wgaXNBbm9ueW1vdXMoKSBjb25zdCB7IHJldHVybiBtX25h
bWUuaXNOdWxsKCk7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gdGFrZUluaXRp
YWxpemVyKCkgeyByZXR1cm4gV1RGTW92ZShtX2luaXRpYWxpemVyKTsgfQotICAgIHZvaWQgc2V0
SW5pdGlhbGl6ZXIoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IGV4cHJlc3Npb24pCi0gICAg
ewotICAgICAgICBBU1NFUlQoIWluaXRpYWxpemVyKCkpOwotICAgICAgICBBU1NFUlQoZXhwcmVz
c2lvbik7Ci0gICAgICAgIG1faW5pdGlhbGl6ZXIgPSBXVEZNb3ZlKGV4cHJlc3Npb24pOwotICAg
IH0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
TG9jYXRpb247IH0KLQotICAgIFNlbWFudGljKiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fcmFyZURh
dGEgPyBtX3JhcmVEYXRhLT5zZW1hbnRpYy5nZXQoKSA6IG51bGxwdHI7IH0KLQotcHJpdmF0ZToK
LSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBl
PiBtX3R5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1faW5pdGlhbGl6ZXI7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhIHsgbnVsbHB0ciB9Owot
ICAgIFN0cmluZyBtX25hbWU7Ci19OwotCi11c2luZyBWYXJpYWJsZURlY2xhcmF0aW9ucyA9IFZl
Y3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4+OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMjhjNGIyY2ZkNDJlOTMzMWFhODU2Zjk0YTZmODI0NGVm
NWU5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiB2YXJp
YWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZh
cmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RG
TW92ZSh2YXJpYWJsZURlY2xhcmF0aW9ucykpCi0gICAgewotICAgIH0KLQotICAgIH5WYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JikgPSBk
ZWxldGU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxWYXJp
YWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV92YXJp
YWJsZURlY2xhcmF0aW9uczsgfQotCi1wcml2YXRlOgotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25z
IG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSkKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2JkMDZhY2FlMWZlZWVhNzA1
MTdiOGRmOGNiODY3ZGQ5MzZjOTZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5h
bWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVu
Y2UpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgewotICAgIH0KLQotICAg
IH5WYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlUmVmZXJlbmNl
KGNvbnN0IFZhcmlhYmxlUmVmZXJlbmNlJikgPSBkZWxldGU7Ci0gICAgVmFyaWFibGVSZWZlcmVu
Y2UoVmFyaWFibGVSZWZlcmVuY2UmJikgPSBkZWZhdWx0OwotCi0gICAgc3RhdGljIFZhcmlhYmxl
UmVmZXJlbmNlIHdyYXAoVmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikK
LSAgICB7Ci0gICAgICAgIFZhcmlhYmxlUmVmZXJlbmNlIHJlc3VsdCh2YXJpYWJsZURlY2xhcmF0
aW9uLmNvZGVMb2NhdGlvbigpKTsKLSAgICAgICAgcmVzdWx0Lm1fdmFyaWFibGUgPSAmdmFyaWFi
bGVEZWNsYXJhdGlvbjsKLSAgICAgICAgcmVzdWx0Lm1fbmFtZSA9IHZhcmlhYmxlRGVjbGFyYXRp
b24ubmFtZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbiogdmFy
aWFibGUoKSB7IHJldHVybiBtX3ZhcmlhYmxlOyB9Ci0KLSAgICB2b2lkIHNldFZhcmlhYmxlKFZh
cmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBt
X3ZhcmlhYmxlID0gJnZhcmlhYmxlRGVjbGFyYXRpb247Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKiBtX3ZhcmlhYmxl
IHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJ
TkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVSZWZlcmVuY2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihWYXJpYWJsZVJlZmVyZW5jZSwgaXNWYXJpYWJsZVJlZmVy
ZW5jZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3Au
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxOTY0OWIxNTRmMzAxOWNhODk3ZWFi
Y2JiNDFiZDhlNjRkYmQyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGls
ZUxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IFdoaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFdoaWxlTG9vcChDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50
PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpXaGlsZUxvb3Ap
Ci0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKLSAgICAgICAg
LCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfldoaWxlTG9vcCgp
ID0gZGVmYXVsdDsKLQotICAgIFdoaWxlTG9vcChjb25zdCBXaGlsZUxvb3AmKSA9IGRlbGV0ZTsK
LSAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24m
IGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQotICAgIFN0YXRlbWVudCYg
Ym9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKFdoaWxlTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
V2hpbGVMb29wLCBpc1doaWxlTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjExM2EwNjE4YmExYzI3MTM4OGVmMWQ0NGIwYWIw
ZTU2MTY5ODM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2lu
dFNjYWZmb2xkaW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyNyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFNjYWZm
b2xkaW5nLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEJ1aWx0SW5TZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyBTdHJpbmcgYXR0cmlidXRlRm9y
U2VtYW50aWMoQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKLXsKLSAgICBz
d2l0Y2ggKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuICJbW2lu
c3RhbmNlX2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJs
ZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuICJbW3ZlcnRleF9pZF1dIl9zdHI7Ci0gICAg
Y2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplOgotICAgICAgICByZXR1
cm4gIltbcG9pbnRfc2l6ZV1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiAiW1twb3NpdGlvbl1dIl9zdHI7
Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSXNGcm9udEZhY2U6
Ci0gICAgICAgIHJldHVybiAiW1tmcm9udF9mYWNpbmddXSJfc3RyOwotICAgIGNhc2UgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICByZXR1cm4g
Iltbc2FtcGxlX2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIltbc2FtcGxlX21hc2tdXSJf
c3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlRhcmdldDoK
LSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIltbY29sb3IoIiwgKmJ1aWx0SW5TZW1hbnRpYy50
YXJnZXRJbmRleCgpLCAiKV1dIik7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFy
aWFibGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiAiW1tkZXB0aChhbnkpXV0iX3N0cjsKLSAg
ICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAg
ICAgcmV0dXJuICJbW3NhbXBsZV9tYXNrXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNl
bWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICByZXR1cm4gIltb
dGhyZWFkX3Bvc2l0aW9uX2luX2dyaWRdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2Vt
YW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiAiW1t0aHJlYWRncm91
cF9wb3NpdGlvbl9pbl9ncmlkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gIltbdGhyZWFkX2luZGV4
X2luX3RocmVhZGdyb3VwXV0iX3N0cjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYnVp
bHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1cm4gIltbdGhyZWFkX3Bvc2l0aW9uX2lu
X3RocmVhZGdyb3VwXV0iX3N0cjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYXR0cmlidXRl
Rm9yU2VtYW50aWMoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCi17Ci0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZUZvclNlbWFudGljKFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGlj
PihzZW1hbnRpYykpOwotICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFT
VDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmco
IltbdXNlcih1c2VyIiwgc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCksICIpXV0iKTsKLX0KLQot
RW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50cmluc2ljcyYgaW50cmluc2ljcywg
VHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50cnlQb2ludEl0ZW1zLCBI
YXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0JiBsYXlvdXQsIHN0
ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSkKLSAgICA6IG1fZnVuY3Rpb25EZWZpbml0aW9uKGZ1bmN0aW9uRGVmaW5pdGlvbikKLSAg
ICAsIG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAgICwgbV90eXBlTmFtZXIodHlwZU5hbWVy
KQotICAgICwgbV9lbnRyeVBvaW50SXRlbXMoZW50cnlQb2ludEl0ZW1zKQotICAgICwgbV9yZXNv
dXJjZU1hcChyZXNvdXJjZU1hcCkKLSAgICAsIG1fbGF5b3V0KGxheW91dCkKLSAgICAsIG1fZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkKLXsKLSAgICBt
X25hbWVkQmluZEdyb3Vwcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbGF5b3V0LnNpemUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAg
ICAgICBOYW1lZEJpbmRHcm91cCBuYW1lZEJpbmRHcm91cDsKLSAgICAgICAgbmFtZWRCaW5kR3Jv
dXAuc3RydWN0TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCk7Ci0gICAg
ICAgIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSA9IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7Ci0gICAgICAgIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXggPSBtX2xh
eW91dFtpXS5uYW1lOyAvLyBjb252ZXJ0TGF5b3V0KCkgaW4gR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSBtYWtlcyBzdXJlIHRoZXNlIGRvbid0IGNvbGxpZGUuCi0gICAgICAgIG5hbWVkQmluZEdy
b3VwLm5hbWVkQmluZGluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2xheW91dFtpXS5iaW5k
aW5ncy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ld
LmJpbmRpbmdzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBOYW1lZEJpbmRpbmcgbmFtZWRC
aW5kaW5nOwotICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmVsZW1lbnROYW1lID0gbV90eXBlTmFt
ZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgICAgIG5hbWVk
QmluZGluZy5pbmRleCA9IG1fbGF5b3V0W2ldLmJpbmRpbmdzW2pdLmludGVybmFsTmFtZTsKLSAg
ICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oVW5pZm9ybUJ1ZmZlckJp
bmRpbmcmIHVuaWZvcm1CdWZmZXJCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgTGVuZ3RoSW5m
b3JtYXRpb24gbGVuZ3RoSW5mb3JtYXRpb24geyBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1
Y3R1cmVFbGVtZW50TmFtZSgpLCBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCB1bmlmb3Jt
QnVmZmVyQmluZGluZy5sZW5ndGhOYW1lIH07Ci0gICAgICAgICAgICAgICAgbmFtZWRCaW5kaW5n
Lmxlbmd0aEluZm9ybWF0aW9uID0gbGVuZ3RoSW5mb3JtYXRpb247Ci0gICAgICAgICAgICB9LCBb
Jl0oU2FtcGxlckJpbmRpbmcmKSB7Ci0gICAgICAgICAgICB9LCBbJl0oVGV4dHVyZUJpbmRpbmcm
KSB7Ci0gICAgICAgICAgICB9LCBbJl0oU3RvcmFnZUJ1ZmZlckJpbmRpbmcmIHN0b3JhZ2VCdWZm
ZXJCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgTGVuZ3RoSW5mb3JtYXRpb24gbGVuZ3RoSW5m
b3JtYXRpb24geyBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgp
LCBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBzdG9yYWdlQnVmZmVyQmluZGluZy5sZW5n
dGhOYW1lIH07Ci0gICAgICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmxlbmd0aEluZm9ybWF0aW9u
ID0gbGVuZ3RoSW5mb3JtYXRpb247Ci0gICAgICAgICAgICB9KSwgbV9sYXlvdXRbaV0uYmluZGlu
Z3Nbal0uYmluZGluZyk7Ci0gICAgICAgICAgICBuYW1lZEJpbmRHcm91cC5uYW1lZEJpbmRpbmdz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkQmluZGluZykpOwotICAgICAgICB9Ci0gICAg
ICAgIG1fbmFtZWRCaW5kR3JvdXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkQmluZEdy
b3VwKSk7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJ
dGVtcy5pbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPigqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2ld
LnNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBOYW1lZEJ1aWx0SW4g
bmFtZWRCdWlsdEluOwotICAgICAgICBuYW1lZEJ1aWx0SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVt
cyA9IGk7Ci0gICAgICAgIG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWUgPSBtX2dlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICBtX25hbWVkQnVpbHRJbnMuYXBwZW5kKFdURk1vdmUo
bmFtZWRCdWlsdEluKSk7Ci0gICAgfQotCi0gICAgbV9wYXJhbWV0ZXJWYXJpYWJsZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wYXJhbWV0ZXJWYXJpYWJsZXMudW5jaGVj
a2VkQXBwZW5kKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwotfQotCi12b2lkIEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlSGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50LCBTaGFkZXJTdGFnZSBzaGFkZXJT
dGFnZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBtX25h
bWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOwotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgICAgICBWZWN0b3I8
c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+PiBzdHJ1Y3RJdGVtczsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsK
LSAgICAgICAgICAgICAgICBhdXRvJiBiaW5kaW5nID0gbV9sYXlvdXRbaV0uYmluZGluZ3Nbal07
Ci0gICAgICAgICAgICAgICAgaWYgKCFiaW5kaW5nLnZpc2liaWxpdHkuY29udGFpbnMoc2hhZGVy
U3RhZ2UpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAg
IGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pd
LmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX25hbWVkQmluZEdy
b3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmluZGV4OwotICAgICAgICAgICAgICAgIGlmIChhdXRv
IGxlbmd0aEluZm9ybWF0aW9uID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tq
XS5sZW5ndGhJbmZvcm1hdGlvbikKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGxlbmd0aEluZm9ybWF0aW9uLT5pbmRleCwgbWFrZVN0cmluZygi
dWludDIgIiwgbGVuZ3RoSW5mb3JtYXRpb24tPmVsZW1lbnROYW1lLCAiIFtbaWQoIiwgbGVuZ3Ro
SW5mb3JtYXRpb24tPmluZGV4LCAiKV1dOyIpKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGl0
ZXJhdG9yID0gbV9yZXNvdXJjZU1hcC5maW5kKCZtX2xheW91dFtpXS5iaW5kaW5nc1tqXSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmVzb3VyY2VNYXAuZW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byYgdHlwZSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tp
dGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHR5cGUpICYmIGlzPEFTVDo6UmVmZXJlbmNl
VHlwZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odHlwZSkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VU
eXBlPihkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0byBhZGRyZXNzU3BhY2UgPSB0b1N0cmluZyhyZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFj
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihpbmRleCwgbWFrZVN0cmluZyhhZGRyZXNzU3BhY2UsICIgIiwgbWFuZ2xlZFR5cGVO
YW1lLCAiKiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHR5cGUpICYmIGlz
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlw
ZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2Fz
dDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5
cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJp
bmcobWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIp
XV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBiaW5kaW5nIGRvZXNuJ3QgYXBwZWFyIGluIHRo
ZSBzaGFkZXIgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCB3ZSBtdXN0
IHN0aWxsIGVtaXQgYSBwbGFjZWhvbGRlciwgc28gc3VjY2Vzc2l2ZSBpdGVtcyBpbiB0aGUgYXJn
dW1lbnQgYnVmZmVyIHN0cnVjdCBoYXZlIHRoZSBjb3JyZWN0IG9mZnNldC4KLSAgICAgICAgICAg
ICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmluZGluZyBkb2Vzbid0IGFwcGVhciBpbiB0aGUgc2hh
ZGVyIHNvdXJjZSwgd2UgZG9uJ3Qga25vdyB3aGljaCBleGFjdCB0eXBlIHRoZSBiaW5kIHBvaW50
IHNob3VsZCBoYXZlLgotICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIG11c3Qg
c3ludGhlc2l6ZSBhIHR5cGUgb3V0IG9mIHRoaW4gYWlyLgotICAgICAgICAgICAgICAgICAgICBX
VEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaWZvcm1CdWZmZXJCaW5kaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
aW5kZXgsIG1ha2VTdHJpbmcoImNvbnN0YW50IHZvaWQqICIsIGVsZW1lbnROYW1lLCAiIFtbaWQo
IiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSwgWyZdKFNhbXBsZXJC
aW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoInNhbXBsZXIgIiwgZWxlbWVudE5hbWUsICIg
W1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9LCBbJl0oVGV4
dHVyZUJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzg0IFdlIGRvbid0IGtub3cgd2hp
Y2ggdGV4dHVyZSB0eXBlIHRoZSBiaW5kaW5nIHJlcHJlc2VudHMuIFRoaXMgaXMgbm8gZ29vZCB2
ZXJ5IGJhZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygidGV4dHVyZTJkPGZsb2F0PiAiLCBlbGVtZW50
TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0s
IFsmXShTdG9yYWdlQnVmZmVyQmluZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKCJkZXZpY2Ug
dm9pZCogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAg
ICAgICAgICAgICAgICB9KSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6OnNvcnQoc3RydWN0SXRlbXMuYmVnaW4oKSwg
c3RydWN0SXRlbXMuZW5kKCksIFtdKGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPiYg
bGVmdCwgY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+JiByaWdodCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmlnaHQuZmlyc3Q7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RydWN0SXRlbSA6IHN0cnVjdEl0ZW1z
KQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgc3RydWN0SXRl
bS5zZWNvbmQsICdcbicpOwotICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgIn07XG5cbiIpOwotICAgIH0KLX0KLQotYm9vbCBFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRSZXNvdXJjZVNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJ
bmNsdWRlUHJlY2VkaW5nQ29tbWEgaW5jbHVkZVByZWNlZGluZ0NvbW1hKQotewotICAgIGlmICgh
bV9sYXlvdXQuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaW5jbHVk
ZVByZWNlZGluZ0NvbW1hID09IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgYXV0byYgbmFtZWRCaW5kR3JvdXAgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRldmlj
ZSAiLCBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lLCAiJiAiLCBuYW1lZEJpbmRHcm91cC52YXJp
YWJsZU5hbWUsICIgW1tidWZmZXIoIiwgbmFtZWRCaW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRl
eCwgIildXSIpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIFN0cmluZ1Zp
ZXcgaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoY29uc3QgQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1
aWx0SW5TZW1hbnRpYykKLXsKLSAgICBzd2l0Y2ggKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgp
KSB7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJ
RDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNl
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAi
ZmxvYXQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0
aW9uOgotICAgICAgICByZXR1cm4gImZsb2F0NCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVybiAiYm9vbCI7Ci0g
ICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0g
ICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFy
aWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBjYXNl
IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVwdGg6
Ci0gICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2Ug
QVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAg
ICAgIHJldHVybiAidWludDMiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlh
YmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiAidWludDMiOwotICAgIGNhc2UgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgIHJldHVybiAi
dWludCI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGJ1aWx0SW5TZW1hbnRpYy52YXJp
YWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElE
KTsKLSAgICAgICAgcmV0dXJuICJ1aW50MyI7Ci0gICAgfQotfQotCi1ib29sIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSBpbmNsdWRlUHJlY2VkaW5nQ29tbWEpCi17Ci0g
ICAgaWYgKCFtX25hbWVkQnVpbHRJbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoaW5jbHVkZVByZWNlZGluZ0NvbW1hID09IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6
WWVzKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9uYW1lZEJ1aWx0SW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIGF1
dG8mIG5hbWVkQnVpbHRJbiA9IG1fbmFtZWRCdWlsdEluc1tpXTsKLSAgICAgICAgYXV0byYgaXRl
bSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZEJ1aWx0SW4uaW5kZXhJbkVudHJ5UG9p
bnRJdGVtc107Ci0gICAgICAgIGF1dG8mIGJ1aWx0SW5TZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6
QnVpbHRJblNlbWFudGljPigqaXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgIGF1dG8gaW50ZXJuYWxU
eXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKTsKLSAgICAgICAg
aWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpbnRlcm5hbFR5cGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5
cGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnLCBuYW1lZEJ1aWx0SW4udmFy
aWFibGVOYW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYykpOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRNYW5nbGVkSW5wdXRQYXRoKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFZlY3Rv
cjxTdHJpbmc+JiBwYXRoKQotewotICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwotICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKLSAgICBBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24qIHN0cnVjdHVy
ZURlZmluaXRpb24gPSBudWxscHRyOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICht
X2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPm5hbWUoKSA9PSBwYXRoWzBdKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3BhcmFtZXRlclZhcmlhYmxlc1tp
XSk7Ci0gICAgICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5w
YXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICBpZiAoaXM8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBuYW1l
ZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFT
U0VSVChmb3VuZCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBwYXRoLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICAgICAgYXV0byog
bmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQocGF0aFtpXSk7Ci0gICAgICAgIEFTU0VS
VChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsKLSAgICAgICAgc3RydWN0dXJl
RGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IG5leHQtPnR5
cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5v
ZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9
ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZE91
dHB1dFBhdGgoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgVmVjdG9yPFN0cmluZz4mIHBh
dGgpCi17Ci0gICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gbnVsbHB0cjsKLSAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi50
eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9ICZkb3duY2FzdDxB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5v
ZGUpKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IHBhdGgpIHsKLSAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVm
aW5pdGlvbi0+ZmluZChjb21wb25lbnQpOwotICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1
Y3R1cmVFbGVtZW50KCpuZXh0KSk7Ci0gICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxs
cHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7
Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewotICAgICAgICAg
ICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7
Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUp
KQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSAmZG93bmNhc3Q8QVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVp
bHRJbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFy
YW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRl
bnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24u
cGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAi
O1xuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0udmFy
aWFibGVOYW1lOwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJp
bmRpbmdzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNv
dXJjZU1hcC5maW5kKCZtX2xheW91dFtpXS5iaW5kaW5nc1tqXSk7Ci0gICAgICAgICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9yZXNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGlmIChtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pd
Lmxlbmd0aEluZm9ybWF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50
cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7Ci0gICAgICAgICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nb
al0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgYXV0byBsZW5ndGhFbGVtZW50TmFtZSA9
IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24t
PmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoVGVtcG9yYXJ5TmFtZSA9
IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24t
PnRlbXBvcmFyeU5hbWU7Ci0KLSAgICAgICAgICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICpt
X2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS51bm5hbWVkVHlwZTsKLSAg
ICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVt
ZW50VHlwZSgpKTsKLQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgICAgICAgICBpbmRlbnQsICJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xuIiwKLSAg
ICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVu
Z3RoVGVtcG9yYXJ5TmFtZSwgIiA8PCAzMjtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVu
dCwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgfCAi
LCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueDtcbiIsCi0gICAgICAg
ICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgLyBzaXplb2YoIiwgbWFuZ2xlZFR5cGVOYW1lLCAiKTtcbiIsCi0gICAg
ICAgICAgICAgICAgICAgIGluZGVudCwgImlmICgiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID4g
MHhGRkZGRkZGRilcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAgICAiLCBsZW5n
dGhUZW1wb3JhcnlOYW1lLCAiID0gMHhGRkZGRkZGRjtcbiIKLSAgICAgICAgICAgICAgICApOwot
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAg
ICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgIiA9
IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIikgfTtcbiIKLSAgICAgICAgICAgICAgICAp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBwYXRoID0gbV9l
bnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0ucGF0aDsKLSAgICAgICAgICAg
ICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5n
c1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICAgICAgICAgIGVtaXRNYW5nbGVkSW5w
dXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoYXV0byYgbmFtZWRC
dWlsdEluIDogbV9uYW1lZEJ1aWx0SW5zKSB7Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWlsdEluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdOwot
ICAgICAgICBhdXRvJiBwYXRoID0gaXRlbS5wYXRoOwotICAgICAgICBhdXRvJiB2YXJpYWJsZU5h
bWUgPSBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lOwotICAgICAgICBhdXRvIG1hbmdsZWRUeXBl
TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7
Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAgZW1pdE1h
bmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtc
biIpOwotICAgIH0KLX0KLQotVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5p
dGlvbiwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5
UG9pbnRJdGVtcyYgZW50cnlQb2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiBy
ZXNvdXJjZU1hcCwgTGF5b3V0JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxl
TmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1
dGUqLCBzaXplX3Q+JiBtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICA6IEVudHJ5UG9pbnRT
Y2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24sIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZW50
cnlQb2ludEl0ZW1zLCByZXNvdXJjZU1hcCwgbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSkpCi0gICAgLCBtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKG1hdGNoZWRWZXJ0
ZXhBdHRyaWJ1dGVzKQotICAgICwgbV9zdGFnZUluU3RydWN0TmFtZSh0eXBlTmFtZXIuZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fcmV0dXJuU3RydWN0TmFtZSh0eXBlTmFtZXIuZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUobV9nZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUoKSkKLXsKLSAgICBtX25hbWVkU3RhZ2VJbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLnNpemUoKSk7Ci0gICAgZm9y
IChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtX21hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIE5hbWVkU3RhZ2VJbiBuYW1lZFN0YWdlSW47Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5pbmRl
eEluRW50cnlQb2ludEl0ZW1zID0ga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICBuYW1lZFN0
YWdlSW4uZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVt
ZW50TmFtZSgpOwotICAgICAgICBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXggPSBrZXlWYWx1
ZVBhaXIua2V5LT5tZXRhbExvY2F0aW9uOwotICAgICAgICBtX25hbWVkU3RhZ2VJbnMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUobmFtZWRTdGFnZUluKSk7Ci0gICAgfQotCi0gICAgbV9uYW1lZE91
dHB1dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNp
emUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRw
dXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9p
bnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAgICBOYW1lZE91dHB1dCBuYW1lZE91dHB1dDsKLSAg
ICAgICAgbmFtZWRPdXRwdXQuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRT
dHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBTdHJpbmdWaWV3IGludGVybmFsVHlwZTsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+
KCpvdXRwdXRJdGVtLnNlbWFudGljKSkKLSAgICAgICAgICAgIGludGVybmFsVHlwZSA9IGludGVy
bmFsVHlwZUZvclNlbWFudGljKFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0
SXRlbS5zZW1hbnRpYykpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051bGwoKSkKLSAg
ICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBpbnRlcm5hbFR5cGUudG9T
dHJpbmcoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxU
eXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqb3V0cHV0SXRlbS51bm5h
bWVkVHlwZSk7Ci0gICAgICAgIG1fbmFtZWRPdXRwdXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3Zl
KG5hbWVkT3V0cHV0KSk7Ci0gICAgfQotfQotCi12b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVu
dGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJz
dHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICB7Ci0gICAgICAgIElu
ZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBuYW1lZFN0
YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVO
YW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVtcy5p
bnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBlKTsK
LSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7
Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0
ZUluZGV4OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtYW5nbGVk
VHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5k
ZXgsICIpXV07XG4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgaW5kZW50LCAifTtcblxuIiwKLSAgICAgICAgaW5kZW50LCAic3RydWN0ICIs
IG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCi0gICAgKTsKLSAgICB7Ci0gICAgICAgIEluZGVu
dGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAg
ICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5
cGVOYW1lOwotICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ld
LmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JT
ZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbmRlbnQsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywg
YXR0cmlidXRlLCAiO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0gICAgCi0gICAgZW1pdFJlc291cmNlSGVscGVyVHlw
ZXMoc3RyaW5nQnVpbGRlciwgaW5kZW50LCBTaGFkZXJTdGFnZTo6VmVydGV4KTsKLX0KLQotdm9p
ZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVu
dGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ2
ZXJ0ZXggIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0
YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9p
bl1dIik7Ci0gICAgZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQ
cmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVp
bGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRV
bnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50
KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKHN0cmluZ0J1aWxk
ZXIsIGluZGVudCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFn
ZUlucykgewotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25h
bWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwotICAgICAgICBhdXRvJiBl
bGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAgCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0gICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQ
YXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ID0gIiwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwot
ICAgIH0KLX0KLQotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJp
YWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgb3V0cHV0VmFyaWFibGVOYW1lLCBJbmRlbnRh
dGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtX3Jl
dHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAgaWYg
KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUg
PSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7
ICsraSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVs
ZW1lbnROYW1lOwotICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1
dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2lu
dEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5h
bFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKLSAgICAgICAgZW1pdE1hbmdsZWRP
dXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKTtcbiIpOwotICAgIH0KLX0KLQotRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBm
dW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlw
ZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5UG9pbnRJdGVtcywgSGFzaE1hcDxCaW5kaW5n
Kiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYgbGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1h
bmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8
QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+JikKLSAgICA6IEVudHJ5UG9pbnRTY2FmZm9s
ZGluZyhmdW5jdGlvbkRlZmluaXRpb24sIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZW50cnlQb2lu
dEl0ZW1zLCByZXNvdXJjZU1hcCwgbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSkpCi0gICAgLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRU
eXBlTmFtZSgpKQotICAgICwgbV9yZXR1cm5TdHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpKQotICAgICwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZShtX2dlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMuaW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGlucHV0SXRlbSA9
IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpXTsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigqaW5wdXRJdGVtLnNlbWFudGljKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMg
PSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmlucHV0SXRlbS5zZW1hbnRpYyk7
Ci0gICAgICAgIE5hbWVkU3RhZ2VJbiBuYW1lZFN0YWdlSW47Ci0gICAgICAgIG5hbWVkU3RhZ2VJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0gaTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmVsZW1l
bnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsK
LSAgICAgICAgbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4ID0gc3RhZ2VJbk91dFNlbWFudGlj
LmluZGV4KCk7Ci0gICAgICAgIG1fbmFtZWRTdGFnZUlucy5hcHBlbmQoV1RGTW92ZShuYW1lZFN0
YWdlSW4pKTsKLSAgICB9Ci0KLSAgICBtX25hbWVkT3V0cHV0cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAg
ICAgIE5hbWVkT3V0cHV0IG5hbWVkT3V0cHV0OwotICAgICAgICBuYW1lZE91dHB1dC5lbGVtZW50
TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0g
ICAgICAgIFN0cmluZ1ZpZXcgaW50ZXJuYWxUeXBlOwotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKQot
ICAgICAgICAgICAgaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoV1RGOjpn
ZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSk7Ci0gICAgICAg
IGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50
ZXJuYWxUeXBlTmFtZSA9IGludGVybmFsVHlwZS50b1N0cmluZygpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgbV9uYW1l
ZE91dHB1dHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRPdXRwdXQpKTsKLSAgICB9Ci19
Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVj
dE5hbWUsICIge1xuIik7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGlu
ZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5z
KSB7Ci0gICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRl
eEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBhdXRvIGVsZW1l
bnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBhdHRy
aWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnRO
YW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgaW5kZW50LCAifTtc
blxuIiwKLSAgICAgICAgaW5kZW50LCAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7
XG4iCi0gICAgKTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRw
dXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRy
eVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwotICAgICAgICAgICAgYXV0
byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwotICAgICAgICAg
ICAgYXV0byBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1h
bnRpYyk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIGludGVybmFs
VHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7
Ci0KLSAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQsIFNo
YWRlclN0YWdlOjpGcmFnbWVudCk7Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xl
ZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJmcmFnbWVudCAiLCBtX3JldHVyblN0cnVj
dE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywg
bV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKLSAgICBlbWl0UmVzb3Vy
Y2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwot
ICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5n
Q29tbWE6Olllcyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lk
IEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0VW5wYWNr
UmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwotCi0gICAg
Zm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgYXV0
byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVu
dHJ5UG9pbnRJdGVtc10ucGF0aDsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0
YWdlSW4uZWxlbWVudE5hbWU7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50
KTsKLSAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7Ci0gICAgfQotfQotCi12b2lkIEZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVO
YW1lIG91dHB1dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1
dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRz
LnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgp
KSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVu
dE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFi
bGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgZWxl
bWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgYXV0byYg
aW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0g
ICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlh
YmxlTmFtZSk7Ci0gICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBw
YXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLSAgICB9Ci19Ci0K
LUNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRp
bmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50cmluc2lj
cyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50
cnlQb2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5
b3V0JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSkKLSAgICA6IEVudHJ5UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlv
bkRlZmluaXRpb24sIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZW50cnlQb2ludEl0ZW1zLCByZXNv
dXJjZU1hcCwgbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpCi17Ci19
Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAg
ICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQsIFNoYWRlclN0
YWdlOjpDb21wdXRlKTsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlv
bk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW5kZW50LCAia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcp
OwotICAgIGJvb2wgYWRkZWRUb1NpZ25hdHVyZSA9IGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJp
bmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Ok5vKTsKLSAgICBlbWl0QnVpbHRJbnNT
aWduYXR1cmUoc3RyaW5nQnVpbGRlciwgYWRkZWRUb1NpZ25hdHVyZSA/IEluY2x1ZGVQcmVjZWRp
bmdDb21tYTo6WWVzIDogSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248
ND4gaW5kZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5zKHN0
cmluZ0J1aWxkZXIsIGluZGVudCk7Ci19Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIE1hbmds
ZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFiNTYyODhjYmVhMjU3MWFmMWQwOWQxNTExMjMxNTgwYmQ1ZWJl
NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZv
bGRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotCi19Ci0KLXN0cnVjdCBFbnRyeVBv
aW50SXRlbXM7Ci1jbGFzcyBJbnRyaW5zaWNzOwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFz
cyBUeXBlTmFtZXI7Ci0KLWNsYXNzIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlQb2ludFNjYWZm
b2xkaW5nKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB2b2lkIGVtaXRIZWxwZXJUeXBlcyhT
dHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1p
dFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRp
b248ND4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiwg
SW5kZW50YXRpb248ND4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVp
bGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRW
YXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSA9IDA7Ci0KLSAgICBWZWN0b3I8TWFuZ2xlZFZh
cmlhYmxlTmFtZT4mIHBhcmFtZXRlclZhcmlhYmxlcygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyVmFy
aWFibGVzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5hbWVyJiwgRW50cnlQb2ludEl0
ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYsIHN0
ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSk7Ci0KLSAgICB2b2lkIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXIm
LCBJbmRlbnRhdGlvbjw0PiwgU2hhZGVyU3RhZ2UpOwotCi0gICAgZW51bSBjbGFzcyBJbmNsdWRl
UHJlY2VkaW5nQ29tbWEgewotICAgICAgICBZZXMsCi0gICAgICAgIE5vCi0gICAgfTsKLSAgICBi
b29sIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgSW5jbHVkZVByZWNlZGlu
Z0NvbW1hKTsKLSAgICBib29sIGVtaXRCdWlsdEluc1NpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwg
SW5jbHVkZVByZWNlZGluZ0NvbW1hKTsKLQotICAgIHZvaWQgZW1pdE1hbmdsZWRJbnB1dFBhdGgo
U3RyaW5nQnVpbGRlciYsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKTsKLSAgICB2b2lkIGVtaXRNYW5n
bGVkT3V0cHV0UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVjdG9yPFN0cmluZz4mIHBhdGgpOwotICAg
IHZvaWQgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoU3RyaW5nQnVpbGRlciYs
IEluZGVudGF0aW9uPDQ+KTsKLQotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBtX2Z1bmN0
aW9uRGVmaW5pdGlvbjsKLSAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgVHlwZU5h
bWVyJiBtX3R5cGVOYW1lcjsKLSAgICBFbnRyeVBvaW50SXRlbXMmIG1fZW50cnlQb2ludEl0ZW1z
OwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIG1fcmVzb3VyY2VNYXA7Ci0gICAgTGF5
b3V0JiBtX2xheW91dDsKLSAgICBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4g
bV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWU7Ci0KLSAgICBzdHJ1Y3QgTGVuZ3RoSW5mb3JtYXRp
b24gewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7Ci0g
ICAgICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdGVtcG9yYXJ5TmFtZTsKLSAgICAgICAgdW5zaWdu
ZWQgaW5kZXg7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgTmFtZWRCaW5kaW5nIHsKLSAgICAgICAgTWFu
Z2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBp
bmRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxMZW5ndGhJbmZvcm1hdGlvbj4gbGVuZ3RoSW5m
b3JtYXRpb247Ci0gICAgfTsKLSAgICBzdHJ1Y3QgTmFtZWRCaW5kR3JvdXAgewotICAgICAgICBN
YW5nbGVkVHlwZU5hbWUgc3RydWN0TmFtZTsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB2
YXJpYWJsZU5hbWU7Ci0gICAgICAgIFZlY3RvcjxOYW1lZEJpbmRpbmc+IG5hbWVkQmluZGluZ3M7
Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50QnVmZmVySW5kZXg7Ci0gICAgfTsKLSAgICBWZWN0
b3I8TmFtZWRCaW5kR3JvdXA+IG1fbmFtZWRCaW5kR3JvdXBzOyAvLyBQYXJhbGxlbCB0byBtX2xh
eW91dAotCi0gICAgc3RydWN0IE5hbWVkQnVpbHRJbiB7Ci0gICAgICAgIHNpemVfdCBpbmRleElu
RW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHZhcmlhYmxlTmFt
ZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZEJ1aWx0SW4+IG1fbmFtZWRCdWlsdEluczsKLQot
ICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiBtX3BhcmFtZXRlclZhcmlhYmxlczsKLX07
Ci0KLWNsYXNzIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZyBmaW5hbCA6IHB1YmxpYyBFbnRy
eVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgotICAgIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9s
ZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3MmLCBUeXBlTmFtZXImLCBF
bnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwg
TGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lLCBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4mIG1hdGNo
ZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICB2aXJ0dWFsIH5WZXJ0ZXhFbnRyeVBvaW50U2NhZmZv
bGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMo
U3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRT
aWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9u
PDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVu
dGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBN
YW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVO
YW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0KLSAgICBIYXNoTWFwPFZlcnRleEF0dHJp
YnV0ZSosIHNpemVfdD4mIG1fbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXM7Ci0gICAgTWFuZ2xlZFR5
cGVOYW1lIG1fc3RhZ2VJblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1fcmV0dXJu
U3RydWN0TmFtZTsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG1fc3RhZ2VJblBhcmFtZXRlck5h
bWU7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRTdGFnZUluIHsKLSAgICAgICAgc2l6ZV90IGluZGV4SW5F
bnRyeVBvaW50SXRlbXM7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVt
ZW50TmFtZTsKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXg7Ci0gICAgfTsKLSAgICBW
ZWN0b3I8TmFtZWRTdGFnZUluPiBtX25hbWVkU3RhZ2VJbnM7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRP
dXRwdXQgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7
Ci0gICAgICAgIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIGludGVybmFsVHlwZU5hbWU7Ci0gICAg
fTsKLSAgICBWZWN0b3I8TmFtZWRPdXRwdXQ+IG1fbmFtZWRPdXRwdXRzOwotfTsKLQotY2xhc3Mg
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmluYWwgOiBwdWJsaWMgRW50cnlQb2ludFNj
YWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZyhB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNpY3MmLCBUeXBlTmFtZXImLCBFbnRyeVBv
aW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0
Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiYgbWF0Y2hl
ZENvbG9yQXR0YWNobWVudHMpOwotICAgIHZpcnR1YWwgfkZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQgZW1pdEhlbHBlclR5cGVz
KFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0
U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlv
bjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJbmRl
bnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxl
TmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotCi0gICAgTWFuZ2xlZFR5cGVOYW1lIG1f
c3RhZ2VJblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1fcmV0dXJuU3RydWN0TmFt
ZTsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG1fc3RhZ2VJblBhcmFtZXRlck5hbWU7Ci0KLSAg
ICBzdHJ1Y3QgTmFtZWRTdGFnZUluIHsKLSAgICAgICAgc2l6ZV90IGluZGV4SW5FbnRyeVBvaW50
SXRlbXM7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsK
LSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXg7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFt
ZWRTdGFnZUluPiBtX25hbWVkU3RhZ2VJbnM7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRPdXRwdXQgewot
ICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAg
IE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIGludGVybmFsVHlwZU5hbWU7Ci0gICAgfTsKLSAgICBW
ZWN0b3I8TmFtZWRPdXRwdXQ+IG1fbmFtZWRPdXRwdXRzOwotfTsKLQotY2xhc3MgQ29tcHV0ZUVu
dHJ5UG9pbnRTY2FmZm9sZGluZyBmaW5hbCA6IHB1YmxpYyBFbnRyeVBvaW50U2NhZmZvbGRpbmcg
ewotcHVibGljOgotICAgIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5hbWVyJiwgRW50cnlQb2ludEl0ZW1zJiwg
SGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYsIHN0ZDo6ZnVu
Y3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSk7
Ci0gICAgdmlydHVhbCB+Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsK
LQotcHJpdmF0ZToKLSAgICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5k
ZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWls
ZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAg
IHZvaWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRl
OwotICAgIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUg
ZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+
KSBvdmVycmlkZTsKLX07Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMmI0NTkwYTU1ZmMzMTdiMjYwMjMxZGUzOGI0MjBmZmE2OTdkYTMy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsOTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbldyaXRlci5oIgotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRl
ICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgiCi0j
aW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlw
ZU5hbWVyLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdGF0
aWMgdm9pZCBkZWNsYXJlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBUeXBlTmFtZXImIHR5
cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rp
b25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotewotICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9u
LmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gaXRlcmF0b3Ig
PSBmdW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgQVNTRVJU
KGl0ZXJhdG9yICE9IGZ1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5
cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
ZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSkpOwotICAgIH0KLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwotfQotCi1zdHJ1Y3QgVmFyaWFibGUgewot
ICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgbmFtZTsKLSAgICBNYW5nbGVkVHlwZU5hbWUgdHlwZTsK
LX07Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciA6IHB1YmxpYyBWaXNpdG9yIHsK
LSAgICBjbGFzcyBIb2lzdGVkVmFyaWFibGVDb2xsZWN0b3IgOiBwdWJsaWMgVmlzaXRvciB7Ci0g
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgSG9pc3RlZFZhcmlhYmxlQ29sbGVjdG9yKEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlciYgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKQotICAgICAgICAgICAg
OiBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Np
b24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBWZWN0
b3I8VmFyaWFibGU+IHZhcmlhYmxlczsKLSAgICAgICAgICAgIHNpemVfdCBzaXplID0gY2FsbEV4
cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpOwotICAgICAgICAgICAgYm9vbCBpc1ZvaWQgPSBt
YXRjaGVzKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLCBmdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIubV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpOwotICAgICAgICAgICAgaWYgKCFpc1ZvaWQp
Ci0gICAgICAgICAgICAgICAgKytzaXplOwotICAgICAgICAgICAgdmFyaWFibGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnQg
OiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gdHlw
ZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoYXJndW1lbnQtPnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIG5hbWUg
PSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0g
ICAgICAgICAgICAgICAgdmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChWYXJpYWJsZSB7IG5hbWUs
IHR5cGUgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghaXNWb2lkKQotICAg
ICAgICAgICAgICAgIHZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQoVmFyaWFibGUgeyBmdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpIH0pOwotCi0gICAgICAgICAgICB0b0hvaXN0LmFkZCgmY2FsbEV4
cHJlc3Npb24sIFdURk1vdmUodmFyaWFibGVzKSk7Ci0KLSAgICAgICAgICAgIFZpc2l0b3I6OnZp
c2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmlzaXQoQVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvcjxWYXJpYWJsZT4gdmFyaWFibGVzOwotICAgICAg
ICAgICAgdmFyaWFibGVzLmFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
ci5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcmVhZE1vZGlmeVdyaXRlLm9sZFZhbHVlKCku
dHlwZSgpKSB9KTsKLSAgICAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoVmFyaWFibGUgeyBmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnJlYWRNb2Rp
ZnlXcml0ZS5uZXdWYWx1ZSgpLnR5cGUoKSkgfSk7Ci0KLSAgICAgICAgICAgIHRvSG9pc3QuYWRk
KCZyZWFkTW9kaWZ5V3JpdGUsIFdURk1vdmUodmFyaWFibGVzKSk7Ci0KLSAgICAgICAgICAgIFZp
c2l0b3I6OnZpc2l0KHJlYWRNb2RpZnlXcml0ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXImIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjsKLSAgICAgICAg
SGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBWZWN0b3I8VmFyaWFibGU+PiB0b0hvaXN0OwotICAg
IH07Ci0KLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBl
TmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9u
TmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogbV9zdHJp
bmdCdWlsZGVyKHN0cmluZ0J1aWxkZXIpCi0gICAgICAgICwgbV9pbnRyaW5zaWNzKGludHJpbnNp
Y3MpCi0gICAgICAgICwgbV90eXBlTmFtZXIodHlwZU5hbWVyKQotICAgICAgICAsIG1fZnVuY3Rp
b25NYXBwaW5nKGZ1bmN0aW9uTWFwcGluZykKLSAgICAgICAgLCBtX2xheW91dChsYXlvdXQpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcigpID0g
ZGVmYXVsdDsKLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92
ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKSA9IDA7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6QnJlYWsmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3Rh
dGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdl
ckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJ
bmRleEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLQotICAgIGVudW0gY2xh
c3MgTG9vcENvbmRpdGlvbkxvY2F0aW9uIHsKLSAgICAgICAgQmVmb3JlQm9keSwKLSAgICAgICAg
QWZ0ZXJCb2R5Ci0gICAgfTsKLSAgICB2b2lkIGVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlv
biwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHByZXNzaW9uLCBBU1Q6OkV4cHJlc3Npb24q
IGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkpOwotCi0gICAgdm9pZCBlbWl0Q29uc3Rh
bnRFeHByZXNzaW9uU3RyaW5nKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJik7Ci0KLSAgICBNYW5n
bGVkVmFyaWFibGVOYW1lIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpIHsgcmV0dXJuIHsgbV92
YXJpYWJsZUNvdW50KysgfTsgfQotCi0gICAgZW51bSBjbGFzcyBCcmVha0NvbnRleHQgewotICAg
ICAgICBMb29wLAotICAgICAgICBTd2l0Y2gKLSAgICB9OwotCi0gICAgc3RkOjpvcHRpb25hbDxC
cmVha0NvbnRleHQ+IG1fY3VycmVudEJyZWFrQ29udGV4dDsKLQotICAgIFN0cmluZ0J1aWxkZXIm
IG1fc3RyaW5nQnVpbGRlcjsKLSAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgVHlw
ZU5hbWVyJiBtX3R5cGVOYW1lcjsKLSAgICBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBtX2Z1bmN0aW9uTWFwcGluZzsKLSAgICBIYXNoTWFw
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fdmFyaWFi
bGVNYXBwaW5nOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4g
bV9lbnRyeVBvaW50U2NhZmZvbGRpbmc7Ci0gICAgTGF5b3V0JiBtX2xheW91dDsKLSAgICB1bnNp
Z25lZCBtX3ZhcmlhYmxlQ291bnQgeyAwIH07Ci0gICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFy
aWFibGVOYW1lPiBtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGU7Ci0gICAgSW5k
ZW50YXRpb248ND4gbV9pbmRlbnQgeyAwIH07Ci0gICAgSGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24q
LCBWZWN0b3I8VmFyaWFibGU+PiBtX2hvaXN0ZWRWYXJpYWJsZXM7Ci19OwotCi12b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
JikKLXsKLSAgICAvLyBXZSBpbmxpbmUgbmF0aXZlIGZ1bmN0aW9uIGNhbGxzLgotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24m
IGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLQotICAgIHsKLSAgICAgICAgSG9pc3RlZFZhcmlhYmxl
Q29sbGVjdG9yIGNvbGxlY3RvcigqdGhpcyk7Ci0gICAgICAgIGNvbGxlY3Rvci5WaXNpdG9yOjp2
aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBtX2hvaXN0ZWRWYXJpYWJsZXMgPSBX
VEZNb3ZlKGNvbGxlY3Rvci50b0hvaXN0KTsKLSAgICB9Ci0KLSAgICBhdXRvIGRlZmluZUhvaXN0
ZWRWYXJpYWJsZXMgPSBbJl0gewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZlY3RvciA6IG1f
aG9pc3RlZFZhcmlhYmxlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIHZhcmlh
YmxlIDogdmVjdG9yKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9p
bmRlbnQsIHZhcmlhYmxlLnR5cGUsICcgJywgdmFyaWFibGUubmFtZSwgIjtcbiIpOwotICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5k
KCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2Z1bmN0aW9u
TWFwcGluZy5lbmQoKSk7Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlw
ZSgpKSB7Ci0gICAgICAgIGF1dG8gZW50cnlQb2ludFNjYWZmb2xkaW5nID0gY3JlYXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmICghZW50cnlQ
b2ludFNjYWZmb2xkaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2VudHJ5UG9p
bnRTY2FmZm9sZGluZyA9IFdURk1vdmUoZW50cnlQb2ludFNjYWZmb2xkaW5nKTsKLSAgICAgICAg
Ci0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0SGVscGVyVHlwZXMobV9zdHJp
bmdCdWlsZGVyLCBtX2luZGVudCk7Ci0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5l
bWl0U2lnbmF0dXJlKG1fc3RyaW5nQnVpbGRlciwgaXRlcmF0b3ItPnZhbHVlLCBtX2luZGVudCk7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICAg
ICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShtX2luZGVudCk7Ci0KLSAg
ICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0VW5wYWNrKG1fc3RyaW5nQnVp
bGRlciwgbV9pbmRlbnQpOwotICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLCBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+
cGFyYW1ldGVyVmFyaWFibGVzKClbaV0pOwotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGRlZmluZUhvaXN0ZWRWYXJpYWJsZXMoKTsKLQotICAgICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG5cbiIpOwotCi0gICAgICAgIG1fZW50cnlQb2lu
dFNjYWZmb2xkaW5nID0gbnVsbHB0cjsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobV9l
bnRyeVBvaW50U2NhZmZvbGRpbmcgPT0gbnVsbHB0cik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlv
bkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlciA9IGZ1
bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV07Ci0gICAgICAgICAgICBhdXRvIHBhcmFt
ZXRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZwYXJhbWV0ZXIsIHBhcmFtZXRlck5h
bWUpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFt
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci0K
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgie1xuIik7Ci0KLSAgICAgICAgZGVmaW5l
SG9pc3RlZFZhcmlhYmxlcygpOwotCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlv
bkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1c
biIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQotewotICAg
IFZpc2l0b3I6OnZpc2l0KHN0YXRlbWVudCk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1faW5kZW50LCAie1xuIik7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3Bl
IHNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9jay5z
dGF0ZW1lbnRzKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGVtZW50KTsK
LSAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCcmVhayYpCi17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudEJyZWFrQ29udGV4dCk7Ci0gICAgc3dpdGNoICgqbV9jdXJyZW50
QnJlYWtDb250ZXh0KSB7Ci0gICAgY2FzZSBCcmVha0NvbnRleHQ6OlN3aXRjaDoKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImJyZWFrO1xuIik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQnJlYWtDb250ZXh0OjpMb29wOgotICAgICAgICBBU1NFUlQobV9icmVh
a091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgKLSAgICAgICAgICAgIG1faW5kZW50LCAqbV9icmVha091dE9mQ3VycmVudExvb3BF
YXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIsCi0gICAgICAgICAgICBtX2luZGVudCwgImJyZWFr
O1xuIgotICAgICAgICApOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKLXsKLSAgICBBU1NFUlQo
bV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlKTsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCAiYnJlYWs7XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudC5lZmZlY3RmdWxFeHByZXNzaW9uKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIjtcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpGYWxsdGhyb3VnaCYpCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwg
IltbY2xhbmc6OmZhbGx0aHJvdWdoXV07XG4iKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MDggTWFrZSBzdXJlIHRoaXMgaXMgb2theS4gQWx0
ZXJuYXRpdmVseSwgd2UgY291bGQgZG8gbm90aGluZyBhbmQganVzdCByZXR1cm4gaGVyZSBpbnN0
ZWFkLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoTG9vcENv
bmRpdGlvbkxvY2F0aW9uIGxvb3BDb25kaXRpb25Mb2NhdGlvbiwgQVNUOjpFeHByZXNzaW9uKiBj
b25kaXRpb25FeHByZXNzaW9uLCBBU1Q6OkV4cHJlc3Npb24qIGluY3JlbWVudCwgQVNUOjpTdGF0
ZW1lbnQmIGJvZHkpCi17Ci0gICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxNYW5nbGVkVmFy
aWFibGVOYW1lPj4gbG9vcFZhcmlhYmxlU2NvcGUobV9icmVha091dE9mQ3VycmVudExvb3BFYXJs
eVZhcmlhYmxlLCBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSk7Ci0KLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICBtX2luZGVudCwgImJvb2wgIiwgKm1fYnJlYWtPdXRPZkN1
cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKLSAgICAgICAgbV9pbmRlbnQs
ICJ3aGlsZSAodHJ1ZSkge1xuIgotICAgICk7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNj
b3BlIHdoaWxlU2NvcGUobV9pbmRlbnQpOwotCi0gICAgICAgIGlmIChsb29wQ29uZGl0aW9uTG9j
YXRpb24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4
cHJlc3Npb24pIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICAgICAgICAgbV9pbmRlbnQsICJpZiAoISgiKTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKAotICAgICAgICAgICAgICAgICIpKVxuIiwKLSAgICAgICAgICAgICAgICAiICAgIGJy
ZWFrO1xuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1f
aW5kZW50LCAiZG8ge1xuIik7Ci0gICAgICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8QnJl
YWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250
ZXh0OjpMb29wKTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIGRv
U2NvcGUobV9pbmRlbnQpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJvZHkpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9IHdo
aWxlKGZhbHNlKTsgXG4iKTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAg
ICAgICAgICAgbV9pbmRlbnQsICJpZiAoIiwgKm1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlW
YXJpYWJsZSwgIilcbiIsCi0gICAgICAgICAgICBtX2luZGVudCwgIiAgICBicmVhaztcbiIpOwot
Ci0gICAgICAgIGlmIChpbmNyZW1lbnQpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIigiKTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaW5jcmVtZW50KTsK
LSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENvbmRpdGlvbkxvY2F0
aW9uOjpBZnRlckJvZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgewotICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2luZGVudCwgImlmICghKCIp
OwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsK
LSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIikp
XG4iLAotICAgICAgICAgICAgICAgICIgICAgYnJlYWs7XG4iKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9IFxuIik7Ci19Ci0KLXZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1do
aWxlTG9vcCkKLXsKLSAgICBlbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9k
eSwgJmRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCksIG51bGxwdHIsIGRvV2hpbGVMb29wLmJvZHko
KSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OldoaWxl
TG9vcCYgd2hpbGVMb29wKQotewotICAgIGVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbjo6
QmVmb3JlQm9keSwgJndoaWxlTG9vcC5jb25kaXRpb25hbCgpLCBudWxscHRyLCB3aGlsZUxvb3Au
Ym9keSgpKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6
Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50
LCAie1xuIik7Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKG1faW5kZW50
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7
Ci0gICAgICAgIGVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3JlQm9keSwgZm9y
TG9vcC5jb25kaXRpb24oKSwgZm9yTG9vcC5pbmNyZW1lbnQoKSwgZm9yTG9vcC5ib2R5KCkpOwot
ICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBp
ZlN0YXRlbWVudCkKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiaWYg
KCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtcbiIpOwotCi0gICAgewotICAgICAgICBJ
bmRlbnRhdGlvblNjb3BlIGlmU2NvcGUobV9pbmRlbnQpOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoaWZTdGF0ZW1lbnQu
ZWxzZUJvZHkoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
fSBlbHNlIHtcbiIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIGVs
c2VTY29wZShtX2luZGVudCk7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3Rh
dGVtZW50LmVsc2VCb2R5KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRlbWVudCkKLXsKLSAgICBpZiAo
cmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsKLSAgICAgICAgYXV0byB0ZW1wUmV0dXJuTmFtZSA9
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOyAKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblN0YXRl
bWVudC52YWx1ZSgpLT5yZXNvbHZlZFR5cGUoKSksICcgJywgdGVtcFJldHVybk5hbWUsICIgPSAi
KTsgCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkp
OwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKLQotICAgICAgICBpZiAo
bV9lbnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgICAgICBtX2VudHJ5UG9pbnRT
Y2FmZm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWlsZGVyLCB0ZW1wUmV0dXJuTmFtZSwgdmFy
aWFibGVOYW1lLCBtX2luZGVudCk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCAicmV0dXJuICIsIHZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm4g
IiwgdGVtcFJldHVybk5hbWUsICI7XG4iKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCwgInJldHVybjtcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRl
bWVudCkKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAic3dpdGNoICgi
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgeyIpOwotCi0gICAgewotICAgICAgICBJbmRlbnRh
dGlvblNjb3BlIHN3aXRjaFNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBzd2l0
Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCi0gICAgICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAgICBpZiAoc3dpdGNo
Q2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQs
ICJjYXNlICIpOwotICAgICAgICBlbWl0Q29uc3RhbnRFeHByZXNzaW9uU3RyaW5nKCpzd2l0Y2hD
YXNlLnZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCI6XG4iKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImRlZmF1
bHQ6XG4iKTsKLSAgICBTZXRGb3JTY29wZTxzdGQ6Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4+IGJy
ZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4dDo6U3dpdGNoKTsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKLSAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMiBGaWd1cmUg
b3V0IHdoZXRoZXIgd2UgbmVlZCB0byBicmVhayBvciBmYWxsdGhyb3VnaC4KLX0KLQotdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotewotICAgIFZpc2l0b3I6
OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKLX0KLQotdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRl
cmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKGludGVnZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVn
ZXJMaXRlcmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAi
PigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRl
cmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKGZsb2F0TGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExp
dGVyYWwudmFsdWUoKSwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKQotewotICAgIGF1dG8g
bWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGJvb2xlYW5M
aXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0
aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkg
PyAidHJ1ZSIgOiAiZmFsc2UiLCAiKSIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCkKLXsKLSAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmVz
b2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1l
LCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOwotfQotCi12b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9u
KQotewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYgZ2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1l
IG1hbmdsZWRGaWVsZE5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVs
ZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKSk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChnbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiktPiIs
IG1hbmdsZWRGaWVsZE5hbWUpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIGF1dG8mIHR5
cGUgPSBkb3RFeHByZXNzaW9uLmJhc2UoKS5yZXNvbHZlZFR5cGUoKS51bmlmeU5vZGUoKTsKLQot
ICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpKSB7Ci0gICAgICAgIGF1
dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KHR5cGUpOwotICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVtZW50ID0gc3RydWN0dXJlRGVm
aW5pdGlvbi5maW5kKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpOwotICAgICAgICBBU1NFUlQo
c3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpOwotCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKS4iLCBlbGVtZW50TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKTsKLSAgICAgICAgaWYgKGVsZW1l
bnROYW1lID09ICJsZW5ndGgiICYmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkg
fHwgaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpIHx8IChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4odHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUp
LmlzVmVjdG9yKCkpKSkgewotICAgICAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VU
eXBlPih0eXBlKSkgewotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICAgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNl
KCkpOwotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikubGVuZ3RoIik7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkgewotICAg
ICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+
KHR5cGUpLm51bUVsZW1lbnRzKCksICIpIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICAgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KHR5cGUpLnZlY3RvclNpemUoKSwgIikiKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAg
ICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLiIsIGVsZW1lbnROYW1lKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pCi17Ci0gICAgYXV0byYgdHlwZSA9
IGluZGV4RXhwcmVzc2lvbi5iYXNlKCkucmVzb2x2ZWRUeXBlKCkudW5pZnlOb2RlKCk7Ci0gICAg
aWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKSkgewotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4
cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS5wb2lu
dGVyWygiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRl
eEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgPCAoIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS5sZW5ndGggPyAiKTsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA6IDBdIik7Ci0gICAgfSBlbHNlIGlmIChpczxB
U1Q6OkFycmF5VHlwZT4odHlwZSkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikuZGF0YSgpWygiKTsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgPCAiLCBkb3duY2FzdDxBU1Q6OkFycmF5
VHlwZT4odHlwZSkubnVtRWxlbWVudHMoKSwgIiA/ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiIDogMF0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlKSkgewotICAgICAgICBhdXRvJiBuYXRpdmVUeXBlID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpOwotICAgICAgICB1bnNpZ25l
ZCBzaXplOwotICAgICAgICBpZiAobmF0aXZlVHlwZS5pc01hdHJpeCgpKQotICAgICAgICAgICAg
c2l6ZSA9IG5hdGl2ZVR5cGUubnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7Ci0gICAgICAgIGVsc2Ug
aWYgKG5hdGl2ZVR5cGUuaXNWZWN0b3IoKSkKLSAgICAgICAgICAgIHNpemUgPSBuYXRpdmVUeXBl
LnZlY3RvclNpemUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVsoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgPCAiLCBzaXplLCAiKSA/ICgiKTsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIikgOiAwXSIpOwotICAgIH0gZWxzZQotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlv
bikKLXsKLSAgICBBU1NFUlQodmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgIGF1dG8g
dmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnZhcmlhYmxlRGVjbGFyYXRpb24sIHZhcmlh
YmxlTmFtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODE2MCBJbXBsZW1lbnQgcXVhbGlmaWVycy4KLSAgICBpZiAodmFyaWFibGVEZWNsYXJh
dGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9p
bmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlv
bi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
KnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7IH07
XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4
cHJlc3Npb24ubGVmdCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChh
c3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNh
bGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGl0ZXIgPSBtX2hvaXN0
ZWRWYXJpYWJsZXMuZmluZCgmY2FsbEV4cHJlc3Npb24pOwotICAgIFJFTEVBU0VfQVNTRVJUKGl0
ZXIgIT0gbV9ob2lzdGVkVmFyaWFibGVzLmVuZCgpKTsKLSAgICBhdXRvJiB2YXJpYWJsZXMgPSBp
dGVyLT52YWx1ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMo
KS5zaXplKCkgPD0gdmFyaWFibGVzLnNpemUoKSk7Ci0gICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJs
ZU5hbWU+IGFyZ3VtZW50TmFtZXM7Ci0KLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3VsdE5h
bWU7Ci0gICAgaWYgKCFtYXRjaGVzKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLCBtX2lu
dHJpbnNpY3Mudm9pZFR5cGUoKSkpCi0gICAgICAgIHJlc3VsdE5hbWUgPSB2YXJpYWJsZXMubGFz
dCgpLm5hbWU7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCk7ICsraSkg
ewotICAgICAgICBhcmd1bWVudE5hbWVzLmFwcGVuZCh2YXJpYWJsZXNbaV0ubmFtZSk7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFyaWFibGVzW2ldLm5hbWUsICIgPSAoIik7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKVtpXSk7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIpOwotICAgIH0KLQotICAgIGlm
IChpczxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0
aW9uKCkpKSB7Ci0gICAgICAgIGlubGluZU5hdGl2ZUZ1bmN0aW9uKG1fc3RyaW5nQnVpbGRlciwg
ZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVzc2lvbi5m
dW5jdGlvbigpKSwgYXJndW1lbnROYW1lcywgcmVzdWx0TmFtZSwgbV90eXBlTmFtZXIpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5k
KCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9
IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChpdGVyYXRvci0+dmFsdWUsICcoJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZhcmlhYmxlc1tpXS5uYW1lKTsKLSAgICAg
ICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgfQotCi0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lvbikKLXsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgYm9vbCByYW5PbmNlID0gZmFs
c2U7Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkg
ewotICAgICAgICBpZiAocmFuT25jZSkKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7Ci0gICAgICAgIHJhbk9uY2UgPSB0cnVlOwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJykn
KTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RGVyZWZl
cmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKigiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VF
eHByZXNzaW9uLnBvaW50ZXIoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhw
cmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKCgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24ubGVmdCgp
KTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0KLSAgICBzd2l0Y2ggKGxvZ2lj
YWxFeHByZXNzaW9uLnR5cGUoKSkgewotICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6
VHlwZTo6QW5kOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgJiYgIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6T3I6Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiB8fCAiKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIpKSIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24pCi17Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiISgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9n
aWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24p
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgbWFkZSB0byB3b3JrLiBJdCBwcm9i
YWJseSBzaG91bGQgYmUgdXNpbmcgdGhlIGxhc3QgbGVmdFZhbHVlIHRvby4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODM4Ci0gICAgYXV0byBtYW5n
bGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6UG9pbnRl
clR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRU
eXBlKCkpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1l
LCAieyAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
IDEgfSIpOwotICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KG1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7Ci0gICAgICAgIGF1
dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICIgeyAiKTsKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIuZGF0YSgpLCAiLCBhcnJheVR5cGUubnVt
RWxlbWVudHMoKSwgIiB9Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICIgeyAmIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAxIH0iKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFr
ZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiYoIik7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUo
KSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiBy
ZWFkTW9kaWZ5V3JpdGUpCi17Ci0gICAgLyoKLSAgICAgKiAgMS4gRXZhbHVhdGUgbV9sZWZ0VmFs
dWUKLSAgICAgKiAgMi4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9vbGRWYWx1ZQotICAgICAqICAz
LiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgotICAgICAqICA0LiBBc3NpZ24gdGhlIHJl
c3VsdCB0byBtX25ld1ZhbHVlCi0gICAgICogIDUuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbGVm
dFZhbHVlCi0gICAgICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgotICAgICAqICA3
LiBSZXR1cm4gdGhlIHJlc3VsdAotICAgICAqLwotCi0gICAgYXV0byBpdGVyID0gbV9ob2lzdGVk
VmFyaWFibGVzLmZpbmQoJnJlYWRNb2RpZnlXcml0ZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRl
ciAhPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZW5kKCkpOwotICAgIGF1dG8mIHZhcmlhYmxlcyA9IGl0
ZXItPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhYmxlcy5zaXplKCkgPT0gMik7Ci0K
LSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG9sZFZhbHVlVmFyaWFibGUgPSB2YXJpYWJsZXNbMF0u
bmFtZTsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG5ld1ZhbHVlVmFyaWFibGUgPSB2YXJpYWJs
ZXNbMV0ubmFtZTsKLQotICAgIG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcmVhZE1vZGlmeVdyaXRl
Lm9sZFZhbHVlKCksIG9sZFZhbHVlVmFyaWFibGUpOwotICAgIG1fdmFyaWFibGVNYXBwaW5nLmFk
ZCgmcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlKCksIG5ld1ZhbHVlVmFyaWFibGUpOwotCi0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChvbGRWYWx1ZVZhcmlhYmxlLCAiID0gIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRN
b2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIsIG5ld1ZhbHVlVmFyaWFibGUsICIgPSAiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVh
ZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5s
ZWZ0VmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbmV3VmFsdWVW
YXJpYWJsZSwgIiwgIik7Ci0KLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRl
LnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhw
cmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNh
dGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA/ICgiKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA6ICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVy
bmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgQVNTRVJUKHZh
cmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Zhcmlh
YmxlTWFwcGluZy5maW5kKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAgIEFTU0VS
VChpdGVyYXRvciAhPSBtX3ZhcmlhYmxlTWFwcGluZy5lbmQoKSk7Ci0KLSAgICBNYW5nbGVkVmFy
aWFibGVOYW1lIHZhcmlhYmxlTmFtZSA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKHZhcmlhYmxlTmFtZSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjplbWl0Q29uc3RhbnRFeHByZXNzaW9uU3RyaW5nKEFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAgY29uc3RhbnRFeHByZXNzaW9uLnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRl
Z2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCh1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAg
ICAgICB9LAotICAgICAgICBbJl0oQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewot
ICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChmbG9hdExpdGVyYWwudmFsdWUoKSk7
Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0
ZXJhbCkgewotICAgICAgICAgICAgaWYgKGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgidHJ1ZSIpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImZhbHNlIik7Ci0gICAg
ICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAgICAgICAgIEFTU0VSVChl
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSksICI6
OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKSk7Ci0gICAgICAgIH0KLSAgICAp
KTsKLX0KLQotY2xhc3MgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZpbmFsIDogcHVi
bGljIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVyRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEludHJpbnNp
Y3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1h
dGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkK
LSAgICAgICAgOiBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoc3RyaW5nQnVpbGRlciwgaW50cmlu
c2ljcywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIGxheW91dCkKLSAgICAgICAgLCBtX21h
dGNoZWRTZW1hbnRpY3MoV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSkKLSAgICB7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNy
ZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJy
aWRlOwotCi0gICAgTWF0Y2hlZFJlbmRlclNlbWFudGljcyBtX21hdGNoZWRTZW1hbnRpY3M7Ci19
OwotCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1dG8gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gTWFuZ2xlZFZhcmlhYmxlTmFtZSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICB9OwotICAg
IGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFk
ZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRp
Y3MudmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRl
cyk7Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZy
YWdtZW50U2hhZGVyKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVudEVudHJ5UG9p
bnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5h
bWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZENvbG9yQXR0YWNobWVudHMpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi1jbGFzcyBDb21w
dXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlciB7Ci1wdWJsaWM6Ci0gICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBU
eXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBN
YW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRjaGVkQ29tcHV0ZVNlbWFu
dGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotICAgICAgICA6IEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIs
IGZ1bmN0aW9uTWFwcGluZywgbGF5b3V0KQotICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhX
VEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBNYXRj
aGVkQ29tcHV0ZVNlbWFudGljcyBtX21hdGNoZWRTZW1hbnRpY3M7Ci19OwotCi1zdGQ6OnVuaXF1
ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24m
IGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRvIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSA9IFt0aGlzXSgpIC0+IE1hbmdsZWRWYXJpYWJsZU5hbWUgewotICAgICAgICByZXR1cm4gdGhp
cy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgfTsKLSAgICBpZiAoJmZ1bmN0aW9u
RGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Muc2hhZGVyKQotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBv
aW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LXN0YXRpYyBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlv
bk5hbWU+IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBwaW5nKFByb2dyYW0mIHByb2dyYW0pCi17
Ci0gICAgdW5zaWduZWQgbnVtRnVuY3Rpb25zID0gMDsKLSAgICBIYXNoTWFwPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+IGZ1bmN0aW9uTWFwcGluZzsKLSAg
ICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0
aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZnVuY3Rpb25NYXBwaW5nLmFkZCgm
ZnVuY3Rpb25EZWZpbml0aW9uLCBNYW5nbGVkRnVuY3Rpb25OYW1lIHsgbnVtRnVuY3Rpb25zKysg
fSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uTWFwcGluZzsKLX0KLQotc3RhdGljIHZv
aWQgZW1pdFNoYXJlZE1ldGFsRnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIs
IFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBjb25zdCBIYXNoU2V0PEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+JiByZWFjaGFibGVGdW5jdGlvbnMsIEhhc2hNYXA8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFw
cGluZykKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmICghZnVuY3Rpb25EZWZpbml0aW9uLT5l
bnRyeVBvaW50VHlwZSgpICYmIHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25E
ZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGRlY2xhcmVGdW5jdGlvbihzdHJpbmdCdWlsZGVyLCBm
dW5jdGlvbkRlZmluaXRpb24sIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nKTsKLSAgICB9Ci0K
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLX0KLQotY2xhc3MgUmVhY2hhYmxlRnVu
Y3Rpb25zR2F0aGVyZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25z
LmFkZCgmZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24p
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7
Ci0gICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24u
ZnVuY3Rpb24oKSkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpOwotICAg
IH0KLQotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4gdGFrZVJlYWNoYWJs
ZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUobV9yZWFjaGFibGVGdW5jdGlvbnMpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiBtX3JlYWNo
YWJsZUZ1bmN0aW9uczsKLX07Ci0KLVJlbmRlck1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0
TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJv
Z3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRj
aGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBhdXRvJiB2ZXJ0ZXhTaGFkZXJF
bnRyeVBvaW50ID0gKm1hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyOwotICAgIGF1dG8qIGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludCA9IG1hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXI7
Ci0KLSAgICBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciByZWFjaGFibGVGdW5jdGlvbnNHYXRo
ZXJlcjsKLSAgICByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdCh2ZXJ0
ZXhTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBpZiAoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KQot
ICAgICAgICByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdCgqZnJhZ21l
bnRTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNo
YWJsZUZ1bmN0aW9uc0dhdGhlcmVyLnRha2VSZWFjaGFibGVGdW5jdGlvbnMoKTsKLQotICAgIGF1
dG8gZnVuY3Rpb25NYXBwaW5nID0gZ2VuZXJhdGVNZXRhbEZ1bmN0aW9uc01hcHBpbmcocHJvZ3Jh
bSk7Ci0gICAgCi0gICAgZW1pdFNoYXJlZE1ldGFsRnVuY3Rpb25zKHN0cmluZ0J1aWxkZXIsIHBy
b2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxlRnVuY3Rpb25zLCBmdW5jdGlvbk1hcHBpbmcpOwot
Ci0gICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcihzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLmludHJpbnNpY3MoKSwgdHlwZU5hbWVyLCBmdW5j
dGlvbk1hcHBpbmcsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7Ci0gICAgZm9y
IChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMo
KSkgewotICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRl
ZmluaXRpb24pKQotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLnZpc2l0KGZ1
bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgZnVuY3Rpb25NYXBwaW5n
LmdldCgmdmVydGV4U2hhZGVyRW50cnlQb2ludCksIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA/
IGZ1bmN0aW9uTWFwcGluZy5nZXQoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KSA6IE1hbmdsZWRG
dW5jdGlvbk5hbWUgeyAwIH0gfTsKLX0KLQotQ29tcHV0ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50
cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgUHJvZ3Jh
bSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNz
JiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgYXV0byYgZW50cnlQ
b2ludCA9ICptYXRjaGVkU2VtYW50aWNzLnNoYWRlcjsKLQotICAgIFJlYWNoYWJsZUZ1bmN0aW9u
c0dhdGhlcmVyIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyOwotICAgIHJlYWNoYWJsZUZ1bmN0
aW9uc0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KGVudHJ5UG9pbnQpOwotICAgIGF1dG8gcmVhY2hh
YmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIudGFrZVJlYWNoYWJsZUZ1
bmN0aW9ucygpOwotCi0gICAgYXV0byBmdW5jdGlvbk1hcHBpbmcgPSBnZW5lcmF0ZU1ldGFsRnVu
Y3Rpb25zTWFwcGluZyhwcm9ncmFtKTsKLSAgICBlbWl0U2hhcmVkTWV0YWxGdW5jdGlvbnMoc3Ry
aW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFjaGFibGVGdW5jdGlvbnMsIGZ1bmN0
aW9uTWFwcGluZyk7Ci0KLSAgICBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLmludHJpbnNpY3MoKSwg
dHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxh
eW91dCk7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRh
aW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyLnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsg
ZnVuY3Rpb25NYXBwaW5nLmdldCgmZW50cnlQb2ludCkgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
TWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldy
aXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDQ5MzlmMTYxNmU4ZTEyM2I1
OWUzZTc4MGI1Zjk2Njk0NzA4ODMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRnVuY3Rpb25Xcml0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpY01hdGNo
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBQcm9ncmFtOwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBUeXBlTmFtZXI7Ci0KLXN0
cnVjdCBSZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgewotICAgIE1hbmdsZWRGdW5jdGlv
bk5hbWUgbWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1hbmdsZWRGdW5jdGlvbk5h
bWUgbWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotUmVuZGVyTWV0YWxGdW5jdGlv
bkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiwgUHJvZ3JhbSYs
IFR5cGVOYW1lciYsIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiwgTGF5b3V0Jik7Ci0KLXN0cnVj
dCBDb21wdXRlTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIHsKLSAgICBNYW5nbGVkRnVuY3Rpb25O
YW1lIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKLX07Ci1Db21wdXRlTWV0YWxGdW5jdGlvbkVudHJ5
UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiwgUHJvZ3JhbSYsIFR5cGVO
YW1lciYsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYsIExheW91dCYpOwotCi19Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNYW5nbGVkTmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWFuZ2xlZE5h
bWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNjA0ZWQ3M2UwMjczODYxM2Rj
NmRjYmIzYzQ1ODM0YzIyZGU5ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xNYW5nbGVkTmFtZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
TWV0YWwgewotCi1zdHJ1Y3QgTWFuZ2xlZFZhcmlhYmxlTmFtZSB7Ci0gICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKTsgfQotICAgIHVuc2lnbmVkIHZhbHVlIHsgc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBwcmVmaXggPSAidmFyaWFibGUiOwotfTsKLQotc3RydWN0IE1hbmdsZWRUeXBlTmFtZSB7Ci0g
ICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVm
aXggPSAidHlwZSI7Ci19OwotCi1zdHJ1Y3QgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIHsK
LSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHBy
ZWZpeCA9ICJzdHJ1Y3R1cmVFbGVtZW50IjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVkRW51bWVyYXRp
b25NZW1iZXJOYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIHByZWZpeCA9ICJlbnVtZXJhdGlvbk1lbWJlciI7Ci19OwotCi1zdHJ1Y3Qg
TWFuZ2xlZEZ1bmN0aW9uTmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAiZnVuY3Rpb24iOwotCi0gICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyhwcmVmaXgsIHZhbHVlKTsgfQotfTsK
LQotdXNpbmcgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgPSBWYXJpYW50PE1hbmdsZWRUeXBlTmFt
ZSwgU3RyaW5nPjsKLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hM
U0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgTWFuZ2xlZE5hbWVUeXBlPgotY2xhc3MgTWFuZ2xlZE5hbWVBZGFwdG9yIHsK
LXB1YmxpYzoKLSAgICBNYW5nbGVkTmFtZUFkYXB0b3IoTWFuZ2xlZE5hbWVUeXBlIG5hbWUpCi0g
ICAgICAgIDogbV9uYW1lIHsgbmFtZSB9Ci0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIHsgcmV0dXJuIHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCkgKyBsZW5ndGhP
ZkludGVnZXJBc1N0cmluZyhtX25hbWUudmFsdWUpOyB9Ci0gICAgYm9vbCBpczhCaXQoKSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3
cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCksIHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6
OnByZWZpeCkpOwotICAgICAgICB3cml0ZUludGVnZXJUb0J1ZmZlcihtX25hbWUudmFsdWUsIGRl
c3RpbmF0aW9uICsgc3RybGVuKE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIE1hbmdsZWROYW1lVHlwZSBtX25hbWU7Ci19OwotCi10ZW1wbGF0ZTw+IGNs
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFZhcmlh
YmxlTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6TWFuZ2xlZFZhcmlhYmxlTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFZhcmlhYmxlTmFtZSBuYW1lKQot
ICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVt
cGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRUeXBlTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUgbmFtZSkKLSAg
ICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLXRlbXBs
YXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5n
bGVkU3RydWN0dXJlRWxlbWVudE5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRv
cjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZT4gewot
cHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFu
Z2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVBZGFw
dG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVB
ZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFt
ZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6TWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5
cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVy
TmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAg
ICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExT
TDo6TWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUsIHZvaWQ+IDogcHVibGljIE1hbmdsZWROYW1l
QWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWU+IHsKLXB1
YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmds
ZWRGdW5jdGlvbk5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkK
LSAgICB7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lLCB2b2lkPiB7Ci1w
dWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFs
OjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSYgbmFtZSkKLSAgICAgICAgOiBtX25hbWUgeyBuYW1l
IH0KLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbmFtZSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUmIG1hbmdsZWRUeXBlTmFtZSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBzdHJsZW4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5n
bGVkVHlwZU5hbWU6OnByZWZpeCkgKyBsZW5ndGhPZkludGVnZXJBc1N0cmluZyhtYW5nbGVkVHlw
ZU5hbWUudmFsdWUpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0KLQotICAgIGJvb2wgaXM4Qml0KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbmFtZSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUmKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZd
IChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcu
aXM4Qml0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRl
c3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihtX25hbWUsCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJiBt
YW5nbGVkVHlwZU5hbWUpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhkZXN0aW5hdGlvbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpwcmVmaXgpLCBzdHJsZW4oV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6OnByZWZpeCkpOwotICAgICAgICAgICAgICAg
IHdyaXRlSW50ZWdlclRvQnVmZmVyKG1hbmdsZWRUeXBlTmFtZS52YWx1ZSwgZGVzdGluYXRpb24g
KyBzdHJsZW4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6OnByZWZpeCkp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3IHsgc3RyaW5nIH0uZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoZGVzdGluYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRP
ck5hdGl2ZVR5cGVOYW1lJiBtX25hbWU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YWZlYmRhNTZkNmQ2NzMwMThkODMxYWY2NDMy
ZjM3ZDE2MTdiMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENv
ZGVHZW5lcmF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xNZXRhbENvZGVHZW5lcmF0
b3IuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25Xcml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7
Ci0KLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wTWV0YWxDb2RlID0gZmFsc2U7Ci0KLXN0YXRp
YyBTdHJpbmdWaWV3IG1ldGFsQ29kZVByb2xvZ3VlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nVmll
dyB7Ci0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfc3RkbGliPlxuIgotICAgICAgICAiI2luY2x1
ZGUgPG1ldGFsX2F0b21pYz5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9tYXRoPlxuIgot
ICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3JlbGF0aW9uYWw+XG4iCi0gICAgICAgICIjaW5jbHVk
ZSA8bWV0YWxfY29tcHV0ZT5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF90ZXh0dXJlPlxu
IgotICAgICAgICAiXG4iCi0gICAgICAgICJ1c2luZyBuYW1lc3BhY2UgbWV0YWw7XG4iCi0gICAg
ICAgICJcbiIKLSAgICAgICAgInRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgQ29scywgaW50IFJv
d3M+XG4iCi0gICAgICAgICJzdHJ1Y3QgV1NMTWF0cml4XG4iCi0gICAgICAgICJ7XG4iCi0gICAg
ICAgICIgICAgdmVjPFQsIFJvd3M+IGNvbHVtbnNbQ29sc107XG4iCi0gICAgICAgICIgICAgcHJp
dmF0ZTpcbiIKLSAgICAgICAgIiAgICBwdWJsaWM6XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdT
TE1hdHJpeCgpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1h
dHJpeCgpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0
cml4KGNvbnN0IHRocmVhZCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9
IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCBkZXZpY2Ug
V1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAg
ICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgY29uc3RhbnQgV1NMTWF0cml4PFQsIENv
bHMsIFJvd3M+ICZ0aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGlu
ZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkZ3JvdXAgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0
aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgo
Y29uc3QgdGhyZWFkIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBk
ZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgZGV2aWNlIFdT
TE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAg
ICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgY29uc3RhbnQgV1NMTWF0cml4PFQsIENv
bHMsIFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5s
aW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWRncm91cCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4g
JnRoYXQpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBwdWJsaWM6XG4iCi0g
ICAgICAgICIgICAgaW5saW5lIHRocmVhZCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIp
IHRocmVhZFxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNv
bHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBkZXZp
Y2UgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSBkZXZpY2VcbiIKLSAgICAgICAgIiAg
ICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAi
ICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgdGhyZWFkZ3JvdXAgdmVjPFQsIFJvd3M+ICZv
cGVyYXRvcltdKGludCByKSB0aHJlYWRncm91cFxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAg
ICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAg
ICAgICAiICAgIGlubGluZSBjb25zdCB0aHJlYWQgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGlu
dCByKSBjb25zdCB0aHJlYWRcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAg
IHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBp
bmxpbmUgY29uc3QgZGV2aWNlIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgY29uc3Qg
ZGV2aWNlXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29s
dW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0
IGNvbnN0YW50IHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgY29uc3QgY29uc3RhbnRc
biIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3Jd
O1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgdGhyZWFk
Z3JvdXAgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSBjb25zdCB0aHJlYWRncm91cFxu
IgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07
XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAifTtcbiIKLQotCi0gICAgfTsKLQotfQot
Ci1zdGF0aWMgdm9pZCBkdW1wTWV0YWxDb2RlSWZOZWVkZWQoU3RyaW5nQnVpbGRlciYgc3RyaW5n
QnVpbGRlcikKLXsKLSAgICBpZiAoZHVtcE1ldGFsQ29kZSkgewotICAgICAgICBkYXRhTG9nTG4o
IkdlbmVyYXRlZCBNZXRhbCBjb2RlOiAiKTsKLSAgICAgICAgZGF0YUxvZ0xuKHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKSk7Ci0gICAgfQotfQotCi1SZW5kZXJNZXRhbENvZGUgZ2VuZXJhdGVNZXRh
bENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRT
ZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbENvZGVQcm9sb2d1ZSgpKTsKLQot
ICAgIFR5cGVOYW1lciB0eXBlTmFtZXIocHJvZ3JhbSk7Ci0gICAgdHlwZU5hbWVyLmVtaXRNZXRh
bFR5cGVzKHN0cmluZ0J1aWxkZXIpOwotICAgIAotICAgIGF1dG8gbWV0YWxGdW5jdGlvbkVudHJ5
UG9pbnRzID0gTWV0YWw6OmVtaXRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFt
LCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7Ci0KLSAgICBk
dW1wTWV0YWxDb2RlSWZOZWVkZWQoc3RyaW5nQnVpbGRlcik7Ci0KLSAgICByZXR1cm4geyBXVEZN
b3ZlKHN0cmluZ0J1aWxkZXIpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cy5tYW5n
bGVkVmVydGV4RW50cnlQb2ludE5hbWUpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50
cy5tYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZSkgfTsKLX0KLQotQ29tcHV0ZU1ldGFsQ29k
ZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9ncmFtLCBNYXRjaGVkQ29tcHV0ZVNlbWFu
dGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewotICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbENvZGVQ
cm9sb2d1ZSgpKTsKLQotICAgIFR5cGVOYW1lciB0eXBlTmFtZXIocHJvZ3JhbSk7Ci0gICAgdHlw
ZU5hbWVyLmVtaXRNZXRhbFR5cGVzKHN0cmluZ0J1aWxkZXIpOwotCi0gICAgYXV0byBtZXRhbEZ1
bmN0aW9uRW50cnlQb2ludHMgPSBNZXRhbDo6ZW1pdE1ldGFsRnVuY3Rpb25zKHN0cmluZ0J1aWxk
ZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0
KTsKLQotICAgIGR1bXBNZXRhbENvZGVJZk5lZWRlZChzdHJpbmdCdWlsZGVyKTsKLQotICAgIHJl
dHVybiB7IFdURk1vdmUoc3RyaW5nQnVpbGRlciksIFdURk1vdmUobWV0YWxGdW5jdGlvbkVudHJ5
UG9pbnRzLm1hbmdsZWRFbnRyeVBvaW50TmFtZSkgfTsKLX0KLQotfQotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdl
bmVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzQ4NzYxN2NiOTA1YWUy
ZWIwNjk0MGExNzRlNDA5NTgyYjhjM2JiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxp
bmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpY01hdGNoZXIuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsK
LQotc3RydWN0IFJlbmRlck1ldGFsQ29kZSB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNvdXJj
ZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsK
LSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lOwot
fTsKLS8vIENhbid0IGZhaWwuIEFueSBmYWlsdXJlIGNoZWNrcyBuZWVkIHRvIGJlIGRvbmUgZWFy
bGllciwgaW4gdGhlIGJhY2tlbmQtYWdub3N0aWMgcGFydCBvZiB0aGUgY29tcGlsZXIuCi1SZW5k
ZXJNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYsIE1hdGNoZWRSZW5kZXJTZW1h
bnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmKTsKLQotc3RydWN0IENvbXB1dGVNZXRh
bENvZGUgewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWFuZ2xlZEZ1bmN0
aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci19OwotLy8gQ2FuJ3QgZmFpbC4gQW55IGZh
aWx1cmUgY2hlY2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJsaWVyLCBpbiB0aGUgYmFja2VuZC1hZ25v
c3RpYyBwYXJ0IG9mIHRoZSBjb21waWxlci4KLUNvbXB1dGVNZXRhbENvZGUgZ2VuZXJhdGVNZXRh
bENvZGUoUHJvZ3JhbSYsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGlj
cywgTGF5b3V0Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmQyYzhhODdiYzY3YzlmZTYyY2UzZTY0NGE2NjRh
ODY0YzQ2NWRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbldy
aXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldI
TFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3Mu
aCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGljIFN0cmluZyBtYXBGdW5jdGlvbk5hbWUo
U3RyaW5nJiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiZGR4IikK
LSAgICAgICAgcmV0dXJuICJkZmR4Il9zdHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiZGR5
IikKLSAgICAgICAgcmV0dXJuICJkZmR5Il9zdHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAi
YXNpbnQiKQotICAgICAgICByZXR1cm4gImFzX3R5cGU8aW50MzJfdD4iX3N0cjsKLSAgICBpZiAo
ZnVuY3Rpb25OYW1lID09ICJhc3VpbnQiKQotICAgICAgICByZXR1cm4gImFzX3R5cGU8dWludDMy
X3Q+Il9zdHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiYXNmbG9hdCIpCi0gICAgICAgIHJl
dHVybiAiYXNfdHlwZTxmbG9hdD4iX3N0cjsKLSAgICByZXR1cm4gZnVuY3Rpb25OYW1lOwotfQot
Ci1zdGF0aWMgU3RyaW5nIGF0b21pY05hbWUoU3RyaW5nIGlucHV0KQotewotICAgIGlmIChpbnB1
dCA9PSAiQWRkIikKLSAgICAgICAgcmV0dXJuICJmZXRjaF9hZGQiX3N0cjsKLSAgICBpZiAoaW5w
dXQgPT0gIkFuZCIpCi0gICAgICAgIHJldHVybiAiZmV0Y2hfYW5kIl9zdHI7Ci0gICAgaWYgKGlu
cHV0ID09ICJFeGNoYW5nZSIpCi0gICAgICAgIHJldHVybiAiZXhjaGFuZ2UiX3N0cjsKLSAgICBp
ZiAoaW5wdXQgPT0gIk1heCIpCi0gICAgICAgIHJldHVybiAiZmV0Y2hfbWF4Il9zdHI7Ci0gICAg
aWYgKGlucHV0ID09ICJNaW4iKQotICAgICAgICByZXR1cm4gImZldGNoX21pbiJfc3RyOwotICAg
IGlmIChpbnB1dCA9PSAiT3IiKQotICAgICAgICByZXR1cm4gImZldGNoX29yIl9zdHI7Ci0gICAg
QVNTRVJUKGlucHV0ID09ICJYb3IiKTsKLSAgICAgICAgcmV0dXJuICJmZXRjaF94b3IiX3N0cjsK
LX0KLQotc3RhdGljIGludCB2ZWN0b3JMZW5ndGgoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpbnQgdmVjdG9yTGVuZ3RoID0gMTsKLSAg
ICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSA9PSAyKTsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpD
b25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
MV0pKTsKLSAgICAgICAgdmVjdG9yTGVuZ3RoID0gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJl
c3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pLmludGVnZXJM
aXRlcmFsKCkudmFsdWUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHZlY3Rvckxlbmd0aDsKLX0KLQot
c3RhdGljIGNvbnN0IGNoYXIqIHZlY3RvclN1ZmZpeChpbnQgdmVjdG9yTGVuZ3RoKQotewotICAg
IHN3aXRjaCAodmVjdG9yTGVuZ3RoKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICByZXR1cm4gIiI7
Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gIjIiOwotICAgIGNhc2UgMzoKLSAgICAgICAg
cmV0dXJuICIzIjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQodmVjdG9yTGVuZ3RoID09
IDQpOwotICAgICAgICByZXR1cm4gIjQiOwotICAgIH0KLX0KLQotZW51bSBjbGFzcyBTYW1wbGVU
eXBlIHsKLSAgICBTYW1wbGUsCi0gICAgU2FtcGxlTGV2ZWwsCi0gICAgU2FtcGxlQmlhcywKLSAg
ICBTYW1wbGVHcmFkCi19OwotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxTYW1wbGVUeXBlPiBzYW1w
bGVUeXBlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKQotewotICAgIGlmIChmdW5jdGlvbk5h
bWUgPT0gIlNhbXBsZSIpCi0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGU7Ci0gICAg
aWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlTGV2ZWwiKQotICAgICAgICByZXR1cm4gU2FtcGxl
VHlwZTo6U2FtcGxlTGV2ZWw7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlQmlhcyIp
Ci0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVCaWFzOwotICAgIGlmIChmdW5jdGlv
bk5hbWUgPT0gIlNhbXBsZUdyYWQiKQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxl
R3JhZDsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi12b2lkIGlubGluZU5hdGl2ZUZ1
bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgY29uc3QgVmVjdG9yPE1hbmds
ZWRWYXJpYWJsZU5hbWU+JiBhcmdzLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5
cGVOYW1lciYgdHlwZU5hbWVyKQotewotICAgIGF1dG8gYXNNYXRyaXhUeXBlID0gWyZdIChBU1Q6
OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24q
IHsKLSAgICAgICAgYXV0byYgcmVhbFR5cGUgPSB1bm5hbWVkVHlwZS51bmlmeU5vZGUoKTsKLSAg
ICAgICAgaWYgKCFyZWFsVHlwZS5pc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgYXV0byYgbWF5YmVNYXRyaXhUeXBlID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlYWxUeXBlKTsKLSAgICAgICAgaWYg
KG1heWJlTWF0cml4VHlwZS5pc01hdHJpeCgpKQotICAgICAgICAgICAgcmV0dXJuICZtYXliZU1h
dHJpeFR5cGU7Ci0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfTsKLQotICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmlzQ2FzdCgpKSB7Ci0gICAgICAgIGF1dG8mIHJldHVy
blR5cGUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKTsKLSAgICAgICAgYXV0byBt
ZXRhbFJldHVyblR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShyZXR1cm5U
eXBlKTsKLQotICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxSZXR1
cm5UeXBlTmFtZSwgIiB7IH0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMSkgewotICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9ICpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwotCi0gICAgICAgICAgICBhdXRv
IGlzRW51bWVyYXRpb25EZWZpbml0aW9uID0gW10gKGF1dG8mIHR5cGUpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaXM8QVNUOjpOYW1lZFR5cGU+KHR5cGUpICYmIGlzPEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOwotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZpZWRSZXR1cm5UeXBlID0gcmV0dXJuVHlwZS51
bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpc0VudW1lcmF0aW9uRGVmaW5pdGlvbih1bmlm
aWVkUmV0dXJuVHlwZSkgJiYgIWlzRW51bWVyYXRpb25EZWZpbml0aW9uKHBhcmFtZXRlclR5cGUu
dW5pZnlOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0
aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih1bmlmaWVkUmV0dXJuVHlwZSkpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVyblR5cGVOYW1lLCAiPigoIik7
Ci0gICAgICAgICAgICAgICAgYm9vbCBsb29wZWRPbmNlID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBoYXNaZXJvQ2FzZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYg
bWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChsb29wZWRPbmNlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiB8fCAiKTsKLSAgICAgICAgICAgICAgICAgICAgaGFz
WmVyb0Nhc2UgfD0gIW1lbWJlci5nZXQoKS52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzBdLCAiID09ICIsIG1lbWJlci5nZXQoKS52YWx1ZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgbG9vcGVkT25jZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoaGFzWmVyb0Nhc2UsIGhhc1plcm9D
YXNlKTsKLQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpID8gIiwgYXJn
c1swXSwgIiA6IDApIik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIj4o
IiwgYXJnc1swXSwgIikiKTsKLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGF1dG8qIG1hdHJpeFR5cGUgPSBhc01hdHJpeFR5cGUocmV0dXJuVHlwZSkpIHsK
LSAgICAgICAgICAgIC8vIFdlJ3JlIGVpdGhlciBjb25zdHJ1Y3Rpbmcgd2l0aCBhbGwgaW5kaXZp
ZHVhbCBlbGVtZW50cywgb3Igd2l0aAotICAgICAgICAgICAgLy8gdmVjdG9ycyBmb3IgZWFjaCBj
b2x1bW4uCi0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAg
ICAgICBpZiAoYXJncy5zaXplKCkgPT0gbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5z
KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpbmcgd2l0aCB2ZWN0b3JzIGZvciBl
YWNoIGNvbHVtbi4KLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Mu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgIi5jb2x1bW5zWyIsIGksICJdID0g
IiwgYXJnc1tpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpbmcgd2l0aCBhbGwgZWxlbWVudHMuCi0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJncy5zaXplKCkgPT0gbWF0cml4VHlwZS0+bnVtYmVy
T2ZNYXRyaXhDb2x1bW5zKCkgKiBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeFJvd3MoKSk7Ci0K
LSAgICAgICAgICAgICAgICBzaXplX3QgYXJnTnVtYmVyID0gMDsKLSAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygp
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtYXRy
aXhUeXBlLT5udW1iZXJPZk1hdHJpeFJvd3MoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJnTnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQocmVzdWx0TmFtZSwgIi5jb2x1bW5zWyIsIGksICJdWyIsIGosICJdID0gIiwgYXJn
c1thcmdOdW1iZXJdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYXJnTnVtYmVyOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWV0YWxSZXR1cm5UeXBlTmFtZSwgJygnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbaV0p
OwotICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5pc09w
ZXJhdG9yKCkpIHsKLSAgICAgICAgYXV0byBvcGVyYXRvck5hbWUgPSBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yIl9zdHIubGVuZ3RoKCkpOwotCi0g
ICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMSkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBvayB0byBkbyBzaW5jZSB0aGUgYXJncyB0
byB0aGlzIGZ1bmN0aW9uIGFyZSBhbGwgdGVtcHMuCi0gICAgICAgICAgICAvLyBTbyB0aGluZ3Mg
bGlrZSArKyBhbmQgLS0gYXJlIG9rIHRvIGRvLgotCi0gICAgICAgICAgICBpZiAoYXV0byogbWF0
cml4VHlwZSA9IGFzTWF0cml4VHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkp
IHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJp
eENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBv
cGVyYXRvck5hbWUsIGFyZ3NbMF0sICdbJywgaSwgJ10nKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJykn
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG9wZXJhdG9yTmFtZSwgYXJnc1swXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpID09IDIpOwotICAgICAgICBpZiAoYXV0byogbGVmdE1hdHJpeCA9IGFzTWF0cml4
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBtYXRyaXggPG9wPiBtYXRyaXgKLSAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZWZ0TWF0cml4LT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdzWzBdLCAnWycsIGksICJdICIsIG9wZXJh
dG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnWycsIGksICddJyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcp
Jyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8b3A+
IHNjYWxhcgotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlZnRNYXRyaXgtPm51bWJlck9m
TWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9
ICIsIGFyZ3NbMF0sICdbJywgaSwgIl0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KGF1dG8qIHJpZ2h0TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgQVNTRVJUKCFhc01h
dHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBl
KCkpKTsKLSAgICAgICAgICAgIC8vIHNjYWxhciA8b3A+IG1hdHJpeAotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByaWdodE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1l
LCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sx
XSwgJ1snLCBpLCAnXScpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIHNjYWxhciA8b3A+IHNjYWxhcgotICAgICAgICAgICAgLy8gdmVjdG9yIDxvcD4g
dmVjdG9yCi0gICAgICAgICAgICAvLyB2ZWN0b3IgPG9wPiBzY2FsYXIKLSAgICAgICAgICAgIC8v
IHNjYWxhciA8b3A+IHZlY3RvcgotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgJygnLCBhcmdzWzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdz
WzFdLCAnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiY29zIgotICAgICAgICB8fCBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic2luIgotICAgICAgICB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAidGFuIgotICAgICAgICB8fCBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYWNvcyIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzaW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdGFuIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiY29zaCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNpbmgiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJ0YW5oIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiY2VpbCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImV4cCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5uYW1lKCkgPT0gImZsb29yIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAibG9nIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAicm91bmQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJ0cnVuYyIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gImRkeCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gImRkeSIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
Imlzbm9ybWFsIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiaXNmaW5pdGUiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJpc2luZiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gImlzbmFuIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiYXNpbnQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJhc3VpbnQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJhc2Zsb2F0IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAibGVuZ3RoIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSksICcoJywgYXJnc1swXSwgJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAicG93IiB8fCBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbjIiKSB7Ci0gICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCksICcoJywgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgJyknKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiY2xhbXAiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7Ci0KLSAgICAgICAgaWYgKGF1dG8qIG1hdHJp
eFR5cGUgPSBhc01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgYm9v
bCByYW5PbmNlID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeFJv
d3MoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYW5PbmNlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHJhbk9uY2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE5hbWUsICdbJywgaSwgIl1b
IiwgaiwgIl0gPSBjbGFtcCgiLCBhcmdzWzBdLCAnWycsIGksICJdWyIsIGosICJdLCAiLCBhcmdz
WzFdLCAnWycsIGksICJdWyIsIGosICJdLCAiLCBhcmdzWzJdLCAnWycsIGksICJdWyIsIGosICJd
KSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICIpIik7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiY2xh
bXAoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgJyknKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKLSAg
ICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICIodGhyZWFk
Z3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV9kZXZpY2UpLCB0aHJlYWRncm91cF9iYXJyaWVy
KG1lbV9mbGFnczo6bWVtX3RocmVhZGdyb3VwKSwgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxh
Z3M6Om1lbV90ZXh0dXJlKSkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiRGV2aWNlTWVtb3J5QmFycmllcldp
dGhHcm91cFN5bmMiKSB7Ci0gICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICAidGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV9kZXZpY2UpIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIkdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKSB7Ci0gICAg
ICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAidGhyZWFkZ3Jv
dXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCkiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdGFy
dHNXaXRoKCJJbnRlcmxvY2tlZCJfc3RyKSkgewotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlIikgewotICAg
ICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNp
emUoKSA9PSA0KTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICIoYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCgiLCBhcmdzWzBd
LCAiLCAmIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQs
IG1lbW9yeV9vcmRlcl9yZWxheGVkKSwgIiwKLSAgICAgICAgICAgICAgICAnKicsIGFyZ3NbM10s
ICIgPSAiLCBhcmdzWzFdLCAnKScpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNp
emUoKSA9PSAzKTsKLSAgICAgICAgYXV0byBuYW1lID0gYXRvbWljTmFtZShuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIkludGVybG9ja2VkIl9zdHIubGVuZ3RoKCkp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAnKicsIGFyZ3Nb
Ml0sICIgPSBhdG9taWNfIiwgbmFtZSwgIl9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdz
WzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdXRvIHNhbXBsZVR5cGUgPSBXSExTTDo6TWV0YWw6OnNhbXBsZVR5cGUobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpKSB7Ci0gICAgICAgIHNpemVfdCBiYXNlQXJn
dW1lbnRDb3VudCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoKnNhbXBsZVR5cGUpIHsKLSAgICAgICAg
Y2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6Ci0gICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9
IDM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVM
ZXZlbDoKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVCaWFzOgotICAgICAgICAgICAg
YmFzZUFyZ3VtZW50Q291bnQgPSA0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U2FtcGxlVHlwZTo6U2FtcGxlR3JhZDoKLSAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0g
NTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291
bnQgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJh
c2VBcmd1bWVudENvdW50ICsgMSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvJiB0ZXh0dXJlVHlw
ZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5h
bWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUo
KS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byYgbG9jYXRpb25UeXBlID0gZG93bmNhc3Q8
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgpLT51bmlmeU5vZGUo
KSkpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKGxv
Y2F0aW9uVHlwZSk7Ci0gICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gcmV0dXJu
VmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVyblR5cGUpOwotCi0gICAgICAgIGludCBh
cmd1bWVudEluZGV4ID0gMDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1
bWVudEluZGV4XSwgIi5zYW1wbGUoIiwgYXJnc1thcmd1bWVudEluZGV4ICsgMV0sICIsICIpOwot
ICAgICAgICBhcmd1bWVudEluZGV4ICs9IDI7Ci0KLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlz
VGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0
aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudElu
ZGV4XSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDEpLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXhdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkpOwotICAgICAgICAgICAgKythcmd1bWVudElu
ZGV4OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFy
Z3NbYXJndW1lbnRJbmRleCsrXSk7Ci0KLSAgICAgICAgc3dpdGNoICgqc2FtcGxlVHlwZSkgewot
ICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZToKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiwgbGV2ZWwoIiwgYXJnc1thcmd1bWVudEluZGV4KytdLCAiKSIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlQmlhczoKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGJpYXMoIiwgYXJnc1thcmd1bWVudElu
ZGV4KytdLCAiKSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlw
ZTo6U2FtcGxlR3JhZDoKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc0N1YmVUZXh0dXJl
KCkpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnRjdWJl
KCIsIGFyZ3NbYXJndW1lbnRJbmRleF0sICIsICIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAi
KSIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsIGdyYWRpZW50MmQoIiwgYXJnc1thcmd1bWVudEluZGV4XSwgIiwgIiwgYXJnc1thcmd1
bWVudEluZGV4ICsgMV0sICIpIik7Ci0gICAgICAgICAgICBhcmd1bWVudEluZGV4ICs9IDI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgKyAx
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1thcmd1bWVudElu
ZGV4KytdKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikiKTsKLSAgICAgICAgaWYg
KCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgp
KTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJMb2FkIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotCi0gICAgICAgIGF1dG8m
IHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25j
YXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvJiBsb2NhdGlvblR5cGUg
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkt
PnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gbG9jYXRpb25WZWN0b3JMZW5ndGggPSB2ZWN0
b3JMZW5ndGgobG9jYXRpb25UeXBlKTsKLSAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IGRvd25j
YXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4o
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkudW5pZnlOb2RlKCkpKTsKLSAgICAgICAg
YXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgocmV0dXJuVHlwZSk7Ci0gICAg
ICAgIGF1dG8gbG9jYXRpb25UeXBlTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bG9jYXRpb25UeXBlKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcsIGFyZ3Nb
MV0sICIgPSAiKTsKLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIsIGFyZ3NbMV0sICIsICIsIGxvY2F0aW9u
VHlwZU5hbWUsICcoJyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9u
VmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpLCAiLCBsb2NhdGlvblR5cGVOYW1lLCAnKCcpOwotCi0gICAgICAg
ICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAi
ZGVwdGgiX3N0ciB9OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZl
Y3Rvckxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgYXJnc1swXSwgIi5nZXRf
IiwgZGltZW5zaW9uc1tpXSwgIigpIC0gMSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgYXJnc1swXSwgIi5nZXRfYXJy
YXlfc2l6ZSgpIC0gMSkpIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobG9j
YXRpb25WZWN0b3JMZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiY2xhbXAoIiwgYXJnc1sxXSwgIiwgMCwgIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSAt
IDEpIik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiY2xhbXAoIiwgYXJnc1sxXSwgIiwgIiwgbG9jYXRpb25UeXBlTmFtZSwgIigwLCAw
Iik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIDAiKTsKLSAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygnLCBh
cmdzWzBdLCAiLmdldF93aWR0aCgpIC0gMSwgIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0KCkgLSAx
Iik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbMF0sICIuZ2V0
X2RlcHRoKCkgLSAxIik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikp
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiLCBhcmdzWzBdLCAiLnJlYWQoIik7Ci0KLSAgICAgICAgaWYgKHRleHR1cmVUeXBl
LmlzVGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxl
bmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0
b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzFdLCAnLicsICJ4
eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50
KCIsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5n
dGggLSAxLCAxKSwgJyknKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCksICco
JywgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAg
ICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0
b3JMZW5ndGgpKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkgPT0gImxvYWQiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgImF0b21pY19sb2FkX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsIG1l
bW9yeV9vcmRlcl9yZWxheGVkKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJzdG9yZSIpIHsKLSAgICAgICAg
QVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAy
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiYXRvbWljX3N0
b3JlX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1lbW9yeV9vcmRlcl9y
ZWxheGVkKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHZXREaW1lbnNpb25zIikgewotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotCi0gICAgICAgIGF1dG8mIHRleHR1cmVUeXBlID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBl
PihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlm
eU5vZGUoKSkpOwotCi0gICAgICAgIHNpemVfdCBpbmRleCA9IDE7Ci0gICAgICAgIGJvb2wgaGFz
TWlwTGV2ZWwgPSAhdGV4dHVyZVR5cGUuaXNXcml0YWJsZVRleHR1cmUoKSAmJiB0ZXh0dXJlVHlw
ZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMTsKLSAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAg
ICAgICAgICAgKytpbmRleDsKLSAgICAgICAgY29uc3QgTWFuZ2xlZFZhcmlhYmxlTmFtZSYgd2lk
dGhOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICsraW5kZXg7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gaGVpZ2h0TmFtZTsKLSAgICAgICAgaWYgKHRleHR1
cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAyKSB7Ci0gICAgICAgICAgICBoZWlnaHROYW1l
ID0gYXJnc1tpbmRleF07Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gZGVwdGhOYW1lOwotICAgICAgICBp
ZiAodGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpID49IDMpIHsKLSAgICAgICAgICAgIGRl
cHRoTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGVsZW1lbnRzTmFtZTsK
LSAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAg
IGVsZW1lbnRzTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAg
ICAgfQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG51bWJlck9m
TGV2ZWxzTmFtZTsKLSAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgp
ICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKSB7Ci0gICAgICAgICAgICBu
dW1iZXJPZkxldmVsc05hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICsraW5kZXg7Ci0g
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGluZGV4ID09IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAnKicsIHdpZHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRo
KCIpOwotICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChhcmdzWzFdKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLQot
ICAgICAgICBpZiAoaGVpZ2h0TmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICpoZWlnaHROYW1lLCAiID0gIiwgYXJnc1swXSwg
Ii5nZXRfaGVpZ2h0KCIpOwotICAgICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVwdGhOYW1lKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAq
IiwgKmRlcHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCIpOwotICAgICAgICAg
ICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGFyZ3NbMV0pOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoZWxlbWVudHNOYW1lKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKmVsZW1lbnRzTmFtZSwgIiA9ICIs
IGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChu
dW1iZXJPZkxldmVsc05hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgICAgICIsICoiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiID0gIiwgYXJnc1sw
XSwgIi5nZXRfbnVtX21pcF9sZXZlbHMoKSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyIikgewotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJ
bXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0aGVyUmVkIikgewotICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiU2FtcGxlQ21wIikg
ewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiU2FtcGxl
Q21wTGV2ZWxaZXJvIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiU3RvcmUiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJHYXRoZXJBbHBoYSIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckJsdWUiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlz
Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJDbXAiKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVu
dCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJDbXBSZWQiKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEz
IEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAg
aWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJHcmVlbiIpIHsK
LSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwK
LQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5j
dGlvbldyaXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDgxMTBhZTU5YmFj
MDE0YzNiYjU3ZDQ5MDAxZWUxNDI3ODExOGVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSW50cmluc2ljczsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci0KLX0KLQotbmFt
ZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgVHlwZU5hbWVyOwotCi12b2lkIGlubGluZU5hdGl2ZUZ1
bmN0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mLCBj
b25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIGFyZ3VtZW50TmFtZXMsIE1hbmdsZWRW
YXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJik7Ci0KLX0KLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBl
V3JpdGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2OGNiZDFlY2Q1ZWFj
NGI5ZmIzOWVkYzg2NTk5YjExNTUwN2RjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRp
dmVUeXBlV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotU3RyaW5nIHdy
aXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJ2b2lk
IikKLSAgICAgICAgcmV0dXJuICJ2b2lkIl9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImJvb2wiKQotICAgICAgICByZXR1cm4gImJvb2wiX3N0cjsKLSAgICBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidWludCIpCi0gICAgICAgIHJldHVy
biAidWludDMyX3QiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiaW50IikKLSAgICAgICAgcmV0dXJuICJpbnQzMl90Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImZsb2F0IikKLSAgICAgICAgcmV0dXJuICJmbG9hdCJf
c3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfaW50
IikKLSAgICAgICAgcmV0dXJuICJhdG9taWNfaW50Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY191aW50IikKLSAgICAgICAgcmV0dXJuICJhdG9t
aWNfdWludCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJz
YW1wbGVyIikKLSAgICAgICAgcmV0dXJuICJzYW1wbGVyIl9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInZlY3RvciIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBB
U1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAgICAgICBhdXRvJiB0
eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwotICAgICAgICBhdXRvJiB1bmlmeU5v
ZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgYXV0byYgbmFtZWRUeXBl
ID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGF1dG8mIHBh
cmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRU
eXBlKTsKLSAgICAgICAgYXV0byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAg
ICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuICJib29sIjsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAi
dWludCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICAgICAgICAgIGlmIChw
YXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiaW50IikKLSAgICAgICAgICAgICAgICByZXR1cm4gImlu
dCI7Ci0gICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImZsb2F0Iik7
Ci0gICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICAgICAgfSkoKTsKLSAgICAgICAgQVNT
RVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pKTsKLSAgICAgICAgYXV0byYgY29u
c3RhbnRFeHByZXNzaW9uID0gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pOwotICAgICAgICBhdXRvJiBpbnRl
Z2VyTGl0ZXJhbCA9IGNvbnN0YW50RXhwcmVzc2lvbi5pbnRlZ2VyTGl0ZXJhbCgpOwotICAgICAg
ICBhdXRvIHN1ZmZpeCA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICAgICAgc3dpdGNoIChp
bnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICIyIl9zdHI7Ci0gICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICIzIl9zdHI7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IEFTU0VSVChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpID09IDQpOwotICAgICAgICAgICAgICAgIHJl
dHVybiAiNCJfc3RyOwotICAgICAgICAgICAgfQotICAgICAgICB9KSgpOwotICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhwcmVmaXgsIHN1ZmZpeCk7Ci0gICAgfQotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJtYXRyaXgiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAzKTsKLSAgICAgICAgQVNT
RVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICAgICAgYXV0byYgdHlw
ZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBl
RGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsKLSAgICAgICAgYXV0byYgdW5pZnlOb2Rl
ID0gdHlwZVJlZmVyZW5jZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9
IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBhdXRvJiBwYXJh
bWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlw
ZSk7Ci0gICAgICAgIGF1dG8gcHJlZml4ID0gKFsmXSB7Ci0gICAgICAgICAgICBpZiAocGFyYW1l
dGVyVHlwZS5uYW1lKCkgPT0gImJvb2wiKQotICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7
Ci0gICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImZsb2F0Iik7Ci0g
ICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICAgICAgfSkoKTsKLQotICAgICAgICByZXR1
cm4gbWFrZVN0cmluZygiV1NMTWF0cml4PCIsIHByZWZpeCwgIiwgIiwgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLm51bWJlck9mTWF0cml4Q29sdW1ucygpLCAiLCAiLCBuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubnVtYmVyT2ZNYXRyaXhSb3dzKCksICI+Iik7Ci0gICAgfQotICAgIEFTU0VSVChuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAgIGF1dG8mIHR5cGVSZWZlcmVu
Y2UgPSBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0
aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgYXV0byBwcmVmaXggPSAoWyZdKCkgLT4gU3Ry
aW5nIHsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1
cmUxRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUxZCJfc3RyOwotICAgICAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMUQiKQotICAgICAgICAg
ICAgcmV0dXJuICJ0ZXh0dXJlMWQiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxREFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4
dHVyZTFkX2FycmF5Il9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJSV1RleHR1cmUxREFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTFk
X2FycmF5Il9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJUZXh0dXJlMkQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMmQiX3N0cjsKLSAgICAg
ICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEIikKLSAg
ICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgICAgICByZXR1
cm4gInRleHR1cmUyZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gInRl
eHR1cmUyZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiVGV4dHVyZTNEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTNkIl9zdHI7
Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUz
RCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUzZCJfc3RyOwotICAgICAgICBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZUN1YmUiKQotICAgICAgICAgICAg
cmV0dXJuICJ0ZXh0dXJlY3ViZSJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQotICAgICAgICAgICAgcmV0dXJuICJkZXB0
aDJkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJU
ZXh0dXJlRGVwdGgyREFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAiZGVwdGgyZF9hcnJheSJf
c3RyOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4
dHVyZURlcHRoQ3ViZSIpOwotICAgICAgICByZXR1cm4gImRlcHRoY3ViZSJfc3RyOwotICAgIH0p
KCk7Ci0gICAgYXV0byBpbm5lclR5cGUgPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAgaWYg
KHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludCIpCi0gICAgICAgICAgICByZXR1cm4gInVp
bnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDIiKQot
ICAgICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNl
LT5uYW1lKCkgPT0gInVpbnQzIikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAg
ICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50NCIpCi0gICAgICAgICAgICBy
ZXR1cm4gInVpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAi
aW50IikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVm
ZXJlbmNlLT5uYW1lKCkgPT0gImludDIiKQotICAgICAgICAgICAgcmV0dXJuICJpbnQiX3N0cjsK
LSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50MyIpCi0gICAgICAgICAg
ICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09
ICJpbnQ0IikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBl
UmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0IikKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQi
X3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiZmxvYXQyIikKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2Ut
Pm5hbWUoKSA9PSAiZmxvYXQzIikKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAg
ICAgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiZmxvYXQ0Iik7Ci0gICAgICAg
IHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICB9KSgpOwotICAgIGF1dG8gaXNSZWFkV3JpdGUgPSBu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxRCIKLSAgICAgICAgfHwg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIKLSAgICAg
ICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiCi0gICAg
ICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXki
Ci0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNE
IjsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcmVmaXgsICc8JywgaW5uZXJUeXBlLCAiLCAiLCBp
c1JlYWRXcml0ZSA/ICJhY2Nlc3M6OnJlYWRfd3JpdGUiIDogImFjY2Vzczo6c2FtcGxlIiwgJz4n
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTkwN2U5NjJkNjQyMWUzZmNkNGI0M2MxNmI4Y2VjY2QwZmM1NTg0Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0KLX0KLQotbmFtZXNwYWNl
IE1ldGFsIHsKLQotU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYpOwotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQyNzcxNTQxNDQ0ODYwMzM4YTQ4NzY4NWM1ZDJmMTAzOWRhNTM2NTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xUeXBlTmFtZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMQ2FsbEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZVdyaXRlci5oIgotI2lu
Y2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotVHlwZU5hbWVyOjpUeXBlTmFtZXIo
UHJvZ3JhbSYgcHJvZ3JhbSkKLSAgICA6IG1fcHJvZ3JhbShwcm9ncmFtKQotewotfQotCi1UeXBl
TmFtZXI6On5UeXBlTmFtZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChB
U1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBl
TmFtZSh1bm5hbWVkVHlwZSk7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlwZU1hcHBpbmcuYWRkKCZlbnVtZXJhdGlvbkRl
ZmluaXRpb24sIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIGZvciAoYXV0
byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25N
ZW1iZXJzKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2VudW1lcmF0aW9uTWVtYmVy
TWFwcGluZy5hZGQoJnN0YXRpY19jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXImPihlbnVtZXJh
dGlvbk1lbWJlciksIGdlbmVyYXRlTmV4dEVudW1lcmF0aW9uTWVtYmVyTmFtZSgpKTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9
Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24pOwotCi0gICAgewot
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmZW51bWVyYXRp
b25EZWZpbml0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRU
eXBlPj4geyBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpIH0pOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLX0KLQotdm9p
ZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24pCi17Ci0gICAgLy8gTmF0aXZlIHR5cGUgZGVjbGFyYXRpb25zIGFscmVhZHkg
aGF2ZSBuYW1lcywgYW5kIGFyZSBhbHJlYWR5IGRlY2xhcmVkIGluIE1ldGFsLgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRkKCZuYXRpdmVUeXBlRGVjbGFyYXRpb24s
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7IH0pOwot
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0K
LXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVy
ZURlZmluaXRpb24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmFtZWRU
eXBlTWFwcGluZy5hZGQoJnN0cnVjdHVyZURlZmluaXRpb24sIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAg
ICB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5
cGU+PiBuZWlnaGJvcnM7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0
cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3N0cnVjdHVyZUVsZW1lbnRNYXBwaW5nLmFkZCgmc3RydWN0dXJlRWxl
bWVudCwgZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKSk7Ci0gICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAg
ICAgbmVpZ2hib3JzLmFwcGVuZChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5hZGQoJnN0cnVjdHVy
ZURlZmluaXRpb24sIFdURk1vdmUobmVpZ2hib3JzKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVO
YW1lcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAg
ewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmFtZWRUeXBlTWFwcGluZy5hZGQoJnR5cGVE
ZWZpbml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0gICAgVmlzaXRvcjo6
dmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2RlcGVuZGVuY3lHcmFwaC5hZGQoJnR5cGVEZWZpbml0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4geyB0eXBlRGVmaW5pdGlvbi50eXBlKCkgfSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uKQotewotICAgIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKGV4cHJlc3Npb24ucmVzb2x2
ZWRUeXBlKCkpOwotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotfQotCi12b2lkIFR5
cGVOYW1lcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0g
ICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJndW1lbnQpOwotfQotCi1TdHJpbmcgVHlwZU5hbWVy
OjptYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbikKLXsKLSAgICByZXR1cm4gd3JpdGVOYXRpdmVUeXBlKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbik7Ci19Ci0KLXN0YXRpYyBBU1Q6OlVubmFtZWRUeXBlKiBwYXJlbnQoQVNUOjpV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgc3dpdGNoICh1bm5hbWVkVHlwZS5raW5k
KCkpIHsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5h
bWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6
OkFycmF5UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5u
YW1lZFR5cGU6OktpbmQ6OkFycmF5OgotICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6QXJy
YXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6Z2Vu
ZXJhdGVVbmlxdWVkVHlwZU5hbWUoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0g
ICAgYXV0byogcGFyZW50VW5uYW1lZFR5cGUgPSBwYXJlbnQodW5uYW1lZFR5cGUpOwotICAgIGlm
IChwYXJlbnRVbm5hbWVkVHlwZSkKLSAgICAgICAgZ2VuZXJhdGVVbmlxdWVkVHlwZU5hbWUoKnBh
cmVudFVubmFtZWRUeXBlKTsKLQotICAgIG1fdW5uYW1lZFR5cGVNYXBwaW5nLmVuc3VyZShVbm5h
bWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0sIFsmXSB7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0
ZU5leHRUeXBlTmFtZSgpOwotICAgIH0pOwotfQotCi1jbGFzcyBNZXRhbFR5cGVEZWNsYXJhdGlv
bldyaXRlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBNZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlcihTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1l
KEFTVDo6TmFtZWRUeXBlJik+JiYgbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUpCi0gICAgICAgIDog
bV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShXVEZNb3ZlKG1hbmdsZWROYW1lRm9yTmFtZWRUeXBl
KSkKLSAgICAgICAgLCBtX3N0cmluZ0J1aWxkZXIoc3RyaW5nQnVpbGRlcikKLSAgICB7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBz
dHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoc3RydWN0dXJl
RGVmaW5pdGlvbiksICI7XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRP
ck5hdGl2ZVR5cGVOYW1lKEFTVDo6TmFtZWRUeXBlJik+IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5
cGU7Ci0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdCdWlsZGVyOwotfTsKLQotdm9pZCBUeXBl
TmFtZXI6OmVtaXRNZXRhbFR5cGVEZWNsYXJhdGlvbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlcikKLXsKLSAgICBNZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlciBtZXRhbFR5cGVEZWNsYXJh
dGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBbJl0oQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkg
LT4gTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgewotICAgICAgICByZXR1cm4gbWFuZ2xlZE5hbWVG
b3JUeXBlKG5hbWVkVHlwZSk7Ci0gICAgfSk7Ci0gICAgbWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0
ZXIuVmlzaXRvcjo6dmlzaXQobV9wcm9ncmFtKTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OmVtaXRV
bm5hbWVkVHlwZURlZmluaXRpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIE1hbmdsZWRUeXBlTmFtZSBtYW5nbGVkTmFtZSwgSGFz
aFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVk
VHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVkVHlwZXMpCi17Ci0gICAgaWYgKGVtaXR0ZWRVbm5hbWVk
VHlwZXMuY29udGFpbnMoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc3dpdGNoICh1bm5hbWVkVHlwZS5raW5kKCkpIHsKLSAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6IHsKLSAgICAgICAgYXV0byYgdHlw
ZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwot
Ci0gICAgICAgIGF1dG8mIHBhcmVudCA9IHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCk7Ci0g
ICAgICAgIGF1dG8gcGFyZW50TWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUodHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX2RlcGVu
ZGVuY3lHcmFwaC5maW5kKCZwYXJlbnQpOwotICAgICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9k
ZXBlbmRlbmN5R3JhcGguZW5kKCkpOwotICAgICAgICBlbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihz
dHJpbmdCdWlsZGVyLCBwYXJlbnQsIGl0ZXJhdG9yLT52YWx1ZSwgZW1pdHRlZE5hbWVkVHlwZXMs
IGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0
eXBlZGVmICIsIHBhcmVudE1hbmdsZWROYW1lLCAnICcsIG1hbmdsZWROYW1lLCAiO1xuIik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBv
aW50ZXI6IHsKLSAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50
ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50ID0gcG9pbnRlclR5
cGUuZWxlbWVudFR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1hbmds
ZWROYW1lRm9yVHlwZShwYXJlbnQpOwotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9u
KHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgcGFyZW50TWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5
cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywg
cGFyZW50TWFuZ2xlZE5hbWUsICIqICIsIG1hbmdsZWROYW1lLCAiO1xuIik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJl
bmNlOiB7Ci0gICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50
ID0gYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50
TWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUocGFyZW50KTsKLSAgICAgICAgZW1pdFVu
bmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIHBhcmVudE1hbmdsZWRO
YW1lLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAic3RydWN0ICIsIG1hbmdsZWROYW1l
LCAiIHtcbiIKLSAgICAgICAgICAgICIgICAgIiwgdG9TdHJpbmcoYXJyYXlSZWZlcmVuY2VUeXBl
LmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwYXJlbnRNYW5nbGVkTmFtZSwgIiogcG9pbnRlcjtcbiIK
LSAgICAgICAgICAgICIgICAgdWludDMyX3QgbGVuZ3RoO1xuIgotICAgICAgICAgICAgIn07XG4i
Ci0gICAgICAgICk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1l
ZFR5cGU6OktpbmQ6OkFycmF5OiB7Ci0gICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0
PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50ID0g
YXJyYXlUeXBlLnR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1hbmds
ZWROYW1lRm9yVHlwZShwYXJlbnQpOwotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9u
KHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgcGFyZW50TWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5
cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgidHlwZWRlZiBhcnJheTwiLCBwYXJlbnRNYW5nbGVkTmFtZSwgIiwgIiwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCksICI+ICIsIG1hbmdsZWROYW1lLCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIH0KLQotICAgIGVtaXR0ZWRVbm5hbWVkVHlwZXMuYWRkKFVubmFtZWRUeXBlS2V5IHsg
dW5uYW1lZFR5cGUgfSk7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5p
dGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRU
eXBlLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4mIG5l
aWdoYm9ycywgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFz
aFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVkVHlwZXMpCi17Ci0gICAgaWYgKGVt
aXR0ZWROYW1lZFR5cGVzLmNvbnRhaW5zKCZuYW1lZFR5cGUpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKGF1dG8mIHVubmFtZVR5cGUgOiBuZWlnaGJvcnMpCi0gICAgICAgIGVtaXRVbm5h
bWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgdW5uYW1lVHlwZSwgbWFuZ2xlZE5hbWVG
b3JUeXBlKHVubmFtZVR5cGUpLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBl
cyk7Ci0KLSAgICBzd2l0Y2ggKG5hbWVkVHlwZS5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6TmFt
ZWRUeXBlOjpLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb246IHsKLSAgICAgICAgYXV0byYgZW51
bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+
KG5hbWVkVHlwZSk7Ci0gICAgICAgIGF1dG8mIGJhc2VUeXBlID0gZW51bWVyYXRpb25EZWZpbml0
aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKSwg
IiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5
cGUpKSwgIiB7XG4iKTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJl
cihlbnVtZXJhdGlvbk1lbWJlciksICIgPSAiLCBlbnVtZXJhdGlvbk1lbWJlci5nZXQoKS52YWx1
ZSgpLCAiLFxuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRUeXBlOjpLaW5kOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246IHsKLSAgICAgICAgLy8gTmF0aXZlIHR5cGVzIGFscmVhZHkgaGF2ZSBk
ZWZpbml0aW9ucy4gVGhlcmUncyBub3RoaW5nIHRvIGRvLgotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjogewot
ICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiIHtc
biIpOwotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZp
bml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSks
ICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAi
O1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRUeXBlOjpLaW5kOjpUeXBlRGVmaW5pdGlv
bjogewotICAgICAgICBhdXRvJiB0eXBlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6VHlwZURl
ZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInR5
cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywg
bWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICBlbWl0dGVkTmFtZWRUeXBlcy5hZGQoJm5hbWVkVHlwZSk7Ci19
Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlcikKLXsKLSAgICBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4gZW1pdHRl
ZE5hbWVkVHlwZXM7Ci0gICAgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4gZW1pdHRlZFVubmFtZWRU
eXBlczsKLSAgICBmb3IgKGF1dG8mIFtuYW1lZFR5cGUsIG5laWdoYm9yc10gOiBtX2RlcGVuZGVu
Y3lHcmFwaCkKLSAgICAgICAgZW1pdE5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwg
Km5hbWVkVHlwZSwgbmVpZ2hib3JzLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRU
eXBlcyk7Ci0gICAgZm9yIChhdXRvJiBbdW5uYW1lZFR5cGVLZXksIG1hbmdsZWROYW1lXSA6IG1f
dW5uYW1lZFR5cGVNYXBwaW5nKQotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0
cmluZ0J1aWxkZXIsIHVubmFtZWRUeXBlS2V5LnVubmFtZWRUeXBlKCksIG1hbmdsZWROYW1lLCBl
bWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci19Ci0KLU1hbmdsZWRUeXBl
TmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6OlVubmFtZWRUeXBlJiB1bm5h
bWVkVHlwZSkKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV91bm5hbWVkVHlwZU1hcHBpbmcuZmlu
ZChVbm5hbWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0pOwotICAgIEFTU0VSVChpdGVyYXRvciAh
PSBtX3VubmFtZWRUeXBlTWFwcGluZy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1
ZTsKLX0KLQotTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZv
clR5cGUoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICBpZiAoaXM8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBtYW5nbGVkTmFt
ZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkp
OwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX25hbWVkVHlwZU1hcHBpbmcuZmluZCgmbmFtZWRUeXBl
KTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9uYW1lZFR5cGVNYXBwaW5nLmVuZCgpKTsKLSAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1NYW5nbGVkRW51bWVyYXRpb25NZW1iZXJO
YW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcihBU1Q6OkVudW1l
cmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV9lbnVtZXJhdGlvbk1lbWJlck1hcHBpbmcuZmluZCgmZW51bWVyYXRpb25NZW1iZXIpOwotICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX2VudW1lcmF0aW9uTWVtYmVyTWFwcGluZy5lbmQoKSk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnRO
YW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KEFTVDo6U3RydWN0
dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9z
dHJ1Y3R1cmVFbGVtZW50TWFwcGluZy5maW5kKCZzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGluZy5lbmQoKSk7Ci0gICAgcmV0
dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OmVtaXRNZXRhbFR5cGVz
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQobV9w
cm9ncmFtKTsKLQotICAgIGVtaXRNZXRhbFR5cGVEZWNsYXJhdGlvbnMoc3RyaW5nQnVpbGRlcik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgZW1pdE1ldGFsVHlwZURlZmlu
aXRpb25zKHN0cmluZ0J1aWxkZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggN2RhZDFhZTgxMDQwNWFjYjU4ZGFmOTI3YjFjYzgyNmY2NGNjMTBjZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZUhhc2guaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBFbnVt
ZXJhdGlvbk1lbWJlcjsKLWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1jbGFzcyBUeXBlRGVmaW5pdGlvbjsK
LWNsYXNzIFVubmFtZWRUeXBlOwotCi19Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFjZSBN
ZXRhbCB7Ci0KLWNsYXNzIEJhc2VUeXBlTmFtZU5vZGU7Ci0KLWNsYXNzIFR5cGVOYW1lciA6IHBy
aXZhdGUgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgVHlwZU5hbWVyKFByb2dyYW0mKTsKLSAgICB2
aXJ0dWFsIH5UeXBlTmFtZXIoKTsKLQotICAgIHZvaWQgZW1pdE1ldGFsVHlwZXMoU3RyaW5nQnVp
bGRlciYpOwotCi0gICAgLy8gTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgY2FsbGluZyBlbWl0TWV0YWxU
eXBlcygpLgotICAgIFN0cmluZyBtYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24mKTsKLSAgICBNYW5nbGVkVHlwZU5hbWUgbWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6
VW5uYW1lZFR5cGUmKTsKLSAgICBNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSBtYW5nbGVkTmFtZUZv
clR5cGUoQVNUOjpOYW1lZFR5cGUmKTsKLSAgICBNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1l
IG1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYp
OwotICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBtYW5nbGVkTmFtZUZvclN0cnVjdHVy
ZUVsZW1lbnQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jik7Ci0KLSAgICBNYW5nbGVkVHlwZU5hbWUg
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSB7IHJldHVybiB7IG1fdHlwZUNvdW50KysgfTsgfQotICAg
IE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBnZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50
TmFtZSgpIHsgcmV0dXJuIHsgbV9zdHJ1Y3R1cmVFbGVtZW50Q291bnQrKyB9OyB9Ci0KLXByaXZh
dGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpUeXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0KLSAgICBNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIGdlbmVyYXRlTmV4
dEVudW1lcmF0aW9uTWVtYmVyTmFtZSgpIHsgcmV0dXJuIHsgbV9lbnVtZXJhdGlvbk1lbWJlckNv
dW50KysgfTsgfQotCi0gICAgdm9pZCBlbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWls
ZGVyJiwgQVNUOjpOYW1lZFR5cGUmLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6
OlVubmFtZWRUeXBlPj4mLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4mIGVtaXR0ZWROYW1lZFR5
cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0gICAg
dm9pZCBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6OlVubmFt
ZWRUeXBlJiwgTWFuZ2xlZFR5cGVOYW1lLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4mIGVtaXR0
ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFtZWRUeXBl
cyk7Ci0gICAgdm9pZCBlbWl0TWV0YWxUeXBlRGVjbGFyYXRpb25zKFN0cmluZ0J1aWxkZXImKTsK
LSAgICB2b2lkIGVtaXRNZXRhbFR5cGVEZWZpbml0aW9ucyhTdHJpbmdCdWlsZGVyJik7Ci0KLSAg
ICB2b2lkIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKEFTVDo6VW5uYW1lZFR5cGUmKTsKLQotICAg
IFByb2dyYW0mIG1fcHJvZ3JhbTsKLSAgICBIYXNoTWFwPFVubmFtZWRUeXBlS2V5LCBNYW5nbGVk
VHlwZU5hbWU+IG1fdW5uYW1lZFR5cGVNYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpOYW1lZFR5
cGUqLCBNYW5nbGVkVHlwZU5hbWU+IG1fbmFtZWRUeXBlTWFwcGluZzsKLSAgICBIYXNoTWFwPEFT
VDo6TmFtZWRUeXBlKiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVk
VHlwZT4+PiBtX2RlcGVuZGVuY3lHcmFwaDsKLSAgICBIYXNoTWFwPEFTVDo6RW51bWVyYXRpb25N
ZW1iZXIqLCBNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lPiBtX2VudW1lcmF0aW9uTWVtYmVy
TWFwcGluZzsKLSAgICBIYXNoTWFwPEFTVDo6U3RydWN0dXJlRWxlbWVudCosIE1hbmdsZWRTdHJ1
Y3R1cmVFbGVtZW50TmFtZT4gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGluZzsKLSAgICB1bnNpZ25l
ZCBtX3R5cGVDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2VudW1lcmF0aW9uTWVtYmVyQ291
bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9zdHJ1Y3R1cmVFbGVtZW50Q291bnQgeyAwIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YWQyZDlkN2ZmZmZjMzRlYzM2NGY2MTI1
NzQyNjI2YzA4NTc3NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0
ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBN
ZXRhbCB7Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIC8vIFJlc2VydmUgdGhlIGZpcnN0IGZldyBNVExCdWZmZXIgc2xvdHMgZm9y
IGFyZ3VtZW50IGJ1ZmZlcnMgZm9yIEdQVUJpbmRHcm91cHMuCi0gICAgcmV0dXJuIGluZGV4ICsg
ODsKLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDU0ZDBmMzViYzIxYTcwNmE2NzI2ZGQ5MTA5
NGY0MmRiZTg3NTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4
QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1l
dGFsIHsKLQotdW5zaWduZWQgY2FsY3VsYXRlVmVydGV4QnVmZmVySW5kZXgodW5zaWduZWQpOwot
Ci19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA0ZmQxZGZkNGRlZTk4MWZmNzI2
NmZhN2NkNjg0MzJjYjE0YTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVt
cGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQVNURHVtcGVyLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIG1fb3V0
LnByaW50bG4oKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVU
eXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0ubmF0
aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBpZiAocHJvZ3JhbS5uYXRpdmVUeXBlRGVj
bGFyYXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0pOwotICAgIGlmIChwcm9n
cmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4i
KTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLnN0cnVjdHVyZURlZmlu
aXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6
ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgdmlzaXQocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGlm
IChwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0
LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLmZ1
bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0KLSAgICBtX291dC5wcmludGxuKCk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAg
ICBCYXNlOjp2aXNpdCh1bm5hbWVkVHlwZSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewotICAgIEJhc2U6OnZpc2l0KG5hbWVkVHlwZSk7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVm
aW5pdGlvbikKLXsKLSAgICBtX291dC5wcmludCgidHlwZWRlZiAiLCB0eXBlRGVmaW5pdGlvbi5u
YW1lKCksICIgPSAiKTsKLSAgICB2aXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIG1f
b3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICBtX291dC5wcmludGxu
KG1faW5kZW50LCAic3RydWN0ICIsIHN0cnVjdHVyZURlZmluaXRpb24ubmFtZSgpLCAiIHsiKTsK
LSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVtcEluZGVudCgpOwotICAgICAgICBmb3Ig
KGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVs
ZW1lbnRzKCkpCi0gICAgICAgICAgICB2aXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICB9Ci0g
ICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgIn0iKTsKLSAgICBtX291dC5wcmludGxuKCk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVy
ZUVsZW1lbnQpCi17Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgIHZpc2l0KHN0cnVj
dHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiICIsIHN0cnVjdHVyZUVsZW1l
bnQubmFtZSgpKTsKLSAgICBpZiAoc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKQotICAgICAg
ICB2aXNpdCgqc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKTsKLSAgICBtX291dC5wcmludGxu
KCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50
LCAiZW51bSAiKTsKLSAgICB2aXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAg
ICBtX291dC5wcmludCgiIHsiKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBpbmRlbnQgPSBidW1w
SW5kZW50KCk7Ci0gICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8m
IGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVt
YmVycygpKSB7Ci0gICAgICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgICAgICBtX291dC5w
cmludCgiLCAiKTsKLSAgICAgICAgICAgIG1fb3V0LnByaW50bG4oKTsKLSAgICAgICAgICAgIG1f
b3V0LnByaW50KG1faW5kZW50KTsKLSAgICAgICAgICAgIHZpc2l0KGVudW1lcmF0aW9uTWVtYmVy
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fb3V0LnByaW50bG4oKTsKLSAgICBtX291dC5w
cmludGxuKG1faW5kZW50LCAifSIpOwotICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVy
KQotewotICAgIG1fb3V0LnByaW50KGVudW1lcmF0aW9uTWVtYmVyLm5hbWUoKSwgIiA9ICIsIGVu
dW1lcmF0aW9uTWVtYmVyLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBtX291dC5w
cmludChtX2luZGVudCk7Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgdmlzaXQoZnVuY3Rpb25EZWZpbml0
aW9uLmJsb2NrKCkpOwotICAgIG1fb3V0LnByaW50KCJcblxuIik7Ci19Ci0KLXZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgIG1fb3V0LnBy
aW50KCJuYXRpdmUgIik7Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uJj4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOwotICAgIG1fb3V0LnByaW50bG4o
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYg
ZnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICB2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLmF0
dHJpYnV0ZUJsb2NrKCkpOwotICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRU
eXBlKCkpCi0gICAgICAgIG1fb3V0LnByaW50KEFTVDo6dG9TdHJpbmcoKmZ1bmN0aW9uRGVjbGFy
YXRpb24uZW50cnlQb2ludFR5cGUoKSksICIgIik7Ci0gICAgdmlzaXQoZnVuY3Rpb25EZWNsYXJh
dGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCIgIiwgZnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCksICIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwYXJh
bWV0ZXIgOiBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKSkgewotICAgICAgICBpZiAo
b25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICBvbmNlID0gdHJ1
ZTsKLSAgICAgICAgdmlzaXQocGFyYW1ldGVyKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIiki
KTsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAgICB2aXNp
dCgqZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLSAgICBtX291dC5wcmludCgiICIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBtX291dC5wcmludChtX2luZGVudCwgIm5h
dGl2ZSB0eXBlZGVmICIpOwotICAgIG1fb3V0LnByaW50KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSkgewotICAgICAgICBtX291dC5wcmludCgiPCIpOwotICAgICAgICBib29sIG9uY2UgPSBm
YWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiBuYXRpdmVUeXBlRGVjbGFy
YXRpb24udHlwZUFyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAob25jZSkKLSAgICAgICAg
ICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgICAgIG9uY2UgPSB0cnVlOwotICAg
ICAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKLSAgICAgICAgfQotICAgICAgICBtX291dC5w
cmludCgiPiIpOwotICAgIH0KLSAgICBtX291dC5wcmludGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAg
bV9vdXQucHJpbnQodHlwZVJlZmVyZW5jZS5uYW1lKCkpOwotCi0gICAgaWYgKHR5cGVSZWZlcmVu
Y2UudHlwZUFyZ3VtZW50cygpLnNpemUoKSkgewotICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsK
LSAgICAgICAgbV9vdXQucHJpbnQoIjwiKTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlQXJndW1l
bnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkgewotICAgICAgICAgICAgaWYgKG9u
Y2UpCi0gICAgICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICBvbmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9vdXQucHJpbnQoIj4iKTsKLSAgICB9Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKLXsKLSAgICB2aXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlwZSkpOwotICAgIG1fb3V0LnByaW50KCIq
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYg
YXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJl
bmNlVHlwZSY+KGFycmF5UmVmZXJlbmNlVHlwZSkpOwotICAgIG1fb3V0LnByaW50KCJbXSIpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkKLXsK
LSAgICB2aXNpdChhcnJheVR5cGUudHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiWyIsIGFycmF5
VHlwZS5udW1FbGVtZW50cygpLCAiXSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKLXsKLSAgICBCYXNlOjp2aXNpdCh0eXBlQXJn
dW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJiBy
ZWZlcmVuY2VUeXBlKQotewotICAgIG1fb3V0LnByaW50KEFTVDo6dG9TdHJpbmcocmVmZXJlbmNl
VHlwZS5hZGRyZXNzU3BhY2UoKSksICIgIik7Ci0gICAgdmlzaXQocmVmZXJlbmNlVHlwZS5lbGVt
ZW50VHlwZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U2VtYW50aWMmIHNl
bWFudGljKQotewotICAgIG1fb3V0LnByaW50KCIgOiAiKTsKLSAgICBXVEY6OnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMpIHsK
LSAgICAgICAgdmlzaXQoYnVpbHRJblNlbWFudGljKTsKLSAgICB9LCBbJl0oQVNUOjpSZXNvdXJj
ZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KHJlc291cmNlU2Vt
YW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYg
c3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKSB7Ci0gICAgICAgIHZpc2l0KHNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKLSAgICAgICAgdmlzaXQoc3RhZ2VJbk91dFNlbWFu
dGljKTsKLSAgICB9KSwgc2VtYW50aWMpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKLXsKLSAgICBCYXNlOjp2
aXNpdChjb25zdGFudEV4cHJlc3Npb24pOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2spCi17Ci0gICAgaWYgKGF0dHJpYnV0ZUJs
b2NrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9vdXQucHJpbnQoIlsiKTsK
LSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRlIDogYXR0cmlidXRlQmxvY2spCi0gICAg
ICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKLSAgICBtX291dC5wcmludCgiXSAiKTsKLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdEluU2Vt
YW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQoYnVpbHRJblNlbWFudGljLnRvU3RyaW5nKCkpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJiByZXNvdXJj
ZVNlbWFudGljKQotewotICAgIG1fb3V0LnByaW50KHJlc291cmNlU2VtYW50aWMudG9TdHJpbmco
KSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYyYpCi17Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHdoZW4gd2UgaW1wbGVt
ZW50IGl0LgotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50
aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykKLXsKLSAgICBtX291dC5wcmludCgiYXR0cmlidXRlKCIs
IHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpLCAiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpCi17Ci0gICAgbV9vdXQu
cHJpbnQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17
Ci0gICAgbV9vdXQucHJpbnQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17
Ci0gICAgbV9vdXQucHJpbnQoZmxvYXRMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpCi17Ci0gICAg
aWYgKGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJ0cnVlIik7
Ci0gICAgZWxzZQotICAgICAgICBtX291dC5wcmludCgiZmFsc2UiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJikKLXsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKQotewotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJikKLXsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgbV9vdXQucHJpbnQoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmxlZnQoKSwgIi4iLCBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmlnaHQoKSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlv
bkF0dHJpYnV0ZSkKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUp
IHsKLSAgICAgICAgdmlzaXQobnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKTsKLSAgICB9KSwg
ZnVuY3Rpb25BdHRyaWJ1dGUpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRocmVhZHNBdHRyaWJ1dGUpCi17Ci0gICAgbV9v
dXQucHJpbnQoIm51bXRocmVhZHMoIiwgbnVtVGhyZWFkc0F0dHJpYnV0ZS53aWR0aCgpLCAiLCAi
LCBudW1UaHJlYWRzQXR0cmlidXRlLmhlaWdodCgpLCAiLCAiLCBudW1UaHJlYWRzQXR0cmlidXRl
LmRlcHRoKCksICIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJsb2NrJiBi
bG9jaykKLXsKLSAgICBtX291dC5wcmludGxuKCJ7Iik7Ci0gICAgewotICAgICAgICBhdXRvIGlu
ZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9j
ay5zdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAg
ICAgICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Ci0gICAgICAgICAgICBtX291dC5wcmludGxuKCI7
Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJ9Iik7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQotewot
ICAgIEJhc2U6OnZpc2l0KHN0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlN0YXRlbWVudExpc3QmIHN0YXRlbWVudExpc3QpCi17Ci0gICAgYm9vbCBvbmNlID0gZmFs
c2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBzdGF0ZW1lbnRMaXN0LnN0YXRlbWVudHMo
KSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCI7XG4iLCBt
X2luZGVudCk7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICB2aXNpdChzdGF0ZW1lbnQp
OwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QnJlYWsmKQotewotICAg
IG1fb3V0LnByaW50KCJicmVhayIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpD
b250aW51ZSYpCi17Ci0gICAgbV9vdXQucHJpbnQoImNvbnRpbnVlIik7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIG1fb3V0LnBy
aW50KCJ3aGlsZSAoIik7Ci0gICAgdmlzaXQod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAg
IG1fb3V0LnByaW50KCIpIik7Ci0gICAgdmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkKLXsKLSAg
ICBtX291dC5wcmludCgiZG8gIik7Ci0gICAgdmlzaXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAg
ICBtX291dC5wcmludCgiIHdoaWxlKCIpOwotICAgIHZpc2l0KGRvV2hpbGVMb29wLmNvbmRpdGlv
bmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoImZvciAoIik7Ci0g
ICAgdmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAgICBtX291dC5wcmludCgiOyAi
KTsKLSAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkKLSAgICAgICAgdmlzaXQoKmZvckxvb3Au
Y29uZGl0aW9uKCkpOwotICAgIG1fb3V0LnByaW50KCI7ICIpOwotICAgIGlmIChmb3JMb29wLmlu
Y3JlbWVudCgpKQotICAgICAgICB2aXNpdCgqZm9yTG9vcC5pbmNyZW1lbnQoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIikgIik7Ci0gICAgdmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGJvb2wg
c2tpcFBhcmVucyA9IGlzPEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pCi0gICAgICAg
IHx8IGlzPEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8fCBpczxBU1Q6
OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8fCBpczxBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAgICAgICB8fCBpczxBU1Q6OkNvbW1hRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5j
ZT4oZXhwcmVzc2lvbik7Ci0KLSAgICBpZiAoYXV0byogYW5ub3RhdGlvbiA9IGV4cHJlc3Npb24u
bWF5YmVUeXBlQW5ub3RhdGlvbigpKSB7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3NTcGFjZSA9
IGFubm90YXRpb24tPmxlZnRBZGRyZXNzU3BhY2UoKSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50
KCI8TFY6IiwgQVNUOjp0b1N0cmluZygqYWRkcmVzc1NwYWNlKSk7Ci0gICAgICAgIGVsc2UgaWYg
KGFubm90YXRpb24tPmlzQWJzdHJhY3RMZWZ0VmFsdWUoKSkKLSAgICAgICAgICAgIG1fb3V0LnBy
aW50KCI8QUxWIik7Ci0gICAgICAgIGVsc2UgaWYgKGFubm90YXRpb24tPmlzUmlnaHRWYWx1ZSgp
KQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxSViIpOwotCi0gICAgICAgIG1fb3V0LnByaW50
KCIsICIsIGV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkudG9TdHJpbmcoKSwgIj4iKTsKLQotICAg
ICAgICBza2lwUGFyZW5zID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFza2lwUGFyZW5zKQot
ICAgICAgICBtX291dC5wcmludCgiKCIpOwotICAgIEJhc2U6OnZpc2l0KGV4cHJlc3Npb24pOwot
ICAgIGlmICghc2tpcFBhcmVucykKLSAgICAgICAgbV9vdXQucHJpbnQoIikiKTsKLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsK
LSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGRv
dEV4cHJlc3Npb24pKTsKLSAgICBtX291dC5wcmludCgiLiIsIGRvdEV4cHJlc3Npb24uZmllbGRO
YW1lKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZSYgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgdmlzaXQoZ2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX291dC5wcmludCgiPT4iLCBnbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpLm5hbWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVy
Ojp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAgIHZp
c2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oaW5kZXhFeHBy
ZXNzaW9uKSk7Ci0gICAgbV9vdXQucHJpbnQoIlsiKTsKLSAgICB2aXNpdChpbmRleEV4cHJlc3Np
b24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0LnByaW50KCJdIik7Ci19Ci0KLXZvaWQg
QVNURHVtcGVyOjp2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgZXhwcmVzc2lv
bikKLXsKLSAgICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQot
ewotICAgIG1fb3V0LnByaW50KCJmYWxsdGhyb3VnaCIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6
dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgbV9vdXQucHJpbnQo
ImlmICgiKTsKLSAgICB2aXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBtX291
dC5wcmludCgiKSAiKTsKLSAgICB2aXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgIGlmIChp
ZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIgZWxzZSAiKTsK
LSAgICAgICAgdmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotICAgIH0KLX0KLQotdm9p
ZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQpCi17Ci0gICAg
bV9vdXQucHJpbnQoInJldHVybiIpOwotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkg
ewotICAgICAgICBtX291dC5wcmludCgiICIpOwotICAgICAgICB2aXNpdCgqcmV0dXJuU3RhdGVt
ZW50LnZhbHVlKCkpOwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3dp
dGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgbV9vdXQucHJpbnQoInN3aXRj
aCAoIik7Ci0gICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwotICAgIG1fb3V0LnBy
aW50bG4oIikgeyIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3dp
dGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgIGlmIChv
bmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnRsbigpOwotICAgICAgICBvbmNlID0gdHJ1ZTsK
LSAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICB2aXNpdChzd2l0Y2hDYXNl
KTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIlxuIiwgbV9pbmRlbnQsICJ9Iik7Ci0KLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAg
ICBpZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCJjYXNlICIp
OwotICAgICAgICB2aXNpdCgqc3dpdGNoQ2FzZS52YWx1ZSgpKTsKLSAgICAgICAgbV9vdXQucHJp
bnQoIjogIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fb3V0LnByaW50KCJkZWZhdWx0OiAiKTsK
LSAgICB2aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9u
LnR5cGUoKSkgewotICAgICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwot
ICAgICAgICBtX291dC5wcmludCgiICIpOwotICAgIH0KLQotICAgIGlmICh2YXJpYWJsZURlY2xh
cmF0aW9uLm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIG1fb3V0LnByaW50KCIkIiwgUmF3UG9p
bnRlcigmdmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJp
bnQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOwotCi0gICAgaWYgKHZhcmlhYmxlRGVjbGFy
YXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uc2Vt
YW50aWMoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkgewot
ICAgICAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgICAgIHZpc2l0KCp2YXJpYWJsZURlY2xh
cmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0
KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAg
IHZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9
ICIpOwotICAgIHZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17
Ci0gICAgbV9vdXQucHJpbnQoY2FsbEV4cHJlc3Npb24ubmFtZSgpLCAiKCIpOwotICAgIGJvb2wg
b25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5h
cmd1bWVudHMoKSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50
KCIsICIpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQoYXJndW1lbnQpOwot
ICAgIH0KLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmlu
dCgiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgZXhwcmVzc2lv
biA6IGNvbW1hRXhwcmVzc2lvbi5saXN0KCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAg
ICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgIHZp
c2l0KGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNl
RXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiKiIpOwotICAgIHZpc2l0KGRlcmVmZXJl
bmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpMb2dpY2FsRXhwcmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJp
bnQoIigiKTsKLSAgICB2aXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIHN3aXRj
aCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHBy
ZXNzaW9uOjpUeXBlOjpBbmQ6Ci0gICAgICAgIG1fb3V0LnByaW50KCIgJiYgIik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6T3I6Ci0gICAg
ICAgIG1fb3V0LnByaW50KCIgfHwgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB2aXNp
dChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNh
bE5vdEV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIiEoIik7Ci0gICAgdmlzaXQobG9n
aWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
JiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCJAIik7
Ci0gICAgdmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFr
ZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCImIik7Ci0gICAgdmlzaXQo
bWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbikKLXsKLSAgICBhdXRvIG9sZFZhcmlhYmxlID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpOwotICAgIGF1dG8gbmV3VmFyaWFibGUgPSByZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0KLSAgICBtX291
dC5wcmludCgiUk1XKCIpOwotICAgIHZpc2l0KG9sZFZhcmlhYmxlLmdldCgpKTsKLSAgICBtX291
dC5wcmludCgiID0gIik7Ci0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0
VmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChuZXdWYXJpYWJs
ZS5nZXQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0LnByaW50KCIs
ICIpOwotCi0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7
Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KG5ld1ZhcmlhYmxlLmdldCgpKTsK
LSAgICBtX291dC5wcmludCgiLCAiKTsKLQotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJl
c3Npb24pCi17Ci0gICAgdmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOwotICAg
IG1fb3V0LnByaW50KCIgPyAiKTsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhw
cmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiIDogIik7Ci0gICAgdmlzaXQodGVybmFyeUV4
cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBpZiAodmFy
aWFibGVSZWZlcmVuY2UubmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIiQi
LCBSYXdQb2ludGVyKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fb3V0LnByaW50KHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhYTAyNzM2ZmMwMmJkMzE0MGZmMzg4ZjdkNTAyYjhiY2UyYzRiYjc3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLSNpbmNsdWRlIDx3dGYvRGF0YUxv
Zy5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIEFTVER1bXBlciA6IFZpc2l0b3IgewotICAgIHVzaW5nIEJhc2UgPSBWaXNpdG9y
OwotcHVibGljOgotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYpIG92ZXJyaWRlOwotCi0gICAgU3Ry
aW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gbV9vdXQudG9TdHJpbmcoKTsgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OlVubmFtZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5h
bWVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpB
cnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpT
ZW1hbnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFu
TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5
cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6U3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbnRpbnVlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2Fs
bEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0K
LXByaXZhdGU6Ci0gICAgc3RydWN0IEluZGVudCB7Ci0gICAgICAgIEluZGVudChBU1REdW1wZXIm
IGR1bXBlcikKLSAgICAgICAgICAgIDogbV9zY29wZShkdW1wZXIubV9pbmRlbnQsIGR1bXBlci5t
X2luZGVudCArICIgICAiKQotICAgICAgICB7IH0KLSAgICAgICAgU2V0Rm9yU2NvcGU8U3RyaW5n
PiBtX3Njb3BlOwotICAgIH07Ci0KLSAgICBJbmRlbnQgYnVtcEluZGVudCgpIHsgcmV0dXJuIElu
ZGVudCgqdGhpcyk7IH0KLQotICAgIGZyaWVuZCBzdHJ1Y3QgSW5kZW50OwotCi0gICAgU3RyaW5n
UHJpbnRTdHJlYW0gbV9vdXQ7Ci0gICAgU3RyaW5nIG1faW5kZW50OwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgZHVtcEFTVE5vZGUoUHJpbnRTdHJlYW0m
IG91dCwgVCYgdmFsdWUpCi17Ci0gICAgQVNURHVtcGVyIGR1bXBlcjsKLSAgICBkdW1wZXIudmlz
aXQodmFsdWUpOwotICAgIG91dC5wcmludChkdW1wZXIudG9TdHJpbmcoKSk7Ci19Ci1NQUtFX1BS
SU5UX0FEQVBUT1IoRXhwcmVzc2lvbkR1bXBlciwgQVNUOjpFeHByZXNzaW9uJiwgZHVtcEFTVE5v
ZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFN0YXRlbWVudER1bXBlciwgQVNUOjpTdGF0ZW1lbnQm
LCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoUHJvZ3JhbUR1bXBlciwgUHJvZ3Jh
bSYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihTdHJ1Y3R1cmVEZWZpbml0aW9u
RHVtcGVyLCBBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BS
SU5UX0FEQVBUT1IoRnVuY3Rpb25EZWZpbml0aW9uRHVtcGVyLCBBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uRHVtcGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mLCBkdW1wQVNU
Tm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoVHlwZUR1bXBlciwgQVNUOjpVbm5hbWVkVHlwZSYs
IGR1bXBBU1ROb2RlKTsKLQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGR1bXBBU1QoUHJv
Z3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBkYXRhTG9nTG4oUHJvZ3JhbUR1bXBlcihwcm9ncmFtKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcC5weSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGI3MTc4OTU0NDg5OTBkYzhhYzY4NzdiYzEwNGQ5ZGJhOGU2OTE0Ni4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1pbXBvcnQg
cmUKLQotcmVndWxhckV4cHJlc3Npb24gPSByZS5jb21waWxlKHIiL1wqIEZ1bmN0aW9ucyBuYW1l
ZCAoLiopIFwqLyIpCi0KLWluZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMV0sICJyIikKLWNvbnRlbnRz
ID0gaW5maWxlLnJlYWQoKQotaW5maWxlLmNsb3NlKCkKLQotb3V0ZmlsZSA9IG9wZW4oc3lzLmFy
Z3ZbMl0sICJ3IikKLW91dGZpbGUud3JpdGUoIiIiCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCIKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1IYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+IGNvbXB1
dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCgpCi17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN1
YnN0cmluZ0xvY2F0aW9uPiByZXN1bHQ7Ci0iIiIpCi0KLSMgRklYTUU6IENvbXB1dGUgU3RhbmRh
cmRMaWJyYXJ5RnVuY3Rpb25NYXAgYXQgYnVpbGQtdGltZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NDQ4Ci0KLXByZXZpb3VzID0gMAotcHJldmlvdXNOYW1lID0g
IiIKLWJvdW5kYXJ5ID0gMAotZm9yIG1hdGNoIGluIHJlZ3VsYXJFeHByZXNzaW9uLmZpbmRpdGVy
KGNvbnRlbnRzKToKLSAgICBpZiBwcmV2aW91cyA9PSAwOgotICAgICAgICBwcmV2aW91cyA9IG1h
dGNoLnN0YXJ0KCkKLSAgICAgICAgYm91bmRhcnkgPSBwcmV2aW91cwotICAgICAgICBwcmV2aW91
c05hbWUgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBjb250aW51ZQotICAgIG91dGZpbGUud3Jp
dGUoIiAgICByZXN1bHQuYWRkKFwiIiArIHByZXZpb3VzTmFtZSArICJcIl9zdHIsIFN1YnN0cmlu
Z0xvY2F0aW9uIHsgIiArIHN0cihwcmV2aW91cykgKyAiLCAiICsgc3RyKG1hdGNoLnN0YXJ0KCkp
ICsgIiB9KTtcbiIpCi0gICAgcHJldmlvdXMgPSBtYXRjaC5zdGFydCgpCi0gICAgcHJldmlvdXNO
YW1lID0gbWF0Y2guZ3JvdXAoMSkKLW91dGZpbGUud3JpdGUoIiAgICByZXN1bHQuYWRkKFwiIiAr
IHByZXZpb3VzTmFtZSArICJcIl9zdHIsIFN1YnN0cmluZ0xvY2F0aW9uIHsgIiArIHN0cihwcmV2
aW91cykgKyAiLCAiICsgc3RyKGxlbihjb250ZW50cykpICsgIiB9KTtcbiIpCi1vdXRmaWxlLndy
aXRlKCIiIgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXVuc2lnbmVkIGZpcnN0RnVuY3Rpb25P
ZmZzZXRJblN0YW5kYXJkTGlicmFyeSgpCi17Ci0iIiIpCi0KLW91dGZpbGUud3JpdGUoIiAgICBy
ZXR1cm4gIiArIHN0cihib3VuZGFyeSkgKyAiO1xuIikKLQotb3V0ZmlsZS53cml0ZSgiIiIKLX0K
LQotfQotCi19Ci0KLSNlbmRpZgotIiIiKQotb3V0ZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hl
Y2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NTliZWQxZWNlZDQ2ZGIxZDdmYTdiZmI0ZTFjM2UzNDgzYzMxNzNiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oIgotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2lu
Y2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1jbGFzcyBEdXBsaWNhdGVGdW5jdGlvbktleSB7Ci1wdWJsaWM6Ci0g
ICAgRHVwbGljYXRlRnVuY3Rpb25LZXkoKSA9IGRlZmF1bHQ7Ci0gICAgRHVwbGljYXRlRnVuY3Rp
b25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgIHsKLSAgICAgICAgbV9m
dW5jdGlvbiA9IGJpdHdpc2VfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDEpKTsKLSAgICB9Ci0KLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleShj
b25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKQotICAgICAgICA6IG1fZnVu
Y3Rpb24oJmZ1bmN0aW9uKQotICAgIHsgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25z
dCB7IHJldHVybiAhbV9mdW5jdGlvbjsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uID09IGJpdHdpc2VfY2FzdDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBoYXNoID0gSW50SGFz
aDxzaXplX3Q+OjpoYXNoKG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAg
ICBoYXNoIF49IG1fZnVuY3Rpb24tPm5hbWUoKS5oYXNoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9mdW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+aGFzaCgp
OwotCi0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5pc0Nhc3QoKSkKLSAgICAgICAgICAgIGhhc2gg
Xj0gbV9mdW5jdGlvbi0+dHlwZSgpLmhhc2goKTsKLQotICAgICAgICByZXR1cm4gaGFzaDsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRHVwbGljYXRlRnVuY3Rpb25LZXkmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5z
aXplKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV9mdW5jdGlvbi0+bmFtZSgpICE9IG90
aGVyLm1fZnVuY3Rpb24tPm5hbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBpZiAobV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5k
YXJkTGlicmFyeQotICAgICAgICAgICAgJiYgb3RoZXIubV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkg
IT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeQotICAgICAgICAgICAgJiYgbV9mdW5j
dGlvbi0+bmFtZVNwYWNlKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgQVNTRVJUKG1fZnVuY3Rpb24tPmlzQ2Fz
dCgpID09IG90aGVyLm1fZnVuY3Rpb24tPmlzQ2FzdCgpKTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgaWYgKCFtYXRjaGVzKCptX2Z1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUo
KSwgKm90aGVyLm1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1fZnVuY3Rp
b24tPmlzQ2FzdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKG1h
dGNoZXMobV9mdW5jdGlvbi0+dHlwZSgpLCBvdGhlci5tX2Z1bmN0aW9uLT50eXBlKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRHVw
bGljYXRlRnVuY3Rpb25LZXkmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtl
eS5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBE
dXBsaWNhdGVGdW5jdGlvbktleSYgYSwgY29uc3QgRHVwbGljYXRlRnVuY3Rpb25LZXkmIGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDogcHVibGljIFdURjo6U2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPER1cGxpY2F0ZUZ1bmN0aW9uS2V5PiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIGJvb2wg
aXNFbXB0eVZhbHVlKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGtl
eS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Z1bmN0aW9uIHsgbnVsbHB0ciB9OwotfTsKLQotRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKGNvbnN0IFByb2dyYW0mIHBy
b2dyYW0pCi17Ci0gICAgYXV0byBwYXNzZXNTdGF0aWNDaGVja3MgPSBbJl0gKGNvbnN0IEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIC0+IEV4cGVjdGVkPHZvaWQsIEVycm9yPiB7
Ci0gICAgICAgIGlmIChmdW5jdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yPT0iCi0gICAgICAgICAg
ICAmJiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIKLSAgICAgICAgICAgICYmIGlz
PEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSY+
KCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpCi0gICAgICAgICAgICAmJiBpczxB
U1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmPigq
ZnVuY3Rpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpKQotICAgICAgICAgICAgJiYgbWF0Y2hl
cygqZnVuY3Rpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCksICpmdW5jdGlvbi5wYXJhbWV0ZXJz
KClbMV0tPnR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
IkNhbm5vdCBkZWZpbmUgb3BlcmF0b3I9PSBvbiB0d28gcmVmZXJlbmNlIHR5cGVzLiIpKTsKLSAg
ICAgICAgZWxzZSBpZiAoZnVuY3Rpb24uaXNDYXN0KCkgJiYgZnVuY3Rpb24ucGFyYW1ldGVycygp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gZnVuY3Rpb24udHlw
ZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlm
eU5vZGUpICYmIGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5h
bWVkVHlwZT4odW5pZnlOb2RlKSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwotICAgICAgICAgICAgICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGRlZmluZSBhIGNhc3Qgb24gYW4gb3Bh
cXVlIHR5cGUuIikpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9OwotCi0gICAgSGFzaFNldDxEdXBsaWNhdGVGdW5jdGlvbktleSwgRHVwbGlj
YXRlRnVuY3Rpb25LZXk6Okhhc2gsIER1cGxpY2F0ZUZ1bmN0aW9uS2V5OjpUcmFpdHM+IGZ1bmN0
aW9uczsKLQotICAgIGF1dG8gYWRkID0gWyZdIChjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mIGZ1bmN0aW9uKSAtPiBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gewotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IGZ1bmN0aW9ucy5hZGQoRHVwbGljYXRlRnVuY3Rpb25LZXkgeyBmdW5jdGlvbiB9
KTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcigiRm91bmQgZHVwbGljYXRlIGZ1bmN0aW9uIikpOwotICAg
ICAgICByZXR1cm4gcGFzc2VzU3RhdGljQ2hlY2tzKGZ1bmN0aW9uKTsKLSAgICB9OwotCi0gICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGFkZChmdW5jdGlvbkRlZmluaXRpb24u
Z2V0KCkpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBhZGRS
ZXN1bHQ7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
IDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKSB7Ci0gICAgICAgIC8vIFdl
IGdlbmVyYXRlIGR1cGxpY2F0ZSBuYXRpdmUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIHN5bnRo
ZXNpemUgY29uc3RydWN0b3JzLgotICAgICAgICAvLyBGSVhNRTogaXMgdGhpcyByaWdodD8KLSAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODU4MAot
ICAgICAgICAvLwotICAgICAgICAvLyBTaW5jZSB3ZSBkbyB0aGF0LCB3ZSBqdXN0IG5lZWQgdG8g
bWFrZSBzdXJlIG5vIG5hdGl2ZSBmdW5jdGlvbiBpcyBhIGR1cGxpY2F0ZQotICAgICAgICAvLyBv
ZiBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbi4KLQotICAgICAgICAvLyBGSVhNRTogQWRkIGJhY2sg
dGhpcyBhc3NlcnQgb25jZSB3ZSBiZWdpbiB0byBhdXRvIGdlbmVyYXRlIHRoZXNlIGluIHRoZSBj
b21waWxlcgotICAgICAgICAvLyBpbnN0ZWFkIG9mIGhhdmluZyB0aGVtIGluIHRoZSBzdGRsaWIK
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg2
MQotICAgICAgICAvLyBBU1NFUlQocGFzc2VzU3RhdGljQ2hlY2tzKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24uZ2V0KCkpKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9ucy5jb250YWlucyhEdXBsaWNh
dGVGdW5jdGlvbktleSB7IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uZ2V0KCkgfSkpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYXRpdmUgZnVu
Y3Rpb24uIikpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwN2QzMmU1MmU2YTRlMjcwYjE5OGQyMzU5NTcyNjkzOGJi
NzYwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVy
cm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKGNvbnN0IFByb2dyYW0mKTsK
LQotfQotCi19Ci0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVu
Y2VUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrUmVmZXJlbmNlVHlwZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTMx
NTQ3Mzk0ODYwNDE2YzViZTcyMmQyOWQ2NWUzYjRlZGM1NTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldI
TFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBSZWZlcmVuY2VU
eXBlQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBSZWZlcmVu
Y2VUeXBlQ2hlY2tlcigpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIH5SZWZlcmVuY2VUeXBlQ2hl
Y2tlcigpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hl
Y2tUeXBlKEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUsIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24s
IGNvbnN0IGNoYXIqIGVycm9yKQotICAgIHsKLSAgICAgICAgYXV0byYgdW5pZmllZFR5cGUgPSB0
eXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoaXM8QVNUOjpSZWZlcmVuY2VUeXBlPih1bmlm
aWVkVHlwZSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKGVycm9yLCBjb2RlTG9jYXRp
b24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpczxB
U1Q6OlVubmFtZWRUeXBlPih1bmlmaWVkVHlwZSkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJlbmNlVHlwZSkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCks
IHJlZmVyZW5jZVR5cGUuY29kZUxvY2F0aW9uKCksICJyZWZlcmVuY2UgdHlwZSBjYW5ub3QgaGF2
ZSBhbm90aGVyIHJlZmVyZW5jZSB0eXBlIGFzIGFuIGlubmVyIHR5cGUiKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBjaGVja1R5cGUoYXJyYXlUeXBlLnR5cGUoKSwgYXJyYXlUeXBlLmNvZGVMb2NhdGlv
bigpLCAiYXJyYXkgdHlwZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0eXBlIGFzIGl0cyBpbm5l
ciB0eXBlIik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQm
IHN0cnVjdHVyZUVsZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja1R5cGUoc3Ry
dWN0dXJlRWxlbWVudC50eXBlKCksIHN0cnVjdHVyZUVsZW1lbnQuY29kZUxvY2F0aW9uKCksICJj
YW5ub3QgaGF2ZSBhIHN0cnVjdHVyZSBmaWVsZCB3aGljaCBpcyBhIHJlZmVyZW5jZSB0eXBlIik7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgIH0K
LX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlZmVyZW5jZVR5cGVzKFByb2dyYW0m
IHByb2dyYW0pCi17Ci0gICAgLy8gVGhpcyBwYXNzIGRvZXMgdGhlc2UgdGhpbmdzOgotICAgIC8v
IDEuIERpc2FsbG93IHN0cnVjdHMgdG8gaGF2ZSBmaWVsZHMgd2hpY2ggYXJlIHJlZmVyZW5jZXMu
IFRoaXMgcHJldmVudHMgdXMgZnJvbSBoYXZpbmcgdG8KLSAgICAvLyBmaWd1cmUgb3V0IGhvdyB0
byBkZWZhdWx0IGluaXRpYWxpemUgc3VjaCBhIHN0cnVjdC4gV2UgY291bGQgcmVsYXggdGhpcyBp
biB0aGUgZnV0dXJlIGlmIHdlCi0gICAgLy8gZGlkIGFuIGFuYWx5c2lzIG9uIHdoaWNoIHN0cnVj
dHMgY29udGFpbiByZWZlcmVuY2UgZmllbGRzLCBhbmQgZW5zdXJlIHN1Y2ggc3RydWN0IHZhcmlh
YmxlcwotICAgIC8vIGFsd2F5cyBoYXZlIGluaXRpYWxpemVycy4gVGhpcyB3b3VsZCBhbHNvIHJl
cXVpcmUgdXMgdG8gY3JlYXRlIGNvbnN0cnVjdG9ycyBmb3Igc3RydWN0cyB3aGljaAotICAgIC8v
IGluaXRpYWxpemUgZWFjaCBmaWVsZC4KLSAgICAvLyAyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZv
ciBhcnJheXMuCi0gICAgLy8gMy4gUmVmZXJlbmNlcyBjYW4gb25seSBiZSBvbmUgbGV2ZWwgZGVl
cC4gU28gbm8gcG9pbnRlcnMgdG8gcG9pbnRlcnMuIE5vIHJlZmVyZW5jZXMgdG8KLSAgICAvLyBy
ZWZlcmVuY2VzLCBldGMuIFRoaXMgaXMgdG8gc3VwcG9ydCBsb2dpY2FsIG1vZGUuCi0gICAgUmVm
ZXJlbmNlVHlwZUNoZWNrZXIgcmVmZXJlbmNlVHlwZUNoZWNrZXI7Ci0gICAgcmVmZXJlbmNlVHlw
ZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIHJldHVybiByZWZlcmVu
Y2VUeXBlQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a1JlZmVyZW5jZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzUzNjJhODA0NDIzYjJhMGZlMjg1M2MzNzMyMmUyNjFlNzE4MTc3Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZlcmVuY2VUeXBl
cyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
aGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNiY2U2YzAwMzg3ZWMxY2M4ZWJhZTU0NDc3ZWI5NjIzOTM5Y2RiYjIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyIGZpbmFs
IDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tl
cigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgflRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcigp
ID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGNvbnRhaW5zVGV4
dHVyZU9yU2FtcGxlcihBU1Q6OlVubmFtZWRUeXBlJik7Ci19OwotCi1jbGFzcyBTZWFyY2hlciA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBTZWFyY2hlcigpID0gZGVmYXVsdDsKLQot
ICAgIHZpcnR1YWwgflNlYXJjaGVyKCkgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBmb3VuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm91bmQ7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBib29sIG1fZm91bmQgeyBmYWxzZSB9Owot
fTsKLQotdm9pZCBTZWFyY2hlcjo6dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
T3BhcXVlVHlwZSgpKQotICAgICAgICBtX2ZvdW5kID0gdHJ1ZTsKLX0KLQotYm9vbCBUZXh0dXJl
UmVmZXJlbmNlc0NoZWNrZXI6OmNvbnRhaW5zVGV4dHVyZU9yU2FtcGxlcihBU1Q6OlVubmFtZWRU
eXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBTZWFyY2hlciBzZWFyY2hlcjsKLSAgICBzZWFyY2hl
ci5jaGVja0Vycm9yQW5kVmlzaXQodW5uYW1lZFR5cGUpOwotICAgIHJldHVybiBzZWFyY2hlci5m
b3VuZCgpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpQ
b2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQocG9pbnRlclR5
cGUpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNvbnRh
aW5zVGV4dHVyZU9yU2FtcGxlcihwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpKSkKLSAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBoYXZlIGEgcG9pbnRlciB0byBhIHRleHR1cmUgb3Igc2Ft
cGxlci4iLCBwb2ludGVyVHlwZS5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIFRleHR1cmVS
ZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVm
ZXJlbmNlVHlwZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChhcnJheVJlZmVyZW5jZVR5cGUpOwot
ICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNvbnRhaW5zVGV4
dHVyZU9yU2FtcGxlcihhcnJheVJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSkpCi0gICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhbiBhcnJheSByZWZlcmVuY2UgdG8gYSB0ZXh0
dXJlIG9yIHNhbXBsZXIuIiwgYXJyYXlSZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpKSk7Ci19
Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OkFycmF5VHlwZSYg
YXJyYXlUeXBlKQotewotICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5VHlwZSk7Ci0gICAgaWYgKGhh
c0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1w
bGVyKGFycmF5VHlwZS50eXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGhh
dmUgYW4gYXJyYXkgb2YgdGV4dHVyZXMgb3Igc2FtcGxlcnMuIiwgYXJyYXlUeXBlLmNvZGVMb2Nh
dGlvbigpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lv
bik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwot
fQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0
aW9uLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAg
ICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLX0KLQotdm9pZCBUZXh0dXJl
UmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYp
Ci17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1RleHR1cmVSZWZlcmVuY2VzKFBy
b2dyYW0mIHByb2dyYW0pCi17Ci0gICAgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyIHRleHR1cmVS
ZWZlcmVuY2VzQ2hlY2tlcjsKLSAgICB0ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIuY2hlY2tFcnJv
ckFuZFZpc2l0KHByb2dyYW0pOwotICAgIHJldHVybiB0ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIu
cmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJl
bmNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1Rl
eHR1cmVSZWZlcmVuY2VzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNjk0OTZl
ZTlkMjlhMGE1ODk2NTMxZGVhZDVmODJlM2U3NTZmNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
UHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMo
UHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWEyN2E2YzhhOThjM2U1YmY2
N2ZmMjljMjJhYmE4NjA4M2YyZDRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hl
Y2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja2VyLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNM
RG90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEluZGV4
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldI
TFNMTG9naWNhbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
bWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJlc29s
dmVPdmVybG9hZEltcGwuaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNs
dWRlICJXSExTTFJldHVybi5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUE9EQ2hlY2tl
ciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBQT0RDaGVja2VyKCkgPSBkZWZhdWx0
OwotCi0gICAgdmlydHVhbCB+UE9EQ2hlY2tlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlv
bik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
bmF0aXZlVHlwZURlY2xhcmF0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKQotICAgICAgICAgICAgJiYgIW5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5pc1ZlY3RvcigpCi0gICAgICAgICAgICAmJiAhbmF0aXZlVHlwZURlY2xhcmF0
aW9uLmlzTWF0cml4KCkpCi0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiVXNlIG9mIG5hdGl2
ZSB0eXBlIGlzIG5vdCBhIFBPRCBpbiBlbnRyeXBvaW50IHNlbWFudGljLiIsIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVEZWZpbml0aW9uKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJheVR5cGUpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSWxsZWdhbCB1c2Ugb2YgcG9pbnRlciBpbiBlbnRy
eXBvaW50IHNlbWFudGljLiIsIHBvaW50ZXJUeXBlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VU
eXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIklsbGVnYWwgdXNl
IG9mIGFycmF5IHJlZmVyZW5jZSBpbiBlbnRyeXBvaW50IHNlbWFudGljLiIsIGFycmF5UmVmZXJl
bmNlVHlwZS5jb2RlTG9jYXRpb24oKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpU
eXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIH0KLX07
Ci0KLWNsYXNzIEZ1bmN0aW9uS2V5IHsKLXB1YmxpYzoKLSAgICBGdW5jdGlvbktleSgpID0gZGVm
YXVsdDsKLSAgICBGdW5jdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0g
ICAgewotICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0gYml0d2lzZV9jYXN0PEFTVDo6TmFtZWRU
eXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7Ci0gICAgfQotCi0gICAgRnVuY3Rpb25L
ZXkoU3RyaW5nIG5hbWUsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1l
ZFR5cGU+PiB0eXBlcywgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlID0gbnVsbHB0cikK
LSAgICAgICAgOiBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGVzKFdURk1v
dmUodHlwZXMpKQotICAgICAgICAsIG1fY2FzdFJldHVyblR5cGUoY2FzdFJldHVyblR5cGUpCi0g
ICAgeyB9Ci0KLSAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5p
c051bGwoKTsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2Nhc3RSZXR1cm5UeXBlID09IGJpdHdpc2VfY2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBJbnRIYXNoPHNpemVfdD46Omhhc2gobV90
eXBlcy5zaXplKCkpOwotICAgICAgICBoYXNoIF49IG1fbmFtZS5oYXNoKCk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90eXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGhh
c2ggXj0gbV90eXBlc1tpXS5nZXQoKS5oYXNoKCkgKyBpOwotCi0gICAgICAgIGlmIChtX2Nhc3RS
ZXR1cm5UeXBlKQotICAgICAgICAgICAgaGFzaCBePSBXVEY6OlB0ckhhc2g8QVNUOjpUeXBlKj46
Omhhc2goJm1fY2FzdFJldHVyblR5cGUtPnVuaWZ5Tm9kZSgpKTsKLQotICAgICAgICByZXR1cm4g
aGFzaDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25LZXkmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZXMuc2l6ZSgpICE9IG90aGVyLm1f
dHlwZXMuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICht
X25hbWUgIT0gb3RoZXIubV9uYW1lKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90eXBlcy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCFtYXRjaGVzKG1fdHlwZXNbaV0uZ2V0KCksIG90aGVyLm1fdHlwZXNbaV0uZ2V0
KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChzdGF0aWNfY2FzdDxib29sPihtX2Nhc3RSZXR1cm5UeXBlKSAhPSBzdGF0aWNfY2FzdDxi
b29sPihvdGhlci5tX2Nhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICBpZiAoIW1fY2FzdFJldHVyblR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgICAgICBpZiAoJm1fY2FzdFJldHVyblR5cGUtPnVuaWZ5Tm9kZSgpID09ICZvdGhl
ci5tX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZ1bmN0aW9uS2V5JiBrZXkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRnVuY3Rpb25LZXkmIGEsIGNvbnN0IEZ1bmN0aW9u
S2V5JiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IGZhbHNlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDogcHVibGljIFdURjo6U2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPEZ1bmN0aW9uS2V5PiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIGJvb2wgaXNF
bXB0eVZhbHVlKGNvbnN0IEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5pc0VtcHR5VmFs
dWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gbV90eXBlczsKLSAg
ICBBU1Q6Ok5hbWVkVHlwZSogbV9jYXN0UmV0dXJuVHlwZTsKLX07Ci0KLXN0YXRpYyBBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21wYXJhdG9yKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVzb2x2aW5nVHlwZSYgZmlyc3RBcmd1bWVudCwgUmVzb2x2
aW5nVHlwZSYgc2Vjb25kQXJndW1lbnQsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17
Ci0gICAgY29uc3QgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICBhdXRvIHJldHVyblR5cGUg
PSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGludHJpbnNpY3MuYm9vbFR5cGUo
KSk7Ci0gICAgYXV0byBhcmd1bWVudFR5cGUgPSBmaXJzdEFyZ3VtZW50LnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmPEFT
VDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHVubmFtZWRUeXBlLmNvcHlSZWYoKTsK
LSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYpIC0+IFJlZjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiBzZWNvbmRBcmd1bWVudC52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUuY29w
eVJlZigpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYp
IC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICAvLyBXZSBlbmNvdW50ZXJl
ZCAibnVsbCA9PSBudWxsIi4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYyIFRoaXMgY2FuIHByb2JhYmx5IGJlIGdlbmVy
YWxpemVkLCB1c2luZyB0aGUgInByZWZlcnJlZCB0eXBlIiBpbmZyYXN0cnVjdHVyZSB1c2VkIGJ5
IGdlbmVyaWMgbGl0ZXJhbHMKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgaW50cmlu
c2ljcy5pbnRUeXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpOwotICAgIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVy
cygpLCBhcmd1bWVudFR5cGUuY29weVJlZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIFdURk1vdmUoYXJndW1lbnRUeXBl
KSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gQVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmV0dXJuVHlwZSksIFN0
cmluZygib3BlcmF0b3I9PSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRM
aWJyYXJ5KSk7Ci19Ci0KLWVudW0gY2xhc3MgQWNjZXB0YWJpbGl0eSB7Ci0gICAgWWVzLAotICAg
IE5vCi19OwotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlTG9j
YXRpb24gbG9jYXRpb24sIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29s
dmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAg
aWYgKG5hbWUgPT0gIm9wZXJhdG9yPT0iICYmIHR5cGVzLnNpemUoKSA9PSAyKSB7Ci0gICAgICAg
IGF1dG8gYWNjZXB0YWJpbGl0eSA9IFtdKFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpIC0+
IEFjY2VwdGFiaWxpdHkgewotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAt
PiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB1bm5h
bWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlzPEFTVDo6VW5u
YW1lZFR5cGU+KHVuaWZ5Tm9kZSkgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihkb3duY2FzdDxB
U1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpKSA/IEFjY2VwdGFiaWxpdHk6OlllcyA6IEFjY2Vw
dGFiaWxpdHk6Ok5vOwotICAgICAgICAgICAgfSwgW10oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiYpIC0+IEFjY2VwdGFiaWxpdHkgewotICAgICAgICAgICAgICAgIHJldHVybiBBY2Nl
cHRhYmlsaXR5OjpObzsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0
byBsZWZ0QWNjZXB0YWJpbGl0eSA9IGFjY2VwdGFiaWxpdHkodHlwZXNbMF0uZ2V0KCkpOwotICAg
ICAgICBhdXRvIHJpZ2h0QWNjZXB0YWJpbGl0eSA9IGFjY2VwdGFiaWxpdHkodHlwZXNbMV0uZ2V0
KCkpOwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgaWYgKGxlZnRBY2Nl
cHRhYmlsaXR5ID09IEFjY2VwdGFiaWxpdHk6OlllcyAmJiByaWdodEFjY2VwdGFiaWxpdHkgPT0g
QWNjZXB0YWJpbGl0eTo6WWVzKSB7Ci0gICAgICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZTEgPSAq
dHlwZXNbMF0uZ2V0KCkuZ2V0VW5uYW1lZFR5cGUoKTsKLSAgICAgICAgICAgIGF1dG8mIHVubmFt
ZWRUeXBlMiA9ICp0eXBlc1sxXS5nZXQoKS5nZXRVbm5hbWVkVHlwZSgpOwotICAgICAgICAgICAg
c3VjY2VzcyA9IG1hdGNoZXModW5uYW1lZFR5cGUxLCB1bm5hbWVkVHlwZTIpOwotICAgICAgICB9
IAotICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZlV2l0aFJl
ZmVyZW5jZUNvbXBhcmF0b3IobG9jYXRpb24sIHR5cGVzWzBdLmdldCgpLCB0eXBlc1sxXS5nZXQo
KSwgaW50cmluc2ljcyk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0
YXRpYyBib29sIGNoZWNrU2VtYW50aWNzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGlucHV0SXRl
bXMsIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIG91dHB1dEl0ZW1zLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEFTVDo6RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSwgY29uc3QgSW50cmluc2lj
cyYgaW50cmluc2ljcykKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gY2hlY2tEdXBsaWNhdGVTZW1h
bnRpY3MgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wg
ewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGl0ZW1zLnNpemUo
KTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tpXS5zZW1hbnRpYyA9PSBp
dGVtc1tqXS5zZW1hbnRpYykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhpbnB1
dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVja0R1
cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGNoZWNrU2VtYW50aWNUeXBlcyA9IFsmXShj
b25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcykgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICAgICAgICAgIGF1dG8gYWNjZXB0
YWJsZSA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgQVNUOjpCYXNlU2Vt
YW50aWMmIHNlbWFudGljKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bWFudGljLmlzQWNjZXB0YWJsZVR5cGUoKml0ZW0udW5uYW1lZFR5cGUsIGludHJpbnNpY3MpOwot
ICAgICAgICAgICAgICAgIH0pLCAqaXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFhY2NlcHRhYmxlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYg
KCFjaGVja1NlbWFudGljVHlwZXMoaW5wdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY1R5cGVzKG91dHB1dEl0ZW1zKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gY2hlY2tT
ZW1hbnRpY0ZvclNoYWRlclR5cGUgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYg
aXRlbXMsIEFTVDo6QmFzZVNlbWFudGljOjpTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbikg
LT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAg
ICAgICAgICAgIGF1dG8gYWNjZXB0YWJsZSA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oY29uc3QgQVNUOjpCYXNlU2VtYW50aWMmIHNlbWFudGljKSAtPiBib29sIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljLmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJl
Y3Rpb24oZGlyZWN0aW9uLCBlbnRyeVBvaW50VHlwZSk7Ci0gICAgICAgICAgICAgICAgfSksICpp
dGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdGFibGUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNGb3JTaGFk
ZXJUeXBlKGlucHV0SXRlbXMsIEFTVDo6QmFzZVNlbWFudGljOjpTaGFkZXJJdGVtRGlyZWN0aW9u
OjpJbnB1dCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tT
ZW1hbnRpY0ZvclNoYWRlclR5cGUob3V0cHV0SXRlbXMsIEFTVDo6QmFzZVNlbWFudGljOjpTaGFk
ZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1BPRERhdGEgPSBbJl0oY29uc3QgVmVjdG9y
PEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wgewotICAgICAgICAgICAgZm9yIChhdXRv
JiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgICAgICAgICBQT0RDaGVja2VyIHBvZENoZWNrZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KGl0ZW0udW5uYW1lZFR5
cGUpKQotICAgICAgICAgICAgICAgICAgICBwb2RDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUo
KSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KGl0ZW0udW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICBwb2RDaGVja2VyLmNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKml0ZW0udW5u
YW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFT
VDo6QXJyYXlUeXBlPihpdGVtLnVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgcG9k
Q2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KCppdGVt
LnVubmFtZWRUeXBlKS50eXBlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHBvZENoZWNrZXIuaGFzRXJy
b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICghY2hlY2tQ
T0REYXRhKGlucHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoIWNoZWNrUE9ERGF0YShvdXRwdXRJdGVtcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrT3BlcmF0
b3JPdmVybG9hZChjb25zdCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0
aW9uKQotewotICAgIGVudW0gY2xhc3MgQ2hlY2tLaW5kIHsKLSAgICAgICAgSW5kZXgsCi0gICAg
ICAgIERvdAotICAgIH07Ci0KLSAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi5pc09wZXJhdG9y
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24uaXND
YXN0KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24u
bmFtZSgpID09ICJvcGVyYXRvcisrIiB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJv
cGVyYXRvci0tIikgewotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMQotICAgICAgICAgICAgJiYgbWF0Y2hlcygqZnVuY3Rpb25EZWZpbml0
aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLCBmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKTsK
LSAgICB9Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKyIg
fHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3ItIikKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEgfHwgZnVuY3Rp
b25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMjsKLSAgICBpZiAoZnVuY3Rpb25E
ZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IqIgotICAgICAgICB8fCBmdW5jdGlvbkRlZmlu
aXRpb24ubmFtZSgpID09ICJvcGVyYXRvci8iCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlv
bi5uYW1lKCkgPT0gIm9wZXJhdG9yJSIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5h
bWUoKSA9PSAib3BlcmF0b3ImIgotICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgp
ID09ICJvcGVyYXRvcnwiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0g
Im9wZXJhdG9yXiIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3Bl
cmF0b3I8PCIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0
b3I+PiIpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNp
emUoKSA9PSAyOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRv
cn4iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWNsYXNzIENoZWNrZXIgOiBwdWJsaWMg
VmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgQ2hlY2tlcihjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzLCBQcm9ncmFtJiBwcm9ncmFtKQotICAgICAgICA6IG1faW50cmluc2ljcyhpbnRyaW5zaWNz
KQotICAgICAgICAsIG1fcHJvZ3JhbShwcm9ncmFtKQotICAgIHsKLSAgICAgICAgYXV0byBhZGRG
dW5jdGlvbiA9IFsmXSAoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbikgewotICAg
ICAgICAgICAgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIGlmIChmdW5jdGlvbi5pc0Nhc3QoKSAmJiBpczxBU1Q6Ok5hbWVkVHlwZT4oZnVuY3Rp
b24udHlwZSgpLnVuaWZ5Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBjYXN0UmV0dXJuVHlwZSA9
ICZkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oZnVuY3Rpb24udHlwZSgpLnVuaWZ5Tm9kZSgpKTsK
LQotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVk
VHlwZT4+IHR5cGVzOwotICAgICAgICAgICAgdHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShm
dW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLQotICAgICAgICAgICAgZm9yIChhdXRvJiBw
YXJhbSA6IGZ1bmN0aW9uLnBhcmFtZXRlcnMoKSkKLSAgICAgICAgICAgICAgICB0eXBlcy51bmNo
ZWNrZWRBcHBlbmQobm9ybWFsaXplZFR5cGVGb3JGdW5jdGlvbktleSgqcGFyYW0tPnR5cGUoKSkp
OwotCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZnVuY3Rpb25zLmFkZChGdW5jdGlv
bktleSB7IGZ1bmN0aW9uLm5hbWUoKSwgV1RGTW92ZSh0eXBlcyksIGNhc3RSZXR1cm5UeXBlIH0s
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4s
IDE+KCkpOwotICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZnVu
Y3Rpb24pOwotICAgICAgICB9OwotCi0gICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX3By
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICAgICAgYWRkRnVuY3Rpb24oZnVu
Y3Rpb24uZ2V0KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9wcm9ncmFtLm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpCi0gICAgICAgICAgICBhZGRGdW5jdGlvbihmdW5j
dGlvbi5nZXQoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+Q2hlY2tlcigpID0gZGVmYXVsdDsK
LQotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYpIG92ZXJyaWRlOwotCi0gICAgRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IGFzc2lnblR5cGVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBjaGVja1NoYWRl
clR5cGUoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKLSAgICBib29sIGlzQm9vbFR5
cGUoUmVzb2x2aW5nVHlwZSYpOwotICAgIHN0cnVjdCBSZWN1cnNlSW5mbyB7Ci0gICAgICAgIFJl
c29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGU7Ci0gICAgICAgIGNvbnN0IEFTVDo6VHlwZUFubm90
YXRpb24gdHlwZUFubm90YXRpb247Ci0gICAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJ
bmZvPiByZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29sIHJlcXVpcmVzTGVm
dFZhbHVlID0gZmFsc2UpOwotICAgIHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8o
QVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKLSAgICBS
ZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gcmVjdXJzZUFuZFdyYXBCYXNlVHlwZShBU1Q6OlByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiYpOwotICAgIGJvb2wgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlw
ZShBU1Q6OkV4cHJlc3Npb24mKTsKLSAgICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4
cHJlc3Npb24mLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEFTVDo6VHlwZUFubm90YXRpb24pOwot
ICAgIHZvaWQgYXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYsIEFTVDo6TmFtZWRU
eXBlJiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBhc3NpZ25UeXBlKEFTVDo6RXhw
cmVzc2lvbiYsIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4sIEFTVDo6VHlwZUFubm90
YXRpb24pOwotICAgIHZvaWQgZm9yd2FyZFR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVzb2x2aW5n
VHlwZSYsIEFTVDo6VHlwZUFubm90YXRpb24pOwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpCb29sZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNh
bEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3Rh
dGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotCi0g
ICAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb24oVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBu
YW1lLCBDb2RlTG9jYXRpb24sIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51bGxw
dHIpOwotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYgd3JhcHBlZEZsb2F0VHlwZSgpCi0gICAgewot
ICAgICAgICBpZiAoIW1fd3JhcHBlZEZsb2F0VHlwZSkKLSAgICAgICAgICAgIG1fd3JhcHBlZEZs
b2F0VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcCh7IH0sIG1faW50cmluc2ljcy5mbG9h
dFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAqbV93cmFwcGVkRmxvYXRUeXBlOwotICAgIH0KLQot
ICAgIEFTVDo6VW5uYW1lZFR5cGUmIHdyYXBwZWRVaW50VHlwZSgpCi0gICAgewotICAgICAgICBp
ZiAoIW1fd3JhcHBlZFVpbnRUeXBlKQotICAgICAgICAgICAgbV93cmFwcGVkVWludFR5cGUgPSBB
U1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoeyB9LCBtX2ludHJpbnNpY3MudWludFR5cGUoKSk7Ci0g
ICAgICAgIHJldHVybiAqbV93cmFwcGVkVWludFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5h
bWVkVHlwZSYgbm9ybWFsaXplZFR5cGVGb3JGdW5jdGlvbktleShBU1Q6OlVubmFtZWRUeXBlJiB0
eXBlKQotICAgIHsKLSAgICAgICAgYXV0byogdW5pZnlOb2RlID0gJnR5cGUudW5pZnlOb2RlKCk7
Ci0gICAgICAgIGlmICh1bmlmeU5vZGUgPT0gJm1faW50cmluc2ljcy51aW50VHlwZSgpIHx8IHVu
aWZ5Tm9kZSA9PSAmbV9pbnRyaW5zaWNzLmludFR5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiB3
cmFwcGVkRmxvYXRUeXBlKCk7Ci0KLSAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgfQotCi0gICAg
UmVmUHRyPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV93cmFwcGVkRmxvYXRUeXBlOwotICAgIFJlZlB0
cjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fd3JhcHBlZFVpbnRUeXBlOwotICAgIEhhc2hNYXA8QVNU
OjpFeHByZXNzaW9uKiwgc3RkOjp1bmlxdWVfcHRyPFJlc29sdmluZ1R5cGU+PiBtX3R5cGVNYXA7
Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fdmVydGV4RW50cnlQb2ludHNbQVNUOjpuYW1lU3BhY2VD
b3VudF07Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZnJhZ21lbnRFbnRyeVBvaW50c1tBU1Q6Om5h
bWVTcGFjZUNvdW50XTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9jb21wdXRlRW50cnlQb2ludHNb
QVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgY29uc3QgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNz
OwotICAgIFByb2dyYW0mIG1fcHJvZ3JhbTsKLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiog
bV9jdXJyZW50RnVuY3Rpb24geyBudWxscHRyIH07Ci0gICAgSGFzaE1hcDxGdW5jdGlvbktleSwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwg
MT4sIEZ1bmN0aW9uS2V5OjpIYXNoLCBGdW5jdGlvbktleTo6VHJhaXRzPiBtX2Z1bmN0aW9uczsK
LSAgICBBU1Q6Ok5hbWVTcGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6
U3RhbmRhcmRMaWJyYXJ5IH07Ci0gICAgYm9vbCBtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzIHsgZmFs
c2UgfTsKLX07Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAg
ICAvLyBUaGVzZSB2aXNpdGluZyBmdW5jdGlvbnMgbWlnaHQgYWRkIG5ldyBnbG9iYWwgc3RhdGVt
ZW50cywgc28gZG9uJ3QgdXNlIGZvcmVhY2ggc3ludGF4LgotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVyYXRp
b25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
cHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMo
KVtpXSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZp
bml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygp
W2ldKTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IENoZWNrZXI6OmFzc2lnblR5cGVzKCkK
LXsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG1fdHlwZU1hcCkgewotICAgICAgICBh
dXRvIHN1Y2Nlc3MgPSBrZXlWYWx1ZVBhaXIudmFsdWUtPnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewotICAgICAg
ICAgICAga2V5VmFsdWVQYWlyLmtleS0+c2V0VHlwZSh1bm5hbWVkVHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICBpZiAoIXJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1h
eWJlUmVzb2x2ZWRUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PGJv
b2w+KGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSkpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBrZXlWYWx1ZVBhaXIua2V5LT5zZXRUeXBlKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5y
ZXNvbHZhYmxlVHlwZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHJlc29sdmUgdGhlIHR5cGUgb2YgYSBj
b25zdGFudC4iKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotYm9vbCBDaGVja2Vy
OjpjaGVja1NoYWRlclR5cGUoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
RGVmaW5pdGlvbikKLXsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y3VycmVudE5hbWVTcGFjZSk7Ci0gICAgc3dpdGNoICgqZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5
UG9pbnRUeXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fdmVydGV4RW50cnlQb2ludHNbaW5kZXhd
LmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSk7Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9p
bnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fZnJh
Z21lbnRFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKTsK
LSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihtX2NvbXB1dGVFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0aW9u
RGVmaW5pdGlvbi5uYW1lKCkpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIG1faXNW
aXNpdGluZ1BhcmFtZXRlcnMgPSB0cnVlOwotICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVj
bGFyYXRpb24pOwotICAgIG1faXNWaXNpdGluZ1BhcmFtZXRlcnMgPSBmYWxzZTsKLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0
aW9uKQotewotICAgIG1fY3VycmVudE5hbWVTcGFjZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1l
U3BhY2UoKTsKLSAgICBtX2N1cnJlbnRGdW5jdGlvbiA9ICZmdW5jdGlvbkRlZmluaXRpb247Ci0g
ICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgICAgIGlm
ICghY2hlY2tTaGFkZXJUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbikpIHsKLSAgICAgICAgICAgIHNl
dEVycm9yKEVycm9yKCJEdXBsaWNhdGUgZW50cnlwb2ludCBmdW5jdGlvbi4iLCBmdW5jdGlvbkRl
ZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBhdXRvIGVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyht
X2ludHJpbnNpY3MsIGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmICghZW50cnlQb2lu
dEl0ZW1zKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihlbnRyeVBvaW50SXRlbXMuZXJyb3IoKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFjaGVja1NlbWFu
dGljcyhlbnRyeVBvaW50SXRlbXMtPmlucHV0cywgZW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBm
dW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSwgbV9pbnRyaW5zaWNzKSkgewotICAg
ICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkJhZCBzZW1hbnRpY3MgZm9yIGVudHJ5cG9pbnQuIiwg
ZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFjaGVja09wZXJhdG9yT3ZlcmxvYWQoZnVuY3Rp
b25EZWZpbml0aW9uKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiT3BlcmF0b3IgZG9lcyBu
b3QgbWF0Y2ggZXhwZWN0ZWQgc2lnbmF0dXJlLiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmlzaXRvcjo6dmlzaXQo
ZnVuY3Rpb25EZWZpbml0aW9uKTsKLX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBl
PiBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBlJiBsZWZ0LCBSZXNvbHZpbmdUeXBlJiByaWdo
dCkKLXsKLSAgICByZXR1cm4gbGVmdC52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNU
OjpVbm5hbWVkVHlwZT4mIGxlZnQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAg
ICAgIHJldHVybiByaWdodC52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4mIHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAg
ICAgaWYgKG1hdGNoZXMobGVmdCwgcmlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0
LmNvcHlSZWYoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LCBbJl0o
UmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6OlVu
bmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobGVmdCwgcmln
aHQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9KSk7Ci0gICAgfSwgWyZdKFJlZlB0cjxS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIGxlZnQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBl
PiB7Ci0gICAgICAgIHJldHVybiByaWdodC52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8
QVNUOjpVbm5hbWVkVHlwZT4mIHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewot
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KHJpZ2h0LCBsZWZ0LT5yZXNvbHZhYmxl
VHlwZSgpKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4m
IHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoQW5kQ29tbWl0KGxlZnQtPnJlc29sdmFibGVUeXBlKCksIHJpZ2h0LT5yZXNvbHZhYmxl
VHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0pKTsKLX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6
OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBl
LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5n
VHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJl
c29sdmluZ1R5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIGlmICht
YXRjaGVzKHVubmFtZWRUeXBlLCByZXNvbHZpbmdUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiAm
dW5uYW1lZFR5cGU7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0sIFsmXShSZWZQdHI8
UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZpbmdUeXBlKSAtPiBSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQodW5uYW1lZFR5cGUs
IHJlc29sdmluZ1R5cGUtPnJlc29sdmFibGVUeXBlKCkpOwotICAgIH0pKTsKLX0KLQotc3RhdGlj
IGJvb2wgbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpO
YW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc29sdmluZ1R5cGUp
IHsKLSAgICAgICAgaWYgKG1hdGNoZXMocmVzb2x2aW5nVHlwZSwgbmFtZWRUeXBlKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwgWyZdKFJl
ZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmluZ1R5cGUpIC0+IGJvb2wgewot
ICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobmFtZWRUeXBlLCByZXNvbHZpbmdUeXBlLT5y
ZXNvbHZhYmxlVHlwZSgpKTsKLSAgICB9KSk7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8QVNUOjpVbm5h
bWVkVHlwZT4gY29tbWl0KFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAgcmV0
dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5u
YW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAg
ICAgICAgcmV0dXJuIHVubmFtZWRUeXBlLmNvcHlSZWYoKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IFJlZlB0
cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIGlmICghcmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBjb21taXQocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkpOwot
ICAgICAgICByZXR1cm4gJnJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgp
LnJlc29sdmVkVHlwZSgpOwotICAgIH0pKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
KiBDaGVja2VyOjpyZXNvbHZlRnVuY3Rpb24oVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlTG9jYXRpb24g
bG9jYXRpb24sIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gdW5uYW1lZFR5cGVzOwot
ICAgIHVubmFtZWRUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHR5cGVzLnNpemUoKSk7Ci0K
LSAgICBmb3IgKGF1dG8gcmVzb2x2aW5nVHlwZSA6IHR5cGVzKSB7Ci0gICAgICAgIEFTVDo6VW5u
YW1lZFR5cGUqIHR5cGUgPSByZXNvbHZpbmdUeXBlLmdldCgpLnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IEFTVDo6VW5uYW1l
ZFR5cGUqIHsKLSAgICAgICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS5wdHIoKTsKLSAgICAgICAg
fSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgICAgICBpZiAocmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJnJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxl
VHlwZSgpLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAgICAgICBpZiAocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuaXNGbG9hdExpdGVyYWxUeXBlKCkKLSAgICAgICAg
ICAgICAgICB8fCByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5pc0lu
dGVnZXJMaXRlcmFsVHlwZSgpCi0gICAgICAgICAgICAgICAgfHwgcmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UtPnJlc29sdmFibGVUeXBlKCkuaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAmd3JhcHBlZEZsb2F0VHlwZSgpOwotCi0gICAgICAgICAg
ICByZXR1cm4gY29tbWl0KHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgp
KS5nZXQoKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIGlmICghdHlwZSkgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkNvdWxkIG5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIGEgY29uc3Rh
bnQuIikpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAg
ICB1bm5hbWVkVHlwZXMudW5jaGVja2VkQXBwZW5kKG5vcm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25L
ZXkoKnR5cGUpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fZnVuY3Rp
b25zLmZpbmQoRnVuY3Rpb25LZXkgeyBuYW1lLCBXVEZNb3ZlKHVubmFtZWRUeXBlcyksIGNhc3RS
ZXR1cm5UeXBlIH0pOwotICAgICAgICBpZiAoaXRlciAhPSBtX2Z1bmN0aW9ucy5lbmQoKSkgewot
ICAgICAgICAgICAgaWYgKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogZnVuY3Rpb24gPSByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZChpdGVyLT52YWx1ZSwgdHlwZXMsIGNhc3RSZXR1cm5UeXBlLCBt
X2N1cnJlbnROYW1lU3BhY2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRvIG5ld0Z1bmN0aW9uID0gcmVzb2x2ZUJ5SW5z
dGFudGlhdGlvbihuYW1lLCBsb2NhdGlvbiwgdHlwZXMsIG1faW50cmluc2ljcykpIHsKLSAgICAg
ICAgbV9wcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuZXdGdW5jdGlvbikpOwotICAgICAgICByZXR1
cm4gJm1fcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLmxhc3QoKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIGJvb2wg
aXNTaWduZWQ7Ci0gICAgYXV0byogYmFzZVR5cGUgPSAoWyZdKCkgLT4gQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24qIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uRGVm
aW5pdGlvbi50eXBlKCkpOwotICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9uRGVm
aW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYW1lZFR5
cGU+KGJhc2VUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRv
JiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpOwotICAgICAg
ICBpZiAoIWlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAg
ICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0ludCgpKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIGlzU2lnbmVkID0gbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
U2lnbmVkKCk7Ci0gICAgICAgIHJldHVybiAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0p
KCk7Ci0gICAgaWYgKCFiYXNlVHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSW52YWxp
ZCBiYXNlIHR5cGUgZm9yIGVudW0uIiwgZW51bWVyYXRpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlv
bigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGVudW1lcmF0aW9uTWVt
YmVycyA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKTsKLQotICAg
IGZvciAoYXV0byYgbWVtYmVyIDogZW51bWVyYXRpb25NZW1iZXJzKSB7Ci0gICAgICAgIGludDY0
X3QgdmFsdWUgPSBtZW1iZXIuZ2V0KCkudmFsdWUoKTsKLSAgICAgICAgaWYgKGlzU2lnbmVkKSB7
Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGljX2Nhc3Q8aW50MzJf
dD4odmFsdWUpKSAhPSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJ
bnZhbGlkIGVudW1lcmF0aW9uIHZhbHVlLiIsIG1lbWJlci5nZXQoKS5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50
MzJfdD4odmFsdWUpKSAhPSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9y
KCJJbnZhbGlkIGVudW1lcmF0aW9uIHZhbHVlLiIsIG1lbWJlci5nZXQoKS5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW51bWVyYXRpb25NZW1iZXJzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBlbnVtZXJhdGlvbk1lbWJlcnNbaV0u
Z2V0KCkudmFsdWUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgZW51bWVy
YXRpb25NZW1iZXJzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBhdXRvIG90aGVyVmFsdWUg
PSBlbnVtZXJhdGlvbk1lbWJlcnNbal0uZ2V0KCkudmFsdWUoKTsKLSAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSBvdGhlclZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNh
bm5vdCBkZWNsYXJlIGR1cGxpY2F0ZSBlbnVtZXJhdGlvbiB2YWx1ZXMuIiwgZW51bWVyYXRpb25N
ZW1iZXJzW2pdLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBmb3VuZFplcm8g
PSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVycykgewot
ICAgICAgICBpZiAoIW1lbWJlci5nZXQoKS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBmb3VuZFpl
cm8gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYg
KCFmb3VuZFplcm8pIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoImVudW0gZGVmaW5pdGlvbiBt
dXN0IGNvbnRhaW4gYSB6ZXJvIHZhbHVlLiIsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBBU1NFUlQodHlw
ZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLQotICAgIGZvciAoYXV0byYgdHlwZUFy
Z3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0eXBlQXJndW1lbnQpOwotfQotCi1hdXRvIENoZWNrZXI6OnJlY3Vyc2VBbmRH
ZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1
ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KLXsKLSAgICBWaXNpdG9yOjp2aXNpdChl
eHByZXNzaW9uKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gZ2V0SW5mbyhleHByZXNzaW9uLCByZXF1aXJlc0xlZnRWYWx1ZSk7
Ci19Ci0KLWF1dG8gQ2hlY2tlcjo6Z2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24s
IGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+Ci17
Ci0gICAgYXV0byB0eXBlSXRlcmF0b3IgPSBtX3R5cGVNYXAuZmluZCgmZXhwcmVzc2lvbik7Ci0g
ICAgQVNTRVJUKHR5cGVJdGVyYXRvciAhPSBtX3R5cGVNYXAuZW5kKCkpOwotCi0gICAgY29uc3Qg
YXV0byYgdHlwZUFubm90YXRpb24gPSBleHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCk7Ci0gICAg
aWYgKHJlcXVpcmVzTGVmdFZhbHVlICYmIHR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpKSB7
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJVbmV4cGVjdGVkIHJ2YWx1ZS4iLCBleHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
ICAgIHJldHVybiB7eyAqdHlwZUl0ZXJhdG9yLT52YWx1ZSwgdHlwZUFubm90YXRpb24gfX07Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJs
ZURlY2xhcmF0aW9uKQotewotICAgIC8vIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb25zIGFyZSB0
aGUgb25seSBwbGFjZSB3aGVyZSBhbm9ueW1vdXMgdmFyaWFibGVzIGV4aXN0LAotICAgIC8vIGFu
ZCB0aGF0IGRvZXNuJ3QgcmVjdXJzZSBvbiB0aGUgYW5vbnltb3VzIHZhcmlhYmxlcywgc28gd2Ug
Y2FuIGFzc3VtZSB0aGUgdmFyaWFibGUgaGFzIGEgdHlwZS4KLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBpZiAobWF0Y2hlcygqdmFyaWFi
bGVEZWNsYXJhdGlvbi50eXBlKCksIG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkgewotICAgICAg
ICBzZXRFcnJvcihFcnJvcigiVmFyaWFibGVzIGNhbid0IGhhdmUgdm9pZCB0eXBlLiIsIHZhcmlh
YmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIGF1
dG8mIGxoc1R5cGUgPSAqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCk7Ci0gICAgICAgIGF1dG8g
aW5pdGlhbGl6ZXJJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oKnZhcmlhYmxlRGVjbGFyYXRpb24u
aW5pdGlhbGl6ZXIoKSk7Ci0gICAgICAgIGlmICghaW5pdGlhbGl6ZXJJbmZvKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAoIW1hdGNoQW5kQ29tbWl0KGluaXRpYWxpemVySW5mby0+
cmVzb2x2aW5nVHlwZSwgbGhzVHlwZSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJE
ZWNsYXJlZCB2YXJpYWJsZSB0eXBlIGRvZXMgbm90IG1hdGNoIGl0cyBpbml0aWFsaXplcidzIHR5
cGUuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghbV9pc1Zpc2l0aW5nUGFyYW1ldGVy
cyAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpLT51
bmlmeU5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHZhcmlhYmxl
RGVjbGFyYXRpb24udHlwZSgpLT51bmlmeU5vZGUoKSkpCi0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiTXVzdCBhc3NpZ24gdG8gYSBwb2ludGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIGl0
cyBpbml0aWFsaXplci4iLCB2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VU
eXBlPih2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAg
ICAgIHNldEVycm9yKEVycm9yKCJNdXN0IGFzc2lnbiB0byBhbiBhcnJheSByZWZlcmVuY2UgdmFy
aWFibGUgZGVjbGFyYXRpb24gaW4gaXRzIGluaXRpYWxpemVyLiIsIHZhcmlhYmxlRGVjbGFyYXRp
b24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQot
fQotCi12b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4
cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5hbWVkVHlwZSwgQVNUOjpUeXBlQW5u
b3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQotewotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZp
bmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3Rh
dGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWdu
Q29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgQVNUOjpOYW1lZFR5cGUm
IHR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gYW5ub3RhdGlvbikKLXsKLSAgICBhdXRvIHVubmFt
ZWRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKHR5cGUuY29kZUxvY2F0aW9uKCksIHR5
cGUpOwotICAgIFZpc2l0b3I6OnZpc2l0KHVubmFtZWRUeXBlKTsKLSAgICBhc3NpZ25Db25jcmV0
ZVR5cGUoZXhwcmVzc2lvbiwgV1RGTW92ZSh1bm5hbWVkVHlwZSksIGFubm90YXRpb24pOwotfQot
Ci12b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBS
ZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBB
U1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCi17
Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5p
cXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBl
eHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKLX0K
LQotdm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24s
IFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFu
bm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsKLSAgICByZXNvbHZpbmdUeXBlLnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzdWx0KSB7Ci0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVu
aXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfSwgWyZdKFJlZlB0
cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlw
ZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0pKTsKLSAgICBleHByZXNzaW9uLnNldFR5cGVB
bm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2
aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsK
LSAgICBhdXRvIGxlZnRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oYXNzaWdubWVudEV4cHJlc3Np
b24ubGVmdCgpLCB0cnVlKTsKLSAgICBpZiAoIWxlZnRJbmZvKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIHJpZ2h0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFzc2lnbm1lbnRFeHByZXNz
aW9uLnJpZ2h0KCkpOwotICAgIGlmICghcmlnaHRJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIHJlc3VsdFR5cGUgPSBtYXRjaEFuZENvbW1pdChsZWZ0SW5mby0+cmVzb2x2aW5nVHlw
ZSwgcmlnaHRJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIXJlc3VsdFR5cGUpIHsKLSAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkxlZnQgaGFuZCBzaWRlIG9mIGFzc2lnbm1lbnQgZG9lcyBu
b3QgbWF0Y2ggdGhlIHR5cGUgb2YgdGhlIHJpZ2h0IGhhbmQgc2lkZS4iLCBhc3NpZ25tZW50RXhw
cmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
YXNzaWduQ29uY3JldGVUeXBlKGFzc2lnbm1lbnRFeHByZXNzaW9uLCAqcmVzdWx0VHlwZSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiBy
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdFZhbHVlSW5mbyA9IHJl
Y3Vyc2VBbmRHZXRJbmZvKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCksIHRy
dWUpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYWx1ZSgpLnNldFR5cGUoKmxlZnRWYWx1ZUluZm8t
PnJlc29sdmluZ1R5cGUuZ2V0VW5uYW1lZFR5cGUoKSk7Ci0KLSAgICBhdXRvIG5ld1ZhbHVlSW5m
byA9IHJlY3Vyc2VBbmRHZXRJbmZvKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVF
eHByZXNzaW9uKCkpOwotICAgIGlmICghbmV3VmFsdWVJbmZvKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoZWRUeXBlID0gbWF0Y2hBbmRD
b21taXQobGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSwgbmV3VmFsdWVJbmZvLT5yZXNvbHZp
bmdUeXBlKSkKLSAgICAgICAgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZSgpLnNl
dFR5cGUoKm1hdGNoZWRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IkJhc2Ugb2YgdGhlIHJlYWQtbW9kaWZ5LXdyaXRlIGV4cHJlc3Npb24gZG9lcyBub3QgbWF0Y2gg
dGhlIHR5cGUgb2YgdGhlIG5ldyB2YWx1ZS4iLCByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmNv
ZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHJlc3Vs
dEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3Vs
dEV4cHJlc3Npb24oKSk7Ci0gICAgaWYgKCFyZXN1bHRJbmZvKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3J3YXJkVHlwZShyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCByZXN1bHRJbmZvLT5y
ZXNvbHZpbmdUeXBlLCBBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci19Ci0KLXN0YXRpYyBBU1Q6OlVubmFt
ZWRUeXBlKiBnZXRVbm5hbWVkVHlwZShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKQotewot
ICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiB0eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0gICAgICAgIHJl
dHVybiB0eXBlLnB0cigpOwotICAgIH0sIFtdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZT4mIHR5cGUpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsKLSAgICAgICAgLy8gRklYTUU6IElmIHRo
ZSB0eXBlIGlzbid0IGNvbW1pdHRlZCwgc2hvdWxkIHdlIGp1c3QgY29tbWl0KCkgaXQgbm93Pwot
ICAgICAgICByZXR1cm4gdHlwZS0+cmVzb2x2YWJsZVR5cGUoKS5tYXliZVJlc29sdmVkVHlwZSgp
OwotICAgIH0pKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhw
cmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGF1dG8gcG9pbnRlckluZm8g
PSByZWN1cnNlQW5kR2V0SW5mbyhkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLSAg
ICBpZiAoIXBvaW50ZXJJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiB1bm5hbWVk
VHlwZSA9IGdldFVubmFtZWRUeXBlKHBvaW50ZXJJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLQotICAg
IGF1dG8qIHBvaW50ZXJUeXBlID0gKFsmXShBU1Q6OlVubmFtZWRUeXBlKiB1bm5hbWVkVHlwZSkg
LT4gQVNUOjpQb2ludGVyVHlwZSogewotICAgICAgICBpZiAoIXVubmFtZWRUeXBlKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHVubmFtZWRU
eXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlm
eU5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVubmFt
ZWRVbmlmeVR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAg
ICAgICBpZiAoIWlzPEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRVbmlmeVR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpQb2lu
dGVyVHlwZT4odW5uYW1lZFVuaWZ5VHlwZSk7Ci0gICAgfSkodW5uYW1lZFR5cGUpOwotICAgIGlm
ICghcG9pbnRlclR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZXJlZmVy
ZW5jZSBhIG5vbi1wb2ludGVyIHR5cGUuIiwgZGVyZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCBwb2ludGVyVHlwZS0+ZWxlbWVudFR5cGUoKSwgQVNU
OjpMZWZ0VmFsdWUgeyBwb2ludGVyVHlwZS0+YWRkcmVzc1NwYWNlKCkgfSk7Ci19Ci0KLXZvaWQg
Q2hlY2tlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhw
cmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRWYWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyht
YWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVlKCksIHRydWUpOwotICAgIGlmICghbGVmdFZh
bHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0g
bGVmdFZhbHVlSW5mby0+dHlwZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgpOwotICAgIGlm
ICghbGVmdEFkZHJlc3NTcGFjZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHRh
a2UgdGhlIGFkZHJlc3Mgb2YgYSBub24gbHZhbHVlLiIsIG1ha2VQb2ludGVyRXhwcmVzc2lvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogbGVm
dFZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKGxlZnRWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUp
OwotICAgIGlmICghbGVmdFZhbHVlVHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IHRha2UgdGhlIGFkZHJlc3Mgb2YgYSB2YWx1ZSB3aXRob3V0IGEgdHlwZS4iLCBtYWtlUG9p
bnRlckV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlUG9pbnRlckV4cHJlc3Npb24sIEFTVDo6UG9p
bnRlclR5cGU6OmNyZWF0ZShtYWtlUG9pbnRlckV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksICps
ZWZ0QWRkcmVzc1NwYWNlLCAqbGVmdFZhbHVlVHlwZSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRWYWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5m
byhtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBpZiAoIWxl
ZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGxlZnRWYWx1ZVR5cGUg
PSBnZXRVbm5hbWVkVHlwZShsZWZ0VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAo
IWxlZnRWYWx1ZVR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBtYWtlIGFu
IGFycmF5IHJlZmVyZW5jZSBvZiBhIHZhbHVlIHdpdGhvdXQgYSB0eXBlLiIsIG1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IGxlZnRWYWx1ZVR5cGUtPnVuaWZ5Tm9kZSgpOwot
ICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgIGF1dG8m
IHVubmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAg
ICAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAg
ICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVk
VHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2Uo
KSwgcG9pbnRlclR5cGUuZWxlbWVudFR5cGUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gbGVmdFZhbHVlSW5mby0+
dHlwZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgpOwotICAgICAgICBpZiAoIWxlZnRBZGRy
ZXNzU3BhY2UpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgbWFrZSBhbiBh
cnJheSByZWZlcmVuY2UgZnJvbSBhIG5vbi1sZWZ0LXZhbHVlLiIsIG1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5u
YW1lZFR5cGUpOwotICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTgxNjMgU2F2ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzLgotICAg
ICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24s
IEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNzU3BhY2UsIGFycmF5VHlwZS50eXBlKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gbGVm
dEFkZHJlc3NTcGFjZSA9IGxlZnRWYWx1ZUluZm8tPnR5cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNz
U3BhY2UoKTsKLSAgICBpZiAoIWxlZnRBZGRyZXNzU3BhY2UpIHsKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVyZW5jZSBmcm9tIGEgbm9uLWxlZnQtdmFs
dWUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNzU3BhY2Us
ICpsZWZ0VmFsdWVUeXBlKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpEb3RFeHBy
ZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIGF1dG8gYmFzZUluZm8gPSByZWN1cnNlQW5k
R2V0SW5mbyhkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgaWYgKCFiYXNlSW5mbykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byBiYXNlVW5uYW1lZFR5cGUgPSBjb21taXQoYmFzZUluZm8t
PnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghYmFzZVVubmFtZWRUeXBlKSB7Ci0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiB0aGUgYmFzZSBvZiBhIGRv
dCBleHByZXNzaW9uLiIsIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIHR5cGUgPSBiYXNlVW5uYW1lZFR5cGUtPnVuaWZ5
Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpKSB7Ci0g
ICAgICAgIGF1dG8mIHN0cnVjdHVyZSA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
bj4odHlwZSk7ICAgIAotICAgICAgICBpZiAoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50KiBlbGVtZW50
ID0gc3RydWN0dXJlLmZpbmQoZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSkpCi0gICAgICAgICAg
ICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgZWxlbWVudC0+dHlwZSgpLCBiYXNl
SW5mby0+dHlwZUFubm90YXRpb24pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNldEVy
cm9yKEVycm9yKG1ha2VTdHJpbmcoIkZpZWxkIG5hbWU6ICciLCBkb3RFeHByZXNzaW9uLmZpZWxk
TmFtZSgpLCAiJyBkb2VzIG5vdCBleGlzdCBvbiBzdHJ1Y3R1cmU6ICIsIHN0cnVjdHVyZS5uYW1l
KCkpLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkgPT0g
Imxlbmd0aCIpIHsKLSAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBl
KQotICAgICAgICAgICAgfHwgaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpCi0gICAgICAgICAgICB8
fCAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5pc1ZlY3RvcigpKSkgewotICAgICAgICAgICAg
YXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIHdyYXBwZWRVaW50VHlwZSgpLCBBU1Q6
OlJpZ2h0VmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiLmxlbmd0aCBmaWVsZCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBhcnJheXMsIGFycmF5IHJl
ZmVyZW5jZXMsIG9yIHZlY3RvcnMuIiwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KHR5cGUpLmlzVmVjdG9yKCkpIHsKLSAgICAgICAgaWYgKCFtX3Byb2dyYW0uaXNW
YWxpZFZlY3RvclByb3BlcnR5KGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKSB7Ci0gICAgICAg
ICAgICBzZXRFcnJvcihFcnJvcihtYWtlU3RyaW5nKCInLiIsIGRvdEV4cHJlc3Npb24uZmllbGRO
YW1lKCksICInIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG9uIGEgdmVjdG9yLiIpLCBkb3RFeHBy
ZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBhdXRvIHR5cGVBbm5vdGF0aW9uID0gYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9u
LmlzUmlnaHRWYWx1ZSgpID8gQVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6UmlnaHRWYWx1ZSgp
IH0gOiBBU1Q6OlR5cGVBbm5vdGF0aW9uIHsgQVNUOjpBYnN0cmFjdExlZnRWYWx1ZSgpIH07Ci0K
LSAgICAgICAgc2l6ZV90IGZpZWxkTGVuZ3RoID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKS5s
ZW5ndGgoKTsKLSAgICAgICAgYXV0byYgaW5uZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KHR5cGUpLnZlY3RvclR5cGVBcmd1bWVudCgpOwotICAgICAgICBpZiAo
ZmllbGRMZW5ndGggPT0gMSkKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHBy
ZXNzaW9uLCBpbm5lclR5cGUsIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSkK
LSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRy
aW5zaWNzLmJvb2xWZWN0b3JUeXBlRm9yU2l6ZShmaWVsZExlbmd0aCksIHR5cGVBbm5vdGF0aW9u
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3Mu
aW50VHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVz
c2lvbiwgbV9pbnRyaW5zaWNzLmludFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlw
ZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1f
aW50cmluc2ljcy51aW50VHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLnVpbnRWZWN0b3JUeXBlRm9yU2l6ZShmaWVs
ZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMo
aW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuZmxvYXRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuZmxvYXRWZWN0b3JU
eXBlRm9yU2l6ZShmaWVsZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJCYXNlIHZhbHVlIG9mIGRv
dCBleHByZXNzaW9uIG11c3QgYmUgYSBzdHJ1Y3R1cmUsIGFycmF5LCBvciB2ZWN0b3IuIiwgZG90
RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFT
VDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pCi17Ci0gICAgewotICAgICAgICBh
dXRvIGluZGV4SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGluZGV4RXhwcmVzc2lvbi5pbmRleEV4
cHJlc3Npb24oKSk7Ci0gICAgICAgIGlmICghaW5kZXhJbmZvKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQoaW5kZXhJbmZvLT5yZXNvbHZpbmdUeXBl
LCBtX2ludHJpbnNpY3MudWludFR5cGUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9y
KCJJbmRleCBpbiBhbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgYSB1aW50LiIsIGluZGV4RXhw
cmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgYXV0byBiYXNlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGluZGV4RXhw
cmVzc2lvbi5iYXNlKCkpOwotICAgIGlmICghYmFzZUluZm8pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8gYmFzZVVubmFtZWRUeXBlID0gY29tbWl0KGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBl
KTsKLSAgICBpZiAoIWJhc2VVbm5hbWVkVHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigi
Q2Fubm90IHJlc29sdmUgdGhlIHR5cGUgb2YgdGhlIGJhc2Ugb2YgYW4gaW5kZXggZXhwcmVzc2lv
bi4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGF1dG8mIHR5cGUgPSBiYXNlVW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwot
ICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSkpIHsKLSAgICAgICAgYXV0
byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KHR5cGUpOwotICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9uLCBhcnJh
eVJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSwgQVNUOjpMZWZ0VmFsdWUgeyBhcnJheVJlZmVy
ZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgfSk7Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5
VHlwZT4odHlwZSkpCi0gICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShpbmRleEV4cHJlc3Npb24s
IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS50eXBlKCksIGJhc2VJbmZvLT50eXBlQW5u
b3RhdGlvbik7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5
cGUpKSB7Ci0gICAgICAgIGF1dG8mIG5hdGl2ZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4odHlwZSk7Ci0gICAgICAgIGF1dG8gdHlwZUFubm90YXRpb24gPSBiYXNl
SW5mby0+dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkgPyBBU1Q6OlR5cGVBbm5vdGF0aW9u
IHsgQVNUOjpSaWdodFZhbHVlKCkgfSA6IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OkFic3Ry
YWN0TGVmdFZhbHVlKCkgfTsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUuaXNWZWN0b3IoKSkKLSAg
ICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShpbmRleEV4cHJlc3Npb24sIG5hdGl2ZVR5cGUu
dmVjdG9yVHlwZUFyZ3VtZW50KCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgZWxzZSBpZiAo
bmF0aXZlVHlwZS5pc01hdHJpeCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpbm5lclR5cGUgPSBu
YXRpdmVUeXBlLm1hdHJpeFR5cGVBcmd1bWVudCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbnVt
Um93cyA9IG5hdGl2ZVR5cGUubnVtYmVyT2ZNYXRyaXhSb3dzKCk7Ci0gICAgICAgICAgICBpZiAo
bWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSkKLSAgICAgICAgICAg
ICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuYm9v
bFZlY3RvclR5cGVGb3JTaXplKG51bVJvd3MpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKSkK
LSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHByZXNzaW9uLCBtX2lu
dHJpbnNpY3MuZmxvYXRWZWN0b3JUeXBlRm9yU2l6ZShudW1Sb3dzKSwgdHlwZUFubm90YXRpb24p
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
SW5kZXggZXhwcmVzc2lvbiBvbiB1bmtub3duIHR5cGUuIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVM
b2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSW5kZXggZXhwcmVzc2lvbiBvbiBhbiB1bmtub3du
IGJhc2UgdHlwZS4gQmFzZSB0eXBlIG11c3QgYmUgYW4gYXJyYXksIGFycmF5IHJlZmVyZW5jZSwg
dmVjdG9yLCBvciBtYXRyaXguIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJp
YWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxl
UmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAgIEFTU0VSVCh2YXJpYWJsZVJlZmVyZW5jZS52YXJp
YWJsZSgpLT50eXBlKCkpOwotICAgIAotICAgIGFzc2lnbkNvbmNyZXRlVHlwZSh2YXJpYWJsZVJl
ZmVyZW5jZSwgKnZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCktPnR5cGUoKSwgQVNUOjpMZWZ0
VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotfQotCi12b2lkIENoZWNrZXI6
OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQpCi17Ci0gICAgaWYgKHJldHVyblN0
YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8oKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCF2YWx1ZUluZm8p
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQodmFsdWVJ
bmZvLT5yZXNvbHZpbmdUeXBlLCBtX2N1cnJlbnRGdW5jdGlvbi0+dHlwZSgpKSkKLSAgICAgICAg
ICAgIHNldEVycm9yKEVycm9yKCJUeXBlIG9mIHRoZSByZXR1cm4gdmFsdWUgbXVzdCBtYXRjaCB0
aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLiIsIHJldHVyblN0YXRlbWVudC5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtYXRjaGVzKG1f
Y3VycmVudEZ1bmN0aW9uLT50eXBlKCksIG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkKLSAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXR1cm4gYSB2YWx1ZSBmcm9tIGEgdm9pZCBmdW5j
dGlvbi4iLCByZXR1cm5TdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikKLXsKLSAgICAvLyBGb2xsb3dpbmcgcG9pbnRl
ciB0eXBlcyBjYW4gY2F1c2UgaW5maW5pdGUgbG9vcHMgYmVjYXVzZSBvZiBkYXRhIHN0cnVjdHVy
ZXMKLSAgICAvLyBsaWtlIGxpbmtlZCBsaXN0cy4KLSAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRo
aXMgZnVuY3Rpb24gc2hvdWxkIGJlIGVtcHR5Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNU
OjpBcnJheVJlZmVyZW5jZVR5cGUmKQotewotICAgIC8vIEZvbGxvd2luZyBhcnJheSByZWZlcmVu
Y2UgdHlwZXMgY2FuIGNhdXNlIGluZmluaXRlIGxvb3BzIGJlY2F1c2Ugb2YgZGF0YQotICAgIC8v
IHN0cnVjdHVyZXMgbGlrZSBsaW5rZWQgbGlzdHMuCi0gICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0
aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBlbXB0eQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFT
VDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUoaW50
ZWdlckxpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UoaW50ZWdl
ckxpdGVyYWwudHlwZSgpKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhc3NpZ25U
eXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBhc3Np
Z25UeXBlKGZsb2F0TGl0ZXJhbCwgYWRvcHRSZWYoKm5ldyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZShmbG9hdExpdGVyYWwudHlwZSgpKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKQotewotICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShib29sZWFuTGl0ZXJhbCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGJvb2xlYW5MaXRlcmFs
LmNvZGVMb2NhdGlvbigpLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwpCi17Ci0gICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVt
ZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0g
KmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKTsKLSAgICBh
c3NpZ25Db25jcmV0ZVR5cGUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmNvZGVMb2NhdGlvbigpLCBlbnVt
ZXJhdGlvbkRlZmluaXRpb24pKTsKLX0KLQotYm9vbCBDaGVja2VyOjppc0Jvb2xUeXBlKFJlc29s
dmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlz
aXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiBsZWZ0KSAtPiBi
b29sIHsKLSAgICAgICAgcmV0dXJuIG1hdGNoZXMobGVmdCwgbV9pbnRyaW5zaWNzLmJvb2xUeXBl
KCkpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAt
PiBib29sIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0
KG1faW50cmluc2ljcy5ib29sVHlwZSgpLCBsZWZ0LT5yZXNvbHZhYmxlVHlwZSgpKSk7Ci0gICAg
fSkpOwotfQotCi1ib29sIENoZWNrZXI6OnJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGF1dG8gZXhwcmVzc2lvbkluZm8gPSByZWN1
cnNlQW5kR2V0SW5mbyhleHByZXNzaW9uKTsKLSAgICBpZiAoIWV4cHJlc3Npb25JbmZvKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFpc0Jvb2xUeXBlKGV4cHJlc3Npb25JbmZvLT5y
ZXNvbHZpbmdUeXBlKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgYm9vbCB0
eXBlIGZyb20gZXhwcmVzc2lvbi4iLCBleHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNhbE5vdEV4cHJlc3Np
b24pCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGxvZ2ljYWxOb3RFeHBy
ZXNzaW9uLm9wZXJhbmQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBhc3NpZ25Db25jcmV0ZVR5
cGUobG9naWNhbE5vdEV4cHJlc3Npb24sIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2dpY2Fs
Tm90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsK
LX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2Fs
RXhwcmVzc2lvbikKLXsKLSAgICBpZiAoIXJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUobG9naWNh
bEV4cHJlc3Npb24ubGVmdCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghcmVjdXJzZUFu
ZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShsb2dpY2FsRXhwcmVzc2lvbiwgQVNUOjpUeXBl
UmVmZXJlbmNlOjp3cmFwKGxvZ2ljYWxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBtX2ludHJp
bnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6SWZTdGF0
ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlw
ZShpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgIGlmIChpZlN0YXRlbWVudC5l
bHNlQm9keSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VC
b2R5KCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxv
b3ApCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKHdoaWxlTG9vcC5jb25k
aXRpb25hbCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGls
ZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29w
JiBkb1doaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxvb3AuYm9k
eSgpKTsKLSAgICByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGRvV2hpbGVMb29wLmNvbmRpdGlv
bmFsKCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAg
ICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChmb3JMb29wLmNvbmRp
dGlvbigpKSB7Ci0gICAgICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZSgqZm9yTG9v
cC5jb25kaXRpb24oKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChmb3JM
b29wLmluY3JlbWVudCgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuaW5j
cmVtZW50KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmJvZHkoKSk7Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVu
dCkKLXsKLSAgICBhdXRvKiB2YWx1ZVR5cGUgPSAoWyZdKCkgLT4gQVNUOjpOYW1lZFR5cGUqIHsK
LSAgICAgICAgYXV0byB2YWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhzd2l0Y2hTdGF0ZW1l
bnQudmFsdWUoKSk7Ci0gICAgICAgIGlmICghdmFsdWVJbmZvKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIHZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKHZhbHVl
SW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgICAgIGlmICghdmFsdWVUeXBlKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHZhbHVlVW5pZnlOb2RlID0gdmFsdWVU
eXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6Ok5hbWVkVHlwZT4odmFsdWVV
bmlmeU5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHZh
bHVlTmFtZWRVbmlmeU5vZGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odmFsdWVVbmlmeU5v
ZGUpOwotICAgICAgICBpZiAoIShpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odmFsdWVO
YW1lZFVuaWZ5Tm9kZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHZh
bHVlTmFtZWRVbmlmeU5vZGUpLmlzSW50KCkpCi0gICAgICAgICAgICAmJiAhaXM8QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24+KHZhbHVlTmFtZWRVbmlmeU5vZGUpKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAmdmFsdWVOYW1lZFVuaWZ5Tm9kZTsKLSAgICB9
KSgpOwotICAgIGlmICghdmFsdWVUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbnZh
bGlkIHR5cGUgZm9yIHRoZSBleHByZXNzaW9uIGNvbmRpdGlvbiBvZiB0aGUgc3dpdGNoIHN0YXRl
bWVudC4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGJvb2wgaGFzRGVmYXVsdCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYg
c3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwotICAgICAgICBpZiAoIXN3aXRj
aENhc2UudmFsdWUoKSkgewotICAgICAgICAgICAgaGFzRGVmYXVsdCA9IHRydWU7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBzd2l0Y2hD
YXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVy
YWwmIGludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCBpbnRlZ2VyTGl0ZXJhbC50eXBl
KCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVy
YWwpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNo
QW5kQ29tbWl0KCp2YWx1ZVR5cGUsIGZsb2F0TGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwg
WyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBt
YXRjaGVzKCp2YWx1ZVR5cGUsIG1faW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICAgICAgfSwg
WyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwpIC0+IGJvb2wgewotICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygq
dmFsdWVUeXBlLCAqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlv
bigpKTsKLSAgICAgICAgfSkpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJJbnZhbGlkIHR5cGUgZm9yIHN3aXRjaCBjYXNlLiIsIHN3aXRjaENh
c2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3dpdGNoU3RhdGVtZW50LnN3aXRjaENh
c2VzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgZmlyc3RDYXNlID0gc3dpdGNoU3Rh
dGVtZW50LnN3aXRjaENhc2VzKClbaV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsg
aiA8IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpLnNpemUoKTsgKytqKSB7Ci0gICAgICAg
ICAgICBhdXRvJiBzZWNvbmRDYXNlID0gc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKClbal07
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihmaXJzdENh
c2UudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4oc2Vjb25kQ2FzZS52YWx1ZSgpKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxi
b29sPihmaXJzdENhc2UudmFsdWUoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJv
cigiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBkZWZhdWx0IGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1l
bnQuIiwgc2Vjb25kQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzdWNjZXNzID0gZmlyc3RDYXNl
LnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwm
IGZpcnN0SW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiBz
ZWNvbmRDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdl
ckxpdGVyYWwmIHNlY29uZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZpcnN0SW50ZWdlckxpdGVyYWwudmFsdWUoKSAhPSBzZWNvbmRJbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3RJbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzZWNvbmRVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
fSkpOwotICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgZmly
c3RVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Oklu
dGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihmaXJzdFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2Vjb25kSW50ZWdlckxp
dGVyYWwudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUo
KSAhPSBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAg
ICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgc2Vjb25kRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSAhPSBzZWNvbmRFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKTsKLSAgICAgICAgICAgICAg
ICB9LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAg
ICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJD
YW5ub3QgZGVmaW5lIGR1cGxpY2F0ZSBjYXNlIHN0YXRlbWVudHMgaW4gYSBzd2l0Y2guIiwgc2Vj
b25kQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghaGFzRGVmYXVsdCkgewotICAg
ICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp2YWx1ZVR5cGUpKSB7Ci0g
ICAgICAgICAgICBIYXNoU2V0PGludDY0X3Q+IHZhbHVlczsKLSAgICAgICAgICAgIGJvb2wgemVy
b1ZhbHVlRXhpc3RzOwotICAgICAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNo
U3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0g
c3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVn
ZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC52YWx1ZUZvclNlbGVjdGVkVHlwZSgpOwotICAgICAg
ICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50
ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZUZvclNlbGVjdGVkVHlwZSgpOwotICAgICAgICAgICAg
ICAgIH0sIFtdKGF1dG8mKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAg
ICAgICB6ZXJvVmFsdWVFeGlzdHMgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWVzLmFkZCh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KCp2YWx1ZVR5cGUpLml0ZXJhdGVBbGxWYWx1ZXMoWyZdKGludDY0
X3QgdmFsdWUpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCF6ZXJvVmFsdWVFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXMuY29u
dGFpbnModmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYg
KCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlN3aXRjaCBjYXNl
cyBtdXN0IGJlIGV4aGF1c3RpdmUgb3IgeW91IG11c3QgZGVmaW5lIGEgZGVmYXVsdCBjYXNlLiIs
IHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8
QVNUOjpFbnVtZXJhdGlvbk1lbWJlcio+IHZhbHVlczsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
c3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVy
YXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hZGQoZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgIH0s
IFtdKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoYXV0
byYgZW51bWVyYXRpb25NZW1iZXIgOiBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bj4oKnZhbHVlVHlwZSkuZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlcy5jb250YWlucygmZW51bWVyYXRpb25NZW1iZXIuZ2V0KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0Y2ggY2FzZXMgb3ZlciBhbiBlbnVtIG11
c3QgYmUgZXhoYXVzdGl2ZSBvciB5b3UgbXVzdCBkZWZpbmUgYSBkZWZhdWx0IGNhc2UuIiwgc3dp
dGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVz
c2lvbikKLXsKLSAgICBBU1NFUlQoY29tbWFFeHByZXNzaW9uLmxpc3QoKS5zaXplKCkgPiAwKTsK
LSAgICBWaXNpdG9yOjp2aXNpdChjb21tYUV4cHJlc3Npb24pOwotICAgIGlmIChoYXNFcnJvcigp
KQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBsYXN0SW5mbyA9IGdldEluZm8oY29tbWFFeHBy
ZXNzaW9uLmxpc3QoKS5sYXN0KCkpOwotICAgIGZvcndhcmRUeXBlKGNvbW1hRXhwcmVzc2lvbiwg
bGFzdEluZm8tPnJlc29sdmluZ1R5cGUpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQotewotICAgIGF1dG8gcHJlZGlj
YXRlSW5mbyA9IHJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5cGUodGVybmFyeUV4cHJlc3Npb24ucHJl
ZGljYXRlKCkpOwotICAgIGlmICghcHJlZGljYXRlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBib2R5SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHRlcm5hcnlFeHByZXNzaW9uLmJv
ZHlFeHByZXNzaW9uKCkpOwotICAgIGF1dG8gZWxzZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyh0
ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLSAgICAKLSAgICBhdXRvIHJlc3Vs
dFR5cGUgPSBtYXRjaEFuZENvbW1pdChib2R5SW5mby0+cmVzb2x2aW5nVHlwZSwgZWxzZUluZm8t
PnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghcmVzdWx0VHlwZSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigibGhzIGFuZCByaHMgb2YgYSB0ZXJuYXJ5IGV4cHJlc3Npb24gbXVzdCBtYXRjaC4i
LCB0ZXJuYXJ5RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKHRlcm5hcnlFeHByZXNzaW9uLCAqcmVzdWx0
VHlwZSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2Fs
bEV4cHJlc3Npb24pCi17Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2
aW5nVHlwZT4+IHR5cGVzOwotICAgIHR5cGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FsbEV4
cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDog
Y2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAgICAgICAgYXV0byBhcmd1bWVudEluZm8g
PSByZWN1cnNlQW5kR2V0SW5mbyhhcmd1bWVudCk7Ci0gICAgICAgIGlmICghYXJndW1lbnRJbmZv
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0eXBlcy51bmNoZWNrZWRBcHBlbmQoYXJn
dW1lbnRJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICB9Ci0gICAgLy8gRG9uJ3QgcmVjdXJzZSBv
biB0aGUgY2FzdFJldHVyblR5cGUsIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIHRvIGJlIGEgTmFt
ZWRUeXBlLCB3aGljaCB3aWxsIGdldCB2aXNpdGVkIGxhdGVyLgotICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gcmVjdXJzZSB0byB0aGUgc2FtZSBub2RlIHR3aWNlLgotCi0gICAgYXV0byogZnVuY3Rp
b24gPSByZXNvbHZlRnVuY3Rpb24odHlwZXMsIGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4
cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgIE5hbWVDb250ZXh0JiBuYW1l
Q29udGV4dCA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4dCgpOwotICAgICAgICBhdXRvIGNhc3RUeXBl
cyA9IG5hbWVDb250ZXh0LmdldFR5cGVzKGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgbV9jdXJyZW50
TmFtZVNwYWNlKTsKLSAgICAgICAgaWYgKGNhc3RUeXBlcy5zaXplKCkgPT0gMSkgewotICAgICAg
ICAgICAgQVNUOjpOYW1lZFR5cGUmIGNhc3RUeXBlID0gY2FzdFR5cGVzWzBdLmdldCgpOwotICAg
ICAgICAgICAgZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24odHlwZXMsICJvcGVyYXRvciBjYXN0
Il9zdHIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCAmY2FzdFR5cGUpOwotICAgICAg
ICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgaWYgKGZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGNhbGxFeHByZXNzaW9uLnNldENhc3RE
YXRhKGNhc3RUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghZnVuY3Rpb24pIHsK
LSAgICAgICAgLy8gRklYTUU6IEFkZCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMgZm9yIHdoeSB3ZSBj
YW4ndCByZXNvbHZlIHRvIG9uZSBvZiB0aGUgb3ZlcnJpZGVzLgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTMzCi0gICAgICAgIHNldEVycm9y
KEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBjYWxsIHRvIGEgY29uY3JldGUgY2FsbGVl
LiBNYWtlIHN1cmUgeW91IGFyZSB1c2luZyBjb21wYXRpYmxlIHR5cGVzLiIsIGNhbGxFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdCh0eXBlc1tpXS5nZXQoKSwgKmZ1bmN0aW9uLT5w
YXJhbWV0ZXJzKClbaV0tPnR5cGUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKG1h
a2VTdHJpbmcoIkludmFsaWQgdHlwZSBmb3IgcGFyYW1ldGVyIG51bWJlciAiLCBpICsgMSwgIiBp
biBmdW5jdGlvbiBjYWxsLiIpLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2FsbEV4cHJlc3Npb24u
c2V0RnVuY3Rpb24oKmZ1bmN0aW9uKTsKLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShjYWxsRXhw
cmVzc2lvbiwgZnVuY3Rpb24tPnR5cGUoKSk7Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBj
aGVjayhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIENoZWNrZXIgY2hlY2tlcihwcm9ncmFtLmlu
dHJpbnNpY3MoKSwgcHJvZ3JhbSk7Ci0gICAgY2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJv
Z3JhbSk7Ci0gICAgaWYgKGNoZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIGNoZWNr
ZXIucmVzdWx0KCk7Ci0gICAgcmV0dXJuIGNoZWNrZXIuYXNzaWduVHlwZXMoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjY2NGUzZTE3YThjMGEyYjczMDVmNTgyNDBjZTFmNTIxNzc0ZTY5Yy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFt
OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2soUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29kZUxvY2F0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvZGVMb2NhdGlvbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZWZmZmQ4ZDg3YTk1NDIwOWVmNzI5ZTJjNzI1M2VkMTkxNWU0
ZWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29kZUxvY2F0aW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3QgVG9r
ZW47Ci0KLWNsYXNzIENvZGVMb2NhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgQ29kZUxvY2F0aW9uKCkK
LSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KDB4N0ZGRkZGRkYpCi0gICAgICAgICwgbV9lbmRPZmZz
ZXQoMHg3RkZGRkZGRikKLSAgICAgICAgLCBtX25hbWVTcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkpCi0gICAgewotICAgIH0KLQotICAg
IENvZGVMb2NhdGlvbih1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBB
U1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi0gICAgICAgIDogbV9zdGFydE9mZnNldChzdGFydE9m
ZnNldCkKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCi0gICAgICAgICwgbV9uYW1l
U3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbWVTcGFjZSkpCi0gICAgewotICAgIH0KLQot
ICAgIENvZGVMb2NhdGlvbihjb25zdCBUb2tlbiYpOwotCi0gICAgQ29kZUxvY2F0aW9uKGNvbnN0
IENvZGVMb2NhdGlvbiYgbG9jYXRpb24xLCBjb25zdCBDb2RlTG9jYXRpb24mIGxvY2F0aW9uMikK
LSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KGxvY2F0aW9uMS5zdGFydE9mZnNldCgpKQotICAgICAg
ICAsIG1fZW5kT2Zmc2V0KGxvY2F0aW9uMi5lbmRPZmZzZXQoKSkKLSAgICAgICAgLCBtX25hbWVT
cGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9jYXRpb24xLm5hbWVTcGFjZSgpKSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChsb2NhdGlvbjEubmFtZVNwYWNlKCkgPT0gbG9jYXRpb24yLm5hbWVT
cGFjZSgpKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9zdGFydE9mZnNldDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBl
bmRPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW5kT2Zmc2V0OwotICAg
IH0KLQotICAgIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QVNUOjpOYW1lU3BhY2U+KG1fbmFtZVNwYWNlKTsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZUxvY2F0aW9uJiBvdGhlcikgY29uc3Qg
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFydE9mZnNldCA9PSBvdGhlci5tX3N0YXJ0T2Zm
c2V0Ci0gICAgICAgICAgICAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5tX2VuZE9mZnNldAotICAg
ICAgICAgICAgJiYgbV9uYW1lU3BhY2UgPT0gb3RoZXIubV9uYW1lU3BhY2U7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVMb2NhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gKnRoaXMgIT0gQ29kZUxvY2F0aW9uKCk7IH0KLQotcHJpdmF0ZToKLSAg
ICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IDogMzE7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQg
OiAzMTsKLSAgICB1bnNpZ25lZCBtX25hbWVTcGFjZSA6IDI7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNzI5OGQ0OWM4ODZhMTY2NWNiOTgwOWI1ZWJlMzJlM2UwMGZiMWE4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTENvbXB1dGVEaW1lbnNpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNs
dWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1zdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5z
aW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZW50cnlQb2lu
dCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5z
aW9uczsKLQotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5j
dGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYm9vbCBmb3VuZE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRl
IDogZnVuY3Rpb25EZWZpbml0aW9uLT5hdHRyaWJ1dGVCbG9jaygpKSB7Ci0gICAgICAgICAgICBh
dXRvIHN1Y2Nlc3MgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZm91bmROdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3VuZE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKCZmdW5j
dGlvbkRlZmluaXRpb24gPT0gJmVudHJ5UG9pbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFjb21wdXRlRGltZW5zaW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVEaW1l
bnNpb25zID0ge3sgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLndpZHRoKCksIG51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZS5oZWlnaHQoKSwgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
LmRlcHRoKCkgfX07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfSksIGZ1bmN0aW9uQXR0cmlidXRlKTsKLSAgICAgICAgICAgIGlm
ICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIC8vIENhbm5vdCBkZWNsYXJlIG11bHRpcGxl
IG51bXRocmVhZCBhdHRyaWJ1dGVzIG9uIGEgc2luZ2xlIGZ1bmN0aW9uLgotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTJkZGYwYTgzYWE2NDI3ZTNiMzU3OWRhYzU1Mjk5ODdiM2U1MzdkNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgRnVuY3Rpb25EZWZpbml0aW9uOwotCi19Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXN0ZDo6b3B0
aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMRXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI3ODZkZmFmZWM5ODMx
MGYzMTE1MWI1OGFhZWRlYmQwY2E3ZDQ5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgRXJyb3IgewotcHVibGljOgotICAgIEVycm9yKFN0cmluZyYm
IG1lc3NhZ2UsIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24pCi0gICAgICAgIDogbV9tZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpCi0gICAgICAgICwgbV9sb2NhdGlvbihjb2RlTG9jYXRpb24pCi0g
ICAgewotICAgIH0KLQotICAgIEVycm9yKFN0cmluZyYmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9t
ZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCi0gICAgewotICAgIH0KLQotICAgIENvZGVMb2NhdGlv
biBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uOyB9Ci0gICAgU3RyaW5n
IG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLQotcHJpdmF0ZToKLSAgICBT
dHJpbmcgbV9tZXNzYWdlOwotICAgIENvZGVMb2NhdGlvbiBtX2xvY2F0aW9uOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYzZGU4ZGM4ZTBiYmE0NTk3OWE0YjgxMDkx
NzEyYjEzMWFmNGFiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3Rh
Z2VDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tl
ci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDYWxs
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRl
ICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBGdW5jdGlvblN0YWdlQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1
YmxpYzoKLSAgICBGdW5jdGlvblN0YWdlQ2hlY2tlcihBU1Q6OkVudHJ5UG9pbnRUeXBlIGVudHJ5
UG9pbnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotICAgICAgICA6IG1fZW50
cnlQb2ludFR5cGUoZW50cnlQb2ludFR5cGUpCi0gICAgICAgICwgbV9pbnRyaW5zaWNzKGludHJp
bnNpY3MpCi0gICAgewotICAgIH0KLQotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxs
RXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
KCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5kZHgoKSB8fCAmY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuZGR5KCkpICYmIG1fZW50cnlQ
b2ludFR5cGUgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJDYW5ub3QgdXNlIGRkeCBvciBkZHkgaW4gYSBub24tZnJhZ21lbnQg
c2hhZGVyLiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCgmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24o
KSA9PSBtX2ludHJpbnNpY3MuYWxsTWVtb3J5QmFycmllcigpIHx8ICZjYWxsRXhwcmVzc2lvbi5m
dW5jdGlvbigpID09IG1faW50cmluc2ljcy5kZXZpY2VNZW1vcnlCYXJyaWVyKCkgfHwgJmNhbGxF
eHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmdyb3VwTWVtb3J5QmFycmllcigp
KQotICAgICAgICAgICAgJiYgbV9lbnRyeVBvaW50VHlwZSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBl
OjpDb21wdXRlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHVzZSBtZW1v
cnkgYmFycmllciBpbiBhIG5vbi1jb21wdXRlIHNoYWRlci4iLCBjYWxsRXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFZp
c2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwotICAgIH0KLQotICAgIEFT
VDo6RW50cnlQb2ludFR5cGUgbV9lbnRyeVBvaW50VHlwZTsKLSAgICBjb25zdCBJbnRyaW5zaWNz
JiBtX2ludHJpbnNpY3M7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tGdW5jdGlv
blN0YWdlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZp
bml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgaWYgKCFm
dW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgRnVuY3Rpb25TdGFnZUNoZWNrZXIgZnVuY3Rpb25TdGFnZUNoZWNrZXIoKmZ1
bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUoKSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkp
OwotICAgICAgICBmdW5jdGlvblN0YWdlQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRl
ZmluaXRpb24pOwotICAgICAgICBpZiAoZnVuY3Rpb25TdGFnZUNoZWNrZXIuaGFzRXJyb3IoKSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmdW5jdGlvblN0YWdlQ2hlY2tlci5y
ZXN1bHQoKS5lcnJvcigpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVj
a2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMzNmZDkyZmRkYjE3ZDU0Yzgy
M2Q5OGJiYWUzMmU1MTUxNGUzNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0Z1bmN0aW9uU3RhZ2VzKFByb2dyYW0mKTsKLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVu
dHJ5UG9pbnRJdGVtcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNWU4OGE2
MDFjODIxMWE3OTVmMGMxNmU4Mzk2ZjAyNjg3MjYwNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTky
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xB
cnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2lu
Y2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmlu
aXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgR2F0aGVyZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJs
aWM6Ci0gICAgR2F0aGVyZXIoY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcywgQVNUOjpTZW1h
bnRpYyogc2VtYW50aWMgPSBudWxscHRyKQotICAgICAgICA6IG1faW50cmluc2ljcyhpbnRyaW5z
aWNzKQotICAgICAgICAsIG1fY3VycmVudFNlbWFudGljKHNlbWFudGljKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIH5HYXRoZXJlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgcmVzZXQo
KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSBudWxscHRyOwotICAgICAgICBt
X2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uID0geyB9OwotICAgIH0KLQotICAgIFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4gdGFrZUVudHJ5UG9pbnRJdGVtcygpCi0gICAgewotICAgICAgICByZXR1cm4g
V1RGTW92ZShtX2VudHJ5UG9pbnRJdGVtcyk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNl
bWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMg
Zm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0ZW1z
LmFwcGVuZChFbnRyeVBvaW50SXRlbShtX3R5cGVSZWZlcmVuY2VzLmxhc3QoKS5nZXQoKSwgKm1f
Y3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi0gICAgewotICAg
ICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJv
cigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50
VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChtYXRjaGVzKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgbV9pbnRyaW5zaWNzLnZvaWRU
eXBlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCB2b2lkIHR5
cGUgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9lbnRyeVBvaW50
SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKG1fdHlwZVJlZmVyZW5jZXMubGFzdCgpLmdldCgp
LCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQo
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fY3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJv
cigiVW5leHBlY3RlZCBzZW1hbnRpYyBmb3Igc3RydWN0IGVudHJ5cG9pbnQgYXJndW1lbnQuIiwg
bV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVm
aW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoc3RydWN0dXJl
RWxlbWVudC5zZW1hbnRpYygpKQotICAgICAgICAgICAgICAgIG1fY3VycmVudFNlbWFudGljID0g
c3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpOwotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChz
dHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSk7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBtX3BhdGgudGFrZUxhc3QoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURl
ZmluaXRpb24pCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRp
b24udHlwZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYg
dHlwZVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgICAgIG1fdHlwZVJlZmVyZW5jZXMuYXBwZW5kKHR5
cGVSZWZlcmVuY2UpOwotICAgICAgICBhdXRvIGRlcHRoID0gbV90eXBlUmVmZXJlbmNlcy5zaXpl
KCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChkZXB0aCwgbV90eXBlUmVmZXJlbmNlcy5zaXpl
KCkgPT0gZGVwdGgpOwotICAgICAgICBtX3R5cGVSZWZlcmVuY2VzLnJlbW92ZUxhc3QoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQotICAg
IHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1f
Y3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0ocG9pbnRl
clR5cGUsICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotICAgIHsK
LSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewotICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3Vy
cmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2ludEl0ZW0oYXJyYXlSZWZl
cmVuY2VUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
bV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3Rl
ZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxv
Y2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9lbnRy
eVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKGFycmF5VHlwZSwgKm1fY3VycmVudFNl
bWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV9jdXJyZW50U2VtYW50aWMpOwotICAgICAgICBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uID0g
dmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgaWYgKHZhcmlhYmxl
RGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgICAgIG1fY3VycmVudFNlbWFudGljID0g
dmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpOwotICAgICAgICBBU1NFUlQodmFyaWFibGVE
ZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHZhcmlhYmxlRGVjbGFy
YXRpb24ubmFtZSgpKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xh
cmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fcGF0aC50YWtlTGFzdCgpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3BhdGg7Ci0gICAgY29uc3QgSW50cmluc2ljcyYg
bV9pbnRyaW5zaWNzOwotICAgIEFTVDo6U2VtYW50aWMqIG1fY3VycmVudFNlbWFudGljIHsgbnVs
bHB0ciB9OwotICAgIENvZGVMb2NhdGlvbiBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uOwotICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VHlwZVJlZmVyZW5jZT4+IG1fdHlw
ZVJlZmVyZW5jZXM7Ci0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiBtX2VudHJ5UG9pbnRJdGVt
czsKLX07Ci0KLUV4cGVjdGVkPEVudHJ5UG9pbnRJdGVtcywgRXJyb3I+IGdhdGhlckVudHJ5UG9p
bnRJdGVtcyhjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIEFTU0VSVChmdW5jdGlvbkRlZmluaXRp
b24uZW50cnlQb2ludFR5cGUoKSk7Ci0gICAgR2F0aGVyZXIgaW5wdXRHYXRoZXJlcihpbnRyaW5z
aWNzKTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJh
bWV0ZXJzKCkpIHsKLSAgICAgICAgaW5wdXRHYXRoZXJlci5yZXNldCgpOwotICAgICAgICBpbnB1
dEdhdGhlcmVyLmNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIpOwotICAgICAgICBpZiAoaW5w
dXRHYXRoZXJlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGlucHV0R2F0aGVyZXIucmVzdWx0KCkuZXJyb3IoKSk7Ci0gICAgfQotICAgIEdhdGhlcmVyIG91
dHB1dEdhdGhlcmVyKGludHJpbnNpY3MsIGZ1bmN0aW9uRGVmaW5pdGlvbi5zZW1hbnRpYygpKTsK
LSAgICBpZiAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpICE9IEFTVDo6RW50
cnlQb2ludFR5cGU6OkNvbXB1dGUpCi0gICAgICAgIG91dHB1dEdhdGhlcmVyLmNoZWNrRXJyb3JB
bmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICBpZiAob3V0cHV0R2F0aGVy
ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG91dHB1dEdhdGhl
cmVyLnJlc3VsdCgpLmVycm9yKCkpOwotCi0gICAgcmV0dXJuIHt7IGlucHV0R2F0aGVyZXIudGFr
ZUVudHJ5UG9pbnRJdGVtcygpLCBvdXRwdXRHYXRoZXJlci50YWtlRW50cnlQb2ludEl0ZW1zKCkg
fX07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjRiOGQ5Y2U0YzdjMzQ3
MTk1MjQ0MWQyYjkzOGFhNGZmMjcyNzczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
R2F0aGVyRW50cnlQb2ludEl0ZW1zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotCi19Ci0KLWNsYXNzIEludHJpbnNpY3M7
Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtIHsKLSAgICBFbnRy
eVBvaW50SXRlbShBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgQVNUOjpTZW1hbnRpYyYg
c2VtYW50aWMsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKQotICAgICAgICA6IHVubmFtZWRUeXBlKCZ1
bm5hbWVkVHlwZSkKLSAgICAgICAgLCBzZW1hbnRpYygmc2VtYW50aWMpCi0gICAgICAgICwgcGF0
aChwYXRoKQotICAgIHsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlKiB1bm5hbWVkVHlw
ZTsKLSAgICBBU1Q6OlNlbWFudGljKiBzZW1hbnRpYzsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXRo
OwotfTsKLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtcyB7Ci0gICAgVmVjdG9yPEVudHJ5UG9pbnRJ
dGVtPiBpbnB1dHM7Ci0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiBvdXRwdXRzOwotfTsKLQot
RXhwZWN0ZWQ8RW50cnlQb2ludEl0ZW1zLCBFcnJvcj4gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKGNv
bnN0IEludHJpbnNpY3MmLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTRmNzAxMTgzZDUyMmQ1YzFmZDUwNWM2NDgxOGRlNzExODFkNmQyMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTEhpZ2hab21iaWVGaW5kZXIuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNp
dG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgSGlnaFpvbWJpZUZpbmRlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lk
IHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0
ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFk
TW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VS
VCghcmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVsKCkpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRvdEV4cHJlc3Npb24uYmFzZSgp
Lm1heUJlRWZmZWN0ZnVsKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4
cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFpbmRleEV4cHJlc3Npb24uYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCkpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpLm1h
eUJlRWZmZWN0ZnVsKCkpOwotICAgIH0KLX07Ci0KLXZvaWQgZmluZEhpZ2hab21iaWVzKFByb2dy
YW0mIHByb2dyYW0pCi17Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotCi0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBIaWdoWm9tYmllRmluZGVyIGZpbmRlcjsKLSAgICBmaW5kZXIuVmlzaXRv
cjo6dmlzaXQocHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjZTAzYjIxYjEwMGQwMTdmMzFmMWEwM2NjOGQwNTAxOTQ0MTJjYWNiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgZmluZEhpZ2hab21iaWVzKFByb2dy
YW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5
cGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRmMzhlNmQ1NDU1Y2ZmNWQ4
NjdkNGRjZTE3OTI2ZGY2ZjdhODNmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTElu
ZmVyVHlwZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNl
VHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xU
eXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotc3RhdGljIGJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlR5cGUmIHVuaWZ5VGhpcywgY29u
c3QgQVNUOjpUeXBlJiB1bmlmeU90aGVyKQotewotICAgIGlmICgmdW5pZnlUaGlzID09ICZ1bmlm
eU90aGVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlw
ZT4odW5pZnlUaGlzKSAmJiBpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlPdGhlcikpIHsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgICAgICBhdXRvJiBuYW1lZFRoaXMgPSBkb3duY2FzdDxBU1Q6Ok5h
bWVkVHlwZT4odW5pZnlUaGlzKTsKLSAgICAgICAgYXV0byYgbmFtZWRPdGhlciA9IGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPih1bmlmeU90aGVyKTsKLSAgICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5
cGVEZWZpbml0aW9uPihuYW1lZFRoaXMpICYmICFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1l
ZE90aGVyKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAo
aXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlUaGlzKSAmJiBpczxBU1Q6OlVubmFtZWRUeXBlPih1
bmlmeU90aGVyKSkgewotICAgICAgICBhdXRvJiB1bm5hbWVkVGhpcyA9IGRvd25jYXN0PEFTVDo6
VW5uYW1lZFR5cGU+KHVuaWZ5VGhpcyk7Ci0gICAgICAgIGF1dG8mIHVubmFtZWRPdGhlciA9IGRv
d25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5T3RoZXIpOwotICAgICAgICBBU1NFUlQoIWlz
PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFRoaXMpICYmICFpczxBU1Q6OlR5cGVSZWZlcmVu
Y2U+KHVubmFtZWRPdGhlcikpOwotICAgICAgICByZXR1cm4gdW5uYW1lZFRoaXMgPT0gdW5uYW1l
ZE90aGVyOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25z
dCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYg
b3RoZXIpCi17Ci0gICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUudW5pZnlOb2RlKCksIG90
aGVyLnVuaWZ5Tm9kZSgpKTsKLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6TmFtZWRUeXBl
JiBuYW1lZFR5cGUsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICByZXR1cm4g
bWF0Y2hlcyhuYW1lZFR5cGUudW5pZnlOb2RlKCksIG90aGVyLnVuaWZ5Tm9kZSgpKTsKLX0KLQot
Ym9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBB
U1Q6Ok5hbWVkVHlwZSYgb3RoZXIpCi17Ci0gICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUu
dW5pZnlOb2RlKCksIG90aGVyLnVuaWZ5Tm9kZSgpKTsKLX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6
OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlR5cGUmIHVuaWZ5Tm9kZSwgQVNUOjpS
ZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgQVNTRVJUKCFyZXNvbHZhYmxl
VHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoIXJlc29sdmFibGVUeXBlLmNhblJl
c29sdmUodW5pZnlOb2RlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGlzPEFT
VDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgIGF1dG8mIG5hbWVkVW5pZnlOb2Rl
ID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKG5hbWVkVW5pZnlOb2RlLmNvZGVMb2NhdGlv
bigpLCBuYW1lZFVuaWZ5Tm9kZSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUocmVz
dWx0LmNvcHlSZWYoKSk7Ci0gICAgICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwotICAg
IH0KLQotICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiByZXN1bHQgPSBkb3duY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUocmVzdWx0
LmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVmUHRyPEFTVDo6VW5uYW1l
ZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBBU1Q6
OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLXsKLSAgICByZXR1cm4gbWF0Y2hBbmRD
b21taXQodW5uYW1lZFR5cGUudW5pZnlOb2RlKCksIHJlc29sdmFibGVUeXBlKTsKLX0KLQotUmVm
UHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6TmFtZWRUeXBlJiBuYW1l
ZFR5cGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAgIHJldHVy
biBtYXRjaEFuZENvbW1pdChuYW1lZFR5cGUudW5pZnlOb2RlKCksIHJlc29sdmFibGVUeXBlKTsK
LX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6UmVzb2x2
YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlMSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJs
ZVR5cGUyKQotewotICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5cGUxLm1heWJlUmVzb2x2ZWRUeXBl
KCkpOwotICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5cGUyLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwot
ICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8
QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpKSB7Ci0gICAgICAgIHJlc29s
dmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2
YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXNvbHZhYmxlVHlwZTIucmVz
b2x2ZShkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMikucHJl
ZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICBpZiAo
aXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8QVNUOjpJ
bnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMikpIHsKLSAgICAgICAgcmVzb2x2YWJs
ZVR5cGUxLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFi
bGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUyLnJlc29s
dmUoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMikucHJl
ZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRl
cmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIGlm
IChpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpICYm
IGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMikpIHsK
LSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCkpOwotICAg
ICAgICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAg
IHJldHVybiAmZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2
YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gY29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUm
IHJlc29sdmFibGVUeXBlKQotewotICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5cGUubWF5YmVSZXNv
bHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJs
ZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIGZsb2F0TGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6
OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5
cGUucmVzb2x2ZShmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJl
dHVybiAmZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChp
czxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpKSB7Ci0gICAgICAgIGF1
dG8mIGludGVnZXJMaXRlcmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBl
PihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoaW50ZWdl
ckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmaW50ZWdlckxp
dGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKSkgewotICAgICAgICBhdXRvJiB1
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUucmVz
b2x2ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAg
ICByZXR1cm4gJnVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJvb2wgaW5mZXJUeXBlc0ZvclR5cGVBcmd1
bWVudHMoQVNUOjpOYW1lZFR5cGUmIHBvc3NpYmxlVHlwZSwgQVNUOjpUeXBlQXJndW1lbnRzJiB0
eXBlQXJndW1lbnRzKQotewotICAgIGlmIChpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihwb3NzaWJs
ZVR5cGUpCi0gICAgICAgIHx8IGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4ocG9zc2libGVU
eXBlKQotICAgICAgICB8fCBpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4ocG9zc2libGVU
eXBlKSkgewotICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50cy5pc0VtcHR5KCk7Ci0gICAgfQot
Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KHBvc3NpYmxlVHlwZSk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpICE9IHR5cGVBcmd1bWVudHMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYXRpdmVUeXBl
RGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uKiB0eXBlQXJndW1lbnRFeHByZXNzaW9uID0gbnVsbHB0cjsKLSAg
ICAgICAgQVNUOjpUeXBlUmVmZXJlbmNlKiB0eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlID0gbnVs
bHB0cjsKLSAgICAgICAgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qIG5hdGl2ZVR5cGVBcmd1bWVu
dEV4cHJlc3Npb24gPSBudWxscHRyOwotICAgICAgICBBU1Q6OlR5cGVSZWZlcmVuY2UqIG5hdGl2
ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UgPSBudWxscHRyOwotCi0gICAgICAgIGF1dG8gYXNz
aWduID0gWyZdKEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQsIEFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uKiYgZXhwcmVzc2lvbiwgQVNUOjpUeXBlUmVmZXJlbmNlKiYgdHlwZVJlZmVyZW5j
ZSkgewotICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAg
ZXhwcmVzc2lvbiA9ICZjb25zdGFudEV4cHJlc3Npb247Ci0gICAgICAgICAgICB9LCBbJl0oUmVm
PEFTVDo6VHlwZVJlZmVyZW5jZT4mIHRoZVR5cGVSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgICAg
ICB0eXBlUmVmZXJlbmNlID0gdGhlVHlwZVJlZmVyZW5jZS5wdHIoKTsKLSAgICAgICAgICAgIH0p
LCB0eXBlQXJndW1lbnQpOwotICAgICAgICB9OwotCi0gICAgICAgIGFzc2lnbih0eXBlQXJndW1l
bnRzW2ldLCB0eXBlQXJndW1lbnRFeHByZXNzaW9uLCB0eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNl
KTsKLSAgICAgICAgYXNzaWduKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
aV0sIG5hdGl2ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24sIG5hdGl2ZVR5cGVBcmd1bWVudFR5cGVS
ZWZlcmVuY2UpOwotCi0gICAgICAgIGlmICh0eXBlQXJndW1lbnRFeHByZXNzaW9uICYmIG5hdGl2
ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIGlmICghdHlwZUFyZ3VtZW50
RXhwcmVzc2lvbi0+bWF0Y2hlcygqbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGVBcmd1bWVu
dFR5cGVSZWZlcmVuY2UgJiYgbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSkgewotICAg
ICAgICAgICAgaWYgKCFtYXRjaGVzKCp0eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlLCAqbmF0aXZl
VHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUeXBlS2luZD4KLUFMV0FZU19JTkxJTkUgYm9vbCBpbmZlclR5cGVzRm9yQ2FsbElt
cGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0
IFR5cGVLaW5kKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICBpZiAocG9zc2libGVGdW5jdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpICE9IGFyZ3VtZW50VHlwZXMuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3NzaWJsZUZ1bmN0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBhcmd1bWVu
dFR5cGVzW2ldLmdldCgpLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIG1hdGNo
ZXMoKnBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCksIHVubmFtZWRUeXBl
KTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29s
dmFibGVUeXBlUmVmZXJlbmNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5jYW5SZXNvbHZlKHBvc3NpYmxlRnVu
Y3Rpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCktPnVuaWZ5Tm9kZSgpKTsKLSAgICAgICAgfSkp
OwotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGlmIChjYXN0UmV0dXJuVHlwZSAmJiAhbWF0Y2hlcyhwb3NzaWJsZUZ1bmN0aW9uLnR5
cGUoKSwgKmNhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVz
b2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJl
dHVyblR5cGUpCi17Ci0gICAgcmV0dXJuIGluZmVyVHlwZXNGb3JDYWxsSW1wbChwb3NzaWJsZUZ1
bmN0aW9uLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSk7Ci19Ci0KLWJvb2wgaW5mZXJU
eXBlc0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlw
ZXMsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKQotewotICAgIHJldHVy
biBpbmZlclR5cGVzRm9yQ2FsbEltcGwocG9zc2libGVGdW5jdGlvbiwgYXJndW1lbnRUeXBlcywg
Y2FzdFJldHVyblR5cGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzIyZjM3ZGMwZDg2Yzg3NjA3NWNkNzRh
ZjA3ZThhMjE0YTcwOGRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBl
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNv
bHZpbmdUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlIDxt
ZW1vcnk+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYW1lZFR5
cGU7Ci1jbGFzcyBSZXNvbHZhYmxlVHlwZTsKLWNsYXNzIFVubmFtZWRUeXBlOwotCi19Ci0KLWJv
b2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiwgY29uc3QgQVNUOjpVbm5hbWVkVHlw
ZSYpOwotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6TmFtZWRUeXBlJiwgY29uc3QgQVNUOjpOYW1l
ZFR5cGUmKTsKLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiwgY29uc3QgQVNU
OjpOYW1lZFR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChB
U1Q6OlVubmFtZWRUeXBlJiwgQVNUOjpSZXNvbHZhYmxlVHlwZSYpOwotUmVmUHRyPEFTVDo6VW5u
YW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6TmFtZWRUeXBlJiwgQVNUOjpSZXNvbHZhYmxl
VHlwZSYpOwotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6UmVz
b2x2YWJsZVR5cGUmLCBBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVk
VHlwZT4gY29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUmKTsKLWJvb2wgaW5mZXJUeXBlc0ZvclR5
cGVBcmd1bWVudHMoQVNUOjpOYW1lZFR5cGUmIHBvc3NpYmxlVHlwZSwgQVNUOjpUeXBlQXJndW1l
bnRzJik7Ci1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYg
cG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5n
VHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5
cGUpOwotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBv
c3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpVbm5hbWVkVHlwZSogY2FzdFJldHVyblR5
cGUpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2lj
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNp
Y3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDQzN2EyY2UyZWM2MDg0Yjk1
YjNjZDU2MTdiYjY4YjI0Zjg5ZWU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50
cmluc2ljcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0cmluZz4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jb25zdGV4cHIg
Y29uc3QgY2hhciogSW50cmluc2ljczo6bV90ZXh0dXJlVHlwZU5hbWVzW107Ci1jb25zdGV4cHIg
Y29uc3QgY2hhciogSW50cmluc2ljczo6bV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbXTsKLWNvbnN0
ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX2RlcHRoVGV4dHVyZUlubmVyVHlwZXNbXTsK
LQotSW50cmluc2ljczo6SW50cmluc2ljcygpCi17Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRk
KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bikKLXsKLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImRkeCIp
Ci0gICAgICAgIG1fZGR4ID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci0gICAgZWxzZSBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImRkeSIpCi0gICAgICAgIG1f
ZGR5ID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5j
IikKLSAgICAgICAgbV9hbGxNZW1vcnlCYXJyaWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b247Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRl
dmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikKLSAgICAgICAgbV9kZXZpY2VNZW1vcnlC
YXJyaWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91
cFN5bmMiKQotICAgICAgICBtX2dyb3VwTWVtb3J5QmFycmllciA9ICZuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZFByaW1pdGl2ZShBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInZvaWQi
KQotICAgICAgICBtX3ZvaWRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICBlbHNl
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJib29sIikKLSAgICAgICAgbV9i
b29sVHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidWludCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldElzSW50KCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc051
bWJlcigpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50SW50
ZWdlcihbXShpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHggPj0gMDsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZElu
dGVnZXIoW10odW5zaWduZWQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEZsb2F0KFtd
KGZsb2F0IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHgpKSA9PSB4OwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnNldFN1Y2Nlc3NvcihbXShpbnQ2NF90IHgpIC0+IGludDY0X3QgewotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pih4ICsgMSk7Ci0gICAgICAgIH0p
OwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdl
cihbXShpbnQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCB4KSAtPiBpbnQ2
NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXRlcmF0ZUFsbFZhbHVl
cyhbXShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50NjRfdCk+JiBjYWxsYmFjaykgewotICAg
ICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAwOyBpIDwgMHgxMDAwMDAwMDA7ICsraSkgewotICAg
ICAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgICBtX3VpbnRUeXBlID0gJm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gImludCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzSW50
KCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc051bWJlcigpOwotICAgICAg
ICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNTaWduZWQoKTsKLSAgICAgICAgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVnZXIoW10oaW50KSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoW10odW5zaWduZWQgeCkgewotICAgICAg
ICAgICAgcmV0dXJuIHggPD0gMjE0NzQ4MzY0NzsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRGbG9hdChbXShmbG9hdCB4KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0YXRpY19jYXN0PGludDMyX3Q+KHgp
KSA9PSB4OwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFN1
Y2Nlc3NvcihbXShpbnQ2NF90IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KHggKyAxKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKFtdKGludCB4KSAtPiBpbnQ2
NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21V
bnNpZ25lZEludGVnZXIoW10odW5zaWduZWQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXRlcmF0ZUFsbFZhbHVlcyhbXShjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woaW50NjRfdCk+JiBjYWxsYmFjaykgewotICAgICAgICAgICAgZm9yIChpbnQ2NF90
IGkgPSAtMjE0NzQ4MzY0NzsgaSA8IDIxNDc0ODM2NDg7ICsraSkgewotICAgICAgICAgICAgICAg
IGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0pOwotICAgICAgICBtX2ludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0
aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxv
YXQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc051bWJlcigpOwotICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNGbG9hdGluZygpOwotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50SW50ZWdlcihbXShpbnQpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCkgewotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxvYXQpIHsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAgbV9mbG9hdFR5cGUgPSAmbmF0aXZlVHlw
ZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiYXRvbWljX2ludCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElz
QXRvbWljKCk7Ci0gICAgICAgIG1fYXRvbWljSW50VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRp
b247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9t
aWNfdWludCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQXRvbWljKCk7
Ci0gICAgICAgIG1fYXRvbWljVWludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAg
IH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAic2FtcGxlciIpIHsK
LSAgICAgICAgbV9zYW1wbGVyVHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgICAg
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
SW50cmluc2ljczo6YWRkVmVjdG9yKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
IT0gInZlY3RvciIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAyKTsKLSAgICBBU1NFUlQo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAgIEFTU0VSVChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRp
b24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgYXV0byYgaW5uZXJUeXBlID0gc3RhdGljX2Nh
c3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4oV1RGOjpnZXQ8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBhdXRvJiBs
ZW5ndGhFeHByZXNzaW9uID0gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pOwotICAgIEFTU0VSVCghaW5uZXJU
eXBlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpOwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uKiogYXJyYXk7Ci0gICAgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gImJvb2wiKQotICAgICAg
ICBhcnJheSA9IG1fdmVjdG9yQm9vbDsKLSAgICBlbHNlIGlmIChpbm5lclR5cGUubmFtZSgpID09
ICJ1aW50IikKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvclVpbnQ7Ci0gICAgZWxzZSBpZiAoaW5u
ZXJUeXBlLm5hbWUoKSA9PSAiaW50IikKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3RvckludDsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlubmVyVHlwZS5uYW1lKCkgPT0gImZsb2F0Iik7Ci0g
ICAgICAgIGFycmF5ID0gbV92ZWN0b3JGbG9hdDsKLSAgICB9Ci0gICAgaW50IGxlbmd0aCA9IGxl
bmd0aEV4cHJlc3Npb24uaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAgIEFTU0VSVChsZW5n
dGggPj0gMiAmJiBsZW5ndGggPD0gNCk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElz
VmVjdG9yKCk7Ci0gICAgYXJyYXlbbGVuZ3RoIC0gMl0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9u
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZE1hdHJpeChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlm
IChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpICE9ICJtYXRyaXgiKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNNYXRyaXgoKTsKLQot
ICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9
PSAzKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpUeXBlUmVm
ZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAg
IEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPihu
YXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMl0pKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYgbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2UmIGlubmVyVHlwZSkK
LXsKLSAgICBhdXRvIHRleHR1cmVUeXBlSW5kZXggPSBzdGQ6OmZpbmQobV90ZXh0dXJlVHlwZU5h
bWVzLCBtX3RleHR1cmVUeXBlTmFtZXMgKyBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVO
YW1lcyksIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkpIC0gbV90ZXh0dXJlVHlwZU5hbWVz
OwotICAgIGlmICh0ZXh0dXJlVHlwZUluZGV4ID09IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJl
VHlwZU5hbWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgaW5uZXJU
eXBlSW5kZXggPSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzKTsKLSAg
ICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChpbm5lclR5cGUubmFtZSgpLnN0YXJ0c1dpdGgobV90ZXh0dXJlSW5uZXJUeXBlTmFt
ZXNbaV0pKSB7Ci0gICAgICAgICAgICBpbm5lclR5cGVJbmRleCA9IGk7Ci0gICAgICAgICAgICBp
ZiAoaW5uZXJUeXBlLm5hbWUoKSA9PSBtX3RleHR1cmVJbm5lclR5cGVOYW1lc1tpXSkKLSAgICAg
ICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSAxOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5uZXJUeXBlLm5hbWUo
KS5sZW5ndGgoKSA9PSBzdHJsZW4obV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbaV0pICsgMSk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5uZXJUeXBl
Lm5hbWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzInCi0gICAgICAgICAg
ICAgICAgICAgIHx8IGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAt
IDFdID09ICczJwotICAgICAgICAgICAgICAgICAgICB8fCBpbm5lclR5cGUubmFtZSgpW2lubmVy
VHlwZS5uYW1lKCkubGVuZ3RoKCkgLSAxXSA9PSAnNCcpOwotICAgICAgICAgICAgICAgIHZlY3Rv
ckxlbmd0aCA9IGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFd
IC0gJzAnOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNT
RVJUKHZlY3Rvckxlbmd0aCAmJiB2ZWN0b3JMZW5ndGggPCA1KTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbm5lclR5cGVJbmRleCAhPSBXVEZfQVJSQVlfTEVOR1RIKG1f
dGV4dHVyZUlubmVyVHlwZU5hbWVzKSk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElz
VGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsK
LSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEQXJyYXki
IHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiIHx8
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyREFycmF5IiB8fCBuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5IikKLSAgICAgICAg
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZUFycmF5KCk7Ci0gICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlJXVGV4dHVyZTFEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNX
cml0YWJsZVRleHR1cmUoKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1
cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEQXJyYXki
IHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiKQot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigxKTsKLSAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJEIiB8fCBuYXRp
dmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyRCIgfHwgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZUN1YmUiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlRleHR1cmUyREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJSV1RleHR1cmUyREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldFRleHR1cmVEaW1lbnNpb24oMik7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIlRleHR1cmUzRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
UldUZXh0dXJlM0QiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURp
bWVuc2lvbigzKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4
dHVyZUN1YmUiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNDdWJlVGV4dHVy
ZSgpOwotICAgIG1fZnVsbFRleHR1cmVzW3RleHR1cmVUeXBlSW5kZXhdW2lubmVyVHlwZUluZGV4
XVt2ZWN0b3JMZW5ndGggLSAxXSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24sIEFTVDo6VHlwZVJlZmVyZW5j
ZSYgaW5uZXJUeXBlKQotewotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiogdGV4dHVy
ZSA9IG51bGxwdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRl
eHR1cmVEZXB0aDJEIikKLSAgICAgICAgdGV4dHVyZSA9IG1fdGV4dHVyZURlcHRoMkQ7Ci0gICAg
ZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkRB
cnJheSIpCi0gICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVEZXB0aDJEQXJyYXk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0
dXJlRGVwdGhDdWJlIik7Ci0gICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVEZXB0aEN1YmU7Ci0g
ICAgfQotICAgIGF1dG8gaW5uZXJUeXBlSW5kZXggPSBzdGQ6OmZpbmQobV9kZXB0aFRleHR1cmVJ
bm5lclR5cGVzLCBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMgKyBXVEZfQVJSQVlfTEVOR1RIKG1f
ZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyksIGlubmVyVHlwZS5uYW1lKCkpIC0gbV9kZXB0aFRleHR1
cmVJbm5lclR5cGVzOwotICAgIEFTU0VSVChpbm5lclR5cGVJbmRleCAhPSBXVEZfQVJSQVlfTEVO
R1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcykpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRJc1RleHR1cmUoKTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFxdWVU
eXBlKCk7Ci0gICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlRGVwdGgyREFycmF5KQotICAgICAg
ICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlQXJyYXkoKTsKLSAgICBpZiAodGV4
dHVyZSA9PSBtX3RleHR1cmVEZXB0aEN1YmUpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRJc0N1YmVUZXh0dXJlKCk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1
cmVEaW1lbnNpb24oMik7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzRGVwdGhUZXh0
dXJlKCk7Ci0gICAgdGV4dHVyZVtpbm5lclR5cGVJbmRleF0gPSAmbmF0aXZlVHlwZURlY2xhcmF0
aW9uOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBBU1NFUlQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsKLSAgICBhdXRvJiBpbm5lclR5cGUgPSBz
dGF0aWNfY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2UmPihXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVm
ZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAg
IEFTU0VSVCghaW5uZXJUeXBlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpOwotICAgIGlmIChhZGRG
dWxsVGV4dHVyZShuYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlubmVyVHlwZSkpIHsKLSAgICAgICAg
bV90ZXh0dXJlU2V0LmFkZCgmbmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBhZGREZXB0aFRleHR1cmUobmF0aXZlVHlwZURlY2xhcmF0aW9uLCBpbm5l
clR5cGUpOwotICAgIG1fdGV4dHVyZVNldC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19
Ci0KLXZvaWQgSW50cmluc2ljczo6YWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKGFkZFByaW1pdGl2ZShuYXRpdmVUeXBlRGVj
bGFyYXRpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGFkZFZlY3RvcihuYXRpdmVUeXBl
RGVjbGFyYXRpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGFkZE1hdHJpeChuYXRpdmVU
eXBlRGVjbGFyYXRpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgYWRkVGV4dHVyZShuYXRpdmVU
eXBlRGVjbGFyYXRpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmZmZmE1ZTQ0ZTQwZDM2OTY4MjZhYjhk
OGQ2YWY3NjVjODU1MmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2lj
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xh
cmF0aW9uLmgiCi0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSW50cmluc2ljcyB7Ci1wdWJsaWM6Ci0gICAgSW50
cmluc2ljcygpOwotCi0gICAgdm9pZCBhZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Jik7Ci0gICAgdm9pZCBhZGQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB2b2lkVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV92b2lkVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV92b2lkVHlwZTsKLSAgICB9
Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgYm9vbFR5cGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYm9vbFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fYm9vbFR5
cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGJvb2xWZWN0b3JU
eXBlRm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1
cm4gKm1fdmVjdG9yQm9vbFtzaXplIC0gMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIHVpbnRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Vp
bnRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX3VpbnRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2ludFR5cGUpOwotICAgICAgICByZXR1cm4gKm1faW50VHlwZTsKLSAgICB9Ci0KLSAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludDJUeXBlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3ZlY3RvclVpbnRbMF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9y
VWludFswXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludDRU
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvclVpbnRbMl0pOwotICAg
ICAgICByZXR1cm4gKm1fdmVjdG9yVWludFsyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgdWludFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0
Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8
IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50W3NpemUgLSAyXTsKLSAg
ICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50MlR5cGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9ySW50WzBdKTsKLSAgICAgICAgcmV0dXJuICpt
X3ZlY3RvckludFswXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
aW50NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9ySW50WzJdKTsK
LSAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFsyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgaW50VmVjdG9yVHlwZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29u
c3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMg
fHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFtzaXplIC0gMl07Ci0g
ICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHNhbXBsZXJUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3NhbXBsZXJUeXBlKTsKLSAgICAgICAgcmV0dXJu
ICptX3NhbXBsZXJUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBmbG9hdFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZmxvYXRUeXBlKTsK
LSAgICAgICAgcmV0dXJuICptX2Zsb2F0VHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgZmxvYXQyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV92ZWN0b3JGbG9hdFswXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFswXTsKLSAg
ICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxvYXQzVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JGbG9hdFsxXSk7Ci0gICAgICAgIHJldHVy
biAqbV92ZWN0b3JGbG9hdFsxXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgZmxvYXQ0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JG
bG9hdFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFsyXTsKLSAgICB9Ci0KLSAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxvYXRWZWN0b3JUeXBlRm9yU2l6ZSh1bnNp
Z25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSAy
IHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yRmxv
YXRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBtYXkgaGF2ZSBi
ZWVuIHBydW5lZCBmcm9tIHRoZSBBU1QgaWYgdGhleSBhcmUgdW51c2VkLgotICAgIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGR4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2RkeDsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRk
eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kZHk7Ci0gICAgfQotCi0gICAgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBhbGxNZW1vcnlCYXJyaWVyKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FsbE1lbW9yeUJhcnJpZXI7Ci0gICAgfQotCi0gICAgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBkZXZpY2VNZW1vcnlCYXJyaWVyKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2RldmljZU1lbW9yeUJhcnJpZXI7Ci0gICAgfQotCi0g
ICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBncm91cE1lbW9yeUJhcnJpZXIoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3JvdXBNZW1vcnlCYXJyaWVyOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBib29sIGFkZFByaW1pdGl2ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYpOwotICAgIGJvb2wgYWRkVmVjdG9yKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7
Ci0gICAgYm9vbCBhZGRNYXRyaXgoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBi
b29sIGFkZEZ1bGxUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiwgQVNUOjpUeXBl
UmVmZXJlbmNlJik7Ci0gICAgdm9pZCBhZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24mLCBBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2b2lkIGFkZFRleHR1cmUoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotICAgIEhhc2hTZXQ8Y29uc3QgQVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24qPiBtX3RleHR1cmVTZXQ7Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV92b2lkVHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV9ib29sVHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV91aW50VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV9pbnRUeXBlIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uKiBtX2Zsb2F0VHlwZSB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiogbV9hdG9taWNJbnRUeXBlIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uKiBtX2F0b21pY1VpbnRUeXBlIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3NhbXBsZXJUeXBlIHsgbnVsbHB0ciB9OwotCi0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVjdG9yQm9vbFszXSB7IDAgfTsKLSAgICBB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JVaW50WzNdIHsgMCB9OwotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3RvckludFszXSB7IDAgfTsKLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JGbG9hdFszXSB7IDAgfTsKLQotICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbV90ZXh0dXJlVHlwZU5hbWVzW10gPSB7ICJUZXh0
dXJlMUQiLCAiUldUZXh0dXJlMUQiLCAiVGV4dHVyZTJEIiwgIlJXVGV4dHVyZTJEIiwgIlRleHR1
cmUzRCIsICJSV1RleHR1cmUzRCIsICJUZXh0dXJlQ3ViZSIsICJUZXh0dXJlMURBcnJheSIsICJS
V1RleHR1cmUxREFycmF5IiwgIlRleHR1cmUyREFycmF5IiwgIlJXVGV4dHVyZTJEQXJyYXkiIH07
Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1fdGV4dHVyZUlubmVyVHlwZU5h
bWVzW10gPSB7ICJ1aW50IiwgImludCIsICJmbG9hdCIgfTsKLQotICAgIEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uKiBtX2Z1bGxUZXh0dXJlc1tXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5
cGVOYW1lcyldW1dURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXMpXVs0XSB7
e3sgMCB9fX07Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1fZGVwdGhUZXh0
dXJlSW5uZXJUeXBlc1tdID0gIHsgImZsb2F0IiB9OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIG1fdGV4dHVyZURlcHRoMkRbV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVy
ZUlubmVyVHlwZXMpXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90
ZXh0dXJlRGVwdGgyREFycmF5W1dURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5
cGVzKV0geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdGV4dHVyZURl
cHRoQ3ViZVtXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9
OwotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2RkeCB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZGR5IHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9hbGxNZW1vcnlCYXJyaWVy
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9kZXZp
Y2VNZW1vcnlCYXJyaWVyIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiogbV9ncm91cE1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExleGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGV4ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDZi
MGVhY2NkOTVlMTMxOThlNjg2MzNmY2E5NmZiNDc0M2I5N2JhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGV4ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jb25zdCBjaGFyKiBUb2tlbjo6dHlwZU5hbWUoVHlwZSB0eXBl
KQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgVHlwZTo6SW50TGl0ZXJhbDoKLSAg
ICAgICAgcmV0dXJuICJpbnQgbGl0ZXJhbCI7Ci0gICAgY2FzZSBUeXBlOjpVaW50TGl0ZXJhbDoK
LSAgICAgICAgcmV0dXJuICJ1aW50IGxpdGVyYWwiOwotICAgIGNhc2UgVHlwZTo6RmxvYXRMaXRl
cmFsOgotICAgICAgICByZXR1cm4gImZsb2F0IGxpdGVyYWwiOwotICAgIGNhc2UgVHlwZTo6U3Ry
dWN0OgotICAgICAgICByZXR1cm4gInN0cnVjdCI7Ci0gICAgY2FzZSBUeXBlOjpUeXBlZGVmOgot
ICAgICAgICByZXR1cm4gInR5cGVkZWYiOwotICAgIGNhc2UgVHlwZTo6RW51bToKLSAgICAgICAg
cmV0dXJuICJlbnVtIjsKLSAgICBjYXNlIFR5cGU6Ok9wZXJhdG9yOgotICAgICAgICByZXR1cm4g
Im9wZXJhdG9yIjsKLSAgICBjYXNlIFR5cGU6OklmOgotICAgICAgICByZXR1cm4gImlmIjsKLSAg
ICBjYXNlIFR5cGU6OkVsc2U6Ci0gICAgICAgIHJldHVybiAiZWxzZSI7Ci0gICAgY2FzZSBUeXBl
OjpDb250aW51ZToKLSAgICAgICAgcmV0dXJuICJjb250aW51ZSI7Ci0gICAgY2FzZSBUeXBlOjpC
cmVhazoKLSAgICAgICAgcmV0dXJuICJicmVhayI7Ci0gICAgY2FzZSBUeXBlOjpTd2l0Y2g6Ci0g
ICAgICAgIHJldHVybiAic3dpdGNoIjsKLSAgICBjYXNlIFR5cGU6OkNhc2U6Ci0gICAgICAgIHJl
dHVybiAiY2FzZSI7Ci0gICAgY2FzZSBUeXBlOjpEZWZhdWx0OgotICAgICAgICByZXR1cm4gImRl
ZmF1bHQiOwotICAgIGNhc2UgVHlwZTo6RmFsbHRocm91Z2g6Ci0gICAgICAgIHJldHVybiAiZmFs
bHRocm91Z2giOwotICAgIGNhc2UgVHlwZTo6Rm9yOgotICAgICAgICByZXR1cm4gImZvciI7Ci0g
ICAgY2FzZSBUeXBlOjpXaGlsZToKLSAgICAgICAgcmV0dXJuICJ3aGlsZSI7Ci0gICAgY2FzZSBU
eXBlOjpEbzoKLSAgICAgICAgcmV0dXJuICJkbyI7Ci0gICAgY2FzZSBUeXBlOjpSZXR1cm46Ci0g
ICAgICAgIHJldHVybiAicmV0dXJuIjsKLSAgICBjYXNlIFR5cGU6Ok51bGw6Ci0gICAgICAgIHJl
dHVybiAibnVsbCI7Ci0gICAgY2FzZSBUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4gInRydWUi
OwotICAgIGNhc2UgVHlwZTo6RmFsc2U6Ci0gICAgICAgIHJldHVybiAiZmFsc2UiOwotICAgIGNh
c2UgVHlwZTo6Q29uc3RhbnQ6Ci0gICAgICAgIHJldHVybiAiY29uc3RhbnQiOwotICAgIGNhc2Ug
VHlwZTo6RGV2aWNlOgotICAgICAgICByZXR1cm4gImRldmljZSI7Ci0gICAgY2FzZSBUeXBlOjpU
aHJlYWRncm91cDoKLSAgICAgICAgcmV0dXJuICJ0aHJlYWRncm91cCI7Ci0gICAgY2FzZSBUeXBl
OjpUaHJlYWQ6Ci0gICAgICAgIHJldHVybiAidGhyZWFkIjsKLSAgICBjYXNlIFR5cGU6OlNwYWNl
OgotICAgICAgICByZXR1cm4gInNwYWNlIjsKLSAgICBjYXNlIFR5cGU6OlZlcnRleDoKLSAgICAg
ICAgcmV0dXJuICJ2ZXJ0ZXgiOwotICAgIGNhc2UgVHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJl
dHVybiAiZnJhZ21lbnQiOwotICAgIGNhc2UgVHlwZTo6Q29tcHV0ZToKLSAgICAgICAgcmV0dXJu
ICJjb21wdXRlIjsKLSAgICBjYXNlIFR5cGU6Ok51bVRocmVhZHM6Ci0gICAgICAgIHJldHVybiAi
bnVtdGhyZWFkcyI7Ci0gICAgY2FzZSBUeXBlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVy
biAiU1ZfSW5zdGFuY2VJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVlZlcnRleElEOgotICAgICAgICBy
ZXR1cm4gIlNWX1ZlcnRleElEIjsKLSAgICBjYXNlIFR5cGU6OlBTaXplOgotICAgICAgICByZXR1
cm4gIlBTSVpFIjsKLSAgICBjYXNlIFR5cGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiAi
U1ZfUG9zaXRpb24iOwotICAgIGNhc2UgVHlwZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0
dXJuICJTVl9Jc0Zyb250RmFjZSI7Ci0gICAgY2FzZSBUeXBlOjpTVlNhbXBsZUluZGV4OgotICAg
ICAgICByZXR1cm4gIlNWX1NhbXBsZUluZGV4IjsKLSAgICBjYXNlIFR5cGU6OlNWSW5uZXJDb3Zl
cmFnZToKLSAgICAgICAgcmV0dXJuICJTVl9Jbm5lckNvdmVyYWdlIjsKLSAgICBjYXNlIFR5cGU6
OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gIlNWX1RhcmdldCI7Ci0gICAgY2FzZSBUeXBlOjpT
VkRlcHRoOgotICAgICAgICByZXR1cm4gIlNWX0RlcHRoIjsKLSAgICBjYXNlIFR5cGU6OlNWQ292
ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiU1ZfQ292ZXJhZ2UiOwotICAgIGNhc2UgVHlwZTo6U1ZE
aXNwYXRjaFRocmVhZElEOgotICAgICAgICByZXR1cm4gIlNWX0Rpc3BhdGNoVGhyZWFkSUQiOwot
ICAgIGNhc2UgVHlwZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gIlNWX0dyb3VwSUQiOwot
ICAgIGNhc2UgVHlwZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gIlNWX0dyb3VwSW5k
ZXgiOwotICAgIGNhc2UgVHlwZTo6U1ZHcm91cFRocmVhZElEOgotICAgICAgICByZXR1cm4gIlNW
X0dyb3VwVGhyZWFkSUQiOwotICAgIGNhc2UgVHlwZTo6QXR0cmlidXRlOgotICAgICAgICByZXR1
cm4gIlNWX0F0dHJpYnV0ZSI7Ci0gICAgY2FzZSBUeXBlOjpSZWdpc3RlcjoKLSAgICAgICAgcmV0
dXJuICJyZWdpc3RlciI7Ci0gICAgY2FzZSBUeXBlOjpTcGVjaWFsaXplZDoKLSAgICAgICAgcmV0
dXJuICJzcGVjaWFsaXplZCI7Ci0gICAgY2FzZSBUeXBlOjpOYXRpdmU6Ci0gICAgICAgIHJldHVy
biAibmF0aXZlIjsKLSAgICBjYXNlIFR5cGU6OlJlc3RyaWN0ZWQ6Ci0gICAgICAgIHJldHVybiAi
cmVzdHJpY3RlZCI7Ci0gICAgY2FzZSBUeXBlOjpVbmRlcnNjb3JlOgotICAgICAgICByZXR1cm4g
Il8iOwotICAgIGNhc2UgVHlwZTo6QXV0bzoKLSAgICAgICAgcmV0dXJuICJhdXRvIjsKLSAgICBj
YXNlIFR5cGU6OlByb3RvY29sOgotICAgICAgICByZXR1cm4gInByb3RvY29sIjsKLSAgICBjYXNl
IFR5cGU6OkNvbnN0OgotICAgICAgICByZXR1cm4gImNvbnN0IjsKLSAgICBjYXNlIFR5cGU6OlN0
YXRpYzoKLSAgICAgICAgcmV0dXJuICJzdGF0aWMiOwotICAgIGNhc2UgVHlwZTo6UXVhbGlmaWVy
OgotICAgICAgICByZXR1cm4gInF1YWxpZmllciI7Ci0gICAgY2FzZSBUeXBlOjpJZGVudGlmaWVy
OgotICAgICAgICByZXR1cm4gImlkZW50aWZpZXIiOwotICAgIGNhc2UgVHlwZTo6T3BlcmF0b3JO
YW1lOgotICAgICAgICByZXR1cm4gIm9wZXJhdG9yIG5hbWUiOwotICAgIGNhc2UgVHlwZTo6RXF1
YWxzU2lnbjoKLSAgICAgICAgcmV0dXJuICI9IjsKLSAgICBjYXNlIFR5cGU6OlNlbWljb2xvbjoK
LSAgICAgICAgcmV0dXJuICI7IjsKLSAgICBjYXNlIFR5cGU6OkxlZnRDdXJseUJyYWNrZXQ6Ci0g
ICAgICAgIHJldHVybiAieyI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodEN1cmx5QnJhY2tldDoKLSAg
ICAgICAgcmV0dXJuICJ9IjsKLSAgICBjYXNlIFR5cGU6OkNvbG9uOgotICAgICAgICByZXR1cm4g
IjoiOwotICAgIGNhc2UgVHlwZTo6Q29tbWE6Ci0gICAgICAgIHJldHVybiAiLCI7Ci0gICAgY2Fz
ZSBUeXBlOjpMZWZ0UGFyZW50aGVzaXM6Ci0gICAgICAgIHJldHVybiAiKCI7Ci0gICAgY2FzZSBU
eXBlOjpSaWdodFBhcmVudGhlc2lzOgotICAgICAgICByZXR1cm4gIikiOwotICAgIGNhc2UgVHlw
ZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgIHJldHVybiAiW10iOwotICAgIGNhc2UgVHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiAiWyI7Ci0gICAgY2FzZSBUeXBl
OjpSaWdodFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiAiXSI7Ci0gICAgY2FzZSBUeXBl
OjpTdGFyOgotICAgICAgICByZXR1cm4gIioiOwotICAgIGNhc2UgVHlwZTo6TGVzc1RoYW5TaWdu
OgotICAgICAgICByZXR1cm4gIjwiOwotICAgIGNhc2UgVHlwZTo6R3JlYXRlclRoYW5TaWduOgot
ICAgICAgICByZXR1cm4gIj4iOwotICAgIGNhc2UgVHlwZTo6RnVsbFN0b3A6Ci0gICAgICAgIHJl
dHVybiAiLiI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzRXF1YWxzOgotICAgICAgICByZXR1cm4gIis9
IjsKLSAgICBjYXNlIFR5cGU6Ok1pbnVzRXF1YWxzOgotICAgICAgICByZXR1cm4gIi09IjsKLSAg
ICBjYXNlIFR5cGU6OlRpbWVzRXF1YWxzOgotICAgICAgICByZXR1cm4gIio9IjsKLSAgICBjYXNl
IFR5cGU6OkRpdmlkZUVxdWFsczoKLSAgICAgICAgcmV0dXJuICIvPSI7Ci0gICAgY2FzZSBUeXBl
OjpNb2RFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiJT0iOwotICAgIGNhc2UgVHlwZTo6WG9yRXF1
YWxzOgotICAgICAgICByZXR1cm4gIl49IjsKLSAgICBjYXNlIFR5cGU6OkFuZEVxdWFsczoKLSAg
ICAgICAgcmV0dXJuICImPSI7Ci0gICAgY2FzZSBUeXBlOjpPckVxdWFsczoKLSAgICAgICAgcmV0
dXJuICJ8PSI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodFNoaWZ0RXF1YWxzOgotICAgICAgICByZXR1
cm4gIj4+PSI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U2hpZnRFcXVhbHM6Ci0gICAgICAgIHJldHVy
biAiPDw9IjsKLSAgICBjYXNlIFR5cGU6OlBsdXNQbHVzOgotICAgICAgICByZXR1cm4gIisrIjsK
LSAgICBjYXNlIFR5cGU6Ok1pbnVzTWludXM6Ci0gICAgICAgIHJldHVybiAiLS0iOwotICAgIGNh
c2UgVHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiAiLT4iOwotICAgIGNhc2UgVHlwZTo6UXVl
c3Rpb25NYXJrOgotICAgICAgICByZXR1cm4gIj8iOwotICAgIGNhc2UgVHlwZTo6T3JPcjoKLSAg
ICAgICAgcmV0dXJuICJ8fCI7Ci0gICAgY2FzZSBUeXBlOjpBbmRBbmQ6Ci0gICAgICAgIHJldHVy
biAiJiYiOwotICAgIGNhc2UgVHlwZTo6T3I6Ci0gICAgICAgIHJldHVybiAifCI7Ci0gICAgY2Fz
ZSBUeXBlOjpYb3I6Ci0gICAgICAgIHJldHVybiAiXiI7Ci0gICAgY2FzZSBUeXBlOjpBbmQ6Ci0g
ICAgICAgIHJldHVybiAiJiI7Ci0gICAgY2FzZSBUeXBlOjpMZXNzVGhhbk9yRXF1YWxUbzoKLSAg
ICAgICAgcmV0dXJuICI8PSI7Ci0gICAgY2FzZSBUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbzoK
LSAgICAgICAgcmV0dXJuICI+PSI7Ci0gICAgY2FzZSBUeXBlOjpFcXVhbENvbXBhcmlzb246Ci0g
ICAgICAgIHJldHVybiAiPT0iOwotICAgIGNhc2UgVHlwZTo6Tm90RXF1YWw6Ci0gICAgICAgIHJl
dHVybiAiIT0iOwotICAgIGNhc2UgVHlwZTo6UmlnaHRTaGlmdDoKLSAgICAgICAgcmV0dXJuICI+
PiI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U2hpZnQ6Ci0gICAgICAgIHJldHVybiAiPDwiOwotICAg
IGNhc2UgVHlwZTo6UGx1czoKLSAgICAgICAgcmV0dXJuICIrIjsKLSAgICBjYXNlIFR5cGU6Ok1p
bnVzOgotICAgICAgICByZXR1cm4gIi0iOwotICAgIGNhc2UgVHlwZTo6RGl2aWRlOgotICAgICAg
ICByZXR1cm4gIi8iOwotICAgIGNhc2UgVHlwZTo6TW9kOgotICAgICAgICByZXR1cm4gIiUiOwot
ICAgIGNhc2UgVHlwZTo6VGlsZGU6Ci0gICAgICAgIHJldHVybiAifiI7Ci0gICAgY2FzZSBUeXBl
OjpFeGNsYW1hdGlvblBvaW50OgotICAgICAgICByZXR1cm4gIiEiOwotICAgIGNhc2UgVHlwZTo6
QXQ6Ci0gICAgICAgIHJldHVybiAiQCI7Ci0gICAgY2FzZSBUeXBlOjpFbmRPZkZpbGU6Ci0gICAg
ICAgIHJldHVybiAiRU9GIjsKLSAgICBjYXNlIFR5cGU6OkludmFsaWQ6Ci0gICAgICAgIHJldHVy
biAiTEVYSU5HX0VSUk9SIjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNWYWxpZElkZW50aWZpZXJTdGFydChVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiAodGhl
Q2hhciA+PSAnYScgJiYgdGhlQ2hhciA8PSAneicpCi0gICAgICAgIHx8ICh0aGVDaGFyID49ICdB
JyAmJiB0aGVDaGFyIDw9ICdaJykKLSAgICAgICAgfHwgKHRoZUNoYXIgPT0gJ18nKTsKLX0KLQot
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkTm9uU3RhcnRpbmdJZGVudGlmaWVyQ2hh
cihVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiAodGhlQ2hhciA+PSAnYScgJiYgdGhlQ2hh
ciA8PSAneicpCi0gICAgICAgIHx8ICh0aGVDaGFyID49ICdBJyAmJiB0aGVDaGFyIDw9ICdaJykK
LSAgICAgICAgfHwgKHRoZUNoYXIgPj0gJzAnICYmIHRoZUNoYXIgPD0gJzknKQotICAgICAgICB8
fCAodGhlQ2hhciA9PSAnXycpOwotfQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSGV4
YWRlY2ltYWxDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIHJldHVybiAoY2hhcmFj
dGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknKQotICAgICAgICB8fCAoY2hhcmFjdGVyID49
ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ2YnKQotICAgICAgICB8fCAoY2hhcmFjdGVyID49ICdBJyAm
JiBjaGFyYWN0ZXIgPD0gJ0YnKTsKLX0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Rp
Z2l0KFVDaGFyIHRoZUNoYXIpCi17Ci0gICAgcmV0dXJuIHRoZUNoYXIgPj0gJzAnICYmIHRoZUNo
YXIgPD0gJzknOwotfQotCi1hdXRvIExleGVyOjpjb25zdW1lVG9rZW5Gcm9tU3RyZWFtKCkgLT4g
VG9rZW4KLXsKLSAgICBVQ2hhciBjdXJyZW50ID0gMDsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBt
X29mZnNldDsKLQotICAgIGF1dG8gcGVlayA9IFsmXSAoKSAtPiBVQ2hhciB7Ci0gICAgICAgIGlm
IChvZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9z
dHJpbmdWaWV3W29mZnNldF07Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0KLSAgICBhdXRv
IHNoaWZ0ID0gWyZdIHsKLSAgICAgICAgaWYgKG9mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgo
KSkgewotICAgICAgICAgICAgY3VycmVudCA9IG1fc3RyaW5nVmlld1tvZmZzZXRdOwotICAgICAg
ICAgICAgKytvZmZzZXQ7Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICAgICAgfQot
ICAgICAgICBjdXJyZW50ID0gMDsKLSAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgfTsKLQot
ICAgIGF1dG8gY29uc3VtZSA9IFsmXSAoVUNoYXIgdGhlQ2hhcikgewotICAgICAgICBpZiAocGVl
aygpID09IHRoZUNoYXIpIHsKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKLQotICAg
IGF1dG8gbmV4dElzSWRlbnRpZmllciA9IFsmXSB7Ci0gICAgICAgIHJldHVybiBpc1ZhbGlkTm9u
U3RhcnRpbmdJZGVudGlmaWVyQ2hhcihwZWVrKCkpOwotICAgIH07Ci0KLSAgICBhdXRvIHRva2Vu
ID0gWyZdIChUb2tlbjo6VHlwZSB0eXBlKSAtPiBUb2tlbiB7Ci0gICAgICAgIGF1dG8gb2xkT2Zm
c2V0ID0gbV9vZmZzZXQ7Ci0gICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgICBza2lw
V2hpdGVzcGFjZUFuZENvbW1lbnRzKCk7Ci0gICAgICAgIHJldHVybiB7IHsgb2xkT2Zmc2V0LCBv
ZmZzZXQsIG1fbmFtZVNwYWNlIH0sIHR5cGUgfTsKLSAgICB9OwotCi0gICAgc3dpdGNoIChzaGlm
dCgpKSB7Ci0gICAgY2FzZSAnQSc6Ci0gICAgY2FzZSAnQic6Ci0gICAgY2FzZSAnQyc6Ci0gICAg
Y2FzZSAnRCc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnRyc6Ci0g
ICAgY2FzZSAnSCc6Ci0gICAgY2FzZSAnSSc6Ci0gICAgY2FzZSAnSic6Ci0gICAgY2FzZSAnSyc6
Ci0gICAgY2FzZSAnTCc6Ci0gICAgY2FzZSAnTSc6Ci0gICAgY2FzZSAnTic6Ci0gICAgY2FzZSAn
Tyc6Ci0gICAgY2FzZSAnUSc6Ci0gICAgY2FzZSAnUic6Ci0gICAgY2FzZSAnVCc6Ci0gICAgY2Fz
ZSAnVSc6Ci0gICAgY2FzZSAnVic6Ci0gICAgY2FzZSAnVyc6Ci0gICAgY2FzZSAnWCc6Ci0gICAg
Y2FzZSAnWSc6Ci0gICAgY2FzZSAnWic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnaCc6Ci0g
ICAgY2FzZSAnaic6Ci0gICAgY2FzZSAnayc6Ci0gICAgY2FzZSAnbCc6Ci0gICAgY2FzZSAnbSc6
Ci0gICAgY2FzZSAncSc6Ci0gICAgY2FzZSAneCc6Ci0gICAgY2FzZSAneSc6Ci0gICAgY2FzZSAn
eic6Ci1wYXJzZUlkZW50aWZpZXI6Ci0gICAgICAgIHdoaWxlIChpc1ZhbGlkTm9uU3RhcnRpbmdJ
ZGVudGlmaWVyQ2hhcihwZWVrKCkpKQotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLQotICAgIGNhc2UgJ3MnOgotICAg
ICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdsJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlF1YWxpZmllcik7Ci0KLSAgICAgICAgY2FzZSAndyc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnYycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpTd2l0Y2gpOwotCi0gICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdyJzoKLSAg
ICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3RydWN0KTsKLSAg
ICAgICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpTdGF0aWMpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpTcGFjZSk7Ci0gICAgICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd6JykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcGVjaWFsaXplZCk7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ1MnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ1YnKSkK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUo
J18nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgIHN3aXRj
aCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ0cnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0g
ICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnSSc6Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZHcm91cElEKTsKLSAgICAgICAgICAgICAgICBjYXNl
ICduJzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWR3JvdXBJbmRleCk7Ci0KLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgJ1QnOgotICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6U1ZHcm91cFRocmVhZElEKTsKLQotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgY2FzZSAnRCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dp
dGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkRlcHRoKTsKLSAgICAgICAgICAgIGNhc2Ug
J2knOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdzJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdUJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAg
ICBjYXNlICdDJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlNWQ292ZXJhZ2UpOwotICAgICAgICBjYXNlICdUJzoKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
cicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZUYXJnZXQpOwotICAgICAgICBjYXNlICdT
JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnbScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3gnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWU2Ft
cGxlSW5kZXgpOwotICAgICAgICBjYXNlICdQJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWUG9zaXRpb24pOwotICAgICAg
ICBjYXNlICdWJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgneCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlNWVmVydGV4SUQpOwotICAgICAgICBjYXNlICdJJzoKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAg
ICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ0YnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnRicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWSXNGcm9udEZhY2UpOwotICAgICAgICAgICAgY2FzZSAn
bic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBl
ZWsoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0MnKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cn
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJbm5lckNv
dmVyYWdlKTsKLSAgICAgICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJRCk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ3QnOgotICAgICAg
ICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VHJ1ZSk7Ci0gICAgICAgIGNhc2UgJ3kn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUeXBlZGVmKTsKLSAgICAgICAg
Y2FzZSAnaCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIGlmICghbmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
VGhyZWFkKTsKLQotICAgICAgICAgICAgaWYgKHBlZWsoKSAhPSAnZycpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50ID09ICdnJyk7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwKTsKLQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IH0KLQotICAgIGNhc2UgJ2UnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBj
YXNlICduJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6RW51bSk7Ci0gICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbHNlKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICdvJzoKLSAg
ICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdy
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJ
c0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1l
KTsKLQotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICBpZiAoY29uc3VtZSgnPicpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAg
ICAgIGNhc2UgJzwnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKCc8JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVy
YXRvck5hbWUpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAn
Kyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgY29uc3VtZSgnKycpOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAg
ICAgIGNhc2UgJy0nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGNvbnN1bWUo
Jy0nKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1l
KTsKLQotICAgICAgICBjYXNlICd8JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2Fz
ZSAnPSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCc9
JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnZhbGlkKTsK
LSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQot
ICAgICAgICBjYXNlICcqJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnLyc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1l
KTsKLQotICAgICAgICBjYXNlICchJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2Fz
ZSAnfic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJ14nOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0
b3JOYW1lKTsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yKTsKLQotICAg
IGNhc2UgJ2knOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6SWYpOwotCi0gICAgY2FzZSAnYyc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0g
ICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpDYXNlKTsKLQotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotICAgICAgICBjYXNl
ICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkg
ewotICAgICAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb21wdXRlKTsKLSAgICAgICAg
ICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1
JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNvbnRpbnVl
KTsKLSAgICAgICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLQotICAgICAgICAgICAgICAgICAgICBp
ZiAoIW5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6Q29uc3QpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb25zdGFudCk7Ci0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNl
ICdiJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdrJykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OkJyZWFrKTsKLQotICAgIGNhc2UgJ2QnOgotICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpE
byk7Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRl
ZmF1bHQpOwotICAgICAgICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRldmljZSk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
fQotCi0KLSAgICBjYXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAg
Y2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGb3IpOwotICAg
ICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpGcmFnbWVudCk7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAg
ICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGYWxsdGhyb3VnaCk7Ci0KLSAg
ICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RmFsc2UpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChw
ZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2YnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0g
ICAgICAgICAgICBjYXNlICd2JzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6RGV2aWNlKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLSAgICBj
YXNlICd3JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OldoaWxlKTsKLQotICAgIGNhc2UgJ3InOgotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZXR1cm4p
OwotICAgICAgICBjYXNlICdnJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
UmVnaXN0ZXIpOwotICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJlc3RyaWN0ZWQpOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0K
LQotICAgIGNhc2UgJ24nOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNl
ICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok5hdGl2ZSk7Ci0gICAgICAgIGNhc2UgJ3UnOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAg
ICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok51bGwpOwotICAgICAgICAgICAgY2FzZSAnbSc6Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpOdW1UaHJlYWRzKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChw
ZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZp
ZXIpOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpRdWFsaWZpZXIpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ3Yn
OgotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6VmVydGV4KTsKLQotICAgIGNhc2UgJ1AnOgotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ1MnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ1onKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ0UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6UFNpemUpOwotCi0gICAgY2FzZSAndSc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnbicpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgn
aScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29u
c3VtZSgnZicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWFs
aWZpZXIpOwotCi0gICAgY2FzZSAncCc6Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbycp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICgh
Y29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQ
cm90b2NvbCk7Ci0KLSAgICBjYXNlICdfJzoKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlVuZGVyc2NvcmUpOwotCi0gICAgY2FzZSAnYSc6Ci0gICAgICAgIHN3
aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2kn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnYicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXR0cmlidXRlKTsKLSAg
ICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OkF1dG8pOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJz4nOgotICAgICAgICBpZiAoY29u
c3VtZSgnPicpKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscyk7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnQpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgIGNhc2UgJzwnOgotICAgICAgICBpZiAoY29u
c3VtZSgnPCcpKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzKTsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0KTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpMZXNzVGhhbk9yRXF1YWxUbyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6TGVzc1RoYW5TaWduKTsKLQotICAgIGNhc2UgJysnOgotICAgICAgICBpZiAoY29uc3VtZSgn
PScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzKTsK
LSAgICAgICAgaWYgKGNvbnN1bWUoJysnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6UGx1c1BsdXMpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBs
dXMpOwotCi0gICAgY2FzZSAnLSc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzKTsKLSAgICAgICAgaWYg
KGNvbnN1bWUoJy0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TWlu
dXNNaW51cyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCc+JykpCi0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OkFycm93KTsKLSAgICAgICAgaWYgKGlzRGlnaXQocGVlaygpKSkg
ewotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGdvdG8gcGFyc2VOdW1iZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJy4nKSkKLSAgICAgICAgICAgIGdvdG8gcGFy
c2VGbG9hdEFmdGVyRG90OwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1pbnVz
KTsKLQotICAgIGNhc2UgJyonOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaW1lc0VxdWFscyk7Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6U3Rhcik7Ci0KLSAgICBjYXNlICcvJzoKLSAgICAgICAgaWYg
KGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGl2
aWRlRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEaXZpZGUpOwot
Ci0gICAgY2FzZSAnJSc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1vZEVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6TW9kKTsKLQotICAgIGNhc2UgJ14nOgotICAgICAgICBpZiAoY29uc3Vt
ZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpYb3JFcXVhbHMp
OwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Olhvcik7Ci0KLSAgICBjYXNlICcm
JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6QW5kRXF1YWxzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJyYnKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QW5kQW5kKTsKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpBbmQpOwotCi0gICAgY2FzZSAnfCc6Ci0gICAgICAgIGlmIChj
b25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9yRXF1
YWxzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJ3wnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6T3JPcik7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
T3IpOwotCi0gICAgY2FzZSAnWyc6Ci0gICAgICAgIGlmIChjb25zdW1lKCddJykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyKTsKLSAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0KLSAgICBj
YXNlICc9JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29uKTsKLSAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKTsKLQotICAgIGNhc2UgJyEnOgotICAgICAgICBpZiAo
Y29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOb3RF
cXVhbCk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RXhjbGFtYXRpb25Qb2lu
dCk7Ci0KLSAgICBjYXNlICc7JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpT
ZW1pY29sb24pOwotCi0gICAgY2FzZSAneyc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6TGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBjYXNlICd9JzoKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCk7Ci0KLSAgICBjYXNlICc6JzoK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb2xvbik7Ci0KLSAgICBjYXNlICcs
JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb21tYSk7Ci0KLSAgICBjYXNl
ICcoJzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMp
OwotCi0gICAgY2FzZSAnKSc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Umln
aHRQYXJlbnRoZXNpcyk7Ci0KLSAgICBjYXNlICddJzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpOwotCi0gICAgY2FzZSAnLic6Ci0gICAgICAg
IGlmIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlRmxvYXRBZnRlckRv
dDsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGdWxsU3RvcCk7Ci0KLSAgICBj
YXNlICc/JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWVzdGlvbk1hcmsp
OwotCi0gICAgY2FzZSAnfic6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VGls
ZGUpOwotCi0gICAgY2FzZSAnQCc6Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
QXQpOwotCi0gICAgY2FzZSAnMCc6Ci0gICAgY2FzZSAnMSc6Ci0gICAgY2FzZSAnMic6Ci0gICAg
Y2FzZSAnMyc6Ci0gICAgY2FzZSAnNCc6Ci0gICAgY2FzZSAnNSc6Ci0gICAgY2FzZSAnNic6Ci0g
ICAgY2FzZSAnNyc6Ci0gICAgY2FzZSAnOCc6Ci0gICAgY2FzZSAnOSc6IHsKLXBhcnNlTnVtYmVy
OgotICAgICAgICBpZiAoY3VycmVudCA9PSAnMCcgJiYgY29uc3VtZSgneCcpKSB7Ci0gICAgICAg
ICAgICB3aGlsZSAoaXNIZXhhZGVjaW1hbENoYXJhY3RlcihwZWVrKCkpKQotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZSgndScpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VWludExpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHdoaWxlIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAgICAgICAgICBzaGlmdCgpOwotCi0gICAg
ICAgIGlmIChjb25zdW1lKCcuJykpIHsKLXBhcnNlRmxvYXRBZnRlckRvdDoKLSAgICAgICAgICAg
IHdoaWxlIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGNvbnN1bWUoJ2YnKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6RmxvYXRMaXRlcmFsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25zdW1lKCdmJykp
Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCk7Ci0K
LSAgICAgICAgaWYgKGNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6VWludExpdGVyYWwpOwotCi0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6SW50TGl0ZXJhbCk7Ci0gICAgfQotCi0gICAgZGVmYXVsdDogCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGlmIChtX29mZnNldCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RW5kT2ZGaWxlKTsKLSAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkludmFsaWQpOwotfQotCi0KLS8vIFdlIGNhbiB0YWtlIGFkdmFudGFn
ZSBvZiB0d28gcHJvcGVydGllcyBvZiBVbmljb2RlOgotLy8gMS4gVGhlIGNvbnNpdHV0ZW50IFVU
Ri0xNiBjb2RlIHVuaXRzIGZvciBhbGwgbm9uLUJNUCBjb2RlIHBvaW50cyBhcmUgc3Vycm9nYXRl
cywKLS8vIHdoaWNoIG1lYW5zIHdlJ2xsIG5ldmVyIHNlZSBhIGZhbHNlIG1hdGNoLiBJZiB3ZSBz
ZWUgYSBCTVAgY29kZSB1bml0LCB3ZQotLy8gcmVhbGx5IGhhdmUgYSBCTVAgY29kZSBwb2ludC4K
LS8vIDIuIEV2ZXJ5dGhpbmcgd2UncmUgbG9va2luZyBmb3IgaXMgaW4gQk1QCi0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgY29kZVVuaXQpCi17Ci0gICAgc3dpdGNoIChj
b2RlVW5pdCkgewotICAgIGNhc2UgJyAnOgotICAgIGNhc2UgJ1x0JzoKLSAgICBjYXNlICdccic6
Ci0gICAgY2FzZSAnXG4nOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNOZXds
aW5lKFVDaGFyIGNvZGVVbml0KQotewotICAgIHN3aXRjaCAoY29kZVVuaXQpIHsKLSAgICBjYXNl
ICdccic6Ci0gICAgY2FzZSAnXG4nOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1hdXRvIExleGVyOjpsaW5lQW5k
Q29sdW1uTnVtYmVyRnJvbU9mZnNldChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQpIC0+IExpbmVBbmRDb2x1bW4KLXsKLSAgICAvLyBDb3VudGluZyBm
cm9tIDEgdG8gbWF0Y2ggbW9zdCB0ZXh0IGVkaXRvcnMuCi0gICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IDE7Ci0gICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gMTsKLSAgICBmb3IgKHVuc2lnbmVk
IG9mZnNldCA9IDA7IG9mZnNldCA8IHN0ZDo6bWluKHN0cmluZ1ZpZXcubGVuZ3RoKCksIHRhcmdl
dE9mZnNldCk7ICsrb2Zmc2V0KSB7Ci0gICAgICAgICsrY29sdW1uTnVtYmVyOwotICAgICAgICBp
ZiAoaXNOZXdsaW5lKHN0cmluZ1ZpZXdbb2Zmc2V0XSkpIHsKLSAgICAgICAgICAgICsrbGluZU51
bWJlcjsKLSAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHsgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIH07Ci19Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN0cmluZ1ZpZXc+IHNvdXJjZUZyb21OYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2Ug
bmFtZVNwYWNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZTEsIGNvbnN0IFN0cmluZyogc291cmNlMikK
LXsKLSAgICBzd2l0Y2ggKG5hbWVTcGFjZSkgewotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBjYXNlIEFT
VDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOgotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhzb3Vy
Y2UxKTsKLSAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyOgotICAgICAgICBBU1NF
UlQoc291cmNlMik7Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3KCpzb3VyY2UyKTsKLSAgICB9
Ci19Ci0KLVN0cmluZyBMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IgZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc291cmNlMSwgY29uc3QgU3RyaW5nKiBzb3VyY2UyKQotewotICAgIGlmIChhdXRvIGNvZGVM
b2NhdGlvbiA9IGVycm9yLmNvZGVMb2NhdGlvbigpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNvdXJj
ZSA9IHNvdXJjZUZyb21OYW1lU3BhY2UoY29kZUxvY2F0aW9uLm5hbWVTcGFjZSgpLCBzb3VyY2Ux
LCBzb3VyY2UyKSkgewotICAgICAgICAgICAgYXV0byBsaW5lQW5kQ29sdW1uID0gbGluZUFuZENv
bHVtbk51bWJlckZyb21PZmZzZXQoKnNvdXJjZSwgZXJyb3IuY29kZUxvY2F0aW9uKCkuc3RhcnRP
ZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhsaW5lQW5kQ29sdW1uLmxp
bmUsICc6JywgbGluZUFuZENvbHVtbi5jb2x1bW4sICI6ICIsIGVycm9yLm1lc3NhZ2UoKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UoKTsKLX0KLQotdm9pZCBM
ZXhlcjo6c2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpCi17Ci0gICAgd2hpbGUgKG1fb2Zmc2V0
IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChpc1doaXRlc3BhY2UobV9z
dHJpbmdWaWV3W21fb2Zmc2V0XSkpCi0gICAgICAgICAgICArK21fb2Zmc2V0OwotICAgICAgICBl
bHNlIGlmIChtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdID09ICcvJyAmJiBtX29mZnNldCArIDEgPCBt
X3N0cmluZ1ZpZXcubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChtX3N0cmluZ1ZpZXdbbV9v
ZmZzZXQgKyAxXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAvLyBMaW5lIGNvbW1lbnQKLSAg
ICAgICAgICAgICAgICBtX29mZnNldCArPSAyOwotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCBpbiB0aGUgY2FzZSBvZiBcclxuIHRoaXMgbWFrZXMgdGhlIGNvbW1lbnQgZW5kIG9uIHRoZSBc
ci4gSXQgaXMgZmluZSwgYXMgdGhlIFxuIGFmdGVyIHRoYXQgaXMgc2ltcGxlIHdoaXRlc3BhY2Uu
Ci0gICAgICAgICAgICAgICAgZm9yICggOyBtX29mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgo
KSAmJiAhaXNOZXdsaW5lKG1fc3RyaW5nVmlld1ttX29mZnNldF0pOyArK21fb2Zmc2V0KSB7IH0K
LSAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdHJpbmdWaWV3W21fb2Zmc2V0ICsgMV0gPT0gJyon
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTG9uZyBjb21tZW50Ci0gICAgICAgICAgICAgICAgZm9y
ICggOyBtX29mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSA7ICsrbV9vZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldF0gPT0gJyonICYmIG1f
b2Zmc2V0ICsgMSA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSAmJiBtX3N0cmluZ1ZpZXdbbV9vZmZz
ZXQgKyAxXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fb2Zmc2V0ICs9IDI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMZXhlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjg0
MzE3MWQyMTg5MjQ2NDQ2ZWEwYjVkMzExNDczZDY1MDhiYWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGV4ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNp
bmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBMZXhlcjsKLQotc3RydWN0IFRva2VuIHsK
LSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uOwotICAgIGVudW0gY2xhc3MgVHlwZSA6IHVp
bnQ4X3QgewotICAgICAgICBJbnRMaXRlcmFsLAotICAgICAgICBVaW50TGl0ZXJhbCwKLSAgICAg
ICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBTdHJ1Y3QsCi0gICAgICAgIFR5cGVkZWYsCi0gICAg
ICAgIEVudW0sCi0gICAgICAgIE9wZXJhdG9yLAotICAgICAgICBJZiwKLSAgICAgICAgRWxzZSwK
LSAgICAgICAgQ29udGludWUsCi0gICAgICAgIEJyZWFrLAotICAgICAgICBTd2l0Y2gsCi0gICAg
ICAgIENhc2UsCi0gICAgICAgIERlZmF1bHQsCi0gICAgICAgIEZhbGx0aHJvdWdoLAotICAgICAg
ICBGb3IsCi0gICAgICAgIFdoaWxlLAotICAgICAgICBEbywKLSAgICAgICAgUmV0dXJuLAotICAg
ICAgICBOdWxsLAotICAgICAgICBUcnVlLAotICAgICAgICBGYWxzZSwKLSAgICAgICAgQ29uc3Rh
bnQsCi0gICAgICAgIERldmljZSwKLSAgICAgICAgVGhyZWFkZ3JvdXAsCi0gICAgICAgIFRocmVh
ZCwKLSAgICAgICAgU3BhY2UsCi0gICAgICAgIFZlcnRleCwKLSAgICAgICAgRnJhZ21lbnQsCi0g
ICAgICAgIENvbXB1dGUsCi0gICAgICAgIE51bVRocmVhZHMsCi0gICAgICAgIFNWSW5zdGFuY2VJ
RCwKLSAgICAgICAgU1ZWZXJ0ZXhJRCwKLSAgICAgICAgUFNpemUsCi0gICAgICAgIFNWUG9zaXRp
b24sCi0gICAgICAgIFNWSXNGcm9udEZhY2UsCi0gICAgICAgIFNWU2FtcGxlSW5kZXgsCi0gICAg
ICAgIFNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgU1ZUYXJnZXQsCi0gICAgICAgIFNWRGVwdGgs
Ci0gICAgICAgIFNWQ292ZXJhZ2UsCi0gICAgICAgIFNWRGlzcGF0Y2hUaHJlYWRJRCwKLSAgICAg
ICAgU1ZHcm91cElELAotICAgICAgICBTVkdyb3VwSW5kZXgsCi0gICAgICAgIFNWR3JvdXBUaHJl
YWRJRCwKLSAgICAgICAgQXR0cmlidXRlLAotICAgICAgICBSZWdpc3RlciwKLSAgICAgICAgU3Bl
Y2lhbGl6ZWQsCi0gICAgICAgIE5hdGl2ZSwKLSAgICAgICAgUmVzdHJpY3RlZCwKLSAgICAgICAg
VW5kZXJzY29yZSwKLSAgICAgICAgQXV0bywKLSAgICAgICAgUHJvdG9jb2wsCi0gICAgICAgIENv
bnN0LAotICAgICAgICBTdGF0aWMsCi0gICAgICAgIFF1YWxpZmllciwKLSAgICAgICAgSWRlbnRp
ZmllciwKLSAgICAgICAgT3BlcmF0b3JOYW1lLAotICAgICAgICBFcXVhbHNTaWduLAotICAgICAg
ICBTZW1pY29sb24sCi0gICAgICAgIExlZnRDdXJseUJyYWNrZXQsCi0gICAgICAgIFJpZ2h0Q3Vy
bHlCcmFja2V0LAotICAgICAgICBDb2xvbiwKLSAgICAgICAgQ29tbWEsCi0gICAgICAgIExlZnRQ
YXJlbnRoZXNpcywKLSAgICAgICAgUmlnaHRQYXJlbnRoZXNpcywKLSAgICAgICAgU3F1YXJlQnJh
Y2tldFBhaXIsCi0gICAgICAgIExlZnRTcXVhcmVCcmFja2V0LAotICAgICAgICBSaWdodFNxdWFy
ZUJyYWNrZXQsCi0gICAgICAgIFN0YXIsCi0gICAgICAgIExlc3NUaGFuU2lnbiwKLSAgICAgICAg
R3JlYXRlclRoYW5TaWduLAotICAgICAgICBGdWxsU3RvcCwKLSAgICAgICAgUGx1c0VxdWFscywK
LSAgICAgICAgTWludXNFcXVhbHMsCi0gICAgICAgIFRpbWVzRXF1YWxzLAotICAgICAgICBEaXZp
ZGVFcXVhbHMsCi0gICAgICAgIE1vZEVxdWFscywKLSAgICAgICAgWG9yRXF1YWxzLAotICAgICAg
ICBBbmRFcXVhbHMsCi0gICAgICAgIE9yRXF1YWxzLAotICAgICAgICBSaWdodFNoaWZ0RXF1YWxz
LAotICAgICAgICBMZWZ0U2hpZnRFcXVhbHMsCi0gICAgICAgIFBsdXNQbHVzLAotICAgICAgICBN
aW51c01pbnVzLAotICAgICAgICBBcnJvdywKLSAgICAgICAgUXVlc3Rpb25NYXJrLAotICAgICAg
ICBPck9yLAotICAgICAgICBBbmRBbmQsCi0gICAgICAgIE9yLAotICAgICAgICBYb3IsCi0gICAg
ICAgIEFuZCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFsVG8sCi0gICAgICAgIEdyZWF0ZXJUaGFu
T3JFcXVhbFRvLAotICAgICAgICBFcXVhbENvbXBhcmlzb24sCi0gICAgICAgIE5vdEVxdWFsLAot
ICAgICAgICBSaWdodFNoaWZ0LAotICAgICAgICBMZWZ0U2hpZnQsCi0gICAgICAgIFBsdXMsCi0g
ICAgICAgIE1pbnVzLAotICAgICAgICBEaXZpZGUsCi0gICAgICAgIE1vZCwKLSAgICAgICAgVGls
ZGUsCi0gICAgICAgIEV4Y2xhbWF0aW9uUG9pbnQsCi0gICAgICAgIEF0LAotICAgICAgICBFbmRP
ZkZpbGUsCi0gICAgICAgIEludmFsaWQKLSAgICB9IHR5cGUge1R5cGU6OkludmFsaWR9OwotCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVOYW1lKFR5cGUpOwotCi0gICAgaW5saW5lIFN0cmlu
Z1ZpZXcgc3RyaW5nVmlldyhjb25zdCBMZXhlciYpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvZGVMb2NhdGlvbi5zdGFy
dE9mZnNldCgpOwotICAgIH0KLX07Ci0KLWlubGluZSBDb2RlTG9jYXRpb246OkNvZGVMb2NhdGlv
bihjb25zdCBUb2tlbiYgdG9rZW4pCi0gICAgOiBDb2RlTG9jYXRpb24odG9rZW4uY29kZUxvY2F0
aW9uKQotewotfQotCi1jbGFzcyBMZXhlciB7Ci1wdWJsaWM6Ci0gICAgTGV4ZXIoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBMZXhlcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIEFTVDo6TmFtZVNwYWNlIG5h
bWVTcGFjZSkKLSAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKLSAgICAgICAgLCBt
X25hbWVTcGFjZShuYW1lU3BhY2UpCi0gICAgewotICAgICAgICBza2lwV2hpdGVzcGFjZUFuZENv
bW1lbnRzKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclswXSA9IGNvbnN1bWVUb2tlbkZyb21TdHJl
YW0oKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFdID0gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgp
OwotICAgIH0KLQotICAgIExleGVyKGNvbnN0IExleGVyJikgPSBkZWxldGU7Ci0gICAgTGV4ZXIo
TGV4ZXImJikgPSBkZWZhdWx0OwotCi0gICAgTGV4ZXImIG9wZXJhdG9yPShjb25zdCBMZXhlciYp
ID0gZGVsZXRlOwotICAgIExleGVyJiBvcGVyYXRvcj0oTGV4ZXImJikgPSBkZWZhdWx0OwotCi0K
LSAgICBUb2tlbiBjb25zdW1lVG9rZW4oKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBt
X3JpbmdCdWZmZXJbbV9yaW5nQnVmZmVySW5kZXhdOwotICAgICAgICBtX3JpbmdCdWZmZXJbbV9y
aW5nQnVmZmVySW5kZXhdID0gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwotICAgICAgICBtX3Jp
bmdCdWZmZXJJbmRleCA9IChtX3JpbmdCdWZmZXJJbmRleCArIDEpICUgMjsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBUb2tlbiBwZWVrKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3JpbmdCdWZmZXJbbV9yaW5nQnVmZmVySW5kZXhdOwotICAgIH0KLQotICAg
IFRva2VuIHBlZWtGdXJ0aGVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JpbmdC
dWZmZXJbKG1fcmluZ0J1ZmZlckluZGV4ICsgMSkgJSAyXTsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRoaXMKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzU3Ci0gICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgVG9r
ZW4gcmluZ0J1ZmZlclsyXTsKLSAgICAgICAgdW5zaWduZWQgcmluZ0J1ZmZlckluZGV4OwotICAg
ICAgICB1bnNpZ25lZCBvZmZzZXQ7Ci0gICAgfTsKLQotICAgIFN0YXRlIHN0YXRlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIFN0YXRlIHN0YXRlOwotICAgICAgICBzdGF0ZS5yaW5nQnVmZmVyWzBd
ID0gbV9yaW5nQnVmZmVyWzBdOwotICAgICAgICBzdGF0ZS5yaW5nQnVmZmVyWzFdID0gbV9yaW5n
QnVmZmVyWzFdOwotICAgICAgICBzdGF0ZS5yaW5nQnVmZmVySW5kZXggPSBtX3JpbmdCdWZmZXJJ
bmRleDsKLSAgICAgICAgc3RhdGUub2Zmc2V0ID0gbV9vZmZzZXQ7Ci0gICAgICAgIHJldHVybiBz
dGF0ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0YXRlKGNvbnN0IFN0YXRlJiBzdGF0ZSkKLSAg
ICB7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclswXSA9IHN0YXRlLnJpbmdCdWZmZXJbMF07Ci0gICAg
ICAgIG1fcmluZ0J1ZmZlclsxXSA9IHN0YXRlLnJpbmdCdWZmZXJbMV07Ci0gICAgICAgIG1fcmlu
Z0J1ZmZlckluZGV4ID0gc3RhdGUucmluZ0J1ZmZlckluZGV4OwotICAgICAgICBtX29mZnNldCA9
IHN0YXRlLm9mZnNldDsKLQotICAgIH0KLQotICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUmJiBzdGF0
ZSkKLSAgICB7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclswXSA9IFdURk1vdmUoc3RhdGUucmluZ0J1
ZmZlclswXSk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsxXSA9IFdURk1vdmUoc3RhdGUucmluZ0J1
ZmZlclsxXSk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlckluZGV4ID0gV1RGTW92ZShzdGF0ZS5yaW5n
QnVmZmVySW5kZXgpOwotICAgICAgICBtX29mZnNldCA9IFdURk1vdmUoc3RhdGUub2Zmc2V0KTsK
LSAgICB9Ci0KLSAgICBib29sIGlzRnVsbHlDb25zdW1lZCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gcGVlaygpLnR5cGUgPT0gVG9rZW46OlR5cGU6OkVuZE9mRmlsZTsKLSAgICB9Ci0K
LSAgICBTdHJpbmcgZXJyb3JTdHJpbmcoY29uc3QgVG9rZW4mIHRva2VuLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiUGFyc2UgZXJyb3Ig
YXQgbGluZSAiLCBsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldChtX3N0cmluZ1ZpZXcsIHRv
a2VuLnN0YXJ0T2Zmc2V0KCkpLmxpbmUsICI6ICIsIG1lc3NhZ2UpOwotICAgIH0KLQotICAgIHN0
YXRpYyBTdHJpbmcgZXJyb3JTdHJpbmcoRXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlMSwgY29u
c3QgU3RyaW5nKiBzb3VyY2UyID0gbnVsbHB0cik7Ci0KLSAgICBBU1Q6Ok5hbWVTcGFjZSBuYW1l
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQotCi1wcml2YXRlOgotICAgIGZy
aWVuZCBzdHJ1Y3QgVG9rZW47Ci0gICAgVG9rZW4gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwot
Ci0gICAgdm9pZCBza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRzKCk7Ci0KLSAgICBzdHJ1Y3QgTGlu
ZUFuZENvbHVtbiB7Ci0gICAgICAgIHVuc2lnbmVkIGxpbmU7Ci0gICAgICAgIHVuc2lnbmVkIGNv
bHVtbjsKLSAgICB9OwotICAgIHN0YXRpYyBMaW5lQW5kQ29sdW1uIGxpbmVBbmRDb2x1bW5OdW1i
ZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBvZmZzZXQpOwotCi0gICAg
U3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7Ci0gICAgVG9rZW4gbV9yaW5nQnVmZmVyWzJdOwotICAg
IHVuc2lnbmVkIG1fcmluZ0J1ZmZlckluZGV4IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fb2Zmc2V0
IHsgMCB9OwotICAgIEFTVDo6TmFtZVNwYWNlIG1fbmFtZVNwYWNlIHsgQVNUOjpOYW1lU3BhY2U6
OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotU3RyaW5nVmlldyBUb2tlbjo6c3RyaW5nVmlldyhj
b25zdCBMZXhlciYgbGV4ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxleGVyLm1fc3RyaW5nVmll
dy5zdWJzdHJpbmcoY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCksIGNvZGVMb2NhdGlvbi5lbmRP
ZmZzZXQoKSAtIGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwY2U3MWNmNTYyMDM0ZDU3NDdlZDlhZTMzNDA0ZjAwYzFkMTY3Zjg5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJX
SExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLXN0YXRpYyBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biogZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFi
bGVUeXBlKQotewotICAgIGlmICghaXM8QVNUOjpUeXBlUmVmZXJlbmNlPihyZXNvbHZhYmxlVHlw
ZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHR5
cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHJlc29sdmFibGVUeXBl
LnJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoIWlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
Pih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci19Ci0KLWNsYXNzIExpdGVyYWxUeXBlQ2hlY2tlciA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkZsb2F0TGl0ZXJhbFR5cGUmIGZsb2F0TGl0ZXJhbFR5cGUpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBnZXROYXRpdmVUeXBlRGVjbGFyYXRp
b24oZmxvYXRMaXRlcmFsVHlwZSk7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRp
b24pOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLT5jYW5SZXByZXNlbnRG
bG9hdCgpKGZsb2F0TGl0ZXJhbFR5cGUudmFsdWUoKSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmIGludGVnZXJMaXRlcmFsVHlwZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGdldE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbihpbnRlZ2VyTGl0ZXJhbFR5cGUpOwotICAgICAgICBBU1NFUlQobmF0aXZl
VHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+
Y2FuUmVwcmVzZW50SW50ZWdlcigpKGludGVnZXJMaXRlcmFsVHlwZS52YWx1ZSgpKSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8qIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbih1bnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSk7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24p
OwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLT5jYW5SZXByZXNlbnRVbnNp
Z25lZEludGVnZXIoKSh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS52YWx1ZSgpKSk7Ci0gICAg
fQotfTsKLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAotCi12b2lkIGNoZWNrTGl0ZXJhbFR5cGVz
KFByb2dyYW0mIHByb2dyYW0pCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBMaXRlcmFsVHlw
ZUNoZWNrZXIoKS5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJh
bFR5cGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TExpdGVyYWxUeXBlQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNh
YmY4OGE4OTBiMzcwNjNlOGEyMDBhNTBkODFkMmU2NDU3OTBmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUHJvZ3JhbTsKLQotdm9pZCBjaGVja0xpdGVyYWxUeXBlcyhQcm9ncmFtJik7Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwZGE4NGI4ZjQxMjAxYWZlYjYwOGQ0MTQxMDY1
ZGRlMTk0ZDRlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFy
YXRpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1O
YW1lQ29udGV4dDo6TmFtZUNvbnRleHQoTmFtZUNvbnRleHQqIHBhcmVudCkKLSAgICA6IG1fcGFy
ZW50KHBhcmVudCkKLXsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0Ojph
ZGQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgaWYgKGF1dG8g
ZXhpc3RpbmcgPSB0b3BMZXZlbEV4aXN0cyh0eXBlRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0i
LCAqZXhpc3RpbmcpKTsKLSAgICB0eXBlRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50
TmFtZVNwYWNlKTsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3Vy
cmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQodHlw
ZURlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5h
bWVkVHlwZT4sIDE+KCkpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQodHlwZURlZmluaXRpb24pOwotICAgIHJldHVybiB7
IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICBpZiAoYXV0byBl
eGlzdGluZyA9IHRvcExldmVsRXhpc3RzKHN0cnVjdHVyZURlZmluaXRpb24ubmFtZSgpKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9n
cmFtLiIsICpleGlzdGluZykpOwotICAgIHN0cnVjdHVyZURlZmluaXRpb24uc2V0TmFtZVNwYWNl
KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRl
eF0uYWRkKHN0cnVjdHVyZURlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+KCkpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoc3RydWN0dXJlRGVmaW5p
dGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVD
b250ZXh0OjphZGQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5p
dGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9IHRvcExldmVsRXhpc3RzKGVudW1lcmF0
aW9uRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgKmV4aXN0aW5nKSk7Ci0gICAgZW51bWVy
YXRpb25EZWZpbml0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1
dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fdHlwZXNbaW5kZXhdLmFkZChlbnVtZXJhdGlvbkRlZmluaXRpb24u
bmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+
KCkpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5hcHBlbmQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9Owot
fQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1dG8gaW5kZXggPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoYXV0byogdHlw
ZSA9IHNlYXJjaFR5cGVzKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgdHlw
ZS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBmdW5jdGlvbkRlZmluaXRpb24uc2V0TmFtZVNwYWNl
KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX2Z1bmN0aW9uc1tpbmRl
eF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+KCkpOwotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGF1
dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAg
ICBpZiAoYXV0byogdHlwZSA9IHNlYXJjaFR5cGVzKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUg
bmFtZSBpbiBwcm9ncmFtLiIsIHR5cGUtPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fZnVuY3Rpb25zW2luZGV4XS5hZGQobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4sIDE+KCkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9
IHNlYXJjaEZ1bmN0aW9ucyhuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIs
IGZ1bmN0aW9uLT5jb2RlTG9jYXRpb24oKSkpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdHlw
ZXNbaW5kZXhdLmFkZChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+KCkpOwotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIGlmICh2YXJpYWJs
ZURlY2xhcmF0aW9uLm5hbWUoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBp
ZiAoYXV0byogZGVjbGFyYXRpb24gPSBsb2NhbEV4aXN0cyh2YXJpYWJsZURlY2xhcmF0aW9uLm5h
bWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5h
bWUgaW4gcHJvZ3JhbS4iLCBkZWNsYXJhdGlvbi0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fdmFyaWFibGVzLmFkZChTdHJpbmcodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1l
KCkpLCAmdmFyaWFibGVEZWNsYXJhdGlvbik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4geyB9OwotfQotCi1WZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+IE5hbWVDb250ZXh0OjpnZXRUeXBlcyhj
b25zdCBTdHJpbmcmIG5hbWUsIEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2UpCi17Ci0gICAg
Ly8gTmFtZWQgdHlwZXMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbCBuYW1lIGNv
bnRleHQuCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICByZXR1cm4gbV9wYXJlbnQtPmdldFR5
cGVzKG5hbWUsIGZyb21OYW1lc3BhY2UpOwotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiByZXN1bHQ7Ci0KLSAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tTmFtZXNwYWNlKTsKLSAgICBhdXRvIGl0ZXJhdG9y
ID0gbV90eXBlc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV90eXBl
c1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFs
dWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwotICAgIH0KLQotICAgIGlmIChm
cm9tTmFtZXNwYWNlICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAg
ICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJk
TGlicmFyeSk7Ci0gICAgICAgIGl0ZXJhdG9yID0gbV90eXBlc1tpbmRleF0uZmluZChuYW1lKTsK
LSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4gTmFtZUNvbnRleHQ6OmdldEZ1bmN0aW9ucyhjb25zdCBTdHJpbmcmIG5hbWUs
IEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2UpCi17Ci0gICAgLy8gRnVuY3Rpb25zIGNhbiBv
bmx5IGJlIGRlY2xhcmVkIGluIHRoZSBnbG9iYWwgbmFtZSBjb250ZXh0LgotICAgIGlmIChtX3Bh
cmVudCkKLSAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5nZXRGdW5jdGlvbnMobmFtZSwgZnJvbU5h
bWVzcGFjZSk7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24+LCAxPiByZXN1bHQ7Ci0KLSAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmcm9tTmFtZXNwYWNlKTsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9m
dW5jdGlvbnNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1fZnVuY3Rp
b25zW2luZGV4XS5lbmQoKSkgewotICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52
YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KGZyb21OYW1lc3BhY2UgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkgewotICAg
ICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRh
cmRMaWJyYXJ5KTsKLSAgICAgICAgaXRlcmF0b3IgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChu
YW1lKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25zW2luZGV4XS5lbmQoKSkg
ewotICAgICAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLUFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogTmFtZUNvbnRleHQ6
OmdldFZhcmlhYmxlKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV92YXJpYWJsZXMuZmluZChuYW1lKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV92YXJpYWJsZXMu
ZW5kKCkpIHsKLSAgICAgICAgaWYgKG1fcGFyZW50KQotICAgICAgICAgICAgcmV0dXJuIG1fcGFy
ZW50LT5nZXRWYXJpYWJsZShuYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0KLUFTVDo6TmFtZWRUeXBlKiBOYW1lQ29u
dGV4dDo6c2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIEFTU0VSVCghbV9w
YXJlbnQpOwotICAgIGlmIChtX2N1cnJlbnROYW1lU3BhY2UgPT0gQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeSkgewotICAgICAgICBmb3IgKGF1dG8mIHR5cGVzIDogbV90eXBlcykgewot
ICAgICAgICAgICAgYXV0byBpdGVyID0gdHlwZXMuZmluZChuYW1lKTsKLSAgICAgICAgICAgIGlm
IChpdGVyICE9IHR5cGVzLmVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiAmaXRlci0+dmFs
dWVbMF0uZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3Bh
Y2UpOwotICAgIGF1dG8gaXRlciA9IG1fdHlwZXNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYg
KGl0ZXIgIT0gbV90eXBlc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFs
dWVbMF0uZ2V0KCk7Ci0KLSAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5h
bWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICBpdGVyID0gbV90eXBlc1tpbmRleF0uZmlu
ZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkKLSAgICAgICAg
cmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIE5hbWVDb250ZXh0OjpzZWFyY2hGdW5jdGlvbnMo
U3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIEFTU0VSVCghbV9wYXJlbnQpOwotICAgIGlmICht
X2N1cnJlbnROYW1lU3BhY2UgPT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkgewot
ICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9ucyA6IG1fZnVuY3Rpb25zKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBmdW5jdGlvbnMuZmluZChuYW1lKTsKLSAgICAgICAgICAgIGlmIChpdGVy
ICE9IGZ1bmN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVl
WzBdLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNl
KTsKLSAgICBhdXRvIGl0ZXIgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBp
ZiAoaXRlciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAmaXRl
ci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihB
U1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICBpdGVyID0gbV9mdW5jdGlvbnNb
aW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVu
ZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotCi0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8Q29kZUxvY2F0aW9uPiBOYW1lQ29udGV4dDo6
dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIGlmIChhdXRvKiB0eXBl
ID0gc2VhcmNoVHlwZXMobmFtZSkpCi0gICAgICAgIHJldHVybiB0eXBlLT5jb2RlTG9jYXRpb24o
KTsKLSAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBzZWFyY2hGdW5jdGlvbnMobmFtZSkpCi0gICAg
ICAgIHJldHVybiBmdW5jdGlvbi0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLX0KLQotQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6bG9jYWxF
eGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIEFTU0VSVChtX3BhcmVudCk7Ci0gICAg
YXV0byBpdGVyID0gbV92YXJpYWJsZXMuZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3Zh
cmlhYmxlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDdkNTA2YTJjN2QxNGQ0MjAzYmJkNjE1Y2JlNDZl
Y2ExZTI2ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oCisr
KyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgot
I2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYW1lZFR5cGU7Ci1jbGFzcyBG
dW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgVHlwZURlZmluaXRpb247Ci1jbGFzcyBTdHJ1Y3R1
cmVEZWZpbml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3MgRnVuY3Rp
b25EZWZpbml0aW9uOwotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb247Ci0KLX0KLQot
Y2xhc3MgTmFtZUNvbnRleHQgewotcHVibGljOgotICAgIE5hbWVDb250ZXh0KE5hbWVDb250ZXh0
KiBwYXJlbnQgPSBudWxscHRyKTsKLQotICAgIHZvaWQgc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6
Ok5hbWVTcGFjZSBjdXJyZW50TmFtZVNwYWNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3Bh
cmVudCk7Ci0gICAgICAgIG1fY3VycmVudE5hbWVTcGFjZSA9IGN1cnJlbnROYW1lU3BhY2U7Ci0g
ICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OlR5cGVEZWZpbml0aW9u
Jik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhZGQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uJik7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+IGdldFR5cGVzKGNvbnN0IFN0cmluZyYsIEFTVDo6TmFt
ZVNwYWNlIGZyb21OYW1lc3BhY2UpOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IGdldEZ1bmN0aW9ucyhjb25zdCBTdHJpbmcm
LCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKTsKLSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24qIGdldFZhcmlhYmxlKGNvbnN0IFN0cmluZyYpOwotCi1wcml2YXRlOgotICAgIEFTVDo6
TmFtZWRUeXBlKiBzZWFyY2hUeXBlcyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbiogc2VhcmNoRnVuY3Rpb25zKFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0g
ICAgc3RkOjpvcHRpb25hbDxDb2RlTG9jYXRpb24+IHRvcExldmVsRXhpc3RzKFN0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBsb2NhbEV4aXN0cyhTdHJp
bmcmIG5hbWUpIGNvbnN0OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4+IG1fdHlwZXNbQVNUOjpuYW1lU3BhY2VD
b3VudF07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiBtX2Z1bmN0aW9uc1tBU1Q6Om5hbWVTcGFj
ZUNvdW50XTsKLSAgICBIYXNoTWFwPFN0cmluZywgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKj4g
bV92YXJpYWJsZXM7Ci0gICAgTmFtZUNvbnRleHQqIG1fcGFyZW50OwotICAgIEFTVDo6TmFtZVNw
YWNlIG1fY3VycmVudE5hbWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkg
fTsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1l
UmVzb2x2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDBjYTU1OTVkZDY0
ODFjMDFjYWI3Y2VmNTYwNWFhYmFjZGY0M2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZVJlc29sdmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmFtZVJlc29sdmVy
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTERvV2hp
bGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgotI2lu
Y2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNp
bmNsdWRlICJXSExTTFJlcGxhY2VXaXRoLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZlT3Zlcmxv
YWRJbXBsLmgiCi0jaW5jbHVkZSAiV0hMU0xTY29wZWRTZXRBZGRlci5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFdo
aWxlTG9vcC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LU5hbWVSZXNvbHZlcjo6TmFtZVJlc29sdmVyKE5hbWVDb250ZXh0JiBuYW1lQ29udGV4dCkKLSAg
ICA6IG1fbmFtZUNvbnRleHQobmFtZUNvbnRleHQpCi17Ci19Ci0KLU5hbWVSZXNvbHZlcjo6TmFt
ZVJlc29sdmVyKE5hbWVSZXNvbHZlciYgcGFyZW50UmVzb2x2ZXIsIE5hbWVDb250ZXh0JiBuYW1l
Q29udGV4dCkKLSAgICA6IG1fbmFtZUNvbnRleHQobmFtZUNvbnRleHQpCi0gICAgLCBtX3BhcmVu
dE5hbWVSZXNvbHZlcigmcGFyZW50UmVzb2x2ZXIpCi0gICAgLCBtX2N1cnJlbnROYW1lU3BhY2Uo
cGFyZW50UmVzb2x2ZXIubV9jdXJyZW50TmFtZVNwYWNlKQotewotfQotCi1OYW1lUmVzb2x2ZXI6
On5OYW1lUmVzb2x2ZXIoKQotewotICAgIGlmIChoYXNFcnJvcigpICYmIG1fcGFyZW50TmFtZVJl
c29sdmVyKQotICAgICAgICBtX3BhcmVudE5hbWVSZXNvbHZlci0+c2V0RXJyb3IocmVzdWx0KCku
ZXJyb3IoKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVu
Y2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgU2NvcGVkU2V0QWRkZXI8QVNUOjpUeXBlUmVmZXJl
bmNlKj4gYWRkZXIobV90eXBlUmVmZXJlbmNlcywgJnR5cGVSZWZlcmVuY2UpOwotICAgIGlmICgh
YWRkZXIuaXNOZXdFbnRyeSgpKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdXNl
IHJlY3Vyc2l2ZSB0eXBlIGFyZ3VtZW50cy4iLCB0eXBlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlUmVm
ZXJlbmNlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICh0
eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkpIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYxIFNob3VsZG4ndCB3ZSBrbm93IGJ5IG5v
dyB3aGV0aGVyIHRoZSB0eXBlIGhhcyBiZWVuIHJlc29sdmVkIG9yIG5vdD8KLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBjYW5kaWRhdGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyh0eXBl
UmVmZXJlbmNlLm5hbWUoKSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBmb3IgKGF1dG8mIGNh
bmRpZGF0ZSA6IGNhbmRpZGF0ZXMpCi0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbmRpZGF0ZSk7
Ci0gICAgaWYgKGF1dG8gcmVzdWx0ID0gcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwoY2FuZGlkYXRl
cywgdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpKQotICAgICAgICB0eXBlUmVmZXJlbmNl
LnNldFJlc29sdmVkVHlwZSgqcmVzdWx0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkNhbm5vdCByZXNvbHZlIHR5cGUgYXJndW1lbnRzLiIsIHR5cGVSZWZlcmVuY2UuY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBOYW1lUmVz
b2x2ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
Ci17Ci0gICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAg
IE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5ld05hbWVDb250ZXh0KTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgaWYg
KGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6
IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkpCi0gICAgICAgIG5ld05hbWVSZXNvbHZl
ci5jaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVyKTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIuY2hl
Y2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLX0KLQotdm9pZCBO
YW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIE5hbWVDb250ZXh0
IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJl
c29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgbmV3TmFtZVJlc29sdmVyLlZpc2l0b3I6
OnZpc2l0KGJsb2NrKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6SWZTdGF0
ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVu
dC5jb25kaXRpb25hbCgpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7
Ci0gICAgICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0
KTsKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVu
dC5ib2R5KCkpOwotICAgIH0KLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAgTmFtZUNvbnRleHQg
bmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFt
ZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5j
aGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotICAgIH0KLX0KLQot
dm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLSAgICBpZiAo
aGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTmFtZUNvbnRleHQgbmFtZUNvbnRl
eHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRo
aXMsIG5hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0
KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpE
b1doaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIHsKLSAgICAgICAgTmFtZUNvbnRleHQgbmFt
ZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJl
c29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVj
a0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgfQotCi0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2
ZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBOYW1lQ29udGV4dCBuYW1l
Q29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZl
cigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05hbWVSZXNvbHZlci5WaXNpdG9yOjp2aXNp
dChmb3JMb29wKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAoIW1fbmFtZUNvbnRl
eHQuYWRkKHZhcmlhYmxlRGVjbGFyYXRpb24pKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJD
YW5ub3QgZGVjbGFyZSBkdXBsaWNhdGUgdmFyaWFibGVzLiIsIHZhcmlhYmxlRGVjbGFyYXRpb24u
Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBWaXNpdG9yOjp2
aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0
KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIGlmICh2
YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
YXV0byogdmFyaWFibGUgPSBtX25hbWVDb250ZXh0LmdldFZhcmlhYmxlKHZhcmlhYmxlUmVmZXJl
bmNlLm5hbWUoKSkpCi0gICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLnNldFZhcmlhYmxlKCp2YXJp
YWJsZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZmluZCB0
aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uIiwgdmFyaWFibGVSZWZlcmVuY2UuY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZp
c2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICBpZiAoaXM8QVNU
OjpWYXJpYWJsZVJlZmVyZW5jZT4oZG90RXhwcmVzc2lvbi5iYXNlKCkpKSB7Ci0gICAgICAgIGF1
dG8mIHZhcmlhYmxlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4o
ZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBpZiAoIW1fbmFtZUNvbnRleHQuZ2V0VmFy
aWFibGUodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpKSkgewotICAgICAgICAgICAgYXV0byBiYXNl
TmFtZSA9IHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKTsKLSAgICAgICAgICAgIGF1dG8gZW51bWVy
YXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoYmFzZU5hbWUsIG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgICAgICAgICBpZiAoZW51bWVyYXRpb25UeXBlcy5zaXplKCkgPT0gMSkg
ewotICAgICAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBlJiB0eXBlID0gZW51bWVyYXRpb25UeXBl
c1swXTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+
KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
JiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbj4odHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWVtYmVyTmFtZSA9IGRvdEV4
cHJlc3Npb24uZmllbGROYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBtZW1i
ZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24ubWVtYmVyQnlOYW1lKG1lbWJlck5hbWUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA9IEFT
VDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjp3cmFwKGRvdEV4cHJlc3Npb24uY29kZUxvY2F0
aW9uKCksIFdURk1vdmUoYmFzZU5hbWUpLCBXVEZNb3ZlKG1lbWJlck5hbWUpLCBlbnVtZXJhdGlv
bkRlZmluaXRpb24sICptZW1iZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNUOjpyZXBs
YWNlV2l0aDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZG90RXhwcmVzc2lvbiwgV1RG
TW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiTm8gZW51bSBtZW1iZXIgbWF0Y2hlcyB0aGUgdXNlZCBuYW1lLiIsIGRvdEV4
cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIEFT
U0VSVChlbnVtZXJhdGlvblR5cGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBWaXNpdG9yOjp2aXNpdChkb3RFeHByZXNzaW9uKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6
OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwpCi17Ci0gICAgaWYgKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1l
bWJlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGVudW1lcmF0aW9uVHlwZXMgPSBt
X25hbWVDb250ZXh0LmdldFR5cGVzKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5sZWZ0KCksIG1f
Y3VycmVudE5hbWVTcGFjZSk7Ci0gICAgaWYgKGVudW1lcmF0aW9uVHlwZXMuc2l6ZSgpID09IDEp
IHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTkzMzUgVGhpcyBuZWVkcyB0byB3b3JrIHdpdGggdHlwZWRlZidlZCBlbnVtcy4KLSAg
ICAgICAgQVNUOjpOYW1lZFR5cGUmIHR5cGUgPSBlbnVtZXJhdGlvblR5cGVzWzBdOwotICAgICAg
ICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpKSB7Ci0gICAgICAgICAg
ICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93
bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOwotICAgICAgICAgICAgaWYg
KGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5tZW1iZXJCeU5hbWUoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLnJpZ2h0KCkpKSB7Ci0gICAgICAgICAgICAgICAgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLnNldEVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uRGVmaW5pdGlv
biwgKm1lbWJlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIGVudW1l
cmF0aW9uIG1lbWJlciBsaXRlcmFsLiIsIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5jb2RlTG9j
YXRpb24oKSkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIE5hbWVD
b250ZXh0IG5ld05hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIg
bmV3TmFtZVJlc29sdmVyKG5ld05hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIuVmlz
aXRvcjo6dmlzaXQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci19Ci0KLS8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTY3IE1ha2Ugc3VyZSBh
bGwgdGhlIG5hbWVzIGhhdmUgYmVlbiByZXNvbHZlZC4KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSwgTmFtZVJlc29sdmVyJiBuYW1l
UmVzb2x2ZXIpCi17Ci0gICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlw
ZURlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3Bh
Y2UodHlwZURlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2
ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVS
ZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1
bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHJvZ3Jh
bS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJy
ZW50TmFtZVNwYWNlKHN0cnVjdHVyZURlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAg
ICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24p
OwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1
cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpKSB7Ci0gICAg
ICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5k
VmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5o
YXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAg
ICB9Ci0gICAgZm9yIChhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5h
bWVTcGFjZShuYXRpdmVUeXBlRGVjbGFyYXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAg
ICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7
Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVy
biBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYg
cHJvZ3JhbSwgTmFtZVJlc29sdmVyJiBuYW1lUmVzb2x2ZXIpCi17Ci0gICAgZm9yIChhdXRvJiBm
dW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAg
ICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShmdW5jdGlvbkRlZmluaXRpb24u
Z2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZp
c2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJy
b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQot
ICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVu
dE5hbWVTcGFjZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsK
LSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAg
ICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYTRlZGJkNmE3ODdjM2JlMTQ5MTQ2OTBlMmE3ZTgyN2Mw
ODY0NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNp
bmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0j
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwot
Ci1jbGFzcyBOYW1lUmVzb2x2ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgTmFt
ZVJlc29sdmVyKE5hbWVDb250ZXh0Jik7Ci0gICAgTmFtZVJlc29sdmVyKE5hbWVSZXNvbHZlciYs
IE5hbWVDb250ZXh0Jik7Ci0KLSAgICB2aXJ0dWFsIH5OYW1lUmVzb2x2ZXIoKTsKLQotICAgIHZv
aWQgc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9jdXJy
ZW50TmFtZVNwYWNlID0gbmFtZVNwYWNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3Am
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwotCi0gICAg
TmFtZUNvbnRleHQmIG1fbmFtZUNvbnRleHQ7Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGVSZWZlcmVu
Y2UqPiBtX3R5cGVSZWZlcmVuY2VzOwotICAgIE5hbWVSZXNvbHZlciogbV9wYXJlbnROYW1lUmVz
b2x2ZXIgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNl
IHsgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwot
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVUeXBlTmFtZXNJbkZ1bmN0aW9ucyhQcm9ncmFt
JiwgTmFtZVJlc29sdmVyJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkNDcyMTZjMjMyYzllZTBiZGFlNjI4MGM0NzAx
MWRkZjM1NTlmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotI2RlZmluZSBQQVJTRShuYW1lLCBlbGVtZW50LCAuLi4pIFwK
LSAgICBhdXRvIG5hbWUgPSBwYXJzZSMjZWxlbWVudChfX1ZBX0FSR1NfXyk7IFwKLSAgICBpZiAo
IW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7IFwK
LQotI2RlZmluZSBDT05TVU1FX1RZUEUobmFtZSwgdHlwZSkgXAotICAgIGF1dG8gbmFtZSA9IGNv
bnN1bWVUeXBlKFRva2VuOjpUeXBlOjp0eXBlKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsKLQotI2RlZmluZSBQRUVLKG5h
bWUpIFwKLSAgICBhdXRvIG5hbWUgPSBwZWVrKCk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLSNkZWZpbmUgUEVFS19G
VVJUSEVSKG5hbWUpIFwKLSAgICBhdXRvIG5hbWUgPSBwZWVrRnVydGhlcigpOyBcCi0gICAgaWYg
KCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOwot
Ci1hdXRvIFBhcnNlcjo6cGFyc2UoUHJvZ3JhbSYgcHJvZ3JhbSwgU3RyaW5nVmlldyBzdHJpbmdW
aWV3LCBQYXJzaW5nTW9kZSBtb2RlLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpIC0+IEV4cGVj
dGVkPHZvaWQsIEVycm9yPgotewotICAgIG1fbGV4ZXIgPSBMZXhlcihzdHJpbmdWaWV3LCBuYW1l
U3BhY2UpOwotICAgIG1fbW9kZSA9IG1vZGU7Ci0KLSAgICB3aGlsZSAoIW1fbGV4ZXIuaXNGdWxs
eUNvbnN1bWVkKCkpIHsKLSAgICAgICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAg
ICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6SW52
YWxpZDoKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OlNlbWljb2xvbjoKLSAgICAgICAgICAgIG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6VHlwZWRlZjogewotICAg
ICAgICAgICAgYXV0byB0eXBlRGVmaW5pdGlvbiA9IHBhcnNlVHlwZURlZmluaXRpb24oKTsKLSAg
ICAgICAgICAgIGlmICghdHlwZURlZmluaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHR5cGVEZWZpbml0aW9uLmVycm9yKCkpOwotICAgICAgICAgICAgYXV0byBh
cHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCp0eXBlRGVmaW5pdGlvbikpOwot
ICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0cnVjdDogewotICAgICAg
ICAgICAgYXV0byBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gcGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9u
KCk7Ci0gICAgICAgICAgICBpZiAoIXN0cnVjdHVyZURlZmluaXRpb24pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHN0cnVjdHVyZURlZmluaXRpb24uZXJyb3IoKSk7Ci0g
ICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKnN0
cnVjdHVyZURlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpU
eXBlOjpFbnVtOiB7Ci0gICAgICAgICAgICBhdXRvIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IHBh
cnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIWVudW1lcmF0aW9u
RGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZW51bWVy
YXRpb25EZWZpbml0aW9uLmVycm9yKCkpOwotICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQg
PSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCplbnVtZXJhdGlvbkRlZmluaXRpb24pKTsKLSAgICAg
ICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpOYXRpdmU6IHsKLSAgICAgICAgICAg
IGlmIChtX21vZGUgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFpbChtYWtlU3RyaW5nKCInbmF0aXZlJyBjYW4ndCBleGlzdCBvdXRzaWRl
IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiIpKTsKLSAgICAgICAgICAgIGF1dG8gZnVydGhlclRv
a2VuID0gcGVla0Z1cnRoZXIoKTsKLSAgICAgICAgICAgIGlmICghZnVydGhlclRva2VuKQotICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICBpZiAoZnVydGhlclRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpUeXBlZGVmKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuYXRp
dmVUeXBlRGVjbGFyYXRpb24gPSBwYXJzZU5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpOwotICAgICAg
ICAgICAgICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmF0aXZlVHlwZURlY2xhcmF0aW9uLmVycm9yKCkpOwot
ICAgICAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92
ZSgqbmF0aXZlVHlwZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhcHBlbmRS
ZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRS
ZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhdXRvIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gPSBwYXJzZU5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVz
dWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikp
OwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIGF1dG8gZnVu
Y3Rpb25EZWZpbml0aW9uID0gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKLSAgICAgICAgICAg
IGlmICghZnVuY3Rpb25EZWZpbml0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChmdW5jdGlvbkRlZmluaXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBhdXRvIGFw
cGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKmZ1bmN0aW9uRGVmaW5pdGlvbikp
OwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQot
Ci1hdXRvIFBhcnNlcjo6ZmFpbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFRyeVRvUGVlayB0cnlU
b1BlZWspIC0+IFVuZXhwZWN0ZWQ8RXJyb3I+Ci17Ci0gICAgaWYgKHRyeVRvUGVlayA9PSBUcnlU
b1BlZWs6OlllcykgewotICAgICAgICBpZiAoYXV0byBuZXh0VG9rZW4gPSBwZWVrKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobV9sZXhlci5lcnJvclN0cmluZygq
bmV4dFRva2VuLCBtZXNzYWdlKSkpOwotICAgIH0KLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGxleDogIiwgbWVzc2FnZSkpKTsKLX0KLQotYXV0byBQ
YXJzZXI6OnBlZWsoKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tl
biA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmICh0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpJ
bnZhbGlkICYmIHRva2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkVuZE9mRmlsZSkKLSAgICAgICAg
cmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGNvbnN1bWUgdG9rZW4i
X3N0ciwgVHJ5VG9QZWVrOjpObyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwZWVrRnVydGhlcigpIC0+
IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVr
RnVydGhlcigpOwotICAgIGlmICh0b2tlbi50eXBlICE9IFRva2VuOjpUeXBlOjpJbnZhbGlkICYm
IHRva2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkVuZE9mRmlsZSkKLSAgICAgICAgcmV0dXJuIHsg
dG9rZW4gfTsKLSAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGNvbnN1bWUgdHdvIHRva2VucyJfc3Ry
LCBUcnlUb1BlZWs6Ok5vKTsKLX0KLQotdGVtcGxhdGUgPFRva2VuOjpUeXBlIHQsIFRva2VuOjpU
eXBlLi4uIHRzPgotc3RydWN0IFR5cGVzIHsKLSAgICBzdGF0aWMgYm9vbCBpbmNsdWRlcyhUb2tl
bjo6VHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHQgPT0gdHlwZSB8fCBUeXBlczx0
cy4uLj46OmluY2x1ZGVzKHR5cGUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5h
bWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQotICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoVG9rZW46OnR5cGVOYW1lKHQpLCAiLCAiKTsKLSAgICAgICAgVHlwZXM8dHMuLi4+OjphcHBl
bmROYW1lVG8oYnVpbGRlcik7Ci0gICAgfQotfTsKLXRlbXBsYXRlIDxUb2tlbjo6VHlwZSB0Pgot
c3RydWN0IFR5cGVzPHQ+IHsKLSAgICBzdGF0aWMgYm9vbCBpbmNsdWRlcyhUb2tlbjo6VHlwZSB0
eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHQgPT0gdHlwZTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCBhcHBlbmROYW1lVG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKLSAgICB7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSk7Ci0gICAgfQotfTsKLQotCi1i
b29sIFBhcnNlcjo6cGVla1R5cGUoVG9rZW46OlR5cGUgdHlwZSkKLXsKLSAgICBhdXRvIHRva2Vu
ID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgcmV0dXJuIHRva2VuLnR5cGUgPT0gdHlwZTsKLX0KLQot
dGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotYm9vbCBQYXJzZXI6OnBlZWtUeXBlcygp
Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIHJldHVybiBUeXBlczx0
eXBlcy4uLj46OmluY2x1ZGVzKHRva2VuLnR5cGUpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFRva2Vu
PiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlwZSkKLXsKLSAgICBhdXRvIHRva2VuID0g
bV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0
dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4oKSB9OwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLXN0ZDo6b3B0aW9uYWw8VG9r
ZW4+IFBhcnNlcjo6dHJ5VHlwZXMoKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWso
KTsKLSAgICBpZiAoVHlwZXM8dHlwZXMuLi4+OjppbmNsdWRlcyh0b2tlbi50eXBlKSkKLSAgICAg
ICAgcmV0dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4oKSB9OwotICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1lVHlwZShUb2tlbjo6VHlwZSB0eXBlKSAt
PiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIuY29u
c3VtZVRva2VuKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0dXJu
IHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFpbChtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHRva2Vu
IChleHBlY3RlZCAiLCBUb2tlbjo6dHlwZU5hbWUodHlwZSksICIgZ290ICIsIFRva2VuOjp0eXBl
TmFtZSh0b2tlbi50eXBlKSwgIikiKSk7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0
eXBlcz4KLWF1dG8gUGFyc2VyOjpjb25zdW1lVHlwZXMoKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJy
b3I+Ci17Ci0gICAgYXV0byBidWlsZEV4cGVjdGVkU3RyaW5nID0gWyZdKCkgLT4gU3RyaW5nIHsK
LSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgi
WyIpOwotICAgICAgICBUeXBlczx0eXBlcy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIl0iKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKLSAgICB9OwotCi0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7
Ci0gICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSkpCi0gICAgICAg
IHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiVW5leHBlY3Rl
ZCB0b2tlbiAoZXhwZWN0ZWQgb25lIG9mICIsIGJ1aWxkRXhwZWN0ZWRTdHJpbmcoKSwgIiBnb3Qg
IiwgVG9rZW46OnR5cGVOYW1lKHRva2VuLnR5cGUpLCAiKSIpKTsKLX0KLQotc3RhdGljIGludCBk
aWdpdFZhbHVlKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICBpZiAoY2hhcmFjdGVyID49ICcwJyAm
JiBjaGFyYWN0ZXIgPD0gJzknKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyIC0gJzAnOwotICAg
IGlmIChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAnZicpCi0gICAgICAgIHJldHVy
biBjaGFyYWN0ZXIgLSAnYScgKyAxMDsKLSAgICByZXR1cm4gY2hhcmFjdGVyIC0gJ0EnICsgMTA7
Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDxpbnQsIEVycm9yPiBpbnRMaXRlcmFsVG9JbnQoU3RyaW5n
VmlldyB0ZXh0KQotewotICAgIGJvb2wgbmVnYXRlID0gZmFsc2U7Ci0gICAgaWYgKHRleHQuc3Rh
cnRzV2l0aCgiLSJfc3RyKSkgewotICAgICAgICBuZWdhdGUgPSB0cnVlOwotICAgICAgICB0ZXh0
ID0gdGV4dC5zdWJzdHJpbmcoMSk7Ci0gICAgfQotICAgIGludCBiYXNlID0gMTA7Ci0gICAgaWYg
KHRleHQuc3RhcnRzV2l0aCgiMHgiX3N0cikpIHsKLSAgICAgICAgdGV4dCA9IHRleHQuc3Vic3Ry
aW5nKDIpOwotICAgICAgICBiYXNlID0gMTY7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgcmVzdWx0
ID0gMDsKLSAgICBmb3IgKGF1dG8gY29kZVBvaW50IDogdGV4dC5jb2RlUG9pbnRzKCkpIHsKLSAg
ICAgICAgdW5zaWduZWQgZGlnaXQgPSBkaWdpdFZhbHVlKGNvZGVQb2ludCk7Ci0gICAgICAgIGF1
dG8gcHJldmlvdXMgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgKyBk
aWdpdDsKLSAgICAgICAgaWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoImludCBsaXRlcmFsICIsIHRleHQsICIg
aXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgfQotICAgIGlmIChuZWdhdGUpIHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoaW50NjRfdCkgPiBzaXplb2YodW5zaWduZWQpICYmIHNpemVv
ZihpbnQ2NF90KSA+IHNpemVvZihpbnQpLCAiVGhpcyBjb2RlIHdvdWxkIGJlIHdyb25nIG90aGVy
d2lzZSIpOwotICAgICAgICBpbnQ2NF90IGludFJlc3VsdCA9IC1zdGF0aWNfY2FzdDxpbnQ2NF90
PihyZXN1bHQpOwotICAgICAgICBpZiAoaW50UmVzdWx0IDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiaW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBv
dXQgb2YgYm91bmRzIikpKTsKLSAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihpbnRS
ZXN1bHQpIH07Ci0gICAgfQotICAgIGlmIChyZXN1bHQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBv
ZiBib3VuZHMiKSkpOwotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4ocmVzdWx0KSB9Owot
fQotCi1zdGF0aWMgRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPiB1aW50TGl0ZXJhbFRvVWludChT
dHJpbmdWaWV3IHRleHQpCi17Ci0gICAgdW5zaWduZWQgYmFzZSA9IDEwOwotICAgIGlmICh0ZXh0
LnN0YXJ0c1dpdGgoIjB4Il9zdHIpKSB7Ci0gICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygy
KTsKLSAgICAgICAgYmFzZSA9IDE2OwotICAgIH0KLSAgICBBU1NFUlQodGV4dC5lbmRzV2l0aCgi
dSIpKTsKLSAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgdGV4dC5sZW5ndGgoKSAtIDEpOwot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IHRleHQu
Y29kZVBvaW50cygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRpZ2l0ID0gZGlnaXRWYWx1ZShjb2Rl
UG9pbnQpOwotICAgICAgICBhdXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQg
PSByZXN1bHQgKiBiYXNlICsgZGlnaXQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBwcmV2aW91cykK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJ1aW50
IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHsgcmVzdWx0IH07Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDxmbG9hdCwgRXJyb3I+IGZsb2F0
TGl0ZXJhbFRvRmxvYXQoU3RyaW5nVmlldyB0ZXh0KQotewotICAgIHNpemVfdCBwYXJzZWRMZW5n
dGg7Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZURvdWJsZSh0ZXh0LCBwYXJzZWRMZW5ndGgpOwot
ICAgIGlmIChwYXJzZWRMZW5ndGggIT0gdGV4dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBwYXJzZSBmbG9hdCAiLCB0ZXh0
KSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzdWx0KTsKLX0KLQotYXV0byBQ
YXJzZXI6OmNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKSAtPiBFeHBlY3RlZDxWYXJpYW50PGludCwg
dW5zaWduZWQ+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGludGVncmFsTGl0ZXJhbFRva2VuID0gY29u
c3VtZVR5cGVzPFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsLCBUb2tlbjo6VHlwZTo6VWludExpdGVy
YWw+KCk7Ci0gICAgaWYgKCFpbnRlZ3JhbExpdGVyYWxUb2tlbikKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbFRva2VuLmVycm9yKCkpOwotCi0gICAgc3dpdGNo
IChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6Oklu
dExpdGVyYWw6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBpbnRMaXRlcmFsVG9JbnQoaW50ZWdy
YWxMaXRlcmFsVG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAocmVzdWx0
KQotICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQgfX07Ci0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAg
ICAgQVNTRVJUKGludGVncmFsTGl0ZXJhbFRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpVaW50
TGl0ZXJhbCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdWludExpdGVyYWxUb1VpbnQoaW50ZWdy
YWxMaXRlcmFsVG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAocmVzdWx0
KQotICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQgfX07Ci0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJz
ZXI6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpIC0+IEV4cGVjdGVkPHVuc2ln
bmVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIGludGVncmFsTGl0ZXJhbCA9IGNvbnN1bWVJbnRlZ3Jh
bExpdGVyYWwoKTsKLSAgICBpZiAoIWludGVncmFsTGl0ZXJhbCkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbC5lcnJvcigpKTsKLSAgICBhdXRvIHJlc3VsdCA9
IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gewotICAgICAgICBpZiAoeCA8IDApCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgICAgICByZXR1cm4geDsKLSAgICB9LCBbXSh1bnNpZ25lZCB4KSAtPiBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0pLCAqaW50ZWdy
YWxMaXRlcmFsKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gKnJlc3VsdDsKLSAg
ICByZXR1cm4gZmFpbCgiaW50IGxpdGVyYWwgaXMgbmVnYXRpdmUiX3N0cik7Ci19Ci0KLXN0YXRp
YyBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+IHJlY29nbml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdl
cihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpCi17Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAg
ICBpZiAoc3RyaW5nVmlldy5sZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5zaWduZWQgbGl0ZXJhbCAiLCBzdHJpbmdW
aWV3LCAiIGlzIHRvbyBzaG9ydCIpKSk7Ci0gICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IHN0cmlu
Z1ZpZXcuY29kZVBvaW50cygpKSB7Ci0gICAgICAgIGlmIChjb2RlUG9pbnQgPCAnMCcgfHwgY29k
ZVBvaW50ID4gJzknKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1h
a2VTdHJpbmcoIlNpbXBsZSB1bnNpZ25lZCBsaXRlcmFsICIsIHN0cmluZ1ZpZXcsICIgaXNuJ3Qg
b2YgdGhlIGZvcm0gWzAtOV0rIikpKTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsK
LSAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTAgKyAoY29kZVBvaW50IC0gJzAnKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEVycm9yKG1ha2VTdHJpbmcoIlNpbXBsZSB1bnNpZ25lZCBsaXRlcmFsICIsIHN0cmluZ1Zp
ZXcsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNvbnN0YW50RXhwcmVzc2lvbigpIC0+IEV4cGVjdGVkPEFT
VDo6Q29uc3RhbnRFeHByZXNzaW9uLCBFcnJvcj4KLXsKLSAgICBhdXRvIHR5cGUgPSBjb25zdW1l
VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6
VHlwZTo6VWludExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpOdWxsLAotICAgICAgICBUb2tlbjo6VHlwZTo6VHJ1ZSwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkZhbHNlLAotICAgICAgICBUb2tlbjo6VHlwZTo6SWRlbnRpZmll
cj4oKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0eXBl
LmVycm9yKCkpOwotCi0gICAgc3dpdGNoICh0eXBlLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gaW50TGl0ZXJhbFRvSW50
KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICByZXR1
cm4ge3sgQVNUOjpJbnRlZ2VyTGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07Ci0gICAgfQot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8gdmFsdWUg
PSB1aW50TGl0ZXJhbFRvVWludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJv
cigpKTsKLSAgICAgICAgcmV0dXJuIHt7IEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCh7ICp0
eXBlIH0sICp2YWx1ZSkgfX07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZsb2F0TGl0
ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gZmxvYXRMaXRlcmFsVG9GbG9hdCh0eXBlLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHt7IEFT
VDo6RmxvYXRMaXRlcmFsKHsgKnR5cGUgfSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpCb29sZWFuTGl0ZXJhbChX
VEZNb3ZlKCp0eXBlKSwgdHJ1ZSkgfTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxzZToKLSAg
ICAgICAgcmV0dXJuIHsgQVNUOjpCb29sZWFuTGl0ZXJhbChXVEZNb3ZlKCp0eXBlKSwgZmFsc2Up
IH07Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBUb2tlbjo6
VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShmdWxsU3RvcCwgRnVsbFN0
b3ApOwotICAgICAgICBDT05TVU1FX1RZUEUobmV4dCwgSWRlbnRpZmllcik7Ci0gICAgICAgIHJl
dHVybiB7IEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKHsgKnR5cGUsICpuZXh0IH0sIHR5
cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgbmV4dC0+c3RyaW5nVmlldyhtX2xl
eGVyKS50b1N0cmluZygpKSB9OwotICAgIH0KLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZVR5cGVBcmd1bWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50LCBFcnJvcj4KLXsK
LSAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgUEVFS19GVVJUSEVSKGZ1cnRoZXJUb2tlbik7Ci0g
ICAgaWYgKG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllciB8fCBmdXJ0
aGVyVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkZ1bGxTdG9wKSB7Ci0gICAgICAgIFBBUlNF
KGNvbnN0YW50RXhwcmVzc2lvbiwgQ29uc3RhbnRFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJu
IEFTVDo6VHlwZUFyZ3VtZW50KFdURk1vdmUoKmNvbnN0YW50RXhwcmVzc2lvbikpOwotICAgIH0K
LSAgICBDT05TVU1FX1RZUEUocmVzdWx0LCBJZGVudGlmaWVyKTsKLSAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb24oKnJlc3VsdCk7Ci0gICAgcmV0dXJuIEFTVDo6VHlwZUFyZ3VtZW50KEFTVDo6VHlw
ZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCByZXN1bHQtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKSwgQVNUOjpUeXBlQXJndW1lbnRzKCkpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlVHlwZUFyZ3VtZW50cygpIC0+IEV4cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50cywgRXJyb3I+
Ci17Ci0gICAgQVNUOjpUeXBlQXJndW1lbnRzIHR5cGVBcmd1bWVudHM7Ci0gICAgYXV0byBsZXNz
VGhhblNpZ24gPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ24pOwotICAgIGlmICgh
bGVzc1RoYW5TaWduKQotICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50czsKLQotICAgIGF1dG8g
Z3JlYXRlclRoYW5TaWduID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduKTsK
LSAgICBpZiAoZ3JlYXRlclRoYW5TaWduKQotICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50czsK
LQotICAgIFBBUlNFKHR5cGVBcmd1bWVudCwgVHlwZUFyZ3VtZW50KTsKLSAgICB0eXBlQXJndW1l
bnRzLmFwcGVuZChXVEZNb3ZlKCp0eXBlQXJndW1lbnQpKTsKLQotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGF1dG8gZ3JlYXRlclRoYW5TaWduID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6R3Jl
YXRlclRoYW5TaWduKTsKLSAgICAgICAgaWYgKGdyZWF0ZXJUaGFuU2lnbikKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIENPTlNVTUVfVFlQRShjb21tYSwgQ29tbWEpOwotICAgICAgICBQ
QVJTRSh0eXBlQXJndW1lbnQsIFR5cGVBcmd1bWVudCk7Ci0gICAgICAgIHR5cGVBcmd1bWVudHMu
YXBwZW5kKFdURk1vdmUoKnR5cGVBcmd1bWVudCkpOwotICAgIH0KLQotICAgIHJldHVybiB0eXBl
QXJndW1lbnRzOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4QWJicmV2aWF0ZWQo
KSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4QWJicmV2aWF0ZWQsIEVycm9yPgotewotICAgIGF1dG8g
dG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpM
ZWZ0U3F1YXJlQnJhY2tldD4oKTsKLSAgICBpZiAoIXRva2VuKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQodG9rZW4uZXJyb3IoKSk7Ci0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2Vu
OjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICBhdXRvIG51bUVsZW1lbnRzID0g
Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgICAgIGlmICghbnVtRWxl
bWVudHMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJy
b3IoKSk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1
YXJlQnJhY2tldCk7Ci0gICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJh
Y2tldCB9LCAqdG9rZW4sICpudW1FbGVtZW50cyB9fTsKLSAgICB9Ci0gICAgcmV0dXJuIHt7IHsg
KnRva2VuIH0sICp0b2tlbiwgc3RkOjpudWxsb3B0IH19OwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQsIEVycm9yPgotewotICAgIGF1dG8gdG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAg
ICAgIFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tl
dFBhaXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldD4oKTsKLSAgICBp
ZiAoIXRva2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodG9rZW4uZXJyb3IoKSk7
Ci0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkg
ewotICAgICAgICBhdXRvIG51bUVsZW1lbnRzID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxM
aXRlcmFsKCk7Ci0gICAgICAgIGlmICghbnVtRWxlbWVudHMpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJyb3IoKSk7Ci0gICAgICAgIENPTlNVTUVfVFlQ
RShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgIHJldHVy
biB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9w
dCwgKm51bUVsZW1lbnRzIH19OwotICAgIH0KLSAgICBhdXRvIGFkZHJlc3NTcGFjZVRva2VuID0g
Y29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6Q29uc3RhbnQsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpEZXZpY2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cCwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OlRocmVhZD4oKTsKLSAgICBpZiAoIWFkZHJlc3NTcGFjZVRva2Vu
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYWRkcmVzc1NwYWNlVG9rZW4uZXJyb3Io
KSk7Ci0gICAgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlOwotICAgIHN3aXRjaCAoYWRk
cmVzc1NwYWNlVG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpDb25zdGFudDoK
LSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAgICAgIGFkZHJl
c3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICBhZGRyZXNzU3BhY2UgPSBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6VGhyZWFkKTsKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRo
cmVhZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAq
dG9rZW4sIHsgYWRkcmVzc1NwYWNlIH0sIHN0ZDo6bnVsbG9wdCB9fTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlVHlwZSgpIC0+IEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+
Ci17Ci0gICAgYXV0byBhZGRyZXNzU3BhY2VUb2tlbiA9IHRyeVR5cGVzPAotICAgICAgICBUb2tl
bjo6VHlwZTo6Q29uc3RhbnQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEZXZpY2UsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpUaHJlYWRncm91cCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRocmVhZD4o
KTsKLQotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRSh0eXBl
QXJndW1lbnRzLCBUeXBlQXJndW1lbnRzKTsKLQotICAgIGlmIChhZGRyZXNzU3BhY2VUb2tlbikg
ewotICAgICAgICBBU1Q6OkFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2U7Ci0gICAgICAgIHN3aXRj
aCAoYWRkcmVzc1NwYWNlVG9rZW4tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
Q29uc3RhbnQ6Ci0gICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6
Q29uc3RhbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
RGV2aWNlOgotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OkRl
dmljZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpUaHJl
YWRncm91cDoKLSAgICAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpU
aHJlYWRncm91cDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgQVNTRVJUKGFkZHJlc3NTcGFjZVRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpUaHJl
YWQpOwotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVh
ZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gY29uc3RydWN0
VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCA9IFsmXShjb25zdCBUeXBlU3VmZml4QWJicmV2aWF0
ZWQmIHR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYgcHJldmlv
dXMpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb24oKmFkZHJlc3NTcGFjZVRva2VuLCB0eXBlU3VmZml4QWJicmV2aWF0ZWQubG9jYXRp
b24pOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlU3VmZml4QWJicmV2aWF0ZWQudG9rZW4udHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjoKLSAgICAgICAgICAgICAg
ICByZXR1cm4geyBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVhdGUobG9jYXRpb24sIGFkZHJlc3NTcGFj
ZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpT
cXVhcmVCcmFja2V0UGFpcjoKLSAgICAgICAgICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5UmVm
ZXJlbmNlVHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUocHJldmlv
dXMpKSB9OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlw
ZVN1ZmZpeEFiYnJldmlhdGVkLnRva2VuLnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVC
cmFja2V0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5VHlwZTo6Y3JlYXRl
KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgKnR5cGVTdWZmaXhBYmJyZXZpYXRlZC5udW1F
bGVtZW50cykgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgUEFSU0UoZmly
c3RUeXBlU3VmZml4QWJicmV2aWF0ZWQsIFR5cGVTdWZmaXhBYmJyZXZpYXRlZCk7Ci0gICAgICAg
IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiByZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0
ZShXVEZNb3ZlKCphZGRyZXNzU3BhY2VUb2tlbiksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50cykpOwotICAgICAgICBhdXRvIG5leHQg
PSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlhdGVkKCpmaXJzdFR5cGVTdWZmaXhBYmJy
ZXZpYXRlZCwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShuZXh0
KTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIFBFRUsobmV4dFRva2VuKTsK
LSAgICAgICAgICAgIGlmIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlN0YXIKLSAg
ICAgICAgICAgICAgICAmJiBuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlNxdWFyZUJy
YWNrZXRQYWlyCi0gICAgICAgICAgICAgICAgJiYgbmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgUEFSU0UodHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBUeXBlU3Vm
Zml4QWJicmV2aWF0ZWQpOwotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBuZXN0aW5nIGhlcmUg
bWlnaHQgYmUgaW4gdGhlIHdyb25nIG9yZGVyLgotICAgICAgICAgICAgbmV4dCA9IGNvbnN0cnVj
dFR5cGVGcm9tU3VmZml4QWJicmV2aWF0ZWQoKnR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgV1RGTW92
ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUobmV4dCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBhdXRvIGNv
bnN0cnVjdFR5cGVGcm9tU3VmZml4Tm9uQWJicmV2aWF0ZWQgPSBbJl0oY29uc3QgVHlwZVN1ZmZp
eE5vbkFiYnJldmlhdGVkJiB0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiYmIHByZXZpb3VzKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICBD
b2RlTG9jYXRpb24gbG9jYXRpb24oKm5hbWUsIHR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5sb2Nh
dGlvbik7Ci0gICAgICAgIHN3aXRjaCAodHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLnRva2VuLnR5
cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RhcjoKLSAgICAgICAgICAgIHJldHVy
biB7IEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgKnR5cGVTdWZmaXhOb25BYmJy
ZXZpYXRlZC5hZGRyZXNzU3BhY2UsIFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoKLSAgICAgICAgICAgIHJldHVybiB7IEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobG9jYXRpb24sICp0eXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQuYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkgfTsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQudG9rZW4u
dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgcmV0
dXJuIHsgQVNUOjpBcnJheVR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyks
ICp0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQubnVtRWxlbWVudHMpIH07Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiByZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVu
Y2U6OmNyZWF0ZSgqbmFtZSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBX
VEZNb3ZlKCp0eXBlQXJndW1lbnRzKSk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgUEVF
SyhuZXh0VG9rZW4pOwotICAgICAgICBpZiAobmV4dFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBl
OjpTdGFyCi0gICAgICAgICAgICAmJiBuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlNx
dWFyZUJyYWNrZXRQYWlyCi0gICAgICAgICAgICAmJiBuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBQQVJTRSh0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIFR5cGVTdWZmaXhOb25B
YmJyZXZpYXRlZCk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgbmVzdGluZyBoZXJlIG1pZ2h0IGJl
IGluIHRoZSB3cm9uZyBvcmRlci4KLSAgICAgICAgYXV0byBuZXh0ID0gY29uc3RydWN0VHlwZUZy
b21TdWZmaXhOb25BYmJyZXZpYXRlZCgqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBXVEZNb3Zl
KHJlc3VsdCkpOwotICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKG5leHQpOwotICAgIH0KLSAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlRGVmaW5p
dGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6VHlwZURlZmluaXRpb24sIEVycm9yPgotewotICAgIENP
TlNVTUVfVFlQRShvcmlnaW4sIFR5cGVkZWYpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVu
dGlmaWVyKTsKLSAgICBDT05TVU1FX1RZUEUoZXF1YWxzLCBFcXVhbHNTaWduKTsKLSAgICBQQVJT
RSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwot
ICAgIHJldHVybiBBU1Q6OlR5cGVEZWZpbml0aW9uKHsgKm9yaWdpbiwgKnNlbWljb2xvbiB9LCBu
YW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGUpKTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlQnVpbHRJblNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpC
dWlsdEluU2VtYW50aWMsIEVycm9yPgotewotICAgIGF1dG8gb3JpZ2luID0gY29uc3VtZVR5cGVz
PAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZJbnN0YW5jZUlELAotICAgICAgICBUb2tlbjo6VHlw
ZTo6U1ZWZXJ0ZXhJRCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBTaXplLAotICAgICAgICBUb2tl
bjo6VHlwZTo6U1ZQb3NpdGlvbiwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWSXNGcm9udEZhY2Us
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTVlNhbXBsZUluZGV4LAotICAgICAgICBUb2tlbjo6VHlw
ZTo6U1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZUYXJnZXQsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpTVkRlcHRoLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFn
ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlNWR3JvdXBJRCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWR3JvdXBJbmRleCwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRD4oKTsKLSAgICBpZiAoIW9yaWdp
bikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG9yaWdpbi5lcnJvcigpKTsKLQotICAg
IHN3aXRjaCAob3JpZ2luLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZJbnN0YW5j
ZUlEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEKTsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTVlZlcnRleElEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJ
RCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpQU2l6ZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0
dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yzo6VmFyaWFibGU6OlNWUG9zaXRpb24pOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWSXNGcm9u
dEZhY2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwg
QVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklzRnJvbnRGYWNlKTsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdElu
U2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZT
YW1wbGVJbmRleCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZJbm5lckNvdmVyYWdlOgotICAg
ICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlKTsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpTVlRhcmdldDogewotICAgICAgICBhdXRvIHRhcmdldCA9IGNvbnN1bWVOb25OZWdhdGl2
ZUludGVncmFsTGl0ZXJhbCgpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTgwNyBNYWtlIHRoaXMgd29yayB3aXRoIHN0cmluZ3MgbGlrZSAiU1Zf
VGFyZ2V0MCIuCi0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKHRhcmdldC5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNl
bWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFy
Z2V0LCAqdGFyZ2V0KTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZEZXB0aDoKLSAg
ICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVwdGgpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNW
Q292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4g
fSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkNvdmVyYWdlKTsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVkRpc3BhdGNoVGhyZWFkSUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWR3JvdXBJRDoK
LSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAq
b3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4KTsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQob3JpZ2luLT50eXBlID09IFRva2VuOjpUeXBl
OjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMo
eyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cFRocmVh
ZElEKTsKLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVJlc291cmNlU2VtYW50aWMoKSAt
PiBFeHBlY3RlZDxBU1Q6OlJlc291cmNlU2VtYW50aWMsIEVycm9yPgotewotICAgIENPTlNVTUVf
VFlQRShvcmlnaW4sIFJlZ2lzdGVyKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lz
LCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgQ09OU1VNRV9UWVBFKGluZm8sIElkZW50aWZpZXIp
OwotICAgIGF1dG8gaW5mb1N0cmluZ1ZpZXcgPSBpbmZvLT5zdHJpbmdWaWV3KG1fbGV4ZXIpOwot
ICAgIGlmIChpbmZvU3RyaW5nVmlldy5sZW5ndGgoKSA8IDIgfHwgKGluZm9TdHJpbmdWaWV3WzBd
ICE9ICd1JwotICAgICAgICAmJiBpbmZvU3RyaW5nVmlld1swXSAhPSAndCcKLSAgICAgICAgJiYg
aW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ2InCi0gICAgICAgICYmIGluZm9TdHJpbmdWaWV3WzBdICE9
ICdzJykpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKGlu
Zm9TdHJpbmdWaWV3LnN1YnN0cmluZygwLCAxKSwgIiBpcyBub3QgYSBrbm93biByZXNvdXJjZSB0
eXBlICgndScsICd0JywgJ2InLCBvciAncycpIikpKTsKLQotICAgIEFTVDo6UmVzb3VyY2VTZW1h
bnRpYzo6TW9kZSBtb2RlOwotICAgIHN3aXRjaCAoaW5mb1N0cmluZ1ZpZXdbMF0pIHsKLSAgICBj
YXNlICd1JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VW5v
cmRlcmVkQWNjZXNzVmlldzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAndCc6Ci0gICAgICAg
IG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlRleHR1cmU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgJ2InOgotICAgICAgICBtb2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGlj
OjpNb2RlOjpCdWZmZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ3MnOgotICAgICAgICBt
b2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpTYW1wbGVyOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLQotICAgIGF1dG8gaW5kZXggPSByZWNvZ25pemVTaW1wbGVVbnNpZ25lZEludGVnZXIo
aW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5nKDEpKTsKLSAgICBpZiAoIWluZGV4KQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5kZXguZXJyb3IoKSk7Ci0KLSAgICB1bnNpZ25lZCBzcGFj
ZSA9IDA7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBD
T05TVU1FX1RZUEUoc3BhY2VUb2tlbiwgSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8gc3BhY2VU
b2tlblN0cmluZ1ZpZXcgPSBzcGFjZVRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpOwotICAgICAg
ICBTdHJpbmdWaWV3IHByZWZpeCB7ICJzcGFjZSIgfTsKLSAgICAgICAgaWYgKCFzcGFjZVRva2Vu
U3RyaW5nVmlldy5zdGFydHNXaXRoKHByZWZpeCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2Vjb25kIGFyZ3VtZW50IHRvIHJlc291cmNlIHNl
bWFudGljICIsIHNwYWNlVG9rZW5TdHJpbmdWaWV3LCAiIG5lZWRzIGJlIG9mIHRoZSBmb3JtICdz
cGFjZTAnIikpKTsKLSAgICAgICAgaWYgKHNwYWNlVG9rZW5TdHJpbmdWaWV3Lmxlbmd0aCgpIDw9
IHByZWZpeC5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cihtYWtlU3RyaW5nKCJTZWNvbmQgYXJndW1lbnQgdG8gcmVzb3VyY2Ugc2VtYW50aWMgIiwgc3Bh
Y2VUb2tlblN0cmluZ1ZpZXcsICIgbmVlZHMgYmUgb2YgdGhlIGZvcm0gJ3NwYWNlMCciKSkpOwot
ICAgICAgICBhdXRvIHNwYWNlVmFsdWUgPSByZWNvZ25pemVTaW1wbGVVbnNpZ25lZEludGVnZXIo
c3BhY2VUb2tlblN0cmluZ1ZpZXcuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgoKSkpOwotICAgICAg
ICBpZiAoIXNwYWNlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc3Bh
Y2VWYWx1ZS5lcnJvcigpKTsKLSAgICAgICAgc3BhY2UgPSAqc3BhY2VWYWx1ZTsKLSAgICB9Ci0K
LSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0K
LSAgICByZXR1cm4gQVNUOjpSZXNvdXJjZVNlbWFudGljKHsgKm9yaWdpbiwgKnJpZ2h0UGFyZW50
aGVzaXMgfSwgbW9kZSwgKmluZGV4LCBzcGFjZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6U3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2lu
LCBTcGVjaWFsaXplZCk7Ci0gICAgcmV0dXJuIEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKCpvcmlnaW4pOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VTdGFnZUluT3V0U2VtYW50
aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAg
Q09OU1VNRV9UWVBFKG9yaWdpbiwgQXR0cmlidXRlKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBh
cmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgYXV0byBpbmRleCA9IGNvbnN1bWVO
b25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghaW5kZXgpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChpbmRleC5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShy
aWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6OlN0
YWdlSW5PdXRTZW1hbnRpYyh7ICpvcmlnaW4sICpyaWdodFBhcmVudGhlc2lzIH0sICppbmRleCk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8c3RkOjp1bmlx
dWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KLXsKLSAgICBpZiAoIXRyeVR5cGUoVG9rZW46
OlR5cGU6OkNvbG9uKSkKLSAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OwotCi0gICAgUEVFSyh0
b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6
OkF0dHJpYnV0ZTogewotICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7Ci0g
ICAgICAgIFBBUlNFKHJlc3VsdCwgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAg
ICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQp
KSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3RlcjogIHsKLSAgICAgICAg
UEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICBkZWZh
dWx0OiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAg
IHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsK
LSAgICB9Ci0gICAgfQotfQotQVNUOjpRdWFsaWZpZXJzIFBhcnNlcjo6cGFyc2VRdWFsaWZpZXJz
KCkKLXsKLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVhbGlmaWVyczsKLSAgICB3aGlsZSAoYXV0byBu
ZXh0ID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKSkgewotICAgICAgICBhdXRvIG5l
eHRTdHJpbmdWaWV3ID0gbmV4dC0+c3RyaW5nVmlldyhtX2xleGVyKTsKLSAgICAgICAgaWYgKCJu
b2ludGVycG9sYXRpb24iID09IG5leHRTdHJpbmdWaWV3KQotICAgICAgICAgICAgcXVhbGlmaWVy
cy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6Ok5vaW50ZXJwb2xhdGlvbik7Ci0gICAgICAgIGVsc2Ug
aWYgKCJub3BlcnNwZWN0aXZlIiA9PSBuZXh0U3RyaW5nVmlldykKLSAgICAgICAgICAgIHF1YWxp
ZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpOb3BlcnNwZWN0aXZlKTsKLSAgICAgICAgZWxz
ZSBpZiAoInVuaWZvcm0iID09IG5leHRTdHJpbmdWaWV3KQotICAgICAgICAgICAgcXVhbGlmaWVy
cy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6OlVuaWZvcm0pOwotICAgICAgICBlbHNlIGlmICgiY2Vu
dHJvaWQiID09IG5leHRTdHJpbmdWaWV3KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQo
QVNUOjpRdWFsaWZpZXI6OkNlbnRyb2lkKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBB
U1NFUlQoInNhbXBsZSIgPT0gbmV4dFN0cmluZ1ZpZXcpOwotICAgICAgICAgICAgcXVhbGlmaWVy
cy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6OlNhbXBsZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHF1YWxpZmllcnM7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN0cnVjdHVyZUVsZW1l
bnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZUVsZW1lbnQsIEVycm9yPgotewotICAgIFBF
RUsob3JpZ2luKTsKLQotICAgIEFTVDo6UXVhbGlmaWVycyBxdWFsaWZpZXJzID0gcGFyc2VRdWFs
aWZpZXJzKCk7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUobmFt
ZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLSAgICBDT05T
VU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6U3RydWN0
dXJlRWxlbWVudCh7ICpvcmlnaW4sICpzZW1pY29sb24gfSwgV1RGTW92ZShxdWFsaWZpZXJzKSwg
V1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RG
TW92ZSgqc2VtYW50aWMpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3RydWN0dXJlRGVmaW5p
dGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0g
ICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgU3RydWN0KTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwg
SWRlbnRpZmllcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRDdXJseUJyYWNrZXQsIExlZnRDdXJs
eUJyYWNrZXQpOwotCi0gICAgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50cyBzdHJ1Y3R1cmVFbGVtZW50
czsKLSAgICB3aGlsZSAoIXBlZWtUeXBlKFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCkp
IHsKLSAgICAgICAgUEFSU0Uoc3RydWN0dXJlRWxlbWVudCwgU3RydWN0dXJlRWxlbWVudCk7Ci0g
ICAgICAgIHN0cnVjdHVyZUVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpzdHJ1Y3R1cmVFbGVtZW50
KSk7Ci0gICAgfQotCi0gICAgYXV0byByaWdodEN1cmx5QnJhY2tldCA9IG1fbGV4ZXIuY29uc3Vt
ZVRva2VuKCk7Ci0KLSAgICByZXR1cm4gQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKHsgKm9yaWdp
biwgcmlnaHRDdXJseUJyYWNrZXQgfSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmlu
ZygpLCBXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBFbnVtKTsKLSAgICBD
T05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0KLSAgICBhdXRvIHR5cGUgPSAoWyZdKCkg
LT4gRXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4gewotICAgICAgICBpZiAo
dHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29sb24pKSB7Ci0gICAgICAgICAgICBQQVJTRShwYXJzZWRU
eXBlLCBUeXBlKTsKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpwYXJzZWRUeXBlKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4geyBBU1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0ZSgqb3Jp
Z2luLCAiaW50Il9zdHIsIEFTVDo6VHlwZUFyZ3VtZW50cygpKSB9OwotICAgIH0pKCk7Ci0gICAg
aWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsK
LQotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFja2V0LCBMZWZ0Q3VybHlCcmFja2V0KTsK
LQotICAgIGludDY0X3QgbmV4dFZhbHVlID0gMDsKLSAgICBQQVJTRShmaXJzdEVudW1lcmF0aW9u
TWVtYmVyLCBFbnVtZXJhdGlvbk1lbWJlciwgbmV4dFZhbHVlKTsKLSAgICBuZXh0VmFsdWUgPSBm
aXJzdEVudW1lcmF0aW9uTWVtYmVyLT52YWx1ZSgpICsgMTsKLQotICAgIEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uIHJlc3VsdCh7IH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJp
bmcoKSwgV1RGTW92ZSgqdHlwZSkpOwotICAgIGF1dG8gc3VjY2VzcyA9IHJlc3VsdC5hZGQoV1RG
TW92ZSgqZmlyc3RFbnVtZXJhdGlvbk1lbWJlcikpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAg
ICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBhZGQgZW51bWVyYXRpb24gbWVtYmVyIl9zdHIpOwotCi0g
ICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJTRSht
ZW1iZXIsIEVudW1lcmF0aW9uTWVtYmVyLCBuZXh0VmFsdWUpOwotICAgICAgICBuZXh0VmFsdWUg
PSBtZW1iZXItPnZhbHVlKCkgKyAxOwotICAgICAgICBzdWNjZXNzID0gcmVzdWx0LmFkZChXVEZN
b3ZlKCptZW1iZXIpKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJu
IGZhaWwoIkNhbm5vdCBhZGQgZW51bWVyYXRpb24gbWVtYmVyIl9zdHIpOwotICAgIH0KLQotICAg
IENPTlNVTUVfVFlQRShyaWdodEN1cmx5QnJhY2tldCwgUmlnaHRDdXJseUJyYWNrZXQpOwotICAg
IHJlc3VsdC51cGRhdGVDb2RlTG9jYXRpb24oeyAqb3JpZ2luLCAqcmlnaHRDdXJseUJyYWNrZXR9
KTsKLQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZUVudW1lcmF0aW9uTWVtYmVyKGludDY0X3QgZGVmYXVsdFZhbHVlKSAtPiBFeHBlY3RlZDxBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUoaWRlbnRpZmll
ciwgSWRlbnRpZmllcik7Ci0gICAgYXV0byBuYW1lID0gaWRlbnRpZmllci0+c3RyaW5nVmlldyht
X2xleGVyKS50b1N0cmluZygpOwotCi0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkVxdWFs
c1NpZ24pKSB7Ci0gICAgICAgIFBBUlNFKGNvbnN0YW50RXhwcmVzc2lvbiwgQ29uc3RhbnRFeHBy
ZXNzaW9uKTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHZhbHVlOwotICAgICAg
ICBjb25zdGFudEV4cHJlc3Npb24tPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50
ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGludGVn
ZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gdW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oQVNUOjpGbG9hdExp
dGVyYWwmKSB7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJikgewotICAgICAg
ICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSB7Ci0gICAgICAgIH0pKTsK
LQotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yKCJlbnVtIGluaXRpYWxpemF0aW9uIHZhbHVlcyBjYW4gb25seSBiZSBhbiBpbnQgb3Ig
dWludCBjb25zdGFudC4iKSk7Ci0gICAgICAgIHJldHVybiBBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
KCppZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCAqdmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4g
QVNUOjpFbnVtZXJhdGlvbk1lbWJlcigqaWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgZGVmYXVs
dFZhbHVlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIENP
TlNVTUVfVFlQRShvcmlnaW4sIE5hdGl2ZSk7Ci0gICAgQ09OU1VNRV9UWVBFKHBhcnNlZFR5cGVk
ZWYsIFR5cGVkZWYpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQ
QVJTRSh0eXBlQXJndW1lbnRzLCBUeXBlQXJndW1lbnRzKTsKLSAgICBDT05TVU1FX1RZUEUoc2Vt
aWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uKHsgKm9yaWdpbiwgKnNlbWljb2xvbiB9LCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkgLT4gRXhwZWN0ZWQ8QVNUOjpOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4s
IE51bVRocmVhZHMpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJl
bnRoZXNpcyk7Ci0KLSAgICBhdXRvIHdpZHRoID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxM
aXRlcmFsKCk7Ci0gICAgaWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KHdpZHRoLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKGNvbW1hLCBDb21tYSk7Ci0KLSAg
ICBhdXRvIGhlaWdodCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAg
IGlmICghaGVpZ2h0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaGVpZ2h0LmVycm9y
KCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKHNlY29uZENvbW1hLCBDb21tYSk7Ci0KLSAgICBhdXRv
IGRlcHRoID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFk
ZXB0aCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGRlcHRoLmVycm9yKCkpOwotCi0g
ICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotCi0g
ICAgcmV0dXJuIEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKHsgKm9yaWdpbiwgKnJp
Z2h0UGFyZW50aGVzaXMgfSwgKndpZHRoLCAqaGVpZ2h0LCAqZGVwdGgpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VBdHRyaWJ1dGVCbG9jaygpIC0+IEV4cGVjdGVkPEFTVDo6QXR0cmlidXRlQmxv
Y2ssIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShsZWZ0U3F1YXJlQnJhY2tldCwgTGVmdFNx
dWFyZUJyYWNrZXQpOwotCi0gICAgQVNUOjpBdHRyaWJ1dGVCbG9jayByZXN1bHQ7Ci0KLSAgICB3
aGlsZSAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCkpIHsKLSAgICAg
ICAgUEFSU0UobnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLCBOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZSkpOwotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBhcmFtZXRlcigpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgYXV0byBzdGFydE9mZnNldCA9IG1fbGV4ZXIu
cGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVhbGlmaWVycyA9
IHBhcnNlUXVhbGlmaWVycygpOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotCi0gICAgU3RyaW5n
IG5hbWU7Ci0gICAgaWYgKGF1dG8gdG9rZW4gPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlm
aWVyKSkKLSAgICAgICAgbmFtZSA9IHRva2VuLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5n
KCk7Ci0KLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgYXV0byBlbmRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgcmV0dXJuIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbih7IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNw
YWNlKCkgfSwgV1RGTW92ZShxdWFsaWZpZXJzKSwgeyBXVEZNb3ZlKCp0eXBlKSB9LCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIG51bGxwdHIpOwotfQotCi1hdXRvIFBhcnNlcjo6
cGFyc2VQYXJhbWV0ZXJzKCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucywg
RXJyb3I+Ci17Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotCi0g
ICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAg
IGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKSkKLSAgICAgICAgcmV0
dXJuIFdURk1vdmUocGFyYW1ldGVycyk7Ci0KLSAgICBQQVJTRShmaXJzdFBhcmFtZXRlciwgUGFy
YW1ldGVyKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqZmlyc3RQYXJhbWV0ZXIpKSk7Ci0KLSAgICB3aGlsZSAo
dHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKHBhcmFtZXRlciwg
UGFyYW1ldGVyKTsKLSAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKnBhcmFtZXRlcikpKTsKLSAgICB9Ci0KLSAg
ICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAg
ICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRnVu
Y3Rpb25EZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24sIEVy
cm9yPgotewotICAgIFBBUlNFKGZ1bmN0aW9uRGVjbGFyYXRpb24sIEZ1bmN0aW9uRGVjbGFyYXRp
b24pOwotICAgIFBBUlNFKGJsb2NrLCBCbG9jayk7Ci0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uKFdURk1vdmUoKmZ1bmN0aW9uRGVjbGFyYXRpb24pLCBXVEZNb3ZlKCpibG9jaykp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDb21wdXRlRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+
IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhv
cmlnaW4pOwotCi0gICAgUEFSU0UoYXR0cmlidXRlQmxvY2ssIEF0dHJpYnV0ZUJsb2NrKTsKLSAg
ICBDT05TVU1FX1RZUEUoY29tcHV0ZSwgQ29tcHV0ZSk7Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7
Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHBhcmFtZXRl
cnMsIFBhcmFtZXRlcnMpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBh
dXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBib29s
IGlzT3BlcmF0b3IgPSBmYWxzZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
KHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkg
fSwgV1RGTW92ZSgqYXR0cmlidXRlQmxvY2spLCBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRl
LCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBX
VEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21v
ZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VWZXJ0ZXhPckZyYWdtZW50RnVuY3Rpb25EZWNs
YXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17
Ci0gICAgYXV0byBlbnRyeVBvaW50ID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBlOjpWZXJ0ZXgs
IFRva2VuOjpUeXBlOjpGcmFnbWVudD4oKTsKLSAgICBpZiAoIWVudHJ5UG9pbnQpCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChlbnRyeVBvaW50LmVycm9yKCkpOwotICAgIGF1dG8gZW50
cnlQb2ludFR5cGUgPSAoZW50cnlQb2ludC0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VmVydGV4KSA/
IEFTVDo6RW50cnlQb2ludFR5cGU6OlZlcnRleCA6IEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdt
ZW50OwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElk
ZW50aWZpZXIpOwotICAgIFBBUlNFKHBhcmFtZXRlcnMsIFBhcmFtZXRlcnMpOwotICAgIFBBUlNF
KHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVl
aygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBib29sIGlzT3BlcmF0b3IgPSBmYWxzZTsKLSAgICBy
ZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgZW50cnlQb2ludC0+c3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgZW50cnlQb2ludFR5cGUs
IFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdU
Rk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9k
ZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVJlZ3VsYXJGdW5jdGlvbkRlY2xhcmF0aW9uKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVL
KG9yaWdpbik7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLQotICAgIGF1dG8gbmFtZSA9IGNv
bnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6SWRlbnRpZmllciwgVG9rZW46OlR5cGU6Ok9wZXJhdG9y
TmFtZT4oKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChu
YW1lLmVycm9yKCkpOwotICAgIGF1dG8gaXNPcGVyYXRvciA9IG5hbWUtPnR5cGUgPT0gVG9rZW46
OlR5cGU6Ok9wZXJhdG9yTmFtZTsKLQotICAgIFBBUlNFKHBhcmFtZXRlcnMsIFBhcmFtZXRlcnMp
OwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9
IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICByZXR1cm4gQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIu
bmFtZVNwYWNlKCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZN
b3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgT3BlcmF0
b3IpOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIFBBUlNFKHBhcmFtZXRlcnMsIFBhcmFt
ZXRlcnMpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9m
ZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBib29sIGlzT3BlcmF0
b3IgPSB0cnVlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4t
PnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUo
KnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4pOwotICAg
IHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpPcGVyYXRvcjoK
LSAgICAgICAgcmV0dXJuIHBhcnNlT3BlcmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6VmVydGV4OgotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZyYWdtZW50
OgotICAgICAgICByZXR1cm4gcGFyc2VWZXJ0ZXhPckZyYWdtZW50RnVuY3Rpb25EZWNsYXJhdGlv
bigpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0OgotICAgICAgICBy
ZXR1cm4gcGFyc2VDb21wdXRlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBwYXJzZVJlZ3VsYXJGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgfQot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05T
VU1FX1RZUEUobmF0aXZlLCBOYXRpdmUpOwotICAgIFBBUlNFKGZ1bmN0aW9uRGVjbGFyYXRpb24s
IEZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWlj
b2xvbik7Ci0KLSAgICByZXR1cm4gQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1v
dmUoKmZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQmxvY2so
KSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3Jp
Z2luLCBMZWZ0Q3VybHlCcmFja2V0KTsKLSAgICBQQVJTRShyZXN1bHQsIEJsb2NrQm9keSk7Ci0g
ICAgQ09OU1VNRV9UWVBFKHJpZ2h0Q3VybHlCcmFja2V0LCBSaWdodEN1cmx5QnJhY2tldCk7Ci0g
ICAgcmVzdWx0LT51cGRhdGVDb2RlTG9jYXRpb24oeyAqb3JpZ2luLCAqcmlnaHRDdXJseUJyYWNr
ZXQgfSk7Ci0gICAgcmV0dXJuIFdURk1vdmUoKnJlc3VsdCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZUJsb2NrQm9keSgpIC0+IEV4cGVjdGVkPEFTVDo6QmxvY2ssIEVycm9yPgotewotICAgIGF1
dG8gc3RhcnRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgQVNU
OjpTdGF0ZW1lbnRzIHN0YXRlbWVudHM7Ci0gICAgd2hpbGUgKCFwZWVrVHlwZXM8VG9rZW46OlR5
cGU6OlJpZ2h0Q3VybHlCcmFja2V0LCBUb2tlbjo6VHlwZTo6Q2FzZSwgVG9rZW46OlR5cGU6OkRl
ZmF1bHQ+KCkpIHsKLSAgICAgICAgUEFSU0Uoc3RhdGVtZW50LCBTdGF0ZW1lbnQpOwotICAgICAg
ICBzdGF0ZW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpzdGF0ZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBh
dXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICByZXR1
cm4gQVNUOjpCbG9jayh7IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNl
KCkgfSwgV1RGTW92ZShzdGF0ZW1lbnRzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUlmU3Rh
dGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpJZlN0YXRlbWVudCwgRXJyb3I+Ci17Ci0gICAgQ09O
U1VNRV9UWVBFKG9yaWdpbiwgSWYpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMs
IExlZnRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwot
ICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRShib2R5LCBTdGF0ZW1lbnQpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6U3Rh
dGVtZW50PiBlbHNlQm9keShudWxscHRyKTsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6
RWxzZSkpIHsKLSAgICAgICAgUEFSU0UocGFyc2VkRWxzZUJvZHksIFN0YXRlbWVudCk7Ci0gICAg
ICAgIGVsc2VCb2R5ID0gKCpwYXJzZWRFbHNlQm9keSkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAg
fQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwot
Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYXN0QXJndW1lbnRzOwot
ICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmNvbmRpdGlvbmFsKSk7Ci0gICAgYXV0
byBib29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4oVG9rZW4oKm9y
aWdpbiksICJib29sIl9zdHIsIFdURk1vdmUoY2FzdEFyZ3VtZW50cykpOwotICAgIHJldHVybiBB
U1Q6OklmU3RhdGVtZW50KHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4
ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShib29sQ2FzdCksIFdURk1vdmUoKmJvZHkpLCBXVEZN
b3ZlKGVsc2VCb2R5KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCgp
IC0+IEV4cGVjdGVkPEFTVDo6U3dpdGNoU3RhdGVtZW50LCBFcnJvcj4KLXsKLSAgICBDT05TVU1F
X1RZUEUob3JpZ2luLCBTd2l0Y2gpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMs
IExlZnRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UodmFsdWUsIEV4cHJlc3Npb24pOwotICAgIENP
TlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDT05T
VU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBWZWN0
b3I8QVNUOjpTd2l0Y2hDYXNlPiBzd2l0Y2hDYXNlczsKLSAgICBQRUVLKG5leHRUb2tlbik7Ci0g
ICAgd2hpbGUgKG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNr
ZXQpIHsKLSAgICAgICAgUEFSU0Uoc3dpdGNoQ2FzZSwgU3dpdGNoQ2FzZSk7Ci0gICAgICAgIHN3
aXRjaENhc2VzLmFwcGVuZChXVEZNb3ZlKCpzd2l0Y2hDYXNlKSk7Ci0gICAgICAgIFBFRUsobmV4
dFRva2VuSW5Mb29wKTsKLSAgICAgICAgbmV4dFRva2VuID0gbmV4dFRva2VuSW5Mb29wOwotICAg
IH0KLQotICAgIGF1dG8gZW5kVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotCi0gICAg
cmV0dXJuIEFTVDo6U3dpdGNoU3RhdGVtZW50KHsgKm9yaWdpbiwgZW5kVG9rZW4gfSwgV1RGTW92
ZSgqdmFsdWUpLCBXVEZNb3ZlKHN3aXRjaENhc2VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZVN3aXRjaENhc2UoKSAtPiBFeHBlY3RlZDxBU1Q6OlN3aXRjaENhc2UsIEVycm9yPgotewotICAg
IGF1dG8gb3JpZ2luID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBlOjpDYXNlLCBUb2tlbjo6VHlw
ZTo6RGVmYXVsdD4oKTsKLSAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKG9yaWdpbi5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAob3JpZ2luLT50eXBlKSB7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6Q2FzZTogewotICAgICAgICBQQVJTRSh2YWx1ZSwgQ29uc3Rh
bnRFeHByZXNzaW9uKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKGNvbG9uLCBDb2xvbik7Ci0KLSAg
ICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrQm9keSk7Ci0KLSAgICAgICAgcmV0dXJuIEFTVDo6U3dp
dGNoQ2FzZSh7IG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigpfSwg
V1RGTW92ZSgqdmFsdWUpLCBXVEZNb3ZlKCpibG9jaykpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7
Ci0gICAgICAgIEFTU0VSVChvcmlnaW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkRlZmF1bHQpOwot
ICAgICAgICBDT05TVU1FX1RZUEUoY29sb24sIENvbG9uKTsKLQotICAgICAgICBQQVJTRShibG9j
aywgQmxvY2tCb2R5KTsKLQotICAgICAgICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2lu
LT5jb2RlTG9jYXRpb24sICBibG9jay0+Y29kZUxvY2F0aW9uKCl9LCBzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUoKmJsb2NrKSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRm9y
TG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6Rm9yTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9U
WVBFKG9yaWdpbiwgRm9yKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0
UGFyZW50aGVzaXMpOwotCi0gICAgYXV0byBwYXJzZVJlbWFpbmRlciA9IFsmXShVbmlxdWVSZWY8
QVNUOjpTdGF0ZW1lbnQ+JiYgaW5pdGlhbGl6YXRpb24pIC0+IEV4cGVjdGVkPEFTVDo6Rm9yTG9v
cCwgRXJyb3I+IHsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsK
LQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBjb25kaXRpb24obnVs
bHB0cik7Ci0gICAgICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6U2VtaWNvbG9uKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpKQotICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbiA9ICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUoc2Vjb25kU2Vt
aWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFTVDo6RXhwcmVzc2lvbj4gaW5jcmVtZW50KG51bGxwdHIpOwotICAgICAgICBpZiAoIXRyeVR5
cGUoVG9rZW46OlR5cGU6OlJpZ2h0UGFyZW50aGVzaXMpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAgaW5jcmVt
ZW50ID0gKCpleHByZXNzaW9uKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigp
KTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVu
dGhlc2lzKTsKLSAgICAgICAgfQotCi0gICAgICAgIFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0g
ICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihvcmlnaW4tPmNvZGVMb2NhdGlvbiwgKCpib2R5
KS0+Y29kZUxvY2F0aW9uKCkpOwotICAgICAgICByZXR1cm4gQVNUOjpGb3JMb29wKGxvY2F0aW9u
LCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uKSwgV1RGTW92ZShjb25kaXRpb24pLCBXVEZNb3ZlKGlu
Y3JlbWVudCksIFdURk1vdmUoKmJvZHkpKTsKLSAgICB9OwotCi0gICAgYXV0byB2YXJpYWJsZURl
Y2xhcmF0aW9ucyA9IGJhY2t0cmFja2luZ1Njb3BlPEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQsIEVycm9yPj4oWyZdKCkgewotICAgICAgICByZXR1cm4gcGFyc2VW
YXJpYWJsZURlY2xhcmF0aW9ucygpOwotICAgIH0pOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0
aW9ucykgewotICAgICAgICBVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+IGRlY2xhcmF0aW9uU3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpOwotICAgICAgICByZXR1cm4gcGFyc2VS
ZW1haW5kZXIoV1RGTW92ZShkZWNsYXJhdGlvblN0YXRlbWVudCkpOwotICAgIH0KLQotICAgIFBB
UlNFKGVmZmVjdGZ1bEV4cHJlc3Npb24sIEVmZmVjdGZ1bEV4cHJlc3Npb24pOwotCi0gICAgcmV0
dXJuIHBhcnNlUmVtYWluZGVyKFdURk1vdmUoKmVmZmVjdGZ1bEV4cHJlc3Npb24pKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlV2hpbGVMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpXaGlsZUxvb3As
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFdoaWxlKTsKLSAgICBDT05TVU1F
X1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGNvbmRp
dGlvbmFsLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywg
UmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLQotICAgIENv
ZGVMb2NhdGlvbiBsb2NhdGlvbihvcmlnaW4tPmNvZGVMb2NhdGlvbiwgICgqYm9keSktPmNvZGVM
b2NhdGlvbigpKTsKLSAgICByZXR1cm4gQVNUOjpXaGlsZUxvb3AobG9jYXRpb24sIFdURk1vdmUo
KmNvbmRpdGlvbmFsKSwgV1RGTW92ZSgqYm9keSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VE
b1doaWxlTG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6RG9XaGlsZUxvb3AsIEVycm9yPgotewotICAg
IENPTlNVTUVfVFlQRShvcmlnaW4sIERvKTsKLSAgICBQQVJTRShib2R5LCBTdGF0ZW1lbnQpOwot
ICAgIENPTlNVTUVfVFlQRSh3aGlsZUtleXdvcmQsIFdoaWxlKTsKLSAgICBDT05TVU1FX1RZUEUo
bGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGNvbmRpdGlvbmFs
LCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQ
YXJlbnRoZXNpcyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQot
ICAgIHJldHVybiBBU1Q6OkRvV2hpbGVMb29wKHsgKm9yaWdpbiwgKnNlbWljb2xvbn0sIFdURk1v
dmUoKmJvZHkpLCBXVEZNb3ZlKCpjb25kaXRpb25hbCkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VWYXJpYWJsZURlY2xhcmF0aW9uKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYmIHR5cGUpIC0+IEV4
cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmln
aW4pOwotCi0gICAgYXV0byBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7Ci0KLSAgICBD
T05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFu
dGljKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IGluaXRpYWxpemVy
ID0gbnVsbHB0cjsKLSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsK
LSAgICAgICAgUEFSU0UoaW5pdGlhbGl6aW5nRXhwcmVzc2lvbiwgUG9zc2libGVUZXJuYXJ5Q29u
ZGl0aW9uYWwpOwotICAgICAgICBpbml0aWFsaXplciA9IGluaXRpYWxpemluZ0V4cHJlc3Npb24u
dmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9
IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgcmV0dXJuIEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5h
bWVTcGFjZSgpIH0sIFdURk1vdmUocXVhbGlmaWVycyksIHsgV1RGTW92ZSh0eXBlKSB9LCBuYW1l
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnNlbWFudGljKSwgV1RG
TW92ZShpbml0aWFsaXplcikpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9ucygpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQs
IEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwot
Ci0gICAgYXV0byBmaXJzdFZhcmlhYmxlRGVjbGFyYXRpb24gPSBwYXJzZVZhcmlhYmxlRGVjbGFy
YXRpb24odHlwZS0+Y29weVJlZigpKTsKLSAgICBpZiAoIWZpcnN0VmFyaWFibGVEZWNsYXJhdGlv
bikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGZpcnN0VmFyaWFibGVEZWNsYXJhdGlv
bi5lcnJvcigpKTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uPj4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKmZpcnN0VmFyaWFibGVEZWNsYXJhdGlvbikpKTsKLQot
ICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgYXV0byB2
YXJpYWJsZURlY2xhcmF0aW9uID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKHR5cGUtPmNvcHlS
ZWYoKSk7Ci0gICAgICAgIGlmICghdmFyaWFibGVEZWNsYXJhdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh2YXJpYWJsZURlY2xhcmF0aW9uLmVycm9yKCkpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihX
VEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9uKSkpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zm
c2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLSAgICByZXR1cm4gQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCh7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zm
c2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZVN0YXRlbWVudCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRl
bWVudD4sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4pOwotICAgIHN3aXRjaCAodG9rZW4tPnR5
cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0Q3VybHlCcmFja2V0OiB7Ci0gICAgICAg
IFBBUlNFKGJsb2NrLCBCbG9jayk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpCbG9jaz4oV1RGTW92ZSgqYmxvY2spKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpJZjogewotICAgICAgICBQQVJTRShpZlN0YXRlbWVudCwgSWZTdGF0ZW1lbnQpOwotICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6SWZTdGF0ZW1lbnQ+KFdURk1vdmUoKmlmU3Rh
dGVtZW50KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U3dpdGNoOiB7Ci0gICAg
ICAgIFBBUlNFKHN3aXRjaFN0YXRlbWVudCwgU3dpdGNoU3RhdGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oV1RGTW92ZSgqc3dpdGNo
U3RhdGVtZW50KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Rm9yOiB7Ci0gICAg
ICAgIFBBUlNFKGZvckxvb3AsIEZvckxvb3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6Rm9yTG9vcD4oV1RGTW92ZSgqZm9yTG9vcCkpIH07Ci0gICAgfQotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OldoaWxlOiB7Ci0gICAgICAgIFBBUlNFKHdoaWxlTG9vcCwgV2hpbGVMb29w
KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OldoaWxlTG9vcD4oV1RGTW92
ZSgqd2hpbGVMb29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RG86IHsKLSAg
ICAgICAgUEFSU0UoZG9XaGlsZUxvb3AsIERvV2hpbGVMb29wKTsKLSAgICAgICAgcmV0dXJuIHsg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkRvV2hpbGVMb29wPihXVEZNb3ZlKCpkb1doaWxlTG9vcCkpIH07
Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkJyZWFrOiB7Ci0gICAgICAgIGF1dG8gYnJl
YWtUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShz
ZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8gYnJlYWtPYmplY3QgPSBBU1Q6OkJy
ZWFrKFdURk1vdmUoYnJlYWtUb2tlbikpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVm
PEFTVDo6QnJlYWs+KFdURk1vdmUoYnJlYWtPYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpDb250aW51ZTogewotICAgICAgICBhdXRvIGNvbnRpbnVlVG9rZW4gPSBtX2xl
eGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1p
Y29sb24pOwotICAgICAgICBhdXRvIGNvbnRpbnVlT2JqZWN0ID0gQVNUOjpDb250aW51ZShXVEZN
b3ZlKGNvbnRpbnVlVG9rZW4pKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6
OkNvbnRpbnVlPihXVEZNb3ZlKGNvbnRpbnVlT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6RmFsbHRocm91Z2g6IHsKLSAgICAgICAgYXV0byBmYWxsdGhyb3VnaFRva2Vu
ID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xv
biwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byBmYWxsdGhyb3VnaE9iamVjdCA9IEFTVDo6RmFs
bHRocm91Z2goV1RGTW92ZShmYWxsdGhyb3VnaFRva2VuKSk7Ci0gICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpGYWxsdGhyb3VnaD4oV1RGTW92ZShmYWxsdGhyb3VnaE9iamVjdCkp
IH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlJldHVybjogewotICAgICAgICBhdXRv
IHJldHVyblRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgaWYgKGF1dG8g
c2VtaWNvbG9uID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6U2VtaWNvbG9uKSkgewotICAgICAgICAg
ICAgYXV0byByZXR1cm5PYmplY3QgPSBBU1Q6OlJldHVybihXVEZNb3ZlKHJldHVyblRva2VuKSwg
bnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6UmV0dXJu
PihXVEZNb3ZlKHJldHVybk9iamVjdCkpIH07Ci0gICAgICAgIH0KLSAgICAgICAgUEFSU0UoZXhw
cmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShmaW5hbFNlbWljb2xv
biwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byByZXR1cm5PYmplY3QgPSBBU1Q6OlJldHVybihX
VEZNb3ZlKHJldHVyblRva2VuKSwgKCpleHByZXNzaW9uKS5tb3ZlVG9VbmlxdWVQdHIoKSk7Ci0g
ICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpSZXR1cm4+KFdURk1vdmUocmV0dXJu
T2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Q29uc3RhbnQ6Ci0gICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RGV2aWNlOgotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdy
b3VwOgotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZDogewotICAgICAgICBQQVJTRSh2YXJp
YWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNsYXJhdGlvbnMpOwotICAgICAgICBDT05TVU1F
X1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxl
RGVjbGFyYXRpb25zKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6SWRlbnRpZmll
cjogewotICAgICAgICBQRUVLX0ZVUlRIRVIobmV4dFRva2VuKTsKLSAgICAgICAgc3dpdGNoIChu
ZXh0VG9rZW4tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllcjoK
LSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWduOgotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTdGFyOgotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpRdWFsaWZpZXI6IHsK
LSAgICAgICAgICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJpYWJsZURlY2xhcmF0
aW9ucyk7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwot
ICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpIH07Ci0gICAgICAg
IH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIGF1dG8gZWZmZWN0ZnVsRXhwcmVzc2lvbiA9IGJhY2t0cmFja2luZ1Nj
b3BlPEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPj4oWyZdKCkgLT4g
RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+IHsKLSAgICAgICAgICAg
IFBBUlNFKHJlc3VsdCwgRWZmZWN0ZnVsRXhwcmVzc2lvbik7Ci0gICAgICAgICAgICBDT05TVU1F
X1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChlZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKmVmZmVjdGZ1bEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIFBB
UlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJpYWJsZURlY2xhcmF0aW9ucyk7Ci0gICAgQ09O
U1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICByZXR1cm4geyBtYWtlVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxl
RGVjbGFyYXRpb25zKSkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRWZmZWN0ZnVsRXhwcmVz
c2lvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPgotewot
ICAgIFBFRUsob3JpZ2luKTsKLSAgICBpZiAob3JpZ2luLT50eXBlID09IFRva2VuOjpUeXBlOjpT
ZW1pY29sb24pCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCbG9jaz4oKm9y
aWdpbiwgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4+KCkpIH07Ci0KLSAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwotICAgIFBBUlNFKGVm
ZmVjdGZ1bEV4cHJlc3Npb24sIEVmZmVjdGZ1bEFzc2lnbm1lbnQpOwotICAgIGV4cHJlc3Npb25z
LmFwcGVuZChXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNzaW9uKSk7Ci0KLSAgICB3aGlsZSAodHJ5
VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIEVm
ZmVjdGZ1bEFzc2lnbm1lbnQpOwotICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgq
ZXhwcmVzc2lvbikpOwotICAgIH0KLQotICAgIGlmIChleHByZXNzaW9ucy5zaXplKCkgPT0gMSkK
LSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQ+KFdURk1vdmUoZXhwcmVzc2lvbnNbMF0pKSB9OwotICAgIHVuc2lnbmVkIGVuZE9m
ZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFj
ZSgpKTsKLSAgICBhdXRvIGNvbW1hRXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDb21t
YUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSk7Ci0gICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KFdURk1v
dmUoY29tbWFFeHByZXNzaW9uKSkgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRWZmZWN0ZnVs
QXNzaWdubWVudCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBib29sIGlzRWZmZWN0ZnVsID0gZmFsc2U7
Ci0gICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9zc2libGVQcmVmaXgsICZpc0VmZmVjdGZ1bCk7Ci0K
LSAgICBpZiAoIWlzRWZmZWN0ZnVsIHx8IHBlZWtUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6
OkVxdWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAotICAgICAgICBU
b2tlbjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaW1lc0VxdWFs
cywKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAgVG9rZW46OlR5
cGU6Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywKLSAgICAgICAg
VG9rZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yRXF1YWxzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5
cGU6OkxlZnRTaGlmdEVxdWFscwotICAgID4oKSkgewotICAgICAgICByZXR1cm4gY29tcGxldGVB
c3NpZ25tZW50KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXhw
cmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlTGltaXRlZFN1ZmZpeE9wZXJhdG9yKFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IFN1ZmZpeEV4cHJlc3Npb24K
LXsKLSAgICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpG
dWxsU3RvcCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFycm93LAotICAgICAgICBUb2tlbjo6VHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4g
U3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotCi0gICAgc3dpdGNo
ICh0eXBlLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RnVsbFN0b3A6IHsKLSAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIp
OwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhw
cmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBDb2RlTG9jYXRpb24g
bG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7Ci0gICAgICAg
IHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9u
Pihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9s
ZXhlcikudG9TdHJpbmcoKSksIHRydWUpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpB
cnJvdzogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlw
ZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJl
dHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAg
IENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICppZGVudGlm
aWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6
OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpLCBpZGVudGlmaWVyLT5zdHJp
bmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgZGVmYXVsdDog
ewotICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJy
YWNrZXQpOwotICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAg
ICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Np
b24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgaWYgKGF1dG8gcmlnaHRTcXVh
cmVCcmFja2V0ID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCkp
IHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0
aW9uKCksICpyaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4
cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4obG9jYXRpb24sIFdU
Rk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpleHByZXNzaW9uKSksIHRydWUpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxz
ZSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3VmZml4T3BlcmF0b3Io
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gU3VmZml4RXhwcmVzc2lv
bgotewotICAgIGF1dG8gc3VmZml4ID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlw
ZTo6RnVsbFN0b3AsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBcnJvdywKLSAgICAgICAgVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0LAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1c1BsdXMs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c01pbnVzPigpOwotICAgIGlmICghc3VmZml4KQot
ICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2Up
OwotCi0gICAgc3dpdGNoIChzdWZmaXgtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpG
dWxsU3RvcDogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6
VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAg
IHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAg
ICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICppZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxB
U1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgaWRlbnRpZmll
ci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkFycm93OiB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbnN1
bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVy
KQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyks
IGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9j
YXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbiht
YWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIG1ha2VVbmlxdWVSZWY8
QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KFdURk1vdmUoKnN1ZmZpeCksIFdURk1vdmUocHJl
dmlvdXMpKSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1
ZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0OiB7Ci0g
ICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBpZiAo
IWV4cHJlc3Npb24pCi0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3Zl
KHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJyYWNrZXQg
PSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewotICAgICAg
ICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnJp
Z2h0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbiht
YWtlVW5pcXVlUmVmPEFTVDo6SW5kZXhFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2
aW91cyksIFdURk1vdmUoKmV4cHJlc3Npb24pKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICB9
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c1BsdXM6IHsKLSAgICAgICAgQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+
KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5h
cHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihs
b2NhdGlvbiwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAg
ICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVy
ZW5jZSgpKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShyZXN1bHQp
LCB0cnVlKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQoc3VmZml4LT50
eXBlID09IFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxv
Y2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBl
bmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRO
ZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2Nh
dGlvbiwgIm9wZXJhdG9yLS0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAgICAg
ICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5j
ZSgpKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShyZXN1bHQpLCB0
cnVlKTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VFeHByZXNzaW9uKCkg
LT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBB
UlNFKGZpcnN0LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsKLSAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9ICgqZmlyc3QpLT5jb2RlTG9jYXRpb24oKS5zdGFydE9mZnNldCgpOwotICAgIGV4cHJl
c3Npb25zLmFwcGVuZChXVEZNb3ZlKCpmaXJzdCkpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9r
ZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBQb3NzaWJsZVRl
cm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKCpl
eHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgaWYgKGV4cHJlc3Npb25zLnNpemUoKSA9PSAxKQot
ICAgICAgICByZXR1cm4gV1RGTW92ZShleHByZXNzaW9uc1swXSk7Ci0gICAgYXV0byBlbmRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwotICAgIENvZGVMb2NhdGlvbiBsb2Nh
dGlvbihzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpKTsKLSAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q29tbWFFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZShleHByZXNzaW9ucykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVRlcm5hcnlD
b25kaXRpb25hbChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSkgLT4gRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIENPTlNVTUVf
VFlQRShxdWVzdGlvbk1hcmssIFF1ZXN0aW9uTWFyayk7Ci0gICAgUEFSU0UoYm9keUV4cHJlc3Np
b24sIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQRShjb2xvbiwgQ29sb24pOwotICAgIFBB
UlNFKGVsc2VFeHByZXNzaW9uLCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0KLSAgICBD
b2RlTG9jYXRpb24gcHJlZGljYXRlTG9jYXRpb24gPSBwcmVkaWNhdGUtPmNvZGVMb2NhdGlvbigp
OwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FzdEFyZ3VtZW50czsK
LSAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZWRpY2F0ZSkpOwotICAgIGF1dG8g
Ym9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KHByZWRpY2F0ZUxv
Y2F0aW9uLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RBcmd1bWVudHMpKTsKLSAgICBDb2RlTG9j
YXRpb24gbG9jYXRpb24ocHJlZGljYXRlTG9jYXRpb24sICgqZWxzZUV4cHJlc3Npb24pLT5jb2Rl
TG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlRlcm5hcnlFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShib29sQ2FzdCksIFdURk1vdmUoKmJvZHlFeHByZXNz
aW9uKSwgV1RGTW92ZSgqZWxzZUV4cHJlc3Npb24pKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6Y29t
cGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgbGVmdCkgLT4gRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIGF1dG8gYXNz
aWdubWVudE9wZXJhdG9yID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6RXF1
YWxzU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpNaW51c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6
TW9kRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6QW5kRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6
TGVmdFNoaWZ0RXF1YWxzPigpOwotICAgIGlmICghYXNzaWdubWVudE9wZXJhdG9yKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXNzaWdubWVudE9wZXJhdG9yLmVycm9yKCkpOwotCi0g
ICAgUEFSU0UocmlnaHQsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICBDb2RlTG9j
YXRpb24gbG9jYXRpb24gPSB7IGxlZnQtPmNvZGVMb2NhdGlvbigpLCAoKnJpZ2h0KS0+Y29kZUxv
Y2F0aW9uKCkgfTsKLQotICAgIGlmIChhc3NpZ25tZW50T3BlcmF0b3ItPnR5cGUgPT0gVG9rZW46
OlR5cGU6OkVxdWFsc1NpZ24pCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpB
c3NpZ25tZW50RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobGVmdCksIFdURk1vdmUoKnJp
Z2h0KSl9OwotCi0gICAgU3RyaW5nIG5hbWU7Ci0gICAgc3dpdGNoIChhc3NpZ25tZW50T3BlcmF0
b3ItPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzOgotICAgICAgICBu
YW1lID0gIm9wZXJhdG9yKyJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpNaW51c0VxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvci0iX3N0cjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHM6Ci0gICAgICAgIG5h
bWUgPSAib3BlcmF0b3IqIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5
cGU6OkRpdmlkZUVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvci8iX3N0cjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzOgotICAgICAgICBuYW1l
ID0gIm9wZXJhdG9yJSJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpYb3JFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3JeIl9zdHI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkFuZEVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJv
cGVyYXRvciYiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6T3JF
cXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3J8Il9zdHI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAi
b3BlcmF0b3I+PiJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlQoYXNzaWdubWVudE9wZXJhdG9yLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRF
cXVhbHMpOwotICAgICAgICBuYW1lID0gIm9wZXJhdG9yPDwiX3N0cjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobGVmdCkpOwotICAgIFZlY3RvcjxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgIGNhbGxBcmd1
bWVudHMuYXBwZW5kKFdURk1vdmUoKnJpZ2h0KSk7Ci0gICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4
cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwotICAgIHJlc3VsdC0+c2V0UmVz
dWx0RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgIHJldHVy
biB7IFdURk1vdmUocmVzdWx0KSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVRl
cm5hcnlDb25kaXRpb25hbCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4KLXsKLSAgICBQQVJTRShleHByZXNzaW9uLCBQb3NzaWJsZVByZWZpeCk7Ci0KLSAg
ICBpZiAocGVla1R5cGVzPFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tlbjo6
VHlwZTo6UGx1c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEaXZp
ZGVFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpYb3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hp
ZnRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHM+KCkpIHsKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRlQXNzaWdubWVudChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0g
ICAgfQotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVTaGlmdChXVEZNb3ZlKCpl
eHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0
ZVBvc3NpYmxlTXVsdGlwbHkoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhwcmVz
c2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7
Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQb3NzaWJsZUFkZChXVEZNb3ZlKCpleHByZXNz
aW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3Np
YmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAg
aWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lv
bi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJp
bmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9u
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQot
ICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICBpZiAobmV4dFRva2VuLT50eXBlID09IFRva2VuOjpU
eXBlOjpRdWVzdGlvbk1hcmspCi0gICAgICAgIHJldHVybiBjb21wbGV0ZVRlcm5hcnlDb25kaXRp
b25hbChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgcmV0dXJuIGV4cHJlc3Npb247Ci19Ci0K
LWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbigpIC0+IEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShw
YXJzZWRQcmV2aW91cywgUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKTsKLSAgICBy
ZXR1cm4gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqcGFy
c2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRlUG9zc2libGVMb2dpY2Fs
QmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+
IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICB3aGls
ZSAoYXV0byBsb2dpY2FsQmluYXJ5T3BlcmF0aW9uID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2Vu
OjpUeXBlOjpPck9yLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kQW5kLAotICAgICAgICBUb2tl
bjo6VHlwZTo6T3IsCi0gICAgICAgIFRva2VuOjpUeXBlOjpYb3IsCi0gICAgICAgIFRva2VuOjpU
eXBlOjpBbmQKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlUmVs
YXRpb25hbEJpbmFyeU9wZXJhdGlvbik7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihw
cmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAg
ICAgICBzd2l0Y2ggKGxvZ2ljYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6T3JPcjoKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihsb2NhdGlvbiwgQVNUOjpMb2dpY2FsRXhwcmVzc2lv
bjo6VHlwZTo6T3IsIFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QW5kQW5kOgotICAgICAgICAg
ICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGxvY2F0
aW9uLCBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQsIFdURk1vdmUocHJldmlvdXMp
LCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6T3I6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdU
Rk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1v
dmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNh
bGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yfCJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1
bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9r
ZW46OlR5cGU6OlhvcjogewotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQo
V1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RG
TW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3JeIl9zdHIsIFdURk1vdmUoY2FsbEFy
Z3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVs
dDogewotICAgICAgICAgICAgQVNTRVJUKGxvZ2ljYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUgPT0g
VG9rZW46OlR5cGU6OkFuZCk7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVu
ZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChX
VEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvciYiX3N0ciwgV1RGTW92ZShjYWxs
QXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHsgV1RGTW92ZShwcmV2aW91cykgfTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFBy
ZXZpb3VzLCBQb3NzaWJsZVNoaWZ0KTsKLSAgICByZXR1cm4gY29tcGxldGVQb3NzaWJsZVJlbGF0
aW9uYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0
byBQYXJzZXI6OmNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byByZWxhdGlvbmFsQmlu
YXJ5T3BlcmF0aW9uID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZXNzVGhhblNp
Z24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24sCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpMZXNzVGhhbk9yRXF1YWxUbywKLSAgICAgICAgVG9rZW46OlR5cGU6OkdyZWF0ZXJU
aGFuT3JFcXVhbFRvLAotICAgICAgICBUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29uLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6Tm90RXF1YWwKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNF
KG5leHQsIFBvc3NpYmxlU2hpZnQpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJl
dmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAg
ICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLQotICAgICAgICBzd2l0Y2ggKHJl
bGF0aW9uYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6TGVzc1RoYW5TaWduOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcjwiX3N0ciwgV1RGTW92ZShj
YWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ246IHsKLSAgICAgICAgICAgIHByZXZpb3Vz
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9y
PiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvOiB7Ci0g
ICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvcjw9Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6R3Jl
YXRlclRoYW5PckVxdWFsVG86IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPj0iX3N0ciwgV1RGTW92
ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpFcXVhbENvbXBhcmlzb246IHsKLSAgICAgICAgICAgIHByZXZp
b3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yPT0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NFUlQocmVsYXRp
b25hbEJpbmFyeU9wZXJhdGlvbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6Tm90RXF1YWwpOwotICAg
ICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxv
Y2F0aW9uLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAg
ICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9u
Pihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVTaGlmdCgpIC0+IEV4cGVjdGVkPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShwYXJzZWRQcmV2aW91
cywgUG9zc2libGVBZGQpOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlU2hpZnQoV1RGTW92
ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRlUG9zc2libGVT
aGlmdChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8gc2hp
ZnQgPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTaGlmdCwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlJpZ2h0U2hpZnQKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5l
eHQsIFBvc3NpYmxlQWRkKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3Vz
LT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICBjYWxsQXJn
dW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0KLSAgICAgICAgc3dpdGNoIChzaGlmdC0+
dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnQ6IHsKLSAgICAgICAg
ICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlv
biwgIm9wZXJhdG9yPDwiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NF
UlQoc2hpZnQtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnQpOwotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3I+PiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShw
cmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlQWRkKCkgLT4gRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKHBhcnNl
ZFByZXZpb3VzLCBQb3NzaWJsZU11bHRpcGx5KTsKLSAgICByZXR1cm4gY29tcGxldGVQb3NzaWJs
ZUFkZChXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxl
dGVQb3NzaWJsZUFkZChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUg
KGF1dG8gYWRkID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6TWludXMKLSAgICAgICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQs
IFBvc3NpYmxlTXVsdGlwbHkpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlv
dXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxB
cmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLQotICAgICAgICBzd2l0Y2ggKGFkZC0+
dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzOiB7Ci0gICAgICAgICAgICBw
cmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvcisiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NFUlQoYWRk
LT50eXBlID09IFRva2VuOjpUeXBlOjpNaW51cyk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0iX3N0
ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZU11bHRpcGx5KCkgLT4gRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3Vz
LCBQb3NzaWJsZVByZWZpeCk7Ci0gICAgcmV0dXJuIGNvbXBsZXRlUG9zc2libGVNdWx0aXBseShX
VEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3Nz
aWJsZU11bHRpcGx5KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4
cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAo
YXV0byBtdWx0aXBseSA9IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6U3RhciwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZSwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1vZAotICAg
ICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVQcmVmaXgpOwotICAgICAg
ICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQp
LT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZN
b3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5l
eHQpKTsKLQotICAgICAgICBzd2l0Y2ggKG11bHRpcGx5LT50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlN0YXI6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKiJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkRpdmlkZTogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IvIl9zdHIs
IFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgQVNTRVJUKG11bHRpcGx5LT50eXBlID09
IFRva2VuOjpUeXBlOjpNb2QpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IlIl9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaXNFZmZlY3RmdWwpIC0+IEV4cGVjdGVkPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBpZiAoYXV0byBwcmVmaXgg
PSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXNQbHVzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6TWludXNNaW51cywKLSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXMsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpNaW51cywKLSAgICAgICAgVG9rZW46OlR5cGU6OlRpbGRlLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6RXhjbGFtYXRpb25Qb2ludCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFu
ZCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkF0LAotICAgICAgICBUb2tlbjo6VHlwZTo6U3Rhcgot
ICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0LCBQb3NzaWJsZVByZWZpeCk7Ci0gICAgICAg
IENvZGVMb2NhdGlvbiBsb2NhdGlvbigqcHJlZml4LCAoKm5leHQpLT5jb2RlTG9jYXRpb24oKSk7
Ci0KLSAgICAgICAgc3dpdGNoIChwcmVmaXgtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6UGx1c1BsdXM6IHsKLSAgICAgICAgICAgIGlmIChpc0VmZmVjdGZ1bCkKLSAgICAgICAg
ICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdU
Rk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJl
c3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldE5l
d1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0
aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAg
ICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVy
ZW5jZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1pbnVzTWludXM6IHsKLSAgICAgICAgICAg
IGlmIChpc0VmZmVjdGZ1bCkKLSAgICAgICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwot
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAg
ICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7
Ci0gICAgICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Np
b24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB7
IFdURk1vdmUocmVzdWx0KSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
OlBsdXM6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
Km5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhw
cmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpNaW51czogewotICAg
ICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRz
OwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2Nh
dGlvbiwgIm9wZXJhdG9yLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlRpbGRlOiB7Ci0gICAgICAgICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1
cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0
b3J+Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6RXhjbGFtYXRpb25Qb2ludDogewotICAgICAgICAgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYXN0QXJndW1lbnRzOwotICAgICAgICAgICAg
Y2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgYXV0byBi
b29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJi
b29sIl9zdHIsIFdURk1vdmUoY2FzdEFyZ3VtZW50cykpOwotICAgICAgICAgICAgcmV0dXJuIHsg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92
ZShib29sQ2FzdCkpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QW5k
OgotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6Ok1ha2VQb2ludGVyRXhw
cmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2Rl
OjpFc2NhcGVzKSB9OwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpBdDoKLSAgICAgICAgICAg
IHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
Pihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkVzY2Fw
ZXMpIH07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQocHJlZml4LT50eXBl
ID09IFRva2VuOjpUeXBlOjpTdGFyKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVS
ZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSkg
fTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBwYXJzZVBvc3NpYmxlU3VmZml4KGlz
RWZmZWN0ZnVsKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVTdWZmaXgoYm9vbCAq
aXNFZmZlY3RmdWwpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAgICBQRUVLX0ZVUlRIRVIobmV4dFRva2VuKTsKLQot
ICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllciAmJiBuZXh0VG9r
ZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRQYXJlbnRoZXNpcykgewotICAgICAgICBQQVJT
RShleHByZXNzaW9uLCBDYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIGlmIChpc0VmZmVjdGZ1bCkK
LSAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICBQRUVLKHN1ZmZpeFRva2VuKTsKLSAgICAgICAgICAgIGlmIChzdWZmaXhU
b2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6RnVsbFN0b3AgJiYgc3VmZml4VG9rZW4tPnR5cGUg
IT0gVG9rZW46OlR5cGU6OkFycm93ICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBl
OjpMZWZ0U3F1YXJlQnJhY2tldCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gcGFyc2VMaW1pdGVkU3VmZml4T3BlcmF0b3IoV1RGTW92ZSgqZXhwcmVz
c2lvbikpOwotICAgICAgICAgICAgZXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0LnJlc3VsdCk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGV4cHJlc3Npb247Ci0gICAgfQotCi0gICAgaWYg
KHRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMgJiYgaXNFZmZlY3Rm
dWwpCi0gICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0KLSAgICBQQVJTRShleHByZXNzaW9u
LCBUZXJtKTsKLSAgICBib29sIGlzTGFzdFN1ZmZpeFRva2VuRWZmZWN0ZnVsID0gZmFsc2U7Ci0g
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgUEVFSyhzdWZmaXhUb2tlbik7Ci0gICAgICAgIGlm
IChzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6RnVsbFN0b3AKLSAgICAgICAgICAg
ICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpBcnJvdwotICAgICAgICAgICAg
JiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0Ci0g
ICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6UGx1c1BsdXMK
LSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpNaW51c01p
bnVzKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpc0xhc3RTdWZm
aXhUb2tlbkVmZmVjdGZ1bCA9IHN1ZmZpeFRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpQbHVz
UGx1cyB8fCBzdWZmaXhUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TWludXNNaW51czsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVN1ZmZpeE9wZXJhdG9yKFdURk1vdmUoKmV4cHJlc3Np
b24pKTsKLSAgICAgICAgZXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0LnJlc3VsdCk7Ci0gICAg
fQotICAgIGlmIChpc0xhc3RTdWZmaXhUb2tlbkVmZmVjdGZ1bCAmJiBpc0VmZmVjdGZ1bCkKLSAg
ICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICByZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlQ2FsbEV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50
aWZpZXIpOwotICAgIGF1dG8gY2FsbE5hbWUgPSBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRv
U3RyaW5nKCk7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50
aGVzaXMpOwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBhcmd1bWVu
dHM7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0UGFyZW50aGVzaXMpKQotICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KFdURk1vdmUo
Km5hbWUpLCBXVEZNb3ZlKGNhbGxOYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKSB9OwotCi0gICAg
UEFSU0UoZmlyc3RBcmd1bWVudCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgIGFy
Z3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqZmlyc3RBcmd1bWVudCkpOwotICAgIHdoaWxlICh0cnlU
eXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAgICAgUEFSU0UoYXJndW1lbnQsIFBvc3Np
YmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChXVEZNb3Zl
KCphcmd1bWVudCkpOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lz
LCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKm5hbWUsICpy
aWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoY2FsbE5hbWUpLCBXVEZNb3ZlKGFyZ3VtZW50
cykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVRlcm0oKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgYXV0byB0eXBlID0gY29uc3VtZVR5
cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlVpbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6TnVsbCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRydWUsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpGYWxzZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OklkZW50aWZpZXIs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXM+KCk7Ci0gICAgaWYgKCF0eXBl
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsKLQotICAgIHN3
aXRjaCAodHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6IHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IGludExpdGVyYWxUb0ludCh0eXBlLT5zdHJpbmdWaWV3KG1f
bGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxB
U1Q6OkludGVnZXJMaXRlcmFsPigqdHlwZSwgKnZhbHVlKSB9OwotICAgIH0KLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gdWludExpdGVy
YWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPigq
dHlwZSwgKnZhbHVlKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGbG9hdExpdGVy
YWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGZsb2F0TGl0ZXJhbFRvRmxvYXQodHlwZS0+c3Ry
aW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VV
bmlxdWVSZWY8QVNUOjpGbG9hdExpdGVyYWw+KCp0eXBlLCAqdmFsdWUpIH07Ci0gICAgfQotICAg
IGNhc2UgVG9rZW46OlR5cGU6Ok51bGw6Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiJ251bGwnIGlzIGEgcmVzZXJ2ZWQga2V5d29yZC4iLCB0eXBlLT5jb2RlTG9jYXRpb24p
KTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlUmVmPEFTVDo6Qm9vbGVhbkxpdGVyYWw+KCp0eXBlLCB0cnVlKSB9OwotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Qm9v
bGVhbkxpdGVyYWw+KCp0eXBlLCBmYWxzZSkgfTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJZGVu
dGlmaWVyOiB7Ci0gICAgICAgIGF1dG8gbmFtZSA9IHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlPigqdHlwZSwgV1RGTW92ZShuYW1lKSkgfTsKLSAgICB9Ci0gICAgZGVmYXVsdDog
ewotICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFBhcmVudGhl
c2lzKTsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAgICAgIENP
TlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgICAg
ICByZXR1cm4geyBXVEZNb3ZlKCpleHByZXNzaW9uKSB9OwotICAgIH0KLSAgICB9Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
NGVlYTMyNmRiNDc0NzdlNmU5ZTMzNjk2MzM3YjZlNjVkMzE3NzYyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xMZXhlci5oIgotI2luY2x1ZGUgIldITFNMUGFyc2luZ01vZGUuaCIKLSNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1j
bGFzcyBQYXJzZXIgewotcHVibGljOgotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBwYXJzZShQ
cm9ncmFtJiwgU3RyaW5nVmlldywgUGFyc2luZ01vZGUsIEFTVDo6TmFtZVNwYWNlKTsKLQotcHJp
dmF0ZToKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRoaXMKLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzU3Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBiYWNrdHJhY2tpbmdTY29wZShzdGQ6OmZ1bmN0aW9uPFQoKT4gY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBhdXRvIHN0YXRlID0gbV9sZXhlci5zdGF0ZSgpOwotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGNhbGxiYWNrKCk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICBtX2xleGVyLnNldFN0YXRlKFdURk1vdmUoc3Rh
dGUpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIFRy
eVRvUGVlayB7Ci0gICAgICAgIFllcywKLSAgICAgICAgTm8KLSAgICB9OwotICAgIFVuZXhwZWN0
ZWQ8RXJyb3I+IGZhaWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBUcnlUb1BlZWsgPSBUcnlUb1Bl
ZWs6Olllcyk7Ci0gICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBwZWVrKCk7Ci0gICAgRXhwZWN0
ZWQ8VG9rZW4sIEVycm9yPiBwZWVrRnVydGhlcigpOwotICAgIGJvb2wgcGVla1R5cGUoVG9rZW46
OlR5cGUpOwotICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLSAgICBib29sIHBl
ZWtUeXBlcygpOwotICAgIHN0ZDo6b3B0aW9uYWw8VG9rZW4+IHRyeVR5cGUoVG9rZW46OlR5cGUp
OwotICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLSAgICBzdGQ6Om9wdGlvbmFs
PFRva2VuPiB0cnlUeXBlcygpOwotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJvcj4gY29uc3VtZVR5
cGUoVG9rZW46OlR5cGUpOwotICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLSAg
ICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IGNvbnN1bWVUeXBlcygpOwotCi0gICAgRXhwZWN0ZWQ8
VmFyaWFudDxpbnQsIHVuc2lnbmVkPiwgRXJyb3I+IGNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKTsK
LSAgICBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFs
TGl0ZXJhbCgpOwotICAgIEV4cGVjdGVkPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uLCBFcnJvcj4g
cGFyc2VDb25zdGFudEV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVu
dCwgRXJyb3I+IHBhcnNlVHlwZUFyZ3VtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpUeXBlQXJn
dW1lbnRzLCBFcnJvcj4gcGFyc2VUeXBlQXJndW1lbnRzKCk7Ci0gICAgc3RydWN0IFR5cGVTdWZm
aXhBYmJyZXZpYXRlZCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbjsKLSAgICAgICAg
VG9rZW4gdG9rZW47Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRz
OwotICAgIH07Ci0gICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnJvcj4gcGFy
c2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKTsKLSAgICBzdHJ1Y3QgVHlwZVN1ZmZpeE5vbkFiYnJl
dmlhdGVkIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uOwotICAgICAgICBUb2tlbiB0
b2tlbjsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxBU1Q6OkFkZHJlc3NTcGFjZT4gYWRkcmVzc1Nw
YWNlOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBudW1FbGVtZW50czsKLSAgICB9
OwotICAgIEV4cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCwgRXJyb3I+IHBhcnNlVHlw
ZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCk7Ci0gICAgRXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5
cGU+LCBFcnJvcj4gcGFyc2VBZGRyZXNzU3BhY2VUeXBlKCk7Ci0gICAgRXhwZWN0ZWQ8UmVmPEFT
VDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4gcGFyc2VOb25BZGRyZXNzU3BhY2VUeXBlKCk7Ci0gICAg
RXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4gcGFyc2VUeXBlKCk7Ci0gICAg
RXhwZWN0ZWQ8QVNUOjpUeXBlRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlVHlwZURlZmluaXRpb24o
KTsKLSAgICBFeHBlY3RlZDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYywgRXJyb3I+IHBhcnNlQnVpbHRJ
blNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpSZXNvdXJjZVNlbWFudGljLCBFcnJvcj4g
cGFyc2VSZXNvdXJjZVNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMsIEVycm9yPiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljLCBFcnJvcj4gcGFy
c2VTdGFnZUluT3V0U2VtYW50aWMoKTsKLSAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNU
OjpTZW1hbnRpYz4sIEVycm9yPiBwYXJzZVNlbWFudGljKCk7Ci0gICAgQVNUOjpRdWFsaWZpZXJz
IHBhcnNlUXVhbGlmaWVycygpOwotICAgIEV4cGVjdGVkPEFTVDo6U3RydWN0dXJlRWxlbWVudCwg
RXJyb3I+IHBhcnNlU3RydWN0dXJlRWxlbWVudCgpOwotICAgIEV4cGVjdGVkPEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlU3RydWN0dXJlRGVmaW5pdGlvbigpOwotICAgIEV4
cGVjdGVkPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VFbnVtZXJhdGlv
bkRlZmluaXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyLCBFcnJv
cj4gcGFyc2VFbnVtZXJhdGlvbk1lbWJlcihpbnQ2NF90IGRlZmF1bHRWYWx1ZSk7Ci0gICAgRXhw
ZWN0ZWQ8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZU5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmli
dXRlLCBFcnJvcj4gcGFyc2VOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoKTsKLSAgICBFeHBl
Y3RlZDxBU1Q6OkF0dHJpYnV0ZUJsb2NrLCBFcnJvcj4gcGFyc2VBdHRyaWJ1dGVCbG9jaygpOwot
ICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlUGFyYW1l
dGVyKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucywgRXJyb3I+IHBh
cnNlUGFyYW1ldGVycygpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwg
RXJyb3I+IHBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVZlcnRleE9yRnJhZ21lbnRGdW5j
dGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
LCBFcnJvcj4gcGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVk
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlT3BlcmF0b3JGdW5jdGlvbkRl
Y2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJv
cj4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24sIEVycm9yPiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbigpOwotICAgIEV4cGVj
dGVkPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbigpOwotCi0gICAgRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+IHBh
cnNlQmxvY2soKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4gcGFyc2VCbG9ja0Jv
ZHkoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OklmU3RhdGVtZW50LCBFcnJvcj4gcGFyc2VJZlN0YXRl
bWVudCgpOwotICAgIEV4cGVjdGVkPEFTVDo6U3dpdGNoU3RhdGVtZW50LCBFcnJvcj4gcGFyc2VT
d2l0Y2hTdGF0ZW1lbnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlN3aXRjaENhc2UsIEVycm9yPiBw
YXJzZVN3aXRjaENhc2UoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZvckxvb3AsIEVycm9yPiBwYXJz
ZUZvckxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OldoaWxlTG9vcCwgRXJyb3I+IHBhcnNlV2hp
bGVMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpEb1doaWxlTG9vcCwgRXJyb3I+IHBhcnNlRG9X
aGlsZUxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24sIEVycm9y
PiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYpOwotICAg
IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIEVycm9yPiBwYXJz
ZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3Rh
dGVtZW50PiwgRXJyb3I+IHBhcnNlU3RhdGVtZW50KCk7Ci0KLSAgICBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4gcGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCk7Ci0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZUVmZmVj
dGZ1bEFzc2lnbm1lbnQoKTsKLSAgICBzdHJ1Y3QgU3VmZml4RXhwcmVzc2lvbiB7Ci0gICAgICAg
IFN1ZmZpeEV4cHJlc3Npb24oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiByZXN1bHQsIGJv
b2wgc3VjY2VzcykKLSAgICAgICAgICAgIDogcmVzdWx0KFdURk1vdmUocmVzdWx0KSkKLSAgICAg
ICAgICAgICwgc3VjY2VzcyhzdWNjZXNzKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiByZXN1bHQ7Ci0gICAgICAgIGJvb2wgc3VjY2Vz
czsKLSAgICAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3M7IH0KLSAg
ICB9OwotICAgIFN1ZmZpeEV4cHJlc3Npb24gcGFyc2VMaW1pdGVkU3VmZml4T3BlcmF0b3IoVW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJik7Ci0gICAgU3VmZml4RXhwcmVzc2lvbiBwYXJzZVN1
ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYpOwotCi0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZUV4cHJlc3Npb24oKTsK
LSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9z
c2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+JiYgcHJlZGljYXRlKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlQXNzaWdubWVudChVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiYmIGxlZnQpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oKTsKLSAgICBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2li
bGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJl
dmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4g
cGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2libGVSZWxhdGlv
bmFsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMp
OwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQ
b3NzaWJsZVNoaWZ0KCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPiBjb21wbGV0ZVBvc3NpYmxlU2hpZnQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4m
JiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPiBwYXJzZVBvc3NpYmxlQWRkKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhw
cmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxlQWRkKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZU11bHRpcGx5KCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoVW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmlz
RWZmZWN0ZnVsID0gbnVsbHB0cik7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlU3VmZml4KGJvb2wgKmlzRWZmZWN0ZnVsID0gbnVs
bHB0cik7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBw
YXJzZUNhbGxFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4sIEVycm9yPiBwYXJzZVRlcm0oKTsKLQotICAgIExleGVyIG1fbGV4ZXI7Ci0gICAgUGFy
c2luZ01vZGUgbV9tb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9k
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGYwNzM3NmNmOGQ0MGVjN2JhOGMw
Y2EzNzA3MjM0MGQ0NjIwMWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2lu
Z01vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1lbnVtIGNsYXNzIFBhcnNpbmdNb2RlIDogdWlu
dDhfdCB7Ci0gICAgU3RhbmRhcmRMaWJyYXJ5LAotICAgIFVzZXIKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxMjcwNTk4ODBkNTNkZWNhOGI2NDI0ZmUyNjA1NWZlYTBjZWVmYjJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWVudW0gY2xhc3MgVmVydGV4
Rm9ybWF0IDogdWludDhfdCB7Ci0gICAgRmxvYXRSMzJHMzJCMzJBMzIsCi0gICAgRmxvYXRSMzJH
MzJCMzIsCi0gICAgRmxvYXRSMzJHMzIsCi0gICAgRmxvYXRSMzIKLX07Ci0KLXN0cnVjdCBWZXJ0
ZXhBdHRyaWJ1dGUgewotICAgIFZlcnRleEZvcm1hdCB2ZXJ0ZXhGb3JtYXQ7Ci0gICAgdW5zaWdu
ZWQgc2hhZGVyTG9jYXRpb247Ci0gICAgdW5zaWduZWQgbWV0YWxMb2NhdGlvbjsKLX07Ci0KLXVz
aW5nIFZlcnRleEF0dHJpYnV0ZXMgPSBWZWN0b3I8VmVydGV4QXR0cmlidXRlPjsKLQotLy8gRklY
TUU6IEFkZCBiYWNrIDwgMzIgYml0IHRleHR1cmUgdmFsdWVzIGFuZCBmaWd1cmUgb3V0IGhvdyB0
byBib3ggdGhlbSBpbiB3aWRlciB0eXBlcyB3aGVuIHdlIGxvYWQgZnJvbSB0aGVtLgotLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDMxNQotCi1lbnVtIGNsYXNz
IFRleHR1cmVGb3JtYXQgewotICAgIFI4VW5vcm0sCi0gICAgUjhVbm9ybVNyZ2IsCi0gICAgUjhT
bm9ybSwKLSAgICBSMTZVbm9ybSwKLSAgICBSMTZTbm9ybSwKLSAgICBSMTZGbG9hdCwKLSAgICBS
RzhVbm9ybSwKLSAgICBSRzhVbm9ybVNyZ2IsCi0gICAgUkc4U25vcm0sCi0gICAgQjVHNlI1VW5v
cm0sCi0gICAgUjMyVWludCwKLSAgICBSMzJTaW50LAotICAgIFIzMkZsb2F0LAotICAgIFJHMTZV
bm9ybSwKLSAgICBSRzE2U25vcm0sCi0gICAgUkcxNkZsb2F0LAotICAgIFJHQkE4VW5vcm0sCi0g
ICAgUkdCQThVbm9ybVNyZ2IsCi0gICAgUkdCQThTbm9ybSwKLSAgICBCR1JBOFVub3JtLAotICAg
IEJHUkE4VW5vcm1TcmdiLAotICAgIFJHQjEwQTJVbm9ybSwKLSAgICBSRzExQjEwRmxvYXQsCi0g
ICAgUkczMlVpbnQsCi0gICAgUkczMlNpbnQsCi0gICAgUkczMkZsb2F0LAotICAgIFJHQkExNlVu
b3JtLAotICAgIFJHQkExNlNub3JtLAotICAgIFJHQkExNkZsb2F0LAotICAgIFJHQkEzMlVpbnQs
Ci0gICAgUkdCQTMyU2ludCwKLSAgICBSR0JBMzJGbG9hdAotfTsKLQotc3RydWN0IEF0dGFjaG1l
bnREZXNjcmlwdG9yIHsKLSAgICBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQ7Ci0gICAgdW5z
aWduZWQgbmFtZTsKLX07Ci0KLXN0cnVjdCBBdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvciB7Ci0g
ICAgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBhdHRhY2htZW50RGVzY3JpcHRvcnM7Ci0g
ICAgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3I7Ci19OwotCi1lbnVtIGNsYXNzIFNoYWRlclN0YWdlIDogdWludDhfdCB7
Ci0gICAgTm9uZSA9IDAsCi0gICAgVmVydGV4ID0gMSA8PCAwLAotICAgIEZyYWdtZW50ID0gMSA8
PCAxLAotICAgIENvbXB1dGUgPSAxIDw8IDIKLX07Ci0KLXN0cnVjdCBVbmlmb3JtQnVmZmVyQmlu
ZGluZyB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoTmFtZTsKLX07Ci0KLXN0cnVjdCBTYW1wbGVyQmlu
ZGluZyB7Ci19OwotCi1zdHJ1Y3QgVGV4dHVyZUJpbmRpbmcgewotfTsKLQotc3RydWN0IFN0b3Jh
Z2VCdWZmZXJCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBsZW5ndGhOYW1lOwotfTsKLQotLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjggQWRkIHRo
ZSBkeW5hbWljIHR5cGVzCi0KLXN0cnVjdCBCaW5kaW5nIHsKLSAgICB1c2luZyBCaW5kaW5nRGV0
YWlscyA9IFZhcmlhbnQ8VW5pZm9ybUJ1ZmZlckJpbmRpbmcsIFNhbXBsZXJCaW5kaW5nLCBUZXh0
dXJlQmluZGluZywgU3RvcmFnZUJ1ZmZlckJpbmRpbmc+OwotICAgIE9wdGlvblNldDxTaGFkZXJT
dGFnZT4gdmlzaWJpbGl0eTsKLSAgICBCaW5kaW5nRGV0YWlscyBiaW5kaW5nOwotICAgIHVuc2ln
bmVkIGludGVybmFsTmFtZTsKLSAgICB1bnNpZ25lZCBleHRlcm5hbE5hbWU7Ci19OwotCi1zdHJ1
Y3QgQmluZEdyb3VwIHsKLSAgICBWZWN0b3I8QmluZGluZz4gYmluZGluZ3M7Ci0gICAgdW5zaWdu
ZWQgbmFtZTsKLX07Ci0KLXVzaW5nIExheW91dCA9IFZlY3RvcjxCaW5kR3JvdXA+OwotCi1zdHJ1
Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsKLSAgICBWZXJ0ZXhBdHRyaWJ1dGVzIHZlcnRl
eEF0dHJpYnV0ZXM7Ci0gICAgQXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IgYXR0YWNobWVudHNT
dGF0ZURlc2NyaXB0b3I7Ci0gICAgTGF5b3V0IGxheW91dDsKLSAgICBTdHJpbmcgdmVydGV4RW50
cnlQb2ludE5hbWU7Ci0gICAgU3RyaW5nIGZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotCi1z
dHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7Ci0gICAgTGF5b3V0IGxheW91dDsKLSAg
ICBTdHJpbmcgZW50cnlQb2ludE5hbWU7Ci19OwotCi11c2luZyBQaXBlbGluZURlc2NyaXB0b3Ig
PSBWYXJpYW50PFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcj47Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjZDJjNWNhYzQzYzk1OWEzZTcxOGQwYTBiNDhlYmMxYzRlNGI4MzU4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwzMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXSExTTFByZXBhcmUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQVNURHVtcGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja0R1cGxpY2F0
ZUZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgotI2lu
Y2x1ZGUgIldITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oIgotI2luY2x1ZGUgIldITFNMQ2hl
Y2tlci5oIgotI2luY2x1ZGUgIldITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCIKLSNpbmNsdWRlICJX
SExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVJlc29sdmVyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNlci5oIgot
I2luY2x1ZGUgIldITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oIgotI2luY2x1ZGUgIldI
TFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlSZXNvbHZlci5oIgotI2luY2x1
ZGUgIldITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIgotI2lu
Y2x1ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJzaXZl
VHlwZUNoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotI2luY2x1
ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTFN5bnRoZXNpemVDb25zdHJ1
Y3RvcnMuaCIKLSNpbmNsdWRlICJXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5o
IgotI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RydWN0IFNoYWRlck1vZHVsZSB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0KLSAgICBTaGFkZXJNb2R1bGUoY29uc3QgU3Ry
aW5nJiB3aGxzbFNvdXJjZSkKLSAgICAgICAgOiB3aGxzbFNvdXJjZSh3aGxzbFNvdXJjZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgU3RyaW5nIHdobHNsU291cmNlOwotfTsKLQotfQotCi19Ci0KLW5h
bWVzcGFjZSBzdGQgewotCi12b2lkIGRlZmF1bHRfZGVsZXRlPFdlYkNvcmU6OldITFNMOjpTaGFk
ZXJNb2R1bGU+OjpvcGVyYXRvcigpKFdlYkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGUqIHNoYWRl
ck1vZHVsZSkgY29uc3QKLXsKLSAgICBkZWxldGUgc2hhZGVyTW9kdWxlOwotfQotCi19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIGNvbnN0ZXhw
ciBib29sIGR1bXBBU1RCZWZvcmVFYWNoUGFzcyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBi
b29sIGR1bXBBU1RBZnRlclBhcnNpbmcgPSBmYWxzZTsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBk
dW1wQVNUQXRFbmQgPSBmYWxzZTsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBhbHdheXNEdW1wUGFz
c0ZhaWx1cmVzID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcFBhc3NGYWlsdXJl
ID0gZHVtcEFTVEJlZm9yZUVhY2hQYXNzIHx8IGR1bXBBU1RBZnRlclBhcnNpbmcgfHwgZHVtcEFT
VEF0RW5kIHx8IGFsd2F5c0R1bXBQYXNzRmFpbHVyZXM7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wg
ZHVtcFBoYXNlVGltZXMgPSBmYWxzZTsKLQotc3RhdGljIGNvbnN0ZXhwciBib29sIHBhcnNlRnVs
bFN0YW5kYXJkTGlicmFyeSA9IGZhbHNlOwotCi1zdGF0aWMgYm9vbCBkdW1wQVNUSWZOZWVkZWQo
Ym9vbCBzaG91bGREdW1wLCBQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBjaGFyKiBtZXNzYWdlKQot
ewotICAgIGlmIChzaG91bGREdW1wKSB7Ci0gICAgICAgIGRhdGFMb2dMbihtZXNzYWdlKTsKLSAg
ICAgICAgZHVtcEFTVChwcm9ncmFtKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nSWZO
ZWVkZWQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICByZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1
bXBBU1RBZnRlclBhcnNpbmcsIHByb2dyYW0sICJBU1QgYWZ0ZXIgcGFyc2luZyIpOwotfQotCi1z
dGF0aWMgYm9vbCBkdW1wQVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQoUHJvZ3JhbSYgcHJvZ3Jh
bSwgY29uc3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICByZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1
bXBBU1RCZWZvcmVFYWNoUGFzcywgcHJvZ3JhbSwgbWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyBib29s
IGR1bXBBU1RBdEVuZElmTmVlZGVkKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgcmV0dXJuIGR1
bXBBU1RJZk5lZWRlZChkdW1wQVNUQXRFbmQsIHByb2dyYW0sICJBU1QgYXQgZW5kIik7Ci19Ci0K
LXVzaW5nIFBoYXNlVGltZXMgPSBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU2Vjb25kcz4+Owot
Ci1zdGF0aWMgdm9pZCBsb2dQaGFzZVRpbWVzKFBoYXNlVGltZXMmIHBoYXNlVGltZXMpCi17Ci0g
ICAgaWYgKCFkdW1wUGhhc2VUaW1lcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRv
JiBlbnRyeSA6IHBoYXNlVGltZXMpCi0gICAgICAgIGRhdGFMb2dMbihlbnRyeS5maXJzdCwgIjog
IiwgZW50cnkuc2Vjb25kLm1pbGxpc2Vjb25kcygpLCAiIG1zIik7Ci19Ci0KLWNsYXNzIFBoYXNl
VGltZXIgewotcHVibGljOgotICAgIFBoYXNlVGltZXIoY29uc3QgY2hhciogcGhhc2VOYW1lLCBQ
aGFzZVRpbWVzJiBwaGFzZVRpbWVzKQotICAgICAgICA6IG1fcGhhc2VUaW1lcyhwaGFzZVRpbWVz
KQotICAgIHsKLSAgICAgICAgaWYgKGR1bXBQaGFzZVRpbWVzKSB7Ci0gICAgICAgICAgICBtX3Bo
YXNlTmFtZSA9IHBoYXNlTmFtZTsKLSAgICAgICAgICAgIG1fc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIH5QaGFzZVRpbWVyKCkKLSAgICB7Ci0g
ICAgICAgIGlmIChkdW1wUGhhc2VUaW1lcykgewotICAgICAgICAgICAgYXV0byB0b3RhbFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnQ7Ci0gICAgICAgICAgICBtX3BoYXNlVGlt
ZXMuYXBwZW5kKHsgbV9waGFzZU5hbWUsIHRvdGFsVGltZSB9KTsKLSAgICAgICAgfQotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9waGFzZU5hbWU7Ci0gICAgUGhhc2VUaW1lcyYgbV9w
aGFzZVRpbWVzOwotICAgIE1vbm90b25pY1RpbWUgbV9zdGFydDsKLX07Ci0KLVVuaXF1ZVJlZjxT
aGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmIHdobHNsU291cmNl
KQotewotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwODcyIFdlIHNob3VsZCBjb25zaWRlciBtb3ZpbmcgYXMgbXVjaCB3b3JrIGZyb20gcHJl
cGFyZSgpIGludG8gaGVyZSBhcyBwb3NzaWJsZS4KLSAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxT
aGFkZXJNb2R1bGU+KHdobHNsU291cmNlKTsKLX0KLQotI2RlZmluZSBDSEVDS19QQVNTKHBhc3Ms
IC4uLikgXAotICAgIGRvIHsgXAotICAgICAgICBkdW1wQVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVk
ZWQocHJvZ3JhbSwgIkFTVCBiZWZvcmUgIiAjIHBhc3MpOyBcCi0gICAgICAgIFBoYXNlVGltZXIg
cGhhc2VUaW1lcigjcGFzcywgcGhhc2VUaW1lcyk7IFwKLSAgICAgICAgYXV0byByZXN1bHQgPSBw
YXNzKF9fVkFfQVJHU19fKTsgXAotICAgICAgICBpZiAoIXJlc3VsdCkgeyBcCi0gICAgICAgICAg
ICBpZiAoZHVtcFBhc3NGYWlsdXJlKSBcCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWls
ZWQgcGFzczogIiAjIHBhc3MsIExleGVyOjplcnJvclN0cmluZyhyZXN1bHQuZXJyb3IoKSwgd2hs
c2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsgXAotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhyZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3
aGxzbFNvdXJjZTIpKTsgXAotICAgICAgICB9IFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5l
IFJVTl9QQVNTKHBhc3MsIC4uLikgXAotICAgIGRvIHsgXAotICAgICAgICBQaGFzZVRpbWVyIHBo
YXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCi0gICAgICAgIGR1bXBBU1RCZXR3ZWVuRWFj
aFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGJlZm9yZSAiICMgcGFzcyk7IFwKLSAgICAgICAg
cGFzcyhfX1ZBX0FSR1NfXyk7IFwKLSAgICB9IHdoaWxlICgwKQotCi1zdGF0aWMgRXhwZWN0ZWQ8
UHJvZ3JhbSwgU3RyaW5nPiBwcmVwYXJlU2hhcmVkKFBoYXNlVGltZXMmIHBoYXNlVGltZXMsIGNv
bnN0IFN0cmluZyYgd2hsc2xTb3VyY2UxLCBjb25zdCBTdHJpbmcqIHdobHNsU291cmNlMiA9IG51
bGxwdHIpCi17Ci0gICAgUHJvZ3JhbSBwcm9ncmFtOwotICAgIFBhcnNlciBwYXJzZXI7Ci0KLSAg
ICB7Ci0gICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50TmFtZVNwYWNlKEFT
VDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLQotICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGlt
ZXIoInBhcnNlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJz
ZXIucGFyc2UocHJvZ3JhbSwgd2hsc2xTb3VyY2UxLCBQYXJzaW5nTW9kZTo6VXNlciwgQVNUOjpO
YW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7Ci0gICAg
ICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQotICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
ZmFpbGVkIHRvIHBhcnNlIHRoZSBwcm9ncmFtOiAiLCBMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VS
ZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQuZXJy
b3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAod2hsc2xTb3VyY2UyKSB7Ci0gICAgICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0
Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMik7Ci0gICAgICAgICAg
ICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sICp3aGxzbFNvdXJjZTIs
IFBhcnNpbmdNb2RlOjpVc2VyLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMik7Ci0gICAgICAg
ICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGR1bXBQYXNzRmFp
bHVyZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgdG8gcGFyc2UgdGhl
IHByb2dyYW06ICIsIExleGVyOjplcnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxz
bFNvdXJjZTEsIHdobHNsU291cmNlMikpOwotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3Vy
Y2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBw
cm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6
U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIFBoYXNlVGltZXIgcGhh
c2VUaW1lcigiaW5jbHVkZVN0YW5kYXJkTGlicmFyeSIsIHBoYXNlVGltZXMpOwotICAgICAgICBp
bmNsdWRlU3RhbmRhcmRMaWJyYXJ5KHByb2dyYW0sIHBhcnNlciwgcGFyc2VGdWxsU3RhbmRhcmRM
aWJyYXJ5KTsKLSAgICB9Ci0KLSAgICBpZiAoIWR1bXBBU1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRl
ZChwcm9ncmFtLCAiQVNUIGFmdGVyIHBhcnNpbmciKSkKLSAgICAgICAgZHVtcEFTVEFmdGVyUGFy
c2luZ0lmTmVlZGVkKHByb2dyYW0pOwotCi0gICAgTmFtZVJlc29sdmVyIG5hbWVSZXNvbHZlcihw
cm9ncmFtLm5hbWVDb250ZXh0KCkpOwotICAgIENIRUNLX1BBU1MocmVzb2x2ZU5hbWVzSW5UeXBl
cywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrUmVjdXJzaXZl
VHlwZXMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1Moc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKHJlc29sdmVUeXBlTmFtZXNJbkZ1bmN0
aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKLSAgICBDSEVDS19QQVNTKHN5bnRoZXNpemVD
b25zdHJ1Y3RvcnMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tEdXBsaWNhdGVGdW5j
dGlvbnMsIHByb2dyYW0pOwotCi0gICAgQ0hFQ0tfUEFTUyhjaGVjaywgcHJvZ3JhbSk7Ci0gICAg
UlVOX1BBU1MocHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucywgcHJvZ3Jh
bSk7Ci0KLSAgICBSVU5fUEFTUyhjaGVja0xpdGVyYWxUeXBlcywgcHJvZ3JhbSk7Ci0gICAgQ0hF
Q0tfUEFTUyhjaGVja1RleHR1cmVSZWZlcmVuY2VzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNT
KGNoZWNrUmVmZXJlbmNlVHlwZXMsIHByb2dyYW0pOwotICAgIFJVTl9QQVNTKHJlc29sdmVQcm9w
ZXJ0aWVzLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhmaW5kSGlnaFpvbWJpZXMsIHByb2dyYW0p
OwotICAgIENIRUNLX1BBU1MoY2hlY2tTdGF0ZW1lbnRCZWhhdmlvciwgcHJvZ3JhbSk7Ci0gICAg
Q0hFQ0tfUEFTUyhjaGVja1JlY3Vyc2lvbiwgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVj
a0Z1bmN0aW9uU3RhZ2VzLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhwcmVzZXJ2ZVZhcmlhYmxl
TGlmZXRpbWVzLCBwcm9ncmFtKTsKLQotICAgIGR1bXBBU1RBdEVuZElmTmVlZGVkKHByb2dyYW0p
OwotCi0gICAgcmV0dXJuIHByb2dyYW07Ci19Ci0KLUV4cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1
bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHZlcnRleFNoYWRlck1vZHVs
ZSwgY29uc3QgU2hhZGVyTW9kdWxlKiBmcmFnbWVudFNoYWRlck1vZHVsZSwgUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yJiByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCi17Ci0gICAgUGhhc2VUaW1l
cyBwaGFzZVRpbWVzOwotICAgIE1ldGFsOjpSZW5kZXJNZXRhbENvZGUgZ2VuZXJhdGVkQ29kZTsK
LQotICAgIHsKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwg
cGhhc2VUaW1lcyk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyogc2Vjb25kU2hhZGVyID0gbnVsbHB0
cjsKLSAgICAgICAgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID0gZmFsc2U7Ci0gICAgICAg
IGlmIChmcmFnbWVudFNoYWRlck1vZHVsZSAmJiBmcmFnbWVudFNoYWRlck1vZHVsZSAhPSAmdmVy
dGV4U2hhZGVyTW9kdWxlKSB7Ci0gICAgICAgICAgICBzZWNvbmRTaGFkZXIgPSAmZnJhZ21lbnRT
aGFkZXJNb2R1bGUtPndobHNsU291cmNlOwotICAgICAgICAgICAgZGlzdGluY3RGcmFnbWVudFNo
YWRlciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBwcm9ncmFtID0gcHJlcGFyZVNo
YXJlZChwaGFzZVRpbWVzLCB2ZXJ0ZXhTaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UsIHNlY29uZFNo
YWRlcik7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hl
ZFJlbmRlclNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsKLSAgICAgICAgewotICAgICAgICAg
ICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNlbWFudGljcyIsIHBoYXNlVGltZXMpOwot
ICAgICAgICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1hdGNoU2VtYW50aWNzKCpwcm9ncmFtLCBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50
U2hhZGVyTW9kdWxlKTsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlZFNlbWFudGljcykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9y
KCJDb3VsZCBub3QgbWF0Y2ggc2VtYW50aWNzIl9zdHIpLCB2ZXJ0ZXhTaGFkZXJNb2R1bGUud2hs
c2xTb3VyY2UsIHNlY29uZFNoYWRlcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgewotICAgICAg
ICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJnZW5lcmF0ZU1ldGFsQ29kZSIsIHBoYXNlVGlt
ZXMpOwotICAgICAgICAgICAgZ2VuZXJhdGVkQ29kZSA9IE1ldGFsOjpnZW5lcmF0ZU1ldGFsQ29k
ZSgqcHJvZ3JhbSwgV1RGTW92ZSgqbWF0Y2hlZFNlbWFudGljcyksIHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5sYXlvdXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9nUGhhc2VUaW1lcyhw
aGFzZVRpbWVzKTsKLQotICAgIFJlbmRlclByZXBhcmVSZXN1bHQgcmVzdWx0OwotICAgIHJlc3Vs
dC5tZXRhbFNvdXJjZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tZXRhbFNvdXJjZSk7Ci0gICAg
cmVzdWx0Lm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29k
ZS5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUpOwotICAgIHJlc3VsdC5tYW5nbGVkRnJhZ21l
bnRFbnRyeVBvaW50TmFtZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tYW5nbGVkRnJhZ21lbnRF
bnRyeVBvaW50TmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotRXhwZWN0ZWQ8Q29tcHV0
ZVByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHNoYWRl
ck1vZHVsZSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcikKLXsKLSAgICBQaGFzZVRpbWVzIHBoYXNlVGltZXM7Ci0gICAgTWV0YWw6OkNvbXB1dGVN
ZXRhbENvZGUgZ2VuZXJhdGVkQ29kZTsKLSAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNp
b25zPiBjb21wdXRlRGltZW5zaW9uczsKLQotICAgIHsKLSAgICAgICAgUGhhc2VUaW1lciBwaGFz
ZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgIGF1dG8gcHJvZ3Jh
bSA9IHByZXBhcmVTaGFyZWQocGhhc2VUaW1lcywgc2hhZGVyTW9kdWxlLndobHNsU291cmNlKTsK
LSAgICAgICAgaWYgKCFwcm9ncmFtKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KHByb2dyYW0uZXJyb3IoKSk7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0
ZVNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsKLSAgICAgICAgewotICAgICAgICAgICAgUGhh
c2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNlbWFudGljcyIsIHBoYXNlVGltZXMpOwotICAgICAg
ICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1hdGNoU2VtYW50aWNzKCpwcm9ncmFtLCBjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICAgICAgICAgIGlmICghbWF0Y2hlZFNlbWFudGljcykK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5n
KEVycm9yKCJDb3VsZCBub3QgbWF0Y2ggc2VtYW50aWNzIl9zdHIpLCBzaGFkZXJNb2R1bGUud2hs
c2xTb3VyY2UpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGlt
ZXIgcGhhc2VUaW1lcigiY29tcHV0ZURpbWVuc2lvbnMiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVEaW1lbnNpb25zID0gV0hMU0w6OmNvbXB1dGVEaW1lbnNpb25zKCpwcm9ncmFt
LCAqbWF0Y2hlZFNlbWFudGljcy0+c2hhZGVyKTsKLSAgICAgICAgICAgIGlmICghY29tcHV0ZURp
bWVuc2lvbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjpl
cnJvclN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNoIGNvbXB1dGUgZGltZW5zaW9ucyJfc3Ry
KSwgc2hhZGVyTW9kdWxlLndobHNsU291cmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0g
ICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoImdlbmVyYXRlTWV0YWxDb2RlIiwgcGhh
c2VUaW1lcyk7Ci0gICAgICAgICAgICBnZW5lcmF0ZWRDb2RlID0gTWV0YWw6OmdlbmVyYXRlTWV0
YWxDb2RlKCpwcm9ncmFtLCBXVEZNb3ZlKCptYXRjaGVkU2VtYW50aWNzKSwgY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5sYXlvdXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9nUGhhc2VU
aW1lcyhwaGFzZVRpbWVzKTsKLQotICAgIENvbXB1dGVQcmVwYXJlUmVzdWx0IHJlc3VsdDsKLSAg
ICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWV0YWxTb3VyY2Up
OwotICAgIHJlc3VsdC5tYW5nbGVkRW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENv
ZGUubWFuZ2xlZEVudHJ5UG9pbnROYW1lKTsKLSAgICByZXN1bHQuY29tcHV0ZURpbWVuc2lvbnMg
PSBXVEZNb3ZlKCpjb21wdXRlRGltZW5zaW9ucyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWQzMzlhYmI5NDNlOGQ4Y2E4M2ZmNGY0MTk4MzNiMjM4NzZjYTQzYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1l
cy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi0vLyBIaWRlIHRoZSBjb250ZW50cyBvZiB0aGUgU2hhZGVyTW9kdWxl
LiBDbGllbnRzIG9mIHRoZSBjb21waWxlciBzaG91bGRuJ3QgY2FyZSB3aGF0J3MgaW5zaWRlIGl0
Lgotc3RydWN0IFNoYWRlck1vZHVsZTsKLQotfQotCi19Ci0KLW5hbWVzcGFjZSBzdGQgewotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBkZWZhdWx0X2RlbGV0ZTxXZWJDb3JlOjpXSExTTDo6U2hhZGVyTW9k
dWxlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFdlYkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGUq
KSBjb25zdDsKLX07Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jb25zdGV4cHIgYm9vbCBkdW1wTWV0YWxDb21waWxlVGltZXMgPSBmYWxzZTsKLQot
VW5pcXVlUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFN0cmluZyYg
d2hsc2xTb3VyY2UpOwotCi1zdHJ1Y3QgUmVuZGVyUHJlcGFyZVJlc3VsdCB7Ci0gICAgU3RyaW5n
QnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5n
bGVkVmVydGV4RW50cnlQb2ludE5hbWU7Ci0gICAgTWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUg
bWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotRXhwZWN0ZWQ8UmVuZGVyUHJlcGFy
ZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRlck1vZHVsZSYgdmVydGV4U2hhZGVy
TW9kdWxlLCBjb25zdCBTaGFkZXJNb2R1bGUqIGZyYWdtZW50U2hhZGVyTW9kdWxlLCBSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3ImKTsKLQotc3RydWN0IENvbXB1dGVEaW1lbnNpb25zIHsKLSAgICB1
bnNpZ25lZCB3aWR0aDsKLSAgICB1bnNpZ25lZCBoZWlnaHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7
Ci19OwotCi1zdHJ1Y3QgQ29tcHV0ZVByZXBhcmVSZXN1bHQgewotICAgIFN0cmluZ0J1aWxkZXIg
bWV0YWxTb3VyY2U7Ci0gICAgTWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5
UG9pbnROYW1lOwotICAgIENvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25zOwotfTsK
LUV4cGVjdGVkPENvbXB1dGVQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3QgU2hh
ZGVyTW9kdWxlJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi19IC8vIG5hbWVzcGFj
ZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5ZDA3ZDgwODg2NDRlZmFkNDQ1MzRhOTA2
YjNhNTYzM2M0OTA3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMQVNURHVtcGVyLmgiCi0jaW5jbHVkZSAiV0hM
U0xMZXhlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVw
bGFjZVdpdGguaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0vLyBUaGlzIHBhc3Mgd29ya3MgYnkgZW5zdXJp
bmcgcHJvcGVyIHZhcmlhYmxlIGxpZmV0aW1lcy4gSW4gV0hMU0wsIGVhY2ggdmFyaWFibGUKLS8v
IGhhcyBnbG9iYWwgbGlmZXRpbWUuIFNvIHJldHVybmluZyBhIHBvaW50ZXIgdG8gYSBsb2NhbCB2
YXJpYWJsZSBpcyBhIHRvdGFsbHkKLS8vIGxlZ2l0aW1hdGUgYW5kIHdlbGwtc3BlY2lmaWVkIHRo
aW5nIHRvIGRvLgotLy8KLS8vIFdlIGltcGxlbWVudCB0aGlzIGJ5OgotLy8gLSBXZSBub3RlIGV2
ZXJ5IHZhcmlhYmxlIHdob3NlIGFkZHJlc3Mgd2UgdGFrZS4KLS8vIC0gRWFjaCBzdWNoIHZhcmlh
YmxlIGdldHMgZGVmaW5lZCBhcyBhIGZpZWxkIGluIGEgc3RydWN0LgotLy8gLSBFYWNoIGZ1bmN0
aW9uIHdoaWNoIGlzIGFuIGVudHJ5IHBvaW50IGRlZmluZXMgdGhpcyBzdHJ1Y3QuCi0vLyAtIEVh
Y2ggbm9uIGVudHJ5IHBvaW50IHRha2VzIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdCBhcyBpdHMg
ZmluYWwgcGFyYW1ldGVyLgotLy8gLSBFYWNoIGNhbGwgdG8gYSBub24tbmF0aXZlIGZ1bmN0aW9u
IGlzIHJld3JpdHRlbiB0byBwYXNzIGEgcG9pbnRlciB0byB0aGUKLS8vICAgc3RydWN0IGFzIHRo
ZSBsYXN0IGNhbGwgYXJndW1lbnQuCi0vLyAtIEVhY2ggdmFyaWFibGUgcmVmZXJlbmNlIHRvICJ4
Iiwgd2hlcmUgIngiIGVuZHMgdXAgaW4gdGhlIHN0cnVjdCwgaXMKLS8vICAgbW9kaWZpZWQgdG8g
aW5zdGVhZCBiZSAic3RydWN0LT54Ii4gV2Ugc3RvcmUgdG8gInN0cnVjdC0+eCIgYWZ0ZXIgZGVj
bGFyaW5nCi0vLyAgICJ4Ii4gSWYgIngiIGlzIGEgZnVuY3Rpb24gcGFyYW1ldGVyLCB3ZSBzdG9y
ZSB0byAic3RydWN0LT54IiBhcyB0aGUgZmlyc3QKLS8vICAgdGhpbmcgd2UgZG8gaW4gdGhlIGZ1
bmN0aW9uIGJvZHkuCi0KLWNsYXNzIEVzY2FwZWRWYXJpYWJsZUNvbGxlY3RvciBmaW5hbCA6IHB1
YmxpYyBWaXNpdG9yIHsKLSAgICB1c2luZyBCYXNlID0gVmlzaXRvcjsKLXB1YmxpYzoKLQotICAg
IHZvaWQgZXNjYXBlVmFyaWFibGVVc2UoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotICAg
IHsKLSAgICAgICAgaWYgKCFpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSkg
ewotICAgICAgICAgICAgLy8gRklYTUU6IEFyZSB3ZSBtaXNzaW5nIGFueSBpbnRlcmVzdGluZyBw
cm9kdWN0aW9ucyBoZXJlPwotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODMxMQotICAgICAgICAgICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lv
bik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvKiB2YXJp
YWJsZSA9IGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pLnZhcmlh
YmxlKCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCBza2lwIHRoaXMgaWYgd2UgbWFyayBhbGwgaW50ZXJuYWwgdmFyaWFibGVzIHdpdGggYSBi
aXQsIHNpbmNlIHdlCi0gICAgICAgIC8vIG5ldmVyIG1ha2UgYW55IGludGVybmFsIHZhcmlhYmxl
IGVzY2FwZSB0aGUgY3VycmVudCBzY29wZSBpdCBpcyBkZWZpbmVkIGluOgotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzgzCi0gICAgICAgIG1f
ZXNjYXBlZFZhcmlhYmxlcy5hZGQodmFyaWFibGUsIG1ha2VTdHJpbmcoIl8iLCB2YXJpYWJsZS0+
bmFtZSgpLCAiXyIsIG1fY291bnQrKykpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpN
YWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChtYWtlUG9pbnRlckV4cHJlc3Npb24ubWlnaHRFc2NhcGUoKSkKLSAg
ICAgICAgICAgIGVzY2FwZVZhcmlhYmxlVXNlKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFs
dWUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBpZiAobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5taWdodEVzY2FwZSgpKQot
ICAgICAgICAgICAgZXNjYXBlVmFyaWFibGVVc2UobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5sZWZ0VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYg
KGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFy
ZExpYnJhcnkpCi0gICAgICAgICAgICBCYXNlOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwot
ICAgIH0KLQotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgU3RyaW5nPiB0
YWtlRXNjYXBlZFZhcmlhYmxlcygpIHsgcmV0dXJuIFdURk1vdmUobV9lc2NhcGVkVmFyaWFibGVz
KTsgfQotCi1wcml2YXRlOgotICAgIHNpemVfdCBtX2NvdW50IHsgMSB9OwotICAgIEhhc2hNYXA8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgU3RyaW5nPiBtX2VzY2FwZWRWYXJpYWJsZXM7Ci19
OwotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBUb2tlbiBhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlw
ZSB0eXBlKQotewotICAgIHJldHVybiBUb2tlbiB7IHsgfSwgdHlwZSB9OwotfQotCi1jbGFzcyBQ
cmVzZXJ2ZUxpZmV0aW1lcyA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICB1c2luZyBCYXNlID0gVmlz
aXRvcjsKLXB1YmxpYzoKLSAgICBQcmVzZXJ2ZUxpZmV0aW1lcyhSZWY8QVNUOjpUeXBlUmVmZXJl
bmNlPiBzdHJ1Y3RUeXBlLCBjb25zdCBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbios
IEFTVDo6U3RydWN0dXJlRWxlbWVudCo+JiB2YXJpYWJsZU1hcHBpbmcpCi0gICAgICAgIDogbV9z
dHJ1Y3RUeXBlKFdURk1vdmUoc3RydWN0VHlwZSkpCi0gICAgICAgICwgbV9wb2ludGVyVG9TdHJ1
Y3RUeXBlKEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShhbm9ueW1vdXNUb2tlbihUb2tlbjo6VHlw
ZTo6SWRlbnRpZmllciksIEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQsIG1fc3RydWN0VHlwZS5j
b3B5UmVmKCkpKQotICAgICAgICAsIG1fdmFyaWFibGVNYXBwaW5nKHZhcmlhYmxlTWFwcGluZykK
LSAgICB7IH0KLQotICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPiBtYWtlU3Ry
dWN0VmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAgICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJs
ZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpW
YXJpYWJsZVJlZmVyZW5jZTo6d3JhcCgqbV9zdHJ1Y3RWYXJpYWJsZSkpOwotICAgICAgICBzdHJ1
Y3RWYXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZSgqbV9zdHJ1Y3RWYXJpYWJsZS0+dHlwZSgpKTsK
LSAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6
TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLSAgICAgICAgcmV0dXJu
IHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlOwotICAgIH0KLQotICAgIFVuaXF1ZVJlZjxBU1Q6OkFz
c2lnbm1lbnRFeHByZXNzaW9uPiBhc3NpZ25WYXJpYWJsZUludG9TdHJ1Y3QoQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uJiB2YXJpYWJsZSwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50KiBlbGVtZW50KQot
ICAgIHsKLSAgICAgICAgYXV0byBsaHMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2U+KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigpLCBtYWtlU3RydWN0VmFyaWFibGVS
ZWZlcmVuY2UoKSwgZWxlbWVudCk7Ci0gICAgICAgIGxocy0+c2V0VHlwZSgqdmFyaWFibGUudHlw
ZSgpKTsKLSAgICAgICAgbGhzLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFT
VDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAgICAgICAgYXV0byByaHMgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6Ondy
YXAodmFyaWFibGUpKTsKLSAgICAgICAgcmhzLT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwot
ICAgICAgICByaHMtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRy
ZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigp
LCBXVEZNb3ZlKGxocyksIFdURk1vdmUocmhzKSk7Ci0gICAgICAgIGFzc2lnbm1lbnQtPnNldFR5
cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0
aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICByZXR1cm4gYXNzaWdubWVudDsKLSAg
ICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRl
ZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9u
LnBhcnNpbmdNb2RlKCkgPT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBib29sIGlzRW50cnlQb2ludCA9ICEhZnVuY3Rpb25EZWZp
bml0aW9uLmVudHJ5UG9pbnRUeXBlKCk7Ci0gICAgICAgIGlmIChpc0VudHJ5UG9pbnQpIHsKLSAg
ICAgICAgICAgIGF1dG8gc3RydWN0VmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9u
KCksIEFTVDo6UXVhbGlmaWVycygpLAotICAgICAgICAgICAgICAgIG1fc3RydWN0VHlwZS5jb3B5
UmVmKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICAgICAgYXV0byBz
dHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0
aW9uKSk7Ci0gICAgICAgICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShtX3N0
cnVjdFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNl
LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpU
aHJlYWQgfSk7Ci0KLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgc3RydWN0
VmFyaWFibGVEZWNsYXJhdGlvbnM7Ci0gICAgICAgICAgICBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0
aW9ucy5hcHBlbmQoV1RGTW92ZShzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAg
ICAgICBhdXRvIHN0cnVjdERlY2xhcmF0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxv
Y2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLQotICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gbWFrZVBvaW50ZXJFeHByZXNz
aW9uKG5ldyBBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbihmdW5jdGlvbkRlZmluaXRpb24uY29k
ZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVSZWZlcmVuY2UpLCBBU1Q6OkFkZHJl
c3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKSk7Ci0gICAgICAgICAgICBtYWtlUG9pbnRlckV4
cHJlc3Npb24tPnNldFR5cGUobV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSk7Ci0gICAg
ICAgICAgICBtYWtlUG9pbnRlckV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6Umln
aHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgYXV0byBwb2ludGVyRGVjbGFyYXRpb24gPSBtYWtl
VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZpbml0aW9uLmNv
ZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAgICBtX3BvaW50
ZXJUb1N0cnVjdFR5cGUuY29weVJlZigpLCAid3JhcHBlciJfcywgbnVsbHB0ciwgV1RGTW92ZSht
YWtlUG9pbnRlckV4cHJlc3Npb24pKTsKLSAgICAgICAgICAgIG1fc3RydWN0VmFyaWFibGUgPSAm
cG9pbnRlckRlY2xhcmF0aW9uOwotCi0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBvaW50ZXJWYXJpYWJsZURlY2xhcmF0aW9uczsKLSAgICAgICAgICAgIHBvaW50ZXJWYXJp
YWJsZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShwb2ludGVyRGVjbGFyYXRpb24pKTsKLSAg
ICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihmdW5jdGlvbkRlZmluaXRpb24u
Y29kZUxvY2F0aW9uKCksIFdURk1vdmUocG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25zKSk7Ci0K
LSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNl
cnQoMCwgV1RGTW92ZShzdHJ1Y3REZWNsYXJhdGlvblN0YXRlbWVudCkpOwotICAgICAgICAgICAg
ZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgxLCBXVEZNb3Zl
KHBvaW50ZXJEZWNsYXJhdGlvblN0YXRlbWVudCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBwb2ludGVyRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1
YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAgICBtX3BvaW50ZXJUb1N0cnVjdFR5cGUuY29weVJl
ZigpLCAid3JhcHBlciJfcywgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBtX3N0cnVj
dFZhcmlhYmxlID0gJnBvaW50ZXJEZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIGZ1bmN0aW9uRGVm
aW5pdGlvbi5wYXJhbWV0ZXJzKCkuYXBwZW5kKFdURk1vdmUocG9pbnRlckRlY2xhcmF0aW9uKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBCYXNlOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwot
Ci0gICAgICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFt
ZXRlcnMoKSkgewotICAgICAgICAgICAgYXV0byBpdGVyID0gbV92YXJpYWJsZU1hcHBpbmcuZmlu
ZCgmcGFyYW1ldGVyKTsKLSAgICAgICAgICAgIGlmIChpdGVyID09IG1fdmFyaWFibGVNYXBwaW5n
LmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBmdW5jdGlv
bkRlZmluaXRpb24uYmxvY2soKS5zdGF0ZW1lbnRzKCkuaW5zZXJ0KGlzRW50cnlQb2ludCA/IDIg
OiAwLAotICAgICAgICAgICAgICAgIG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50Pihhc3NpZ25WYXJpYWJsZUludG9TdHJ1Y3QocGFyYW1ldGVyLCBpdGVyLT52
YWx1ZSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElubmVyIGZ1bmN0aW9ucyBhcmUgbm90
IGFsbG93ZWQgaW4gV0hMU0wuIFNvIHRoaXMgaXMgZmluZS4KLSAgICAgICAgbV9zdHJ1Y3RWYXJp
YWJsZSA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNz
aW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fc3RydWN0VmFyaWFibGUpOwotCi0gICAgICAgIEJhc2U6OnZpc2l0KGNhbGxFeHByZXNz
aW9uKTsKLQotICAgICAgICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgaXQncyBpbGxlZ2FsIHRvIGNh
bGwgYW4gZW50cnlwb2ludC4gVGhlcmVmb3JlLCB3ZSBjYW4gb25seQotICAgICAgICAvLyBjYWxs
IGZ1bmN0aW9ucyB3aGVyZSB3ZSd2ZSBhbHJlYWR5IGFwcGVuZGVkIHRoaXMgc3RydWN0IGFzIGl0
cyBmaW5hbCBwYXJhbWV0ZXIuCi0gICAgICAgIGlmICghY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24o
KS5pc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAmJiBjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAg
ICAgICAgIGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLmFwcGVuZChtYWtlU3RydWN0VmFyaWFi
bGVSZWZlcmVuY2UoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVm
ZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fc3RydWN0VmFyaWFibGUpOwotCi0gICAgICAgIGF1dG8gaXRlciA9IG1fdmFy
aWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0gICAgICAg
IGlmIChpdGVyID09IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB0eXBlID0gKnZhcmlhYmxlUmVmZXJl
bmNlLnZhcmlhYmxlKCktPnR5cGUoKTsKLSAgICAgICAgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBl
QW5ub3RhdGlvbiA9IHZhcmlhYmxlUmVmZXJlbmNlLnR5cGVBbm5vdGF0aW9uKCk7Ci0gICAgICAg
IGF1dG8qIGludGVybmFsRmllbGQgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2U+KHZhcmlhYmxlUmVmZXJlbmNlLCB2YXJpYWJsZVJlZmVyZW5jZS5jb2RlTG9j
YXRpb24oKSwgbWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKCksIGl0ZXItPnZhbHVlKTsKLSAg
ICAgICAgaW50ZXJuYWxGaWVsZC0+c2V0VHlwZShXVEZNb3ZlKHR5cGUpKTsKLSAgICAgICAgaW50
ZXJuYWxGaWVsZC0+c2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxlKTsKLQotICAgICAgICBCYXNlOjp2aXNp
dCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci0KLSAgICAgICAgQVNUOjpTdGF0ZW1l
bnRzIHN0YXRlbWVudHM7Ci0gICAgICAgIGZvciAoVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKSB7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24mIHZhcmlhYmxlID0gdmFyaWFibGVEZWNsYXJhdGlvbi5nZXQoKTsKLQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgZGVj
bGFyYXRpb25zOwotICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZSh2
YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Pih2YXJpYWJs
ZS5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShkZWNsYXJhdGlvbnMpKSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQoJnZhcmlh
YmxlKTsKLSAgICAgICAgICAgIGlmIChpdGVyICE9IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgpKQot
ICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Pihhc3NpZ25WYXJpYWJsZUludG9TdHJ1Y3QodmFyaWFi
bGUsIGl0ZXItPnZhbHVlKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpyZXBsYWNlV2l0
aDxBU1Q6OlN0YXRlbWVudExpc3Q+KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCB2YXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdGF0ZW1l
bnRzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiog
bV9zdHJ1Y3RWYXJpYWJsZSB7IG51bGxwdHIgfTsKLQotICAgIFJlZjxBU1Q6OlR5cGVSZWZlcmVu
Y2U+IG1fc3RydWN0VHlwZTsKLSAgICBSZWY8QVNUOjpQb2ludGVyVHlwZT4gbV9wb2ludGVyVG9T
dHJ1Y3RUeXBlOwotICAgIC8vIElmIHRoaXMgbWFwcGluZyBjb250YWlucyB0aGUgdmFyaWFibGUs
IGl0IG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlJ3MgY2Fub25pY2FsIGxvY2F0aW9uCi0gICAgLy8g
aXMgaW4gdGhlIHN0cnVjdCB3ZSB1c2UgdG8gcHJlc2VydmUgdmFyaWFibGUgbGlmZXRpbWVzLgot
ICAgIGNvbnN0IEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1
cmVFbGVtZW50Kj4mIG1fdmFyaWFibGVNYXBwaW5nOwotfTsKLQotdm9pZCBwcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24qLCBTdHJpbmc+IGVzY2FwZWRWYXJpYWJsZXM7Ci0gICAgewotICAgICAg
ICBFc2NhcGVkVmFyaWFibGVDb2xsZWN0b3IgY29sbGVjdG9yOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgY29sbGVjdG9yLnZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygp
W2ldKTsKLSAgICAgICAgZXNjYXBlZFZhcmlhYmxlcyA9IGNvbGxlY3Rvci50YWtlRXNjYXBlZFZh
cmlhYmxlcygpOwotICAgIH0KLQotICAgIEFTVDo6U3RydWN0dXJlRWxlbWVudHMgZWxlbWVudHM7
Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogZXNjYXBlZFZhcmlhYmxlcykgewotICAgICAgICBhdXRv
KiB2YXJpYWJsZSA9IHBhaXIua2V5OwotICAgICAgICBTdHJpbmcgbmFtZSA9IHBhaXIudmFsdWU7
Ci0gICAgICAgIGVsZW1lbnRzLmFwcGVuZChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQgeyB2YXJpYWJs
ZS0+Y29kZUxvY2F0aW9uKCksIHsgfSwgKnZhcmlhYmxlLT50eXBlKCksIFdURk1vdmUobmFtZSks
IG51bGxwdHIgfSk7Ci0gICAgfQotCi0gICAgLy8gTmFtZSBvZiB0aGlzIGRvZXNuJ3QgbWF0dGVy
LCBzaW5jZSB3ZSBkb24ndCB1c2Ugc3RydWN0IG5hbWVzIHdoZW4KLSAgICAvLyBnZW5lcmF0aW5n
IE1ldGFsIHR5cGUgbmFtZXMuIFdlIGp1c3QgcGljayBzb21ldGhpbmcgaGVyZSB0byBtYWtlIGl0
Ci0gICAgLy8gZWFzeSB0byByZWFkIGluIEFTVCBkdW1wcy4KLSAgICBhdXRvIHdyYXBwZXJTdHJ1
Y3REZWZpbml0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KGFu
b255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpTdHJ1Y3QpLCAiX19XcmFwcGVyU3RydWN0X18iX3Ms
IFdURk1vdmUoZWxlbWVudHMpKTsKLQotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Kj4gdmFyaWFibGVNYXBwaW5nOwotICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBlc2NhcGVkVmFyaWFibGVzKQot
ICAgICAgICB2YXJpYWJsZU1hcHBpbmcuYWRkKHBhaXIua2V5LCAmd3JhcHBlclN0cnVjdERlZmlu
aXRpb24tPnN0cnVjdHVyZUVsZW1lbnRzKClbaW5kZXgrK10pOwotCi0gICAgewotICAgICAgICBh
dXRvIHdyYXBwZXJTdHJ1Y3RUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGFub255bW91
c1Rva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSwgd3JhcHBlclN0cnVjdERlZmluaXRpb24p
OwotICAgICAgICBQcmVzZXJ2ZUxpZmV0aW1lcyBwcmVzZXJ2ZUxpZmV0aW1lcyhXVEZNb3ZlKHdy
YXBwZXJTdHJ1Y3RUeXBlKSwgdmFyaWFibGVNYXBwaW5nKTsKLSAgICAgICAgcHJlc2VydmVMaWZl
dGltZXMuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgfQotCi0gICAgcHJvZ3JhbS5zdHJ1
Y3R1cmVEZWZpbml0aW9ucygpLmFwcGVuZChXVEZNb3ZlKHdyYXBwZXJTdHJ1Y3REZWZpbml0aW9u
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1l
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNjRmN2Ey
OGJhODRjZmQwZTQ2NzgxMDE5OWVkMGFjMzk3NDBiZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
Y2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBwcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzKFByb2dyYW0m
KTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFhMmUyYzAzODcyNTVkNTdmMDliYTRkMWU5MmFh
ZmY0ZTRlZWQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25E
ZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVm
aW5pdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtIHsKLXB1YmxpYzoKLSAgICBQ
cm9ncmFtKCkgPSBkZWZhdWx0OwotICAgIFByb2dyYW0oUHJvZ3JhbSYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6VHlwZURlZmluaXRpb24mJiB0
eXBlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIG1fdHlwZURlZmluaXRpb25zLmFwcGVuZCht
YWtlVW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+KFdURk1vdmUodHlwZURlZmluaXRpb24p
KSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX3R5cGVEZWZpbml0aW9ucy5s
YXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uJiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAg
IG1fc3RydWN0dXJlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihXVEZNb3ZlKHN0cnVjdHVyZURlZmluaXRpb24pKSk7Ci0gICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChtX3N0cnVjdHVyZURlZmluaXRpb25zLmxhc3QoKSk7Ci0g
ICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiYmIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIG1fZW51
bWVyYXRpb25EZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbj4oV1RGTW92ZShlbnVtZXJhdGlvbkRlZmluaXRpb24pKSk7Ci0gICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsK
LSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlv
bkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
PihXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNv
bnRleHQuYWRkKG1fZnVuY3Rpb25EZWZpbml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4
cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
JiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSk7Ci0gICAg
ICAgIG1faW50cmluc2ljcy5hZGQobV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5sYXN0KCkp
OwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9uYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBl
bmQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi0g
ICAgewotICAgICAgICBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVS
ZWY8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KFdURk1vdmUobmF0aXZlVHlwZURlY2xhcmF0
aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNpY3MuYWRkKG1fbmF0aXZlVHlwZURlY2xhcmF0aW9u
cy5sYXN0KCkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9uYXRpdmVUeXBl
RGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc1ZhbGlkVmVjdG9yUHJv
cGVydHkoU3RyaW5nKTsKLQotICAgIE5hbWVDb250ZXh0JiBuYW1lQ29udGV4dCgpIHsgcmV0dXJu
IG1fbmFtZUNvbnRleHQ7IH0KLSAgICBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKCkgeyByZXR1cm4g
bV9pbnRyaW5zaWNzOyB9Ci0gICAgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcygpIGNvbnN0
IHsgcmV0dXJuIG1faW50cmluc2ljczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpUeXBl
RGVmaW5pdGlvbj4+JiB0eXBlRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX3R5cGVEZWZpbml0aW9u
czsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPj4mIHN0
cnVjdHVyZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsgfQot
ICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+PiYgZW51bWVy
YXRpb25EZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uczsgfQot
ICAgIGNvbnN0IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiYgZnVu
Y3Rpb25EZWZpbml0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25EZWZpbml0aW9uczsg
fQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiYgZnVuY3Rp
b25EZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWZpbml0aW9uczsgfQotICAgIGNv
bnN0IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPj4mIG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uPj4mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9u
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+PiYgbmF0aXZlVHlwZURlY2xhcmF0aW9ucygpIHsgcmV0dXJu
IG1fbmF0aXZlVHlwZURlY2xhcmF0aW9uczsgfQotCi1wcml2YXRlOgotICAgIE5hbWVDb250ZXh0
IG1fbmFtZUNvbnRleHQ7Ci0gICAgSW50cmluc2ljcyBtX2ludHJpbnNpY3M7Ci0gICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4gbV90eXBlRGVmaW5pdGlvbnM7Ci0gICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+PiBtX3N0cnVjdHVyZURl
ZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+PiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG1fZnVuY3Rpb25EZWZpbml0aW9uczsKLSAgICBWZWN0b3I8
VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4+IG1fbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4+IG1fbmF0aXZlVHlwZURlY2xhcmF0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MzBmYTBiOTllOGE1M2I5MGEzMjU3NDEyYWRlZjRiNDljYWM4ZDNmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFt
LmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRv
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IFByb3BlcnR5UmVzb2x2ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgdm9pZCBoYW5kbGVMZWZ0
SGFuZFNpZGVCYXNlKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+IGJhc2UsIFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+JiBzbG90LCBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+
JiBleHByZXNzaW9ucykKLSAgICB7Ci0gICAgICAgIGlmICghYmFzZS0+bWF5QmVFZmZlY3RmdWwo
KSkgewotICAgICAgICAgICAgc2xvdCA9IFdURk1vdmUoYmFzZSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBiYXNlLT50
eXBlQW5ub3RhdGlvbigpLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGVmdEFkZHJlc3NTcGFjZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24g
PSBiYXNlLT5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IGJh
c2VUeXBlID0gYmFzZS0+cmVzb2x2ZWRUeXBlKCk7Ci0gICAgICAgIFJlZjxBU1Q6OlBvaW50ZXJU
eXBlPiBwb2ludGVyVHlwZSA9IEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShjb2RlTG9jYXRpb24s
ICpsZWZ0QWRkcmVzc1NwYWNlLCBiYXNlVHlwZS5jb3B5UmVmKCkpOwotCi0gICAgICAgIFVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+IHBvaW50ZXJWYXJpYWJsZSA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihjb2RlTG9jYXRpb24sIEFTVDo6UXVhbGlm
aWVycyB7IH0sIHBvaW50ZXJUeXBlLnB0cigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7
Ci0KLSAgICAgICAgYXV0byBtYWtlVmFyaWFibGVSZWZlcmVuY2UgPSBbJl0gewotICAgICAgICAg
ICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChwb2ludGVyVmFyaWFibGUpKTsK
LSAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlS
ZWYoKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24o
QVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwotICAgICAgICAg
ICAgcmV0dXJuIHZhcmlhYmxlUmVmZXJlbmNlOwotICAgICAgICB9OwotCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGF1dG8gcG9pbnRlck9mQmFzZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgV1RGTW92ZShiYXNlKSwgQVNUOjpBZGRyZXNz
RXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSk7Ci0gICAgICAgICAgICBwb2ludGVyT2ZCYXNlLT5z
ZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBwb2ludGVyT2ZCYXNl
LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGF1
dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4o
Y29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSwgV1RGTW92ZShwb2ludGVyT2ZC
YXNlKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlS
ZWYoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJp
Z2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKGFz
c2lnbm1lbnQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gZGVy
ZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihjb2Rl
TG9jYXRpb24sIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIGRlcmVmZXJl
bmNlLT5zZXRUeXBlKGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBkZXJlZmVyZW5j
ZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyAqbGVmdEFkZHJlc3NTcGFjZSB9
KTsKLQotICAgICAgICAgICAgc2xvdCA9IFdURk1vdmUoZGVyZWZlcmVuY2UpOwotICAgICAgICB9
Ci0KLSAgICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdURk1vdmUocG9pbnRlclZhcmlhYmxlKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBoYW5kbGVQcm9wZXJ0eUFjY2VzcyhBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3MsIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4mIGV4cHJlc3Npb25zKQotICAgIHsKLSAgICAgICAgQVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24qIGN1cnJlbnRQdHIgPSAmcHJvcGVydHlBY2Nlc3M7Ci0gICAgICAgIC8vIGEu
YltjXS5kIHdpbGwgZ28gaW50byB0aGlzIGFycmF5IGFzIFsuZCwgW2NdLCAuYl0KLSAgICAgICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24+PiBjaGFpbjsKLQotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgQVNUOjpQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKLSAgICAgICAg
ICAgIGNoYWluLmFwcGVuZChjdXJyZW50KTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OkluZGV4
RXhwcmVzc2lvbj4oY3VycmVudCkpCi0gICAgICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihjdXJyZW50KS5pbmRleEV4cHJlc3Npb24o
KSk7Ci0gICAgICAgICAgICBpZiAoIWlzPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihj
dXJyZW50LmJhc2UoKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjdXJy
ZW50UHRyID0gJmRvd25jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihjdXJyZW50
LmJhc2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYgY3VycmVudCA9ICpjdXJyZW50UHRyOwotCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChjdXJyZW50LmJhc2UoKSk7Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uIGJhc2VDb2RlTG9jYXRp
b24gPSBjdXJyZW50LmJhc2UoKS5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChjdXJyZW50LmJhc2UoKS50eXBlQW5ub3RhdGlvbigpLmlzUmlnaHRWYWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBjb3B5ID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGJhc2VDb2RlTG9jYXRpb24sIEFTVDo6
UXVhbGlmaWVycyB7IH0sICZjdXJyZW50LmJhc2UoKS5yZXNvbHZlZFR5cGUoKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IGJh
c2VUeXBlID0gY3VycmVudC5iYXNlKCkucmVzb2x2ZWRUeXBlKCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZdIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIHZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKGNvcHkpKTsKLSAgICAgICAg
ICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6
OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhcmlhYmxlUmVmZXJlbmNlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNz
aW9uPihiYXNlQ29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSwgY3VycmVudC50
YWtlQmFzZSgpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGUoYmFzZVR5cGUuY29w
eVJlZigpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6
UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUo
YXNzaWdubWVudCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjdXJyZW50LmJhc2VSZWZl
cmVuY2UoKSA9IG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgpOwotCi0gICAgICAgICAgICBtX3Zhcmlh
Ymxlcy5hcHBlbmQoV1RGTW92ZShjb3B5KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
aGFuZGxlTGVmdEhhbmRTaWRlQmFzZShjdXJyZW50LnRha2VCYXNlKCksIGN1cnJlbnQuYmFzZVJl
ZmVyZW5jZSgpLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGNoYWlu
LnNpemUoKTsgaS0tOyApIHsKLSAgICAgICAgICAgIGF1dG8mIGFjY2VzcyA9IGNoYWluW2ldLmdl
dCgpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihhY2Nlc3MpICYm
IGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihhY2Nlc3MpLmluZGV4RXhwcmVzc2lvbigp
Lm1heUJlRWZmZWN0ZnVsKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBpbmRleEV4cHJlc3Np
b24gPSBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oYWNjZXNzKTsKLQotICAgICAgICAg
ICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBpbmRleFR5cGUgPSBpbmRleEV4cHJlc3Npb24u
aW5kZXhFeHByZXNzaW9uKCkucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAgICAgICAgICBVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBpbmRleFZhcmlhYmxlID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGFjY2Vzcy5jb2RlTG9jYXRpb24oKSwgQVNU
OjpRdWFsaWZpZXJzIHsgfSwgaW5kZXhUeXBlLnB0cigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSA9IFsm
XSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZlcmVuY2UgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFibGVSZWZlcmVuY2U6Ondy
YXAoaW5kZXhWYXJpYWJsZSkpOwotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5j
ZS0+c2V0VHlwZShpbmRleFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpB
ZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlh
YmxlUmVmZXJlbmNlOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpB
c3NpZ25tZW50RXhwcmVzc2lvbj4oYmFzZUNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJl
bmNlKCksIGluZGV4RXhwcmVzc2lvbi50YWtlSW5kZXgoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGFzc2lnbm1lbnQtPnNldFR5cGUoaW5kZXhUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsK
LQotICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShhc3NpZ25t
ZW50KSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaW5kZXhFeHByZXNz
aW9uLmluZGV4UmVmZXJlbmNlKCkgPSBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKTsKLQotICAgICAg
ICAgICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKGluZGV4VmFyaWFibGUpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgaGFuZGxlUHJvcGVydHlB
Y2Nlc3MoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzKQotICAg
IHsKLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9u
czsKLQotICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vzcyhwcm9wZXJ0eUFjY2VzcywgZXhwcmVz
c2lvbnMpOwotCi0gICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBhY2Nlc3NUeXBlID0gcHJv
cGVydHlBY2Nlc3MucmVzb2x2ZWRUeXBlKCk7Ci0KLSAgICAgICAgQVNUOjpDb21tYUV4cHJlc3Np
b24qIGNvbW1hOwotICAgICAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uID0gcHJvcGVydHlB
Y2Nlc3MuY29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lv
bj4ocHJvcGVydHlBY2Nlc3MpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpbmRleEV4cHJlc3Npb24g
PSBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3MpOwotCi0gICAg
ICAgICAgICBhdXRvIG5ld0luZGV4RXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRl
eEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uLnRha2VCYXNlKCksIGlu
ZGV4RXhwcmVzc2lvbi50YWtlSW5kZXgoKSk7Ci0gICAgICAgICAgICBuZXdJbmRleEV4cHJlc3Np
b24tPnNldFR5cGUoaW5kZXhFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgICAg
IG5ld0luZGV4RXhwcmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpUeXBlQW5ub3RhdGlv
bihpbmRleEV4cHJlc3Npb24udHlwZUFubm90YXRpb24oKSkpOwotCi0gICAgICAgICAgICBleHBy
ZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdJbmRleEV4cHJlc3Npb24pKTsKLQotICAgICAgICAg
ICAgY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6Q29tbWFFeHByZXNzaW9uPihpbmRleEV4
cHJlc3Npb24sIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8QVNUOjpEb3RFeHByZXNzaW9u
Pihwcm9wZXJ0eUFjY2VzcykpOwotICAgICAgICAgICAgYXV0byYgZG90RXhwcmVzc2lvbiA9IGRv
d25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3MpOwotCi0gICAgICAgICAg
ICBhdXRvIG5ld0RvdEV4cHJlc3Npb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lv
bj4oY29kZUxvY2F0aW9uLCBkb3RFeHByZXNzaW9uLnRha2VCYXNlKCksIFN0cmluZyhkb3RFeHBy
ZXNzaW9uLmZpZWxkTmFtZSgpKSk7Ci0gICAgICAgICAgICBuZXdEb3RFeHByZXNzaW9uLT5zZXRU
eXBlKGRvdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICAgICAgbmV3RG90RXhw
cmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpUeXBlQW5ub3RhdGlvbihkb3RFeHByZXNz
aW9uLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQotICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5k
KFdURk1vdmUobmV3RG90RXhwcmVzc2lvbikpOwotCi0gICAgICAgICAgICBjb21tYSA9IEFTVDo6
cmVwbGFjZVdpdGg8QVNUOjpDb21tYUV4cHJlc3Npb24+KGRvdEV4cHJlc3Npb24sIGNvZGVMb2Nh
dGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29tbWEt
PnNldFR5cGUoV1RGTW92ZShhY2Nlc3NUeXBlKSk7Ci0gICAgICAgIGNvbW1hLT5zZXRUeXBlQW5u
b3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vzcyhkb3RFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2VzcyhpbmRleEV4cHJlc3Npb24p
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
JiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHByZXNzaW9uKCkpOwotCi0g
ICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0K
LSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiA9IHJlYWRNb2RpZnlXcml0ZS5jb2Rl
TG9jYXRpb24oKTsKLQotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdHlwZSA9IHJlYWRN
b2RpZnlXcml0ZS5yZXNvbHZlZFR5cGUoKTsKLQotICAgICAgICBpZiAoaXM8QVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24+KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSkpCi0gICAgICAg
ICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vzcyhkb3duY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKSwgZXhwcmVzc2lvbnMpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBoYW5kbGVMZWZ0SGFuZFNpZGVCYXNlKHJlYWRNb2RpZnlX
cml0ZS50YWtlTGVmdFZhbHVlKCksIHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWVSZWZlcmVuY2Uo
KSwgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+IG5ld1JlYWRNb2RpZnlXcml0ZSA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPigKLSAgICAgICAgICAgICAgICBy
ZWFkTW9kaWZ5V3JpdGUuY29kZUxvY2F0aW9uKCksIHJlYWRNb2RpZnlXcml0ZS50YWtlTGVmdFZh
bHVlKCksIHJlYWRNb2RpZnlXcml0ZS50YWtlT2xkVmFsdWUoKSwgcmVhZE1vZGlmeVdyaXRlLnRh
a2VOZXdWYWx1ZSgpKTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0TmV3VmFs
dWVFeHByZXNzaW9uKHJlYWRNb2RpZnlXcml0ZS50YWtlTmV3VmFsdWVFeHByZXNzaW9uKCkpOwot
ICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlYWRN
b2RpZnlXcml0ZS50YWtlUmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICAgICAgICAgIG5ld1JlYWRN
b2RpZnlXcml0ZS0+c2V0VHlwZSh0eXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBuZXdSZWFk
TW9kaWZ5V3JpdGUtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6VHlwZUFubm90YXRpb24ocmVhZE1v
ZGlmeVdyaXRlLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQotICAgICAgICAgICAgZXhwcmVzc2lvbnMu
YXBwZW5kKFdURk1vdmUobmV3UmVhZE1vZGlmeVdyaXRlKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBhdXRvKiBjb21tYSA9IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpDb21tYUV4cHJlc3Npb24+KHJl
YWRNb2RpZnlXcml0ZSwgY29kZUxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSk7Ci0gICAg
ICAgIGNvbW1hLT5zZXRUeXBlKFdURk1vdmUodHlwZSkpOwotICAgICAgICBjb21tYS0+c2V0VHlw
ZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQo
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFyaWFibGVzLmlzRW1wdHkoKSk7Ci0KLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwotCi0gICAgICAgIGlmICghbV92YXJpYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0
ZW1lbnRzKCkuaW5zZXJ0KDAsIAotICAgICAgICAgICAgICAgIG1ha2VVbmlxdWVSZWY8QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCku
Y29kZUxvY2F0aW9uKCksIFdURk1vdmUobV92YXJpYWJsZXMpKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3ZhcmlhYmxlczsK
LX07Ci0KLXZvaWQgcmVzb2x2ZVByb3BlcnRpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAv
LyBUaGUgZ29hbCBvZiB0aGlzIHBoYXNlIGlzIHR3byBhbGxvdyB0d28gdGhpbmdzOgotICAgIC8v
IDEuIEZvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbnMsIG1ldGFsIGNvZGVnZW4gc2hvdWxk
IGJlIGFsbG93ZWQgdG8gZXZhbHVhdGUKLSAgICAvLyB0aGUgYmFzZSwgYW5kIGlmIGl0J3MgYW4g
aW5kZXggZXhwcmVzc2lvbiwgdGhlIGluZGV4LCBhcyBtYW55IHRpbWVzIGFzIG5lZWRlZC4KLSAg
ICAvLyBTbyB0aGlzIHBhdGNoIGVuc3VyZXMgdGhhdCBpZiBNZXRhbCBldmFsdWF0ZXMgc3VjaCB0
aGluZ3MsIGVmZmVjdHMgYXJlbid0IHBlcmZvcm1lZAotICAgIC8vIG1vcmUgdGhhbiBvbmNlLgot
ICAgIC8vCi0gICAgLy8gMi4gRm9yIFJlYWRNb2RpZnlXcml0ZSBleHByZXNzaW9ucywgbWV0YWwg
Y29kZWdlbiBzaG91bGQgYmUgYWJsZSB0byBldmFsdWF0ZSB0aGUKLSAgICAvLyBsZWZ0VmFsdWVF
eHByZXNzaW9uIGFzIG1hbnkgdGltZXMgYXMgaXQnZCBsaWtlIHdpdGhvdXQgcGVyZm9ybWluZyB0
aGUgZWZmZWN0cyBvZgotICAgIC8vIGxlZnRWYWx1ZUV4cHJlc3Npb24gbW9yZSB0aGFuIG9uY2Uu
Ci0gICAgLy8KLSAgICAvLyBXZSBkbyB0aGVzZSB0aGluZ3MgYmVjYXVzZSBpdCdzIGNvbnZlbmll
bnQgZm9yIG1ldGFsIGNvZGVnZW4gdG8gYmUgYWJsZSB0byByZWx5IG9uCi0gICAgLy8gdGhpcyB3
aXRoIHRoZSB3YXkgaXQgc3RydWN0dXJlcyB0aGUgZ2VuZXJhdGVkIGNvZGUuCi0gICAgUHJvcGVy
dHlSZXNvbHZlciByZXNvbHZlcjsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogcHJvZ3JhbS5m
dW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAgIHJlc29sdmVyLnZpc2l0KGZ1bmN0aW9uKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlZGFhNGU4ZDhiNTA2YTM2YWZmMWIyMGE4ZTM4
YTg2Mzk4ODdmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIHJlc29sdmVQ
cm9wZXJ0aWVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTExNjU3OWMzNjA3NTNmYmJiY2U4ZjhkZWM2NWRiY2MyNWIxYjcxNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xW
aXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
Y2xhc3MgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIGZpbmFsIDogcHVibGljIFZpc2l0b3Igewot
cHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlYWNoYWJsZUZ1
bmN0aW9ucy5hZGQoJmZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb24pOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIGlm
IChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkp
Ci0gICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24qPiB0YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGTW92
ZShtX3JlYWNoYWJsZUZ1bmN0aW9ucyk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9yZWFjaGFibGVGdW5jdGlvbnM7Ci19OwotCi12b2lkIHBy
dW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkK
LXsKLSAgICBSZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMgcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25z
OwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiBmdW5jdGlv
bkRlZmluaXRpb25zID0gV1RGTW92ZShwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSk7Ci0g
ICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKLSAgICAgICAg
aWYgKGZ1bmN0aW9uLT5wYXJzaW5nTW9kZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnkpCi0gICAgICAgICAgICByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMudmlzaXQoZnVuY3Rpb24u
Z2V0KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rp
b24tPmVudHJ5UG9pbnRUeXBlKCkpOwotICAgIH0KLQotICAgIGF1dG8gcmVhY2hhYmxlRnVuY3Rp
b25zID0gcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnRha2VSZWFjaGFibGVGdW5jdGlvbnMoKTsK
LSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gbmV3RnVuY3Rp
b25EZWZpbml0aW9uczsKLSAgICBmb3IgKFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
bj4mIGVudHJ5IDogZnVuY3Rpb25EZWZpbml0aW9ucykgewotICAgICAgICBpZiAocmVhY2hhYmxl
RnVuY3Rpb25zLmNvbnRhaW5zKCZlbnRyeS5nZXQoKSkpCi0gICAgICAgICAgICBuZXdGdW5jdGlv
bkRlZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgfQotCi0gICAgcHJvZ3Jh
bS5mdW5jdGlvbkRlZmluaXRpb25zKCkgPSBXVEZNb3ZlKG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnMp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjN2M4NDY5NzVlYjYzYTgxOGU0OGY5Zjg5MDVjMGFjYzM3ZmQz
NmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07
Ci0KLXZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyhQcm9ncmFt
Jik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25D
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVj
dXJzaW9uQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZWUxMjQ2
ODBhYmJmYmFlNjU4Mjc0ZmI5YmNhNjJmM2NiYTg3N2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1
cnNpb25DaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLS8vIE1ha2VzIHN1cmUgdGhlcmUgaXMgbm8gZnVuY3Rpb24gcmVj
dXJzaW9uLgotY2xhc3MgUmVjdXJzaW9uQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsK
LXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChQcm9ncmFtJiBwcm9ncmFtKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlv
bkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICht
X2ZpbmlzaGVkVmlzaXRpbmcuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0YXJ0ZWRWaXNpdGlu
Zy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdXNlIHJlY3Vyc2lv
biBpbiB0aGUgY2FsbCBncmFwaC4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmdW5jdGlv
bkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLQotICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZmluaXNoZWRWaXNpdGluZy5h
ZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYg
KGlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkK
LSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpOwotICAgIH0KLQotICAgIEhhc2hT
ZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX3N0YXJ0ZWRWaXNpdGluZzsKLSAgICBIYXNo
U2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9maW5pc2hlZFZpc2l0aW5nOwotfTsKLQot
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJzaW9uKFByb2dyYW0mIHByb2dyYW0pCi17
Ci0gICAgUmVjdXJzaW9uQ2hlY2tlciByZWN1cnNpb25DaGVja2VyOwotICAgIHJlY3Vyc2lvbkNo
ZWNrZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJuIHJlY3Vyc2lvbkNoZWNr
ZXIucmVzdWx0KCk7Ci19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzQ3YWMyNTBlNGJjNTRiMGFiOTE5MTVkMWVmMjA4NTYzNTNlZTZmOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWN1cnNpb24oUHJvZ3Jh
bSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZl
VHlwZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVkMWM1MDdhYzU2ODAxM2ZlOTMyZmMwNWEyYzUyNjhmNDk2OWVlNzMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jbGFzcyBSZWN1cnNpdmVUeXBlQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9y
IHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBIYXNo
U2V0PEFTVDo6VHlwZSo+IG1fc3RhcnRlZFZpc2l0aW5nOwotICAgIEhhc2hTZXQ8QVNUOjpUeXBl
Kj4gbV9maW5pc2hlZFZpc2l0aW5nOwotfTsKLQotI2RlZmluZSBTVEFSVF9WSVNJVElORyh0KSBc
Ci1kbyB7IFwKLSAgICBpZiAobV9maW5pc2hlZFZpc2l0aW5nLmNvbnRhaW5zKHQpKSBcCi0gICAg
ICAgIHJldHVybjsgXAotICAgIGF1dG8gcmVzdWx0U3RhcnRlZFZpc2l0aW5nID0gbV9zdGFydGVk
VmlzaXRpbmcuYWRkKHQpOyBcCi0gICAgaWYgKCFyZXN1bHRTdGFydGVkVmlzaXRpbmcuaXNOZXdF
bnRyeSkgeyBcCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVjbGFyZSByZWN1cnNp
dmUgdHlwZXMuIiwgKHQpLT5jb2RlTG9jYXRpb24oKSkpOyBcCi0gICAgICAgIHJldHVybjsgXAot
ICAgIH0gXAotfSB3aGlsZSAoZmFsc2UpOwotCi0jZGVmaW5lIEVORF9WSVNJVElORyh0KSBcCi1k
byB7IFwKLSAgICBhdXRvIHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcgPSBtX2ZpbmlzaGVkVmlzaXRp
bmcuYWRkKHQpOyBcCi0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHRGaW5pc2hlZFZpc2l0aW5nLCBy
ZXN1bHRGaW5pc2hlZFZpc2l0aW5nLmlzTmV3RW50cnkpOyBcCi19IHdoaWxlIChmYWxzZSk7Ci0K
LXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5
cGVEZWZpbml0aW9uKQotewotICAgIFNUQVJUX1ZJU0lUSU5HKCZ0eXBlRGVmaW5pdGlvbik7Ci0K
LSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7Ci0KLSAgICBFTkRfVklTSVRJTkco
JnR5cGVEZWZpbml0aW9uKTsKLX0KLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQo
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQotewotICAgIFNU
QVJUX1ZJU0lUSU5HKCZzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLQotICAgIFZpc2l0b3I6OnZpc2l0
KHN0cnVjdHVyZURlZmluaXRpb24pOwotCi0gICAgRU5EX1ZJU0lUSU5HKCZzdHJ1Y3R1cmVEZWZp
bml0aW9uKTsKLX0KLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBl
UmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAgIFNUQVJUX1ZJU0lUSU5HKCZ0eXBlUmVm
ZXJlbmNlKTsKLQotICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50
eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJndW1lbnQp
OwotICAgIGlmICh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkpIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYxIFNob3VsZG4ndCB3
ZSBrbm93IGJ5IG5vdyB3aGV0aGVyIHRoZSB0eXBlIGhhcyBiZWVuIHJlc29sdmVkIG9yIG5vdD8K
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
OwotCi0gICAgRU5EX1ZJU0lUSU5HKCZ0eXBlUmVmZXJlbmNlKTsKLX0KLQotdm9pZCBSZWN1cnNp
dmVUeXBlQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikKLXsKLX0KLQotRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJzaXZlVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSAgICBSZWN1cnNpdmVUeXBlQ2hlY2tlciByZWN1cnNpdmVUeXBlQ2hlY2tlcjsKLSAgICBmb3Ig
KGF1dG8mIHR5cGVEZWZpbml0aW9uIDogcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKSkKLSAgICAg
ICAgcmVjdXJzaXZlVHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0aW9u
KTsKLSAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gOiBwcm9ncmFtLnN0cnVjdHVy
ZURlZmluaXRpb25zKCkpCi0gICAgICAgIHJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JB
bmRWaXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICByZXR1cm4gcmVjdXJzaXZlVHlwZUNo
ZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlw
ZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVj
dXJzaXZlVHlwZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxYWMw
ZjU3MTMwNGJiZWFhODgxNzUwZDBkZmMyMDYyZTdkMjQ4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
UHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJzaXZlVHlwZXMoUHJv
Z3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2
ZU92ZXJsb2FkSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZTM2YzQ3MjU4Njk2NDgyOThlMjg1NTZhMDFjNDM3M2M3NmI0M2U0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgi
Ci0jaW5jbHVkZSA8bGltaXRzPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLXN0YXRpYyB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24mIGNhbmRpZGF0ZSwgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzKQotewotICAgIHVuc2lnbmVkIGNvbnZlcnNp
b25Db3N0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbmRpZGF0ZS5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29udmVyc2lvbkNvc3QgKz0gYXJndW1lbnRU
eXBlc1tpXS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSwg
WyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY29udmVyc2lvbkNvc3QoKmNhbmRpZGF0ZS5wYXJhbWV0
ZXJzKClbaV0tPnR5cGUoKSk7Ci0gICAgICAgIH0pKTsKLSAgICB9Ci0gICAgLy8gVGhlIHJldHVy
biB0eXBlIGNhbiBuZXZlciBiZSBhIGxpdGVyYWwgdHlwZSwgc28gaXRzIGNvbnZlcnNpb24gY29z
dCBpcyBhbHdheXMgMC4KLSAgICByZXR1cm4gY29udmVyc2lvbkNvc3Q7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUeXBlS2luZD4KLXN0YXRpYyBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJl
c29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgVHlw
ZUtpbmQqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi17Ci0gICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwg
MT4gY2FuZGlkYXRlczsKLSAgICBmb3IgKGF1dG8mIHBvc3NpYmxlRnVuY3Rpb24gOiBwb3NzaWJs
ZUZ1bmN0aW9ucykgewotICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5lbnRyeVBv
aW50VHlwZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChuYW1lU3BhY2Ug
PT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICAgICAgaWYgKHBv
c3NpYmxlRnVuY3Rpb24uZ2V0KCkubmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5k
YXJkTGlicmFyeSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IEFT
VDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgJiYgcG9zc2libGVGdW5jdGlvbi5nZXQoKS5u
YW1lU3BhY2UoKSAhPSBuYW1lU3BhY2UpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGluZmVyVHlwZXNGb3JDYWxsKHBvc3NpYmxlRnVuY3Rpb24uZ2V0
KCksIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAgICAgIGNhbmRpZGF0
ZXMuYXBwZW5kKHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IG1pbmltdW1Db252ZXJzaW9uQ29zdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpCi0gICAgICAgIG1p
bmltdW1Db252ZXJzaW9uQ29zdCA9IHN0ZDo6bWluKG1pbmltdW1Db252ZXJzaW9uQ29zdCwgY29u
dmVyc2lvbkNvc3QoY2FuZGlkYXRlLmdldCgpLCBhcmd1bWVudFR5cGVzKSk7Ci0KLSAgICBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBt
aW5pbXVtQ29zdENhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRh
dGVzKSB7Ci0gICAgICAgIGlmIChjb252ZXJzaW9uQ29zdChjYW5kaWRhdGUuZ2V0KCksIGFyZ3Vt
ZW50VHlwZXMpID09IG1pbmltdW1Db252ZXJzaW9uQ29zdCkKLSAgICAgICAgICAgIG1pbmltdW1D
b3N0Q2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICBpZiAobWluaW11
bUNvc3RDYW5kaWRhdGVzLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gJm1pbmltdW1Db3N0
Q2FuZGlkYXRlc1swXS5nZXQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5j
dGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJn
dW1lbnRUeXBlcywgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotewotICAgIHJldHVybiByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZEltcGwocG9zc2libGVGdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMs
IHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlKj4obnVsbHB0ciksIG5hbWVTcGFjZSk7Ci19Ci0K
LUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBv
c3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdU
eXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNU
OjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotewotICAgIHJldHVybiByZXNvbHZlRnVuY3Rpb25PdmVy
bG9hZEltcGwocG9zc2libGVGdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBl
LCBuYW1lU3BhY2UpOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5j
dGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6OlVubmFtZWRUeXBl
KiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotewotICAgIHJldHVy
biByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwocG9zc2libGVGdW5jdGlvbnMsIGFyZ3VtZW50
VHlwZXMsIGNhc3RSZXR1cm5UeXBlLCBuYW1lU3BhY2UpOwotfQotCi1BU1Q6Ok5hbWVkVHlwZSog
cmVzb2x2ZVR5cGVPdmVybG9hZEltcGwoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpOYW1lZFR5cGU+LCAxPiYgcG9zc2libGVUeXBlcywgQVNUOjpUeXBlQXJndW1lbnRzJiB0eXBl
QXJndW1lbnRzKQotewotICAgIEFTVDo6TmFtZWRUeXBlKiByZXN1bHQgPSBudWxscHRyOwotICAg
IGZvciAoYXV0byYgcG9zc2libGVUeXBlIDogcG9zc2libGVUeXBlcykgewotICAgICAgICBpZiAo
aW5mZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMocG9zc2libGVUeXBlLCB0eXBlQXJndW1lbnRzKSkg
ewotICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgICAgIHJlc3VsdCA9ICZzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KHBv
c3NpYmxlVHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDMyMmU4NDRkZjNmYjhiYWFhODY5MDg4OGY3
ODkyYTExNjczOWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJs
b2FkSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xSZXNvbHZpbmdUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNs
dWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
RnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hbWVkVHlwZTsKLQotfQotCi1BU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0
aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1
bWVudFR5cGVzLCBBU1Q6Ok5hbWVTcGFjZSk7Ci1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJl
c29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5h
bWVkVHlwZSogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlKTsKLUFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25z
LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50
VHlwZXMsIEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSk7
Ci1BU1Q6Ok5hbWVkVHlwZSogcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwoVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiYsIEFTVDo6VHlwZUFyZ3VtZW50cyYp
OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdU
eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZWE0NTdhODUzMjBiOTlkOTk5
ZmQxOTZmYjAxNjg3NGQ3NmQ1MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZpbmdUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXNvbHZhYmxlVHlwZTsKLQotfQotCi0vLyBU
aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIHR5cGUgb2Ygb25lIEFTVCBub2RlIHNob3VsZCBtYXRj
aCB0aGUgdHlwZSBvZiBhbm90aGVyIEFTVCBub2RlLgotLy8gT25lIGV4YW1wbGUgb2YgdGhpcyBp
cyB0aGUgY29tbWEgZXhwcmVzc2lvbiAtIHRoZSB0eXBlIG9mIHRoZSBjb21tYSBleHByZXNzaW9u
IHNob3VsZCBtYXRjaCB0aGUgdHlwZSBvZiBpdHMgbGFzdCBpdGVtLgotLy8gSWYgdGhpcyB0eXBl
IGhhcHBlbnMgdG8gYmUgYSByZXNvbHZhYmxlIHR5cGUsIGl0IHdpbGwgZ2V0IHJlc29sdmVkIGxh
dGVyLiBXaGVuIHRoYXQgaGFwcGVucywKLS8vIGJvdGggb2YgdGhlIEFTVCBub2RlcyBoYXZlIHRv
IGJlIHJlc29sdmVkIHRvIHRoZSByZXN1bHQgdHlwZS4gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEK
LS8vIHJlZmVyZW5jZSBjb3VudGVkIHdyYXBwZXIgYXJvdW5kIGEgcmVzb2x2YWJsZSB0eXBlIHNv
IGJvdGggZW50cmllcyBpbiB0aGUgdHlwZSBtYXAgY2FuIHBvaW50Ci0vLyB0byB0aGUgc2FtZSBy
ZXNvbHZhYmxlIHR5cGUsIHNvIHJlc29sdmluZyBpdCBvbmNlIHJlc29sdmVzIGJvdGggdGhlIGVu
dHJpZXMgaW4gdGhlIG1hcC4KLS8vIFRoaXMgY2xhc3MgY291bGQgcHJvYmFibHkgYmUgcmVwcmVz
ZW50ZWQgYXMKLS8vICJjbGFzcyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6UmVzb2x2YWJsZVR5cGU+LCBwdWJsaWMgUmVmQ291bnRl
ZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSB7fSIKLS8vIGJ1dCBJIGRpZG4ndCB3YW50IHRvIGJl
IHRvbyBjbGV2ZXIuCi1jbGFzcyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB7Ci1wdWJsaWM6Ci0gICAgUmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi0gICAg
ICAgIDogbV9yZXNvbHZhYmxlVHlwZSgmcmVzb2x2YWJsZVR5cGUpCi0gICAgewotICAgIH0KLQot
ICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGNvbnN0IFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
JikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UoUmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UmJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmIG9wZXJh
dG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOwotICAgIFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmJikg
PSBkZWxldGU7Ci0KLSAgICBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSgpIHsg
cmV0dXJuICptX3Jlc29sdmFibGVUeXBlOyB9Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpSZXNvbHZh
YmxlVHlwZSogbV9yZXNvbHZhYmxlVHlwZTsKLX07Ci0KLS8vIFRoaXMgaXMgYSB0aGluIHdyYXBw
ZXIgYXJvdW5kIGEgVmFyaWFudC4KLS8vIEl0IGV4aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRo
YXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCi0vLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdy
YXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLWNsYXNzIFJlc29sdmluZ1R5cGUgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFJlc29sdmluZ1R5cGUoKQot
ICAgICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPigpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB2KQot
ICAgICAgICA6IG1faW5uZXIoV1RGTW92ZSh2KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2
aW5nVHlwZShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHYpCi0gICAgICAgIDogbV9p
bm5lcihXVEZNb3ZlKHYpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKGNvbnN0
IFJlc29sdmluZ1R5cGUmKSA9IGRlbGV0ZTsKLSAgICBSZXNvbHZpbmdUeXBlKFJlc29sdmluZ1R5
cGUmJiBvdGhlcikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUob3RoZXIubV9pbm5lcikpCi0g
ICAgewotICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZp
bmdUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2aW5nVHlwZSYgb3BlcmF0b3I9KFJlc29sdmlu
Z1R5cGUmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIG1faW5uZXIgPSBXVEZNb3ZlKG90aGVyLm1f
aW5uZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVk
VHlwZSogZ2V0VW5uYW1lZFR5cGUoKQotICAgIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEFTVDo6VW5uYW1lZFR5cGU+PihtX2lubmVyKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4+KG1faW5uZXIpLnB0cigpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlz
aXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6
OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJpYW50PFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPj4mPigpKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW5uZXIpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBWYXJpYW50PFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgUmVmUHRyPFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlPj4gbV9pbm5lcjsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTY29wZWRTZXRBZGRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTY29wZWRTZXRBZGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxMjNjMTE1ZTFjMTRiYTk3ZDc1Y2QwYTE4ZmQxNDgzMWExMDViOTljLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
U2NvcGVkU2V0QWRkZXIgewotcHVibGljOgotICAgIFNjb3BlZFNldEFkZGVyKEhhc2hTZXQ8VD4m
IHNldCwgVCYmIGl0ZW0pCi0gICAgICAgIDogbV9zZXQoc2V0KQotICAgICAgICAsIG1faXRlbShX
VEZNb3ZlKGl0ZW0pKQotICAgIHsKLSAgICAgICAgbV9pc05ld0VudHJ5ID0gc3RhdGljX2Nhc3Q8
Ym9vbD4obV9zZXQuYWRkKG1faXRlbSkpOwotICAgIH0KLQotICAgIH5TY29wZWRTZXRBZGRlcigp
Ci0gICAgewotICAgICAgICBpZiAoIW1faXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgYXV0byBzdWNjZXNzID0gbV9zZXQucmVtb3ZlKG1faXRlbSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgfQotCi0gICAgYm9vbCBpc05ld0Vu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc05ld0VudHJ5OyB9Ci0KLXByaXZhdGU6Ci0gICAgSGFz
aFNldDxUPiYgbV9zZXQ7Ci0gICAgVCBtX2l0ZW07Ci0gICAgYm9vbCBtX2lzTmV3RW50cnk7Ci19
OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRj
aGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50
aWNNYXRjaGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYyMDg4MmU5MDU1
MzEyNjRhMDc3MzUxZWU0OTA1MDE5YjQyZjg1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFNlbWFudGljTWF0Y2hlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGlj
TWF0Y2hlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hM
U0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMu
aCIKLSNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1zdGF0aWMgYm9vbCBtYXRjaE1vZGUoQmluZGluZzo6QmluZGluZ0RldGFpbHMgYmluZGluZ1R5
cGUsIEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZSBtb2RlKQotewotICAgIHJldHVybiBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaWZvcm1CdWZmZXJCaW5kaW5nKSAtPiBib29s
IHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpC
dWZmZXI7Ci0gICAgfSwgWyZdKFNhbXBsZXJCaW5kaW5nKSAtPiBib29sIHsKLSAgICAgICAgcmV0
dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpTYW1wbGVyOwotICAgIH0s
IFsmXShUZXh0dXJlQmluZGluZykgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFT
VDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VGV4dHVyZTsKLSAgICB9LCBbJl0oU3RvcmFnZUJ1
ZmZlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291
cmNlU2VtYW50aWM6Ok1vZGU6OlVub3JkZXJlZEFjY2Vzc1ZpZXc7Ci0gICAgfSksIGJpbmRpbmdU
eXBlKTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90
Pj4gbWF0Y2hSZXNvdXJjZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZW50cnlQb2ludEl0ZW1z
LCBMYXlvdXQmIGxheW91dCwgU2hhZGVyU3RhZ2Ugc2hhZGVyU3RhZ2UpCi17Ci0gICAgSGFzaE1h
cDxCaW5kaW5nKiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRI
YXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4g
aXRlbUluZGljZXM7Ci0gICAgZm9yIChhdXRvJiBiaW5kR3JvdXAgOiBsYXlvdXQpIHsKLSAgICAg
ICAgYXV0byBzcGFjZSA9IGJpbmRHcm91cC5uYW1lOwotICAgICAgICBmb3IgKGF1dG8mIGJpbmRp
bmcgOiBiaW5kR3JvdXAuYmluZGluZ3MpIHsKLSAgICAgICAgICAgIGlmICghYmluZGluZy52aXNp
YmlsaXR5LmNvbnRhaW5zKHNoYWRlclN0YWdlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlQb2ludEl0ZW1zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgaXRlbSA9IGVudHJ5UG9pbnRJdGVtc1tp
XTsKLSAgICAgICAgICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAg
ICAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlJlc291cmNlU2Vt
YW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgYXV0byYgcmVzb3VyY2VTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6UmVzb3VyY2VT
ZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICAgICAgICAgIGlmICghbWF0Y2hNb2RlKGJpbmRp
bmcuYmluZGluZywgcmVzb3VyY2VTZW1hbnRpYy5tb2RlKCkpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoYmluZGluZy5leHRlcm5hbE5hbWUgIT0g
cmVzb3VyY2VTZW1hbnRpYy5pbmRleCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBpZiAoc3BhY2UgIT0gcmVzb3VyY2VTZW1hbnRpYy5zcGFjZSgpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KCZiaW5kaW5nLCBpKTsKLSAgICAgICAgICAgICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVudHJ5UG9pbnRJdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBpdGVtID0gZW50
cnlQb2ludEl0ZW1zW2ldOwotICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGlj
OwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpSZXNvdXJjZVNlbWFu
dGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpdGVt
SW5kaWNlcy5jb250YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgbWF0Y2hJbnB1dHNP
dXRwdXRzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIHZlcnRleE91dHB1dHMsIFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4mIGZyYWdtZW50SW5wdXRzKQotewotICAgIGZvciAoYXV0byYgZnJhZ21lbnRJ
bnB1dCA6IGZyYWdtZW50SW5wdXRzKSB7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmZyYWdtZW50SW5wdXQuc2VtYW50aWMpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8mIGZyYWdtZW50SW5wdXRTdGFnZUlu
T3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmZyYWdtZW50
SW5wdXQuc2VtYW50aWMpOwotICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZv
ciAoYXV0byYgdmVydGV4T3V0cHV0IDogdmVydGV4T3V0cHV0cykgewotICAgICAgICAgICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigqdmVydGV4
T3V0cHV0LnNlbWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGF1dG8mIHZlcnRleE91dHB1dFN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljPigqdmVydGV4T3V0cHV0LnNlbWFudGljKTsKLSAgICAgICAgICAgIGlm
IChmcmFnbWVudElucHV0U3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkgPT0gdmVydGV4T3V0cHV0
U3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hl
cygqZnJhZ21lbnRJbnB1dC51bm5hbWVkVHlwZSwgKnZlcnRleE91dHB1dC51bm5hbWVkVHlwZSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghZm91bmQpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg
Ym9vbCBpc0FjY2VwdGFibGVGb3JtYXQoVmVydGV4Rm9ybWF0IHZlcnRleEZvcm1hdCwgQVNUOjpV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAg
c3dpdGNoICh2ZXJ0ZXhGb3JtYXQpIHsKLSAgICBjYXNlIFZlcnRleEZvcm1hdDo6RmxvYXRSMzJH
MzJCMzJBMzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmZsb2F0NFR5cGUoKSk7Ci0gICAgY2FzZSBWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyQjMyOgot
ICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBl
KCkpOwotICAgIGNhc2UgVmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMjoKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQyVHlwZSgpKTsKLSAgICBkZWZh
dWx0OgotICAgICAgICBBU1NFUlQodmVydGV4Rm9ybWF0ID09IFZlcnRleEZvcm1hdDo6RmxvYXRS
MzIpOwotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9h
dFR5cGUoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFZlcnRl
eEF0dHJpYnV0ZSosIHNpemVfdD4+IG1hdGNoVmVydGV4QXR0cmlidXRlcyhWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiB2ZXJ0ZXhJbnB1dHMsIFZlcnRleEF0dHJpYnV0ZXMmIHZlcnRleEF0dHJpYnV0
ZXMsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1
dGUqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBIYXNoU2V0PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6
ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiBpdGVtSW5k
aWNlczsKLSAgICBmb3IgKGF1dG8mIHZlcnRleEF0dHJpYnV0ZSA6IHZlcnRleEF0dHJpYnV0ZXMp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0ZXhJbnB1dHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSB2ZXJ0ZXhJbnB1dHNbaV07Ci0gICAgICAg
ICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICAgICAgaWYgKCFX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYykp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvJiBzdGFnZUluT3V0
U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpOwot
ICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpICE9IHZlcnRleEF0dHJp
YnV0ZS5zaGFkZXJMb2NhdGlvbikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KHZlcnRleEF0dHJpYnV0ZS52ZXJ0ZXhGb3JtYXQs
ICppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICAgICAgcmVzdWx0LmFkZCgmdmVydGV4QXR0cmlidXRlLCBp
KTsKLSAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChpKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVydGV4SW5wdXRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8mIGl0ZW0gPSB2ZXJ0ZXhJbnB1dHNbaV07Ci0gICAgICAgIGF1dG8mIHNlbWFu
dGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmICghaXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQs
IEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBi
b29sIGlzQ29sb3IpCi17Ci0gICAgaWYgKGlzQ29sb3IpIHsKLSAgICAgICAgc3dpdGNoICh0ZXh0
dXJlRm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjhVbm9ybToKLSAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSOFVub3JtU3JnYjoKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSOFNub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIxNlVub3JtOgot
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIxNlNub3JtOgotICAgICAgICBjYXNlIFRleHR1
cmVGb3JtYXQ6OlIxNkZsb2F0OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIzMkZsb2F0
OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxv
YXRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFVub3JtOgotICAgICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFVub3JtU3JnYjoKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSRzhTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzE2VW5vcm06
Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNlNub3JtOgotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlJHMTZGbG9hdDoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzMy
RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5mbG9hdDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkI1RzZSNVVub3Jt
OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTFCMTBGbG9hdDoKLSAgICAgICAgICAg
IHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0g
ICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0
dXJlRm9ybWF0OjpSR0JBOFVub3JtU3JnYjoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpC
R1JBOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm1TcmdiOgot
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4U25vcm06Ci0gICAgICAgIGNhc2UgVGV4
dHVyZUZvcm1hdDo6UkdCMTBBMlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJH
QkExNlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkExNlNub3JtOgotICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkExNkZsb2F0OgotICAgICAgICBjYXNlIFRleHR1
cmVGb3JtYXQ6OlJHQkEzMkZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSMzJVaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjMyU2lu
dDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmlu
dFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkczMlVpbnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50MlR5cGUoKSk7
Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkczMlNpbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5pbnQyVHlwZSgpKTsKLSAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJVaW50OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNo
ZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludDRUeXBlKCkpOwotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlJHQkEzMlNpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5h
bWVkVHlwZSwgaW50cmluc2ljcy5pbnQ0VHlwZSgpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNoQ29sb3JB
dHRhY2htZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIFZlY3Rv
cjxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1lbnREZXNjcmlwdG9ycywgSW50cmluc2lj
cyYgaW50cmluc2ljcykKLXsKLSAgICBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6
ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7Ci0g
ICAgZm9yIChhdXRvJiBhdHRhY2htZW50RGVzY3JpcHRvciA6IGF0dGFjaG1lbnREZXNjcmlwdG9y
cykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYWdtZW50T3V0cHV0cy5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGZyYWdtZW50T3V0cHV0c1tpXTsK
LSAgICAgICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNl
bWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8mIHN0
YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1h
bnRpYyk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkgIT0gYXR0
YWNobWVudERlc2NyaXB0b3IubmFtZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KGF0dGFjaG1lbnREZXNjcmlwdG9yLnRleHR1
cmVGb3JtYXQsICppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLCB0cnVlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgcmVzdWx0LmFkZCgmYXR0
YWNobWVudERlc2NyaXB0b3IsIGkpOwotICAgICAgICAgICAgaXRlbUluZGljZXMuYWRkKGkpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFnbWVudE91
dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IGZyYWdtZW50T3V0cHV0
c1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1h
bnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5j
b250YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgbWF0Y2hEZXB0aEF0dGFjaG1lbnQo
VmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRPdXRwdXRzLCBzdGQ6Om9wdGlvbmFsPEF0
dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIElu
dHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9p
ZihmcmFnbWVudE91dHB1dHMuYmVnaW4oKSwgZnJhZ21lbnRPdXRwdXRzLmVuZCgpLCBbJl0oRW50
cnlQb2ludEl0ZW0mIGl0ZW0pIHsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1h
bnRpYzsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNl
bWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGF1
dG8mIGJ1aWx0SW5TZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPihzZW1h
bnRpYyk7Ci0gICAgICAgIHJldHVybiBidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVwdGg7Ci0gICAgfSk7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IGZyYWdtZW50T3V0cHV0cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNT
RVJUKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvci0+bmFtZSk7Ci0gICAgICAgIHJl
dHVybiBpc0FjY2VwdGFibGVGb3JtYXQoZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3It
PnRleHR1cmVGb3JtYXQsICppdGVyYXRvci0+dW5uYW1lZFR5cGUsIGludHJpbnNpY3MsIGZhbHNl
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRS
ZW5kZXJTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dyYW0sIFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLCBib29sIGRpc3RpbmN0
RnJhZ21lbnRTaGFkZXIsIGJvb2wgZnJhZ21lbnRTaGFkZXJFeGlzdHMpCi17Ci0gICAgYXV0byB2
ZXJ0ZXhGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6
Ok5hbWVTcGFjZTEpOwotICAgIGlmICh2ZXJ0ZXhGdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIXZl
cnRleEZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbj4odmVydGV4RnVuY3Rpb25zWzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvJiB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNh
c3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSk7Ci0g
ICAgYXV0byB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRl
bXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwotICAgIGlm
ICghdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIGF1dG8gdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyh2
ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OlZlcnRleCk7Ci0gICAgaWYgKCF2ZXJ0ZXhTaGFkZXJS
ZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIG1hdGNo
ZWRWZXJ0ZXhBdHRyaWJ1dGVzID0gbWF0Y2hWZXJ0ZXhBdHRyaWJ1dGVzKHZlcnRleFNoYWRlckVu
dHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4QXR0
cmlidXRlcywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwotICAgIGlmICghbWF0Y2hlZFZlcnRleEF0
dHJpYnV0ZXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFmcmFnbWVu
dFNoYWRlckV4aXN0cykKLSAgICAgICAgcmV0dXJuIHt7ICZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
LCBudWxscHRyLCAqdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBFbnRyeVBvaW50SXRlbXMo
KSwgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+KCks
ICptYXRjaGVkVmVydGV4QXR0cmlidXRlcywgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvcios
IHNpemVfdD4oKSB9fTsKLQotICAgIGF1dG8gZnJhZ21lbnROYW1lU3BhY2UgPSBkaXN0aW5jdEZy
YWdtZW50U2hhZGVyID8gQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTIgOiBBU1Q6Ok5hbWVTcGFj
ZTo6TmFtZVNwYWNlMTsKLSAgICBhdXRvIGZyYWdtZW50RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1l
Q29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZnJhZ21lbnRF
bnRyeVBvaW50TmFtZSwgZnJhZ21lbnROYW1lU3BhY2UpOwotICAgIGlmIChmcmFnbWVudEZ1bmN0
aW9ucy5zaXplKCkgIT0gMSB8fCAhZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2lu
dFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZyYWdtZW50RnVuY3Rpb25z
WzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvJiBmcmFn
bWVudFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4o
ZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpOwotICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJFbnRy
eVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCks
IGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIGZyYWdt
ZW50U2hhZGVyUmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyhmcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFk
ZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlmICghZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIW1hdGNoSW5wdXRzT3V0cHV0
cyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIGZyYWdtZW50U2hhZGVyRW50
cnlQb2ludEl0ZW1zLT5pbnB1dHMpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IGF1dG8gbWF0Y2hlZENvbG9yQXR0YWNobWVudHMgPSBtYXRjaENvbG9yQXR0YWNobWVudHMoZnJh
Z21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvci5hdHRhY2htZW50RGVzY3JpcHRvcnMsIHBy
b2dyYW0uaW50cmluc2ljcygpKTsKLSAgICBpZiAoIW1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghbWF0Y2hEZXB0aEF0dGFjaG1l
bnQoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvciwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIHJldHVybiB7eyAmdmVydGV4U2hhZGVyRW50cnlQb2ludCwgJmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludCwgKnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsICpmcmFn
bWVudFNoYWRlclJlc291cmNlTWFwLCAqbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMsICptYXRjaGVk
Q29sb3JBdHRhY2htZW50cyB9fTsKLX0KLQotc3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNl
bWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIGZ1bmN0
aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5lbnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwot
ICAgIGlmIChmdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZ1bmN0aW9uc1swXS5nZXQoKS5lbnRy
eVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBd
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvJiBlbnRyeVBv
aW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZ1bmN0aW9uc1swXS5nZXQo
KSk7Ci0gICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJv
Z3JhbS5pbnRyaW5zaWNzKCksIGVudHJ5UG9pbnQpOwotICAgIGlmICghZW50cnlQb2ludEl0ZW1z
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIEFTU0VSVChlbnRyeVBvaW50SXRl
bXMtPm91dHB1dHMuaXNFbXB0eSgpKTsKLSAgICBhdXRvIHJlc291cmNlTWFwID0gbWF0Y2hSZXNv
dXJjZXMoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
bGF5b3V0LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7Ci0gICAgaWYgKCFyZXNvdXJjZU1hcCkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4ge3sgJmVudHJ5UG9pbnQsICpl
bnRyeVBvaW50SXRlbXMsICpyZXNvdXJjZU1hcCB9fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hM
U0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTZW1hbnRpY01hdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZkYmY2YzY3M2QzZGViNmM3ZmMxZjMyMzllYThiMGZkMGEzMjc4NzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5j
bHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBy
b2dyYW07Ci0KLXN0cnVjdCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzIHsKLSAgICBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiogdmVydGV4U2hhZGVyOwotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
KiBmcmFnbWVudFNoYWRlcjsKLSAgICBFbnRyeVBvaW50SXRlbXMgdmVydGV4U2hhZGVyRW50cnlQ
b2ludEl0ZW1zOwotICAgIEVudHJ5UG9pbnRJdGVtcyBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJ
dGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHZlcnRleFNoYWRlclJlc291cmNl
TWFwOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4gZnJhZ21lbnRTaGFkZXJSZXNvdXJj
ZU1hcDsKLSAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4gbWF0Y2hlZFZlcnRl
eEF0dHJpYnV0ZXM7Ci0gICAgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4g
bWF0Y2hlZENvbG9yQXR0YWNobWVudHM7Ci19OwotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRSZW5k
ZXJTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mLCBSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImLCBib29sIGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIsIGJvb2wgZnJhZ21lbnRTaGFkZXJF
eGlzdHMpOwotCi1zdHJ1Y3QgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MgewotICAgIEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uKiBzaGFkZXI7Ci0gICAgRW50cnlQb2ludEl0ZW1zIGVudHJ5UG9pbnRJ
dGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHJlc291cmNlTWFwOwotfTsKLQot
c3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJv
Z3JhbSYsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKLQotfSAvLyBuYW1lc3BhY2UgV0hM
U0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTdGFuZGFyZExpYnJhcnkudHh0IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxODdjMDU2MjI2N2E3YmJjMWQ1YjRkYjliODkzOWY1ZGY3MDFhYTBjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDE4MDAzICswLDAgQEAKLS8vIFRoaXMgd2FzIGF1dG9nZW5lcmF0ZWQgZnJvbSBHZW5lcmF0
ZV9TdGFuZGFyZF9MaWJyYXJ5LmpzLgotLy8gVGhpcyBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVu
IHByb2Nlc3NlZCBzdWNoIHRoYXQgZnVuY3Rpb25zIHdoaWNoIHNoYXJlIGEgbmFtZSBhcmUgbmV4
dCB0byBlYWNoIG90aGVyLAotLy8gYW5kIGJlZm9yZSBlYWNoIGdyb3VwIG9mIGZ1bmN0aW9ucywg
dGhlcmUncyBhIHByZWZpeCB0aGF0IGhhcyB0byBiZSBpbiBhIHBhcnRpY3VsYXIgZm9ybS4KLS8v
IFRoZSBXZWJLaXQgYnVpbGQgcHJvY2VzcyBleHBsb2l0cyB0aGlzIHN0cnVjdHVyZSB0byBidWls
ZCBhIG1hcCBvZiB3aGljaCBmdW5jdGlvbiBuYW1lIGNvcnJlc3BvbmRzIHRvIHdoaWNoCi0vLyBw
YXJ0IG9mIHRoaXMgZmlsZS4gVGhlbiwgd2hlbiB3ZSBwYXJzZSBXSExTTCBwcm9ncmFtcywgd2Ug
Y2FuIG9ubHkgcGFyc2UgdGhlIHBpZWNlcyBvZiB0aGlzIHN0YW5kYXJkIGxpYnJhcnkKLS8vIHdo
aWNoIGNvcnJlc3BvbmQgdG8gZnVuY3Rpb25zIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhl
IHVzZXIgcHJvZ3JhbS4KLQotbmF0aXZlIHR5cGVkZWYgdm9pZDsKLW5hdGl2ZSB0eXBlZGVmIGJv
b2w7Ci1uYXRpdmUgdHlwZWRlZiB1aW50OwotbmF0aXZlIHR5cGVkZWYgaW50OwotbmF0aXZlIHR5
cGVkZWYgZmxvYXQ7Ci1uYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50OwotbmF0aXZlIHR5cGVkZWYg
YXRvbWljX3VpbnQ7Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgMj47Ci10eXBlZGVmIGJv
b2wyID0gdmVjdG9yPGJvb2wsIDI+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDM+Owot
dHlwZWRlZiBib29sMyA9IHZlY3Rvcjxib29sLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxi
b29sLCA0PjsKLXR5cGVkZWYgYm9vbDQgPSB2ZWN0b3I8Ym9vbCwgND47Ci1uYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8dWludCwgMj47Ci10eXBlZGVmIHVpbnQyID0gdmVjdG9yPHVpbnQsIDI+OwotbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDM+OwotdHlwZWRlZiB1aW50MyA9IHZlY3Rvcjx1aW50
LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCA0PjsKLXR5cGVkZWYgdWludDQgPSB2
ZWN0b3I8dWludCwgND47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCAyPjsKLXR5cGVkZWYg
aW50MiA9IHZlY3RvcjxpbnQsIDI+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgMz47Ci10
eXBlZGVmIGludDMgPSB2ZWN0b3I8aW50LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQs
IDQ+OwotdHlwZWRlZiBpbnQ0ID0gdmVjdG9yPGludCwgND47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8ZmxvYXQsIDI+OwotdHlwZWRlZiBmbG9hdDIgPSB2ZWN0b3I8ZmxvYXQsIDI+OwotbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAzPjsKLXR5cGVkZWYgZmxvYXQzID0gdmVjdG9yPGZsb2F0
LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgND47Ci10eXBlZGVmIGZsb2F0NCA9
IHZlY3RvcjxmbG9hdCwgND47Ci0KLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMiwgMj47
Ci10eXBlZGVmIGZsb2F0MngyID0gbWF0cml4PGZsb2F0LCAyLCAyPjsKLW5hdGl2ZSB0eXBlZGVm
IG1hdHJpeDxmbG9hdCwgMiwgMz47Ci10eXBlZGVmIGZsb2F0MngzID0gbWF0cml4PGZsb2F0LCAy
LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMiwgND47Ci10eXBlZGVmIGZsb2F0
Mng0ID0gbWF0cml4PGZsb2F0LCAyLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwg
MywgMj47Ci10eXBlZGVmIGZsb2F0M3gyID0gbWF0cml4PGZsb2F0LCAzLCAyPjsKLW5hdGl2ZSB0
eXBlZGVmIG1hdHJpeDxmbG9hdCwgMywgMz47Ci10eXBlZGVmIGZsb2F0M3gzID0gbWF0cml4PGZs
b2F0LCAzLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMywgND47Ci10eXBlZGVm
IGZsb2F0M3g0ID0gbWF0cml4PGZsb2F0LCAzLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxm
bG9hdCwgNCwgMj47Ci10eXBlZGVmIGZsb2F0NHgyID0gbWF0cml4PGZsb2F0LCA0LCAyPjsKLW5h
dGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgNCwgMz47Ci10eXBlZGVmIGZsb2F0NHgzID0gbWF0
cml4PGZsb2F0LCA0LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgNCwgND47Ci10
eXBlZGVmIGZsb2F0NHg0ID0gbWF0cml4PGZsb2F0LCA0LCA0PjsKLQotbmF0aXZlIHR5cGVkZWYg
bWF0cml4PGJvb2wsIDIsIDI+OwotdHlwZWRlZiBib29sMngyID0gbWF0cml4PGJvb2wsIDIsIDI+
OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDIsIDM+OwotdHlwZWRlZiBib29sMngzID0g
bWF0cml4PGJvb2wsIDIsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDIsIDQ+Owot
dHlwZWRlZiBib29sMng0ID0gbWF0cml4PGJvb2wsIDIsIDQ+OwotbmF0aXZlIHR5cGVkZWYgbWF0
cml4PGJvb2wsIDMsIDI+OwotdHlwZWRlZiBib29sM3gyID0gbWF0cml4PGJvb2wsIDMsIDI+Owot
bmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDMsIDM+OwotdHlwZWRlZiBib29sM3gzID0gbWF0
cml4PGJvb2wsIDMsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDMsIDQ+OwotdHlw
ZWRlZiBib29sM3g0ID0gbWF0cml4PGJvb2wsIDMsIDQ+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4
PGJvb2wsIDQsIDI+OwotdHlwZWRlZiBib29sNHgyID0gbWF0cml4PGJvb2wsIDQsIDI+OwotbmF0
aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDQsIDM+OwotdHlwZWRlZiBib29sNHgzID0gbWF0cml4
PGJvb2wsIDQsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDQsIDQ+OwotdHlwZWRl
ZiBib29sNHg0ID0gbWF0cml4PGJvb2wsIDQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBzYW1wbGVy
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTFEPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50Mz47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMUQ8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGludD47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8
aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlMUQ8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0Mj47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMUQ8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxm
bG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8dWludD47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMURBcnJheTx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJh
eTx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTx1aW50ND47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJy
YXk8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQzPjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUxREFycmF5PGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MURBcnJheTxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQ+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50
Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTJEPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50Mj47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMkQ8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50ND47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJE
PGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUyRDxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWlu
dD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50Mj47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMkRBcnJheTx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1
aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQ+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEQXJyYXk8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxp
bnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGludDQ+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGZsb2F0Mz47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNE
PHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUzRDx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludDQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50
Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlM0Q8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQ+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTNEPGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQz
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZUN1YmU8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50Mj47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3Vi
ZTx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQ+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZUN1YmU8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQzPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZUN1YmU8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8ZmxvYXQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0PjsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHJldmVyc2ViaXRzICov
Ci11aW50IHJldmVyc2ViaXRzKHVpbnQgeCkgewotICAgIHJldHVybiB1aW50KCgoeCAmIHVpbnQo
MSA8PCAwKSkgPDwgMzEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEpKSA8PCAyOSkg
fAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMikpIDw8IDI3KSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCAzKSkgPDwgMjUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDQp
KSA8PCAyMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNSkpIDw8IDIxKSB8Ci0gICAg
ICAgICAgICgoeCAmIHVpbnQoMSA8PCA2KSkgPDwgMTkpIHwKLSAgICAgICAgICAgKCh4ICYgdWlu
dCgxIDw8IDcpKSA8PCAxNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgOCkpIDw8IDE1
KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA5KSkgPDwgMTMpIHwKLSAgICAgICAgICAg
KCh4ICYgdWludCgxIDw8IDEwKSkgPDwgMTEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDExKSkgPDwgOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTIpKSA8PCA3KSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxMykpIDw8IDUpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDE0KSkgPDwgMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTUpKSA8
PCAxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNikpID4+IDEpIHwKLSAgICAgICAg
ICAgKCh4ICYgdWludCgxIDw8IDE3KSkgPj4gMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEg
PDwgMTgpKSA+PiA1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxOSkpID4+IDcpIHwK
LSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIwKSkgPj4gOSkgfAotICAgICAgICAgICAoKHgg
JiB1aW50KDEgPDwgMjEpKSA+PiAxMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjIp
KSA+PiAxMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjMpKSA+PiAxNSkgfAotICAg
ICAgICAgICAoKHggJiB1aW50KDEgPDwgMjQpKSA+PiAxNykgfAotICAgICAgICAgICAoKHggJiB1
aW50KDEgPDwgMjUpKSA+PiAxOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjYpKSA+
PiAyMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjcpKSA+PiAyMykgfAotICAgICAg
ICAgICAoKHggJiB1aW50KDEgPDwgMjgpKSA+PiAyNSkgfAotICAgICAgICAgICAoKHggJiB1aW50
KDEgPDwgMjkpKSA+PiAyNykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMzApKSA+PiAy
OSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMzEpKSA+PiAzMSkpOwotfQotdWludDIg
cmV2ZXJzZWJpdHModWludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSByZXZlcnNlYml0cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByZXZlcnNlYml0cyh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgcmV2ZXJzZWJpdHModWludDMgeCkgewotICAg
IHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByZXZlcnNlYml0cyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSByZXZlcnNlYml0cyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByZXZlcnNlYml0
cyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgcmV2ZXJzZWJpdHModWludDQg
eCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByZXZlcnNlYml0cyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSByZXZlcnNlYml0cyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBy
ZXZlcnNlYml0cyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSByZXZlcnNlYml0cyh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc29yZGVyZWQgKi8K
LWJvb2wgaXNvcmRlcmVkKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gKHggPT0geCkg
JiYgKHkgPT0geSk7Ci19Ci1ib29sMiBpc29yZGVyZWQoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0g
ICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzb3JkZXJlZCh4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBpc29yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wzIGlzb3JkZXJlZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBib29sMyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNvcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGlzb3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc29yZGVyZWQo
eFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzb3JkZXJlZChmbG9h
dDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNv
cmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzb3JkZXJlZCh4WzFdLCB5WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBpc29yZGVyZWQoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gaXNvcmRlcmVkKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCB0cmFuc3Bvc2UgKi8KLWZsb2F0IHRyYW5zcG9zZShmbG9hdCB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MiB0cmFuc3Bvc2UoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsx
XVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRb
MV1bMV0gPSB4WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0cmFuc3Bv
c2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBd
ID0geFswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgdHJhbnNwb3NlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4
WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0g
eFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9
IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbM11bMV0g
PSB4WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0cmFuc3Bvc2UoZmxv
YXQzeDIgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBd
WzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsx
XVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHhb
Ml1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgdHJhbnNwb3NlKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFd
OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1b
Ml07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJd
WzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgzIHRyYW5zcG9zZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsK
LSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IHhbMF1bM107
Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0geFsxXVsz
XTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4WzJd
WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCB0cmFuc3Bvc2UoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwot
ICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07
Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzNdWzBd
OwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IHRyYW5zcG9zZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAg
ICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwot
ICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsK
LSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IHhbM11bMF07
Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsKLSAgICByZXN1bHRbMl1bM10gPSB4WzNdWzJd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0cmFuc3Bvc2UoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAg
ICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IHhbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwot
ICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsK
LSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07
Ci0gICAgcmVzdWx0WzNdWzJdID0geFsyXVszXTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzNdWzBd
OwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0geFszXVsy
XTsKLSAgICByZXN1bHRbM11bM10gPSB4WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkQWRkICovCi1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRv
bWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQo
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQq
LCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFk
Z3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwg
ZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIHNhdHVyYXRlICovCi1mbG9hdCBzYXR1cmF0ZShmbG9hdCB4
KSB7Ci0gICAgcmV0dXJuIGNsYW1wKHgsIDAsIDEpOwotfQotZmxvYXQyIHNhdHVyYXRlKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIHNhdHVyYXRlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBzYXR1cmF0ZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IHNhdHVyYXRlKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBzYXR1cmF0ZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBzYXR1
cmF0ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgc2F0dXJhdGUoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1
cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
YXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc2F0dXJh
dGUoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgc2F0dXJhdGUoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0
ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzYXR1cmF0ZSh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1
cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgc2F0dXJhdGUoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc2F0dXJhdGUoZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1
cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgc2F0dXJhdGUoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBzYXR1cmF0ZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzYXR1cmF0
ZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc2F0dXJhdGUoZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1
cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
YXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBzYXR1cmF0ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzYXR1cmF0ZSh4WzFdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc2F0dXJhdGUoZmxvYXQzeDQgeCkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0
ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzYXR1
cmF0ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzYXR1cmF0ZSh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBzYXR1cmF0ZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDQgc2F0dXJhdGUoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBzYXR1cmF0ZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzYXR1cmF0
ZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzYXR1cmF0ZSh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBzYXR1cmF0ZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzYXR1
cmF0ZSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzYXR1cmF0ZSh4WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbWFkICovCi0KLWZsb2F0
IG1hZChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7Ci0gICAgcmV0dXJuIHggKiB5ICsgejsK
LX0KLWZsb2F0MiBtYWQoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9hdDIgeikgewotICAgIGZsb2F0
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJl
c3VsdFsxXSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzIG1hZChmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0MyB6KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYWQoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0
WzFdID0gbWFkKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1hZCh4WzJdLCB5
WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1hZChmbG9hdDQgeCwg
ZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBtYWQoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWFkKHhbMV0sIHlbMV0s
IHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1hZCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXN1
bHRbM10gPSBtYWQoeFszXSwgeVszXSwgelszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngyIG1hZChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxv
YXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbWFkKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHksIGZs
b2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFk
KHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFd
WzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwg
eVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1b
MV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1hZChmbG9hdDR4MiB4LCBmbG9h
dDR4MiB5LCBmbG9hdDR4MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFk
KHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1hZCh4WzNd
WzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsxXSwgeVszXVsxXSwgelszXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1hZChmbG9hdDJ4MyB4LCBmbG9h
dDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFk
KHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFd
WzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwg
eVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtYWQoZmxvYXQz
eDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFk
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJd
WzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwg
eVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbWFkKGZsb2F0NHgzIHgs
IGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWFk
KHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBd
WzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwg
eVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1b
MV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1hZCh4WzNdWzFdLCB5WzNdWzFdLCB6
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBtYWQoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1hZChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4
NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBd
WzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1b
MV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IG1hZCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBtYWQoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1hZChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4
NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBd
WzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1b
MF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IG1hZCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBt
YWQoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWFkKHhb
Ml1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBtYWQoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBt
YWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWFkKHhb
M11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4WzBdWzJd
LCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsx
XVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0s
IHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1hZCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYWQoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gbWFkKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IG1hZCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSBtYWQoeFszXVszXSwgeVszXVszXSwgelszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbW9kZiAqLwotCi1mbG9hdCBtb2RmKGZs
b2F0IHgsIHRocmVhZCBmbG9hdCogaXApIHsKLSAgICB1aW50IHJlc3VsdCA9IHVpbnQoeCk7Ci0g
ICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZsb2F0KHJlc3VsdCk7Ci19
Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgdGhyZWFkIGZsb2F0MiogeSkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBtb2RmKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhb
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl0gPSBtb2Rm
KHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdID0g
bW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdID0gYnVmZmVyOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIHRocmVhZCBmbG9hdDN4MiogeSkgewotICAg
IGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG1vZGYoZmxvYXQ0eDIgeCwgdGhyZWFk
IGZsb2F0NHgyKiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0g
PSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9k
Zih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4Myog
eSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsy
XSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0g
PSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1vZGYoZmxvYXQzeDMg
eCwgdGhyZWFkIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIGZsb2F0
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1v
ZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhb
MF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbW9kZihmbG9hdDR4
MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgZmxv
YXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYo
eFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
M11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9h
dDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsx
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHkpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVsw
XSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBt
b2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4
WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsw
XVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1b
M10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBtb2RmKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9
IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2Rm
KHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsz
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsy
XSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZmZXIpOwotICAgICgqeSlbM11bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10gPSBt
b2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzNdID0gYnVm
ZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotZmxvYXQgbW9kZihmbG9hdCB4LCBkZXZp
Y2UgZmxvYXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQgPSB1aW50KHgpOwotICAgICppcCA9IHgg
LSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVybiBmbG9hdChyZXN1bHQpOwotfQotZmxvYXQyIG1v
ZGYoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAg
ICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbW9k
ZihmbG9hdDMgeCwgZGV2aWNlIGZsb2F0MyogeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
ZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQg
bW9kZihmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0g
ICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIp
OwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXSA9IG1vZGYoeFszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYo
eFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDIgbW9kZihmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHkpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0g
PSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9k
Zih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2RmKGZsb2F0NHgyIHgsIGRldmljZSBmbG9hdDR4Miog
eSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsx
XSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQyeDMqIHkpIHsKLSAgICBm
bG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhb
MF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtb2RmKGZsb2F0M3gzIHgsIGRldmljZSBm
bG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYo
eFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1vZGYoZmxvYXQ0eDMgeCwgZGV2aWNl
IGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0g
PSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9k
Zih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFsz
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9hdDJ4NCB4LCBkZXZpY2UgZmxvYXQyeDQqIHkpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVsw
XSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBt
b2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5KSB7Ci0gICAgZmxvYXQz
eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2Rm
KHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbW9kZihmbG9h
dDR4NCB4LCBkZXZpY2UgZmxvYXQ0eDQqIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAg
ZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1b
MF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAg
ICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1v
ZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhb
Ml1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNd
WzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsz
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVszXSA9
IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVszXSA9IGJ1ZmZlcjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0IG1vZGYoZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxv
YXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQgPSB1aW50KHgpOwotICAgICppcCA9IHggLSBmbG9h
dChyZXN1bHQpOwotICAgIHJldHVybiBmbG9hdChyZXN1bHQpOwotfQotZmxvYXQyIG1vZGYoZmxv
YXQyIHgsIHRocmVhZGdyb3VwIGZsb2F0MiogeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAg
ZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtb2Rm
KGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0Owot
ICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IG1vZGYoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXSA9IG1v
ZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCB0aHJlYWRncm91cCBmbG9hdDJ4Miog
eSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4
LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0g
PSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9k
Zih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4LCB0aHJl
YWRncm91cCBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBmbG9hdCBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2Rm
KHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIG1vZGYoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHkpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYo
eFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB5KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0g
PSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFsw
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
bW9kZihmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeSkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBt
b2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbW9kZihm
bG9hdDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeSkgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1v
ZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhb
Ml1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9
IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBi
dWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZmxv
YXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYo
eFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
M11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVszXSA9IG1v
ZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZE1pbiAqLwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhy
ZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfaW50
KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2Ug
YXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdy
b3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwg
ZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0
b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWlu
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhy
ZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsZW5ndGggKi8KLW5hdGl2ZSBm
bG9hdCBsZW5ndGgoZmxvYXQpOwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdDIpOwotbmF0aXZl
IGZsb2F0IGxlbmd0aChmbG9hdDMpOwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdDQpOwotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3ItLSAqLwotdWludCBvcGVyYXRvci0tKHVpbnQgdmFs
dWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQotaW50IG9wZXJhdG9yLS0oaW50IHZhbHVl
KSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLWZsb2F0IG9wZXJhdG9yLS0oZmxvYXQgdmFs
dWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3Bl
cmF0b3I8PCAqLwotbmF0aXZlIGludCBvcGVyYXRvcjw8KGludCwgdWludCk7Ci1uYXRpdmUgdWlu
dCBvcGVyYXRvcjw8KHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZXhwMiAqLwot
ZmxvYXQgZXhwMihmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGV4cCh4ICogbG9nKGZsb2F0KDIpKSk7
Ci19Ci1mbG9hdDIgZXhwMihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAyKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZXhwMihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAyKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cDIoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBleHAyKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBleHAyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZXhwMih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBleHAyKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBleHAyKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgZXhwMihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBleHAyKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZXhwMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAyKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBleHAyKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGV4cDIoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgZXhwMihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBl
eHAyKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBleHAyKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4
cDIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwMih4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBleHAyKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBleHAyKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhw
Mih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZXhwMih4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBleHAyKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cDIoeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGV4cDIoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGV4cDIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwMih4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gZXhwMih4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBl
eHAyKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBpc3Vub3JkZXJlZCAqLwotCi1ib29sIGlzdW5vcmRlcmVkKGZsb2F0IHgsIGZsb2F0IHkpIHsK
LSAgICByZXR1cm4gaXNuYW4oeCkgfHwgaXNuYW4oeSk7Ci19Ci1ib29sMiBpc3Vub3JkZXJlZChm
bG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
aXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1bm9yZGVyZWQoeFsx
XSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzdW5vcmRlcmVkKGZsb2F0
MyB4LCBmbG9hdDMgeSkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vu
b3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc3Vub3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbDQgaXN1bm9yZGVyZWQoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGlzdW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGlzdW5vcmRlcmVkKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzdW5vcmRlcmVk
KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBhdGFuICovCi1uYXRpdmUgZmxvYXQgYXRhbihmbG9hdCk7Ci1mbG9hdDIgYXRhbihmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbih4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
YXRhbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRh
bih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0
YW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhdGFuKGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGF0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXRhbih4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBhdGFuKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBh
dGFuKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4
WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYXRhbihmbG9hdDN4MiB4
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBhdGFuKGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBhdGFuKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhdGFu
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
YXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGF0YW4o
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBh
dGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbih4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgYXRhbihmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRh
bih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhdGFuKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gYXRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhdGFuKGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4o
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBh
dGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gYXRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHg0IGF0YW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0
YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBhdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gYXRhbih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRh
bih4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhdGFuKHhbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2cgKi8KLW5hdGl2ZSBmbG9hdCBs
b2coZmxvYXQpOwotZmxvYXQyIGxvZyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZyh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxvZyh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2coeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBsb2coZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2coeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbG9nKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxvZyh4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgbG9nKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxv
Zyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBs
b2coZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGxvZyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbG9nKGZsb2F0
NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGxvZyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbG9nKGZs
b2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9n
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2co
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxvZyhmbG9hdDN4MyB4
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
b2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsb2coZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGxvZyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbG9nKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGxvZyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbG9nKGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9n
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2co
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2coeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gbG9nKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2coeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IGxvZyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
b2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGxvZyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxv
Zyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2coeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBsb2coeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9n
KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZyh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nKHhbMl1bM10pOwot
ICAgIHJlc3VsdFszXVszXSA9IGxvZyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgTG9hZCAqLwotbmF0aXZlIHVpbnQgTG9hZChUZXh0dXJlMUQ8
dWludD4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBMb2FkKFRleHR1cmUxREFycmF5PHVp
bnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTJEPHVpbnQ+LCBp
bnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9hZChUZXh0dXJlM0Q8dWludD4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVyZTFEPHVpbnQyPiwgaW50IGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQyPiwgaW50MiBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMkQ8dWludDI+LCBpbnQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUyREFycmF5PHVpbnQyPiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlM0Q8dWludDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5h
dGl2ZSB1aW50MyBMb2FkKFRleHR1cmUxRDx1aW50Mz4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludDMgTG9hZChUZXh0dXJlMURBcnJheTx1aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQzIExvYWQoVGV4dHVyZTJEPHVpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dDMgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQzIExvYWQoVGV4dHVyZTNEPHVpbnQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQg
TG9hZChUZXh0dXJlMUQ8dWludDQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IExvYWQo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2Fk
KFRleHR1cmUyRDx1aW50ND4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRl
eHR1cmUzRDx1aW50ND4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1cmUx
RDxpbnQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1cmUxREFycmF5PGlu
dD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBMb2FkKFRleHR1cmUyRDxpbnQ+LCBpbnQy
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJlMkRBcnJheTxpbnQ+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJlM0Q8aW50PiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUxRDxpbnQyPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQyIExvYWQoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZl
IGludDIgTG9hZChUZXh0dXJlMkQ8aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIg
TG9hZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBM
b2FkKFRleHR1cmUzRDxpbnQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBMb2FkKFRl
eHR1cmUxRDxpbnQzPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTFE
QXJyYXk8aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0dXJlMkQ8
aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0dXJlMkRBcnJheTxp
bnQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBMb2FkKFRleHR1cmUzRDxpbnQzPiwg
aW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUxRDxpbnQ0PiwgaW50IGxv
Y2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlMkQ8aW50ND4sIGludDIgbG9jYXRpb24p
OwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlMkRBcnJheTxpbnQ0PiwgaW50MyBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUzRDxpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQgTG9hZChUZXh0dXJlMUQ8ZmxvYXQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGZs
b2F0IExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdCBMb2FkKFRleHR1cmUyRDxmbG9hdD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0
IExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dCBMb2FkKFRleHR1cmUzRDxmbG9hdD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBM
b2FkKFRleHR1cmUxRDxmbG9hdDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2Fk
KFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBM
b2FkKFRleHR1cmUyRDxmbG9hdDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9h
ZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIg
TG9hZChUZXh0dXJlM0Q8ZmxvYXQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExv
YWQoVGV4dHVyZTFEPGZsb2F0Mz4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExv
YWQoVGV4dHVyZTJEPGZsb2F0Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBMb2Fk
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBM
b2FkKFRleHR1cmUzRDxmbG9hdDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9h
ZChUZXh0dXJlMUQ8ZmxvYXQ0PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9h
ZChUZXh0dXJlMkQ8ZmxvYXQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExv
YWQoVGV4dHVyZTNEPGZsb2F0ND4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2Fk
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBpbnQzIGxvY2F0aW9uKTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIHNpbiAqLwotbmF0aXZlIGZsb2F0IHNpbihmbG9hdCk7Ci1mbG9hdDIgc2luKGZs
b2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW4oeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgc2luKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBz
aW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNp
bih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNpbihmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2luKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzaW4oeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gc2luKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzaW4oZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNpbihmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
aW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzaW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzaW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgc2luKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNp
bih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2lu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNp
bihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbih4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
c2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBz
aW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2luKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzaW4oZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzaW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW4oeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IHNpbih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc2luKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2lu
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4o
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHNpbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbih4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBzaW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc2luKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzaW5j
b3MgKi8KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZCBmbG9hdCogeSwgdGhyZWFkIGZsb2F0
KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDIgeCwgdGhyZWFkIGZsb2F0MiogeSwgdGhyZWFkIGZsb2F0MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZCBmbG9hdDMqIHksIHRocmVhZCBmbG9hdDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZCBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJl
YWQgZmxvYXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3gyIHgsIHRocmVhZCBmbG9hdDN4MiogeSwgdGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSwgdGhyZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQy
eDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMq
IHksIHRocmVhZCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHksIHRocmVhZCBmbG9hdDR4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4
LCB0aHJlYWQgZmxvYXQyeDQqIHksIHRocmVhZCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5LCB0
aHJlYWQgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCB0aHJlYWQg
ZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHksIGRl
dmljZSBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQot
dm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHksIGRldmljZSBmbG9hdDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWQgZmxvYXQzKiB5LCBkZXZp
Y2UgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCBkZXZpY2UgZmxv
YXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
eDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5LCBkZXZpY2UgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxvYXQzeDIqIHksIGRldmljZSBmbG9hdDN4
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHksIGRldmljZSBmbG9hdDR4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhy
ZWFkIGZsb2F0MngzKiB5LCBkZXZpY2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFk
IGZsb2F0M3gzKiB5LCBkZXZpY2UgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgzKiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZCBmbG9h
dDN4NCogeSwgZGV2aWNlIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCog
eSwgZGV2aWNlIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgdGhyZWFkIGZs
b2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6
ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZCBmbG9hdDIqIHksIHRo
cmVhZGdyb3VwIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRo
cmVhZCBmbG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhy
ZWFkIGZsb2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5LCB0
aHJlYWRncm91cCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgs
IHRocmVhZCBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIg
eCwgdGhyZWFkIGZsb2F0NHgyKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkIGZsb2F0Mngz
KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQz
eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhy
ZWFkIGZsb2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJl
YWQgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNp
bih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2Ug
ZmxvYXQyKiB5LCB0aHJlYWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDMgeCwgZGV2aWNlIGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwg
ZGV2aWNlIGZsb2F0NCogeSwgdGhyZWFkIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIGRldmljZSBmbG9hdDJ4MiogeSwgdGhy
ZWFkIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNl
IGZsb2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZs
b2F0NHgyKiB5LCB0aHJlYWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0MngzIHgsIGRldmljZSBmbG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0
MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0M3gzIHgsIGRldmljZSBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIGRldmljZSBmbG9h
dDR4MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCog
eSwgdGhyZWFkIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4NCB4LCBkZXZpY2UgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDR4NCB4LCBkZXZpY2UgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9hdDR4NCogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0IHgsIGRldmljZSBmbG9hdCogeSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0g
ICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIg
eCwgZGV2aWNlIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHksIGRldmljZSBmbG9hdDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
M10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQy
eDIqIHksIGRldmljZSBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gy
IHgsIGRldmljZSBmbG9hdDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgs
IGRldmljZSBmbG9hdDR4MiogeSwgZGV2aWNlIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQyeDMqIHksIGRl
dmljZSBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBkZXZpY2UgZmxvYXQzeDMqIHksIGRldmlj
ZSBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCBk
ZXZpY2UgZmxvYXQ0eDMqIHksIGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCBkZXZpY2Ug
ZmxvYXQyeDQqIHksIGRldmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNlIGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxv
YXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIHksIHRocmVhZGdyb3Vw
IGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDIgeCwgZGV2aWNlIGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgZGV2aWNlIGZsb2F0MyogeSwgdGhy
ZWFkZ3JvdXAgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCB0aHJl
YWRncm91cCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0Mngy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5
LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIq
IHksIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxvYXQyeDMqIHksIHRocmVhZGdyb3VwIGZs
b2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIGRldmljZSBmbG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAg
ZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgZGV2
aWNlIGZsb2F0NHgzKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCBkZXZp
Y2UgZmxvYXQyeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCBkZXZpY2UgZmxvYXQzeDQqIHksIHRo
cmVhZGdyb3VwIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4NCogeSwgdGhy
ZWFkZ3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWRncm91
cCBmbG9hdCogeSwgdGhyZWFkIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnog
PSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5
LCB0aHJlYWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQzKiB5LCB0aHJlYWQgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJl
YWRncm91cCBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWRncm91cCBmbG9hdDJ4Miog
eSwgdGhyZWFkIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHksIHRocmVhZCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4
LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSwgdGhyZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWRncm91cCBmbG9h
dDJ4MyogeSwgdGhyZWFkIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsy
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZs
b2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHksIHRocmVhZCBmbG9hdDR4Myog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeSwgdGhyZWFkIGZsb2F0Mng0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJl
YWRncm91cCBmbG9hdDN4NCogeSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVh
ZGdyb3VwIGZsb2F0NHg0KiB5LCB0aHJlYWQgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogeSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0gICAgKnkg
PSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQyKiB5LCBkZXZpY2UgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5LCBkZXZpY2UgZmxvYXQzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQqIHksIGRldmljZSBmbG9hdDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJl
YWRncm91cCBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHksIGRldmljZSBmbG9hdDN4
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSwgZGV2aWNlIGZsb2F0
NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4
LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gz
IHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5LCBkZXZpY2UgZmxvYXQzeDMqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHks
IGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeSwg
ZGV2aWNlIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeSwgZGV2aWNlIGZsb2F0M3g0KiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogeSwgdGhyZWFkZ3Jv
dXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIHRocmVhZGdyb3VwIGZs
b2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZs
b2F0MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWRncm91
cCBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5
LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gy
IHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4Miogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDR4MiB4LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRo
cmVhZGdyb3VwIGZsb2F0MngzKiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4
MyB4LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsy
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZGdyb3VwIGZs
b2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHksIHRo
cmVhZGdyb3VwIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
M10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5
LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50
ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFy
ZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIHRocmVhZCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCBkZXZpY2UgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19p
bnQqLCBpbnQsIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkZ3JvdXAg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0
b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5n
ZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50
KiwgdWludCwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29t
cGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGludCwgZGV2aWNlIGlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAg
YXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc21vb3Roc3Rl
cCAqLwotZmxvYXQgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgp
IHsKLSAgICBmbG9hdCB0ID0gY2xhbXAoKHggLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdlMCksIDAs
IDEpOwotICAgIHJldHVybiB0ICogdCAqICgzIC0gMiAqIHQpOwotfQotZmxvYXQyIHNtb290aHN0
ZXAoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9hdDIgeikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gc21vb3Roc3RlcCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBzbW9vdGhzdGVwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDMgc21vb3Roc3RlcChmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0MyB6KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzbW9vdGhzdGVwKHhbMF0sIHlbMF0sIHpb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290aHN0ZXAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gc21vb3Roc3RlcCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IHNtb290aHN0ZXAoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc21vb3Roc3RlcCh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzbW9vdGhzdGVwKHhbMV0sIHlbMV0sIHpbMV0p
OwotICAgIHJlc3VsdFsyXSA9IHNtb290aHN0ZXAoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gc21vb3Roc3RlcCh4WzNdLCB5WzNdLCB6WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgc21vb3Roc3RlcChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5LCBmbG9hdDJ4
MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0
ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Ro
c3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9v
dGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNt
b290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIHNtb290aHN0ZXAoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIg
eikgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVw
KHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0
ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Ro
c3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9v
dGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNt
b290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
c21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgc21vb3Roc3RlcChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4
MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0
ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Ro
c3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9v
dGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNt
b290aHN0ZXAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc21vb3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgc21vb3Roc3RlcChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5LCBm
bG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNt
b290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzbW9vdGhzdGVwKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHks
IGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNtb290aHN0ZXAoZmxvYXQ0eDMgeCwgZmxv
YXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVszXVsxXSwgelszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwg
elsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc21vb3Roc3RlcCh4WzNdWzJdLCB5WzNdWzJd
LCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc21vb3Roc3RlcChm
bG9hdDJ4NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwg
elsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJd
LCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNtb290aHN0ZXAoeFswXVszXSwgeVsw
XVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5
WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc21vb3Ro
c3RlcChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwg
elswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1b
MF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVsw
XVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5
WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0s
IHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsy
XSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFd
WzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhb
Ml1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNtb290aHN0ZXAo
eFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc21vb3Roc3Rl
cCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzbW9vdGhz
dGVwKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4NCBzbW9vdGhzdGVwKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBd
WzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAo
eFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3Rl
cCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhz
dGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290
aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21v
b3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBz
bW9vdGhzdGVwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHNtb290aHN0ZXAoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHNtb290aHN0ZXAoeFsyXVszXSwgeVsyXVszXSwgelsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gc21vb3Roc3RlcCh4WzNdWzNdLCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZXhwICovCi1uYXRpdmUg
ZmxvYXQgZXhwKGZsb2F0KTsKLWZsb2F0MiBleHAoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAoeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBleHAoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBleHAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgZXhwKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZXhwKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGV4cCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBleHAoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGV4cChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgZXhwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhw
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGV4
cChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGV4cChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZXhwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBleHAoZmxv
YXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZXhwKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9h
dDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4
cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhw
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBleHAoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGV4
cChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBleHAoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IGV4cChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBleHAoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZXhwKHhbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBleHAoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBleHAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGV4cCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGV4cCh4WzJd
WzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBleHAoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFsbCAqLwotYm9vbCBhbGwoYm9vbCB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci1ib29sIGFsbChib29sMiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0
cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDMgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0pOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDQgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0pOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbCh1aW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbGwodWludDIg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFsbCh1aW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbCh1aW50NCB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwoaW50IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9v
bCBhbGwoaW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGludDMgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsy
XSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoaW50NCB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXSAhPSAwKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQgeCkgewotICAgIHJldHVybiB4ICE9
IDA7Ci19Ci1ib29sIGFsbChmbG9hdDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDMgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwo
ZmxvYXQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDJ4MiB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsw
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQz
eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQ0eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChmbG9hdDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJd
ICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDN4MyB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsw
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzNdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChm
bG9hdDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
Ml0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMV1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0M3g0
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsy
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bM10gIT0gMCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0NHg0IHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzBdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFszXVsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsyXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzNdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFs
bChib29sMngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wzeDIgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbGwoYm9vbDR4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFsbChib29sMngzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wz
eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sMng0IHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
dHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVszXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsz
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDR4NCB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzNdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzFdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzNdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIGZpcnN0Yml0bG93ICovCi11aW50IGZpcnN0Yml0bG93KHVp
bnQgeCkgewotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDMxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMw
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI5Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI4OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCA0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI3OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCA1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI2OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCA2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI1OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCA3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI0OwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCA4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIzOwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCA5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8
PCAxMCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
MTEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEy
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMykp
ICE9IDApCi0gICAgICAgIHJldHVybiAxODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTQpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMTc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE1KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDE2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNikpICE9IDAp
Ci0gICAgICAgIHJldHVybiAxNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTcpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMTQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE4KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDEzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOSkpICE9IDApCi0gICAg
ICAgIHJldHVybiAxMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjApKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMTE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIxKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDEwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMikpICE9IDApCi0gICAgICAgIHJl
dHVybiA5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyMykpICE9IDApCi0gICAgICAgIHJldHVy
biA4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNCkpICE9IDApCi0gICAgICAgIHJldHVybiA3
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNSkpICE9IDApCi0gICAgICAgIHJldHVybiA2Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNikpICE9IDApCi0gICAgICAgIHJldHVybiA1OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAyNykpICE9IDApCi0gICAgICAgIHJldHVybiA0OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAyOCkpICE9IDApCi0gICAgICAgIHJldHVybiAzOwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAyOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyOwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAzMCkpICE9IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAzMSkpICE9IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAzMjsKLX0K
LXVpbnQgZmlyc3RiaXRsb3coaW50IHgpIHsKLSAgICByZXR1cm4gZmlyc3RiaXRsb3codWludCh4
KSk7Ci19Ci11aW50MiBmaXJzdGJpdGxvdyh1aW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0
Yml0bG93KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGxvdyh1
aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGZpcnN0Yml0bG93KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBmaXJz
dGJpdGxvdyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZp
cnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGZpcnN0Yml0bG93KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0
bG93KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MiBmaXJzdGJpdGxvdyhpbnQy
IHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIGZpcnN0Yml0bG93KGludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJp
dGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGxvdyh4WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3RiaXRsb3coaW50NCB4KSB7Ci0gICAgdWludDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0bG93KHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0bG93KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcjw9ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRv
cjw9KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0odWludCwgdWludCk7Ci1uYXRp
dmUgYm9vbCBvcGVyYXRvcjw9KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8
PSh1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPD0odWludDMsIHVpbnQzKTsK
LW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3Bl
cmF0b3I8PShpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjw9KGludDMsIGludDMp
OwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3Bl
cmF0b3I8PShmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8PShmbG9hdDMs
IGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRp
dmUgYm9vbDJ4MiBvcGVyYXRvcjw9KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4
MiBvcGVyYXRvcjw9KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRv
cjw9KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcjw9KGZsb2F0
MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcjw9KGZsb2F0M3gzLCBmbG9h
dDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcjw9KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1u
YXRpdmUgYm9vbDJ4NCBvcGVyYXRvcjw9KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9v
bDN4NCBvcGVyYXRvcjw9KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVy
YXRvcjw9KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHhfZmlu
ZSAqLwotZmxvYXQgZGR4X2ZpbmUoZmxvYXQgeCkgewotICAgIHJldHVybiBkZHgoeCk7Ci19Ci1m
bG9hdDIgZGR4X2ZpbmUoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeF9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9maW5lKHhbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR4X2ZpbmUoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9maW5lKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeF9maW5lKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9maW5lKHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4X2ZpbmUoZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9maW5lKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeF9maW5lKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9maW5lKHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGRkeF9maW5lKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MiBkZHhfZmluZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiBkZHhfZmluZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHhfZmluZShmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5l
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9m
aW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9maW5lKHhbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHhfZmluZShmbG9hdDJ4MyB4KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MyBkZHhfZmluZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5l
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9maW5lKHhbMl1bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHhfZmluZShmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9maW5lKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9maW5lKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5l
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9maW5lKHhbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGRkeF9maW5lKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4NCBkZHhfZmluZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGRkeF9maW5lKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBk
ZHhfZmluZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5l
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9m
aW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9maW5lKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGRkeF9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRk
eF9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeF9maW5lKHhbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHhfZmluZShmbG9hdDR4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9maW5lKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9maW5lKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5l
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9maW5lKHhbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGRkeF9maW5lKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9m
aW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9maW5lKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGRkeF9maW5lKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRk
eF9maW5lKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBvcGVyYXRvciBjYXN0ICovCi1uYXRpdmUgb3BlcmF0b3IgdWludChpbnQpOwotbmF0aXZl
IG9wZXJhdG9yIHVpbnQoZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGludCh1aW50KTsKLW5hdGl2
ZSBvcGVyYXRvciBpbnQoZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0KHVpbnQpOwotbmF0
aXZlIG9wZXJhdG9yIGZsb2F0KGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50KGJvb2wpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2wodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChpbnQpOwotbmF0
aXZlIG9wZXJhdG9yIGJvb2woZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyKGJvb2wsIGJv
b2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzKGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9w
ZXJhdG9yIGJvb2wzKGJvb2wyLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMyhib29sLCBi
b29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1u
YXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbDIsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9y
IGJvb2w0KGJvb2wsIGJvb2wyLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sLCBi
b29sLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbDIsIGJvb2wyKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sNChib29sMywgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9v
bCwgYm9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQyKHVpbnQsIHVpbnQpOwotbmF0aXZlIG9w
ZXJhdG9yIHVpbnQzKHVpbnQsIHVpbnQsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQzKHVp
bnQyLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50LCB1aW50Mik7Ci1uYXRpdmUg
b3BlcmF0b3IgdWludDQodWludCwgdWludCwgdWludCwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
dWludDQodWludDIsIHVpbnQsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVp
bnQyLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50LCB1aW50Mik7Ci1u
YXRpdmUgb3BlcmF0b3IgdWludDQodWludDIsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50
NCh1aW50MywgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludCwgdWludDMpOwotbmF0
aXZlIG9wZXJhdG9yIGludDIoaW50LCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDMoaW50LCBp
bnQsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MyhpbnQyLCBpbnQpOwotbmF0aXZlIG9wZXJh
dG9yIGludDMoaW50LCBpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50LCBpbnQs
IGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQyLCBpbnQsIGludCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgaW50NChpbnQsIGludDIsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQsIGlu
dCwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQyLCBpbnQyKTsKLW5hdGl2ZSBvcGVy
YXRvciBpbnQ0KGludDMsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQsIGludDMpOwot
bmF0aXZlIG9wZXJhdG9yIGZsb2F0MihmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZs
b2F0MyhmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDMoZmxvYXQy
LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQ0KGZsb2F0MiwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDQoZmxvYXQsIGZsb2F0MiwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwg
ZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MiwgZmxvYXQyKTsK
LW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQ0KGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MngyKGZsb2F0Miwg
ZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRp
dmUgb3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIG9wZXJhdG9yIGZs
b2F0M3gyKGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gz
KGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3g0KGZsb2F0
NCwgZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgyKGZsb2F0MiwgZmxv
YXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDMoZmxvYXQzLCBm
bG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4NChmbG9hdDQs
IGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MngyKGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MyhmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9h
dDJ4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gyKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gzKGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0M3g0KGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0NHgyKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDMoZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDQoZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGJv
b2wyeDIoYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngzKGJvb2wzLCBib29s
Myk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4NChib29sNCwgYm9vbDQpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2wzeDIoYm9vbDIsIGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4
Myhib29sMywgYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3g0KGJvb2w0LCBi
b29sNCwgYm9vbDQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDIoYm9vbDIsIGJvb2wyLCBib29s
MiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDMoYm9vbDMsIGJvb2wzLCBib29sMywg
Ym9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDQoYm9vbDQsIGJvb2w0LCBib29sNCwgYm9v
bDQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDIoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1u
YXRpdmUgb3BlcmF0b3IgYm9vbDJ4Myhib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMng0KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDIoYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4Myhib29sLCBi
b29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBv
cGVyYXRvciBib29sM3g0KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDIo
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbDR4Myhib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHg0
KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgbG9hZCAqLwotbmF0aXZlIGludCBsb2FkKGRldmljZSBhdG9taWNfaW50Kik7Ci1uYXRp
dmUgdWludCBsb2FkKGRldmljZSBhdG9taWNfdWludCopOwotbmF0aXZlIGludCBsb2FkKHRocmVh
ZGdyb3VwIGF0b21pY19pbnQqKTsKLW5hdGl2ZSB1aW50IGxvYWQodGhyZWFkZ3JvdXAgYXRvbWlj
X3VpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNvdW50X2JpdHMgKi8KLQotLyogRnVuY3Rp
b25zIG5hbWVkIHJzcXJ0ICovCi1mbG9hdCByc3FydChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIDEg
LyBzcXJ0KHgpOwotfQotZmxvYXQyIHJzcXJ0KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSByc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByc3FydCh4
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJzcXJ0KGZsb2F0MyB4KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByc3FydCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSByc3FydCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByc3FydCh4WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJzcXJ0KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSByc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByc3Fy
dCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByc3FydCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBy
c3FydCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcnNxcnQoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgcnNxcnQoZmxvYXQzeDIgeCkgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
c3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcnNxcnQoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByc3FydCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
c3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSByc3FydCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgcnNxcnQoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgcnNxcnQoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3Fy
dCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSByc3FydCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgcnNxcnQoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3Fy
dCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSByc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByc3FydCh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBy
c3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByc3FydCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSByc3FydCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgcnNxcnQoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBy
c3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByc3FydCh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcnNxcnQoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBy
c3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByc3FydCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSByc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByc3FydCh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByc3FydCh4WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgcnNxcnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSByc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBy
c3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByc3FydCh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByc3FydCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSByc3FydCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSByc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByc3FydCh4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSByc3FydCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSByc3Fy
dCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
c3FydCAqLwotZmxvYXQgc3FydChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHBvdyh4LCAwLjUpOwot
fQotZmxvYXQyIHNxcnQoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc3FydCh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIHNxcnQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc3FydCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBzcXJ0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgc3FydChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IHNxcnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gc3FydCh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgc3FydChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIHNxcnQoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgc3FydChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc3FydCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgc3FydChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBzcXJ0KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
cXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIHNxcnQoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc3Fy
dCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc3FydChmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gc3FydCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
c3FydChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBz
cXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNxcnQoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gc3FydCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzcXJ0KHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzcXJ0KGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNx
cnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNxcnQoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IHNxcnQoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc3Fy
dCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
YWNvcyAqLwotbmF0aXZlIGZsb2F0IGFjb3MoZmxvYXQpOwotZmxvYXQyIGFjb3MoZmxvYXQyIHgp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFjb3MoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGFj
b3MoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFjb3Mo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhY29z
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYWNvcyhmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBhY29zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFjb3MoeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gYWNvcyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgYWNv
cyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFjb3MoZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgYWNvcyhmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
Y29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gYWNvcyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgYWNvcyhm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFj
b3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBhY29zKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhY29zKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNv
cyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFjb3MoeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGFjb3MoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFjb3Mo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWNvcyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgYWNvcyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IGFjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYWNvcyhmbG9hdDN4NCB4KSB7Ci0gICAg
ZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNv
cyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGFjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWNvcyh4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBhY29zKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBhY29zKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29z
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gYWNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
YWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhY29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGFjb3MoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFjb3Mo
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYWNvcyh4WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I+ICovCi1uYXRpdmUgYm9v
bCBvcGVyYXRvcj4oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+KHVpbnQsIHVpbnQp
OwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3Bl
cmF0b3I+KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+KHVpbnQzLCB1aW50
Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIg
b3BlcmF0b3I+KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPihpbnQzLCBpbnQz
KTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3Bl
cmF0b3I+KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj4oZmxvYXQzLCBm
bG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPihmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUg
Ym9vbDJ4MiBvcGVyYXRvcj4oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9w
ZXJhdG9yPihmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I+KGZs
b2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj4oZmxvYXQyeDMsIGZs
b2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPihmbG9hdDN4MywgZmxvYXQzeDMpOwot
bmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I+KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9v
bDJ4NCBvcGVyYXRvcj4oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJh
dG9yPihmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I+KGZsb2F0
NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvciYgKi8KLWJvb2wg
b3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAgcmV0dXJuIGEgJiYgYjsKLX0KLW5hdGl2
ZSBpbnQgb3BlcmF0b3ImKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yJih1aW50LCB1
aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHRhbmggKi8KLW5hdGl2ZSBmbG9hdCB0YW5oKGZs
b2F0KTsKLWZsb2F0MiB0YW5oKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbmgoeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyB0YW5oKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbmgo
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuaCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IHRhbmgoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IHRhbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSB0YW5oKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHRhbmgoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHRhbmgoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiB0YW5oKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIHRhbmgoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSB0YW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5o
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbmgoeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIHRhbmgoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgdGFuaChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyB0YW5oKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFu
aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IHRhbmgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRhbmgoZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5o
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
dGFuaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW5oKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IHRhbmgoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IHRhbmgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0
YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW5oKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHRhbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuaCh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdGFuaChmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gdGFuaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFu
aCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0YW5oKHhbM11bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSB0YW5oKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9
IHRhbmgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIG9wZXJhdG9yKiAqLwotbmF0aXZlIGludCBvcGVyYXRvciooaW50LCBpbnQpOwotbmF0aXZl
IHVpbnQgb3BlcmF0b3IqKHVpbnQsIHVpbnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9h
dCwgZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKih1aW50MiwgdWludDIpOwotbmF0aXZl
IHVpbnQyIG9wZXJhdG9yKih1aW50MiwgdWludCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IqKHVp
bnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcioodWludDMsIHVpbnQzKTsKLW5hdGl2
ZSB1aW50MyBvcGVyYXRvcioodWludDMsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKih1
aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IqKHVpbnQ0LCB1aW50NCk7Ci1uYXRp
dmUgdWludDQgb3BlcmF0b3IqKHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcioo
dWludCwgdWludDQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IqKGludDIsIGludDIpOwotbmF0aXZl
IGludDIgb3BlcmF0b3IqKGludDIsIGludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvciooaW50LCBp
bnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKihpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9w
ZXJhdG9yKihpbnQzLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGludCwgaW50Myk7Ci1u
YXRpdmUgaW50NCBvcGVyYXRvciooaW50NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvcioo
aW50NCwgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQsIGludDQpOwotbmF0aXZlIGZs
b2F0MiBvcGVyYXRvciooZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcioo
ZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQyKTsK
LW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IqKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMg
b3BlcmF0b3IqKGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQs
IGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKihmbG9hdDQsIGZsb2F0NCk7Ci1uYXRp
dmUgZmxvYXQ0IG9wZXJhdG9yKihmbG9hdDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0
b3IqKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKihmbG9hdDJ4Miwg
ZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKihmbG9hdDJ4MiwgZmxvYXQpOwot
bmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0
M3gyIG9wZXJhdG9yKihmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJh
dG9yKihmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKihmbG9hdCwg
ZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKihmbG9hdDR4MiwgZmxvYXQ0eDIp
OwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKihmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZs
b2F0NHgyIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJh
dG9yKihmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKihmbG9h
dDJ4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQyeDMp
OwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKihmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZl
IGZsb2F0M3gzIG9wZXJhdG9yKihmbG9hdDN4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gzIG9w
ZXJhdG9yKihmbG9hdCwgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKihmbG9h
dDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKihmbG9hdDR4MywgZmxv
YXQpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZl
IGZsb2F0Mng0IG9wZXJhdG9yKihmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0
IG9wZXJhdG9yKihmbG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKihm
bG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKihmbG9hdDN4NCwgZmxv
YXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKihmbG9hdDN4NCwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0M3g0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0
IG9wZXJhdG9yKihmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9y
KihmbG9hdDR4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKihmbG9hdCwgZmxv
YXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY29zICovCi1uYXRpdmUgZmxvYXQgY29zKGZs
b2F0KTsKLWZsb2F0MiBjb3MoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3MoeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjb3MoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3MoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gY29zKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgY29zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBj
b3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNv
cyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBjb3MoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGNvcyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgY29zKGZs
b2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3Mo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNvcyhmbG9hdDR4MiB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
Y29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBj
b3MoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNvcyhmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBjb3MoZmxvYXQzeDMgeCkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgY29zKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNv
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29z
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjb3Mo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGNvcyhmbG9hdDJ4NCB4
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Y29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGNvcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBj
b3MoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGNvcyhmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zKHhbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGNvcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3MoeFsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gY29zKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBjb3MoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gY29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvcyh4WzNd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvcyh4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSBjb3MoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPT0gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPT0oYm9v
bCwgYm9vbCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKLW5hdGl2ZSBib29s
IG9wZXJhdG9yPT0odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj09KGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I9PShib29sMiwgYm9vbDIpOwotbmF0aXZlIGJv
b2wzIG9wZXJhdG9yPT0oYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KGJv
b2w0LCBib29sNCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I9PSh1aW50MiwgdWludDIpOwotbmF0
aXZlIGJvb2wzIG9wZXJhdG9yPT0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRv
cj09KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I9PShpbnQyLCBpbnQyKTsK
LW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJh
dG9yPT0oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I9PShmbG9hdDIsIGZsb2F0
Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9v
bDQgb3BlcmF0b3I9PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj09
KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj09KGZsb2F0M3gy
LCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj09KGZsb2F0NHgyLCBmbG9hdDR4
Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj09KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRp
dmUgYm9vbDN4MyBvcGVyYXRvcj09KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4
MyBvcGVyYXRvcj09KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRv
cj09KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcj09KGZsb2F0
M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj09KGZsb2F0NHg0LCBmbG9h
dDR4NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj09KGJvb2wyeDIsIGJvb2wyeDIpOwotbmF0
aXZlIGJvb2wzeDIgb3BlcmF0b3I9PShib29sM3gyLCBib29sM3gyKTsKLW5hdGl2ZSBib29sNHgy
IG9wZXJhdG9yPT0oYm9vbDR4MiwgYm9vbDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj09
KGJvb2wyeDMsIGJvb2wyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I9PShib29sM3gzLCBi
b29sM3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPT0oYm9vbDR4MywgYm9vbDR4Myk7Ci1u
YXRpdmUgYm9vbDJ4NCBvcGVyYXRvcj09KGJvb2wyeDQsIGJvb2wyeDQpOwotbmF0aXZlIGJvb2wz
eDQgb3BlcmF0b3I9PShib29sM3g0LCBib29sM3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9y
PT0oYm9vbDR4NCwgYm9vbDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcj4+ICov
Ci1uYXRpdmUgaW50IG9wZXJhdG9yPj4oaW50LCB1aW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9y
Pj4odWludCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByZWZsZWN0ICovCi1mbG9hdCBy
ZWZsZWN0KGZsb2F0IGksIGZsb2F0IG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGks
IG4pOwotfQotZmxvYXQyIHJlZmxlY3QoZmxvYXQyIGksIGZsb2F0MiBuKSB7Ci0gICAgcmV0dXJu
IGkgLSAyICogbiAqIGRvdChpLCBuKTsKLX0KLWZsb2F0MyByZWZsZWN0KGZsb2F0MyBpLCBmbG9h
dDMgbikgewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDQgcmVm
bGVjdChmbG9hdDQgaSwgZmxvYXQ0IG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGks
IG4pOwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsaXQgKi8KLWZsb2F0NCBsaXQoZmxvYXQg
bl9kb3RfbCwgZmxvYXQgbl9kb3RfaCwgZmxvYXQgbSkgewotICAgIGZsb2F0IGFtYmllbnQgPSAx
OwotICAgIGZsb2F0IGRpZmZ1c2UgPSBtYXgoMCwgbl9kb3RfbCk7Ci0gICAgZmxvYXQgc3BlY3Vs
YXIgPSBuX2RvdF9sIDwgMCB8fCBuX2RvdF9oIDwgMCA/IDAgOiBuX2RvdF9oICogbTsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gYW1iaWVudDsKLSAgICByZXN1bHQueSA9IGRp
ZmZ1c2U7Ci0gICAgcmVzdWx0LnogPSBzcGVjdWxhcjsKLSAgICByZXN1bHQudyA9IDE7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGxvZzIgKi8KLWZsb2F0IGxv
ZzIoZmxvYXQgeCkgewotICAgIHJldHVybiBsb2coeCkgLyBsb2coZmxvYXQoMikpOwotfQotZmxv
YXQyIGxvZzIoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGxvZzIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMih4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIGxvZzIoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGxvZzIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMih4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBsb2cyKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQg
bG9nMihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9n
Mih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cyKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxv
ZzIoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbG9nMih4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgbG9nMihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
Mih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gy
IGxvZzIoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cy
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
bG9nMihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMih4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgbG9nMihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MyBsb2cyKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
Mih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IGxvZzIoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cy
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nMih4WzNd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbG9nMihmbG9hdDJ4NCB4KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
b2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbG9nMih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbG9nMihm
bG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxv
ZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzIoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gbG9nMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cyKHhbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBsb2cyKGZsb2F0NHg0IHgpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cy
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IGxvZzIoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
bG9nMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IGxvZzIoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9nMih4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbm9ybWFs
aXplICovCi1mbG9hdCBub3JtYWxpemUoZmxvYXQgeCkgewotICAgIHJldHVybiB4IC8gbGVuZ3Ro
KHgpOwotfQotZmxvYXQyIG5vcm1hbGl6ZShmbG9hdDIgeCkgewotICAgIHJldHVybiB4IC8gbGVu
Z3RoKHgpOwotfQotZmxvYXQzIG5vcm1hbGl6ZShmbG9hdDMgeCkgewotICAgIHJldHVybiB4IC8g
bGVuZ3RoKHgpOwotfQotZmxvYXQ0IG5vcm1hbGl6ZShmbG9hdDQgeCkgewotICAgIHJldHVybiB4
IC8gbGVuZ3RoKHgpOwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsZGV4cCAqLwotZmxvYXQg
bGRleHAoZmxvYXQgeCwgZmxvYXQgZSkgewotICAgIHJldHVybiB4ICogcG93KDIsIGUpOwotfQot
ZmxvYXQyIGxkZXhwKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbGRleHAo
eFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsZGV4cChmbG9hdDMg
eCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhw
KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGxkZXhwKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgbGRleHAoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFd
LCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZGV4cCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRb
M10gPSBsZGV4cCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIg
bGRleHAoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbGRleHAoZmxvYXQzeDIgeCwg
ZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
ZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4
cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbGRl
eHAoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZGV4cCh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
ZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZGV4cCh4WzNdWzFd
LCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbGRleHAoZmxvYXQy
eDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDMgbGRleHAoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4
cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4
WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5WzJd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbGRleHAoZmxvYXQ0eDMgeCwg
ZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
ZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBsZGV4cCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4
cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZGV4cCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZGV4cCh4
WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsZGV4cCh4WzNdWzJdLCB5WzNd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbGRleHAoZmxvYXQyeDQgeCwg
ZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
ZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4
cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsZGV4cCh4WzBdWzNdLCB5
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZGV4cCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbGRleHAoZmxvYXQzeDQgeCwgZmxvYXQzeDQg
eSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBd
WzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBs
ZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsZGV4
cCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZGV4cCh4WzFdWzNdLCB5
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZGV4cCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbGRleHAoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQg
eSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBd
WzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBsZGV4cCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
ZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBsZGV4cCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4
cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsZGV4cCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBsZGV4cCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBsZGV4cCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZGV4cCh4
WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsZGV4cCh4WzNdWzNdLCB5WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYWJzICov
Ci11aW50IGFicyh1aW50IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludCBhYnMoaW50IHgpIHsK
LSAgICBpZiAoeCA8IDApCi0gICAgICAgIHJldHVybiAteDsKLSAgICByZXR1cm4geDsKLX0KLWZs
b2F0IGFicyhmbG9hdCB4KSB7Ci0gICAgaWYgKHggPCAwKQotICAgICAgICByZXR1cm4gLXg7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci11aW50MiBhYnModWludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBhYnModWludDMgeCkgewotICAgIHVpbnQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDQgYWJzKHVpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
YnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYWJzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1pbnQyIGFicyhpbnQyIHgpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQzIGFicyhpbnQzIHgpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFicyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBhYnMoaW50NCB4KSB7
Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gYWJzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgYWJzKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
YWJzKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFicyhmbG9hdDQgeCkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gYWJzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhYnMoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFicyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBhYnMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
YnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhYnMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgYWJzKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGFicyhm
bG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFi
cyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJz
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBhYnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhYnMo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWJzKHhbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhYnMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBh
YnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWJzKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhYnMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhYnMoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWJzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGFicyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYWJzKGZsb2F0
NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGFicyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhYnMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFicyh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBhYnMoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYWJzKHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHJvdW5k
ICovCi1uYXRpdmUgZmxvYXQgcm91bmQoZmxvYXQpOwotZmxvYXQyIHJvdW5kKGZsb2F0MiB4KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByb3VuZCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSByb3VuZCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJv
dW5kKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByb3Vu
ZCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByb3VuZCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBy
b3VuZCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJvdW5kKGZsb2F0NCB4
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByb3VuZCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSByb3VuZCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByb3VuZCh4WzJdKTsK
LSAgICByZXN1bHRbM10gPSByb3VuZCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDIgcm91bmQoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgcm91
bmQoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3Vu
ZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgcm91bmQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSByb3VuZCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3Vu
ZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByb3VuZCh4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcm91bmQoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcm91bmQoZmxvYXQzeDMgeCkgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByb3VuZCh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcm91bmQoZmxvYXQ0eDMgeCkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByb3VuZCh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSByb3VuZCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByb3Vu
ZCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByb3VuZCh4WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcm91bmQoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSByb3VuZCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByb3Vu
ZCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcm91bmQoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByb3Vu
ZCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByb3VuZCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSByb3VuZCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByb3VuZCh4WzJd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcm91bmQoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByb3VuZCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3Vu
ZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSByb3VuZCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSByb3VuZCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByb3VuZCh4WzNdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSByb3VuZCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBy
b3VuZCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByb3VuZCh4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSByb3VuZCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgbXVsICovCi11aW50IG11bCh1aW50IHgsIHVpbnQgeSkgewotICAg
IHJldHVybiB4ICogeTsKLX0KLWludCBtdWwoaW50IHgsIGludCB5KSB7Ci0gICAgcmV0dXJuIHgg
KiB5OwotfQotZmxvYXQgbXVsKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4geCAqIHk7
Ci19Ci11aW50MiBtdWwodWludCB4LCB1aW50MiB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci11aW50MiBtdWwodWludDIgeCwgdWludCB5KSB7Ci0gICAgdWludDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0g
KiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBtdWwodWludCB4LCB1aW50MyB5KSB7
Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3Vs
dFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50MyBtdWwodWludDMgeCwgdWludCB5KSB7Ci0gICAgdWludDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5Owot
ICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBt
dWwodWludCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHgg
KiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50NCBtdWwodWludDQgeCwgdWludCB5KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3Vs
dFsyXSA9IHhbMl0gKiB5OwotICAgIHJlc3VsdFszXSA9IHhbM10gKiB5OwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1pbnQyIG11bChpbnQgeCwgaW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWludDIgbXVsKGludDIgeCwgaW50IHkpIHsKLSAgICBpbnQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICog
eTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBtdWwoaW50IHgsIGludDMgeSkgewotICAg
IGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9
IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1pbnQzIG11bChpbnQzIHgsIGludCB5KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0
WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgbXVsKGludCB4LCBp
bnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAg
ICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICBy
ZXN1bHRbM10gPSB4ICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBtdWwoaW50
NCB4LCBpbnQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5
OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5Owot
ICAgIHJlc3VsdFszXSA9IHhbM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIg
bXVsKGZsb2F0IHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyIG11bChmbG9hdDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQgeCwgZmxvYXQzIHkpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3Vs
dFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICog
eTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IG11bChmbG9hdCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0
WzJdID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0geCAqIHlbM107Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQ0IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5
OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJlc3VsdFszXSA9IHhbM10gKiB5Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQgeCwgZmxvYXQyeDIgeSkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsK
LSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICog
eVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0MngyIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIG11bChmbG9hdCB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9
IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBt
dWwoZmxvYXQzeDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsK
LSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBd
WzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1b
MV0gPSB4WzJdWzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZs
b2F0IHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzNdWzBdID0geCAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0g
eCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzNdWzFdID0geCAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11
bChmbG9hdDR4MiB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5Owot
ICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFszXVswXSA9IHhbM11b
MF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsx
XSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJl
c3VsdFszXVsxXSA9IHhbM11bMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyBtdWwoZmxvYXQgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRb
MV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbXVs
KGZsb2F0MngzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsx
XSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0geFsxXVsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG11bChmbG9h
dCB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHgg
KiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsx
XVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5WzJdWzJdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQzeDMgeCwgZmxvYXQgeSkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBd
ICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0g
PSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1
bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsK
LSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgbXVsKGZsb2F0IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzNd
WzBdID0geCAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzNdWzFdID0geCAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0g
eCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0geCAqIHlbM11bMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdDR4MyB4LCBmbG9hdCB5KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5Owot
ICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1b
MF0gKiB5OwotICAgIHJlc3VsdFszXVswXSA9IHhbM11bMF0gKiB5OwotICAgIHJlc3VsdFswXVsx
XSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJl
c3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFszXVsxXSA9IHhbM11bMV0gKiB5
OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3VsdFsxXVsyXSA9IHhb
MV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5OwotICAgIHJlc3VsdFsz
XVsyXSA9IHhbM11bMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwo
ZmxvYXQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0g
PSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bM10gPSB4ICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
bXVsKGZsb2F0Mng0IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsx
XVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFd
WzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzNdID0geFswXVszXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IG11bChmbG9hdCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9
IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHggKiB5WzBdWzJdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5
WzJdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsz
XSA9IHggKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVszXSA9IHggKiB5WzJdWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQgeSkgewotICAg
IGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICog
eTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4
WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRb
MF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAg
ICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsKLSAgICByZXN1bHRbMF1bM10gPSB4WzBdWzNd
ICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNdICogeTsKLSAgICByZXN1bHRbMl1bM10g
PSB4WzJdWzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0
IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzNdWzBdID0geCAqIHlbM11bMF07
Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNd
WzFdID0geCAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzNdWzJdID0geCAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0g
eCAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAgcmVzdWx0
WzJdWzNdID0geCAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzNdID0geCAqIHlbM11bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDR4NCB4LCBmbG9hdCB5KSB7
Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5Owot
ICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1b
MF0gKiB5OwotICAgIHJlc3VsdFszXVswXSA9IHhbM11bMF0gKiB5OwotICAgIHJlc3VsdFswXVsx
XSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJl
c3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFszXVsxXSA9IHhbM11bMV0gKiB5
OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5OwotICAgIHJlc3VsdFsxXVsyXSA9IHhb
MV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl0gKiB5OwotICAgIHJlc3VsdFsz
XVsyXSA9IHhbM11bMl0gKiB5OwotICAgIHJlc3VsdFswXVszXSA9IHhbMF1bM10gKiB5OwotICAg
IHJlc3VsdFsxXVszXSA9IHhbMV1bM10gKiB5OwotICAgIHJlc3VsdFsyXVszXSA9IHhbMl1bM10g
KiB5OwotICAgIHJlc3VsdFszXVszXSA9IHhbM11bM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci11aW50IG11bCh1aW50MiB4LCB1aW50MiB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsK
LX0KLXVpbnQgbXVsKHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwot
fQotdWludCBtdWwodWludDQgeCwgdWludDQgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19
Ci1pbnQgbXVsKGludDIgeCwgaW50MiB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWlu
dCBtdWwoaW50MyB4LCBpbnQzIHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotaW50IG11
bChpbnQ0IHgsIGludDQgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwo
ZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0IG11
bChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotZmxvYXQg
bXVsKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9h
dDIgbXVsKGZsb2F0MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRb
MV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0MngyIHgsIGZsb2F0MiB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSAr
PSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAg
cmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
bXVsKGZsb2F0MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0g
Kz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
IG11bChmbG9hdDN4MiB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsK
LSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0g
KiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0MiB4LCBmbG9h
dDR4MiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJl
c3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBd
OwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsy
XVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM11bMF0gKiB5WzNdOwotICAgIHJlc3Vs
dFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsx
XSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0g
ICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDIgbXVsKGZsb2F0MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsy
XSAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQyeDMg
eCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBd
ICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICog
eVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0g
MDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhb
MV1bMl0gKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MyB4
LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwot
ICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsy
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDN4MyB4LCBmbG9hdDMg
eSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRb
MF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwot
ICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAg
IHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAq
IHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4
WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXVsyXSAqIHlbMl07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0g
Kz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJl
c3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXSA9IDA7
Ci0gICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFd
ICogeVszXVsxXTsKLSAgICByZXN1bHRbM10gKz0geFsyXSAqIHlbM11bMl07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9h
dDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0g
KiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0g
Kz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM11bMF0gKiB5WzNdOwotICAg
IHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJl
c3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlb
Ml07Ci0gICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5WzNdOwotICAgIHJlc3VsdFsyXSA9IDA7
Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFd
WzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXVsyXSAqIHlbMl07Ci0gICAgcmVzdWx0
WzJdICs9IHhbM11bMl0gKiB5WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVs
KGZsb2F0NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0g
Kz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFswXSArPSB4WzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJl
c3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXSArPSB4
WzNdICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDJ4
NCB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsK
LSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1b
MF0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0g
KiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMl0g
PSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0g
eFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFsw
XVszXSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV1bM10gKiB5WzFdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl0gPSAw
OwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsx
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXSArPSB4WzNdICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11
bChmbG9hdDN4NCB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAg
ICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5
WzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBd
OwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsy
XVsyXSAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXVsz
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV1bM10gKiB5WzFdOwotICAgIHJlc3VsdFsz
XSArPSB4WzJdWzNdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChm
bG9hdDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdICs9
IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1
bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFsz
XSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XSArPSB4WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXSAqIHlbMl1bM107Ci0g
ICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXSAqIHlbM11bMF07Ci0gICAg
cmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJdICogeVsz
XVsyXTsKLSAgICByZXN1bHRbM10gKz0geFszXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBd
OwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsy
XVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM11bMF0gKiB5WzNdOwotICAgIHJlc3Vs
dFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsx
XSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0g
ICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5WzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAg
cmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICog
eVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXVsyXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdICs9
IHhbM11bMl0gKiB5WzNdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhb
MF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4WzFdWzNdICogeVsxXTsKLSAgICByZXN1
bHRbM10gKz0geFsyXVszXSAqIHlbMl07Ci0gICAgcmVzdWx0WzNdICs9IHhbM11bM10gKiB5WzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQy
eDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1b
MF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1b
MV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsx
XVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0g
Kz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQyeDIgeCwgZmxv
YXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0
WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsx
XSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQy
eDMgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAg
IHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsK
LSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFd
ICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsy
XVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0M3gyIHgsIGZs
b2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlb
Ml1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVsw
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAw
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1b
MV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0g
MDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBd
WzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBd
WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
Ml1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0M3g0
IHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlb
Ml1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5
WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAg
ICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsy
XTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIG11bChmbG9hdDR4MiB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFd
WzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJl
c3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwot
ICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbM11bMF0gKiB5WzNd
WzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
M11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3Vs
dFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsx
XSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbM11bMV0gKiB5WzNdWzNdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQyeDIgeSkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVsw
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0g
MDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFd
WzJdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0
MngzIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsw
XVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4
WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDR4
MiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVsw
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBd
OwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBd
WzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0g
ICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwot
ICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0g
Kz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRb
M11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0g
KiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQzeDMg
eCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzFd
ID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsy
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0g
eFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1b
MF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1b
MF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBd
WzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJd
WzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsy
XVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
Ml1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJd
ICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdDN4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAg
ZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAg
IHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0g
eFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVz
dWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSAr
PSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRb
Ml1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsK
LSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzJd
ICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBt
dWwoZmxvYXQ0eDMgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1b
Ml0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1b
Ml0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICog
eVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0NHgzIHgs
IGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1b
M107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsz
XVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
MV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFd
ID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFd
ICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAg
cmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlb
MF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsy
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0g
eFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5
WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1
bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIG11bChmbG9hdDR4MyB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11b
MF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9
IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFd
WzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFsz
XVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAq
IHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbM11bMF0gKiB5WzNdWzNdOwotICAgIHJl
c3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBd
WzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
M11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFd
ICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4
WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07
Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbM11bMV0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsy
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAg
IHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5
WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1b
Ml0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNd
WzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICog
eVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmVz
dWx0WzNdWzJdICs9IHhbM11bMl0gKiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsx
XVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzNd
ID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsx
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0g
MDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFd
WzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsw
XVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsK
LSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAw
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1b
Ml0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICog
eVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVz
dWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVszXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJl
c3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsx
XVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsKLSAgICByZXN1bHRbM11bM10g
Kz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMV1bM10gKiB5WzNd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQzeDQgeCwgZmxv
YXQyeDMgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsy
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSAw
OwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
M10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1b
M10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IG11bChmbG9hdDN4NCB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBd
WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsw
XVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0g
PSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhb
MF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJd
ID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4
WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsz
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVsz
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0g
eFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1b
M10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1b
M10gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQz
eDQgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1b
MF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9
IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJd
WzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJd
WzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSAr
PSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFsw
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsy
XVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
Ml1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFd
ICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVsz
XVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0
WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11b
Ml0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXN1
bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVszXSAr
PSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bM10gPSAwOwotICAgIHJlc3VsdFsz
XVszXSArPSB4WzBdWzNdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bM10gKz0geFsxXVszXSAq
IHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMl1bM10gKiB5WzNdWzJdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQyeDQgeSkgewot
ICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRb
MF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
Ml1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsK
LSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFd
ICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsy
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bM10gPSAw
OwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
M10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNdWzNdICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9
IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzNdWzNdICogeVsxXVsz
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0
M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJd
WzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAq
IHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsw
XVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsK
LSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFd
ICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsy
XVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0
WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107
Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsy
XSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1
bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1b
M10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAg
ICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0g
MDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFszXVszXSAqIHlbMV1bM107Ci0gICAgcmVz
dWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVszXSAr
PSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFszXVszXSAqIHlbMl1b
M107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDR4NCB4LCBmbG9h
dDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsx
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsy
XVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwot
ICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0g
KiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhb
MF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsK
LSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbM11bMF0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3Vs
dFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNd
OwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5
WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1
bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbM11b
MV0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFd
WzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJl
c3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwot
ICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0g
Kz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbM11bMl0gKiB5WzNd
WzNdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhb
M11bM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNd
ICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzFdWzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAg
cmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4
WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07
Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbM11bM10gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsz
XSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNdWzBdOwotICAgIHJlc3Vs
dFszXVszXSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bM10gKz0geFsyXVsz
XSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbM11bM10gKiB5WzNdWzNdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByYWRpYW5zICovCi1mbG9h
dCByYWRpYW5zKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAqIDMuMTQxNTkgLyAxODA7Ci19Ci1m
bG9hdDIgcmFkaWFucyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gcmFkaWFucyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByYWRpYW5zKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcmFkaWFucyhmbG9hdDMgeCkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFucyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSByYWRpYW5zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJhZGlhbnMoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByYWRpYW5zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJh
ZGlhbnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmFkaWFucyh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSByYWRpYW5zKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByYWRp
YW5zKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgcmFk
aWFucyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiByYWRpYW5zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSByYWRpYW5zKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBy
YWRpYW5zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIHJhZGlhbnMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcmFkaWFucyhmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSByYWRpYW5zKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
NCByYWRpYW5zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByYWRpYW5zKHhb
MV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByYWRpYW5zKGZsb2F0M3g0
IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmFkaWFucyh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByYWRpYW5zKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IHJhZGlhbnMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IHJhZGlhbnMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSByYWRpYW5zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMo
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmFkaWFucyh4WzNdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJhZGlhbnMo
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmFkaWFucyh4WzJdWzNdKTsKLSAgICByZXN1
bHRbM11bM10gPSByYWRpYW5zKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBjZWlsICovCi1uYXRpdmUgZmxvYXQgY2VpbChmbG9hdCk7Ci1mbG9h
dDIgY2VpbChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
Y2VpbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWlsKHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgY2VpbChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gY2VpbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWlsKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGNlaWwoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBj
ZWlsKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWls
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNlaWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY2Vp
bCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBjZWlsKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBjZWlsKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWls
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
Y2VpbChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBj
ZWlsKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBjZWlsKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyBjZWlsKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIGNlaWwoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjZWls
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
Y2VpbChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNlaWwo
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBj
ZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBjZWlsKHhbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBjZWlsKGZsb2F0Mng0IHgpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNl
aWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY2VpbCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBjZWlsKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBjZWlsKGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2Vp
bCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY2VpbCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBjZWlsKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNlaWwoeFsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNlaWwoZmxvYXQ0eDQgeCkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNlaWwo
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gY2VpbCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBj
ZWlsKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gY2VpbCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBjZWlsKHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc2luICov
Ci1uYXRpdmUgZmxvYXQgYXNpbihmbG9hdCk7Ci1mbG9hdDIgYXNpbihmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBhc2luKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYXNpbihmbG9h
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbih4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBhc2luKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW4oeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhc2luKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbih4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBhc2luKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhc2luKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgYXNpbihmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBhc2luKGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2lu
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhc2luKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4o
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGFzaW4oZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgYXNpbihmbG9hdDR4MyB4KSB7Ci0gICAg
ZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXNp
bih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNpbih4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBhc2luKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBhc2luKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2lu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
YXNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhc2luKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhc2luKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBh
c2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gYXNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhc2luKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGFzaW4oeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IGFzaW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBhc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXNp
bih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXNpbih4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBhc2luKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc3VpbnQgKi8KLXVpbnQgYXN1aW50KGludCB4KSB7
Ci0gICAgcmV0dXJuIHVpbnQoeCk7Ci19Ci11aW50MiBhc3VpbnQoaW50MiB4KSB7Ci0gICAgdWlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhc3VpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGFzdWludChpbnQz
IHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc3VpbnQoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGFzdWludChpbnQ0IHgpIHsKLSAgICB1
aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGFzdWludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gYXN1aW50KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGFzdWlu
dCh1aW50IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQyIGFzdWludCh1aW50MiB4KSB7Ci0g
ICAgcmV0dXJuIHg7Ci19Ci11aW50MyBhc3VpbnQodWludDMgeCkgewotICAgIHJldHVybiB4Owot
fQotdWludDQgYXN1aW50KHVpbnQ0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLW5hdGl2ZSB1aW50
IGFzdWludChmbG9hdCk7Ci11aW50MiBhc3VpbnQoZmxvYXQyIHgpIHsKLSAgICB1aW50MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWlu
dCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgYXN1aW50KGZsb2F0MyB4KSB7
Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWludCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXN1aW50KHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhc3VpbnQoZmxvYXQ0IHgpIHsKLSAgICB1aW50
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFzdWludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gYXN1aW50KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBwb3cgKi8KLW5hdGl2ZSBmbG9hdCBwb3coZmxvYXQsIGZsb2F0KTsKLWZsb2F0MiBw
b3coZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0sIHlbMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcG93KGZsb2F0MyB4LCBmbG9hdDMgeSkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcG93KHhbMF0sIHlbMF0pOwotICAg
IHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBwb3coeFsyXSwg
eVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBwb3coZmxvYXQ0IHgsIGZsb2F0
NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBwb3coeFswXSwgeVsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IHBv
dyh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBwb3coeFszXSwgeVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHBvdyhmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBv
dyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgcG93
KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBv
dyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBw
b3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHBv
dyhmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBw
b3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
cG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHBvdyhmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwg
eVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBwb3coZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJd
LCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcG93KGZsb2F0NHgz
IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gcG93KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHBvdyh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1b
Ml0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBwb3coeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IHBvdyhmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsw
XVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBwb3coeFsx
XVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHBvdyhmbG9h
dDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93KHhb
Ml1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHBvdyh4
WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBwb3coeFsxXVszXSwgeVsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcG93KHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBwb3coZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3co
eFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93
KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHBv
dyh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBwb3coeFswXVszXSwgeVsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcG93KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHBvdyh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBw
b3coeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIHRhbiAqLwotbmF0aXZlIGZsb2F0IHRhbihmbG9hdCk7Ci1mbG9hdDIgdGFuKGZs
b2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW4oeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDMgdGFuKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0
YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRh
bih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHRhbihmbG9hdDQgeCkgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0YW4oeFsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gdGFuKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiB0YW4oZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRhbihmbG9hdDN4MiB4KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0
YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0YW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0YW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDMgdGFuKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRh
bih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRh
bihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbih4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
dGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0
YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCB0YW4oZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSB0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0YW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW4oeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IHRhbih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgdGFuKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFu
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4o
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0YW4oeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbih4WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSB0YW4oeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdGFuKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmbWEg
Ki8KLWZsb2F0IGZtYShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7Ci0gICAgcmV0dXJuIHgg
KiB5ICsgejsKLX0KLWZsb2F0MiBmbWEoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9hdDIgeikgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIGZtYShmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0MyB6KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbWEoeFswXSwgeVswXSwgelswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZm1hKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZt
YSh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZtYShm
bG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBmbWEoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1hKHhb
MV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZtYSh4WzJdLCB5WzJdLCB6WzJdKTsK
LSAgICByZXN1bHRbM10gPSBmbWEoeFszXSwgeVszXSwgelszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MngyIGZtYShmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5LCBmbG9hdDJ4MiB6KSB7
Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5
WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVsw
XSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZm1hKGZsb2F0M3gyIHgsIGZsb2F0
M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEo
eFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1b
MV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5
WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsx
XSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZtYShmbG9hdDR4
MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEo
eFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbWEoeFszXVsxXSwgeVszXVsx
XSwgelszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZtYShmbG9hdDJ4
MyB4LCBmbG9hdDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBm
bWEoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5
WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZm1hKGZs
b2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1b
MV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtYSh4WzNdWzFdLCB5
WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsy
XSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBmbWEoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZtYShmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5
LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEo
eFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1b
MV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5
WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsy
XSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtYSh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBmbWEoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZtYShmbG9hdDN4NCB4LCBmbG9hdDN4NCB5
LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEo
eFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1b
MF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5
WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsx
XSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGZtYSh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBmbWEoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZm1hKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4NCBmbWEoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVswXVsw
XSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gZm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZt
YSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbWEoeFsx
XVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1hKHhbMl1bMl0s
IHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZtYSh4WzNdWzJdLCB5WzNd
WzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbWEoeFswXVszXSwgeVswXVszXSwg
elswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1hKHhbMV1bM10sIHlbMV1bM10sIHpbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZtYSh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBmbWEoeFszXVszXSwgeVszXVszXSwgelszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRldGVybWluYW50ICovCi1m
bG9hdCBkZXRlcm1pbmFudChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdCBkZXRl
cm1pbmFudChmbG9hdDJ4MiB4KSB7Ci0gICAgcmV0dXJuIHhbMF1bMF0gKiB4WzFdWzFdIC0geFsx
XVswXSAqIHhbMF1bMV07Ci19Ci1mbG9hdCBkZXRlcm1pbmFudChmbG9hdDN4MyB4KSB7Ci0gICAg
cmV0dXJuIHhbMF1bMF0gKiB4WzFdWzFdICogeFsyXVsyXSArCi0gICAgICAgICAgIHhbMV1bMF0g
KiB4WzJdWzFdICogeFswXVsyXSArCi0gICAgICAgICAgIHhbMl1bMF0gKiB4WzBdWzFdICogeFsx
XVsyXSAtCi0gICAgICAgICAgIHhbMF1bMl0gKiB4WzFdWzFdICogeFsyXVswXSAtCi0gICAgICAg
ICAgIHhbMV1bMl0gKiB4WzJdWzFdICogeFswXVswXSAtCi0gICAgICAgICAgIHhbMl1bMl0gKiB4
WzBdWzFdICogeFsxXVswXTsKLX0KLWZsb2F0IGRldGVybWluYW50KGZsb2F0NHg0IHgpIHsKLSAg
ICBmbG9hdCByZXN1bHQ7Ci0gICAgZmxvYXQzeDMgbWlub3I7Ci0gICAgbWlub3JbMF1bMF0gPSB4
WzFdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsyXVsxXTsKLSAgICBtaW5vclsyXVswXSA9IHhb
M11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzFdWzJdOwotICAgIG1pbm9yWzFdWzFdID0geFsy
XVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07Ci0gICAgbWlub3JbMF1bMl0gPSB4WzFd
WzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsyXVszXTsKLSAgICBtaW5vclsyXVsyXSA9IHhbM11b
M107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgeFswXVswXSAqIGRldGVybWluYW50KG1pbm9yKTsK
LSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAgbWlub3JbMV1bMF0gPSB4WzJdWzFdOwot
ICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBtaW5vclswXVsxXSA9IHhbMF1bMl07Ci0g
ICAgbWlub3JbMV1bMV0gPSB4WzJdWzJdOwotICAgIG1pbm9yWzJdWzFdID0geFszXVsyXTsKLSAg
ICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlub3JbMV1bMl0gPSB4WzJdWzNdOwotICAg
IG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgLSB4WzFdWzBdICog
ZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBdWzBdID0geFswXVsxXTsKLSAgICBtaW5v
clsxXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4WzNdWzFdOwotICAgIG1pbm9y
WzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhbMV1bMl07Ci0gICAgbWlub3Jb
Ml1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFswXVszXTsKLSAgICBtaW5vclsx
XVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzNdWzNdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCArIHhbMl1bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7Ci0gICAgbWlub3JbMF1bMF0g
PSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsxXVsxXTsKLSAgICBtaW5vclsyXVswXSA9
IHhbMl1bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBdWzJdOwotICAgIG1pbm9yWzFdWzFdID0g
eFsxXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbMl1bMl07Ci0gICAgbWlub3JbMF1bMl0gPSB4
WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsxXVszXTsKLSAgICBtaW5vclsyXVsyXSA9IHhb
Ml1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IC0geFszXVswXSAqIGRldGVybWluYW50KG1pbm9y
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZmxvb3IgKi8K
LW5hdGl2ZSBmbG9hdCBmbG9vcihmbG9hdCk7Ci1mbG9hdDIgZmxvb3IoZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb29yKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGZsb29yKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZmxvb3Io
ZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb29yKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGZsb29yKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZsb29y
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZmxvb3IoZmxvYXQ0IHgpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb29yKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGZsb29yKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZsb29yKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IGZsb29yKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBmbG9vcihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGZsb29yKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmbG9vcihm
bG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZs
b29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBm
bG9vcihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZs
b29yKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZsb29yKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmbG9vcihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZs
b29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbG9vcihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZs
b29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZsb29yKHhbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbG9vcihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZsb29yKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZs
b29yKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZsb29yKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZsb29yKHhbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbG9vcihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZs
b29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGZsb29yKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZsb29yKHhb
MV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbG9vcihmbG9hdDN4NCB4
KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZs
b29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZsb29yKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZsb29yKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGZsb29yKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZsb29yKHhbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmbG9vcihmbG9hdDR4NCB4KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZs
b29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZsb29yKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGZsb29yKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGZsb29yKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZsb29yKHhbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGZsb29yKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZsb29y
KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZsb29yKHhbMl1bM10pOwotICAgIHJlc3Vs
dFszXVszXSA9IGZsb29yKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBjcm9zcyAqLwotZmxvYXQzIGNyb3NzKGZsb2F0MyB1LCBmbG9hdDMgdikg
ewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB1LnkgKiB2LnogLSB1LnogKiB2
Lnk7Ci0gICAgcmVzdWx0LnkgPSB1LnogKiB2LnggLSB1LnggKiB2Lno7Ci0gICAgcmVzdWx0Lnog
PSB1LnggKiB2LnkgLSB1LnkgKiB2Lng7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGlzZmluaXRlICovCi1uYXRpdmUgYm9vbCBpc2Zpbml0ZShmbG9hdCk7Ci1i
b29sMiBpc2Zpbml0ZShmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBpc2Zpbml0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNmaW5pdGUoZmxvYXQzIHgpIHsKLSAgICBib29s
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5pdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNmaW5pdGUoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzZmluaXRlKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGlzZmluaXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzZmluaXRlKHhbMl0pOwotICAgIHJl
c3VsdFszXSA9IGlzZmluaXRlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZE9yICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9y
KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfaW50KiwgaW50
LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNf
dWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
T3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IodGhyZWFkZ3Jv
dXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhy
ZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBh
dG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVk
IGF0YW4yICovCi1uYXRpdmUgZmxvYXQgYXRhbjIoZmxvYXQsIGZsb2F0KTsKLWZsb2F0MiBhdGFu
MihmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4yKHhbMV0sIHlbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYXRhbjIoZmxvYXQzIHgsIGZsb2F0MyB5
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhdGFuMih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
dGFuMih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGF0YW4yKGZs
b2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YXRhbjIoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gYXRhbjIoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXRhbjIo
eFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGF0YW4yKGZsb2F0
MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIo
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGF0YW4yKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkp
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRh
bjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGF0YW4yKGZsb2F0NHgy
IHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbjIoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
YXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXRhbjIoeFszXVsxXSwgeVszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGF0YW4yKGZsb2F0MngzIHgsIGZsb2F0
MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsx
XVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGF0YW4yKGZs
b2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRh
bjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIo
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGF0YW4yKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gYXRhbjIoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRh
bjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gYXRhbjIoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIo
eFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbjIoeFsyXVsyXSwgeVsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbjIoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGF0YW4yKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRh
bjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbjIoeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gYXRhbjIoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IGF0YW4yKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
YXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRh
bjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbjIoeFswXVszXSwg
eVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbjIoeFsxXVszXSwgeVsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gYXRhbjIoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHg0IGF0YW4yKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
YXRhbjIoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gYXRhbjIoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRh
bjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gYXRhbjIoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gYXRhbjIoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbjIo
eFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRhbjIoeFsyXVszXSwgeVsy
XVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXRhbjIoeFszXVszXSwgeVszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIERldmljZU1lbW9yeUJhcnJp
ZXJXaXRoR3JvdXBTeW5jICovCi1uYXRpdmUgdm9pZCBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdy
b3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZm1vZCAqLwotCi1mbG9hdCBmbW9kKGZs
b2F0IHgsIGZsb2F0IHkpIHsKLSAgICB1aW50IHdob2xlID0gdWludCh4IC8geSk7Ci0gICAgZmxv
YXQgbXVsdGlwbGUgPSBmbG9hdCh3aG9sZSkgKiB5OwotICAgIHJldHVybiB4IC0gbXVsdGlwbGU7
Ci19Ci1mbG9hdDIgZm1vZChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1v
ZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZtb2QoZmxvYXQz
IHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbW9k
KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtb2QoeFsxXSwgeVsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gZm1vZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IGZtb2QoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtb2QoeFsxXSwgeVsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZm1vZCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBm
bW9kKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmbW9kKGZs
b2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9k
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZm1vZChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7
Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmbW9kKGZsb2F0NHgyIHgsIGZsb2F0
NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4
WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZm1vZCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
bW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBmbW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MyBmbW9kKGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZtb2QoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4
WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZm1vZChm
bG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1v
ZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4
WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbW9kKHhbM11bMl0sIHlbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbW9kKGZsb2F0Mng0IHgsIGZs
b2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1v
ZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1vZCh4WzBdWzNdLCB5WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbW9kKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1v
ZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtb2QoeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1vZCh4WzBdWzNdLCB5WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGZtb2QoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IGZtb2QoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1v
ZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11bMF0sIHlb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2QoeFszXVsx
XSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZm1vZCh4
WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmbW9kKHhbMF1bM10sIHlbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gZm1vZCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBm
bW9kKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBvcGVyYXRvci0gKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3ItKGludCwgaW50KTsK
LW5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LCB1aW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRv
ci0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3ItKGludCk7Ci1uYXRpdmUgZmxv
YXQgb3BlcmF0b3ItKGZsb2F0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci0odWludDIsIHVpbnQy
KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci0odWludCwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9w
ZXJhdG9yLSh1aW50MiwgdWludCk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3ItKHVpbnQzLCB1aW50
Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3ItKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBv
cGVyYXRvci0odWludDMsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLSh1aW50NCwgdWlu
dDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLSh1aW50LCB1aW50NCk7Ci1uYXRpdmUgdWludDQg
b3BlcmF0b3ItKHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQyLCBpbnQy
KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0
b3ItKGludDIsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50MywgaW50Myk7Ci1uYXRp
dmUgaW50MyBvcGVyYXRvci0oaW50LCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQz
LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGludDQsIGludDQpOwotbmF0aXZlIGludDQg
b3BlcmF0b3ItKGludCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50NCwgaW50KTsK
LW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIg
b3BlcmF0b3ItKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQy
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLShmbG9hdDMsIGZsb2F0Myk7Ci1uYXRp
dmUgZmxvYXQzIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0
b3ItKGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxvYXQ0LCBmbG9h
dDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxv
YXQ0IG9wZXJhdG9yLShmbG9hdDQsIGZsb2F0KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQy
KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShp
bnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9w
ZXJhdG9yLShmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxvYXQ0KTsKLW5hdGl2
ZSBmbG9hdDJ4MiBvcGVyYXRvci0oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4
MiBvcGVyYXRvci0oZmxvYXQyeDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci0o
ZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci0oZmxvYXQyeDIpOwot
bmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZs
b2F0M3gyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJh
dG9yLShmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLShmbG9hdDN4
Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRp
dmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIg
b3BlcmF0b3ItKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZs
b2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci0oZmxvYXQyeDMsIGZsb2F0MngzKTsK
LW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9h
dDJ4MyBvcGVyYXRvci0oZmxvYXQyeDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRv
ci0oZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLShmbG9hdDN4MywgZmxvYXQz
eDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQzeDMpOwotbmF0aXZl
IGZsb2F0M3gzIG9wZXJhdG9yLShmbG9hdDN4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gzIG9w
ZXJhdG9yLShmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3ItKGZsb2F0NHgzLCBm
bG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDR4Myk7Ci1u
YXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3ItKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
eDMgb3BlcmF0b3ItKGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQy
eDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBm
bG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShm
bG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShmbG9hdCwgZmxv
YXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShmbG9hdDN4NCwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0
b3ItKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0
LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0NHg0LCBmbG9hdCk7
Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIG1pbiAqLwotdWludCBtaW4odWludCB4LCB1aW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkg
PyB5IDogeDsKLX0KLXVpbnQyIG1pbih1aW50MiB4LCB1aW50MiB5KSB7Ci0gICAgdWludDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
aW4oeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIG1pbih1aW50MyB4
LCB1aW50MyB5KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBtaW4odWlu
dDQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4o
eFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtaW4oeFszXSwgeVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBtaW4oaW50IHgsIGludCB5KSB7Ci0gICAgcmV0
dXJuIHggPiB5ID8geSA6IHg7Ci19Ci1pbnQyIG1pbihpbnQyIHgsIGludDIgeSkgewotICAgIGlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbWluKGlu
dDMgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgbWluKGlu
dDQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWluKHhbM10sIHlbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSkgewotICAg
IHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotZmxvYXQyIG1pbihmbG9hdDIgeCwgZmxvYXQyIHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBtaW4oZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWluKHhbMV0s
IHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IG1pbihmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
aW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJl
c3VsdFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgbWluKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtaW4oZmxvYXQzeDIgeCwgZmxvYXQzeDIg
eSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbWluKGZsb2F0NHgyIHgsIGZsb2F0NHgy
IHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gbWluKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgbWluKGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFsw
XVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIG1pbihmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4
WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtaW4oZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4o
eFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWlu
KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbWluKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1p
bih4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbWlu
KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1p
bih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBt
aW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWluKHhbMF1bM10sIHlb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWluKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsyXSwg
eVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWluKHhbMF1bM10sIHlbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBtaW4oeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IG1pbihmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWluKHhbM11bMl0sIHlbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWluKHhbMl1b
M10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1pbih4WzNdWzNdLCB5WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRY
b3IgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRv
bWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3Io
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRn
cm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRn
cm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBp
bnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgR3JvdXBNZW1vcnlC
YXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZvaWQgR3JvdXBNZW1vcnlCYXJyaWVyV2l0
aEdyb3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdHJ1bmMgKi8KLW5hdGl2ZSBmbG9h
dCB0cnVuYyhmbG9hdCk7Ci1mbG9hdDIgdHJ1bmMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHRydW5jKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRydW5j
KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgdHJ1bmMoZmxvYXQzIHgpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRydW5jKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHRydW5jKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRydW5jKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgdHJ1bmMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRydW5jKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRy
dW5jKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRydW5jKHhbMl0pOwotICAgIHJlc3VsdFszXSA9
IHRydW5jKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiB0cnVuYyhmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5j
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0cnVuYyhmbG9hdDN4MiB4KSB7
Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5j
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0cnVuYyhmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRydW5jKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IHRydW5jKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MyB0cnVuYyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyB0cnVuYyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRy
dW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHRydW5jKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MyB0cnVuYyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRy
dW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IHRydW5jKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRydW5jKHhbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRydW5jKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IHRydW5jKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4NCB0cnVuYyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHRydW5jKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRydW5jKHhbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0cnVuYyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRydW5jKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IHRydW5jKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRydW5j
KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRydW5jKHhbMl1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0cnVuYyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IHRydW5jKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRydW5j
KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRydW5jKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRydW5jKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHRydW5jKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRydW5jKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IHRydW5jKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHRy
dW5jKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBtYXggKi8KLXVpbnQgbWF4KHVpbnQgeCwgdWludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8g
eCA6IHk7Ci19Ci11aW50MiBtYXgodWludDIgeCwgdWludDIgeSkgewotICAgIHVpbnQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4
KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBtYXgodWludDMgeCwg
dWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwg
eVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9
IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgbWF4KHVpbnQ0
IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhb
MF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWF4KHhbM10sIHlbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotCi1pbnQgbWF4KGludCB4LCBpbnQgeSkgewotICAg
IHJldHVybiB4ID4geSA/IHggOiB5OwotfQotaW50MiBtYXgoaW50MiB4LCBpbnQyIHkpIHsKLSAg
ICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIG1h
eChpbnQzIHgsIGludDMgeSkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1h
eCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IG1h
eChpbnQ0IHgsIGludDQgeSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1h
eCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1heCh4WzNdLCB5WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0IG1heChmbG9hdCB4LCBmbG9hdCB5
KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7Ci19Ci1mbG9hdDIgbWF4KGZsb2F0MiB4LCBm
bG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0s
IHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIG1heChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
YXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbWF4KGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gbWF4KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiBtYXgoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1h
eCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1heChmbG9hdDN4MiB4LCBm
bG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1h
eCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBt
YXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtYXgoZmxvYXQ0eDIgeCwg
ZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBt
YXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MyBtYXgoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgbWF4KGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJd
LCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1heChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IG1heCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBtYXgoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1b
Ml0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gbWF4KHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBtYXgoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYXgoeFsw
XVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1bM10sIHlbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtYXgoZmxvYXQzeDQgeCwgZmxvYXQz
eDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1heCh4
WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYXgoeFswXVszXSwgeVswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IG1heCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgbWF4KGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1h
eCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYXgoeFszXVsyXSwgeVsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWF4KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBt
YXgoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbWF4KHhbM11bM10sIHlb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFz
aW50ICovCi1pbnQgYXNpbnQoaW50IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludDIgYXNpbnQo
aW50MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQzIGFzaW50KGludDMgeCkgewotICAgIHJl
dHVybiB4OwotfQotaW50NCBhc2ludChpbnQ0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWludCBh
c2ludCh1aW50IHgpIHsKLSAgICByZXR1cm4gaW50KHgpOwotfQotaW50MiBhc2ludCh1aW50MiB4
KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYXNp
bnQodWludDMgeCkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW50
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGFzaW50KHVpbnQ0IHgpIHsKLSAg
ICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXN1
bHRbM10gPSBhc2ludCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotbmF0aXZlIGludCBh
c2ludChmbG9hdCk7Ci1pbnQyIGFzaW50KGZsb2F0MiB4KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYXNpbnQoZmxvYXQzIHgpIHsKLSAgICBpbnQz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBh
c2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2ludCh4WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotaW50NCBhc2ludChmbG9hdDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzaW50KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW50KHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjbGFtcCAqLwotbmF0
aXZlIHVpbnQgY2xhbXAodWludCwgdWludCwgdWludCk7Ci1uYXRpdmUgdWludDIgY2xhbXAodWlu
dDIsIHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDMgY2xhbXAodWludDMsIHVpbnQzLCB1aW50
Myk7Ci1uYXRpdmUgdWludDQgY2xhbXAodWludDQsIHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgaW50
IGNsYW1wKGludCwgaW50LCBpbnQpOwotbmF0aXZlIGludDIgY2xhbXAoaW50MiwgaW50MiwgaW50
Mik7Ci1uYXRpdmUgaW50MyBjbGFtcChpbnQzLCBpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQ0IGNs
YW1wKGludDQsIGludDQsIGludDQpOwotbmF0aXZlIGZsb2F0IGNsYW1wKGZsb2F0LCBmbG9hdCwg
ZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBjbGFtcChmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5h
dGl2ZSBmbG9hdDMgY2xhbXAoZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0
IGNsYW1wKGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIGNsYW1wKGZs
b2F0MngyLCBmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIGNsYW1wKGZsb2F0
M3gyLCBmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIGNsYW1wKGZsb2F0NHgy
LCBmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIGNsYW1wKGZsb2F0MngzLCBm
bG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIGNsYW1wKGZsb2F0M3gzLCBmbG9h
dDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIGNsYW1wKGZsb2F0NHgzLCBmbG9hdDR4
MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0Mng0IGNsYW1wKGZsb2F0Mng0LCBmbG9hdDJ4NCwg
ZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IGNsYW1wKGZsb2F0M3g0LCBmbG9hdDN4NCwgZmxv
YXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IGNsYW1wKGZsb2F0NHg0LCBmbG9hdDR4NCwgZmxvYXQ0
eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I8ICovCi1uYXRpdmUgYm9vbCBvcGVy
YXRvcjwoaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8KHVpbnQsIHVpbnQpOwotbmF0
aXZlIGJvb2wgb3BlcmF0b3I8KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8
KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I8KHVpbnQzLCB1aW50Myk7Ci1u
YXRpdmUgYm9vbDQgb3BlcmF0b3I8KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0
b3I8KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPChpbnQzLCBpbnQzKTsKLW5h
dGl2ZSBib29sNCBvcGVyYXRvcjwoaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8
KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjwoZmxvYXQzLCBmbG9hdDMp
OwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPChmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4
MiBvcGVyYXRvcjwoZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9y
PChmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I8KGZsb2F0NHgy
LCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcjwoZmxvYXQyeDMsIGZsb2F0Mngz
KTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPChmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZl
IGJvb2w0eDMgb3BlcmF0b3I8KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBv
cGVyYXRvcjwoZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPChm
bG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I8KGZsb2F0NHg0LCBm
bG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc25hbiAqLwotbmF0aXZlIGJvb2wgaXNu
YW4oZmxvYXQpOwotCi1ib29sMiBpc25hbihmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBpc25hbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25hbih4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNuYW4oZmxvYXQzIHgpIHsKLSAgICBi
b29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4oeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gaXNuYW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNuYW4oeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2w0IGlzbmFuKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGlzbmFuKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzbmFuKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBBbGxNZW1v
cnlCYXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZvaWQgQWxsTWVtb3J5QmFycmllcldp
dGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yXiAqLwotYm9vbCBv
cGVyYXRvcl4oYm9vbCBhLCBib29sIGIpIHsKLSAgICBpZiAoYSkKLSAgICAgICAgcmV0dXJuICFi
OwotICAgIHJldHVybiBiOwotfQotbmF0aXZlIGludCBvcGVyYXRvcl4oaW50LCBpbnQpOwotbmF0
aXZlIHVpbnQgb3BlcmF0b3JeKHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNp
bmYgKi8KLW5hdGl2ZSBib29sIGlzaW5mKGZsb2F0KTsKLWJvb2wyIGlzaW5mKGZsb2F0MiB4KSB7
Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzaW5mKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGlzaW5mKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sMyBpc2lu
ZihmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2luZih4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc2lu
Zih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNpbmYoZmxvYXQ0IHgpIHsK
LSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNpbmYoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNpbmYoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gaXNpbmYoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIG9wZXJhdG9yfCAqLwotYm9vbCBvcGVyYXRvcnwoYm9vbCBhLCBib29sIGIp
IHsKLSAgICByZXR1cm4gYSB8fCBiOwotfQotbmF0aXZlIGludCBvcGVyYXRvcnwoaW50LCBpbnQp
OwotbmF0aXZlIHVpbnQgb3BlcmF0b3J8KHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgZGVncmVlcyAqLwotZmxvYXQgZGVncmVlcyhmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggKiAx
ODAgLyAzLjE0MTU5OwotfQotZmxvYXQyIGRlZ3JlZXMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRlZ3JlZXMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZGVncmVlcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRlZ3JlZXMoZmxv
YXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRlZ3JlZXMoeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZWdy
ZWVzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGVncmVlcyhmbG9hdDQg
eCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGVncmVlcyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRlZ3JlZXMo
eFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGVncmVlcyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDIgZGVncmVlcyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIGRlZ3JlZXMoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGVncmVlcyhmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgZGVncmVlcyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZWdyZWVzKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IGRlZ3JlZXMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBkZWdyZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGVncmVlcyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgZGVncmVlcyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3JlZXMoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgZGVncmVlcyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGRlZ3JlZXMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGVncmVlcyh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZWdyZWVzKHhbMl1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZWdyZWVzKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBkZWdyZWVzKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRlZ3JlZXMo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVncmVlcyh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRlZ3JlZXMo
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGVncmVlcyh4WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlICovCi1uYXRpdmUgdWlu
dCBTYW1wbGUoVGV4dHVyZTFEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRp
dmUgdWludCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUyRDx1aW50Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUzRDx1aW50Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlM0Q8dWludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2Ft
cGxlKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQyIFNhbXBsZShUZXh0dXJlMUQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEPHVpbnQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEPHVp
bnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDIgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVy
ZTNEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGUoVGV4dHVyZTNEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTFEPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMURBcnJh
eTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxl
KFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlKFRleHR1cmUzRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUzRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZShUZXh0dXJlQ3Vi
ZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxl
KFRleHR1cmUxRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8dWludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8
dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1
aW50NCBTYW1wbGUoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24p
OwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTFEPGludD4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUxREFycmF5PGludD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMkQ8aW50Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUyRDxpbnQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxl
KFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUzRDxpbnQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTNEPGludD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGUo
VGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQy
IFNhbXBsZShUZXh0dXJlMUQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQyIFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0
dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQy
IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTNEPGludDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUzRDxpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1w
bGUoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MyBTYW1wbGUoVGV4dHVyZTFEPGludDM+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUyRDxpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGUo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUzRDxpbnQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlM0Q8aW50
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGludDMg
U2FtcGxlKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0
aXZlIGludDQgU2FtcGxlKFRleHR1cmUxRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24p
OwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUxREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2Ft
cGxlKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0
aXZlIGludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTNE
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBp
bnQ0IFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTFEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUyRDxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1
cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxl
KFRleHR1cmUzRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50
MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMUQ8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24p
OwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIg
U2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlM0Q8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTFEPGZsb2F0Mz4sIHNhbXBsZXIsIGZs
b2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUxREFycmF5PGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0
dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMg
U2FtcGxlKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dDQgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMkQ8
ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZShUZXh0dXJlM0Q8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBm
bG9hdDQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVE
ZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBT
YW1wbGUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBTYW1wbGVMZXZlbCAq
LwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJl
MkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQyIFNh
bXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDI+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVp
bnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZl
bChUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7
Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExP
RCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVp
bnQ0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludCBTYW1wbGVM
ZXZlbChUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0Qs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludCBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVMZXZlbChUZXh0dXJlQ3Vi
ZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50
MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBp
bnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0
dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2
ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7
Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNh
bXBsZUxldmVsKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50ND4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVs
KFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50NCBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmVD
dWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MiBT
YW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQyPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9h
dDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQz
IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGZs
b2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9h
dDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0
ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBM
T0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8
ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0
aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZUxldmVsKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVs
KFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBTYW1wbGVCaWFzICovCi1uYXRpdmUgdWludCBT
YW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50
IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVp
bnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJl
MkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZl
IHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVp
bnQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQz
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBT
YW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGVCaWFzKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50ND4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVp
bnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50
NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGlu
dD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4
dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIg
U2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDM+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQzIFNh
bXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJl
Q3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFz
KFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0
dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5h
dGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBs
ZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRl
eHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwot
bmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2Ft
cGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlh
cyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLQotLyogRnVu
Y3Rpb25zIG5hbWVkIFNhbXBsZUdyYWQgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChU
ZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBm
bG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
dWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBT
YW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJl
Q3ViZTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQz
IEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQz
IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8
dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkp
OwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50NCBTYW1w
bGVHcmFkKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFks
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5h
dGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0
dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8
aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0
dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDIgU2FtcGxl
R3JhZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFk
KFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgs
IGZsb2F0MyBERFkpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1w
bGVHcmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGlu
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwot
bmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFk
KFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFkpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyRDxm
bG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0MyBT
YW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRleHR1cmUy
RDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxv
YXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4
dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVH
cmFkKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3Jh
ZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1
cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgs
IGZsb2F0MyBERFkpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2luaCAqLwotbmF0aXZlIGZsb2F0
IHNpbmgoZmxvYXQpOwotZmxvYXQyIHNpbmgoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luaCh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHNpbmgoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gc2luaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzaW5oKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgc2luaChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gc2luaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IHNpbmgoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gc2luaCh4WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgc2luaChmbG9hdDJ4MiB4KSB7Ci0gICAg
ZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gyIHNpbmgoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgc2luaChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
c2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IHNpbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2luaChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxv
YXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzaW5oKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5oKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgzIHNpbmgoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5o
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gc2luaCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
c2luaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbmgoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luaCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgc2luaChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNp
bmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbmgoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBzaW5oKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzaW5oKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2lu
aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBzaW5oKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNpbmgoeFszXVsyXSk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzaW5o
KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbmgoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gc2luaCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgZGR5ICovCi1uYXRpdmUgZmxvYXQgZGR5KGZsb2F0KTsKLWZsb2F0MiBkZHko
ZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeSh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyBkZHkoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
ZGR5KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR5KGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHkoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeSh4WzJdKTsKLSAgICByZXN1
bHRbM10gPSBkZHkoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeShm
bG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR5KGZsb2F0M3gyIHgpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHko
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHkoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBk
ZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
ZGR5KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5KHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHkoeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGRkeSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHkoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQz
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHko
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeSh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHkoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gZGR5KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHko
ZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZGR5KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeSh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5KHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGRkeSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHko
eFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9w
ZXJhdG9yPj0gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPj0oaW50LCBpbnQpOwotbmF0aXZlIGJv
b2wgb3BlcmF0b3I+PSh1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPj0oZmxvYXQs
IGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj49KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUg
Ym9vbDMgb3BlcmF0b3I+PSh1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0o
dWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj49KGludDIsIGludDIpOwotbmF0
aXZlIGJvb2wzIG9wZXJhdG9yPj0oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+
PShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj49KGZsb2F0MiwgZmxvYXQyKTsK
LW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBv
cGVyYXRvcj49KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPj0oZmxv
YXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPj0oZmxvYXQzeDIsIGZs
b2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPj0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsK
LW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPj0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBi
b29sM3gzIG9wZXJhdG9yPj0oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9w
ZXJhdG9yPj0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPj0o
ZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPj0oZmxvYXQzeDQs
IGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPj0oZmxvYXQ0eDQsIGZsb2F0NHg0
KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGRzdCAqLwotdWludDQgZHN0KHVpbnQ0IHNyYzAsIHVp
bnQ0IHNyYzEpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJl
c3VsdC55ID0gc3JjMC55ICogc3JjMS55OwotICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJl
c3VsdC53ID0gc3JjMS53OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGRzdChpbnQ0IHNy
YzAsIGludDQgc3JjMSkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gMTsKLSAg
ICByZXN1bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAgICByZXN1bHQueiA9IHNyYzAuejsKLSAg
ICByZXN1bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRzdChm
bG9hdDQgc3JjMCwgZmxvYXQ0IHNyYzEpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dC54ID0gMTsKLSAgICByZXN1bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAgICByZXN1bHQueiA9
IHNyYzAuejsKLSAgICByZXN1bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkb3QgKi8KLXVpbnQgZG90KHVpbnQgYSwgdWludCBiKSB7
Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotdWludCBkb3QodWludDIgYSwgdWludDIgYikgewotICAg
IHVpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludCBkb3QodWludDMgYSwgdWludDMgYikgewotICAgIHVpbnQgcmVzdWx0ID0gMDsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFd
ICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotdWludCBkb3QodWludDQgYSwgdWludDQgYikgewotICAgIHVpbnQgcmVzdWx0
ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICogYlszXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50IGRvdChpbnQgYSwgaW50IGIpIHsKLSAgICByZXR1cm4gYSAqIGI7Ci19Ci1pbnQgZG90
KGludDIgYSwgaW50MiBiKSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50MyBhLCBpbnQzIGIpIHsKLSAgICBpbnQg
cmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICog
YlsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IGRvdChpbnQ0IGEsIGludDQgYikgewot
ICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbM10gKiBiWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxvYXQgYSwgZmxvYXQgYikgewotICAgIHJldHVy
biBhICogYjsKLX0KLWZsb2F0IGRvdChmbG9hdDIgYSwgZmxvYXQyIGIpIHsKLSAgICBmbG9hdCBy
ZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBk
b3QoZmxvYXQzIGEsIGZsb2F0MyBiKSB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1
bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICog
YlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQgZG90KGZsb2F0NCBhLCBmbG9hdDQgYikgewotICAgIGZsb2F0IHJlc3Vs
dCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVszXSAqIGJbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFzZmxvYXQgKi8KLW5hdGl2ZSBmbG9hdCBhc2Zsb2F0
KGludCk7Ci1mbG9hdDIgYXNmbG9hdChpbnQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGFzZmxvYXQoaW50MyB4KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFzZmxvYXQoaW50NCB4KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXN1
bHRbM10gPSBhc2Zsb2F0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1uYXRpdmUgZmxv
YXQgYXNmbG9hdCh1aW50KTsKLWZsb2F0MiBhc2Zsb2F0KHVpbnQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
YXNmbG9hdCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGFzZmxvYXQodWlu
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxv
YXQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBhc2Zsb2F0KHVpbnQ0IHgp
IHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2Zsb2F0KHhb
Ml0pOwotICAgIHJlc3VsdFszXSA9IGFzZmxvYXQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0IGFzZmxvYXQoZmxvYXQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQyIGFz
ZmxvYXQoZmxvYXQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0MyBhc2Zsb2F0KGZsb2F0
MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDQgYXNmbG9hdChmbG9hdDQgeCkgewotICAg
IHJldHVybiB4OwotfQotZmxvYXQyeDIgYXNmbG9hdChmbG9hdDJ4MiB4KSB7Ci0gICAgcmV0dXJu
IHg7Ci19Ci1mbG9hdDN4MiBhc2Zsb2F0KGZsb2F0M3gyIHgpIHsKLSAgICByZXR1cm4geDsKLX0K
LWZsb2F0NHgyIGFzZmxvYXQoZmxvYXQ0eDIgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQy
eDMgYXNmbG9hdChmbG9hdDJ4MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDN4MyBhc2Zs
b2F0KGZsb2F0M3gzIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0NHgzIGFzZmxvYXQoZmxv
YXQ0eDMgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQyeDQgYXNmbG9hdChmbG9hdDJ4NCB4
KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDN4NCBhc2Zsb2F0KGZsb2F0M3g0IHgpIHsKLSAg
ICByZXR1cm4geDsKLX0KLWZsb2F0NHg0IGFzZmxvYXQoZmxvYXQ0eDQgeCkgewotICAgIHJldHVy
biB4OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNub3JtYWwgKi8KLW5hdGl2ZSBib29sIGlz
bm9ybWFsKGZsb2F0KTsKLQotYm9vbDIgaXNub3JtYWwoZmxvYXQyIHgpIHsKLSAgICBib29sMiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
aXNub3JtYWwoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzbm9ybWFsKGZs
b2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbm9ybWFsKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlz
bm9ybWFsKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBpc25vcm1hbChmbG9h
dDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25vcm1hbCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc25v
cm1hbCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc25vcm1hbCh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZEV4Y2hhbmdlICov
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmlj
ZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZp
Y2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNf
dWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
RXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVp
bnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVh
ZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNf
aW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdl
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIEdldERpbWVuc2lvbnMg
Ki8KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIHRo
cmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1
aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0K
LQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCBkZXZpY2UgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWlu
dDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQz
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQz
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCB0aHJl
YWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQy
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCBkZXZpY2Ug
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4s
IGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+
LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZs
b2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNl
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0
Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBkZXZp
Y2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8Zmxv
YXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIGRl
dmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxm
bG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0K
LQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yKyAqLwotbmF0aXZl
IGludCBvcGVyYXRvcisoaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3IrKHVpbnQsIHVp
bnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQpOwotbmF0aXZlIHVpbnQy
IG9wZXJhdG9yKyh1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50LCB1
aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50
MyBvcGVyYXRvcisodWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcisodWludCwg
dWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50MywgdWludCk7Ci1uYXRpdmUgdWlu
dDQgb3BlcmF0b3IrKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQs
IHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludDQsIHVpbnQpOwotbmF0aXZlIGlu
dDIgb3BlcmF0b3IrKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludCwgaW50
Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJh
dG9yKyhpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQsIGludDMpOwotbmF0
aXZlIGludDMgb3BlcmF0b3IrKGludDMsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvcisoaW50
NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvcisoaW50LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0
IG9wZXJhdG9yKyhpbnQ0LCBpbnQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQyLCBm
bG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUg
ZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3Ir
KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDMp
OwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0
IG9wZXJhdG9yKyhmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9h
dCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0NCwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0MngyIG9wZXJhdG9yKyhmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0
MngyIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9y
KyhmbG9hdDJ4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKyhmbG9hdDN4Miwg
ZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQzeDIpOwot
bmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKyhmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
NHgyIG9wZXJhdG9yKyhmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJh
dG9yKyhmbG9hdCwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKyhmbG9hdDR4
MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKyhmbG9hdDJ4MywgZmxvYXQyeDMp
OwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQyeDMpOwotbmF0aXZlIGZs
b2F0MngzIG9wZXJhdG9yKyhmbG9hdDJ4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJh
dG9yKyhmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKyhmbG9h
dCwgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKyhmbG9hdDN4MywgZmxvYXQp
OwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKyhmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZl
IGZsb2F0NHgzIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9w
ZXJhdG9yKyhmbG9hdDR4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKyhmbG9h
dDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQy
eDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKyhmbG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZl
IGZsb2F0M3g0IG9wZXJhdG9yKyhmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0
IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKyhm
bG9hdDN4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKyhmbG9hdDR4NCwgZmxv
YXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQ0eDQpOwotbmF0
aXZlIGZsb2F0NHg0IG9wZXJhdG9yKyhmbG9hdDR4NCwgZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9w
ZXJhdG9yKyh1aW50Mik7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IrKHVpbnQzKTsKLW5hdGl2ZSB1
aW50NCBvcGVyYXRvcisodWludDQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludDIpOwotbmF0
aXZlIGludDMgb3BlcmF0b3IrKGludDMpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludDQpOwot
bmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3Ir
KGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9hdDQpOwotbmF0aXZlIGZsb2F0
MngyIG9wZXJhdG9yKyhmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IrKGZsb2F0
M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvcisoZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0
MngzIG9wZXJhdG9yKyhmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0
M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvcisoZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0
Mng0IG9wZXJhdG9yKyhmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0
M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvcisoZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgZnJhYyAqLwotZmxvYXQgZnJhYyhmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggLSBm
bG9vcih4KTsKLX0KLWZsb2F0MiBmcmFjKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZyYWMoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmcmFjKGZsb2F0MyB4KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGZyYWMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZnJhYyh4WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IGZyYWMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGZyYWMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBmcmFjKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZyYWMoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZyYWMoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBmcmFjKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
cmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIGZyYWMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZy
YWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBmcmFjKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZyYWMoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZnJhYyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBmcmFjKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
cmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZyYWMoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZy
YWMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmcmFjKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGZyYWMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3g0IGZyYWMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFj
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmcmFjKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGZyYWMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0g
ZnJhYyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZnJhYyhmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBm
cmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZnJhYyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmcmFjKHhbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmcmFjKHhbMl1bM10pOwotICAgIHJlc3VsdFsz
XVszXSA9IGZyYWMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIHN0b3JlICovCi1uYXRpdmUgdm9pZCBzdG9yZShkZXZpY2UgYXRvbWljX2ludCos
IGludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50KTsKLW5h
dGl2ZSB2b2lkIHN0b3JlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQpOwotbmF0aXZlIHZv
aWQgc3RvcmUodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50KTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIHJlZnJhY3QgKi8KLWZsb2F0IHJlZnJhY3QoZmxvYXQgaSwgZmxvYXQgbiwgZmxvYXQg
ZXRhKSB7Ci0gICAgZmxvYXQgcmVzdWx0OwotICAgIGZsb2F0IGsgPSAxIC0gZXRhICogZXRhICog
KDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlmIChrIDwgMCkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChldGEgKiBkb3QobiwgaSkgKyBzcXJ0
KGspKSAqIG47Ci19Ci1mbG9hdDIgcmVmcmFjdChmbG9hdDIgaSwgZmxvYXQyIG4sIGZsb2F0IGV0
YSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgayA9IDEgLSBldGEgKiBldGEgKiAo
MSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAgaWYgKGsgPCAwKQotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0gKGV0YSAqIGRvdChuLCBpKSArIHNxcnQo
aykpICogbjsKLX0KLWZsb2F0MyByZWZyYWN0KGZsb2F0MyBpLCBmbG9hdDMgbiwgZmxvYXQgZXRh
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBrID0gMSAtIGV0YSAqIGV0YSAqICgx
IC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBpZiAoayA8IDApCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAoZXRhICogZG90KG4sIGkpICsgc3FydChr
KSkgKiBuOwotfQotZmxvYXQ0IHJlZnJhY3QoZmxvYXQ0IGksIGZsb2F0NCBuLCBmbG9hdCBldGEp
IHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGsgPSAxIC0gZXRhICogZXRhICogKDEg
LSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlmIChrIDwgMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChldGEgKiBkb3QobiwgaSkgKyBzcXJ0KGsp
KSAqIG47Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2cxMCAqLwotZmxvYXQgbG9nMTAoZmxv
YXQgeCkgewotICAgIHJldHVybiBsb2coeCkgLyBsb2coZmxvYXQoMTApKTsKLX0KLWZsb2F0MiBs
b2cxMChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9n
MTAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMTAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0MyBsb2cxMChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gbG9nMTAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMTAoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gbG9nMTAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBsb2cxMChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
bG9nMTAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMTAoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbG9nMTAoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbG9nMTAoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZzEwKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIGxvZzEwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
MTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGxvZzEwKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gbG9nMTAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9n
MTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMTAoeFsz
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxvZzEwKGZsb2F0MngzIHgp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9n
MTAoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxvZzEwKGZsb2F0
M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9n
MTAoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxvZzEwKGZsb2F0
NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMTAoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbG9nMTAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
MTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nMTAoeFsz
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxvZzEwKGZsb2F0Mng0IHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9n
MTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMTAoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gbG9nMTAoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IGxvZzEwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
MTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMTAoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMTAoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gbG9nMTAoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxv
ZzEwKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9n
MTAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMTAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bG9nMTAoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMTAoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gbG9nMTAoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMTAo
eFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9nMTAoeFszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLyAqLwotbmF0aXZlIGlu
dCBvcGVyYXRvci8oaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3IvKHVpbnQsIHVpbnQp
OwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9w
ZXJhdG9yLyh1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLyh1aW50MiwgdWlu
dCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBv
cGVyYXRvci8odWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci8odWludDMsIHVp
bnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDQg
b3BlcmF0b3IvKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IvKHVpbnQ0LCB1
aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWludCwgdWludDQpOwotbmF0aXZlIGludDIg
b3BlcmF0b3IvKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3IvKGludDIsIGludCk7
Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9y
LyhpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLyhpbnQzLCBpbnQpOwotbmF0aXZl
IGludDMgb3BlcmF0b3IvKGludCwgaW50Myk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci8oaW50NCwg
aW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci8oaW50NCwgaW50KTsKLW5hdGl2ZSBpbnQ0IG9w
ZXJhdG9yLyhpbnQsIGludDQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci8oZmxvYXQyLCBmbG9h
dDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci8oZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQyIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZs
b2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZsb2F0MywgZmxvYXQpOwot
bmF0aXZlIGZsb2F0MyBvcGVyYXRvci8oZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9w
ZXJhdG9yLyhmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLyhmbG9hdDQs
IGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZl
IGZsb2F0MngyIG9wZXJhdG9yLyhmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0Mngy
IG9wZXJhdG9yLyhmbG9hdDJ4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLyhm
bG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLyhmbG9hdDN4MiwgZmxv
YXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLyhmbG9hdDN4MiwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0M3gyIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgy
IG9wZXJhdG9yLyhmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9y
LyhmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLyhmbG9hdCwgZmxv
YXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLyhmbG9hdDJ4MywgZmxvYXQyeDMpOwot
bmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLyhmbG9hdDJ4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0
MngzIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9y
LyhmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLyhmbG9hdDN4
MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQzeDMpOwot
bmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLyhmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZs
b2F0NHgzIG9wZXJhdG9yLyhmbG9hdDR4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJh
dG9yLyhmbG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLyhmbG9hdDJ4
NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLyhmbG9hdDJ4NCwgZmxvYXQp
OwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZs
b2F0M3g0IG9wZXJhdG9yLyhmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9w
ZXJhdG9yLyhmbG9hdDN4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLyhmbG9h
dCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLyhmbG9hdDR4NCwgZmxvYXQ0
eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLyhmbG9hdDR4NCwgZmxvYXQpOwotbmF0aXZl
IGZsb2F0NHg0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgZGR5X2ZpbmUgKi8KLWZsb2F0IGRkeV9maW5lKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR5
KHgpOwotfQotZmxvYXQyIGRkeV9maW5lKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfZmlu
ZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeV9maW5lKGZsb2F0MyB4
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBkZHlfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHlfZmlu
ZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeV9maW5lKGZsb2F0NCB4
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBkZHlfZmluZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHlfZmlu
ZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHlfZmluZSh4WzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDIgZGR5X2ZpbmUoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR5X2ZpbmUoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlf
ZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR5X2Zp
bmUoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBkZHlfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfZmluZSh4
WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR5X2ZpbmUoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmlu
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlf
ZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDMgZGR5X2ZpbmUoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfZmluZSh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR5X2ZpbmUoZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmlu
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlf
ZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfZmluZSh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfZmluZSh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfZmluZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgZGR5X2ZpbmUoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmlu
ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfZmluZSh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBkZHlfZmluZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDQgZGR5X2ZpbmUoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfZmluZSh4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBkZHlfZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfZmluZSh4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR5X2ZpbmUoZmxvYXQ0
eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmlu
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlf
ZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfZmluZSh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfZmluZSh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfZmluZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBkZHlfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfZmluZSh4WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfZmluZSh4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBkZHlfZmluZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgYW55ICovCi1ib29sIGFueShib29sIHgpIHsKLSAgICByZXR1cm4geDsK
LX0KLWJvb2wgYW55KGJvb2wyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDMgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0pOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVp
bnQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFueSh1aW50MiB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFueSh1aW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFueShpbnQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFueShp
bnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludDQgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdICE9IDApOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsK
LX0KLWJvb2wgYW55KGZsb2F0MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDMgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZs
b2F0NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0MngyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQz
eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NHgyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYW55KGZsb2F0MngzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDN4MyB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbM11bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wg
YW55KGZsb2F0Mng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZs
b2F0M3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzJdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzNdICE9
IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDR4NCB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
KHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzJdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVszXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYW55KGJvb2wyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wzeDIgeCkgewot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0eDIgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wyeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYW55KGJvb2wzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0eDMgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1b
Ml07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wyeDQgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wzeDQgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
Ml1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bM107Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0
eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bM107Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bM107Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeV9jb2Fyc2UgKi8KLWZsb2F0
IGRkeV9jb2Fyc2UoZmxvYXQgeCkgewotICAgIHJldHVybiBkZHkoeCk7Ci19Ci1mbG9hdDIgZGR5
X2NvYXJzZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR5X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR5X2NvYXJzZShmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeV9jb2Fyc2UoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHlfY29hcnNlKGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfY29hcnNlKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR5X2Nv
YXJzZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHlfY29hcnNlKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHlfY29hcnNlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR5X2NvYXJzZShmbG9hdDN4
MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fy
c2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHlfY29hcnNlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5X2NvYXJzZSh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2Nv
YXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHlfY29hcnNlKHhbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHlfY29hcnNlKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2Nv
YXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGRkeV9jb2Fyc2UoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2Nv
YXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgZGR5X2NvYXJzZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlf
Y29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2Uo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBkZHlfY29hcnNlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBkZHlfY29hcnNlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2Uo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2NvYXJzZSh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfY29hcnNlKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHlfY29hcnNlKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJz
ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfY29hcnNlKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeV9jb2Fyc2UoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0
NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlfY29hcnNlKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29h
cnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9j
b2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5X2NvYXJzZSh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBkZHlfY29hcnNlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcisrICovCi11aW50IG9wZXJhdG9y
KysodWludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSArIDE7Ci19Ci1pbnQgb3BlcmF0b3Ir
KyhpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfQotZmxvYXQgb3BlcmF0b3Ir
KyhmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZSArIDE7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBJbnRlcmxvY2tlZEFuZCAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2
aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkQW5kKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQs
IGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNf
dWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
QW5kKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFk
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY19p
bnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVh
ZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWlu
dCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFk
Z3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBvcGVyYXRvcn4gKi8KLWJvb2wgb3BlcmF0b3J+KGJvb2wgdmFsdWUpIHsKLSAgICBy
ZXR1cm4gIXZhbHVlOwotfQotbmF0aXZlIGludCBvcGVyYXRvcn4oaW50KTsKLW5hdGl2ZSB1aW50
IG9wZXJhdG9yfih1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeCAqLwotbmF0aXZlIGZs
b2F0IGRkeChmbG9hdCk7Ci1mbG9hdDIgZGR4KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4KHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR4KGZsb2F0MyB4KSB7Ci0gICAgZmxv
YXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZGR4KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IGRkeChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBkZHgoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR4KHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHgoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIGRkeChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHgo
ZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gZGR4KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBk
ZHgoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGRkeCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR4KGZsb2F0
M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gZGR4KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHgo
ZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZGR4KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBk
ZHgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZGR4KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeCh4WzJdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZGR4KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBkZHgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4KHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHgoeFsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZE1heCAqLwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJl
YWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX3VpbnQq
LCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNl
IGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
TWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91
cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY191
aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRo
cmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBp
bnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3Vw
IGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50
Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3NoICovCi1uYXRpdmUgZmxvYXQgY29zaChmbG9h
dCk7Ci1mbG9hdDIgY29zaChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3NoKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgY29zaChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjb3NoKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGNvc2goeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBjb3NoKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBjb3NoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gY29zaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBjb3NoKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBjb3NoKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgY29zaChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBjb3NoKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gY29zaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3NoKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBjb3NoKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGNvc2goZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgY29zaChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2go
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBj
b3NoKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBjb3NoKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNv
c2goeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zaCh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBjb3NoKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBjb3NoKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29z
aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGNvc2goeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zaCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBjb3NoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGNvc2goeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNvc2goZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
Y29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGNvc2goeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2go
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY29zaCh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gY29zaCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBj
b3NoKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBkZHhfY29hcnNlICovCi1mbG9hdCBkZHhfY29hcnNlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4g
ZGR4KHgpOwotfQotZmxvYXQyIGRkeF9jb2Fyc2UoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
ZGR4X2NvYXJzZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeF9jb2Fy
c2UoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9j
b2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBkZHhfY29hcnNlKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQg
ZGR4X2NvYXJzZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfY29hcnNlKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGRkeF9jb2Fyc2UoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR4X2Nv
YXJzZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR4X2NvYXJzZShm
bG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gyIGRkeF9jb2Fyc2UoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJz
ZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZGR4X2NvYXJzZShm
bG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJz
ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
ZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGR4
X2NvYXJzZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJz
ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
ZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHhfY29hcnNlKGZsb2F0M3gz
IHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJz
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29h
cnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeF9jb2Fyc2UoZmxvYXQ0eDMgeCkgewot
ICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29h
cnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9j
b2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2NvYXJzZSh4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR4X2NvYXJzZShmbG9hdDJ4NCB4KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9j
b2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGRkeF9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4
WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR4X2NvYXJzZShmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9j
b2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4
X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHhfY29hcnNl
KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHhfY29hcnNlKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4
X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBk
ZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeF9jb2Fy
c2UoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJzZSh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGRkeF9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4X2NvYXJzZSh4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZmlyc3Ri
aXRoaWdoICovCi11aW50IGZpcnN0Yml0aGlnaCh1aW50IHgpIHsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMzEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMzApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
MjkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjgp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjcpKSAh
PSAwKQotICAgICAgICByZXR1cm4gNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjYpKSAhPSAw
KQotICAgICAgICByZXR1cm4gNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjUpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjQpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjMpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjIpKSAhPSAwKQotICAgICAgICBy
ZXR1cm4gOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjEpKSAhPSAwKQotICAgICAgICByZXR1
cm4gMTA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDExOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOSkpICE9IDApCi0gICAgICAgIHJldHVybiAx
MjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTM7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE3KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE0Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNikpICE9IDApCi0gICAgICAgIHJldHVybiAxNTsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMTUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTY7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDE0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE3OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAxMykpICE9IDApCi0gICAgICAgIHJldHVybiAxODsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMTIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTk7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDExKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIwOwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAxMCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMTsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgOSkpICE9IDApCi0gICAgICAgIHJldHVybiAyMjsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgOCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMzsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgNykpICE9IDApCi0gICAgICAgIHJldHVybiAyNDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
NikpICE9IDApCi0gICAgICAgIHJldHVybiAyNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNSkp
ICE9IDApCi0gICAgICAgIHJldHVybiAyNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNCkpICE9
IDApCi0gICAgICAgIHJldHVybiAyNzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMykpICE9IDAp
Ci0gICAgICAgIHJldHVybiAyODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMikpICE9IDApCi0g
ICAgICAgIHJldHVybiAyOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMSkpICE9IDApCi0gICAg
ICAgIHJldHVybiAzMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMCkpICE9IDApCi0gICAgICAg
IHJldHVybiAzMTsKLSAgICByZXR1cm4gMzI7Ci19Ci11aW50IGZpcnN0Yml0aGlnaChpbnQgeCkg
ewotICAgIHJldHVybiBmaXJzdGJpdGhpZ2godWludCh4KSk7Ci19Ci11aW50MiBmaXJzdGJpdGhp
Z2godWludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJp
dGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGhpZ2godWludDMgeCkgewotICAgIHVpbnQz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3RiaXRoaWdoKHVpbnQ0IHgp
IHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBm
aXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRoaWdoKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MiBmaXJzdGJpdGhpZ2goaW50MiB4KSB7Ci0gICAg
dWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVp
bnQzIGZpcnN0Yml0aGlnaChpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0aGlnaChpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZp
cnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGhpZ2goeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gZmlyc3RiaXRoaWdoKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByY3AgKi8KLWZsb2F0IHJjcChmbG9hdCB4KSB7Ci0gICAg
cmV0dXJuIDEgLyB4OwotfQotZmxvYXQyIHJjcChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJjcCh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHJjcChmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IHJjcCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByY3AoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NCByY3AoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByY3AoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gcmNwKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJjcCh4WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcmNwKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiByY3AoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3Ao
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcmNw
KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
Y3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
cmNwKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSByY3AoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJjcChmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByY3AoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNw
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3Ao
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNwKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHJjcCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcmNw
KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
cmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBy
Y3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmNwKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IHJjcCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
cmNwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByY3AoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmNwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IHJjcCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByY3AoeFsyXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJjcChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IHJjcCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gcmNwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJjcCh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmNwKHhbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IHJjcCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZndpZHRoICovCi0KLWZsb2F0IGZ3aWR0aChmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIGFicyhkZHgoeCkpICsgYWJzKGRkeSh4KSk7Ci19Ci1mbG9hdDIg
ZndpZHRoKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBm
d2lkdGgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZndpZHRoKHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgZndpZHRoKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZndpZHRoKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGZ3aWR0aCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IGZ3aWR0aChmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZ3aWR0aCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBmd2lkdGgoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZndpZHRoKHhbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmd2lkdGgoZmxvYXQyeDIgeCkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZ3aWR0aChmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndp
ZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZndpZHRo
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmd2lkdGgoZmxvYXQ0
eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmd2lkdGgoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MyBmd2lkdGgoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
ZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZndpZHRoKGZsb2F0M3gzIHgpIHsKLSAgICBm
bG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lk
dGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsy
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZ3aWR0aChmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
ZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZndp
ZHRoKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmd2lkdGgoZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lk
dGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmd2lkdGgoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRoKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmd2lkdGgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBmd2lkdGgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndp
ZHRoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZ3aWR0aCh4WzJdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZndpZHRoKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9h
dDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGZ3aWR0aCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmd2lkdGgoeFszXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGZ3aWR0aCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmd2lkdGgoeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gZndpZHRoKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsZXJwICovCi1mbG9hdCBsZXJwKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHMpIHsKLSAgICByZXR1cm4geCAqICgxIC0gcykgKyB5ICogczsKLX0KLWZsb2F0
MiBsZXJwKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQyIHopIHsKLSAgICBmbG9hdDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gbGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IGxlcnAoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMgeikgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxlcnAoeFsyXSwgeVsy
XSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsZXJwKGZsb2F0NCB4LCBm
bG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGxlcnAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbGVycCh4WzFdLCB5WzFd
LCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZXJwKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJl
c3VsdFszXSA9IGxlcnAoeFszXSwgeVszXSwgelszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngyIGxlcnAoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSwgZmxvYXQyeDIgeikgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1b
MF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBsZXJwKGZsb2F0M3gyIHgsIGZsb2F0
M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxl
cnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4
WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwg
eVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGxlcnAo
ZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIgeikgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
ZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxlcnAo
eFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIGxlcnAoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwgZmxvYXQyeDMgeikgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgbGVycChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4
MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFsw
XVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsx
XSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsZXJwKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHksIGZs
b2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVy
cCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVsw
XSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5
WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1b
MV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwg
elsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZXJwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGxlcnAoeFszXVsyXSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0Mng0IGxlcnAoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQg
eikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBd
WzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0s
IHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGxlcnAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxlcnAoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwg
ZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
ZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAo
eFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJd
WzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0s
IHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFd
LCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGxlcnAoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbGVycCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDQgbGVycChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5LCBmbG9hdDR4
NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFsw
XVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxlcnAoeFszXVswXSwgeVszXVsw
XSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBsZXJwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGxlcnAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVy
cCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZXJwKHhb
Ml1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxlcnAoeFszXVsz
XSwgeVszXVszXSwgelszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGRpc3RhbmNlICovCi1mbG9hdCBkaXN0YW5jZShmbG9hdCB4LCBmbG9hdCB5KSB7
Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1mbG9hdCBkaXN0YW5jZShmbG9hdDIgeCwg
ZmxvYXQyIHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KLWZsb2F0IGRpc3RhbmNl
KGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIHJldHVybiBsZW5ndGgoeCAtIHkpOwotfQotZmxv
YXQgZGlzdGFuY2UoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0g
eSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOTBjMjk5YTJmMGY4ZTBlYzcwNmQ5MWQzY2ZhY2UxYzg4
MDdkNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotc3RydWN0IFN1YnN0cmluZ0xvY2F0aW9uIHsKLSAgICB1bnNpZ25lZCBzdGFy
dDsKLSAgICB1bnNpZ25lZCBlbmQ7Ci19OwotCi1IYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9j
YXRpb24+IGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCgpOwotCi11bnNpZ25lZCBm
aXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJhcnkoKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Q0MzMwZDAxOTM2NDNhYWJlOTQwZTk5YjA1Njkw
M2MxMmZhMzAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5
VXRpbGl0aWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5VXRp
bGl0aWVzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKLSNpbmNsdWRlICJX
SExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFN0YW5kYXJkTGlicmFyeS5oIgotI2luY2x1
ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCIKLSNpbmNsdWRlICJXSExTTFZp
c2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8cGFsL0d1bnpp
cC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0
ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotc3RhdGljIFN0cmluZyBkZWNvbXByZXNzQW5k
RGVjb2RlU3RhbmRhcmRMaWJyYXJ5KCkKLXsKLSAgICBhdXRvIGRlY29tcHJlc3NlZFN0YW5kYXJk
TGlicmFyeSA9IGd1bnppcChXSExTTFN0YW5kYXJkTGlicmFyeSwgc2l6ZW9mKFdITFNMU3RhbmRh
cmRMaWJyYXJ5KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGVjb21wcmVzc2VkU3Rh
bmRhcmRMaWJyYXJ5LmRhdGEoKSwgZGVjb21wcmVzc2VkU3RhbmRhcmRMaWJyYXJ5LnNpemUoKSk7
Ci19Ci0KLWNsYXNzIE5hbWVGaW5kZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAg
SGFzaFNldDxTdHJpbmc+IHRha2VGdW5jdGlvbk5hbWVzKCkKLSAgICB7Ci0gICAgICAgIEhhc2hT
ZXQ8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIHN0ZDo6c3dhcChyZXN1bHQsIG1fZnVuY3Rpb25O
YW1lcyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZv
aWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBtX2Z1bmN0aW9uTmFtZXMuYWRkKGNhbGxFeHByZXNzaW9uLm5hbWUoKSk7
Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBI
YXNoU2V0PFN0cmluZz4gbV9mdW5jdGlvbk5hbWVzOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IGluY2x1ZGVTdGFuZGFyZExpYnJhcnkoUHJvZ3JhbSYgcHJvZ3JhbSwgUGFyc2VyJiBwYXJz
ZXIsIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5KQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHN0YW5kYXJkTGlicmFyeShkZWNvbXByZXNzQW5kRGVjb2RlU3RhbmRh
cmRMaWJyYXJ5KCkpOwotICAgIGlmIChwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpIHsKLSAgICAg
ICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdGFuZGFyZExpYnJh
cnkuZ2V0KCksIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnksIEFTVDo6TmFtZVNwYWNlOjpT
dGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0LmVycm9yKCkpOwotICAgICAgICByZXR1
cm4geyB9OwotICAgIH0KLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmlu
ZywgU3Vic3RyaW5nTG9jYXRpb24+PiBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcChjb21wdXRl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKSk7Ci0KLSAgICBhdXRvIHN0cmluZ1ZpZXcgPSBT
dHJpbmdWaWV3KHN0YW5kYXJkTGlicmFyeS5nZXQoKSkuc3Vic3RyaW5nKDAsIGZpcnN0RnVuY3Rp
b25PZmZzZXRJblN0YW5kYXJkTGlicmFyeSgpKTsKLSAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFy
c2VyLnBhcnNlKHByb2dyYW0sIHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJh
cnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgIGlmICghcGFyc2VSZXN1
bHQpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwYXJzZVJlc3VsdC5lcnJvcigpKTsK
LQotICAgIE5hbWVGaW5kZXIgbmFtZUZpbmRlcjsKLSAgICBuYW1lRmluZGVyLlZpc2l0b3I6OnZp
c2l0KHByb2dyYW0pOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBmdW5jdGlvbk5hbWVzID0gbmFtZUZp
bmRlci50YWtlRnVuY3Rpb25OYW1lcygpOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxGdW5jdGlv
bk5hbWVzOwotICAgIC8vIFRoZSBuYW1lIG9mIGEgY2FsbCB0byBhIGNhc3Qgb3BlcmF0b3IgaXMg
dGhlIG5hbWUgb2YgdGhlIHR5cGUsIHNvIHdlIGNhbid0IG1hdGNoIHRoZW0gdXAgY29ycmVjdGx5
LgotICAgIC8vIEluc3RlYWQsIGp1c3QgaW5jbHVkZSBhbGwgY2FzdGluZyBvcGVyYXRvcnMuCi0g
ICAgZnVuY3Rpb25OYW1lcy5hZGQoIm9wZXJhdG9yIGNhc3QiX3N0cik7Ci0gICAgLy8gV2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhhdCBhbiBhdXRob3IgY2FuJ3Qgd3JpdGUgYSBmdW5jdGlvbiB3aXRo
IHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhbnl0aGluZyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4K
LSAgICAvLyBJZiB0aGV5IGRvIHNvLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBjb2xsaWRlcywg
c28gd2UgaW5jbHVkZSBhbGwgcG90ZW50aWFsIGR1cGxpY2F0ZXMgaGVyZSwgYW5kIHRoZSAiY2hl
Y2tEdXBsaWNhdGVGdW5jdGlvbnMiIHBhc3MgZW5mb3JjZXMgaXQuCi0gICAgZm9yIChhdXRvJiBm
dW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAg
ICAgZnVuY3Rpb25OYW1lcy5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLT5uYW1lKCkpOwotICAgIHdo
aWxlICghZnVuY3Rpb25OYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uc0NvdW50ID0gcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
cygpLnNpemUoKTsKLSAgICAgICAgYXV0byBmdW5jdGlvbkRlZmluaXRpb25zQ291bnQgPSBwcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0
byYgbmFtZSA6IGZ1bmN0aW9uTmFtZXMpIHsKLSAgICAgICAgICAgIGlmIChhbGxGdW5jdGlvbk5h
bWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgYXV0byBpdGVyYXRvciA9IHN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmdldCgpLmZpbmQo
bmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gc3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuZ2V0KCkuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBhdXRvIHN0cmluZ1ZpZXcgPSBTdHJpbmdWaWV3KHN0YW5kYXJkTGlicmFyeS5nZXQoKSkuc3Vi
c3RyaW5nKGl0ZXJhdG9yLT52YWx1ZS5zdGFydCwgaXRlcmF0b3ItPnZhbHVlLmVuZCAtIGl0ZXJh
dG9yLT52YWx1ZS5zdGFydCk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgewotICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7Ci0gICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKHN0cmluZ1ZpZXcpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhdXRvIHN0YXJ0ID0gcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOwot
ICAgICAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdHJp
bmdWaWV3LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5LCBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgICAgIGlmICghcGFyc2VSZXN1bHQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0LmVycm9yKCkpOwotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkuc2l6ZSgpICE9IHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oIm5vbiBuYXRpdmUgc3RkbGliIGZ1bmN0aW9uOiAnIiwgbmFtZSwgIiciKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFsbEZ1bmN0aW9uTmFtZXMuYWRkKG5hbWUpOwotICAgICAg
ICB9Ci0gICAgICAgIGZvciAoIDsgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudCA8IHBy
b2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsrbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnNDb3VudCkKLSAgICAgICAgICAgIG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlz
aXQocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW25hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zQ291bnRdKTsKLSAgICAgICAgZm9yICggOyBmdW5jdGlvbkRlZmluaXRpb25zQ291
bnQgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsrZnVuY3Rpb25EZWZp
bml0aW9uc0NvdW50KQotICAgICAgICAgICAgbmFtZUZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtmdW5jdGlvbkRlZmluaXRpb25zQ291bnRdKTsKLSAg
ICAgICAgZnVuY3Rpb25OYW1lcyA9IG5hbWVGaW5kZXIudGFrZUZ1bmN0aW9uTmFtZXMoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFy
ZExpYnJhcnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE2MmYzODI0NzFhNjA0Nzg3YjA3MjQwZjM5YjYyNzVlNTIyOTVhNjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQYXJzZXI7
Ci1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJk
TGlicmFyeShQcm9ncmFtJiwgUGFyc2VyJiwgYm9vbCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkp
OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzU4MzJmZDE3NjRjZDk2YjBiYjVmOGY0MWE4MmZlNTE5ZmMyOTEwYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUg
IldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgiCi0jaW5jbHVkZSAiV0hM
U0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2guaCIKLSNpbmNsdWRlICJXSExTTEZv
ckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xJ
bmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xS
ZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKLSNpbmNsdWRlICJXSExTTFN3
aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlICJXSExTTFdoaWxl
TG9vcC5oIgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jbGFzcyBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIgOiBwdWJsaWMgVmlz
aXRvciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBCZWhhdmlvciA6IHVpbnQ4X3QgewotICAg
ICAgICBSZXR1cm4gPSAxIDw8IDAsCi0gICAgICAgIEJyZWFrID0gMSA8PCAxLAotICAgICAgICBD
b250aW51ZSA9IDEgPDwgMiwKLSAgICAgICAgRmFsbHRocm91Z2ggPSAxIDw8IDMsCi0gICAgICAg
IE5vdGhpbmcgPSAxIDw8IDQKLSAgICB9OwotCi0gICAgT3B0aW9uU2V0PEJlaGF2aW9yPiB0YWtl
RnVuY3Rpb25CZWhhdmlvcigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zdGFjay5zaXplKCkg
PT0gMSk7Ci0gICAgICAgIHJldHVybiBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpCcmVhayB9KTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFj
ay5hcHBlbmQoeyBCZWhhdmlvcjo6RmFsbHRocm91Z2ggfSk7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OkNvbnRpbnVlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBw
ZW5kKHsgQmVoYXZpb3I6OkNvbnRpbnVlIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpSZXR1cm4mKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhh
dmlvcjo6UmV0dXJuIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9v
cCYgZG9XaGlsZUxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICAg
ICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6
OkNvbnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOwotICAgICAgICBt
X3N0YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYg
Zm9yTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsaXphdGlvbiBh
bHdheXMgaGFzIGEgYmVoYXZpb3Igb2YgTm90aGluZywgd2hpY2ggd2UgYWxyZWFkeSBhZGQgdW5j
b25kaXRpb25hbGx5IGJlbG93LAotICAgICAgICAvLyBzbyB3ZSBjYW4ganVzdCBpZ25vcmUgdGhl
IGluaXRpYWxpemF0aW9uLgotCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmJv
ZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2
aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7Ci0gICAg
ICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoYik7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkp
OwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
YXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6
QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOwotICAgICAgICBi
LmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGlu
ZyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE9wdGlvblNl
dDxCZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OwotICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENh
c2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtl
TGFzdCgpOwotICAgICAgICAgICAgcmVkdWN0aW9uID0gcmVkdWN0aW9uIHwgYjsKLSAgICAgICAg
fQotICAgICAgICBpZiAocmVkdWN0aW9uLmNvbnRhaW5zKEJlaGF2aW9yOjpOb3RoaW5nKSkgewot
ICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlN3aXRjaCBzdGF0ZW1lbnQgbXVzdCBlbmQgaW4g
YSBicmVhay9mYWxsdGhyb3VnaC9yZXR1cm4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZWR1Y3Rpb24u
cmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZp
b3I6OkZhbGx0aHJvdWdoKTsKLSAgICAgICAgcmVkdWN0aW9uLmFkZChCZWhhdmlvcjo6Tm90aGlu
Zyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHJlZHVjdGlvbik7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgICAgICBp
ZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9z
dGFjay50YWtlTGFzdCgpOwotICAgICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IGJQcmltZTsKLSAg
ICAgICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci0gICAgICAgICAgICBpZiAoaGFz
RXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBiUHJpbWUgPSBt
X3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYlByaW1lID0g
eyBCZWhhdmlvcjo6Tm90aGluZyB9OwotICAgICAgICBtX3N0YWNrLmFwcGVuZChiIHwgYlByaW1l
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9y
OjpOb3RoaW5nIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYgYmxvY2sp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYmxvY2suc3RhdGVtZW50cygpLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE9wdGlvblNldDxCZWhh
dmlvcj4gcmVkdWN0aW9uID0geyB9OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJs
b2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbaV0pOwotICAgICAgICAgICAgaWYgKGhhc0Vy
cm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXV0byBiID0gbV9z
dGFjay50YWtlTGFzdCgpOwotICAgICAgICAgICAgaWYgKCFiLmNvbnRhaW5zKEJlaGF2aW9yOjpO
b3RoaW5nKSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTdGF0ZW1lbnQgaW5z
aWRlIGFuIGlubmVyIGJsb2NrIG11c3QgYmUgcmVhY2hhYmxlLiIsIGJsb2NrLnN0YXRlbWVudHMo
KVtpXS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAg
ICAgICBpZiAoYi5jb250YWlucyhCZWhhdmlvcjo6RmFsbHRocm91Z2gpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkZhbGx0aHJvdWdoIG11c3QgYmUgdGhlIGxhc3Qgc3RhdGVt
ZW50IGluIGEgYmxvY2suIiwgYmxvY2suc3RhdGVtZW50cygpW2ldLT5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
ZHVjdGlvbiA9IHJlZHVjdGlvbiB8IGI7Ci0gICAgICAgIH0KLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMoKVtibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMV0p
OwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
YXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChyZWR1
Y3Rpb24gfCBiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQo
eyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8T3B0aW9uU2V0PEJl
aGF2aW9yPj4gbV9zdGFjazsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1N0YXRl
bWVudEJlaGF2aW9yKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
RGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIHN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24p
OwotICAgICAgICBpZiAoc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmhhc0Vycm9yKCkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLnJlc3VsdCgpOwotICAgICAg
ICBhdXRvIGJlaGF2aW9yID0gc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLnRha2VGdW5jdGlvbkJl
aGF2aW9yKCk7Ci0gICAgICAgIGlmIChtYXRjaGVzKGZ1bmN0aW9uRGVmaW5pdGlvbi0+dHlwZSgp
LCBwcm9ncmFtLmludHJpbnNpY3MoKS52b2lkVHlwZSgpKSkgewotICAgICAgICAgICAgYmVoYXZp
b3IucmVtb3ZlKFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6OlJldHVybik7Ci0g
ICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhh
dmlvcjo6Tm90aGluZyk7Ci0gICAgICAgICAgICBpZiAoYmVoYXZpb3IgIT0gT3B0aW9uU2V0PFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I+KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgZW5kIGEgdm9pZCBmdW5jdGlvbiB3aXRo
IGEgYnJlYWssIGNvbnRpbnVlLCBvciBmYWxsdGhyb3VnaC4iKSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoYmVoYXZpb3IgIT0gU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpC
ZWhhdmlvcjo6UmV0dXJuKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiTm9uLXZvaWQgZnVuY3Rpb25zIG11c3QgcmV0dXJuIGEgdmFsdWUgb24gYWxsIGNvZGUg
cGF0aHMuIikpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWVlMDNkNjY0NTRmNmNkMGM2NjM2ODg5
MzllMWY4ZmYyN2QwODVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50
QmVoYXZpb3JDaGVja2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYpOwotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2M5
MGEzNjQwNWEyZWQxNzRkZDM1NjMyZDY2OWE0OTcxMjhiZjJmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3Jh
bS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGVIYXNoLmgiCi0j
aW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNp
dG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgRmluZEFsbFR5cGVzIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwg
fkZpbmRBbGxUeXBlcygpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVy
VHlwZSYgcG9pbnRlclR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3VubmFtZWRUeXBl
cy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBwb2ludGVyVHlwZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6
dmlzaXQocG9pbnRlclR5cGUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IG1fdW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7IGFycmF5UmVmZXJlbmNlVHlwZSB9
KTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlSZWZlcmVuY2VUeXBlKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBtX3VubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBhcnJheVR5cGUg
fSk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5VHlwZSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9u
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5kTmFtZWRUeXBlKGVudW1lcmF0aW9uRGVm
aW5pdGlvbik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7
Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVj
dHVyZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhcHBlbmROYW1lZFR5cGUo
c3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KHN0cnVjdHVyZURl
ZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGFw
cGVuZE5hbWVkVHlwZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBWaXNpdG9yOjp2
aXNpdChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgIH0KLQotICAgIEhhc2hTZXQ8VW5uYW1l
ZFR5cGVLZXk+IHRha2VVbm5hbWVkVHlwZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURk1v
dmUobV91bm5hbWVkVHlwZXMpOwotICAgIH0KLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEFTVDo6TmFtZWRUeXBlPj4gdGFrZU5hbWVkVHlwZXMoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFdURk1vdmUobV9uYW1lZFR5cGVzKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCBhcHBlbmROYW1lZFR5cGUoQVNUOjpOYW1lZFR5cGUmIHR5cGUpCi0gICAgewotICAgICAgICAv
LyBUaGUgd2F5IHdlIHdhbGsgdGhlIEFTVCBlbnN1cmVzIHdlIHNob3VsZCBuZXZlciB2aXNpdCBh
IG5hbWVkIHR5cGUgdHdpY2UuCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IG1fbmFtZWRUeXBlcykKLSAgICAgICAgICAgIEFTU0VSVCgmZW50cnkuZ2V0KCku
dW5pZnlOb2RlKCkgIT0gJnR5cGUudW5pZnlOb2RlKCkpOwotI2VuZGlmCi0gICAgICAgIG1fbmFt
ZWRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxVbm5hbWVkVHlwZUtl
eT4gbV91bm5hbWVkVHlwZXM7Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpOYW1lZFR5cGU+PiBtX25hbWVkVHlwZXM7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIEZpbmRBbGxU
eXBlcyBmaW5kQWxsVHlwZXM7Ci0gICAgZmluZEFsbFR5cGVzLmNoZWNrRXJyb3JBbmRWaXNpdChw
cm9ncmFtKTsKLSAgICBhdXRvIHVubmFtZWRUeXBlcyA9IGZpbmRBbGxUeXBlcy50YWtlVW5uYW1l
ZFR5cGVzKCk7Ci0gICAgYXV0byBuYW1lZFR5cGVzID0gZmluZEFsbFR5cGVzLnRha2VOYW1lZFR5
cGVzKCk7Ci0KLSAgICBib29sIGlzT3BlcmF0b3IgPSB0cnVlOwotCi0gICAgZm9yIChhdXRvJiB1
bm5hbWVkVHlwZUtleSA6IHVubmFtZWRUeXBlcykgewotICAgICAgICBhdXRvJiB1bm5hbWVkVHlw
ZSA9IHVubmFtZWRUeXBlS2V5LnVubmFtZWRUeXBlKCk7Ci0gICAgICAgIGF1dG8gbG9jYXRpb24g
PSB1bm5hbWVkVHlwZS5jb2RlTG9jYXRpb24oKTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCAmdW5uYW1lZFR5cGUsIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnMgcGFyYW1ldGVyczsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUo
dmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRp
b24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRv
ciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVs
bG9wdCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGli
cmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0
cnVjdG9yKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxk
IG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3RydWN0b3IiKSk7Ci0gICAgfQotCi0gICAgZm9y
IChhdXRvJiBuYW1lZFR5cGUgOiBuYW1lZFR5cGVzKSB7Ci0gICAgICAgIGlmIChtYXRjaGVzKG5h
bWVkVHlwZSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5cGUoKSkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0
aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpICYmIGRvd25jYXN0PEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlw
ZSkpLmlzQXRvbWljKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvIGxv
Y2F0aW9uID0gbmFtZWRUeXBlLmdldCgpLmNvZGVMb2NhdGlvbigpOwotCi0gICAgICAgIGF1dG8g
dmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OwotICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAg
IHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAg
ICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51
bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgp
KSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNP
cGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBwcm9ncmFt
LmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3RvcikpOwotCi0gICAgICAgIGlmIChpczxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1l
ZFR5cGUpKSkgewotICAgICAgICAgICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRU
eXBlJj4obmFtZWRUeXBlKSk7Ci0gICAgICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9u
LmlzT3BhcXVlVHlwZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0g
ICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3Io
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCks
IHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5
cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25z
KCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsK
LSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3Rvcikp
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBub3Qgc3lu
dGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwotICAgIH0KLSAgICByZXR1cm4geyB9Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTIyNTUwZWEyZmJkMmJiMjE2
MjBkYTAyNWY4MWRhZTFkNGZkYTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0mKTsK
LQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVt
ZXJhdGlvbkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYwNTA3MzgyM2M3ZGExZDdhMTI3ZjNkNTZiYjZmMjA1MWE5ZGZmZDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1
bmN0aW9ucy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJX
SExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsK
LSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRp
b25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbnVtZXJhdGlvbkRl
ZmluaXRpb24tPmNvZGVMb2NhdGlvbigpOwotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZh
cmlhYmxlRGVjbGFyYXRpb24xID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24yID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMo
KSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRp
b24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVu
ZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24yKSk7Ci0gICAgICAgICAgICBBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3Rk
OjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIHByb2dyYW0uaW50
cmluc2ljcygpLmJvb2xUeXBlKCkpLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7
Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cigiQ2Fubm90IGNyZWF0ZSBvcGVyYXRvcj09IGZvciBlbnVtIHR5cGUuIikpOwotICAgICAgICB9
Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxp
ZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6
Om51bGxvcHQsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCAib3BlcmF0b3IgY2FzdCJf
c3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9k
ZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdU
Rk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSBjb3B5IGNvbnN0cnVjdG9yIGZv
ciBlbnVtIHR5cGUuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0
byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgJmVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+dHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6
Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25E
ZWZpbml0aW9uKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVs
bHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5v
dCBjcmVhdGUgJ29wZXJhdG9yIGNhc3QnIGZvciBlbnVtIHR5cGUuIikpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzViZTE0ZWMxM2JjNjAwOTRiZmFjZDE1NjQ3N2RhY2QwODAz
YTdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8
dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJik7Ci0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MGZkNTA4YzZjYTJkMjQ5Y2ZmMDRlNjI2MWJmZjE1
Yzc2MGQ3NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgLy8gVGhlc2UgdmlzaXRpbmcgZnVu
Y3Rpb25zIG1pZ2h0IGFkZCBuZXcgZ2xvYmFsIHN0YXRlbWVudHMsIHNvIGRvbid0IHVzZSBmb3Jl
YWNoIHN5bnRheC4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmlu
aXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFt
LnR5cGVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dy
YW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7
ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZp
bml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlVHlw
ZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
cHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClbaV0pOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIGlmIChpczxBU1Q6
OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKTsKLSAgICBlbHNlIGlm
IChpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewotICAgIGlmIChpczxBU1Q6OlR5cGVEZWZp
bml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBl
bHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
PihuYW1lZFR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0
aW9uKQotewotICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmlu
aXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0
cnVjdHVyZUVsZW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIGZvciAoYXV0byYgZW51
bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJz
KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbk1lbWJlcik7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVm
aW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uKQotewotICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVB
cmd1bWVudCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0
eXBlUmVmZXJlbmNlKQotewotICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVy
ZW5jZS50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJn
dW1lbnQpOwotICAgIGlmICh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkgJiYgaXM8
QVNUOjpUeXBlRGVmaW5pdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAg
ICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9u
Pih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlwZSkpOwotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVy
ZW5jZVR5cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVm
ZXJlbmNlVHlwZSY+KGFycmF5UmVmZXJlbmNlVHlwZSkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KGFycmF5VHlwZS50eXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RydWN0
dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwotICAgIGlmIChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFu
dGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqc3RydWN0dXJlRWxlbWVudC5zZW1h
bnRpYygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
JikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9u
RGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1
bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQocGFyYW1ldGVyKTsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMo
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmIHR5cGVBcmd1
bWVudCkKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7Ci0gICAgfSwgWyZdKFJlZjxBU1Q6OlR5cGVSZWZl
cmVuY2U+JiB0eXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBl
UmVmZXJlbmNlKTsKLSAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCi17Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChidWlsdEluU2VtYW50aWMpOwotICAgIH0sIFsm
XShBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpIHsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHJlc291cmNlU2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYgc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNl
bWFudGljKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGFnZUluT3V0U2VtYW50aWMp
OwotICAgIH0pLCBzZW1hbnRpYyk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb25z
dGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKLXsKLSAgICBjb25zdGFudEV4cHJl
c3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50
ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFs
KTsKLSAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVn
ZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJM
aXRlcmFsKTsKLSAgICB9LCBbJl0oQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsKTsKLSAgICB9LCBbJl0oQVNU
OjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGJvb2xlYW5MaXRlcmFsKTsKLSAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKTsKLSAgICB9KSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2spCi17Ci0g
ICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGF0dHJpYnV0ZUJsb2NrKQotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25BdHRyaWJ1dGUpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikKLXsKLX0KLQotdm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYpCi17Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsLnR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRl
cmFsKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5
cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0
TGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsLnR5cGUoKSk7
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpCi17Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmIGludGVnZXJMaXRl
cmFsVHlwZSkKLXsKLSAgICBpZiAoaW50ZWdlckxpdGVyYWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBl
KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbFR5cGUucmVzb2x2
ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbnRlZ2VyTGl0ZXJhbFR5cGUucHJl
ZmVycmVkVHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKLXsKLSAgICBpZiAo
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUu
cHJlZmVycmVkVHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZsb2F0TGl0
ZXJhbFR5cGUmIGZsb2F0TGl0ZXJhbFR5cGUpCi17Ci0gICAgaWYgKGZsb2F0TGl0ZXJhbFR5cGUu
bWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0
ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9hdExp
dGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRlKQotewotICAgIFdURjo6
dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUmIG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQobnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKTsKLSAgICB9KSwgZnVuY3Rpb25BdHRy
aWJ1dGUpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9j
aykKLXsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0JiBzdGF0ZW1lbnRMaXN0KQotewotICAgIGZvciAoYXV0
byYgc3RhdGVtZW50IDogc3RhdGVtZW50TGlzdC5zdGF0ZW1lbnRzKCkpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
U3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgc3dpdGNoIChzdGF0ZW1lbnQua2luZCgpKSB7
Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QmxvY2s6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QnJlYWs6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Q29udGludWU6Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RG9XaGlsZUxv
b3A6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvV2hpbGVMb29w
PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6
S2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdo
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4o
c3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6Oktp
bmQ6OkZvckxvb3A6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZv
ckxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVt
ZW50OjpLaW5kOjpJZjoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpSZXR1cm46Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN0YXRlbWVudExpc3Q6Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OlN0YXRlbWVudExpc3Q+KHN0YXRlbWVudCkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2hDYXNlOgotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1l
bnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3dp
dGNoOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0
ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVt
ZW50OjpLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVu
dCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpXaGls
ZUxvb3A6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OldoaWxlTG9v
cD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OkJyZWFrJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNv
bnRpbnVlJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBk
b1doaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxvb3AuYm9keSgp
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewot
ICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVz
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
Q2FsbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OkNvbW1hOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Np
b24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkZs
b2F0TGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Rmxv
YXRMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpMb2dpY2FsTm90OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlm
eVdyaXRlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5OgotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNz
aW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGRvdEV4cHJlc3Npb24pKTsKLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZ2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuYmFzZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkluZGV4
RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
bmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGluZGV4RXhwcmVz
c2lvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9u
LmJhc2UoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmVmZmVjdGZ1bEV4cHJl
c3Npb24oKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17
Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmluaXRpYWxpemF0aW9uKCkpOwotICAgIGlmIChm
b3JMb29wLmNvbmRpdGlvbigpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZvckxvb3Au
Y29uZGl0aW9uKCkpOwotICAgIGlmIChmb3JMb29wLmluY3JlbWVudCgpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuaW5jcmVtZW50KCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmb3JMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJZlN0
YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVt
ZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5i
b2R5KCkpOwotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotfQotCi12b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQpCi17Ci0gICAgaWYgKHJldHVyblN0
YXRlbWVudC52YWx1ZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJldHVyblN0YXRl
bWVudC52YWx1ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN3aXRjaENhc2Um
IHN3aXRjaENhc2UpCi17Ci0gICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2Ug
OiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN3aXRjaENhc2UpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotewot
ICAgIGZvciAoYXV0byYgdmFyaWFibGVEZWNsYXJhdGlvbiA6IHZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRpb25zKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uLmdldCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3
aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9v
cC5ib2R5KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlv
bi50eXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlv
bi50eXBlKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsK
LSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVu
dEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNz
aW9uLmxlZnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9u
LnJpZ2h0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24m
IGNhbGxFeHByZXNzaW9uKQotewotICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVz
c2lvbi5hcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFyZ3VtZW50KTsK
LSAgICBpZiAoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCpjYWxsRXhwcmVzc2lvbi5jYXN0UmV0dXJuVHlwZSgpKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQot
ewotICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNvbW1hRXhwcmVzc2lvbi5saXN0KCkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9u
KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRl
cigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBs
b2dpY2FsRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJl
c3Npb24ubGVmdCgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24u
cmlnaHQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVz
c2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxv
Z2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VQ
b2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFsdWUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWUoKSk7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4
cHJlc3Npb24oKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5h
cnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFy
eUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFZpc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
VmlzaXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTdjMjU1OTFmNjQxYWU0
YmQ3NmFjYjUyNzRmOWI2OGFkN2Q2Y2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
VmlzaXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5j
bHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5
cGVEZWZpbml0aW9uOwotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0
aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb247Ci1jbGFzcyBU
eXBlUmVmZXJlbmNlOwotY2xhc3MgUG9pbnRlclR5cGU7Ci1jbGFzcyBBcnJheVJlZmVyZW5jZVR5
cGU7Ci1jbGFzcyBBcnJheVR5cGU7Ci1jbGFzcyBTdHJ1Y3R1cmVFbGVtZW50OwotY2xhc3MgRW51
bWVyYXRpb25NZW1iZXI7Ci1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgUmVmZXJl
bmNlVHlwZTsKLWNsYXNzIENvbnN0YW50RXhwcmVzc2lvbjsKLWNsYXNzIEJ1aWx0SW5TZW1hbnRp
YzsKLWNsYXNzIFJlc291cmNlU2VtYW50aWM7Ci1jbGFzcyBTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWM7Ci1jbGFzcyBTdGFnZUluT3V0U2VtYW50aWM7Ci1jbGFzcyBJbnRlZ2VyTGl0ZXJh
bDsKLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWw7Ci1jbGFzcyBGbG9hdExpdGVyYWw7Ci1j
bGFzcyBCb29sZWFuTGl0ZXJhbDsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsKLWNs
YXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTsKLWNsYXNzIEJsb2NrOwotY2xhc3MgU3Rh
dGVtZW50TGlzdDsKLWNsYXNzIFN0YXRlbWVudDsKLWNsYXNzIEJyZWFrOwotY2xhc3MgQ29udGlu
dWU7Ci1jbGFzcyBEb1doaWxlTG9vcDsKLWNsYXNzIEV4cHJlc3Npb247Ci1jbGFzcyBEb3RFeHBy
ZXNzaW9uOwotY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2U7Ci1jbGFzcyBJbmRleEV4cHJl
c3Npb247Ci1jbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb247Ci1jbGFzcyBFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50OwotY2xhc3MgRmFsbHRocm91Z2g7Ci1jbGFzcyBGb3JMb29wOwot
Y2xhc3MgSWZTdGF0ZW1lbnQ7Ci1jbGFzcyBSZXR1cm47Ci1jbGFzcyBTd2l0Y2hDYXNlOwotY2xh
c3MgU3dpdGNoU3RhdGVtZW50OwotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ7
Ci1jbGFzcyBXaGlsZUxvb3A7Ci1jbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uOwotY2xhc3MgQXNz
aWdubWVudEV4cHJlc3Npb247Ci1jbGFzcyBDYWxsRXhwcmVzc2lvbjsKLWNsYXNzIENvbW1hRXhw
cmVzc2lvbjsKLWNsYXNzIERlcmVmZXJlbmNlRXhwcmVzc2lvbjsKLWNsYXNzIExvZ2ljYWxFeHBy
ZXNzaW9uOwotY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb247Ci1jbGFzcyBNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uOwotY2xhc3MgTWFrZVBvaW50ZXJFeHByZXNzaW9uOwotY2xhc3MgUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjsKLWNsYXNzIFRlcm5hcnlFeHByZXNzaW9uOwotY2xhc3Mg
VmFyaWFibGVSZWZlcmVuY2U7Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLWNsYXNzIE5hbWVkVHlwZTsK
LQotfQotCi1jbGFzcyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5WaXNpdG9yKCkg
PSBkZWZhdWx0OwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgxNzEgQWRkIGEgd2F5IHRvIHZpc2l0IGEgY29uc3QgUHJvZ3JhbQotCi0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KFByb2dyYW0mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpVbm5hbWVkVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hbWVkVHlw
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UG9p
bnRlclR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5
cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
VHlwZUFyZ3VtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlw
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlNlbWFudGljJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpCdWlsdEluU2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJj
ZVNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91
dFNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkZsb2F0TGl0ZXJhbFR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5j
dGlvbkF0dHJpYnV0ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJik7
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkJyZWFrJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpE
b3RFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Np
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6SWZTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXR1
cm4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhw
cmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKTsKLQotICAgIGJvb2wgaGFzRXJyb3IoKSBj
b25zdCB7IHJldHVybiAhbV9leHBlY3RlZEVycm9yOyB9Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IHJlc3VsdCgpIHsgcmV0dXJuIG1fZXhwZWN0ZWRFcnJvcjsgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoVCYgeCkKLSAgICB7Ci0gICAgICAg
IGlmICghaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHZpc2l0KHgpOwotICAgIH0KLQotcHJvdGVj
dGVkOgotICAgIHZvaWQgc2V0RXJyb3IoRXJyb3IgZXJyb3IpCi0gICAgewotICAgICAgICBBU1NF
UlQoIWhhc0Vycm9yKCkpOwotICAgICAgICBtX2V4cGVjdGVkRXJyb3IgPSBtYWtlVW5leHBlY3Rl
ZChlcnJvcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBt
X2V4cGVjdGVkRXJyb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGRkNTg5Y2FmNzY3MjExOWI4YTU0NThiYjU3YTNiZGVkNmFlZTRlNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFUuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIK
LSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIkpTV2ViR1BVQWRh
cHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFU+IFdlYkdQVTo6Y3Jl
YXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFUpOwotfQotCi12b2lkIFdl
YkdQVTo6cmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM+JiYgb3B0aW9ucywgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKLXsK
LSAgICBhdXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoV1RGTW92ZShvcHRpb25z
KSk7Ci0gICAgZGVmZXJyZWQucmVzb2x2ZShhZGFwdGVyLmdldCgpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMDUy
NDBkMDA2YjNjNDI0YjQ5MDY3YzIzZTE0OTNjYWJkMjMwODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVBZGFwdGVyOwotCi1zdHJ1Y3Qg
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBj
bGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkdQVT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVPiBjcmVhdGUoKTsK
LQotICAgIHVzaW5nIFdlYkdQVUFkYXB0ZXJQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElE
TEludGVyZmFjZTxXZWJHUFVBZGFwdGVyPj47Ci0KLSAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKHN0
ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmLCBXZWJHUFVBZGFwdGVyUHJv
bWlzZSYmKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFUoKSA9IGRlZmF1bHQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZmZTI1ZDg2YTJjYTI0ODlkYjEzMjQzYjNjNjc1MjBhZGQwOThlN2IuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIElt
cGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFUsCi0gICAgRXhw
b3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVSB7Ci0gICAgUHJvbWlzZTxXZWJHUFVBZGFw
dGVyPiByZXF1ZXN0QWRhcHRlcihvcHRpb25hbCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0
aW9ucyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFw
dGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2Zjk5NGZiMjAzNTRiM2Vh
OTg5MzIzN2RjYzExMTFiNmVlYjE0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRl
ICJKU1dlYkdQVURldmljZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVB
ZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnM+JiYgb3B0aW9ucykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVBZGFwdGVyKFdURk1vdmUob3B0aW9ucykpKTsKLX0KLQotV2ViR1BVQWRhcHRlcjo6V2ViR1BV
QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25z
KQotICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCi17Ci19Ci0KLXZvaWQgV2ViR1BV
QWRhcHRlcjo6cmVxdWVzdERldmljZShEb2N1bWVudCYgZG9jdW1lbnQsIERldmljZVJlcXVlc3RQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKLXsKLSAgICBkb2N1bWVudC5wb3N0VGFzayhbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0
byBkZXZpY2UgPSBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShjb250ZXh0LCBwcm90ZWN0ZWRUaGlz
LmdldCgpKSkgewotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVXZWJHUFVEZXZpY2UoKmRldmljZSk7Ci0KLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJv
bWlzZS5yZWplY3QoKTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcxOWNlZDQ2
MjQyZmE4YTQxNzFiN2UzZjg1ODFjZWFlNDZlNTk2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVBZGFwdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIFdlYkdQVURldmljZTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi1jbGFzcyBXZWJHUFVB
ZGFwdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zPiYmKTsKLQotICAgIHVzaW5nIERldmljZVJlcXVlc3RQcm9taXNlID0g
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxXZWJHUFVEZXZpY2U+PjsKLSAgICB2b2lk
IHJlcXVlc3REZXZpY2UoRG9jdW1lbnQmLCBEZXZpY2VSZXF1ZXN0UHJvbWlzZSYmKSBjb25zdDsK
LSAgICAKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4m
IG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zPiYmKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBt
X29wdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFw
dGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY2MWFiMDA2NDM5MGQ5ZmZh
OTIxNDZiZjlhMTkwNjU3Mjg4YzM0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVBZGFwdGVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1d
IGludGVyZmFjZSBXZWJHUFVBZGFwdGVyIHsKLSAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUV4dGVuc2lvbnMg
ZXh0ZW5zaW9uczsKLSAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVTGltaXRzIGxpbWl0
czsgRG9uJ3QgZXhwb3NlIGhpZ2hlciBsaW1pdHMgZm9yIG5vdy4KLQotICAgIC8vIE1heSByZWpl
Y3Qgd2l0aCBET01FeGNlcHRpb24gIC8vIFRPRE86IERPTUV4Y2VwdGlvbigiT3BlcmF0aW9uRXJy
b3IiKT8KLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8V2ViR1BVRGV2aWNlPiByZXF1
ZXN0RGV2aWNlKC8qR1BVRGV2aWNlRGVzY3JpcHRvciBkZXNjcmlwdG9yKi8pOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhmZTFkZjE2M2ZjNTVhY2JjYzUxYTc0MjA5MDZm
MmRjMTY0Zjg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQmluZEdyb3VwPiBXZWJHUFVCaW5kR3Jv
dXA6OmNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwPiYmIGJpbmRHcm91cCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCaW5kR3JvdXAoV1RGTW92ZShiaW5kR3JvdXApKSk7Ci19
Ci0KLVdlYkdQVUJpbmRHcm91cDo6V2ViR1BVQmluZEdyb3VwKFJlZlB0cjxHUFVCaW5kR3JvdXA+
JiYgYmluZEdyb3VwKQotICAgIDogbV9iaW5kR3JvdXAoV1RGTW92ZShiaW5kR3JvdXApKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIzMjVmYjJhZWY1NTQxYjAzNGQyZDkxZTVhNjcx
YzVjMjZmYTczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBXZWJHUFVCaW5kR3JvdXAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJH
UFVCaW5kR3JvdXA+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUJpbmRHcm91cD4g
Y3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXA+JiYpOwotCi0gICAgR1BVQmluZEdyb3VwKiBiaW5k
R3JvdXAoKSB7IHJldHVybiBtX2JpbmRHcm91cC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IFdlYkdQVUJpbmRHcm91cChSZWZQdHI8R1BVQmluZEdyb3VwPiYmKTsKLQotICAgIFJl
ZlB0cjxHUFVCaW5kR3JvdXA+IG1fYmluZEdyb3VwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NzkzMDI5NDhiNDUzYjNlZTdmOTU2YzY0YWYzOGI0ZmM5MGU5ZDRiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwK
LSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQmlu
ZEdyb3VwLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVCaW5kR3JvdXAg
ewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc4MDAxMDNj
OWE3ZTM1ZjQ3NjI2NjUzMWY1MTJhOGNiZTc5ZmIzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
V2ViR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVVNhbXBsZXIuaCIKLSNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgV2ViR1BVQmluZGluZ1Jlc291cmNlID0gVmFyaWFu
dDxSZWZQdHI8V2ViR1BVU2FtcGxlcj4sIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4sIFdlYkdQ
VUJ1ZmZlckJpbmRpbmc+OwotCi1zdHJ1Y3QgV2ViR1BVQmluZEdyb3VwQmluZGluZyB7Ci0gICAg
dW5zaWduZWQgYmluZGluZzsKLSAgICBXZWJHUFVCaW5kaW5nUmVzb3VyY2UgcmVzb3VyY2U7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
QmluZGluZy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBCaW5kaW5nLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRmNmFlZWY4Mzkz
OWFhNTIzNTBkOWMwOWE5YzA1ZGNmZTljMzU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdTMyOwotdHlwZWRlZiAoV2ViR1BVU2FtcGxlciBvciBXZWJHUFVUZXh0dXJlVmll
dyBvciBXZWJHUFVCdWZmZXJCaW5kaW5nKSBXZWJHUFVCaW5kaW5nUmVzb3VyY2U7Ci0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGlj
dGlvbmFyeSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAgICByZXF1aXJlZCB1MzIgYmluZGlu
ZzsKLSAgICByZXF1aXJlZCBXZWJHUFVCaW5kaW5nUmVzb3VyY2UgcmVzb3VyY2U7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljOGVkOTNh
MTgwNGMwOTg3OTcxYTllN2ZiMTJhNmEzNTE3Njk0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJCaW5kaW5nVHlwZShjb25zdCBHUFVCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZyYgYmluZGluZywgY29u
c3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVO
VVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBzd2l0Y2ggKGJpbmRpbmcu
dHlwZSkgewotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgICAg
IGlmICghYnVmZmVyLT5pc1VuaWZvcm0oKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBHUFVCdWZmZXIgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUgZG9lcyBub3QgaGF2ZSBVTklGT1JN
IHVzYWdlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEdQ
VUJpbmRpbmdUeXBlOjpTdG9yYWdlQnVmZmVyOgotICAgICAgICBpZiAoIWJ1ZmZlci0+aXNTdG9y
YWdlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQnVmZmVyIHJlc291cmNl
IGZvciBiaW5kaW5nICV1IGRvZXMgbm90IGhhdmUgU1RPUkFHRSB1c2FnZSEiLCBmdW5jdGlvbk5h
bWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBMYXlvdXQgYmluZGluZyAldSBpcyBub3QgYSBidWZmZXItdHlwZSByZXNvdXJjZSEi
LCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVzY3JpcHRvcigpIGNv
bnN0Ci17Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVURldmljZTo6
Y3JlYXRlQmluZEdyb3VwKCkiOwotCi0gICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+YmluZEdy
b3VwTGF5b3V0KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVUJpbmRH
cm91cExheW91dCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIH0KLQotICAgIGlmIChiaW5kaW5ncy5zaXplKCkgIT0gbGF5b3V0LT5iaW5kR3JvdXBM
YXlvdXQoKS0+YmluZGluZ3NNYXAoKS5zaXplKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBNaXNtYXRjaGVkIG51bWJlciBvZiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5ncyBhbmQgR1BV
QmluZEdyb3VwQmluZGluZ3MhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBhdXRvIGxheW91dE1hcCA9IGxheW91dC0+YmluZEdyb3Vw
TGF5b3V0KCktPmJpbmRpbmdzTWFwKCk7Ci0KLSAgICBWZWN0b3I8R1BVQmluZEdyb3VwQmluZGlu
Zz4gYmluZEdyb3VwQmluZGluZ3M7Ci0gICAgYmluZEdyb3VwQmluZGluZ3MucmVzZXJ2ZUNhcGFj
aXR5KGJpbmRpbmdzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGJpbmRpbmcgOiBi
aW5kaW5ncykgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbGF5b3V0TWFwLmZpbmQoYmluZGlu
Zy5iaW5kaW5nKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yID09IGxheW91dE1hcC5lbmQoKSkgewot
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nICV1
IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5n
LmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnN0IGF1dG8gbGF5b3V0QmluZGluZyA9IGl0ZXJhdG9yLT52YWx1ZTsKLQot
ICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFtd
KGNvbnN0IFJlZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxH
UFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAgIGlmICghc2FtcGxlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYXV0byBncHVTYW1wbGVy
ID0gc2FtcGxlci0+c2FtcGxlcigpOwotICAgICAgICAgICAgaWYgKCFncHVTYW1wbGVyKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1ha2VSZWYoKmdwdVNhbXBsZXIpKTsKLSAg
ICAgICAgfSwgW10oY29uc3QgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiYgdmlldykgLT4gc3Rk
OjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAgIGlmICghdmlldykK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYXV0byB0
ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwotICAgICAgICAgICAgaWYgKCF0ZXh0dXJlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1ha2VSZWYoKnRleHR1cmUpKTsKLSAgICAg
ICAgfSwgWyZsYXlvdXRCaW5kaW5nLCBmdW5jdGlvbk5hbWVdIChXZWJHUFVCdWZmZXJCaW5kaW5n
IGJ1ZmZlckJpbmRpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0g
ICAgICAgICAgICBpZiAoIWJ1ZmZlckJpbmRpbmcuYnVmZmVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1ZmZlckJpbmRp
bmcuYnVmZmVyLT5idWZmZXIoKTsKLSAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIGlmICghdmFsaWRhdGVC
dWZmZXJCaW5kaW5nVHlwZShidWZmZXIsIGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLCBm
dW5jdGlvbk5hbWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KEdQVUJ1ZmZl
ckJpbmRpbmcgeyBtYWtlUmVmKCpidWZmZXIpLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVy
QmluZGluZy5zaXplIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBhdXRvIGJpbmRpbmdSZXNv
dXJjZSA9IFdURjo6dmlzaXQoYmluZGluZ1Jlc291cmNlVmlzaXRvciwgYmluZGluZy5yZXNvdXJj
ZSk7Ci0gICAgICAgIGlmICghYmluZGluZ1Jlc291cmNlKSB7Ci0gICAgICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IEludmFsaWQgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUhIiwgZnVuY3Rpb25OYW1l
LCBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBiaW5kR3JvdXBCaW5kaW5n
cy51bmNoZWNrZWRBcHBlbmQoR1BVQmluZEdyb3VwQmluZGluZyB7IGJpbmRpbmcuYmluZGluZywg
V1RGTW92ZShiaW5kaW5nUmVzb3VyY2UudmFsdWUoKSkgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IEdQVUJpbmRHcm91cERlc2NyaXB0b3IgeyBtYWtlUmVmKCpsYXlvdXQtPmJpbmRHcm91cExheW91
dCgpKSwgV1RGTW92ZShiaW5kR3JvdXBCaW5kaW5ncykgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyNTIxMDhlMDVlZTdjZGU3NWQ3NTcwNWVmZDRk
NjFhN2FlNTIyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwQmlu
ZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3I7Ci0KLXN0cnVjdCBXZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0
b3I+IHRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25zdDsKLQotICAgIFJlZlB0
cjxjb25zdCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKLSAgICBWZWN0b3I8V2ViR1BV
QmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI3NWM2MzI1OTAwMjk5MWExNjZkYTUwMGVkMjJiNzRm
ODVhNWE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQmluZEdyb3VwTGF5b3V0IGxheW91dDsKLSAg
ICByZXF1aXJlZCBzZXF1ZW5jZTxXZWJHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kaW5nczsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkMmY4NzkwMTRl
NTYzZGY5MTUzNjA1YmIwZTMwNWY2M2ZkMTc1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlv
dXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
PFdlYkdQVUJpbmRHcm91cExheW91dD4gV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoUmVm
UHRyPEdQVUJpbmRHcm91cExheW91dD4mJiBsYXlvdXQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVQmluZEdyb3VwTGF5b3V0KFdURk1vdmUobGF5b3V0KSkpOwotfQotCi1XZWJH
UFVCaW5kR3JvdXBMYXlvdXQ6OldlYkdQVUJpbmRHcm91cExheW91dChSZWZQdHI8R1BVQmluZEdy
b3VwTGF5b3V0PiYmIGxheW91dCkKLSAgICA6IG1fYmluZEdyb3VwTGF5b3V0KFdURk1vdmUobGF5
b3V0KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwTGF5b3V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Y2M1YTc1
MTJiYzA3YWE1Yjk1Mjg2MDdhZjJjZDg0MWE5MjIwMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BV
QmluZEdyb3VwTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQmluZEdyb3VwTGF5b3V0
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0
ZShSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmKTsKLQotICAgIGNvbnN0IEdQVUJpbmRHcm91
cExheW91dCogYmluZEdyb3VwTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9iaW5kR3JvdXBMYXlv
dXQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVCaW5kR3JvdXBMYXlv
dXQoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQmluZEdy
b3VwTGF5b3V0PiBtX2JpbmRHcm91cExheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWVlM2UyNGYxMmEzYWU4MWFkY2VjYzVlNWUxOGYwYmE3OGIxMjdm
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRl
cmZhY2VOYW1lPUdQVUJpbmRHcm91cExheW91dCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRl
cmZhY2UgV2ViR1BVQmluZEdyb3VwTGF5b3V0IHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTA2NjI2NDk0MThiNDY4ZGI0ZjA5MzAyODZiNzFiMjNjMjM5NzdhMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVy
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIK
LSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJ1
ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmUHRyPEdQVUJ1ZmZlcj4mJiBidWZmZXIsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlcnJvclNjb3BlcykpOwotfQotCi1XZWJHUFVC
dWZmZXI6OldlYkdQVUJ1ZmZlcihSZWZQdHI8R1BVQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzKQotICAgIDogR1BVT2JqZWN0QmFzZShtYWtlUmVmKGVycm9yU2Nv
cGVzKSkKLSAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotdm9pZCBXZWJH
UFVCdWZmZXI6Om1hcFJlYWRBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UpCi17
Ci0gICAgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhXVEZNb3ZlKHByb21pc2UpLCB0
cnVlKTsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6Om1hcFdyaXRlQXN5bmMoQnVmZmVyTWFwcGlu
Z1Byb21pc2UmJiBwcm9taXNlKQotewotICAgIHJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJh
Y2soV1RGTW92ZShwcm9taXNlKSwgZmFsc2UpOwotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6dW5t
YXAoKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgoIkdQVUJ1ZmZlci51bm1h
cCgpOiAiKTsKLQotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIGVycm9yU2NvcGVzKCkuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogaW52YWxpZCBHUFVCdWZmZXIh
Iik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+dW5tYXAoJmVycm9yU2NvcGVzKCkpOwot
fQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6ZGVzdHJveSgpCi17Ci0gICAgZXJyb3JTY29wZXMoKS5z
ZXRFcnJvclByZWZpeCgiR1BVQnVmZmVyLmRlc3Ryb3koKTogIik7Ci0KLSAgICBpZiAoIW1fYnVm
ZmVyKQotICAgICAgICBlcnJvclNjb3BlcygpLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxp
ZCBvcGVyYXRpb24hIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fYnVmZmVyLT5kZXN0cm95KCZl
cnJvclNjb3BlcygpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KLX0KLQot
dm9pZCBXZWJHUFVCdWZmZXI6OnJlamVjdE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJhY2soQnVmZmVy
TWFwcGluZ1Byb21pc2UmJiBwcm9taXNlLCBib29sIGlzUmVhZCkKLXsKLSAgICBlcnJvclNjb3Bl
cygpLnNldEVycm9yUHJlZml4KG1ha2VTdHJpbmcoIkdQVUJ1ZmZlci5tYXAiLCBpc1JlYWQgPyAi
UmVhZCIgOiAiV3JpdGUiLCAiQXN5bmMoKTogIikpOwotCi0gICAgaWYgKCFtX2J1ZmZlcikgewot
ICAgICAgICBlcnJvclNjb3BlcygpLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVy
YXRpb246IGludmFsaWQgR1BVQnVmZmVyISIpOwotICAgICAgICBwcm9taXNlLnJlamVjdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9idWZmZXItPnJlZ2lzdGVyTWFwcGluZ0Nh
bGxiYWNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcHJvdGVjdGVkRXJyb3JTY29wZXMg
PSBtYWtlUmVmKGVycm9yU2NvcGVzKCkpXSAoSlNDOjpBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIp
IG11dGFibGUgewotICAgICAgICBpZiAoYXJyYXlCdWZmZXIpCi0gICAgICAgICAgICBwcm9taXNl
LnJlc29sdmUoKmFycmF5QnVmZmVyKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogSXQncyBwb3NzaWJsZSB0byBoaXQgdGhpcyBjb2RlIHBhdGggaW4gcmVzcG9uc2UgdG8g
YW4gdW5tYXAgY2FsbCwgd2hlcmUKLSAgICAgICAgICAgIC8vIHRoZSBBcnJheUJ1ZmZlciB3aWxs
IGRlZmluaXRlbHkgYmUgbnVsbCwgYW5kIHRodXMgYW4gb3V0IG9mIG1lbW9yeSBlcnJvciBtYWtl
cyBubyBzZW5zZS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQxNjYKLSAgICAgICAgICAgIHByb3RlY3RlZEVycm9yU2NvcGVzLT5nZW5l
cmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoKTsKLSAgICAgICAgfQotICAgIH0sIGlzUmVhZCwgZXJyb3JTY29wZXMo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmVlZTIwOTJhM2RlZGY3YjczNTI2ZDllZDhhMzI5
MjNhZWY0YjdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZl
clVzYWdlLmgiCi0jaW5jbHVkZSAiR1BVT2JqZWN0QmFzZS5oIgotI2luY2x1ZGUgIklETFR5cGVz
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFy
cmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJE
ZXNjcmlwdG9yOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBHUFVPYmplY3RCYXNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZlB0cjxHUFVC
dWZmZXI+JiYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBHUFVCdWZmZXIqIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgY29uc3QgR1BVQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotCi0gICAgdXNpbmcgQnVmZmVyTWFwcGlu
Z1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZm
ZXI+PjsKLSAgICB2b2lkIG1hcFJlYWRBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmKTsKLSAg
ICB2b2lkIG1hcFdyaXRlQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJik7Ci0gICAgdm9pZCB1
bm1hcCgpOwotICAgIHZvaWQgZGVzdHJveSgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdl
YkdQVUJ1ZmZlcihSZWZQdHI8R1BVQnVmZmVyPiYmLCBHUFVFcnJvclNjb3BlcyYpOwotCi0gICAg
dm9pZCByZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNhbGxiYWNrKEJ1ZmZlck1hcHBpbmdQcm9taXNl
JiYsIGJvb2wpOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gbV9idWZmZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDViMGE5MGM0MTE3YzFmMDQ3Y2NkNGM5ZTE1NDM4MmU3ODUxMjM2ZGMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFt
ZT1HUFVCdWZmZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUJ1ZmZl
ciB7Ci0gICAgUHJvbWlzZTxBcnJheUJ1ZmZlcj4gbWFwUmVhZEFzeW5jKCk7Ci0gICAgUHJvbWlz
ZTxBcnJheUJ1ZmZlcj4gbWFwV3JpdGVBc3luYygpOwotICAgIHVuZGVmaW5lZCB1bm1hcCgpOwot
Ci0gICAgdW5kZWZpbmVkIGRlc3Ryb3koKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ3ZDhiOGM4MGY5ZDBlZjhmZmU1NGNjMDQ2ZjYwNjgzZTZjNjdhNGQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVQnVmZmVyQmluZGluZyB7Ci0g
ICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVpbnQ2NF90IG9mZnNldDsKLSAg
ICB1aW50NjRfdCBzaXplOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGMxZDgyNmRkZjZhMGY2ZWI4NGU5OTVlNTJjNWEyYTU3YmNiN2YzOTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVQnVmZmVy
QmluZGluZyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQnVmZmVyIGJ1ZmZlcjsKLSAgICB1NjQgb2Zm
c2V0ID0gMDsKLSAgICByZXF1aXJlZCB1NjQgc2l6ZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNTEwNTExNzc2ZDg3ZWI1MjcxODc1NTIyNjAzNTM4MDM5ZTFm
YzY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShi
dWZmZXIpKSk7Ci19Ci0KLVdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIo
UmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotICAgIDogbV9jb21tYW5kQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODNhMWRhNGVhM2MwOWJjZDk3YTdjODZkNzZjZWI4YjAwOWJmZTM0MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVy
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUo
UmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgR1BVQ29tbWFuZEJ1ZmZlciogY29t
bWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsgfQotCi1wcml2YXRl
OgotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwot
Ci0gICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWUyZjJkY2JjYjJiMTU3NmExZjE4ZWUz
YmE2MjAwY2Y1N2JlNTgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbW1hbmRCdWZmZXIsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRCdWZmZXIgewotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQzZTQ3ZDcwNTZlNTE2ZDBkNDk2MmNiZTNhODhm
MDA1MzlmNWFhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUg
IkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0j
aW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5o
IgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5
Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICghYnVmZmVyIHx8ICFi
dWZmZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5j
b2RlcjogSW52YWxpZCBidWZmZXIgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0K
LSAgICByZXR1cm4gR1BVQnVmZmVyQ29weVZpZXcgeyBtYWtlUmVmKCpidWZmZXItPmJ1ZmZlcigp
KSwgKnRoaXMgfTsKLX0KLQotc3RkOjpvcHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IFdlYkdQ
VVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCkgY29uc3QKLXsK
LSAgICBpZiAoIXRleHR1cmUgfHwgIXRleHR1cmUtPnRleHR1cmUoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgdGV4dHVyZSBmb3IgY29weSEi
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
QWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJldHVybiBHUFVUZXh0dXJlQ29weVZpZXcg
eyBtYWtlUmVmKCp0ZXh0dXJlLT50ZXh0dXJlKCkpLCAqdGhpcyB9OwotfQotCi1SZWY8V2ViR1BV
Q29tbWFuZEVuY29kZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoUmVmUHRyPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQ
VUNvbW1hbmRFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1XZWJHUFVDb21tYW5kRW5j
b2Rlcjo6V2ViR1BVQ29tbWFuZEVuY29kZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVm
ZmVyKQotICAgIDogbV9jb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5k
ZXJQYXNzKGNvbnN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewot
ICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVD
b21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwot
ICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShudWxscHRyKTsK
LSAgICB9Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAg
cmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobnVsbHB0cik7Ci0KLSAgICBh
dXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKG1ha2VSZWYoKm1f
Y29tbWFuZEJ1ZmZlciksIFdURk1vdmUoKmdwdURlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotUmVm
PFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29t
cHV0ZVBhc3MoKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcygpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6
Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBhdXRvIGVuY29kZXIgPSBHUFVDb21wdXRlUGFz
c0VuY29kZXI6OnRyeUNyZWF0ZShtYWtlUmVmKCptX2NvbW1hbmRCdWZmZXIpKTsKLSAgICByZXR1
cm4gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVyKSk7Ci19
Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihXZWJHUFVC
dWZmZXImIHNyYywgdWludDY0X3Qgc3JjT2Zmc2V0LCBXZWJHUFVCdWZmZXImIGRzdCwgdWludDY0
X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVy
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZl
clRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghc3JjLmJ1ZmZlcigpIHx8ICFkc3QuYnVmZmVyKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52
YWxpZCBHUFVCdWZmZXIhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1
ZmZlclRvQnVmZmVyKG1ha2VSZWYoKnNyYy5idWZmZXIoKSksIHNyY09mZnNldCwgbWFrZVJlZigq
ZHN0LmJ1ZmZlcigpKSwgZHN0T2Zmc2V0LCBzaXplKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYg
c3JjQnVmZmVyLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdFRleHR1cmUsIGNvbnN0
IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVy
ZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBh
dXRvIGdwdUJ1ZmZlclZpZXcgPSBzcmNCdWZmZXIudHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXco
KTsKLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gZHN0VGV4dHVyZS50cnlDcmVhdGVHUFVUZXh0
dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1QnVmZmVyVmlldyB8fCAhZ3B1VGV4dHVyZVZp
ZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0
aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9UZXh0dXJlKFdURk1vdmUo
KmdwdUJ1ZmZlclZpZXcpLCBXVEZNb3ZlKCpncHVUZXh0dXJlVmlldyksIHNpemUpOwotfQotCi12
b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdlYkdQ
VVRleHR1cmVDb3B5VmlldyYgc3JjVGV4dHVyZSwgY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcm
IGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKCFtX2NvbW1h
bmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBzcmNUZXh0dXJlLnRyeUNyZWF0
ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IGRzdEJ1ZmZl
ci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVUZXh0dXJlVmll
dyB8fCAhZ3B1QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJl
VG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBXVEZNb3ZlKCpncHVCdWZmZXJWaWV3
KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9U
ZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjLCBjb25zdCBXZWJHUFVUZXh0
dXJlQ29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKCFt
X2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNv
ZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGdwdVNyY1ZpZXcgPSBzcmMudHJ5Q3JlYXRlR1BV
VGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0byBncHVEc3RWaWV3ID0gZHN0LnRyeUNyZWF0ZUdQ
VVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVTcmNWaWV3IHx8ICFncHVEc3RWaWV3
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlv
bi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weVRleHR1cmVUb1RleHR1cmUoV1RGTW92ZSgq
Z3B1U3JjVmlldyksIFdURk1vdmUoKmdwdURzdFZpZXcpLCBzaXplKTsKLX0KLSAgICAKLVJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKCkKLXsKLSAg
ICBpZiAoIW1fY29tbWFuZEJ1ZmZlciB8fCBtX2NvbW1hbmRCdWZmZXItPmlzRW5jb2RpbmdQYXNz
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpmaW5pc2go
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAgIC8vIFBhc3NlcyB0aGUgcmVmZXJlbmNl
ZCBHUFVDb21tYW5kQnVmZmVyIHRvIHRoZSBXZWJHUFVDb21tYW5kQnVmZmVyLCBpbnZhbGlkYXRp
bmcgdGhpcyBXZWJHUFVDb21tYW5kRW5jb2Rlci4KLSAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6Y3JlYXRlKG1fY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmUxODRhMTE0ZjJkZGRmZjkwYmUzMzI4ZjVk
MWU2MDc0NWNiNzNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgot
I2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI7Ci1jbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVVRleHR1cmU7Ci0KLXN0cnVj
dCBHUFVFeHRlbnQzRDsKLXN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLQotc3Ry
dWN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3IDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiB0cnlDcmVhdGVHUFVCdWZmZXJDb3B5Vmll
dygpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gYnVmZmVyOwotfTsKLQotc3Ry
dWN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29w
eVZpZXcoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOwotfTsK
LQotY2xhc3MgV2ViR1BVQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVD
b21tYW5kRW5jb2Rlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEVu
Y29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWY8V2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI+IGJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvciYpOwotICAgIFJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IGJlZ2lu
Q29tcHV0ZVBhc3MoKTsKLSAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihXZWJHUFVCdWZmZXIm
LCB1aW50NjRfdCBzcmNPZmZzZXQsIFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IGRzdE9mZnNldCwg
dWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdlYkdQ
VUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgR1BV
RXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4
dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBHUFVFeHRl
bnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVy
ZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50
M0QmKTsKLSAgICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gZmluaXNoKCk7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViR1BVQ29tbWFuZEVuY29kZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwot
Ci0gICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZDIyZTA0ODQ4ZDI4NTRiOGY1YzEz
MjQ1YzQ2MjE2ODg2MjI5MTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29k
ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1X
ZWJHUFVCdWZmZXJDb3B5VmlldwotXSBkaWN0aW9uYXJ5IEdQVUJ1ZmZlckNvcHlWaWV3IHsKLSAg
ICByZXF1aXJlZCBXZWJHUFVCdWZmZXIgYnVmZmVyOwotICAgIHU2NCBvZmZzZXQgPSAwOwotICAg
IHJlcXVpcmVkIHUzMiByb3dQaXRjaDsKLSAgICByZXF1aXJlZCB1MzIgaW1hZ2VIZWlnaHQ7Ci19
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BVVGV4dHVyZUNvcHlWaWV3Ci1dIGRpY3Rpb25h
cnkgR1BVVGV4dHVyZUNvcHlWaWV3IHsKLSAgICByZXF1aXJlZCBXZWJHUFVUZXh0dXJlIHRleHR1
cmU7Ci0gICAgdTMyIG1pcExldmVsID0gMDsKLSAgICB1MzIgYXJyYXlMYXllciA9IDA7Ci0gICAg
R1BVT3JpZ2luM0Qgb3JpZ2luOyAvLyB7eDogMCwgeTogMCwgejogMH0KLX07Ci0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbW1hbmRFbmNv
ZGVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVDb21tYW5kRW5jb2Rl
ciB7Ci0gICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgYmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0KLSAgICB1bmRlZmluZWQgY29weUJ1ZmZlclRvQnVm
ZmVyKAotICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAotICAgICAgICB1NjQgc3JjT2Zmc2V0LAot
ICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAotICAgICAgICB1NjQgZHN0T2Zmc2V0LAotICAgICAg
ICB1NjQgc2l6ZSk7Ci0KLSAgICB1bmRlZmluZWQgY29weUJ1ZmZlclRvVGV4dHVyZSgKLSAgICAg
ICAgR1BVQnVmZmVyQ29weVZpZXcgc291cmNlLAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcg
ZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKLQotICAgIHVuZGVm
aW5lZCBjb3B5VGV4dHVyZVRvQnVmZmVyKAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291
cmNlLAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgR1BV
RXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlUZXh0dXJlVG9UZXh0dXJl
KAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBHUFVUZXh0dXJl
Q29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKLQot
ICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIgZmluaXNoKCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZmE3ODhjODZiYzkxYjhiMDczYTZkNWIz
ZDU1MTU3NzI3MjNjY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgi
Ci0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJiBlbmNvZGVy
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcihX
VEZNb3ZlKGVuY29kZXIpKSk7Ci19Ci0KLVdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6V2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+JiYgZW5jb2Rl
cikKLSAgICA6IG1fcGFzc0VuY29kZXIgeyBXVEZNb3ZlKGVuY29kZXIpIH0KLXsKLX0KLQotdm9p
ZCBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1
dGVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IElu
dmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghcGlw
ZWxpbmUuY29tcHV0ZVBpcGVsaW5lKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1
dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBwaXBlbGluZSEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRQaXBlbGluZShtYWtlUmVm
KCpwaXBlbGluZS5jb21wdXRlUGlwZWxpbmUoKSkpOwotfQotCi12b2lkIFdlYkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6ZGlzcGF0Y2godW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgeikK
LXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlv
bi4KLSAgICBtX3Bhc3NFbmNvZGVyLT5kaXNwYXRjaCh4LCB5LCB6KTsKLX0KLQotR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6cGFzc0VuY29kZXIo
KQotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwotfQotCi1jb25zdCBHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpwYXNzRW5jb2Rl
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWVkYzEyZTJmYzMyOGQ5YTk3NjE4
YjVjOTBlMzUzOWJmNDNlNzcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbXB1dGVQYXNzRW5jb2RlcjsKLWNsYXNzIEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOwotCi1j
bGFzcyBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICB2
b2lkIHNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZSYpOwotICAgIHZvaWQg
ZGlzcGF0Y2godW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgeik7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29k
ZXI+JiYpOwotCi0gICAgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkg
ZmluYWw7Ci0gICAgY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVy
KCkgY29uc3QgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBtX3Bh
c3NFbmNvZGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1MzQ2Yzk0ODdjZDE2NjI5Mzg4NGJhZGU5NGI1MzA5NmIwNjBiOGM3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQ
VUNvbXB1dGVQYXNzRW5jb2RlciwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBFeHBv
c2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIHVuZGVmaW5lZCBzZXRQaXBlbGluZShXZWJH
UFVDb21wdXRlUGlwZWxpbmUgcGlwZWxpbmUpOwotICAgIHVuZGVmaW5lZCBkaXNwYXRjaCh1MzIg
eCwgdTMyIHksIHUzMiB6KTsKLQotICAgIC8vIFRPRE8gYWRkIG1pc3NpbmcgY29tbWFuZHMKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmZmEyODBiOWNl
OGQ3NDYxOGE2ODA3MjljYTY4MDUwODE2MDM4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxp
bmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxp
bmUuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkdQVVBpcGVsaW5l
LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1v
ZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBXZWJHUFVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShX
ZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGlu
ZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0
YSYmIGNvbXB1dGVTaGFkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lKGRldmljZSwgV1RGTW92ZShwaXBlbGluZSksIGVycm9yU2NvcGVzLCBXVEZN
b3ZlKGNvbXB1dGVTaGFkZXIpKSk7Ci19Ci0KLVdlYkdQVUNvbXB1dGVQaXBlbGluZTo6V2ViR1BV
Q29tcHV0ZVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBSZWZQdHI8R1BVQ29tcHV0ZVBp
cGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMsIFdlYkdQVVBp
cGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcikKLSAgICA6IFdlYkdQVVBpcGVsaW5l
KGRldmljZSwgZXJyb3JTY29wZXMpCi0gICAgLCBtX2NvbXB1dGVQaXBlbGluZShXVEZNb3ZlKHBp
cGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZVNoYWRlcihXVEZNb3ZlKGNvbXB1dGVTaGFkZXIpKQot
ewotfQotCi1XZWJHUFVDb21wdXRlUGlwZWxpbmU6On5XZWJHUFVDb21wdXRlUGlwZWxpbmUoKSA9
IGRlZmF1bHQ7Ci0KLWJvb2wgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpjbG9uZVNoYWRlck1vZHVs
ZXMoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fY29tcHV0ZVNoYWRl
ci5tb2R1bGUpIHsKLSAgICAgICAgY29uc3QgYXV0byYgY29tcHV0ZVNvdXJjZSA9IG1fY29tcHV0
ZVNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAgICBtX2NvbXB1dGVTaGFkZXIubW9kdWxl
ID0gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUo
ZGV2aWNlLmRldmljZSgpLCB7IGNvbXB1dGVTb3VyY2UgfSksIGNvbXB1dGVTb3VyY2UpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdl
YkdQVUNvbXB1dGVQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IFdlYkdQVURldmljZSYgZGV2aWNl
KQotewotICAgIGlmIChtX2NvbXB1dGVQaXBlbGluZSAmJiBtX2NvbXB1dGVTaGFkZXIubW9kdWxl
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBncHVDb21wdXRlU2hhZGVyTW9kdWxlID0gbV9jb21wdXRl
U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpIHsKLSAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2UobWFrZVJlZigqZ3B1Q29tcHV0ZVNoYWRlck1vZHVs
ZSksIHsgbV9jb21wdXRlU2hhZGVyLmVudHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9jb21wdXRlUGlwZWxpbmUtPnJlY29tcGlsZShkZXZpY2UuZGV2aWNlKCksIFdURk1vdmUoY29t
cHV0ZVN0YWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg0NzEzNTJlMjgyYTRiZWQ4OWQ2ZDg3
YWI4MmJiZTBkOWQ4ODA0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5o
IgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgR1BVUGlwZWxpbmU7Ci1jbGFzcyBHUFVFcnJv
clNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZTsK
LQotY2xhc3MgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIFdlYkdQVVBpcGVs
aW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVDb21wdXRlUGlwZWxpbmUoKTsKLQot
ICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUoV2ViR1BVRGV2aWNl
JiwgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQ
aXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpOwotCi0gICAgYm9vbCBpc0NvbXB1
dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVQaXBlbGluZSgpOyB9Ci0gICAgY29uc3QgR1BVQ29tcHV0
ZVBpcGVsaW5lKiBjb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVQaXBl
bGluZS5nZXQoKTsgfQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNvbXB1dGVTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVTaGFkZXIubW9kdWxlOyB9Ci0KLSAgICBib29s
IGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmKTsKLSAgICBib29sIHJlY29t
cGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21wdXRl
UGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4mJiwgR1BV
RXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIp
OwotCi0gICAgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gbV9jb21wdXRlUGlwZWxpbmU7Ci0K
LSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBX
ZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX2NvbXB1dGVTaGFkZXI7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCR1BVUElQRUxJTkUo
V2ViQ29yZTo6V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLCBpc0NvbXB1dGVQaXBlbGluZSgpKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhZWEyY2UyZjQyOWM3NTZiYzliYmQwZjhkNzliMmIzM2JjNmM0MDBkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbXB1dGVQaXBlbGluZSwKLSAgICBFeHBv
c2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIHsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOGRiN2QzNTg4YjdmMWFmODIwMzBiNDlhODUxMTEwODFmOTFiMzU4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRp
b25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9y
U2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0g
bGF5b3V0ID8gbWFrZVJlZlB0cihsYXlvdXQtPnBpcGVsaW5lTGF5b3V0KCkpIDogbnVsbHB0cjsK
LQotICAgIGF1dG8gY29tcHV0ZSA9IGNvbXB1dGVTdGFnZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWNvbXB1dGUpIHsKLSAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVFcnJvcigiR1BVRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoKTog
SW52YWxpZCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0KSwgV1RGTW92ZSgqY29tcHV0ZSkgfTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYmViN2VmMzY5NDJhMmE5NmI2OTdiMDQ4NmJiODU1ZTAwZTNmM2U4ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2lu
Y2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFiYzY3M2M5NWUyODIyYjVl
ZWI2ZWRjMzFhZmZkOGY2NmIzODExYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25h
cnkgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UgewotICAgIHJlcXVpcmVkIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ciBjb21wdXRlU3RhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYmU3M2Y1N2Mw
NmMxY2QwMDJkYjU1OTM1NWQ4Y2QzNzZmYmYyNDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgotI2lu
Y2x1ZGUgIkdQVUJpbmRHcm91cC5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIK
LSNpbmNsdWRlICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNp
bmNsdWRlICJHUFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNp
bmNsdWRlICJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgiCi0jaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJKU0dQVU91dE9mTWVtb3J5
RXJyb3IuaCIKLSNpbmNsdWRlICJKU0dQVVZhbGlkYXRpb25FcnJvci5oIgotI2luY2x1ZGUgIkpT
V2ViR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVUJp
bmRHcm91cC5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIldl
YkdQVUNvbW1hbmRFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNp
bmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVRdWV1ZS5o
IgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2FtcGxlci5oIgotI2lu
Y2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIKLSNpbmNsdWRlICJX
ZWJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2Uu
aD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHUFVEZXZpY2UpOwotCi1Mb2NrIFdlYkdQVURldmljZTo6c19pbnN0YW5j
ZXNMb2NrOwotCi1SZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4m
JiBhZGFwdGVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURldmljZTo6dHJ5Q3JlYXRl
KGFkYXB0ZXItPm9wdGlvbnMoKSkpIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihu
ZXcgV2ViR1BVRGV2aWNlKGNvbnRleHQsIFdURk1vdmUoYWRhcHRlciksIG1ha2VSZWYoKmRldmlj
ZSkpKTsKLSAgICAgICAgZGV2aWNlLT5zZXRFcnJvclNjb3BlcyhyZXN1bHQtPm1fZXJyb3JTY29w
ZXMuY29weVJlZigpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLUhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIFdlYkdQVURldmljZTo6aW5z
dGFuY2VzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJHUFVEZXZp
Y2UqPj4gaW5zdGFuY2VzOwotICAgIHJldHVybiBpbnN0YW5jZXM7Ci19Ci0KLUxvY2smIFdlYkdQ
VURldmljZTo6aW5zdGFuY2VzTG9jaygpCi17Ci0gICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsK
LX0KLQotV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQVURldmlj
ZT4mJiBkZXZpY2UpCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKLSAg
ICAsIG1fYWRhcHRlcihXVEZNb3ZlKGFkYXB0ZXIpKQotICAgICwgbV9kZXZpY2UoV1RGTW92ZShk
ZXZpY2UpKQotICAgICwgbV9lcnJvclNjb3BlcyhHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoR1BVRXJyb3ImJiBlcnJvcikgewotICAg
ICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICBkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihX
VEZNb3ZlKGVycm9yKSk7Ci0gICAgfSkpCi17Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5pc0RvY3VtZW50KCkpOwotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKLSAgICB9
Ci19Ci0KLVdlYkdQVURldmljZTo6fldlYkdQVURldmljZSgpCi17Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZSgqdGhpcyk7Ci0KLSAgICB7Ci0g
ICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07
Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkp
IHsKLSAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSA9PSB0aGlzKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmVtb3ZlIGFueSBXZWJHUFVQaXBlbGluZSBmcm9tIHRoZSBpbnN0YW5jZXMg
bGlzdCwgYXMgdGhleSBtYXkgc3RpbGwgZXhpc3QuCi0gICAgICAgICAgICAgICAgLy8gT25seSBy
ZW1vdmUgdGhlIGFzc29jaWF0aW9uIHdpdGggYSBXZWJHUFUgZGV2aWNlLgotICAgICAgICAgICAg
ICAgIGVudHJ5LnZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9Owot
ICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0
YW5jZXMoKS5yZW1vdmUodGhpcyk7Ci0gICAgfQotfQotCi1SZWY8V2ViR1BVQnVmZmVyPiBXZWJH
UFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJlZml4KCJHUFVEZXZp
Y2UuY3JlYXRlQnVmZmVyKCk6ICIpOwotCi0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+dHJ5
Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6Tm90TWFwcGVk
LCBtX2Vycm9yU2NvcGVzKTsKLSAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpLCBtX2Vycm9yU2NvcGVzKTsKLX0KLQotVmVjdG9yPEpTQzo6SlNWYWx1ZT4gV2Vi
R1BVRGV2aWNlOjpjcmVhdGVCdWZmZXJNYXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29u
c3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0
ZUJ1ZmZlck1hcHBlZCgpOiAiKTsKLQotICAgIEpTQzo6SlNWYWx1ZSB3cmFwcGVkQXJyYXlCdWZm
ZXIgPSBKU0M6OmpzTnVsbCgpOwotCi0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+dHJ5Q3Jl
YXRlQnVmZmVyKGRlc2NyaXB0b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBwZWQsIG1f
ZXJyb3JTY29wZXMpOwotICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IGJ1ZmZlci0+bWFwT25DcmVhdGlvbigpOwotICAgICAgICB3cmFwcGVkQXJyYXlCdWZmZXIg
PSB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgYXJyYXlCdWZmZXIpOwotICAgIH0KLQotICAgIGF1
dG8gd2ViQnVmZmVyID0gV2ViR1BVQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBtX2Vy
cm9yU2NvcGVzKTsKLSAgICBhdXRvIHdyYXBwZWRXZWJCdWZmZXIgPSB0b0pTKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgd2ViQnVmZmVyKTsKLQotICAgIHJldHVybiB7IHdyYXBwZWRXZWJCdWZmZXIsIHdy
YXBwZWRBcnJheUJ1ZmZlciB9OwotfQotCi1SZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBj
b25zdAotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3Jl
YXRlVGV4dHVyZSgpOiAiKTsKLQotICAgIGF1dG8gdGV4dHVyZSA9IG1fZGV2aWNlLT50cnlDcmVh
dGVUZXh0dXJlKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBXZWJHUFVUZXh0dXJlOjpjcmVhdGUo
V1RGTW92ZSh0ZXh0dXJlKSk7Ci19Ci0KLVJlZjxXZWJHUFVTYW1wbGVyPiBXZWJHUFVEZXZpY2U6
OmNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNv
bnN0Ci17Ci0gICAgYXV0byBzYW1wbGVyID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVNhbXBsZXIoZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIFdlYkdQVVNhbXBsZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBs
ZXIpKTsKLX0KLQotUmVmPFdlYkdQVUJpbmRHcm91cExheW91dD4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVC
aW5kR3JvdXBMYXlvdXQoZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFdlYkdQVUJpbmRHcm91cExh
eW91dDo6Y3JlYXRlKFdURk1vdmUobGF5b3V0KSk7Ci19Ci0KLVJlZjxXZWJHUFVQaXBlbGluZUxh
eW91dD4gV2ViR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBncHVE
ZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVQaXBl
bGluZUxheW91dDo6Y3JlYXRlKG51bGxwdHIpOwotICAgIAotICAgIGF1dG8gbGF5b3V0ID0gbV9k
ZXZpY2UtPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KFdURk1vdmUoKmdwdURlc2NyaXB0b3IpKTsKLSAg
ICByZXR1cm4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGxheW91dCkpOwot
fQotCi1SZWY8V2ViR1BVQmluZEdyb3VwPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChj
b25zdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAg
IGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVz
Y3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQ
VUJpbmRHcm91cDo6Y3JlYXRlKG51bGxwdHIpOwotCi0gICAgYXV0byBiaW5kR3JvdXAgPSBtX2Rl
dmljZS0+dHJ5Q3JlYXRlQmluZEdyb3VwKCpncHVEZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsK
LSAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwOjpjcmVhdGUoV1RGTW92ZShiaW5kR3JvdXApKTsK
LX0KLQotUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJN
b2R1bGUoY29uc3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0gICAgYXV0
byBtb2R1bGUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIFdlYkdQVVNoYWRl
ck1vZHVsZTo6Y3JlYXRlKFdURk1vdmUobW9kdWxlKSwgZGVzY3JpcHRvci5jb2RlKTsKLX0KLQot
UmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsK
LSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKCk6ICIpOwotCi0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50
cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IobV9lcnJvclNjb3Blcyk7Ci0gICAg
aWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6
OmNyZWF0ZSgqdGhpcywgbnVsbHB0ciwgbV9lcnJvclNjb3BlcywgeyB9LCB7IH0pOwotCi0gICAg
YXV0byBncHVQaXBlbGluZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVSZW5kZXJQaXBlbGluZSgqZ3B1
RGVzY3JpcHRvciwgbV9lcnJvclNjb3Blcyk7Ci0KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVy
RGF0YSB2ZXJ0ZXhTaGFkZXIgPSB7IGRlc2NyaXB0b3IudmVydGV4U3RhZ2UubW9kdWxlLCBkZXNj
cmlwdG9yLnZlcnRleFN0YWdlLmVudHJ5UG9pbnQgfTsKLQotICAgIFdlYkdQVVBpcGVsaW5lOjpT
aGFkZXJEYXRhIGZyYWdtZW50U2hhZGVyOwotICAgIGlmIChkZXNjcmlwdG9yLmZyYWdtZW50U3Rh
Z2UpCi0gICAgICAgIGZyYWdtZW50U2hhZGVyID0geyBkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2Uu
dmFsdWUoKS5tb2R1bGUsIGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZS52YWx1ZSgpLmVudHJ5UG9p
bnQgfTsKLQotICAgIGF1dG8gd2ViR1BVUGlwZWxpbmUgPSBXZWJHUFVSZW5kZXJQaXBlbGluZTo6
Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGdwdVBpcGVsaW5lKSwgbV9lcnJvclNjb3BlcywgV1RGTW92
ZSh2ZXJ0ZXhTaGFkZXIpLCBXVEZNb3ZlKGZyYWdtZW50U2hhZGVyKSk7Ci0gICAgaWYgKHdlYkdQ
VVBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKnRoaXMsIHdlYkdQVVBpcGVsaW5lLmdldCgpKTsKLSAg
ICByZXR1cm4gd2ViR1BVUGlwZWxpbmU7Ci19Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGlwZWxpbmU+
IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0
RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogIik7Ci0KLSAg
ICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IobV9lcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQot
ICAgICAgICByZXR1cm4gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIG51bGxw
dHIsIG1fZXJyb3JTY29wZXMsIHsgfSk7Ci0KLSAgICBhdXRvIGdwdVBpcGVsaW5lID0gbV9kZXZp
Y2UtPnRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqZ3B1RGVzY3JpcHRvciwgbV9lcnJvclNjb3Bl
cyk7Ci0KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBjb21wdXRlU2hhZGVyID0geyBk
ZXNjcmlwdG9yLmNvbXB1dGVTdGFnZS5tb2R1bGUsIGRlc2NyaXB0b3IuY29tcHV0ZVN0YWdlLmVu
dHJ5UG9pbnQgfTsKLQotICAgIGF1dG8gd2ViR1BVUGlwZWxpbmUgPSBXZWJHUFVDb21wdXRlUGlw
ZWxpbmU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShncHVQaXBlbGluZSksIG1fZXJyb3JTY29wZXMs
IFdURk1vdmUoY29tcHV0ZVNoYWRlcikpOwotICAgIGlmICh3ZWJHUFVQaXBlbGluZS0+aXNWYWxp
ZCgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBp
cGVsaW5lKCp0aGlzLCB3ZWJHUFVQaXBlbGluZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHdlYkdQVVBp
cGVsaW5lOwotfQotCi1SZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IFdlYkdQVURldmljZTo6Y3Jl
YXRlQ29tbWFuZEVuY29kZXIoKSBjb25zdAotewotICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1f
ZGV2aWNlLT50cnlDcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgcmV0dXJuIFdlYkdQVUNvbW1h
bmRFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShjb21tYW5kQnVmZmVyKSk7Ci19Ci0KLVJlZjxXZWJH
UFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1
ZXVlKQotICAgICAgICBtX3F1ZXVlID0gV2ViR1BVUXVldWU6OmNyZWF0ZShtX2RldmljZS0+dHJ5
R2V0UXVldWUoKSk7Ci0KLSAgICByZXR1cm4gbWFrZVJlZigqbV9xdWV1ZS5nZXQoKSk7Ci19Ci0K
LXZvaWQgV2ViR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKEVycm9yUHJvbWlzZSYmIHByb21pc2Up
Ci17Ci0gICAgU3RyaW5nIGZhaWxNZXNzYWdlOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+
IGVycm9yID0gbV9lcnJvclNjb3Blcy0+cG9wRXJyb3JTY29wZShmYWlsTWVzc2FnZSk7Ci0gICAg
aWYgKGZhaWxNZXNzYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGVycm9y
KTsKLSAgICBlbHNlCi0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yLCAiR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKCk6ICIgKyBmYWlsTWVzc2FnZSB9KTsK
LX0KLQotLy8gRXJyb3JzIHJlcG9ydGVkIHZpYSB0aGUgdmFsaWRhdGlvbiBlcnJvciBldmVudCBz
aG91bGQgYWxzbyBhcHBlYXIgaW4gdGhlIGNvbnNvbGUgYXMgd2FybmluZ3MuCi1zdGF0aWMgdm9p
ZCBwcmludFZhbGlkYXRpb25FcnJvclRvQ29uc29sZShHUFVFcnJvciYgZXJyb3IsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+PihlcnJvcikpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gdmFsaWRhdGlvbkVycm9yID0gV1RGOjpnZXQ8UmVmUHRyPEdQVVZhbGlkYXRp
b25FcnJvcj4+KGVycm9yKTsKLSAgICBpZiAoIXZhbGlkYXRpb25FcnJvcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBtZXNzYWdlID0gdmFsaWRhdGlvbkVycm9yLT5tZXNzYWdlKCk7Ci0g
ICAgYXV0byBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwotCi0gICAgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKTsKLX0KLQotdm9p
ZCBXZWJHUFVEZXZpY2U6OmRpc3BhdGNoVW5jYXB0dXJlZEVycm9yKEdQVUVycm9yJiYgZXJyb3Ip
Ci17Ci0gICAgcHJpbnRWYWxpZGF0aW9uRXJyb3JUb0NvbnNvbGUoZXJyb3IsIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtlcnJvciA9IFdURk1vdmUo
ZXJyb3IpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUg
ewotICAgICAgICBkaXNwYXRjaEV2ZW50KEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnVuY2FwdHVyZWRlcnJvckV2ZW50LCBXVEZNb3ZlKGVycm9yKSkpOwotICAg
IH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlhYjA5MmY5NjYxZGFjMjNiNjEwMTU1OThmOGMy
NjhiYTIyMWM2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIklETFR5cGVz
LmgiCi0jaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgotI2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
QXJyYXlCdWZmZXI7Ci1jbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVU91dE9mTWVtb3J5RXJyb3I7Ci1jbGFzcyBHUFVWYWxpZGF0aW9uRXJyb3I7Ci1j
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV2ViR1BVQmluZEdyb3VwOwotY2xh
c3MgV2ViR1BVQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2Vi
R1BVQ29tbWFuZEVuY29kZXI7Ci1jbGFzcyBXZWJHUFVDb21wdXRlUGlwZWxpbmU7Ci1jbGFzcyBX
ZWJHUFVQaXBlbGluZUxheW91dDsKLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwotY2xhc3Mg
V2ViR1BVU2FtcGxlcjsKLWNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZTsKLWNsYXNzIFdlYkdQVVN3
YXBDaGFpbjsKLWNsYXNzIFdlYkdQVVRleHR1cmU7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yOwotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU2Ft
cGxlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOwotc3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVFcnJvckZpbHRlcjsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwotCi11c2luZyBFcnJvcklE
TFVuaW9uID0gSURMVW5pb248SURMSW50ZXJmYWNlPEdQVU91dE9mTWVtb3J5RXJyb3I+LCBJRExJ
bnRlcmZhY2U8R1BVVmFsaWRhdGlvbkVycm9yPj47Ci11c2luZyBFcnJvclByb21pc2UgPSBET01Q
cm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8RXJyb3JJRExVbmlvbj4+OwotCi1jbGFzcyBXZWJH
UFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVEZXZpY2U+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJHUFVE
ZXZpY2UpOwotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVURldmljZSgpOwotCi0gICAgc3Rh
dGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IHRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYpOwotCi0gICAgc3RhdGljIEhhc2hTZXQ8V2Vi
R1BVRGV2aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2so
KSk7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNf
aW5zdGFuY2VzTG9jayk7Ci0KLSAgICBjb25zdCBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9Ci0gICAgR1BVRGV2aWNlJiBkZXZpY2UoKSB7
IHJldHVybiBtX2RldmljZS5nZXQoKTsgfQotICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KLQotICAgIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgVmVj
dG9yPEpTQzo6SlNWYWx1ZT4gY3JlYXRlQnVmZmVyTWFwcGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVRleHR1
cmU+IGNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKSBjb25zdDsKLSAg
ICBSZWY8V2ViR1BVU2FtcGxlcj4gY3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3Jp
cHRvciYpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKSBjb25zdDsK
LSAgICBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0
IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVC
aW5kR3JvdXA+IGNyZWF0ZUJpbmRHcm91cChjb25zdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
JikgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1
bGUoY29uc3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxX
ZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4g
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3ImKTsKLQotICAgIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVRdWV1ZT4gZ2V0UXVldWUoKSBjb25zdDsKLQot
ICAgIHZvaWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKSB7IG1fZXJyb3JT
Y29wZXMtPnB1c2hFcnJvclNjb3BlKGZpbHRlcik7IH0KLSAgICB2b2lkIHBvcEVycm9yU2NvcGUo
RXJyb3JQcm9taXNlJiYpOwotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7IH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmLCBSZWY8R1BVRGV2aWNlPiYmKTsK
LQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJHUFVEZXZpY2VFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotCi0g
ICAgdm9pZCBkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihHUFVFcnJvciYmKTsKLQotICAgIHN0YXRp
YyBMb2NrIHNfaW5zdGFuY2VzTG9jazsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotICAgIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiBt
X2FkYXB0ZXI7Ci0gICAgUmVmPEdQVURldmljZT4gbV9kZXZpY2U7Ci0gICAgbXV0YWJsZSBSZWZQ
dHI8V2ViR1BVUXVldWU+IG1fcXVldWU7Ci0KLSAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJy
b3JTY29wZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjN2I0NmQ0NWQ3OTY1OGQwMzEw
YmFkNGFhMzBjMzRkZTFmMzVlYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHNlcXVlbmNlPGFueT4gR1BVTWFwcGVk
QnVmZmVyOyAgLy8gW0dQVUJ1ZmZlciwgQXJyYXlCdWZmZXJdCi0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFt
ZT1HUFVEZXZpY2UsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFdlYkdQVURldmljZSA6IEV2ZW50VGFyZ2V0IHsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwotCi0gICAgV2ViR1BVQnVmZmVyIGNy
ZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3RdIEdQVU1hcHBlZEJ1ZmZlciBjcmVhdGVCdWZmZXJNYXBwZWQoR1BVQnVm
ZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVUZXh0dXJlIGNyZWF0ZVRleHR1
cmUoR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVU2FtcGxlciBj
cmVhdGVTYW1wbGVyKEdQVVNhbXBsZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgV2Vi
R1BVQmluZEdyb3VwTGF5b3V0IGNyZWF0ZUJpbmRHcm91cExheW91dChHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVVBpcGVsaW5lTGF5b3V0IGNyZWF0
ZVBpcGVsaW5lTGF5b3V0KFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKLSAgICBXZWJHUFVCaW5kR3JvdXAgY3JlYXRlQmluZEdyb3VwKFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICBXZWJHUFVTaGFkZXJNb2R1bGUgY3JlYXRlU2hh
ZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBj
cmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKLQotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIEdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciBpcyBhbiBlbXB0eSBkaWN0aW9uYXJ5LgotICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVy
IGNyZWF0ZUNvbW1hbmRFbmNvZGVyKC8qR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGRlc2Ny
aXB0b3IqLyk7Ci0KLSAgICBXZWJHUFVRdWV1ZSBnZXRRdWV1ZSgpOwotCi0gICAgLy8gRklYTUU6
IFVuaW1wbGVtZW50ZWQuCi0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUV4dGVuc2lv
bnMgZXh0ZW5zaW9uczsKLSAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVTGltaXRzIGxp
bWl0czsKLQotICAgIC8vIFdlYkdQVUZlbmNlIGNyZWF0ZUZlbmNlKFdlYkdQVUZlbmNlRGVzY3Jp
cHRvciBkZXNjcmlwdG9yKTsKLQotICAgIC8vIGF0dHJpYnV0ZSBXZWJHUFVMb2dDYWxsYmFjayBv
bkxvZzsKLSAgICAvLyBXZWJHUFVPYmplY3RTdGF0dXNRdWVyeSBnZXRPYmplY3RTdGF0dXMoU3Rh
dHVzYWJsZU9iamVjdCBzdGF0dXNhYmxlT2JqZWN0KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MzExMDBkYjU0NTEzODc5NDQ3NTZjMGZiMDFm
ZDg4MmEzMDFhODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yRmlsdGVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdm9pZCBXZWJHUFVEZXZpY2VFcnJvclNjb3Blczo6cHVzaEVycm9yU2Nv
cGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAgICBk
ZXZpY2UucHVzaEVycm9yU2NvcGUoZmlsdGVyKTsKLX0KLQotdm9pZCBXZWJHUFVEZXZpY2VFcnJv
clNjb3Blczo6cG9wRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmIGRldmljZSwgRXJyb3JQcm9taXNl
JiYgcHJvbWlzZSkKLXsKLSAgICBkZXZpY2UucG9wRXJyb3JTY29wZShXVEZNb3ZlKHByb21pc2Up
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZUVycm9yU2NvcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2VFcnJvclNjb3Blcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjBmMDdhYmUz
OThiZjlhNzM0ZDQ0NmFmNTg5NDUzYzBkYjBjMTA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
V2ViR1BVRGV2aWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVF
cnJvckZpbHRlcjsKLQotY2xhc3MgV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMgewotcHVibGljOgot
ICAgIHN0YXRpYyB2b2lkIHB1c2hFcnJvclNjb3BlKFdlYkdQVURldmljZSYsIEdQVUVycm9yRmls
dGVyKTsKLSAgICBzdGF0aWMgdm9pZCBwb3BFcnJvclNjb3BlKFdlYkdQVURldmljZSYsIEVycm9y
UHJvbWlzZSYmKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJkYzYwMmZhYjBlMmRmZmUyYjZkYTQxMjZhMjkwODZkNTM2NmRhNGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLXR5cGVkZWYgKEdQVU91dE9mTWVtb3J5RXJyb3Igb3IgR1BVVmFsaWRhdGlvbkVycm9yKSBH
UFVFcnJvcjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PVdlYkdQVURldmljZUVycm9yU2NvcGVzCi1d
IHBhcnRpYWwgaW50ZXJmYWNlIFdlYkdQVURldmljZSB7Ci0gICAgdW5kZWZpbmVkIHB1c2hFcnJv
clNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcik7Ci0gICAgUHJvbWlzZTxHUFVFcnJvcj8+IHBv
cEVycm9yU2NvcGUoKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTM0NDM0MzI0ZDQ1YzMzNTc0MDMxZmFhMmFiODVhZTMwNmNjM2JiNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIK
LV0gcGFydGlhbCBpbnRlcmZhY2UgV2ViR1BVRGV2aWNlIHsKLSAgICBbRXhwb3NlZD1XaW5kb3dd
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251bmNhcHR1cmVkZXJyb3I7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4NGI3ODEzMzBjNjY0MjRiNTRhYzM4MTdiYTZkZDg1ODYzOTAz
MzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJHUFVE
ZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUxvY2sgV2ViR1BVUGlwZWxpbmU6OnNfaW5zdGFuY2Vz
TG9jazsKLQotSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+JiBXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7Ci0gICAgcmV0dXJu
IGluc3RhbmNlczsKLX0KLQotTG9jayYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKQot
ewotICAgIHJldHVybiBzX2luc3RhbmNlc0xvY2s7Ci19Ci0KLVdlYkdQVVBpcGVsaW5lOjpXZWJH
UFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotICAgIDogR1BVT2JqZWN0QmFzZShtYWtlUmVmKGVycm9yU2NvcGVzKSkKLSAgICAsIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRldmljZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
Ci17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0KLSAgICB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgaW5zdGFuY2Vz
KCkuYWRkKHRoaXMsICZkZXZpY2UpOwotICAgIH0KLX0KLQotV2ViR1BVUGlwZWxpbmU6On5XZWJH
UFVQaXBlbGluZSgpCi17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJv
eVdlYkdQVVBpcGVsaW5lKCp0aGlzKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnMo
dGhpcykpOwotICAgICAgICBpbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7Ci0gICAgfQotfQotCi12
b2lkIFdlYkdQVVBpcGVsaW5lOjpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoKnRoaXMpOwotCi0gICAg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmODRjYmM3YWZhYWIyZWE4MTNmN2U1NjRhYmUxOWJlYWU2NGMxNzll
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRl
ICJHUFVPYmplY3RCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBHUFVFcnJv
clNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLQotY2xhc3MgV2ViR1BVUGlwZWxpbmUgOiBw
dWJsaWMgR1BVT2JqZWN0QmFzZSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIEhh
c2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgaW5zdGFuY2VzKCkgV1RGX1JF
UVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKLSAgICBzdGF0aWMgTG9jayYgaW5zdGFuY2Vz
TG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7Ci0KLSAgICBzdHJ1Y3QgU2hhZGVy
RGF0YSB7Ci0gICAgICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IG1vZHVsZTsKLSAgICAg
ICAgU3RyaW5nIGVudHJ5UG9pbnQ7Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgYm9vbCBjbG9uZVNo
YWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBy
ZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJikgPSAwOwotCi0gICAgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCkgZmluYWw7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJHUFVQaXBlbGluZShXZWJHUFVE
ZXZpY2UmLCBHUFVFcnJvclNjb3BlcyYpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBMb2NrIHNf
aW5zdGFuY2VzTG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2RlZmluZSBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQVVBJUEVMSU5FKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkg
XAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJHUFVQaXBlbGluZSYg
cGlwZWxpbmUpIHsgcmV0dXJuIHBpcGVsaW5lLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGEwYjg0NWU0Mjg5MGM1
OTIzY2RmZGQ0OGUwOGRhMTU3ZDcyOGUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJX
ZWJHUFVQaXBlbGluZUxheW91dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBX
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8V2ViR1BVUGlwZWxpbmVM
YXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWIzMmM3MDQzOWVhMWUyNDhkYjAzYWJiMDEwNmY2NjI3NDE3MWExNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
Ci0gICAgV2ViR1BVUGlwZWxpbmVMYXlvdXQ/IGxheW91dCA9IG51bGw7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGI1ZDRjYjRmOWYxOGZkZDg4NzM3Njkw
MGJiNTEzZGU4ZTJiMTJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVBpcGVsaW5l
TGF5b3V0PiBXZWJHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKFJlZlB0cjxHUFVQaXBlbGluZUxh
eW91dD4mJiBsYXlvdXQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUGlwZWxp
bmVMYXlvdXQoV1RGTW92ZShsYXlvdXQpKSk7Ci19Ci0KLVdlYkdQVVBpcGVsaW5lTGF5b3V0OjpX
ZWJHUFVQaXBlbGluZUxheW91dChSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0KQot
ICAgIDogbV9waXBlbGluZUxheW91dChXVEZNb3ZlKGxheW91dCkpCi17Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1NmY4OWRjZGUxMWJhOTQzZWFhODZjYzkzMjBjYmVk
MjcyMDkzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJHUFVQaXBlbGluZUxheW91dD4gY3JlYXRlKFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJik7
Ci0KLSAgICBHUFVQaXBlbGluZUxheW91dCogcGlwZWxpbmVMYXlvdXQoKSB7IHJldHVybiBtX3Bp
cGVsaW5lTGF5b3V0LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVUGlw
ZWxpbmVMYXlvdXQoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmKTsKLQotICAgIFJlZlB0cjxH
UFVQaXBlbGluZUxheW91dD4gbV9waXBlbGluZUxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDg0NWM3MDZlOTFlZmRlZDRiZjIwZGQ0ZGQ3MGI2MzAz
YWE4MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJ
bnRlcmZhY2VOYW1lPUdQVVBpcGVsaW5lTGF5b3V0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVQaXBlbGluZUxheW91dCB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOGMyOGViMTU0MWNjY2Ji
OWEwYmU4MGRlNmM0MjNjYzVjMDI4NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcj4gV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IoKSBjb25zdAotewotICAgIFZlY3RvcjxSZWY8Y29uc3QgR1BV
QmluZEdyb3VwTGF5b3V0Pj4gZ3B1TGF5b3V0czsKLSAgICBncHVMYXlvdXRzLnJlc2VydmVDYXBh
Y2l0eShiaW5kR3JvdXBMYXlvdXRzLnNpemUoKSk7Ci0gICAgCi0gICAgZm9yIChjb25zdCBhdXRv
JiBsYXlvdXQgOiBiaW5kR3JvdXBMYXlvdXRzKSB7Ci0gICAgICAgIGlmICghbGF5b3V0IHx8ICFs
YXlvdXQtPmJpbmRHcm91cExheW91dCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BV
RGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dCgpOiBJbnZhbGlkIEdQVUJpbmRHcm91cExheW91
dCEiKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGdwdUxheW91dHMudW5jaGVja2VkQXBwZW5kKG1ha2VSZWYoKmxheW91dC0+
YmluZEdyb3VwTGF5b3V0KCkpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciB7IFdURk1vdmUoZ3B1TGF5b3V0cykgfTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNGM3OTU0ZjM3N2Fh
MmE3OTI3N2JkNTRhMDk2N2E5NzI2OTM0NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiV2ViR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RydWN0
IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3I+IHRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpIGNvbnN0OwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+PiBiaW5kR3JvdXBMYXlvdXRz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NWZlNTUyYThkYWMyNGQ0ZGMxMjgyOTBkYjBjYTUzZTE1NzljMGQyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciB7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBiaW5kR3Jv
dXBMYXlvdXRzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDM0M2NhNzE0OTNiOTA2NzNkODQ3YmI1ZWU3YjQzZDk1MTRiNTU2
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
cjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwYXNzRW5jb2RlcigpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBwYXNzRW5jb2RlcigpLT5l
bmRQYXNzKCk7Ci19Ci0KLXZvaWQgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJp
bmRHcm91cCh1bnNpZ25lZCBpbmRleCwgV2ViR1BVQmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0g
ICAgaWYgKCFwYXNzRW5jb2RlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGJpbmQgZ3Jv
dXBzIHN1cHBvcnRlZCBpbiBXZWIgR1BVLgotICAgIGlmIChpbmRleCA+PSA0KSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6
IEludmFsaWQgaW5kZXghIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFiaW5k
R3JvdXAuYmluZEdyb3VwKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBXZWJHUFVCaW5kR3JvdXAhIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IEFueSB2YWxpZGF0aW9uIChl
LmcuIGluZGV4IGR1cGxpY2F0ZXMsIG5vdCBpbiBwaXBlbGluZSBsYXlvdXQpLgotICAgIHBhc3NF
bmNvZGVyKCktPnNldEJpbmRHcm91cChpbmRleCwgKmJpbmRHcm91cC5iaW5kR3JvdXAoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY1
ZjUwYTQzMjMzYjI2MTU5ZDU1Nzc2ZjYwMDM2ODAzMWQxZWI2NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXA7
Ci0KLWNsYXNzIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQg
ZW5kUGFzcygpOwotICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVkLCBXZWJHUFVCaW5kR3Jv
dXAmKTsKLQotcHJvdGVjdGVkOgotICAgIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKCkg
PSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGFz
c0VuY29kZXIoKSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciogcGFzc0VuY29kZXIoKSBjb25zdCA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yzk4NzViYzQwODI2NjdmOTViYzlk
OGFhMjdhZGQ5ODJhOTYwYTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIsCi0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50
ZXJmYWNlIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICB1bmRlZmluZWQgZW5k
UGFzcygpOwotICAgIHVuZGVmaW5lZCBzZXRCaW5kR3JvdXAodTMyIGluZGV4LCBXZWJHUFVCaW5k
R3JvdXAgYmluZEdyb3VwLyosIG9wdGlvbmFsIHNlcXVlbmNlPHUzMj4gZHluYW1pY09mZnNldHMq
Lyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY2YTRmN2ZiZTljYjMwY2NmOTc5NjBiMzMxNDE4YjQyZWVjNDUz
NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6
b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtb2R1bGUgfHwgIW1vZHVsZS0+bW9kdWxlKCkgfHwgZW50
cnlQb2ludC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBy
ZXR1cm4gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHsgbWFrZVJlZigqbW9kdWxlLT5t
b2R1bGUoKSksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWI2OTAyNDY3MDYwYjU2ZmNiM2I0MWFiZGI4MGIw
MjlkYzk2OTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3Qg
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIDogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpIGNvbnN0
OwotCi0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
ZDhlZDVkMzIzN2VjZWZjOGM5MzE5MTEzM2FjMmEwZGQ4MmU0ODdmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdlYkdQVVNoYWRlclN0YWdlRW51bTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7Ci0gICAgcmVx
dWlyZWQgV2ViR1BVU2hhZGVyTW9kdWxlIG1vZHVsZTsKLSAgICByZXF1aXJlZCBET01TdHJpbmcg
ZW50cnlQb2ludDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVR
dWV1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYWNhN2IyZDBkMTVjNmYx
MmYwYzE5NjVmMmMzYzQ0NDZiNmMzYWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVRdWV1ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVRdWV1ZS5o
IgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVF1ZXVlPiBXZWJHUFVRdWV1ZTo6
Y3JlYXRlKFJlZlB0cjxHUFVRdWV1ZT4mJiBxdWV1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVRdWV1ZShXVEZNb3ZlKHF1ZXVlKSkpOwotfQotCi1XZWJHUFVRdWV1ZTo6V2Vi
R1BVUXVldWUoUmVmUHRyPEdQVVF1ZXVlPiYmIHF1ZXVlKQotICAgIDogbV9xdWV1ZShXVEZNb3Zl
KHF1ZXVlKSkKLXsKLX0KLQotdm9pZCBXZWJHUFVRdWV1ZTo6c3VibWl0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+JiBidWZmZXJzKQotewotICAgIGlmICghbV9xdWV1
ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlkIG9w
ZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBWZWN0b3I8UmVmPEdQVUNv
bW1hbmRCdWZmZXI+PiBncHVCdWZmZXJzOwotICAgIGdwdUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5
KGJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMp
IHsKLSAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpKSB7Ci0g
ICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlkIEdQVUNv
bW1hbmRCdWZmZXIgaW4gbGlzdCEiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBncHVCdWZmZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpidWZmZXItPmNvbW1h
bmRCdWZmZXIoKSkpOwotICAgIH0KLQotICAgIG1fcXVldWUtPnN1Ym1pdChXVEZNb3ZlKGdwdUJ1
ZmZlcnMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTg5MjI3ZTQwYjgyOWUxNzAxNGY5ZjhjM2Rj
NDg0NzFmNTMzODU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUXVldWUuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlcjsKLQotY2xhc3MgV2ViR1BVUXVldWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJHUFVRdWV1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViR1BVUXVldWU+IGNyZWF0ZShSZWZQdHI8R1BVUXVldWU+JiYpOwotCi0gICAgdm9pZCBzdWJt
aXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPj4mKTsKLQotICAgIFN0
cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUtPmxhYmVsKCk7IH0KLSAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9xdWV1ZS0+c2V0TGFiZWwobGFiZWwp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVUXVldWUoUmVmUHRyPEdQVVF1ZXVlPiYmKTsKLQot
ICAgIFJlZlB0cjxHUFVRdWV1ZT4gbV9xdWV1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
NTVjZWE5NjU5MWU0MjZkZjkzOGY5NjI0NmExNDk4NzBiMzY1YmUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUXVldWUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVF1ZXVlLAotICAgIEV4cG9z
ZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVRdWV1ZSB7Ci0gICAgdW5kZWZpbmVkIHN1Ym1p
dChzZXF1ZW5jZTxXZWJHUFVDb21tYW5kQnVmZmVyPiBidWZmZXJzKTsKLQotICAgIC8vIEZJWE1F
OiBVbmltcGxlbWVudGVkLgotICAgIC8vIHVuZGVmaW5lZCBzaWduYWwoV2ViR1BVRmVuY2UgZmVu
Y2UsIHU2NCBzaWduYWxWYWx1ZSk7Ci0gICAgLy8gdW5kZWZpbmVkIHdhaXQoV2ViR1BVRmVuY2Ug
ZmVuY2UsIHU2NCB2YWx1ZVRvV2FpdCk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YThiNDc4MmM3ZTczNWFhYzQxYjMxN2Q0MDMzMGE3
MzJlMzM0ZTg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAgIDogR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JCYXNlKGJhc2UpCi0gICAgLCBhdHRhY2htZW50
KFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0KLUdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIGNvbnN0IEdQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgOiBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlKGJhc2UpCi0gICAgLCBhdHRh
Y2htZW50KFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEltcHJvdmUgZXJy
b3IgY2hlY2tpbmcgYXMgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgaXMgYWRkZWQgdG8gc3Bl
Yy4KLSAgICBpZiAoY29sb3JBdHRhY2htZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBObyBjb2xvciBhdHRhY2htZW50cyBzcGVj
aWZpZWQgZm9yIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gZ3B1Q29sb3JBdHRhY2htZW50czsKLQotICAgIGZvciAoY29uc3QgYXV0
byYgY29sb3JBdHRhY2htZW50IDogY29sb3JBdHRhY2htZW50cykgewotICAgICAgICBpZiAoIWNv
bG9yQXR0YWNobWVudC5hdHRhY2htZW50Ci0gICAgICAgICAgICB8fCAhY29sb3JBdHRhY2htZW50
LmF0dGFjaG1lbnQtPnRleHR1cmUoKQotICAgICAgICAgICAgfHwgIWNvbG9yQXR0YWNobWVudC5h
dHRhY2htZW50LT50ZXh0dXJlKCktPmlzT3V0cHV0QXR0YWNobWVudCgpKSB7Ci0gICAgICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVu
dCBpbiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1Q29sb3JBdHRh
Y2htZW50cy5hcHBlbmQoR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgeyBt
YWtlUmVmKCpjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpKSwgY29sb3JBdHRh
Y2htZW50IH0pOwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVEZXB0aEF0dGFjaG1lbnQ7Ci0KLSAgICBp
ZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCkgewotICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQtPmF0dGFjaG1lbnQKLSAgICAgICAgICAgIHx8ICFkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkKLSAgICAgICAgICAgIHx8ICFkZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCktPmlzT3V0cHV0QXR0YWNobWVudCgpKSB7
Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6IEludmFs
aWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0g
ICAgICAgIGdwdURlcHRoQXR0YWNobWVudCA9IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFj
aG1lbnQtPnRleHR1cmUoKSksICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50IH07Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsgV1RGTW92ZShncHVDb2xvckF0dGFj
aG1lbnRzKSwgV1RGTW92ZShncHVEZXB0aEF0dGFjaG1lbnQpIH07Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmOTRhNGNmZjBkMGUzNjYzMTE3NTg1
MGQ3Nzc2YmFkODE3NmM5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+
IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yIDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnRE
ZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBhdHRhY2htZW50
OwotfTsKLQotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9w
dGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcigpIGNvbnN0OwotCi0gICAgVmVjdG9yPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmM4MzI0ODJlNWExMzBlZDNkNTM1ZmQyZGI3ZGY1ZWYwM2U2ZWIyNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yCi1dIGRpY3Rpb25hcnkgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdlYkdQVVRleHR1cmVWaWV3IGF0dGFjaG1l
bnQ7Ci0gICAgLy8gR1BVVGV4dHVyZVZpZXc/IHJlc29sdmVUYXJnZXQ7Ci0KLSAgICByZXF1aXJl
ZCBHUFVMb2FkT3AgbG9hZE9wOwotICAgIHJlcXVpcmVkIEdQVVN0b3JlT3Agc3RvcmVPcDsKLSAg
ICBHUFVDb2xvciBjbGVhckNvbG9yOyAvLyB7cjogMC4wLCBnOiAwLjAsIGI6IDAuMCwgYTogMS4w
fQotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVVGV4dHVyZVZpZXcg
YXR0YWNobWVudDsKLQotICAgIHJlcXVpcmVkIEdQVUxvYWRPcCBkZXB0aExvYWRPcDsKLSAgICBy
ZXF1aXJlZCBHUFVTdG9yZU9wIGRlcHRoU3RvcmVPcDsKLSAgICByZXF1aXJlZCBmbG9hdCBjbGVh
ckRlcHRoOwotCi0vKiBOb3QgeWV0IGltcGxlbWVudGVkCi0gICAgR1BVTG9hZE9wIHN0ZW5jaWxM
b2FkT3A7Ci0gICAgR1BVU3RvcmVPcCBzdGVuY2lsU3RvcmVPcDsKLSAgICB1MzIgY2xlYXJTdGVu
Y2lsOwotKi8KLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7
Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0gICAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yPyBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZjdhMGQ0MGZm
YWZjNGFiNDQyYjFiNDM1OTg2YWUyZTI0YzllNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb2xvci5o
IgotI2luY2x1ZGUgIkdQVUxpbWl0cy5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJM
b2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmUHRyPEdQVVJl
bmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwotfQotCi1XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmUHRyPEdQVVJlbmRl
clBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBtX3Bhc3NFbmNvZGVyIHsgV1RGTW92ZShl
bmNvZGVyKSB9Ci17Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVs
aW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoIW1f
cGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRQaXBlbGluZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoIXBpcGVsaW5lLnJlbmRlclBpcGVsaW5lKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJbnZhbGlkIHBp
cGVsaW5lISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNl
dFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLnJlbmRlclBpcGVsaW5lKCkpKTsKLX0KLQotdm9p
ZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYg
Y29sb3IpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb2xvcigpOiBJbnZhbGlkIG9wZXJhdGlv
biEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRCbGVu
ZENvbG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmll
d3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
bWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQotewotICAgIGlmICghbV9wYXNzRW5jb2Rlcikgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcGFz
c0VuY29kZXItPnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhE
ZXB0aCk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0
KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
Ci17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoKTogSW52YWxpZCBvcGVyYXRpb24hIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3Qo
KTogV2lkdGggb3IgaGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAhIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0U2Npc3NvclJlY3QoeCwgeSwgd2lk
dGgsIGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4
QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQpCi17Ci0gICAgaWYg
KCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCFidWZmZXIuYnVmZmVyKCkgfHwgIWJ1ZmZlci5idWZmZXIo
KS0+aXNJbmRleCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBHUFVCdWZmZXIhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX3Bhc3NFbmNvZGVyLT5zZXRJbmRleEJ1ZmZlcigqYnVmZmVyLmJ1
ZmZlcigpLCBvZmZzZXQpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRW
ZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIHN0YXJ0U2xvdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJH
UFVCdWZmZXI+PiYgYnVmZmVycywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsK
LSNpZiAhTE9HX0RJU0FCTEVECi0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0g
IkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKCkiOwotI2VuZGlmCi0gICAg
aWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBv
cGVyYXRpb24hIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoYnVmZmVycy5pc0VtcHR5KCkgfHwgYnVmZmVycy5zaXplKCkgIT0gb2Zmc2V0cy5zaXplKCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG51bWJlciBvZiBidWZmZXJzIG9y
IG9mZnNldHMhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoc3RhcnRTbG90ICsgYnVmZmVycy5zaXplKCkgPiBtYXhWZXJ0ZXhCdWZmZXJzKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBzdGFydFNsb3QgJXUgZm9yICVsdSBidWZmZXJz
ISIsIGZ1bmN0aW9uTmFtZSwgc3RhcnRTbG90LCBidWZmZXJzLnNpemUoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+IGdwdUJ1ZmZlcnM7Ci0g
ICAgZ3B1QnVmZmVycy5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVycy5zaXplKCkpOwotCi0gICAgZm9y
IChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7Ci0gICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZm
ZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3Ig
ZGVzdHJveWVkIGJ1ZmZlciBpbiBsaXN0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWJ1ZmZlci0+YnVmZmVyKCktPmlzVmVy
dGV4KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogQnVmZmVyIHdhcyBub3QgY3Jl
YXRlZCB3aXRoIFZFUlRFWCB1c2FnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ3B1QnVmZmVycy51bmNoZWNrZWRBcHBlbmQobWFr
ZVJlZigqYnVmZmVyLT5idWZmZXIoKSkpOwotICAgIH0KLQotICAgIG1fcGFzc0VuY29kZXItPnNl
dFZlcnRleEJ1ZmZlcnMoc3RhcnRTbG90LCBncHVCdWZmZXJzLCBvZmZzZXRzKTsKLX0KLQotdm9p
ZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5z
aWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0
SW5zdGFuY2UpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogV2hhdCBraW5kIG9mIHZhbGlk
YXRpb24gZG8gd2UgbmVlZCB0byBoYW5kbGUgaGVyZT8KLSAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3
KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7
Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKHVuc2lnbmVk
IGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgs
IGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotICAgIGlmICghbV9w
YXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6
OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0gICAgbV9wYXNzRW5jb2Rlci0+
ZHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZl
cnRleCwgZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLUdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGFzc0VuY29kZXIoKQotewotICAgIHJldHVybiBtX3Bh
c3NFbmNvZGVyLmdldCgpOwotfQotCi1jb25zdCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlciog
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmOGMwMmFiYTc4YWVjOGFlMmFmMTY3YjI1MGM1OTFkZDE5NDgzMTk0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xhc3Mg
R1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTsKLQotc3RydWN0IEdQVUNvbG9yOwotCi1jbGFzcyBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRl
KFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICB2b2lkIHNldFBpcGVsaW5l
KGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lJik7Ci0gICAgdm9pZCBzZXRCbGVuZENvbG9yKGNv
bnN0IEdQVUNvbG9yJik7Ci0gICAgdm9pZCBzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgp
OwotICAgIHZvaWQgc2V0U2Npc3NvclJlY3QodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7Ci0gICAgdm9pZCBzZXRJbmRleEJ1ZmZlcihXZWJH
UFVCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQpOwotICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1
bnNpZ25lZCBzdGFydFNsb3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKTsKLSAgICB2b2lkIGRyYXcodW5zaWduZWQg
dmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4
LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsKLSAgICB2b2lkIGRyYXdJbmRleGVkKHVuc2lnbmVk
IGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgs
IGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsKLQotcHJpdmF0ZToKLSAg
ICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYp
OwotCi0gICAgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgZmluYWw7
Ci0gICAgY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29u
c3QgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IG1fcGFzc0VuY29k
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDZm
OWNiNWMyZTNkNTVjOWQxNjNjYjc4MzU2ZWUyYWE5YjQ5ZGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBl
ZGVmIGxvbmcgaTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVJlbmRlclBhc3NFbmNv
ZGVyLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciA6IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyIHsKLSAgICB1bmRlZmluZWQgc2V0UGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZWxpbmUg
cGlwZWxpbmUpOwotICAgIHVuZGVmaW5lZCBzZXRCbGVuZENvbG9yKEdQVUNvbG9yIGNvbG9yKTsK
LQotICAgIC8vIFRoZSBkZWZhdWx0IHZpZXdwb3J0IGlzICgwLjAsIDAuMCwgdywgaCwgMC4wLCAx
LjApLCB3aGVyZSB3IGFuZCBoIGFyZSB0aGUgZGltZW5zaW9ucyBvZiBiYWNrIGJ1ZmZlcgotICAg
IHVuZGVmaW5lZCBzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpOwotCi0gICAgLy8gVGhl
IGRlZmF1bHQgc2Npc3NvciByZWN0YW5nbGUgaXMgKDAsIDAsIHcsIGgpLCB3aGVyZSB3IGFuZCBo
IGFyZSB0aGUgZGltZW5zaW9ucyBvZiBiYWNrIGJ1ZmZlci4KLSAgICAvLyBXaWR0aCBhbmQgaGVp
Z2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZSBn
ZW5lcmF0ZWQuCi0gICAgdW5kZWZpbmVkIHNldFNjaXNzb3JSZWN0KHUzMiB4LCB1MzIgeSwgdTMy
IHdpZHRoLCB1MzIgaGVpZ2h0KTsKLQotICAgIHVuZGVmaW5lZCBzZXRJbmRleEJ1ZmZlcihXZWJH
UFVCdWZmZXIgYnVmZmVyLCB1NjQgb2Zmc2V0KTsKLSAgICB1bmRlZmluZWQgc2V0VmVydGV4QnVm
ZmVycyh1MzIgc3RhcnRTbG90LCBzZXF1ZW5jZTxXZWJHUFVCdWZmZXI+IGJ1ZmZlcnMsIHNlcXVl
bmNlPHU2ND4gb2Zmc2V0cyk7Ci0KLSAgICB1bmRlZmluZWQgZHJhdyh1MzIgdmVydGV4Q291bnQs
IHUzMiBpbnN0YW5jZUNvdW50LCB1MzIgZmlyc3RWZXJ0ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsK
LSAgICB1bmRlZmluZWQgZHJhd0luZGV4ZWQodTMyIGluZGV4Q291bnQsIHUzMiBpbnN0YW5jZUNv
dW50LCB1MzIgZmlyc3RJbmRleCwgaTMyIGJhc2VWZXJ0ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsK
LQotLyogTm90IFlldCBJbXBsZW1lbnRlZAotICAgIHVuZGVmaW5lZCBzZXRTdGVuY2lsUmVmZXJl
bmNlKHUzMiByZWZlcmVuY2UpOwotKi8KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY4NWM2YmZhMGEyMDQ1NGExN2I2MjY3MzA2ZjliNTc5OWQwNDc3YTMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNs
dWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5k
ZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNp
bmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlLCBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BV
UGlwZWxpbmU6OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFk
ZXJEYXRhJiYgZnJhZ21lbnRTaGFkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUoZGV2aWNlLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZXJyb3JTY29wZXMs
IFdURk1vdmUodmVydGV4U2hhZGVyKSwgV1RGTW92ZShmcmFnbWVudFNoYWRlcikpKTsKLX0KLQot
V2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRlclBpcGVsaW5lKFdlYkdQVURldmljZSYg
ZGV2aWNlLCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFk
ZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21lbnRTaGFkZXIpCi0gICAgOiBX
ZWJHUFVQaXBlbGluZShkZXZpY2UsIGVycm9yU2NvcGVzKQotICAgICwgbV9yZW5kZXJQaXBlbGlu
ZShXVEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fdmVydGV4U2hhZGVyKFdURk1vdmUodmVydGV4
U2hhZGVyKSkKLSAgICAsIG1fZnJhZ21lbnRTaGFkZXIoV1RGTW92ZShmcmFnbWVudFNoYWRlcikp
Ci17Ci19Ci0KLVdlYkdQVVJlbmRlclBpcGVsaW5lOjp+V2ViR1BVUmVuZGVyUGlwZWxpbmUoKSA9
IGRlZmF1bHQ7Ci0KLWJvb2wgV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNsb25lU2hhZGVyTW9kdWxl
cyhjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAobV92ZXJ0ZXhTaGFkZXIu
bW9kdWxlKSB7Ci0gICAgICAgIGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXJNb2R1bGUg
PSBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSA9PSBtX3ZlcnRleFNoYWRlci5tb2R1bGU7Ci0KLSAg
ICAgICAgY29uc3QgYXV0byYgdmVydGV4U291cmNlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlLT5z
b3VyY2UoKTsKLSAgICAgICAgbV92ZXJ0ZXhTaGFkZXIubW9kdWxlID0gV2ViR1BVU2hhZGVyTW9k
dWxlOjpjcmVhdGUoR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRldmljZSgpLCB7
IHZlcnRleFNvdXJjZSB9KSwgdmVydGV4U291cmNlKTsKLQotICAgICAgICBpZiAobV9mcmFnbWVu
dFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgICAgIGlmIChzaGFyZXNWZXJ0ZXhGcmFnbWVudFNo
YWRlck1vZHVsZSkKLSAgICAgICAgICAgICAgICBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSA9IG1f
dmVydGV4U2hhZGVyLm1vZHVsZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8mIGZyYWdtZW50U291cmNlID0gbV9mcmFnbWVudFNoYWRlci5tb2R1bGUtPnNv
dXJjZSgpOwotICAgICAgICAgICAgICAgIG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlID0gV2ViR1BV
U2hhZGVyTW9kdWxlOjpjcmVhdGUoR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRl
dmljZSgpLCB7IGZyYWdtZW50U291cmNlIH0pLCBmcmFnbWVudFNvdXJjZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3Qg
V2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fcmVuZGVyUGlwZWxpbmUgJiYgbV92
ZXJ0ZXhTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGlmIChhdXRvKiBncHVWZXJ0ZXhTaGFkZXJN
b2R1bGUgPSBtX3ZlcnRleFNoYWRlci5tb2R1bGUtPm1vZHVsZSgpKSB7Ci0gICAgICAgICAgICBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2UobWFrZVJlZigqZ3B1VmVy
dGV4U2hhZGVyTW9kdWxlKSwgeyBtX3ZlcnRleFNoYWRlci5lbnRyeVBvaW50IH0pOwotICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdt
ZW50U3RhZ2U7Ci0gICAgICAgICAgICBpZiAobV9mcmFnbWVudFNoYWRlci5tb2R1bGUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoYXV0byogZ3B1RnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBtX2ZyYWdt
ZW50U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50
U3RhZ2UgPSBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IobWFrZVJlZigqZ3B1RnJhZ21l
bnRTaGFkZXJNb2R1bGUpLCB7IG1fZnJhZ21lbnRTaGFkZXIuZW50cnlQb2ludCB9KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lLT5yZWNvbXBpbGUo
ZGV2aWNlLmRldmljZSgpLCBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFnbWVudFN0
YWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NjBiMTM3OTNmY2JkMjUzNDU3YzQyODExYzgyZDky
Y2Q1MTIyZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUGlw
ZWxpbmU7Ci1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwot
Y2xhc3MgV2ViR1BVRGV2aWNlOwotY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOwotCi1jbGFzcyBX
ZWJHUFVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQaXBlbGluZSB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxpbmUoKTsKLQotICAgIHN0YXRpYyBS
ZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BV
UmVuZGVyUGlwZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRl
ckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21l
bnRTaGFkZXIpOwotCi0gICAgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyUGlwZWxp
bmUoKTsgfQotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lKiByZW5kZXJQaXBlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KLSAgICBSZWZQdHI8V2ViR1BV
U2hhZGVyTW9kdWxlPiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRl
ci5tb2R1bGU7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBmcmFnbWVudFNoYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlOyB9Ci0KLSAgICBib29s
IGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmKTsKLSAgICBib29sIHJlY29t
cGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVSZW5kZXJQ
aXBlbGluZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYsIEdQVUVy
cm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdl
YkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lPiBtX3JlbmRlclBpcGVsaW5lOwotCi0gICAgLy8gUHJlc2VydmVk
IGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNo
YWRlckRhdGEgbV92ZXJ0ZXhTaGFkZXI7Ci0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEg
bV9mcmFnbWVudFNoYWRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBl
bGluZSwgaXNSZW5kZXJQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdmODJjMmQyOGM3NWM1NDc2
ODI0ODVhYWIwZmZmYTdmMWE5OGIwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQ
VVJlbmRlclBpcGVsaW5lLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVS
ZW5kZXJQaXBlbGluZSB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YmNkYjlkZjkwYzg0NTkwNzMxMzQ3ZjhkNWE5NjU4
N2M5MWM3NzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25z
dAotewotICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBsYXlvdXQgPyBtYWtlUmVmUHRyKGxheW91
dC0+cGlwZWxpbmVMYXlvdXQoKSkgOiBudWxscHRyOwotCi0gICAgYXV0byB2ZXJ0ZXggPSB2ZXJ0
ZXhTdGFnZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKTsKLQotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudDsK
LSAgICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgZnJhZ21lbnQgPSBmcmFnbWVudFN0YWdl
LT50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKTsKLQotICAgIGlmICgh
dmVydGV4IHx8IChmcmFnbWVudFN0YWdlICYmICFmcmFnbWVudCkpIHsKLSAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogV2ViIEdQVSB2YWxpZGF0aW9uLCBlLmcuIGZhaWwgaWYgY29sb3JTdGF0ZXMg
aXMgbGFyZ2VyIHRoYW4gKG1heCBudW1iZXIgb2Ygc3VwcG9ydGVkIGNvbG9yIHN0YXRlcykuCi0K
LSAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZShwaXBlbGlu
ZUxheW91dCksIFdURk1vdmUoKnZlcnRleCksIFdURk1vdmUoZnJhZ21lbnQpLCAqdGhpcyB9Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGI2MGQyZWJlNjkzOTVlMzUxZjFhOWQ4YzUwMDYzNDg0NjhiYjBmMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVRXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
OiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4g
dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJikgY29u
c3Q7Ci0KLSAgICBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7
Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZy
YWdtZW50U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE0MGQ5NDZmZWZmOWU1NWNiMGQ3MGFkNjcyODcyOTdhOTlkMDcx
ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVQcmltaXRp
dmVUb3BvbG9neQotXSBlbnVtIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKLSAgICAicG9pbnQtbGlz
dCIsCi0gICAgImxpbmUtbGlzdCIsCi0gICAgImxpbmUtc3RyaXAiLAotICAgICJ0cmlhbmdsZS1s
aXN0IiwKLSAgICAidHJpYW5nbGUtc3RyaXAiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgcmVxdWlyZWQgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdl
OwotICAgIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj8gZnJhZ21lbnRTdGFnZSA9
IG51bGw7Ci0KLSAgICByZXF1aXJlZCBHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3Bv
bG9neTsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4gY29s
b3JTdGF0ZXM7Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yPyBkZXB0aFN0ZW5j
aWxTdGF0ZSA9IG51bGw7Ci0gICAgcmVxdWlyZWQgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHZl
cnRleElucHV0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2FtcGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNTIwZTYzYTFhMDA1
NDkwOTdlNDAxYWVlYjhiNDMyZDVkMTI2MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2Ft
cGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVNhbXBsZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVNhbXBsZXI+IFdl
YkdQVVNhbXBsZXI6OmNyZWF0ZShSZWZQdHI8R1BVU2FtcGxlcj4mJiBzYW1wbGVyKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNhbXBsZXIoV1RGTW92ZShzYW1wbGVyKSkpOwot
fQotCi1XZWJHUFVTYW1wbGVyOjpXZWJHUFVTYW1wbGVyKFJlZlB0cjxHUFVTYW1wbGVyPiYmIHNh
bXBsZXIpCi0gICAgOiBtX3NhbXBsZXIoV1RGTW92ZShzYW1wbGVyKSkKLXsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzQyNDk2NmM2OTdhNTY1NThjNjYzNGNiYzRjZjM3ZjNkMjVlYTA0YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdl
YkdQVVNhbXBsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTYW1wbGVyPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTYW1wbGVyPiBjcmVhdGUoUmVmUHRyPEdQVVNhbXBsZXI+
JiYpOwotCi0gICAgY29uc3QgR1BVU2FtcGxlciogc2FtcGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2FtcGxlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYkdQVVNhbXBsZXIoUmVmUHRyPEdQ
VVNhbXBsZXI+JiYpOwotCi0gICAgUmVmUHRyPEdQVVNhbXBsZXI+IG1fc2FtcGxlcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjNhYWMyNjlhMTU4ZWI1ODdiYWY1ZDQxNGQwZjJlMjFm
YjQyZTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZh
Y2VOYW1lPUdQVVNhbXBsZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQ
VVNhbXBsZXIgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzE0
NTQ1ZGQzZjQ2Y2U4NjIwOGYzZDU0NmFmZjcxNDQyNzMzYzk5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1v
ZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVNoYWRlck1vZHVs
ZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSksIHNvdXJjZSkpOwotfQotCi1XZWJH
UFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1vZHVsZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxl
PiYmIG1vZHVsZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi0gICAgOiBtX21vZHVsZShXVEZNb3Zl
KG1vZHVsZSkpCi0gICAgLCBtX3NvdXJjZShzb3VyY2UpCi17Ci19Ci0KLXZvaWQgV2ViR1BVU2hh
ZGVyTW9kdWxlOjp1cGRhdGUoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlKQotewotICAgIG1fc291cmNlID0gc291cmNlOwotICAgIG1fbW9kdWxlID0gR1BV
U2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRldmljZSgpLCB7IG1fc291cmNlIH0pOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcwYmI4ZDJmNjM2NGMyNGUxZGE1ZGNi
NDU1MDUwMWE0ZjJkMDE2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVURldmljZTsKLQotY2xh
c3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9k
dWxlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0
ZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0KLSAg
ICBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgp
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsg
fQotCi0gICAgdm9pZCB1cGRhdGUoY29uc3QgV2ViR1BVRGV2aWNlJiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVNoYWRlck1vZHVsZShSZWZQdHI8R1BVU2hh
ZGVyTW9kdWxlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0KLSAgICBSZWZQdHI8R1BVU2hh
ZGVyTW9kdWxlPiBtX21vZHVsZTsKLQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3Rv
ciByZWNvbXBpbGF0aW9uLgotICAgIFN0cmluZyBtX3NvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ3N2YwNzllMzI5ZDY1ZDM4NDRmOGJlZjUzZDgzMDVh
NTRiODk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIElu
dGVyZmFjZU5hbWU9R1BVU2hhZGVyTW9kdWxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVy
ZmFjZSBXZWJHUFVTaGFkZXJNb2R1bGUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYzMmE5ODllZDVjNTA2ZGYzYTdkY2IwOTM1NWNl
NTI2ODRjMzA4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IgewotICAgIFN0cmluZyBjb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYTdhOWQ0YzhkYTQ1Mzc2NjAwZjli
YTBiZjZmZTJjYTE2ZDQ3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIC8qQXJyYXlCdWZmZXIqLyBE
T01TdHJpbmcgY29kZTsgLy8gRklYTUU6IERPTVN0cmluZyBmb3IgTVRMIHByb3RvdHlwaW5nIG9u
bHkuCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MjU5ZDdmNmUxM2JkNjI2
MDYyMDgwNzdhZWM5N2U0MzNlMDIzOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVU3dh
cENoYWluPiBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3
YXBDaGFpbikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTd2FwQ2hhaW4oV1RG
TW92ZShzd2FwQ2hhaW4pKSk7Ci19Ci0KLVdlYkdQVVN3YXBDaGFpbjo6V2ViR1BVU3dhcENoYWlu
KFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQotICAgIDogbV9zd2FwQ2hhaW4oV1RG
TW92ZShzd2FwQ2hhaW4pKQotewotfQotCi1SZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVU3dhcENo
YWluOjpnZXRDdXJyZW50VGV4dHVyZSgpCi17Ci0gICAgaWYgKCFtX3N3YXBDaGFpbikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZSgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmU6OmNyZWF0ZShu
dWxscHRyKTsKLSAgICB9Ci0gICAgbV9jdXJyZW50VGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNy
ZWF0ZShtX3N3YXBDaGFpbi0+dHJ5R2V0Q3VycmVudFRleHR1cmUoKSk7Ci0gICAgcmV0dXJuIG1h
a2VSZWYoKm1fY3VycmVudFRleHR1cmUpOwotfQotCi12b2lkIFdlYkdQVVN3YXBDaGFpbjo6ZGVz
dHJveSgpCi17Ci0gICAgaWYgKCFtX3N3YXBDaGFpbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9zd2FwQ2hhaW4tPmRlc3Ryb3koKTsKLSAgICBtX3N3YXBDaGFpbiA9IG51bGxwdHI7Ci0KLSAg
ICBpZiAobV9jdXJyZW50VGV4dHVyZSAmJiBtX2N1cnJlbnRUZXh0dXJlLT50ZXh0dXJlKCkpCi0g
ICAgICAgIG1fY3VycmVudFRleHR1cmUtPmRlc3Ryb3koKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc4YTFlMGRmNjQ4MDRmMTExOWYzMTVlMzBlMWEwNjEwOGMzNDI3YjMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1j
bGFzcyBXZWJHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTd2FwQ2hhaW4+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVN3YXBDaGFpbj4gY3JlYXRlKFJlZlB0
cjxHUFVTd2FwQ2hhaW4+JiYpOwotCi0gICAgR1BVU3dhcENoYWluKiBzd2FwQ2hhaW4oKSB7IHJl
dHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotCi0gICAgUmVmPFdlYkdQVVRleHR1cmU+IGdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0KLSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0ZToKLSAgICBX
ZWJHUFVTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7Ci0KLSAgICBSZWZQdHI8R1BV
U3dhcENoYWluPiBtX3N3YXBDaGFpbjsKLSAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gbV9jdXJy
ZW50VGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzMmNmM2E0ZTQ1
MDRjOGJhMWZhZmQ5YWNhYjZkZGJiMWUyZmQwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
d2FwQ2hhaW4uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1H
UFVTd2FwQ2hhaW4sCi0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFdlYkdQVVN3YXBDaGFpbiB7Ci0gICAgV2ViR1BVVGV4dHVyZSBnZXRD
dXJyZW50VGV4dHVyZSgpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDExMzRmY2QzMzM3Mzk5NWY2YTk4ZDQ3OWFmNDAyZjdjZDk3YjA2NTIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RkOjpvcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdAotewotICAgIGlmICghZGV2
aWNlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1cmVT
d2FwQ2hhaW4oKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsg
bWFrZVJlZihkZXZpY2UtPmRldmljZSgpKSwgKnRoaXMgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmODc0ZDZmNzAwMDAzOTU5ZGI1ODkxMTliNGRi
MDAyZTljMzIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3I+IGFzR1BVU3dhcENoYWluRGVzY3JpcHRvcigpIGNvbnN0Owot
Ci0gICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2aWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3ZGEwNjAxMjMxZTdlOGY1ODM5NGM3YzQyMzk1MTg0ZWI3YTM3YzYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVRl
eHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVRleHR1cmU6
OmNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkpOwotfQotCi1XZWJHUFVU
ZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpCi0gICAg
OiBtX3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLXsKLX0KLQotUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VmlldygpCi17Ci0gICAgaWYgKCFtX3Rl
eHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRW
aWV3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0KLSAgICBhdXRvIHZpZXcgPSBXZWJHUFVU
ZXh0dXJlVmlldzo6Y3JlYXRlKG1fdGV4dHVyZS0+dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3
KCkpOwotICAgIG1fdGV4dHVyZVZpZXdzLmFwcGVuZCh2aWV3LmNvcHlSZWYoKSk7Ci0gICAgcmV0
dXJuIHZpZXc7Ci19Ci0KLXZvaWQgV2ViR1BVVGV4dHVyZTo6ZGVzdHJveSgpCi17Ci0gICAgaWYg
KCFtX3RleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmRlc3Ryb3ko
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9y
IChhdXRvJiB2aWV3IDogbV90ZXh0dXJlVmlld3MpCi0gICAgICAgIHZpZXctPmRlc3Ryb3koKTsK
LSAgICBtX3RleHR1cmVWaWV3cy5jbGVhcigpOwotCi0gICAgbV90ZXh0dXJlLT5kZXN0cm95KCk7
Ci0gICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZkNThj
MjY0MmZjYzZhNjJmMzcyYWNiNGEyNzM4ZTFjNmI3MjUyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVGV4
dHVyZS5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVRleHR1cmUgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJHUFVUZXh0dXJlPiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotCi0gICAgR1BVVGV4
dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotCi0gICAgUmVmPFdl
YkdQVVRleHR1cmVWaWV3PiBjcmVhdGVEZWZhdWx0VmlldygpOwotICAgIHZvaWQgZGVzdHJveSgp
OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRleHR1
cmU+JiYpOwotCi0gICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKLSAgICBWZWN0b3I8
UmVmPFdlYkdQVVRleHR1cmVWaWV3Pj4gbV90ZXh0dXJlVmlld3M7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDNlNGE1Zjk5M2I2NDVkYTk1YzJhM2Q3OGM4ZGYxYzJjMzczN2QyOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVU
ZXh0dXJlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVUZXh0dXJlIHsK
LSAgICBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVEZWZhdWx0VmlldygpOwotICAgIHVuZGVmaW5l
ZCBkZXN0cm95KCk7Ci0KLSAgICAvLyBOb3QgWWV0IEltcGxlbWVudGVkOgotICAgIC8vIFdlYkdQ
VVRleHR1cmVWaWV3IGNyZWF0ZVRleHR1cmVWaWV3KFdlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciBkZXNjKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMDMyYWYw
YzAxNmRjNWViZDVhZTRkZGQ2YzY0YjIzNGI0MDUzOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2Vi
R1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmUHRyPEdQVVRleHR1
cmU+JiYgdmlldykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlVmll
dyhXVEZNb3ZlKHZpZXcpKSk7Ci19Ci0KLVdlYkdQVVRleHR1cmVWaWV3OjpXZWJHUFVUZXh0dXJl
VmlldyhSZWZQdHI8R1BVVGV4dHVyZT4mJiB2aWV3KQotICAgIDogbV90ZXh0dXJlKFdURk1vdmUo
dmlldykpCi17Ci19Ci0KLXZvaWQgV2ViR1BVVGV4dHVyZVZpZXc6OmRlc3Ryb3koKQotewotICAg
IGlmICghbV90ZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RleHR1cmUtPmRlc3Ry
b3koKTsKLSAgICBtX3RleHR1cmUgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDI1MGUyMTg0YzUyM2NmODVmZGVkNmFiZGNmZWJmYzIzNmYxMjkwMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJH
UFVUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmVWaWV3PiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlKFJlZlB0cjxH
UFVUZXh0dXJlPiYmKTsKLSAgICB+V2ViR1BVVGV4dHVyZVZpZXcoKSB7IGRlc3Ryb3koKTsgfQot
Ci0gICAgR1BVVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQot
Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVVRleHR1
cmVWaWV3KFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKLSAgICAKLSAgICBSZWZQdHI8R1BVVGV4dHVy
ZT4gbV90ZXh0dXJlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmYmRl
YmJjOTA1YWNmNmQ3MTNlZDA0Mjc3NWZhZDM0ZWUzYjUwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVVGV4dHVyZVZpZXcsCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVRleHR1cmVWaWV3IHsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3Ir
R1BVLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitH
UFUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTJkYWVlNjQyNzViNWY3OTMy
NzBjZTNkNWY0NTM3MTE0MmYxMmViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
citHUFUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI25hdmlnYXRvci1ncHUKLS8vIEZJWE1F
OiBUaGUgc3BlYyBzYXlzIHRoaXMgc2hvdWxkIG9ubHkgYmUgZXhwb3NlZCB0byBEZWRpY2F0ZWRX
b3JrZXJzLgotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PVdvcmtlck5hdmlnYXRvckdQVQotXSBwYXJ0aWFs
IGludGVyZmFjZSBXb3JrZXJOYXZpZ2F0b3IgewotICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVIGdwdTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmIwN2YzNjY4M2RjMzAzODQzMjRmNWE3MjRiMjIxMGI5MWQ4ZWQ0OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJOYXZpZ2F0b3JHUFUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVLmgiCi0jaW5jbHVkZSAiV29y
a2VyTmF2aWdhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV29ya2VyTmF2aWdhdG9y
R1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3Ip
Ci17Ci0gICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29y
a2VyTmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwotICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
LSAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7Ci0gICAgICAgIHByb3Zp
ZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotY29uc3QgY2hhciogV29ya2Vy
TmF2aWdhdG9yR1BVOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXb3JrZXJOYXZp
Z2F0b3JHUFUiOwotfQotCi1jb25zdCBXZWJHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6Z3B1KFdv
cmtlck5hdmlnYXRvciYgbmF2aWdhdG9yKQotewotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLndlYkdQVUVuYWJsZWQp
OwotICAgIHJldHVybiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oJm5hdmlnYXRvciktPmdwdSgp
OwotfQotCi1jb25zdCBXZWJHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6Z3B1KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fZ3B1KQotICAgICAgICBtX2dwdSA9IFdlYkdQVTo6Y3JlYXRlKCk7Ci0gICAg
cmV0dXJuIG1fZ3B1LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3
NDUzZjk0YmJjYTZiOTg5YmQ1OGY1OTVjODM4YjAxYTEyMGE3NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQ
VTsKLWNsYXNzIFdvcmtlck5hdmlnYXRvcjsKLQotY2xhc3MgV29ya2VyTmF2aWdhdG9yR1BVIGZp
bmFsIDogcHVibGljIFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPiB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFdlYkdQVSogZ3B1KFdv
cmtlck5hdmlnYXRvciYpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBXb3JrZXJOYXZpZ2F0b3JH
UFUqIGZyb20oV29ya2VyTmF2aWdhdG9yKik7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBs
ZW1lbnROYW1lKCk7Ci0gICAgCi0gICAgY29uc3QgV2ViR1BVKiBncHUoKSBjb25zdDsKLQotICAg
IG11dGFibGUgUmVmUHRyPFdlYkdQVT4gbV9ncHU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZWE5Y2M1
NjljZjQ1ZDVmNDI4OGUzMGU4YjRmM2ZhM2I2MDgwYjM0Li41NDQ0M2ZiODhhNGRjYWJjYmIzNmU1
MWY1YzI3N2U0ZmZjY2Y1YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzIwLDkxICszMjAsNiBAQCBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwCiBNb2R1bGVzL3dlYmRyaXZlci9OYXZp
Z2F0b3JXZWJEcml2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAot
TW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3JHUFUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdElu
U2VtYW50aWMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAotTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1l
bnQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAotTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a1JlZmVyZW5jZVR5cGVzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1
cmVSZWZlcmVuY2VzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAot
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SW5mZXJUeXBlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TmFtZUNvbnRleHQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAotTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFt
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAotTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNw
cAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAotTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxp
bmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNw
cAotTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlRXJyb3JTY29wZXMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcAotTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmVWaWV3LmNwcAotTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAogTW9kdWxl
cy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMjA3OSwxNCArMTk5NCw2IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJj
ZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRGV2aWNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNw
cAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAotcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVs
aW5lTGF5b3V0LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3guY3BwCkBAIC0zMDcyLDM0ICsyOTc5LDYgQEAgSlNGb2N1c09wdGlv
bnMuY3BwCiBKU0ZvbnRGYWNlLmNwcAogSlNGb250RmFjZVNldC5jcHAKIEpTRm9ybURhdGFFdmVu
dC5jcHAKLUpTR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5jcHAKLUpTR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvci5jcHAKLUpTR1BVQmxlbmREZXNjcmlwdG9yLmNwcAotSlNHUFVCdWZmZXJE
ZXNjcmlwdG9yLmNwcAotSlNHUFVCdWZmZXJVc2FnZS5jcHAKLUpTR1BVQ2FudmFzQ29udGV4dC5j
cHAKLUpTR1BVQ29sb3IuY3BwCi1KU0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmNwcAotSlNHUFVD
b2xvcldyaXRlLmNwcAotSlNHUFVDb21wYXJlRnVuY3Rpb24uY3BwCi1KU0dQVURlcHRoU3RlbmNp
bFN0YXRlRGVzY3JpcHRvci5jcHAKLUpTR1BVRXJyb3JGaWx0ZXIuY3BwCi1KU0dQVUV4dGVudDNE
LmNwcAotSlNHUFVMb2FkT3AuY3BwCi1KU0dQVU9yaWdpbjNELmNwcAotSlNHUFVPdXRPZk1lbW9y
eUVycm9yLmNwcAotSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwCi1KU0dQVVNhbXBsZXJE
ZXNjcmlwdG9yLmNwcAotSlNHUFVTaGFkZXJTdGFnZS5jcHAKLUpTR1BVU3RvcmVPcC5jcHAKLUpT
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCi1KU0dQVVRleHR1cmVGb3JtYXQuY3BwCi1KU0dQVVRl
eHR1cmVVc2FnZS5jcHAKLUpTR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCi1KU0dQVVZhbGlk
YXRpb25FcnJvci5jcHAKLUpTR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5jcHAKLUpTR1BV
VmVydGV4QnVmZmVyRGVzY3JpcHRvci5jcHAKLUpTR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmNw
cAogSlNHYWluTm9kZS5jcHAKIEpTR2Fpbk9wdGlvbnMuY3BwCiBKU0dhbWVwYWQuY3BwCkBAIC0z
NzYxLDM4ICszNjQwLDYgQEAgSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAogSlNXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5jcHAKIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKLUpTV2ViR1BVLmNwcAotSlNXZWJHUFVBZGFwdGVyLmNw
cAotSlNXZWJHUFVCaW5kR3JvdXAuY3BwCi1KU1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuY3BwCi1K
U1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVUJpbmRHcm91cExheW91dC5j
cHAKLUpTV2ViR1BVQnVmZmVyLmNwcAotSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAotSlNXZWJH
UFVDb21tYW5kQnVmZmVyLmNwcAotSlNXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKLUpTV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCi1KU1dl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVURldmljZS5jcHAKLUpT
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCi1KU1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5j
cHAKLUpTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKLUpTV2ViR1BVUGlwZWxpbmVM
YXlvdXQuY3BwCi1KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKLUpTV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1KU1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5jcHAKLUpTV2ViR1BVUXVldWUuY3BwCi1KU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmNwcAotSlNXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKLUpTV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwCi1KU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BV
U2FtcGxlci5jcHAKLUpTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAotSlNXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCi1KU1dlYkdQVVRleHR1cmUu
Y3BwCi1KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAK
IEpTV2ViS2l0TWVkaWFLZXlFcnJvci5jcHAKIEpTV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2ODJkYmNjMDZjZWFlN2Q3NmMxZTBlOWE2
NmFiZjQyN2UxY2NiNDliLi5jYTYxMTcwYzM0ZGYzOWMwMWIxNWIxMDEyNGVkZWM0OTY3OTUyOGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM4Nyw3ICszODcsNiBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxh
eWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtMzk4LDI0ICszOTcs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxv
Y2F0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExh
eW91dE1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0
YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQotcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVTYW1wbGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVN3YXBDaGFpbk1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4
dHVyZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQpAQCAtNjE2LDcgKzU5OCwzIEBAIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIEBuby11bmlmeQotCi0v
LyBEZXJpdmVkIFNvdXJjZXMKLQotV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjMmYzNmZhNTMzODVlMTNjMzNiNmQ2NzA2ZDZiNWYxYjdjM2FhZjRmLi5lMGJkYmI2ZjBl
ZmM1NWE0ODMzYWE5ZGUxYmUyNTc5MGE0ZmRjYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTEsMTggKzkxMSw2IEBACiAJ
CTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU3MTBFMzAwNUQ2MDAz
NjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovOyB9OwogCQkzMTI4Q0E2QjE0NzMzMTYzMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5MTEgLyogTm90aWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQ
VUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMkZGOEJEMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi87
IH07Ci0JCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJFMjFBNEMyRjEwMEVC
MTk5RCAvKiBHUFVEZXZpY2UuaCAqLzsgfTsKLQkJMzEyRkY5MTMyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmggKi87IH07Ci0JCTMxMkZGOTE0MjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzEyRkY5MTUyMUE0QzM2NTAwRUIx
OTlEIC8qIEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLzsgfTsKLQkJ
MzEyRkY5MTYyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCOTIxQTRDMkVGMDBF
QjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLzsgfTsKLQkJMzEyRkY5MTcyMUE0QzM2NTAw
RUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8q
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTJGRjkxODIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCQjIxQTRDMkYwMDBFQjE5OUQgLyogR1BVU2hhZGVy
TW9kdWxlLmggKi87IH07Ci0JCTMxMkZGOTE5MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oICovOyB9OwotCQkzMTJGRjkxQTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU3dhcENoYWlu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhC
QTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi87IH07Ci0JCTMxMkZGOTFCMjFB
NEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQgLyogR1BVVGV4dHVy
ZS5oICovOyB9OwotCQkzMTJGRjkxQzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1h
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4
QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCAqLzsgfTsKIAkJMzEzMTcx
NTYxRkIwNzlFNTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzE3MTU0MUZCMDc5RDEwMDhEOTFGQyAvKiBDYW52
YXNCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMzEzNTkxMDYxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzNTkxMDAxRTdE
REM2MDAwRjMwNjMwIC8qIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oICovOyB9OwogCQkzMTM1OTEw
NzFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzU5MTAxMUU3RERDNjAwMEYzMDYz
MCAvKiBSVENJY2VHYXRoZXJpbmdTdGF0ZS5oICovOyB9OwpAQCAtOTU3LDcgKzk0NSw2IEBACiAJ
CTMxNzQxQUFEMTY2MzY2MDkwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNzQxQUFCMTY2MzVF
NDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTdEM0ZGMzIxNTU5OUY0MDAzNEUzQjkg
LyogUG9pbnRlckV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTdEM0ZGMjIxNTU5OUUzMDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE4MTVBMzExRjlB
NkM4RjAwRkNCRjg5IC8qIEltYWdlQml0bWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQyNkJCRjFGODZEMTg5MDA4RkYyNTUgLyogSW1hZ2VCaXRt
YXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkz
MTg0MzZERTIxQjlEQUFGMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAv
KiBXZWJHUFVMYXllci5oICovOyB9OwogCQkzMTg4OTE2MTFBQjdFRUExMDBFQTYyN0IgLyogbWlz
c2luZ0ltYWdlQDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNDE5OTkxQUIwREExNDAwNEU2NEUxIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcg
Ki87IH07CiAJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE4RUFENEExRkE5MTE1NzAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzE5ODQ4MDExQTFEODE3QjAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTk4NDdGRjFB
MUQ4MTY3MDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCAqLzsgfTsKQEAgLTMyNjksOSArMzI1
Niw2IEBACiAJCUExODg5MEFGMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE5NTZGMUMyMzMxQTY3NzAwNTdFOUQyIC8qIEpTQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5NTZGMUIyMzMxQTY0
NjAwNTdFOUQyIC8qIEpTQXBwbGVQYXlDYW5jZWxFdmVudC5oICovOyB9OwogCQlBMTk1NkYyMDIz
MzFBOEM3MDA1N0U5RDIgLyogQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOTU2RjFEMjMzMUE4QzcwMDU3RTlEMiAv
KiBBcHBsZVBheVNlc3Npb25FcnJvci5oICovOyB9OwotCQlBMTk1NkYyMzIzMzFBQ0YyMDA1N0U5
RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzM1MUY3MEIyMkNBRDhEQTAwMTVCNDBEIC8qIFdITFNMUmVwbGFjZVdp
dGguaCAqLzsgfTsKLQkJQTE5NTZGMjQyMzMxQUQyMTAwNTdFOUQyIC8qIFdITFNMUHJvZ3JhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxQkY3M0Ey
MUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovOyB9OwotCQlBMTk1NkYyNTIzMzFB
RDUzMDA1N0U5RDIgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAv
KiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovOyB9OwogCQlBMTlBRUEyMTFBQUE4MDg2MDBC
NTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTlBRUExRTFBQUE4MDZFMDBCNTJCMjUgLyog
SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IH07CiAJCUExOUFFQTIyMUFBQTgwOEEw
MEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5QUVBMUQxQUFBODA2RTAwQjUyQjI1
IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi87IH07CiAJCUExOUQ5MzRCMUFB
MTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5RDkzNDkxQUExMUIxRTAw
QjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY5NTEsMjAgKzY5MzUsMTQgQEAK
IAkJMUMyNEVFQTYxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNGb250RmFjZVNldC5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250
RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ZvbnRGYWNlU2V0
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9udEZhY2VTZXQuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYy
IC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzI4MUM2RTIyQjg3Qjk4MDA2OTFDMDAg
LyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hl
Y2tUZXh0dXJlUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzMy
NDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9udFZhcmlhbnRCdWlsZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMzMyNzcxMjFDRjBCRTEwMDBEQzlGMiAvKiBXSExT
TE5hbWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hbWVkVHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzMzMjc3MjIxQ0YwRDJFMDAwREM5RjIgLyogV0hMU0xVbm5h
bWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVD
b3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2Fj
aGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNERTY4MjJB
QjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNERTZBMjJBQjRCOEEwMDE1MjdEOSAvKiBM
b2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZl
ck1lbWJlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhCdWZmZXJNZW1iZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTBDNDk1MjJDODRGMjQwMEE2RTRCRSAvKiBXSExTTFN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzU5QjAxODIyMzg2ODc5MDA4NTM4MDUgLyogV0hMU0xTY29wZWRTZXRBZGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFNjb3BlZFNldEFkZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDNjYyNjBGMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyogV0hMU0xCdWlsZFN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gV0hMU0xCdWls
ZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzZGRDhBQzI1MEEyOTREMDBENkU5MjAgLyogRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZEOEFEMjUwQTJFNTMwMEQ2RTkyMCAvKiBH
bHlwaFBhZ2VDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHbHlwaFBhZ2VDb3JlVGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZEOEFFMjUwQTMxMTUwMEQ2
RTkyMCAvKiBGb250Q2FzY2FkZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRD
YXNjYWRlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3Myw3
MCArNjk1MSwyNyBAQAogCQkxQzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU3MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyog
V0hMU0xFbnRyeVBvaW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjkwMjFFQzMwRjkwMEQwNTAw
RCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NTcGFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUw
MEQgLyogV0hMU0xDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5OTIxRUM0MDA4MDBEMDUwMEQgLyogV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0
MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOUIyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzg2Q0E0QjIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGlt
ZW5zaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NkNBNEMyMkFBMTlGRjAwMUJGOTYx
IC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb21wdXRl
RGltZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0RTIyQUEy
M0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0RjIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxp
bmVNZXRhbENvbnZlcnRMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RDI2QzkyMkMw
OTQ1MzAwRDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDOEQyNkNFMjJDMDk1MTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGli
cmFyeVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFy
eVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEQyNkQwMjJD
MDlDREUwMEQxMjVGMyAvKiBsaWJjb21wcmVzc2lvbi50YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50ZXh0LWJhc2VkLWR5bGli
LWRlZmluaXRpb24iOyBuYW1lID0gbGliY29tcHJlc3Npb24udGJkOyBwYXRoID0gdXNyL2xpYi9s
aWJjb21wcmVzc2lvbi50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQkxQzkwNERGOTBC
QTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNCMjFFRDlERjUwMDY5RDVGMiAvKiBXSExTTEhpZ2ha
b21iaWVGaW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xIaWdoWm9tYmllRmluZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkRFMjFFRUI1RjQwMEExMTg2MCAvKiBX
SExTTFJlY3Vyc2lvbkNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZWN1cnNpb25DaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkUwMjFFRUI1RjUwMEEx
MTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xSZWN1cnNpb25DaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNB
MEMyRTQyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRUEyMUVFRDZGNTAw
QTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TGl0ZXJhbFR5cGVDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkVDMjFFRUQ2RjYwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDQUE4MkY2MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5
UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJC
IC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb3BlcnR5
UmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0UwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FG
NTZEODI1MzAxNDU3MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDQjVGRTg4MjJERUJDOEIwMDk0NDBFMiAvKiBXSExTTEVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xSZXNvbHZhYmxlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0I2OUIzNTIxREVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzcyMURFRDY2QjAwNkU4NDZBIC8qIFdI
TFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJM
aXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjNCMjFERjA0MUUwMDZF
ODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRp
b25UaGlja25lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8q
IFRleHRVbmRlcmxpbmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VC
QUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENv
bnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0RBQkQ2QjIyQzg0
NzlBMDBCRDBBM0EgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlDODQ2MDBG
OTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVF
NjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
Q0UzNDk3QTI2QjMzQjdBMDA4MzA2QkQgLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0UzNDk3QzI2QjMzQkFF
MDA4MzA2QkQgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVE
ZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0UyNjEw
NUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNB
RUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VD
QjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3Rh
dGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNF
Q0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xUeXBlTmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQ0VDQjNCMjIxRjJCOTg2MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDRUNCM0I1MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0
MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ldGFs
Q29kZUdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCODIx
RjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCQTIxRjUxMUFBMDBGNDQ1NDIg
LyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQzYyMUY1OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0
aXZlVHlwZVdyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hdGl2ZVR5cGVXcml0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNDNzIxRjU5Qzg3MDBG
NDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0
aXZlVHlwZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YwQkZENDIy
OTg3MDY4MDBFRDIwNzQgLyogVGV4dFNpemVBZGp1c3RtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRTaXplQWRqdXN0bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RG
IC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc0NjYsMjIgKzc0MDEsNiBAQAogCQkzMTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUg
LyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NLZXlmcmFtZXNSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjhDQTY3
MTQ3MzMxNTIwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyog
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb3RpZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhC
QjIxQTRDMkYwMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQzIx
QTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZG
OEJGMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzAyMUE0
QzJGMjAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzIyMUE0
QzJGMzAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM1MjFBNEMyRjQwMEVCMTk5RCAv
KiBHUFVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVF1ZXVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOTNCMjFBNjFDQTAwMEVCMTk5RCAvKiBXZWJH
UFVRdWV1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUXVldWUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjkzQzIxQTYxQ0ExMDBFQjE5OUQgLyogV2Vi
R1BVUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJGRjkzRDIxQTYxRjA3
MDBFQjE5OUQgLyogSlNXZWJHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYkdQVVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkZG
OTNFMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTMxNzE1NDFGQjA3OUQxMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03NTY0LDggKzc0ODMsNiBAQAogCQkzMTdEM0ZFRjIxNTU5OUUx
MDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb2ludGVyRXZlbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTdEM0ZGMTIxNTU5OUUyMDAzNEUzQjkgLyogUG9p
bnRlckV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaW50ZXJFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxN0QzRkYyMjE1NTk5RTMwMDM0RTNCOSAvKiBQb2lu
dGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVMYXllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTg0MzZERDIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BV
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHUFVM
YXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4OUU2REIxNkIyMTAzNTAw
Mzg2RUEzIC8qIHBsdWdJbnMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBwbHVnSW5z
LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFENEExRkE5MTE1NzAwOENF
Rjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxOEVBRDRDMUZBOTEzNTIwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0U2V0dGluZ3MuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Myw3ICs3
NTkwLDYgQEAKIAkJMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTAxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0M2MTAx
N0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzM1MUY3MEIyMkNBRDhEQTAwMTVCNDBEIC8qIFdITFNMUmVwbGFjZVdpdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xSZXBsYWNlV2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNUM3NEZEMzIyOEExOTEyMDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzVDNzRGRDcyMjhBMTlBNjAwMEMyMUEwIC8q
IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JpZEludGVn
ZXJSZXBlYXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNjYyRjk4NDA0
N0NFREJFNUREREFGQUEgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTExNCwxOSArOTAzMCw4IEBACiAJCTUxRkI2N0Q5MUFF
NkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1
QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjEzMUU1QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyNTZDQUEyMzBG
MTRBRDAwNDNFMTJGIC8qIFdITFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdITFNMTmFt
ZVNwYWNlLmg7IHBhdGggPSBBU1QvV0hMU0xOYW1lU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJFMUExNzIyOTdENkQ0
MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNEJENDdFMjMy
NzdFMTUwMDhGNTZDMSAvKiBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTI0QkQ0ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVu
Y2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFu
ZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcnVuZVVu
cmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTI2QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNo
YWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTI3M0NDNzQyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDNzUyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJD
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTI3M0NDOUEyNTYzQjIxMjAwODUwMDA3IC8qIEpTV2ViWFJUZXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJUZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxMzgsMTIgKzkwNDMsOSBAQAogCQk1Mjcz
Q0NBRDI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAw
MDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0NBRjI1NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtl
WFJWaWV3SW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zh
a2VYUlZpZXdJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI5MTRDMkEy
MkY5M0U0RTAwNTc4MTUwIC8qIFdITFNMUGFyc2luZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xQYXJzaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQzIy
RjkzRTVEMDA1NzgxNTAgLyogV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIw
RDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBB
NjQgLyogV0hMU0xEZWZhdWx0RGVsZXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVmYXVsdERl
bGV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBE
RTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1h
bmFnZXJPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0
ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwNzc3LDEzICsxMDY3OSwxMCBAQAogCQk3QzdCRjk0OTI1MTZGQTU0MDA4
MDg2ODIgLyogUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJm
b3JtYW5jZU1lYXN1cmVPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
N0JGOTRCMjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M3QkY5NTAyNTE2RkI1NDAwODA4NjgyIC8qIFBlcmZvcm1hbmNlTWVhc3VyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3QzdDNzY5QzIyRjY3RUNEMDAzMkJDQ0QgLyogV0hMU0xNYW5n
bGVkTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xNYW5nbGVkTmFtZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXR0cmlidXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE0MUVENjI4MUQwMENFMjZF
OCAvKiBKU0RPTU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTU9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNTFF
RDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJD
RjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
cmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwMTIyRkIw
NDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFVubmFtZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4NUIy
MDQyMkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVW5uYW1lZFR5cGVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDODgyNEM0MjQ5RDdCMDUwMEVEOEZDNCAvKiBTVkdQYXRoU2VnVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDOEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRB
bnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QW55Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NQ29udmVydEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTI3LDEw
ICsxMTQyNiw2IEBACiAJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzVDRTVBMjFFMjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5MTg2RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQjYyMzI5RkI0RTAwQUZGODU3IC8qIFdlYkdQVVBp
cGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBp
cGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQjcyMzI5RkI0
RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkx
ODZGM0JBMjMyOUZFNjgwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkxQjhGMEIzMjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURD
MiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6
emxlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJGODFBRTNCRTI0
MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NzEzLDcgKzEyNjA4LDYgQEAKIAkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzN0E0MkUyMjUyN0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTMyNTI3QjQ5
RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBMzhBODdBMzI1MzhCRUU3MDAzN0E0NzIgLyogR1BVUGxhdGZvcm1UeXBl
c01ldGFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFn
ZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2Vy
QWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMy
NTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMy
MDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyNzIxLDcgKzEyNjE1LDYgQEAKIAkJQTNCRjdFRjIyNTZDOEQ3MjAwNDRCQzc1
IC8qIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLSFJQ
YXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0JGN0VGNDI1NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBM0JGN0VGNTI1NkM4RDc0MDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBM0MzREM1RDI1M0ExOTkyMDA2MUYzMkEgLyogR1BVUGxh
dGZvcm1UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQbGF0Zm9y
bVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRDQyQTg0MUYzM0JBMzYw
MEE2NEI2MiAvKiBMYXlvdXRVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExheW91dFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5
Qzk4MjExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgz
MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDcwNywxMjEgKzE0NjAwLDE2
IEBACiAJCUMxRjdCNzJGMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVy
U2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBR1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJp
YW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNM
VHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0
NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTElu
dGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjcy
MURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjBGODhBQTIyOTY2QjBFMDBENjEwRkEgLyogV0hMU0xBU1RE
dW1wZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xBU1REdW1wZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hMU0xB
U1REdW1wZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1REdW1wZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTEyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMTBFOTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxMzhBMTMyMURERUNEMzAwRjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxMzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVzb3VyY2VT
ZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlc291cmNlU2VtYW50aWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEg
LyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNDIxQ0Q4OUIz
MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xGdW5jdGlvbkRlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xDb250aW51ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNjIx
Q0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEJvb2xlYW5MaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEluZGV4RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQmFzZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRG9XaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJl
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNM
SWZTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xG
YWxsdGhyb3VnaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERlcmVmZXJlbmNlRXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMjIxQ0Q4OUM0
MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUmV0dXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFdoaWxlTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcw
NTIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbW1hRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJh
eVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0
aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3
OSAvKiBXSExTTFF1YWxpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFF1YWxpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyog
V0hMU0xFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hM
U0xSZWZlcmVuY2VUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyog
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0
U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTAyMUNEODlE
MDAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMVHlwZUFyZ3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTUyMUNEODlE
NDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTENhbGxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVy
bmFyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5Nzkg
LyogV0hMU0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hM
U0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3
OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyNjIx
Q0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI5
MjFDRDg5RTYwMDIyNzk3OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMVHlwZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJDMjFDRDg5RTkwMDIy
Nzk3OSAvKiBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5Nzkg
LyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xQb2ludGVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0
YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3
OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNDIx
Q0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9y
TG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczNTIxQ0Q4OUYyMDAy
Mjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExp
dGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MzYyMUNEODlGMzAw
MjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUHJvZ3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFC
Rjc0MjIxQ0Q5NjNCMDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0hMU0xTdGFuZGFyZExpYnJhcnkuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvV0hMU0xTdGFuZGFyZExpYnJhcnkuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKLQkJQzIxQkY3NDUyMUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5
LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMURGMkU3MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTgxRDlF
NEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjM0QTk4NzIxRTg4NkFEMDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMVmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjM0QTk4QTIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xOYW1lUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjM0QTk4QzIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OEQyMUU4ODg4NDAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xOYW1lQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThFMjFFODg4ODUwMDNDOTg0RCAvKiBXSExTTE5h
bWVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmFtZUNvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OTcyMUU5MEYyODAwM0M5ODREIC8qIFdITFNMUmVz
b2x2ZU92ZXJsb2FkSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmVPdmVybG9hZElt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OTkyMUU5MEYyOTAwM0M5
ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTk5QTIxRTkwRjU2MDAzQzk4NEQgLyogV0hMU0xJbmZlclR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMSW5mZXJUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOTlCMjFFOTBGNTcwMDNDOTg0RCAvKiBXSExTTEluZmVyVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xJbmZlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMzRBOTlEMjFFOTEwQkQwMDNDOTg0RCAvKiBXSExTTFJlc29sdmluZ1R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xSZXNvbHZpbmdUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOUFCMjFFOTJDMTgwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNM
U3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3lu
dGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMzRBOUFEMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyog
V0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRB
OUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNM
U3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN5bnRoZXNpemVD
b25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjIyMUU5
MkMxRjAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAvKiBXSExTTFN5bnRo
ZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN5
bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIzOThFQkQyMzBBMUI3NjAwNjQxNTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTmFtZVNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjRBNTdBRjIxRkFENTNGMDA0QzZERDEgLyogV0hMU0xQaXBlbGluZURlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QjIyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50
aWNNYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QjMyMUZCOEREQTAwNEM2REQx
IC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWNN
YXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0JBMjFGRUFGRUEw
MDRDNkREMSAvKiBXSExTTFByZXBhcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVw
YXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QkIyMUZFQUZFQTAw
NEM2REQxIC8qIFdITFNMUHJlcGFyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXBhcmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8q
IENTU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENTU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3
QTIxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyODA4MzNDMUM2REIxOTQwMDE0NTFCNiAvKiBGb250RmFjZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRm9udEZhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNp
ZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxn
b3JpdGhtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxl
Y3Rpb25BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFG
NTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2Vs
ZWN0aW9uVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDI4LDIyOSArMTUyMTYs
MjggQEAKIAkJRDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVN
YWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0Qw
MEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwMDBFRDI2MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDAxRDlBQjIxQjBDN0JGMDAyM0I5QkMgLyogR1BVQ29sb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAwMzI4NzkyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwMzI4N0EyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3QjIxQzg2NDVCMDA2MjJBQTYgLyogV2Vi
R1BVQmluZEdyb3VwTGF5b3V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJBQTYgLyog
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4
NjIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVUGlwZWxpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4
ODcyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVVBpcGVsaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThDIC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8q
IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDA0ODdFNTIyNkE2MzQyMDBFRUQ3RDkgLyogV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5
IC8qIE5hdmlnYXRvcitHUFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0
b3JHUFUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yR1BVLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUUyMjc0MjgxNDAwRUVEN0Q5IC8qIE5hdmlnYXRv
ckdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAwNDg3RkQyMjc3QUY4MTAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvcitH
UFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9ICJXb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwMDQ4N0ZFMjI3N0FGODIwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JH
UFUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyTmF2aWdhdG9yR1BVLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwMEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAv
KiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAw
RDc3RkYyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAwRjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDcyMTZFRkU1
NDAwMEQ3MURCIC8qIFdlYkdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyog
V2ViR1BVLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDBGNTk0RjIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1
OTUwMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVUFkYXB0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBG
NTk1MTIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQWRh
cHRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUyMjE3MDFEOEMw
MDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAv
KiBXZWJHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRGV2aWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8q
IFdlYkdQVURldmljZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0
cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgw
MDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAxQjgxMTIyMjEyNUFGQzAwNjI3QjZDIC8qIEdQVUNvbG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2
QyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCdWZmZXJEZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMUMyMjEzNjI3MzAwNjI3QjZD
IC8qIEdQVUJ1ZmZlclVzYWdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZm
ZXJVc2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCdWZmZXJVc2FnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkgLyogR1BVQmluZEdyb3Vw
TGF5b3V0TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNDU0RDAyMUM0QTQxQzAw
QjczNjI4IC8qIEdQVUJpbmRHcm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3Jv
dXBMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0N0QyMjBBMkFD
NjAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUV4dGVudDNELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgwMjIwQTJCNzAwMEFDNUY0OSAv
KiBHUFVFeHRlbnQzRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVRXh0ZW50M0QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDI2RjQ4MzIyMEE0NzJGMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBHUFVUZXh0dXJlVXNhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDI2RjQ4NTIyMEE0NzcyMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVRleHR1cmVVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDI2RjQ4QjIyMEE1QjBCMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDAyNkY0OEMyMjBBNUJBRDAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwMkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwMzIxMUNFMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVSZW5kZXJQ
YXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDMyMTFDRjIxQUM5NTRFMDA3NjNDRjIgLyogR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzMjExRDAyMUFD
OTU0RjAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMzU4NkIxMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVFcnJvclNjb3Blcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDM1
ODZCMjIyRDdGMkVBMDBEQTAyODQgLyogR1BVRXJyb3JTY29wZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVRXJyb3JTY29wZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDM2REQ4RDIwOEZGQzBDMDBGOUY0QjIgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAzQzg0OUEyMUZGQzY2NzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0
YXRlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUMyMUZGQzdGQzAw
MDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wYXJl
RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUUyMUZGQ0Yw
MDAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQ29tcGFyZUZ1bmN0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0QTIyMUZGRDcyMzAw
MDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVRGVw
dGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA1QTk5RTEyMUM5QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTIyMUM5QjUwRjAwMDMyQjc1IC8q
IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5
RTQyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwNUE5OUU1MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwNUE5OUU2MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGlu
ZUxheW91dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tD
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRC
bG9ja0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBB
NDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA1REQ2REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJH
UFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8q
IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyog
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg3MjE4
MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1v
ZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2Vi
R1BVU2hhZGVyTW9kdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDY1QkU1NzIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmlu
ZEdyb3VwQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDY1QkU1ODIyRkI2MTZEMDA3NkRENjAg
LyogR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA2QTlBMjEyMjAyNkM3QTAwODNDNjYyIC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1h
dENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0
Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2
MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA2RUY1NTIyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
NkVGNTUzMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVVXRpbHNNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA3REVBQjcwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI4MEEzNjU1NEEwMENBMzBGOCAvKiBJ
bnNlcnRMaXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
ZXJ0TGlzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4NDAzM0Ey
MjFDQkY1NDAwMDA3MjA1IC8qIEdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVC
dWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzRDIyMUUxODY0
MDAwMDcyMDUgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDA4NDNBNEMyMEZFQzE2NTAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg1RTY0QTIyMzZE
RUFFMDBDM0UxRTIgLyogR1BVQmluZEdyb3VwTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHUFVCaW5kR3JvdXBNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4
NkZFOTYwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDg2RkU5NzA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtDb21tYW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFMzgyMUFDQTk0MjAwQkRFMTc0IC8qIEdQ
VUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRC
dWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFMzkyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQTIx
QUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4
N0NFM0MyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVRGV2aWNlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwODdDRTNEMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0UyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBD
aGFpbk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU3dhcENoYWluTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNGMjFBQ0E5NDIwMEJERTE3NCAv
KiBHUFVUZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVUZXh0dXJlTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTQwMjFBQ0E5NDIwMEJE
RTE3NCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQ
VVNoYWRlck1vZHVsZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5
MDMzNDIyNDA2MDFEMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM1MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzcy
MjQwNjFBQzAwRjNGNDQwIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzODIyNDA2Mjg5MDBGM0Y0NDAg
LyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA4OTAzMzkyMjQwNjQyRDAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQTIyNDE3OUI1MDBGM0Y0
NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBl
bGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQjIyNDE3OUI1MDBG
M0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA4OTAzM0MyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA4OTAzM0QyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBl
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRTIyNDFBOTlGMDBGM0Y0NDAgLyog
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAg
LyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNz
RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDM0MDIyNDFDRTQ2
MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA4QUEwMkQyMjBEMEI5QzAwNThDNTAyIC8qIEdQVUxvYWRPcC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gR1BVTG9hZE9wLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMkYy
MjBEMEJENTAwNThDNTAyIC8qIEdQVUxvYWRPcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMb2FkT3Au
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzEyMjBEMENFNjAwNThDNTAy
IC8qIEdQVVN0b3JlT3AuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVN0b3JlT3AuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDhBQTAzMjIyMEQwRDBCMDA1OEM1MDIgLyogR1BVU3RvcmVPcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVTdG9yZU9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwOEFBMDM2MjIwRDE5REEwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDkzRDIyNTIxNzk1MUQ0
MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDYW52YXND
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOTNEMjI3MjE3OTUxRDQw
MDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3
IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVQ2FudmFzQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA1MjMxNzFGNTIw
MDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
QzAwNjIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQ
VURldmljZUV2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhh
bmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMEIyMzE3MzVCRTAw
MTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNl
RXZlbnRIYW5kbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZBRkYy
MkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwOUFGQjAxMjJEMDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVF
cnJvckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvckZp
bHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwMzIyRDQwQ0M1MDBD
NDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURldmljZUVy
cm9yU2NvcGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDYyMkQ0
MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVFcnJvckZpbHRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4
QyAvKiBHUFVFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDlBRkIwODIyRDU1NDI4MDBDNDUzOEMgLyogR1BVRXJyb3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDlBRkIwQzIyRDU1RTkwMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDlBRkIwRDIyRDU1RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDlBRkIwRTIyRDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1l
bW9yeUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVt
b3J5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT3V0T2ZNZW1vcnlFcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NjIwOTJB
MEE2MDBFMEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEzQTczMDE0MDVBMzk4MDBGQjhFRDMg
LyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlc291cmNlTG9hZGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEFEQjI2MjIyMzA5RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVU2FtcGxlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBBREIyNjMyMjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9y
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBHUFVTYW1wbGVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwQURCMjY4MjIzMEFBQ0IwMEEyMjkzNSAvKiBHUFVTYW1wbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBB
REIyNkIyMjMwQUNDMDAwQTIyOTM1IC8qIEdQVVNhbXBsZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVVNhbXBsZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBBREIyNkMyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFE
QjI2RDIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BVU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBB
REIyNkYyMjMwQzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNh
bXBsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI3RTIyMzJGMEMw
MDBBMjI5MzUgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwQURCMjdGMjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsgcGF0aCA9IHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKLQkJRDBBREIyOEEyMjM3NzM2MTAwQTIyOTM1IC8qIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QjIy
Mzc4NDJFMDBBMjI5MzUgLyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBBREIyOEMyMjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQjA1NTY2MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyog
Q3JlYXRlTGlua0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3JlYXRlTGlua0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEI1NkVBQTIyNEVDNjI0MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEI1NkVBQjIyNEVDNjI0MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVCbGVuZERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEI1NkVBRDIyNEVDRTIwMDA2MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVDb2xvcldyaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFF
MjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvcldyaXRl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3
NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmlu
ZEdyb3VwTGF5b3V0QmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJD
NTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0
YXRpb25Db21tYW5kSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MEJENEY1QjE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDRBMjFFNjg3MkYwMEU0MkE4OSAvKiBHUFVCdWZm
ZXJCaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlckJpbmRpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1
ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2Vi
R1BVQnVmZmVyQmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQnVmZmVyQmluZGluZy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVC
aW5kR3JvdXBCaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cEJpbmRpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8q
IFdlYkdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3Vw
QmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MDIxRTY5Rjgz
MDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdy
b3VwQmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUxMjFF
NkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBCRTEwNTIyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEJFMTA1MzIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdy
b3VwRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDVFMjFFNkJBRDMwMEU0MkE4OSAvKiBH
UFVCaW5kR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3Jv
dXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjIyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJp
bmRHcm91cC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RUMyMTgz
Q0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGMTIxODNFQjMxMDA5
RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
QzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY3MjE4
NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0
MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEM0MTlGOTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBDQUFENTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQ
VS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3Jp
Z2luM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT3JpZ2luM0QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBDQ0E5NEEyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBHUFVPcmlnaW4zRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDY5
QzlDMjIyRTAwQzIwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBENjlDOUQyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjky
N0UgLyogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDg3MjFC
NjRDQUEwMDNDOTgzQyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUJ1ZmZlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0
OEMyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEQyMUI3MDY3
NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVC
dWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4RTIxQjcwNjc2
MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCdWZmZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BV
QnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCdWZmZXJNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTIyMUI3NjBGMjAwM0M5ODNDIC8q
IEdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTYyMUJBMThGNDAwM0M5ODNDIC8qIEdQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5ODIxQkExOUE3
MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2
NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODND
IC8qIEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJF
NDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFNTIx
NzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEw
QkU2MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3
YXBDaGFpbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREU4RkI4MjIyRTA5
RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJT
dGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERFOEZCOTIyMkUwOUUyMDA4
ODI1NTAgLyogR1BVU2hhZGVyU3RhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdl
YkdQVUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1
QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVD
b21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc4
MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
Q29tbWFuZEVuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4
NDIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg1MjE5M0Iw
MkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NjIxOTNC
MDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAv
KiBXZWJHUFVUZXh0dXJlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4ODIxOTNFRTRFMDAwRkE3NUMg
LyogV2ViR1BVVGV4dHVyZVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVy
ZVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4OTIxOTNFRTRF
MDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEMyMTk0MDNDOTAwMEZB
NzVDIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RUFDRjhFMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEVBQ0Y4RjIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMg
LyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTEyMTk0MEE1QjAw
MEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwRUFDRjkyMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkzMjE5NDBBNUIw
MDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEVBQ0ZBRTIxOUUzMEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
R1BVVGV4dHVyZUZvcm1hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURB
NzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRS
YXdSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdS
ZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5ODIyMDM5MUMz
MDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDBGNzU1OTkyMjAzOTFDMzAwMTE4MDU4IC8qIFdITFNMVmVydGV4QnVm
ZmVySW5kZXhDYWxjdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVmVydGV4QnVm
ZmVySW5kZXhDYWxjdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBG
NzU1OUYyMjAzQkExNDAwMTE4MDU4IC8qIEdQVUxpbWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVM
aW1pdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAw
N0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGluZ0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYy
QTVDMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBpbmdMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDJDREI1RUQ2MzhGNDNBRjg2RjA3QUEyIC8qIEpTRXJyb3JFdmVudEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Vycm9yRXZlbnRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNjgsMTAzICsxODc1NSw2IEBACiAJCQl0
YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFDQTBDMkY2MjFFRURBRDIw
MEExMTg2MCAvKiBBU1QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0g
KAotCQkJCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2Rl
LmggKi8sCi0JCQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNl
LmggKi8sCi0JCQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVu
Y2VUeXBlLmggKi8sCi0JCQkJQzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlU
eXBlLmggKi8sCi0JCQkJQzIxQkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaCAqLywKLQkJCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xB
U1QuaCAqLywKLQkJCQlDMjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rp
b25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xC
YXNlU2VtYW50aWMuaCAqLywKLQkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xC
bG9jay5oICovLAotCQkJCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5M
aXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsu
aCAqLywKLQkJCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWlsdEluU2VtYW50
aWMuY3BwICovLAotCQkJCUMyMUJGNzIyMjFDRDg5REYwMDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5T
ZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxF
eHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29t
bWFFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNM
Q29uc3RhbnRFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8q
IFdITFNMQ29udGludWUuaCAqLywKLQkJCQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hM
U0xEZWZhdWx0RGVsZXRlLmggKi8sCi0JCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdI
TFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3
OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIy
Nzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8sCi0JCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3
OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAotCQkJCTFDODQw
QjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8s
Ci0JCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIu
aCAqLywKLQkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuaCAqLywKLQkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyogV0hMU0xF
eHByZXNzaW9uLmNwcCAqLywKLQkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xF
eHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFs
bHRocm91Z2guaCAqLywKLQkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9h
dExpdGVyYWwuaCAqLywKLQkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9h
dExpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8q
IFdITFNMRm9yTG9vcC5oICovLAotCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExT
TEZ1bmN0aW9uQXR0cmlidXRlLmggKi8sCi0JCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8q
IFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIy
Nzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovLAotCQkJCTUyMkRBM0QzMjI5RTFE
MzkwMDQyRDE1MSAvKiBXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCi0JCQkJQzIx
QkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKLQkJCQlDMjFC
RjZGNzIxQ0Q4OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0J
CQkJQzIxQkY2RjgyMUNEODlCQjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLywK
LQkJCQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
Y3BwICovLAotCQkJCTFDQjY5QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRl
cmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2lj
YWxFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNM
TG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5Nzkg
LyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MkMy
MUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8sCi0JCQkJ
MUMzMzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8sCi0JCQkJQzIz
OThFQkQyMzBBMUI3NjAwNjQxNTA3IC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3
MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICov
LAotCQkJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oICovLAotCQkJCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAv
KiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCi0JCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8q
IFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEIyMUNEODlD
QzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8sCi0JCQkJQzIxQkY3MUIyMUNEODlEOTAw
MjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJG
NzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQkzMzUx
RjcwQjIyQ0FEOERBMDAxNUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovLAotCQkJCTFDQjY5
QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8sCi0JCQkJQzIx
MzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8sCi0J
CQkJQzIxQkY3MDgyMUNEODlDOTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICov
LAotCQkJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovLAotCQkJ
CUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8sCi0JCQkJQzIx
MzhBMTYyMURERUNGQjAwRjUxNkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmNwcCAqLywKLQkJCQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2
QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzBFMjFDRDg5
Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzEy
MjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzI3MjFD
RDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjFC
RjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MTkyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovLAotCQkJCUMy
MUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovLAotCQkJ
CUMyMUJGNzFDMjFDRDg5REEwMDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMy
ODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJ
QzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJ
CQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywK
LQkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8s
Ci0JCQkJN0M4NUIyMDEyMkZCMDQ4NTAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGUuY3BwICov
LAotCQkJCTFDMzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8s
Ci0JCQkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmgg
Ki8sCi0JCQkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5jcHAgKi8sCi0JCQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAv
KiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNzIx
REVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oICovLAot
CQkJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCAqLywKLQkJCQlDMjFCRjcxNDIxQ0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBX
SExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCi0JCQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5
IC8qIFdITFNMV2hpbGVMb29wLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEFTVDsKLQkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTFDREQ0NDY2MEJBOUM4MDAwMEY5MDE0NyAvKiBD
b25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xOTI4NCwyNiArMTg3NzQsMjEgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJz
ID0gMDsKIAkJfTsKLQkJMUNFQ0IzQUQyMUYyQjk2NDAwRjQ0NTQyIC8qIE1ldGFsICovID0gewor
CQkxQ0UzNDk3ODI2QjMzQjVEMDA4MzA2QkQgLyogZ3B1ICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQ0UzNDk3QjI2QjMzQjhDMDA4MzA2QkQgLyogY29j
b2EgKi8sCisJCQkJMUNFMzQ5N0EyNkIzM0I3QTAwODMwNkJEIC8qIEdQVURldmljZS5oICovLAor
CQkJKTsKKwkJCXBhdGggPSBncHU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQkxQ0UzNDk3QjI2QjMzQjhDMDA4MzA2QkQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBX
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAgKi8sCi0JCQkJMUNFQ0IzQkIyMUY1MTFBQTAw
RjQ0NTQyIC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggKi8sCi0JCQkJMUNFQ0IzQUYy
MUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovLAotCQkJCTFDRUNC
M0IyMjFGMkI5ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8sCi0JCQkJN0M3
Qzc2OUMyMkY2N0VDRDAwMzJCQ0NEIC8qIFdITFNMTWFuZ2xlZE5hbWVzLmggKi8sCi0JCQkJMUNF
Q0IzQjUyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLywK
LQkJCQkxQ0VDQjNCNjIxRjUwQUM3MDBGNDQ1NDIgLyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3Iu
aCAqLywKLQkJCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjkyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyog
V0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLywKLQkJCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1
NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8sCi0JCQkJMUNFQ0IzQjEyMUYyQjk4NTAw
RjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmNwcCAqLywKLQkJCQkxQ0VDQjNCMDIxRjJCOTg1MDBG
NDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuaCAqLywKLQkJCQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgw
NTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovLAotCQkJCUQwRjc1
NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5o
ICovLAorCQkJCTFDRTM0OTdDMjZCMzNCQUUwMDgzMDZCRCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAq
LywKIAkJCSk7Ci0JCQlwYXRoID0gTWV0YWw7CisJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OwogCQkxRDAwMjY5QTIzNzRCOUY4MDBDQTZDREYgLyogUGlj
dHVyZUluUGljdHVyZSAqLyA9IHsKQEAgLTIwNTA0LDgwICsxOTk4OSw2IEBACiAJCQlwYXRoID0g
Y29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk0OTg3NzBDMTEyNDJD
NTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJl
biA9ICgKLQkJCQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyogY29jb2EgKi8sCi0JCQkJRDBC
RTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICovLAotCQkJCUQwNjVCRTU3
MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCAqLywKLQkJCQlEMEJF
MTA0RTIxRTY5NUUyMDBFNDJBODkgLyogR1BVQmluZEdyb3VwQmluZGluZy5oICovLAotCQkJCUQw
QkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi8sCi0J
CQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJpbmRHcm91cExheW91dC5oICovLAot
CQkJCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaCAqLywK
LQkJCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BVQnVmZmVyLmNwcCAqLywKLQkJCQlE
MEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8sCi0JCQkJRDBCRTEwNEEy
MUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLywKLQkJCQlEMEQ4NjQ4NzIx
QjY0Q0FBMDAzQzk4M0MgLyogR1BVQnVmZmVyRGVzY3JpcHRvci5oICovLAotCQkJCUQwMUI4MTFE
MjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICovLAotCQkJCUQwMDFEOUFCMjFC
MEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovLAotCQkJCUQwQURCMjhCMjIzNzg0MkUwMEEy
MjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oICovLAotCQkJCUQwQjU2RUFEMjI0RUNF
MjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmggKi8sCi0JCQkJMzEyRkY4QkQyMUE0QzJGMTAw
RUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQlEMDNDODQ5QzIxRkZDN0ZDMDAw
MjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8sCi0JCQkJRDA4OTAzM0YyMjQxQ0U0NjAw
RjNGNDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovLAotCQkJCUQwODkwMzNBMjI0MTc5
QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUuaCAqLywKLQkJCQlEMDg5MDMzOTIyNDA2
NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUQw
M0M4NDlBMjFGRkM2NjcwMDAyMjI3RiAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3Iu
aCAqLywKLQkJCQkzMTJGRjhCRjIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNlLmNwcCAqLywK
LQkJCQkzMTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNlLmggKi8sCi0JCQkJRDA5
QUZCMDgyMkQ1NTQyODAwQzQ1MzhDIC8qIEdQVUVycm9yLmNwcCAqLywKLQkJCQlEMDlBRkIyRDIy
RDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjA3MjJENTM5MUIw
MEM0NTM4QyAvKiBHUFVFcnJvci5oICovLAotCQkJCUQwOUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAv
KiBHUFVFcnJvckZpbHRlci5oICovLAotCQkJCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBH
UFVFcnJvclNjb3Blcy5jcHAgKi8sCi0JCQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEwMjg0IC8qIEdQ
VUVycm9yU2NvcGVzLmggKi8sCi0JCQkJRDAyNkY0N0QyMjBBMkFDNjAwQUM1RjQ5IC8qIEdQVUV4
dGVudDNELmggKi8sCi0JCQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4MDU4IC8qIEdQVUxpbWl0cy5o
ICovLAotCQkJCUQwOEFBMDJGMjIwRDBCRDUwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaCAqLywKLQkJ
CQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFzZS5oICovLAotCQkJCUQw
OUFGQjE5MjJENjY5OEEwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmggKi8sCi0JCQkJ
OTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQVVBpcGVsaW5lLmNwcCAqLywKLQkJCQk5MTg2
RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxpbmUuaCAqLywKLQkJCQkzMTJGRjhDNDIx
QTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAotCQkJCUQw
MDMyODg3MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dC5jcHAgKi8sCi0JCQkJ
RDAwMzI4ODYyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmggKi8sCi0JCQkJ
RDAwMzI4ODQyMUM5QTIwRDAwNjIyQUE2IC8qIEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5o
ICovLAotCQkJCUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmgg
Ki8sCi0JCQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThDIC8qIEdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcCAqLywKLQkJCQlEMDMyMTFDRjIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyog
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzEyRkY4QzEyMUE0QzJG
MjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi8sCi0JCQkJRDAzMjExRDAyMUFDOTU0RjAwNzYzQ0Yy
IC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAzMjExQ0UyMUFDOTU0RTAw
NzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8sCi0JCQkJMzEyRkY4QjkyMUE0QzJF
RjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0JCQkJMzEyRkY4QkMyMUE0QzJG
MDAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUQwNkE5
QTIxMjIwMjZDN0EwMDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLywKLQkJ
CQlEMEFEQjI2ODIyMzBBQUNCMDBBMjI5MzUgLyogR1BVU2FtcGxlci5oICovLAotCQkJCUQwQURC
MjYyMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5oICovLAotCQkJCTMx
MkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLywKLQkJCQkzMTJG
RjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAot
CQkJCUQwOEFBMDMyMjIwRDBEMEIwMDU4QzUwMiAvKiBHUFVTdG9yZU9wLmggKi8sCi0JCQkJMzEy
RkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovLAotCQkJCUQwQURCMjdG
MjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJMzEy
RkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLywKLQkJCQlEMDI2RjQ4QzIy
MEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhD
MzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICovLAotCQkJCUQwMjZGNDg1
MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLywKLQkJCQlEMDZFRjU1MjIy
MEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLywKLQkJCQlEMDlBRkIwRTIyRDU1RkY1MDBD
NDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLywKLQkJCQlEMDlBRkIwRDIyRDU1RjNC
MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmggKi8sCi0JCQkJRDBEODY0OUIyMUJBMUMy
RDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEQ4
NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oICovLAot
CQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3Iu
aCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gZ3B1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKIAkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNhICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0MzM3LDcgKzIzNzQ4LDYgQEAKIAkJCQk1
N0Q4NDYyQTFGRUFGNTdGMDBDQTM2ODIgLyogd2ViYXV0aG4gKi8sCiAJCQkJOTdCQzY5RDUxNTA1
RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAogCQkJCTk5NkU1OURBMURGMDBENDUwMDY2
MTJCOSAvKiB3ZWJkcml2ZXIgKi8sCi0JCQkJRDAwRjU5M0UyMTZFQ0M0MzAwMEQ3MURCIC8qIHdl
YmdwdSAqLywKIAkJCQk5N0FBQkNGNzE0RkEwOUI1MDA3NDU3QUUgLyogd2Vic29ja2V0cyAqLywK
IAkJCQlFMUVFOEFDNjI0MTJCMTZGMDBFNzk0RDYgLyogd2VieHIgKi8sCiAJCQkpOwpAQCAtMjcw
MjcsNyArMjY0MzcsNyBAQAogCQkJCUNEOUQ4MjdDMUM3QkIyRUQwMDZGRjA2NiAvKiBjdiAqLywK
IAkJCQkwRkU1RkJDOTFDM0RENTA2MDAwN0EyQ0EgLyogZGlzcGxheWxpc3RzICovLAogCQkJCUE3
NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAotCQkJCTQ5ODc3MEMxMTI0MkM1
MEQwMDIyMjZCQSAvKiBncHUgKi8sCisJCQkJMUNFMzQ5NzgyNkIzM0I1RDAwODMwNkJEIC8qIGdw
dSAqLywKIAkJCQk0NDFBRjBBNzBFQkE3QkJGMDA0NEVENEIgLyogaW9zICovLAogCQkJCUNEODky
RjVBMUZCNTJBQ0YwMDkzMzNEMiAvKiBpc28gKi8sCiAJCQkJQjI3NTM1NDkwQjA1MzgxNDAwMkNF
NjRGIC8qIG1hYyAqLywKQEAgLTI3NDY0LDggKzI2ODc0LDYgQEAKIAkJCQlDRDVEMjc3NTFFODMx
OEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAogCQkJCTQ5
RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCiAJCQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCi0JCQkJMzE4NDM2REIyMUI5REFB
MDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8sCi0JCQkJMzE4NDM2REQyMUI5REFBMDAwRUQz
ODNFIC8qIFdlYkdQVUxheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAv
KiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2
MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCSk7CkBAIC0yODMyNCw4
NCArMjc3MzIsNiBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07Ci0JCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAvKiBXSExTTCAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBMEMyRjYyMUVFREFEMjAwQTEx
ODYwIC8qIEFTVCAqLywKLQkJCQkxQ0VDQjNBRDIxRjJCOTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8s
Ci0JCQkJQzIwRjg4QUEyMjk2NkIwRTAwRDYxMEZBIC8qIFdITFNMQVNURHVtcGVyLmNwcCAqLywK
LQkJCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuaCAqLywKLQkJ
CQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyogV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1
bmN0aW9uTWFwLnB5ICovLAotCQkJCUMyMzRBOUIyMjFFOTJDMUYwMDNDOTg0RCAvKiBXSExTTENo
ZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCAqLywKLQkJCQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4
NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oICovLAotCQkJCTFDODQwQjlCMjFF
QzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuY3BwICovLAotCQkJCTFDODQwQjk3MjFFQzQw
MDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLywKLQkJCQk1MjRCRDQ3RTIzMjc3RTE1MDA4
RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCAqLywKLQkJCQk1MjRCRDQ4MDIz
Mjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8sCi0JCQkJMUMy
ODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAg
Ki8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVm
ZXJlbmNlcy5oICovLAotCQkJCTUyMkJBQjk2MjJFNkEzNjIwMEM1NENFOSAvKiBXSExTTENvZGVM
b2NhdGlvbi5oICovLAotCQkJCTFDODZDQTRCMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1
dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hM
U0xDb21wdXRlRGltZW5zaW9ucy5oICovLAotCQkJCTFDQjVGRTg4MjJERUJDOEIwMDk0NDBFMiAv
KiBXSExTTEVycm9yLmggKi8sCi0JCQkJMUNBMEMyRTQyMUVFRDEyQTAwQTExODYwIC8qIFdITFNM
RnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkU1MjFFRUQxMkEwMEExMTg2
MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8sCi0JCQkJMUM4NDBCOTkyMUVDNDAw
ODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCAqLywKLQkJCQkxQzg0
MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCAqLywK
LQkJCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmNw
cCAqLywKLQkJCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmggKi8sCi0JCQkJQzIzNEE5OUEyMUU5MEY1NjAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBl
cy5jcHAgKi8sCi0JCQkJQzIzNEE5OUIyMUU5MEY1NzAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBl
cy5oICovLAotCQkJCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3Mu
Y3BwICovLAotCQkJCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3Mu
aCAqLywKLQkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8s
Ci0JCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLywKLQkJCQkx
Q0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwICov
LAotCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tl
ci5oICovLAotCQkJCUMyMzRBOThEMjFFODg4ODQwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0
LmNwcCAqLywKLQkJCQlDMjM0QTk4RTIxRTg4ODg1MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4
dC5oICovLAotCQkJCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZl
ci5jcHAgKi8sCi0JCQkJQzIzNEE5OEMyMUU4ODgzRTAwM0M5ODREIC8qIFdITFNMTmFtZVJlc29s
dmVyLmggKi8sCi0JCQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNFMTJGIC8qIFdITFNMTmFtZVNwYWNl
LmggKi8sCi0JCQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAq
LywKLQkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuaCAqLywKLQkJ
CQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQYXJzaW5nTW9kZS5oICovLAotCQkJ
CUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oICov
LAotCQkJCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuY3BwICovLAot
CQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuaCAqLywKLQkJCQk1
MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVz
LmNwcCAqLywKLQkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdI
TFNMUHJvZ3JhbS5oICovLAotCQkJCTFDQUE4MkY2MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFBy
b3BlcnR5UmVzb2x2ZXIuY3BwICovLAotCQkJCTFDQUE4MkY3MjI0MkFFMDUwMEU4NEJCQiAvKiBX
SExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywKLQkJCQk1MjZCM0YwMTIyRkI3QkREMDA3NkQzN0Qg
LyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCAqLywK
LQkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCi0JCQkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYw
IC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNBMEMyREUyMUVFQjVGNDAw
QTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOUFEMjFFOTJD
MTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCAqLywKLQkJCQlDMjM0
QTlBQjIxRTkyQzE4MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oICovLAot
CQkJCUMyMzRBOTk5MjFFOTBGMjkwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwu
Y3BwICovLAotCQkJCUMyMzRBOTk3MjFFOTBGMjgwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVy
bG9hZEltcGwuaCAqLywKLQkJCQlDMjM0QTk5RDIxRTkxMEJEMDAzQzk4NEQgLyogV0hMU0xSZXNv
bHZpbmdUeXBlLmggKi8sCi0JCQkJMUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2Nv
cGVkU2V0QWRkZXIuaCAqLywKLQkJCQlDMjRBNTdCMjIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xT
ZW1hbnRpY01hdGNoZXIuY3BwICovLAotCQkJCUMyNEE1N0IzMjFGQjhEREEwMDRDNkREMSAvKiBX
SExTTFNlbWFudGljTWF0Y2hlci5oICovLAotCQkJCUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCi0JCQkJMUNEQUJENkIyMkM4NDc5QTAwQkQw
QTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaCAqLywKLQkJCQkxQzhEMjZD
RTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwICov
LAotCQkJCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0
aWxpdGllcy5oICovLAotCQkJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQy
IC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8sCi0JCQkJQzIzNEE5QjAyMUU5
MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8sCi0JCQkJ
QzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5o
ICovLAotCQkJCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVt
ZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJQzIzNEE5QUMyMUU5MkMxOTAwM0M5ODREIC8q
IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmggKi8sCi0JCQkJQzIzNEE5ODUy
MUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8sCi0JCQkJQzIzNEE5ODcyMUU4
ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovLAotCQkJKTsKLQkJCXBhdGggPSBXSExT
TDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUNEMERCQjNFMTQyMjc0RTYw
MDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yODg4NiwxNzggKzI4MjE2LDYgQEAKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OwotCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIgLyogd2Vi
Z3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDMjEw
RTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8sCi0JCQkJRDBCOEJCMDEyMUM0NkU3ODAw
MEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaCAqLywKLQkJCQlEMEQ2OUM5RjIy
MkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwgKi8sCi0JCQkJ
RDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
aCAqLywKLQkJCQlEMEQ2OUM5RDIyMkUwMEMyMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBCNTZFQUIyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJs
ZW5kRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAxQjgxMTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQ
VUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwMUI4MTFDMjIxMzYyNzMwMDYyN0I2QyAv
KiBHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCi0JCQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8q
IEdQVUNhbnZhc0NvbnRleHQuY3BwICovLAotCQkJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAv
KiBHUFVDYW52YXNDb250ZXh0LmggKi8sCi0JCQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8q
IEdQVUNhbnZhc0NvbnRleHQuaWRsICovLAotCQkJCUQwMUI4MTEyMjIxMjVBRkMwMDYyN0I2QyAv
KiBHUFVDb2xvci5pZGwgKi8sCi0JCQkJRDBBREIyOEMyMjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEI1NkVBRTIyNEVDRTIwMDA2MTA0OUMg
LyogR1BVQ29sb3JXcml0ZS5pZGwgKi8sCi0JCQkJRDAzQzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8q
IEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8sCi0JCQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdG
IC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDA5QUZCMDYy
MkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmlkbCAqLywKLQkJCQlEMDI2RjQ4MDIy
MEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRsICovLAotCQkJCUQwOEFBMDJEMjIwRDBC
OUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAotCQkJCUQwQ0NBOTQ5MjIyOTlGOTcwMDY5
NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAotCQkJCUQwQ0NBOTRBMjIyOTlGOTcwMDY5NzlCNiAv
KiBHUFVPcmlnaW4zRC5pZGwgKi8sCi0JCQkJRDA5QUZCMTcyMkQ2Njk0RTAwQzQ1MzhDIC8qIEdQ
VU91dE9mTWVtb3J5RXJyb3IuaWRsICovLAotCQkJCUQwMkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAv
KiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovLAotCQkJCUQwQURCMjYzMjIzMDlENzYw
MEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBERThGQjgyMjJF
MDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmggKi8sCi0JCQkJRDBERThGQjkyMjJFMDlF
MjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmlkbCAqLywKLQkJCQlEMDhBQTAzMTIyMEQwQ0U2
MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8sCi0JCQkJRDAyNkY0OEIyMjBBNUIwQjAwQUM1
RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVBQ0ZBRTIxOUUzMEZE
MDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwgKi8sCi0JCQkJRDAyNkY0ODMyMjBBNDcy
RjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5pZGwgKi8sCi0JCQkJRDA5QUMwMDYyMzE3MUY1
MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcCAqLywKLQkJCQlEMDlBQzAw
NTIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaCAqLywKLQkJCQlE
MDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsICov
LAotCQkJCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRs
ICovLAotCQkJCUQwRDg2NDk2MjFCQTE4RjQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5ODIxQkExOUE3MDAzQzk4M0MgLyogR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBEODY0OTQyMUJBMTczRDAwM0M5ODND
IC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAwNDg3RUIyMjc0Mjgx
MjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRsICovLAotCQkJCUQwMDQ4N0VEMjI3NDI4MTMw
MEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovLAotCQkJCUQwMDQ4N0VFMjI3NDI4MTQwMEVF
RDdEOSAvKiBOYXZpZ2F0b3JHUFUuaCAqLywKLQkJCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIg
LyogV2ViR1BVLmNwcCAqLywKLQkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BV
LmggKi8sCi0JCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwgKi8sCi0J
CQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3BwICovLAotCQkJ
CUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8sCi0JCQkJRDAw
RjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaWRsICovLAotCQkJCUQwQkUx
MDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuY3BwICovLAotCQkJCUQwQkUx
MDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuaCAqLywKLQkJCQlEMEJFMTA2
MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLywKLQkJCQlEMEJFMTA0
RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGluZy5oICovLAotCQkJCUQw
QkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCAqLywK
LQkJCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5jcHAgKi8sCi0JCQkJRDBCRTEwNTIyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEJFMTA1MzIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAwMzI4N0EyMUM4NjQ1QjAwNjIyQUE2
IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8sCi0JCQkJRDAwMzI4NzkyMUM4NjQ1QjAw
NjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5oICovLAotCQkJCUQwMDMyODdCMjFDODY0
NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsICovLAotCQkJCUQwRDg2NDhE
MjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuY3BwICovLAotCQkJCUQwRDg2NDhDMjFC
NzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaCAqLywKLQkJCQlEMEQ4NjQ4RTIxQjcwNjc2
MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKLQkJCQlEMEJFMTA0QzIxRTY4RjE1MDBF
NDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovLAotCQkJCUQwQkUxMDREMjFFNjhGMTUw
MEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAqLywKLQkJCQlEMDVERDZERDIyMzg4
NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCi0JCQkJRDA1REQ2REUy
MjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQlEMDVERDZE
RjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCi0JCQkJRDBF
QUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCAqLywKLQkJ
CQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAqLywK
LQkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRs
ICovLAotCQkJCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwICovLAotCQkJCUQwMEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMgLyogV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLywKLQkJCQlEMDg5MDMzRDIyNDFBOTlGMDBGM0Y0
NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLywKLQkJCQlEMDg5MDMzQzIyNDFBOTlG
MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8sCi0JCQkJRDA4OTAzM0UyMjQx
QTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGwgKi8sCi0JCQkJRDA4OTAz
MzgyMjQwNjI4OTAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3Bw
ICovLAotCQkJCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4OTAzMzUyMjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwMEY1OTUzMjE3MDFEOEMw
MDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovLAotCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBE
NzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIg
LyogV2ViR1BVRGV2aWNlLmlkbCAqLywKLQkJCQlEMDlBRkIwMTIyRDAyRTUzMDBDNDUzOEMgLyog
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwICovLAotCQkJCUQwOUFGQUZGMjJEMDJFNTMwMEM0
NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oICovLAotCQkJCUQwOUFGQjAzMjJENDBD
QzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgKi8sCi0JCQkJRDA5QUMw
MEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oICovLAotCQkJ
CUQwOUFDMDBCMjMxNzM1QkUwMDE4Nzc2MiAvKiBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRs
ICovLAotCQkJCTkxODZGM0I2MjMyOUZCNEUwMEFGRjg1NyAvKiBXZWJHUFVQaXBlbGluZS5jcHAg
Ki8sCi0JCQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8s
Ci0JCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaCAqLywKLQkJCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCi0JCQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMyQjc1IC8q
IFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJC
NzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywKLQkJCQlEMDVBOTlFNjIxQzlCRjJDMDAw
MzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsICovLAotCQkJCUQwMDQ4N0QyMjI0NTdC
RUEwMEVFRDdEOSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwICovLAotCQkJ
CUQwNUE5OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IuaCAqLywKLQkJCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVBQ0Y5MjIxOTQwQTVCMDAwRkE3NUMgLyog
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwRUFDRjkxMjE5NDBB
NUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovLAotCQkJCUQw
RUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5p
ZGwgKi8sCi0JCQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQwIC8qIFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8q
IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovLAotCQkJCUQwQzQxOUVDMjE4
M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsICov
LAotCQkJCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8sCi0J
CQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmggKi8sCi0JCQkJMzEy
RkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLywKLQkJCQlEMDhBQTAz
NzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAot
CQkJCUQwRUFDRjhDMjE5NDAzQzkwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oICovLAotCQkJCUQwOEFBMDM2MjIwRDE5REEwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBFQUNGOEYyMTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y4RTIxOTQwQTIyMDAwRkE3NUMg
LyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y5MDIxOTQwQTIyMDAw
RkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsICovLAotCQkJCUQwQzQxOUY4MjE4
NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8sCi0JCQkJRDBDNDE5
RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0JCQkJRDBD
NDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCAqLywKLQkJ
CQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcCAqLywKLQkJCQlEMEM0MTlGMjIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBBREIyNkQyMjMw
QkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuY3BwICovLAotCQkJCUQwQURCMjZDMjIzMEJC
OEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmggKi8sCi0JCQkJRDBBREIyNkYyMjMwQzFGMTAw
QTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovLAotCQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhB
NDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAotCQkJCUQwNjE1RkNDMjE3RkU1QzYw
MDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywKLQkJCQlEMDYxNUZDRTIxN0ZFNUM2
MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLywKLQkJCQlEMDYwRDg4NzIxODI2
OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAotCQkJCUQw
NjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bCAqLywKLQkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNw
cCAqLywKLQkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmgg
Ki8sCi0JCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwg
Ki8sCi0JCQkJRDAwNDg3RTUyMjZBNjM0MjAwRUVEN0Q5IC8qIFdlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuY3BwICovLAotCQkJCUQwQURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdl
YkdQVVRleHR1cmUuY3BwICovLAotCQkJCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJH
UFVUZXh0dXJlLmggKi8sCi0JCQkJRDBFQUNGODYyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRl
eHR1cmUuaWRsICovLAotCQkJCUQwRUFDRjg4MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0
dXJlVmlldy5jcHAgKi8sCi0JCQkJRDBFQUNGODcyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRl
eHR1cmVWaWV3LmggKi8sCi0JCQkJRDBFQUNGODkyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRl
eHR1cmVWaWV3LmlkbCAqLywKLQkJCQlEMDA0ODdGRDIyNzdBRjgxMDBFRUQ3RDkgLyogV29ya2Vy
TmF2aWdhdG9yK0dQVS5pZGwgKi8sCi0JCQkJRDBDQUFENTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdv
cmtlck5hdmlnYXRvckdQVS5jcHAgKi8sCi0JCQkJRDAwNDg3RkUyMjc3QUY4MjAwRUVEN0Q5IC8q
IFdvcmtlck5hdmlnYXRvckdQVS5oICovLAotCQkJKTsKLQkJCXBhdGggPSB3ZWJncHU7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQg
LyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJ
CUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5t
bSAqLywKLQkJCQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgzQjkgLyogR1BVQmluZEdyb3VwTGF5b3V0
TWV0YWwubW0gKi8sCi0JCQkJRDA4NUU2NEEyMjM2REVBRTAwQzNFMUUyIC8qIEdQVUJpbmRHcm91
cE1ldGFsLm1tICovLAotCQkJCUQwRDg2NDkxMjFCNzYwQzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJN
ZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzODIxQUNBOTQyMDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1
ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21w
dXRlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAg
LyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFM0MyMUFDQTk0MjAw
QkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovLAotCQkJCTFDODZDQTRFMjJBQTIzQzkwMDFC
Rjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAgKi8sCi0JCQkJMUM4NkNB
NEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggKi8s
Ci0JCQkJQTM4QTg3QTMyNTM4QkVFNzAwMzdBNDcyIC8qIEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5o
ICovLAotCQkJCUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTM5MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVR
dWV1ZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5k
ZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTNEMjFBQ0E5NDIwMEJERTE3NCAv
KiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAotCQkJCUQwQURCMjZCMjIzMEFDQzAwMEEy
MjkzNSAvKiBHUFVTYW1wbGVyTWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRF
MTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNFMjFBQ0E5NDIw
MEJERTE3NCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzRjIxQUNBOTQy
MDBCREUxNzQgLyogR1BVVGV4dHVyZU1ldGFsLm1tICovLAotCQkJCUQwNkVGNTUzMjIwQkEyNkEw
MDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBjb2NvYTsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1
RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTMyODgzLDE4ICszMjA0MSw2IEBACiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8q
IEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAw
QTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzExNTE4RkMxRTc4QzE1
RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEzMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNDIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUXVldWUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTcyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTgyMUE0QzM2
NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5
MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxMkZGOTFBMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFCMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJl
LmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4
dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0M1RjUwREE1NkI5MjAwMjFFQjVE
IC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NDBEMDBCRjIyMDA3MUI3
ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwNDE0
NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjA3
Myw3ICszNTIxOSw2IEBACiAJCQkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5p
Zm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Rjk5NUEyNjFBNzA3OEIxMDBBNzM1
RjQgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdB
NzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxODQzNkRFMjFCOURBQUYwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjcxRkFBNDQ2MjAwMzdEMUU2IC8qIFdlYkhlYXBBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NjE0Nyw5ICszNTI5Miw2IEBACiAJCQkJMkVCQkMzRDgxQjY1OTg4MzAwRjUyNTNEIC8qIFdoZWVs
RXZlbnREZWx0YUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5QjVEOEYxQjY2QTk0RTAw
OEM2QTI0IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0TW9uaXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTE5NTZGMjUyMzMxQUQ1MzAwNTdFOUQyIC8qIFdITFNMRnVuY3Rpb25E
ZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1NkYyNDIzMzFBRDIxMDA1N0U5RDIg
LyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1NkYyMzIzMzFBQ0YyMDA1
N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MEY0NzQw
OUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxMURDQjEx
NjRDMzlBODAwRDQ5QkMxIC8qIFdpZHRoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOUIw
MkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCAwYjVmOGVlMjNlOTNiODRmMWFhNjczZTY5NDgyZWUxZjY3YzdmMDQ2Li5jOGRiNjg3OTlmOTYy
MDAxNGMyYjQ0NTcyZGRkMmE1MzI3Mzg5N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0xMDQsMzQgKzEwNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHYW1lcGFkKSBcCiAgICAgbWFjcm8oR2FtZXBhZEJ1
dHRvbikgXAogICAgIG1hY3JvKEdhbWVwYWRFdmVudCkgXAotICAgIG1hY3JvKEdQVSkgXAotICAg
IG1hY3JvKEdQVUFkYXB0ZXIpIFwKLSAgICBtYWNybyhHUFVCaW5kR3JvdXApIFwKLSAgICBtYWNy
byhHUFVCaW5kR3JvdXBMYXlvdXQpIFwKLSAgICBtYWNybyhHUFVCdWZmZXIpIFwKLSAgICBtYWNy
byhHUFVCdWZmZXJVc2FnZSkgXAotICAgIG1hY3JvKEdQVUNhbnZhc0NvbnRleHQpIFwKLSAgICBt
YWNybyhHUFVDb2xvcldyaXRlKSBcCi0gICAgbWFjcm8oR1BVQ29tbWFuZEJ1ZmZlcikgXAotICAg
IG1hY3JvKEdQVUNvbW1hbmRFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBpcGVsaW5lKSBcCi0gICAgbWFjcm8oR1BVRGV2
aWNlKSBcCi0gICAgbWFjcm8oR1BVT3V0T2ZNZW1vcnlFcnJvcikgXAotICAgIG1hY3JvKEdQVVBp
cGVsaW5lTGF5b3V0KSBcCi0gICAgbWFjcm8oR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIpIFwK
LSAgICBtYWNybyhHUFVRdWV1ZSkgXAotICAgIG1hY3JvKEdQVVJlbmRlclBhc3NFbmNvZGVyKSBc
Ci0gICAgbWFjcm8oR1BVUmVuZGVyUGlwZWxpbmUpIFwKLSAgICBtYWNybyhHUFVTYW1wbGVyKSBc
Ci0gICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxlKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVyU3RhZ2Up
IFwKLSAgICBtYWNybyhHUFVTd2FwQ2hhaW4pIFwKLSAgICBtYWNybyhHUFVUZXh0dXJlKSBcCi0g
ICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdlKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVZpZXcpIFwK
LSAgICBtYWNybyhHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCkgXAotICAgIG1hY3JvKEdQVVZhbGlk
YXRpb25FcnJvcikgXAogICAgIG1hY3JvKEhpZ2hsaWdodFJlZ2lzdGVyKSBcCiAgICAgbWFjcm8o
SGlnaGxpZ2h0KSBcCiAgICAgbWFjcm8oSFRNTEF0dGFjaG1lbnRFbGVtZW50KSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA3ODJiNWYyNzVhMzgzN2RlN2Y2Mjg1Yzg5YWY4MDgyNzIxNGQ1
MzA5Li4zMzgxZmJmMWM0OTY0MDY3ZTYzOGVmNzVmZDY4ZDdlMmMyZjA5NzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTMzNiw5ICszMzYsNiBAQAogI2lmIEVOQUJMRShXRUJHTDIpCiAj
aW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCi0jZW5kaWYKIAogI2lmIEVOQUJM
RShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTYzOTQsMTAgKzYzOTEsNiBAQCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IERv
Y3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZQogICAgIGlmIChp
czxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJpbmdDb250ZXh0IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0
PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CiAjZW5kaWYKLSNpZiBFTkFC
TEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0PigqY29udGV4dCkpCi0gICAg
ICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsg
JmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpjb250ZXh0KSB9IH07Ci0jZW5kaWYKIAogICAg
IHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RD4geyAmZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqY29udGV4dCkgfSB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjOThlMjA1ZmFmNzRlNDhhNmRkZmI5ZWZmZWRiZTE4
MjdmZWE5ZjM4Li5jNGRmMDM3YjM5NDM5ZDkxNjdjYTdmYTNkYzA4YjhjNWJkMWVmNmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMzE4LDkgKzMxOCw2IEBAIHVzaW5nIFJlbmRlcmluZ0NvbnRl
eHQgPSBWYXJpYW50PAogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBSZWZQdHI8V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dD4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJl
ZlB0cjxHUFVDYW52YXNDb250ZXh0PiwKICNlbmRpZgogICAgIFJlZlB0cjxJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQ+LAogICAgIFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3NTc0MTQwODdhNmJjYTYzNWEzZmNjOTVlZmZmNmUy
NGRlM2RmMjVlLi42ODA0YjBmNTU2Y2U2NDAwNTQ0NDIxZmVlNmFmYzc0MmVjZDFmZjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0LDkgKzI0LDYgQEAgdHlwZWRlZiAoCiAjZW5kaWYK
ICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYmIEVOQUJMRV9XRUJHTDIKICAgICBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYm
IEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXNDb250ZXh0IG9yCiAjZW5kaWYKICAgICBJbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
KSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCAxNjAxMWFm
NmVmMjMwNDc2OTUyNTgxMThjNjQ5MmIwYmVhMDlkYTJiLi4yYmNkNzNjM2I4MzgwNmJkMWI3ZTEw
OWU2ZmM4OTY3YjFiY2Y5OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAtOTAsNyAr
OTAsNiBAQCBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQogTWVkaWFFbmNyeXB0ZWRFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKIE1lZGlh
S2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogUG9pbnRlckV2ZW50
Ci1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBjb25kaXRpb25hbD1XRUJHUFUKIEVudGVyUGljdHVy
ZUluUGljdHVyZUV2ZW50IGNvbmRpdGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEkKIFhSSW5w
dXRTb3VyY2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVu
dCBjb25kaXRpb25hbD1XRUJYUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KaW5kZXggZjYwYzg5MjdhNTZiYzM1OGQxMDdiOWRiOGVjZTlhNGMzNzEyMzZjMi4uMWQ4YmE2
NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNkMjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Niw3ICs1Niw2IEBAIFRleHRUcmFja0xpc3QgY29u
ZGl0aW9uYWw9VklERU8KIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxW
aWV3cG9ydAogV2ViQW5pbWF0aW9uCi1XZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCiBX
ZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQog
V2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKaW5kZXggNTAxM2NlZGEwMzU3YWMxYWQyMGU1NTZmZjI3NzZhMzEzY2M1ZWUzNi4uNzRmOGEy
ZWJkNzAyNTRkYjk4YzcyZWFjZTNmMDc2YTYxMzI5NjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTgxLDEwICs4MSw2IEBACiAjaW5jbHVkZSAiV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2lu
Y2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQlhSKQog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtMjcwLDE0
ICsyNjYsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OgogICAgICAgICB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmlzV2ViR1BVKCkpIHsK
LSAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQg
fTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
UmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpt
X2NvbnRleHQpIH0gfTsKLSAgICAgICAgfQotI2VuZGlmCi0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQpAQCAtMzIzLDE1ICszMTEsNiBAQCBFeGNlcHRpb25P
cjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0
Q29udGV4dChKU0M6OgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBp
ZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gY3Jl
YXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwotICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVs
bG9wdCB9OwotICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7IGNvbnRleHQgfSB9OwotICAgIH0KLSNlbmRpZgot
CiAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxv
cHQgfTsKIH0KIApAQCAtMzQ4LDExICszMjcsNiBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAg
IHJldHVybiBnZXRDb250ZXh0V2ViR0woSFRNTENhbnZhc0VsZW1lbnQ6OnRvV2ViR0xWZXJzaW9u
KHR5cGUpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoSFRNTENhbnZh
c0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIGdldENvbnRleHRX
ZWJHUFUodHlwZSk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00OTUs
NDcgKzQ2OSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIEhUTUxDYW52YXNFbGVtZW50
OjpnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUsCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29sIEhUTUxDYW52YXNFbGVtZW50Ojpp
c1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQotewotICAgIHJldHVybiB0eXBlID09ICJn
cHUiOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29u
dGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBl
LCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKLSAgICBBU1NFUlQoIW1f
Y29udGV4dCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJHUFVFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgbV9jb250ZXh0ID0gR1BVQ2FudmFz
Q29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAobV9jb250ZXh0KSB7Ci0gICAgICAgIC8v
IE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdl
dCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgotICAgICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXll
ckNvbXBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUNhbnZh
c0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0g
ICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5
cGUpKTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLndlYkdQVUVuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRl
eHQtPmlzV2ViR1BVKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKCFtX2Nv
bnRleHQpCi0gICAgICAgIHJldHVybiBjcmVhdGVDb250ZXh0V2ViR1BVKHR5cGUpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsKLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6Omlz
Qml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICByZXR1cm4gdHlw
ZSA9PSAiYml0bWFwcmVuZGVyZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCmluZGV4IGY2NzhmMGVkYTNkOTI1NDZiNjUxMWZjYzA4MjlkM2FkYjg4NjE5M2IuLjBkZDE5
MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFlODk3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTg5LDEyICs4OSw2IEBAIHB1YmxpYzoKICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsgfSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShX
RUJHUFUpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAg
IEdQVUNhbnZhc0NvbnRleHQqIGNyZWF0ZUNvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgR1BVQ2FudmFzQ29udGV4dCogZ2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKLSNl
bmRpZgotCiAgICAgc3RhdGljIGJvb2wgaXNCaXRtYXBSZW5kZXJlclR5cGUoY29uc3QgU3RyaW5n
Jik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBjcmVhdGVDb250ZXh0Qml0bWFw
UmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGlu
Z3MmJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0Qml0bWFw
UmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGlu
Z3MmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCmluZGV4IGM2
ZjFkMGZjNDBkZWUxNTQ3Y2ZmZDdjN2NjYzQ1ZTdhY2I3MmEwNjYuLmE2Nzc5ZmRhOTk1N2RlYmYw
OTIzYzcyNWFkMjNmZWIxMGM2ODQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaWRsCkBAIC0zMCw5ICszMCw2IEBAIHR5cGVkZWYgKAogI2VuZGlmCiAjaWYgZGVm
aW5lZChFTkFCTEVfV0VCR0wyKSAmJiBFTkFCTEVfV0VCR0wyCiAgICAgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dCBvcgotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVCi0gICAgR1BVQ2FudmFzQ29udGV4dCBvcgogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0IG9yIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgUmVuZGVy
aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaAppbmRleCA5MmMwM2MxOWU0ZjcxNjRlOGFkODdhODllYmQ2ZDUwNDNm
NWI1Y2IyLi43MTliNjMxZTAyNTI2ODdkMDM0YzZlNDFlMWU3ZmM5MjdkYjFjMDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC02NCw5ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDEoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1dlYkdMKCkgY29uc3QgeyByZXR1cm4gaXNX
ZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICB2aXJ0dWFs
IGJvb2wgaXNXZWJHUFUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCiAgICAgdmly
dHVhbCBib29sIGlzR1BVQmFzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGM1ODc0Yzcw
ODc0MTc3OTAyOTQ1OGZiOTJjZWNhNmQ0NmJmNmNhMGYuLjYxZjc2YzFjZDU4OGY2ODcxZTYwYjM1
ZWViMGJkNWVhZDVlYTVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkdQ
VUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkhUTUxD
YW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAtNjIsNyAr
NjEsNiBAQAogI2luY2x1ZGUgIkpTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmgiCiAjaW5jbHVkZSAi
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIk9mZnNjcmVl
bkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKQEAg
LTg1LDcgKzgzLDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5j
bHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5
T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4K
QEAgLTEwMSw1MyArOTgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLXN0YXRpYyBIVE1MQ2FudmFzRWxl
bWVudCogY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZShDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiBjb250ZXh0LCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoaXM8R1BVQ2FudmFz
Q29udGV4dD4oY29udGV4dCkpIHsKLSAgICAgICAgYXV0byYgY29udGV4dEdQVSA9IGRvd25jYXN0
PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpOwotICAgICAgICBpZiAoYXV0byogd2ViR1BVU3dh
cENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgaWYgKGF1dG8q
IGdwdVN3YXBDaGFpbiA9IHdlYkdQVVN3YXBDaGFpbi0+c3dhcENoYWluKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoZ3B1U3dhcENoYWluID09IGRldmljZS5kZXZpY2UoKS5zd2FwQ2hhaW4oKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRH
UFUuY2FudmFzQmFzZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmZG93bmNh
c3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2FudmFzQmFzZSgpKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0jZW5kaWYKLQogUmVmPEluc3BlY3RvckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFz
OjpjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoY29udGV4dCkpOwogfQogCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKFdl
YkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rv
ckNhbnZhcyhkZXZpY2UpKTsKLX0KLSNlbmRpZgotCiBJbnNwZWN0b3JDYW52YXM6Okluc3BlY3Rv
ckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIDogbV9pZGVudGlm
aWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQog
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAvLyBU
aGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90
IHRoZSA8Y2FudmFzPi4KLSAgICBBU1NFUlQoIWlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQp
KTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvckNhbnZhczo6SW5z
cGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNlKQotICAgIDogbV9pZGVudGlmaWVyKCJj
YW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9jb250ZXh0KGRldmljZSkKLXsKIH0KLSNlbmRpZgogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQoKSBjb25zdAogewpAQCAtMTY1LDE5ICsx
MjUsNiBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50
KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVt
ZW50Pihjb250ZXh0LmNhbnZhc0Jhc2UoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSAtPiBIVE1MQ2FudmFzRWxl
bWVudCogewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgICAgICAgICAgZm9yIChh
dXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5z
dGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQg
PSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBk
ZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE4NiwyMiArMTMzLDYgQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNhbnZhczo6
Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotV2ViR1BVRGV2aWNlKiBJbnNwZWN0b3JDYW52YXM6OmRldmljZUNvbnRleHQo
KSBjb25zdAotewotICAgIGlmIChhdXRvKiBkZXZpY2VXcmFwcGVyID0gV1RGOjpnZXRfaWY8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+PihtX2NvbnRleHQpKQotICAgICAgICBy
ZXR1cm4gJmRldmljZVdyYXBwZXItPmdldCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi1i
b29sIEluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIGRldmljZSA9IGRl
dmljZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZp
Y2UoY29udGV4dCwgKmRldmljZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZXh0LApAQCAt
MjA5LDEyICsxNDAsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJbnNwZWN0b3JDYW52YXM6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgY29udGV4
dCA9IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY2Fu
dmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgfSwKLSNpZiBFTkFC
TEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZp
Y2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdy
YXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gZGV2aWNlLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjQ1LDExICsxNzAsNiBAQCBKU0M6OkpTVmFsdWUgSW5zcGVjdG9yQ2FudmFzOjpy
ZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjKSBjb25zdAogI2VuZGlmCiAg
ICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKCk7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmlj
ZT4gZGV2aWNlV3JhcHBlcikgewotICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBkZXZpY2VXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAg
ICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUoKTsKQEAgLTI2NCwyMSArMTg0LDYgQEAgSGFz
aFNldDxFbGVtZW50Kj4gSW5zcGVjdG9yQ2FudmFzOjpjbGllbnROb2RlcygpIGNvbnN0CiAgICAg
ICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdyYXBwZXIuZ2V0KCk7CiAgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCkuY3NzQ2FudmFzQ2xpZW50cygpOwogICAgICAg
ICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAgIGF1dG8mIGRl
dmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0KLSAgICAgICAgICAgIEhhc2hTZXQ8RWxlbWVu
dCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkg
fTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2Uo
KmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjYW52YXNFbGVtZW50Q2xpZW50cy5hZGQoY2FudmFzRWxlbWVudCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnRDbGll
bnRzOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8
RWxlbWVudCo+KCk7CkBAIC0zMTcsNyArMjIyLDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJl
c2V0UmVjb3JkaW5nRGF0YSgpCiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgp
OwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRp
bmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGNvbnRleHQtPnNldEhhc0FjdGl2ZUluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQpAQCAtODQ0LDcgKzc0OCw2IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvCiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwog
ICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdz
IGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGlmIChpczxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQ+KGNvbnRleHQpICYmIHNob3VsZFNuYXBzaG90Qml0bWFwUmVuZGVyZXJBY3Rpb24obmFtZSkp
CiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVlOwpAQCAtOTI4LDExICs4MzEsNiBAQCBS
ZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0
Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFtdIChzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsKLSAgICAgICAgICAgIHJldHVybiBQ
cm90b2NvbDo6Q2FudmFzOjpDb250ZXh0VHlwZTo6V2ViR1BVOwotICAgICAgICB9LAotI2VuZGlm
CiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk5NiwyOCArODk0LDYg
QEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9i
amVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgW10gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSAtPiBDb250ZXh0
QXR0cmlidXRlc1R5cGUgewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBl
ci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBvcHRpb25zID0gZGV2aWNlLmFk
YXB0ZXIoKS5vcHRpb25zKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbnRleHRBdHRyaWJ1
dGVzUGF5bG9hZCA9IFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUo
KQotICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChj
b25zdCBhdXRvJiBwb3dlclByZWZlcmVuY2UgPSBvcHRpb25zLT5wb3dlclByZWZlcmVuY2UpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwb3dlclByZWZlcmVuY2UudmFsdWUoKSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldFBvd2Vy
UHJlZmVyZW5jZSgibG93LXBvd2VyIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dEF0dHJpYnV0ZXNQYXlsb2Fk
LT5zZXRQb3dlclByZWZlcmVuY2UoImhpZ2gtcGVyZm9ybWFuY2UiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0OSw3ICs5
MjUsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6UmVjb3JkaW5nPiBJbnNwZWN0b3JDYW52
YXM6OnJlbGVhc2VPYmplY3RGb3JSZWNvcmRpbmcoKQogCiAgICAgYXV0byogY29udGV4dCA9IGNh
bnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBj
YW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKICAgICBQcm90b2NvbDo6UmVjb3Jk
aW5nOjpUeXBlIHR5cGU7CiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oY29u
dGV4dCkpCkBAIC0xMjgxLDcgKzExNTYsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5p
dGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3Rvcjog
Q2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAg
IGF1dG8gaW5pdGlhbFN0YXRlUGF5bG9hZCA9IFByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxT
dGF0ZTo6Y3JlYXRlKCkucmVsZWFzZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmgKaW5kZXggOGE0N2RlYzI1YWQ2Yzg4MzEzYzdkNGFkNmYyNTA5NjFjMDA2
MmVmZi4uNmE5OWVjZmY0N2I1ODBlYzRjNjk2MTAxMGZkNjUwMWZkYTM1MzY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaApAQCAtMzYsMTAgKzM2LDYgQEAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CkBAIC02MCwy
MCArNTYsMTIgQEAgY2xhc3MgVHlwZWRPTUNTU0ltYWdlVmFsdWU7CiBjbGFzcyBJbnNwZWN0b3JD
YW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JDYW52YXM+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZhcz4gY3JlYXRlKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9y
Q2FudmFzPiBjcmVhdGUoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYKIAogICAgIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzQ29udGV4dCgpIGNvbnN0OwogICAgIEhUTUxDYW52
YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIFdlYkdQVURldmljZSogZGV2aWNlQ29udGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaXNEZXZp
Y2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsKLSNlbmRp
ZgotCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc29sdmVDb250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKQEAgLTExNSw5ICsxMDMsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUo
V0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyhXZWJHUFVEZXZpY2UmKTsKLSNlbmRpZgogCiAg
ICAgdm9pZCBhcHBlbmRBY3Rpb25TbmFwc2hvdElmTmVlZGVkKCk7CiAKQEAgLTE1NSw5ICsxNDAs
NiBAQCBwcml2YXRlOgogCiAgICAgVmFyaWFudDwKICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4sCi0jZW5kaWYKICAgICAgICAg
TW9ub3N0YXRlCiAgICAgPiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzEyMTUyMzA3MWEw
MjY4ODhjYmQ2MDgwMzFhZDE1ZGM4NWFmMTcxOS4uZmUyMDZhZWEzNWU2NzkzM2UyMDE5ZmM1YWYx
ZTkzYWZkYTBlMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJX
ZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5o
IgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCkBA
IC04MCwxMCArNzksNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
ay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtMTEyMiw0MyArMTExNyw2IEBA
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZpY2Um
IGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+ZGlkQ3JlYXRl
V2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGF1dG8qIGNh
bnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAg
ICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBHUFVDYW52YXNDb250
ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBp
ZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNB
Z2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihjb250
ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2aWNlLCBXZWJHUFVQaXBlbGluZSYgcGlw
ZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdl
YkdQVVBpcGVsaW5lKGRldmljZSwgcGlwZWxpbmUpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewot
ICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENh
bnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT53aWxsRGVzdHJveVdlYkdQVVBpcGVs
aW5lKHBpcGVsaW5lKTsKLX0KLQotSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYgZGV2aWNlKQotewot
ICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmljZS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotfQotI2VuZGlmCi0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRl
ZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBpZiAoYXV0byogYW5pbWF0aW9u
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nQW5pbWF0aW9uQWdlbnQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAppbmRleCA3ZDVlN2Q1N2JmOTExZmRkZjkwZWQ0MDBhMjI1YWZhMDgzZTZjODcxLi4zMWYwNWM1
MGY4MDVkYjU3OWI4YzkzMGJjOTBiOWY2MWE5MmZhYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC01OSwxMSArNTks
NiBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNs
YXNzIENvbnNvbGVNZXNzYWdlOwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwpAQCAtMTA0LDExICs5
OSw2IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgV2ViR0xQcm9n
cmFtOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotY2xhc3MgV2ViR1BVRGV2aWNlOwot
Y2xhc3MgV2ViR1BVU3dhcENoYWluOwotI2VuZGlmCi0KIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUg
OiB1aW50OF90OwogCiBzdHJ1Y3QgQ29tcHV0ZWRFZmZlY3RUaW1pbmc7CkBAIC0zMDMsMTMgKzI5
Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICAgICBzdGF0aWMgYm9v
bCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBX
ZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGljIHZv
aWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lk
IHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lk
IHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYsIFdlYkdQVVN3YXBDaGFp
biYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmlj
ZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQ
aXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCB3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVm
ZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZShX
ZWJBbmltYXRpb24mKTsKQEAgLTUxMywxNCArNDk2LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2Vi
R0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJHUFVEZXZpY2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
RGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdQVURldmlj
ZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBHUFVDYW52YXNDb250ZXh0JiwgV2ViR1BVU3dhcENoYWluJik7Ci0gICAg
c3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyB2b2lkIHdp
bGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVQ
aXBlbGluZSYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzKFdlYkdQVURldmljZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCB3aWxsQXBw
bHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBLZXlm
cmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICBzdGF0aWMgdm9pZCBkaWRD
aGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0
aW9uJik7CkBAIC0xNDc1LDQzICsxNDUwLDYgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0K
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYgZGV2aWNlKQot
ewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRv
KiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmljZSkpCi0gICAgICAgIGRpZENyZWF0
ZVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZShXZWJHUFVEZXZp
Y2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsK
LSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2UpKQotICAg
ICAgICB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNlKTsKLX0KLQot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENo
YWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUsIFdlYkdQVVN3YXBDaGFpbiYgbmV3U3dh
cENoYWluKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAg
IGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHRHUFUuY2FudmFz
QmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgIHdpbGxDb25maWd1cmVT
d2FwQ2hhaW5JbXBsKCphZ2VudHMsIGNvbnRleHRHUFUsIG5ld1N3YXBDaGFpbik7Ci19Ci0KLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxp
bmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2UpKQotICAgICAgICBkaWRDcmVhdGVXZWJH
UFVQaXBlbGluZUltcGwoKmFnZW50cywgZGV2aWNlLCBwaXBlbGluZSk7Ci19Ci0KLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShX
ZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMo
cGlwZWxpbmUuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgd2lsbERlc3Ryb3lX
ZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgcGlwZWxpbmUpOwotfQotI2VuZGlmCi0KIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3Qo
RWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRp
bWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtLmNwcAppbmRleCA1NGVkODQwYmUwMTgyN2QxNzJhNGY4ZjliMzFiOTQ0MDY2NWE3
NzcwLi5hMzBlMjE2NDNhMTU3YTgyYzVkZDdlNWI0ZDg1ODQwYjc0ZmE1MDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbS5oIgogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQor
I2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhcy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtNDIsMTUgKzQyLDYg
QEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5o
IgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVBp
cGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02MiwxMyArNTMsNiBAQCBSZWY8SW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFdlYkdMUHJvZ3Jh
bSYgcHJvZ3JhbQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmPEluc3BlY3Rv
clNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmNyZWF0ZShXZWJHUFVQaXBl
bGluZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclNoYWRlclByb2dyYW0ocGlwZWxpbmUsIGlu
c3BlY3RvckNhbnZhcykpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiAgICAgOiBtX2lkZW50aWZp
ZXIoInByb2dyYW06IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQpA
QCAtNzksMTYgKzYzLDYgQEAgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3RvckMKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvclNoYWRlclByb2dyYW06Okluc3BlY3RvclNoYWRl
clByb2dyYW0oV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lLCBJbnNwZWN0b3JDYW52YXMmIGluc3Bl
Y3RvckNhbnZhcykKLSAgICA6IG1faWRlbnRpZmllcigicGlwZWxpbmU6IiArIElkZW50aWZpZXJz
RmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwgbV9jYW52YXMoaW5zcGVjdG9yQ2Fu
dmFzKQotICAgICwgbV9wcm9ncmFtKHBpcGVsaW5lKQotewotICAgIEFTU0VSVChtX2NhbnZhcy5k
ZXZpY2VDb250ZXh0KCkpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFBy
b2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06OnByb2dyYW0oKSBjb25zdAogewpAQCAtOTgs
MTUgKzcyLDYgQEAgV2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFt
KCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVdlYkdQVVBpcGVsaW5l
KiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwaXBlbGluZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGF1
dG8qIHBpcGVsaW5lV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
V2ViR1BVUGlwZWxpbmU+PihtX3Byb2dyYW0pKQotICAgICAgICByZXR1cm4gJnBpcGVsaW5lV3Jh
cHBlci0+Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShXRUJHTCkKIHN0YXRpYyBXZWJHTFNoYWRlciogc2hhZGVyRm9yVHlwZShXZWJHTFByb2dyYW0m
IHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlKQogewpAQCAtMTI3LDMxICs5Miw2IEBAIHN0YXRpYyBXZWJHTFNoYWRlciogc2hhZGVyRm9y
VHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhCiB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1zdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1v
ZHVsZT4gc2hhZGVyRm9yVHlwZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQotewotICAgIHN3aXRjaCAo
c2hhZGVyVHlwZSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFk
ZXJUeXBlOjpDb21wdXRlOgotICAgICAgICBpZiAoaXM8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihw
aXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVQ29tcHV0ZVBpcGVs
aW5lPihwaXBlbGluZSkuY29tcHV0ZVNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpGcmFn
bWVudDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkpCi0g
ICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVUmVuZGVyUGlwZWxpbmU+KHBpcGVsaW5l
KS5mcmFnbWVudFNoYWRlcigpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpWZXJ0ZXg6Ci0gICAgICAg
IGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkudmVydGV4U2hhZGVy
KCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotI2VuZGlmCi0KIFN0cmluZyBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcHJvZ3JhbSwKQEAgLTE2MiwxNyArMTAyLDkgQEAgU3RyaW5nIEluc3BlY3RvclNoYWRl
clByb2dyYW06OnJlcXVlc3RTaGFkZXJTb3VyY2UoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjoKICAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVyLT5nZXRTb3VyY2UoKTsKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJH
UFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGluZT4g
cGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAgICAgICAgICBhdXRvJiBwaXBlbGluZSA9IHBpcGVsaW5l
V3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHNoYWRlciA9IHNoYWRlckZvclR5
cGUocGlwZWxpbmUsIHNoYWRlclR5cGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBzaGFkZXIt
PnNvdXJjZSgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9LAogI2Vu
ZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSB7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yMDEsMjQg
KzEzMyw5IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6dXBkYXRlU2hhZGVyKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBp
cGVsaW5lV3JhcHBlcikgewotICAgICAgICAgICAgYXV0byYgcGlwZWxpbmUgPSBwaXBlbGluZVdy
YXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoYXV0byogZGV2aWNlID0gbV9jYW52YXMuZGV2
aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBpcGVsaW5lLmNsb25lU2hhZGVy
TW9kdWxlcygqZGV2aWNlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFkZXIg
PSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJUeXBlKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZGVyLT51cGRhdGUoKmRldmljZSwgc291cmNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChwaXBlbGluZS5yZWNvbXBpbGUoKmRldmljZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25vc3RhdGUpIHsKLSNpZiBFTkFCTEUo
V0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIyOCwzMSArMTQ1LDE1IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6dXBkYXRl
U2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwCiAKIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclBy
b2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSgpCiB7Ci0gICAgYm9vbCBzaGFyZXNW
ZXJ0ZXhGcmFnbWVudFNoYWRlciA9IGZhbHNlOwotCiAgICAgdXNpbmcgUHJvZ3JhbVR5cGVUeXBl
ID0gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBl
PjsKICAgICBhdXRvIHByb2dyYW1UeXBlID0gV1RGOjpzd2l0Y2hPbihtX3Byb2dyYW0sCiAjaWYg
RU5BQkxFKFdFQkdMKQogICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQ
cm9ncmFtPikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpSZW5kZXI7CiAgICAgICAgIH0sCi0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgLT4gUHJvZ3JhbVR5cGVUeXBl
IHsKLSAgICAgICAgICAgIGF1dG8mIHBpcGVsaW5lID0gcGlwZWxpbmVXcmFwcGVyLmdldCgpOwot
ICAgICAgICAgICAgaWYgKGlzPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1U
eXBlOjpDb21wdXRlOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBpcGVsaW5lPihw
aXBlbGluZSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJQaXBlbGluZSA9IGRvd25j
YXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHJlbmRlclBpcGVsaW5lLnZlcnRleFNoYWRlcigpID09IHJlbmRlclBpcGVsaW5lLmZyYWdtZW50
U2hhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAgIHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVy
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2Fu
dmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwKICNlbmRpZgogICAgICAgICBbJl0gKE1vbm9z
dGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNjgsMTEg
KzE2OSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclByb2dyYW0+
IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqCiAgICAgICAgIC5zZXRQcm9ncmFtVHlw
ZShwcm9ncmFtVHlwZS52YWx1ZSgpKQogICAgICAgICAuc2V0Q2FudmFzSWQobV9jYW52YXMuaWRl
bnRpZmllcigpKQogICAgICAgICAucmVsZWFzZSgpOwotICAgIGlmIChzaGFyZXNWZXJ0ZXhGcmFn
bWVudFNoYWRlcikKLSAgICAgICAgcGF5bG9hZC0+c2V0U2hhcmVzVmVydGV4RnJhZ21lbnRTaGFk
ZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHBheWxvYWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clNoYWRlclByb2dyYW0uaAppbmRleCBjY2M3M2NlZjM3NDY3MDY3MGQ1OTZhOTNiMzJmZTA5YTU1
ZDQzNWJiLi5jOTJkZWJiNzdjYzQ1MThjNDE1YmQzYWZiMzAzYjJmMzcxNGMyOGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTQxLDE4ICs0MSwxMSBAQCBjbGFzcyBXZWJHTFByb2dyYW07CiBjbGFzcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotY2xhc3MgV2Vi
R1BVUGlwZWxpbmU7Ci0jZW5kaWYKLQogY2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclNoYWRlclByb2dyYW0+IHsKIHB1YmxpYzoK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFt
PiBjcmVhdGUoV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gY3Jl
YXRlKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2FudmFzJik7Ci0jZW5kaWYKIAogICAgIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIEluc3BlY3RvckNhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9jYW52YXM7IH0K
QEAgLTYwLDkgKzUzLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICBXZWJHTFBy
b2dyYW0qIHByb2dyYW0oKSBjb25zdDsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAg
V2ViR1BVUGlwZWxpbmUqIHBpcGVsaW5lKCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBy
ZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlw
ZSk7CiAgICAgYm9vbCB1cGRhdGVTaGFkZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpT
aGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CkBAIC03OSw5ICs2OSw2IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR0xQ
cm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmLCBJbnNwZWN0b3JDYW52
YXMmKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBJbnNwZWN0b3JD
YW52YXMmIG1fY2FudmFzOwpAQCAtODksOSArNzYsNiBAQCBwcml2YXRlOgogICAgIFZhcmlhbnQ8
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdM
UHJvZ3JhbT4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiwKICNlbmRpZgogICAgICAgICBXVEY6Ok1vbm9z
dGF0ZQogICAgID4gbV9wcm9ncmFtOwpAQCAtMTAyLDQgKzg2LDQgQEAgcHJpdmF0ZToKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYTQw
MmMzYjk4NDAzMGNmMGY4ZGQ2NWI2ZTEzYjkwOGZiZmJmOTZhMy4uNTlmNGQzOWI1YTcxOWUzZTE3
ZTU3MzhmMmM2N2VmYzM4ZWFlNDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjgsMTEgKzY3LDYgQEAKICNpbmNsdWRlICJXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIK
ICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1
ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CkBAIC0xMDAsOSArOTQs
OSBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQu
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5z
cGVjdGVkUGFnZSkKICAgICAsIG1fY2FudmFzRGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0
b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCkKLSNpZiBFTkFCTEUoV0VC
R0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICwgbV9wcm9ncmFt
RGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ry
b3llZFRpbWVyRmlyZWQpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIHsKIH0KIApAQCAtMTQxLDI3ICsxMzUsMTIgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJs
ZSgpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6aW5zdGFuY2VzTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byogY29udGV4dCA6IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAg
ICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQiIGZvciBXZWJHUFUgaXMgdGhlIGBXZWJH
UFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgotICAgICAgICAgICAgaWYgKGlzPEdQVUNhbnZh
c0NvbnRleHQ+KGNvbnRleHQpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCiAKICAgICAgICAgICAgIGlmIChleGlzdHNJbkN1cnJlbnRQYWdlKGNv
bnRleHQtPmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogICAgICAgICAg
ICAgICAgIGJpbmRDYW52YXMoKmNvbnRleHQsIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIAot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BV
RGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBX
ZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBpZiAoZXhpc3RzSW5DdXJy
ZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgICAgICAg
ICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7CiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2soKSB9OwpAQCAtMTcyLDE2
ICsxNTEsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZW5hYmxlKCkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHUFVQaXBlbGlu
ZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGZvciAoYXV0byYgW3BpcGVsaW5lLCBkZXZp
Y2VdIDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICBpZiAoZGV2
aWNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpICYmIHBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgZGlkQ3JlYXRlV2Vi
R1BVUGlwZWxpbmUoKmRldmljZSwgKnBpcGVsaW5lKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjk3LDcgKzI2
Niw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50
OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAKICAgICBhdXRvKiBjb250ZXh0ID0gaW5z
cGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZh
cyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiAKQEAgLTMyNCw3ICsy
OTIsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2NvbAogCiAgICAgYXV0byogY29udGV4dCA9IGlu
c3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwogCi0gICAgLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52
YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCkBAIC0zMzYsNyAr
MzAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJvdG9jb2wKICAgICByZXR1cm4geyB9OwogfQogCi0j
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVl
c3RTaGFkZXJTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiBwcm9ncmFt
SWQsIFByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSkKIHsKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zNjYsNyArMzMzLDYgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRl
cihjb25zdCBQcm90b2NvbDoKICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgRU5BQkxFKFdFQkdM
KQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNl
dFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQm
IHByb2dyYW1JZCwgYm9vbCBkaXNhYmxlZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcg
ZXJyb3JTdHJpbmc7CkBAIC0zOTMsNyArMzU5LDYgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRlclByb2dyYW1IaWdobGlnaHRlZCgK
ICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKQEAgLTQ1MCwxNyArNDE1LDYgQEAg
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5KENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGNvbnRleHQKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBp
bnNwZWN0b3JDYW52YXM7CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52
YXNDb250ZXh0Pihjb250ZXh0KSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2lkZW50
aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZW0t
PmlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGlu
c3BlY3RvckNhbnZhcyA9IGl0ZW07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICghaW5zcGVjdG9yQ2FudmFz
KQogICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNvbnRleHQp
OwogCkBAIC02MTcsNjkgKzU3MSw2IEBAIGJvb2wgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmlzV2Vi
R0xQcm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogfQogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUpCi12b2lkIEluc3BlY3RvckNhbnZh
c0FnZW50OjpkaWRDcmVhdGVXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0g
ICAgaWYgKGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNlKSkgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJpbmRDYW52YXMoZGV2
aWNlLCB0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lX
ZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgYXV0byBpbnNwZWN0b3JD
YW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRldmljZSk7Ci0gICAgQVNTRVJUKGluc3BlY3Rv
ckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHVuYmluZENhbnZhcygqaW5zcGVjdG9yQ2FudmFzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbihHUFVDYW52YXNDb250ZXh0JiBjb250
ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBDaGFpbikKLXsKLSAgICBhdXRvIG5vdGlm
eURldmljZUZvclN3YXBDaGFpbiA9IFsmXSAoV2ViR1BVU3dhcENoYWluJiB3ZWJHUFVTd2FwQ2hh
aW4pIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JDYW52YXMgOiBtX2lkZW50aWZpZXJU
b0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGRldmlj
ZSA9IGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGRldmljZS0+ZGV2aWNlKCkuc3dhcENoYWluKCkgPT0gd2ViR1BVU3dhcENoYWluLnN3YXBD
aGFpbigpKQotICAgICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2xpZW50
Tm9kZXNDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAoYXV0byogZXhpc3RpbmdTd2FwQ2hhaW4g
PSBjb250ZXh0R1BVLnN3YXBDaGFpbigpKQotICAgICAgICBub3RpZnlEZXZpY2VGb3JTd2FwQ2hh
aW4oKmV4aXN0aW5nU3dhcENoYWluKTsKLQotICAgIG5vdGlmeURldmljZUZvclN3YXBDaGFpbihu
ZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVX
ZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVs
aW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhk
ZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAgIGlmICghaW5zcGVjdG9y
Q2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQocGlwZWxpbmUuaXNWYWxpZCgp
KTsKLQotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbVJlZiA9IEluc3BlY3RvclNoYWRlclByb2dy
YW06OmNyZWF0ZShwaXBlbGluZSwgKmluc3BlY3RvckNhbnZhcyk7Ci0gICAgYXV0byYgaW5zcGVj
dG9yUHJvZ3JhbSA9IGluc3BlY3RvclByb2dyYW1SZWYuZ2V0KCk7Ci0gICAgbV9pZGVudGlmaWVy
VG9JbnNwZWN0b3JQcm9ncmFtLnNldChpbnNwZWN0b3JQcm9ncmFtLmlkZW50aWZpZXIoKSwgV1RG
TW92ZShpbnNwZWN0b3JQcm9ncmFtUmVmKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBy
b2dyYW1DcmVhdGVkKGluc3BlY3RvclByb2dyYW0uYnVpbGRPYmplY3RGb3JTaGFkZXJQcm9ncmFt
KCkpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBp
cGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBhdXRvIGluc3BlY3RvclBy
b2dyYW0gPSBmaW5kSW5zcGVjdG9yUHJvZ3JhbShwaXBlbGluZSk7Ci0gICAgaWYgKCFpbnNwZWN0
b3JQcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bmJpbmRQcm9ncmFtKCppbnNwZWN0
b3JQcm9ncmFtKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAjZGVmaW5lIFBST0NF
U1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVudFR5cGUpIFwKIHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
c0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVu
ZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50KSBcCiB7IFwKQEAgLTcxNSw3ICs2
MDYsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQwogCiAgICAgICAgICAgICAgICAgICAgIGF1
dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0NvbnRl
eHQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQp
OwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIw
MTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZv
ciBXZWJHUFVEZXZpY2UKIAogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzUmVuZGVyaW5n
Q29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUo
KmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwpAQCAtNzM4LDcgKzYyOCw2IEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9y
Q2FudmFzLCBQcm90CiB7CiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy5jYW52
YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2Fu
dmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAgICAgaWYgKCFpczxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpCiAgICAgICAgICYmICFpczxJbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQ+KGNvbnRleHQpCkBAIC03NzcsNyArNjY2LDcgQEAgdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCgpCiAgICAgbV9yZW1vdmVkQ2Fu
dmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpw
cm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFtX3JlbW92ZWRQcm9ncmFt
SWRlbnRpZmllcnMuc2l6ZSgpKQpAQCAtNzg4LDcgKzY3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZpcmVkKCkKIAogICAgIG1fcmVtb3ZlZFBy
b2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwogfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKIHZvaWQgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnJlc2V0KCkKIHsKQEAgLTgwMiwxMiArNjkxLDEyIEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKICAgICBpZiAobV9jYW52YXNEZXN0cm95ZWRUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX2NhbnZhc0Rlc3Ryb3llZFRpbWVyLnN0b3AoKTsKIAotI2lm
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
bV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9yZW1vdmVkUHJv
Z3JhbUlkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAgaWYgKG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyLnN0b3AoKTsKLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKQogCiAgICAgbV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycy5jbGVhcigpOwogfQpA
QCAtODM2LDE4ICs3MjUsNiBAQCBJbnNwZWN0b3JDYW52YXMmIEluc3BlY3RvckNhbnZhc0FnZW50
OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleAogICAgIHJldHVybiBp
bnNwZWN0b3JDYW52YXM7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotSW5zcGVjdG9yQ2FudmFz
JiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZhcyhXZWJHUFVEZXZpY2UmIGRldmljZSwg
Ym9vbCBjYXB0dXJlQmFja3RyYWNlKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5z
cGVjdG9yQ2FudmFzOjpjcmVhdGUoZGV2aWNlKTsKLSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3Rv
ckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZh
cy5jb3B5UmVmKCkpOwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNhbnZhc0FkZGVkKGlu
c3BlY3RvckNhbnZhcy0+YnVpbGRPYmplY3RGb3JDYW52YXMoY2FwdHVyZUJhY2t0cmFjZSkpOwot
Ci0gICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQotCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2Fu
dmFzJiBpbnNwZWN0b3JDYW52YXMpCiB7CiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtODk1LDE4ICs3
NzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Zmlu
ZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbgogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNh
bnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNlKQotewot
ICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JD
YW52YXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29u
dGV4dCgpID09ICZkZXZpY2UpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQot
Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkK
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVuYmluZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbSYgaW5zcGVjdG9yUHJvZ3JhbSkKIHsKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IGlu
c3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpOwpAQCAtOTMxLDcgKzc5Nyw2IEBAIFJlZlB0cjxJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVj
dG9yUHJvZ3JhbShQcm90CiAgICAgcmV0dXJuIGluc3BlY3RvclByb2dyYW07CiB9CiAKLSNpZiBF
TkFCTEUoV0VCR0wpCiBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsK
ICAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dyYW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3Rv
clByb2dyYW0udmFsdWVzKCkpIHsKQEAgLTk0MiwxNiArODA3LDQgQEAgUmVmUHRyPEluc3BlY3Rv
clNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3Jh
bShXZWJHTFAKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpm
aW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgZm9y
IChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFt
LnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpbnNwZWN0b3JQcm9ncmFtLT5waXBlbGluZSgpID09
ICZwaXBlbGluZSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JQcm9ncmFtOwotICAgIH0K
LSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5oCmluZGV4IGQ3YmRlZjNjODQ0NTU1MjU1ZGM2ZDIyZjYyZjI3OTg3OTI2
ZDUzMjMuLjdmMTAxMmFhMmEyNGY2ODJjZjY4OTFkMTM2NmRkNGQyNjE1NzMwZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmgKQEAgLTQ0LDE5ICs0NCwxMSBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7Ci0jaWYg
RU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQotY2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbTsKICNpZiBFTkFCTEUoV0VCR0wpCitjbGFzcyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOwog
Y2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWNsYXNzIEdQVUNhbnZh
c0NvbnRleHQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVQaXBlbGluZTsKLWNs
YXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKIAogY2xhc3MgSW5zcGVjdG9yQ2FudmFz
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIsIHB1YmxpYyBDYW52YXNPYnNlcnZlciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEluc3BlY3RvckNhbnZhc0FnZW50PiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ2FudmFzQWdlbnQpOwpAQCAtODAsMTQgKzcyLDEyIEBA
IHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNl
dFJlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudChpbnQpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnRSZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZyYW1l
Q291bnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1lbW9yeUxpbWl0KTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BSZWNvcmRpbmcoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYpOwotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IHJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpD
YW52YXM6OlNoYWRlclR5cGUpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gdXBkYXRlU2hhZGVyKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZSk7Ci0jaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hhZGVyUHJvZ3JhbURpc2FibGVkKGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgYm9vbCBkaXNhYmxlZCk7
CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRTaGFkZXJQ
cm9ncmFtSGlnaGxpZ2h0ZWQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9n
cmFtSWQmLCBib29sIGhpZ2hsaWdodGVkKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAgICAgLy8gQ2FudmFzT2Jz
ZXJ2ZXIKICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwpAQCAtMTA5LDEzICs5OSw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQoV2ViR0xQcm9ncmFtJik7CiAgICAgYm9vbCBp
c1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2
aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2Vi
R1BVRGV2aWNlJik7Ci0gICAgdm9pZCB3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQVUNhbnZhc0Nv
bnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICB2b2lkIGRpZENyZWF0ZVdlYkdQVVBpcGVs
aW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgdm9pZCB3aWxsRGVzdHJv
eVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIKICNkZWZpbmUgUFJPQ0VTU19B
UkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUpIFwKQEAgLTEzNCwzMiArMTE3LDIxIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMmLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvciwgUmVjb3JkaW5nT3B0aW9ucyYm
ID0geyB9KTsKIAogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkVGltZXJGaXJlZCgpOwotI2lmIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9p
ZCBwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCByZXNl
dCgpOwogCiAgICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAg
SW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKFdlYkdQVURldmljZSYsIGJvb2wgY2FwdHVyZUJh
Y2t0cmFjZSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKICAgICB2b2lkIHVuYmluZENhbnZh
cyhJbnNwZWN0b3JDYW52YXMmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBhc3NlcnRJ
bnNwZWN0b3JDYW52YXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBmaW5kSW5zcGVj
dG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZpbmRJbnNwZWN0b3JDYW52YXMoV2ViR1BVRGV2
aWNlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCB1bmJpbmRQcm9ncmFt
KEluc3BlY3RvclNoYWRlclByb2dyYW0mKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkKTsKLSNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
UmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdM
UHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBmaW5kSW5zcGVjdG9yUHJvZ3JhbShX
ZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKQEAgLTE3MSwxMSArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnM7CiAgICAgVGltZXIgbV9jYW52YXNEZXN0cm95
ZWRUaW1lcjsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtPj4gbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtOwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVyczsKICAgICBUaW1lciBtX3Byb2dyYW1EZXN0cm95
ZWRUaW1lcjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2Fu
dmFzSWRlbnRpZmllcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vz
c1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5k
ZXggYzNhYWM1NGM1N2YyNDA3YjM4ZjAzNmQ4NjUxNWRmYjIwYWRiZjQ5MS4uZjE2MGM0NzIyNWQw
MTkxMWNjZmJiYzgzY2Y3MjQxZjdmMjhhNWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfRFJJVkVSX1BS
RVdBUk1JTkcpCiAjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiR1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODEsNyAr
ODAsNyBAQCB2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoR1BVX0RSSVZFUl9QUkVXQVJNSU5HKQotICAgIEdQVURldmljZTo6cHJld2Fy
bSgpOworICAgIHByZXdhcm1HUFUoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKaW5kZXggMDcwODQ3YzEzNGI1NjE2M2Y0YTA2MTM5Mzk4ZjAzYTA1NTlhODc4Yi4uODIz
NTg0M2ZhNTEyOTU1YzdjZWI1ZWZkZmNkZjkzZGU0YTU5ZTIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaApAQCAtMTIwLDcgKzEyMCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBN
KFZpZXdwb3J0cykgXAogICAgIE0oV2ViQXVkaW8pIFwKICAgICBNKFdlYkdMKSBcCi0gICAgTShX
ZWJHUFUpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwKICAgICBNKFhS
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDVhNjBiY2MxZTZiNTMy
YTYxZDQ4YWNjMzQ0YmJhYTJhZjhkMDE2ZGQuLjAyYTI2ZDU3YjU1ZWNhZGU0M2M1ZjJlZTM5NWY4
MzMyOTI2ODc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC01Nywx
MCArNTcsNiBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2ltcG9ydCAiV2ViR1BVTGF5
ZXIuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIkZvbnRB
bnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKQEAgLTIxOCwx
MSArMjE0LDYgQEAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxhdGYKICAgICBpZiAoW2xheWVyIGlzS2lu
ZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjsKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKFtsYXll
ciBpc0tpbmRPZkNsYXNzOltXZWJHUFVMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotI2VuZGlmCi0KICAgICByZXR1cm4gTGF5ZXJU
eXBlQ3VzdG9tOwogfQogCkBAIC0yNzUsNyArMjY2LDcgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckMKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycyBvciBXZWJHUFVMYXllcnMuCisgICAgICAgIC8vIFdlIGRv
bid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXll
cnMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxYTI4ZjczYTA4NjFkMTUyYjcxM2NlYjllOTMzMjgzY2E4MjZhNWQ3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR1BVU3dhcENo
YWluOwotfQotCi1AaW50ZXJmYWNlIFdlYkdQVUxheWVyIDogQ0FNZXRhbExheWVyIHsKLSAgICBX
ZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIF9zd2FwQ2hhaW47Ci0gICAgZmxvYXQgX2RldmljZVNjYWxl
RmFjdG9yOwotfQotCi1AcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29yZTo6R1BVU3dhcENoYWlu
KiBzd2FwQ2hhaW47Ci0KLS0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JT
cGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVy
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTIzODJlNGViYjJjMWYwMGY5YmJj
ZDM1ZTBlNjAyZGI5Y2E0NjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxh
eWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
V2ViR1BVTGF5ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVVN3YXBD
aGFpbi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLQotQGltcGxlbWVudGF0aW9u
IFdlYkdQVUxheWVyCi0KLUBzeW50aGVzaXplIHN3YXBDaGFpbiA9IF9zd2FwQ2hhaW47Ci0KLS0g
KGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotCi0gICAgLy8gRklYTUU6IFdl
YkdQVSAtIGhhbmRsZSByZXRpbmEgY29ycmVjdGx5LgotICAgIF9kZXZpY2VTY2FsZUZhY3RvciA9
IDE7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gX2Rldmlj
ZVNjYWxlRmFjdG9yOwotICAgIHNlbGYuY29sb3JzcGFjZSA9IFdlYkNvcmU6OnNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoQ0dJbWFnZVJlZilj
b3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFj
ZQotewotICAgIGlmICghX3N3YXBDaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUBl
bmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOTJmMTM0
NGI1NGIyMmI5ZTlkODFmMTkxNmZiZmIyMTIxMTgxNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJpbmRHcm91cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUg
IkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8
dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotCi11c2luZyBBcmd1bWVudEJ1ZmZlciA9
IHN0ZDo6cGFpcjxjb25zdCBQbGF0Zm9ybUJ1ZmZlciosIGNvbnN0IEdQVUJpbmRHcm91cEFsbG9j
YXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJj47Ci0KLWNsYXNzIEdQVUJpbmRHcm91cCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRHcm91cD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8R1BVQmluZEdyb3VwPiB0cnlDcmVhdGUoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYs
IEdQVUJpbmRHcm91cEFsbG9jYXRvciYpOwotCi0gICAgfkdQVUJpbmRHcm91cCgpOwotICAgIAot
ICAgIGNvbnN0IEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
eyBtX2FsbG9jYXRvci0+YXJndW1lbnRCdWZmZXIoKSwgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHMg
fTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiBib3VuZEJ1ZmZlcnMoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kQnVmZmVyczsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQ
VVRleHR1cmU+PiYgYm91bmRUZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRUZXh0dXJl
czsgfQotCi1wcml2YXRlOgotICAgIEdQVUJpbmRHcm91cChHUFVCaW5kR3JvdXBBbGxvY2F0b3I6
OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyYmLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImLCBIYXNoU2V0
PFJlZjxHUFVCdWZmZXI+PiYmLCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mJik7Ci0gICAgCi0g
ICAgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMgbV9hcmd1bWVu
dEJ1ZmZlck9mZnNldHM7Ci0gICAgUmVmPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gbV9hbGxvY2F0
b3I7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gbV9ib3VuZEJ1ZmZlcnM7Ci0gICAgSGFz
aFNldDxSZWY8R1BVVGV4dHVyZT4+IG1fYm91bmRUZXh0dXJlczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2Nh
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDMxOTdiZjMzMjgzMDIzMTQz
NDdiMzc4M2RhODc0YWY2MzU0MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRH
cm91cEFsbG9jYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1
ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotY2xhc3MgR1BVQmluZEdyb3VwQWxsb2NhdG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IGNyZWF0ZShHUFVFcnJvclNjb3BlcyYp
OwotCi0gICAgc3RydWN0IEFyZ3VtZW50QnVmZmVyT2Zmc2V0cyB7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IHZlcnRleDsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gZnJhZ21lbnQ7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IGNvbXB1dGU7Ci0gICAgfTsKLQotI2lmIFVT
RShNRVRBTCkKLSAgICBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2Nh
dGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRF
bmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKTsKLSNlbmRpZgot
Ci0gICAgdm9pZCB0cnlSZXNldCgpOwotCi0gICAgY29uc3QgUGxhdGZvcm1CdWZmZXIqIGFyZ3Vt
ZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudEJ1ZmZlci5nZXQoKTsgfQotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IEdQVUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3Bl
cyYpOwotCi0gICAgYm9vbCByZWFsbG9jYXRlKFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0KTsKLQot
ICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbV9hcmd1bWVudEJ1ZmZlcjsKLSAgICBQbGF0Zm9y
bUdQVUJ1ZmZlck9mZnNldCBtX2xhc3RPZmZzZXQgeyAwIH07Ci0KLSAgICBSZWY8R1BVRXJyb3JT
Y29wZXM+IG1fZXJyb3JTY29wZXM7Ci0gICAgaW50IG1fbnVtQmluZEdyb3VwcyB7IDAgfTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdy
b3VwQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJp
bmRHcm91cEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjM2EyMzY2
ODg3NTZhN2ZjY2U4YzM0M2UwZjVkZjYzYWZiMWFkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwQmluZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVk
ZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgR1BVQmluZGluZ1Jlc291cmNlID0gVmFyaWFudDxSZWY8Y29uc3Qg
R1BVU2FtcGxlcj4sIFJlZjxHUFVUZXh0dXJlPiwgR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0cnVj
dCBHUFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVUJp
bmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cERlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwOGE5NzhhOWU4NmExZWI5NmUyZmNmZGU5NDViY2Zj
YWVhZDUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAgICBSZWY8Y29uc3QgR1BVQmluZEdyb3Vw
TGF5b3V0PiBsYXlvdXQ7Ci0gICAgVmVjdG9yPEdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCaW5kR3JvdXBMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxNmZj
OTg0ODFlMWM0NzgyNWY1MDgzZWZmZTI2ZGNlODY2YTg1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQmluZEdyb3VwTGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVBsYXRm
b3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi1jbGFzcyBH
UFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCaW5kR3JvdXBMYXlvdXQ+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3Jl
YXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Im
KTsKLQotICAgIHN0cnVjdCBVbmlmb3JtQnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQgaW50ZXJu
YWxMZW5ndGhOYW1lOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgRHluYW1pY1VuaWZvcm1CdWZmZXIg
ewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0
cnVjdCBTYW1wbGVyIHsKLSAgICB9OwotCi0gICAgc3RydWN0IFNhbXBsZWRUZXh0dXJlIHsKLSAg
ICB9OwotCi0gICAgc3RydWN0IFN0b3JhZ2VCdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRl
cm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBEeW5hbWljU3RvcmFnZUJ1ZmZl
ciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAg
dXNpbmcgSW50ZXJuYWxCaW5kaW5nRGV0YWlscyA9IFZhcmlhbnQ8VW5pZm9ybUJ1ZmZlciwgRHlu
YW1pY1VuaWZvcm1CdWZmZXIsIFNhbXBsZXIsIFNhbXBsZWRUZXh0dXJlLCBTdG9yYWdlQnVmZmVy
LCBEeW5hbWljU3RvcmFnZUJ1ZmZlcj47Ci0KLSAgICBzdHJ1Y3QgQmluZGluZyB7Ci0gICAgICAg
IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgZXh0ZXJuYWxCaW5kaW5nOwotICAgICAgICB1bnNp
Z25lZCBpbnRlcm5hbE5hbWU7Ci0gICAgICAgIEludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJu
YWxCaW5kaW5nRGV0YWlsczsKLSAgICB9OwotCi0gICAgdXNpbmcgQmluZGluZ3NNYXBUeXBlID0g
SGFzaE1hcDx1aW50NjRfdCwgQmluZGluZywgV1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+OwotICAgIGNvbnN0IEJpbmRp
bmdzTWFwVHlwZSYgYmluZGluZ3NNYXAoKSBjb25zdCB7IHJldHVybiBtX2JpbmRpbmdzTWFwOyB9
Ci0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqdmVydGV4RW5jb2Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50
RW5jb2RlciAqZnJhZ21lbnRFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudEVuY29k
ZXIuZ2V0KCk7IH0KLSAgICBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wdXRlRW5jb2Rlci5nZXQoKTsgfQotI2VuZGlmIC8vIFVTRShNRVRB
TCkKLQotcHJpdmF0ZToKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVQmluZEdyb3VwTGF5b3V0KEJp
bmRpbmdzTWFwVHlwZSYmLCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIHZlcnRleCwg
UmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBmcmFnbWVudCwgUmV0YWluUHRyPE1UTEFy
Z3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKTsKLQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVu
Y29kZXI+IG1fdmVydGV4RW5jb2RlcjsKLSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVy
PiBtX2ZyYWdtZW50RW5jb2RlcjsKLSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBt
X2NvbXB1dGVFbmNvZGVyOwotI2VuZGlmIC8vIFVTRShNRVRBTCkKLSAgICBjb25zdCBCaW5kaW5n
c01hcFR5cGUgbV9iaW5kaW5nc01hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU0MTMzYWMyZTlhY2QxNWMyMGM2MWM4MDAwMTllOWI5OGJkNWZkOGEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUJs
ZW5kRmFjdG9yIHsKLSAgICBaZXJvLAotICAgIE9uZSwKLSAgICBTcmNDb2xvciwKLSAgICBPbmVN
aW51c1NyY0NvbG9yLAotICAgIFNyY0FscGhhLAotICAgIE9uZU1pbnVzU3JjQWxwaGEsCi0gICAg
RHN0Q29sb3IsCi0gICAgT25lTWludXNEc3RDb2xvciwKLSAgICBEc3RBbHBoYSwKLSAgICBPbmVN
aW51c0RzdEFscGhhLAotICAgIFNyY0FscGhhU2F0dXJhdGVkLAotICAgIEJsZW5kQ29sb3IsCi0g
ICAgT25lTWludXNCbGVuZENvbG9yLAotfTsKLQotZW51bSBjbGFzcyBHUFVCbGVuZE9wZXJhdGlv
biB7Ci0gICAgQWRkLAotICAgIFN1YnRyYWN0LAotICAgIFJldmVyc2VTdWJ0cmFjdCwKLSAgICBN
aW4sCi0gICAgTWF4LAotfTsKLQotc3RydWN0IEdQVUJsZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BV
QmxlbmRGYWN0b3Igc3JjRmFjdG9yOwotICAgIEdQVUJsZW5kRmFjdG9yIGRzdEZhY3RvcjsKLSAg
ICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVyYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTE3NTU5NDcxMzMwMmQwOTM3Y2RlODQ4MWU1YTM0MzhmYzJmNzdkZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BV
QnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVUJ1ZmZlcjo6UGVuZGluZ01hcHBpbmdDYWxsYmFjazo6UGVuZGluZ01hcHBpbmdDYWxsYmFj
ayhNYXBwaW5nQ2FsbGJhY2smJiBwZW5kaW5nKQotICAgIDogY2FsbGJhY2soV1RGTW92ZShwZW5k
aW5nKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1YTVjM2FmYzRjODYyMmVk
MzYwNGRhZmVmMjM2Y2Q3MjI1ZTJjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNr
LmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5
cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1
ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFz
cyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLWVudW0g
Y2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uOwotCi1jbGFzcyBHUFVCdWZmZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVCdWZmZXI+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsK
LSAgICAgICAgTWFwcGVkLAotICAgICAgICBVbm1hcHBlZCwKLSAgICAgICAgRGVzdHJveWVkCi0g
ICAgfTsKLQotICAgIH5HUFVCdWZmZXIoKTsKLQotICAgIHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVy
PiB0cnlDcmVhdGUoR1BVRGV2aWNlJiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1
ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIFBsYXRmb3JtQnVmZmVy
KiBwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCk7
IH0KLSAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsg
fQotICAgIGJvb2wgaXNDb3B5U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlE
ZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNh
Z2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24pOyB9Ci0gICAgYm9vbCBpc0luZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkluZGV4KTsg
fQotICAgIGJvb2wgaXNWZXJ0ZXgoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQ
VUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4KTsgfQotICAgIGJvb2wgaXNVbmlmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZv
cm0pOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRh
aW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6U3RvcmFnZSk7IH0KLSAgICBib29sIGlzUmVhZE9u
bHkoKSBjb25zdDsKLSAgICBib29sIGlzTWFwcGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VzYWdl
LmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVy
VXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pOyB9Ci0gICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Vc2FnZTsgfQotICAgIFN0YXRlIHN0YXRlKCkgY29u
c3Q7Ci0KLSAgICBKU0M6OkFycmF5QnVmZmVyKiBtYXBPbkNyZWF0aW9uKCk7Ci0KLSNpZiBVU0Uo
TUVUQUwpCi0gICAgdm9pZCBjb21tYW5kQnVmZmVyQ29tbWl0dGVkKE1UTENvbW1hbmRCdWZmZXIg
Kik7Ci0gICAgdm9pZCBjb21tYW5kQnVmZmVyQ29tcGxldGVkKCk7Ci0jZW5kaWYKLQotICAgIHVz
aW5nIE1hcHBpbmdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChKU0M6OkFycmF5QnVmZmVy
Kik+OwotICAgIHZvaWQgcmVnaXN0ZXJNYXBwaW5nQ2FsbGJhY2soTWFwcGluZ0NhbGxiYWNrJiYs
IGJvb2wsIEdQVUVycm9yU2NvcGVzJik7Ci0gICAgdm9pZCB1bm1hcChHUFVFcnJvclNjb3Blcyop
OwotICAgIHZvaWQgZGVzdHJveShHUFVFcnJvclNjb3BlcyopOwotCi1wcml2YXRlOgotICAgIHN0
cnVjdCBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ01h
cHBpbmdDYWxsYmFjaz4gewotICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdNYXBwaW5nQ2FsbGJh
Y2s+IGNyZWF0ZShNYXBwaW5nQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGVuZGluZ01hcHBpbmdDYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgTWFwcGluZ0NhbGxiYWNrIGNhbGxi
YWNrOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBw
aW5nQ2FsbGJhY2smJik7Ci0gICAgfTsKLQotICAgIEdQVUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNt
YXJ0UHRyJiYsIEdQVURldmljZSYsIHNpemVfdCwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpG
bGFncz4sIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbik7Ci0gICAgc3RhdGljIGJvb2wgdmFsaWRhdGVC
dWZmZXJVc2FnZShjb25zdCBHUFVEZXZpY2UmLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZs
YWdzPiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdC
dWZmZXJGb3JSZWFkKCk7Ci0gICAgSlNDOjpBcnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvcldy
aXRlKCk7Ci0gICAgdm9pZCBydW5NYXBwaW5nQ2FsbGJhY2soKTsKLSAgICB2b2lkIGNvcHlTdGFn
aW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMqKTsKLQotICAgIGJvb2wgaXNNYXBXcml0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpN
YXBXcml0ZSk7IH0KLSAgICBib29sIGlzTWFwUmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Uu
Y29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkKTsgfQotICAgIGJvb2wgaXNN
YXBXcml0ZWFibGUoKSBjb25zdCB7IHJldHVybiBpc01hcFdyaXRlKCkgJiYgc3RhdGUoKSA9PSBT
dGF0ZTo6VW5tYXBwZWQ7IH0KLSAgICBib29sIGlzTWFwUmVhZGFibGUoKSBjb25zdCB7IHJldHVy
biBpc01hcFJlYWQoKSAmJiBzdGF0ZSgpID09IFN0YXRlOjpVbm1hcHBlZDsgfQotCi0gICAgUGxh
dGZvcm1CdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQnVmZmVyOwotICAgIFJlZjxHUFVEZXZpY2U+
IG1fZGV2aWNlOwotCi0gICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fc3RhZ2luZ0J1ZmZl
cjsKLSAgICBSZWZQdHI8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gbV9tYXBwaW5nQ2FsbGJhY2s7
Ci0gICAgTWFpblRocmVhZERlZmVycmFibGVUYXNrIG1fbWFwcGluZ0NhbGxiYWNrVGFzazsKLQot
ICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7Ci0gICAgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpG
bGFncz4gbV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNhZ2U7Ci0gICAgdW5zaWdu
ZWQgbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVycyB7IDAgfTsKLSAgICBib29sIG1faXNNYXBw
ZWRGcm9tQ3JlYXRpb24geyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyQmluZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiYTZlZTAxMTEwMWQ0N2MwNDFiNWY5Njk1MDY4M2U0ZDgzZWM2ZGI1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJCaW5kaW5nLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJCaW5kaW5nIHsKLSAg
ICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2
NF90IHNpemU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMyMDcyZDllZmYwMjdkMjllOTM3NzliYzhmMDZiZDY0MmM0Mzg1NmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAg
IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwotCi1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1h
cHBlZE9wdGlvbiB7Ci0gICAgSXNNYXBwZWQsCi0gICAgTm90TWFwcGVkCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RlMTQxZThmZjM1MWFlZjllMDIwNTIyNDY1ZTY2
YjU0YTQyNGQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgPSB1bnNpZ25l
ZDsKLQotY2xhc3MgR1BVQnVmZmVyVXNhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXJV
c2FnZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZs
YWdzIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIE1hcFJlYWQgPSAxIDw8IDAsCi0gICAg
ICAgIE1hcFdyaXRlID0gMSA8PCAxLAotICAgICAgICBDb3B5U291cmNlID0gMSA8PCAyLAotICAg
ICAgICBDb3B5RGVzdGluYXRpb24gPSAxIDw8IDMsCi0gICAgICAgIEluZGV4ID0gMSA8PCA0LAot
ICAgICAgICBWZXJ0ZXggPSAxIDw8IDUsCi0gICAgICAgIFVuaWZvcm0gPSAxIDw8IDYsCi0gICAg
ICAgIFN0b3JhZ2UgPSAxIDw8IDcsCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMmRhNTI2NTZkZTIzZDI2MjRkNmExYjhlMzU2YmQyNjRhZGMxNjE5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQ29sb3IgewotICAgIGZsb2F0IHI7Ci0gICAgZmxv
YXQgZzsKLSAgICBmbG9hdCBiOwotICAgIGZsb2F0IGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1NTI3MjhiY2M5YjM4MDU3NDU1
OTllNmI1ODY4MTkxYWIxMzZlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JT
dGF0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
bGVuZERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVDb2xvcldyaXRlLmgiCi0jaW5jbHVkZSAi
R1BVVGV4dHVyZUZvcm1hdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVD
b2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAg
ICBHUFVCbGVuZERlc2NyaXB0b3IgYWxwaGFCbGVuZDsKLSAgICBHUFVCbGVuZERlc2NyaXB0b3Ig
Y29sb3JCbGVuZDsKLSAgICBHUFVDb2xvcldyaXRlRmxhZ3Mgd3JpdGVNYXNrIHsgc3RhdGljX2Nh
c3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxsKSB9OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldy
aXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3JXcml0
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzZkNWM4YzlkZTYxZjQzMjgxNDVi
NGYzNTUxMmRmYTdiMzJhMTkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldy
aXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVDb2xvcldyaXRlRmxhZ3MgPSB1
bnNpZ25lZDsKLQotY2xhc3MgR1BVQ29sb3JXcml0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNv
bG9yV3JpdGU+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEZsYWdzIDogR1BVQ29sb3JXcml0
ZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFJlZCA9IDEgPDwgMCwKLSAgICAg
ICAgR3JlZW4gPSAxIDw8IDEsCi0gICAgICAgIEJsdWUgPSAxIDw8IDIsCi0gICAgICAgIEFscGhh
ID0gMSA8PCAzLAotICAgICAgICBBbGwgPSAoMSA8PCA0KSAtIDEsCi0gICAgfTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZm
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmYjYyZDQ0YzA1YjkxNWE3NTI2
YjIzMTU2ZjkxOTY4NDA4YTVhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFu
ZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXIu
aCIKLSNpbmNsdWRlICJHUFVPcmlnaW4zRC5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMu
aCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVFeHRlbnQz
RDsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Ci0gICAgdWludDY0X3Qgb2Zmc2V0
OwotICAgIHVuc2lnbmVkIHJvd1BpdGNoOwotICAgIHVuc2lnbmVkIGltYWdlSGVpZ2h0OwotfTsK
LQotc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3IGZpbmFsIDogR1BVQnVmZmVyQ29weVZpZXdCYXNl
IHsKLSAgICBHUFVCdWZmZXJDb3B5VmlldyhSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlckNvcHksIGNv
bnN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVCdWZmZXJDb3B5
Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCBidWZmZXIoV1RGTW92ZShidWZmZXJDb3B5KSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVUJ1ZmZlcj4gYnVmZmVyOwotfTsKLQotc3RydWN0IEdQ
VVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIHVuc2lnbmVkIG1pcExldmVsOwotICAgIHVuc2ln
bmVkIGFycmF5TGF5ZXI7Ci0gICAgR1BVT3JpZ2luM0Qgb3JpZ2luOwotfTsKLQotc3RydWN0IEdQ
VVRleHR1cmVDb3B5VmlldyBmaW5hbCA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIEdQ
VVRleHR1cmVDb3B5VmlldyhSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlQ29weSwgY29uc3QgR1BV
VGV4dHVyZUNvcHlWaWV3QmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVUZXh0dXJlQ29weVZpZXdC
YXNlKGJhc2UpCi0gICAgICAgICwgdGV4dHVyZShXVEZNb3ZlKHRleHR1cmVDb3B5KSkKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVmPEdQVVRleHR1cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBHUFVD
b21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4gewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0
IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1h
bmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiB1c2VkQnVmZmVycygpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlZEJ1ZmZlcnM7IH0KLSAgICBjb25zdCBIYXNoU2V0PFJlZjxHUFVUZXh0
dXJlPj4mIHVzZWRUZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZFRleHR1cmVzOyB9Ci0g
ICAgYm9vbCBpc0VuY29kaW5nUGFzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmNvZGluZ1Bhc3M7
IH0KLQotICAgIHZvaWQgc2V0SXNFbmNvZGluZ1Bhc3MoYm9vbCBpc0VuY29kaW5nKSB7IG1faXNF
bmNvZGluZ1Bhc3MgPSBpc0VuY29kaW5nOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIH5HUFVDb21t
YW5kQnVmZmVyKCk7Ci0gICAgdm9pZCBlbmRCbGl0RW5jb2RpbmcoKTsKLSNlbmRpZgotCi0gICAg
dm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiwgdWludDY0X3Qgc3JjT2Zm
c2V0LCBSZWY8R1BVQnVmZmVyPiYmLCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUp
OwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmLCBHUFVU
ZXh0dXJlQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0
dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNvcHlWaWV3JiYsIEdQVUJ1ZmZlckNvcHlWaWV3JiYsIGNv
bnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShHUFVUZXh0
dXJlQ29weVZpZXcmJiwgR1BVVGV4dHVyZUNvcHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7
Ci0KLSAgICB2b2lkIHVzZUJ1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX3VzZWRC
dWZmZXJzLmFkZFZvaWQoV1RGTW92ZShidWZmZXIpKTsgfQotICAgIHZvaWQgdXNlVGV4dHVyZShS
ZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKSB7IG1fdXNlZFRleHR1cmVzLmFkZFZvaWQoV1RGTW92
ZSh0ZXh0dXJlKSk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3Jt
Q29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYpOwotCi0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21h
cnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXI7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVy
Pj4gbV91c2VkQnVmZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gbV91c2VkVGV4
dHVyZXM7Ci0gICAgYm9vbCBtX2lzRW5jb2RpbmdQYXNzIHsgZmFsc2UgfTsKLSNpZiBVU0UoTUVU
QUwpCi0gICAgTVRMQmxpdENvbW1hbmRFbmNvZGVyICpibGl0RW5jb2RlcigpIGNvbnN0OwotICAg
IG11dGFibGUgUmV0YWluUHRyPE1UTEJsaXRDb21tYW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsK
LSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb21wYXJlRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWUwYmJhMzljOWRmZTRkMDAyODkzYzlhYjVjMjhkMTJmZTRjMjhmYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsK
LSAgICBOZXZlciwKLSAgICBMZXNzLAotICAgIEVxdWFsLAotICAgIExlc3NFcXVhbCwKLSAgICBH
cmVhdGVyLAotICAgIE5vdEVxdWFsLAotICAgIEdyZWF0ZXJFcXVhbCwKLSAgICBBbHdheXMKLX07
Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uID0gdW5zaWduZWQ7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMDQxNWQ5MGQ4Y2JjZjg3
ZGJjYTJhMmFjY2QyNWJhMTRlYjhhNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bXB1dGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDog
cHVibGljIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVm
ZmVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBl
bGluZT4mJik7Ci0gICAgdm9pZCBkaXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNp
Z25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHImJik7Ci0g
ICAgfkdQVUNvbXB1dGVQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlcgotICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGlu
dmFsaWRhdGVFbmNvZGVyKCkgZmluYWwgeyBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0g
bnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1U
TFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIHNldENvbXB1dGVC
dWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRl
eCkgZmluYWw7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQ
dHIgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcjsKLSAgICBSZWZQdHI8Y29uc3QgR1BVQ29t
cHV0ZVBpcGVsaW5lPiBtX3BpcGVsaW5lOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjY0OWMyN2UzMzA0MjgzYWIzZTUwODg5ZDg3Yjg3ZWM4OGZhNThj
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJH
UFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJl
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1j
bGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwotCi1zdHJ1Y3Qg
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5l
IGZpbmFsIDogcHVibGljIEdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVD
b21wdXRlUGlwZWxpbmUoKTsKLQotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5l
PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5l
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCByZWNvbXBpbGUoY29uc3QgR1BV
RGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKTsK
LQotICAgIGNvbnN0IFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKiBwbGF0Zm9ybUNvbXB1dGVQaXBl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0K
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lv
bnMgY29tcHV0ZURpbWVuc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVEaW1lbnNpb25z
OyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAg
R1BVQ29tcHV0ZVBpcGVsaW5lKFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHImJiwgV0hM
U0w6OkNvbXB1dGVEaW1lbnNpb25zLCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+Jik7
Ci0jZW5kaWYKLQotICAgIFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9y
bUNvbXB1dGVQaXBlbGluZTsKLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgV0hMU0w6
OkNvbXB1dGVEaW1lbnNpb25zIG1fY29tcHV0ZURpbWVuc2lvbnMgeyAwLCAwLCAwIH07Ci0jZW5k
aWYKLQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgot
ICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4gbV9sYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2ViQ29y
ZTo6R1BVQ29tcHV0ZVBpcGVsaW5lLCBpc0NvbXB1dGVQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjM5MTUwNWVlYzI1OWEyM2Q4MTgxZjY3NGRkZDg3
ZmMwNTA2MjZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiBjb21wdXRlKQotICAgICAgICA6IEdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UgeyBXVEZNb3ZlKGxheW91dCkgfQotICAgICAgICAsIGNvbXB1
dGVTdGFnZSB7IFdURk1vdmUoY29tcHV0ZSkgfQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0
ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0
N2QwM2IzNjJhNjg4YjJkNzkxMGM3ZmIxNzliYjFlOTllMDZlNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcGFyZUZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciB7Ci0gICAg
Ym9vbCBkZXB0aFdyaXRlRW5hYmxlZDsKLSAgICBHUFVDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21w
YXJlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZjUyYjllNWRjYTRiMTE5
ZGVhZGU0MmRlZmE5YmViZmY1NDQ3ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3Jv
dXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZl
ckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAi
R1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxp
bmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVTYW1w
bGVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUg
IkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVO
dW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BV
RGV2aWNlOjp0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNj
cmlwdG9yLCBpc01hcHBlZCwgZXJyb3JTY29wZXMpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbWF4
aW11bU1pcExldmVsQ291bnQoR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIEdQVUV4dGVu
dDNEIHNpemUpCi17Ci0gICAgdW5zaWduZWQgd2lkdGggPSBzaXplLndpZHRoOwotICAgIHVuc2ln
bmVkIGhlaWdodCA9IDE7Ci0gICAgdW5zaWduZWQgZGVwdGggPSAxOwotICAgIHN3aXRjaCAoZGlt
ZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJkOgotICAgICAgICBoZWlnaHQg
PSBzaXplLmhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5z
aW9uOjpfM2Q6Ci0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgICAgICBkZXB0aCA9
IHNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gbWF4RGltZW5z
aW9uID0gc3RkOjptYXgoc3RkOjptYXgod2lkdGgsIGhlaWdodCksIGRlcHRoKTsKLSAgICBpbnQg
aSA9IHNpemVvZihHUFVFeHRlbnQzRDo6SW5uZXJUeXBlKSAqIDggLSAxOwotICAgIHdoaWxlICgh
KG1heERpbWVuc2lvbiAmICgxIDw8IGkpKSAmJiBpID49IDApCi0gICAgICAgIC0taTsKLSAgICBB
U1NFUlQoaSA+PSAwKTsKLSAgICByZXR1cm4gaSArIDE7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJl
PiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXNjcmlwdG9yLnNpemUud2lkdGggfHwg
IWRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgfHwgIWRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCkgewotICAg
ICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0
IGhhdmUgMCBkaW1lbnNpb25zLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAg
IGlmICghZGVzY3JpcHRvci5taXBMZXZlbENvdW50KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZXMgY2FuJ3QgaGF2ZSAwIG1pcGxldmVscy4i
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2Ft
cGxlQ291bnQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9y
KCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAgc2FtcGxlcy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbWV0YWwvTWV0YWwt
RmVhdHVyZS1TZXQtVGFibGVzLnBkZgotICAgIHVuc2lnbmVkIG1heFJlZ3VsYXJTaXplID0gODE5
MjsKLSAgICB1bnNpZ25lZCBtYXhEZXB0aFNpemUgPSAyMDQ4OwotICAgIHN3aXRjaCAoZGVzY3Jp
cHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heFJlZ3VsYXJTaXplKSB7Ci0gICAg
ICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygi
MUQgdGV4dHVyZSBpcyB0b28gd2lkZTogIiwgZGVzY3JpcHRvci5zaXplLndpZHRoLCAiIG5lZWRz
IHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhE
ZXB0aFNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRF
cnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJlIGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIs
IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIgbmVlZHMgdG8gYmUgPD0gIiwgbWF4RGVwdGhTaXpl
LCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6Ci0gICAgICAgIGlmIChkZXNj
cmlwdG9yLnNpemUud2lkdGggPiBtYXhSZWd1bGFyU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVp
Z2h0ID4gbWF4UmVndWxhclNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVy
YXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0ZXh0dXJlIGlzIHRvbyBsYXJnZToiLCBk
ZXNjcmlwdG9yLnNpemUud2lkdGgsICIgYW5kICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIg
bmVlZCB0byBiZSA8PSAiLCBtYXhSZWd1bGFyU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggPiBt
YXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4
ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0ZXh0dXJlIGFycmF5IGhhcyB0b28gbWFueSBsYXllcnM6
ICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhEZXB0aFNp
emUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaWYgKGRl
c2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heERlcHRoU2l6ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVp
Z2h0ID4gbWF4RGVwdGhTaXplIHx8IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6
ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1h
a2VTdHJpbmcoIjNEIHRleHR1cmUgaXMgdG9vIGxhcmdlOiAiLCBkZXNjcmlwdG9yLnNpemUud2lk
dGgsICIsICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIsIGFuZCAiLCBkZXNjcmlwdG9yLnNp
emUuZGVwdGgsICIgbmVlZCB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gPT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkICYm
IGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzIik7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgYXV0byBtYXhMZXZlbHMgPSBtYXhp
bXVtTWlwTGV2ZWxDb3VudChkZXNjcmlwdG9yLmRpbWVuc2lvbiwgZGVzY3JpcHRvci5zaXplKTsK
LSAgICBpZiAoZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbWF4TGV2ZWxzKSB7Ci0gICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJUb28gbWFu
eSBtaXBsZXZlbHM6ICIsIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgIiBuZWVkcyB0byBiZSA8
PSAiLCBtYXhMZXZlbHMsICIuIikpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAg
IGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEgJiYgZGVzY3JpcHRvci5zYW1wbGVDb3Vu
dCAhPSA0KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
VGV4dHVyZSBzYW1wbGVDb3VudCBjYW4gb25seSBiZSAxIG9yIDQuIik7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewot
ICAgICAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6
XzJkKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IlRleHR1cmUgZGltZW5zaW9uIGluY29tcGF0aWJsZSB3aXRoIG11bHRpc2FtcGxpbmcuIik7Ci0g
ICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9y
Lm1pcExldmVsQ291bnQgIT0gMSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJh
dGVQcmVmaXhlZEVycm9yKCJNdWx0aXNhbXBsZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBz
LiIpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVz
Y3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMtPmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiQXJyYXkgdGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVk
LiIpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVz
Y3JpcHRvci51c2FnZSAmIHN0YXRpY19jYXN0PEdQVVRleHR1cmVVc2FnZUZsYWdzPihHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0aXNhbXBsZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBT
VE9SQUdFIHVzYWdlLiIpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogT25seSBzb21lIHBpeGVsIGZvcm1hdHMgYXJlIGNhcGFibGUgb2YgTVNB
QS4gV2hlbiB3ZSBhZGQgdGhvc2UgbmV3IHBpeGVsIGZvcm1hdHMsIHdlJ2xsIGhhdmUgdG8gYWRk
IGZpbHRlcmluZyBjb2RlIGhlcmUuCi0gICAgfQotCi0gICAgLy8gVGhlIGhlaWdodCBjb21wb25l
bnQgZm9yIDFkIHRleHR1cmVzIGlzIHRoZSBhcnJheSBsZW5ndGguCi0gICAgLy8gVGhlIGRlcHRo
IGNvbXBvbmVudCBmb3IgMmQgdGV4dHVyZXMgaXMgdGhlIGFycmF5IGxlbmd0aC4KLSAgICBpZiAo
ZGVzY3JpcHRvci5kaW1lbnNpb24gPT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aCAhPSAxKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRl
UHJlZml4ZWRFcnJvcigiMUQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBkZXB0aCAhPSAxLiIpOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLmZvcm1hdCA9PSBH
UFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsOCAmJiBkZXNjcmlwdG9yLmRpbWVu
c2lvbiAhPSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJEZXB0aC9zdGVuY2lsIHRleHR1cmVzIG11c3QgYmUg
MmQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3Iu
Zm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2Ny
aXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1w
bGVkLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmIChzdGF0aWNfY2Fz
dDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oZGVzY3JpcHRvci51c2FnZSkgPj0gc3RhdGljX2Nhc3Q8
R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok1heGltdW1WYWx1
ZSkpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZh
bGlkIHVzYWdlIGZsYWdzLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHJl
dHVybiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIG1ha2VSZWYoKm1f
ZXJyb3JTY29wZXMpKTsKLX0KLQotUmVmUHRyPEdQVVNhbXBsZXI+IEdQVURldmljZTo6dHJ5Q3Jl
YXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QK
LXsKLSAgICByZXR1cm4gR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yKTsK
LX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5k
R3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKnRo
aXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IEdQVURldmljZTo6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShXVEZN
b3ZlKGRlc2NyaXB0b3IpKTsKLX0KLQotUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVRGV2aWNl
Ojp0cnlDcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVh
dGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQ
VURldmljZTo6dHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2Ny
aXB0b3IsIGVycm9yU2NvcGVzKTsKLX0KLQotUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gR1BV
RGV2aWNlOjp0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBjb25z
dAotewotICAgIHJldHVybiBHUFVDb21wdXRlUGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVz
Y3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVEZXZp
Y2U6OnRyeUNyZWF0ZUJpbmRHcm91cChjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2JpbmRHcm91cEFsbG9jYXRvcikKLSAgICAgICAgbV9iaW5kR3JvdXBBbGxvY2F0b3IgPSBHUFVC
aW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0ZShlcnJvclNjb3Blcyk7Ci0KLSAgICByZXR1cm4gR1BV
QmluZEdyb3VwOjp0cnlDcmVhdGUoZGVzY3JpcHRvciwgKm1fYmluZEdyb3VwQWxsb2NhdG9yKTsK
LX0KLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlQ29tbWFu
ZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0
ZSgqdGhpcyk7Ci19Ci0KLVJlZlB0cjxHUFVRdWV1ZT4gR1BVRGV2aWNlOjp0cnlHZXRRdWV1ZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1ZXVlKQotICAgICAgICBtX3F1ZXVlID0gR1BVUXVldWU6
OnRyeUNyZWF0ZSgqdGhpcyk7Ci0KLSAgICByZXR1cm4gbV9xdWV1ZTsKLX0KLSAgICAKLXZvaWQg
R1BVRGV2aWNlOjpzZXRTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4p
Ci17Ci0gICAgbV9zd2FwQ2hhaW4gPSBXVEZNb3ZlKHN3YXBDaGFpbik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKaW5kZXggZjBiYmJlMzA0
ZmYwYjZhNzYyYjlmNDhjNDQxM2ZhMTVlZjVmNDE1NS4uNzliZDU3NmM5NjY0M2JiODhjNTI2NDMx
NjNiOTIwZmY4Y2NiZTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXZpY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsODYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5j
bHVkZSAiR1BVUXVldWUuaCIKLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKLSNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVCaW5kR3JvdXA7Ci1jbGFzcyBH
UFVCaW5kR3JvdXBMYXlvdXQ7Ci1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVm
ZmVyOwotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1j
bGFzcyBHUFVQaXBlbGluZUxheW91dDsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwotY2xhc3Mg
R1BVU2FtcGxlcjsKLWNsYXNzIEdQVVNoYWRlck1vZHVsZTsKLWNsYXNzIEdQVVRleHR1cmU7Ci0K
LXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwotc3RydWN0IEdQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cjsKLXN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zOwotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU3dhcENoYWluRGVzY3JpcHRvcjsK
LXN0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBw
ZWRPcHRpb247Ci0KLWNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmlj
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxHUFVEZXZpY2U+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zPiYpOwotICAgIHN0YXRpYyB2b2lkIHByZXdhcm0oKTsKLQotICAg
IFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlw
dG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3BlcyYpOwotICAgIFJlZlB0
cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9y
JikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZVNhbXBsZXIoY29uc3Qg
R1BVU2FtcGxlckRlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXBM
YXlvdXQ+IHRyeUNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQaXBl
bGluZUxheW91dChHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImJikgY29uc3Q7Ci0gICAgUmVm
UHRyPEdQVUJpbmRHcm91cD4gdHJ5Q3JlYXRlQmluZEdyb3VwKGNvbnN0IEdQVUJpbmRHcm91cERl
c2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwotCi0gICAgUmVmUHRyPEdQVVNoYWRl
ck1vZHVsZT4gdHJ5Q3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3ImKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IHRyeUNyZWF0ZVJl
bmRlclBpcGVsaW5lKGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9y
U2NvcGVzJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gdHJ5Q3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImLCBHUFVF
cnJvclNjb3BlcyYpIGNvbnN0OwotCi0gICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IHRyeUNy
ZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVRdWV1ZT4gdHJ5R2V0
UXVldWUoKSBjb25zdDsKLSAgICAKLSAgICBQbGF0Zm9ybURldmljZSogcGxhdGZvcm1EZXZpY2Uo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGV2aWNlLmdldCgpOyB9Ci0gICAgR1BVU3dhcENo
YWluKiBzd2FwQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotICAg
IHZvaWQgc2V0U3dhcENoYWluKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwotCi0gICAgdm9pZCBz
ZXRFcnJvclNjb3BlcyhSZWY8R1BVRXJyb3JTY29wZXM+JiYgZXJyb3JTY29wZXMpIHsgbV9lcnJv
clNjb3BlcyA9IFdURk1vdmUoZXJyb3JTY29wZXMpOyB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdXNlV0hMU0wgPSB0cnVlOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVURldmlj
ZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYpOwotCi0gICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0
ciBtX3BsYXRmb3JtRGV2aWNlOwotICAgIG11dGFibGUgUmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVl
OwotICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwotICAgIG11dGFibGUgUmVm
UHRyPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gbV9iaW5kR3JvdXBBbGxvY2F0b3I7Ci0gICAgUmVm
UHRyPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9yU2NvcGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQordm9pZCBwcmV3YXJtR1BVKCk7CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMjhkNGZjMTJjOGEyNDcyOGNlMjA2
NWJkMjcyMWRiYWY4MmJmZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQ
VUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVyIGZpbHRlciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQotewotICAgIHN3aXRjaCAoZmlsdGVyKSB7Ci0gICAgY2FzZSBHUFVFcnJvckZpbHRl
cjo6T3V0T2ZNZW1vcnk6Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BVT3V0T2ZN
ZW1vcnlFcnJvcj4oR1BVT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkpKTsKLSAgICBjYXNlIEdQ
VUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uOgotICAgICAgICByZXR1cm4gR1BVRXJyb3IoUmVmUHRy
PEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkp
KTsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJy
b3I+KEdQVVZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKCJCYWQgZXJyb3IhIikpKTsKLSAgICB9Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZjOGZhZmFmYTQ1ZjBmZjE0N2NiOGJiYjQ3MTMz
MjI3NTJjMjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKLSNpbmNs
dWRlICJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwotCi11c2lu
ZyBHUFVFcnJvciA9IFZhcmlhbnQ8UmVmUHRyPEdQVU91dE9mTWVtb3J5RXJyb3I+LCBSZWZQdHI8
R1BVVmFsaWRhdGlvbkVycm9yPj47Ci0KLUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9yRmls
dGVyLCBjb25zdCBTdHJpbmcmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJv
ckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9y
RmlsdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NjlmZWYzMjcwNWQ5OWJm
ZWNlYTAwODkxZmYxNjQ0YTBhNGQxNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yRmlsdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyIHsKLSAgICBOb25lLAotICAgIE91dE9m
TWVtb3J5LAotICAgIFZhbGlkYXRpb24sCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJiZWU5Y2YxYmZkMGMwMmMyMDU1YjcyMjQwMTIxODM4NGQzNmM1OWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY29uc3QgdW5zaWduZWQgbWF4VW5jYXB0dXJlZEVycm9yRXZlbnRzQWxs
b3dlZCA9IDI1NjsKLQotUmVmPEdQVUVycm9yU2NvcGVzPiBHUFVFcnJvclNjb3Blczo6Y3JlYXRl
KFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR1BVRXJyb3JTY29wZXMoV1RGTW92ZShjYWxsYmFjaykpKTsKLX0KLQotR1BVRXJy
b3JTY29wZXM6OkdQVUVycm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJh
Y2spCi0gICAgOiBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQot
ICAgICwgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKG1heFVuY2FwdHVyZWRFcnJv
ckV2ZW50c0FsbG93ZWQpCi17Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hFcnJvclNj
b3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChF
cnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8
R1BVRXJyb3I+IEdQVUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3Nh
Z2UpCi17Ci0gICAgaWYgKG1fZXJyb3JTY29wZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZhaWxN
ZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0cyEiOwotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gc2NvcGUgPSBtX2Vycm9yU2NvcGVzLnRha2VMYXN0
KCk7Ci0gICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSA/IHN0
ZDo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5l
cmF0ZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRfaWYobV9lcnJvclNjb3Blcy5yYmVnaW4o
KSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtmaWx0ZXJdKGNvbnN0IEVycm9yU2NvcGUmIHNjb3Bl
KSB7Ci0gICAgICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUg
fHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsKLSAgICB9KTsKLQotICAgIGlmIChpdGVyYXRvciA9
PSBtX2Vycm9yU2NvcGVzLnJlbmQoKSkgewotICAgICAgICBpZiAoIW1fbnVtVW5jYXB0dXJlZEVy
cm9yRXZlbnRzQWxsb3dlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3VuY2Fw
dHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSkpOwotICAgICAg
ICBpZiAoISgtLW1fbnVtVW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkpCi0gICAgICAgICAg
ICBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVyOjpW
YWxpZGF0aW9uLCAiV2ViR1BVOiBUb28gbWFueSBlcnJvcnM7IG5vIG1vcmUgZXJyb3IgZXZlbnRz
IHdpbGwgZmlyZSBvbiB0aGlzIEdQVURldmljZS4iKSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIElmIHRoZSBzY29wZSBoYXMgYWxyZWFkeSBjYXB0dXJlZCBhbiBlcnJvciwg
aWdub3JlIHRoaXMgbmV3IG9uZS4KLSAgICBpZiAoaXRlcmF0b3ItPmVycm9yKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpdGVyYXRvci0+ZXJyb3IgPSBjcmVhdGVFcnJvcihmaWx0ZXIsIG1lc3Nh
Z2UpOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5lcmF0ZVByZWZpeGVkRXJyb3IoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGdlbmVyYXRlRXJyb3IobV9wcmVmaXggKyBtZXNz
YWdlLCBHUFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxNTA5YzY4NGE5M2M3NmIzN2RmN2NkMDczNWY3ZGZlNzhlMmFjN2Yy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JG
aWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1BVRXJyb3JTY29wZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVFcnJvclNjb3Blcz4g
ewotcHVibGljOgotICAgIHVzaW5nIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChHUFVFcnJvciYmKT47Ci0gICAgc3RhdGljIFJlZjxHUFVFcnJvclNjb3Blcz4gY3JlYXRl
KFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0gICAgdm9pZCBwdXNoRXJyb3JTY29wZShH
UFVFcnJvckZpbHRlcik7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJyb3JTY29w
ZShTdHJpbmcmIGZhaWxNZXNzYWdlKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVFcnJvcihjb25zdCBT
dHJpbmcmLCBHUFVFcnJvckZpbHRlciA9IEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uKTsKLSAg
ICB2b2lkIGdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNl
dEVycm9yUHJlZml4KGNvbnN0IFN0cmluZyYgcHJlZml4KSB7IG1fcHJlZml4ID0gcHJlZml4OyB9
Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEVycm9yU2NvcGUgewotICAgICAgICBjb25zdCBHUFVF
cnJvckZpbHRlciBmaWx0ZXI7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVycm9y
OwotICAgIH07Ci0KLSAgICBHUFVFcnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayYm
KTsKLQotICAgIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrIG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2s7Ci0KLSAgICBWZWN0b3I8RXJyb3JTY29wZT4gbV9lcnJvclNjb3BlczsKLSAgICBTdHJpbmcg
bV9wcmVmaXg7Ci0gICAgdW5zaWduZWQgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2Vk
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
eHRlbnQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVu
dDNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NDgyNjUyMGNjNWU3ZTBjYzlm
ZjQzZmQxNDI4MGY1MDQ0YjdlYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVu
dDNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Ci1zdHJ1Y3QgR1BVRXh0ZW50M0QgewotICAgIHVzaW5nIElubmVyVHlwZSA9IHVuc2lnbmVkOwot
ICAgIElubmVyVHlwZSB3aWR0aDsKLSAgICBJbm5lclR5cGUgaGVpZ2h0OwotICAgIElubmVyVHlw
ZSBkZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGltaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGltaXRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMmU1MWMzZTczYjk1NjFj
YmM4MTU0ZmQwOTc2ZDc4ZTllZjgyYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxp
bWl0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
b25zdCB1bnNpZ25lZCBtYXhWZXJ0ZXhCdWZmZXJzID0gMTY7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVhMjRlZWY1Mjc0ZmJjMGFkNzY3NGY2YmM1NmU4ZjE5NmUxYzk2MTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxvYWRPcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUxvYWRPcCB7Ci0gICAgQ2xlYXIs
Ci0gICAgTG9hZAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVT2JqZWN0QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2IyZDkx
OGMyZTU0NTE3Y2IzN2ZmZmVhNmIyNjJkNDVmODJmYTlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVPYmplY3RCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU9iamVjdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVPYmplY3RCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVT2JqZWN0QmFzZSgpID0g
ZGVmYXVsdDsKLQotcHJvdGVjdGVkOgotICAgIEdQVU9iamVjdEJhc2UoUmVmPEdQVUVycm9yU2Nv
cGVzPiYmIHJlcG9ydGVyKQotICAgICAgICA6IG1fZXJyb3JTY29wZXMoV1RGTW92ZShyZXBvcnRl
cikpIHsgfQotCi0gICAgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvclNjb3BlczsgfQotCi1wcml2YXRlOgotICAgIFJlZjxHUFVFcnJvclNjb3Blcz4g
bV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWY0MjBlOTdkZmUzYmYwNzU2NmM1YjZhMGZkZWM0NjY4OTYxNzk0My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU91dE9mTWVtb3J5RXJyb3Ig
OiBwdWJsaWMgUmVmQ291bnRlZDxHUFVPdXRPZk1lbW9yeUVycm9yPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxHUFVPdXRPZk1lbW9yeUVycm9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEdQVU91dE9mTWVtb3J5RXJyb3IpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdjODgxNjU1NDM1NzEyMzEwNWI2ZTllN2M4ODMzNDFmYzJiZDgyNmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotR1BVUGlwZWxpbmU6On5HUFVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MmVlOGQ3YTNiN2VmZjE5OTA2ZTk1MDA4MTBmMzQ0MmMz
Y2ViNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVBp
cGVsaW5lPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUGlwZWxpbmUoKTsKLQotICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfR1BVUElQRUxJTkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyByZXR1cm4g
cGlwZWxpbmUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxMjJiYTkzNmRmNGQwMDZlYjYxM2U5NjE2
OTY2MGMxMWY5OWQ0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVs
aW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBsYXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMTk5M2E5ZTJmMDBiNDJlNDM4NDMxN2Nh
NjVkYTRlZDRkZWExZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5
b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQVVBpcGVsaW5lTGF5
b3V0PiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVUGlwZWxpbmVM
YXlvdXQoV1RGTW92ZShkZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHMpKSk7Ci19Ci0KLUdQVVBp
cGVsaW5lTGF5b3V0OjpHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRH
cm91cExheW91dD4+JiYgbGF5b3V0cykKLSAgICA6IG1fYmluZEdyb3VwTGF5b3V0cyhXVEZNb3Zl
KGxheW91dHMpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTc5OTk0NmZjYmEwMTJjY2VkNDZhN2YxNzIzOTI5Njc0NTkxOGZjMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVBp
cGVsaW5lTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVQaXBlbGluZUxheW91
dD4gY3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKTsKLQotICAgIGNvbnN0IFZl
Y3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mIGJpbmRHcm91cExheW91dHMoKSBj
b25zdCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dHM7IH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91
dD4+JiYpOwotCi0gICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBtX2Jp
bmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGExZWUyYzc3NTFmNDcxZmQ3NTQ1ODEwYjc3OGE1
NDMyMmY1ODIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3Jv
dXBMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8
UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQbGF0Zm9ybVR5
cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYzc2NzI2Nzg2MmE1ZTgwMDdm
ZDhlMzMzMWRlNzZlNjlkZTNiMTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRm
b3JtVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTUVUQUwpCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1U
eXBlc01ldGFsLmgiCi0jZWxpZiBVU0UoREFXTikKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVz
RGF3bi5oIgotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0gZm9yIFdlYkdQVSIK
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDViMDlmYTRhMDUyNjMzNGYwZjdkM2Y3ZDlkZTg5MTFlZWQ5Y2Nh
MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIp
Ci0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSkKLXsKLSAgICBt
X2NvbW1hbmRCdWZmZXItPnNldElzRW5jb2RpbmdQYXNzKHRydWUpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3MjQ0ZjJl
ZTFmZGNkNWQxYjE3Mzc1YzllNDExZDBmNjZkYzVhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUJpbmRHcm91cDsK
LWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1
bHQ7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNpZ25l
ZCwgR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoKLSAgICBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBHUFVDb21tYW5kQnVmZmVy
JiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9
Ci0gICAgdmlydHVhbCBjb25zdCBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0
Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlRW5jb2RlcigpID0gMDsKLSNpZiBVU0UoTUVUQUwpCi0gICAgdmlydHVhbCB2
b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkKSA9IDA7Ci0KLSAg
ICAvLyBSZW5kZXIgY29tbWFuZCBlbmNvZGVyIG1ldGhvZHMuCi0gICAgdmlydHVhbCB2b2lkIHNl
dFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwg
TlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotICAgIC8vIENvbXB1dGUuCi0gICAgdmlydHVhbCB2
b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIsIHVuc2ln
bmVkKSB7IH0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLSAgICBSZWY8R1BVQ29tbWFuZEJ1ZmZl
cj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdjMDYyOGVmN2EzMDM1ZTU5MjIx
ZmVkOTg3ZDVmNTdkYjA3YWQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBTdHJpbmcgZW50cnlQb2ludDsK
LX07Ci0KLXN0cnVjdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgOiBHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgICAgIDogR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIG1vZHVsZSB7IFdURk1vdmUobW9kdWxl
KSB9Ci0gICAgewotICAgIH0KLQotICAgIFJlZjxHUFVTaGFkZXJNb2R1bGU+IG1vZHVsZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ1Mjc4NTNhMzRhZmUwMzUzYzRmNzg3Nzk5Y2Ni
ZDQ2NmQ4ZWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5jbHVkZSAi
R1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbW1hbmRCdWZm
ZXI7Ci1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVVF1ZXVlIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVF1ZXVlPiB0cnlD
cmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0Zm9ybVF1ZXVlKiBwbGF0Zm9ybVF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVF1ZXVlLmdldCgpOyB9Ci0KLSAgICB2b2lk
IHN1Ym1pdChWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+PiYmKTsKLQotICAgIFN0cmluZyBs
YWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgR1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyJiYsIGNvbnN0IEdQ
VURldmljZSYpOwotCi0gICAgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyIG1fcGxhdGZvcm1RdWV1ZTsK
LSAgICBXZWFrUHRyPGNvbnN0IEdQVURldmljZT4gbV9kZXZpY2U7Ci0gICAgTWFpblRocmVhZERl
ZmVycmFibGVUYXNrIG1fcHJlc2VudFRhc2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhNjRiNDU5NGFlMTNiNGM0NmQ4ZTVjNjZh
NzI0NWI3MDExNzk2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb2xvci5o
IgotI2luY2x1ZGUgIkdQVUxvYWRPcC5oIgotI2luY2x1ZGUgIkdQVVN0b3JlT3AuaCIKLSNpbmNs
dWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ckJhc2UgewotICAgIEdQVUxvYWRPcCBsb2FkT3A7Ci0gICAgR1BVU3RvcmVPcCBzdG9yZU9wOwot
ICAgIEdQVUNvbG9yIGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAxIH07Ci19OwotCi1zdHJ1Y3QgR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0dXJlPiBh
dHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBkZXB0aExvYWRPcDsKLSAgICBHUFVT
dG9yZU9wIGRlcHRoU3RvcmVPcDsKLSAgICBmbG9hdCBjbGVhckRlcHRoOwotCi0gICAgLy8gRklY
TUU6IEFkZCBzdGVuY2lsIHN1cHBvcnQuCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGZpbmFsIDogR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBjb25zdCBHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlJik7Ci0KLSAgICBSZWY8
R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvciB7Ci0gICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
PiBjb2xvckF0dGFjaG1lbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQ
YXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDQzZjVk
NGMxMjQ1MDBmOGZlM2M1MTI4NzdjMGUxNTM4YWJlYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQnVmZmVyOwotY2xhc3Mg
R1BVQ29tbWFuZEJ1ZmZlcjsKLQotc3RydWN0IEdQVUNvbG9yOwotc3RydWN0IEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlciA6IHB1YmxpYyBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVS
ZW5kZXJQYXNzRW5jb2Rlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmLCBHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoUmVmPGNvbnN0
IEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIHNldEJsZW5kQ29sb3IoY29uc3QgR1BV
Q29sb3ImKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0gICAg
dm9pZCBzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldEluZGV4QnVmZmVyKEdQVUJ1ZmZlciYs
IHVpbnQ2NF90IG9mZnNldCk7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGlu
ZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25l
ZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0
YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25l
ZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5z
aWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0KLXByaXZhdGU6Ci0gICAgR1BVUmVuZGVyUGFzc0VuY29k
ZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFy
dFB0ciYmKTsKLSAgICB+R1BVUmVuZGVyUGFzc0VuY29kZXIoKSB7IGVuZFBhc3MoKTsgfQotCi0g
ICAgLy8gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIKLSAgICBjb25zdCBQbGF0Zm9ybVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgZmluYWw7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpIGZpbmFsIHsgbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIHVzZVJlc291cmNl
KGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIHNl
dFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2ln
bmVkIGluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1
ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGZpbmFsOwotCi0gICAg
UmVmUHRyPEdQVUJ1ZmZlcj4gbV9pbmRleEJ1ZmZlcjsKLSAgICB1aW50NjRfdCBtX2luZGV4QnVm
ZmVyT2Zmc2V0OwotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotICAgIFBsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI7Ci0gICAgUmVmUHRy
PGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiBtX3BpcGVsaW5lOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTZhMjQxYzA0NTMwODliMGJhYTE1MDFiODk1
N2I0YjJlYzhmYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5l
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNp
bmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRXJyb3JT
Y29wZXM7Ci0KLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQVVBpcGVs
aW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVSZW5kZXJQaXBlbGluZSgpOwotCi0gICAg
c3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJik7
Ci0KLSAgICBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0K
LSAgICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAg
TVRMRGVwdGhTdGVuY2lsU3RhdGUgKmRlcHRoU3RlbmNpbFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQotI2VuZGlmCi0gICAgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQotICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1p
dGl2ZVRvcG9sb2d5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVUb3BvbG9neTsgfQotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGluZGV4Rm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9pbmRleEZvcm1hdDsgfQotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVS
ZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYsIFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmLCBHUFVQcmltaXRpdmVUb3BvbG9neSwgc3RkOjpvcHRp
b25hbDxHUFVJbmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mLCBj
b25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7Ci0KLSAgICBSZXRhaW5QdHI8
TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7Ci0jZW5kaWYgLy8gVVNF
KE1FVEFMKQotICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmU7Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgbV9wcmltaXRpdmVUb3BvbG9n
eTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0PiBtX2luZGV4Rm9ybWF0OwotCi0g
ICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgUmVm
UHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91dDsKLSAgICBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3JCYXNlIG1fcmVuZGVyRGVzY3JpcHRvckJhc2U7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoV2ViQ29yZTo6
R1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxpbmUoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdkZTJkYTlhYWEzMzZhN2FmMDFkOTMyODJkZWZlMDJhYzlhNzM5
MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yU3RhdGVEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVZlcnRleElucHV0RGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1lbnVtIGNsYXNzIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKLSAgICBQb2ludExpc3QsCi0gICAg
TGluZUxpc3QsCi0gICAgTGluZVN0cmlwLAotICAgIFRyaWFuZ2xlTGlzdCwKLSAgICBUcmlhbmds
ZVN0cmlwCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgVmVjdG9yPEdQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQ
VURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3RhdGU7Ci0gICAgR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0OwotfTsKLQotc3RydWN0IEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3ImJiB2ZXJ0ZXgsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yPiYmIGZyYWdtZW50LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JC
YXNlJiBiYXNlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBXVEZNb3Zl
KGxheW91dCkgfQotICAgICAgICAsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UoYmFz
ZSkKLSAgICAgICAgLCB2ZXJ0ZXhTdGFnZShXVEZNb3ZlKHZlcnRleCkpCi0gICAgICAgICwgZnJh
Z21lbnRTdGFnZShXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICB7Ci0gICAgfQotCi0gICAgR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwotICAgIHN0ZDo6b3B0aW9uYWw8
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudFN0YWdlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1
ZXN0QWRhcHRlck9wdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JhMGJk
MTA2NmIwMWEwNjNjZmMzODZjYmMxZGQ0YzkzZDg0YjE2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSA8b3B0aW9uYWw+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFz
cyBHUFVQb3dlclByZWZlcmVuY2UgOiBib29sIHsgTG93UG93ZXIsIEhpZ2hQZXJmb3JtYW5jZSB9
OwotCi1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBzdGQ6Om9wdGlvbmFs
PEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJlbmNlOwotfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjFhNjQ0NjlmY2NlYjY3NGQ4OWZlZWEwYmJhMTJjZTNmZjNmMmEz
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsK
LQotY2xhc3MgR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNhbXBsZXI+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpOwotCi0gICAgUGxhdGZvcm1TYW1w
bGVyKiBwbGF0Zm9ybVNhbXBsZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU2FtcGxlci5n
ZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEdQVVNhbXBsZXIoUGxhdGZvcm1TYW1wbGVyU21hcnRQ
dHImJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciBtX3BsYXRmb3JtU2FtcGxlcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTYW1wbGVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTM3
MGZlZGQ0MDljZmUyYmQzNzYwMTU4MjY2ZTAwMzQwMTcxMWExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVQWRkcmVzc01vZGUgewotICAgIENsYW1wVG9FZGdlLAotICAgIFJlcGVh
dCwKLSAgICBNaXJyb3JSZXBlYXQsCi19OwotCi1lbnVtIGNsYXNzIEdQVUZpbHRlck1vZGUgewot
ICAgIE5lYXJlc3QsCi0gICAgTGluZWFyLAotfTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlw
dG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVUgeyBHUFVBZGRyZXNzTW9kZTo6
Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVYgeyBHUFVBZGRy
ZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVcg
eyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1hZ0Zp
bHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1pbkZp
bHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBHUFVGaWx0ZXJNb2RlIG1pcG1h
cEZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsKLSAgICBmbG9hdCBsb2RNaW5DbGFt
cCB7IDAgfTsKLSAgICBmbG9hdCBsb2RNYXhDbGFtcCB7IDB4ZmZmZmZmZmYgfTsKLSAgICB1bnNp
Z25lZCBtYXhBbmlzb3Ryb3B5IHsgMSB9OwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBjb21wYXJl
RnVuY3Rpb24geyBHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWE1NmQxMTg2OWEyZjkzMDk5NzMxNGZhMGQ2NjQx
ZWEyMDBjMThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0j
aW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RGV2aWNlOwotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BV
U2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hhZGVyTW9kdWxlPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IHRyeUNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7Ci0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUqIHBsYXRmb3JtU2hh
ZGVyTW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aGxzbE1vZHVsZSA/IG51bGxwdHIgOiBtX3Bs
YXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9Ci0gICAgY29uc3QgV0hMU0w6OlNoYWRlck1vZHVs
ZSogd2hsc2xNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3dobHNsTW9kdWxlLmdldCgpOyB9Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1
bGVTbWFydFB0ciYmKTsKLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BVU2hhZGVy
TW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxlKTsKLSNl
bmRpZgotCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3JtU2hhZGVy
TW9kdWxlOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V0hMU0w6OlNoYWRlck1vZHVsZT4gbV93aGxzbE1vZHVsZTsKLSNlbmRpZgotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2ZlMGFk
NWE4N2IzMmM0OGFlMzRiZDc2ZDJmMWM1OTgxYmU3ZDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIFN0cmluZyBjb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9y
ZU9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3RvcmVPcC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjc4MzI0ODkxM2U0NTFkYzM2YTQ3YWI1
ZjBlMjNjYTI0YWRjMzBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xh
c3MgR1BVU3RvcmVPcCB7Ci0gICAgU3RvcmUKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNlMjc3NDdlM2U3ZTI2ZGRiZTEyNzA3MDAwODBkYWQyMDE0YWFmYTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLS8vIFBsYXRmb3JtTGF5ZXIgaW1wbGVtZW50YXRp
b24gbmVlZGVkIG90aGVyd2lzZSBjb21waWxpbmcgZGVyaXZlZCBzb3VyY2VzIHdpbGwgZmFpbC4K
LSNpZiBVU0UoTklDT1NJQSkKLSNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgotI2Vs
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlQcm92aWRlci5oIgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXQ7Ci0KLWNsYXNzIEdQVVN3YXBD
aGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4gewotcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiB0cnlDcmVhdGUoY29uc3QgR1BVU3dhcENoYWluRGVz
Y3JpcHRvciYsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVy
ZT4gdHJ5R2V0Q3VycmVudFRleHR1cmUoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBSZXRhaW5Q
dHI8Q0FNZXRhbERyYXdhYmxlPiB0YWtlRHJhd2FibGUoKTsKLSNlbmRpZgotCi0gICAgLy8gRm9y
IEdQVUNhbnZhc0NvbnRleHQuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OwotCi0gICAgdm9pZCBwcmVzZW50KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBtX2N1cnJlbnREcmF3YWJsZSA9IG51
bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2FwTGF5ZXJT
bWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAgUGxh
dGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOwotICAgIFBsYXRmb3Jt
RHJhd2FibGVTbWFydFB0ciBtX2N1cnJlbnREcmF3YWJsZTsKLSAgICBPcHRpb25TZXQ8R1BVVGV4
dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3MDQyMDQ2M2NhYWJhMTVmZTdkNzMxNjJhYThl
YTdiZDQ4MWY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVURldmljZS5oIgot
I2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU3dhcENoYWluRGVzY3JpcHRv
ckJhc2UgewotICAgIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1cmVVc2Fn
ZUZsYWdzIHVzYWdlIHsgc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1
cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpIH07Ci19OwotCi1zdHJ1Y3QgR1BVU3dh
cENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yKFJlZjxHUFVEZXZpY2U+JiYgZ3B1RGV2aWNlLCBjb25zdCBHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAgICAgICAgOiBHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIGRldmljZShXVEZNb3ZlKGdwdURldmljZSkpCi0g
ICAgewotICAgIH0KLSAgICAKLSAgICBSZWY8R1BVRGV2aWNlPiBkZXZpY2U7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZmNkNTZmNDE4NTU4M2JmOTBjNmRhN2I0NGFjN2Y2YzA0
Yjg1MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAi
R1BVVGV4dHVyZVVzYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1z
dHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVRleHR1cmUgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVU
ZXh0dXJlPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4dHVyZURlc2Ny
aXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3Jl
YXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmUgKnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpOyB9Ci0gICAgYm9vbCBpc0NvcHlTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6Rmxh
Z3M6OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29weURlc3Rp
bmF0aW9uKTsgfQotICAgIGJvb2wgaXNPdXRwdXRBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4g
bV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50
KTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFp
bnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzOjpTYW1wbGVkIH0pOyB9Ci0gICAgYm9vbCBpc1NhbXBsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQpOyB9
Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpOyB9Ci0gICAgdW5zaWduZWQgcGxhdGZvcm1V
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Vc2FnZTsgfQotCi0gICAgUmVmUHRyPEdQ
VVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHZvaWQgZGVzdHJv
eSgpIHsgbV9wbGF0Zm9ybVRleHR1cmUgPSBudWxscHRyOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmLCBPcHRpb25TZXQ8R1BV
VGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIgbV9w
bGF0Zm9ybVRleHR1cmU7Ci0KLSAgICBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4g
bV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNhZ2U7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNjg1YTIxOWYzMjliNjA3MDRk
M2U2NTYyM2I1YTZhYjdlZGUyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFeHRl
bnQzRC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbmNsdWRlICJHUFVUZXh0
dXJlVXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRleHR1
cmVEaW1lbnNpb24gewotICAgIF8xZCwKLSAgICBfMmQsCi0gICAgXzNkCi19OwotICAgIAotc3Ry
dWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yIHsKLSAgICBHUFVFeHRlbnQzRCBzaXplOwotICAgIHVu
c2lnbmVkIG1pcExldmVsQ291bnQ7Ci0gICAgdW5zaWduZWQgc2FtcGxlQ291bnQ7Ci0gICAgR1BV
VGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb247Ci0gICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7
Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRm9ybWF0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDBmZGExNjZiODMwMzg4ODVmYjEyMmRjNGI3ZTNhODZh
NGE5ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBH
UFVUZXh0dXJlRm9ybWF0IHsKLSAgICBSZ2JhOHVub3JtLAotICAgIFJnYmE4dWludCwKLSAgICBC
Z3JhOHVub3JtLAotICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4LAotICAgIEJncmE4dW5vcm1TUkdC
LAotICAgIFJnYmExNmZsb2F0LAotfTsKLQotdXNpbmcgUGxhdGZvcm1UZXh0dXJlRm9ybWF0ID0g
dW5zaWduZWQ7Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0M2U2ZmJhZTllZTQwOTUxZTg1NDhhMTZhOGJk
NzI5YWQ4OGJhZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVVc2FnZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIEdQVVRleHR1cmVVc2FnZUZsYWdzID0g
dW5zaWduZWQ7Ci0gICAgCi1jbGFzcyBHUFVUZXh0dXJlVXNhZ2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHUFVUZXh0dXJlVXNhZ2U+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEZsYWdzIDogR1BV
VGV4dHVyZVVzYWdlRmxhZ3MgewotICAgICAgICBDb3B5U291cmNlICAgICAgID0gMSA8PCAwLAot
ICAgICAgICBDb3B5RGVzdGluYXRpb24gID0gMSA8PCAxLAotICAgICAgICBTYW1wbGVkICAgICAg
ICAgID0gMSA8PCAyLAotICAgICAgICBTdG9yYWdlICAgICAgICAgID0gMSA8PCAzLAotICAgICAg
ICBPdXRwdXRBdHRhY2htZW50ID0gMSA8PCA0LAotICAgICAgICBNYXhpbXVtVmFsdWUgICAgID0g
MSA8PCA1LAotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkOWE1YzcwNzRj
NGFlNjMzZThlNjAxMmM1Y2M4NzY4YmZiNGYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVVXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21wYXJl
RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUGxhdGZvcm1UZXh0dXJlRm9ybWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZv
ckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCk7Ci1QbGF0Zm9ybUNvbXBhcmVGdW5j
dGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihHUFVDb21w
YXJlRnVuY3Rpb24pOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzk3ZTU0NTQ2MTM4NmNmZmNkNDEwODc3ZGMzNjE0ZjZkZjE4Mjg3OS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVVmFsaWRhdGlvbkVycm9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVWYWxpZGF0aW9uRXJyb3I+IEdQVVZhbGlkYXRpb25FcnJv
cjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHUFVWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSkpOwotfQotCi1HUFVWYWxpZGF0aW9uRXJy
b3I6OkdQVVZhbGlkYXRpb25FcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgOiBtX21l
c3NhZ2UobWVzc2FnZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzIyNWFjMjA3ZmNhM2JlZGJlNjExNTVhNzU5N2FkYTU1NjczODVlMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR1BVVmFsaWRhdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVVmFs
aWRhdGlvbkVycm9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVWYWxpZGF0aW9uRXJy
b3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBH
UFVWYWxpZGF0aW9uRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIFN0cmluZyBt
X21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYWM2MzVlOGU1ZDY3OTg0MjZjZTVjZmRiZmVjZGVlMzEy
OTgwNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVmVydGV4Rm9ybWF0
IHsKLSAgICBGbG9hdCwKLSAgICBGbG9hdDIsCi0gICAgRmxvYXQzLAotICAgIEZsb2F0NCwKLX07
Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRfdCBv
ZmZzZXQ7Ci0gICAgR1BVVmVydGV4Rm9ybWF0IGZvcm1hdDsKLSAgICB1bnNpZ25lZCBzaGFkZXJM
b2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNThiYTNmMjM1NDg0MWQ4YWQ0ZWU4ZjEyNzIyZjQyMDA4MjQ0ZjEwMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotZW51bSBjbGFzcyBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAgICBWZXJ0ZXgsCi0gICAgSW5zdGFu
Y2UsCi19OwotCi1zdHJ1Y3QgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvciB7Ci0gICAgdWludDY0
X3Qgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUgc3RlcE1vZGU7Ci0gICAgVmVjdG9yPEdQ
VVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+IGF0dHJpYnV0ZVNldDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjMyZmU1OTkx
NWVmNWE5MWE4YWE1YWE1OGU3NGMwNjQzOWRhNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVJbmRleEZvcm1hdCB7
Ci0gICAgVWludDE2LAotICAgIFVpbnQzMiwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhJbnB1dERl
c2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0OwotICAgIFZlY3Rvcjxz
dGQ6Om9wdGlvbmFsPEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3I+PiB2ZXJ0ZXhCdWZmZXJzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODZlMzQ4YzIxMGZlMDFjY2ZlMDJiNjA1NmI5MGU4NmE4MzVl
N2Q0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2Nh
dG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0j
aW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0
ZShHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQ
VUJpbmRHcm91cEFsbG9jYXRvcihlcnJvcnMpKTsKLX0KLQotR1BVQmluZEdyb3VwQWxsb2NhdG9y
OjpHUFVCaW5kR3JvdXBBbGxvY2F0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9ycykKLSAgICA6IG1f
ZXJyb3JTY29wZXMobWFrZVJlZihlcnJvcnMpKQotewotfQotCi0jaWYgVVNFKE1FVEFMKQotCi1z
dGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRz
PiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRlQW5kU2V0RW5jb2RlcnMoTVRMQXJndW1l
bnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnQsIE1UTEFyZ3Vt
ZW50RW5jb2RlciAqY29tcHV0ZSkKLXsKLSAgICBpZDxNVExEZXZpY2U+IGRldmljZSA9IG5pbDsK
LSAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkPE5TVUludGVnZXI+KG1fbGFzdE9mZnNl
dCk7Ci0KLSAgICBpZiAodmVydGV4KSB7Ci0gICAgICAgIGRldmljZSA9IHZlcnRleC5kZXZpY2U7
Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gdmVydGV4LmVuY29kZWRMZW5ndGg7Ci0gICAgfQot
ICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBkZXZpY2UgPSBmcmFnbWVudC5kZXZpY2U7Ci0g
ICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gZnJhZ21lbnQuZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0g
ICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgZGV2aWNlID0gY29tcHV0ZS5kZXZpY2U7Ci0gICAg
ICAgIGNoZWNrZWRPZmZzZXQgKz0gY29tcHV0ZS5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLQotICAg
IC8vIE5vIGFyZ3VtZW50czsgbm90aGluZyB0byBiZSBkb25lLgotICAgIGlmICghZGV2aWNlKQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgaWYgKGNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dl
ZCgpKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9y
RmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAg
YXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnZhbHVlKCk7Ci0KLSAgICBpZiAobV9hcmd1
bWVudEJ1ZmZlciAmJiBuZXdPZmZzZXQgPiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0aCkg
ewotICAgICAgICBpZiAoIXJlYWxsb2NhdGUobmV3T2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgfSBlbHNlIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAgICAvLyBC
YXNlZCBvZmYgbWltaW11bSBhbGxvY2F0aW9uIGZvciBhIHNoYXJlZC1tZW1vcnkgTVRMQnVmZmVy
IG9uIG1hY09TLgotICAgICAgICBOU1VJbnRlZ2VyIG1pbmltdW1TaXplID0gNDA5NjsKLSAgICAg
ICAgaWYgKG1pbmltdW1TaXplIDwgbmV3T2Zmc2V0KQotICAgICAgICAgICAgbWluaW11bVNpemUg
PSBuZXdPZmZzZXQ7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
ICAgIG1fYXJndW1lbnRCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0
aDptaW5pbXVtU2l6ZSBvcHRpb25zOjBdKTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgICAgIGlmICghbV9hcmd1bWVudEJ1ZmZlcikgewotICAgICAgICAgICAgbV9l
cnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5
KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBcmd1
bWVudEJ1ZmZlck9mZnNldHMgb2Zmc2V0czsKLQotICAgIC8vIE1hdGggaW4gdGhlIGZvbGxvd2lu
ZyBzZWN0aW9uIGlzIGd1YXJkZWQgYWdhaW5zdCBvdmVyZmxvdyBieSBuZXdPZmZzZXQgY2FsY3Vs
YXRpb24uCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAodmVydGV4
KSB7Ci0gICAgICAgIG9mZnNldHMudmVydGV4ID0gbV9sYXN0T2Zmc2V0OwotICAgICAgICBbdmVy
dGV4IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0OipvZmZz
ZXRzLnZlcnRleF07Ci0gICAgfQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBvZmZzZXRz
LmZyYWdtZW50ID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBtX2xhc3RP
ZmZzZXQ7Ci0gICAgICAgIFtmcmFnbWVudCBzZXRBcmd1bWVudEJ1ZmZlcjptX2FyZ3VtZW50QnVm
ZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5mcmFnbWVudF07Ci0gICAgfQotICAgIGlmIChjb21w
dXRlKSB7Ci0gICAgICAgIG9mZnNldHMuY29tcHV0ZSA9ICh2ZXJ0ZXggPyB2ZXJ0ZXguZW5jb2Rl
ZExlbmd0aCA6IDApICsgKGZyYWdtZW50ID8gZnJhZ21lbnQuZW5jb2RlZExlbmd0aCA6IDApICsg
bV9sYXN0T2Zmc2V0OwotICAgICAgICBbY29tcHV0ZSBzZXRBcmd1bWVudEJ1ZmZlcjptX2FyZ3Vt
ZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5jb21wdXRlXTsKLSAgICB9Ci0KLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX2xhc3RPZmZzZXQgPSBuZXdPZmZzZXQ7
Ci0gICAgKyttX251bUJpbmRHcm91cHM7Ci0KLSAgICByZXR1cm4gb2Zmc2V0czsKLX0KLQotI2Vu
ZGlmIC8vIFVTRShNRVRBTCkKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2NTcsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2NTggT3B0aW1pemUgcmVhbGxvY2F0aW9uIGFuZCByZXNldCBiZWhhdmlvci4KLWJv
b2wgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpyZWFsbG9jYXRlKE5TVUludGVnZXIgbmV3T2Zmc2V0
KQotewotICAgIE1UTEJ1ZmZlciAqbmV3QnVmZmVyID0gbmlsOwotCi0gICAgYXV0byBuZXdMZW5n
dGggPSBDaGVja2VkPE5TVUludGVnZXI+KG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsK
LSAgICB3aGlsZSAobmV3TGVuZ3RoIDwgbmV3T2Zmc2V0KSB7Ci0gICAgICAgIG5ld0xlbmd0aCAr
PSBuZXdMZW5ndGggLyA0VTsKLQotICAgICAgICBpZiAobmV3TGVuZ3RoLmhhc092ZXJmbG93ZWQo
KSkgewotICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxOU1VJbnRl
Z2VyPjo6bWF4KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbmV3QnVmZmVyID0gW21fYXJndW1l
bnRCdWZmZXIuZ2V0KCkuZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6bmV3TGVuZ3RoLnZhbHVl
KCkgb3B0aW9uczowXTsKLSAgICBtZW1jcHkobmV3QnVmZmVyLmNvbnRlbnRzLCBtX2FyZ3VtZW50
QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmxlbmd0aCk7Ci0K
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW5ld0J1ZmZlcikgewot
ICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6
T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9hcmd1
bWVudEJ1ZmZlciA9IGFkb3B0TlMobmV3QnVmZmVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnRyeVJlc2V0KCkKLXsKLSAgICAtLW1fbnVtQmlu
ZEdyb3VwczsKLSAgICAKLSAgICBBU1NFUlQobV9udW1CaW5kR3JvdXBzID4gLTEpOwotCi0gICAg
aWYgKCFtX251bUJpbmRHcm91cHMpIHsKLSAgICAgICAgbV9hcmd1bWVudEJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgICAgIG1fbGFzdE9mZnNldCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJp
bmRHcm91cExheW91dE1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzlh
Y2Y3ODZiYmJlZTdhOTFhMDdhMzQ2ZTdmMDFlNGUxYzAwZGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExE
YXRhVHlwZSBNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBlKEdQVUJpbmRpbmdUeXBlIHR5cGUpCi17
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U2FtcGxlcjoK
LSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlU2FtcGxlcjsKLSAgICBjYXNlIEdQVUJpbmRpbmdU
eXBlOjpTYW1wbGVkVGV4dHVyZToKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlVGV4dHVyZTsK
LSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVmZmVyOgotICAgIGNhc2UgR1BVQmlu
ZGluZ1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6
OlN0b3JhZ2VCdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0b3JhZ2VC
dWZmZXI6Ci0gICAgICAgIHJldHVybiBNVExEYXRhVHlwZVBvaW50ZXI7Ci0gICAgfQotfQotCi11
c2luZyBBcmd1bWVudEFycmF5ID0gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50
RGVzY3JpcHRvciAqPj47Ci1zdGF0aWMgdm9pZCBhcHBlbmRBcmd1bWVudFRvQXJyYXkoQXJndW1l
bnRBcnJheSYgYXJyYXksIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IGFyZ3VtZW50
KQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghYXJyYXkpCi0g
ICAgICAgIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6YXJndW1lbnQuZ2V0KCksIG5pbF0pOwotICAgIGVsc2UKLSAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDphcmd1bWVudC5nZXQoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdHJ5Q3JlYXRlTXRsQXJn
dW1lbnRFbmNvZGVyKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBBcmd1bWVudEFycmF5IGFycmF5
KQotewotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IGVuY29kZXI7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBlbmNvZGVyID0gYWRvcHROUyhbZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCkgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czphcnJheS5n
ZXQoKV0pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBpZiAoIWVuY29kZXIp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnRFbmNvZGVyISIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY29kZXI7Ci19OwotCi1zdGF0aWMgUmV0YWlu
UHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFUeXBl
IGRhdGFUeXBlLCBOU1VJbnRlZ2VyIGluZGV4KQotewotICAgIFJldGFpblB0cjxNVExBcmd1bWVu
dERlc2NyaXB0b3I+IG10bEFyZ3VtZW50OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIG10bEFyZ3VtZW50ID0gYWRvcHROUyhbTVRMQXJndW1lbnREZXNjcmlwdG9yIG5ld10p
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzg0IFRoaXMgbmVlZHMgdG8gc2V0
IHRoZSAidGV4dHVyZVR5cGUiIGZpZWxkCi0gICAgW210bEFyZ3VtZW50IHNldERhdGFUeXBlOmRh
dGFUeXBlXTsKLSAgICBbbXRsQXJndW1lbnQgc2V0SW5kZXg6aW5kZXhdOwotICAgIHJldHVybiBt
dGxBcmd1bWVudDsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gR1BVQmluZEdyb3Vw
TGF5b3V0Ojp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0
Ojp0cnlDcmVhdGUoKTogSW52YWxpZCBNVExEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLQotICAgIEFyZ3VtZW50QXJyYXkgdmVydGV4QXJncywgZnJhZ21lbnRBcmdz
LCBjb21wdXRlQXJncywgdmVydGV4TGVuZ3RocywgZnJhZ21lbnRMZW5ndGhzLCBjb21wdXRlTGVu
Z3RoczsKLSAgICBCaW5kaW5nc01hcFR5cGUgYmluZGluZ3NNYXA7Ci0KLSAgICB1bnNpZ25lZCBp
bnRlcm5hbE5hbWUgPSAwOwotICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoQmFzZSA9IGRlc2Ny
aXB0b3IuYmluZGluZ3Muc2l6ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmluZGluZyA6IGRl
c2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZXh0
cmFJbmRleDsKLSAgICAgICAgYXV0byBpbnRlcm5hbERldGFpbHMgPSAoWyZdKCkgLT4gR1BVQmlu
ZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRhaWxzIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoYmluZGluZy50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlm
b3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJh
c2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpVbmlmb3Jt
QnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6
OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRl
cm5hbExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5
b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICBj
YXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAgICAgICAgICAgIHJldHVybiBHUFVC
aW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5n
VHlwZTo6U2FtcGxlZFRleHR1cmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91
cExheW91dDo6U2FtcGxlZFRleHR1cmUgeyB9OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5n
VHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0gaW50ZXJu
YWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExheW91
dDo6U3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVChiaW5kaW5nLnR5cGUgPT0gR1BVQmluZGluZ1R5cGU6OkR5
bmFtaWNTdG9yYWdlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRyYUluZGV4ID0gaW50ZXJu
YWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExheW91
dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIgeyAqZXh0cmFJbmRleCB9OwotICAgICAgICAgICAgfQot
ICAgICAgICB9KSgpOwotICAgICAgICBCaW5kaW5nIGJpbmRpbmdEZXRhaWxzID0geyBiaW5kaW5n
LCBpbnRlcm5hbE5hbWUrKywgV1RGTW92ZShpbnRlcm5hbERldGFpbHMpIH07Ci0gICAgICAgIGlm
ICghYmluZGluZ3NNYXAuYWRkKGJpbmRpbmcuYmluZGluZywgYmluZGluZ0RldGFpbHMpKSB7Ci0g
ICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTog
RHVwbGljYXRlIGJpbmRpbmcgJXUgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnREZXNjcmlwdG9yPiBtdGxBcmd1
bWVudCA9IGFyZ3VtZW50RGVzY3JpcHRvcihNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBlKGJpbmRp
bmcudHlwZSksIGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZSk7Ci0KLSAgICAgICAgaWYgKCFt
dGxBcmd1bWVudCkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91
dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9yIGZv
ciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYWRkSW5kaWNlcyA9IFsmXShBcmd1bWVu
dEFycmF5JiBhcmdzLCBBcmd1bWVudEFycmF5JiBsZW5ndGhzKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIGFwcGVuZEFyZ3VtZW50VG9BcnJheShhcmdzLCBtdGxBcmd1bWVudCk7Ci0gICAgICAgICAg
ICBpZiAoZXh0cmFJbmRleCkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxNVExBcmd1bWVu
dERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1lbnREZXNjcmlwdG9yKE1UTERhdGFUeXBl
VUludDIsICpleHRyYUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIW10bEFyZ3VtZW50KSB7
Ci0gICAgICAgICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRy
eUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTEFyZ3VtZW50RGVzY3JpcHRvciBmb3IgYmlu
ZGluZyAldSEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFwcGVuZEFyZ3VtZW50
VG9BcnJheShsZW5ndGhzLCBtdGxBcmd1bWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxp
dHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OlZlcnRleCkgJiYgIWFkZEluZGljZXModmVydGV4
QXJncywgdmVydGV4TGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdt
ZW50KSAmJiAhYWRkSW5kaWNlcyhmcmFnbWVudEFyZ3MsIGZyYWdtZW50TGVuZ3RocykpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkg
JiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUpICYmICFhZGRJbmRpY2VzKGNvbXB1dGVB
cmdzLCBjb21wdXRlTGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbdmVydGV4QXJncyBhZGRP
YmplY3RzRnJvbUFycmF5OnZlcnRleExlbmd0aHMuZ2V0KCldOwotICAgIFtmcmFnbWVudEFyZ3Mg
YWRkT2JqZWN0c0Zyb21BcnJheTpmcmFnbWVudExlbmd0aHMuZ2V0KCldOwotICAgIFtjb21wdXRl
QXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmNvbXB1dGVMZW5ndGhzLmdldCgpXTsKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVy
PiB2ZXJ0ZXgsIGZyYWdtZW50LCBjb21wdXRlOwotCi0gICAgaWYgKHZlcnRleEFyZ3MgJiYgISh2
ZXJ0ZXggPSB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoZGV2aWNlLCB2ZXJ0ZXhBcmdzKSkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChmcmFnbWVudEFyZ3MgJiYgIShmcmFn
bWVudCA9IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2RlcihkZXZpY2UsIGZyYWdtZW50QXJncykp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoY29tcHV0ZUFyZ3MgJiYgIShjb21w
dXRlID0gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGRldmljZSwgY29tcHV0ZUFyZ3MpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUJp
bmRHcm91cExheW91dChXVEZNb3ZlKGJpbmRpbmdzTWFwKSwgV1RGTW92ZSh2ZXJ0ZXgpLCBXVEZN
b3ZlKGZyYWdtZW50KSwgV1RGTW92ZShjb21wdXRlKSkpOwotfQotCi1HUFVCaW5kR3JvdXBMYXlv
dXQ6OkdQVUJpbmRHcm91cExheW91dChCaW5kaW5nc01hcFR5cGUmJiBiaW5kaW5nc01hcCwgUmV0
YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiB2ZXJ0ZXgsIFJldGFpblB0cjxNVExBcmd1bWVu
dEVuY29kZXI+JiYgZnJhZ21lbnQsIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+JiYgY29t
cHV0ZSkKLSAgICA6IG1fdmVydGV4RW5jb2RlcihXVEZNb3ZlKHZlcnRleCkpCi0gICAgLCBtX2Zy
YWdtZW50RW5jb2RlcihXVEZNb3ZlKGZyYWdtZW50KSkKLSAgICAsIG1fY29tcHV0ZUVuY29kZXIo
V1RGTW92ZShjb21wdXRlKSkKLSAgICAsIG1fYmluZGluZ3NNYXAoV1RGTW92ZShiaW5kaW5nc01h
cCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEwNjk4YjE5YWVjYmYyZTk0OTgzOGU4YzYxZGRkZDI5ZjA1OWUxYmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBCaW5kaW5n
LmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVCaW5k
R3JvdXBMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckJpbmRpbmc+IHRy
eUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElTQUJM
RUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotICAgIGlmICghV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBidWZmZXIgdHlwZSEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICBhdXRv
JiBidWZmZXJCaW5kaW5nID0gV1RGOjpnZXQ8R1BVQnVmZmVyQmluZGluZz4ocmVzb3VyY2UpOwot
ICAgIGlmICghYnVmZmVyQmluZGluZy5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTEJ1ZmZlciBpbiBHUFVCdWZmZXJCaW5kaW5n
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
ICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLnNpemUpIHx8IGJ1
ZmZlckJpbmRpbmcuc2l6ZSA+IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXJCaW5kaW5nIHNpemUgaXMgdG9vIGxh
cmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUg
cGxhdGZvcm1zLgotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5n
Lm9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBCdWZmZXIgb2Zmc2V0IGlzIHRv
byBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIH0KLSAgICByZXR1cm4gR1BVQnVmZmVyQmluZGluZyB7IGJ1ZmZlckJpbmRpbmcuYnVmZmVy
LmNvcHlSZWYoKSwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9Owot
fQotCi1zdGF0aWMgdm9pZCBzZXRCdWZmZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICph
cmd1bWVudEVuY29kZXIsIGNvbnN0IEdQVUJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRpbmcsIHVu
c2lnbmVkIG5hbWUsIHVuc2lnbmVkIGxlbmd0aE5hbWUpCi17Ci0gICAgQVNTRVJUKGFyZ3VtZW50
RW5jb2RlciAmJiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBCb3VuZHMgY2hlY2sgd2hlbiBj
b252ZXJ0aW5nIEdQVUJ1ZmZlckJpbmRpbmcgZW5zdXJlcyB0aGF0IE5TVUludGVnZXIgY2FzdCBv
ZiB1aW50NjRfdCBvZmZzZXQgaXMgc2FmZS4KLSAgICBbYXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZl
cjpidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSBvZmZzZXQ6c3RhdGljX2Nh
c3Q8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZzZXQpIGF0SW5kZXg6bmFtZV07Ci0gICAg
dm9pZCogbGVuZ3RoUG9pbnRlciA9IFthcmd1bWVudEVuY29kZXIgY29uc3RhbnREYXRhQXRJbmRl
eDpsZW5ndGhOYW1lXTsKLSAgICBtZW1jcHkobGVuZ3RoUG9pbnRlciwgJmJ1ZmZlckJpbmRpbmcu
c2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotICAgIAotc3RhdGljIE1UTFNhbXBsZXJTdGF0ZSAqdHJ5R2V0UmVzb3VyY2VBc010bFNhbXBs
ZXIoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3Qg
ZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5j
dGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxj
b25zdCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczog
UmVzb3VyY2UgaXMgbm90IGEgR1BVU2FtcGxlciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byBzYW1wbGVyU3RhdGUgPSBXVEY6OmdldDxS
ZWY8Y29uc3QgR1BVU2FtcGxlcj4+KHJlc291cmNlKS0+cGxhdGZvcm1TYW1wbGVyKCk7Ci0gICAg
aWYgKCFzYW1wbGVyU3RhdGUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1U
TFNhbXBsZXJTdGF0ZSBpbiBHUFVTYW1wbGVyIGJpbmRpbmchIiwgZnVuY3Rpb25OYW1lKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBzYW1wbGVyU3RhdGU7Ci19
Ci0KLXN0YXRpYyB2b2lkIHNldFNhbXBsZXJPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICph
cmd1bWVudEVuY29kZXIsIE1UTFNhbXBsZXJTdGF0ZSAqc2FtcGxlciwgdW5zaWduZWQgaW5kZXgp
Ci17Ci0gICAgQVNTRVJUKGFyZ3VtZW50RW5jb2RlciAmJiBzYW1wbGVyKTsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFthcmd1bWVudEVuY29kZXIgc2V0U2FtcGxlclN0
YXRlOnNhbXBsZXIgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotfQotCi1zdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUdldFJlc291cmNlQXNUZXh0dXJl
KGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1
bmN0aW9uTmFtZSkKLSAgICB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1
bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEdQVVRleHR1cmU+PihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNv
dXJjZSBpcyBub3QgYSBHUFVUZXh0dXJlVmlldyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byYgdGV4dHVyZVJlZiA9IFdURjo6Z2V0PFJl
ZjxHUFVUZXh0dXJlPj4ocmVzb3VyY2UpOwotICAgIGlmICghdGV4dHVyZVJlZi0+cGxhdGZvcm1U
ZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTFRleHR1cmUg
aW4gR1BVVGV4dHVyZVZpZXcgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHR1cmVSZWYuY29weVJlZigpOwotfQot
Ci1zdGF0aWMgdm9pZCBzZXRUZXh0dXJlT25FbmNvZGVyKE1UTEFyZ3VtZW50RW5jb2RlciAqYXJn
dW1lbnRFbmNvZGVyLCBNVExUZXh0dXJlICp0ZXh0dXJlLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAg
ICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHRleHR1cmUpOwotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRleHR1cmUg
YXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1SZWZQ
dHI8R1BVQmluZEdyb3VwPiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShjb25zdCBHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRv
cikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVQmluZEdyb3Vw
Ojp0cnlDcmVhdGUoKSI7Ci0gICAgCi0gICAgTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXhFbmNv
ZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPnZlcnRleEVuY29kZXIoKTsKLSAgICBNVExBcmd1bWVu
dEVuY29kZXIgKmZyYWdtZW50RW5jb2RlciA9IGRlc2NyaXB0b3IubGF5b3V0LT5mcmFnbWVudEVu
Y29kZXIoKTsKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGVFbmNvZGVyID0gZGVzY3Jp
cHRvci5sYXlvdXQtPmNvbXB1dGVFbmNvZGVyKCk7Ci0KLSAgICBhdXRvIG9mZnNldHMgPSBhbGxv
Y2F0b3IuYWxsb2NhdGVBbmRTZXRFbmNvZGVycyh2ZXJ0ZXhFbmNvZGVyLCBmcmFnbWVudEVuY29k
ZXIsIGNvbXB1dGVFbmNvZGVyKTsKLSAgICBpZiAoIW9mZnNldHMpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAotICAgIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+IGJvdW5kQnVmZmVyczsK
LSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gYm91bmRUZXh0dXJlczsKLQotICAgIC8vIFNl
dCBlYWNoIHJlc291cmNlIG9uIGVhY2ggTVRMQXJndW1lbnRFbmNvZGVyIGl0IHNob3VsZCBiZSB2
aXNpYmxlIG9uLgotICAgIGNvbnN0IGF1dG8mIGxheW91dEJpbmRpbmdzTWFwID0gZGVzY3JpcHRv
ci5sYXlvdXQtPmJpbmRpbmdzTWFwKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJjZUJp
bmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0gICAgICAgIGF1dG8gaW5kZXggPSByZXNv
dXJjZUJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgYXV0byBsYXlvdXRJdGVyYXRvciA9IGxheW91
dEJpbmRpbmdzTWFwLmZpbmQoaW5kZXgpOwotICAgICAgICBpZiAobGF5b3V0SXRlcmF0b3IgPT0g
bGF5b3V0QmluZGluZ3NNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczog
R1BVQmluZEdyb3VwQmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0ISIs
IGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgYXV0byBsYXlvdXRCaW5kaW5nID0gbGF5b3V0SXRlcmF0b3ItPnZhbHVl
OwotICAgICAgICBpZiAobGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcudmlzaWJpbGl0eSA9
PSBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6Ok5vbmUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBib29sIGlzRm9yVmVydGV4ID0gbGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcu
dmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4OwotICAgICAgICBib29s
IGlzRm9yRnJhZ21lbnQgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5
ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpGcmFnbWVudDsKLSAgICAgICAgYm9vbCBpc0ZvckNv
bXB1dGUgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYgR1BVU2hh
ZGVyU3RhZ2U6OkZsYWdzOjpDb21wdXRlOwotCi0gICAgICAgIGlmIChpc0ZvclZlcnRleCAmJiAh
dmVydGV4RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2ZXJ0ZXgg
YXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGlu
ZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChpc0ZvckZyYWdtZW50ICYmICFmcmFnbWVudEVuY29kZXIpIHsKLSAgICAgICAgICAgIExPRyhX
ZWJHUFUsICIlczogTm8gZnJhZ21lbnQgYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGlu
ZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZvckNvbXB1dGUgJiYgIWNvbXB1dGVFbmNvZGVy
KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIGNvbXB1dGUgYXJndW1lbnQgZW5j
b2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBoYW5kbGVC
dWZmZXIgPSBbJl0odW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lKSAtPiBib29sIHsKLSAgICAg
ICAgICAgIGF1dG8gYnVmZmVyUmVzb3VyY2UgPSB0cnlHZXRSZXNvdXJjZUFzQnVmZmVyQmluZGlu
ZyhyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBp
ZiAoIWJ1ZmZlclJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRCdWZmZXJPbkVuY29k
ZXIodmVydGV4RW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRCaW5kaW5nLmludGVybmFs
TmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50
KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIsICpi
dWZmZXJSZXNvdXJjZSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUsIGludGVybmFsTGVuZ3Ro
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNl
dEJ1ZmZlck9uRW5jb2Rlcihjb21wdXRlRW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRC
aW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGJv
dW5kQnVmZmVycy5hZGRWb2lkKFdURk1vdmUoYnVmZmVyUmVzb3VyY2UtPmJ1ZmZlcikpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBzdWNjZXNz
ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVu
aWZvcm1CdWZmZXImIHVuaWZvcm1CdWZmZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJu
IGhhbmRsZUJ1ZmZlcih1bmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAg
IH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVyJiBkeW5hbWlj
VW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlQnVmZmVy
KGR5bmFtaWNVbmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAgIH0sIFsm
XShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXImKSAtPiBib29sIHsKLSAgICAgICAgICAgIGF1
dG8gc2FtcGxlclN0YXRlID0gdHJ5R2V0UmVzb3VyY2VBc010bFNhbXBsZXIocmVzb3VyY2VCaW5k
aW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCFzYW1wbGVyU3Rh
dGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzRm9y
VmVydGV4KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIodmVydGV4RW5jb2Rl
ciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAgICAgICAg
ICBpZiAoaXNGb3JGcmFnbWVudCkKLSAgICAgICAgICAgICAgICBzZXRTYW1wbGVyT25FbmNvZGVy
KGZyYWdtZW50RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNldFNh
bXBsZXJPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHNhbXBsZXJTdGF0ZSwgbGF5b3V0QmluZGlu
Zy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0sIFsm
XShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlJikgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICBhdXRvIHRleHR1cmVSZXNvdXJjZSA9IHRyeUdldFJlc291cmNlQXNUZXh0dXJlKHJlc291
cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlmICghdGV4
dHVyZVJlc291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAgICBzZXRUZXh0dXJlT25FbmNvZGVyKHZl
cnRleEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxheW91dEJp
bmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50KQotICAg
ICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIoZnJhZ21lbnRFbmNvZGVyLCB0ZXh0dXJl
UmVzb3VyY2UtPnBsYXRmb3JtVGV4dHVyZSgpLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7
Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQotICAgICAgICAgICAgICAgIHNldFRleHR1
cmVPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0
dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGJvdW5kVGV4
dHVyZXMuYWRkVm9pZCh0ZXh0dXJlUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3Rv
cmFnZUJ1ZmZlciYgc3RvcmFnZUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4g
aGFuZGxlQnVmZmVyKHN0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAg
fSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXImIGR5bmFtaWNT
dG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIo
ZHluYW1pY1N0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSksIGxh
eW91dEJpbmRpbmcuaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7Ci0gICAgICAgIGlmICghc3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdQVUJpbmRHcm91cChXVEZNb3ZlKCpvZmZzZXRzKSwgYWxsb2NhdG9yLCBX
VEZNb3ZlKGJvdW5kQnVmZmVycyksIFdURk1vdmUoYm91bmRUZXh0dXJlcykpKTsKLX0KLSAgICAK
LUdQVUJpbmRHcm91cDo6R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1l
bnRCdWZmZXJPZmZzZXRzJiYgb2Zmc2V0cywgR1BVQmluZEdyb3VwQWxsb2NhdG9yJiBhbGxvY2F0
b3IsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYgYnVmZmVycywgSGFzaFNldDxSZWY8R1BVVGV4
dHVyZT4+JiYgdGV4dHVyZXMpCi0gICAgOiBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyhXVEZNb3Zl
KG9mZnNldHMpKQotICAgICwgbV9hbGxvY2F0b3IobWFrZVJlZihhbGxvY2F0b3IpKQotICAgICwg
bV9ib3VuZEJ1ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkKLSAgICAsIG1fYm91bmRUZXh0dXJlcyhX
VEZNb3ZlKHRleHR1cmVzKSkKLXsKLX0KLQotR1BVQmluZEdyb3VwOjp+R1BVQmluZEdyb3VwKCkK
LXsKLSAgICBtX2FsbG9jYXRvci0+dHJ5UmVzZXQoKTsKLX0KLSAgICAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDA1ZGE4YjEzMDNiZTkzYmYwZDQ5
Mjc4YjBkY2Y5YzZhMjg0OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BV
RGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Ci0jaW1w
b3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlYWRPbmx5
RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB7IEdQVUJ1ZmZlclVzYWdl
OjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4LCBHUFVCdWZmZXJV
c2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSB9
OwotCi0KLWJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgR1BVRXJy
b3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNl
KCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlk
IEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh1
c2FnZS5jb250YWluc0FsbCh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1
ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIkJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBN
QVBfV1JJVEUgdXNhZ2UhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVhdGUo
R1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotewotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9u
IHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIgc2l6ZSA9IDA7Ci0gICAgaWYgKCFXVEY6
OmNvbnZlcnRTYWZlbHkoZGVzY3JpcHRvci5zaXplLCBzaXplKSkgewotICAgICAgICBlcnJvclNj
b3Blcy5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIHVzYWdlID0gT3B0aW9uU2V0
PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0gICAg
aWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZSwgdXNhZ2UsIGVycm9yU2NvcGVzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBjb3B5QnVmZmVyVG9CdWZmZXIgY2FsbHMg
cmVxdWlyZSA0LWJ5dGUgYWxpZ25tZW50LiAiVW5tYXBwaW5nIiBhIG1hcHBlZC1vbi1jcmVhdGlv
biBHUFVCdWZmZXIKLSAgICAvLyB0aGF0IGlzIG90aGVyd2lzZSB1bm1hcHBhYmxlIHJlcXVpcmVz
IHN1Y2ggYSBjb3B5IHRvIHVwbG9hZCBkYXRhLgotICAgIGlmIChpc01hcHBlZCA9PSBHUFVCdWZm
ZXJNYXBwZWRPcHRpb246OklzTWFwcGVkCi0gICAgICAgICYmICF1c2FnZS5jb250YWluc0FueSh7
IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6
TWFwUmVhZCB9KQotICAgICAgICAmJiBkZXNjcmlwdG9yLnNpemUgJSA0KSB7Ci0gICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGF0YSBtdXN0IGJlIGFsaWduZWQgdG8g
YSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICAvLyBGSVhNRTogTWV0YWwgYmVzdCBwcmFjdGljZXM6IFJlYWQtb25seSBvbmUtdGlt
ZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBzaG91bGQgbm90IGFsbG9jYXRlIGEgTVRMQnVmZmVy
IGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5kRW5jb2RlciBzZXQqQnl0ZXNdIGNhbGxzIGluc3Rl
YWQuCi0KLSAgICBNVExSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zID0gTVRMUmVzb3Vy
Y2VDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7Ci0KLSAgICAvLyBNYXBwYWJsZSBidWZmZXJzIHVz
ZSBzaGFyZWQgc3RvcmFnZSBhbGxvY2F0aW9uLgotICAgIHJlc291cmNlT3B0aW9ucyB8PSB1c2Fn
ZS5jb250YWluc0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZl
clVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSA/IE1UTFJlc291cmNlU3RvcmFnZU1vZGVTaGFyZWQg
OiBNVExSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZTsKLQotICAgIFJldGFpblB0cjxNVExCdWZm
ZXI+IG10bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
bXRsQnVmZmVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QnVmZmVyV2l0
aExlbmd0aDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkZXNjcmlwdG9yLnNpemUpIG9wdGlvbnM6
cmVzb3VyY2VPcHRpb25zXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAoIW10bEJ1ZmZlcikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCIi
LCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVCdWZmZXIoV1RGTW92ZShtdGxC
dWZmZXIpLCBkZXZpY2UsIHNpemUsIHVzYWdlLCBpc01hcHBlZCkpOwotfQotCi1HUFVCdWZmZXI6
OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRGV2aWNlJiBkZXZp
Y2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwg
R1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkKQotICAgIDogbV9wbGF0Zm9ybUJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCi0gICAgLCBtX2RldmljZShtYWtlUmVmKGRldmljZSkpCi0gICAgLCBt
X2J5dGVMZW5ndGgoc2l6ZSkKLSAgICAsIG1fdXNhZ2UodXNhZ2UpCi0gICAgLCBtX2lzTWFwcGVk
RnJvbUNyZWF0aW9uKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBwZWQp
Ci17Ci0gICAgbV9wbGF0Zm9ybVVzYWdlID0gTVRMUmVzb3VyY2VVc2FnZVJlYWQ7Ci0gICAgaWYg
KGlzU3RvcmFnZSgpKQotICAgICAgICBtX3BsYXRmb3JtVXNhZ2UgfD0gTVRMUmVzb3VyY2VVc2Fn
ZVdyaXRlOwotfQotCi1HUFVCdWZmZXI6On5HUFVCdWZmZXIoKQotewotICAgIGRlc3Ryb3kobnVs
bHB0cik7Ci19Ci0KLWJvb2wgR1BVQnVmZmVyOjppc1JlYWRPbmx5KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV91c2FnZS5jb250YWluc0FueShyZWFkT25seUZsYWdzKTsKLX0KLQotR1BVQnVmZmVy
OjpTdGF0ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1C
dWZmZXIpCi0gICAgICAgIHJldHVybiBTdGF0ZTo6RGVzdHJveWVkOwotICAgIGlmIChtX2lzTWFw
cGVkRnJvbUNyZWF0aW9uIHx8IG1fbWFwcGluZ0NhbGxiYWNrKQotICAgICAgICByZXR1cm4gU3Rh
dGU6Ok1hcHBlZDsKLQotICAgIHJldHVybiBTdGF0ZTo6VW5tYXBwZWQ7Ci19Ci0KLUpTQzo6QXJy
YXlCdWZmZXIqIEdQVUJ1ZmZlcjo6bWFwT25DcmVhdGlvbigpCi17Ci0gICAgQVNTRVJUKG1faXNN
YXBwZWRGcm9tQ3JlYXRpb24pOwotICAgIHJldHVybiBzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKTsK
LX0KLQotI2lmIFVTRShNRVRBTCkKLXZvaWQgR1BVQnVmZmVyOjpjb21tYW5kQnVmZmVyQ29tbWl0
dGVkKE1UTENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICArK21fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnM7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBNYWtlIHN1cmUgfHRoaXN8IG9ubHkg
Z2V0cyByZWYnZCAvIGRlcmVmJ2Qgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNlIGl0IGlzIG5vdCBU
aHJlYWRTYWZlUmVmQ291bnRlZC4KLSAgICBbY29tbWFuZEJ1ZmZlciBhZGRDb21wbGV0ZWRIYW5k
bGVyOm1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShp
ZDxNVExDb21tYW5kQnVmZmVyPikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAg
ICAgICBjb21tYW5kQnVmZmVyQ29tcGxldGVkKCk7Ci0gICAgICAgIH0pOwotICAgIH0pLmdldCgp
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVQnVmZmVyOjpj
b21tYW5kQnVmZmVyQ29tcGxldGVkKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzKTsKLQotICAgIGlmIChtX251
bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzID09IDEgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVk
KQotICAgICAgICBydW5NYXBwaW5nQ2FsbGJhY2soKTsKLQotICAgIC0tbV9udW1TY2hlZHVsZWRD
b21tYW5kQnVmZmVyczsKLX0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0KLXZvaWQgR1BVQnVmZmVy
OjpyZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBjYWxsYmFjaywgYm9v
bCBpc1JlYWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICAvLyBSZWplY3Qg
aWYgcmVxdWVzdCBpcyBpbnZhbGlkLgotICAgIGlmIChpc1JlYWQgJiYgIWlzTWFwUmVhZGFibGUo
KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQg
b3BlcmF0aW9uISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoIWlzUmVhZCAmJiAhaXNNYXBXcml0ZWFibGUoKSkgewotICAgICAg
ICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIp
OwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVCghbV9tYXBwaW5nQ2FsbGJhY2sgJiYgIW1fbWFwcGluZ0NhbGxiYWNrVGFzay5p
c1BlbmRpbmcoKSk7Ci0KLSAgICAvLyBBbiBleGlzdGluZyBjYWxsYmFjayBtZWFucyB0aGlzIGJ1
ZmZlciBpcyBpbiB0aGUgbWFwcGVkIHN0YXRlLgotICAgIG1fbWFwcGluZ0NhbGxiYWNrID0gUGVu
ZGluZ01hcHBpbmdDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIC8v
IElmIEdQVSBpcyBub3QgdXNpbmcgdGhpcyBidWZmZXIsIHJ1biB0aGUgY2FsbGJhY2sgQVNBUC4K
LSAgICBpZiAoIW1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZlcnMpIHsKLSAgICAgICAgbV9tYXBw
aW5nQ2FsbGJhY2tUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJ1bk1hcHBpbmdDYWxsYmFjaygp
OwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpydW5NYXBwaW5nQ2Fs
bGJhY2soKQotewotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykKLSAgICAgICAgbV9tYXBwaW5n
Q2FsbGJhY2stPmNhbGxiYWNrKGlzTWFwUmVhZCgpID8gc3RhZ2luZ0J1ZmZlckZvclJlYWQoKSA6
IHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpKTsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVm
ZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVhZCgpCi17Ci0gICAgaWYgKCFtX3N0YWdpbmdCdWZmZXIp
Ci0gICAgICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9wbGF0Zm9y
bUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAg
IG1lbWNweShtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5j
b250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLQotICAgIHJldHVybiBtX3N0YWdpbmdCdWZmZXIuZ2V0
KCk7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6c3RhZ2luZ0J1ZmZlckZvcldy
aXRlKCkKLXsKLSAgICBtX3N0YWdpbmdCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDEsIG1f
Ynl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0KLQotdm9p
ZCBHUFVCdWZmZXI6OmNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMqIGVycm9y
U2NvcGVzKQotewotICAgIE1UTENvbW1hbmRRdWV1ZSAqcXVldWU7Ci0gICAgaWYgKCFtX2Rldmlj
ZS0+dHJ5R2V0UXVldWUoKSB8fCAhKHF1ZXVlID0gbV9kZXZpY2UtPnRyeUdldFF1ZXVlKCktPnBs
YXRmb3JtUXVldWUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxNVExCdWZm
ZXI+IHN0YWdpbmdNdGxCdWZmZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAvLyBHUFVCdWZmZXIgY3JlYXRpb24gdmFsaWRhdGlvbiBlbnN1cmVzIG1fYnl0ZVNpemUg
Zml0cyBpbiBOU1VJbnRlZ2VyLgotICAgIHN0YWdpbmdNdGxCdWZmZXIgPSBhZG9wdE5TKFttX2Rl
dmljZS0+cGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoQnl0ZXM6bV9zdGFnaW5nQnVmZmVy
LT5kYXRhKCkgbGVuZ3RoOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0aCkgb3B0
aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZV0pOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc3RhZ2luZ010bEJ1ZmZlciAmJiBlcnJvclNj
b3BlcykgewotICAgICAgICBlcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JG
aWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBjb21tYW5kQnVmZmVyID0gcmV0YWlu
UHRyKFtxdWV1ZSBjb21tYW5kQnVmZmVyXSk7Ci0gICAgYXV0byBibGl0RW5jb2RlciA9IHJldGFp
blB0cihbY29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29kZXJdKTsKLQotICAgIFtibGl0RW5j
b2RlciBjb3B5RnJvbUJ1ZmZlcjpzdGFnaW5nTXRsQnVmZmVyLmdldCgpIHNvdXJjZU9mZnNldDow
IHRvQnVmZmVyOm1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkgZGVzdGluYXRpb25PZmZzZXQ6MCBzaXpl
OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxlbmd0aCldOwotICAgIFtibGl0RW5jb2Rl
ciBlbmRFbmNvZGluZ107Ci0gICAgW2NvbW1hbmRCdWZmZXIgY29tbWl0XTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OnVubWFwKEdQVUVycm9y
U2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIW1faXNNYXBwZWRGcm9tQ3JlYXRpb24g
JiYgIWlzTWFwcGFibGUoKSAmJiBlcnJvclNjb3BlcykgewotICAgICAgICBlcnJvclNjb3Blcy0+
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogR1BVQnVmZmVyIGlzIG5v
dCBtYXBwYWJsZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3N0YWdp
bmdCdWZmZXIpIHsKLSAgICAgICAgaWYgKGlzTWFwcGFibGUoKSkgewotICAgICAgICAgICAgLy8g
TUFQX1dSSVRFIGFuZCBNQVBfUkVBRCBidWZmZXJzIGhhdmUgc2hhcmVkLCBDUFUtYWNjZXNzaWJs
ZSBzdG9yYWdlLgotICAgICAgICAgICAgQVNTRVJUKG1fcGxhdGZvcm1CdWZmZXIgJiYgbV9wbGF0
Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cyk7Ci0gICAgICAgICAgICBtZW1jcHkobV9wbGF0Zm9y
bUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9zdGFnaW5nQnVmZmVyLT5kYXRhKCksIG1fYnl0ZUxl
bmd0aCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9pc01hcHBlZEZyb21DcmVhdGlvbikKLSAgICAg
ICAgICAgIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoZXJyb3JTY29wZXMpOwotCi0gICAgICAgIG1f
aXNNYXBwZWRGcm9tQ3JlYXRpb24gPSBmYWxzZTsKLSAgICAgICAgbV9zdGFnaW5nQnVmZmVyID0g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAobV9tYXBwaW5nQ2FsbGJhY2spIHsKLSAgICAgICAg
bV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmNhbmNlbFRhc2soKTsKLSAgICAgICAgbV9tYXBwaW5nQ2Fs
bGJhY2stPmNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFjayA9IG51
bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIEdQVUJ1ZmZlcjo6ZGVzdHJveShHUFVFcnJvclNjb3Bl
cyogZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6Ok1hcHBlZCkKLSAg
ICAgICAgdW5tYXAoZXJyb3JTY29wZXMpOwotCi0gICAgbV9wbGF0Zm9ybUJ1ZmZlciA9IG51bGxw
dHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWUxZGNjNmIxNmQwMjM0YjNlYzRkMWMzMzA3ZGM4ZGM1ZWFlMWMxNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXh0ZW50M0QuaCIKLSNp
bXBvcnQgIkdQVVF1ZXVlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRy
PEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTogSW52YWxpZCBH
UFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
Z3B1Q29tbWFuZFF1ZXVlID0gZGV2aWNlLnRyeUdldFF1ZXVlKCk7Ci0gICAgaWYgKCFncHVDb21t
YW5kUXVldWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBtdGxRdWV1ZSA9
IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1ZSgpOwotCi0gICAgUmV0YWluUHRyPE1UTENv
bW1hbmRCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgYnVmZmVyID0gW210bFF1ZXVlIGNvbW1hbmRCdWZmZXJdOwotCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1h
bmRCdWZmZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQot
R1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcihSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1
ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpCi17Ci19Ci0KLUdQVUNvbW1hbmRCdWZmZXI6On5HUFVDb21tYW5kQnVmZmVyKCkKLXsK
LSAgICBlbmRCbGl0RW5jb2RpbmcoKTsKLX0KLQotTVRMQmxpdENvbW1hbmRFbmNvZGVyICpHUFVD
b21tYW5kQnVmZmVyOjpibGl0RW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmxpdEVu
Y29kZXIgPyBtX2JsaXRFbmNvZGVyLmdldCgpIDogKG1fYmxpdEVuY29kZXIgPSBbbV9wbGF0Zm9y
bUNvbW1hbmRCdWZmZXIgYmxpdENvbW1hbmRFbmNvZGVyXSkuZ2V0KCk7Ci19Ci0KLXZvaWQgR1BV
Q29tbWFuZEJ1ZmZlcjo6ZW5kQmxpdEVuY29kaW5nKCkKLXsKLSAgICBpZiAoIW1fYmxpdEVuY29k
ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9ibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIG1fYmxpdEVuY29kZXIgPSBudWxscHRyOwotfQotCi12b2lkIEdQVUNvbW1hbmRC
dWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdWludDY0X3Qg
c3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50
NjRfdCBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFzcmMtPmlzQ29weVNv
dXJjZSgpIHx8ICFkc3QtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJh
dGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBpZiAoc2l6ZSAlIDQgfHwgc3JjT2Zmc2V0ICUgNCB8fCBkc3RPZmZzZXQgJSA0KSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTog
Q29weSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBUaGlzIGNhbGwgZW5zdXJlcyB0aGF0
IHNpemUsIG9mZnNldCwgYW5kIHNpemUgKyBvZmZzZXQgY2FuIHNhZmVseSBmaXQgaW4gTlNVSW50
ZWdlciByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLgotICAgIGF1dG8gc3JjTGVuZ3RoID0gY2hlY2tl
ZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBzcmNPZmZzZXQpOwotICAgIGF1dG8gZHN0TGVuZ3RoID0g
Y2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBkc3RPZmZzZXQpOwotICAgIGlmIChzcmNMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0aC5oYXNPdmVyZmxvd2VkKCkKLSAgICAgICAg
fHwgc3JjTGVuZ3RoID4gc3JjLT5ieXRlTGVuZ3RoKCkgfHwgZHN0TGVuZ3RoID4gZHN0LT5ieXRl
TGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlC
dWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCBvciBjb3B5IHNpemUhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
IC8vIFRoZXNlIGNhc3RzIGFyZSBzYWZlIGR1ZSB0byBlYXJsaWVyIGNoZWNrZWRTdW0oKSBjaGVj
a3MuCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21CdWZmZXI6c3JjLT5wbGF0
Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2Vy
PihzcmNPZmZzZXQpCi0gICAgICAgIHRvQnVmZmVyOmRzdC0+cGxhdGZvcm1CdWZmZXIoKQotICAg
ICAgICBkZXN0aW5hdGlvbk9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkc3RPZmZzZXQp
Ci0gICAgICAgIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2l6ZSldOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlQnVmZmVyKFdURk1vdmUoc3JjKSk7Ci0g
ICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0KSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5VmlldyYmIHNyY0J1ZmZlciwgR1BVVGV4
dHVyZUNvcHlWaWV3JiYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0g
ICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY0J1ZmZlci5idWZmZXItPmlzQ29weVNvdXJj
ZSgpIHx8ICFkc3RUZXh0dXJlLnRleHR1cmUtPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoKTog
SW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBN
VExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jtcy4K
LSAgICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IDA7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRT
YWZlbHkoc3JjQnVmZmVyLm9mZnNldCwgc291cmNlT2Zmc2V0KSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBTb3VyY2Ugb2Zm
c2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJ
WE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbi4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpv
ZmZzZXQ6IFRoZSBsb2NhdGlvbiBtdXN0IGJlIGFsaWduZWQgdG8gdGhlIHNpemUgb2YgdGhlIGRl
c3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBmb3JtYXQuIFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVs
dGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRlcy4K
LQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpyb3dQaXRjaDogVGhlIHZhbHVlIG11c3QgYmUg
YSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5
dGVzLiBUaGUgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIsNzY3IG11bHRp
cGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmXigJlzIHBpeGVsIHNpemUuCi0KLSAgICAv
LyBHUFVCdWZmZXJDb3B5Vmlldzo6aW1hZ2VIZWlnaHQ6IFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVs
dGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRlcy4K
LQotICAgIC8vIEdQVUV4dGVudDNEOiBXaGVuIHlvdSBjb3B5IHRvIGEgMUQgdGV4dHVyZSwgaGVp
Z2h0IGFuZCBkZXB0aCBtdXN0IGJlIDEuIFdoZW4geW91IGNvcHkgdG8gYSAyRCB0ZXh0dXJlLCBk
ZXB0aCBtdXN0IGJlIDEuCi0KLSAgICAvLyBHUFVUZXh0dXJlQ29weVZpZXc6OnRleHR1cmU6IFRo
ZSB2YWx1ZSBtdXN0IG5vdCBiZSBhIGZyYW1lYnVmZmVyT25seSB0ZXh0dXJlIGFuZCBtdXN0IG5v
dCBoYXZlIGEgUFZSVEMgcGl4ZWwgZm9ybWF0LgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBbYmxpdEVuY29kZXIoKQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmNC
dWZmZXIuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNldDpzb3Vy
Y2VPZmZzZXQKLSAgICAgICAgc291cmNlQnl0ZXNQZXJSb3c6c3JjQnVmZmVyLnJvd1BpdGNoCi0g
ICAgICAgIHNvdXJjZUJ5dGVzUGVySW1hZ2U6c3JjQnVmZmVyLmltYWdlSGVpZ2h0Ci0gICAgICAg
IHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVw
dGgpCi0gICAgICAgIHRvVGV4dHVyZTpkc3RUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4dHVy
ZSgpCi0gICAgICAgIGRlc3RpbmF0aW9uU2xpY2U6ZHN0VGV4dHVyZS5hcnJheUxheWVyCi0gICAg
ICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0VGV4dHVyZS5taXBMZXZlbAotICAgICAgICBkZXN0aW5h
dGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdFRleHR1cmUub3JpZ2luLngsIGRzdFRleHR1cmUu
b3JpZ2luLnksIGRzdFRleHR1cmUub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHVzZUJ1ZmZlcihXVEZNb3ZlKHNyY0J1ZmZlci5idWZmZXIpKTsKLSAg
ICB1c2VUZXh0dXJlKFdURk1vdmUoZHN0VGV4dHVyZS50ZXh0dXJlKSk7Ci19Ci0KLXZvaWQgR1BV
Q29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcmJiBz
cmNUZXh0dXJlLCBHUFVCdWZmZXJDb3B5VmlldyYmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50
M0QmIHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY1RleHR1cmUudGV4
dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdEJ1ZmZlci5idWZmZXItPmlzQ29weURlc3RpbmF0
aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0
dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29t
ZSBwbGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCA9IDA7Ci0gICAg
aWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZHN0QnVmZmVyLm9mZnNldCwgZGVzdGluYXRpb25PZmZz
ZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVy
ZVRvQnVmZmVyKCk6IERlc3RpbmF0aW9uIG9mZnNldCBpcyB0b28gbGFyZ2UhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2RlcigpCi0g
ICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4dHVy
ZSgpCi0gICAgICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1cmUuYXJyYXlMYXllcgotICAgICAgICBz
b3VyY2VMZXZlbDpzcmNUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpNVExP
cmlnaW5NYWtlKHNyY1RleHR1cmUub3JpZ2luLngsIHNyY1RleHR1cmUub3JpZ2luLnksIHNyY1Rl
eHR1cmUub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0
aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvQnVmZmVyOmRzdEJ1ZmZlci5i
dWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAgZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGlu
YXRpb25PZmZzZXQKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlclJvdzpkc3RCdWZmZXIucm93
UGl0Y2gKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1BlckltYWdlOmRzdEJ1ZmZlci5pbWFnZUhl
aWdodF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB1c2VUZXh0dXJl
KFdURk1vdmUoc3JjVGV4dHVyZS50ZXh0dXJlKSk7Ci0gICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0
QnVmZmVyLmJ1ZmZlcikpOwotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJl
VG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyYywgR1BVVGV4dHVyZUNvcHlWaWV3JiYg
ZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bhc3Mo
KSB8fCAhc3JjLnRleHR1cmUtPmlzQ29weVNvdXJjZSgpIHx8ICFkc3QudGV4dHVyZS0+aXNDb3B5
RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5jb2RlcigpCi0gICAg
ICAgIGNvcHlGcm9tVGV4dHVyZTpzcmMudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAg
ICAgc291cmNlU2xpY2U6c3JjLmFycmF5TGF5ZXIKLSAgICAgICAgc291cmNlTGV2ZWw6c3JjLm1p
cExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpNVExPcmlnaW5NYWtlKHNyYy5vcmlnaW4ueCwg
c3JjLm9yaWdpbi55LCBzcmMub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1h
a2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvVGV4dHVy
ZTpkc3QudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgZGVzdGluYXRpb25TbGlj
ZTpkc3QuYXJyYXlMYXllcgotICAgICAgICBkZXN0aW5hdGlvbkxldmVsOmRzdC5taXBMZXZlbAot
ICAgICAgICBkZXN0aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdC5vcmlnaW4ueCwgZHN0
Lm9yaWdpbi55LCBkc3Qub3JpZ2luLnopXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmMudGV4dHVyZSkpOwotICAgIHVzZVRleHR1
cmUoV1RGTW92ZShkc3QudGV4dHVyZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNz
RW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmM2MGU0NTNl
N2ZjMmY1ZTRiOTYyNjVhMWVjNzNmOWVkOWEyYTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDEzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQot
ewotICAgIGlmIChidWZmZXItPmlzRW5jb2RpbmdQYXNzKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKCk6IEV4aXN0aW5nIHBhc3MgZW5j
b2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBidWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotCi0gICAgUmV0YWluUHRyPE1U
TENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIG10bEVuY29kZXIgPSBbYnVmZmVyLT5wbGF0Zm9ybUNvbW1hbmRC
dWZmZXIoKSBjb21wdXRlQ29tbWFuZEVuY29kZXJdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmICghbXRsRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21w
dXRlQ29tbWFuZEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVm
ZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQotCi1HUFVDb21wdXRlUGFzc0VuY29kZXI6
OkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIsIFJl
dGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IEdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAsIG1fcGxhdGZvcm1D
b21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKLXsKLX0KLQotdm9pZCBHUFVDb21w
dXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxjb25zdCBHUFVDb21wdXRlUGlwZWxpbmU+
JiYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5l
KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUKHBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVy
IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGlu
ZSgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX3BpcGVsaW5lID0g
V1RGTW92ZShwaXBlbGluZSk7Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNw
YXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlmICghbV9w
bGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBObyB2YWxpZCBHUFVD
b21wdXRlUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQobV9waXBlbGluZS0+cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUoKSk7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGF1dG8gdGhyZWFkc1BlclRocmVhZGdyb3Vw
ID0gTVRMU2l6ZU1ha2UobV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS53aWR0aCwgbV9w
aXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5oZWlnaHQsIG1fcGlwZWxpbmUtPmNvbXB1dGVE
aW1lbnNpb25zKCkuZGVwdGgpOwotCi0gICAgYXV0byB0aHJlYWRncm91cHNQZXJHcmlkID0gTVRM
U2l6ZU1ha2UoeCwgeSwgeik7Ci0KLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBk
aXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRncm91cHNQZXJHcmlkIHRocmVhZHNQZXJUaHJlYWRn
cm91cDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXBdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotfQotCi1jb25zdCBNVExDb21tYW5kRW5jb2RlciAqR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
OjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybUNv
bXB1dGVQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLQotdm9pZCBHUFVD
b21wdXRlUGFzc0VuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICpyZXNvdXJj
ZSwgdW5zaWduZWQgdXNhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1Db21wdXRlUGFzc0Vu
Y29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZv
cm1Db21wdXRlUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICpidWZmZXIsIE5TVUludGVn
ZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1
dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNldDpvZmZz
ZXQgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi0j
ZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTljYTM3OGEwZWFmZGIzZmE2MzYzZWRhMWZhMGMwZmYxZjE5Mzkx
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0
YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0j
aW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0
ICJHUFVQaXBlbGluZUxheW91dC5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRM
YXlvdXQuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvRGF0
YUxvZy5oPgotI2ltcG9ydCA8d3RmL01vbm90b25pY1RpbWUuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGJv
b2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqY29tcHV0ZU1ldGFsTGlicmFyeSwg
TVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3QgU3RyaW5n
JiBjb21wdXRlRW50cnlQb2ludE5hbWUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghY29tcHV0ZU1ldGFs
TGlicmFyeSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk1U
TExpYnJhcnkgZm9yIGNvbXB1dGUgc3RhZ2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbY29tcHV0
ZU1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbXB1dGVFbnRyeVBvaW50TmFtZV0p
OwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVhdGUgY29tcHV0ZSBNVExGdW5jdGlvbiAn
IiwgY29tcHV0ZUVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wdXRlRnVuY3Rpb246ZnVuY3Rpb24u
Z2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4g
dHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29t
cHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBjb21wdXRlTGlicmFyeTsKLSAgICBT
dHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7Ci0KLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMg
Y29tcHV0ZURpbWVuc2lvbnMgeyAxLCAxLCAxIH07Ci0KLSAgICBpZiAod2hsc2xEZXNjcmlwdG9y
KSB7Ci0gICAgICAgIEFTU0VSVChjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpKTsK
LQotICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmVudHJ5UG9pbnROYW1lID0gY29tcHV0ZVN0YWdl
LmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6
cHJlcGFyZSgqY29tcHV0ZVN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgKndobHNsRGVzY3Jp
cHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29tcGls
ZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wdXRlRGltZW5zaW9u
cyA9IHdobHNsQ29tcGlsZVJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICAgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgICAgICBpZiAoV0hMU0w6OmR1
bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvMjAwNDc0
IEFkZCBkaXJlY3QgU3RyaW5nQnVpbGRlciAtPiBOU1N0cmluZyBjb252ZXJzaW9uIHRvIGF2b2lk
IGV4dHJhIGNvcHkgaW50byBhIFdURjo6U3RyaW5nCi0gICAgICAgIGNvbXB1dGVMaWJyYXJ5ID0g
YWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6d2hs
c2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygpIG9wdGlvbnM6bmlsIGVycm9y
OiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAg
ICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1lczogIiwgKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotICAgICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBpZiAoIWNv
bXB1dGVMaWJyYXJ5KQotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRpZgot
ICAgICAgICBBU1NFUlQoY29tcHV0ZUxpYnJhcnkpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBPbmNlIHdlIHplcm8tZmls
bCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywgc28gd2Ugc2hvdWxkIGJl
IGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBjb21wdXRlRW50cnlQb2lu
dCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZEVudHJ5UG9pbnROYW1lLnRvU3RyaW5nKCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBjb21wdXRlU3RhZ2UubW9k
dWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAgICAgICBjb21wdXRlRW50cnlQb2ludCA9
IGNvbXB1dGVTdGFnZS5lbnRyeVBvaW50OwotICAgIH0KLQotICAgIGlmICh0cnlTZXRNZXRhbEZ1
bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgY29tcHV0ZUVudHJ5
UG9pbnQsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25zOwot
Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENvbnZlcnRSZXN1bHQgewot
ICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBwaXBlbGluZURlc2Ny
aXB0b3I7Ci0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25zOwot
fTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gbXRs
RGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10bERl
c2NyaXB0b3IgPSBhZG9wdE5TKFtNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikg
ewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0
aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVzY3Jp
cHRvci5jb21wdXRlU3RhZ2U7Ci0KLSAgICBib29sIGlzV2hsc2wgPSBjb21wdXRlU3RhZ2UubW9k
dWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9yOwotICAgIGlmIChpc1dobHNsKQotICAg
ICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcigp
OwotCi0gICAgaWYgKGRlc2NyaXB0b3IubGF5b3V0ICYmIHdobHNsRGVzY3JpcHRvcikgewotICAg
ICAgICBpZiAoYXV0byBsYXlvdXQgPSBjb252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91dCkp
Ci0gICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91dCk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhl
ZEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIEdQVVBpcGVsaW5lTGF5b3V0ISIpOwotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRv
IGNvbXB1dGVEaW1lbnNpb25zID0gdHJ5U2V0RnVuY3Rpb25zKGNvbXB1dGVTdGFnZSwgZGV2aWNl
LCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAg
ICAgICAgcmV0dXJuIHt7IG10bERlc2NyaXB0b3IsICpjb21wdXRlRGltZW5zaW9ucyB9fTsKLQot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0cnVjdCBDcmVhdGVSZXN1bHQgewotICAg
IFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmVTdGF0ZTsKLSAgICBX
SExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1zdGF0aWMg
c3RkOjpvcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0
YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAg
aWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gY29udmVydFJlc3VsdCA9IGNvbnZlcnRD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGRldmljZSwgZXJyb3JTY29wZXMp
OwotICAgIGlmICghY29udmVydFJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBBU1NFUlQoY29udmVydFJlc3VsdC0+cGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBhdXRv
IG10bERlc2NyaXB0b3IgPSBjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3I7Ci0KLSAg
ICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAg
ICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBvcHRpb25zOk1U
TFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAgICBp
ZiAoIXBpcGVsaW5lKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJv
cihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcgOiAiVW5hYmxl
IHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSEiKTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICByZXR1cm4ge3sgcGlwZWxpbmUsIGNvbnZlcnRSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zIH19
OwotfQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVDb21wdXRlUGlwZWxpbmU6OnRy
eUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewot
ICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUo
ZGV2aWNlLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFjcmVhdGVSZXN1bHQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVD
b21wdXRlUGlwZWxpbmUoV1RGTW92ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpLCBjcmVh
dGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zLCBkZXNjcmlwdG9yLmxheW91dCkpOwotfQotCi1H
UFVDb21wdXRlUGlwZWxpbmU6OkdQVUNvbXB1dGVQaXBlbGluZShSZXRhaW5QdHI8TVRMQ29tcHV0
ZVBpcGVsaW5lU3RhdGU+JiYgcGlwZWxpbmUsIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21w
dXRlRGltZW5zaW9ucywgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0KQot
ICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZShXVEZN
b3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZURpbWVuc2lvbnMoY29tcHV0ZURpbWVuc2lv
bnMpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi17Ci19Ci0KLUdQVUNvbXB1dGVQaXBlbGluZTo6
fkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVDb21wdXRlUGlwZWxp
bmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKQotewotICAgIEdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RGTW92ZShj
b21wdXRlU3RhZ2UpKTsKLSAgICBhdXRvIGVycm9yU2NvcGVzID0gR1BVRXJyb3JTY29wZXM6OmNy
ZWF0ZShbXSAoR1BVRXJyb3ImJikgeyB9KTsKLSAgICBpZiAoYXV0byBjcmVhdGVSZXN1bHQgPSB0
cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9y
U2NvcGVzKSkgewotICAgICAgICBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lID0gV1RGTW92ZShj
cmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpOwotICAgICAgICBtX2NvbXB1dGVEaW1lbnNpb25z
ID0gY3JlYXRlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCmluZGV4
IGEzOGY2OTVhODczMDJmOTUwMTEyM2U4YjVlM2YyYTlhYzBlMGM4YWQuLjFkNDYyNmViZjEzZWFi
ZWUxNjAwNjY3ZDQxN2U3ZTJiYWQzYmI3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KQEAg
LTI2LDIzICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucy5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTWV0YWxTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgaXNBY2Nl
cHRhYmxlRGV2aWNlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKLXsKLSAgICBVTlVTRURfUEFSQU0o
ZGV2aWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHUFVEZXZpY2U6OnByZXdhcm0o
KQordm9pZCBwcmV3YXJtR1BVKCkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gQ2FsbCBN
VExDb3B5QWxsRGV2aWNlcygpIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgaGFuZ2lu
ZyB0aGUgbWFpbiB0aHJlYWQuCkBAIC01Miw1MCArNDAsNCBAQCB2b2lkIEdQVURldmljZTo6cHJl
d2FybSgpCiAjZW5kaWYKIH0KIAotUmVmUHRyPEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVh
dGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25z
KQotewotICAgIFJldGFpblB0cjxNVExEZXZpY2U+IGRldmljZVB0cjsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIW9w
dGlvbnMgfHwgIW9wdGlvbnMtPnBvd2VyUHJlZmVyZW5jZSB8fCBvcHRpb25zLT5wb3dlclByZWZl
cmVuY2UgPT0gR1BVUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcikgewotICAgICAgICBhdXRvIGRl
dmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2VzKCkpOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2UgOiBkZXZpY2VzLmdldCgpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWlzQWNjZXB0YWJsZURldmljZShkZXZpY2UpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKGRldmljZS5sb3dQb3dlcikgewotICAgICAgICAgICAgICAg
IGRldmljZVB0ciA9IGRldmljZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwot
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWRldmljZVB0cikKLSAgICAgICAgZGV2
aWNlUHRyID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpOwotCi0gICAg
aWYgKCFpc0FjY2VwdGFibGVEZXZpY2UoZGV2aWNlUHRyLmdldCgpKSkKLSAgICAgICAgZGV2aWNl
UHRyLmNsZWFyKCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAo
IWRldmljZVB0cikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVRGV2aWNlOjpHUFVEZXZpY2Uo
KTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OkdQVURldmljZSgpOiBNVExE
ZXZpY2UgaXMgJXAiLCBkZXZpY2VQdHIuZ2V0KCkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlUHRyKSkpOwotfQotCi1HUFVEZXZpY2U6OkdQVURldmlj
ZShSZXRhaW5QdHI8TVRMRGV2aWNlPiYmIGRldmljZSkKLSAgICA6IG1fcGxhdGZvcm1EZXZpY2Uo
V1RGTW92ZShkZXZpY2UpKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFs
Q29udmVydExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZTA5ODhj
OTMwYTAwYjc0Njc3N2M3YTA2YjdkOWQxZjQxMzE2NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIkdQVVNoYWRl
clN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE9wdGlvblNldDxXSExT
TDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxh
Z3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PFdITFNMOjpTaGFkZXJTdGFnZT4gcmVzdWx0Owot
ICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6VmVydGV4KQotICAgICAgICBy
ZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVydGV4KTsKLSAgICBpZiAoZmxhZ3MgJiBH
UFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50KQotICAgICAgICByZXN1bHQuYWRkKFdITFNM
OjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdl
OjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6
OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gY29udmVydEJpbmRpbmdUeXBlKEdQVUJp
bmRHcm91cExheW91dDo6SW50ZXJuYWxCaW5kaW5nRGV0YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRh
aWxzKQotewotICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJp
bmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciB1bmlmb3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBX
SExTTDo6VW5pZm9ybUJ1ZmZlckJpbmRpbmcgeyB1bmlmb3JtQnVmZmVyLmludGVybmFsTGVuZ3Ro
TmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1VuaWZvcm1C
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0Rl
dGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlNhbXBsZXJCaW5kaW5nIHsgfSB9Owot
ICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlKSAtPiBzdGQ6Om9w
dGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4g
eyBXSExTTDo6VGV4dHVyZUJpbmRpbmcgeyB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNM
OjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6U3Rv
cmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07
Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSksIGludGVybmFsQmluZGluZ0RldGFpbHMpOwot
fQotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BV
UGlwZWxpbmVMYXlvdXQmIGxheW91dCkKLXsKLSAgICBXSExTTDo6TGF5b3V0IHJlc3VsdDsKLSAg
ICBpZiAobGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygpLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGJpbmRHcm91cExheW91dCA9IGxheW91dC5iaW5k
R3JvdXBMYXlvdXRzKClbaV07Ci0gICAgICAgIFdITFNMOjpCaW5kR3JvdXAgYmluZEdyb3VwOwot
ICAgICAgICBiaW5kR3JvdXAubmFtZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKTsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIgOiBiaW5kR3JvdXBMYXlvdXQtPmJpbmRp
bmdzTWFwKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJpbmRpbmdEZXRhaWxzID0ga2V5
VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICAgICAgV0hMU0w6OkJpbmRpbmcgYmluZGluZzsKLSAg
ICAgICAgICAgIGJpbmRpbmcudmlzaWJpbGl0eSA9IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKGJp
bmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5KTsKLSAgICAgICAgICAgIGlm
IChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRpbmdUeXBlKGJpbmRpbmdEZXRhaWxzLmlu
dGVybmFsQmluZGluZ0RldGFpbHMpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcuYmluZGluZyA9
ICpiaW5kaW5nVHlwZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICAgICAgaWYgKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmlu
ZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBiaW5kaW5nLmV4
dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy5iaW5kaW5nOwotICAg
ICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5hbWUgPSBiaW5kaW5nRGV0YWlscy5pbnRlcm5hbE5h
bWU7Ci0gICAgICAgICAgICBiaW5kR3JvdXAuYmluZGluZ3MuYXBwZW5kKFdURk1vdmUoYmluZGlu
ZykpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShiaW5kR3JvdXAp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVs
aW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5
N2RkNTJkZDdlNWRhMmFkMWQ0YTFjZGNmMmJjMTIxNWU4MzUzM2MuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dDsKLQotc3RkOjpv
cHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5
b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzOWFiNTQzNTg2ZTE0ZWU4ZmQ1NjA4YzA0
ZWQzNmUxNzk4MWQzYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBsYXRm
b3JtVHlwZXNNZXRhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBDQU1ldGFsRHJhd2FibGU7
Ci1PQkpDX0NMQVNTIFdlYkdQVUxheWVyOwotCi1PQkpDX1BST1RPQ09MKE1UTEFyZ3VtZW50RW5j
b2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJsaXRDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RP
Q09MKE1UTEJ1ZmZlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbW1hbmRCdWZmZXIpOwotT0JKQ19Q
Uk9UT0NPTChNVExDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1
ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RP
Q09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRMRGVwdGhTdGVu
Y2lsU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExEZXZpY2UpOwotT0JKQ19QUk9UT0NPTChNVExM
aWJyYXJ5KTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIpOwotT0JKQ19Q
Uk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKLU9CSkNfUFJPVE9DT0woTVRMUmVzb3Vy
Y2UpOwotT0JKQ19QUk9UT0NPTChNVExTYW1wbGVyU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExU
ZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBQbGF0Zm9ybUdQVUJ1ZmZl
ck9mZnNldCA9IE5TVUludGVnZXI7Ci0KLS8vIE1ldGFsIHR5cGVzCi11c2luZyBQbGF0Zm9ybUJ1
ZmZlciA9IE1UTEJ1ZmZlcjsKLXVzaW5nIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5Q
dHI8UGxhdGZvcm1CdWZmZXI+OwotCi11c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExD
b21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgPSBSZXRh
aW5QdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGFz
c0VuY29kZXIgPSBNVExDb21wdXRlQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybUNvbXB1
dGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNv
ZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBNVExDb21wdXRlUGlwZWxp
bmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5Q
dHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+OwotCi11c2luZyBQbGF0Zm9ybURldmljZSA9IE1U
TERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZv
cm1EZXZpY2U+OwotCi11c2luZyBQbGF0Zm9ybURyYXdhYmxlID0gQ0FNZXRhbERyYXdhYmxlOwot
dXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtRHJhd2Fi
bGU+OwotCi11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyID0gTVRMQ29tbWFu
ZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBs
YXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Ci11c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQ
dHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1RdWV1ZT47Ci0KLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXIgPSBNVExSZW5kZXJDb21tYW5kRW5jb2RlcjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
PjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IE1UTFJlbmRlclBpcGVsaW5lU3Rh
dGU7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxh
dGZvcm1SZW5kZXJQaXBlbGluZT47Ci0KLXVzaW5nIFBsYXRmb3JtU2FtcGxlciA9IE1UTFNhbXBs
ZXJTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRm
b3JtU2FtcGxlcj47Ci0KLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gTVRMTGlicmFyeTsK
LXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1T
aGFkZXJNb2R1bGU+OwotCi11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IFdlYkdQVUxheWVyOwot
dXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVN3YXBM
YXllcj47Ci0KLXVzaW5nIFBsYXRmb3JtVGV4dHVyZSA9IE1UTFRleHR1cmU7Ci11c2luZyBQbGF0
Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVRleHR1cmU+OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2I3OWRi
ODNiYTFlYjZlMGNiZGNiZTlkMGJhOWM5MDI0OWQ3OTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6
ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFtwbGF0Zm9ybVBh
c3NFbmNvZGVyKCkgZW5kRW5jb2RpbmddOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIGludmFsaWRhdGVFbmNvZGVyKCk7Ci0gICAgbV9jb21tYW5kQnVmZmVyLT5zZXRJc0Vu
Y29kaW5nUGFzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6
OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgR1BVQmluZEdyb3VwJiBiaW5kR3JvdXApCi17
Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBvcGVy
YXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byBhcmd1bWVudEJ1ZmZlciA9IGJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlcigpOwotICAg
IGlmICghYXJndW1lbnRCdWZmZXIuZmlyc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChh
cmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4KQotICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoYXJn
dW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4LCBpbmRleCk7
Ci0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5mcmFnbWVudCkKLSAgICAgICAgc2V0RnJh
Z21lbnRCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQu
ZnJhZ21lbnQsIGluZGV4KTsKLSAgICBpZiAoYXJndW1lbnRCdWZmZXIuc2Vjb25kLmNvbXB1dGUp
Ci0gICAgICAgIHNldENvbXB1dGVCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVu
dEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSwgaW5kZXgpOwotCi0gICAgZm9yIChhdXRvJiBidWZmZXIg
OiBiaW5kR3JvdXAuYm91bmRCdWZmZXJzKCkpIHsKLSAgICAgICAgdXNlUmVzb3VyY2UoYnVmZmVy
LT5wbGF0Zm9ybUJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxNVExSZXNvdXJjZVVzYWdlPihidWZmZXIt
PnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAgICBtX2NvbW1hbmRCdWZmZXItPnVzZUJ1ZmZlcihi
dWZmZXIuY29weVJlZigpKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiB0ZXh0dXJlIDogYmluZEdy
b3VwLmJvdW5kVGV4dHVyZXMoKSkgewotICAgICAgICB1c2VSZXNvdXJjZSh0ZXh0dXJlLT5wbGF0
Zm9ybVRleHR1cmUoKSwgc3RhdGljX2Nhc3Q8TVRMUmVzb3VyY2VVc2FnZT4odGV4dHVyZS0+cGxh
dGZvcm1Vc2FnZSgpKSk7Ci0gICAgICAgIG1fY29tbWFuZEJ1ZmZlci0+dXNlVGV4dHVyZSh0ZXh0
dXJlLmNvcHlSZWYoKSk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWUxYjQyYjU5NDRmNDZiOWYyN2RhOTBlNjQxNmM2ZGJmMGIwNWEx
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsID0gQCJjb20uYXBwbGUuV2ViS2l0IjsK
LXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4ID0gQCJjb20u
YXBwbGUuV2ViS2l0LiI7Ci0KLVJlZlB0cjxHUFVRdWV1ZT4gR1BVUXVldWU6OnRyeUNyZWF0ZShj
b25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmlj
ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCk6IEludmFs
aWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBS
ZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBxdWV1ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgcXVldWUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2Uo
KSBuZXdDb21tYW5kUXVldWVdKTsKLSAgICBbcXVldWUgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVm
YXVsdExhYmVsXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICgh
cXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjp0cnlDcmVhdGUoKTogVW5h
YmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kUXVldWUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUXVldWUoV1RGTW92ZShxdWV1
ZSksIGRldmljZSkpOwotfQotCi1HUFVRdWV1ZTo6R1BVUXVldWUoUmV0YWluUHRyPE1UTENvbW1h
bmRRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBtX3BsYXRm
b3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBtX2RldmljZShtYWtlV2Vha1B0cihkZXZp
Y2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFJlZjxHUFVDb21tYW5k
QnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKLXsKLSAgICBmb3IgKGF1dG8mIGNvbW1hbmRCdWZm
ZXIgOiBjb21tYW5kQnVmZmVycykgewotICAgICAgICAvLyBWYWxpZGF0ZSByZXNvdXJjZSBpbnRl
Z3JpdHkuCi0gICAgICAgIGZvciAoYXV0byYgYnVmZmVyIDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1
ZmZlcnMoKSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlci0+c3RhdGUoKSAhPSBHUFVCdWZmZXI6
OlN0YXRlOjpVbm1hcHBlZCkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1
ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQnVmZmVyIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIh
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGNvbW1hbmRCdWZmZXItPnVzZWRUZXh0dXJlcygp
KSB7Ci0gICAgICAgICAgICBpZiAoIXRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBHUFVU
ZXh0dXJlIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNvbW1hbmRCdWZmZXItPmVu
ZEJsaXRFbmNvZGluZygpOwotICAgICAgICAvLyBPa2F5IHRvIGNvbW1pdDsgcHJldmVudCBhbnkg
YnVmZmVyIG1hcHBpbmcgY2FsbGJhY2tzIGZyb20gZXhlY3V0aW5nIHVudGlsIGNvbW1hbmQgYnVm
ZmVyIGlzIGNvbXBsZXRlLgotICAgICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZm
ZXItPnVzZWRCdWZmZXJzKCkpCi0gICAgICAgICAgICBidWZmZXItPmNvbW1hbmRCdWZmZXJDb21t
aXR0ZWQoY29tbWFuZEJ1ZmZlci0+cGxhdGZvcm1Db21tYW5kQnVmZmVyKCkpOwotICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW2NvbW1hbmRCdWZmZXItPnBsYXRm
b3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1pdF07Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICB9Ci0KLSAgICBpZiAobV9wcmVzZW50VGFzay5pc1BlbmRpbmcoKSB8fCAhbV9k
ZXZpY2UgfHwgIW1fZGV2aWNlLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gSWYgYSBHUFVTd2FwQ2hhaW4gZXhpc3RzLCBlbnN1cmUgdGhhdCBhIHByZXNlbnQgaXMgc2No
ZWR1bGVkIGFmdGVyIGFsbCBjb21tYW5kIGJ1ZmZlcnMuCi0gICAgbV9wcmVzZW50VGFzay5zY2hl
ZHVsZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3dhcENoYWlu
ID0gbWFrZVJlZigqbV9kZXZpY2UtPnN3YXBDaGFpbigpKV0gKCkgewotICAgICAgICBhdXRvIGN1
cnJlbnREcmF3YWJsZSA9IHN3YXBDaGFpbi0+dGFrZURyYXdhYmxlKCk7Ci0gICAgICAgIC8vIElm
IHRoZSBHUFVTd2FwQ2hhaW4gaGFzIG5vIGRyYXdhYmxlLCBpdCB3YXMgaW52YWxpZGF0ZWQgYmV0
d2VlbiBjb21tYW5kIHN1Ym1pc3Npb24gYW5kIHRoaXMgdGFzay4KLSAgICAgICAgaWYgKCFjdXJy
ZW50RHJhd2FibGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwcmVzZW50
Q29tbWFuZEJ1ZmZlciA9IFttX3BsYXRmb3JtUXVldWUgY29tbWFuZEJ1ZmZlcl07Ci0gICAgICAg
IFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBwcmVzZW50RHJhd2FibGU6c3RhdGljX2Nhc3Q8aWQ8TVRM
RHJhd2FibGU+PihjdXJyZW50RHJhd2FibGUuZ2V0KCkpXTsKLSAgICAgICAgW3ByZXNlbnRDb21t
YW5kQnVmZmVyIGNvbW1pdF07Ci0gICAgfSk7Ci19Ci0KLVN0cmluZyBHUFVRdWV1ZTo6bGFiZWwo
KSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybVF1ZXVlKQotICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwcmVmaXhlZExhYmVsID0gW21fcGxhdGZvcm1R
dWV1ZSBsYWJlbF07Ci0KLSAgICBpZiAoW3ByZWZpeGVkTGFiZWwgaXNFcXVhbFRvU3RyaW5nOmNv
bW1hbmRRdWV1ZURlZmF1bHRMYWJlbF0pCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwot
Ci0gICAgQVNTRVJUKHByZWZpeGVkTGFiZWwubGVuZ3RoID4gY29tbWFuZFF1ZXVlTGFiZWxQcmVm
aXgubGVuZ3RoKTsKLSAgICByZXR1cm4gW3ByZWZpeGVkTGFiZWwgc3Vic3RyaW5nRnJvbUluZGV4
OmNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aF07Ci19Ci0KLXZvaWQgR1BVUXVldWU6OnNl
dExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1w
dHkoKSkKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpjb21tYW5kUXVldWVEZWZh
dWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpb
Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bGFiZWxdXTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDljMzU1ZTIzYTE4MDk3MTA3N2QxZmExYmNkMTU5Y2Q4ZmJiYjk2
ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVy
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29s
b3IuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIK
LSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTVRMTG9h
ZEFjdGlvbiBsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKEdQVUxvYWRPcCBvcCkKLXsKLSAgICBzd2l0
Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVMb2FkT3A6OkNsZWFyOgotICAgICAgICByZXR1cm4gTVRM
TG9hZEFjdGlvbkNsZWFyOwotICAgIGNhc2UgR1BVTG9hZE9wOjpMb2FkOgotICAgICAgICByZXR1
cm4gTVRMTG9hZEFjdGlvbkxvYWQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLXN0YXRpYyBNVExTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbkZvckdQVVN0b3JlT3AoR1BV
U3RvcmVPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVTdG9yZU9wOjpT
dG9yZToKLSAgICAgICAgcmV0dXJuIE1UTFN0b3JlQWN0aW9uU3RvcmU7Ci0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBib29sIHBvcHVsYXRlTXRsQ29sb3JB
dHRhY2htZW50c0FycmF5KE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkgKmFycmF5LCBjb25zdCBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewot
I2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlm
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2ldOwotICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAg
ICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBNVExUZXh0dXJlIGZvciBjb2xvciBh
dHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXV0byYgY29sb3IgPSBkZXNjcmlwdG9yLmNs
ZWFyQ29sb3I7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAg
ICAgYXV0byBtdGxBdHRhY2htZW50ID0gcmV0YWluUHRyKFthcnJheSBvYmplY3RBdEluZGV4ZWRT
dWJzY3JpcHQ6aV0pOwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0
b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCldOwotICAgICAgICBbbXRsQXR0YWNobWVu
dCBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtlKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9y
LmIsIGNvbG9yLmEpXTsKLSAgICAgICAgW210bEF0dGFjaG1lbnQgc2V0TG9hZEFjdGlvbjpsb2Fk
QWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IubG9hZE9wKV07Ci0gICAgICAgIFttdGxBdHRh
Y2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlwdG9y
LnN0b3JlT3ApXTsKLQotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHBvcHVsYXRlTXRsRGVwdGhTdGVu
Y2lsQXR0YWNobWVudChNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqbXRs
QXR0YWNobWVudCwgY29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0j
aWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYK
LQotICAgIGlmICghZGVzY3JpcHRvci5hdHRhY2htZW50LT5wbGF0Zm9ybVRleHR1cmUoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBmb3IgZGVwdGggYXR0
YWNobWVudCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBbbXRsQXR0YWNobWVudCBz
ZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCldOwotICAg
IFttdGxBdHRhY2htZW50IHNldENsZWFyRGVwdGg6ZGVzY3JpcHRvci5jbGVhckRlcHRoXTsKLSAg
ICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0aW9uOmxvYWRBY3Rpb25Gb3JHUFVMb2FkT3AoZGVz
Y3JpcHRvci5kZXB0aExvYWRPcCldOwotICAgIFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9u
OnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlwdG9yLmRlcHRoU3RvcmVPcCldOwotCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyB2b2lkIHVzZUF0dGFjaG1lbnRzKEdQVUNvbW1hbmRCdWZmZXImIGJ1ZmZlciwgR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQotewotICAgIGZvciAoYXV0byYgY29sb3JB
dHRhY2htZW50IDogZGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBidWZmZXIu
dXNlVGV4dHVyZShXVEZNb3ZlKGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50KSk7Ci0gICAgaWYg
KGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudCkKLSAgICAgICAgYnVmZmVyLnVzZVRl
eHR1cmUoV1RGTW92ZSgoKmRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudCkuYXR0YWNo
bWVudCkpOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IEdQVVJlbmRlclBhc3NF
bmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyLCBHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qg
ZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKSI7Ci0KLSAg
ICAvLyBPbmx5IG9uZSBjb21tYW5kIGVuY29kZXIgbWF5IGJlIGFjdGl2ZSBhdCBhIHRpbWUuCi0g
ICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0Rl
c2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQYXNzRGVzY3JpcHRv
ciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRs
RGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUg
TVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFwb3B1bGF0ZU10bENvbG9yQXR0YWNobWVudHNB
cnJheShtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHMsIGRlc2NyaXB0b3IuY29s
b3JBdHRhY2htZW50cywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50Ci0gICAgICAgICYmICFw
b3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQobXRsRGVzY3JpcHRvci5nZXQoKS5kZXB0
aEF0dGFjaG1lbnQsICpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQsIGZ1bmN0aW9u
TmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYnVmZmVyLT5lbmRCbGl0RW5j
b2RpbmcoKTsKLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbXRsRW5j
b2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRW5jb2Rl
ciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIHJlbmRlckNvbW1hbmRFbmNvZGVy
V2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bEVuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIEFsbCBp
cyB3ZWxsOyBlbnN1cmUgR1BVQ29tbWFuZEJ1ZmZlciBpcyBhd2FyZSBvZiBuZXcgYXR0YWNobWVu
dHMuCi0gICAgdXNlQXR0YWNobWVudHMoYnVmZmVyLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLSAg
ICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUo
YnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQotCi1HUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1
ZmZlciwgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiYmIGVuY29kZXIpCi0gICAg
OiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotICAg
ICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17Ci19Ci0K
LWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGxhdGZvcm1Q
YXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2Rlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
UmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9w
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5n
IGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IE1l
dGFsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgTVRMUGlwZWxpbmVTdGF0ZSdzIGF0dGFjaG1lbnQg
Zm9ybWF0cyBkbyBub3QgbWF0Y2ggdGhlIE1UTENvbW1hbmRFbmNvZGVyJ3MgYXR0YWNobWVudCBm
b3JtYXRzLgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAocGlw
ZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCkpCi0gICAgICAgIFttX3BsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXIgc2V0RGVwdGhTdGVuY2lsU3RhdGU6cGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRl
KCldOwotCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRSZW5kZXJQaXBlbGlu
ZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCldOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9waXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUp
OwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQ
VUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcikg
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29s
b3IoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
cGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRCbGVuZENvbG9yUmVkOmNvbG9yLnIgZ3JlZW46
Y29sb3IuZyBibHVlOmNvbG9yLmIgYWxwaGE6Y29sb3IuYV07Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0
aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3
cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZpZXdwb3J0OiB7IHgsIHksIHdpZHRoLCBo
ZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCB9XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KHVuc2ln
bmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCi17Ci0g
ICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCgpOiBJbnZhbGlkIG9wZXJh
dGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyIHNldFNjaXNzb3JSZWN0OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0KQotewotICAg
IGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvcGVyYXRp
b246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChvZmZzZXQgPj0gYnVmZmVyLmJ5dGVMZW5ndGgoKSB8fCBvZmZzZXQgJSA0KSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52
YWxpZCBvZmZzZXQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKGJ1ZmZl
ci5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAvLyBCdWZmZXIgbXVzdCBiZSBjYWNoZWQgdG8gcHJv
dmlkZSBpdCB0byBNZXRhbCB2aWEgZHJhd0luZGV4ZWRQcmltaXRpdmVzLgotICAgIG1faW5kZXhC
dWZmZXIgPSBtYWtlUmVmUHRyKGJ1ZmZlcik7Ci0gICAgbV9pbmRleEJ1ZmZlck9mZnNldCA9IG9m
ZnNldDsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1
bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiYgYnVmZmVycywgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFZlcnRleEJ1ZmZlcnMoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVu
ZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGJ1ZmZlcnMuc2l6
ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBtdGxCdWZmZXJzID0gYnVmZmVycy5tYXAo
W3RoaXNdIChhdXRvJiBidWZmZXIpIHsKLSAgICAgICAgY29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZl
cihidWZmZXIuY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci0+cGxhdGZvcm1CdWZm
ZXIoKSk7Ci0gICAgICAgIHJldHVybiBidWZmZXItPnBsYXRmb3JtQnVmZmVyKCk7Ci0gICAgfSk7
Ci0KLSAgICBhdXRvIGluZGV4UmFuZ2VzID0gTlNNYWtlUmFuZ2UoV0hMU0w6Ok1ldGFsOjpjYWxj
dWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCksIGJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAgIFtt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0VmVydGV4QnVmZmVyczptdGxCdWZmZXJzLmRh
dGEoKSBvZmZzZXRzOihjb25zdCBOU1VJbnRlZ2VyICopb2Zmc2V0cy5kYXRhKCkgd2l0aFJhbmdl
OmluZGV4UmFuZ2VzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotc3Rh
dGljIE1UTFByaW1pdGl2ZVR5cGUgbXRsUHJpbWl0aXZlVHlwZUZvckdQVVByaW1pdGl2ZVRvcG9s
b2d5KEdQVVByaW1pdGl2ZVRvcG9sb2d5IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6UG9pbnRMaXN0OgotICAgICAgICByZXR1cm4g
TVRMUHJpbWl0aXZlVHlwZVBvaW50OwotICAgIGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6Okxp
bmVMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZUxpbmU7Ci0gICAgY2FzZSBH
UFVQcmltaXRpdmVUb3BvbG9neTo6TGluZVN0cmlwOgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0
aXZlVHlwZUxpbmVTdHJpcDsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5OjpUcmlhbmds
ZUxpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlVHJpYW5nbGU7Ci0gICAgY2Fz
ZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVTdHJpcDoKLSAgICAgICAgcmV0dXJuIE1U
TFByaW1pdGl2ZVR5cGVUcmlhbmdsZVN0cmlwOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVuc2lnbmVkIHZl
cnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwg
dW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRy
YXcoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogTm8gdmFsaWQgR1BVUmVuZGVyUGlwZWxp
bmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIAotICAgICAg
ICBkcmF3UHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3ko
bV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAgdmVydGV4U3RhcnQ6Zmly
c3RWZXJ0ZXgKLSAgICAgICAgdmVydGV4Q291bnQ6dmVydGV4Q291bnQKLSAgICAgICAgaW5zdGFu
Y2VDb3VudDppbnN0YW5jZUNvdW50Ci0gICAgICAgIGJhc2VJbnN0YW5jZTpmaXJzdEluc3RhbmNl
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBNVExJbmRleFR5
cGUgbXRsSW5kZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQoR1BVSW5kZXhGb3JtYXQgZm9ybWF0KQot
ewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVJbmRleEZvcm1hdDo6VWludDE2
OgotICAgICAgICByZXR1cm4gTVRMSW5kZXhUeXBlVUludDE2OwotICAgIGNhc2UgR1BVSW5kZXhG
b3JtYXQ6OlVpbnQzMjoKLSAgICAgICAgcmV0dXJuIE1UTEluZGV4VHlwZVVJbnQzMjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VD
b3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0
SW5zdGFuY2UpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1
bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQoKSI7Ci0jZW5k
aWYKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGluZSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZhbGlkIEdQVVJlbmRlclBpcGVsaW5lIGZv
dW5kISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFt
X3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTm8g
R1BVSW5kZXhGb3JtYXQgc3BlY2lmaWVkISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKCFtX2luZGV4QnVmZmVyIHx8ICFtX2luZGV4QnVmZmVyLT5wbGF0
Zm9ybUJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gdmFsaWQgaW5kZXgg
YnVmZmVyIHNldCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byBpbmRleEJ5dGVTaXplID0gKG1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0KCkgPT0gR1BV
SW5kZXhGb3JtYXQ6OlVpbnQxNikgPyBzaXplb2YodWludDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90
KTsKLQotICAgIC8vIFRoaXMgY2FsY3VsYXRpb24gY2Fubm90IG92ZXJmbG93IGFzIGZpcnN0SW5k
ZXggaXMgYm91bmRlZCB0byAzMiBiaXRzLCBhbmQgaW5kZXhCeXRlU2l6ZSB0byBzaXplb2YodWlu
dDMyX3QpLgotICAgIHVpbnQ2NF90IGZpcnN0SW5kZXhPZmZzZXQgPSBmaXJzdEluZGV4ICogaW5k
ZXhCeXRlU2l6ZTsKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQgbmVpdGhlciBhcmd1
bWVudCBub3IgdGhlaXIgc3VtIHdpbGwgb3ZlcmZsb3cgTlNVSW50ZWdlci4KLSAgICBhdXRvIHRv
dGFsT2Zmc2V0ID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihmaXJzdEluZGV4T2Zmc2V0LCBtX2lu
ZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBpZiAodG90YWxPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8
IHRvdGFsT2Zmc2V0ID49IG1faW5kZXhCdWZmZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IEludmFsaWQgZmlyc3RJbmRleCEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZlcihtYWtl
UmVmKCptX2luZGV4QnVmZmVyKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyCi0gICAgICAgIGRyYXdJbmRleGVkUHJp
bWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGlu
ZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAgaW5kZXhDb3VudDppbmRleENvdW50Ci0g
ICAgICAgIGluZGV4VHlwZTptdGxJbmRleFR5cGVGb3JHUFVJbmRleEZvcm1hdCgqbV9waXBlbGlu
ZS0+aW5kZXhGb3JtYXQoKSkKLSAgICAgICAgaW5kZXhCdWZmZXI6bV9pbmRleEJ1ZmZlci0+cGxh
dGZvcm1CdWZmZXIoKQotICAgICAgICBpbmRleEJ1ZmZlck9mZnNldDp0b3RhbE9mZnNldC52YWx1
ZSgpCi0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFuY2VDb3VudAotICAgICAgICBiYXNlVmVy
dGV4OmJhc2VWZXJ0ZXgKLSAgICAgICAgYmFzZUluc3RhbmNlOmZpcnN0SW5zdGFuY2VdOwotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2lmIFVTRShNRVRBTCkKLQotdm9pZCBH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291
cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRm
b3JtUmVuZGVyUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2Vy
IG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9w
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9m
ZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0K
LXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1
ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
QVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldEZyYWdt
ZW50QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBl
bGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI2ZTc3ZTY5NTdiZmI0OTU0NDEyMjUxYTAzOTg1NjljOTY0M2E4YTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KKysrIC9kZXYvbnVs
bApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBv
cnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQ
VUxpbWl0cy5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCIKLSNp
bXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMu
aCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJ
bmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgotI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBv
cnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IHRyeUNyZWF0ZU10bERl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gbXRsRGVz
Y3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVz
Y3JpcHRvciA9IGFkb3B0TlMoW01UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IgbmV3XSk7Ci0KLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsK
LSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJVbmFibGUgdG8gY3Jl
YXRlIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIGF1dG8gbXRsRGVwdGhDb21wYXJlID0gc3RhdGljX2Nhc3Q8TVRMQ29t
cGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlv
bihkZXNjcmlwdG9yLmRlcHRoQ29tcGFyZSkpOwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRo
Q29tcGFyZUZ1bmN0aW9uOm10bERlcHRoQ29tcGFyZV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0
RGVwdGhXcml0ZUVuYWJsZWQ6ZGVzY3JpcHRvci5kZXB0aFdyaXRlRW5hYmxlZF07Ci0KLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGJhY2svZnJvbnRGYWNlU3RlbmNpbC4KLQotICAgIFJldGFpblB0
cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gc3RhdGU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHN0YXRlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkg
bmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXN0YXRlKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcg
TVRMRGVwdGhTdGVuY2lsU3RhdGUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIHJldHVybiBzdGF0ZTsKLX0KLQotc3RhdGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29u
dmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KQotewotICAgIHN3
aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0NDoK
LSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyRzMyQjMyQTMyOwot
ICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDM6Ci0gICAgICAgIHJldHVybiBXSExTTDo6
VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMjsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6
RmxvYXQyOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzI7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZlcnRleEZvcm1hdCA9PSBHUFVWZXJ0ZXhG
b3JtYXQ6OkZsb2F0KTsKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0
UjMyOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlRleHR1cmVGb3Jt
YXQ+IGNvbnZlcnRUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAg
IHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3Jt
OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm07Ci0gICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6
OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpE
ZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gRklY
TUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRoaXMuCi0gICAgY2FzZSBHUFVUZXh0dXJl
Rm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9y
bWF0OjpCR1JBOFVub3JtU3JnYjsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmExNmZs
b2F0OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OlJHQkExNkZsb2F0Owot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1z
dGF0aWMgTVRMVmVydGV4Rm9ybWF0IG10bFZlcnRleEZvcm1hdEZvckdQVVZlcnRleEZvcm1hdChH
UFVWZXJ0ZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2Fz
ZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0OgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0
RmxvYXQ7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0MjoKLSAgICAgICAgcmV0dXJu
IE1UTFZlcnRleEZvcm1hdEZsb2F0MjsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQz
OgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQzOwotICAgIGNhc2UgR1BVVmVy
dGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhGb3JtYXRGbG9hdDQ7
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExWZXJ0
ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0aW9uRm9yR1BVSW5wdXRTdGVwTW9kZShHUFVJbnB1
dFN0ZXBNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVJbnB1
dFN0ZXBNb2RlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhTdGVwRnVuY3Rpb25Q
ZXJWZXJ0ZXg7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBNb2RlOjpJbnN0YW5jZToKLSAgICAgICAg
cmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlvblBlckluc3RhbmNlOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0vLyBGSVhNRTogTW92ZSB0aGlzIGludG8gR1BVTGlt
aXRzIHdoZW4gdGhhdCBpcyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KLWNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7Ci0KLXN0YXRpYyBib29sIHRyeVNldFZlcnRleElu
cHV0KGNvbnN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgTVRMUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKLXsKLSAgICBjb25zdCBhdXRvJiBidWZmZXJzID0gZGVzY3JpcHRvci52
ZXJ0ZXhCdWZmZXJzOwotCi0gICAgaWYgKGJ1ZmZlcnMuc2l6ZSgpID4gbWF4VmVydGV4QnVmZmVy
cykgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55
IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzISIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgYXV0byBtdGxWZXJ0ZXhEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMVmVydGV4
RGVzY3JpcHRvciBuZXddKTsKLQotICAgIGF1dG8gbGF5b3V0QXJyYXkgPSByZXRhaW5QdHIobXRs
VmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzKTsKLSAgICBhdXRvIGF0dHJpYnV0ZUFycmF5
ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCkuYXR0cmlidXRlcyk7Ci0KLSAg
ICAvLyBBdHRyaWJ1dGUgc2hhZGVyTG9jYXRpb25zIG11c3QgYmUgdW5pcXVlbHkgZmxhdC1tYXBw
ZWQgdG8gWzAsIHttYXggbnVtYmVyIG9mIHZlcnRleCBhdHRyaWJ1dGVzfV0uCi0gICAgdW5zaWdu
ZWQgYXR0cmlidXRlSW5kZXggPSAwOwotICAgIEhhc2hTZXQ8dW5zaWduZWQsIEludEhhc2g8dW5z
aWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbG9j
YXRpb25zOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGJ1ZmZlcnMuc2l6
ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmICghYnVmZmVyc1tpbmRleF0pCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBhdHRyaWJ1dGVzID0gYnVmZmVyc1tp
bmRleF0tPmF0dHJpYnV0ZVNldDsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcy5zaXplKCkgKyBh
dHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9vIG1hbnkgR1BVVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvcnMhIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBOU1VJbnRlZ2VyIGlucHV0U3RyaWRlID0gMDsKLSAgICAgICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoYnVmZmVyc1tpbmRleF0tPnN0cmlkZSwgaW5wdXRTdHJpZGUpKSB7Ci0gICAg
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiU3Ry
aWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yICIsIGluZGV4LCAiIGlzIHRvbyBsYXJn
ZSEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBh
dXRvIGNvbnZlcnRlZEJ1ZmZlckluZGV4ID0gV0hMU0w6Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhC
dWZmZXJJbmRleChpbmRleCk7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgIGF1dG8gbXRsTGF5b3V0RGVzYyA9IHJldGFpblB0cihbbGF5b3V0QXJyYXkgb2Jq
ZWN0QXRJbmRleGVkU3Vic2NyaXB0OmNvbnZlcnRlZEJ1ZmZlckluZGV4XSk7Ci0gICAgICAgIFtt
dGxMYXlvdXREZXNjIHNldFN0ZXBGdW5jdGlvbjptdGxTdGVwRnVuY3Rpb25Gb3JHUFVJbnB1dFN0
ZXBNb2RlKGJ1ZmZlcnNbaW5kZXhdLT5zdGVwTW9kZSldOwotICAgICAgICBbbXRsTGF5b3V0RGVz
YyBzZXRTdHJpZGU6aW5wdXRTdHJpZGVdOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7
Ci0gICAgICAgICAgICBpZiAoIWxvY2F0aW9ucy5hZGQoYXR0cmlidXRlLnNoYWRlckxvY2F0aW9u
KS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxpY2F0ZSBzaGFkZXJMb2NhdGlvbiAiLCBhdHRyaWJ1
dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZlcnRleCBhdHRyaWJ1dGUhIikpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgTlNVSW50
ZWdlciBvZmZzZXQgPSAwOwotICAgICAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYXR0
cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewotICAgICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJCdWZmZXIgb2Zmc2V0IGZvciB2ZXJ0ZXgg
YXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiwgIiBpcyB0b28gbGFyZ2UhIikp
OwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgICAgICBhdXRvIG10bEF0
dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0dHJpYnV0ZUFycmF5IG9iamVjdEF0SW5kZXhlZFN1
YnNjcmlwdDphdHRyaWJ1dGVJbmRleF0pOwotICAgICAgICAgICAgW210bEF0dHJpYnV0ZURlc2Mg
c2V0Rm9ybWF0Om10bFZlcnRleEZvcm1hdEZvckdQVVZlcnRleEZvcm1hdChhdHRyaWJ1dGUuZm9y
bWF0KV07Ci0gICAgICAgICAgICBbbXRsQXR0cmlidXRlRGVzYyBzZXRPZmZzZXQ6b2Zmc2V0XTsK
LSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNldEJ1ZmZlckluZGV4OmNvbnZlcnRlZEJ1
ZmZlckluZGV4XTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
ICAgICAgICAgaWYgKHdobHNsRGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICB3aGxzbERlc2Ny
aXB0b3ItPnZlcnRleEF0dHJpYnV0ZXMuYXBwZW5kKHsgY29udmVydFZlcnRleEZvcm1hdChhdHRy
aWJ1dGUuZm9ybWF0KSwgYXR0cmlidXRlLnNoYWRlckxvY2F0aW9uLCBhdHRyaWJ1dGVJbmRleCB9
KTsKLQotICAgICAgICAgICAgKythdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleERlc2NyaXB0b3I6bXRsVmVydGV4RGVzY3JpcHRv
ci5nZXQoKV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIE1UTENvbG9yV3JpdGVN
YXNrIG10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JXcml0ZUZsYWdzKEdQVUNvbG9yV3JpdGVG
bGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxhZ3MgPT0gc3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0
ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxsKSkKLSAgICAgICAgcmV0dXJuIE1UTENv
bG9yV3JpdGVNYXNrQWxsOwotCi0gICAgYXV0byBvcHRpb25zID0gT3B0aW9uU2V0PEdQVUNvbG9y
V3JpdGU6OkZsYWdzPjo6ZnJvbVJhdyhmbGFncyk7Ci0KLSAgICBNVExDb2xvcldyaXRlTWFzayBt
YXNrID0gTVRMQ29sb3JXcml0ZU1hc2tOb25lOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JX
cml0ZTo6RmxhZ3M6OlJlZCkKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza1JlZDsK
LSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpHcmVlbikKLSAgICAgICAg
bWFzayB8PSBNVExDb2xvcldyaXRlTWFza0dyZWVuOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29s
b3JXcml0ZTo6RmxhZ3M6OkJsdWUpCi0gICAgICAgIG1hc2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tC
bHVlOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkFscGhhKQotICAg
ICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQWxwaGE7Ci0KLSAgICByZXR1cm4gbWFzazsK
LX0KLQotc3RhdGljIE1UTEJsZW5kT3BlcmF0aW9uIG10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxl
bmRPcGVyYXRpb24oR1BVQmxlbmRPcGVyYXRpb24gb3ApCi17Ci0gICAgc3dpdGNoIChvcCkgewot
ICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OkFkZDoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5k
T3BlcmF0aW9uQWRkOwotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OlN1YnRyYWN0OgotICAg
ICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25TdWJ0cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5k
T3BlcmF0aW9uOjpSZXZlcnNlU3VidHJhY3Q6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJh
dGlvblJldmVyc2VTdWJ0cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpNaW46Ci0g
ICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1pbjsKLSAgICBjYXNlIEdQVUJsZW5kT3Bl
cmF0aW9uOjpNYXg6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1heDsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTEJsZW5kRmFjdG9y
IG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3IoR1BVQmxlbmRGYWN0b3IgZmFjdG9yKQot
ewotICAgIHN3aXRjaCAoZmFjdG9yKSB7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6WmVybzoK
LSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yWmVybzsKLSAgICBjYXNlIEdQVUJsZW5kRmFj
dG9yOjpPbmU6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3Rvck9uZTsKLSAgICBjYXNlIEdQ
VUJsZW5kRmFjdG9yOjpTcmNDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yU291
cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNTcmNDb2xvcjoKLSAg
ICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2VDb2xvcjsKLSAgICBjYXNl
IEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9y
U291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNTcmNBbHBoYToK
LSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2VBbHBoYTsKLSAgICBj
YXNlIEdQVUJsZW5kRmFjdG9yOjpEc3RDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yRGVzdGluYXRpb25Db2xvcjsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c0Rz
dENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9u
Q29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6RHN0QWxwaGE6Ci0gICAgICAgIHJldHVy
biBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rv
cjo6T25lTWludXNEc3RBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWlu
dXNEZXN0aW5hdGlvbkFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OlNyY0FscGhhU2F0
dXJhdGVkOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JTb3VyY2VBbHBoYTsKLSAgICBj
YXNlIEdQVUJsZW5kRmFjdG9yOjpCbGVuZENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JCbGVuZENvbG9yOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzQmxlbmRD
b2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNCbGVuZENvbG9yOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgYm9vbCB0cnlT
ZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+JiBjb2xv
clN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IGFycmF5LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3
aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICAvLyBG
SVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0gbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnRzIHBl
ciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0cy4KLSAgICBpZiAoY29sb3JTdGF0ZXMuc2l6ZSgp
ID4gNCkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBt
YW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNvbG9yU3RhdGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8m
IHN0YXRlID0gY29sb3JTdGF0ZXNbaV07Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IHJldGFp
blB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmldKTsKLSAgICAgICAgW2Rlc2Ny
aXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3Jt
VGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoc3RhdGUuZm9ybWF0KSldOwotICAgICAg
ICBbZGVzY3JpcHRvciBzZXRXcml0ZU1hc2s6bXRsQ29sb3JXcml0ZU1hc2tGb3JHUFVDb2xvcldy
aXRlRmxhZ3Moc3RhdGUud3JpdGVNYXNrKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldEJsZW5k
aW5nRW5hYmxlZDpZRVNdOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRBbHBoYUJsZW5kT3BlcmF0
aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRPcGVyYXRpb24oc3RhdGUuYWxwaGFCbGVu
ZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0UmdiQmxlbmRPcGVyYXRpb246
bXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVuZE9wZXJhdGlvbihzdGF0ZS5jb2xvckJsZW5kLm9w
ZXJhdGlvbildOwotICAgICAgICBbZGVzY3JpcHRvciBzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRG
YWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZhY3RvcihzdGF0ZS5hbHBoYUJsZW5kLmRz
dEZhY3RvcildOwotICAgICAgICBbZGVzY3JpcHRvciBzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFj
dG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29sb3JCbGVuZC5kc3RG
YWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0U291cmNlQWxwaGFCbGVuZEZhY3Rvcjpt
dGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFjdG9yKHN0YXRlLmFscGhhQmxlbmQuc3JjRmFjdG9y
KV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFNvdXJjZVJHQkJsZW5kRmFjdG9yOm10bEJsZW5k
RmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29sb3JCbGVuZC5zcmNGYWN0b3IpXTsKLQot
ICAgICAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBmb3Jt
YXQgPSBjb252ZXJ0VGV4dHVyZUZvcm1hdChzdGF0ZS5mb3JtYXQpKQotICAgICAgICAgICAgICAg
IHdobHNsRGVzY3JpcHRvci0+YXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERl
c2NyaXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwgaX0pOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmco
IkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBmb3IgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IgIiwg
aSwgIiEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldE1ldGFsRnVuY3Rpb25zKE1UTExp
YnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwgTVRMTGlicmFyeSAqZnJhZ21lbnRNZXRhbExpYnJh
cnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudEVudHJ5UG9p
bnROYW1lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgewotICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICAvLyBNZXRhbCByZXF1aXJlcyBh
IHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBlbGluZXMuCi0gICAgICAgIGlmICghdmVy
dGV4TWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIHZlcnRleCBzdGFnZSBkb2VzIG5vdCBleGlzdCEiKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gZnVu
Y3Rpb24gPSBhZG9wdE5TKFt2ZXJ0ZXhNZXRhbExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2
ZXJ0ZXhFbnRyeVBvaW50TmFtZV0pOwotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90
IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gJyIsIHZlcnRleEVudHJ5UG9pbnROYW1lLCAiJyEi
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBbbXRs
RGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0KLSAgICAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgLy8gSG93ZXZlciwgZnJhZ21lbnQgc2hh
ZGVycyBhcmUgb3B0aW9uYWwuCi0gICAgICAgIGlmICghZnJhZ21lbnRNZXRhbExpYnJhcnkgfHwg
ZnJhZ21lbnRFbnRyeVBvaW50TmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtmcmFnbWVudE1ldGFsTGlicmFy
eSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdtZW50RW50cnlQb2ludE5hbWVdKTsKLQotICAgICAg
ICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSBmcmFnbWVudCBNVExGdW5jdGlvbiAn
IiwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgIichIikpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERlc2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5j
dGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcj4mIGZyYWdtZW50U3RhZ2UsIGNvbnN0IEdQVURldmljZSYgZGV2aWNl
LCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIG10bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9u
YWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiB2
ZXJ0ZXhMaWJyYXJ5LCBmcmFnbWVudExpYnJhcnk7Ci0gICAgU3RyaW5nIHZlcnRleEVudHJ5UG9p
bnQsIGZyYWdtZW50RW50cnlQb2ludDsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0b3IpIHsKLSAg
ICAgICAgQVNTRVJUKHZlcnRleFN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSk7Ci0gICAgICAg
IEFTU0VSVCghZnJhZ21lbnRTdGFnZSB8fCBmcmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9k
dWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3JpcHRvci0+dmVydGV4RW50cnlQb2ludE5hbWUg
PSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAgICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAg
ICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZnJhZ21lbnRFbnRyeVBvaW50TmFtZSA9IGZyYWdt
ZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQg
PSBXSExTTDo6cHJlcGFyZSgqdmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpLCBmcmFn
bWVudFN0YWdlID8gZnJhZ21lbnRTdGFnZS0+bW9kdWxlLT53aGxzbE1vZHVsZSgpIDogbnVsbHB0
ciwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7
Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmlu
ZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwotCi0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
ICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAgICAgICAgaWYgKFdITFNMOjpkdW1wTWV0
YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMDQ3NCBBZGQg
ZGlyZWN0IFN0cmluZ0J1aWxkZXIgLT4gTlNTdHJpbmcgY29udmVyc2lvbiB0byBhdm9pZCBleHRy
YSBjb3B5IGludG8gYSBXVEY6OlN0cmluZwotICAgICAgICB2ZXJ0ZXhMaWJyYXJ5ID0gYWRvcHRO
UyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6d2hsc2xDb21w
aWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygpIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJv
cl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAg
ICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1lczogIiwgKE1vbm90b25pY1RpbWU6Om5v
dygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIiBtcyIpOwotICAgICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYgKCF2ZXJ0ZXhMaWJyYXJ5ICYmIGVycm9y
KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAg
ICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAg
QVNTRVJUKHZlcnRleExpYnJhcnkpOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBPbmNlIHdlIHplcm8tZmlsbCB2YXJpYWJs
ZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8g
QVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBmcmFnbWVudExpYnJhcnkgPSB2ZXJ0ZXhM
aWJyYXJ5OwotICAgICAgICB2ZXJ0ZXhFbnRyeVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0LT5t
YW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICAgICAgaWYgKGZyYWdt
ZW50U3RhZ2UpCi0gICAgICAgICAgICBmcmFnbWVudEVudHJ5UG9pbnQgPSB3aGxzbENvbXBpbGVS
ZXN1bHQtPm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lLnRvU3RyaW5nKCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IHZlcnRleFN0YWdlLm1vZHVsZS0+cGxhdGZv
cm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAgdmVydGV4RW50cnlQb2ludCA9IHZlcnRleFN0YWdl
LmVudHJ5UG9pbnQ7Ci0gICAgICAgIGlmIChmcmFnbWVudFN0YWdlKSB7Ci0gICAgICAgICAgICBm
cmFnbWVudExpYnJhcnkgPSBmcmFnbWVudFN0YWdlLT5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9k
dWxlKCk7Ci0gICAgICAgICAgICBmcmFnbWVudEVudHJ5UG9pbnQgPSBmcmFnbWVudFN0YWdlLT5l
bnRyeVBvaW50OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRyeVNldE1ldGFsRnVu
Y3Rpb25zKHZlcnRleExpYnJhcnkuZ2V0KCksIGZyYWdtZW50TGlicmFyeS5nZXQoKSwgbXRsRGVz
Y3JpcHRvciwgdmVydGV4RW50cnlQb2ludCwgZnJhZ21lbnRFbnRyeVBvaW50LCBlcnJvclNjb3Bl
cyk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBj
b252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFt
dGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJv
cigiRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHNoYWRlciBzb3VyY2UgaXMgaW4gV0hM
U0wgb3IgTVNMLgotICAgIGNvbnN0IGF1dG8mIHZlcnRleFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0
ZXhTdGFnZTsKLSAgICBjb25zdCBhdXRvJiBmcmFnbWVudFN0YWdlID0gZGVzY3JpcHRvci5mcmFn
bWVudFN0YWdlOwotCi0gICAgaWYgKGZyYWdtZW50U3RhZ2UgJiYgc3RhdGljX2Nhc3Q8Ym9vbD4o
dmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpKSAhPSBzdGF0aWNfY2FzdDxib29sPihm
cmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxl
KCk7Ci0KLSAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1ldGFsIHBpcGVsaW5lIGRlc2NyaXB0b3Ig
KGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9yOwotICAgIGlmIChpc1dobHNsKQot
ICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KCk7Ci0KLSAgICBpZiAoIXRyeVNldFZlcnRleElucHV0KGRlc2NyaXB0b3IudmVydGV4SW5wdXQs
IG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghdHJ5U2V0Q29sb3JTdGF0ZXMoZGVzY3Jp
cHRvci5jb2xvclN0YXRlcywgbXRsRGVzY3JpcHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzLCB3
aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAg
IGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkKLSAg
ICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghdHJ5U2V0RnVuY3Rp
b25zKHZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0
KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1U
TFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNyZWF0ZU10bFJlbmRlclBpcGVsaW5lU3RhdGUoY29u
c3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGlmICghZGV2
aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotCi0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gY29udmVydFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZpY2UsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIW10
bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE1U
TFJlbmRlclBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBwaXBlbGluZSA9IGFk
b3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
RGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICgh
cGlwZWxpbmUpCi0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBwaXBlbGluZTsKLX0KLQotUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURl
dmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gZGVwdGhTdGVuY2lsOwotCi0gICAgaWYg
KGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUgJiYgIShkZXB0aFN0ZW5jaWwgPSB0cnlDcmVh
dGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSgqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0ZSwgZGV2
aWNlLCBlcnJvclNjb3BlcykpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4Mzg3IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGlzbid0IGltcGxlbWVudGVkIHlldCBmb3IgV0hM
U0wgY29tcGlsZXIuCi0KLSAgICBhdXRvIHBpcGVsaW5lID0gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlw
ZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLSAgICBpZiAoIXBp
cGVsaW5lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVs
aW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1
dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5sYXlvdXQsIGRlc2NyaXB0b3IpKTsKLX0KLQotR1BV
UmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5j
aWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRl
PiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9neSB0b3BvbG9neSwgc3RkOjpvcHRpb25h
bDxHUFVJbmRleEZvcm1hdD4gZm9ybWF0LCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+
JiBsYXlvdXQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIHJlbmRlckRl
c2NyaXB0b3JCYXNlKQotICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9kZXB0aFN0ZW5jaWxT
dGF0ZShXVEZNb3ZlKGRlcHRoU3RlbmNpbCkpCi0gICAgLCBtX3BsYXRmb3JtUmVuZGVyUGlwZWxp
bmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3ByaW1pdGl2ZVRvcG9sb2d5KHRvcG9sb2d5
KQotICAgICwgbV9pbmRleEZvcm1hdChmb3JtYXQpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi0g
ICAgLCBtX3JlbmRlckRlc2NyaXB0b3JCYXNlKHJlbmRlckRlc2NyaXB0b3JCYXNlKQotewotfQot
Ci1HUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1i
b29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2Us
IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlv
bmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKQotewot
ICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9s
YXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFnbWVudFN0YWdl
KSwgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZSk7Ci0gICAgYXV0byBlcnJvclNjb3BlcyA9IEdQVUVy
cm9yU2NvcGVzOjpjcmVhdGUoW10gKEdQVUVycm9yJiYpIHsgfSk7Ci0gICAgaWYgKGF1dG8gcGlw
ZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRv
ciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IFdU
Rk1vdmUocGlwZWxpbmUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmFmOTczNTQ1YmRkNzhjNjhjZjI4MzA4ZGJjNjAyZDAxNzZlMGRhZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVVNhbXBsZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQ
VURldmljZS5oIgotI2ltcG9ydCAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQ
VVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgTVRMU2FtcGxlckFkZHJlc3NNb2RlIG10bEFkZHJlc3NNb2RlRm9yQWRkcmVz
c01vZGUoR1BVQWRkcmVzc01vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBj
YXNlIEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZToKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBs
ZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOwotICAgIGNhc2UgR1BVQWRkcmVzc01vZGU6OlJlcGVh
dDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdDsKLSAgICBjYXNl
IEdQVUFkZHJlc3NNb2RlOjpNaXJyb3JSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVy
QWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWluTWFnRmlsdGVyIG10bE1pbk1hZ0ZpbHRlckZv
ckZpbHRlck1vZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewot
ICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBs
ZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OwotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TGluZWFyOgot
ICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTFNhbXBsZXJNaXBGaWx0ZXIg
bXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShHUFVGaWx0ZXJNb2RlIG1vZGUpCi17Ci0gICAgc3dp
dGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpOZWFyZXN0OgotICAgICAgICBy
ZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlck5lYXJlc3Q7Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2Rl
OjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyTWlwRmlsdGVyTGluZWFyOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1U
TFNhbXBsZXJTdGF0ZT4gdHJ5Q3JlYXRlTXRsU2FtcGxlclN0YXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVT
YW1wbGVyOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExTYW1wbGVyRGVzY3JpcHRvcj4g
bXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10
bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExTYW1wbGVyRGVzY3JpcHRvciBuZXddKTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRyeUNyZWF0ZSgpOiBFcnJvciBjcmVhdGlu
ZyBNVExTYW1wbGVyRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxlcjsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttdGxEZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9k
ZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVVKV07
Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOm10bEFkZHJlc3NNb2RlRm9yQWRk
cmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVYpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBz
ZXRUQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JBZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFk
ZHJlc3NNb2RlVyldOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjptdGxNaW5NYWdG
aWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWluRmlsdGVyKV07Ci0gICAgW210bERlc2Ny
aXB0b3Igc2V0TWFnRmlsdGVyOm10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUoZGVzY3JpcHRv
ci5tYWdGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNaXBGaWx0ZXI6bXRsTWlwRmls
dGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9yLm1pcG1hcEZpbHRlcildOwotICAgIFttdGxEZXNj
cmlwdG9yIHNldExvZE1pbkNsYW1wOmRlc2NyaXB0b3IubG9kTWluQ2xhbXBdOwotICAgIFttdGxE
ZXNjcmlwdG9yIHNldExvZE1heENsYW1wOmRlc2NyaXB0b3IubG9kTWF4Q2xhbXBdOwotICAgIFtt
dGxEZXNjcmlwdG9yIHNldE1heEFuaXNvdHJvcHk6ZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5XTsK
LSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wYXJlRnVuY3Rpb246c3RhdGljX2Nhc3Q8TVRMQ29t
cGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQVUNvbXBhcmVGdW5jdGlv
bihkZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlvbikpXTsKLQotICAgIFttdGxEZXNjcmlwdG9yIHNl
dFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6WUVTXTsKLQotICAgIHNhbXBsZXIgPSBhZG9wdE5TKFtk
ZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxE
ZXNjcmlwdG9yLmdldCgpXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
aWYgKCFzYW1wbGVyKQotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRl
KCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBsZXJTdGF0ZSEiKTsKLQotICAgIHJldHVybiBzYW1w
bGVyOwotfQotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0
IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSB0cnlDcmVhdGVNdGxTYW1wbGVyU3RhdGUoZGV2aWNl
LCBkZXNjcmlwdG9yKTsKLSAgICBpZiAoIXNhbXBsZXIpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTYW1wbGVyKFdURk1vdmUoc2FtcGxlcikp
KTsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihSZXRhaW5QdHI8TVRMU2FtcGxlclN0YXRl
PiYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKQot
ewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NjY0NGMzNWIwYjAwOWQxZDlmNjEwOTFhM2ZmYmY3ZmQ2M2I5MGJlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9y
dCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVT
aGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5w
bGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotICAgIAotICAgIGlmIChHUFVEZXZpY2U6OnVzZVdITFNMKQotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXSExTTDo6Y3JlYXRlU2hhZGVyTW9kdWxl
KGRlc2NyaXB0b3IuY29kZSkpKTsKLQotICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIg
bW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9y
ICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQuR1BV
IiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtb2R1bGUgPSBhZG9wdE5TKFtkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpkZXNjcmlwdG9yLmNvZGUgb3B0aW9u
czpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIExPRyhXZWJH
UFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJyb3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNj
cmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgcmV0dXJuIG1vZHVsZSA/IGFkb3B0UmVmKG5ldyBHUFVTaGFkZXJNb2R1bGUoV1RGTW92
ZShtb2R1bGUpKSkgOiBudWxscHRyOwotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1v
ZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQotICAgIDogbV9wbGF0
Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCi17Ci19Ci0KLUdQVVNoYWRlck1vZHVs
ZTo6R1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9kdWxlPiYmIHdobHNs
TW9kdWxlKQotICAgIDogbV93aGxzbE1vZHVsZSh3aGxzbE1vZHVsZS5tb3ZlVG9VbmlxdWVQdHIo
KSkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2Fw
Q2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZjYzg5MzUzMjBh
MDQ5MmQyZmNkNTM0OTNhNjJhMDJjNDAxOWZjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVU3dhcENoYWlu
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBv
cnQgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmVGb3JtYXQu
aCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJX
ZWJHUFVMYXllci5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNv
cmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1h
dD4gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17
Ci0gICAgYXV0byBtdGxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGxhdGZv
cm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChmb3JtYXQpKTsKLQotICAgIHN3aXRj
aCAobXRsRm9ybWF0KSB7Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm06Ci0gICAg
Y2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JHQjoKLSAgICBjYXNlIE1UTFBpeGVsRm9y
bWF0UkdCQTE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBtdGxGb3JtYXQ7Ci0gICAgZGVmYXVsdDog
ewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogVW5zdXBw
b3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc2V0TGF5ZXJTaGFwZShXZWJHUFVMYXllciAq
bGF5ZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBbbGF5ZXIgc2V0Qm91bmRzOkNH
UmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOwotICAgIFtsYXllciBzZXREcmF3YWJsZVNp
emU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8V2Vi
R1BVTGF5ZXI+IHRyeUNyZWF0ZVdlYkdQVUxheWVyKE1UTERldmljZSAqZGV2aWNlLCBNVExQaXhl
bEZvcm1hdCBmb3JtYXQsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkK
LXsKLQotICAgIFJldGFpblB0cjxXZWJHUFVMYXllcj4gbGF5ZXI7Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1dlYkdQVUxheWVyIG5ld10p
OwotCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWIgR1BVIExheWVyIl07Ci0gICAgW2xheWVyIHNl
dE9wYXF1ZTowXTsKLQotICAgIFtsYXllciBzZXREZXZpY2U6ZGV2aWNlXTsKLSAgICBbbGF5ZXIg
c2V0RnJhbWVidWZmZXJPbmx5Oih1c2FnZSA9PSBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRw
dXRBdHRhY2htZW50KV07Ci0gICAgW2xheWVyIHNldFBpeGVsRm9ybWF0OmZvcm1hdF07Ci0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFsYXllcikKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FN
ZXRhbExheWVyISIpOwotCi0gICAgcmV0dXJuIGxheWVyOwotfQotCi1SZWZQdHI8R1BVU3dhcENo
YWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKCFkZXNjcmlw
dG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
U3dhcENoYWluOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSB0cnlHZXRTdXBw
b3J0ZWRQaXhlbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCk7Ci0gICAgaWYgKCFwaXhlbEZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHVzYWdlT3B0aW9ucyA9IE9w
dGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdl
KTsKLSAgICBpZiAoIXVzYWdlT3B0aW9ucy5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
OjpPdXRwdXRBdHRhY2htZW50KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWlu
Ojp0cnlDcmVhdGUoKTogU3dhcCBjaGFpbiB1c2FnZSBtdXN0IGluY2x1ZGUgT1VUUFVUX0FUVEFD
SE1FTlQhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbGF5
ZXIgPSB0cnlDcmVhdGVXZWJHUFVMYXllcihkZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZp
Y2UoKSwgKnBpeGVsRm9ybWF0LCB1c2FnZU9wdGlvbnMpOwotICAgIGlmICghbGF5ZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc2V0TGF5ZXJTaGFwZShsYXllci5nZXQoKSwgd2lk
dGgsIGhlaWdodCk7Ci0KLSAgICBhdXRvIHN3YXBDaGFpbiA9IGFkb3B0UmVmKG5ldyBHUFVTd2Fw
Q2hhaW4oV1RGTW92ZShsYXllciksIHVzYWdlT3B0aW9ucykpOwotICAgIGRlc2NyaXB0b3IuZGV2
aWNlLT5zZXRTd2FwQ2hhaW4oc3dhcENoYWluLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHN3YXBD
aGFpbjsKLX0KLQotR1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4oUmV0YWluUHRyPFdlYkdQVUxh
eWVyPiYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1
c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRmb3JtU3dhcExheWVyKFdURk1vdmUocGxhdGZvcm1M
YXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdlT3B0aW9ucykKLXsKLSAgICBbbV9wbGF0Zm9ybVN3
YXBMYXllciBzZXRTd2FwQ2hhaW46dGhpc107Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVT
d2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAgICBSZXRhaW5QdHI8TVRMVGV4
dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAgIG1fY3VycmVudERyYXdhYmxlID0gcmV0
YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVyIG5leHREcmF3YWJsZV0pOwotICAgIG10bFRleHR1
cmUgPSBbbV9jdXJyZW50RHJhd2FibGUgdGV4dHVyZV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUoKTogVW5hYmxlIHRvIGdldCBjdXJyZW50
IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJl
dHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZShtdGxUZXh0dXJlKSwgbV91c2FnZSk7Ci19
Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkKLXsKLSAgICBpZiAoIW1fY3VycmVudERy
YXdhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9jdXJyZW50RHJhd2FibGUgcHJlc2Vu
dF07Ci0gICAgbV9jdXJyZW50RHJhd2FibGUgPSBudWxscHRyOwotfQotCi12b2lkIEdQVVN3YXBD
aGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgc2V0TGF5ZXJTaGFw
ZShtX3BsYXRmb3JtU3dhcExheWVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotUGxhdGZv
cm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLVJldGFp
blB0cjxDQU1ldGFsRHJhd2FibGU+IEdQVVN3YXBDaGFpbjo6dGFrZURyYXdhYmxlKCkKLXsKLSAg
ICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiBwdHI7Ci0gICAgcHRyLnN3YXAobV9jdXJyZW50
RHJhd2FibGUpOwotICAgIHJldHVybiBwdHI7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFs
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODIwMGViYjA1OTM0NTNjZGM4NWE2
YzcwMjljNTMxYWE2YzBiZTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVU
ZXh0dXJlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJl
RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExUZXh0dXJlVHlwZSBtdGxU
ZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQotewotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsK
LSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgcmV0dXJuIChkZXNj
cmlwdG9yLnNpemUuaGVpZ2h0ID09IDEpID8gTVRMVGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVU
eXBlMURBcnJheTsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDogewotICAgICAg
ICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoID09IDEpCi0gICAgICAgICAgICByZXR1cm4gKGRl
c2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkgPyBNVExUZXh0dXJlVHlwZTJEIDogTVRMVGV4dHVy
ZVR5cGUyRE11bHRpc2FtcGxlOwotICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUyREFycmF5
OyAvLyBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheSBpcyB1bmF2YWlsYWJsZSBvbiBp
T1MuCi0gICAgfQotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBy
ZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3Mo
T3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBjaGFyKiBjb25z
dCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1
bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNh
bXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJlIGNhbm5vdCBoYXZlIGJvdGggU1RPUkFH
RSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBNVExUZXh0dXJlVXNhZ2UgcmVzdWx0ID0gMDsK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0
YWNobWVudCkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3Rv
cmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCB9KSkKLSAgICAgICAgcmVzdWx0
IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKQotICAgICAgICByZXN1bHQgfD0gTVRMVGV4
dHVyZVVzYWdlU2hhZGVyV3JpdGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgIVBM
QVRGT1JNKE1BQykKLXN0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9y
bWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxGb3JtYXQgZm9ybWF0LCB1bnNpZ25lZCBzYW1wbGVz
KQotewotICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0aFN0ZW5jaWwsIGFuZCBNdWx0aXNhbXBs
ZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRoIHRoZSBNVExTdG9yYWdlTW9kZVByaXZh
dGUgcmVzb3VyY2Ugb3B0aW9uLgotICAgIGlmIChmb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0
aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEpCi0gICAgICAgIHJldHVybiBNVExTdG9y
YWdlTW9kZVByaXZhdGU7Ci0KLSAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVTaGFyZWQ7Ci19Ci0j
ZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRl
TXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgT3B0aW9uU2V0PEdQVVRleHR1cmVV
c2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRv
cj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFRleHR1cmVEZXNjcmlwdG9yIG5ld10pOwot
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9y
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0ZSBuZXcgTVRMVGV4
dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2lkdGggPSBkZXNjcmlwdG9yLnNpemUud2lkdGg7Ci0g
ICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNpZ25lZCBkZXB0aCA9IDE7Ci0gICAgdW5z
aWduZWQgYXJyYXlMZW5ndGggPSAxOwotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24p
IHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgYXJyYXlMZW5n
dGggPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQ
VVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAgaGVpZ2h0ID0gZGVzY3JpcHRvci5zaXpl
LmhlaWdodDsKLSAgICAgICAgYXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAg
ICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAgICAgICBkZXB0aCA9IGRlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byBwaXhl
bEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3Jt
YXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSk7Ci0KLSAgICBhdXRvIG10
bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3ModXNhZ2UsIGZ1
bmN0aW9uTmFtZSk7Ci0gICAgaWYgKCFtdGxVc2FnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBzdG9yYWdlTW9kZSA9IE1UTFN0b3JhZ2VN
b2RlUHJpdmF0ZTsKLSNlbHNlCi0gICAgYXV0byBzdG9yYWdlTW9kZSA9IHN0b3JhZ2VNb2RlRm9y
UGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChwaXhlbEZvcm1hdCwgZGVzY3JpcHRvci5zYW1wbGVD
b3VudCk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
W210bERlc2NyaXB0b3Igc2V0V2lkdGg6d2lkdGhdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldEhl
aWdodDpoZWlnaHRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldERlcHRoOmRlcHRoXTsKLSAgICBb
bXRsRGVzY3JpcHRvciBzZXRBcnJheUxlbmd0aDphcnJheUxlbmd0aF07Ci0gICAgW210bERlc2Ny
aXB0b3Igc2V0TWlwbWFwTGV2ZWxDb3VudDpkZXNjcmlwdG9yLm1pcExldmVsQ291bnRdOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldFNhbXBsZUNvdW50OmRlc2NyaXB0b3Iuc2FtcGxlQ291bnRdOwot
ICAgIFttdGxEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBlOm10bFRleHR1cmVUeXBlRm9yR1BVVGV4
dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFBpeGVs
Rm9ybWF0OnBpeGVsRm9ybWF0XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2FnZToqbXRsVXNh
Z2VdOwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0U3RvcmFnZU1vZGU6c3RvcmFnZU1vZGVdOwot
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIG10bERlc2NyaXB0
b3I7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoY29uc3Qg
R1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qg
ZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNyZWF0ZSgpIjsKLQotICAgIGlmICghZGV2
aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlk
IEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBpZiAoIVtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBzdXBwb3J0c1RleHR1cmVT
YW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XSkgewotICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiRGV2aWNlIGRvZXMgbm90IHN1cHBv
cnQgIiwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCwgIiBzYW1wbGUgY291bnQuIikpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8R1BVVGV4
dHVyZVVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgYXV0byBt
dGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1l
LCBkZXNjcmlwdG9yLCB1c2FnZSk7Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiBtdGxUZXh0dXJlOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxUZXh0dXJlID0gYWRv
cHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10
bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIGlmICghbXRsVGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0
byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RGTW92
ZShtdGxUZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQotUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6
OmNyZWF0ZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4mJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4
dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BV
VGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkpOwotfQotCi1HUFVUZXh0dXJlOjpHUFVU
ZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJlPiYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAgICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUo
dGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVzYWdlKQotewotICAgIG1fcGxhdGZvcm1Vc2FnZSA9
IE1UTFJlc291cmNlVXNhZ2VSZWFkOwotICAgIGlmIChpc1NhbXBsZWQoKSkKLSAgICAgICAgbV9w
bGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNlVXNhZ2VTYW1wbGU7Ci0gICAgZWxzZSBpZiAoaXNT
dG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdlV3Jp
dGU7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVhdGVEZWZhdWx0
VGV4dHVyZVZpZXcoKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiB0ZXh0dXJlOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICB0ZXh0dXJlID0gYWRvcHROUyhb
bV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9y
bVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmICghdGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVVGV4
dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4
dHVyZSB2aWV3ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSksIG1fdXNhZ2UpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxz
TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VXRpbHNNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMwODlmNGE0YzZi
MjgzNGE5YWU2ZmFkNDA3NTcxNmFlNWRjNzA5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVXRpbHNNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVBsYXRmb3JtVGV4dHVyZUZvcm1hdCBwbGF0Zm9ybVRleHR1cmVGb3JtYXRG
b3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRj
aCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3JtOgotICAg
ICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdDo6UmdiYTh1aW50OgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVp
bnQ7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgotICAgICAgICByZXR1
cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6
RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRo
MzJGbG9hdF9TdGVuY2lsODsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1T
UkdCOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtX3NSR0I7Ci0gICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKLSAgICAgICAgcmV0dXJuIE1UTFBp
eGVsRm9ybWF0UkdCQTE2RmxvYXQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9y
R1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbiBmdW5jKQotewotICAgIHN3aXRj
aCAoZnVuYykgewotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjoKLSAgICAgICAg
cmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbk5ldmVyOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0
aW9uOjpMZXNzOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uTGVzczsKLSAgICBj
YXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJl
RnVuY3Rpb25FcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOgot
ICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uTGVzc0VxdWFsOwotICAgIGNhc2UgR1BV
Q29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0
aW9uR3JlYXRlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw6Ci0gICAg
ICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25Ob3RFcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0
aW9uR3JlYXRlckVxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXM6Ci0g
ICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25BbHdheXM7Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBBbGxvY2F0b3JEYXduLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91cEFsbG9jYXRvckRh
d24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDZkNThkMzViMTUxN2I3YmVi
N2VlMTdkZjlhYTk2ZDBiMWIxNzRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQ
VUJpbmRHcm91cEFsbG9jYXRvckRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQmlu
ZEdyb3VwQWxsb2NhdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
RXJyb3JTY29wZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8R1BVQmluZEdyb3Vw
QWxsb2NhdG9yPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0ZShHUFVFcnJvclNjb3BlcyYg
ZXJyb3JzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJpbmRHcm91cEFsbG9jYXRv
cihlcnJvcnMpKTsKLX0KLQotR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpHUFVCaW5kR3JvdXBBbGxv
Y2F0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9ycykKLSAgICA6IG1fZXJyb3JTY29wZXMobWFrZVJl
ZihlcnJvcnMpKQotewotfQotCi1ib29sIEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6cmVhbGxvY2F0
ZShQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCBuZXdPZmZzZXQpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6dHJ5UmVzZXQoKQotewotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQmluZEdy
b3VwRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9H
UFVCaW5kR3JvdXBEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA1ZTZi
Y2RjMTdmOWRlZmU4NjcxNzJhNDg2MzA1ZDhhOGIyYWMxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQmlu
ZEdyb3VwLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3Vw
QWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlIDx3ZWJn
cHUvd2ViZ3B1Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUJpbmRHcm91
cD4gR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgR1BVQmluZEdyb3VwQWxsb2NhdG9yJiBhbGxvY2F0b3IpCi17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLUdQVUJpbmRHcm91cDo6R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91
cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYgb2Zmc2V0cywgR1BVQmluZEdyb3Vw
QWxsb2NhdG9yJiBhbGxvY2F0b3IsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYgYnVmZmVycywg
SGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiYgdGV4dHVyZXMpCi0gICAgOiBtX2FyZ3VtZW50QnVm
ZmVyT2Zmc2V0cyhXVEZNb3ZlKG9mZnNldHMpKQotICAgICwgbV9hbGxvY2F0b3IobWFrZVJlZihh
bGxvY2F0b3IpKQotICAgICwgbV9ib3VuZEJ1ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkKLSAgICAs
IG1fYm91bmRUZXh0dXJlcyhXVEZNb3ZlKHRleHR1cmVzKSkKLXsKLX0KLQotR1BVQmluZEdyb3Vw
Ojp+R1BVQmluZEdyb3VwKCkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91cExheW91dERhd24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQmluZEdyb3VwTGF5b3V0RGF3bi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZWNjZTRlNzM2MWVjMjY3OWY4YWY2
NGQ1NTc0ZTQ2NzUyODEyZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQmlu
ZEdyb3VwTGF5b3V0RGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91
dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2lu
Y2x1ZGUgPHdlYmdwdS93ZWJncHUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8
R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJ1ZmZlckRhd24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQnVmZmVyRGF3bi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiODgyYTIyOTFmZGFlNDgxMTBhZTRhZTc4MDZj
ZjgzNmFjZGY3NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQnVmZmVyRGF3
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQ
VURldmljZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVh
dGUoR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVCdWZmZXI6OkdQVUJ1ZmZl
cihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVyLCBHUFVEZXZpY2UmIGRldmljZSwgc2l6
ZV90IHNpemUsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVCdWZm
ZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQpCi0gICAgOiBtX3BsYXRmb3JtQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkKLSAgICAsIG1fZGV2aWNlKG1ha2VSZWYoZGV2aWNlKSkKLSAgICAsIG1fYnl0ZUxl
bmd0aChzaXplKQotICAgICwgbV91c2FnZSh1c2FnZSkKLSAgICAsIG1faXNNYXBwZWRGcm9tQ3Jl
YXRpb24oaXNNYXBwZWQgPT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCkKLXsKLX0K
LQotR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkKLXsKLSAgICBkZXN0cm95KG51bGxwdHIpOwotfQot
Ci1ib29sIEdQVUJ1ZmZlcjo6aXNSZWFkT25seSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLUdQVUJ1ZmZlcjo6U3RhdGUgR1BVQnVmZmVyOjpzdGF0ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVy
OjptYXBPbkNyZWF0aW9uKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVC
dWZmZXI6OnJlZ2lzdGVyTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNr
LCBib29sIGlzUmVhZCwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotfQotCi12b2lk
IEdQVUJ1ZmZlcjo6cnVuTWFwcGluZ0NhbGxiYWNrKCkKLXsKLX0KLQotSlNDOjpBcnJheUJ1ZmZl
ciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVhZCgpCi17Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6c3RhZ2luZ0J1ZmZlckZvcldy
aXRlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNvcHlT
dGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMqIGVycm9yU2NvcGVzKQotewotfQotCi12
b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JTY29wZXMqIGVycm9yU2NvcGVzKQotewotfQot
Ci12b2lkIEdQVUJ1ZmZlcjo6ZGVzdHJveShHUFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9H
UFVDb21tYW5kQnVmZmVyRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVDb21tYW5kQnVmZmVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI3ZTYxMzhmMGQzOTIxNDRiODU2YmE2MWZlZDNjYzA1NjU0YmY4NTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tbWFuZEJ1ZmZlckRhd24uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BV
Q29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewotICAg
IHJldHVybiBudWxscHRyOwotfQotCi1HUFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVy
KFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVyKQotICAgIDogbV9wbGF0Zm9y
bUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQotewotfQotCi12b2lkIEdQVUNvbW1hbmRC
dWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdWludDY0X3Qg
c3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50
NjRfdCBzaXplKQotewotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1Rl
eHR1cmUoR1BVQnVmZmVyQ29weVZpZXcmJiBzcmNCdWZmZXIsIEdQVVRleHR1cmVDb3B5VmlldyYm
IGRzdFRleHR1cmUsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotfQotCi12b2lkIEdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNvcHlWaWV3JiYgc3Jj
VGV4dHVyZSwgR1BVQnVmZmVyQ29weVZpZXcmJiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNE
JiBzaXplKQotewotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0
dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyYywgR1BVVGV4dHVyZUNvcHlWaWV3JiYgZHN0LCBj
b25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbXB1dGVQYXNzRW5jb2RlckRhd24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZDgyYmNkY2E4
N2YzZDg0ZmMwMDA0N2E3MmZmNmIwY2QwMjk0MDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2Rhd24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQot
ewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVDb21wdXRlUGFzc0VuY29kZXI6OkdQVUNv
bXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIsIFBsYXRmb3Jt
Q29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHImJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQ
YXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNz
RW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBl
bGluZSkKLXsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVuc2ln
bmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopCi17Ci19Ci0KLWNvbnN0IFBsYXRmb3JtUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIqIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNz
RW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21wdXRlUGlwZWxpbmVE
YXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNv
bXB1dGVQaXBlbGluZURhd24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWI5
ZWM2Mzc0OTcyYjBjM2EzNmI5ZjAyNWMxYmU5YWFlNGVlZmQzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9kYXduL0dQVUNvbXB1dGVQaXBlbGluZURhd24uY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVDb21wdXRlUGlwZWxpbmU6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1HUFVDb21wdXRlUGlwZWxpbmU6On5HUFVDb21wdXRlUGlwZWxpbmUoKSA9
IGRlZmF1bHQ7Ci0KLWJvb2wgR1BVQ29tcHV0ZVBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIGNvbXB1dGVT
dGFnZSkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVURldmljZURhd24uY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWQzMjg3ODBhZTU5ZGJmNTQyYTg0MWFhM2VkZjQzZjEz
ZWJhNDViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVURldmljZURhd24uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVEZXZpY2U+IEdQVURldmljZTo6
dHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYg
b3B0aW9ucykKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVEZXZpY2U6OnBy
ZXdhcm0oKQotewotfQotCi1HUFVEZXZpY2U6OkdQVURldmljZShQbGF0Zm9ybURldmljZVNtYXJ0
UHRyJiYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybURldmljZShXVEZNb3ZlKGRldmljZSkpCi17
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9H
UFVQbGF0Zm9ybVR5cGVzRGF3bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVUGxhdGZvcm1UeXBlc0Rhd24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjVhOTliNDU4YjI5OTViMDlkYjE4MTlkZmE4ZDhmOWY3YmY1OGI5Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQbGF0Zm9ybVR5cGVzRGF3bi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d2ViZ3B1L3dlYmdwdS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXVzaW5nIFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0ID0gc3RkOjp1aW50NjRf
dDsKLQotLy8gRGF3biB0eXBlcwotdXNpbmcgUGxhdGZvcm1CdWZmZXIgPSBXR1BVQnVmZmVySW1w
bDsKLXVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciA9IFdHUFVDb21tYW5kQnVmZmVySW1wbDsK
LXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gV0dQVUNvbXB1dGVQYXNzRW5jb2Rl
ckltcGw7Ci11c2luZyBQbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSA9IFdHUFVDb21wdXRlUGlwZWxp
bmVJbXBsOwotdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBXR1BVRGV2aWNlSW1wbDsKLXVzaW5nIFBs
YXRmb3JtRHJhd2FibGUgPSBXR1BVU3VyZmFjZUltcGw7Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyID0gV0dQVUNvbW1hbmRFbmNvZGVySW1wbDsKLXVzaW5nIFBsYXRmb3Jt
UXVldWUgPSBXR1BVUXVldWVJbXBsOwotdXNpbmcgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciA9
IFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGw7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
ID0gV0dQVVJlbmRlclBpcGVsaW5lSW1wbDsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlciA9IFdHUFVT
YW1wbGVySW1wbDsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gV0dQVVNoYWRlck1vZHVs
ZUltcGw7Ci11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IFdHUFVTd2FwQ2hhaW5JbXBsOwotdXNp
bmcgUGxhdGZvcm1UZXh0dXJlID0gV0dQVVRleHR1cmVJbXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotc3RydWN0IEhhbmRsZURlbGV0ZXIgewotcHVibGljOgotICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBoYW5kbGUpID0gZGVsZXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURl
bGV0ZXI8UGxhdGZvcm1CdWZmZXI+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1CdWZm
ZXIqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1
QnVmZmVyRGVzdHJveShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBI
YW5kbGVEZWxldGVyPFBsYXRmb3JtQ29tbWFuZEJ1ZmZlcj4gewotICAgIHZvaWQgb3BlcmF0b3Io
KShQbGF0Zm9ybUNvbW1hbmRCdWZmZXIqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5k
bGUpCi0gICAgICAgICAgICB3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UoaGFuZGxlKTsKLSAgICB9
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybUNvbXB1dGVQ
YXNzRW5jb2Rlcj4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybUNvbXB1dGVQYXNzRW5j
b2RlciogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdn
cHVDb21wdXRlUGFzc0VuY29kZXJSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxh
dGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+IHsKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1Db21wdXRlUGlwZWxpbmUqIGhhbmRsZSkKLSAgICB7
Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVs
ZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxl
dGVyPFBsYXRmb3JtRGV2aWNlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtRGV2aWNl
KiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dwdURl
dmljZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFu
ZGxlRGVsZXRlcjxQbGF0Zm9ybURyYXdhYmxlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRm
b3JtRHJhd2FibGUqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAg
ICAgICB3Z3B1U3VyZmFjZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+
Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7
Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIGhh
bmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1Q29tbWFu
ZEVuY29kZXJSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1RdWV1ZT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0
Zm9ybVF1ZXVlKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAg
ICAgd2dwdVF1ZXVlUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI+IHsKLSAgICB2b2lk
IG9wZXJhdG9yKCkoUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciogaGFuZGxlKQotICAgIHsKLSAg
ICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVh
c2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRl
cjxQbGF0Zm9ybVJlbmRlclBpcGVsaW5lPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAg
ICAgICAgICB3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQot
dGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1TYW1wbGVyPiB7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtU2FtcGxlciogaGFuZGxlKQotICAgIHsKLSAgICAgICAg
aWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVTYW1wbGVyUmVsZWFzZShoYW5kbGUpOwotICAg
IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtU2hhZGVy
TW9kdWxlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtU2hhZGVyTW9kdWxlKiBoYW5k
bGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dwdVNoYWRlck1v
ZHVsZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFu
ZGxlRGVsZXRlcjxQbGF0Zm9ybVN3YXBMYXllcj4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0
Zm9ybVN3YXBMYXllciogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAg
ICAgICAgIHdncHVTd2FwQ2hhaW5SZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxh
dGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1UZXh0dXJlPiB7Ci0gICAgdm9pZCBv
cGVyYXRvcigpKFBsYXRmb3JtVGV4dHVyZSogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhh
bmRsZSkKLSAgICAgICAgICAgIHdncHVUZXh0dXJlUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07
Ci0KLXVzaW5nIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1CdWZmZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1CdWZmZXI+PjsKLXVzaW5nIFBsYXRmb3Jt
Q29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29tbWFuZEJ1
ZmZlciwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybUNvbW1hbmRCdWZmZXI+PjsKLXVzaW5nIFBsYXRm
b3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1D
b21wdXRlUGFzc0VuY29kZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1Db21wdXRlUGFzc0VuY29k
ZXI+PjsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lU21hcnRQdHIgPSBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmUsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1Db21w
dXRlUGlwZWxpbmU+PjsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1EZXZpY2UsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1EZXZpY2U+PjsKLXVz
aW5nIFBsYXRmb3JtRHJhd2FibGVTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURy
YXdhYmxlLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtRHJhd2FibGU+PjsKLXVzaW5nIFBsYXRmb3Jt
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI+PjsKLXVzaW5nIFBsYXRmb3JtUXVldWVTbWFydFB0ciA9IHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVF1ZXVlLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUXVldWU+PjsKLXVz
aW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXI+PjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVJlbmRlclBpcGVsaW5lLCBIYW5kbGVEZWxldGVyPFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmU+PjsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyID0gc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtU2FtcGxlciwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVNhbXBsZXI+
PjsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1TaGFkZXJNb2R1bGUsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+
PjsKLXVzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1Td2FwTGF5ZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1Td2FwTGF5ZXI+PjsKLXVzaW5n
IFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGV4dHVy
ZSwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVRleHR1cmU+PjsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyRGF3bi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZTQ4ZjdiMDI1NTRjY2FiMjQ2NDJl
NGNlOWE0ODVjMWQyNTNiZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXJEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3Mo
KQotewotfQotCi12b2lkIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAo
dW5zaWduZWQgaW5kZXgsIEdQVUJpbmRHcm91cCYgYmluZEdyb3VwKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUXVldWVEYXduLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVF1ZXVlRGF3
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZjZjODAzZDllN2IzNWYzNjNk
NmM3ZDA0MmQ4ZDY0MzI0MWM2YjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BV
UXVldWVEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVVF1ZXVl
PiBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJl
dHVybiBudWxscHRyOwotfQotCi1HUFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0
UHRyJiYgcXVldWUsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybVF1
ZXVlKFdURk1vdmUocXVldWUpKQotICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkK
LXsKLX0KLQotdm9pZCBHUFVRdWV1ZTo6c3VibWl0KFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZl
cj4+JiYgY29tbWFuZEJ1ZmZlcnMpCi17Ci19Ci0KLVN0cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBj
b25zdAotewotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEdQVVF1ZXVlOjpz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGFzc0VuY29kZXJE
YXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVJl
bmRlclBhc3NFbmNvZGVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4
ZDliNmQ1ZTI0M2FlOGJkMTM2Y2E3OGMyYmI0ZjBkODcyMTI3ODMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGFzc0VuY29kZXJEYXduLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotR1BVUmVuZGVyUGFzc0VuY29kZXI6OkdQVVJlbmRlclBhc3NFbmNvZGVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFBsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXJTbWFydFB0ciYmIGVuY29kZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NF
bmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17Ci19Ci0KLWNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIqIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVs
aW5lKQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbG9yKGNv
bnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQotewotfQotCi12b2lkIEdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0KQot
ewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2ln
bmVkIGluZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiBidWZmZXJzLCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1
bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLX0KLQotdm9p
ZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwg
dW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0
ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGlwZWxp
bmVEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUyZmUxZWMwNGZhMWNm
OTVmNzMxNjhiNGE5ZTVkZjgzMDU5NGQ2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3
bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVu
ZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3Jl
YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6On5HUFVSZW5kZXJQaXBlbGlu
ZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVSZW5kZXJQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0
IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0
ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYg
ZnJhZ21lbnRTdGFnZSkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTYW1wbGVyRGF3bi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTYW1wbGVyRGF3bi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYzlkMGFlZmE0MTM5MzM3MWE5OWE0
OTBiYmQzZTJkZjNjNDI3NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVU2Ft
cGxlckRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlci5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU2FtcGxl
cj4gR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBH
UFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciYmIHNh
bXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKQotewotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVU2hh
ZGVyTW9kdWxlRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTlhNTM0YWQ1YWEwOWYzYWY0M2ZjNTE0MjU1NTcyNGNjOWI4ZDcxYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXduLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1
bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
R1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFy
dFB0ciYmIG1vZHVsZSkKLSAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1
bGUpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2Rhd24vR1BVU3dhcENoYWluRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvZGF3bi9HUFVTd2FwQ2hhaW5EYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmE1YTc2ZTA3MDY3MWYyZTQxZGIxYTczNjJkNTNmYzU0ZWFhM2I5YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTd2FwQ2hhaW5EYXduLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OnRy
eUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdQVVN3YXBDaGFp
bjo6R1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHImJiBwbGF0Zm9ybUxheWVy
LCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2VPcHRpb25zKQotICAgIDog
bV9wbGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQotICAgICwgbV91c2Fn
ZSh1c2FnZU9wdGlvbnMpCi17Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46
OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9p
ZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQotewotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUp
Ci0gICAgICAgIHJldHVybjsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQotewotCi19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdQVVN3YXBDaGFpbjo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVUZXh0dXJlRGF3
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVUZXh0
dXJlRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDZkMjQxNzNiNTUx
M2Y4NWEwMjk4ZWE4MTVlZmZhOWRlMWJiZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVVGV4dHVyZURhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8
R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNl
LCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMm
IGVycm9yU2NvcGVzKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1SZWY8R1BVVGV4dHVy
ZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSwg
T3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQot
R1BVVGV4dHVyZTo6R1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUs
IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAgICA6IG1fcGxhdGZv
cm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVzYWdlKQotewotfQot
Ci1SZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IDM2MTYwMmU1N2IyNGZiMTZjYmUyYTdhOTlmNmU1Yzgw
YTMzOWZhYjcuLmNlOGM3ZDQ4MTc5MGE4YTY1ZGViMWZhYmI1YjAxMTVhMzYzN2M4OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMzYsNiArMzYs
NyBAQAogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQg
IlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCmluZGV4IDEyOTNk
YTU1OWY5MjlhN2FlZWM1NGQwN2FhOWFlNGY5OTRmOTViNDQuLmYwMmNlOGZkZjBmMGM1OGY0MDcw
ZDRiNGI3ODFlZGI1ZjFlYzIxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1h
Yy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8
d3RmL2NmL1R5cGVDYXN0c0NGLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJD
b252ZXJzaW9uLmg+CiAKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2lt
cG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNmQxYmU2MTNhMTI5NGI1YWYyOTE4ZDYxNjkw
ZmNjN2ZlMjFkYjQyMi4uY2U3NjlmODVkNjFhOTRhNDhhMmQ3MjhkNzEwMDlmYzE4ZmU5MDZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25m
aWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgICAgIHVw
ZGF0ZUNvbnRlbnRzUmVjdHMoKTsKICAgICB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpIHx8
IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2lmIEVOQUJMRShX
RUJHTCkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgZWxzZSBpZiAocmVuZGVyZXIo
KS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0g
Q2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50
KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4
dCgpKQpAQCAtMjg4NSw3ICsyODg1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRl
bnRDaGFuZ2VkKENvbnRlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAgICAgaWYgKChjaGFuZ2VU
eXBlID09IE1hc2tJbWFnZUNoYW5nZWQpICYmIG1fbWFza0xheWVyKQogICAgICAgICBtX293bmlu
Z0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiAKLSNpZiBF
TkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
KQorI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgaWYg
KChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQgfHwgY2hhbmdlVHlwZSA9PSBDYW52YXNQaXhl
bHNDaGFuZ2VkKSAmJiByZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdT
dHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAg
aWYgKGNoYW5nZVR5cGUgPT0gQ2FudmFzQ2hhbmdlZCkKICAgICAgICAgICAgIGNvbXBvc2l0b3Io
KS5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CmluZGV4IGYxYjRhYWFlZTBiMTcx
NDdkMzY1ZmMxZTJiZjc3NjMwOThiMjdhM2EuLjQ4MTYzNzY1MzE5OTIzZWU5ZWUzNzliNGY5ZGJi
ZjdlYTFiM2YwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1hcHBsZXR2b3MucGxpc3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0
LWFwcGxldHZvcy5wbGlzdApAQCAtMiwxMDAgKzIsOTUgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJM
SUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RU
RHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4K
LSAgICA8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAg
ICAgIDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGlj
dD4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+
Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2Uv
PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAg
IDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+
Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgICAgIDxrZXk+QXR0
cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3X3Zw
OV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5X2Rl
Y29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8ZGlj
dD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9k
aWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9m
b3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8L2tl
eT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVl
Lz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0
PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0Pgor
CTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9j
ZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5D
b2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5
PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRy
aWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0
cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtl
eT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8
a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+
c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT52cDlfZGVjb2Rlcjwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5Pldl
YlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxr
ZXk+d2VibV93ZWJhdWRpbzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pldHNhbTwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KIDwvZGlj
dD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJL
aXQtaW9zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlz
dAppbmRleCA1MGQwM2NmYmQ3NDE3NThkYTkzZGYyNmVmODg4MzI4Zjc0NGRlMzZmLi43OWE0ZTNj
OTg0MmIyMWQ4NDM1ZmMxOTFkMTg2MzIwNWE3YWQyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVh
dHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QKQEAgLTIsMTAwICsyLDk1IEBACiA8IURPQ1RZUEUg
cGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFw
cGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAi
PgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9r
ZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1
ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAg
ICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAg
ICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRl
cmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5
PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUv
PgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAg
ICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAg
ICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+
Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAg
IDxrZXk+QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+
Q29kZUNvbXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwv
ZGljdD4KLSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+dnA5X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+
Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9w
YXJzZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAg
PC9kaWN0PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5
PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0Pgor
CQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGlj
dD4KKwk8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
bWVkaWE8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJ
PGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tl
eT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dl
YmdsPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+
CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9k
aWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+
CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0Pgor
CTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxz
ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJ
CTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJz
ZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2Ft
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0
PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZs
YWdzL1dlYktpdC1tYWNvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1tYWNvcy5wbGlzdAppbmRleCA1MGQwM2NmYmQ3NDE3NThkYTkzZGYyNmVmODg4MzI4Zjc0NGRl
MzZmLi43OWE0ZTNjOTg0MmIyMWQ4NDM1ZmMxOTFkMTg2MzIwNWE3YWQyMTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtbWFjb3MucGxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0CkBAIC0yLDEwMCArMiw5
NSBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO
IiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxp
c3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJm
bG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2Nh
bnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAg
ICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAg
ICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9w
cm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3By
b2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAg
IDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAg
IDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9j
ZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0
Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAg
PHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0g
ICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgot
ICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJpdmFj
eTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAg
PGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KLSAg
ICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAg
ICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0gICAg
PGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0Pgot
ICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5h
YmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV93
ZWJhdWRpbzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dLX2pl
dHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19z
Y3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4K
Kwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJPGRp
Y3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwv
a2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJ
CTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5
PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+
Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtl
eT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVz
PC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4K
KwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KKwk8
ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+
aW5jcmVtZW50YWxfcGRmPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwva2V5Pgor
CTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtl
eT52cDlfZGVjb2Rlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRy
dWUvPgorCTwvZGljdD4KKwk8a2V5PldlYlhSPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4K
Kwk8a2V5PndlYm1fcGFyc2VyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV93ZWJhdWRpbzwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PlJCX2Z1bGxf
bWFuYWdlX1dLX2pldHNhbTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PHRydWUvPgorCTwvZGljdD4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RmVhdHVyZUZsYWdzL1dlYktpdC13YXRjaG9zLnBsaXN0CmluZGV4IGYxYjRhYWFlZTBiMTcxNDdk
MzY1ZmMxZTJiZjc3NjMwOThiMjdhM2EuLjQ4MTYzNzY1MzE5OTIzZWU5ZWUzNzliNGY5ZGJiZjdl
YTFiM2YwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC13
YXRjaG9zLnBsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC13YXRj
aG9zLnBsaXN0CkBAIC0yLDEwMCArMiw5NSBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8v
QXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9w
ZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxr
ZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0Pgot
ICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PmdwdV9wcm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4K
LSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtl
eT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2Rl
Q29tcGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAg
IDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAg
ICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5B
dHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29t
cGxldGU8L2tleT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwv
ZGljdD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5
PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVz
PC9rZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tl
eT4KLSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAg
ICA8a2V5PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+
aW5jcmVtZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29k
ZXJfb25fYmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRy
dWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAg
ICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0g
ICAgPGtleT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9y
ZWFkZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAg
ICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAg
IDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAg
IDwvZGljdD4KLSAgICA8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5h
c3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2Fu
dmFzX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRy
dWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21w
bGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3By
b2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8
L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgor
CQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1
X3Byb2Nlc3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8
ZmFsc2UvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVD
b21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5B
cHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJ
PGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4K
KwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlf
ZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJ
CTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJt
X3dlYmF1ZGlvPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9kaWN0PgogPC9w
bGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuY3BwCmluZGV4IDk3MmJmMWJmNzQyMzQwZGUxMTg5MDc0NzgxMzY4OGMxNWRjNGM3
MmIuLjcxMThiNzk1MzYyNjcwMDkzNWM2ZjFmZGJhN2JlNzUyMTY3MDE0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcApA
QCAtMjMyLDE5ICsyMzIsNiBAQCBib29sIGRlZmF1bHRXZWJSVENDb2RlY3NJbkdQVVByb2Nlc3Mo
KQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1i
b29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCkKLXsKLSNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZM
QUdTKQotICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCgiV2ViR1BVIik7Ci0jZW5kaWYK
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIGJv
b2wgZGVmYXVsdEluQXBwQnJvd3NlclByaXZhY3koKQogewogI2lmIEhBVkUoU1lTVEVNX0ZFQVRV
UkVfRkxBR1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5oCmluZGV4IDhiMzUzYzBmMGU5NTVlZTkwMmM5MTRlZTZkZjlmMDFlNjZiYzVj
MTYuLmU2ZmYxODM2MGIyYmRiMDhlY2YxNmZhOGZiZGU5NDA5ODk2YzU0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC04
NSwxMCArODUsNiBAQCBib29sIGRlZmF1bHRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NFbmFibGVk
KCk7CiBib29sIGRlZmF1bHRXZWJSVENDb2RlY3NJbkdQVVByb2Nlc3MoKTsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKTsKLSNlbmRpZgot
CiBib29sIGRlZmF1bHRJbkFwcEJyb3dzZXJQcml2YWN5KCk7CiAKICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggN2FlZTNjNWIwZTQ1OTVlOWI2
YTFlZDY5OWUxM2Q4MjUzNTU2ZjlkYS4uYzIxZDgyYmYyYWUwOGJkNDU0MzUyOTkxOTQxMTYyODE5
YTkzNmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0yNjEsNyArMjYxLDYgQEAKICNkZWZp
bmUgV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdFdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZCIKICNk
ZWZpbmUgV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZCIKICNkZWZp
bmUgV2ViS2l0V2ViR0wyRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHTDJFbmFibGVk
IgotI2RlZmluZSBXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdQ
VUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEFjY2Vzc2li
aWxpdHlPYmplY3RNb2RlbEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNlcnZlclRpbWluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGZmNzM4
ODViMTg1NGJjZTRkYzM5NGU3OTE4OTFhZGM5MTQwY2ZkMzAuLjZkZTRhYzFjODBjM2RhZDNhMDlm
ZGU1N2JhYzc0ZmU3OTQ1ZWY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMzE3MCwxNiArMzE3MCw2IEBAIC0gKHZvaWQp
c2V0V2ViR0wyRW5hYmxlZDooQk9PTCllbmFibGVkCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpl
bmFibGVkIGZvcktleTpXZWJLaXRXZWJHTDJFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLS0g
KEJPT0wpd2ViR1BVRW5hYmxlZAotewotICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5
OldlYktpdFdlYkdQVUVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKLX0KLQotLSAodm9pZClzZXRXZWJH
UFVFbmFibGVkOihCT09MKWVuYWJsZWQKLXsKLSAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJs
ZWQgZm9yS2V5OldlYktpdFdlYkdQVUVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKLX0KLQogLSAoQk9P
TCltYXNrV2ViR0xTdHJpbmdzRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVl
Rm9yS2V5OldlYktpdE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkUHJlZmVyZW5jZUtleV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXMuaAppbmRleCA3MWFjZDgwODg2ODM1OWZlMTY4MWI3MDRkYTVlYTUw
NzllMzY0OTYyLi5kMDhjYmNiZWNmMzRlYzUxN2YyNDNkOWQwNWFiODJkMDNlNjUxNzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogYm9vbCBpc0ZlYXR1cmVGbGFnRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJsZWQoKTsKLSNlbmRp
ZgotCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKIGJvb2wgZGVmYXVsdEluY3JlbWVu
dGFsUERGRW5hYmxlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tCmluZGV4
IDE2YzU5NzIyOTE5NzFmMTk5MWM0MGFlYTgxZDBmZmJkNmY2NTlkM2IuLjlhOTRkNjVkODVkMTc3
Yjc3NzJiNzljMzg3ODQ4YWQ0YzcyNzVmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1t
CkBAIC02MiwxOSArNjIsNiBAQCBib29sIGlzRmVhdHVyZUZsYWdFbmFibGVkKGNvbnN0IFN0cmlu
ZyYgZmVhdHVyZU5hbWUpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotYm9vbCBk
ZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi17Ci0jaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykK
LSAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWQoIldlYkdQVSIpOwotI2VuZGlmCi0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAjaWYgSEFW
RShJTkNSRU1FTlRBTF9QREZfQVBJUykKIAogYm9vbCBkZWZhdWx0SW5jcmVtZW50YWxQREZFbmFi
bGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDUwNzk3NTE0ODhlNTUxY2ZjYjJiOTRiOWI1ODAzZjZm
M2U5OGM3OWYuLjViMjcxZjA5YTMzNTkzYTNmNTc4MWFhMGViYjdlZGYyZGNjMGZlYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaApAQCAtMzM1LDcgKzMzNSw2IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVy
ZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiBA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3ZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9u
c0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3ZWJBbmltYXRpb25zTXV0YWJs
ZVRpbWVsaW5lc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3ZWJHTDJFbmFi
bGVkOwotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViR1BVRW5hYmxlZDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIG1hc2tXZWJHTFN0cmluZ3NFbmFibGVkOwogQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgYWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHNlcnZlclRpbWluZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTAwMzUyZmQ2
MzkyYzBlOWE0MzM1YzU4MWExMjQxZGRmMWIzMTE1Yy4uYTYxNDk1MDU5OGE3NWFkMWFiYmZmZGMz
NmY3NDFhOWYxNmI1YjU2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyOSBAQAorMjAyMS0wNy0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
U3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBi
aW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9j
cmVhdGUtY29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnRO
b2Rlcy13ZWJncHUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Jl
cXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNv
bnRleHQtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9z
aGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13
ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMv
dXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNo
YXJlZFZlcnRleEZyYWdtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nh
bnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdlYmdwdS9i
aW5kLWdyb3Vwcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JpbmQt
Z3JvdXBzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFu
Z2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5k
LWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Js
ZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
YmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2Vz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2J1ZmZlci1lcnJvcnMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9idWZmZXItZXJyb3JzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29sb3Itd3JpdGUtbWFzay10
cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1
ZmZlcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1
ZmZlcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvY29tcHV0ZS1waXBlbGluZS1l
cnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21wdXRlLXBp
cGVsaW5lLWVycm9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvZXJyb3Itc2NvcGVzLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L2pzL3dlYmdwdS1mdW5jdGlvbnMuanM6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L21hcC1yZWFkLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21h
cC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
bWFwLXdyaXRlLWJ1ZmZlcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcGlwZWxp
bmUtbGF5b3V0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3BpcGVs
aW5lLWxheW91dHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcXVldWUtY3JlYXRp
b24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9xdWV1ZS1jcmVhdGlv
bi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGlu
Zy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1jb21tYW5k
LWVuY29kaW5nLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGlu
ZS1lcnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXIt
cGlwZWxpbmUtZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1w
aXBlbGluZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXIt
cGlwZWxpbmVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ibHVl
LWNoZWNrZXJlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ncmVl
bi00MDAucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24uaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlw
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2
aWV3cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS91bmNhcHR1cmVkLWVycm9ycy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3Jz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUt
c3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92aWV3
cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Yt
c3dpenpsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmJpdHJhcnkt
dmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24t
b3JkZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmd1
bWVudC1ldmFsdWF0aW9uLW9yZGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvYXJyYXktbGVuZ3RoLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvYm9vbHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2J1ZmZlci1mcmFnbWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2FzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9jYXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJp
YWJsZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jaGVj
a2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9jb3B5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvY29weS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2st
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVu
Y2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9kZXZpY2UtcHJvcGVyLXR5cGUtY2hlY2tlci1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWst
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1icmVhay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13aGls
ZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLWV4cGVjdGVkLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG91YmxlLW5vdC1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1u
b3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxp
Y2F0ZS1jdG9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBsaWNh
dGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGlj
YXRlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVy
LXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0z
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0
b3IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVj
LXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1zLTItZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtcy0yLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1zLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bXMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvZXF1YWxpdHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9mbG9hdC1tYXRoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvZmxvYXQtbWF0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvaWYtc3RhdGVtZW50LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvaWYtc3RhdGVtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29t
cGFyZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5l
c3MuanM6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWItZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGli
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xleGluZy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLWNvbnRpbnVlLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMt
dGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWZlcmVuY2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YWtlLWFycmF5LXJlZmVyZW5jZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9tYXRyaXgtMi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL21hdHJpeC0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL21hdHJpeC1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL21hdHJpeC1jb21wYXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNv
bnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXItZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtbWVtb3J5LWxh
eW91dC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXguaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2
YWx1ZS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0
ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL25lc3RlZC1sb29wLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL25lc3RlZC1sb29wLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvbnVsbC1hcmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1h
cnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9udWxsLWFycmF5LXJlZi5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3Np
Z24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci12ZWN0b3ItYXNzaWduLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvb3BlcmF0b3IteHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci14eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9vdmVybG9hZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL292ZXJsb2FkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Bs
dXMtZXF1YWxzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9pbnRl
ci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3Bvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1o
aWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvcmVjdXJzaXZlLXN0cnVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxl
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLXNw
ZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTEtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTItZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTctZXhw
ZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTcuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTgtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIwLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjEtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMi1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTIzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMjQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1l
eHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yNy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0zLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy02Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtNy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy05LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10
ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NldHRl
ci1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBs
ZS1hcnJheXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9z
aW1wbGUtYXJyYXlzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBs
ZS1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2ltcGxlLWdldHRlci1zZXR0ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJpdC10eXBlcy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAt
Mi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1i
aW5kLWdyb3VwLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNl
LWJpbmQtZ3JvdXAtMy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5LWV4cGVjdGVkLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0
ZXMtcHJvcGVybHkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVt
ZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3dpdGNoLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNp
b25zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVy
ZXMtZ2V0ZGltZW5zaW9ucy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90
ZXh0dXJlcy1sb2FkLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3RleHR1cmVzLWxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
dGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZl
bC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUtbGV2ZWwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R3by1k
aW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC91aW50LWJpdHdpc2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVk
LXZhcmlhYmxlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZhcmlhYmxl
LXNoYWRvd2luZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3ZhcmlhYmxlLXNoYWRvd2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC92ZWN0b3ItY29tcGFyZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFk
ZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3ZvaWQtdmFyaWFibGUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1jb250aW51
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93aGxzbC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5n
dGguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy10eXBlcy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFs
dWVzLTItZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvemVy
by1pbml0aWFsaXplLXZhbHVlcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sOiBSZW1vdmVkLgor
CiAyMDIxLTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAg4piC77iPIFtHUFUgUHJvY2Vzc10gRGVmZXIgcmVtb3ZhbCBvZiByZXNvdXJjZXMg
aW4gdGhlIEdQVSBQcm9jZXNzIHVudGlsIHdlJ3ZlIGV4ZWN1dGVkIGFsbCBkaXNwbGF5IGxpc3Qg
aXRlbXMgd2hpY2ggcmVmZXJlbmNlIHRoZW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ5NzZlYjgy
OGFlYzQ1NjIyZWM2MDM2YzBlODdmZjVkMWUxODc0MjkuLjgwYWI4ZmY3NzkzOGYzMzAwMTAxNjE0
YmNlOGE4ZjQ3YzgyMTczNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzM0Niw4ICszMzQ2LDYg
QEAgZmFzdC9kb20vbGlua2lmeS1waG9uZS1udW1iZXJzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzE5OTAzOSBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS1w
YXJhZ3JhcGgtMDAzLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5OTAyOCB3ZWJncHUv
d2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbCBbIFNsb3cgXQotCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L29mZnNldFRvcExlZnQtaW5saW5lLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUZXN0IGlzIGZhaWxpbmcgYW5kIGlzIHByaW50aW5n
IGRpZmZlcmVudCB2YWx1ZXMgd2hlbiBpdCBmYWlscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
CmluZGV4IGExYTIyYzNiNTJlYjg3MTRkYjk2ZGJiOGRkYTNjZTQ1ZWIyYjZjZTUuLjU5YTY1MTNh
NWFhODNhY2E5Y2RkZjg3NzU1NTVkNmNiZGNiM2U0ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVk
LnR4dApAQCAtMTAsNyArMTAsNiBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRv
ci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmln
YXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZp
Z2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCiBuYXZp
Z2F0b3IubGFuZ3VhZ2VzIGlzIE9LCkBAIC0zOSw3ICszOCw2IEBAIG5hdmlnYXRvci5jb250YWN0
cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50
aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRv
ci5ncHUgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFu
Z3VhZ2UgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZXMgaXMgT0sKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE5MjAyZGQ1YzI4MWNi
ZjBiMGNlNjcwOGMxMGM3NTMyNWZiMTllNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250
ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1U
ZXN0IHRoYXQgQ2FudmFzTWFuYWdlciB0cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9m
IFdlYkdQVSBjYW52YXNlcy4KLQotCi09PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENhbnZhcy5DcmVh
dGVDb250ZXh0V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRl
eHRXZWJHUFUuTm9DYW52YXNlcwotUEFTUzogQ2FudmFzTWFuYWdlciBzaG91bGQgaGF2ZSBubyBj
YW52YXNlcy4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2Vi
R1BVLkRldmljZQotUEFTUzogQ2FudmFzIGNvbnRleHQgc2hvdWxkIGJlIFdlYiBHUFUuCi0KLVBB
U1M6IFJlbW92ZWQgY2FudmFzIGhhcyBleHBlY3RlZCBJRC4KLQotLS0gUnVubmluZyB0ZXN0IGNh
c2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5BdHRhY2hlZAotUEFTUzogSW5z
cGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGF0dGFjaGVkIEdQVUNhbnZh
c0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkRldGFjaGVkCi1QQVNT
OiBJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BV
Q2FudmFzQ29udGV4dCB3aXRob3V0IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuCi0KLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuQ1NTCi1QQVNT
OiBJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgQ1NTIEdQVUNhbnZh
c0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE0MGYxMThkMDg4NmNiNzU4MDJmYTE1NDBj
YTVmODU3NmFjNmEwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvY3JlYXRl
LWNvbnRleHQtdXRpbGl0aWVzLmNzcyI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3JlYXRlLWNvbnRleHQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZURldmljZSgpIHsK
LSAgICBmdW5jdGlvbiByZWNlaXZlZERldmljZShkZXZpY2UpIHsKLSAgICAgICAgd2luZG93LmNv
bnRleHRzLnB1c2goZGV2aWNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWNlaXZlZEFkYXB0
ZXIoYWRhcHRlcikgewotICAgICAgICBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKS50aGVuKHJlY2Vp
dmVkRGV2aWNlKTsKLSAgICB9Ci0KLSAgICBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCku
dGhlbihyZWNlaXZlZEFkYXB0ZXIpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBz
dWl0ZSA9IEluc3BlY3RvclRlc3QuQ3JlYXRlQ29udGV4dFV0aWxpdGllcy5pbml0aWFsaXplVGVz
dFN1aXRlKCJDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVSIpOwotCi0gICAgSW5zcGVjdG9yVGVz
dC5DcmVhdGVDb250ZXh0VXRpbGl0aWVzLmFkZFNpbXBsZVRlc3RDYXNlKHsKLSAgICAgICAgbmFt
ZTogIkRldmljZSIsCi0gICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVEZXZpY2UoKWAsCi0gICAg
ICAgIGNvbnRleHRUeXBlOiBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLAotICAgIH0pOwot
Ci0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLkNyZWF0ZUNv
bnRleHRXZWJHUFUuQ2FudmFzLkF0dGFjaGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1
cmUgdGhhdCBhdHRhY2hlZCBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFzIGEgY2Fu
dmFzLCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgp
IHsKLSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBsZXQgbGlz
dGVuZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5l
cihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRUeXBlID09
PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBjcmVhdGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVBdHRhY2hlZENhbnZhcygiZ3B1IilgKQotCi0gICAg
ICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFz
IHNob3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgYXR0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRo
b3V0IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0KLSAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuQ3JlYXRlQ29udGV4
dFdlYkdQVS5DYW52YXMuRGV0YWNoZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSB0
aGF0IGRldGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgYXJlbid0IHRyYWNrZWQgYXMgYSBjYW52YXMs
IGluc3RlYWQgb2YgdGhlIFdlYkdQVURldmljZS4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewot
ICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5l
ciA9IFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKFdJ
LkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC5kYXRhLml0ZW0uY29udGV4dFR5cGUgPT09IFdJ
LkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUpOwotICAgICAgICAgICAgICAgIGNyZWF0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZURldGFjaGVkQ2FudmFzKCJncHUiKWApCi0KLSAgICAgICAg
ICAgIFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCBsaXN0ZW5lcik7Ci0KLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoY3JlYXRlZCwgIkluc3BlY3RvciBjYW52YXMgc2hv
dWxkIG5vdCBiZSBjcmVhdGVkIGZvciBkZXRhY2hlZCBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQg
Y29ubmVjdGVkIFdlYkdQVURldmljZS4iKTsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5DcmVhdGVDb250ZXh0V2Vi
R1BVLkNhbnZhcy5DU1MiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSB0aGF0IENTUyBH
UFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFzIGEgY2FudmFzLCBpbnN0ZWFkIG9mIHRo
ZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxl
dCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5jYW52YXNN
YW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2
ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4
dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KGBjcmVhdGVDU1NDYW52YXMoImdwdSIsICJjc3MtY2FudmFzIilgKQotCi0gICAgICAgICAgICBX
SS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5D
b2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotCi0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFzIHNob3VsZCBu
b3QgYmUgY3JlYXRlZCBmb3IgQ1NTIEdQVUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQg
V2ViR1BVRGV2aWNlLiIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0IHRoYXQgQ2FudmFzTWFuYWdlciB0cmFja3MgY3JlYXRp
b24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBjYW52YXNlcy48L3A+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGll
bnROb2Rlcy13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmFiZTczYzYzMTU4NTJkMDRjOWVjYTkzMDU2N2ZiZDdkZTJhNzJlNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi16Ci1UZXN0IHRoYXQgQ2FudmFzQWdlbnQg
dHJhY2tzIGNoYW5nZXMgaW4gdGhlIGNsaWVudCBub2RlcyBvZiBhIFdlYkdQVSBkZXZpY2UuCi0K
LQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQ
VQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BV
LkNyZWF0ZQotUEFTUzogVGhlcmUgc2hvdWxkIGJlIG9uZSBjbGllbnQgbm9kZS4KLVBBU1M6IENs
aWVudCBub2RlICJjYW52YXMiIGlzIHZhbGlkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWIzM2ZlM2Y5ZDNhMTBlZTVjNGMxNTY4YTgzZGEx
NDE2MDg4ZjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotejwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxl
ZCh0cnVlKTsKLQotYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2xpZW50KCkgewotICAgIGxldCBhZGFw
dGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpOwotICAgIGxldCBkZXZp
Y2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLQotICAgIGxldCBjb250ZXh0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oe2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BVIik7Ci0K
LSAgICBmdW5jdGlvbiBsb2dDbGllbnROb2RlcyhjbGllbnROb2RlcykgewotICAgICAgICBmb3Ig
KGxldCBjbGllbnROb2RlIG9mIGNsaWVudE5vZGVzKSB7Ci0gICAgICAgICAgICBpZiAoY2xpZW50
Tm9kZSkKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYENsaWVudCBub2RlICIk
e2NsaWVudE5vZGUuYXBwcm9wcmlhdGVTZWxlY3RvckZvcigpfSIgaXMgdmFsaWQuYCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJJbnZhbGlk
IGNsaWVudCBub2RlLiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3VpdGUuYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnJlcXVlc3RDbGllbnROb2Rlcy5XZWJHUFUuQ3Jl
YXRlIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGNyZWF0aW5nIGEgV2ViR1BV
IGRldmljZSBjbGllbnQgbm9kZSBpcyB0cmFja2VkIGNvcnJlY3RseS4iLAotICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuQ2FudmFzLmF3YWl0RXZlbnQoV0ku
Q2FudmFzLkV2ZW50LkNsaWVudE5vZGVzQ2hhbmdlZCkKLSAgICAgICAgICAgIC50aGVuKChldmVu
dCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdl
dC5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQudGFyZ2V0LnJlcXVlc3RDbGllbnROb2RlcygoY2xpZW50Tm9kZXMpID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjbGllbnRO
b2Rlcy5sZW5ndGgsIDEsICJUaGVyZSBzaG91bGQgYmUgb25lIGNsaWVudCBub2RlLiIpOwotICAg
ICAgICAgICAgICAgICAgICBsb2dDbGllbnROb2RlcyhjbGllbnROb2Rlcyk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDbGll
bnQoKWApLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0IENhbnZhc0FnZW50IHRyYWNrcyBjaGFu
Z2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2YgYSBXZWJHUFUgZGV2aWNlLjwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVz
dFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYTBlNGYxZjA1NTkzNDhjODgzYjQxOWNmNzU0ZTFjYmVh
YTVkYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1XZWJHUFUgdGVzdHMgZm9y
IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlIGNvbW1hbmQuCi0KLQotPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5jb21wdXRl
LlNoYWRlci5jb21wdXRlCi0KLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNv
bXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMg
dGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFk
SUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotCi0KLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5j
b21wdXRlLlNoYWRlci5mcmFnbWVudAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9u
LgotRXJyb3I6IE1pc3Npbmcgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVuIHBy
b2dyYW1JZAotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3Vy
Y2UuV2ViR1BVLlByb2dyYW0uY29tcHV0ZS5TaGFkZXIudmVydGV4Ci1QQVNTOiBTaG91bGQgcHJv
ZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTWlzc2luZyBzaGFkZXIgb2YgZ2l2ZW4gc2hhZGVy
VHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMu
cmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5yZW5kZXIuU2hhZGVyLmNvbXB1dGUK
LVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBNaXNzaW5nIHNoYWRl
ciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQKLQotLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlLldlYkdQVS5Qcm9ncmFtLnJlbmRl
ci5TaGFkZXIuZnJhZ21lbnQKLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0
aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVu
dFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMu
cmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5yZW5kZXIuU2hhZGVyLnZlcnRleAot
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBw
b3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0
U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9y
ZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzMmJlNjBlZDFhMmI5ZTBjOWQwOTU5YTFjZjhhNjAwNDNkMmQ2OGU5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxp
dGllcy13ZWJncHUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVx
dWVzdFNoYWRlclNvdXJjZS5XZWJHUFUiKTsKLQotICAgIGZvciAobGV0IHByb2dyYW1UeXBlIG9m
IE9iamVjdC52YWx1ZXMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZSkpIHsKLSAgICAgICAg
Zm9yIChsZXQgc2hhZGVyVHlwZSBvZiBPYmplY3QudmFsdWVzKFdJLlNoYWRlclByb2dyYW0uU2hh
ZGVyVHlwZSkpIHsKLSAgICAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAg
ICAgICBuYW1lOiBgQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uJHtw
cm9ncmFtVHlwZX0uU2hhZGVyLiR7c2hhZGVyVHlwZX1gLAotICAgICAgICAgICAgICAgIGFzeW5j
IHRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gSW5zcGVj
dG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JUeXBlKHByb2dyYW1UeXBlKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFtKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0iOwotCi0gICAgICAgICAgICAgICAgICAg
IGxldCBsb2dTaGFkZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZXQge3NvdXJjZX0gPSBhd2FpdCBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRl
clByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgIGxldCBpc0NvbXB1dGVQcm9ncmFtID0gcHJvZ3JhbVR5cGUgPT09
IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZTsKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IGlzQ29tcHV0ZVNoYWRlciA9IHNoYWRlclR5cGUgPT09IFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5Db21wdXRlOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb21wdXRlUHJv
Z3JhbSAhPT0gaXNDb21wdXRlU2hhZGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24obG9nU2hhZGVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbG9nU2hhZGVyKCkKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9ImxvYWQoKSI+Ci08cD5XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy5yZXF1ZXN0
U2hhZGVyU291cmNlIGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJn
cHUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjE2OTIyMTJh
OGYzZDc3ZGRkYzVkMGM2MTU1YzkzOGJkODkwZWJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2
ZUNvbnRleHQtd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBA
QAotVGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNvbnRleHQgY29tbWFuZCBmb3IgV2ViR1BV
IGRldmljZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMucmVzb2x2ZUNvbnRl
eHRXZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJH
UFUudmFsaWRJZGVudGlmaWVyCi1QQVNTOiBQYXlsb2FkIHNob3VsZCBoYXZlIHR5cGUgIm9iamVj
dCIuCi1QQVNTOiBQYXlsb2FkIHNob3VsZCBoYXZlIGNsYXNzTmFtZSAiR1BVRGV2aWNlIi4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13
ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQt
d2ViZ3B1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MjViMjcxNjQ4ZjQ0
NGMyM2M5ZDJhODVjYjg1MjA2MjRjYjYyNTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29u
dGV4dC13ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
V2ViR1BVRW5hYmxlZCh0cnVlKTsKLQotZnVuY3Rpb24gY3JlYXRlRGV2aWNlKCkgewotICAgIG5h
dmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKS50aGVuKGZ1bmN0aW9uIGFkYXB0ZXJSZXF1ZXN0
ZWQoYWRhcHRlcikgewotICAgICAgICBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKS50aGVuKGZ1bmN0
aW9uIGRldmljZVJlcXVlc3RlZChkZXZpY2UpIHsKLSAgICAgICAgICAgIHdpbmRvdy5jb250ZXh0
V2ViR1BVID0gZGV2aWNlOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJD
YW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUiKTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
LSAgICAgICAgbmFtZTogYENhbnZhcy5yZXNvbHZlQ29udGV4dFdlYkdQVS52YWxpZElkZW50aWZp
ZXJgLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCByZXR1cm4gYSB2YWxpZCBvYmplY3Qg
Zm9yIHRoZSBnaXZlbiBjYW52YXMgaWRlbnRpZmllci4iLAotICAgICAgICBhc3luYyB0ZXN0KCkg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmNhbnZhc01hbmFnZXIuY2Fu
dmFzQ29sbGVjdGlvbi5zaXplLCAiVGhlcmUgc2hvdWxkIGJlIG5vIGNhbnZhc2VzLiIpOwotCi0g
ICAgICAgICAgICBsZXQgW2NhbnZhc0NvbGxlY3Rpb25JdGVtQWRkZWRFdmVudF0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xs
ZWN0aW9uLmF3YWl0RXZlbnQoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpLAotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZURldmljZSgpYCks
Ci0gICAgICAgICAgICBdKTsKLQotICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGNhbnZhc0NvbGxl
Y3Rpb25JdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChjYW52YXMuY29udGV4dFR5cGUsIFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUs
ICJBZGRlZCBjYW52YXMgc2hvdWxkIGJlIGEgV2ViR1BVIGRldmljZS4iKTsKLQotICAgICAgICAg
ICAgY29uc3Qgb2JqZWN0R3JvdXAgPSAidGVzdCI7Ci0gICAgICAgICAgICBsZXQge29iamVjdH0g
PSBhd2FpdCBDYW52YXNBZ2VudC5yZXNvbHZlQ29udGV4dChjYW52YXMuaWRlbnRpZmllciwgb2Jq
ZWN0R3JvdXApCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG9iamVjdC50
eXBlLCAib2JqZWN0IiwgYFBheWxvYWQgc2hvdWxkIGhhdmUgdHlwZSAib2JqZWN0Ii5gKTsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwob2JqZWN0LmNsYXNzTmFtZSwgIkdQ
VURldmljZSIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIGNsYXNzTmFtZSAiR1BVRGV2aWNlIi5gKTsK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8
cD5UZXN0cyBmb3IgdGhlIENhbnZhcy5yZXNvbHZlQ29udGV4dCBjb21tYW5kIGZvciBXZWJHUFUg
ZGV2aWNlcy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1v
dmUtd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4
ZDFmYmFmYmZlMzRlNjhjOTRkOTg3NTNjYTAyNGQ1NWM0ZmU4ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMjggKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKCk6IFdITFNMIGNvbXBpbGUgZXJyb3I6IENhbm5vdCBsZXg6IENhbm5vdCBj
b25zdW1lIHRva2VuCi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVSZW5kZXJQaXBl
bGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0
b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCk6
IFdITFNMIGNvbXBpbGUgZXJyb3I6IENhbm5vdCBsZXg6IENhbm5vdCBjb25zdW1lIHRva2VuCi1D
T05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZSgpOiBXSExTTCBj
b21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgotVGVzdCB0aGF0
IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUg
c2hhZGVyIHByb2dyYW1zLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dy
YW0uV2ViR1BVLkV4aXN0aW5nCi1QQVNTOiBBZGRlZCAiY29tcHV0ZSIgU2hhZGVyUHJvZ3JhbS4K
LVBBU1M6IEFkZGVkICJyZW5kZXIiIFNoYWRlclByb2dyYW0uCi1QQVNTOiBUaGVyZSBzaG91bGQg
YmUgdHdvIFNoYWRlclByb2dyYW0uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hh
ZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuQ29tcHV0ZS5WYWxpZAotUEFTUzogQWRkZWQgImNvbXB1
dGUiIFNoYWRlclByb2dyYW0uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVy
UHJvZ3JhbS5XZWJHUFUuQWRkZWQuQ29tcHV0ZS5JbnZhbGlkCi1QQVNTOiBTaG91bGQgbm90IGNy
ZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFsaWQgZGVzY3JpcHRvci4KLQotLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5SZW5kZXIu
VmFsaWQKLVBBU1M6IEFkZGVkICJyZW5kZXIiIFNoYWRlclByb2dyYW0uCi0KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLkludmFs
aWQKLVBBU1M6IFNob3VsZCBub3QgY3JlYXRlIGEgU2hhZGVyUHJvZ3JhbSBmb3IgYW4gaW52YWxp
ZCBkZXNjcmlwdG9yLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dy
YW0uV2ViR1BVLlBhcmVudERldmljZVJlbW92ZWQKLVBBU1M6IFJlbW92ZWQgU2hhZGVyUHJvZ3Jh
bSBiZWZvcmUgQ2FudmFzLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWZiODc3MmMwYjM3NWM0MGQ1ZDdhMGU0MjAyYTU0
ZmY1ZDUyZDBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdl
YmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy13ZWJncHUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLXdpbmRvdy5iZWZvcmVUZXN0ID0gYXN5bmMgZnVuY3Rpb24oKSB7Ci0gICAgYXdhaXQg
UHJvbWlzZS5hbGwoWwotICAgICAgICBjcmVhdGVDb21wdXRlUGlwZWxpbmUoIklOVkFMSUQiKSwK
LSAgICAgICAgY3JlYXRlUmVuZGVyUGlwZWxpbmUoIklOVkFMSUQiKSwKLSAgICBdKTsKLX07Ci0K
LWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKGBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFVgKTsKLQotICAgIGxldCBjYW52
YXNlcyA9IEFycmF5LmZyb20oV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uKTsKLSAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXNlcy5sZW5ndGggPT09IDEsICJUaGVyZSBzaG91
bGQgb25seSBiZSBvbmUgY2FudmFzLiIpOwotCi0gICAgbGV0IGNhbnZhcyA9IGNhbnZhc2VzWzBd
OwotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhcywgIlRoZXJlIHNob3VsZCBiZSBhIGNh
bnZhcy4iKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMuY29udGV4dFR5cGUgPT09
IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUsICJDYW52YXMgc2hvdWxkIGJlIFdlYkdQVS4i
KTsKLQotICAgIGFzeW5jIGZ1bmN0aW9uIGF3YWl0UHJvZ3JhbUFkZGVkKHByb2dyYW1UeXBlKSB7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAg
ICAgICAgICBsZXQgbGlzdGVuZXJJdGVtQWRkZWQgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxl
Y3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb2dyYW0gPSBldmVudC5kYXRhLml0ZW07
Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyYW0ucHJvZ3JhbVR5cGUgIT09IHByb2dyYW1UeXBl
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQocHJvZ3JhbSBpbnN0YW5jZW9mIFdJLlNoYWRlclByb2dyYW0sIGBB
ZGRlZCAiJHtwcm9ncmFtVHlwZX0iIFNoYWRlclByb2dyYW0uYCk7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQocHJvZ3JhbS5jYW52YXMgPT09IGNhbnZhcywgIlNoYWRlclBy
b2dyYW0gc2hvdWxkIGJlIGZvciB0aGUga25vd24gQ2FudmFzLiIpOwotCi0gICAgICAgICAgICAg
ICAgcmVzb2x2ZShwcm9ncmFtKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVy
UHJvZ3JhbS5XZWJHUFUuRXhpc3RpbmciLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRo
YXQgU2hhZGVyUHJvZ3JhbUFkZGVkIGlzIHNlbnQgZm9yIGEgcHJvZ3JhbSBjcmVhdGVkIGJlZm9y
ZSBDYW52YXNBZ2VudCBpcyBlbmFibGVkLiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAg
ICAgICAgICBhc3luYyBmdW5jdGlvbiBjaGVja0V4aXN0cyhwcm9ncmFtVHlwZSkgewotICAgICAg
ICAgICAgICAgIGlmIChJbnNwZWN0b3JUZXN0LlNoYWRlclByb2dyYW0ucHJvZ3JhbUZvclR5cGUo
cHJvZ3JhbVR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhg
QWRkZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9ncmFtLmApOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYXdhaXQg
YXdhaXRQcm9ncmFtQWRkZWQocHJvZ3JhbVR5cGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgY2hlY2tFeGlzdHMoV0ku
U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlKSwKLSAgICAgICAgICAgICAgICBjaGVj
a0V4aXN0cyhXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlciksCi0gICAgICAgICAg
ICBdKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjYW52YXMuc2hh
ZGVyUHJvZ3JhbUNvbGxlY3Rpb24uc2l6ZSwgMiwgIlRoZXJlIHNob3VsZCBiZSB0d28gU2hhZGVy
UHJvZ3JhbS4iKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2Uo
ewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1
dGUuVmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQvcmVtb3Zl
ZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAg
IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhd2FpdFByb2dyYW1BZGRlZChX
SS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGUpLAotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpYCksCi0g
ICAgICAgICAgICBdKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNv
bXB1dGUuSW52YWxpZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBhZGRlZC9y
ZW1vdmVkIGV2ZW50cyBhcmUgc2VudC4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAg
ICAgICAgbGV0IHNoYWRlclByb2dyYW1BZGRlZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBsZXQg
bGlzdGVuZXIgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAg
ICAgICAgICAgICAgIHNoYWRlclByb2dyYW1BZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKCJJTlZBTElEIilgKTsKLQotICAgICAgICAgICAgY2FudmFzLnNoYWRl
clByb2dyYW1Db2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVu
dC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RmFsc2Uoc2hhZGVyUHJvZ3JhbUFkZGVkLCAiU2hvdWxkIG5vdCBjcmVhdGUgYSBTaGFkZXJQcm9n
cmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5BZGRlZC5SZW5kZXIuVmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMg
dGVzdCgpIHsKLSAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAg
ICBhd2FpdFByb2dyYW1BZGRlZChXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLlJlbmRlciks
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoKWApLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5BZGRlZC5SZW5kZXIuSW52YWxpZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAi
Q2hlY2sgdGhhdCBhZGRlZC9yZW1vdmVkIGV2ZW50cyBhcmUgc2VudC4iLAotICAgICAgICBhc3lu
YyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW1BZGRlZCA9IGZhbHNlOwot
Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rp
b24uc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQs
IChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIHNoYWRlclByb2dyYW1BZGRlZCA9IHRydWU7
Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgY3JlYXRlUmVuZGVyUGlwZWxpbmUoIklOVkFMSUQiKWApOwotCi0gICAgICAg
ICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZShzaGFkZXJQcm9ncmFtQWRkZWQsICJTaG91bGQgbm90IGNy
ZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFsaWQgZGVzY3JpcHRvci4iKTsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAi
Q2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLlBhcmVudERldmljZVJlbW92ZWQiLAotICAgICAg
ICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIFNoYWRlclByb2dyYW0gaXMgcmVtb3ZlZCBi
ZWZvcmUgaXQncyBwYXJlbnQgQ2FudmFzLiIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7Ci0gICAgICAgICAgICBsZXQgY2FudmFzUmVtb3ZlZCA9IGZhbHNlOwotCi0gICAgICAgICAg
ICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtUmVtb3ZlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgY2FudmFzUmVtb3ZlZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgbGV0IHNoYWRlclByb2dyYW1Db3VudCA9IGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVj
dGlvbi5zaXplOwotICAgICAgICAgICAgbGV0IGxpc3RlbmVySXRlbVJlbW92ZWQgPSBjYW52YXMu
c2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2
ZW50Lkl0ZW1SZW1vdmVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoLS1zaGFk
ZXJQcm9ncmFtQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgICAgIGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIGxpc3RlbmVySXRlbVJlbW92ZWQpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoY2FudmFzUmVtb3ZlZCwg
IlJlbW92ZWQgU2hhZGVyUHJvZ3JhbSBiZWZvcmUgQ2FudmFzLiIpOwotICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGBkZWxldGVEZXZpY2UoKWApOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgb25sb2FkPSJsb2FkKCkiPgotICAgIDxwPlRlc3QgdGhhdCBDYW52YXNNYW5hZ2Vy
IHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgV2ViR1BVIHNoYWRlciBwcm9ncmFt
cy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJlZDM3MjIzYzc1YzBmZTU4NTYxZTgyYWIwZDE0OTY1
YzRhY2JmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotV2ViR1BVIHRlc3RzIGZvciBDYW52
YXMudXBkYXRlU2hhZGVyIGNvbW1hbmQuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52
YXMudXBkYXRlU2hhZGVyLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRh
dGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuVmFsaWQKLVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBj
aGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJH
UFUuQ29tcHV0ZS5JbnZhbGlkCi1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1F
cnJvcjogRmFpbGVkIHRvIHVwZGF0ZSBzaGFkZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2
ZW4gcHJvZ3JhbUlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4KLQotLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlZlcnRleC5WYWxpZAot
UEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5WZXJ0ZXguSW52YWxpZAotUEFTUzogU2hvdWxk
IHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9m
IGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3Vs
ZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hh
ZGVyLldlYkdQVS5GcmFnbWVudC5WYWxpZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5n
ZWQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5G
cmFnbWVudC5JbnZhbGlkCi1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJv
cjogRmFpbGVkIHRvIHVwZGF0ZSBzaGFkZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4g
cHJvZ3JhbUlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJl
ZFZlcnRleEZyYWdtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YWJjZDAwNjZlNzRjMmRkNGM1MTQ3NmM0
ZjcwYzgwYTQ4N2VkOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNo
YXJlZFZlcnRleEZyYWdtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLVdlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kIHdoZW4g
dGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBvZiBhIHJlbmRlciBwaXBlbGluZSBzaGFy
ZSB0aGUgc2FtZSBtb2R1bGUuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMudXBk
YXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudAotLS0gUnVubmluZyB0ZXN0IGNh
c2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50LlNpbmds
ZVBpcGVsaW5lCi1DcmVhdGluZyByZW5kZXIgcGlwZWxpbmUuLi4KLVBBU1M6IFZlcnRleCBhbmQg
RnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotVXBkYXRpbmcgdmVy
dGV4IHNoYWRlciBzb3VyY2UuLi4KLVBBU1M6IFZlcnRleCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNv
dXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotUEFTUzogVmVydGV4IHNvdXJjZSBzaG91bGQgaGF2
ZSBjaGFuZ2VkLgotVXBkYXRpbmcgZnJhZ21lbnQgc2hhZGVyIHNvdXJjZS4uLgotUEFTUzogVmVy
dGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuCi1QQVNT
OiBGcmFnbWVudCBzb3VyY2Ugc2hvdWxkIGhhdmUgY2hhbmdlZC4KLQotLS0gUnVubmluZyB0ZXN0
IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Lk11
bHRpcGxlUGlwZWxpbmVzCi1DcmVhdGluZyByZW5kZXIgcGlwZWxpbmUuLi4KLUNyZWF0aW5nIHJl
bmRlciBwaXBlbGluZS4uLgotUEFTUzogQm90aCBwaXBlbGluZXMgc2hvdWxkIGhhdmUgdGhlIHNh
bWUgc291cmNlLgotVXBkYXRpbmcgcGlwZWxpbmUgMSB2ZXJ0ZXggc291cmNlLi4uCi1QQVNTOiBT
b3VyY2Ugb2YgcGlwZWxpbmUgMSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotUEFTUzogQm90aCBwaXBl
bGluZXMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IHNvdXJjZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhG
cmFnbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIt
d2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhjZjlhNDc1NjIyNDIxYzgzNjg5YzlhZDM3ZDIxOTBhMDFjZTllMzkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRXZWJHUFVFbmFibGVkKHRy
dWUpOwotCi1jb25zdCByZW5kZXJQaXBlbGluZVNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJp
YnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24p
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWA7Ci0KLWxldCBkZXZp
Y2UgPSBudWxsOwotbGV0IHNoYWRlck1vZHVsZSA9IG51bGw7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNy
ZWF0ZVJlbmRlclBpcGVsaW5lKCkgewotICAgIGlmICghZGV2aWNlKSB7Ci0gICAgICAgIGxldCBh
ZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpOwotICAgICAgICBk
ZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLSAgICB9Ci0KLSAgICBpZiAo
IXNoYWRlck1vZHVsZSkKLSAgICAgICAgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogcmVuZGVyUGlwZWxpbmVTb3VyY2V9KTsKLQotICAgIC8vIENvcGllZCBm
cm9tIHdlYmdwdS93aGxzbC93aGxzbC5odG1sLgotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29u
c3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZs
b2F0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0
dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dDEgPSB7c3RyaWRlOiA0LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MCwgaW5wdXQxXTsKLSAg
ICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlz
aWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoe3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJH
UFUuU2hhcmVkVmVydGV4RnJhZ21lbnQiKTsKLQotICAgIGFzeW5jIGZ1bmN0aW9uIGF3YWl0UHJv
Z3JhbUNyZWF0ZWQoKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDcmVhdGluZyByZW5k
ZXIgcGlwZWxpbmUuLi4iKTsKLSAgICAgICAgbGV0IGV2YWx1dGVQcm9taXNlID0gSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlUmVuZGVyUGlwZWxpbmUoKWApOwotCi0gICAgICAg
IGlmICghV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnNpemUpCi0gICAgICAgICAg
ICBhd2FpdCBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYXdhaXRFdmVudChXSS5D
b2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCk7Ci0KLSAgICAgICAgbGV0IGNhbnZhcyA9IEFycmF5
LmZyb20oV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uKVswXTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4
dFR5cGUuV2ViR1BVLCAiQ2FudmFzIHNob3VsZCBiZSBXZWJHUFUuIik7Ci0KLSAgICAgICAgbGV0
IGl0ZW1BZGRlZEV2ZW50ID0gYXdhaXQgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLmF3
YWl0RXZlbnQoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpOwotICAgICAgICBsZXQgc2hh
ZGVyUHJvZ3JhbSA9IGl0ZW1BZGRlZEV2ZW50LmRhdGEuaXRlbTsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoc2hhZGVyUHJvZ3JhbS5wcm9ncmFtVHlwZSA9PT0gV0kuU2hhZGVyUHJvZ3Jh
bS5Qcm9ncmFtVHlwZS5SZW5kZXIsICJTaGFkZXIgcHJvZ3JhbSBzaG91bGQgYmUgYSByZW5kZXIg
cGlwZWxpbmUuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHNoYWRlclByb2dyYW0u
c2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIsICJTaGFkZXIgcHJvZ3JhbSBzaG91bGQgaGF2ZSBh
IHNoYXJlZCB2ZXJ0ZXggYW5kIGZyYWdtZW50IG1vZHVsZS4iKTsKLQotICAgICAgICBhd2FpdCBl
dmFsdXRlUHJvbWlzZTsKLSAgICAgICAgcmV0dXJuIHNoYWRlclByb2dyYW07Ci0gICAgfQotCi0g
ICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRl
ci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQuU2luZ2xlUGlwZWxpbmUiLAotICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdXBkYXRpbmcgdGhlIHZlcnRleC9mcmFnbWVudCBzaGFk
ZXIgd2lsbCBhbHNvIGFmZmVjdCB0aGUgZnJhZ21lbnQvdmVydGV4IHNoYWRlciBpZiB0aGV5IGJv
dGggdXNlIHRoZSBzYW1lIG1vZHVsZS4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAg
ICAgICAgbGV0IHNoYWRlclByb2dyYW0gPSBhd2FpdCBhd2FpdFByb2dyYW1DcmVhdGVkKCk7Ci0K
LSAgICAgICAgICAgIGxldCBbb3JpZ2luYWxWZXJ0ZXhTb3VyY2UsIG9yaWdpbmFsRnJhZ21lbnRT
b3VyY2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50
LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQ
cm9ncmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5y
ZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJv
Z3JhbS5TaGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwob3JpZ2luYWxWZXJ0ZXhTb3VyY2UsIG9y
aWdpbmFsRnJhZ21lbnRTb3VyY2UsICJWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBzb3VyY2Vz
IHNob3VsZCBiZSB0aGUgc2FtZS4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlVwZGF0aW5nIHZlcnRleCBzaGFkZXIgc291cmNlLi4uIik7Ci0gICAgICAgICAgICBhd2FpdCBD
YW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFk
ZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LCAiLy8gTU9ESUZJRUQgVkVSVEVYXG5cbiIgKyBv
cmlnaW5hbFZlcnRleFNvdXJjZS5zb3VyY2UpOwotCi0gICAgICAgICAgICBsZXQgW3ZlcnRleFNv
dXJjZUFmdGVyVXBkYXRpbmdWZXJ0ZXgsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ1ZlcnRl
eF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVl
c3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5nVmVy
dGV4LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0ZXgsICJWZXJ0ZXggYW5kIEZyYWdt
ZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4iKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFsKHZlcnRleFNvdXJjZUFmdGVyVXBkYXRp
bmdWZXJ0ZXgsIG9yaWdpbmFsVmVydGV4U291cmNlLCAiVmVydGV4IHNvdXJjZSBzaG91bGQgaGF2
ZSBjaGFuZ2VkLiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRpbmcg
ZnJhZ21lbnQgc2hhZGVyIHNvdXJjZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdl
bnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3Jh
bS5TaGFkZXJUeXBlLkZyYWdtZW50LCAiLy8gTU9ESUZJRUQgRlJBR01FTlRcblxuIiArIG9yaWdp
bmFsRnJhZ21lbnRTb3VyY2Uuc291cmNlKTsKLQotICAgICAgICAgICAgbGV0IFt2ZXJ0ZXhTb3Vy
Y2VBZnRlclVwZGF0aW5nRnJhZ21lbnQsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdt
ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5y
ZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJv
Z3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHZlcnRleFNvdXJjZUFmdGVyVXBkYXRpbmdG
cmFnbWVudCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0aW5nRnJhZ21lbnQsICJWZXJ0ZXggYW5k
IEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4iKTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFsKGZyYWdtZW50U291cmNlQWZ0
ZXJVcGRhdGluZ0ZyYWdtZW50LCBvcmlnaW5hbEZyYWdtZW50U291cmNlLCAiRnJhZ21lbnQgc291
cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Lk11bHRpcGxlUGlwZWxpbmVzIiwKLSAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIG9uZSBwaXBlbGluZSB3b24ndCBhZmZlY3Qg
YW55IG90aGVyIHBpcGVsaW5lcyBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIG1vZHVsZS4iLAotICAg
ICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW0xID0gYXdh
aXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwotICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW0y
ID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwotCi0gICAgICAgICAgICBsZXQgW29yaWdp
bmFsVmVydGV4U291cmNlMSwgb3JpZ2luYWxWZXJ0ZXhTb3VyY2UyXSA9IGF3YWl0IFByb21pc2Uu
YWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNo
YWRlclByb2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0
ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2Uoc2hh
ZGVyUHJvZ3JhbTIuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRl
eCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hh
bGxvd0VxdWFsKG9yaWdpbmFsVmVydGV4U291cmNlMSwgb3JpZ2luYWxWZXJ0ZXhTb3VyY2UyLCAi
Qm90aCBwaXBlbGluZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc291cmNlLiIpOwotCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRpbmcgcGlwZWxpbmUgMSB2ZXJ0ZXggc291cmNl
Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCBDYW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVy
UHJvZ3JhbTEuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwg
Ii8vIE1PRElGSUVEIFZFUlRFWFxuXG4iICsgb3JpZ2luYWxWZXJ0ZXhTb3VyY2UxLnNvdXJjZSk7
Ci0KLSAgICAgICAgICAgIGxldCBbbmV3VmVydGV4U291cmNlMSwgbmV3VmVydGV4U291cmNlMl0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVz
dFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0
U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0yLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0u
U2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG5ld1Zl
cnRleFNvdXJjZTEsICJTb3VyY2Ugb2YgcGlwZWxpbmUgMSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIp
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwobmV3VmVy
dGV4U291cmNlMSwgbmV3VmVydGV4U291cmNlMiwgIkJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZl
IGRpZmZlcmVudCBzb3VyY2VzLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotPHA+V2ViR1BVIHRlc3RzIGZvciBDYW52YXMudXBkYXRlU2hhZGVy
IGNvbW1hbmQgd2hlbiB0aGUgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzIG9mIGEgcmVuZGVy
IHBpcGVsaW5lIHNoYXJlIHRoZSBzYW1lIG1vZHVsZS48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJn
cHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdw
dS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MwZTg2NGE0M2I3MmIxN2Mz
MzVhNjU4MjY2YmZjOTA3NWU5NWIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdl
YmdwdS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy13ZWJncHUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVSIpOwotCi0gICAgZnVu
Y3Rpb24gdGVzdCh7bmFtZSwgcHJvZ3JhbVR5cGUsIHNoYWRlclR5cGUsIHNvdXJjZSwgc2hvdWxk
VGhyb3d9KSB7Ci0gICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5hbWUs
Ci0gICAgICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgICAgIGxldCBzaGFkZXJQ
cm9ncmFtID0gSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JUeXBlKHByb2dy
YW1UeXBlKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNoYWRlclByb2dyYW0pCi0gICAgICAgICAg
ICAgICAgICAgIHRocm93ICJNaXNzaW5nIHNoYWRlciBwcm9ncmFtIjsKLQotICAgICAgICAgICAg
ICAgIGxldCBvcmlnaW5hbFNvdXJjZSA9IGF3YWl0IENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJT
b3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBzaGFkZXJUeXBlKTsKLQotICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRUaHJvdykgewotICAgICAgICAgICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhd2FpdCBDYW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVu
dGlmaWVyLCBzaGFkZXJUeXBlLCBzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdl
bnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSwgc291
cmNlKTsKLQotICAgICAgICAgICAgICAgIGxldCBuZXdTb3VyY2UgPSBhd2FpdCBDYW52YXNBZ2Vu
dC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlw
ZSk7Ci0KLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVh
bChvcmlnaW5hbFNvdXJjZSwgbmV3U291cmNlLCAiU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQu
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHRlc3QoewotICAg
ICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuQ29tcHV0ZS5WYWxpZCIsCi0g
ICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGUs
Ci0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRl
LAotICAgICAgICBzb3VyY2U6IGAvLyBDSEFOR0VEIENPTVBVVEUKLVtudW10aHJlYWRzKDIsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDog
cmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0g
ICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICog
Mi4wOwotfQotYCwKLSAgICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFz
LnVwZGF0ZVNoYWRlci5XZWJHUFUuQ29tcHV0ZS5JbnZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5
cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZSwKLSAgICAgICAgc2hhZGVy
VHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLkNvbXB1dGUsCi0gICAgICAgIHNvdXJj
ZTogIklOVkFMSUQiLAotICAgICAgICBzaG91bGRUaHJvdzogdHJ1ZSwKLSAgICB9KTsKLQotICAg
IHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4
LlZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5
cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5
cGUuVmVydGV4LAotICAgICAgICBzb3VyY2U6IGAvLyBDSEFOR0VEIFZFUlRFWAotdmVydGV4IGZs
b2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBp
IDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19
Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYCwKLSAg
ICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5X
ZWJHUFUuVmVydGV4LkludmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJv
Z3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgsCi0gICAgICAgIHNvdXJjZTogIklOVkFMSUQiLAotICAg
ICAgICBzaG91bGRUaHJvdzogdHJ1ZSwKLSAgICB9KTsKLQotICAgIHRlc3QoewotICAgICAgICBu
YW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuRnJhZ21lbnQuVmFsaWQiLAotICAgICAg
ICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIsCi0gICAg
ICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCwKLSAg
ICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBGUkFHTUVOVAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRl
KDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50
IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYCwKLSAgICB9KTsKLQotICAg
IHRlc3QoewotICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuRnJhZ21l
bnQuSW52YWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dy
YW1UeXBlLlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFk
ZXJUeXBlLkZyYWdtZW50LAotICAgICAgICBzb3VyY2U6ICJJTlZBTElEIiwKLSAgICAgICAgc2hv
dWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+
V2ViR1BVIHRlc3RzIGZvciBDYW52YXMudXBkYXRlU2hhZGVyIGNvbW1hbmQuPC9wPgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGMzYzY5YmExODBlNTJkMTFlODgyMGE0N2RjMjk5ZjU3ZmQxYTBlMTAuLjhmMWRhNWFmNGZm
MmYyYmQ3N2NiNTY2OGFjYTc1NmI3ZWE4YjE1ODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2NjMsMTYgKzE2NjMsNiBAQCBodHRwL3dwdC9jcmVk
ZW50aWFsLW1hbmFnZW1lbnQvIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi8gWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3JlZGVudGlhbC1tYW5hZ2VtZW50LyBb
IFNraXAgXQogCi0jIFdlYkdQVQotd2ViZ3B1IFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL2Ny
ZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlcXVl
c3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1
ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3Jl
c29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3NoYWRl
clByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBdCi0KICMg
V2ViR0wyCiB3ZWJraXQub3JnL2IvMTY2NTM2IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXRyYW5z
Zm9ybWVkLXZhcnlpbmctbmFtZS1jcmFzaC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTY2
NTM2IGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1taXgtd2l0aC1ib29sLmh0bWwgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTg0ZTE2ZDJh
ZDQyYWQzNTA3ZTAyMmEyYWEyY2E5NGYyOGZiY2VhYy4uMTZiYWFiYjJjZTQxNTM4MGVmODhhYmVk
Y2NhNWM1NGFkZDY5Y2ZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTU2LDE0ICs1Niw2IEBAIHdlYmtpdC5vcmcvYi8yMDAzMDggZmFzdC9ldmVudHMv
dG91Y2gvaW9zL2NvbnRlbnQtb2JzZXJ2YXRpb24vbm9uLXZpc2libGUtY29udGVuCiAKIG1lZGlh
L3ZpZGVvLXN1cHBvcnRzLWZ1bGxzY3JlZW4uaHRtbCBbIFNraXAgXQogCi1pbnNwZWN0b3IvY2Fu
dmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFz
L3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFz
L3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9y
L2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBd
Ci0KICMgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkCiBtZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvCiAKQEAgLTM0ODcsNCArMzQ3OSw0IEBAIGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8td2VibS1zdGFsbC5odG1sIFsgU2tpcCBdCiAKICMgd2Via2l0Lm9yZy9iLzIyMzM4NSBU
d28gaW1wb3J0ZWQgd2VicnRjIHRlc3RzIGFyZSBmbGFrZXkgdGV4dCBmYWlsaW5nIG9uIFJlbGVh
c2UgZm9yIEJpZ1N1cisgYW5kIGlPUyAxNAogWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkSWNlQ2FuZGlkYXRlLWNv
bm5lY3Rpb25TZXR1cC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsgUmVsZWFzZSBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0R0bHNUcmFuc3BvcnQtc3RhdGUuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorWyBSZWxlYXNl
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDRHRsc1RyYW5zcG9y
dC1zdGF0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNjQzOTFmYjcxMzYxNDQ4YmI4YzA0ZjQxZjZl
OGVjNDc2ZDI4YzM4Li4wMDJhNDcxMGY1MmJlY2I1MmU3NDJjYTNhZDVjYThlMzA2YTg5NjdlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00
NywxNSArNDcsNiBAQCBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpIFsgU2tpcCBdCiBjc3MtdHlw
ZWRvbSBbIFNraXAgXQogY3NzLWRhcmstbW9kZSBbIFNraXAgXQogCi13ZWJncHUgWyBTa2lwIF0K
LWluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0K
LWluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tp
cCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50
Lmh0bWwgWyBTa2lwIF0KLQogIyBNZWRpYSBTdHJlYW0gQVBJIHRlc3RpbmcgaXMgbm90IHN1cHBv
cnRlZCBmb3IgV0sxIHlldC4KIGZhc3QvbWVkaWFzdHJlYW0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMKQEAgLTEzODMsNCArMTM3NCw0IEBAIHdl
YmtpdC5vcmcvYi8yMjc3NjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2lu
dGVyYWN0aW9uL2ZvY3VzL3RoZS1hCiB3ZWJraXQub3JnL2IvMjI4NTYxIGh0dHAvdGVzdHMvbWVk
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21hY29zLWZ1bGxzY3JlZW4tbWVkaWEtY29udHJvbHMv
bWFjb3MtZnVsbHNjcmVlbi1tZWRpYS1jb250cm9scy1saXZlLWJyb2FkY2FzdC5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KIAogIyB3ZWJraXQub3JnL2IvMjI4MjAwIEFkanVzdGluZyB0ZXN0IGV4cGVj
dGF0aW9ucyBmb3IgTW9udGVyZXkgb24gT3BlbiBTb3VyY2UgPHJkYXI6Ly84MDM0NTA0OD46Ci1b
IE1vbnRlcmV5IF0gd2VicnRjL2gyNjQtaGlnaC5odG1sIFsgRmFpbHVyZSBdClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorWyBNb250ZXJleSBdIHdlYnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZh
aWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDNkODY2ZGU5MTJjMzBiZTM4MTdhNzY0NmNiMzYyNTlhZmMwYTk4ZjAuLjA5MWE3YTI5
ZjU0ZWZiYzYwYWI3YWQzOTkxNjkyNTZiNDViNzU0ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk3NSwyMSArOTc1LDEzIEBAIHdlYmtp
dC5vcmcvYi8xODc4MjggWyBSZWxlYXNlIF0gZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZmxleC1jb250
ZW50LXNpemVkLWNvbHVtbnMtCiAKIHdlYmtpdC5vcmcvYi8xOTg2NjMgaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy10aGVuLW5hdmlnYXRlLXNhbWUtc2l0
ZS1zaG91bGQtaGF2ZS1hY2Nlc3MuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcv
Yi8xOTg5MjEgd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMTk5NjUxIFsgTW9qYXZlIERlYnVnIF0g
d2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwgWyBTbG93IF0KLQogd2Via2l0Lm9y
Zy9iLzE5OTA4OSBbIERlYnVnIF0gcGx1Z2lucy93aW5kb3ctb3Blbi5odG1sIFsgU2tpcCBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzU2NTA2MDYzPiBMYXlvdXQgVGVzdCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1pY2VDb25uZWN0aW9uU3Rh
dGUuaHR0cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgKDIwMzI1NikKIHdlYmtpdC5vcmcvYi8y
MDMyNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNTMwMSBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFk
ZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA1
ODA4IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3VuaWNvZGUtYmlkaS1vdGhlci1uZXV0cmFscy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5ODk0MiB3ZWJncHUvdmVydGV4
LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIwNjg2NCBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1l
b3V0Lmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS82MDky
OTIzOT4gWyBtYWNPUyB3azIgXSBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5k
YXJ5Lmh0bWwgaXMgYSBmbGFreSB0aW1lb3V0CkBAIC05OTksOTQgKzk5MSw1MCBAQCB3ZWJraXQu
b3JnL2IvMjA2NzA4IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFt
ZS5odG1sIFsgUGFzcyBGYQogCiB3ZWJraXQub3JnL2IvMjA2OTYxIFsgTW9qYXZlIF0gbWVkaWEv
bWVkaWEtZnJhZ21lbnRzL1RDMDAzNS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzIwNzA3OCB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgQ3Jhc2ggXQotCi13ZWJraXQub3JnL2IvMjA3MTE3IHdlYmdwdS93
aGxzbC9uZXN0ZWQtbG9vcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0
Lm9yZy9iLzIwNzEyNyB3ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNjkwMyBpbnNwZWN0b3IvaGVhcC9nZXRS
ZW1vdGVPYmplY3QuaHRtbCBbIFBhc3MgQ3Jhc2ggRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8y
MDcxNDEgWyBEZWJ1ZyBdIGluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtYml0bWFwcmVu
ZGVyZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDcxNjYgaHR0cC93
cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFi
bGUtZ3B1cHJvY2Vzcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzE5
OSB3ZWJncHUvd2hsc2wvbG9vcHMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdl
YmtpdC5vcmcvYi8yMDcyMDAgd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcyMDIgd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQot
CiB3ZWJraXQub3JnL2IvMjA2NzE4IGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQt
cmVtb3ZlLXdlYmdsMi5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8yMDcyMDkg
aW5zcGVjdG9yL2hlYXAvZ2V0UHJldmlldy5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQog
Ci13ZWJraXQub3JnL2IvMjA3MjIyIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVz
LTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcyNjcg
d2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDcyNjkgWyBEZWJ1ZyBdIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VydmVyLWNsb3NlLmh0bWwgWyBQYXNzIENyYXNo
IF0KIAogd2Via2l0Lm9yZy9iLzE4MzY4NCBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9ucHJvZ3Jlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcyOTQg
d2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KLQogd2Via2l0Lm9yZy9iLzIwNzMwMyBsb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1z
aXplLWlmcmFtZS5odG1sIFsgUGFzcyBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8yMDc0NjAgd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTcuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDc0NjUg
WyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzQ2NiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDc0NzYgd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3Bl
cnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdl
YmtpdC5vcmcvYi8yMDc1MDggd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDc1OTkgd2ViZ3B1L3dobHNsL2Rv
LXdoaWxlLWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcv
Yi8yMDc2MzIgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc3RpY2t5L3N0aWNreS1kdXJpbmctcnVi
YmVyYmFuZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIw
NzYzMSB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9maXhlZC9maXhlZC1kdXJpbmctcnViYmVyYmFu
ZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzYzNSBm
YXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdIAogCi13ZWJraXQub3JnL2IvMjA3NjM2IHdlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtYmlhcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0
Lm9yZy9iLzIwNzYzOCB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDY4NTIgaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFk
ZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMjA3NzAwIHdlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDc3MjggWyBSZWxl
YXNlIF0gYWNjZXNzaWJpbGl0eS9wcmVzcy10YXJnZXRzLWNlbnRlci1wb2ludC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzc3OSB3ZWJncHUvd2hsc2wvZGVyZWZlcmVu
Y2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KLQogd2Via2l0Lm9yZy9iLzIwNzc5NiBbIFJlbGVhc2UgXSBmYXN0L2JveC1zaGFkb3cvaGlk
cGktYm94LXNoYWRvdy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9y
Zy9iLzIwNzc5OCB3ZWJydGMvY29ubmVjdGlvbi1zdGF0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzIwNzgzOSB3ZWJncHUvd2hsc2wvbG9vcHMtYnJlYWsuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDc4NDQgc3RvcmFnZS9pbmRl
eGVkZGIvZGV0YWNoZWQtaWZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3Jn
L2IvMjA3ODY0IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3OTM4IGh0dHAvd3B0L2NyeXB0
by9kZXJpdmUtaG1hYy1rZXktY3Jhc2guYW55Lmh0bWwgWyBQYXNzIENyYXNoIF0KIAogd2Via2l0
Lm9yZy9iLzIwNzk2MiBhY2Nlc3NpYmlsaXR5L21hYy9hcmlhLW1lbnUtaXRlbS1zZWxlY3RlZC1u
b3RpZmljYXRpb24uaHRtbCBbIFNsb3cgXQogCi13ZWJraXQub3JnL2IvMjA4MDA1IHdlYmdwdS93
aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotCiB3ZWJraXQub3JnL2IvMjA4MDE0IFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL25vLXN1YnByb3RvY29sLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9y
Zy9iLzIwODA2MiBodHRwL3dwdC9mZXRjaC9kaXNhYmxlLXNwZWN1bGF0aXZlLWZvci1yZWxvYWQu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDgyMjIgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24t
aWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQu
b3JnL2IvMjA4MzQwIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDgzOTAgWyBEZWJ1ZyBdIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9kZWxheS1yZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMjA4Mzk2IGh0dHAvdGVzdHMvbWlzYy9vYmplY3QtZW1iZWRkaW5nLXN2Zy1kZWxh
eWVkLXNpemUtbmVnb3RpYXRpb24tMi5odG0gWyBQYXNzIEZhaWx1cmUgXQpAQCAtMTA5OSw4ICsx
MDQ3LDYgQEAgd2Via2l0Lm9yZy9iLzIwODg4OSBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFu
aW1hdGVkLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT24KIAogd2Via2l0Lm9yZy9iLzIwOTAwNiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0x
L3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGltaW5nLzA4NS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTAyNCBbIERlYnVnIF0gd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1jb21wYXJlLmh0bWwgWyBQYXNzIENyYXNoIF0KLQogd2Via2l0Lm9yZy9iLzIwOTA3NyBzdmcv
Y3VzdG9tL29iamVjdC1zaXppbmctZXhwbGljaXQtd2lkdGgueGh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMjA5MDUyIGZhc3Qvc2Nyb2xsaW5nL21hYy9hYnNvbHV0ZS1pbi1v
dmVyZmxvdy1zY3JvbGwtZHluYW1pYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAg
LTExOTIsOSArMTEzOCw2IEBAIHdlYmtpdC5vcmcvYi82ODI3OCBodHRwL3Rlc3RzL2hpc3Rvcnkv
YmFjay13aXRoLWZyYWdtZW50LWNoYW5nZS5weSBbIFBhc3MgRmFpbHVyCiAjIDxyZGFyOi8vcHJv
YmxlbS8zNzMzMDM3Nz4gQVNhbiB0ZXN0cyBleGl0aW5nIGVhcmx5IGR1ZSB0byB0aW1lb3V0cwog
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkv
ZGVyaXZlX2JpdHNfa2V5cyBbIFNraXAgXQogCi0jIDxyZGFyOi8vcHJvYmxlbS82MDEwNTkyNz4g
WyBNYWMgd2syIFJlbGVhc2UgXSB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRt
bCBpcyBmbGFreSBmYWlsaW5nCi1bIFJlbGVhc2UgXSB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KICMgPHJkYXI6Ly9wcm9ibGVtLzYwNTA3
NTI2PiBSRUdSRVNTSU9OIChyMjU4MTI0LXIyNTgyMzApIFsgTWFjIHdrMiBdIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMvYmxvY2tlZC13ZWJzb2NrZXQtY3Jh
c2guaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
Y29udGVudGV4dGVuc2lvbnMvYmxvY2tlZC13ZWJzb2NrZXQtY3Jhc2guaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCkBAIC0xMjgyLDggKzEyMjUsNiBAQCB3ZWJraXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhbGlkYXRpb24tYmFjay1uYXZpZwogCiB3
ZWJraXQub3JnL2IvMjE1NTgxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRzLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjE1NjA2IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjE1NjExIFsgRGVidWcg
XSBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVyZmxvdy1vdmVybGF5LXNjcm9sbGJh
ci1ob3ZlcmVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAjIHJkYXI6Ly82NTI2OTU4OSAoWyBt
YWNPUyBhbmQgaU9TIF0gbWVkaWEvdnA5Lmh0bWwgaXMgZmFpbGluZyBjb25zaXN0ZW50bHkuKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
CmluZGV4IGYxY2YyNGY0ZjFhYjNkMDY0MGIzMmUyMWE0ZWM1MDlkYWQyMmJjODEuLmRmOTAxMDkw
NGQ1NzdlODVhMDc2NjY3YTkzN2FkNzdlNmQ4ZjU5NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIG5h
dmlnYXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5h
dmlnYXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkg
aXMgT0sKLW5hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5pc0xvZ2dlZEluKCkgaXMgT0sK
IG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sK
QEAgLTQzLDcgKzQyLDYgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0b3IuY29v
a2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZpZ2F0b3Iu
Z2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2aWdhdG9y
LmlzTG9nZ2VkSW4oKSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmln
YXRvci5sYW5ndWFnZSBpcyBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA3MmExYjk3Y2U4NzM1MmJjZThlMDYwNTEyMGUwNTU0N2EwNzQ4MTg3Li4xOTRj
MTYxNjk5ZGJiMTk5MzgxNzgwNGY0NTUzNmYzYTE5MDA2MWM3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU0NSwzOCArMTU0NSw2IEBAIHdlYmtpdC5v
cmcvYi8yMTIxNzIgWyBDYXRhbGluYSBdIGZhc3QvdGV4dC9mb250LWNvbGxlY3Rpb24uaHRtbCBb
IEltYWdlT25seUZhaWx1CiAKIHdlYmtpdC5vcmcvYi8yMDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1l
bGVtZW50L3ZpZGVvX3RpbWV1cGRhdGVfb25fc2Vlay5odG1sIFsgVGltZW91dCBQYXNzIF0KIAot
IyByZGFyOi8vNTU0MDU4NTEgKFsgbWFjT1MgXSBMYXlvdXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5n
bGUtc3RyaXAuaHRtbCBhcmUgZmxha3kgZmFpbHVyZXMuICgyMDE4MjcpKQotd2Via2l0Lm9yZy9i
LzIwMTgyNyB3ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9ibGVuZC10cmlhbmds
ZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4
Mjcgd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAxODI3IHdlYmdwdS9kZXB0aC1lbmFibGVk
LXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIwMTgyNyB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvdGV4dHVyZS10cmlhbmds
ZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4
Mjcgd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyByZGFyOi8vNTUyMDQ3NzUgKFJFR1JFU1NJT04gKE1h
Y09TKTogTWFueSB3ZWJncHUvd2hsc2wvKiB0ZXN0cyBhcmUgZmxha3kgZmFpbHVyZXMpCi13ZWJn
cHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1y
dmFsdWUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTEuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMTQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTcuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdIAotd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA1NTI0IHdl
YmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
LQotd2Via2l0Lm9yZy9iLzIwNTUyNSB3ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiAjIFRoZSB0ZXN0IHJ1bm5lciBpcyBmYWlsaW5n
IGluIGFuIHVucmVsYXRlZCwgdW5leHBsYWluZWQsIGludmlzaWJsZSB0byB0aGUgaHVtYW4gZXll
LCAyIHBpeGVscyBkaWZmZXJlbmNlLgogd2Via2l0Lm9yZy9iLzIwMTQwMSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS12aWRlby1pcy12aXNp
YmxlLmh0bWwgWyBTa2lwIF0KIApAQCAtMTYxMiwxMCArMTU4MCw2IEBAIHdlYmtpdC5vcmcvYi8y
MDIwNjQgd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRt
bCBbIFBhc3MKIAogd2Via2l0Lm9yZy9iLzIwNTc1NiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIv
Z2xzbDMvbm8tYXR0cmlidXRlLXZlcnRleC1zaGFkZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMDU4NjIgd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWsuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1ODY1IHdlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1ODY3IHdlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5n
bGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA0MzEy
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9zdHJ1Y3QtZG9tLTA2
LWItbWFudWFsLnN2ZyBbIEZhaWx1cmUgUGFzcyBdCiAKICMgTG9jYWxlLXNwZWNpZmljIHNoYXBp
bmcgaXMgb25seSBlbmFibGVkIG9uIGNlcnRhaW4gT1Nlcy4KQEAgLTE2OTYsOCArMTY2MCw2IEBA
IHdlYmtpdC5vcmcvYi8yMDg1OTIgc3ZnL2N1c3RvbS9vYmplY3Qtc2l6aW5nLWV4cGxpY2l0LWhl
aWdodC54aHRtbCBbIFBhc3MgRmFpbHVyCiAKIHdlYmtpdC5vcmcvYi8yMDkyNTcgc3ZnL2FzLW9i
amVjdC9vYmplY3QtYm94LXNpemluZy1uby13aWR0aC1oZWlnaHQuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDkwNTYgd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1s
IFsgUGFzcyBDcmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8yMDkwNzIgWyBEZWJ1ZyBdIGh0dHAvdGVz
dHMvY3NzL3NoYXJlZC1zdHlsZXNoZWV0LW11dGF0aW9uLXByZWNvbnN0cnVjdC5odG1sIFsgUGFz
cyBDcmFzaCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNzE1MCBwbGF0Zm9ybS9tYWMvd2Vi
cnRjL2NhcHR1cmVDYW52YXMtd2VicnRjLXNvZnR3YXJlLWVuY29kZXIuaHRtbCBbIFBhc3MgRmFp
bHVyZSBUaW1lb3V0IF0KQEAgLTE3NzEsOCArMTczMyw2IEBAIHdlYmtpdC5vcmcvYi8yMTUxMTAg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1h
dGlvCiAKIHdlYmtpdC5vcmcvYi8yMTUxNzcgWyBSZWxlYXNlIF0gZWRpdGluZy9zZWxlY3Rpb24v
bmF2aWdhdGlvbi1jbGVhcnMtZWRpdG9yLXN0YXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjE1MjQ3IHdlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIxNTI3MSBbIERl
YnVnIF0gc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL25ldy1kYXRhYmFzZS1hZnRlci11c2VyLWRl
bGV0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIxNTQ1MCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0
eXBlLXBsYXktbmVnYXRpdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xODY5LDExICsxODI5
LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtY2hhbmdldHlwZS1wbGF5LXdpdGhvdXQKICMgPHJkYXI6Ly9wcm9ibGVtLzYyMzE3NzIz
PiBbIEd1YXJkLU1hbGxvYyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3Rl
LXBsYXliYWNrL3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0aWFsLWNhbGxiYWNrLmh0bWwgaXMgZmxh
a3kgY3Jhc2hpbmcgd2l0aCAnV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3RlSGFzQXZh
aWxhYmlsaXR5Q2FsbGJhY2tzQ2hhbmdlZCgpJyBhbGVydC4KIFsgTW9qYXZlIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxheWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5
LWluaXRpYWwtY2FsbGJhY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi0jIDxyZGFyOi8vcHJvYmxl
bS81Njk2MTQ5OT4gTWFueSB3ZWJHUFUgdGVzdCBmYWlsIG9uIHByb2R1Y3Rpb24gYW5kIGNyYXNo
IG9uIERlYnVnCi1bIEJpZ1N1cisgXSBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3Vy
Y2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLVsgQmlnU3VyKyBdIGluc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tpcCBdCi1bIEJp
Z1N1cisgXSBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUuaHRtbCBbIFNraXAg
XQotCiAjIFdlYlAgaW1hZ2VzCiBbIEJpZ1N1cisgXSBmYXN0L2ltYWdlcy93ZWJwLWFzLWltYWdl
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogWyBCaWdTdXIrIF0gZmFzdC9pbWFnZXMv
YW5pbWF0ZWQtd2VicC1hcy1pbWFnZS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZjZWI2OGZmODgxZjJlYWYyNzkxYTQwM2FhY2Vk
ZjY1NDk4YTFjZDUuLmY0YzIxYjA3Nzk3NGNiZDBlNWRkMTdkZGZiMDliMDRiYzliN2E2ZjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00MTI5LDE2ICs0
MTI5LDYgQEAgd2Via2l0Lm9yZy9iLzE5MDQ3MiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LWVsZW1lbnRzLWh0bWxjb2xsZWN0aW9uLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTkwNTIwIGVk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWFjcm9zcy1zaGFkb3ctYm91bmRhcmllcy13aXRo
LXN0eWxlLTIuaHRtbCBbIENyYXNoIEZhaWx1cmUgXQogCi0jIFdlYkdQVSBpcyBub3Qgc3VwcG9y
dGVkIG9uIFdpbmRvd3MKLXdlYmdwdSBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUt
Y29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xp
ZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNo
YWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZl
Q29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9n
cmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQu
b3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGlu
Zy1pbWFnZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvYmxvY2sv
YmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZXMyLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xOTExOTQgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMt
cmVsZWFzZS5odG1sIFsgRmFpbHVyZSBdCkBAIC00NjY3LDQgKzQ2NTcsNCBAQCB3ZWJhbmltYXRp
b25zL2FjY2VsZXJhdGVkLXRyYW5zZm9ybS1hbmltYXRpb24tdG8tc2NhbGUtemVyby13aXRoLWlt
cGxpY2l0LWZyb20tawogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwgWyBQYXNzIENyYXNo
IF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFnLWFuZC1kcm9wLmh0bWwgWyBQYXNzIENy
YXNoIF0KIGZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1sMTBuLWlucHV0Lmh0bWwgWyBQYXNzIENy
YXNoIF0KLWZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1zcGluYnV0dG9uLWluLW11bHRpLWNvbHVt
bi5odG1sIFsgUGFzcyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZmFzdC9m
b3Jtcy9udW1iZXIvbnVtYmVyLXNwaW5idXR0b24taW4tbXVsdGktY29sdW1uLmh0bWwgWyBQYXNz
IENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzA2MDFkMmRjOTQ4NGJjNjJlNzg3YTBlNmQx
MTY2MTFiMzgwOWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBDcmVhdGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJp
bmRHcm91cC4KLVBBU1MgQ3JlYXRlIGFuZCB1c2UgbWFueSBHUFVCaW5kR3JvdXBzIGluIGEgc2lu
Z2xlIGNvbXB1dGUgcGFzcy4KLVBBU1MgQ3JlYXRlIGFuZCBhY2Nlc3MgYSB1bmlmb3JtLWJ1ZmZl
ciBpbiBhIEdQVUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRlIGFuZCBhY2Nlc3MgYSBzYW1wbGVkIHRl
eHR1cmUgaW4gYSBHUFVCaW5kR3JvdXAuCi1QQVNTIENyZWF0ZSBhbmQgdXNlIG11bHRpcGxlIEdQ
VUJpbmRHcm91cHMgaW4gYSBzaW5nbGUgZGlzcGF0Y2guCi1QQVNTIEJpbmQgYSBzaW5nbGUgR1BV
QnVmZmVyIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4gZGlmZmVyZW50IEdQVUJpbmRHcm91cHMK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTg3NzEwMjUxMTAyZGRlN2Q0YTk2YzljMjZjZTNkNjgwNGFlMTQ2ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmluZC1ncm91cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0OCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+Q3JlYXRlIGEgYmFzaWMgR1BV
QmluZEdyb3VwLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0KLWNvbnN0IGJhc2lj
QnVmZmVyU2hhZGVyID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29t
cHV0ZV9tYWluKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCkpCi17Ci0gICAgKyti
dWZmZXJbMF07Ci19Ci1gOwotCi1sZXQgYmFzaWNQaXBlbGluZTsKLQotdGVzdHNbIkNyZWF0ZSBh
bmQgdXNlIGEgYmFzaWMgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBj
b25zdCBidWZmZXJMYXlvdXRCaW5kaW5nID0gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAg
ICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICB0eXBlOiAic3Rv
cmFnZS1idWZmZXIiCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeyBiaW5kaW5nczogW2J1ZmZlckxheW91dEJpbmRpbmdd
IH0pOwotCi0gICAgY29uc3QgYmFzaWNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6
ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRCB9KTsKLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0geyBidWZmZXI6IGJhc2ljQnVmZmVy
LCBzaXplOiA0IH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHsgYmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmcgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXAoeyBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFti
aW5kR3JvdXBCaW5kaW5nXSB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91
dF0gfSk7Ci0KLSAgICBjb25zdCBiYXNpY1NoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoeyBjb2RlOiBiYXNpY0J1ZmZlclNoYWRlciB9KTsKLSAgICBiYXNpY1BpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxp
bmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBi
YXNpY1NoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4i
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
YmFzaWNQaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIu
ZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBi
YXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgYmFzaWNCdWZmZXIudW5tYXAoKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDEsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdy
aXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgdXNlIG1h
bnkgR1BVQmluZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21wdXRlIHBhc3MuIl0gPSBhc3luYyBkZXZp
Y2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlckxheW91dEJpbmRpbmcgPSB7Ci0gICAgICAgIGJpbmRp
bmc6IDAsCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAg
ICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJpbmRpbmdzOiBbYnVmZmVy
TGF5b3V0QmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBiYXNpY0J1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7IGJ1ZmZl
cjogYmFzaWNCdWZmZXIsIHNpemU6IDQgfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
eyBiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZyB9OwotCi0gICAgY29uc3QgbnVt
R3JvdXBzID0gMTAwMDsKLSAgICBsZXQgYmluZEdyb3VwcyA9IG5ldyBBcnJheShudW1Hcm91cHMp
OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtR3JvdXBzOyArK2kpCi0gICAgICAgIGJpbmRH
cm91cHNbaV0gPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsgbGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBjb21tYW5k
RW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IHBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotCi0gICAgbGV0IGog
PSAwOwotICAgIGZvciAoOyBqIDwgbnVtR3JvdXBzOyArK2opIHsKLSAgICAgICAgcGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXBzW2pdKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZGlzcGF0Y2go
MSwgMSwgMSk7Ci0gICAgfQotCi0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmlj
ZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNv
bnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5
bmMoKSk7Ci0gICAgYmFzaWNCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dHNbMF0sIGosICJTdG9yYWdlIGJ1ZmZlciBhY2Nlc3NlZCBzdWNjZXNzZnVsbHkgdGhyb3VnaCBt
dWx0aXBsZSBiaW5kIGdyb3Vwcy4iKTsKLX07Ci0KLWNvbnN0IHVuaWZvcm1CdWZmZXJTaGFkZXIg
PSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oY29u
c3RhbnQgaW50W10gdW5pZm9ybXMgOiByZWdpc3RlcihiMCksIGRldmljZSBpbnRbXSBidWZmZXIg
OiByZWdpc3Rlcih1MSkpCi17Ci0gICAgYnVmZmVyWzBdICs9IHVuaWZvcm1zWzBdOwotfQotYDsK
LQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgdW5pZm9ybS1idWZmZXIgaW4gYSBHUFVCaW5k
R3JvdXAuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3
cml0ZUFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgSW50MzJBcnJheSh3cml0
ZUFycmF5QnVmZmVyKS5zZXQoWzQyXSk7Ci0gICAgdW5pZm9ybUJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0p
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAg
ICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAg
ICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRp
bmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAot
ICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwot
Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAg
IGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAg
ICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAg
IGJ1ZmZlcjogdW5pZm9ybUJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAg
ICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dCi0gICAgfSk7
Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotCi0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1C
dWZmZXJTaGFkZXIgfSk7Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0LAotICAgICAgICBj
b21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLAotICAgICAg
ICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsK
LSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3Mo
KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgcGFzc0VuY29k
ZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2go
MSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3Vs
dHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBzdG9yYWdlQnVmZmVyLm1hcFJlYWRBc3luYygpKTsK
LSAgICBzdG9yYWdlQnVmZmVyLnVubWFwKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBd
LCA0MiwgIlN0b3JhZ2UgYnVmZmVyIGJpbmRpbmcgd3JpdHRlbiB0byBzdWNjZXNzZnVsbHkuIik7
Ci19OwotCi1jb25zdCBzYW1wbGVkVGV4dHVyZVNoYWRlciA9IGAKLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihUZXh0dXJlMkQ8dWludD4gaW5wdXRUZXh0
dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIGlucHV0U2FtcGxlciA6IHJlZ2lzdGVyKHMxKSwg
ZGV2aWNlIHVpbnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1MikpCi17Ci0gICAgb3V0cHV0WzBdID0g
U2FtcGxlKGlucHV0VGV4dHVyZSwgaW5wdXRTYW1wbGVyLCBmbG9hdDIoMCwgMCkpOwotfQotYDsK
LQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgc2FtcGxlZCB0ZXh0dXJlIGluIGEgR1BVQmlu
ZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBbdGV4dHVyZURhdGFCdWZm
ZXIsIHRleHR1cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6
ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIH0pOwotICAgIG5ldyBVaW50MzJB
cnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpLnNldChbNDJdKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJl
KHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDogInJnYmE4dWlu
dCIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVV
c2FnZS5DT1BZX0RTVAotICAgIH0pOwotCi0gICAgY29uc3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0g
ICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVy
U3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiCi0gICAg
ICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5
OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInNhbXBsZXIiCi0g
ICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDIsCi0gICAgICAgICAgICB2aXNpYmls
aXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2Ut
YnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJpbmRHcm91cExheW91dCwKLSAg
ICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAg
cmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKQotICAgICAgICB9LCB7Ci0gICAg
ICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAgcmVzb3VyY2U6IGRldmljZS5jcmVhdGVT
YW1wbGVyKHt9KQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAyLAotICAgICAg
ICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IG91dHB1dEJ1ZmZlciwK
LSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dCi0gICAg
fSk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHsgY29kZTogc2FtcGxlZFRleHR1cmVTaGFkZXIgfSk7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAg
IGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAg
ICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoewotICAgICAgICBidWZm
ZXI6IHRleHR1cmVEYXRhQnVmZmVyLAotICAgICAgICByb3dQaXRjaDogNCwKLSAgICAgICAgaW1h
Z2VIZWlnaHQ6IDAKLSAgICB9LCB7IHRleHR1cmU6IHRleHR1cmUgfSwgdGV4dHVyZVNpemUpOwot
Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNz
KCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNo
KDEsIDEsIDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGRldmljZS5nZXRR
dWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJl
c3VsdHMgPSBuZXcgVWludDMyQXJyYXkoYXdhaXQgb3V0cHV0QnVmZmVyLm1hcFJlYWRBc3luYygp
KTsKLSAgICBvdXRwdXRCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNb
MF0sIDQyLCAiQ29ycmVjdCB2YWx1ZSBzYW1wbGVkIGZyb20gYSBib3VuZCAyRCB0ZXh0dXJlLiIp
OwotfTsKLQotY29uc3QgY29tYm9TaGFkZXIgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlX21haW4oCi0gICAgVGV4dHVyZTJEPHVpbnQ+IGlucHV0VGV4dHVy
ZSA6IHJlZ2lzdGVyKHQwLCBzcGFjZTApLCAKLSAgICBzYW1wbGVyIGlucHV0U2FtcGxlciA6IHJl
Z2lzdGVyKHMwLCBzcGFjZTEpLCAKLSAgICBjb25zdGFudCB1aW50W10gaW5wdXQgOiByZWdpc3Rl
cihiMCwgc3BhY2UyKSwgCi0gICAgZGV2aWNlIHVpbnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1MCwg
c3BhY2UzKSkKLXsKLSAgICBvdXRwdXRbMF0gPSBpbnB1dFswXSArIFNhbXBsZShpbnB1dFRleHR1
cmUsIGlucHV0U2FtcGxlciwgZmxvYXQyKDAsIDApKTsKLX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUg
YW5kIHVzZSBtdWx0aXBsZSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGRpc3BhdGNoLiJdID0g
YXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBbdGV4dHVyZURhdGFCdWZmZXIsIHRleHR1cmVB
cnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIH0pOwotICAgIG5ldyBVaW50MzJBcnJheSh0ZXh0dXJl
QXJyYXlCdWZmZXIpLnNldChbMTddKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAx
IH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAgICAg
c2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1hdDogInJnYmE4dWludCIsCi0gICAgICAg
IHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RT
VAotICAgIH0pOwotCi0gICAgY29uc3QgW2lucHV0QnVmZmVyLCBpbnB1dEFycmF5QnVmZmVyXSA9
IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVU5JRk9STSB9KTsKLSAgICBuZXcgVWludDMyQXJyYXkoaW5wdXRBcnJheUJ1ZmZlcikuc2V0
KFsyNV0pOwotICAgIGlucHV0QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgIGNvbnN0IGJnbDAg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0g
ICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVy
U3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUiCi0gICAg
ICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmdsMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0g
ICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAg
ICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmdsMiA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAg
ICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJT
dGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInVuaWZvcm0tYnVmZmVyIgotICAgICAg
ICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnbDMgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAg
ICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAg
IHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAgfV0KLSAgICB9KQotCi0gICAgY29uc3Qg
YmcwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmdsMCwKLSAg
ICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAg
cmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKQotICAgICAgICB9XQotICAgIH0p
OwotICAgIGNvbnN0IGJnMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlv
dXQ6IGJnbDEsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwK
LSAgICAgICAgICAgIHJlc291cmNlOiBkZXZpY2UuY3JlYXRlU2FtcGxlcih7fSkKLSAgICAgICAg
fV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAg
ICAgICAgbGF5b3V0OiBiZ2wyLAotICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJp
bmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZl
cjogaW5wdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQot
ICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnMyA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXAoewotICAgICAgICBsYXlvdXQ6IGJnbDMsCi0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAg
ICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAg
ICAgYnVmZmVyOiBvdXRwdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAg
ICAgICAgfQotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGNvbWJvU2hhZGVyIH0pOwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdy
b3VwTGF5b3V0czogW2JnbDAsIGJnbDEsIGJnbDIsIGJnbDNdIH0pOwotCi0gICAgY29uc3QgcGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgbGF5b3V0OiBw
aXBlbGluZUxheW91dCwKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1
bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICJjb21wdXRlX21haW4i
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRv
VGV4dHVyZSh7Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsCi0gICAgICAgIHJv
d1BpdGNoOiA0LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH0sIHsgdGV4dHVyZTogdGV4
dHVyZSB9LCB0ZXh0dXJlU2l6ZSk7Ci0KLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShw
aXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJnMCk7Ci0gICAgcGFz
c0VuY29kZXIuc2V0QmluZEdyb3VwKDEsIGJnMSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDIsIGJnMik7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDMsIGJnMyk7Ci0gICAg
cGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygp
OwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2go
KV0pOwotCi0gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBVaW50MzJBcnJheShhd2FpdCBvdXRwdXRC
dWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIG91dHB1dEJ1ZmZlci51bm1hcCgpOwotICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJDb3JyZWN0IHZhbHVlIHNhbXBsZWQgZnJvbSBh
IGJvdW5kIDJEIHRleHR1cmUuIik7Ci19OwotCi10ZXN0c1siQmluZCBhIHNpbmdsZSBHUFVCdWZm
ZXIgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBkaWZmZXJlbnQgR1BVQmluZEdyb3VwcyJdID0g
YXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBudW1JbnB1dHMgPSA0OwotICAgIGNvbnN0IFt1
bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBw
ZWQoeyBzaXplOiA0ICogbnVtSW5wdXRzLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9
KTsKLSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5QnVmZmVyKS5zZXQoWzEsIDIsIDMsIDM2
XSk7Ci0gICAgdW5pZm9ybUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
U1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRp
bmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6
IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAidW5pZm9ybS1idWZm
ZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2
aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0
b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgbGV0IGJpbmRHcm91cHMg
PSBuZXcgQXJyYXkobnVtSW5wdXRzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUlucHV0
czsgKytpKSB7Ci0gICAgICAgIGJpbmRHcm91cHNbaV0gPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
KHsKLSAgICAgICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICAgICAgYmlu
ZGluZ3M6IFt7Ci0gICAgICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgICAgICBy
ZXNvdXJjZTogewotICAgICAgICAgICAgICAgICAgICBidWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0g
ICAgICAgICAgICAgICAgICAgIG9mZnNldDogaSAqIG51bUlucHV0cywKLSAgICAgICAgICAgICAg
ICAgICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAgICAgIHJlc291cmNlOiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAgICAgICAgICAgICAgICAg
ICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dCi0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTog
dW5pZm9ybUJ1ZmZlclNoYWRlciB9KTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0g
ICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUs
Ci0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21w
dXRlUGFzcygpOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBm
b3IgKGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytpKSB7Ci0gICAgICAgIHBhc3NFbmNvZGVy
LnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXBzW2ldKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZGlz
cGF0Y2goMSwgMSwgMSk7Ci0gICAgfQotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXkoYXdhaXQgc3RvcmFnZUJ1ZmZlci5tYXBS
ZWFkQXN5bmMoKSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3Vj
Y2Vzc2Z1bGx5LiIpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRy
aWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtY29s
b3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC1jb2xvci10cmlhbmds
ZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0
cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZDYwYjhkNWI2ZDZlYzZj
OTRhYjM3ODBiMjBjZGZiNTMzYzI0YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0
cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90
aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5k
ZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJibGVuZC1jb2xv
ci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZh
cyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9h
dDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAg
ICAgcmVzdWx0ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICByZXN1bHQgPSBmbG9hdDQoLTEsIC0xLCAwLCAxKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXN1bHQgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlc3VsdCA9IGZsb2F0NCgxLCAt
MSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoMCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBk
ZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBz
aGFkZXJDb2RlIH0pOwotCi0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbewotICAgICAgICBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgYWxwaGFCbGVuZDogewotICAgICAgICAgICAgc3Jj
RmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAgICAgICAgICAgZHN0RmFjdG9yOiAiYmxlbmQtY29s
b3IiLAotICAgICAgICAgICAgb3BlcmF0aW9uOiAiYWRkIgotICAgICAgICB9LAotICAgICAgICBj
b2xvckJsZW5kOiB7Ci0gICAgICAgICAgICBzcmNGYWN0b3I6ICJibGVuZC1jb2xvciIsCi0gICAg
ICAgICAgICBkc3RGYWN0b3I6ICJibGVuZC1jb2xvciIsCi0gICAgICAgICAgICBvcGVyYXRpb246
ICJhZGQiCi0gICAgICAgIH0sCi0gICAgICAgIHdyaXRlTWFzazogR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICB9XTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFk
ZXJNb2R1bGUsIGRldmljZSwgY29sb3JTdGF0ZXMpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIg
PSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBw
YXNzRW5jb2Rlci5zZXRCbGVuZENvbG9yKHsgcjogMCwgZzogMSwgYjogMCwgYTogMSB9KTsKLSAg
ICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3Qg
cXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24o
KSB7Ci0gICAgZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3Ry
aXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTlj
NTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUt
c3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNl
IEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4u
PC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3
R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIwNmEwYTc1NmQ4Y2MwYmNlMTUzYTE5ZmY1MTJlNWNlM2M3MTNjMmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BV
IEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ildl
YkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlm
IHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHBvc2l0aW9uQXR0cmli
dXRlTnVtID0gMDsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsK
LSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBh
dHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgke3Bvc2l0aW9uQXR0cmlidXRlTnVtfSkpIHsKLSAgICBWZXJ0
ZXhPdXQgdk91dDsKLSAgICB2T3V0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgdk91dC5jb2xv
ciA9IGZsb2F0NCgwLCAwLjUsIDAsIDAuNSk7Ci0gICAgcmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xvcjsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLQotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3sKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6IHsg
ZHN0RmFjdG9yOiAib25lIiB9LAotICAgICAgICBjb2xvckJsZW5kOiB7IGRzdEZhY3RvcjogIm9u
ZSIgfQotICAgIH1dOwotCi0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gewotICAg
ICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0g
ICAgICAgICAgICBzdHJpZGU6IDQgKiA0LAotICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewot
ICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICAgICAgc2hhZGVy
TG9jYXRpb246IHBvc2l0aW9uQXR0cmlidXRlTnVtCi0gICAgICAgICAgICB9XQotICAgICAgICB9
XQotICAgIH07Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hh
ZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgdmVydGV4RGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAg
ICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLAotICAgICAgICAxLCAxLCAwLCAx
LAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9
IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXplOiB2ZXJ0ZXhEYXRhLmJ5dGVMZW5n
dGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4RGF0YS5idWZmZXIpOwot
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25z
dCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbih7IGRldmljZTogZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIiB9KTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnQgPSB7
Ci0gICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0
ZURlZmF1bHRWaWV3KCksCi0gICAgICAgIGxvYWRPcDogImNsZWFyIiwKLSAgICAgICAgc3RvcmVP
cDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAw
IH0KLSAgICB9OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHM6IFtjb2xvckF0dGFjaG1lbnRdIH0pOwot
ICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNv
bW1hbmRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdj
OTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBh
c3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52
YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJl
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGMxOWVlZTQ2ZGRlOTJiZTZh
OWNmZDUwNGIwY2E0MTc3Mjc4OGVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8t
dGV4dHVyZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVu
Y2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgc2hvd3MgYSBncmVlbiBtaXAg
Y2hhaW4gb24gYSByZWQgYmFja2dyb3VuZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI1MTIiIGhlaWdo
dD0iNTEyIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlbk1pcENoYWluT25SZWRCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMWJmNjQxN2VkZGFhOGU3OTZlMTc5NTlkNmQxMDczN2M1NjI5ZTcz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPkJsaXR0aW5nIFRleHR1cmUgVG8gVGV4dHVyZTwvdGl0bGU+Ci08bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkJsaXQgb3BlcmF0aW9ucyBwb3B1bGF0ZSBhIHRleHR1
cmUgY29ycmVjdGx5IChhbGwgbWlwIGxldmVscykuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9
ImJsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJlLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFz
cyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IHNob3dzIGEgZ3JlZW4gbWlwIGNoYWluIG9uIGEgcmVk
IGJhY2tncm91bmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52
YXM+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRl
dmljZSwgY2FudmFzMmQpIHsKLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lk
dGg6ICBjYW52YXMyZC53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBjYW52YXMyZC5oZWlnaHQsCi0g
ICAgICAgIGRlcHRoOiAgMgotICAgIH07Ci0KLSAgICAvLyBNaXBtYXAgY291bnQKLSAgICBsZXQg
bWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQp
OwotICAgIGxldCBtaXBMZXZlbENvdW50ID0gTWF0aC5jZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0
aW9uKSk7Ci0gICAgaWYgKG1pcExldmVsQ291bnQgPCAxKSBtaXBMZXZlbENvdW50ID0gMTsKLQot
ICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiB0ZXh0dXJlU2l6
ZSwKLSAgICAgICAgbWlwTGV2ZWxDb3VudDogbWlwTGV2ZWxDb3VudCwKLSAgICAgICAgc2FtcGxl
Q291bnQ6IDEsCi0gICAgICAgIGRpbWVuc2lvbjogIjJkIiwKLSAgICAgICAgZm9ybWF0OiAicmdi
YTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVU
ZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCAKLSAgICB9Owot
Ci0gICAgLy8gQ3JlYXRlIHRleHR1cmUgYW5kIGFsc28gYWRkIHRoZSBkZXNjcmlwdG9yCi0gICAg
Y29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsK
LSAgICB0ZXh0dXJlU2l6ZS5kZXB0aCA9IDE7Ci0gICAgdGV4dHVyZS5kZXNjcmlwdG9yID0gdGV4
dHVyZURlc2NyaXB0b3I7Ci0KLSAgICAvLyBUZXh0dXJlIGRhdGEgCi0gICAgY29uc3QgY29udGV4
dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBjb25zdCBpbWFnZURhdGEgPSBj
b250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWln
aHQpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0gewotICAgICAg
ICBzaXplOiBpbWFnZURhdGEuZGF0YS5sZW5ndGgsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURQotICAgIH07Ci0gICAgY29u
c3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQXJyYXlCdWZmZXIgPSBhd2FpdCB0
ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZVdyaXRl
QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVX
cml0ZUFycmF5LnNldChpbWFnZURhdGEuZGF0YSk7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5t
YXAoKTsKLQotICAgIGNvbnN0IGRhdGFDb3B5VmlldyA9IHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0
dXJlRGF0YUJ1ZmZlciwKLSAgICAgICAgb2Zmc2V0OiAwLAotICAgICAgICByb3dQaXRjaDogY2Fu
dmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhlaWdodDogY2FudmFzMmQud2lkdGggKiBj
YW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7
Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmUsCi0gICAgICAgIG1pcExldmVsOiAwLAotICAgICAg
ICBhcnJheUxheWVyOiAwLAotICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0g
ICAgfTsKLQotICAgIGNvbnN0IGJsaXRDb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOwotICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJl
KGRhdGFDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCB0ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtibGl0Q29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAg
IHJldHVybiB0ZXh0dXJlOwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAg
IGNvbnN0IGNhbnZhczJkICA9IGF3YWl0IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0KLSAg
ICAvLyB0ZXh0dXJlQSAobGF5ZXIgMCwgbWlwIDApOiBHcmVlbgotICAgIGNvbnRleHQyZC5maWxs
U3R5bGUgPSAncmdiKDAsIDI1NSwgMCknOwotICAgIGNvbnRleHQyZC5maWxsUmVjdCgwLCAwLCBj
YW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLSAgICBjb25zdCB0ZXh0dXJlQSA9IGF3
YWl0IGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFzMmQpOwotCi0gICAgLy8g
dGV4dHVyZUIgKGxheWVyIDAsIG1pcCAwKTogUmVkCi0gICAgY29udGV4dDJkLmZpbGxTdHlsZSA9
ICdyZ2IoMjU1LCAwLCAwKSc7Ci0gICAgY29udGV4dDJkLmZpbGxSZWN0KDAsIDAsIGNhbnZhczJk
LndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGNvbnN0IHRleHR1cmVCID0gYXdhaXQgbG9h
ZFRleHR1cmVGcm9tQ2FudmFzMmQoZGV2aWNlLCBjYW52YXMyZCk7Ci0KLSAgICAvLyBDbGVhbiBj
YW52YXMgdG8gYmx1ZQotICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDAsIDAsIDI1NSkn
OwotICAgIGNvbnRleHQyZC5maWxsUmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQu
aGVpZ2h0KTsKLQotICAgIC8vIFRlc3QgY29weVRleHR1cmVUb1RleHR1cmUKLQotICAgIGxldCBz
aXplID0gT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZUEuZGVzY3JpcHRvci5zaXplKTsKLSAgICBs
ZXQgYmxpdENvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0g
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0ZXh0dXJlQS5kZXNjcmlwdG9yLm1pcExldmVsQ291bnQ7
ICsraSkgewotICAgICAgICBzaXplLndpZHRoICA9IE1hdGgubWF4KE1hdGguZmxvb3Ioc2l6ZS53
aWR0aCAvIDIpLCAxKTsKLSAgICAgICAgc2l6ZS5oZWlnaHQgPSBNYXRoLm1heChNYXRoLmZsb29y
KHNpemUuaGVpZ2h0IC8gMiksIDEpOwotCi0gICAgICAgIGxldCBzcmNUZXh0dXJlQ29weVZpZXcg
PSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQSwKLSAgICAgICAgICAgIG1pcExldmVs
OiAwLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMCwKLSAgICAgICAgICAgIG9yaWdpbjogeyB4
OiAwLCB5OiAwLCB6OiAwIH0KLSAgICAgICAgfTsKLSAgICAgICAgbGV0IGRzdFRleHR1cmVDb3B5
VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVBLAotICAgICAgICAgICAgbWlw
TGV2ZWw6IGksCi0gICAgICAgICAgICBhcnJheUxheWVyOiAxLAotICAgICAgICAgICAgb3JpZ2lu
OiB7IHg6IDAsIHk6IDAsIHo6IDAgfQotICAgICAgICB9OwotICAgICAgICAvLyBQb3B1bGF0ZSB0
ZXh0dXJlQSAobGF5ZXIgMSwgbWlwIGkpCi0gICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5
VGV4dHVyZVRvVGV4dHVyZShzcmNUZXh0dXJlQ29weVZpZXcsIGRzdFRleHR1cmVDb3B5Vmlldywg
c2l6ZSk7Ci0KLSAgICAgICAgc3JjVGV4dHVyZUNvcHlWaWV3ID0gewotICAgICAgICAgICAgdGV4
dHVyZTogdGV4dHVyZUEsCi0gICAgICAgICAgICBtaXBMZXZlbDogaSwKLSAgICAgICAgICAgIGFy
cmF5TGF5ZXI6IDEsCi0gICAgICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Ci0g
ICAgICAgIH07Ci0gICAgICAgIGRzdFRleHR1cmVDb3B5VmlldyA9IHsKLSAgICAgICAgICAgIHRl
eHR1cmU6IHRleHR1cmVCLAotICAgICAgICAgICAgbWlwTGV2ZWw6IDAsCi0gICAgICAgICAgICBh
cnJheUxheWVyOiAwLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6IDAsIHk6IHNpemUuaGVpZ2h0
LCB6OiAwIH0KLSAgICAgICAgfTsKLSAgICAgICAgLy8gUG9wdWxhdGUgdGV4dHVyZUIgKGxheWVy
IDAsIG1pcCAwKSB3aXRoIHRleHR1cmVBIChsYXllciAxLCBtaXAgaSkKLSAgICAgICAgYmxpdENv
bW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHNyY1RleHR1cmVDb3B5VmlldywgZHN0
VGV4dHVyZUNvcHlWaWV3LCBzaXplKTsKLSAgICB9Ci0KLSAgICAvLyBSZW5kZXIgdGV4dHVyZUIg
aW50byBjYW52YXMyZAotCi0gICAgY29uc3QgaW1hZ2VEYXRhTGVuZ3RoSW5CeXRlcyA9IGNhbnZh
czJkLndpZHRoICogY2FudmFzMmQuaGVpZ2h0ICogNDsKLSAgICBjb25zdCBidWZmZXJEZXNjcmlw
dG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGFMZW5ndGhJbkJ5dGVzLAotICAgICAgICB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAot
ICAgIH07Ci0gICAgY29uc3QgYnVmZmVyQSA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5VmlldyA9IHsKLSAgICAgICAgYnVmZmVy
OiBidWZmZXJBLAotICAgICAgICByb3dQaXRjaDogY2FudmFzMmQud2lkdGggKiA0LAotICAgICAg
ICBpbWFnZUhlaWdodDogY2FudmFzMmQud2lkdGggKiBjYW52YXMyZC5oZWlnaHQgKiA0Ci0gICAg
fTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgIHRleHR1cmU6IHRleHR1
cmVCCi0gICAgfTsKLSAgICBibGl0Q29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih0
ZXh0dXJlQ29weVZpZXcsIGJ1ZmZlckNvcHlWaWV3LCB0ZXh0dXJlQS5kZXNjcmlwdG9yLnNpemUp
OwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtibGl0Q29tbWFuZEVuY29kZXIuZmlu
aXNoKCldKTsKLQotICAgIGNvbnN0IGFiID0gYXdhaXQgYnVmZmVyQS5tYXBSZWFkQXN5bmMoKQot
ICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFiKTsKLSAgICBjb25zdCBy
ZXN1bHRJbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKGFycmF5LCBjYW52YXMyZC53aWR0aCwgY2Fu
dmFzMmQuaGVpZ2h0KTsKLQotICAgIGNvbnRleHQyZC5wdXRJbWFnZURhdGEocmVzdWx0SW1hZ2VE
YXRhLCAwLCAwKTsKLQotICAgIGJ1ZmZlckEuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBjYW52YXMyZCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGRyYXdHcmVlbk1pcENoYWluT25SZWRCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMyZCk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTM3OTZhMzc1N2U1NDI1ZGIwOGIxNDMyYWZlZWM2ZjQxM2NkOWRiNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmxpdC1jb21tYW5kcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkJhc2ljIEJsaXR0aW5n
PC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iQmxpdCBvcGVyYXRpb25zIGNv
cHkgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29tbWFu
ZHMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29t
cGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxib2R5PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLQotY29uc3QgY2FudmFzMmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlKCkgewotICAgIGNvbnN0IGlt
YWdlID0gbmV3IEltYWdlKCk7Ci0gICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDAu
cG5nIjsKLSAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgdGVzdChkZXZpY2Us
IGltYWdlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRy
YXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzMmQpOwotICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlLCBpbWFn
ZSkgewotICAgIGNhbnZhczJkLndpZHRoID0gaW1hZ2Uud2lkdGg7Ci0gICAgY2FudmFzMmQuaGVp
Z2h0ID0gaW1hZ2UuaGVpZ2h0OwotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENv
bnRleHQoJzJkJyk7Ci0gICAgY29udGV4dDJkLmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7Ci0KLSAg
ICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndp
ZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHsKLSAg
ICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDCi0gICAgfTsKLSAgICBidWZmZXJBID0gY3JlYXRlQnVmZmVy
V2l0aERhdGEoZGV2aWNlLCBidWZmZXJEZXNjcmlwdG9yLCBpbWFnZURhdGEuZGF0YS5idWZmZXIp
OwotCi0gICAgYnVmZmVyRGVzY3JpcHRvci51c2FnZSB8PSBHUFVCdWZmZXJVc2FnZS5DT1BZX0RT
VDsKLSAgICBjb25zdCBidWZmZXJCID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBidWZmZXJWaWV3QiA9IHsKLSAgICAgICAgYnVmZmVyOiBidWZmZXJC
LAotICAgICAgICByb3dQaXRjaDogaW1hZ2Uud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhlaWdo
dDogMAotICAgIH07Ci0KLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6
IGltYWdlLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKLSAgICAgICAgZGVw
dGg6IDEKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewotICAgICAgICBz
aXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAg
IHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9E
U1QKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVBID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4
dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3QSA9IHsgdGV4dHVyZTogdGV4
dHVyZUEgfTsKLQotICAgIGNvbnN0IHRleHR1cmVCID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4
dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3QiA9IHsgdGV4dHVyZTogdGV4
dHVyZUIgfTsKLQotICAgIGNvbnN0IHJlYWRCdWZmZXJEZXNjcmlwdG9yID0gewotICAgICAgICBz
aXplOiBpbWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgIH07Ci0gICAgY29u
c3QgcmVhZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVhZEJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHJlYWRCdWZmZXJWaWV3ID0gewotICAgICAgICBidWZmZXI6IHJlYWRCdWZm
ZXIsCi0gICAgICAgIHJvd1BpdGNoOiBpbWFnZS53aWR0aCAqIDQsCi0gICAgICAgIGltYWdlSGVp
Z2h0OiAwCi0gICAgfTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVy
KGJ1ZmZlckEsIDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5ndGgpOwotICAg
IGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVW
aWV3QSwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1
cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHRleHR1cmVWaWV3QSwgdGV4dHVyZVZpZXdCLCB0
ZXh0dXJlU2l6ZSk7Ci0gICAgY29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0
dXJlVmlld0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIGJ1ZmZlckEuZGVz
dHJveSgpOwotICAgIGJ1ZmZlckIuZGVzdHJveSgpOwotICAgIHRleHR1cmVBLmRlc3Ryb3koKTsK
LSAgICB0ZXh0dXJlQi5kZXN0cm95KCk7Ci0KLSAgICBjb25zdCByZXN1bHRDb250ZXh0ID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKLQotICAgIGF3
YWl0IHJlYWRCdWZmZXIubWFwUmVhZEFzeW5jKCkudGhlbihhYiA9PiB7Ci0gICAgICAgIGNvbnN0
IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFiKTsKLSAgICAgICAgY29uc3QgcmVzdWx0
SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJheSwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdo
dCk7Ci0KLSAgICAgICAgcmVzdWx0Q29udGV4dC5wdXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRh
LCAwLCAwKTsKLQotICAgICAgICByZWFkQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB9KTsKLX0KLQot
bG9hZEltYWdlKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJh
OTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBh
c3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52
YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJl
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGEwYjVjMzhlNjRjZGEzMWRlYTNmMmNlYzRjNzgwZWI1MTAwMTRiOWYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5r
IHJlbD0ibWF0Y2giIGhyZWY9ImJ1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5o
dG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVu
LjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29u
c3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19Owot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0MiB4eSA6IGF0dHJpYnV0ZSgwKSwg
ZmxvYXQzIHJnYiA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZP
dXQucG9zaXRpb24gPSBmbG9hdDQoeHksIDAsIDEpOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQo
cmdiLCAxKTsKLSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAg
cmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAg
ICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogMiwKLSAgICAg
ICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDIi
LAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9XQotICAg
ICAgICB9LCB7Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiAzLAotICAgICAgICAgICAgc3RlcE1v
ZGU6ICJpbnN0YW5jZSIsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAg
ICAgICAgZm9ybWF0OiAiZmxvYXQzIiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjog
MQotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRpY2VzKSB7Ci0gICAgY29uc3QgdmVydGV4
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKQotICAgIHJldHVybiBjcmVhdGVCdWZm
ZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJheS5idWZmZXIpOwotfQotCi1mdW5j
dGlvbiBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwg
dmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcikgewotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgZW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHM6IFthdHRhY2htZW50
XSB9KTsKLSAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlciwgY29s
b3JCdWZmZXJdLCBbMCwgMF0pOwotICAgIGVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwot
ICAgIGVuY29kZXIuZHJhdygzLCAxLCAwLCAwKTsKLSAgICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19
Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1h
c3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0
ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3
aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKTsKLSAgICBjb25z
dCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51
bGwsIG51bGwsIHZlcnRleElucHV0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB1cHBlckxlZnRC
dWZmZXIgPSBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBbLTEsIDEsIC0xLCAtMSwg
MCwgMV0pOwotICAgIGNvbnN0IG1pZGRsZUJ1ZmZlciA9IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZl
cihkZXZpY2UsIFswLCAxLCAtMSwgLTEsIDEsIC0xXSk7Ci0gICAgY29uc3QgdXBwZXJSaWdodEJ1
ZmZlciA9IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIFswLCAxLCAxLCAxLCAxLCAt
MV0pOwotCi0gICAgY29uc3QgZ3JlZW4gPSBbMCwgMSwgMF07Ci0gICAgY29uc3QgYmx1ZSA9IFsw
LCAwLCAxXTsKLSAgICBjb25zdCBncmVlbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShncmVlbik7
Ci0gICAgY29uc3QgYmx1ZUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShibHVlKTsKLQotICAgIGNv
bnN0IGNvbG9yQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IGdy
ZWVuQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURSB9LCBncmVlbkFycmF5LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCBh
dHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJsb2FkIiwKLSAg
ICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjogeyByOiAxLCBnOiAw
LCBiOiAwLCBhOiAxIH0KLSAgICB9OwotCi0gICAgLyogbWFwV3JpdGVBc3luYyBzaG91bGQgcmVz
b2x2ZSBhZnRlciBHUFUgY29tbWFuZHMgYXJlIGNvbXBsZXRlLCBzbyB0cmlhbmdsZSBzaG91bGQg
YmUgZ3JlZW4uICovCi0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUs
IGF0dGFjaG1lbnQsIHVwcGVyTGVmdEJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIGF3YWl0IGNv
bG9yQnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKGFiID0+IHsKLSAgICAgICAgbGV0IGFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShhYik7Ci0gICAgICAgIGFycmF5LnNldChibHVlKTsKLSAgICAg
ICAgY29sb3JCdWZmZXIudW5tYXAoKTsKLSAgICB9KTsKLQotICAgIGF3YWl0IGNvbG9yQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKS50aGVuKGFiID0+IHsKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShhYik7Ci0gICAgICAgIGFycmF5LnNldChncmVlbik7Ci0gICAgfSk7Ci0KLSAg
ICAvKiBjb2xvckJ1ZmZlciB0aGF0IGlzIHN0aWxsIG1hcHBlZCBzaG91bGQgYmUgbm90IHN1Ym1p
dHRlZCB0byBkcmF3IGEgYmx1ZSB0cmlhbmdsZS4gKi8KLSAgICBkcmF3QW5kU3VibWl0Q29tbWFu
ZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwgdXBwZXJMZWZ0QnVmZmVyLCBjb2xvckJ1
ZmZlcik7Ci0KLSAgICAvKiBjb2xvckJ1ZmZlciBkb2VzIG5vdCBhY3R1YWxseSBjb250YWluICJn
cmVlbiIgYWdhaW4gdW50aWwgdGhpcyBjYWxsLiAqLwotICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7
Ci0KLSAgICAvKiBXcml0aW5nIGRhdGEgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxk
IG5vdCBhZmZlY3QgdGhlIHByZWNlZGluZyBkcmF3IGNhbGwuICovCi0gICAgZHJhd0FuZFN1Ym1p
dENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29s
b3JCdWZmZXIpOwotICAgIGF3YWl0IG1hcFdyaXRlRGF0YVRvQnVmZmVyKGNvbG9yQnVmZmVyLCBi
bHVlQXJyYXkuYnVmZmVyKTsKLQotICAgIC8qIGRlc3Ryb3kgcmlnaHQgYWZ0ZXIgYSBzdWJtaXQg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIGRyYXcgY2FsbC4gKi8KLSAgICBhd2FpdCBtYXBXcml0ZURh
dGFUb0J1ZmZlcihjb2xvckJ1ZmZlciwgZ3JlZW5BcnJheS5idWZmZXIpOwotICAgIGRyYXdBbmRT
dWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCB1cHBlclJpZ2h0QnVm
ZmVyLCBjb2xvckJ1ZmZlcik7Ci0gICAgdXBwZXJSaWdodEJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAg
ICAvKiBkcmF3IGNvbW1hbmQgd2l0aCBhIGRlc3Ryb3llZCBidWZmZXIgc2hvdWxkIGZhaWwgKi8K
LSAgICBjb2xvckJ1ZmZlci5kZXN0cm95KCk7Ci0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRl
dmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwot
Ci0gICAgdXBwZXJMZWZ0QnVmZmVyLmRlc3Ryb3koKTsKLSAgICBtaWRkbGVCdWZmZXIuZGVzdHJv
eSgpOwotICAgIHVwcGVyUmlnaHRCdWZmZXIuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXIt
ZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1ZWVh
OWQ1MzMzNTNkODZjYmUwZGQyZWRkZjZkNjdjZGQ0MDdhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWVycm9y
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1DT05TT0xFIE1F
U1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGgg
TUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLQotUEFTUyBHUFVCdWZmZXJzIGNhbiBiZSBj
cmVhdGVkIHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNUT1JBR0UgdXNhZ2VzLgotUEFTUyB1bm1h
cCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5l
cmF0ZSBlcnJvci4KLVBBU1MgR1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBl
ZCBjYW5ub3QgYmUgcmVtYXBwZWQuCi1QQVNTIEdQVUJ1ZmZlckRlc2NyaXB0b3Igd2l0aCBib3Ro
IE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIFRvby1sYXJn
ZSBHUFVCdWZmZXJEZXNjcmlwdG9yIHNpemUgc2hvdWxkIGZhaWwgd2l0aCBvdXQtb2YtbWVtb3J5
IGVycm9yLgotUEFTUyBtYXBSZWFkQXN5bmMgb24gbm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91
bGQgZmFpbC4KLVBBU1MgbWFwV3JpdGVBc3luYyBvbiBub24tTUFQX1dSSVRFIEdQVUJ1ZmZlciBz
aG91bGQgZmFpbC4KLVBBU1MgdW5tYXAgb24gbm9uLW1hcHBhYmxlIEdQVUJ1ZmZlciBzaG91bGQg
ZmFpbC4KLVBBU1MgY3JlYXRlQnVmZmVyTWFwcGVkOiBub24tNC1ieXRlLWFsaWduZWQgR1BVQnVm
ZmVyRGVzcmlwdG9yIHNpemUgc2hvdWxkIGZhaWwuCi1QQVNTIEFueSBtZXRob2QgY2FsbCBvbiBh
biBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgQW55IG1ldGhvZCBjYWxsIG9u
IGEgZGVzdHJveWVkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZm
ZXItZXJyb3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTE0NTgzOWZm
MzMwYjUwYzM4NzNiMDA0NjE0YTIyM2Y5NTlmYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+VGVzdCBHUFVCdWZmZXIgRXJyb3JzLjwvdGl0bGU+Ci08
Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotbGV0IHRlc3RzID0ge307Ci0KLXRlc3RzWyJHUFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVk
IHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNUT1JBR0UgdXNhZ2VzLiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLklOREVYIHwgR1BVQnVmZmVyVXNhZ2Uu
Q09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RQotICAgIH0pOwotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3Rz
WyJ1bm1hcCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5v
dCBnZW5lcmF0ZSBlcnJvci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0gICAgICAgIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5D
T1BZX1NSQyB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8Ci0gICAgICAg
ICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2Uu
SU5ERVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8Ci0gICAgICAgICAg
ICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIudW5tYXAoKTsKLSAgICByZXR1cm4gcG9w
TnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siR1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNy
ZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBwZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4g
ewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IFti
dWZmZXIsIF9dID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDQsIHVzYWdlOiAw
IH0pOwotICAgIC8vIFNob3VsZCBub3QgZmFpbC4KLSAgICBidWZmZXIudW5tYXAoKTsKLSAgICBh
d2FpdCBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgi
dmFsaWRhdGlvbiIpOwotICAgIC8vIFNob3VsZCBmYWlsLgotICAgIGJ1ZmZlci51bm1hcCgpOwot
ICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgLy8gU2hvdWxkIGZhaWwuCi0gICAgYnVmZmVy
Lm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNo
KGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0K
LXRlc3RzWyJHUFVCdWZmZXJEZXNjcmlwdG9yIHdpdGggYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dS
SVRFIHVzYWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsg
c2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFIH0pOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07
Ci0KLXRlc3RzWyJUb28tbGFyZ2UgR1BVQnVmZmVyRGVzY3JpcHRvciBzaXplIHNob3VsZCBmYWls
IHdpdGggb3V0LW9mLW1lbW9yeSBlcnJvci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2
aWNlLnB1c2hFcnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1
ZmZlcih7IHNpemU6IDk5OTk5OTk5OTk5LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTk9ORSB9KTsK
LSAgICByZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJtYXBSZWFk
QXN5bmMgb24gbm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAg
ICAgIHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfAot
ICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwK
LSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZl
clVzYWdlLlVOSUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAg
IH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVm
ZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNh
dGNoKGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07
Ci0KLXRlc3RzWyJtYXBXcml0ZUFzeW5jIG9uIG5vbi1NQVBfV1JJVEUgR1BVQnVmZmVyIHNob3Vs
ZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTogNCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLk1BUF9SRUFEIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwK
LSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKLSAgICAgICAgICAgIEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0g
ICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZl
clVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhlbigoKSA9PiB7IGFzc2Vy
dF91bnJlYWNoZWQoKTsgfSkuY2F0Y2goZSA9PiB7fSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRp
b25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbInVubWFwIG9uIG5vbi1tYXBwYWJsZSBHUFVC
dWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoewotICAgICAgICBzaXplOiA0LAotICAgICAgICB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2Uu
Q09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAg
ICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLnVubWFw
KCk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNb
ImNyZWF0ZUJ1ZmZlck1hcHBlZDogbm9uLTQtYnl0ZS1hbGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRv
ciBzaXplIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVz
aEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVk
KHsgc2l6ZTogNSwgdXNhZ2U6IDAgfSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihk
ZXZpY2UpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2QgY2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1
ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICByZXR1cm4gYXNzZXJ0
QWxsQnVmZmVyTWV0aG9kc0ZhaWwoZGV2aWNlLCBidWZmZXIpOwotfTsKLQotdGVzdHNbIkFueSBt
ZXRob2QgY2FsbCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3lu
YyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBz
aXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIuZGVzdHJveSgpOwotICAg
IGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZl
ck1ldGhvZHNGYWlsKGRldmljZSwgYnVmZmVyKTsKLX07Ci0KLWNvbnN0IGFzc2VydEFsbEJ1ZmZl
ck1ldGhvZHNGYWlsID0gYXN5bmMgKGRldmljZSwgYnVmZmVyKSA9PiB7Ci0gICAgZGV2aWNlLnB1
c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRo
ZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIGF3
YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+
IHsgYXNzZXJ0X3VucmVhY2hlZCgpOyB9KS5jYXRjaChlID0+IHt9KTsKLSAgICBhd2FpdCBwb3BW
YWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7
Ci0gICAgYnVmZmVyLmRlc3Ryb3koKTsKLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRl
dmljZSk7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlh
bmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRl
LW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52
YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRl
LW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb2xvci13cml0
ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFmY2E1Y2JkODMzOTdhMmU5NDFlMjA0NGVlOGY2ZGNiMzZjNmFlNGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9y
LXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldl
YkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0i
bWF0Y2giIGhyZWY9ImNvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRt
bCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48
L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQg
c3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0
IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1Zf
VmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZp
ZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwg
MCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQo
MSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJl
dHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gCi0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkg
ewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2
aWNlKTsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Ci0gICAg
ICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAg
ICAgY29sb3JCbGVuZDoge30sCi0gICAgICAgIHdyaXRlTWFzazogR1BVQ29sb3JXcml0ZS5HUkVF
TiB8IEdQVUNvbG9yV3JpdGUuQUxQSEEKLSAgICB9XTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNy
ZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9h
ZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNv
bG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAsIGE6IDAgfQotICAgIH07Ci0gICAgY29uc3QgcGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRz
OiBbY29sb3JBdHRhY2htZW50XSB9KTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNv
ZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQot
ICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3
YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyNjA3NDUwYzU4MTYwZWUzOTBiMzdhMDhkZjA0YmQ0YTAyOTgzN2FiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9j
b21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0KLVBBU1MgQ3JlYXRlIGEgZGVmYXVsdCBHUFVDb21tYW5kRW5jb2Rlci4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmOGRlMTc1Y2I3OWVlYThiOWUyZGExNTUzNGI2ODJhY2NiNzk1M2M3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21t
YW5kLWJ1ZmZlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAgICAgYXNzZXJ0X3Ry
dWUoY29tbWFuZEVuY29kZXIgaW5zdGFuY2VvZiBHUFVDb21tYW5kRW5jb2RlciwgIlN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIEdQVUNvbW1hbmRFbmNvZGVyLiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgIH0pOwotfSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEVuY29kZXIuIik7Ci0KLS8v
IEZJWE1FOiBjcmVhdGVDb21tYW5kRW5jb2RlciBzaG91bGQgdGFrZSBhIEdQVUNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvciwgd2hpY2ggaXMgY3VycmVudGx5IGFuIGVtcHR5IGRpY3Rpb25hcnkuCi08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRl
LXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0
ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZjViYmJiODgzNmZjN2ZiNjE1NDFmNGVlNmY4ZDg4YzdkZDQwYTViLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9j
b21wdXRlLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2
ICswLDAgQEAKLQotUEFTUyBDb21wdXRlIGNvbXBpbGF0aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3Jy
ZWN0IGVudHJ5IHBvaW50IHN0cmluZy4KLVBBU1MgQ29tcHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBz
dWNjZWVkZWQuCi1QQVNTIE1TTCBwaXBlbGluZSBjcmVhdGlvbiBmYWlsZWQgZHVlIHRvIGludmFs
aWQgR1BVU2hhZGVyTW9kdWxlLgotUEFTUyBNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1
ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlOTc1NDRkOTNjZTlkOTJmYzIzYzc3MDBiMjkyNWZlN2Q3OGE1MjVmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3Qg
RXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci1sZXQgZ29vZE1v
ZHVsZTsKLQotdGVzdHNbIkNvbXB1dGUgY29tcGlsYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJl
Y3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBn
b29kV0hMU0wgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBfY29tcHV0
ZV9tYWluKCkgeyB9Ci1gOwotICAgIGdvb2RNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHsgY29kZTogZ29vZFdITFNMIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2
YWxpZGF0aW9uIik7Ci0KLSAgICBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAg
ICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IGdvb2RNb2R1bGUsCi0gICAg
ICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ29t
cHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4gewot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAg
ICAgbW9kdWxlOiBnb29kTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRl
X21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2
aWNlKTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBp
bnZhbGlkIEdQVVNoYWRlck1vZHVsZS4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3Qg
YmFkTVNMID0gYFRoaXMgY29kZSBzaG91bGQgbm90IGNvbXBpbGUuYDsKLQotICAgIGRldmljZS5w
dXNoRXJyb3JTY29wZSgibm9uZSIpOwotCi0gICAgY29uc3QgYmFkTVNMTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGJhZE1TTCB9KTsKLQotICAgIGF3YWl0IGRldmlj
ZS5wb3BFcnJvclNjb3BlKCk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLQotICAgIGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBjb21w
dXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTogYmFkTVNMTW9kdWxlLAotICAgICAgICAg
ICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlw
ZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5n
LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBnb29kTVNMID0gYAota2VybmVsIHZv
aWQgX2NvbXB1dGVfbWFpbigpIHsgfQotYDsKLSAgICBjb25zdCBtc2xNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogZ29vZE1TTCB9KTsKLQotICAgIGRldmljZS5wdXNo
RXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBl
bGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBtc2xN
b2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiX2NvbXB1dGVfbWFpIgotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19Owot
Ci1ydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3Ry
aXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTlj
NTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10
cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBS
ZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMi
KTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNDQyNGJlODY1MmU3YTZmYzY3ODdkMjM0
MWEzN2JjMDRkZGY5OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4K
LTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEg
Z3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRy
aWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJl
bG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBzaGFkZXJDb2RlID0gYAotc3RydWN0IFZlcnRleE91
dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xv
ciA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxv
YXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCB1aW50IGlpZCA6IFNWX0luc3RhbmNlSUQpCi17
Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotCi0g
ICAgaWYgKGlpZCA9PSAwKSB7Ci0gICAgICAgIHZPdXQucG9zaXRpb24ueiA9IDAuNTsKLSAgICAg
ICAgdk91dC5jb2xvciA9IGZsb2F0NCgxLCAwLCAwLCAxKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIDEsIDAsIDEpOwotICAgIH0KLQotICAgIHJldHVybiB2
T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3IgOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1gCi0K
LWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDQgeHl6dwotICAgICAg
ICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLAotICAgICAgICAxLCAxLCAwLCAx
LAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIHJldHVybiBjcmVhdGVCdWZmZXJX
aXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJheS5idWZmZXIpOwotfQotCi1mdW5jdGlv
biBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
aW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAg
ICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0
aW9uOiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH0KLX0KLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hh
aW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBz
aGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0
ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IHZlcnRleElucHV0RGVzY3JpcHRvciA9
IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwotICAgIGNvbnN0IGRlcHRoU3RhdGVEZXNj
cmlwdG9yID0gY3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVzY3JpcHRvcigpOwotICAgIGNvbnN0IHBp
cGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwg
bnVsbCwgdmVydGV4SW5wdXREZXNjcmlwdG9yLCBkZXB0aFN0YXRlRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLQot
ICAgIGNvbnN0IGJhc2ljQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9h
ZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNv
bG9yOiB7IHI6IDEuMCwgZzogMCwgYjogMCwgYTogMS4wIH0KLSAgICB9OwotCi0gICAgY29uc3Qg
ZGVwdGhBdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBjcmVhdGVCYXNpY0RlcHRo
VGV4dHVyZShjYW52YXMsIGRldmljZSkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgZGVw
dGhMb2FkT3A6ICJjbGVhciIsCi0gICAgICAgIGRlcHRoU3RvcmVPcDogInN0b3JlIiwKLSAgICAg
ICAgY2xlYXJEZXB0aDogMS4wCi0gICAgfTsKLQotICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MoewotICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbYmFz
aWNBdHRhY2htZW50XSwKLSAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogZGVwdGhBdHRh
Y2htZW50Ci0gICAgfSk7Ci0KLSAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRl
eEJ1ZmZlcl0sIFswXSk7Ci0gICAgZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAg
ZW5jb2Rlci5kcmF3KDQsIDIsIDAsIDApOwotICAgIGVuY29kZXIuZW5kUGFzcygpOwotCi0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQot
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFy
ZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5
NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYg
c3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
ZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5k
ZXhlZC10cmlhbmdsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIyMWIz
YmQwNWFmMzlkYjI4Zjc1NWYwODUwZDU2MWQxYmY3YWNhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVk
LXRyaWFuZ2xlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlh
bmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVj
dGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImRy
YXctaW5kZXhlZC10cmlhbmdsZXMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3Qg
VmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxv
YXQ0IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhf
bWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGdyZWVuIDogYXR0cmli
dXRlKDEpKQotewotICAgIFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBwb3Np
dGlvbjsKLSAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIGdyZWVuLCAwLCAxKTsKLSAgICByZXR1
cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9y
IDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQot
YAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVy
dGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAgICAgICAgLy8gZmxvYXQ0IHh5encsIGZs
b2F0IGcKLSAgICAgICAgLTEsIDEsIDAsIDEsIDAsCi0gICAgICAgIC0xLCAxLCAwLCAxLCAxLAot
ICAgICAgICAtMSwgLTEsIDAsIDEsIDAsCi0gICAgICAgIC0xLCAtMSwgMCwgMSwgMSwKLSAgICAg
ICAgMSwgMSwgMCwgMSwgMCwKLSAgICAgICAgMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgLTEs
IDAsIDEsIDAsCi0gICAgICAgIDEsIC0xLCAwLCAxLCAxCi0gICAgXSk7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXplOiB2ZXJ0ZXhBcnJheS5ieXRlTGVuZ3Ro
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0sIHZlcnRleEFycmF5LmJ1ZmZlcik7Ci19
Ci0KLWNvbnN0IGluZGV4QnVmZmVyT2Zmc2V0ID0gMjA0ODsgLy8gVGVzdCBhIGJ1ZmZlciBvZmZz
ZXQgZm9yIGluZGV4IGFycmF5LgotY29uc3QgaW5kZXhPZmZzZXQgPSAtOTAwMTsgLy8gVGVzdCBh
IGJhc2UgaW5kZXggdG8gYWRkIHRvIGluZGV4IGFycmF5IHZhbHVlcy4KLQotZnVuY3Rpb24gY3Jl
YXRlSW5kZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29uc3Qgb2Zmc2V0QXJyYXkgPSBbMSwgMywg
NSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAtIGluZGV4T2Zmc2V0OyB9KTsKLSAgICBj
b25zdCBpbmRleEFycmF5ID0gbmV3IFVpbnQzMkFycmF5KFsxLCAzLCA1LCAzLCA1LCA3XS5tYXAo
diA9PiB7IHJldHVybiB2IC0gaW5kZXhPZmZzZXQ7IH0pKTsKLSAgICBjb25zdCBidWZmZXIgPSBj
cmVhdGVCdWZmZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2aWNlLCAKLSAgICAgICAgeyAKLSAgICAg
ICAgICAgIHNpemU6IGluZGV4QXJyYXkuYnl0ZUxlbmd0aCArIGluZGV4QnVmZmVyT2Zmc2V0LCAK
LSAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5JTkRFWCAKLSAgICAgICAgfSwKLSAg
ICAgICAgaW5kZXhBcnJheS5idWZmZXIsCi0gICAgICAgIGluZGV4QnVmZmVyT2Zmc2V0Ci0gICAg
KTsKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0
RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAgICAgICBpbmRleEZvcm1hdDogInVpbnQz
MiIsCi0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiA1
LAotICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDog
ImZsb2F0NCIsCi0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAKLSAgICAgICAgICAg
IH0sIHsKLSAgICAgICAgICAgICAgICBvZmZzZXQ6IDQgKiA0LAotICAgICAgICAgICAgICAgIGZv
cm1hdDogImZsb2F0IiwKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMQotICAgICAg
ICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2Up
IHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRl
dmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNo
YWRlckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlVmVydGV4QnVmZmVy
KGRldmljZSk7Ci0gICAgY29uc3QgaW5kZXhCdWZmZXIgPSBjcmVhdGVJbmRleEJ1ZmZlcihkZXZp
Y2UpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1
bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCksIG51
bGwsICJ0cmlhbmdsZS1saXN0Iik7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFz
aWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotCi0gICAgcGFzc0VuY29k
ZXIuc2V0SW5kZXhCdWZmZXIoaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBw
YXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAg
IHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3
SW5kZXhlZCg2LCAxLCAwLCBpbmRleE9mZnNldCwgMCk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFz
cygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5p
c2goKV0pOwotICAgIHZlcnRleEJ1ZmZlci5kZXN0cm95KCk7Ci19Ci0KLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICB0ZXN0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9lcnJv
ci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUzZTNmZDA4ODk1N2VkM2Q0ZWJkODFkNDE4NjRhZmIyYmVmY2UzMDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9y
LXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK
LQotUEFTUyBDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlkYXRpb24gZXJyb3IuCi1QQVNTIENhcHR1
cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3IuCi1QQVNTIElnbm9yZSBlcnJvcnMgcGFz
dCB0aGUgZmlyc3QuCi1QQVNTIENhcHR1cmVkIGVycm9ycyBtYXRjaCBlcnJvciBzY29wZSBmaWx0
ZXIuCi1QQVNTIFJlamVjdCBwb3BFcnJvclNjb3BlIGlmIG5vIHNjb3BlIGV4aXN0cy4KLVBBU1Mg
RmlsdGVyICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQgbm90IHJlcG9ydCBlcnJvcnMuCi1QQVNT
IFB1c2ggYW5kIHBvcCBtYW55IGVycm9yIHNjb3BlcyB3aXRoIG5vIHJlamVjdGlvbnMuCi1QQVNT
IENhdGNoIG1hbnkgZXJyb3JzIGluIG5lc3RlZCBzY29wZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2Vycm9yLXNjb3Blcy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQz
ZWIxMzk3Mjg2MGYwZTkyZGIwZTM5MjFlZWI3NjBjMzVkNDBkMzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNj
b3Blcy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwv
dGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0KLXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xl
IEdQVVZhbGlkYXRpb24gZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5w
dXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRl
dmljZSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVz
dHNbIkNhcHR1cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3IuIl0gPSBhc3luYyBkZXZp
Y2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAg
IGNhdXNlTWVtb3J5RXJyb3IoZGV2aWNlKTsKLSAgICByZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2
aWNlKTsKLX07Ci0KLXRlc3RzWyJJZ25vcmUgZXJyb3JzIHBhc3QgdGhlIGZpcnN0LiJdID0gYXN5
bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsK
LSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjYXVzZVZhbGlk
YXRpb25FcnJvcihkZXZpY2UpOwotICAgIGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0g
ICAgCi0gICAgY29uc3QgZXJyb3IgPSBhd2FpdCBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotICAg
IGFzc2VydFZhbGlkYXRpb25FcnJvcihlcnJvcik7Ci0KLSAgICByZXR1cm4gcG9wTnVsbEVycm9y
KGRldmljZSk7Ci19OwotCi10ZXN0c1siQ2FwdHVyZWQgZXJyb3JzIG1hdGNoIGVycm9yIHNjb3Bl
IGZpbHRlci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5
Iik7Ci0gICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGNvbnN0IHNob3Vs
ZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChz
aG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
fTsKLQotdGVzdHNbIlJlamVjdCBwb3BFcnJvclNjb3BlIGlmIG5vIHNjb3BlIGV4aXN0cy4iXSA9
IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgcHJvbWlzZSA9IGRldmljZS5wb3BFcnJvclNj
b3BlKCkudGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCksIGFzeW5jIGUgPT4gewotICAgICAg
ICBhc3NlcnRfZmFsc2UoZSA9PT0gdW5kZWZpbmVkKTsKLSAgICAgICAgLy8gUG9wIHRoZSBleHRy
YSAnbm9uZScgc2NvcGUuCi0gICAgICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotICAg
IH0pOwotICAgIC8vICdwcm9taXNlJyBzaG91bGQgc3RpbGwgcmVqZWN0IGlmIGEgc2NvcGUgaXMg
cHVzaGVkIGhlcmUuCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJub25lIik7Ci0gICAgcmV0
dXJuIHByb21pc2U7Ci19OwotCi10ZXN0c1siRmlsdGVyICdub25lJyBzaG91bGQgY2FwdHVyZSBi
dXQgbm90IHJlcG9ydCBlcnJvcnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5w
dXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgibm9uZSIpOwotICAgIGNhdXNlTWVtb3J5RXJyb3IoZGV2aWNlKTsKLQotICAgIGNvbnN0IHNo
b3VsZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVs
bChzaG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwotfTsK
LQotdGVzdHNbIlB1c2ggYW5kIHBvcCBtYW55IGVycm9yIHNjb3BlcyB3aXRoIG5vIHJlamVjdGlv
bnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IG51bUl0ZXJhdGlvbnMgPSAxMjg7
Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpCi0gICAgICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIAotICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9ucyAtIDE7ICsraSkKLSAgICAgICAgYXdhaXQgcG9wTnVs
bEVycm9yKGRldmljZSk7Ci0KLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19Owot
Ci10ZXN0c1siQ2F0Y2ggbWFueSBlcnJvcnMgaW4gbmVzdGVkIHNjb3Blcy4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7Ci0gICAgY29uc3QgbnVtSXRlcmF0aW9ucyA9IDEyODsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgewotICAgICAgICBkZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNl
KTsKLSAgICB9Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnMgLSAxOyAr
K2kpCi0gICAgICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgcmV0
dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNl
KHRlc3RzKTsKLQotLyogSGVscGVyIEZ1bmN0aW9ucyAqLwotCi1jb25zdCBjYXVzZVZhbGlkYXRp
b25FcnJvciA9IGRldmljZSA9PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwot
Y29uc3QgY2F1c2VNZW1vcnlFcnJvciA9IGRldmljZSA9PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsg
c2l6ZTogOTk5OTk5OTk5OTksIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5OT05FIH0pOwotCi08L3Nj
cmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NmIwZThh
ZmUyNTc2MGU5MTFiOWY4ODZiY2IzYzU2NTNiMzJmMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBW
ZXJpZnkgZXhwYW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250
ZXh0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5Mzg1MTEzYWMwZWU1YWI5Mjk2NDc1YTE5Yzk5ZDcx
MzM3OTgxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0aWVzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
dGl0bGU+RW5zdXJlIGV4cGFuZG8gcHJvcGVydGllcyBhcmUgcHJlc2VydmVkIG9uIHRoZSBXZWJH
UFUgY29udGV4dC48L3RpdGxlPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3
aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IGluaXRpYWxpemUoKSB7Ci0gICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLSAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAg
IGN0eC5teVByb3BlcnR5ID0gMjsKLX0KLQotZnVuY3Rpb24gY29sbGVjdEdhcmJhZ2UoKSB7Ci0g
ICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5HQ0NvbnRyb2xsZXIu
Y29sbGVjdCgpOwotICAgIGVsc2UgaWYgKHdpbmRvdy5nYykKLSAgICAgICAgZ2MoKTsKLSAgICBl
bHNlIGlmICh3aW5kb3cuJHZtKQotICAgICAgICB3aW5kb3cuJHZtLmdjKCk7Ci0gICAgLy8gJHZt
IGlzIGV4cG9zZWQgaW4gV2ViS2l0J3MgTWluaUJyb3dzZXIgd2l0aCB0aGUgZm9sbG93aW5nIGVu
dmlyb25tZW50IHZhcmlhYmxlcyBzZXQ6Ci0gICAgLy8gICBleHBvcnQgSlNDX3VzZURvbGxhclZN
PTEKLSAgICAvLyAgIGV4cG9ydCBfX1hQQ19KU0NfdXNlRG9sbGFyVk09MQotfQotCi0vLyBGSVhN
RTogSFRNTENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgiZ3B1Iikgbm8gbG9uZ2VyIGV4aXN0cyBp
biB0aGUKLS8vIFdlYkdQVSBzcGVjLiBXaGVuIFdlYktpdCBpcyB1cGRhdGVkIHRvIHRyYWNrIHRo
ZSBjdXJyZW50IHNwZWMsIHRoaXMKLS8vIHRlc3QgYW5kIHRoZSBiaW5kaW5ncyBzaG91bGQgYmUg
dXBkYXRlZCB0byBob25vciB0aGUgc3BlYydzCi0vLyBndWFyYW50ZWVzIGFib3V0IHByZXNlcnZp
bmcgZXhwYW5kbyBwcm9wZXJ0aWVzIG9uIHZhcmlvdXMKLS8vIGludGVyZmFjZXMuCi1sZXQgdGVz
dDEgPSBhc3luY190ZXN0KCdWZXJpZnkgZXhwYW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQg
b24gdGhlIFdlYkdQVSBjb250ZXh0Jyk7Ci10ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIGlu
aXRpYWxpemUoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgY29sbGVjdEdhcmJhZ2UoKTsKLSAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLSAgICAgICAgbGV0IGN0eCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJncHUiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjdHgubXlQcm9wZXJ0eSwgMik7
Ci0gICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICB9KSwgMjAwKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjk1NTNjYjhhYTcwMTU0NzBlZWFjMzRhMmNjZDk0YzMx
YmM4MWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMjEzICswLDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGdldEJhc2ljRGV2aWNlKCkgewotICAgIGNv
bnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKHsgcG93ZXJQ
cmVmZXJlbmNlOiAibG93LXBvd2VyIiB9KTsKLSAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBhZGFw
dGVyLnJlcXVlc3REZXZpY2UoKTsKLSAgICByZXR1cm4gZGV2aWNlOwotfQotCi1mdW5jdGlvbiBk
cmF3R3JlZW5NaXBDaGFpbk9uUmVkQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQuZmls
bFN0eWxlID0gInJnYigyNTUsIDAsIDApIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1h
dGgubWF4KGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0gICAgbGV0IG1pcExldmVsQ291
bnQgPSBNYXRoLmNlaWwoTWF0aC5sb2cyKG1heFJlc29sdXRpb24pKTsKLSAgICBpZiAobWlwTGV2
ZWxDb3VudCA8IDEpIG1pcExldmVsQ291bnQgPSAxOwotCi0gICAgbGV0IHdpZHRoICA9IGNhbnZh
cy53aWR0aDsKLSAgICBsZXQgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKLSAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IG1pcExldmVsQ291bnQ7ICsraSkgewotICAgICAgICB3aWR0aCAgPSBNYXRoLm1h
eChNYXRoLmZsb29yKHdpZHRoICAvIDIpLCAxKTsKLSAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgo
TWF0aC5mbG9vcihoZWlnaHQgLyAyKSwgMSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0g
InJnYigwLCAyNTUsIDApIjsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCBoZWlnaHQsIHdp
ZHRoLCBoZWlnaHQpOwotICAgIH0KLQotfQotCi1mdW5jdGlvbiBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpIHsKLSAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoIjJkIik7Ci0gICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7Ci0g
ICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCA0MDAsIDQwMCk7Ci0gICAgY29udGV4dC5maWxsU3R5
bGUgPSAid2hpdGUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMTAwLCAxMDAsIDIwMCwgMjAwKTsK
LX0KLQotZnVuY3Rpb24gZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwot
ICAgIGNvbnRleHQuZmlsbFN0eWxlID0gImJsdWUiOwotICAgIGNvbnRleHQuZmlsbFJlY3QoMCwg
MCwgNDAwLCA0MDApOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gImJsYWNrIjsKLSAgICBjb250
ZXh0LmZpbGxSZWN0KDEwMCwgMTAwLCAyMDAsIDIwMCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVl
blNxdWFyZUluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDAp
JzsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJl
KGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsK
LQotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250ZXh0
LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBjb25z
dCBudW1Db2x1bW5zID0gNDsKLSAgICBjb25zdCBudW1Sb3dzID0gNDsKLSAgICBjb250ZXh0LmJl
Z2luUGF0aCgpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAg
ICBmb3IgKGxldCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7ICsreCkgewotICAgICAgICBmb3IgKGxl
dCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAgICAgICAgICAgaWYgKCh4ICsgeSkgJSAy
ID09IDApCi0gICAgICAgICAgICAgICAgY29udGV4dC5yZWN0KAotICAgICAgICAgICAgICAgICAg
ICB4ICogY2FudmFzLndpZHRoIC8gbnVtQ29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAgeSAq
IGNhbnZhcy5oZWlnaHQgLyBudW1Sb3dzLAotICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lk
dGggLyBudW1Db2x1bW5zLAotICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0IC8gbnVt
Um93cwotICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfQotICAgIGNvbnRl
eHQuZmlsbCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRl
dmljZSkgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHsgZGV2aWNlOiBkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0iIH0pOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY0RlcHRoU3Rh
dGVEZXNjcmlwdG9yKCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGRlcHRoV3JpdGVFbmFibGVk
OiB0cnVlLAotICAgICAgICBkZXB0aENvbXBhcmU6ICJsZXNzIgotICAgIH07Ci19Ci0KLWZ1bmN0
aW9uIGNyZWF0ZUJhc2ljRGVwdGhUZXh0dXJlKGNhbnZhcywgZGV2aWNlKSB7Ci0gICAgY29uc3Qg
ZGVwdGhTaXplID0gewotICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLAotICAgICAgICBoZWln
aHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgICAgIGRlcHRoOiAxCi0gICAgfTsKLQotICAgIHJldHVy
biBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAgIHNpemU6IGRlcHRoU2l6ZSwKLSAgICAg
ICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAgICAgdXNhZ2U6IEdQVVRl
eHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVAotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjcmVh
dGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBjb2xvclN0YXRlcywgcGlwZWxp
bmVMYXlvdXQsIHZlcnRleElucHV0RGVzY3JpcHRvciwgZGVwdGhTdGF0ZURlc2NyaXB0b3IsIHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIikgewotICAgIGNvbnN0IHZlcnRleFN0
YWdlRGVzY3JpcHRvciA9IHsKLSAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAg
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCi0gICAgfTsKLQotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2VEZXNjcmlwdG9yID0gewotICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKLSAgICAg
ICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCi0gICAgfTsKLQotICAgIGlmICghY29sb3JT
dGF0ZXMpIHsKLSAgICAgICAgY29sb3JTdGF0ZXMgPSBbeyAKLSAgICAgICAgICAgIGZvcm1hdDog
ImJncmE4dW5vcm0iLAotICAgICAgICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgICAgICBj
b2xvckJsZW5kOiB7fQotICAgICAgICB9XTsKLSAgICB9Ci0KLSAgICBpZiAoIXZlcnRleElucHV0
RGVzY3JpcHRvcikKLSAgICAgICAgdmVydGV4SW5wdXREZXNjcmlwdG9yID0geyB2ZXJ0ZXhCdWZm
ZXJzOiBbXSB9OwotCi0gICAgY29uc3QgcGlwZWxpbmVEZXNjcmlwdG9yID0gewotICAgICAgICB2
ZXJ0ZXhTdGFnZTogdmVydGV4U3RhZ2VEZXNjcmlwdG9yLAotICAgICAgICBmcmFnbWVudFN0YWdl
OiBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciwKLSAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHBy
aW1pdGl2ZVRvcG9sb2d5LAotICAgICAgICBjb2xvclN0YXRlczogY29sb3JTdGF0ZXMsCi0gICAg
ICAgIHZlcnRleElucHV0OiB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IKLSAgICB9OwotCi0gICAgaWYg
KHBpcGVsaW5lTGF5b3V0KQotICAgICAgICBwaXBlbGluZURlc2NyaXB0b3IubGF5b3V0ID0gcGlw
ZWxpbmVMYXlvdXQ7Ci0KLSAgICBpZiAoZGVwdGhTdGF0ZURlc2NyaXB0b3IpCi0gICAgICAgIHBp
cGVsaW5lRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RhdGVEZXNjcmlwdG9y
OwotCi0gICAgcmV0dXJuIGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGluZURlc2Ny
aXB0b3IpOwotfQotCi1mdW5jdGlvbiBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNv
bW1hbmRFbmNvZGVyKSB7Ci0gICAgY29uc3QgYmFzaWNBdHRhY2htZW50ID0gewotICAgICAgICBh
dHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0Vmll
dygpLAotICAgICAgICBsb2FkT3A6ICJjbGVhciIsCi0gICAgICAgIHN0b3JlT3A6ICJzdG9yZSIs
Ci0gICAgICAgIGNsZWFyQ29sb3I6IHsgcjogMS4wLCBnOiAwLCBiOiAwLCBhOiAxLjAgfQotICAg
IH07Ci0KLSAgICAvLyBGSVhNRTogRmxlc2ggb3V0IHRoZSByZXN0IG9mIEdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLiAKLSAgICByZXR1cm4gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsg
Y29sb3JBdHRhY2htZW50cyA6IFtiYXNpY0F0dGFjaG1lbnRdIH0pOwotfQotCi1mdW5jdGlvbiBl
bmNvZGVCYXNpY0NvbW1hbmRzKHJlbmRlclBhc3NFbmNvZGVyLCByZW5kZXJQaXBlbGluZSwgdmVy
dGV4QnVmZmVyKSB7Ci0gICAgaWYgKHZlcnRleEJ1ZmZlcikKLSAgICAgICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNz
KCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgZGVzY3JpcHRv
ciwgZGF0YSwgb2Zmc2V0ID0gMCkgewotICAgIGNvbnN0IG1hcHBlZEJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXJNYXBwZWQoZGVzY3JpcHRvcik7Ci0gICAgY29uc3QgZGF0YUFycmF5ID0gbmV3
IFVpbnQ4QXJyYXkobWFwcGVkQnVmZmVyWzFdKTsKLSAgICBkYXRhQXJyYXkuc2V0KG5ldyBVaW50
OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIG1hcHBlZEJ1ZmZlclswXS51bm1hcCgpOwotICAg
IHJldHVybiBtYXBwZWRCdWZmZXJbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIG1hcFdyaXRlRGF0
YVRvQnVmZmVyKGJ1ZmZlciwgZGF0YSwgb2Zmc2V0ID0gMCkgewotICAgIGNvbnN0IGFycmF5QnVm
ZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB3cml0ZUFycmF5
ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOwotICAgIHdyaXRlQXJyYXkuc2V0KG5ldyBV
aW50OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIGJ1ZmZlci51bm1hcCgpOwotfQotCi0vKioq
IEZ1bmN0aW9ucyBiZWxvdyB0aGlzIGxpbmUgcmVxdWlyZSBXUFQgdGVzdGhhcm5lc3MuanMgYW5k
IHRlc3RoYXJuZXNzcmVwb3J0LmpzLiAqKiovCi0KLWZ1bmN0aW9uIHJ1blRlc3RzV2l0aERldmlj
ZSh0ZXN0cykgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkg
PT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIGRldmljZSA9IGF3YWl0IGdldEJh
c2ljRGV2aWNlKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogV2ViR1BVIGlzIG5vdCBzdXBw
b3J0ZWQuICovIH0KLSAgICAKLSAgICAgICAgZm9yIChsZXQgbmFtZSBpbiB0ZXN0cykgewotICAg
ICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICBkZXZp
Y2VQcm9taXNlVGVzdChkZXZpY2UsIHRlc3RzW25hbWVdLCBuYW1lKTsKLSAgICAgICAgfQotICAg
IH0pOwotfQotCi1mdW5jdGlvbiBkZXZpY2VQcm9taXNlVGVzdChkZXZpY2UsIGZ1bmMsIG5hbWUp
IHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICBpZiAoZGV2aWNlID09
PSB1bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAg
ICAgIHJldHVybiBmdW5jKGRldmljZSk7Ci0gICAgfSwgbmFtZSk7Ci19OwotCi0vLyBBc3NlcnRp
bmcgZXJyb3JzLgotCi1jb25zdCBwb3BWYWxpZGF0aW9uRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNl
LnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydFZhbGlkYXRpb25FcnJvcihlcnJv
cikpOwotY29uc3QgcG9wTWVtb3J5RXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2Nv
cGUoKS50aGVuKGVycm9yID0+IGFzc2VydE1lbW9yeUVycm9yKGVycm9yKSk7Ci1jb25zdCBwb3BO
dWxsRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+
IGFzc2VydE51bGwoZXJyb3IpKTsKLWNvbnN0IGFzc2VydE51bGwgPSBlcnJvciA9PiB7Ci0gICAg
bGV0IGFzc2VydGlvbk1zZyA9ICJObyBlcnJvciBleHBlY3RlZCEiOwotICAgIGlmIChlcnJvciAm
JiBlcnJvci5tZXNzYWdlKQotICAgICAgICBhc3NlcnRpb25Nc2cgKz0gIiBHb3Q6ICIgKyBlcnJv
ci5tZXNzYWdlOwotICAgIGFzc2VydF90cnVlKGVycm9yID09PSBudWxsLCBhc3NlcnRpb25Nc2cp
OwotfTsKLWNvbnN0IGFzc2VydFZhbGlkYXRpb25FcnJvciA9IGVycm9yID0+IHsKLSAgICBsZXQg
YXNzZXJ0aW9uTXNnID0gIkV4cGVjdGVkIHZhbGlkYXRpb24gZXJyb3I6ICI7Ci0gICAgaWYgKGVy
cm9yICYmIGVycm9yLm1lc3NhZ2UpCi0gICAgICAgIGFzc2VydGlvbk1zZyArPSBlcnJvci5tZXNz
YWdlOwotICAgIGFzc2VydF90cnVlKGVycm9yIGluc3RhbmNlb2YgR1BVVmFsaWRhdGlvbkVycm9y
LCBhc3NlcnRpb25Nc2cpOwotfTsKLWNvbnN0IGFzc2VydE1lbW9yeUVycm9yID0gZXJyb3IgPT4g
YXNzZXJ0X3RydWUoZXJyb3IgaW5zdGFuY2VvZiBHUFVPdXRPZk1lbW9yeUVycm9yLCAiRXhwZWN0
ZWQgb3V0LW9mLW1lbW9yeSBlcnJvciEiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAt
cmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjdiYjYyNGRjODAzNzUwNzRjNmEwNWE4ODNmNWFkMGIzYzYzNmRkZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJl
YWQtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBSZWFkQXN5bmMoKTogSW52YWxpZCBvcGVyYXRp
b24hCi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk6IEludmFsaWQg
b3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFzeW5jKCk6IElu
dmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwUmVhZEFzeW5j
KCk6IEludmFsaWQgb3BlcmF0aW9uIQotCi1QQVNTIG1hcFJlYWRBc3luYywgdW5tYXAsIGFuZCBk
ZXN0cm95IG9uIGEgR1BVQnVmZmVyLgotUEFTUyBHUFVCdWZmZXIubWFwUmVhZEFzeW5jIG9uIGEg
YnVmZmVyIGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQuCi1QQVNTIFJl
amVjdCBhIG1hcCByZWFkIG9uIGEgYnVmZmVyIG5vdCBjcmVhdGVkIHdpdGggTUFQX1JFQUQgdXNh
Z2UuCi1QQVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1Mg
UmVqZWN0IGEgcGVuZGluZyBtYXAgcmVhZCBpZiBHUFVCdWZmZXIgaXMgdW5tYXBwZWQuCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMTYzYTI3OGQyYTM4Njg2YWUzYzZhN2Y0NDZjOTEwMzgyNDQ4NzE1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZv
ciBjcmVhdGVCdWZmZXJNYXBwZWQgYW5kIG1hcFJlYWRBc3luYyBvbiBhIEdQVUJ1ZmZlci48L3Rp
dGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIC8vIEJhc2ljIG1h
cFJlYWRBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAg
ICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAx
NiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgICAgICAgICAgYXNzZXJ0
X3RydWUoYnVmZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyIHJldHVybmVk
IGEgR1BVQnVmZmVyIik7Ci0KLSAgICAgICAgICAgIGxldCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1
ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVy
IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsICJmaXJzdCBtYXBSZWFkQXN5bmMgcmVzb2x2ZWQgc3Vj
Y2Vzc2Z1bGx5Iik7Ci0KLSAgICAgICAgICAgIGNvbnN0IHJlYWRBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkQXJyYXlb
MF0sIDAsICJzdWNjZXNzZnVsbHkgYWNjZXNzIGEgdmFsdWUgZnJvbSBhIG1hcCByZWFkIik7Ci0K
LSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNl
ID0gYnVmZmVyLm1hcFJlYWRBc3luYygpOyAvLyBUaGlzIHdpbGwgZXZlbnR1YWxseSByZWplY3Qg
ZHVlIHRvIGJ1ZmZlci5kZXN0cm95KCkKLQotICAgICAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsK
LQotICAgICAgICAgICAgYXdhaXQgcHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRlc3Ryb3llZCEiKTsKLSAgICAgICAgICAg
IH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAg
IH0sICJtYXBSZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBvbiBhIEdQVUJ1ZmZlci4iKTsK
LQotICAgIC8vIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQKLSAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVyUmVzdWx0ID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JF
QUQgfSk7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBidWZmZXJSZXN1bHRbMF07Ci0gICAg
ICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGJ1ZmZlclJlc3VsdFsxXTsKLQotICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoYnVmZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVy
TWFwcGVkIHJldHVybmVkIGEgR1BVQnVmZmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShh
cnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJl
dHVybmVkIGFuIEFycmF5QnVmZmVyIik7Ci0KLSAgICAgICAgICAgIGxldCBhcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYXJyYXkuc2V0KFsxLCAyLCAz
LCA0XSk7Ci0KLSAgICAgICAgICAgIC8vIEJ1ZmZlciBzaG91bGQgYWxyZWFkeSBiZSAibWFwcGVk
Ii4KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJHUFVCdWZmZXIgY3JlYXRlZCB2aWEg
R1BVQnVmZmVyTWFwcGVkIGNhbm5vdCBiZSBtYXBwZWQgdW50aWwgYWZ0ZXIgZmlyc3QgdW5tYXAh
Iik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci51bm1h
cCgpOwotCi0gICAgICAgICAgICAvLyBCdWZmZXIgc2hvdWxkIG5vdCBiZSByZS1tYXBwYWJsZSBm
b3Igd3JpdGVzLgotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5v
dCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwot
Ci0gICAgICAgICAgICAvLyBSZWFkIHJlc3VsdHMgb2Ygb3JpZ2luYWwgd3JpdGVzLgotICAgICAg
ICAgICAgbGV0IHJlc3VsdEFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygp
OwotICAgICAgICAgICAgY29uc3QgcmVzdWx0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3Vs
dEFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIHJlc3VsdEFycmF5LmZvckVhY2goKHYsIGkpID0+
IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIGFycmF5W2ldLCAiU3VjY2Vzc2Z1
bGx5IG1hcC1yZWFkIHZhbHVlIHdyaXR0ZW4gdG8gR1BVQnVmZmVyIG1hcHBlZCBvbiBjcmVhdGlv
biIpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYnVmZmVyLmRl
c3Ryb3koKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJH
UFVCdWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVyIGNyZWF0ZWQgdmlhIEdQVURldmljZS5j
cmVhdGVCdWZmZXJNYXBwZWQuIik7Ci0KLSAgICAvKiBCYXNpYyB2YWxpZGF0aW9uICovCi0gICAg
Ly8gRklYTUU6IFRlc3QgaW52YWxpZCBjb21iaW5hdGlvbnMgb2YgR1BVQnVmZmVyVXNhZ2UgYWZ0
ZXIgaW1wbGVtZW50aW5nIGVycm9yIGhhbmRsaW5nLgotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
eyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLQotICAgICAg
ICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgbm90IGNyZWF0ZWQgd2l0aCBNQVBf
UkVBRCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJSZWplY3QgYSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBu
b3QgY3JlYXRlZCB3aXRoIE1BUF9SRUFEIHVzYWdlLiIpOwotCi0gICAgLyogRXh0ZW5kZWQgdW5t
YXAvZGVzdHJveSBhbmQgcHJvbWlzZSBzZXR0bGluZyB0ZXN0aW5nICovCi0KLSAgICBwcm9taXNl
X3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5j
IGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7
Ci0KLSAgICAgICAgICAgIGJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLSAgICAgICAgICAgIH0sICgpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoIk1hcCBvcGVyYXRpb24gd2FzIGludmFsaWQhIik7IC8v
IGJ1ZmZlciB3YXMgc3RpbGwgaW4gbWFwcGVkIHN0YXRlIGR1cmluZyBwcm9taXNlIGNyZWF0aW9u
Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgbWFwIHJlYWQgb24gYSBtYXBwZWQgR1BVQnVmZmVy
LiIpOwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2lj
RGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0
IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVy
Lm1hcFJlYWRBc3luYygpOwotICAgICAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAg
ICAgIGF3YWl0IHByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgiQnVmZmVyIHdhcyB1bm1hcHBlZCEiKTsgLy8gYnVmZmVyIHdhcyB1bm1hcHBlZCwg
d2hpY2ggcmVqZWN0cyBwZW5kaW5nIHByb21pc2VzCi0gICAgICAgICAgICB9LCgpID0+IHt9KTsK
LSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJSZWplY3QgYSBw
ZW5kaW5nIG1hcCByZWFkIGlmIEdQVUJ1ZmZlciBpcyB1bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVz
dHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L21hcC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAt
d3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRlZGQ5NTEwN2YyYmUxOWVhZDhhMTVhYmExMmQ1MjEyNTcwNzE5OTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13
cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAot
Q09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwV3JpdGVBc3luYygpOiBJbnZhbGlkIG9wZXJh
dGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTogSW52YWxp
ZCBvcGVyYXRpb24hCi0KLVBBU1MgTWFwIHdyaXRlLCB1bm1hcCwgYW5kIGRlc3Ryb3kgYSBHUFVC
dWZmZXIuCi1QQVNTIFJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3
aXRoIE1BUF9XUklURSB1c2FnZS4KLVBBU1MgUmVqZWN0IGEgbWFwIHdyaXRlIG9uIGEgbWFwcGVk
IEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEgcGVuZGluZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVy
IGlzIHVubWFwcGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXdyaXRl
LWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWNmZDlmNTJjNzViNjU4YWRmMjZhNTk2
YjAxZGMzNjUwNDQzNTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsODcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPHRpdGxlPlRlc3RzIGZvciBtYXBXcml0ZUFzeW5jIG9uIGEgR1BVQnVmZmVyLjwvdGl0
bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgLy8gQmFzaWMgbWFw
V3JpdGVBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAg
ICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAx
NiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLSAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZlciwgImNyZWF0ZUJ1ZmZlciByZXR1cm5l
ZCBhIEdQVUJ1ZmZlciIpOwotCi0gICAgICAgICAgICBsZXQgYXJyYXlCdWZmZXIgPSBhd2FpdCBi
dWZmZXIubWFwV3JpdGVBc3luYygpOwotCi0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1
ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiZmlyc3QgbWFwV3JpdGVBc3luYyByZXNvbHZl
ZCBzdWNjZXNzZnVsbHkiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbGV0IGFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGFycmF5WzBdLCAwLCAibWFwV3JpdGVBc3luYyB6ZXJvZWQgb3V0IHN0b3JhZ2UiKTsKLSAgICAg
ICAgICAgIGFycmF5LnNldChbMSwgMiwgMywgNF0pOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7IC8vIFRoaXMgd2lsbCBldmVudHVhbGx5IHJlamVjdCBkdWUgdG8gYnVm
ZmVyLmRlc3Ryb3koKQotCi0gICAgICAgICAgICBidWZmZXIuZGVzdHJveSgpOwotCi0gICAgICAg
ICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91
bnJlYWNoZWQoIkJ1ZmZlciB3YXMgZGVzdHJveWVkISIpOwotICAgICAgICAgICAgfSwgKCkgPT4g
e30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIk1hcCB3
cml0ZSwgdW5tYXAsIGFuZCBkZXN0cm95IGEgR1BVQnVmZmVyLiIpOwotCi0gICAgLyogQmFzaWMg
dmFsaWRhdGlvbiAqLwotICAgIC8vIEZJWE1FOiBUZXN0IGludmFsaWQgY29tYmluYXRpb25zIG9m
IEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGluZyBlcnJvciBoYW5kbGluZy4KLQotICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRo
ZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRCB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5v
dCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwot
ICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1h
cCB3cml0ZSBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSB1c2FnZS4iKTsK
LQotICAgIC8qIEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kgYW5kIHByb21pc2Ugc2V0dGxpbmcgdGVz
dGluZyAqLwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJh
c2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNv
bnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLQotICAgICAgICAgICAgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLSAgICAg
ICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMo
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJNYXAgb3Bl
cmF0aW9uIHdhcyBpbnZhbGlkISIpOyAvLyBidWZmZXIgd2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0
ZSBkdXJpbmcgcHJvbWlzZSBjcmVhdGlvbgotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAg
ICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3
cml0ZSBvbiBhIG1hcHBlZCBHUFVCdWZmZXIuIik7Ci0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
ewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRl
dmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotCi0gICAgICAg
ICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICAgICAgICAg
IGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQh
Iik7IC8vIGJ1ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNoIHJlamVjdHMgcGVuZGluZyBwcm9taXNl
cwotICAgICAgICAgICAgfSwoKSA9PiB7fSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgcGVuZGluZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVy
IGlzIHVubWFwcGVkLiIpOwotfQotCi1ydW5UZXN0cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NTZlYjZhYmYwZDVhMTkzMDEzN2E2YjIxYWQ1
YmI0YWViMDA0YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIGEgYmFzaWMgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvci4KLVBBU1MgQ3JlYXRlIGEgYmFzaWMgR1BVUGlwZWxpbmVMYXlv
dXQgd3RpaCBhIEdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Bp
cGVsaW5lLWxheW91dHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9waXBlbGluZS1sYXlvdXRz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMmI3OThlYTY0Y2JhNDNlYmIw
MmNmMjliMzhjMmY4YTg3NDIzNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTx0aXRsZT5DcmVhdGUgR1BVQmluZEdyb3VwTGF5b3V0LjwvdGl0bGU+Ci08Ym9k
eT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotZnVuY3Rpb24gY3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpIHsKLSAgICByZXR1cm4g
ewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFn
ZS5GUkFHTUVOVCB8IEdQVVNoYWRlclN0YWdlLlZFUlRFWCwKLSAgICAgICAgdHlwZTogInN0b3Jh
Z2UtYnVmZmVyIgotICAgIH07Ci19Ci0KLXRlc3QoKCkgPT4gewotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IgPSB7IGJpbmRpbmdzOiBbY3JlYXRlQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZygpXSB9OwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuYmluZGluZ3NbMF0udmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULCAwKTsK
LSAgICBhc3NlcnRfbm90X2VxdWFscyhiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdz
WzBdLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZS5WRVJURVgsIDApOwotICAgIGFzc2VydF9l
cXVhbHMoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5iaW5kaW5nc1swXS50eXBlLCAic3RvcmFn
ZS1idWZmZXIiKTsKLX0sICJDcmVhdGUgYSBiYXNpYyBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLiIpOyAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtjcmVhdGVCaW5k
R3JvdXBMYXlvdXRCaW5kaW5nKCldIH0pOwotICAgICAgICBhc3NlcnRfdHJ1ZShiaW5kR3JvdXBM
YXlvdXQgaW5zdGFuY2VvZiBHUFVCaW5kR3JvdXBMYXlvdXQsICJjcmVhdGVCaW5kR3JvdXBMYXlv
dXQgcmV0dXJuZWQgYSBHUFVCaW5kR3JvdXBMYXlvdXQiKTsKLQotICAgICAgICBjb25zdCBwaXBl
bGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotICAgICAgICBhc3NlcnRfdHJ1ZShwaXBlbGluZUxh
eW91dCBpbnN0YW5jZW9mIEdQVVBpcGVsaW5lTGF5b3V0LCAiY3JlYXRlUGlwZWxpbmVMYXlvdXQg
cmV0dXJuZWQgYSBHUFVQaXBlbGluZUxheW91dCIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
IH0pOwotfSwgIkNyZWF0ZSBhIGJhc2ljIEdQVVBpcGVsaW5lTGF5b3V0IHd0aWggYSBHUFVEZXZp
Y2UuIik7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9xdWV1ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUt
Y3JlYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGVj
MjM3NmY3NmI1NmFlYzBjNWQ0NDUwMjA4NGQ3ZTM5OGQ4YWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVh
dGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBn
ZXRRdWV1ZSgpIG9uIEdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3F1ZXVlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24u
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5NWE2Y2M3MDIwY2E5ZTZkZjFk
Y2MzYWJjZTc1M2JhZTU5YjBhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTx0aXRsZT5HZXQgdGhlIEdQVURldmljZSBhbmQgYXNrIGZvciB0aGUgR1BVUXVldWU8
L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLQotJ3VzZSBzdHJpY3QnOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMobmF2aWdhdG9yLmdwdSwgdW5kZWZpbmVkLCAibmF2
aWdhdG9yLmdwdSBleGlzdHMiKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBhc3NlcnRfdHJ1ZShj
b250ZXh0IGluc3RhbmNlb2YgR1BVQ2FudmFzQ29udGV4dCwgImdldENvbnRleHQgcmV0dXJuZWQg
YSBHUFVDYW52YXNDb250ZXh0LiIpOwotCi0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhl
bihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgY29uc3QgcXVldWUgPSBkZXZpY2Uu
Z2V0UXVldWUoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUocXVldWUgaW5zdGFuY2VvZiBHUFVRdWV1
ZSwgImdldFF1ZXVlIHJldHVybmVkIGEgR1BVUXVldWUuIik7Ci0KLSAgICAgICAgcXVldWUubGFi
ZWwgPSAiRXhhbXBsZSBsYWJlbCI7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocXVldWUubGFiZWws
ICJFeGFtcGxlIGxhYmVsIiwgInF1ZXVlLmxhYmVsIHdhcyBzZXQuIik7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgfSk7Ci19LCAiZ2V0UXVldWUoKSBvbiBHUFVEZXZpY2UuIik7Ci0KLTwvc2Ny
aXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21t
YW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29t
bWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFhMzU3OWM0YTk0OTMxYzFhYjg1NGVmNDFiOWE0ZDQ3YzA4OWQ2MDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRl
ci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIEdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxs
eSBlbmRlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQt
ZW5jb2RpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGlu
Zy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTQ4YjZlNDMyNTYzZjI4NTBl
MDFjOWU4N2M0OTNhOThkNzIyZDZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPkdldCB0aGUgR1BVRGV2aWNlIGFuZCBhc2sgZm9yIHRo
ZSBHUFVRdWV1ZTwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVycyA9IGAKLXN0cnVjdCBWZXJ0
ZXgKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgYXR0
cmlidXRlUG9zaXRpb24gOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4IHZlcnRl
eF9tYWluKCkKLXsKLSAgICBWZXJ0ZXggcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IGZs
b2F0NCgwLCAwLCAwLCAxKTsKLSAgICByZXN1bHQuYXR0cmlidXRlUG9zaXRpb24gPSByZXN1bHQu
cG9zaXRpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17
Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYAotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAg
IHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAg
IGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7
Ci0gICAgICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
eyBjb2RlOiBzaGFkZXJzIH0pOwotICAgICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2lj
UGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwotCi0gICAgICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGFzc2VydF90
cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BVQ29tbWFuZEVuY29kZXIsICJjcmVhdGVD
b21tYW5kRW5jb2RlciByZXR1cm5lZCBhIEdQVUNvbW1hbmRFbmNvZGVyIik7Ci0KLSAgICAgICAg
Y29uc3QgZW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVu
Y29kZXIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShlbmNvZGVyIGluc3RhbmNlb2YgR1BVUmVuZGVy
UGFzc0VuY29kZXIsICJiZWdpblJlbmRlclBhc3MoKSByZXR1cm5lZCBhIEdQVVJlbmRlclBhc3NF
bmNvZGVyIik7Ci0KLSAgICAgICAgZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAg
ICAgIGVuY29kZXIuZW5kUGFzcygpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwg
IkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZCIpOwot
Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5k
ZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5k
ZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTFmNjZmNThkYzRkZjY2YjA3ODM0MDY1NGQ3MGI5MjJkM2U2ZmM2Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
cmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi0KLVBBU1MgR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0
aCBubyBlcnJvcnMuCi1QQVNTIEludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3Rh
Z2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciBmcmFnbWVu
dCBzdGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgRW1wdHkgZW50cnkgcG9pbnQgZm9yIHZlcnRleCBz
dGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBHUFVUZXh0dXJlRm9ybWF0IGluIEdQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yIHNob3VsZCBmYWlsLgotUEFTUyBUb28gbWFueSBHUFVDb2xvclN0
YXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNTIFRvbyBtYW55IEdQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3JzIHNob3VsZCBmYWlsLgotUEFTUyBUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4KLVBBU1MgRHVwbGljYXRlIHNoYWRlckxvY2F0aW9u
IGZvciB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBlbnRyeSBw
b2ludCBzdHJpbmcgc2hvdWxkIGZhaWwuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVy
LXBpcGVsaW5lLWVycm9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjli
YzczZGM2ZjQ3MmJmYWE0OThjZGI2NDBmNTM5ODBmMjU1YmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlw
ZWxpbmUtZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVz
LjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3QgcG9zaXRpb25Mb2NhdGlvbiA9IDA7Ci1jb25zdCBjb2xv
ckxvY2F0aW9uID0gMTsKLQotY29uc3QgY29sb3JPZmZzZXQgPSA0ICogNDsKLWNvbnN0IHZlcnRl
eFN0cmlkZSA9IDggKiA0OwotCi1jb25zdCB3aGxzbFNvdXJjZSA9IGAKLXN0cnVjdCBGcmFnbWVu
dERhdGEgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0NCBj
b2xvciA6IGF0dHJpYnV0ZSgke2NvbG9yTG9jYXRpb259KTsKLX0KLQotdmVydGV4IEZyYWdtZW50
RGF0YSB2ZXJ0ZXhNYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgke3Bvc2l0aW9uTG9j
YXRpb259KSwgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKCR7Y29sb3JMb2NhdGlvbn0pKQotewot
ICAgIEZyYWdtZW50RGF0YSBvdXQ7Ci0KLSAgICBvdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICBvdXQuY29sb3IgPSBjb2xvcjsKLQotICAgIHJldHVybiBvdXQ7Ci19Ci0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudE1haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKCR7Y29sb3JMb2NhdGlv
bn0pKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYDsKLQotbGV0IGdv
b2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGdvb2RNb2R1bGU7Ci0KLWxldCB0ZXN0cyA9IHt9
OwotCi10ZXN0c1siR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0aCBubyBl
cnJvcnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGdvb2RNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogd2hsc2xTb3VyY2UgfSk7Ci0gICAgCi0gICAgZ29vZFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHsKLSAgICAgICAgdmVydGV4U3RhZ2U6IHsgbW9kdWxl
OiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4TWFpbiIgfSwKLSAgICAgICAgZnJhZ21l
bnRTdGFnZTogeyBtb2R1bGU6IGdvb2RNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudE1haW4i
IH0sCi0gICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGUtbGlzdCIsCi0gICAgICAg
IGNvbG9yU3RhdGVzOiBbewotICAgICAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAg
ICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAgICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAg
ICAgIH1dLAotICAgICAgICB2ZXJ0ZXhJbnB1dDogewotICAgICAgICAgICAgdmVydGV4QnVmZmVy
czogW3sKLSAgICAgICAgICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9u
OiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQi
Ci0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlv
bjogY29sb3JMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBjb2xvck9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IgotICAgICAgICAgICAgICAg
IH1dCi0gICAgICAgICAgICB9XQotICAgICAgICB9Ci0gICAgfTsKLSAgICBPYmplY3QuZnJlZXpl
KGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNj
b3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGdvb2RS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNl
KTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgdmVydGV4IHN0YWdl
IHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRv
ciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAg
IGxldCBiYWRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTog
IkZvbyIgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRT
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhNYWluIiB9OwotCi0gICAgcmV0dXJuIGNy
ZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3Rz
WyJJbnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgZnJhZ21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwu
Il0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFz
c2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0g
ICAgYmFkRGVzY3JpcHRvci5mcmFnbWVudFN0YWdlID0geyBtb2R1bGU6IGJhZFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleE1haW4iIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxp
bmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkVtcHR5IGVu
dHJ5IHBvaW50IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2Ug
PT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52
ZXJ0ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICIiIH07
Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0
b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0
YXRlRGVzY3JpcHRvciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0
IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLSAgICBiYWREZXNjcmlwdG9yLmNvbG9yU3RhdGVzID0gW3sKLSAgICAgICAgZm9y
bWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAgICAgYWxwaGFCbGVuZDoge30sCi0g
ICAgICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgfV07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxp
bmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIlRvbyBtYW55
IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9
PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkQ29sb3JTdGF0ZXMgPSBuZXcgQXJyYXko
MTAwKTsKLSAgICBiYWRDb2xvclN0YXRlcy5maWxsKHsKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1
bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6IHt9LAotICAgICAgICBjb2xvckJsZW5kOiB7fQot
ICAgIH0pOwotICAgIGJhZERlc2NyaXB0b3IuY29sb3JTdGF0ZXMgPSBiYWRDb2xvclN0YXRlczsK
LQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRv
cik7Ci19OwotCi10ZXN0c1siVG9vIG1hbnkgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcnMgc2hv
dWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0g
T2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0
IGJhZFZlcnRleEJ1ZmZlcnMgPSBuZXcgQXJyYXkoMTAwKTsKLSAgICBiYWRWZXJ0ZXhCdWZmZXJz
LmZpbGwoewotICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgYXR0cmlidXRl
U2V0OiBbewotICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHBvc2l0aW9uTG9jYXRpb24sCi0g
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgYmFk
RGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsgdmVydGV4QnVmZmVyczogYmFkVmVydGV4QnVmZmVy
cyB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNj
cmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9ycyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2Ny
aXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LSAgICBsZXQgYmFkQXR0cmlidXRlcyA9IG5ldyBBcnJheSgxMDApOwotICAgIGJhZEF0dHJpYnV0
ZXMuZmlsbCh7Ci0gICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkxvY2F0aW9uLAotICAg
ICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgfSk7Ci0KLSAgICBiYWREZXNjcmlwdG9yLnZlcnRl
eElucHV0ID0gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRl
OiB2ZXJ0ZXhTdHJpZGUsCi0gICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IGJhZEF0dHJpYnV0ZXMK
LSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3Io
ZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJEdXBsaWNhdGUgc2hhZGVyTG9j
YXRpb24gZm9yIHZlcnRleCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNl
ID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGJhZERlc2NyaXB0b3IudmVydGV4SW5wdXQgPSB7
Ci0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IHZlcnRleFN0
cmlkZSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBzaGFk
ZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9h
dDQiCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IGNv
bG9yTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgb2Zmc2V0OiBjb2xvck9mZnNldCwKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICB9XQotICAgICAgICB9XQot
ICAgIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERl
c2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQgZW50cnkgcG9pbnQgc3RyaW5nIHNob3Vs
ZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9i
amVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGJhZERl
c2NyaXB0b3IuZnJhZ21lbnRTdGFnZSA9IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRyeVBvaW50
OiAiYmFyIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBi
YWREZXNjcmlwdG9yKTsKLX07Ci0KLXJ1blRlc3RzV2l0aERldmljZSh0ZXN0cyk7Ci0KLWNvbnN0
IGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IgPSAoZGV2aWNlLCBkZXNjcmlwdG9yKSA9PiB7Ci0gICAg
ZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3Io
ZGV2aWNlKTsKLX07Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNWNkYjUwNzkyNjZlOGY4ODRkMTYzZWI0OWFkNzY1NjNhODgyMTc1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIENyZWF0ZSBiYXNpYyBHUFVSZW5kZXJQaXBlbGluZQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjQ5MmIzMzFlNmQ3ZDdjZTgyZTc4MzA4M2FhZDRiYmJlZmM1ODdhYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVu
ZGVyLXBpcGVsaW5lcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbgotewotICAgIGZs
b2F0NCB2OwotICAgIHN3aXRjaCAodmlkKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICB2ID0gZmxv
YXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB2
ID0gZmxvYXQ0KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAg
ICAgICAgdiA9IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICByZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6
IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwgMC4wLCAxLjApOwot
fQotYAotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotCi0gICAgICAg
IGNvbnN0IGxheW91dEJpbmRpbmcgPSB7IGJpbmRpbmc6IDAsIHZpc2liaWxpdHk6IEdQVVNoYWRl
clN0YWdlLlZFUlRFWCwgdHlwZTogInN0b3JhZ2UtYnVmZmVyIiB9OwotICAgICAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6
IFtsYXlvdXRCaW5kaW5nXSB9KTsKLSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XSB9KTsKLQotICAgICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUo
c2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIHBpcGVsaW5lTGF5b3V0KTsKLSAgICAgICAgYXNz
ZXJ0X3RydWUocGlwZWxpbmUgaW5zdGFuY2VvZiBHUFVSZW5kZXJQaXBlbGluZSwgIlN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIEdQVVJlbmRlclBpcGVsaW5lIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIEdQVVJlbmRlclBpcGVsaW5lIik7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvYmx1ZS1j
aGVja2VyZWQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJl
ZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMmJiNmZhM2YzODYwYzAwNzRi
MDk4ZmRmMGU5MjIwZmUzNTdjMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMTMx
NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVY0TUtMOUJlPzVoVyV6fGZEfkpqeDRSMyZlLUs9
LWNsbChYMnhveXUKeldIQUUrdz1mN1pHUiZHSTBUZzV9QCRffE5mNlUxJEVXbVVwJjMtbG0xSXYw
KDdzcnJfVFdfeSM8WWhNQ1ZSa2g3Cnp7ci0mNDFmI2FELUdVaCR7Tl5fZyQqJChyVGx1Kl97Pzh7
dk1nfUlQaDZWLSYxcUtjZDVUWWR5VmhQTCE4dVE/dQp6MF4zSXQ/fVBrVkJqY0RWIVNqV3V2WTVY
JiUyT1VIZ1YoUH1FK2FDR0FXN3N5KnlPVzM/UTZefE4pXnU/dTZAOWMKek5KTENiJGNZRnFGTnVr
UGdAdThVKFpQWDFLbWRlaiQlOXd8dndfQXVoXkgjbk01ZVdRPnAheWVpX0Nwc19ra0plCnlRTHIx
fS1YQDYkYjNQPWpzTHJFdDZyZV5qQm5zflJWbWZ0M1RyXnxoRD9lYXEjXkNBZD1kI1d6cCRQIUdl
ekF4RQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAw
LnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3Zjg4ZTdjNWFiNTg4YTg2ODFjMTFkN2QxNmMzMmU5
ZjZjNDNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxNDgKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB5fnlWNE1LTGpMYmxoVTQ9e2ZmZlFxTGtoPkcoJjY3SXlLbmBidE1gU1NyCnox
R2d7O0djd0dZQkxOZy00KTYoYVclJG92NV9leilrZ01oQzt1dW1mPWp9bTVNai1GZGcwS0U+XlZ0
PnZuZHFSdwpYKzx5WkRxb3ZzTjNYcUphdERubXtyLVVXfDRralFzCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVhYzY4Zjg2MmEyOGZjNDJjNTg2ZTIxYWQ0ODI3ZmNkNjUyMjgzYmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIFRlc3Qgc2hhZGVyIGNvZGUgdmFsaWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1v
ZHVsZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQyNjJlMTFjYjY2MWYyZTRkNzcyNDEwMjBlODI1ZGMyY2Y2NGYw
YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0
aXRsZT5UZXN0IHNoYWRlciB2YWxpZGF0aW9uLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlcnMgPSBgCi1z
dHJ1Y3QgVmVydGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQ0IGF0dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmlidXRlKDApOwotfTsKLQotdmVydGV4IFZl
cnRleCB2ZXJ0ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4IHJlc3VsdDsKLSAgICByZXN1bHQucG9z
aXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAgcmVzdWx0LmF0dHJpYnV0ZVBvc2l0aW9u
ID0gcmVzdWx0LnBvc2l0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9U
YXJnZXQgMAotewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgICAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
IGNvZGU6IHNoYWRlcnMgfSk7Ci0gICAgICAgIGFzc2VydF90cnVlKHNoYWRlck1vZHVsZSBpbnN0
YW5jZW9mIEdQVVNoYWRlck1vZHVsZSwgIlNoYWRlciBtb2R1bGUgY3JlYXRlZCBzdWNjZXNzZnVs
bHkuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiVGVzdCBzaGFkZXIgY29k
ZSB2YWxpZGF0aW9uIHdoZW4gY3JlYXRpbmcgbW9kdWxlcy4iKTsKLTwvc2NyaXB0PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdj
OTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3Ry
aXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZp
bGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9w
PgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3Jl
ZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjcwNGQ0YmQyMTk2NTBkMzQxMjQ5Nzg3ZWM2YTdhNGEzMTQ1NjAzNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
c2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUg
SGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2Vi
R1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNo
IiBocmVmPSJzaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlm
IHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBg
Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1Zf
UG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2Ug
MDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMC4w
LCAxLjAsIDAuMCwgMS4wKTsKLX0KLWAKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwot
ICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2Rl
IH0pOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1
bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgIGVuY29kZUJhc2ljQ29tbWFuZHMo
cGFzc0VuY29kZXIsIHBpcGVsaW5lKTsKLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1
ZSgpOwotCi0gICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotfQot
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFy
ZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzM4NDU4MjBiMjFkZDBhM2YyMzgzYjhmZDcyMWMwYjRkYmUzMTA2My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1NyArMCwwIEBACi0KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
MSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIC0xIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNh
bXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNT
IENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAtMSBkZXB0aCAxIG1pcExldmVs
Q291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2Fn
ZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAt
MSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IC0xIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IC0xIGRpbWVu
c2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1
cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3Vu
dCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAtMS4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDAgZGVwdGggMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDAgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMCBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDEwMDAwIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNv
dW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0
aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAzMDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3Vu
dCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAu
Ci1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAx
IG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1
bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQg
MTAwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDMwMDAgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDMwMDAgZGVwdGggMSBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGgg
MzAwMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVp
Z2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMWQg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1l
bnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDIg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBB
U1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZl
bENvdW50IDMgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGgg
MiBtaXBMZXZlbENvdW50IDMgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4
dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0
IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMWQgZm9y
bWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
NCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2Ft
cGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENv
dW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBt
aXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMyBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5v
cm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMzAwIGRpbWVuc2lvbiAyZCBmb3Jt
YXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGgg
MiBoZWlnaHQgMiBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCA0IGRpbWVuc2lv
biAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUg
b2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAy
IGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBh
IHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1w
bGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBD
cmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMiBkZXB0aCAxIG1pcExldmVsQ291
bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAyIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9y
bSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBk
ZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQg
cmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBo
ZWlnaHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Yg
d2lkdGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRp
bWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRl
eHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVD
b3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAu
Ci1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlw
TGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxv
YXQtc3RlbmNpbDggdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEg
aGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMiBkaW1lbnNpb24g
MmQgZm9ybWF0IGRlcHRoMzJmbG9hdC1zdGVuY2lsOCB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBh
IHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1w
bGVDb3VudCAxIGRpbWVuc2lvbiBnYXJiYWdlIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1Q
QVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2
ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBnYXJiYWdlIHVzYWdl
IDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEg
bWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVp
bnQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IGJncmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEg
aGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IGJncmE4dW5vcm0tc3JnYiB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1
cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3Vu
dCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTE2ZmxvYXQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMTAwMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMzEuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRl
cHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDQgZGltZW5zaW9uIDJkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDguCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0
dXJlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjYwMDU1N2ExZjk0NzhmZjMyNDNh
MDg1NzE4YmNmODA0NzA3YzkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGluZyB0ZXh0dXJlIHZpZXdzLjwvdGl0bGU+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTxib2R5PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5j
dGlvbiBydW5UZXN0cygpIHsKLSAgICBsZXQgdGVzdHMgPSBbCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRp
bWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0
cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENv
dW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0s
Ci0KLSAgICAgICAgLy8gVGVzdCBuZWdhdGl2ZSB2YWx1ZXMKLSAgICAgICAge3dpZHRoOiAtMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRp
bWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBm
YWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAtMSwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMSwgZGVwdGg6IC0xLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENv
dW50OiAtMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1
bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVp
Z2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IC0xLCBkaW1l
bnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFs
c2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogLTEsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IHplcm8g
dmFsdWVzCi0gICAgICAgIHt3aWR0aDogMCwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxD
b3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1
bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVp
Z2h0OiAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVu
c2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxz
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMCwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMCwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDAsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtYXhpbXVtIHNp
emVzCi0gICAgICAgIHt3aWR0aDogMTAwMDAsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhl
aWdodDogMzAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vzczog
ZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEwMDAwLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBM
ZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAx
LCBoZWlnaHQ6IDEwMDAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwg
bWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0
OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0
aDogMzAwMCwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291
bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBz
dWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAzMDAwLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3
aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAgLy8gVGVzdCBtaXBtYXBwZWQgdGV4dHVyZXMK
LSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAy
LCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAg
ICAgICB7d2lkdGg6IDIsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDIsIHNh
bXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0
aDogMiwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwg
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAg
e3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAzLCBzYW1wbGVD
b3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAy
LCBtaXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiM2QiLCBmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAv
LyBUZXN0IG11bHRpc2FtcGxpbmcKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMWQiLCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAg
e3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVD
b3VudDogNCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDEs
IG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiA0LCBkaW1lbnNpb246ICIyZCIsIGZvcm1h
dDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0
aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6
IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDog
MiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDMs
IGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDMwMCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAy
LCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwg
ZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZl
bENvdW50OiAxLCBzYW1wbGVDb3VudDogMiwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IGRp
bWVuc2lvbgotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVs
Q291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVp
Z2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVu
c2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVl
fSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50
OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLQotICAg
ICAgICAvLyBUZXN0IGRlcHRoIHRleHR1cmVzCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjFkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6
IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZl
bENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJkZXB0
aDMyZmxvYXQtc3RlbmNpbDgiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3
aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291
bnQ6IDIsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4Iiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IGVudW1zCi0gICAg
ICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2Ft
cGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogImdhcmJhZ2UiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
dXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEs
IGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MmQiLCBmb3JtYXQ6ICJnYXJiYWdlIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAg
ICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVpbnQiLCB1c2FnZTog
MCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9y
bWF0OiAiYmdyYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dp
ZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3Vu
dDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJiZ3JhOHVub3JtLXNyZ2IiLCB1c2FnZTog
MCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9y
bWF0OiAicmdiYTE2ZmxvYXQiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0KLSAgICAgICAg
Ly8gVGVzdCB1c2FnZQotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1p
cExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDog
InJnYmE4dW5vcm0iLCB1c2FnZTogMTAwMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lk
dGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50
OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4
dHVyZVVzYWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVy
ZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuU1RPUkFHRSB8IEdQVVRleHR1cmVVc2Fn
ZS5PVVRQVVRfQVRUQUNITUVOVCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRp
bWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNh
Z2UuU1RPUkFHRSwgc3VjY2VzczogZmFsc2V9LAotICAgIF07Ci0gICAgZm9yIChsZXQgdGVzdCBv
ZiB0ZXN0cykgewotICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4g
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAg
ICAgbGV0IGNhdWdodCA9IGZhbHNlOwotICAgICAgICAgICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxldCB0
ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUoe3NpemU6IHt3aWR0aDogdGVzdC53aWR0aCwg
aGVpZ2h0OiB0ZXN0LmhlaWdodCwgZGVwdGg6IHRlc3QuZGVwdGh9LCBtaXBMZXZlbENvdW50OiB0
ZXN0Lm1pcExldmVsQ291bnQsIHNhbXBsZUNvdW50OiB0ZXN0LnNhbXBsZUNvdW50LCBkaW1lbnNp
b246IHRlc3QuZGltZW5zaW9uLCBmb3JtYXQ6IHRlc3QuZm9ybWF0LCB1c2FnZTogdGVzdC51c2Fn
ZX0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUgaW5zdGFuY2VvZiBHUFVU
ZXh0dXJlLCAiQ2Fubm90IGNyZWF0ZSB0ZXh0dXJlLiIpOwotICAgICAgICAgICAgfSBjYXRjaCB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIXRlc3Quc3VjY2VzcywgIkNyZWF0aW5nIHRl
eHR1cmUgc2hvdWxkICIgKyAodGVzdC5zdWNjZXNzID8gIm5vdCAiIDogIiIpICsgImZhaWwuIik7
Ci0gICAgICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihmdW5jdGlvbihlcnJvcikgewot
ICAgICAgICAgICAgICAgIGlmICh0ZXN0LnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAg
bGV0IG1lc3NhZ2UgPSAiQ291bGQgbm90IGNyZWF0ZSB0ZXh0dXJlOiAiOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gZXJyb3IubWVzc2FnZTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlcnJvciwgbnVsbCwgIkNvdWxkIG5vdCBjcmVhdGUgdGV4dHVyZTogIiArIG1lc3Nh
Z2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNhdWdodCkgewotICAgICAgICAgICAg
ICAgICAgICBsZXQgbWVzc2FnZSA9ICJDcmVhdGVkIHRleHR1cmU6ICI7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZSArPSBlcnJvci5tZXNzYWdlOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZSghIShjYXVnaHQgfHwgZXJyb3IpLCAiQ3JlYXRlZCB0ZXh0dXJlIHdoZW4gc2hvdWxkbid0
IGhhdmU6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgImRldmljZSBs
b3N0Iik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAg
ICB9KTsKLSAgICB9LCBgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoICR7dGVzdC53aWR0aH0g
aGVpZ2h0ICR7dGVzdC5oZWlnaHR9IGRlcHRoICR7dGVzdC5kZXB0aH0gbWlwTGV2ZWxDb3VudCAk
e3Rlc3QubWlwTGV2ZWxDb3VudH0gc2FtcGxlQ291bnQgJHt0ZXN0LnNhbXBsZUNvdW50fSBkaW1l
bnNpb24gJHt0ZXN0LmRpbWVuc2lvbn0gZm9ybWF0ICR7dGVzdC5mb3JtYXR9IHVzYWdlICR7dGVz
dC51c2FnZX0uYCk7Ci0gICAgfQotfQotCi1ydW5UZXN0cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2
NzQ1ZWY2ZWQ4NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1z
dHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2Ug
RmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVl
biBjaGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
Y2FudmFzIik7Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlh
bmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3Ry
aXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhhMzU5NWYyNmY5ZWEwNDNi
MmIwZTczZTE1NDcwMWE4MWNiMjRmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxl
PgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMg
YSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZlcnRleC1idWZmZXIt
dHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMg
YmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBwb3NpdGlvbkJ1ZmZl
ckluZGV4ID0gMDsKLWNvbnN0IHRleENvb3Jkc0J1ZmZlckluZGV4ID0gMTsKLWNvbnN0IHBvc2l0
aW9uQXR0cmlidXRlTnVtID0gMDsKLWNvbnN0IHRleENvb3Jkc0F0dHJpYnV0ZU51bSA9IDE7Ci1j
b25zdCBiaW5kR3JvdXBJbmRleCA9IDA7Ci1jb25zdCB0ZXh0dXJlQmluZGluZ051bSA9IDA7Ci1j
b25zdCBzYW1wbGVyQmluZGluZ051bSA9IDE7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1
Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQg
dmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKCR7cG9zaXRpb25BdHRyaWJ1
dGVOdW19KSwgZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgke3RleENvb3Jkc0F0dHJpYnV0
ZU51bX0pKSB7Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHZPdXQudGV4Q29vcmRzID0gdGV4Q29vcmRzOwotICAgIHJldHVybiB2T3V0Owot
fQotCi1zdHJ1Y3QgVGV4dHVyZVNhbXBsZXIKLXsKLSAgICBUZXh0dXJlMkQ8ZmxvYXQ0PiB0IDog
cmVnaXN0ZXIodCR7dGV4dHVyZUJpbmRpbmdOdW19LCBzcGFjZSR7YmluZEdyb3VwSW5kZXh9KTsK
LSAgICBzYW1wbGVyIHMgOiByZWdpc3RlcihzJHtzYW1wbGVyQmluZGluZ051bX0sIHNwYWNlJHti
aW5kR3JvdXBJbmRleH0pOwotfTsKLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxv
YXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKSwgVGV4dHVyZVNhbXBsZXIgdGV4dHVyZVNhbXBs
ZXIpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gU2FtcGxlKHRleHR1cmVTYW1wbGVyLnQs
IHRleHR1cmVTYW1wbGVyLnMsIHRleENvb3Jkcyk7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZl
cnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICB2YXIgYnVmZmVyRGVzY3JpcHRvcnMgPSBbXTsK
LSAgICBidWZmZXJEZXNjcmlwdG9yc1twb3NpdGlvbkJ1ZmZlckluZGV4XSA9IHsKLSAgICAgICAg
c3RyaWRlOiA0ICogNCwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgZm9y
bWF0OiAiZmxvYXQ0IiwKLSAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJp
YnV0ZU51bQotICAgICAgICB9XQotICAgIH07Ci0gICAgYnVmZmVyRGVzY3JpcHRvcnNbdGV4Q29v
cmRzQnVmZmVySW5kZXhdID0gewotICAgICAgICBzdHJpZGU6IDQgKiAyLAotICAgICAgICBhdHRy
aWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDIiLAotICAgICAgICAgICAg
c2hhZGVyTG9jYXRpb246IHRleENvb3Jkc0F0dHJpYnV0ZU51bQotICAgICAgICB9XQotICAgIH07
Ci0KLSAgICByZXR1cm4geyB2ZXJ0ZXhCdWZmZXJzOiBidWZmZXJEZXNjcmlwdG9ycyB9OwotfQot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVC
YXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0
aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0KLSAgICBjb25zdCBwb3NpdGlv
bkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCi0gICAgICAgIC8vIGZsb2F0NCB4eXp3Ci0gICAg
ICAgIC0xLCAxLCAwLCAxLAotICAgICAgICAtMSwgLTEsIDAsIDEsCi0gICAgICAgIDEsIDEsIDAs
IDEsIAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwotICAgIGNvbnN0IHBvc2l0aW9uQnVm
ZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHBvc2l0aW9uQXJyYXku
Ynl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCBwb3NpdGlvbkFycmF5
LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCB0ZXhDb29yZHNBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
WwotICAgICAgICAvLyBmbG9hdDIgdGV4Q29vcmRzCi0gICAgICAgIDAsIDAsCi0gICAgICAgIDAs
IDEsCi0gICAgICAgIDEsIDAsCi0gICAgICAgIDEsIDEKLSAgICBdKTsKLSAgICBjb25zdCB0ZXh0
dXJlQ29vcmRCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdGV4
Q29vcmRzQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB0
ZXhDb29yZHNBcnJheS5idWZmZXIpOwotCi0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9y
ID0gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCk7Ci0KLSAgICAvLyBMb2FkIHRleHR1cmUg
aW1hZ2UKLSAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGNvbnN0IGltYWdlTG9h
ZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsgCi0gICAgICAgIGltYWdlLm9ubG9h
ZCA9ICgpID0+IHJlc29sdmUoKTsgCi0gICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvYmx1
ZS1jaGVja2VyZWQucG5nIjsKLSAgICB9KTsKLSAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoaW1h
Z2VMb2FkUHJvbWlzZSk7Ci0KLSAgICAvLyBDb252ZXJ0IGltYWdlIHRvIGRhdGEgYW5kIGZpbGwg
R1BVQnVmZmVyCi0gICAgY29uc3QgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKLSAgICBjYW52YXMyZC53aWR0aCA9IGltYWdlLndpZHRoOwotICAgIGNhbnZhczJk
LmhlaWdodCA9IGltYWdlLmhlaWdodDsKLSAgICBjb25zdCBjb250ZXh0MmQgPSBjYW52YXMyZC5n
ZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQyZC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwot
ICAgIGNvbnN0IGltYWdlRGF0YSA9IGNvbnRleHQyZC5nZXRJbWFnZURhdGEoMCwgMCwgaW1hZ2Uu
d2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRv
ciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLAotICAgICAgICB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVCdWZm
ZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHRleHR1cmVCdWZmZXJEZXNjcmlwdG9y
LCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAgLy8gQ3JlYXRlIEdQVVRleHR1cmUKLSAg
ICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLAotICAg
ICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKLSAgICAgICAgZGVwdGg6IDEKLSAgICB9OwotCi0g
ICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7Ci0gICAgICAgIHNpemU6IHsgd2lkdGg6IGlt
YWdlLndpZHRoLCBoZWlnaHQ6IGltYWdlLmhlaWdodCwgZGVwdGg6IDEgfSwKLSAgICAgICAgZm9y
bWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9E
U1QgfCBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRAotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9
IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLQotICAgIC8vIEJpbmQg
dGV4dHVyZSBhbmQgYSBzYW1wbGVyIHRvIHBpcGVsaW5lCi0gICAgY29uc3QgdGV4dHVyZUxheW91
dEJpbmRpbmcgPSB7IAotICAgICAgICBiaW5kaW5nOiB0ZXh0dXJlQmluZGluZ051bSwgCi0gICAg
ICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULCAKLSAgICAgICAgdHlwZTog
InNhbXBsZWQtdGV4dHVyZSIgCi0gICAgfTsKLSAgICBjb25zdCBzYW1wbGVyTGF5b3V0QmluZGlu
ZyA9IHsKLSAgICAgICAgYmluZGluZzogc2FtcGxlckJpbmRpbmdOdW0sCi0gICAgICAgIHZpc2li
aWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAotICAgICAgICB0eXBlOiAic2FtcGxlciIK
LSAgICB9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHsKLSAgICAg
ICAgYmluZGluZ3M6IFt0ZXh0dXJlTGF5b3V0QmluZGluZywgc2FtcGxlckxheW91dEJpbmRpbmdd
Ci0gICAgfTsKLSAgICBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlQmluZGluZyA9IHsgCi0gICAgICAg
IGJpbmRpbmc6IHRleHR1cmVCaW5kaW5nTnVtLCAKLSAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKSAKLSAgICB9OwotICAgIGNvbnN0IHNhbXBsZXJCaW5kaW5nID0g
ewotICAgICAgICBiaW5kaW5nOiBzYW1wbGVyQmluZGluZ051bSwKLSAgICAgICAgcmVzb3VyY2U6
IGRldmljZS5jcmVhdGVTYW1wbGVyKHsgbWluRmlsdGVyOiAibmVhcmVzdCIsIG1hZ0ZpbHRlcjog
Im5lYXJlc3QiIH0pCi0gICAgfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7
Ci0gICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICBiaW5kaW5nczogW3Rl
eHR1cmVCaW5kaW5nLCBzYW1wbGVyQmluZGluZ10KLSAgICB9OwotICAgIGNvbnN0IGJpbmRHcm91
cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICAv
LyBQaXBlbGluZSBhbmQgcmVuZGVyCi0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1Bp
cGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBwaXBlbGluZUxheW91dCwgdmVydGV4
SW5wdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kRW5jb2RlcigpOwotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7Ci0gICAg
ICAgIGJ1ZmZlcjogdGV4dHVyZUJ1ZmZlciwKLSAgICAgICAgcm93UGl0Y2g6IGltYWdlLndpZHRo
ICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVD
b3B5VmlldyA9IHsgdGV4dHVyZTogdGV4dHVyZSB9OwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlC
dWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4dHVyZVNp
emUpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENo
YWluLCBjb21tYW5kRW5jb2Rlcik7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxp
bmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cChiaW5kR3JvdXBJbmRleCwgYmluZEdy
b3VwKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKHBvc2l0aW9uQnVmZmVySW5k
ZXgsIFtwb3NpdGlvbkJ1ZmZlciwgdGV4dHVyZUNvb3JkQnVmZmVyXSwgWzAsIDBdKTsKLSAgICBw
YXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LQotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgcXVldWUuc3VibWl0
KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIHBvc2l0aW9uQnVmZmVyLmRlc3Ryb3ko
KTsKLSAgICB0ZXh0dXJlQ29vcmRCdWZmZXIuZGVzdHJveSgpOwotICAgIHRleHR1cmUuZGVzdHJv
eSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
dGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdH
cmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZp
ZXdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmll
d3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjk0M2RkYTRl
YTg2N2QzMTRmYzIyOGY3ZGZiY2ZmMDIwOTA0Zjg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJl
dmlld3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1Mg
Q3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hhaW4uCi1QQVNTIENyZWF0ZSBiYXNpYyBk
ZXB0aCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBDcmVhdGUgYmFzaWMgNHggbXVsdGlzYW1w
bGVkIHRleHR1cmUuCi1QQVNTIENyZWF0ZSBiYXNpYyAzRCB0ZXh0dXJlIGZyb20gZGV2aWNlLgot
UEFTUyBDcmVhdGUgYSByZW5kZXIgdGFyZ2V0IHRleHR1cmUgKHdoaWNoIGNhbiBiZSBzYW1wbGVk
KSBmcm9tIGRldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVz
LXRleHR1cmV2aWV3cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2
aWV3cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzFhOTQzZGQ3Y2EwM2Fl
M2U5MjNhNWUzMzVmNGY4ODg5N2E1MTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3Mu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5CYXNpYyBHUFVUZXh0dXJlIFRlc3RzLjwvdGl0bGU+
Ci08Ym9keT4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsgICAgCi1sZXQgY29u
dGV4dDsKLQotbGV0IHRleFNpemUgPSB7Ci0gICAgd2lkdGg6IGNhbnZhcy53aWR0aCwKLSAgICBo
ZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgZGVwdGg6IDEKLX07Ci0KLWxldCB0ZXhEZXNjcmlw
dG9yID0gewotICAgIHNpemU6IHRleFNpemUsCi0gICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0
ZW5jaWw4IiwKLSAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5UCi19
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dh
cENoYWluKGNhbnZhcywgZGV2aWNlKTsKLQotICAgICAgICBjb25zdCB0ZXh0dXJlID0gc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUgaW5z
dGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGFjcXVpcmVkIG5leHQgdGV4dHVyZS4i
KTsKLQotICAgICAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUodGV4dHVyZVZpZXcgaW5zdGFuY2VvZiBHUFVUZXh0
dXJlVmlldywgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRleHR1cmUgdmlldyBmcm9tIG5leHQgdGV4
dHVyZS4iKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICB9KTsKLX0sICJDcmVhdGUgdGV4dHVy
ZSB2aWV3IGZyb20gc3dhcCBjaGFpbi4iKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICBy
ZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBj
b25zdCBkZXB0aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsK
LSAgICAgICAgYXNzZXJ0X3RydWUoZGVwdGhUZXh0dXJlIGluc3RhbmNlb2YgR1BVVGV4dHVyZSwg
IlN1Y2Nlc3NmdWxseSBjcmVhdGVkIGRlcHRoIHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIGRlcHRoIHRleHR1cmUgZnJvbSBkZXZpY2Uu
Iik7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgdGV4RGVzY3JpcHRvci5zYW1wbGVDb3Vu
dCA9IDQ7Ci0gICAgICAgIHRleERlc2NyaXB0b3IuZm9ybWF0ID0gInJnYmE4dW5vcm0iOwotICAg
ICAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVU
ZXh0dXJlVXNhZ2UuQ09QWV9TUkMKLQotICAgICAgICBjb25zdCBtdWx0aXNhbXBsZWRUZXh0dXJl
ID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90
cnVlKG11bHRpc2FtcGxlZFRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1
bGx5IGNyZWF0ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7
Ci0gICAgICAgIHRleERlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPSAxOwotICAgICAgICB0ZXhEZXNj
cmlwdG9yLmRpbWVuc2lvbiA9ICIzZCI7Ci0KLSAgICAgICAgY29uc3QgdGV4dHVyZTNkID0gZGV2
aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKHRl
eHR1cmUzZCBpbnN0YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBiYXNp
YyAzRCB0ZXh0dXJlLiIpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0
ZSBiYXNpYyAzRCB0ZXh0dXJlIGZyb20gZGV2aWNlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgICAgIHRleERlc2NyaXB0b3IuZm9ybWF0ID0gInJnYmE4dW5vcm0iOwotICAgICAgICB0ZXhE
ZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5UIHwgR1BV
VGV4dHVyZVVzYWdlLlNBTVBMRUQ7Ci0KLSAgICAgICAgY29uc3QgcmVuZGVyVGFyZ2V0ID0gZGV2
aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKHJl
bmRlclRhcmdldCBpbnN0YW5jZW9mIEdQVVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBv
ZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQuIik7Ci0gICAgICAgIGNvbnN0IHRleHR1cmVWaWV3ID0g
cmVuZGVyVGFyZ2V0LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0gICAgICAgIGFzc2VydF90cnVlKHRl
eHR1cmVWaWV3IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZpZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRl
ZCB0ZXh0dXJlIHZpZXcgZnJvbSBvZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQuIik7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJl
ICh3aGljaCBjYW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZpY2UuIik7Ci0KLS8vIEZJWE1FOiBBZGQg
dGVzdHMgZm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJyYXlzLCBhbmQgR1BVVGV4dHVyZVZpZXdz
LgotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2EwMmFjZDY4Y2VjZDBjZjRlN2ExNGUxMDc0OGEzY2VlZGE1YTE5NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCww
IEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogQnVmZmVyIGNh
bm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLUNPTlNPTEUgTUVT
U0FHRTogR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiBCdWZmZXIgY2Fubm90IGhhdmUgYm90aCBN
QVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIQotCi1QQVNTIEZpcmUgYW4gdW5jYXB0dXJlZCBH
UFVEZXZpY2UgZXJyb3IgZXZlbnQgYXQgJ2RldmljZScuCi1QQVNTIEludGVyY2VwdCBhbiB1bmNh
cHR1cmVkIGVycm9yIHdpdGggR1BVRGV2aWNlLm9udW5jYXB0dXJlZGVycm9yIEV2ZW50SGFuZGxl
ci4KLVBBU1MgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgYXN5bmMgdGVzdC4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOWUyZWM0MjBkMGRmOWU3YTY5M2FjNjE3Mzk5ZjU4YTQ5ODEyNzE1Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dW5jYXB0dXJlZC1lcnJvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0IEVycm9yIFNj
b3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9IHt9OwotbGV0IGV2ZW50V2F0Y2hlcjsK
LQotY29uc3QgY2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVudCA9IGRldmljZSA9PiB7Ci0gICAgZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLX07Ci0KLXRlc3RzWyJGaXJlIGFuIHVu
Y2FwdHVyZWQgR1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0ICdkZXZpY2UnLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBjb25zdCBhc3luY1Rlc3QgPSBhc3luY190ZXN0KCJHUFVVbmNhcHR1cmVk
RXJyb3JFdmVudCBhc3luYyB0ZXN0LiIpOwotICAgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBF
dmVudFdhdGNoZXIoYXN5bmNUZXN0LCBkZXZpY2UsICJ1bmNhcHR1cmVkZXJyb3IiKTsKLSAgICBj
b25zdCBldmVudEZpcmVkID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCJ1bmNhcHR1cmVkZXJyb3Ii
KS50aGVuKGV2ZW50ID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZXJyb3IgaW5zdGFu
Y2VvZiBHUFVWYWxpZGF0aW9uRXJyb3IsICJTdWNjZXNzZnVsbHkgZmlyZWQgR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuIik7Ci0gICAgICAgIGFzeW5jVGVzdC5kb25lKCk7Ci0gICAgfSk7Ci0KLSAg
ICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gewotICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXJyb3IgZXZl
bnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAgICBjYXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50
KGRldmljZSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtldmVudEZpcmVkLCB0aW1lb3V0
XSk7Ci19OwotCi10ZXN0c1siSW50ZXJjZXB0IGFuIHVuY2FwdHVyZWQgZXJyb3Igd2l0aCBHUFVE
ZXZpY2Uub251bmNhcHR1cmVkZXJyb3IgRXZlbnRIYW5kbGVyLiJdID0gYXN5bmMgZGV2aWNlID0+
IHsKLSAgICBjb25zdCBjYXB0dXJlZEVycm9yUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gewotICAgICAgICBkZXZpY2Uub251bmNhcHR1cmVkZXJyb3IgPSBldmVudCA9PiB7Ci0gICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5lcnJvciBpbnN0YW5jZW9mIEdQVVZhbGlkYXRpb25F
cnJvciwgIlN1Y2Nlc3NmdWxseSBmaXJlZCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC4iKTsKLSAg
ICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfTsKLQotICAgICAgICBjYXVzZVVuY2FwdHVy
ZWRFcnJvckV2ZW50KGRldmljZSk7Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0aW1lb3V0ID0gbmV3
IFByb21pc2UoKF8sIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVq
ZWN0KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXJyb3IgZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAg
fSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtjYXB0dXJlZEVycm9yUHJvbWlzZSwgdGlt
ZW91dF0pOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0PgotPC9i
b2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZk
MmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxw
PlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxj
YW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1
YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2JiZTg3NTc3ZTZiMmU0ZTM1ZmMxY2ExNzBhMjE1ZmJmZjY4ZjhjZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsOTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgot
PGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC1leHBl
Y3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5
IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7
Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgZ3JlZW4gOiBhdHRyaWJ1dGUoMSkpCi17Ci0gICAgVmVydGV4T3V0
IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHZPdXQuY29sb3IgPSBm
bG9hdDQoMCwgZ3JlZW4sIDAsIDEpOwotICAgIHJldHVybiB2T3V0OwotfQotCi1mcmFnbWVudCBm
bG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFy
Z2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRl
eEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkoWwotICAgICAgICAvLyBmbG9hdDQgeHl6dywgZmxvYXQgZwotICAgICAgICAtMSwgMSwgMCwg
MSwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLCAxLAotICAgICAgICAxLCAxLCAwLCAxLCAxLAot
ICAgICAgICAxLCAtMSwgMCwgMSwgMQotICAgIF0pOwotCi0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZl
cldpdGhEYXRhKAotICAgICAgICBkZXZpY2UsIAotICAgICAgICB7IAotICAgICAgICAgICAgc2l6
ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFCi0gICAgICAgIH0sCi0gICAg
ICAgIHZlcnRleEFycmF5LmJ1ZmZlcgotICAgICk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRl
eElucHV0RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJz
OiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNl
dDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAgICAgICAgICAgICAg
IHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgb2Zm
c2V0OiA0ICogNCwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdCIsCi0gICAgICAgICAg
ICAgICAgc2hhZGVyTG9jYXRpb246IDEKLSAgICAgICAgICAgIH1dCi0gICAgICAgIH1dCi0gICAg
fQotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsK
LQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
cmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxh
Y2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSk7Ci0gICAgY29uc3QgdmVydGV4
SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCk7Ci0gICAgY29u
c3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBu
dWxsLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29k
ZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAg
ICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSwgdmVydGV4QnVmZmVy
KTsKLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1p
dChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAgICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgp
OwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVz
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVl
blNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3Ry
aXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJl
Y3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNh
bnZhcyBiZWxvdyBpcyBhIDQgYnkgNCBibHVlL2dyZWVuIGNoZWNrZXJib2FyZC48L3A+Ci08Y2Fu
dmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlbkFuZEJs
dWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUt
c3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU3OTQxNDYwNjFmZDU3
NDUzMWExMjA2MDg4NzliNDg5YTBkYmI5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0
LXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxv
IFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBj
b3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJl
Zj0idmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgot
PHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hl
Y2tlcmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWlu
dCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbgotewotICAgIGZsb2F0NCB2OwotICAg
IHN3aXRjaCAodmlkKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAw
LCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB2ID0gZmxvYXQ0KC0x
LCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgdiA9IGZs
b2F0NCgxLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
diA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gdjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNWX1RhcmdldCAw
Ci17Ci0gICAgcmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwgMC4wLCAxLjApOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiY2FudmFzIik7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2Fw
Q2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1T
TCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRl
QmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBibHVlQXR0
YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0
dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAg
ICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDAsIGc6IDAs
IGI6IDEsIGE6IDEgfQotICAgIH07Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbYmx1ZUF0dGFjaG1lbnRd
IH0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLQotICAgIGZ1bmN0
aW9uIGRyYXdWaWV3cG9ydCh4LCB5KSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldFZpZXdwb3J0
KHgsIHksIDEwMCwgMTAwLCAwLCAxKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkcmF3U2Npc3NvclJlY3QoeCwgeSkgewotICAg
ICAgICBwYXNzRW5jb2Rlci5zZXRTY2lzc29yUmVjdCh4LCB5LCAxMDAsIDEwMCk7Ci0gICAgICAg
IHBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgfQotCi0gICAgcGFzc0VuY29kZXIu
c2V0U2Npc3NvclJlY3QoMCwgMCwgMjAwLCA0MDApOwotICAgIGRyYXdWaWV3cG9ydCgxMDAsIDAp
OwotICAgIGRyYXdWaWV3cG9ydCgwLCAxMDApOwotICAgIGRyYXdWaWV3cG9ydCgxMDAsIDIwMCk7
Ci0gICAgZHJhd1ZpZXdwb3J0KDAsIDMwMCk7Ci0KLSAgICAvLyBEcmF3IG91dHNpZGUgb2Ygc2Np
c3NvciByZWN0IHNob3VsZCBub3QgYXBwZWFyLgotICAgIGRyYXdWaWV3cG9ydCgyMDAsIDEwMCk7
Ci0KLSAgICBwYXNzRW5jb2Rlci5zZXRWaWV3cG9ydCgyMDAsIDAsIDIwMCwgNDAwLCAwLCAxKTsK
LSAgICBkcmF3U2Npc3NvclJlY3QoMzAwLCAwKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMjAwLCAx
MDApOwotICAgIGRyYXdTY2lzc29yUmVjdCgzMDAsIDIwMCk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0
KDIwMCwgMzAwKTsKLQotICAgIC8vIERyYXcgb3V0c2lkZSBvZiB2aWV3cG9ydCBzaG91bGQgbm90
IGFwcGVhci4KLSAgICBkcmF3U2Npc3NvclJlY3QoMCwgMCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1
ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJk
SW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmZjRlZWI2Mjk5OGNmY2I0ZmY2ZWM5ODdj
OWQzZWI5ZmU1NDIxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGNhbnRUYWtlQWRkcmVz
c09mU3dpenpsZQotUEFTUyBjYW50QXNzaWduUnZhbHVlU3dpenpsZQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6emxlLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQzMmYyNzllNDk5MjBjYWRlY2Q5ZGM5YmUzNTU1NjdjOTMzNjU2MzYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRm
LTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5iYWQgc3dp
enpsZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jYW50VGFrZUFk
ZHJlc3NPZlN3aXp6bGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICB0aHJl
YWQgaW50KiB4ID0gJnYueDsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHY7Ci0gICAgICAg
ICAgICB0aHJlYWQgaW50MiogeCA9ICZ2Lnh5OwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi13
aGxzbFRlc3RzLmNhbnRBc3NpZ25SdmFsdWVTd2l6emxlID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludDIgeCgpIHsKLSAgICAgICAgICAgIGludDIgdjsK
LSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZm9vKCkgewot
ICAgICAgICAgICAgeCgpLnh5ID0gaW50MigxMCwgMjApOwotICAgICAgICB9Ci0gICAgYCk7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxv
Y2F0aW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFy
eS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFj
a2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0
cmlidXRlLWxvY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0cmFy
eS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZTNiZTM0MjA1M2Q2MWMwMTQ3MjM4NmVlYjVhM2M0Y2UyZWEwZGUyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2NhdGlvbnMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0
ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMTczKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
NDk4KSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9z
aXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hh
ZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMTczLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRy
aWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiA0OTgsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAx
Nn07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZTAsIGF0dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBj
b25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAg
IHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1
ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBb
YmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7
ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29u
dGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0
IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwot
Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAg
Y29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcs
IHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwg
Y2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51
bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjRlMDQ4YzFjMDZjZDUwMTc4Yzc5ODNiNDFmOTZmZmY2
NjBjM2JmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGV2YWx1YXRpb25PcmRl
ckZvckFyZ3VtZW50cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJn
dW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Fy
Z3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjkzOGU4ODhiY2UwZjgzY2ExNzhlMzhhY2Y4YWIwY2RkMzQ3Mjk2ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmV2YWx1YXRpb25PcmRlckZvckFy
Z3VtZW50cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKCkgeyByZXR1cm4gKmJhcigxMCkgKyAqYmFyKDIwKTsgfQotCi0gICAgICAgIHRocmVh
ZCBpbnQqIGJhcihpbnQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gdmFs
dWU7Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmF6
KCkgeyByZXR1cm4gcGx1cyhiYXIoMTApLCBiYXIoMjApKTsgfQotCi0gICAgICAgIGludCBwbHVz
KHRocmVhZCBpbnQqIHgsIHRocmVhZCBpbnQqIHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAqeCArICp5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgNDApOwotfTsK
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMzJkMmMzZGI4
MzQ0NTRkZWRkOThmMGNlN2JlNzY5MGM0ZWIwYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0
aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAot
Ci1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhGYWlsCi1QQVNTIG5vbkFycmF5UmVmQXJyYXlM
ZW5ndGhTdWNjZWVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJh
eS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEx
MzczZmNlZDI2OGU3YWMxOTViYTJhZDZkZmRjMjdiNzNiOTY5MDYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Fy
cmF5LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ub25BcnJheVJlZkFycmF5TGVuZ3Ro
RmFpbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB0aHJlYWQgdWludCogbGVuZ3RoUHRyKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpbnRbNDJdIGFycmF5OwotICAgICAgICAgICAgICAgIHJldHVybiAmKGFycmF5
Lmxlbmd0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm5v
bkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgdWludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dFs3NTRdIGFycmF5OwotICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKLSAgICAgICAg
fQotICAgICAgICB1aW50IGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFs3NTRdIGFy
cmF5OwotICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDc1NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJiYXIiLCBbXSksIDc1NCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJy
YXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJh
eS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcxY2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9h
cnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0KLVBBU1MgZmllbGRTaG91bGRCZU51bGwKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2FycmF5LW9vYi1hbGlhcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjEz
MmEwOTdmYWYxN2Q5NmQyYmI1ODA4MWVhZGE4ZDlhOTUzZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJh
eS1vb2ItYWxpYXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+b29iIG9uIGFycmF5cy48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAg
ICAgIGludCB4OwotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICBpbnQgejsKLSAgICAg
ICAgfQotICAgICAgICBib29sIGZvbyh1aW50IGkpIHsKLSAgICAgICAgICAgIEZvb1sxMF0gZm9v
czsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGZvbyA9ICZmb29zW2ldOwotICAgICAgICAgICAg
dGhyZWFkIGludCogcHRyID0gJihmb28tPnopOwotICAgICAgICAgICAgKnB0ciA9IDQyOwotICAg
ICAgICAgICAgcmV0dXJuIGZvb3NbMF0ueiA9PSA0MjsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgYmFyKCkgewotICAgICAgICAgICAgRm9vWzEwXSBmb29zOwotICAgICAgICAgICAgdGhyZWFk
IEZvbyogZm9vID0gJmZvb3NbNDI0MjQyXTsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9
ICYoZm9vLT56KTsKLSAgICAgICAgICAgIHJldHVybiBmb28gPT0gJmZvb3NbMF07Ci0gICAgICAg
IH0KLQotICAgICAgICBmbG9hdDMgcmV0RmxvYXQzKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZsb2F0MygxMC4wLCAwLjAsIDAuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9h
dFsxMF0gcmV0RmxvYXRBcnJheSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0WzEwXSB2
OwotICAgICAgICAgICAgdlswXSA9IDEwLjA7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgYmF6KCkgewotICAgICAgICAgICAgcmV0dXJuIHJldEZsb2F0
MygpWzQyXSA9PSAxMC4wOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBqYXooKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gcmV0RmxvYXRBcnJheSgpWzQyXSA9PSAxMC4wOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VVaW50
KGkpXSksIGkgPT09IDAgPyB0cnVlIDogZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgxMCldKSwgdHJ1ZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9v
IiwgW21ha2VVaW50KDEwMDAwMDApXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgweGZmZmZmZmZmKV0p
LCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJiYXIiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImJheiIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiamF6IiwgW10pLCB0cnVlKTsKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmE1NWZiNjE2YjE1MzQ5ZWFjNDA5ZGQ2NDA3
ZGEzYTA4ZDczNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgYXJyYXlSZWZUb0FycmF5UmVm
Ci1QQVNTIGFzc2lnbkxlbmd0aAotUEFTUyBhc3NpZ25MZW5ndGhIZWxwZXIKLVBBU1MgYnVpbGRB
cnJheVRoZW5TdW1JdAotUEFTUyBidWlsZEFycmF5VGhlblN1bUl0VXNpbmdBcnJheVJlZmVyZW5j
ZQotUEFTUyBwYXNzaW5nQXJyYXlUb0Z1bmN0aW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZDE1MzFiYmM1NjEyZTc0YTg2ZTlkNjJhMmU4N2EyYmE2MWNlM2U3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9hcnJheS1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhh
cm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYXJyYXlSZWZU
b0FycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB0aHJl
YWQgaW50W10gcCA9IEB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdW10gcHAgPSBAcDsKLSAg
ICAgICAgICAgIGludFtddGhyZWFkW110aHJlYWQgcXEgPSBwcDsKLSAgICAgICAgICAgIGludCBy
ZXN1bHQgPSAwOwotICAgICAgICAgICAgeCA9IDQyOwotICAgICAgICAgICAgcFswXSA9IDc2Owot
ICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBwcFswXVswXSA9IDM5OwotICAg
ICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBxcVswXVswXSA9IDgzOwotICAgICAg
ICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJvZ3JhbSk7Ci19Ci0KLXdobHNsVGVzdHMu
YXNzaWduTGVuZ3RoID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZsb2F0Wzc1NF0gYXJyYXk7Ci0gICAgICAgICAgICAgICAgKEBhcnJheSkubGVuZ3RoID0g
NDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0
cy5hc3NpZ25MZW5ndGhIZWxwZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGJhcih0aHJlYWQgZmxvYXRbXSBhcnJheSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhcnJheS5sZW5ndGggPSA0MjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAgICAgIGJhcihAYXJyYXkpOwot
ICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5idWlsZEFycmF5VGhl
blN1bUl0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAgICAg
IGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSArIDEpCi0gICAgICAgICAgICAgICAgYXJy
YXlbaV0gPSBpbnQoaSArIDUpOwotICAgICAgICAgICAgaW50IHJlc3VsdDsKLSAgICAgICAgICAg
IGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSArIDEpCi0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gcmVzdWx0ICsgYXJyYXlbaV07Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCA0MiAqIDUgKyA0MiAqIDQxIC8gMik7Ci19Ci0KLXdobHNsVGVz
dHMuYnVpbGRBcnJheVRoZW5TdW1JdFVzaW5nQXJyYXlSZWZlcmVuY2UgPSBhc3luYyAoKSA9PiB7
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIodGhyZWFkIGludFtdIGFycmF5
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkg
KyAxKQotICAgICAgICAgICAgICAgIGFycmF5W2ldID0gaW50KGkgKyA1KTsKLSAgICAgICAgICAg
IGludCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkg
KyAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGFycmF5W2ldOwotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKLSAgICAgICAgICAgIHJldHVybiBiYXIo
QGFycmF5KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDIgKiA1ICsgNDIgKiA0MSAvIDIpOwot
fQotCi13aGxzbFRlc3RzLnBhc3NpbmdBcnJheVRvRnVuY3Rpb24gPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaW50WzEwXSBhcnI7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnIu
bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgYXJyW2ldID0gaW50KGkpICsgMTsKLSAgICAg
ICAgICAgIHJldHVybiBzdW0oYXJyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBzdW0oaW50
WzEwXSB4cykKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHQgPSAwOwotICAgICAgICAgICAg
Zm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgdCA9
IHQgKyB4c1tpXTsKLSAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCA1NSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMTQ5NDgyZDU5OWI3YzY0OGI1OWYxYjBhOWY1ODdhMjlj
YmNmMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi0KLVBBU1MgYmFkQWRkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFk
LWFkZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWQ3NzIzNWE0OGU5NDJj
MzI1MGVmZTI3YzQwMTY1MGVjYzFkM2UzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPkJhZCBhZGQuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
YmFkQWRkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4LCB1aW50IHkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdWludCB6ID0geCArIHk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
fQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1saXRlcmFscy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDczNDg2ZDc5NDg5NTdiN2UyYzFlMDU2OTg3NDI1NzNj
ZTExOTgwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJhZEludExpdGVyYWxGb3JJbnQKLVBBU1Mg
YmFkSW50TGl0ZXJhbEZvckZsb2F0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9iYWQtbGl0ZXJhbHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0
ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4ZWRjZThmNThlYmM2
Y2JkYWI0N2MyMzRjZGEwM2Y1NGY0ODU5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuYmFkSW50TGl0ZXJhbEZvckludCA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKCAidm9pZCBmb28oKSB7IGludCB4ID0gMzAwMDAwMDAwMDsgfSIp
OwotfQotCi13aGxzbFRlc3RzLmJhZEludExpdGVyYWxGb3JGbG9hdCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCJ2b2lkIGZvbygpIHsgZmxvYXQgeCA9IDUwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7IH0iKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzI4NWM0NjM0NjVmM2E5ZTQyZDA0ZmYzNDQ4NTE3ODg1ZjM5NTQ4OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw2ICswLDAgQEAKLQotUEFTUyBib29sQml0QW5kCi1QQVNTIGJvb2xCaXRPcgotUEFTUyBib29s
Qml0WG9yCi1QQVNTIGJvb2xCaXROb3QKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9i
aXR3aXNlLWJvb2wtb3BzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOTdm
ZjI3OWY3ZGEzNTUzNWEwYjc1YjE5ZjQwYzBkMjhjOWJhMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdp
c2UtYm9vbC1vcHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5ib29sQml0QW5kID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHNv
dXJjZSA9IGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhICYgYjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICB7Ci0gICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0p
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFr
ZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVz
dCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJv
b2xCaXRPciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJv
b2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSB8
IGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VC
b29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCBy
ZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChm
YWxzZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
ZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZh
bHVlLiIpOwotICAgIH0KLX07Ci0KLXdobHNsVGVzdHMuYm9vbEJpdFhvciA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSBeIGI7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFs
dWUuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxz
ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwg
bWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAi
VGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtl
Qm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci19Owot
Ci13aGxzbFRlc3RzLmJvb2xCaXROb3QgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNl
ID0gYAotICAgICAgICBib29sIGZvbyhib29sIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB+YTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKV0p
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pOwot
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0
ZWQgdmFsdWUuIik7Ci0gICAgfQotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1h
dHJpeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTVlZTZhN2ZhZGU2
M2QyMjBlZTAxMDEwZjVmYWZkZDZiZDgzODgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgYm9vbE1h
dHJpeAotUEFTUyBib29sTWF0cml4MgotUEFTUyBib29sTWF0cml4MwotUEFTUyBib29sTWF0cml4
NAotUEFTUyBib29sTWF0cml4NQotUEFTUyBib29sTWF0cml4QW55Ci1QQVNTIGJvb2xNYXRyaXhB
bnkyCi1QQVNTIGJvb2xNYXRyaXhBbGwKLVBBU1MgYm9vbE1hdHJpeEFsbDIKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTg5NjVmY2NkOWZlNWM0NTMxOWM1ZjhiYTExYTZkMDUxZjZjOGU2Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYm9vbC1tYXRyaXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPmJvb2wgbWF0cml4LjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJvb2xNYXRyaXggPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAg
IGJvb2wyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBib29sMih0cnVlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBtWzFdID0gYm9vbDIodHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gaW50
KG1bMF1bMF0pICsgaW50KG1bMF1bMV0pICsgaW50KG1bMV1bMF0pICsgaW50KG1bMV1bMV0pOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAzKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJp
eDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBm
b28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKHRydWUsIGZhbHNlLCB0cnVl
LCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiAhbVswXVsxXSAmJiBtWzFd
WzBdICYmICFtWzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLmJvb2xNYXRyaXgzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9v
bDJ4Mih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1bMF1b
MF0gJiYgIW1bMF1bMV0gJiYgbVsxXVswXSAmJiAhbVsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4NCA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGJvb2wyeDMgbSA9IGJvb2wyeDModHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVswXVswXSAmJiBtWzBdWzFdICYmIG1bMF1b
Ml0gJiYgIW1bMV1bMF0gJiYgIW1bMV1bMV0gJiYgIW1bMV1bMl07Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeDUgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBib29sMngyIG07Ci0gICAgICAgICAgICBtWzBdID0gYm9vbDIodHJ1ZSwgZmFsc2Up
OwotICAgICAgICAgICAgbVsxXSA9IGJvb2wyKHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIHJl
dHVybiBtWzBdWzBdICYmICFtWzBdWzFdICYmIG1bMV1bMF0gJiYgIW1bMV1bMV07Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFu
eSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICFhbnkobSk7Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeEFueTIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2Up
OwotICAgICAgICAgICAgcmV0dXJuIGFueShtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4QWxsID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAg
Ym9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gIWFsbChtKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsK
LQotd2hsc2xUZXN0cy5ib29sTWF0cml4QWxsMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9
IGJvb2wyeDIodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
KG0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9ib29scy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMWM5
MmVmNDhiZDcwM2EyMjRkNWFmY2M2OTQ3YzczN2I3NmI0YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIGJvb2xl
YW5NYXRoCi1QQVNTIGlkZW50aXR5Qm9vbAotUEFTUyBsaXRlcmFsQm9vbAotUEFTUyBvcGVyYXRv
ckJvb2wKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWUzMjRhZTM2MzRkYWZiNGIzZTZhZTk1NzYxZGJlMDBjOGI0M2QzYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYm9vbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkJvb2xzLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJvb2xlYW5NYXRoID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZSAmJiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlICYmIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIGJvb2wgZm9vMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZSAmJiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZSAmJiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBib29s
IGZvbzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSB8fCB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlIHx8IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGJvb2wgZm9vOCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCBmYWxz
ZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgZmFsc2UpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwg
ZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vNCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCB0cnVlKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzciLCBbXSks
IHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vOCIsIFtdKSwgZmFsc2UpOwotfQotCi0KLXdobHNsVGVzdHMuaWRlbnRpdHlCb29sID0g
YXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1
cm4geDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSks
IGZhbHNlKTsKLX0KLQotd2hsc2xUZXN0cy5saXRlcmFsQm9vbCA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9ICJib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0iOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVl
KTsKLX0KLQotd2hsc2xUZXN0cy5vcGVyYXRvckJvb2wgPSBhc3luYyAoKSA9PgotewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGJvb2xGcm9tVWludEZhbHNlKCkgeyByZXR1cm4g
Ym9vbCh1aW50KDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tVWludFRydWUoKSB7IHJldHVy
biBib29sKHVpbnQoMSkpOyB9Ci0KLSAgICAgICAgYm9vbCBib29sRnJvbUludEZhbHNlKCkgeyBy
ZXR1cm4gYm9vbChpbnQoMCkpOyB9Ci0gICAgICAgIGJvb2wgYm9vbEZyb21JbnRUcnVlKCkgeyBy
ZXR1cm4gYm9vbChpbnQoMSkpOyB9Ci0KLSAgICAgICAgYm9vbCBib29sRnJvbUZsb2F0RmFsc2Uo
KSB7IHJldHVybiBib29sKGZsb2F0KDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tRmxvYXRU
cnVlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgxKSk7IH0KLSAgICAgICAgYm9vbCBib29sRnJvbUZs
b2F0TmFOKGZsb2F0IGFyZykgeyByZXR1cm4gYm9vbChhcmcpOyB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiYm9vbEZyb21VaW50
RmFsc2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tVWludFRydWUiLCBbXSksIHRydWUpOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUludEZh
bHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJib29sRnJvbUludFRydWUiLCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUZsb2F0RmFs
c2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgImJvb2xGcm9tRmxvYXRUcnVlIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tRmxvYXROYU4i
LCBbbWFrZUZsb2F0KHByb2dyYW0sIE5hTildKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBmbG9hdDMgeDsKLSAgICAgICAgICAgICAgICBib29sIHIgPSBib29sKHgp
OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBmbG9hdDN4MyB4OwotICAgICAgICAgICAgICAgIGJvb2wgciA9IGJv
b2woeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50LWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjA1MTMyYTBjOTA2OWQwZjI4YjYwZjcwN2RiNjNkNTkwODFmZmRlOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uLCBjb25zdGFudCBmbG9hdFtd
IHRoZUJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZs
b2F0NCh0aGVCdWZmZXJbMF0sIHRoZUJ1ZmZlclswXSwgdGhlQnVmZmVyWzBdLCAxLjApOwotfQot
YDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZl
cnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2
ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3Rh
dGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBo
YUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
U3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwg
d3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3No
YWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQx
ID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ig
PSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0t
YnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzld
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsK
LQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMy
QXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
cmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7
Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcg
PSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3Vw
QmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29u
c3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGlu
Z3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQg
PSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRv
ciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4g
PSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAg
Y29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3
KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsK
LSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJl
VmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3Rv
cmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1l
bnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2Rl
ciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1
ZmZlcjFdLCBbMCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNm
NzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2J1ZmZlci1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXIt
bGVuZ3RoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MzFkOGU5MWUzMjkz
YTZmNTNkNWQ5OGJhNzZlYTI3MzM0YTUyNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGgu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
W251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2Ug
dWludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0
Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclswXSA9IGJ1ZmZlci5sZW5ndGg7Ci19Ci1gOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21w
dXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBVaW50MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDEzMzc7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3Np
emUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyVWludDMyQXJyYXkgPSBuZXcgVWludDMyQXJy
YXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlclVpbnQzMkFycmF5WzBdID0gMDsKLSAg
ICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09Q
WV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJp
bmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRH
cm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJl
c3VsdHNCdWZmZXIsIDAsIDEgKiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCk7Ci0gICAg
Y29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFz
cygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUp
OwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAg
ICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29k
ZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVy
XSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVy
Lm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdFVpbnQzMkFycmF5ID0gbmV3IFVpbnQz
MkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdFVpbnQzMkFycmF5WzBd
ID09IDEzMzcpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVy
dGV4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRl
eC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQx
NmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVy
dGV4LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTE3ZDZlMDE0ZTI4MzVhYzUwOWI0ZmQ3Mjc5MWI3
MDQ1Zjg4MWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleFNoYWRlcihjb25zdGFudCBmbG9hdDRbXSBidWZmZXIgOiByZWdpc3RlcihiMCksIHVpbnQg
aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIGJ1ZmZlcltpZF07
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLjAsIDEuMCwg
MS4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IFtdfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVu
aWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3Vw
TGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZl
VG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0
YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gNCAqIDQgKiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsK
LSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlb
OF0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAg
IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEy
XSA9IDAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVy
QmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxOTc4MDc5MmMzMzdhODUxN2EwMzJjNGQzMzRhZTZjMDM1
ZGY4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpblZlY3RvckdldHRlcnMKLVBB
U1MgYnVpbHRpblZlY3RvclNldHRlcnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
YnVpbHRpbi12ZWN0b3JzLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQw
YzBmMmFkZjQyNzI5MWM0MWMxYWRiZmViYjYxOGIxNGIwNzA1ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVp
bHRpbi12ZWN0b3JzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9IHsKLSAgICAidWludCI6IGNhbGxVaW50
RnVuY3Rpb24sCi0gICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxs
RmxvYXRGdW5jdGlvbgotfTsKLWNvbnN0IHR5cGVOYW1lcyA9IFsgInVpbnQiLCAiaW50IiwgImZs
b2F0IiBdOwotY29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQgXTsKLWNvbnN0IGVsZW1lbnRzID0gWyAi
eCIsICJ5IiwgInoiLCAidyIgXTsKLWNvbnN0IGluaXRpYWxpemVyTGlzdCA9IFsgMSwgMiwgMywg
NCBdOwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JHZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsK
LQotICAgIGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBzcmMgPSAiIjsKLSAgICBmb3IgKGxldCB0
eXBlTmFtZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAgZm9yIChsZXQgc2l6ZSBvZiBzaXplcykg
ewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50
c1tpXX1gOwotICAgICAgICAgICAgICAgIHNyYyArPSBgJHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5h
bWV9KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAke3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlwZU5hbWV9JHtzaXplfSgke2luaXRpYWxp
emVyTGlzdC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIpfSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHguJHtlbGVtZW50c1tpXX07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBgOwotICAgICAgICAgICAgICAgIHRlc3RzLnB1
c2goeyB0eXBlOiB0eXBlTmFtZSwgbmFtZTogZnVuY3Rpb25OYW1lLCBleHBlY3RhdGlvbjogaW5p
dGlhbGl6ZXJMaXN0W2ldIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgbGV0IHByb2dyYW0gPSBzcmM7Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAg
ICAgICBjb25zdCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2hlY2tGdW5jKHByb2dyYW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0
LmV4cGVjdGF0aW9uKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JTZXR0
ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgdGVzdHMgPSBbXTsKLSAgICBsZXQgc3JjID0g
IiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2YgdHlwZU5hbWVzKSB7Ci0gICAgICAgIGZvciAo
bGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5h
bWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlw
ZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1l
fSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguJHtlbGVtZW50c1tpXX0gPSAzNDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC4ke2VsZW1lbnRzW2ldfTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGA7Ci0gICAgICAgICAg
ICAgICAgdGVzdHMucHVzaCh7IHR5cGU6IHR5cGVOYW1lLCBuYW1lOiBmdW5jdGlvbk5hbWUsIGV4
cGVjdGF0aW9uOiAzNCB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAg
ICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0ZXN0LnR5cGVdOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFtLCB0ZXN0Lm5hbWUsIFtdKSwgdGVzdC5l
eHBlY3RhdGlvbik7Ci0gICAgfQotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRp
bi12ZWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGlu
LXZlY3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI0
OTFmOWM1YTlkNDFkZmFmZjAzNjBhMWFmMDA1YzRkOWZmODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWls
dGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0K
LVBBU1MgYnVpbHRpblZlY3RvckluZGV4U2V0dGVycwotUEFTUyBidWlsdGluVmVjdG9ycwotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWM2MTk5YTcwNmE4YmFmOGQ2NGNmMWVlZTg5ZjRlNmIy
NjUyMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTkxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9
IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24sCi0gICAgImludCI6IGNhbGxJbnRGdW5j
dGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLWNvbnN0IHR5cGVOYW1l
cyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwotY29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQg
XTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5IiwgInoiLCAidyIgXTsKLWNvbnN0IGluaXRp
YWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JJ
bmRleFNldHRlcnMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCB0ZXN0cyA9IFtdOwotICAgIGxl
dCBzcmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFtZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAg
ICAgZm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBg
JHt0eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1gOwotICAgICAgICAgICAgICAgIHNyYyAr
PSBgJHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7
dHlwZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlzdC5zbGljZSgwLCBzaXplKS5qb2luKCIs
ICIpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeFske2l9XSA9IDM0OwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4WyR7aX1dOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYDsKLSAgICAgICAgICAgICAgICB0ZXN0
cy5wdXNoKHsgdHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1bmN0aW9uTmFtZSwgZXhwZWN0YXRpb246
IDM0IH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IHByb2dy
YW0gPSBzcmM7Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBjb25zdCBj
aGVja0Z1bmMgPSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2hlY2tGdW5jKHByb2dyYW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9u
KTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JzID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsK
LSAgICAgICAgfQotICAgICAgICBpbnQgZm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICBpbnQzIGIgPSBpbnQzKGEsIDUpOwotICAg
ICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnQzIGEgPSBpbnQzKDMsIDQsIDUpOwotICAgICAgICAgICAg
aW50NCBiID0gaW50NCg2LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9
Ci0gICAgICAgIGludCBmb280KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50MiBhID0gaW50
MigzLCA0KTsKLSAgICAgICAgICAgIGludDIgYiA9IGludDIoNSwgNik7Ci0gICAgICAgICAgICBp
bnQ0IGMgPSBpbnQ0KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0K
LSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50NCBhID0gaW50
NCgzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIGludDIgYiA9IGludDIoNCwgNSk7Ci0gICAgICAg
ICAgICBpbnQ0IGMgPSBpbnQ0KDMsIGIsIDYpOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09
IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGludDIgYSA9IGludDIoNCwgNSk7Ci0gICAgICAgICAgICBpbnQzIGIgPSBpbnQzKDMsIGEp
OwotICAgICAgICAgICAgaW50MyBjID0gaW50MygzLCA0LCA2KTsKLSAgICAgICAgICAgIHJldHVy
biBhbGwoYiA9PSBjKTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZvb3UoKQotICAgICAgICB7
Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywgNCk7Ci0gICAgICAgICAgICByZXR1cm4g
YVswXTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZvb3UyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwotICAgICAgICAgICAgdWludDMgYiA9IHVpbnQz
KGEsIDUpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAgdWlu
dCBmb291MygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQzIGEgPSB1aW50MygzLCA0LCA1
KTsKLSAgICAgICAgICAgIHVpbnQ0IGIgPSB1aW50NCg2LCBhKTsKLSAgICAgICAgICAgIHJldHVy
biBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vdTQoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB1aW50MiBhID0gdWludDIoMywgNCk7Ci0gICAgICAgICAgICB1aW50MiBiID0gdWlu
dDIoNSwgNik7Ci0gICAgICAgICAgICB1aW50NCBjID0gdWludDQoYSwgYik7Ci0gICAgICAgICAg
ICByZXR1cm4gY1syXTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvb3U1KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdWludDQgYSA9IHVpbnQ0KDMsIDQsIDUsIDYpOwotICAgICAgICAgICAg
dWludDIgYiA9IHVpbnQyKDQsIDUpOwotICAgICAgICAgICAgdWludDQgYyA9IHVpbnQ0KDMsIGIs
IDYpOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAg
IGJvb2wgZm9vdTYoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoNCwg
NSk7Ci0gICAgICAgICAgICB1aW50MyBiID0gdWludDMoMywgYSk7Ci0gICAgICAgICAgICB1aW50
MyBjID0gdWludDMoMywgNCwgNik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAg
ICAgfQotICAgICAgICBmbG9hdCBmb29mMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0
MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAgICAgICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1
Lik7Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBm
b29mMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MyBhID0gZmxvYXQzKDMuLCA0Liwg
NS4pOwotICAgICAgICAgICAgZmxvYXQ0IGIgPSBmbG9hdDQoNi4sIGEpOwotICAgICAgICAgICAg
cmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZjQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwotICAgICAgICAgICAgZmxv
YXQyIGIgPSBmbG9hdDIoNS4sIDYuKTsKLSAgICAgICAgICAgIGZsb2F0NCBjID0gZmxvYXQ0KGEs
IGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBm
b29mNSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NCBhID0gZmxvYXQ0KDMuLCA0Liwg
NS4sIDYuKTsKLSAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDQuLCA1Lik7Ci0gICAgICAg
ICAgICBmbG9hdDQgYyA9IGZsb2F0NCgzLiwgYiwgNi4pOwotICAgICAgICAgICAgcmV0dXJuIGFs
bChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vZjYoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0Mig0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQz
IGIgPSBmbG9hdDMoMy4sIGEpOwotICAgICAgICAgICAgZmxvYXQzIGMgPSBmbG9hdDMoMy4sIDQu
LCA2Lik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28yIiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBbXSksIDUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb282Iiwg
W10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb291IiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UyIiwgW10pLCA0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UzIiwgW10pLCAzKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U0IiwgW10pLCA1
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZv
b3U1IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgImZvb3U2IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZiIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjIiLCBbXSksIDQp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZv
b2YzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICJmb29mNCIsIFtdKSwgNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNiIsIFtdKSwgZmFsc2Up
OwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDIyNDc4ZjczYzZmNTRlMTU4NTVmOGYwZjI3Y2FlNzBlMjNkNjQxZTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotCi1QQVNTIGNhc3RzCi1QQVNTIHNlbGZDYXN0cwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9jYXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWY1YzhiZDY5MGU4
ZDRmYmEzNWE0YTMxYTg3YzY3YmQxNzYwNGYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5CYWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
LmNhc3RzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3Ry
dWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBzdHJ1Y3Qg
QmFyIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAgICB9Ci0gICAgICAgIG9wZXJhdG9yIEJh
cihGb28gZm9vKSB7Ci0gICAgICAgICAgICBCYXIgYjsKLSAgICAgICAgICAgIGIueSA9IGZvby54
ICsgNzsKLSAgICAgICAgICAgIHJldHVybiBiOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXoo
aW50IHopIHsKLSAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICBmb28ueCA9IHo7Ci0g
ICAgICAgICAgICBCYXIgYiA9IEJhcihmb28pOwotICAgICAgICAgICAgcmV0dXJuIGIueTsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImJheiIsIFttYWtlSW50KDYpXSksIDEzKTsKLX0KLQotd2hsc2xUZXN0cy5zZWxm
Q2FzdHMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1
Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9vLnggPSAy
MTsKLSAgICAgICAgICAgIEZvbyBiYXIgPSBGb28oZm9vKTsKLSAgICAgICAgICAgIGJhci54ID0g
NDI7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLnggKyBiYXIueDsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdKSwgMjEgKyA0Mik7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jaGVja2VyLXNo
b3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJl
YWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRl
LXZhcmlhYmxlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBB
U1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5
cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFy
aWFibGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOGY2YTc1MmI2N2Iw
ZTc2MGJjNWUyMzI0YjNjZGFiZDhiOTZmMjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxk
LXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsODAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6
IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewot
ICAgIGZsb2F0NCB2ZWM7Ci0gICAgdmVjWzBdICs9IDQyLjA7Ci0gICAgYnVmZmVyW3VpbnQodGhy
ZWFkSUQueCldID0gdmVjWzBdOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAg
IGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFy
cmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZm
ZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAwOwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAg
Y29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihy
ZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1
ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIu
Y29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0g
ICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRl
UGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxp
bmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVm
ZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMy
QXJyYXlbMF0gPT0gNDIpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRl
dmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIp
OwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jbGFt
cC1zdGRsaWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0
ZGxpYi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTRlNzY5
MWY4NTQ2MTJhZTE2YjE1ODExMjY3MWZmZjhkOWU5ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0
ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyB2
ZWN0b3JDbGFtcAotUEFTUyBtYXRyaXhDbGFtcAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y2xhbXAtc3RkbGliLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZjM0NmIw
MjU3MDVhYTgxNWI5ODc0NjJkMWYyMWQ5YjNlOWUwMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0
ZGxpYi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5DbGFtcC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNv
bnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMudmVjdG9yQ2xhbXAgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKGZsb2F0IGEs
IGZsb2F0IGIpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4OwotICAgICAgICAgICAgeFswXSA9IGE7
Ci0gICAgICAgICAgICB4WzFdID0gYjsKLSAgICAgICAgICAgIGZsb2F0MiBib3R0b20gPSBmbG9h
dDIoMSwgNSk7Ci0gICAgICAgICAgICBmbG9hdDIgdG9wID0gZmxvYXQyKDEwLCA3KTsKLSAgICAg
ICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRvcCk7Ci0gICAgICAgICAgICByZXR1cm4geC54
IC8geC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3
YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDEyKSwgbWFr
ZUZsb2F0KDIwKV0pLCAxMCAvIDcsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDgpLCBt
YWtlRmxvYXQoNildKSwgOCAvIDYsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KC0xMCks
IG1ha2VGbG9hdCg2KV0pLCAxIC8gNiwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eENsYW1wID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZs
b2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKSB7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MiB4OwotICAgICAgICAgICAgeFswXSA9IGZsb2F0MihhLCBiKTsKLSAgICAgICAg
ICAgIHhbMV0gPSBmbG9hdDIoYywgZCk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIGJvdHRvbSA9
IGZsb2F0MngyKGZsb2F0MigxLCAyKSwgZmxvYXQyKDMsIDQpKTsKLSAgICAgICAgICAgIGZsb2F0
MngyIHRvcCA9IGZsb2F0MngyKGZsb2F0MigxMCwgMTEpLCBmbG9hdDIoMTIsIDEzKSk7Ci0KLSAg
ICAgICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRvcCk7Ci0KLSAgICAgICAgICAgIHJldHVy
biB4WzBdWzBdIC8gMSArIHhbMF1bMV0gLyAyICsgeFsxXVswXSAvIDMgKyB4WzFdWzFdIC8gNDsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdCgyKSwgbWFrZUZsb2F0KC0x
KSwgbWFrZUZsb2F0KDQpLCBtYWtlRmxvYXQoMTApXSksIDIvMSArIDIvMiArIDQvMyArIDEwLzQs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDEwMCksIG1ha2VGbG9hdCgxMDApLCBtYWtl
RmxvYXQoMTAwKSwgbWFrZUZsb2F0KDEwMCldKSwgMTAvMSArIDExLzIgKyAxMi8zICsgMTMvNCwg
ZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxvYXQoLTEwMCksIG1ha2VGbG9hdCgtMTAwKSwgbWFr
ZUZsb2F0KC0xMDApLCBtYWtlRmxvYXQoLTEwMCldKSwgMS8xICsgMi8yICsgMy8zICsgNC80LCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdChOYU4pLCBtYWtlRmxvYXQoTmFOKSwgbWFrZUZs
b2F0KE5hTiksIG1ha2VGbG9hdChOYU4pXSksIDEvMSArIDIvMiArIDMvMyArIDQvNCwgZXBzaWxv
bik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkzZTg4YTZkY2VhOTc1NWEwOTlj
Y2M5NmQ1NjAxMDFlZmJiMWYxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNvbW1lbnRQYXJz
aW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21tZW50LXBhcnNp
bmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiZTQzMGJiMTc5ODFhOTA2YzBjMmM1ZGJk
Nzc2NmQ0NDdkNTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tbWVudC1wYXJzaW5nLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5jb21tZW50UGFyc2luZyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAq
LwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVl
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAvKiB0aGlzIGNv
bW1lbnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9v
KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2NvbXB1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
bXB1dGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2Ew
ZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRl
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvY29tcHV0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTM4
MWY4NDAxODhhZDAyZTU5YzBmOTExMGVjM2UxZDdmZjJmZTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21w
dXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9
IGAKLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2
aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9E
aXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVy
W3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3Rh
Z2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9
IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsK
LQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1
ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3Owot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7
YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIg
PSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rl
ci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsK
LSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1
dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBl
bGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAp
OwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsKLSAgICBjb21wdXRl
UGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5k
RW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNC
dWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0
MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAot
ICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0
c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0g
PT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJy
YXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjI0YmM3NzZjMGNiZmZmOGJmYmNiMWE3
OWU3NGMyY2VlMWIxM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvcHktZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgY29weUFycmF5Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY29weS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWIzMmIwMTUyY2I2
NWU4Y2QwNGVkMGIzMGE0MDI2ZmRiYzcyOThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMu
Y29weUFycmF5ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludFsxMF0geHM7Ci0gICAgICAgICAg
ICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICB4
c1tpXSA9IGludChpKSArIDE7Ci0gICAgICAgICAgICBpbnRbMTBdIHlzID0geHM7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAg
ICB4c1tpXSA9IDA7Ci0gICAgICAgICAgICBpbnQgc3VtID0gMDsKLSAgICAgICAgICAgIGZvciAo
dWludCBpID0gMDsgaSA8IHlzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIHN1bSA9IHN1
bSArIHlzW2ldOwotICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
KSwgNTUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRl
cmluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDMzZTZj
YTY2MmU0NTAzOWI3YWRlMjg5OWU1ZGI0NTgzZGQ5NmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJl
bmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
Ci1QQVNTIGNhbGxBcmd1bWVudHNBcmVDb3BpZWRJbW1lZGlhdGVseUFmdGVyRXZhbHVhdGlvbgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJp
bmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTljOTZjMDVmNTRlNzA5MTZjZTdh
NjU4M2U5Njk4NTc5MjI2ZjEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5EZXJlZmVyZW5jZSBvcmRlcmluZy48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5jYWxsQXJndW1lbnRzQXJlQ29waWVkSW1tZWRpYXRlbHlBZnRl
ckV2YWx1YXRpb24gPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcig1KSArICpiYXIo
Nyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoaW50IHZhbHVlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IHZhbHVlOwotICAgICAgICAgICAgcmV0dXJuICZ4
OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEyKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5
cGUtY2hlY2stZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNl
N2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVy
ZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXItc2hvdWxk
LXR5cGUtY2hlY2suaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJhNzEzY2I0
MjNjNzk0MzVmYzNlYWNmZDhiMzdjYWJmMDEwZDhiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVu
Y2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTM4
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhP
dXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHIyID0gJnNoYWRlOwotICAgICpwdHIy
ID0gc2hhZGU7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQu
c2hhZGUgPSAqcHRyMjsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQg
MCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsK
LQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRl
eFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9
IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBj
b25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlu
cHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1j
aGVja2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNl
LXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSAr
MCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RldmljZS1wcm9w
ZXItdHlwZS1jaGVja2VyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXBy
b3Blci10eXBlLWNoZWNrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1
MWRiODU2MjQ2MzhhNjU1ODg5NDkwYTRhY2I0NzNhZjUzNjRkNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2
aWNlLXByb3Blci10eXBlLWNoZWNrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFBvaW50IHsKLSAgICBmbG9hdCB4OwotICAg
IGZsb2F0IHk7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1
dGVTaGFkZXIoZGV2aWNlIFBvaW50W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhy
ZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQgeCA9IGJ1ZmZlclswXS54
OwotICAgIGZsb2F0IHkgPSBidWZmZXJbMF0ueTsKLSAgICB4ICs9IDEuMDsKLSAgICB5ICs9IDEu
MDsKLSAgICBidWZmZXJbMF0ueCA9IHg7Ci0gICAgYnVmZmVyWzBdLnkgPSB5OwotfQotYDsKLQot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29t
cHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogMjsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
U1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSA0Mi4w
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDQzLjA7Ci0gICAgYnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRp
bmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBC
aW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5n
czogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5k
RW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBz
aXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
bkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2Nv
bW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0
c0Zsb2F0MzJBcnJheVswXSA9PSA0My4wCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlb
MV0gPT0gNDQuMCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxl
LWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13
aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGIxMjlmNDk5YWI3ODE3YWExMmIxZjc5Y2I0ZDA5MjUwNjZmODFjOTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1
dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3Vs
dDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgZG8gewotICAgICAgICBpZiAoYikgewotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZh
bHNlKSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hh
ZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBm
cmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtz
aGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25z
dCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0
MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9
IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAo
KTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVy
QmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRl
eEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUtZXhw
ZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1
ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1j
b250aW51ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVh
cmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtY29udGludWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRmNjc3YTg5
NjI3MWQ0MDNmODMyNzViMmZmYjExOTRjMWIwY2FmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1jb250aW51ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRl
eCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0g
ICAgYm9vbCBiID0gdHJ1ZTsKLSAgICB1aW50IGkgPSAwOwotICAgIGRvIHsKLSAgICAgICAgaWYg
KGIpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0g
MC4wOwotICAgIH0gd2hpbGUgKChpID0gaSArIDEsIHNoYWRlID0gc2hhZGUgKyAwLjEsIGkgPCAx
MCkpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRl
ID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJh
Z21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVy
dGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFk
ZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hh
ZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3Qg
YXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1
dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVy
aXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0
LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
MC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAw
LjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7
Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25z
dCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAg
IGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJp
bmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRH
cm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3
YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAg
Y29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5j
cmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzog
MCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVu
dDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFy
Iiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhT
dGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVy
UGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhC
dWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVy
ID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEz
M2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5Yzg5N2E3MGUxYjg0NDFkMTg5YWUwNWM1Y2I1N2U2Yjk3MDQ3YTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2RvLXdoaWxlLWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0
ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCks
IGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQot
ICAgIGRvIHsKLSAgICAgICAgc2hhZGUgPSAxLjA7Ci0gICAgfSB3aGlsZShmYWxzZSk7Ci0KLSAg
ICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsK
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJu
IGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAg
IGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZs
b2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlv
bjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVz
ID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6
IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1
dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0K
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRp
bmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
PSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4
U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3Rh
dGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNv
dW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJU
RVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
OF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEy
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNv
bnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNv
dXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJp
bmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0g
ICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwg
YmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNv
bnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVz
Y3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7
Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1
bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBh
OiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRU
ZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9w
OiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0
dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNz
RW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3Jp
cHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBb
MF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5k
RW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAg
ICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRy
YXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4
M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5n
LWVudW0uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmct
ZW51bS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTZjYTZlYjUyYjQ2ODQ1
OGRjZmYxNDgzNmVmOWVkYWMzMzRjNGI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBhcnNp
bmctZW51bS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291
cmNlID0gYAotCi1lbnVtIERvbnRDcmFzaCB7Ci0gICAgVmFsdWUKLX0KLQotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDog
YXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0K
LWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0
aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlk
ZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczog
aW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGlu
Z3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIx
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBb
MCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2Mw
ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI1N2NiMjczMTIzN2U1ZmY1MjIzODMwZTU5MjkxZmZjY2UwNWE1NGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvdC1leHByZXNzaW9ucy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0K
LXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0
OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNo
YWRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9Owot
ICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZv
cm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRy
aWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0
cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAg
ICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2
aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRH
cm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBm
cmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xv
clN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
dmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9
IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJl
c291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1
ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwot
ICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0g
e2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJp
bmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0
IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdz
OiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVh
dGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0g
Y2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3Ig
PSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0g
Y29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmlldygp
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0g
ICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZp
ZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3Jl
IiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9
IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50
cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIg
PSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIu
ZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7
Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rv
dWJsZS1ub3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODZm
NWExNTA1N2FlNDBmYTNjODYwZjk1ZTA1MjI0ZDcyYTBiM2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb3Vi
bGUtbm90LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNT
IGRvdWJsZU5vdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG91Ymxl
LW5vdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM3Zjc1NjI1NGRiZmI4MWQ4MDE2N2ExNDE2OWQz
N2E0NjliMzliNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5
aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmRvdWJsZU5vdCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKGJv
b2wgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEheDsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSksIGZhbHNl
KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5v
dC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3Rv
cnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIw
ZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUt
dHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUtY3Rv
cnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxk
LW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1NDJhNjEyYjZlMTE0Zjk0OWY0ZmM1Mjg3ZjFhZTAxNDhjMDNlNGE4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9y
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0g
YAotc3RydWN0IFhZWiB7Ci0gICAgaW50IHg7Ci0gICAgaW50IHk7Ci0gICAgaW50IHo7Ci19Ci0K
LXR5cGVkZWYgWFlaMSA9IFhZWjsKLXR5cGVkZWYgWFlaMiA9IFhZWjsKLXR5cGVkZWYgWFlaMyA9
IFhZWjsKLQotW251bXRocmVhZHMoMiwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRl
cihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6
IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpbnQgdmFsdWU7Ci0gICAgZmxvYXQgdmFsdWUy
OwotICAgIGludFsxMF0gdmFsdWUzOwotCi0gICAgdGhyZWFkIGludCogeCA9ICZ2YWx1ZTsKLSAg
ICB0aHJlYWQgaW50KiB5ID0gJnZhbHVlOwotICAgIHRocmVhZCBmbG9hdCogZjEgPSAmdmFsdWUy
OwotICAgIHRocmVhZCBmbG9hdCogZjIgPSAmdmFsdWUyOwotICAgIFhZWjEgYTsKLSAgICBYWVoy
IGI7Ci0gICAgWFlaMyBjOwotICAgIHRocmVhZCBpbnRbXSBpbnRBcnJheVJlZjEgPSBAdmFsdWUz
OwotICAgIHRocmVhZCBpbnRbXSBpbnRBcnJheVJlZjIgPSBAdmFsdWUzOwotICAgIGlmICgqeCA9
PSAqeSAmJiB4ID09IHkpIHsKLSAgICAgICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVm
ZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotICAgIH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIi
fTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7
YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7
Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRl
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAg
YnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJC
aW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdy
b3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAg
Y29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmlu
ZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwg
MCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogOCk7Ci0gICAgY29uc3QgY29tcHV0
ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFz
c0VuY29kZXIuZGlzcGF0Y2goMiwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBj
b25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3lu
YygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJl
c3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgot
ICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0
c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10g
PT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYg
cmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJy
YXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAg
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc4NDYwYzY2ZDg4YTI2YzkyMGU3ZjYyZGY1ZmU2NzEx
M2IyM2EwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBkdXBsaWNhdGVGdW5jdGlvbnMKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU2ZjZkOGU0Y2NkNmY1NWM4MjVmZmI5OTRkMDIzMmJlNWFhN2YzOGYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2R1cGxpY2F0ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5kdXBsaWNhdGVGdW5jdGlvbnMg
PSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28o
KSB7IH0KLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIHZvaWQgZm9vKGludCB4KSB7IH0KLSAgICAgICAgdHlwZWRlZiBBID0g
aW50OwotICAgICAgICB2b2lkIGZvbyhBIHgpIHsgfQotICAgIGApOwotCi0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGJhcigpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geDsK
LSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGJhcigpOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYmFyKDMpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwg
Myk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3ImW10odGhy
ZWFkIGludFtdIGEsIHVpbnQgYikgewotICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIH0K
LSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHVpbnQgb3BlcmF0b3Iu
bGVuZ3RoKHRocmVhZCBpbnRbXSBhKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDsKLSAgICAgICAg
fQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KHRocmVhZCBpbnRbXSBhLCB0aHJlYWQgaW50W10gYikgewotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3I9PSh0aHJlYWQgaW50KiBhLCB0aHJlYWQgaW50KiBiKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIGApOwotfTsKLQotcnVuVGVzdHMo
d2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYjBkN2FkNGIyODg0NmU1
OTMxZGVjZjE4YTkzN2I5OTJmMDhjMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9p
bnRlci11c2FnZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQot
UEFTUyBub1BvaW50ZXJzSW5TdHJ1Y3RPckFycmF5Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI3MmQxYzQwNTE1MTY2MzdhNTExMjBjOTdmMDY4Y2Yw
ZDVkZjdhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5jb3JyZWN0IHBvaW50ZXIgdXNhZ2UuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMubm9Qb2ludGVyc0luU3RydWN0T3JBcnJheSA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgUyB7IGludCB4OyB0aHJl
YWQgaW50KiBwdHI7IH0KLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICBgKTsKLQotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqOwotICAgICAg
ICBzdHJ1Y3QgUyB7IGludCB4OyBUIHB0cjsgfQotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IFMgeyB0aHJlYWQg
aW50Kls0Ml0gYXJyOyB9Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgdGhy
ZWFkIGludCpbNDJdIGFycjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHZvaWQgZm9v
KCkgewotICAgICAgICAgICAgVFs0Ml0gYXJyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgaW50Kls0Ml07Ci0g
ICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgdGhy
ZWFkIGludCogcHRyID0gJng7Ci0gICAgICAgICAgICAoJnB0cik7Ci0gICAgICAgIH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBp
bnQqW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSBpbnQ7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRo
cmVhZCBJKltdOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludCo7Ci0gICAgICAgIHR5
cGVkZWYgVCA9IHRocmVhZCBJW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50W107
Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9
Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSB0
aHJlYWQgaW50KjsKLSAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIEkqOwotICAgICAgICB2b2lk
IGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9p
ZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBh
cnIgPSBAeDsKLSAgICAgICAgICAgIChAYXJyKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAg
YXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQg
eDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKLSAgICAgICAgICAgICgmYXJy
KTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
dHlwZWRlZiBJID0gdGhyZWFkIGludFtdOwotICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSSo7
Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUt
Mi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQx
NmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJv
cGVyLXZhcmlhYmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmY5NThhMGNlZmUxNDcxNWYyY2VkMDA2YWRh
NzAzM2JhMTIxMzZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0
aW1lLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1mbG9hdCBhc3NpZ25U
b1B0cih0aHJlYWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gKnB0ciA9
IHZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIHJlYWxQdHIoZmxvYXQgdmFsdWUpCi17Ci0gICAg
cmV0dXJuICZ2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiBmaXJzdFB0cihmbG9hdCB2YWx1ZSkg
ewotICAgIHJldHVybiByZWFsUHRyKHZhbHVlKTsKLX0KLQotdGhyZWFkIGZsb2F0KiBzZWNvbmRQ
dHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gZmlyc3RQdHIodmFsdWUpOwotfQotCi12ZXJ0
ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCks
IGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQot
ICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZpcnN0UHRyKHNoYWRlKTsKLSAgICB0aHJl
YWQgZmxvYXQqIHB0clRvU2hhZGUyID0gc2Vjb25kUHRyKDEuMCk7Ci0KLSAgICBmbG9hdCBkdW1t
eTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15UHRyID0gJmR1bW15OwotCi0gICAgZHVtbXkgPSBh
c3NpZ25Ub1B0cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15MiA9
IHJlYWxQdHIoc2hhZGUpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0KLSAg
ICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFk
ZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1
dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29u
c3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ig
PSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0t
YnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXpl
OiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNl
OiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxp
ZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUt
cHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxp
ZmV0aW1lLTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZh
cmlhYmxlLWxpZmV0aW1lLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4
NjlmYWEwM2U1ZWYyYmM2NzJlMDJiYjQ5MDc5ZDhiNjAyMDc0Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
NjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBm
bG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0
ZSgwKTsKLX0KLQotZmxvYXQgYXNzaWduVG9QdHIodGhyZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZh
bHVlKSB7Ci0gICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0KiByZWFs
UHRyKGZsb2F0IHZhbHVlKQotewotICAgIGZsb2F0IHYgPSB2YWx1ZTsKLSAgICByZXR1cm4gJnY7
Ci19Ci0KLXRocmVhZCBmbG9hdCogZmlyc3RQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4g
cmVhbFB0cih2YWx1ZSk7Ci19Ci0KLXRocmVhZCBmbG9hdCogc2Vjb25kUHRyKGZsb2F0IHZhbHVl
KSB7Ci0gICAgcmV0dXJuIGZpcnN0UHRyKHZhbHVlKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6
IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxv
YXQqIHB0clRvU2hhZGUgPSBmaXJzdFB0cihzaGFkZSk7Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJU
b1NoYWRlMiA9IHNlY29uZFB0cigxLjApOwotCi0gICAgZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFk
IGZsb2F0KiBkdW1teVB0ciA9ICZkdW1teTsKLQotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRy
VG9TaGFkZTIsIDAuMCk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teTIgPSByZWFsUHRyKHNoYWRl
KTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotCi0gICAgcmVzdWx0LnNoYWRl
ID0gKnB0clRvU2hhZGUyOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJM
b2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRy
aWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtz
dHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9
IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBb
e2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7
dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0
aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNh
bXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsK
LQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29u
c3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGlu
Z307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENo
YWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25z
dCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0
dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0
ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBi
OiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBv
dXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBz
dG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtj
b2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNz
RGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZl
cjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2Nv
bW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUt
bGlmZXRpbWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNl
N2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0OTZmN2UzNTE3ZjA0NGM3Yjc0ODY5NWVh
ZTVjMGUzNWMwYTYxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZl
dGltZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNl
ID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRv
UHRyKHRocmVhZCBmbG9hdCogcHRyLCBmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiAqcHRyID0g
dmFsdWU7Ci19Ci0KLXRocmVhZCBmbG9hdCogcmVhbFB0cihmbG9hdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gJnZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIGZpcnN0UHRyKGZsb2F0IHZhbHVlKSB7
Ci0gICAgcmV0dXJuIHJlYWxQdHIodmFsdWUpOwotfQotCi10aHJlYWQgZmxvYXQqIHNlY29uZFB0
cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiBmaXJzdFB0cih2YWx1ZSk7Ci19Ci0KLXZlcnRl
eCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0g
ICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlID0gZmlyc3RQdHIoc2hhZGUpOwotICAgIHRocmVh
ZCBmbG9hdCogcHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIoMS4wKTsKLQotICAgIGZsb2F0IGR1bW15
OwotICAgIHRocmVhZCBmbG9hdCogZHVtbXlQdHIgPSAmZHVtbXk7Ci0KLSAgICBkdW1teSA9IGFz
c2lnblRvUHRyKHB0clRvU2hhZGUyLCAwLjApOwotICAgIGR1bW15ID0gYXNzaWduVG9QdHIocHRy
VG9TaGFkZSwgc2hhZGUpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0KLSAg
ICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFk
ZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBj
b25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFz
dGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0g
ICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQs
IGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1
dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29u
c3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ig
PSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0t
YnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXpl
OiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNl
OiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmUy
MWYyYjAwNmIyMzE3MTZlZmNmMTBkZWYzYjgyYjZmMTQwYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0t
aW50ZWdlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLQotUEFTUyBzaW1wbGVFbnVtRnJvbUludAotUEFTUyBzaW1wbGVFbnVtRnJvbVVpbnQK
LVBBU1Mgd2VpcmRFbnVtRnJvbUludAotUEFTUyB3ZWlyZEVudW1Gcm9tVWludAotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNGE1Y2RjZmVkYjZmYTY4N2E1NmQz
NGEwYjBmYjg4YTJhOTYzODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rv
ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMuc2ltcGxlRW51bUZyb21JbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIEEsCi0gICAgICAgICAgICBC
LAotICAgICAgICAgICAgQwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGZvbyhpbnQgeCkgewot
ICAgICAgICAgICAgcmV0dXJuIGludChGb28oeCkpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg0MildKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAxKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMildKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMjE0NzQ4MzY0Nyld
KSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMuc2lt
cGxlRW51bUZyb21VaW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAgICAgICAgICAgQSwKLSAgICAgICAgICAgIEIsCi0g
ICAgICAgICAgICBDCi0gICAgICAgIH0KLQotICAgICAgICB1aW50IGZvbyh1aW50IHgpIHsKLSAg
ICAgICAgICAgIHJldHVybiB1aW50KEZvbyh4KSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZVVpbnQoMCldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMildKSwgMik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZVVpbnQoNDIpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEwMDAwMDApXSksIDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDQyOTQ5NjcyOTUpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy53ZWlyZEVudW1Gcm9tSW50
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyA6
IGludCB7Ci0gICAgICAgICAgICBBID0gNDIsCi0gICAgICAgICAgICBCID0gLTEwMDAsCi0gICAg
ICAgICAgICBDID0gMTAxMDEwLAotICAgICAgICAgICAgRCA9IDAKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBmb28oaW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vKHgpKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQyKV0pLCA0Mik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KC0xMDAwKV0pLCAtMTAwMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEwMTAxMCldKSwgMTAxMDEwKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoLTEpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMTQ3NDgzNjQ3KV0pLCAwKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
LTIxNDc0ODM2NDgpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy53ZWlyZEVudW1Gcm9tVWludCA9
IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1
aW50IHsKLSAgICAgICAgICAgIEEgPSA0MiwKLSAgICAgICAgICAgIEMgPSAxMDEwMTAsCi0gICAg
ICAgICAgICBEID0gMAotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBmb28odWludCB4KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdWludChGb28oeCkpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMTAxMDEw
KV0pLCAxMDEwMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5NjcyOTUpXSksIDApOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEp
XSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDQxKV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxMDEwMTEpXSksIDApOwot
fTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjhkY2VjMzI5MDVmMGIxY2UxOWY1YjYx
Y2I1NDFiOTJhMDc0YjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0tc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotUEFTUyBlbnVtRHVwbGljYXRlcwot
UEFTUyBkZWZhdWx0RW51bUNvbnN0cnVjdG9yCi1QQVNTIGVudW1BcnJheVJlZkJhc2UKLVBBU1Mg
ZW51bUZsb2F0QmFzZQotUEFTUyBlbnVtUHRyQmFzZQotUEFTUyBlbnVtU3RydWN0QmFzZQotUEFT
UyBlbnVtTm9NZW1iZXJzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnVtLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMt
dGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxZjc4NzNlNzdhMjBl
NDFiMzliNjY3NmJiMDc0YjgyYzM4YzVjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3Rz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5lbnVtRHVwbGljYXRlcyA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICAgICAgZW51bSBGb28gewotICAgICAg
ICAgICAgICAgIFdhciA9IDQyLAotICAgICAgICAgICAgICAgIEZhbWluZSA9IDAsCi0gICAgICAg
ICAgICAgICAgUGVzdGlsZW5jZSA9IDIzLAotICAgICAgICAgICAgICAgIERlYXRoID0gNDIKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmRlZmF1bHRFbnVtQ29u
c3RydWN0b3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
ZW51bSBXZWVrZGF5IHsKLSAgICAgICAgICAgIE1vbmRheSwKLSAgICAgICAgICAgIFR1ZXNkYXks
Ci0gICAgICAgICAgICBXZWRuZXNkYXksCi0gICAgICAgICAgICBUaHVyc2RheSwKLSAgICAgICAg
ICAgIFBpenphZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFdlZWtkYXkgeCA9IFdlZWtkYXkoKTsKLSAgICAgICAgICAgIHJldHVybiA0MjsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLmVudW1BcnJh
eVJlZkJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBlbnVtIEZvbyA6IHRocmVhZCBpbnRbXSB7Ci0gICAgICAgICAgICAgICAg
QmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmVudW1GbG9h
dEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBlbnVtIEZvbyA6IGZsb2F0IHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVB0ckJhc2UgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBl
bnVtIEZvbyA6IHRocmVhZCBpbnQqIHsKLSAgICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVN0cnVjdEJhc2UgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgVGhpbmd5IHsgfQotICAgICAgICAgICAgZW51bSBGb28gOiBUaGluZ3kgewotICAgICAgICAg
ICAgICAgIEJhcgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMu
ZW51bU5vTWVtYmVycyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsgfQotICAgICAgICBgKTsKLX07Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW51bXMtMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQxYWY3Zjk2YzE5YTMwZjM0ZGU5NWQ3MmVmZTQ2MTg2M2Y3ZTZlOTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2VudW1zLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0K
LVBBU1Mgc2ltcGxlRW51bQotUEFTUyBlbnVtV2l0aEV4cGxpY2l0SW50QmFzZQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2VudW1zLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTY0OWRkZjNiYjAwODc5ZTg2M2ZjNTgxMzRkNzAzMjI1M2I1ZTFjYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
ZW51bXMtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzU5ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgV2FyLAotICAgICAgICAgICAg
RmFtaW5lLAotICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgIERlYXRoCi0gICAg
ICAgIH0KLQotICAgICAgICBGb28gX3dhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB3YXIoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gX3dhcigpID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBGb28gX2ZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRmFtaW5l
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gX2ZhbWluZSgpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBGb28gX3Blc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLlBl
c3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHBlc3RpbGVuY2UoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBGb28uUGVzdGlsZW5jZTsK
LSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBkZWF0aCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZGVhdGgoKSA9PSBGb28uRGVhdGg7Ci0gICAg
ICAgIH0KLQotICAgICAgICBib29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfbm90
RXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgIT0g
YjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyRXF1YWwoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gX2VxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gX25vdEVxdWFscyhGb28uV2FyLCBGb28uV2FyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIHRlc3ROb3ROb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpbnQgX2ludFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
bnQoX3dhcigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpbnRXYXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gX2ludFdhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50
IF9pbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9mYW1pbmUo
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50RmFtaW5lKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBf
aW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3Blc3Rp
bGVuY2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50UGVzdGlsZW5jZSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50UGVzdGlsZW5jZSgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaW50IF9pbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
bnQoX2RlYXRoKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGludERlYXRoKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0aCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBpbnRXYXJCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Rm9vKF9pbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50
RmFtaW5lQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50
RmFtaW5lKCkpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludFBl
c3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9p
bnRQZXN0aWxlbmNlKCkpID09IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCBpbnREZWF0aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBG
b28oX2ludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwg
dHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRl
c3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RF
cXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5v
dEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXIiLCBbXSksIDAp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRG
YW1pbmUiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXJCYWNr
d2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAiaW50RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludFBlc3RpbGVuY2VC
YWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy5lbnVtV2l0aEV4cGxpY2l0SW50QmFzZSA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiBpbnQgewotICAgICAgICAgICAgV2Fy
LAotICAgICAgICAgICAgRmFtaW5lLAotICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAg
ICAgIERlYXRoCi0gICAgICAgIH0KLQotICAgICAgICBGb28gX3dhcigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB3YXIo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3dhcigpID09IEZvby5XYXI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBGb28gX2ZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmYW1pbmUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ZhbWluZSgpID09IEZvby5GYW1pbmU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBGb28gX3Blc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHBlc3Rp
bGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBG
b28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfZGVhdGgoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZGVhdGgoKSA9PSBG
b28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIF9lcXVhbHMoRm9vIGEsIEZvbyBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGEgIT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZUVx
dWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLldhciwgRm9v
Lldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyRXF1YWwoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBl
c3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlTm90RXF1YWwoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uV2FyLCBGb28uV2FyKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGls
ZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3ROb3RFcXVhbCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0
aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2ludFdhcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoX3dhcigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpbnRX
YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFdhcigpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaW50IF9pbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50RmFtaW5lKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGludCBfaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50UGVz
dGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50UGVzdGlsZW5jZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGlu
dERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0aCgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRXYXJCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgaW50RmFtaW5lQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIEZvbyhfaW50RmFtaW5lKCkpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vKF9pbnRQZXN0aWxlbmNlKCkpID09IEZvby5QZXN0aWxlbmNlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBpbnREZWF0aEJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGb28oX2ludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0
aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwg
W10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBm
YWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJp
bnRXYXIiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJpbnRGYW1pbmUiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGgiLCBb
XSksIDMpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0
cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ImludFBlc3RpbGVuY2VCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGhCYWNrd2FyZHMiLCBbXSks
IHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYjdmZTVmNGZlNjdmYTBmNTgzODE5YjE2OGUzNjI1MDVkM2E5
YTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi0KLVBBU1MgZmFpbFRyaWNreURvdWJsZVplcm8KLVBBU1Mgc2ltcGxlRGVj
bGFyYXRpb24KLVBBU1MgZW51bVdpdGhVaW50QmFzZQotUEFTUyBlbnVtV2l0aG91dFplcm8KLVBB
U1MgZW51bU5lZ2F0aXZlVWludAotUEFTUyBwYXN0SW50TWF4Ci1QQVNTIGVudW1XaXRoU29tZU1h
bnVhbFZhbHVlcwotUEFTUyBlbnVtU3dpdGNoQnJlYWtFeGhhdXN0aXZlCi1QQVNTIGVudW1Td2l0
Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZhdWx0Ci1QQVNTIGVudW1XaXRoTWFudWFs
VmFsdWVzCi1QQVNTIGVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZQotUEFTUyBjb3B5
Q29uc3RydWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdjZThlZmZhMWIxOThhYjQyM2MxZTZlNDc4OTFkYzJlMDM0NmI2
ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MjIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5FbnVtcy48L3RpdGxlPgot
PHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0
IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5mYWlsVHJpY2t5RG91YmxlWmVybyA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEUgewotICAg
ICAgICAgICAgRiwKLSAgICAgICAgICAgIEcgPSAtMiwKLSAgICAgICAgICAgIEgsCi0gICAgICAg
ICAgICBJIC8vIHNob3VsZCBnZXQgemVybywgYW5kIHRoYXQncyBhIGR1cGUuCi0gICAgICAgIH0K
LSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEUgZSA9IEUuRm9vOwot
ICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVj
a0ZhaWwocHJvZ3JhbSk7Ci19OwotCi13aGxzbFRlc3RzLnNpbXBsZURlY2xhcmF0aW9uID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRSB7Ci0gICAg
ICAgICAgICBGb28sCi0gICAgICAgICAgICBCYXIKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgRSBlID0gRS5Gb287Ci0gICAgICAgICAgICByZXR1
cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51
bVdpdGhVaW50QmFzZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgIEZhbWlu
ZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAgICAgICAgICBEZWF0aAotICAgICAgICB9
Ci0KLSAgICAgICAgRm9vIF93YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9v
LldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgd2FyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIF93YXIoKSA9PSBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9v
IF9mYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkZhbWluZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9mYW1pbmUoKSA9PSBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgRm9v
IF9wZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxl
bmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBwZXN0aWxlbmNlKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNlKCkgPT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBGb28gX2RlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZGVhdGgoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX2RlYXRoKCkgPT0gRm9vLkRlYXRoOwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgX25vdEVxdWFs
cyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICE9IGI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1wbGVFcXVhbCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5XYXIsIEZvby5XYXIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9lcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgdGVzdE5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
X25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCB0ZXN0Tm90Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX25vdEVxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdWludCBfdWludFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50
KF93YXIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IHVpbnRXYXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gX3VpbnRXYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVp
bnQgX3VpbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChfZmFt
aW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCB1aW50RmFtaW5lKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIF91aW50RmFtaW5lKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB1aW50IF91aW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1
aW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCB1aW50UGVzdGls
ZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfdWludFBlc3RpbGVuY2UoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnREZWF0aCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiB1aW50KF9kZWF0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQg
dWludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50RGVhdGgoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludFdhckJhY2t3YXJkcygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgdWludEZhbWluZUJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGb28oX3VpbnRGYW1pbmUoKSkgPT0gRm9vLkZhbWluZTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgdWludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vKF91aW50UGVzdGlsZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5j
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludERlYXRoQmFja3dhcmRzKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfdWludERlYXRoKCkpID09IEZvby5EZWF0aDsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5v
dGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVx
dWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1
YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAidWludFdhciIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RmFtaW5lIiwgW10pLCAxKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRQZXN0aWxlbmNl
IiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJv
Z3JhbSwgInVpbnREZWF0aCIsIFtdKSwgMyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidWludEZh
bWluZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50UGVzdGlsZW5jZUJhY2t3YXJkcyIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1
aW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQotCi13aGxzbFRlc3RzLmVudW1X
aXRob3V0WmVybyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgICAgICBXYXIgPSA3MiwKLSAg
ICAgICAgICAgICAgICBGYW1pbmUgPSA2NCwKLSAgICAgICAgICAgICAgICBQZXN0aWxlbmNlID0g
MjMsCi0gICAgICAgICAgICAgICAgRGVhdGggPSAtNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1OZWdhdGl2ZVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHVp
bnQgewotICAgICAgICAgICAgICAgIFdhciwKLSAgICAgICAgICAgICAgICBGYW1pbmUsCi0gICAg
ICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgICAgICBEZWF0aCA9IC00MgotICAg
ICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMucGFzdEludE1heCA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGVudW0gRm9vIDogaW50IHsKLSAgICAgICAgICAgICAgICBXYXIgPSAyMTQ3NDgzNjQ3LAotICAg
ICAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgICAgICBQZXN0aWxlbmNlID0gMCwKLSAg
ICAgICAgICAgICAgICBEZWF0aAotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdo
bHNsVGVzdHMuZW51bVdpdGhTb21lTWFudWFsVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBXYXIgPSA3MiwK
LSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAwLAotICAgICAg
ICAgICAgRGVhdGgKLSAgICAgICAgfQotICAgICAgICBpbnQgd2FyKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGludChGb28uV2FyKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZmFt
aW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uRmFtaW5lKTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgcGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBpbnQoRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0gICAgICAgIGludCBkZWF0
aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLkRlYXRoKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgIndhciIsIFtdKSwgNzIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIDczKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImRlYXRoIiwgW10p
LCAxKTsKLX07Ci0KLQotd2hsc2xUZXN0cy5lbnVtU3dpdGNoQnJlYWtFeGhhdXN0aXZlID0gYXN5
bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7Ci0gICAg
ICAgICAgICBBLCBCLCBDCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICBzd2l0Y2ggKEZv
byh4KSkgewotICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAgICByZXN1bHQg
Kz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZvby5COgot
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBGb28uQzoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNDk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgMjcpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgx
KV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNDkpOwotfQotCi0KLXdobHNsVGVzdHMuZW51bVN3
aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZlV2l0aERlZmF1bHQgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIEEsIEIs
IEMKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgICAgIHN3aXRjaCAoRm9vKHgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIEZvby5BOgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSAyNzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRm9vLkI6Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IDc2MjQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA0OTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgwKV0pLCAyNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpXSksIDc2MjQpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCgyKV0pLCA0OSk7Ci19Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhNYW51YWxWYWx1ZXMgPSBh
c3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAg
ICAgICAgICAgIFdhciA9IDcyLAotICAgICAgICAgICAgRmFtaW5lID0gMCwKLSAgICAgICAgICAg
IFBlc3RpbGVuY2UgPSAyMywKLSAgICAgICAgICAgIERlYXRoID0gLTQyCi0gICAgICAgIH0KLSAg
ICAgICAgaW50IHdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLldh
cik7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZhbWluZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBpbnQoRm9vLkZhbWluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHBlc3Rp
bGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5QZXN0aWxlbmNl
KTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50KEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDcyKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZmFtaW5lIiwg
W10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAicGVzdGlsZW5jZSIsIFtdKSwgMjMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgLTQyKTsKLX07Ci0KLXdobHNsVGVzdHMu
ZW51bVN3aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZlID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZW51bSBGb28gewotICAgICAg
ICAgICAgICAgIEEsIEIsIEMsIEQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28o
Rm9vIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0g
ICAgICAgICAgICAgICAgc3dpdGNoICh4KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQToK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3OwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEZvby5COgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gNzYyNDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBGb28uQzoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDQ5OwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRl
c3RzLmNvcHlDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgZW51bSBXZWVrZGF5IHsKLSAgICAgICAgICAgIE1vbmRheSwKLSAgICAgICAg
ICAgIFR1ZXNkYXksCi0gICAgICAgICAgICBXZWRuZXNkYXksCi0gICAgICAgICAgICBUaHVyc2Rh
eSwKLSAgICAgICAgICAgIFBpenphZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFdlZWtkYXkgeCA9IFdlZWtkYXkuTW9uZGF5OwotICAgICAg
ICAgICAgV2Vla2RheSB5ID0gV2Vla2RheSh4KTsKLSAgICAgICAgICAgIGZsb2F0NCB6ID0gZmxv
YXQ0KDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgZmxvYXQ0IHcgPSBmbG9hdDQoeik7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBwOwotICAgICAgICAgICAgZmxvYXQyeDIgcSA9IGZsb2F0MngyKHAp
OwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBjMzY2NGM5MDk4OTliNjE4YjBjNGVkMDIyN2RlZGNkNmJkZGUwZWEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLQotUEFTUyBlcXVhbGl0eQotUEFTUyBub3RFcXVhbGl0eQotUEFTUyBlcXVh
bGl0eVR5cGVGYWlsdXJlCi1QQVNTIGVxdWFsc1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZXF1
YWxzV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGxlc3NFcXVhbFdyb25nQXJndW1lbnRMZW5ndGgKLVBB
U1MgbGVzc0VxdWFsV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGxlc3NUaGFuV3JvbmdBcmd1bWVudExl
bmd0aAotUEFTUyBsZXNzVGhhbldyb25nUmV0dXJuVHlwZQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9lcXVhbGl0eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWE3YTI2Yzk4
YjIzYzVhNjM5YWViZDdlNDU2MWU0NTY3M2EyMWYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmVxdWFsaXR5ID0gYXN5bmMgKCkgPT4gewotICAg
IGxldCBwcm9ncmFtID0gImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09IHk7
IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyks
IG1ha2VVaW50KDcpXSksIHRydWUpOwotICAgIHByb2dyYW0gPSAiYm9vbCBmb28oaW50IHgsIGlu
dCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgZmFs
c2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNyldKSwgdHJ1ZSk7Ci0gICAgcHJvZ3JhbSA9ICJi
b29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4geCA9PSB5OyB9IjsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChm
YWxzZSksIG1ha2VCb29sKHRydWUpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJv
b2woZmFsc2UpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0p
LCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci19Ci0K
LXdobHNsVGVzdHMubm90RXF1YWxpdHkgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0g
PSAiYm9vbCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSI7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoNyksIG1ha2VVaW50KDUpXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg3KV0p
LCBmYWxzZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJu
IHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg1KV0pLCB0cnVlKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDcpLCBtYWtlSW50KDcpXSksIGZhbHNlKTsKLSAgICBwcm9ncmFtID0gImJvb2wgZm9vKGJvb2wg
eCwgYm9vbCB5KSB7IHJldHVybiB4ICE9IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0
cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSksIGZhbHNlKTsKLX07Ci0KLXdobHNsVGVzdHMu
ZXF1YWxpdHlUeXBlRmFpbHVyZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
ImJvb2wgZm9vKGludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggPT0geTsgfSIpOwotfTsKLQotd2hs
c2xUZXN0cy5lcXVhbHNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KCkg
eyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGludCkgeyByZXR1cm4gdHJ1ZTsg
fQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVxdWFsc1dyb25nUmV0dXJuVHlwZSA9IGFzeW5j
ICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I9PShGb28sIEZvbykgeyByZXR1
cm4gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc0VxdWFsV3JvbmdBcmd1
bWVudExlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAg
ICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29s
IG9wZXJhdG9yPD0oaW50KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotCi0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oaW50
LCBpbnQsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0
cy5sZXNzRXF1YWxXcm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50
IG9wZXJhdG9yPD0oRm9vLCBGb28pIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotfQotCi13
aGxzbFRlc3RzLmxlc3NUaGFuV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8
KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGludCkgeyByZXR1cm4gdHJ1ZTsg
fQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I8KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc1RoYW5Xcm9uZ1JldHVyblR5cGUgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPChGb28sIEZvbykgeyByZXR1cm4g
NDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0
aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWNjMTE5OGZkMjAyMzZj
ZGQwZDc3ZTdmOTNmNzE0M2ZmOGQxY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZmxvYXRNYXRoCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMDcxN2YwMDQzZGQ4YWJjNDRhYjdhMGZhMTcxMWFjNGRmOTEzZmQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0
Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmZsb2F0TWF0aCA9
IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNDIuNSA9PSA0Mi41OwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGJhcihmbG9hdCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
eDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb282KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGJhcig3LjUpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzkoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQoNy41KTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb28xMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdCg3KTsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZsb2F0IHggPSA3LjU7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQoeCk7Ci0gICAgICAgIH0K
LSAgICAgICAgYm9vbCBkaXYoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMC41IC8g
MiA9PSAwLjI1OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNiIsIFtdKSwgNy41
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJm
b285IiwgW10pLCA3LjUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCA3KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMyIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImRpdiIsIFtdKSwgdHJ1ZSk7
Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIo
aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wZik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICB1aW50IGJhcih1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAg
ICAgICAgIHVpbnQgYmFyKHVpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJhcig0LjBmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTNlMGM2MzFlZTAxOTBk
N2FkZGU3MjFjMmNhNTRkMThmYzk1MDEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5
cGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgZ2V0
dGVyVHlwZQotUEFTUyBzZXR0ZXJUeXBlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2M4M2RiOWIzY2Q4MWRjOGIyNTUwNTNkNGIwMDZmOTk4ZTJlMDhlNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Z2V0dGVyLXNldHRlci10eXBlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmdldHRlclR5cGUgPSBhc3luYyAoKSA9PiB7
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IG9wZXJhdG9yLngodGhyZWFkIGlu
dFtdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1swXTsKLSAgICAgICAg
fQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0b3Iu
eChpbnRbM10gZm9vKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vWzBdOwotICAg
ICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVy
YXRvcltdKHRocmVhZCBpbnRbXSBmb28sIGludCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvb1tpbmRleF07Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgaW50IG9wZXJhdG9yLngoaW50WzNdIGZvbykKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4Owot
ICAgICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvcltdKEZvbyBmb28sIHVpbnQ0IGluZGV4KQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vW2luZGV4LnhdOwotICAgICAgICB9Ci0g
ICAgYCk7IAotfTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJUeXBlID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHRocmVhZCBpbnRbXSBvcGVyYXRvci54PSh0aHJl
YWQgaW50W10gZm9vLCB1aW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287
Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50
WzNdIG9wZXJhdG9yLng9KGludFszXSBmb28sIHVpbnQgeCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvbzsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICB0aHJlYWQgaW50W10gb3BlcmF0b3JbXT0odGhyZWFkIGludFtdIGZvbywgdWlu
dCB4LCB1aW50IHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAg
IH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50WzNdIG9wZXJh
dG9yLng9KGludFszXSBmb28sIHVpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZvbzsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIEZv
byBvcGVyYXRvcltdPShGb28gZm9vLCBmbG9hdDQgeSwgdWludCB6KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IueShGb28gZm9vKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAgICAgICAgRm9vIG9wZXJhdG9yLnk9KEZv
byBmb28sIGludDQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIHJlc3VsdDsKLSAgICAg
ICAgICAgIGZvby54ID0geC54OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fQotICAgIGApOyAKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3
ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2h1Z2UtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ2YzkxNjdm
NGVhY2MxMDM0MjJiNzJkNmI3NmI3ZGJhN2M2MDk2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJh
eS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0g
YAotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFtdIGFycmF5LCBmbG9hdCB2YWx1ZSkgewotICAgIGZv
ciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGFycmF5W2ld
ID0gdmFsdWU7Ci0gICAgfQotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0
MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdFsxMDAwXSBhcnJh
eTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEwMDApCi0gICAgICAgIHJldHVybjsKLSAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJy
YXlbaV0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhcnJheVswXSA9
IDAuMTMzNzsKLSAgICBpZiAoYXJyYXlbMF0gIT0gMC4xMzM3KQotICAgICAgICByZXR1cm47Ci0K
LSAgICB0aHJlYWQgZmxvYXRbXSBhcnJheVB0ciA9IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQdHIu
bGVuZ3RoICE9IDEwMDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbGwoYXJyYXlQdHIsIDAu
MTAxMCk7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXlQdHIubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgaWYgKGFycmF5UHRyW2ldICE9IDAuMTAxMCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKGFycmF5W2ldICE9IDAuMTAxMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBmaWxsKEBhcnJheSwgMC4wMTAxKTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXlQdHJbaV0gIT0gMC4wMTAx
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gMC4wMTAxKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29t
cHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
Q307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXko
YnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAg
YnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
RFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1
bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21t
YW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1
ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3Vs
dHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1h
cCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM5NThhMmMzMzFhMWQ0NzAzYWY3YjhkOWU3OGMxYjA0OWI0NTdjMGMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLQotUEFTUyBpZlN0YXRlbWVudAotUEFTUyBpZkVsc2VTdGF0ZW1lbnQKLVBBU1MgaWZF
bHNlSWZTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZFbHNlU3RhdGVtZW50Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmVhODVhZmQ3N2ZjODBhMjVlOGIzYmZjOTIwOGZjNGU5YzM0NTNmNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvaWYtc3RhdGVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pZlN0YXRlbWVudCA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcp
IHsKLSAgICAgICAgICAgICAgICB5ID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgNik7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQp
XSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg1KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgNik7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcp
XSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg4KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgNik7Ci19Ci0KLXdobHNs
VGVzdHMuaWZFbHNlU3RhdGVtZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHkg
PSA2OwotICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgIHkgPSA4Owot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB5ID0gOTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMyld
KSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDQpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA5KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNild
KSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA5KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSld
KSwgOSk7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZTdGF0ZW1lbnQgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAg
ICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgewotICAg
ICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzKV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgNik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDUpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0pLCA2KTsKLX0KLQotd2hsc2xUZXN0cy5p
ZkVsc2VJZkVsc2VTdGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9
IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgewotICAgICAgICAgICAgICAgIHkgPSA5Owot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB5ID0gMTA7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMp
XSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNCldKSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCAxMCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDYpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg5KV0pLCAxMCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3Jl
bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRl
Y3JlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMTI0
NWM2NTJjYTBiMGYwYmQzZGY2NmYzYTQ0MjIyMDYwNzgzNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3Jl
bWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0KLVBBU1MgaW5jcmVtZW50QW5kRGVjcmVtZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhOTdmNzFiNGNmNGRjMzg3Mjc1YTI5ZGNlM2MxMWY2Mzk4ZTkzMmZlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkNvcHlpbmcuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuaW5jcmVtZW50QW5kRGVjcmVtZW50
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vMSgp
IHsgaW50IHggPSAwOyByZXR1cm4geCsrOyB9Ci0gICAgICAgIGludCBmb28yKCkgeyBpbnQgeCA9
IDA7IHgrKzsgcmV0dXJuIHg7IH0KLSAgICAgICAgaW50IGZvbzMoKSB7IGludCB4ID0gMDsgcmV0
dXJuICsreDsgfQotICAgICAgICBpbnQgZm9vNCgpIHsgaW50IHggPSAwOyArK3g7IHJldHVybiB4
OyB9Ci0gICAgICAgIGludCBmb281KCkgeyBpbnQgeCA9IDA7IHJldHVybiB4LS07IH0KLSAgICAg
ICAgaW50IGZvbzYoKSB7IGludCB4ID0gMDsgeC0tOyByZXR1cm4geDsgfQotICAgICAgICBpbnQg
Zm9vNygpIHsgaW50IHggPSAwOyByZXR1cm4gLS14OyB9Ci0gICAgICAgIGludCBmb284KCkgeyBp
bnQgeCA9IDA7IC0teDsgcmV0dXJuIHg7IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28xIiwgW10pLCAwKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBb
XSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb280IiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzYiLCBbXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNyIsIFtdKSwgLTEpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb284IiwgW10pLCAt
MSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYmI3MzQwYWFjNGZkYjFk
YWQyZWUyMjQ1ZDU1YjBhZWExOWUyMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1zZXR0ZXIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgaW5jcmVt
ZW50U2V0dGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1l
bnQtc2V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LXNldHRl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTQxNDRlM2MzZTY5NjdhNzJj
NmRmZmVhMDBiNTAwNTNhNjY2NjAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuaW5jcmVtZW50U2V0dGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgejsK
LSAgICAgICAgICAgIGludCB3OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAg
ICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9vLnogPSAzOwotICAgICAgICAgICAgZm9v
LncgPSAxOwotICAgICAgICAgICAgaW50IHZhbHVlID0gZm9vLncrKzsKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZSoxMDAgKyBmb28ueioxMCArIGZvby53OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10p
LCAxMDAgKyAzMCArIDIpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4LWdldHRl
ci1zZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2luZGV4LWdl
dHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
ZjUwZTk0MjkxNTk5NjhkZWVkMTQ3YWY3ODc5NDU3YzJjZTMwMzlkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9p
bmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotCi1QQVNTIHBvaW50ZXJJbmRleEdldHRlcgotUEFTUyBwb2ludGVyR2V0dGVyCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5kZXgtZ2V0dGVyLXNldHRlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2YyN2EzM2ViN2M2MjIyMGU4OThlMjZhMWIx
ZTViOWU5MmYxYjQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1l
dGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgot
PHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5wb2ludGVySW5kZXhHZXR0ZXIgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3Jb
XShkZXZpY2UgaW50KiwgdWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW10odGhyZWFkIGludCosIHVp
bnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGludCBvcGVyYXRvcltdKHRocmVhZGdyb3VwIGludCosIHVpbnQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGlu
dCBvcGVyYXRvcltdKGNvbnN0YW50IGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdo
bHNsVGVzdHMucG9pbnRlckdldHRlciA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oZGV2aWNlIGludCop
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3IuZm9vKHRocmVhZCBpbnQqKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyh0
aHJlYWRncm91cCBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1
NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhjb25zdGFudCBpbnQqKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDZlZjA3YTdhYzMwZDE1YjIz
NjI4MTIzNDk2YmZmNzgwZTZhNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBBU1MgaW50Qml0QW5kCi1Q
QVNTIGludEJpdE9yCi1QQVNTIGludEJpdFhvcgotUEFTUyBpbnRCaXROb3QKLVBBU1MgaW50TFNo
aWZ0Ci1QQVNTIGludFJTaGlmdAotUEFTUyBpbnRTaW1wbGVNYXRoCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGM3MDVjYzc1NTk4NjFiZTNmMDM1Mjg3MWEzMDUxNGFhNDE3MjA1ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW50LWJpdC1tYXRoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5pbnRCaXRBbmQgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCBpbnQgYikK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgJiBiOwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoMSksIG1ha2VJbnQoNyldKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZUludCg0
MildKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VJbnQoLTcpXSksIC03KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCks
IG1ha2VJbnQoODU3MzIpXSksIDApOwotfQotCi13aGxzbFRlc3RzLmludEJpdE9yID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgaW50
IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIHwgYjsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1ha2VJ
bnQoNDIpXSksIDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0pLCAtMSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0
WG9yID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
byhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIF4gYjsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDYpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2
NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NDkzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0p
LCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDg1NzMyKTsKLX0KLQotd2hsc2xU
ZXN0cy5pbnRCaXROb3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gfmE7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAtMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KV0pLCAt
NjU1MzYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIC0xKTsKLX0KLQotd2hs
c2xUZXN0cy5pbnRMU2hpZnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhIDw8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZVVpbnQoNyld
KSwgMTI4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlVWludCgyKV0pLCAyNjIxNDApOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgtMSksIG1ha2VVaW50KDUpXSksIC0zMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlVWludCgzKV0pLCAw
KTsKLX0KLQotd2hsc2xUZXN0cy5pbnRSU2hpZnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwg
bWFrZVVpbnQoNyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMTYzODMp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VVaW50
KDMpXSksIDApOwotfQotCi13aGxzbFRlc3RzLmludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7
Ci0gICAgbGV0IHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggKyB5
OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMTIpOwotICAgIHByb2dyYW0gPSAiaW50
IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggLSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJ
bnQoNSldKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDUpLCBtYWtlSW50KDcpXSksIC0yKTsKLSAgICBwcm9ncmFt
ID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcp
LCBtYWtlSW50KDUpXSksIDM1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoLTUpXSksIC0zNSk7Ci19
Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZmM4NzkwNmUxYTIxOGQyYzhj
ZGFiMWQyZmZjOWQwNGI5Yjg1ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgdHdvSW50
TGl0ZXJhbHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRl
cmFsLWNvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1j
b21wYXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNjhiYzhhNGMyOGUw
MzBmZTVjNGM0ZjJmN2Q1OGFkYjk5ZjMzMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNv
bXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnR3b0ludExpdGVyYWxzID0g
YXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA0MiA9PSA0MjsKLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIHRydWUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVz
cy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNTZjOTY4MjQwOTk2Njc4NWFiMDE5OTFlMmM0ZWI4
Y2RjNjVmYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDU0NSArMCwwIEBACi0vKiBUeXBlIFV0aWx0aWVzICovCi0KLS8vIEZJWE1FOiBTdXBw
b3J0IGFsbCBXSExTTCBzY2FsYXIgYW5kIHZlY3RvciB0eXBlcy4KLS8vIEZJWE1FOiBTdXBwb3J0
IHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLWNvbnN0IFR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7Ci0g
ICAgQk9PTDogU3ltYm9sKCJib29sIiksCi0gICAgSU5UOiBTeW1ib2woImludCIpLAotICAgIFVD
SEFSOiBTeW1ib2woInVjaGFyIiksCi0gICAgVUlOVDogU3ltYm9sKCJ1aW50IiksCi0gICAgRkxP
QVQ6IFN5bWJvbCgiZmxvYXQiKSwKLSAgICBGTE9BVDQ6IFN5bWJvbCgiZmxvYXQ0IiksCi0gICAg
RkxPQVQ0WDQ6IFN5bWJvbCgiZmxvYXQ0eDQiKSwKLSAgICBNQVhfU0laRTogNjQgLy8gVGhpcyBu
ZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW55IHNpbmd1bGFyIFdITFNMIHR5cGUuCi19
KTsKLQotZnVuY3Rpb24gaXNTY2FsYXIodHlwZSkKLXsKLSAgICBzd2l0Y2godHlwZSkgewotICAg
ICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udmVydFR5cGVUb0FycmF5VHlwZSh0
eXBlKQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZXMuQk9PTDoKLSAg
ICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAgICAgICBjYXNlIFR5cGVzLklOVDoKLSAg
ICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAgICAgICBjYXNlIFR5cGVzLlVDSEFSOgot
ICAgICAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUlOVDoK
LSAgICAgICAgICAgIHJldHVybiBVaW50MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9B
VDoKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0gICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0
WDQ6Ci0gICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5OwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBjb252ZXJ0VHlwZVRvV0hMU0xUeXBlKHR5cGUpCi17Ci0gICAg
c3dpdGNoKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlcy5CT09MOgotICAgICAgICAgICAgcmV0
dXJuICJib29sIjsKLSAgICAgICAgY2FzZSBUeXBlcy5JTlQ6Ci0gICAgICAgICAgICByZXR1cm4g
ImludCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUNIQVI6Ci0gICAgICAgICAgICByZXR1cm4gInVj
aGFyIjsKLSAgICAgICAgY2FzZSBUeXBlcy5VSU5UOgotICAgICAgICAgICAgcmV0dXJuICJ1aW50
IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQi
OwotICAgICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0
IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAgICAgICAgICAgIHJldHVybiAiZmxv
YXQ0eDQiOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJ
bnZhbGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB3aGxzbEFyZ3Vt
ZW50VHlwZSh0eXBlKQotewotICAgIGlmICh0eXBlID09PSBUeXBlcy5CT09MKQotICAgICAgICBy
ZXR1cm4gImludCI7Ci0gICAgcmV0dXJuIGNvbnZlcnRUeXBlVG9XSExTTFR5cGUodHlwZSk7Ci19
Ci0KLWZ1bmN0aW9uIGNvbnZlcnRUb1dITFNMT3V0cHV0VHlwZShjb2RlLCB0eXBlKQotewotICAg
IGlmICh0eXBlICE9PSBUeXBlcy5CT09MKQotICAgICAgICByZXR1cm4gY29kZTsKLSAgICByZXR1
cm4gYGludCgke2NvZGV9KWA7Ci19Ci0KLWZ1bmN0aW9uIGNvbnZlcnRUb1dITFNMSW5wdXRUeXBl
KGNvZGUsIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgIT09IFR5cGVzLkJPT0wpCi0gICAgICAgIHJl
dHVybiBjb2RlOwotICAgIHJldHVybiBgYm9vbCgke2NvZGV9KWA7Ci19Ci0KLS8qIEhhcm5lc3Mg
Q2xhc3NlcyAqLwotCi1jbGFzcyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgRXJyb3Ig
ewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCJObyBHUFVEZXZpY2Ug
ZGV0ZWN0ZWQhIik7Ci0gICAgfQotfTsKLQotY2xhc3MgRGF0YSB7Ci0gICAgLyoqCi0gICAgICog
VXBsb2FkIHR5cGVkIGRhdGEgdG8gYW5kIHJldHVybiBhIHdyYXBwZXIgb2YgYSBHUFVCdWZmZXIu
Ci0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRoZSBXSExTTCB0eXBlIHRvIGJlIHN0b3Jl
ZCBpbiB0aGlzIERhdGEuCi0gICAgICogQHBhcmFtIHtOdW1iZXIgb3IgQXJyYXlbTnVtYmVyXX0g
dmFsdWVzIC0gVGhlIHJhdyBkYXRhIHRvIGJlIHVwbG9hZGVkLgotICAgICAqLwotICAgIGNvbnN0
cnVjdG9yKGhhcm5lc3MsIHR5cGUsIHZhbHVlcywgaXNCdWZmZXIgPSBmYWxzZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChoYXJuZXNzLmRldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAvLyBPbmUgb3IgbW9yZSBzY2FsYXJzIGluIGFuIGFycmF5IGNhbiBiZSBh
Y2Nlc3NlZCB0aHJvdWdoIGFuIGFycmF5IHJlZmVyZW5jZS4KLSAgICAgICAgLy8gSG93ZXZlciwg
dmVjdG9yIHR5cGVzIGFyZSBhbHNvIGNyZWF0ZWQgdmlhIGFuIGFycmF5IG9mIHNjYWxhcnMuCi0g
ICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGJ1ZmZlcnMgb2YganVzdCBvbmUgdmVjdG9yIGFy
ZSB1c2FibGUgaW4gYSB0ZXN0IGZ1bmN0aW9uLgotICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2
YWx1ZXMpKQotICAgICAgICAgICAgdGhpcy5faXNCdWZmZXIgPSBpc1NjYWxhcih0eXBlKSA/IHRy
dWUgOiBpc0J1ZmZlcjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9pc0J1ZmZl
ciA9IGZhbHNlOwotICAgICAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy5fYnl0ZUxlbmd0aCA9IChj
b252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKS5CWVRFU19QRVJfRUxFTUVOVCAqIHZhbHVlcy5s
ZW5ndGg7Ci0KLSAgICAgICAgY29uc3QgW2J1ZmZlciwgYXJyYXlCdWZmZXJdID0gaGFybmVzcy5k
ZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsKLSAgICAgICAgICAgIHNpemU6IHRoaXMuX2J5dGVM
ZW5ndGgsCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9SRUFECi0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IHR5cGVkQXJy
YXkgPSBuZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkpKGFycmF5QnVmZmVyKTsKLSAg
ICAgICAgdHlwZWRBcnJheS5zZXQodmFsdWVzKTsKLSAgICAgICAgYnVmZmVyLnVubWFwKCk7Ci0K
LSAgICAgICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyOwotICAgIH0KLQotICAgIC8qKgotICAgICAq
IEByZXR1cm5zIEFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
RGF0YS4KLSAgICAgKi8KLSAgICBhc3luYyBnZXRBcnJheUJ1ZmZlcigpCi0gICAgewotICAgICAg
ICBpZiAoaGFybmVzcy5kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93IG5l
dyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAgICAgICAgbGV0IHJlc3VsdDsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuX2J1ZmZlci5tYXBSZWFk
QXN5bmMoKTsKLSAgICAgICAgICAgIHRoaXMuX2J1ZmZlci51bm1hcCgpOwotICAgICAgICB9IGNh
dGNoIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRGF0YSBlcnJvcjogVW5hYmxlIHRv
IGdldCBBcnJheUJ1ZmZlciEiKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQotICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQotICAgIGdldCBp
c0J1ZmZlcigpIHsgcmV0dXJuIHRoaXMuX2lzQnVmZmVyOyB9Ci0gICAgZ2V0IGJ1ZmZlcigpIHsg
cmV0dXJuIHRoaXMuX2J1ZmZlcjsgfQotICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gdGhp
cy5fYnl0ZUxlbmd0aDsgfQotfQotCi1jbGFzcyBIYXJuZXNzIHsKLSAgICBjb25zdHJ1Y3RvciAo
KQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYXN5
bmMgcmVxdWVzdERldmljZSgpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgY29u
c3QgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAg
ICAgICAgIHRoaXMuX2RldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwotICAg
ICAgICB9IGNhdGNoIHsKLSAgICAgICAgICAgIC8vIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkLgot
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBHUFVBZGFwdGVyUmVxdWVzdE9w
dGlvbnMgYW5kIEdQVURldmljZURlc2NyaXB0b3IsCi0gICAgICAgICAgICAvLyBhbmQgZGlmZmVy
ZW50aWF0ZSBiZXR3ZWVuIGRlc2NyaXB0b3IgdmFsaWRhdGlvbiBlcnJvcnMgYW5kIG5vIFdlYkdQ
VSBzdXBwb3J0LgotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGVk
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybiB0aGUg
cmV0dXJuIHZhbHVlIG9mIGEgV0hMU0wgZnVuY3Rpb24uCi0gICAgICogQHBhcmFtIHtUeXBlc30g
dHlwZSAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgV0hMU0wgZnVuY3Rpb24uCi0gICAgICogQHBh
cmFtIHtTdHJpbmd9IGZ1bmN0aW9ucyAtIEN1c3RvbSBXSExTTCBjb2RlIHRvIGJlIHRlc3RlZC4K
LSAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5j
dGlvbiB3aGljaCBtdXN0IGJlIHByZXNlbnQgaW4gJ2Z1bmN0aW9ucycuCi0gICAgICogQHBhcmFt
IHtEYXRhIG9yIEFycmF5W0RhdGFdfSBhcmdzIC0gRGF0YSBhcmd1bWVudHMgdG8gYmUgcGFzc2Vk
IHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAgICAgKiBAcmV0dXJucyB7VHlwZWRBcnJheX0gLSBB
IHR5cGVkIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24g
Y2FsbC4KLSAgICAgKi8KLSAgICBhc3luYyBjYWxsVHlwZWRGdW5jdGlvbih0eXBlLCBmdW5jdGlv
bnMsIG5hbWUsIGFyZ3MpCi0gICAgeyAgIAotICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZCkKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRldmljZSBub3QgbG9hZGVkLiIpOwotCi0g
ICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93
IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAgICAgICAgY29uc3QgW2FyZ3NMYXlv
dXRzLCBhcmdzUmVzb3VyY2VCaW5kaW5ncywgYXJnc0RlY2xhcmF0aW9ucywgZnVuY3Rpb25DYWxs
QXJnc10gPSB0aGlzLl9zZXRVcEFyZ3VtZW50cyhhcmdzKTsKLQotICAgICAgICBpZiAodGhpcy5f
cmVzdWx0QnVmZmVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9jbGVhclJlc3VsdHMoKQotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5fcmVzdWx0QnVmZmVyID0gdGhpcy5kZXZpY2Uu
Y3JlYXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAgc2l6ZTogVHlwZXMuTUFYX1NJWkUsIAot
ICAgICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVAotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBhcmdzTGF5b3V0cy51bnNoaWZ0KHsKLSAgICAgICAgICAg
IGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01Q
VVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9KTsKLSAg
ICAgICAgYXJnc1Jlc291cmNlQmluZGluZ3MudW5zaGlmdCh7Ci0gICAgICAgICAgICBiaW5kaW5n
OiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICBidWZmZXI6IHRo
aXMuX3Jlc3VsdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiBUeXBlcy5NQVhfU0laRQot
ICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBsZXQgZW50cnlQb2ludENvZGU7
Ci0gICAgICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7d2hsc2xBcmd1bWVu
dFR5cGUodHlwZSl9W10gcmVzdWx0IDogcmVnaXN0ZXIodTApYCk7Ci0gICAgICAgIGxldCBjYWxs
Q29kZSA9IGAke25hbWV9KCR7ZnVuY3Rpb25DYWxsQXJncy5qb2luKCIsICIpfSlgOwotICAgICAg
ICBjYWxsQ29kZSA9IGNvbnZlcnRUb1dITFNMT3V0cHV0VHlwZShjYWxsQ29kZSwgdHlwZSk7Ci0g
ICAgICAgIGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRl
IHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhdGlvbnMuam9pbigiLCAiKX0pCi17Ci0g
ICAgcmVzdWx0WzBdID0gJHtjYWxsQ29kZX07Ci19Ci1gOwotICAgICAgICBjb25zdCBjb2RlID0g
ZnVuY3Rpb25zICsgZW50cnlQb2ludENvZGU7Ci0gICAgICAgIGF3YWl0IHRoaXMuX2NhbGxGdW5j
dGlvbihjb2RlLCBhcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MpOwotICAgIAotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IHRoaXMuX3Jlc3VsdEJ1
ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkhhcm5lc3MgZXJyb3I6IFVuYWJsZSB0byByZWFkIHJlc3VsdHMhIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgY29uc3QgYXJyYXkgPSBuZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5
cGUodHlwZSkpKHJlc3VsdCk7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdEJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDYWxsIGEg
V0hMU0wgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSB2YWx1ZSBvZiBhcmd1bWVudChidWZmZXIpcy4K
LSAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnVuY3Rpb25zIC0gQ3VzdG9tIFdITFNMIGNvZGUgdG8g
YmUgdGVzdGVkLgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhl
IFdITFNMIGZ1bmN0aW9uIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiAnZnVuY3Rpb25zJy4KLSAg
ICAgKiBAcGFyYW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19IGFyZ3MgLSBEYXRhIGFyZ3VtZW50cyB0
byBiZSBwYXNzZWQgdG8gdGhlIGNhbGwgb2YgJ25hbWUnLgotICAgICAqLwotICAgIGNhbGxWb2lk
RnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNv
bnN0IFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMs
IGZ1bmN0aW9uQ2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBBcmd1bWVudHMoYXJncyk7Ci0KLSAgICAg
ICAgbGV0IGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRl
IHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhdGlvbnMuam9pbigiLCAiKX0pCi17Ci0g
ICAgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9pbigiLCAiKX0pOwotfWA7Ci0gICAgICAg
IGNvbnN0IGNvZGUgPSBmdW5jdGlvbnMgKyBlbnRyeVBvaW50Q29kZTsKLSAgICAgICAgdGhpcy5f
Y2FsbEZ1bmN0aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBhcmdzUmVzb3VyY2VCaW5kaW5ncyk7Ci0g
ICAgfQotCi0gICAgLyoqCi0gICAgICogQXNzZXJ0IHRoYXQgbWFsZm9ybWVkIHNoYWRlciBjb2Rl
IGRvZXMgbm90IGNvbXBpbGUuCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IHNvdXJjZSAtIEN1c3Rv
bSBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKi8KLSAgICBhc3luYyBjaGVja0NvbXBpbGVGYWls
KHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGVkKQotICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBsb2FkZWQuIik7Ci0KLSAgICAgICAgaWYg
KHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkdQ
VVVuc3VwcG9ydGVkRXJyb3IoKTsKLSAgICAgICAgCi0gICAgICAgIGxldCBlbnRyeVBvaW50Q29k
ZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIF9jb21wdXRlX21haW4o
KSB7IH1gOwotCi0gICAgICAgIGNvbnN0IGNvZGUgPSBzb3VyY2UgKyBlbnRyeVBvaW50Q29kZTsK
LQotICAgICAgICB0aGlzLl9kZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICAgICAgCi0gICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAgICAKLSAgICAgICAgdGhpcy5fZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAg
ICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAgICAgICAgICAgICAgZW50cnlQb2ludDogIl9j
b21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0
IGVycm9yID0gYXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLSAgICAgICAgaWYg
KCFlcnJvcikKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29tcGlsZXIgZXJyb3I6IHNo
YWRlciBjb2RlIGRpZCBub3QgZmFpbCB0byBjb21waWxlISIpOwotICAgIH0KLQotICAgIGdldCBk
ZXZpY2UoKSB7IHJldHVybiB0aGlzLl9kZXZpY2U7IH0KLQotICAgIF9jbGVhclJlc3VsdHMoKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jbGVhckJ1ZmZlcikgewotICAgICAgICAgICAgdGhp
cy5fY2xlYXJCdWZmZXIgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQnVmZmVyKHsgCi0gICAgICAgICAg
ICAgICAgc2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAgICAgICAgICAgICAgIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5DT1BZX1NSQwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsKLSAgICAgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHRoaXMuX2NsZWFy
QnVmZmVyLCAwLCB0aGlzLl9yZXN1bHRCdWZmZXIsIDAsIFR5cGVzLk1BWF9TSVpFKTsKLSAgICAg
ICAgdGhpcy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2go
KV0pOwotICAgIH0KLQotICAgIF9zZXRVcEFyZ3VtZW50cyhhcmdzKQotICAgIHsKLSAgICAgICAg
aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSB7Ci0gICAgICAgICAgICBpZiAoYXJncyBpbnN0YW5j
ZW9mIERhdGEpCi0gICAgICAgICAgICAgICAgYXJncyA9IFthcmdzXTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKCFhcmdzKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBbXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIEV4cGFuZCBiaW5kIGdyb3VwIHN0cnVjdHVyZSB0byByZXByZXNlbnQgYW55IGFy
Z3VtZW50cy4KLSAgICAgICAgbGV0IGFyZ3NEZWNsYXJhdGlvbnMgPSBbXTsKLSAgICAgICAgbGV0
IGZ1bmN0aW9uQ2FsbEFyZ3MgPSBbXTsKLSAgICAgICAgbGV0IGFyZ3NMYXlvdXRzID0gW107Ci0g
ICAgICAgIGxldCBhcmdzUmVzb3VyY2VCaW5kaW5ncyA9IFtdOwotCi0gICAgICAgIGZvciAobGV0
IGkgPSAxOyBpIDw9IGFyZ3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IGFyZyA9
IGFyZ3NbaSAtIDFdOwotICAgICAgICAgICAgYXJnc0RlY2xhcmF0aW9ucy5wdXNoKGBkZXZpY2Ug
JHt3aGxzbEFyZ3VtZW50VHlwZShhcmcudHlwZSl9W10gYXJnJHtpfSA6IHJlZ2lzdGVyKHUke2l9
KWApOwotICAgICAgICAgICAgZnVuY3Rpb25DYWxsQXJncy5wdXNoKGNvbnZlcnRUb1dITFNMSW5w
dXRUeXBlKGBhcmcke2l9YCArIChhcmcuaXNCdWZmZXIgPyAiIiA6ICJbMF0iKSwgYXJnLnR5cGUp
KTsKLSAgICAgICAgICAgIGFyZ3NMYXlvdXRzLnB1c2goewotICAgICAgICAgICAgICAgIGJpbmRp
bmc6IGksCi0gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVU
RSwKLSAgICAgICAgICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRpbmdzLnB1c2goewotICAgICAgICAgICAg
ICAgIGJpbmRpbmc6IGksCi0gICAgICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyOiBhcmcuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXplOiBh
cmcuYnl0ZUxlbmd0aAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmluZGluZ3Ms
IGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdOwotICAgIH0KLQotICAgIGFzeW5j
IF9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMsIGFyZ3NSZXNvdXJjZUJpbmRpbmdzKQot
ICAgIHsKLSAgICAgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgICAgICBiaW5kaW5nczogYXJnc0xheW91dHMKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSB0aGlzLl9kZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XSB9KTsKLQotICAgICAgICBjb25zdCBiaW5kR3JvdXAgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKHsKLSAgICAgICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAgICAg
ICAgYmluZGluZ3M6IGFyZ3NSZXNvdXJjZUJpbmRpbmdzCi0gICAgICAgIH0pOwotCi0gICAgICAg
IHRoaXMuX2RldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAgICAgIGNv
bnN0IHNoYWRlcnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogY29k
ZSB9KTsKLSAgICAKLSAgICAgICAgY29uc3QgcGlwZWxpbmUgPSB0aGlzLl9kZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0g
ICAgICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgICAgICBtb2R1bGU6IHNoYWRl
cnMsCi0gICAgICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gdGhp
cy5fZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGNvbnN0IHBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgICAgICBwYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocGlwZWxpbmUpOwotICAgICAgICBwYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKLSAgICAgICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgICAgICAKLSAgICAgICAgdGhp
cy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwot
Ci0gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVycm9yU2NvcGUo
KTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9y
Lm1lc3NhZ2UpOwotICAgIH0KLX0KLQotLyogSGFybmVzcyBTZXR1cCAqLwotCi1jb25zdCBoYXJu
ZXNzID0gbmV3IEhhcm5lc3MoKTsKLWhhcm5lc3MucmVxdWVzdERldmljZSgpOwotCi0vKiBHbG9i
YWwgSGVscGVyIEZ1bmN0aW9ucyAqLwotCi0vKioKLSAqIFRoZSBtYWtlX19fIGZ1bmN0aW9ucyBh
cmUgd3JhcHBlcnMgYXJvdW5kIHRoZSBEYXRhIGNvbnN0cnVjdG9yLgotICogVmFsdWVzIHBhc3Nl
ZCBpbiBhcyBhbiBhcnJheSB3aWxsIGJlIHBhc3NlZCBpbiB2aWEgYSBkZXZpY2UtYWRkcmVzc2Vk
IHBvaW50ZXIgdHlwZSBpbiB0aGUgc2hhZGVyLgotICogQHBhcmFtIHtCb29sZWFuLCBOdW1iZXIs
IG9yIEFycmF5fSB2YWx1ZXMgLSBUaGUgZGF0YSB0byBiZSBzdG9yZWQgb24gdGhlIEdQVS4KLSAq
IEByZXR1cm5zIEEgbmV3IERhdGEgb2JqZWN0IHdpdGggc3RvcmFnZSBhbGxvY2F0ZWQgdG8gc3Rv
cmUgdmFsdWVzLgotICovCi1mdW5jdGlvbiBtYWtlQm9vbCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJu
IG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkJPT0wsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1h
a2VJbnQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcgRGF0YShoYXJuZXNzLCBUeXBlcy5JTlQs
IHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VVY2hhcih2YWx1ZXMpCi17Ci0gICAgcmV0dXJu
IG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVDSEFSLCB2YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBt
YWtlVWludCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVJ
TlQsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VGbG9hdCh2YWx1ZXMpCi17Ci0gICAgcmV0
dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FULCB2YWx1ZXMpOwotfQotCi0vKioKLSAq
IEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBv
ZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVtYmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0
IGJlIGRpdmlzaWJsZSBieSA0LgotICogQSBzaW5nbGUgNC1lbGVtZW50IGFycmF5IG9mIGZsb2F0
cyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgZmxvYXQ0IGFyZ3VtZW50IGluIHRoZSBzaGFk
ZXIuCi0gKi8KLWZ1bmN0aW9uIG1ha2VGbG9hdDQodmFsdWVzKQotewotICAgIGNvbnN0IHJlc3Vs
dHMgPSBwcm9jZXNzQXJyYXlzKHZhbHVlcywgNCk7Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5l
c3MsIFR5cGVzLkZMT0FUNCwgcmVzdWx0cy52YWx1ZXMsIHJlc3VsdHMuaXNCdWZmZXIpOwotfQot
Ci0vKioKLSAqIEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2YWx1ZXMgLSAxRCBvciAy
RCBhcnJheSBvZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVtYmVyIG9mIGZsb2F0IHZh
bHVlcyBtdXN0IGJlIGRpdmlzaWJsZSBieSAxNi4KLSAqIEEgc2luZ2xlIDE2LWVsZW1lbnQgYXJy
YXkgb2YgZmxvYXRzIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSBmbG9hdDR4NCBhcmd1bWVu
dCBpbiB0aGUgc2hhZGVyLgotICogVGhpcyBzaG91bGQgZm9sbG93IHRoZSBnbE1hdHJpeC9PcGVu
R0wgbWV0aG9kIG9mIHN0b3JpbmcgNHg0IG1hdHJpY2VzLAotICogd2hlcmUgdGhlIHgsIHksIHog
dHJhbnNsYXRpb24gY29tcG9uZW50cyBhcmUgdGhlIDEzdGgsIDE0dGgsIGFuZCAxNXRoIGVsZW1l
bnRzIHJlc3BlY3RpdmVseS4KLSAqLwotZnVuY3Rpb24gbWFrZUZsb2F0NHg0KHZhbHVlcykKLXsK
LSAgICBjb25zdCByZXN1bHRzID0gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIDE2KTsKLSAgICByZXR1
cm4gbmV3IERhdGEoaGFybmVzcywgVHlwZXMuRkxPQVQ0WDQsIHJlc3VsdHMudmFsdWVzLCByZXN1
bHRzLmlzQnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gcHJvY2Vzc0FycmF5cyh2YWx1ZXMsIG1pbmlt
dW1MZW5ndGgpCi17Ci0gICAgY29uc3Qgb3JpZ2luYWxMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwot
ICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBmbG9hdDQgaXMgdGlnaHRseSBwYWNrZWQuCi0gICAg
Ly8gV2hlbiBpbXBsZW1lbnRpbmcgb3RoZXIgdmVjdG9yIHR5cGVzLCBhZGQgcGFkZGluZyBpZiBu
ZWVkZWQuCi0gICAgdmFsdWVzID0gdmFsdWVzLmZsYXQoKTsKLSAgICBpZiAodmFsdWVzLmxlbmd0
aCAlIG1pbmltdW1MZW5ndGggIT0gMCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk
IG51bWJlciBvZiBlbGVtZW50cyBpbiBub24tc2NhbGFyIHR5cGUhIik7Ci0gICAgCi0gICAgcmV0
dXJuIHsgdmFsdWVzOiB2YWx1ZXMsIGlzQnVmZmVyOiBvcmlnaW5hbExlbmd0aCA9PT0gMSB8fCB2
YWx1ZXMubGVuZ3RoID4gbWluaW11bUxlbmd0aCB9OwotfQotCi0vKioKLSAqIEBwYXJhbSB7U3Ry
aW5nfSBmdW5jdGlvbnMgLSBTaGFkZXIgc291cmNlIGNvZGUgdGhhdCBtdXN0IGNvbnRhaW4gYSBk
ZWZpbml0aW9uIGZvciAnbmFtZScuCi0gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBmdW5j
dGlvbiB0byBiZSBjYWxsZWQgZnJvbSAnZnVuY3Rpb25zJy4KLSAqIEBwYXJhbSB7RGF0YSBvciBB
cnJheVtEYXRhXX0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxs
IG9mICduYW1lJy4KLSAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgYSBjYWxsIHRvICduYW1lJyB3aXRoICdhcmdzJy4KLSAqLwotYXN5bmMg
ZnVuY3Rpb24gY2FsbEJvb2xGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAg
cmV0dXJuICEhKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuQk9PTCwgZnVu
Y3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxJbnRGdW5j
dGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNz
LmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLklOVCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07
Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxVY2hhckZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwg
YXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlw
ZXMuVUNIQVIsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlv
biBjYWxsVWludEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4g
KGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuVUlOVCwgZnVuY3Rpb25zLCBu
YW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxGbG9hdEZ1bmN0aW9uKGZ1
bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5
cGVkRnVuY3Rpb24oVHlwZXMuRkxPQVQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpWzBdOwotfQot
Ci1hc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0RnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdz
KQotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihUeXBlcy5G
TE9BVDQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpLnN1YmFycmF5KDAsIDQpOwotfQotCi1hc3lu
YyBmdW5jdGlvbiBjYWxsRmxvYXQ0eDRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17
Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FU
NFg0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJhcnJheSgwLCAxNik7Ci19Ci0KLWFzeW5j
IGZ1bmN0aW9uIGNoZWNrRmFpbChzb3VyY2UpIAotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVz
cy5jaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkpOwotfQotCi0vKioKLSAqIERvZXMgbm90IHJldHVy
biBhIFByb21pc2UuIFRvIG9ic2VydmUgdGhlIHJlc3VsdHMgb2YgYSBjYWxsLCAKLSAqIGNhbGwg
J2dldEFycmF5QnVmZmVyJyBvbiB0aGUgRGF0YSBvYmplY3QgcmV0YWluaW5nIHlvdXIgb3V0cHV0
IGJ1ZmZlci4KLSAqLwotZnVuY3Rpb24gY2FsbFZvaWRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUs
IGFyZ3MpCi17Ci0gICAgaGFybmVzcy5jYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwg
YXJncyk7Ci19Ci0KLWNvbnN0IHdlYkdQVVByb21pc2VUZXN0ID0gKHRlc3RGdW5jLCBtc2cpID0+
IHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geyAKLSAgICAgICAgcmV0dXJuIHRlc3RG
dW5jKCkuY2F0Y2goZSA9PiB7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1
cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0pOwotICAgIH0s
IG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKG9iaikgewotICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgICAgICBhd2FpdCBoYXJuZXNzLnJl
cXVlc3REZXZpY2UoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgbmFt
ZSBpbiBvYmopIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKSAK
LSAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2ViR1BVUHJvbWlzZVRlc3Qob2JqW25hbWVdLCBu
YW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0g
ICAgfSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZW5ndGgt
c3RkbGliLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZW5ndGgtc3Rk
bGliLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0
MjA2ZmEzZjQ1NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0
ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyB2
ZWN0b3JJbmRleEFzc2lnbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bGVuZ3RoLXN0ZGxpYi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRs
aWIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA0NzQ0NDNkMGMyMWIwN2I1
N2E4ODJjMGM5YTNmMDNlYjQxODk4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5MZW5ndGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNp
bG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckluZGV4QXNzaWduID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBm
bG9hdCBiKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeDsKLSAgICAgICAgICAgIHhbMF0gPSBhOwot
ICAgICAgICAgICAgeFsxXSA9IGI7Ci0gICAgICAgICAgICByZXR1cm4gbGVuZ3RoKHgpOwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGNvbnN0IGRhdGEgPSBbCi0gICAgICAgIFtOYU4sIDEwXSwK
LSAgICAgICAgWzEwLCBOYU5dLAotICAgICAgICBbMjAsIDEwXSwKLSAgICAgICAgWzAsIDBdLAot
ICAgIF07Ci0KLSAgICBmb3IgKGNvbnN0IFt4LCB5XSBvZiBkYXRhKSB7Ci0gICAgICAgIGNvbnN0
IHJlc3VsdCA9IGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VG
bG9hdCh4KSwgbWFrZUZsb2F0KHkpXSk7Ci0gICAgICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5
KSkgewotICAgICAgICAgICAgaWYgKCFpc05hTihyZXN1bHQpKQotICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiUmVzdWx0IHNob3VsZCBiZSBOYU4uIik7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0LCBNYXRoLnNxcnQoeCp4ICsg
eSp5KSwgZXBzaWxvbik7Ci0gICAgfQotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDJhZmNkY2FiMGFhYzE0MGMw
MjZkYjExYTk4NGFjMWE4ODEyYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBsZXhpbmdLZXl3b3JkTGlrZUlk
ZW50aWZpZXJzCi1QQVNTIGtleXdvcmRzQXNJZGVudGlmaWVycwotUEFTUyBjb21tZW50cwotUEFT
UyBvcGVyYXRvck5hbWVzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
ZXhpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmcuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwM2Y5MDM3YmI5OTVmMjllYzg0MWNiNGJkOTQxOWVj
M2IzMWY0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
NzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZp
eC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAu
MDAwMTsKLQotY29uc3Qga2V5d29yZHMgPSBbCi0gICAgInN0cnVjdCIKLSAgICAsICJ0eXBlZGVm
IgotICAgICwgImVudW0iCi0gICAgLCAib3BlcmF0b3IiCi0gICAgLCAiaWYiCi0gICAgLCAiZWxz
ZSIKLSAgICAsICJjb250aW51ZSIKLSAgICAsICJicmVhayIKLSAgICAsICJzd2l0Y2giCi0gICAg
LCAiY2FzZSIKLSAgICAsICJkZWZhdWx0IgotICAgICwgImZhbGx0aHJvdWdoIgotICAgICwgImZv
ciIKLSAgICAsICJ3aGlsZSIKLSAgICAsICJkbyIKLSAgICAsICJyZXR1cm4iCi0gICAgLCAibnVs
bCIKLSAgICAsICJ0cnVlIgotICAgICwgImZhbHNlIgotICAgICwgImNvbnN0YW50IgotICAgICwg
ImRldmljZSIKLSAgICAsICJ0aHJlYWRncm91cCIKLSAgICAsICJ0aHJlYWQiCi0gICAgLCAic3Bh
Y2UiCi0gICAgLCAidmVydGV4IgotICAgICwgImZyYWdtZW50IgotICAgICwgImNvbXB1dGUiCi0g
ICAgLCAibnVtdGhyZWFkcyIKLSAgICAsICJTVl9JbnN0YW5jZUlEIgotICAgICwgIlNWX1ZlcnRl
eElEIgotICAgICwgIlBTSVpFIgotICAgICwgIlNWX1Bvc2l0aW9uIgotICAgICwgIlNWX0lzRnJv
bnRGYWNlIgotICAgICwgIlNWX1NhbXBsZUluZGV4IgotICAgICwgIlNWX0lubmVyQ292ZXJhZ2Ui
Ci0gICAgLCAiU1ZfVGFyZ2V0IgotICAgICwgIlNWX0RlcHRoIgotICAgICwgIlNWX0NvdmVyYWdl
IgotICAgICwgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiCi0gICAgLCAiU1ZfR3JvdXBJRCIKLSAgICAs
ICJTVl9Hcm91cEluZGV4IgotICAgICwgIlNWX0dyb3VwVGhyZWFkSUQiCi0gICAgLCAiYXR0cmli
dXRlIgotICAgICwgInJlZ2lzdGVyIgotICAgICwgInNwZWNpYWxpemVkIgotICAgICwgIm5hdGl2
ZSIKLSAgICAsICJyZXN0cmljdGVkIgotICAgICwgIl8iCi0gICAgLCAiYXV0byIKLSAgICAsICJw
cm90b2NvbCIKLSAgICAsICJjb25zdCIKLSAgICAsICJzdGF0aWMiCi0gICAgLCAibm9pbnRlcnBv
bGF0aW9uIgotICAgICwgIm5vcGVyc3BlY3RpdmUiCi0gICAgLCAidW5pZm9ybSIKLSAgICAsICJj
ZW50cm9pZCIKLSAgICAsICJzYW1wbGUiCi1dOwotCi1jb25zdCBzdWZmaXhlcyA9IFsiZm9vIiwg
IjEzMzciLCAiX2ZvbyJdOwotCi13aGxzbFRlc3RzLmxleGluZ0tleXdvcmRMaWtlSWRlbnRpZmll
cnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7
Ci0gICAgICAgIGZvciAoY29uc3Qgc3VmZml4IG9mIHN1ZmZpeGVzKSB7Ci0gICAgICAgICAgICBj
b25zdCB2YXJpYWJsZU5hbWUgPSBrZXl3b3JkICsgc3VmZml4OwotICAgICAgICAgICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgICAg
ICAgICBpbnQgJHt2YXJpYWJsZU5hbWV9ID0gNDI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAke3ZhcmlhYmxlTmFtZX07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgYDsKLQot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIDQyKTsKLSAgICAgICAgfQotICAgIH0KLQotfTsKLQotd2hsc2xUZXN0cy5r
ZXl3b3Jkc0FzSWRlbnRpZmllcnMgPSBhc3luYyAoKSA9PiB7Ci0KLSAgICBmb3IgKGNvbnN0IGtl
eXdvcmQgb2Yga2V5d29yZHMpIHsKLSAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0ga2V5d29y
ZDsKLSAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgewot
ICAgICAgICAgICAgICAgIGludCAke3ZhcmlhYmxlTmFtZX0gPSA0MjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYDsKLSAgICAgICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotICAgIH0KLX07
Ci0KLXdobHNsVGVzdHMuY29tbWVudHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgLyoKLSAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICAqLwotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbygp
IHsKLSAgICAgICAgICAgIHJldHVybiA0LyoqLzI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotfTsK
LQotd2hsc2xUZXN0cy5vcGVyYXRvck5hbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50
IG9wZXJhdG9yLiQoRm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAg
ICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiMoRm9vKSB7Ci0gICAgICAgICAgICByZXR1
cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLkAoRm9v
KSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IG9wZXJhdG9yLiolKEZvbykgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAg
ICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgb3BlcmF0
b3ImJihpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQot
ICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgYm9vbCBvcGVyYXRvcnx8
KGludCB4LCBpbnQgeSkgewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAg
YCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMjU2YzVjYjY3MzdjNWU3OWIzZDRjMGZmYjg2MTY5MTBh
YWU0OWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxpdGVyYWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNjQ2MWIyYjNh
YTc2MjY3MDRkZThlZTdiMzc4ZWMwYzA2YTljZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLmxpdGVyYWxzID0gYXN5
bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAtMTA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGIoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50
IGMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC4xOwotICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMS45Owot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gLS4xOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGcoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gLTEuOTsKLSAgICAgICAgfQotICAgICAgICBpbnQgaCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAweGI0ZEIzM0Y7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGko
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTB4YjRkQjMzRjsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAgImEiLCBbXSksIC0xMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgICJiIiwgW10pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAwKTsKLQotICAgIGFzc2VydF9hcHByb3hf
ZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMC4xLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImUiLCBbXSksIDEuOSwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtMC4xLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImciLCBbXSksIC0xLjksIGVwc2lsb24pOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJoIiwgW10pLCAweGI0ZEIzM0YpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiaSIsIFtd
KSwgLTB4YjRkQjMzRik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVn
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVn
YXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmEzMzE3
ZWU3MDRjZmYyZmI2MDQyZjMyNGZmMjIxOWU1MjFiODU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb2dpY2Fs
LW5lZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1Q
QVNTIGxvZ2ljYWxOZWdhdGlvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbG9naWNhbC1uZWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2lj
YWwtbmVnYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQwMGIwMTBh
ZGFiMGNmNmEwOTg3OTJmMmZjNzZmZjg2Mjk5ODliYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9naWNhbC1u
ZWdhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KLTx0aXRsZT5MdmFsdWVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLmxvZ2ljYWxOZWdhdGlvbiA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0
IHByb2dyYW0gPSAiYm9vbCBmb28oYm9vbCB4KSB7IHJldHVybiAheDsgfSI7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLX0KLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb29wcy1icmVhay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3Bz
LWJyZWFrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNjQzY2ExNTU5M2I3
MzA2NzVkY2VkZDI3NzNjZDNiMTcyZmM2ZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAg
ICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0
ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVl
OwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDEwOyAoaSA9IGkgKyAxLCBzaGFkZSA9IHNoYWRl
ICsgMS4wKSkgewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICB9Ci0KLSAgICByZXN1bHQucG9z
aXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFk
ZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFk
ZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNo
YWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsK
LSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9k
ZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JC
bGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldy
aXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0
IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNl
dDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0
OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0
ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1
dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTld
ID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3Vy
Y2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
ID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFy
cmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAg
cmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVm
ZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGlu
ZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmlu
ZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFti
aW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVs
bDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sb29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3
QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bG9vcHMtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250
aW51ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWUyMTM5ODEwOWViMmY3
ZjcyNjZlNTUxZGY4NDYzYjZmNzNiMWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
c3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0g
ICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1
ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGlm
IChiKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBzaGFkZSA9
IHNoYWRlICsgMS4wOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwot
ICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBh
dHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDog
MTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0g
ICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307
Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7
dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVu
aWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3Vw
TGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxp
bmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZl
VG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0
YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVm
ZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3
YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
cik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0g
MC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4
QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1
ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVy
LCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUi
KTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdy
YTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2Fw
Q2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9
IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3Qg
cmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVu
dHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxs
LCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRl
clBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5S
ZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVm
ZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJh
dyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29u
c3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5n
ZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0p
OwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEz
M2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjM1ODRkMWQ1MTg4M2I0Y2E2MmY2Yzg5NzQ3ODMxZmYwMTVhOGQ5ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBkb1doaWxlCi1QQVNTIHNpbXBsZVdoaWxlCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM0OTE5OGY4YWFhYzNkY2Y0YzIzOWQ4NWQyYzBmMjk2
MDI3NTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNl
dD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRl
c3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZG9XaGls
ZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28x
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDc7Ci0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9IHdoaWxlICh4IDwgMTApOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbzIoaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5
ID0gNzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB5ID0gODsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHkgPT0gNyk7Ci0gICAgICAgICAg
ICByZXR1cm4geTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vMyhpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaW50IHN1bSA9IDA7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHggPT0gMTEpIHsKLSAgICAgICAgICAgICAgICAgICAgeCA9IDE1OwotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgc3VtID0gc3VtICsgeDsKLSAgICAgICAgICAgICAgICB4ID0geCArIDE7Ci0gICAgICAgICAg
ICB9IHdoaWxlICh4IDwgMTMpOwotICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbzEiLCBbbWFrZUludCgxKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMSIsIFttYWtlSW50KDExKV0pLCA4KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFttYWtlSW50
KDEpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28zIiwgW21ha2VJbnQoOSldKSwgMTkpOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVdo
aWxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZv
byhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHggPCAxMykKLSAgICAgICAg
ICAgICAgICB4ID0geCAqIDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDEpXSksIDE2KTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29w
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgyMzFlNWI4MWY4YTg0ZDQ5MTE2NmQ3NzAwNDEyMzNiNjNjZWM1
YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQg
cG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsK
LX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0KLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAg
ICAgIHNoYWRlID0gc2hhZGUgKyAwLjE7Ci0gICAgfQotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRl
LCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsK
LSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29u
c3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25l
In07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhh
QmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwK
LSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1
dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0
Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRy
aWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBh
dHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0
ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3
LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
MEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
M10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMTsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZl
cik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNl
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
b3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7Ymlu
ZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERl
c2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3Vw
QmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAo
YmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENv
bnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBm
b3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25m
aWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRl
eHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29s
b3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVU
YXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xv
cjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2Yt
bG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDFmNzBmZmQ0ZGU2MDdiMmEwMDNlZmM3NDdkMjhmZDQ4YjQxYzVhOTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvdHNPZkxvY2FsVmFyaWFibGVzCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NzU2ZjM5MjcwNzQ0NDFhYzRiYzNh
N2NkODRlMWJkNzk2ODgxYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPkxvdHMgb2YgbG9jYWwgdmFyaWFibGVzLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmxvdHNPZkxvY2FsVmFyaWFibGVzID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgc3JjID0gImludCBzdW0oKSB7XG4iOwotICAgIHNyYyArPSAiICAgIGlu
dCBpID0gMDtcbiI7Ci0gICAgbGV0IHRhcmdldCA9IDA7Ci0gICAgY29uc3QgbnVtVmFycyA9IDUw
OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVmFyczsgaSsrKSB7Ci0gICAgICAgIHNyYyAr
PSBgICAgaSA9ICR7aX07XG5gOwotICAgICAgICBzcmMgKz0gYCAgIGludCBWJHtpfSA9IChpICsg
MykgKiAoaSArIDMpO1xuYDsKLSAgICAgICAgdGFyZ2V0ICs9IChpICsgMykgKiAoaSArIDMpOwot
ICAgIH0KLSAgICBzcmMgKz0gIiAgICBpbnQgcmVzdWx0ID0gMDtcbiI7Ci0gICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBudW1WYXJzOyBpKyspIHsKLSAgICAgICAgc3JjICs9IGAgICAgcmVzdWx0ICs9
IFYke2l9O1xuYDsKLSAgICB9Ci0gICAgc3JjICs9ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7Ci0g
ICAgc3JjICs9ICJ9IjsKLSAgICBsZXQgcHJvZ3JhbSA9IHNyYzsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAic3VtIiwgW10pLCB0YXJnZXQpOwotfQot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE5NzYxY2VjMmI5MTZiNmVkZjg3MTRkMmUwMGE5MmU3ZThhZmEzNTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyAr
MCwwIEBACi0KLVBBU1MgbFZhbHVlcwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbHZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBlOTgwNGQwNjM0YmY2MTBkYjA0ZDQ4
OGM3ZTdhYjFhMzViY2I2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
THZhbHVlcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5sVmFsdWVz
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQg
aW50KiB5ID0gJih4KyspOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAg
YCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJigr
K3gpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJih4ID0gMyk7Ci0gICAg
ICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0g
MDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAmMzsKLSAgICAgICAgICAgIHJldHVybiAq
eTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBp
bnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geCArIDE7Ci0gICAgICAgIH0KLSAg
ICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAg
ICAgICAgIHRocmVhZCBpbnQqIHkgPSAmYmFyKDMpOwotICAgICAgICAgICAgcmV0dXJuICp5Owot
ICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJl
YWQgaW50KiB5ID0gJig3LCB4KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQot
ICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGVudW0gRGF5cyB7Ci0gICAg
ICAgICAgICBNb25kYXksCi0gICAgICAgICAgICBUdWVzZGF5Ci0gICAgICAgIH0KLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAg
IHRocmVhZCBpbnQqIHkgPSAmKERheXMuTW9uZGF5KTsKLSAgICAgICAgICAgIHJldHVybiAqeTsK
LSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGJvb2wqIHkgPSAmKHRydWUgJiYg
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aHJlYWQgYm9vbCogeSA9ICYoIXRydWUpOwotICAgICAgICAgICAgcmV0dXJuICp5Owot
ICAgICAgICB9Ci0gICAgYCk7IAotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDM7Ci0gICAgICAgICAgICB0aHJl
YWQgaW50KiB5ID0gJng7Ci0gICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDMpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFr
ZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzMTEyYTNjZDZjNjY1M2Y4YWI3ODU1YzlkYTFiMmVlYTFiY2NlYjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgbWFrZUFycmF5UmVmRnJvbUFycmF5UmVmCi1Q
QVNTIG1ha2VBcnJheVJlZkZyb21Mb2NhbAotUEFTUyBtYWtlQXJyYXlSZWZGcm9tUG9pbnRlcgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3Bl
Yy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNw
ZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNkY2I2YmZlNTUw
ZDU3NzE3NzkzNTNjNWQzYTA5NjgwNjRmMTA2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1y
ZWYtc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3Mu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubWFrZUFycmF5UmVmRnJv
bUFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgaW50IGJhcih0aHJlYWQgaW50W10gcmVmKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpbnQgYmF6KHRocmVhZCBpbnRbXSBwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGJhcihAcHRyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBmb28o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gNDg7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGJheihAeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13
aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21Mb2NhbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIodGhyZWFkIGludFtdIHJlZikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHJlZlswXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSA0ODsKLSAgICAgICAgICAgIHJldHVy
biBiYXIoQHgpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0OCk7Ci19Ci0KLXdobHNsVGVzdHMu
bWFrZUFycmF5UmVmRnJvbVBvaW50ZXIgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgYmFyKHRocmVhZCBpbnRbXSByZWYpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJheih0aHJlYWQg
aW50KiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQHB0cik7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4ID0g
NDg7Ci0gICAgICAgICAgICByZXR1cm4gYmF6KCZ4KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NDgpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5j
ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBm
NDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXkt
cmVmZXJlbmNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFT
UwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTg3Mzc2MTQ4N2JhNGFhZGYwYjVlZDg2
NGM3OTIxOGQ3NWQyMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1ib29s
IHRlc3QxKCkgewotICAgIGludCB2YWx1ZSA9IDQyOwotICAgIHRocmVhZCBpbnRbXSBhcnJheSA9
IEB2YWx1ZTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoYXJyYXlbMTIwMjEzXSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXJy
YXlbMF0gPSAxMzM3OwotICAgIGlmICh2YWx1ZSAhPSAxMzM3KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB0ZXN0MigpIHsKLSAgICBpbnQgdmFs
dWUgPSA0MjsKLSAgICB0aHJlYWQgaW50KiBwdHIgPSAmdmFsdWU7Ci0gICAgaWYgKCpwdHIgIT0g
NDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRocmVhZCBpbnRbXSBhcnJheSA9IEBw
dHI7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKGFycmF5WzBdICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFy
cmF5WzEyMzc0MjE3XSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgICpw
dHIgPSA2NjY7Ci0gICAgaWYgKCpwdHIgIT0gNjY2KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKHZhbHVlICE9IDY2NikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJh
eS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheVswXSAh
PSA2NjYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGFycmF5WzBdID0gNDI0MjsKLSAg
ICBpZiAoKnB0ciAhPSA0MjQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVl
ICE9IDQyNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNDI0
MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGVzdDMo
KSB7Ci0gICAgaW50WzQyXSB4OwotICAgIHRocmVhZCBpbnRbNDJdKiBhcnJheVB0ciA9ICZ4Owot
ICAgIGlmIChhcnJheVB0ci0+bGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB4WzQxXSA9IDY2NjsKLSAgICBpZiAoKCphcnJheVB0cilbNDFdICE9IDY2NikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFycmF5UHRyKVswXSAhPSAwKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICB0aHJlYWQgaW50W10gYXJyYXkgPSBAeDsKLSAgICBpZiAoYXJy
YXkubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcnJheVswXSA9
IDEzMzc7Ci0gICAgaWYgKHhbMF0gIT0gMTMzNykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICgoKmFycmF5UHRyKVswXSAhPSAxMzM3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB0ZXN0NCgpIHsKLSAgICBpbnQgeCA9IDQyOwotICAg
IHRocmVhZCBpbnQqIHB0ciA9ICZ4OwotCi0gICAgdGhyZWFkIGludFtdIGFycmF5ID0gQHB0cjsK
LSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChhcnJheVswXSAhPSA0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGFy
cmF5WzEwMDAwMF0gIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6
IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpZiAoIXRlc3QxKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghdGVzdDIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0ZXN0
MygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXRlc3Q0KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2
aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2
aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRH
cm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2Us
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAg
ICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJl
c3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVm
ZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
e2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRH
cm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5j
b3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAg
ICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQ
YXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZm
ZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMy
QXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0g
PT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZh
aWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1z
cGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3
MmQzZGQzMGY2ODRlOWQ1N2VjNTdiYWQ5ZjUyNGVjZTBmM2FlOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAg
QEAKLQotUEFTUyBidWlsdGluTWF0cmljZXMKLVBBU1MgbWF0cml4TXVsdGlwbGljYXRpb24KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OWM5ZGYzMWZiNDJlOTcyODIzMmM2OWU5
MTMwNmMxNDU0ZDhjN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5idWlsdGluTWF0cmljZXMgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBhWzBdWzBdID0gMTsKLSAgICAgICAgICAg
IGFbMF1bMV0gPSAyOwotICAgICAgICAgICAgYVsxXVswXSA9IDM7Ci0gICAgICAgICAgICBhWzFd
WzFdID0gNDsKLSAgICAgICAgICAgIHJldHVybiBhWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MyBhOwotICAgICAg
ICAgICAgYVswXVswXSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAg
IGFbMF1bMl0gPSAzOwotICAgICAgICAgICAgYVsxXVswXSA9IDQ7Ci0gICAgICAgICAgICBhWzFd
WzFdID0gNTsKLSAgICAgICAgICAgIGFbMV1bMl0gPSA2OwotICAgICAgICAgICAgcmV0dXJuIGFb
MV1bMl07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICByZXR1cm4gYVswXVswXTsKLSAgICAgICAg
fQotICAgICAgICBib29sIGZvbzQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBh
OwotICAgICAgICAgICAgYVswXVswXSA9IDE7Ci0gICAgICAgICAgICBhWzBdWzFdID0gMjsKLSAg
ICAgICAgICAgIGFbMV1bMF0gPSAzOwotICAgICAgICAgICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAgYlswXVswXSA9IDU7Ci0gICAgICAgICAgICBi
WzBdWzFdID0gNjsKLSAgICAgICAgICAgIGJbMV1bMF0gPSA3OwotICAgICAgICAgICAgYlsxXVsx
XSA9IDg7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCAyOyArK2opIHsKLSAgICAgICAgICAgICAg
ICAgICAgYVtpXVtqXSArPSA0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBiKTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZv
bzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVsw
XSA9IGZsb2F0MigxLCAyKTsKLSAgICAgICAgICAgIGFbMV0gPSBmbG9hdDIoMywgNCk7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAgYlswXVswXSA9IDE7Ci0gICAgICAgICAg
ICBiWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGJbMV1bMF0gPSAzOwotICAgICAgICAgICAgYlsx
XVsxXSA9IDQ7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGEgPT0gYik7Ci0gICAgICAgIH0KLSAg
ICAgICAgYm9vbCBmb282KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgYTsKLSAg
ICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAgICAgYVswXVsxXSA9IDI7Ci0gICAgICAg
ICAgICBhWzFdWzBdID0gMzsKLSAgICAgICAgICAgIGFbMV1bMV0gPSA0OwotICAgICAgICAgICAg
ZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1bMF0gPSA1OwotICAgICAgICAgICAgYlswXVsx
XSA9IDEwOwotICAgICAgICAgICAgYlsxXVswXSA9IDE4OwotICAgICAgICAgICAgYlsxXVsxXSA9
IDI0OwotICAgICAgICAgICAgYVswXSAqPSA1OwotICAgICAgICAgICAgYVsxXSAqPSA2OwotICAg
ICAgICAgICAgcmV0dXJuIGFsbChhID09IGIpOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzcoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MyBhID0gZmxvYXQyeDMoZmxvYXQz
KDMsIDQsIDUpLCBmbG9hdDMoNiwgNywgOCkpOwotICAgICAgICAgICAgcmV0dXJuIGFbMF1bMl07
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNCIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNiIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNyIsIFtdKSwgNSk7Ci19
OwotCi13aGxzbFRlc3RzLm1hdHJpeE11bHRpcGxpY2F0aW9uID0gYXN5bmMgKCkgPT4gewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdDJ4NCBtdWx0aXBseShmbG9hdDJ4MyB4LCBm
bG9hdDN4NCB5KSB7Ci0gICAgICAgICAgICAvLyBDb3BpZWQgYW5kIHBhc3RlZCBmcm9tIHRoZSBz
dGFuZGFyZCBsaWJyYXJ5Ci0gICAgICAgICAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgICAgICAg
ICByZXN1bHRbMF1bMF0gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0g
KiB5WzBdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMV0gKiB5WzFdWzBd
OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgICAg
ICAgICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBd
WzBdICogeVswXVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsx
XVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzJdICogeVsyXVsxXTsKLSAg
ICAgICAgICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0g
eFswXVswXSAqIHlbMF1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVsxXSAq
IHlbMV1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMl1bMl07
Ci0gICAgICAgICAgICByZXN1bHRbMF1bM10gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNd
ICs9IHhbMF1bMF0gKiB5WzBdWzNdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1b
MV0gKiB5WzFdWzNdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMl0gKiB5WzJd
WzNdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVswXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzFdICogeVsxXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzJdICog
eVsyXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgICAgICAgICByZXN1
bHRbMV1bMV0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0g
Kz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsy
XSAqIHlbMl1bMV07Ci0gICAgICAgICAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgICAgICAgICAg
cmVzdWx0WzFdWzJdICs9IHhbMV1bMF0gKiB5WzBdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMV0gKiB5WzFdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhb
MV1bMl0gKiB5WzJdWzJdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICAgICAg
ICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzBdICogeVswXVszXTsKLSAgICAgICAgICAgIHJlc3Vs
dFsxXVszXSArPSB4WzFdWzFdICogeVsxXVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSAr
PSB4WzFdWzJdICogeVsyXVszXTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQyeDMgbWF0cml4MSgpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIHg7
Ci0gICAgICAgICAgICB4WzBdWzBdID0gMjsKLSAgICAgICAgICAgIHhbMF1bMV0gPSAzOwotICAg
ICAgICAgICAgeFswXVsyXSA9IDU7Ci0gICAgICAgICAgICB4WzFdWzBdID0gNzsKLSAgICAgICAg
ICAgIHhbMV1bMV0gPSAxMTsKLSAgICAgICAgICAgIHhbMV1bMl0gPSAxMzsKLSAgICAgICAgICAg
IHJldHVybiB4OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0M3g0IG1hdHJpeDIoKSB7Ci0gICAg
ICAgICAgICBmbG9hdDN4NCB5OwotICAgICAgICAgICAgeVswXVswXSA9IDE3OwotICAgICAgICAg
ICAgeVswXVsxXSA9IDE5OwotICAgICAgICAgICAgeVswXVsyXSA9IDIzOwotICAgICAgICAgICAg
eVswXVszXSA9IDI5OwotICAgICAgICAgICAgeVsxXVswXSA9IDMxOwotICAgICAgICAgICAgeVsx
XVsxXSA9IDM3OwotICAgICAgICAgICAgeVsxXVsyXSA9IDQxOwotICAgICAgICAgICAgeVsxXVsz
XSA9IDQzOwotICAgICAgICAgICAgeVsyXVswXSA9IDQ3OwotICAgICAgICAgICAgeVsyXVsxXSA9
IDUzOwotICAgICAgICAgICAgeVsyXVsyXSA9IDU5OwotICAgICAgICAgICAgeVsyXVszXSA9IDYx
OwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDAo
KSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBd
WzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzAxKCkgewotICAgICAgICAgICAgcmV0
dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVswXVsxXTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBmb28wMigpIHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgx
KCksIG1hdHJpeDIoKSlbMF1bMl07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDMoKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzNd
OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEwKCkgewotICAgICAgICAgICAgcmV0dXJu
IG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVswXTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb28xMSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCks
IG1hdHJpeDIoKSlbMV1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTIoKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzFdWzJdOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEzKCkgewotICAgICAgICAgICAgcmV0dXJuIG11
bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVszXTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDAi
LCBbXSksIDE3ICogMiArIDMxICogMyArIDQ3ICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDEiLCBbXSksIDE5ICogMiArIDM3ICog
MyArIDUzICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vMDIiLCBbXSksIDIzICogMiArIDQxICogMyArIDU5ICogNSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDMiLCBbXSks
IDI5ICogMiArIDQzICogMyArIDYxICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTAiLCBbXSksIDE3ICogNyArIDMxICogMTEgKyA0
NyAqIDEzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICJmb28xMSIsIFtdKSwgMTkgKiA3ICsgMzcgKiAxMSArIDUzICogMTMpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCAy
MyAqIDcgKyA0MSAqIDExICsgNTkgKiAxMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMiLCBbXSksIDI5ICogNyArIDQzICogMTEgKyA2
MSAqIDEzKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0yLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpeC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEzYjE2NTAyYWEwZjM0NzEzNTJiZDY3
Zjc2NzlmMmQ2ZmRiMWRhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLWJvb2wgYWxsRXF1YWwo
ZmxvYXQ0eDQgbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0
OyBpID0gaSArIDEpIHsKLSAgICAgICAgZm9yICh1aW50IGogPSAwOyBqIDwgNDsgaiA9IGogKyAx
KSB7Ci0gICAgICAgICAgICBpZiAobWF0W2ldW2pdICE9IHZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9h
dDR4NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0g
ICAgICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUp
OwotICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IGZpbGwodGhyZWFkIGZsb2F0NCogdmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDQ7IGkgPSBpICsgMSkgewotICAgICAgICBy
ZXN1bHRbaV0gPSB2YWx1ZTsKLSAgICB9Ci0gICAgKnZlYyA9IHJlc3VsdDsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBhbGxFcXVhbChmbG9hdDQgdmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSArIDEpIHsKLSAgICAgICAgaWYgKHZlY1tp
XSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVT
aGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFk
SUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0eDQgbWF0OwotICAgIGZpbGwo
Jm1hdCwgMSk7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQsIDEpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmbG9hdDQgdmVjOwotICAgIGZpbGwoJnZlYywgMSk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2
ZWMsIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDQgdmVjMiA9IG11bChtYXQsIHZl
Yyk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMyLCA0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZmxvYXQ0eDQgbWF0MiA9IG11bChtYXQsIG1hdCk7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQyLCA0
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbWF0MiA9IG11bChtYXQyLCBtYXQyKTsKLSAgICBp
ZiAoIWFsbEVxdWFsKG1hdDIsIDY0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYnVmZmVyW3Vp
bnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0
MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0g
ICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsg
Ly8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCBy
ZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRj
aCg0LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJh
eUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3Qg
cmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVy
KTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJd
ID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVy
LnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4LWFsaWdubWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODI0OGYy
NzM0NDk2Njg4NDkzODczYmY2YzUzMzU1Yjc1OThmZTI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgt
YWxpZ25tZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJT
b3VyY2UgPSBgCi1zdHJ1Y3QgQ29udGFpbmVyMngyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0
MngyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjJ4MyB7Ci0gICAgZmxv
YXQgeDsKLSAgICBmbG9hdDJ4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWlu
ZXIyeDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQyeDQgbTsKLSAgICBmbG9hdCB5OwotfQot
Ci1zdHJ1Y3QgQ29udGFpbmVyM3gyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0M3gyIG07Ci0g
ICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjN4MyB7Ci0gICAgZmxvYXQgeDsKLSAg
ICBmbG9hdDN4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIzeDQgewot
ICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQzeDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3Qg
Q29udGFpbmVyNHgyIHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0NHgyIG07Ci0gICAgZmxvYXQg
eTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjR4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDR4
MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXI0eDQgewotICAgIGZsb2F0
IHg7Ci0gICAgZmxvYXQ0eDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1bbnVtdGhyZWFkcygxLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMngyKGRldmljZSBDb250YWluZXIyeDJb
XSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIo
dTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0g
PSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBj
b21wdXRlU2hhZGVyMngzKGRldmljZSBDb250YWluZXIyeDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUw
KSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBd
ID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1b
bnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMng0KGRldmlj
ZSBDb250YWluZXIyeDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0
cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsK
LSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gyKGRldmljZSBDb250YWluZXIzeDJbXSBpbnB1
dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7
Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1
dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRl
U2hhZGVyM3gzKGRldmljZSBDb250YWluZXIzeDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2
aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5w
dXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhy
ZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3g0KGRldmljZSBDb250
YWluZXIzeDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDog
cmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBv
dXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1
dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgyKGRldmljZSBDb250YWluZXI0eDJbXSBpbnB1dCA6IHJl
Z2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAg
b3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55
OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
NHgzKGRldmljZSBDb250YWluZXI0eDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZs
b2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0u
bVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygx
LCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHg0KGRldmljZSBDb250YWluZXI0
eDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0
ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRb
MV0gPSBpbnB1dFswXS55OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGlu
cHV0U2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDMyOwotICAgIGNvbnN0
IG91dHB1dFNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAyOwotCi0gICAg
Y29uc3QgdXBsb2FkQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBpbnB1dFNpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAg
Y29uc3QgdXBsb2FkQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih1cGxvYWRCdWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCB1cGxvYWRCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHVwbG9h
ZEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh1cGxvYWRCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAzMjsgKytpKQotICAgICAgICB1cGxvYWRCdWZmZXJGbG9hdDMyQXJy
YXlbaV0gPSBpOwotICAgIHVwbG9hZEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgaW5wdXRC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IGlucHV0U2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRX07Ci0gICAgY29uc3QgaW5wdXRCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGlucHV0QnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBvdXRwdXRCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IG91dHB1dFNpemUsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNv
bnN0IG91dHB1dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIob3V0cHV0QnVmZmVyRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZToge2J1ZmZlcjogaW5w
dXRCdWZmZXIsIHNpemU6IGlucHV0U2l6ZX19LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHtidWZm
ZXI6IG91dHB1dEJ1ZmZlciwgc2l6ZTogb3V0cHV0U2l6ZX19XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGxldCB0ZXN0cyA9IFsiY29tcHV0ZVNoYWRlcjJ4MiIsICJjb21wdXRlU2hhZGVyMngzIiwgImNv
bXB1dGVTaGFkZXIyeDQiLCAiY29tcHV0ZVNoYWRlcjN4MiIsICJjb21wdXRlU2hhZGVyM3gzIiwg
ImNvbXB1dGVTaGFkZXIzeDQiLCAiY29tcHV0ZVNoYWRlcjR4MiIsICJjb21wdXRlU2hhZGVyNHgz
IiwgImNvbXB1dGVTaGFkZXI0eDQiXTsKLSAgICBsZXQgcmVzdWx0cyA9IFtdOwotICAgIGZvciAo
bGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Y29tcHV0ZVN0YWdlOiB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6IHRlc3R9LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fSk7Ci0gICAg
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcih1cGxvYWRC
dWZmZXIsIDAsIGlucHV0QnVmZmVyLCAwLCBpbnB1dFNpemUpOwotICAgICAgICBjb25zdCBjb21w
dXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAg
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAg
ICAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICAgICAgY29tcHV0
ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICAgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgICAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRCdWZmZXJdKTsKLQotICAgICAgICBjb25zdCBvdXRwdXRBcnJheUJ1ZmZlciA9IGF3
YWl0IG91dHB1dEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgY29uc3Qgb3V0cHV0Rmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShvdXRwdXRBcnJheUJ1ZmZlcik7Ci0gICAgICAg
IHJlc3VsdHMucHVzaChvdXRwdXRGbG9hdDMyQXJyYXlbMF0pOwotICAgICAgICByZXN1bHRzLnB1
c2gob3V0cHV0RmxvYXQzMkFycmF5WzFdKTsKLSAgICAgICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7
Ci0gICAgfQotICAgIGxldCBleHBlY3RlZCA9IFsyLCA2LCA0LCAxMiwgNCwgMTIsIDIsIDgsIDQs
IDE2LCA0LCAxNiwgMiwgMTAsIDQsIDIwLCA0LCAyMF07Ci0gICAgbGV0IGVycm9yID0gZmFsc2U7
Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgewotICAgICAg
ICBpZiAocmVzdWx0c1tpXSAhPSBleHBlY3RlZFtpXSkgewotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdGVzdFBh
c3NlZCgiIik7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbihlKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5M2MzYzFhYjM4ZmVmNzI4MWJlMzAwNWEwMTc3NDdhZjIyNjQ4NTNm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgbWF0cml4TFQKLVBBU1MgbWF0cml4TFQyCi1QQVNT
IG1hdHJpeExURQotUEFTUyBtYXRyaXhMVEUyCi1QQVNTIG1hdHJpeExURTMKLVBBU1MgbWF0cml4
R1QKLVBBU1MgbWF0cml4R1QyCi1QQVNTIG1hdHJpeEdURQotUEFTUyBtYXRyaXhHVEUyCi1QQVNT
IG1hdHJpeEdURTMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJp
eC1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJiYjk2ODZhNDNjNWVjOTBkNDcw
NGM0YzlkYzA5ZGVjODE3MjdjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9
IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gy
IHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAg
ICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBhbGwodiA8IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAu
MDsKLSAgICAgICAgICAgIHYyWzBdWzBdIC09IDExLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyeDIg
cmVzdWx0ID0gdiA8IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVz
dWx0WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0g
ICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeExURSA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAy
MC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAgICAgIHYy
ICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4TFRFMiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4w
LCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLQotICAgICAgICAg
ICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVEUzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
djsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsKLSAgICAgICAgICAgIHYyWzBdWzBdIC09
IDEuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiByZXN1bHQgPSB2IDw9IHYyOwotICAgICAgICAg
ICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFdICYmIHJlc3VsdFsxXVswXSAg
JiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeEdUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0
M3gyKDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxv
YXQzeDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0
dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhHVDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAg
ICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjJbMF1bMF0gKz0gMS4wOwot
ICAgICAgICAgICAgdjJbMF1bMV0gLT0gMS4wOwotICAgICAgICAgICAgdjJbMV1bMF0gLT0gMS4w
OwotICAgICAgICAgICAgdjJbMV1bMV0gLT0gMS4wOwotCi0gICAgICAgICAgICBib29sMngyIHJl
c3VsdCA9IHYgPiB2MjsKLSAgICAgICAgICAgIHJldHVybiAhcmVzdWx0WzBdWzBdICYmIHJlc3Vs
dFswXVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3VsdFsxXVsxXTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAuMCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAu
MCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiAr
PSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gIWFueSh2ID49IHYyKTsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVEUyID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAs
IDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIgPSB2OwotCi0gICAgICAgICAg
ICByZXR1cm4gYWxsKHYgPj0gdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEdURTMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2
OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAgICAgICAgdjJbMF1bMF0gKz0g
MS4wOwotCi0gICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPj0gdjI7Ci0gICAgICAgICAg
ICByZXR1cm4gIXJlc3VsdFswXVswXSAmJiByZXN1bHRbMF1bMV0gJiYgcmVzdWx0WzFdWzBdICAm
JiByZXN1bHRbMV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NDA1OGNkOTI2NDRlOTZhZTQ2YjE3
NmNiOGM2MDA1NjY4MWIyYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgbWF0cml4Q29u
c3RydWN0b3IKLVBBU1MgbWF0cml4Q29uc3RydWN0b3IyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1s
aXN0LW9mLXNjYWxhcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NzhmYWM3OWQ2NjEzYzg1OGI3YmU2YmI4MjhjNDljNmZlMTJhOWQzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBsaXN0T2ZTY2FsYXJzTWF0cml4Q29uc3Ry
dWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29u
c3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUxY2UxZjQ3MGVmMzIxZjAwYzA3MjY1ZjE5Yjc1OWZmNjJkYjcyMWUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLmxpc3RPZlNjYWxhcnNNYXRy
aXhDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0
MngyKDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgYigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngzIG0gPSBm
bG9hdDJ4MygxLCAyLCAzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwot
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4NCBtID0gZmxvYXQyeDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQzeDIgbSA9IGZsb2F0M3gyKDEsIDIsIDMsIDQsIDUsIDYpOwotICAg
ICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0M3gzIG0gPSBmbG9hdDN4MygxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDN4NCBtID0gZmxv
YXQzeDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMik7Ci0gICAgICAgICAg
ICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBnKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQ0eDIgbSA9IGZsb2F0NHgyKDEsIDIsIDMsIDQsIDUsIDYsIDcs
IDgpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxv
YXQgaCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0NHgzIG0gPSBmbG9hdDR4MygxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyKTsKLSAgICAgICAgICAgIHJldHVybiBt
WzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGkoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDR4NCBtID0gZmxvYXQ0eDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAs
IDExLCAxMiwgMTMsIDE0LCAxNSwgMTYpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJhIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiYiIsIFtdKSwgNCwg
ZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rp
b24ocHJvZ3JhbSwgImMiLCBbXSksIDUsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJkIiwgW10pLCAzLCBlcHNpbG9u
KTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZSIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdh
aXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImYiLCBbXSksIDUsIGVwc2lsb24pOwotICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJn
IiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiaCIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImkiLCBbXSks
IDUsIGVwc2lsb24pOwotfQotCi0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0
cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3Rv
cnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyMjcxMTFlZmFiOGYwYjFi
OThlYmQ4MTE4ZGI5N2EzNDk3MThiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9y
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5tYXRyaXggY3Rvci48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gy
IHYgPSBmbG9hdDN4MihmbG9hdDIoMS4wLCAyLjApLCBmbG9hdDIoMy4wLCA0LjApLCBmbG9hdDIo
NS4wLCA2LjApKTsKLSAgICAgICAgICAgIHJldHVybiB2WzBdWzBdID09IDEuMCAmJiB2WzBdWzFd
ID09IDIuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzFdWzBdID09IDMuMCAmJiB2WzFdWzFdID09
IDQuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzJdWzBdID09IDUuMCAmJiB2WzJdWzFdID09IDYu
MDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5t
YXRyaXhDb25zdHJ1Y3RvcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIo
MS4wLCAyLjAsIDMuMCwgNC4wLCA1LjAsIDYuMCk7Ci0gICAgICAgICAgICByZXR1cm4gdlswXVsw
XSA9PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCi0gICAgICAgICAgICAgICAgJiYgdlsxXVswXSA9
PSAzLjAgJiYgdlsxXVsxXSA9PSA0LjAgCi0gICAgICAgICAgICAgICAgJiYgdlsyXVswXSA9PSA1
LjAgJiYgdlsyXVsxXSA9PSA2LjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSAr
MCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRl
eC1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1p
bmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcxY2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjODc4MTc4YmI2YWJiNDIyYjFjNGJlZmZhNTJlMTBlMWZjY2JkMDIxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPm1hdHJpeC1pbmRleC1h
c3NpZ24tc3dpenpsZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5m
aWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIG1hdDsKLSAgICAgICAg
ICAgIG1hdFswXSA9IGZsb2F0MygxMC4wLCAyMC4wLCAzMC4wKTsKLQotICAgICAgICAgICAgaWYg
KCFhbGwobWF0WzBdID09IGZsb2F0MygxMC4wLCAyMC4wLCAzMC4wKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoIWFsbChtYXRbMF0ueHkgPT0gZmxv
YXQyKDEwLjAsIDIwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIGlmICghYWxsKG1hdFswXS55eCA9PSBmbG9hdDIoMjAuMCwgMTAuMCkpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgbWF0WzBdLnh5ID0gZmxvYXQy
KDEuMCwgMi4wKTsKLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXS54eSA9PSBmbG9hdDIoMS4w
LCAyLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1h
dFswXS55eC55eCA9IGZsb2F0MigxMDAuMCwgMjAwLjApOwotICAgICAgICAgICAgaWYgKCFhbGwo
bWF0WzBdLnh5ID09IGZsb2F0MigxMDAuMCwgMjAwLjApKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgYDsK
LQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRl
eC1vcmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWlu
ZGV4LW9yZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5
YWZkYmQzZGI3Y2UxZjMwY2ZmNGJjNjljZTgxOGRhY2FjMzAzNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBA
QAotCi1QQVNTIG1hdE11bAotUEFTUyBtYXRNdWwyCi1QQVNTIG1hdE11bDMKLVBBU1MgbWF0TXVs
NAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9y
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5OTQ0MzJhOWY2N2FlMGZmODhmM2Ux
MWZiNmM0MjE4ODc2NjUwY2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+bWF0cml4LWluZGV4LW9yZGVyLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLm1hdE11bCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngzIGEgPSBmbG9h
dDJ4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMoMSwgMiwgMyksCi0gICAgICAgICAgICAgICAg
ZmxvYXQzKDQsIDUsIDYpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MiBi
ID0gZmxvYXQzeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDcsIDgpLAotICAgICAgICAgICAg
ICAgIGZsb2F0Mig5LCAxMCksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDExLCAxMikKLSAgICAg
ICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0M3gzIHJlc3VsdCA9IG11bChhLCBiKTsKLQot
ICAgICAgICAgICAgZmxvYXQzeDMgZXhwZWN0ZWQgPSBmbG9hdDN4MygKLSAgICAgICAgICAgICAg
ICBmbG9hdDMoMzksIDU0LCA2OSksCi0gICAgICAgICAgICAgICAgZmxvYXQzKDQ5LCA2OCwgODcp
LAotICAgICAgICAgICAgICAgIGZsb2F0Myg1OSwgODIsIDEwNSkKLSAgICAgICAgICAgICk7Ci0g
ICAgICAgICAgICByZXR1cm4gYWxsKGV4cGVjdGVkID09IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAg
ICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0TXVsMiA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MngyIGEgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMSwg
OCksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDUsIDEyKQotICAgICAgICAgICAgKTsKLQotICAg
ICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoMjIsIDQ1KTsKLQotICAgICAgICAgICAgZmxvYXQy
IHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyIGV4cGVjdGVkID0gZmxv
YXQyKDI0NywgNzE2KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1
bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdE11bDMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
Ym9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhID0gZmxvYXQyeDIoCi0gICAgICAg
ICAgICAgICAgZmxvYXQyKDEsIDIpLAotICAgICAgICAgICAgICAgIGZsb2F0MigzLCA0KQotICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgYiA9IGZsb2F0MngyKAotICAgICAg
ICAgICAgICAgIGZsb2F0Mig1LCA2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNywgOCkKLSAg
ICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIHJlc3VsdCA9IG11bChhLCBiKTsK
LQotICAgICAgICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQgPSBmbG9hdDJ4MigKLSAgICAgICAgICAg
ICAgICBmbG9hdDIoMjMsIDM0KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMzEsIDQ2KQotICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBiYXIoKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBiID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEsIDIpLAotICAgICAgICAg
ICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQy
eDIgYSA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCA2KSwKLSAgICAgICAg
ICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0
MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQg
PSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTksIDIyKSwKLSAgICAgICAgICAg
ICAgICBmbG9hdDIoNDMsIDUwKQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJu
IGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
YmFyIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0TXVsNCA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAg
ICAgIGZsb2F0Mng0IGEgPSBmbG9hdDJ4NCgKLSAgICAgICAgICAgICAgICBmbG9hdDQoMSwgMiwg
MywgNCksCi0gICAgICAgICAgICAgICAgZmxvYXQ0KDUsIDYsIDcsIDgpCi0gICAgICAgICAgICAp
OwotCi0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxvYXQzeDIoCi0gICAgICAgICAgICAgICAg
ZmxvYXQyKDksIDEwKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTEsIDEyKSwKLSAgICAgICAg
ICAgICAgICBmbG9hdDIoMTMsIDE0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxv
YXQzeDQgcmVzdWx0ID0gbXVsKGEsIGIpOwotCi0gICAgICAgICAgICBmbG9hdDN4NCBleHBlY3Rl
ZCA9IGZsb2F0M3g0KAotICAgICAgICAgICAgICAgIGZsb2F0NCg1OSwgNzgsIDk3LCAxMTYpLAot
ICAgICAgICAgICAgICAgIGZsb2F0NCg3MSwgOTQsIDExNywgMTQwKSwKLSAgICAgICAgICAgICAg
ICBmbG9hdDQoODMsIDExMCwgMTM3LCAxNjQpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAg
ICByZXR1cm4gYWxsKGV4cGVjdGVkID09IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwg
W10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1s
YXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1v
cnktbGF5b3V0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcx
MjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCww
IEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnkt
bGF5b3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlv
dXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwMTA4NWEyNGFkZDU4YzAx
OTdiZjA2MWYyN2M4ZWFiYTFiMTY5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlv
dXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9
IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2
aWNlIGZsb2F0NHg0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBT
Vl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKLSAgICByZXN1bHRbMV0gPSBmbG9hdDQoNSwgNiwgNywg
OCk7Ci0gICAgcmVzdWx0WzJdID0gZmxvYXQ0KDksIDEwLCAxMSwgMTIpOwotICAgIHJlc3VsdFsz
XSA9IGZsb2F0NCgxMywgMTQsIDE1LCAxNik7Ci0KLSAgICBmbG9hdDR4NCBtYXQgPSBidWZmZXJb
MF07Ci0KLSAgICBpZiAobWF0WzBdWzBdID09IDAKLSAgICAgICAgJiYgbWF0WzBdWzFdID09IDEK
LSAgICAgICAgJiYgbWF0WzBdWzJdID09IDIKLSAgICAgICAgJiYgbWF0WzBdWzNdID09IDMKLQot
ICAgICAgICAmJiBtYXRbMV1bMF0gPT0gNAotICAgICAgICAmJiBtYXRbMV1bMV0gPT0gNQotICAg
ICAgICAmJiBtYXRbMV1bMl0gPT0gNgotICAgICAgICAmJiBtYXRbMV1bM10gPT0gNwotCi0gICAg
ICAgICYmIG1hdFsyXVswXSA9PSA4Ci0gICAgICAgICYmIG1hdFsyXVsxXSA9PSA5Ci0gICAgICAg
ICYmIG1hdFsyXVsyXSA9PSAxMAotICAgICAgICAmJiBtYXRbMl1bM10gPT0gMTEKLQotICAgICAg
ICAmJiBtYXRbM11bMF0gPT0gMTIKLSAgICAgICAgJiYgbWF0WzNdWzFdID09IDEzCi0gICAgICAg
ICYmIG1hdFszXVsyXSA9PSAxNAotICAgICAgICAmJiBtYXRbM11bM10gPT0gMTUpIHsKLSAgICAg
ICAgYnVmZmVyWzBdID0gcmVzdWx0OwotICAgIH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0
ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDE2OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0
IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlC
dWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzFdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAyOwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVszXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzRdID0gNDsKLSAg
ICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9
IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJy
YXlbOF0gPSA4OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IDk7Ci0gICAgYnVmZmVyRmxv
YXQzMkFycmF5WzEwXSA9IDEwOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxMTsKLSAg
ICBidWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMTI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEz
XSA9IDEzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxNDsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMTVdID0gMTU7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9Owot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1
bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9
PT0gMQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09PSAyCi0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT09IDMKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVszXSA9PT0gNAotCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT09IDUK
LSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PT0gNgotICAgICAgICAmJiByZXN1
bHRzRmxvYXQzMkFycmF5WzZdID09PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlb
N10gPT09IDgKLQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzhdID09PSA5Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbOV0gPT09IDEwCi0gICAgICAgICYmIHJlc3VsdHNG
bG9hdDMyQXJyYXlbMTBdID09PSAxMQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzEx
XSA9PT0gMTIKLQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzEyXSA9PT0gMTMKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxM10gPT09IDE0Ci0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMTRdID09PSAxNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5
WzE1XSA9PT0gMTYpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAg
dGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRl
c3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXguaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmM2MDJiYmJlNWUxM2IwMmRjNDMyODkxNzQ1N2Q3YTViNzJmZjFj
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+
Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIGFsbEVxdWFsKGZsb2F0MngzIG1hdCwgZmxv
YXQgdmFsdWUpCi17Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMjsgaSA9IGkgKyAxKSB7Ci0g
ICAgICAgIGZvciAodWludCBqID0gMDsgaiA8IDM7IGogPSBqICsgMSkgewotICAgICAgICAgICAg
aWYgKG1hdFtpXVtqXSAhPSB2YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDog
cmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0g
ICAgZmxvYXQyeDMgZm9vOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAwKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9vID0gZm9vICsgZmxvYXQyeDMoZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBm
bG9hdDMoMS4wLCAxLjAsIDEuMCkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCAxKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vICogZmxvYXQyeDMoZmxvYXQzKDguNSwgOC41LCA4
LjUpLCBmbG9hdDMoOC41LCA4LjUsIDguNSkpOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA4LjUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gLSBmbG9hdDJ4MyhmbG9hdDMoNy41
LCA3LjUsIDcuNSksIGZsb2F0Myg3LjUsIDcuNSwgNy41KSk7Ci0gICAgaWYgKCFhbGxFcXVhbChm
b28sIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmbG9hdDJ4MyhmbG9h
dDMoMS4wLCAxLjAsIDEuMCksIGZsb2F0MygxLjAsIDEuMCwgMS4wKSk7Ci0gICAgaWYgKCFhbGxF
cXVhbChmb28sIDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmb287Ci0g
ICAgaWYgKCFhbGxFcXVhbChmb28sIDQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBm
b28gKyBmb287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmbG9hdDMgZm91cnR5VHdvOwotICAgIGZvdXJ0eVR3by54ID0gNDI7Ci0gICAgZm91cnR5
VHdvLnkgPSA0MjsKLSAgICBmb3VydHlUd28ueiA9IDQyOwotCi0gICAgZm9vWzBdID0gZm91cnR5
VHdvOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAgICBpZiAoIWFsbEVxdWFsKGZvbywgNDIp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb29bMTMzN10gPSBmb3VydHlUd287Ci0gICAgaWYg
KCFhbGxFcXVhbChmb28sIDQyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vWzEwMDAwMDBd
ID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvdXJ0eVR3b1sxMzM3XSA9IDUwOwotICAgIGlmIChmb3VydHlUd28ueCAhPSA1
MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm91cnR5VHdvWzEzMzddID0gNDI7Ci0gICAgZm9v
WzFdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGZvdXJ0eVR3b1sxMDAwMDAwXSA9IDUwOwotICAgIGlmIChmb3VydHlUd28u
eCAhPSA1MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm91cnR5VHdvWzEzMzddID0gNDI7Ci0g
ICAgZm9vWzFdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwoZm9vLCA0MikpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZsb2F0MyBzaG91bGRCZUZvdXJ0eVR3byA9IGZvb1sxMDAwMDBd
OwotICAgIGlmIChzaG91bGRCZUZvdXJ0eVR3by54ICE9IDQyIHx8IHNob3VsZEJlRm91cnR5VHdv
LnkgIT0gNDIgfHwgc2hvdWxkQmVGb3VydHlUd28ueiAhPSA0MikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGZvdXJ0eVR3b1sxMDAwMDAwMF0gIT0gNDIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAq
IDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5l
TGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0
ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJE
ZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVC
dWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3
YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAg
ICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9
IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJy
YXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVC
dWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25z
dCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZl
ciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNv
dXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHts
YXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVy
KGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXIuZGlzcGF0Y2goNCwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25z
dCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygp
OwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3Vs
dHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0g
OAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVz
dWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlb
Nl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzddID09IDgpCi0gICAgICAg
IHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgibm90IGNvcnJl
Y3QiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVz
c2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0
ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVl
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZDcwZTUwNjU1YjAyMzUxZTRl
NDdjZDQ0MGY2MDMxYmM1MzhhMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lv
bi1ydmFsdWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLQotc3RydWN0IEJhciB7Ci0gICAgZmxvYXQgc2hhZGU7Ci19Ci1zdHJ1Y3QgRm9v
IHsKLSAgICBCYXIgYmFyOwotfQotCi1zdHJ1Y3QgV3JhcHBlciB7Ci0gICAgRm9vIGZvbzsKLX0K
LQotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247
Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQg
dmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUg
OiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBXcmFwcGVyIHdyYXBwZXI7Ci0gICAgd3JhcHBlci5mb28u
YmFyLnNoYWRlID0gc2hhZGU7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLSAgICByZXN1bHQucG9z
aXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSB3cmFwcGVyLmZvby5iYXIuc2hh
ZGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAi
ZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9y
bWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJp
YnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRy
aWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0g
ICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7
YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9u
ZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9u
ZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVk
LWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjdlODI2Y2U0MGU2OGVhYjA4ZDRhNTY1NDY3
Njk3Y2ZmNmUwYjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTc1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91
dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUg
OiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsK
LSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgc2hhZGUgPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgZG8g
ewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gc2hhZGUgKyAxLjAsIGZhbHNlKSk7
Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRlID0gc2hhZGUg
LSAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgd2hpbGUgKChzaGFkZSA9IHNoYWRlICsgMS4wLCB0
cnVlKSkgewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlICgoc2hhZGUgPSBzaGFkZSAt
IDEuMCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRp
b24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6
IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwg
c2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsK
LSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0
dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDog
MH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAi
ZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAs
IGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVT
ZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50
U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVz
LCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwot
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0g
MC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVy
OiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9
IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5k
R3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5k
UGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVs
bC1hcmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhMTQwMWNlNmU0NzIw
OWMyMzZlOGRmNzM3ZmJhODI5ZTNkNzQzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbnVsbElzRXJyb3IK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJnLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNThhNWQwMzM1MmQ4ZTM1MGIzYzY5NDE3ZWFjMzNjYWI5YjFmZjdmYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bnVsbC48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5udWxsSXNFcnJvciA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50KiBwdHIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqcHRyOwotICAgICAgICB9Ci0gICAgICAgIGlu
dCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vKG51bGwpOwotICAgICAg
ICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGJhcigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHg7Ci0gICAgICAgIH0KLSAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgYmFyKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdGhyZWFkIGludFtdIHg7Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nl
c3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjM5MWYxYzlh
OWVlYzNkMTc2Nzk5ZDU0MDdhY2JhZGIxOGQyZGE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5
LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAg
QEAKLQotUEFTUyBzdG9yZU51bGxBcnJheVJlZgotUEFTUyBsb2FkTnVsbEFycmF5UmVmCi1QQVNT
IG51bGxOYW1lZEFjY2VzcwotUEFTUyBudWxsTmFtZWRBY2Nlc3MyCi1QQVNTIG51bGxOYW1lZEFj
Y2Vzc1NpbmsKLVBBU1MgbnVsbE5hbWVkQWNjZXNzU2luazIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJvcGVydHktYWNjZXNzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NhMDlkZWZkZTE4ODhiNmViMmEzMzMwODUxNDg2
ZGUwMjIyNTcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+bG9hZC9zdG9yZSB0byBudWxsLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9
OwotCi13aGxzbFRlc3RzLnN0b3JlTnVsbEFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKSB7IG51bGxb
MF0gPSA0MjsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sb2FkTnVsbEFycmF5UmVm
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBzaW5rKHRocmVhZCBpbnQqIHgpIHsgfQotICAgICAgICAgICAgdm9pZCBmb28o
KSB7IHNpbmsobnVsbFswXSk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5h
bWVkQWNjZXNzID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgdm9pZCBmb28oKSB7IG51bGwtPng7IH0KLSAgICAgICAgYCk7Ci19Ci0K
LXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBudWxsLng7IH0K
LSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzU2luayA9IGFzeW5j
ICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZv
aWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luayhudWxsLT54
KTsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5udWxsTmFtZWRBY2Nlc3NTaW5rMiA9
IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIHZvaWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luayhu
dWxsLngpOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwt
YXJyYXktcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1yZWYu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1MTdhZDQwM2ZmZWIwZDc2ZjU2
Y2RhNDM0OGE1Y2M1MjMzMjIzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5kZXJlZmVyZW5jZURlZmF1bHROdWxsQXJyYXlSZWYgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGhyZWFkIGludFtdIHA7Ci0gICAgICAgICAgICByZXR1cm4gcFswXTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMuZGVmYXVsdEluaXRpYWxpemVkTnVsbEFy
cmF5UmVmSW50TGl0ZXJhbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gcCA9
IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gcFswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
MCk7Ci19Ci0KLXdobHNsVGVzdHMucGFzc051bGxUb1B0ck1vbm9tb3JwaGljQXJyYXlSZWYgPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKHRocmVh
ZCBpbnRbXSBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdHJbMHVdOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Zm9vKG51bGwpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5s
b2FkTnVsbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICB2b2lkIHNpbmsodGhyZWFkIGludCogeCkgeyB9Ci0gICAgICAgICAgICB2
b2lkIGZvbygpIHsgc2luaygqbnVsbCk7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNhMTNhZjg4ZTEyNTllZmY1YWMzMmI4NjRhMTY0MjExNjJkNmZhNWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwz
ICswLDAgQEAKLQotUEFTUyBvb2IKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29vYi1hY2Nlc3MtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nl
c3MtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2NjYTVkZWRlMDdjOWJl
YWY3MjI2NWQwMTg3MWI4ZTlkYTc4NzI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+T09CLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
Lm9vYiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHggPSAzOwotICAgICAgICAgICAgdGhy
ZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAg
ICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmFyKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50WzEwXSB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsK
LSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJuIHhbMF07Ci0g
ICAgICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
WzEwXSB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFb
NDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJuIHhbMV07Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDI1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiYmFyIiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29v
Yi1hY2Nlc3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2It
YWNjZXNzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4YzkxNGQ4YzNiNThmMTBkZmU2ZDYzZjk4YmUxNjVmNDBiN2I0NjFiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vb2ItYWNjZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0
IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDQsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNv
bXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMg
dGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyWzEzMzddID0gMC4w
OwotICAgIGJ1ZmZlcls0MjQyNDI0Ml0gPSAwLjA7Ci0gICAgaWYgKGJ1ZmZlclsxMDAwMDBdID09
IDAuMCkKLSAgICAgICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhy
ZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNv
bnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
M10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RP
UkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRp
bmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJp
bmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJp
bmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFw
UmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVsw
XSA9PSAwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0g
OCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiNTY2MWQ0ZGM2MDA0NmFlYjhl
YzRiN2NiMTA4MzI4OGFhN2Y4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvckRpdgotUEFT
UyB2ZWN0b3JEaXZXaXRoU2NhbGFyCi1QQVNTIHZlY3RvckRpdldpdGhTY2FsYXIyCi1QQVNTIG1h
dHJpeERpdgotUEFTUyBtYXRyaXhEaXZTY2FsYXIKLVBBU1MgbWF0cml4RGl2U2NhbGFyMgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdlNmE5Yjk0ZTNhYTc3MmJmZGQ4NjMwZWUxMmViMGVmYzYyOTU0NTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RGl2LjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0
cy52ZWN0b3JEaXYgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDMwKTsK
LSAgICAgICAgICAgIGZsb2F0MiB5ID0gZmxvYXQyKDUsIDEwKTsKLSAgICAgICAgICAgIGZsb2F0
MiByID0geCAvIHk7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCAyLzMsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JEaXZXaXRoU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAy
NSk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggLyA1LjA7Ci0gICAgICAgICAgICByZXR1cm4g
ci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyLzUsIGVwc2lsb24p
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRoU2NhbGFyMiA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAg
ICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAgICAgICAgICAgZmxvYXQyIHIgPSAxMDAg
LyB4OwotICAgICAgICAgICAgcmV0dXJuIHIueCAvIHIueTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdKSwgMTAvNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdiA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIw
LCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAg
IGZsb2F0MngyIG0yOwotICAgICAgICAgICAgbTJbMF0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0g
ICAgICAgICAgICBtMlsxXSA9IGZsb2F0MigtMS4wLCAtMS4wKTsKLQotICAgICAgICAgICAgbSA9
IG0gLyBtMjsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9
PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxh
ciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQy
KDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAg
ICAgIG0gPSBtIC8gLTEuMDsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYg
bVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjAp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eERpdlNjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0MigyNSwgNTApOwot
Ci0gICAgICAgICAgICBtID0gMTAwLjAgLyBtOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9
PSAxMC4wICYmIG1bMF1bMV0gPT0gNS4wICYmIG1bMV1bMF0gPT0gNC4wICYmIG1bMV1bMV0gPT0g
Mi4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1YWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDc3ZWFhZWVlN2Q5NWEzYjAwNThiNjRlNDk3OWRhNGQ2
YTBiMmJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotUEFTUyBtYXRyaXhFcXVhbAotUEFTUyB2
ZWN0b3JFcXVhbHMKLVBBU1Mgc2NhbGFyRXF1YWxzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc5ZGEwNDBmNTNkMzhhZTgyMGQ1OTEyZTYxNDQ4NDJjMzllY2EyZjAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4K
LTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0
cy5tYXRyaXhFcXVhbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBt
WzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtMyA9IG07Ci0gICAgICAgICAgICBtM1swXVsxXSArPSAx
MC4wOwotCi0gICAgICAgICAgICBib29sMngyIG0yID0gbSA9PSBtMzsKLQotICAgICAgICAgICAg
cmV0dXJuIG0yWzBdWzBdICYmICFtMlswXVsxXSAmJiBtMlsxXVswXSAmJiBtMlsxXVsxXTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JF
cXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAg
ICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYy
ID09IHY7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgcmVzdWx0Lnk7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuc2NhbGFyRXF1YWxz
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgZmxvYXQgeCA9IDEwLjA7Ci0gICAgICAgICAgICBmbG9hdCB5ID0g
eDsKLSAgICAgICAgICAgIHJldHVybiB4ID09IHk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10p
LCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW1pbnVzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlZDQ1ODdlNzRmZjExNmQw
MGRmODY0OGU4NWUxYjE4ZTcyOWMyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIHZlY3Rvck1p
bnVzCi1QQVNTIHZlY3Rvck5lZ2F0ZQotUEFTUyB2ZWN0b3JNaW51c1NjYWxhcgotUEFTUyB2ZWN0
b3JNaW51c1NjYWxhcjIKLVBBU1MgbWF0cml4TWludXMKLVBBU1MgbWF0cml4TWludXNTY2FsYXIK
LVBBU1MgbWF0cml4TWludXNTY2FsYXIyCi1QQVNTIG1hdHJpeE5lZ2F0ZQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItbWludXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZjAwZGQ2YmFjZDVlMWNiOWU4NzU5MTRmZmIzNzU1ODljMTRhMTJhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+TWludXMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3Rz
LnZlY3Rvck1pbnVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDEwLCAyNSk7Ci0gICAg
ICAgICAgICBpbnQyIHkgPSBpbnQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBpbnQyIHIgPSB5IC0g
eDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10p
LCAyKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTmVnYXRlID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQy
IHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICB4ID0gLXg7Ci0gICAgICAgICAgICByZXR1
cm4geC54ICsgeC55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgLTM1KTsKLX07Ci0KLXdobHNs
VGVzdHMudmVjdG9yTWludXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9h
dDIoMTAuMCwgMjUuMCk7Ci0gICAgICAgICAgICB4ID0geCAtIDUuMDsKLSAgICAgICAgICAgIHJl
dHVybiB4LnkgLyB4Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAyMC81LCBl
cHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTWludXNTY2FsYXIyID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKC0xMC4wLCAtMjUuMCk7Ci0gICAgICAgICAgICB4ID0g
NS4wIC0geDsKLSAgICAgICAgICAgIHJldHVybiB4LnkgLyB4Lng7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCAzMC8xNSwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eE1pbnVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBm
bG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLSAgICAg
ICAgICAgIG0gPSBtIC0gbTsKLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDAgJiYgbVswXVsx
XSA9PSAwICYmIG1bMV1bMF0gPT0gMCAmJiBtWzFdWzFdID09IDApCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFyID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMw
KTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQotICAgICAgICAgICAgbSA9
IG0gLSAxLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDE5LjAgJiYgbVswXVsxXSA9
PSAyOS4wICYmIG1bMV1bMF0gPT0gMzkuMCAmJiBtWzFdWzFdID09IDQ5LjApCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFy
MiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQy
KDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAg
ICAgIG0gPSAwLjAgLSBtOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAmJiBt
WzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4
TmVnYXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBm
bG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAsIDUwKTsKLQotICAg
ICAgICAgICAgbSA9IC1tOwotCi0gICAgICAgICAgICBpZiAobVswXVswXSA9PSAtMjAuMCAmJiBt
WzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQwLjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjlhYzQxYjRkMzkzZDMzYmVlNjAwYTkxOTA3YmIxMGMyM2Q3MWY4ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JXaXRob3V0VW5pbmZlcnJhYmxlVHlwZVZh
cmlhYmxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1v
dmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2Fk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMTg1NGM3ZDIxZmNmZmQxNzVj
MWRmOGZiNDc0ODdiNjJmODNmMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPk9wZXJhdG9yKyBvdmVybG9hZC48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5vcGVyYXRvcldpdGhvdXRVbmluZmVycmFibGVUeXBlVmFyaWFibGUg
PSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHN0cnVjdCBGb28g
ewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0KLSAgICAgICAgRm9vIG9wZXJhdG9yKyhG
b28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZvbyByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQueCA9IGEueCArIGIueDsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZvbyBh
OwotICAgICAgICAgICAgYS54ID0gNjQ1OwotICAgICAgICAgICAgRm9vIGI7Ci0gICAgICAgICAg
ICBiLnggPSAtMzU7Ci0gICAgICAgICAgICByZXR1cm4gKGEgKyBiKS54OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCA2NDUgLSAzNSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3ItcGx1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
cGx1cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1N2FlN2E2
YzIxMTRiYjM1NmE4ZTQzMjRkZGQxYmFhMDNmODBhMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9y
LXBsdXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1Mg
dmVjdG9yUGx1cwotUEFTUyB2ZWN0b3JQbHVzU2NhbGFyCi1QQVNTIHZlY3RvclBsdXNTY2FsYXIy
Ci1QQVNTIG1hdHJpeFBsdXMKLVBBU1MgbWF0cml4VGltZXNTY2FsYXIKLVBBU1MgbWF0cml4VGlt
ZXNTY2FsYXIyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRv
ci1wbHVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODQ2YmU1MGI2NDgwYzk5NDMyODFiNWY3
NWFmMjI1Mjg3NmViNDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRh
IGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0
aXRsZT5QbHVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAu
MDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JQbHVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4
ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBmbG9hdDIgeSA9IGZsb2F0MigyMCwgMzAp
OwotICAgICAgICAgICAgZmxvYXQyIHIgPSB5ICsgeDsKLSAgICAgICAgICAgIHJldHVybiByLngg
LyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwLzU1LCBlcHNpbG9uKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1c1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDIgeCA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB4ICsgMTAuMDsK
LSAgICAgICAgICAgIHJldHVybiByLnkgLyByLng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDMwLzIwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1c1NjYWxh
cjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQg
Zm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAg
ICAgIGZsb2F0MiByID0gMTAuMCArIHg7Ci0gICAgICAgICAgICByZXR1cm4gci55IC8gci54Owot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAzMC8yMCwgZXBzaWxvbik7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeFBsdXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAg
ICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0
MCwgNTApOwotICAgICAgICAgICAgZmxvYXQyeDIgbTI7Ci0gICAgICAgICAgICBtMlswXSA9IGZs
b2F0MigtMjAsIC0zMCk7Ci0gICAgICAgICAgICBtMlsxXSA9IGZsb2F0MigtNDAsIC01MCk7Ci0g
ICAgICAgICAgICBtID0gbSArIG0yOwotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gMCAmJiBt
WzBdWzFdID09IDAgJiYgbVsxXVswXSA9PSAwICYmIG1bMV1bMV0gPT0gMCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4VGltZXNTY2FsYXIg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28o
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0Migy
MCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwotCi0gICAgICAgICAg
ICBtID0gbSArIDEwLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IDMwLjAgJiYgbVsw
XVsxXSA9PSA0MC4wICYmIG1bMV1bMF0gPT0gNTAuMCAmJiBtWzFdWzFdID09IDYwLjApCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFRpbWVz
U2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBi
b29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0g
ZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAg
ICAgICAgICAgIG0gPSAxMC4wICsgbTsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gMzAu
MCAmJiBtWzBdWzFdID09IDQwLjAgJiYgbVsxXVswXSA9PSA1MC4wICYmIG1bMV1bMV0gPT0gNjAu
MCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMTY5MTU2ZGMzMDliMTYxNzU4ODdhMDRhYTlmYmNkNGYxOWU4NmExLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JTeW50YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZTFiNzc5MzViYzY4YWU2YWYzNzQ2NmQ2YWJjM2U4NGMyNTNkMjkyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+U29tZSBvcGVyYXRvcnMgc2hvdWxk
IGJlIHN5bnRheCBlcnJvcnMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMub3BlcmF0b3JTeW50YXggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb28oRm9vKSB7
IHJldHVybiA0MjsgfQotICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvci5mb289KEZvbykgeyByZXR1cm4gNDI7
IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28g
eyB9Ci0gICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oRm9vKSB7IGludCB4OyByZXR1
cm4gJng7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltdKEZvbywgdWludCkgeyByZXR1cm4gNDI7
IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28g
eyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltdPShGb28sIHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0g
ICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsgfQot
ICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXShGb28sIHVpbnQpIHsgaW50IHg7IHJldHVy
biAmeDsgfQotICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRp
bWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1l
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzhlNWE1ZmEx
ODA0ZGVjZDQ3YWY4MTBkZWQ4NDFmYzhhNWZmOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRp
bWVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1QQVNTIHZl
Y3RvclRpbWVzCi1QQVNTIHZlY3RvclRpbWVzV2l0aFNjYWxhcgotUEFTUyB2ZWN0b3JUaW1lc1dp
dGhTY2FsYXIyCi1QQVNTIG1hdHJpeFRpbWVzCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyCi1QQVNT
IG1hdHJpeFRpbWVzU2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItdGltZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRv
ci10aW1lcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjQ3ZTAyNDg3NzZh
NjE3YzMxYmRkMDg4M2ViYjUwZWM1MjJkMzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1l
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+VGltZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25z
dCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvclRpbWVzID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDIsIDUpOwotICAgICAgICAgICAgZmxvYXQyIHkgPSBm
bG9hdDIoMywgMTApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB5ICogeDsKLSAgICAgICAgICAg
IHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hf
ZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDYvNTAs
IGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUaW1lc1dpdGhTY2FsYXIgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewot
ICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZsb2F0
MiByID0geCAqIDIuMDsKLSAgICAgICAgICAgIHJldHVybiByLnggKiByLnk7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDIwICogNDAsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0
cy52ZWN0b3JUaW1lc1dpdGhTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxv
YXQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IDIuMCAqIHg7Ci0gICAgICAgICAg
ICByZXR1cm4gci54ICogci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMCAq
IDQwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMubWF0cml4VGltZXMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAg
ICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwotCi0gICAgICAgICAgICBmbG9hdDJ4MiBt
MjsKLSAgICAgICAgICAgIG0yWzBdID0gZmxvYXQyKC0xLjAsIC0xLjApOwotICAgICAgICAgICAg
bTJbMV0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0KLSAgICAgICAgICAgIG0gPSBtICogbTI7Ci0K
LSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IC0yMC4wICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYg
bVsxXVswXSA9PSAtNDAuMCAmJiBtWzFdWzFdID09IC01MC4wKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28i
LCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhUaW1lc1NjYWxhciA9IGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7
Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSBt
ICogLTEuMDsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9
PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2Nh
bGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29s
IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxv
YXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAg
ICAgICAgIG0gPSAtMS4wICogbTsKLQotICAgICAgICAgICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAg
JiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1bMV1bMV0gPT0gLTUw
LjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYyODZmMzQyMDZmYTNmNDU3MWM5YzliOTM1NjYy
ZTVjYTNiZWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3RvckluZGV4QXNz
aWduCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9y
LWFzc2lnbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlNjY0MTZiZTYx
MjRlNjMxZTQ5MzllOGUwM2JkMzg2N2M5OWRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItYXNzaWduLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQi
IGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3
aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZl
Y3RvckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB4WzBd
ID0gMjA7Ci0gICAgICAgICAgICB4WzFdID0gMTA7Ci0gICAgICAgICAgICB4WzUwMDBdID0gNDA7
Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55ICsgeFs1MDAwXTsKLSAgICAgICAgfQotICAg
IGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIDQwIC8gMTAgKyA0MCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29w
ZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg5NzI1NTcxN2NkNzRlOTE0ZjhjZjY2NWJhNmVmZGNiZDBlZGEzMjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3RvckluZGV4TG9hZAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWxvYWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2N2IzNzQ2N2EwMjcwMDBkMGEyZTEyZmVhMDI1ODViOGJiYjVj
NDcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5U
ZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBz
aWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JJbmRleExvYWQgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAg
ICAgIGludDIgeDsKLSAgICAgICAgICAgIHgueCA9IDIwOwotICAgICAgICAgICAgeC55ID0gMTA7
Ci0gICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAgICAgICAgICByZXR1cm4geFswXSAvIHhb
MV0gKyB4WzUwMDBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgNDAvMTAgKyA0MCk7Ci19Owot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgzYTM5ODBhYWE4MTgxZDEwNDBhM2I0ZGE1NWY4YTMxOTM3OGNj
MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9yWFkKLVBBU1MgYXNzaWduT3BlcmF0b3JY
WQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3IteHkuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzN2NhNWE4YzA4OTA2NWExMTBlZjI1OWQ0NzczOTE3ODgzZDll
OTlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT54eS48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVz
dHMub3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaWYgKGJvb2wyKHRydWUsIGZhbHNlKS54eS54
KQotICAgICAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBpZiAoYm9vbDIodHJ1ZSwg
ZmFsc2UpLnl4LnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI0OwotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJheigpIHsKLSAgICAgICAgICAgIGludDIg
eCA9IGludDIoMjAsIDEwKTsKLSAgICAgICAgICAgIHggPSB4Lnh5OwotICAgICAgICAgICAgcmV0
dXJuIHgueCAtIHgueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMjQpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBb
XSksIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMuYXNzaWduT3BlcmF0b3JYWSA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCBpbnQgYikg
ewotICAgICAgICAgICAgaW50MiB4OwotICAgICAgICAgICAgeC54eSA9IGludDIoYSwgYik7Ci0g
ICAgICAgICAgICByZXR1cm4geC54IC0geC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgyMCksIG1ha2VJbnQoMTApXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMTApLCBtYWtlSW50KDIwKV0pLCAt
MTApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3ZlcmxvYWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODVlZjdjMWZkY2I5NWU2NjZiZjZiZTc2ZTRkOGZhZDU5
YWEyZjM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLQotUEFTUyBpbnRPdmVybG9hZFJlc29sdXRpb24KLVBBU1MgaW50
T3ZlcmxvYWRSZXNvbHV0aW9uUmV2ZXJzZU9yZGVyCi1QQVNTIG5vdEVxdWFsc092ZXJsb2FkCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3OTZhZTY0ZDQ1NDQwYzAyNDFjMzU3MWE0NWE5ZTUxZjQ2YmRjYjAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL292ZXJsb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk92ZXJsb2FkLjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmludE92ZXJsb2FkUmVzb2x1dGlvbiA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBp
bnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9Ci0gICAgICAgIGludCBiYXIoKSB7IHJldHVybiBm
b28oNDIpOyB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiYmFyIiwgW10pLCAxKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRPdmVybG9hZFJl
c29sdXRpb25SZXZlcnNlT3JkZXIgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9Ci0gICAgICAgIGludCBmb28o
dWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGludCkgeyByZXR1cm4gMTsgfQot
ICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQyKTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFtdKSwgMSk7Ci19
Ci0KLXdobHNsVGVzdHMubm90RXF1YWxzT3ZlcmxvYWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShGb28sIEZvbykgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTgxOGI1MDcyNzUyNjQ4YWIyYjc5ZDhm
NTM3NmQ0OGUwY2M2NmU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBs
dXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bs
dXMtZXF1YWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEwOWI3MjQzY2FlNDJkOWVlNjUzNGZj
ODhkMjFiOTJiOWIxMDg5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+VGVzdCBvdmVycmlkZSBzdWJzY3JpcHRzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLnBsdXNFcXVhbHMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4ICs9
IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgz
ODUpXSksIDM4NSArIDQyKTsKLX0KLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzUmVzdWx0ID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggKz0gNDI7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgzODUpXSksIDM4NSArIDQyKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjk3YjI0ZjMxMTg3NTRmZWRhMzE3NjlkN2FlY2RmOWQ0ZjdkNzVkMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHBvaW50ZXJUb1BvaW50ZXIKLVBBU1MgcG9pbnRlclRv
TWVtYmVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNw
ZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVz
dHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI4NTUwYjVmZjYwYzZhYzI3
Y2Q1NmM1ZjE4MWI3Y2M1Yzk3ZTFhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3Rz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wb2ludGVyVG9Qb2ludGVyID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgdGhyZWFkIGludCogcCA9ICZ4OwotICAg
ICAgICAgICAgdGhyZWFkIGludCoqIHBwID0gJnA7Ci0gICAgICAgICAgICBpbnQqdGhyZWFkKnRo
cmVhZCBxcSA9IHBwOwotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICB4
ID0gNDI7Ci0gICAgICAgICAgICAqcCA9IDc2OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0g
ICAgICAgICAgICAqKnBwID0gMzk7Ci0gICAgICAgICAgICByZXN1bHQgKz0geDsKLSAgICAgICAg
ICAgICoqcXEgPSA4MzsKLSAgICAgICAgICAgIHJlc3VsdCArPSB4OwotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKHByb2dy
YW0pOwotfQotCi13aGxzbFRlc3RzLnBvaW50ZXJUb01lbWJlciA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzIHg7Ci0gICAgICAgICAgICAgICAg
dGhyZWFkIGZsb2F0KiB5ID0gJnhbMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbygpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQzeDMgeDsKLSAgICAgICAgICAgICAg
ICB0aHJlYWQgZmxvYXQzKiB5ID0gJnhbMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
fQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4LXByZWZpeC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDQzOTY3MTQ0ZmI1ZTA5NzQwZmYxM2IzM2Y1
ODIxZGY1Mzg3NDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotUEFTUyBwcmVmaXhQbHVzUGx1cwotUEFT
UyBwcmVmaXhQbHVzUGx1c1Jlc3VsdAotUEFTUyBwb3N0Zml4UGx1c1BsdXMKLVBBU1MgcG9zdGZp
eFBsdXNQbHVzUmVzdWx0Ci1QQVNTIHByZWZpeE1pbnVzTWludXMKLVBBU1MgcHJlZml4TWludXNN
aW51c1Jlc3VsdAotUEFTUyBwb3N0Zml4TWludXNNaW51cwotUEFTUyBwb3N0Zml4TWludXNNaW51
c1Jlc3VsdAotUEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBsdXNFcXVhbHNSZXN1bHQKLVBBU1MgbWlu
dXNFcXVhbHMKLVBBU1MgbWludXNFcXVhbHNSZXN1bHQKLVBBU1MgdGltZXNFcXVhbHMKLVBBU1Mg
dGltZXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3Bvc3RmaXgtcHJlZml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1w
cmVmaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyZjdjYzhlZTExNjZj
YTAwYTFmMTU5NmI4OWY1ZmNmNDc1MmFjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXgu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3Rz
ID0ge307Ci0KLXdobHNsVGVzdHMucHJlZml4UGx1c1BsdXMgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICArK3g7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4UGx1c1BsdXNSZXN1bHQg
PSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGlu
dCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKyt4OwotICAgICAgICB9Ci0gICAg
YDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoNjQpXSksIDY1KTsKLX0KLQotd2hsc2xUZXN0cy5wb3N0Zml4UGx1c1BsdXMg
PSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGlu
dCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4Kys7Ci0gICAgICAgICAgICByZXR1cm4geDsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMu
cG9zdGZpeFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHgrKzsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NCk7Ci19Ci0KLXdobHNs
VGVzdHMucHJlZml4TWludXNNaW51cyA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC0teDsK
LSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSks
IDYzKTsKLX0KLQotd2hsc2xUZXN0cy5wcmVmaXhNaW51c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIC0teDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXMgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB4LS07Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1p
bnVzTWludXNSZXN1bHQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geC0tOwot
ICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDY0KTsKLX0KLQotd2hsc2xUZXN0cy5w
bHVzRXF1YWxzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgeCArPSA0MjsKLSAgICAgICAg
ICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0
Mik7Ci19Ci0KLXdobHNsVGVzdHMucGx1c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+Ci17Ci0g
ICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiB4ICs9IDQyOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1
KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMubWludXNFcXVhbHMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHggLT0gNDI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOwotfQotCi13aGxzbFRlc3RzLm1p
bnVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCAtPSA0
MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOwotfQotCi13
aGxzbFRlc3RzLnRpbWVzRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4ICo9IDQy
OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUp
XSksIDM4NSAqIDQyKTsKLX0KLQotd2hsc2xUZXN0cy50aW1lc0VxdWFsc1Jlc3VsdCA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggKj0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCgzODUpXSksIDM4NSAqIDQyKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9w
cm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5MzM5NDJlODFmZDgxOTZlNjFiODAxNzMxZmE2MWM4OTMx
N2ZlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgZG9udEV2YWx1YXRlVHdp
Y2UKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UyCi1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlMwotUEFT
UyBkb250RXZhbHVhdGVUd2ljZTQKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U1Ci1QQVNTIGRvbnRF
dmFsdWF0ZVR3aWNlNgotUEFTUyBkb250RXZhbHVhdGVUd2ljZTcKLVBBU1MgZG9udEV2YWx1YXRl
VHdpY2U4Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlOQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjMjg3MTkxYTc3ODM0YmVhODY3MWUzOTU1Nzg2YjljOGUz
N2NiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlvbi1vcmRlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+ZXZhbHVhdGlvbiBvcmRlciBhbmQgdGltZXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnQqIHB0cikgewot
ICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAx
OwotICAgICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgdWludCB4ID0gMDsKLSAgICAgICAgICAgIGludFs0Ml0gYXJyOwot
ICAgICAgICAgICAgYXJyWzBdID0gNDI7Ci0KLSAgICAgICAgICAgIGludCByZXN1bHQgPSBhcnJb
YmFyKCZ4KV07Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0ID09IDQyICYmIHggPT0gMTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZh
bHVhdGVUd2ljZTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgdWludCBiYXIodGhyZWFkIHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBw
dHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRl
eF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWlu
dCB4ID0gMTsKLQotICAgICAgICAgICAgdWludFszXSBpbmRpY2VzOwotCi0gICAgICAgICAgICB1
aW50WzRdWzRdWzRdIGFycjsKLQotICAgICAgICAgICAgYXJyW2JhcihAaW5kaWNlcywgMCwgJngp
XVtiYXIoQGluZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRpY2VzLCAyLCAmeCldID0gNDI7Ci0gICAg
ICAgICAgICByZXR1cm4gYXJyWzBdWzBdWzBdID09IDQyCi0gICAgICAgICAgICAgICAgJiYgaW5k
aWNlc1swXSA9PSAxIAotICAgICAgICAgICAgICAgICYmIGluZGljZXNbMV0gPT0gMiAKLSAgICAg
ICAgICAgICAgICAmJiBpbmRpY2VzWzJdID09IDMKLSAgICAgICAgICAgICAgICAmJiB4ID09IDQ7
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9u
dEV2YWx1YXRlVHdpY2UzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0g
ICAgICAgIHVpbnRbMl1bMl0gYmFzZSh0aHJlYWQgdWludFtdIGFyciwgdWludCBpbmRleCwgdGhy
ZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAg
ICAgYXJyW2luZGV4XSA9IG9sZDsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAg
ICAgICAgIHVpbnRbMl1bMl0gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdID0gNDI7
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBi
YXIodGhyZWFkIHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAg
ICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7
Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsK
LQotICAgICAgICAgICAgdWludFszXSBpbmRpY2VzOwotCi0gICAgICAgICAgICB1aW50IHJlc3Vs
dCA9IGJhc2UoQGluZGljZXMsIDAsICZ4KVtiYXIoQGluZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRp
Y2VzLCAyLCAmeCldOwotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0ID09IDQyCi0gICAgICAg
ICAgICAgICAgJiYgaW5kaWNlc1swXSA9PSAxCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1sx
XSA9PSAyIAotICAgICAgICAgICAgICAgICYmIGluZGljZXNbMl0gPT0gMwotICAgICAgICAgICAg
ICAgICYmIHggPT0gNDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQot
d2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAg
ICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAg
ICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgdWludFsyXSBhcnI7Ci0KLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAg
ICAgICAgICAgIGFycltiYXIoJngpXSArPSA2NjY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhcnJb
MV0gPT0gNjY2ICYmIHggPT0gMjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTUgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdGhyZWFkIHVpbnQqIGdldFB0cih0aHJlYWQgdWlu
dCogcHRyKSB7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1
cm4gcHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1
aW50IHggPSAxOwotICAgICAgICAgICAgdWludCByZXN1bHQgPSAoKmdldFB0cigmeCkpKys7Ci0g
ICAgICAgICAgICByZXR1cm4geCA9PSAzICYmIHJlc3VsdCA9PSAyOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlNiA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWlu
dCogZ2V0UHRyKHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgICpwdHIgPSAqcHRyICsg
MTsKLSAgICAgICAgICAgIHJldHVybiBwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0gICAgICAgICAgICB1aW50IHJlc3VsdCA9
ICsrKCpnZXRQdHIoJngpKTsKLSAgICAgICAgICAgIHJldHVybiB4ID09IDMgJiYgcmVzdWx0ID09
IDM7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMu
ZG9udEV2YWx1YXRlVHdpY2U3ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIHRocmVhZCB1aW50W10gZ2V0QXJyKHRocmVhZCB1aW50W10gdmFsdWUsIHRocmVh
ZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAg
ICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAx
OwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBn
ZXRWYWx1ZSh1aW50IHJldCwgdGhyZWFkIHVpbnRbXSBpbmRpY2VzLCB1aW50IGluZGV4LCB0aHJl
YWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRpY2VzW2luZGV4XSA9ICpwdHI7Ci0gICAg
ICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAg
ICAgICAgICAgdWludFszXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAg
ICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAw
LCAmeClbZ2V0VmFsdWUoMCwgQGFyciwgMSwgJngpXSArPSBnZXRWYWx1ZSg2NjUsIEBhcnIsIDIs
ICZ4KTsKLSAgICAgICAgICAgIHJldHVybiB4ID09IDQKLSAgICAgICAgICAgICAgICAmJiBhcnJb
MF0gPT0gMQotICAgICAgICAgICAgICAgICYmIGFyclsxXSA9PSAyCi0gICAgICAgICAgICAgICAg
JiYgYXJyWzJdID09IDMKLSAgICAgICAgICAgICAgICAmJiB2YWx1ZVswXSA9PSA2NjY7Ci0gICAg
ICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1
YXRlVHdpY2U4ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAg
IHVpbnQgZ2V0VmFsdWUodWludCByZXQsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRl
eCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRy
OwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIHJldDsK
LSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCB1aW50W10gZ2V0QXJyKHRocmVhZCB1aW50W10g
dmFsdWUsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0
cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0
ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAg
dWludFszXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFs
dWVbMF0gPSAxOwotCi0gICAgICAgICAgICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAwLCAmeClbYXJy
W2dldFZhbHVlKDAsIEBhcnIsIDEsICZ4KV1dICs9IGdldFZhbHVlKDY2NSwgQGFyciwgMiwgJngp
OwotCi0gICAgICAgICAgICByZXR1cm4geCA9PSA0Ci0gICAgICAgICAgICAgICAgJiYgYXJyWzBd
ID09IDEKLSAgICAgICAgICAgICAgICAmJiBhcnJbMV0gPT0gMgotICAgICAgICAgICAgICAgICYm
IGFyclsyXSA9PSAzCi0gICAgICAgICAgICAgICAgJiYgdmFsdWVbMF0gPT0gNjY2OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmRvbnRFdmFsdWF0
ZVR3aWNlOSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICB0
aHJlYWQgdWludFsxXSogZ2V0VmFsdWUodGhyZWFkIHVpbnRbMV0qIGFyciwgdGhyZWFkIHVpbnRb
XSBpbmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICBp
bmRpY2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAg
ICAgICAgICByZXR1cm4gYXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0g
ICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludFsxXSBhcnI7Ci0gICAgICAg
ICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAg
ICAgICAoKmdldFZhbHVlKCZ2YWx1ZSwgQGFyciwgMCwgJngpKVswXSArPSA2NjU7Ci0KLSAgICAg
ICAgICAgIHJldHVybiB4ID09IDIKLSAgICAgICAgICAgICAgICAmJiBhcnJbMF0gPT0gMQotICAg
ICAgICAgICAgICAgICYmIHZhbHVlWzBdID09IDY2NjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBb
XSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3Jp
dGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIw
ZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlm
eS13cml0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtaGlnaC16
b21iaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlm
eS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9tYmllcy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWI0ZDQ0ZGZjNjQ1ODA0NTI0NjFiMmQ4MTI2NWVmNzk3
YzYyNjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotYm9v
bCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAg
ICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwot
ICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhy
ZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtd
IGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJl
YWRJRCkgewotICAgIGZsb2F0NHg0IG1hdDsKLSAgICBmaWxsKCZtYXQsIDQpOwotCi0gICAgZmxv
YXQ0IHZlYzsKLSAgICB2ZWNbMF0gKz0gbWF0WzBdWzBdICsgbWF0WzBdWzFdICsgbWF0WzNdWzJd
OwotCi0gICAgZmxvYXQgdmFsdWUgPSA0MjsKLSAgICB2YWx1ZSArPSB2ZWNbMF07Ci0KLSAgICBt
YXRbMF1bMF0gKz0gKG1hdFswXVswXSArPSAodmFsdWUgKz0gbWF0WzBdWzBdKSk7Ci0KLSAgICBi
dWZmZXJbdWludCh0aHJlYWRJRC54KV0gPSBtYXRbMF1bMF07Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRl
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVy
In07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBb
e2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0g
e2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0
ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAg
IGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVm
ZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9
IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSA2NikKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7
Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVu
bWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgp
LnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGQwNTZhM2FmYmZlM2Y5ZjA5NzU5Nzg2ZjBmMjYyN2IzNzMxMzhhMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lk
IGNvbXB1dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgewotICAg
IGJ1ZmZlclswXSA9IDE7Ci0gICAgYnVmZmVyWzFdID0gYnVmZmVyWzBdKys7Ci0KLSAgICBidWZm
ZXJbMl0gPSAxOwotICAgIGJ1ZmZlclszXSA9ICsrYnVmZmVyWzJdOwotCi0gICAgYnVmZmVyWzRd
ID0gMTsKLSAgICBidWZmZXJbNF0gKz0gNTsKLQotICAgIGJ1ZmZlcls1XSA9IDE7Ci0gICAgYnVm
ZmVyWzVdICo9IDc7Ci0KLSAgICBpbnQgdG90YWwgPSAxNDsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpICs9IDIpIHsKLSAgICAgICAgdG90YWwgKz0gaTsKLSAgICB9Ci0gICAgYnVmZmVy
WzZdID0gdG90YWw7Ci0KLSAgICB0b3RhbCA9IDE0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTA7ICsraSkgewotICAgICAgICB0b3RhbCArPSBpOwotICAgIH0KLSAgICBidWZmZXJbN10gPSB0
b3RhbDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0
ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9y
YWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRH07Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBidWZmZXIs
IHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3Vy
Y2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5
b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcg
SW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzWzBdID09IDIK
LSAgICAgICAgJiYgcmVzdWx0c1sxXSA9PSAxCi0gICAgICAgICYmIHJlc3VsdHNbMl0gPT0gMgot
ICAgICAgICAmJiByZXN1bHRzWzNdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1s0XSA9PSA2Ci0g
ICAgICAgICYmIHJlc3VsdHNbNV0gPT0gNwotICAgICAgICAmJiByZXN1bHRzWzZdID09IDM0Ci0g
ICAgICAgICYmIHJlc3VsdHNbN10gPT0gNTkpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAg
IGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci19Ci13
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ1NjA4NjI2NTFhOWJhM2UwMzVlOTliZmRmNjdmZjk3NWQzOTJkMmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDMgKzAsMCBAQAotCi1QQVNTIG11dHVhbGx5UmVjdXJzaXZlU3RydWN0Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgzN2RmZThkYzIzYjdiZjY1Y2NhZTg5YmI4N2FiOGZlZjlmOTVmNzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9v
cHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubXV0dWFsbHlSZWN1
cnNpdmVTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgQmFyIGJhcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cnVjdCBCYXIgewotICAgICAgICAgICAgICAg
IEZvbyBmb287Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotLy8g
RklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc2NjogVGhp
cyBzaG91bGQgY29tcGlsZS4KLS8vIHdobHNsVGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RX
aXRoUG9pbnRlcnNCcm9rZW4gPSBhc3luYyAoKSA9PgotLy8gewotLy8gICAgIGxldCBwcm9ncmFt
ID0gYAotLy8gICAgICAgICBzdHJ1Y3QgRm9vIHsKLS8vICAgICAgICAgICAgIHRocmVhZCBCYXIq
IGJhcjsKLS8vICAgICAgICAgICAgIGludCBmb287Ci0vLyAgICAgICAgIH0KLS8vICAgICAgICAg
c3RydWN0IEJhciB7Ci0vLyAgICAgICAgICAgICB0aHJlYWQgRm9vKiBmb287Ci0vLyAgICAgICAg
ICAgICBpbnQgYmFyOwotLy8gICAgICAgICB9Ci0vLyAgICAgICAgIGludCBmb28oKQotLy8gICAg
ICAgICB7Ci0vLyAgICAgICAgICAgICBGb28gZm9vOwotLy8gICAgICAgICAgICAgQmFyIGJhcjsK
LS8vICAgICAgICAgICAgIGZvby5mb28gPSA1NjQ7Ci0vLyAgICAgICAgICAgICBiYXIuYmFyID0g
NTM7Ci0vLyAgICAgICAgICAgICByZXR1cm4gZm9vLmJhci0+YmFyIC0gYmFyLmZvby0+Zm9vOwot
Ly8gICAgICAgICB9Ci0vLyAgICAgYDsKLS8vICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAwKTsKLS8vIH0KLQotcnVuVGVzdHMod2hs
c2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5
MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzBjMjgzZmU2OGI3NjVkZjYyNjAyZDcz
ZDE2YjRiMjAwMjlmMzBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0
cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAg
IGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1mbG9hdCBjb3B5KGZsb2F0IHYpIHsK
LSAgICBmbG9hdCBsb2NhbCA9IHY7Ci0gICAgcmV0dXJuIGxvY2FsOwotfQotCi12ZXJ0ZXggVmVy
dGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHJl
c3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IGNvcHkoc2hhZGUp
OwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdl
ID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAi
ZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9y
bWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJp
YnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRy
aWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0g
MS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1F
TlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0g
ICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7
YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWE5YWFkMDU1NjUyYjBkNWJmMWI0OTdjZTcwNTI0YjYyZTQwOGNmYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTAgKzAsMCBAQAotCi1QQVNTIHJldHVybklmCi1QQVNTIHJldHVyblJlZmVyZW5jZVRvU2Ft
ZVBhcmFtZXRlcgotUEFTUyByZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlcldpdGhEaWZmZXJlbnRG
dW5jdGlvbnMKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9QYXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVm
ZXJlbmNlVG9Mb2NhbFZhcmlhYmxlV2l0aE5lc3RpbmcKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9M
b2NhbFZhcmlhYmxlCi1QQVNTIHJldHVybkludExpdGVyYWxVaW50Ci1QQVNTIHJldHVybkludExp
dGVyYWxGbG9hdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJu
LXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10
ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzlmOGIxNDBhYTczMzlj
NGI4MjUzYzZkZmE0YTI3YTAyNjc2ZTg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnJldHVybklmID0gYXN5bmMgKCkgPT4gewot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQg
eCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAg
ICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4geTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAgICBpZiAoeCA9
PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICBgKTsKLQotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHJldHVybiAxMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGA7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDMpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgMTApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCAx
MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDYpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSks
IDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoOSldKSwgMTApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiA4OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA9PSA5
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxMDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAg
IGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgeSA9IDk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg0KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNSldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg3KV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoOCldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDkpXSksIDkpOwotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAg
aWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAxMTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgYCk7Ci0KLSAgICBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KQotICAg
ICAgICAgICAgICAgIGludCB5ID0gODsKLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNyldKSwgNik7Ci19OwotCi13aGxzbFRlc3RzLnJldHVyblJlZmVy
ZW5jZVRvU2FtZVBhcmFtZXRlciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwbHVzKGJh
cig1KSwgYmFyKDcpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBwbHVzKHRocmVhZCBpbnQq
IHgsIHRocmVhZCBpbnQqIHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqeCArICp5
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmFyKGludCB4KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMTQpOwot
fTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlcldpdGhEaWZmZXJlbnRG
dW5jdGlvbnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJhcigxMCkgKyAqYmF6KDIw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQgeCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGlu
dCogYmF6KGludCB5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnk7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgMzApOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VU
b1BhcmFtZXRlciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbyhib29sIGNvbmRpdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpi
YXIoY29uZGl0aW9uLCAxLCAyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJh
cihib29sIGNvbmRpdGlvbiwgaW50IGEsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gY29uZGl0aW9uID8gJmEgOiAmYjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29s
KHRydWUpXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSksIDIpOwotfTsKLQotd2hsc2xUZXN0cy5y
ZXR1cm5SZWZlcmVuY2VUb0xvY2FsVmFyaWFibGVXaXRoTmVzdGluZyA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAqYmFyKCkgKyAqYmF6KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJl
YWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgYSA9IDIwOwotICAgICAg
ICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmF6KCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IGEgPSAyMjsKLSAgICAgICAgICAgIHJldHVybiAm
YTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLnJldHVy
blJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAq
YmFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgYSA9IDQyOwotICAgICAgICAgICAgcmV0dXJuICZhOwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuSW50TGl0ZXJh
bFVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAidWludCBmb28oKSB7IHJl
dHVybiA0MjsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdobHNsVGVzdHMucmV0dXJuSW50TGl0ZXJh
bEZsb2F0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImZsb2F0IGZvbygpIHsg
cmV0dXJuIDQyOyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xMC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hp
dGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0xMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWI4
NDMxMmZkNTAwYmE1NTEyYzc3NmRlYWRmMWQzNDYxZWY3M2NmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAot
dmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
KSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7
Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0
YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hh
ZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRp
dmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0
YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxw
aGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
clN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQs
IHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6
IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5w
dXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0K
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5
b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9s
b2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwg
dmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRl
eEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0g
Y2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3Ig
PSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0g
Y29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmlldygp
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0g
ICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZp
ZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3Jl
IiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9
IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50
cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIg
PSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0p
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBz
dGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjEx
OGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xMS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjMWUxZjM1YzU4NDU1NjFmMjQxNWVlZGQ1ZmRiMWM5Mjc2ZGNlN2MzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291
cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQot
Y29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsK
LX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28gZjsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7
Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21v
ZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNv
bnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAg
IGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVu
Y3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEy
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmVi
YTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNDRiOTZmNDc2ZDA4M2EzY2NmNTJmMGU1NGMyZDhi
YjJjY2M5MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTEyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVy
biBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0g
Rm9vIHsKLSAgICB2Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyBmID0gRm9vLnY7
Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVy
dGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9u
U3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBs
ZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
N10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
ImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6
ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVT
d2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9
IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVW
aWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRh
Y2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6
IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVk
fV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3Qg
cmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0
YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
My1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0xMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjM0MTIyOTRmMDAz
NTk3MmYyMTdmYTQyMzA3MWQxOGQ2YTQyYzVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBG
b28gPSBpbnQ7Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwot
Ci1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
KSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsK
LQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFk
ZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2
ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3Rh
dGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBo
YUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9y
U3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwg
d3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9j
YXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTog
MTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1
dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5Wzhd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9
IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBj
b250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29u
c3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAg
ICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmll
dywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUi
LCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0g
bnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRz
LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9
IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0x
NC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4
YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU4ZTZkOTM0N2QxMzkzODgzZTZhZjI2OTE4OTQyMzAwM2JmN2Y2ZmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0g
YAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0
YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRl
LCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3Vu
dDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUg
PSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
dmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUi
KTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdy
YTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2Fw
Q2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9
IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3Qg
cmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVu
dHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxs
LCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRl
clBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5S
ZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVy
dGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2
aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk0MmI3Mjc1OTg0ODI5ZGM5
OGI0MzhmZGJlYjEwNDQ4NTdkZWNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAg
ICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24p
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2Nh
dGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAx
NiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9n
eSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZl
cnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0g
PSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNh
bnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0g
e2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNv
bnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25z
dCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsK
LQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAg
IGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3
LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIs
IGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBu
dWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMs
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29k
ZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVy
XSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3Rh
cnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hp
dGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThi
Yjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTkwMTUwOTA4NWE3NTA4MTA2ZWJkNmZjNzY2NzM0MDg4ZTkzNmE5Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJj
ZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsK
LX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0
IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsK
LSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291
cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdl
ID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNo
YWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsK
LSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9k
ZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JC
bGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldy
aXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBj
b25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9Owot
ICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19
OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7
dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JT
dGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsz
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
M10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHty
OiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3th
dHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9w
OiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0
LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3Qg
Y29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRR
dWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTE3LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4
NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MWIxNWU3Njc3YWRmMmQwZjIxY2M3Nzlk
YmVjMmJlMjQ2Y2I4ZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3Jp
cHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGZsb2F0Owot
dmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDAp
KSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZvbyA9IGZsb2F0OwotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICBGb28geCA9IDE7Ci0gICAgcmV0dXJuIGZsb2F0NCh4LCAxLCAxLCAxKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2
ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxT
dGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0
fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2Ny
aXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTog
MX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4
dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDog
InN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRh
Y2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTgtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRi
OTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjYmM4Yjg3YWY1ODljNWUzYzhmMDMxNTYyOGEwY2I3NzI4Njc4NDY2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hh
ZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgZmxvYXQgeDsKLX0KLXZlcnRleCBmbG9h
dDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgZmxvYXQgeDsKLX0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJn
ZXQgMCB7Ci0gICAgRm9vIGY7Ci0gICAgZi54ID0gMTsKLSAgICByZXR1cm4gZmxvYXQ0KGYueCwg
MSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZl
cnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0g
ICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0
IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9
OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJs
ZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0g
ICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJp
YnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3Qg
aW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29u
c3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZm
ZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5j
cmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZm
ZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlC
dWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5Wzld
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3Jl
YXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0g
e2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJl
bmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBh
c3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVy
dGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTktZXhw
ZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNj
OGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTE5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTcyNTA5ZTI4YWJhNWY2NTg0N2QyY2ZiYWViMWZhMDE5MDk0
YjllYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4ID0gMCwKLSAgICB5ID0gMQotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICBpbnQgeSA9IGludChGb28ueSk7Ci0gICAgcmV0dXJuIGZsb2F0
NChmbG9hdCh5KSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkg
ewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVy
TW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50
U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAi
OwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxN
b2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
ckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5v
cm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9y
V3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAg
IGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07
Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRl
XX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBm
cmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xv
clN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4
QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVm
ZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3
KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25z
dCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4
NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkN2IzNjczZWZjMGM3Zjg4NmViMzVkN2EyM2Ew
NDA2NWU0NzE5YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxv
YXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
ZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAi
dHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZh
Y2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zv
cm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1
fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBu
dWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25z
dCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9y
bWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmln
dXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0g
ICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6
IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNv
bnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29k
ZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTIwLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkY2JmZjVmMGUzZmIxODJiZjlhOWZlZDZjMWI2
MGQ0ODIyZmUzZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAot
ZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZmxv
YXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJp
YnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRh
dGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFn
ZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwg
Y29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6
IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0g
ZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAg
ICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3
YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIxLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0M2VlMzZl
ZGRiZmY3ZTA1MDA4ZTVjOTdiODA1MjFhMThlODNkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdt
ZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBpbnQ7Ci10eXBlZGVmIEZvbyA9IGlu
dDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsK
LX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1
c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0K
LXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAg
ICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTIwZDgyYzEzNDhjOTY1OGQxYWM0NzlhYWY4ODQzMWIyMjdiY2UzNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4
U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAg
ICBpbnQgeDsKLX0KLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotZnJhZ21lbnQgZmxvYXQ0
IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlk
YXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3Rh
Z2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUs
IGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50
OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9
IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwot
ICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yjg4OTMx
ZWE3YjlmOGVlOTVjM2EwZTFhNGI3MzRjOTBiZTc0NGU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12
ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci1lbnVtIEZvbyB7Ci0g
ICAgeAotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEs
IDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9s
b2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwg
dmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgp
OwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7
Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjNkYTY2NDVhZDBkMWQzMmNk
NTQ4NGU0MjM1ZjdiOGYzMGY5ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24g
ewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IGAKLWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gMTsK
LX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzYXR1cmF0ZSgzLCA0
KSwgc2F0dXJhdGUoMiksIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9k
dWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0
YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVu
dFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxs
TW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xv
cldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAg
ICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0
ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQg
PSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwg
ZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29s
b3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEs
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5t
YXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0g
ICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5v
cm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihz
d2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWlu
LmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRw
dXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9
IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0g
W3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9h
ZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBj
b25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNz
RGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsK
LSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVy
UGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1
ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJh
dyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29u
c3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5n
ZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0p
OwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYTQ2ZGY1NmY5ZDhmOWMzNzZlMzZiOTE3OGZjMmQ1Yjg0MzRlMTcxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0yNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlv
bjsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAx
KTsKLX0KLWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyMihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9w
b2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9
IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0
ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0
ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwg
YXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsK
LSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2
YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRl
eFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0
YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVD
b3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3
MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyZDI1ZTkzMGY4N2ZmZWE2MmIyNzdhODM3YzlmZWE0N2I4NzViNGFm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVy
dGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBv
c2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRp
b247Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZs
b2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVu
Y3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0g
ICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9n
eSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zy
b250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9
IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFz
azogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0
ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAw
LCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAg
IGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEx
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNl
LCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5j
b25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3Qg
Y29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29s
dmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJD
b2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0g
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMjctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNT
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0MmZlZTU1NTZlOTU0MTU4MzliYmVh
YWIyYWJhYTk3NjVjMjQ5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0
ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsK
LSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAx
KTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBT
Vl9Qb3NpdGlvbiwgYm9vbCBpc0ZvbnRGYWNlIDogU1ZfSXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0
IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJp
YnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRh
dGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFn
ZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwg
Y29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6
IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0g
ZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAg
ICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2Fk
MzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUg
KzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGNmOTIxNWRjYzhh
OTg3ZDk4OTA0ZmJjY2M3MjQ1NWM2ZTM3N2IwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBo
ZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLXZlcnRleCBmbG9h
dDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19
Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhT
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
dmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2
ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21l
bnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7
c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0g
e3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNo
RXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAg
ICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIw
ZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYmNhYmJjYzE4ODRkYjk2NjQzZDc4OTg2NWRhYWRkMTc1Zjk0NjczLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNv
dXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24p
IDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyB4OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy01Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMzlhOGI4NWI5OGE0MjYzOTNjNzE3MTliMTE2Y2E5NzlkYTllMzdmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy01Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNo
YWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAgIGludCB4OwotfQotCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJu
IGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmlj
ZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAot
ICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0
In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmli
dXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1
dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0
b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdl
LCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVw
dGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVu
ZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNl
LnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQo
IiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTYtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDgyYWZhNTAyNGEzOGM5MjE3ZjYxZTUxNzQ3
OGQzMzlhNGQ3NDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotZW51bSBGb28gewotICAgIHYKLX0KLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdt
ZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geCA9IEZv
by52OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5j
dGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBj
b25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9k
dWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAg
ICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJp
YnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAg
Y29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRh
dGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFn
ZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwg
Y29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6
IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0g
ZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAg
ICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03LWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5
NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUzNzdkYjY0MjUxOTc0MmNmZDQ1YzFjOTI1M2M2OTQyOGQ3MTYwZGQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNv
dXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAw
KTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNv
bnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1
cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1
cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBz
d2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVu
dFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUu
Y3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9y
ID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0
IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRl
clBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5k
ZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAs
IDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTgtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0
NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtOC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YmQwNWFkYzk4YzUwYjg3NDM2MjNhM2E4MjBjMjcyY2ZhYzhhYjU4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9
IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0
IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQgc2F0dXJhdGUoZmxvYXQgeCkgewotICAg
IHJldHVybiAwOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAg
Y29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIi
fTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAg
Y29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJu
b25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFs
cGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5B
TEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3Qg
YXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBj
b25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRl
eEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
PSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAg
ICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2
ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxT
dGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0
fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JT
Y29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBh
c3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTkuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTM4M2Y1M2M3ODRlOWFhN2RmODg1OGZjOGRkN2RjZmZjZDk5NGJj
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtOS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgYm9v
bDIgPSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwg
MSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9w
b2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRl
LCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3Bl
KCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgp
IHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2Vk
KCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRk
MTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5ZDg1NWU4NGU5ZTQ1NjkwMmZkOWQ4MTFkZDg1OTUw
MzQxNWYwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBv
c2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0
dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwot
fQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZjI0NDc2N2JlMTdiMWJjOGJlY2ZhYTVjYTVmN2Y1NzhlY2MxMTQ1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw4ICswLDAgQEAKLQotUEFTUyBzZXR0ZXJXaXRoTWF0Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0
aE5vR2V0dGVyT3ZlcmxvYWQKLVBBU1Mgc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZAot
UEFTUyByZWN1cnNpdmVTZXR0ZXJzCi1QQVNTIGxvbmVTZXR0ZXIKLVBBU1MgbG9uZVNldHRlclBv
aW50ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NldHRlci1zcGVj
LXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA0MDUwOWVlNmFjMjE3NDkyYjNl
YmQyNWI1ZmEwYTc1YjE1ZGI4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5zZXR0ZXJXaXRoTWF0Y2hlZFR5cGUgPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvci5mb28oaW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3Iu
Zm9vPShpbnQsIGludCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAg
ICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAg
ICB4LmZvbyA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAg
aW50IGJhcigpIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgcmV0dXJuIHguZm9v
OwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVy
T3ZlcmxvYWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIHN0cnVjdCBCYXIgeyB9
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKEZvbykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gNTM0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQmFyIG9w
ZXJhdG9yLmZvbz0oQmFyLCBpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEJhcigpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci0KLXdo
bHNsVGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEJhciB7IH0KLSAgICAgICAg
aW50IG9wZXJhdG9yLmZvbyhCYXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA1MzQ7
Ci0gICAgICAgIH0KLSAgICAgICAgQmFyIG9wZXJhdG9yLmZvbz0oQmFyLCBpbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBCYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9v
KCkgewotICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIHJldHVybiBiYXIuZm9vOwot
ICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBCYXIgYmFyOwotICAg
ICAgICAgICAgYmFyLmZvbyA9IDUyOwotICAgICAgICAgICAgcmV0dXJuIGJhci5mb287Ci0gICAg
ICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5yZWN1cnNpdmVTZXR0ZXJzID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAg
ICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgIH0KLSAgICAgICAg
c3RydWN0IEJhciB7Ci0gICAgICAgICAgICBpbnQgYTsKLSAgICAgICAgICAgIGludCBiOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvci5jKEJhciBiYXIpIHsgcmV0dXJuIGJhci5hOyB9
Ci0gICAgICAgIEJhciBvcGVyYXRvci5iYXIoRm9vIGZvbykgeyBCYXIgYjsgYi5hID0gZm9vLng7
IGIuYiA9IGZvby55OyByZXR1cm4gYjsgfQotICAgICAgICBCYXIgb3BlcmF0b3IuYz0oQmFyIGJh
ciwgaW50IG5ld3ZhbCkgeyBiYXIuYSA9IG5ld3ZhbDsgcmV0dXJuIGJhcjsgfQotICAgICAgICBG
b28gb3BlcmF0b3IuYmFyPShGb28gZm9vLCBCYXIgbmV3dmFsKSB7IGZvby54ID0gbmV3dmFsLmE7
IGZvby55ID0gbmV3dmFsLmI7IHJldHVybiBmb287IH0KLSAgICAgICAgaW50IGYoKSB7Ci0gICAg
ICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9vLnggPSBmb28ueSA9IDM7Ci0gICAgICAg
ICAgICBmb28uYmFyLmMgPSA4OwotICAgICAgICAgICAgcmV0dXJuIGZvby54KjEwICsgZm9vLnk7
Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sb25lU2V0dGVyID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGlu
dCBvcGVyYXRvci5mb289KGludCwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQot
d2hsc2xUZXN0cy5sb25lU2V0dGVyUG9pbnRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvci5m
b289KHRocmVhZCBpbnQqIHB0ciwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3
MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2ltcGxlLWFycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1h
cnJheXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTczYWNkNDgyOWYzMTM3
Njk0OGU5Y2MwYzZkYzc4MDFmZDNkYWU1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAot
dm9pZCBmaWxsKHRocmVhZCBpbnRbXSBhcnJheSwgaW50IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50
IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYXJyYXlbaV0gPSB2YWx1
ZTsKLSAgICB9Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1
dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVh
ZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGludFs0Ml0gYXJyYXk7Ci0gICAgaWYg
KGFycmF5Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodWludCBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhcnJheVtpXSAhPSAwKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFycmF5WzBdID0gNTE3OwotICAgIGlm
IChhcnJheVswXSAhPSA1MTcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRocmVhZCBpbnRbXSBh
cnJheVB0ciA9IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQdHIubGVuZ3RoICE9IDQyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpbnRbNDJdIGFycmF5MjsKLSAgICBhcnJheTIgPSBhcnJheTsKLSAg
ICBpZiAoYXJyYXkyLmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhcnJh
eTJbMF0gIT0gNTE3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmaWxsKGFycmF5UHRyLCAxMzM3
KTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheVB0ci5sZW5ndGg7ICsraSkgewotICAg
ICAgICBpZiAoYXJyYXlQdHJbaV0gIT0gMTMzNykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKGFycmF5W2ldICE9IDEzMzcpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGFycmF5MlswXSAhPSA1MTcpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXJyYXky
Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodWludCBpID0gMTsgaSA8
IGFycmF5Mi5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXkyW2ldICE9IDApCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVmZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBj
b21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRl
U2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShidWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNC
dWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBsZXQgcmVzdWx0c0lu
dDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChy
ZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJmODdiNWM2ODE1OGVmNDM3OTg4NzBiNzBhZTUyOTJjNTNmZjE0
NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVByb3BlcnR5R2V0Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OTMzZmU1OGM1MmE2NDYwYzE0OGFlYjJk
YzdkNDQxM2JhZTFkMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1wbGVQcm9wZXJ0eUdldCA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBp
bnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby54ID0gNzgwNDsKLSAgICAgICAgICAgIHJldHVy
biBmb28ueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNzgwNCk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjFmNGU4ZWNkNDU1MTA1NWMzYTQ4OTUwYmY3YzE0M2FjMDc1NzBjYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcg
KzAsMCBAQAotCi1QQVNTIHNpbXBsZVVucmVhY2hhYmxlQ29kZQotUEFTUyBzaW1wbGVOb1JldHVy
bgotUEFTUyBzaW1wbGVSZWN1cnNpdmVTdHJ1Y3QKLVBBU1Mgc2ltcGxlUmVjdXJzaW9uCi1QQVNT
IHNpbXBsZVJlY3Vyc2lvbjIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NpbXBsZS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGRjM2JmYjU0NzI3MTkxMWY5
ZDkwZmIwZDAwNTg0MDQ0NDVhMmUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtdGVzdHMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZVVucmVhY2hhYmxlQ29kZSA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9v
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgaW50IHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNp
bXBsZU5vUmV0dXJuID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgiaW50IGZv
bygpIHsgfSIpOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5j
ICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28gewotICAgICAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVJlY3Vyc2lvbiA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKGlu
dCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvbyh4KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMuc2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5j
ICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGlu
dCBiYXIoaW50IHgpIHsKLSAgICAgICAgICAgICAgICBmb28oeCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb28oYmFyKHgpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxv
b3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1s
b29wLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiMThhODg4
OTY1MmJjY2FhNzBkYmI0Yzk3YjIzNjBlZTUzMDg2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdo
aWxlLWxvb3AtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBB
U1Mgc2ltcGxlV2hpbGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS13aGlsZS1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdo
aWxlLWxvb3AuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3MTFjMThlMTZj
Zjc2NjZmNzJlNmU4MmVjMmZkZjBlMmI3ZjdkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxl
LWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29u
c3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZVdoaWxlID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB3aGlsZSAoeCA8IDEzKQotICAgICAgICAgICAgICAgIHggPSB4ICog
MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSld
KSwgMTYpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQt
dHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NtYWxsZXItdGhh
bi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxZDQ3ZWJmZjZiN2NiMTJmNDdlYzgwZWVjM2M4OWI0YjgwMTgzMWI1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotCi1QQVNTIHNtYWxsVHlwZXNTaG91bGRGYWlsCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxlci10aGFuLTMyLWJpdC10eXBlcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDU2MGE3Y2I3ZTllYTRiY2I4ODI0YzQz
YTIxY2I0YTdjZTkzMGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPnNtYWxsZXIgdGhhbiAzMi1iaXQgdHlwZXMgc2hvdWxkIG5vdCBwYXJz
ZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zbWFsbFR5cGVzU2hv
dWxkRmFpbCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2
b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVjaGFyIHg7Ci0gICAgICAgIH0KLSAg
ICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNoYXIgeDsKLSAgICAgICAgfQotICAgIGApOyAKLQotICAgIGF3
YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgc2hvcnQgeDsKLSAgICAgICAgfQotICAgIGApOyAKLQotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdXNob3J0IHg7Ci0g
ICAgICAgIH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lk
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGhhbGYgeDsKLSAgICAgICAgfQotICAgIGAp
OyAKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3Vw
LTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIw
ZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmlu
ZC1ncm91cC0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFT
UwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2MzMTdmMDFmMWRiZDRjY2I0MmQzNjJlY2Rj
OTBmZmY1MmE4MDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJl
YWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10g
YnVmZmVyIDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgYnVmZmVyWzBdID0gMTc7Ci19Ci1gOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21w
dXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1d
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRH0pOwotICAgIGNvbnN0IGJ1ZmZlcjIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXpl
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
fSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHti
dWZmZXI6IGJ1ZmZlcjEsIHNpemV9fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiB7YnVmZmVyOiBi
dWZmZXIyLCBzaXplfX1dfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2Rl
ciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRp
c3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAg
Y29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmlj
ZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0
c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyMi5tYXBSZWFkQXN5bmMoKTsKLSAgICBjb25zdCBy
ZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIp
OwotICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBdID09IDE3KQotICAgICAgICB0ZXN0UGFz
c2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIu
dW5tYXAoKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0zLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWRiZjE1ODU2ODFlZTBlOTI5NzY4ZGYxMDU0OGE4YzdlZDNlZTBjZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1
dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUx
KSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiAwLCB0eXBlOiAic3RvcmFnZS1idWZmZXIifSwge2JpbmRpbmc6IDEsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0g
ICAgY29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25z
dCBidWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQs
IGJpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIxLCBzaXpl
fX0sIHtiaW5kaW5nOiAxLCByZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMiwgc2l6ZX19XX0pOwot
Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNv
bXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAg
ICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIg
PSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlcjIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zs
b2F0MzJBcnJheVswXSA9PSAxNykKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICBidWZmZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Bh
cnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nw
YXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSAr
MCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5k
LWdyb3VwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkzODIyNGMzZjlkNGNiOWMxNDI3
N2YzYjU0ZmZmMmYxYjZmOTVjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251
bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxv
YXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCwgc3BhY2UxKSkgewotICAgIGJ1ZmZlclswXSA9IDE3
OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
c3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXQsIGJpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAg
Y29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBi
dWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdy
b3VwMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoe2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZToge2J1ZmZlcjogYnVmZmVyMSwgc2l6ZX19
XX0pOwotICAgIGNvbnN0IGJpbmRHcm91cDIgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHti
dWZmZXI6IGJ1ZmZlcjIsIHNpemV9fV19KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgY29tcHV0ZVBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwMSk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAyKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIyLm1hcFJlYWRBc3luYygpOwotICAgIGNv
bnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1
ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gMTcpCi0gICAgICAgIHRl
c3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgYnVm
ZmVyMi51bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNjZlOTM1OGY1OWRlYjFlOWFmNzMwNjM0NDY3OGI4ZDIzYzAyYTc0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDMgKzAsMCBAQAotCi1QQVNTIHN0b3JlTnVsbAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0
b3JlLW51bGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkMmZkMzIyYjJl
NzUxOTc3NTUyNDgzNWMzN2Y0MjgzZDcxMDcxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMuc3RvcmVOdWxsID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgeyAqbnVsbCA9IDQyOyB9Ci0g
ICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVy
dHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJj
M2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9w
ZXJseS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJv
cGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0
b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOGM4OTNjNTkzZTFiYzBlZWY5ZDg0ZmMxZDQwYTRiYzhmMWU0YjhkNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZl
cnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXN0cnVjdCBCYXIgewotICAgIGludCB4OwotICAg
IGZsb2F0IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXN0cnVjdCBGb28gewotICAgIEJhciBiYXI7Ci0g
ICAgQmFyIGJhcjI7Ci19Ci0KLXRocmVhZCBGb28qIHB0cigpIHsKLSAgICBGb28gbG9jYWw7Ci0g
ICAgcmV0dXJuICZsb2NhbDsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxv
YXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkg
ewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0aHJlYWQgRm9vKiBwID0gcHRyKCk7Ci0g
ICAgcC0+YmFyMi55ID0gMS4wOwotICAgIGZsb2F0IHZhbHVlID0gcC0+YmFyMi55OwotCi0gICAg
cmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gdmFsdWU7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246
IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9
IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAy
MCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQw
XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0g
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5n
OiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0
YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRl
LCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3Vu
dDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUg
PSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVY
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzhd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3Vy
Y2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0g
PSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5k
aW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRH
cm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAg
IGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJp
bmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmlj
ZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2Ny
aXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTog
MX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4
dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDog
InN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRh
Y2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c3RydWN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNhNTIx
MTMwOWYwNmNiZDgzOWIwZGE2ZGFmZWI0MDQ0MTZkZGFkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGVtcHR5
U3RydWN0Ci1QQVNTIHNldHRpbmdBbkFycmF5SW5zaWRlQVN0cnVjdAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc3RydWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMGY2ODYw
NDdlZWUxZjY0NWU1OTc3MDI1NDBjMDYxMDA2OTE1YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMuZW1wdHlTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgVGhpbmd5IHRoaW5neTsKLSAgICAgICAgICAgIHJldHVybiA0NjsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDYpOwotfTsKLQotd2hsc2xUZXN0cy5zZXR0aW5nQW5B
cnJheUluc2lkZUFTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludFsxXSBhcnJheTsKLSAgICAgICAg
fQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAg
ICAgICAgICAgIHRocmVhZCBGb28qIGJhciA9ICZmb287Ci0gICAgICAgICAgICBiYXItPmFycmF5
WzBdID0gMjE7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLmFycmF5WzBdOwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAyMSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1m
aWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZTBiZjYwZTUxOGI5
ZjliNGNkMjAzNGY0MzU3MDg2NzA3OWU3NzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVs
ZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDQgKzAsMCBAQAotCi1QQVNTIHN3aXRjaEJyZWFrCi1QQVNTIHVua25vd25WYXJpYWJsZUlu
RG90RXhwcmVzc2lvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Ry
dWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTcyODk0M2MxNTg2NzViY2JkMTU3
ZTA1YTdjOGMwNDRjNGFlZTAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVy
YXRpb24tZWxlbWVudC1jbGFzaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4Ljwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN3aXRjaEJyZWFrID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7IGlu
dCB4OyB9Ci0gICAgICAgIGVudW0gQmFyIHsgeCA9IDQyLCB5ID0gMCB9Ci0gICAgICAgIGludCBm
KCkgewotICAgICAgICAgICAgRm9vIEJhcjsKLSAgICAgICAgICAgIHJldHVybiBpbnQoQmFyLngp
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZiIsIFtdKSwgMCk7Ci19Ci13aGxzbFRlc3RzLnVua25vd25WYXJpYWJs
ZUluRG90RXhwcmVzc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIGludCBh
ID0gdmFyaWFibGUueDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zd2l0Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZmNlNTRjMjI0ZmRhM2FmNzU2OTA2OTczZjFlYjY3NTNlYTJiYzQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
d2l0Y2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mg
c3dpdGNoQnJlYWsKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRj
aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNTU0YTBiOGYwOTY3MDRkOWZkMzI0MjMzYWNhOWM1ZmNkODk5
NzM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2guaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9z
dGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zd2l0Y2hCcmVh
ayA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28o
aW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwotICAgICAgICAg
ICAgc3dpdGNoICh4KSB7Ci0gICAgICAgICAgICBjYXNlIDc2NzoKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDY5
OgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gNDk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNzY3KV0pLCAyNyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDY5KV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgNDkpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRhOGZhMjdmNjlhMzg1NjhhMzE5NWJmOWI4ODg5M2RkM2E2MWIyYzIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHRlcm5hcnlFeHByZXNzaW9uCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk3MjRjZTY1N2M5ZmY3NGI3YWM4MjdhM2Q5MTFhZmZjYjFmNWMxZTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw5NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgaW50
IGJpdCBtYXRoLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnRlcm5h
cnlFeHByZXNzaW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCA8IDMgPyA0
IDogNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4geCA8IDEwID8gMTEgOiB4IDwgMTIgPyAxNCA6IDE1OwotICAgICAgICB9
Ci0gICAgICAgIGludCBiYXooaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAz
IDwgNCA/IHggOiA1OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNzY3KV0pLCA1KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMildKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImJhciIsIFttYWtlSW50KDgpXSksIDExKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW21ha2VJbnQoOSldKSwgMTEpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBb
bWFrZUludCgxMCldKSwgMTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMSldKSwgMTQpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMildKSwg
MTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJi
YXIiLCBbbWFrZUludCgxMyldKSwgMTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbbWFrZUludCgxNCldKSwgMTQpOwotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgKDQgPCA1ID8geCA6
IDcpID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAg
ICAoMCA8IDEgPyB4IDogeSkgPSA0MjsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg
eDsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAgICB0aHJlYWQgaW50KiB6
ID0gJigwIDwgMSA/IHggOiB5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKno7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7
Ci0gICAgICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGludFtdIHog
PSBAKDAgPCAxID8geCA6IHkpOwotICAgICAgICAgICAgICAgIHJldHVybiAqejsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeDsK
LSAgICAgICAgICAgICAgICBmbG9hdCB5OwotICAgICAgICAgICAgICAgIHJldHVybiA0IDwgNSA/
IHggOiB5OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiA0IDwgNSA/IDYgOiA3LjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2Y2Q5YjBiMjQ2MWQ5ZTU2
ZjVhNzQ4OGRhNTE4ZjgyN2Q5MjJkMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLQotSGFybmVzcyBF
cnJvciAoRkFJTCksIG1lc3NhZ2UgPSA1IGR1cGxpY2F0ZSB0ZXN0IG5hbWVzOiAiUmV0dXJuIGFu
IGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4i
LCAiUmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUuIiwgIlJldHVybiBhbiBleHBlY3RlZCBm
bG9hdCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLiIKLQotUEFT
UyBSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4KLVBBU1Mg
UmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBm
bG9hdCB2YWx1ZS4KLVBBU1MgVXBsb2FkIGFuZCByZXR1cm4gYSBib29sIHZhbHVlLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQg
aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0
dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFTUyBVcGxvYWQgbWFueSBib29sIHZhbHVl
cyBhbmQgcmV0dXJuIGEgY2FsY3VsYXRlZCByZXN1bHQuCi1QQVNTIFJldHVybiBhbiBleHBlY3Rl
ZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNT
IFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQg
ZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNT
IFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1
aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJl
dHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBp
bnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1
cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFVwbG9hZCBhbmQgY2FsY3VsYXRlIGEg
cmVzdWx0IGZyb20gdmFyaWVkIGFyZ3VtZW50IHR5cGVzLgotUEFTUyBTdG9yZSBpbnRvIGEgZmxv
YXQ0W10uCi1QQVNTIFVwbG9hZCBhIGludFtdIGFuZCBzdG9yZSBpbnRvIGEgaW50W10uCi1QQVNT
IFVwbG9hZCBhIGZsb2F0NHg0W10gYW5kIHN0b3JlIGludG8gYSBmbG9hdDR4NFtdLgotUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3Rl
ZCBmbG9hdDR4NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVl
LgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUuCi1QQVNTIENvZGUgc2hv
dWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3IgaXMgcmVwb3J0ZWQuCi1QQVNTIFN1Y2Nlc3Nm
dWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwgaXMgYW4gZXJyb3IuCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgwODM5ODdhOTJiMTFmYmU2NjFjNmMyMGY0ZjE1MDU4Mjc0MjMw
YmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwyNzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0
IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAx
OwotCi1jb25zdCBudW1lcmljU2NhbGFyVHlwZXMgPSBbImludCIsICJ1aW50IiwgImZsb2F0Il07
Ci0KLWNvbnN0IG51bWVyaWNTY2FsYXJGdW5jcyA9IHsKLSAgICAiaW50IjogY2FsbEludEZ1bmN0
aW9uLAotICAgICJ1aW50IjogY2FsbFVpbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxv
YXRGdW5jdGlvbgotfTsKLQotY29uc3Qgc2NhbGFyQXJnTWFrZXJzID0gewotICAgICJib29sIjog
bWFrZUJvb2wsCi0gICAgImludCI6IG1ha2VJbnQsCi0gICAgInVpbnQiOiBtYWtlVWludCwKLSAg
ICAiZmxvYXQiOiBtYWtlRmxvYXQKLX07Ci0KLWNvbnN0IGFycmF5VHlwZUxlbmd0aHMgPSB7Ci0g
ICAgImZsb2F0NCI6IDQsCi0gICAgImZsb2F0NHg0IjogMTYKLX07Ci0KLWNvbnN0IGFycmF5RnVu
Y3MgPSB7Ci0gICAgImZsb2F0NCI6IGNhbGxGbG9hdDRGdW5jdGlvbiwKLSAgICAiZmxvYXQ0eDQi
OiBjYWxsRmxvYXQ0eDRGdW5jdGlvbiwKLX07Ci0KLWNvbnN0IGFycmF5QXJnTWFrZXJzID0gewot
ICAgICJmbG9hdDQiOiBtYWtlRmxvYXQ0LAotICAgICJmbG9hdDR4NCI6IG1ha2VGbG9hdDR4NAot
fTsKLQotY29uc3QgZmxvYXQ0eDRleHBlY3RlZCA9IFswLCA0LCA4LCAxMiwgMSwgNSwgOSwgMTMs
IDIsIDYsIDEwLCAxNCwgMywgNywgMTEsIDE1XTsKLWNvbnN0IGZsb2F0NHg0Q29sdW1uRXhwZWN0
ZWQgPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAx
NV07Ci1jb25zdCBmbG9hdDRleHBlY3RlZCA9IFswLCAxLCAyLCAzXTsKLQotbGV0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5saXRlcmFscyA9ICgpID0+IHsKLSAgICBjaGVja0Jvb2xz
KCJSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4iLCAicmV0dXJuIHRydWU7Iik7Ci0gICAg
Y2hlY2tBcnJheXMoImZsb2F0NCIsICJyZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOyIsIFtdLCBm
bG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycygicmV0dXJuIDQyOyIsIFtd
LCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLnNpbmdsZUFyZ3VtZW50ID0gKCkgPT4gewotICAgIGNo
ZWNrQm9vbHMoIlVwbG9hZCBhbmQgcmV0dXJuIGEgYm9vbCB2YWx1ZS4iLCAicmV0dXJuIGluMDsi
LCBbdHJ1ZV0pOwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCAicmV0dXJuIGluMDsiLCBbZmxv
YXQ0ZXhwZWN0ZWRdLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycygi
cmV0dXJuIGluMDsiLCBbNDJdLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLm1hbnlBcmd1bWVudHMg
PSAoKSA9PiB7Ci0gICAgY2hlY2tCb29scygiVXBsb2FkIG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJl
dHVybiBhIGNhbGN1bGF0ZWQgcmVzdWx0LiIsCi0gICAgICAgICJyZXR1cm4gaW4wICYgaW4xICYg
aW4yICYgaW4zICYgaW40ICYgaW41ICYgaW42ICYgaW43OyIsCi0gICAgICAgIFt0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXSk7Ci0KLSAgICBsZXQgYm9keSA9
ICJyZXR1cm4gZmxvYXQ0KGluMC54LCBpbjEueSwgaW4yLnosIGluMy53KTsiCi0gICAgbGV0IGFy
Z3MgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAgICAgYXJncy5w
dXNoKGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9keSwgYXJn
cywgZmxvYXQ0ZXhwZWN0ZWQpOwotCi0gICAgYm9keSA9IGByZXR1cm4gaW4wICsgaW4xICsgaW4y
ICsgaW4zICsgaW40ICsgaW41ICsgaW42ICsgaW43O2A7Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFy
cyhib2R5LCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10sIDI4KTsKLX07Ci0KLXdobHNsVGVzdHMu
YnVmZmVyc1dpdGhPbmVWYWx1ZSA9ICgpID0+IHsKLSAgICBjb25zdCBib2R5ID0gYHJldHVybiBp
bjBbMF07YAotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQiLCBib2R5LCBbW2Zsb2F0NGV4cGVjdGVk
XV0sIGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja051bWVyaWNTY2FsYXJzKGJvZHksIFtbNDJd
XSwgNDIpOwotfTsKLQotd2hsc2xUZXN0cy5tdWx0aXBsZUJ1ZmZlckFyZ3VtZW50cyA9ICgpID0+
IHsKLSAgICBsZXQgYm9keSA9IGAKLSAgICBmbG9hdCB4ID0gaW4wWzBdLnggKyBpbjBbMV0ueCAr
IGluMFsyXS54ICsgaW4xLnggKyBpbjJbMF0ueDsKLSAgICBmbG9hdCB5ID0gaW4wWzBdLnkgKyBp
bjBbMV0ueSArIGluMFsyXS55ICsgaW4xLnkgKyBpbjJbMF0ueTsKLSAgICBmbG9hdCB6ID0gaW4w
WzBdLnogKyBpbjBbMV0ueiArIGluMFsyXS56ICsgaW4xLnogKyBpbjJbMF0uejsKLSAgICBmbG9h
dCB3ID0gaW4wWzBdLncgKyBpbjBbMV0udyArIGluMFsyXS53ICsgaW4xLncgKyBpbjJbMF0udzsK
LQotICAgIHJldHVybiBmbG9hdDQoeCwgeSwgeiwgdyk7YDsKLSAgICBjaGVja0FycmF5cygiZmxv
YXQ0IiwgYm9keSwgW1tmbG9hdDRleHBlY3RlZCwgZmxvYXQ0ZXhwZWN0ZWQsIGZsb2F0NGV4cGVj
dGVkXSwgZmxvYXQ0ZXhwZWN0ZWQsIFtmbG9hdDRleHBlY3RlZF1dLCBbMCwgNSwgMTAsIDE1XSk7
Ci0KLSAgICBib2R5ID0gYHJldHVybiBpbjBbMF0gKyBpbjBbMV0gKyBpbjBbMl0gKyBpbjEgKyBp
bjJbMF07YDsKLSAgICBjaGVja051bWVyaWNTY2FsYXJzKGJvZHksIFtbMCwgMSwgMl0sIDMsIFs0
XV0sIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMubXVsdGlwbGVBcmd1bWVudFR5cGVzID0gKCkgPT4g
ewotICAgIGNvbnN0IHNyYyA9IGBmbG9hdCB0ZXN0KGludCBpLCB1aW50IGMsIGZsb2F0NCBmNCwg
ZGV2aWNlIHVpbnRbXSB1LCBkZXZpY2UgZmxvYXRbXSBmcykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmbG9hdChpKSArIGZsb2F0KGMpICsgZjQueCArIGY0LnkgKyBmNC56ICsgZjQudyArIGZsb2F0
KHVbMF0pICsgZnNbMF0gKyBmc1sxXTsKLSAgICB9YDsKLSAgICBjb25zdCBpID0gbWFrZUludCgx
KTsKLSAgICBjb25zdCBjID0gbWFrZVVpbnQoMik7Ci0gICAgY29uc3QgZjQgPSBtYWtlRmxvYXQ0
KFs0LCA1LCA2LCA3XSk7Ci0gICAgY29uc3QgdSA9IG1ha2VVaW50KFszXSk7Ci0gICAgY29uc3Qg
ZnMgPSBtYWtlRmxvYXQoWzgsIDldKTsKLSAgICB3ZWJHUFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBjYWxsRmxvYXRGdW5jdGlvbihzcmMsICJ0ZXN0IiwgW2ksIGMsIGY0LCB1
LCBmc10pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KHJlc3VsdCwgNDUsIGVwc2lsb24sICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgICAgICB9KTsKLSAgICB9LCAiVXBsb2FkIGFuZCBjYWxjdWxhdGUgYSByZXN1bHQgZnJvbSB2
YXJpZWQgYXJndW1lbnQgdHlwZXMuIik7Ci19OwotCi13aGxzbFRlc3RzLmJ1ZmZlclN0b3JlcyA9
ICgpID0+IHsKLSAgICBsZXQgc3JjID0gYHZvaWQgdGVzdChkZXZpY2UgZmxvYXQ0W10gb3V0KSB7
Ci0gICAgICAgIG91dFswXSA9IGZsb2F0NCgwLCAxLCAyLCAzKTsKLSAgICB9YDsKLSAgICBjb25z
dCBmbG9hdDRPdXQgPSBtYWtlRmxvYXQ0KFtbMCwgMCwgMCwgMF1dKTsKLSAgICBjYWxsVm9pZEZ1
bmN0aW9uKHNyYywgInRlc3QiLCBmbG9hdDRPdXQpOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3Qo
KCkgPT4gewotICAgICAgICByZXR1cm4gZmxvYXQ0T3V0LmdldEFycmF5QnVmZmVyKCkudGhlbihh
cnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmxvYXQzMkFy
cmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZvciAobGV0IGk7IGkgPCA0OyArK2kpIHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHRbaV0sIGksICJUZXN0
IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0sICJTdG9yZSBpbnRvIGEgZmxvYXQ0W10uIik7Ci0KLSAgICBzcmMgPSBgdm9pZCB0ZXN0
KGRldmljZSBpbnRbXSBpbiwgZGV2aWNlIGludFtdIG91dCkgewotICAgICAgICBmb3IgKHVpbnQg
aSA9IDA7IGkgPCA1OyBpID0gaSArIDEpCi0gICAgICAgICAgICBvdXRbaV0gPSBpbltpXTsKLSAg
ICB9YDsKLSAgICBjb25zdCBhcnJheSA9IFswLCAxLCAyLCAzLCA0XTsKLSAgICBjb25zdCBpbnB1
dCA9IG1ha2VJbnQoYXJyYXkpOwotICAgIGNvbnN0IG91dHB1dCA9IG1ha2VJbnQoWzAsIDAsIDAs
IDAsIDBdKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBbaW5wdXQsIG91dHB1
dF0pOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gb3V0
cHV0LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBj
b25zdCByZXN1bHQgPSBuZXcgVWludDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgcmVzdWx0LCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQg
dmFsdWVzLiIpOwotICAgICAgICB9KTsKLSAgICB9LCAiVXBsb2FkIGEgaW50W10gYW5kIHN0b3Jl
IGludG8gYSBpbnRbXS4iKTsKLX07Ci0KLXdobHNsVGVzdHMuZmxvYXQ0eDR0ZXN0cyA9ICgpID0+
IHsKLSAgICBjb25zdCBzcmMgPSBgdm9pZCB0ZXN0KGRldmljZSBmbG9hdDR4NFtdIGluLCBkZXZp
Y2UgZmxvYXQ0eDRbXSBvdXQpIHsKLSAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9
IGkgKyAxKQotICAgICAgICAgICAgb3V0W2ldID0gaW5baV07Ci0gICAgfWA7Ci0gICAgY29uc3Qg
aW5wdXQgPSBtYWtlRmxvYXQ0eDQoW2Zsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQs
IGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWRdKTsKLSAgICBjb25zdCBvdXRwdXQg
PSBtYWtlRmxvYXQ0eDQobmV3IEFycmF5KDY0KS5maWxsKDApKTsKLSAgICBjYWxsVm9pZEZ1bmN0
aW9uKHNyYywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0pOwotCi0gICAgd2ViR1BVUHJvbWlzZVRl
c3QoKCkgPT4gewotICAgICAgICByZXR1cm4gb3V0cHV0LmdldEFycmF5QnVmZmVyKCkudGhlbihh
cnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmxvYXQzMkFy
cmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxNjsgKytqKQotICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyZXN1bHRbaSAqIDE2ICsgal0sIGZs
b2F0NHg0ZXhwZWN0ZWRbal0sIGVwc2lsb24sICJUZXN0IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMu
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sICJVcGxvYWQgYSBmbG9hdDR4
NFtdIGFuZCBzdG9yZSBpbnRvIGEgZmxvYXQ0eDRbXS4iKTsKLQotICAgIGNoZWNrQXJyYXlzKCJm
bG9hdDR4NCIsICJyZXR1cm4gZmxvYXQ0eDQoZmxvYXQ0KDAsIDEsIDIsIDMpLCBmbG9hdDQoNCwg
NSwgNiwgNyksIGZsb2F0NCg4LCA5LCAxMCwgMTEpLCBmbG9hdDQoMTIsIDEzLCAxNCwgMTUpKTsi
LCBbXSwgZmxvYXQ0eDRDb2x1bW5FeHBlY3RlZCk7Ci0gICAgY2hlY2tBcnJheXMoImZsb2F0NHg0
IiwgInJldHVybiBpbjA7IiwgW2Zsb2F0NHg0ZXhwZWN0ZWRdLCBmbG9hdDR4NGV4cGVjdGVkKTsK
LSAgICBsZXQgbXVsdGlwbGU0eDRhcmdzID0gW107Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
NjsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGFyZyA9IG5ldyBBcnJheSgxNik7Ci0gICAgICAgIGFy
Zy5maWxsKDApOwotICAgICAgICBhcmdbaV0gPSBpOwotICAgICAgICBtdWx0aXBsZTR4NGFyZ3Mu
cHVzaChhcmcpOwotICAgIH0KLSAgICBjaGVja0FycmF5cygiZmxvYXQ0eDQiLCAicmV0dXJuIGlu
MCArIGluMSArIGluMiArIGluMyArIGluNCArIGluNSArIGluNiArIGluNyArIGluOCArIGluOSAr
IGluMTAgKyBpbjExICsgaW4xMiArIGluMTMgKyBpbjE0ICsgaW4xNTsiLCBtdWx0aXBsZTR4NGFy
Z3MsIGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIs
ICJyZXR1cm4gaW4wWzBdOyIsIFtbZmxvYXQ0eDRleHBlY3RlZF1dLCBmbG9hdDR4NGV4cGVjdGVk
KTsKLX07Ci0KLXdobHNsVGVzdHMuY2hlY2tGYWlsVGVzdHMgPSAoKSA9PiB7Ci0gICAgd2ViR1BV
UHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gY2hlY2tGYWlsKGBEb29ycyBhbmQg
Y29ybmVycywga2lkLiBUaGF0J3Mgd2hlcmUgdGhleSBnZXRjaGEuYCk7Ci0gICAgfSwgIkNvZGUg
c2hvdWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3IgaXMgcmVwb3J0ZWQuIik7Ci0KLSAgICB3
ZWJHUFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjaGVja0ZhaWwoIiIpLmNh
dGNoKGUgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIEVycm9yLCAi
QW4gZXhwZWN0ZWQgRXJyb3Igd2FzIGNhdWdodC4iKTsKLSAgICAgICAgfSk7Ci0gICAgfSwgIlN1
Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwgaXMgYW4gZXJyb3IuIikKLX07
Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIHRy
eSB7Ci0gICAgICAgIGF3YWl0IGhhcm5lc3MucmVxdWVzdERldmljZSgpOwotICAgICAgICBmb3Ig
KGNvbnN0IG5hbWUgaW4gd2hsc2xUZXN0cykgewotICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0
c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICB3aGxzbFRlc3RzW25hbWVdKCk7Ci0gICAgICAg
IH0KLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAKLSAgICAgICAgdGhy
b3cgZTsKLSAgICB9Ci19KTsKLQotLyogSGVscGVyIGZ1bmN0aW9ucyAqLwotCi1jb25zdCBjaGVj
a051bWVyaWNTY2FsYXJzID0gKGJvZHksIGFyZ1ZhbHVlcywgZXhwZWN0ZWQpID0+IHsKLSAgICBs
ZXQgZnVuY3Rpb25zID0gW107Ci0gICAgbGV0IHNyYyA9ICIiOwotICAgIGZvciAobGV0IHR5cGUg
b2YgbnVtZXJpY1NjYWxhclR5cGVzKSB7Ci0gICAgICAgIGxldCBuYW1lLCB2YWx1ZXM7Ci0gICAg
ICAgIFtzcmMsIG5hbWUsIHZhbHVlc10gPSBhcHBlbmRTY2FsYXJGdW5jdGlvblRvU291cmNlKHNy
YywgdHlwZSwgYm9keSwgYXJnVmFsdWVzKTsKLSAgICAgICAgZnVuY3Rpb25zLnB1c2goeyB0eXBl
OiB0eXBlLCBuYW1lOiBuYW1lLCBhcmdzOiB2YWx1ZXMsIGV4cGVjdGVkOiBleHBlY3RlZCB9KTsK
LSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0
IGNhbGxGdW5jID0gbnVtZXJpY1NjYWxhckZ1bmNzW2YudHlwZV07Ci0gICAgICAgIHdlYkdQVVBy
b21pc2VUZXN0KGFzeW5jICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsRnVuYyhzcmMs
IGYubmFtZSwgZi5hcmdzKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMocmVzdWx0LCBmLmV4cGVjdGVkLCBlcHNpbG9uLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBgUmV0dXJu
IGFuIGV4cGVjdGVkICR7Zi50eXBlfSB2YWx1ZS5gKTsKLSAgICB9Ci19OwotCi1jb25zdCBjaGVj
a0Jvb2xzID0gKG1zZyA9ICJSZXR1cm4gYW4gZXhwZWN0ZWQgYm9vbCB2YWx1ZS4iLCBib2R5LCBh
cmdWYWx1ZXMgPSBbXSwgZXhwZWN0ZWQgPSB0cnVlKSA9PiB7Ci0gICAgY29uc3QgW3NyYywgbmFt
ZSwgdmFsdWVzXSA9IGFwcGVuZFNjYWxhckZ1bmN0aW9uVG9Tb3VyY2UoIiIsICJib29sIiwgYm9k
eSwgYXJnVmFsdWVzKTsgCi0KLSAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBjYWxsQm9vbEZ1bmN0aW9uKHNyYywgbmFtZSwgdmFsdWVzKS50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9LCBlID0+IHsKLSAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAg
ICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9KTsKLSAgICB9LCBtc2cpOwotfTsKLQotY29u
c3QgY2hlY2tBcnJheXMgPSAodHlwZSwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVjdGVkKSA9
PiB7Ci0gICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAgIGxldCB2YWx1ZXMgPSBbXTsKLSAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAvLyBT
dXBwb3J0IGFycmF5cyBvZiBmbG9hdDQsIGluY2x1ZGluZyBvbmUgd2l0aCBhIHNpbmdsZSBmbG9h
dDQuCi0gICAgICAgIGNvbnN0IHRvdGFsTGVuZ3RoID0gYXJnVmFsdWVzW2ldLmZsYXQoKS5sZW5n
dGg7Ci0gICAgICAgIGNvbnN0IGlzQnVmZmVyID0gYXJnVmFsdWVzW2ldLmxlbmd0aCA9PT0gMSB8
fCB0b3RhbExlbmd0aCA+IGFycmF5VHlwZUxlbmd0aHNbdHlwZV07Ci0gICAgICAgIGlucHV0QXJn
cy5wdXNoKGAke2lzQnVmZmVyID8gImRldmljZSAiIDogIiJ9JHt0eXBlfSR7aXNCdWZmZXIgPyAi
W10iIDogIiJ9IGluJHtpfWApOwotICAgICAgICB2YWx1ZXMucHVzaChhcnJheUFyZ01ha2Vyc1t0
eXBlXShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBjb25zdCBzcmMgPSBgJHt0eXBlfSAk
e3R5cGV9VGVzdCgke2lucHV0QXJncy5qb2luKCIsICIpfSkgeyAke2JvZHl9IH0KLSAgICBgOwot
Ci0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICByZXR1cm4gYXJy
YXlGdW5jc1t0eXBlXShzcmMsIGAke3R5cGV9VGVzdGAsIHZhbHVlcykudGhlbihyZXN1bHQgPT4g
ewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheVR5cGVMZW5ndGhzW3R5cGVd
OyArK2kpCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0W2ldLCBl
eHBlY3RlZFtpXSwgZXBzaWxvbiwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0g
ICAgICAgIH0pOwotICAgIH0sIGBSZXR1cm4gYW4gZXhwZWN0ZWQgJHt0eXBlfSB2YWx1ZS5gKTsK
LX0KLQotY29uc3QgYXBwZW5kU2NhbGFyRnVuY3Rpb25Ub1NvdXJjZSA9IChzcmMsIHR5cGUsIGJv
ZHksIGFyZ1ZhbHVlcykgPT4gewotICAgIGNvbnN0IG5hbWUgPSBgJHt0eXBlfVRlc3RgOwotCi0g
ICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAgIGxldCB2YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBjb25zdCBpc0J1
ZmZlciA9IEFycmF5LmlzQXJyYXkoYXJnVmFsdWVzW2ldKTsKLSAgICAgICAgaW5wdXRBcmdzLnB1
c2goYCR7aXNCdWZmZXIgPyAiZGV2aWNlICIgOiAiIn0ke3R5cGV9JHtpc0J1ZmZlciA/ICJbXSIg
OiAiIn0gaW4ke2l9YCk7Ci0gICAgICAgIHZhbHVlcy5wdXNoKHNjYWxhckFyZ01ha2Vyc1t0eXBl
XShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBzcmMgKz0gYCR7dHlwZX0gJHtuYW1lfSgk
e2lucHV0QXJncy5qb2luKCIsICIpfSkgeyAke2JvZHl9IH0KLSAgICBgOwotICAgIAotICAgIHJl
dHVybiBbc3JjLCBuYW1lLCB2YWx1ZXNdOwotfTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWdldGRpbWVuc2lv
bnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIw
ZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1n
ZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
UEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNp
b25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9u
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWFjYTM0ODAwMmVkNjNjNGFl
MTUyMzkwMTcwYzY1MjcyMWVhODY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNp
b25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9
IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoVGV4
dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgZGV2aWNlIHVpbnRbXSB0
aGVCdWZmZXIgOiByZWdpc3Rlcih1MSkpIHsKLSAgICB1aW50IHdpZHRoOwotICAgIHVpbnQgaGVp
Z2h0OwotICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7Ci0gICAgR2V0RGltZW5zaW9ucyh0aGVUZXh0
dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7Ci0gICAgdGhlQnVmZmVy
WzBdID0gd2lkdGg7Ci0gICAgdGhlQnVmZmVyWzFdID0gaGVpZ2h0OwotICAgIHRoZUJ1ZmZlclsy
XSA9IG51bWJlck9mTGV2ZWxzOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHtiaW5kaW5nOiAxLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVw
dGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1Q
TEVEfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWlu
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RP
UkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZTogVWludDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
cyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfV07Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9
IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21t
YW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1
ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVz
dWx0c1VpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0g
ICAgaWYgKHJlc3VsdHNVaW50MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNVaW50
MzJBcnJheVsxXSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNVaW50MzJBcnJheVsyXSA9PSAxKQot
ICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoIiIp
OwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFy
dChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZh
NTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3Jv
dW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTA4MjJjODUwNzlkNjM4YWYxMjY3MTk0MWRhZDE3ZDA4OGVjZDNkYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1
cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJl
MkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gTG9hZCh0aGVUZXh0dXJlLCBpbnQyKDAsIDApKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0
ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBj
b25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn1dfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQg
PSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JT
dGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1
ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5j
cmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZl
cnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsw
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIg
KiAyLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXko
dGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVs0XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAx
Mjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMTI4OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbOF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzldID0g
MTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAxMjg7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTJdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
M10gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDEyODsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7
d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsK
LSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0Vmlldygp
OwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNl
OiB0ZXh0dXJlVmlld31dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVy
Q29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9
IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVy
ZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25z
dCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4
dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDA0ZDBhZGY1ZGQ3MzBlZDM1ZDA0YTJjMWFiZGE3NmU1NGIwYzE5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBJbnRlcm1lZGlhdGUgewotICAgIGZs
b2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0MiB0ZXh0dXJlQ29vcmRpbmF0
ZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IEludGVybWVkaWF0ZSB2ZXJ0ZXhTaGFkZXIo
ZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUg
OiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBJbnRlcm1lZGlhdGUgcmVzdWx0OwotICAgIHJlc3VsdC5w
b3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC50ZXh0dXJlQ29vcmRpbmF0ZSA9IHRleHR1
cmVDb29yZGluYXRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBm
cmFnbWVudFNoYWRlcihmbG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMCksIFRl
eHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2Ft
cGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIFNhbXBsZUJp
YXModGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgdGV4dHVyZUNvb3JkaW5hdGUsIDEpOwotfQotYDsK
LQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1h
c3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRl
eFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0
aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGUwXX07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0
OiAiZmxvYXQyIn07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogMiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7
dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNh
bXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBs
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0ICsgRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMiAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJU
RVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAwOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEwMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIwXSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzIxXSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
Ml0gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyM10gPSAxMDA7Ci0gICAg
dmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIg
KyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZl
ckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJB
cnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
M10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzZdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTUKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0g
MjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTUKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0g
MjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
OV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRl
eHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0s
IG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVy
ZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRl
eHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBzYW1wbGVyRGVzY3JpcHRvciA9IHthZGRyZXNzTW9kZVU6ICJyZXBlYXQiLCBhZGRyZXNzTW9k
ZVY6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVc6ICJyZXBlYXQiLCBtYWdGaWx0ZXI6ICJsaW5lYXIi
LCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0
ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGlu
Z3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCBy
ZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5
b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAg
Y29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0g
ICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5v
cm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihz
d2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWlu
LmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRw
dXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVm
ZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50
OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weTFW
aWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDog
MiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRv
VGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0g
ICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9m
ZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6
IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OwotICAgIGNvbnN0IHRleHR1cmVD
b3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0IGNv
cHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZp
ZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6
IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91
dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0
b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0
dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNz
RW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3Jp
cHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZl
cnRleEJ1ZmZlcjBdLCBbMCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDRd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0
ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3Jh
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzM2NmVmMDZmNWVlNjk4MTcyOTVi
ZGUxZmMxOGYyOGMwMzBiNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12
ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rl
cih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIFNhbXBsZUdyYWQodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAu
NSwgMC41KSwgZmxvYXQyKDEsIDApLCBmbG9hdDIoMCwgMSkpOwotfQotYDsKLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9Owot
ICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3Jt
YXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwg
cHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRo
U3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1
ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB0ZXh0dXJl
RGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4
dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZm
ZXIpOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVsyXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs2XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVsxMF0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMV0gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVE
ZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExl
dmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdl
LlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUg
PSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4
dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1w
bGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIi
fTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJl
c291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwot
ICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQs
IGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNv
bnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVz
Y3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7
Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1
bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZl
cjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1
cmV9OwotICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDog
MX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZp
ZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJW
aWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiA0ICogMSAqIDF9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTog
dGV4dHVyZSwgbWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4
dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAg
ICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0
IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNv
bHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFy
Q29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1p
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNl
KS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUo
Y2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNGM3OGUxNTYxODcxODAzMzE3NGE4Y2JmODg0ZjU5ZDUzN2E4M2Iy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFk
ZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0
aGVTYW1wbGVyIDogcmVnaXN0ZXIoczEpKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gU2Ft
cGxlTGV2ZWwodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgMSk7Ci19
Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
dmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJp
ZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXRzID0g
W2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRz
fTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7
YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7Ymlu
ZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdl
LCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBj
b2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDog
MSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBk
ZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJy
YXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogMiAqIDIgKyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJl
RGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURh
dGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0g
MjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDA7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbN10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs5XSA9IDA7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAwOwotICAgIHRleHR1cmVE
YXRhQnVmZmVyVWludDhBcnJheVsxNF0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE2XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTddID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzE5XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIs
IGRlcHRoOiAxfSwgbWlwTGV2ZWxDb3VudDogMiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdl
OiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVH07Ci0g
ICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsK
LQotICAgIGNvbnN0IHNhbXBsZXJEZXNjcmlwdG9yID0ge21hZ0ZpbHRlcjogImxpbmVhciIsIG1p
bkZpbHRlcjogImxpbmVhciJ9OwotICAgIGNvbnN0IHNhbXBsZXIgPSBkZXZpY2UuY3JlYXRlU2Ft
cGxlcihzYW1wbGVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9
IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291
cmNlOiBzYW1wbGVyfV07Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0KLSAgICBjb25zdCBidWZmZXJD
b3B5MVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MVZpZXcg
PSB7dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3QgY29weTFTaXplID0ge3dpZHRoOiAyLCBo
ZWlnaHQ6IDIsIGRlcHRoOiAxfTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0
dXJlKGJ1ZmZlckNvcHkxVmlldywgdGV4dHVyZUNvcHkxVmlldywgY29weTFTaXplKTsKLSAgICBj
b25zdCBidWZmZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0
OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCByb3dQaXRjaDogVWlu
dDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxLCBpbWFnZUhlaWdodDogVWludDhBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMX07Ci0gICAgY29uc3QgdGV4dHVyZUNvcHky
VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZlbDogMX07Ci0gICAgY29uc3QgY29weTJT
aXplID0ge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxfTsKLSAgICBjb21tYW5kRW5jb2Rl
ci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkyVmlldywgdGV4dHVyZUNvcHkyVmlldywg
Y29weTJTaXplKTsKLQotICAgIGNvbnN0IGNsZWFyQ29sb3IgPSB7cjogMCwgZzogMCwgYjogMSwg
YTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0
VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVP
cDogInN0b3JlIiwgY2xlYXJDb2xvcn1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNo
bWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9y
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhkODZhYjVkNWI2MTY2ZmNkMGQyMjQxMTFmZjE0Y2Y5MzNlYzg3MDIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0
aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3Rlcihz
MSkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBTYW1wbGUodGhlVGV4dHVyZSwgdGhlU2Ft
cGxlciwgZmxvYXQyKDAuNSwgMC41KSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmlj
ZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTog
c2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJh
Z21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50
U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAi
OwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxN
b2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xv
ckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5v
cm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9y
V3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAg
IGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGUwXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTog
InNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlv
dXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
OV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgp
OwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdGV4dHVy
ZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRl
eHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMF0gPSAyNTU7Ci0gICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsyXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10g
PSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5Wzdd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4XSA9IDI1NTsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzEwXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlb
MTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTU7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNv
bnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0
aDogMX0sIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBM
RUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZp
Y2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZp
ZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVz
Y3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAg
ICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNl
OiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNv
bnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRp
bmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQg
PSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRv
ciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4g
PSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAg
Y29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3
KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0
dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAq
IDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAg
ICBjb25zdCBjb3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAg
Y29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4dHVy
ZUNvcHlWaWV3LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6
IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1l
bnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVh
ciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtj
b2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5k
ZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNz
RGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZl
cjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2Nv
bW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZk
ZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFy
cmF5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXkuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGltZW5zaW9uYWwtYXJyYXkuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YjYxOTM3MTQ5ZmNmMjUzZDY1MmEzYzRlZDU4
YzRiZWQ1NDczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12b2lkIGZp
bGwodGhyZWFkIGZsb2F0WzEwXVtdIGFycmF5LCBmbG9hdFsxMF0gdmFsdWUpIHsKLSAgICBmb3Ig
KHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBhcnJh
eVtpXSA9IHZhbHVlOwotICAgIH0KLX0KLQotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFtdIGFycmF5
LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsg
aSA9IGkgKyAxKSB7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1ib29s
IGNvbnRhaW5zKHRocmVhZCBmbG9hdFsxMF1bXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBm
b3IgKHVpbnQgaiA9IDA7IGogPCBhcnJheVtqXS5sZW5ndGg7IGogPSBqICsgMSkgewotICAgICAg
ICAgICAgaWYgKGFycmF5W2ldW2pdICE9IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBjb250
YWlucyh0aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQg
aSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBpZiAoYXJyYXlb
aV0gIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRl
U2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJ
RCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdFsxMF1bNV0gYXJyYXk7Ci0gICAg
aWYgKGFycmF5Lmxlbmd0aCAhPSA1KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFjb250YWlu
cyhAYXJyYXksIDApKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAgICAgICBmbG9hdFsxMF0gdmFsdWU7Ci0g
ICAgICAgIGZpbGwoQHZhbHVlLCBmbG9hdChpKSk7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7
Ci0gICAgfQotCi0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpID0gaSAr
IDEpIHsKLSAgICAgICAgZmxvYXRbMTBdIHZhbHVlID0gYXJyYXlbaV07Ci0gICAgICAgIGlmICgh
Y29udGFpbnMoQHZhbHVlLCBmbG9hdChpKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgYnVmZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBi
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2li
aWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNv
bnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5T
VE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0
c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6
IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7Ymlu
ZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERl
c2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3Vw
QmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAo
YmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlC
dWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOwotICAgIGNv
bnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3Mo
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5t
YXBSZWFkQXN5bmMoKTsKLSAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkgPSBuZXcgSW50MzJBcnJh
eShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzSW50MzJBcnJheVswXSA9PT0g
MSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjc4ZWI2MWE2YTM4MTYyNGZm
MWQ5Mzk3ZDMxZDhlODk0ZTU3YzQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90eXBlLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIHR5cGVNaXNtYXRj
aFJldHVybgotUEFTUyB0eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wKLVBBU1MgdHlwZU1pc21hdGNo
QXNzaWdubWVudAotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1cm5QYXJhbQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDQ4ZTE0ODFlNWVhMTA2ZTA0NGZjY2RkYThkZWZmOTQ0NThiYzkzMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdHlwZS1taXNtYXRjaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhh
cm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy50eXBlTWlz
bWF0Y2hSZXR1cm4gPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIDEwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRl
c3RzLnR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkgPSB4OwotICAgICAgICAgICAgfQotICAg
ICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hBc3NpZ25tZW50ID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZv
aWQgZm9vKHVpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAg
ICAgICAgICAgICAgICB5ID0geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdo
bHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuUGFyYW0gPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbyh1aW50IHgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLQotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzRhYjg5MTZkNzdjZWExOTJj
ZDgzNGY1Y2JhNzZhYjg1MDZiY2YyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBBU1MgdWludEJpdEFuZAot
UEFTUyB1aW50Qml0T3IKLVBBU1MgdWludEJpdFhvcgotUEFTUyB1aW50Qml0Tm90Ci1QQVNTIHVp
bnRMU2hpZnQKLVBBU1MgdWludFJTaGlmdAotUEFTUyB1aW50U2ltcGxlTWF0aAotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhiM2Q2YjBiNjJmOWIwOWEyNzM3OWRjODVlNWY1NGYzZDc4ZGRhYTguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEg
bmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVz
dCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
LnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSAmIGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVp
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAx
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0
aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5
NjcyODkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4NTczMildKSwgMCk7Ci19Ci0KLXdobHNs
VGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGEgfCBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyld
KSwgNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0MildKSwgNjU1MzUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRoLnBvdygyLCAzMikgIC0gNyld
KSwgNDI5NDk2NzI5NSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7
Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdFhvciA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSks
IG1ha2VVaW50KDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1
NDkzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoTWF0aC5wb3co
MiwgMzIpIC0gNyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDg1NzMyKV0pLCA4NTcz
Mik7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdE5vdCA9IGFzeW5jICgpID0+IHsgCi0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIH5hOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxKV0pLCA0Mjk0
OTY3Mjk0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5NDkwMTc2MCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0
aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCldKSwgNDI5NDk2NzI5NSk7Ci19
Ci0KLXdobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhIDw8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpLCBt
YWtlVWludCg3KV0pLCAxMjgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMjYy
MTQwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5
NDk2NzI2NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDMpXSksIDApOwotfTsKLQotd2hsc2xU
ZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGEgPj4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcp
XSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoMildKSwgMTYzODMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludCg1KV0pLCAxMzQyMTc3MjcpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX07Ci0KLXdobHNsVGVzdHMudWludFNpbXBs
ZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAidWludCBmb28odWludCB4
LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoNSld
KSwgMTIpOwotCi0gICAgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1
cm4geCAtIHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCAyKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7Ci0KLSAgICBwcm9ncmFtID0gInVpbnQg
Zm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1h
a2VVaW50KDUpXSksIDM1KTsKLQotICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgd29yazogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTYwMgotICAgIC8vIHByb2dyYW0g
PSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLyB5OyB9IjsKLSAgICAvLyBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
VWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZDkzNTYwZTEyZjg1ODc2ZmM2OGYzMmIzODFhNWE5Y2U0MzE3
OWNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogNDoyNTogQ2Fu
bm90IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgotUEFTUwotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2QzMDRhZTU0YTRkYWI3Mzk5M2YzZmIwOWIwN2EzYjExMGRh
ZjNhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRz
KDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVm
ZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElE
KSB7Ci0gICAgZmxvYXQ0IHZlYyA9IGZsb2F0NCh4LHgseCx4KTsKLX0KLWA7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1
LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1
ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0K
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRp
bmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29u
c3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3Ig
PSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1
dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJp
YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5l
ZC12YXJpYWJsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0
NzNjM2QwMDM5ZTk4NWRiMmM1Zjc0YTIwMjBiZjhiZDU5OTk0ZmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Vz
ZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUo
KTogV0hMU0wgY29tcGlsZSBlcnJvcjogNjo5OiBDYW5ub3QgZmluZCB0aGUgdmFyaWFibGUgZGVj
bGFyYXRpb24uCi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRl
ZmluZWQtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZp
bmVkLXZhcmlhYmxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTAwNzM3
YjJmY2U2MDYxYzhiNThkODk3Mjg4NjJjMTUwNjkxNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRl
ZmluZWQtdmFyaWFibGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0
ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJl
YWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBmbG9hdCBmb287Ci0gICAgaWYgKGZv
bykgewotICAgICAgICB4ID0geCArIDE7Ci0gICAgfQotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24g
c3RhcnQoKSB7Ci0gICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKTsKLSAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZp
Y2UoKTsKLQotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1
bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdl
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBk
ZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwot
fQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiOWIyZDAxZmRjNTdlM2QzZjQ5
MGIxMTk5OTRmODAzNjcyM2YwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZhcmlhYmxl
U2hhZG93aW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJs
ZS1zaGFkb3dpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFk
b3dpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YTBjYmE3ZDE3MGUx
YWM0ZjE5ZjJlMDc1NDM1NmQyMmU5MjQ0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFyaWFibGUtc2hhZG93
aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRl
bnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMudmFyaWFibGVTaGFkb3dpbmcgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICBpbnQgeCA9IDc7Ci0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaW50IHggPSA4OwotICAgICAgICAgICAgICAgIHkgPSB4OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDgp
OwotCi0gICAgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludCB5OwotICAgICAgICAgICAgaW50IHggPSA3OwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGludCB4ID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHkgPSB4
OwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDcpOwotfQot
Ci1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmU2NTE2ZmFhMWUyZmNkMWI1YTlmOTY3YjYxYzFm
YWUzN2FjNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotUEFTUyB2ZWN0b3JMVAotUEFTUyB2ZWN0b3JM
VDIKLVBBU1MgdmVjdG9yTFQzCi1QQVNTIHZlY3RvckxURQotUEFTUyB2ZWN0b3JMVEUyCi1QQVNT
IHZlY3RvckxURTMKLVBBU1MgdmVjdG9yR1QKLVBBU1MgdmVjdG9yR1RFCi1QQVNTIHZlY3RvckdU
RTIKLVBBU1MgdmVjdG9yR1RFMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdmVjdG9yLWNvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3It
Y29tcGFyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWJkNjkzY2NmNzc4
MDU2M2FiYmY2M2M0MDQ3ZjFhZDg2MWMxOTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFy
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Ci08dGl0bGU+PT0uPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBl
cHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckxUID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAg
ZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2
OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDwg
djIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
LnZlY3RvckxUMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAg
ICAgICAgIGludDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgLT0gMTA7Ci0KLSAgICAgICAgICAg
IHJldHVybiAhYW55KHYgPCB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFQzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgaW50MiB2ID0gaW50
MigxMCwgMjApOwotICAgICAgICAgICAgaW50MiB2MiA9IHY7Ci0gICAgICAgICAgICB2Mi55ICs9
IDEwOwotCi0gICAgICAgICAgICBib29sMiByZXN1bHQgPSB2IDwgdjI7Ci0gICAgICAgICAgICBy
ZXR1cm4gIXJlc3VsdC54ICYmIHJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxURSA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0
MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLSAg
ICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8PSB2Mik7
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVj
dG9yTFRFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBi
b29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwot
ICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDw9
IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy52ZWN0b3JMVEUzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAu
MCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIueSAtPSAxLjA7
Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYgPD0gdjI7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnggJiYgIXJlc3VsdC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1
ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckdUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYg
PSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAg
ICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+IHYyKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JH
VEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBm
b28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAg
ICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAg
ICAgICByZXR1cm4gIWFueSh2ID49IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUyID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgaW50MiB2
ID0gaW50MigxMCwgMjApOwotICAgICAgICAgICAgaW50MiB2MiA9IHY7Ci0KLSAgICAgICAgICAg
IHJldHVybiBhbGwodiA+PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFMyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGludDIgdiA9IGlu
dDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2OwotICAgICAgICAgICAgdjIueSAr
PSAxMDsKLQotICAgICAgICAgICAgYm9vbDIgcmVzdWx0ID0gdiA+PSB2MjsKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQueCAmJiAhcmVzdWx0Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10p
LCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MDIwMDll
ZjAzMjBmMDI3NWM0ZWZhYzRlNWJmM2Q5ODY0OGEwNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1j
b25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0K
LVBBU1MgdmVjdG9yQ29uc3RydWN0b3IKLVBBU1MgdmVjdG9yQ29uc3RydWN0b3IyCi1QQVNTIHZl
Y3RvckNvbnN0cnVjdG9yMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dmVjdG9yLWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1jb25zdHJ1Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyZmM0
ZWRhZWU4MjI5Y2U0Y2QyZTQwY2ZlMGJhYjQzMDQ4ZDc4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9y
LWNvbnN0cnVjdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT52ZWN0b3IgY3Rvci48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1Y3RvciA9IGFzeW5jICgpID0+
IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAg
ICAgIGZsb2F0MyB2ID0gZmxvYXQzKGZsb2F0MigxMC4wLCAxMS4wKSwgMTIuMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdi54ID09IDEwLjAgJiYgdi55ID09IDExLjAgJiYgdi56ID09IDEyLjA7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9y
Q29uc3RydWN0b3IyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzIHYgPSBmbG9hdDMoMTAuMCwgZmxv
YXQyKDExLjAsIDEyLjApKTsKLSAgICAgICAgICAgIHJldHVybiB2LnggPT0gMTAuMCAmJiB2Lnkg
PT0gMTEuMCAmJiB2LnogPT0gMTIuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUp
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1Y3RvcjMgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBi
b29sMyB2ID0gYm9vbDModHJ1ZSwgYm9vbDIoZmFsc2UsIHRydWUpKTsKLSAgICAgICAgICAgIHJl
dHVybiB2LnggJiYgIXYueSAmJiB2Lno7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1z
dWJ0cmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9y
LW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc5MDI3ODk5MzU3N2JkN2QxZjE1ZGQxMDdjNmZlYjZkZGY4YWRhYTgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgdmVjdG9yQWRkaXRp
b24KLVBBU1MgdmVjdG9yU3VidHJhY3Rpb24KLVBBU1MgbWF0cml4QWRkaXRpb24KLVBBU1MgbWF0
cml4U3VidHJhY3Rpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zl
Y3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OGQ3NDI3Yzc2YjYxYTg1ZDE1OWU1MDZkMDQzMWU5ZmJi
NTY4MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24u
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3Rz
ID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckFkZGl0
aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBh
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAg
ICAgICAgICBmbG9hdDIgdSA9IHYgKyA3OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAg
ICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYg
PSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgKyA3OwotICAgICAgICAg
ICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIg
dSA9IDcgKyB2OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBm
bG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7
Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2OwotICAgICAgICAgICAgcmV0dXJuIHUueTsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxv
YXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9ICt2OwotICAgICAg
ICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9h
dDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgIGA7Ci0K
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAg
ImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUi
LCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgNCwgZXBzaWxvbik7Ci19OwotCi13aGxz
bFRlc3RzLnZlY3RvclN1YnRyYWN0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYg
PSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgLSA3OwotICAgICAgICAg
ICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIg
dSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBm
bG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7
Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgLSB2OwotICAgICAgICAgICAgcmV0dXJuIHUueDsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxv
YXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgLSB2OwotICAg
ICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBm
bG9hdDIgdSA9IC12OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywg
NCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IC12OwotICAgICAgICAgICAgcmV0dXJuIHUueTsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC00LCBlcHNpbG9uKTsKLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBb
XSksIC0zLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9h
cHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwg
MywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtNCwg
ZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEFkZGl0aW9uID0gYXN5bmMgKCkgPT4g
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYp
KTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtICsgNzsKLSAgICAgICAgICAgIHJldHVybiBu
WzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwot
ICAgICAgICAgICAgZmxvYXQyeDIgbiA9IG0gKyA3OwotICAgICAgICAgICAgcmV0dXJuIG5bMF1b
MV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiBuID0gNyArIG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVswXTsK
LSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxv
YXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAg
ICAgIGZsb2F0MngyIG4gPSA3ICsgbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzFdOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAg
ZmxvYXQyeDIgbiA9ICttOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBm
bG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBuID0gK207Ci0gICAgICAgICAgICByZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIDExLCBlcHNpbG9uKTsK
LSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFt
LCAgImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAg
ImUiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNh
bGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwgNCwgZXBzaWxvbik7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeFN1YnRyYWN0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQy
eDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAg
IGZsb2F0MngyIG4gPSBtIC0gNzsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAgICAg
ICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBt
ID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxv
YXQyeDIgbiA9IG0gLSA3OwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBm
bG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBuID0gNyAtIG07Ci0gICAgICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0
MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4g
PSA3IC0gbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIo
ZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IC1t
OwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQg
ZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIo
MywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gLW07Ci0gICAg
ICAgICAgICByZXR1cm4gblswXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSks
IC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDQs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAtMywgZXBz
aWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMDY0M2E0OGNkOTAyMGJmYTYyOGEwNzQyMTY0MzhhYjQ5YTYzNmM3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIHZlY3RvclR5cGVTeW50YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC92ZWN0b3Itc3ludGF4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MWY1
NmZlZTYwYjY5ZDVkNDgzMDBkZmFhMGY1ZWRkNGViMzBjY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1zeW50YXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotCi13aGxzbFRlc3RzLnZlY3RvclR5cGVTeW50YXggPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vMigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHZlY3RvcjxpbnQsIDI+IHogPSBpbnQyKDMsIDQp
OwotICAgICAgICAgICAgeCA9IHo7Ci0gICAgICAgICAgICByZXR1cm4geC55OwotICAgICAgICB9
Ci0KLSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQzIHg7Ci0g
ICAgICAgICAgICB2ZWN0b3I8aW50LCAzPiB6ID0gaW50MygzLCA0LCA1KTsKLSAgICAgICAgICAg
IHggPSB6OwotICAgICAgICAgICAgcmV0dXJuIHguejsKLSAgICAgICAgfQotCi0gICAgICAgIGlu
dCBmb280KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50NCB4OwotICAgICAgICAgICAgdmVj
dG9yPGludCw0PiB6ID0gaW50NCgzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIHggPSB6OwotICAg
ICAgICAgICAgcmV0dXJuIHgudzsKLSAgICAgICAgfWA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280Iiwg
W10pLCA2KTsKLQotICAgIHByb2dyYW0gPSBgCi0gICAgICAgIHR5cGVkZWYgaSA9IGludDsKLSAg
ICAgICAgaW50IGZvbzIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQyIHg7Ci0gICAgICAg
ICAgICB2ZWN0b3I8aSwgMj4geiA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICB4ID0gejsKLSAg
ICAgICAgICAgIHJldHVybiB4Lnk7Ci0gICAgICAgIH1gOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwotfQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzM4MjhjNzQxYzJlNWQzOTZkN2Yx
MTYwMTg2OTA0NDFiYjNkMTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRl
ci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyB2b2lk
VmFyaWFibGUKLVBBU1Mgdm9pZFBhcmFtZXRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiYWY2MTk1MGZiZDM2OGEyODI3YzU1MGM4NWNmODRjNDVlNGM4MjAyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0
IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudm9pZFZh
cmlhYmxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIHZvaWQgeDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudm9pZFBhcmFtZXRlciA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB2b2lkIGZvbyh2b2lkIHgpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2
ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhODZhMmY0NWM5YWJmMTE2NmQ4YzUzMjllYTQwMGI4M2Q5OWRkNjI3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAg
ICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZl
cnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0g
ICAgd2hpbGUgKGkgPCAxMCkgewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsKLSAgICAgICAgaSA9IGkg
KyAxOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3Vs
dC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1Rhcmdl
dCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUx
ID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3Qg
aW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29u
c3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9
IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRl
eEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
N10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51
bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZP
Uk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6
IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0
dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6
ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNj
cmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAg
IGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAs
IGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1
NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29u
dGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3At
Y29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRp
bnVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZmYzNTcxOWNlODBkN2U0
ODFhZDMwZTEwMGIxOGEwNDM3OGFlOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGlu
dWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9
IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
OwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0
IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRl
IDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9
IHRydWU7Ci0gICAgdWludCBpID0gMDsKLSAgICB3aGlsZSAoKHNoYWRlID0gc2hhZGUgKyAwLjEs
IGkgPCAxMCkpIHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGkgPSBpICsgMTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlID0gMC4wOwotICAg
IH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9
IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRl
eFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVy
In07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kg
PSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9u
dEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7
fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBb
e2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6
IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUg
PSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRl
ckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0
dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0g
e3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRz
ID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5w
dXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6
IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAu
bWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4x
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4xOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwot
Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2Fw
Q2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNv
bnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3Jl
YXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0g
e2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJl
bmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBh
c3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmlj
ZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0g
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7
Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsK
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDIxOWJiMGEzODdjOThlMTcwYmE5Y2QzNThmYjRhNzZlYmE5MjNlZWEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsK
LSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkg
ewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21l
bnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hh
ZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwot
ICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2Rl
OiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0i
LCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3Jp
dGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNv
bnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9Owot
ICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0
In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dDEgPSB7c3RyaWRlOiA0LCBhdHRyaWJ1dGVTZXQ6IFth
dHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MCwgaW5wdXQxXTsKLSAgICBj
b25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMURlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMURl
c2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjEubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjFBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZs
b2F0MzJBcnJheVsxXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsyXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
MS51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXpl
OiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNl
OiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0
b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9y
bSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3
YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4u
Z2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1
dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0g
e3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBb
e2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2Fk
T3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMCwgdmVydGV4QnVmZmVyMV0sIFswLCAwXSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNz
KCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwot
ICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFz
aWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVl
QmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1h
cmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dy
b25nLWFyZ3VtZW50LWxlbmd0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI3YjE4MTlmMGEyMTI1YTE4ZjlkYzkzNTEyOGNlMzA0YzlhOWMyMzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwyMSArMCwwIEBACi0KLVBBU1MgYml0QW5kV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBi
aXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGJpdE9yV3JvbmdBcmd1bWVudExlbmd0aAot
UEFTUyBiaXRYb3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGRlY1dyb25nQXJndW1lbnRMZW5n
dGgKLVBBU1MgZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBkb3RPcGVyYXRvclNldHRl
cldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZG90T3BlcmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3Ro
Ci1QQVNTIGdyZWF0ZXJFcXVhbFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZ3JlYXRlcldyb25n
QXJndW1lbnRMZW5ndGgKLVBBU1MgaW5jV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBpbmRleE9w
ZXJhdG9yU2V0dGVyV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBpbmRleE9wZXJhdG9yV3JvbmdB
cmd1bWVudExlbmd0aAotUEFTUyBsU2hpZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIG1pbnVz
V3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBtb2R1bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNT
IHBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHJTaGlmdFdyb25nQXJndW1lbnRMZW5ndGgK
LVBBU1MgdGltZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTZkYTcxZTJmZmI1OGEzMzBmNzJkNjM4MjgxNGU0N2JmY2ZmZTY5NC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3RoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwzNjQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRm
LTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IGlu
dCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5iaXRB
bmRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBp
bnQgb3BlcmF0b3ImKEZvbykgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciYoRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAg
ICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciYoRm9vLCBGb28s
IEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0
cy5iaXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcn4oKSB7IHJldHVy
biAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yfihGb28sIEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0K
LXdobHNsVGVzdHMuYml0T3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3J8KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcnwoRm9vKSB7IHJldHVybiA1
MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRv
cnwoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
fQotd2hsc2xUZXN0cy5iaXRYb3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cl4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAg
ICAgaW50IG9wZXJhdG9yXihGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAg
ICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yXihGb28sIEZvbywgRm9vKSB7IHJldHVy
biA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmRlY1dyb25nQXJn
dW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oKSB7IHJldHVybiAzMjsgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oRm9vLCBGb28p
IHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZGl2
aWRlV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IvKCkgeyByZXR1cm4gMzI7
IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci8o
Rm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvci8oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAg
YCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5kb3RPcGVyYXRvclNldHRlcldyb25nQXJndW1l
bnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5m
b289KCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIEZvbyBvcGVyYXRvci5mb289KEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KEZvbywgaW50LCBpbnQp
IHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZG90
T3BlcmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28oKSB7IHJl
dHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yLmZvbyhGb28sIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotfQotd2hsc2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMg
KCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJv
b2wgb3BlcmF0b3I+PSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7
IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PShGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PShGb28s
IEZvbywgRm9vKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdo
bHNsVGVzdHMuZ3JlYXRlcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4o
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAg
ICBib29sIG9wZXJhdG9yPihGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0
IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+KEZvbywgRm9vLCBGb28pIHsgcmV0
dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5pbmNXcm9u
Z0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcisrKCkgeyByZXR1cm4gMzI7IH0KLSAg
ICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcisrKEZvbywg
Rm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3Rz
LmluZGV4T3BlcmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdPSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQpIHsg
cmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQsIGludCkgeyByZXR1
cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW109KGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5pbmRl
eE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSgpIHsgcmV0
dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGludCkgeyByZXR1cm4gNDI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oaW50LCBpbnQsIGludCkgeyByZXR1cm4gNDI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5sU2hpZnRXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcjw8KCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw8KEZvbykgeyByZXR1cm4g
NTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAg
ICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0
b3I8PChGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci13aGxzbFRlc3RzLm1pbnVzV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3ItKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvci0oRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAg
YCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5tb2R1bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoID0g
YXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAg
ICAgIGludCBvcGVyYXRvciUoKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJShGb28pIHsgcmV0dXJuIDUzNDsgfQotICAg
ICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJShGb28sIEZv
bywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRl
c3RzLnBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcisoKSB7IHJldHVy
biAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yKyhGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci19Ci13aGxzbFRlc3RzLnJTaGlmdFdyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9Pgot
ewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJh
dG9yPj4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yPj4oRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0g
ICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcj4+KEZvbywgRm9vLCBGb28pIHsg
cmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMudGltZXNX
cm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvciooKSB7IHJldHVybiAzMjsgfQot
ICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKihGb28p
IHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAg
aW50IG9wZXJhdG9yKihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ0OTFlNTMxNmM5ZjY2YThmY2VjOGU5
MjEyYjYyNGVlZDczMDc4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLVBBU1MgZGVjV3JvbmdUeXBlcwotUEFT
UyBpbmNXcm9uZ1R5cGVzCi1QQVNTIGdyZWF0ZXJUaGFuV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGdy
ZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZQotUEFTUyBpbmRleFNldHRlcldpdGhNaXNtYXRjaGVk
VHlwZQotUEFTUyBzZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvd3JvbmctdHlwZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMx
YWIyY2ZiZTI0NDQxMjdjMjE5OTU1M2Q1MDUyOTY5YWM3ZjY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3Jv
bmctdHlwZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBpbnQgYml0IG1hdGguPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZGVjV3JvbmdUeXBlcyA9IGFzeW5jICgpID0+Ci17
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3ItLShmbG9hdCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi13
aGxzbFRlc3RzLmluY1dyb25nVHlwZXMgPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yKysoZmxvYXQpIHsgcmV0
dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5ncmVhdGVy
VGhhbldyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I+KGludCBhLCBpbnQgYikgeyBy
ZXR1cm4gYSArIGI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLmdy
ZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3I+PShpbnQgYSwgaW50
IGIpIHsgcmV0dXJuIGEgKyBiOyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xU
ZXN0cy5pbmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlwZSA9IGFzeW5jICgpID0+Ci17Ci0gICAg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBmbG9hdCBvcGVyYXRvcltdKGludCwg
dWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPShpbnQsIHVpbnQsIGludCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQot
ICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5zZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBh
c3luYyAoKSA9PgotewotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgZmxv
YXQgb3BlcmF0b3IuZm9vKGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gNS40MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb289KGlu
dCwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8t
aW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29m
dHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTNmNzk2MWVhZWZiMWZmYTJiOWQzNGY4ODUx
ZDQ0YTZjOWM4MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0
cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAg
IGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi1zdHJ1Y3QgQmFyIHsKLSAgICBmbG9h
dCB5OwotICAgIGZsb2F0IHkxOwotICAgIGZsb2F0IHkyOwotICAgIGZsb2F0IHkzOwotICAgIGZs
b2F0IHk0OwotICAgIGZsb2F0IHk1OwotICAgIGZsb2F0IHk2OwotICAgIGZsb2F0IHk3OwotICAg
IGZsb2F0IHk4OwotICAgIGZsb2F0IHk5OwotICAgIGZsb2F0IHkxMDsKLSAgICBmbG9hdCB5MTE7
Ci0gICAgZmxvYXQgeTEyOwotICAgIGZsb2F0IHkxMzsKLSAgICBmbG9hdCB5MTQ7Ci0gICAgZmxv
YXQgeTE1OwotICAgIGZsb2F0IHkxNjsKLSAgICBmbG9hdCB5MTc7Ci0gICAgZmxvYXQgeTE4Owot
ICAgIGZsb2F0IHkxOTsKLSAgICBmbG9hdCB5MjA7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVy
dGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgQmFyIGJhcjsKLQot
ICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IGJhci55
MjA7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmli
dXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3Ry
aWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBb
aW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3ti
aW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIw
XSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci19Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5
ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVl
cy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXpl
LXZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12
YWx1ZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAzNmY4NDU0NGM5NTY0
NDE1NzY0OGZjZmE0NmEyOTI3ZjcwNWM0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXpl
LXZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291
cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXRocmVhZCBmbG9h
dCogcHRyKCkgewotICAgIGZsb2F0IGxvY2FsOwotICAgIHJldHVybiAmbG9jYWw7Ci19Ci0KLXZl
cnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0Owot
Ci0gICAgdGhyZWFkIGZsb2F0KiBwID0gcHRyKCk7Ci0gICAgKnAgPSAxLjA7Ci0gICAgZmxvYXQg
dmFsdWUgPSAqcHRyKCk7IC8vIGNhbGxpbmcgcHRyKCkgemVybyBpbml0aWFsaXplcy4KLQotICAg
IHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHZhbHVlOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9u
OiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMg
PSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhT
dGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0
ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291
bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
ID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRF
WCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9
IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
QXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291
cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBd
ID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmlu
ZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNj
cmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsK
LSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVs
dFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6
IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRl
eHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6
ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0
YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlw
dG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFsw
XSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1
ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0g
ICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBk
cmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434569</attachid>
            <date>2021-07-29 13:55:53 -0700</date>
            <delta_ts>2021-07-29 16:36:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210729135548.patch</filename>
            <type>text/plain</type>
            <size>3960921</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi45Y2NjMzcyNzlkOTlkZmMx
ODNmOGY1MzdiMGQ1MjI0ODU5YTgxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDhhNWZhY2E3YTEwMTUzNDYyNTliMmYzNDFjOGQ5OWU2NWU2MzJjZjUuLjRkZmMy
ZmZhNmFhNmQwMWFiZDY2OGQ3YzdiZjI0MTYzNzY1MzQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjkgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0SWRlbnRpZmllclN0
cmluZ0ZvclByZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZSgpIGlzIGRlcHJlY2F0ZWQgaW4g
TW9udGVyZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2NkODA1MTUzMmViOWIxY2YyMDU2NGI4ODMxMWE0OWU1
MDM5ZWEzLi4zYzdkNzFlMDBhY2EwMzdiMTQ5Y2Y3ZjBiNjhlMWI2Mjc1YmUyMmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTE2IEBACisyMDIxLTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQ
VSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0
QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91
cExheW91dEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvTmF2aWdhdG9yR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9O
YXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2ln
bm1lbnRFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFr
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVp
bHRJblNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhw
cmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnRpbnVlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lv
bi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uTWVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdo
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5k
ZXhFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVw
bGFjZVdpdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvbHZhYmxlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJl
RWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaENhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1
bWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFt
ZWRUeXBlSGFzaC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE1hbmdsZWROYW1lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlw
ZVdyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGlj
YXRlRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4
dHVyZVJlZmVyZW5jZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRl
bXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2ha
b21iaWVGaW5kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSGlnaFpvbWJpZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1l
Q29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZVJlc29sdmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRp
bWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
ZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25D
aGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlY3Vyc2lvbkNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBs
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29s
dmVPdmVybG9hZEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVBZGFwdGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNv
ZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2VFcnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5l
TGF5b3V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmVMYXlvdXQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1
ZXVlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVW
aWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZp
ZXcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
citHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmg6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0
Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29u
dGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6
OnJlc2V0UmVjb3JkaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6
OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
T2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVs
ZWFzZU9iamVjdEZvclJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0lmQ29udGV4
dE1hdGNoZXNEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpkZXZpY2VDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJv
eVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95V2ViR1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnBpcGVsaW5l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNh
bnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3Jk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3Jk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VD
YW52YXNNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJl
Y29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdl
YkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNB
Z2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hhaW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogcGFnZS9Qcm9j
ZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2Fy
bUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxh
eWVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5
ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRH
cm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5k
R3JvdXBBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJV
c2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb2xvcldyaXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0
aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnBs
YXRmb3JtRGV2aWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmlj
ZTo6c3dhcENoYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmlj
ZTo6c2V0RXJyb3JTY29wZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yRmlsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yU2NvcGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGltaXRzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxvYWRPcC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPYmplY3RCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlv
dXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUXVldWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTYW1wbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
Rm9ybWF0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVVc2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVVdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW06IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91
cE1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCdWZmZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
cHV0ZVBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJld2Fy
bUdQVSk6CisgICAgICAgIChXZWJDb3JlOjppc0FjY2VwdGFibGVEZXZpY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVURldmljZTo6dHJ5Q3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVURldmljZTo6R1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1l
dGFsQ29udmVydExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRh
bC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UXVldWVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1l
dGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3Jv
dXBBbGxvY2F0b3JEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBMYXlvdXREYXduLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCdWZmZXJEYXduLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21t
YW5kQnVmZmVyRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0ZVBpcGVsaW5lRGF3bi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVRGV2aWNl
RGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24v
R1BVUGxhdGZvcm1UeXBlc0Rhd24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvZGF3bi9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlckRhd24uY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVF1ZXVlRGF3bi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVy
UGFzc0VuY29kZXJEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVNhbXBsZXJEYXduLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXdu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVT
d2FwQ2hhaW5EYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvZGF3bi9HUFVUZXh0dXJlRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6Y29udGVudENoYW5nZWQpOgorCiAyMDIxLTA3LTI5ICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKSBpcyBkZXByZWNhdGVkIGluIE1vbnRlcmV5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBmMjYyYTFkNzAwMWI4ZTU3N2FlMWYyNTUwMDc2ZDhj
NTI2MzY0YTdjLi4xMTJiYzgxZjE4OTUwMDEzMWIzZjc5ZmRiMjVhNzVmMjU0Yzg1MDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNy0yOSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3Rv
cCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5h
cnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBWZXJzaW9ucy9JbnNwZWN0b3ItaU9TLTE0LjAuanNvbjoKKyAgICAgICAgKiBWZXJzaW9ucy9J
bnNwZWN0b3ItaU9TLTE0LjUuanNvbjoKKyAgICAgICAgKiBWZXJzaW9ucy9JbnNwZWN0b3ItaU9T
LTE1LjAuanNvbjoKKwogMjAyMS0wNy0yNiAgUWlhb3NvbmcgWmhvdSAgPHFpYW9zb25nX3pob3VA
YXBwbGUuY29tPgogCiAgICAgICAgIEZvcm1EYXRhRXZlbnQgYWRkZWQuIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAx
YTNiZDY1ODBiN2FiMzIzZmNlODIzMzFmZGU2ZGM4YjAwMTk4NjY1Li43OTRjM2E4ZjA2NWVkNDIx
MDAzNzdkYjIwYTk0MmVjMWI4YTQyYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIx
LTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQVSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRv
IGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0OgorICAg
ICAgICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0OgorICAgICAgICAqIEZlYXR1cmVG
bGFncy9XZWJLaXQtbWFjb3MucGxpc3Q6CisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC13
YXRjaG9zLnBsaXN0OgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOgorCiAyMDIx
LTA3LTI5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIGJ1
bmRsZSBwYXRoIG9mIGRvd25sZXZlbCBTYWZhcmkgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA1YWQ3MDRhM2JhY2I2YWE3OWIyZmVhMDMzYWQ5ODEwNDkyZGQ3ZTg1Li41
NGVhYTk3MjI5MjY2NzZkMTdiYjMyY2IyNjViZmIwOWZhOWNhZGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjkgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRp
bmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyB3ZWJHUFVFbmFibGVkXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFdlYkdQVUVuYWJsZWQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbToKKyAgICAg
ICAgKFdlYktpdDo6ZGVmYXVsdFdlYkdQVUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjEtMDctMjYgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TIE1vbnRlcmV5XSBQ
cmVzc2luZyBGbitFIHNob3VsZCBwcmVzZW50IHRoZSBlbW9qaSBwaWNrZXIgd2hlbiBlZGl0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Nh
bnZhcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52
YXMuanNvbgppbmRleCAwOGMxMDA1MTc2YTk2MGU3MzQxZDQwYTlkNzUyNWZhNjUxYjM0YmZmLi41
MTMzYWM3NWJkOGE5NWY1NzQxOTZiYzQyMDQyZWRhNjEzMWEyZmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTEx
LDI1ICsxMSwyNSBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAi
UHJvZ3JhbUlkIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dF
QkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJM
RV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VC
R0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzaGFkZXIgcHJvZ3JhbSBpZGVudGlmaWVy
LiIKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkNvbnRleHRUeXBl
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCi0gICAgICAgICAgICAiZW51bSI6IFsi
Y2FudmFzLTJkIiwgImJpdG1hcHJlbmRlcmVyIiwgIndlYmdsIiwgIndlYmdsMiIsICJ3ZWJncHUi
XSwKKyAgICAgICAgICAgICJlbnVtIjogWyJjYW52YXMtMmQiLCAiYml0bWFwcmVuZGVyZXIiLCAi
d2ViZ2wiLCAid2ViZ2wyIl0sCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUg
b2YgcmVuZGVyaW5nIGNvbnRleHQgYmFja2luZyB0aGUgY2FudmFzIGVsZW1lbnQuIgogICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiUHJvZ3JhbVR5cGUiLAotICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdM
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsi
Y29tcHV0ZSIsICJyZW5kZXIiXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAi
aWQiOiAiU2hhZGVyVHlwZSIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAm
JiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5n
IiwKICAgICAgICAgICAgICJlbnVtIjogWyJjb21wdXRlIiwgImZyYWdtZW50IiwgInZlcnRleCJd
CiAgICAgICAgIH0sCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwcmVtdWx0aXBsaWVkQWxwaGEiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIiIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJHTDIiIH0sCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCwgV2ViR0wy
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG93ZXJQcmVmZXJlbmNlIiwgInR5cGUi
OiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldlYkdMLCBXZWJH
TDIsIFdlYkdQVSIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG93ZXJQcmVmZXJlbmNl
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldl
YkdMLCBXZWJHTDIiIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAt
NjQsMTQgKzY0LDEzIEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6
ICJTaGFkZXJQcm9ncmFtIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlv
biBhYm91dCBhIFdlYkdML1dlYkdMMiBzaGFkZXIgcHJvZ3JhbSBvciBXZWJHUFUgc2hhZGVyIHBp
cGVsaW5lLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVKSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQg
YSBXZWJHTC9XZWJHTDIgc2hhZGVyIHByb2dyYW0uIiwKKyAgICAgICAgICAgICJjb25kaXRpb24i
OiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtVHlwZSIsICIkcmVmIjogIlByb2dyYW1UeXBl
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52
YXNJZCJ9ICwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYXJlc1ZlcnRleEZyYWdtZW50
U2hhZGVyIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIgbW9k
dWxlcyBhcmUgdGhlIHNhbWUgb2JqZWN0IGZvciBhIHJlbmRlciBzaGFkZXIgcGlwbGVpbmUgZm9y
IGEgV2ViR1BVIGRldmljZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbnZhc0lk
IiwgIiRyZWYiOiAiQ2FudmFzSWQifQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwK
QEAgLTE1MSw3ICsxNTAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXF1
ZXN0U2hhZGVyU291cmNlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0
aGUgc291cmNlIG9mIHRoZSBzaGFkZXIgb2YgdGhlIGdpdmVuIHR5cGUgZnJvbSB0aGUgcHJvZ3Jh
bSB3aXRoIHRoZSBnaXZlbiBpZC4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJv
Z3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVm
IjogIlNoYWRlclR5cGUiIH0KQEAgLTE2Myw3ICsxNjIsNyBAQAogICAgICAgICB7CiAgICAgICAg
ICAgICAibmFtZSI6ICJ1cGRhdGVTaGFkZXIiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkNvbXBpbGVzIGFuZCBsaW5rcyB0aGUgc2hhZGVyIHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3
aXRoIHRoZSBnaXZlbiBzb3VyY2UgY29kZS4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIo
ZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxF
X1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJk
ZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYi
OiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIs
ICIkcmVmIjogIlNoYWRlclR5cGUiIH0sCkBAIC0yNDYsMTQgKzI0NSwxNCBAQAogICAgICAgICB9
LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFtQ3JlYXRlZCIsCi0gICAg
ICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dF
QkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAg
ICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VC
R0wiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFkZXJQcm9ncmFtIiwgIiRyZWYiOiAiU2hhZGVyUHJvZ3JhbSIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFt
RGVsZXRlZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdM
KSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0KICAg
ICAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQppbmRleCAyOWEyZGVhNzI0ZjBiYmVj
ZmViYTZkYjkyMDYwODE3MDFlNTEwYzUxLi5iYzQ4NTBiZmY0MzNjNzk2ODRiZTA5NDM0YTBlMGRj
MTgyOWQ0NzAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CkBAIC01MSw3ICs1MSw2IEBAIF9F
TlVNX0lERU5USUZJRVJfUkVOQU1FX01BUCA9IHsKICAgICAnY2FudmFzLXdlYmdsMic6ICdDYW52
YXNXZWJHTDInLCAgIyBSZWNvcmRpbmcuVHlwZS5jYW52YXMtd2ViZ2wyCiAgICAgJ3dlYmdsJzog
J1dlYkdMJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLndlYmdsCiAgICAgJ3dlYmdsMic6ICdXZWJH
TDInLCAgIyBDYW52YXMuQ29udGV4dFR5cGUud2ViZ2wyCi0gICAgJ3dlYmdwdSc6ICdXZWJHUFUn
LCAgIyBDYW52YXMuQ29udGV4dFR5cGUuZ3B1CiAgICAgJ2JpdG1hcHJlbmRlcmVyJzogJ0JpdG1h
cFJlbmRlcmVyJywgICMgQ2FudmFzLkNvbnRleHRUeXBlLmJpdG1hcHJlbmRlcmVyCiAgICAgJ21l
ZGlhc291cmNlJzogJ01lZGlhU291cmNlJywgICMgQ29uc29sZS5DaGFubmVsU291cmNlLm1lZGlh
c291cmNlCiAgICAgJ3dlYnJ0Yyc6ICdXZWJSVEMnLCAgIyBDb25zb2xlLkNoYW5uZWxTb3VyY2Uu
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IDM2MGEwY2Q4MmM4YjZjM2M4
ZmFlNGY4NGUxNTNiY2ExNThiMzY0YzMuLjlmOTI2MWQ3NjcyMDFkMjI5YTc5ZDQzZTBlMTVlYjhk
NjBlZGJiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0xMjI1LDE5ICsxMjI1
LDYgQEAgV2ViR0xVc2luZ01ldGFsOgogICAgICAgIkhBVkUoV0VCR0xfQ09NUEFUSUJMRV9NRVRB
TCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogCi1XZWJHUFVFbmFibGVkOgotICB0eXBl
OiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiV2ViR1BVIgotICBodW1hblJlYWRhYmxlRGVz
Y3JpcHRpb246ICJXZWJHUFUgU2tldGNoIHByb3RvdHlwZSIKLSAgY29uZGl0aW9uOiBFTkFCTEUo
V0VCR1BVKQotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVs
dDogV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi0gICAgV2ViS2l0OgotICAgICAgZGVm
YXVsdDogV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCgpCi0gICAgV2ViQ29yZToKLSAgICAg
IGRlZmF1bHQ6IGZhbHNlCi0KIFdlYk1Gb3JtYXRSZWFkZXJFbmFibGVkOgogICB0eXBlOiBib29s
CiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGUuaAppbmRleCBkMTBhYTQyYjgwYTJiNTc2YzllOGM1YzY5OWE1ZDhiMGVlMmQ4MDA5Li5k
ODY4OGRjZWI2MDliZTBlNzEyM2U1NDE5OWQ2MmYzMjFjOGFjOGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKQEAgLTkwMiwxMCArOTAyLDYgQEAKICNlcnJvciAiRU5BQkxFKFdFQkdMMikgcmVx
dWlyZXMgRU5BQkxFKFdFQkdMKSIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KSAmJiAhRU5BQkxFKFdFQkdQVSkKLSNlcnJvciAiRU5BQkxFKFdITFNMX0NPTVBJTEVSKSByZXF1
aXJlcyBFTkFCTEUoV0VCR1BVKSIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVNfSU5fV09SS0VSUykgJiYgIUVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogI2Vycm9yICJFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKSByZXF1aXJlcyBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBUykiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCBh
OWUxMGEyNTE5ZTA5MzkzMTNiZjJmNThmNGE5Njk2ZWUyMWY1N2FkLi40NGI0MmQyYjk5NmNhNmU5
YjliOTIzYTA3ZWY3N2RjOWFhMTBhOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC02MTksMTQgKzYxOSw2IEBACiAjZGVmaW5lIEVOQUJMRV9XRUJHTDIgMQogI2VuZGlm
CiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0jZGVmaW5lIEVOQUJM
RV9XRUJHUFUgMQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChFTkFCTEVfV0hMU0xfQ09NUElMRVIp
ICYmIEVOQUJMRShXRUJHUFUpCi0jZGVmaW5lIEVOQUJMRV9XSExTTF9DT01QSUxFUiAxCi0jZW5k
aWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9XRUJQUk9DRVNTX05TUlVOTE9PUCkgJiYgUExBVEZP
Uk0oTUFDKQogI2RlZmluZSBFTkFCTEVfV0VCUFJPQ0VTU19OU1JVTkxPT1AgMQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGM1NGEyODI2ZjcwMWY0MmFmZjQyNjJmM2VlNWJkNDliNGU3
ZWM0NWEuLmM4ODQ4MDJjMmY2ZDBmMTgzOGM1OGVjZGJiM2VhOThhMDcwZmFkNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC02MDMsNjkgKzYwMyw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAKICAgICBNb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3IrV2ViRHJpdmVyLmlkbAog
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwKLSAgICBN
b2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVC
dWZmZXJEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2Ny
aXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUVy
cm9yRmlsdGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4z
RC5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKLSAgICBNb2R1bGVzL3dl
YmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVTaGFk
ZXJTdGFnZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQ
VVRleHR1cmVGb3JtYXQuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9H
UFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZl
cnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsCi0g
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCi0gICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCi0gICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFz
c0VuY29kZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZUV2ZW50SGFuZGxlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5p
ZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsCi0gICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCi0gICAgTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV29y
a2VyTmF2aWdhdG9yK0dQVS5pZGwKLQogICAgIE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50
LmlkbAogICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGJjMzE2ODdmNjBk
YmUwYTg5NDY1NDU4YzUzMzNiYTRkMzhiMTEwZGMuLjc3Mzk0Yjc2YzQ1ZjZiYWU5N2EwNTAxYWMx
YmEyMGVmMTA0YmExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdApAQCAtNTUxLDc0ICs1NTEsNiBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3IrV2ViRHJpdmVyLmlkbAotJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRsCi0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVDb2xvcldyaXRlQml0cy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNv
bXBhcmVGdW5jdGlvbi5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRo
U3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L0dQVUVycm9yRmlsdGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVRXh0
ZW50M0QuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVJbnB1dFN0YXRlRGVz
Y3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZUJpdC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VVRleHR1cmVGb3JtYXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlVXNhZ2UuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVk
RXJyb3JFdmVudC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRp
b25FcnJvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJp
YnV0ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
TmF2aWdhdG9yK0dQVS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weQotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0Ci0kKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwQmluZGluZy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBMYXlvdXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5k
aW5nLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVy
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9y
U2NvcGVzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZl
bnRIYW5kbGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKLSQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAotJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9OYXZp
Z2F0b3IrV2ViWFIuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CmluZGV4IDQyYmU1NzNmMzNkOWIyYjRmNzQxODBiMTQxMjAwZjliMjdlMWVi
OTAuLmY0N2U1OTk0MjA5YmE3MjY1OWI4MjU0OTE5MDIzMzVhNjI4NWIyNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC01ODcsOCAr
NTg3LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1dlYkRhdGFiYXNl
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01X
aW5kb3dXZWJEYXRhYmFzZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RPTVdpbmRvd1dlYkdQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGF0YUN1ZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGF0YUN1ZS5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RhdGFUcmFuc2Zlci5jcHAKQEAgLTg1
Myw2OCArODUxLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGb3JtRGF0YUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGb3JtRGF0YUV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR0NPYnNlcnZhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR0NPYnNlcnZhdGlvbi5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dEJp
bmRpbmcuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQmxlbmREZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCbGVuZERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJEZXNjcmlwdG9yLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZm
ZXJEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTR1BVQnVmZmVyVXNhZ2UuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlclVzYWdlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ2FudmFzQ29udGV4dC5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ2FudmFzQ29udGV4dC5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmNw
cAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xv
ci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yV3JpdGUuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yV3JpdGUuaAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvcldy
aXRlQml0cy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVQ29sb3JXcml0ZUJpdHMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVDb21wYXJlRnVuY3Rpb24uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlcHRoU3RlbmNpbFN0
YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXJyb3JGaWx0ZXIuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUVycm9yRmlsdGVy
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXh0
ZW50M0QuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUV4dGVudDNELmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUlucHV0U3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVTG9hZE9wLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVMb2FkT3Au
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVPcmln
aW4zRC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVT3JpZ2luM0QuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVPdXRPZk1lbW9yeUVycm9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVPdXRPZk1lbW9yeUVycm9yLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVTYW1wbGVyRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2FtcGxlckRlc2NyaXB0b3IuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFn
ZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
U2hhZGVyU3RhZ2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVTaGFkZXJTdGFnZUJpdC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR1BVU2hhZGVyU3RhZ2VCaXQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTdG9yZU9wLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTdG9yZU9wLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZURlc2NyaXB0
b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVRleHR1cmVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVVGV4dHVyZUZvcm1hdC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZUZvcm1hdC5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVz
YWdlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVycm9yLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWYWxpZGF0
aW9uRXJyb3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR2Fpbk5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dhaW5Ob2RlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR2Fpbk9wdGlvbnMuY3BwCkBAIC0xNDE5LDggKzEzNTUsNiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitD
cmVkZW50aWFscy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTmF2aWdhdG9yK0NyZWRlbnRpYWxzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0VNRS5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yK0VNRS5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHUFUuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitH
UFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZp
Z2F0b3IrR2FtZXBhZC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTmF2aWdhdG9yK0dhbWVwYWQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR2VvbG9jYXRpb24uY3BwCkBAIC0xNDQ5LDgg
KzEzODMsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JDcmVkZW50aWFscy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckVNRS5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yRU1FLmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR1BV
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZp
Z2F0b3JHUFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNOYXZpZ2F0b3JHYW1lcGFkLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHYW1lcGFkLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCkBAIC0yNDM3
LDcyICsyMzY5LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQWRhcHRlci5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQWRhcHRlci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cC5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
QmluZEdyb3VwLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVQmluZEdyb3VwQmluZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cExheW91
dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VUJ1ZmZlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVQnVmZmVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQnVmZmVyQmluZGluZy5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tbWFuZEVuY29kZXIuaAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmlj
ZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVRGV2aWNlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUVycm9yU2NvcGVzLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXZlbnRI
YW5kbGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0LmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVVF1ZXVlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVRdWV1ZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRl
clBpcGVsaW5lLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVU2FtcGxlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2FtcGxlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9k
dWxlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVN3YXBDaGFp
bi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVU3dhcENoYWluLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR1BVVGV4dHVyZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1h
dGlvbkV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJLaXRBbmltYXRpb25FdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTI2
MDEsMTIgKzI0NjcsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJHbG9iYWxTY29wZS5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckxvY2F0aW9uLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJMb2NhdGlvbi5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5h
dmlnYXRvcitHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dvcmtlck5hdmlnYXRvcitHUFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvckdQ
VS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29y
a2VyTmF2aWdhdG9yR1BVLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV29ya2VyVHlwZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV29ya2VyVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtsZXQuY3BwCkBAIC0yNzI5LDggKzI1OTEsNiBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9UcmFuc2Zvcm1TdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Vc2VyQWdlbnRTY3JpcHRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U3R5bGVTaGVldHMuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFyZExp
YnJhcnkuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlSlNCdWlsdGlu
SW50ZXJuYWxzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L1dlYkNvcmVKU0J1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
NWNjYWVlYTMwZDBlYjYyYzFhMDE0ZTk0YzkyMzBmMzEwMzNjMzIyOC4uZjEzMzJjMGQzZjkyM2Jh
MGEyYTc1MzNkYTNiOTgwMzM5NzQ4Mzk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC00NjAsNjggKzQ2MCw2IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3IrV2ViRHJp
dmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVzY3JpcHRv
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2UuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNj
cmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRl
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZVVzYWdlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9H
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvcitHUFUuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJ1ZmZlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQnVmZmVyQmluZGluZy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2VieHIv
TmF2aWdhdG9yK1dlYlhSLmlkbCBcCkBAIC0xODQ2LDE4ICsxNzg0LDYgQEAgJChHRU5FUkFURV9T
RVRUSU5HUykgOiAlIDogJChXZWJDb3JlKS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzLyUuZXJi
ICQoV0VCX1BSRUYKIAogIyAtLS0tLS0tLQogCi0jIFdITFNMIFN0YW5kYXJkIExpYnJhcnkKLQot
YWxsIDogV0hMU0xTdGFuZGFyZExpYnJhcnkuaCBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
TWFwLmNwcAotCi1XSExTTFN0YW5kYXJkTGlicmFyeS5oIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikveHhkLnBsICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFu
ZGFyZExpYnJhcnkudHh0Ci0JYmFzaCAtYyAiJChQRVJMKSAkPCBXSExTTFN0YW5kYXJkTGlicmFy
eSA8KGd6aXAgLWNuICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFy
ZExpYnJhcnkudHh0KSAkQCIKLQotV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAg
OiAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbk1hcC5weSAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3Rh
bmRhcmRMaWJyYXJ5LnR4dAotCSQoUFlUSE9OKSAkPCAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAkQAotCi0jIC0tLS0tLS0tCi0KICMgQ29t
bW9uIGdlbmVyYXRvciB0aGluZ3MKIAogQ09NTU9OX0JJTkRJTkdTX1NDUklQVFMgPSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRC
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZDBlZGYzYzIyMjlj
OTE4MjgzOGFmZWFmOGIyZjA2Y2EzMzQ4ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdy
b3VwTGF5b3V0QmluZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VVNoYWRlclN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVC
aW5kaW5nVHlwZSB7Ci0gICAgVW5pZm9ybUJ1ZmZlciwKLSAgICBEeW5hbWljVW5pZm9ybUJ1ZmZl
ciwKLSAgICBTYW1wbGVyLAotICAgIFNhbXBsZWRUZXh0dXJlLAotICAgIFN0b3JhZ2VCdWZmZXIs
Ci0gICAgRHluYW1pY1N0b3JhZ2VCdWZmZXIsCi19OwotCi1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZyB7Ci0gICAgdW5zaWduZWQgYmluZGluZzsKLSAgICBHUFVTaGFkZXJTdGFnZUZs
YWdzIHZpc2liaWxpdHk7Ci0gICAgR1BVQmluZGluZ1R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dEJpbmRp
bmcuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDBmZjA3Yjk3MTA2MmU1YWNi
MThmZTgyMjlkNzIzMDcxNjJiMzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExh
eW91dEJpbmRpbmcuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1MzI7Ci10eXBlZGVmIHUzMiBHUFVTaGFkZXJTdGFnZUZsYWdzOwotCi1bCi0gICAgSW1w
bGVtZW50ZWRBcz1HUFVCaW5kaW5nVHlwZQotXSBlbnVtIEdQVUJpbmRpbmdUeXBlIHsKLSAgICAi
dW5pZm9ybS1idWZmZXIiLAotICAgICJkeW5hbWljLXVuaWZvcm0tYnVmZmVyIiwKLSAgICAic2Ft
cGxlciIsCi0gICAgInNhbXBsZWQtdGV4dHVyZSIsCi0gICAgInN0b3JhZ2UtYnVmZmVyIiwKLSAg
ICAiZHluYW1pYy1zdG9yYWdlLWJ1ZmZlciIKLSAgICAvLyBUT0RPIG90aGVyIGJpbmRpbmcgdHlw
ZXMKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nIHsKLSAgICBy
ZXF1aXJlZCB1MzIgYmluZGluZzsKLSAgICByZXF1aXJlZCBHUFVTaGFkZXJTdGFnZUZsYWdzIHZp
c2liaWxpdHk7Ci0gICAgcmVxdWlyZWQgR1BVQmluZGluZ1R5cGUgdHlwZTsKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzZiZmU0ZDcy
ZWQ5YTRiNTQwNzBhNTdhM2IwOTMzOTVjZGQ2MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVUJpbmRHcm91cExheW91dEJpbmRpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgewotICAgIFZlY3RvcjxHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nPiBiaW5kaW5nczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZmRhN2JkNGNiYjE4OTE4ODhjNjUyNGNjNTM0MjM3NzkwZmQwNzc1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBy
ZXF1aXJlZCBzZXF1ZW5jZTxHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nPiBiaW5kaW5nczsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlw
dG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyMTkyMzc3ZTZjODcxODdm
ZmY2ZGI3ZGJjNTE1NzZhZmY3YWQ2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2Ny
aXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQ
VUJsZW5kRmFjdG9yCi1dIGVudW0gR1BVQmxlbmRGYWN0b3IgewotICAgICJ6ZXJvIiwKLSAgICAi
b25lIiwKLSAgICAic3JjLWNvbG9yIiwKLSAgICAib25lLW1pbnVzLXNyYy1jb2xvciIsCi0gICAg
InNyYy1hbHBoYSIsCi0gICAgIm9uZS1taW51cy1zcmMtYWxwaGEiLAotICAgICJkc3QtY29sb3Ii
LAotICAgICJvbmUtbWludXMtZHN0LWNvbG9yIiwKLSAgICAiZHN0LWFscGhhIiwKLSAgICAib25l
LW1pbnVzLWRzdC1hbHBoYSIsCi0gICAgInNyYy1hbHBoYS1zYXR1cmF0ZWQiLAotICAgICJibGVu
ZC1jb2xvciIsCi0gICAgIm9uZS1taW51cy1ibGVuZC1jb2xvciIKLX07Ci0KLVsKLSAgICBJbXBs
ZW1lbnRlZEFzPUdQVUJsZW5kT3BlcmF0aW9uCi1dIGVudW0gR1BVQmxlbmRPcGVyYXRpb24gewot
ICAgICJhZGQiLAotICAgICJzdWJ0cmFjdCIsCi0gICAgInJldmVyc2Utc3VidHJhY3QiLAotICAg
ICJtaW4iLAotICAgICJtYXgiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQmxlbmREZXNjcmlwdG9y
IHsKLSAgICBHUFVCbGVuZEZhY3RvciBzcmNGYWN0b3IgPSAib25lIjsKLSAgICBHUFVCbGVuZEZh
Y3RvciBkc3RGYWN0b3IgPSAiemVybyI7Ci0gICAgR1BVQmxlbmRPcGVyYXRpb24gb3BlcmF0aW9u
ID0gImFkZCI7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVQnVmZmVyRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVCdWZmZXJEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBk
ZjI0ZmU3ZjExY2U4NGMzZGNmYTRjMTkxNmFhODBlOTQ4ZGZlOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1BVQnVmZmVy
VXNhZ2VGbGFnczsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJ1ZmZlckRlc2NyaXB0b3IgewotICAgIHJl
cXVpcmVkIHU2NCBzaXplOwotICAgIHJlcXVpcmVkIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVy
VXNhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyVXNhZ2Uu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDgzMTRkNTJhZjM5NGRkY2M1YmFl
YzE0YjYzYTNjMDUzYzIzMmYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwK
LSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVQnVmZmVyVXNhZ2UgewotICAgIGNv
bnN0IHUzMiBOT05FID0gMDsKLSAgICBjb25zdCB1MzIgTUFQX1JFQUQgPSAxOwotICAgIGNvbnN0
IHUzMiBNQVBfV1JJVEUgPSAyOwotICAgIGNvbnN0IHUzMiBDT1BZX1NSQyA9IDQ7Ci0gICAgY29u
c3QgdTMyIENPUFlfRFNUID0gODsKLSAgICBjb25zdCB1MzIgSU5ERVggPSAxNjsKLSAgICBjb25z
dCB1MzIgVkVSVEVYID0gMzI7Ci0gICAgY29uc3QgdTMyIFVOSUZPUk0gPSA2NDsKLSAgICBjb25z
dCB1MzIgU1RPUkFHRSA9IDEyODsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0YzM1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ2FudmFz
Q29udGV4dC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoR1BV
Q2FudmFzQ29udGV4dCk7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxHUFVDYW52YXNDb250ZXh0PiBHUFVD
YW52YXNDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzKQotewotICAgIGF1dG8gY29u
dGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxHUFVDYW52YXNDb250ZXh0PihuZXcgR1BVQ2FudmFzQ29u
dGV4dChjYW52YXMpKTsKLSAgICBjb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1
cm4gY29udGV4dDsKLX0KLQotR1BVQ2FudmFzQ29udGV4dDo6R1BVQ2FudmFzQ29udGV4dChDYW52
YXNCYXNlJiBjYW52YXMpCi0gICAgOiBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2Fu
dmFzKQotewotfQotCi1SZWY8V2ViR1BVU3dhcENoYWluPiBHUFVDYW52YXNDb250ZXh0Ojpjb25m
aWd1cmVTd2FwQ2hhaW4oY29uc3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLmFzR1BVU3dhcENoYWlu
RGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdl
YkdQVVN3YXBDaGFpbjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIAotICAgIGF1dG8gZ3B1U3dhcENo
YWluID0gR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKmdwdURlc2NyaXB0b3IsIGNhbnZhc0Jhc2Uo
KS53aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVpZ2h0KCkpOwotICAgIGJvb2wgc3VjY2VzcyA9IGdw
dVN3YXBDaGFpbjsKLSAgICBhdXRvIG5ld1N3YXBDaGFpbiA9IFdlYkdQVVN3YXBDaGFpbjo6Y3Jl
YXRlKFdURk1vdmUoZ3B1U3dhcENoYWluKSk7Ci0gICAgCi0gICAgLy8gVXBvbiBzdWNjZXNzLCBp
bnZhbGlkYXRlIGFuZCByZXBsYWNlIGFueSBleGlzdGluZyBzd2FwIGNoYWluLgotICAgIGlmIChz
dWNjZXNzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUZXN0IHRoYXQgdGhpcyB3b3JrcyBhcyBleHBl
Y3RlZCB3aXRoIGVycm9yIHJlcG9ydGluZy4KLSAgICAgICAgaWYgKG1fc3dhcENoYWluKQotICAg
ICAgICAgICAgbV9zd2FwQ2hhaW4tPmRlc3Ryb3koKTsKLQotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxDb25maWd1cmVTd2FwQ2hhaW4oKnRoaXMsIG5ld1N3YXBDaGFpbi5n
ZXQoKSk7Ci0KLSAgICAgICAgbV9zd2FwQ2hhaW4gPSBuZXdTd2FwQ2hhaW4uY29weVJlZigpOwot
Ci0gICAgICAgIG5vdGlmeUNhbnZhc0NvbnRlbnRDaGFuZ2VkKCk7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBuZXdTd2FwQ2hhaW47Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdQVUNhbnZhc0NvbnRl
eHQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3
YXBDaGFpbi0+c3dhcENoYWluKCkpCi0gICAgICAgIHJldHVybiBtX3N3YXBDaGFpbi0+c3dhcENo
YWluKCktPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBH
UFVDYW52YXNDb250ZXh0OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBp
ZiAobV9zd2FwQ2hhaW4gJiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKQotICAgICAgICBtX3N3
YXBDaGFpbi0+c3dhcENoYWluKCktPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICBub3Rp
ZnlDYW52YXNDb250ZW50Q2hhbmdlZCgpOwotfQotCi12b2lkIEdQVUNhbnZhc0NvbnRleHQ6OnBy
ZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkKLXsKLSAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWlu
dCA9IHRydWU7Ci19Ci0KLXZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKQotewotICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkLgotICAgIGlmICht
X2lzRGlzcGxheWluZ1dpdGhQYWludCAmJiBtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dh
cENoYWluKCkpIHsKLSAgICAgICAgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpLT5wcmVzZW50KCk7
Ci0gICAgICAgIG1faXNEaXNwbGF5aW5nV2l0aFBhaW50ID0gZmFsc2U7Ci0gICAgfQotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjBmZTdiMGQwOGNlOTNjN2VjYTg2OTRhMDBkMTYzMmUx
M2QwYzk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aCIKLSNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBD
aGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVQ2FudmFzQ29u
dGV4dCBmaW5hbCA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewotICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoR1BVQ2FudmFzQ29udGV4dCk7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHUFVDYW52YXNDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFz
ZSYpOwotCi0gICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcygpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOyB9Ci0KLSAgICBXZWJHUFVT
d2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgpOyB9
Ci0gICAgUmVmPFdlYkdQVVN3YXBDaGFpbj4gY29uZmlndXJlU3dhcENoYWluKGNvbnN0IFdlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBHUFVDYW52YXNDb250ZXh0
KENhbnZhc0Jhc2UmKTsKLQotICAgIC8vIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dAot
ICAgIGJvb2wgaXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVzaGFw
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3Bs
YXlXaXRoUGFpbnQoKSBmaW5hbDsKLSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKCkgZmluYWw7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QuCi0gICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250
ZXh0IjsgfQotICAgIC8vIEZJWE1FOiBTdHVicy4KLSAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0K
LQotICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgeyBmYWxzZSB9OwotICAgIFJlZlB0
cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwotfTsKLQotfSAvLyBuAWFtZXNwYWNlIFdl
YkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQU5WQVNSRU5ERVJJTkdDT05URVhUKFdl
YkNvcmU6OkdQVUNhbnZhc0NvbnRleHQsIGlzV2ViR1BVKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2Fu
dmFzQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVhMjQxNjExZDAwZDZi
MTZkYzUzZmI3N2U2MGIyNmZiYjkzMmUwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
R1BVVGV4dHVyZVVzYWdlRmxhZ3M7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yCi1dIGRpY3Rpb25hcnkgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciB7Ci0g
ICAgcmVxdWlyZWQgV2ViR1BVRGV2aWNlIGRldmljZTsKLSAgICByZXF1aXJlZCBHUFVUZXh0dXJl
Rm9ybWF0IGZvcm1hdDsKLSAgICBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsgLy8gRklYTUU6
IGRlZmF1bHQgaXMgR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5ULgotfTsKLQotWwot
ICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ2FudmFzQmFz
ZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVQ2FudmFzQ29udGV4dCB7Ci0g
ICAgLy8gYmFjay1yZWZlcmVuY2UgdG8gdGhlIGNhbnZhcwotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MQ2FudmFzRWxlbWVudCBjYW52YXM7Ci0KLSAgICAvLyBDYWxsaW5nIGNvbmZpZ3VyZVN3
YXBDaGFpbiBhIHNlY29uZCB0aW1lIGludmFsaWRhdGVzIHRoZSBwcmV2aW91cyBvbmUsCi0gICAg
Ly8gYW5kIGFsbCBvZiB0aGUgdGV4dHVyZXMgaXTigJlzIHByb2R1Y2VkLgotICAgIFdlYkdQVVN3
YXBDaGFpbiBjb25maWd1cmVTd2FwQ2hhaW4oV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKLQotICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCi0gICAgLy8gUHJvbWlzZTxH
UFVUZXh0dXJlRm9ybWF0PiBnZXRTd2FwQ2hhaW5QcmVmZXJyZWRGb3JtYXQoR1BVRGV2aWNlIGRl
dmljZSk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
Q29sb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjg5NWY1ZjIyM2EzOTFlNGQzMTdlZDI5ZWFk
MGFmNDcyNmZhZGMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQ29sb3IgewotICAgIHJlcXVpcmVkIGZsb2F0
IHI7Ci0gICAgcmVxdWlyZWQgZmxvYXQgZzsKLSAgICByZXF1aXJlZCBmbG9hdCBiOwotICAgIHJl
cXVpcmVkIGZsb2F0IGE7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MWEwMzA5NWY2MmU3ZGRjODI4ZjI3MWE2OGY4MzU0YzQxMjg2NTE0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1BVQ29sb3JXcml0ZUZsYWdzOwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1d
IGRpY3Rpb25hcnkgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIEdQVVRl
eHR1cmVGb3JtYXQgZm9ybWF0OwotCi0gICAgcmVxdWlyZWQgR1BVQmxlbmREZXNjcmlwdG9yIGFs
cGhhQmxlbmQ7Ci0gICAgcmVxdWlyZWQgR1BVQmxlbmREZXNjcmlwdG9yIGNvbG9yQmxlbmQ7Ci0g
ICAgR1BVQ29sb3JXcml0ZUZsYWdzIHdyaXRlTWFzazsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzhkYzU4ODFhMDE3OTdiNTEwMTQ4MzhlNWUw
YzdmMWRiOTYyZGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGUuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0YW50cywKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEV4
cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVDb2xvcldyaXRlIHsKLSAgICBjb25zdCB1MzIg
Tk9ORSA9IDA7Ci0gICAgY29uc3QgdTMyIFJFRCA9IDE7Ci0gICAgY29uc3QgdTMyIEdSRUVOID0g
MjsKLSAgICBjb25zdCB1MzIgQkxVRSA9IDQ7Ci0gICAgY29uc3QgdTMyIEFMUEhBID0gODsKLSAg
ICBjb25zdCB1MzIgQUxMID0gMTU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkwZmZiNGYxZGYyZGRiZTkzNDFhY2MzZmQxMWY1YTI3MGFjNGU0MDEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
Ci1dIGVudW0gR1BVQ29tcGFyZUZ1bmN0aW9uIHsKLSAgICAibmV2ZXIiLAotICAgICJsZXNzIiwK
LSAgICAiZXF1YWwiLAotICAgICJsZXNzLWVxdWFsIiwKLSAgICAiZ3JlYXRlciIsCi0gICAgIm5v
dC1lcXVhbCIsCi0gICAgImdyZWF0ZXItZXF1YWwiLAotICAgICJhbHdheXMiCi19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3Rl
bmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIw
YzkyZmIwZDM4OTM2MWFlMjY2ZWNlZTk0ZDA0ZDBiZmQwZjZhNGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVCi1dIGRpY3Rpb25hcnkgR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBi
b29sZWFuIGRlcHRoV3JpdGVFbmFibGVkID0gZmFsc2U7Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9u
IGRlcHRoQ29tcGFyZSA9ICJhbHdheXMiOwotCi0vKiBOb3QgWWV0IEltcGxlbWVudGVkCi0gICAg
R1BVU3RlbmNpbFN0YXRlRmFjZURlc2NyaXB0b3Igc3RlbmNpbEZyb250OwotICAgIEdQVVN0ZW5j
aWxTdGF0ZUZhY2VEZXNjcmlwdG9yIHN0ZW5jaWxCYWNrOwotCi0gICAgdTMyIHN0ZW5jaWxSZWFk
TWFzazsKLSAgICB1MzIgc3RlbmNpbFdyaXRlTWFzazsKLSovCi19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YjhmNDlhNjFjMjc5ZTkwMjY0ODRjNmVmOTA2NDVlYWQ1YjFhYmEzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVUVycm9yRmlsdGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVCi1dIGVudW0gR1BVRXJyb3JGaWx0ZXIgewotICAgICJub25lIiwKLSAgICAib3V0LW9mLW1l
bW9yeSIsCi0gICAgInZhbGlkYXRpb24iCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVRXh0ZW50M0QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTE5
NzY5NzM2MDcxNTY2NDVlYWYwMzM1YjgyZTA4ODIxN2JhYzJhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUV4dGVudDNELmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVSW50ZWdlckNvb3JkaW5hdGU7Ci0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFy
eSBHUFVFeHRlbnQzRCB7Ci0gICAgcmVxdWlyZWQgR1BVSW50ZWdlckNvb3JkaW5hdGUgd2lkdGg7
Ci0gICAgcmVxdWlyZWQgR1BVSW50ZWdlckNvb3JkaW5hdGUgaGVpZ2h0OwotICAgIHJlcXVpcmVk
IEdQVUludGVnZXJDb29yZGluYXRlIGRlcHRoOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVMb2FkT3AuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzJk
NGZhMjgyZmM2OTYwMjdlOWNmYTVmMzVhNDY3MmE3OTNhNzNiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUxvYWRPcC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVUxvYWRPcCB7
Ci0gICAgImNsZWFyIiwKLSAgICAibG9hZCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVT3JpZ2luM0QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYyYjdi
MzZkZGNhM2FhYzVjYjM1MGUwMDQwOGEyNzQxNmQyNjVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVPcmlnaW4zRC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdHJ1Y3QgR1BVT3JpZ2luM0QgewotICAgIHVuc2lnbmVkIHggeyAwIH07Ci0gICAgdW5z
aWduZWQgeSB7IDAgfTsKLSAgICB1bnNpZ25lZCB6IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjc3MTljMDIyNGQzMzdiMWExNjYwYjhkMDYwODExMjdiMzk1YmNlZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVU9yaWdpbjNEIHsKLSAgICB1
MzIgeCA9IDA7Ci0gICAgdTMyIHkgPSAwOwotICAgIHUzMiB6ID0gMDsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTQ4MGFlMDJkYTFmYzViMDQwMTc0ZWE3MmY5
MjM4NzU2Y2YxYWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwK
LSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BVT3V0T2ZNZW1vcnlFcnJvciB7Ci0g
ICAgY29uc3RydWN0b3IoKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYWVhMDBkNjFhYmY4YTUwNGE0MDE5OTRhN2NiZGExMTJiZDM4ZTk3ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVVBvd2VyUHJlZmVyZW5jZQot
XSBlbnVtIEdQVVBvd2VyUHJlZmVyZW5jZSB7Ci0gICAgImxvdy1wb3dlciIsCi0gICAgImhpZ2gt
cGVyZm9ybWFuY2UiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
IHsKLSAgICBHUFVQb3dlclByZWZlcmVuY2U/IHBvd2VyUHJlZmVyZW5jZTsKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMzEzNjg0OTlmY2UyZjRiY2M4MTkw
OWQ3M2FkODEwYzVjM2UxNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0
b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7
Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUFkZHJlc3NNb2RlCi1dIGVudW0gR1BVQWRkcmVz
c01vZGUgewotICAgICJjbGFtcC10by1lZGdlIiwKLSAgICAicmVwZWF0IiwKLSAgICAibWlycm9y
LXJlcGVhdCIKLX07Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUZpbHRlck1vZGUKLV0gZW51
bSBHUFVGaWx0ZXJNb2RlIHsKLSAgICAibmVhcmVzdCIsCi0gICAgImxpbmVhciIKLX07Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBHUFVTYW1wbGVyRGVzY3JpcHRvciB7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRk
cmVzc01vZGVVID0gImNsYW1wVG9FZGdlIjsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNzTW9k
ZVYgPSAiY2xhbXBUb0VkZ2UiOwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyA9ICJj
bGFtcFRvRWRnZSI7Ci0gICAgR1BVRmlsdGVyTW9kZSBtYWdGaWx0ZXIgPSAibmVhcmVzdCI7Ci0g
ICAgR1BVRmlsdGVyTW9kZSBtaW5GaWx0ZXIgPSAibmVhcmVzdCI7Ci0gICAgR1BVRmlsdGVyTW9k
ZSBtaXBtYXBGaWx0ZXIgPSAibmVhcmVzdCI7Ci0gICAgZmxvYXQgbG9kTWluQ2xhbXAgPSAwOwot
ICAgIGZsb2F0IGxvZE1heENsYW1wID0gMHhmZmZmZmZmZjsgLy8gVE9ETzogV2hhdCBzaG91bGQg
dGhpcyBiZT8gV2FzIE51bWJlci5NQVhfVkFMVUUuCi0gICAgdTMyIG1heEFuaXNvdHJvcHkgPSAx
OwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24gPSAibmV2ZXIiOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVhZDQ3ZWZkZDgwZTRjOTUyNjFlNWQyOWVhYzFh
M2FiODk4MjQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi11c2luZyBHUFVTaGFkZXJTdGFnZUZsYWdzID0gdW5zaWduZWQ7Ci0KLWNs
YXNzIEdQVVNoYWRlclN0YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hhZGVyU3RhZ2U+IHsK
LXB1YmxpYzoKLSAgICBlbnVtIEZsYWdzIDogR1BVU2hhZGVyU3RhZ2VGbGFncyB7Ci0gICAgICAg
IE5vbmUgPSAwLAotICAgICAgICBWZXJ0ZXggPSAxIDw8IDAsCi0gICAgICAgIEZyYWdtZW50ID0g
MSA8PCAxLAotICAgICAgICBDb21wdXRlID0gMSA8PCAyLAotICAgIH07Ci19OwotCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBjMzFjMjM5NWUzYWI2MmRhNWEzNWEyMzA4NTc3YzU4ODdjNzRj
NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2lu
ZG93Ci1dIGludGVyZmFjZSBHUFVTaGFkZXJTdGFnZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUgPSAw
OwotICAgIGNvbnN0IHUzMiBWRVJURVggPSAxOwotICAgIGNvbnN0IHUzMiBGUkFHTUVOVCA9IDI7
Ci0gICAgY29uc3QgdTMyIENPTVBVVEUgPSA0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNj
MTJiOTUyZTg3NDgwMGNlNjZhOWQ3OTc4OGYwNDU0NTJhYTJiODEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVU3RvcmVPcC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVVN0b3Jl
T3AgewotICAgICJzdG9yZSIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmYTBjM2MyNDhiZDhmYWMxYmMxNTY4ZDdkNjEyYmEzNjk0ZmVlZjMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLXR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVJbnRlZ2VyQ29vcmRp
bmF0ZTsKLXR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVTaXplMzI7Ci10
eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3M7
Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVVRleHR1cmVEaW1lbnNpb24KLV0gZW51bSBHUFVU
ZXh0dXJlRGltZW5zaW9uIHsKLSAgICAiMWQiLAotICAgICIyZCIsCi0gICAgIjNkIgotfTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBHUFVFeHRl
bnQzRCBzaXplOwotICAgIEdQVUludGVnZXJDb29yZGluYXRlIG1pcExldmVsQ291bnQgPSAxOwot
ICAgIEdQVVNpemUzMiBzYW1wbGVDb3VudCA9IDE7Ci0gICAgR1BVVGV4dHVyZURpbWVuc2lvbiBk
aW1lbnNpb24gPSAiMmQiOwotICAgIHJlcXVpcmVkIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0Owot
ICAgIHJlcXVpcmVkIEdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTFmNzc2ZTQxNzc1MmQwOGIyOGFkN2VlOGQ3NGVkMmQ1
MjIzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBlbnVtIEdQVVRleHR1cmVGb3Jt
YXQgewotICAgICJyZ2JhOHVub3JtIiwKLSAgICAicmdiYTh1aW50IiwKLSAgICAiYmdyYTh1bm9y
bSIsCi0gICAgImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIsCi0gICAgImJncmE4dW5vcm0tc3JnYiIs
Ci0gICAgInJnYmExNmZsb2F0IgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YWNjMzhmN2Q2NWU5NTVlOWQ2YjdiOTEzMmFmZWJhMWM1MjNiNmRhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05v
dENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQ
VVRleHR1cmVVc2FnZSB7Ci0gICAgY29uc3QgdTMyIENPUFlfU1JDID0gMTsKLSAgICBjb25zdCB1
MzIgQ09QWV9EU1QgPSAyOwotICAgIGNvbnN0IHUzMiBTQU1QTEVEID0gNDsKLSAgICBjb25zdCB1
MzIgU1RPUkFHRSA9IDg7Ci0gICAgY29uc3QgdTMyIE9VVFBVVF9BVFRBQ0hNRU5UID0gMTY7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjlkMWJh
M2FlNDc3Mjk3ZmRkODNiN2JhYTIyZDE2Mzc4Yzg5OWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCk7Ci0KLVJlZjxHUFVVbmNhcHR1
cmVkRXJyb3JFdmVudD4gR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3Rl
ZCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCh0
eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7Ci19Ci0KLVJlZjxHUFVVbmNhcHR1cmVkRXJy
b3JFdmVudD4gR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBHUFVFcnJvciYmIGVycm9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50KHR5cGUsIFdURk1vdmUoZXJyb3IpKSk7Ci19Ci0KLUdQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50OjpHUFVVbmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkK
LSAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCi0gICAgLCBtX2Vycm9y
KGluaXRpYWxpemVyLmVycm9yKQotewotfQotCi1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6R1BV
VW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgR1BVRXJyb3ImJiBl
cnJvcikKLSAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
Ci0gICAgLCBtX2Vycm9yKFdURk1vdmUoZXJyb3IpKQotewotfQotCi1FdmVudEludGVyZmFjZSBH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJl
dHVybiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEludGVyZmFjZVR5cGU7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdlZWU5NWRhZGVmNWJhYjNhOGJlNmVjMmVl
NDMzZjdjNmYzZjIzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVk
ZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQg
ewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQpOwot
cHVibGljOgotICAgIHN0cnVjdCBJbml0OiBFdmVudEluaXQgewotICAgICAgICBHUFVFcnJvciBl
cnJvcjsKLSAgICB9OwotCi0gICAgc3RhdGljIFJlZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVz
dGVkOjpObyk7Ci0gICAgc3RhdGljIFJlZjxHUFVVbmNhcHR1cmVkRXJyb3JFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmLCBHUFVFcnJvciYmKTsKLQotICAgIGNvbnN0IEdQVUVycm9yIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQotCi1wcml2YXRlOgotICAgIEdQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVk
KTsKLSAgICBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgR1BVRXJy
b3ImJik7Ci0KLSAgICAvLyBFdmVudAotICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBHUFVFcnJvciBtX2Vycm9yOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjZDgxNWNiZDE1ZmJhY2YyZWYx
YzE5ODQwZmY0MGQxZmRjZWExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJy
b3JFdmVudC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiAoR1BVT3V0T2ZNZW1v
cnlFcnJvciBvciBHUFVWYWxpZGF0aW9uRXJyb3IpIEdQVUVycm9yOwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkg
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnRJbml0IDogRXZlbnRJbml0IHsKLSAgICByZXF1aXJlZCBH
UFVFcnJvciBlcnJvcjsKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50IDogRXZlbnQgewotICAgIGNvbnN0cnVjdG9yKERPTVN0cmlu
ZyB0eXBlLCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgZ3B1VW5jYXB0dXJlZEVycm9yRXZl
bnRJbml0RGljdCk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgR1BVRXJyb3IgZXJyb3I7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZhbGlkYXRpb25F
cnJvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzViMTU2ZmI3MjhjNjMw
ZmQ3M2NlZDY3MjFhMzVhOTk5NjY0MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVVZhbGlkYXRpb25F
cnJvciB7Ci0gICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIG1lc3NhZ2UpOwotCi0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkM2QyNmM1MzBlMmY2MzNjMGQy
N2JjMTEwMzZjNTAzOWVhMzY1ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIElt
cGxlbWVudGVkQXM9R1BVVmVydGV4Rm9ybWF0Ci1dIGVudW0gR1BVVmVydGV4Rm9ybWF0IHsKLSAg
ICAiZmxvYXQiLAotICAgICJmbG9hdDIiLAotICAgICJmbG9hdDMiLAotICAgICJmbG9hdDQiCi19
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2Vi
R1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciB7Ci0gICAgdTY0
IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgR1BVVmVydGV4Rm9ybWF0IGZvcm1hdDsKLSAgICBy
ZXF1aXJlZCB1MzIgc2hhZGVyTG9jYXRpb247Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFlMDhmNjU4NmRkODk1MmMxNzcwNzZjZmY5MjVi
Y2Q0MTMxNTY4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1bCi0gICAgSW1wbGVtZW50ZWRBcz1H
UFVJbnB1dFN0ZXBNb2RlCi1dIGVudW0gR1BVSW5wdXRTdGVwTW9kZSB7Ci0gICAgInZlcnRleCIs
Ci0gICAgImluc3RhbmNlIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IgewotICAgIHJlcXVpcmVkIHU2NCBzdHJpZGU7Ci0gICAgR1BVSW5wdXRTdGVwTW9kZSBz
dGVwTW9kZSA9ICJ2ZXJ0ZXgiOwotICAgIHNlcXVlbmNlPEdQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3I+IGF0dHJpYnV0ZVNldDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2Y5N2IxMGVlNDFhODExZmMzZDI5MjkzMDJlNDI3NzVmMGVhNzNm
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBJ
bXBsZW1lbnRlZEFzPUdQVUluZGV4Rm9ybWF0Ci1dIGVudW0gR1BVSW5kZXhGb3JtYXQgewotICAg
ICJ1aW50MTYiLAotICAgICJ1aW50MzIiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yIHsKLSAgICBHUFVJbmRleEZvcm1hdCBpbmRleEZvcm1hdCA9ICJ1aW50MzIi
OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3I/PiB2ZXJ0
ZXhCdWZmZXJzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L05hdmlnYXRvcitHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdh
dG9yK0dQVS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMGY4ZjE3NTY5NDk0
MDViNDk0ZjI0Mjc4MTc0MjY5MTA5M2Y0MzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
K0dQVS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jbmF2aWdhdG9yLWdwdQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBs
ZW1lbnRlZEJ5PU5hdmlnYXRvckdQVQotXSBwYXJ0aWFsIGludGVyZmFjZSBOYXZpZ2F0b3Igewot
ICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVIGdwdTsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTNmYzA3YmI2NThmZDYxOWFmZjNkMjQ5MzhjNjBkOGUxZDVj
Zjg1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJOYXZpZ2F0b3JHUFUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJO
YXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1OYXZpZ2F0b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
LXsKLSAgICBOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JH
UFUqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR1BVPigpOwotICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBw
bGVtZW50OwotfQotCi1jb25zdCBjaGFyKiBOYXZpZ2F0b3JHUFU6OnN1cHBsZW1lbnROYW1lKCkK
LXsKLSAgICByZXR1cm4gIk5hdmlnYXRvckdQVSI7Ci19Ci0KLWNvbnN0IFdlYkdQVSogTmF2aWdh
dG9yR1BVOjpncHUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCi17Ci0gICAgYXV0byBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkud2ViR1BV
RW5hYmxlZCk7Ci0gICAgcmV0dXJuIE5hdmlnYXRvckdQVTo6ZnJvbSgmbmF2aWdhdG9yKS0+Z3B1
KCk7Ci19Ci0KLWNvbnN0IFdlYkdQVSogTmF2aWdhdG9yR1BVOjpncHUoKSBjb25zdAotewotICAg
IGlmICghbV9ncHUpCi0gICAgICAgIG1fZ3B1ID0gV2ViR1BVOjpjcmVhdGUoKTsKLSAgICByZXR1
cm4gbV9ncHUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3JHUFUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzU4ZDA4NDZjZDY3MjlmNDhl
ZTk1ZTc3MjNiOWZkYjkxZjQ4Yjc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTmF2aWdhdG9yOwotY2xhc3MgV2ViR1BVOwot
Ci1jbGFzcyBOYXZpZ2F0b3JHUFUgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxOYXZpZ2F0b3I+
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgV2ViR1BVKiBncHUoTmF2aWdhdG9yJik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIE5hdmln
YXRvckdQVSogZnJvbShOYXZpZ2F0b3IqKTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKLSAgICAKLSAgICBjb25zdCBXZWJHUFUqIGdwdSgpIGNvbnN0OwotCi0gICAg
bXV0YWJsZSBSZWZQdHI8V2ViR1BVPiBtX2dwdTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmNDYzZjllMGExNmRlZWFlMTUwYmU1MTcyZDEyYjFiNzI3YzQ5MjkyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEJhc2VG
dW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5j
bHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNp
bmNsdWRlICJXSExTTEJyZWFrLmgiCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIK
LSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21tYUV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMQ29udGludWUuaCIKLSNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERvdEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQu
aCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNsdWRlICJX
SExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0
cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgotI2luY2x1ZGUg
IldITFNMSW5kZXhFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5o
IgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldI
TFNMUXVhbGlmaWVyLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNv
bHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1
ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUg
IldITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1
ZGUgIldITFNMU3RhdGVtZW50TGlzdC5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5p
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgIldI
TFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5p
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNM
VW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIK
LSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIK
LSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NFc2NhcGVNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEzYjI5NmQ4ZDMzZDViZjZhOTQ5NmJiMGMzMTE2NzdkYTI5YzllMWUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotZW51bSBjbGFzcyBBZGRyZXNzRXNj
YXBlTW9kZSA6IHVpbnQ4X3QgewotICAgIEVzY2FwZXMsIC8vIENvbnNlcnZhdGl2ZWx5LCB0aGlz
IGFkZHJlc3Mtb2Ygb3BlcmF0aW9uIG1pZ2h0IGVzY2FwZS4KLSAgICBEb2VzTm90RXNjYXBlIC8v
IFRoaXMgYWRkcmVzcy1vZiBvcGVyYXRpb24gZGVmaW5pdGVseSBkb2VzIG5vdCBlc2NhcGUuCi19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRk
cmVzc1NwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBZGRyZXNzU3BhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE4NjY2OGI2
NjdlODQ2NWM3ODk4OWEwMDA2YjZhMGY2ZDBkMjE5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotZW51bSBjbGFzcyBBZGRyZXNzU3BhY2UgOiB1
aW50OF90IHsKLSAgICBDb25zdGFudCwKLSAgICBEZXZpY2UsCi0gICAgVGhyZWFkZ3JvdXAsCi0g
ICAgVGhyZWFkCi19OwotCi1BTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgdG9TdHJpbmcoQWRkcmVz
c1NwYWNlIGFkZHJlc3NTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZSkgewotICAg
IGNhc2UgQWRkcmVzc1NwYWNlOjpDb25zdGFudDoKLSAgICAgICAgcmV0dXJuICJjb25zdGFudCI7
Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6OkRldmljZToKLSAgICAgICAgcmV0dXJuICJkZXZpY2Ui
OwotICAgIGNhc2UgQWRkcmVzc1NwYWNlOjpUaHJlYWRncm91cDoKLSAgICAgICAgcmV0dXJuICJ0
aHJlYWRncm91cCI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGFkZHJlc3NTcGFjZSA9
PSBBZGRyZXNzU3BhY2U6OlRocmVhZCk7Ci0gICAgICAgIHJldHVybiAidGhyZWFkIjsKLSAgICB9
Ci19Ci0KLXN0cnVjdCBMZWZ0VmFsdWUgewotICAgIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2U7
Ci19OwotCi1zdHJ1Y3QgQWJzdHJhY3RMZWZ0VmFsdWUgewotfTsKLQotc3RydWN0IFJpZ2h0VmFs
dWUgewotfTsKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNTggVGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi1jbGFzcyBU
eXBlQW5ub3RhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgVHlwZUFubm90YXRpb24oKQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIDogbV9lbXB0
eSh0cnVlKQotI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKExlZnRW
YWx1ZSB2KQotICAgICAgICA6IG1faW5uZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFu
bm90YXRpb24oQWJzdHJhY3RMZWZ0VmFsdWUgdikKLSAgICAgICAgOiBtX2lubmVyKHYpCi0gICAg
ewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKFJpZ2h0VmFsdWUgdikKLSAgICAgICAgOiBt
X2lubmVyKHYpCi0gICAgewotICAgIH0KLQotICAgIFR5cGVBbm5vdGF0aW9uKGNvbnN0IFR5cGVB
bm5vdGF0aW9uJikgPSBkZWZhdWx0OwotICAgIFR5cGVBbm5vdGF0aW9uKFR5cGVBbm5vdGF0aW9u
JiYgb3RoZXIpID0gZGVmYXVsdDsKLQotICAgIFR5cGVBbm5vdGF0aW9uJiBvcGVyYXRvcj0oY29u
c3QgVHlwZUFubm90YXRpb24mKSA9IGRlZmF1bHQ7Ci0gICAgVHlwZUFubm90YXRpb24mIG9wZXJh
dG9yPShUeXBlQW5ub3RhdGlvbiYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlv
bmFsPEFkZHJlc3NTcGFjZT4gbGVmdEFkZHJlc3NTcGFjZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQoIW1fZW1wdHkpOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxM
ZWZ0VmFsdWU+KG1faW5uZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PExlZnRWYWx1
ZT4obV9pbm5lcikuYWRkcmVzc1NwYWNlOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIH0KLQotICAgIGJvb2wgaXNSaWdodFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJp
Z2h0VmFsdWU+KG1faW5uZXIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNp
dG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0b3ImIHZpc2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6
dmlzaXQodmlzaXRvciwgc3RkOjpkZWNsdmFsPFZhcmlhbnQ8TGVmdFZhbHVlLCBBYnN0cmFjdExl
ZnRWYWx1ZSwgUmlnaHRWYWx1ZT4mPigpKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lbXB0
eSk7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW5uZXIpOwotICAgIH0K
LQotICAgIGJvb2wgaXNBYnN0cmFjdExlZnRWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQoIW1fZW1wdHkpOwotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxB
YnN0cmFjdExlZnRWYWx1ZT4obV9pbm5lcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlh
bnQ8TGVmdFZhbHVlLCBBYnN0cmFjdExlZnRWYWx1ZSwgUmlnaHRWYWx1ZT4gbV9pbm5lcjsKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIGJvb2wgbV9lbXB0eSB7IGZhbHNlIH07Ci0jZW5kaWYKLX07
Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMzI3NjBhMTQ1ZmY5NjY2ODI5YmU2ODlmOTY3MWZiMzA5YmFjNmYzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgZmluYWwg
OiBwdWJsaWMgUmVmZXJlbmNlVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlSZWZlcmVuY2VUeXBlKTsKLSAgICB1c2luZyBC
YXNlID0gUmVmZXJlbmNlVHlwZTsKLQotICAgIEFycmF5UmVmZXJlbmNlVHlwZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4g
ZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZN
b3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6QXJyYXlSZWZlcmVuY2UpCi0gICAgewotICAgIH0KLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFycmF5UmVmZXJlbmNlVHlwZT4gY3JlYXRlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBl
PiBlbGVtZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5
UmVmZXJlbmNlVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBl
KSkpOwotICAgIH0KLQotICAgIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5CYXNl
OjpoYXNoKCkgXiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaCgiYXJyYXkiKTsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2UoKSA9PSBvdGhlci5h
ZGRyZXNzU3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90aGVyLmVsZW1lbnRUeXBlKCk7Ci0g
ICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJpbmcoKSwgIltdIik7Ci0gICAgfQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1RZUEUoQXJyYXlSZWZlcmVuY2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNlNWJmY2IzMDFkMzFmOTc2YTJlODA1NDBmMjFiYjg5
NDRjYzQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFVu
bmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFycmF5VHlwZSBmaW5hbCA6IHB1YmxpYyBVbm5hbWVk
VHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXJyYXlUeXBlKTsKLSAgICBBcnJheVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBS
ZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICAg
ICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJyYXkpCi0gICAgICAgICwgbV9lbGVt
ZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKLSAgICAgICAgLCBtX251bUVsZW1lbnRzKG51
bUVsZW1lbnRzKQotICAgIHsKLSAgICB9Ci1wdWJsaWM6Ci0KLSAgICBzdGF0aWMgUmVmPEFycmF5
VHlwZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVubmFtZWRUeXBlPiBlbGVt
ZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBcnJheVR5cGUobG9jYXRpb24sIFdURk1vdmUoZWxlbWVudFR5cGUpLCBudW1F
bGVtZW50cykpOwotICAgIH0KLQotICAgIH5BcnJheVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBj
b25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0K
LSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KLSAgICB1
bnNpZ25lZCBudW1FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRWxlbWVudHM7IH0KLQot
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6SW50
SGFzaDx1bnNpZ25lZD46Omhhc2gobV9udW1FbGVtZW50cykgXiBtX2VsZW1lbnRUeXBlLT5oYXNo
KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFycmF5VHlwZSYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbnVtRWxlbWVudHMoKSA9PSBvdGhlci5udW1F
bGVtZW50cygpICYmIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHR5cGUo
KS50b1N0cmluZygpLCAnWycsIG51bUVsZW1lbnRzKCksICddJyk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV9lbGVtZW50VHlwZTsKLSAgICB1bnNpZ25lZCBtX251
bUVsZW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoQXJyYXlUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5VHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTk4YjUyNWZjNmYzYTg1NDQ1ZDdkYmU0M2NlZjY2M2Rl
Mjc3YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJl
c3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkFzc2lnbm1lbnQpCi0gICAgICAg
ICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0
KSkKLSAgICB7Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1fcGFk
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5Bc3NpZ25tZW50RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKLQotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnN0IEFzc2lnbm1lbnRFeHByZXNzaW9u
JikgPSBkZWxldGU7Ci0gICAgQXNzaWdubWVudEV4cHJlc3Npb24oQXNzaWdubWVudEV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1fbGVm
dDsgfQotICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdodDsgfQotICAgIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlUmlnaHQoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmlnaHQp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbGVmdDsKLSAgICBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9yaWdodDsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgIGNo
YXIgbV9wYWRbMV07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEFzc2lnbm1lbnRFeHByZXNzaW9uKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQXNzaWdubWVudEV4cHJlc3Npb24sIGlz
QXNzaWdubWVudEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE1NTYyNWM4ZmRjNDE4MWViNGNkNGU5NmY1ZTZmMTFjYTRlMzFmYzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJh
c2VGdW5jdGlvbkF0dHJpYnV0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgQmFzZUZ1bmN0aW9uQXR0cmlidXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAg
ICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+QmFzZUZ1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OwotCi0gICAgQmFzZUZ1bmN0
aW9uQXR0cmlidXRlKGNvbnN0IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOwotICAg
IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0
OwotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJhc2VTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDgwOTg4YTYwZmZmNWE2ODRkN2IxMzdkMzVjYzczOWFmZDIwNDc2ZWIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEludHJpbnNpY3M7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBV
bm5hbWVkVHlwZTsKLQotY2xhc3MgQmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBCYXNlU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIH5CYXNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCYXNlU2VtYW50aWMo
Y29uc3QgQmFzZVNlbWFudGljJikgPSBkZWxldGU7Ci0gICAgQmFzZVNlbWFudGljKEJhc2VTZW1h
bnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShj
b25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCA9IDA7Ci0KLSAgICBl
bnVtIGNsYXNzIFNoYWRlckl0ZW1EaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICAgICAgSW5wdXQs
Ci0gICAgICAgIE91dHB1dAotICAgIH07Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZUZv
clNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxv
Y2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJkOTI0YmE3NWNmYjZlZGU0ZDg0Y2JlZDUyZDRkZDkxNGM2NWIz
NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQmxvY2sgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBCbG9jayhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRzKQot
ICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6QmxvY2spCi0gICAgICAgICwgbV9z
dGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCi0gICAgewotICAgIH0KLQotICAgIH5CbG9j
aygpID0gZGVmYXVsdDsKLQotICAgIEJsb2NrKGNvbnN0IEJsb2NrJikgPSBkZWxldGU7Ci0gICAg
QmxvY2soQmxvY2smJikgPSBkZWZhdWx0OwotCi0gICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygp
IHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQotCi1wcml2YXRlOgotICAgIFN0YXRlbWVudHMgbV9z
dGF0ZW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoQmxvY2spCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKEJsb2NrLCBpc0Jsb2NrKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzgzNjA1MTY3ZmJhNWVlMDNhYWZiYzY3YzgxMzFjNTMxZTAxMDUxNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQm9vbGVhbkxpdGVyYWwgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgQm9vbGVhbkxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBib29sIHZhbHVlKQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkJvb2xlYW5MaXRlcmFsKQotICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5Cb29sZWFuTGl0ZXJh
bCgpID0gZGVmYXVsdDsKLQotICAgIEJvb2xlYW5MaXRlcmFsKGNvbnN0IEJvb2xlYW5MaXRlcmFs
JikgPSBkZWxldGU7Ci0gICAgQm9vbGVhbkxpdGVyYWwoQm9vbGVhbkxpdGVyYWwmJikgPSBkZWZh
dWx0OwotCi0gICAgQm9vbGVhbkxpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBCb29sZWFuTGl0ZXJh
bCYpID0gZGVsZXRlOwotICAgIEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oQm9vbGVhbkxpdGVy
YWwmJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KLQotICAgIEJvb2xlYW5MaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEJvb2xlYW5MaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAg
IGNvcHlUeXBlVG8ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgYm9vbCBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQm9vbGVhbkxpdGVyYWwpCi0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihCb29sZWFuTGl0ZXJhbCwgaXNCb29sZWFu
TGl0ZXJhbCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNDc2MWJhMjhiN2NiNzI0ODRkN2M2MjM2N2M0
NzhhNDJkYWJmMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBCcmVhayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJyZWFrKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJyZWFr
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+QnJlYWsoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCcmVhayhj
b25zdCBCcmVhayYpID0gZGVsZXRlOwotICAgIEJyZWFrKEJyZWFrJiYpID0gZGVmYXVsdDsKLQot
cHJpdmF0ZToKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKEJyZWFrKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChCcmVhaywgaXNCcmVhaygpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQnVpbHRJblNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGMzZTRkZjJlYzFiNDE0ZDBjYjgzYzY5YjI3NjYyNDRiOWI2YjY3MjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6
aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IElu
dHJpbnNpY3MmIGludHJpbnNpY3MpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7
Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gbWF0Y2hl
cyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxl
OjpTVlZlcnRleElEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmlu
c2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgcmV0
dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgIGNh
c2UgVmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZJc0Zy
b250RmFjZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
Ym9vbFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAg
cmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAg
Y2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1
bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpT
VlRhcmdldDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
ZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5
cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZEaXNwYXRj
aFRocmVhZElEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5mbG9hdDNUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAg
cmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAg
ICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNW
R3JvdXBUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJp
bnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICB9Ci19Ci0KLWJvb2wgQnVpbHRJblNlbWFudGljOjpp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5
cGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsKLSAgICBjYXNlIEVu
dHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6Ci0gICAgICAgICAgICBzd2l0Y2gg
KG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoK
LSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9u
OjpPdXRwdXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAg
IGNhc2UgVmFyaWFibGU6OlBTaXplOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3Np
dGlvbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgot
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgICAgIGNh
c2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1dDoK
LSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJp
YWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRlcHRoOgotICAg
ICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6
Q29tcHV0ZToKLSAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTaGFk
ZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkg
ewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAg
ICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cElEOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZHcm91cEluZGV4OgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVh
ZElEOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNh
c2UgU2hhZGVySXRlbURpcmVjdGlvbjo6T3V0cHV0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRp
Yy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODVhNTE4MjcxMDUxYzVkMGMzOTk1
MWVjN2FjYjJhYzc0NmIwY2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1
aWx0SW5TZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCdWlsdEluU2VtYW50
aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFZhcmlhYmxlIDogdWludDhfdCB7Ci0gICAgICAgIFNW
SW5zdGFuY2VJRCwKLSAgICAgICAgU1ZWZXJ0ZXhJRCwKLSAgICAgICAgUFNpemUsCi0gICAgICAg
IFNWUG9zaXRpb24sCi0gICAgICAgIFNWSXNGcm9udEZhY2UsCi0gICAgICAgIFNWU2FtcGxlSW5k
ZXgsCi0gICAgICAgIFNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgU1ZUYXJnZXQsCi0gICAgICAg
IFNWRGVwdGgsCi0gICAgICAgIFNWQ292ZXJhZ2UsCi0gICAgICAgIFNWRGlzcGF0Y2hUaHJlYWRJ
RCwKLSAgICAgICAgU1ZHcm91cElELAotICAgICAgICBTVkdyb3VwSW5kZXgsCi0gICAgICAgIFNW
R3JvdXBUaHJlYWRJRAotICAgIH07Ci0KLSAgICBCdWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mJiB0
YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRp
b24pCi0gICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKLSAgICAgICAgLCBtX3RhcmdldElu
ZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5C
dWlsdEluU2VtYW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBCdWlsdEluU2VtYW50aWMoY29uc3Qg
QnVpbHRJblNlbWFudGljJikgPSBkZWxldGU7Ci0gICAgQnVpbHRJblNlbWFudGljKEJ1aWx0SW5T
ZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBWYXJpYWJsZSB2YXJpYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGU7IH0KLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgdGFyZ2V0
SW5kZXgoKSB7IHJldHVybiBtX3RhcmdldEluZGV4OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQnVpbHRJblNlbWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX3ZhcmlhYmxlID09IG90aGVyLm1fdmFyaWFibGUgJiYgbV90YXJnZXRJbmRleCA9PSBvdGhl
ci5tX3RhcmdldEluZGV4OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCdWls
dEluU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KLQotICAgIFN0cmluZ1ZpZXcgdG9TdHJpbmcoKSBjb25zdAotICAg
IHsKLSAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZJbnN0YW5jZUlEIjsKLSAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZWZXJ0
ZXhJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgotICAgICAgICAgICAgcmV0dXJu
ICJQU2l6ZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgICAg
ICByZXR1cm4gIlNWUG9zaXRpb24iOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVklzRnJvbnRG
YWNlOgotICAgICAgICAgICAgcmV0dXJuICJTVklzRnJvbnRGYWNlIjsKLSAgICAgICAgY2FzZSBW
YXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZTYW1wbGVJbmRl
eCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgICAg
IHJldHVybiAiU1ZJbm5lckNvdmVyYWdlIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJn
ZXQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNWVGFyZ2V0IjsKLSAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZEZXB0aDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZEZXB0aCI7Ci0gICAgICAgIGNhc2Ug
VmFyaWFibGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNWQ292ZXJhZ2UiOwot
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlNWRGlzcGF0Y2hUaHJlYWRJRCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3Jv
dXBJRDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZHcm91cElEIjsKLSAgICAgICAgY2FzZSBWYXJp
YWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3VwSW5kZXgiOwot
ICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQ6Ci0gICAgICAgICAgICByZXR1
cm4gIlNWR3JvdXBUaHJlYWRJRCI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBib29sIGlzQWNj
ZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNo
YWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFibGUgbV92YXJpYWJsZTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3RhcmdldEluZGV4OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENhbGxFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJk
NDExOGUyMWIzNTA5NWNmODQ1YjExZjZiOTE0ZDhlZWQ3NGU2ZTIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDk4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYW1lZFR5cGU7Ci0KLWNsYXNz
IENhbGxFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENhbGxFeHByZXNzaW9uKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4m
JiBhcmd1bWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q2FsbCkK
LSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX2FyZ3VtZW50cyhX
VEZNb3ZlKGFyZ3VtZW50cykpCi0gICAgewotICAgIH0KLQotICAgIENhbGxFeHByZXNzaW9uKGNv
bnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4
cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9u
Pj4mIGFyZ3VtZW50cygpIHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9Ci0KLSAgICBTdHJpbmcmIG5h
bWUoKSB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKLQotICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCi0gICAgewot
ICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0gJm5hbWVkVHlwZTsKLSAgICB9Ci0KLSAgICBib29s
IGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGU7IH0KLSAgICBOYW1lZFR5cGUqIGNh
c3RSZXR1cm5UeXBlKCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIEZ1bmN0aW9u
RGVjbGFyYXRpb24mIGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Z1bmN0aW9u
KTsKLSAgICAgICAgcmV0dXJuICptX2Z1bmN0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0RnVu
Y3Rpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbV9mdW5jdGlvbik7Ci0gICAgICAgIG1fZnVuY3Rpb24gPSAmZnVuY3Rp
b25EZWNsYXJhdGlvbjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKLSAgICBGdW5jdGlv
bkRlY2xhcmF0aW9uKiBtX2Z1bmN0aW9uIHsgbnVsbHB0ciB9OwotICAgIE5hbWVkVHlwZSogbV9j
YXN0UmV0dXJuVHlwZSB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKENhbGxFeHByZXNzaW9uKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ2FsbEV4cHJlc3Npb24sIGlzQ2FsbEV4
cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhw
cmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q29tbWFFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNDhiYjM4
ODE1MTMzZjk2ZDE4YjVmOGI5MDBmZDI1ZDNhMTFjN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIENvbW1hRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDb21tYUV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Np
b24+PiYmIGxpc3QpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29tbWEp
Ci0gICAgICAgICwgbV9saXN0KFdURk1vdmUobGlzdCkpCi0gICAgewotICAgIH0KLQotICAgIH5D
b21tYUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBDb21tYUV4cHJlc3Npb24oY29uc3Qg
Q29tbWFFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+
PiYgbGlzdCgpIHsgcmV0dXJuIG1fbGlzdDsgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxVbmlx
dWVSZWY8RXhwcmVzc2lvbj4+IG1fbGlzdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbW1hRXhwcmVzc2lvbikKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwgaXNDb21t
YUV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNkNDEzN2U4NWJmY2M1ODE3YjdkMjVmZGZmNWI0MDY0ZTA4YTM0NjYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xG
bG9hdExpdGVyYWwuaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgiCi0jaW5jbHVk
ZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi0vLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBtYWNPUyBTaWVycmEgZG9l
c24ndCBzZWVtIHRvIHN1cHBvcnQgcHV0dGluZyBWYXJpYW50cyBpbnNpZGUgVmFyaWFudHMsCi0v
LyBzbyB0aGlzIGlzIGEgd3JhcHBlciBjbGFzcyB0byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGhh
cHBlbi4gQXMgc29vbiBhcyB3ZSBkb24ndAotLy8gaGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwgdGhp
cyBjYW4gYmUgbWlncmF0ZWQgdG8gYSBWYXJpYW50IHByb3Blci4KLWNsYXNzIENvbnN0YW50RXhw
cmVzc2lvbiBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgQ29uc3RhbnRFeHByZXNzaW9uKEludGVnZXJMaXRlcmFsJiYgaW50ZWdlckxpdGVyYWwpCi0g
ICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoaW50ZWdlckxpdGVyYWwpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb24oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUodW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihG
bG9hdExpdGVyYWwmJiBmbG9hdExpdGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUo
ZmxvYXRMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKEJv
b2xlYW5MaXRlcmFsJiYgYm9vbGVhbkxpdGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1v
dmUoYm9vbGVhbkxpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Np
b24oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQot
ICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkpCi0g
ICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihjb25zdCBDb25zdGFudEV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb24oQ29uc3RhbnRFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIENvbnN0YW50RXhwcmVzc2lvbiYgb3BlcmF0b3I9KGNv
bnN0IENvbnN0YW50RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENvbnN0YW50RXhwcmVzc2lv
biYgb3BlcmF0b3I9KENvbnN0YW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRl
Z2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SW50ZWdlckxpdGVyYWw+KG1fdmFyaWFudCkpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpnZXQ8SW50ZWdlckxpdGVyYWw+KG1fdmFyaWFudCk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlz
aXRvcikgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFu
dDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgRmxvYXRMaXRlcmFsLCBC
b29sZWFuTGl0ZXJhbCwgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPiY+KCkpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YXJpYW50KTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2
aXNpdG9yKSBjb25zdCAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZh
bDxWYXJpYW50PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBGbG9hdExp
dGVyYWwsIEJvb2xlYW5MaXRlcmFsLCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+Jj4oKSkpCi0g
ICAgewotICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhcmlhbnQpOwotICAg
IH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbiBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0
ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lvbiB7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50ZWdlckxpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IENvbnN0YW50
RXhwcmVzc2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5j
bG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwp
IC0+IENvbnN0YW50RXhwcmVzc2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXRMaXRlcmFs
LmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxp
dGVyYWwpIC0+IENvbnN0YW50RXhwcmVzc2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gYm9vbGVh
bkxpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24g
ewotICAgICAgICAgICAgcmV0dXJuIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5jbG9uZSgpOwot
ICAgICAgICB9KSwgbV92YXJpYW50KTsKLSAgICB9Ci0KLSAgICBib29sIG1hdGNoZXMoY29uc3Qg
Q29uc3RhbnRFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gcmVzdWx0OwotICAgICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgIHZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJh
bCkgewotICAgICAgICAgICAgdmFsdWUgPSBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAg
ICB9LCBbJl0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewot
ICAgICAgICAgICAgdmFsdWUgPSBmbG9hdExpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZd
KGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgewotICAgICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Qm9vbGVhbkxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCkp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBvdGhlckJvb2xlYW5MaXRlcmFsID0gV1RG
OjpnZXQ8Qm9vbGVhbkxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA9PSBvdGhlckJvb2xlYW5MaXRlcmFsLnZh
bHVlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxz
ZTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCkpIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvJiBvdGhlck1lbWJlclJlZmVyZW5jZSA9IFdURjo6Z2V0PEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSA9
PSBvdGhlck1lbWJlclJlZmVyZW5jZS5lbnVtZXJhdGlvbk1lbWJlcigpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0pKTsKLQot
ICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0KLSAgICAg
ICAgb3RoZXIudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwm
IGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSBpbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgcmVzdWx0ID0gdmFs
dWUgPT0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29u
c3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZh
bHVlID09IGZsb2F0TGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVh
bkxpdGVyYWwmKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSwgWyZd
KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGZhbHNlOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiAqcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYW50PAotICAgICAg
ICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKLSAgICAg
ICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsCi0gICAgICAgID4gbV92YXJpYW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q29udGludWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnRpbnVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNTFjMjQyYWYwNmY4
YzMzYzY0ZDA1NmJjY2M5YTNkZDBmOTBmNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29udGludWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBDb250aW51ZSBmaW5hbCA6
IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIENvbnRpbnVlKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24sIEtpbmQ6OkNvbnRpbnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+Q29udGlu
dWUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBDb250aW51ZShjb25zdCBDb250aW51ZSYpID0gZGVsZXRl
OwotICAgIENvbnRpbnVlKENvbnRpbnVlJiYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKENv
bnRpbnVlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51
ZSwgaXNDb250aW51ZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVm
YXVsdERlbGV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRGVmYXVsdERlbGV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGIyNTI1
OWEyOWY3NzgyMThiM2EzOWQyODdhZDBmNzg2MjZhZDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotCi0jZGVmaW5lIERFRklORV9ERUZBVUxUX0RF
TEVURSh0eXBlKSBcCi0gICAgbmFtZXNwYWNlIHN0ZCB7IFwKLSAgICAgICAgdGVtcGxhdGU8PiBc
Ci0gICAgICAgIHN0cnVjdCBkZWZhdWx0X2RlbGV0ZTxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBl
PiB7IFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBcCi0gICAgICAgICAgICB2
b2lkIGNhbGxEZWxldGUoVCogdCkgXAotICAgICAgICAgICAgeyBcCi0gICAgICAgICAgICAgICAg
ZGVsZXRlIHQ7IFwKLSAgICAgICAgICAgIH0gXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IFwKLSAgICAgICAgICAgIHZvaWQgY2FsbERlc3Ryb3koVCogdCkgXAotICAgICAgICAg
ICAgeyBcCi0gICAgICAgICAgICAgICAgV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZTo6ZGVzdHJv
eSgqdCk7IFwKLSAgICAgICAgICAgIH0gXAotICAgICAgICAgICAgY29uc3RleHByIHZvaWQgb3Bl
cmF0b3IoKShXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlKiB2YWx1ZSkgXAotICAgICAgICAgICAg
eyBcCi0gICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2ZpbmFsPFdlYkNvcmU6
OldITFNMOjpBU1Q6OnR5cGU+Ojp2YWx1ZSkgXAotICAgICAgICAgICAgICAgICAgICBjYWxsRGVs
ZXRlKHZhbHVlKTsgXAotICAgICAgICAgICAgICAgIGVsc2UgXAotICAgICAgICAgICAgICAgICAg
ICBjYWxsRGVzdHJveSh2YWx1ZSk7IFwKLSAgICAgICAgICAgIH0gXAotICAgICAgICB9OyBcCi0g
ICAgfSBcCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MmMxZTE2NDMxZjMwYmRlOTVkOWRlNTExMTZkYjhhYTY3YjRiOTRjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIERlcmVmZXJlbmNlRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBEZXJlZmVyZW5jZUV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBw
b2ludGVyKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNl
KQotICAgICAgICAsIG1fcG9pbnRlcihXVEZNb3ZlKHBvaW50ZXIpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAgRGVyZWZlcmVu
Y2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAg
IERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0
OwotCi0gICAgRXhwcmVzc2lvbiYgcG9pbnRlcigpIHsgcmV0dXJuIG1fcG9pbnRlcjsgfQotCi1w
cml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3BvaW50ZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShEZXJlZmVy
ZW5jZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdlYmZkOWU4NGYzMjk4MzA2ZDE1MDk0NGZiZmZmNzhh
NTU5M2FjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRG9XaGls
ZUxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBEb1doaWxlTG9vcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0
aW9uYWwpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpEb1doaWxlTG9vcCkK
LSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICAgICAgLCBtX2NvbmRpdGlvbmFs
KFdURk1vdmUoY29uZGl0aW9uYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RG9XaGlsZUxvb3Ao
KSA9IGRlZmF1bHQ7Ci0KLSAgICBEb1doaWxlTG9vcChjb25zdCBEb1doaWxlTG9vcCYpID0gZGVs
ZXRlOwotICAgIERvV2hpbGVMb29wKERvV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKLQotICAgIFN0
YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotICAgIEV4cHJlc3Npb24mIGNvbmRp
dGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1
ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25k
aXRpb25hbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKERvV2hpbGVMb29wKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1NUQVRFTUVOVChEb1doaWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZGZiNDIyMzA0NWZlMDJmOTZjOTBiOGM3NTdlOWIzYjY0YmI3NTY2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAorKysg
L2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgRG90RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IERvdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBiYXNlLCBTdHJpbmcmJiBmaWVsZE5hbWUpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpEb3QsIFdURk1vdmUoYmFzZSkpCi0gICAgICAgICwg
bV9maWVsZE5hbWUoV1RGTW92ZShmaWVsZE5hbWUpKQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BB
UkFNKG1fcGFkZGluZyk7Ci0gICAgfQotCi0gICAgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7
Ci0KLSAgICBEb3RFeHByZXNzaW9uKGNvbnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAg
ICBEb3RFeHByZXNzaW9uKERvdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgU3RyaW5n
JiBmaWVsZE5hbWUoKSB7IHJldHVybiBtX2ZpZWxkTmFtZTsgfQotCi1wcml2YXRlOgotICAgIFN0
cmluZyBtX2ZpZWxkTmFtZTsKLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgZm9yIHJlcGxh
Y2VXaXRoIGludG8gYSBiaWdnZXIgdHlwZS4KLSAgICBjaGFyIG1fcGFkZGluZ1sxMl07Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShE
b3RFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04o
RG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYmExZGQ3ODgwZTVjODZl
NTVlNmU4N2NlNTFiOTdkZTkwOTk3N2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCBm
aW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgZWZmZWN0ZnVsRXhwcmVzc2lvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQoZWZmZWN0
ZnVsRXhwcmVzc2lvbi0+Y29kZUxvY2F0aW9uKCksIEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb24p
Ci0gICAgICAgICwgbV9lZmZlY3RmdWxFeHByZXNzaW9uKFdURk1vdmUoZWZmZWN0ZnVsRXhwcmVz
c2lvbikpCi0gICAgewotICAgIH0KLQotICAgIH5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
KCkgPSBkZWZhdWx0OwotCi0gICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChjb25zdCBF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudChFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JiYpID0gZGVmYXVs
dDsKLQotICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7IHJldHVybiBtX2Vm
ZmVjdGZ1bEV4cHJlc3Npb247IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9lZmZlY3RmdWxFeHByZXNzaW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc0NDZkZjEwYjc1NWRkNmM2MDViMzk2NDk4
MzYxZjE2ZWM3N2JiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBv
aW50VHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8Y3N0
ZGludD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotZW51bSBjbGFzcyBFbnRyeVBvaW50VHlwZSA6IHVpbnQ4X3QgewotICAg
IFZlcnRleCwKLSAgICBGcmFnbWVudCwKLSAgICBDb21wdXRlLAotfTsKLQotQUxXQVlTX0lOTElO
RSBTdHJpbmdWaWV3IHRvU3RyaW5nKEVudHJ5UG9pbnRUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1
cm4gInZlcnRleCI7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAg
IHJldHVybiAiZnJhZ21lbnQiOwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0g
ICAgICAgIHJldHVybiAiY29tcHV0ZSI7Ci0gICAgfQotfQotCi19Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRl
ZmluaXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmOGRlNWFjMjNmNGE3
YWJjMzQ1ZGNlOGE1MWNlZmI2NWY5ZDk1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51
bWVyYXRpb25NZW1iZXIuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFz
cyBFbnVtZXJhdGlvbkRlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRp
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+
IHR5cGUpCi0gICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwg
bG9jYXRpb24sIFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkp
Ci0gICAgewotICAgIH0KLQotICAgIH5FbnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7
Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25EZWZpbml0aW9u
JikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0aW9uRGVmaW5p
dGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1f
dHlwZTsgfQotCi0gICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCi0gICAg
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgbWFr
ZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQuaXNOZXdFbnRyeTsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciog
bWVtYmVyQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRl
cmF0b3IgPSBtX21lbWJlcnMuZmluZChuYW1lKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1f
bWVtYmVycy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOwotICAgIH0KLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVtYmVyPj4gZW51bWVyYXRpb25NZW1iZXJzKCkKLSAg
ICB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVt
YmVyPj4gcmVzdWx0OwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX21lbWJlcnMpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCpwYWlyLnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxFbnVtZXJhdGlvbk1lbWJlcj4+IG1fbWVt
YmVyczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKEVudW1lcmF0aW9uRGVmaW5pdGlvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9UWVBFKEVudW1lcmF0aW9uRGVmaW5pdGlvbiwgaXNFbnVtZXJhdGlvbkRlZmluaXRp
b24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVt
YmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbk1lbWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjg4OGYzNWE5
ZTBjOWY4ZDRkMTdjMTkyNTRiNGM2OWZjNjY0YjRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBFbnVtZXJhdGlvbk1lbWJlcihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0
cmluZyYmIG5hbWUsIGludDY0X3QgdmFsdWUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9j
YXRpb24pCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RW51bWVyYXRpb25NZW1iZXIo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlcihjb25zdCBFbnVtZXJhdGlvbk1l
bWJlciYpID0gZGVsZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9uTWVtYmVy
JiYpID0gZGVmYXVsdDsKLQotICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICBTdHJpbmcgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQotICAgIGludDY0X3QgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci0K
LXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFN0cmluZyBt
X25hbWU7Ci0gICAgaW50NjRfdCBtX3ZhbHVlOwotfTsKLQotdXNpbmcgRW51bWVyYXRpb25NZW1i
ZXJzID0gVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTgzNGU5NzdhY2NlOTBhZjBmMjE5OGYxODVmMWY5OTIyZTE2MDQ0Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEVu
dW1lcmF0aW9uTWVtYmVyOwotCi1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
U3RyaW5nJiYgbGVmdCwgU3RyaW5nJiYgcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbiwgS2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotICAgICAgICAsIG1fbGVmdChX
VEZNb3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewot
ICAgIH0KLQotICAgIH5FbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBleHBsaWNpdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoY29uc3QgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRl
bGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgc3RhdGljIEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCB3cmFwKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVmdCwgU3Ry
aW5nJiYgcmlnaHQsIEVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9u
LCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi0gICAgewotICAgICAgICBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgcmVzdWx0KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpLCBX
VEZNb3ZlKHJpZ2h0KSk7Ci0gICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9
ICZlbnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVt
YmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LQotICAgIGNvbnN0IFN0cmluZyYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQotICAg
IGNvbnN0IFN0cmluZyYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0KLSAgICBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoY29kZUxvY2F0aW9uKCksIFN0cmlu
ZyhtX2xlZnQpLCBTdHJpbmcobV9yaWdodCkpOwotICAgICAgICByZXN1bHQubV9lbnVtZXJhdGlv
bk1lbWJlciA9IG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgICAgIGNvcHlUeXBlVG8ocmVzdWx0
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbkRlZmlu
aXRpb24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9l
bnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZW51bWVyYXRpb25EZWZpbml0aW9uOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBl
bnVtZXJhdGlvbk1lbWJlcigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1l
bWJlcjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbkRlZmluaXRpb24m
IGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVt
YmVyKQotICAgIHsKLSAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRp
b25EZWZpbml0aW9uOwotICAgICAgICBtX2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9u
TWVtYmVyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9sZWZ0OwotICAgIFN0cmlu
ZyBtX3JpZ2h0OwotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogbV9lbnVtZXJhdGlvbkRlZmlu
aXRpb24geyBudWxscHRyIH07Ci0gICAgRW51bWVyYXRpb25NZW1iZXIqIG1fZW51bWVyYXRpb25N
ZW1iZXIgeyBudWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwsIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5MWU4ZGMzNmE4OTRiMzk5ZTdmM2NhNjMwYjY2YThmMjQxNjBiNDk3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEFTVC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi12b2lkIEV4cHJlc3Npb246OmRlc3Ryb3ko
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgp
KSB7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKLSAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKLSAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKLSAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgotICAgICAgICBkZWxldGUgJmRv
d25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0
PExvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0
PExvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0g
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2U6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4
cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Oklu
ZGV4OgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lv
bik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlm
eVdyaXRlOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246Oktp
bmQ6OlRlcm5hcnk6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VGVybmFyeUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6
Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24p
OwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgRXhwcmVzc2lvbjo6ZGVzdHJ1Y3Qo
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgp
KSB7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgotICAgICAgICBkb3du
Y2FzdDxBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkFzc2lnbm1lbnRFeHByZXNz
aW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVh
bkxpdGVyYWw6Ci0gICAgICAgIGRvd25jYXN0PEJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKS5+
Qm9vbGVhbkxpdGVyYWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpDYWxsOgotICAgICAgICBkb3duY2FzdDxDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
fkNhbGxFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6Q29tbWE6Ci0gICAgICAgIGRvd25jYXN0PENvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikufkNvbW1hRXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICBkb3duY2FzdDxEZXJlZmVyZW5jZUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLn5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIGRv
d25jYXN0PEZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikufkZsb2F0TGl0ZXJhbCgpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgotICAg
ICAgICBkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikufkludGVnZXJMaXRlcmFs
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoK
LSAgICAgICAgZG93bmNhc3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Mb2dpY2Fs
RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGRvd25jYXN0PExvZ2ljYWxOb3RFeHByZXNzaW9uPihleHBy
ZXNzaW9uKS5+TG9naWNhbE5vdEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0
PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5NYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIGRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikufk1ha2VQb2ludGVyRXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAgICAgZG93bmNhc3Q8RG90RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikufkRvdEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAg
ICAgZG93bmNhc3Q8R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pLn5HbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkluZGV4OgotICAgICAgICBkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Np
b24pLn5JbmRleEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6Ci0gICAgICAgIGRvd25jYXN0PFJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAg
ICAgICAgZG93bmNhc3Q8VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5UZXJuYXJ5RXhw
cmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw6Ci0gICAgICAgIGRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pLn5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
OgotICAgICAgICBkb3duY2FzdDxFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24p
Ln5FbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAgZG93bmNhc3Q8VmFy
aWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pLn5WYXJpYWJsZVJlZmVyZW5jZSgpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLWJvb2wgRXhwcmVzc2lvbjo6bWF5QmVFZmZlY3RmdWwoKSBj
b25zdAotewotICAgIGF1dG8mIGV4cHJlc3Npb24gPSBjb25zdF9jYXN0PEV4cHJlc3Npb24mPigq
dGhpcyk7Ci0KLSAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Ci0gICAgY2FzZSBFeHBy
ZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkZsb2F0TGl0ZXJhbDoKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFs
OgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLnBvaW50ZXIo
KS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2Fs
OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24p
LmxlZnQoKS5tYXlCZUVmZmVjdGZ1bCgpIHx8IGRvd25jYXN0PExvZ2ljYWxFeHByZXNzaW9uPihl
eHByZXNzaW9uKS5yaWdodCgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxMb2dpY2FsTm90
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikub3BlcmFuZCgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmxl
ZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
Ok1ha2VQb2ludGVyOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNz
aW9uPihleHByZXNzaW9uKS5sZWZ0VmFsdWUoKS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHBy
ZXNzaW9uPihleHByZXNzaW9uKS5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRleEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpIHx8IGRvd25jYXN0
PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZl
Y3RmdWwoKTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfSAvLyBuYW1lc3BhY2UgV0hM
U0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MzZhMDQ3MzQyYzUzNGZlZDM3NjdkZjBmMWQ3NTNlZWY0NzY4YWMzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNM
Q29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFeHByZXNzaW9uIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5FeHByZXNzaW9uKCkg
PSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0KLSAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50OF90IHsK
LSAgICAgICAgQXNzaWdubWVudCwKLSAgICAgICAgQm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIENh
bGwsCi0gICAgICAgIENvbW1hLAotICAgICAgICBEZXJlZmVyZW5jZSwKLSAgICAgICAgRG90LAot
ICAgICAgICBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSwKLSAgICAgICAgRmxvYXRMaXRlcmFsLAot
ICAgICAgICBJbmRleCwKLSAgICAgICAgSW50ZWdlckxpdGVyYWwsCi0gICAgICAgIExvZ2ljYWws
Ci0gICAgICAgIExvZ2ljYWxOb3QsCi0gICAgICAgIE1ha2VBcnJheVJlZmVyZW5jZSwKLSAgICAg
ICAgTWFrZVBvaW50ZXIsCi0gICAgICAgIFJlYWRNb2RpZnlXcml0ZSwKLSAgICAgICAgVGVybmFy
eSwKLSAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVmFyaWFibGVSZWZl
cmVuY2UsCi0gICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwKLSAgICB9OwotCi0gICAg
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAg
IDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEV4cHJlc3Npb24mKTsKLSAg
ICBzdGF0aWMgdm9pZCBkZXN0cnVjdChFeHByZXNzaW9uJik7Ci0KLSAgICBFeHByZXNzaW9uKGNv
bnN0IEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBFeHByZXNzaW9uKEV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgb3BlcmF0b3I9KGNvbnN0IEV4cHJlc3Npb24m
KSA9IGRlbGV0ZTsKLSAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0oRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBVbm5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSB7IHJldHVybiBt
X3R5cGUgPyAmKm1fdHlwZSA6IG51bGxwdHI7IH0KLQotICAgIFVubmFtZWRUeXBlJiByZXNvbHZl
ZFR5cGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSk7Ci0gICAgICAgIHJldHVybiAq
bV90eXBlOwotICAgIH0KLQotICAgIHZvaWQgc2V0VHlwZShSZWY8VW5uYW1lZFR5cGU+IHR5cGUp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fdHlwZSk7Ci0gICAgICAgIG1fdHlwZSA9IFdURk1v
dmUodHlwZSk7Ci0gICAgfQotCi0gICAgY29uc3QgVHlwZUFubm90YXRpb24qIG1heWJlVHlwZUFu
bm90YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGVBbm5vdGF0aW9uID8gJiptX3R5cGVBbm5v
dGF0aW9uIDogbnVsbHB0cjsgfQotCi0gICAgY29uc3QgVHlwZUFubm90YXRpb24mIHR5cGVBbm5v
dGF0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGVBbm5vdGF0aW9uKTsK
LSAgICAgICAgcmV0dXJuICptX3R5cGVBbm5vdGF0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0
VHlwZUFubm90YXRpb24oVHlwZUFubm90YXRpb24mJiB0eXBlQW5ub3RhdGlvbikKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbV90eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgIG1fdHlwZUFubm90YXRp
b24gPSBXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUeXBl
VG8oRXhwcmVzc2lvbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoYXV0byogcmVz
b2x2ZWRUeXBlID0gY29uc3RfY2FzdDxFeHByZXNzaW9uKj4odGhpcyktPm1heWJlUmVzb2x2ZWRU
eXBlKCkpCi0gICAgICAgICAgICBvdGhlci5zZXRUeXBlKCpyZXNvbHZlZFR5cGUpOwotICAgIH0K
LQotICAgIGJvb2wgbWF5QmVFZmZlY3RmdWwoKSBjb25zdDsKLQotICAgIEtpbmQga2luZCgpIGNv
bnN0ICB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24o
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXNzaWdubWVudDsgfQotICAgIGJvb2wg
aXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpCb29sZWFu
TGl0ZXJhbDsgfQotICAgIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpDYWxsOyB9Ci0gICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDb21tYTsgfQotICAgIGJvb2wgaXNEZXJlZmVyZW5j
ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RGVyZWZlcmVuY2U7
IH0KLSAgICBib29sIGlzRG90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpEb3Q7IH0KLSAgICBib29sIGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U7IH0KLSAgICBi
b29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZsb2F0
TGl0ZXJhbDsgfQotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6SW5kZXg7IH0KLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxpdGVyYWw7IH0KLSAgICBib29sIGlz
TG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TG9naWNh
bDsgfQotICAgIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpMb2dpY2FsTm90OyB9Ci0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TWFrZUFycmF5UmVm
ZXJlbmNlOyB9Ci0gICAgYm9vbCBpc01ha2VQb2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlUG9pbnRlcjsgfQotICAgIGJvb2wgaXNQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBpc0RvdEV4cHJlc3Npb24oKSB8fCBpc0lu
ZGV4RXhwcmVzc2lvbigpOyB9Ci0gICAgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24o
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UmVhZE1vZGlmeVdyaXRlOyB9Ci0gICAg
Ym9vbCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlRlcm5hcnk7IH0KLSAgICBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0gICAgYm9v
bCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlZh
cmlhYmxlUmVmZXJlbmNlOyB9Ci0gICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw7
IH0KLQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Q29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV90
eXBlOwotICAgIHN0ZDo6b3B0aW9uYWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247
Ci0gICAgS2luZCBtX2tpbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LURFRklORV9ERUZBVUxUX0RFTEVURShFeHByZXNzaW9uKQotCi0jZGVmaW5lIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkg
XAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1Zh
bHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgeyByZXR1cm4gZXhwcmVzc2lvbi5wcmVk
aWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRkZTQ0ZmM1NTBlOWJiMzZkNzI5MWFkY2QyMmFmOTViZjhjODc0ZmUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBGYWxsdGhyb3VnaCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZhbGx0aHJvdWdoKENvZGVM
b2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZh
bGx0aHJvdWdoKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7
Ci0KLSAgICBGYWxsdGhyb3VnaChjb25zdCBGYWxsdGhyb3VnaCYpID0gZGVsZXRlOwotICAgIEZh
bGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEZhbGx0
aHJvdWdoKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGYWxsdGhy
b3VnaCwgaXNGYWxsdGhyb3VnaCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmxvYXRMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGbG9hdExpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYx
ZjlkNGIwOWQ3OGJkMzE5MzRjODkzMmUwYWQ4Y2U5MTBmMWU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmxv
YXRMaXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGbG9hdExpdGVyYWwoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpGbG9hdExpdGVyYWwpCi0gICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKLSAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RmxvYXRMaXRlcmFs
KCkgPSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0g
ZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0g
ICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgRmxvYXRMaXRlcmFsJikgPSBkZWxldGU7
Ci0gICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsK
LQotICAgIEZsb2F0TGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBm
bG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIEZsb2F0TGl0ZXJh
bCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNvZGVM
b2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9u
ZSgpOwotICAgICAgICBpZiAoYXV0byogcmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2
ZWRUeXBlKCkpCi0gICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxB
U1Q6OlVubmFtZWRUeXBlJj4oKnJlc29sdmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZs
b2F0TGl0ZXJhbFR5cGUgbV90eXBlOwotICAgIGZsb2F0IG1fdmFsdWU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShGbG9hdExpdGVy
YWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihGbG9hdExpdGVy
YWwsIGlzRmxvYXRMaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjNzMwOGMwMGU3NWYwNGQyYTc4M2I4OTE5Njk5NjU1NDMzZDViODA5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNM
TmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLUZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0
TGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlw
ZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygp
KSkKLXsKLX0KLQotYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUm
IHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8TmFtZWRUeXBlPih0
eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRv
d25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICBpZiAoIW5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5pc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5jYW5SZXByZXNlbnRGbG9hdCgpKG1fdmFsdWUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVk
IEZsb2F0TGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5h
bWVkVHlwZSkgY29uc3QKLXsKLSAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJy
ZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLUZsb2F0TGl0
ZXJhbFR5cGUgRmxvYXRMaXRlcmFsVHlwZTo6Y2xvbmUoKSBjb25zdAotewotICAgIEZsb2F0TGl0
ZXJhbFR5cGUgcmVzdWx0KG1fcHJlZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUp
OwotICAgIGlmIChhdXRvKiB0eXBlID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVz
dWx0LnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICBy
ZXN1bHQubV9wcmVmZXJyZWRUeXBlID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE0ZTA4NTliN2MwOGY1NjIyZGE0YjBl
NGVhNzQyMWI3Mzc1ZjVlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9h
dExpdGVyYWxUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci0KLWNsYXNzIEZsb2F0TGl0ZXJhbFR5cGUg
ZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIEZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCBmbG9hdCB2
YWx1ZSk7Ci0KLSAgICB+RmxvYXRMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIEZsb2F0
TGl0ZXJhbFR5cGUoY29uc3QgRmxvYXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0
TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExp
dGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgRmxvYXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwot
ICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVm
YXVsdDsKLQotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0g
ICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlw
ZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwotCi0gICAgRmxv
YXRMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGZsb2F0IG1fdmFs
dWU7Ci0gICAgLy8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRl
cGVuZGVuY3kgYmV0d2VlbgotICAgIC8vIENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlw
ZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9u
Ci0gICAgUmVmPFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEZsb2F0TGl0ZXJh
bFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShGbG9hdExpdGVyYWxU
eXBlLCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZvckxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZvckxvb3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhNTc0MGY4
NzVmZmRkNzllZGFlNzJhZjgzNTg0YTg4NjI4ZmUzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGb3JMb29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgot
I2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIEZvckxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGb3JMb29wKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBpbml0aWFsaXphdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4mJiBpbmNyZW1lbnQsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZvckxvb3ApCi0gICAgICAgICwgbV9pbml0
aWFsaXphdGlvbihXVEZNb3ZlKGluaXRpYWxpemF0aW9uKSkKLSAgICAgICAgLCBtX2NvbmRpdGlv
bihXVEZNb3ZlKGNvbmRpdGlvbikpCi0gICAgICAgICwgbV9pbmNyZW1lbnQoV1RGTW92ZShpbmNy
ZW1lbnQpKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+Rm9yTG9vcCgpID0gZGVmYXVsdDsKLQotICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYp
ID0gZGVsZXRlOwotICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbmlx
dWVSZWY8U3RhdGVtZW50PiYgaW5pdGlhbGl6YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0
aW9uOyB9Ci0gICAgRXhwcmVzc2lvbiogY29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24u
Z2V0KCk7IH0KLSAgICBFeHByZXNzaW9uKiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVu
dC5nZXQoKTsgfQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotCi1w
cml2YXRlOgotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1faW5pdGlhbGl6YXRpb247Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiBtX2luY3JlbWVudDsKLSAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBt
X2JvZHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZB
VUxUX0RFTEVURShGb3JMb29wKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChGb3JMb29wLCBpc0Zvckxvb3AoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYmM1YjY3NGYzNGY5MTU0YjBjYWUyZWE0MjY1YTYyMmNhNzMyOWNkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5j
dGlvbkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi11c2luZyBGdW5jdGlvbkF0dHJpYnV0ZSA9IFZhcmlhbnQ8TnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlPjsKLXVzaW5nIEF0dHJpYnV0ZUJsb2NrID0gVmVjdG9y
PEZ1bmN0aW9uQXR0cmlidXRlPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNs
YXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWIyNGQyZTI4ZjYxY2Zi
NWFkYzk0MmUyNjg4ZTM0YTcyMzcyOWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQ
b2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTFBhcnNpbmdNb2RlLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbihD
b2RlTG9jYXRpb24gbG9jYXRpb24sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIHN0
ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IGVudHJ5UG9pbnRUeXBlLCBSZWY8VW5uYW1lZFR5
cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUsIFZhcmlhYmxlRGVjbGFyYXRpb25zJiYgcGFyYW1ldGVy
cywgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljLCBib29sIGlzT3BlcmF0b3Is
IFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0
aW9uKQotICAgICAgICAsIG1fYXR0cmlidXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVCbG9jaykp
Ci0gICAgICAgICwgbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKLSAgICAgICAgLCBt
X2lzT3BlcmF0b3IoaXNPcGVyYXRvcikKLSAgICAgICAgLCBtX3BhcnNpbmdNb2RlKHBhcnNpbmdN
b2RlKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICAgICAsIG1fbmFtZShX
VEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMp
KQotICAgICAgICAsIG1fc2VtYW50aWMoV1RGTW92ZShzZW1hbnRpYykpCi0gICAgewotICAgIH0K
LQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBG
dW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsK
LSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0
OwotCi0gICAgdmlydHVhbCBib29sIGlzRnVuY3Rpb25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIEF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1
dGVCbG9jaygpIHsgcmV0dXJuIG1fYXR0cmlidXRlQmxvY2s7IH0KLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2VudHJ5UG9pbnRUeXBlOyB9Ci0gICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQot
ICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGJvb2wgaXNDYXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lID09ICJvcGVyYXRvciBjYXN0IjsgfQotICAgIGNvbnN0IFZh
cmlhYmxlRGVjbGFyYXRpb25zJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzOyB9Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnMmIHBhcmFtZXRlcnMoKSB7IHJldHVybiBt
X3BhcmFtZXRlcnM7IH0KLSAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFu
dGljLmdldCgpOyB9Ci0gICAgYm9vbCBpc09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09w
ZXJhdG9yOyB9Ci0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotCi0gICAgUGFyc2luZ01vZGUgcGFyc2luZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNpbmdNb2RlOyB9Ci0KLSAgICBOYW1lU3BhY2UgbmFtZVNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0KLSAgICB2b2lkIHNldE5hbWVTcGFj
ZShOYW1lU3BhY2UgbmFtZVNwYWNlKSB7IG1fbmFtZVNwYWNlID0gbmFtZVNwYWNlOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotICAgIEF0dHJpYnV0ZUJs
b2NrIG1fYXR0cmlidXRlQmxvY2s7Ci0gICAgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4g
bV9lbnRyeVBvaW50VHlwZTsKLSAgICBib29sIG1faXNPcGVyYXRvcjsKLSAgICBQYXJzaW5nTW9k
ZSBtX3BhcnNpbmdNb2RlOwotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwotICAgIFN0cmlu
ZyBtX25hbWU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnMgbV9wYXJhbWV0ZXJzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKLSAgICBOYW1lU3BhY2UgbV9uYW1l
U3BhY2UgeyBOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RlVOQ1RJT05fREVDTEFSQVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVO
YW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMjQ4ZmI1YTdhNDU0ZWU1Mjk3MjdiYmYyN2RhODE5MmFkNzVkZTAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJsb2NrLmgi
Ci0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uIDogcHVibGljIEZ1
bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVuY3Rpb25E
ZWNsYXJhdGlvbiwgQmxvY2smJiBibG9jaykKLSAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9u
KFdURk1vdmUoZnVuY3Rpb25EZWNsYXJhdGlvbikpCi0gICAgICAgICwgbV9ibG9jayhXVEZNb3Zl
KGJsb2NrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnVuY3Rpb25EZWZpbml0aW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgRnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IEZ1bmN0aW9uRGVm
aW5pdGlvbiYpID0gZGVsZXRlOwotICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRlZmlu
aXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEJsb2NrJiBibG9jaygpIHsgcmV0
dXJuIG1fYmxvY2s7IH0KLQotcHJpdmF0ZToKLSAgICBCbG9jayBtX2Jsb2NrOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKEZ1bmN0aW9uRGVmaW5pdGlvbiwgaXNGdW5jdGlvbkRlZmlu
aXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MmUxZmI2MDg2ZDlmMGI2ZTI2MWEzZjFlMzNhZTcyYTFhZTRjYTZlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1l
bnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJ1Y3R1cmVFbGVtZW50KiBzdHJ1Y3RGaWVsZCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSkKLSAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShiYXNlKSkKLSAgICAgICAgLCBtX3N0cnVjdEZp
ZWxkKCpzdHJ1Y3RGaWVsZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3RGaWVsZCk7Ci0g
ICAgfQotCi0gICAgfkdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIAot
ICAgIFN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdEZpZWxkKCkgeyByZXR1cm4gbV9zdHJ1Y3RGaWVs
ZDsgfQotCi0gICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Jhc2U7Ci0gICAgU3RydWN0
dXJlRWxlbWVudCYgbV9zdHJ1Y3RGaWVsZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oR2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UsIGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5OWQ2ZGEzY2QxNjAxYThiOWExNWQzYWFiMTVmYmY5YmZjYzgyZDAzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
SWZTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJZlN0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVt
ZW50PiYmIGJvZHksIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgZWxzZUJvZHkpCi0gICAg
ICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpJZikKLSAgICAgICAgLCBtX2NvbmRpdGlv
bmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkp
KQotICAgICAgICAsIG1fZWxzZUJvZHkoV1RGTW92ZShlbHNlQm9keSkpCi0gICAgewotICAgIH0K
LQotICAgIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotICAgIElmU3RhdGVtZW50KGNvbnN0
IElmU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2Nv
bmRpdGlvbmFsOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0g
ICAgU3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkuZ2V0KCk7IH0KLQot
cHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKLSAgICBV
bmlxdWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVu
dD4gbV9lbHNlQm9keTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVG
SU5FX0RFRkFVTFRfREVMRVRFKElmU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChJZlN0YXRlbWVudCwgaXNJZlN0YXRlbWVudCgpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE3NDE1ZTMxYjQzOWYxMDc5ZTE4NGFkYTdlMmI3
MDQxMWZjMzVjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJl
c3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
Q29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgSW5kZXhFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgSW5kZXhFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgYmFzZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgaW5kZXgpCi0gICAgICAg
IDogUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92
ZShiYXNlKSkKLSAgICAgICAgLCBtX2luZGV4KFdURk1vdmUoaW5kZXgpKQotICAgIHsKLSNpZiBD
UFUoQUREUkVTUzMyKQotICAgICAgICBVTlVTRURfUEFSQU0obV9wYWRkaW5nKTsKLSNlbmRpZgot
ICAgIH0KLQotICAgIH5JbmRleEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbmRleEV4
cHJlc3Npb24oY29uc3QgSW5kZXhFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgSW5kZXhFeHBy
ZXNzaW9uKEluZGV4RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBp
bmRleEV4cHJlc3Npb24oKSB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiBpbmRleFJlZmVyZW5jZSgpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gdGFrZUluZGV4KCkgeyByZXR1cm4gV1RGTW92ZShtX2luZGV4KTsgfQot
Ci1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2luZGV4OwotI2lmIENQVShB
RERSRVNTMzIpCi0gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IGZvciByZXBsYWNlV2l0aCBp
bnRvIGEgYmlnZ2VyIHR5cGUuCi0gICAgY2hhciBtX3BhZGRpbmdbNF07Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKElu
ZGV4RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KEluZGV4RXhwcmVzc2lvbiwgaXNJbmRleEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWE3MjdhOGY5YjgwYTk5OTIyN2RhZTQxMWUxZTM4OGMwYTcy
NzEzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWludDY0X3QgSW50
ZWdlckxpdGVyYWw6OnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QKLXsKLSAgICBhdXRvJiB0
eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4obV90eXBlLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgIHJldHVy
biBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tSW50ZWdlcigpKG1fdmFsdWUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjcwOWZlZGRkMTNkZWE1MTQ4NTk4ZjI5YTA1NzA0Yjk5MmJmMmRlYi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJ
bnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgLCBt
X3R5cGUobG9jYXRpb24sIHZhbHVlKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewot
ICAgIH0KLQotICAgIH5JbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJM
aXRlcmFsKGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVy
YWwoSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdlckxpdGVyYWwmIG9w
ZXJhdG9yPShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwotICAgIEludGVnZXJMaXRl
cmFsJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdl
ckxpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgaW50IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBj
b25zdAotICAgIHsKLSAgICAgICAgSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigp
LCBtX3ZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IG1fdHlwZS5jbG9uZSgpOwotICAg
ICAgICBpZiAoYXV0byogcmVzb2x2ZWRUeXBlID0gbV90eXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkp
Ci0gICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUoY29uc3RfY2FzdDxBU1Q6OlVubmFt
ZWRUeXBlJj4oKnJlc29sdmVkVHlwZSkpOwotICAgICAgICBjb3B5VHlwZVRvKHJlc3VsdCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgaW50NjRfdCB2YWx1ZUZvclNlbGVj
dGVkVHlwZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEludGVnZXJMaXRlcmFsVHlwZSBtX3R5
cGU7Ci0gICAgaW50IG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShJbnRlZ2VyTGl0ZXJhbCkKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRl
cmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SW50ZWdlckxpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2
Njc1MGI2NDNlYjY2MjA2YTM3ZTI5OTAxYTQ2N2MyYmJkZTdkZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVU
eXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1JbnRlZ2VyTGl0ZXJhbFR5cGU6Oklu
dGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6
IFJlc29sdmFibGVUeXBlKEtpbmQ6OkludGVnZXJMaXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1
ZSkKLSAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24s
ICJpbnQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKLXsKLX0KLQotYm9vbCBJbnRlZ2VyTGl0ZXJh
bFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlz
PE5hbWVkVHlwZT4odHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1l
ZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+KHR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0
byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9u
PihuYW1lZFR5cGUpOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5j
YW5SZXByZXNlbnRJbnRlZ2VyKCkobV92YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgSW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJz
aW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0Ci17Ci0gICAgaWYg
KG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiAxOwotfQotCi1JbnRlZ2VyTGl0ZXJhbFR5cGUgSW50ZWdlckxpdGVyYWxU
eXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlIHJlc3VsdChtX3By
ZWZlcnJlZFR5cGUtPmNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKLSAgICBpZiAoYXV0byogdHlw
ZSA9IG1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nh
c3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCp0eXBlKSk7Ci0gICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlw
ZSA9IG1fcHJlZmVycmVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzRhZWRmNDc2YjMyYjdmYmY3OWU4YzBkN2RjNDdjODMxOTFiNjBhZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJs
ZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
VHlwZVJlZmVyZW5jZTsKLQotY2xhc3MgSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGlj
IFJlc29sdmFibGVUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwotCi0gICAg
fkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlw
ZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJh
bFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEludGVnZXJMaXRl
cmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwot
ICAgIEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0K
LSAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRU
eXBlOyB9Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBJ
bnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV92
YWx1ZTsKLSAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxU
eXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Np
b24KLSAgICBSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoSW50ZWdlckxp
dGVyYWxUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoSW50ZWdlckxp
dGVyYWxUeXBlLCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBjMWU5MzExMGZlMmI1MmJlOGM2Y2ExZjFjNDY5NGI0NDc3Nzgw
YWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgQW5kLAotICAgICAgICBPcgotICAg
IH07Ci0KLSAgICBMb2dpY2FsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFR5cGUg
dHlwZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbCkK
LSAgICAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkK
LSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+
TG9naWNhbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBMb2dpY2FsRXhwcmVzc2lvbihj
b25zdCBMb2dpY2FsRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIExvZ2ljYWxFeHByZXNzaW9u
KExvZ2ljYWxFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1f
bGVmdDsgfQotICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdodDsgfQotCi1w
cml2YXRlOgotICAgIFR5cGUgbV90eXBlOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xl
ZnQ7Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcmlnaHQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVz
c2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxF
eHByZXNzaW9uLCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNlZGMzNjM1MmJlYWIwNDhhMzhlOThlNzNkYzU2OTE3
NWJmYzZhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhw
cmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNM
IHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgb3BlcmFuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpMb2dpY2FsTm90KQotICAgICAgICAsIG1fb3BlcmFuZChXVEZNb3ZlKG9wZXJh
bmQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TG9naWNhbE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7Ci0KLSAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihjb25zdCBMb2dpY2FsTm90RXhwcmVzc2lv
biYpID0gZGVsZXRlOwotICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKExvZ2ljYWxOb3RFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIG9wZXJhbmQoKSB7IHJldHVybiBt
X29wZXJhbmQ7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9vcGVy
YW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVM
VF9ERUxFVEUoTG9naWNhbE5vdEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsTm90RXhwcmVzc2lvbiwgaXNMb2dpY2FsTm90RXhwcmVz
c2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYzVkNjRjYjk1NzMxNjAyMDk1NzE3YjJiYWZjNjRiZTdlMzYwOTI0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
QWRkcmVzc0VzY2FwZU1vZGUuaCIKLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBl
TW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZl
cmVuY2UpCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAg
ICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgewotICAgIH0K
LQotICAgIH5NYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi0gICAg
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24m
IGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0KLSAgICBib29sIG1pZ2h0RXNj
YXBlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzRXNjYXBlTW9kZSA9PSBBZGRyZXNzRXNjYXBl
TW9kZTo6RXNjYXBlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBt
X2xlZnRWYWx1ZTsKLSAgICBBZGRyZXNzRXNjYXBlTW9kZSBtX2FkZHJlc3NFc2NhcGVNb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWEyN2MyMWM1MDVhMDM2ODNjYmU5NTYwNDYyMzI5NTFlYjExMmZm
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Np
b24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRk
cmVzc0VzY2FwZU1vZGUuaCIKLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgTWFrZVBvaW50ZXJFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1ha2VQb2ludGVyRXhw
cmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxl
ZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TWFrZVBvaW50ZXIpCi0gICAgICAgICwgbV9sZWZ0
VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUo
YWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIH5NYWtlUG9pbnRlckV4cHJl
c3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFr
ZVBvaW50ZXJFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTWFrZVBvaW50ZXJFeHByZXNzaW9u
KE1ha2VQb2ludGVyRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBs
ZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotCi0gICAgYm9vbCBtaWdodEVzY2Fw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1v
ZGU6OkVzY2FwZXM7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9s
ZWZ0VmFsdWU7Ci0gICAgQWRkcmVzc0VzY2FwZU1vZGUgbV9hZGRyZXNzRXNjYXBlTW9kZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KE1ha2VQb2ludGVyRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKE1ha2VQb2ludGVyRXhwcmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24o
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NDZmZGZhMmQyNWQzYTg3ZjUyYWVkMjgxYmVl
NjBkMTI5ZDQzYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNwYWNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLS8vIERpZmZlcmVudCBz
aGFkZXIgbW9kdWxlcyBvcGVyYXRlIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgotLy8gVGhpcyBt
ZWFucyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgdHdvIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIHNp
Z25hdHVyZXMsIGFzIGxvbmcgYXMgdGhleSBhcmUgaW4gZGlmZmVyZW50IG1vZHVsZXMuCi1lbnVt
IGNsYXNzIE5hbWVTcGFjZSA6IHVpbnQ4X3QgewotICAgIFN0YW5kYXJkTGlicmFyeSA9IDAsCi0g
ICAgTmFtZVNwYWNlMSA9IDEsCi0gICAgTmFtZVNwYWNlMiA9IDIKLX07Ci0KLWNvbnN0ZXhwciB1
bnNpZ25lZCBuYW1lU3BhY2VDb3VudCA9IDM7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiYjExZjhiYTMwNjY4ODk0NmNiN2YyZjE5N2I1OTZiNWNiMzk2YzI0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7
Ci0KLWNsYXNzIE5hbWVkVHlwZSA6IHB1YmxpYyBUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLQotcHJvdGVjdGVkOgotICAgIH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1
YmxpYzoKLSAgICBOYW1lZFR5cGUoS2luZCBraW5kLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0
cmluZyYmIG5hbWUpCi0gICAgICAgIDogVHlwZShraW5kKQotICAgICAgICAsIG1fY29kZUxvY2F0
aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRUeXBlJikgPSBkZWxldGU7Ci0gICAgTmFt
ZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0
ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBs
b2NhdGlvbjsgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAg
ICBOYW1lU3BhY2UgbmFtZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3BhY2U7IH0KLSAg
ICB2b2lkIHNldE5hbWVTcGFjZShOYW1lU3BhY2UgbmFtZVNwYWNlKSB7IG1fbmFtZVNwYWNlID0g
bmFtZVNwYWNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlw
ZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgQ29kZUxvY2F0aW9uIG1f
Y29kZUxvY2F0aW9uOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgTmFtZVNwYWNlIG1fbmFtZVNw
YWNlIHsgTmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKE5hbWVkVHlwZSkKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hbWVkVHlwZSwgaXNOYW1lZFR5cGUoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGRkOWFhZjViZGUyY2E3YThlMzljNTVjYzU4NDgwYjNjYTQyOGI3ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRp
b24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIEZ1bmN0aW9uRGVjbGFyYXRpb24gewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi0gICAgICAg
IDogRnVuY3Rpb25EZWNsYXJhdGlvbihXVEZNb3ZlKGZ1bmN0aW9uRGVjbGFyYXRpb24pKQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5OYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgPSBk
ZWZhdWx0OwotCi0gICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihjb25zdCBOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgaXNO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCi1wcml2YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0YTE2MmI3ODE3ZDQ3M2E4
MmRkOTc5M2EwYmU5MTIzMGEzNGVkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24g
ZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAg
OiBOYW1lZFR5cGUoS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92
ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRz
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfk5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpID0gZGVmYXVs
dDsKLQotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihjb25zdCBOYXRpdmVUeXBlRGVjbGFyYXRp
b24mKSA9IGRlbGV0ZTsKLSAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oTmF0aXZlVHlwZURlY2xh
cmF0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMo
KSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KLQotICAgIGJvb2wgaXNJbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW50OyB9Ci0gICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOdW1iZXI7IH0KLSAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzRmxv
YXRpbmc7IH0KLSAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0b21pYzsg
fQotICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzVmVjdG9yOyB9Ci0gICAg
Ym9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXRyaXg7IH0KLSAgICBib29sIGlz
T3BhcXVlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGFxdWVUeXBlOyB9Ci0gICAgYm9vbCBp
c1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzVGV4dHVyZTsgfQotICAgIGJvb2wgaXNUZXh0
dXJlQXJyYXkoKSBjb25zdCB7IHJldHVybiBtX2lzVGV4dHVyZUFycmF5OyB9Ci0gICAgYm9vbCBp
c0RlcHRoVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aFRleHR1cmU7IH0KLSAgICBi
b29sIGlzV3JpdGFibGVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1dyaXRhYmxlVGV4dHVy
ZTsgfQotICAgIGJvb2wgaXNDdWJlVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdWJlVGV4
dHVyZTsgfQotICAgIHVpbnQgdGV4dHVyZURpbWVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZURpbWVuc2lvbjsgfQotICAgIGJvb2wgaXNTaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U2lnbmVkOyB9Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludCk+JiBjYW5SZXByZXNl
bnRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRJbnRlZ2VyOyB9Ci0gICAg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4mIGNhblJlcHJlc2VudFVuc2lnbmVk
SW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyOyB9
Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGZsb2F0KT4mIGNhblJlcHJlc2VudEZsb2F0
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRGbG9hdDsgfQotICAgIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4mIHN1Y2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3VjY2Vzc29yOyB9Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+JiBmb3Jt
YXRWYWx1ZUZyb21JbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXRWYWx1ZUZyb21JbnRl
Z2VyOyB9Ci0gICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4mIGZvcm1h
dFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVG
cm9tVW5zaWduZWRJbnRlZ2VyOyB9Ci0gICAgdm9pZCBpdGVyYXRlQWxsVmFsdWVzKGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mIGNhbGxiYWNrKSB7IG1faXRlcmF0ZUFsbFZhbHVl
cyhjYWxsYmFjayk7IH0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbWF0cml4RGltZW5zaW9uKHVu
c2lnbmVkIHR5cGVBcmd1bWVudEluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWF0cml4
KCkpOwotICAgICAgICBBU1NFUlQodHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAzKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uPih0eXBlQXJndW1lbnRz
KClbdHlwZUFyZ3VtZW50SW5kZXhdKS5pbnRlZ2VyTGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQot
cHVibGljOgotICAgIHVuc2lnbmVkIG51bWJlck9mTWF0cml4Um93cygpCi0gICAgewotICAgICAg
ICByZXR1cm4gbWF0cml4RGltZW5zaW9uKDIpOwotICAgIH0KLSAgICB1bnNpZ25lZCBudW1iZXJP
Zk1hdHJpeENvbHVtbnMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1hdHJpeERpbWVuc2lvbigx
KTsKLSAgICB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiB2ZWN0b3JUeXBlQXJndW1lbnQoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzVmVjdG9yKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8
UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KHR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgdmVjdG9yU2l6ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNWZWN0b3Io
KSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4odHlw
ZUFyZ3VtZW50cygpWzFdKS5pbnRlZ2VyTGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgfQotCi0gICAg
VHlwZVJlZmVyZW5jZSYgbWF0cml4VHlwZUFyZ3VtZW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc01hdHJpeCgpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZl
cmVuY2U+Pih0eXBlQXJndW1lbnRzKClbMF0pOwotICAgIH0KLQotICAgIHZvaWQgc2V0SXNJbnQo
KSB7IG1faXNJbnQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc051bWJlcigpIHsgbV9pc051bWJl
ciA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzRmxvYXRpbmcoKSB7IG1faXNGbG9hdGluZyA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldElzQXRvbWljKCkgeyBtX2lzQXRvbWljID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0SXNWZWN0b3IoKSB7IG1faXNWZWN0b3IgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJ
c01hdHJpeCgpIHsgbV9pc01hdHJpeCA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzT3BhcXVlVHlw
ZSgpIHsgbV9pc09wYXF1ZVR5cGUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1RleHR1cmUoKSB7
IG1faXNUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNUZXh0dXJlQXJyYXkoKSB7IG1f
aXNUZXh0dXJlQXJyYXkgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0RlcHRoVGV4dHVyZSgpIHsg
bV9pc0RlcHRoVGV4dHVyZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzV3JpdGFibGVUZXh0dXJl
KCkgeyBtX2lzV3JpdGFibGVUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNDdWJlVGV4
dHVyZSgpIHsgbV9pc0N1YmVUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0VGV4dHVyZURp
bWVuc2lvbih1aW50IHRleHR1cmVEaW1lbnNpb24pIHsgbV90ZXh0dXJlRGltZW5zaW9uID0gdGV4
dHVyZURpbWVuc2lvbjsgfQotICAgIHZvaWQgc2V0SXNTaWduZWQoKSB7IG1faXNTaWduZWQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRDYW5SZXByZXNlbnRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248Ym9v
bChpbnQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEludGVnZXIgPSBXVEZNb3Zl
KGNhblJlcHJlc2VudCk7IH0KLSAgICB2b2lkIHNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdl
cihzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJl
cHJlc2VudFVuc2lnbmVkSW50ZWdlciA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQotICAgIHZv
aWQgc2V0Q2FuUmVwcmVzZW50RmxvYXQoc3RkOjpmdW5jdGlvbjxib29sKGZsb2F0KT4mJiBjYW5S
ZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRGbG9hdCA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsg
fQotICAgIHZvaWQgc2V0U3VjY2Vzc29yKHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4m
JiBzdWNjZXNzb3IpIHsgbV9zdWNjZXNzb3IgPSBXVEZNb3ZlKHN1Y2Nlc3Nvcik7IH0KLSAgICB2
b2lkIHNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIoc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+
JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyID0gV1RGTW92ZShmb3Jt
YXRWYWx1ZSk7IH0KLSAgICB2b2lkIHNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihz
dGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiYmIGZvcm1hdFZhbHVlKSB7IG1fZm9ybWF0
VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KLSAgICB2
b2lkIHNldEl0ZXJhdGVBbGxWYWx1ZXMoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Ym9vbChpbnQ2NF90KT4mKT4mJiBpdGVyYXRlQWxsVmFsdWVzKSB7IG1faXRlcmF0ZUFs
bFZhbHVlcyA9IFdURk1vdmUoaXRlcmF0ZUFsbFZhbHVlcyk7IH0KLQotcHJpdmF0ZToKLSAgICBU
eXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKLSAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50
KT4gbV9jYW5SZXByZXNlbnRJbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25l
ZCk+IG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rpb248Ym9v
bChmbG9hdCk+IG1fY2FuUmVwcmVzZW50RmxvYXQ7Ci0gICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90
KGludDY0X3QpPiBtX3N1Y2Nlc3NvcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50KT4g
bV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNp
Z25lZCk+IG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyOwotICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50NjRfdCk+Jik+IG1faXRlcmF0ZUFs
bFZhbHVlczsKLSAgICB1aW50IG1fdGV4dHVyZURpbWVuc2lvbiB7IDAgfTsKLSAgICBib29sIG1f
aXNJbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc051bWJlciB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2lzRmxvYXRpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0F0b21pYyB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzVmVjdG9yIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNNYXRyaXggeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9pc09wYXF1ZVR5cGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9p
c1RleHR1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1RleHR1cmVBcnJheSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzRGVwdGhUZXh0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNXcml0
YWJsZVRleHR1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0N1YmVUZXh0dXJlIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNTaWduZWQgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmF0aXZl
VHlwZURlY2xhcmF0aW9uLCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc0OTk4YjE0
NGMxYzRiMTY0YjRlZjJjOWM5MGFhMmNlNGQwODU2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTnVtVGhyZWFkc0Z1
bmN0aW9uQXR0cmlidXRlIDogcHVibGljIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCwgdW5zaWduZWQgZGVwdGgpCi0gICAgICAgIDogQmFzZUZ1bmN0aW9uQXR0cmlidXRlKGxv
Y2F0aW9uKQotICAgICAgICAsIG1fd2lkdGgod2lkdGgpCi0gICAgICAgICwgbV9oZWlnaHQoaGVp
Z2h0KQotICAgICAgICAsIG1fZGVwdGgoZGVwdGgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgfk51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSgpID0gZGVmYXVsdDsKLQotICAgIE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShjb25zdCBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUm
KSA9IGRlbGV0ZTsKLSAgICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoTnVtVGhyZWFkc0Z1
bmN0aW9uQXR0cmlidXRlJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1faGVpZ2h0OyB9Ci0gICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX2Rl
cHRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBt
X2hlaWdodDsKLSAgICB1bnNpZ25lZCBtX2RlcHRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50
ZXJUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZmJkYjZhYjRhNmZiODNi
ZTVkMzRjMmQ4ODhjMDE1MDk4ZTI1ZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUG9pbnRlclR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgUG9pbnRlclR5cGUgZmluYWwgOiBwdWJsaWMgUmVmZXJlbmNlVHlwZSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9pbnRlclR5
cGUpOwotICAgIHVzaW5nIEJhc2UgPSBSZWZlcmVuY2VUeXBlOwotCi0gICAgUG9pbnRlclR5cGUo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5u
YW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NT
cGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OlBvaW50ZXIpCi0gICAgewotICAgIH0K
LQotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UG9pbnRlclR5cGU+IGNyZWF0ZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4g
ZWxlbWVudFR5cGUpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
UG9pbnRlclR5cGUobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkp
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB+UG9pbnRlclR5cGUoKSA9
IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLT5CYXNlOjpoYXNoKCkgXiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFz
aCgicG9pbnRlciIpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2ludGVy
VHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkg
PT0gb3RoZXIuYWRkcmVzc1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50
VHlwZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICcqJyk7Ci0g
ICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVM
VF9ERUxFVEUoUG9pbnRlclR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQ
RShQb2ludGVyVHlwZSwgaXNQb2ludGVyVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFhMjNkMGEzNTZjYjczNDhiNDM2MDNlNzc1
YmIzODcyYzY3Nzc0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gOiBwdWJsaWMg
RXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgflByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAg
IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtpbmQga2lu
ZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxv
Y2F0aW9uLCBraW5kKQotICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBiYXNl
KCkgeyByZXR1cm4gbV9iYXNlOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiBiYXNlUmVm
ZXJlbmNlKCkgeyByZXR1cm4gbV9iYXNlOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRh
a2VCYXNlKCkgeyByZXR1cm4gV1RGTW92ZShtX2Jhc2UpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19
Ci0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ0ODc3ZGYyMmVkMjE2ZDZlMGYwM2Y0N2Y0Y2YxZjQ4ODM3YjljODIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotZW51bSBjbGFzcyBRdWFsaWZpZXIgOiB1
aW50OF90IHsKLSAgICBOb2ludGVycG9sYXRpb24sCi0gICAgTm9wZXJzcGVjdGl2ZSwKLSAgICBV
bmlmb3JtLAotICAgIENlbnRyb2lkLAotICAgIFNhbXBsZQotfTsKLQotdXNpbmcgUXVhbGlmaWVy
cyA9IFZlY3RvcjxRdWFsaWZpZXI+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUx
MDNlYzhkMTgwYzhiNTljZDFkYjE0Y2Y1ZDU2N2FiMDUxNjllNWYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2lu
Y2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFi
bGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLS8qCi0gKiAgMS4gRXZh
bHVhdGUgbV9sZWZ0VmFsdWUKLSAqICAyLiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX29sZFZhbHVl
Ci0gKiAgMy4gRXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Npb24KLSAqICA0LiBBc3NpZ24gdGhl
IHJlc3VsdCB0byBtX25ld1ZhbHVlCi0gKiAgNS4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9sZWZ0
VmFsdWUKLSAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Npb24KLSAqICA3LiBSZXR1cm4g
dGhlIHJlc3VsdAotICovCi1jbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OlJlYWRNb2RpZnlXcml0ZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZN
b3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlh
YmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygp
LCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8
VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3Ry
aW5nKCksIG51bGxwdHIsIG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+IGxlZnRWYWx1ZSwgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG9sZFZhbHVlLCBV
bmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbmV3VmFsdWUpCi0gICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbiwgS2luZDo6UmVhZE1vZGlmeVdyaXRlKQotICAgICAgICAsIG1fbGVmdFZh
bHVlKFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX29sZFZhbHVlKFdURk1vdmUob2xk
VmFsdWUpKQotICAgICAgICAsIG1fbmV3VmFsdWUoV1RGTW92ZShuZXdWYWx1ZSkpCi0gICAgewot
ICAgIH0KLQotCi0gICAgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0K
LSAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKGNvbnN0IFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKLSAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgdm9pZCBzZXROZXdWYWx1ZUV4
cHJlc3Npb24oVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbmV3VmFsdWVFeHByZXNzaW9uKQotICAg
IHsKLSAgICAgICAgbV9uZXdWYWx1ZUV4cHJlc3Npb24gPSBXVEZNb3ZlKG5ld1ZhbHVlRXhwcmVz
c2lvbik7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSZXN1bHRFeHByZXNzaW9uKFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIHJlc3VsdEV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBtX3Jlc3VsdEV4
cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3VsdEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIFVuaXF1
ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4gb2xkVmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVm
ZXJlbmNlOjp3cmFwKG1fb2xkVmFsdWUpKTsKLSAgICB9Ci0KLSAgICBVbmlxdWVSZWY8VmFyaWFi
bGVSZWZlcmVuY2U+IG5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5jZTo6d3Jh
cChtX25ld1ZhbHVlKSk7Ci0gICAgfQotCi0gICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyBy
ZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mIGxlZnRWYWx1
ZVJlZmVyZW5jZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0gICAgVmFyaWFibGVEZWNsYXJh
dGlvbiYgb2xkVmFsdWUoKSB7IHJldHVybiBtX29sZFZhbHVlOyB9Ci0gICAgVmFyaWFibGVEZWNs
YXJhdGlvbiYgbmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9Ci0gICAgRXhwcmVzc2lv
biYgbmV3VmFsdWVFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX25ld1ZhbHVl
RXhwcmVzc2lvbik7Ci0gICAgICAgIHJldHVybiAqbV9uZXdWYWx1ZUV4cHJlc3Npb247Ci0gICAg
fQotICAgIEV4cHJlc3Npb24mIHJlc3VsdEV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fcmVzdWx0RXhwcmVzc2lvbik7Ci0gICAgICAgIHJldHVybiAqbV9yZXN1bHRFeHByZXNz
aW9uOwotICAgIH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZUxlZnRWYWx1ZSgpIHsg
cmV0dXJuIFdURk1vdmUobV9sZWZ0VmFsdWUpOyB9Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+IHRha2VPbGRWYWx1ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9vbGRWYWx1ZSk7IH0K
LSAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gdGFrZU5ld1ZhbHVlKCkgeyByZXR1
cm4gV1RGTW92ZShtX25ld1ZhbHVlKTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtl
TmV3VmFsdWVFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gV1RGTW92
ZShtX25ld1ZhbHVlRXhwcmVzc2lvbi52YWx1ZSgpKTsKLSAgICAgICAgbV9uZXdWYWx1ZUV4cHJl
c3Npb24ucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IHRha2VSZXN1bHRFeHByZXNzaW9uKCkKLSAgICB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gV1RGTW92ZShtX3Jlc3VsdEV4cHJlc3Npb24udmFsdWUoKSk7Ci0gICAgICAg
IG1fcmVzdWx0RXhwcmVzc2lvbi5yZXNldCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7Ci0g
ICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xkVmFsdWU7Ci0gICAgVW5pcXVl
UmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7Ci0gICAgc3RkOjpvcHRpb25hbDxV
bmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fbmV3VmFsdWVFeHByZXNzaW9uOwotICAgIHN0ZDo6b3B0
aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX3Jlc3VsdEV4cHJlc3Npb247Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZl
cmVuY2VUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YWNkMzE1YzFjMjE0
MzU3OWVhNWQwZDJlMDI1YjVlYzRlZjBlNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVmZXJlbmNlVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBVbm5hbWVk
VHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVmZXJlbmNlVHlwZSk7Ci0KLXByb3RlY3RlZDoKLSAgICB+UmVmZXJlbmNlVHlwZSgp
ID0gZGVmYXVsdDsKLQotcHJvdGVjdGVkOgotICAgIFJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVs
ZW1lbnRUeXBlLCBLaW5kIGtpbmQpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIGtp
bmQpCi0gICAgICAgICwgbV9hZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQotICAgICAgICAsIG1f
ZWxlbWVudFR5cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCi0gICAgewotICAgIH0KLQotCi1wdWJs
aWM6Ci0gICAgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRk
cmVzc1NwYWNlOyB9Ci0gICAgY29uc3QgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgp
IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIH5tX2VsZW1lbnRUeXBlLT5oYXNoKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFkZHJlc3NTcGFjZSBtX2FkZHJlc3NTcGFjZTsKLSAgICBSZWY8VW5uYW1l
ZFR5cGU+IG1fZWxlbWVudFR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShSZWZlcmVuY2VUeXBlKQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1RZUEUoUmVmZXJlbmNlVHlwZSwgaXNSZWZlcmVuY2VUeXBlKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUxNGZiY2M4ZTdiZDAxZjNkZjA1MTNjNDAzZWRi
ZmNiY2E2ZjdhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0
aC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTmV3LCB0eXBlbmFtZSBPbGQsIHR5cGVuYW1lIC4uLkFyZ3M+Ci1BTFdBWVNfSU5MSU5F
IE5ldyogcmVwbGFjZVdpdGgoT2xkJiBvbGQsIEFyZ3MmJi4uLiBhcmdzKQotewotICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKE5ldykgPD0gc2l6ZW9mKE9sZCksICJUaGlzIGlzIG5lZWRlZCBmb3Ig
dGhlIHBsYWNlbWVudCBuZXcgYmVsb3cgdG8gbm90IG92ZXJ3cml0ZSB1bm93bmVkIG1lbW9yeS4i
KTsKLSAgICB2b2lkKiBsb2NhdGlvbiA9ICZvbGQ7Ci0gICAgT2xkOjpkZXN0cnVjdChvbGQpOwot
ICAgIHJldHVybiBuZXcgKGxvY2F0aW9uKSBOZXcoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKLX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OldITFNMOjpBU1QKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjJhMWQ3ZWNjZWUxMjQxODg1NWRlNTE0NzRmZWU5
YTI0YmI2MTZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVU
eXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJlc29sdmFibGVUeXBl
IDogcHVibGljIFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgflJlc29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gICAgUmVz
b2x2YWJsZVR5cGUoS2luZCBraW5kKQotICAgICAgICA6IFR5cGUoa2luZCkKLSAgICB7IH0KLQot
Ci0gICAgUmVzb2x2YWJsZVR5cGUoY29uc3QgUmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKLSAg
ICBSZXNvbHZhYmxlVHlwZShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBSZXNv
bHZhYmxlVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7Ci0g
ICAgUmVzb2x2YWJsZVR5cGUmIG9wZXJhdG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVuc2lnbmVk
IGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBjb25zdCBV
bm5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
VHlwZSA/ICYqbV9yZXNvbHZlZFR5cGUgOiBudWxscHRyOyB9Ci0gICAgY29uc3QgVW5uYW1lZFR5
cGUmIHJlc29sdmVkVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZl
ZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIFVu
bmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8g
JiptX3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KLSAgICBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRU
eXBlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJl
dHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAgfQotCi0gICAgdm9pZCByZXNvbHZlKFJlZjxVbm5h
bWVkVHlwZT4gdHlwZSkKLSAgICB7Ci0gICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gV1RGTW92ZSh0
eXBlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3Jlc29s
dmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKFJlc29sdmFibGVUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1RZUEUoUmVzb2x2YWJsZVR5cGUsIGlzUmVzb2x2YWJsZVR5cGUoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NmU3YTJiZmY4YjE0ZmRiNjA4YWE0NDdk
YWM4YmI3ZjhjNzIxMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNz
U3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW5m
ZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNM
UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1ib29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAotewot
ICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3
OgotICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiByZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1l
ZFR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkg
PT0gQWRkcmVzc1NwYWNlOjpDb25zdGFudCB8fCByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgp
ID09IEFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpczxUeXBl
UmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVu
Y2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBp
ZiAoaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9u
Pih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKS5pc1RleHR1cmUoKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBNb2RlOjpUZXh0dXJlOgotICAgICAgICBp
ZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRy
ZXNzU3BhY2U6OkNvbnN0YW50OwotICAgICAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlw
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGlzPFR5cGVSZWZlcmVu
Y2U+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRv
d25jYXN0PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGlmIChpczxO
YXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLmlzVGV4dHVyZSgpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OkJ1ZmZlcjoKLSAgICAgICAgaWYgKGlzPFJl
ZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxS
ZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNl
OjpDb25zdGFudDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6U2FtcGxl
cjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Muc2FtcGxl
clR5cGUoKSk7Ci0gICAgfQotfQotCi1ib29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJs
ZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3QKLXsKLSAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OwotfQotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY4ZDVlZDM3ZThhYjk3ZmY3YTU5MDJkN2YxZWFlYmZhNjU1ZWFjMTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBSZXNvdXJjZVNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBNb2RlIDog
dWludDhfdCB7Ci0gICAgICAgIFVub3JkZXJlZEFjY2Vzc1ZpZXcsCi0gICAgICAgIFRleHR1cmUs
Ci0gICAgICAgIEJ1ZmZlciwKLSAgICAgICAgU2FtcGxlcgotICAgIH07Ci0KLSAgICBSZXNvdXJj
ZVNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgTW9kZSBtb2RlLCB1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgc3BhY2UpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQotICAg
ICAgICAsIG1fbW9kZShtb2RlKQotICAgICAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgICAgICwg
bV9zcGFjZShzcGFjZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+UmVzb3VyY2VTZW1h
bnRpYygpID0gZGVmYXVsdDsKLQotICAgIFJlc291cmNlU2VtYW50aWMoY29uc3QgUmVzb3VyY2VT
ZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIFJlc291cmNlU2VtYW50aWMoUmVzb3VyY2VTZW1hbnRp
YyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmdWaWV3IHRvU3RyaW5nKCkKLSAgICB7Ci0gICAg
ICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgICAgIGNhc2UgTW9kZTo6VW5vcmRlcmVkQWNjZXNz
VmlldzoKLSAgICAgICAgICAgIHJldHVybiAiVW5vcmRlcmVkQWNjZXNzVmlldyI7Ci0gICAgICAg
IGNhc2UgTW9kZTo6VGV4dHVyZToKLSAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZSI7Ci0gICAg
ICAgIGNhc2UgTW9kZTo6QnVmZmVyOgotICAgICAgICAgICAgcmV0dXJuICJCdWZmZXIiOwotICAg
ICAgICBjYXNlIE1vZGU6OlNhbXBsZXI6Ci0gICAgICAgICAgICByZXR1cm4gIlNhbXBsZXIiOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
OyB9Ci0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAg
dW5zaWduZWQgc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VTZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9tb2RlID09IG90aGVyLm1fbW9kZSAmJiBtX2luZGV4ID09IG90aGVyLm1f
aW5kZXggJiYgbV9zcGFjZSA9PSBvdGhlci5tX3NwYWNlOwotICAgIH0KLQotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0
YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRl
ckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29u
c3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgTW9kZSBtX21vZGU7Ci0gICAgdW5zaWduZWQg
bV9pbmRleDsKLSAgICB1bnNpZ25lZCBtX3NwYWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiYjU2YmM4MGY4MDUwOWI4OGYxNGM2YmVh
NzlmOTI4NmVkYTQyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBSZXR1cm4gZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZXR1cm4oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2YWx1ZSkKLSAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlJldHVybikKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1v
dmUodmFsdWUpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+UmV0dXJuKCkgPSBkZWZhdWx0OwotCi0g
ICAgUmV0dXJuKGNvbnN0IFJldHVybiYpID0gZGVsZXRlOwotICAgIFJldHVybihSZXR1cm4mJikg
PSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlLmdl
dCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fdmFs
dWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxU
X0RFTEVURShSZXR1cm4pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5U
KFJldHVybiwgaXNSZXR1cm4oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTZW1hbnRpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTdiYTYyYmUwZDU3
ZmI0YWMxOTdkNzJkNDA0MDg2ZDUyNTcyZTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1h
bnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi11c2luZyBTZW1hbnRpYyA9IFZhcmlhbnQ8QnVpbHRJblNlbWFudGlj
LCBSZXNvdXJjZVNlbWFudGljLCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMsIFN0YWdl
SW5PdXRTZW1hbnRpYz47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxNGYwMTUzOTRlMWY2NmVhNjc0NTc0MWQ3MDc5OWQ2YTJkNWJlYTRkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1ib29sIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlw
ZShjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25z
dAotewotICAgIGlmICghaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZl
cmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
dHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJl
c29sdmVkVHlwZSgpKS5pc051bWJlcigpOwotfQotCi1ib29sIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVt
RGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4m
KSBjb25zdAotewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6
SW5wdXQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2Mzll
YzE5NmY4OTk1YzIwOTVlZDFlMmMwNGY4OGZlODhkMWM4ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgot
I2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIDogcHVibGlj
IEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbikK
LSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHZp
cnR1YWwgflNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAg
IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FjY2VwdGFibGVUeXBl
KGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGly
ZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJy
aWRlOwotCi1wcml2YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZGM2NDk2NWIzMjMx
NjU1MDllYzYxY2NlMmRiNGE5NjgwZWJkMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWJvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNv
bnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzPEFycmF5VHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAoIWlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgYXV0byYgcmVzb2x2ZWRUeXBlID0gdHlwZVJlZmVyZW5j
ZS5yZXNvbHZlZFR5cGUoKTsKLSAgICBpZiAoaXM8RW51bWVyYXRpb25EZWZpbml0aW9uPihyZXNv
bHZlZFR5cGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1
dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5pc051bWJlcigpCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5p
c1ZlY3RvcigpCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJpeCgpOwot
fQotCi1ib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURp
cmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAotewotICAgIHN3aXRjaCAo
KmVudHJ5UG9pbnRUeXBlKSB7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKLSAg
ICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGUyM2NhYTRkN2UyMTJmNjJhMGM1MzZhN2UzYWM5
ZjRhMTM3OTcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6
IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2ln
bmVkIGluZGV4KQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICAgICAgLCBt
X2luZGV4KGluZGV4KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5TdGFnZUluT3V0U2Vt
YW50aWMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGFnZUluT3V0U2VtYW50aWMoY29uc3QgU3RhZ2VJ
bk91dFNlbWFudGljJikgPSBkZWxldGU7Ci0gICAgU3RhZ2VJbk91dFNlbWFudGljKFN0YWdlSW5P
dXRTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdGFnZUluT3V0
U2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPT0g
b3RoZXIubV9pbmRleDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RhZ2VJ
bk91dFNlbWFudGljJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5u
YW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7Ci0KLXBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZGNmZDc2M2ZhMWNlODhjY2UyNDA4
MDA1NzYxNzhiNTcyNTY2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgU3RhdGVtZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQotcHJv
dGVjdGVkOgotICAgIH5TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBlbnVt
IGNsYXNzIEtpbmQgOiB1aW50OF90IHsKLSAgICAgICAgQmxvY2ssCi0gICAgICAgIEJyZWFrLAot
ICAgICAgICBDb250aW51ZSwKLSAgICAgICAgRG9XaGlsZUxvb3AsCi0gICAgICAgIEVmZmVjdGZ1
bEV4cHJlc3Npb24sCi0gICAgICAgIEZhbGx0aHJvdWdoLAotICAgICAgICBGb3JMb29wLAotICAg
ICAgICBJZiwKLSAgICAgICAgUmV0dXJuLAotICAgICAgICBTdGF0ZW1lbnRMaXN0LAotICAgICAg
ICBTd2l0Y2hDYXNlLAotICAgICAgICBTd2l0Y2gsCi0gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zLAotICAgICAgICBXaGlsZUxvb3AsCi0gICAgfTsKLSAgICBTdGF0ZW1lbnQoQ29kZUxvY2F0
aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGNv
ZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICB7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgZGVzdHJveShTdGF0ZW1lbnQmKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cnVj
dChTdGF0ZW1lbnQmKTsKLQotICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0
ZTsKLSAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKLQotICAgIEtpbmQga2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotCi0gICAgYm9vbCBpc0Jsb2NrKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJsb2NrOyB9Ci0gICAgYm9vbCBpc0JyZWFrKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJyZWFrOyB9Ci0gICAgYm9vbCBpc0NvbnRpbnVl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbnRpbnVlOyB9Ci0gICAgYm9vbCBp
c0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRvV2hpbGVMb29w
OyB9Ci0gICAgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQotICAgIGJvb2wgaXNG
YWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGYWxsdGhyb3VnaDsg
fQotICAgIGJvb2wgaXNGb3JMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZv
ckxvb3A7IH0KLSAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6SWY7IH0KLSAgICBib29sIGlzUmV0dXJuKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OlJldHVybjsgfQotICAgIGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0YXRlbWVudExpc3Q7IH0KLSAgICBib29sIGlzU3dpdGNo
Q2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2hDYXNlOyB9Ci0gICAg
Ym9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpT
d2l0Y2g7IH0KLSAgICBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KLSAgICBi
b29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OldoaWxlTG9v
cDsgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAg
ICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgS2luZCBtX2tpbmQ7Ci19OwotCi11
c2luZyBTdGF0ZW1lbnRzID0gVmVjdG9yPFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+PjsKLQotfQotCi19
Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0YXRlbWVudCkKLQotI2RlZmluZSBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRp
Y2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNU
OjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5w
cmVkaWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzAyNzM4NzNmMWE2MjA0ZTc5OTFlZTcx
NzMyNzA3NDQxNWZmNTYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVj
dHVyZURlZmluaXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBO
YW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0
cnVjdHVyZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBT
dHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlw
ZShLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAg
ICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUoc3RydWN0dXJlRWxlbWVudHMpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQot
ICAgIFN0cnVjdHVyZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVs
ZXRlOwotICAgIFN0cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50cyYgc3RydWN0dXJlRWxlbWVudHMoKSB7IHJl
dHVybiBtX3N0cnVjdHVyZUVsZW1lbnRzOyB9Ci0gICAgU3RydWN0dXJlRWxlbWVudCogZmluZChj
b25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpm
aW5kX2lmKG1fc3RydWN0dXJlRWxlbWVudHMuYmVnaW4oKSwgbV9zdHJ1Y3R1cmVFbGVtZW50cy5l
bmQoKSwgWyZdKFN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpID09IG5hbWU7Ci0gICAg
ICAgIH0pOwotICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9zdHJ1Y3R1cmVFbGVtZW50cy5lbmQo
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gJippdGVyYXRv
cjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RydWN0dXJlRWxlbWVudHMgbV9zdHJ1Y3R1cmVF
bGVtZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKFN0cnVjdHVyZURlZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShTdHJ1Y3R1cmVEZWZpbml0aW9uLCBpc1N0cnVjdHVyZURlZmluaXRpb24o
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVy
ZUVsZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjMjg2Y2YyZDAyZjNj
NDBkZWRjNmI4YTRhM2VjZDJmYTBkZWNhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUXVhbGlmaWVy
LmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMVHlwZS5oIgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBTdHJ1Y3R1cmVFbGVtZW50IGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVFbGVtZW50KENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1YWxpZmllcnMsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSwg
U3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljKQotICAg
ICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fcXVhbGlmaWVycyhX
VEZNb3ZlKHF1YWxpZmllcnMpKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAg
ICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fc2VtYW50aWMoV1RGTW92
ZShzZW1hbnRpYykpCi0gICAgewotICAgIH0KLQotICAgIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBk
ZWZhdWx0OwotCi0gICAgU3RydWN0dXJlRWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50Jikg
PSBkZWxldGU7Ci0gICAgU3RydWN0dXJlRWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVm
YXVsdDsKLQotICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQot
ICAgIFNlbWFudGljKiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWMuZ2V0KCk7IH0KLQot
cHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgUXVhbGlmaWVy
cyBtX3F1YWxpZmllcnM7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IG1fc2VtYW50aWM7Ci19Owot
Ci11c2luZyBTdHJ1Y3R1cmVFbGVtZW50cyA9IFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PjsKLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3dpdGNoQ2FzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZGFkYzdhNWM5ZWVhOTU1NWJkYTdjNDY0MjFiM2U4NWVhNGVkZjMyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMQmxvY2suaCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2Nh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBTd2l0Y2hDYXNlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3dpdGNoQ2FzZShDb2RlTG9jYXRpb24gbG9j
YXRpb24sIHN0ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYm
IGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoQ2FzZSkK
LSAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgICAgICAsIG1fYmxvY2soV1RG
TW92ZShibG9jaykpCi0gICAgewotICAgIH0KLQotICAgIH5Td2l0Y2hDYXNlKCkgPSBkZWZhdWx0
OwotCi0gICAgU3dpdGNoQ2FzZShjb25zdCBTd2l0Y2hDYXNlJikgPSBkZWxldGU7Ci0gICAgU3dp
dGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0gZGVmYXVsdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Q29u
c3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgQmxvY2sm
IGJsb2NrKCkgeyByZXR1cm4gbV9ibG9jazsgfQotCi1wcml2YXRlOgotICAgIHN0ZDo6b3B0aW9u
YWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOwotICAgIEJsb2NrIG1fYmxvY2s7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShT
d2l0Y2hDYXNlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0
Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYzMjkzMmEzMzhjYTljZjRiMzc0YTU2MTRlZmFmZmNmMDEyNTZkNGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTd2l0Y2hTdGF0ZW1lbnQoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiB2YWx1ZSwgVmVjdG9y
PFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpTd2l0Y2gpCi0gICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAg
ICAgLCBtX3N3aXRjaENhc2VzKFdURk1vdmUoc3dpdGNoQ2FzZXMpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgU3dpdGNoU3RhdGVtZW50
KGNvbnN0IFN3aXRjaFN0YXRlbWVudCYpID0gZGVsZXRlOwotICAgIFN3aXRjaFN0YXRlbWVudChT
d2l0Y2hTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7
IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygp
IHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gbV92YWx1ZTsKLSAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKFN3aXRjaFN0YXRlbWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoU3dpdGNoU3RhdGVtZW50LCBpc1N3aXRjaFN0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOGU0NDkyMjA1YzVlNzBjY2Y1OTJjODZkYjU3
YjAzMzE1YTEzODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4
cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBUZXJuYXJ5RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4
cHJlc3Npb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQotICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlRlcm5hcnkpCi0gICAgICAgICwgbV9wcmVk
aWNhdGUoV1RGTW92ZShwcmVkaWNhdGUpKQotICAgICAgICAsIG1fYm9keUV4cHJlc3Npb24oV1RG
TW92ZShib2R5RXhwcmVzc2lvbikpCi0gICAgICAgICwgbV9lbHNlRXhwcmVzc2lvbihXVEZNb3Zl
KGVsc2VFeHByZXNzaW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflRlcm5hcnlFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgVGVybmFyeUV4cHJlc3Npb24oY29uc3QgVGVybmFyeUV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKLSAgICBUZXJuYXJ5RXhwcmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lv
biYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiBt
X3ByZWRpY2F0ZTsgfQotICAgIEV4cHJlc3Npb24mIGJvZHlFeHByZXNzaW9uKCkgeyByZXR1cm4g
bV9ib2R5RXhwcmVzc2lvbjsgfQotICAgIEV4cHJlc3Npb24mIGVsc2VFeHByZXNzaW9uKCkgeyBy
ZXR1cm4gbV9lbHNlRXhwcmVzc2lvbjsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX3ByZWRpY2F0ZTsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9ib2R5RXhw
cmVzc2lvbjsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KFRlcm5hcnlFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWY4ODJkZDk5MWI4MGQ5ZjU1ZDVhMDFiY2IzOGIwOGM3NzhkZDk2ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
flR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50
OF90IHsKLSAgICAgICAgLy8gVW5uYW1lZFR5cGVzCi0gICAgICAgIFR5cGVSZWZlcmVuY2UsCi0g
ICAgICAgIFBvaW50ZXIsCi0gICAgICAgIEFycmF5UmVmZXJlbmNlLAotICAgICAgICBBcnJheSwK
LSAgICAgICAgLy8gTmFtZWRUeXBlcwotICAgICAgICBUeXBlRGVmaW5pdGlvbiwKLSAgICAgICAg
U3RydWN0dXJlRGVmaW5pdGlvbiwKLSAgICAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uLAotICAg
ICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24sCi0gICAgICAgIC8vIFJlc29sdmFibGVUeXBlcwot
ICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBV
bnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgIH07Ci0KLSAgICBUeXBlKEtpbmQga2luZCkKLSAg
ICAgICAgOiBtX2tpbmQoa2luZCkKLSAgICB7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFR5
cGUmKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cnVjdChUeXBlJik7Ci0KLSAgICBleHBsaWNpdCBU
eXBlKGNvbnN0IFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0Owot
Ci0gICAgVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBUeXBlJiBv
cGVyYXRvcj0oVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJl
dHVybiBtX2tpbmQ7IH0KLQotICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA+PSBLaW5kOjpUeXBlUmVmZXJlbmNlICYmIGtpbmQoKSA8PSBLaW5kOjpBcnJheTsg
fQotICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPj0gS2luZDo6
VHlwZURlZmluaXRpb24gJiYga2luZCgpIDw9IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsg
fQotICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBL
aW5kOjpGbG9hdExpdGVyYWwgJiYga2luZCgpIDw9IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWw7IH0KLQotICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UG9pbnRlcjsgfQotICAgIGJvb2wgaXNBcnJheVJl
ZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXlSZWZlcmVu
Y2U7IH0KLSAgICBib29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkFycmF5OyB9Ci0gICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBp
c1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgYm9vbCBp
c1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlR5cGVEZWZp
bml0aW9uOyB9Ci0gICAgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjsgfQotICAgIGJvb2wgaXNFbnVt
ZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RW51bWVy
YXRpb25EZWZpbml0aW9uOyB9Ci0gICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb247IH0KLQot
ICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkZsb2F0TGl0ZXJhbDsgfQotICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxpdGVyYWw7IH0KLSAgICBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQotCi0gICAgVHlwZSYgdW5pZnlOb2RlKCk7Ci0g
ICAgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBj
b25zdF9jYXN0PFR5cGUqPih0aGlzKS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEtpbmQgbV9raW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZSkKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBc
Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGUm
IHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
QXJndW1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRlMTBiZjc1NDI5
ZDg2NmY2NDQ1NTA1M2E5NDMxMTI4YmM3ZjVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVBcmd1bWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3Vt
ZW50LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENv
bnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qgewot
Ci1UeXBlQXJndW1lbnRzIGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMp
Ci17Ci0gICAgVHlwZUFyZ3VtZW50cyByZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBhdXRvJiB0eXBl
QXJndW1lbnQgOiB0eXBlQXJndW1lbnRzKQotICAgICAgICByZXN1bHQuYXBwZW5kKGNsb25lKHR5
cGVBcmd1bWVudCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVR5cGVBcmd1bWVudCBjbG9u
ZShjb25zdCBUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKLXsKLSAgICByZXR1cm4gV1RGOjp2
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbiYgY29uc3Rh
bnRFeHByZXNzaW9uKSAtPiBUeXBlQXJndW1lbnQgewotICAgICAgICByZXR1cm4gY29uc3RhbnRF
eHByZXNzaW9uLmNsb25lKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFR5cGVSZWZlcmVuY2U+JiB0
eXBlUmVmZXJlbmNlKSAtPiBUeXBlQXJndW1lbnQgewotICAgICAgICByZXR1cm4gdHlwZVJlZmVy
ZW5jZS5jb3B5UmVmKCk7Ci0gICAgfSksIHR5cGVBcmd1bWVudCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVBcmd1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZUFyZ3VtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmEzMmVi
NmViNTE4MWRmMzA2ODJiYTJlNGQyM2YyMjVkMzE3MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLQotdXNpbmcgVHlwZUFyZ3VtZW50
ID0gVmFyaWFudDxDb25zdGFudEV4cHJlc3Npb24sIFJlZjxUeXBlUmVmZXJlbmNlPj47Ci11c2lu
ZyBUeXBlQXJndW1lbnRzID0gVmVjdG9yPFR5cGVBcmd1bWVudD47Ci0KLVR5cGVBcmd1bWVudCBj
bG9uZShjb25zdCBUeXBlQXJndW1lbnQmKTsKLVR5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlw
ZUFyZ3VtZW50cyYpOwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI5MDU1N2JlZWVmYjBmZTRlMjBjYjE4ZjE4NmIyMTJj
NDNkYjg3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlv
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2Rl
TG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
VW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
Y2xhc3MgVHlwZURlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUeXBlRGVmaW5pdGlvbihDb2RlTG9j
YXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAg
ICAgICAgOiBOYW1lZFR5cGUoS2luZDo6VHlwZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3Zl
KG5hbWUpKQotICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+VHlwZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBUeXBlRGVmaW5pdGlvbihj
b25zdCBUeXBlRGVmaW5pdGlvbiYpID0gZGVsZXRlOwotICAgIFR5cGVEZWZpbml0aW9uKFR5cGVE
ZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlw
ZSYgdW5pZnlOb2RlSW1wbCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5v
ZGUoKTsKLSAgICB9Ci0KLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGVEZWZp
bml0aW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVHlwZURlZmluaXRp
b24sIGlzVHlwZURlZmluaXRpb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJiMzMxYzMyZDU1NDBmNjMxYzE0MWYyYmM0NjkxYTE4MjE4NGFlYmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQot
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotbmFtZXNwYWNlIEFTVCB7Ci0KLVJlZjxUeXBlUmVmZXJlbmNlPiBUeXBlUmVmZXJlbmNlOjp3
cmFwKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCi17Ci0g
ICAgVHlwZUFyZ3VtZW50cyB0eXBlQXJndW1lbnRzOwotICAgIGlmIChpczxOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KHJlc29sdmVkVHlwZSkpCi0gICAgICAgIHR5cGVBcmd1bWVudHMgPSBBU1Q6OmNs
b25lKGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKS50eXBlQXJn
dW1lbnRzKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0
aW9uLCBTdHJpbmcocmVzb2x2ZWRUeXBlLm5hbWUoKSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykp
OwotICAgIHJlc3VsdC0+c2V0UmVzb2x2ZWRUeXBlKHJlc29sdmVkVHlwZSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmNmRlZWVmZmVhYjA3ZDA0MDQ5YTg1NDYyNzc3MWNlZjMwNjJi
ZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2Nh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBl
QXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIE5hbWVkVHlwZTsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBV
bm5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVHlwZVJlZmVyZW5jZSk7Ci0gICAgVHlwZVJlZmVyZW5jZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRz
KQotICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpUeXBlUmVmZXJlbmNlKQot
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZUFyZ3VtZW50
cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQotICAgIHsKLSAgICB9Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxUeXBlUmVmZXJlbmNlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJp
bmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqIG5ldyBUeXBlUmVmZXJlbmNlKGxvY2F0aW9uLCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKSk7Ci0gICAgfQotCi0gICAgflR5cGVSZWZlcmVu
Y2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29k
ZUxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSk7Ci0KLSAgICBTdHJpbmcmIG5hbWUo
KSB7IHJldHVybiBtX25hbWU7IH0KLSAgICBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkg
eyByZXR1cm4gbV90eXBlQXJndW1lbnRzOyB9Ci0gICAgTmFtZWRUeXBlKiBtYXliZVJlc29sdmVk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlOyB9Ci0gICAgTmFtZWRUeXBlJiBy
ZXNvbHZlZFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBl
KTsKLSAgICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dFJlc29sdmVkVHlwZShOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSkKLSAgICB7Ci0gICAgICAgIG1f
cmVzb2x2ZWRUeXBlID0gJnJlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSB1c2UgdGhpcyBm
dW5jdGlvbiBhZnRlciB0aGUgbmFtZSByZXNvbHZlciBydW5zLgotICAgICAgICAvLyBSZWx5aW5n
IG9uIGhhdmluZyBhIHJlc29sdmVkIHR5cGUgc2ltcGxpZmllcyB0aGlzIGltcGxlbWVudGF0aW9u
LgotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gV1RGOjpQ
dHJIYXNoPGNvbnN0IFR5cGUqPjo6aGFzaCgmdW5pZnlOb2RlKCkpOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUeXBlUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiAmdW5pZnlOb2Rl
KCkgPT0gJm90aGVyLnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICBy
ZXR1cm4gbV9yZXNvbHZlZFR5cGUtPm5hbWUoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpCi0gICAgewotICAgICAg
ICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUt
PnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVHlwZUFyZ3Vt
ZW50cyBtX3R5cGVBcmd1bWVudHM7Ci0gICAgTmFtZWRUeXBlKiBtX3Jlc29sdmVkVHlwZSB7IG51
bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RF
RkFVTFRfREVMRVRFKFR5cGVSZWZlcmVuY2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfVFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWQ5MGU3ODQyNTEzNzQ5YTk4ZWFmNmJmY2ZkZWJjMjY3MDNkNDc3
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXVuc2lnbmVkIFVubmFtZWRUeXBl
OjpoYXNoKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKGtpbmQoKSkgewotICAgIGNhc2UgS2luZDo6
VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0
aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJl
ZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRo
aXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5OgotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8QXJyYXlUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1ib29sIFVubmFtZWRUeXBlOjpv
cGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAob3Ro
ZXIua2luZCgpICE9IGtpbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNo
IChraW5kKCkpIHsKLSAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVy
biBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykgPT0gZG93bmNhc3Q8VHlwZVJlZmVyZW5j
ZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFBvaW50ZXJUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8UG9pbnRlclR5cGU+KG90aGVyKTsK
LSAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBl
PihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheToKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEFycmF5VHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5VHlwZT4ob3RoZXIpOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1l
ZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
bmFtZWRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ODFlNWUzODc5NDFj
NjI4N2U0ODdmMTI4NTU1NjRkM2UwZGRiOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5uYW1lZFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVW5uYW1lZFR5cGUg
OiBwdWJsaWMgVHlwZSwgcHVibGljIFJlZkNvdW50ZWQ8VW5uYW1lZFR5cGU+IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbm5hbWVkVHlw
ZSk7Ci1wdWJsaWM6Ci0gICAgVW5uYW1lZFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5k
IGtpbmQpCi0gICAgICAgIDogVHlwZShraW5kKQotICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxv
Y2F0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBUeXBlOwotICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQotICAg
IENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFVubmFtZWRUeXBlKQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVW5uYW1lZFR5cGUsIGlzVW5uYW1lZFR5cGUoKSkK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlSGFzaC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGVI
YXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NjdjMGQ3NGJiMjZmNDE5OGQx
NmY2MmE3YTNiNjdhNGJhNTJmNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGVIYXNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBVbm5hbWVk
VHlwZUtleSB7Ci1wdWJsaWM6Ci0gICAgVW5uYW1lZFR5cGVLZXkoKSA9IGRlZmF1bHQ7Ci0gICAg
VW5uYW1lZFR5cGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6
IG1fdHlwZShiaXR3aXNlX2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBVbm5hbWVkVHlwZUtleShBU1Q6OlVubmFt
ZWRUeXBlJiB0eXBlKQotICAgICAgICA6IG1fdHlwZSgmdHlwZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiAhbV90eXBlOyB9Ci0gICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBiaXR3
aXNlX2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9
Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLT5oYXNoKCk7IH0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGVLZXkmIG90aGVyKSBjb25zdCB7
IHJldHVybiAqbV90eXBlID09ICpvdGhlci5tX3R5cGU7IH0KLSAgICBBU1Q6OlVubmFtZWRUeXBl
JiB1bm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuICptX3R5cGU7IH0KLQotICAgIHN0cnVjdCBI
YXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVW5uYW1lZFR5cGVLZXkm
IGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVbm5hbWVkVHlwZUtleSYgYSwgY29uc3QgVW5uYW1lZFR5cGVLZXkmIGIpIHsgcmV0dXJu
IGEgPT0gYjsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gdHJ1ZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFRyYWl0cyA6IHB1YmxpYyBXVEY6
OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxVbm5hbWVkVHlwZUtleT4gewotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgIHN0YXRp
YyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBVbm5hbWVkVHlwZUtleSYga2V5KSB7IHJldHVybiBr
ZXkuaXNFbXB0eVZhbHVlKCk7IH0KLSAgICB9OwotCi1wcml2YXRlOgotICAgIEFTVDo6VW5uYW1l
ZFR5cGUqIG1fdHlwZSB7IG51bGxwdHIgfTsKLX07Ci0KLX0KLQotfQotCi1uYW1lc3BhY2UgV1RG
IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpXSExTTDo6VW5uYW1l
ZFR5cGVLZXk+IDogV2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5OjpUcmFpdHMgeyB9Owot
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBl
S2V5PiA6IFdlYkNvcmU6OldITFNMOjpVbm5hbWVkVHlwZUtleTo6SGFzaCB7IH07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDdhZmI0MTgyNjJmNzhjMTE5OGYzZTg4MTMwYzgwNjYzMDQ5MTc3Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1pbnQ2
NF90IFVuc2lnbmVkSW50ZWdlckxpdGVyYWw6OnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QK
LXsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4obV90
eXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBk
b3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBl
KCkpOwotICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tVW5z
aWduZWRJbnRlZ2VyKCkobV92YWx1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAw
MTZlNWMyMjcyMTk0NjM0YzRhMDc2NGZmN2Q2MTM0NjJlNDQ3OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWdu
ZWQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQotICAgICAg
ICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5VbnNpZ25lZEludGVnZXJM
aXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBV
bnNpZ25lZEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbChVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikg
PSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICB1bnNpZ25lZCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgY2xv
bmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCByZXN1bHQo
Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBl
LmNsb25lKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVS
ZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9j
YXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBl
VG8ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBpbnQ2NF90
IHZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOwotICAgIHVuc2lnbmVkIG1fdmFsdWU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShVbnNp
Z25lZEludGVnZXJMaXRlcmFsKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk1ZDIxZmFhMDRlNDc4MWEwMjEwYzNkNDRhOTc2NTViMDI1NDNhNmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMu
aCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNp
Z25lZCB2YWx1ZSkKLSAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwpCi0gICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVS
ZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgInVpbnQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkK
LXsKLX0KLQotYm9vbCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25z
dCBUeXBlJiB0eXBlKSBjb25zdAotewotICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVk
VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlw
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgaWYg
KCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNJbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzU2lnbmVkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5jYW5SZXByZXNlbnRVbnNp
Z25lZEludGVnZXIoKShtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi11bnNpZ25lZCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlm
IChtYXRjaGVzKHVubmFtZWRUeXBlLCBtX3ByZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gMTsKLX0KLQotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24oKSwgbV92
YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAg
ICByZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlwZSkpOwot
ICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJlZigpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
YTdlZDM5Zjg4ZGY0ODU1NmYwYTc4M2IyMWEzNGJkNDg1NDJmNzI1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVSZWZl
cmVuY2U7Ci0KLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGlj
IFJlc29sdmFibGVUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIHVuc2lnbmVkIHZh
bHVlKTsKLQotICAgIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQot
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJikgPSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYp
ID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiBwcmVm
ZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9Ci0KLSAgICBib29sIGNhblJl
c29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3Q7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fdmFsdWU7Ci0gICAg
Ly8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kg
YmV0d2VlbgotICAgIC8vIENvbnN0YW50RXhwcmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBl
UmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRFeHByZXNzaW9uCi0gICAgUmVm
PFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVycmVkVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxOGI2Y2RkYmE0MWM5YzYwNTAx
YTJmOTBlMzY5NzM5OTZkOGM5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIK
LSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5j
bHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBmaW5hbCB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0vLyBGaW5hbCBiZWNhdXNlIHdlIG1hZGUg
dGhlIGRlc3RydWN0b3Igbm9uLXZpcnR1YWwuCi1wdWJsaWM6Ci0gICAgc3RydWN0IFJhcmVEYXRh
IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBSYXJl
RGF0YShRdWFsaWZpZXJzJiYgcXVhbGlmaWVyc0FyZ3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2Vt
YW50aWM+JiYgc2VtYW50aWNBcmd1bWVudCkKLSAgICAgICAgICAgIDogcXVhbGlmaWVycyhXVEZN
b3ZlKHF1YWxpZmllcnNBcmd1bWVudCkpCi0gICAgICAgICAgICAsIHNlbWFudGljKFdURk1vdmUo
c2VtYW50aWNBcmd1bWVudCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBRdWFsaWZp
ZXJzIHF1YWxpZmllcnM7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gc2VtYW50
aWM7Ci0gICAgfTsKLQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGNvZGVM
b2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1YWxpZmllcnMsIFJlZlB0cjxVbm5hbWVkVHlwZT4gdHlw
ZSwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljLCBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBpbml0aWFsaXplcikKLSAgICAgICAgOiBtX2Nv
ZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkp
Ci0gICAgICAgICwgbV9pbml0aWFsaXplcihXVEZNb3ZlKGluaXRpYWxpemVyKSkKLSAgICAgICAg
LCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICB7Ci0gICAgICAgIGlmIChzZW1hbnRpYyB8fCAh
cXVhbGlmaWVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxSYXJlRGF0YT4oV1RGTW92ZShxdWFsaWZpZXJzKSwgV1RGTW92ZShzZW1hbnRpYykpOwotICAg
IH0KLQotICAgIH5WYXJpYWJsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgVmFyaWFi
bGVEZWNsYXJhdGlvbihjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7Ci0gICAg
VmFyaWFibGVEZWNsYXJhdGlvbihWYXJpYWJsZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKLQot
ICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgLy8gV2UgdXNlIHRo
aXMgZm9yIFJlYWRNb2RpZnlXcml0ZSBleHByZXNzaW9ucywgc2luY2Ugd2UgZG9uJ3Qga25vdyB0
aGUgdHlwZSBvZiB0aGVpcgotICAgIC8vIGludGVybmFsIHZhcmlhYmxlcyB1bnRpbCB0aGUgY2hl
Y2tlciBydW5zLiBBbGwgb3RoZXIgdmFyaWFibGVzIHNob3VsZCBzdGFydCBsaWZlIG91dAotICAg
IC8vIHdpdGggYSB0eXBlLgotICAgIHZvaWQgc2V0VHlwZShSZWY8VW5uYW1lZFR5cGU+IHR5cGUp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fdHlwZSk7Ci0gICAgICAgIG1fdHlwZSA9IFdURk1v
dmUodHlwZSk7Ci0gICAgfQotICAgIGNvbnN0IFJlZlB0cjxVbm5hbWVkVHlwZT4mIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBVbm5hbWVkVHlwZSogdHlwZSgpIHsgcmV0dXJu
IG1fdHlwZSA/ICYqbV90eXBlIDogbnVsbHB0cjsgfQotICAgIEV4cHJlc3Npb24qIGluaXRpYWxp
emVyKCkgeyByZXR1cm4gbV9pbml0aWFsaXplci5nZXQoKTsgfQotICAgIGJvb2wgaXNBbm9ueW1v
dXMoKSBjb25zdCB7IHJldHVybiBtX25hbWUuaXNOdWxsKCk7IH0KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4gdGFrZUluaXRpYWxpemVyKCkgeyByZXR1cm4gV1RGTW92ZShtX2luaXRp
YWxpemVyKTsgfQotICAgIHZvaWQgc2V0SW5pdGlhbGl6ZXIoc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+IGV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIWluaXRpYWxpemVyKCkp
OwotICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbik7Ci0gICAgICAgIG1faW5pdGlhbGl6ZXIgPSBX
VEZNb3ZlKGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLQotICAgIFNlbWFudGljKiBzZW1h
bnRpYygpIHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5zZW1hbnRpYy5nZXQoKSA6
IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247
Ci0gICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+IG1faW5pdGlhbGl6ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBt
X3JhcmVEYXRhIHsgbnVsbHB0ciB9OwotICAgIFN0cmluZyBtX25hbWU7Ci19OwotCi11c2luZyBW
YXJpYWJsZURlY2xhcmF0aW9ucyA9IFZlY3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlv
bj4+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMjhjNGIyY2Zk
NDJlOTMzMWFhODU2Zjk0YTZmODI0NGVmNWU5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBB
U1QgewotCi1jbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFy
aWFibGVEZWNsYXJhdGlvbnMmJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBTdGF0
ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICAsIG1f
dmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9ucykpCi0gICAg
ewotICAgIH0KLQotICAgIH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpID0gZGVmYXVs
dDsKLQotICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0g
ICAgVmVjdG9yPFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFy
YXRpb25zKCkgeyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQotCi1wcml2YXRlOgot
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4Y2JkMDZhY2FlMWZlZWVhNzA1MTdiOGRmOGNiODY3ZGQ5MzZjOTZmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJp
YWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlv
biwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFt
ZSkpCi0gICAgewotICAgIH0KLQotICAgIH5WYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsK
LQotICAgIFZhcmlhYmxlUmVmZXJlbmNlKGNvbnN0IFZhcmlhYmxlUmVmZXJlbmNlJikgPSBkZWxl
dGU7Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoVmFyaWFibGVSZWZlcmVuY2UmJikgPSBkZWZhdWx0
OwotCi0gICAgc3RhdGljIFZhcmlhYmxlUmVmZXJlbmNlIHdyYXAoVmFyaWFibGVEZWNsYXJhdGlv
biYgdmFyaWFibGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIFZhcmlhYmxlUmVmZXJlbmNl
IHJlc3VsdCh2YXJpYWJsZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlvbigpKTsKLSAgICAgICAgcmVz
dWx0Lm1fdmFyaWFibGUgPSAmdmFyaWFibGVEZWNsYXJhdGlvbjsKLSAgICAgICAgcmVzdWx0Lm1f
bmFtZSA9IHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAg
VmFyaWFibGVEZWNsYXJhdGlvbiogdmFyaWFibGUoKSB7IHJldHVybiBtX3ZhcmlhYmxlOyB9Ci0K
LSAgICB2b2lkIHNldFZhcmlhYmxlKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFy
YXRpb24pCi0gICAgewotICAgICAgICBtX3ZhcmlhYmxlID0gJnZhcmlhYmxlRGVjbGFyYXRpb247
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJl
ZmVyZW5jZSkKLSAgICB7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYWJs
ZURlY2xhcmF0aW9uKiBtX3ZhcmlhYmxlIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVSZWZlcmVu
Y2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihWYXJpYWJsZVJl
ZmVyZW5jZSwgaXNWYXJpYWJsZVJlZmVyZW5jZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMV2hpbGVMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDQxOTY0OWIxNTRmMzAxOWNhODk3ZWFiY2JiNDFiZDhlNjRkYmQyNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFdoaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1l
bnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdoaWxlTG9v
cChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlv
bmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxv
Y2F0aW9uLCBLaW5kOjpXaGlsZUxvb3ApCi0gICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3Zl
KGNvbmRpdGlvbmFsKSkKLSAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKLQotICAgIFdoaWxlTG9vcChjb25z
dCBXaGlsZUxvb3AmKSA9IGRlbGV0ZTsKLSAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVm
YXVsdDsKLQotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRp
b25hbDsgfQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQotCi1wcml2
YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwotICAgIFVuaXF1
ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0K
LX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFdoaWxlTG9vcCkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoV2hpbGVMb29wLCBpc1doaWxlTG9vcCgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjExM2Ew
NjE4YmExYzI3MTM4OGVmMWQ0NGIwYWIwZTU2MTY5ODM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDYyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgotI2luY2x1ZGUgIldI
TFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBvaW50
SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5o
IgotI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0
YXRpYyBTdHJpbmcgYXR0cmlidXRlRm9yU2VtYW50aWMoQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1
aWx0SW5TZW1hbnRpYykKLXsKLSAgICBzd2l0Y2ggKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgp
KSB7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJ
RDoKLSAgICAgICAgcmV0dXJuICJbW2luc3RhbmNlX2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6
QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAgcmV0dXJuICJb
W3ZlcnRleF9pZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlBTaXplOgotICAgICAgICByZXR1cm4gIltbcG9pbnRfc2l6ZV1dIl9zdHI7Ci0gICAgY2Fz
ZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJl
dHVybiAiW1twb3NpdGlvbl1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVybiAiW1tmcm9udF9mYWNpbmdd
XSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBs
ZUluZGV4OgotICAgICAgICByZXR1cm4gIltbc2FtcGxlX2lkXV0iX3N0cjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICBy
ZXR1cm4gIltbc2FtcGxlX21hc2tdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50
aWM6OlZhcmlhYmxlOjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIltbY29s
b3IoIiwgKmJ1aWx0SW5TZW1hbnRpYy50YXJnZXRJbmRleCgpLCAiKV1dIik7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiAi
W1tkZXB0aChhbnkpXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJbW3NhbXBsZV9tYXNrXV0iX3N0cjsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVh
ZElEOgotICAgICAgICByZXR1cm4gIltbdGhyZWFkX3Bvc2l0aW9uX2luX2dyaWRdXSJfc3RyOwot
ICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAg
ICAgIHJldHVybiAiW1t0aHJlYWRncm91cF9wb3NpdGlvbl9pbl9ncmlkXV0iX3N0cjsKLSAgICBj
YXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgotICAgICAg
ICByZXR1cm4gIltbdGhyZWFkX2luZGV4X2luX3RocmVhZGdyb3VwXV0iX3N0cjsKLSAgICBkZWZh
dWx0OgotICAgICAgICBBU1NFUlQoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1
cm4gIltbdGhyZWFkX3Bvc2l0aW9uX2luX3RocmVhZGdyb3VwXV0iX3N0cjsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBTdHJpbmcgYXR0cmlidXRlRm9yU2VtYW50aWMoQVNUOjpTZW1hbnRpYyYgc2VtYW50
aWMpCi17Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50
aWM+KHNlbWFudGljKSkKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZUZvclNlbWFudGljKFdURjo6
Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPihzZW1hbnRpYykpOwotICAgIGF1dG8mIHN0YWdlSW5P
dXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYyk7
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIltbdXNlcih1c2VyIiwgc3RhZ2VJbk91dFNlbWFudGlj
LmluZGV4KCksICIpXV0iKTsKLX0KLQotRW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50
U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwg
SW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJ
dGVtcyYgZW50cnlQb2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJj
ZU1hcCwgTGF5b3V0JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgp
PiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkKLSAgICA6IG1fZnVuY3Rpb25EZWZpbml0aW9u
KGZ1bmN0aW9uRGVmaW5pdGlvbikKLSAgICAsIG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAg
ICwgbV90eXBlTmFtZXIodHlwZU5hbWVyKQotICAgICwgbV9lbnRyeVBvaW50SXRlbXMoZW50cnlQ
b2ludEl0ZW1zKQotICAgICwgbV9yZXNvdXJjZU1hcChyZXNvdXJjZU1hcCkKLSAgICAsIG1fbGF5
b3V0KGxheW91dCkKLSAgICAsIG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSkKLXsKLSAgICBtX25hbWVkQmluZEdyb3Vwcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fbGF5b3V0LnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xh
eW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBOYW1lZEJpbmRHcm91cCBuYW1lZEJpbmRHcm91
cDsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVy
YXRlTmV4dFR5cGVOYW1lKCk7Ci0gICAgICAgIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSA9
IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG5hbWVkQmluZEdyb3VwLmFy
Z3VtZW50QnVmZmVySW5kZXggPSBtX2xheW91dFtpXS5uYW1lOyAvLyBjb252ZXJ0TGF5b3V0KCkg
aW4gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBtYWtlcyBzdXJlIHRoZXNlIGRvbid0IGNvbGxp
ZGUuCi0gICAgICAgIG5hbWVkQmluZEdyb3VwLm5hbWVkQmluZGluZ3MucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKTsgKytqKSB7Ci0gICAgICAg
ICAgICBOYW1lZEJpbmRpbmcgbmFtZWRCaW5kaW5nOwotICAgICAgICAgICAgbmFtZWRCaW5kaW5n
LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5h
bWUoKTsKLSAgICAgICAgICAgIG5hbWVkQmluZGluZy5pbmRleCA9IG1fbGF5b3V0W2ldLmJpbmRp
bmdzW2pdLmludGVybmFsTmFtZTsKLSAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oVW5pZm9ybUJ1ZmZlckJpbmRpbmcmIHVuaWZvcm1CdWZmZXJCaW5kaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgTGVuZ3RoSW5mb3JtYXRpb24gbGVuZ3RoSW5mb3JtYXRpb24geyBtX3R5
cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpLCBtX2dlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpLCB1bmlmb3JtQnVmZmVyQmluZGluZy5sZW5ndGhOYW1lIH07Ci0gICAg
ICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmxlbmd0aEluZm9ybWF0aW9uID0gbGVuZ3RoSW5mb3Jt
YXRpb247Ci0gICAgICAgICAgICB9LCBbJl0oU2FtcGxlckJpbmRpbmcmKSB7Ci0gICAgICAgICAg
ICB9LCBbJl0oVGV4dHVyZUJpbmRpbmcmKSB7Ci0gICAgICAgICAgICB9LCBbJl0oU3RvcmFnZUJ1
ZmZlckJpbmRpbmcmIHN0b3JhZ2VCdWZmZXJCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgTGVu
Z3RoSW5mb3JtYXRpb24gbGVuZ3RoSW5mb3JtYXRpb24geyBtX3R5cGVOYW1lci5nZW5lcmF0ZU5l
eHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpLCBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpLCBz
dG9yYWdlQnVmZmVyQmluZGluZy5sZW5ndGhOYW1lIH07Ci0gICAgICAgICAgICAgICAgbmFtZWRC
aW5kaW5nLmxlbmd0aEluZm9ybWF0aW9uID0gbGVuZ3RoSW5mb3JtYXRpb247Ci0gICAgICAgICAg
ICB9KSwgbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0uYmluZGluZyk7Ci0gICAgICAgICAgICBuYW1l
ZEJpbmRHcm91cC5uYW1lZEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkQmlu
ZGluZykpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZWRCaW5kR3JvdXBzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKG5hbWVkQmluZEdyb3VwKSk7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPigqbV9l
bnRyeVBvaW50SXRlbXMuaW5wdXRzW2ldLnNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBOYW1lZEJ1aWx0SW4gbmFtZWRCdWlsdEluOwotICAgICAgICBuYW1lZEJ1aWx0
SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtcyA9IGk7Ci0gICAgICAgIG5hbWVkQnVpbHRJbi52YXJp
YWJsZU5hbWUgPSBtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICBtX25hbWVk
QnVpbHRJbnMuYXBwZW5kKFdURk1vdmUobmFtZWRCdWlsdEluKSk7Ci0gICAgfQotCi0gICAgbV9w
YXJhbWV0ZXJWYXJpYWJsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Z1bmN0aW9uRGVmaW5p
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgbV9w
YXJhbWV0ZXJWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCkpOwotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlSGVs
cGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5k
ZW50LCBTaGFkZXJTdGFnZSBzaGFkZXJTdGFnZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgInN0cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtc
biIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVu
dCk7Ci0gICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+PiBzdHJ1
Y3RJdGVtczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0u
YmluZGluZ3Muc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBiaW5kaW5nID0g
bV9sYXlvdXRbaV0uYmluZGluZ3Nbal07Ci0gICAgICAgICAgICAgICAgaWYgKCFiaW5kaW5nLnZp
c2liaWxpdHkuY29udGFpbnMoc2hhZGVyU3RhZ2UpKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdy
b3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1
dG8gaW5kZXggPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmluZGV4Owot
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGxlbmd0aEluZm9ybWF0aW9uID0gbV9uYW1lZEJpbmRH
cm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxlbmd0aEluZm9ybWF0
aW9uLT5pbmRleCwgbWFrZVN0cmluZygidWludDIgIiwgbGVuZ3RoSW5mb3JtYXRpb24tPmVsZW1l
bnROYW1lLCAiIFtbaWQoIiwgbGVuZ3RoSW5mb3JtYXRpb24tPmluZGV4LCAiKV1dOyIpKSk7Ci0K
LSAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZU1hcC5maW5kKCZtX2xh
eW91dFtpXS5iaW5kaW5nc1tqXSk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1f
cmVzb3VyY2VNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgdHlwZSA9IG1f
ZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBlLT51bmlm
eU5vZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHR5
cGUpICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4o
dHlwZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VUeXBlID0g
ZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPihkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih0
eXBlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRyZXNzU3BhY2UgPSB0b1N0cmluZyhy
ZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZyhhZGRyZXNz
U3BhY2UsICIgIiwgbWFuZ2xlZFR5cGVOYW1lLCAiKiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIs
IGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8QVNU
OjpOYW1lZFR5cGU+KHR5cGUpICYmIGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
dXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVk
VHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcobWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnRO
YW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBiaW5k
aW5nIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBzaGFkZXIgc291cmNlLgotICAgICAgICAgICAgICAg
ICAgICAvLyBIb3dldmVyLCB3ZSBtdXN0IHN0aWxsIGVtaXQgYSBwbGFjZWhvbGRlciwgc28gc3Vj
Y2Vzc2l2ZSBpdGVtcyBpbiB0aGUgYXJndW1lbnQgYnVmZmVyIHN0cnVjdCBoYXZlIHRoZSBjb3Jy
ZWN0IG9mZnNldC4KLSAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmluZGluZyBk
b2Vzbid0IGFwcGVhciBpbiB0aGUgc2hhZGVyIHNvdXJjZSwgd2UgZG9uJ3Qga25vdyB3aGljaCBl
eGFjdCB0eXBlIHRoZSBiaW5kIHBvaW50IHNob3VsZCBoYXZlLgotICAgICAgICAgICAgICAgICAg
ICAvLyBUaGVyZWZvcmUsIHdlIG11c3Qgc3ludGhlc2l6ZSBhIHR5cGUgb3V0IG9mIHRoaW4gYWly
LgotICAgICAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVu
aWZvcm1CdWZmZXJCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVt
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoImNvbnN0YW50IHZvaWQq
ICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSwgWyZdKFNhbXBsZXJCaW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoInNh
bXBsZXIgIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAg
ICAgICAgICAgICAgICB9LCBbJl0oVGV4dHVyZUJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMzg0IFdlIGRvbid0IGtub3cgd2hpY2ggdGV4dHVyZSB0eXBlIHRoZSBiaW5kaW5nIHJlcHJl
c2VudHMuIFRoaXMgaXMgbm8gZ29vZCB2ZXJ5IGJhZC4KLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygidGV4
dHVyZTJkPGZsb2F0PiAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0sIFsmXShTdG9yYWdlQnVmZmVyQmluZGluZykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlu
ZGV4LCBtYWtlU3RyaW5nKCJkZXZpY2Ugdm9pZCogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBp
bmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgICAgICAgICB9KSwgYmluZGluZy5iaW5kaW5n
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6OnNv
cnQoc3RydWN0SXRlbXMuYmVnaW4oKSwgc3RydWN0SXRlbXMuZW5kKCksIFtdKGNvbnN0IHN0ZDo6
cGFpcjx1bnNpZ25lZCwgU3RyaW5nPiYgbGVmdCwgY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkLCBT
dHJpbmc+JiByaWdodCkgewotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmln
aHQuZmlyc3Q7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RydWN0SXRlbSA6IHN0cnVjdEl0ZW1zKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGluZGVudCwgc3RydWN0SXRlbS5zZWNvbmQsICdcbicpOwotICAgICAgICB9Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn07XG5cbiIpOwotICAgIH0KLX0KLQot
Ym9vbCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZVNpZ25hdHVyZShTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgaW5jbHVkZVByZWNl
ZGluZ0NvbW1hKQotewotICAgIGlmICghbV9sYXlvdXQuc2l6ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoaW5jbHVkZVByZWNlZGluZ0NvbW1hID09IEluY2x1ZGVQcmVjZWRp
bmdDb21tYTo6WWVzKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAg
YXV0byYgbmFtZWRCaW5kR3JvdXAgPSBtX25hbWVkQmluZEdyb3Vwc1tpXTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoImRldmljZSAiLCBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lLCAi
JiAiLCBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUsICIgW1tidWZmZXIoIiwgbmFtZWRCaW5k
R3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCwgIildXSIpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIFN0cmluZ1ZpZXcgaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoY29uc3Qg
QVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKLXsKLSAgICBzd2l0Y2ggKGJ1
aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpKSB7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yzo6VmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBj
YXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAgICAg
cmV0dXJuICJ1aW50IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
UFNpemU6Ci0gICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2Vt
YW50aWM6OlZhcmlhYmxlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gImZsb2F0NCI7Ci0g
ICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSXNGcm9udEZhY2U6Ci0g
ICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFy
aWFibGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAg
cmV0dXJuICJ1aW50IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYzo6VmFyaWFibGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgIGNh
c2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICBy
ZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiAidWludDMiOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgIHJldHVybiAi
dWludDMiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3Vw
SW5kZXg6Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUKGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICAgICAgcmV0dXJuICJ1aW50MyI7Ci0gICAg
fQotfQotCi1ib29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEJ1aWx0SW5zU2lnbmF0dXJl
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSBpbmNs
dWRlUHJlY2VkaW5nQ29tbWEpCi17Ci0gICAgaWYgKCFtX25hbWVkQnVpbHRJbnMuc2l6ZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaW5jbHVkZVByZWNlZGluZ0NvbW1hID09
IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9uYW1lZEJ1aWx0SW5zLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgIik7Ci0gICAgICAgIGF1dG8mIG5hbWVkQnVpbHRJbiA9IG1fbmFtZWRCdWlsdElu
c1tpXTsKLSAgICAgICAgYXV0byYgaXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1l
ZEJ1aWx0SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc107Ci0gICAgICAgIGF1dG8mIGJ1aWx0SW5T
ZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqaXRlbS5zZW1hbnRpYyk7
Ci0gICAgICAgIGF1dG8gaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoYnVp
bHRJblNlbWFudGljKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbnRlcm5hbFR5cGUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJyAnLCBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFu
dGljKGJ1aWx0SW5TZW1hbnRpYykpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkSW5wdXRQYXRoKFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKQotewotICAgIEFTU0VSVCgh
cGF0aC5pc0VtcHR5KCkpOwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPm5hbWUoKSA9PSBwYXRoWzBdKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSk7Ci0gICAgICAgICAgICBhdXRvJiB1bmlmeU5vZGUg
PSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+dW5pZnlOb2Rl
KCk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4o
dW5pZnlOb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVChmb3VuZCk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDE7IGkgPCBwYXRoLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZp
bml0aW9uKTsKLSAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQo
cGF0aFtpXSk7Ci0gICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5l
eHQpKTsKLSAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1
dG8mIHVuaWZ5Tm9kZSA9IG5leHQtPnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlz
PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYW1lZFR5
cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAgIGlm
IChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAg
ICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNj
YWZmb2xkaW5nOjplbWl0TWFuZ2xlZE91dHB1dFBhdGgoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgVmVjdG9yPFN0cmluZz4mIHBhdGgpCi17Ci0gICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKLSAgICBhdXRvJiB1bmlmeU5vZGUg
PSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgc3RydWN0dXJl
RGVmaW5pdGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6
IHBhdGgpIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBh
dXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChjb21wb25lbnQpOwotICAgICAg
ICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7Ci0gICAgICAgIHN0
cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBu
ZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4o
dW5pZnlOb2RlKSkgewotICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNU
OjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgICAgICBpZiAoaXM8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZURlZmlu
aXRpb24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVu
cGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
ciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1f
cGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
bV9uYW1lZEJpbmRHcm91cHNbaV0udmFyaWFibGVOYW1lOwotICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZU1hcC5maW5kKCZtX2xheW91dFtpXS5iaW5kaW5n
c1tqXSk7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvdXJjZU1hcC5lbmQoKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX25hbWVkQmluZEdy
b3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFs
dWVdLnBhdGg7Ci0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5k
R3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAg
YXV0byBsZW5ndGhFbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGlu
Z3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24tPmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1
dG8gbGVuZ3RoVGVtcG9yYXJ5TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGlu
Z3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24tPnRlbXBvcmFyeU5hbWU7Ci0KLSAgICAgICAgICAgICAg
ICBhdXRvJiB1bm5hbWVkVHlwZSA9ICptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3It
PnZhbHVlXS51bm5hbWVkVHlwZTsKLSAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6OlJlZmVyZW5j
ZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLQotICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJzaXplX3Qg
IiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhF
bGVtZW50TmFtZSwgIi55O1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA8PCAzMjtcbiIsCi0g
ICAgICAgICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxl
bmd0aFRlbXBvcmFyeU5hbWUsICIgfCAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVu
dE5hbWUsICIueDtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgbGVuZ3RoVGVtcG9y
YXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgLyBzaXplb2YoIiwgbWFuZ2xl
ZFR5cGVOYW1lLCAiKTtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCwgImlmICgiLCBs
ZW5ndGhUZW1wb3JhcnlOYW1lLCAiID4gMHhGRkZGRkZGRilcbiIsCi0gICAgICAgICAgICAgICAg
ICAgIGluZGVudCwgIiAgICAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gMHhGRkZGRkZGRjtc
biIKLSAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50KTsKLSAgICAgICAgICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJp
bmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICAgICAgICAgIiA9IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnRO
YW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIikg
fTtcbiIKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52
YWx1ZV0ucGF0aDsKLSAgICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJp
bmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAg
ICAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCB2YXJpYWJsZU5hbWUsICcu
JywgZWxlbWVudE5hbWUsICI7XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGZvciAoYXV0byYgbmFtZWRCdWlsdEluIDogbV9uYW1lZEJ1aWx0SW5zKSB7Ci0gICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWlsdEluLmlu
ZGV4SW5FbnRyeVBvaW50SXRlbXNdOwotICAgICAgICBhdXRvJiBwYXRoID0gaXRlbS5wYXRoOwot
ICAgICAgICBhdXRvJiB2YXJpYWJsZU5hbWUgPSBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lOwot
ICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
aW5kZW50KTsKLSAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0
aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtYW5nbGVkVHlwZU5hbWUs
ICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOwotICAgIH0KLX0KLQotVmVydGV4RW50cnlQb2lu
dFNjYWZmb2xkaW5nOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlw
ZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50cnlQb2ludEl0ZW1zLCBIYXNo
TWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0JiBsYXlvdXQsIHN0ZDo6
ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSwgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+JiBtYXRjaGVkVmVydGV4QXR0cmli
dXRlcykKLSAgICA6IEVudHJ5UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24sIGlu
dHJpbnNpY3MsIHR5cGVOYW1lciwgZW50cnlQb2ludEl0ZW1zLCByZXNvdXJjZU1hcCwgbGF5b3V0
LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpCi0gICAgLCBtX21hdGNoZWRWZXJ0
ZXhBdHRyaWJ1dGVzKG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKQotICAgICwgbV9zdGFnZUluU3Ry
dWN0TmFtZSh0eXBlTmFtZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fcmV0dXJu
U3RydWN0TmFtZSh0eXBlTmFtZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSkKLSAgICAsIG1fc3Rh
Z2VJblBhcmFtZXRlck5hbWUobV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSkKLXsKLSAgICBt
X25hbWVkU3RhZ2VJbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21hdGNoZWRWZXJ0ZXhBdHRy
aWJ1dGVzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtX21hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKSB7Ci0gICAgICAgIE5hbWVkU3RhZ2VJbiBuYW1lZFN0YWdlSW47Ci0g
ICAgICAgIG5hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0ga2V5VmFsdWVQYWly
LnZhbHVlOwotICAgICAgICBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5n
ZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBuYW1lZFN0YWdlSW4u
YXR0cmlidXRlSW5kZXggPSBrZXlWYWx1ZVBhaXIua2V5LT5tZXRhbExvY2F0aW9uOwotICAgICAg
ICBtX25hbWVkU3RhZ2VJbnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRTdGFnZUluKSk7
Ci0gICAgfQotCi0gICAgbV9uYW1lZE91dHB1dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Vu
dHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8m
IG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAgICBOYW1l
ZE91dHB1dCBuYW1lZE91dHB1dDsKLSAgICAgICAgbmFtZWRPdXRwdXQuZWxlbWVudE5hbWUgPSBt
X3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBT
dHJpbmdWaWV3IGludGVybmFsVHlwZTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSkKLSAgICAgICAg
ICAgIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKFdURjo6Z2V0PEFTVDo6
QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRpYykpOwotICAgICAgICBpZiAoIWlu
dGVybmFsVHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlw
ZU5hbWUgPSBpbnRlcm5hbFR5cGUudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqb3V0cHV0SXRlbS51bm5hbWVkVHlwZSk7Ci0gICAgICAgIG1fbmFtZWRPdXRwdXRz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkT3V0cHV0KSk7Ci0gICAgfQotfQotCi12b2lk
IFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChpbmRlbnQsICJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7
XG4iKTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAg
ICAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAg
ICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBv
aW50SXRlbXNdLnVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBu
YW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4
ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1th
dHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgaW5kZW50LCAifTtcblxuIiwKLSAg
ICAgICAgaW5kZW50LCAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCi0gICAg
KTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRl
bXMub3V0cHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25h
bWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwotICAgICAgICAgICAgYXV0byBlbGVtZW50
TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIGludGVybmFsVHlwZU5hbWUs
ICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0gICAgCi0g
ICAgZW1pdFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRlciwgaW5kZW50LCBTaGFkZXJT
dGFnZTo6VmVydGV4KTsKLX0KLQotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVt
aXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9u
TmFtZSBmdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChpbmRlbnQsICJ2ZXJ0ZXggIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcs
IGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBh
cmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7Ci0gICAgZW1pdFJlc291cmNlU2lnbmF0dXJl
KHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBlbWl0QnVp
bHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLX0KLQotdm9pZCBWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
ciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmRO
YW1lZEJ1aWx0SW5zKHN0cmluZ0J1aWxkZXIsIGluZGVudCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5h
bWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewotICAgICAgICBhdXRvJiBwYXRoID0gbV9l
bnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1z
XS5wYXRoOwotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50
TmFtZTsKLSAgICAgICAgCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCk7Ci0g
ICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgJy4n
LCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgIH0KLX0KLQotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmds
ZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgb3V0
cHV0VmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW5kZW50LCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFi
bGVOYW1lLCAiO1xuIik7Ci0gICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgp
ID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKLSAg
ICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwotICAgICAgICBhdXRvJiBpbnRlcm5h
bFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAg
YXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1l
KTsKLSAgICAgICAgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwotICAgIH0KLX0KLQotRnJhZ21l
bnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nKEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24sIEludHJpbnNpY3MmIGlu
dHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBFbnRyeVBvaW50SXRlbXMmIGVudHJ5UG9p
bnRJdGVtcywgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3VyY2VNYXAsIExheW91dCYg
bGF5b3V0LCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+JikK
LSAgICA6IEVudHJ5UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24sIGludHJpbnNp
Y3MsIHR5cGVOYW1lciwgZW50cnlQb2ludEl0ZW1zLCByZXNvdXJjZU1hcCwgbGF5b3V0LCBXVEZN
b3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpCi0gICAgLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
KHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9yZXR1cm5TdHJ1Y3RO
YW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAgICwgbV9zdGFnZUluUGFy
YW1ldGVyTmFtZShtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8mIGlucHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpXTsKLSAg
ICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGlj
PigqaW5wdXRJdGVtLnNlbWFudGljKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
dXRvJiBzdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRp
Yz4oKmlucHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgIE5hbWVkU3RhZ2VJbiBuYW1lZFN0YWdl
SW47Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0gaTsKLSAg
ICAgICAgbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2VuZXJhdGVOZXh0
U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUlu
ZGV4ID0gc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCk7Ci0gICAgICAgIG1fbmFtZWRTdGFnZUlu
cy5hcHBlbmQoV1RGTW92ZShuYW1lZFN0YWdlSW4pKTsKLSAgICB9Ci0KLSAgICBtX25hbWVkT3V0
cHV0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6
ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1
dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2lu
dEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgIE5hbWVkT3V0cHV0IG5hbWVkT3V0cHV0OwotICAg
ICAgICBuYW1lZE91dHB1dC5lbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0
cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIFN0cmluZ1ZpZXcgaW50ZXJuYWxUeXBlOwot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4o
Km91dHB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAgICAgICAgaW50ZXJuYWxUeXBlID0gaW50ZXJu
YWxUeXBlRm9yU2VtYW50aWMoV1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJ
dGVtLnNlbWFudGljKSk7Ci0gICAgICAgIGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAg
ICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZSA9IGludGVybmFsVHlwZS50b1N0
cmluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5
cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFt
ZWRUeXBlKTsKLSAgICAgICAgbV9uYW1lZE91dHB1dHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
bmFtZWRPdXRwdXQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRl
bnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAi
c3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7Ci0gICAgewotICAgICAgICBJ
bmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7Ci0gICAgICAgIGZvciAoYXV0byYgbmFtZWRT
dGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBl
TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMu
aW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7
Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1l
OwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1
dGVJbmRleDsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5k
ZXgsICIpXV07XG4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgaW5kZW50LCAifTtcblxuIiwKLSAgICAgICAgaW5kZW50LCAic3RydWN0ICIs
IG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCi0gICAgKTsKLSAgICB7Ci0gICAgICAgIEluZGVu
dGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAg
ICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5
cGVOYW1lOwotICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ld
LmVsZW1lbnROYW1lOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JT
ZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbmRlbnQsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywg
YXR0cmlidXRlLCAiO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0KLSAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhz
dHJpbmdCdWlsZGVyLCBpbmRlbnQsIFNoYWRlclN0YWdlOjpGcmFnbWVudCk7Ci19Ci0KLXZvaWQg
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVu
dGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJm
cmFnbWVudCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1f
c3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdl
X2luXV0iKTsKLSAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVk
ZVByZWNlZGluZ0NvbW1hOjpZZXMpOwotICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdC
dWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIilcbiIpOwotfQotCi12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGlu
ZGVudCkKLXsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhzdHJpbmdC
dWlsZGVyLCBpbmRlbnQpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVk
U3RhZ2VJbnMpIHsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0
c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKLSAgICAgICAgYXV0
byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7Ci0KLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKLSAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgo
c3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAi
LCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7Ci0gICAg
fQotfQotCi12b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFi
bGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRp
b248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV9yZXR1
cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgIGlmICht
X2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVt
cy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0g
bV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwg
aW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVt
ZW50TmFtZTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRz
W2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJ
dGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCwgb3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxU
eXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGVtaXRNYW5nbGVkT3V0
cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIik7XG4iKTsKLSAgICB9Ci19Ci0KLUNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkNv
bXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0
aW9uRGVmaW5pdGlvbiwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFt
ZXIsIEVudHJ5UG9pbnRJdGVtcyYgZW50cnlQb2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBz
aXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xl
ZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkKLSAgICA6IEVudHJ5
UG9pbnRTY2FmZm9sZGluZyhmdW5jdGlvbkRlZmluaXRpb24sIGludHJpbnNpY3MsIHR5cGVOYW1l
ciwgZW50cnlQb2ludEl0ZW1zLCByZXNvdXJjZU1hcCwgbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSkpCi17Ci19Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVu
dGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdC
dWlsZGVyLCBpbmRlbnQsIFNoYWRlclN0YWdlOjpDb21wdXRlKTsKLX0KLQotdm9pZCBDb21wdXRl
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmlu
Z0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0
PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAia2VybmVsIHZv
aWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpOwotICAgIGJvb2wgYWRkZWRUb1NpZ25hdHVyZSA9IGVt
aXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6
Ok5vKTsKLSAgICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgYWRkZWRUb1Np
Z25hdHVyZSA/IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzIDogSW5jbHVkZVByZWNlZGluZ0Nv
bW1hOjpObyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lkIENv
bXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3Ry
aW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNv
dXJjZXNBbmROYW1lZEJ1aWx0SW5zKHN0cmluZ0J1aWxkZXIsIGluZGVudCk7Ci19Ci0KLXZvaWQg
Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1h
bmdsZWRWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KQot
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNTYyODhjYmVhMjU3
MWFmMWQwOWQxNTExMjMxNTgwYmQ1ZWJlNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNM
UGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9u
OwotCi19Ci0KLXN0cnVjdCBFbnRyeVBvaW50SXRlbXM7Ci1jbGFzcyBJbnRyaW5zaWNzOwotCi1u
YW1lc3BhY2UgTWV0YWwgewotCi1jbGFzcyBUeXBlTmFtZXI7Ci0KLWNsYXNzIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVh
bCB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xl
ZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1p
dFVucGFjayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3Rp
bmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSA9IDA7
Ci0KLSAgICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIHBhcmFtZXRlclZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fcGFyYW1ldGVyVmFyaWFibGVzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBFbnRy
eVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwg
VHlwZU5hbWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYg
cmVzb3VyY2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgp
PiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSk7Ci0KLSAgICB2b2lkIGVtaXRSZXNvdXJjZUhl
bHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0PiwgU2hhZGVyU3RhZ2UpOwot
Ci0gICAgZW51bSBjbGFzcyBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgewotICAgICAgICBZZXMsCi0g
ICAgICAgIE5vCi0gICAgfTsKLSAgICBib29sIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShTdHJpbmdC
dWlsZGVyJiwgSW5jbHVkZVByZWNlZGluZ0NvbW1hKTsKLSAgICBib29sIGVtaXRCdWlsdEluc1Np
Z25hdHVyZShTdHJpbmdCdWlsZGVyJiwgSW5jbHVkZVByZWNlZGluZ0NvbW1hKTsKLQotICAgIHZv
aWQgZW1pdE1hbmdsZWRJbnB1dFBhdGgoU3RyaW5nQnVpbGRlciYsIFZlY3RvcjxTdHJpbmc+JiBw
YXRoKTsKLSAgICB2b2lkIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVj
dG9yPFN0cmluZz4mIHBhdGgpOwotICAgIHZvaWQgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVk
QnVpbHRJbnMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KTsKLQotICAgIEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJiBtX2Z1bmN0aW9uRGVmaW5pdGlvbjsKLSAgICBJbnRyaW5zaWNzJiBt
X2ludHJpbnNpY3M7Ci0gICAgVHlwZU5hbWVyJiBtX3R5cGVOYW1lcjsKLSAgICBFbnRyeVBvaW50
SXRlbXMmIG1fZW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4m
IG1fcmVzb3VyY2VNYXA7Ci0gICAgTGF5b3V0JiBtX2xheW91dDsKLSAgICBzdGQ6OmZ1bmN0aW9u
PE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4gbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWU7Ci0KLSAg
ICBzdHJ1Y3QgTGVuZ3RoSW5mb3JtYXRpb24gewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxl
bWVudE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdGVtcG9y
YXJ5TmFtZTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgTmFt
ZWRCaW5kaW5nIHsKLSAgICAgICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnRO
YW1lOwotICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxMZW5n
dGhJbmZvcm1hdGlvbj4gbGVuZ3RoSW5mb3JtYXRpb247Ci0gICAgfTsKLSAgICBzdHJ1Y3QgTmFt
ZWRCaW5kR3JvdXAgewotICAgICAgICBNYW5nbGVkVHlwZU5hbWUgc3RydWN0TmFtZTsKLSAgICAg
ICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSB2YXJpYWJsZU5hbWU7Ci0gICAgICAgIFZlY3RvcjxOYW1l
ZEJpbmRpbmc+IG5hbWVkQmluZGluZ3M7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50QnVmZmVy
SW5kZXg7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRCaW5kR3JvdXA+IG1fbmFtZWRCaW5kR3Jv
dXBzOyAvLyBQYXJhbGxlbCB0byBtX2xheW91dAotCi0gICAgc3RydWN0IE5hbWVkQnVpbHRJbiB7
Ci0gICAgICAgIHNpemVfdCBpbmRleEluRW50cnlQb2ludEl0ZW1zOwotICAgICAgICBNYW5nbGVk
VmFyaWFibGVOYW1lIHZhcmlhYmxlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZEJ1aWx0
SW4+IG1fbmFtZWRCdWlsdEluczsKLQotICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiBt
X3BhcmFtZXRlclZhcmlhYmxlczsKLX07Ci0KLWNsYXNzIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9s
ZGluZyBmaW5hbCA6IHB1YmxpYyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgotICAg
IFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIElu
dHJpbnNpY3MmLCBUeXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcq
LCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFy
aWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lLCBIYXNoTWFwPFZlcnRleEF0
dHJpYnV0ZSosIHNpemVfdD4mIG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICB2aXJ0dWFs
IH5WZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0g
ICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBv
dmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRG
dW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBh
Y2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVt
aXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4aXN0aW5nVmFyaWFi
bGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0K
LSAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4mIG1fbWF0Y2hlZFZlcnRleEF0
dHJpYnV0ZXM7Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1fc3RhZ2VJblN0cnVjdE5hbWU7Ci0gICAg
TWFuZ2xlZFR5cGVOYW1lIG1fcmV0dXJuU3RydWN0TmFtZTsKLSAgICBNYW5nbGVkVmFyaWFibGVO
YW1lIG1fc3RhZ2VJblBhcmFtZXRlck5hbWU7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRTdGFnZUluIHsK
LSAgICAgICAgc2l6ZV90IGluZGV4SW5FbnRyeVBvaW50SXRlbXM7Ci0gICAgICAgIE1hbmdsZWRT
dHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgdW5zaWduZWQgYXR0cmli
dXRlSW5kZXg7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRTdGFnZUluPiBtX25hbWVkU3RhZ2VJ
bnM7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRPdXRwdXQgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJl
RWxlbWVudE5hbWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1l
IGludGVybmFsVHlwZU5hbWU7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRPdXRwdXQ+IG1fbmFt
ZWRPdXRwdXRzOwotfTsKLQotY2xhc3MgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcgZmlu
YWwgOiBwdWJsaWMgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKLXB1YmxpYzoKLSAgICBGcmFnbWVu
dEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNp
Y3MmLCBUeXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXpl
X3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVO
YW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNj
cmlwdG9yKiwgc2l6ZV90PiYgbWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwotICAgIHZpcnR1YWwg
fkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgot
ICAgIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVk
RnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5w
YWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1Zhcmlh
YmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwot
Ci0gICAgTWFuZ2xlZFR5cGVOYW1lIG1fc3RhZ2VJblN0cnVjdE5hbWU7Ci0gICAgTWFuZ2xlZFR5
cGVOYW1lIG1fcmV0dXJuU3RydWN0TmFtZTsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG1fc3Rh
Z2VJblBhcmFtZXRlck5hbWU7Ci0KLSAgICBzdHJ1Y3QgTmFtZWRTdGFnZUluIHsKLSAgICAgICAg
c2l6ZV90IGluZGV4SW5FbnRyeVBvaW50SXRlbXM7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1cmVF
bGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXg7
Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRTdGFnZUluPiBtX25hbWVkU3RhZ2VJbnM7Ci0KLSAg
ICBzdHJ1Y3QgTmFtZWRPdXRwdXQgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5h
bWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lIGludGVybmFs
VHlwZU5hbWU7Ci0gICAgfTsKLSAgICBWZWN0b3I8TmFtZWRPdXRwdXQ+IG1fbmFtZWRPdXRwdXRz
OwotfTsKLQotY2xhc3MgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyBmaW5hbCA6IHB1Ymxp
YyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgotICAgIENvbXB1dGVFbnRyeVBvaW50
U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mLCBJbnRyaW5zaWNzJiwgVHlwZU5h
bWVyJiwgRW50cnlQb2ludEl0ZW1zJiwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiYgcmVzb3Vy
Y2VNYXAsIExheW91dCYsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSk7Ci0gICAgdmlydHVhbCB+Q29tcHV0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGVtaXRIZWxwZXJU
eXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQg
ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSwgSW5kZW50
YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiwg
SW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRl
ciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJp
YWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLX07Ci0KLX0KLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25X
cml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmI0NTkwYTU1ZmMzMTdi
MjYwMjMxZGUzOGI0MjBmZmE2OTdkYTMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bldyaXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3Jh
bS5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgTWV0YWwgewotCi1zdGF0aWMgdm9pZCBkZWNsYXJlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotewotICAg
IGlmIChmdW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gaXRlcmF0b3IgPSBmdW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rpb25E
ZWNsYXJhdGlvbik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IGZ1bmN0aW9uTWFwcGluZy5lbmQo
KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKSkpOwotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwot
fQotCi1zdHJ1Y3QgVmFyaWFibGUgewotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgbmFtZTsKLSAg
ICBNYW5nbGVkVHlwZU5hbWUgdHlwZTsKLX07Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlciA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICBjbGFzcyBIb2lzdGVkVmFyaWFibGVDb2xsZWN0
b3IgOiBwdWJsaWMgVmlzaXRvciB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgSG9pc3RlZFZh
cmlhYmxlQ29sbGVjdG9yKEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciYgZnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyKQotICAgICAgICAgICAgOiBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoZnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBWZWN0b3I8VmFyaWFibGU+IHZhcmlhYmxlczsKLSAgICAgICAg
ICAgIHNpemVfdCBzaXplID0gY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpOwotICAg
ICAgICAgICAgYm9vbCBpc1ZvaWQgPSBtYXRjaGVzKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlw
ZSgpLCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpOwot
ICAgICAgICAgICAgaWYgKCFpc1ZvaWQpCi0gICAgICAgICAgICAgICAgKytzaXplOwotICAgICAg
ICAgICAgdmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0KLSAgICAgICAg
ICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYXJndW1lbnQtPnJlc29sdmVkVHlwZSgpKTsKLSAg
ICAgICAgICAgICAgICBhdXRvIG5hbWUgPSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVzLnVuY2hlY2tl
ZEFwcGVuZChWYXJpYWJsZSB7IG5hbWUsIHR5cGUgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICghaXNWb2lkKQotICAgICAgICAgICAgICAgIHZhcmlhYmxlcy51bmNoZWNrZWRB
cHBlbmQoVmFyaWFibGUgeyBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpIH0pOwotCi0gICAgICAg
ICAgICB0b0hvaXN0LmFkZCgmY2FsbEV4cHJlc3Npb24sIFdURk1vdmUodmFyaWFibGVzKSk7Ci0K
LSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFk
TW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvcjxWYXJp
YWJsZT4gdmFyaWFibGVzOwotICAgICAgICAgICAgdmFyaWFibGVzLmFwcGVuZChWYXJpYWJsZSB7
IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgZnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcmVh
ZE1vZGlmeVdyaXRlLm9sZFZhbHVlKCkudHlwZSgpKSB9KTsKLSAgICAgICAgICAgIHZhcmlhYmxl
cy5hcHBlbmQoVmFyaWFibGUgeyBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIuZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZSgpLnR5cGUoKSkgfSk7Ci0K
LSAgICAgICAgICAgIHRvSG9pc3QuYWRkKCZyZWFkTW9kaWZ5V3JpdGUsIFdURk1vdmUodmFyaWFi
bGVzKSk7Ci0KLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KHJlYWRNb2RpZnlXcml0ZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXImIGZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjsKLSAgICAgICAgSGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBWZWN0b3I8
VmFyaWFibGU+PiB0b0hvaXN0OwotICAgIH07Ci0KLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50
cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTGF5b3V0JiBs
YXlvdXQpCi0gICAgICAgIDogbV9zdHJpbmdCdWlsZGVyKHN0cmluZ0J1aWxkZXIpCi0gICAgICAg
ICwgbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV90eXBlTmFtZXIodHlwZU5h
bWVyKQotICAgICAgICAsIG1fZnVuY3Rpb25NYXBwaW5nKGZ1bmN0aW9uTWFwcGluZykKLSAgICAg
ICAgLCBtX2xheW91dChsYXlvdXQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgdmlzaXQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50
U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSA9IDA7Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6Q29udGludWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9X
aGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3Vn
aCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0
ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpGbG9hdExpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Qm9v
bGVhbkxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpD
b21tYUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVu
Y2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKSBv
dmVycmlkZTsKLQotICAgIGVudW0gY2xhc3MgTG9vcENvbmRpdGlvbkxvY2F0aW9uIHsKLSAgICAg
ICAgQmVmb3JlQm9keSwKLSAgICAgICAgQWZ0ZXJCb2R5Ci0gICAgfTsKLSAgICB2b2lkIGVtaXRM
b29wKExvb3BDb25kaXRpb25Mb2NhdGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHBy
ZXNzaW9uLCBBU1Q6OkV4cHJlc3Npb24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkp
OwotCi0gICAgdm9pZCBlbWl0Q29uc3RhbnRFeHByZXNzaW9uU3RyaW5nKEFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uJik7Ci0KLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpIHsgcmV0dXJuIHsgbV92YXJpYWJsZUNvdW50KysgfTsgfQotCi0gICAgZW51bSBj
bGFzcyBCcmVha0NvbnRleHQgewotICAgICAgICBMb29wLAotICAgICAgICBTd2l0Y2gKLSAgICB9
OwotCi0gICAgc3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+IG1fY3VycmVudEJyZWFrQ29udGV4
dDsKLQotICAgIFN0cmluZ0J1aWxkZXImIG1fc3RyaW5nQnVpbGRlcjsKLSAgICBJbnRyaW5zaWNz
JiBtX2ludHJpbnNpY3M7Ci0gICAgVHlwZU5hbWVyJiBtX3R5cGVOYW1lcjsKLSAgICBIYXNoTWFw
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBtX2Z1bmN0
aW9uTWFwcGluZzsKLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIE1hbmds
ZWRWYXJpYWJsZU5hbWU+IG1fdmFyaWFibGVNYXBwaW5nOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gbV9lbnRyeVBvaW50U2NhZmZvbGRpbmc7Ci0gICAgTGF5
b3V0JiBtX2xheW91dDsKLSAgICB1bnNpZ25lZCBtX3ZhcmlhYmxlQ291bnQgeyAwIH07Ci0gICAg
c3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBtX2JyZWFrT3V0T2ZDdXJyZW50TG9v
cEVhcmx5VmFyaWFibGU7Ci0gICAgSW5kZW50YXRpb248ND4gbV9pbmRlbnQgeyAwIH07Ci0gICAg
SGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBWZWN0b3I8VmFyaWFibGU+PiBtX2hvaXN0ZWRWYXJp
YWJsZXM7Ci19OwotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLSAgICAvLyBXZSBpbmxpbmUgbmF0aXZlIGZ1
bmN0aW9uIGNhbGxzLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLQotICAgIHsK
LSAgICAgICAgSG9pc3RlZFZhcmlhYmxlQ29sbGVjdG9yIGNvbGxlY3RvcigqdGhpcyk7Ci0gICAg
ICAgIGNvbGxlY3Rvci5WaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAg
ICBtX2hvaXN0ZWRWYXJpYWJsZXMgPSBXVEZNb3ZlKGNvbGxlY3Rvci50b0hvaXN0KTsKLSAgICB9
Ci0KLSAgICBhdXRvIGRlZmluZUhvaXN0ZWRWYXJpYWJsZXMgPSBbJl0gewotICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZlY3RvciA6IG1faG9pc3RlZFZhcmlhYmxlcy52YWx1ZXMoKSkgewotICAg
ICAgICAgICAgZm9yIChhdXRvIHZhcmlhYmxlIDogdmVjdG9yKQotICAgICAgICAgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIHZhcmlhYmxlLnR5cGUsICcgJywgdmFyaWFi
bGUubmFtZSwgIjtcbiIpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIEFTU0VS
VChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgaWYgKGZ1bmN0aW9u
RGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgICAgIGF1dG8gZW50cnlQb2ludFNj
YWZmb2xkaW5nID0gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlv
bik7Ci0gICAgICAgIGlmICghZW50cnlQb2ludFNjYWZmb2xkaW5nKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IFdURk1vdmUoZW50cnlQb2lu
dFNjYWZmb2xkaW5nKTsKLSAgICAgICAgCi0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5n
LT5lbWl0SGVscGVyVHlwZXMobV9zdHJpbmdCdWlsZGVyLCBtX2luZGVudCk7Ci0gICAgICAgIG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0U2lnbmF0dXJlKG1fc3RyaW5nQnVpbGRlciwgaXRl
cmF0b3ItPnZhbHVlLCBtX2luZGVudCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bV9pbmRlbnQsICJ7XG4iKTsKLSAgICAgICAgewotICAgICAgICAgICAgSW5kZW50YXRpb25TY29w
ZSBzY29wZShtX2luZGVudCk7Ci0KLSAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5n
LT5lbWl0VW5wYWNrKG1fc3RyaW5nQnVpbGRlciwgbV9pbmRlbnQpOwotICAgICAgICAKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92
YXJpYWJsZU1hcHBpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLCBt
X2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+cGFyYW1ldGVyVmFyaWFibGVzKClbaV0pOwotICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZmluZUhvaXN0ZWRWYXJpYWJsZXMoKTsK
LQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9j
aygpKTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG5cbiIp
OwotCi0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gbnVsbHB0cjsKLSAgICB9IGVs
c2UgewotICAgICAgICBBU1NFUlQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPT0gbnVsbHB0cik7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRv
ci0+dmFsdWUsICcoJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25E
ZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkp
Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAg
ICAgIGF1dG8mIHBhcmFtZXRlciA9IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV07
Ci0gICAgICAgICAgICBhdXRvIHBhcmFtZXRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRk
KCZwYXJhbWV0ZXIsIHBhcmFtZXRlck5hbWUpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5
cGUoKSksICcgJywgcGFyYW1ldGVyTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKVxuIik7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
e1xuIik7Ci0KLSAgICAgICAgZGVmaW5lSG9pc3RlZFZhcmlhYmxlcygpOwotCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCdcbicpOwotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN0YXRl
bWVudCYgc3RhdGVtZW50KQotewotICAgIFZpc2l0b3I6OnZpc2l0KHN0YXRlbWVudCk7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykK
LXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAie1xuIik7Ci0gICAgewot
ICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgZm9yIChh
dXRvJiBzdGF0ZW1lbnQgOiBibG9jay5zdGF0ZW1lbnRzKCkpCi0gICAgICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGVtZW50KTsKLSAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX2luZGVudCwgIn1cbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUOjpCcmVhayYpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEJyZWFrQ29udGV4dCk7
Ci0gICAgc3dpdGNoICgqbV9jdXJyZW50QnJlYWtDb250ZXh0KSB7Ci0gICAgY2FzZSBCcmVha0Nv
bnRleHQ6OlN3aXRjaDoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwg
ImJyZWFrO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQnJlYWtDb250ZXh0OjpMb29w
OgotICAgICAgICBBU1NFUlQobV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIG1faW5kZW50LCAq
bV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIsCi0gICAg
ICAgICAgICBtX2luZGVudCwgImJyZWFrO1xuIgotICAgICAgICApOwotICAgICAgICBicmVhazsK
LSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNv
bnRpbnVlJikKLXsKLSAgICBBU1NFUlQobV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlh
YmxlKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiYnJlYWs7XG4iKTsK
LX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKLXsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50KTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5lZmZlY3RmdWxFeHByZXNzaW9uKCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX2luZGVudCwgIltbY2xhbmc6OmZhbGx0aHJvdWdoXV07XG4iKTsgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MDggTWFr
ZSBzdXJlIHRoaXMgaXMgb2theS4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgZG8gbm90aGluZyBh
bmQganVzdCByZXR1cm4gaGVyZSBpbnN0ZWFkLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6ZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uIGxvb3BDb25kaXRpb25Mb2Nh
dGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHByZXNzaW9uLCBBU1Q6OkV4cHJlc3Np
b24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkpCi17Ci0gICAgU2V0Rm9yU2NvcGU8
c3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPj4gbG9vcFZhcmlhYmxlU2NvcGUobV9i
cmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICBtX2luZGVudCwg
ImJvb2wgIiwgKm1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNl
O1xuIiwKLSAgICAgICAgbV9pbmRlbnQsICJ3aGlsZSAodHJ1ZSkge1xuIgotICAgICk7Ci0gICAg
ewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHdoaWxlU2NvcGUobV9pbmRlbnQpOwotCi0gICAg
ICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpC
ZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9pbmRlbnQsICJpZiAoISgiKTsKLSAg
ICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIpKVxuIiwK
LSAgICAgICAgICAgICAgICAiICAgIGJyZWFrO1xuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiZG8ge1xuIik7Ci0gICAgICAgIFNldEZv
clNjb3BlPHN0ZDo6b3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVu
dEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpMb29wKTsKLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbmRlbnRhdGlvblNjb3BlIGRvU2NvcGUobV9pbmRlbnQpOwotICAgICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGJvZHkpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsICJ9IHdoaWxlKGZhbHNlKTsgXG4iKTsKLQotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbV9pbmRlbnQsICJpZiAoIiwgKm1fYnJl
YWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIilcbiIsCi0gICAgICAgICAgICBtX2lu
ZGVudCwgIiAgICBicmVhaztcbiIpOwotCi0gICAgICAgIGlmIChpbmNyZW1lbnQpIHsKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIigiKTsKLSAgICAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqaW5jcmVtZW50KTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIik7XG4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRp
b24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpBZnRlckJvZHkgJiYgY29uZGl0aW9uRXhwcmVz
c2lvbikgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICBtX2luZGVudCwgImlmICghKCIpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoCi0gICAgICAgICAgICAgICAgIikpXG4iLAotICAgICAgICAgICAgICAgICIgICAgYnJlYWs7
XG4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9p
bmRlbnQsICJ9IFxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkKLXsKLSAgICBlbWl0TG9vcChMb29wQ29u
ZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSwgJmRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCksIG51
bGxwdHIsIGRvV2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIGVtaXRMb29w
KExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3JlQm9keSwgJndoaWxlTG9vcC5jb25kaXRpb25h
bCgpLCBudWxscHRyLCB3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAie1xuIik7Ci0gICAgewotICAgICAgICBJbmRlbnRh
dGlvblNjb3BlIHNjb3BlKG1faW5kZW50KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZv
ckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0gICAgICAgIGVtaXRMb29wKExvb3BDb25kaXRpb25M
b2NhdGlvbjo6QmVmb3JlQm9keSwgZm9yTG9vcC5jb25kaXRpb24oKSwgZm9yTG9vcC5pbmNyZW1l
bnQoKSwgZm9yTG9vcC5ib2R5KCkpOwotICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkKLXsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1faW5kZW50LCAiaWYgKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0
YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtc
biIpOwotCi0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIGlmU2NvcGUobV9pbmRlbnQp
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKLSAgICB9
Ci0KLSAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSBlbHNlIHtcbiIpOwotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbmRlbnRhdGlvblNjb3BlIGVsc2VTY29wZShtX2luZGVudCk7Ci0gICAgICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIpOwotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVy
blN0YXRlbWVudCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsKLSAgICAg
ICAgYXV0byB0ZW1wUmV0dXJuTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOyAKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKHJldHVyblN0YXRlbWVudC52YWx1ZSgpLT5yZXNvbHZlZFR5cGUoKSksICcg
JywgdGVtcFJldHVybk5hbWUsICIgPSAiKTsgCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgq
cmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCI7XG4iKTsKLQotICAgICAgICBpZiAobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKLSAgICAg
ICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0g
ICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWls
ZGVyLCB0ZW1wUmV0dXJuTmFtZSwgdmFyaWFibGVOYW1lLCBtX2luZGVudCk7Ci0gICAgICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAicmV0dXJuICIsIHZhcmlhYmxlTmFt
ZSwgIjtcbiIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJyZXR1cm4gIiwgdGVtcFJldHVybk5hbWUsICI7XG4iKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgInJldHVybjtc
biIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0
Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAic3dpdGNoICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNo
U3RhdGVtZW50LnZhbHVlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgeyIpOwot
Ci0gICAgewotICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHN3aXRjaFNjb3BlKG1faW5kZW50KTsK
LSAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENh
c2VzKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci0gICAg
fQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNo
Q2FzZSkKLXsKLSAgICBpZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJjYXNlICIpOwotICAgICAgICBlbWl0Q29uc3RhbnRF
eHByZXNzaW9uU3RyaW5nKCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCI6XG4iKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgImRlZmF1bHQ6XG4iKTsKLSAgICBTZXRGb3JTY29wZTxzdGQ6Om9w
dGlvbmFsPEJyZWFrQ29udGV4dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQs
IEJyZWFrQ29udGV4dDo6U3dpdGNoKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2Fz
ZS5ibG9jaygpKTsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTgxMiBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgbmVlZCB0byBicmVhayBvciBm
YWxsdGhyb3VnaC4KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KQotewotICAgIFZpc2l0b3I6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6SW50
ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFsLnJlc29sdmVk
VHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtYW5n
bGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpIik7Ci19Ci0KLXZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nh
c3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCksICIpIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6
OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZsb2F0TGl0ZXJhbC5yZXNvbHZlZFR5
cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8IiwgbWFuZ2xl
ZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwgIikiKTsKLX0KLQotdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xl
YW5MaXRlcmFsKQotewotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKGJvb2xlYW5MaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIs
IGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAiKSIpOwotfQotCi12
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBBU1NFUlQoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBBU1NFUlQo
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICBh
dXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
ckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25N
ZW1iZXIoKSkpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Np
b24pOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZSYgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgTWFu
Z2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIG1hbmdsZWRGaWVsZE5hbWUgPSBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3Ry
dWN0RmllbGQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiktPiIsIG1hbmdsZWRGaWVsZE5hbWUpOwotfQotCi12b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHBy
ZXNzaW9uKQotewotICAgIGF1dG8mIHR5cGUgPSBkb3RFeHByZXNzaW9uLmJhc2UoKS5yZXNvbHZl
ZFR5cGUoKS51bmlmeU5vZGUoKTsKLQotICAgIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KHR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2Fz
dDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpOwotICAgICAgICBhdXRvKiBzdHJ1Y3R1
cmVFbGVtZW50ID0gc3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGRvdEV4cHJlc3Npb24uZmllbGRO
YW1lKCkpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgIGF1dG8g
ZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQo
KnN0cnVjdHVyZUVsZW1lbnQpOwotCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygn
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS4iLCBlbGVtZW50TmFtZSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgU3RyaW5nIGVsZW1lbnROYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5h
bWUoKTsKLSAgICAgICAgaWYgKGVsZW1lbnROYW1lID09ICJsZW5ndGgiICYmIChpczxBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZT4odHlwZSkgfHwgaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpIHx8IChp
czxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLmlzVmVjdG9yKCkpKSkgewotICAgICAgICAgICAgaWYg
KGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKSkgewotICAgICAgICAgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIikubGVuZ3RoIik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6
QXJyYXlUeXBlPih0eXBlKSkgewotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoJygnKTsKLSAgICAgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lv
bi5iYXNlKCkpOwotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwg
ZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHR5cGUpLm51bUVsZW1lbnRzKCksICIpIik7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
JygnKTsKLSAgICAgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5i
YXNlKCkpOwotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLnZlY3RvclNpemUoKSwgIiki
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RF
eHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
LiIsIGVsZW1lbnROYW1lKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Np
b24pCi17Ci0gICAgYXV0byYgdHlwZSA9IGluZGV4RXhwcmVzc2lvbi5iYXNlKCkucmVzb2x2ZWRU
eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0
eXBlKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKS5wb2ludGVyWygiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIikgPCAoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRl
eEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS5s
ZW5ndGggPyAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5p
bmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA6IDBd
Iik7Ci0gICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odHlwZSkpIHsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
aW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IikuZGF0YSgpWygiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lv
bi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikg
PCAiLCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkubnVtRWxlbWVudHMoKSwgIiA/ICIp
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVz
c2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIDogMF0iKTsKLSAgICB9
IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSkgewotICAgICAg
ICBhdXRvJiBuYXRpdmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHR5cGUpOwotICAgICAgICB1bnNpZ25lZCBzaXplOwotICAgICAgICBpZiAobmF0aXZlVHlwZS5p
c01hdHJpeCgpKQotICAgICAgICAgICAgc2l6ZSA9IG5hdGl2ZVR5cGUubnVtYmVyT2ZNYXRyaXhD
b2x1bW5zKCk7Ci0gICAgICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUuaXNWZWN0b3IoKSkKLSAgICAg
ICAgICAgIHNpemUgPSBuYXRpdmVUeXBlLnZlY3RvclNpemUoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4
cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVsoIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNz
aW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPCAiLCBzaXplLCAiKSA/
ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4
cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgOiAwXSIpOwot
ICAgIH0gZWxzZQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAKLX0KLQot
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAgICBBU1NFUlQodmFyaWFibGVEZWNsYXJh
dGlvbi50eXBlKCkpOwotICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnZh
cmlhYmxlRGVjbGFyYXRpb24sIHZhcmlhYmxlTmFtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MCBJbXBsZW1lbnQgcXVhbGlmaWVycy4K
LSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9
ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5p
dGlhbGl6ZXIoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwotICAg
IH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAn
LCB2YXJpYWJsZU5hbWUsICIgPSB7IH07XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHBy
ZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gKCIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsK
LSAgICBhdXRvIGl0ZXIgPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZmluZCgmY2FsbEV4cHJlc3Npb24p
OwotICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9ob2lzdGVkVmFyaWFibGVzLmVuZCgpKTsK
LSAgICBhdXRvJiB2YXJpYWJsZXMgPSBpdGVyLT52YWx1ZTsKLSAgICBSRUxFQVNFX0FTU0VSVChj
YWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCkgPD0gdmFyaWFibGVzLnNpemUoKSk7Ci0g
ICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGFyZ3VtZW50TmFtZXM7Ci0KLSAgICBNYW5n
bGVkVmFyaWFibGVOYW1lIHJlc3VsdE5hbWU7Ci0gICAgaWYgKCFtYXRjaGVzKGNhbGxFeHByZXNz
aW9uLnJlc29sdmVkVHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpCi0gICAgICAgIHJl
c3VsdE5hbWUgPSB2YXJpYWJsZXMubGFzdCgpLm5hbWU7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCcoJyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRXhwcmVzc2lvbi5h
cmd1bWVudHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBhcmd1bWVudE5hbWVzLmFwcGVuZCh2
YXJpYWJsZXNbaV0ubmFtZSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFyaWFi
bGVzW2ldLm5hbWUsICIgPSAoIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjYWxsRXhw
cmVzc2lvbi5hcmd1bWVudHMoKVtpXSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiksICIpOwotICAgIH0KLQotICAgIGlmIChpczxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKSB7Ci0gICAgICAgIGlubGluZU5hdGl2ZUZ1
bmN0aW9uKG1fc3RyaW5nQnVpbGRlciwgZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSwgYXJndW1lbnROYW1lcywgcmVzdWx0
TmFtZSwgbV90eXBlTmFtZXIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKTsKLSAg
ICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+dmFsdWUsICcoJyk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZh
cmlhYmxlc1tpXS5uYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcpJyk7Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQot
Ci12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Np
b24mIGNvbW1hRXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0gICAgYm9vbCByYW5PbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDog
Y29tbWFFeHByZXNzaW9uLmxpc3QoKSkgewotICAgICAgICBpZiAocmFuT25jZSkKLSAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgIHJhbk9uY2UgPSB0cnVl
OwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJl
c3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKigiKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKSk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYgbG9naWNhbEV4cHJlc3Npb24pCi17Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKCgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
bG9naWNhbEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcp
Jyk7Ci0KLSAgICBzd2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewotICAgIGNhc2Ug
QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kOgotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgJiYgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6VHlwZTo6T3I6Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiB8
fCAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgp
KTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpKSIpOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNh
bE5vdEV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiISgiKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8g
YmUgbWFkZSB0byB3b3JrLiBJdCBwcm9iYWJseSBzaG91bGQgYmUgdXNpbmcgdGhlIGxhc3QgbGVm
dFZhbHVlIHRvby4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4ODM4Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7
Ci0gICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24ubGVmdFZhbHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAieyAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIDEgfSIpOwotICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpB
cnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2
ZWRUeXBlKCkpKSB7Ci0gICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJy
YXlUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVk
VHlwZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUs
ICIgeyAiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIu
ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIiB9Iik7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICIgeyAmIik7
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmxlZnRWYWx1ZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAxIH0iKTsK
LSAgICB9Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiYoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgn
KScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGUpCi17Ci0gICAgLyoKLSAgICAg
KiAgMS4gRXZhbHVhdGUgbV9sZWZ0VmFsdWUKLSAgICAgKiAgMi4gQXNzaWduIHRoZSByZXN1bHQg
dG8gbV9vbGRWYWx1ZQotICAgICAqICAzLiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgot
ICAgICAqICA0LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX25ld1ZhbHVlCi0gICAgICogIDUuIEFz
c2lnbiB0aGUgcmVzdWx0IHRvIG1fbGVmdFZhbHVlCi0gICAgICogIDYuIEV2YWx1YXRlIG1fcmVz
dWx0RXhwcmVzc2lvbgotICAgICAqICA3LiBSZXR1cm4gdGhlIHJlc3VsdAotICAgICAqLwotCi0g
ICAgYXV0byBpdGVyID0gbV9ob2lzdGVkVmFyaWFibGVzLmZpbmQoJnJlYWRNb2RpZnlXcml0ZSk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZW5kKCkpOwot
ICAgIGF1dG8mIHZhcmlhYmxlcyA9IGl0ZXItPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJUKHZh
cmlhYmxlcy5zaXplKCkgPT0gMik7Ci0KLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG9sZFZhbHVl
VmFyaWFibGUgPSB2YXJpYWJsZXNbMF0ubmFtZTsKLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIG5l
d1ZhbHVlVmFyaWFibGUgPSB2YXJpYWJsZXNbMV0ubmFtZTsKLQotICAgIG1fdmFyaWFibGVNYXBw
aW5nLmFkZCgmcmVhZE1vZGlmeVdyaXRlLm9sZFZhbHVlKCksIG9sZFZhbHVlVmFyaWFibGUpOwot
ICAgIG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlKCksIG5l
d1ZhbHVlVmFyaWFibGUpOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotCi0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChvbGRWYWx1ZVZhcmlhYmxlLCAiID0gIik7Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSk7Ci0KLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIG5ld1ZhbHVlVmFyaWFibGUsICIgPSAiKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigp
KTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5sZWZ0VmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiID0gIiwgbmV3VmFsdWVWYXJpYWJsZSwgIiwgIik7Ci0KLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCi17Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0
ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSA/ICgiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9k
eUV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA6ICgiKTsKLSAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZl
cmVuY2UpCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKHZhcmlhYmxlUmVmZXJlbmNl
LnZhcmlhYmxlKCkpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3ZhcmlhYmxlTWFwcGluZy5l
bmQoKSk7Ci0KLSAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHZhcmlhYmxlTmFtZSA9IGl0ZXJhdG9y
LT52YWx1ZTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHZhcmlhYmxlTmFtZSk7Ci19Ci0K
LXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0Q29uc3RhbnRFeHByZXNzaW9uU3Ry
aW5nKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAg
Y29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCkgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCh1bnNpZ25lZEludGVn
ZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0oQVNUOjpGbG9hdExp
dGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChmbG9hdExpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkJv
b2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgewotICAgICAgICAgICAgaWYgKGJvb2xlYW5M
aXRlcmFsLnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
dHJ1ZSIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoImZhbHNlIik7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigp
KTsKLSAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVt
ZXJhdGlvbkRlZmluaXRpb24oKSksICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yRW51
bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJl
cigpKSk7Ci0gICAgICAgIH0KLSAgICApKTsKLX0KLQotY2xhc3MgUmVuZGVyRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciB7Ci1w
dWJsaWM6Ci0gICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5h
bWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5h
bWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2Vt
YW50aWNzLCBMYXlvdXQmIGxheW91dCkKLSAgICAgICAgOiBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIoc3RyaW5nQnVpbGRlciwgaW50cmluc2ljcywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcs
IGxheW91dCkKLSAgICAgICAgLCBtX21hdGNoZWRTZW1hbnRpY3MoV1RGTW92ZShtYXRjaGVkU2Vt
YW50aWNzKSkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgTWF0Y2hlZFJlbmRlclNlbWFudGlj
cyBtX21hdGNoZWRTZW1hbnRpY3M7Ci19OwotCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNj
YWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9p
bnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9u
KQotewotICAgIGF1dG8gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gTWFu
Z2xlZFZhcmlhYmxlTmFtZSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUoKTsKLSAgICB9OwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZl
cnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNp
Y3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2lu
dEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5
b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGlj
cy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24g
PT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyKQotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9u
LCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRT
aGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJl
c291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBt
X21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1jbGFzcyBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciB7Ci1wdWJsaWM6Ci0gICAgQ29tcHV0
ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBw
aW5nLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYg
bGF5b3V0KQotICAgICAgICA6IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVy
LCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgbGF5b3V0KQotICAgICAg
ICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpKQotICAgIHsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9s
ZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
Jikgb3ZlcnJpZGU7Ci0KLSAgICBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyBtX21hdGNoZWRTZW1h
bnRpY3M7Ci19OwotCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21w
dXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmco
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRv
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSA9IFt0aGlzXSgpIC0+IE1hbmdsZWRWYXJpYWJsZU5h
bWUgewotICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0g
ICAgfTsKLSAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Mu
c2hhZGVyKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZm
b2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1f
bWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNv
dXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0YXRpYyBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBw
aW5nKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgdW5zaWduZWQgbnVtRnVuY3Rpb25zID0gMDsK
LSAgICBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5h
bWU+IGZ1bmN0aW9uTWFwcGluZzsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6
IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gZnVuY3Rpb25NYXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uLCBNYW5nbGVkRnVuY3Rp
b25OYW1lIHsgbnVtRnVuY3Rpb25zKysgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZ1bmN0aW9u
TWFwcGluZzsKLX0KLQotc3RhdGljIHZvaWQgZW1pdFNoYXJlZE1ldGFsRnVuY3Rpb25zKFN0cmlu
Z0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlw
ZU5hbWVyLCBjb25zdCBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+JiByZWFjaGFi
bGVGdW5jdGlvbnMsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1
bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZykKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
RGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlm
ICghZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlwZSgpICYmIHJlYWNoYWJsZUZ1bmN0
aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIGRlY2xhcmVG
dW5jdGlvbihzdHJpbmdCdWlsZGVyLCBmdW5jdGlvbkRlZmluaXRpb24sIHR5cGVOYW1lciwgZnVu
Y3Rpb25NYXBwaW5nKTsKLSAgICB9Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsK
LX0KLQotY2xhc3MgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgZmluYWwgOiBwdWJsaWMgVmlz
aXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25zLmFkZCgmZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAg
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1
bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhw
cmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9y
Ojp2aXNpdChjYWxsRXhwcmVzc2lvbik7Ci0gICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpCi0gICAgICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNz
aW9uLmZ1bmN0aW9uKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2FsbEV4cHJl
c3Npb24uZnVuY3Rpb24oKSkpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUobV9y
ZWFjaGFibGVGdW5jdGlvbnMpOyB9Ci0KLXByaXZhdGU6Ci0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qPiBtX3JlYWNoYWJsZUZ1bmN0aW9uczsKLX07Ci0KLVJlbmRlck1ldGFs
RnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRlciYgc3Ry
aW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdGNo
ZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCkKLXsK
LSAgICBhdXRvJiB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50ID0gKm1hdGNoZWRTZW1hbnRpY3MudmVy
dGV4U2hhZGVyOwotICAgIGF1dG8qIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA9IG1hdGNoZWRT
ZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXI7Ci0KLSAgICBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJl
ciByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlcjsKLSAgICByZWFjaGFibGVGdW5jdGlvbnNHYXRo
ZXJlci5WaXNpdG9yOjp2aXNpdCh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBpZiAoZnJh
Z21lbnRTaGFkZXJFbnRyeVBvaW50KQotICAgICAgICByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJl
ci5WaXNpdG9yOjp2aXNpdCgqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KTsKLSAgICBhdXRvIHJl
YWNoYWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyLnRha2VSZWFjaGFi
bGVGdW5jdGlvbnMoKTsKLQotICAgIGF1dG8gZnVuY3Rpb25NYXBwaW5nID0gZ2VuZXJhdGVNZXRh
bEZ1bmN0aW9uc01hcHBpbmcocHJvZ3JhbSk7Ci0gICAgCi0gICAgZW1pdFNoYXJlZE1ldGFsRnVu
Y3Rpb25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxlRnVuY3Rp
b25zLCBmdW5jdGlvbk1hcHBpbmcpOwotCi0gICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLmludHJp
bnNpY3MoKSwgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIFdURk1vdmUobWF0Y2hlZFNlbWFu
dGljcyksIGxheW91dCk7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rp
b25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAgICAgZnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyLnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHsgZnVuY3Rpb25NYXBwaW5nLmdldCgmdmVydGV4U2hhZGVyRW50cnlQb2ludCksIGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludCA/IGZ1bmN0aW9uTWFwcGluZy5nZXQoZnJhZ21lbnRTaGFk
ZXJFbnRyeVBvaW50KSA6IE1hbmdsZWRGdW5jdGlvbk5hbWUgeyAwIH0gfTsKLX0KLQotQ29tcHV0
ZU1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyBlbWl0TWV0YWxGdW5jdGlvbnMoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIs
IE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlv
dXQpCi17Ci0gICAgYXV0byYgZW50cnlQb2ludCA9ICptYXRjaGVkU2VtYW50aWNzLnNoYWRlcjsK
LQotICAgIFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhl
cmVyOwotICAgIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KGVudHJ5
UG9pbnQpOwotICAgIGF1dG8gcmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25z
R2F0aGVyZXIudGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwotCi0gICAgYXV0byBmdW5jdGlvbk1h
cHBpbmcgPSBnZW5lcmF0ZU1ldGFsRnVuY3Rpb25zTWFwcGluZyhwcm9ncmFtKTsKLSAgICBlbWl0
U2hhcmVkTWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCBy
ZWFjaGFibGVGdW5jdGlvbnMsIGZ1bmN0aW9uTWFwcGluZyk7Ci0KLSAgICBDb21wdXRlRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVy
LCBwcm9ncmFtLmludHJpbnNpY3MoKSwgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIFdURk1v
dmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAo
cmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAg
ICAgICAgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgZnVuY3Rpb25NYXBwaW5nLmdldCgmZW50cnlQb2ludCkg
fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xGdW5jdGlvbldyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlNDQ5MzlmMTYxNmU4ZTEyM2I1OWUzZTc4MGI1Zjk2Njk0NzA4ODMzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpY01hdGNoZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1uYW1lc3BhY2UgTWV0YWwgewot
Ci1jbGFzcyBUeXBlTmFtZXI7Ci0KLXN0cnVjdCBSZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2lu
dHMgewotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1l
OwotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7
Ci19OwotUmVuZGVyTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhT
dHJpbmdCdWlsZGVyJiwgUHJvZ3JhbSYsIFR5cGVOYW1lciYsIE1hdGNoZWRSZW5kZXJTZW1hbnRp
Y3MmJiwgTGF5b3V0Jik7Ci0KLXN0cnVjdCBDb21wdXRlTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRz
IHsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKLX07Ci1D
b21wdXRlTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdC
dWlsZGVyJiwgUHJvZ3JhbSYsIFR5cGVOYW1lciYsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYs
IExheW91dCYpOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xNYW5nbGVkTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMTWFuZ2xlZE5hbWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRiNjA0ZWQ3M2UwMjczODYxM2RjNmRjYmIzYzQ1ODM0YzIyZGU5ZWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNYW5nbGVkTmFtZXMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDE4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdHJ1Y3QgTWFuZ2xlZFZhcmlhYmxl
TmFtZSB7Ci0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQotICAgIHVuc2lnbmVk
IHZhbHVlIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAidmFyaWFibGUiOwotfTsKLQotc3Ry
dWN0IE1hbmdsZWRUeXBlTmFtZSB7Ci0gICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAidHlwZSI7Ci19OwotCi1zdHJ1Y3QgTWFuZ2xl
ZFN0cnVjdHVyZUVsZW1lbnROYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJzdHJ1Y3R1cmVFbGVtZW50IjsKLX07Ci0K
LXN0cnVjdCBNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1
ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJlbnVtZXJhdGlv
bk1lbWJlciI7Ci19OwotCi1zdHJ1Y3QgTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7Ci0gICAgdW5zaWdu
ZWQgdmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcmVmaXggPSAiZnVu
Y3Rpb24iOwotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmlu
ZyhwcmVmaXgsIHZhbHVlKTsgfQotfTsKLQotdXNpbmcgTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUg
PSBWYXJpYW50PE1hbmdsZWRUeXBlTmFtZSwgU3RyaW5nPjsKLQotfSAvLyBuYW1lc3BhY2UgTWV0
YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTWFuZ2xlZE5hbWVUeXBlPgotY2xh
c3MgTWFuZ2xlZE5hbWVBZGFwdG9yIHsKLXB1YmxpYzoKLSAgICBNYW5nbGVkTmFtZUFkYXB0b3Io
TWFuZ2xlZE5hbWVUeXBlIG5hbWUpCi0gICAgICAgIDogbV9uYW1lIHsgbmFtZSB9Ci0gICAgewot
ICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIHN0cmxlbihNYW5nbGVkTmFt
ZVR5cGU6OnByZWZpeCkgKyBsZW5ndGhPZkludGVnZXJBc1N0cmluZyhtX25hbWUudmFsdWUpOyB9
Ci0gICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9u
KQotICAgIHsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCks
IHN0cmxlbihNYW5nbGVkTmFtZVR5cGU6OnByZWZpeCkpOwotICAgICAgICB3cml0ZUludGVnZXJU
b0J1ZmZlcihtX25hbWUudmFsdWUsIGRlc3RpbmF0aW9uICsgc3RybGVuKE1hbmdsZWROYW1lVHlw
ZTo6cHJlZml4KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1hbmdsZWROYW1lVHlwZSBtX25h
bWU7Ci19OwotCi10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldI
TFNMOjpNZXRhbDo6TWFuZ2xlZFZhcmlhYmxlTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5h
bWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFZhcmlhYmxlTmFtZT4gewot
cHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFu
Z2xlZFZhcmlhYmxlTmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1l
KQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFu
Z2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lPiB7
Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkVHlwZU5hbWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkK
LSAgICB7Ci0gICAgfQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUsIHZvaWQ+IDog
cHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRT
dHJ1Y3R1cmVFbGVtZW50TmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIG5hbWUpCi0g
ICAgICAgIDogTWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1w
bGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFu
Z2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFw
dG9yPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZT4g
ewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
TWFuZ2xlZEVudW1lcmF0aW9uTWVtYmVyTmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1l
QWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdU
eXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUsIHZv
aWQ+IDogcHVibGljIE1hbmdsZWROYW1lQWRhcHRvcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRGdW5jdGlvbk5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJD
b3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUgbmFtZSkKLSAgICAgICAgOiBN
YW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8PiBj
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5h
dGl2ZVR5cGVOYW1lLCB2b2lkPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29u
c3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkT3JOYXRpdmVUeXBlTmFtZSYgbmFtZSkK
LSAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQg
bGVuZ3RoKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbmFtZSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5h
bWUmIG1hbmdsZWRUeXBlTmFtZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBzdHJsZW4oV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6OnByZWZpeCkgKyBsZW5ndGhPZklu
dGVnZXJBc1N0cmluZyhtYW5nbGVkVHlwZU5hbWUudmFsdWUpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0K
LQotICAgIGJvb2wgaXM4Qml0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fbmFtZSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkVHlwZU5hbWUmKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAg
ICAgICAgICAgIHJldHVybiBzdHJpbmcuaXM4Qml0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3
cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgV1RGOjpz
d2l0Y2hPbihtX25hbWUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6TWFuZ2xlZFR5cGVOYW1lJiBtYW5nbGVkVHlwZU5hbWUpIHsKLSAgICAgICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lOjpw
cmVmaXgpLCBzdHJsZW4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWU6OnBy
ZWZpeCkpOwotICAgICAgICAgICAgICAgIHdyaXRlSW50ZWdlclRvQnVmZmVyKG1hbmdsZWRUeXBl
TmFtZS52YWx1ZSwgZGVzdGluYXRpb24gKyBzdHJsZW4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpN
YW5nbGVkVHlwZU5hbWU6OnByZWZpeCkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdWaWV3IHsg
c3RyaW5nIH0uZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGVzdGluYXRpb24pOwotICAgICAg
ICAgICAgfQotICAgICAgICApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lJiBtX25hbWU7Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1l
dGFsQ29kZUdlbmVyYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YWZl
YmRhNTZkNmQ2NzMwMThkODMxYWY2NDMyZjM3ZDE2MTdiMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25Xcml0ZXIuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVOYW1lci5oIgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wTWV0
YWxDb2RlID0gZmFsc2U7Ci0KLXN0YXRpYyBTdHJpbmdWaWV3IG1ldGFsQ29kZVByb2xvZ3VlKCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nVmlldyB7Ci0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfc3Rk
bGliPlxuIgotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX2F0b21pYz5cbiIKLSAgICAgICAgIiNp
bmNsdWRlIDxtZXRhbF9tYXRoPlxuIgotICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3JlbGF0aW9u
YWw+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfY29tcHV0ZT5cbiIKLSAgICAgICAgIiNp
bmNsdWRlIDxtZXRhbF90ZXh0dXJlPlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJ1c2luZyBu
YW1lc3BhY2UgbWV0YWw7XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInRlbXBsYXRlIDx0eXBl
bmFtZSBULCBpbnQgQ29scywgaW50IFJvd3M+XG4iCi0gICAgICAgICJzdHJ1Y3QgV1NMTWF0cml4
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdmVjPFQsIFJvd3M+IGNvbHVtbnNbQ29s
c107XG4iCi0gICAgICAgICIgICAgcHJpdmF0ZTpcbiIKLSAgICAgICAgIiAgICBwdWJsaWM6XG4i
Ci0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeCgpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0g
ICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeCgpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAg
ICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRocmVhZCBXU0xNYXRyaXg8VCwgQ29s
cywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5l
IFdTTE1hdHJpeChjb25zdCBkZXZpY2UgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSB0
aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3Qg
Y29uc3RhbnQgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSB0aHJlYWQgPSBkZWZhdWx0
O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkZ3JvdXAgV1NM
TWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSB0aHJlYWQgPSBkZWZhdWx0O1xuIgotICAgICAg
ICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkIFdTTE1hdHJpeDxULCBDb2xzLCBS
b3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBX
U0xNYXRyaXgoY29uc3QgZGV2aWNlIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29u
c3RhbnQgPSBkZWZhdWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3Qg
Y29uc3RhbnQgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1
bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWRncm91cCBX
U0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0YW50ID0gZGVmYXVsdDtcbiIKLSAg
ICAgICAgIiAgICBwdWJsaWM6XG4iCi0gICAgICAgICIgICAgaW5saW5lIHRocmVhZCB2ZWM8VCwg
Um93cz4gJm9wZXJhdG9yW10oaW50IHIpIHRocmVhZFxuIgotICAgICAgICAiICAgIHtcbiIKLSAg
ICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgot
ICAgICAgICAiICAgIGlubGluZSBkZXZpY2UgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCBy
KSBkZXZpY2VcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBj
b2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgdGhy
ZWFkZ3JvdXAgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSB0aHJlYWRncm91cFxuIgot
ICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4i
Ci0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBjb25zdCB0aHJlYWQgdmVj
PFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSBjb25zdCB0aHJlYWRcbiIKLSAgICAgICAgIiAg
ICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAi
ICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgZGV2aWNlIHZlYzxULCBSb3dzPiAm
b3BlcmF0b3JbXShpbnQgcikgY29uc3QgZGV2aWNlXG4iCi0gICAgICAgICIgICAge1xuIgotICAg
ICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0g
ICAgICAgICIgICAgaW5saW5lIGNvbnN0IGNvbnN0YW50IHZlYzxULCBSb3dzPiAmb3BlcmF0b3Jb
XShpbnQgcikgY29uc3QgY29uc3RhbnRcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIg
ICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAg
IiAgICBpbmxpbmUgY29uc3QgdGhyZWFkZ3JvdXAgdmVjPFQsIFJvd3M+ICZvcGVyYXRvcltdKGlu
dCByKSBjb25zdCB0aHJlYWRncm91cFxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAg
ICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAi
fTtcbiIKLQotCi0gICAgfTsKLQotfQotCi1zdGF0aWMgdm9pZCBkdW1wTWV0YWxDb2RlSWZOZWVk
ZWQoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKLXsKLSAgICBpZiAoZHVtcE1ldGFsQ29k
ZSkgewotICAgICAgICBkYXRhTG9nTG4oIkdlbmVyYXRlZCBNZXRhbCBjb2RlOiAiKTsKLSAgICAg
ICAgZGF0YUxvZ0xuKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQotfQotCi1SZW5k
ZXJNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwgTWF0Y2hlZFJl
bmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotewotICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
ZXRhbENvZGVQcm9sb2d1ZSgpKTsKLQotICAgIFR5cGVOYW1lciB0eXBlTmFtZXIocHJvZ3JhbSk7
Ci0gICAgdHlwZU5hbWVyLmVtaXRNZXRhbFR5cGVzKHN0cmluZ0J1aWxkZXIpOwotICAgIAotICAg
IGF1dG8gbWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzID0gTWV0YWw6OmVtaXRNZXRhbEZ1bmN0aW9u
cyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFu
dGljcyksIGxheW91dCk7Ci0KLSAgICBkdW1wTWV0YWxDb2RlSWZOZWVkZWQoc3RyaW5nQnVpbGRl
cik7Ci0KLSAgICByZXR1cm4geyBXVEZNb3ZlKHN0cmluZ0J1aWxkZXIpLCBXVEZNb3ZlKG1ldGFs
RnVuY3Rpb25FbnRyeVBvaW50cy5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUpLCBXVEZNb3Zl
KG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cy5tYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZSkg
fTsKLX0KLQotQ29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9n
cmFtLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYg
bGF5b3V0KQotewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtZXRhbENvZGVQcm9sb2d1ZSgpKTsKLQotICAgIFR5cGVOYW1lciB0eXBl
TmFtZXIocHJvZ3JhbSk7Ci0gICAgdHlwZU5hbWVyLmVtaXRNZXRhbFR5cGVzKHN0cmluZ0J1aWxk
ZXIpOwotCi0gICAgYXV0byBtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgPSBNZXRhbDo6ZW1pdE1l
dGFsRnVuY3Rpb25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgV1RGTW92ZSht
YXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLQotICAgIGR1bXBNZXRhbENvZGVJZk5lZWRlZChz
dHJpbmdCdWlsZGVyKTsKLQotICAgIHJldHVybiB7IFdURk1vdmUoc3RyaW5nQnVpbGRlciksIFdU
Rk1vdmUobWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRFbnRyeVBvaW50TmFtZSkgfTsK
LX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TWV0YWxDb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzYzQ4NzYxN2NiOTA1YWUyZWIwNjk0MGExNzRlNDA5NTgyYjhjM2JiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5o
IgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xT
ZW1hbnRpY01hdGNoZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3Jh
bTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RydWN0IFJlbmRlck1ldGFsQ29kZSB7Ci0gICAg
U3RyaW5nQnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmds
ZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRG
cmFnbWVudEVudHJ5UG9pbnROYW1lOwotfTsKLS8vIENhbid0IGZhaWwuIEFueSBmYWlsdXJlIGNo
ZWNrcyBuZWVkIHRvIGJlIGRvbmUgZWFybGllciwgaW4gdGhlIGJhY2tlbmQtYWdub3N0aWMgcGFy
dCBvZiB0aGUgY29tcGlsZXIuCi1SZW5kZXJNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJv
Z3JhbSYsIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQm
KTsKLQotc3RydWN0IENvbXB1dGVNZXRhbENvZGUgewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxT
b3VyY2U7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci19
OwotLy8gQ2FuJ3QgZmFpbC4gQW55IGZhaWx1cmUgY2hlY2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJs
aWVyLCBpbiB0aGUgYmFja2VuZC1hZ25vc3RpYyBwYXJ0IG9mIHRoZSBjb21waWxlci4KLUNvbXB1
dGVNZXRhbENvZGUgZ2VuZXJhdGVNZXRhbENvZGUoUHJvZ3JhbSYsIE1hdGNoZWRDb21wdXRlU2Vt
YW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmQyYzhh
ODdiYzY3YzlmZTYyY2UzZTY0NGE2NjRhODY0YzQ2NWRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJXSExTTEFkZHJl
c3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNp
bmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
VHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotI2luY2x1ZGUg
IldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGlj
IFN0cmluZyBtYXBGdW5jdGlvbk5hbWUoU3RyaW5nJiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgaWYg
KGZ1bmN0aW9uTmFtZSA9PSAiZGR4IikKLSAgICAgICAgcmV0dXJuICJkZmR4Il9zdHI7Ci0gICAg
aWYgKGZ1bmN0aW9uTmFtZSA9PSAiZGR5IikKLSAgICAgICAgcmV0dXJuICJkZmR5Il9zdHI7Ci0g
ICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiYXNpbnQiKQotICAgICAgICByZXR1cm4gImFzX3R5cGU8
aW50MzJfdD4iX3N0cjsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJhc3VpbnQiKQotICAgICAg
ICByZXR1cm4gImFzX3R5cGU8dWludDMyX3Q+Il9zdHI7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9
PSAiYXNmbG9hdCIpCi0gICAgICAgIHJldHVybiAiYXNfdHlwZTxmbG9hdD4iX3N0cjsKLSAgICBy
ZXR1cm4gZnVuY3Rpb25OYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIGF0b21pY05hbWUoU3RyaW5n
IGlucHV0KQotewotICAgIGlmIChpbnB1dCA9PSAiQWRkIikKLSAgICAgICAgcmV0dXJuICJmZXRj
aF9hZGQiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIkFuZCIpCi0gICAgICAgIHJldHVybiAiZmV0
Y2hfYW5kIl9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJFeGNoYW5nZSIpCi0gICAgICAgIHJldHVy
biAiZXhjaGFuZ2UiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk1heCIpCi0gICAgICAgIHJldHVy
biAiZmV0Y2hfbWF4Il9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJNaW4iKQotICAgICAgICByZXR1
cm4gImZldGNoX21pbiJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiT3IiKQotICAgICAgICByZXR1
cm4gImZldGNoX29yIl9zdHI7Ci0gICAgQVNTRVJUKGlucHV0ID09ICJYb3IiKTsKLSAgICAgICAg
cmV0dXJuICJmZXRjaF94b3IiX3N0cjsKLX0KLQotc3RhdGljIGludCB2ZWN0b3JMZW5ndGgoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBp
bnQgdmVjdG9yTGVuZ3RoID0gMTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBl
QXJndW1lbnRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFy
YXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgQVNTRVJUKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0pKTsKLSAgICAgICAgdmVjdG9yTGVuZ3RoID0gV1RG
OjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBl
QXJndW1lbnRzKClbMV0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHZlY3Rvckxlbmd0aDsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIHZlY3RvclN1ZmZpeChp
bnQgdmVjdG9yTGVuZ3RoKQotewotICAgIHN3aXRjaCAodmVjdG9yTGVuZ3RoKSB7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICByZXR1cm4gIiI7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gIjIi
OwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuICIzIjsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlQodmVjdG9yTGVuZ3RoID09IDQpOwotICAgICAgICByZXR1cm4gIjQiOwotICAgIH0K
LX0KLQotZW51bSBjbGFzcyBTYW1wbGVUeXBlIHsKLSAgICBTYW1wbGUsCi0gICAgU2FtcGxlTGV2
ZWwsCi0gICAgU2FtcGxlQmlhcywKLSAgICBTYW1wbGVHcmFkCi19OwotCi1zdGF0aWMgc3RkOjpv
cHRpb25hbDxTYW1wbGVUeXBlPiBzYW1wbGVUeXBlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
KQotewotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZSIpCi0gICAgICAgIHJldHVybiBT
YW1wbGVUeXBlOjpTYW1wbGU7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlTGV2ZWwi
KQotICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlTGV2ZWw7Ci0gICAgaWYgKGZ1bmN0
aW9uTmFtZSA9PSAiU2FtcGxlQmlhcyIpCi0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1w
bGVCaWFzOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUdyYWQiKQotICAgICAgICBy
ZXR1cm4gU2FtcGxlVHlwZTo6U2FtcGxlR3JhZDsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
fQotCi12b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIsIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiwgY29uc3QgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmdzLCBNYW5nbGVkVmFy
aWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5cGVOYW1lciYgdHlwZU5hbWVyKQotewotICAgIGF1dG8g
YXNNYXRyaXhUeXBlID0gWyZdIChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgLT4gQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIHsKLSAgICAgICAgYXV0byYgcmVhbFR5cGUgPSB1bm5h
bWVkVHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKCFyZWFsVHlwZS5pc05hdGl2ZVR5cGVE
ZWNsYXJhdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgYXV0
byYgbWF5YmVNYXRyaXhUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHJlYWxUeXBlKTsKLSAgICAgICAgaWYgKG1heWJlTWF0cml4VHlwZS5pc01hdHJpeCgpKQotICAg
ICAgICAgICAgcmV0dXJuICZtYXliZU1hdHJpeFR5cGU7Ci0KLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfTsKLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmlzQ2FzdCgp
KSB7Ci0gICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnR5cGUoKTsKLSAgICAgICAgYXV0byBtZXRhbFJldHVyblR5cGVOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShyZXR1cm5UeXBlKTsKLQotICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSkgewotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobWV0YWxSZXR1cm5UeXBlTmFtZSwgIiB7IH0iKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgYXV0byYgcGFyYW1l
dGVyVHlwZSA9ICpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpOwotCi0gICAgICAgICAgICBhdXRvIGlzRW51bWVyYXRpb25EZWZpbml0aW9uID0gW10gKGF1
dG8mIHR5cGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXM8QVNUOjpOYW1lZFR5cGU+KHR5
cGUpICYmIGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odHlwZSkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZpZWRS
ZXR1cm5UeXBlID0gcmV0dXJuVHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpc0Vu
dW1lcmF0aW9uRGVmaW5pdGlvbih1bmlmaWVkUmV0dXJuVHlwZSkgJiYgIWlzRW51bWVyYXRpb25E
ZWZpbml0aW9uKHBhcmFtZXRlclR5cGUudW5pZnlOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmaWVkUmV0dXJuVHlwZSkpOwot
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2FzdDwiLCBtZXRh
bFJldHVyblR5cGVOYW1lLCAiPigoIik7Ci0gICAgICAgICAgICAgICAgYm9vbCBsb29wZWRPbmNl
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYm9vbCBoYXNaZXJvQ2FzZSA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVu
dW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsb29wZWRPbmNl
KQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiB8fCAiKTsK
LSAgICAgICAgICAgICAgICAgICAgaGFzWmVyb0Nhc2UgfD0gIW1lbWJlci5nZXQoKS52YWx1ZSgp
OwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzBdLCAiID09
ICIsIG1lbWJlci5nZXQoKS52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbG9vcGVkT25j
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoaGFzWmVyb0Nhc2UsIGhhc1plcm9DYXNlKTsKLQotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpID8gIiwgYXJnc1swXSwgIiA6IDApIik7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RhdGljX2Nhc3Q8Iiwg
bWV0YWxSZXR1cm5UeXBlTmFtZSwgIj4oIiwgYXJnc1swXSwgIikiKTsKLQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGF1dG8qIG1hdHJpeFR5cGUgPSBhc01h
dHJpeFR5cGUocmV0dXJuVHlwZSkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGVpdGhlciBjb25z
dHJ1Y3Rpbmcgd2l0aCBhbGwgaW5kaXZpZHVhbCBlbGVtZW50cywgb3Igd2l0aAotICAgICAgICAg
ICAgLy8gdmVjdG9ycyBmb3IgZWFjaCBjb2x1bW4uCi0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBpZiAoYXJncy5zaXplKCkgPT0gbWF0cml4VHlw
ZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1
Y3Rpbmcgd2l0aCB2ZWN0b3JzIGZvciBlYWNoIGNvbHVtbi4KLSAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFt
ZSwgIi5jb2x1bW5zWyIsIGksICJdID0gIiwgYXJnc1tpXSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpbmcgd2l0
aCBhbGwgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJncy5zaXpl
KCkgPT0gbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCkgKiBtYXRyaXhUeXBlLT5u
dW1iZXJPZk1hdHJpeFJvd3MoKSk7Ci0KLSAgICAgICAgICAgICAgICBzaXplX3QgYXJnTnVtYmVy
ID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdHJpeFR5cGUt
Pm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeFJvd3MoKTsgKytq
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnTnVtYmVyKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgIi5jb2x1bW5zWyIs
IGksICJdWyIsIGosICJdID0gIiwgYXJnc1thcmdOdW1iZXJdKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICsrYXJnTnVtYmVyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWV0YWxSZXR1cm5UeXBlTmFtZSwgJygnKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaSkKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGFyZ3NbaV0pOwotICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5pc09wZXJhdG9yKCkpIHsKLSAgICAgICAgYXV0byBvcGVyYXRv
ck5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJh
dG9yIl9zdHIubGVuZ3RoKCkpOwotCi0gICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBv
ayB0byBkbyBzaW5jZSB0aGUgYXJncyB0byB0aGlzIGZ1bmN0aW9uIGFyZSBhbGwgdGVtcHMuCi0g
ICAgICAgICAgICAvLyBTbyB0aGluZ3MgbGlrZSArKyBhbmQgLS0gYXJlIG9rIHRvIGRvLgotCi0g
ICAgICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3Vs
dE5hbWUsICdbJywgaSwgIl0gPSAiLCBvcGVyYXRvck5hbWUsIGFyZ3NbMF0sICdbJywgaSwgJ10n
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9wZXJhdG9yTmFtZSwgYXJnc1swXSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBpZiAoYXV0
byogbGVmdE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByaWdodE1h
dHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KClbMV0tPnR5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBtYXRyaXggPG9wPiBtYXRyaXgK
LSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZWZ0TWF0cml4LT5udW1iZXJPZk1hdHJpeENv
bHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdz
WzBdLCAnWycsIGksICJdICIsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnWycsIGksICdd
Jyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIG1hdHJpeCA8b3A+IHNjYWxhcgotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlZnRNYXRyaXgtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
cmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIGFyZ3NbMF0sICdbJywgaSwgIl0gIiwgb3BlcmF0
b3JOYW1lLCAnICcsIGFyZ3NbMV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHJpZ2h0TWF0cml4ID0gYXNNYXRyaXhUeXBl
KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkgewot
ICAgICAgICAgICAgQVNTRVJUKCFhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKLSAgICAgICAgICAgIC8vIHNjYWxhciA8b3A+
IG1hdHJpeAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByaWdodE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhD
b2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJyAnLCBv
cGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgJ1snLCBpLCAnXScpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHNjYWxhciA8b3A+IHNjYWxhcgotICAg
ICAgICAgICAgLy8gdmVjdG9yIDxvcD4gdmVjdG9yCi0gICAgICAgICAgICAvLyB2ZWN0b3IgPG9w
PiBzY2FsYXIKLSAgICAgICAgICAgIC8vIHNjYWxhciA8b3A+IHZlY3RvcgotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJygnLCBhcmdzWzBdLCAnICcs
IG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiY29zIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAic2luIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
dGFuIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYWNv
cyIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzaW4i
Ci0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdGFuIgot
ICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiY29zaCIKLSAg
ICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNpbmgiCi0gICAg
ICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJ0YW5oIgotICAgICAg
ICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiY2VpbCIKLSAgICAgICAg
fHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImV4cCIKLSAgICAgICAgfHwg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImZsb29yIgotICAgICAgICB8fCBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAibG9nIgotICAgICAgICB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAicm91bmQiCi0gICAgICAgIHx8IG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJ0cnVuYyIKLSAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImRkeCIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImRkeSIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzbm9ybWFsIgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNmaW5pdGUiCi0gICAgICAgIHx8IG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJpc2luZiIKLSAgICAgICAgfHwgbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzbmFuIgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXNpbnQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc3VpbnQiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2Zsb2F0IgotICAgICAgICB8fCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAibGVuZ3RoIikgewotICAgICAgICBBU1NFUlQobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIG1hcEZ1bmN0aW9uTmFtZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSksICcoJywgYXJnc1swXSwgJyknKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAicG93IiB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRh
bjIiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAg
ICAgICAgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCksICcoJywgYXJnc1swXSwgIiwg
IiwgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiY2xhbXAiKSB7Ci0gICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7Ci0K
LSAgICAgICAgaWYgKGF1dG8qIG1hdHJpeFR5cGUgPSBhc01hdHJpeFR5cGUobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi50eXBlKCkpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKCcpOwotICAgICAgICAgICAgYm9vbCByYW5PbmNlID0gZmFsc2U7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5z
KCk7ICsraSkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtYXRy
aXhUeXBlLT5udW1iZXJPZk1hdHJpeFJvd3MoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChyYW5PbmNlKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgIHJhbk9uY2UgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdE5hbWUsICdbJywgaSwgIl1bIiwgaiwgIl0gPSBjbGFtcCgiLCBhcmdzWzBdLCAnWycs
IGksICJdWyIsIGosICJdLCAiLCBhcmdzWzFdLCAnWycsIGksICJdWyIsIGosICJdLCAiLCBhcmdz
WzJdLCAnWycsIGksICJdWyIsIGosICJdKSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUs
ICIpIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICAiY2xhbXAoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwg
IiwgYXJnc1syXSwgJyknKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1vcnlCYXJy
aWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICIodGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV9kZXZp
Y2UpLCB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdyb3VwKSwgdGhy
ZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90ZXh0dXJlKSkiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKSB7Ci0gICAgICAgIEFTU0VSVCgh
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAidGhyZWFkZ3JvdXBfYmFycmllciht
ZW1fZmxhZ3M6Om1lbV9kZXZpY2UpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdyb3VwTWVtb3J5QmFycmll
cldpdGhHcm91cFN5bmMiKSB7Ci0gICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAidGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRn
cm91cCkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKS5zdGFydHNXaXRoKCJJbnRlcmxvY2tlZCJfc3RyKSkgewotICAg
ICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkludGVybG9ja2Vk
Q29tcGFyZUV4Y2hhbmdlIikgewotICAgICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIoYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2Vha19leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAmIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwg
IiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSwgIiwKLSAgICAg
ICAgICAgICAgICAnKicsIGFyZ3NbM10sICIgPSAiLCBhcmdzWzFdLCAnKScpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKLSAgICAgICAgYXV0byBuYW1lID0g
YXRvbWljTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIklu
dGVybG9ja2VkIl9zdHIubGVuZ3RoKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAnKicsIGFyZ3NbMl0sICIgPSBhdG9taWNfIiwgbmFtZSwgIl9leHBsaWNp
dCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCkiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvIHNhbXBsZVR5cGUgPSBXSExT
TDo6TWV0YWw6OnNhbXBsZVR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpKSB7
Ci0gICAgICAgIHNpemVfdCBiYXNlQXJndW1lbnRDb3VudCA9IDA7Ci0gICAgICAgIHN3aXRjaCAo
KnNhbXBsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6Ci0gICAgICAg
ICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDoKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpT
YW1wbGVCaWFzOgotICAgICAgICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSA0OwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlR3JhZDoKLSAgICAgICAg
ICAgIGJhc2VBcmd1bWVudENvdW50ID0gNTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5z
aXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJhc2VBcmd1bWVudENvdW50ICsgMSk7Ci0gICAgICAgIAot
ICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byYg
bG9jYXRpb25UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KGRvd25j
YXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVsyXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIGxvY2F0aW9uVmVjdG9y
TGVuZ3RoID0gdmVjdG9yTGVuZ3RoKGxvY2F0aW9uVHlwZSk7Ci0gICAgICAgIGF1dG8mIHJldHVy
blR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNU
OjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgp
KSk7Ci0gICAgICAgIGF1dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVy
blR5cGUpOwotCi0gICAgICAgIGludCBhcmd1bWVudEluZGV4ID0gMDsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4XSwgIi5zYW1wbGUoIiwgYXJnc1thcmd1
bWVudEluZGV4ICsgMV0sICIsICIpOwotICAgICAgICBhcmd1bWVudEluZGV4ICs9IDI7Ci0KLSAg
ICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4XSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygw
LCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXhdLCAn
LicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkpOwot
ICAgICAgICAgICAgKythcmd1bWVudEluZGV4OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbYXJndW1lbnRJbmRleCsrXSk7Ci0KLSAgICAgICAg
c3dpdGNoICgqc2FtcGxlVHlwZSkgewotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZToK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVs
OgotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgbGV2ZWwoIiwgYXJnc1thcmd1
bWVudEluZGV4KytdLCAiKSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2Ft
cGxlVHlwZTo6U2FtcGxlQmlhczoKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
IGJpYXMoIiwgYXJnc1thcmd1bWVudEluZGV4KytdLCAiKSIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlR3JhZDoKLSAgICAgICAgICAgIGlmICh0
ZXh0dXJlVHlwZS5pc0N1YmVUZXh0dXJlKCkpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgZ3JhZGllbnRjdWJlKCIsIGFyZ3NbYXJndW1lbnRJbmRleF0sICIsICIsIGFy
Z3NbYXJndW1lbnRJbmRleCArIDFdLCAiKSIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGdyYWRpZW50MmQoIiwgYXJnc1thcmd1bWVu
dEluZGV4XSwgIiwgIiwgYXJnc1thcmd1bWVudEluZGV4ICsgMV0sICIpIik7Ci0gICAgICAgICAg
ICBhcmd1bWVudEluZGV4ICs9IDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gYmFzZUFyZ3VtZW50Q291bnQgKyAxKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIiwgYXJnc1thcmd1bWVudEluZGV4KytdKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIikiKTsKLSAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIi4iLCAieHl6dyJfc3RyLnN1YnN0cmlu
ZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJMb2FkIikgewotICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotCi0gICAgICAgIGF1dG8mIHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAg
ICAgICBhdXRvJiBsb2NhdGlvblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpWzFdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gbG9j
YXRpb25WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgobG9jYXRpb25UeXBlKTsKLSAgICAgICAg
YXV0byYgcmV0dXJuVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCku
dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JM
ZW5ndGgocmV0dXJuVHlwZSk7Ci0gICAgICAgIGF1dG8gbG9jYXRpb25UeXBlTmFtZSA9IHR5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9jYXRpb25UeXBlKTsKLQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKCcsIGFyZ3NbMV0sICIgPSAiKTsKLSAgICAgICAgaWYgKHRleHR1cmVU
eXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rv
ckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImNsYW1wKCIs
IGFyZ3NbMV0sICIsICIsIGxvY2F0aW9uVHlwZU5hbWUsICcoJyk7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
Iik7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiLCBsb2NhdGlvblR5
cGVOYW1lLCAnKCcpOwotCi0gICAgICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0geyAid2lk
dGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9OwotICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICAgICAgYXJnc1swXSwgIi5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpIC0gMSIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpIC0gMSkpIik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JMZW5ndGggPT0gMSkKLSAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiY2xhbXAoIiwgYXJnc1sxXSwgIiwgMCwgIiwg
YXJnc1swXSwgIi5nZXRfd2lkdGgoKSAtIDEpIik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiY2xhbXAoIiwgYXJnc1sxXSwgIiwgIiwg
bG9jYXRpb25UeXBlTmFtZSwgIigwLCAwIik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsIDAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSwgIiwg
bG9jYXRpb25UeXBlTmFtZSwgJygnLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpIC0gMSwgIiwgYXJn
c1swXSwgIi5nZXRfaGVpZ2h0KCkgLSAxIik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsICIsIGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkgLSAxIik7Ci0gICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIikpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBhcmdzWzBdLCAiLnJlYWQoIik7Ci0K
LSAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKLSAgICAgICAgICAg
IEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
KSwgJygnLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJz
dHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgJyknKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChs
b2NhdGlvblZlY3Rvckxlbmd0aCksICcoJywgYXJnc1sxXSwgJyknKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4
dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKLQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnKScpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxvYWQiKSB7Ci0gICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgImF0b21pY19sb2FkX2V4
cGxpY2l0KCIsIGFyZ3NbMF0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJzdG9yZSIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAiYXRvbWljX3N0b3JlX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFy
Z3NbMV0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHZXREaW1l
bnNpb25zIikgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotCi0gICAgICAg
IGF1dG8mIHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotCi0gICAgICAgIHNpemVfdCBpbmRl
eCA9IDE7Ci0gICAgICAgIGJvb2wgaGFzTWlwTGV2ZWwgPSAhdGV4dHVyZVR5cGUuaXNXcml0YWJs
ZVRleHR1cmUoKSAmJiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMTsKLSAgICAg
ICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgY29uc3Qg
TWFuZ2xlZFZhcmlhYmxlTmFtZSYgd2lkdGhOYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICsr
aW5kZXg7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gaGVpZ2h0
TmFtZTsKLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAyKSB7
Ci0gICAgICAgICAgICBoZWlnaHROYW1lID0gYXJnc1tpbmRleF07Ci0gICAgICAgICAgICArK2lu
ZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFt
ZT4gZGVwdGhOYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigp
ID49IDMpIHsKLSAgICAgICAgICAgIGRlcHRoTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAgICAgICAg
ICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJp
YWJsZU5hbWU+IGVsZW1lbnRzTmFtZTsKLSAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVy
ZUFycmF5KCkpIHsKLSAgICAgICAgICAgIGVsZW1lbnRzTmFtZSA9IGFyZ3NbaW5kZXhdOwotICAg
ICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmds
ZWRWYXJpYWJsZU5hbWU+IG51bWJlck9mTGV2ZWxzTmFtZTsKLSAgICAgICAgaWYgKCF0ZXh0dXJl
VHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24o
KSAhPSAxKSB7Ci0gICAgICAgICAgICBudW1iZXJPZkxldmVsc05hbWUgPSBhcmdzW2luZGV4XTsK
LSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGluZGV4ID09
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0KLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAnKicsIHdpZHRoTmFtZSwgIiA9
ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCIpOwotICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLQotICAgICAgICBpZiAoaGVpZ2h0TmFtZSkgewotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIsICpoZWln
aHROYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0KCIpOwotICAgICAgICAgICAgaWYg
KGhhc01pcExldmVsKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3Nb
MV0pOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoZGVwdGhOYW1lKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICAiLCAqIiwgKmRlcHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIu
Z2V0X2RlcHRoKCIpOwotICAgICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZWxlbWVudHNOYW1lKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiLCAq
IiwgKmVsZW1lbnRzTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSIpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChudW1iZXJPZkxldmVsc05hbWUpIHsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIsICoiLCAqbnVtYmVyT2ZM
ZXZlbHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfbnVtX21pcF9sZXZlbHMoKSIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiR2F0aGVyIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiR2F0aGVyUmVkIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiU2FtcGxlQ21wIikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiU2FtcGxlQ21wTGV2ZWxaZXJvIikgewotICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1l
bnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiU3RvcmUiKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxl
bWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJBbHBoYSIpIHsKLSAgICAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4
MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckJsdWUiKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
fQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHYXRoZXJD
bXAiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJH
YXRoZXJDbXBSZWQiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJHYXRoZXJHcmVlbiIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xO
YXRpdmVGdW5jdGlvbldyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMDgxMTBhZTU5YmFjMDE0YzNiYjU3ZDQ5MDAxZWUxNDI3ODExOGVmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5h
bWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgSW50cmluc2ljczsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb247Ci0KLX0KLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgVHlwZU5hbWVy
OwotCi12b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24mLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4m
IGFyZ3VtZW50TmFtZXMsIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVy
Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE5hdGl2ZVR5cGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWE2OGNiZDFlY2Q1ZWFjNGI5ZmIzOWVkYzg2NTk5YjExNTUwN2RjNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIE1ldGFsIHsKLQotU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJ2b2lkIikKLSAgICAgICAgcmV0dXJuICJ2b2lkIl9zdHI7Ci0g
ICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImJvb2wiKQotICAgICAgICBy
ZXR1cm4gImJvb2wiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAidWludCIpCi0gICAgICAgIHJldHVybiAidWludDMyX3QiX3N0cjsKLSAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaW50IikKLSAgICAgICAgcmV0dXJuICJpbnQzMl90
Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImZsb2F0IikK
LSAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJhdG9taWNfaW50IikKLSAgICAgICAgcmV0dXJuICJhdG9taWNfaW50Il9z
dHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY191aW50
IikKLSAgICAgICAgcmV0dXJuICJhdG9taWNfdWludCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJzYW1wbGVyIikKLSAgICAgICAgcmV0dXJuICJzYW1wbGVy
Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInZlY3RvciIp
IHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCku
c2l6ZSgpID09IDIpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KVswXSkpOwotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8UmVmPEFTVDo6
VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0p
OwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsK
LSAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSk7Ci0gICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byBwcmVmaXggPSAoWyZd
KCkgLT4gU3RyaW5nIHsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAi
Ym9vbCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgICAgIGlmIChw
YXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAidWludCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJ1
aW50IjsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiaW50IikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gImludCI7Ci0gICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVy
VHlwZS5uYW1lKCkgPT0gImZsb2F0Iik7Ci0gICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAg
ICAgICAgfSkoKTsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpD
b25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
MV0pKTsKLSAgICAgICAgYXV0byYgY29uc3RhbnRFeHByZXNzaW9uID0gV1RGOjpnZXQ8QVNUOjpD
b25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
MV0pOwotICAgICAgICBhdXRvJiBpbnRlZ2VyTGl0ZXJhbCA9IGNvbnN0YW50RXhwcmVzc2lvbi5p
bnRlZ2VyTGl0ZXJhbCgpOwotICAgICAgICBhdXRvIHN1ZmZpeCA9IChbJl0oKSAtPiBTdHJpbmcg
ewotICAgICAgICAgICAgc3dpdGNoIChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIyIl9zdHI7Ci0gICAgICAgICAg
ICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIzIl9zdHI7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpID09
IDQpOwotICAgICAgICAgICAgICAgIHJldHVybiAiNCJfc3RyOwotICAgICAgICAgICAgfQotICAg
ICAgICB9KSgpOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwcmVmaXgsIHN1ZmZpeCk7Ci0g
ICAgfQotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJtYXRyaXgiKSB7
Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSA9PSAzKTsKLSAgICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFT
VDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
MF0pKTsKLSAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6OlR5
cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKTsK
LSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gdHlwZVJlZmVyZW5jZS0+dW5pZnlOb2RlKCk7Ci0g
ICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5v
ZGUpOwotICAgICAgICBhdXRvJiBwYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGF1dG8gcHJlZml4ID0gKFsmXSB7
Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyVHlwZS5uYW1lKCkgPT0gImJvb2wiKQotICAgICAg
ICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyVHlw
ZS5uYW1lKCkgPT0gImZsb2F0Iik7Ci0gICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKLSAgICAg
ICAgfSkoKTsKLQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiV1NMTWF0cml4PCIsIHByZWZp
eCwgIiwgIiwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm51bWJlck9mTWF0cml4Q29sdW1ucygpLCAi
LCAiLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubnVtYmVyT2ZNYXRyaXhSb3dzKCksICI+Iik7Ci0g
ICAgfQotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSA9PSAxKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpU
eXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkp
OwotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJl
bmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgYXV0
byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1
cmUxZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
UldUZXh0dXJlMUQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWQiX3N0cjsKLSAgICAg
ICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUxREFycmF5IikK
LSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTFkX2FycmF5Il9zdHI7Ci0gICAgICAgIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IikKLSAgICAg
ICAgICAgIHJldHVybiAidGV4dHVyZTFkX2FycmF5Il9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVU
eXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkQiKQotICAgICAgICAgICAgcmV0dXJu
ICJ0ZXh0dXJlMmQiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlJXVGV4dHVyZTJEIikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkIl9zdHI7
Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkRB
cnJheSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUyZF9hcnJheSJfc3RyOwotICAgICAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIp
Ci0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUyZF9hcnJheSJfc3RyOwotICAgICAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTNEIikKLSAgICAgICAgICAg
IHJldHVybiAidGV4dHVyZTNkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUz
ZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4
dHVyZUN1YmUiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlY3ViZSJfc3RyOwotICAgICAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQot
ICAgICAgICAgICAgcmV0dXJuICJkZXB0aDJkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGgyREFycmF5IikKLSAgICAgICAgICAg
IHJldHVybiAiZGVwdGgyZF9hcnJheSJfc3RyOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoQ3ViZSIpOwotICAgICAgICByZXR1cm4g
ImRlcHRoY3ViZSJfc3RyOwotICAgIH0pKCk7Ci0gICAgYXV0byBpbm5lclR5cGUgPSAoWyZdKCkg
LT4gU3RyaW5nIHsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludCIp
Ci0gICAgICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVu
Y2UtPm5hbWUoKSA9PSAidWludDIiKQotICAgICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0g
ICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gInVpbnQzIikKLSAgICAgICAgICAg
IHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09
ICJ1aW50NCIpCi0gICAgICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5
cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50IikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9z
dHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDIiKQotICAgICAg
ICAgICAgcmV0dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUo
KSA9PSAiaW50MyIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAo
dHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQ0IikKLSAgICAgICAgICAgIHJldHVybiAiaW50
Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImZsb2F0IikKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2Ut
Pm5hbWUoKSA9PSAiZmxvYXQyIikKLSAgICAgICAgICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAg
ICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiZmxvYXQzIikKLSAgICAgICAgICAg
IHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICAgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UtPm5hbWUo
KSA9PSAiZmxvYXQ0Iik7Ci0gICAgICAgIHJldHVybiAiZmxvYXQiX3N0cjsKLSAgICB9KSgpOwot
ICAgIGF1dG8gaXNSZWFkV3JpdGUgPSBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJS
V1RleHR1cmUxRCIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
UldUZXh0dXJlMURBcnJheSIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMkQiCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiCi0gICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIjsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcmVmaXgs
ICc8JywgaW5uZXJUeXBlLCAiLCAiLCBpc1JlYWRXcml0ZSA/ICJhY2Nlc3M6OnJlYWRfd3JpdGUi
IDogImFjY2Vzczo6c2FtcGxlIiwgJz4nKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgTWV0YWwKLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkwN2U5NjJkNjQyMWUzZmNkNGI0M2Mx
NmI4Y2VjY2QwZmM1NTg0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5h
dGl2ZVR5cGVXcml0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFy
YXRpb247Ci0KLX0KLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotU3RyaW5nIHdyaXRlTmF0aXZlVHlw
ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNzcxNTQxNDQ0ODYwMzM4YTQ4NzY4NWM1ZDJmMTAz
OWRhNTM2NTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5o
IgotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIK
LSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
TmF0aXZlVHlwZVdyaXRlci5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsK
LQotVHlwZU5hbWVyOjpUeXBlTmFtZXIoUHJvZ3JhbSYgcHJvZ3JhbSkKLSAgICA6IG1fcHJvZ3Jh
bShwcm9ncmFtKQotewotfQotCi1UeXBlTmFtZXI6On5UeXBlTmFtZXIoKSA9IGRlZmF1bHQ7Ci0K
LXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsK
LSAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZSh1bm5hbWVkVHlwZSk7Ci19Ci0KLXZvaWQgVHlw
ZU5hbWVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZp
bml0aW9uKQotewotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hbWVkVHlwZU1h
cHBpbmcuYWRkKCZlbnVtZXJhdGlvbkRlZmluaXRpb24sIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlv
bkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2VudW1lcmF0aW9uTWVtYmVyTWFwcGluZy5hZGQoJnN0YXRpY19jYXN0PEFTVDo6RW51
bWVyYXRpb25NZW1iZXImPihlbnVtZXJhdGlvbk1lbWJlciksIGdlbmVyYXRlTmV4dEVudW1lcmF0
aW9uTWVtYmVyTmFtZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChlbnVtZXJhdGlv
bkRlZmluaXRpb24pOwotCi0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5k
ZW5jeUdyYXBoLmFkZCgmZW51bWVyYXRpb25EZWZpbml0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4geyBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlw
ZSgpIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwotICAgIH0KLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgLy8gTmF0aXZlIHR5
cGUgZGVjbGFyYXRpb25zIGFscmVhZHkgaGF2ZSBuYW1lcywgYW5kIGFyZSBhbHJlYWR5IGRlY2xh
cmVkIGluIE1ldGFsLgotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRk
KCZuYXRpdmVUeXBlRGVjbGFyYXRpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFT
VDo6VW5uYW1lZFR5cGU+PiB7IH0pOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgewotICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbmFtZWRUeXBlTWFwcGluZy5hZGQoJnN0cnVjdHVyZURlZmluaXRp
b24sIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdChz
dHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiBuZWlnaGJvcnM7Ci0gICAgICAgIGZvciAoYXV0
byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVu
dHMoKSkgewotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0cnVjdHVyZUVsZW1lbnRN
YXBwaW5nLmFkZCgmc3RydWN0dXJlRWxlbWVudCwgZ2VuZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVu
dE5hbWUoKSk7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwotICAgICAgICAgICAgbmVpZ2hib3JzLmFwcGVuZChzdHJ1Y3R1cmVFbGVt
ZW50LnR5cGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVu
ZGVuY3lHcmFwaC5hZGQoJnN0cnVjdHVyZURlZmluaXRpb24sIFdURk1vdmUobmVpZ2hib3JzKSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYg
dHlwZURlZmluaXRpb24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmFt
ZWRUeXBlTWFwcGluZy5hZGQoJnR5cGVEZWZpbml0aW9uLCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgp
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICB9Ci0gICAgVmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVuY3lHcmFwaC5hZGQoJnR5cGVEZWZpbml0
aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4geyB0
eXBlRGVmaW5pdGlvbi50eXBlKCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlz
aXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGdlbmVyYXRlVW5pcXVlZFR5
cGVOYW1lKGV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgIFZpc2l0b3I6OnZpc2l0KGV4
cHJlc3Npb24pOwotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lv
biYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHBy
ZXNzaW9uLmFyZ3VtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJndW1lbnQp
OwotfQotCi1TdHJpbmcgVHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICByZXR1cm4gd3Jp
dGVOYXRpdmVUeXBlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19Ci0KLXN0YXRpYyBBU1Q6OlVu
bmFtZWRUeXBlKiBwYXJlbnQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAg
c3dpdGNoICh1bm5hbWVkVHlwZS5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OlR5cGVSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuICZkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5
cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OgotICAgICAgICBy
ZXR1cm4gJmRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQot
fQotCi12b2lkIFR5cGVOYW1lcjo6Z2VuZXJhdGVVbmlxdWVkVHlwZU5hbWUoQVNUOjpVbm5hbWVk
VHlwZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgYXV0byogcGFyZW50VW5uYW1lZFR5cGUgPSBwYXJl
bnQodW5uYW1lZFR5cGUpOwotICAgIGlmIChwYXJlbnRVbm5hbWVkVHlwZSkKLSAgICAgICAgZ2Vu
ZXJhdGVVbmlxdWVkVHlwZU5hbWUoKnBhcmVudFVubmFtZWRUeXBlKTsKLQotICAgIG1fdW5uYW1l
ZFR5cGVNYXBwaW5nLmVuc3VyZShVbm5hbWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0sIFsmXSB7
Ci0gICAgICAgIHJldHVybiBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpOwotICAgIH0pOwotfQotCi1j
bGFzcyBNZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBNZXRhbFR5cGVEZWNs
YXJhdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBzdGQ6OmZ1bmN0aW9u
PE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lKEFTVDo6TmFtZWRUeXBlJik+JiYgbWFuZ2xlZE5hbWVG
b3JOYW1lZFR5cGUpCi0gICAgICAgIDogbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShXVEZNb3Zl
KG1hbmdsZWROYW1lRm9yTmFtZWRUeXBlKSkKLSAgICAgICAgLCBtX3N0cmluZ0J1aWxkZXIoc3Ry
aW5nQnVpbGRlcikKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5h
bWVGb3JOYW1lZFR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICI7XG4iKTsKLSAgICB9Ci0KLSAg
ICBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRPck5hdGl2ZVR5cGVOYW1lKEFTVDo6TmFtZWRUeXBlJik+
IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGU7Ci0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdC
dWlsZGVyOwotfTsKLQotdm9pZCBUeXBlTmFtZXI6OmVtaXRNZXRhbFR5cGVEZWNsYXJhdGlvbnMo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKLXsKLSAgICBNZXRhbFR5cGVEZWNsYXJhdGlv
bldyaXRlciBtZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBbJl0oQVNU
OjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkgLT4gTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUgewotICAg
ICAgICByZXR1cm4gbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSk7Ci0gICAgfSk7Ci0gICAg
bWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0ZXIuVmlzaXRvcjo6dmlzaXQobV9wcm9ncmFtKTsKLX0K
LQotdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIE1hbmdsZWRU
eXBlTmFtZSBtYW5nbGVkTmFtZSwgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+JiBlbWl0dGVkTmFt
ZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5hbWVkVHlwZXMpCi17
Ci0gICAgaWYgKGVtaXR0ZWRVbm5hbWVkVHlwZXMuY29udGFpbnMoVW5uYW1lZFR5cGVLZXkgeyB1
bm5hbWVkVHlwZSB9KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNoICh1bm5hbWVkVHlw
ZS5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVu
Y2U6IHsKLSAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJl
ZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotCi0gICAgICAgIGF1dG8mIHBhcmVudCA9IHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xlZE5hbWUgPSBt
YW5nbGVkTmFtZUZvclR5cGUodHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2RlcGVuZGVuY3lHcmFwaC5maW5kKCZwYXJlbnQpOwotICAgICAg
ICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9kZXBlbmRlbmN5R3JhcGguZW5kKCkpOwotICAgICAgICBl
bWl0TmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBwYXJlbnQsIGl0ZXJhdG9yLT52
YWx1ZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHBhcmVudE1hbmdsZWROYW1lLCAnICcs
IG1hbmdsZWROYW1lLCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKLSAgICAgICAgYXV0byYgcG9pbnRlclR5
cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAg
YXV0byYgcGFyZW50ID0gcG9pbnRlclR5cGUuZWxlbWVudFR5cGUoKTsKLSAgICAgICAgYXV0byBw
YXJlbnRNYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lRm9yVHlwZShwYXJlbnQpOwotICAgICAgICBl
bWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgcGFyZW50TWFu
Z2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlw
ZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcGFyZW50TWFuZ2xlZE5hbWUsICIqICIsIG1hbmdsZWRO
YW1lLCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1l
ZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7Ci0gICAgICAgIGF1dG8mIGFycmF5UmVmZXJl
bmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7
Ci0KLSAgICAgICAgYXV0byYgcGFyZW50ID0gYXJyYXlSZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBl
KCk7Ci0gICAgICAgIGF1dG8gcGFyZW50TWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZUZvclR5cGUo
cGFyZW50KTsKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVy
LCBwYXJlbnQsIHBhcmVudE1hbmdsZWROYW1lLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVu
bmFtZWRUeXBlcyk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAg
ICAic3RydWN0ICIsIG1hbmdsZWROYW1lLCAiIHtcbiIKLSAgICAgICAgICAgICIgICAgIiwgdG9T
dHJpbmcoYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwYXJlbnRNYW5n
bGVkTmFtZSwgIiogcG9pbnRlcjtcbiIKLSAgICAgICAgICAgICIgICAgdWludDMyX3QgbGVuZ3Ro
O1xuIgotICAgICAgICAgICAgIn07XG4iCi0gICAgICAgICk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OiB7Ci0gICAgICAgIGF1
dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0K
LSAgICAgICAgYXV0byYgcGFyZW50ID0gYXJyYXlUeXBlLnR5cGUoKTsKLSAgICAgICAgYXV0byBw
YXJlbnRNYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lRm9yVHlwZShwYXJlbnQpOwotICAgICAgICBl
bWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHBhcmVudCwgcGFyZW50TWFu
Z2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBwYXJlbnRNYW5nbGVk
TmFtZSwgIiwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICI+ICIsIG1hbmdsZWROYW1lLCAi
O1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGVtaXR0ZWRVbm5hbWVkVHlw
ZXMuYWRkKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5cGUgfSk7Ci19Ci0KLXZvaWQgVHlwZU5h
bWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxBU1Q6OlVubmFtZWRUeXBlPj4mIG5laWdoYm9ycywgSGFzaFNldDxBU1Q6Ok5hbWVkVHlwZSo+
JiBlbWl0dGVkTmFtZWRUeXBlcywgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4mIGVtaXR0ZWRVbm5h
bWVkVHlwZXMpCi17Ci0gICAgaWYgKGVtaXR0ZWROYW1lZFR5cGVzLmNvbnRhaW5zKCZuYW1lZFR5
cGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIHVubmFtZVR5cGUgOiBuZWln
aGJvcnMpCi0gICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwg
dW5uYW1lVHlwZSwgbWFuZ2xlZE5hbWVGb3JUeXBlKHVubmFtZVR5cGUpLCBlbWl0dGVkTmFtZWRU
eXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0KLSAgICBzd2l0Y2ggKG5hbWVkVHlwZS5raW5k
KCkpIHsKLSAgICBjYXNlIEFTVDo6TmFtZWRUeXBlOjpLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRp
b246IHsKLSAgICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGF1dG8mIGJhc2VU
eXBlID0gZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLQotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUo
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwgIiB7XG4iKTsKLSAgICAgICAgZm9yIChhdXRv
JiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1l
bWJlcnMoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xl
ZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIgPSAiLCBlbnVt
ZXJhdGlvbk1lbWJlci5nZXQoKS52YWx1ZSgpLCAiLFxuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ9O1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6
TmFtZWRUeXBlOjpLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246IHsKLSAgICAgICAgLy8gTmF0
aXZlIHR5cGVzIGFscmVhZHkgaGF2ZSBkZWZpbml0aW9ucy4gVGhlcmUncyBub3RoaW5nIHRvIGRv
LgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBU1Q6Ok5hbWVkVHlwZTo6S2luZDo6
U3RydWN0dXJlRGVmaW5pdGlvbjogewotICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0
cnVjdHVyZURlZmluaXRpb24pLCAiIHtcbiIpOwotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVy
ZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShz
dHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAiO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9O1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRU
eXBlOjpLaW5kOjpUeXBlRGVmaW5pdGlvbjogewotICAgICAgICBhdXRvJiB0eXBlRGVmaW5pdGlv
biA9IGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVE
ZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9u
KSwgIjtcbiIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBlbWl0dGVkTmFtZWRU
eXBlcy5hZGQoJm5hbWVkVHlwZSk7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjplbWl0TWV0YWxUeXBl
RGVmaW5pdGlvbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKLXsKLSAgICBIYXNoU2V0
PEFTVDo6TmFtZWRUeXBlKj4gZW1pdHRlZE5hbWVkVHlwZXM7Ci0gICAgSGFzaFNldDxVbm5hbWVk
VHlwZUtleT4gZW1pdHRlZFVubmFtZWRUeXBlczsKLSAgICBmb3IgKGF1dG8mIFtuYW1lZFR5cGUs
IG5laWdoYm9yc10gOiBtX2RlcGVuZGVuY3lHcmFwaCkKLSAgICAgICAgZW1pdE5hbWVkVHlwZURl
ZmluaXRpb24oc3RyaW5nQnVpbGRlciwgKm5hbWVkVHlwZSwgbmVpZ2hib3JzLCBlbWl0dGVkTmFt
ZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0gICAgZm9yIChhdXRvJiBbdW5uYW1lZFR5
cGVLZXksIG1hbmdsZWROYW1lXSA6IG1fdW5uYW1lZFR5cGVNYXBwaW5nKQotICAgICAgICBlbWl0
VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHVubmFtZWRUeXBlS2V5LnVubmFt
ZWRUeXBlKCksIG1hbmdsZWROYW1lLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRU
eXBlcyk7Ci19Ci0KLU1hbmdsZWRUeXBlTmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlw
ZShBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV91bm5hbWVkVHlwZU1hcHBpbmcuZmluZChVbm5hbWVkVHlwZUtleSB7IHVubmFtZWRUeXBlIH0p
OwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3VubmFtZWRUeXBlTWFwcGluZy5lbmQoKSk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotTWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUg
VHlwZU5hbWVyOjptYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkK
LXsKLSAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0g
ICAgICAgIHJldHVybiBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX25hbWVkVHlw
ZU1hcHBpbmcuZmluZCgmbmFtZWRUeXBlKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9uYW1l
ZFR5cGVNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1N
YW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JFbnVt
ZXJhdGlvbk1lbWJlcihBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikK
LXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9lbnVtZXJhdGlvbk1lbWJlck1hcHBpbmcuZmluZCgm
ZW51bWVyYXRpb25NZW1iZXIpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2VudW1lcmF0aW9u
TWVtYmVyTWFwcGluZy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQot
TWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JTdHJ1
Y3R1cmVFbGVtZW50KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9zdHJ1Y3R1cmVFbGVtZW50TWFwcGluZy5maW5kKCZzdHJ1
Y3R1cmVFbGVtZW50KTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9zdHJ1Y3R1cmVFbGVtZW50
TWFwcGluZy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLX0KLQotdm9pZCBU
eXBlTmFtZXI6OmVtaXRNZXRhbFR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCi17
Ci0gICAgVmlzaXRvcjo6dmlzaXQobV9wcm9ncmFtKTsKLQotICAgIGVtaXRNZXRhbFR5cGVEZWNs
YXJhdGlvbnMoc3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7
Ci0gICAgZW1pdE1ldGFsVHlwZURlZmluaXRpb25zKHN0cmluZ0J1aWxkZXIpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBl
TmFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhZDFhZTgxMDQwNWFjYjU4
ZGFmOTI3YjFjYzgyNmY2NGNjMTBjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTFR5cGVOYW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZUhhc2gu
aCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb247Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLWNsYXNzIE5hbWVkVHlwZTsK
LWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247
Ci1jbGFzcyBUeXBlRGVmaW5pdGlvbjsKLWNsYXNzIFVubmFtZWRUeXBlOwotCi19Ci0KLWNsYXNz
IFByb2dyYW07Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIEJhc2VUeXBlTmFtZU5vZGU7
Ci0KLWNsYXNzIFR5cGVOYW1lciA6IHByaXZhdGUgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgVHlw
ZU5hbWVyKFByb2dyYW0mKTsKLSAgICB2aXJ0dWFsIH5UeXBlTmFtZXIoKTsKLQotICAgIHZvaWQg
ZW1pdE1ldGFsVHlwZXMoU3RyaW5nQnVpbGRlciYpOwotCi0gICAgLy8gTXVzdCBiZSBjYWxsZWQg
YWZ0ZXIgY2FsbGluZyBlbWl0TWV0YWxUeXBlcygpLgotICAgIFN0cmluZyBtYW5nbGVkTmFtZUZv
clR5cGUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBNYW5nbGVkVHlwZU5hbWUg
bWFuZ2xlZE5hbWVGb3JUeXBlKEFTVDo6VW5uYW1lZFR5cGUmKTsKLSAgICBNYW5nbGVkT3JOYXRp
dmVUeXBlTmFtZSBtYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpOYW1lZFR5cGUmKTsKLSAgICBNYW5n
bGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIG1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIo
QVNUOjpFbnVtZXJhdGlvbk1lbWJlciYpOwotICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFt
ZSBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jik7
Ci0KLSAgICBNYW5nbGVkVHlwZU5hbWUgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSB7IHJldHVybiB7
IG1fdHlwZUNvdW50KysgfTsgfQotICAgIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBnZW5l
cmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpIHsgcmV0dXJuIHsgbV9zdHJ1Y3R1cmVFbGVt
ZW50Q291bnQrKyB9OyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBNYW5nbGVkRW51bWVyYXRp
b25NZW1iZXJOYW1lIGdlbmVyYXRlTmV4dEVudW1lcmF0aW9uTWVtYmVyTmFtZSgpIHsgcmV0dXJu
IHsgbV9lbnVtZXJhdGlvbk1lbWJlckNvdW50KysgfTsgfQotCi0gICAgdm9pZCBlbWl0TmFtZWRU
eXBlRGVmaW5pdGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpOYW1lZFR5cGUmLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4mLCBIYXNoU2V0PEFTVDo6TmFt
ZWRUeXBlKj4mIGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1p
dHRlZFVubmFtZWRUeXBlcyk7Ci0gICAgdm9pZCBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKFN0
cmluZ0J1aWxkZXImLCBBU1Q6OlVubmFtZWRUeXBlJiwgTWFuZ2xlZFR5cGVOYW1lLCBIYXNoU2V0
PEFTVDo6TmFtZWRUeXBlKj4mIGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBl
S2V5PiYgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0gICAgdm9pZCBlbWl0TWV0YWxUeXBlRGVjbGFy
YXRpb25zKFN0cmluZ0J1aWxkZXImKTsKLSAgICB2b2lkIGVtaXRNZXRhbFR5cGVEZWZpbml0aW9u
cyhTdHJpbmdCdWlsZGVyJik7Ci0KLSAgICB2b2lkIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKEFT
VDo6VW5uYW1lZFR5cGUmKTsKLQotICAgIFByb2dyYW0mIG1fcHJvZ3JhbTsKLSAgICBIYXNoTWFw
PFVubmFtZWRUeXBlS2V5LCBNYW5nbGVkVHlwZU5hbWU+IG1fdW5uYW1lZFR5cGVNYXBwaW5nOwot
ICAgIEhhc2hNYXA8QVNUOjpOYW1lZFR5cGUqLCBNYW5nbGVkVHlwZU5hbWU+IG1fbmFtZWRUeXBl
TWFwcGluZzsKLSAgICBIYXNoTWFwPEFTVDo6TmFtZWRUeXBlKiwgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+PiBtX2RlcGVuZGVuY3lHcmFwaDsKLSAgICBI
YXNoTWFwPEFTVDo6RW51bWVyYXRpb25NZW1iZXIqLCBNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJO
YW1lPiBtX2VudW1lcmF0aW9uTWVtYmVyTWFwcGluZzsKLSAgICBIYXNoTWFwPEFTVDo6U3RydWN0
dXJlRWxlbWVudCosIE1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZT4gbV9zdHJ1Y3R1cmVFbGVt
ZW50TWFwcGluZzsKLSAgICB1bnNpZ25lZCBtX3R5cGVDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX2VudW1lcmF0aW9uTWVtYmVyQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9zdHJ1Y3R1
cmVFbGVtZW50Q291bnQgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8v
IG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1
ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0
YWQyZDlkN2ZmZmZjMzRlYzM2NGY2MTI1NzQyNjI2YzA4NTc3NWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVZlcnRl
eEJ1ZmZlckluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIC8vIFJlc2VydmUgdGhlIGZpcnN0
IGZldyBNVExCdWZmZXIgc2xvdHMgZm9yIGFyZ3VtZW50IGJ1ZmZlcnMgZm9yIEdQVUJpbmRHcm91
cHMuCi0gICAgcmV0dXJuIGluZGV4ICsgODsKLX0KLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1
ZmZlckluZGV4Q2FsY3VsYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDU0
ZDBmMzViYzIxYTcwNmE2NzI2ZGQ5MTA5NGY0MmRiZTg3NTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotdW5zaWduZWQgY2FsY3VsYXRlVmVydGV4
QnVmZmVySW5kZXgodW5zaWduZWQpOwotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMDA0ZmQxZGZkNGRlZTk4MWZmNzI2NmZhN2NkNjg0MzJjYjE0YTFjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNM
QVNURHVtcGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChQcm9ncmFt
JiBwcm9ncmFtKQotewotICAgIG1fb3V0LnByaW50bG4oKTsKLQotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHZpc2l0KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBp
ZiAocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291
dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHBy
b2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0u
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50
KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmlu
aXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0udHlwZURlZmluaXRp
b25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKSkKLSAg
ICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNp
dChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLnN0
cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIp
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5p
dGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS5lbnVtZXJhdGlvbkRl
ZmluaXRpb25zKClbaV0pOwotICAgIGlmIChwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMo
KS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQot
ICAgICAgICB2aXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0KLSAgICBt
X291dC5wcmludGxuKCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlVubmFtZWRU
eXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBCYXNlOjp2aXNpdCh1bm5hbWVkVHlwZSk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewotICAg
IEJhc2U6OnZpc2l0KG5hbWVkVHlwZSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBtX291dC5wcmludCgidHlw
ZWRlZiAiLCB0eXBlRGVmaW5pdGlvbi5uYW1lKCksICIgPSAiKTsKLSAgICB2aXNpdCh0eXBlRGVm
aW5pdGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlv
bikKLXsKLSAgICBtX291dC5wcmludGxuKG1faW5kZW50LCAic3RydWN0ICIsIHN0cnVjdHVyZURl
ZmluaXRpb24ubmFtZSgpLCAiIHsiKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVt
cEluZGVudCgpOwotICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1
cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgICAgICB2aXNpdChzdHJ1
Y3R1cmVFbGVtZW50KTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgIn0iKTsK
LSAgICBtX291dC5wcmludGxuKCk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0
cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCi17Ci0gICAgbV9vdXQucHJpbnQobV9p
bmRlbnQpOwotICAgIHZpc2l0KHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICBtX291dC5w
cmludCgiICIsIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpKTsKLSAgICBpZiAoc3RydWN0dXJlRWxl
bWVudC5zZW1hbnRpYygpKQotICAgICAgICB2aXNpdCgqc3RydWN0dXJlRWxlbWVudC5zZW1hbnRp
YygpKTsKLSAgICBtX291dC5wcmludGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewot
ICAgIG1fb3V0LnByaW50KG1faW5kZW50LCAiZW51bSAiKTsKLSAgICB2aXNpdChlbnVtZXJhdGlv
bkRlZmluaXRpb24udHlwZSgpKTsKLSAgICBtX291dC5wcmludCgiIHsiKTsKLQotICAgIHsKLSAg
ICAgICAgYXV0byBpbmRlbnQgPSBidW1wSW5kZW50KCk7Ci0gICAgICAgIGJvb2wgb25jZSA9IGZh
bHNlOwotICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25E
ZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKSB7Ci0gICAgICAgICAgICBpZiAob25jZSkK
LSAgICAgICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgICAgIG1fb3V0LnBy
aW50bG4oKTsKLSAgICAgICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICAgICAgICAg
IHZpc2l0KGVudW1lcmF0aW9uTWVtYmVyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fb3V0
LnByaW50bG4oKTsKLSAgICBtX291dC5wcmludGxuKG1faW5kZW50LCAifSIpOwotICAgIG1fb3V0
LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25N
ZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQotewotICAgIG1fb3V0LnByaW50KGVudW1lcmF0aW9u
TWVtYmVyLm5hbWUoKSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLnZhbHVlKCkpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVm
aW5pdGlvbikKLXsKLSAgICBtX291dC5wcmludChtX2luZGVudCk7Ci0gICAgdmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0g
ICAgdmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwotICAgIG1fb3V0LnByaW50KCJc
blxuIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQo
bV9pbmRlbnQpOwotICAgIG1fb3V0LnByaW50KCJuYXRpdmUgIik7Ci0gICAgdmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bikpOwotICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICB2aXNp
dChmdW5jdGlvbkRlY2xhcmF0aW9uLmF0dHJpYnV0ZUJsb2NrKCkpOwotICAgIGlmIChmdW5jdGlv
bkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgIG1fb3V0LnByaW50KEFTVDo6
dG9TdHJpbmcoKmZ1bmN0aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSksICIgIik7Ci0g
ICAgdmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCIg
IiwgZnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCksICIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFs
c2U7Ci0gICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCIs
ICIpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQocGFyYW1ldGVyKTsKLSAg
ICB9Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLSAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5z
ZW1hbnRpYygpKQotICAgICAgICB2aXNpdCgqZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygp
KTsKLSAgICBtX291dC5wcmludCgiICIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBt
X291dC5wcmludChtX2luZGVudCwgIm5hdGl2ZSB0eXBlZGVmICIpOwotICAgIG1fb3V0LnByaW50
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFy
YXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUoKSkgewotICAgICAgICBtX291dC5wcmludCgiPCIp
OwotICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlQXJn
dW1lbnQgOiBuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpKSB7Ci0gICAgICAg
ICAgICBpZiAob25jZSkKLSAgICAgICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAg
ICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKLSAg
ICAgICAgfQotICAgICAgICBtX291dC5wcmludCgiPiIpOwotICAgIH0KLSAgICBtX291dC5wcmlu
dGxuKCI7Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2Um
IHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgbV9vdXQucHJpbnQodHlwZVJlZmVyZW5jZS5uYW1lKCkp
OwotCi0gICAgaWYgKHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpLnNpemUoKSkgewotICAg
ICAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICAgICAgbV9vdXQucHJpbnQoIjwiKTsKLSAgICAg
ICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMo
KSkgewotICAgICAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICAgICAgbV9vdXQucHJpbnQo
IiwgIik7Ci0gICAgICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHZpc2l0KHR5cGVB
cmd1bWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9vdXQucHJpbnQoIj4iKTsKLSAgICB9Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkK
LXsKLSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlw
ZSkpOwotICAgIG1fb3V0LnByaW50KCIqIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIHZpc2l0
KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+KGFycmF5UmVmZXJlbmNlVHlwZSkpOwot
ICAgIG1fb3V0LnByaW50KCJbXSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpB
cnJheVR5cGUmIGFycmF5VHlwZSkKLXsKLSAgICB2aXNpdChhcnJheVR5cGUudHlwZSgpKTsKLSAg
ICBtX291dC5wcmludCgiWyIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiXSIpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKLXsK
LSAgICBCYXNlOjp2aXNpdCh0eXBlQXJndW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBlKQotewotICAgIG1fb3V0LnByaW50
KEFTVDo6dG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSksICIgIik7Ci0gICAg
dmlzaXQocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6U2VtYW50aWMmIHNlbWFudGljKQotewotICAgIG1fb3V0LnByaW50KCIgOiAi
KTsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6QnVpbHRJblNlbWFu
dGljJiBidWlsdEluU2VtYW50aWMpIHsKLSAgICAgICAgdmlzaXQoYnVpbHRJblNlbWFudGljKTsK
LSAgICB9LCBbJl0oQVNUOjpSZXNvdXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7Ci0g
ICAgICAgIHZpc2l0KHJlc291cmNlU2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyYgc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKSB7
Ci0gICAgICAgIHZpc2l0KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgfSwg
WyZdKEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKLSAgICAg
ICAgdmlzaXQoc3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICB9KSwgc2VtYW50aWMpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhw
cmVzc2lvbikKLXsKLSAgICBCYXNlOjp2aXNpdChjb25zdGFudEV4cHJlc3Npb24pOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2sp
Ci17Ci0gICAgaWYgKGF0dHJpYnV0ZUJsb2NrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9vdXQucHJpbnQoIlsiKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRl
IDogYXR0cmlidXRlQmxvY2spCi0gICAgICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKLSAg
ICBtX291dC5wcmludCgiXSAiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QnVp
bHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMpCi17Ci0gICAgbV9vdXQucHJpbnQoYnVpbHRJ
blNlbWFudGljLnRvU3RyaW5nKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpS
ZXNvdXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKQotewotICAgIG1fb3V0LnByaW50KHJl
c291cmNlU2VtYW50aWMudG9TdHJpbmcoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpCi17Ci0gICAgLy8gRklYTUU6IEhh
bmRsZSB0aGlzIHdoZW4gd2UgaW1wbGVtZW50IGl0LgotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykKLXsKLSAgICBt
X291dC5wcmludCgiYXR0cmlidXRlKCIsIHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpLCAiKSIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdl
ckxpdGVyYWwpCi17Ci0gICAgbV9vdXQucHJpbnQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgbV9vdXQucHJpbnQodW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC52YWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RmxvYXRM
aXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgbV9vdXQucHJpbnQoZmxvYXRMaXRlcmFsLnZh
bHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYg
Ym9vbGVhbkxpdGVyYWwpCi17Ci0gICAgaWYgKGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkpCi0gICAg
ICAgIG1fb3V0LnByaW50KCJ0cnVlIik7Ci0gICAgZWxzZQotICAgICAgICBtX291dC5wcmludCgi
ZmFsc2UiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxU
eXBlJikKLXsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpGbG9hdExp
dGVyYWxUeXBlJikKLXsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgbV9vdXQu
cHJpbnQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmxlZnQoKSwgIi4iLCBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwucmlnaHQoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1
bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJpYnV0ZSkKLXsKLSAgICBXVEY6OnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAgICAgICAgdmlzaXQobnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlKTsKLSAgICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRocmVh
ZHNBdHRyaWJ1dGUpCi17Ci0gICAgbV9vdXQucHJpbnQoIm51bXRocmVhZHMoIiwgbnVtVGhyZWFk
c0F0dHJpYnV0ZS53aWR0aCgpLCAiLCAiLCBudW1UaHJlYWRzQXR0cmlidXRlLmhlaWdodCgpLCAi
LCAiLCBudW1UaHJlYWRzQXR0cmlidXRlLmRlcHRoKCksICIpIik7Ci19Ci0KLXZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKLXsKLSAgICBtX291dC5wcmludGxuKCJ7Iik7
Ci0gICAgewotICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgZm9y
IChhdXRvJiBzdGF0ZW1lbnQgOiBibG9jay5zdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIG1f
b3V0LnByaW50KG1faW5kZW50KTsKLSAgICAgICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Ci0gICAg
ICAgICAgICBtX291dC5wcmludGxuKCI7Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9vdXQu
cHJpbnQobV9pbmRlbnQsICJ9Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0
YXRlbWVudCYgc3RhdGVtZW50KQotewotICAgIEJhc2U6OnZpc2l0KHN0YXRlbWVudCk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmIHN0YXRlbWVudExpc3Qp
Ci17Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBz
dGF0ZW1lbnRMaXN0LnN0YXRlbWVudHMoKSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAg
ICAgIG1fb3V0LnByaW50KCI7XG4iLCBtX2luZGVudCk7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwot
ICAgICAgICB2aXNpdChzdGF0ZW1lbnQpOwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6QnJlYWsmKQotewotICAgIG1fb3V0LnByaW50KCJicmVhayIpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpDb250aW51ZSYpCi17Ci0gICAgbV9vdXQucHJpbnQoImNv
bnRpbnVlIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hp
bGVMb29wKQotewotICAgIG1fb3V0LnByaW50KCJ3aGlsZSAoIik7Ci0gICAgdmlzaXQod2hpbGVM
b29wLmNvbmRpdGlvbmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci0gICAgdmlzaXQod2hp
bGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkRvV2hpbGVM
b29wJiBkb1doaWxlTG9vcCkKLXsKLSAgICBtX291dC5wcmludCgiZG8gIik7Ci0gICAgdmlzaXQo
ZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICBtX291dC5wcmludCgiIHdoaWxlKCIpOwotICAgIHZp
c2l0KGRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAg
bV9vdXQucHJpbnQoImZvciAoIik7Ci0gICAgdmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigp
KTsKLSAgICBtX291dC5wcmludCgiOyAiKTsKLSAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkK
LSAgICAgICAgdmlzaXQoKmZvckxvb3AuY29uZGl0aW9uKCkpOwotICAgIG1fb3V0LnByaW50KCI7
ICIpOwotICAgIGlmIChmb3JMb29wLmluY3JlbWVudCgpKQotICAgICAgICB2aXNpdCgqZm9yTG9v
cC5pbmNyZW1lbnQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikgIik7Ci0gICAgdmlzaXQoZm9yTG9v
cC5ib2R5KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uKQotewotICAgIGJvb2wgc2tpcFBhcmVucyA9IGlzPEFTVDo6Qm9vbGVhbkxpdGVy
YWw+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNz
aW9uKQotICAgICAgICB8fCBpczxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAg
ICAgICB8fCBpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pCi0gICAg
ICAgIHx8IGlzPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKQotICAg
ICAgICB8fCBpczxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwg
aXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbik7Ci0KLSAgICBpZiAoYXV0byog
YW5ub3RhdGlvbiA9IGV4cHJlc3Npb24ubWF5YmVUeXBlQW5ub3RhdGlvbigpKSB7Ci0gICAgICAg
IGlmIChhdXRvIGFkZHJlc3NTcGFjZSA9IGFubm90YXRpb24tPmxlZnRBZGRyZXNzU3BhY2UoKSkK
LSAgICAgICAgICAgIG1fb3V0LnByaW50KCI8TFY6IiwgQVNUOjp0b1N0cmluZygqYWRkcmVzc1Nw
YWNlKSk7Ci0gICAgICAgIGVsc2UgaWYgKGFubm90YXRpb24tPmlzQWJzdHJhY3RMZWZ0VmFsdWUo
KSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCI8QUxWIik7Ci0gICAgICAgIGVsc2UgaWYgKGFu
bm90YXRpb24tPmlzUmlnaHRWYWx1ZSgpKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxSViIp
OwotCi0gICAgICAgIG1fb3V0LnByaW50KCIsICIsIGV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCku
dG9TdHJpbmcoKSwgIj4iKTsKLQotICAgICAgICBza2lwUGFyZW5zID0gZmFsc2U7Ci0gICAgfQot
Ci0gICAgaWYgKCFza2lwUGFyZW5zKQotICAgICAgICBtX291dC5wcmludCgiKCIpOwotICAgIEJh
c2U6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgIGlmICghc2tpcFBhcmVucykKLSAgICAgICAgbV9v
dXQucHJpbnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVz
c2lvbiYgZG90RXhwcmVzc2lvbikKLXsKLSAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiY+KGRvdEV4cHJlc3Npb24pKTsKLSAgICBtX291dC5wcmludCgi
LiIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYgZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Up
Ci17Ci0gICAgdmlzaXQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX291
dC5wcmludCgiPT4iLCBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpLm5hbWUo
KSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5k
ZXhFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJj4oaW5kZXhFeHByZXNzaW9uKSk7Ci0gICAgbV9vdXQucHJpbnQoIlsiKTsK
LSAgICB2aXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0
LnByaW50KCJdIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKLXsKLSAgICBCYXNlOjp2aXNpdChleHByZXNzaW9u
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKLXsKLSAgICBCYXNlOjp2aXNp
dChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6RmFsbHRocm91Z2gmKQotewotICAgIG1fb3V0LnByaW50KCJmYWxsdGhyb3VnaCIp
OwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1l
bnQpCi17Ci0gICAgbV9vdXQucHJpbnQoImlmICgiKTsKLSAgICB2aXNpdChpZlN0YXRlbWVudC5j
b25kaXRpb25hbCgpKTsKLSAgICBtX291dC5wcmludCgiKSAiKTsKLSAgICB2aXNpdChpZlN0YXRl
bWVudC5ib2R5KCkpOwotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAg
IG1fb3V0LnByaW50KCIgZWxzZSAiKTsKLSAgICAgICAgdmlzaXQoKmlmU3RhdGVtZW50LmVsc2VC
b2R5KCkpOwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiBy
ZXR1cm5TdGF0ZW1lbnQpCi17Ci0gICAgbV9vdXQucHJpbnQoInJldHVybiIpOwotICAgIGlmIChy
ZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkgewotICAgICAgICBtX291dC5wcmludCgiICIpOwotICAg
ICAgICB2aXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwotICAgIH0KLX0KLQotdm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCi17
Ci0gICAgbV9vdXQucHJpbnQoInN3aXRjaCAoIik7Ci0gICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50
LnZhbHVlKCkpOwotICAgIG1fb3V0LnByaW50bG4oIikgeyIpOwotICAgIGJvb2wgb25jZSA9IGZh
bHNlOwotICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hD
YXNlcygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnRsbigp
OwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwot
ICAgICAgICB2aXNpdChzd2l0Y2hDYXNlKTsKLSAgICB9Ci0gICAgbV9vdXQucHJpbnQoIlxuIiwg
bV9pbmRlbnQsICJ9Iik7Ci0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3dpdGNo
Q2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAgICBpZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAg
ICAgIG1fb3V0LnByaW50KCJjYXNlICIpOwotICAgICAgICB2aXNpdCgqc3dpdGNoQ2FzZS52YWx1
ZSgpKTsKLSAgICAgICAgbV9vdXQucHJpbnQoIjogIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
b3V0LnByaW50KCJkZWZhdWx0OiAiKTsKLSAgICB2aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQo
dmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAg
IGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSkgewotICAgICAgICB2aXNpdCgqdmFyaWFi
bGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBtX291dC5wcmludCgiICIpOwotICAgIH0K
LQotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAg
IG1fb3V0LnByaW50KCIkIiwgUmF3UG9pbnRlcigmdmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAg
IGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOwot
Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgdmlzaXQo
KnZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFy
YXRpb24uaW5pdGlhbGl6ZXIoKSkgewotICAgICAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAg
ICAgIHZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgIH0KLX0K
LQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2ln
bm1lbnRFeHByZXNzaW9uKQotewotICAgIHZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQo
KSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KGFzc2lnbm1lbnRFeHByZXNz
aW9uLnJpZ2h0KCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVz
c2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoY2FsbEV4cHJlc3Npb24u
bmFtZSgpLCAiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgYXJn
dW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkgewotICAgICAgICBpZiAob25jZSkK
LSAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAg
ICAgICAgdmlzaXQoYXJndW1lbnQpOwotICAgIH0KLSAgICBtX291dC5wcmludCgiKSIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVz
c2lvbikKLXsKLSAgICBtX291dC5wcmludCgiKCIpOwotICAgIGJvb2wgb25jZSA9IGZhbHNlOwot
ICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNvbW1hRXhwcmVzc2lvbi5saXN0KCkpIHsKLSAg
ICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAg
b25jZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0KGV4cHJlc3Npb24pOwotICAgIH0KLSAgICBtX291
dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5j
ZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgi
KiIpOwotICAgIHZpc2l0KGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotfQotCi12
b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYgbG9naWNhbEV4cHJl
c3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIigiKTsKLSAgICB2aXNpdChsb2dpY2FsRXhwcmVz
c2lvbi5sZWZ0KCkpOwotICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7Ci0g
ICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6Ci0gICAgICAgIG1fb3V0
LnByaW50KCIgJiYgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhw
cmVzc2lvbjo6VHlwZTo6T3I6Ci0gICAgICAgIG1fb3V0LnByaW50KCIgfHwgIik7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICB2aXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLSAg
ICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpMb2dp
Y2FsTm90RXhwcmVzc2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJp
bnQoIiEoIik7Ci0gICAgdmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKLSAg
ICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQot
ewotICAgIG1fb3V0LnByaW50KCJAIik7Ci0gICAgdmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIG1fb3V0
LnByaW50KCImIik7Ci0gICAgdmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgp
KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIG9sZFZhcmlhYmxl
ID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpOwotICAg
IGF1dG8gbmV3VmFyaWFibGUgPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhcmlhYmxl
UmVmZXJlbmNlKCk7Ci0KLSAgICBtX291dC5wcmludCgiUk1XKCIpOwotICAgIHZpc2l0KG9sZFZh
cmlhYmxlLmdldCgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgdmlzaXQocmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7
Ci0KLSAgICB2aXNpdChuZXdWYXJpYWJsZS5nZXQoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIp
OwotICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9u
KCkpOwotICAgIG1fb3V0LnByaW50KCIsICIpOwotCi0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZp
c2l0KG5ld1ZhcmlhYmxlLmdldCgpKTsKLSAgICBtX291dC5wcmludCgiLCAiKTsKLQotICAgIHZp
c2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBt
X291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5
RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQodGVybmFyeUV4cHJl
c3Npb24ucHJlZGljYXRlKCkpOwotICAgIG1fb3V0LnByaW50KCIgPyAiKTsKLSAgICB2aXNpdCh0
ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBtX291dC5wcmludCgiIDog
Iik7Ci0gICAgdmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci19Ci0K
LXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJl
ZmVyZW5jZSkKLXsKLSAgICBpZiAodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgbV9vdXQucHJpbnQoIiQiLCBSYXdQb2ludGVyKHZhcmlhYmxlUmVmZXJlbmNlLnZh
cmlhYmxlKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fb3V0LnByaW50KHZhcmlhYmxlUmVmZXJl
bmNlLm5hbWUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTAyNzM2ZmMwMmJkMzE0MGZmMzg4ZjdkNTAyYjhi
Y2UyYzRiYjc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5o
PgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEFTVER1bXBlciA6IFZpc2l0b3Igewot
ICAgIHVzaW5nIEJhc2UgPSBWaXNpdG9yOwotcHVibGljOgotICAgIHZvaWQgdmlzaXQoUHJvZ3Jh
bSYpIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gbV9vdXQudG9T
dHJpbmcoKTsgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hbWVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5j
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OlN0cnVjdHVyZUVsZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51
bWVyYXRpb25NZW1iZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpTZW1hbnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6QXR0cmlidXRlQmxvY2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnVpbHRJ
blNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50
aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1h
bnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
RnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJs
b2NrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkJyZWFrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbnRp
bnVlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpJbmRleEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
RmFsbHRocm91Z2gmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
U3dpdGNoQ2FzZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1l
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dp
Y2FsTm90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEluZGVudCB7Ci0g
ICAgICAgIEluZGVudChBU1REdW1wZXImIGR1bXBlcikKLSAgICAgICAgICAgIDogbV9zY29wZShk
dW1wZXIubV9pbmRlbnQsIGR1bXBlci5tX2luZGVudCArICIgICAiKQotICAgICAgICB7IH0KLSAg
ICAgICAgU2V0Rm9yU2NvcGU8U3RyaW5nPiBtX3Njb3BlOwotICAgIH07Ci0KLSAgICBJbmRlbnQg
YnVtcEluZGVudCgpIHsgcmV0dXJuIEluZGVudCgqdGhpcyk7IH0KLQotICAgIGZyaWVuZCBzdHJ1
Y3QgSW5kZW50OwotCi0gICAgU3RyaW5nUHJpbnRTdHJlYW0gbV9vdXQ7Ci0gICAgU3RyaW5nIG1f
aW5kZW50OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
ZHVtcEFTVE5vZGUoUHJpbnRTdHJlYW0mIG91dCwgVCYgdmFsdWUpCi17Ci0gICAgQVNURHVtcGVy
IGR1bXBlcjsKLSAgICBkdW1wZXIudmlzaXQodmFsdWUpOwotICAgIG91dC5wcmludChkdW1wZXIu
dG9TdHJpbmcoKSk7Ci19Ci1NQUtFX1BSSU5UX0FEQVBUT1IoRXhwcmVzc2lvbkR1bXBlciwgQVNU
OjpFeHByZXNzaW9uJiwgZHVtcEFTVE5vZGUpOwotTUFLRV9QUklOVF9BREFQVE9SKFN0YXRlbWVu
dER1bXBlciwgQVNUOjpTdGF0ZW1lbnQmLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBU
T1IoUHJvZ3JhbUR1bXBlciwgUHJvZ3JhbSYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURB
UFRPUihTdHJ1Y3R1cmVEZWZpbml0aW9uRHVtcGVyLCBBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24m
LCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoRnVuY3Rpb25EZWZpbml0aW9uRHVt
cGVyLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRf
QURBUFRPUihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uRHVtcGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBUT1IoVHlwZUR1
bXBlciwgQVNUOjpVbm5hbWVkVHlwZSYsIGR1bXBBU1ROb2RlKTsKLQotCi1zdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIGR1bXBBU1QoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBkYXRhTG9nTG4o
UHJvZ3JhbUR1bXBlcihwcm9ncmFtKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVp
bGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3MTc4OTU0NDg5OTBkYzhhYzY4NzdiYzEwNGQ5
ZGJhOGU2OTE0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEJ1aWxkU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0j
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgcmUKLQotcmVndWxhckV4cHJlc3Npb24gPSByZS5jb21w
aWxlKHIiL1wqIEZ1bmN0aW9ucyBuYW1lZCAoLiopIFwqLyIpCi0KLWluZmlsZSA9IG9wZW4oc3lz
LmFyZ3ZbMV0sICJyIikKLWNvbnRlbnRzID0gaW5maWxlLnJlYWQoKQotaW5maWxlLmNsb3NlKCkK
LQotb3V0ZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMl0sICJ3IikKLW91dGZpbGUud3JpdGUoIiIiCi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1IYXNoTWFwPFN0cmluZywg
U3Vic3RyaW5nTG9jYXRpb24+IGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCgpCi17
Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN1YnN0cmluZ0xvY2F0aW9uPiByZXN1bHQ7Ci0iIiIpCi0K
LSMgRklYTUU6IENvbXB1dGUgU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAgYXQgYnVpbGQtdGlt
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NDQ4Ci0KLXByZXZp
b3VzID0gMAotcHJldmlvdXNOYW1lID0gIiIKLWJvdW5kYXJ5ID0gMAotZm9yIG1hdGNoIGluIHJl
Z3VsYXJFeHByZXNzaW9uLmZpbmRpdGVyKGNvbnRlbnRzKToKLSAgICBpZiBwcmV2aW91cyA9PSAw
OgotICAgICAgICBwcmV2aW91cyA9IG1hdGNoLnN0YXJ0KCkKLSAgICAgICAgYm91bmRhcnkgPSBw
cmV2aW91cwotICAgICAgICBwcmV2aW91c05hbWUgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBj
b250aW51ZQotICAgIG91dGZpbGUud3JpdGUoIiAgICByZXN1bHQuYWRkKFwiIiArIHByZXZpb3Vz
TmFtZSArICJcIl9zdHIsIFN1YnN0cmluZ0xvY2F0aW9uIHsgIiArIHN0cihwcmV2aW91cykgKyAi
LCAiICsgc3RyKG1hdGNoLnN0YXJ0KCkpICsgIiB9KTtcbiIpCi0gICAgcHJldmlvdXMgPSBtYXRj
aC5zdGFydCgpCi0gICAgcHJldmlvdXNOYW1lID0gbWF0Y2guZ3JvdXAoMSkKLW91dGZpbGUud3Jp
dGUoIiAgICByZXN1bHQuYWRkKFwiIiArIHByZXZpb3VzTmFtZSArICJcIl9zdHIsIFN1YnN0cmlu
Z0xvY2F0aW9uIHsgIiArIHN0cihwcmV2aW91cykgKyAiLCAiICsgc3RyKGxlbihjb250ZW50cykp
ICsgIiB9KTtcbiIpCi1vdXRmaWxlLndyaXRlKCIiIgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXVuc2lnbmVkIGZpcnN0RnVuY3Rpb25PZmZzZXRJblN0YW5kYXJkTGlicmFyeSgpCi17Ci0iIiIp
Ci0KLW91dGZpbGUud3JpdGUoIiAgICByZXR1cm4gIiArIHN0cihib3VuZGFyeSkgKyAiO1xuIikK
LQotb3V0ZmlsZS53cml0ZSgiIiIKLX0KLQotfQotCi19Ci0KLSNlbmRpZgotIiIiKQotb3V0Zmls
ZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTliZWQxZWNlZDQ2ZGIxZDdmYTdiZmI0ZTFjM2UzNDgz
YzMxNzNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5j
dGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUg
IldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBEdXBsaWNhdGVG
dW5jdGlvbktleSB7Ci1wdWJsaWM6Ci0gICAgRHVwbGljYXRlRnVuY3Rpb25LZXkoKSA9IGRlZmF1
bHQ7Ci0gICAgRHVwbGljYXRlRnVuY3Rpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbiA9IGJpdHdpc2VfY2FzdDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsKLSAgICB9Ci0KLSAg
ICBEdXBsaWNhdGVGdW5jdGlvbktleShjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1
bmN0aW9uKQotICAgICAgICA6IG1fZnVuY3Rpb24oJmZ1bmN0aW9uKQotICAgIHsgfQotCi0gICAg
Ym9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiAhbV9mdW5jdGlvbjsgfQotICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uID09
IGJpdHdpc2VfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICB1bnNpZ25lZCBoYXNoID0gSW50SGFzaDxzaXplX3Q+OjpoYXNoKG1fZnVuY3Rpb24tPnBhcmFt
ZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBoYXNoIF49IG1fZnVuY3Rpb24tPm5hbWUoKS5oYXNo
KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbi0+cGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT5wYXJhbWV0
ZXJzKClbaV0tPnR5cGUoKS0+aGFzaCgpOwotCi0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5pc0Nh
c3QoKSkKLSAgICAgICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+dHlwZSgpLmhhc2goKTsKLQot
ICAgICAgICByZXR1cm4gaGFzaDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RHVwbGljYXRlRnVuY3Rpb25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1f
ZnVuY3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+cGFyYW1l
dGVycygpLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAo
bV9mdW5jdGlvbi0+bmFtZSgpICE9IG90aGVyLm1fZnVuY3Rpb24tPm5hbWUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkg
IT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeQotICAgICAgICAgICAgJiYgb3RoZXIu
bV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFy
eQotICAgICAgICAgICAgJiYgbV9mdW5jdGlvbi0+bmFtZVNwYWNlKCkgIT0gb3RoZXIubV9mdW5j
dGlvbi0+bmFtZVNwYWNlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
QVNTRVJUKG1fZnVuY3Rpb24tPmlzQ2FzdCgpID09IG90aGVyLm1fZnVuY3Rpb24tPmlzQ2FzdCgp
KTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb24tPnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFtYXRjaGVzKCptX2Z1bmN0aW9u
LT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSwgKm90aGVyLm1fZnVuY3Rpb24tPnBhcmFtZXRlcnMo
KVtpXS0+dHlwZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIW1fZnVuY3Rpb24tPmlzQ2FzdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAgICAgaWYgKG1hdGNoZXMobV9mdW5jdGlvbi0+dHlwZSgpLCBvdGhlci5t
X2Z1bmN0aW9uLT50eXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgRHVwbGljYXRlRnVuY3Rpb25LZXkmIGtleSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGtleS5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYgYSwgY29uc3QgRHVw
bGljYXRlRnVuY3Rpb25LZXkmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09
IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDog
cHVibGljIFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPER1cGxpY2F0ZUZ1bmN0aW9uS2V5PiB7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1
ZTsKLSAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IER1cGxpY2F0ZUZ1bmN0
aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXBy
aXZhdGU6Ci0gICAgY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Z1bmN0aW9uIHsg
bnVsbHB0ciB9OwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zKGNvbnN0IFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgYXV0byBwYXNzZXNTdGF0aWND
aGVja3MgPSBbJl0gKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIC0+
IEV4cGVjdGVkPHZvaWQsIEVycm9yPiB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5uYW1lKCkgPT0g
Im9wZXJhdG9yPT0iCi0gICAgICAgICAgICAmJiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIKLSAgICAgICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8
Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUo
KSkpCi0gICAgICAgICAgICAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNv
bnN0IEFTVDo6VW5uYW1lZFR5cGUmPigqZnVuY3Rpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkp
KQotICAgICAgICAgICAgJiYgbWF0Y2hlcygqZnVuY3Rpb24ucGFyYW1ldGVycygpWzBdLT50eXBl
KCksICpmdW5jdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBkZWZpbmUgb3BlcmF0b3I9PSBvbiB0d28g
cmVmZXJlbmNlIHR5cGVzLiIpKTsKLSAgICAgICAgZWxzZSBpZiAoZnVuY3Rpb24uaXNDYXN0KCkg
JiYgZnVuY3Rpb24ucGFyYW1ldGVycygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXV0byYg
dW5pZnlOb2RlID0gZnVuY3Rpb24udHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgaWYg
KGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpICYmIGlzPEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwot
ICAgICAgICAgICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90
IGRlZmluZSBhIGNhc3Qgb24gYW4gb3BhcXVlIHR5cGUuIikpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9OwotCi0gICAgSGFzaFNldDxEdXBs
aWNhdGVGdW5jdGlvbktleSwgRHVwbGljYXRlRnVuY3Rpb25LZXk6Okhhc2gsIER1cGxpY2F0ZUZ1
bmN0aW9uS2V5OjpUcmFpdHM+IGZ1bmN0aW9uczsKLQotICAgIGF1dG8gYWRkID0gWyZdIChjb25z
dCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKSAtPiBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGZ1bmN0aW9ucy5hZGQoRHVwbGljYXRl
RnVuY3Rpb25LZXkgeyBmdW5jdGlvbiB9KTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRm91bmQgZHVw
bGljYXRlIGZ1bmN0aW9uIikpOwotICAgICAgICByZXR1cm4gcGFzc2VzU3RhdGljQ2hlY2tzKGZ1
bmN0aW9uKTsKLSAgICB9OwotCi0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBw
cm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IGFkZChmdW5jdGlvbkRlZmluaXRpb24uZ2V0KCkpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdCkK
LSAgICAgICAgICAgIHJldHVybiBhZGRSZXN1bHQ7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucygpKSB7Ci0gICAgICAgIC8vIFdlIGdlbmVyYXRlIGR1cGxpY2F0ZSBuYXRpdmUgZnVuY3Rp
b24gZGVjbGFyYXRpb25zIGluIHN5bnRoZXNpemUgY29uc3RydWN0b3JzLgotICAgICAgICAvLyBG
SVhNRTogaXMgdGhpcyByaWdodD8KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODU4MAotICAgICAgICAvLwotICAgICAgICAvLyBTaW5jZSB3ZSBk
byB0aGF0LCB3ZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIG5vIG5hdGl2ZSBmdW5jdGlvbiBpcyBh
IGR1cGxpY2F0ZQotICAgICAgICAvLyBvZiBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbi4KLQotICAg
ICAgICAvLyBGSVhNRTogQWRkIGJhY2sgdGhpcyBhc3NlcnQgb25jZSB3ZSBiZWdpbiB0byBhdXRv
IGdlbmVyYXRlIHRoZXNlIGluIHRoZSBjb21waWxlcgotICAgICAgICAvLyBpbnN0ZWFkIG9mIGhh
dmluZyB0aGVtIGluIHRoZSBzdGRsaWIKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5ODg2MQotICAgICAgICAvLyBBU1NFUlQocGFzc2VzU3RhdGlj
Q2hlY2tzKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uZ2V0KCkpKTsKLSAgICAgICAgaWYgKGZ1
bmN0aW9ucy5jb250YWlucyhEdXBsaWNhdGVGdW5jdGlvbktleSB7IG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24uZ2V0KCkgfSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIkR1cGxpY2F0ZSBuYXRpdmUgZnVuY3Rpb24uIikpOwotICAgIH0KLQotICAgIHJldHVybiB7
IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNh
dGVGdW5jdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwN2QzMmU1MmU2
YTRlMjcwYjE5OGQyMzU5NTcyNjkzOGJiNzYwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgi
Ci0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zKGNvbnN0IFByb2dyYW0mKTsKLQotfQotCi19Ci0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNTMxNTQ3Mzk0ODYwNDE2YzViZTcyMmQyOWQ2NWUzYjRlZGM1
NTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRl
ICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBSZWZlcmVuY2VUeXBlQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9y
IHsKLXB1YmxpYzoKLSAgICBSZWZlcmVuY2VUeXBlQ2hlY2tlcigpID0gZGVmYXVsdDsKLSAgICB2
aXJ0dWFsIH5SZWZlcmVuY2VUeXBlQ2hlY2tlcigpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tUeXBlKEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUsIENv
ZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yKQotICAgIHsKLSAgICAg
ICAgYXV0byYgdW5pZmllZFR5cGUgPSB0eXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoaXM8
QVNUOjpSZWZlcmVuY2VUeXBlPih1bmlmaWVkVHlwZSkpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKGVycm9yLCBjb2RlTG9jYXRpb24pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmaWVkVHlwZSkpCi0g
ICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4o
dW5pZmllZFR5cGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlw
ZSYgcmVmZXJlbmNlVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShyZWZl
cmVuY2VUeXBlLmVsZW1lbnRUeXBlKCksIHJlZmVyZW5jZVR5cGUuY29kZUxvY2F0aW9uKCksICJy
ZWZlcmVuY2UgdHlwZSBjYW5ub3QgaGF2ZSBhbm90aGVyIHJlZmVyZW5jZSB0eXBlIGFzIGFuIGlu
bmVyIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJh
eVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja1R5cGUoYXJyYXlUeXBlLnR5cGUo
KSwgYXJyYXlUeXBlLmNvZGVMb2NhdGlvbigpLCAiYXJyYXkgdHlwZSBjYW5ub3QgaGF2ZSBhIHJl
ZmVyZW5jZSB0eXBlIGFzIGl0cyBpbm5lciB0eXBlIik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNp
dChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBjaGVja1R5cGUoc3RydWN0dXJlRWxlbWVudC50eXBlKCksIHN0cnVjdHVyZUVs
ZW1lbnQuY29kZUxvY2F0aW9uKCksICJjYW5ub3QgaGF2ZSBhIHN0cnVjdHVyZSBmaWVsZCB3aGlj
aCBpcyBhIHJlZmVyZW5jZSB0eXBlIik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2
aXNpdChleHByZXNzaW9uKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24u
cmVzb2x2ZWRUeXBlKCkpOwotICAgIH0KLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVj
a1JlZmVyZW5jZVR5cGVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgLy8gVGhpcyBwYXNzIGRv
ZXMgdGhlc2UgdGhpbmdzOgotICAgIC8vIDEuIERpc2FsbG93IHN0cnVjdHMgdG8gaGF2ZSBmaWVs
ZHMgd2hpY2ggYXJlIHJlZmVyZW5jZXMuIFRoaXMgcHJldmVudHMgdXMgZnJvbSBoYXZpbmcgdG8K
LSAgICAvLyBmaWd1cmUgb3V0IGhvdyB0byBkZWZhdWx0IGluaXRpYWxpemUgc3VjaCBhIHN0cnVj
dC4gV2UgY291bGQgcmVsYXggdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHdlCi0gICAgLy8gZGlkIGFu
IGFuYWx5c2lzIG9uIHdoaWNoIHN0cnVjdHMgY29udGFpbiByZWZlcmVuY2UgZmllbGRzLCBhbmQg
ZW5zdXJlIHN1Y2ggc3RydWN0IHZhcmlhYmxlcwotICAgIC8vIGFsd2F5cyBoYXZlIGluaXRpYWxp
emVycy4gVGhpcyB3b3VsZCBhbHNvIHJlcXVpcmUgdXMgdG8gY3JlYXRlIGNvbnN0cnVjdG9ycyBm
b3Igc3RydWN0cyB3aGljaAotICAgIC8vIGluaXRpYWxpemUgZWFjaCBmaWVsZC4KLSAgICAvLyAy
LiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhcnJheXMuCi0gICAgLy8gMy4gUmVmZXJlbmNlcyBj
YW4gb25seSBiZSBvbmUgbGV2ZWwgZGVlcC4gU28gbm8gcG9pbnRlcnMgdG8gcG9pbnRlcnMuIE5v
IHJlZmVyZW5jZXMgdG8KLSAgICAvLyByZWZlcmVuY2VzLCBldGMuIFRoaXMgaXMgdG8gc3VwcG9y
dCBsb2dpY2FsIG1vZGUuCi0gICAgUmVmZXJlbmNlVHlwZUNoZWNrZXIgcmVmZXJlbmNlVHlwZUNo
ZWNrZXI7Ci0gICAgcmVmZXJlbmNlVHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dy
YW0pOwotICAgIHJldHVybiByZWZlcmVuY2VUeXBlQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUzNjJhODA0NDIzYjJhMGZlMjg1M2MzNzMyMmUyNjFl
NzE4MTc3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlw
ZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJy
b3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBF
cnJvcj4gY2hlY2tSZWZlcmVuY2VUeXBlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNl
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiY2U2YzAwMzg3ZWMxY2M4ZWJh
ZTU0NDc3ZWI5NjIzOTM5Y2RiYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a1RleHR1cmVSZWZlcmVuY2VzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tUZXh0
dXJlUmVmZXJlbmNlcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5o
IgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJ
bmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgVGV4dHVy
ZVJlZmVyZW5jZXNDaGVja2VyIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAg
IFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgflRl
eHR1cmVSZWZlcmVuY2VzQ2hlY2tlcigpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSAgICB2b2lk
IHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5
VHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7
Ci0KLSAgICBib29sIGNvbnRhaW5zVGV4dHVyZU9yU2FtcGxlcihBU1Q6OlVubmFtZWRUeXBlJik7
Ci19OwotCi1jbGFzcyBTZWFyY2hlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBT
ZWFyY2hlcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgflNlYXJjaGVyKCkgPSBkZWZhdWx0
OwotCi0gICAgYm9vbCBmb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm91bmQ7IH0KLQotcHJpdmF0
ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLSAgICBi
b29sIG1fZm91bmQgeyBmYWxzZSB9OwotfTsKLQotdm9pZCBTZWFyY2hlcjo6dmlzaXQoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlwZSgpKQotICAgICAgICBtX2ZvdW5kID0g
dHJ1ZTsKLX0KLQotYm9vbCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OmNvbnRhaW5zVGV4dHVy
ZU9yU2FtcGxlcihBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBTZWFyY2hl
ciBzZWFyY2hlcjsKLSAgICBzZWFyY2hlci5jaGVja0Vycm9yQW5kVmlzaXQodW5uYW1lZFR5cGUp
OwotICAgIHJldHVybiBzZWFyY2hlci5mb3VuZCgpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVu
Y2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi17Ci0gICAg
VmlzaXRvcjo6dmlzaXQocG9pbnRlclR5cGUpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKGNvbnRhaW5zVGV4dHVyZU9yU2FtcGxlcihwb2ludGVyVHlwZS5l
bGVtZW50VHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBoYXZlIGEgcG9p
bnRlciB0byBhIHRleHR1cmUgb3Igc2FtcGxlci4iLCBwb2ludGVyVHlwZS5jb2RlTG9jYXRpb24o
KSkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlzaXQoQVNUOjpBcnJh
eVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNp
dChhcnJheVJlZmVyZW5jZVR5cGUpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKGNvbnRhaW5zVGV4dHVyZU9yU2FtcGxlcihhcnJheVJlZmVyZW5jZVR5cGUu
ZWxlbWVudFR5cGUoKSkpCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhbiBh
cnJheSByZWZlcmVuY2UgdG8gYSB0ZXh0dXJlIG9yIHNhbXBsZXIuIiwgYXJyYXlSZWZlcmVuY2VU
eXBlLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2Vy
Ojp2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIFZpc2l0b3I6OnZpc2l0
KGFycmF5VHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKGFycmF5VHlwZS50eXBlKCkpKQotICAgICAgICBz
ZXRFcnJvcihFcnJvcigiQ2Fubm90IGhhdmUgYW4gYXJyYXkgb2YgdGV4dHVyZXMgb3Igc2FtcGxl
cnMuIiwgYXJyYXlUeXBlLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVy
ZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAg
VmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJl
c3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tl
cjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsK
LSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0
aW9uKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpCi17Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBj
aGVja1RleHR1cmVSZWZlcmVuY2VzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgVGV4dHVyZVJl
ZmVyZW5jZXNDaGVja2VyIHRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjsKLSAgICB0ZXh0dXJlUmVm
ZXJlbmNlc0NoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIHJldHVybiB0
ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwNjk0OTZlZTlkMjlhMGE1ODk2NTMxZGVhZDVmODJlM2U3NTZmNzAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3YWEyN2E2YzhhOThjM2U1YmY2N2ZmMjljMjJhYmE4NjA4M2YyZDRmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ2Fs
bEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgotI2luY2x1
ZGUgIldITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxl
TG9vcC5oIgotI2luY2x1ZGUgIldITFNMRG90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNM
RW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJX
SExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQu
aCIKLSNpbmNsdWRlICJXSExTTEluZGV4RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW5m
ZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0hMU0xQb2lu
dGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKLSNpbmNsdWRlICJXSExT
TFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRlICJXSExTTFJldHVybi5oIgotI2luY2x1ZGUgIldI
TFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUE9EQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAg
ICBQT0RDaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+UE9EQ2hlY2tlcigpID0g
ZGVmYXVsdDsKLQotICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVu
dW1lcmF0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZp
c2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKQotICAg
ICAgICAgICAgJiYgIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc1ZlY3RvcigpCi0gICAgICAgICAg
ICAmJiAhbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTWF0cml4KCkpCi0gICAgICAgICAgICBzZXRF
cnJvcihFcnJvcigiVXNlIG9mIG5hdGl2ZSB0eXBlIGlzIG5vdCBhIFBPRCBpbiBlbnRyeXBvaW50
IHNlbWFudGljLiIsIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVE
ZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0
dXJlRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0
aW9uJiB0eXBlRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZp
c2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlU
eXBlJiBhcnJheVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChh
cnJheVR5cGUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9p
bnRlclR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSWxsZWdh
bCB1c2Ugb2YgcG9pbnRlciBpbiBlbnRyeXBvaW50IHNlbWFudGljLiIsIHBvaW50ZXJUeXBlLmNv
ZGVMb2NhdGlvbigpKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJl
bmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIklsbGVnYWwgdXNlIG9mIGFycmF5IHJlZmVyZW5jZSBpbiBlbnRyeXBvaW50
IHNlbWFudGljLiIsIGFycmF5UmVmZXJlbmNlVHlwZS5jb2RlTG9jYXRpb24oKSkpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOwotICAgIH0KLX07Ci0KLWNsYXNzIEZ1bmN0aW9uS2V5IHsKLXB1YmxpYzoK
LSAgICBGdW5jdGlvbktleSgpID0gZGVmYXVsdDsKLSAgICBGdW5jdGlvbktleShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgewotICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0g
Yml0d2lzZV9jYXN0PEFTVDo6TmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
Ci0gICAgfQotCi0gICAgRnVuY3Rpb25LZXkoU3RyaW5nIG5hbWUsIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB0eXBlcywgQVNUOjpOYW1lZFR5cGUqIGNh
c3RSZXR1cm5UeXBlID0gbnVsbHB0cikKLSAgICAgICAgOiBtX25hbWUoV1RGTW92ZShuYW1lKSkK
LSAgICAgICAgLCBtX3R5cGVzKFdURk1vdmUodHlwZXMpKQotICAgICAgICAsIG1fY2FzdFJldHVy
blR5cGUoY2FzdFJldHVyblR5cGUpCi0gICAgeyB9Ci0KLSAgICBib29sIGlzRW1wdHlWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5pc051bGwoKTsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlID09IGJpdHdpc2Vf
Y2FzdDxBU1Q6Ok5hbWVkVHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0KLSAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBJ
bnRIYXNoPHNpemVfdD46Omhhc2gobV90eXBlcy5zaXplKCkpOwotICAgICAgICBoYXNoIF49IG1f
bmFtZS5oYXNoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90eXBlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGhhc2ggXj0gbV90eXBlc1tpXS5nZXQoKS5oYXNoKCkgKyBp
OwotCi0gICAgICAgIGlmIChtX2Nhc3RSZXR1cm5UeXBlKQotICAgICAgICAgICAgaGFzaCBePSBX
VEY6OlB0ckhhc2g8QVNUOjpUeXBlKj46Omhhc2goJm1fY2FzdFJldHVyblR5cGUtPnVuaWZ5Tm9k
ZSgpKTsKLQotICAgICAgICByZXR1cm4gaGFzaDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRnVuY3Rpb25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1f
dHlwZXMuc2l6ZSgpICE9IG90aGVyLm1fdHlwZXMuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGlmIChtX25hbWUgIT0gb3RoZXIubV9uYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90eXBl
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFtYXRjaGVzKG1fdHlwZXNbaV0uZ2V0
KCksIG90aGVyLm1fdHlwZXNbaV0uZ2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihtX2Nhc3RSZXR1
cm5UeXBlKSAhPSBzdGF0aWNfY2FzdDxib29sPihvdGhlci5tX2Nhc3RSZXR1cm5UeXBlKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoIW1fY2FzdFJldHVyblR5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAoJm1fY2FzdFJldHVyblR5
cGUtPnVuaWZ5Tm9kZSgpID09ICZvdGhlci5tX2Nhc3RSZXR1cm5UeXBlLT51bmlmeU5vZGUoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IEZ1bmN0aW9uS2V5JiBrZXkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrZXkuaGFz
aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRnVuY3Rp
b25LZXkmIGEsIGNvbnN0IEZ1bmN0aW9uS2V5JiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJh
aXRzIDogcHVibGljIFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEZ1bmN0aW9uS2V5PiB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsK
LSAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IEZ1bmN0aW9uS2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAg
U3RyaW5nIG1fbmFtZTsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVu
bmFtZWRUeXBlPj4gbV90eXBlczsKLSAgICBBU1Q6Ok5hbWVkVHlwZSogbV9jYXN0UmV0dXJuVHlw
ZTsKLX07Ci0KLXN0YXRpYyBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdp
dGhSZWZlcmVuY2VDb21wYXJhdG9yKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVzb2x2aW5nVHlw
ZSYgZmlyc3RBcmd1bWVudCwgUmVzb2x2aW5nVHlwZSYgc2Vjb25kQXJndW1lbnQsIGNvbnN0IElu
dHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgY29uc3QgYm9vbCBpc09wZXJhdG9yID0gdHJ1
ZTsKLSAgICBhdXRvIHJldHVyblR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRp
b24sIGludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgYXV0byBhcmd1bWVudFR5cGUgPSBmaXJz
dEFyZ3VtZW50LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5cGU+
JiB1bm5hbWVkVHlwZSkgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJu
IHVubmFtZWRUeXBlLmNvcHlSZWYoKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlPiYpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiBz
ZWNvbmRBcmd1bWVudC52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJlZjxBU1Q6OlVubmFtZWRU
eXBlPiYgdW5uYW1lZFR5cGUpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAg
ICByZXR1cm4gdW5uYW1lZFR5cGUuY29weVJlZigpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlPiYpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAg
ICAgICAgICAvLyBXZSBlbmNvdW50ZXJlZCAibnVsbCA9PSBudWxsIi4KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYyIFRo
aXMgY2FuIHByb2JhYmx5IGJlIGdlbmVyYWxpemVkLCB1c2luZyB0aGUgInByZWZlcnJlZCB0eXBl
IiBpbmZyYXN0cnVjdHVyZSB1c2VkIGJ5IGdlbmVyaWMgbGl0ZXJhbHMKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIEFTVDo6VHlwZVJlZmVyZW5j
ZTo6d3JhcChsb2NhdGlvbiwgaW50cmluc2ljcy5pbnRUeXBlKCkpOwotICAgICAgICB9KSk7Ci0g
ICAgfSkpOwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICBw
YXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
bG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBhcmd1bWVudFR5cGUuY29weVJlZigpLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJz
KCksIFdURk1vdmUoYXJndW1lbnRUeXBlKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUocmV0dXJuVHlwZSksIFN0cmluZygib3BlcmF0b3I9PSIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9y
LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci19Ci0KLWVudW0gY2xhc3MgQWNjZXB0
YWJpbGl0eSB7Ci0gICAgWWVzLAotICAgIE5vCi19OwotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24oY29u
c3QgU3RyaW5nJiBuYW1lLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgdHlwZXMsIGNvbnN0IEludHJpbnNp
Y3MmIGludHJpbnNpY3MpCi17Ci0gICAgaWYgKG5hbWUgPT0gIm9wZXJhdG9yPT0iICYmIHR5cGVz
LnNpemUoKSA9PSAyKSB7Ci0gICAgICAgIGF1dG8gYWNjZXB0YWJpbGl0eSA9IFtdKFJlc29sdmlu
Z1R5cGUmIHJlc29sdmluZ1R5cGUpIC0+IEFjY2VwdGFiaWxpdHkgewotICAgICAgICAgICAgcmV0
dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBBY2NlcHRhYmlsaXR5IHsKLSAgICAgICAgICAgICAg
ICBhdXRvJiB1bmlmeU5vZGUgPSB1bm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkgJiYgaXM8QVNUOjpS
ZWZlcmVuY2VUeXBlPihkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpKSA/IEFj
Y2VwdGFiaWxpdHk6OlllcyA6IEFjY2VwdGFiaWxpdHk6Ok5vOwotICAgICAgICAgICAgfSwgW10o
UmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYpIC0+IEFjY2VwdGFiaWxpdHkgewotICAg
ICAgICAgICAgICAgIHJldHVybiBBY2NlcHRhYmlsaXR5OjpObzsKLSAgICAgICAgICAgIH0pKTsK
LSAgICAgICAgfTsKLSAgICAgICAgYXV0byBsZWZ0QWNjZXB0YWJpbGl0eSA9IGFjY2VwdGFiaWxp
dHkodHlwZXNbMF0uZ2V0KCkpOwotICAgICAgICBhdXRvIHJpZ2h0QWNjZXB0YWJpbGl0eSA9IGFj
Y2VwdGFiaWxpdHkodHlwZXNbMV0uZ2V0KCkpOwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxz
ZTsKLSAgICAgICAgaWYgKGxlZnRBY2NlcHRhYmlsaXR5ID09IEFjY2VwdGFiaWxpdHk6OlllcyAm
JiByaWdodEFjY2VwdGFiaWxpdHkgPT0gQWNjZXB0YWJpbGl0eTo6WWVzKSB7Ci0gICAgICAgICAg
ICBhdXRvJiB1bm5hbWVkVHlwZTEgPSAqdHlwZXNbMF0uZ2V0KCkuZ2V0VW5uYW1lZFR5cGUoKTsK
LSAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlMiA9ICp0eXBlc1sxXS5nZXQoKS5nZXRVbm5h
bWVkVHlwZSgpOwotICAgICAgICAgICAgc3VjY2VzcyA9IG1hdGNoZXModW5uYW1lZFR5cGUxLCB1
bm5hbWVkVHlwZTIpOwotICAgICAgICB9IAotICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlV2l0aFJlZmVyZW5jZUNvbXBhcmF0b3IobG9jYXRpb24sIHR5cGVz
WzBdLmdldCgpLCB0eXBlc1sxXS5nZXQoKSwgaW50cmluc2ljcyk7Ci0gICAgfQotICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrU2VtYW50aWNzKFZlY3RvcjxF
bnRyeVBvaW50SXRlbT4mIGlucHV0SXRlbXMsIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIG91dHB1
dEl0ZW1zLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEFTVDo6RW50cnlQb2ludFR5cGU+JiBlbnRyeVBv
aW50VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICB7Ci0gICAgICAg
IGF1dG8gY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IGl0ZW1zLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpdGVtc1tpXS5zZW1hbnRpYyA9PSBpdGVtc1tqXS5zZW1hbnRpYykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVj
a0R1cGxpY2F0ZVNlbWFudGljcyhpbnB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKCFjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRJdGVtcykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAgICBhdXRvIGNo
ZWNrU2VtYW50aWNUeXBlcyA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVt
cykgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAg
ICAgICAgICAgICAgIGF1dG8gYWNjZXB0YWJsZSA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oY29uc3QgQVNUOjpCYXNlU2VtYW50aWMmIHNlbWFudGljKSAtPiBib29sIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljLmlzQWNjZXB0YWJsZVR5cGUoKml0ZW0udW5u
YW1lZFR5cGUsIGludHJpbnNpY3MpOwotICAgICAgICAgICAgICAgIH0pLCAqaXRlbS5zZW1hbnRp
Yyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhY2NlcHRhYmxlKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljVHlwZXMoaW5wdXRJdGVtcykp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY1R5
cGVzKG91dHB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIGF1dG8gY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUgPSBbJl0oY29uc3Qg
VmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMsIEFTVDo6QmFzZVNlbWFudGljOjpTaGFkZXJJ
dGVtRGlyZWN0aW9uIGRpcmVjdGlvbikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBpdGVtcykgewotICAgICAgICAgICAgICAgIGF1dG8gYWNjZXB0YWJsZSA9IFdURjo6
dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgQVNUOjpCYXNlU2VtYW50aWMmIHNlbWFu
dGljKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljLmlzQWNj
ZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oZGlyZWN0aW9uLCBlbnRyeVBvaW50VHlwZSk7
Ci0gICAgICAgICAgICAgICAgfSksICppdGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWFjY2VwdGFibGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBp
ZiAoIWNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGlucHV0SXRlbXMsIEFTVDo6QmFzZVNlbWFu
dGljOjpTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUob3V0cHV0SXRlbXMs
IEFTVDo6QmFzZVNlbWFudGljOjpTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1BP
RERhdGEgPSBbJl0oY29uc3QgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaXRlbXMpIC0+IGJvb2wg
ewotICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgICAgICAg
ICBQT0RDaGVja2VyIHBvZENoZWNrZXI7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEFTVDo6UG9p
bnRlclR5cGU+KGl0ZW0udW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICBwb2RDaGVj
a2VyLmNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPigqaXRlbS51
bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8
QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KGl0ZW0udW5uYW1lZFR5cGUpKQotICAgICAgICAgICAg
ICAgICAgICBwb2RDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZT4oKml0ZW0udW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPihpdGVtLnVubmFtZWRUeXBlKSkK
LSAgICAgICAgICAgICAgICAgICAgcG9kQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpBcnJheVR5cGU+KCppdGVtLnVubmFtZWRUeXBlKS50eXBlKCkpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgaWYgKHBvZENoZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH07Ci0gICAgICAgIGlmICghY2hlY2tQT0REYXRhKGlucHV0SXRlbXMpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNoZWNrUE9ERGF0YShvdXRwdXRJdGVtcykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXN0YXRpYyBib29sIGNoZWNrT3BlcmF0b3JPdmVybG9hZChjb25zdCBBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGVudW0gY2xhc3MgQ2hlY2tLaW5k
IHsKLSAgICAgICAgSW5kZXgsCi0gICAgICAgIERvdAotICAgIH07Ci0KLSAgICBpZiAoIWZ1bmN0
aW9uRGVmaW5pdGlvbi5pc09wZXJhdG9yKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
IChmdW5jdGlvbkRlZmluaXRpb24uaXNDYXN0KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcisrIiB8fCBmdW5jdGlv
bkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvci0tIikgewotICAgICAgICByZXR1cm4gZnVu
Y3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMQotICAgICAgICAgICAgJiYg
bWF0Y2hlcygqZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLCBmdW5j
dGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICB9Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlv
bi5uYW1lKCkgPT0gIm9wZXJhdG9yKyIgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAi
b3BlcmF0b3ItIikKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpID09IDEgfHwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IqIgot
ICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvci8iCi0gICAg
ICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yJSIKLSAgICAgICAg
fHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3ImIgotICAgICAgICB8fCBm
dW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcnwiCi0gICAgICAgIHx8IGZ1bmN0
aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yXiIKLSAgICAgICAgfHwgZnVuY3Rpb25E
ZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3I8PCIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZp
bml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3I+PiIpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbkRl
ZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyOwotICAgIGlmIChmdW5jdGlvbkRlZmlu
aXRpb24ubmFtZSgpID09ICJvcGVyYXRvcn4iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZp
bml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWNsYXNzIENoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgQ2hlY2tlcihj
b25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBQcm9ncmFtJiBwcm9ncmFtKQotICAgICAgICA6
IG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAgICAgICAsIG1fcHJvZ3JhbShwcm9ncmFtKQot
ICAgIHsKLSAgICAgICAgYXV0byBhZGRGdW5jdGlvbiA9IFsmXSAoQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uJiBmdW5jdGlvbikgewotICAgICAgICAgICAgQVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1
cm5UeXBlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi5pc0Nhc3QoKSAmJiBp
czxBU1Q6Ok5hbWVkVHlwZT4oZnVuY3Rpb24udHlwZSgpLnVuaWZ5Tm9kZSgpKSkKLSAgICAgICAg
ICAgICAgICBjYXN0UmV0dXJuVHlwZSA9ICZkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oZnVuY3Rp
b24udHlwZSgpLnVuaWZ5Tm9kZSgpKTsKLQotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHR5cGVzOwotICAgICAgICAgICAgdHlwZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLQot
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYXJhbSA6IGZ1bmN0aW9uLnBhcmFtZXRlcnMoKSkKLSAg
ICAgICAgICAgICAgICB0eXBlcy51bmNoZWNrZWRBcHBlbmQobm9ybWFsaXplZFR5cGVGb3JGdW5j
dGlvbktleSgqcGFyYW0tPnR5cGUoKSkpOwotCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fZnVuY3Rpb25zLmFkZChGdW5jdGlvbktleSB7IGZ1bmN0aW9uLm5hbWUoKSwgV1RGTW92ZSh0
eXBlcyksIGNhc3RSZXR1cm5UeXBlIH0sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+KCkpOwotICAgICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZnVuY3Rpb24pOwotICAgICAgICB9OwotCi0gICAgICAgIGZv
ciAoYXV0byYgZnVuY3Rpb24gOiBtX3Byb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAg
ICAgICAgICAgYWRkRnVuY3Rpb24oZnVuY3Rpb24uZ2V0KCkpOwotICAgICAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uIDogbV9wcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpCi0gICAg
ICAgICAgICBhZGRGdW5jdGlvbihmdW5jdGlvbi5nZXQoKSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB+Q2hlY2tlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgdmlzaXQoUHJvZ3JhbSYpIG92ZXJy
aWRlOwotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFzc2lnblR5cGVzKCk7Ci0KLXByaXZh
dGU6Ci0gICAgYm9vbCBjaGVja1NoYWRlclR5cGUoY29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRp
b24mKTsKLSAgICBib29sIGlzQm9vbFR5cGUoUmVzb2x2aW5nVHlwZSYpOwotICAgIHN0cnVjdCBS
ZWN1cnNlSW5mbyB7Ci0gICAgICAgIFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGU7Ci0gICAg
ICAgIGNvbnN0IEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb247Ci0gICAgfTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPiByZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJl
c3Npb24mLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlID0gZmFsc2UpOwotICAgIHN0ZDo6b3B0aW9u
YWw8UmVjdXJzZUluZm8+IGdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xl
ZnRWYWx1ZSA9IGZhbHNlKTsKLSAgICBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gcmVjdXJzZUFu
ZFdyYXBCYXNlVHlwZShBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpOwotICAgIGJvb2wg
cmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShBU1Q6OkV4cHJlc3Npb24mKTsKLSAgICB2b2lkIGFz
c2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4s
IEFTVDo6VHlwZUFubm90YXRpb24pOwotICAgIHZvaWQgYXNzaWduQ29uY3JldGVUeXBlKEFTVDo6
RXhwcmVzc2lvbiYsIEFTVDo6TmFtZWRUeXBlJiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAg
dm9pZCBhc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYsIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4sIEFTVDo6VHlwZUFubm90YXRpb24pOwotICAgIHZvaWQgZm9yd2FyZFR5cGUoQVNU
OjpFeHByZXNzaW9uJiwgUmVzb2x2aW5nVHlwZSYsIEFTVDo6VHlwZUFubm90YXRpb24pOwotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QXNzaWdu
bWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50
ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFy
cmF5UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2Vy
TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
V2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpU
ZXJuYXJ5RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhw
cmVzc2lvbiYpIG92ZXJyaWRlOwotCi0gICAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNv
bHZlRnVuY3Rpb24oVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlTG9jYXRpb24sIEFTVDo6TmFtZWRUeXBl
KiBjYXN0UmV0dXJuVHlwZSA9IG51bGxwdHIpOwotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYgd3Jh
cHBlZEZsb2F0VHlwZSgpCi0gICAgewotICAgICAgICBpZiAoIW1fd3JhcHBlZEZsb2F0VHlwZSkK
LSAgICAgICAgICAgIG1fd3JhcHBlZEZsb2F0VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cCh7IH0sIG1faW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAqbV93cmFw
cGVkRmxvYXRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6VW5uYW1lZFR5cGUmIHdyYXBwZWRVaW50
VHlwZSgpCi0gICAgewotICAgICAgICBpZiAoIW1fd3JhcHBlZFVpbnRUeXBlKQotICAgICAgICAg
ICAgbV93cmFwcGVkVWludFR5cGUgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoeyB9LCBtX2lu
dHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAqbV93cmFwcGVkVWludFR5cGU7
Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYgbm9ybWFsaXplZFR5cGVGb3JGdW5jdGlv
bktleShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlKQotICAgIHsKLSAgICAgICAgYXV0byogdW5pZnlO
b2RlID0gJnR5cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgIGlmICh1bmlmeU5vZGUgPT0gJm1faW50
cmluc2ljcy51aW50VHlwZSgpIHx8IHVuaWZ5Tm9kZSA9PSAmbV9pbnRyaW5zaWNzLmludFR5cGUo
KSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVkRmxvYXRUeXBlKCk7Ci0KLSAgICAgICAgcmV0
dXJuIHR5cGU7Ci0gICAgfQotCi0gICAgUmVmUHRyPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV93cmFw
cGVkRmxvYXRUeXBlOwotICAgIFJlZlB0cjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fd3JhcHBlZFVp
bnRUeXBlOwotICAgIEhhc2hNYXA8QVNUOjpFeHByZXNzaW9uKiwgc3RkOjp1bmlxdWVfcHRyPFJl
c29sdmluZ1R5cGU+PiBtX3R5cGVNYXA7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fdmVydGV4RW50
cnlQb2ludHNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZnJh
Z21lbnRFbnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9jb21wdXRlRW50cnlQb2ludHNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgY29uc3Qg
SW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotICAgIFByb2dyYW0mIG1fcHJvZ3JhbTsKLSAgICBB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogbV9jdXJyZW50RnVuY3Rpb24geyBudWxscHRyIH07Ci0g
ICAgSGFzaE1hcDxGdW5jdGlvbktleSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4sIEZ1bmN0aW9uS2V5OjpIYXNoLCBGdW5jdGlvbktl
eTo6VHJhaXRzPiBtX2Z1bmN0aW9uczsKLSAgICBBU1Q6Ok5hbWVTcGFjZSBtX2N1cnJlbnROYW1l
U3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci0gICAgYm9vbCBtX2lz
VmlzaXRpbmdQYXJhbWV0ZXJzIHsgZmFsc2UgfTsKLX07Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQo
UHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAvLyBUaGVzZSB2aXNpdGluZyBmdW5jdGlvbnMgbWln
aHQgYWRkIG5ldyBnbG9iYWwgc3RhdGVtZW50cywgc28gZG9uJ3QgdXNlIGZvcmVhY2ggc3ludGF4
LgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5z
aXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmlu
aXRpb25zKClbaV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1
cmVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
cHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClb
aV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFy
YXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFt
Lm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
cygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IENoZWNrZXI6OmFzc2lnblR5cGVzKCkKLXsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6
IG1fdHlwZU1hcCkgewotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBrZXlWYWx1ZVBhaXIudmFsdWUt
PnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1l
ZFR5cGUpIC0+IGJvb2wgewotICAgICAgICAgICAga2V5VmFsdWVQYWlyLmtleS0+c2V0VHlwZSh1
bm5hbWVkVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBpZiAoIXJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLT5yZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGNvbW1pdChyZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKSkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBrZXlWYWx1ZVBhaXIua2V5LT5zZXRUeXBlKHJl
c29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLnJlc29sdmVkVHlwZSgpKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90
IHJlc29sdmUgdGhlIHR5cGUgb2YgYSBjb25zdGFudC4iKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHsgfTsKLX0KLQotYm9vbCBDaGVja2VyOjpjaGVja1NoYWRlclR5cGUoY29uc3QgQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBhdXRvIGluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgc3dpdGNoICgq
ZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6RW50
cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1f
dmVydGV4RW50cnlQb2ludHNbaW5kZXhdLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpKSk7
Ci0gICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG1fZnJhZ21lbnRFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0
aW9uRGVmaW5pdGlvbi5uYW1lKCkpKTsKLSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OkNv
bXB1dGU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbXB1dGVFbnRyeVBv
aW50c1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKTsKLSAgICB9Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uKQotewotICAgIG1faXNWaXNpdGluZ1BhcmFtZXRlcnMgPSB0cnVlOwotICAgIFZp
c2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIG1faXNWaXNpdGluZ1BhcmFt
ZXRlcnMgPSBmYWxzZTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIG1fY3VycmVudE5hbWVTcGFjZSA9
IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lU3BhY2UoKTsKLSAgICBtX2N1cnJlbnRGdW5jdGlvbiA9
ICZmdW5jdGlvbkRlZmluaXRpb247Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBv
aW50VHlwZSgpKSB7Ci0gICAgICAgIGlmICghY2hlY2tTaGFkZXJUeXBlKGZ1bmN0aW9uRGVmaW5p
dGlvbikpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJEdXBsaWNhdGUgZW50cnlwb2lu
dCBmdW5jdGlvbi4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGVudHJ5UG9pbnRJdGVtcyA9
IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhtX2ludHJpbnNpY3MsIGZ1bmN0aW9uRGVmaW5pdGlvbik7
Ci0gICAgICAgIGlmICghZW50cnlQb2ludEl0ZW1zKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihl
bnRyeVBvaW50SXRlbXMuZXJyb3IoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljcyhlbnRyeVBvaW50SXRlbXMtPmlucHV0cywgZW50
cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCBmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUo
KSwgbV9pbnRyaW5zaWNzKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkJhZCBzZW1h
bnRpY3MgZm9yIGVudHJ5cG9pbnQuIiwgZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFjaGVj
a09wZXJhdG9yT3ZlcmxvYWQoZnVuY3Rpb25EZWZpbml0aW9uKSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiT3BlcmF0b3IgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgc2lnbmF0dXJlLiIsIGZ1
bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLX0KLQotc3RhdGlj
IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBlJiBs
ZWZ0LCBSZXNvbHZpbmdUeXBlJiByaWdodCkKLXsKLSAgICByZXR1cm4gbGVmdC52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIGxlZnQpIC0+IFJlZlB0cjxB
U1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiByaWdodC52aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gewotICAgICAgICAgICAgaWYgKG1hdGNoZXMobGVmdCwgcmlnaHQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBsZWZ0LmNvcHlSZWYoKTsKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYg
cmlnaHQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4g
bWF0Y2hBbmRDb21taXQobGVmdCwgcmlnaHQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9
KSk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIGxlZnQpIC0+
IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIHJldHVybiByaWdodC52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJpZ2h0KSAtPiBSZWZQ
dHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0
KHJpZ2h0LCBsZWZ0LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJpZ2h0KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlw
ZT4gewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KGxlZnQtPnJlc29sdmFibGVU
eXBlKCksIHJpZ2h0LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSkpOwotICAgIH0pKTsK
LX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChSZXNv
bHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkK
LXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc29sdmluZ1R5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFt
ZWRUeXBlPiB7Ci0gICAgICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCByZXNvbHZpbmdUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiAmdW5uYW1lZFR5cGU7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZp
bmdUeXBlKSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gbWF0
Y2hBbmRDb21taXQodW5uYW1lZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFibGVUeXBlKCkp
OwotICAgIH0pKTsKLX0KLQotc3RhdGljIGJvb2wgbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlw
ZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKLXsKLSAgICByZXR1
cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4mIHJlc29sdmluZ1R5cGUpIHsKLSAgICAgICAgaWYgKG1hdGNoZXMocmVzb2x2aW5n
VHlwZSwgbmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJl
c29sdmluZ1R5cGUpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobmFt
ZWRUeXBlLCByZXNvbHZpbmdUeXBlLT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICB9KSk7Ci19Ci0K
LXN0YXRpYyBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gY29tbWl0KFJlc29sdmluZ1R5cGUmIHJl
c29sdmluZ1R5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmUHRy
PEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHVubmFtZWRUeXBlLmNvcHlSZWYo
KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIGlm
ICghcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZl
ZFR5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBjb21taXQocmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICByZXR1cm4gJnJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLnJlc29sdmVkVHlwZSgpOwotICAgIH0pKTsKLX0KLQot
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBDaGVja2VyOjpyZXNvbHZlRnVuY3Rpb24oVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBuYW1lLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0
dXJuVHlwZSkKLXsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFt
ZWRUeXBlPj4gdW5uYW1lZFR5cGVzOwotICAgIHVubmFtZWRUeXBlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHR5cGVzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGF1dG8gcmVzb2x2aW5nVHlwZSA6IHR5
cGVzKSB7Ci0gICAgICAgIEFTVDo6VW5uYW1lZFR5cGUqIHR5cGUgPSByZXNvbHZpbmdUeXBlLmdl
dCgpLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5u
YW1lZFR5cGUpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsKLSAgICAgICAgICAgIHJldHVybiB1bm5h
bWVkVHlwZS5wdHIoKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7Ci0g
ICAgICAgICAgICBpZiAocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCku
bWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJnJlc29sdmFibGVU
eXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLnJlc29sdmVkVHlwZSgpOwotCi0gICAgICAg
ICAgICBpZiAocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuaXNGbG9h
dExpdGVyYWxUeXBlKCkKLSAgICAgICAgICAgICAgICB8fCByZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZS0+cmVzb2x2YWJsZVR5cGUoKS5pc0ludGVnZXJMaXRlcmFsVHlwZSgpCi0gICAgICAgICAgICAg
ICAgfHwgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuaXNVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAmd3JhcHBlZEZs
b2F0VHlwZSgpOwotCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0KHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpKS5nZXQoKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAg
IGlmICghdHlwZSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNvdWxkIG5vdCByZXNv
bHZlIHRoZSB0eXBlIG9mIGEgY29uc3RhbnQuIikpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIH0KLQotICAgICAgICB1bm5hbWVkVHlwZXMudW5jaGVja2VkQXBwZW5kKG5v
cm1hbGl6ZWRUeXBlRm9yRnVuY3Rpb25LZXkoKnR5cGUpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIGF1dG8gaXRlciA9IG1fZnVuY3Rpb25zLmZpbmQoRnVuY3Rpb25LZXkgeyBuYW1lLCBXVEZN
b3ZlKHVubmFtZWRUeXBlcyksIGNhc3RSZXR1cm5UeXBlIH0pOwotICAgICAgICBpZiAoaXRlciAh
PSBtX2Z1bmN0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAgaWYgKEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChpdGVyLT52YWx1ZSwg
dHlwZXMsIGNhc3RSZXR1cm5UeXBlLCBtX2N1cnJlbnROYW1lU3BhY2UpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRvIG5l
d0Z1bmN0aW9uID0gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihuYW1lLCBsb2NhdGlvbiwgdHlwZXMs
IG1faW50cmluc2ljcykpIHsKLSAgICAgICAgbV9wcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuZXdG
dW5jdGlvbikpOwotICAgICAgICByZXR1cm4gJm1fcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9ucygpLmxhc3QoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25E
ZWZpbml0aW9uKQotewotICAgIGJvb2wgaXNTaWduZWQ7Ci0gICAgYXV0byogYmFzZVR5cGUgPSAo
WyZdKCkgLT4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIHsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgICAgICBhdXRvJiBi
YXNlVHlwZSA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAg
ICAgIGlmICghaXM8QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBlKSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4oYmFzZVR5cGUpOwotICAgICAgICBpZiAoIWlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uPihuYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1
dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5p
c0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlzU2lnbmVkID0g
bmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzU2lnbmVkKCk7Ci0gICAgICAgIHJldHVybiAmbmF0aXZl
VHlwZURlY2xhcmF0aW9uOwotICAgIH0pKCk7Ci0gICAgaWYgKCFiYXNlVHlwZSkgewotICAgICAg
ICBzZXRFcnJvcihFcnJvcigiSW52YWxpZCBiYXNlIHR5cGUgZm9yIGVudW0uIiwgZW51bWVyYXRp
b25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIGVudW1lcmF0aW9uTWVtYmVycyA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVt
ZXJhdGlvbk1lbWJlcnMoKTsKLQotICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51bWVyYXRpb25N
ZW1iZXJzKSB7Ci0gICAgICAgIGludDY0X3QgdmFsdWUgPSBtZW1iZXIuZ2V0KCkudmFsdWUoKTsK
LSAgICAgICAgaWYgKGlzU2lnbmVkKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSAhPSB2YWx1ZSkgewotICAgICAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIGVudW1lcmF0aW9uIHZhbHVlLiIsIG1lbWJl
ci5nZXQoKS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSAhPSB2YWx1ZSkgewotICAgICAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIGVudW1lcmF0aW9uIHZhbHVlLiIsIG1l
bWJlci5nZXQoKS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZW51bWVyYXRpb25NZW1iZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUg
PSBlbnVtZXJhdGlvbk1lbWJlcnNbaV0uZ2V0KCkudmFsdWUoKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaiA9IGkgKyAxOyBqIDwgZW51bWVyYXRpb25NZW1iZXJzLnNpemUoKTsgKytqKSB7Ci0gICAg
ICAgICAgICBhdXRvIG90aGVyVmFsdWUgPSBlbnVtZXJhdGlvbk1lbWJlcnNbal0uZ2V0KCkudmFs
dWUoKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBvdGhlclZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWNsYXJlIGR1cGxpY2F0ZSBlbnVtZXJhdGlv
biB2YWx1ZXMuIiwgZW51bWVyYXRpb25NZW1iZXJzW2pdLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgYm9vbCBmb3VuZFplcm8gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIG1lbWJlciA6
IGVudW1lcmF0aW9uTWVtYmVycykgewotICAgICAgICBpZiAoIW1lbWJlci5nZXQoKS52YWx1ZSgp
KSB7Ci0gICAgICAgICAgICBmb3VuZFplcm8gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFmb3VuZFplcm8pIHsKLSAgICAgICAgc2V0RXJyb3Io
RXJyb3IoImVudW0gZGVmaW5pdGlvbiBtdXN0IGNvbnRhaW4gYSB6ZXJvIHZhbHVlLiIsIGVudW1l
cmF0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVy
ZW5jZSkKLXsKLSAgICBBU1NFUlQodHlwZVJlZmVyZW5jZS5tYXliZVJlc29sdmVkVHlwZSgpKTsK
LQotICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1l
bnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJndW1lbnQpOwotfQotCi1h
dXRvIENoZWNrZXI6OnJlY3Vyc2VBbmRHZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lv
biwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4K
LXsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gZ2V0SW5mbyhleHByZXNz
aW9uLCByZXF1aXJlc0xlZnRWYWx1ZSk7Ci19Ci0KLWF1dG8gQ2hlY2tlcjo6Z2V0SW5mbyhBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6
b3B0aW9uYWw8UmVjdXJzZUluZm8+Ci17Ci0gICAgYXV0byB0eXBlSXRlcmF0b3IgPSBtX3R5cGVN
YXAuZmluZCgmZXhwcmVzc2lvbik7Ci0gICAgQVNTRVJUKHR5cGVJdGVyYXRvciAhPSBtX3R5cGVN
YXAuZW5kKCkpOwotCi0gICAgY29uc3QgYXV0byYgdHlwZUFubm90YXRpb24gPSBleHByZXNzaW9u
LnR5cGVBbm5vdGF0aW9uKCk7Ci0gICAgaWYgKHJlcXVpcmVzTGVmdFZhbHVlICYmIHR5cGVBbm5v
dGF0aW9uLmlzUmlnaHRWYWx1ZSgpKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJVbmV4cGVj
dGVkIHJ2YWx1ZS4iLCBleHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIHJldHVybiB7eyAqdHlwZUl0ZXJhdG9yLT52YWx1
ZSwgdHlwZUFubm90YXRpb24gfX07Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIC8vIFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb25zIGFyZSB0aGUgb25seSBwbGFjZSB3aGVyZSBhbm9ueW1vdXMgdmFy
aWFibGVzIGV4aXN0LAotICAgIC8vIGFuZCB0aGF0IGRvZXNuJ3QgcmVjdXJzZSBvbiB0aGUgYW5v
bnltb3VzIHZhcmlhYmxlcywgc28gd2UgY2FuIGFzc3VtZSB0aGUgdmFyaWFibGUgaGFzIGEgdHlw
ZS4KLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsK
LSAgICBpZiAobWF0Y2hlcygqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCksIG1faW50cmluc2lj
cy52b2lkVHlwZSgpKSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiVmFyaWFibGVzIGNhbid0
IGhhdmUgdm9pZCB0eXBlLiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0
aWFsaXplcigpKSB7Ci0gICAgICAgIGF1dG8mIGxoc1R5cGUgPSAqdmFyaWFibGVEZWNsYXJhdGlv
bi50eXBlKCk7Ci0gICAgICAgIGF1dG8gaW5pdGlhbGl6ZXJJbmZvID0gcmVjdXJzZUFuZEdldElu
Zm8oKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci0gICAgICAgIGlmICghaW5p
dGlhbGl6ZXJJbmZvKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIW1hdGNoQW5k
Q29tbWl0KGluaXRpYWxpemVySW5mby0+cmVzb2x2aW5nVHlwZSwgbGhzVHlwZSkpIHsKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJEZWNsYXJlZCB2YXJpYWJsZSB0eXBlIGRvZXMgbm90IG1h
dGNoIGl0cyBpbml0aWFsaXplcidzIHR5cGUuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
ICghbV9pc1Zpc2l0aW5nUGFyYW1ldGVycyAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHZhcmlh
YmxlRGVjbGFyYXRpb24udHlwZSgpLT51bmlmeU5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEFT
VDo6UG9pbnRlclR5cGU+KHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpLT51bmlmeU5vZGUoKSkp
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiTXVzdCBhc3NpZ24gdG8gYSBwb2ludGVyIHZh
cmlhYmxlIGRlY2xhcmF0aW9uIGluIGl0cyBpbml0aWFsaXplci4iLCB2YXJpYWJsZURlY2xhcmF0
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJU
KGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKS0+
dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJNdXN0IGFzc2lnbiB0
byBhbiBhcnJheSByZWZlcmVuY2UgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gaXRzIGluaXRpYWxp
emVyLiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRl
VHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1
bm5hbWVkVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6Umln
aHRWYWx1ZSgpKQotewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVz
c2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwot
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAg
ZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbiwgQVNUOjpOYW1lZFR5cGUmIHR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gYW5ub3Rh
dGlvbikKLXsKLSAgICBhdXRvIHVubmFtZWRUeXBlID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KHR5cGUuY29kZUxvY2F0aW9uKCksIHR5cGUpOwotICAgIFZpc2l0b3I6OnZpc2l0KHVubmFtZWRU
eXBlKTsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZXhwcmVzc2lvbiwgV1RGTW92ZSh1bm5hbWVk
VHlwZSksIGFubm90YXRpb24pOwotfQotCi12b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJl
c29sdmFibGVUeXBlUmVmZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9u
ID0gQVNUOjpSaWdodFZhbHVlKCkpCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAu
YWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UpKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1v
dmUodHlwZUFubm90YXRpb24pKTsKLX0KLQotdm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFT
VDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsK
LSAgICByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFw
LmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJl
ZigpKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc3Vs
dCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24s
IG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0pKTsK
LSAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24p
KTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBh
c3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRJbmZvID0gcmVjdXJzZUFuZEdl
dEluZm8oYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgpLCB0cnVlKTsKLSAgICBpZiAoIWxlZnRJ
bmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHJpZ2h0SW5mbyA9IHJlY3Vyc2VBbmRH
ZXRJbmZvKGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwotICAgIGlmICghcmlnaHRJbmZv
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHJlc3VsdFR5cGUgPSBtYXRjaEFuZENvbW1p
dChsZWZ0SW5mby0+cmVzb2x2aW5nVHlwZSwgcmlnaHRJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAg
ICBpZiAoIXJlc3VsdFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkxlZnQgaGFuZCBz
aWRlIG9mIGFzc2lnbm1lbnQgZG9lcyBub3QgbWF0Y2ggdGhlIHR5cGUgb2YgdGhlIHJpZ2h0IGhh
bmQgc2lkZS4iLCBhc3NpZ25tZW50RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKGFzc2lnbm1lbnRFeHBy
ZXNzaW9uLCAqcmVzdWx0VHlwZSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAg
IGF1dG8gbGVmdFZhbHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24ubGVmdFZhbHVlKCksIHRydWUpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYWx1ZSgp
LnNldFR5cGUoKmxlZnRWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUuZ2V0VW5uYW1lZFR5cGUoKSk7
Ci0KLSAgICBhdXRvIG5ld1ZhbHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgIGlmICghbmV3VmFsdWVJ
bmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+
IG1hdGNoZWRUeXBlID0gbWF0Y2hBbmRDb21taXQobGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlw
ZSwgbmV3VmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKSkKLSAgICAgICAgcmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5uZXdWYWx1ZSgpLnNldFR5cGUoKm1hdGNoZWRUeXBlKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkJhc2Ugb2YgdGhlIHJlYWQtbW9kaWZ5LXdyaXRlIGV4
cHJlc3Npb24gZG9lcyBub3QgbWF0Y2ggdGhlIHR5cGUgb2YgdGhlIG5ldyB2YWx1ZS4iLCByZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvIHJlc3VsdEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhyZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0gICAgaWYgKCFyZXN1bHRJ
bmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3J3YXJkVHlwZShyZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLCByZXN1bHRJbmZvLT5yZXNvbHZpbmdUeXBlLCBBU1Q6OlJpZ2h0VmFsdWUoKSk7
Ci19Ci0KLXN0YXRpYyBBU1Q6OlVubmFtZWRUeXBlKiBnZXRVbm5hbWVkVHlwZShSZXNvbHZpbmdU
eXBlJiByZXNvbHZpbmdUeXBlKQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoW10oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB0eXBlKSAtPiBBU1Q6OlVu
bmFtZWRUeXBlKiB7Ci0gICAgICAgIHJldHVybiB0eXBlLnB0cigpOwotICAgIH0sIFtdKFJlZlB0
cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHR5cGUpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsK
LSAgICAgICAgLy8gRklYTUU6IElmIHRoZSB0eXBlIGlzbid0IGNvbW1pdHRlZCwgc2hvdWxkIHdl
IGp1c3QgY29tbWl0KCkgaXQgbm93PwotICAgICAgICByZXR1cm4gdHlwZS0+cmVzb2x2YWJsZVR5
cGUoKS5tYXliZVJlc29sdmVkVHlwZSgpOwotICAgIH0pKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2
aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQot
ewotICAgIGF1dG8gcG9pbnRlckluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhkZXJlZmVyZW5jZUV4
cHJlc3Npb24ucG9pbnRlcigpKTsKLSAgICBpZiAoIXBvaW50ZXJJbmZvKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvKiB1bm5hbWVkVHlwZSA9IGdldFVubmFtZWRUeXBlKHBvaW50ZXJJbmZv
LT5yZXNvbHZpbmdUeXBlKTsKLQotICAgIGF1dG8qIHBvaW50ZXJUeXBlID0gKFsmXShBU1Q6OlVu
bmFtZWRUeXBlKiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpQb2ludGVyVHlwZSogewotICAgICAgICBp
ZiAoIXVubmFtZWRUeXBlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1
dG8mIHVuaWZ5Tm9kZSA9IHVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKCFp
czxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIGF1dG8mIHVubmFtZWRVbmlmeVR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFt
ZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBpZiAoIWlzPEFTVDo6UG9pbnRlclR5cGU+KHVu
bmFtZWRVbmlmeVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiAmZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFVuaWZ5VHlwZSk7Ci0gICAg
fSkodW5uYW1lZFR5cGUpOwotICAgIGlmICghcG9pbnRlclR5cGUpIHsKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCBkZXJlZmVyZW5jZSBhIG5vbi1wb2ludGVyIHR5cGUuIiwgZGVyZWZl
cmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCBwb2ludGVy
VHlwZS0+ZWxlbWVudFR5cGUoKSwgQVNUOjpMZWZ0VmFsdWUgeyBwb2ludGVyVHlwZS0+YWRkcmVz
c1NwYWNlKCkgfSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRWYWx1ZUlu
Zm8gPSByZWN1cnNlQW5kR2V0SW5mbyhtYWtlUG9pbnRlckV4cHJlc3Npb24ubGVmdFZhbHVlKCks
IHRydWUpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gbGVmdFZhbHVlSW5mby0+dHlwZUFubm90YXRpb24ubGVm
dEFkZHJlc3NTcGFjZSgpOwotICAgIGlmICghbGVmdEFkZHJlc3NTcGFjZSkgewotICAgICAgICBz
ZXRFcnJvcihFcnJvcigiQ2Fubm90IHRha2UgdGhlIGFkZHJlc3Mgb2YgYSBub24gbHZhbHVlLiIs
IG1ha2VQb2ludGVyRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byogbGVmdFZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKGxlZnRW
YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghbGVmdFZhbHVlVHlwZSkgewotICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHRha2UgdGhlIGFkZHJlc3Mgb2YgYSB2YWx1ZSB3
aXRob3V0IGEgdHlwZS4iLCBtYWtlUG9pbnRlckV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShtYWtlUG9p
bnRlckV4cHJlc3Npb24sIEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShtYWtlUG9pbnRlckV4cHJl
c3Npb24uY29kZUxvY2F0aW9uKCksICpsZWZ0QWRkcmVzc1NwYWNlLCAqbGVmdFZhbHVlVHlwZSkp
OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBhdXRvIGxlZnRWYWx1
ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxl
ZnRWYWx1ZSgpKTsKLSAgICBpZiAoIWxlZnRWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8qIGxlZnRWYWx1ZVR5cGUgPSBnZXRVbm5hbWVkVHlwZShsZWZ0VmFsdWVJbmZvLT5y
ZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWxlZnRWYWx1ZVR5cGUpIHsKLSAgICAgICAgc2V0RXJy
b3IoRXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVyZW5jZSBvZiBhIHZhbHVlIHdpdGhv
dXQgYSB0eXBlLiIsIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IGxlZnRW
YWx1ZVR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlm
eU5vZGUpKSB7Ci0gICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5h
bWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVu
bmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ25Db25jcmV0
ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCBw
b2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSwgcG9pbnRlclR5cGUuZWxlbWVudFR5cGUoKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBsZWZ0QWRkcmVz
c1NwYWNlID0gbGVmdFZhbHVlSW5mby0+dHlwZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgp
OwotICAgICAgICBpZiAoIWxlZnRBZGRyZXNzU3BhY2UpIHsKLSAgICAgICAgICAgIHNldEVycm9y
KEVycm9yKCJDYW5ub3QgbWFrZSBhbiBhcnJheSByZWZlcmVuY2UgZnJvbSBhIG5vbi1sZWZ0LXZh
bHVlLiIsIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpczxBU1Q6OkFycmF5
VHlwZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3du
Y2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjMgU2F2ZSB0aGUg
bnVtYmVyIG9mIGVsZW1lbnRzLgotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUo
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNz
U3BhY2UsIGFycmF5VHlwZS50eXBlKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFjZSA9IGxlZnRWYWx1ZUluZm8tPnR5
cGVBbm5vdGF0aW9uLmxlZnRBZGRyZXNzU3BhY2UoKTsKLSAgICBpZiAoIWxlZnRBZGRyZXNzU3Bh
Y2UpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVy
ZW5jZSBmcm9tIGEgbm9uLWxlZnQtdmFsdWUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWdu
Q29uY3JldGVUeXBlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlOjpjcmVhdGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSwgKmxlZnRBZGRyZXNzU3BhY2UsICpsZWZ0VmFsdWVUeXBlKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIGF1
dG8gYmFzZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0g
ICAgaWYgKCFiYXNlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBiYXNlVW5uYW1l
ZFR5cGUgPSBjb21taXQoYmFzZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghYmFzZVVu
bmFtZWRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0aGUg
dHlwZSBvZiB0aGUgYmFzZSBvZiBhIGRvdCBleHByZXNzaW9uLiIsIGRvdEV4cHJlc3Npb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIHR5cGUg
PSBiYXNlVW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24+KHR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIHN0cnVjdHVyZSA9IGRvd25jYXN0
PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSk7ICAgIAotICAgICAgICBpZiAoQVNUOjpT
dHJ1Y3R1cmVFbGVtZW50KiBlbGVtZW50ID0gc3RydWN0dXJlLmZpbmQoZG90RXhwcmVzc2lvbi5m
aWVsZE5hbWUoKSkpCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lv
biwgZWxlbWVudC0+dHlwZSgpLCBiYXNlSW5mby0+dHlwZUFubm90YXRpb24pOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKG1ha2VTdHJpbmcoIkZpZWxkIG5hbWU6
ICciLCBkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpLCAiJyBkb2VzIG5vdCBleGlzdCBvbiBzdHJ1
Y3R1cmU6ICIsIHN0cnVjdHVyZS5uYW1lKCkpLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGRvdEV4
cHJlc3Npb24uZmllbGROYW1lKCkgPT0gImxlbmd0aCIpIHsKLSAgICAgICAgaWYgKGlzPEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKQotICAgICAgICAgICAgfHwgaXM8QVNUOjpBcnJheVR5
cGU+KHR5cGUpCi0gICAgICAgICAgICB8fCAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHR5cGUpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5pc1Zl
Y3RvcigpKSkgewotICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24s
IHdyYXBwZWRVaW50VHlwZSgpLCBBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiLmxlbmd0aCBmaWVsZCBpcyBvbmx5IGF2YWls
YWJsZSBvbiBhcnJheXMsIGFycmF5IHJlZmVyZW5jZXMsIG9yIHZlY3RvcnMuIiwgZG90RXhwcmVz
c2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkgJiYgZG93
bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLmlzVmVjdG9yKCkpIHsKLSAg
ICAgICAgaWYgKCFtX3Byb2dyYW0uaXNWYWxpZFZlY3RvclByb3BlcnR5KGRvdEV4cHJlc3Npb24u
ZmllbGROYW1lKCkpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcihtYWtlU3RyaW5nKCIn
LiIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCksICInIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5
IG9uIGEgdmVjdG9yLiIpLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHR5cGVBbm5vdGF0aW9uID0g
YmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpID8gQVNUOjpUeXBlQW5ub3Rh
dGlvbiB7IEFTVDo6UmlnaHRWYWx1ZSgpIH0gOiBBU1Q6OlR5cGVBbm5vdGF0aW9uIHsgQVNUOjpB
YnN0cmFjdExlZnRWYWx1ZSgpIH07Ci0KLSAgICAgICAgc2l6ZV90IGZpZWxkTGVuZ3RoID0gZG90
RXhwcmVzc2lvbi5maWVsZE5hbWUoKS5sZW5ndGgoKTsKLSAgICAgICAgYXV0byYgaW5uZXJUeXBl
ID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpLnZlY3RvclR5cGVB
cmd1bWVudCgpOwotICAgICAgICBpZiAoZmllbGRMZW5ndGggPT0gMSkKLSAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBpbm5lclR5cGUsIHR5cGVBbm5vdGF0aW9u
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1f
aW50cmluc2ljcy5ib29sVHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLmJvb2xWZWN0b3JUeXBlRm9yU2l6ZShmaWVs
ZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMo
aW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuaW50VHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3Np
Z25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLmludFZlY3RvclR5cGVG
b3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy51aW50VHlwZSgpKSkKLSAgICAgICAg
ICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90RXhwcmVzc2lvbiwgbV9pbnRyaW5zaWNzLnVp
bnRWZWN0b3JUeXBlRm9yU2l6ZShmaWVsZExlbmd0aCksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5uZXJUeXBlLCBtX2ludHJpbnNpY3MuZmxvYXRUeXBl
KCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBt
X2ludHJpbnNpY3MuZmxvYXRWZWN0b3JUeXBlRm9yU2l6ZShmaWVsZExlbmd0aCksIHR5cGVBbm5v
dGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHNldEVycm9y
KEVycm9yKCJCYXNlIHZhbHVlIG9mIGRvdCBleHByZXNzaW9uIG11c3QgYmUgYSBzdHJ1Y3R1cmUs
IGFycmF5LCBvciB2ZWN0b3IuIiwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotfQot
Ci12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJlc3Np
b24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGluZGV4SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZv
KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIGlmICghaW5kZXhJ
bmZvKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbWF0Y2hBbmRDb21taXQo
aW5kZXhJbmZvLT5yZXNvbHZpbmdUeXBlLCBtX2ludHJpbnNpY3MudWludFR5cGUoKSkpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRleCBpbiBhbiBpbmRleCBleHByZXNzaW9uIG11
c3QgYmUgYSB1aW50LiIsIGluZGV4RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXV0byBiYXNlSW5mbyA9IHJl
Y3Vyc2VBbmRHZXRJbmZvKGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgIGlmICghYmFzZUlu
Zm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gYmFzZVVubmFtZWRUeXBlID0gY29tbWl0
KGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICBpZiAoIWJhc2VVbm5hbWVkVHlwZSkgewot
ICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdGhlIHR5cGUgb2YgdGhlIGJh
c2Ugb2YgYW4gaW5kZXggZXhwcmVzc2lvbi4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9u
KCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIHR5cGUgPSBiYXNlVW5u
YW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8
QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpOwotICAgICAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoaW5kZXhFeHByZXNzaW9uLCBhcnJheVJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSwgQVNU
OjpMZWZ0VmFsdWUgeyBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgfSk7Ci0gICAg
fSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odHlwZSkpCi0gICAgICAgIGFzc2lnbkNvbmNy
ZXRlVHlwZShpbmRleEV4cHJlc3Npb24sIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS50
eXBlKCksIGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbik7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIG5hdGl2ZVR5cGUg
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSk7Ci0gICAgICAgIGF1
dG8gdHlwZUFubm90YXRpb24gPSBiYXNlSW5mby0+dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVl
KCkgPyBBU1Q6OlR5cGVBbm5vdGF0aW9uIHsgQVNUOjpSaWdodFZhbHVlKCkgfSA6IEFTVDo6VHlw
ZUFubm90YXRpb24geyBBU1Q6OkFic3RyYWN0TGVmdFZhbHVlKCkgfTsKLSAgICAgICAgaWYgKG5h
dGl2ZVR5cGUuaXNWZWN0b3IoKSkKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShpbmRl
eEV4cHJlc3Npb24sIG5hdGl2ZVR5cGUudmVjdG9yVHlwZUFyZ3VtZW50KCksIHR5cGVBbm5vdGF0
aW9uKTsKLSAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZS5pc01hdHJpeCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiBpbm5lclR5cGUgPSBuYXRpdmVUeXBlLm1hdHJpeFR5cGVBcmd1bWVudCgpOwot
ICAgICAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IG5hdGl2ZVR5cGUubnVtYmVyT2ZNYXRyaXhS
b3dzKCk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5i
b29sVHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoaW5kZXhFeHBy
ZXNzaW9uLCBtX2ludHJpbnNpY3MuYm9vbFZlY3RvclR5cGVGb3JTaXplKG51bVJvd3MpLCB0eXBl
QW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9p
bnRyaW5zaWNzLmZsb2F0VHlwZSgpKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5
cGUoaW5kZXhFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuZmxvYXRWZWN0b3JUeXBlRm9yU2l6ZShu
dW1Sb3dzKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzZXRFcnJvcihFcnJvcigiSW5kZXggZXhwcmVzc2lvbiBvbiB1bmtub3duIHR5cGUu
IiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiSW5kZXgg
ZXhwcmVzc2lvbiBvbiBhbiB1bmtub3duIGJhc2UgdHlwZS4gQmFzZSB0eXBlIG11c3QgYmUgYW4g
YXJyYXksIGFycmF5IHJlZmVyZW5jZSwgdmVjdG9yLCBvciBtYXRyaXguIiwgaW5kZXhFeHByZXNz
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQg
Q2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2Up
Ci17Ci0gICAgQVNTRVJUKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCkpOwotICAgIEFTU0VS
VCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpLT50eXBlKCkpOwotICAgIAotICAgIGFzc2ln
bkNvbmNyZXRlVHlwZSh2YXJpYWJsZVJlZmVyZW5jZSwgKnZhcmlhYmxlUmVmZXJlbmNlLnZhcmlh
YmxlKCktPnR5cGUoKSwgQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFk
IH0pOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1l
bnQpCi17Ci0gICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8g
dmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsK
LSAgICAgICAgaWYgKCF2YWx1ZUluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
ICghbWF0Y2hBbmRDb21taXQodmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlLCBtX2N1cnJlbnRGdW5j
dGlvbi0+dHlwZSgpKSkKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJUeXBlIG9mIHRoZSBy
ZXR1cm4gdmFsdWUgbXVzdCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLiIs
IHJldHVyblN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFtYXRjaGVzKG1fY3VycmVudEZ1bmN0aW9uLT50eXBlKCksIG1faW50cmlu
c2ljcy52b2lkVHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXR1cm4g
YSB2YWx1ZSBmcm9tIGEgdm9pZCBmdW5jdGlvbi4iLCByZXR1cm5TdGF0ZW1lbnQuY29kZUxvY2F0
aW9uKCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJikKLXsK
LSAgICAvLyBGb2xsb3dpbmcgcG9pbnRlciB0eXBlcyBjYW4gY2F1c2UgaW5maW5pdGUgbG9vcHMg
YmVjYXVzZSBvZiBkYXRhIHN0cnVjdHVyZXMKLSAgICAvLyBsaWtlIGxpbmtlZCBsaXN0cy4KLSAg
ICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGVtcHR5Ci19Ci0K
LXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKQotewotICAgIC8v
IEZvbGxvd2luZyBhcnJheSByZWZlcmVuY2UgdHlwZXMgY2FuIGNhdXNlIGluZmluaXRlIGxvb3Bz
IGJlY2F1c2Ugb2YgZGF0YQotICAgIC8vIHN0cnVjdHVyZXMgbGlrZSBsaW5rZWQgbGlzdHMuCi0g
ICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBlbXB0eQotfQot
Ci12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KQotewotICAgIGFzc2lnblR5cGUoaW50ZWdlckxpdGVyYWwsIGFkb3B0UmVmKCpuZXcgUmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UoaW50ZWdlckxpdGVyYWwudHlwZSgpKSkpOwotfQotCi12b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkKLXsKLSAgICBhc3NpZ25UeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIGFkb3B0
UmVmKCpuZXcgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC50
eXBlKCkpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZs
b2F0TGl0ZXJhbCkKLXsKLSAgICBhc3NpZ25UeXBlKGZsb2F0TGl0ZXJhbCwgYWRvcHRSZWYoKm5l
dyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShmbG9hdExpdGVyYWwudHlwZSgpKSkpOwotfQotCi12
b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKQot
ewotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShib29sZWFuTGl0ZXJhbCwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGJvb2xlYW5MaXRlcmFsLmNvZGVMb2NhdGlvbigpLCBtX2ludHJpbnNpY3MuYm9v
bFR5cGUoKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgQVNTRVJUKGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgYXV0byYg
ZW51bWVyYXRpb25EZWZpbml0aW9uID0gKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbkRlZmluaXRpb24oKTsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLmNvZGVMb2NhdGlvbigpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKTsKLX0KLQotYm9vbCBD
aGVja2VyOjppc0Jvb2xUeXBlKFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAg
cmV0dXJuIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6
VW5uYW1lZFR5cGU+JiBsZWZ0KSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1hdGNoZXMobGVm
dCwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KG1faW50cmluc2ljcy5ib29sVHlwZSgpLCBsZWZ0LT5y
ZXNvbHZhYmxlVHlwZSgpKSk7Ci0gICAgfSkpOwotfQotCi1ib29sIENoZWNrZXI6OnJlY3Vyc2VB
bmRSZXF1aXJlQm9vbFR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGF1
dG8gZXhwcmVzc2lvbkluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhleHByZXNzaW9uKTsKLSAgICBp
ZiAoIWV4cHJlc3Npb25JbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFpc0Jv
b2xUeXBlKGV4cHJlc3Npb25JbmZvLT5yZXNvbHZpbmdUeXBlKSkgewotICAgICAgICBzZXRFcnJv
cihFcnJvcigiRXhwZWN0ZWQgYm9vbCB0eXBlIGZyb20gZXhwcmVzc2lvbi4iLCBleHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVz
c2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24pCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWly
ZUJvb2xUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24sIEFTVDo6VHlw
ZVJlZmVyZW5jZTo6d3JhcChsb2dpY2FsTm90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgbV9p
bnRyaW5zaWNzLmJvb2xUeXBlKCkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6Okxv
Z2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKLXsKLSAgICBpZiAoIXJlY3Vyc2VB
bmRSZXF1aXJlQm9vbFR5cGUobG9naWNhbEV4cHJlc3Npb24ubGVmdCgpKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsRXhwcmVzc2lv
bi5yaWdodCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShsb2dp
Y2FsRXhwcmVzc2lvbiwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvZ2ljYWxFeHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGlmICgh
cmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkp
OwotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKQotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0
KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWly
ZUJvb2xUeXBlKHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICByZWN1cnNlQW5kUmVxdWlyZUJvb2xU
eXBlKGRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0
KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9v
cC5pbml0aWFsaXphdGlvbigpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigpKSB7Ci0gICAgICAgIGlmICghcmVjdXJzZUFu
ZFJlcXVpcmVCb29sVHlwZSgqZm9yTG9vcC5jb25kaXRpb24oKSkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChmb3JMb29wLmluY3JlbWVudCgpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKmZvckxvb3AuaW5jcmVtZW50KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChmb3JMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hT
dGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkKLXsKLSAgICBhdXRvKiB2YWx1ZVR5cGUgPSAoWyZd
KCkgLT4gQVNUOjpOYW1lZFR5cGUqIHsKLSAgICAgICAgYXV0byB2YWx1ZUluZm8gPSByZWN1cnNl
QW5kR2V0SW5mbyhzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIGlmICghdmFsdWVJ
bmZvKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIHZhbHVlVHlw
ZSA9IGdldFVubmFtZWRUeXBlKHZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgICAgIGlm
ICghdmFsdWVUeXBlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8m
IHZhbHVlVW5pZnlOb2RlID0gdmFsdWVUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKCFp
czxBU1Q6Ok5hbWVkVHlwZT4odmFsdWVVbmlmeU5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIGF1dG8mIHZhbHVlTmFtZWRVbmlmeU5vZGUgPSBkb3duY2FzdDxBU1Q6
Ok5hbWVkVHlwZT4odmFsdWVVbmlmeU5vZGUpOwotICAgICAgICBpZiAoIShpczxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4odmFsdWVOYW1lZFVuaWZ5Tm9kZSkgJiYgZG93bmNhc3Q8QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24+KHZhbHVlTmFtZWRVbmlmeU5vZGUpLmlzSW50KCkpCi0gICAg
ICAgICAgICAmJiAhaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHZhbHVlTmFtZWRVbmlm
eU5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAmdmFs
dWVOYW1lZFVuaWZ5Tm9kZTsKLSAgICB9KSgpOwotICAgIGlmICghdmFsdWVUeXBlKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIHR5cGUgZm9yIHRoZSBleHByZXNzaW9uIGNvbmRp
dGlvbiBvZiB0aGUgc3dpdGNoIHN0YXRlbWVudC4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgaGFzRGVmYXVsdCA9
IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0
Y2hDYXNlcygpKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2Nr
KCkpOwotICAgICAgICBpZiAoIXN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICAgICAgaGFz
RGVmYXVsdCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVU
eXBlLCBpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlw
ZSwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6
RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIGZsb2F0TGl0ZXJh
bC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSAtPiBib29s
IHsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsIG1faW50cmluc2ljcy5i
b29sVHlwZSgpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
JiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgQVNTRVJU
KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gbWF0Y2hlcygqdmFsdWVUeXBlLCAqZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAgICAgfSkpOwotICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIHR5cGUgZm9y
IHN3aXRjaCBjYXNlLiIsIHN3aXRjaENhc2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgZmlyc3RDYXNlID0gc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKClbaV07Ci0gICAgICAg
IGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygp
LnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBhdXRvJiBzZWNvbmRDYXNlID0gc3dpdGNoU3Rh
dGVtZW50LnN3aXRjaENhc2VzKClbal07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxib29sPihmaXJzdENhc2UudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4o
c2Vjb25kQ2FzZS52YWx1ZSgpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihmaXJzdENhc2UudmFsdWUoKSkpIHsKLSAgICAg
ICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBkZWZhdWx0
IGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1lbnQuIiwgc2Vjb25kQ2FzZS5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
YXV0byBzdWNjZXNzID0gZmlyc3RDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGZpcnN0SW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgewot
ICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZEludGVnZXJMaXRlcmFsKSAt
PiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0SW50ZWdlckxpdGVyYWwu
dmFsdWUoKSAhPSBzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAgICAgICAgICAgICAg
IH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZmlyc3RJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxp
bnQ2NF90PihzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCYgZmlyc3RVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJh
bCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2
NF90PihmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAg
fSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSAhPSBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFs
LnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAg
ICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGZpcnN0RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vjb25k
Q2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCYgc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSAtPiBib29sIHsK
LSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2Vjb25k
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmlyc3RFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25NZW1iZXIoKSAhPSBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25N
ZW1iZXIoKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAg
ICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVmaW5lIGR1cGxpY2F0ZSBjYXNlIHN0YXRl
bWVudHMgaW4gYSBzd2l0Y2guIiwgc2Vjb25kQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmICghaGFzRGVmYXVsdCkgewotICAgICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KCp2YWx1ZVR5cGUpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PGludDY0X3Q+IHZhbHVl
czsKLSAgICAgICAgICAgIGJvb2wgemVyb1ZhbHVlRXhpc3RzOwotICAgICAgICAgICAgZm9yIChh
dXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHZhbHVlID0gc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gaW50
NjRfdCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC52YWx1ZUZv
clNlbGVjdGVkVHlwZSgpOwotICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZUZvclNlbGVj
dGVkVHlwZSgpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBpbnQ2NF90IHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlKQotICAgICAgICAgICAgICAgICAgICB6ZXJvVmFsdWVFeGlzdHMgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFkZCh2YWx1ZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAg
ICAgICAgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp2YWx1ZVR5cGUpLml0
ZXJhdGVBbGxWYWx1ZXMoWyZdKGludDY0X3QgdmFsdWUpIC0+IGJvb2wgewotICAgICAgICAgICAg
ICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF6ZXJvVmFsdWVFeGlz
dHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKCF2YWx1ZXMuY29udGFpbnModmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIlN3aXRjaCBjYXNlcyBtdXN0IGJlIGV4aGF1c3RpdmUgb3IgeW91IG11c3Qg
ZGVmaW5lIGEgZGVmYXVsdCBjYXNlLiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEhhc2hTZXQ8QVNUOjpFbnVtZXJhdGlvbk1lbWJlcio+IHZhbHVlczsK
LSAgICAgICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0
Y2hDYXNlcygpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlcy5hZGQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVy
KCkpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBkb3duY2FzdDxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oKnZhbHVlVHlwZSkuZW51bWVyYXRpb25NZW1iZXJz
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlcy5jb250YWlucygmZW51bWVyYXRpb25N
ZW1iZXIuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJTd2l0
Y2ggY2FzZXMgb3ZlciBhbiBlbnVtIG11c3QgYmUgZXhoYXVzdGl2ZSBvciB5b3UgbXVzdCBkZWZp
bmUgYSBkZWZhdWx0IGNhc2UuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpDb21t
YUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lvbikKLXsKLSAgICBBU1NFUlQoY29tbWFFeHByZXNz
aW9uLmxpc3QoKS5zaXplKCkgPiAwKTsKLSAgICBWaXNpdG9yOjp2aXNpdChjb21tYUV4cHJlc3Np
b24pOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBsYXN0
SW5mbyA9IGdldEluZm8oY29tbWFFeHByZXNzaW9uLmxpc3QoKS5sYXN0KCkpOwotICAgIGZvcndh
cmRUeXBlKGNvbW1hRXhwcmVzc2lvbiwgbGFzdEluZm8tPnJlc29sdmluZ1R5cGUpOwotfQotCi12
b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNz
aW9uKQotewotICAgIGF1dG8gcHJlZGljYXRlSW5mbyA9IHJlY3Vyc2VBbmRSZXF1aXJlQm9vbFR5
cGUodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOwotICAgIGlmICghcHJlZGljYXRlSW5m
bykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBib2R5SW5mbyA9IHJlY3Vyc2VBbmRHZXRJ
bmZvKHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIGF1dG8gZWxzZUlu
Zm8gPSByZWN1cnNlQW5kR2V0SW5mbyh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigp
KTsKLSAgICAKLSAgICBhdXRvIHJlc3VsdFR5cGUgPSBtYXRjaEFuZENvbW1pdChib2R5SW5mby0+
cmVzb2x2aW5nVHlwZSwgZWxzZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghcmVzdWx0
VHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigibGhzIGFuZCByaHMgb2YgYSB0ZXJuYXJ5
IGV4cHJlc3Npb24gbXVzdCBtYXRjaC4iLCB0ZXJuYXJ5RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKHRl
cm5hcnlFeHByZXNzaW9uLCAqcmVzdWx0VHlwZSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQo
QVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0gICAgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+IHR5cGVzOwotICAgIHR5cGVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkuc2l6ZSgpKTsKLSAg
ICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpIHsKLSAg
ICAgICAgYXV0byBhcmd1bWVudEluZm8gPSByZWN1cnNlQW5kR2V0SW5mbyhhcmd1bWVudCk7Ci0g
ICAgICAgIGlmICghYXJndW1lbnRJbmZvKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0
eXBlcy51bmNoZWNrZWRBcHBlbmQoYXJndW1lbnRJbmZvLT5yZXNvbHZpbmdUeXBlKTsKLSAgICB9
Ci0gICAgLy8gRG9uJ3QgcmVjdXJzZSBvbiB0aGUgY2FzdFJldHVyblR5cGUsIGJlY2F1c2UgaXQn
cyBndWFyYW50ZWVkIHRvIGJlIGEgTmFtZWRUeXBlLCB3aGljaCB3aWxsIGdldCB2aXNpdGVkIGxh
dGVyLgotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVjdXJzZSB0byB0aGUgc2FtZSBub2RlIHR3
aWNlLgotCi0gICAgYXV0byogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24odHlwZXMsIGNhbGxF
eHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpOwotICAgIGlm
IChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0g
ICAgICAgIE5hbWVDb250ZXh0JiBuYW1lQ29udGV4dCA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4dCgp
OwotICAgICAgICBhdXRvIGNhc3RUeXBlcyA9IG5hbWVDb250ZXh0LmdldFR5cGVzKGNhbGxFeHBy
ZXNzaW9uLm5hbWUoKSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICAgICAgaWYgKGNhc3RUeXBl
cy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgQVNUOjpOYW1lZFR5cGUmIGNhc3RUeXBlID0g
Y2FzdFR5cGVzWzBdLmdldCgpOwotICAgICAgICAgICAgZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rp
b24odHlwZXMsICJvcGVyYXRvciBjYXN0Il9zdHIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlv
bigpLCAmY2FzdFR5cGUpOwotICAgICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKQotICAgICAgICAgICAgICAg
IGNhbGxFeHByZXNzaW9uLnNldENhc3REYXRhKGNhc3RUeXBlKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBiZXR0ZXIgZXJy
b3IgbWVzc2FnZXMgZm9yIHdoeSB3ZSBjYW4ndCByZXNvbHZlIHRvIG9uZSBvZiB0aGUgb3ZlcnJp
ZGVzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwMTMzCi0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBj
YWxsIHRvIGEgY29uY3JldGUgY2FsbGVlLiBNYWtlIHN1cmUgeW91IGFyZSB1c2luZyBjb21wYXRp
YmxlIHR5cGVzLiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdCh0eXBl
c1tpXS5nZXQoKSwgKmZ1bmN0aW9uLT5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSkpIHsKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKG1ha2VTdHJpbmcoIkludmFsaWQgdHlwZSBmb3IgcGFyYW1l
dGVyIG51bWJlciAiLCBpICsgMSwgIiBpbiBmdW5jdGlvbiBjYWxsLiIpLCBjYWxsRXhwcmVzc2lv
bi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgY2FsbEV4cHJlc3Npb24uc2V0RnVuY3Rpb24oKmZ1bmN0aW9uKTsKLQotICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShjYWxsRXhwcmVzc2lvbiwgZnVuY3Rpb24tPnR5cGUoKSk7Ci19Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVjayhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIENo
ZWNrZXIgY2hlY2tlcihwcm9ncmFtLmludHJpbnNpY3MoKSwgcHJvZ3JhbSk7Ci0gICAgY2hlY2tl
ci5jaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0gICAgaWYgKGNoZWNrZXIuaGFzRXJyb3Io
KSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZXIucmVzdWx0KCk7Ci0gICAgcmV0dXJuIGNoZWNrZXIu
YXNzaWduVHlwZXMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2NGUzZTE3YThjMGEyYjczMDVmNTgyNDBjZTFmNTIx
Nzc0ZTY5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2so
UHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29k
ZUxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENv
ZGVMb2NhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWZmZmQ4ZDg3YTk1
NDIwOWVmNzI5ZTJjNzI1M2VkMTkxNWU0ZWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ29kZUxvY2F0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1zdHJ1Y3QgVG9rZW47Ci0KLWNsYXNzIENvZGVMb2NhdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgQ29kZUxvY2F0aW9uKCkKLSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KDB4N0ZGRkZG
RkYpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoMHg3RkZGRkZGRikKLSAgICAgICAgLCBtX25hbWVT
cGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFy
eSkpCi0gICAgewotICAgIH0KLQotICAgIENvZGVMb2NhdGlvbih1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi0gICAgICAg
IDogbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRP
ZmZzZXQpCi0gICAgICAgICwgbV9uYW1lU3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbWVT
cGFjZSkpCi0gICAgewotICAgIH0KLQotICAgIENvZGVMb2NhdGlvbihjb25zdCBUb2tlbiYpOwot
Ci0gICAgQ29kZUxvY2F0aW9uKGNvbnN0IENvZGVMb2NhdGlvbiYgbG9jYXRpb24xLCBjb25zdCBD
b2RlTG9jYXRpb24mIGxvY2F0aW9uMikKLSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KGxvY2F0aW9u
MS5zdGFydE9mZnNldCgpKQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGxvY2F0aW9uMi5lbmRPZmZz
ZXQoKSkKLSAgICAgICAgLCBtX25hbWVTcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9jYXRp
b24xLm5hbWVTcGFjZSgpKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChsb2NhdGlvbjEubmFtZVNw
YWNlKCkgPT0gbG9jYXRpb24yLm5hbWVTcGFjZSgpKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFydE9mZnNldDsK
LSAgICB9Ci0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fZW5kT2Zmc2V0OwotICAgIH0KLQotICAgIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFj
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVNUOjpOYW1lU3Bh
Y2U+KG1fbmFtZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29k
ZUxvY2F0aW9uJiBvdGhlcikgY29uc3QgCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFydE9m
ZnNldCA9PSBvdGhlci5tX3N0YXJ0T2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX2VuZE9mZnNldCA9
PSBvdGhlci5tX2VuZE9mZnNldAotICAgICAgICAgICAgJiYgbV9uYW1lU3BhY2UgPT0gb3RoZXIu
bV9uYW1lU3BhY2U7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVMb2Nh
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gQ29kZUxvY2F0
aW9uKCk7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IDogMzE7Ci0g
ICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgOiAzMTsKLSAgICB1bnNpZ25lZCBtX25hbWVTcGFjZSA6
IDI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lv
bnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzI5OGQ0OWM4ODZhMTY2NWNi
OTgwOWI1ZWJlMzJlM2UwMGZiMWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29t
cHV0ZURpbWVuc2lvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENvbXB1dGVEaW1lbnNp
b25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGQ6Om9wdGlvbmFsPENvbXB1dGVE
aW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYgZW50cnlQb2ludCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVE
aW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKLQotICAgIGZvciAoYXV0byYgZnVuY3Rpb25E
ZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYm9v
bCBmb3VuZE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRlIDogZnVuY3Rpb25EZWZpbml0aW9uLT5hdHRyaWJ1dGVC
bG9jaygpKSB7Ci0gICAgICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBXVEY6OnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiBudW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZm91bmROdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBmb3VuZE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gJmVudHJ5UG9pbnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjb21wdXRlRGltZW5zaW9ucyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0ge3sgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlLndpZHRoKCksIG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oZWlnaHQoKSwgbnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmRlcHRoKCkgfX07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSksIGZ1bmN0aW9uQXR0
cmlidXRlKTsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIC8v
IENhbm5vdCBkZWNsYXJlIG11bHRpcGxlIG51bXRocmVhZCBhdHRyaWJ1dGVzIG9uIGEgc2luZ2xl
IGZ1bmN0aW9uLgotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJkZGYwYTgzYWE2NDI3ZTNiMzU3OWRhYzU1
Mjk5ODdiM2U1MzdkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1l
bnNpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TFByZXBhcmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotCi19Ci0KLWNs
YXNzIFByb2dyYW07Ci0KLXN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVE
aW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWI3ODZkZmFmZWM5ODMxMGYzMTE1MWI1OGFhZWRlYmQwY2E3ZDQ5Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGVOdW1iZXJzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRXJyb3IgewotcHVi
bGljOgotICAgIEVycm9yKFN0cmluZyYmIG1lc3NhZ2UsIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRp
b24pCi0gICAgICAgIDogbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCi0gICAgICAgICwgbV9s
b2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIEVycm9yKFN0cmluZyYm
IG1lc3NhZ2UpCi0gICAgICAgIDogbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCi0gICAgewot
ICAgIH0KLQotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2xvY2F0aW9uOyB9Ci0gICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2U7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9tZXNzYWdlOwotICAgIENvZGVMb2NhdGlv
biBtX2xvY2F0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYz
ZGU4ZGM4ZTBiYmE0NTk3OWE0YjgxMDkxNzEyYjEzMWFmNGFiNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRW50
cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJX
SExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBGdW5jdGlvblN0YWdlQ2hlY2tl
ciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBGdW5jdGlvblN0YWdlQ2hlY2tlcihB
U1Q6OkVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRy
aW5zaWNzKQotICAgICAgICA6IG1fZW50cnlQb2ludFR5cGUoZW50cnlQb2ludFR5cGUpCi0gICAg
ICAgICwgbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgewotICAgIH0KLQotcHVibGljOgot
ICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBpZiAoKCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1f
aW50cmluc2ljcy5kZHgoKSB8fCAmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJp
bnNpY3MuZGR5KCkpICYmIG1fZW50cnlQb2ludFR5cGUgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6
RnJhZ21lbnQpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdXNlIGRkeCBv
ciBkZHkgaW4gYSBub24tZnJhZ21lbnQgc2hhZGVyLiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCgm
Y2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9PSBtX2ludHJpbnNpY3MuYWxsTWVtb3J5QmFycmll
cigpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5kZXZpY2VN
ZW1vcnlCYXJyaWVyKCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5z
aWNzLmdyb3VwTWVtb3J5QmFycmllcigpKQotICAgICAgICAgICAgJiYgbV9lbnRyeVBvaW50VHlw
ZSAhPSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlKSB7Ci0gICAgICAgICAgICBzZXRFcnJv
cihFcnJvcigiQ2Fubm90IHVzZSBtZW1vcnkgYmFycmllciBpbiBhIG5vbi1jb21wdXRlIHNoYWRl
ci4iLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0
aW9uKCkpOwotICAgIH0KLQotICAgIEFTVDo6RW50cnlQb2ludFR5cGUgbV9lbnRyeVBvaW50VHlw
ZTsKLSAgICBjb25zdCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci19OwotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gY2hlY2tGdW5jdGlvblN0YWdlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAg
IGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRp
b25zKCkpIHsKLSAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBl
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgRnVuY3Rpb25TdGFnZUNoZWNrZXIg
ZnVuY3Rpb25TdGFnZUNoZWNrZXIoKmZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUo
KSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwotICAgICAgICBmdW5jdGlvblN0YWdlQ2hlY2tlci5W
aXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoZnVuY3Rpb25T
dGFnZUNoZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChmdW5jdGlvblN0YWdlQ2hlY2tlci5yZXN1bHQoKS5lcnJvcigpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHsgfTsKLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkxMzNmZDkyZmRkYjE3ZDU0YzgyM2Q5OGJiYWUzMmU1MTUxNGUzNWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0Z1bmN0aW9u
U3RhZ2VzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkwNWU4OGE2MDFjODIxMWE3OTVmMGMxNmU4Mzk2ZjAyNjg3MjYwNjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgotI2luY2x1ZGUg
IldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZp
bml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgR2F0aGVyZXIg
OiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgR2F0aGVyZXIoY29uc3QgSW50cmluc2lj
cyYgaW50cmluc2ljcywgQVNUOjpTZW1hbnRpYyogc2VtYW50aWMgPSBudWxscHRyKQotICAgICAg
ICA6IG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQotICAgICAgICAsIG1fY3VycmVudFNlbWFudGlj
KHNlbWFudGljKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5HYXRoZXJlcigpID0gZGVm
YXVsdDsKLQotICAgIHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50U2VtYW50
aWMgPSBudWxscHRyOwotICAgICAgICBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uID0geyB9Owot
ICAgIH0KLQotICAgIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4gdGFrZUVudHJ5UG9pbnRJdGVtcygp
Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX2VudHJ5UG9pbnRJdGVtcyk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpCi0gICAgewot
ICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJy
ZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1fZW50cnlQb2ludEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShtX3R5cGVSZWZl
cmVuY2VzLmxhc3QoKS5nZXQoKSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVudFNlbWFudGljKSB7Ci0g
ICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50aWMgZm9yIGVudHJ5cG9p
bnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtYXRjaGVzKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiwgbV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiVW5leHBlY3RlZCB2b2lkIHR5cGUgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9j
dXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVtKG1fdHlw
ZVJlZmVyZW5jZXMubGFzdCgpLmdldCgpLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1
cmVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKG1fY3VycmVudFNlbWFudGljKSB7Ci0g
ICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCBzZW1hbnRpYyBmb3Igc3RydWN0
IGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1
cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKSB7Ci0g
ICAgICAgICAgICBpZiAoc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKQotICAgICAgICAgICAg
ICAgIG1fY3VycmVudFNlbWFudGljID0gc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpOwotICAg
ICAgICAgICAgbV9wYXRoLmFwcGVuZChzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSk7Ci0gICAgICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBt
X3BhdGgudGFrZUxhc3QoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNU
OjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24udHlwZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgICAgIG1f
dHlwZVJlZmVyZW5jZXMuYXBwZW5kKHR5cGVSZWZlcmVuY2UpOwotICAgICAgICBhdXRvIGRlcHRo
ID0gbV90eXBlUmVmZXJlbmNlcy5zaXplKCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0
eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChkZXB0
aCwgbV90eXBlUmVmZXJlbmNlcy5zaXplKCkgPT0gZGVwdGgpOwotICAgICAgICBtX3R5cGVSZWZl
cmVuY2VzLnJlbW92ZUxhc3QoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRl
clR5cGUmIHBvaW50ZXJUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRp
YykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBl
bnRyeXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBl
bmQoRW50cnlQb2ludEl0ZW0ocG9pbnRlclR5cGUsICptX2N1cnJlbnRTZW1hbnRpYywgbV9wYXRo
KSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJy
YXlSZWZlcmVuY2VUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykg
ewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRy
eXBvaW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQo
RW50cnlQb2ludEl0ZW0oYXJyYXlSZWZlcmVuY2VUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1f
cGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlw
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVu
dC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVt
KGFycmF5VHlwZSwgKm1fY3VycmVudFNlbWFudGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9jdXJyZW50U2VtYW50aWMpOwotICAgICAgICBtX2N1
cnJlbnRWYXJpYWJsZUxvY2F0aW9uID0gdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24o
KTsKLSAgICAgICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAg
ICAgIG1fY3VycmVudFNlbWFudGljID0gdmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpOwot
ICAgICAgICBBU1NFUlQodmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBtX3Bh
dGguYXBwZW5kKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKTsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fcGF0aC50
YWtlTGFzdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3BhdGg7
Ci0gICAgY29uc3QgSW50cmluc2ljcyYgbV9pbnRyaW5zaWNzOwotICAgIEFTVDo6U2VtYW50aWMq
IG1fY3VycmVudFNlbWFudGljIHsgbnVsbHB0ciB9OwotICAgIENvZGVMb2NhdGlvbiBtX2N1cnJl
bnRWYXJpYWJsZUxvY2F0aW9uOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFT
VDo6VHlwZVJlZmVyZW5jZT4+IG1fdHlwZVJlZmVyZW5jZXM7Ci0gICAgVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiBtX2VudHJ5UG9pbnRJdGVtczsKLX07Ci0KLUV4cGVjdGVkPEVudHJ5UG9pbnRJdGVt
cywgRXJyb3I+IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAg
IEFTU0VSVChmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSk7Ci0gICAgR2F0aGVy
ZXIgaW5wdXRHYXRoZXJlcihpbnRyaW5zaWNzKTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6
IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkpIHsKLSAgICAgICAgaW5wdXRHYXRoZXJl
ci5yZXNldCgpOwotICAgICAgICBpbnB1dEdhdGhlcmVyLmNoZWNrRXJyb3JBbmRWaXNpdChwYXJh
bWV0ZXIpOwotICAgICAgICBpZiAoaW5wdXRHYXRoZXJlci5oYXNFcnJvcigpKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlucHV0R2F0aGVyZXIucmVzdWx0KCkuZXJyb3IoKSk7
Ci0gICAgfQotICAgIEdhdGhlcmVyIG91dHB1dEdhdGhlcmVyKGludHJpbnNpY3MsIGZ1bmN0aW9u
RGVmaW5pdGlvbi5zZW1hbnRpYygpKTsKLSAgICBpZiAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRy
eVBvaW50VHlwZSgpICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUpCi0gICAgICAgIG91
dHB1dEdhdGhlcmVyLmNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24udHlwZSgp
KTsKLSAgICBpZiAob3V0cHV0R2F0aGVyZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG91dHB1dEdhdGhlcmVyLnJlc3VsdCgpLmVycm9yKCkpOwotCi0gICAgcmV0
dXJuIHt7IGlucHV0R2F0aGVyZXIudGFrZUVudHJ5UG9pbnRJdGVtcygpLCBvdXRwdXRHYXRoZXJl
ci50YWtlRW50cnlQb2ludEl0ZW1zKCkgfX07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
R2F0aGVyRW50cnlQb2ludEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YjRiOGQ5Y2U0YzdjMzQ3MTk1MjQ0MWQyYjkzOGFhNGZmMjcyNzczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwot
Ci19Ci0KLWNsYXNzIEludHJpbnNpY3M7Ci1jbGFzcyBVbm5hbWVkVHlwZTsKLQotc3RydWN0IEVu
dHJ5UG9pbnRJdGVtIHsKLSAgICBFbnRyeVBvaW50SXRlbShBU1Q6OlVubmFtZWRUeXBlJiB1bm5h
bWVkVHlwZSwgQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKQot
ICAgICAgICA6IHVubmFtZWRUeXBlKCZ1bm5hbWVkVHlwZSkKLSAgICAgICAgLCBzZW1hbnRpYygm
c2VtYW50aWMpCi0gICAgICAgICwgcGF0aChwYXRoKQotICAgIHsKLSAgICB9Ci0KLSAgICBBU1Q6
OlVubmFtZWRUeXBlKiB1bm5hbWVkVHlwZTsKLSAgICBBU1Q6OlNlbWFudGljKiBzZW1hbnRpYzsK
LSAgICBWZWN0b3I8U3RyaW5nPiBwYXRoOwotfTsKLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtcyB7
Ci0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiBpbnB1dHM7Ci0gICAgVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiBvdXRwdXRzOwotfTsKLQotRXhwZWN0ZWQ8RW50cnlQb2ludEl0ZW1zLCBFcnJvcj4g
Z2F0aGVyRW50cnlQb2ludEl0ZW1zKGNvbnN0IEludHJpbnNpY3MmLCBBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbiYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRmNzAxMTgzZDUyMmQ1YzFm
ZDUwNWM2NDgxOGRlNzExODFkNmQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhp
Z2hab21iaWVGaW5kZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEhpZ2hab21iaWVGaW5k
ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNU
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSGlnaFpvbWJpZUZpbmRlciA6IHB1YmxpYyBWaXNp
dG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiYgcmVhZE1vZGlmeVdyaXRlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsK
LQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpLm1h
eUJlRWZmZWN0ZnVsKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNz
aW9uJiBkb3RFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWRvdEV4cHJlc3Npb24uYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCkpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbmRleEV4cHJlc3Npb24uYmFzZSgp
Lm1heUJlRWZmZWN0ZnVsKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW5kZXhFeHByZXNz
aW9uLmluZGV4RXhwcmVzc2lvbigpLm1heUJlRWZmZWN0ZnVsKCkpOwotICAgIH0KLX07Ci0KLXZv
aWQgZmluZEhpZ2hab21iaWVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHByb2dyYW0pOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBIaWdoWm9tYmllRmluZGVyIGZp
bmRlcjsKLSAgICBmaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZp
bmRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTAzYjIxYjEwMGQwMTdmMzFm
MWEwM2NjOGQwNTAxOTQ0MTJjYWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGln
aFpvbWJpZUZpbmRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZv
aWQgZmluZEhpZ2hab21iaWVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGRmMzhlNmQ1NDU1Y2ZmNWQ4NjdkNGRjZTE3OTI2ZGY2ZjdhODNmMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MjI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xJbmZlclR5cGVzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNs
dWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
b2ludGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIGJvb2wgbWF0Y2hlcyhjb25zdCBB
U1Q6OlR5cGUmIHVuaWZ5VGhpcywgY29uc3QgQVNUOjpUeXBlJiB1bmlmeU90aGVyKQotewotICAg
IGlmICgmdW5pZnlUaGlzID09ICZ1bmlmeU90aGVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlUaGlzKSAmJiBpczxBU1Q6Ok5hbWVkVHlw
ZT4odW5pZnlPdGhlcikpIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBhdXRvJiBuYW1l
ZFRoaXMgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlUaGlzKTsKLSAgICAgICAgYXV0
byYgbmFtZWRPdGhlciA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU90aGVyKTsKLSAg
ICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFRoaXMpICYmICFpczxB
U1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZE90aGVyKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBpZiAoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlUaGlzKSAm
JiBpczxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU90aGVyKSkgewotICAgICAgICBhdXRvJiB1bm5h
bWVkVGhpcyA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5VGhpcyk7Ci0gICAgICAg
IGF1dG8mIHVubmFtZWRPdGhlciA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5T3Ro
ZXIpOwotICAgICAgICBBU1NFUlQoIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFRoaXMp
ICYmICFpczxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRPdGhlcikpOwotICAgICAgICByZXR1
cm4gdW5uYW1lZFRoaXMgPT0gdW5uYW1lZE90aGVyOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwg
Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSYgb3RoZXIpCi17Ci0gICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUudW5pZnlOb2RlKCksIG90aGVyLnVuaWZ5Tm9kZSgpKTsKLX0KLQotYm9vbCBtYXRj
aGVzKGNvbnN0IEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUsIGNvbnN0IEFTVDo6TmFtZWRUeXBl
JiBvdGhlcikKLXsKLSAgICByZXR1cm4gbWF0Y2hlcyhuYW1lZFR5cGUudW5pZnlOb2RlKCksIG90
aGVyLnVuaWZ5Tm9kZSgpKTsKLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYgb3RoZXIpCi17Ci0gICAgcmV0
dXJuIG1hdGNoZXModW5uYW1lZFR5cGUudW5pZnlOb2RlKCksIG90aGVyLnVuaWZ5Tm9kZSgpKTsK
LX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6
OlR5cGUmIHVuaWZ5Tm9kZSwgQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17
Ci0gICAgQVNTRVJUKCFyZXNvbHZhYmxlVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBp
ZiAoIXJlc29sdmFibGVUeXBlLmNhblJlc29sdmUodW5pZnlOb2RlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAg
ICAgIGF1dG8mIG5hbWVkVW5pZnlOb2RlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKG5h
bWVkVW5pZnlOb2RlLmNvZGVMb2NhdGlvbigpLCBuYW1lZFVuaWZ5Tm9kZSk7Ci0gICAgICAgIHJl
c29sdmFibGVUeXBlLnJlc29sdmUocmVzdWx0LmNvcHlSZWYoKSk7Ci0gICAgICAgIHJldHVybiB7
IFdURk1vdmUocmVzdWx0KSB9OwotICAgIH0KLQotICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBy
ZXN1bHQgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgIHJlc29s
dmFibGVUeXBlLnJlc29sdmUocmVzdWx0LmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6VW5uYW1l
ZFR5cGUmIHVubmFtZWRUeXBlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkK
LXsKLSAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQodW5uYW1lZFR5cGUudW5pZnlOb2RlKCksIHJl
c29sdmFibGVUeXBlKTsKLX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29t
bWl0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29s
dmFibGVUeXBlKQotewotICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChuYW1lZFR5cGUudW5pZnlO
b2RlKCksIHJlc29sdmFibGVUeXBlKTsKLX0KLQotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1h
dGNoQW5kQ29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlMSwgQVNUOjpS
ZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUyKQotewotICAgIEFTU0VSVCghcmVzb2x2YWJs
ZVR5cGUxLm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5cGUy
Lm1heWJlUmVzb2x2ZWRUeXBlKCkpOwotICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+
KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxl
VHlwZTIpKSB7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6
RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCkpOwotICAg
ICAgICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlMikucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZk
b3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVk
VHlwZSgpOwotICAgIH0KLSAgICBpZiAoaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29s
dmFibGVUeXBlMSkgJiYgaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBl
MikpIHsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpJbnRl
Z2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkucHJlZmVycmVkVHlwZSgpKTsKLSAgICAg
ICAgcmVzb2x2YWJsZVR5cGUyLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlMikucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZk
b3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJy
ZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlPihyZXNvbHZhYmxlVHlwZTEpICYmIGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlMikpIHsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUo
ZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUx
KS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3du
Y2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTIpLnBy
ZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gY29t
bWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAgIEFTU0VSVCgh
cmVzb2x2YWJsZVR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6Rmxv
YXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIGZsb2F0TGl0
ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBl
KTsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShmbG9hdExpdGVyYWxUeXBlLnByZWZl
cnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRU
eXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2
YWJsZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIGludGVnZXJMaXRlcmFsVHlwZSA9IGRvd25jYXN0
PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7Ci0gICAgICAgIHJlc29s
dmFibGVUeXBlLnJlc29sdmUoaW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci0g
ICAgICAgIHJldHVybiAmaW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9
Ci0gICAgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVU
eXBlKSkgewotICAgICAgICBhdXRvJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSA9IGRvd25j
YXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAg
ICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5w
cmVmZXJyZWRUeXBlKCkpOwotICAgICAgICByZXR1cm4gJnVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJv
b2wgaW5mZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMoQVNUOjpOYW1lZFR5cGUmIHBvc3NpYmxlVHlw
ZSwgQVNUOjpUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQotewotICAgIGlmIChpczxBU1Q6
OlR5cGVEZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpCi0gICAgICAgIHx8IGlzPEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4ocG9zc2libGVUeXBlKQotICAgICAgICB8fCBpczxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4ocG9zc2libGVUeXBlKSkgewotICAgICAgICByZXR1cm4gdHlwZUFyZ3Vt
ZW50cy5pc0VtcHR5KCk7Ci0gICAgfQotCi0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
ID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHBvc3NpYmxlVHlwZSk7Ci0g
ICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpICE9IHR5
cGVBcmd1bWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uKiB0eXBlQXJndW1lbnRF
eHByZXNzaW9uID0gbnVsbHB0cjsKLSAgICAgICAgQVNUOjpUeXBlUmVmZXJlbmNlKiB0eXBlQXJn
dW1lbnRUeXBlUmVmZXJlbmNlID0gbnVsbHB0cjsKLSAgICAgICAgQVNUOjpDb25zdGFudEV4cHJl
c3Npb24qIG5hdGl2ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24gPSBudWxscHRyOwotICAgICAgICBB
U1Q6OlR5cGVSZWZlcmVuY2UqIG5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UgPSBudWxs
cHRyOwotCi0gICAgICAgIGF1dG8gYXNzaWduID0gWyZdKEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBl
QXJndW1lbnQsIEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uKiYgZXhwcmVzc2lvbiwgQVNUOjpUeXBl
UmVmZXJlbmNlKiYgdHlwZVJlZmVyZW5jZSkgewotICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNz
aW9uKSB7Ci0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9ICZjb25zdGFudEV4cHJlc3Npb247
Ci0gICAgICAgICAgICB9LCBbJl0oUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4mIHRoZVR5cGVSZWZl
cmVuY2UpIHsKLSAgICAgICAgICAgICAgICB0eXBlUmVmZXJlbmNlID0gdGhlVHlwZVJlZmVyZW5j
ZS5wdHIoKTsKLSAgICAgICAgICAgIH0pLCB0eXBlQXJndW1lbnQpOwotICAgICAgICB9OwotCi0g
ICAgICAgIGFzc2lnbih0eXBlQXJndW1lbnRzW2ldLCB0eXBlQXJndW1lbnRFeHByZXNzaW9uLCB0
eXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlKTsKLSAgICAgICAgYXNzaWduKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi50eXBlQXJndW1lbnRzKClbaV0sIG5hdGl2ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24s
IG5hdGl2ZVR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpOwotCi0gICAgICAgIGlmICh0eXBlQXJn
dW1lbnRFeHByZXNzaW9uICYmIG5hdGl2ZVR5cGVBcmd1bWVudEV4cHJlc3Npb24pIHsKLSAgICAg
ICAgICAgIGlmICghdHlwZUFyZ3VtZW50RXhwcmVzc2lvbi0+bWF0Y2hlcygqbmF0aXZlVHlwZUFy
Z3VtZW50RXhwcmVzc2lvbikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9IGVsc2UgaWYgKHR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UgJiYgbmF0aXZlVHlwZUFyZ3Vt
ZW50VHlwZVJlZmVyZW5jZSkgewotICAgICAgICAgICAgaWYgKCFtYXRjaGVzKCp0eXBlQXJndW1l
bnRUeXBlUmVmZXJlbmNlLCAqbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlS2luZD4KLUFMV0FZU19JTkxJTkUg
Ym9vbCBpbmZlclR5cGVzRm9yQ2FsbEltcGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3Nz
aWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IFR5cGVLaW5kKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAg
ICBpZiAocG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpICE9IGFyZ3VtZW50VHlw
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAg
ICBhdXRvIHN1Y2Nlc3MgPSBhcmd1bWVudFR5cGVzW2ldLmdldCgpLnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygp
W2ldLT50eXBlKCksIHVubmFtZWRUeXBlKTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIHJldHVybiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUo
KS5jYW5SZXNvbHZlKHBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCktPnVu
aWZ5Tm9kZSgpKTsKLSAgICAgICAgfSkpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChjYXN0UmV0dXJuVHlwZSAmJiAhbWF0
Y2hlcyhwb3NzaWJsZUZ1bmN0aW9uLnR5cGUoKSwgKmNhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGluZmVyVHlwZXNGb3JD
YWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25z
dCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgcmV0dXJuIGluZmVyVHlw
ZXNGb3JDYWxsSW1wbChwb3NzaWJsZUZ1bmN0aW9uLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJu
VHlwZSk7Ci19Ci0KLWJvb2wgaW5mZXJUeXBlc0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNv
bHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RS
ZXR1cm5UeXBlKQotewotICAgIHJldHVybiBpbmZlclR5cGVzRm9yQ2FsbEltcGwocG9zc2libGVG
dW5jdGlvbiwgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEluZmVyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MzIyZjM3ZGMwZDg2Yzg3NjA3NWNkNzRhZjA3ZThhMjE0YTcwOGRhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZpbmdUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBl
QXJndW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVj
bGFyYXRpb247Ci1jbGFzcyBOYW1lZFR5cGU7Ci1jbGFzcyBSZXNvbHZhYmxlVHlwZTsKLWNsYXNz
IFVubmFtZWRUeXBlOwotCi19Ci0KLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6OlVubmFtZWRUeXBl
JiwgY29uc3QgQVNUOjpVbm5hbWVkVHlwZSYpOwotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6TmFt
ZWRUeXBlJiwgY29uc3QgQVNUOjpOYW1lZFR5cGUmKTsKLWJvb2wgbWF0Y2hlcyhjb25zdCBBU1Q6
OlVubmFtZWRUeXBlJiwgY29uc3QgQVNUOjpOYW1lZFR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFt
ZWRUeXBlPiBtYXRjaEFuZENvbW1pdChBU1Q6OlVubmFtZWRUeXBlJiwgQVNUOjpSZXNvbHZhYmxl
VHlwZSYpOwotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6TmFt
ZWRUeXBlJiwgQVNUOjpSZXNvbHZhYmxlVHlwZSYpOwotUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+
IG1hdGNoQW5kQ29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUmLCBBU1Q6OlJlc29sdmFibGVUeXBl
Jik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gY29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUm
KTsKLWJvb2wgaW5mZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMoQVNUOjpOYW1lZFR5cGUmIHBvc3Np
YmxlVHlwZSwgQVNUOjpUeXBlQXJndW1lbnRzJik7Ci1ib29sIGluZmVyVHlwZXNGb3JDYWxsKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBjb25zdCBBU1Q6
Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUpOwotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpV
bm5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZDQzN2EyY2UyZWM2MDg0Yjk1YjNjZDU2MTdiYjY4YjI0Zjg5ZWU0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
OTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEludHJpbnNpY3MuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1l
bnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jb25zdGV4cHIgY29uc3QgY2hhciogSW50cmluc2ljczo6bV90ZXh0dXJl
VHlwZU5hbWVzW107Ci1jb25zdGV4cHIgY29uc3QgY2hhciogSW50cmluc2ljczo6bV90ZXh0dXJl
SW5uZXJUeXBlTmFtZXNbXTsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNzOjptX2Rl
cHRoVGV4dHVyZUlubmVyVHlwZXNbXTsKLQotSW50cmluc2ljczo6SW50cmluc2ljcygpCi17Ci19
Ci0KLXZvaWQgSW50cmluc2ljczo6YWRkKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkgPT0gImRkeCIpCi0gICAgICAgIG1fZGR4ID0gJm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gImRkeSIpCi0gICAgICAgIG1fZGR5ID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247
Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkFsbE1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikKLSAgICAgICAgbV9hbGxNZW1vcnlCYXJyaWVyID0g
Jm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikK
LSAgICAgICAgbV9kZXZpY2VNZW1vcnlCYXJyaWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b247Ci0gICAgZWxzZSBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdy
b3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKQotICAgICAgICBtX2dyb3VwTWVtb3J5QmFy
cmllciA9ICZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotfQotCi1ib29sIEludHJpbnNpY3M6
OmFkZFByaW1pdGl2ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5uYW1lKCkgPT0gInZvaWQiKQotICAgICAgICBtX3ZvaWRUeXBlID0gJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJib29sIikKLSAgICAgICAgbV9ib29sVHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247
Ci0gICAgZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidWludCIpIHsK
LSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzSW50KCk7Ci0gICAgICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc051bWJlcigpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFy
YXRpb24uc2V0Q2FuUmVwcmVzZW50SW50ZWdlcihbXShpbnQgeCkgewotICAgICAgICAgICAgcmV0
dXJuIHggPj0gMDsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5z
ZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoW10odW5zaWduZWQpIHsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldENhblJlcHJlc2VudEZsb2F0KFtdKGZsb2F0IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpKSA9PSB4OwotICAgICAg
ICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFN1Y2Nlc3NvcihbXShpbnQ2
NF90IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih4ICsgMSk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihbXShpbnQgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdl
cihbXSh1bnNpZ25lZCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oeCk7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFy
YXRpb24uc2V0SXRlcmF0ZUFsbFZhbHVlcyhbXShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50
NjRfdCk+JiBjYWxsYmFjaykgewotICAgICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAwOyBpIDwg
MHgxMDAwMDAwMDA7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
ICAgICBtX3VpbnRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImludCIpIHsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldElzSW50KCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRJc051bWJlcigpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNTaWdu
ZWQoKTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudEludGVn
ZXIoW10oaW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIo
W10odW5zaWduZWQgeCkgewotICAgICAgICAgICAgcmV0dXJuIHggPD0gMjE0NzQ4MzY0NzsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRG
bG9hdChbXShmbG9hdCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHN0YXRpY19jYXN0PGludDMyX3Q+KHgpKSA9PSB4OwotICAgICAgICB9KTsKLSAgICAgICAgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnNldFN1Y2Nlc3NvcihbXShpbnQ2NF90IHgpIC0+IGludDY0X3Qg
ewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHggKyAxKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21J
bnRlZ2VyKFtdKGludCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoW10odW5zaWduZWQgeCkgLT4g
aW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCk7Ci0g
ICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXRlcmF0ZUFsbFZh
bHVlcyhbXShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50NjRfdCk+JiBjYWxsYmFjaykgewot
ICAgICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAtMjE0NzQ4MzY0NzsgaSA8IDIxNDc0ODM2NDg7
ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgICBtX2ludFR5
cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvYXQiKSB7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc051bWJlcigpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNG
bG9hdGluZygpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50
SW50ZWdlcihbXShpbnQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsK
LSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50
ZWdlcihbXSh1bnNpZ25lZCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0p
OwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10o
ZmxvYXQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICAgICAg
bV9mbG9hdFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRvbWljX2ludCIpIHsKLSAgICAgICAgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQXRvbWljKCk7Ci0gICAgICAgIG1fYXRvbWljSW50VHlw
ZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfdWludCIpIHsKLSAgICAgICAgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnNldElzQXRvbWljKCk7Ci0gICAgICAgIG1fYXRvbWljVWludFR5cGUgPSAmbmF0
aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAic2FtcGxlciIpIHsKLSAgICAgICAgbV9zYW1wbGVyVHlwZSA9ICZuYXRpdmVU
eXBlRGVjbGFyYXRpb247Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc09wYXF1
ZVR5cGUoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW50cmluc2ljczo6YWRkVmVjdG9yKEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgIT0gInZlY3RvciIpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpLnNp
emUoKSA9PSAyKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpU
eXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkp
OwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzFdKSk7Ci0gICAgYXV0
byYgaW5uZXJUeXBlID0gc3RhdGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4oV1RGOjpnZXQ8
UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1l
bnRzKClbMF0pKTsKLSAgICBhdXRvJiBsZW5ndGhFeHByZXNzaW9uID0gV1RGOjpnZXQ8QVNUOjpD
b25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClb
MV0pOwotICAgIEFTU0VSVCghaW5uZXJUeXBlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpOwotICAg
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiogYXJyYXk7Ci0gICAgaWYgKGlubmVyVHlwZS5u
YW1lKCkgPT0gImJvb2wiKQotICAgICAgICBhcnJheSA9IG1fdmVjdG9yQm9vbDsKLSAgICBlbHNl
IGlmIChpbm5lclR5cGUubmFtZSgpID09ICJ1aW50IikKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3Rv
clVpbnQ7Ci0gICAgZWxzZSBpZiAoaW5uZXJUeXBlLm5hbWUoKSA9PSAiaW50IikKLSAgICAgICAg
YXJyYXkgPSBtX3ZlY3RvckludDsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlubmVyVHlw
ZS5uYW1lKCkgPT0gImZsb2F0Iik7Ci0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JGbG9hdDsKLSAg
ICB9Ci0gICAgaW50IGxlbmd0aCA9IGxlbmd0aEV4cHJlc3Npb24uaW50ZWdlckxpdGVyYWwoKS52
YWx1ZSgpOwotICAgIEFTU0VSVChsZW5ndGggPj0gMiAmJiBsZW5ndGggPD0gNCk7Ci0gICAgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVmVjdG9yKCk7Ci0gICAgYXJyYXlbbGVuZ3RoIC0gMl0g
PSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIElu
dHJpbnNpY3M6OmFkZE1hdHJpeChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpICE9
ICJtYXRyaXgiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBuYXRpdmVUeXBlRGVjbGFy
YXRpb24uc2V0SXNNYXRyaXgoKTsKLQotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
dHlwZUFyZ3VtZW50cygpLnNpemUoKSA9PSAzKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5
cGVBcmd1bWVudHMoKVswXSkpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFT
VDo6Q29uc3RhbnRFeHByZXNzaW9uPihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50
cygpWzFdKSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25zdGFu
dEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMl0pKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVyZShB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBBU1Q6OlR5
cGVSZWZlcmVuY2UmIGlubmVyVHlwZSkKLXsKLSAgICBhdXRvIHRleHR1cmVUeXBlSW5kZXggPSBz
dGQ6OmZpbmQobV90ZXh0dXJlVHlwZU5hbWVzLCBtX3RleHR1cmVUeXBlTmFtZXMgKyBXVEZfQVJS
QVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVOYW1lcyksIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkpIC0gbV90ZXh0dXJlVHlwZU5hbWVzOwotICAgIGlmICh0ZXh0dXJlVHlwZUluZGV4ID09IFdU
Rl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgdW5zaWduZWQgaW5uZXJUeXBlSW5kZXggPSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4
dHVyZUlubmVyVHlwZU5hbWVzKTsKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSAwOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVy
VHlwZU5hbWVzKTsgKytpKSB7Ci0gICAgICAgIGlmIChpbm5lclR5cGUubmFtZSgpLnN0YXJ0c1dp
dGgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbaV0pKSB7Ci0gICAgICAgICAgICBpbm5lclR5cGVJ
bmRleCA9IGk7Ci0gICAgICAgICAgICBpZiAoaW5uZXJUeXBlLm5hbWUoKSA9PSBtX3RleHR1cmVJ
bm5lclR5cGVOYW1lc1tpXSkKLSAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSAxOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSA9PSBzdHJsZW4obV90ZXh0dXJlSW5u
ZXJUeXBlTmFtZXNbaV0pICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaW5uZXJUeXBlLm5hbWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgp
IC0gMV0gPT0gJzInCi0gICAgICAgICAgICAgICAgICAgIHx8IGlubmVyVHlwZS5uYW1lKClbaW5u
ZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdID09ICczJwotICAgICAgICAgICAgICAgICAgICB8
fCBpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1lKCkubGVuZ3RoKCkgLSAxXSA9PSAnNCcp
OwotICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IGlubmVyVHlwZS5uYW1lKClbaW5uZXJU
eXBlLm5hbWUoKS5sZW5ndGgoKSAtIDFdIC0gJzAnOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUKHZlY3Rvckxlbmd0aCAmJiB2ZWN0b3JMZW5ndGgg
PCA1KTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbm5lclR5cGVJbmRl
eCAhPSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzKSk7Ci0gICAgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZSgpOwotICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiVGV4dHVyZTFEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlJXVGV4dHVyZTFEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlRleHR1cmUyREFycmF5IiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1Rl
eHR1cmUyREFycmF5IikKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVy
ZUFycmF5KCk7Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4
dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyRCIg
fHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiIHx8IG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJyYXkiIHx8IG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uc2V0SXNXcml0YWJsZVRleHR1cmUoKTsKLSAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUxRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiVGV4dHVyZTFEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIlJXVGV4dHVyZTFEQXJyYXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0
VGV4dHVyZURpbWVuc2lvbigxKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiVGV4dHVyZTJEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1Rl
eHR1cmUyRCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZUN1YmUi
IHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyREFycmF5IiB8fCBu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyREFycmF5IikKLSAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24oMik7Ci0gICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUzRCIgfHwgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiKQotICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigzKTsKLSAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZUN1YmUiKQotICAgICAgICBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uc2V0SXNDdWJlVGV4dHVyZSgpOwotICAgIG1fZnVsbFRleHR1cmVzW3RleHR1cmVU
eXBlSW5kZXhdW2lubmVyVHlwZUluZGV4XVt2ZWN0b3JMZW5ndGggLSAxXSA9ICZuYXRpdmVUeXBl
RGVjbGFyYXRpb247Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRk
RGVwdGhUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFy
YXRpb24sIEFTVDo6VHlwZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQotewotICAgIEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uKiogdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgaWYgKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEIikKLSAgICAgICAgdGV4dHVyZSA9
IG1fdGV4dHVyZURlcHRoMkQ7Ci0gICAgZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiVGV4dHVyZURlcHRoMkRBcnJheSIpCi0gICAgICAgIHRleHR1cmUgPSBtX3RleHR1
cmVEZXB0aDJEQXJyYXk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGhDdWJlIik7Ci0gICAgICAgIHRleHR1cmUg
PSBtX3RleHR1cmVEZXB0aEN1YmU7Ci0gICAgfQotICAgIGF1dG8gaW5uZXJUeXBlSW5kZXggPSBz
dGQ6OmZpbmQobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzLCBtX2RlcHRoVGV4dHVyZUlubmVyVHlw
ZXMgKyBXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyksIGlubmVyVHlw
ZS5uYW1lKCkpIC0gbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzOwotICAgIEFTU0VSVChpbm5lclR5
cGVJbmRleCAhPSBXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcykpOwot
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1RleHR1cmUoKTsKLSAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0SXNPcGFxdWVUeXBlKCk7Ci0gICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0
dXJlRGVwdGgyREFycmF5KQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0
dXJlQXJyYXkoKTsKLSAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1cmVEZXB0aEN1YmUpCi0gICAg
ICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0N1YmVUZXh0dXJlKCk7Ci0gICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24oMik7Ci0gICAgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnNldElzRGVwdGhUZXh0dXJlKCk7Ci0gICAgdGV4dHVyZVtpbm5lclR5cGVJbmRl
eF0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotfQotCi12b2lkIEludHJpbnNpY3M6OmFkZFRl
eHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikK
LXsKLSAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXpl
KCkgPT0gMSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VHlw
ZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pKTsK
LSAgICBhdXRvJiBpbm5lclR5cGUgPSBzdGF0aWNfY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2UmPihX
VEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5
cGVBcmd1bWVudHMoKVswXSkpOwotICAgIEFTU0VSVCghaW5uZXJUeXBlLnR5cGVBcmd1bWVudHMo
KS5zaXplKCkpOwotICAgIGlmIChhZGRGdWxsVGV4dHVyZShuYXRpdmVUeXBlRGVjbGFyYXRpb24s
IGlubmVyVHlwZSkpIHsKLSAgICAgICAgbV90ZXh0dXJlU2V0LmFkZCgmbmF0aXZlVHlwZURlY2xh
cmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhZGREZXB0aFRleHR1cmUobmF0
aXZlVHlwZURlY2xhcmF0aW9uLCBpbm5lclR5cGUpOwotICAgIG1fdGV4dHVyZVNldC5hZGQoJm5h
dGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19Ci0KLXZvaWQgSW50cmluc2ljczo6YWRkKEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKGFk
ZFByaW1pdGl2ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKGFkZFZlY3RvcihuYXRpdmVUeXBlRGVjbGFyYXRpb24pKQotICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKGFkZE1hdHJpeChuYXRpdmVUeXBlRGVjbGFyYXRpb24pKQotICAgICAgICByZXR1cm47
Ci0gICAgYWRkVGV4dHVyZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEludHJpbnNpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW50cmluc2ljcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ZmZmZmE1ZTQ0ZTQwZDM2OTY4MjZhYjhkOGQ2YWY3NjVjODU1MmRjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW50cmluc2ljcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1
ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8Y3N0cmluZz4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgSW50cmlu
c2ljcyB7Ci1wdWJsaWM6Ci0gICAgSW50cmluc2ljcygpOwotCi0gICAgdm9pZCBhZGQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAgdm9pZCBhZGQoQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mKTsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB2b2lkVHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92b2lkVHlwZSk7Ci0gICAgICAgIHJl
dHVybiAqbV92b2lkVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYgYm9vbFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYm9vbFR5cGUpOwot
ICAgICAgICByZXR1cm4gKm1fYm9vbFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24mIGJvb2xWZWN0b3JUeXBlRm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBz
aXplID09IDQpOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yQm9vbFtzaXplIC0gMl07Ci0gICAg
fQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVpbnRUeXBlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3VpbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX3VpbnRU
eXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRUeXBlKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ludFR5cGUpOwotICAgICAgICByZXR1cm4g
Km1faW50VHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWlu
dDJUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvclVpbnRbMF0pOwot
ICAgICAgICByZXR1cm4gKm1fdmVjdG9yVWludFswXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgdWludDRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3ZlY3RvclVpbnRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9yVWludFsyXTsKLSAg
ICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludFZlY3RvclR5cGVGb3JT
aXplKHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChz
aXplID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92
ZWN0b3JVaW50W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgaW50MlR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9ySW50
WzBdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFswXTsKLSAgICB9Ci0KLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50NFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdmVjdG9ySW50WzJdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFsyXTsK
LSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50VmVjdG9yVHlwZUZv
clNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAgcmV0dXJuICpt
X3ZlY3RvckludFtzaXplIC0gMl07Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24mIHNhbXBsZXJUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3NhbXBs
ZXJUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX3NhbXBsZXJUeXBlOwotICAgIH0KLQotICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fZmxvYXRUeXBlKTsKLSAgICAgICAgcmV0dXJuICptX2Zsb2F0VHlwZTsKLSAg
ICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxvYXQyVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JGbG9hdFswXSk7Ci0gICAgICAgIHJldHVy
biAqbV92ZWN0b3JGbG9hdFswXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgZmxvYXQzVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92ZWN0b3JG
bG9hdFsxXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFsxXTsKLSAgICB9Ci0KLSAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxvYXQ0VHlwZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV92ZWN0b3JGbG9hdFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0
b3JGbG9hdFsyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgZmxv
YXRWZWN0b3JUeXBlRm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAg
ICAgICByZXR1cm4gKm1fdmVjdG9yRmxvYXRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBtYXkgaGF2ZSBiZWVuIHBydW5lZCBmcm9tIHRoZSBBU1QgaWYgdGhleSBh
cmUgdW51c2VkLgotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGR4KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2RkeDsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24qIGRkeSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9kZHk7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBhbGxN
ZW1vcnlCYXJyaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FsbE1lbW9yeUJh
cnJpZXI7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBkZXZp
Y2VNZW1vcnlCYXJyaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2RldmljZU1l
bW9yeUJhcnJpZXI7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KiBncm91cE1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3Jv
dXBNZW1vcnlCYXJyaWVyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBib29sIGFkZFByaW1pdGl2
ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkVmVjdG9yKEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgYm9vbCBhZGRNYXRyaXgoQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZEZ1bGxUZXh0dXJlKEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiwgQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBhZGREZXB0aFRl
eHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mLCBBU1Q6OlR5cGVSZWZlcmVuY2UmKTsK
LSAgICB2b2lkIGFkZFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLQotICAg
IEhhc2hTZXQ8Y29uc3QgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qPiBtX3RleHR1cmVTZXQ7
Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92b2lkVHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9ib29sVHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV91aW50VHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9pbnRUeXBlIHsgbnVsbHB0ciB9
OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2Zsb2F0VHlwZSB7IG51bGxwdHIg
fTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV9hdG9taWNJbnRUeXBlIHsgbnVs
bHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2F0b21pY1VpbnRUeXBl
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3NhbXBsZXJU
eXBlIHsgbnVsbHB0ciB9OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdmVj
dG9yQm9vbFszXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0
b3JVaW50WzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZlY3Rv
ckludFszXSB7IDAgfTsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV92ZWN0b3JG
bG9hdFszXSB7IDAgfTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbV90ZXh0
dXJlVHlwZU5hbWVzW10gPSB7ICJUZXh0dXJlMUQiLCAiUldUZXh0dXJlMUQiLCAiVGV4dHVyZTJE
IiwgIlJXVGV4dHVyZTJEIiwgIlRleHR1cmUzRCIsICJSV1RleHR1cmUzRCIsICJUZXh0dXJlQ3Vi
ZSIsICJUZXh0dXJlMURBcnJheSIsICJSV1RleHR1cmUxREFycmF5IiwgIlRleHR1cmUyREFycmF5
IiwgIlJXVGV4dHVyZTJEQXJyYXkiIH07Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNo
YXIqIG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzW10gPSB7ICJ1aW50IiwgImludCIsICJmbG9hdCIg
fTsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2Z1bGxUZXh0dXJlc1tXVEZf
QVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVOYW1lcyldW1dURl9BUlJBWV9MRU5HVEgobV90ZXh0
dXJlSW5uZXJUeXBlTmFtZXMpXVs0XSB7e3sgMCB9fX07Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlc1tdID0gIHsgImZsb2F0IiB9Owot
Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fdGV4dHVyZURlcHRoMkRbV1RGX0FS
UkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpXSB7IDAgfTsKLSAgICBBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGgyREFycmF5W1dURl9BUlJBWV9MRU5H
VEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24qIG1fdGV4dHVyZURlcHRoQ3ViZVtXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhU
ZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9OwotCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKiBtX2RkeCB7IG51bGxwdHIgfTsKLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIG1fZGR5IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiogbV9hbGxNZW1vcnlCYXJyaWVyIHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiogbV9kZXZpY2VNZW1vcnlCYXJyaWVyIHsgbnVsbHB0ciB9OwotICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9ncm91cE1lbW9yeUJhcnJpZXIgeyBu
dWxscHRyIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5ZDZiMGVhY2NkOTVlMTMxOThlNjg2MzNmY2E5NmZiNDc0M2I5
N2JhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTc0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jb25zdCBjaGFyKiBU
b2tlbjo6dHlwZU5hbWUoVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgVHlwZTo6SW50TGl0ZXJhbDoKLSAgICAgICAgcmV0dXJuICJpbnQgbGl0ZXJhbCI7Ci0gICAg
Y2FzZSBUeXBlOjpVaW50TGl0ZXJhbDoKLSAgICAgICAgcmV0dXJuICJ1aW50IGxpdGVyYWwiOwot
ICAgIGNhc2UgVHlwZTo6RmxvYXRMaXRlcmFsOgotICAgICAgICByZXR1cm4gImZsb2F0IGxpdGVy
YWwiOwotICAgIGNhc2UgVHlwZTo6U3RydWN0OgotICAgICAgICByZXR1cm4gInN0cnVjdCI7Ci0g
ICAgY2FzZSBUeXBlOjpUeXBlZGVmOgotICAgICAgICByZXR1cm4gInR5cGVkZWYiOwotICAgIGNh
c2UgVHlwZTo6RW51bToKLSAgICAgICAgcmV0dXJuICJlbnVtIjsKLSAgICBjYXNlIFR5cGU6Ok9w
ZXJhdG9yOgotICAgICAgICByZXR1cm4gIm9wZXJhdG9yIjsKLSAgICBjYXNlIFR5cGU6OklmOgot
ICAgICAgICByZXR1cm4gImlmIjsKLSAgICBjYXNlIFR5cGU6OkVsc2U6Ci0gICAgICAgIHJldHVy
biAiZWxzZSI7Ci0gICAgY2FzZSBUeXBlOjpDb250aW51ZToKLSAgICAgICAgcmV0dXJuICJjb250
aW51ZSI7Ci0gICAgY2FzZSBUeXBlOjpCcmVhazoKLSAgICAgICAgcmV0dXJuICJicmVhayI7Ci0g
ICAgY2FzZSBUeXBlOjpTd2l0Y2g6Ci0gICAgICAgIHJldHVybiAic3dpdGNoIjsKLSAgICBjYXNl
IFR5cGU6OkNhc2U6Ci0gICAgICAgIHJldHVybiAiY2FzZSI7Ci0gICAgY2FzZSBUeXBlOjpEZWZh
dWx0OgotICAgICAgICByZXR1cm4gImRlZmF1bHQiOwotICAgIGNhc2UgVHlwZTo6RmFsbHRocm91
Z2g6Ci0gICAgICAgIHJldHVybiAiZmFsbHRocm91Z2giOwotICAgIGNhc2UgVHlwZTo6Rm9yOgot
ICAgICAgICByZXR1cm4gImZvciI7Ci0gICAgY2FzZSBUeXBlOjpXaGlsZToKLSAgICAgICAgcmV0
dXJuICJ3aGlsZSI7Ci0gICAgY2FzZSBUeXBlOjpEbzoKLSAgICAgICAgcmV0dXJuICJkbyI7Ci0g
ICAgY2FzZSBUeXBlOjpSZXR1cm46Ci0gICAgICAgIHJldHVybiAicmV0dXJuIjsKLSAgICBjYXNl
IFR5cGU6Ok51bGw6Ci0gICAgICAgIHJldHVybiAibnVsbCI7Ci0gICAgY2FzZSBUeXBlOjpUcnVl
OgotICAgICAgICByZXR1cm4gInRydWUiOwotICAgIGNhc2UgVHlwZTo6RmFsc2U6Ci0gICAgICAg
IHJldHVybiAiZmFsc2UiOwotICAgIGNhc2UgVHlwZTo6Q29uc3RhbnQ6Ci0gICAgICAgIHJldHVy
biAiY29uc3RhbnQiOwotICAgIGNhc2UgVHlwZTo6RGV2aWNlOgotICAgICAgICByZXR1cm4gImRl
dmljZSI7Ci0gICAgY2FzZSBUeXBlOjpUaHJlYWRncm91cDoKLSAgICAgICAgcmV0dXJuICJ0aHJl
YWRncm91cCI7Ci0gICAgY2FzZSBUeXBlOjpUaHJlYWQ6Ci0gICAgICAgIHJldHVybiAidGhyZWFk
IjsKLSAgICBjYXNlIFR5cGU6OlNwYWNlOgotICAgICAgICByZXR1cm4gInNwYWNlIjsKLSAgICBj
YXNlIFR5cGU6OlZlcnRleDoKLSAgICAgICAgcmV0dXJuICJ2ZXJ0ZXgiOwotICAgIGNhc2UgVHlw
ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiAiZnJhZ21lbnQiOwotICAgIGNhc2UgVHlwZTo6
Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuICJjb21wdXRlIjsKLSAgICBjYXNlIFR5cGU6Ok51bVRo
cmVhZHM6Ci0gICAgICAgIHJldHVybiAibnVtdGhyZWFkcyI7Ci0gICAgY2FzZSBUeXBlOjpTVklu
c3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfSW5zdGFuY2VJRCI7Ci0gICAgY2FzZSBUeXBl
OjpTVlZlcnRleElEOgotICAgICAgICByZXR1cm4gIlNWX1ZlcnRleElEIjsKLSAgICBjYXNlIFR5
cGU6OlBTaXplOgotICAgICAgICByZXR1cm4gIlBTSVpFIjsKLSAgICBjYXNlIFR5cGU6OlNWUG9z
aXRpb246Ci0gICAgICAgIHJldHVybiAiU1ZfUG9zaXRpb24iOwotICAgIGNhc2UgVHlwZTo6U1ZJ
c0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuICJTVl9Jc0Zyb250RmFjZSI7Ci0gICAgY2FzZSBU
eXBlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICByZXR1cm4gIlNWX1NhbXBsZUluZGV4IjsKLSAg
ICBjYXNlIFR5cGU6OlNWSW5uZXJDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJuICJTVl9Jbm5lckNv
dmVyYWdlIjsKLSAgICBjYXNlIFR5cGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gIlNWX1Rh
cmdldCI7Ci0gICAgY2FzZSBUeXBlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gIlNWX0RlcHRo
IjsKLSAgICBjYXNlIFR5cGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiAiU1ZfQ292ZXJh
Z2UiOwotICAgIGNhc2UgVHlwZTo6U1ZEaXNwYXRjaFRocmVhZElEOgotICAgICAgICByZXR1cm4g
IlNWX0Rpc3BhdGNoVGhyZWFkSUQiOwotICAgIGNhc2UgVHlwZTo6U1ZHcm91cElEOgotICAgICAg
ICByZXR1cm4gIlNWX0dyb3VwSUQiOwotICAgIGNhc2UgVHlwZTo6U1ZHcm91cEluZGV4OgotICAg
ICAgICByZXR1cm4gIlNWX0dyb3VwSW5kZXgiOwotICAgIGNhc2UgVHlwZTo6U1ZHcm91cFRocmVh
ZElEOgotICAgICAgICByZXR1cm4gIlNWX0dyb3VwVGhyZWFkSUQiOwotICAgIGNhc2UgVHlwZTo6
QXR0cmlidXRlOgotICAgICAgICByZXR1cm4gIlNWX0F0dHJpYnV0ZSI7Ci0gICAgY2FzZSBUeXBl
OjpSZWdpc3RlcjoKLSAgICAgICAgcmV0dXJuICJyZWdpc3RlciI7Ci0gICAgY2FzZSBUeXBlOjpT
cGVjaWFsaXplZDoKLSAgICAgICAgcmV0dXJuICJzcGVjaWFsaXplZCI7Ci0gICAgY2FzZSBUeXBl
OjpOYXRpdmU6Ci0gICAgICAgIHJldHVybiAibmF0aXZlIjsKLSAgICBjYXNlIFR5cGU6OlJlc3Ry
aWN0ZWQ6Ci0gICAgICAgIHJldHVybiAicmVzdHJpY3RlZCI7Ci0gICAgY2FzZSBUeXBlOjpVbmRl
cnNjb3JlOgotICAgICAgICByZXR1cm4gIl8iOwotICAgIGNhc2UgVHlwZTo6QXV0bzoKLSAgICAg
ICAgcmV0dXJuICJhdXRvIjsKLSAgICBjYXNlIFR5cGU6OlByb3RvY29sOgotICAgICAgICByZXR1
cm4gInByb3RvY29sIjsKLSAgICBjYXNlIFR5cGU6OkNvbnN0OgotICAgICAgICByZXR1cm4gImNv
bnN0IjsKLSAgICBjYXNlIFR5cGU6OlN0YXRpYzoKLSAgICAgICAgcmV0dXJuICJzdGF0aWMiOwot
ICAgIGNhc2UgVHlwZTo6UXVhbGlmaWVyOgotICAgICAgICByZXR1cm4gInF1YWxpZmllciI7Ci0g
ICAgY2FzZSBUeXBlOjpJZGVudGlmaWVyOgotICAgICAgICByZXR1cm4gImlkZW50aWZpZXIiOwot
ICAgIGNhc2UgVHlwZTo6T3BlcmF0b3JOYW1lOgotICAgICAgICByZXR1cm4gIm9wZXJhdG9yIG5h
bWUiOwotICAgIGNhc2UgVHlwZTo6RXF1YWxzU2lnbjoKLSAgICAgICAgcmV0dXJuICI9IjsKLSAg
ICBjYXNlIFR5cGU6OlNlbWljb2xvbjoKLSAgICAgICAgcmV0dXJuICI7IjsKLSAgICBjYXNlIFR5
cGU6OkxlZnRDdXJseUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiAieyI7Ci0gICAgY2FzZSBUeXBl
OjpSaWdodEN1cmx5QnJhY2tldDoKLSAgICAgICAgcmV0dXJuICJ9IjsKLSAgICBjYXNlIFR5cGU6
OkNvbG9uOgotICAgICAgICByZXR1cm4gIjoiOwotICAgIGNhc2UgVHlwZTo6Q29tbWE6Ci0gICAg
ICAgIHJldHVybiAiLCI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0UGFyZW50aGVzaXM6Ci0gICAgICAg
IHJldHVybiAiKCI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodFBhcmVudGhlc2lzOgotICAgICAgICBy
ZXR1cm4gIikiOwotICAgIGNhc2UgVHlwZTo6U3F1YXJlQnJhY2tldFBhaXI6Ci0gICAgICAgIHJl
dHVybiAiW10iOwotICAgIGNhc2UgVHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJl
dHVybiAiWyI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJl
dHVybiAiXSI7Ci0gICAgY2FzZSBUeXBlOjpTdGFyOgotICAgICAgICByZXR1cm4gIioiOwotICAg
IGNhc2UgVHlwZTo6TGVzc1RoYW5TaWduOgotICAgICAgICByZXR1cm4gIjwiOwotICAgIGNhc2Ug
VHlwZTo6R3JlYXRlclRoYW5TaWduOgotICAgICAgICByZXR1cm4gIj4iOwotICAgIGNhc2UgVHlw
ZTo6RnVsbFN0b3A6Ci0gICAgICAgIHJldHVybiAiLiI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzRXF1
YWxzOgotICAgICAgICByZXR1cm4gIis9IjsKLSAgICBjYXNlIFR5cGU6Ok1pbnVzRXF1YWxzOgot
ICAgICAgICByZXR1cm4gIi09IjsKLSAgICBjYXNlIFR5cGU6OlRpbWVzRXF1YWxzOgotICAgICAg
ICByZXR1cm4gIio9IjsKLSAgICBjYXNlIFR5cGU6OkRpdmlkZUVxdWFsczoKLSAgICAgICAgcmV0
dXJuICIvPSI7Ci0gICAgY2FzZSBUeXBlOjpNb2RFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiJT0i
OwotICAgIGNhc2UgVHlwZTo6WG9yRXF1YWxzOgotICAgICAgICByZXR1cm4gIl49IjsKLSAgICBj
YXNlIFR5cGU6OkFuZEVxdWFsczoKLSAgICAgICAgcmV0dXJuICImPSI7Ci0gICAgY2FzZSBUeXBl
OjpPckVxdWFsczoKLSAgICAgICAgcmV0dXJuICJ8PSI7Ci0gICAgY2FzZSBUeXBlOjpSaWdodFNo
aWZ0RXF1YWxzOgotICAgICAgICByZXR1cm4gIj4+PSI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U2hp
ZnRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiPDw9IjsKLSAgICBjYXNlIFR5cGU6OlBsdXNQbHVz
OgotICAgICAgICByZXR1cm4gIisrIjsKLSAgICBjYXNlIFR5cGU6Ok1pbnVzTWludXM6Ci0gICAg
ICAgIHJldHVybiAiLS0iOwotICAgIGNhc2UgVHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiAi
LT4iOwotICAgIGNhc2UgVHlwZTo6UXVlc3Rpb25NYXJrOgotICAgICAgICByZXR1cm4gIj8iOwot
ICAgIGNhc2UgVHlwZTo6T3JPcjoKLSAgICAgICAgcmV0dXJuICJ8fCI7Ci0gICAgY2FzZSBUeXBl
OjpBbmRBbmQ6Ci0gICAgICAgIHJldHVybiAiJiYiOwotICAgIGNhc2UgVHlwZTo6T3I6Ci0gICAg
ICAgIHJldHVybiAifCI7Ci0gICAgY2FzZSBUeXBlOjpYb3I6Ci0gICAgICAgIHJldHVybiAiXiI7
Ci0gICAgY2FzZSBUeXBlOjpBbmQ6Ci0gICAgICAgIHJldHVybiAiJiI7Ci0gICAgY2FzZSBUeXBl
OjpMZXNzVGhhbk9yRXF1YWxUbzoKLSAgICAgICAgcmV0dXJuICI8PSI7Ci0gICAgY2FzZSBUeXBl
OjpHcmVhdGVyVGhhbk9yRXF1YWxUbzoKLSAgICAgICAgcmV0dXJuICI+PSI7Ci0gICAgY2FzZSBU
eXBlOjpFcXVhbENvbXBhcmlzb246Ci0gICAgICAgIHJldHVybiAiPT0iOwotICAgIGNhc2UgVHlw
ZTo6Tm90RXF1YWw6Ci0gICAgICAgIHJldHVybiAiIT0iOwotICAgIGNhc2UgVHlwZTo6UmlnaHRT
aGlmdDoKLSAgICAgICAgcmV0dXJuICI+PiI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U2hpZnQ6Ci0g
ICAgICAgIHJldHVybiAiPDwiOwotICAgIGNhc2UgVHlwZTo6UGx1czoKLSAgICAgICAgcmV0dXJu
ICIrIjsKLSAgICBjYXNlIFR5cGU6Ok1pbnVzOgotICAgICAgICByZXR1cm4gIi0iOwotICAgIGNh
c2UgVHlwZTo6RGl2aWRlOgotICAgICAgICByZXR1cm4gIi8iOwotICAgIGNhc2UgVHlwZTo6TW9k
OgotICAgICAgICByZXR1cm4gIiUiOwotICAgIGNhc2UgVHlwZTo6VGlsZGU6Ci0gICAgICAgIHJl
dHVybiAifiI7Ci0gICAgY2FzZSBUeXBlOjpFeGNsYW1hdGlvblBvaW50OgotICAgICAgICByZXR1
cm4gIiEiOwotICAgIGNhc2UgVHlwZTo6QXQ6Ci0gICAgICAgIHJldHVybiAiQCI7Ci0gICAgY2Fz
ZSBUeXBlOjpFbmRPZkZpbGU6Ci0gICAgICAgIHJldHVybiAiRU9GIjsKLSAgICBjYXNlIFR5cGU6
OkludmFsaWQ6Ci0gICAgICAgIHJldHVybiAiTEVYSU5HX0VSUk9SIjsKLSAgICB9Ci19Ci0KLXN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZElkZW50aWZpZXJTdGFydChVQ2hhciB0aGVD
aGFyKQotewotICAgIHJldHVybiAodGhlQ2hhciA+PSAnYScgJiYgdGhlQ2hhciA8PSAneicpCi0g
ICAgICAgIHx8ICh0aGVDaGFyID49ICdBJyAmJiB0aGVDaGFyIDw9ICdaJykKLSAgICAgICAgfHwg
KHRoZUNoYXIgPT0gJ18nKTsKLX0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlk
Tm9uU3RhcnRpbmdJZGVudGlmaWVyQ2hhcihVQ2hhciB0aGVDaGFyKQotewotICAgIHJldHVybiAo
dGhlQ2hhciA+PSAnYScgJiYgdGhlQ2hhciA8PSAneicpCi0gICAgICAgIHx8ICh0aGVDaGFyID49
ICdBJyAmJiB0aGVDaGFyIDw9ICdaJykKLSAgICAgICAgfHwgKHRoZUNoYXIgPj0gJzAnICYmIHRo
ZUNoYXIgPD0gJzknKQotICAgICAgICB8fCAodGhlQ2hhciA9PSAnXycpOwotfQotCi1zdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVy
KQotewotICAgIHJldHVybiAoY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknKQot
ICAgICAgICB8fCAoY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ2YnKQotICAgICAg
ICB8fCAoY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ0YnKTsKLX0KLQotc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0RpZ2l0KFVDaGFyIHRoZUNoYXIpCi17Ci0gICAgcmV0dXJu
IHRoZUNoYXIgPj0gJzAnICYmIHRoZUNoYXIgPD0gJzknOwotfQotCi1hdXRvIExleGVyOjpjb25z
dW1lVG9rZW5Gcm9tU3RyZWFtKCkgLT4gVG9rZW4KLXsKLSAgICBVQ2hhciBjdXJyZW50ID0gMDsK
LSAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX29mZnNldDsKLQotICAgIGF1dG8gcGVlayA9IFsmXSAo
KSAtPiBVQ2hhciB7Ci0gICAgICAgIGlmIChvZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbV9zdHJpbmdWaWV3W29mZnNldF07Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH07Ci0KLSAgICBhdXRvIHNoaWZ0ID0gWyZdIHsKLSAgICAgICAgaWYgKG9mZnNl
dCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkgewotICAgICAgICAgICAgY3VycmVudCA9IG1fc3Ry
aW5nVmlld1tvZmZzZXRdOwotICAgICAgICAgICAgKytvZmZzZXQ7Ci0gICAgICAgICAgICByZXR1
cm4gY3VycmVudDsKLSAgICAgICAgfQotICAgICAgICBjdXJyZW50ID0gMDsKLSAgICAgICAgcmV0
dXJuIGN1cnJlbnQ7Ci0gICAgfTsKLQotICAgIGF1dG8gY29uc3VtZSA9IFsmXSAoVUNoYXIgdGhl
Q2hhcikgewotICAgICAgICBpZiAocGVlaygpID09IHRoZUNoYXIpIHsKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfTsKLQotICAgIGF1dG8gbmV4dElzSWRlbnRpZmllciA9IFsmXSB7Ci0g
ICAgICAgIHJldHVybiBpc1ZhbGlkTm9uU3RhcnRpbmdJZGVudGlmaWVyQ2hhcihwZWVrKCkpOwot
ICAgIH07Ci0KLSAgICBhdXRvIHRva2VuID0gWyZdIChUb2tlbjo6VHlwZSB0eXBlKSAtPiBUb2tl
biB7Ci0gICAgICAgIGF1dG8gb2xkT2Zmc2V0ID0gbV9vZmZzZXQ7Ci0gICAgICAgIG1fb2Zmc2V0
ID0gb2Zmc2V0OwotICAgICAgICBza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRzKCk7Ci0gICAgICAg
IHJldHVybiB7IHsgb2xkT2Zmc2V0LCBvZmZzZXQsIG1fbmFtZVNwYWNlIH0sIHR5cGUgfTsKLSAg
ICB9OwotCi0gICAgc3dpdGNoIChzaGlmdCgpKSB7Ci0gICAgY2FzZSAnQSc6Ci0gICAgY2FzZSAn
Qic6Ci0gICAgY2FzZSAnQyc6Ci0gICAgY2FzZSAnRCc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2Fz
ZSAnRic6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnSCc6Ci0gICAgY2FzZSAnSSc6Ci0gICAg
Y2FzZSAnSic6Ci0gICAgY2FzZSAnSyc6Ci0gICAgY2FzZSAnTCc6Ci0gICAgY2FzZSAnTSc6Ci0g
ICAgY2FzZSAnTic6Ci0gICAgY2FzZSAnTyc6Ci0gICAgY2FzZSAnUSc6Ci0gICAgY2FzZSAnUic6
Ci0gICAgY2FzZSAnVCc6Ci0gICAgY2FzZSAnVSc6Ci0gICAgY2FzZSAnVic6Ci0gICAgY2FzZSAn
Vyc6Ci0gICAgY2FzZSAnWCc6Ci0gICAgY2FzZSAnWSc6Ci0gICAgY2FzZSAnWic6Ci0gICAgY2Fz
ZSAnZyc6Ci0gICAgY2FzZSAnaCc6Ci0gICAgY2FzZSAnaic6Ci0gICAgY2FzZSAnayc6Ci0gICAg
Y2FzZSAnbCc6Ci0gICAgY2FzZSAnbSc6Ci0gICAgY2FzZSAncSc6Ci0gICAgY2FzZSAneCc6Ci0g
ICAgY2FzZSAneSc6Ci0gICAgY2FzZSAneic6Ci1wYXJzZUlkZW50aWZpZXI6Ci0gICAgICAgIHdo
aWxlIChpc1ZhbGlkTm9uU3RhcnRpbmdJZGVudGlmaWVyQ2hhcihwZWVrKCkpKQotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVy
KTsKLQotICAgIGNhc2UgJ3MnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBj
YXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0KLSAgICAgICAgY2Fz
ZSAndyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdp
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTd2l0Y2gpOwotCi0gICAgICAgIGNhc2UgJ3Qn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0g
ICAgICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6U3RydWN0KTsKLSAgICAgICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTdGF0aWMpOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBj
YXNlICdhJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcGFjZSk7Ci0gICAgICAgICAgICBj
YXNlICdlJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd6JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTcGVj
aWFsaXplZCk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ1MnOgotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ1YnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ18nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotCi0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ0cnOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAg
ICAgICAgICAgY2FzZSAnSSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgotICAgICAg
ICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZHcm91cElE
KTsKLSAgICAgICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlNWR3JvdXBJbmRleCk7Ci0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGNhc2UgJ1QnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZHcm91cFRocmVhZElE
KTsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSAnRCc6Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
J2UnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdwJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkRl
cHRoKTsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdUJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdl
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmll
cigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCk7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdDJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdl
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWQ292ZXJhZ2UpOwot
ICAgICAgICBjYXNlICdUJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZU
YXJnZXQpOwotICAgICAgICBjYXNlICdTJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OlNWU2FtcGxlSW5kZXgpOwotICAgICAgICBjYXNlICdQJzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdvJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlNWUG9zaXRpb24pOwotICAgICAgICBjYXNlICdWJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWVmVydGV4SUQpOwot
ICAgICAgICBjYXNlICdJJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0YnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRicpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2En
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWSXNGcm9udEZh
Y2UpOwotICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgJ24n
OgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ0MnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3YnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6U1ZJbm5lckNvdmVyYWdlKTsKLSAgICAgICAgICAgICAgICBjYXNlICdz
JzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdJJykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNWSW5zdGFuY2VJRCk7Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0K
LQotICAgIGNhc2UgJ3QnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNl
ICdyJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Un
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
VHJ1ZSk7Ci0gICAgICAgIGNhc2UgJ3knOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpUeXBlZGVmKTsKLSAgICAgICAgY2FzZSAnaCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0K
LSAgICAgICAgICAgIGlmICghbmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VGhyZWFkKTsKLQotICAgICAgICAgICAgaWYgKHBlZWso
KSAhPSAnZycpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50ID09ICdn
Jyk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCd1JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlRocmVhZGdyb3VwKTsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ2UnOgotICAgICAgICBzd2l0
Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZp
ZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RW51bSk7Ci0gICAgICAgIGNhc2UgJ2wnOgotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbHNlKTsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICB9Ci0KLSAgICBjYXNlICdvJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdy
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25z
dW1lKCdhJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNh
c2UgJyYnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZSgnPicpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAg
IGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpPcGVyYXRvck5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc8JykpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotICAgICAgICAgICAgaWYgKGNvbnN1
bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJh
dG9yTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9y
TmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgY29uc3VtZSgnKycpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJy0nOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGNvbnN1bWUoJy0nKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICd8JzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJh
dG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpJbnZhbGlkKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICcqJzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFt
ZSk7Ci0KLSAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNh
c2UgJyUnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICchJzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJh
dG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnfic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAg
ICAgIGNhc2UgJ14nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6Ok9wZXJhdG9yKTsKLQotICAgIGNhc2UgJ2knOgotICAgICAgICBpZiAoIWNvbnN1bWUo
J2YnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SWYpOwotCi0gICAgY2FzZSAnYyc6Ci0gICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDYXNlKTsKLQotICAgICAgICBjYXNl
ICdlJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24n
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpR
dWFsaWZpZXIpOwotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpDb21wdXRlKTsKLSAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlICd0JzoKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkNvbnRpbnVlKTsKLSAgICAgICAgICAgICAgICBjYXNlICdzJzoKLSAg
ICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LQotICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29uc3QpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbicpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb25z
dGFudCk7Ci0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICB9Ci0KLSAgICBjYXNlICdiJzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykp
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFj
b25zdW1lKCdhJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
aWYgKCFjb25zdW1lKCdrJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkJyZWFrKTsKLQotICAg
IGNhc2UgJ2QnOgotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdvJzoK
LSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEbyk7Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBj
YXNlICdmJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRlZmF1bHQpOwotICAgICAgICAgICAgY2FzZSAndic6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2kn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRldmljZSk7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0KLSAgICBjYXNlICdmJzoKLSAgICAgICAgc3dp
dGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpGb3IpOwotICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdtJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRl
bnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGcmFnbWVudCk7Ci0gICAgICAgIGNhc2Ug
J2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotCi0gICAgICAgICAgICBz
d2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpGYWxsdGhyb3VnaCk7Ci0KLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RmFsc2UpOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2YnOgot
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdh
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihU
b2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgICAgICBjYXNlICd2JzoKLSAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGV2aWNlKTsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICB9Ci0KLSAgICBjYXNlICd3JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdo
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25z
dW1lKCdpJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OldoaWxlKTsKLQot
ICAgIGNhc2UgJ3InOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBj
YXNlICd0JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpSZXR1cm4pOwotICAgICAgICBjYXNlICdnJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIo
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UmVnaXN0ZXIpOwotICAgICAgICBjYXNlICdzJzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OlJlc3RyaWN0ZWQpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ24nOgotICAgICAgICBzd2l0Y2gg
KHBlZWsoKSkgewotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2JykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok5hdGl2
ZSk7Ci0gICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok51bGwpOwotICAg
ICAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpOdW1UaHJlYWRzKTsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2knOgot
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdu
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgIH0KLQotICAgIGNhc2UgJ3YnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3In
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3gnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VmVydGV4KTsKLQot
ICAgIGNhc2UgJ1AnOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ1MnKSkKLSAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ1onKSkKLSAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ0Un
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UFNpemUpOwotCi0gICAgY2FzZSAndSc6Ci0gICAg
ICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnZicpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbScpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpRdWFsaWZpZXIpOwotCi0gICAgY2FzZSAncCc6Ci0gICAgICAg
IGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnbCcpKQot
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVu
dGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQcm90b2NvbCk7Ci0KLSAgICBjYXNlICdfJzoKLSAgICAg
ICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlVuZGVyc2NvcmUpOwotCi0g
ICAgY2FzZSAnYSc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ3Qn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYicpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6QXR0cmlidXRlKTsKLSAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBzaGlm
dCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkF1dG8pOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNh
c2UgJz4nOgotICAgICAgICBpZiAoY29uc3VtZSgnPicpKSB7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Umln
aHRTaGlmdEVxdWFscyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJp
Z2h0U2hpZnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvKTsKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgIGNh
c2UgJzwnOgotICAgICAgICBpZiAoY29uc3VtZSgnPCcpKSB7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVm
dFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVm
dFNoaWZ0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZXNzVGhhbk9yRXF1YWxUbyk7Ci0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWduKTsKLQotICAgIGNhc2UgJysn
OgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpQbHVzRXF1YWxzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJysnKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UGx1c1BsdXMpOwotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBsdXMpOwotCi0gICAgY2FzZSAnLSc6Ci0gICAgICAgIGlm
IChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1p
bnVzRXF1YWxzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJy0nKSkKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6TWludXNNaW51cyk7Ci0gICAgICAgIGlmIChjb25zdW1lKCc+
JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFycm93KTsKLSAgICAg
ICAgaWYgKGlzRGlnaXQocGVlaygpKSkgewotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VOdW1iZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJy4n
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VGbG9hdEFmdGVyRG90OwotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok1pbnVzKTsKLQotICAgIGNhc2UgJyonOgotICAgICAgICBpZiAo
Y29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaW1l
c0VxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U3Rhcik7Ci0KLSAg
ICBjYXNlICcvJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpEaXZpZGUpOwotCi0gICAgY2FzZSAnJSc6Ci0gICAgICAgIGlmIChjb25z
dW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok1vZEVxdWFs
cyk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TW9kKTsKLQotICAgIGNhc2Ug
J14nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2Vu
KFRva2VuOjpUeXBlOjpYb3JFcXVhbHMpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6Olhvcik7Ci0KLSAgICBjYXNlICcmJzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAg
ICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QW5kRXF1YWxzKTsKLSAgICAgICAg
aWYgKGNvbnN1bWUoJyYnKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
QW5kQW5kKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBbmQpOwotCi0gICAg
Y2FzZSAnfCc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6Ok9yRXF1YWxzKTsKLSAgICAgICAgaWYgKGNvbnN1bWUoJ3wnKSkK
LSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3JPcik7Ci0gICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3IpOwotCi0gICAgY2FzZSAnWyc6Ci0gICAgICAgIGlm
IChjb25zdW1lKCddJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNx
dWFyZUJyYWNrZXRQYWlyKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0
U3F1YXJlQnJhY2tldCk7Ci0KLSAgICBjYXNlICc9JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0n
KSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RXF1YWxDb21wYXJpc29u
KTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKTsKLQotICAg
IGNhc2UgJyEnOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpOb3RFcXVhbCk7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6RXhjbGFtYXRpb25Qb2ludCk7Ci0KLSAgICBjYXNlICc7JzoKLSAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTZW1pY29sb24pOwotCi0gICAgY2FzZSAneyc6Ci0gICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBj
YXNlICd9JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJh
Y2tldCk7Ci0KLSAgICBjYXNlICc6JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpDb2xvbik7Ci0KLSAgICBjYXNlICcsJzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpDb21tYSk7Ci0KLSAgICBjYXNlICcoJzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgY2FzZSAnKSc6Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICBjYXNlICddJzoK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpOwot
Ci0gICAgY2FzZSAnLic6Ci0gICAgICAgIGlmIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlRmxvYXRBZnRlckRvdDsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpU
eXBlOjpGdWxsU3RvcCk7Ci0KLSAgICBjYXNlICc/JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpRdWVzdGlvbk1hcmspOwotCi0gICAgY2FzZSAnfic6Ci0gICAgICAgIHJldHVy
biB0b2tlbihUb2tlbjo6VHlwZTo6VGlsZGUpOwotCi0gICAgY2FzZSAnQCc6Ci0gICAgICAgIHJl
dHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXQpOwotCi0gICAgY2FzZSAnMCc6Ci0gICAgY2FzZSAn
MSc6Ci0gICAgY2FzZSAnMic6Ci0gICAgY2FzZSAnMyc6Ci0gICAgY2FzZSAnNCc6Ci0gICAgY2Fz
ZSAnNSc6Ci0gICAgY2FzZSAnNic6Ci0gICAgY2FzZSAnNyc6Ci0gICAgY2FzZSAnOCc6Ci0gICAg
Y2FzZSAnOSc6IHsKLXBhcnNlTnVtYmVyOgotICAgICAgICBpZiAoY3VycmVudCA9PSAnMCcgJiYg
Y29uc3VtZSgneCcpKSB7Ci0gICAgICAgICAgICB3aGlsZSAoaXNIZXhhZGVjaW1hbENoYXJhY3Rl
cihwZWVrKCkpKQotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZSgndScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VWlu
dExpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnRMaXRl
cmFsKTsKLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAg
ICAgICAgICBzaGlmdCgpOwotCi0gICAgICAgIGlmIChjb25zdW1lKCcuJykpIHsKLXBhcnNlRmxv
YXRBZnRlckRvdDoKLSAgICAgICAgICAgIHdoaWxlIChpc0RpZ2l0KHBlZWsoKSkpCi0gICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoJ2YnKTsKLSAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChjb25zdW1lKCdmJykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkZsb2F0TGl0ZXJhbCk7Ci0KLSAgICAgICAgaWYgKGNvbnN1bWUoJ3UnKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VWludExpdGVyYWwpOwotCi0gICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCk7Ci0gICAgfQotCi0gICAgZGVm
YXVsdDogCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChtX29mZnNldCA9PSBtX3N0
cmluZ1ZpZXcubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RW5k
T2ZGaWxlKTsKLSAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkludmFsaWQpOwotfQotCi0K
LS8vIFdlIGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0d28gcHJvcGVydGllcyBvZiBVbmljb2RlOgot
Ly8gMS4gVGhlIGNvbnNpdHV0ZW50IFVURi0xNiBjb2RlIHVuaXRzIGZvciBhbGwgbm9uLUJNUCBj
b2RlIHBvaW50cyBhcmUgc3Vycm9nYXRlcywKLS8vIHdoaWNoIG1lYW5zIHdlJ2xsIG5ldmVyIHNl
ZSBhIGZhbHNlIG1hdGNoLiBJZiB3ZSBzZWUgYSBCTVAgY29kZSB1bml0LCB3ZQotLy8gcmVhbGx5
IGhhdmUgYSBCTVAgY29kZSBwb2ludC4KLS8vIDIuIEV2ZXJ5dGhpbmcgd2UncmUgbG9va2luZyBm
b3IgaXMgaW4gQk1QCi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgY29k
ZVVuaXQpCi17Ci0gICAgc3dpdGNoIChjb2RlVW5pdCkgewotICAgIGNhc2UgJyAnOgotICAgIGNh
c2UgJ1x0JzoKLSAgICBjYXNlICdccic6Ci0gICAgY2FzZSAnXG4nOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgaXNOZXdsaW5lKFVDaGFyIGNvZGVVbml0KQotewotICAgIHN3aXRj
aCAoY29kZVVuaXQpIHsKLSAgICBjYXNlICdccic6Ci0gICAgY2FzZSAnXG4nOgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
fQotCi1hdXRvIExleGVyOjpsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldChjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQpIC0+IExpbmVBbmRDb2x1
bW4KLXsKLSAgICAvLyBDb3VudGluZyBmcm9tIDEgdG8gbWF0Y2ggbW9zdCB0ZXh0IGVkaXRvcnMu
Ci0gICAgdW5zaWduZWQgbGluZU51bWJlciA9IDE7Ci0gICAgdW5zaWduZWQgY29sdW1uTnVtYmVy
ID0gMTsKLSAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IG9mZnNldCA8IHN0ZDo6bWluKHN0
cmluZ1ZpZXcubGVuZ3RoKCksIHRhcmdldE9mZnNldCk7ICsrb2Zmc2V0KSB7Ci0gICAgICAgICsr
Y29sdW1uTnVtYmVyOwotICAgICAgICBpZiAoaXNOZXdsaW5lKHN0cmluZ1ZpZXdbb2Zmc2V0XSkp
IHsKLSAgICAgICAgICAgICsrbGluZU51bWJlcjsKLSAgICAgICAgICAgIGNvbHVtbk51bWJlciA9
IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHsgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyIH07Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZ1ZpZXc+IHNvdXJjZUZyb21O
YW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZTEs
IGNvbnN0IFN0cmluZyogc291cmNlMikKLXsKLSAgICBzd2l0Y2ggKG5hbWVTcGFjZSkgewotICAg
IGNhc2UgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeToKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOgotICAgICAg
ICByZXR1cm4gU3RyaW5nVmlldyhzb3VyY2UxKTsKLSAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpO
YW1lU3BhY2UyOgotICAgICAgICBBU1NFUlQoc291cmNlMik7Ci0gICAgICAgIHJldHVybiBTdHJp
bmdWaWV3KCpzb3VyY2UyKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBMZXhlcjo6ZXJyb3JTdHJpbmco
RXJyb3IgZXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlMSwgY29uc3QgU3RyaW5nKiBzb3VyY2Uy
KQotewotICAgIGlmIChhdXRvIGNvZGVMb2NhdGlvbiA9IGVycm9yLmNvZGVMb2NhdGlvbigpKSB7
Ci0gICAgICAgIGlmIChhdXRvIHNvdXJjZSA9IHNvdXJjZUZyb21OYW1lU3BhY2UoY29kZUxvY2F0
aW9uLm5hbWVTcGFjZSgpLCBzb3VyY2UxLCBzb3VyY2UyKSkgewotICAgICAgICAgICAgYXV0byBs
aW5lQW5kQ29sdW1uID0gbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoKnNvdXJjZSwgZXJy
b3IuY29kZUxvY2F0aW9uKCkuc3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhsaW5lQW5kQ29sdW1uLmxpbmUsICc6JywgbGluZUFuZENvbHVtbi5jb2x1bW4sICI6
ICIsIGVycm9yLm1lc3NhZ2UoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVycm9y
Lm1lc3NhZ2UoKTsKLX0KLQotdm9pZCBMZXhlcjo6c2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygp
Ci17Ci0gICAgd2hpbGUgKG1fb2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAg
ICAgIGlmIChpc1doaXRlc3BhY2UobV9zdHJpbmdWaWV3W21fb2Zmc2V0XSkpCi0gICAgICAgICAg
ICArK21fb2Zmc2V0OwotICAgICAgICBlbHNlIGlmIChtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdID09
ICcvJyAmJiBtX29mZnNldCArIDEgPCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpIHsKLSAgICAgICAg
ICAgIGlmIChtX3N0cmluZ1ZpZXdbbV9vZmZzZXQgKyAxXSA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAvLyBMaW5lIGNvbW1lbnQKLSAgICAgICAgICAgICAgICBtX29mZnNldCArPSAyOwotICAg
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBcclxuIHRoaXMgbWFrZXMg
dGhlIGNvbW1lbnQgZW5kIG9uIHRoZSBcci4gSXQgaXMgZmluZSwgYXMgdGhlIFxuIGFmdGVyIHRo
YXQgaXMgc2ltcGxlIHdoaXRlc3BhY2UuCi0gICAgICAgICAgICAgICAgZm9yICggOyBtX29mZnNl
dCA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSAmJiAhaXNOZXdsaW5lKG1fc3RyaW5nVmlld1ttX29m
ZnNldF0pOyArK21fb2Zmc2V0KSB7IH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdHJpbmdW
aWV3W21fb2Zmc2V0ICsgMV0gPT0gJyonKSB7Ci0gICAgICAgICAgICAgICAgLy8gTG9uZyBjb21t
ZW50Ci0gICAgICAgICAgICAgICAgZm9yICggOyBtX29mZnNldCA8IG1fc3RyaW5nVmlldy5sZW5n
dGgoKSA7ICsrbV9vZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RyaW5nVmll
d1ttX29mZnNldF0gPT0gJyonICYmIG1fb2Zmc2V0ICsgMSA8IG1fc3RyaW5nVmlldy5sZW5ndGgo
KSAmJiBtX3N0cmluZ1ZpZXdbbV9vZmZzZXQgKyAxXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb2Zmc2V0ICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZjg0MzE3MWQyMTg5MjQ2NDQ2ZWEwYjVkMzExNDczZDY1MDhi
YWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDI4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBM
ZXhlcjsKLQotc3RydWN0IFRva2VuIHsKLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uOwot
ICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBJbnRMaXRlcmFsLAotICAg
ICAgICBVaW50TGl0ZXJhbCwKLSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBTdHJ1Y3Qs
Ci0gICAgICAgIFR5cGVkZWYsCi0gICAgICAgIEVudW0sCi0gICAgICAgIE9wZXJhdG9yLAotICAg
ICAgICBJZiwKLSAgICAgICAgRWxzZSwKLSAgICAgICAgQ29udGludWUsCi0gICAgICAgIEJyZWFr
LAotICAgICAgICBTd2l0Y2gsCi0gICAgICAgIENhc2UsCi0gICAgICAgIERlZmF1bHQsCi0gICAg
ICAgIEZhbGx0aHJvdWdoLAotICAgICAgICBGb3IsCi0gICAgICAgIFdoaWxlLAotICAgICAgICBE
bywKLSAgICAgICAgUmV0dXJuLAotICAgICAgICBOdWxsLAotICAgICAgICBUcnVlLAotICAgICAg
ICBGYWxzZSwKLSAgICAgICAgQ29uc3RhbnQsCi0gICAgICAgIERldmljZSwKLSAgICAgICAgVGhy
ZWFkZ3JvdXAsCi0gICAgICAgIFRocmVhZCwKLSAgICAgICAgU3BhY2UsCi0gICAgICAgIFZlcnRl
eCwKLSAgICAgICAgRnJhZ21lbnQsCi0gICAgICAgIENvbXB1dGUsCi0gICAgICAgIE51bVRocmVh
ZHMsCi0gICAgICAgIFNWSW5zdGFuY2VJRCwKLSAgICAgICAgU1ZWZXJ0ZXhJRCwKLSAgICAgICAg
UFNpemUsCi0gICAgICAgIFNWUG9zaXRpb24sCi0gICAgICAgIFNWSXNGcm9udEZhY2UsCi0gICAg
ICAgIFNWU2FtcGxlSW5kZXgsCi0gICAgICAgIFNWSW5uZXJDb3ZlcmFnZSwKLSAgICAgICAgU1ZU
YXJnZXQsCi0gICAgICAgIFNWRGVwdGgsCi0gICAgICAgIFNWQ292ZXJhZ2UsCi0gICAgICAgIFNW
RGlzcGF0Y2hUaHJlYWRJRCwKLSAgICAgICAgU1ZHcm91cElELAotICAgICAgICBTVkdyb3VwSW5k
ZXgsCi0gICAgICAgIFNWR3JvdXBUaHJlYWRJRCwKLSAgICAgICAgQXR0cmlidXRlLAotICAgICAg
ICBSZWdpc3RlciwKLSAgICAgICAgU3BlY2lhbGl6ZWQsCi0gICAgICAgIE5hdGl2ZSwKLSAgICAg
ICAgUmVzdHJpY3RlZCwKLSAgICAgICAgVW5kZXJzY29yZSwKLSAgICAgICAgQXV0bywKLSAgICAg
ICAgUHJvdG9jb2wsCi0gICAgICAgIENvbnN0LAotICAgICAgICBTdGF0aWMsCi0gICAgICAgIFF1
YWxpZmllciwKLSAgICAgICAgSWRlbnRpZmllciwKLSAgICAgICAgT3BlcmF0b3JOYW1lLAotICAg
ICAgICBFcXVhbHNTaWduLAotICAgICAgICBTZW1pY29sb24sCi0gICAgICAgIExlZnRDdXJseUJy
YWNrZXQsCi0gICAgICAgIFJpZ2h0Q3VybHlCcmFja2V0LAotICAgICAgICBDb2xvbiwKLSAgICAg
ICAgQ29tbWEsCi0gICAgICAgIExlZnRQYXJlbnRoZXNpcywKLSAgICAgICAgUmlnaHRQYXJlbnRo
ZXNpcywKLSAgICAgICAgU3F1YXJlQnJhY2tldFBhaXIsCi0gICAgICAgIExlZnRTcXVhcmVCcmFj
a2V0LAotICAgICAgICBSaWdodFNxdWFyZUJyYWNrZXQsCi0gICAgICAgIFN0YXIsCi0gICAgICAg
IExlc3NUaGFuU2lnbiwKLSAgICAgICAgR3JlYXRlclRoYW5TaWduLAotICAgICAgICBGdWxsU3Rv
cCwKLSAgICAgICAgUGx1c0VxdWFscywKLSAgICAgICAgTWludXNFcXVhbHMsCi0gICAgICAgIFRp
bWVzRXF1YWxzLAotICAgICAgICBEaXZpZGVFcXVhbHMsCi0gICAgICAgIE1vZEVxdWFscywKLSAg
ICAgICAgWG9yRXF1YWxzLAotICAgICAgICBBbmRFcXVhbHMsCi0gICAgICAgIE9yRXF1YWxzLAot
ICAgICAgICBSaWdodFNoaWZ0RXF1YWxzLAotICAgICAgICBMZWZ0U2hpZnRFcXVhbHMsCi0gICAg
ICAgIFBsdXNQbHVzLAotICAgICAgICBNaW51c01pbnVzLAotICAgICAgICBBcnJvdywKLSAgICAg
ICAgUXVlc3Rpb25NYXJrLAotICAgICAgICBPck9yLAotICAgICAgICBBbmRBbmQsCi0gICAgICAg
IE9yLAotICAgICAgICBYb3IsCi0gICAgICAgIEFuZCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFs
VG8sCi0gICAgICAgIEdyZWF0ZXJUaGFuT3JFcXVhbFRvLAotICAgICAgICBFcXVhbENvbXBhcmlz
b24sCi0gICAgICAgIE5vdEVxdWFsLAotICAgICAgICBSaWdodFNoaWZ0LAotICAgICAgICBMZWZ0
U2hpZnQsCi0gICAgICAgIFBsdXMsCi0gICAgICAgIE1pbnVzLAotICAgICAgICBEaXZpZGUsCi0g
ICAgICAgIE1vZCwKLSAgICAgICAgVGlsZGUsCi0gICAgICAgIEV4Y2xhbWF0aW9uUG9pbnQsCi0g
ICAgICAgIEF0LAotICAgICAgICBFbmRPZkZpbGUsCi0gICAgICAgIEludmFsaWQKLSAgICB9IHR5
cGUge1R5cGU6OkludmFsaWR9OwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVOYW1lKFR5
cGUpOwotCi0gICAgaW5saW5lIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyhjb25zdCBMZXhlciYpIGNv
bnN0OwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpOwotICAgIH0KLX07Ci0KLWlubGluZSBD
b2RlTG9jYXRpb246OkNvZGVMb2NhdGlvbihjb25zdCBUb2tlbiYgdG9rZW4pCi0gICAgOiBDb2Rl
TG9jYXRpb24odG9rZW4uY29kZUxvY2F0aW9uKQotewotfQotCi1jbGFzcyBMZXhlciB7Ci1wdWJs
aWM6Ci0gICAgTGV4ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBMZXhlcihTdHJpbmdWaWV3IHN0cmlu
Z1ZpZXcsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLSAgICAgICAgOiBtX3N0cmluZ1ZpZXco
c3RyaW5nVmlldykKLSAgICAgICAgLCBtX25hbWVTcGFjZShuYW1lU3BhY2UpCi0gICAgewotICAg
ICAgICBza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRzKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsw
XSA9IGNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFdID0g
Y29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwotICAgIH0KLQotICAgIExleGVyKGNvbnN0IExleGVy
JikgPSBkZWxldGU7Ci0gICAgTGV4ZXIoTGV4ZXImJikgPSBkZWZhdWx0OwotCi0gICAgTGV4ZXIm
IG9wZXJhdG9yPShjb25zdCBMZXhlciYpID0gZGVsZXRlOwotICAgIExleGVyJiBvcGVyYXRvcj0o
TGV4ZXImJikgPSBkZWZhdWx0OwotCi0KLSAgICBUb2tlbiBjb25zdW1lVG9rZW4oKQotICAgIHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBtX3JpbmdCdWZmZXJbbV9yaW5nQnVmZmVySW5kZXhdOwot
ICAgICAgICBtX3JpbmdCdWZmZXJbbV9yaW5nQnVmZmVySW5kZXhdID0gY29uc3VtZVRva2VuRnJv
bVN0cmVhbSgpOwotICAgICAgICBtX3JpbmdCdWZmZXJJbmRleCA9IChtX3JpbmdCdWZmZXJJbmRl
eCArIDEpICUgMjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBUb2tlbiBw
ZWVrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JpbmdCdWZmZXJbbV9yaW5nQnVm
ZmVySW5kZXhdOwotICAgIH0KLQotICAgIFRva2VuIHBlZWtGdXJ0aGVyKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3JpbmdCdWZmZXJbKG1fcmluZ0J1ZmZlckluZGV4ICsgMSkgJSAy
XTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRoaXMKLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzU3Ci0gICAgc3Ry
dWN0IFN0YXRlIHsKLSAgICAgICAgVG9rZW4gcmluZ0J1ZmZlclsyXTsKLSAgICAgICAgdW5zaWdu
ZWQgcmluZ0J1ZmZlckluZGV4OwotICAgICAgICB1bnNpZ25lZCBvZmZzZXQ7Ci0gICAgfTsKLQot
ICAgIFN0YXRlIHN0YXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFN0YXRlIHN0YXRlOwotICAg
ICAgICBzdGF0ZS5yaW5nQnVmZmVyWzBdID0gbV9yaW5nQnVmZmVyWzBdOwotICAgICAgICBzdGF0
ZS5yaW5nQnVmZmVyWzFdID0gbV9yaW5nQnVmZmVyWzFdOwotICAgICAgICBzdGF0ZS5yaW5nQnVm
ZmVySW5kZXggPSBtX3JpbmdCdWZmZXJJbmRleDsKLSAgICAgICAgc3RhdGUub2Zmc2V0ID0gbV9v
ZmZzZXQ7Ci0gICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0YXRl
KGNvbnN0IFN0YXRlJiBzdGF0ZSkKLSAgICB7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclswXSA9IHN0
YXRlLnJpbmdCdWZmZXJbMF07Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsxXSA9IHN0YXRlLnJpbmdC
dWZmZXJbMV07Ci0gICAgICAgIG1fcmluZ0J1ZmZlckluZGV4ID0gc3RhdGUucmluZ0J1ZmZlcklu
ZGV4OwotICAgICAgICBtX29mZnNldCA9IHN0YXRlLm9mZnNldDsKLQotICAgIH0KLQotICAgIHZv
aWQgc2V0U3RhdGUoU3RhdGUmJiBzdGF0ZSkKLSAgICB7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsw
XSA9IFdURk1vdmUoc3RhdGUucmluZ0J1ZmZlclswXSk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlclsx
XSA9IFdURk1vdmUoc3RhdGUucmluZ0J1ZmZlclsxXSk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlcklu
ZGV4ID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVySW5kZXgpOwotICAgICAgICBtX29mZnNldCA9
IFdURk1vdmUoc3RhdGUub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICBib29sIGlzRnVsbHlDb25zdW1l
ZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcGVlaygpLnR5cGUgPT0gVG9rZW46OlR5
cGU6OkVuZE9mRmlsZTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZXJyb3JTdHJpbmcoY29uc3QgVG9r
ZW4mIHRva2VuLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiUGFyc2UgZXJyb3IgYXQgbGluZSAiLCBsaW5lQW5kQ29sdW1uTnVtYmVyRnJv
bU9mZnNldChtX3N0cmluZ1ZpZXcsIHRva2VuLnN0YXJ0T2Zmc2V0KCkpLmxpbmUsICI6ICIsIG1l
c3NhZ2UpOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJpbmcgZXJyb3JTdHJpbmcoRXJyb3IsIGNv
bnN0IFN0cmluZyYgc291cmNlMSwgY29uc3QgU3RyaW5nKiBzb3VyY2UyID0gbnVsbHB0cik7Ci0K
LSAgICBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFj
ZTsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBzdHJ1Y3QgVG9rZW47Ci0gICAgVG9rZW4gY29u
c3VtZVRva2VuRnJvbVN0cmVhbSgpOwotCi0gICAgdm9pZCBza2lwV2hpdGVzcGFjZUFuZENvbW1l
bnRzKCk7Ci0KLSAgICBzdHJ1Y3QgTGluZUFuZENvbHVtbiB7Ci0gICAgICAgIHVuc2lnbmVkIGxp
bmU7Ci0gICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKLSAgICB9OwotICAgIHN0YXRpYyBMaW5lQW5k
Q29sdW1uIGxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmluZ1ZpZXcmLCB1
bnNpZ25lZCBvZmZzZXQpOwotCi0gICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7Ci0gICAgVG9r
ZW4gbV9yaW5nQnVmZmVyWzJdOwotICAgIHVuc2lnbmVkIG1fcmluZ0J1ZmZlckluZGV4IHsgMCB9
OwotICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwotICAgIEFTVDo6TmFtZVNwYWNlIG1fbmFt
ZVNwYWNlIHsgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotU3RyaW5n
VmlldyBUb2tlbjo6c3RyaW5nVmlldyhjb25zdCBMZXhlciYgbGV4ZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGxleGVyLm1fc3RyaW5nVmlldy5zdWJzdHJpbmcoY29kZUxvY2F0aW9uLnN0YXJ0T2Zm
c2V0KCksIGNvZGVMb2NhdGlvbi5lbmRPZmZzZXQoKSAtIGNvZGVMb2NhdGlvbi5zdGFydE9mZnNl
dCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNo
ZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2U3MWNmNTYyMDM0ZDU3
NDdlZDlhZTMzNDA0ZjAwYzFkMTY3Zjg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TGl0ZXJhbFR5cGVDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVS
ZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLXN0YXRpYyBB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKEFTVDo6
UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKQotewotICAgIGlmICghaXM8QVNUOjpUeXBl
UmVmZXJlbmNlPihyZXNvbHZhYmxlVHlwZS5yZXNvbHZlZFR5cGUoKSkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVS
ZWZlcmVuY2U+KHJlc29sdmFibGVUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAoIWlzPEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci19Ci0KLWNs
YXNzIExpdGVyYWxUeXBlQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLXByaXZh
dGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmIGZsb2F0TGl0ZXJhbFR5
cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvKiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBnZXROYXRpdmVUeXBlRGVjbGFyYXRpb24oZmxvYXRMaXRlcmFsVHlwZSk7Ci0gICAgICAgIEFT
U0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLT5jYW5SZXByZXNlbnRGbG9hdCgpKGZsb2F0TGl0ZXJhbFR5cGUudmFsdWUoKSkp
OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmIGludGVn
ZXJMaXRlcmFsVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiA9IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihpbnRlZ2VyTGl0ZXJhbFR5cGUp
OwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJU
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi0+Y2FuUmVwcmVzZW50SW50ZWdlcigpKGludGVnZXJMaXRl
cmFsVHlwZS52YWx1ZSgpKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGdldE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbih1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSk7Ci0gICAgICAgIEFTU0VS
VChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xh
cmF0aW9uLT5jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIoKSh1bnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS52YWx1ZSgpKSk7Ci0gICAgfQotfTsKLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAot
Ci12b2lkIGNoZWNrTGl0ZXJhbFR5cGVzKFByb2dyYW0mIHByb2dyYW0pCi17Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBMaXRlcmFsVHlwZUNoZWNrZXIoKS5WaXNpdG9yOjp2aXNpdChwcm9ncmFt
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotI2VuZGlmCi19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiMWNhYmY4OGE4OTBiMzcwNjNlOGEyMDBhNTBkODFkMmU2NDU3
OTBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBjaGVja0xpdGVyYWxU
eXBlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVDb250ZXh0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwZGE4
NGI4ZjQxMjAxYWZlYjYwOGQ0MTQxMDY1ZGRlMTk0ZDRlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVDb250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNv
bnRleHQuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1OYW1lQ29udGV4dDo6TmFtZUNvbnRleHQoTmFtZUNvbnRl
eHQqIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBhcmVudCkKLXsKLX0KLQotRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmlu
aXRpb24pCi17Ci0gICAgaWYgKGF1dG8gZXhpc3RpbmcgPSB0b3BMZXZlbEV4aXN0cyh0eXBlRGVm
aW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1
cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0iLCAqZXhpc3RpbmcpKTsKLSAgICB0eXBlRGVmaW5pdGlv
bi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byByZXN1bHQg
PSBtX3R5cGVzW2luZGV4XS5hZGQodHlwZURlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+KCkpOwotICAgIEFTU0VSVChyZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQodHlwZURl
ZmluaXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBO
YW1lQ29udGV4dDo6YWRkKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5p
dGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9IHRvcExldmVsRXhpc3RzKHN0cnVjdHVy
ZURlZmluaXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
KCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsICpleGlzdGluZykpOwotICAgIHN0cnVjdHVy
ZURlZmluaXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBp
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1
dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRkKHN0cnVjdHVyZURlZmluaXRpb24ubmFtZSgp
LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+KCkpOwot
ICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9
IHRvcExldmVsRXhpc3RzKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwg
KmV4aXN0aW5nKSk7Ci0gICAgZW51bWVyYXRpb25EZWZpbml0aW9uLnNldE5hbWVTcGFjZShtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdHlwZXNbaW5kZXhdLmFk
ZChlbnVtZXJhdGlvbkRlZmluaXRpb24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+KCkpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZW51bWVyYXRpb25EZWZpbml0
aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNv
bnRleHQ6OmFkZChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ewotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNw
YWNlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IHNlYXJjaFR5cGVzKGZ1bmN0aW9uRGVmaW5pdGlv
bi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0
ZSBuYW1lIGluIHByb2dyYW0uIiwgdHlwZS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBmdW5jdGlv
bkRlZmluaXRpb24uc2V0TmFtZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX2Z1bmN0aW9uc1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCks
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4s
IDE+KCkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGZ1bmN0aW9uRGVmaW5p
dGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVD
b250ZXh0OjphZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKQotewotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IHNlYXJjaFR5cGVzKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIHR5cGUtPmNvZGVMb2Nh
dGlvbigpKSk7Ci0gICAgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5zZXROYW1lU3BhY2UobV9j
dXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fZnVuY3Rpb25zW2luZGV4XS5h
ZGQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+KCkpOwotICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIHJl
dHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBOYW1lQ29udGV4dDo6YWRkKEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAg
YXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwot
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IHNlYXJjaEZ1bmN0aW9ucyhuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBs
aWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIGZ1bmN0aW9uLT5jb2RlTG9jYXRpb24oKSkpOwotICAg
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fdHlwZXNbaW5kZXhdLmFkZChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4s
IDE+KCkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5h
bWVDb250ZXh0OjphZGQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0
aW9uKQotewotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICBpZiAoYXV0byogZGVjbGFyYXRpb24gPSBsb2NhbEV4aXN0
cyh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCBkZWNsYXJhdGlvbi0+Y29k
ZUxvY2F0aW9uKCkpKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdmFyaWFibGVzLmFkZChTdHJpbmco
dmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpLCAmdmFyaWFibGVEZWNsYXJhdGlvbik7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4geyB9
OwotfQotCi1WZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+
IE5hbWVDb250ZXh0OjpnZXRUeXBlcyhjb25zdCBTdHJpbmcmIG5hbWUsIEFTVDo6TmFtZVNwYWNl
IGZyb21OYW1lc3BhY2UpCi17Ci0gICAgLy8gTmFtZWQgdHlwZXMgY2FuIG9ubHkgYmUgZGVjbGFy
ZWQgaW4gdGhlIGdsb2JhbCBuYW1lIGNvbnRleHQuCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAg
ICByZXR1cm4gbV9wYXJlbnQtPmdldFR5cGVzKG5hbWUsIGZyb21OYW1lc3BhY2UpOwotCi0gICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiByZXN1bHQ7
Ci0KLSAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tTmFtZXNw
YWNlKTsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV90eXBlc1tpbmRleF0uZmluZChuYW1lKTsKLSAg
ICBpZiAoaXRlcmF0b3IgIT0gbV90eXBlc1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgZm9yIChh
dXRvIHR5cGUgOiBpdGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5
cGUpOwotICAgIH0KLQotICAgIGlmIChmcm9tTmFtZXNwYWNlICE9IEFTVDo6TmFtZVNwYWNlOjpT
dGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
QVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgICAgIGl0ZXJhdG9yID0gbV90
eXBlc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fdHlwZXNb
aW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52
YWx1ZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHR5cGUpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gTmFtZUNvbnRleHQ6OmdldEZ1bmN0
aW9ucyhjb25zdCBTdHJpbmcmIG5hbWUsIEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2UpCi17
Ci0gICAgLy8gRnVuY3Rpb25zIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBnbG9iYWwgbmFt
ZSBjb250ZXh0LgotICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5n
ZXRGdW5jdGlvbnMobmFtZSwgZnJvbU5hbWVzcGFjZSk7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiByZXN1bHQ7Ci0KLSAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tTmFtZXNwYWNlKTsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9mdW5jdGlvbnNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAg
aWYgKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25zW2luZGV4XS5lbmQoKSkgewotICAgICAgICBmb3Ig
KGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
dHlwZSk7Ci0gICAgfQotCi0gICAgaWYgKGZyb21OYW1lc3BhY2UgIT0gQVNUOjpOYW1lU3BhY2U6
OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaXRlcmF0b3IgPSBt
X2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1f
ZnVuY3Rpb25zW2luZGV4XS5lbmQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBp
dGVyYXRvci0+dmFsdWUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiogTmFtZUNvbnRleHQ6OmdldFZhcmlhYmxlKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJsZXMuZmluZChuYW1lKTsKLSAgICBpZiAo
aXRlcmF0b3IgPT0gbV92YXJpYWJsZXMuZW5kKCkpIHsKLSAgICAgICAgaWYgKG1fcGFyZW50KQot
ICAgICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5nZXRWYXJpYWJsZShuYW1lKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci19Ci0K
LUFTVDo6TmFtZWRUeXBlKiBOYW1lQ29udGV4dDo6c2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBj
b25zdAotewotICAgIEFTU0VSVCghbV9wYXJlbnQpOwotICAgIGlmIChtX2N1cnJlbnROYW1lU3Bh
Y2UgPT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBmb3IgKGF1
dG8mIHR5cGVzIDogbV90eXBlcykgewotICAgICAgICAgICAgYXV0byBpdGVyID0gdHlwZXMuZmlu
ZChuYW1lKTsKLSAgICAgICAgICAgIGlmIChpdGVyICE9IHR5cGVzLmVuZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaXRlciA9IG1fdHlwZXNbaW5k
ZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV90eXBlc1tpbmRleF0uZW5kKCkpCi0g
ICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICBp
dGVyID0gbV90eXBlc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3R5cGVz
W2luZGV4XS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIE5hbWVD
b250ZXh0OjpzZWFyY2hGdW5jdGlvbnMoU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIEFTU0VS
VCghbV9wYXJlbnQpOwotICAgIGlmIChtX2N1cnJlbnROYW1lU3BhY2UgPT0gQVNUOjpOYW1lU3Bh
Y2U6OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9ucyA6IG1f
ZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBmdW5jdGlvbnMuZmluZChuYW1l
KTsKLSAgICAgICAgICAgIGlmIChpdGVyICE9IGZ1bmN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBdLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBhdXRvIGl0ZXIgPSBtX2Z1bmN0aW9uc1tp
bmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5k
KCkpCi0gICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsK
LSAgICBpdGVyID0gbV9mdW5jdGlvbnNbaW5kZXhdLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ZXIg
IT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVl
WzBdLmdldCgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8Q29k
ZUxvY2F0aW9uPiBOYW1lQ29udGV4dDo6dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25z
dAotewotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMobmFtZSkpCi0gICAgICAgIHJl
dHVybiB0eXBlLT5jb2RlTG9jYXRpb24oKTsKLSAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBzZWFy
Y2hGdW5jdGlvbnMobmFtZSkpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y29kZUxvY2F0aW9u
KCk7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uKiBOYW1lQ29udGV4dDo6bG9jYWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAg
IEFTU0VSVChtX3BhcmVudCk7Ci0gICAgYXV0byBpdGVyID0gbV92YXJpYWJsZXMuZmluZChuYW1l
KTsKLSAgICBpZiAoaXRlciAhPSBtX3ZhcmlhYmxlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDdkNTA2
YTJjN2QxNGQ0MjAzYmJkNjE1Y2JlNDZlY2ExZTI2ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0KLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBOYW1lZFR5cGU7Ci1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgVHlwZURl
ZmluaXRpb247Ci1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25E
ZWZpbml0aW9uOwotY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uOwotY2xhc3MgTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFZhcmlh
YmxlRGVjbGFyYXRpb247Ci0KLX0KLQotY2xhc3MgTmFtZUNvbnRleHQgewotcHVibGljOgotICAg
IE5hbWVDb250ZXh0KE5hbWVDb250ZXh0KiBwYXJlbnQgPSBudWxscHRyKTsKLQotICAgIHZvaWQg
c2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBjdXJyZW50TmFtZVNwYWNlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX3BhcmVudCk7Ci0gICAgICAgIG1fY3VycmVudE5hbWVTcGFj
ZSA9IGN1cnJlbnROYW1lU3BhY2U7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGFkZChBU1Q6OlR5cGVEZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFk
ZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
YWRkKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IGFkZChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBhZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAgRXhwZWN0ZWQ8
dm9pZCwgRXJyb3I+IGFkZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIEV4cGVj
dGVkPHZvaWQsIEVycm9yPiBhZGQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJik7Ci0KLSAgICBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+IGdldFR5cGVz
KGNvbnN0IFN0cmluZyYsIEFTVDo6TmFtZVNwYWNlIGZyb21OYW1lc3BhY2UpOwotICAgIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IGdl
dEZ1bmN0aW9ucyhjb25zdCBTdHJpbmcmLCBBU1Q6Ok5hbWVTcGFjZSBmcm9tTmFtZXNwYWNlKTsK
LSAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIGdldFZhcmlhYmxlKGNvbnN0IFN0cmluZyYp
OwotCi1wcml2YXRlOgotICAgIEFTVDo6TmFtZWRUeXBlKiBzZWFyY2hUeXBlcyhTdHJpbmcmIG5h
bWUpIGNvbnN0OwotICAgIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogc2VhcmNoRnVuY3Rpb25z
KFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxDb2RlTG9jYXRpb24+IHRv
cExldmVsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uKiBsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotCi0gICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4+
IG1fdHlwZXNbQVNUOjpuYW1lU3BhY2VDb3VudF07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiBt
X2Z1bmN0aW9uc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoTWFwPFN0cmluZywgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uKj4gbV92YXJpYWJsZXM7Ci0gICAgTmFtZUNvbnRleHQqIG1f
cGFyZW50OwotICAgIEFTVDo6TmFtZVNwYWNlIG1fY3VycmVudE5hbWVTcGFjZSB7IEFTVDo6TmFt
ZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMDBjYTU1OTVkZDY0ODFjMDFjYWI3Y2VmNTYwNWFhYmFjZGY0M2JjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldITFNMTmFtZVJlc29sdmVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHBy
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRm9y
TG9vcC5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xJZlN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNs
dWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJlcGxhY2VXaXRoLmgiCi0jaW5j
bHVkZSAiV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgiCi0jaW5jbHVkZSAiV0hMU0xTY29wZWRT
ZXRBZGRlci5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldI
TFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVu
Y2UuaCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLU5hbWVSZXNvbHZlcjo6TmFtZVJlc29sdmVyKE5hbWVD
b250ZXh0JiBuYW1lQ29udGV4dCkKLSAgICA6IG1fbmFtZUNvbnRleHQobmFtZUNvbnRleHQpCi17
Ci19Ci0KLU5hbWVSZXNvbHZlcjo6TmFtZVJlc29sdmVyKE5hbWVSZXNvbHZlciYgcGFyZW50UmVz
b2x2ZXIsIE5hbWVDb250ZXh0JiBuYW1lQ29udGV4dCkKLSAgICA6IG1fbmFtZUNvbnRleHQobmFt
ZUNvbnRleHQpCi0gICAgLCBtX3BhcmVudE5hbWVSZXNvbHZlcigmcGFyZW50UmVzb2x2ZXIpCi0g
ICAgLCBtX2N1cnJlbnROYW1lU3BhY2UocGFyZW50UmVzb2x2ZXIubV9jdXJyZW50TmFtZVNwYWNl
KQotewotfQotCi1OYW1lUmVzb2x2ZXI6On5OYW1lUmVzb2x2ZXIoKQotewotICAgIGlmIChoYXNF
cnJvcigpICYmIG1fcGFyZW50TmFtZVJlc29sdmVyKQotICAgICAgICBtX3BhcmVudE5hbWVSZXNv
bHZlci0+c2V0RXJyb3IocmVzdWx0KCkuZXJyb3IoKSk7Ci19Ci0KLXZvaWQgTmFtZVJlc29sdmVy
Ojp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAgU2NvcGVk
U2V0QWRkZXI8QVNUOjpUeXBlUmVmZXJlbmNlKj4gYWRkZXIobV90eXBlUmVmZXJlbmNlcywgJnR5
cGVSZWZlcmVuY2UpOwotICAgIGlmICghYWRkZXIuaXNOZXdFbnRyeSgpKSB7Ci0gICAgICAgIHNl
dEVycm9yKEVycm9yKCJDYW5ub3QgdXNlIHJlY3Vyc2l2ZSB0eXBlIGFyZ3VtZW50cy4iLCB0eXBl
UmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBWaXNpdG9yOjp2aXNpdCh0eXBlUmVmZXJlbmNlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmICh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2ZWRUeXBlKCkp
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYx
IFNob3VsZG4ndCB3ZSBrbm93IGJ5IG5vdyB3aGV0aGVyIHRoZSB0eXBlIGhhcyBiZWVuIHJlc29s
dmVkIG9yIG5vdD8KLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBjYW5kaWRhdGVzID0gbV9u
YW1lQ29udGV4dC5nZXRUeXBlcyh0eXBlUmVmZXJlbmNlLm5hbWUoKSwgbV9jdXJyZW50TmFtZVNw
YWNlKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpCi0gICAgICAgIFZp
c2l0b3I6OnZpc2l0KGNhbmRpZGF0ZSk7Ci0gICAgaWYgKGF1dG8gcmVzdWx0ID0gcmVzb2x2ZVR5
cGVPdmVybG9hZEltcGwoY2FuZGlkYXRlcywgdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkp
KQotICAgICAgICB0eXBlUmVmZXJlbmNlLnNldFJlc29sdmVkVHlwZSgqcmVzdWx0KTsKLSAgICBl
bHNlIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHR5cGUgYXJndW1l
bnRzLiIsIHR5cGVSZWZlcmVuY2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRl
eHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRo
aXMsIG5ld05hbWVDb250ZXh0KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZp
bml0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkp
Ci0gICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVyKTsK
LSAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bi5ibG9jaygpKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJs
b2NrKQotewotICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAg
ICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAg
bmV3TmFtZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KGJsb2NrKTsKLX0KLQotdm9pZCBOYW1lUmVz
b2x2ZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBpZiAoaGFzRXJy
b3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgewotICAgICAgICBOYW1lQ29udGV4dCBuYW1l
Q29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVz
b2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNr
RXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgIH0KLSAgICBpZiAoaGFzRXJy
b3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkp
IHsKLSAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAg
ICAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0g
ICAgICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVs
c2VCb2R5KCkpOwotICAgIH0KLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6V2hp
bGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5j
b25kaXRpb25hbCgpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNv
bHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250ZXh0KTsKLSAgICBuZXdOYW1lUmVz
b2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIE5h
bWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgd2hpbGVMb29wKQotewotICAgIHsK
LSAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgICAg
ICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7Ci0gICAg
ICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7
Ci0gICAgfQotCi0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgp
KTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkK
LXsKLSAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFt
ZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgIG5ld05h
bWVSZXNvbHZlci5WaXNpdG9yOjp2aXNpdChmb3JMb29wKTsKLX0KLQotdm9pZCBOYW1lUmVzb2x2
ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikK
LXsKLSAgICBpZiAoIW1fbmFtZUNvbnRleHQuYWRkKHZhcmlhYmxlRGVjbGFyYXRpb24pKSB7Ci0g
ICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVjbGFyZSBkdXBsaWNhdGUgdmFyaWFibGVz
LiIsIHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uKTsKLX0KLQot
dm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxl
UmVmZXJlbmNlKQotewotICAgIGlmICh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byogdmFyaWFibGUgPSBtX25hbWVDb250ZXh0Lmdl
dFZhcmlhYmxlKHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSkpCi0gICAgICAgIHZhcmlhYmxlUmVm
ZXJlbmNlLnNldFZhcmlhYmxlKCp2YXJpYWJsZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNldEVy
cm9yKEVycm9yKCJDYW5ub3QgZmluZCB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uIiwgdmFyaWFi
bGVSZWZlcmVuY2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVz
c2lvbikKLXsKLSAgICBpZiAoaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZG90RXhwcmVzc2lv
bi5iYXNlKCkpKSB7Ci0gICAgICAgIGF1dG8mIHZhcmlhYmxlUmVmZXJlbmNlID0gZG93bmNhc3Q8
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZG90RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBp
ZiAoIW1fbmFtZUNvbnRleHQuZ2V0VmFyaWFibGUodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpKSkg
ewotICAgICAgICAgICAgYXV0byBiYXNlTmFtZSA9IHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKTsK
LSAgICAgICAgICAgIGF1dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlw
ZXMoYmFzZU5hbWUsIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgICAgICAgICBpZiAoZW51bWVy
YXRpb25UeXBlcy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgIEFTVDo6TmFtZWRUeXBl
JiB0eXBlID0gZW51bWVyYXRpb25UeXBlc1swXTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8QVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2Fz
dDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gbWVtYmVyTmFtZSA9IGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24ubWVtYmVy
QnlOYW1lKG1lbWJlck5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCA9IEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjp3cmFw
KGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoYmFzZU5hbWUpLCBXVEZNb3Zl
KG1lbWJlck5hbWUpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24sICptZW1iZXIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbD4oZG90RXhwcmVzc2lvbiwgV1RGTW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiTm8gZW51bSBtZW1iZXIgbWF0Y2hl
cyB0aGUgdXNlZCBuYW1lLiIsIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvblR5cGVzLmlzRW1wdHkoKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChkb3RFeHByZXNzaW9uKTsK
LX0KLQotdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi17Ci0gICAgaWYgKGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIGVudW1lcmF0aW9uVHlwZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbC5sZWZ0KCksIG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgaWYgKGVudW1l
cmF0aW9uVHlwZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkzMzUgVGhpcyBuZWVkcyB0byB3b3JrIHdp
dGggdHlwZWRlZidlZCBlbnVtcy4KLSAgICAgICAgQVNUOjpOYW1lZFR5cGUmIHR5cGUgPSBlbnVt
ZXJhdGlvblR5cGVzWzBdOwotICAgICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KHR5cGUpKSB7Ci0gICAgICAgICAgICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51
bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+
KHR5cGUpOwotICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5p
dGlvbi5tZW1iZXJCeU5hbWUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJpZ2h0KCkpKSB7Ci0g
ICAgICAgICAgICAgICAgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnNldEVudW1lcmF0aW9uTWVt
YmVyKGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgKm1lbWJlcik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2V0RXJyb3IoRXJy
b3IoIkNhbm5vdCByZXNvbHZlIGVudW1lcmF0aW9uIG1lbWJlciBsaXRlcmFsLiIsIGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZl
cjo6dmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKQotewotICAgIE5hbWVDb250ZXh0IG5ld05hbWVDb250ZXh0KCZtX25hbWVDb250
ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKG5ld05hbWVDb250ZXh0KTsK
LSAgICBuZXdOYW1lUmVzb2x2ZXIuVmlzaXRvcjo6dmlzaXQobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbik7Ci19Ci0KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MTY3IE1ha2Ugc3VyZSBhbGwgdGhlIG5hbWVzIGhhdmUgYmVlbiByZXNvbHZlZC4K
LQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYgcHJv
Z3JhbSwgTmFtZVJlc29sdmVyJiBuYW1lUmVzb2x2ZXIpCi17Ci0gICAgZm9yIChhdXRvJiB0eXBl
RGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJl
c29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2UodHlwZURlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNl
KCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0
aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAg
cmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBzdHJ1
Y3R1cmVEZWZpbml0aW9uIDogcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpKSB7Ci0gICAg
ICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKHN0cnVjdHVyZURlZmluaXRpb24u
Z2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZp
c2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vy
cm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0K
LSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRp
b25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNw
YWNlKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5h
bWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAg
ICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5h
bWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBuYXRpdmVUeXBlRGVj
bGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKSkgewotICAgICAgICBu
YW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShuYXRpdmVUeXBlRGVjbGFyYXRpb24uZ2V0
KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJy
b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0KCk7Ci0gICAgfQot
ICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiByZXNvbHZlVHlwZU5h
bWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgTmFtZVJlc29sdmVyJiBuYW1lUmVzb2x2
ZXIpCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVT
cGFjZShmdW5jdGlvbkRlZmluaXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1l
UmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAg
IGlmIChuYW1lUmVzb2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVz
b2x2ZXIucmVzdWx0KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewotICAgICAg
ICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JB
bmRWaXNpdChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNv
bHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TmFtZVJlc29sdmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYTRlZGJkNmE3
ODdjM2JlMTQ5MTQ2OTBlMmE3ZTgyN2MwODY0NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xOYW1lUmVzb2x2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCi0jaW5j
bHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1jbGFzcyBOYW1lUmVzb2x2ZXIgOiBwdWJsaWMgVmlz
aXRvciB7Ci1wdWJsaWM6Ci0gICAgTmFtZVJlc29sdmVyKE5hbWVDb250ZXh0Jik7Ci0gICAgTmFt
ZVJlc29sdmVyKE5hbWVSZXNvbHZlciYsIE5hbWVDb250ZXh0Jik7Ci0KLSAgICB2aXJ0dWFsIH5O
YW1lUmVzb2x2ZXIoKTsKLQotICAgIHZvaWQgc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVT
cGFjZSBuYW1lU3BhY2UpIHsgbV9jdXJyZW50TmFtZVNwYWNlID0gbmFtZVNwYWNlOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6QmxvY2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZT
dGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJp
YWJsZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYpIG92ZXJyaWRlOwotCi0gICAgTmFtZUNvbnRleHQmIG1fbmFtZUNvbnRleHQ7Ci0gICAg
SGFzaFNldDxBU1Q6OlR5cGVSZWZlcmVuY2UqPiBtX3R5cGVSZWZlcmVuY2VzOwotICAgIE5hbWVS
ZXNvbHZlciogbV9wYXJlbnROYW1lUmVzb2x2ZXIgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYW1l
U3BhY2UgbV9jdXJyZW50TmFtZVNwYWNlIHsgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFy
eSB9OwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVOYW1lc0luVHlwZXMoUHJv
Z3JhbSYsIE5hbWVSZXNvbHZlciYpOwotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc29sdmVUeXBl
TmFtZXNJbkZ1bmN0aW9ucyhQcm9ncmFtJiwgTmFtZVJlc29sdmVyJik7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkNDcy
MTZjMjMyYzllZTBiZGFlNjI4MGM0NzAxMWRkZjM1NTlmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDg4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1Nw
YWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNM
UHJvZ3JhbS5oIgotI2luY2x1ZGUgPHd0Zi9kdG9hLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotI2RlZmluZSBQQVJT
RShuYW1lLCBlbGVtZW50LCAuLi4pIFwKLSAgICBhdXRvIG5hbWUgPSBwYXJzZSMjZWxlbWVudChf
X1ZBX0FSR1NfXyk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKG5hbWUuZXJyb3IoKSk7IFwKLQotI2RlZmluZSBDT05TVU1FX1RZUEUobmFtZSwgdHlw
ZSkgXAotICAgIGF1dG8gbmFtZSA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjp0eXBlKTsgXAot
ICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJv
cigpKTsKLQotI2RlZmluZSBQRUVLKG5hbWUpIFwKLSAgICBhdXRvIG5hbWUgPSBwZWVrKCk7IFwK
LSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJy
b3IoKSk7Ci0KLSNkZWZpbmUgUEVFS19GVVJUSEVSKG5hbWUpIFwKLSAgICBhdXRvIG5hbWUgPSBw
ZWVrRnVydGhlcigpOyBcCi0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChuYW1lLmVycm9yKCkpOwotCi1hdXRvIFBhcnNlcjo6cGFyc2UoUHJvZ3JhbSYgcHJv
Z3JhbSwgU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBQYXJzaW5nTW9kZSBtb2RlLCBBU1Q6Ok5hbWVT
cGFjZSBuYW1lU3BhY2UpIC0+IEV4cGVjdGVkPHZvaWQsIEVycm9yPgotewotICAgIG1fbGV4ZXIg
PSBMZXhlcihzdHJpbmdWaWV3LCBuYW1lU3BhY2UpOwotICAgIG1fbW9kZSA9IG1vZGU7Ci0KLSAg
ICB3aGlsZSAoIW1fbGV4ZXIuaXNGdWxseUNvbnN1bWVkKCkpIHsKLSAgICAgICAgYXV0byB0b2tl
biA9IG1fbGV4ZXIucGVlaygpOwotICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHsKLSAgICAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6SW52YWxpZDoKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNlbWljb2xvbjoKLSAgICAgICAgICAgIG1fbGV4ZXIu
Y29uc3VtZVRva2VuKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6VHlwZWRlZjogewotICAgICAgICAgICAgYXV0byB0eXBlRGVmaW5pdGlvbiA9IHBh
cnNlVHlwZURlZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICghdHlwZURlZmluaXRpb24pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGVEZWZpbml0aW9uLmVycm9y
KCkpOwotICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKCp0eXBlRGVmaW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigp
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46
OlR5cGU6OlN0cnVjdDogewotICAgICAgICAgICAgYXV0byBzdHJ1Y3R1cmVEZWZpbml0aW9uID0g
cGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIXN0cnVjdHVyZURl
ZmluaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHN0cnVjdHVy
ZURlZmluaXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHBy
b2dyYW0uYXBwZW5kKFdURk1vdmUoKnN0cnVjdHVyZURlZmluaXRpb24pKTsKLSAgICAgICAgICAg
IGlmICghYXBwZW5kUmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpFbnVtOiB7Ci0gICAgICAgICAgICBhdXRvIGVu
dW1lcmF0aW9uRGVmaW5pdGlvbiA9IHBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAoIWVudW1lcmF0aW9uRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoZW51bWVyYXRpb25EZWZpbml0aW9uLmVycm9yKCkpOwotICAgICAg
ICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCplbnVtZXJh
dGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpOYXRpdmU6IHsKLSAgICAgICAgICAgIGlmIChtX21vZGUgIT0gUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChtYWtlU3RyaW5nKCInbmF0
aXZlJyBjYW4ndCBleGlzdCBvdXRzaWRlIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiIpKTsKLSAg
ICAgICAgICAgIGF1dG8gZnVydGhlclRva2VuID0gcGVla0Z1cnRoZXIoKTsKLSAgICAgICAgICAg
IGlmICghZnVydGhlclRva2VuKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAg
ICAgICBpZiAoZnVydGhlclRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpUeXBlZGVmKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBwYXJzZU5hdGl2ZVR5
cGVEZWNsYXJhdGlvbigpOwotICAgICAgICAgICAgICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0
aW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmVycm9yKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0
ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmF0aXZlVHlwZURlY2xhcmF0aW9uKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24gPSBwYXJzZU5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICAgICAg
ICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5lcnJvcigpKTsKLSAg
ICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJv
cigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6
IHsKLSAgICAgICAgICAgIGF1dG8gZnVuY3Rpb25EZWZpbml0aW9uID0gcGFyc2VGdW5jdGlvbkRl
ZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICghZnVuY3Rpb25EZWZpbml0aW9uKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmdW5jdGlvbkRlZmluaXRpb24uZXJyb3Io
KSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1v
dmUoKmZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJv
cigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFBhcnNlcjo6ZmFpbChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIFRyeVRvUGVlayB0cnlUb1BlZWspIC0+IFVuZXhwZWN0ZWQ8RXJyb3I+Ci17Ci0g
ICAgaWYgKHRyeVRvUGVlayA9PSBUcnlUb1BlZWs6OlllcykgewotICAgICAgICBpZiAoYXV0byBu
ZXh0VG9rZW4gPSBwZWVrKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IobV9sZXhlci5lcnJvclN0cmluZygqbmV4dFRva2VuLCBtZXNzYWdlKSkpOwotICAgIH0KLSAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGxleDogIiwg
bWVzc2FnZSkpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBlZWsoKSAtPiBFeHBlY3RlZDxUb2tlbiwg
RXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmICh0b2tl
bi50eXBlICE9IFRva2VuOjpUeXBlOjpJbnZhbGlkICYmIHRva2VuLnR5cGUgIT0gVG9rZW46OlR5
cGU6OkVuZE9mRmlsZSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFp
bCgiQ2Fubm90IGNvbnN1bWUgdG9rZW4iX3N0ciwgVHJ5VG9QZWVrOjpObyk7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwZWVrRnVydGhlcigpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBh
dXRvIHRva2VuID0gbV9sZXhlci5wZWVrRnVydGhlcigpOwotICAgIGlmICh0b2tlbi50eXBlICE9
IFRva2VuOjpUeXBlOjpJbnZhbGlkICYmIHRva2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkVuZE9m
RmlsZSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFpbCgiQ2Fubm90
IGNvbnN1bWUgdHdvIHRva2VucyJfc3RyLCBUcnlUb1BlZWs6Ok5vKTsKLX0KLQotdGVtcGxhdGUg
PFRva2VuOjpUeXBlIHQsIFRva2VuOjpUeXBlLi4uIHRzPgotc3RydWN0IFR5cGVzIHsKLSAgICBz
dGF0aWMgYm9vbCBpbmNsdWRlcyhUb2tlbjo6VHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHQgPT0gdHlwZSB8fCBUeXBlczx0cy4uLj46OmluY2x1ZGVzKHR5cGUpOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQotICAg
IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9rZW46OnR5cGVOYW1lKHQpLCAiLCAiKTsKLSAg
ICAgICAgVHlwZXM8dHMuLi4+OjphcHBlbmROYW1lVG8oYnVpbGRlcik7Ci0gICAgfQotfTsKLXRl
bXBsYXRlIDxUb2tlbjo6VHlwZSB0Pgotc3RydWN0IFR5cGVzPHQ+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbmNsdWRlcyhUb2tlbjo6VHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHQgPT0g
dHlwZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmROYW1lVG8oU3RyaW5nQnVpbGRl
ciYgYnVpbGRlcikKLSAgICB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFt
ZSh0KSk7Ci0gICAgfQotfTsKLQotCi1ib29sIFBhcnNlcjo6cGVla1R5cGUoVG9rZW46OlR5cGUg
dHlwZSkKLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgcmV0dXJuIHRv
a2VuLnR5cGUgPT0gdHlwZTsKLX0KLQotdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgot
Ym9vbCBQYXJzZXI6OnBlZWtUeXBlcygpCi17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVl
aygpOwotICAgIHJldHVybiBUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRva2VuLnR5cGUpOwot
fQotCi1zdGQ6Om9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlw
ZSkKLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgaWYgKHRva2VuLnR5
cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4oKSB9Owot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0
eXBlcz4KLXN0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZXMoKQotewotICAgIGF1
dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBpZiAoVHlwZXM8dHlwZXMuLi4+OjppbmNs
dWRlcyh0b2tlbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4o
KSB9OwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb25zdW1l
VHlwZShUb2tlbjo6VHlwZSB0eXBlKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAg
YXV0byB0b2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUg
PT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAgICByZXR1cm4gZmFpbChtYWtl
U3RyaW5nKCJVbmV4cGVjdGVkIHRva2VuIChleHBlY3RlZCAiLCBUb2tlbjo6dHlwZU5hbWUodHlw
ZSksICIgZ290ICIsIFRva2VuOjp0eXBlTmFtZSh0b2tlbi50eXBlKSwgIikiKSk7Ci19Ci0KLXRl
bXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KLWF1dG8gUGFyc2VyOjpjb25zdW1lVHlwZXMo
KSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+Ci17Ci0gICAgYXV0byBidWlsZEV4cGVjdGVkU3Ry
aW5nID0gWyZdKCkgLT4gU3RyaW5nIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiWyIpOwotICAgICAgICBUeXBlczx0eXBlcy4uLj46OmFw
cGVuZE5hbWVUbyhidWlsZGVyKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIl0iKTsKLSAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9OwotCi0gICAgYXV0byB0b2tlbiA9
IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0gICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVk
ZXModG9rZW4udHlwZSkpCi0gICAgICAgIHJldHVybiB7IHRva2VuIH07Ci0gICAgcmV0dXJuIGZh
aWwobWFrZVN0cmluZygiVW5leHBlY3RlZCB0b2tlbiAoZXhwZWN0ZWQgb25lIG9mICIsIGJ1aWxk
RXhwZWN0ZWRTdHJpbmcoKSwgIiBnb3QgIiwgVG9rZW46OnR5cGVOYW1lKHRva2VuLnR5cGUpLCAi
KSIpKTsKLX0KLQotc3RhdGljIGludCBkaWdpdFZhbHVlKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAg
ICBpZiAoY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknKQotICAgICAgICByZXR1
cm4gY2hhcmFjdGVyIC0gJzAnOwotICAgIGlmIChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3Rl
ciA8PSAnZicpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXIgLSAnYScgKyAxMDsKLSAgICByZXR1
cm4gY2hhcmFjdGVyIC0gJ0EnICsgMTA7Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDxpbnQsIEVycm9y
PiBpbnRMaXRlcmFsVG9JbnQoU3RyaW5nVmlldyB0ZXh0KQotewotICAgIGJvb2wgbmVnYXRlID0g
ZmFsc2U7Ci0gICAgaWYgKHRleHQuc3RhcnRzV2l0aCgiLSJfc3RyKSkgewotICAgICAgICBuZWdh
dGUgPSB0cnVlOwotICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMSk7Ci0gICAgfQotICAg
IGludCBiYXNlID0gMTA7Ci0gICAgaWYgKHRleHQuc3RhcnRzV2l0aCgiMHgiX3N0cikpIHsKLSAg
ICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDIpOwotICAgICAgICBiYXNlID0gMTY7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBmb3IgKGF1dG8gY29kZVBvaW50IDog
dGV4dC5jb2RlUG9pbnRzKCkpIHsKLSAgICAgICAgdW5zaWduZWQgZGlnaXQgPSBkaWdpdFZhbHVl
KGNvZGVQb2ludCk7Ci0gICAgICAgIGF1dG8gcHJldmlvdXMgPSByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdCA9IHJlc3VsdCAqIGJhc2UgKyBkaWdpdDsKLSAgICAgICAgaWYgKHJlc3VsdCA8IHByZXZp
b3VzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmco
ImludCBsaXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgfQotICAg
IGlmIChuZWdhdGUpIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoaW50NjRfdCkgPiBz
aXplb2YodW5zaWduZWQpICYmIHNpemVvZihpbnQ2NF90KSA+IHNpemVvZihpbnQpLCAiVGhpcyBj
b2RlIHdvdWxkIGJlIHdyb25nIG90aGVyd2lzZSIpOwotICAgICAgICBpbnQ2NF90IGludFJlc3Vs
dCA9IC1zdGF0aWNfY2FzdDxpbnQ2NF90PihyZXN1bHQpOwotICAgICAgICBpZiAoaW50UmVzdWx0
IDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiaW50
IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsKLSAgICAgICAgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8aW50PihpbnRSZXN1bHQpIH07Ci0gICAgfQotICAgIGlmIChyZXN1bHQg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJpbnQgbGl0
ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAgIHJldHVybiB7IHN0YXRp
Y19jYXN0PGludD4ocmVzdWx0KSB9OwotfQotCi1zdGF0aWMgRXhwZWN0ZWQ8dW5zaWduZWQsIEVy
cm9yPiB1aW50TGl0ZXJhbFRvVWludChTdHJpbmdWaWV3IHRleHQpCi17Ci0gICAgdW5zaWduZWQg
YmFzZSA9IDEwOwotICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoIjB4Il9zdHIpKSB7Ci0gICAgICAg
IHRleHQgPSB0ZXh0LnN1YnN0cmluZygyKTsKLSAgICAgICAgYmFzZSA9IDE2OwotICAgIH0KLSAg
ICBBU1NFUlQodGV4dC5lbmRzV2l0aCgidSIpKTsKLSAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmco
MCwgdGV4dC5sZW5ndGgoKSAtIDEpOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9y
IChhdXRvIGNvZGVQb2ludCA6IHRleHQuY29kZVBvaW50cygpKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGRpZ2l0ID0gZGlnaXRWYWx1ZShjb2RlUG9pbnQpOwotICAgICAgICBhdXRvIHByZXZpb3VzID0g
cmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgZGlnaXQ7Ci0gICAgICAg
IGlmIChyZXN1bHQgPCBwcmV2aW91cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChFcnJvcihtYWtlU3RyaW5nKCJ1aW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91
bmRzIikpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgcmVzdWx0IH07Ci19Ci0KLXN0YXRpYyBFeHBl
Y3RlZDxmbG9hdCwgRXJyb3I+IGZsb2F0TGl0ZXJhbFRvRmxvYXQoU3RyaW5nVmlldyB0ZXh0KQot
ewotICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZURvdWJs
ZSh0ZXh0LCBwYXJzZWRMZW5ndGgpOwotICAgIGlmIChwYXJzZWRMZW5ndGggIT0gdGV4dC5sZW5n
dGgoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIkNh
bm5vdCBwYXJzZSBmbG9hdCAiLCB0ZXh0KSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4ocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKSAt
PiBFeHBlY3RlZDxWYXJpYW50PGludCwgdW5zaWduZWQ+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGlu
dGVncmFsTGl0ZXJhbFRva2VuID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBlOjpJbnRMaXRlcmFs
LCBUb2tlbjo6VHlwZTo6VWludExpdGVyYWw+KCk7Ci0gICAgaWYgKCFpbnRlZ3JhbExpdGVyYWxU
b2tlbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbFRva2Vu
LmVycm9yKCkpOwotCi0gICAgc3dpdGNoIChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+dHlwZSkgewot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byByZXN1bHQg
PSBpbnRMaXRlcmFsVG9JbnQoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhl
cikpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQg
fX07Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7Ci0gICAg
fQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKGludGVncmFsTGl0ZXJhbFRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dWludExpdGVyYWxUb1VpbnQoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhl
cikpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQg
fX07Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7Ci0gICAg
fQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0
ZXJhbCgpIC0+IEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4KLXsKLSAgICBhdXRvIGludGVncmFs
TGl0ZXJhbCA9IGNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWludGVncmFsTGl0
ZXJhbCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbC5lcnJv
cigpKTsKLSAgICBhdXRvIHJlc3VsdCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShp
bnQgeCkgLT4gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gewotICAgICAgICBpZiAoeCA8IDApCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4geDsKLSAgICB9
LCBbXSh1bnNpZ25lZCB4KSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB7Ci0gICAgICAgIHJl
dHVybiB4OwotICAgIH0pLCAqaW50ZWdyYWxMaXRlcmFsKTsKLSAgICBpZiAocmVzdWx0KQotICAg
ICAgICByZXR1cm4gKnJlc3VsdDsKLSAgICByZXR1cm4gZmFpbCgiaW50IGxpdGVyYWwgaXMgbmVn
YXRpdmUiX3N0cik7Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+IHJlY29n
bml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpCi17Ci0gICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBpZiAoc3RyaW5nVmlldy5sZW5ndGgoKSA8IDEpCi0g
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTaW1wbGUgdW5z
aWduZWQgbGl0ZXJhbCAiLCBzdHJpbmdWaWV3LCAiIGlzIHRvbyBzaG9ydCIpKSk7Ci0gICAgZm9y
IChhdXRvIGNvZGVQb2ludCA6IHN0cmluZ1ZpZXcuY29kZVBvaW50cygpKSB7Ci0gICAgICAgIGlm
IChjb2RlUG9pbnQgPCAnMCcgfHwgY29kZVBvaW50ID4gJzknKQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNpbXBsZSB1bnNpZ25lZCBsaXRlcmFs
ICIsIHN0cmluZ1ZpZXcsICIgaXNuJ3Qgb2YgdGhlIGZvcm0gWzAtOV0rIikpKTsKLSAgICAgICAg
YXV0byBwcmV2aW91cyA9IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTAgKyAo
Y29kZVBvaW50IC0gJzAnKTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNpbXBsZSB1bnNp
Z25lZCBsaXRlcmFsICIsIHN0cmluZ1ZpZXcsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAg
fQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUNvbnN0YW50RXhw
cmVzc2lvbigpIC0+IEV4cGVjdGVkPEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uLCBFcnJvcj4KLXsK
LSAgICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpJbnRM
aXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6VWludExpdGVyYWwsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpGbG9hdExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpOdWxsLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6VHJ1ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZhbHNlLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6SWRlbnRpZmllcj4oKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh0eXBlLmVycm9yKCkpOwotCi0gICAgc3dpdGNoICh0eXBlLT50
eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRv
IHZhbHVlID0gaW50TGl0ZXJhbFRvSW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAg
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVl
LmVycm9yKCkpOwotICAgICAgICByZXR1cm4ge3sgQVNUOjpJbnRlZ2VyTGl0ZXJhbCh7ICp0eXBl
IH0sICp2YWx1ZSkgfX07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFs
OiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB1aW50TGl0ZXJhbFRvVWludCh0eXBlLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHt7IEFTVDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07Ci0gICAgfQotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0gZmxv
YXRMaXRlcmFsVG9GbG9hdCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigp
KTsKLSAgICAgICAgcmV0dXJuIHt7IEFTVDo6RmxvYXRMaXRlcmFsKHsgKnR5cGUgfSwgKnZhbHVl
KSB9fTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0dXJu
IHsgQVNUOjpCb29sZWFuTGl0ZXJhbChXVEZNb3ZlKCp0eXBlKSwgdHJ1ZSkgfTsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpGYWxzZToKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpCb29sZWFuTGl0ZXJh
bChXVEZNb3ZlKCp0eXBlKSwgZmFsc2UpIH07Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NF
UlQodHlwZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIENPTlNV
TUVfVFlQRShmdWxsU3RvcCwgRnVsbFN0b3ApOwotICAgICAgICBDT05TVU1FX1RZUEUobmV4dCwg
SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiB7IEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKHsgKnR5cGUsICpuZXh0IH0sIHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmco
KSwgbmV4dC0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSB9OwotICAgIH0KLSAgICB9
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVBcmd1bWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6
VHlwZUFyZ3VtZW50LCBFcnJvcj4KLXsKLSAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgUEVFS19G
VVJUSEVSKGZ1cnRoZXJUb2tlbik7Ci0gICAgaWYgKG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6
VHlwZTo6SWRlbnRpZmllciB8fCBmdXJ0aGVyVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkZ1
bGxTdG9wKSB7Ci0gICAgICAgIFBBUlNFKGNvbnN0YW50RXhwcmVzc2lvbiwgQ29uc3RhbnRFeHBy
ZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIEFTVDo6VHlwZUFyZ3VtZW50KFdURk1vdmUoKmNvbnN0
YW50RXhwcmVzc2lvbikpOwotICAgIH0KLSAgICBDT05TVU1FX1RZUEUocmVzdWx0LCBJZGVudGlm
aWVyKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKnJlc3VsdCk7Ci0gICAgcmV0dXJuIEFT
VDo6VHlwZUFyZ3VtZW50KEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCByZXN1
bHQtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgQVNUOjpUeXBlQXJndW1lbnRzKCkp
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZUFyZ3VtZW50cygpIC0+IEV4cGVjdGVkPEFT
VDo6VHlwZUFyZ3VtZW50cywgRXJyb3I+Ci17Ci0gICAgQVNUOjpUeXBlQXJndW1lbnRzIHR5cGVB
cmd1bWVudHM7Ci0gICAgYXV0byBsZXNzVGhhblNpZ24gPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpM
ZXNzVGhhblNpZ24pOwotICAgIGlmICghbGVzc1RoYW5TaWduKQotICAgICAgICByZXR1cm4gdHlw
ZUFyZ3VtZW50czsKLQotICAgIGF1dG8gZ3JlYXRlclRoYW5TaWduID0gdHJ5VHlwZShUb2tlbjo6
VHlwZTo6R3JlYXRlclRoYW5TaWduKTsKLSAgICBpZiAoZ3JlYXRlclRoYW5TaWduKQotICAgICAg
ICByZXR1cm4gdHlwZUFyZ3VtZW50czsKLQotICAgIFBBUlNFKHR5cGVBcmd1bWVudCwgVHlwZUFy
Z3VtZW50KTsKLSAgICB0eXBlQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCp0eXBlQXJndW1lbnQp
KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGF1dG8gZ3JlYXRlclRoYW5TaWduID0g
dHJ5VHlwZShUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5TaWduKTsKLSAgICAgICAgaWYgKGdyZWF0
ZXJUaGFuU2lnbikKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIENPTlNVTUVfVFlQRShj
b21tYSwgQ29tbWEpOwotICAgICAgICBQQVJTRSh0eXBlQXJndW1lbnQsIFR5cGVBcmd1bWVudCk7
Ci0gICAgICAgIHR5cGVBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnR5cGVBcmd1bWVudCkpOwot
ICAgIH0KLQotICAgIHJldHVybiB0eXBlQXJndW1lbnRzOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4QWJicmV2aWF0
ZWQsIEVycm9yPgotewotICAgIGF1dG8gdG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRv
a2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldD4oKTsKLSAgICBpZiAoIXRv
a2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodG9rZW4uZXJyb3IoKSk7Ci0gICAg
aWYgKHRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAg
ICAgICBhdXRvIG51bUVsZW1lbnRzID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFs
KCk7Ci0gICAgICAgIGlmICghbnVtRWxlbWVudHMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJyb3IoKSk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShyaWdo
dFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgIHJldHVybiB7eyB7
ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9LCAqdG9rZW4sICpudW1FbGVtZW50cyB9fTsK
LSAgICB9Ci0gICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgc3RkOjpudWxsb3B0IH19
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBF
eHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIEVycm9yPgotewotICAgIGF1dG8gdG9r
ZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBU
b2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0
U3F1YXJlQnJhY2tldD4oKTsKLSAgICBpZiAoIXRva2VuKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQodG9rZW4uZXJyb3IoKSk7Ci0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpU
eXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAgICBhdXRvIG51bUVsZW1lbnRzID0gY29u
c3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgICAgIGlmICghbnVtRWxlbWVu
dHMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJyb3Io
KSk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJl
QnJhY2tldCk7Ci0gICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tl
dCB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9wdCwgKm51bUVsZW1lbnRzIH19OwotICAgIH0KLSAgICBh
dXRvIGFkZHJlc3NTcGFjZVRva2VuID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlw
ZTo6Q29uc3RhbnQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpEZXZpY2UsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpUaHJlYWRncm91cCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRocmVhZD4oKTsKLSAg
ICBpZiAoIWFkZHJlc3NTcGFjZVRva2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
YWRkcmVzc1NwYWNlVG9rZW4uZXJyb3IoKSk7Ci0gICAgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVz
c1NwYWNlOwotICAgIHN3aXRjaCAoYWRkcmVzc1NwYWNlVG9rZW4tPnR5cGUpIHsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRy
ZXNzU3BhY2U6OkNvbnN0YW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpEZXZpY2U6Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpEZXZp
Y2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgot
ICAgICAgICBhZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXA7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzU3BhY2VU
b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VGhyZWFkKTsKLSAgICAgICAgYWRkcmVzc1NwYWNl
ID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHsgYWRkcmVzc1NwYWNlIH0sIHN0ZDo6bnVs
bG9wdCB9fTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZSgpIC0+IEV4cGVjdGVkPFJlZjxB
U1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+Ci17Ci0gICAgYXV0byBhZGRyZXNzU3BhY2VUb2tlbiA9
IHRyeVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6Q29uc3RhbnQsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpEZXZpY2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cCwKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlRocmVhZD4oKTsKLQotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVu
dGlmaWVyKTsKLSAgICBQQVJTRSh0eXBlQXJndW1lbnRzLCBUeXBlQXJndW1lbnRzKTsKLQotICAg
IGlmIChhZGRyZXNzU3BhY2VUb2tlbikgewotICAgICAgICBBU1Q6OkFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2U7Ci0gICAgICAgIHN3aXRjaCAoYWRkcmVzc1NwYWNlVG9rZW4tPnR5cGUpIHsKLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6Q29uc3RhbnQ6Ci0gICAgICAgICAgICBhZGRyZXNzU3Bh
Y2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RGV2aWNlOgotICAgICAgICAgICAgYWRkcmVzc1NwYWNl
ID0gQVNUOjpBZGRyZXNzU3BhY2U6OkRldmljZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cDoKLSAgICAgICAgICAgIGFkZHJlc3NTcGFj
ZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWRncm91cDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUKGFkZHJlc3NTcGFjZVRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpUaHJlYWQpOwotICAgICAgICAgICAgYWRkcmVzc1NwYWNlID0g
QVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGF1dG8gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZpYXRlZCA9IFsmXShj
b25zdCBUeXBlU3VmZml4QWJicmV2aWF0ZWQmIHR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiYgcHJldmlvdXMpIC0+IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0g
ICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKmFkZHJlc3NTcGFjZVRva2VuLCB0eXBl
U3VmZml4QWJicmV2aWF0ZWQubG9jYXRpb24pOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlU3Vm
Zml4QWJicmV2aWF0ZWQudG9rZW4udHlwZSkgewotICAgICAgICAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6U3RhcjoKLSAgICAgICAgICAgICAgICByZXR1cm4geyBBU1Q6OlBvaW50ZXJUeXBlOjpjcmVh
dGUobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoKLSAgICAgICAgICAgICAg
ICByZXR1cm4geyBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCBhZGRy
ZXNzU3BhY2UsIFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBBU1NFUlQodHlwZVN1ZmZpeEFiYnJldmlhdGVkLnRva2VuLnR5cGUgPT0g
VG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
eyBBU1Q6OkFycmF5VHlwZTo6Y3JlYXRlKGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgKnR5
cGVTdWZmaXhBYmJyZXZpYXRlZC5udW1FbGVtZW50cykgfTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLSAgICAgICAgUEFSU0UoZmlyc3RUeXBlU3VmZml4QWJicmV2aWF0ZWQsIFR5cGVTdWZm
aXhBYmJyZXZpYXRlZCk7Ci0gICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiByZXN1bHQgPSBB
U1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0ZShXVEZNb3ZlKCphZGRyZXNzU3BhY2VUb2tlbiksIG5h
bWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZUFyZ3VtZW50
cykpOwotICAgICAgICBhdXRvIG5leHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlh
dGVkKCpmaXJzdFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAg
ICAgcmVzdWx0ID0gV1RGTW92ZShuZXh0KTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICAgICAgICAgIGlmIChuZXh0VG9rZW4tPnR5cGUg
IT0gVG9rZW46OlR5cGU6OlN0YXIKLSAgICAgICAgICAgICAgICAmJiBuZXh0VG9rZW4tPnR5cGUg
IT0gVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyCi0gICAgICAgICAgICAgICAgJiYgbmV4
dFRva2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUEFSU0UodHlwZVN1
ZmZpeEFiYnJldmlhdGVkLCBUeXBlU3VmZml4QWJicmV2aWF0ZWQpOwotICAgICAgICAgICAgLy8g
RklYTUU6IFRoZSBuZXN0aW5nIGhlcmUgbWlnaHQgYmUgaW4gdGhlIHdyb25nIG9yZGVyLgotICAg
ICAgICAgICAgbmV4dCA9IGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4QWJicmV2aWF0ZWQoKnR5cGVT
dWZmaXhBYmJyZXZpYXRlZCwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IFdURk1vdmUobmV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbnN0cnVjdFR5cGVGcm9tU3VmZml4Tm9uQWJicmV2aWF0
ZWQgPSBbJl0oY29uc3QgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkJiB0eXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQsIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYmIHByZXZpb3VzKSAtPiBSZWY8QVNUOjpV
bm5hbWVkVHlwZT4gewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24oKm5hbWUsIHR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZC5sb2NhdGlvbik7Ci0gICAgICAgIHN3aXRjaCAodHlwZVN1ZmZp
eE5vbkFiYnJldmlhdGVkLnRva2VuLnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
U3RhcjoKLSAgICAgICAgICAgIHJldHVybiB7IEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShsb2Nh
dGlvbiwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5hZGRyZXNzU3BhY2UsIFdURk1vdmUocHJl
dmlvdXMpKSB9OwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoK
LSAgICAgICAgICAgIHJldHVybiB7IEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobG9j
YXRpb24sICp0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQuYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHBy
ZXZpb3VzKSkgfTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlU3Vm
Zml4Tm9uQWJicmV2aWF0ZWQudG9rZW4udHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJy
YWNrZXQpOwotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVR5cGU6OmNyZWF0ZShsb2Nh
dGlvbiwgV1RGTW92ZShwcmV2aW91cyksICp0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQubnVtRWxl
bWVudHMpIH07Ci0gICAgICAgIH0KLSAgICB9OwotICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBy
ZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVuY2U6OmNyZWF0ZSgqbmFtZSwgbmFtZS0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlQXJndW1lbnRzKSk7Ci0gICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgUEVFSyhuZXh0VG9rZW4pOwotICAgICAgICBpZiAobmV4dFRv
a2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpTdGFyCi0gICAgICAgICAgICAmJiBuZXh0VG9rZW4t
PnR5cGUgIT0gVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyCi0gICAgICAgICAgICAmJiBu
ZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBQQVJTRSh0eXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQsIFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCk7Ci0gICAgICAgIC8vIEZJWE1FOiBU
aGUgbmVzdGluZyBoZXJlIG1pZ2h0IGJlIGluIHRoZSB3cm9uZyBvcmRlci4KLSAgICAgICAgYXV0
byBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhOb25BYmJyZXZpYXRlZCgqdHlwZVN1ZmZp
eE5vbkFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICByZXN1bHQgPSBXVEZN
b3ZlKG5leHQpOwotICAgIH0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VUeXBlRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6VHlwZURlZmlu
aXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFR5cGVkZWYpOwotICAg
IENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBDT05TVU1FX1RZUEUoZXF1YWxz
LCBFcXVhbHNTaWduKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUo
c2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgIHJldHVybiBBU1Q6OlR5cGVEZWZpbml0aW9uKHsg
Km9yaWdpbiwgKnNlbWljb2xvbiB9LCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5n
KCksIFdURk1vdmUoKnR5cGUpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQnVpbHRJblNlbWFu
dGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpCdWlsdEluU2VtYW50aWMsIEVycm9yPgotewotICAgIGF1
dG8gb3JpZ2luID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZJbnN0YW5j
ZUlELAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZWZXJ0ZXhJRCwKLSAgICAgICAgVG9rZW46OlR5
cGU6OlBTaXplLAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZQb3NpdGlvbiwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlNWSXNGcm9udEZhY2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlNhbXBsZUlu
ZGV4LAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBUb2tl
bjo6VHlwZTo6U1ZUYXJnZXQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkRlcHRoLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWRGlzcGF0
Y2hUaHJlYWRJRCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWR3JvdXBJRCwKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlNWR3JvdXBJbmRleCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJl
YWRJRD4oKTsKLSAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KG9yaWdpbi5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAob3JpZ2luLT50eXBlKSB7Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdElu
U2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJ
bnN0YW5jZUlEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVlZlcnRleElEOgotICAgICAgICBy
ZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJRCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UFNpemU6
Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpQU2l6ZSk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdp
biB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb24pOwotICAgIGNh
c2UgVG9rZW46OlR5cGU6OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VklzRnJvbnRGYWNlKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVlNhbXBsZUluZGV4OgotICAg
ICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlw
ZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMo
eyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVy
YWdlKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVlRhcmdldDogewotICAgICAgICBhdXRvIHRh
cmdldCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOyAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgwNyBNYWtlIHRoaXMgd29y
ayB3aXRoIHN0cmluZ3MgbGlrZSAiU1ZfVGFyZ2V0MCIuCi0gICAgICAgIGlmICghdGFyZ2V0KQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRhcmdldC5lcnJvcigpKTsKLSAgICAg
ICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFyZ2V0LCAqdGFyZ2V0KTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGlj
KHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVwdGgpOwot
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxl
OjpTVkNvdmVyYWdlKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6
Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQpOwotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFu
dGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJ
RCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZHcm91cEluZGV4OgotICAgICAgICByZXR1cm4g
QVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpW
YXJpYWJsZTo6U1ZHcm91cEluZGV4KTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQob3Jp
Z2luLT50eXBlID09IFRva2VuOjpUeXBlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1
cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGlj
OjpWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEKTsKLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZVJlc291cmNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OlJlc291cmNlU2VtYW50aWMs
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFJlZ2lzdGVyKTsKLSAgICBDT05T
VU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgQ09OU1VN
RV9UWVBFKGluZm8sIElkZW50aWZpZXIpOwotICAgIGF1dG8gaW5mb1N0cmluZ1ZpZXcgPSBpbmZv
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpOwotICAgIGlmIChpbmZvU3RyaW5nVmlldy5sZW5ndGgoKSA8
IDIgfHwgKGluZm9TdHJpbmdWaWV3WzBdICE9ICd1JwotICAgICAgICAmJiBpbmZvU3RyaW5nVmll
d1swXSAhPSAndCcKLSAgICAgICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ2InCi0gICAgICAg
ICYmIGluZm9TdHJpbmdWaWV3WzBdICE9ICdzJykpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFcnJvcihtYWtlU3RyaW5nKGluZm9TdHJpbmdWaWV3LnN1YnN0cmluZygwLCAxKSwgIiBp
cyBub3QgYSBrbm93biByZXNvdXJjZSB0eXBlICgndScsICd0JywgJ2InLCBvciAncycpIikpKTsK
LQotICAgIEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZSBtb2RlOwotICAgIHN3aXRjaCAoaW5m
b1N0cmluZ1ZpZXdbMF0pIHsKLSAgICBjYXNlICd1JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVz
b3VyY2VTZW1hbnRpYzo6TW9kZTo6VW5vcmRlcmVkQWNjZXNzVmlldzsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSAndCc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1v
ZGU6OlRleHR1cmU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ2InOgotICAgICAgICBtb2Rl
ID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpCdWZmZXI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgJ3MnOgotICAgICAgICBtb2RlID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2Rl
OjpTYW1wbGVyOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGF1dG8gaW5kZXggPSByZWNvZ25p
emVTaW1wbGVVbnNpZ25lZEludGVnZXIoaW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5nKDEpKTsKLSAg
ICBpZiAoIWluZGV4KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5kZXguZXJyb3Io
KSk7Ci0KLSAgICB1bnNpZ25lZCBzcGFjZSA9IDA7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5
cGU6OkNvbW1hKSkgewotICAgICAgICBDT05TVU1FX1RZUEUoc3BhY2VUb2tlbiwgSWRlbnRpZmll
cik7Ci0gICAgICAgIGF1dG8gc3BhY2VUb2tlblN0cmluZ1ZpZXcgPSBzcGFjZVRva2VuLT5zdHJp
bmdWaWV3KG1fbGV4ZXIpOwotICAgICAgICBTdHJpbmdWaWV3IHByZWZpeCB7ICJzcGFjZSIgfTsK
LSAgICAgICAgaWYgKCFzcGFjZVRva2VuU3RyaW5nVmlldy5zdGFydHNXaXRoKHByZWZpeCkpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2Vjb25k
IGFyZ3VtZW50IHRvIHJlc291cmNlIHNlbWFudGljICIsIHNwYWNlVG9rZW5TdHJpbmdWaWV3LCAi
IG5lZWRzIGJlIG9mIHRoZSBmb3JtICdzcGFjZTAnIikpKTsKLSAgICAgICAgaWYgKHNwYWNlVG9r
ZW5TdHJpbmdWaWV3Lmxlbmd0aCgpIDw9IHByZWZpeC5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTZWNvbmQgYXJndW1lbnQgdG8g
cmVzb3VyY2Ugc2VtYW50aWMgIiwgc3BhY2VUb2tlblN0cmluZ1ZpZXcsICIgbmVlZHMgYmUgb2Yg
dGhlIGZvcm0gJ3NwYWNlMCciKSkpOwotICAgICAgICBhdXRvIHNwYWNlVmFsdWUgPSByZWNvZ25p
emVTaW1wbGVVbnNpZ25lZEludGVnZXIoc3BhY2VUb2tlblN0cmluZ1ZpZXcuc3Vic3RyaW5nKHBy
ZWZpeC5sZW5ndGgoKSkpOwotICAgICAgICBpZiAoIXNwYWNlVmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc3BhY2VWYWx1ZS5lcnJvcigpKTsKLSAgICAgICAgc3BhY2Ug
PSAqc3BhY2VWYWx1ZTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNp
cywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gQVNUOjpSZXNvdXJjZVNlbWFudGlj
KHsgKm9yaWdpbiwgKnJpZ2h0UGFyZW50aGVzaXMgfSwgbW9kZSwgKmluZGV4LCBzcGFjZSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpIC0+
IEV4cGVjdGVkPEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLCBFcnJvcj4KLXsK
LSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBTcGVjaWFsaXplZCk7Ci0gICAgcmV0dXJuIEFTVDo6
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCpvcmlnaW4pOwotfQotCi1hdXRvIFBhcnNl
cjo6cGFyc2VTdGFnZUluT3V0U2VtYW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRT
ZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgQXR0cmlidXRlKTsK
LSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0g
ICAgYXV0byBpbmRleCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAg
IGlmICghaW5kZXgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbmRleC5lcnJvcigp
KTsKLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lz
KTsKLQotICAgIHJldHVybiBBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyh7ICpvcmlnaW4sICpyaWdo
dFBhcmVudGhlc2lzIH0sICppbmRleCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGlj
KCkgLT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KLXsK
LSAgICBpZiAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbG9uKSkKLSAgICAgICAgcmV0dXJuIHsg
bnVsbHB0ciB9OwotCi0gICAgUEVFSyh0b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkg
ewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkF0dHJpYnV0ZTogewotICAgICAgICBQQVJTRShyZXN1
bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7Ci0gICAgICAgIFBBUlNFKHJlc3VsdCwgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNl
bWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpSZWdpc3RlcjogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsK
LSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1
bHQpKSB9OwotICAgIH0KLSAgICBkZWZhdWx0OiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIEJ1
aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRp
Yz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKLSAgICB9Ci0gICAgfQotfQotQVNUOjpRdWFsaWZpZXJz
IFBhcnNlcjo6cGFyc2VRdWFsaWZpZXJzKCkKLXsKLSAgICBBU1Q6OlF1YWxpZmllcnMgcXVhbGlm
aWVyczsKLSAgICB3aGlsZSAoYXV0byBuZXh0ID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6UXVhbGlm
aWVyKSkgewotICAgICAgICBhdXRvIG5leHRTdHJpbmdWaWV3ID0gbmV4dC0+c3RyaW5nVmlldyht
X2xleGVyKTsKLSAgICAgICAgaWYgKCJub2ludGVycG9sYXRpb24iID09IG5leHRTdHJpbmdWaWV3
KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6Ok5vaW50ZXJw
b2xhdGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKCJub3BlcnNwZWN0aXZlIiA9PSBuZXh0U3RyaW5n
VmlldykKLSAgICAgICAgICAgIHF1YWxpZmllcnMuYXBwZW5kKEFTVDo6UXVhbGlmaWVyOjpOb3Bl
cnNwZWN0aXZlKTsKLSAgICAgICAgZWxzZSBpZiAoInVuaWZvcm0iID09IG5leHRTdHJpbmdWaWV3
KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6OlVuaWZvcm0p
OwotICAgICAgICBlbHNlIGlmICgiY2VudHJvaWQiID09IG5leHRTdHJpbmdWaWV3KQotICAgICAg
ICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6OkNlbnRyb2lkKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoInNhbXBsZSIgPT0gbmV4dFN0cmluZ1ZpZXcp
OwotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFsaWZpZXI6OlNhbXBsZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHF1YWxpZmllcnM7Ci19Ci0KLWF1dG8gUGFy
c2VyOjpwYXJzZVN0cnVjdHVyZUVsZW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlN0cnVjdHVyZUVs
ZW1lbnQsIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIEFTVDo6UXVhbGlmaWVy
cyBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBl
KTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0Uoc2VtYW50
aWMsIFNlbWFudGljKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwot
Ci0gICAgcmV0dXJuIEFTVDo6U3RydWN0dXJlRWxlbWVudCh7ICpvcmlnaW4sICpzZW1pY29sb24g
fSwgV1RGTW92ZShxdWFsaWZpZXJzKSwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXco
bV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqc2VtYW50aWMpKTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlU3RydWN0dXJlRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgU3RydWN0KTsK
LSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRDdXJseUJyYWNrZXQsIExlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgQVNUOjpTdHJ1Y3R1cmVF
bGVtZW50cyBzdHJ1Y3R1cmVFbGVtZW50czsKLSAgICB3aGlsZSAoIXBlZWtUeXBlKFRva2VuOjpU
eXBlOjpSaWdodEN1cmx5QnJhY2tldCkpIHsKLSAgICAgICAgUEFSU0Uoc3RydWN0dXJlRWxlbWVu
dCwgU3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgIHN0cnVjdHVyZUVsZW1lbnRzLmFwcGVuZChX
VEZNb3ZlKCpzdHJ1Y3R1cmVFbGVtZW50KSk7Ci0gICAgfQotCi0gICAgYXV0byByaWdodEN1cmx5
QnJhY2tldCA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0KLSAgICByZXR1cm4gQVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uKHsgKm9yaWdpbiwgcmlnaHRDdXJseUJyYWNrZXQgfSwgbmFtZS0+c3Ry
aW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVj
dGVkPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZ
UEUob3JpZ2luLCBFbnVtKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0K
LSAgICBhdXRvIHR5cGUgPSAoWyZdKCkgLT4gRXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+
LCBFcnJvcj4gewotICAgICAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29sb24pKSB7Ci0g
ICAgICAgICAgICBQQVJTRShwYXJzZWRUeXBlLCBUeXBlKTsKLSAgICAgICAgICAgIHJldHVybiBX
VEZNb3ZlKCpwYXJzZWRUeXBlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyBBU1Q6OlR5
cGVSZWZlcmVuY2U6OmNyZWF0ZSgqb3JpZ2luLCAiaW50Il9zdHIsIEFTVDo6VHlwZUFyZ3VtZW50
cygpKSB9OwotICAgIH0pKCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsKLQotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFj
a2V0LCBMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAgIGludDY0X3QgbmV4dFZhbHVlID0gMDsKLSAg
ICBQQVJTRShmaXJzdEVudW1lcmF0aW9uTWVtYmVyLCBFbnVtZXJhdGlvbk1lbWJlciwgbmV4dFZh
bHVlKTsKLSAgICBuZXh0VmFsdWUgPSBmaXJzdEVudW1lcmF0aW9uTWVtYmVyLT52YWx1ZSgpICsg
MTsKLQotICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uIHJlc3VsdCh7IH0sIG5hbWUtPnN0
cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZSkpOwotICAgIGF1dG8g
c3VjY2VzcyA9IHJlc3VsdC5hZGQoV1RGTW92ZSgqZmlyc3RFbnVtZXJhdGlvbk1lbWJlcikpOwot
ICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBhZGQgZW51bWVy
YXRpb24gbWVtYmVyIl9zdHIpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNv
bW1hKSkgewotICAgICAgICBQQVJTRShtZW1iZXIsIEVudW1lcmF0aW9uTWVtYmVyLCBuZXh0VmFs
dWUpOwotICAgICAgICBuZXh0VmFsdWUgPSBtZW1iZXItPnZhbHVlKCkgKyAxOwotICAgICAgICBz
dWNjZXNzID0gcmVzdWx0LmFkZChXVEZNb3ZlKCptZW1iZXIpKTsKLSAgICAgICAgaWYgKCFzdWNj
ZXNzKQotICAgICAgICAgICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBhZGQgZW51bWVyYXRpb24gbWVt
YmVyIl9zdHIpOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodEN1cmx5QnJhY2tldCwg
UmlnaHRDdXJseUJyYWNrZXQpOwotICAgIHJlc3VsdC51cGRhdGVDb2RlTG9jYXRpb24oeyAqb3Jp
Z2luLCAqcmlnaHRDdXJseUJyYWNrZXR9KTsKLQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUVudW1lcmF0aW9uTWVtYmVyKGludDY0X3QgZGVmYXVs
dFZhbHVlKSAtPiBFeHBlY3RlZDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyLCBFcnJvcj4KLXsKLSAg
ICBDT05TVU1FX1RZUEUoaWRlbnRpZmllciwgSWRlbnRpZmllcik7Ci0gICAgYXV0byBuYW1lID0g
aWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpOwotCi0gICAgaWYgKHRy
eVR5cGUoVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24pKSB7Ci0gICAgICAgIFBBUlNFKGNvbnN0YW50
RXhwcmVzc2lvbiwgQ29uc3RhbnRFeHByZXNzaW9uKTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+IHZhbHVlOwotICAgICAgICBjb25zdGFudEV4cHJlc3Npb24tPnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0g
ICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsm
XShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOwotICAg
ICAgICB9LCBbJl0oQVNUOjpGbG9hdExpdGVyYWwmKSB7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkJv
b2xlYW5MaXRlcmFsJikgewotICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmKSB7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJlbnVtIGluaXRpYWxpemF0aW9uIHZhbHVl
cyBjYW4gb25seSBiZSBhbiBpbnQgb3IgdWludCBjb25zdGFudC4iKSk7Ci0gICAgICAgIHJldHVy
biBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyKCppZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCAqdmFs
dWUpOwotICAgIH0KLSAgICByZXR1cm4gQVNUOjpFbnVtZXJhdGlvbk1lbWJlcigqaWRlbnRpZmll
ciwgV1RGTW92ZShuYW1lKSwgZGVmYXVsdFZhbHVlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIE5hdGl2ZSk7Ci0gICAg
Q09OU1VNRV9UWVBFKHBhcnNlZFR5cGVkZWYsIFR5cGVkZWYpOwotICAgIENPTlNVTUVfVFlQRShu
YW1lLCBJZGVudGlmaWVyKTsKLSAgICBQQVJTRSh0eXBlQXJndW1lbnRzLCBUeXBlQXJndW1lbnRz
KTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJu
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKHsgKm9yaWdpbiwgKnNlbWljb2xvbiB9LCBuYW1l
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMp
KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkg
LT4gRXhwZWN0ZWQ8QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUsIEVycm9yPgotewot
ICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIE51bVRocmVhZHMpOwotICAgIENPTlNVTUVfVFlQRShs
ZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBhdXRvIHdpZHRoID0gY29u
c3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCF3aWR0aCkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHdpZHRoLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9U
WVBFKGNvbW1hLCBDb21tYSk7Ci0KLSAgICBhdXRvIGhlaWdodCA9IGNvbnN1bWVOb25OZWdhdGl2
ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghaGVpZ2h0KQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoaGVpZ2h0LmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKHNlY29uZENv
bW1hLCBDb21tYSk7Ci0KLSAgICBhdXRvIGRlcHRoID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdy
YWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFkZXB0aCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGRlcHRoLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMs
IFJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlKHsgKm9yaWdpbiwgKnJpZ2h0UGFyZW50aGVzaXMgfSwgKndpZHRoLCAqaGVpZ2h0
LCAqZGVwdGgpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VBdHRyaWJ1dGVCbG9jaygpIC0+IEV4
cGVjdGVkPEFTVDo6QXR0cmlidXRlQmxvY2ssIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShs
ZWZ0U3F1YXJlQnJhY2tldCwgTGVmdFNxdWFyZUJyYWNrZXQpOwotCi0gICAgQVNUOjpBdHRyaWJ1
dGVCbG9jayByZXN1bHQ7Ci0KLSAgICB3aGlsZSAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0
U3F1YXJlQnJhY2tldCkpIHsKLSAgICAgICAgUEFSU0UobnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmli
dXRlLCBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOwotICAgICAgICByZXN1bHQuYXBwZW5k
KFdURk1vdmUoKm51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkpOwotICAgIH0KLQotICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBhcmFtZXRlcigp
IC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgYXV0
byBzdGFydE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBBU1Q6
OlF1YWxpZmllcnMgcXVhbGlmaWVycyA9IHBhcnNlUXVhbGlmaWVycygpOwotICAgIFBBUlNFKHR5
cGUsIFR5cGUpOwotCi0gICAgU3RyaW5nIG5hbWU7Ci0gICAgaWYgKGF1dG8gdG9rZW4gPSB0cnlU
eXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSkKLSAgICAgICAgbmFtZSA9IHRva2VuLT5zdHJp
bmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0KLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50
aWMpOwotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgp
OwotCi0gICAgcmV0dXJuIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbih7IHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShxdWFsaWZpZXJzKSwgeyBX
VEZNb3ZlKCp0eXBlKSB9LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIG51bGxw
dHIpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQYXJhbWV0ZXJzKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9ucywgRXJyb3I+Ci17Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9ucyBwYXJhbWV0ZXJzOwotCi0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywg
TGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpSaWdodFBh
cmVudGhlc2lzKSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocGFyYW1ldGVycyk7Ci0KLSAgICBQ
QVJTRShmaXJzdFBhcmFtZXRlciwgUGFyYW1ldGVyKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCht
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92ZSgqZmlyc3RQYXJh
bWV0ZXIpKSk7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0g
ICAgICAgIFBBUlNFKHBhcmFtZXRlciwgUGFyYW1ldGVyKTsKLSAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKnBh
cmFtZXRlcikpKTsKLSAgICB9Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywg
UmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24sIEVycm9yPgotewotICAgIFBBUlNFKGZ1bmN0aW9uRGVjbGFy
YXRpb24sIEZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIFBBUlNFKGJsb2NrLCBCbG9jayk7Ci0g
ICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKFdURk1vdmUoKmZ1bmN0aW9uRGVjbGFy
YXRpb24pLCBXVEZNb3ZlKCpibG9jaykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDb21wdXRl
RnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgUEFSU0UoYXR0cmlidXRlQmxv
Y2ssIEF0dHJpYnV0ZUJsb2NrKTsKLSAgICBDT05TVU1FX1RZUEUoY29tcHV0ZSwgQ29tcHV0ZSk7
Ci0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZp
ZXIpOwotICAgIFBBUlNFKHBhcmFtZXRlcnMsIFBhcmFtZXRlcnMpOwotICAgIFBBUlNFKHNlbWFu
dGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0
YXJ0T2Zmc2V0KCk7Ci0KLSAgICBib29sIGlzT3BlcmF0b3IgPSBmYWxzZTsKLSAgICByZXR1cm4g
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZSgqYXR0cmlidXRlQmxvY2spLCBBU1Q6
OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmll
dyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2Vt
YW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VWZXJ0
ZXhPckZyYWdtZW50RnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rp
b25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgYXV0byBlbnRyeVBvaW50ID0gY29uc3VtZVR5
cGVzPFRva2VuOjpUeXBlOjpWZXJ0ZXgsIFRva2VuOjpUeXBlOjpGcmFnbWVudD4oKTsKLSAgICBp
ZiAoIWVudHJ5UG9pbnQpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlbnRyeVBvaW50
LmVycm9yKCkpOwotICAgIGF1dG8gZW50cnlQb2ludFR5cGUgPSAoZW50cnlQb2ludC0+dHlwZSA9
PSBUb2tlbjo6VHlwZTo6VmVydGV4KSA/IEFTVDo6RW50cnlQb2ludFR5cGU6OlZlcnRleCA6IEFT
VDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0g
ICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHBhcmFtZXRlcnMs
IFBhcmFtZXRlcnMpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRv
IGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBib29sIGlz
T3BlcmF0b3IgPSBmYWxzZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsg
ZW50cnlQb2ludC0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgp
IH0sIHsgfSwgZW50cnlQb2ludFR5cGUsIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3
KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1h
bnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVJlZ3Vs
YXJGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRSh0eXBlLCBUeXBl
KTsKLQotICAgIGF1dG8gbmFtZSA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6SWRlbnRpZmll
ciwgVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZT4oKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOwotICAgIGF1dG8gaXNPcGVyYXRv
ciA9IG5hbWUtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZTsKLQotICAgIFBBUlNF
KHBhcmFtZXRlcnMsIFBhcmFtZXRlcnMpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1hbnRpYyk7
Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0K
LSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdU
Rk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9k
ZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigp
IC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09O
U1VNRV9UWVBFKG9yaWdpbiwgT3BlcmF0b3IpOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAg
IFBBUlNFKHBhcmFtZXRlcnMsIFBhcmFtZXRlcnMpOwotICAgIFBBUlNFKHNlbWFudGljLCBTZW1h
bnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0
KCk7Ci0KLSAgICBib29sIGlzT3BlcmF0b3IgPSB0cnVlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhl
ci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksICJvcGVy
YXRvciBjYXN0Il9zdHIsIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyks
IGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgot
ewotICAgIFBFRUsodG9rZW4pOwotICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpPcGVyYXRvcjoKLSAgICAgICAgcmV0dXJuIHBhcnNlT3BlcmF0b3JGdW5j
dGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VmVydGV4OgotICAgIGNh
c2UgVG9rZW46OlR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1cm4gcGFyc2VWZXJ0ZXhPckZy
YWdtZW50RnVuY3Rpb25EZWNsYXJhdGlvbigpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkxlZnRT
cXVhcmVCcmFja2V0OgotICAgICAgICByZXR1cm4gcGFyc2VDb21wdXRlRnVuY3Rpb25EZWNsYXJh
dGlvbigpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBwYXJzZVJlZ3VsYXJGdW5jdGlv
bkRlY2xhcmF0aW9uKCk7Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUobmF0aXZlLCBOYXRpdmUpOwotICAgIFBB
UlNFKGZ1bmN0aW9uRGVjbGFyYXRpb24sIEZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgIENPTlNV
TUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0KLSAgICByZXR1cm4gQVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoKmZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlQmxvY2soKSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4K
LXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBMZWZ0Q3VybHlCcmFja2V0KTsKLSAgICBQQVJT
RShyZXN1bHQsIEJsb2NrQm9keSk7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0Q3VybHlCcmFja2V0
LCBSaWdodEN1cmx5QnJhY2tldCk7Ci0gICAgcmVzdWx0LT51cGRhdGVDb2RlTG9jYXRpb24oeyAq
b3JpZ2luLCAqcmlnaHRDdXJseUJyYWNrZXQgfSk7Ci0gICAgcmV0dXJuIFdURk1vdmUoKnJlc3Vs
dCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUJsb2NrQm9keSgpIC0+IEV4cGVjdGVkPEFTVDo6
QmxvY2ssIEVycm9yPgotewotICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5z
dGFydE9mZnNldCgpOwotCi0gICAgQVNUOjpTdGF0ZW1lbnRzIHN0YXRlbWVudHM7Ci0gICAgd2hp
bGUgKCFwZWVrVHlwZXM8VG9rZW46OlR5cGU6OlJpZ2h0Q3VybHlCcmFja2V0LCBUb2tlbjo6VHlw
ZTo6Q2FzZSwgVG9rZW46OlR5cGU6OkRlZmF1bHQ+KCkpIHsKLSAgICAgICAgUEFSU0Uoc3RhdGVt
ZW50LCBTdGF0ZW1lbnQpOwotICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpzdGF0
ZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0
YXJ0T2Zmc2V0KCk7Ci0KLSAgICByZXR1cm4gQVNUOjpCbG9jayh7IHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShzdGF0ZW1lbnRzKSk7Ci19Ci0K
LWF1dG8gUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpJZlN0YXRl
bWVudCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgSWYpOwotICAgIENPTlNV
TUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoY29u
ZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lz
LCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBQQVJTRShib2R5LCBTdGF0ZW1lbnQpOwotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEFTVDo6U3RhdGVtZW50PiBlbHNlQm9keShudWxscHRyKTsKLSAgICBp
ZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6RWxzZSkpIHsKLSAgICAgICAgUEFSU0UocGFyc2VkRWxz
ZUJvZHksIFN0YXRlbWVudCk7Ci0gICAgICAgIGVsc2VCb2R5ID0gKCpwYXJzZWRFbHNlQm9keSku
bW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVy
LnBlZWsoKS5zdGFydE9mZnNldCgpOwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+PiBjYXN0QXJndW1lbnRzOwotICAgIGNhc3RBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
KmNvbmRpdGlvbmFsKSk7Ci0gICAgYXV0byBib29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpD
YWxsRXhwcmVzc2lvbj4oVG9rZW4oKm9yaWdpbiksICJib29sIl9zdHIsIFdURk1vdmUoY2FzdEFy
Z3VtZW50cykpOwotICAgIHJldHVybiBBU1Q6OklmU3RhdGVtZW50KHsgb3JpZ2luLT5zdGFydE9m
ZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShib29sQ2Fz
dCksIFdURk1vdmUoKmJvZHkpLCBXVEZNb3ZlKGVsc2VCb2R5KSk7Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVN3aXRjaFN0YXRlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6U3dpdGNoU3RhdGVtZW50
LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBTd2l0Y2gpOwotICAgIENPTlNV
TUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UodmFs
dWUsIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdo
dFBhcmVudGhlc2lzKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1
cmx5QnJhY2tldCk7Ci0KLSAgICBWZWN0b3I8QVNUOjpTd2l0Y2hDYXNlPiBzd2l0Y2hDYXNlczsK
LSAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgd2hpbGUgKG5leHRUb2tlbi0+dHlwZSAhPSBUb2tl
bjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQpIHsKLSAgICAgICAgUEFSU0Uoc3dpdGNoQ2FzZSwg
U3dpdGNoQ2FzZSk7Ci0gICAgICAgIHN3aXRjaENhc2VzLmFwcGVuZChXVEZNb3ZlKCpzd2l0Y2hD
YXNlKSk7Ci0gICAgICAgIFBFRUsobmV4dFRva2VuSW5Mb29wKTsKLSAgICAgICAgbmV4dFRva2Vu
ID0gbmV4dFRva2VuSW5Mb29wOwotICAgIH0KLQotICAgIGF1dG8gZW5kVG9rZW4gPSBtX2xleGVy
LmNvbnN1bWVUb2tlbigpOwotCi0gICAgcmV0dXJuIEFTVDo6U3dpdGNoU3RhdGVtZW50KHsgKm9y
aWdpbiwgZW5kVG9rZW4gfSwgV1RGTW92ZSgqdmFsdWUpLCBXVEZNb3ZlKHN3aXRjaENhc2VzKSk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN3aXRjaENhc2UoKSAtPiBFeHBlY3RlZDxBU1Q6OlN3
aXRjaENhc2UsIEVycm9yPgotewotICAgIGF1dG8gb3JpZ2luID0gY29uc3VtZVR5cGVzPFRva2Vu
OjpUeXBlOjpDYXNlLCBUb2tlbjo6VHlwZTo6RGVmYXVsdD4oKTsKLSAgICBpZiAoIW9yaWdpbikK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG9yaWdpbi5lcnJvcigpKTsKLQotICAgIHN3
aXRjaCAob3JpZ2luLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6Q2FzZTogewotICAg
ICAgICBQQVJTRSh2YWx1ZSwgQ29uc3RhbnRFeHByZXNzaW9uKTsKLSAgICAgICAgQ09OU1VNRV9U
WVBFKGNvbG9uLCBDb2xvbik7Ci0KLSAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrQm9keSk7Ci0K
LSAgICAgICAgcmV0dXJuIEFTVDo6U3dpdGNoQ2FzZSh7IG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAg
YmxvY2stPmNvZGVMb2NhdGlvbigpfSwgV1RGTW92ZSgqdmFsdWUpLCBXVEZNb3ZlKCpibG9jaykp
OwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVChvcmlnaW4tPnR5cGUgPT0g
VG9rZW46OlR5cGU6OkRlZmF1bHQpOwotICAgICAgICBDT05TVU1FX1RZUEUoY29sb24sIENvbG9u
KTsKLQotICAgICAgICBQQVJTRShibG9jaywgQmxvY2tCb2R5KTsKLQotICAgICAgICByZXR1cm4g
QVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9jYXRpb24sICBibG9jay0+Y29kZUxvY2F0
aW9uKCl9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKmJsb2NrKSk7Ci0gICAgfQotICAgIH0KLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlRm9yTG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6Rm9yTG9vcCwg
RXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgRm9yKTsKLSAgICBDT05TVU1FX1RZ
UEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgYXV0byBwYXJzZVJl
bWFpbmRlciA9IFsmXShVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+JiYgaW5pdGlhbGl6YXRpb24p
IC0+IEV4cGVjdGVkPEFTVDo6Rm9yTG9vcCwgRXJyb3I+IHsKLSAgICAgICAgQ09OU1VNRV9UWVBF
KHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpF
eHByZXNzaW9uPiBjb25kaXRpb24obnVsbHB0cik7Ci0gICAgICAgIGlmICghdHJ5VHlwZShUb2tl
bjo6VHlwZTo6U2VtaWNvbG9uKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZXhwcmVzc2lvbiA9
IHBhcnNlRXhwcmVzc2lvbigpKQotICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9ICgqZXhwcmVz
c2lvbikubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0gICAgICAgICAg
ICBDT05TVU1FX1RZUEUoc2Vjb25kU2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gaW5jcmVtZW50KG51bGxw
dHIpOwotICAgICAgICBpZiAoIXRyeVR5cGUoVG9rZW46OlR5cGU6OlJpZ2h0UGFyZW50aGVzaXMp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCkp
Ci0gICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gKCpleHByZXNzaW9uKS5tb3ZlVG9VbmlxdWVQ
dHIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShyaWdo
dFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICAgICAgfQotCi0gICAgICAgIFBB
UlNFKGJvZHksIFN0YXRlbWVudCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihvcmln
aW4tPmNvZGVMb2NhdGlvbiwgKCpib2R5KS0+Y29kZUxvY2F0aW9uKCkpOwotICAgICAgICByZXR1
cm4gQVNUOjpGb3JMb29wKGxvY2F0aW9uLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uKSwgV1RGTW92
ZShjb25kaXRpb24pLCBXVEZNb3ZlKGluY3JlbWVudCksIFdURk1vdmUoKmJvZHkpKTsKLSAgICB9
OwotCi0gICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9ucyA9IGJhY2t0cmFja2luZ1Njb3BlPEV4
cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIEVycm9yPj4oWyZdKCkg
ewotICAgICAgICByZXR1cm4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpOwotICAgIH0pOwot
ICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9ucykgewotICAgICAgICBVbmlxdWVSZWY8QVNUOjpT
dGF0ZW1lbnQ+IGRlY2xhcmF0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykp
OwotICAgICAgICByZXR1cm4gcGFyc2VSZW1haW5kZXIoV1RGTW92ZShkZWNsYXJhdGlvblN0YXRl
bWVudCkpOwotICAgIH0KLQotICAgIFBBUlNFKGVmZmVjdGZ1bEV4cHJlc3Npb24sIEVmZmVjdGZ1
bEV4cHJlc3Npb24pOwotCi0gICAgcmV0dXJuIHBhcnNlUmVtYWluZGVyKFdURk1vdmUoKmVmZmVj
dGZ1bEV4cHJlc3Npb24pKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlV2hpbGVMb29wKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpXaGlsZUxvb3AsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmln
aW4sIFdoaWxlKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50
aGVzaXMpOwotICAgIFBBUlNFKGNvbmRpdGlvbmFsLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1F
X1RZUEUocmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoYm9k
eSwgU3RhdGVtZW50KTsKLQotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihvcmlnaW4tPmNvZGVM
b2NhdGlvbiwgICgqYm9keSktPmNvZGVMb2NhdGlvbigpKTsKLSAgICByZXR1cm4gQVNUOjpXaGls
ZUxvb3AobG9jYXRpb24sIFdURk1vdmUoKmNvbmRpdGlvbmFsKSwgV1RGTW92ZSgqYm9keSkpOwot
fQotCi1hdXRvIFBhcnNlcjo6cGFyc2VEb1doaWxlTG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6RG9X
aGlsZUxvb3AsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIERvKTsKLSAgICBQ
QVJTRShib2R5LCBTdGF0ZW1lbnQpOwotICAgIENPTlNVTUVfVFlQRSh3aGlsZUtleXdvcmQsIFdo
aWxlKTsKLSAgICBDT05TVU1FX1RZUEUobGVmdFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMp
OwotICAgIFBBUlNFKGNvbmRpdGlvbmFsLCBFeHByZXNzaW9uKTsKLSAgICBDT05TVU1FX1RZUEUo
cmlnaHRQYXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNl
bWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBBU1Q6OkRvV2hpbGVMb29wKHsgKm9y
aWdpbiwgKnNlbWljb2xvbn0sIFdURk1vdmUoKmJvZHkpLCBXVEZNb3ZlKCpjb25kaXRpb25hbCkp
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYmIHR5cGUpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiwg
RXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgYXV0byBxdWFsaWZpZXJzID0gcGFy
c2VRdWFsaWZpZXJzKCk7Ci0KLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0g
ICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OkV4cHJlc3Npb24+IGluaXRpYWxpemVyID0gbnVsbHB0cjsKLSAgICBpZiAodHJ5VHlwZShUb2tl
bjo6VHlwZTo6RXF1YWxzU2lnbikpIHsKLSAgICAgICAgUEFSU0UoaW5pdGlhbGl6aW5nRXhwcmVz
c2lvbiwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgICAgICBpbml0aWFsaXplciA9
IGluaXRpYWxpemluZ0V4cHJlc3Npb24udmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9
Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0g
ICAgcmV0dXJuIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1vdmUocXVhbGlmaWVycyks
IHsgV1RGTW92ZSh0eXBlKSB9LCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCks
IFdURk1vdmUoKnNlbWFudGljKSwgV1RGTW92ZShpbml0aWFsaXplcikpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQot
ICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotCi0gICAgYXV0byBmaXJzdFZhcmlhYmxlRGVjbGFyYXRp
b24gPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24odHlwZS0+Y29weVJlZigpKTsKLSAgICBpZiAo
IWZpcnN0VmFyaWFibGVEZWNsYXJhdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGZpcnN0VmFyaWFibGVEZWNsYXJhdGlvbi5lcnJvcigpKTsKLQotICAgIFZlY3RvcjxVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPj4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQo
bWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKmZpcnN0VmFy
aWFibGVEZWNsYXJhdGlvbikpKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpD
b21tYSkpIHsKLSAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gcGFyc2VWYXJpYWJs
ZURlY2xhcmF0aW9uKHR5cGUtPmNvcHlSZWYoKSk7Ci0gICAgICAgIGlmICghdmFyaWFibGVEZWNs
YXJhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YXJpYWJsZURlY2xh
cmF0aW9uLmVycm9yKCkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9uKSkpOwot
ICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQo
KTsKLSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCh7IG9yaWdp
bi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIFdURk1v
dmUocmVzdWx0KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVN0YXRlbWVudCgpIC0+IEV4cGVj
dGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4p
OwotICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpMZWZ0
Q3VybHlCcmFja2V0OiB7Ci0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9jayk7Ci0gICAgICAgIHJl
dHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCbG9jaz4oV1RGTW92ZSgqYmxvY2spKSB9OwotICAg
IH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJZjogewotICAgICAgICBQQVJTRShpZlN0YXRlbWVu
dCwgSWZTdGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6SWZT
dGF0ZW1lbnQ+KFdURk1vdmUoKmlmU3RhdGVtZW50KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6U3dpdGNoOiB7Ci0gICAgICAgIFBBUlNFKHN3aXRjaFN0YXRlbWVudCwgU3dpdGNo
U3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlN3aXRjaFN0
YXRlbWVudD4oV1RGTW92ZSgqc3dpdGNoU3RhdGVtZW50KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6Rm9yOiB7Ci0gICAgICAgIFBBUlNFKGZvckxvb3AsIEZvckxvb3ApOwotICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Rm9yTG9vcD4oV1RGTW92ZSgqZm9yTG9v
cCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OldoaWxlOiB7Ci0gICAgICAgIFBB
UlNFKHdoaWxlTG9vcCwgV2hpbGVMb29wKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OldoaWxlTG9vcD4oV1RGTW92ZSgqd2hpbGVMb29wKSkgfTsKLSAgICB9Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6RG86IHsKLSAgICAgICAgUEFSU0UoZG9XaGlsZUxvb3AsIERvV2hpbGVM
b29wKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRvV2hpbGVMb29wPihX
VEZNb3ZlKCpkb1doaWxlTG9vcCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkJy
ZWFrOiB7Ci0gICAgICAgIGF1dG8gYnJlYWtUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7
Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1
dG8gYnJlYWtPYmplY3QgPSBBU1Q6OkJyZWFrKFdURk1vdmUoYnJlYWtUb2tlbikpOwotICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6QnJlYWs+KFdURk1vdmUoYnJlYWtPYmplY3Qp
KSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpDb250aW51ZTogewotICAgICAgICBh
dXRvIGNvbnRpbnVlVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tlbigpOwotICAgICAgICBDT05T
VU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICBhdXRvIGNvbnRpbnVlT2Jq
ZWN0ID0gQVNUOjpDb250aW51ZShXVEZNb3ZlKGNvbnRpbnVlVG9rZW4pKTsKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbnRpbnVlPihXVEZNb3ZlKGNvbnRpbnVlT2JqZWN0
KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmFsbHRocm91Z2g6IHsKLSAgICAg
ICAgYXV0byBmYWxsdGhyb3VnaFRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAg
ICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byBmYWxs
dGhyb3VnaE9iamVjdCA9IEFTVDo6RmFsbHRocm91Z2goV1RGTW92ZShmYWxsdGhyb3VnaFRva2Vu
KSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpGYWxsdGhyb3VnaD4oV1RG
TW92ZShmYWxsdGhyb3VnaE9iamVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OlJldHVybjogewotICAgICAgICBhdXRvIHJldHVyblRva2VuID0gbV9sZXhlci5jb25zdW1lVG9r
ZW4oKTsKLSAgICAgICAgaWYgKGF1dG8gc2VtaWNvbG9uID0gdHJ5VHlwZShUb2tlbjo6VHlwZTo6
U2VtaWNvbG9uKSkgewotICAgICAgICAgICAgYXV0byByZXR1cm5PYmplY3QgPSBBU1Q6OlJldHVy
bihXVEZNb3ZlKHJldHVyblRva2VuKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlUmVmPEFTVDo6UmV0dXJuPihXVEZNb3ZlKHJldHVybk9iamVjdCkpIH07Ci0gICAg
ICAgIH0KLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAgICAgIENP
TlNVTUVfVFlQRShmaW5hbFNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLSAgICAgICAgYXV0byByZXR1
cm5PYmplY3QgPSBBU1Q6OlJldHVybihXVEZNb3ZlKHJldHVyblRva2VuKSwgKCpleHByZXNzaW9u
KS5tb3ZlVG9VbmlxdWVQdHIoKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpSZXR1cm4+KFdURk1vdmUocmV0dXJuT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6Q29uc3RhbnQ6Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGV2aWNlOgotICAgIGNh
c2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgotICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVh
ZDogewotICAgICAgICBQQVJTRSh2YXJpYWJsZURlY2xhcmF0aW9ucywgVmFyaWFibGVEZWNsYXJh
dGlvbnMpOwotICAgICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb25zKSkgfTsKLSAgICB9Ci0gICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6SWRlbnRpZmllcjogewotICAgICAgICBQRUVLX0ZVUlRIRVIobmV4dFRv
a2VuKTsKLSAgICAgICAgc3dpdGNoIChuZXh0VG9rZW4tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6SWRlbnRpZmllcjoKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVzc1Ro
YW5TaWduOgotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpTdGFyOgotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpRdWFsaWZpZXI6IHsKLSAgICAgICAgICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFy
YXRpb25zLCBWYXJpYWJsZURlY2xhcmF0aW9ucyk7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUo
c2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURl
Y2xhcmF0aW9ucykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0Ogot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gZWZmZWN0ZnVsRXhw
cmVzc2lvbiA9IGJhY2t0cmFja2luZ1Njb3BlPEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRl
bWVudD4sIEVycm9yPj4oWyZdKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50
PiwgRXJyb3I+IHsKLSAgICAgICAgICAgIFBBUlNFKHJlc3VsdCwgRWZmZWN0ZnVsRXhwcmVzc2lv
bik7Ci0gICAgICAgICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChlZmZlY3Rm
dWxFeHByZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKmVmZmVjdGZ1bEV4cHJl
c3Npb24pOwotICAgIH0KLQotICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJpYWJs
ZURlY2xhcmF0aW9ucyk7Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsK
LSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFyYXRpb25zKSkgfTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6
OlN0YXRlbWVudD4sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLSAgICBpZiAob3JpZ2lu
LT50eXBlID09IFRva2VuOjpUeXBlOjpTZW1pY29sb24pCi0gICAgICAgIHJldHVybiB7IG1ha2VV
bmlxdWVSZWY8QVNUOjpCbG9jaz4oKm9yaWdpbiwgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0YXRl
bWVudD4+KCkpIH07Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4
cHJlc3Npb25zOwotICAgIFBBUlNFKGVmZmVjdGZ1bEV4cHJlc3Npb24sIEVmZmVjdGZ1bEFzc2ln
bm1lbnQpOwotICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKCplZmZlY3RmdWxFeHByZXNz
aW9uKSk7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAg
ICAgIFBBUlNFKGV4cHJlc3Npb24sIEVmZmVjdGZ1bEFzc2lnbm1lbnQpOwotICAgICAgICBleHBy
ZXNzaW9ucy5hcHBlbmQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIH0KLQotICAgIGlmIChl
eHByZXNzaW9ucy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxB
U1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KFdURk1vdmUoZXhwcmVzc2lvbnNbMF0p
KSB9OwotICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0
KCk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5k
T2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpKTsKLSAgICBhdXRvIGNvbW1hRXhwcmVzc2lvbiA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpDb21tYUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGV4
cHJlc3Npb25zKSk7Ci0gICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQ+KFdURk1vdmUoY29tbWFFeHByZXNzaW9uKSkgfTsKLX0KLQotYXV0
byBQYXJzZXI6OnBhcnNlRWZmZWN0ZnVsQXNzaWdubWVudCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBi
b29sIGlzRWZmZWN0ZnVsID0gZmFsc2U7Ci0gICAgUEFSU0UoZXhwcmVzc2lvbiwgUG9zc2libGVQ
cmVmaXgsICZpc0VmZmVjdGZ1bCk7Ci0KLSAgICBpZiAoIWlzRWZmZWN0ZnVsIHx8IHBlZWtUeXBl
czwKLSAgICAgICAgVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBl
OjpQbHVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpUaW1lc0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVx
dWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5
cGU6OlhvckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAg
VG9rZW46OlR5cGU6Ok9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVx
dWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscwotICAgID4oKSkgewot
ICAgICAgICByZXR1cm4gY29tcGxldGVBc3NpZ25tZW50KFdURk1vdmUoKmV4cHJlc3Npb24pKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
TGltaXRlZFN1ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlv
dXMpIC0+IFN1ZmZpeEV4cHJlc3Npb24KLXsKLSAgICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpGdWxsU3RvcCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFy
cm93LAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ+KCk7Ci0gICAgaWYg
KCF0eXBlKQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3Vz
KSwgZmFsc2UpOwotCi0gICAgc3dpdGNoICh0eXBlLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6RnVsbFN0b3A6IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUo
VG9rZW46OlR5cGU6OklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAg
ICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2Up
OwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigp
LCAqaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlx
dWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIGlk
ZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRydWUpOwotICAgIH0K
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpBcnJvdzogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRl
bnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJl
dmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+
Y29kZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJl
c3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBtYWtlVW5p
cXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2
aW91cykpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVl
KTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotICAgICAgICBhdXRvIGV4cHJlc3Npb24g
PSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAg
ICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAg
ICAgICAgaWYgKGF1dG8gcmlnaHRTcXVhcmVCcmFja2V0ID0gY29uc3VtZVR5cGUoVG9rZW46OlR5
cGU6OlJpZ2h0U3F1YXJlQnJhY2tldCkpIHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2Nh
dGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpyaWdodFNxdWFyZUJyYWNrZXQpOwotICAg
ICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4
RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpleHByZXNz
aW9uKSksIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9u
KFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2
aW91cykgLT4gU3VmZml4RXhwcmVzc2lvbgotewotICAgIGF1dG8gc3VmZml4ID0gY29uc3VtZVR5
cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6RnVsbFN0b3AsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpBcnJvdywKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0LAotICAgICAg
ICBUb2tlbjo6VHlwZTo6UGx1c1BsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c01pbnVz
PigpOwotICAgIGlmICghc3VmZml4KQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihX
VEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotCi0gICAgc3dpdGNoIChzdWZmaXgtPnR5cGUpIHsK
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpGdWxsU3RvcDogewotICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICgh
aWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUo
cHJldmlvdXMpLCBmYWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91
cy0+Y29kZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4
cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZN
b3ZlKHByZXZpb3VzKSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygp
KSwgdHJ1ZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkFycm93OiB7Ci0gICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJl
c3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICBy
ZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4o
bG9jYXRpb24sIG1ha2VVbmlxdWVSZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KFdURk1v
dmUoKnN1ZmZpeCksIFdURk1vdmUocHJldmlvdXMpKSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyht
X2xleGVyKS50b1N0cmluZygpKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6
OkxlZnRTcXVhcmVCcmFja2V0OiB7Ci0gICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhw
cmVzc2lvbigpOwotICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICByZXR1cm4g
U3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBpZiAo
YXV0byByaWdodFNxdWFyZUJyYWNrZXQgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6UmlnaHRT
cXVhcmVCcmFja2V0KSkgewotICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZp
b3VzLT5jb2RlTG9jYXRpb24oKSwgKnJpZ2h0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6SW5kZXhFeHByZXNzaW9u
Pihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKmV4cHJlc3Npb24pKSwgdHJ1
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShw
cmV2aW91cyksIGZhbHNlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c1BsdXM6
IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24o
KSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7Ci0g
ICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsK
LSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5j
ZSgpKTsKLSAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92
ZShjYWxsQXJndW1lbnRzKSkpOwotICAgICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24o
cmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4
cHJlc3Npb24oV1RGTW92ZShyZXN1bHQpLCB0cnVlKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewot
ICAgICAgICBBU1NFUlQoc3VmZml4LT50eXBlID09IFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsK
LSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwg
KnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAg
ICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAg
ICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgp
KTsKLSAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxB
U1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLS0iX3N0ciwgV1RGTW92ZShj
YWxsQXJndW1lbnRzKSkpOwotICAgICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVz
dWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJl
c3Npb24oV1RGTW92ZShyZXN1bHQpLCB0cnVlKTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKGZpcnN0LCBQb3NzaWJsZVRlcm5hcnlDb25kaXRp
b25hbCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9u
czsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9ICgqZmlyc3QpLT5jb2RlTG9jYXRpb24oKS5z
dGFydE9mZnNldCgpOwotICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKCpmaXJzdCkpOwot
Ci0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBQQVJT
RShleHByZXNzaW9uLCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGV4cHJl
c3Npb25zLmFwcGVuZChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgaWYgKGV4
cHJlc3Npb25zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gV1RGTW92ZShleHByZXNzaW9u
c1swXSk7Ci0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgp
OwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xl
eGVyLm5hbWVTcGFjZSgpKTsKLSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q29tbWFF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpIH07Ci19Ci0KLWF1dG8g
UGFyc2VyOjpjb21wbGV0ZVRlcm5hcnlDb25kaXRpb25hbChVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiYmIHByZWRpY2F0ZSkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShxdWVzdGlvbk1hcmssIFF1ZXN0aW9uTWFyayk7
Ci0gICAgUEFSU0UoYm9keUV4cHJlc3Npb24sIEV4cHJlc3Npb24pOwotICAgIENPTlNVTUVfVFlQ
RShjb2xvbiwgQ29sb24pOwotICAgIFBBUlNFKGVsc2VFeHByZXNzaW9uLCBQb3NzaWJsZVRlcm5h
cnlDb25kaXRpb25hbCk7Ci0KLSAgICBDb2RlTG9jYXRpb24gcHJlZGljYXRlTG9jYXRpb24gPSBw
cmVkaWNhdGUtPmNvZGVMb2NhdGlvbigpOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4gY2FzdEFyZ3VtZW50czsKLSAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChXVEZNb3Zl
KHByZWRpY2F0ZSkpOwotICAgIGF1dG8gYm9vbENhc3QgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2Fs
bEV4cHJlc3Npb24+KHByZWRpY2F0ZUxvY2F0aW9uLCAiYm9vbCJfc3RyLCBXVEZNb3ZlKGNhc3RB
cmd1bWVudHMpKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJlZGljYXRlTG9jYXRpb24s
ICgqZWxzZUV4cHJlc3Npb24pLT5jb2RlTG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZVJlZjxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShib29sQ2Fz
dCksIFdURk1vdmUoKmJvZHlFeHByZXNzaW9uKSwgV1RGTW92ZSgqZWxzZUV4cHJlc3Npb24pKSB9
OwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+JiYgbGVmdCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPgotewotICAgIGF1dG8gYXNzaWdubWVudE9wZXJhdG9yID0gY29uc3VtZVR5cGVzPAot
ICAgICAgICBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6OlBs
dXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c0VxdWFscywKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxz
LAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6
WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kRXF1YWxzLAotICAgICAgICBUb2tl
bjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxz
LAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzPigpOwotICAgIGlmICghYXNz
aWdubWVudE9wZXJhdG9yKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXNzaWdubWVu
dE9wZXJhdG9yLmVycm9yKCkpOwotCi0gICAgUEFSU0UocmlnaHQsIFBvc3NpYmxlVGVybmFyeUNv
bmRpdGlvbmFsKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24gPSB7IGxlZnQtPmNvZGVMb2Nh
dGlvbigpLCAoKnJpZ2h0KS0+Y29kZUxvY2F0aW9uKCkgfTsKLQotICAgIGlmIChhc3NpZ25tZW50
T3BlcmF0b3ItPnR5cGUgPT0gVG9rZW46OlR5cGU6OkVxdWFsc1NpZ24pCi0gICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4obG9jYXRpb24sIFdU
Rk1vdmUobGVmdCksIFdURk1vdmUoKnJpZ2h0KSl9OwotCi0gICAgU3RyaW5nIG5hbWU7Ci0gICAg
c3dpdGNoIChhc3NpZ25tZW50T3BlcmF0b3ItPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpQbHVzRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yKyJfc3RyOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpNaW51c0VxdWFsczoKLSAgICAgICAgbmFtZSA9
ICJvcGVyYXRvci0iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
VGltZXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IqIl9zdHI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFsczoKLSAgICAgICAgbmFtZSA9
ICJvcGVyYXRvci8iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
TW9kRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yJSJfc3RyOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpYb3JFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3Bl
cmF0b3JeIl9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkFuZEVx
dWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvciYiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6T3JFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3J8
Il9zdHI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRF
cXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3I+PiJfc3RyOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYXNzaWdubWVudE9wZXJhdG9yLT50eXBlID09
IFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHMpOwotICAgICAgICBuYW1lID0gIm9wZXJhdG9y
PDwiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1v
dmUobGVmdCkpOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFy
Z3VtZW50czsKLSAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVm
ZXJlbmNlKCkpOwotICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnJpZ2h0KSk7Ci0g
ICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSkpOwotICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCgpIC0+IEV4cGVjdGVkPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQQVJTRShleHByZXNzaW9u
LCBQb3NzaWJsZVByZWZpeCk7Ci0KLSAgICBpZiAocGVla1R5cGVzPFRva2VuOjpUeXBlOjpFcXVh
bHNTaWduLAotICAgICAgICBUb2tlbjo6VHlwZTo6UGx1c0VxdWFscywKLSAgICAgICAgVG9rZW46
OlR5cGU6Ok1pbnVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpN
b2RFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpYb3JFcXVhbHMsCi0gICAgICAgIFRva2Vu
OjpUeXBlOjpBbmRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpPckVxdWFscywKLSAgICAg
ICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpM
ZWZ0U2hpZnRFcXVhbHM+KCkpIHsKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlQXNzaWdubWVudChX
VEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRl
UG9zc2libGVTaGlmdChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9u
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQot
ICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoV1RGTW92ZSgqZXhwcmVz
c2lvbikpOwotICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGV4cHJlc3Npb24uZXJyb3IoKSk7Ci0KLSAgICBleHByZXNzaW9uID0gY29tcGxldGVQb3Nz
aWJsZUFkZChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4
cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihXVEZN
b3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBj
b21wbGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpleHByZXNzaW9u
KSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
ZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICBpZiAobmV4
dFRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpRdWVzdGlvbk1hcmspCi0gICAgICAgIHJldHVy
biBjb21wbGV0ZVRlcm5hcnlDb25kaXRpb25hbChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAg
cmV0dXJuIGV4cHJlc3Npb247Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlTG9naWNh
bEJpbmFyeU9wZXJhdGlvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4KLXsKLSAgICBQQVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVSZWxhdGlvbmFs
QmluYXJ5T3BlcmF0aW9uKTsKLSAgICByZXR1cm4gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5h
cnlPcGVyYXRpb24oV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6
OmNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBsb2dpY2FsQmluYXJ5T3BlcmF0aW9uID0g
dHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpPck9yLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6QW5kQW5kLAotICAgICAgICBUb2tlbjo6VHlwZTo6T3IsCi0gICAgICAgIFRva2VuOjpUeXBl
OjpYb3IsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmQKLSAgICAgICAgPigpKSB7Ci0gICAgICAg
IFBBUlNFKG5leHQsIFBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbik7Ci0gICAgICAg
IENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCkt
PmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxCaW5hcnlPcGVyYXRp
b24tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6T3JPcjoKLSAgICAgICAgICAg
IHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihsb2NhdGlv
biwgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6T3IsIFdURk1vdmUocHJldmlvdXMpLCBX
VEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6QW5kQW5kOgotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
TG9naWNhbEV4cHJlc3Npb24+KGxvY2F0aW9uLCBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBl
OjpBbmQsIFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6T3I6IHsKLSAgICAgICAgICAgIFZlY3Rv
cjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgICAgIGNh
bGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHByZXZpb3Vz
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9y
fCJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlhvcjogewotICAgICAgICAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAgICAgICAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcHJldmlv
dXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0
b3JeIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgQVNTRVJUKGxvZ2ljYWxC
aW5hcnlPcGVyYXRpb24tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkFuZCk7Ci0gICAgICAgICAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAg
ICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBwcmV2
aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvciYiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgV1RGTW92ZShwcmV2
aW91cykgfTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5
T3BlcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9y
PgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZVNoaWZ0KTsKLSAgICByZXR1
cm4gY29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oV1RGTW92ZSgqcGFy
c2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRlUG9zc2libGVSZWxhdGlv
bmFsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMp
IC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICB3
aGlsZSAoYXV0byByZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uID0gdHJ5VHlwZXM8Ci0gICAgICAg
IFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpHcmVhdGVy
VGhhblNpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZXNzVGhhbk9yRXF1YWxUbywKLSAgICAg
ICAgVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6RXF1YWxDb21wYXJpc29uLAotICAgICAgICBUb2tlbjo6VHlwZTo6Tm90RXF1YWwKLSAgICAg
ICAgPigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlU2hpZnQpOwotICAgICAgICBD
b2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5j
b2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3Zl
KHByZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQp
KTsKLQotICAgICAgICBzd2l0Y2ggKHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24tPnR5cGUpIHsK
LSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6TGVzc1RoYW5TaWduOiB7Ci0gICAgICAgICAgICBw
cmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvcjwiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ246
IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNz
aW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6
Okxlc3NUaGFuT3JFcXVhbFRvOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcjw9Il9zdHIsIFdURk1v
dmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG86IHsKLSAgICAgICAgICAg
IHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwg
Im9wZXJhdG9yPj0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpFcXVhbENvbXBhcmlz
b246IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgICAgICBBU1NFUlQocmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6Tm90RXF1YWwpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVT
aGlmdCgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsK
LSAgICBQQVJTRShwYXJzZWRQcmV2aW91cywgUG9zc2libGVBZGQpOwotICAgIHJldHVybiBjb21w
bGV0ZVBvc3NpYmxlU2hpZnQoV1RGTW92ZSgqcGFyc2VkUHJldmlvdXMpKTsKLX0KLQotYXV0byBQ
YXJzZXI6OmNvbXBsZXRlUG9zc2libGVTaGlmdChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYm
IHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
Ci17Ci0gICAgd2hpbGUgKGF1dG8gc2hpZnQgPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5
cGU6OkxlZnRTaGlmdCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0U2hpZnQKLSAgICAgICAg
PigpKSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlQWRkKTsKLSAgICAgICAgQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKCpuZXh0KS0+Y29kZUxv
Y2F0aW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2
aW91cykpOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0K
LSAgICAgICAgc3dpdGNoIChzaGlmdC0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpMZWZ0U2hpZnQ6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPDwiX3N0ciwgV1RGTW92ZShjYWxs
QXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZh
dWx0OiB7Ci0gICAgICAgICAgICBBU1NFUlQoc2hpZnQtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlJp
Z2h0U2hpZnQpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2Fs
bEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I+PiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1
bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZVBvc3NpYmxlQWRkKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZU11bHRpcGx5KTsKLSAg
ICByZXR1cm4gY29tcGxldGVQb3NzaWJsZUFkZChXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwot
fQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZUFkZChVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+Ci17Ci0gICAgd2hpbGUgKGF1dG8gYWRkID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRv
a2VuOjpUeXBlOjpQbHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXMKLSAgICAgICAgPigp
KSB7Ci0gICAgICAgIFBBUlNFKG5leHQsIFBvc3NpYmxlTXVsdGlwbHkpOwotICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2Rl
TG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHBy
ZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsK
LQotICAgICAgICBzd2l0Y2ggKGFkZC0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpQbHVzOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1l
bnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7
Ci0gICAgICAgICAgICBBU1NFUlQoYWRkLT50eXBlID09IFRva2VuOjpUeXBlOjpNaW51cyk7Ci0g
ICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvci0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZU11bHRp
cGx5KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewot
ICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZVByZWZpeCk7Ci0gICAgcmV0dXJuIGNv
bXBsZXRlUG9zc2libGVNdWx0aXBseShXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1h
dXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBtdWx0aXBseSA9IHRyeVR5cGVzPAotICAgICAg
ICBUb2tlbjo6VHlwZTo6U3RhciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZSwKLSAgICAg
ICAgVG9rZW46OlR5cGU6Ok1vZAotICAgICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwg
UG9zc2libGVQcmVmaXgpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMt
PmNvZGVMb2NhdGlvbigpLCAoKm5leHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBj
YWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1
bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLQotICAgICAgICBzd2l0Y2ggKG11bHRpcGx5
LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6IHsKLSAgICAgICAgICAg
IHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwg
Im9wZXJhdG9yKiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkRpdmlkZTogewotICAg
ICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxv
Y2F0aW9uLCAib3BlcmF0b3IvIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAg
QVNTRVJUKG11bHRpcGx5LT50eXBlID09IFRva2VuOjpUeXBlOjpNb2QpOwotICAgICAgICAgICAg
cHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3IlIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHBy
ZXZpb3VzKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaXNF
ZmZlY3RmdWwpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4K
LXsKLSAgICBpZiAoYXV0byBwcmVmaXggPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlBsdXNQbHVzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TWludXNNaW51cywKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlBsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51cywKLSAgICAgICAgVG9r
ZW46OlR5cGU6OlRpbGRlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RXhjbGFtYXRpb25Qb2ludCwK
LSAgICAgICAgVG9rZW46OlR5cGU6OkFuZCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkF0LAotICAg
ICAgICBUb2tlbjo6VHlwZTo6U3RhcgotICAgID4oKSkgewotICAgICAgICBQQVJTRShuZXh0LCBQ
b3NzaWJsZVByZWZpeCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqcHJlZml4LCAo
Km5leHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAgc3dpdGNoIChwcmVmaXgtPnR5cGUp
IHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c1BsdXM6IHsKLSAgICAgICAgICAgIGlm
IChpc0VmZmVjdGZ1bCkKLSAgICAgICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIFZlY3Rv
cjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0g
ICAgICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24o
cmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB7IFdU
Rk1vdmUocmVzdWx0KSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1p
bnVzTWludXM6IHsKLSAgICAgICAgICAgIGlmIChpc0VmZmVjdGZ1bCkKLSAgICAgICAgICAgICAg
ICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUo
Km5leHQpKTsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4g
Y2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+
b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVl
RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAi
b3BlcmF0b3ItLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgICAgICBy
ZXN1bHQtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVzdWx0LT5uZXdWYXJpYWJsZVJlZmVyZW5jZSgp
KTsKLSAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXM6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxB
cmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisiX3N0
ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpNaW51czogewotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBl
bmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxB
U1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLSJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKSB9OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlRp
bGRlOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNh
bGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpu
ZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3J+Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykp
IH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RXhjbGFtYXRpb25Qb2lu
dDogewotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYXN0
QXJndW1lbnRzOwotICAgICAgICAgICAgY2FzdEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4
dCkpOwotICAgICAgICAgICAgYXV0byBib29sQ2FzdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxs
RXhwcmVzc2lvbj4obG9jYXRpb24sICJib29sIl9zdHIsIFdURk1vdmUoY2FzdEFyZ3VtZW50cykp
OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkxvZ2ljYWxOb3RFeHBy
ZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShib29sQ2FzdCkpIH07Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6QW5kOgotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZVJlZjxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQp
LCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVzKSB9OwotICAgICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpBdDoKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCksIEFTVDo6
QWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXMpIH07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBBU1NFUlQocHJlZml4LT50eXBlID09IFRva2VuOjpUeXBlOjpTdGFyKTsKLSAgICAgICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGxv
Y2F0aW9uLCBXVEZNb3ZlKCpuZXh0KSkgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBwYXJzZVBvc3NpYmxlU3VmZml4KGlzRWZmZWN0ZnVsKTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlUG9zc2libGVTdWZmaXgoYm9vbCAqaXNFZmZlY3RmdWwpIC0+IEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICBQRUVLKHRva2VuKTsKLSAgICBQRUVL
X0ZVUlRIRVIobmV4dFRva2VuKTsKLQotICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6SWRlbnRpZmllciAmJiBuZXh0VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRQYXJl
bnRoZXNpcykgewotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBDYWxsRXhwcmVzc2lvbik7Ci0g
ICAgICAgIGlmIChpc0VmZmVjdGZ1bCkKLSAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7
Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBQRUVLKHN1ZmZpeFRva2VuKTsK
LSAgICAgICAgICAgIGlmIChzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6RnVsbFN0
b3AgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkFycm93ICYmIHN1ZmZpeFRv
a2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VMaW1pdGVkU3VmZml4
T3BlcmF0b3IoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgICAgICAgICAgZXhwcmVzc2lvbiA9
IFdURk1vdmUocmVzdWx0LnJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGV4cHJl
c3Npb247Ci0gICAgfQotCi0gICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0
UGFyZW50aGVzaXMgJiYgaXNFZmZlY3RmdWwpCi0gICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7
Ci0KLSAgICBQQVJTRShleHByZXNzaW9uLCBUZXJtKTsKLSAgICBib29sIGlzTGFzdFN1ZmZpeFRv
a2VuRWZmZWN0ZnVsID0gZmFsc2U7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgUEVFSyhz
dWZmaXhUb2tlbik7Ci0gICAgICAgIGlmIChzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlw
ZTo6RnVsbFN0b3AKLSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpBcnJvdwotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5
cGU6OkxlZnRTcXVhcmVCcmFja2V0Ci0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6UGx1c1BsdXMKLSAgICAgICAgICAgICYmIHN1ZmZpeFRva2VuLT50eXBl
ICE9IFRva2VuOjpUeXBlOjpNaW51c01pbnVzKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBpc0xhc3RTdWZmaXhUb2tlbkVmZmVjdGZ1bCA9IHN1ZmZpeFRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpQbHVzUGx1cyB8fCBzdWZmaXhUb2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6TWludXNNaW51czsKLSAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVN1ZmZpeE9w
ZXJhdG9yKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICAgICAgZXhwcmVzc2lvbiA9IFdURk1v
dmUocmVzdWx0LnJlc3VsdCk7Ci0gICAgfQotICAgIGlmIChpc0xhc3RTdWZmaXhUb2tlbkVmZmVj
dGZ1bCAmJiBpc0VmZmVjdGZ1bCkKLSAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICBy
ZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQ2FsbEV4cHJlc3Npb24o
KSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAg
Q09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIGF1dG8gY2FsbE5hbWUgPSBuYW1l
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVm
dFBhcmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+PiBhcmd1bWVudHM7Ci0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5cGU6
OlJpZ2h0UGFyZW50aGVzaXMpKQotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KFdURk1vdmUoKm5hbWUpLCBXVEZNb3ZlKGNhbGxOYW1lKSwgV1RGTW92
ZShhcmd1bWVudHMpKSB9OwotCi0gICAgUEFSU0UoZmlyc3RBcmd1bWVudCwgUG9zc2libGVUZXJu
YXJ5Q29uZGl0aW9uYWwpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqZmlyc3RBcmd1
bWVudCkpOwotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21tYSkpIHsKLSAgICAg
ICAgUEFSU0UoYXJndW1lbnQsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAgICAgICAg
YXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCphcmd1bWVudCkpOwotICAgIH0KLQotICAgIENPTlNV
TUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDb2RlTG9j
YXRpb24gbG9jYXRpb24oKm5hbWUsICpyaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiB7
IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoY2Fs
bE5hbWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVRl
cm0oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0g
ICAgYXV0byB0eXBlID0gY29uc3VtZVR5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6SW50TGl0
ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6
VHlwZTo6RmxvYXRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6TnVsbCwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlRydWUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpGYWxzZSwKLSAgICAgICAg
VG9rZW46OlR5cGU6OklkZW50aWZpZXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50
aGVzaXM+KCk7Ci0gICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
dHlwZS5lcnJvcigpKTsKLQotICAgIHN3aXRjaCAodHlwZS0+dHlwZSkgewotICAgIGNhc2UgVG9r
ZW46OlR5cGU6OkludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGludExpdGVyYWxU
b0ludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkludGVnZXJMaXRlcmFsPigqdHlwZSwgKnZhbHVl
KSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewotICAgICAg
ICBhdXRvIHZhbHVlID0gdWludExpdGVyYWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVy
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsPigqdHlwZSwgKnZhbHVlKSB9OwotICAgIH0KLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGZsb2F0
TGl0ZXJhbFRvRmxvYXQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICgh
dmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7
Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpGbG9hdExpdGVyYWw+KCp0eXBl
LCAqdmFsdWUpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok51bGw6Ci0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiJ251bGwnIGlzIGEgcmVzZXJ2ZWQga2V5d29y
ZC4iLCB0eXBlLT5jb2RlTG9jYXRpb24pKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUcnVlOgot
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Qm9vbGVhbkxpdGVyYWw+KCp0eXBl
LCB0cnVlKSB9OwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4g
eyBtYWtlVW5pcXVlUmVmPEFTVDo6Qm9vbGVhbkxpdGVyYWw+KCp0eXBlLCBmYWxzZSkgfTsKLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOiB7Ci0gICAgICAgIGF1dG8gbmFtZSA9IHR5
cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHsgbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPigqdHlwZSwgV1RGTW92ZShuYW1lKSkg
fTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6TGVmdFBhcmVudGhlc2lzKTsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwg
RXhwcmVzc2lvbik7Ci0gICAgICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdo
dFBhcmVudGhlc2lzKTsKLQotICAgICAgICByZXR1cm4geyBXVEZNb3ZlKCpleHByZXNzaW9uKSB9
OwotICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGVlYTMyNmRiNDc0NzdlNmU5ZTMzNjk2MzM3YjZlNjVk
MzE3NzYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRl
ICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotI2luY2x1ZGUgIldITFNM
UGFyc2luZ01vZGUuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1jbGFzcyBQcm9ncmFtOwotCi1jbGFzcyBQYXJzZXIgewotcHVibGljOgotICAgIEV4cGVj
dGVkPHZvaWQsIEVycm9yPiBwYXJzZShQcm9ncmFtJiwgU3RyaW5nVmlldywgUGFyc2luZ01vZGUs
IEFTVDo6TmFtZVNwYWNlKTsKLQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBuZWVkIHRoaXMKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4MzU3Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBiYWNrdHJhY2tpbmdTY29wZShz
dGQ6OmZ1bmN0aW9uPFQoKT4gY2FsbGJhY2spCi0gICAgewotICAgICAgICBhdXRvIHN0YXRlID0g
bV9sZXhlci5zdGF0ZSgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGxiYWNrKCk7Ci0gICAg
ICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICBtX2xl
eGVyLnNldFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBlbnVtIGNsYXNzIFRyeVRvUGVlayB7Ci0gICAgICAgIFllcywKLSAgICAgICAg
Tm8KLSAgICB9OwotICAgIFVuZXhwZWN0ZWQ8RXJyb3I+IGZhaWwoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBUcnlUb1BlZWsgPSBUcnlUb1BlZWs6Olllcyk7Ci0gICAgRXhwZWN0ZWQ8VG9rZW4sIEVy
cm9yPiBwZWVrKCk7Ci0gICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBwZWVrRnVydGhlcigpOwot
ICAgIGJvb2wgcGVla1R5cGUoVG9rZW46OlR5cGUpOwotICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlw
ZS4uLiB0eXBlcz4KLSAgICBib29sIHBlZWtUeXBlcygpOwotICAgIHN0ZDo6b3B0aW9uYWw8VG9r
ZW4+IHRyeVR5cGUoVG9rZW46OlR5cGUpOwotICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0
eXBlcz4KLSAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0cnlUeXBlcygpOwotICAgIEV4cGVjdGVk
PFRva2VuLCBFcnJvcj4gY29uc3VtZVR5cGUoVG9rZW46OlR5cGUpOwotICAgIHRlbXBsYXRlIDxU
b2tlbjo6VHlwZS4uLiB0eXBlcz4KLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IGNvbnN1bWVU
eXBlcygpOwotCi0gICAgRXhwZWN0ZWQ8VmFyaWFudDxpbnQsIHVuc2lnbmVkPiwgRXJyb3I+IGNv
bnN1bWVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+IGNv
bnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgIEV4cGVjdGVkPEFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uLCBFcnJvcj4gcGFyc2VDb25zdGFudEV4cHJlc3Npb24oKTsKLSAgICBF
eHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudCwgRXJyb3I+IHBhcnNlVHlwZUFyZ3VtZW50KCk7Ci0g
ICAgRXhwZWN0ZWQ8QVNUOjpUeXBlQXJndW1lbnRzLCBFcnJvcj4gcGFyc2VUeXBlQXJndW1lbnRz
KCk7Ci0gICAgc3RydWN0IFR5cGVTdWZmaXhBYmJyZXZpYXRlZCB7Ci0gICAgICAgIENvZGVMb2Nh
dGlvbiBsb2NhdGlvbjsKLSAgICAgICAgVG9rZW4gdG9rZW47Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwotICAgIH07Ci0gICAgRXhwZWN0ZWQ8VHlwZVN1ZmZp
eEFiYnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKTsKLSAgICBz
dHJ1Y3QgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uOwotICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxBU1Q6
OkFkZHJlc3NTcGFjZT4gYWRkcmVzc1NwYWNlOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBudW1FbGVtZW50czsKLSAgICB9OwotICAgIEV4cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJy
ZXZpYXRlZCwgRXJyb3I+IHBhcnNlVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCk7Ci0gICAgRXhw
ZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4gcGFyc2VBZGRyZXNzU3BhY2VUeXBl
KCk7Ci0gICAgRXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4gcGFyc2VOb25B
ZGRyZXNzU3BhY2VUeXBlKCk7Ci0gICAgRXhwZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBF
cnJvcj4gcGFyc2VUeXBlKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpUeXBlRGVmaW5pdGlvbiwgRXJy
b3I+IHBhcnNlVHlwZURlZmluaXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkJ1aWx0SW5TZW1h
bnRpYywgRXJyb3I+IHBhcnNlQnVpbHRJblNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpS
ZXNvdXJjZVNlbWFudGljLCBFcnJvcj4gcGFyc2VSZXNvdXJjZVNlbWFudGljKCk7Ci0gICAgRXhw
ZWN0ZWQ8QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMsIEVycm9yPiBwYXJzZVNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljLCBFcnJvcj4gcGFyc2VTdGFnZUluT3V0U2VtYW50aWMoKTsKLSAgICBFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPiBwYXJzZVNlbWFudGlj
KCk7Ci0gICAgQVNUOjpRdWFsaWZpZXJzIHBhcnNlUXVhbGlmaWVycygpOwotICAgIEV4cGVjdGVk
PEFTVDo6U3RydWN0dXJlRWxlbWVudCwgRXJyb3I+IHBhcnNlU3RydWN0dXJlRWxlbWVudCgpOwot
ICAgIEV4cGVjdGVkPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiwgRXJyb3I+IHBhcnNlU3RydWN0
dXJlRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
LCBFcnJvcj4gcGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyLCBFcnJvcj4gcGFyc2VFbnVtZXJhdGlvbk1lbWJlcihpbnQ2NF90
IGRlZmF1bHRWYWx1ZSk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24s
IEVycm9yPiBwYXJzZU5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLCBFcnJvcj4gcGFyc2VOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkF0dHJpYnV0ZUJsb2NrLCBFcnJvcj4g
cGFyc2VBdHRyaWJ1dGVCbG9jaygpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbiwgRXJyb3I+IHBhcnNlUGFyYW1ldGVyKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucywgRXJyb3I+IHBhcnNlUGFyYW1ldGVycygpOwotICAgIEV4cGVjdGVkPEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlQ29tcHV0ZUZ1bmN0aW9uRGVjbGFy
YXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBw
YXJzZVZlcnRleE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNs
YXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+
IHBhcnNlT3BlcmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0g
ICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24sIEVycm9yPiBwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biwgRXJyb3I+IHBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpOwotCi0gICAgRXhwZWN0
ZWQ8QVNUOjpCbG9jaywgRXJyb3I+IHBhcnNlQmxvY2soKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkJs
b2NrLCBFcnJvcj4gcGFyc2VCbG9ja0JvZHkoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OklmU3RhdGVt
ZW50LCBFcnJvcj4gcGFyc2VJZlN0YXRlbWVudCgpOwotICAgIEV4cGVjdGVkPEFTVDo6U3dpdGNo
U3RhdGVtZW50LCBFcnJvcj4gcGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OlN3aXRjaENhc2UsIEVycm9yPiBwYXJzZVN3aXRjaENhc2UoKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OkZvckxvb3AsIEVycm9yPiBwYXJzZUZvckxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6Oldo
aWxlTG9vcCwgRXJyb3I+IHBhcnNlV2hpbGVMb29wKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpEb1do
aWxlTG9vcCwgRXJyb3I+IHBhcnNlRG9XaGlsZUxvb3AoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiYpOwotICAgIEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQsIEVycm9yPiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7Ci0gICAgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+IHBhcnNlU3RhdGVtZW50KCk7
Ci0KLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4gcGFyc2VF
ZmZlY3RmdWxFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4sIEVycm9yPiBwYXJzZUVmZmVjdGZ1bEFzc2lnbm1lbnQoKTsKLSAgICBzdHJ1Y3QgU3Vm
Zml4RXhwcmVzc2lvbiB7Ci0gICAgICAgIFN1ZmZpeEV4cHJlc3Npb24oVW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4mJiByZXN1bHQsIGJvb2wgc3VjY2VzcykKLSAgICAgICAgICAgIDogcmVzdWx0
KFdURk1vdmUocmVzdWx0KSkKLSAgICAgICAgICAgICwgc3VjY2VzcyhzdWNjZXNzKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiByZXN1
bHQ7Ci0gICAgICAgIGJvb2wgc3VjY2VzczsKLSAgICAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIHN1Y2Nlc3M7IH0KLSAgICB9OwotICAgIFN1ZmZpeEV4cHJlc3Npb24gcGFyc2VM
aW1pdGVkU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJik7Ci0gICAg
U3VmZml4RXhwcmVzc2lvbiBwYXJzZVN1ZmZpeE9wZXJhdG9yKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+JiYpOwotCi0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVy
cm9yPiBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKTsKLSAgICBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlVGVybmFy
eUNvbmRpdGlvbmFsKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJlZGljYXRlKTsKLSAg
ICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlQXNz
aWdubWVudChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIGxlZnQpOwotICAgIEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZUxvZ2ljYWxC
aW5hcnlPcGVyYXRpb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiwgRXJyb3I+IGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVy
YXRpb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+
IGNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVNoaWZ0KCk7Ci0gICAgRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxlU2hpZnQoVW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlQWRkKCk7Ci0gICAgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21wbGV0ZVBvc3NpYmxl
QWRkKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpOwotICAgIEV4cGVjdGVk
PFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZU11bHRpcGx5
KCk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBjb21w
bGV0ZVBvc3NpYmxlTXVsdGlwbHkoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91
cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJz
ZVBvc3NpYmxlUHJlZml4KGJvb2wgKmlzRWZmZWN0ZnVsID0gbnVsbHB0cik7Ci0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlU3VmZml4
KGJvb2wgKmlzRWZmZWN0ZnVsID0gbnVsbHB0cik7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZUNhbGxFeHByZXNzaW9uKCk7Ci0gICAgRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVRlcm0oKTsKLQotICAg
IExleGVyIG1fbGV4ZXI7Ci0gICAgUGFyc2luZ01vZGUgbV9tb2RlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyZGYwNzM3NmNmOGQ0MGVjN2JhOGMwY2EzNzA3MjM0MGQ0NjIwMWQzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1lbnVt
IGNsYXNzIFBhcnNpbmdNb2RlIDogdWludDhfdCB7Ci0gICAgU3RhbmRhcmRMaWJyYXJ5LAotICAg
IFVzZXIKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3Jp
cHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjcwNTk4ODBkNTNkZWNhOGI2
NDI0ZmUyNjA1NWZlYTBjZWVmYjJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlw
ZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWVudW0gY2xhc3MgVmVydGV4Rm9ybWF0IDogdWludDhfdCB7Ci0gICAgRmxvYXRSMzJH
MzJCMzJBMzIsCi0gICAgRmxvYXRSMzJHMzJCMzIsCi0gICAgRmxvYXRSMzJHMzIsCi0gICAgRmxv
YXRSMzIKLX07Ci0KLXN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGUgewotICAgIFZlcnRleEZvcm1hdCB2
ZXJ0ZXhGb3JtYXQ7Ci0gICAgdW5zaWduZWQgc2hhZGVyTG9jYXRpb247Ci0gICAgdW5zaWduZWQg
bWV0YWxMb2NhdGlvbjsKLX07Ci0KLXVzaW5nIFZlcnRleEF0dHJpYnV0ZXMgPSBWZWN0b3I8VmVy
dGV4QXR0cmlidXRlPjsKLQotLy8gRklYTUU6IEFkZCBiYWNrIDwgMzIgYml0IHRleHR1cmUgdmFs
dWVzIGFuZCBmaWd1cmUgb3V0IGhvdyB0byBib3ggdGhlbSBpbiB3aWRlciB0eXBlcyB3aGVuIHdl
IGxvYWQgZnJvbSB0aGVtLgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDMxNQotCi1lbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQgewotICAgIFI4VW5vcm0sCi0g
ICAgUjhVbm9ybVNyZ2IsCi0gICAgUjhTbm9ybSwKLSAgICBSMTZVbm9ybSwKLSAgICBSMTZTbm9y
bSwKLSAgICBSMTZGbG9hdCwKLSAgICBSRzhVbm9ybSwKLSAgICBSRzhVbm9ybVNyZ2IsCi0gICAg
Ukc4U25vcm0sCi0gICAgQjVHNlI1VW5vcm0sCi0gICAgUjMyVWludCwKLSAgICBSMzJTaW50LAot
ICAgIFIzMkZsb2F0LAotICAgIFJHMTZVbm9ybSwKLSAgICBSRzE2U25vcm0sCi0gICAgUkcxNkZs
b2F0LAotICAgIFJHQkE4VW5vcm0sCi0gICAgUkdCQThVbm9ybVNyZ2IsCi0gICAgUkdCQThTbm9y
bSwKLSAgICBCR1JBOFVub3JtLAotICAgIEJHUkE4VW5vcm1TcmdiLAotICAgIFJHQjEwQTJVbm9y
bSwKLSAgICBSRzExQjEwRmxvYXQsCi0gICAgUkczMlVpbnQsCi0gICAgUkczMlNpbnQsCi0gICAg
UkczMkZsb2F0LAotICAgIFJHQkExNlVub3JtLAotICAgIFJHQkExNlNub3JtLAotICAgIFJHQkEx
NkZsb2F0LAotICAgIFJHQkEzMlVpbnQsCi0gICAgUkdCQTMyU2ludCwKLSAgICBSR0JBMzJGbG9h
dAotfTsKLQotc3RydWN0IEF0dGFjaG1lbnREZXNjcmlwdG9yIHsKLSAgICBUZXh0dXJlRm9ybWF0
IHRleHR1cmVGb3JtYXQ7Ci0gICAgdW5zaWduZWQgbmFtZTsKLX07Ci0KLXN0cnVjdCBBdHRhY2ht
ZW50c1N0YXRlRGVzY3JpcHRvciB7Ci0gICAgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBh
dHRhY2htZW50RGVzY3JpcHRvcnM7Ci0gICAgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGVzY3Jp
cHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I7Ci19OwotCi1lbnVtIGNsYXNz
IFNoYWRlclN0YWdlIDogdWludDhfdCB7Ci0gICAgTm9uZSA9IDAsCi0gICAgVmVydGV4ID0gMSA8
PCAwLAotICAgIEZyYWdtZW50ID0gMSA8PCAxLAotICAgIENvbXB1dGUgPSAxIDw8IDIKLX07Ci0K
LXN0cnVjdCBVbmlmb3JtQnVmZmVyQmluZGluZyB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoTmFtZTsK
LX07Ci0KLXN0cnVjdCBTYW1wbGVyQmluZGluZyB7Ci19OwotCi1zdHJ1Y3QgVGV4dHVyZUJpbmRp
bmcgewotfTsKLQotc3RydWN0IFN0b3JhZ2VCdWZmZXJCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBs
ZW5ndGhOYW1lOwotfTsKLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgxNjggQWRkIHRoZSBkeW5hbWljIHR5cGVzCi0KLXN0cnVjdCBCaW5kaW5n
IHsKLSAgICB1c2luZyBCaW5kaW5nRGV0YWlscyA9IFZhcmlhbnQ8VW5pZm9ybUJ1ZmZlckJpbmRp
bmcsIFNhbXBsZXJCaW5kaW5nLCBUZXh0dXJlQmluZGluZywgU3RvcmFnZUJ1ZmZlckJpbmRpbmc+
OwotICAgIE9wdGlvblNldDxTaGFkZXJTdGFnZT4gdmlzaWJpbGl0eTsKLSAgICBCaW5kaW5nRGV0
YWlscyBiaW5kaW5nOwotICAgIHVuc2lnbmVkIGludGVybmFsTmFtZTsKLSAgICB1bnNpZ25lZCBl
eHRlcm5hbE5hbWU7Ci19OwotCi1zdHJ1Y3QgQmluZEdyb3VwIHsKLSAgICBWZWN0b3I8QmluZGlu
Zz4gYmluZGluZ3M7Ci0gICAgdW5zaWduZWQgbmFtZTsKLX07Ci0KLXVzaW5nIExheW91dCA9IFZl
Y3RvcjxCaW5kR3JvdXA+OwotCi1zdHJ1Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsKLSAg
ICBWZXJ0ZXhBdHRyaWJ1dGVzIHZlcnRleEF0dHJpYnV0ZXM7Ci0gICAgQXR0YWNobWVudHNTdGF0
ZURlc2NyaXB0b3IgYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3I7Ci0gICAgTGF5b3V0IGxheW91
dDsKLSAgICBTdHJpbmcgdmVydGV4RW50cnlQb2ludE5hbWU7Ci0gICAgU3RyaW5nIGZyYWdtZW50
RW50cnlQb2ludE5hbWU7Ci19OwotCi1zdHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7
Ci0gICAgTGF5b3V0IGxheW91dDsKLSAgICBTdHJpbmcgZW50cnlQb2ludE5hbWU7Ci19OwotCi11
c2luZyBQaXBlbGluZURlc2NyaXB0b3IgPSBWYXJpYW50PFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj47Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
ZXBhcmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDJjNWNhYzQzYzk1OWEz
ZTcxOGQwYTBiNDhlYmMxYzRlNGI4MzU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlcGFyZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNURHVtcGVyLmgiCi0jaW5j
bHVkZSAiV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIldITFNMQ2hl
Y2tSZWZlcmVuY2VUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNl
cy5oIgotI2luY2x1ZGUgIldITFNMQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMQ29tcHV0ZURp
bWVuc2lvbnMuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgiCi0jaW5j
bHVkZSAiV0hMU0xIaWdoWm9tYmllRmluZGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIgotI2luY2x1
ZGUgIldITFNMTmFtZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3BhY2UuaCIKLSNp
bmNsdWRlICJXSExTTFBhcnNlci5oIgotI2luY2x1ZGUgIldITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUHJv
cGVydHlSZXNvbHZlci5oIgotI2luY2x1ZGUgIldITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgot
I2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCIKLSNpbmNsdWRlICJXSExTTFNl
bWFudGljTWF0Y2hlci5oIgotI2luY2x1ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCIKLSNpbmNsdWRl
ICJXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCIKLSNpbmNsdWRlICJXSExTTFN5bnRoZXNp
emVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RydWN0IFNo
YWRlck1vZHVsZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0KLSAg
ICBTaGFkZXJNb2R1bGUoY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZSkKLSAgICAgICAgOiB3aGxz
bFNvdXJjZSh3aGxzbFNvdXJjZSkKLSAgICB7Ci0gICAgfQotCi0gICAgU3RyaW5nIHdobHNsU291
cmNlOwotfTsKLQotfQotCi19Ci0KLW5hbWVzcGFjZSBzdGQgewotCi12b2lkIGRlZmF1bHRfZGVs
ZXRlPFdlYkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGU+OjpvcGVyYXRvcigpKFdlYkNvcmU6OldI
TFNMOjpTaGFkZXJNb2R1bGUqIHNoYWRlck1vZHVsZSkgY29uc3QKLXsKLSAgICBkZWxldGUgc2hh
ZGVyTW9kdWxlOwotfQotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RCZWZvcmVFYWNoUGFzcyA9IGZh
bHNlOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBZnRlclBhcnNpbmcgPSBmYWxzZTsK
LXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQXRFbmQgPSBmYWxzZTsKLXN0YXRpYyBjb25z
dGV4cHIgYm9vbCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzID0gZmFsc2U7Ci1zdGF0aWMgY29uc3Rl
eHByIGJvb2wgZHVtcFBhc3NGYWlsdXJlID0gZHVtcEFTVEJlZm9yZUVhY2hQYXNzIHx8IGR1bXBB
U1RBZnRlclBhcnNpbmcgfHwgZHVtcEFTVEF0RW5kIHx8IGFsd2F5c0R1bXBQYXNzRmFpbHVyZXM7
Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcFBoYXNlVGltZXMgPSBmYWxzZTsKLQotc3RhdGlj
IGNvbnN0ZXhwciBib29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSA9IGZhbHNlOwotCi1zdGF0
aWMgYm9vbCBkdW1wQVNUSWZOZWVkZWQoYm9vbCBzaG91bGREdW1wLCBQcm9ncmFtJiBwcm9ncmFt
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAgIGlmIChzaG91bGREdW1wKSB7Ci0gICAgICAg
IGRhdGFMb2dMbihtZXNzYWdlKTsKLSAgICAgICAgZHVtcEFTVChwcm9ncmFtKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9v
bCBkdW1wQVNUQWZ0ZXJQYXJzaW5nSWZOZWVkZWQoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBy
ZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1bXBBU1RBZnRlclBhcnNpbmcsIHByb2dyYW0sICJBU1Qg
YWZ0ZXIgcGFyc2luZyIpOwotfQotCi1zdGF0aWMgYm9vbCBkdW1wQVNUQmV0d2VlbkVhY2hQYXNz
SWZOZWVkZWQoUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICBy
ZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1bXBBU1RCZWZvcmVFYWNoUGFzcywgcHJvZ3JhbSwgbWVz
c2FnZSk7Ci19Ci0KLXN0YXRpYyBib29sIGR1bXBBU1RBdEVuZElmTmVlZGVkKFByb2dyYW0mIHBy
b2dyYW0pCi17Ci0gICAgcmV0dXJuIGR1bXBBU1RJZk5lZWRlZChkdW1wQVNUQXRFbmQsIHByb2dy
YW0sICJBU1QgYXQgZW5kIik7Ci19Ci0KLXVzaW5nIFBoYXNlVGltZXMgPSBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU2Vjb25kcz4+OwotCi1zdGF0aWMgdm9pZCBsb2dQaGFzZVRpbWVzKFBoYXNl
VGltZXMmIHBoYXNlVGltZXMpCi17Ci0gICAgaWYgKCFkdW1wUGhhc2VUaW1lcykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IHBoYXNlVGltZXMpCi0gICAgICAgIGRh
dGFMb2dMbihlbnRyeS5maXJzdCwgIjogIiwgZW50cnkuc2Vjb25kLm1pbGxpc2Vjb25kcygpLCAi
IG1zIik7Ci19Ci0KLWNsYXNzIFBoYXNlVGltZXIgewotcHVibGljOgotICAgIFBoYXNlVGltZXIo
Y29uc3QgY2hhciogcGhhc2VOYW1lLCBQaGFzZVRpbWVzJiBwaGFzZVRpbWVzKQotICAgICAgICA6
IG1fcGhhc2VUaW1lcyhwaGFzZVRpbWVzKQotICAgIHsKLSAgICAgICAgaWYgKGR1bXBQaGFzZVRp
bWVzKSB7Ci0gICAgICAgICAgICBtX3BoYXNlTmFtZSA9IHBoYXNlTmFtZTsKLSAgICAgICAgICAg
IG1fc3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IH5QaGFzZVRpbWVyKCkKLSAgICB7Ci0gICAgICAgIGlmIChkdW1wUGhhc2VUaW1lcykgewotICAg
ICAgICAgICAgYXV0byB0b3RhbFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnQ7
Ci0gICAgICAgICAgICBtX3BoYXNlVGltZXMuYXBwZW5kKHsgbV9waGFzZU5hbWUsIHRvdGFsVGlt
ZSB9KTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9waGFzZU5h
bWU7Ci0gICAgUGhhc2VUaW1lcyYgbV9waGFzZVRpbWVzOwotICAgIE1vbm90b25pY1RpbWUgbV9z
dGFydDsKLX07Ci0KLVVuaXF1ZVJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShj
b25zdCBTdHJpbmcmIHdobHNsU291cmNlKQotewotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODcyIFdlIHNob3VsZCBjb25zaWRlciBtb3Zp
bmcgYXMgbXVjaCB3b3JrIGZyb20gcHJlcGFyZSgpIGludG8gaGVyZSBhcyBwb3NzaWJsZS4KLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxTaGFkZXJNb2R1bGU+KHdobHNsU291cmNlKTsKLX0KLQot
I2RlZmluZSBDSEVDS19QQVNTKHBhc3MsIC4uLikgXAotICAgIGRvIHsgXAotICAgICAgICBkdW1w
QVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFTVCBiZWZvcmUgIiAjIHBhc3Mp
OyBcCi0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigjcGFzcywgcGhhc2VUaW1lcyk7IFwK
LSAgICAgICAgYXV0byByZXN1bHQgPSBwYXNzKF9fVkFfQVJHU19fKTsgXAotICAgICAgICBpZiAo
IXJlc3VsdCkgeyBcCi0gICAgICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKSBcCi0gICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgcGFzczogIiAjIHBhc3MsIExleGVyOjplcnJvclN0
cmluZyhyZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsgXAotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhyZXN1bHQu
ZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsgXAotICAgICAgICB9IFwKLSAg
ICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIFJVTl9QQVNTKHBhc3MsIC4uLikgXAotICAgIGRvIHsg
XAotICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCi0g
ICAgICAgIGR1bXBBU1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGJlZm9y
ZSAiICMgcGFzcyk7IFwKLSAgICAgICAgcGFzcyhfX1ZBX0FSR1NfXyk7IFwKLSAgICB9IHdoaWxl
ICgwKQotCi1zdGF0aWMgRXhwZWN0ZWQ8UHJvZ3JhbSwgU3RyaW5nPiBwcmVwYXJlU2hhcmVkKFBo
YXNlVGltZXMmIHBoYXNlVGltZXMsIGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UxLCBjb25zdCBT
dHJpbmcqIHdobHNsU291cmNlMiA9IG51bGxwdHIpCi17Ci0gICAgUHJvZ3JhbSBwcm9ncmFtOwot
ICAgIFBhcnNlciBwYXJzZXI7Ci0KLSAgICB7Ci0gICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQo
KS5zZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLQotICAg
ICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoInBhcnNlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgd2hsc2xTb3VyY2UxLCBQ
YXJzaW5nTW9kZTo6VXNlciwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotICAgICAgICBp
ZiAoIXBhcnNlUmVzdWx0KSB7Ci0gICAgICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbigiZmFpbGVkIHRvIHBhcnNlIHRoZSBwcm9ncmFtOiAiLCBM
ZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxz
bFNvdXJjZTIpKTsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJy
b3JTdHJpbmcocGFyc2VSZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIp
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAod2hsc2xTb3VyY2UyKSB7Ci0gICAgICAgICAgICBw
cm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6
TmFtZVNwYWNlMik7Ci0gICAgICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNl
KHByb2dyYW0sICp3aGxzbFNvdXJjZTIsIFBhcnNpbmdNb2RlOjpVc2VyLCBBU1Q6Ok5hbWVTcGFj
ZTo6TmFtZVNwYWNlMik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJmYWlsZWQgdG8gcGFyc2UgdGhlIHByb2dyYW06ICIsIExleGVyOjplcnJvclN0cmluZyhw
YXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VS
ZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVudE5h
bWVTcGFjZShBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICB9Ci0KLSAgICB7
Ci0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigiaW5jbHVkZVN0YW5kYXJkTGlicmFyeSIs
IHBoYXNlVGltZXMpOwotICAgICAgICBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KHByb2dyYW0sIHBh
cnNlciwgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5KTsKLSAgICB9Ci0KLSAgICBpZiAoIWR1bXBB
U1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGFmdGVyIHBhcnNpbmciKSkK
LSAgICAgICAgZHVtcEFTVEFmdGVyUGFyc2luZ0lmTmVlZGVkKHByb2dyYW0pOwotCi0gICAgTmFt
ZVJlc29sdmVyIG5hbWVSZXNvbHZlcihwcm9ncmFtLm5hbWVDb250ZXh0KCkpOwotICAgIENIRUNL
X1BBU1MocmVzb2x2ZU5hbWVzSW5UeXBlcywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKLSAgICBD
SEVDS19QQVNTKGNoZWNrUmVjdXJzaXZlVHlwZXMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1Mo
c3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNT
KHJlc29sdmVUeXBlTmFtZXNJbkZ1bmN0aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKLSAg
ICBDSEVDS19QQVNTKHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMsIHByb2dyYW0pOwotICAgIENIRUNL
X1BBU1MoY2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMsIHByb2dyYW0pOwotCi0gICAgQ0hFQ0tfUEFT
UyhjaGVjaywgcHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MocHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0KLSAgICBSVU5fUEFTUyhjaGVja0xpdGVyYWxU
eXBlcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1RleHR1cmVSZWZlcmVuY2VzLCBw
cm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrUmVmZXJlbmNlVHlwZXMsIHByb2dyYW0pOwot
ICAgIFJVTl9QQVNTKHJlc29sdmVQcm9wZXJ0aWVzLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhm
aW5kSGlnaFpvbWJpZXMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tTdGF0ZW1lbnRC
ZWhhdmlvciwgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja1JlY3Vyc2lvbiwgcHJvZ3Jh
bSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja0Z1bmN0aW9uU3RhZ2VzLCBwcm9ncmFtKTsKLSAgICBS
VU5fUEFTUyhwcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLCBwcm9ncmFtKTsKLQotICAgIGR1bXBB
U1RBdEVuZElmTmVlZGVkKHByb2dyYW0pOwotCi0gICAgcmV0dXJuIHByb2dyYW07Ci19Ci0KLUV4
cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJN
b2R1bGUmIHZlcnRleFNoYWRlck1vZHVsZSwgY29uc3QgU2hhZGVyTW9kdWxlKiBmcmFnbWVudFNo
YWRlck1vZHVsZSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpCi17Ci0gICAgUGhhc2VUaW1lcyBwaGFzZVRpbWVzOwotICAgIE1ldGFsOjpSZW5kZXJN
ZXRhbENvZGUgZ2VuZXJhdGVkQ29kZTsKLQotICAgIHsKLSAgICAgICAgUGhhc2VUaW1lciBwaGFz
ZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgIGNvbnN0IFN0cmlu
Zyogc2Vjb25kU2hhZGVyID0gbnVsbHB0cjsKLSAgICAgICAgYm9vbCBkaXN0aW5jdEZyYWdtZW50
U2hhZGVyID0gZmFsc2U7Ci0gICAgICAgIGlmIChmcmFnbWVudFNoYWRlck1vZHVsZSAmJiBmcmFn
bWVudFNoYWRlck1vZHVsZSAhPSAmdmVydGV4U2hhZGVyTW9kdWxlKSB7Ci0gICAgICAgICAgICBz
ZWNvbmRTaGFkZXIgPSAmZnJhZ21lbnRTaGFkZXJNb2R1bGUtPndobHNsU291cmNlOwotICAgICAg
ICAgICAgZGlzdGluY3RGcmFnbWVudFNoYWRlciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
YXV0byBwcm9ncmFtID0gcHJlcGFyZVNoYXJlZChwaGFzZVRpbWVzLCB2ZXJ0ZXhTaGFkZXJNb2R1
bGUud2hsc2xTb3VyY2UsIHNlY29uZFNoYWRlcik7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwotCi0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGlj
czsKLSAgICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNl
bWFudGljcyIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1h
dGNoU2VtYW50aWNzKCpwcm9ncmFtLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGRpc3RpbmN0
RnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTW9kdWxlKTsKLSAgICAgICAgICAgIGlmICgh
bWF0Y2hlZFNlbWFudGljcykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
TGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yKCJDb3VsZCBub3QgbWF0Y2ggc2VtYW50aWNzIl9zdHIp
LCB2ZXJ0ZXhTaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UsIHNlY29uZFNoYWRlcikpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJnZW5l
cmF0ZU1ldGFsQ29kZSIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgZ2VuZXJhdGVkQ29kZSA9
IE1ldGFsOjpnZW5lcmF0ZU1ldGFsQ29kZSgqcHJvZ3JhbSwgV1RGTW92ZSgqbWF0Y2hlZFNlbWFu
dGljcyksIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgbG9nUGhhc2VUaW1lcyhwaGFzZVRpbWVzKTsKLQotICAgIFJlbmRlclByZXBhcmVS
ZXN1bHQgcmVzdWx0OwotICAgIHJlc3VsdC5tZXRhbFNvdXJjZSA9IFdURk1vdmUoZ2VuZXJhdGVk
Q29kZS5tZXRhbFNvdXJjZSk7Ci0gICAgcmVzdWx0Lm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFt
ZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUpOwot
ICAgIHJlc3VsdC5tYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZSA9IFdURk1vdmUoZ2VuZXJh
dGVkQ29kZS5tYW5nbGVkRnJhZ21lbnRFbnRyeVBvaW50TmFtZSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotRXhwZWN0ZWQ8Q29tcHV0ZVByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShj
b25zdCBTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikKLXsKLSAgICBQaGFzZVRpbWVzIHBoYXNlVGlt
ZXM7Ci0gICAgTWV0YWw6OkNvbXB1dGVNZXRhbENvZGUgZ2VuZXJhdGVkQ29kZTsKLSAgICBzdGQ6
Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKLQotICAgIHsK
LSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhhc2VUaW1l
cyk7Ci0gICAgICAgIGF1dG8gcHJvZ3JhbSA9IHByZXBhcmVTaGFyZWQocGhhc2VUaW1lcywgc2hh
ZGVyTW9kdWxlLndobHNsU291cmNlKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7Ci0KLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsKLSAg
ICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNlbWFudGlj
cyIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1hdGNoU2Vt
YW50aWNzKCpwcm9ncmFtLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICAgICAgICAg
IGlmICghbWF0Y2hlZFNlbWFudGljcykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yKCJDb3VsZCBub3QgbWF0Y2ggc2VtYW50aWNz
Il9zdHIpLCBzaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigiY29tcHV0ZURpbWVuc2lvbnMi
LCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gV0hMU0w6OmNv
bXB1dGVEaW1lbnNpb25zKCpwcm9ncmFtLCAqbWF0Y2hlZFNlbWFudGljcy0+c2hhZGVyKTsKLSAg
ICAgICAgICAgIGlmICghY29tcHV0ZURpbWVuc2lvbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0cmluZyhFcnJvcigiQ291bGQgbm90IG1hdGNo
IGNvbXB1dGUgZGltZW5zaW9ucyJfc3RyKSwgc2hhZGVyTW9kdWxlLndobHNsU291cmNlKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIo
ImdlbmVyYXRlTWV0YWxDb2RlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBnZW5lcmF0ZWRD
b2RlID0gTWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlKCpwcm9ncmFtLCBXVEZNb3ZlKCptYXRjaGVk
U2VtYW50aWNzKSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgbG9nUGhhc2VUaW1lcyhwaGFzZVRpbWVzKTsKLQotICAgIENvbXB1dGVQ
cmVwYXJlUmVzdWx0IHJlc3VsdDsKLSAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdl
bmVyYXRlZENvZGUubWV0YWxTb3VyY2UpOwotICAgIHJlc3VsdC5tYW5nbGVkRW50cnlQb2ludE5h
bWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWFuZ2xlZEVudHJ5UG9pbnROYW1lKTsKLSAgICBy
ZXN1bHQuY29tcHV0ZURpbWVuc2lvbnMgPSBXVEZNb3ZlKCpjb21wdXRlRGltZW5zaW9ucyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQzMzlhYmI5NDNlOGQ4Y2E4M2ZmNGY0MTk4MzNi
MjM4NzZjYTQzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNp
bmNsdWRlICJXSExTTE1hbmdsZWROYW1lcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0vLyBIaWRlIHRoZSBjb250
ZW50cyBvZiB0aGUgU2hhZGVyTW9kdWxlLiBDbGllbnRzIG9mIHRoZSBjb21waWxlciBzaG91bGRu
J3QgY2FyZSB3aGF0J3MgaW5zaWRlIGl0Lgotc3RydWN0IFNoYWRlck1vZHVsZTsKLQotfQotCi19
Ci0KLW5hbWVzcGFjZSBzdGQgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkZWZhdWx0X2RlbGV0ZTxX
ZWJDb3JlOjpXSExTTDo6U2hhZGVyTW9kdWxlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFdlYkNv
cmU6OldITFNMOjpTaGFkZXJNb2R1bGUqKSBjb25zdDsKLX07Ci0KLX0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jb25zdGV4cHIgYm9vbCBkdW1wTWV0YWxD
b21waWxlVGltZXMgPSBmYWxzZTsKLQotVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hh
ZGVyTW9kdWxlKGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpOwotCi1zdHJ1Y3QgUmVuZGVyUHJl
cGFyZVJlc3VsdCB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6
TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWU7Ci0gICAgTWV0
YWw6Ok1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19
OwotRXhwZWN0ZWQ8UmVuZGVyUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNo
YWRlck1vZHVsZSYgdmVydGV4U2hhZGVyTW9kdWxlLCBjb25zdCBTaGFkZXJNb2R1bGUqIGZyYWdt
ZW50U2hhZGVyTW9kdWxlLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKLQotc3RydWN0IENv
bXB1dGVEaW1lbnNpb25zIHsKLSAgICB1bnNpZ25lZCB3aWR0aDsKLSAgICB1bnNpZ25lZCBoZWln
aHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7Ci19OwotCi1zdHJ1Y3QgQ29tcHV0ZVByZXBhcmVSZXN1
bHQgewotICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7Ci0gICAgTWV0YWw6Ok1hbmdsZWRG
dW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnROYW1lOwotICAgIENvbXB1dGVEaW1lbnNpb25z
IGNvbXB1dGVEaW1lbnNpb25zOwotfTsKLUV4cGVjdGVkPENvbXB1dGVQcmVwYXJlUmVzdWx0LCBT
dHJpbmc+IHByZXBhcmUoY29uc3QgU2hhZGVyTW9kdWxlJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGlt
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5
ZDA3ZDgwODg2NDRlZmFkNDQ1MzRhOTA2YjNhNTYzM2M0OTA3My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5oIgotI2luY2x1ZGUgIldITFNMQVNU
RHVtcGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3Jh
bS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdpdGguaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0
b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0vLyBU
aGlzIHBhc3Mgd29ya3MgYnkgZW5zdXJpbmcgcHJvcGVyIHZhcmlhYmxlIGxpZmV0aW1lcy4gSW4g
V0hMU0wsIGVhY2ggdmFyaWFibGUKLS8vIGhhcyBnbG9iYWwgbGlmZXRpbWUuIFNvIHJldHVybmlu
ZyBhIHBvaW50ZXIgdG8gYSBsb2NhbCB2YXJpYWJsZSBpcyBhIHRvdGFsbHkKLS8vIGxlZ2l0aW1h
dGUgYW5kIHdlbGwtc3BlY2lmaWVkIHRoaW5nIHRvIGRvLgotLy8KLS8vIFdlIGltcGxlbWVudCB0
aGlzIGJ5OgotLy8gLSBXZSBub3RlIGV2ZXJ5IHZhcmlhYmxlIHdob3NlIGFkZHJlc3Mgd2UgdGFr
ZS4KLS8vIC0gRWFjaCBzdWNoIHZhcmlhYmxlIGdldHMgZGVmaW5lZCBhcyBhIGZpZWxkIGluIGEg
c3RydWN0LgotLy8gLSBFYWNoIGZ1bmN0aW9uIHdoaWNoIGlzIGFuIGVudHJ5IHBvaW50IGRlZmlu
ZXMgdGhpcyBzdHJ1Y3QuCi0vLyAtIEVhY2ggbm9uIGVudHJ5IHBvaW50IHRha2VzIGEgcG9pbnRl
ciB0byB0aGlzIHN0cnVjdCBhcyBpdHMgZmluYWwgcGFyYW1ldGVyLgotLy8gLSBFYWNoIGNhbGwg
dG8gYSBub24tbmF0aXZlIGZ1bmN0aW9uIGlzIHJld3JpdHRlbiB0byBwYXNzIGEgcG9pbnRlciB0
byB0aGUKLS8vICAgc3RydWN0IGFzIHRoZSBsYXN0IGNhbGwgYXJndW1lbnQuCi0vLyAtIEVhY2gg
dmFyaWFibGUgcmVmZXJlbmNlIHRvICJ4Iiwgd2hlcmUgIngiIGVuZHMgdXAgaW4gdGhlIHN0cnVj
dCwgaXMKLS8vICAgbW9kaWZpZWQgdG8gaW5zdGVhZCBiZSAic3RydWN0LT54Ii4gV2Ugc3RvcmUg
dG8gInN0cnVjdC0+eCIgYWZ0ZXIgZGVjbGFyaW5nCi0vLyAgICJ4Ii4gSWYgIngiIGlzIGEgZnVu
Y3Rpb24gcGFyYW1ldGVyLCB3ZSBzdG9yZSB0byAic3RydWN0LT54IiBhcyB0aGUgZmlyc3QKLS8v
ICAgdGhpbmcgd2UgZG8gaW4gdGhlIGZ1bmN0aW9uIGJvZHkuCi0KLWNsYXNzIEVzY2FwZWRWYXJp
YWJsZUNvbGxlY3RvciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICB1c2luZyBCYXNlID0g
VmlzaXRvcjsKLXB1YmxpYzoKLQotICAgIHZvaWQgZXNjYXBlVmFyaWFibGVVc2UoQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uKQotICAgIHsKLSAgICAgICAgaWYgKCFpczxBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlPihleHByZXNzaW9uKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEFyZSB3ZSBt
aXNzaW5nIGFueSBpbnRlcmVzdGluZyBwcm9kdWN0aW9ucyBoZXJlPwotICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMxMQotICAgICAgICAg
ICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBhdXRvKiB2YXJpYWJsZSA9IGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZl
cmVuY2U+KGV4cHJlc3Npb24pLnZhcmlhYmxlKCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZSk7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBza2lwIHRoaXMgaWYgd2UgbWFyayBhbGwgaW50
ZXJuYWwgdmFyaWFibGVzIHdpdGggYSBiaXQsIHNpbmNlIHdlCi0gICAgICAgIC8vIG5ldmVyIG1h
a2UgYW55IGludGVybmFsIHZhcmlhYmxlIGVzY2FwZSB0aGUgY3VycmVudCBzY29wZSBpdCBpcyBk
ZWZpbmVkIGluOgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MzgzCi0gICAgICAgIG1fZXNjYXBlZFZhcmlhYmxlcy5hZGQodmFyaWFibGUsIG1h
a2VTdHJpbmcoIl8iLCB2YXJpYWJsZS0+bmFtZSgpLCAiXyIsIG1fY291bnQrKykpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVy
RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtYWtlUG9pbnRlckV4cHJl
c3Npb24ubWlnaHRFc2NhcGUoKSkKLSAgICAgICAgICAgIGVzY2FwZVZhcmlhYmxlVXNlKG1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5taWdodEVzY2FwZSgpKQotICAgICAgICAgICAgZXNjYXBlVmFyaWFibGVVc2UobWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9kZSgp
ICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICBCYXNlOjp2aXNp
dChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uKiwgU3RyaW5nPiB0YWtlRXNjYXBlZFZhcmlhYmxlcygpIHsgcmV0dXJuIFdU
Rk1vdmUobV9lc2NhcGVkVmFyaWFibGVzKTsgfQotCi1wcml2YXRlOgotICAgIHNpemVfdCBtX2Nv
dW50IHsgMSB9OwotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgU3RyaW5n
PiBtX2VzY2FwZWRWYXJpYWJsZXM7Ci19OwotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBUb2tlbiBh
bm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZSB0eXBlKQotewotICAgIHJldHVybiBUb2tlbiB7IHsg
fSwgdHlwZSB9OwotfQotCi1jbGFzcyBQcmVzZXJ2ZUxpZmV0aW1lcyA6IHB1YmxpYyBWaXNpdG9y
IHsKLSAgICB1c2luZyBCYXNlID0gVmlzaXRvcjsKLXB1YmxpYzoKLSAgICBQcmVzZXJ2ZUxpZmV0
aW1lcyhSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiBzdHJ1Y3RUeXBlLCBjb25zdCBIYXNoTWFwPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIEFTVDo6U3RydWN0dXJlRWxlbWVudCo+JiB2YXJpYWJs
ZU1hcHBpbmcpCi0gICAgICAgIDogbV9zdHJ1Y3RUeXBlKFdURk1vdmUoc3RydWN0VHlwZSkpCi0g
ICAgICAgICwgbV9wb2ludGVyVG9TdHJ1Y3RUeXBlKEFTVDo6UG9pbnRlclR5cGU6OmNyZWF0ZShh
bm9ueW1vdXNUb2tlbihUb2tlbjo6VHlwZTo6SWRlbnRpZmllciksIEFTVDo6QWRkcmVzc1NwYWNl
OjpUaHJlYWQsIG1fc3RydWN0VHlwZS5jb3B5UmVmKCkpKQotICAgICAgICAsIG1fdmFyaWFibGVN
YXBwaW5nKHZhcmlhYmxlTWFwcGluZykKLSAgICB7IH0KLQotICAgIFVuaXF1ZVJlZjxBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlPiBtYWtlU3RydWN0VmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAg
ICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpW
YXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcCgqbV9zdHJ1Y3RW
YXJpYWJsZSkpOwotICAgICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZSgqbV9z
dHJ1Y3RWYXJpYWJsZS0+dHlwZSgpKTsKLSAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2Ut
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRo
cmVhZCB9KTsKLSAgICAgICAgcmV0dXJuIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlOwotICAgIH0K
LQotICAgIFVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPiBhc3NpZ25WYXJpYWJs
ZUludG9TdHJ1Y3QoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZSwgQVNUOjpTdHJ1
Y3R1cmVFbGVtZW50KiBlbGVtZW50KQotICAgIHsKLSAgICAgICAgYXV0byBsaHMgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KHZhcmlhYmxlLmNvZGVMb2NhdGlv
bigpLCBtYWtlU3RydWN0VmFyaWFibGVSZWZlcmVuY2UoKSwgZWxlbWVudCk7Ci0gICAgICAgIGxo
cy0+c2V0VHlwZSgqdmFyaWFibGUudHlwZSgpKTsKLSAgICAgICAgbGhzLT5zZXRUeXBlQW5ub3Rh
dGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAg
ICAgICAgYXV0byByaHMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFT
VDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAodmFyaWFibGUpKTsKLSAgICAgICAgcmhzLT5zZXRU
eXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICByaHMtPnNldFR5cGVBbm5vdGF0aW9uKEFT
VDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAgICAgICBh
dXRvIGFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+
KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKGxocyksIFdURk1vdmUocmhzKSk7Ci0g
ICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIGFz
c2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAg
ICByZXR1cm4gYXNzaWdubWVudDsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBhcnNpbmdNb2RlKCkgPT0gUGFyc2luZ01vZGU6OlN0
YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBib29sIGlzRW50
cnlQb2ludCA9ICEhZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCk7Ci0gICAgICAg
IGlmIChpc0VudHJ5UG9pbnQpIHsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0VmFyaWFibGVEZWNs
YXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihmdW5jdGlv
bkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygpLAotICAgICAgICAg
ICAgICAgIG1fc3RydWN0VHlwZS5jb3B5UmVmKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRy
KTsKLQotICAgICAgICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3Jh
cChzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBzdHJ1Y3RWYXJpYWJs
ZVJlZmVyZW5jZS0+c2V0VHlwZShtX3N0cnVjdFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAg
IHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1
ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0KLSAgICAgICAgICAgIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMgc3RydWN0VmFyaWFibGVEZWNsYXJhdGlvbnM7Ci0gICAgICAgICAg
ICBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShzdHJ1Y3RWYXJpYWJs
ZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdERlY2xhcmF0aW9uU3RhdGVt
ZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Pihm
dW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVE
ZWNsYXJhdGlvbnMpKTsKLQotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVz
c2lvbj4gbWFrZVBvaW50ZXJFeHByZXNzaW9uKG5ldyBBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lv
bihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFi
bGVSZWZlcmVuY2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKSk7Ci0g
ICAgICAgICAgICBtYWtlUG9pbnRlckV4cHJlc3Npb24tPnNldFR5cGUobV9wb2ludGVyVG9TdHJ1
Y3RUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBtYWtlUG9pbnRlckV4cHJlc3Npb24tPnNl
dFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgYXV0byBw
b2ludGVyRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMoKSwK
LSAgICAgICAgICAgICAgICBtX3BvaW50ZXJUb1N0cnVjdFR5cGUuY29weVJlZigpLCAid3JhcHBl
ciJfcywgbnVsbHB0ciwgV1RGTW92ZShtYWtlUG9pbnRlckV4cHJlc3Npb24pKTsKLSAgICAgICAg
ICAgIG1fc3RydWN0VmFyaWFibGUgPSAmcG9pbnRlckRlY2xhcmF0aW9uOwotCi0gICAgICAgICAg
ICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBvaW50ZXJWYXJpYWJsZURlY2xhcmF0aW9uczsK
LSAgICAgICAgICAgIHBvaW50ZXJWYXJpYWJsZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShw
b2ludGVyRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGF1dG8gcG9pbnRlckRlY2xhcmF0aW9u
U3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50PihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUocG9pbnRlclZh
cmlhYmxlRGVjbGFyYXRpb25zKSk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5i
bG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMCwgV1RGTW92ZShzdHJ1Y3REZWNsYXJhdGlvblN0
YXRlbWVudCkpOwotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVt
ZW50cygpLmluc2VydCgxLCBXVEZNb3ZlKHBvaW50ZXJEZWNsYXJhdGlvblN0YXRlbWVudCkpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBwb2ludGVyRGVjbGFyYXRpb24gPSBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oZnVuY3Rpb25EZWZpbml0aW9u
LmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMoKSwKLSAgICAgICAgICAgICAgICBtX3Bv
aW50ZXJUb1N0cnVjdFR5cGUuY29weVJlZigpLCAid3JhcHBlciJfcywgbnVsbHB0ciwgbnVsbHB0
cik7Ci0gICAgICAgICAgICBtX3N0cnVjdFZhcmlhYmxlID0gJnBvaW50ZXJEZWNsYXJhdGlvbjsK
LSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuYXBwZW5kKFdURk1v
dmUocG9pbnRlckRlY2xhcmF0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBCYXNlOjp2aXNp
dChmdW5jdGlvbkRlZmluaXRpb24pOwotCi0gICAgICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDog
ZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKSkgewotICAgICAgICAgICAgYXV0byBpdGVy
ID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCgmcGFyYW1ldGVyKTsKLSAgICAgICAgICAgIGlmIChp
dGVyID09IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5zdGF0ZW1lbnRzKCku
aW5zZXJ0KGlzRW50cnlQb2ludCA/IDIgOiAwLAotICAgICAgICAgICAgICAgIG1ha2VVbmlxdWVS
ZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Pihhc3NpZ25WYXJpYWJsZUludG9T
dHJ1Y3QocGFyYW1ldGVyLCBpdGVyLT52YWx1ZSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IElubmVyIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gV0hMU0wuIFNvIHRoaXMgaXMgZmlu
ZS4KLSAgICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RydWN0VmFyaWFibGUpOwotCi0gICAgICAg
IEJhc2U6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLQotICAgICAgICAvLyBUaGlzIHdvcmtzIGJl
Y2F1c2UgaXQncyBpbGxlZ2FsIHRvIGNhbGwgYW4gZW50cnlwb2ludC4gVGhlcmVmb3JlLCB3ZSBj
YW4gb25seQotICAgICAgICAvLyBjYWxsIGZ1bmN0aW9ucyB3aGVyZSB3ZSd2ZSBhbHJlYWR5IGFw
cGVuZGVkIHRoaXMgc3RydWN0IGFzIGl0cyBmaW5hbCBwYXJhbWV0ZXIuCi0gICAgICAgIGlmICgh
Y2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKS5pc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAm
JiBjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpLnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygp
LmFwcGVuZChtYWtlU3RydWN0VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RydWN0VmFyaWFibGUpOwotCi0g
ICAgICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVu
Y2UudmFyaWFibGUoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1fdmFyaWFibGVNYXBwaW5nLmVu
ZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiB0eXBlID0gKnZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCktPnR5cGUoKTsKLSAgICAgICAg
QVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IHZhcmlhYmxlUmVmZXJlbmNlLnR5
cGVBbm5vdGF0aW9uKCk7Ci0gICAgICAgIGF1dG8qIGludGVybmFsRmllbGQgPSBBU1Q6OnJlcGxh
Y2VXaXRoPEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KHZhcmlhYmxlUmVmZXJlbmNlLCB2
YXJpYWJsZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSwgbWFrZVN0cnVjdFZhcmlhYmxlUmVmZXJl
bmNlKCksIGl0ZXItPnZhbHVlKTsKLSAgICAgICAgaW50ZXJuYWxGaWVsZC0+c2V0VHlwZShXVEZN
b3ZlKHR5cGUpKTsKLSAgICAgICAgaW50ZXJuYWxGaWVsZC0+c2V0VHlwZUFubm90YXRpb24oV1RG
TW92ZSh0eXBlQW5ub3RhdGlvbikpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3N0cnVjdFZhcmlhYmxl
KTsKLQotICAgICAgICBCYXNlOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7
Ci0KLSAgICAgICAgQVNUOjpTdGF0ZW1lbnRzIHN0YXRlbWVudHM7Ci0gICAgICAgIGZvciAoVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKSB7Ci0g
ICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlID0gdmFyaWFibGVE
ZWNsYXJhdGlvbi5nZXQoKTsKLQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnMgZGVjbGFyYXRpb25zOwotICAgICAgICAgICAgICAgIGRlY2xh
cmF0aW9ucy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAg
ICAgICAgc3RhdGVtZW50cy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50Pih2YXJpYWJsZS5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShkZWNsYXJh
dGlvbnMpKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdmFy
aWFibGVNYXBwaW5nLmZpbmQoJnZhcmlhYmxlKTsKLSAgICAgICAgICAgIGlmIChpdGVyICE9IG1f
dmFyaWFibGVNYXBwaW5nLmVuZCgpKQotICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuYXBwZW5k
KG1ha2VVbmlxdWVSZWY8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Pihhc3NpZ25W
YXJpYWJsZUludG9TdHJ1Y3QodmFyaWFibGUsIGl0ZXItPnZhbHVlKSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OlN0YXRlbWVudExpc3Q+KHZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LCB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5jb2RlTG9j
YXRpb24oKSwgV1RGTW92ZShzdGF0ZW1lbnRzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiogbV9zdHJ1Y3RWYXJpYWJsZSB7IG51bGxwdHIgfTsKLQot
ICAgIFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+IG1fc3RydWN0VHlwZTsKLSAgICBSZWY8QVNUOjpQ
b2ludGVyVHlwZT4gbV9wb2ludGVyVG9TdHJ1Y3RUeXBlOwotICAgIC8vIElmIHRoaXMgbWFwcGlu
ZyBjb250YWlucyB0aGUgdmFyaWFibGUsIGl0IG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlJ3MgY2Fu
b25pY2FsIGxvY2F0aW9uCi0gICAgLy8gaXMgaW4gdGhlIHN0cnVjdCB3ZSB1c2UgdG8gcHJlc2Vy
dmUgdmFyaWFibGUgbGlmZXRpbWVzLgotICAgIGNvbnN0IEhhc2hNYXA8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Kj4mIG1fdmFyaWFibGVNYXBwaW5nOwot
fTsKLQotdm9pZCBwcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzKFByb2dyYW0mIHByb2dyYW0pCi17
Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBTdHJpbmc+IGVzY2FwZWRW
YXJpYWJsZXM7Ci0gICAgewotICAgICAgICBFc2NhcGVkVmFyaWFibGVDb2xsZWN0b3IgY29sbGVj
dG9yOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZp
bml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgY29sbGVjdG9yLnZpc2l0KHByb2dy
YW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICAgICAgZXNjYXBlZFZhcmlhYmxlcyA9
IGNvbGxlY3Rvci50YWtlRXNjYXBlZFZhcmlhYmxlcygpOwotICAgIH0KLQotICAgIEFTVDo6U3Ry
dWN0dXJlRWxlbWVudHMgZWxlbWVudHM7Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogZXNjYXBlZFZh
cmlhYmxlcykgewotICAgICAgICBhdXRvKiB2YXJpYWJsZSA9IHBhaXIua2V5OwotICAgICAgICBT
dHJpbmcgbmFtZSA9IHBhaXIudmFsdWU7Ci0gICAgICAgIGVsZW1lbnRzLmFwcGVuZChBU1Q6OlN0
cnVjdHVyZUVsZW1lbnQgeyB2YXJpYWJsZS0+Y29kZUxvY2F0aW9uKCksIHsgfSwgKnZhcmlhYmxl
LT50eXBlKCksIFdURk1vdmUobmFtZSksIG51bGxwdHIgfSk7Ci0gICAgfQotCi0gICAgLy8gTmFt
ZSBvZiB0aGlzIGRvZXNuJ3QgbWF0dGVyLCBzaW5jZSB3ZSBkb24ndCB1c2Ugc3RydWN0IG5hbWVz
IHdoZW4KLSAgICAvLyBnZW5lcmF0aW5nIE1ldGFsIHR5cGUgbmFtZXMuIFdlIGp1c3QgcGljayBz
b21ldGhpbmcgaGVyZSB0byBtYWtlIGl0Ci0gICAgLy8gZWFzeSB0byByZWFkIGluIEFTVCBkdW1w
cy4KLSAgICBhdXRvIHdyYXBwZXJTdHJ1Y3REZWZpbml0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24+KGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpTdHJ1Y3Qp
LCAiX19XcmFwcGVyU3RydWN0X18iX3MsIFdURk1vdmUoZWxlbWVudHMpKTsKLQotICAgIEhhc2hN
YXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Kj4gdmFy
aWFibGVNYXBwaW5nOwotICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICBmb3IgKGF1dG8mIHBh
aXIgOiBlc2NhcGVkVmFyaWFibGVzKQotICAgICAgICB2YXJpYWJsZU1hcHBpbmcuYWRkKHBhaXIu
a2V5LCAmd3JhcHBlclN0cnVjdERlZmluaXRpb24tPnN0cnVjdHVyZUVsZW1lbnRzKClbaW5kZXgr
K10pOwotCi0gICAgewotICAgICAgICBhdXRvIHdyYXBwZXJTdHJ1Y3RUeXBlID0gQVNUOjpUeXBl
UmVmZXJlbmNlOjp3cmFwKGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSwg
d3JhcHBlclN0cnVjdERlZmluaXRpb24pOwotICAgICAgICBQcmVzZXJ2ZUxpZmV0aW1lcyBwcmVz
ZXJ2ZUxpZmV0aW1lcyhXVEZNb3ZlKHdyYXBwZXJTdHJ1Y3RUeXBlKSwgdmFyaWFibGVNYXBwaW5n
KTsKLSAgICAgICAgcHJlc2VydmVMaWZldGltZXMuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0g
ICAgfQotCi0gICAgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygpLmFwcGVuZChXVEZNb3Zl
KHdyYXBwZXJTdHJ1Y3REZWZpbml0aW9uKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDRhNjRmN2EyOGJhODRjZmQwZTQ2NzgxMDE5OWVkMGFjMzk3NDBiZDYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBwcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvZ3JhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFhMmUy
YzAzODcyNTVkNTdmMDliYTRkMWU5MmFhZmY0ZTRlZWQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvZ3JhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4dC5oIgotI2luY2x1ZGUg
IldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZl
VHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQ
cm9ncmFtIHsKLXB1YmxpYzoKLSAgICBQcm9ncmFtKCkgPSBkZWZhdWx0OwotICAgIFByb2dyYW0o
UHJvZ3JhbSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXBwZW5k
KEFTVDo6VHlwZURlZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICAgIG1f
dHlwZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+
KFdURk1vdmUodHlwZURlZmluaXRpb24pKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0
LmFkZChtX3R5cGVEZWZpbml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZv
aWQsIEVycm9yPiBhcHBlbmQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiYgc3RydWN0dXJlRGVm
aW5pdGlvbikKLSAgICB7Ci0gICAgICAgIG1fc3RydWN0dXJlRGVmaW5pdGlvbnMuYXBwZW5kKG1h
a2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihXVEZNb3ZlKHN0cnVjdHVyZURl
ZmluaXRpb24pKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX3N0cnVjdHVy
ZURlZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGFwcGVuZChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYmIGVudW1lcmF0aW9uRGVmaW5pdGlv
bikKLSAgICB7Ci0gICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9ucy5hcHBlbmQobWFrZVVu
aXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oV1RGTW92ZShlbnVtZXJhdGlvbkRl
ZmluaXRpb24pKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX2VudW1lcmF0
aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gYXBwZW5kKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpKTsK
LSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fZnVuY3Rpb25EZWZpbml0aW9ucy5s
YXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLSAg
ICB7Ci0gICAgICAgIG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMuYXBwZW5kKG1ha2VVbmlx
dWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pKSk7Ci0gICAgICAgIG1faW50cmluc2ljcy5hZGQobV9uYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9ucy5sYXN0KCkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5h
ZGQobV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4
cGVjdGVkPHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24pCi0gICAgewotICAgICAgICBtX25hdGl2ZVR5cGVEZWNsYXJh
dGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KFdU
Rk1vdmUobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNpY3MuYWRk
KG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5sYXN0KCkpOwotICAgICAgICByZXR1cm4gbV9uYW1l
Q29udGV4dC5hZGQobV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc1ZhbGlkVmVjdG9yUHJvcGVydHkoU3RyaW5nKTsKLQotICAgIE5hbWVDb250ZXh0
JiBuYW1lQ29udGV4dCgpIHsgcmV0dXJuIG1fbmFtZUNvbnRleHQ7IH0KLSAgICBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzKCkgeyByZXR1cm4gbV9pbnRyaW5zaWNzOyB9Ci0gICAgY29uc3QgSW50cmlu
c2ljcyYgaW50cmluc2ljcygpIGNvbnN0IHsgcmV0dXJuIG1faW50cmluc2ljczsgfQotICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpUeXBlRGVmaW5pdGlvbj4+JiB0eXBlRGVmaW5pdGlvbnMoKSB7
IHJldHVybiBtX3R5cGVEZWZpbml0aW9uczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uPj4mIHN0cnVjdHVyZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV9z
dHJ1Y3R1cmVEZWZpbml0aW9uczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24+PiYgZW51bWVyYXRpb25EZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fZW51
bWVyYXRpb25EZWZpbml0aW9uczsgfQotICAgIGNvbnN0IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+PiYgZnVuY3Rpb25EZWZpbml0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fZnVuY3Rpb25EZWZpbml0aW9uczsgfQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24+PiYgZnVuY3Rpb25EZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rp
b25EZWZpbml0aW9uczsgfQotICAgIGNvbnN0IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uPj4mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsgfQotICAgIFZlY3RvcjxVbmlx
dWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPj4mIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsgfQotICAg
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+PiYgbmF0aXZlVHlw
ZURlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fbmF0aXZlVHlwZURlY2xhcmF0aW9uczsgfQotCi1w
cml2YXRlOgotICAgIE5hbWVDb250ZXh0IG1fbmFtZUNvbnRleHQ7Ci0gICAgSW50cmluc2ljcyBt
X2ludHJpbnNpY3M7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4g
bV90eXBlRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURl
ZmluaXRpb24+PiBtX3N0cnVjdHVyZURlZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8
QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+PiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7Ci0g
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG1fZnVuY3Rpb25E
ZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbj4+IG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4+IG1fbmF0aXZlVHlwZURlY2xhcmF0aW9u
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzBmYTBiOTllOGE1M2I5MGEzMjU3
NDEyYWRlZjRiNDljYWM4ZDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVy
dHlSZXNvbHZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5UmVzb2x2ZXIu
aCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgi
Ci0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb3BlcnR5UmVzb2x2ZXIgOiBwdWJsaWMgVmlzaXRv
ciB7Ci0gICAgdm9pZCBoYW5kbGVMZWZ0SGFuZFNpZGVCYXNlKFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+IGJhc2UsIFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiBzbG90LCBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+JiBleHByZXNzaW9ucykKLSAgICB7Ci0gICAgICAgIGlm
ICghYmFzZS0+bWF5QmVFZmZlY3RmdWwoKSkgewotICAgICAgICAgICAgc2xvdCA9IFdURk1vdmUo
YmFzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGxl
ZnRBZGRyZXNzU3BhY2UgPSBiYXNlLT50eXBlQW5ub3RhdGlvbigpLmxlZnRBZGRyZXNzU3BhY2Uo
KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVmdEFkZHJlc3NTcGFjZSk7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24gPSBiYXNlLT5jb2RlTG9jYXRpb24oKTsKLSAgICAgICAg
UmVmPEFTVDo6VW5uYW1lZFR5cGU+IGJhc2VUeXBlID0gYmFzZS0+cmVzb2x2ZWRUeXBlKCk7Ci0g
ICAgICAgIFJlZjxBU1Q6OlBvaW50ZXJUeXBlPiBwb2ludGVyVHlwZSA9IEFTVDo6UG9pbnRlclR5
cGU6OmNyZWF0ZShjb2RlTG9jYXRpb24sICpsZWZ0QWRkcmVzc1NwYWNlLCBiYXNlVHlwZS5jb3B5
UmVmKCkpOwotCi0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+IHBv
aW50ZXJWYXJpYWJsZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihj
b2RlTG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycyB7IH0sIHBvaW50ZXJUeXBlLnB0cigpLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAgICAgYXV0byBtYWtlVmFyaWFibGVSZWZl
cmVuY2UgPSBbJl0gewotICAgICAgICAgICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6
d3JhcChwb2ludGVyVmFyaWFibGUpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5z
ZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZVJlZmVy
ZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFj
ZTo6VGhyZWFkIH0pOwotICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlUmVmZXJlbmNlOwotICAg
ICAgICB9OwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcG9pbnRlck9mQmFzZSA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgV1RG
TW92ZShiYXNlKSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSk7Ci0gICAg
ICAgICAgICBwb2ludGVyT2ZCYXNlLT5zZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlSZWYoKSk7Ci0g
ICAgICAgICAgICBwb2ludGVyT2ZCYXNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFs
dWUoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVu
Y2UoKSwgV1RGTW92ZShwb2ludGVyT2ZCYXNlKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5z
ZXRUeXBlKHBvaW50ZXJUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBhc3NpZ25tZW50LT5z
ZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGV4cHJl
c3Npb25zLmFwcGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gZGVyZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgp
KTsKLSAgICAgICAgICAgIGRlcmVmZXJlbmNlLT5zZXRUeXBlKGJhc2VUeXBlLmNvcHlSZWYoKSk7
Ci0gICAgICAgICAgICBkZXJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFs
dWUgeyAqbGVmdEFkZHJlc3NTcGFjZSB9KTsKLQotICAgICAgICAgICAgc2xvdCA9IFdURk1vdmUo
ZGVyZWZlcmVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV92YXJpYWJsZXMuYXBwZW5kKFdU
Rk1vdmUocG9pbnRlclZhcmlhYmxlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBoYW5kbGVQcm9wZXJ0
eUFjY2VzcyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3MsIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4mIGV4cHJlc3Npb25zKQotICAgIHsKLSAg
ICAgICAgQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24qIGN1cnJlbnRQdHIgPSAmcHJvcGVy
dHlBY2Nlc3M7Ci0gICAgICAgIC8vIGEuYltjXS5kIHdpbGwgZ28gaW50byB0aGlzIGFycmF5IGFz
IFsuZCwgW2NdLCAuYl0KLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+PiBjaGFpbjsKLQotICAgICAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICAgICAgQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGN1cnJlbnQg
PSAqY3VycmVudFB0cjsKLSAgICAgICAgICAgIGNoYWluLmFwcGVuZChjdXJyZW50KTsKLSAgICAg
ICAgICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY3VycmVudCkpCi0gICAgICAgICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihj
dXJyZW50KS5pbmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBpZiAoIWlzPEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uPihjdXJyZW50LmJhc2UoKSkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjdXJyZW50UHRyID0gJmRvd25jYXN0PEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uPihjdXJyZW50LmJhc2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgY3VycmVudCA9ICpjdXJyZW50UHRyOwotCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjdXJyZW50LmJhc2UoKSk7Ci0KLSAgICAgICAgQ29k
ZUxvY2F0aW9uIGJhc2VDb2RlTG9jYXRpb24gPSBjdXJyZW50LmJhc2UoKS5jb2RlTG9jYXRpb24o
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjdXJyZW50LmJhc2UoKS50eXBlQW5ub3RhdGlvbigp
LmlzUmlnaHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uPiBjb3B5ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+
KGJhc2VDb2RlTG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycyB7IH0sICZjdXJyZW50LmJhc2UoKS5y
ZXNvbHZlZFR5cGUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAg
UmVmPEFTVDo6VW5uYW1lZFR5cGU+IGJhc2VUeXBlID0gY3VycmVudC5iYXNlKCkucmVzb2x2ZWRU
eXBlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJl
bmNlID0gWyZdIHsKLSAgICAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJlbmNlID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
Ojp3cmFwKGNvcHkpKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlw
ZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNl
LT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1NwYWNlOjpU
aHJlYWQgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlUmVmZXJlbmNlOwotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihiYXNlQ29kZUxvY2F0aW9uLCBtYWtlVmFyaWFi
bGVSZWZlcmVuY2UoKSwgY3VycmVudC50YWtlQmFzZSgpKTsKLSAgICAgICAgICAgIGFzc2lnbm1l
bnQtPnNldFR5cGUoYmFzZVR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIGFzc2lnbm1lbnQt
PnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgZXhw
cmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjdXJyZW50LmJhc2VSZWZlcmVuY2UoKSA9IG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgp
OwotCi0gICAgICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQoV1RGTW92ZShjb3B5KSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlTGVmdEhhbmRTaWRlQmFzZShjdXJyZW50LnRh
a2VCYXNlKCksIGN1cnJlbnQuYmFzZVJlZmVyZW5jZSgpLCBleHByZXNzaW9ucyk7Ci0KLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IGNoYWluLnNpemUoKTsgaS0tOyApIHsKLSAgICAgICAgICAgIGF1
dG8mIGFjY2VzcyA9IGNoYWluW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6SW5k
ZXhFeHByZXNzaW9uPihhY2Nlc3MpICYmIGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihh
Y2Nlc3MpLmluZGV4RXhwcmVzc2lvbigpLm1heUJlRWZmZWN0ZnVsKCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBpbmRleEV4cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lv
bj4oYWNjZXNzKTsKLQotICAgICAgICAgICAgICAgIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiBpbmRl
eFR5cGUgPSBpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkucmVzb2x2ZWRUeXBlKCk7
Ci0KLSAgICAgICAgICAgICAgICBVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBp
bmRleFZhcmlhYmxlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGFj
Y2Vzcy5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgaW5kZXhUeXBlLnB0cigp
LCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIG1h
a2VWYXJpYWJsZVJlZmVyZW5jZSA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdmFy
aWFibGVSZWZlcmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFT
VDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAoaW5kZXhWYXJpYWJsZSkpOwotICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShpbmRleFR5cGUuY29weVJlZigpKTsK
LSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9u
KEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlUmVmZXJlbmNlOwotICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYXNzaWdubWVu
dCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oYmFzZUNvZGVMb2Nh
dGlvbiwgbWFrZVZhcmlhYmxlUmVmZXJlbmNlKCksIGluZGV4RXhwcmVzc2lvbi50YWtlSW5kZXgo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGUoaW5kZXhUeXBlLmNv
cHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0
aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9u
cy5hcHBlbmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaW5kZXhFeHByZXNzaW9uLmluZGV4UmVmZXJlbmNlKCkgPSBtYWtlVmFyaWFi
bGVSZWZlcmVuY2UoKTsKLQotICAgICAgICAgICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZN
b3ZlKGluZGV4VmFyaWFibGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZvaWQgaGFuZGxlUHJvcGVydHlBY2Nlc3MoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24mIHByb3BlcnR5QWNjZXNzKQotICAgIHsKLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsKLQotICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vz
cyhwcm9wZXJ0eUFjY2VzcywgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIFJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiBhY2Nlc3NUeXBlID0gcHJvcGVydHlBY2Nlc3MucmVzb2x2ZWRUeXBlKCk7Ci0KLSAg
ICAgICAgQVNUOjpDb21tYUV4cHJlc3Npb24qIGNvbW1hOwotICAgICAgICBDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uID0gcHJvcGVydHlBY2Nlc3MuY29kZUxvY2F0aW9uKCk7Ci0gICAgICAgIGlm
IChpczxBU1Q6OkluZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3MpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBpbmRleEV4cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4o
cHJvcGVydHlBY2Nlc3MpOwotCi0gICAgICAgICAgICBhdXRvIG5ld0luZGV4RXhwcmVzc2lvbiA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgaW5kZXhF
eHByZXNzaW9uLnRha2VCYXNlKCksIGluZGV4RXhwcmVzc2lvbi50YWtlSW5kZXgoKSk7Ci0gICAg
ICAgICAgICBuZXdJbmRleEV4cHJlc3Npb24tPnNldFR5cGUoaW5kZXhFeHByZXNzaW9uLnJlc29s
dmVkVHlwZSgpKTsKLSAgICAgICAgICAgIG5ld0luZGV4RXhwcmVzc2lvbi0+c2V0VHlwZUFubm90
YXRpb24oQVNUOjpUeXBlQW5ub3RhdGlvbihpbmRleEV4cHJlc3Npb24udHlwZUFubm90YXRpb24o
KSkpOwotCi0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdJbmRleEV4
cHJlc3Npb24pKTsKLQotICAgICAgICAgICAgY29tbWEgPSBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6
Q29tbWFFeHByZXNzaW9uPihpbmRleEV4cHJlc3Npb24sIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShl
eHByZXNzaW9ucykpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXM8QVNUOjpEb3RFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2VzcykpOwotICAgICAgICAgICAg
YXV0byYgZG90RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4ocHJvcGVy
dHlBY2Nlc3MpOwotCi0gICAgICAgICAgICBhdXRvIG5ld0RvdEV4cHJlc3Npb24gPSBtYWtlVW5p
cXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4oY29kZUxvY2F0aW9uLCBkb3RFeHByZXNzaW9uLnRh
a2VCYXNlKCksIFN0cmluZyhkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpKSk7Ci0gICAgICAgICAg
ICBuZXdEb3RFeHByZXNzaW9uLT5zZXRUeXBlKGRvdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkp
OwotICAgICAgICAgICAgbmV3RG90RXhwcmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpU
eXBlQW5ub3RhdGlvbihkb3RFeHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQotICAgICAg
ICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUobmV3RG90RXhwcmVzc2lvbikpOwotCi0g
ICAgICAgICAgICBjb21tYSA9IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpDb21tYUV4cHJlc3Npb24+
KGRvdEV4cHJlc3Npb24sIGNvZGVMb2NhdGlvbiwgV1RGTW92ZShleHByZXNzaW9ucykpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgY29tbWEtPnNldFR5cGUoV1RGTW92ZShhY2Nlc3NUeXBlKSk7Ci0g
ICAgICAgIGNvbW1hLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7Ci0gICAg
fQotCi1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJl
c3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vzcyhkb3RF
eHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9u
JiBpbmRleEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBoYW5kbGVQcm9wZXJ0
eUFjY2VzcyhpbmRleEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhw
cmVzc2lvbigpKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5y
ZXN1bHRFeHByZXNzaW9uKCkpOwotCi0gICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlv
biA9IHJlYWRNb2RpZnlXcml0ZS5jb2RlTG9jYXRpb24oKTsKLQotICAgICAgICBSZWY8QVNUOjpV
bm5hbWVkVHlwZT4gdHlwZSA9IHJlYWRNb2RpZnlXcml0ZS5yZXNvbHZlZFR5cGUoKTsKLQotICAg
ICAgICBpZiAoaXM8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KHJlYWRNb2RpZnlXcml0
ZS5sZWZ0VmFsdWUoKSkpCi0gICAgICAgICAgICBoYW5kbGVQcm9wZXJ0eUFjY2Vzcyhkb3duY2Fz
dDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1
ZSgpKSwgZXhwcmVzc2lvbnMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBoYW5kbGVMZWZ0
SGFuZFNpZGVCYXNlKHJlYWRNb2RpZnlXcml0ZS50YWtlTGVmdFZhbHVlKCksIHJlYWRNb2RpZnlX
cml0ZS5sZWZ0VmFsdWVSZWZlcmVuY2UoKSwgZXhwcmVzc2lvbnMpOwotCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+IG5ld1Jl
YWRNb2RpZnlXcml0ZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uPigKLSAgICAgICAgICAgICAgICByZWFkTW9kaWZ5V3JpdGUuY29kZUxvY2F0aW9uKCksIHJl
YWRNb2RpZnlXcml0ZS50YWtlTGVmdFZhbHVlKCksIHJlYWRNb2RpZnlXcml0ZS50YWtlT2xkVmFs
dWUoKSwgcmVhZE1vZGlmeVdyaXRlLnRha2VOZXdWYWx1ZSgpKTsKLSAgICAgICAgICAgIG5ld1Jl
YWRNb2RpZnlXcml0ZS0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKHJlYWRNb2RpZnlXcml0ZS50YWtl
TmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5z
ZXRSZXN1bHRFeHByZXNzaW9uKHJlYWRNb2RpZnlXcml0ZS50YWtlUmVzdWx0RXhwcmVzc2lvbigp
KTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0VHlwZSh0eXBlLmNvcHlSZWYo
KSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9kaWZ5V3JpdGUtPnNldFR5cGVBbm5vdGF0aW9uKEFT
VDo6VHlwZUFubm90YXRpb24ocmVhZE1vZGlmeVdyaXRlLnR5cGVBbm5vdGF0aW9uKCkpKTsKLQot
ICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUobmV3UmVhZE1vZGlmeVdyaXRl
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvKiBjb21tYSA9IEFTVDo6cmVwbGFjZVdpdGg8
QVNUOjpDb21tYUV4cHJlc3Npb24+KHJlYWRNb2RpZnlXcml0ZSwgY29kZUxvY2F0aW9uLCBXVEZN
b3ZlKGV4cHJlc3Npb25zKSk7Ci0gICAgICAgIGNvbW1hLT5zZXRUeXBlKFdURk1vdmUodHlwZSkp
OwotICAgICAgICBjb21tYS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
RGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFy
aWFibGVzLmlzRW1wdHkoKSk7Ci0KLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19j
YXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOwotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwotCi0g
ICAgICAgIGlmICghbV92YXJpYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmdW5jdGlv
bkRlZmluaXRpb24uYmxvY2soKS5zdGF0ZW1lbnRzKCkuaW5zZXJ0KDAsIAotICAgICAgICAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oZnVu
Y3Rpb25EZWZpbml0aW9uLmJsb2NrKCkuY29kZUxvY2F0aW9uKCksIFdURk1vdmUobV92YXJpYWJs
ZXMpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9ucyBtX3ZhcmlhYmxlczsKLX07Ci0KLXZvaWQgcmVzb2x2ZVByb3BlcnRpZXMoUHJv
Z3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAvLyBUaGUgZ29hbCBvZiB0aGlzIHBoYXNlIGlzIHR3byBh
bGxvdyB0d28gdGhpbmdzOgotICAgIC8vIDEuIEZvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lv
bnMsIG1ldGFsIGNvZGVnZW4gc2hvdWxkIGJlIGFsbG93ZWQgdG8gZXZhbHVhdGUKLSAgICAvLyB0
aGUgYmFzZSwgYW5kIGlmIGl0J3MgYW4gaW5kZXggZXhwcmVzc2lvbiwgdGhlIGluZGV4LCBhcyBt
YW55IHRpbWVzIGFzIG5lZWRlZC4KLSAgICAvLyBTbyB0aGlzIHBhdGNoIGVuc3VyZXMgdGhhdCBp
ZiBNZXRhbCBldmFsdWF0ZXMgc3VjaCB0aGluZ3MsIGVmZmVjdHMgYXJlbid0IHBlcmZvcm1lZAot
ICAgIC8vIG1vcmUgdGhhbiBvbmNlLgotICAgIC8vCi0gICAgLy8gMi4gRm9yIFJlYWRNb2RpZnlX
cml0ZSBleHByZXNzaW9ucywgbWV0YWwgY29kZWdlbiBzaG91bGQgYmUgYWJsZSB0byBldmFsdWF0
ZSB0aGUKLSAgICAvLyBsZWZ0VmFsdWVFeHByZXNzaW9uIGFzIG1hbnkgdGltZXMgYXMgaXQnZCBs
aWtlIHdpdGhvdXQgcGVyZm9ybWluZyB0aGUgZWZmZWN0cyBvZgotICAgIC8vIGxlZnRWYWx1ZUV4
cHJlc3Npb24gbW9yZSB0aGFuIG9uY2UuCi0gICAgLy8KLSAgICAvLyBXZSBkbyB0aGVzZSB0aGlu
Z3MgYmVjYXVzZSBpdCdzIGNvbnZlbmllbnQgZm9yIG1ldGFsIGNvZGVnZW4gdG8gYmUgYWJsZSB0
byByZWx5IG9uCi0gICAgLy8gdGhpcyB3aXRoIHRoZSB3YXkgaXQgc3RydWN0dXJlcyB0aGUgZ2Vu
ZXJhdGVkIGNvZGUuCi0gICAgUHJvcGVydHlSZXNvbHZlciByZXNvbHZlcjsKLSAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAgIHJl
c29sdmVyLnZpc2l0KGZ1bmN0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9w
ZXJ0eVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByb3BlcnR5UmVzb2x2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlZGFh
NGU4ZDhiNTA2YTM2YWZmMWIyMGE4ZTM4YTg2Mzk4ODdmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQ
cm9ncmFtOwotCi12b2lkIHJlc29sdmVQcm9wZXJ0aWVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTExNjU3OWMzNjA3NTNmYmJiY2U4ZjhkZWM2NWRiY2My
NWIxYjcxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIGZp
bmFsIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3JlYWNoYWJsZUZ1bmN0aW9ucy5hZGQoJmZ1bmN0aW9uKTsKLSAgICAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVu
Y3Rpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2Fs
bEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxs
RXhwcmVzc2lvbik7Ci0gICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2Fs
bEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpCi0gICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpOwotICAgIH0K
LQotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiB0YWtlUmVhY2hhYmxlRnVu
Y3Rpb25zKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlYWNoYWJsZUZ1bmN0aW9ucyk7IH0KLQotcHJp
dmF0ZToKLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9yZWFjaGFibGVG
dW5jdGlvbnM7Ci19OwotCi12b2lkIHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBSZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMg
cmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5j
dGlvbkRlZmluaXRpb24+PiBmdW5jdGlvbkRlZmluaXRpb25zID0gV1RGTW92ZShwcm9ncmFtLmZ1
bmN0aW9uRGVmaW5pdGlvbnMoKSk7Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9u
RGVmaW5pdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5wYXJzaW5nTW9kZSgpICE9IFBh
cnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICByZWFjaGFibGVTdGRsaWJG
dW5jdGlvbnMudmlzaXQoZnVuY3Rpb24uZ2V0KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24tPmVudHJ5UG9pbnRUeXBlKCkpOwotICAgIH0KLQot
ICAgIGF1dG8gcmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnRh
a2VSZWFjaGFibGVGdW5jdGlvbnMoKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uPj4gbmV3RnVuY3Rpb25EZWZpbml0aW9uczsKLSAgICBmb3IgKFVuaXF1ZVJl
ZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4mIGVudHJ5IDogZnVuY3Rpb25EZWZpbml0aW9ucykg
ewotICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZlbnRyeS5nZXQoKSkp
Ci0gICAgICAgICAgICBuZXdGdW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKGVudHJ5
KSk7Ci0gICAgfQotCi0gICAgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkgPSBXVEZNb3Zl
KG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
dW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2M4NDY5NzVlYjYz
YTgxOGU0OGY5Zjg5MDVjMGFjYzM3ZmQzNmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDcwZWUxMjQ2ODBhYmJmYmFlNjU4Mjc0ZmI5YmNhNjJmM2NiYTg3N2Uu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpb25DaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
LSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8vIE1ha2VzIHN1cmUg
dGhlcmUgaXMgbm8gZnVuY3Rpb24gcmVjdXJzaW9uLgotY2xhc3MgUmVjdXJzaW9uQ2hlY2tlciBm
aW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChQcm9ncmFt
JiBwcm9ncmFtKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGlmIChtX2ZpbmlzaGVkVmlzaXRpbmcuY29udGFpbnMoJmZ1bmN0
aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3N0YXJ0ZWRWaXNpdGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAg
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVy
cm9yKCJDYW5ub3QgdXNlIHJlY3Vyc2lvbiBpbiB0aGUgY2FsbCBncmFwaC4iLCBmdW5jdGlvbkRl
ZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQYXJz
aW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoZnVu
Y3Rpb25EZWZpbml0aW9uKTsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fZmluaXNoZWRWaXNpdGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxs
RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxF
eHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxs
RXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24o
KSkpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX3N0
YXJ0ZWRWaXNpdGluZzsKLSAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV9m
aW5pc2hlZFZpc2l0aW5nOwotfTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJz
aW9uKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgUmVjdXJzaW9uQ2hlY2tlciByZWN1cnNpb25D
aGVja2VyOwotICAgIHJlY3Vyc2lvbkNoZWNrZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0g
ICAgcmV0dXJuIHJlY3Vyc2lvbkNoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3YWMyNTBlNGJjNTRiMGFiOTE5MTVkMWVmMjA4NTYz
NTNlZTZmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3Iu
aCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJv
cj4gY2hlY2tSZWN1cnNpb24oUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMWM1MDdhYzU2ODAxM2ZlOTMyZmMwNWEyYzUyNjhm
NDk2OWVlNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hl
Y2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgi
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFN0cnVjdHVy
ZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBSZWN1cnNpdmVUeXBl
Q2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6
VHlwZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmKSBvdmVycmlk
ZTsKLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PEFTVDo6VHlwZSo+IG1fc3RhcnRlZFZpc2l0aW5n
OwotICAgIEhhc2hTZXQ8QVNUOjpUeXBlKj4gbV9maW5pc2hlZFZpc2l0aW5nOwotfTsKLQotI2Rl
ZmluZSBTVEFSVF9WSVNJVElORyh0KSBcCi1kbyB7IFwKLSAgICBpZiAobV9maW5pc2hlZFZpc2l0
aW5nLmNvbnRhaW5zKHQpKSBcCi0gICAgICAgIHJldHVybjsgXAotICAgIGF1dG8gcmVzdWx0U3Rh
cnRlZFZpc2l0aW5nID0gbV9zdGFydGVkVmlzaXRpbmcuYWRkKHQpOyBcCi0gICAgaWYgKCFyZXN1
bHRTdGFydGVkVmlzaXRpbmcuaXNOZXdFbnRyeSkgeyBcCi0gICAgICAgIHNldEVycm9yKEVycm9y
KCJDYW5ub3QgZGVjbGFyZSByZWN1cnNpdmUgdHlwZXMuIiwgKHQpLT5jb2RlTG9jYXRpb24oKSkp
OyBcCi0gICAgICAgIHJldHVybjsgXAotICAgIH0gXAotfSB3aGlsZSAoZmFsc2UpOwotCi0jZGVm
aW5lIEVORF9WSVNJVElORyh0KSBcCi1kbyB7IFwKLSAgICBhdXRvIHJlc3VsdEZpbmlzaGVkVmlz
aXRpbmcgPSBtX2ZpbmlzaGVkVmlzaXRpbmcuYWRkKHQpOyBcCi0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHRGaW5pc2hlZFZpc2l0aW5nLCByZXN1bHRGaW5pc2hlZFZpc2l0aW5nLmlzTmV3RW50cnkp
OyBcCi19IHdoaWxlIChmYWxzZSk7Ci0KLXZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0
KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIFNUQVJUX1ZJU0lU
SU5HKCZ0eXBlRGVmaW5pdGlvbik7Ci0KLSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlv
bik7Ci0KLSAgICBFTkRfVklTSVRJTkcoJnR5cGVEZWZpbml0aW9uKTsKLX0KLQotdm9pZCBSZWN1
cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1
cmVEZWZpbml0aW9uKQotewotICAgIFNUQVJUX1ZJU0lUSU5HKCZzdHJ1Y3R1cmVEZWZpbml0aW9u
KTsKLQotICAgIFZpc2l0b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotCi0gICAgRU5E
X1ZJU0lUSU5HKCZzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLX0KLQotdm9pZCBSZWN1cnNpdmVUeXBl
Q2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAg
IFNUQVJUX1ZJU0lUSU5HKCZ0eXBlUmVmZXJlbmNlKTsKLQotICAgIGZvciAoYXV0byYgdHlwZUFy
Z3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0eXBlQXJndW1lbnQpOwotICAgIGlmICh0eXBlUmVmZXJlbmNlLm1heWJlUmVz
b2x2ZWRUeXBlKCkpIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MTYxIFNob3VsZG4ndCB3ZSBrbm93IGJ5IG5vdyB3aGV0aGVyIHRoZSB0eXBlIGhh
cyBiZWVuIHJlc29sdmVkIG9yIG5vdD8KLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotCi0gICAgRU5EX1ZJU0lUSU5HKCZ0eXBlUmVmZXJl
bmNlKTsKLX0KLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWZlcmVu
Y2VUeXBlJikKLXsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrUmVjdXJzaXZlVHlw
ZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBSZWN1cnNpdmVUeXBlQ2hlY2tlciByZWN1cnNp
dmVUeXBlQ2hlY2tlcjsKLSAgICBmb3IgKGF1dG8mIHR5cGVEZWZpbml0aW9uIDogcHJvZ3JhbS50
eXBlRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgcmVjdXJzaXZlVHlwZUNoZWNrZXIuY2hlY2tFcnJv
ckFuZFZpc2l0KHR5cGVEZWZpbml0aW9uKTsKLSAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZURlZmlu
aXRpb24gOiBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkpCi0gICAgICAgIHJlY3Vyc2l2
ZVR5cGVDaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAg
ICByZXR1cm4gcmVjdXJzaXZlVHlwZUNoZWNrZXIucmVzdWx0KCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGYxYWMwZjU3MTMwNGJiZWFhODgxNzUwZDBkZmMyMDYyZTdkMjQ4
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IGNoZWNrUmVjdXJzaXZlVHlwZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTM2YzQ3MjU4Njk2NDgyOThlMjg1NTZhMDFjNDM3
M2M3NmI0M2U0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2Fk
SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSA8bGltaXRzPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyB1bnNpZ25lZCBjb252ZXJz
aW9uQ29zdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGNhbmRpZGF0ZSwgY29uc3QgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzKQot
ewotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhbmRpZGF0ZS5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29u
dmVyc2lvbkNvc3QgKz0gYXJndW1lbnRUeXBlc1tpXS5nZXQoKS52aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY29udmVyc2lv
bkNvc3QoKmNhbmRpZGF0ZS5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSk7Ci0gICAgICAgIH0pKTsK
LSAgICB9Ci0gICAgLy8gVGhlIHJldHVybiB0eXBlIGNhbiBuZXZlciBiZSBhIGxpdGVyYWwgdHlw
ZSwgc28gaXRzIGNvbnZlcnNpb24gY29zdCBpcyBhbHdheXMgMC4KLSAgICByZXR1cm4gY29udmVy
c2lvbkNvc3Q7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlS2luZD4KLXN0YXRpYyBBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9z
c2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiYgYXJndW1lbnRUeXBlcywgVHlwZUtpbmQqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVT
cGFjZSBuYW1lU3BhY2UpCi17Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gY2FuZGlkYXRlczsKLSAgICBmb3IgKGF1dG8mIHBv
c3NpYmxlRnVuY3Rpb24gOiBwb3NzaWJsZUZ1bmN0aW9ucykgewotICAgICAgICBpZiAocG9zc2li
bGVGdW5jdGlvbi5nZXQoKS5lbnRyeVBvaW50VHlwZSgpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChuYW1lU3BhY2UgPT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFy
eSkgewotICAgICAgICAgICAgaWYgKHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCkubmFtZVNwYWNlKCkg
IT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9u
LmdldCgpLm5hbWVTcGFjZSgpICE9IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgJiYg
cG9zc2libGVGdW5jdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSAhPSBuYW1lU3BhY2UpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZmVyVHlwZXNGb3JD
YWxsKHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCksIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBl
KSkKLSAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKHBvc3NpYmxlRnVuY3Rpb24uZ2V0KCkp
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIG1pbmltdW1Db252ZXJzaW9uQ29zdCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKLSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6
IGNhbmRpZGF0ZXMpCi0gICAgICAgIG1pbmltdW1Db252ZXJzaW9uQ29zdCA9IHN0ZDo6bWluKG1p
bmltdW1Db252ZXJzaW9uQ29zdCwgY29udmVyc2lvbkNvc3QoY2FuZGlkYXRlLmdldCgpLCBhcmd1
bWVudFR5cGVzKSk7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtaW5pbXVtQ29zdENhbmRpZGF0ZXM7Ci0gICAgZm9yIChh
dXRvJiBjYW5kaWRhdGUgOiBjYW5kaWRhdGVzKSB7Ci0gICAgICAgIGlmIChjb252ZXJzaW9uQ29z
dChjYW5kaWRhdGUuZ2V0KCksIGFyZ3VtZW50VHlwZXMpID09IG1pbmltdW1Db252ZXJzaW9uQ29z
dCkKLSAgICAgICAgICAgIG1pbmltdW1Db3N0Q2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlKTsK
LSAgICB9Ci0KLSAgICBpZiAobWluaW11bUNvc3RDYW5kaWRhdGVzLnNpemUoKSA9PSAxKQotICAg
ICAgICByZXR1cm4gJm1pbmltdW1Db3N0Q2FuZGlkYXRlc1swXS5nZXQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb25P
dmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpOYW1lU3BhY2UgbmFtZVNw
YWNlKQotewotICAgIHJldHVybiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwocG9zc2libGVG
dW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlKj4obnVs
bHB0ciksIG5hbWVTcGFjZSk7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2
ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZWRU
eXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotewotICAgIHJl
dHVybiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwocG9zc2libGVGdW5jdGlvbnMsIGFyZ3Vt
ZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBlLCBuYW1lU3BhY2UpOwotfQotCi1BU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9u
cywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVu
dFR5cGVzLCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSwgQVNUOjpOYW1lU3BhY2Ug
bmFtZVNwYWNlKQotewotICAgIHJldHVybiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZEltcGwocG9z
c2libGVGdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIGNhc3RSZXR1cm5UeXBlLCBuYW1lU3BhY2Up
OwotfQotCi1BU1Q6Ok5hbWVkVHlwZSogcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwoVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPiYgcG9zc2libGVUeXBlcywg
QVNUOjpUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQotewotICAgIEFTVDo6TmFtZWRUeXBl
KiByZXN1bHQgPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgcG9zc2libGVUeXBlIDogcG9zc2li
bGVUeXBlcykgewotICAgICAgICBpZiAoaW5mZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMocG9zc2li
bGVUeXBlLCB0eXBlQXJndW1lbnRzKSkgewotICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIHJlc3VsdCA9ICZzdGF0aWNf
Y2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KHBvc3NpYmxlVHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVP
dmVybG9hZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2ZU92ZXJsb2FkSW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDMy
MmU4NDRkZjNmYjhiYWFhODY5MDg4OGY3ODkyYTExNjczOWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZpbmdUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1u
YW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hbWVk
VHlwZTsKLQotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92
ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVTcGFjZSk7Ci1BU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJs
ZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+
JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFt
ZVNwYWNlKTsKLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3Zlcmxv
YWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
PiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxS
ZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1
cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSk7Ci1BU1Q6Ok5hbWVkVHlwZSogcmVzb2x2ZVR5cGVPdmVy
bG9hZEltcGwoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAx
PiYsIEFTVDo6VHlwZUFyZ3VtZW50cyYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFjZWE0NTdhODUzMjBiOTlkOTk5ZmQxOTZmYjAxNjg3NGQ3NmQ1MjUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZXNv
bHZhYmxlVHlwZTsKLQotfQotCi0vLyBUaGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIHR5cGUgb2Yg
b25lIEFTVCBub2RlIHNob3VsZCBtYXRjaCB0aGUgdHlwZSBvZiBhbm90aGVyIEFTVCBub2RlLgot
Ly8gT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgY29tbWEgZXhwcmVzc2lvbiAtIHRoZSB0eXBl
IG9mIHRoZSBjb21tYSBleHByZXNzaW9uIHNob3VsZCBtYXRjaCB0aGUgdHlwZSBvZiBpdHMgbGFz
dCBpdGVtLgotLy8gSWYgdGhpcyB0eXBlIGhhcHBlbnMgdG8gYmUgYSByZXNvbHZhYmxlIHR5cGUs
IGl0IHdpbGwgZ2V0IHJlc29sdmVkIGxhdGVyLiBXaGVuIHRoYXQgaGFwcGVucywKLS8vIGJvdGgg
b2YgdGhlIEFTVCBub2RlcyBoYXZlIHRvIGJlIHJlc29sdmVkIHRvIHRoZSByZXN1bHQgdHlwZS4g
VGhpcyBjbGFzcyByZXByZXNlbnRzIGEKLS8vIHJlZmVyZW5jZSBjb3VudGVkIHdyYXBwZXIgYXJv
dW5kIGEgcmVzb2x2YWJsZSB0eXBlIHNvIGJvdGggZW50cmllcyBpbiB0aGUgdHlwZSBtYXAgY2Fu
IHBvaW50Ci0vLyB0byB0aGUgc2FtZSByZXNvbHZhYmxlIHR5cGUsIHNvIHJlc29sdmluZyBpdCBv
bmNlIHJlc29sdmVzIGJvdGggdGhlIGVudHJpZXMgaW4gdGhlIG1hcC4KLS8vIFRoaXMgY2xhc3Mg
Y291bGQgcHJvYmFibHkgYmUgcmVwcmVzZW50ZWQgYXMKLS8vICJjbGFzcyBSZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZSA6IHB1YmxpYyBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6UmVzb2x2YWJs
ZVR5cGU+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSB7fSIKLS8v
IGJ1dCBJIGRpZG4ndCB3YW50IHRvIGJlIHRvbyBjbGV2ZXIuCi1jbGFzcyBSZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB7
Ci1wdWJsaWM6Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UoQVNUOjpSZXNvbHZhYmxlVHlw
ZSYgcmVzb2x2YWJsZVR5cGUpCi0gICAgICAgIDogbV9yZXNvbHZhYmxlVHlwZSgmcmVzb2x2YWJs
ZVR5cGUpCi0gICAgewotICAgIH0KLQotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGNvbnN0
IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UoUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZSYpID0gZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlJiBvcGVyYXRvcj0oUmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UmJikgPSBkZWxldGU7Ci0KLSAgICBBU1Q6OlJlc29sdmFibGVU
eXBlJiByZXNvbHZhYmxlVHlwZSgpIHsgcmV0dXJuICptX3Jlc29sdmFibGVUeXBlOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgQVNUOjpSZXNvbHZhYmxlVHlwZSogbV9yZXNvbHZhYmxlVHlwZTsKLX07Ci0K
LS8vIFRoaXMgaXMgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgVmFyaWFudC4KLS8vIEl0IGV4aXN0
cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9lcyB0
aGUgcmlnaHQgdGhpbmcuCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLWNs
YXNzIFJlc29sdmluZ1R5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFJlc29sdmluZ1R5cGUoKQotICAgICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPigpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKFJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiB2KQotICAgICAgICA6IG1faW5uZXIoV1RGTW92ZSh2KSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVzb2x2aW5nVHlwZShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2U+IHYpCi0gICAgICAgIDogbV9pbm5lcihXVEZNb3ZlKHYpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZXNvbHZpbmdUeXBlKGNvbnN0IFJlc29sdmluZ1R5cGUmKSA9IGRlbGV0ZTsKLSAgICBS
ZXNvbHZpbmdUeXBlKFJlc29sdmluZ1R5cGUmJiBvdGhlcikKLSAgICAgICAgOiBtX2lubmVyKFdU
Rk1vdmUob3RoZXIubV9pbm5lcikpCi0gICAgewotICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUm
IG9wZXJhdG9yPShjb25zdCBSZXNvbHZpbmdUeXBlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2aW5n
VHlwZSYgb3BlcmF0b3I9KFJlc29sdmluZ1R5cGUmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIG1f
aW5uZXIgPSBXVEZNb3ZlKG90aGVyLm1faW5uZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSogZ2V0VW5uYW1lZFR5cGUoKQotICAgIHsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEFTVDo6VW5uYW1lZFR5cGU+Piht
X2lubmVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4+KG1faW5uZXIpLnB0cigpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBWaXNpdG9yJiB2
aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVjbHZhbDxWYXJp
YW50PFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
Pj4mPigpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW5u
ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWYXJpYW50PFJlZjxBU1Q6OlVubmFtZWRUeXBl
PiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPj4gbV9pbm5lcjsKLX07Ci0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTY29wZWRTZXRBZGRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTY29wZWRTZXRBZGRlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjNjMTE1ZTFjMTRiYTk3ZDc1Y2QwYTE4ZmQx
NDgzMWExMDViOTljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRk
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgU2NvcGVkU2V0QWRkZXIgewotcHVibGljOgotICAgIFNj
b3BlZFNldEFkZGVyKEhhc2hTZXQ8VD4mIHNldCwgVCYmIGl0ZW0pCi0gICAgICAgIDogbV9zZXQo
c2V0KQotICAgICAgICAsIG1faXRlbShXVEZNb3ZlKGl0ZW0pKQotICAgIHsKLSAgICAgICAgbV9p
c05ld0VudHJ5ID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9zZXQuYWRkKG1faXRlbSkpOwotICAgIH0K
LQotICAgIH5TY29wZWRTZXRBZGRlcigpCi0gICAgewotICAgICAgICBpZiAoIW1faXNOZXdFbnRy
eSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBzdWNjZXNzID0gbV9zZXQucmVt
b3ZlKG1faXRlbSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc05ld0VudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc05ld0VudHJ5
OyB9Ci0KLXByaXZhdGU6Ci0gICAgSGFzaFNldDxUPiYgbV9zZXQ7Ci0gICAgVCBtX2l0ZW07Ci0g
ICAgYm9vbCBtX2lzTmV3RW50cnk7Ci19OwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmYyMDg4MmU5MDU1MzEyNjRhMDc3MzUxZWU0OTA1MDE5YjQyZjg1Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2lu
dEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRl
ICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgYm9vbCBtYXRjaE1vZGUoQmluZGluZzo6
QmluZGluZ0RldGFpbHMgYmluZGluZ1R5cGUsIEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZSBt
b2RlKQotewotICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaWZv
cm1CdWZmZXJCaW5kaW5nKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpS
ZXNvdXJjZVNlbWFudGljOjpNb2RlOjpCdWZmZXI7Ci0gICAgfSwgWyZdKFNhbXBsZXJCaW5kaW5n
KSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGlj
OjpNb2RlOjpTYW1wbGVyOwotICAgIH0sIFsmXShUZXh0dXJlQmluZGluZykgLT4gYm9vbCB7Ci0g
ICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VGV4dHVy
ZTsKLSAgICB9LCBbJl0oU3RvcmFnZUJ1ZmZlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICBy
ZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OlVub3JkZXJlZEFjY2Vz
c1ZpZXc7Ci0gICAgfSksIGJpbmRpbmdUeXBlKTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90Pj4gbWF0Y2hSZXNvdXJjZXMoVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiYgZW50cnlQb2ludEl0ZW1zLCBMYXlvdXQmIGxheW91dCwgU2hhZGVyU3RhZ2Ugc2hh
ZGVyU3RhZ2UpCi17Ci0gICAgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAg
SGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7Ci0gICAgZm9yIChhdXRvJiBiaW5k
R3JvdXAgOiBsYXlvdXQpIHsKLSAgICAgICAgYXV0byBzcGFjZSA9IGJpbmRHcm91cC5uYW1lOwot
ICAgICAgICBmb3IgKGF1dG8mIGJpbmRpbmcgOiBiaW5kR3JvdXAuYmluZGluZ3MpIHsKLSAgICAg
ICAgICAgIGlmICghYmluZGluZy52aXNpYmlsaXR5LmNvbnRhaW5zKHNoYWRlclN0YWdlKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZW50cnlQb2ludEl0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
aXRlbSA9IGVudHJ5UG9pbnRJdGVtc1tpXTsKLSAgICAgICAgICAgICAgICBhdXRvJiBzZW1hbnRp
YyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmVzb3VyY2VTZW1hbnRpYyA9
IFdURjo6Z2V0PEFTVDo6UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICAgICAg
ICAgIGlmICghbWF0Y2hNb2RlKGJpbmRpbmcuYmluZGluZywgcmVzb3VyY2VTZW1hbnRpYy5tb2Rl
KCkpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAo
YmluZGluZy5leHRlcm5hbE5hbWUgIT0gcmVzb3VyY2VTZW1hbnRpYy5pbmRleCgpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoc3BhY2UgIT0gcmVz
b3VyY2VTZW1hbnRpYy5zcGFjZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKCZiaW5kaW5nLCBpKTsKLSAgICAgICAgICAgICAgICBp
dGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5UG9pbnRJdGVtcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvJiBpdGVtID0gZW50cnlQb2ludEl0ZW1zW2ldOwotICAgICAgICBhdXRvJiBz
ZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlucyhpKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
c3RhdGljIGJvb2wgbWF0Y2hJbnB1dHNPdXRwdXRzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIHZl
cnRleE91dHB1dHMsIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50SW5wdXRzKQotewot
ICAgIGZvciAoYXV0byYgZnJhZ21lbnRJbnB1dCA6IGZyYWdtZW50SW5wdXRzKSB7Ci0gICAgICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oKmZy
YWdtZW50SW5wdXQuc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8mIGZyYWdtZW50SW5wdXRTdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdl
SW5PdXRTZW1hbnRpYz4oKmZyYWdtZW50SW5wdXQuc2VtYW50aWMpOwotICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgdmVydGV4T3V0cHV0IDogdmVydGV4T3V0
cHV0cykgewotICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljPigqdmVydGV4T3V0cHV0LnNlbWFudGljKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8mIHZlcnRleE91dHB1dFN0YWdlSW5PdXRTZW1h
bnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigqdmVydGV4T3V0cHV0LnNl
bWFudGljKTsKLSAgICAgICAgICAgIGlmIChmcmFnbWVudElucHV0U3RhZ2VJbk91dFNlbWFudGlj
LmluZGV4KCkgPT0gdmVydGV4T3V0cHV0U3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobWF0Y2hlcygqZnJhZ21lbnRJbnB1dC51bm5hbWVkVHlwZSwgKnZl
cnRleE91dHB1dC51bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmICghZm91bmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVGb3JtYXQoVmVydGV4Rm9y
bWF0IHZlcnRleEZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIEludHJpbnNp
Y3MmIGludHJpbnNpY3MpCi17Ci0gICAgc3dpdGNoICh2ZXJ0ZXhGb3JtYXQpIHsKLSAgICBjYXNl
IFZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzJCMzJBMzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7Ci0gICAgY2FzZSBWZXJ0ZXhG
b3JtYXQ6OkZsb2F0UjMyRzMyQjMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAgIGNhc2UgVmVydGV4Rm9ybWF0OjpGbG9h
dFIzMkczMjoKLSAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
ZmxvYXQyVHlwZSgpKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQodmVydGV4Rm9ybWF0
ID09IFZlcnRleEZvcm1hdDo6RmxvYXRSMzIpOwotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5h
bWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4+IG1hdGNoVmVydGV4
QXR0cmlidXRlcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiB2ZXJ0ZXhJbnB1dHMsIFZlcnRleEF0
dHJpYnV0ZXMmIHZlcnRleEF0dHJpYnV0ZXMsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0g
ICAgSGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBIYXNoU2V0
PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIHZlcnRleEF0dHJp
YnV0ZSA6IHZlcnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2ZXJ0ZXhJbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSB2
ZXJ0ZXhJbnB1dHNbaV07Ci0gICAgICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFu
dGljOwotICAgICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBhdXRvJiBzdGFnZUluT3V0U2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OlN0YWdlSW5P
dXRTZW1hbnRpYz4oc2VtYW50aWMpOwotICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRp
Yy5pbmRleCgpICE9IHZlcnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KHZlcnRl
eEF0dHJpYnV0ZS52ZXJ0ZXhGb3JtYXQsICppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgcmVzdWx0
LmFkZCgmdmVydGV4QXR0cmlidXRlLCBpKTsKLSAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChp
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVydGV4
SW5wdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSB2ZXJ0ZXhJbnB1dHNb
aV07Ci0gICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50
aWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghaXRlbUluZGljZXMuY29u
dGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQsIEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBib29sIGlzQ29sb3IpCi17Ci0gICAgaWYgKGlzQ29sb3Ip
IHsKLSAgICAgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UjhVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSOFVub3JtU3Jn
YjoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSOFNub3JtOgotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlIxNlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIxNlNu
b3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIxNkZsb2F0OgotICAgICAgICBjYXNl
IFRleHR1cmVGb3JtYXQ6OlIzMkZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVG
b3JtYXQ6OlJHOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFVub3JtU3Jn
YjoKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhTbm9ybToKLSAgICAgICAgY2FzZSBU
ZXh0dXJlRm9ybWF0OjpSRzE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukcx
NlNub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZGbG9hdDoKLSAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSRzMyRmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hl
cyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OkI1RzZSNVVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJH
MTFCMTBGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRy
aW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThV
bm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFVub3JtU3JnYjoKLSAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVG
b3JtYXQ6OkJHUkE4VW5vcm1TcmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4
U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCMTBBMlVub3JtOgotICAgICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkExNlVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVG
b3JtYXQ6OlJHQkExNlNub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkExNkZs
b2F0OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkEzMkZsb2F0OgotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsK
LSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMzJVaW50OgotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UjMyU2ludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLmludFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UkczMlVpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy51aW50MlR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukcz
MlNpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5pbnQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBMzJVaW50Ogot
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludDRU
eXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkEzMlNpbnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5pbnQ0VHlwZSgpKTsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRv
ciosIHNpemVfdD4+IG1hdGNoQ29sb3JBdHRhY2htZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+
JiBmcmFnbWVudE91dHB1dHMsIFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1l
bnREZXNjcmlwdG9ycywgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBIYXNoTWFwPEF0
dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiByZXN1bHQ7Ci0gICAgSGFzaFNldDxzaXplX3Qs
IERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
c2l6ZV90Pj4gaXRlbUluZGljZXM7Ci0gICAgZm9yIChhdXRvJiBhdHRhY2htZW50RGVzY3JpcHRv
ciA6IGF0dGFjaG1lbnREZXNjcmlwdG9ycykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYWdtZW50T3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgaXRl
bSA9IGZyYWdtZW50T3V0cHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIHNlbWFudGljID0gKml0
ZW0uc2VtYW50aWM7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNU
OjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6
U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJbk91
dFNlbWFudGljLmluZGV4KCkgIT0gYXR0YWNobWVudERlc2NyaXB0b3IubmFtZSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KGF0
dGFjaG1lbnREZXNjcmlwdG9yLnRleHR1cmVGb3JtYXQsICppdGVtLnVubmFtZWRUeXBlLCBpbnRy
aW5zaWNzLCB0cnVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICAgICAgcmVzdWx0LmFkZCgmYXR0YWNobWVudERlc2NyaXB0b3IsIGkpOwotICAgICAgICAg
ICAgaXRlbUluZGljZXMuYWRkKGkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmcmFnbWVudE91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgaXRlbSA9IGZyYWdtZW50T3V0cHV0c1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAq
aXRlbS5zZW1hbnRpYzsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6
U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJv
b2wgbWF0Y2hEZXB0aEF0dGFjaG1lbnQoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRP
dXRwdXRzLCBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3IsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihmcmFnbWVudE91dHB1dHMuYmVnaW4oKSwgZnJhZ21l
bnRPdXRwdXRzLmVuZCgpLCBbJl0oRW50cnlQb2ludEl0ZW0mIGl0ZW0pIHsKLSAgICAgICAgYXV0
byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEFTVDo6QnVpbHRJblNlbWFudGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGF1dG8mIGJ1aWx0SW5TZW1hbnRpYyA9IFdURjo6Z2V0PEFT
VDo6QnVpbHRJblNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiBidWlsdEluU2Vt
YW50aWMudmFyaWFibGUoKSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGVw
dGg7Ci0gICAgfSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IGZyYWdtZW50T3V0cHV0cy5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvci0+bmFtZSk7Ci0gICAgICAgIHJldHVybiBpc0FjY2VwdGFibGVGb3JtYXQoZGVwdGhTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3ItPnRleHR1cmVGb3JtYXQsICppdGVyYXRvci0+dW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MsIGZhbHNlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFBy
b2dyYW0mIHByb2dyYW0sIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLCBib29sIGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIsIGJvb2wgZnJhZ21lbnRTaGFk
ZXJFeGlzdHMpCi17Ci0gICAgYXV0byB2ZXJ0ZXhGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250
ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhFbnRyeVBv
aW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotICAgIGlmICh2ZXJ0ZXhGdW5j
dGlvbnMuc2l6ZSgpICE9IDEgfHwgIXZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50
VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4odmVydGV4RnVuY3Rpb25zWzBd
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvJiB2ZXJ0ZXhT
aGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRl
eEZ1bmN0aW9uc1swXS5nZXQoKSk7Ci0gICAgYXV0byB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRl
bXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHZlcnRleFNo
YWRlckVudHJ5UG9pbnQpOwotICAgIGlmICghdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8gdmVydGV4U2hhZGVyUmVzb3Vy
Y2VNYXAgPSBtYXRjaFJlc291cmNlcyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0
cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OlZlcnRleCk7
Ci0gICAgaWYgKCF2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvIG1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzID0gbWF0Y2hWZXJ0ZXhB
dHRyaWJ1dGVzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IudmVydGV4QXR0cmlidXRlcywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwot
ICAgIGlmICghbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlckV4aXN0cykKLSAgICAgICAgcmV0dXJuIHt7
ICZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50LCBudWxscHRyLCAqdmVydGV4U2hhZGVyRW50cnlQb2lu
dEl0ZW1zLCBFbnRyeVBvaW50SXRlbXMoKSwgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBIYXNo
TWFwPEJpbmRpbmcqLCBzaXplX3Q+KCksICptYXRjaGVkVmVydGV4QXR0cmlidXRlcywgSGFzaE1h
cDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4oKSB9fTsKLQotICAgIGF1dG8gZnJhZ21l
bnROYW1lU3BhY2UgPSBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID8gQVNUOjpOYW1lU3BhY2U6Ok5h
bWVTcGFjZTIgOiBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMTsKLSAgICBhdXRvIGZyYWdtZW50
RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgZnJhZ21lbnROYW1lU3BhY2Up
OwotICAgIGlmIChmcmFnbWVudEZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhZnJhZ21lbnRGdW5j
dGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvJiBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpOwotICAg
IGF1dG8gZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRl
bXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7Ci0gICAg
aWYgKCFmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvIGZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAgPSBtYXRjaFJlc291
cmNlcyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlmICghZnJh
Z21lbnRTaGFkZXJSZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBpZiAoIW1hdGNoSW5wdXRzT3V0cHV0cyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91
dHB1dHMsIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8gbWF0Y2hlZENvbG9yQXR0YWNobWVudHMgPSBt
YXRjaENvbG9yQXR0YWNobWVudHMoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1
dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvci5h
dHRhY2htZW50RGVzY3JpcHRvcnMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKLSAgICBpZiAoIW1h
dGNoZWRDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IGlmICghbWF0Y2hEZXB0aEF0dGFjaG1lbnQoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMt
Pm91dHB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3Jp
cHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgcHJvZ3JhbS5pbnRyaW5zaWNz
KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7eyAmdmVydGV4
U2hhZGVyRW50cnlQb2ludCwgJmZyYWdtZW50U2hhZGVyRW50cnlQb2ludCwgKnZlcnRleFNoYWRl
ckVudHJ5UG9pbnRJdGVtcywgKmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCAqdmVydGV4
U2hhZGVyUmVzb3VyY2VNYXAsICpmcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCAqbWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMsICptYXRjaGVkQ29sb3JBdHRhY2htZW50cyB9fTsKLX0KLQotc3RkOjpv
cHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYg
cHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcikKLXsKLSAgICBhdXRvIGZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRG
dW5jdGlvbnMoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5lbnRyeVBvaW50TmFtZSwgQVNUOjpO
YW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwotICAgIGlmIChmdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwg
IWZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBhdXRvJiBlbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGZ1bmN0aW9uc1swXS5nZXQoKSk7Ci0gICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBn
YXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIGVudHJ5UG9pbnQpOwot
ICAgIGlmICghZW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIEFTU0VSVChlbnRyeVBvaW50SXRlbXMtPm91dHB1dHMuaXNFbXB0eSgpKTsKLSAgICBhdXRv
IHJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXMoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7Ci0g
ICAgaWYgKCFyZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4ge3sgJmVudHJ5UG9pbnQsICplbnRyeVBvaW50SXRlbXMsICpyZXNvdXJjZU1hcCB9fTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYmY2YzY3M2QzZGViNmM3ZmMxZjMyMzllYThiMGZk
MGEzMjc4NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMR2F0aGVy
RW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXN0cnVjdCBNYXRjaGVkUmVuZGVyU2Vt
YW50aWNzIHsKLSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogdmVydGV4U2hhZGVyOwotICAg
IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiBmcmFnbWVudFNoYWRlcjsKLSAgICBFbnRyeVBvaW50
SXRlbXMgdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zOwotICAgIEVudHJ5UG9pbnRJdGVtcyBm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXpl
X3Q+IHZlcnRleFNoYWRlclJlc291cmNlTWFwOwotICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4gZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcDsKLSAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0
ZSosIHNpemVfdD4gbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXM7Ci0gICAgSGFzaE1hcDxBdHRhY2ht
ZW50RGVzY3JpcHRvciosIHNpemVfdD4gbWF0Y2hlZENvbG9yQXR0YWNobWVudHM7Ci19OwotCi1z
dGQ6Om9wdGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dy
YW0mLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBib29sIGRpc3RpbmN0RnJhZ21lbnRTaGFk
ZXIsIGJvb2wgZnJhZ21lbnRTaGFkZXJFeGlzdHMpOwotCi1zdHJ1Y3QgTWF0Y2hlZENvbXB1dGVT
ZW1hbnRpY3MgewotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiBzaGFkZXI7Ci0gICAgRW50
cnlQb2ludEl0ZW1zIGVudHJ5UG9pbnRJdGVtczsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXpl
X3Q+IHJlc291cmNlTWFwOwotfTsKLQotc3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFu
dGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYsIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Im
KTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0IGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODdjMDU2MjI2N2E3YmJjMWQ1YjRkYjliODkz
OWY1ZGY3MDFhYTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJy
YXJ5LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4MDAzICswLDAgQEAKLS8vIFRoaXMgd2FzIGF1
dG9nZW5lcmF0ZWQgZnJvbSBHZW5lcmF0ZV9TdGFuZGFyZF9MaWJyYXJ5LmpzLgotLy8gVGhpcyBz
dGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHByb2Nlc3NlZCBzdWNoIHRoYXQgZnVuY3Rpb25zIHdo
aWNoIHNoYXJlIGEgbmFtZSBhcmUgbmV4dCB0byBlYWNoIG90aGVyLAotLy8gYW5kIGJlZm9yZSBl
YWNoIGdyb3VwIG9mIGZ1bmN0aW9ucywgdGhlcmUncyBhIHByZWZpeCB0aGF0IGhhcyB0byBiZSBp
biBhIHBhcnRpY3VsYXIgZm9ybS4KLS8vIFRoZSBXZWJLaXQgYnVpbGQgcHJvY2VzcyBleHBsb2l0
cyB0aGlzIHN0cnVjdHVyZSB0byBidWlsZCBhIG1hcCBvZiB3aGljaCBmdW5jdGlvbiBuYW1lIGNv
cnJlc3BvbmRzIHRvIHdoaWNoCi0vLyBwYXJ0IG9mIHRoaXMgZmlsZS4gVGhlbiwgd2hlbiB3ZSBw
YXJzZSBXSExTTCBwcm9ncmFtcywgd2UgY2FuIG9ubHkgcGFyc2UgdGhlIHBpZWNlcyBvZiB0aGlz
IHN0YW5kYXJkIGxpYnJhcnkKLS8vIHdoaWNoIGNvcnJlc3BvbmQgdG8gZnVuY3Rpb25zIHRoYXQg
YXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhlIHVzZXIgcHJvZ3JhbS4KLQotbmF0aXZlIHR5cGVkZWYg
dm9pZDsKLW5hdGl2ZSB0eXBlZGVmIGJvb2w7Ci1uYXRpdmUgdHlwZWRlZiB1aW50OwotbmF0aXZl
IHR5cGVkZWYgaW50OwotbmF0aXZlIHR5cGVkZWYgZmxvYXQ7Ci1uYXRpdmUgdHlwZWRlZiBhdG9t
aWNfaW50OwotbmF0aXZlIHR5cGVkZWYgYXRvbWljX3VpbnQ7Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8Ym9vbCwgMj47Ci10eXBlZGVmIGJvb2wyID0gdmVjdG9yPGJvb2wsIDI+OwotbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPGJvb2wsIDM+OwotdHlwZWRlZiBib29sMyA9IHZlY3Rvcjxib29sLCAzPjsK
LW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCA0PjsKLXR5cGVkZWYgYm9vbDQgPSB2ZWN0b3I8
Ym9vbCwgND47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgMj47Ci10eXBlZGVmIHVpbnQy
ID0gdmVjdG9yPHVpbnQsIDI+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDM+OwotdHlw
ZWRlZiB1aW50MyA9IHZlY3Rvcjx1aW50LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50
LCA0PjsKLXR5cGVkZWYgdWludDQgPSB2ZWN0b3I8dWludCwgND47Ci1uYXRpdmUgdHlwZWRlZiB2
ZWN0b3I8aW50LCAyPjsKLXR5cGVkZWYgaW50MiA9IHZlY3RvcjxpbnQsIDI+OwotbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPGludCwgMz47Ci10eXBlZGVmIGludDMgPSB2ZWN0b3I8aW50LCAzPjsKLW5h
dGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDQ+OwotdHlwZWRlZiBpbnQ0ID0gdmVjdG9yPGludCwg
ND47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDI+OwotdHlwZWRlZiBmbG9hdDIgPSB2
ZWN0b3I8ZmxvYXQsIDI+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAzPjsKLXR5cGVk
ZWYgZmxvYXQzID0gdmVjdG9yPGZsb2F0LCAzPjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9h
dCwgND47Ci10eXBlZGVmIGZsb2F0NCA9IHZlY3RvcjxmbG9hdCwgND47Ci0KLW5hdGl2ZSB0eXBl
ZGVmIG1hdHJpeDxmbG9hdCwgMiwgMj47Ci10eXBlZGVmIGZsb2F0MngyID0gbWF0cml4PGZsb2F0
LCAyLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMiwgMz47Ci10eXBlZGVmIGZs
b2F0MngzID0gbWF0cml4PGZsb2F0LCAyLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9h
dCwgMiwgND47Ci10eXBlZGVmIGZsb2F0Mng0ID0gbWF0cml4PGZsb2F0LCAyLCA0PjsKLW5hdGl2
ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMywgMj47Ci10eXBlZGVmIGZsb2F0M3gyID0gbWF0cml4
PGZsb2F0LCAzLCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgMywgMz47Ci10eXBl
ZGVmIGZsb2F0M3gzID0gbWF0cml4PGZsb2F0LCAzLCAzPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJp
eDxmbG9hdCwgMywgND47Ci10eXBlZGVmIGZsb2F0M3g0ID0gbWF0cml4PGZsb2F0LCAzLCA0PjsK
LW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgNCwgMj47Ci10eXBlZGVmIGZsb2F0NHgyID0g
bWF0cml4PGZsb2F0LCA0LCAyPjsKLW5hdGl2ZSB0eXBlZGVmIG1hdHJpeDxmbG9hdCwgNCwgMz47
Ci10eXBlZGVmIGZsb2F0NHgzID0gbWF0cml4PGZsb2F0LCA0LCAzPjsKLW5hdGl2ZSB0eXBlZGVm
IG1hdHJpeDxmbG9hdCwgNCwgND47Ci10eXBlZGVmIGZsb2F0NHg0ID0gbWF0cml4PGZsb2F0LCA0
LCA0PjsKLQotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDIsIDI+OwotdHlwZWRlZiBib29s
MngyID0gbWF0cml4PGJvb2wsIDIsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDIs
IDM+OwotdHlwZWRlZiBib29sMngzID0gbWF0cml4PGJvb2wsIDIsIDM+OwotbmF0aXZlIHR5cGVk
ZWYgbWF0cml4PGJvb2wsIDIsIDQ+OwotdHlwZWRlZiBib29sMng0ID0gbWF0cml4PGJvb2wsIDIs
IDQ+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDMsIDI+OwotdHlwZWRlZiBib29sM3gy
ID0gbWF0cml4PGJvb2wsIDMsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDMsIDM+
OwotdHlwZWRlZiBib29sM3gzID0gbWF0cml4PGJvb2wsIDMsIDM+OwotbmF0aXZlIHR5cGVkZWYg
bWF0cml4PGJvb2wsIDMsIDQ+OwotdHlwZWRlZiBib29sM3g0ID0gbWF0cml4PGJvb2wsIDMsIDQ+
OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDQsIDI+OwotdHlwZWRlZiBib29sNHgyID0g
bWF0cml4PGJvb2wsIDQsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGJvb2wsIDQsIDM+Owot
dHlwZWRlZiBib29sNHgzID0gbWF0cml4PGJvb2wsIDQsIDM+OwotbmF0aXZlIHR5cGVkZWYgbWF0
cml4PGJvb2wsIDQsIDQ+OwotdHlwZWRlZiBib29sNHg0ID0gbWF0cml4PGJvb2wsIDQsIDQ+Owot
Ci1uYXRpdmUgdHlwZWRlZiBzYW1wbGVyOwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPHVpbnQ+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1
cmUxRDx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDQ+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTFEPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8aW50Mj47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8
aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTFEPGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8ZmxvYXQzPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFE
QXJyYXk8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTx1aW50Mj47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MURBcnJheTx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MURBcnJheTxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGludDQ+OwotbmF0
aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0Mz47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTJEPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQyPjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmUyRDx1aW50Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWlu
dDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlMkQ8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50Mz47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMkQ8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQ+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
MkQ8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxmbG9hdDQ+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTJEQXJyYXk8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJh
eTx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50Mz47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRB
cnJheTxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8aW50Mj47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFy
cmF5PGludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+OwotbmF0aXZl
IHR5cGVkZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUy
REFycmF5PGZsb2F0Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDQ+Owot
bmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNE
PHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50Mz47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlM0Q8dWludDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGludD47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50
Mz47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlM0Q8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPGZsb2F0Mj47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9h
dDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBU
ZXh0dXJlQ3ViZTx1aW50Mj47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50Mz47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJl
Q3ViZTxpbnQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8aW50Mj47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlQ3ViZTxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGludDQ+
OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZUN1YmU8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0Mz47Ci1u
YXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdDQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZURlcHRoMkQ8ZmxvYXQ+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PjsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIHJldmVyc2ViaXRzICovCi11aW50IHJldmVyc2ViaXRzKHVpbnQgeCkgewotICAg
IHJldHVybiB1aW50KCgoeCAmIHVpbnQoMSA8PCAwKSkgPDwgMzEpIHwKLSAgICAgICAgICAgKCh4
ICYgdWludCgxIDw8IDEpKSA8PCAyOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMikp
IDw8IDI3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAzKSkgPDwgMjUpIHwKLSAgICAg
ICAgICAgKCh4ICYgdWludCgxIDw8IDQpKSA8PCAyMykgfAotICAgICAgICAgICAoKHggJiB1aW50
KDEgPDwgNSkpIDw8IDIxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA2KSkgPDwgMTkp
IHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDcpKSA8PCAxNykgfAotICAgICAgICAgICAo
KHggJiB1aW50KDEgPDwgOCkpIDw8IDE1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA5
KSkgPDwgMTMpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDEwKSkgPDwgMTEpIHwKLSAg
ICAgICAgICAgKCh4ICYgdWludCgxIDw8IDExKSkgPDwgOSkgfAotICAgICAgICAgICAoKHggJiB1
aW50KDEgPDwgMTIpKSA8PCA3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxMykpIDw8
IDUpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDE0KSkgPDwgMykgfAotICAgICAgICAg
ICAoKHggJiB1aW50KDEgPDwgMTUpKSA8PCAxKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8
PCAxNikpID4+IDEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDE3KSkgPj4gMykgfAot
ICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTgpKSA+PiA1KSB8Ci0gICAgICAgICAgICgoeCAm
IHVpbnQoMSA8PCAxOSkpID4+IDcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDIwKSkg
Pj4gOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjEpKSA+PiAxMSkgfAotICAgICAg
ICAgICAoKHggJiB1aW50KDEgPDwgMjIpKSA+PiAxMykgfAotICAgICAgICAgICAoKHggJiB1aW50
KDEgPDwgMjMpKSA+PiAxNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjQpKSA+PiAx
NykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjUpKSA+PiAxOSkgfAotICAgICAgICAg
ICAoKHggJiB1aW50KDEgPDwgMjYpKSA+PiAyMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEg
PDwgMjcpKSA+PiAyMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjgpKSA+PiAyNSkg
fAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMjkpKSA+PiAyNykgfAotICAgICAgICAgICAo
KHggJiB1aW50KDEgPDwgMzApKSA+PiAyOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwg
MzEpKSA+PiAzMSkpOwotfQotdWludDIgcmV2ZXJzZWJpdHModWludDIgeCkgewotICAgIHVpbnQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByZXZlcnNlYml0cyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSByZXZlcnNlYml0cyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgcmV2
ZXJzZWJpdHModWludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBy
ZXZlcnNlYml0cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByZXZlcnNlYml0cyh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSByZXZlcnNlYml0cyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDQgcmV2ZXJzZWJpdHModWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSByZXZlcnNlYml0cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByZXZlcnNlYml0cyh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSByZXZlcnNlYml0cyh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSByZXZlcnNlYml0cyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBpc29yZGVyZWQgKi8KLWJvb2wgaXNvcmRlcmVkKGZsb2F0IHgsIGZsb2F0IHkp
IHsKLSAgICByZXR1cm4gKHggPT0geCkgJiYgKHkgPT0geSk7Ci19Ci1ib29sMiBpc29yZGVyZWQo
ZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGlzb3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc29yZGVyZWQoeFsxXSwg
eVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzb3JkZXJlZChmbG9hdDMgeCwg
ZmxvYXQzIHkpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNvcmRlcmVk
KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzb3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBpc29yZGVyZWQoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2w0IGlzb3JkZXJlZChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBib29sNCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNvcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGlzb3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc29yZGVyZWQoeFsy
XSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNvcmRlcmVkKHhbM10sIHlbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCB0cmFuc3Bvc2UgKi8KLWZsb2F0
IHRyYW5zcG9zZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MiB0cmFuc3Bv
c2UoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFd
ID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiB0cmFuc3Bvc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhb
MF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0g
eFsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdHJhbnNwb3NlKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1b
Ml07Ci0gICAgcmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFd
WzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsx
XVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyB0cmFuc3Bvc2UoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFd
OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsx
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgdHJhbnNwb3NlKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1bMl07Ci0g
ICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsK
LSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRyYW5zcG9zZShmbG9hdDN4NCB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAg
IHJlc3VsdFszXVswXSA9IHhbMF1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0g
ICAgcmVzdWx0WzNdWzFdID0geFsxXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsK
LSAgICByZXN1bHRbM11bMl0gPSB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCB0cmFuc3Bvc2UoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdOwotICAg
IHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAg
ICByZXN1bHRbMF1bM10gPSB4WzNdWzBdOwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRyYW5zcG9zZShmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVz
dWx0WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJl
c3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IHhbMl1bMF07Ci0gICAg
cmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdOwotICAg
IHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0geFszXVsxXTsKLSAg
ICByZXN1bHRbMl1bM10gPSB4WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCB0cmFuc3Bvc2UoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVz
dWx0WzJdWzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJl
c3VsdFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAg
cmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAg
IHJlc3VsdFsyXVsyXSA9IHhbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0geFsyXVszXTsKLSAg
ICByZXN1bHRbMF1bM10gPSB4WzNdWzBdOwotICAgIHJlc3VsdFsxXVszXSA9IHhbM11bMV07Ci0g
ICAgcmVzdWx0WzJdWzNdID0geFszXVsyXTsKLSAgICByZXN1bHRbM11bM10gPSB4WzNdWzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2Vk
QWRkICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRk
KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFk
Z3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY19p
bnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQo
dGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQq
LCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBZGQodGhyZWFk
Z3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRBZGQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50Kiwg
aW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNhdHVyYXRlICov
Ci1mbG9hdCBzYXR1cmF0ZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGNsYW1wKHgsIDAsIDEpOwot
fQotZmxvYXQyIHNhdHVyYXRlKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHNhdHVyYXRlKGZsb2F0MyB4KSB7Ci0g
ICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzYXR1cmF0ZSh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNhdHVyYXRlKGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzYXR1cmF0ZSh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBzYXR1cmF0ZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzYXR1cmF0ZSh4WzJd
KTsKLSAgICByZXN1bHRbM10gPSBzYXR1cmF0ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgc2F0dXJhdGUoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgc2F0dXJhdGUoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0
ZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc2F0dXJhdGUoZmxv
YXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1
cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBz
YXR1cmF0ZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2F0dXJhdGUoZmxvYXQyeDMgeCkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDMgc2F0dXJhdGUoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1
cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBz
YXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBzYXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2F0dXJhdGUoZmxvYXQ0eDMgeCkg
ewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzYXR1cmF0ZSh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1
cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBzYXR1cmF0ZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDQgc2F0dXJhdGUoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1cmF0ZSh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzYXR1cmF0ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBzYXR1cmF0ZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgc2F0dXJhdGUoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0
ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzYXR1
cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0ZSh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBz
YXR1cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBzYXR1cmF0ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBzYXR1cmF0ZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzYXR1cmF0ZSh4WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgc2F0dXJhdGUoZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzYXR1cmF0ZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzYXR1cmF0ZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBzYXR1cmF0ZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzYXR1cmF0ZSh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzYXR1cmF0ZSh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBzYXR1cmF0ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzYXR1cmF0
ZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzYXR1cmF0ZSh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBzYXR1cmF0ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzYXR1
cmF0ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzYXR1cmF0ZSh4WzJdWzJdKTsKLSAg
ICByZXN1bHRbM11bMl0gPSBzYXR1cmF0ZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBz
YXR1cmF0ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzYXR1cmF0ZSh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBzYXR1cmF0ZSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10g
PSBzYXR1cmF0ZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgbWFkICovCi0KLWZsb2F0IG1hZChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7
Ci0gICAgcmV0dXJuIHggKiB5ICsgejsKLX0KLWZsb2F0MiBtYWQoZmxvYXQyIHgsIGZsb2F0MiB5
LCBmbG9hdDIgeikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWFkKHhb
MF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1hZCh4WzFdLCB5WzFdLCB6WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1hZChmbG9hdDMgeCwgZmxvYXQzIHksIGZs
b2F0MyB6KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYWQoeFswXSwg
eVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWFkKHhbMV0sIHlbMV0sIHpbMV0pOwotICAg
IHJlc3VsdFsyXSA9IG1hZCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IG1hZChmbG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYWQoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbWFkKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1hZCh4WzJd
LCB5WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBtYWQoeFszXSwgeVszXSwgelszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1hZChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5
LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQo
eFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1b
MV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5
WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbWFkKGZs
b2F0M3gyIHgsIGZsb2F0M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQo
eFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgyIG1hZChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4MiB6KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IG1hZCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQo
eFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIG1hZChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MyBtYWQoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVsw
XVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBtYWQoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbWFkKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IG1hZCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgbWFkKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0s
IHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IG1hZCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1hZCh4WzJdWzJdLCB5
WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYWQoeFszXVsyXSwgeVszXVsy
XSwgelszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1hZChmbG9hdDJ4
NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYWQo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWFkKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1hZCh4WzBdWzNdLCB5
WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtYWQoeFsxXVszXSwgeVsxXVsz
XSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1hZChmbG9hdDN4
NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbWFkKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQo
eFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1b
MV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5
WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsy
XSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1hZCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBtYWQoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gbWFkKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtYWQoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSwgZmxv
YXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQo
eFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1b
MF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5
WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVsw
XSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbWFkKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1h
ZCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBtYWQoeFsw
XVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWFkKHhbMV1bM10s
IHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1hZCh4WzJdWzNdLCB5WzJd
WzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBtYWQoeFszXVszXSwgeVszXVszXSwg
elszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
bW9kZiAqLwotCi1mbG9hdCBtb2RmKGZsb2F0IHgsIHRocmVhZCBmbG9hdCogaXApIHsKLSAgICB1
aW50IHJlc3VsdCA9IHVpbnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAg
cmV0dXJuIGZsb2F0KHJlc3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgdGhyZWFkIGZs
b2F0MiogeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtb2RmKGZsb2F0MyB4LCB0aHJlYWQgZmxv
YXQzKiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCB0aHJlYWQg
ZmxvYXQ0KiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
ID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0Mngy
IHgsIHRocmVhZCBmbG9hdDJ4MiogeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9h
dCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBt
b2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVm
ZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIHRo
cmVhZCBmbG9hdDN4MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhb
Ml1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IG1vZGYoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0
MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIG1vZGYoZmxvYXQzeDMgeCwgdGhyZWFkIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2Rm
KHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsx
XSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgbW9kZihmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHkpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2Rm
KGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYo
eFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4
LCB0aHJlYWQgZmxvYXQzeDQqIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9k
Zih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFsw
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0g
bW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtb2RmKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4
NCogeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4
WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0g
PSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9k
Zih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
ZmxvYXQgbW9kZihmbG9hdCB4LCBkZXZpY2UgZmxvYXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQg
PSB1aW50KHgpOwotICAgICppcCA9IHggLSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVybiBmbG9h
dChyZXN1bHQpOwotfQotZmxvYXQyIG1vZGYoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHkpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBt
b2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
ID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDMgbW9kZihmbG9hdDMgeCwgZGV2aWNlIGZsb2F0MyogeSkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1v
ZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0g
PSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9
IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXSA9IG1vZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4LCBkZXZpY2Ug
ZmxvYXQyeDIqIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwot
ICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbW9kZihmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQz
eDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2RmKGZsb2F0
NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0g
PSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9k
Zih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbW9kZihmbG9hdDJ4MyB4LCBkZXZp
Y2UgZmxvYXQyeDMqIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVy
OwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsw
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBt
b2RmKGZsb2F0M3gzIHgsIGRldmljZSBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1v
ZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhb
Ml1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsy
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IG1vZGYoZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFszXVsyXSA9IG1vZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9hdDJ4NCB4
LCBkZXZpY2UgZmxvYXQyeDQqIHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9k
Zih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFsw
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
M10gPSBtb2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG1vZGYoZmxvYXQzeDQgeCwgZGV2aWNlIGZs
b2F0M3g0KiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBt
b2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4
WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsy
XVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1b
M10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVsz
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbW9kZihmbG9hdDR4NCB4LCBkZXZpY2UgZmxvYXQ0eDQqIHkpIHsKLSAg
ICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9
IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2Rm
KHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIp
OwotICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBd
WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBt
b2RmKHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXVszXSA9IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVszXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZsb2F0IG1vZGYo
ZmxvYXQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQqIGlwKSB7Ci0gICAgdWludCByZXN1bHQgPSB1aW50
KHgpOwotICAgICppcCA9IHggLSBmbG9hdChyZXN1bHQpOwotICAgIHJldHVybiBmbG9hdChyZXN1
bHQpOwotfQotZmxvYXQyIG1vZGYoZmxvYXQyIHgsIHRocmVhZGdyb3VwIGZsb2F0MiogeSkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXSA9IG1v
ZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV0g
PSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MyBtb2RmKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHkp
IHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF0g
PSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXSA9IGJ1ZmZlcjsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZs
b2F0NCogeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFszXSA9IG1vZGYoeFszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbW9kZihmbG9hdDJ4MiB4
LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgs
IHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIGZs
b2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9
IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDMgbW9kZihmbG9hdDJ4MyB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4
WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsy
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0g
PSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1vZGYoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAg
ZmxvYXQzeDMqIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwot
ICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9
IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2Rm
KHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVy
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIHRocmVh
ZGdyb3VwIGZsb2F0NHgzKiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYo
eFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
M11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAg
IHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1v
ZGYoeFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbW9kZihmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9h
dDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9k
Zih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsx
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4NCog
eSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsx
XSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBt
b2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHkpIHsKLSAgICBm
bG9hdDR4NCByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2Rm
KHhbMV1bM10sICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzJdWzNdID0gbW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVy
OwotICAgIHJlc3VsdFszXVszXSA9IG1vZGYoeFszXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsz
XVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBJbnRlcmxvY2tlZE1pbiAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNl
IGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkTWluKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRl
dmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWlu
dCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWlu
KGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdy
b3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkTWluKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwg
dGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBsZW5ndGggKi8KLW5hdGl2ZSBmbG9hdCBsZW5ndGgoZmxvYXQpOwotbmF0aXZlIGZsb2F0
IGxlbmd0aChmbG9hdDIpOwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdDMpOwotbmF0aXZlIGZs
b2F0IGxlbmd0aChmbG9hdDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3ItLSAqLwot
dWludCBvcGVyYXRvci0tKHVpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQot
aW50IG9wZXJhdG9yLS0oaW50IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlIC0gMTsKLX0KLWZs
b2F0IG9wZXJhdG9yLS0oZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgLSAxOwotfQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I8PCAqLwotbmF0aXZlIGludCBvcGVyYXRvcjw8
KGludCwgdWludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcjw8KHVpbnQsIHVpbnQpOwotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgZXhwMiAqLwotZmxvYXQgZXhwMihmbG9hdCB4KSB7Ci0gICAgcmV0dXJu
IGV4cCh4ICogbG9nKGZsb2F0KDIpKSk7Ci19Ci1mbG9hdDIgZXhwMihmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwMih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBleHAyKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZXhwMihmbG9h
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZXhwMih4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBleHAyKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cDIoeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBleHAyKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGV4cDIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwMih4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBleHAyKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBleHAyKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZXhwMihmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBleHAyKGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAy
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBleHAyKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIo
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGV4cDIoZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZXhwMihmbG9hdDR4MyB4KSB7Ci0gICAg
ZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhw
Mih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBleHAyKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBleHAyKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAy
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZXhwMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAyKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBleHAyKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cDIoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBl
eHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZXhwMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAyKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGV4cDIoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IGV4cDIoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBleHAyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cDIoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZXhwMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAyKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGV4cDIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhw
Mih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBleHAyKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGV4cDIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZXhwMih4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBleHAyKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc3Vub3JkZXJlZCAqLwotCi1ib29sIGlzdW5vcmRl
cmVkKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gaXNuYW4oeCkgfHwgaXNuYW4oeSk7
Ci19Ci1ib29sMiBpc3Vub3JkZXJlZChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBib29sMiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gaXN1bm9yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wzIGlzdW5vcmRlcmVkKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGJvb2wzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJlZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBpc3Vub3JkZXJl
ZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXN1bm9yZGVyZWQo
ZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzdW5vcmRlcmVkKHhb
MV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzdW5vcmRlcmVkKHhbMl0sIHlbMl0pOwotICAg
IHJlc3VsdFszXSA9IGlzdW5vcmRlcmVkKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhdGFuICovCi1uYXRpdmUgZmxvYXQgYXRhbihmbG9h
dCk7Ci1mbG9hdDIgYXRhbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gYXRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYXRhbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBhdGFuKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4oeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gYXRhbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhdGFuKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhdGFuKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgYXRhbihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBhdGFuKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhdGFuKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3gzIGF0YW4oZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBhdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gYXRhbih4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgYXRhbihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGF0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4o
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBhdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBh
dGFuKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhdGFuKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0
YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbih4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBhdGFuKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBhdGFuKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRh
bih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGF0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbih4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBhdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGF0YW4oeFsy
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGF0YW4oZmxvYXQ0eDQgeCkg
ewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
YXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGF0YW4oeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGF0YW4o
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbih4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBhdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRhbih4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBh
dGFuKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBsb2cgKi8KLW5hdGl2ZSBmbG9hdCBsb2coZmxvYXQpOwotZmxvYXQyIGxvZyhmbG9hdDIgeCkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGxvZyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZyhm
bG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGxvZyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2coeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsb2coZmxvYXQ0IHgpIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBs
b2coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGxv
Zyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbG9nKGZsb2F0MngyIHgp
IHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
b2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBsb2coZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgbG9nKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gbG9nKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgbG9nKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxv
Zyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIGxvZyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
bG9nKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsb2coZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGxvZyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gbG9nKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxvZyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDQgbG9nKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxvZyh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBsb2coeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgbG9nKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxv
Zyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBsb2coeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2co
eFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxvZyhmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBs
b2coeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2coeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxv
Zyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2coeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gbG9nKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGxvZyh4WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgTG9hZCAqLwotbmF0
aXZlIHVpbnQgTG9hZChUZXh0dXJlMUQ8dWludD4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dCBMb2FkKFRleHR1cmUxREFycmF5PHVpbnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
IExvYWQoVGV4dHVyZTJEPHVpbnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IExvYWQo
VGV4dHVyZTJEQXJyYXk8dWludD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgTG9hZChU
ZXh0dXJlM0Q8dWludD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4dHVy
ZTFEPHVpbnQyPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUxREFy
cmF5PHVpbnQyPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlMkQ8
dWludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgTG9hZChUZXh0dXJlM0Q8dWlu
dDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUxRDx1aW50Mz4s
IGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMURBcnJheTx1aW50Mz4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTJEPHVpbnQzPiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVyZTNEPHVpbnQzPiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMUQ8dWludDQ+LCBpbnQgbG9jYXRp
b24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUyRDx1aW50ND4sIGludDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBpbnQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUzRDx1aW50ND4sIGludDMgbG9jYXRpb24pOwot
bmF0aXZlIGludCBMb2FkKFRleHR1cmUxRDxpbnQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGlu
dCBMb2FkKFRleHR1cmUxREFycmF5PGludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludCBM
b2FkKFRleHR1cmUyRDxpbnQ+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0
dXJlMkRBcnJheTxpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgTG9hZChUZXh0dXJl
M0Q8aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUxRDxpbnQy
PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMkQ8aW50Mj4sIGludDIg
bG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUzRDxpbnQyPiwgaW50MyBsb2NhdGlv
bik7Ci1uYXRpdmUgaW50MyBMb2FkKFRleHR1cmUxRDxpbnQzPiwgaW50IGxvY2F0aW9uKTsKLW5h
dGl2ZSBpbnQzIExvYWQoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0
aXZlIGludDMgTG9hZChUZXh0dXJlMkQ8aW50Mz4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGlu
dDMgTG9hZChUZXh0dXJlMkRBcnJheTxpbnQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50
MyBMb2FkKFRleHR1cmUzRDxpbnQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2Fk
KFRleHR1cmUxRDxpbnQ0PiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4dHVy
ZTFEQXJyYXk8aW50ND4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJl
MkQ8aW50ND4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGludDQgTG9hZChUZXh0dXJlMkRBcnJh
eTxpbnQ0PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRleHR1cmUzRDxpbnQ0
PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMUQ8ZmxvYXQ+LCBp
bnQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBp
bnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUyRDxmbG9hdD4sIGludDIg
bG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBpbnQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUzRDxmbG9hdD4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUxRDxmbG9hdDI+LCBpbnQgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGludDIgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUyRDxmbG9hdDI+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBpbnQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgTG9hZChUZXh0dXJlM0Q8ZmxvYXQyPiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTFEPGZsb2F0Mz4sIGludCBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgaW50MiBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIGludDIgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIGludDMgbG9j
YXRpb24pOwotbmF0aXZlIGZsb2F0MyBMb2FkKFRleHR1cmUzRDxmbG9hdDM+LCBpbnQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMUQ8ZmxvYXQ0PiwgaW50IGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMkQ8ZmxvYXQ0PiwgaW50MiBsb2NhdGlv
bik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgaW50MyBsb2Nh
dGlvbik7Ci1uYXRpdmUgZmxvYXQ0IExvYWQoVGV4dHVyZTNEPGZsb2F0ND4sIGludDMgbG9jYXRp
b24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBpbnQyIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBpbnQz
IGxvY2F0aW9uKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHNpbiAqLwotbmF0aXZlIGZsb2F0IHNp
bihmbG9hdCk7Ci1mbG9hdDIgc2luKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc2luKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHNpbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IHNpbihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbih4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBzaW4oeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gc2luKHhbM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MiBzaW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2lu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNp
bihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
c2luKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzaW4oZmxvYXQ0
eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gc2luKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzaW4oZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgc2luKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBz
aW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNp
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNpbihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IHNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
c2luKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzaW4oZmxvYXQy
eDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gc2luKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzaW4oZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luKHhb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDQgc2luKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNp
bih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2lu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW4o
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHNpbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW4oeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gc2luKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBzaW5jb3MgKi8KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVh
ZCBmbG9hdCogeSwgdGhyZWFkIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnog
PSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkIGZsb2F0MiogeSwgdGhy
ZWFkIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZCBm
bG9hdDMqIHksIHRocmVhZCBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZCBmbG9hdDQq
IHksIHRocmVhZCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHksIHRocmVhZCBmbG9hdDJ4Miog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZCBmbG9hdDN4MiogeSwg
dGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZCBmbG9hdDR4MiogeSwgdGhy
ZWFkIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIHRocmVhZCBmbG9hdDJ4MyogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHksIHRocmVhZCBmbG9hdDN4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWQgZmxvYXQ0eDMqIHksIHRocmVh
ZCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxvYXQyeDQqIHksIHRocmVhZCBmbG9h
dDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQg
eCwgdGhyZWFkIGZsb2F0M3g0KiB5LCB0aHJlYWQgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhy
ZWFkIGZsb2F0NHg0KiB5LCB0aHJlYWQgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dCB4LCB0aHJlYWQgZmxvYXQqIHksIGRldmljZSBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgp
OwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRocmVhZCBmbG9h
dDIqIHksIGRldmljZSBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4
LCB0aHJlYWQgZmxvYXQzKiB5LCBkZXZpY2UgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJl
YWQgZmxvYXQ0KiB5LCBkZXZpY2UgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5LCBkZXZpY2Ug
ZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWQgZmxv
YXQzeDIqIHksIGRldmljZSBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0
eDIqIHksIGRldmljZSBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5LCBkZXZpY2UgZmxvYXQyeDMq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkIGZsb2F0M3gzKiB5LCBkZXZpY2UgZmxvYXQzeDMqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkIGZsb2F0NHgz
KiB5LCBkZXZpY2UgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5LCBk
ZXZpY2UgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3g0IHgsIHRocmVhZCBmbG9hdDN4NCogeSwgZGV2aWNlIGZsb2F0M3g0KiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSwgZGV2aWNlIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQgeCwgdGhyZWFkIGZsb2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewot
ICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQy
IHgsIHRocmVhZCBmbG9hdDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MiogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQzIHgsIHRocmVhZCBmbG9hdDMqIHksIHRocmVhZGdyb3VwIGZsb2F0
MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhyZWFkIGZsb2F0NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDIg
eCwgdGhyZWFkIGZsb2F0MngyKiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZCBmbG9hdDN4MiogeSwgdGhyZWFkZ3JvdXAg
ZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0NHgyKiB5LCB0aHJlYWRncm91
cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQyeDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4Myogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4Myog
eSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5
LCB0aHJlYWRncm91cCBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5LCB0aHJlYWRncm91cCBmbG9h
dDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0
NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2aWNlIGZsb2F0KiB5LCB0aHJlYWQg
ZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5LCB0aHJlYWQgZmxvYXQyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgZGV2aWNlIGZsb2F0MyogeSwgdGhyZWFkIGZs
b2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZsb2F0NCogeSwgdGhyZWFkIGZsb2F0NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgs
IGRldmljZSBmbG9hdDJ4MiogeSwgdGhyZWFkIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQzeDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5LCB0aHJlYWQgZmxvYXQ0eDIqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIGRldmljZSBm
bG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIGRldmljZSBmbG9h
dDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgdGhyZWFkIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCBkZXZpY2UgZmxvYXQzeDQq
IHksIHRocmVhZCBmbG9hdDN4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBkZXZpY2UgZmxvYXQ0eDQqIHksIHRo
cmVhZCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIGRldmljZSBmbG9hdCog
eSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgZGV2aWNlIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0
MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzIHgsIGRldmljZSBmbG9hdDMqIHks
IGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHksIGRldmlj
ZSBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQyeDIqIHksIGRldmljZSBmbG9hdDJ4MiogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIGRldmljZSBmbG9hdDN4MiogeSwgZGV2aWNlIGZs
b2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0K
LXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSwgZGV2aWNlIGZsb2F0
NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4
LCBkZXZpY2UgZmxvYXQyeDMqIHksIGRldmljZSBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNp
blJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCBk
ZXZpY2UgZmxvYXQzeDMqIHksIGRldmljZSBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHksIGRldmljZSBmbG9hdDR4
MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDJ4NCB4LCBkZXZpY2UgZmxvYXQyeDQqIHksIGRldmljZSBmbG9hdDJ4NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgZGV2aWNl
IGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0
NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZp
Y2UgZmxvYXQqIHksIHRocmVhZGdyb3VwIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0g
ICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwgZGV2aWNlIGZsb2F0Miog
eSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMg
eCwgZGV2aWNlIGZsb2F0MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4
LCBkZXZpY2UgZmxvYXQ0KiB5LCB0aHJlYWRncm91cCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCBkZXZpY2UgZmxvYXQyeDIq
IHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQz
eDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MiogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIHRocmVhZGdyb3VwIGZsb2F0NHgyKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCBkZXZpY2UgZmxv
YXQyeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIGRldmljZSBm
bG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCB0aHJlYWRncm91cCBmbG9h
dDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDJ4NCB4LCBkZXZpY2UgZmxvYXQyeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0
Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4
LCBkZXZpY2UgZmxvYXQzeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgs
IGRldmljZSBmbG9hdDR4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogeSwgdGhyZWFkIGZsb2F0KiB6KSB7Ci0g
ICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIg
eCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5LCB0aHJlYWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5LCB0aHJlYWQgZmxvYXQz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQqIHksIHRocmVhZCBmbG9hdDQq
IHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4
LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeSwgdGhyZWFkIGZsb2F0MngyKiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHksIHRocmVhZCBm
bG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeSwgdGhyZWFk
IGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDJ4MyB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0MngzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDMqIHksIHRocmVhZCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWRncm91cCBmbG9hdDJ4
NCogeSwgdGhyZWFkIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeSwgdGhyZWFkIGZsb2F0
M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5LCB0aHJlYWQgZmxvYXQ0
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogeSwgZGV2
aWNlIGZsb2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB5LCBkZXZpY2UgZmxvYXQy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQz
KiB5LCBkZXZpY2UgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQq
IHksIGRldmljZSBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0
MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxv
YXQzeDIqIHksIGRldmljZSBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWRncm91cCBm
bG9hdDR4MiogeSwgZGV2aWNlIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWRncm91cCBmbG9hdDJ4MyogeSwgZGV2aWNl
IGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gzKiB5LCBkZXZp
Y2UgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwg
dGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHksIGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0
aHJlYWRncm91cCBmbG9hdDJ4NCogeSwgZGV2aWNlIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4
NCogeSwgZGV2aWNlIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZGdyb3VwIGZsb2F0NHg0
KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWRn
cm91cCBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsK
LSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBm
bG9hdDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQzIHgsIHRocmVhZGdyb3VwIGZsb2F0MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0NCB4LCB0aHJlYWRncm91cCBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgs
IHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4MiogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgsIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB5LCB0aHJl
YWRncm91cCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWRncm91cCBmbG9hdDR4Miog
eSwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCB0aHJlYWRncm91
cCBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeSwgdGhy
ZWFkZ3JvdXAgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0
eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHksIHRocmVhZGdyb3VwIGZsb2F0NHgzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0Mng0IHgsIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB5LCB0aHJlYWRncm91cCBmbG9hdDJ4NCog
eikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQzeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxv
YXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgs
IHRocmVhZGdyb3VwIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikgewotICAg
IGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLQot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgKi8KLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJl
RXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGludCwgZGV2aWNlIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRD
b21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkZ3JvdXAg
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91
cCBhdG9taWNfdWludCosIHVpbnQsIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBp
bnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdl
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19p
bnQqLCBpbnQsIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCB0aHJlYWRn
cm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJl
YWRncm91cCBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgc21vb3Roc3RlcCAqLwotZmxvYXQgc21vb3Roc3RlcChmbG9hdCBlZGdl
MCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgpIHsKLSAgICBmbG9hdCB0ID0gY2xhbXAoKHggLSBlZGdl
MCkgLyAoZWRnZTEgLSBlZGdlMCksIDAsIDEpOwotICAgIHJldHVybiB0ICogdCAqICgzIC0gMiAq
IHQpOwotfQotZmxvYXQyIHNtb290aHN0ZXAoZmxvYXQyIHgsIGZsb2F0MiB5LCBmbG9hdDIgeikg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc21vb3Roc3RlcCh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzbW9vdGhzdGVwKHhbMV0sIHlbMV0sIHpbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc21vb3Roc3RlcChmbG9hdDMgeCwgZmxv
YXQzIHksIGZsb2F0MyB6KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBz
bW9vdGhzdGVwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290aHN0ZXAo
eFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc21vb3Roc3RlcCh4WzJdLCB5WzJd
LCB6WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHNtb290aHN0ZXAoZmxvYXQ0
IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gc21vb3Roc3RlcCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzbW9v
dGhzdGVwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNtb290aHN0ZXAoeFsy
XSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gc21vb3Roc3RlcCh4WzNdLCB5WzNdLCB6
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgc21vb3Roc3RlcChmbG9hdDJ4
MiB4LCBmbG9hdDJ4MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNtb290aHN0ZXAoZmxvYXQzeDIg
eCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc21vb3Roc3RlcChmbG9hdDR4
MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IHNtb290aHN0ZXAoeFszXVswXSwgeVszXVswXSwgelszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwg
elsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc21vb3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFd
LCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc21vb3Roc3RlcChm
bG9hdDJ4MyB4LCBmbG9hdDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwg
elsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJd
LCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1b
Ml0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzbW9vdGhzdGVw
KGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwg
elsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsy
XVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5
WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0s
IHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsy
XSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNt
b290aHN0ZXAoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1b
MF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsx
XVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5
WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0s
IHlbM11bMF0sIHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsx
XSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFd
WzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhb
Ml1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAo
eFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3Rl
cCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhz
dGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290
aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc21v
b3Roc3RlcCh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDQgc21vb3Roc3RlcChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAo
eFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3Rl
cCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhz
dGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290
aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21v
b3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBz
bW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHNtb290aHN0ZXAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgc21vb3Roc3RlcChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9h
dDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290
aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21v
b3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBz
bW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IHNtb290aHN0ZXAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gc21vb3Roc3RlcCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBzbW9vdGhzdGVwKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzbW9vdGhzdGVwKGZsb2F0NHg0IHgsIGZs
b2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11bMV0sIHlbM11bMV0sIHpbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNtb290aHN0ZXAoeFswXVsyXSwgeVswXVsyXSwgelsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc21vb3Roc3RlcCh4WzFdWzJdLCB5WzFdWzJdLCB6
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzbW9vdGhzdGVwKHhbMl1bMl0sIHlbMl1bMl0s
IHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNtb290aHN0ZXAoeFszXVsyXSwgeVszXVsy
XSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBd
WzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlb
MV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNtb290aHN0ZXAoeFsyXVszXSwg
eVsyXVszXSwgelsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc21vb3Roc3RlcCh4WzNdWzNd
LCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgZXhwICovCi1uYXRpdmUgZmxvYXQgZXhwKGZsb2F0KTsKLWZsb2F0MiBleHAoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBleHAoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBleHAoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4
cCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBleHAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhw
KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZXhwKGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gZXhwKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGV4cCh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBleHAoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGV4cChmbG9h
dDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZXhwKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9h
dDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4
cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIGV4cChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGV4cCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGV4cChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBleHAoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhw
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGV4cCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZXhw
KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBleHAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBl
eHAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGV4cCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGV4
cCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBleHAoeFszXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IGV4cChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAoeFsxXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGV4cChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGV4cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cCh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZXhwKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBleHAoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBleHAoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGV4cCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBleHAoeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFsbCAq
LwotYm9vbCBhbGwoYm9vbCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1ib29sIGFsbChib29sMiB4
KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsw
XSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbGwoYm9vbDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbGwoYm9vbDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzJdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbCh1aW50IHgpIHsKLSAgICByZXR1cm4geCAh
PSAwOwotfQotYm9vbCBhbGwodWludDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbCh1aW50MyB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbCh1
aW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoaW50IHgpIHsKLSAg
ICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbGwoaW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQg
PSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KGludDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbGwoaW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxv
YXQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFsbChmbG9hdDIgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChmbG9hdDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRy
dWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChmbG9hdDJ4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbGwoZmxvYXQzeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsy
XVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQ0eDIgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
MF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzFdICE9
IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDJ4MyB4KSB7Ci0gICAg
Ym9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbChmbG9hdDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzJd
ICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDR4MyB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsz
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMl0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzJdICE9IDApOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0
cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVszXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYWxsKGZsb2F0M3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzNdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZs
b2F0NHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMl0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1b
M10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdWzNdICE9IDApOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sMngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KGJvb2wzeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDR4MiB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4
WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzBdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzFd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sMngzIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wzeDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDR4MyB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChi
b29sMng0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wzeDQg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsw
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsyXVsyXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoYm9vbDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzNdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJd
WzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzNdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzJdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzNdWzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZpcnN0Yml0bG93
ICovCi11aW50IGZpcnN0Yml0bG93KHVpbnQgeCkgewotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAw
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxKSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDMwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyKSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDI5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzKSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDI4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA0KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDI3OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA1KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDI2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA2KSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDI1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA3KSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDI0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDIzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDIy
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMCkpICE9IDApCi0gICAgICAgIHJldHVybiAyMTsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjA7Ci0g
ICAgaWYgKCh4ICYgdWludCgxIDw8IDEyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE5OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAxMykpICE9IDApCi0gICAgICAgIHJldHVybiAxODsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgMTQpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTc7Ci0gICAgaWYg
KCh4ICYgdWludCgxIDw8IDE1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE2OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAxNikpICE9IDApCi0gICAgICAgIHJldHVybiAxNTsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgMTcpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTQ7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDE4KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEzOwotICAgIGlmICgoeCAmIHVp
bnQoMSA8PCAxOSkpICE9IDApCi0gICAgICAgIHJldHVybiAxMjsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMjApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTE7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDIxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8
PCAyMikpICE9IDApCi0gICAgICAgIHJldHVybiA5OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAy
MykpICE9IDApCi0gICAgICAgIHJldHVybiA4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNCkp
ICE9IDApCi0gICAgICAgIHJldHVybiA3OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNSkpICE9
IDApCi0gICAgICAgIHJldHVybiA2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNikpICE9IDAp
Ci0gICAgICAgIHJldHVybiA1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNykpICE9IDApCi0g
ICAgICAgIHJldHVybiA0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOCkpICE9IDApCi0gICAg
ICAgIHJldHVybiAzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOSkpICE9IDApCi0gICAgICAg
IHJldHVybiAyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMCkpICE9IDApCi0gICAgICAgIHJl
dHVybiAxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMSkpICE9IDApCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiAzMjsKLX0KLXVpbnQgZmlyc3RiaXRsb3coaW50IHgpIHsKLSAgICBy
ZXR1cm4gZmlyc3RiaXRsb3codWludCh4KSk7Ci19Ci11aW50MiBmaXJzdGJpdGxvdyh1aW50MiB4
KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci11aW50MyBmaXJzdGJpdGxvdyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0
bG93KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0bG93KHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGxvdyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0bG93KHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0bG93KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50MiBmaXJzdGJpdGxvdyhpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3co
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGZpcnN0Yml0bG93KGludDMgeCkg
ewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJz
dGJpdGxvdyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3RiaXRsb3co
aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0bG93
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGZpcnN0Yml0bG93KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZpcnN0Yml0bG93KHhbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcjw9
ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJh
dG9yPD0odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGZsb2F0LCBmbG9hdCk7
Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8PSh1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9w
ZXJhdG9yPD0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjw9KHVpbnQ0LCB1
aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8PShpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29s
MyBvcGVyYXRvcjw9KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPD0oaW50NCwg
aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8PShmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUg
Ym9vbDMgb3BlcmF0b3I8PShmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8
PShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcjw9KGZsb2F0MngyLCBm
bG9hdDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcjw9KGZsb2F0M3gyLCBmbG9hdDN4Mik7
Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcjw9KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUg
Ym9vbDJ4MyBvcGVyYXRvcjw9KGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBv
cGVyYXRvcjw9KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcjw9
KGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcjw9KGZsb2F0Mng0
LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcjw9KGZsb2F0M3g0LCBmbG9hdDN4
NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcjw9KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBkZHhfZmluZSAqLwotZmxvYXQgZGR4X2ZpbmUoZmxvYXQgeCkgewot
ICAgIHJldHVybiBkZHgoeCk7Ci19Ci1mbG9hdDIgZGR4X2ZpbmUoZmxvYXQyIHgpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9maW5lKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeF9maW5lKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR4
X2ZpbmUoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRk
eF9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9maW5lKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGRkeF9maW5lKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4
X2ZpbmUoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRk
eF9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeF9maW5lKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGRkeF9maW5lKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeF9maW5lKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHhfZmluZShmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBkZHhfZmluZShmbG9hdDN4MiB4
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5l
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBkZHhfZmluZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRk
eF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeF9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeF9maW5lKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBk
ZHhfZmluZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5l
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHhfZmluZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGRkeF9maW5lKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBk
ZHhfZmluZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeF9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5l
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9m
aW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRk
eF9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeF9maW5lKHhbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHhfZmluZShmbG9hdDJ4NCB4KSB7Ci0g
ICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9maW5lKHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9maW5lKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHhfZmluZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQz
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGRkeF9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9m
aW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5lKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRk
eF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGRkeF9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9maW5lKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGRkeF9maW5lKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBk
ZHhfZmluZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGRkeF9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9maW5lKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9maW5lKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRkeF9maW5lKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9maW5l
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9maW5lKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeF9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9m
aW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9maW5lKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGRkeF9maW5lKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRk
eF9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeF9maW5lKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGRkeF9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGRkeF9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeF9maW5lKHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IGRkeF9maW5lKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvciBjYXN0ICovCi1uYXRpdmUgb3Bl
cmF0b3IgdWludChpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQoZmxvYXQpOwotbmF0aXZlIG9w
ZXJhdG9yIGludCh1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQoZmxvYXQpOwotbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0KHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0KGludCk7Ci1uYXRpdmUg
b3BlcmF0b3IgaW50KGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wodWludCk7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbChpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2woZmxvYXQpOwotbmF0aXZl
IG9wZXJhdG9yIGJvb2wyKGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzKGJvb2ws
IGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzKGJvb2wyLCBib29sKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sMyhib29sLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbDIsIGJvb2ws
IGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wyLCBib29sKTsKLW5hdGl2
ZSBvcGVyYXRvciBib29sNChib29sLCBib29sLCBib29sMik7Ci1uYXRpdmUgb3BlcmF0b3IgYm9v
bDQoYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sMywgYm9vbCk7Ci1u
YXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQy
KHVpbnQsIHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQzKHVpbnQsIHVpbnQsIHVpbnQpOwot
bmF0aXZlIG9wZXJhdG9yIHVpbnQzKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50
Myh1aW50LCB1aW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludCwgdWludCwgdWludCwg
dWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludDIsIHVpbnQsIHVpbnQpOwotbmF0aXZl
IG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQyLCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50
NCh1aW50LCB1aW50LCB1aW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludDIsIHVpbnQy
KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MywgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
dWludDQodWludCwgdWludDMpOwotbmF0aXZlIG9wZXJhdG9yIGludDIoaW50LCBpbnQpOwotbmF0
aXZlIG9wZXJhdG9yIGludDMoaW50LCBpbnQsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50Myhp
bnQyLCBpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludDMoaW50LCBpbnQyKTsKLW5hdGl2ZSBvcGVy
YXRvciBpbnQ0KGludCwgaW50LCBpbnQsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQy
LCBpbnQsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChpbnQsIGludDIsIGludCk7Ci1uYXRp
dmUgb3BlcmF0b3IgaW50NChpbnQsIGludCwgaW50Mik7Ci1uYXRpdmUgb3BlcmF0b3IgaW50NChp
bnQyLCBpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludDMsIGludCk7Ci1uYXRpdmUgb3Bl
cmF0b3IgaW50NChpbnQsIGludDMpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MihmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDMoZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQz
KGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MiwgZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0MiwgZmxvYXQpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQ0KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQzLCBm
bG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0MngyKGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4
MyhmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQ0LCBmbG9h
dDQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gyKGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOwot
bmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gzKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0M3g0KGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIG9wZXJh
dG9yIGZsb2F0NHgyKGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgb3Bl
cmF0b3IgZmxvYXQ0eDMoZmxvYXQzLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDR4NChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZl
IG9wZXJhdG9yIGZsb2F0MngyKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDJ4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3gyKGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9y
IGZsb2F0M3gzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0M3g0KGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgyKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQ0eDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxv
YXQ0eDQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDIoYm9vbDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVy
YXRvciBib29sMngzKGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4NChib29s
NCwgYm9vbDQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDIoYm9vbDIsIGJvb2wyLCBib29sMik7
Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4Myhib29sMywgYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBv
cGVyYXRvciBib29sM3g0KGJvb2w0LCBib29sNCwgYm9vbDQpOwotbmF0aXZlIG9wZXJhdG9yIGJv
b2w0eDIoYm9vbDIsIGJvb2wyLCBib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0
eDMoYm9vbDMsIGJvb2wzLCBib29sMywgYm9vbDMpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDQo
Ym9vbDQsIGJvb2w0LCBib29sNCwgYm9vbDQpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wyeDIoYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Myhib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMng0KGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJh
dG9yIGJvb2wzeDIoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbDN4Myhib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3g0KGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwot
bmF0aXZlIG9wZXJhdG9yIGJvb2w0eDIoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4Myhib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsK
LW5hdGl2ZSBvcGVyYXRvciBib29sNHg0KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbG9hZCAqLwotbmF0aXZlIGludCBsb2FkKGRl
dmljZSBhdG9taWNfaW50Kik7Ci1uYXRpdmUgdWludCBsb2FkKGRldmljZSBhdG9taWNfdWludCop
OwotbmF0aXZlIGludCBsb2FkKHRocmVhZGdyb3VwIGF0b21pY19pbnQqKTsKLW5hdGl2ZSB1aW50
IGxvYWQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGNv
dW50X2JpdHMgKi8KLQotLyogRnVuY3Rpb25zIG5hbWVkIHJzcXJ0ICovCi1mbG9hdCByc3FydChm
bG9hdCB4KSB7Ci0gICAgcmV0dXJuIDEgLyBzcXJ0KHgpOwotfQotZmxvYXQyIHJzcXJ0KGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByc3FydCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSByc3FydCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzIHJzcXJ0KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSByc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByc3FydCh4WzFdKTsKLSAgICByZXN1bHRb
Ml0gPSByc3FydCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJzcXJ0KGZs
b2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByc3FydCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSByc3FydCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByc3FydCh4
WzJdKTsKLSAgICByZXN1bHRbM10gPSByc3FydCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgcnNxcnQoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3Fy
dCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDIgcnNxcnQoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDIgcnNxcnQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSByc3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByc3FydCh4WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcnNxcnQoZmxvYXQyeDMgeCkgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcnNxcnQoZmxvYXQzeDMgeCkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
c3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByc3FydCh4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcnNxcnQoZmxvYXQ0eDMgeCkgewot
ICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBy
c3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByc3FydCh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSByc3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSByc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByc3FydCh4WzNdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcnNxcnQoZmxvYXQyeDQgeCkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSByc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSByc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSByc3FydCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcnNxcnQo
ZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBy
c3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3FydCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSByc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByc3FydCh4WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSByc3FydCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByc3Fy
dCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcnNxcnQoZmxvYXQ0
eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByc3FydCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByc3FydCh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSByc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSByc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByc3FydCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSByc3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByc3Fy
dCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByc3FydCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSByc3FydCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByc3FydCh4WzNd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSByc3FydCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByc3FydCh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSByc3FydCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc3FydCAqLwotZmxvYXQgc3FydChmbG9hdCB4KSB7Ci0g
ICAgcmV0dXJuIHBvdyh4LCAwLjUpOwotfQotZmxvYXQyIHNxcnQoZmxvYXQyIHgpIHsKLSAgICBm
bG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNxcnQoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gc3FydCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIHNxcnQoZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNxcnQoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gc3FydCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzcXJ0KHhbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc3FydChmbG9hdDQgeCkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBz
cXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNxcnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
c3FydCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgc3FydChmbG9hdDJ4
MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNxcnQoZmxvYXQzeDIgeCkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc3FydChmbG9hdDR4MiB4KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc3FydCh4
WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc3FydChmbG9hdDJ4MyB4
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhb
MV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzcXJ0KGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNxcnQoZmxvYXQ0eDMgeCkgewotICAgIGZs
b2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQo
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gc3FydCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDQgc3FydChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNx
cnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc3FydCh4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc3FydChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzcXJ0KHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3Fy
dCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IHNxcnQoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc3FydCh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBzcXJ0KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4NCBzcXJ0KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
c3FydCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHNxcnQoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc3FydCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNxcnQo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNxcnQoeFsyXVszXSk7
Ci0gICAgcmVzdWx0WzNdWzNdID0gc3FydCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYWNvcyAqLwotbmF0aXZlIGZsb2F0IGFjb3MoZmxvYXQp
OwotZmxvYXQyIGFjb3MoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGFjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWNvcyh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIGFjb3MoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGFjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWNvcyh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBhY29zKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgYWNvcyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGFjb3MoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYWNvcyh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDIgYWNvcyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIGFjb3MoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgYWNvcyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgYWNvcyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBhY29zKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
Y29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gYWNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGFjb3MoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGFjb3MoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBhY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gYWNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGFjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWNv
cyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgYWNvcyhmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29z
KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFjb3MoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
YWNvcyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWNvcyh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3Mo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBh
Y29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFjb3MoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gYWNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhY29zKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhY29zKGZsb2F0NHg0IHgpIHsK
LSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFj
b3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYWNvcyh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBhY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFjb3MoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gYWNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhY29zKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGFjb3MoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gYWNvcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGFjb3MoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYWNv
cyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
b3BlcmF0b3I+ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcj4oaW50LCBpbnQpOwotbmF0aXZlIGJv
b2wgb3BlcmF0b3I+KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGZsb2F0LCBm
bG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9v
bDMgb3BlcmF0b3I+KHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+KHVpbnQ0
LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+KGludDIsIGludDIpOwotbmF0aXZlIGJv
b2wzIG9wZXJhdG9yPihpbnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj4oaW50NCwg
aW50NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I+KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBi
b29sMyBvcGVyYXRvcj4oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPihm
bG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj4oZmxvYXQyeDIsIGZsb2F0
MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPihmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0
aXZlIGJvb2w0eDIgb3BlcmF0b3I+KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4
MyBvcGVyYXRvcj4oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9y
PihmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I+KGZsb2F0NHgz
LCBmbG9hdDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcj4oZmxvYXQyeDQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPihmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZl
IGJvb2w0eDQgb3BlcmF0b3I+KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBvcGVyYXRvciYgKi8KLWJvb2wgb3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKSB7Ci0gICAg
cmV0dXJuIGEgJiYgYjsKLX0KLW5hdGl2ZSBpbnQgb3BlcmF0b3ImKGludCwgaW50KTsKLW5hdGl2
ZSB1aW50IG9wZXJhdG9yJih1aW50LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHRhbmgg
Ki8KLW5hdGl2ZSBmbG9hdCB0YW5oKGZsb2F0KTsKLWZsb2F0MiB0YW5oKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW5oKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHRhbmgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyB0YW5oKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW5oKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IHRhbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuaCh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHRhbmgoZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gdGFuaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSB0YW5oKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IHRhbmgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHRhbmgoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5o
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiB0YW5oKGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRhbmgoZmxvYXQ0eDIgeCkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRh
bmgoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRhbmgoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFu
aCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgdGFuaChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5o
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyB0YW5oKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0
YW5oKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRhbmgoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IHRhbmgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRh
bmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSB0YW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbmgoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IHRhbmgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuaCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSB0YW5oKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHRhbmgoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gdGFuaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgdGFuaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IHRhbmgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuaCh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSB0YW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbmgoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0
YW5oKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gdGFuaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0YW5oKHhbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IHRhbmgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yKiAqLwotbmF0aXZlIGludCBvcGVy
YXRvciooaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3IqKHVpbnQsIHVpbnQpOwotbmF0
aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9y
Kih1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKih1aW50MiwgdWludCk7Ci1u
YXRpdmUgdWludDIgb3BlcmF0b3IqKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRv
cioodWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcioodWludDMsIHVpbnQpOwot
bmF0aXZlIHVpbnQzIG9wZXJhdG9yKih1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDQgb3BlcmF0
b3IqKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IqKHVpbnQ0LCB1aW50KTsK
LW5hdGl2ZSB1aW50NCBvcGVyYXRvcioodWludCwgdWludDQpOwotbmF0aXZlIGludDIgb3BlcmF0
b3IqKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3IqKGludDIsIGludCk7Ci1uYXRp
dmUgaW50MiBvcGVyYXRvciooaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKihpbnQz
LCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKihpbnQzLCBpbnQpOwotbmF0aXZlIGludDMg
b3BlcmF0b3IqKGludCwgaW50Myk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvciooaW50NCwgaW50NCk7
Ci1uYXRpdmUgaW50NCBvcGVyYXRvciooaW50NCwgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9y
KihpbnQsIGludDQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvciooZmxvYXQyLCBmbG9hdDIpOwot
bmF0aXZlIGZsb2F0MiBvcGVyYXRvciooZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyIG9w
ZXJhdG9yKihmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IqKGZsb2F0Mywg
ZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IqKGZsb2F0MywgZmxvYXQpOwotbmF0aXZl
IGZsb2F0MyBvcGVyYXRvciooZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9y
KihmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKihmbG9hdDQsIGZsb2F0
KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0
MngyIG9wZXJhdG9yKihmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJh
dG9yKihmbG9hdDJ4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKihmbG9hdCwg
ZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKihmbG9hdDN4MiwgZmxvYXQzeDIp
OwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKihmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZs
b2F0M3gyIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJh
dG9yKihmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKihmbG9h
dDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0eDIp
OwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKihmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZl
IGZsb2F0MngzIG9wZXJhdG9yKihmbG9hdDJ4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9w
ZXJhdG9yKihmbG9hdCwgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKihmbG9h
dDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKihmbG9hdDN4MywgZmxv
YXQpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzeDMpOwotbmF0aXZl
IGZsb2F0NHgzIG9wZXJhdG9yKihmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgz
IG9wZXJhdG9yKihmbG9hdDR4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKihm
bG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKihmbG9hdDJ4NCwgZmxv
YXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKihmbG9hdDJ4NCwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0Mng0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0
IG9wZXJhdG9yKihmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9y
KihmbG9hdDN4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKihmbG9hdCwgZmxv
YXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKihmbG9hdDR4NCwgZmxvYXQ0eDQpOwot
bmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKihmbG9hdDR4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
NHg0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgY29z
ICovCi1uYXRpdmUgZmxvYXQgY29zKGZsb2F0KTsKLWZsb2F0MiBjb3MoZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBjb3MoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjb3MoZmxvYXQz
IHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBjb3MoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zKHhbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgY29zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3MoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gY29zKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGNvcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBjb3MoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNvcyhmbG9hdDJ4MiB4KSB7Ci0g
ICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgY29zKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNv
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGNvcyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3MoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIGNvcyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBjb3MoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3Mo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgY29zKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBj
b3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zKHhbM11bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNv
cyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvcyh4WzJdWzJdKTsK
LSAgICByZXN1bHRbM11bMl0gPSBjb3MoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0Mng0IGNvcyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3MoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvcyh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3MoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IGNvcyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gY29zKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvcyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBjb3MoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gY29zKHhbMl1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBjb3MoZmxvYXQ0eDQgeCkgewot
ICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zKHhb
M11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGNvcyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3MoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGNvcyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBjb3MoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPT0gKi8KLW5h
dGl2ZSBib29sIG9wZXJhdG9yPT0oYm9vbCwgYm9vbCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj09
KGludCwgaW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCwgdWludCk7Ci1uYXRpdmUg
Ym9vbCBvcGVyYXRvcj09KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I9PShi
b29sMiwgYm9vbDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0oYm9vbDMsIGJvb2wzKTsKLW5h
dGl2ZSBib29sNCBvcGVyYXRvcj09KGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0
b3I9PSh1aW50MiwgdWludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPT0odWludDMsIHVpbnQz
KTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgYm9vbDIg
b3BlcmF0b3I9PShpbnQyLCBpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj09KGludDMsIGlu
dDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0oaW50NCwgaW50NCk7Ci1uYXRpdmUgYm9vbDIg
b3BlcmF0b3I9PShmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShmbG9h
dDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9PShmbG9hdDQsIGZsb2F0NCk7Ci1u
YXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj09KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgYm9v
bDN4MiBvcGVyYXRvcj09KGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVy
YXRvcj09KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj09KGZs
b2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgYm9vbDN4MyBvcGVyYXRvcj09KGZsb2F0M3gzLCBm
bG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcj09KGZsb2F0NHgzLCBmbG9hdDR4Myk7
Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcj09KGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUg
Ym9vbDN4NCBvcGVyYXRvcj09KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgYm9vbDR4NCBv
cGVyYXRvcj09KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcj09
KGJvb2wyeDIsIGJvb2wyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I9PShib29sM3gyLCBi
b29sM3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPT0oYm9vbDR4MiwgYm9vbDR4Mik7Ci1u
YXRpdmUgYm9vbDJ4MyBvcGVyYXRvcj09KGJvb2wyeDMsIGJvb2wyeDMpOwotbmF0aXZlIGJvb2wz
eDMgb3BlcmF0b3I9PShib29sM3gzLCBib29sM3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9y
PT0oYm9vbDR4MywgYm9vbDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcj09KGJvb2wyeDQs
IGJvb2wyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I9PShib29sM3g0LCBib29sM3g0KTsK
LW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPT0oYm9vbDR4NCwgYm9vbDR4NCk7Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBvcGVyYXRvcj4+ICovCi1uYXRpdmUgaW50IG9wZXJhdG9yPj4oaW50LCB1aW50
KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yPj4odWludCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCByZWZsZWN0ICovCi1mbG9hdCByZWZsZWN0KGZsb2F0IGksIGZsb2F0IG4pIHsKLSAgICBy
ZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwotfQotZmxvYXQyIHJlZmxlY3QoZmxvYXQyIGks
IGZsb2F0MiBuKSB7Ci0gICAgcmV0dXJuIGkgLSAyICogbiAqIGRvdChpLCBuKTsKLX0KLWZsb2F0
MyByZWZsZWN0KGZsb2F0MyBpLCBmbG9hdDMgbikgewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBk
b3QoaSwgbik7Ci19Ci1mbG9hdDQgcmVmbGVjdChmbG9hdDQgaSwgZmxvYXQ0IG4pIHsKLSAgICBy
ZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4pOwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBs
aXQgKi8KLWZsb2F0NCBsaXQoZmxvYXQgbl9kb3RfbCwgZmxvYXQgbl9kb3RfaCwgZmxvYXQgbSkg
ewotICAgIGZsb2F0IGFtYmllbnQgPSAxOwotICAgIGZsb2F0IGRpZmZ1c2UgPSBtYXgoMCwgbl9k
b3RfbCk7Ci0gICAgZmxvYXQgc3BlY3VsYXIgPSBuX2RvdF9sIDwgMCB8fCBuX2RvdF9oIDwgMCA/
IDAgOiBuX2RvdF9oICogbTsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gYW1i
aWVudDsKLSAgICByZXN1bHQueSA9IGRpZmZ1c2U7Ci0gICAgcmVzdWx0LnogPSBzcGVjdWxhcjsK
LSAgICByZXN1bHQudyA9IDE7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIGxvZzIgKi8KLWZsb2F0IGxvZzIoZmxvYXQgeCkgewotICAgIHJldHVybiBsb2coeCkg
LyBsb2coZmxvYXQoMikpOwotfQotZmxvYXQyIGxvZzIoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzIoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9n
Mih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZzIoZmxvYXQzIHgpIHsK
LSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxvZzIoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbG9nMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cyKHhbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbG9nMihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsb2cyKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzIoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbG9nMih4
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbG9nMihmbG9hdDJ4MiB4KSB7
Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
b2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxvZzIoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxv
ZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbG9nMihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9n
Mih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMih4WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbG9nMihmbG9hdDJ4MyB4KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cy
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsb2cyKGZsb2F0M3gzIHgpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
b2cyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGxvZzIoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBsb2cyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxv
ZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBsb2cyKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gbG9nMih4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgbG9nMihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzIoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMih4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDQgbG9nMihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cyKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGxvZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxvZzIo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMih4WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSBsb2cyKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBs
b2cyKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMih4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBsb2cyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxv
ZzIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBsb2cyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxvZzIoeFszXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbG9nMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBsb2cyKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxvZzIoeFsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gbG9nMih4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgbm9ybWFsaXplICovCi1mbG9hdCBub3JtYWxpemUoZmxvYXQgeCkg
ewotICAgIHJldHVybiB4IC8gbGVuZ3RoKHgpOwotfQotZmxvYXQyIG5vcm1hbGl6ZShmbG9hdDIg
eCkgewotICAgIHJldHVybiB4IC8gbGVuZ3RoKHgpOwotfQotZmxvYXQzIG5vcm1hbGl6ZShmbG9h
dDMgeCkgewotICAgIHJldHVybiB4IC8gbGVuZ3RoKHgpOwotfQotZmxvYXQ0IG5vcm1hbGl6ZShm
bG9hdDQgeCkgewotICAgIHJldHVybiB4IC8gbGVuZ3RoKHgpOwotfQotCi0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBsZGV4cCAqLwotZmxvYXQgbGRleHAoZmxvYXQgeCwgZmxvYXQgZSkgewotICAgIHJl
dHVybiB4ICogcG93KDIsIGUpOwotfQotZmxvYXQyIGxkZXhwKGZsb2F0MiB4LCBmbG9hdDIgeSkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gbGRleHAoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBsZGV4cChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxk
ZXhwKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxkZXhwKHhbMl0sIHlbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbGRleHAoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZGV4cCh4WzBdLCB5WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZGV4cCh4
WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBsZGV4cCh4WzNdLCB5WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbGRleHAoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgbGRleHAoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBs
ZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFd
LCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgbGRleHAoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBsZGV4cCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBsZGV4cCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgbGRleHAoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbGRleHAoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4
cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBsZGV4cCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgbGRleHAoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBs
ZGV4cCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZGV4cCh4WzNdWzBd
LCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZGV4
cCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBsZGV4cCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgbGRleHAoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBs
ZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBsZGV4cCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZGV4
cCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbGRl
eHAoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBsZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBs
ZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJd
LCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5WzJdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBsZGV4cCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBsZGV4cCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZGV4
cCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbGRl
eHAoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsZGV4cCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsZGV4cCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZGV4cCh4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZGV4cCh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZGV4cCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsZGV4cCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBs
ZGV4cCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZGV4cCh4WzNdWzFd
LCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZGV4cCh4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsZGV4cCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBsZGV4cCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsZGV4
cCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsZGV4cCh4WzBdWzNdLCB5
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZGV4cCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBsZGV4cCh4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11b
M10gPSBsZGV4cCh4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgYWJzICovCi11aW50IGFicyh1aW50IHgpIHsKLSAgICByZXR1cm4g
eDsKLX0KLWludCBhYnMoaW50IHgpIHsKLSAgICBpZiAoeCA8IDApCi0gICAgICAgIHJldHVybiAt
eDsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0IGFicyhmbG9hdCB4KSB7Ci0gICAgaWYgKHggPCAw
KQotICAgICAgICByZXR1cm4gLXg7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50MiBhYnModWludDIg
eCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBhYnMo
dWludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgYWJzKHVpbnQ0IHgpIHsKLSAgICB1aW50NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhYnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYWJzKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQyIGFicyhpbnQyIHgpIHsKLSAgICBpbnQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJz
KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIGFicyhpbnQzIHgpIHsKLSAgICBp
bnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
YWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotaW50NCBhYnMoaW50NCB4KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhYnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYWJzKHhbM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDIgYWJzKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYWJzKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0IGFicyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YWJzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFicyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
YnMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYWJzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBhYnMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGFicyhm
bG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFi
cyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJz
KHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBhYnMoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
YWJzKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhYnMoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgYWJzKGZsb2F0M3gzIHgpIHsK
LSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgzIGFicyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
YnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGFicyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFi
cyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhYnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBhYnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWJz
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhYnMoZmxvYXQyeDQg
eCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGFicyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gYWJzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFicyh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBhYnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
YWJzKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhYnMoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gYWJzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBhYnMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYWJzKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFicyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgYWJzKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWJzKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJzKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhYnMoeFsz
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWJzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IGFicyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhYnMoeFsyXVszXSk7Ci0gICAg
cmVzdWx0WzNdWzNdID0gYWJzKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIHJvdW5kICovCi1uYXRpdmUgZmxvYXQgcm91bmQoZmxvYXQpOwot
ZmxvYXQyIHJvdW5kKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSByb3VuZCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByb3VuZCh4WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIHJvdW5kKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSByb3VuZCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByb3VuZCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSByb3VuZCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IHJvdW5kKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSByb3VuZCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByb3VuZCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSByb3VuZCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSByb3VuZCh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcm91bmQoZmxvYXQyeDIgeCkgewotICAgIGZs
b2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDIgcm91bmQoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBy
b3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcm91bmQoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0
NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByb3VuZCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBy
b3VuZCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcm91bmQoZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3Vu
ZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcm91
bmQoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3Vu
ZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSByb3VuZCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgcm91
bmQoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByb3Vu
ZCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByb3VuZCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSByb3VuZCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBy
b3VuZCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcm91bmQoZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByb3Vu
ZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSByb3VuZCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByb3VuZCh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSByb3VuZCh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzeDQgcm91bmQoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3Vu
ZCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByb3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSByb3VuZCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBy
b3VuZCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByb3VuZCh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSByb3VuZCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDQgcm91bmQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSByb3VuZCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByb3VuZCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByb3VuZCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSByb3VuZCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByb3VuZCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSByb3VuZCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBy
b3VuZCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByb3VuZCh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSByb3VuZCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByb3VuZCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByb3VuZCh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSByb3VuZCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByb3VuZCh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSByb3VuZCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSByb3VuZCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSByb3VuZCh4WzNdWzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbXVsICovCi11aW50IG11
bCh1aW50IHgsIHVpbnQgeSkgewotICAgIHJldHVybiB4ICogeTsKLX0KLWludCBtdWwoaW50IHgs
IGludCB5KSB7Ci0gICAgcmV0dXJuIHggKiB5OwotfQotZmxvYXQgbXVsKGZsb2F0IHgsIGZsb2F0
IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci11aW50MiBtdWwodWludCB4LCB1aW50MiB5KSB7
Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3Vs
dFsxXSA9IHggKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MiBtdWwodWludDIg
eCwgdWludCB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5
OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50
MyBtdWwodWludCB4LCB1aW50MyB5KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9
IHggKiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBtdWwodWludDMgeCwgdWlu
dCB5KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAg
IHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci11aW50NCBtdWwodWludCB4LCB1aW50NCB5KSB7Ci0gICAgdWludDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5
WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBtdWwodWludDQgeCwgdWludCB5KSB7Ci0g
ICAgdWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsx
XSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJlc3VsdFszXSA9
IHhbM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQyIG11bChpbnQgeCwgaW50MiB5
KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVz
dWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgbXVsKGludDIg
eCwgaW50IHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsK
LSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBt
dWwoaW50IHgsIGludDMgeSkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHgg
KiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IHggKiB5
WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQzIG11bChpbnQzIHgsIGludCB5KSB7Ci0g
ICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFd
ID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWludDQgbXVsKGludCB4LCBpbnQ0IHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1
bHRbMl0gPSB4ICogeVsyXTsKLSAgICByZXN1bHRbM10gPSB4ICogeVszXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotaW50NCBtdWwoaW50NCB4LCBpbnQgeSkgewotICAgIGludDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAg
IHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAgIHJlc3VsdFszXSA9IHhbM10gKiB5OwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0IHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxv
YXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAgICByZXN1bHRbMV0gPSB4
ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDIgeCwgZmxv
YXQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBt
dWwoZmxvYXQgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9
IHggKiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MyB4LCBm
bG9hdCB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsK
LSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdCB4LCBmbG9hdDQgeSkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFd
ID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0g
eCAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQ0IHgsIGZs
b2F0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHhbMF0gKiB5Owot
ICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhbMl0gKiB5OwotICAg
IHJlc3VsdFszXSA9IHhbM10gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBt
dWwoZmxvYXQgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICog
eVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbXVsKGZsb2F0MngyIHgs
IGZsb2F0IHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFsw
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdCB4LCBmbG9hdDN4MiB5KSB7Ci0g
ICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJd
WzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9
IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQgeSkgewotICAgIGZs
b2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1
bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsK
LSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFd
WzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4WzJdWzFdICogeTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0IHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzNdWzBdID0geCAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0g
eCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0geCAqIHlbM11bMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11bChmbG9hdDR4MiB4LCBmbG9hdCB5KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3Vs
dFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5Owot
ICAgIHJlc3VsdFszXVswXSA9IHhbM11bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1b
MV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsx
XSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFszXVsxXSA9IHhbM11bMV0gKiB5OwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQgeCwgZmxvYXQyeDMgeSkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0
WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFswXVsy
XSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIG11bChmbG9hdCB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVsw
XSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJdWzBdOwotICAgIHJl
c3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IHgg
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwo
ZmxvYXQzeDMgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAg
ICByZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFd
ICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0g
PSB4WzJdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1
bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0IHgsIGZsb2F0NHgzIHkp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzNdWzBdID0geCAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzBd
WzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0geCAqIHlbM11b
MV07Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0g
eCAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzNdWzJdID0geCAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11
bChmbG9hdDR4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5Owot
ICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFszXVswXSA9IHhbM11b
MF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsx
XSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJl
c3VsdFszXVsxXSA9IHhbM11bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5
OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhb
Ml1bMl0gKiB5OwotICAgIHJlc3VsdFszXVsyXSA9IHhbM11bMl0gKiB5OwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0
Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICByZXN1bHRb
MV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bM10g
PSB4ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSB4ICogeVsxXVszXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0IHkpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVz
dWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7
Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0geFsw
XVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVszXSAqIHk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdCB4LCBmbG9hdDN4NCB5KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAg
IHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFsyXVswXSA9IHggKiB5WzJd
WzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9
IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHggKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHggKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IHggKiB5
WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsz
XSA9IHggKiB5WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxv
YXQzeDQgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSB4WzJdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICog
eTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMl1bMV0gPSB4
WzJdWzFdICogeTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRb
MV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICByZXN1bHRbMl1bMl0gPSB4WzJdWzJdICogeTsKLSAg
ICByZXN1bHRbMF1bM10gPSB4WzBdWzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNd
ICogeTsKLSAgICByZXN1bHRbMl1bM10gPSB4WzJdWzNdICogeTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzNdWzBdID0geCAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0geCAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBd
WzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzJdID0geCAqIHlbM11b
Ml07Ci0gICAgcmVzdWx0WzBdWzNdID0geCAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0g
eCAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzNdID0geCAqIHlbMl1bM107Ci0gICAgcmVzdWx0
WzNdWzNdID0geCAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11
bChmbG9hdDR4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5Owot
ICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFszXVswXSA9IHhbM11b
MF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsx
XSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJl
c3VsdFszXVsxXSA9IHhbM11bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5
OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhb
Ml1bMl0gKiB5OwotICAgIHJlc3VsdFszXVsyXSA9IHhbM11bMl0gKiB5OwotICAgIHJlc3VsdFsw
XVszXSA9IHhbMF1bM10gKiB5OwotICAgIHJlc3VsdFsxXVszXSA9IHhbMV1bM10gKiB5OwotICAg
IHJlc3VsdFsyXVszXSA9IHhbMl1bM10gKiB5OwotICAgIHJlc3VsdFszXVszXSA9IHhbM11bM10g
KiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IG11bCh1aW50MiB4LCB1aW50MiB5KSB7
Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLXVpbnQgbXVsKHVpbnQzIHgsIHVpbnQzIHkpIHsK
LSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotdWludCBtdWwodWludDQgeCwgdWludDQgeSkgewot
ICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1pbnQgbXVsKGludDIgeCwgaW50MiB5KSB7Ci0gICAg
cmV0dXJuIGRvdCh4LCB5KTsKLX0KLWludCBtdWwoaW50MyB4LCBpbnQzIHkpIHsKLSAgICByZXR1
cm4gZG90KHgsIHkpOwotfQotaW50IG11bChpbnQ0IHgsIGludDQgeSkgewotICAgIHJldHVybiBk
b3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgcmV0dXJu
IGRvdCh4LCB5KTsKLX0KLWZsb2F0IG11bChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICByZXR1
cm4gZG90KHgsIHkpOwotfQotZmxvYXQgbXVsKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIHJl
dHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0MiB4LCBmbG9hdDJ4MiB5KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4
WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVs
KGZsb2F0MngyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0g
Kz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0g
eFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9
IHhbMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9hdDN4MiB4LCBmbG9hdDMgeSkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFsw
XVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3Vs
dFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsx
XSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgbXVsKGZsb2F0MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1
bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAg
IHJlc3VsdFszXSArPSB4WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAqIHlb
M11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQ0eDIgeCwgZmxv
YXQ0IHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsx
XTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBdICs9IHhb
M11bMF0gKiB5WzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1b
MV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRb
MV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5WzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0MyB4LCBmbG9hdDJ4MyB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSAr
PSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsx
XTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwot
ICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAg
IHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAq
IHlbMV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlb
MF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgbXVsKGZsb2F0MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0g
KiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0g
eFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IG11bChmbG9hdDN4MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsK
LSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl1bMV0g
KiB5WzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5
WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0g
eFsyXVsyXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQz
IHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFszXSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBd
OwotICAgIHJlc3VsdFszXSArPSB4WzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM10gKz0geFsy
XSAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQ0eDMg
eCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBd
ICogeVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbM11bMF0gKiB5WzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9
IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5
WzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBd
OwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsy
XVsyXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM11bMl0gKiB5WzNdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxv
YXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5WzFd
WzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IG11bChmbG9hdDJ4NCB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07
Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFd
ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdWzJdICog
eVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdID0g
MDsKLSAgICByZXN1bHRbM10gKz0geFswXVszXSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9IHhb
MV1bM10gKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbXVsKGZsb2F0NCB4
LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwot
ICAgIHJlc3VsdFswXSArPSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsw
XSArPSB4WzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSAr
PSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdICs9IHhbMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsx
XVszXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhb
Ml0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXSArPSB4WzNdICogeVsyXVszXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDN4NCB4LCBmbG9hdDMgeSkgewotICAgIGZs
b2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVsw
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsw
XSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSAr
PSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlbMV07Ci0gICAg
cmVzdWx0WzFdICs9IHhbMl1bMV0gKiB5WzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVz
dWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsx
XTsKLSAgICByZXN1bHRbMl0gKz0geFsyXVsyXSAqIHlbMl07Ci0gICAgcmVzdWx0WzNdID0gMDsK
LSAgICByZXN1bHRbM10gKz0geFswXVszXSAqIHlbMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV1b
M10gKiB5WzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJdWzNdICogeVsyXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9hdDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSAr
PSB4WzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF0gKz0geFszXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV0gKz0geFszXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdID0gMDsK
LSAgICByZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml0gKz0geFszXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10g
Kz0geFswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXSArPSB4WzJdICogeVszXVsyXTsKLSAgICByZXN1bHRbM10gKz0geFszXSAqIHlb
M11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQ0eDQgeCwgZmxv
YXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsx
XTsKLSAgICByZXN1bHRbMF0gKz0geFsyXVswXSAqIHlbMl07Ci0gICAgcmVzdWx0WzBdICs9IHhb
M11bMF0gKiB5WzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1b
MV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRb
MV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM11bMV0gKiB5WzNdOwot
ICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF1bMl0gKiB5WzBdOwotICAg
IHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICByZXN1bHRbMl0gKz0geFsyXVsyXSAq
IHlbMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM11bMl0gKiB5WzNdOwotICAgIHJlc3VsdFszXSA9
IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF1bM10gKiB5WzBdOwotICAgIHJlc3VsdFszXSArPSB4
WzFdWzNdICogeVsxXTsKLSAgICByZXN1bHRbM10gKz0geFsyXVszXSAqIHlbMl07Ci0gICAgcmVz
dWx0WzNdICs9IHhbM11bM10gKiB5WzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFd
WzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSAr
PSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAq
IHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDJ4MiB4
LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsx
XVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFd
ID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsw
XSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3Vs
dFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVsw
XSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0g
MDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNd
WzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFd
WzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJl
c3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsx
XVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQzeDMg
eSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAg
ICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9
IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwot
ICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0g
Kz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNd
WzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwoZmxvYXQ0eDIgeCwgZmxv
YXQyeDQgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBd
WzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRb
MV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
Ml1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsK
LSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFd
ICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
bXVsKGZsb2F0NHgyIHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlb
MF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVsw
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1b
MF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5
WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsy
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFd
WzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJd
WzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0g
ICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAq
IHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIG11bChmbG9hdDR4MiB4
LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJl
c3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFd
WzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
M11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBd
ICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVsz
XVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0
WzNdWzBdICs9IHhbM11bMF0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsx
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5
WzJdWzNdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1b
MV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAg
ICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzFdICs9
IHhbM11bMV0gKiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwo
ZmxvYXQyeDMgeCwgZmxvYXQyeDIgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFd
WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsw
XVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gPSAw
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IG11bChmbG9hdDJ4MyB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1b
MF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAg
ICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9
IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNd
WzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICog
eVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBd
WzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsy
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwot
ICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0g
Kz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
MF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAg
cmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyBtdWwoZmxvYXQzeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsx
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0g
MDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICog
eVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0M3gzIHgs
IGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBd
WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAq
IHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsw
XVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0g
PSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0g
KiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhb
MF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzJd
ID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4
WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07
Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsy
XSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsy
XSAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdDN4
MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVsw
XSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1b
MF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1b
MF0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9
IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsx
XTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBd
WzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJd
WzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsy
XVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0g
Kz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRb
MF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhb
Ml1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJd
ICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0
WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4
WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsy
XSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlb
M11bMV07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQyeDQgeSkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAg
IHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICog
eVsxXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBd
WzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsx
XVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAq
IHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsz
XVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhb
MV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzFd
ID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsx
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJd
WzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJd
WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG11bChmbG9hdDR4MyB4LCBmbG9hdDR4NCB5
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFd
WzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJl
c3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJd
WzNdOwotICAgIHJlc3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0g
KiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICBy
ZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhb
M11bMF0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsx
XSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAg
IHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBd
OwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11b
MV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbM11bMV0gKiB5
WzNdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1b
Ml0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSAr
PSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1b
Ml07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbM11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFsz
XVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJl
c3VsdFszXVsyXSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsy
XVsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbM11bMl0gKiB5WzNdWzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQyeDIg
eSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsx
XVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJd
ID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4
WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVsz
XSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVsz
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQzeDIgeSkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3Vs
dFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVsw
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0g
eFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0g
MDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFd
WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwot
ICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bM10g
PSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRb
MF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICBy
ZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhb
MV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNd
ICs9IHhbMF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsy
XVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0Mng0IHgsIGZs
b2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4
WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlb
M11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAw
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1b
MV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9
IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsx
XTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsy
XVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJl
c3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsx
XVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10g
Kz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsK
LSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzNd
ID0gMDsKLSAgICByZXN1bHRbM11bM10gKz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0
WzNdWzNdICs9IHhbMV1bM10gKiB5WzNdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVsw
XVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0
WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07
Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJd
OwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSAr
PSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1b
Ml07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdDN4NCB4LCBmbG9h
dDN4MyB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1b
Ml07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFd
ICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAg
cmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsy
XSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlb
MF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsy
XSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSAw
OwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
Ml0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMl1bMl0gKiB5
WzJdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1b
M10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzNdID0g
MDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJdWzNdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzBd
WzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsxXVszXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQzeDQgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBd
WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsw
XVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMF0g
PSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRb
M11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1bMF0g
KiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3Vs
dFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsx
XSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1b
Ml0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNd
WzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVz
dWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJd
WzJdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsx
XVszXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJl
c3VsdFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsy
XVszXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10g
Kz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
M11bM10gPSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVswXTsKLSAgICBy
ZXN1bHRbM11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhb
Ml1bM10gKiB5WzNdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxv
YXQ0eDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
Ml1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzNdWzBdICogeVswXVszXTsK
LSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBd
ICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzNdWzFdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsx
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAw
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5
WzBdWzJdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVsz
XTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNd
WzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSAr
PSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzNdWzNdICogeVsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1b
MF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAq
IHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsw
XVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0g
Kz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVsw
XVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0
WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107
Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlb
Ml1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsx
XSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1b
Ml0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0g
MDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICog
eVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVz
dWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSAr
PSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVszXSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsz
XVszXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10g
Kz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml1bM10gKz0geFszXVszXSAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IG11bChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0g
KiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAg
cmVzdWx0WzJdWzBdICs9IHhbM11bMF0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsw
XSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsyXVswXSAqIHlb
M11bMl07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbM11bMF0gKiB5WzNdWzNdOwotICAgIHJlc3Vs
dFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0g
eFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNd
OwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11b
MV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9
IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsx
XTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbM11bMV0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzFd
WzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsyXVsxXSAqIHlbM11bMl07Ci0g
ICAgcmVzdWx0WzNdWzFdICs9IHhbM11bMV0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJl
c3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0g
Kz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFd
WzNdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMl0gKz0geFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
M11bMl0gKiB5WzJdWzNdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzJd
ICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzFdWzJdICogeVsz
XVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0
WzNdWzJdICs9IHhbM11bMl0gKiB5WzNdWzNdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4
WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbM11bM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsz
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVszXSArPSB4WzFdWzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVsz
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
M10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbM11bM10gKiB5
WzJdWzNdOwotICAgIHJlc3VsdFszXVszXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1b
M10gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAg
ICByZXN1bHRbM11bM10gKz0geFsyXVszXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzNdWzNdICs9
IHhbM11bM10gKiB5WzNdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCByYWRpYW5zICovCi1mbG9hdCByYWRpYW5zKGZsb2F0IHgpIHsKLSAgICByZXR1cm4g
eCAqIDMuMTQxNTkgLyAxODA7Ci19Ci1mbG9hdDIgcmFkaWFucyhmbG9hdDIgeCkgewotICAgIGZs
b2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFucyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSByYWRpYW5zKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcmFkaWFu
cyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmFkaWFu
cyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSByYWRpYW5zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IHJhZGlhbnMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByYWRpYW5zKGZs
b2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5zKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmFk
aWFucyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSByYWRpYW5zKHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByYWRpYW5zKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDIgcmFkaWFucyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByYWRpYW5zKGZsb2F0NHgy
IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmFkaWFucyh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSByYWRpYW5zKHhbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByYWRpYW5zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMo
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHJhZGlhbnMoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5z
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5z
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgcmFkaWFucyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFu
cyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IHJhZGlhbnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFu
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmFkaWFu
cyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFu
cyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByYWRpYW5zKHhbM11bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByYWRpYW5zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9h
dDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlh
bnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlh
bnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSByYWRpYW5zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCByYWRpYW5zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByYWRp
YW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRp
YW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcmFkaWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRp
YW5zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gcmFkaWFucyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByYWRp
YW5zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJhZGlhbnMoeFsyXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJhZGlhbnMoZmxvYXQ0eDQgeCkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFk
aWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByYWRpYW5zKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFk
aWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmFk
aWFucyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByYWRpYW5zKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHJhZGlhbnMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmFk
aWFucyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHJhZGlhbnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmFk
aWFucyh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSByYWRpYW5zKHhbM11bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjZWlsICovCi1uYXRpdmUg
ZmxvYXQgY2VpbChmbG9hdCk7Ci1mbG9hdDIgY2VpbChmbG9hdDIgeCkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY2VpbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBjZWls
KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgY2VpbChmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY2VpbCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBjZWlsKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNlaWwoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBjZWlsKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNlaWwoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gY2VpbCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBjZWlsKHhb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBjZWlsKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNl
aWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgY2VpbChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2Vp
bCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBjZWlsKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWls
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjZWlsKHhbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBjZWlsKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGNlaWwoZmxvYXQzeDMgeCkgewotICAg
IGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNl
aWwoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgY2VpbChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGNlaWwoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2Vp
bCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBjZWlsKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBjZWlsKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
Y2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY2VpbCh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjZWlsKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4NCBjZWlsKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBj
ZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gY2VpbCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY2VpbCh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjZWlsKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGNlaWwoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNl
aWwoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjZWlsKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGNlaWwoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY2Vp
bCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjZWlsKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGNlaWwoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY2VpbCh4WzNdWzJd
KTsKLSAgICByZXN1bHRbMF1bM10gPSBjZWlsKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGNlaWwoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gY2VpbCh4WzJdWzNdKTsKLSAgICBy
ZXN1bHRbM11bM10gPSBjZWlsKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBhc2luICovCi1uYXRpdmUgZmxvYXQgYXNpbihmbG9hdCk7Ci1mbG9h
dDIgYXNpbihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
YXNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2luKHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgYXNpbihmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gYXNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2luKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzaW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBh
c2luKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2lu
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNp
bih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2luKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiBhc2luKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2lu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
YXNpbihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4o
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBh
c2luKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXNpbih4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MyBhc2luKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIGFzaW4oZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2lu
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gYXNpbih4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
YXNpbihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4o
eFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gYXNpbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBh
c2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gYXNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhc2luKHhbM11b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBhc2luKGZsb2F0Mng0IHgpIHsK
LSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFz
aW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBhc2luKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBhc2luKGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXNp
bih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBhc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFzaW4oeFsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGFzaW4oZmxvYXQ0eDQgeCkgewotICAgIGZs
b2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFzaW4o
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBhc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFzaW4oeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gYXNpbih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBh
c2luKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gYXNpbih4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhc2luKHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhc3VpbnQg
Ki8KLXVpbnQgYXN1aW50KGludCB4KSB7Ci0gICAgcmV0dXJuIHVpbnQoeCk7Ci19Ci11aW50MiBh
c3VpbnQoaW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzdWlu
dCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIGFzdWludChpbnQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0
IGFzdWludChpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1
aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhc3VpbnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXN1aW50KHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci11aW50IGFzdWludCh1aW50IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLXVp
bnQyIGFzdWludCh1aW50MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50MyBhc3VpbnQodWlu
dDMgeCkgewotICAgIHJldHVybiB4OwotfQotdWludDQgYXN1aW50KHVpbnQ0IHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLW5hdGl2ZSB1aW50IGFzdWludChmbG9hdCk7Ci11aW50MiBhc3VpbnQoZmxv
YXQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
dWludDMgYXN1aW50KGZsb2F0MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGFzdWludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc3VpbnQoeFsxXSk7Ci0gICAgcmVz
dWx0WzJdID0gYXN1aW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhc3Vp
bnQoZmxvYXQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXN1aW50
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBh
c3VpbnQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gYXN1aW50KHhbM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBwb3cgKi8KLW5hdGl2ZSBmbG9hdCBwb3co
ZmxvYXQsIGZsb2F0KTsKLWZsb2F0MiBwb3coZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxv
YXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gcG93KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcG93
KGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gcG93KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IHBvdyh4WzFdLCB5WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBwb3coeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCBwb3coZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0sIHlb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHBvdyh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBw
b3coeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHBvdyhmbG9h
dDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDIgcG93KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBm
bG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhb
MF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIHBvdyhmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gcG93KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4
WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3co
eFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHBvdyhm
bG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3co
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93
KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBwb3co
ZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93
KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBv
dyh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgcG93KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBw
b3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcG93KHhbM11bMF0sIHlb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHBvdyh4WzNdWzFdLCB5
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHBvdyh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBwb3coeFszXVsyXSwg
eVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHBvdyhmbG9hdDJ4NCB4
LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwg
eVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBwb3coeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcG93KHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAg
ICByZXN1bHRbMV1bM10gPSBwb3coeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3g0IHBvdyhmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQz
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gcG93KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFd
LCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBwb3coeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcG93KHhbMl1b
M10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBwb3coZmxvYXQ0
eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBwb3coeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBwb3coeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsx
XVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IHBvdyh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBwb3coeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcG93KHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHBvdyh4WzJdWzNdLCB5WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBwb3coeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHRhbiAqLwotbmF0aXZlIGZsb2F0IHRh
bihmbG9hdCk7Ci1mbG9hdDIgdGFuKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSB0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgdGFuKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSB0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IHRhbihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRhbih4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSB0YW4oeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gdGFuKHhbM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MiB0YW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFu
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRh
bihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
dGFuKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0YW4oZmxvYXQ0
eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFd
ID0gdGFuKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0YW4oZmxv
YXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgdGFuKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0
YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRh
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRhbihmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IHRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW4oeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
dGFuKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCB0YW4oZmxvYXQy
eDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gdGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRhbih4WzFd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gdGFuKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0YW4oZmxv
YXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4o
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSB0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuKHhb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDQgdGFuKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRh
bih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFuKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSB0YW4o
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHRhbih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0YW4oeFsyXVszXSk7Ci0g
ICAgcmVzdWx0WzNdWzNdID0gdGFuKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBmbWEgKi8KLWZsb2F0IGZtYShmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6KSB7Ci0gICAgcmV0dXJuIHggKiB5ICsgejsKLX0KLWZsb2F0MiBmbWEoZmxvYXQyIHgs
IGZsb2F0MiB5LCBmbG9hdDIgeikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZm1hKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZtYSh4WzFdLCB5WzFd
LCB6WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGZtYShmbG9hdDMgeCwgZmxv
YXQzIHksIGZsb2F0MyB6KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBm
bWEoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1hKHhbMV0sIHlbMV0sIHpb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGZtYSh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGZtYShmbG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbWEoeFswXSwgeVswXSwgelswXSk7
Ci0gICAgcmVzdWx0WzFdID0gZm1hKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGZtYSh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBmbWEoeFszXSwgeVszXSwg
elszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZtYShmbG9hdDJ4MiB4LCBm
bG9hdDJ4MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Zm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4
WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDIgZm1hKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIGZtYShmbG9hdDR4MiB4LCBmbG9hdDR4MiB5LCBmbG9hdDR4MiB6KSB7Ci0g
ICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBd
WzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBmbWEoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngzIGZtYShmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBd
WzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwg
elsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbWEoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQz
eDMgeikgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFsw
XVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0s
IHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJd
WzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwg
elswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGZtYSh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgZm1hKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHop
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0s
IHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFd
WzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwg
elsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0sIHpbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtYSh4
WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbWEoeFszXVsy
XSwgeVszXVsyXSwgelszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZt
YShmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBmbWEoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zm1hKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtYSh4
WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbWEoeFsxXVsz
XSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZt
YShmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
Zm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsy
XSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlb
Ml1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZtYSh4WzBdWzNdLCB5WzBdWzNd
LCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbWEoeFsxXVszXSwgeVsxXVszXSwgelsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1hKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmbWEoZmxvYXQ0eDQgeCwgZmxvYXQ0
eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBmbWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Zm1hKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4
WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVsw
XSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlb
MF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFd
LCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGZtYSh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBmbWEoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZm1h
KHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZtYSh4WzJd
WzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmbWEoeFszXVszXSwg
eVszXVszXSwgelszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIGRldGVybWluYW50ICovCi1mbG9hdCBkZXRlcm1pbmFudChmbG9hdCB4KSB7Ci0gICAg
cmV0dXJuIHg7Ci19Ci1mbG9hdCBkZXRlcm1pbmFudChmbG9hdDJ4MiB4KSB7Ci0gICAgcmV0dXJu
IHhbMF1bMF0gKiB4WzFdWzFdIC0geFsxXVswXSAqIHhbMF1bMV07Ci19Ci1mbG9hdCBkZXRlcm1p
bmFudChmbG9hdDN4MyB4KSB7Ci0gICAgcmV0dXJuIHhbMF1bMF0gKiB4WzFdWzFdICogeFsyXVsy
XSArCi0gICAgICAgICAgIHhbMV1bMF0gKiB4WzJdWzFdICogeFswXVsyXSArCi0gICAgICAgICAg
IHhbMl1bMF0gKiB4WzBdWzFdICogeFsxXVsyXSAtCi0gICAgICAgICAgIHhbMF1bMl0gKiB4WzFd
WzFdICogeFsyXVswXSAtCi0gICAgICAgICAgIHhbMV1bMl0gKiB4WzJdWzFdICogeFswXVswXSAt
Ci0gICAgICAgICAgIHhbMl1bMl0gKiB4WzBdWzFdICogeFsxXVswXTsKLX0KLWZsb2F0IGRldGVy
bWluYW50KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdCByZXN1bHQ7Ci0gICAgZmxvYXQzeDMgbWlu
b3I7Ci0gICAgbWlub3JbMF1bMF0gPSB4WzFdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsyXVsx
XTsKLSAgICBtaW5vclsyXVswXSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzFdWzJd
OwotICAgIG1pbm9yWzFdWzFdID0geFsyXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07
Ci0gICAgbWlub3JbMF1bMl0gPSB4WzFdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsyXVszXTsK
LSAgICBtaW5vclsyXVsyXSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgeFswXVsw
XSAqIGRldGVybWluYW50KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAg
bWlub3JbMV1bMF0gPSB4WzJdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBt
aW5vclswXVsxXSA9IHhbMF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzJdWzJdOwotICAgIG1p
bm9yWzJdWzFdID0geFszXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlu
b3JbMV1bMl0gPSB4WzJdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgLSB4WzFdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBd
WzBdID0geFswXVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMl1b
MF0gPSB4WzNdWzFdOwotICAgIG1pbm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsx
XSA9IHhbMV1bMl07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJd
ID0geFswXVszXTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMl1bMl0g
PSB4WzNdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIHhbMl1bMF0gKiBkZXRlcm1pbmFudCht
aW5vcik7Ci0gICAgbWlub3JbMF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsx
XVsxXTsKLSAgICBtaW5vclsyXVswXSA9IHhbMl1bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBd
WzJdOwotICAgIG1pbm9yWzFdWzFdID0geFsxXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbMl1b
Ml07Ci0gICAgbWlub3JbMF1bMl0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsxXVsz
XTsKLSAgICBtaW5vclsyXVsyXSA9IHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IC0geFsz
XVswXSAqIGRldGVybWluYW50KG1pbm9yKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgZmxvb3IgKi8KLW5hdGl2ZSBmbG9hdCBmbG9vcihmbG9hdCk7Ci1mbG9h
dDIgZmxvb3IoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGZsb29yKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZsb29yKHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgZmxvb3IoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGZsb29yKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZsb29yKHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGZsb29yKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgZmxvb3IoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGZsb29yKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZsb29yKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGZsb29yKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGZsb29yKHhbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBmbG9vcihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBmbG9vcihmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29y
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBmbG9vcihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGZsb29yKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZsb29y
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmbG9vcihmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGZsb29yKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBmbG9vcihm
bG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZs
b29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGZsb29yKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbG9vcihm
bG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZs
b29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZsb29yKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGZsb29yKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGZsb29yKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZsb29y
KHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBmbG9vcihmbG9hdDJ4
NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZsb29yKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGZsb29yKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZsb29yKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGZsb29yKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCBmbG9vcihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29yKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGZsb29yKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZsb29y
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZsb29yKHhbMV1bM10pOwotICAgIHJlc3Vs
dFsyXVszXSA9IGZsb29yKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBmbG9vcihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGZsb29yKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZsb29yKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGZsb29yKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGZsb29yKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZsb29yKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZsb29yKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZsb29y
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZsb29yKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGZsb29yKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZsb29yKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZsb29yKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGZsb29yKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZsb29yKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGZsb29yKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZs
b29yKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZsb29yKHhbM11bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjcm9zcyAqLwotZmxvYXQzIGNy
b3NzKGZsb2F0MyB1LCBmbG9hdDMgdikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0
LnggPSB1LnkgKiB2LnogLSB1LnogKiB2Lnk7Ci0gICAgcmVzdWx0LnkgPSB1LnogKiB2LnggLSB1
LnggKiB2Lno7Ci0gICAgcmVzdWx0LnogPSB1LnggKiB2LnkgLSB1LnkgKiB2Lng7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzZmluaXRlICovCi1uYXRpdmUg
Ym9vbCBpc2Zpbml0ZShmbG9hdCk7Ci1ib29sMiBpc2Zpbml0ZShmbG9hdDIgeCkgewotICAgIGJv
b2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc2Zpbml0ZSh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNmaW5p
dGUoZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNmaW5p
dGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gaXNmaW5pdGUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzZmluaXRl
KGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRl
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGlzZmluaXRlKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGlzZmluaXRlKHhbM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZE9yICovCi1u
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9taWNfaW50Kiwg
aW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9y
KGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE9yKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVh
ZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9y
KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfaW50Kiwg
aW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3Vw
IGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQq
KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGF0YW4yICovCi1uYXRpdmUgZmxvYXQgYXRhbjIoZmxv
YXQsIGZsb2F0KTsKLWZsb2F0MiBhdGFuMihmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9h
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGF0YW4yKHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
YXRhbjIoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhdGFuMih4WzFdLCB5
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhdGFuMih4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IGF0YW4yKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbjIoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXRhbjIoeFsyXSwgeVsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gYXRhbjIoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGF0YW4yKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIo
eFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGF0YW4y
KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGF0YW4yKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbjIoeFsz
XVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
YXRhbjIoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGF0YW4yKGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGF0YW4yKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9h
dDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRh
bjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwg
eVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbjIo
eFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGF0YW4y
KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVsw
XSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbjIoeFszXVswXSwgeVszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRh
bjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXRhbjIoeFszXVsxXSwg
eVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gYXRhbjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbjIo
eFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGF0YW4y
KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YXRhbjIoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRh
bjIoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRhbjIoeFsxXVszXSwg
eVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGF0YW4yKGZsb2F0M3g0
IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gYXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
YXRhbjIoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRhbjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gYXRhbjIoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRh
bjIoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXRhbjIoeFsyXVszXSwg
eVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGF0YW4yKGZsb2F0NHg0
IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYXRhbjIoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbjIoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbjIoeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gYXRhbjIoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYXRhbjIoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
YXRhbjIoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbjIoeFsyXVsx
XSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYXRhbjIoeFszXVsxXSwgeVszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gYXRhbjIoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gYXRhbjIoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXRh
bjIoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYXRhbjIoeFszXVsyXSwg
eVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYXRhbjIoeFswXVszXSwgeVswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gYXRhbjIoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJd
WzNdID0gYXRhbjIoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gYXRhbjIo
eFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIERldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICovCi1uYXRpdmUgdm9pZCBE
ZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
Zm1vZCAqLwotCi1mbG9hdCBmbW9kKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICB1aW50IHdob2xl
ID0gdWludCh4IC8geSk7Ci0gICAgZmxvYXQgbXVsdGlwbGUgPSBmbG9hdCh3aG9sZSkgKiB5Owot
ICAgIHJldHVybiB4IC0gbXVsdGlwbGU7Ci19Ci1mbG9hdDIgZm1vZChmbG9hdDIgeCwgZmxvYXQy
IHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGZtb2QoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZt
b2QoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZm1vZCh4WzJdLCB5WzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZtb2QoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmbW9kKHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGZtb2QoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZm1vZCh4WzJdLCB5
WzJdKTsKLSAgICByZXN1bHRbM10gPSBmbW9kKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4MiBmbW9kKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZm1vZChm
bG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1v
ZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
MiBmbW9kKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsy
XVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1vZCh4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1v
ZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbW9kKHhbM11bMV0sIHlb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmbW9kKGZsb2F0MngzIHgs
IGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
Zm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsx
XVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZtb2QoZmxv
YXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2Qo
eFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
Zm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgZm1vZChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZtb2Qo
eFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
Zm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBmbW9kKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDJ4NCBmbW9kKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2Qo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
Zm1vZCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10s
IHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmbW9kKGZsb2F0M3g0
IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2Qo
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1vZCh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
Zm1vZCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmbW9kKHhbMV1bM10s
IHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGZtb2QoeFsyXVszXSwgeVsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZtb2QoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQg
eSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBmbW9kKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2Qo
eFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGZtb2QoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
Zm1vZCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbW9kKHhbMV1bMl0s
IHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZtb2QoeFsyXVsyXSwgeVsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gZm1vZCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBmbW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtb2QoeFsx
XVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1vZCh4WzJdWzNdLCB5WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBmbW9kKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvci0gKi8KLW5hdGl2ZSBp
bnQgb3BlcmF0b3ItKGludCwgaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LCB1aW50
KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBpbnQgb3Bl
cmF0b3ItKGludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0KTsKLW5hdGl2ZSB1aW50
MiBvcGVyYXRvci0odWludDIsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci0odWludCwg
dWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLSh1aW50MiwgdWludCk7Ci1uYXRpdmUgdWlu
dDMgb3BlcmF0b3ItKHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3ItKHVpbnQs
IHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci0odWludDMsIHVpbnQpOwotbmF0aXZlIHVp
bnQ0IG9wZXJhdG9yLSh1aW50NCwgdWludDQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yLSh1aW50
LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3ItKHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSBp
bnQyIG9wZXJhdG9yLShpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQsIGlu
dDIpOwotbmF0aXZlIGludDIgb3BlcmF0b3ItKGludDIsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVy
YXRvci0oaW50MywgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci0oaW50LCBpbnQzKTsKLW5h
dGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQzLCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGlu
dDQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGludCwgaW50NCk7Ci1uYXRpdmUgaW50
NCBvcGVyYXRvci0oaW50NCwgaW50KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZsb2F0Miwg
ZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZl
IGZsb2F0MiBvcGVyYXRvci0oZmxvYXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9y
LShmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQz
KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0
NCBvcGVyYXRvci0oZmxvYXQ0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvci0oZmxv
YXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLShmbG9hdDQsIGZsb2F0KTsKLW5h
dGl2ZSBpbnQyIG9wZXJhdG9yLShpbnQyKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQzKTsK
LW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3ItKGZs
b2F0Mik7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLShmbG9hdDMpOwotbmF0aXZlIGZsb2F0NCBv
cGVyYXRvci0oZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci0oZmxvYXQyeDIsIGZs
b2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci0oZmxvYXQyeDIsIGZsb2F0KTsKLW5h
dGl2ZSBmbG9hdDJ4MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0MngyKTsKLW5hdGl2ZSBmbG9hdDJ4
MiBvcGVyYXRvci0oZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLShmbG9hdDN4
MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQzeDIp
OwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLShmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZs
b2F0M3gyIG9wZXJhdG9yLShmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZs
b2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZsb2F0LCBmbG9h
dDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQ0eDIgb3BlcmF0b3ItKGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRv
ci0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci0oZmxvYXQs
IGZsb2F0MngzKTsKLW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci0oZmxvYXQyeDMsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDJ4MyBvcGVyYXRvci0oZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9w
ZXJhdG9yLShmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLShm
bG9hdCwgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLShmbG9hdDN4MywgZmxv
YXQpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLShmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0
eDMgb3BlcmF0b3ItKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0
b3ItKGZsb2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3ItKGZsb2F0NHgz
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3ItKGZsb2F0NHgzKTsKLW5hdGl2ZSBm
bG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBv
cGVyYXRvci0oZmxvYXQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci0oZmxv
YXQyeDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDJ4NCBvcGVyYXRvci0oZmxvYXQyeDQpOwotbmF0
aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0
M3g0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9y
LShmbG9hdDN4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLShmbG9hdDN4NCk7
Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUg
ZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3Bl
cmF0b3ItKGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3ItKGZsb2F0
NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG1pbiAqLwotdWludCBtaW4odWludCB4LCB1aW50
IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0KLXVpbnQyIG1pbih1aW50MiB4LCB1
aW50MiB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIG1pbih1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgdWludDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsx
XSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50NCBtaW4odWludDQgeCwgdWludDQgeSkgewotICAgIHVpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWlu
KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsKLSAgICByZXN1
bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBtaW4o
aW50IHgsIGludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geSA6IHg7Ci19Ci1pbnQyIG1pbihp
bnQyIHgsIGludDIgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4
WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWludDMgbWluKGludDMgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4
WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWludDQgbWluKGludDQgeCwgaW50NCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4
WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gbWluKHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBtaW4o
ZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotZmxvYXQy
IG1pbihmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtaW4oZmxvYXQzIHgsIGZsb2F0MyB5KSB7
Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJd
LCB5WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1pbihmbG9hdDQgeCwgZmxv
YXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
bWluKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWluKGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBt
aW4oZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIg
bWluKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwg
eVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWluKHhbM11bMF0sIHlbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0s
IHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbWluKGZsb2F0MngzIHgsIGZsb2F0MngzIHkp
IHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJd
LCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1pbihmbG9hdDN4MyB4LCBmbG9hdDN4MyB5
KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsx
XSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWluKHhbMl1b
Ml0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtaW4oZmxvYXQ0
eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1b
MF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJdWzBdLCB5WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1pbih4WzFd
WzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwgeVsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsx
XVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWluKHhbMl1bMl0sIHlbMl1bMl0p
OwotICAgIHJlc3VsdFszXVsyXSA9IG1pbih4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgbWluKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IG1pbih4WzBdWzJdLCB5WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBtaW4oeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gbWluKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4
WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbWluKGZs
b2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4
WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4o
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBtaW4oeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWlu
KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtaW4oeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1pbihmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbWluKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1p
bih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBt
aW4oeFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bWluKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1pbih4WzBdWzNdLCB5
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBtaW4oeFsxXVszXSwgeVsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gbWluKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9
IG1pbih4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgSW50ZXJsb2NrZWRYb3IgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9y
KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNl
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50Kiwg
aW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRv
bWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZFhvcihkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRo
cmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9t
aWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0
aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50
Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcih0aHJlYWRncm91cCBhdG9taWNfdWludCos
IHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRo
cmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgR3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZlIHZv
aWQgR3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgdHJ1bmMgKi8KLW5hdGl2ZSBmbG9hdCB0cnVuYyhmbG9hdCk7Ci1mbG9hdDIgdHJ1bmMoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRydW5jKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IHRydW5jKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgdHJ1bmMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IHRydW5jKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHRydW5jKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IHRydW5jKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgdHJ1bmMo
ZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRydW5jKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHRydW5jKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRydW5j
KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHRydW5jKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MiB0cnVuYyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRy
dW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiB0cnVuYyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiB0cnVuYyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5j
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IHRydW5jKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRydW5jKHhbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyB0cnVuYyhmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5j
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0cnVuYyhmbG9hdDN4MyB4KSB7
Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5j
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRydW5jKHhbMl1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyB0cnVuYyhmbG9hdDR4MyB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRydW5jKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5j
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHRydW5jKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHRydW5jKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRydW5jKHhbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCB0cnVuYyhmbG9hdDJ4NCB4KSB7Ci0gICAg
ZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5jKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5j
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IHRydW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IHRydW5jKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVsz
XSA9IHRydW5jKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCB0cnVu
YyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHRydW5jKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5j
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRydW5jKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHRydW5jKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRydW5jKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHRydW5jKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRy
dW5jKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0cnVuYyhmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRydW5j
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRydW5jKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHRydW5jKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRydW5jKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRydW5jKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHRydW5jKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRydW5jKHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHRydW5jKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRy
dW5jKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHRydW5jKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHRydW5jKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHRydW5jKHhb
M11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRydW5jKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHRydW5jKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRydW5jKHhbMl1bM10p
OwotICAgIHJlc3VsdFszXVszXSA9IHRydW5jKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBtYXggKi8KLXVpbnQgbWF4KHVpbnQgeCwgdWludCB5
KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7Ci19Ci11aW50MiBtYXgodWludDIgeCwgdWlu
dDIgeSkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci11aW50MyBtYXgodWludDMgeCwgdWludDMgeSkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0s
IHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotdWludDQgbWF4KHVpbnQ0IHgsIHVpbnQ0IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4
WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0
WzNdID0gbWF4KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotCi1pbnQg
bWF4KGludCB4LCBpbnQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHggOiB5OwotfQotaW50MiBt
YXgoaW50MiB4LCBpbnQyIHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBt
YXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1pbnQzIG1heChpbnQzIHgsIGludDMgeSkgewotICAgIGludDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
YXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1pbnQ0IG1heChpbnQ0IHgsIGludDQgeSkgewotICAgIGludDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBt
YXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAgIHJl
c3VsdFszXSA9IG1heCh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWZs
b2F0IG1heChmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7Ci19
Ci1mbG9hdDIgbWF4KGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFd
LCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1heChmbG9hdDMgeCwgZmxv
YXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
bWF4KHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbWF4KGZsb2F0
NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4
KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWF4KHhbM10sIHlbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtYXgoZmxvYXQyeDIgeCwgZmxvYXQy
eDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFsw
XVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gyIG1heChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MiBtYXgoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4
WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtYXgoeFszXVswXSwgeVszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgo
eFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtYXgoZmxvYXQyeDMgeCwgZmxv
YXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgo
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4
KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFd
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbWF4KGZsb2F0M3gzIHgsIGZs
b2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4
KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1h
eCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsy
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBt
YXgoeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1h
eChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBt
YXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWF4KHhbMl1bMF0sIHlb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgoeFszXVsxXSwgeVszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYXgoeFsyXVsyXSwg
eVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWF4KHhbM11bMl0sIHlbM11bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtYXgoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwg
eVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWF4KHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1heCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBtYXgoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbWF4KHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
NCBtYXgoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gbWF4KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsy
XSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IG1heCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBtYXgoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1b
M10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1heCh4WzJdWzNdLCB5WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbWF4KGZsb2F0NHg0IHgsIGZsb2F0NHg0
IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gbWF4KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IG1heCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFsw
XVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IG1heCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBtYXgoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWF4KHhb
MF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1heCh4WzFdWzNdLCB5WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBtYXgoeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gbWF4KHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIGFzaW50ICovCi1pbnQgYXNpbnQoaW50IHgpIHsKLSAgICBy
ZXR1cm4geDsKLX0KLWludDIgYXNpbnQoaW50MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQz
IGFzaW50KGludDMgeCkgewotICAgIHJldHVybiB4OwotfQotaW50NCBhc2ludChpbnQ0IHgpIHsK
LSAgICByZXR1cm4geDsKLX0KLWludCBhc2ludCh1aW50IHgpIHsKLSAgICByZXR1cm4gaW50KHgp
OwotfQotaW50MiBhc2ludCh1aW50MiB4KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWludDMgYXNpbnQodWludDMgeCkgewotICAgIGludDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGFzaW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1p
bnQ0IGFzaW50KHVpbnQ0IHgpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBhc2ludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2ludCh4WzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotbmF0aXZlIGludCBhc2ludChmbG9hdCk7Ci1pbnQyIGFzaW50KGZsb2F0MiB4
KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYXNp
bnQoZmxvYXQzIHgpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhc2lu
dCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBhc2ludChmbG9hdDQgeCkgewot
ICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzaW50KHhbMl0pOwotICAgIHJl
c3VsdFszXSA9IGFzaW50KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBjbGFtcCAqLwotbmF0aXZlIHVpbnQgY2xhbXAodWludCwgdWludCwgdWludCk7
Ci1uYXRpdmUgdWludDIgY2xhbXAodWludDIsIHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDMg
Y2xhbXAodWludDMsIHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgdWludDQgY2xhbXAodWludDQsIHVp
bnQ0LCB1aW50NCk7Ci1uYXRpdmUgaW50IGNsYW1wKGludCwgaW50LCBpbnQpOwotbmF0aXZlIGlu
dDIgY2xhbXAoaW50MiwgaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MyBjbGFtcChpbnQzLCBpbnQz
LCBpbnQzKTsKLW5hdGl2ZSBpbnQ0IGNsYW1wKGludDQsIGludDQsIGludDQpOwotbmF0aXZlIGZs
b2F0IGNsYW1wKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MiBjbGFtcChmbG9h
dDIsIGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgY2xhbXAoZmxvYXQzLCBmbG9hdDMs
IGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IGNsYW1wKGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOwot
bmF0aXZlIGZsb2F0MngyIGNsYW1wKGZsb2F0MngyLCBmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0
aXZlIGZsb2F0M3gyIGNsYW1wKGZsb2F0M3gyLCBmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZl
IGZsb2F0NHgyIGNsYW1wKGZsb2F0NHgyLCBmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGZs
b2F0MngzIGNsYW1wKGZsb2F0MngzLCBmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0
M3gzIGNsYW1wKGZsb2F0M3gzLCBmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgz
IGNsYW1wKGZsb2F0NHgzLCBmbG9hdDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0Mng0IGNs
YW1wKGZsb2F0Mng0LCBmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IGNsYW1w
KGZsb2F0M3g0LCBmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IGNsYW1wKGZs
b2F0NHg0LCBmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0
b3I8ICovCi1uYXRpdmUgYm9vbCBvcGVyYXRvcjwoaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3Bl
cmF0b3I8KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8KGZsb2F0LCBmbG9hdCk7
Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3Bl
cmF0b3I8KHVpbnQzLCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I8KHVpbnQ0LCB1aW50
NCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9w
ZXJhdG9yPChpbnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwoaW50NCwgaW50NCk7
Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3I8KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBv
cGVyYXRvcjwoZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPChmbG9hdDQs
IGZsb2F0NCk7Ci1uYXRpdmUgYm9vbDJ4MiBvcGVyYXRvcjwoZmxvYXQyeDIsIGZsb2F0MngyKTsK
LW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPChmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJv
b2w0eDIgb3BlcmF0b3I8KGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgYm9vbDJ4MyBvcGVy
YXRvcjwoZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPChmbG9h
dDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I8KGZsb2F0NHgzLCBmbG9h
dDR4Myk7Ci1uYXRpdmUgYm9vbDJ4NCBvcGVyYXRvcjwoZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5h
dGl2ZSBib29sM3g0IG9wZXJhdG9yPChmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJvb2w0
eDQgb3BlcmF0b3I8KGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBp
c25hbiAqLwotbmF0aXZlIGJvb2wgaXNuYW4oZmxvYXQpOwotCi1ib29sMiBpc25hbihmbG9hdDIg
eCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc25hbih4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBpc25hbih4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMg
aXNuYW4oZmxvYXQzIHgpIHsKLSAgICBib29sMyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNu
YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNuYW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
aXNuYW4oeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzbmFuKGZsb2F0NCB4
KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFuKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbmFuKHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGlzbmFuKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8q
IEZ1bmN0aW9ucyBuYW1lZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyAqLwotbmF0aXZl
IHZvaWQgQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIG9wZXJhdG9yXiAqLwotYm9vbCBvcGVyYXRvcl4oYm9vbCBhLCBib29sIGIpIHsKLSAgICBp
ZiAoYSkKLSAgICAgICAgcmV0dXJuICFiOwotICAgIHJldHVybiBiOwotfQotbmF0aXZlIGludCBv
cGVyYXRvcl4oaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3JeKHVpbnQsIHVpbnQpOwot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgaXNpbmYgKi8KLW5hdGl2ZSBib29sIGlzaW5mKGZsb2F0KTsK
LWJvb2wyIGlzaW5mKGZsb2F0MiB4KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGlzaW5mKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzaW5mKHhbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sMyBpc2luZihmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBpc2luZih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBpc2luZih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbDQgaXNpbmYoZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gaXNpbmYoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNpbmYoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yfCAqLwotYm9vbCBv
cGVyYXRvcnwoYm9vbCBhLCBib29sIGIpIHsKLSAgICByZXR1cm4gYSB8fCBiOwotfQotbmF0aXZl
IGludCBvcGVyYXRvcnwoaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3J8KHVpbnQsIHVp
bnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGVncmVlcyAqLwotZmxvYXQgZGVncmVlcyhmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIHggKiAxODAgLyAzLjE0MTU5OwotfQotZmxvYXQyIGRlZ3JlZXMo
ZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRlZ3JlZXMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGRlZ3JlZXMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGRlZ3JlZXMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGVncmVlcyh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBkZWdyZWVzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgZGVncmVlcyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZGVncmVlcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IGRlZ3JlZXMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGVncmVlcyh4
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGVncmVlcyhmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRlZ3JlZXMoZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgZGVncmVlcyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGRlZ3JlZXMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGVncmVlcyh4
WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZGVncmVlcyhmbG9hdDJ4
MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBkZWdyZWVzKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVz
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVz
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVz
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRlZ3JlZXMoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVl
cyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZWdyZWVzKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVl
cyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGRlZ3JlZXMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVl
cyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGVncmVl
cyh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGVncmVlcyhmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3Jl
ZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3Jl
ZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3Jl
ZXMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGVncmVlcyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZWdy
ZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZWdy
ZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGVncmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZWdy
ZWVzKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRlZ3JlZXMoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gZGVncmVlcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZWdy
ZWVzKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZWdyZWVzKGZs
b2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVn
cmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGVn
cmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVn
cmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZWdyZWVzKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGRlZ3JlZXMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGVn
cmVlcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZWdyZWVzKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGRlZ3JlZXMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVn
cmVlcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGRlZ3JlZXMoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGVn
cmVlcyh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgU2FtcGxlICovCi1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTFEPHVpbnQ+LCBzYW1wbGVy
LCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8dWlu
dD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVy
ZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQgU2FtcGxl
KFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxl
KFRleHR1cmUzRDx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50
IFNhbXBsZShUZXh0dXJlM0Q8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMUQ8dWludDI+LCBz
YW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUxREFy
cmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGUoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1
aW50MiBTYW1wbGUoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTNEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTNEPHVpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmVD
dWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGUoVGV4dHVyZTFEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIHVp
bnQzIFNhbXBsZShUZXh0dXJlMURBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZShU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludDMgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUzRDx1aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUz
RDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZl
IHVpbnQzIFNhbXBsZShUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUxRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkQ8
dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShU
ZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNh
bXBsZShUZXh0dXJlM0Q8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZUN1YmU8dWludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTFEPGlu
dD4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUx
REFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBs
ZShUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQg
U2FtcGxlKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxl
KFRleHR1cmUzRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBT
YW1wbGUoVGV4dHVyZTNEPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZz
ZXQpOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlMUQ8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlMURBcnJheTxpbnQy
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJl
MkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBTYW1wbGUo
VGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsK
LW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGUo
VGV4dHVyZTNEPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIg
U2FtcGxlKFRleHR1cmUzRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9m
ZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTFEPGludDM+LCBzYW1w
bGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8
aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4
dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDMgU2Ft
cGxlKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2Ft
cGxlKFRleHR1cmUzRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBp
bnQzIFNhbXBsZShUZXh0dXJlM0Q8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50
MyBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUxRDxpbnQ0Piwg
c2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUxREFy
cmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxl
KFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0
IFNhbXBsZShUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUyREFycmF5PGlu
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0
IFNhbXBsZShUZXh0dXJlM0Q8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRp
dmUgaW50NCBTYW1wbGUoVGV4dHVyZTNEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTFEPGZs
b2F0Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRl
eHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZShU
ZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxv
YXQyIFNhbXBsZShUZXh0dXJlMUQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwot
bmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJE
PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1w
bGUoVGV4dHVyZTNEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVy
ZTFEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2Ft
cGxlKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUg
ZmxvYXQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUzRDxmbG9h
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4
dHVyZTNEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwot
bmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDQ+LCBzYW1w
bGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMURBcnJh
eTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1w
bGUoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQ0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2Ft
cGxlKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVy
ZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBTYW1wbGVMZXZlbCAqLwotbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
dWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwot
bmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1w
bGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZl
bChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChU
ZXh0dXJlQ3ViZTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsK
LW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVM
ZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1
YmU8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUg
dWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50
ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludCBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBM
T0QpOwotbmF0aXZlIGludCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxl
TGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGlu
dCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxl
dmVsKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0Qs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MiBT
YW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1
cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQz
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJl
MkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZl
bChUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsK
LW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxl
dmVsKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBp
bnQ0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBs
ZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVM
ZXZlbChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBM
T0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZl
IGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1w
bGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDM+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBs
ZUxldmVsKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDQgU2Ft
cGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQg
U2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0aDJEPGZs
b2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0
IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0aDJEQXJyYXk8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBTYW1w
bGVCaWFzICovCi1uYXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMo
VGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludCBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZUN1
YmU8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
dWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQy
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNh
bXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVp
bnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFz
KFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
Ci1uYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJE
PGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50
IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyREFy
cmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4
dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5h
dGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxpbnQyPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJp
YXMoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGludDMgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDQgU2Ft
cGxlQmlhcyhUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
QmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJh
eTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBp
bnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhU
ZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJl
MkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVC
aWFzKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlQ3Vi
ZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJp
YXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZUN1
YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJl
Q3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0
aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUy
RDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zm
c2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0NCBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1
cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0
dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2Ft
cGxlQmlhcyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBsZUdyYWQgKi8KLW5hdGl2
ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0
dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJh
eTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVH
cmFkKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2
ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
dWludDIgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChU
ZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFkpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQz
IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQ0IFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1w
bGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5h
dGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRB
cnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0
aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRl
eHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9h
dDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFy
cmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludDMgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQzPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9m
ZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGlu
dDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBT
YW1wbGVHcmFkKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7
Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludDQgU2FtcGxlR3JhZChU
ZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1
cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0
MyBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBs
ZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVDdWJl
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDIg
U2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0dXJl
Q3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0
MyBERFkpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZs
b2F0MyBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwg
ZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRp
dmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdy
YWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdy
YWQoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMg
RERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJE
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBm
bG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgc2luaCAqLwotbmF0aXZlIGZsb2F0IHNpbmgoZmxvYXQpOwotZmxvYXQyIHNpbmgoZmxvYXQy
IHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbmgoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gc2luaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IHNpbmgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNp
bmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBz
aW5oKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc2luaChmbG9hdDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2luaCh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNpbmgoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gc2luaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIg
c2luaChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgo
eFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHNpbmgoZmxvYXQzeDIg
eCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4
WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgc2luaChmbG9hdDR4MiB4
KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbmgoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgc2lu
aChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzaW5o
KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNpbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgo
eFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHNpbmgoZmxvYXQ0eDMg
eCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHNpbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNp
bmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc2luaCh4WzNdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgc2luaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2lu
aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHNpbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luaCh4WzFdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgc2luaChmbG9hdDN4NCB4KSB7Ci0g
ICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbmgoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW5o
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c2luaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IHNpbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gc2luaCh4WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBzaW5oKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCBzaW5oKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBz
aW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gc2luaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzaW5oKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNpbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gc2luaCh4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBzaW5oKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHNpbmgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBzaW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNp
bmgoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gc2luaCh4WzNdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGR5ICovCi1uYXRpdmUgZmxvYXQg
ZGR5KGZsb2F0KTsKLWZsb2F0MiBkZHkoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBkZHkoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHko
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR5KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDQgZGR5KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBkZHkoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGRkeSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHkoeFszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MngyIGRkeShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIg
ZGR5KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBkZHkoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeShmbG9h
dDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBkZHkoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeShm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5
KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHkoZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
ZGR5KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR5KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gZGR5KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0g
PSBkZHkoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeShmbG9h
dDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBkZHkoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5KHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBkZHkoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeShm
bG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGRkeSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHko
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5KHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHkoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHkoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRk
eSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHkoeFswXVszXSk7Ci0gICAgcmVzdWx0
WzFdWzNdID0gZGR5KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeSh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBkZHkoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPj0gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9y
Pj0oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LCB1aW50KTsKLW5hdGl2
ZSBib29sIG9wZXJhdG9yPj0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj49
KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PSh1aW50MywgdWludDMpOwot
bmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVy
YXRvcj49KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPj0oaW50MywgaW50Myk7
Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+PShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVy
YXRvcj49KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KGZsb2F0Mywg
ZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj49KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2
ZSBib29sMngyIG9wZXJhdG9yPj0oZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gy
IG9wZXJhdG9yPj0oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9y
Pj0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPj0oZmxvYXQy
eDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPj0oZmxvYXQzeDMsIGZsb2F0
M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPj0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5h
dGl2ZSBib29sMng0IG9wZXJhdG9yPj0oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29s
M3g0IG9wZXJhdG9yPj0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJh
dG9yPj0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGRzdCAqLwot
dWludDQgZHN0KHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55ICogc3JjMS55OwotICAgIHJl
c3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQ0IGRzdChpbnQ0IHNyYzAsIGludDQgc3JjMSkgewotICAgIGludDQgcmVzdWx0
OwotICAgIHJlc3VsdC54ID0gMTsKLSAgICByZXN1bHQueSA9IHNyYzAueSAqIHNyYzEueTsKLSAg
ICByZXN1bHQueiA9IHNyYzAuejsKLSAgICByZXN1bHQudyA9IHNyYzEudzsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGRzdChmbG9hdDQgc3JjMCwgZmxvYXQ0IHNyYzEpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0gMTsKLSAgICByZXN1bHQueSA9IHNyYzAueSAq
IHNyYzEueTsKLSAgICByZXN1bHQueiA9IHNyYzAuejsKLSAgICByZXN1bHQudyA9IHNyYzEudzsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkb3QgKi8KLXVp
bnQgZG90KHVpbnQgYSwgdWludCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotdWludCBkb3Qo
dWludDIgYSwgdWludDIgYikgewotICAgIHVpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludCBkb3QodWludDMgYSwgdWludDMgYikgewotICAg
IHVpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBh
WzJdICogYlsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludCBkb3QodWludDQgYSwgdWlu
dDQgYikgewotICAgIHVpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBd
ICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzNdICogYlsz
XTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50IGRvdChpbnQgYSwgaW50IGIpIHsKLSAgICBy
ZXR1cm4gYSAqIGI7Ci19Ci1pbnQgZG90KGludDIgYSwgaW50MiBiKSB7Ci0gICAgaW50IHJlc3Vs
dCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludCBkb3QoaW50
MyBhLCBpbnQzIGIpIHsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQg
KyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50
IGRvdChpbnQ0IGEsIGludDQgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9
IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCArIGFbM10gKiBiWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxvYXQg
YSwgZmxvYXQgYikgewotICAgIHJldHVybiBhICogYjsKLX0KLWZsb2F0IGRvdChmbG9hdDIgYSwg
ZmxvYXQyIGIpIHsKLSAgICBmbG9hdCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxvYXQzIGEsIGZsb2F0MyBiKSB7Ci0gICAgZmxv
YXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJd
ICogYlsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgZG90KGZsb2F0NCBhLCBmbG9h
dDQgYikgewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsw
XSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVszXSAqIGJb
M107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFzZmxvYXQg
Ki8KLW5hdGl2ZSBmbG9hdCBhc2Zsb2F0KGludCk7Ci1mbG9hdDIgYXNmbG9hdChpbnQyIHgpIHsK
LSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IGFzZmxvYXQoaW50MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGFzZmxv
YXQoaW50NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
YXNmbG9hdCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc2Zsb2F0KHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1uYXRpdmUgZmxvYXQgYXNmbG9hdCh1aW50KTsKLWZsb2F0MiBhc2Zsb2F0
KHVpbnQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFzZmxvYXQo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGFzZmxvYXQodWludDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0p
OwotICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBhc2Zsb2F0KHVpbnQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzZmxvYXQoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGFzZmxvYXQoZmxvYXQgeCkgewotICAg
IHJldHVybiB4OwotfQotZmxvYXQyIGFzZmxvYXQoZmxvYXQyIHgpIHsKLSAgICByZXR1cm4geDsK
LX0KLWZsb2F0MyBhc2Zsb2F0KGZsb2F0MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDQg
YXNmbG9hdChmbG9hdDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQyeDIgYXNmbG9hdChm
bG9hdDJ4MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDN4MiBhc2Zsb2F0KGZsb2F0M3gy
IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0NHgyIGFzZmxvYXQoZmxvYXQ0eDIgeCkgewot
ICAgIHJldHVybiB4OwotfQotZmxvYXQyeDMgYXNmbG9hdChmbG9hdDJ4MyB4KSB7Ci0gICAgcmV0
dXJuIHg7Ci19Ci1mbG9hdDN4MyBhc2Zsb2F0KGZsb2F0M3gzIHgpIHsKLSAgICByZXR1cm4geDsK
LX0KLWZsb2F0NHgzIGFzZmxvYXQoZmxvYXQ0eDMgeCkgewotICAgIHJldHVybiB4OwotfQotZmxv
YXQyeDQgYXNmbG9hdChmbG9hdDJ4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDN4NCBh
c2Zsb2F0KGZsb2F0M3g0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0NHg0IGFzZmxvYXQo
ZmxvYXQ0eDQgeCkgewotICAgIHJldHVybiB4OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNu
b3JtYWwgKi8KLW5hdGl2ZSBib29sIGlzbm9ybWFsKGZsb2F0KTsKLQotYm9vbDIgaXNub3JtYWwo
ZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNub3JtYWwo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNub3JtYWwoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wzIGlzbm9ybWFsKGZsb2F0MyB4KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbm9ybWFsKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbm9ybWFsKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sNCBpc25vcm1hbChmbG9hdDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBpc25vcm1hbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBpc25vcm1hbCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc25v
cm1hbCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1l
ZCBJbnRlcmxvY2tlZEV4Y2hhbmdlICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdl
KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVp
bnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGRldmlj
ZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZEV4Y2hhbmdlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQs
IHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJl
YWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWlj
X3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNo
YW5nZSh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwg
dGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJl
YWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIEdldERpbWVuc2lvbnMgKi8KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsK
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIGRldmlj
ZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxRDxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFk
IHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+
LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIGRldmljZSB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIGRl
dmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxm
bG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIHRo
cmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxm
bG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8Zmxv
YXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCB0aHJlYWQgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwg
dGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZs
b2F0Mz4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+
LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9h
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIG9wZXJhdG9yKyAqLwotbmF0aXZlIGludCBvcGVyYXRvcisoaW50LCBpbnQpOwotbmF0aXZl
IHVpbnQgb3BlcmF0b3IrKHVpbnQsIHVpbnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhmbG9h
dCwgZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50MiwgdWludDIpOwotbmF0aXZl
IHVpbnQyIG9wZXJhdG9yKyh1aW50LCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVp
bnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvcisodWludDMsIHVpbnQzKTsKLW5hdGl2
ZSB1aW50MyBvcGVyYXRvcisodWludCwgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1
aW50MywgdWludCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IrKHVpbnQ0LCB1aW50NCk7Ci1uYXRp
dmUgdWludDQgb3BlcmF0b3IrKHVpbnQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvciso
dWludDQsIHVpbnQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IrKGludDIsIGludDIpOwotbmF0aXZl
IGludDIgb3BlcmF0b3IrKGludCwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50Miwg
aW50KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yKyhpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9w
ZXJhdG9yKyhpbnQsIGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3IrKGludDMsIGludCk7Ci1u
YXRpdmUgaW50NCBvcGVyYXRvcisoaW50NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvciso
aW50LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKyhpbnQ0LCBpbnQpOwotbmF0aXZlIGZs
b2F0MiBvcGVyYXRvcisoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvciso
ZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIsIGZsb2F0KTsK
LW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMg
b3BlcmF0b3IrKGZsb2F0LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQz
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9hdDQsIGZsb2F0NCk7Ci1uYXRp
dmUgZmxvYXQ0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0
b3IrKGZsb2F0NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKyhmbG9hdDJ4Miwg
ZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQyeDIpOwot
bmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKyhmbG9hdDJ4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
M3gyIG9wZXJhdG9yKyhmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJh
dG9yKyhmbG9hdCwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yKyhmbG9hdDN4
MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKyhmbG9hdDR4MiwgZmxvYXQ0eDIp
OwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQ0eDIpOwotbmF0aXZlIGZs
b2F0NHgyIG9wZXJhdG9yKyhmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJh
dG9yKyhmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKyhmbG9h
dCwgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKyhmbG9hdDJ4MywgZmxvYXQp
OwotbmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yKyhmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZl
IGZsb2F0M3gzIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0M3gzIG9w
ZXJhdG9yKyhmbG9hdDN4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKyhmbG9h
dDR4MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQ0
eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yKyhmbG9hdDR4MywgZmxvYXQpOwotbmF0aXZl
IGZsb2F0Mng0IG9wZXJhdG9yKyhmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0
IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKyhm
bG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKyhmbG9hdDN4NCwgZmxv
YXQzeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQzeDQpOwotbmF0
aXZlIGZsb2F0M3g0IG9wZXJhdG9yKyhmbG9hdDN4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0
IG9wZXJhdG9yKyhmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9y
KyhmbG9hdCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yKyhmbG9hdDR4NCwg
ZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yKyh1aW50Mik7Ci1uYXRpdmUgdWludDMgb3Bl
cmF0b3IrKHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludDQpOwotbmF0aXZlIGlu
dDIgb3BlcmF0b3IrKGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3IrKGludDMpOwotbmF0aXZl
IGludDQgb3BlcmF0b3IrKGludDQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvcisoZmxvYXQyKTsK
LW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3IrKGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9y
KyhmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yKyhmbG9hdDJ4Mik7Ci1uYXRpdmUg
ZmxvYXQzeDIgb3BlcmF0b3IrKGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvciso
ZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yKyhmbG9hdDJ4Myk7Ci1uYXRpdmUg
ZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0M3gzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvciso
ZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yKyhmbG9hdDJ4NCk7Ci1uYXRpdmUg
ZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvciso
ZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZnJhYyAqLwotZmxvYXQgZnJhYyhmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIHggLSBmbG9vcih4KTsKLX0KLWZsb2F0MiBmcmFjKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmcmFjKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGZyYWMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBm
cmFjKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmcmFj
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZyYWMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZnJh
Yyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZyYWMoZmxvYXQ0IHgpIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZyYWMoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmcmFjKHhbMl0pOwotICAgIHJl
c3VsdFszXSA9IGZyYWMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZy
YWMoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhb
MV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBmcmFjKGZsb2F0M3gyIHgp
IHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsy
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZyYWMoZmxvYXQ0eDIgeCkg
ewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmcmFjKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZyYWMo
ZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
cmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZnJhYyhm
bG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZy
YWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBmcmFjKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhb
Ml1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmcmFjKGZsb2F0NHgzIHgp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBmcmFjKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFj
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGZyYWMoeFszXVsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZyYWMoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBmcmFjKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZyYWMoeFsxXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZyYWMoZmxvYXQzeDQgeCkgewotICAg
IGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmcmFjKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZnJhYyh4
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZy
YWMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBmcmFjKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZyYWMoeFsxXVsz
XSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZnJhYyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgZnJhYyhmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJh
Yyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGZyYWMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZnJhYyh4WzNdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBmcmFjKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZyYWMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZnJhYyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBmcmFjKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gZnJhYyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmcmFj
KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZyYWMoeFszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHN0b3JlICovCi1uYXRpdmUgdm9pZCBz
dG9yZShkZXZpY2UgYXRvbWljX2ludCosIGludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZShkZXZpY2Ug
YXRvbWljX3VpbnQqLCB1aW50KTsKLW5hdGl2ZSB2b2lkIHN0b3JlKHRocmVhZGdyb3VwIGF0b21p
Y19pbnQqLCBpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQq
LCB1aW50KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIHJlZnJhY3QgKi8KLWZsb2F0IHJlZnJhY3Qo
ZmxvYXQgaSwgZmxvYXQgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQgcmVzdWx0OwotICAgIGZs
b2F0IGsgPSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAg
IGlmIChrIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAt
IChldGEgKiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDIgcmVmcmFjdChmbG9h
dDIgaSwgZmxvYXQyIG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxv
YXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBpKSk7Ci0gICAg
aWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBldGEgKiBpIC0g
KGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0MyByZWZyYWN0KGZsb2F0
MyBpLCBmbG9hdDMgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9h
dCBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4sIGkpKTsKLSAgICBp
ZiAoayA8IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGV0YSAqIGkgLSAo
ZXRhICogZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQ0IHJlZnJhY3QoZmxvYXQ0
IGksIGZsb2F0NCBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0
IGsgPSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3QobiwgaSkpOwotICAgIGlm
IChrIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gZXRhICogaSAtIChl
dGEgKiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBs
b2cxMCAqLwotZmxvYXQgbG9nMTAoZmxvYXQgeCkgewotICAgIHJldHVybiBsb2coeCkgLyBsb2co
ZmxvYXQoMTApKTsKLX0KLWZsb2F0MiBsb2cxMChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMTAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nMTAo
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBsb2cxMChmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMTAoeFswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbG9nMTAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMTAoeFsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsb2cxMChmbG9hdDQgeCkgewotICAgIGZsb2F0NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMTAoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9n
MTAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMTAoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
bG9nMTAoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxvZzEwKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxvZzEwKGZsb2F0M3gyIHgpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGxvZzEwKGZsb2F0NHgy
IHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMTAoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gbG9nMTAoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngzIGxvZzEwKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gzIGxvZzEwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
MTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgzIGxvZzEwKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9n
MTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gbG9nMTAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMTAoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gbG9nMTAoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IGxvZzEwKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nMTAoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
bG9nMTAoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMTAoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxvZzEwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
bG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMTAoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gbG9nMTAoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMTAo
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMTAoeFsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IGxvZzEwKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMTAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nMTAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMTAoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMTAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bG9nMTAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMTAoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbG9nMTAoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nMTAo
eFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nMTAoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gbG9nMTAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMTAoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nMTAoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gbG9nMTAoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nMTAoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gbG9nMTAoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9n
MTAoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IG9wZXJhdG9yLyAqLwotbmF0aXZlIGludCBvcGVyYXRvci8oaW50LCBpbnQpOwotbmF0aXZlIHVp
bnQgb3BlcmF0b3IvKHVpbnQsIHVpbnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLyhmbG9hdCwg
ZmxvYXQpOwotbmF0aXZlIHVpbnQyIG9wZXJhdG9yLyh1aW50MiwgdWludDIpOwotbmF0aXZlIHVp
bnQyIG9wZXJhdG9yLyh1aW50MiwgdWludCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQs
IHVpbnQyKTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci8odWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1
aW50MyBvcGVyYXRvci8odWludDMsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50
LCB1aW50Myk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3IvKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUg
dWludDQgb3BlcmF0b3IvKHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWlu
dCwgdWludDQpOwotbmF0aXZlIGludDIgb3BlcmF0b3IvKGludDIsIGludDIpOwotbmF0aXZlIGlu
dDIgb3BlcmF0b3IvKGludDIsIGludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50LCBpbnQy
KTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLyhpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJh
dG9yLyhpbnQzLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IvKGludCwgaW50Myk7Ci1uYXRp
dmUgaW50NCBvcGVyYXRvci8oaW50NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci8oaW50
NCwgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLyhpbnQsIGludDQpOwotbmF0aXZlIGZsb2F0
MiBvcGVyYXRvci8oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci8oZmxv
YXQyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyKTsKLW5h
dGl2ZSBmbG9hdDMgb3BlcmF0b3IvKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3Bl
cmF0b3IvKGZsb2F0MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci8oZmxvYXQsIGZs
b2F0Myk7Ci1uYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLyhmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUg
ZmxvYXQ0IG9wZXJhdG9yLyhmbG9hdDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3Iv
KGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLyhmbG9hdDJ4MiwgZmxv
YXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLyhmbG9hdDJ4MiwgZmxvYXQpOwotbmF0
aXZlIGZsb2F0MngyIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0M3gy
IG9wZXJhdG9yLyhmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9y
LyhmbG9hdDN4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gyIG9wZXJhdG9yLyhmbG9hdCwgZmxv
YXQzeDIpOwotbmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLyhmbG9hdDR4MiwgZmxvYXQ0eDIpOwot
bmF0aXZlIGZsb2F0NHgyIG9wZXJhdG9yLyhmbG9hdDR4MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
NHgyIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9y
LyhmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLyhmbG9hdDJ4
MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQyeDMpOwot
bmF0aXZlIGZsb2F0M3gzIG9wZXJhdG9yLyhmbG9hdDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGZs
b2F0M3gzIG9wZXJhdG9yLyhmbG9hdDN4MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0M3gzIG9wZXJh
dG9yLyhmbG9hdCwgZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLyhmbG9hdDR4
MywgZmxvYXQ0eDMpOwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLyhmbG9hdDR4MywgZmxvYXQp
OwotbmF0aXZlIGZsb2F0NHgzIG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQ0eDMpOwotbmF0aXZlIGZs
b2F0Mng0IG9wZXJhdG9yLyhmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9w
ZXJhdG9yLyhmbG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLyhmbG9h
dCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLyhmbG9hdDN4NCwgZmxvYXQz
eDQpOwotbmF0aXZlIGZsb2F0M3g0IG9wZXJhdG9yLyhmbG9hdDN4NCwgZmxvYXQpOwotbmF0aXZl
IGZsb2F0M3g0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0IG9w
ZXJhdG9yLyhmbG9hdDR4NCwgZmxvYXQ0eDQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLyhm
bG9hdDR4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NHg0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQ0
eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGR5X2ZpbmUgKi8KLWZsb2F0IGRkeV9maW5lKGZs
b2F0IHgpIHsKLSAgICByZXR1cm4gZGR5KHgpOwotfQotZmxvYXQyIGRkeV9maW5lKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBkZHlfZmluZSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzIGRkeV9maW5lKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfZmluZSh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBkZHlfZmluZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0IGRkeV9maW5lKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZHlfZmluZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfZmluZSh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBkZHlfZmluZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHlfZmlu
ZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR5X2ZpbmUoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmlu
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlf
ZmluZSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR5X2ZpbmUo
ZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDIgZGR5X2ZpbmUoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHlfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmlu
ZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBkZHlfZmluZSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDMgZGR5X2ZpbmUoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHlfZmluZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5X2ZpbmUoZmxvYXQzeDMgeCkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmlu
ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBkZHlfZmluZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgZGR5X2ZpbmUoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBkZHlfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBkZHlfZmluZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHlfZmluZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfZmluZSh4
WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZGR5X2ZpbmUoZmxvYXQy
eDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmlu
ZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlf
ZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBk
ZHlfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfZmluZSh4WzFdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZGR5X2ZpbmUoZmxvYXQzeDQgeCkgewot
ICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHlfZmluZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfZmluZSh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBkZHlfZmluZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfZmlu
ZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfZmluZSh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHlfZmluZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgZGR5X2ZpbmUoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBkZHlfZmluZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHlfZmluZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfZmluZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBkZHlfZmluZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHlfZmluZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfZmluZSh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfZmluZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBkZHlfZmluZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfZmluZSh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfZmluZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHlfZmluZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfZmluZSh4
WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfZmluZSh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBkZHlfZmluZSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHlfZmlu
ZSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHlfZmluZSh4WzNdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYW55ICovCi1ib29sIGFueShi
b29sIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWJvb2wgYW55KGJvb2wyIHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
Ym9vbDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAo
eFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMl0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19Ci1i
b29sIGFueSh1aW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9
IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueSh1aW50MyB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludDQgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
ICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdICE9
IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShpbnQgeCkgewotICAgIHJldHVy
biB4ICE9IDA7Ci19Ci1ib29sIGFueShpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludDMg
eCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wg
YW55KGludDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8ICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdCB4
KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYW55KGZsb2F0MiB4KSB7Ci0gICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueShmbG9hdDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYW55KGZsb2F0MngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbnkoZmxvYXQzeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
Ml1bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0NHgyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0g
IT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0MngzIHgpIHsKLSAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsx
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueShmbG9hdDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0eDMgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsy
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMl0gIT0gMCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0Mng0IHgpIHsKLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0M3g0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdWzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29s
IGFueShmbG9hdDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsz
XVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bM10gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bM10gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wyeDIgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYW55KGJvb2wzeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0
eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wyeDMgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGJvb2wzeDMgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55
KGJvb2w0eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMF07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1b
Ml07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWJvb2wgYW55KGJvb2wyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bM107Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJv
b2wgYW55KGJvb2wzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMl07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMV1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bM107Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYW55KGJvb2w0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
IHhbMV1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8IHhbM11bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bMV07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
IHx8IHhbMF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMV1bMl07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8IHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbM11bMl07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhb
MV1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8IHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8IHhbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIGRkeV9jb2Fyc2UgKi8KLWZsb2F0IGRkeV9jb2Fyc2UoZmxvYXQgeCkgewotICAgIHJldHVy
biBkZHkoeCk7Ci19Ci1mbG9hdDIgZGR5X2NvYXJzZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBkZHlfY29hcnNlKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR5X2Nv
YXJzZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5
X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHlfY29hcnNlKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGRkeV9jb2Fyc2UoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBkZHlfY29hcnNlKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBkZHlfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZGR5X2NvYXJzZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHlf
Y29hcnNlKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHlfY29hcnNl
KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgZGR5X2NvYXJzZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29h
cnNlKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHlfY29hcnNl
KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gZGR5X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29h
cnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBkZHlfY29hcnNlKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBk
ZHlfY29hcnNlKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29h
cnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsx
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeV9jb2Fyc2UoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29h
cnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9j
b2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGR5X2NvYXJzZShmbG9hdDR4MyB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9jb2Fyc2UoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9j
b2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5X2NvYXJzZSh4
WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5
X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHlfY29hcnNlKHhbM11bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHlfY29hcnNlKGZsb2F0Mng0IHgp
IHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5
X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHlfY29hcnNl
KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHlfY29hcnNlKGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNl
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBk
ZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBkZHlfY29hcnNlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9jb2Fy
c2UoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeV9jb2Fyc2Uo
ZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBkZHlfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9jb2Fy
c2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9
IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5X2NvYXJzZSh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHlfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGRkeV9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR5X2Nv
YXJzZSh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGRkeV9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR5X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBkZHlfY29hcnNlKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVy
YXRvcisrICovCi11aW50IG9wZXJhdG9yKysodWludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1
ZSArIDE7Ci19Ci1pbnQgb3BlcmF0b3IrKyhpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUg
KyAxOwotfQotZmxvYXQgb3BlcmF0b3IrKyhmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1
ZSArIDE7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZEFuZCAqLwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWlj
X3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQo
ZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkQW5kKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJl
YWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0
b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
QW5kKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNl
IHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVhZGdyb3VwIGF0b21pY19p
bnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKHRocmVh
ZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3Jv
dXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcn4gKi8KLWJvb2wgb3BlcmF0
b3J+KGJvb2wgdmFsdWUpIHsKLSAgICByZXR1cm4gIXZhbHVlOwotfQotbmF0aXZlIGludCBvcGVy
YXRvcn4oaW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yfih1aW50KTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIGRkeCAqLwotbmF0aXZlIGZsb2F0IGRkeChmbG9hdCk7Ci1mbG9hdDIgZGR4KGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZGR4KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
ZGR4KGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGRkeChmbG9hdDQgeCkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4KHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGRkeCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHgoeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gZGR4KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHgoZmxvYXQy
eDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQz
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHgoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBkZHgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBk
ZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4KHhbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHgoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzeDMgZGR4KGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBkZHgoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRkeChm
bG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR4KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBkZHgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHgo
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4KHhbM11bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4KHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBk
ZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4KHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHgoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1b
MV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHgoeFswXVsz
XSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGRkeCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZGR4KGZsb2F0
NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4KHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHgoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZGR4KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeCh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHgoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4KHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxv
Y2tlZE1heCAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50
KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmlj
ZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZE1heChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRo
cmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KGRldmljZSBhdG9t
aWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
TWF4KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVh
ZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY191
aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWF4KHRo
cmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkTWF4KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAg
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2lu
dCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBjb3NoICov
Ci1uYXRpdmUgZmxvYXQgY29zaChmbG9hdCk7Ci1mbG9hdDIgY29zaChmbG9hdDIgeCkgewotICAg
IGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zaCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBjb3NoKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgY29zaChmbG9h
dDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zaCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBjb3NoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGNvc2goeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBjb3NoKGZsb2F0NCB4KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGNvc2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zaCh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBjb3NoKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBjb3NoKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgY29zaChmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBjb3NoKGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBjb3No
KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBjb3NoKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2go
eFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGNvc2goZmxvYXQzeDMg
eCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gY29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgY29zaChmbG9hdDR4MyB4KSB7Ci0gICAg
ZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29z
aCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJd
KTsKLSAgICByZXN1bHRbM11bMl0gPSBjb3NoKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBjb3NoKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3No
KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2goeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
Y29zaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3NoKHhbMV1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBjb3NoKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvc2goeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBj
b3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gY29zaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3NoKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGNvc2goeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHg0IGNvc2goZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBjb3NoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvc2goeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gY29zaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3NoKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGNvc2goeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY29z
aCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3Vs
dFsxXVszXSA9IGNvc2goeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gY29zaCh4WzJdWzNd
KTsKLSAgICByZXN1bHRbM11bM10gPSBjb3NoKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHhfY29hcnNlICovCi1mbG9hdCBkZHhfY29hcnNl
KGZsb2F0IHgpIHsKLSAgICByZXR1cm4gZGR4KHgpOwotfQotZmxvYXQyIGRkeF9jb2Fyc2UoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeF9jb2Fyc2Uo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2NvYXJzZSh4WzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzIGRkeF9jb2Fyc2UoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGRkeF9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4
X2NvYXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHhfY29hcnNlKHhbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4X2NvYXJzZShmbG9hdDQgeCkgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBkZHhfY29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9jb2Fyc2UoeFsyXSk7
Ci0gICAgcmVzdWx0WzNdID0gZGR4X2NvYXJzZSh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDIgZGR4X2NvYXJzZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeF9jb2Fyc2UoZmxvYXQzeDIgeCkgewotICAg
IGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgZGR4X2NvYXJzZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNl
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBk
ZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDMgZGR4X2NvYXJzZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBkZHhfY29hcnNlKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBk
ZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2UoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fy
c2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGRk
eF9jb2Fyc2UoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fy
c2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2Nv
YXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gZGR4X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
ZGR4X2NvYXJzZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2Nv
YXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9jb2Fyc2UoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDQgZGR4X2NvYXJzZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhf
Y29hcnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeF9jb2Fyc2Uo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2NvYXJzZSh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHhfY29hcnNlKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4NCBkZHhfY29hcnNlKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeF9jb2Fyc2Uo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2NvYXJzZSh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRk
eF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2NvYXJzZSh4WzJdWzFd
KTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfY29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGRkeF9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2NvYXJz
ZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHhfY29hcnNlKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGRkeF9jb2Fyc2UoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZGR4X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeF9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmVzdWx0
WzNdWzNdID0gZGR4X2NvYXJzZSh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgZmlyc3RiaXRoaWdoICovCi11aW50IGZpcnN0Yml0aGlnaCh1aW50
IHgpIHsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMzEpKSAhPSAwKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMzApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgMjkpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMjgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMzsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgMjcpKSAhPSAwKQotICAgICAgICByZXR1cm4gNDsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMjYpKSAhPSAwKQotICAgICAgICByZXR1cm4gNTsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgMjUpKSAhPSAwKQotICAgICAgICByZXR1cm4gNjsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMjQpKSAhPSAwKQotICAgICAgICByZXR1cm4gNzsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMjMpKSAhPSAwKQotICAgICAgICByZXR1cm4gODsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMjIpKSAhPSAwKQotICAgICAgICByZXR1cm4gOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwg
MjEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDIw
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDExOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxOSkp
ICE9IDApCi0gICAgICAgIHJldHVybiAxMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTgpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMTM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE3KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDE0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNikpICE9IDAp
Ci0gICAgICAgIHJldHVybiAxNTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTUpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMTY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE0KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDE3OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMykpICE9IDApCi0gICAg
ICAgIHJldHVybiAxODsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTIpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMTk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDExKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDIwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMCkpICE9IDApCi0gICAgICAgIHJl
dHVybiAyMTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgOSkpICE9IDApCi0gICAgICAgIHJldHVy
biAyMjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgOCkpICE9IDApCi0gICAgICAgIHJldHVybiAy
MzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgNykpICE9IDApCi0gICAgICAgIHJldHVybiAyNDsK
LSAgICBpZiAoKHggJiB1aW50KDEgPDwgNikpICE9IDApCi0gICAgICAgIHJldHVybiAyNTsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgNSkpICE9IDApCi0gICAgICAgIHJldHVybiAyNjsKLSAgICBp
ZiAoKHggJiB1aW50KDEgPDwgNCkpICE9IDApCi0gICAgICAgIHJldHVybiAyNzsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMykpICE9IDApCi0gICAgICAgIHJldHVybiAyODsKLSAgICBpZiAoKHgg
JiB1aW50KDEgPDwgMikpICE9IDApCi0gICAgICAgIHJldHVybiAyOTsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMSkpICE9IDApCi0gICAgICAgIHJldHVybiAzMDsKLSAgICBpZiAoKHggJiB1aW50
KDEgPDwgMCkpICE9IDApCi0gICAgICAgIHJldHVybiAzMTsKLSAgICByZXR1cm4gMzI7Ci19Ci11
aW50IGZpcnN0Yml0aGlnaChpbnQgeCkgewotICAgIHJldHVybiBmaXJzdGJpdGhpZ2godWludCh4
KSk7Ci19Ci11aW50MiBmaXJzdGJpdGhpZ2godWludDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmly
c3RiaXRoaWdoKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MyBmaXJzdGJpdGhp
Z2godWludDMgeCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJp
dGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWlu
dDQgZmlyc3RiaXRoaWdoKHVpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4
WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmVzdWx0WzNd
ID0gZmlyc3RiaXRoaWdoKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50MiBmaXJz
dGJpdGhpZ2goaW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZp
cnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGZpcnN0Yml0aGlnaChpbnQzIHgpIHsKLSAgICB1
aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmaXJzdGJpdGhp
Z2goeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0aGlnaChpbnQ0
IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRoaWdoKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGlnaCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSBmaXJzdGJpdGhpZ2goeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRoaWdoKHhbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCByY3AgKi8KLWZs
b2F0IHJjcChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIDEgLyB4OwotfQotZmxvYXQyIHJjcChmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHJjcCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IHJjcChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNw
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJjcCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByY3Ao
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCByY3AoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJjcCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSByY3AoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcmNwKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IHJjcCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgcmNwKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiByY3AoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNw
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgcmNwKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gcmNwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
cmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgcmNwKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIHJjcChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3Ao
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gcmNwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByY3Ao
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBy
Y3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJjcCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJj
cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gcmNwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmNw
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJjcCh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgcmNwKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJjcCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSByY3AoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
cmNwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJjcCh4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcmNwKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcmNwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcmNwKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJjcCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSByY3AoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHJjcChmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJjcCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmNwKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNwKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSByY3AoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmNwKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IHJjcCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSByY3AoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gcmNwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJjcCh4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZndpZHRo
ICovCi0KLWZsb2F0IGZ3aWR0aChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGFicyhkZHgoeCkpICsg
YWJzKGRkeSh4KSk7Ci19Ci1mbG9hdDIgZndpZHRoKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZndp
ZHRoKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZndpZHRoKGZsb2F0MyB4
KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZndpZHRoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZ3aWR0aCh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGZ3aWR0aChmbG9hdDQgeCkgewotICAg
IGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZndpZHRoKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGZ3aWR0aCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmd2lkdGgoeFsyXSk7Ci0gICAg
cmVzdWx0WzNdID0gZndpZHRoKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiBmd2lkdGgoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZ3
aWR0aChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBmd2lkdGgoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndp
ZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBmd2lkdGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRo
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBmd2lkdGgoZmxvYXQyeDMg
eCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZndp
ZHRoKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndp
ZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIGZ3aWR0aChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IGZ3aWR0aCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmd2lkdGgoeFszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndpZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmd2lkdGgoeFsyXVsyXSk7
Ci0gICAgcmVzdWx0WzNdWzJdID0gZndpZHRoKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4NCBmd2lkdGgoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZndp
ZHRoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZ3aWR0aCh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBmd2lkdGgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRo
KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBmd2lkdGgoZmxvYXQz
eDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmd2lkdGgo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmd2lkdGgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBmd2lkdGgoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRoKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGZ3aWR0aCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZndpZHRo
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZndp
ZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZndpZHRo
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3aWR0aCh4WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBmd2lkdGgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZndpZHRoKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZ3aWR0aCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1b
M10gPSBmd2lkdGgoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZndpZHRoKHhbM11bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsZXJwICovCi1m
bG9hdCBsZXJwKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHMpIHsKLSAgICByZXR1cm4geCAqICgx
IC0gcykgKyB5ICogczsKLX0KLWZsb2F0MiBsZXJwKGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQy
IHopIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVsw
XSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxlcnAoZmxvYXQzIHgsIGZsb2F0MyB5LCBmbG9hdDMg
eikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBd
LCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGxlcnAoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBsZXJwKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxlcnAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbGVycCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsZXJwKHhb
Ml0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IGxlcnAoeFszXSwgeVszXSwgelszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGxlcnAoZmxvYXQyeDIgeCwgZmxvYXQy
eDIgeSwgZmxvYXQyeDIgeikgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVy
cCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhb
MV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBsZXJwKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHksIGZsb2F0M3gyIHopIHsKLSAgICBmbG9hdDN4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGxlcnAoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSwgZmxvYXQ0eDIg
eikgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1b
MF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJd
WzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0s
IHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGxlcnAoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGxlcnAoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSwg
ZmxvYXQyeDMgeikgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
ZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAo
eFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBd
WzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0s
IHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVsw
XVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJd
LCB6WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbGVycChmbG9hdDN4
MyB4LCBmbG9hdDN4MyB5LCBmbG9hdDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
bGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsZXJw
KHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFsw
XVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJd
LCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlb
Ml1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBsZXJwKGZs
b2F0NHgzIHgsIGZsb2F0NHgzIHksIGZsb2F0NHgzIHopIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVy
cCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsZXJwKHhb
M11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAoeFswXVsy
XSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFdWzJdLCB5
WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0sIHlbMl1b
Ml0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxlcnAoeFszXVsyXSwgeVszXVsyXSwg
elszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGxlcnAoZmxvYXQyeDQg
eCwgZmxvYXQyeDQgeSwgZmxvYXQyeDQgeikgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxl
cnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4
WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1b
M10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxlcnAoeFsxXVszXSwg
eVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGxlcnAo
ZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSwgZmxvYXQzeDQgeikgewotICAgIGZsb2F0M3g0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBs
ZXJwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAo
eFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJd
WzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsZXJwKHhbMF1bM10s
IHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxlcnAoeFsxXVszXSwgeVsx
XVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbGVycCh4WzJdWzNdLCB5WzJdWzNd
LCB6WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbGVycChmbG9hdDR4
NCB4LCBmbG9hdDR4NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGxlcnAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
bGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJw
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsy
XVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFd
LCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsZXJwKHhbMF1bMl0sIHlb
MF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxlcnAoeFsxXVsyXSwgeVsxXVsy
XSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbGVycCh4WzJdWzJdLCB5WzJdWzJdLCB6
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsZXJwKHhbM11bMl0sIHlbM11bMl0sIHpbM11b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGxlcnAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBsZXJwKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IGxlcnAoeFszXVszXSwgeVszXVszXSwgelszXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRpc3RhbmNlICovCi1mbG9hdCBkaXN0
YW5jZShmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1m
bG9hdCBkaXN0YW5jZShmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHgg
LSB5KTsKLX0KLWZsb2F0IGRpc3RhbmNlKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIHJldHVy
biBsZW5ndGgoeCAtIHkpOwotfQotZmxvYXQgZGlzdGFuY2UoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7
Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOTBjMjk5YTJm
MGY4ZTBlYzcwNmQ5MWQzY2ZhY2UxYzg4MDdkNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RydWN0IFN1YnN0cmluZ0xvY2F0
aW9uIHsKLSAgICB1bnNpZ25lZCBzdGFydDsKLSAgICB1bnNpZ25lZCBlbmQ7Ci19OwotCi1IYXNo
TWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+IGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcCgpOwotCi11bnNpZ25lZCBmaXJzdEZ1bmN0aW9uT2Zmc2V0SW5TdGFuZGFyZExpYnJh
cnkoKTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Q0MzMw
ZDAxOTM2NDNhYWJlOTQwZTk5YjA1NjkwM2MxMmZhMzAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xQYXJzZXIuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFN0
YW5kYXJkTGlicmFyeS5oIgotI2luY2x1ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0jaW5jbHVkZSA8cGFsL0d1bnppcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotc3Rh
dGljIFN0cmluZyBkZWNvbXByZXNzQW5kRGVjb2RlU3RhbmRhcmRMaWJyYXJ5KCkKLXsKLSAgICBh
dXRvIGRlY29tcHJlc3NlZFN0YW5kYXJkTGlicmFyeSA9IGd1bnppcChXSExTTFN0YW5kYXJkTGli
cmFyeSwgc2l6ZW9mKFdITFNMU3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoZGVjb21wcmVzc2VkU3RhbmRhcmRMaWJyYXJ5LmRhdGEoKSwgZGVjb21wcmVzc2Vk
U3RhbmRhcmRMaWJyYXJ5LnNpemUoKSk7Ci19Ci0KLWNsYXNzIE5hbWVGaW5kZXIgOiBwdWJsaWMg
VmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgSGFzaFNldDxTdHJpbmc+IHRha2VGdW5jdGlvbk5hbWVz
KCkKLSAgICB7Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIHN0ZDo6
c3dhcChyZXN1bHQsIG1fZnVuY3Rpb25OYW1lcyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2Fs
bEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uTmFtZXMuYWRk
KGNhbGxFeHByZXNzaW9uLm5hbWUoKSk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHBy
ZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9mdW5jdGlvbk5hbWVzOwot
fTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGluY2x1ZGVTdGFuZGFyZExpYnJhcnkoUHJvZ3Jh
bSYgcHJvZ3JhbSwgUGFyc2VyJiBwYXJzZXIsIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0YW5kYXJkTGlicmFyeShk
ZWNvbXByZXNzQW5kRGVjb2RlU3RhbmRhcmRMaWJyYXJ5KCkpOwotICAgIGlmIChwYXJzZUZ1bGxT
dGFuZGFyZExpYnJhcnkpIHsKLSAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJz
ZShwcm9ncmFtLCBzdGFuZGFyZExpYnJhcnkuZ2V0KCksIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBpZiAoIXBh
cnNlUmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0
LmVycm9yKCkpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+PiBzdGFuZGFyZExp
YnJhcnlGdW5jdGlvbk1hcChjb21wdXRlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAoKSk7Ci0K
LSAgICBhdXRvIHN0cmluZ1ZpZXcgPSBTdHJpbmdWaWV3KHN0YW5kYXJkTGlicmFyeS5nZXQoKSku
c3Vic3RyaW5nKDAsIGZpcnN0RnVuY3Rpb25PZmZzZXRJblN0YW5kYXJkTGlicmFyeSgpKTsKLSAg
ICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sIHN0cmluZ1ZpZXcsIFBh
cnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJh
cnkpOwotICAgIGlmICghcGFyc2VSZXN1bHQpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChwYXJzZVJlc3VsdC5lcnJvcigpKTsKLQotICAgIE5hbWVGaW5kZXIgbmFtZUZpbmRlcjsKLSAg
ICBuYW1lRmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0pOwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBmdW5jdGlvbk5hbWVzID0gbmFtZUZpbmRlci50YWtlRnVuY3Rpb25OYW1lcygpOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBhbGxGdW5jdGlvbk5hbWVzOwotICAgIC8vIFRoZSBuYW1lIG9mIGEgY2Fs
bCB0byBhIGNhc3Qgb3BlcmF0b3IgaXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUsIHNvIHdlIGNhbid0
IG1hdGNoIHRoZW0gdXAgY29ycmVjdGx5LgotICAgIC8vIEluc3RlYWQsIGp1c3QgaW5jbHVkZSBh
bGwgY2FzdGluZyBvcGVyYXRvcnMuCi0gICAgZnVuY3Rpb25OYW1lcy5hZGQoIm9wZXJhdG9yIGNh
c3QiX3N0cik7Ci0gICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbiBhdXRob3IgY2Fu
J3Qgd3JpdGUgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhbnl0aGluZyBp
biB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLSAgICAvLyBJZiB0aGV5IGRvIHNvLCB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSBpdCBjb2xsaWRlcywgc28gd2UgaW5jbHVkZSBhbGwgcG90ZW50aWFsIGR1cGxp
Y2F0ZXMgaGVyZSwgYW5kIHRoZSAiY2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMiIHBhc3MgZW5mb3Jj
ZXMgaXQuCi0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkKLSAgICAgICAgZnVuY3Rpb25OYW1lcy5hZGQoZnVuY3Rpb25EZWZp
bml0aW9uLT5uYW1lKCkpOwotICAgIHdoaWxlICghZnVuY3Rpb25OYW1lcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYXV0byBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50ID0gcHJvZ3JhbS5u
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsKLSAgICAgICAgYXV0byBmdW5jdGlv
bkRlZmluaXRpb25zQ291bnQgPSBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IGZ1bmN0aW9uTmFtZXMpIHsKLSAgICAg
ICAgICAgIGlmIChhbGxGdW5jdGlvbk5hbWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmdldCgpLmZpbmQobmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0b3Ig
PT0gc3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuZ2V0KCkuZW5kKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIHN0cmluZ1ZpZXcgPSBTdHJpbmdWaWV3KHN0
YW5kYXJkTGlicmFyeS5nZXQoKSkuc3Vic3RyaW5nKGl0ZXJhdG9yLT52YWx1ZS5zdGFydCwgaXRl
cmF0b3ItPnZhbHVlLmVuZCAtIGl0ZXJhdG9yLT52YWx1ZS5zdGFydCk7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKHN0cmluZ1ZpZXcpOwot
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0ID0gcHJvZ3JhbS5mdW5jdGlv
bkRlZmluaXRpb25zKCkuc2l6ZSgpOwotICAgICAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBh
cnNlci5wYXJzZShwcm9ncmFtLCBzdHJpbmdWaWV3LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJy
YXJ5LCBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgICAgIGlmICgh
cGFyc2VSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNl
UmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpICE9IHN0YXJ0KQot
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIm5vbiBuYXRpdmUgc3RkbGliIGZ1bmN0aW9u
OiAnIiwgbmFtZSwgIiciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFsbEZ1bmN0aW9u
TmFtZXMuYWRkKG5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoIDsgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnNDb3VudCA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMo
KS5zaXplKCk7ICsrbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudCkKLSAgICAgICAgICAg
IG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucygpW25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnRdKTsKLSAgICAgICAgZm9yICgg
OyBmdW5jdGlvbkRlZmluaXRpb25zQ291bnQgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMo
KS5zaXplKCk7ICsrZnVuY3Rpb25EZWZpbml0aW9uc0NvdW50KQotICAgICAgICAgICAgbmFtZUZp
bmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtmdW5jdGlv
bkRlZmluaXRpb25zQ291bnRdKTsKLSAgICAgICAgZnVuY3Rpb25OYW1lcyA9IG5hbWVGaW5kZXIu
dGFrZUZ1bmN0aW9uTmFtZXMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MmYzODI0NzFhNjA0Nzg3YjA3MjQwZjM5
YjYyNzVlNTIyOTVhNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1jbGFzcyBQYXJzZXI7Ci1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lk
LCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJkTGlicmFyeShQcm9ncmFtJiwgUGFyc2VyJiwgYm9vbCBw
YXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU4MzJmZDE3NjRjZDk2YjBiYjVmOGY0MWE4
MmZlNTE5ZmMyOTEwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTENv
bnRpbnVlLmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNM
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91
Z2guaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVt
ZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaENh
c2UuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKLSNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBC
ZWhhdmlvciA6IHVpbnQ4X3QgewotICAgICAgICBSZXR1cm4gPSAxIDw8IDAsCi0gICAgICAgIEJy
ZWFrID0gMSA8PCAxLAotICAgICAgICBDb250aW51ZSA9IDEgPDwgMiwKLSAgICAgICAgRmFsbHRo
cm91Z2ggPSAxIDw8IDMsCi0gICAgICAgIE5vdGhpbmcgPSAxIDw8IDQKLSAgICB9OwotCi0gICAg
T3B0aW9uU2V0PEJlaGF2aW9yPiB0YWtlRnVuY3Rpb25CZWhhdmlvcigpCi0gICAgewotICAgICAg
ICBBU1NFUlQobV9zdGFjay5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHJldHVybiBtX3N0YWNrLnRh
a2VMYXN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpCcmVh
ayB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6RmFsbHRocm91Z2gg
fSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNvbnRpbnVlJikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkNvbnRpbnVlIH0pOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6UmV0dXJuIH0pOwotICAgIH0KLQotICAgIHZv
aWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICAgICAg
aWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1f
c3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAg
ICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZp
b3I6Ok5vdGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IC8vIFRoZSBpbml0aWFsaXphdGlvbiBhbHdheXMgaGFzIGEgYmVoYXZpb3Igb2YgTm90aGluZywg
d2hpY2ggd2UgYWxyZWFkeSBhZGQgdW5jb25kaXRpb25hbGx5IGJlbG93LAotICAgICAgICAvLyBz
byB3ZSBjYW4ganVzdCBpZ25vcmUgdGhlIGluaXRpYWxpemF0aW9uLgotCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChmb3JMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7
Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVtb3ZlKEJl
aGF2aW9yOjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAg
ICAgICAgbV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Oldo
aWxlTG9vcCYgd2hpbGVMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAg
ICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlv
cjo6Q29udGludWUpOwotICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAg
IG1fc3RhY2suYXBwZW5kKGIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hD
YXNlJiBzd2l0Y2hDYXNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQo
c3dpdGNoQ2FzZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVu
dCYgc3dpdGNoU3RhdGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKHN3aXRjaFN0
YXRlbWVudC5zd2l0Y2hDYXNlcygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9zdGFjay5h
cHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIE9wdGlvblNldDxCZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OwotICAg
ICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMo
KSkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgICAg
ICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICAgICAgcmVkdWN0aW9uID0g
cmVkdWN0aW9uIHwgYjsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVkdWN0aW9uLmNvbnRhaW5z
KEJlaGF2aW9yOjpOb3RoaW5nKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlN3aXRj
aCBzdGF0ZW1lbnQgbXVzdCBlbmQgaW4gYSBicmVhay9mYWxsdGhyb3VnaC9yZXR1cm4iLCBzd2l0
Y2hTdGF0ZW1lbnQuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICByZWR1Y3Rpb24ucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAg
IHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkZhbGx0aHJvdWdoKTsKLSAgICAgICAgcmVkdWN0
aW9uLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHJlZHVj
dGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRl
bWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRl
bWVudC5ib2R5KCkpOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBPcHRpb25T
ZXQ8QmVoYXZpb3I+IGJQcmltZTsKLSAgICAgICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkp
IHsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBiUHJpbWUgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgYlByaW1lID0geyBCZWhhdmlvcjo6Tm90aGluZyB9OwotICAgICAgICBt
X3N0YWNrLmFwcGVuZChiIHwgYlByaW1lKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBt
X3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYmxv
Y2suc3RhdGVtZW50cygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQo
eyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIE9wdGlvblNldDxCZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxOyArK2kp
IHsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbaV0p
OwotICAgICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICAgICAgaWYg
KCFiLmNvbnRhaW5zKEJlaGF2aW9yOjpOb3RoaW5nKSkgewotICAgICAgICAgICAgICAgIHNldEVy
cm9yKEVycm9yKCJTdGF0ZW1lbnQgaW5zaWRlIGFuIGlubmVyIGJsb2NrIG11c3QgYmUgcmVhY2hh
YmxlLiIsIGJsb2NrLnN0YXRlbWVudHMoKVtpXS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBiLnJlbW92ZShCZWhh
dmlvcjo6Tm90aGluZyk7Ci0gICAgICAgICAgICBpZiAoYi5jb250YWlucyhCZWhhdmlvcjo6RmFs
bHRocm91Z2gpKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkZhbGx0aHJvdWdo
IG11c3QgYmUgdGhlIGxhc3Qgc3RhdGVtZW50IGluIGEgYmxvY2suIiwgYmxvY2suc3RhdGVtZW50
cygpW2ldLT5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJlZHVjdGlvbiA9IHJlZHVjdGlvbiB8IGI7Ci0gICAgICAg
IH0KLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMoKVtibG9jay5z
dGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMV0pOwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAg
ICAgICBtX3N0YWNrLmFwcGVuZChyZWR1Y3Rpb24gfCBiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKLSAgICB9Ci0K
LSAgICBWZWN0b3I8T3B0aW9uU2V0PEJlaGF2aW9yPj4gbV9zdGFjazsKLX07Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja1N0YXRlbWVudEJlaGF2aW9yKFByb2dyYW0mIHByb2dyYW0pCi17
Ci0gICAgU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjsK
LSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZp
bml0aW9ucygpKSB7Ci0gICAgICAgIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5WaXNpdG9yOjp2
aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAgICBpZiAoc3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLnJlc3VsdCgpOwotICAgICAgICBhdXRvIGJlaGF2aW9yID0gc3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLnRha2VGdW5jdGlvbkJlaGF2aW9yKCk7Ci0gICAgICAgIGlmIChtYXRjaGVzKGZ1
bmN0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCBwcm9ncmFtLmludHJpbnNpY3MoKS52b2lkVHlwZSgp
KSkgewotICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tl
cjo6QmVoYXZpb3I6OlJldHVybik7Ci0gICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgICAgICBpZiAo
YmVoYXZpb3IgIT0gT3B0aW9uU2V0PFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I+
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3Qg
ZW5kIGEgdm9pZCBmdW5jdGlvbiB3aXRoIGEgYnJlYWssIGNvbnRpbnVlLCBvciBmYWxsdGhyb3Vn
aC4iKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoYmVoYXZpb3IgIT0gU3Rh
dGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcjo6UmV0dXJuKQotICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiTm9uLXZvaWQgZnVuY3Rpb25zIG11c3QgcmV0
dXJuIGEgdmFsdWUgb24gYWxsIGNvZGUgcGF0aHMuIikpOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZWVlMDNkNjY0NTRmNmNkMGM2NjM2ODg5MzllMWY4ZmYyN2QwODVkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3Rm
L0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsK
LQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrU3RhdGVtZW50
QmVoYXZpb3IoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiY2M5MGEzNjQwNWEyZWQxNzRkZDM1NjMyZDY2OWE0OTcxMjhi
ZjJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9y
cy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaCIK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBl
LmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgot
I2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVm
aW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldI
TFNMVW5uYW1lZFR5cGVIYXNoLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgRmluZEFsbFR5cGVzIDogcHVibGljIFZpc2l0b3Ig
ewotcHVibGljOgotICAgIHZpcnR1YWwgfkZpbmRBbGxUeXBlcygpID0gZGVmYXVsdDsKLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBtX3VubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyBwb2ludGVyVHlw
ZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQocG9pbnRlclR5cGUpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtl
eSB7IGFycmF5UmVmZXJlbmNlVHlwZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlS
ZWZlcmVuY2VUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBh
cnJheVR5cGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3VubmFtZWRUeXBlcy5hZGQoVW5u
YW1lZFR5cGVLZXkgeyBhcnJheVR5cGUgfSk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5
VHlwZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
biYgZW51bWVyYXRpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5k
TmFtZWRUeXBlKGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0
KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBhcHBlbmROYW1lZFR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIFZp
c2l0b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGFwcGVuZE5hbWVkVHlwZShuYXRpdmVUeXBlRGVjbGFyYXRp
b24pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAg
IH0KLQotICAgIEhhc2hTZXQ8VW5uYW1lZFR5cGVLZXk+IHRha2VVbm5hbWVkVHlwZXMoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobV91bm5hbWVkVHlwZXMpOwotICAgIH0KLQotICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPj4gdGFrZU5hbWVk
VHlwZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobV9uYW1lZFR5cGVzKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmROYW1lZFR5cGUoQVNUOjpOYW1lZFR5cGUm
IHR5cGUpCi0gICAgewotICAgICAgICAvLyBUaGUgd2F5IHdlIHdhbGsgdGhlIEFTVCBlbnN1cmVz
IHdlIHNob3VsZCBuZXZlciB2aXNpdCBhIG5hbWVkIHR5cGUgdHdpY2UuCi0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbmFtZWRUeXBlcykKLSAgICAgICAg
ICAgIEFTU0VSVCgmZW50cnkuZ2V0KCkudW5pZnlOb2RlKCkgIT0gJnR5cGUudW5pZnlOb2RlKCkp
OwotI2VuZGlmCi0gICAgICAgIG1fbmFtZWRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgfQotCi0g
ICAgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4gbV91bm5hbWVkVHlwZXM7Ci0gICAgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+PiBtX25hbWVkVHlwZXM7Ci19Owot
Ci1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBw
cm9ncmFtKQotewotICAgIEZpbmRBbGxUeXBlcyBmaW5kQWxsVHlwZXM7Ci0gICAgZmluZEFsbFR5
cGVzLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICBhdXRvIHVubmFtZWRUeXBlcyA9
IGZpbmRBbGxUeXBlcy50YWtlVW5uYW1lZFR5cGVzKCk7Ci0gICAgYXV0byBuYW1lZFR5cGVzID0g
ZmluZEFsbFR5cGVzLnRha2VOYW1lZFR5cGVzKCk7Ci0KLSAgICBib29sIGlzT3BlcmF0b3IgPSB0
cnVlOwotCi0gICAgZm9yIChhdXRvJiB1bm5hbWVkVHlwZUtleSA6IHVubmFtZWRUeXBlcykgewot
ICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9IHVubmFtZWRUeXBlS2V5LnVubmFtZWRUeXBlKCk7
Ci0gICAgICAgIGF1dG8gbG9jYXRpb24gPSB1bm5hbWVkVHlwZS5jb2RlTG9jYXRpb24oKTsKLQot
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVy
cygpLCAmdW5uYW1lZFR5cGUsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAg
ICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAg
ICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpu
dWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkp
OwotICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZh
dWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0
dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0
Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwg
UGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0uYXBw
ZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3RydWN0
b3IiKSk7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBuYW1lZFR5cGUgOiBuYW1lZFR5cGVzKSB7
Ci0gICAgICAgIGlmIChtYXRjaGVzKG5hbWVkVHlwZSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9p
ZFR5cGUoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlw
ZSkpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxB
U1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpLmlzQXRvbWljKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBhdXRvIGxvY2F0aW9uID0gbmFtZWRUeXBlLmdldCgpLmNvZGVMb2Nh
dGlvbigpOwotCi0gICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCks
IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgU3Ry
aW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBhcmFtZXRlcnM7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24g
Y29weUNvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpB
dHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChs
b2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGli
cmFyeSkpOwotICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3Rvcikp
OwotCi0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nh
c3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSkgewotICAgICAgICAgICAgYXV0byYgbmF0
aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSk7Ci0gICAgICAgICAgICBp
ZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlwZSgpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9u
LCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNl
Ojp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdN
b2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEVycm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YTIyNTUwZWEyZmJkMmJiMjE2MjBkYTAyNWY4MWRhZTFkNGZkYTVkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXpl
Q29uc3RydWN0b3JzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0
aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNTA3MzgyM2M3ZGExZDdh
MTI3ZjNkNTZiYjZmMjA1MWE5ZGZmZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
eW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
c3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAg
Ym9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5p
dGlvbiA6IHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8g
bG9jYXRpb24gPSBlbnVtZXJhdGlvbkRlZmluaXRpb24tPmNvZGVMb2NhdGlvbigpOwotICAgICAg
ICB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24xID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwg
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24p
LCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxl
RGVjbGFyYXRpb24yID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxv
Y2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0
aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7
Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b24yKSk7Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAobG9jYXRpb24sIHByb2dyYW0uaW50cmluc2ljcygpLmJvb2xUeXBlKCkpLCAib3BlcmF0b3I9
PSJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5n
TW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5k
KFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSBvcGVyYXRvcj09IGZvciBl
bnVtIHR5cGUuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byB2
YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFw
KGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
dHlwZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRy
LCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAg
ICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikp
KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNy
ZWF0ZSBjb3B5IGNvbnN0cnVjdG9yIGZvciBlbnVtIHR5cGUuIikpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgewotICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMo
KSwgJmVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0
YW5kYXJkTGlicmFyeSkpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3Zl
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgJ29wZXJhdG9yIGNhc3QnIGZvciBlbnVt
IHR5cGUuIikpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzViZTE0ZWMxM2Jj
NjAwOTRiZmFjZDE1NjQ3N2RhY2QwODAzYTdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVj
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVmlzaXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MGZkNTA4
YzZjYTJkMjQ5Y2ZmMDRlNjI2MWJmZjE1Yzc2MGQ3NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi12b2lkIFZpc2l0b3I6OnZpc2l0KFByb2dyYW0mIHByb2dyYW0pCi17Ci0g
ICAgLy8gVGhlc2UgdmlzaXRpbmcgZnVuY3Rpb25zIG1pZ2h0IGFkZCBuZXcgZ2xvYmFsIHN0YXRl
bWVudHMsIHNvIGRvbid0IHVzZSBmb3JlYWNoIHN5bnRheC4KLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7
ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uc3RydWN0dXJlRGVmaW5p
dGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0
aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0p
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3Jh
bS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClb
aV0pOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRU
eXBlKQotewotICAgIGlmIChpczxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5u
YW1lZFR5cGUpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlw
ZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBl
Pih1bm5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBl
Pih1bm5hbWVkVHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQotewot
ICAgIGlmIChpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7
Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uPihuYW1lZFR5cGUpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbj4obmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
bmFtZWRUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlv
biYgdHlwZURlZmluaXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0
aW9uLnR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQotewotICAgIGZvciAoYXV0byYgc3RydWN0dXJl
RWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRp
b24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBl
KCkpOwotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmlu
aXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChl
bnVtZXJhdGlvbk1lbWJlcik7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0
aW9uKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygp
KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAgIGZvciAoYXV0byYgdHlwZUFy
Z3VtZW50IDogbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotewotICAgIGZvciAoYXV0byYg
dHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJndW1lbnQpOwotICAgIGlmICh0eXBlUmVmZXJlbmNlLm1h
eWJlUmVzb2x2ZWRUeXBlKCkgJiYgaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4odHlwZVJlZmVyZW5j
ZS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3du
Y2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAg
fQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBl
KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5
cGUmPihwb2ludGVyVHlwZSkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+KGFycmF5UmVmZXJlbmNlVHlwZSkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFycmF5VHlwZS50eXBlKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsK
LSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwotICAgIGlm
IChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dCgqc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICBm
b3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocGFyYW1ldGVyKTsKLSAgICBpZiAoZnVuY3Rpb25E
ZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZ1bmN0
aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24p
IHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7Ci0gICAg
fSwgWyZdKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+JiB0eXBlUmVmZXJlbmNlKSB7Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlKTsKLSAgICB9KSwgdHlwZUFyZ3VtZW50
KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5j
ZVR5cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5
cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMp
Ci17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1h
bnRpYyYgYnVpbHRJblNlbWFudGljKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChidWls
dEluU2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNl
U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlc291cmNlU2VtYW50aWMp
OwotICAgIH0sIFsmXShBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYgc3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChz
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlN0YWdlSW5P
dXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOwotICAgIH0pLCBzZW1hbnRpYyk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lv
bikKLXsKLSAgICBjb25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0o
QVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGludGVnZXJMaXRlcmFsKTsKLSAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsKTsKLSAgICB9LCBbJl0oQVNUOjpGbG9hdExp
dGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxvYXRM
aXRlcmFsKTsKLSAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwp
IHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJvb2xlYW5MaXRlcmFsKTsKLSAgICB9LCBb
Jl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KTsKLSAgICB9KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9j
ayYgYXR0cmlidXRlQmxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6
IGF0dHJpYnV0ZUJsb2NrKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25BdHRy
aWJ1dGUpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJikK
LXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKQotewot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRp
YyYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50
ZWdlckxpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsLnR5
cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1
bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZmxvYXRMaXRlcmFsLnR5cGUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpC
b29sZWFuTGl0ZXJhbCYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbnRlZ2Vy
TGl0ZXJhbFR5cGUmIGludGVnZXJMaXRlcmFsVHlwZSkKLXsKLSAgICBpZiAoaW50ZWdlckxpdGVy
YWxUeXBlLm1heWJlUmVzb2x2ZWRUeXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
bnRlZ2VyTGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSkKLXsKLSAgICBpZiAodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUubWF5YmVS
ZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLX0KLQotdm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmIGZsb2F0TGl0ZXJhbFR5cGUpCi17Ci0g
ICAgaWYgKGZsb2F0TGl0ZXJhbFR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKQotewot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9u
QXR0cmlidXRlKQotewotICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkg
ewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQobnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KTsKLSAgICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikKLXsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6
IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVu
dCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0JiBzdGF0ZW1l
bnRMaXN0KQotewotICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogc3RhdGVtZW50TGlzdC5zdGF0
ZW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgc3dp
dGNoIChzdGF0ZW1lbnQua2luZCgpKSB7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6
QmxvY2s6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJsb2NrPihz
dGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2lu
ZDo6QnJlYWs6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJyZWFr
PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6
S2luZDo6Q29udGludWU6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6RG9XaGlsZUxvb3A6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjoKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0
ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdoOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZvckxvb3A6Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpJZjoKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpSZXR1cm46Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN0YXRlbWVudExp
c3Q6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN0YXRlbWVudExp
c3Q+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpTd2l0Y2hDYXNlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
U1Q6OlN0YXRlbWVudDo6S2luZDo6U3dpdGNoOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczoK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpXaGlsZUxvb3A6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJyZWFrJikKLXsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGls
ZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsK
LSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
OkJvb2xlYW5MaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24p
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVm
ZXJlbmNlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWw+
KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFy
cmF5UmVmZXJlbmNlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihl
eHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpEb3Q6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvdEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVz
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
SW5kZXg6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkluZGV4RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVz
c2lvbjo6S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5j
ZT4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+
KGRvdEV4cHJlc3Npb24pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Okdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuYmFzZSgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkp
OwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbiY+KGluZGV4RXhwcmVzc2lvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChleHByZXNzaW9uLmJhc2UoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50LmVmZmVjdGZ1bEV4cHJlc3Npb24oKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpG
b3JMb29wJiBmb3JMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmluaXRp
YWxpemF0aW9uKCkpOwotICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigpKQotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuY29uZGl0aW9uKCkpOwotICAgIGlmIChmb3JMb29wLmlu
Y3JlbWVudCgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuaW5jcmVtZW50
KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwotICAgIGlmIChpZlN0YXRlbWVudC5lbHNl
Qm9keSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5
KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1l
bnQpCi17Ci0gICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCi17Ci0gICAgaWYgKHN3aXRjaENh
c2UudmFsdWUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVl
KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQp
Ci17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAg
ICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KQotewotICAgIGZvciAoYXV0byYgdmFyaWFibGVEZWNsYXJhdGlv
biA6IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRpb25zKCkp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uLmdldCgpKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKLXsKLSAg
ICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xh
cmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVE
ZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0
aWFsaXplcigpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRp
b24uaW5pdGlhbGl6ZXIoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBc3NpZ25t
ZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQotewotICAgIGZvciAoYXV0
byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGFyZ3VtZW50KTsKLSAgICBpZiAoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVy
blR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjYWxsRXhwcmVzc2lvbi5jYXN0
UmV0dXJuVHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVz
c2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6IGNv
bW1hRXhwcmVzc2lvbi5saXN0KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNz
aW9uKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lv
biYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkZXJl
ZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24pCi17Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
JiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ub2xkVmFsdWUoKSk7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFs
dWUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
bmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCi17Ci0gICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkp
OwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNTdjMjU1OTFmNjQxYWU0YmQ3NmFjYjUyNzRmOWI2OGFkN2Q2Y2Y1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZUFyZ3VtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFR5cGVEZWZpbml0aW9uOwotY2xhc3MgU3RydWN0dXJlRGVm
aW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEZ1bmN0aW9uRGVm
aW5pdGlvbjsKLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBOYXRpdmVU
eXBlRGVjbGFyYXRpb247Ci1jbGFzcyBUeXBlUmVmZXJlbmNlOwotY2xhc3MgUG9pbnRlclR5cGU7
Ci1jbGFzcyBBcnJheVJlZmVyZW5jZVR5cGU7Ci1jbGFzcyBBcnJheVR5cGU7Ci1jbGFzcyBTdHJ1
Y3R1cmVFbGVtZW50OwotY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7Ci1jbGFzcyBGdW5jdGlvbkRl
Y2xhcmF0aW9uOwotY2xhc3MgUmVmZXJlbmNlVHlwZTsKLWNsYXNzIENvbnN0YW50RXhwcmVzc2lv
bjsKLWNsYXNzIEJ1aWx0SW5TZW1hbnRpYzsKLWNsYXNzIFJlc291cmNlU2VtYW50aWM7Ci1jbGFz
cyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM7Ci1jbGFzcyBTdGFnZUluT3V0U2VtYW50
aWM7Ci1jbGFzcyBJbnRlZ2VyTGl0ZXJhbDsKLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWw7
Ci1jbGFzcyBGbG9hdExpdGVyYWw7Ci1jbGFzcyBCb29sZWFuTGl0ZXJhbDsKLWNsYXNzIEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbDsKLWNsYXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTsK
LWNsYXNzIEJsb2NrOwotY2xhc3MgU3RhdGVtZW50TGlzdDsKLWNsYXNzIFN0YXRlbWVudDsKLWNs
YXNzIEJyZWFrOwotY2xhc3MgQ29udGludWU7Ci1jbGFzcyBEb1doaWxlTG9vcDsKLWNsYXNzIEV4
cHJlc3Npb247Ci1jbGFzcyBEb3RFeHByZXNzaW9uOwotY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZl
cmVuY2U7Ci1jbGFzcyBJbmRleEV4cHJlc3Npb247Ci1jbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb247Ci1jbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OwotY2xhc3MgRmFsbHRo
cm91Z2g7Ci1jbGFzcyBGb3JMb29wOwotY2xhc3MgSWZTdGF0ZW1lbnQ7Ci1jbGFzcyBSZXR1cm47
Ci1jbGFzcyBTd2l0Y2hDYXNlOwotY2xhc3MgU3dpdGNoU3RhdGVtZW50OwotY2xhc3MgVmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ7Ci1jbGFzcyBXaGlsZUxvb3A7Ci1jbGFzcyBWYXJpYWJs
ZURlY2xhcmF0aW9uOwotY2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb247Ci1jbGFzcyBDYWxsRXhw
cmVzc2lvbjsKLWNsYXNzIENvbW1hRXhwcmVzc2lvbjsKLWNsYXNzIERlcmVmZXJlbmNlRXhwcmVz
c2lvbjsKLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uOwotY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Np
b247Ci1jbGFzcyBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOwotY2xhc3MgTWFrZVBvaW50
ZXJFeHByZXNzaW9uOwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjsKLWNsYXNzIFRl
cm5hcnlFeHByZXNzaW9uOwotY2xhc3MgVmFyaWFibGVSZWZlcmVuY2U7Ci1jbGFzcyBVbm5hbWVk
VHlwZTsKLWNsYXNzIE5hbWVkVHlwZTsKLQotfQotCi1jbGFzcyBWaXNpdG9yIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5WaXNpdG9yKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNzEgQWRkIGEgd2F5IHRvIHZp
c2l0IGEgY29uc3QgUHJvZ3JhbQotCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0KFByb2dyYW0mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6Ok5hbWVkVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlR5cGVEZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpBcnJheVR5cGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVt
ZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OlNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Rmxv
YXRMaXRlcmFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Qm9vbGVhbkxpdGVyYWwm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkJsb2NrJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3Rh
dGVtZW50TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6Q29udGludWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxl
TG9vcCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6RmFsbHRocm91Z2gmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29w
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpTd2l0Y2hDYXNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoU3RhdGVt
ZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRl
cmVmZXJlbmNlRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2lj
YWxFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TG9naWNhbE5vdEV4
cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZVBvaW50ZXJF
eHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNz
aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKTsK
LQotICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhbV9leHBlY3RlZEVycm9yOyB9
Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJlc3VsdCgpIHsgcmV0dXJuIG1fZXhwZWN0ZWRF
cnJvcjsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBjaGVja0Vycm9yQW5kVmlz
aXQoVCYgeCkKLSAgICB7Ci0gICAgICAgIGlmICghaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHZp
c2l0KHgpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIHZvaWQgc2V0RXJyb3IoRXJyb3IgZXJy
b3IpCi0gICAgewotICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKCkpOwotICAgICAgICBtX2V4cGVj
dGVkRXJyb3IgPSBtYWtlVW5leHBlY3RlZChlcnJvcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEV4cGVjdGVkPHZvaWQsIEVycm9yPiBtX2V4cGVjdGVkRXJyb3I7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRkNTg5Y2FmNzY3MjExOWI4YTU0NThiYjU3
YTNiZGVkNmFlZTRlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJHUFUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgotI2luY2x1ZGUgIkpTV2ViR1BVQWRhcHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFUpOwotfQotCi12b2lkIFdlYkdQVTo6cmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25h
bDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYgb3B0aW9ucywgV2ViR1BVQWRhcHRlclByb21p
c2UmJiBkZWZlcnJlZCkgY29uc3QKLXsKLSAgICBhdXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVy
OjpjcmVhdGUoV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgZGVmZXJyZWQucmVzb2x2ZShhZGFwdGVy
LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhiMDUyNDBkMDA2YjNjNDI0YjQ5MDY3YzIzZTE0OTNjYWJkMjMw
ODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBX
ZWJHUFVBZGFwdGVyOwotCi1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zOwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7Ci0KLWNsYXNz
IFdlYkdQVSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVT4gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViR1BVPiBjcmVhdGUoKTsKLQotICAgIHVzaW5nIFdlYkdQVUFkYXB0ZXJQcm9taXNl
ID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxXZWJHUFVBZGFwdGVyPj47Ci0KLSAg
ICB2b2lkIHJlcXVlc3RBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zPiYmLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBX
ZWJHUFUoKSA9IGRlZmF1bHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZTI1ZDg2YTJjYTI0ODlkYjEzMjQz
YjNjNjc1MjBhZGQwOThlN2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50
ZXJmYWNlTmFtZT1HUFUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVSB7
Ci0gICAgUHJvbWlzZTxXZWJHUFVBZGFwdGVyPiByZXF1ZXN0QWRhcHRlcihvcHRpb25hbCBHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmI2Zjk5NGZiMjAzNTRiM2VhOTg5MzIzN2RjYzExMTFiNmVlYjE0Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQWRh
cHRlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURldmljZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoc3Rk
OjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYgb3B0aW9ucykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVBZGFwdGVyKFdURk1vdmUob3B0aW9ucykpKTsKLX0K
LQotV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zKQotICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9u
cykpCi17Ci19Ci0KLXZvaWQgV2ViR1BVQWRhcHRlcjo6cmVxdWVzdERldmljZShEb2N1bWVudCYg
ZG9jdW1lbnQsIERldmljZVJlcXVlc3RQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKLXsKLSAgICBk
b2N1bWVudC5wb3N0VGFzayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewotICAgICAgICBpZiAoYXV0byBkZXZpY2UgPSBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0
ZShjb250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpKSkgewotICAgICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVEZXZpY2UoKmRldmljZSk7Ci0KLSAgICAg
ICAgICAgIHByb21pc2UucmVzb2x2ZShkZXZpY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKLSAgICB9KTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTcxOWNlZDQ2MjQyZmE4YTQxNzFiN2UzZjg1ODFjZWFlNDZlNTk2YS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSURM
VHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIFdlYkdQ
VURldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURl
ZmVycmVkOwotCi1jbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BV
QWRhcHRlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRl
KHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmKTsKLQotICAgIHVzaW5n
IERldmljZVJlcXVlc3RQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxX
ZWJHUFVEZXZpY2U+PjsKLSAgICB2b2lkIHJlcXVlc3REZXZpY2UoRG9jdW1lbnQmLCBEZXZpY2VS
ZXF1ZXN0UHJvbWlzZSYmKSBjb25zdDsKLSAgICAKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlv
bnM7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9u
YWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBtX29wdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDY2MWFiMDA2NDM5MGQ5ZmZhOTIxNDZiZjlhMTkwNjU3Mjg4YzM0MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVBZGFwdGVy
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVBZGFwdGVyIHsKLSAgICAv
LyByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgLy8gcmVhZG9ubHkgYXR0
cmlidXRlIFdlYkdQVUV4dGVuc2lvbnMgZXh0ZW5zaW9uczsKLSAgICAvLyByZWFkb25seSBhdHRy
aWJ1dGUgV2ViR1BVTGltaXRzIGxpbWl0czsgRG9uJ3QgZXhwb3NlIGhpZ2hlciBsaW1pdHMgZm9y
IG5vdy4KLQotICAgIC8vIE1heSByZWplY3Qgd2l0aCBET01FeGNlcHRpb24gIC8vIFRPRE86IERP
TUV4Y2VwdGlvbigiT3BlcmF0aW9uRXJyb3IiKT8KLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFBy
b21pc2U8V2ViR1BVRGV2aWNlPiByZXF1ZXN0RGV2aWNlKC8qR1BVRGV2aWNlRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKi8pOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhmZTFk
ZjE2M2ZjNTVhY2JjYzUxYTc0MjA5MDZmMmRjMTY0Zjg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cC5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BV
QmluZEdyb3VwPiBXZWJHUFVCaW5kR3JvdXA6OmNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwPiYm
IGJpbmRHcm91cCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCaW5kR3JvdXAo
V1RGTW92ZShiaW5kR3JvdXApKSk7Ci19Ci0KLVdlYkdQVUJpbmRHcm91cDo6V2ViR1BVQmluZEdy
b3VwKFJlZlB0cjxHUFVCaW5kR3JvdXA+JiYgYmluZEdyb3VwKQotICAgIDogbV9iaW5kR3JvdXAo
V1RGTW92ZShiaW5kR3JvdXApKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIzMjVm
YjJhZWY1NTQxYjAzNGQyZDkxZTVhNjcxYzVjMjZmYTczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVC
aW5kR3JvdXAuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVCaW5kR3JvdXAg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVCaW5kR3JvdXA+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYkdQVUJpbmRHcm91cD4gY3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXA+JiYpOwot
Ci0gICAgR1BVQmluZEdyb3VwKiBiaW5kR3JvdXAoKSB7IHJldHVybiBtX2JpbmRHcm91cC5nZXQo
KTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVUJpbmRHcm91cChSZWZQdHI8R1BV
QmluZEdyb3VwPiYmKTsKLQotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXA+IG1fYmluZEdyb3VwOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzkzMDI5NDhiNDUzYjNlZTdmOTU2YzY0
YWYzOGI0ZmM5MGU5ZDRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAot
ICAgIEludGVyZmFjZU5hbWU9R1BVQmluZEdyb3VwLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVCaW5kR3JvdXAgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDc4MDAxMDNjOWE3ZTM1ZjQ3NjI2NjUzMWY1MTJhOGNiZTc5ZmIzYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUg
IldlYkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgV2ViR1BV
QmluZGluZ1Jlc291cmNlID0gVmFyaWFudDxSZWZQdHI8V2ViR1BVU2FtcGxlcj4sIFJlZlB0cjxX
ZWJHUFVUZXh0dXJlVmlldz4sIFdlYkdQVUJ1ZmZlckJpbmRpbmc+OwotCi1zdHJ1Y3QgV2ViR1BV
QmluZEdyb3VwQmluZGluZyB7Ci0gICAgdW5zaWduZWQgYmluZGluZzsKLSAgICBXZWJHUFVCaW5k
aW5nUmVzb3VyY2UgcmVzb3VyY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODRmNmFlZWY4MzkzOWFhNTIzNTBkOWMwOWE5YzA1ZGNmZTljMzU2ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiAoV2ViR1BVU2Ft
cGxlciBvciBXZWJHUFVUZXh0dXJlVmlldyBvciBXZWJHUFVCdWZmZXJCaW5kaW5nKSBXZWJHUFVC
aW5kaW5nUmVzb3VyY2U7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nIHsK
LSAgICByZXF1aXJlZCB1MzIgYmluZGluZzsKLSAgICByZXF1aXJlZCBXZWJHUFVCaW5kaW5nUmVz
b3VyY2UgcmVzb3VyY2U7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjljOGVkOTNhMTgwNGMwOTg3OTcxYTllN2ZiMTJhNmEzNTE3Njk0ZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAi
R1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJC
aW5kaW5nVHlwZShjb25zdCBHUFVCdWZmZXIqIGJ1ZmZlciwgY29uc3QgR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZyYgYmluZGluZywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewot
I2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlm
Ci0KLSAgICBzd2l0Y2ggKGJpbmRpbmcudHlwZSkgewotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6
OlVuaWZvcm1CdWZmZXI6Ci0gICAgICAgIGlmICghYnVmZmVyLT5pc1VuaWZvcm0oKSkgewotICAg
ICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXIgcmVzb3VyY2UgZm9yIGJpbmRpbmcg
JXUgZG9lcyBub3QgaGF2ZSBVTklGT1JNIHVzYWdlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5i
aW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTdG9yYWdlQnVmZmVyOgotICAg
ICAgICBpZiAoIWJ1ZmZlci0+aXNTdG9yYWdlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICIlczogR1BVQnVmZmVyIHJlc291cmNlIGZvciBiaW5kaW5nICV1IGRvZXMgbm90IGhhdmUgU1RP
UkFHRSB1c2FnZSEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBMYXlvdXQgYmluZGluZyAldSBpcyBub3Qg
YSBidWZmZXItdHlwZSByZXNvdXJjZSEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQmlu
ZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BV
QmluZEdyb3VwRGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVu
Y3Rpb25OYW1lID0gIkdQVURldmljZTo6Y3JlYXRlQmluZEdyb3VwKCkiOwotCi0gICAgaWYgKCFs
YXlvdXQgfHwgIWxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBJbnZhbGlkIEdQVUJpbmRHcm91cExheW91dCEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGlmIChiaW5kaW5ncy5zaXpl
KCkgIT0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGluZ3NNYXAoKS5zaXplKCkpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNaXNtYXRjaGVkIG51bWJlciBvZiBHUFVCaW5kR3Jv
dXBMYXlvdXRCaW5kaW5ncyBhbmQgR1BVQmluZEdyb3VwQmluZGluZ3MhIiwgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBhdXRvIGxheW91
dE1hcCA9IGxheW91dC0+YmluZEdyb3VwTGF5b3V0KCktPmJpbmRpbmdzTWFwKCk7Ci0KLSAgICBW
ZWN0b3I8R1BVQmluZEdyb3VwQmluZGluZz4gYmluZEdyb3VwQmluZGluZ3M7Ci0gICAgYmluZEdy
b3VwQmluZGluZ3MucmVzZXJ2ZUNhcGFjaXR5KGJpbmRpbmdzLnNpemUoKSk7Ci0KLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIGJpbmRpbmcgOiBiaW5kaW5ncykgewotICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gbGF5b3V0TWFwLmZpbmQoYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
ID09IGxheW91dE1hcC5lbmQoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nICV1IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQh
IiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGF1dG8gbGF5b3V0QmluZGlu
ZyA9IGl0ZXJhdG9yLT52YWx1ZTsKLQotICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2Ft
cGxlcikgLT4gc3RkOjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAg
IGlmICghc2FtcGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICAgICAgYXV0byBncHVTYW1wbGVyID0gc2FtcGxlci0+c2FtcGxlcigpOwotICAgICAgICAg
ICAgaWYgKCFncHVTYW1wbGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1h
a2VSZWYoKmdwdVNhbXBsZXIpKTsKLSAgICAgICAgfSwgW10oY29uc3QgUmVmUHRyPFdlYkdQVVRl
eHR1cmVWaWV3PiYgdmlldykgLT4gc3RkOjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsK
LSAgICAgICAgICAgIGlmICghdmlldykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwotICAgICAg
ICAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1h
a2VSZWYoKnRleHR1cmUpKTsKLSAgICAgICAgfSwgWyZsYXlvdXRCaW5kaW5nLCBmdW5jdGlvbk5h
bWVdIChXZWJHUFVCdWZmZXJCaW5kaW5nIGJ1ZmZlckJpbmRpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8
R1BVQmluZGluZ1Jlc291cmNlPiB7Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZlckJpbmRpbmcuYnVm
ZmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5idWZmZXIoKTsKLSAgICAgICAgICAg
IGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgICAgIGlmICghdmFsaWRhdGVCdWZmZXJCaW5kaW5nVHlwZShidWZmZXIsIGxheW91dEJp
bmRpbmcuZXh0ZXJuYWxCaW5kaW5nLCBmdW5jdGlvbk5hbWUpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVC
aW5kaW5nUmVzb3VyY2U+KEdQVUJ1ZmZlckJpbmRpbmcgeyBtYWtlUmVmKCpidWZmZXIpLCBidWZm
ZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH0pOwotICAgICAgICB9KTsKLQot
ICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZSA9IFdURjo6dmlzaXQoYmluZGluZ1Jlc291cmNl
VmlzaXRvciwgYmluZGluZy5yZXNvdXJjZSk7Ci0gICAgICAgIGlmICghYmluZGluZ1Jlc291cmNl
KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgcmVzb3VyY2UgZm9yIGJp
bmRpbmcgJXUhIiwgZnVuY3Rpb25OYW1lLCBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy5i
aW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICBiaW5kR3JvdXBCaW5kaW5ncy51bmNoZWNrZWRBcHBlbmQoR1BVQmluZEdyb3VwQmlu
ZGluZyB7IGJpbmRpbmcuYmluZGluZywgV1RGTW92ZShiaW5kaW5nUmVzb3VyY2UudmFsdWUoKSkg
fSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVUJpbmRHcm91cERlc2NyaXB0b3IgeyBtYWtlUmVm
KCpsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSwgV1RGTW92ZShiaW5kR3JvdXBCaW5kaW5ncykg
fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyNTIx
MDhlMDVlZTdjZGU3NWQ3NTcwNWVmZDRkNjFhN2FlNTIyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiV2ViR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91
cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2NyaXB0
b3I7Ci0KLXN0cnVjdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9wdGlv
bmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0
b3IoKSBjb25zdDsKLQotICAgIFJlZlB0cjxjb25zdCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGxh
eW91dDsKLSAgICBWZWN0b3I8V2ViR1BVQmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI3NWM2MzI1
OTAwMjk5MWExNjZkYTUwMGVkMjJiNzRmODVhNWE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rp
b25hcnkgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0IGxheW91dDsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxXZWJHUFVCaW5kR3Jv
dXBCaW5kaW5nPiBiaW5kaW5nczsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDNkMmY4NzkwMTRlNTYzZGY5MTUzNjA1YmIwZTMwNWY2M2ZkMTc1Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJpbmRHcm91cExheW91dD4gV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0OjpjcmVhdGUoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJiBsYXlvdXQp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQmluZEdyb3VwTGF5b3V0KFdURk1v
dmUobGF5b3V0KSkpOwotfQotCi1XZWJHUFVCaW5kR3JvdXBMYXlvdXQ6OldlYkdQVUJpbmRHcm91
cExheW91dChSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmIGxheW91dCkKLSAgICA6IG1fYmlu
ZEdyb3VwTGF5b3V0KFdURk1vdmUobGF5b3V0KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU1Y2M1YTc1MTJiYzA3YWE1Yjk1Mjg2MDdhZjJjZDg0MWE5MjIwMDMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQmluZEdyb3VwTGF5b3V0IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJH
UFVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiYmKTsK
LQotICAgIGNvbnN0IEdQVUJpbmRHcm91cExheW91dCogYmluZEdyb3VwTGF5b3V0KCkgY29uc3Qg
eyByZXR1cm4gbV9iaW5kR3JvdXBMYXlvdXQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQoUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4mJik7
Ci0KLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBtX2JpbmRHcm91cExheW91dDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
TGF5b3V0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVlM2UyNGYxMmEzYWU4
MWFkY2VjYzVlNWUxOGYwYmE3OGIxMjdmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBMYXlvdXQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUJpbmRHcm91cExheW91dCwKLSAg
ICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQmluZEdyb3VwTGF5b3V0IHsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA2NjI2NDk0MThiNDY4ZGI0ZjA5MzAyODZiNzFi
MjNjMjM5NzdhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmUHRy
PEdQVUJ1ZmZlcj4mJiBidWZmZXIsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlcnJv
clNjb3BlcykpOwotfQotCi1XZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihSZWZQdHI8R1BVQnVm
ZmVyPiYmIGJ1ZmZlciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotICAgIDogR1BVT2Jq
ZWN0QmFzZShtYWtlUmVmKGVycm9yU2NvcGVzKSkKLSAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKLXsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6Om1hcFJlYWRBc3luYyhCdWZmZXJNYXBw
aW5nUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxs
YmFjayhXVEZNb3ZlKHByb21pc2UpLCB0cnVlKTsKLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6Om1h
cFdyaXRlQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJiBwcm9taXNlKQotewotICAgIHJlamVj
dE9yUmVnaXN0ZXJQcm9taXNlQ2FsbGJhY2soV1RGTW92ZShwcm9taXNlKSwgZmFsc2UpOwotfQot
Ci12b2lkIFdlYkdQVUJ1ZmZlcjo6dW5tYXAoKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0RXJy
b3JQcmVmaXgoIkdQVUJ1ZmZlci51bm1hcCgpOiAiKTsKLQotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIGVycm9yU2NvcGVzKCkuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJh
dGlvbjogaW52YWxpZCBHUFVCdWZmZXIhIik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+
dW5tYXAoJmVycm9yU2NvcGVzKCkpOwotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6ZGVzdHJveSgp
Ci17Ci0gICAgZXJyb3JTY29wZXMoKS5zZXRFcnJvclByZWZpeCgiR1BVQnVmZmVyLmRlc3Ryb3ko
KTogIik7Ci0KLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBlcnJvclNjb3BlcygpLmdlbmVy
YXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIG1fYnVmZmVyLT5kZXN0cm95KCZlcnJvclNjb3BlcygpKTsKLSAgICAgICAgbV9idWZmZXIg
PSBudWxscHRyOwotICAgIH0KLX0KLQotdm9pZCBXZWJHUFVCdWZmZXI6OnJlamVjdE9yUmVnaXN0
ZXJQcm9taXNlQ2FsbGJhY2soQnVmZmVyTWFwcGluZ1Byb21pc2UmJiBwcm9taXNlLCBib29sIGlz
UmVhZCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KG1ha2VTdHJpbmcoIkdQ
VUJ1ZmZlci5tYXAiLCBpc1JlYWQgPyAiUmVhZCIgOiAiV3JpdGUiLCAiQXN5bmMoKTogIikpOwot
Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBlcnJvclNjb3BlcygpLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb246IGludmFsaWQgR1BVQnVmZmVyISIpOwotICAg
ICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9i
dWZmZXItPnJlZ2lzdGVyTWFwcGluZ0NhbGxiYWNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcHJvdGVjdGVkRXJyb3JTY29wZXMgPSBtYWtlUmVmKGVycm9yU2NvcGVzKCkpXSAoSlNDOjpB
cnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpIG11dGFibGUgewotICAgICAgICBpZiAoYXJyYXlCdWZm
ZXIpCi0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoKmFycmF5QnVmZmVyKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0byBoaXQgdGhpcyBj
b2RlIHBhdGggaW4gcmVzcG9uc2UgdG8gYW4gdW5tYXAgY2FsbCwgd2hlcmUKLSAgICAgICAgICAg
IC8vIHRoZSBBcnJheUJ1ZmZlciB3aWxsIGRlZmluaXRlbHkgYmUgbnVsbCwgYW5kIHRodXMgYW4g
b3V0IG9mIG1lbW9yeSBlcnJvciBtYWtlcyBubyBzZW5zZS4KLSAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNjYKLSAgICAgICAgICAgIHBy
b3RlY3RlZEVycm9yU2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0
T2ZNZW1vcnkpOwotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKLSAgICAgICAgfQotICAg
IH0sIGlzUmVhZCwgZXJyb3JTY29wZXMoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmVlZTIw
OTJhM2RlZGY3YjczNTI2ZDllZDhhMzI5MjNhZWY0YjdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZl
ci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlclVzYWdlLmgiCi0jaW5jbHVkZSAiR1BVT2JqZWN0QmFz
ZS5oIgotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlwdG9yOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJ
RExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVUJ1ZmZlciA6
IHB1YmxpYyBHUFVPYmplY3RCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUJ1
ZmZlcj4gY3JlYXRlKFJlZlB0cjxHUFVCdWZmZXI+JiYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAg
ICBHUFVCdWZmZXIqIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgY29u
c3QgR1BVQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQot
Ci0gICAgdXNpbmcgQnVmZmVyTWFwcGluZ1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURM
SW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXI+PjsKLSAgICB2b2lkIG1hcFJlYWRBc3luYyhCdWZm
ZXJNYXBwaW5nUHJvbWlzZSYmKTsKLSAgICB2b2lkIG1hcFdyaXRlQXN5bmMoQnVmZmVyTWFwcGlu
Z1Byb21pc2UmJik7Ci0gICAgdm9pZCB1bm1hcCgpOwotICAgIHZvaWQgZGVzdHJveSgpOwotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVUJ1ZmZlcihSZWZQdHI8R1BVQnVmZmVyPiYmLCBH
UFVFcnJvclNjb3BlcyYpOwotCi0gICAgdm9pZCByZWplY3RPclJlZ2lzdGVyUHJvbWlzZUNhbGxi
YWNrKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYsIGJvb2wpOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZl
cj4gbV9idWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMGE5MGM0MTE3YzFmMDQ3
Y2NkNGM5ZTE1NDM4MmU3ODUxMjM2ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVCdWZmZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cK
LV0gaW50ZXJmYWNlIFdlYkdQVUJ1ZmZlciB7Ci0gICAgUHJvbWlzZTxBcnJheUJ1ZmZlcj4gbWFw
UmVhZEFzeW5jKCk7Ci0gICAgUHJvbWlzZTxBcnJheUJ1ZmZlcj4gbWFwV3JpdGVBc3luYygpOwot
ICAgIHVuZGVmaW5lZCB1bm1hcCgpOwotCi0gICAgdW5kZWZpbmVkIGRlc3Ryb3koKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZDhiOGM4MGY5ZDBlZjhmZmU1NGNj
MDQ2ZjYwNjgzZTZjNjdhNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGlu
Zy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3Qg
V2ViR1BVQnVmZmVyQmluZGluZyB7Ci0gICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gYnVmZmVyOwot
ICAgIHVpbnQ2NF90IG9mZnNldDsKLSAgICB1aW50NjRfdCBzaXplOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZDgyNmRkZjZhMGY2ZWI4NGU5OTVlNTJjNWEyYTU3
YmNiN2YzOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1d
IGRpY3Rpb25hcnkgV2ViR1BVQnVmZmVyQmluZGluZyB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVQnVm
ZmVyIGJ1ZmZlcjsKLSAgICB1NjQgb2Zmc2V0ID0gMDsKLSAgICByZXF1aXJlZCB1NjQgc2l6ZTsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTEwNTExNzc2ZDg3
ZWI1MjcxODc1NTIyNjAzNTM4MDM5ZTFmYzY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmUHRyPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQ
VUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Ci19Ci0KLVdlYkdQVUNvbW1hbmRCdWZm
ZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVy
KQotICAgIDogbV9jb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNhMWRhNGVhM2MwOWJjZDk3YTdjODZkNzZjZWI4YjAw
OWJmZTM0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0g
ICAgR1BVQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFuZEJ1
ZmZlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRy
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1f
Y29tbWFuZEJ1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
YWUyZjJkY2JjYjJiMTU3NmExZjE4ZWUzYmE2MjAwY2Y1N2JlNTgyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbW1hbmRC
dWZmZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRCdWZm
ZXIgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQzZTQ3
ZDcwNTZlNTE2ZDBkNDk2MmNiZTNhODhmMDA1MzlmNWFhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5k
RW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5j
bHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBX
ZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdAot
ewotICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCBidWZmZXIgZm9yIGNvcHkhIik7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICByZXR1cm4gR1BVQnVmZmVyQ29weVZpZXcgeyBt
YWtlUmVmKCpidWZmZXItPmJ1ZmZlcigpKSwgKnRoaXMgfTsKLX0KLQotc3RkOjpvcHRpb25hbDxH
UFVUZXh0dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4
dHVyZUNvcHlWaWV3KCkgY29uc3QKLXsKLSAgICBpZiAoIXRleHR1cmUgfHwgIXRleHR1cmUtPnRl
eHR1cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6IElu
dmFsaWQgdGV4dHVyZSBmb3IgY29weSEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJl
dHVybiBHUFVUZXh0dXJlQ29weVZpZXcgeyBtYWtlUmVmKCp0ZXh0dXJlLT50ZXh0dXJlKCkpLCAq
dGhpcyB9OwotfQotCi1SZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IFdlYkdQVUNvbW1hbmRFbmNv
ZGVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSkp
OwotfQotCi1XZWJHUFVDb21tYW5kRW5jb2Rlcjo6V2ViR1BVQ29tbWFuZEVuY29kZXIoUmVmUHRy
PEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotICAgIDogbV9jb21tYW5kQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKLXsKLX0KLQotUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVD
b21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0g
ZGVzY3JpcHRvci50cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpOwotICAgIGlmICgh
Z3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpj
cmVhdGUobnVsbHB0cik7Ci0KLSAgICBhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6dHJ5Q3JlYXRlKG1ha2VSZWYoKm1fY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoKmdwdURlc2Ny
aXB0b3IpKTsKLSAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShXVEZN
b3ZlKGVuY29kZXIpKTsKLX0KLQotUmVmPFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gV2ViR1BV
Q29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoKQotewotICAgIGlmICghbV9jb21tYW5k
QnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVn
aW5Db21wdXRlUGFzcygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuIFdl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBhdXRv
IGVuY29kZXIgPSBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRyeUNyZWF0ZShtYWtlUmVmKCptX2Nv
bW1hbmRCdWZmZXIpKTsKLSAgICByZXR1cm4gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVh
dGUoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNv
cHlCdWZmZXJUb0J1ZmZlcihXZWJHUFVCdWZmZXImIHNyYywgdWludDY0X3Qgc3JjT2Zmc2V0LCBX
ZWJHUFVCdWZmZXImIGRzdCwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKQotewot
ICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVD
b21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghc3JjLmJ1ZmZlcigpIHx8ICFkc3Qu
YnVmZmVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpj
b3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBHUFVCdWZmZXIhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAg
IG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlclRvQnVmZmVyKG1ha2VSZWYoKnNyYy5idWZmZXIo
KSksIHNyY09mZnNldCwgbWFrZVJlZigqZHN0LmJ1ZmZlcigpKSwgZHN0T2Zmc2V0LCBzaXplKTsK
LX0KLQotdm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBXZWJHUFVCdWZmZXJDb3B5VmlldyYgc3JjQnVmZmVyLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29w
eVZpZXcmIGRzdFRleHR1cmUsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGlmICgh
bV9jb21tYW5kQnVmZmVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5j
b2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBzcmNCdWZmZXIudHJ5
Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gZHN0
VGV4dHVyZS50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1QnVm
ZmVyVmlldyB8fCAhZ3B1VGV4dHVyZVZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJ
WE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5
QnVmZmVyVG9UZXh0dXJlKFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBXVEZNb3ZlKCpncHVUZXh0
dXJlVmlldyksIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4
dHVyZVRvQnVmZmVyKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjVGV4dHVyZSwgY29u
c3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNp
emUpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKCk6IEludmFsaWQgb3Bl
cmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1VGV4dHVyZVZp
ZXcgPSBzcmNUZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8g
Z3B1QnVmZmVyVmlldyA9IGRzdEJ1ZmZlci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwot
Ci0gICAgaWYgKCFncHVUZXh0dXJlVmlldyB8fCAhZ3B1QnVmZmVyVmlldykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2Nv
bW1hbmRCdWZmZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcp
LCBXVEZNb3ZlKCpncHVCdWZmZXJWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFu
ZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5Vmll
dyYgc3JjLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50
M0QmIHNpemUpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGdwdVNy
Y1ZpZXcgPSBzcmMudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0byBncHVE
c3RWaWV3ID0gZHN0LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFn
cHVTcmNWaWV3IHx8ICFncHVEc3RWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhN
RTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weVRl
eHR1cmVUb1RleHR1cmUoV1RGTW92ZSgqZ3B1U3JjVmlldyksIFdURk1vdmUoKmdwdURzdFZpZXcp
LCBzaXplKTsKLX0KLSAgICAKLVJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6ZmluaXNoKCkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlciB8fCBtX2NvbW1h
bmRCdWZmZXItPmlzRW5jb2RpbmdQYXNzKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQ
VUNvbW1hbmRFbmNvZGVyOjpmaW5pc2goKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IHJldHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgfQotICAg
IC8vIFBhc3NlcyB0aGUgcmVmZXJlbmNlZCBHUFVDb21tYW5kQnVmZmVyIHRvIHRoZSBXZWJHUFVD
b21tYW5kQnVmZmVyLCBpbnZhbGlkYXRpbmcgdGhpcyBXZWJHUFVDb21tYW5kRW5jb2Rlci4KLSAg
ICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG1fY29tbWFuZEJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kRW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmUx
ODRhMTE0ZjJkZGRmZjkwYmUzMzI4ZjVkMWU2MDc0NWNiNzNlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcjsKLWNsYXNz
IFdlYkdQVVRleHR1cmU7Ci0KLXN0cnVjdCBHUFVFeHRlbnQzRDsKLXN0cnVjdCBXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3IDogR1BVQnVm
ZmVyQ29weVZpZXdCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiB0
cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdlYkdQVUJ1
ZmZlcj4gYnVmZmVyOwotfTsKLQotc3RydWN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyA6IEdQVVRl
eHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3
PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBjb25zdDsKLQotICAgIFJlZlB0cjxXZWJH
UFVUZXh0dXJlPiB0ZXh0dXJlOwotfTsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEVuY29kZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gewotcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1
ZmZlcj4mJik7Ci0KLSAgICBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGJlZ2luUmVuZGVy
UGFzcyhjb25zdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYpOwotICAgIFJlZjxXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXI+IGJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICB2b2lkIGNvcHlCdWZm
ZXJUb0J1ZmZlcihXZWJHUFVCdWZmZXImLCB1aW50NjRfdCBzcmNPZmZzZXQsIFdlYkdQVUJ1ZmZl
ciYsIHVpbnQ2NF90IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVm
ZmVyVG9UZXh0dXJlKGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4
dHVyZUNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJl
VG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVQnVmZmVy
Q29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1cmVUb1Rl
eHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNv
cHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAgICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4gZmluaXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tbWFuZEVuY29kZXIoUmVmUHRy
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1f
Y29tbWFuZEJ1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVmZDIyZTA0ODQ4ZDI4NTRiOGY1YzEzMjQ1YzQ2MjE2ODg2MjI5MTMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5
cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVCdWZmZXJDb3B5VmlldwotXSBkaWN0aW9uYXJ5
IEdQVUJ1ZmZlckNvcHlWaWV3IHsKLSAgICByZXF1aXJlZCBXZWJHUFVCdWZmZXIgYnVmZmVyOwot
ICAgIHU2NCBvZmZzZXQgPSAwOwotICAgIHJlcXVpcmVkIHUzMiByb3dQaXRjaDsKLSAgICByZXF1
aXJlZCB1MzIgaW1hZ2VIZWlnaHQ7Ci19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BVVGV4
dHVyZUNvcHlWaWV3Ci1dIGRpY3Rpb25hcnkgR1BVVGV4dHVyZUNvcHlWaWV3IHsKLSAgICByZXF1
aXJlZCBXZWJHUFVUZXh0dXJlIHRleHR1cmU7Ci0gICAgdTMyIG1pcExldmVsID0gMDsKLSAgICB1
MzIgYXJyYXlMYXllciA9IDA7Ci0gICAgR1BVT3JpZ2luM0Qgb3JpZ2luOyAvLyB7eDogMCwgeTog
MCwgejogMH0KLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRl
cmZhY2VOYW1lPUdQVUNvbW1hbmRFbmNvZGVyLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVy
ZmFjZSBXZWJHUFVDb21tYW5kRW5jb2RlciB7Ci0gICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIg
YmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwot
ICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0KLSAgICB1
bmRlZmluZWQgY29weUJ1ZmZlclRvQnVmZmVyKAotICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAot
ICAgICAgICB1NjQgc3JjT2Zmc2V0LAotICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAotICAgICAg
ICB1NjQgZHN0T2Zmc2V0LAotICAgICAgICB1NjQgc2l6ZSk7Ci0KLSAgICB1bmRlZmluZWQgY29w
eUJ1ZmZlclRvVGV4dHVyZSgKLSAgICAgICAgR1BVQnVmZmVyQ29weVZpZXcgc291cmNlLAotICAg
ICAgICBHUFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNE
IGNvcHlTaXplKTsKLQotICAgIHVuZGVmaW5lZCBjb3B5VGV4dHVyZVRvQnVmZmVyKAotICAgICAg
ICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBk
ZXN0aW5hdGlvbiwKLSAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgdW5kZWZp
bmVkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291
cmNlLAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQ
VUV4dGVudDNEIGNvcHlTaXplKTsKLQotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIgZmluaXNoKCk7
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFj
ZmE3ODhjODZiYzkxYjhiMDczYTZkNWIzZDU1MTU3NzI3MjNjY2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUNvbXB1dGVQYXNz
RW5jb2Rlcj4gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkdQVUNvbXB1dGVQYXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKSk7Ci19Ci0KLVdlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlcjo6V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFJlZlB0cjxHUFVDb21w
dXRlUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IG1fcGFzc0VuY29kZXIgeyBXVEZNb3Zl
KGVuY29kZXIpIH0KLXsKLX0KLQotdm9pZCBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBp
cGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYg
KCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmICghcGlwZWxpbmUuY29tcHV0ZVBpcGVsaW5lKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52
YWxpZCBwaXBlbGluZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bhc3NFbmNv
ZGVyLT5zZXRQaXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5jb21wdXRlUGlwZWxpbmUoKSkpOwot
fQotCi12b2lkIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2godW5zaWduZWQgeCwg
dW5zaWduZWQgeSwgdW5zaWduZWQgeikKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goKTogSW52
YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLSAgICBtX3Bhc3NFbmNvZGVyLT5kaXNwYXRjaCh4
LCB5LCB6KTsKLX0KLQotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6cGFzc0VuY29kZXIoKQotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdl
dCgpOwotfQotCi1jb25zdCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc0Vu
Y29kZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYWVkYzEyZTJmYzMyOGQ5YTk3NjE4YjVjOTBlMzUzOWJmNDNlNzcyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUNvbXB1dGVQ
YXNzRW5jb2RlcjsKLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwotY2xhc3MgV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lOwotCi1jbGFzcyBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIgOiBw
dWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbXB1dGVQ
YXNzRW5jb2Rlcj4mJik7Ci0KLSAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVUNvbXB1
dGVQaXBlbGluZSYpOwotICAgIHZvaWQgZGlzcGF0Y2godW5zaWduZWQgeCwgdW5zaWduZWQgeSwg
dW5zaWduZWQgeik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFJl
ZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+JiYpOwotCi0gICAgR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgZmluYWw7Ci0gICAgY29uc3QgR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BV
Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX3Bhc3NFbmNvZGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ2Yzk0ODdjZDE2NjI5Mzg4NGJhZGU5NGI1
MzA5NmIwNjBiOGM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbXB1dGVQYXNzRW5jb2RlciwKLSAgICBKU0dlbmVy
YXRlVG9KU09iamVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyIDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIHVu
ZGVmaW5lZCBzZXRQaXBlbGluZShXZWJHUFVDb21wdXRlUGlwZWxpbmUgcGlwZWxpbmUpOwotICAg
IHVuZGVmaW5lZCBkaXNwYXRjaCh1MzIgeCwgdTMyIHksIHUzMiB6KTsKLQotICAgIC8vIFRPRE8g
YWRkIG1pc3NpbmcgY29tbWFuZHMKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTBmZmEyODBiOWNlOGQ3NDYxOGE2ODA3MjljYTY4MDUwODE2MDM4Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5o
IgotI2luY2x1ZGUgIkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgot
I2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBXZWJHUFVD
b21wdXRlUGlwZWxpbmU6OmNyZWF0ZShXZWJHUFVEZXZpY2UmIGRldmljZSwgUmVmUHRyPEdQVUNv
bXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBX
ZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lKGRldmljZSwgV1RGTW92ZShwaXBl
bGluZSksIGVycm9yU2NvcGVzLCBXVEZNb3ZlKGNvbXB1dGVTaGFkZXIpKSk7Ci19Ci0KLVdlYkdQ
VUNvbXB1dGVQaXBlbGluZTo6V2ViR1BVQ29tcHV0ZVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2
aWNlLCBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3Bl
cyYgZXJyb3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRl
cikKLSAgICA6IFdlYkdQVVBpcGVsaW5lKGRldmljZSwgZXJyb3JTY29wZXMpCi0gICAgLCBtX2Nv
bXB1dGVQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZVNoYWRlcihX
VEZNb3ZlKGNvbXB1dGVTaGFkZXIpKQotewotfQotCi1XZWJHUFVDb21wdXRlUGlwZWxpbmU6On5X
ZWJHUFVDb21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lOjpjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17
Ci0gICAgaWYgKG1fY29tcHV0ZVNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgY29uc3QgYXV0byYg
Y29tcHV0ZVNvdXJjZSA9IG1fY29tcHV0ZVNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAg
ICBtX2NvbXB1dGVTaGFkZXIubW9kdWxlID0gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoR1BV
U2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRldmljZSgpLCB7IGNvbXB1dGVTb3VyY2Ug
fSksIGNvbXB1dGVTb3VyY2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6cmVjb21waWxlKGNv
bnN0IFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChtX2NvbXB1dGVQaXBlbGluZSAm
JiBtX2NvbXB1dGVTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGlmIChhdXRvKiBncHVDb21wdXRl
U2hhZGVyTW9kdWxlID0gbV9jb21wdXRlU2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpIHsKLSAgICAg
ICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2UobWFrZVJl
ZigqZ3B1Q29tcHV0ZVNoYWRlck1vZHVsZSksIHsgbV9jb21wdXRlU2hhZGVyLmVudHJ5UG9pbnQg
fSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9jb21wdXRlUGlwZWxpbmUtPnJlY29tcGlsZShkZXZp
Y2UuZGV2aWNlKCksIFdURk1vdmUoY29tcHV0ZVN0YWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Yjg0NzEzNTJlMjgyYTRiZWQ4OWQ2ZDg3YWI4MmJiZTBkOWQ4ODA0YS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgR1BV
UGlwZWxpbmU7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLWNs
YXNzIFdlYkdQVVNoYWRlck1vZHVsZTsKLQotY2xhc3MgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGZp
bmFsIDogcHVibGljIFdlYkdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJH
UFVDb21wdXRlUGlwZWxpbmUoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tcHV0ZVBpcGVs
aW5lPiBjcmVhdGUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4mJiwg
R1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIGNvbXB1dGVTaGFk
ZXIpOwotCi0gICAgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVQaXBlbGluZSgp
OyB9Ci0gICAgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lKiBjb21wdXRlUGlwZWxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2NvbXB1dGVQaXBlbGluZS5nZXQoKTsgfQotICAgIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IGNvbXB1dGVTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVTaGFk
ZXIubW9kdWxlOyB9Ci0KLSAgICBib29sIGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVE
ZXZpY2UmKTsKLSAgICBib29sIHJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKTsKLQotcHJp
dmF0ZToKLSAgICBXZWJHUFVDb21wdXRlUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgUmVmUHRyPEdQ
VUNvbXB1dGVQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hh
ZGVyRGF0YSYmIGNvbXB1dGVTaGFkZXIpOwotCi0gICAgUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGlu
ZT4gbV9jb21wdXRlUGlwZWxpbmU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0
b3IgcmVjb21waWxhdGlvbi4KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX2NvbXB1
dGVTaGFkZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0VCR1BVUElQRUxJTkUoV2ViQ29yZTo6V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLCBp
c0NvbXB1dGVQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWEyY2UyZjQyOWM3NTZiYzliYmQw
ZjhkNzliMmIzM2JjNmM0MDBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBl
bGluZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUNv
bXB1dGVQaXBlbGluZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lIHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGRiN2QzNTg4YjdmMWFmODIwMzBiNDlhODUxMTEw
ODFmOTFiMzU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
PiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAg
ICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0gbGF5b3V0ID8gbWFrZVJlZlB0cihsYXlvdXQtPnBpcGVs
aW5lTGF5b3V0KCkpIDogbnVsbHB0cjsKLQotICAgIGF1dG8gY29tcHV0ZSA9IGNvbXB1dGVTdGFn
ZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWNv
bXB1dGUpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVFcnJvcigiR1BVRGV2aWNlOjpj
cmVhdGVDb21wdXRlUGlwZWxpbmUoKTogSW52YWxpZCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0
dXJuIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0
KSwgV1RGTW92ZSgqY29tcHV0ZSkgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmViN2VmMzY5NDJhMmE5NmI2OTdiMDQ4NmJiODU1
ZTAwZTNmM2U4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVz
OwotCi1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHRyeUNy
ZWF0ZUdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmKSBjb25zdDsK
LQotICAgIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2U7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjFiYzY3M2M5NWUyODIyYjVlZWI2ZWRjMzFhZmZkOGY2NmIzODExYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIHJlcXVpcmVkIFdlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciBjb21wdXRlU3RhZ2U7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJlYmU3M2Y1N2MwNmMxY2QwMDJkYjU1OTM1NWQ4Y2QzNzZmYmYyNDkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMy
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cC5oIgotI2luY2x1ZGUg
IkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGlu
ZS5oIgotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2lu
Y2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVUZXh0
dXJlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01Db252
ZXJ0QnVmZmVyU291cmNlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNp
bmNsdWRlICJKU0dQVU91dE9mTWVtb3J5RXJyb3IuaCIKLSNpbmNsdWRlICJKU0dQVVZhbGlkYXRp
b25FcnJvci5oIgotI2luY2x1ZGUgIkpTV2ViR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cC5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRH
cm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVy
QmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyLmgiCi0jaW5jbHVkZSAi
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJXZWJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5l
LmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2lu
Y2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVT
d2FwQ2hhaW4uaCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHUFVEZXZpY2UpOwotCi1Mb2Nr
IFdlYkdQVURldmljZTo6c19pbnN0YW5jZXNMb2NrOwotCi1SZWZQdHI8V2ViR1BVRGV2aWNlPiBX
ZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBS
ZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQotewotICAgIGlmIChhdXRvIGRldmlj
ZSA9IEdQVURldmljZTo6dHJ5Q3JlYXRlKGFkYXB0ZXItPm9wdGlvbnMoKSkpIHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKGNvbnRleHQsIFdURk1vdmUo
YWRhcHRlciksIG1ha2VSZWYoKmRldmljZSkpKTsKLSAgICAgICAgZGV2aWNlLT5zZXRFcnJvclNj
b3BlcyhyZXN1bHQtPm1fZXJyb3JTY29wZXMuY29weVJlZigpKTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUhhc2hTZXQ8V2ViR1BVRGV2
aWNlKj4mIFdlYkdQVURldmljZTo6aW5zdGFuY2VzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2VzOwotICAgIHJldHVybiBpbnN0
YW5jZXM7Ci19Ci0KLUxvY2smIFdlYkdQVURldmljZTo6aW5zdGFuY2VzTG9jaygpCi17Ci0gICAg
cmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKLX0KLQotV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZpY2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+
JiYgYWRhcHRlciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UpCi0gICAgOiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkKLSAgICAsIG1fYWRhcHRlcihXVEZNb3ZlKGFkYXB0ZXIpKQot
ICAgICwgbV9kZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotICAgICwgbV9lcnJvclNjb3BlcyhHUFVF
cnJvclNjb3Blczo6Y3JlYXRlKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAo
R1BVRXJyb3ImJiBlcnJvcikgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICBk
aXNwYXRjaFVuY2FwdHVyZWRFcnJvcihXVEZNb3ZlKGVycm9yKSk7Ci0gICAgfSkpCi17Ci0gICAg
QVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpOwotCi0gICAgewot
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGluc3Rh
bmNlcygpLmFkZCh0aGlzKTsKLSAgICB9Ci19Ci0KLVdlYkdQVURldmljZTo6fldlYkdQVURldmlj
ZSgpCi17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURl
dmljZSgqdGhpcyk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHUFVQaXBl
bGluZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJH
UFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSA9
PSB0aGlzKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIGFueSBXZWJHUFVQaXBl
bGluZSBmcm9tIHRoZSBpbnN0YW5jZXMgbGlzdCwgYXMgdGhleSBtYXkgc3RpbGwgZXhpc3QuCi0g
ICAgICAgICAgICAgICAgLy8gT25seSByZW1vdmUgdGhlIGFzc29jaWF0aW9uIHdpdGggYSBXZWJH
UFUgZGV2aWNlLgotICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFp
bnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7Ci0gICAgfQotfQot
Ci1SZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVC
dWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29wZXMt
PnNldEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQnVmZmVyKCk6ICIpOwotCi0gICAgYXV0
byBidWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IsIEdQVUJ1ZmZl
ck1hcHBlZE9wdGlvbjo6Tm90TWFwcGVkLCBtX2Vycm9yU2NvcGVzKTsKLSAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBtX2Vycm9yU2NvcGVzKTsKLX0KLQot
VmVjdG9yPEpTQzo6SlNWYWx1ZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXJNYXBwZWQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgR1BVQnVmZmVyRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJv
clByZWZpeCgiR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCgpOiAiKTsKLQotICAgIEpTQzo6
SlNWYWx1ZSB3cmFwcGVkQXJyYXlCdWZmZXIgPSBKU0M6OmpzTnVsbCgpOwotCi0gICAgYXV0byBi
dWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IsIEdQVUJ1ZmZlck1h
cHBlZE9wdGlvbjo6SXNNYXBwZWQsIG1fZXJyb3JTY29wZXMpOwotICAgIGlmIChidWZmZXIpIHsK
LSAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGJ1ZmZlci0+bWFwT25DcmVhdGlvbigpOwotICAg
ICAgICB3cmFwcGVkQXJyYXlCdWZmZXIgPSB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgYXJyYXlC
dWZmZXIpOwotICAgIH0KLQotICAgIGF1dG8gd2ViQnVmZmVyID0gV2ViR1BVQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpLCBtX2Vycm9yU2NvcGVzKTsKLSAgICBhdXRvIHdyYXBwZWRXZWJC
dWZmZXIgPSB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgd2ViQnVmZmVyKTsKLQotICAgIHJldHVy
biB7IHdyYXBwZWRXZWJCdWZmZXIsIHdyYXBwZWRBcnJheUJ1ZmZlciB9OwotfQotCi1SZWY8V2Vi
R1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29wZXMtPnNldEVy
cm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlVGV4dHVyZSgpOiAiKTsKLQotICAgIGF1dG8gdGV4
dHVyZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBXZWJHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSk7Ci19Ci0KLVJlZjxXZWJH
UFVTYW1wbGVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2FtcGxlckRl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBzYW1wbGVyID0gbV9kZXZp
Y2UtPnRyeUNyZWF0ZVNhbXBsZXIoZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFdlYkdQVVNhbXBs
ZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZXIpKTsKLX0KLQotUmVmPFdlYkdQVUJpbmRHcm91cExh
eW91dD4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIGxheW91
dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoZGVzY3JpcHRvcik7Ci0gICAg
cmV0dXJuIFdlYkdQVUJpbmRHcm91cExheW91dDo6Y3JlYXRlKFdURk1vdmUobGF5b3V0KSk7Ci19
Ci0KLVJlZjxXZWJHUFVQaXBlbGluZUxheW91dD4gV2ViR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGlu
ZUxheW91dChjb25zdCBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
IGNvbnN0Ci17Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0g
ICAgICAgIHJldHVybiBXZWJHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKG51bGxwdHIpOwotICAg
IAotICAgIGF1dG8gbGF5b3V0ID0gbV9kZXZpY2UtPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KFdURk1v
dmUoKmdwdURlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OmNy
ZWF0ZShXVEZNb3ZlKGxheW91dCkpOwotfQotCi1SZWY8V2ViR1BVQmluZEdyb3VwPiBXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKSBjb25zdAotewotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3Iu
dHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRv
cikKLSAgICAgICAgcmV0dXJuIFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKG51bGxwdHIpOwotCi0g
ICAgYXV0byBiaW5kR3JvdXAgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQmluZEdyb3VwKCpncHVEZXNj
cmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLSAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwOjpjcmVh
dGUoV1RGTW92ZShiaW5kR3JvdXApKTsKLX0KLQotUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2Vi
R1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUg
dmFsaWRhdGVkIGhlcmU/Ci0gICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlU2hh
ZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7
Ci0gICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFdURk1vdmUobW9kdWxlKSwg
ZGVzY3JpcHRvci5jb2RlKTsKLX0KLQotUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVE
ZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZp
eCgiR1BVRGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKCk6ICIpOwotCi0gICAgYXV0byBncHVE
ZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IobV9lcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1
cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgbnVsbHB0ciwgbV9lcnJvclNj
b3BlcywgeyB9LCB7IH0pOwotCi0gICAgYXV0byBncHVQaXBlbGluZSA9IG1fZGV2aWNlLT50cnlD
cmVhdGVSZW5kZXJQaXBlbGluZSgqZ3B1RGVzY3JpcHRvciwgbV9lcnJvclNjb3Blcyk7Ci0KLSAg
ICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSB2ZXJ0ZXhTaGFkZXIgPSB7IGRlc2NyaXB0b3Iu
dmVydGV4U3RhZ2UubW9kdWxlLCBkZXNjcmlwdG9yLnZlcnRleFN0YWdlLmVudHJ5UG9pbnQgfTsK
LQotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIGZyYWdtZW50U2hhZGVyOwotICAgIGlm
IChkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UpCi0gICAgICAgIGZyYWdtZW50U2hhZGVyID0geyBk
ZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2UudmFsdWUoKS5tb2R1bGUsIGRlc2NyaXB0b3IuZnJhZ21l
bnRTdGFnZS52YWx1ZSgpLmVudHJ5UG9pbnQgfTsKLQotICAgIGF1dG8gd2ViR1BVUGlwZWxpbmUg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGdwdVBpcGVsaW5l
KSwgbV9lcnJvclNjb3BlcywgV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpLCBXVEZNb3ZlKGZyYWdtZW50
U2hhZGVyKSk7Ci0gICAgaWYgKHdlYkdQVVBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKnRoaXMsIHdl
YkdQVVBpcGVsaW5lLmdldCgpKTsKLSAgICByZXR1cm4gd2ViR1BVUGlwZWxpbmU7Ci19Ci0KLVJl
ZjxXZWJHUFVDb21wdXRlUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lKGNvbnN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17
Ci0gICAgbV9lcnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVDb21w
dXRlUGlwZWxpbmUoKTogIik7Ci0KLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9y
LnRyeUNyZWF0ZUdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IobV9lcnJvclNjb3Blcyk7Ci0g
ICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUoKnRoaXMsIG51bGxwdHIsIG1fZXJyb3JTY29wZXMsIHsgfSk7Ci0KLSAgICBh
dXRvIGdwdVBpcGVsaW5lID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqZ3B1
RGVzY3JpcHRvciwgbV9lcnJvclNjb3Blcyk7Ci0KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVy
RGF0YSBjb21wdXRlU2hhZGVyID0geyBkZXNjcmlwdG9yLmNvbXB1dGVTdGFnZS5tb2R1bGUsIGRl
c2NyaXB0b3IuY29tcHV0ZVN0YWdlLmVudHJ5UG9pbnQgfTsKLQotICAgIGF1dG8gd2ViR1BVUGlw
ZWxpbmUgPSBXZWJHUFVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShncHVQ
aXBlbGluZSksIG1fZXJyb3JTY29wZXMsIFdURk1vdmUoY29tcHV0ZVNoYWRlcikpOwotICAgIGlm
ICh3ZWJHUFVQaXBlbGluZS0+aXNWYWxpZCgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKCp0aGlzLCB3ZWJHUFVQaXBlbGluZS5nZXQo
KSk7Ci0gICAgcmV0dXJuIHdlYkdQVVBpcGVsaW5lOwotfQotCi1SZWY8V2ViR1BVQ29tbWFuZEVu
Y29kZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoKSBjb25zdAotewotICAg
IGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVDb21tYW5kQnVmZmVyKCk7
Ci0gICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoV1RGTW92ZShjb21tYW5k
QnVmZmVyKSk7Ci19Ci0KLVJlZjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1ZXVlKQotICAgICAgICBtX3F1ZXVlID0gV2ViR1BVUXVl
dWU6OmNyZWF0ZShtX2RldmljZS0+dHJ5R2V0UXVldWUoKSk7Ci0KLSAgICByZXR1cm4gbWFrZVJl
ZigqbV9xdWV1ZS5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViR1BVRGV2aWNlOjpwb3BFcnJvclNjb3Bl
KEVycm9yUHJvbWlzZSYmIHByb21pc2UpCi17Ci0gICAgU3RyaW5nIGZhaWxNZXNzYWdlOwotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yID0gbV9lcnJvclNjb3Blcy0+cG9wRXJyb3JT
Y29wZShmYWlsTWVzc2FnZSk7Ci0gICAgaWYgKGZhaWxNZXNzYWdlLmlzRW1wdHkoKSkKLSAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKGVycm9yKTsKLSAgICBlbHNlCi0gICAgICAgIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiR1BVRGV2aWNlOjpwb3BFcnJvclNjb3Bl
KCk6ICIgKyBmYWlsTWVzc2FnZSB9KTsKLX0KLQotLy8gRXJyb3JzIHJlcG9ydGVkIHZpYSB0aGUg
dmFsaWRhdGlvbiBlcnJvciBldmVudCBzaG91bGQgYWxzbyBhcHBlYXIgaW4gdGhlIGNvbnNvbGUg
YXMgd2FybmluZ3MuCi1zdGF0aWMgdm9pZCBwcmludFZhbGlkYXRpb25FcnJvclRvQ29uc29sZShH
UFVFcnJvciYgZXJyb3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+Pihl
cnJvcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdmFsaWRhdGlvbkVycm9yID0gV1RG
OjpnZXQ8UmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4+KGVycm9yKTsKLSAgICBpZiAoIXZhbGlk
YXRpb25FcnJvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBtZXNzYWdlID0gdmFsaWRh
dGlvbkVycm9yLT5tZXNzYWdlKCk7Ci0gICAgYXV0byBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwotCi0gICAg
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUoY29u
c29sZU1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXZWJHUFVEZXZpY2U6OmRpc3BhdGNoVW5jYXB0dXJl
ZEVycm9yKEdQVUVycm9yJiYgZXJyb3IpCi17Ci0gICAgcHJpbnRWYWxpZGF0aW9uRXJyb3JUb0Nv
bnNvbGUoZXJyb3IsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0KLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtlcnJvciA9IFdURk1vdmUoZXJyb3IpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBkaXNwYXRjaEV2ZW50KEdQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVuY2FwdHVyZWRlcnJvckV2ZW50
LCBXVEZNb3ZlKGVycm9yKSkpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlhYjA5
MmY5NjYxZGFjMjNiNjEwMTU1OThmOGMyNjhiYTIyMWM2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Bl
cy5oIgotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgot
I2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBKU1ZhbHVlOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU91dE9mTWVtb3J5RXJyb3I7Ci1jbGFz
cyBHUFVWYWxpZGF0aW9uRXJyb3I7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xh
c3MgV2ViR1BVQmluZEdyb3VwOwotY2xhc3MgV2ViR1BVQmluZEdyb3VwTGF5b3V0OwotY2xhc3Mg
V2ViR1BVQnVmZmVyOwotY2xhc3MgV2ViR1BVQ29tbWFuZEVuY29kZXI7Ci1jbGFzcyBXZWJHUFVD
b21wdXRlUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dDsKLWNsYXNzIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOwotY2xhc3MgV2ViR1BVU2FtcGxlcjsKLWNsYXNzIFdlYkdQVVNoYWRl
ck1vZHVsZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLWNsYXNzIFdlYkdQVVRleHR1cmU7Ci0K
LXN0cnVjdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVUJ1ZmZlckRl
c2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVVGV4dHVy
ZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKLXN0cnVjdCBX
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Ci1z
dHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVFcnJv
ckZpbHRlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURl
ZmVycmVkOwotCi11c2luZyBFcnJvcklETFVuaW9uID0gSURMVW5pb248SURMSW50ZXJmYWNlPEdQ
VU91dE9mTWVtb3J5RXJyb3I+LCBJRExJbnRlcmZhY2U8R1BVVmFsaWRhdGlvbkVycm9yPj47Ci11
c2luZyBFcnJvclByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8RXJyb3JJ
RExVbmlvbj4+OwotCi1jbGFzcyBXZWJHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJH
UFVEZXZpY2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Ci0gICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJHUFVEZXZpY2UpOwotcHVibGljOgotICAgIHZpcnR1YWwgfldl
YkdQVURldmljZSgpOwotCi0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IHRyeUNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYpOwot
Ci0gICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFV
SVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc0xv
Y2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9jayk7Ci0KLSAgICBjb25zdCBXZWJH
UFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9Ci0g
ICAgR1BVRGV2aWNlJiBkZXZpY2UoKSB7IHJldHVybiBtX2RldmljZS5nZXQoKTsgfQotICAgIGNv
bnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0K
LQotICAgIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNj
cmlwdG9yJikgY29uc3Q7Ci0gICAgVmVjdG9yPEpTQzo6SlNWYWx1ZT4gY3JlYXRlQnVmZmVyTWFw
cGVkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJikgY29u
c3Q7Ci0gICAgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVy
ZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8V2ViR1BVU2FtcGxlcj4gY3JlYXRlU2FtcGxl
cihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYpIGNvbnN0OwotCi0gICAgUmVmPFdlYkdQVUJp
bmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IGNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYp
IGNvbnN0OwotICAgIFJlZjxXZWJHUFVCaW5kR3JvdXA+IGNyZWF0ZUJpbmRHcm91cChjb25zdCBX
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBSZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVy
UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgUmVm
PFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKLQotICAgIFJlZjxXZWJHUFVDb21tYW5kRW5j
b2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29kZXIoKSBjb25zdDsKLQotICAgIFJlZjxXZWJHUFVRdWV1
ZT4gZ2V0UXVldWUoKSBjb25zdDsKLQotICAgIHZvaWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JG
aWx0ZXIgZmlsdGVyKSB7IG1fZXJyb3JTY29wZXMtPnB1c2hFcnJvclNjb3BlKGZpbHRlcik7IH0K
LSAgICB2b2lkIHBvcEVycm9yU2NvcGUoRXJyb3JQcm9taXNlJiYpOwotCi0gICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJH
UFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVy
PiYmLCBSZWY8R1BVRGV2aWNlPiYmKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBXZWJHUFVEZXZpY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCBkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihH
UFVFcnJvciYmKTsKLQotICAgIHN0YXRpYyBMb2NrIHNfaW5zdGFuY2VzTG9jazsKLQotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotICAgIFJl
Zjxjb25zdCBXZWJHUFVBZGFwdGVyPiBtX2FkYXB0ZXI7Ci0gICAgUmVmPEdQVURldmljZT4gbV9k
ZXZpY2U7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViR1BVUXVldWU+IG1fcXVldWU7Ci0KLSAgICBS
ZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29wZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVjN2I0NmQ0NWQ3OTY1OGQwMzEwYmFkNGFhMzBjMzRkZTFmMzVlYjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVm
IHNlcXVlbmNlPGFueT4gR1BVTWFwcGVkQnVmZmVyOyAgLy8gW0dQVUJ1ZmZlciwgQXJyYXlCdWZm
ZXJdCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVEZXZpY2UsCi0gICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVURldmljZSA6IEV2
ZW50VGFyZ2V0IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVy
OwotCi0gICAgV2ViR1BVQnVmZmVyIGNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIEdQVU1hcHBlZEJ1ZmZlciBj
cmVhdGVCdWZmZXJNYXBwZWQoR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBX
ZWJHUFVUZXh0dXJlIGNyZWF0ZVRleHR1cmUoR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpcHRv
cik7Ci0gICAgV2ViR1BVU2FtcGxlciBjcmVhdGVTYW1wbGVyKEdQVVNhbXBsZXJEZXNjcmlwdG9y
IGRlc2NyaXB0b3IpOwotCi0gICAgV2ViR1BVQmluZEdyb3VwTGF5b3V0IGNyZWF0ZUJpbmRHcm91
cExheW91dChHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdl
YkdQVVBpcGVsaW5lTGF5b3V0IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVCaW5kR3JvdXAgY3JlYXRlQmlu
ZEdyb3VwKFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICBXZWJH
UFVTaGFkZXJNb2R1bGUgY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRlUmVuZGVy
UGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAg
IFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIC8vIEZJWE1FOiBDdXJyZW50
bHksIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciBpcyBhbiBlbXB0eSBkaWN0aW9uYXJ5Lgot
ICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVyIGNyZWF0ZUNvbW1hbmRFbmNvZGVyKC8qR1BVQ29tbWFu
ZEVuY29kZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IqLyk7Ci0KLSAgICBXZWJHUFVRdWV1ZSBnZXRR
dWV1ZSgpOwotCi0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAgLy8gcmVhZG9ubHkg
YXR0cmlidXRlIFdlYkdQVUV4dGVuc2lvbnMgZXh0ZW5zaW9uczsKLSAgICAvLyByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVTGltaXRzIGxpbWl0czsKLQotICAgIC8vIFdlYkdQVUZlbmNlIGNyZWF0
ZUZlbmNlKFdlYkdQVUZlbmNlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQotICAgIC8vIGF0dHJp
YnV0ZSBXZWJHUFVMb2dDYWxsYmFjayBvbkxvZzsKLSAgICAvLyBXZWJHUFVPYmplY3RTdGF0dXNR
dWVyeSBnZXRPYmplY3RTdGF0dXMoU3RhdHVzYWJsZU9iamVjdCBzdGF0dXNhYmxlT2JqZWN0KTsK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2VFcnJvclNjb3Blcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2VFcnJvclNjb3Blcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MzEx
MDBkYjU0NTEzODc5NDQ3NTZjMGZiMDFmZDg4MmEzMDFhODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZp
Y2VFcnJvclNjb3Blcy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVy
cm9yRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBXZWJHUFVEZXZpY2VF
cnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9y
RmlsdGVyIGZpbHRlcikKLXsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoZmlsdGVyKTsKLX0K
LQotdm9pZCBXZWJHUFVEZXZpY2VFcnJvclNjb3Blczo6cG9wRXJyb3JTY29wZShXZWJHUFVEZXZp
Y2UmIGRldmljZSwgRXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBkZXZpY2UucG9wRXJy
b3JTY29wZShXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMjBmMDdhYmUzOThiZjlhNzM0ZDQ0NmFmNTg5NDUzYzBkYjBjMTA5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotZW51bSBjbGFzcyBHUFVFcnJvckZpbHRlcjsKLQotY2xhc3MgV2ViR1BVRGV2aWNl
RXJyb3JTY29wZXMgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHB1c2hFcnJvclNjb3BlKFdl
YkdQVURldmljZSYsIEdQVUVycm9yRmlsdGVyKTsKLSAgICBzdGF0aWMgdm9pZCBwb3BFcnJvclNj
b3BlKFdlYkdQVURldmljZSYsIEVycm9yUHJvbWlzZSYmKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYzYwMmZhYjBlMmRmZmUyYjZkYTQxMjZhMjkw
ODZkNTM2NmRhNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgKEdQVU91dE9mTWVtb3J5RXJyb3Ig
b3IgR1BVVmFsaWRhdGlvbkVycm9yKSBHUFVFcnJvcjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PVdl
YkdQVURldmljZUVycm9yU2NvcGVzCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdlYkdQVURldmljZSB7
Ci0gICAgdW5kZWZpbmVkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcik7Ci0g
ICAgUHJvbWlzZTxHUFVFcnJvcj8+IHBvcEVycm9yU2NvcGUoKTsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVy
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0NDM0MzI0ZDQ1YzMzNTc0MDMx
ZmFhMmFiODVhZTMwNmNjM2JiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFdmVu
dEhhbmRsZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRCeT1X
ZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIKLV0gcGFydGlhbCBpbnRlcmZhY2UgV2ViR1BVRGV2aWNl
IHsKLSAgICBbRXhwb3NlZD1XaW5kb3ddIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251bmNhcHR1
cmVkZXJyb3I7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGI3ODEzMzBjNjY0
MjRiNTRhYzM4MTdiYTZkZDg1ODYzOTAzMzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUxvY2sgV2Vi
R1BVUGlwZWxpbmU6OnNfaW5zdGFuY2VzTG9jazsKLQotSGFzaE1hcDxXZWJHUFVQaXBlbGluZSos
IFdlYkdQVURldmljZSo+JiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+
PiBpbnN0YW5jZXM7Ci0gICAgcmV0dXJuIGluc3RhbmNlczsKLX0KLQotTG9jayYgV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlc0xvY2soKQotewotICAgIHJldHVybiBzX2luc3RhbmNlc0xvY2s7Ci19
Ci0KLVdlYkdQVVBpcGVsaW5lOjpXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotICAgIDogR1BVT2JqZWN0QmFzZShtYWtlUmVm
KGVycm9yU2NvcGVzKSkKLSAgICAsIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRldmljZS5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2Nr
KCkgfTsKLSAgICAgICAgaW5zdGFuY2VzKCkuYWRkKHRoaXMsICZkZXZpY2UpOwotICAgIH0KLX0K
LQotV2ViR1BVUGlwZWxpbmU6On5XZWJHUFVQaXBlbGluZSgpCi17Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKCp0aGlzKTsKLQotICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICBBU1NF
UlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMoKS5yZW1v
dmUodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIFdlYkdQVVBpcGVsaW5lOjpjb250ZXh0RGVzdHJv
eWVkKCkKLXsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BV
UGlwZWxpbmUoKnRoaXMpOwotCi0gICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRl
eHREZXN0cm95ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODRjYmM3YWZhYWIyZWE4
MTNmN2U1NjRhYmUxOWJlYWU2NGMxNzllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJHUFVPYmplY3RCYXNlLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIFdlYkdQVURldmljZTsKLQot
Y2xhc3MgV2ViR1BVUGlwZWxpbmUgOiBwdWJsaWMgR1BVT2JqZWN0QmFzZSwgcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVQaXBl
bGluZSgpOwotCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZp
Y2UqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKLSAg
ICBzdGF0aWMgTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5j
ZXNMb2NrKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9
IDA7Ci0KLSAgICBzdHJ1Y3QgU2hhZGVyRGF0YSB7Ci0gICAgICAgIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IG1vZHVsZTsKLSAgICAgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Ci0gICAgfTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBjbG9uZVNoYWRlck1vZHVsZXMoY29uc3QgV2ViR1BVRGV2aWNlJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJikgPSAw
OwotCi0gICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7Ci0KLXByb3RlY3RlZDoKLSAg
ICBXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBHUFVFcnJvclNjb3BlcyYpOwotCi1wcml2
YXRlOgotICAgIHN0YXRpYyBMb2NrIHNfaW5zdGFuY2VzTG9jazsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQVVBJUEVM
SU5FKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpIHsgcmV0dXJuIHBpcGVsaW5lLnByZWRp
Y2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2OGEwYjg0NWU0Mjg5MGM1OTIzY2RmZGQ0OGUwOGRhMTU3ZDcyOGUwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAg
ICBSZWZQdHI8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzMmM3MDQzOWVhMWUyNDhkYjAzYWJi
MDEwNmY2NjI3NDE3MWExNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgV2ViR1BVUGlwZWxpbmVMYXlvdXQ/IGxheW91
dCA9IG51bGw7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MGI1ZDRjYjRmOWYxOGZkZDg4NzM3NjkwMGJiNTEzZGU4ZTJiMTJjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlw
ZWxpbmVMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBXZWJHUFVQaXBlbGluZUxheW91dDo6Y3Jl
YXRlKFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlvdXQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR1BVUGlwZWxpbmVMYXlvdXQoV1RGTW92ZShsYXlvdXQpKSk7Ci19Ci0K
LVdlYkdQVVBpcGVsaW5lTGF5b3V0OjpXZWJHUFVQaXBlbGluZUxheW91dChSZWZQdHI8R1BVUGlw
ZWxpbmVMYXlvdXQ+JiYgbGF5b3V0KQotICAgIDogbV9waXBlbGluZUxheW91dChXVEZNb3ZlKGxh
eW91dCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1NmY4OWRj
ZGUxMWJhOTQzZWFhODZjYzkzMjBjYmVkMjcyMDkzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZUxheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VVBpcGVsaW5lTGF5b3V0LmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVQaXBl
bGluZUxheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVQaXBlbGluZUxheW91dD4gY3JlYXRlKFJlZlB0
cjxHUFVQaXBlbGluZUxheW91dD4mJik7Ci0KLSAgICBHUFVQaXBlbGluZUxheW91dCogcGlwZWxp
bmVMYXlvdXQoKSB7IHJldHVybiBtX3BpcGVsaW5lTGF5b3V0LmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViR1BVUGlwZWxpbmVMYXlvdXQoUmVmUHRyPEdQVVBpcGVsaW5lTGF5
b3V0PiYmKTsKLQotICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4gbV9waXBlbGluZUxheW91
dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZUxheW91dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZUxheW91dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDg0NWM3MDZl
OTFlZmRlZDRiZjIwZGQ0ZGQ3MGI2MzAzYWE4MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVBpcGVsaW5lTGF5b3V0LAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVQaXBlbGluZUxheW91dCB7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGMxOGMyOGViMTU0MWNjY2JiOWEwYmU4MGRlNmM0MjNjYzVjMDI4NWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGQ6Om9wdGlv
bmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yOjp0cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IoKSBjb25zdAotewot
ICAgIFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4gZ3B1TGF5b3V0czsKLSAg
ICBncHVMYXlvdXRzLnJlc2VydmVDYXBhY2l0eShiaW5kR3JvdXBMYXlvdXRzLnNpemUoKSk7Ci0g
ICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBsYXlvdXQgOiBiaW5kR3JvdXBMYXlvdXRzKSB7Ci0g
ICAgICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSB7Ci0gICAg
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dCgpOiBJ
bnZhbGlkIEdQVUJpbmRHcm91cExheW91dCEiKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGdwdUxheW91dHMudW5jaGVja2Vk
QXBwZW5kKG1ha2VSZWYoKmxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpKTsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciB7IFdURk1vdmUoZ3B1TGF5
b3V0cykgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgzNGM3OTU0ZjM3N2FhMmE3OTI3N2JkNTRhMDk2N2E5NzI2OTM0NjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIAotc3RydWN0IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKLQot
c3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgc3RkOjpvcHRpb25h
bDxHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcigpIGNvbnN0OwotCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVCaW5kR3JvdXBM
YXlvdXQ+PiBiaW5kR3JvdXBMYXlvdXRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWZlNTUyYThkYWMyNGQ0ZGMxMjgyOTBk
YjBjYTUzZTE1NzljMGQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8V2ViR1BV
QmluZEdyb3VwTGF5b3V0PiBiaW5kR3JvdXBMYXlvdXRzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0M2NhNzE0OTNiOTA2
NzNkODQ3YmI1ZWU3YjQzZDk1MTRiNTU2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwYXNzRW5j
b2RlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
cjo6ZW5kUGFzcygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBwYXNzRW5jb2RlcigpLT5lbmRQYXNzKCk7Ci19Ci0KLXZvaWQgV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgV2ViR1BVQmlu
ZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgaWYgKCFwYXNzRW5jb2RlcigpKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6
IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIE1h
eGltdW0gbnVtYmVyIG9mIGJpbmQgZ3JvdXBzIHN1cHBvcnRlZCBpbiBXZWIgR1BVLgotICAgIGlm
IChpbmRleCA+PSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgaW5kZXghIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKCFiaW5kR3JvdXAuYmluZEdyb3VwKCkpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52
YWxpZCBXZWJHUFVCaW5kR3JvdXAhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8g
RklYTUU6IEFueSB2YWxpZGF0aW9uIChlLmcuIGluZGV4IGR1cGxpY2F0ZXMsIG5vdCBpbiBwaXBl
bGluZSBsYXlvdXQpLgotICAgIHBhc3NFbmNvZGVyKCktPnNldEJpbmRHcm91cChpbmRleCwgKmJp
bmRHcm91cC5iaW5kR3JvdXAoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTY1ZjUwYTQzMjMzYjI2MTU5ZDU1Nzc2ZjYwMDM2ODAzMWQx
ZWI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7
Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXA7Ci0KLWNsYXNzIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKLQotICAgIHZvaWQgZW5kUGFzcygpOwotICAgIHZvaWQgc2V0QmluZEdyb3Vw
KHVuc2lnbmVkLCBXZWJHUFVCaW5kR3JvdXAmKTsKLQotcHJvdGVjdGVkOgotICAgIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSA9IDA7Ci0gICAgdmlydHVhbCBjb25z
dCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCA9IDA7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4Yzk4NzViYzQwODI2NjdmOTViYzlkOGFhMjdhZGQ5ODJhOTYwYTQxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIsCi0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0g
ICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyIHsKLSAgICB1bmRlZmluZWQgZW5kUGFzcygpOwotICAgIHVuZGVmaW5lZCBzZXRCaW5kR3Jv
dXAodTMyIGluZGV4LCBXZWJHUFVCaW5kR3JvdXAgYmluZEdyb3VwLyosIG9wdGlvbmFsIHNlcXVl
bmNlPHUzMj4gZHluYW1pY09mZnNldHMqLyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YTRmN2ZiZTljYjMw
Y2NmOTc5NjBiMzMxNDE4YjQyZWVjNDUzNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtb2R1bGUgfHwg
IW1vZHVsZS0+bW9kdWxlKCkgfHwgZW50cnlQb2ludC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yIHsgbWFrZVJlZigqbW9kdWxlLT5tb2R1bGUoKSksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWI2OTAy
NDY3MDYwYjU2ZmNiM2I0MWFiZGI4MGIwMjlkYzk2OTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IldlYkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
IDogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZSB7Ci0gICAgc3RkOjpvcHRpb25h
bDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcigpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVs
ZT4gbW9kdWxlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDhlZDVkMzIzN2VjZWZjOGM5MzE5MTEzM2FjMmEwZGQ4
MmU0ODdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdl
YkdQVVNoYWRlclN0YWdlRW51bTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVU2hhZGVyTW9kdWxlIG1vZHVsZTsK
LSAgICByZXF1aXJlZCBET01TdHJpbmcgZW50cnlQb2ludDsKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUzYWNhN2IyZDBkMTVjNmYxMmYwYzE5NjVmMmMzYzQ0NDZiNmMzYWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVRdWV1
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIu
aCIKLSNpbmNsdWRlICJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdl
YkdQVVF1ZXVlPiBXZWJHUFVRdWV1ZTo6Y3JlYXRlKFJlZlB0cjxHUFVRdWV1ZT4mJiBxdWV1ZSkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVRdWV1ZShXVEZNb3ZlKHF1ZXVlKSkp
OwotfQotCi1XZWJHUFVRdWV1ZTo6V2ViR1BVUXVldWUoUmVmUHRyPEdQVVF1ZXVlPiYmIHF1ZXVl
KQotICAgIDogbV9xdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKLXsKLX0KLQotdm9pZCBXZWJHUFVRdWV1
ZTo6c3VibWl0KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+JiBidWZm
ZXJzKQotewotICAgIGlmICghbV9xdWV1ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVl
dWU6OnN1Ym1pdCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+PiBncHVCdWZmZXJzOwotICAgIGdw
dUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAKLSAgICBmb3Ig
KGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKLSAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZl
ci0+Y29tbWFuZEJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6
OnN1Ym1pdCgpOiBJbnZhbGlkIEdQVUNvbW1hbmRCdWZmZXIgaW4gbGlzdCEiKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBncHVCdWZmZXJzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlUmVmKCpidWZmZXItPmNvbW1hbmRCdWZmZXIoKSkpOwotICAgIH0KLQotICAgIG1fcXVl
dWUtPnN1Ym1pdChXVEZNb3ZlKGdwdUJ1ZmZlcnMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTg5
MjI3ZTQwYjgyOWUxNzAxNGY5ZjhjM2RjNDg0NzFmNTMzODU3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUXVl
dWUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlcjsK
LQotY2xhc3MgV2ViR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVRdWV1ZT4gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVUXVldWU+IGNyZWF0ZShSZWZQdHI8R1BVUXVl
dWU+JiYpOwotCi0gICAgdm9pZCBzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21t
YW5kQnVmZmVyPj4mKTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVl
dWUtPmxhYmVsKCk7IH0KLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsg
bV9xdWV1ZS0+c2V0TGFiZWwobGFiZWwpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVUXVldWUo
UmVmUHRyPEdQVVF1ZXVlPiYmKTsKLQotICAgIFJlZlB0cjxHUFVRdWV1ZT4gbV9xdWV1ZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNTVjZWE5NjU5MWU0MjZkZjkzOGY5NjI0NmExNDk4NzBi
MzY1YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VO
YW1lPUdQVVF1ZXVlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVRdWV1
ZSB7Ci0gICAgdW5kZWZpbmVkIHN1Ym1pdChzZXF1ZW5jZTxXZWJHUFVDb21tYW5kQnVmZmVyPiBi
dWZmZXJzKTsKLQotICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkLgotICAgIC8vIHVuZGVmaW5l
ZCBzaWduYWwoV2ViR1BVRmVuY2UgZmVuY2UsIHU2NCBzaWduYWxWYWx1ZSk7Ci0gICAgLy8gdW5k
ZWZpbmVkIHdhaXQoV2ViR1BVRmVuY2UgZmVuY2UsIHU2NCB2YWx1ZVRvV2FpdCk7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YThiNDc4
MmM3ZTczNWFhYzQxYjMxN2Q0MDMzMGE3MzJlMzM0ZTg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYg
dGV4dHVyZSwgY29uc3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JCYXNl
JiBiYXNlKQotICAgIDogR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JCYXNl
KGJhc2UpCi0gICAgLCBhdHRhY2htZW50KFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0KLUdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUs
IGNvbnN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2Um
IGJhc2UpCi0gICAgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3JCYXNlKGJhc2UpCi0gICAgLCBhdHRhY2htZW50KFdURk1vdmUodGV4dHVyZSkpCi17Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0g
ICAgLy8gRklYTUU6IEltcHJvdmUgZXJyb3IgY2hlY2tpbmcgYXMgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IgaXMgYWRkZWQgdG8gc3BlYy4KLSAgICBpZiAoY29sb3JBdHRhY2htZW50cy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBO
byBjb2xvciBhdHRhY2htZW50cyBzcGVjaWZpZWQgZm9yIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
ISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIFZlY3RvcjxH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1Q29sb3JBdHRhY2htZW50
czsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY29sb3JBdHRhY2htZW50IDogY29sb3JBdHRhY2ht
ZW50cykgewotICAgICAgICBpZiAoIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50Ci0gICAgICAg
ICAgICB8fCAhY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKQotICAgICAgICAg
ICAgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCktPmlzT3V0cHV0QXR0
YWNobWVudCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgZ3B1Q29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgeyBtYWtlUmVmKCpjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVu
dC0+dGV4dHVyZSgpKSwgY29sb3JBdHRhY2htZW50IH0pOwotICAgIH0KLQotICAgIHN0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVE
ZXB0aEF0dGFjaG1lbnQ7Ci0KLSAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCkgewotICAg
ICAgICBpZiAoIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQKLSAgICAgICAgICAg
IHx8ICFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkKLSAgICAg
ICAgICAgIHx8ICFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkt
PmlzT3V0cHV0QXR0YWNobWVudCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgICAgIGdwdURlcHRoQXR0YWNobWVudCA9IEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSksICpkZXB0aFN0ZW5jaWxB
dHRhY2htZW50IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IHsgV1RGTW92ZShncHVDb2xvckF0dGFjaG1lbnRzKSwgV1RGTW92ZShncHVEZXB0aEF0dGFjaG1l
bnQpIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjVmOTRhNGNmZjBkMGUzNjYzMTE3NTg1MGQ3Nzc2YmFkODE3NmM5Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcjsKLQotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBS
ZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgV2ViR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIDogR1BVUmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmVWaWV3PiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiB0
cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0OwotCi0gICAgVmVjdG9yPFdl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRz
OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4MzI0ODJlNWExMzBlZDNkNTM1
ZmQyZGI3ZGY1ZWYwM2U2ZWIyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFz
PVdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yCi1dIGRpY3Rpb25hcnkg
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIHJlcXVpcmVkIFdl
YkdQVVRleHR1cmVWaWV3IGF0dGFjaG1lbnQ7Ci0gICAgLy8gR1BVVGV4dHVyZVZpZXc/IHJlc29s
dmVUYXJnZXQ7Ci0KLSAgICByZXF1aXJlZCBHUFVMb2FkT3AgbG9hZE9wOwotICAgIHJlcXVpcmVk
IEdQVVN0b3JlT3Agc3RvcmVPcDsKLSAgICBHUFVDb2xvciBjbGVhckNvbG9yOyAvLyB7cjogMC4w
LCBnOiAwLjAsIGI6IDAuMCwgYTogMS4wfQotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQ
VVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcgotXSBkaWN0aW9uYXJ5
IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAgcmVx
dWlyZWQgV2ViR1BVVGV4dHVyZVZpZXcgYXR0YWNobWVudDsKLQotICAgIHJlcXVpcmVkIEdQVUxv
YWRPcCBkZXB0aExvYWRPcDsKLSAgICByZXF1aXJlZCBHUFVTdG9yZU9wIGRlcHRoU3RvcmVPcDsK
LSAgICByZXF1aXJlZCBmbG9hdCBjbGVhckRlcHRoOwotCi0vKiBOb3QgeWV0IGltcGxlbWVudGVk
Ci0gICAgR1BVTG9hZE9wIHN0ZW5jaWxMb2FkT3A7Ci0gICAgR1BVU3RvcmVPcCBzdGVuY2lsU3Rv
cmVPcDsKLSAgICB1MzIgY2xlYXJTdGVuY2lsOwotKi8KLX07Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0gICAgR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPyBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBiZjdhMGQ0MGZmYWZjNGFiNDQyYjFiNDM1OTg2YWUyZTI0YzllNDAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVDb2xvci5oIgotI2luY2x1ZGUgIkdQVUxpbWl0cy5oIgotI2luY2x1
ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQnVmZmVy
LmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShl
bmNvZGVyKSkpOwotfQotCi1XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIoUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBt
X3Bhc3NFbmNvZGVyIHsgV1RGTW92ZShlbmNvZGVyKSB9Ci17Ci19Ci0KLXZvaWQgV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lJiBw
aXBlbGluZSkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJbnZhbGlkIG9wZXJhdGlv
biEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXBpcGVsaW5lLnJlbmRlclBp
cGVsaW5lKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRQaXBlbGluZSgpOiBJbnZhbGlkIHBpcGVsaW5lISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIG1fcGFzc0VuY29kZXItPnNldFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLnJlbmRl
clBpcGVsaW5lKCkpKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Qmxl
bmRDb2xvcihjb25zdCBHUFVDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVy
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRD
b2xvcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX3Bhc3NFbmNvZGVyLT5zZXRCbGVuZENvbG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQotewotICAg
IGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFz
c0VuY29kZXI6OnNldFZpZXdwb3J0KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNldFZpZXdwb3J0KHgsIHksIHdpZHRo
LCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3Qo
KTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KCF3aWR0aCB8fCAhaGVpZ2h0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoKTogV2lkdGggb3IgaGVpZ2h0IG11c3QgYmUgZ3JlYXRl
ciB0aGFuIDAhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+
c2V0U2Npc3NvclJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVyLCB1aW50
NjRfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFidWZmZXIuYnVm
ZmVyKCkgfHwgIWJ1ZmZlci5idWZmZXIoKS0+aXNJbmRleCgpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBHUFVC
dWZmZXIhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3Bhc3NFbmNvZGVyLT5z
ZXRJbmRleEJ1ZmZlcigqYnVmZmVyLmJ1ZmZlcigpLCBvZmZzZXQpOwotfQotCi12b2lkIFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIHN0YXJ0U2xvdCwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYgYnVmZmVycywgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhC
dWZmZXJzKCkiOwotI2VuZGlmCi0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICIlczogSW52YWxpZCBvcGVyYXRpb24hIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYnVmZmVycy5pc0VtcHR5KCkgfHwgYnVmZmVycy5z
aXplKCkgIT0gb2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZh
bGlkIG51bWJlciBvZiBidWZmZXJzIG9yIG9mZnNldHMhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc3RhcnRTbG90ICsgYnVmZmVycy5zaXplKCkgPiBt
YXhWZXJ0ZXhCdWZmZXJzKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBzdGFy
dFNsb3QgJXUgZm9yICVsdSBidWZmZXJzISIsIGZ1bmN0aW9uTmFtZSwgc3RhcnRTbG90LCBidWZm
ZXJzLnNpemUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8UmVmPEdQ
VUJ1ZmZlcj4+IGdwdUJ1ZmZlcnM7Ci0gICAgZ3B1QnVmZmVycy5yZXNlcnZlQ2FwYWNpdHkoYnVm
ZmVycy5zaXplKCkpOwotCi0gICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7Ci0gICAg
ICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IEludmFsaWQgb3IgZGVzdHJveWVkIGJ1ZmZlciBpbiBsaXN0ISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IWJ1ZmZlci0+YnVmZmVyKCktPmlzVmVydGV4KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICIlczogQnVmZmVyIHdhcyBub3QgY3JlYXRlZCB3aXRoIFZFUlRFWCB1c2FnZSEiLCBmdW5jdGlv
bk5hbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ3B1QnVm
ZmVycy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqYnVmZmVyLT5idWZmZXIoKSkpOwotICAgIH0K
LQotICAgIG1fcGFzc0VuY29kZXItPnNldFZlcnRleEJ1ZmZlcnMoc3RhcnRTbG90LCBncHVCdWZm
ZXJzLCBvZmZzZXRzKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyh1
bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmly
c3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNv
ZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBG
SVhNRTogV2hhdCBraW5kIG9mIHZhbGlkYXRpb24gZG8gd2UgbmVlZCB0byBoYW5kbGUgaGVyZT8K
LSAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJz
dFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmRyYXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291
bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdElu
c3RhbmNlKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRp
b24uCi0gICAgbV9wYXNzRW5jb2Rlci0+ZHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VD
b3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLUdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGFzc0VuY29k
ZXIoKQotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwotfQotCi1jb25zdCBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNv
ZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGMwMmFiYTc4YWVjOGFlMmFmMTY3
YjI1MGM1OTFkZDE5NDgzMTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyOwotY2xhc3MgR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJH
UFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKLQotc3RydWN0IEdQVUNvbG9y
OwotCi1jbGFzcyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7
Ci0KLSAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lJik7Ci0g
ICAgdm9pZCBzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJik7Ci0gICAgdm9pZCBzZXRWaWV3
cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBt
aW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpOwotICAgIHZvaWQgc2V0U2Npc3NvclJlY3QodW5zaWdu
ZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7Ci0gICAg
dm9pZCBzZXRJbmRleEJ1ZmZlcihXZWJHUFVCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQpOwotICAg
IHZvaWQgc2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBzdGFydFNsb3QsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViR1BVQnVmZmVyPj4mLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKTsK
LSAgICB2b2lkIGRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291
bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsKLSAgICB2
b2lkIGRyYXdJbmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291
bnQsIHVuc2lnbmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdElu
c3RhbmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWZQdHI8
R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwotCi0gICAgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIqIHBhc3NFbmNvZGVyKCkgZmluYWw7Ci0gICAgY29uc3QgR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BVUmVuZGVy
UGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2MDZmOWNiNWMyZTNkNTVjOWQxNjNjYjc4MzU2ZWUyYWE5YjQ5
ZGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIGxvbmcgaTMyOwotdHlwZWRlZiB1bnNpZ25lZCBs
b25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZh
Y2VOYW1lPUdQVVJlbmRlclBhc3NFbmNvZGVyLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAot
ICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciA6
IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICB1bmRlZmluZWQgc2V0UGlwZWxp
bmUoV2ViR1BVUmVuZGVyUGlwZWxpbmUgcGlwZWxpbmUpOwotICAgIHVuZGVmaW5lZCBzZXRCbGVu
ZENvbG9yKEdQVUNvbG9yIGNvbG9yKTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IHZpZXdwb3J0IGlz
ICgwLjAsIDAuMCwgdywgaCwgMC4wLCAxLjApLCB3aGVyZSB3IGFuZCBoIGFyZSB0aGUgZGltZW5z
aW9ucyBvZiBiYWNrIGJ1ZmZlcgotICAgIHVuZGVmaW5lZCBzZXRWaWV3cG9ydChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQg
bWF4RGVwdGgpOwotCi0gICAgLy8gVGhlIGRlZmF1bHQgc2Npc3NvciByZWN0YW5nbGUgaXMgKDAs
IDAsIHcsIGgpLCB3aGVyZSB3IGFuZCBoIGFyZSB0aGUgZGltZW5zaW9ucyBvZiBiYWNrIGJ1ZmZl
ci4KLSAgICAvLyBXaWR0aCBhbmQgaGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuIE90aGVy
d2lzZSwgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQuCi0gICAgdW5kZWZpbmVkIHNldFNjaXNz
b3JSZWN0KHUzMiB4LCB1MzIgeSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsKLQotICAgIHVuZGVm
aW5lZCBzZXRJbmRleEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1NjQgb2Zmc2V0KTsKLSAg
ICB1bmRlZmluZWQgc2V0VmVydGV4QnVmZmVycyh1MzIgc3RhcnRTbG90LCBzZXF1ZW5jZTxXZWJH
UFVCdWZmZXI+IGJ1ZmZlcnMsIHNlcXVlbmNlPHU2ND4gb2Zmc2V0cyk7Ci0KLSAgICB1bmRlZmlu
ZWQgZHJhdyh1MzIgdmVydGV4Q291bnQsIHUzMiBpbnN0YW5jZUNvdW50LCB1MzIgZmlyc3RWZXJ0
ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsKLSAgICB1bmRlZmluZWQgZHJhd0luZGV4ZWQodTMyIGlu
ZGV4Q291bnQsIHUzMiBpbnN0YW5jZUNvdW50LCB1MzIgZmlyc3RJbmRleCwgaTMyIGJhc2VWZXJ0
ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsKLQotLyogTm90IFlldCBJbXBsZW1lbnRlZAotICAgIHVu
ZGVmaW5lZCBzZXRTdGVuY2lsUmVmZXJlbmNlKHUzMiByZWZlcmVuY2UpOwotKi8KLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NWM2YmZhMGEyMDQ1NGExN2I2
MjY3MzA2ZjliNTc5OWQwNDc3YTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW5jbHVk
ZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRl
ck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVVJl
bmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFdlYkdQVURldmljZSYg
ZGV2aWNlLCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFk
ZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21lbnRTaGFkZXIpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoZGV2aWNlLCBXVEZNb3Zl
KHBpcGVsaW5lKSwgZXJyb3JTY29wZXMsIFdURk1vdmUodmVydGV4U2hhZGVyKSwgV1RGTW92ZShm
cmFnbWVudFNoYWRlcikpKTsKLX0KLQotV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+
JiYgcGlwZWxpbmUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6
OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYg
ZnJhZ21lbnRTaGFkZXIpCi0gICAgOiBXZWJHUFVQaXBlbGluZShkZXZpY2UsIGVycm9yU2NvcGVz
KQotICAgICwgbV9yZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fdmVy
dGV4U2hhZGVyKFdURk1vdmUodmVydGV4U2hhZGVyKSkKLSAgICAsIG1fZnJhZ21lbnRTaGFkZXIo
V1RGTW92ZShmcmFnbWVudFNoYWRlcikpCi17Ci19Ci0KLVdlYkdQVVJlbmRlclBpcGVsaW5lOjp+
V2ViR1BVUmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgV2ViR1BVUmVuZGVyUGlw
ZWxpbmU6OmNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsK
LSAgICBpZiAobV92ZXJ0ZXhTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGJvb2wgc2hhcmVzVmVy
dGV4RnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSA9PSBtX3Zl
cnRleFNoYWRlci5tb2R1bGU7Ci0KLSAgICAgICAgY29uc3QgYXV0byYgdmVydGV4U291cmNlID0g
bV92ZXJ0ZXhTaGFkZXIubW9kdWxlLT5zb3VyY2UoKTsKLSAgICAgICAgbV92ZXJ0ZXhTaGFkZXIu
bW9kdWxlID0gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoR1BVU2hhZGVyTW9kdWxlOjp0cnlD
cmVhdGUoZGV2aWNlLmRldmljZSgpLCB7IHZlcnRleFNvdXJjZSB9KSwgdmVydGV4U291cmNlKTsK
LQotICAgICAgICBpZiAobV9mcmFnbWVudFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgICAgIGlm
IChzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlck1vZHVsZSkKLSAgICAgICAgICAgICAgICBtX2Zy
YWdtZW50U2hhZGVyLm1vZHVsZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZyYWdtZW50U291cmNlID0gbV9m
cmFnbWVudFNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAgICAgICAgICAgIG1fZnJhZ21l
bnRTaGFkZXIubW9kdWxlID0gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoR1BVU2hhZGVyTW9k
dWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRldmljZSgpLCB7IGZyYWdtZW50U291cmNlIH0pLCBmcmFn
bWVudFNvdXJjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkdQVVJlbmRlclBp
cGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYg
KG1fcmVuZGVyUGlwZWxpbmUgJiYgbV92ZXJ0ZXhTaGFkZXIubW9kdWxlKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBncHVWZXJ0ZXhTaGFkZXJNb2R1bGUgPSBtX3ZlcnRleFNoYWRlci5tb2R1bGUtPm1v
ZHVsZSgpKSB7Ci0gICAgICAgICAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgdmVy
dGV4U3RhZ2UobWFrZVJlZigqZ3B1VmVydGV4U2hhZGVyTW9kdWxlKSwgeyBtX3ZlcnRleFNoYWRl
ci5lbnRyeVBvaW50IH0pOwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci0gICAgICAgICAgICBpZiAobV9mcmFn
bWVudFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZ3B1RnJhZ21l
bnRTaGFkZXJNb2R1bGUgPSBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGZyYWdtZW50U3RhZ2UgPSBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IobWFrZVJlZigqZ3B1RnJhZ21lbnRTaGFkZXJNb2R1bGUpLCB7IG1fZnJhZ21lbnRTaGFk
ZXIuZW50cnlQb2ludCB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtX3Jl
bmRlclBpcGVsaW5lLT5yZWNvbXBpbGUoZGV2aWNlLmRldmljZSgpLCBXVEZNb3ZlKHZlcnRleFN0
YWdlKSwgV1RGTW92ZShmcmFnbWVudFN0YWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NjBiMTM3
OTNmY2JkMjUzNDU3YzQyODExYzgyZDkyY2Q1MTIyZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJX
ZWJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgR1BVUGlwZWxpbmU7Ci1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsK
LWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BVRGV2aWNlOwotY2xhc3MgV2ViR1BV
U2hhZGVyTW9kdWxlOwotCi1jbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1Ymxp
YyBXZWJHUFVQaXBlbGluZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlw
ZWxpbmUoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShX
ZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVz
JiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdlYkdQVVBpcGVs
aW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgYm9vbCBpc1JlbmRlclBp
cGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gcmVuZGVyUGlwZWxpbmUoKTsgfQotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVs
aW5lKiByZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUuZ2V0
KCk7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiB2ZXJ0ZXhTaGFkZXIoKSBjb25z
dCB7IHJldHVybiBtX3ZlcnRleFNoYWRlci5tb2R1bGU7IH0KLSAgICBSZWZQdHI8V2ViR1BVU2hh
ZGVyTW9kdWxlPiBmcmFnbWVudFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFk
ZXIubW9kdWxlOyB9Ci0KLSAgICBib29sIGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVE
ZXZpY2UmKTsKLSAgICBib29sIHJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmKTsKLQotcHJp
dmF0ZToKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BV
UmVuZGVyUGlwZWxpbmU+JiYsIEdQVUVycm9yU2NvcGVzJiwgV2ViR1BVUGlwZWxpbmU6OlNoYWRl
ckRhdGEmJiB2ZXJ0ZXhTaGFkZXIsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgZnJhZ21l
bnRTaGFkZXIpOwotCi0gICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBtX3JlbmRlclBpcGVs
aW5lOwotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24u
Ci0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgbV92ZXJ0ZXhTaGFkZXI7Ci0gICAgV2Vi
R1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgbV9mcmFnbWVudFNoYWRlcjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShX
ZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZSwgaXNSZW5kZXJQaXBlbGluZSgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDdmODJjMmQyOGM3NWM1NDc2ODI0ODVhYWIwZmZmYTdmMWE5OGIwYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQ
VSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVJlbmRlclBpcGVsaW5lLAotICAgIEV4cG9zZWQ9V2lu
ZG93Ci1dIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQaXBlbGluZSB7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YmNkYjlk
ZjkwYzg0NTkwNzMxMzQ3ZjhkNWE5NjU4N2M5MWM3NzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9w
dGlvbmFsPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewotICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBs
YXlvdXQgPyBtYWtlUmVmUHRyKGxheW91dC0+cGlwZWxpbmVMYXlvdXQoKSkgOiBudWxscHRyOwot
Ci0gICAgYXV0byB2ZXJ0ZXggPSB2ZXJ0ZXhTdGFnZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IoKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yPiBmcmFnbWVudDsKLSAgICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAg
ZnJhZ21lbnQgPSBmcmFnbWVudFN0YWdlLT50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IoKTsKLQotICAgIGlmICghdmVydGV4IHx8IChmcmFnbWVudFN0YWdlICYmICFmcmFn
bWVudCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZh
bGlkIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2ViIEdQVSB2YWxpZGF0aW9uLCBl
LmcuIGZhaWwgaWYgY29sb3JTdGF0ZXMgaXMgbGFyZ2VyIHRoYW4gKG1heCBudW1iZXIgb2Ygc3Vw
cG9ydGVkIGNvbG9yIHN0YXRlcykuCi0KLSAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZShwaXBlbGluZUxheW91dCksIFdURk1vdmUoKnZlcnRleCksIFdURk1v
dmUoZnJhZ21lbnQpLCAqdGhpcyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI2MGQyZWJlNjkzOTVlMzUxZjFhOWQ4YzUwMDYzNDg0
NjhiYjBmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0KLSAgICBXZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MGQ5NDZmZWZmOWU1
NWNiMGQ3MGFkNjcyODcyOTdhOTlkMDcxZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
SW1wbGVtZW50ZWRBcz1HUFVQcmltaXRpdmVUb3BvbG9neQotXSBlbnVtIEdQVVByaW1pdGl2ZVRv
cG9sb2d5IHsKLSAgICAicG9pbnQtbGlzdCIsCi0gICAgImxpbmUtbGlzdCIsCi0gICAgImxpbmUt
c3RyaXAiLAotICAgICJ0cmlhbmdsZS1saXN0IiwKLSAgICAidHJpYW5nbGUtc3RyaXAiCi19Owot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
Ci1dIGRpY3Rpb25hcnkgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgcmVxdWlyZWQgV2ViR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwotICAgIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcj8gZnJhZ21lbnRTdGFnZSA9IG51bGw7Ci0KLSAgICByZXF1aXJlZCBHUFVQcmltaXRp
dmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neTsKLSAgICByZXF1aXJlZCBzZXF1ZW5jZTxHUFVD
b2xvclN0YXRlRGVzY3JpcHRvcj4gY29sb3JTdGF0ZXM7Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yPyBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgcmVxdWlyZWQgR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGJhNTIwZTYzYTFhMDA1NDkwOTdlNDAxYWVlYjhiNDMyZDVkMTI2MDEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQ
VVNhbXBsZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmPFdlYkdQVVNhbXBsZXI+IFdlYkdQVVNhbXBsZXI6OmNyZWF0ZShSZWZQdHI8R1BVU2Ft
cGxlcj4mJiBzYW1wbGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNhbXBs
ZXIoV1RGTW92ZShzYW1wbGVyKSkpOwotfQotCi1XZWJHUFVTYW1wbGVyOjpXZWJHUFVTYW1wbGVy
KFJlZlB0cjxHUFVTYW1wbGVyPiYmIHNhbXBsZXIpCi0gICAgOiBtX3NhbXBsZXIoV1RGTW92ZShz
YW1wbGVyKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBs
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQyNDk2NmM2OTdhNTY1NThjNjYz
NGNiYzRjZjM3ZjNkMjVlYTA0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVNhbXBsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVTYW1wbGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVTYW1wbGVyPiBj
cmVhdGUoUmVmUHRyPEdQVVNhbXBsZXI+JiYpOwotCi0gICAgY29uc3QgR1BVU2FtcGxlciogc2Ft
cGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAg
IFdlYkdQVVNhbXBsZXIoUmVmUHRyPEdQVVNhbXBsZXI+JiYpOwotCi0gICAgUmVmUHRyPEdQVVNh
bXBsZXI+IG1fc2FtcGxlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTYW1wbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNhbXBsZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjNhYWMyNjlh
MTU4ZWI1ODdiYWY1ZDQxNGQwZjJlMjFmYjQyZTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNhbXBsZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVNhbXBsZXIsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVNhbXBsZXIgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkMzE0NTQ1ZGQzZjQ2Y2U4NjIwOGYzZDU0NmFmZjcxNDQyNzMz
Yzk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVE
ZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVs
ZSksIHNvdXJjZSkpOwotfQotCi1XZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1vZHVs
ZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgU3RyaW5nJiBzb3VyY2Up
Ci0gICAgOiBtX21vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCi0gICAgLCBtX3NvdXJjZShzb3VyY2Up
Ci17Ci19Ci0KLXZvaWQgV2ViR1BVU2hhZGVyTW9kdWxlOjp1cGRhdGUoY29uc3QgV2ViR1BVRGV2
aWNlJiBkZXZpY2UsIGNvbnN0IFN0cmluZyYgc291cmNlKQotewotICAgIG1fc291cmNlID0gc291
cmNlOwotICAgIG1fbW9kdWxlID0gR1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoZGV2aWNlLmRl
dmljZSgpLCB7IG1fc291cmNlIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODcwYmI4ZDJmNjM2NGMyNGUxZGE1ZGNiNDU1MDUwMWE0ZjJkMDE2OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFdlYkdQVURldmljZTsKLQotY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmLCBjb25z
dCBTdHJpbmcmIHNvdXJjZSk7Ci0KLSAgICBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQotCi0gICAgdm9pZCB1cGRhdGUoY29uc3QgV2ViR1BV
RGV2aWNlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVNo
YWRlck1vZHVsZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSk7Ci0KLSAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBtX21vZHVsZTsKLQotICAgIC8vIFBy
ZXNlcnZlZCBmb3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFN0cmluZyBtX3Nv
dXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ3N2YwNzll
MzI5ZDY1ZDM4NDRmOGJlZjUzZDgzMDVhNTRiODk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVU2hhZGVyTW9kdWxlLAotICAg
IEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVTaGFkZXJNb2R1bGUgewotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYzMmE5
ODllZDVjNTA2ZGYzYTdkY2IwOTM1NWNlNTI2ODRjMzA4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RydWN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIFN0cmluZyBjb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwYTdhOWQ0YzhkYTQ1Mzc2NjAwZjliYTBiZjZmZTJjYTE2ZDQ3NjEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgewotICAgIHJl
cXVpcmVkIC8qQXJyYXlCdWZmZXIqLyBET01TdHJpbmcgY29kZTsgLy8gRklYTUU6IERPTVN0cmlu
ZyBmb3IgTVRMIHByb3RvdHlwaW5nIG9ubHkuCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM2MjU5ZDdmNmUxM2JkNjI2MDYyMDgwNzdhZWM5N2U0MzNlMDIzOWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BV
U3dhcENoYWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWY8V2ViR1BVU3dhcENoYWluPiBXZWJHUFVTd2FwQ2hhaW46OmNyZWF0ZShS
ZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVTd2FwQ2hhaW4oV1RGTW92ZShzd2FwQ2hhaW4pKSk7Ci19Ci0KLVdlYkdQVVN3
YXBDaGFpbjo6V2ViR1BVU3dhcENoYWluKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWlu
KQotICAgIDogbV9zd2FwQ2hhaW4oV1RGTW92ZShzd2FwQ2hhaW4pKQotewotfQotCi1SZWY8V2Vi
R1BVVGV4dHVyZT4gV2ViR1BVU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZSgpCi17Ci0gICAg
aWYgKCFtX3N3YXBDaGFpbikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpn
ZXRDdXJyZW50VGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJu
IFdlYkdQVVRleHR1cmU6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0gICAgbV9jdXJyZW50VGV4
dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNyZWF0ZShtX3N3YXBDaGFpbi0+dHJ5R2V0Q3VycmVudFRl
eHR1cmUoKSk7Ci0gICAgcmV0dXJuIG1ha2VSZWYoKm1fY3VycmVudFRleHR1cmUpOwotfQotCi12
b2lkIFdlYkdQVVN3YXBDaGFpbjo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKCFtX3N3YXBDaGFpbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zd2FwQ2hhaW4tPmRlc3Ryb3koKTsKLSAgICBtX3N3
YXBDaGFpbiA9IG51bGxwdHI7Ci0KLSAgICBpZiAobV9jdXJyZW50VGV4dHVyZSAmJiBtX2N1cnJl
bnRUZXh0dXJlLT50ZXh0dXJlKCkpCi0gICAgICAgIG1fY3VycmVudFRleHR1cmUtPmRlc3Ryb3ko
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YTFlMGRmNjQ4MDRmMTExOWYzMTVlMzBl
MWEwNjEwOGMzNDI3YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1jbGFzcyBXZWJHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJHUFVTd2FwQ2hhaW4+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VVN3YXBDaGFpbj4gY3JlYXRlKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwotCi0gICAgR1BVU3dh
cENoYWluKiBzd2FwQ2hhaW4oKSB7IHJldHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQotCi0gICAg
UmVmPFdlYkdQVVRleHR1cmU+IGdldEN1cnJlbnRUZXh0dXJlKCk7Ci0KLSAgICB2b2lkIGRlc3Ry
b3koKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFp
bj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsKLSAgICBSZWZQ
dHI8V2ViR1BVVGV4dHVyZT4gbV9jdXJyZW50VGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTQzMmNmM2E0ZTQ1MDRjOGJhMWZhZmQ5YWNhYjZkZGJiMWUyZmQwYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVTd2FwQ2hhaW4sCi0gICAgU2tpcFZUYWJsZVZhbGlk
YXRpb24sCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVN3YXBDaGFpbiB7
Ci0gICAgV2ViR1BVVGV4dHVyZSBnZXRDdXJyZW50VGV4dHVyZSgpOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzRmY2QzMzM3Mzk5NWY2
YTk4ZDQ3OWFmNDAyZjdjZDk3YjA2NTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3Io
KSBjb25zdAotewotICAgIGlmICghZGV2aWNlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVD
YW52YXNDb250ZXh0Ojpjb25maWd1cmVTd2FwQ2hhaW4oKTogSW52YWxpZCBHUFVEZXZpY2UhIik7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsgbWFrZVJlZihkZXZpY2UtPmRldmljZSgpKSwgKnRoaXMg
fTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmODc0
ZDZmNzAwMDAzOTU5ZGI1ODkxMTliNGRiMDAyZTljMzIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNl
IHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I+IGFzR1BVU3dhcENo
YWluRGVzY3JpcHRvcigpIGNvbnN0OwotCi0gICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2aWNl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZGEwNjAxMjMxZTdlOGY1ODM5NGM3YzQy
Mzk1MTg0ZWI3YTM3YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQ
VVRleHR1cmU+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB0ZXh0
dXJlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoV1RGTW92ZSh0
ZXh0dXJlKSkpOwotfQotCi1XZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFJlZlB0cjxHUFVU
ZXh0dXJlPiYmIHRleHR1cmUpCi0gICAgOiBtX3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLXsK
LX0KLQotUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0
VmlldygpCi17Ci0gICAgaWYgKCFtX3RleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVRleHR1cmU6OmNyZWF0ZURlZmF1bHRWaWV3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAg
ICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShudWxscHRyKTsKLSAgICB9Ci0K
LSAgICBhdXRvIHZpZXcgPSBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKG1fdGV4dHVyZS0+dHJ5
Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkpOwotICAgIG1fdGV4dHVyZVZpZXdzLmFwcGVuZCh2
aWV3LmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHZpZXc7Ci19Ci0KLXZvaWQgV2ViR1BVVGV4dHVy
ZTo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKCFtX3RleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVRleHR1cmU6OmRlc3Ryb3koKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiB2aWV3IDogbV90ZXh0dXJlVmlld3MpCi0g
ICAgICAgIHZpZXctPmRlc3Ryb3koKTsKLSAgICBtX3RleHR1cmVWaWV3cy5jbGVhcigpOwotCi0g
ICAgbV90ZXh0dXJlLT5kZXN0cm95KCk7Ci0gICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmZkNThjMjY0MmZjYzZhNjJmMzcyYWNiNGEyNzM4ZTFjNmI3MjUy
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVW
aWV3LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFdlYkdQVVRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUoUmVmUHRyPEdQVVRl
eHR1cmU+JiYpOwotCi0gICAgR1BVVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS5nZXQoKTsgfQotCi0gICAgUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGVEZWZhdWx0Vmll
dygpOwotICAgIHZvaWQgZGVzdHJveSgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQ
VVRleHR1cmUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotCi0gICAgUmVmUHRyPEdQVVRleHR1cmU+
IG1fdGV4dHVyZTsKLSAgICBWZWN0b3I8UmVmPFdlYkdQVVRleHR1cmVWaWV3Pj4gbV90ZXh0dXJl
Vmlld3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNlNGE1Zjk5M2I2NDVkYTk1YzJh
M2Q3OGM4ZGYxYzJjMzczN2QyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
Ci0gICAgSW50ZXJmYWNlTmFtZT1HUFVUZXh0dXJlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGlu
dGVyZmFjZSBXZWJHUFVUZXh0dXJlIHsKLSAgICBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVEZWZh
dWx0VmlldygpOwotICAgIHVuZGVmaW5lZCBkZXN0cm95KCk7Ci0KLSAgICAvLyBOb3QgWWV0IElt
cGxlbWVudGVkOgotICAgIC8vIFdlYkdQVVRleHR1cmVWaWV3IGNyZWF0ZVRleHR1cmVWaWV3KFdl
YkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBkZXNjKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBlMDMyYWYwYzAxNmRjNWViZDVhZTRkZGQ2YzY0YjIzNGI0MDUzOTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3
OjpjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdmlldykKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7Ci19Ci0KLVdlYkdQVVRl
eHR1cmVWaWV3OjpXZWJHUFVUZXh0dXJlVmlldyhSZWZQdHI8R1BVVGV4dHVyZT4mJiB2aWV3KQot
ICAgIDogbV90ZXh0dXJlKFdURk1vdmUodmlldykpCi17Ci19Ci0KLXZvaWQgV2ViR1BVVGV4dHVy
ZVZpZXc6OmRlc3Ryb3koKQotewotICAgIGlmICghbV90ZXh0dXJlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3RleHR1cmUtPmRlc3Ryb3koKTsKLSAgICBtX3RleHR1cmUgPSBudWxscHRyOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1MGUyMTg0YzUyM2NmODVmZGVkNmFi
ZGNmZWJmYzIzNmYxMjkwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVRleHR1cmVWaWV3PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0
dXJlVmlldz4gY3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKLSAgICB+V2ViR1BVVGV4dHVy
ZVZpZXcoKSB7IGRlc3Ryb3koKTsgfQotCi0gICAgR1BVVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotCi0gICAgdm9pZCBkZXN0cm95KCk7Ci1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFdlYkdQVVRleHR1cmVWaWV3KFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKLSAg
ICAKLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gbV90ZXh0dXJlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWZmYmRlYmJjOTA1YWNmNmQ3MTNlZDA0Mjc3NWZhZDM0ZWUzYjUw
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFj
ZU5hbWU9R1BVVGV4dHVyZVZpZXcsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdl
YkdQVVRleHR1cmVWaWV3IHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYTJkYWVlNjQyNzViNWY3OTMyNzBjZTNkNWY0NTM3MTE0MmYxMmViLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I25hdmlnYXRvci1ncHUKLS8vIEZJWE1FOiBUaGUgc3BlYyBzYXlzIHRoaXMgc2hvdWxkIG9ubHkg
YmUgZXhwb3NlZCB0byBEZWRpY2F0ZWRXb3JrZXJzLgotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEJ5PVdvcmtl
ck5hdmlnYXRvckdQVQotXSBwYXJ0aWFsIGludGVyZmFjZSBXb3JrZXJOYXZpZ2F0b3IgewotICAg
IFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVIGdwdTsKLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwN2YzNjY4M2RjMzAzODQzMjRmNWE3MjRi
MjIxMGI5MWQ4ZWQ0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3JHUFUuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
V2ViR1BVLmgiCi0jaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotV29ya2VyTmF2aWdhdG9yR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29y
a2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCi17Ci0gICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3Jr
ZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwotICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PFdvcmtlck5hdmlnYXRvckdQVT4oKTsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7Ci0gICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsK
LX0KLQotY29uc3QgY2hhciogV29ya2VyTmF2aWdhdG9yR1BVOjpzdXBwbGVtZW50TmFtZSgpCi17
Ci0gICAgcmV0dXJuICJXb3JrZXJOYXZpZ2F0b3JHUFUiOwotfQotCi1jb25zdCBXZWJHUFUqIFdv
cmtlck5hdmlnYXRvckdQVTo6Z3B1KFdvcmtlck5hdmlnYXRvciYgbmF2aWdhdG9yKQotewotICAg
IGF1dG8gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5n
c1ZhbHVlcygpLndlYkdQVUVuYWJsZWQpOwotICAgIHJldHVybiBXb3JrZXJOYXZpZ2F0b3JHUFU6
OmZyb20oJm5hdmlnYXRvciktPmdwdSgpOwotfQotCi1jb25zdCBXZWJHUFUqIFdvcmtlck5hdmln
YXRvckdQVTo6Z3B1KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZ3B1KQotICAgICAgICBtX2dwdSA9
IFdlYkdQVTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1fZ3B1LmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3NDUzZjk0YmJjYTZiOTg5YmQ1OGY1OTVjODM4YjAxYTEy
MGE3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVTsKLWNsYXNzIFdvcmtlck5hdmlnYXRvcjsKLQotY2xh
c3MgV29ya2VyTmF2aWdhdG9yR1BVIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8V29ya2VyTmF2
aWdhdG9yPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0IFdlYkdQVSogZ3B1KFdvcmtlck5hdmlnYXRvciYpOwotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBXb3JrZXJOYXZpZ2F0b3JHUFUqIGZyb20oV29ya2VyTmF2aWdhdG9yKik7Ci0gICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7Ci0gICAgCi0gICAgY29uc3QgV2Vi
R1BVKiBncHUoKSBjb25zdDsKLQotICAgIG11dGFibGUgUmVmUHRyPFdlYkdQVT4gbV9ncHU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCAyZWE5Y2M1NjljZjQ1ZDVmNDI4OGUzMGU4YjRmM2ZhM2I2MDgwYjM0
Li41NDQ0M2ZiODhhNGRjYWJjYmIzNmU1MWY1YzI3N2U0ZmZjY2Y1YTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMzIwLDkxICszMjAsNiBAQCBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3Bw
CiBNb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9HUFVDYW52YXNDb250ZXh0LmNwcAotTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCi1Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRp
Yy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlUmVmZXJlbmNlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5u
YW1lZFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29k
ZUdlbmVyYXRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5
cGVXcml0ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxj
dWxhdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAotTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcAotTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcAotTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRl
RGltZW5zaW9ucy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNo
ZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMSW50cmluc2ljcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAotTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1
cnNpdmVUeXBlQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92
ZXJsb2FkSW1wbC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVy
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25z
LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAotTW9kdWxlcy93ZWJn
cHUvV2ViR1BVLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cAotTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNw
cAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNhbXBsZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcAotTW9kdWxlcy93ZWJncHUvV29ya2Vy
TmF2aWdhdG9yR1BVLmNwcAogTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuY3BwCiBNb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiBNb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAt
MjA3OSwxNCArMTk5NCw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNv
dXJjZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9y
U2NvcGVzLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVZhbGlkYXRpb25FcnJvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCkBAIC0zMDcyLDM0
ICsyOTc5LDYgQEAgSlNGb2N1c09wdGlvbnMuY3BwCiBKU0ZvbnRGYWNlLmNwcAogSlNGb250RmFj
ZVNldC5jcHAKIEpTRm9ybURhdGFFdmVudC5jcHAKLUpTR1BVQmluZEdyb3VwTGF5b3V0QmluZGlu
Zy5jcHAKLUpTR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKLUpTR1BVQmxlbmREZXNj
cmlwdG9yLmNwcAotSlNHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcAotSlNHUFVCdWZmZXJVc2FnZS5j
cHAKLUpTR1BVQ2FudmFzQ29udGV4dC5jcHAKLUpTR1BVQ29sb3IuY3BwCi1KU0dQVUNvbG9yU3Rh
dGVEZXNjcmlwdG9yLmNwcAotSlNHUFVDb2xvcldyaXRlLmNwcAotSlNHUFVDb21wYXJlRnVuY3Rp
b24uY3BwCi1KU0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5jcHAKLUpTR1BVRXJyb3JG
aWx0ZXIuY3BwCi1KU0dQVUV4dGVudDNELmNwcAotSlNHUFVMb2FkT3AuY3BwCi1KU0dQVU9yaWdp
bjNELmNwcAotSlNHUFVPdXRPZk1lbW9yeUVycm9yLmNwcAotSlNHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMuY3BwCi1KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAotSlNHUFVTaGFkZXJTdGFnZS5j
cHAKLUpTR1BVU3RvcmVPcC5jcHAKLUpTR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCi1KU0dQVVRl
eHR1cmVGb3JtYXQuY3BwCi1KU0dQVVRleHR1cmVVc2FnZS5jcHAKLUpTR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQuY3BwCi1KU0dQVVZhbGlkYXRpb25FcnJvci5jcHAKLUpTR1BVVmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvci5jcHAKLUpTR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5jcHAKLUpTR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yLmNwcAogSlNHYWluTm9kZS5jcHAKIEpTR2Fpbk9wdGlvbnMu
Y3BwCiBKU0dhbWVwYWQuY3BwCkBAIC0zNzYxLDM4ICszNjQwLDYgQEAgSlNXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmNwcAogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAKIEpTV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5jcHAKIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKLUpTV2ViR1BV
LmNwcAotSlNXZWJHUFVBZGFwdGVyLmNwcAotSlNXZWJHUFVCaW5kR3JvdXAuY3BwCi1KU1dlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuY3BwCi1KU1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCi1K
U1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKLUpTV2ViR1BVQnVmZmVyLmNwcAotSlNXZWJHUFVC
dWZmZXJCaW5kaW5nLmNwcAotSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcAotSlNXZWJHUFVDb21t
YW5kRW5jb2Rlci5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVD
b21wdXRlUGlwZWxpbmUuY3BwCi1KU1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3Bw
Ci1KU1dlYkdQVURldmljZS5jcHAKLUpTV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwCi1KU1dl
YkdQVURldmljZUV2ZW50SGFuZGxlci5jcHAKLUpTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5jcHAKLUpTV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCi1KU1dlYkdQVVBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1KU1dl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVUXVldWUuY3BwCi1K
U1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5jcHAKLUpTV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCi1KU1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAKLUpTV2ViR1BVU2FtcGxlci5jcHAKLUpTV2ViR1BVU2hhZGVyTW9kdWxl
LmNwcAotSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVTd2FwQ2hh
aW4uY3BwCi1KU1dlYkdQVVRleHR1cmUuY3BwCi1KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogSlNX
ZWJLaXRBbmltYXRpb25FdmVudC5jcHAKIEpTV2ViS2l0TWVkaWFLZXlFcnJvci5jcHAKIEpTV2Vi
S2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2
ODJkYmNjMDZjZWFlN2Q3NmMxZTBlOWE2NmFiZjQyN2UxY2NiNDliLi5jYTYxMTcwYzM0ZGYzOWMw
MWIxNWIxMDEyNGVkZWM0OTY3OTUyOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM4
Nyw3ICszODcsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVy
RXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb24ubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
aWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
Q2FzY2FkZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVU
ZXh0LmNwcApAQCAtMzk4LDI0ICszOTcsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCdWZmZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1h
bmRCdWZmZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQ
YXNzRW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0
ZVBpcGVsaW5lTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VN
ZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252
ZXJ0TGF5b3V0LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1
ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29k
ZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTYW1wbGVyTWV0YWwubW0K
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQotcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtNjE2LDcgKzU5OCwzIEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGll
cy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNl
dHRpbmcuY3BwIEBuby11bmlmeQotCi0vLyBEZXJpdmVkIFNvdXJjZXMKLQotV0hMU0xTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMmYzNmZhNTMzODVlMTNjMzNiNmQ2NzA2ZDZi
NWYxYjdjM2FhZjRmLi5lMGJkYmI2ZjBlZmM1NWE0ODMzYWE5ZGUxYmUyNTc5MGE0ZmRjYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC05MTEsMTggKzkxMSw2IEBACiAJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NL
ZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovOyB9
OwogCQkzMTI4Q0E2QjE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNkEx
NDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTJDMEM0MTE0NkRDNkNDMDAx
NkM5MTEgLyogTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzEyRkY5
MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJEMjFBNEMyRjEwMEVCMTk5RCAv
KiBHUFVDb21tYW5kQnVmZmVyLmggKi87IH07Ci0JCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAv
KiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLzsgfTsKLQkJMzEy
RkY5MTMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEM0MjFBNEMy
RjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi87IH07Ci0JCTMxMkZG
OTE0MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMyMjFB
NEMyRjMwMEVCMTk5RCAvKiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCAqLzsgfTsK
LQkJMzEyRkY5MTUyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQg
LyogR1BVUXVldWUuaCAqLzsgfTsKLQkJMzEyRkY5MTYyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJl
bmRlclBpcGVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTJGRjhCOTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLzsg
fTsKLQkJMzEyRkY5MTcyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEy
RkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICov
OyB9OwotCQkzMTJGRjkxODIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCQjIxQTRD
MkYwMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggKi87IH07Ci0JCTMxMkZGOTE5MjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTJGRjkxQTIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWlu
LmggKi87IH07Ci0JCTMxMkZGOTFCMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDNTIxQTRD
MkY0MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oICovOyB9OwotCQkzMTJGRjkxQzIxQTRDMzY1MDBF
QjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVG
b3JtYXQuaCAqLzsgfTsKIAkJMzEzMTcxNTYxRkIwNzlFNTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzE3MTU0
MUZCMDc5RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEzNTkxMDYxRTdEREM3MzAwRjMwNjMwIC8qIFJU
Q0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzNTkxMDAxRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUNvbm5lY3Rpb25T
dGF0ZS5oICovOyB9OwogCQkzMTM1OTEwNzFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVy
aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxMzU5MTAxMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VHYXRoZXJpbmdTdGF0ZS5oICovOyB9
OwpAQCAtOTU3LDcgKzk0NSw2IEBACiAJCTMxNzQxQUFEMTY2MzY2MDkwMDhBNUI3RSAvKiBTaW11
bGF0ZWRDbGlja09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkz
MTdEM0ZGMzIxNTU5OUY0MDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTdEM0ZGMjIxNTU5OUUzMDAzNEUzQjkg
LyogUG9pbnRlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzE4MTVBMzExRjlBNkM4RjAwRkNCRjg5IC8qIEltYWdlQml0bWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQyNkJCRjFGODZE
MTg5MDA4RkYyNTUgLyogSW1hZ2VCaXRtYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTg0MzZERTIxQjlEQUFGMDBFRDM4M0UgLyogV2ViR1BV
TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
ODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5oICovOyB9OwogCQkzMTg4OTE2
MTFBQjdFRUExMDBFQTYyN0IgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNDE5OTkxQUIwREExNDAwNEU2NEUx
IC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgKi87IH07CiAJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4
NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE4RUFENEExRkE5MTE1NzAwOENFRjg2
IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE5ODQ4MDExQTFEODE3QjAwQTEz
MzE4IC8qIEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTk4NDdGRjFBMUQ4MTY3MDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQu
aCAqLzsgfTsKQEAgLTMyNjksOSArMzI1Niw2IEBACiAJCUExODg5MEFGMUFBMTNGMjUwMDI2QzMw
MSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE5NTZGMUMyMzMxQTY3NzAwNTdFOUQyIC8qIEpTQXBw
bGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE5NTZGMUIyMzMxQTY0NjAwNTdFOUQyIC8qIEpTQXBwbGVQYXlDYW5jZWxFdmVu
dC5oICovOyB9OwogCQlBMTk1NkYyMDIzMzFBOEM3MDA1N0U5RDIgLyogQXBwbGVQYXlTZXNzaW9u
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
OTU2RjFEMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25FcnJvci5oICovOyB9Owot
CQlBMTk1NkYyMzIzMzFBQ0YyMDA1N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MUY3MEIyMkNBRDhEQTAw
MTVCNDBEIC8qIFdITFNMUmVwbGFjZVdpdGguaCAqLzsgfTsKLQkJQTE5NTZGMjQyMzMxQUQyMTAw
NTdFOUQyIC8qIFdITFNMUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5o
ICovOyB9OwotCQlBMTk1NkYyNTIzMzFBRDUzMDA1N0U5RDIgLyogV0hMU0xGdW5jdGlvbkRlZmlu
aXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
MUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovOyB9
OwogCQlBMTlBRUEyMTFBQUE4MDg2MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTlB
RUExRTFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87
IH07CiAJCUExOUFFQTIyMUFBQTgwOEEwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE5QUVBMUQxQUFBODA2RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHAgKi87IH07CiAJCUExOUQ5MzRCMUFBMTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE5RDkzNDkxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTY5NTEsMjAgKzY5MzUsMTQgQEAKIAkJMUMyNEVFQTYxQzcyQTdCNDAwODBGOEZDIC8qIEpT
Rm9udEZhY2VTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNG
b250RmFjZVNldC5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9udEZhY2VT
ZXQuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzI0RUVBNzFD
NzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU0ZvbnRGYWNlU2V0Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
MUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdI
TFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENo
ZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
QzI4MUM2RTIyQjg3Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzMyNDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9udFZhcmlh
bnRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRW
YXJpYW50QnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMzMyNzcx
MjFDRjBCRTEwMDBEQzlGMiAvKiBXSExTTE5hbWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TE5hbWVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzMzMjc3MjIxQ0Yw
RDJFMDAwREM5RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVu
bmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzk2OUNGMUI3NDIx
MUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNDNERTY4MjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFp
dENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDdXJy
ZW50VHJhaXRDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNE
RTZBMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRUcmFpdENv
bGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNEQwREQxMjREOUYw
REIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhC
dWZmZXJNZW1iZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTBDNDk1MjJD
ODRGMjQwMEE2RTRCRSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzU5QjAxODIyMzg2ODc5MDA4NTM4MDUgLyogV0hM
U0xTY29wZWRTZXRBZGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFNjb3BlZFNldEFkZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAv
KiBGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250
RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjYyNjBGMUM2RTdDQTYw
MEFCNTI3QyAvKiBGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzZCOTVERDIyQzg1OEE0
MDBFNkYxNEYgLyogV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzZGRDhBQzI1MEEyOTREMDBENkU5MjAgLyog
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRQbGF0
Zm9ybURhdGFDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZE
OEFEMjUwQTJFNTMwMEQ2RTkyMCAvKiBHbHlwaFBhZ2VDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHbHlwaFBhZ2VDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNkZEOEFFMjUwQTMxMTUwMEQ2RTkyMCAvKiBGb250Q2FzY2FkZUNvcmVUZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjk3Myw3MCArNjk1MSwyNyBAQAogCQkxQzgxQjk1NjBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1ODBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0
MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEVudHJ5UG9pbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDODQwQjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEFkZHJlc3NTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5
OTIxRUM0MDA4MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRyeVBvaW50
SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4NDBCOUIyMUVDNDAwOTAw
RDA1MDBEIC8qIFdITFNMQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0QjIyQUExOUZGMDAx
QkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM4NkNBNEMyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzg2Q0E0RTIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVNZXRhbENvbnZl
cnRMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0RjIyQUEy
M0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM4RDI2QzkyMkMwOTQ1MzAwRDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJy
YXJ5VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEQyNkNFMjJDMDk1MTMwMEQx
MjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDOEQyNkQwMjJDMDlDREUwMEQxMjVGMyAvKiBsaWJjb21wcmVzc2lvbi50
YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291
cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliY29tcHJlc3Np
b24udGJkOyBwYXRoID0gdXNyL2xpYi9saWJjb21wcmVzc2lvbi50YmQ7IHNvdXJjZVRyZWUgPSBT
REtST09UOyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNCMjFFRDlE
RjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xIaWdoWm9tYmllRmluZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkRFMjFFRUI1RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xSZWN1cnNpb25DaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDQTBDMkUwMjFFRUI1RjUwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTQyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvblN0
YWdlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkU1MjFF
RUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNBMEMyRUEyMUVFRDZGNTAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkVDMjFFRUQ2RjYwMEExMTg2MCAvKiBXSExTTExpdGVy
YWxUeXBlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExpdGVyYWxUeXBlQ2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE4MkY2MjI0MkFFMDUw
MEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlNjcmlwdE9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0FGNTZEODI1MzAxNDU3MDAxN0I0NzIgLyogRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3REcmF3R2x5
cGhzUmVjb3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjU2REUyNTMw
MjQ1QTAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjVGRTg4MjJERUJDOEIwMDk0
NDBFMiAvKiBXSExTTEVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNM
UmVzb2x2YWJsZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXNvbHZhYmxlVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyog
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzNTIxREVENjQ5MDA2
RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJ
bnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlC
MzcyMURFRDY2QjAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM5MjFERjAzRjMw
MDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2QjRGODIxN0I4Mzkz
MDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNC
NkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkMxOTkwMzMyNDAw
QkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0RBQkQ2QjIyQzg0NzlBMDBCRDBBM0EgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU0MEJBOUM4NDYw
MEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0UzNDk3QTI2QjMzQjdBMDA4MzA2QkQgLyogR1BVRGV2
aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQ0UzNDk3QzI2QjMzQkFFMDA4MzA2QkQgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1l
bW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8q
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQTkyMUYy
QjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0
MiAvKiBXSExTTFR5cGVOYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyog
V0hMU0xUeXBlTmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xUeXBlTmFtZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCMjIxRjJCOTg2MDBGNDQ1NDIg
LyogV0hMU0xGdW5jdGlvbldyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uV3Jp
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I1MjFGNTBBQzcwMEY0
NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDRUNCM0I2MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5j
dGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uV3Jp
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjkyMUY1MEQxMDAw
RjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xOYXRpdmVGdW5jdGlvbldyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0VDQjNCQTIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyogV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnRyeVBvaW50
U2NhZmZvbGRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQzYyMUY1
OUM4NzAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0YwQkZENDIyOTg3MDY4MDBFRDIwNzQgLyogVGV4dFNpemVBZGp1c3Rt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTaXplQWRqdXN0bWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJv
YmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0g
L3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJ
MUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjYsMjIgKzc0MDEsNiBAQAogCQkz
MTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NLZXlmcmFtZXNSdWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMjhDQTY3MTQ3MzMxNTIwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4
Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVS
ZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQgLyogR1BV
U3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMTJGRjhCQjIxQTRDMkYwMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9k
dWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhCRDIxQTRDMkYxMDBFQjE5
OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21tYW5kQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5
RCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJGMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQgLyog
R1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzEyRkY4QzIyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QzMyMUE0QzJGMzAw
RUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZUZv
cm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDNDIxQTRDMkY0MDBF
QjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
MkZGOEM1MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY5MzkyMUE2MUM5
RjAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOTNC
MjFBNjFDQTAwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjkz
QzIxQTYxQ0ExMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTJGRjkzRDIxQTYxRjA3MDBFQjE5OUQgLyogSlNXZWJHUFVRdWV1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVF1ZXVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMkZGOTNFMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMxNzE1NDFGQjA3OUQxMDA4
RDkxRkMgLyogQ2FudmFzQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YW52YXNCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTY0LDggKzc0ODMs
NiBAQAogCQkzMTdEM0ZFRjIxNTU5OUUxMDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBQb2ludGVyRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTdEM0ZG
MTIxNTU5OUUyMDAzNEUzQjkgLyogUG9pbnRlckV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvaW50ZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxN0QzRkYy
MjE1NTk5RTMwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRl
ckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxODQzNkRCMjFCOURBQTAw
MEVEMzgzRSAvKiBXZWJHUFVMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTg0MzZERDIx
QjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHUFVMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzE4OUU2REIxNkIyMTAzNTAwMzg2RUEzIC8qIHBsdWdJbnMuY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5jc3M7IHBhdGggPSBwbHVnSW5zLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzE4RUFENEExRkE5MTE1NzAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNl
dHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxOEVBRDRDMUZBOTEzNTIw
MDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzY3Myw3ICs3NTkwLDYgQEAKIAkJMzM1MDNDOUYxMDE3OUFENzAwM0I0
N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MUY3MEIyMkNBRDhEQTAwMTVCNDBEIC8q
IFdITFNMUmVwbGFjZVdpdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXBsYWNlV2l0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNUM3NEZEMzIyOEExOTEyMDAwQzIxQTAgLyog
Q1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NHcmlk
SW50ZWdlclJlcGVhdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzVD
NzRGRDcyMjhBMTlBNjAwMEMyMUEwIC8qIENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzNjYyRjk4NDA0N0NFREJFNUREREFGQUEgLyogUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0
aE1MTWVuY2xvc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTExNCwxOSAr
OTAzMCw4IEBACiAJCTUxRkI2N0Q5MUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5zaW9u
U3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVT
aGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjEzMUU1QTFDNEYxNTYxMDAz
M0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyog
V0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNFMTJGIC8qIFdITFNMTmFtZVNwYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdITFNMTmFtZVNwYWNlLmg7IHBhdGggPSBBU1QvV0hMU0xOYW1lU3Bh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0
Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMkQwN0EzMjJGQkFCNDMwMEI5
MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHBy
ZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyREEzRDMyMjlFMUQz
OTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxl
TGlmZXRpbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMkUxQTE5MjI5N0Q2
RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAvKiBXSExTTENoZWNrUmVmZXJl
bmNlVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI0QkQ0ODAyMzI3N0UxNjAwOEY1
NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENo
ZWNrUmVmZXJlbmNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0
RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJG
REY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBX
SExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNGMDMyMkZCN0JERTAwNzZE
MzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDNzQyNTYxMDNDRjAwODUw
MDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3Jt
WFJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDNzUyNTYxMDND
RjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhS
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDOUEyNTYzQjIxMjAw
ODUwMDA3IC8qIEpTV2ViWFJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViWFJUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkx
MzgsMTIgKzkwNDMsOSBAQAogCQk1MjczQ0NBRDI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJC
dXR0b25TdGF0ZUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJSaWdpZFRy
YW5zZm9ybUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0NBRjI1
NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlZpZXdJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4MTUwIC8qIFdITFNMUGFyc2luZ01v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQYXJzaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MjkxNEMyQzIyRjkzRTVEMDA1NzgxNTAgLyogV0hMU0xBZGRyZXNzRXNj
YXBlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0
Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1WaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1
MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MkNCMTFEQjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZhdWx0RGVsZXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRGVmYXVsdERlbGV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9MYXllck1hbmFn
ZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAz
MDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzc3LDEzICsxMDY3OSwxMCBA
QAogCQk3QzdCRjk0OTI1MTZGQTU0MDA4MDg2ODIgLyogUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDN0JGOTRCMjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3Jt
YW5jZU1lYXN1cmVPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5NTAyNTE2RkI1NDAwODA4Njgy
IC8qIFBlcmZvcm1hbmNlTWVhc3VyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5j
ZU1lYXN1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzdDNzY5QzIyRjY3
RUNEMDAzMkJDQ0QgLyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xN
YW5nbGVkTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTMxRUQ2
MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTU9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzgxMzlBNTFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25S
ZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
T3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1l
ZFR5cGVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGVIYXNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODgyNEM0MjQ5RDdCMDUwMEVEOEZDNCAvKiBTVkdQ
YXRoU2VnVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNl
Z1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEUzNDkyMUU0QTMzOEUw
MDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01Db252ZXJ0QW55Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
OEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29udmVydEJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNTI3LDEwICsxMTQyNiw2IEBACiAJCTkxNzVDRTU5MjFFMjgxRUMw
MERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzVDRTVBMjFF
MjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzVDRTVBMjFFMjgxRUQw
MERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MTg2RjNCMzIzMjlGQjA1MDBB
RkY4NTcgLyogR1BVUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQjYyMzI5
RkI0RTAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0JBMjMyOUZFNjgwMEFGRjg1NyAvKiBHUFVQaXBl
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGlu
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQjhGMEIzMjE5NTNENjUwMDBD
MkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEzLDcgKzEyNjA4LDYgQEAKIAkJQTM3QTQyRTAyNTI3
QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzN0E0MkUyMjUyN0I0OUQwMEY3NUFGRiAv
KiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lv
blJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMzhBODdBMzI1MzhCRUU3MDAz
N0E0NzIgLyogR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRm
b3JtVHlwZXNNZXRhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MTIw
MzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudElPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzIxLDcgKzEyNjE1LDYgQEAKIAkJ
QTNCRjdFRjIyNTZDOEQ3MjAwNDRCQzc1IC8qIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JGN0VGNDI1NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JGN0VGNTI1NkM4RDc0MDA0
NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBLSFJQYXJhbGxlbFNo
YWRlckNvbXBpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBM0MzREM1RDI1
M0ExOTkyMDA2MUYzMkEgLyogR1BVUGxhdGZvcm1UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVQbGF0Zm9ybVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzRDQyQTg0MUYzM0JBMzYwMEE2NEI2MiAvKiBMYXlvdXRVbml0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVuaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MjExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDcwNywxMjEgKzE0NjAwLDE2IEBACiAJCUMxRjdCNzJGMjQ0OEYyQUMwMDEyNDU1NyAv
KiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQUdYQ29tcGlsZXJT
ZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFGN0I3MzAyNDQ4RjJB
QzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBR1hDb21w
aWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkxQkU2
RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjQy
MURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGODhBQTIyOTY2
QjBFMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xBU1REdW1wZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGODhBQzIy
OTY2QjBGMDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xB
U1REdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTEyMUI0QkQx
MDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMZXhl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMTBFOTEyMjFCNEJEMTAwMEI3
RjgzRCAvKiBXSExTTExleGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTGV4ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMzhBMTMyMURERUNEMzAwRjUxNkJBIC8qIFdITFNM
QnVpbHRJblNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFu
dGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMzhBMTUyMURERUNFOTAw
RjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFJlc291cmNlU2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExNzIxRERF
RDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29u
dGludWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb250aW51ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0
ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJvb2xlYW5MaXRlcmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZGV4RXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hM
U0xJbnRlZ2VyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAv
KiBXSExTTFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNM
QmFzZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZVNlbWFudGljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExT
TERvV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRG9XaGlsZUxvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNM
RnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVjbGFy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkUyMUNEODlDMTAw
MjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0
cnVjdHVyZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkYy
MUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xJZlN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMDIx
Q0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAxMjFD
RDg5QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5
IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmV0dXJuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdo
aWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFdoaWxlTG9vcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlv
bkF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBX
SExTTENvbW1hRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbW1hRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5
NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwOTIxQ0Q4
OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJh
eVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MEEyMUNEODlDQjAw
MjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFF1YWxpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcw
RDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNM
VHlwZUFyZ3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZUFyZ3VtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAvKiBXSExT
TFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAv
KiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJl
c3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hM
U0xDYWxsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENhbGxFeHByZXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAv
KiBXSExTTERvdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3
OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAv
KiBXSExTTEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUMyMUNE
ODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxRTIxQ0Q4OURD
MDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBX
SExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAv
KiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcy
MTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNM
QnVpbHRJblNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAv
KiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlv
bk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBXSExT
TFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI4MjFDRDg5RTUw
MDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3OSAvKiBXSExTTFR5cGVEZWZp
bml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZURlZmluaXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZURlY2xh
cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJCMjFDRDg5RTgw
MDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNM
UG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQb2ludGVyVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xB
c3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFzc2lnbm1lbnRFeHBy
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMxMjFDRDg5RUUw
MDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3
aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczMjIx
Q0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM3MjFDRDhB
MDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM4MjFDRDhBMDMw
MDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyog
V0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvZ3JhbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjFCRjc0MjIxQ0Q5NjNCMDAyMjc5NzkgLyogV0hMU0xTdGFu
ZGFyZExpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xTdGFuZGFyZExpYnJhcnkuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV0hMU0xTdGFuZGFyZExpYnJhcnkuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQzIxQkY3NDUyMUNEOTY5ODAwMjI3OTc5
IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeS50
eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU3MUQ5RTRFOTkwMEY1QjI0
QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzIxREYyRTgxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25W
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250VmFyaWF0aW9u
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5ODUyMUU4ODZBOTAw
M0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFZpc2l0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4NzIxRTg4NkFEMDAz
Qzk4NEQgLyogV0hMU0xWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmlzaXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4QTIxRTg4ODNFMDAzQzk4NEQgLyog
V0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xOYW1lUmVzb2x2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4QzIxRTg4ODNFMDAz
Qzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1lUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OEQyMUU4ODg4NDAw
M0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xO
YW1lQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThFMjFF
ODg4ODUwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TmFtZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OTcyMUU5
MEYyODAwM0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzIzNEE5OTkyMUU5MEYyOTAwM0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk5QTIxRTkwRjU2MDAzQzk4NEQgLyogV0hM
U0xJbmZlclR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW5mZXJUeXBlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlCMjFFOTBGNTcwMDNDOTg0RCAv
KiBXSExTTEluZmVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJbmZlclR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlEMjFFOTEwQkQwMDNDOTg0RCAvKiBX
SExTTFJlc29sdmluZ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXNvbHZpbmdUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFCMjFFOTJDMTgwMDNDOTg0RCAv
KiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJz
aXZlVHlwZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUMy
MUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUFEMjFFOTJDMTkwMDNDOTg0RCAvKiBX
SExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVj
dXJzaXZlVHlwZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0
QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTeW50aGVzaXpl
Q29uc3RydWN0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjEy
MUU5MkMxRDAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIzNEE5QjIyMUU5MkMxRjAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNh
dGVGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja0R1cGxpY2F0ZUZ1
bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUIzMjFFOTJD
MjEwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAv
KiBXSExTTEludHJpbnNpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBX
SExTTEludHJpbnNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzOThFQkQyMzBBMUI3NjAwNjQxNTA3
IC8qIFdITFNMTmFtZVNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmFtZVNwYWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBG
b250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdBRjIxRkFENTNGMDA0QzZERDEgLyog
V0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQaXBlbGluZURl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QjIyMUZCOERE
QTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMU2VtYW50aWNNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzI0QTU3QjMyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU2VtYW50aWNNYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xQcmVwYXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzI0QTU3QkIyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFyZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFByZXBhcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2
MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTIxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNl
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNDMUM2REIxOTQwMDE0NTFCNiAv
KiBGb250RmFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRm9udEZhY2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNG
b250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRG
YWNlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0
NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpT
Rm9udEZhY2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBE
MzUxMzUgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBX
SExTTFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVBcmd1bWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEz
NDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlv
bkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2VsZWN0
aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2
REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDI4LDIyOSArMTUyMTYsMjggQEAKIAkJRDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2
IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI2MTFDMUI5Q0QwMEM0NzcyNiAvKiBT
dWJmcmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJmcmFt
ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAxRDlBQjIxQjBDN0JG
MDAyM0I5QkMgLyogR1BVQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29sb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4NzkyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQ
VUJpbmRHcm91cExheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4N0EyMUM4NjQ1QjAwNjIyQUE2
IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVC
aW5kR3JvdXBMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3
QjIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAz
Mjg4NDIxQzlBMjBEMDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVM
YXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVsaW5l
TGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVBpcGVsaW5lTGF5b3V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThDIC8qIEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAw
NDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdFNTIyNkE2MzQyMDBFRUQ3RDkg
LyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJOYXZp
Z2F0b3IrR1BVLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0VEMjI3
NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2
aWdhdG9yR1BVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RUUyMjc0
MjgxNDAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JH
UFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RkQyMjc3QUY4MTAwRUVE
N0Q5IC8qIFdvcmtlck5hdmlnYXRvcitHUFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJXb3JrZXJOYXZpZ2F0b3IrR1BV
LmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0ZFMjI3N0FGODIwMEVF
RDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3JHUFUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyTmF2aWdh
dG9yR1BVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEQ3N0ZEMjI0MkVENDUw
MDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3RkYyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8q
IFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBG
NTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0RjIxNkZGQUMyMDAwRDcxREIgLyogV2Vi
R1BVQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVBZGFwdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUwMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFw
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRh
cHRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVQWRhcHRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAw
RjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2
aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAw
MDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAxQjgxMTIyMjEyNUFGQzAwNjI3QjZDIC8qIEdQVUNv
bG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHUFVDb2xvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMUI4MTE5MjIxMzVFQjkwMDYyN0I2QyAvKiBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVCdWZmZXJEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAxQjgxMUMyMjEzNjI3MzAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVC
dWZmZXJVc2FnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMUI4MTFEMjIx
MzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCdWZm
ZXJVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDIzMkI1ODIxQ0I0OUI3
MDA5NDgzQjkgLyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQVUJpbmRHcm91cExheW91dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAyNkY0N0QyMjBBMkFDNjAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUV4dGVudDNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
MjZGNDgwMjIwQTJCNzAwMEFDNUY0OSAvKiBHUFVFeHRlbnQzRC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVRXh0ZW50
M0QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4MzIyMEE0NzJGMDBB
QzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVUZXh0dXJlVXNhZ2UuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4NTIyMEE0NzcyMDBBQzVGNDkgLyog
R1BVVGV4dHVyZVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmVVc2FnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QjIyMEE1QjBCMDBBQzVGNDkgLyogR1BV
VGV4dHVyZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyNkY0OEMyMjBBNUJBRDAwQUM1RjQ5IC8qIEdQ
VVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMkMyNjkyMjE4MTQxNkQwMEQ4MThF
NCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzIxMUNFMjFBQzk1
NEUwMDc2M0NGMiAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDMyMTFD
RjIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAzMjExRDAyMUFDOTU0RjAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIxMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVF
cnJvclNjb3Blcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVFcnJvclNjb3Blcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDM1ODZCMjIyRDdGMkVBMDBEQTAyODQgLyogR1BVRXJyb3JT
Y29wZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3JTY29wZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDM2REQ4RDIwOEZGQzBDMDBGOUY0QjIgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RD
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzQzg0OUEyMUZGQzY2NzAwMDIy
MjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAzQzg0OUMyMUZGQzdGQzAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAzQzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVz
Y3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTEyMUM5QjUwRjAwMDMyQjc1IC8qIFdl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1
QTk5RTIyMUM5QjUwRjAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTQyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVs
aW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNUE5OUU1MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJH
UFVQaXBlbGluZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxh
eW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNUE5OUU2MjFDOUJGMkMw
MDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyNzBBNDBCQjJD
MDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1REQ2REQyMjM4ODQwNjAwOTdB
ODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNURENkRF
MjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1
REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYw
RDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0
OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJN
b2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MTVGQ0QyMTdGRTVDNjAw
OEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZD
RTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVT
aGFkZXJNb2R1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDY1QkU1NzIy
RkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3VwQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUJpbmRHcm91cEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDY1QkU1ODIyRkI2MTZEMDA3NkRENjAgLyogR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2QTlBMjEyMjAyNkM3QTAwODNDNjYyIC8qIEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEQwQ0ZEMTE0
NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21t
YW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2RUY1NTIyMjBCQTI2QTAw
MTg3MjRFIC8qIEdQVVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVV0aWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNkVGNTUzMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGls
c01ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVXRpbHNNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2Vy
dExpc3RDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RF
QUI4MEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4NDAzM0EyMjFDQkY1NDAwMDA3MjA1IC8qIEdQVUJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyogV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NDNBNEMyMEZFQzE2NTAwRkU4NjBF
IC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDg1RTY0QTIyMzZERUFFMDBDM0UxRTIgLyogR1BVQmluZEdyb3VwTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVCaW5kR3JvdXBNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA4NkZFOTYwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0Nv
bW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rQ29tbWFuZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5NzA5RDUzQUFCMDA1QkM3NEQg
LyogVW5saW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVbmxpbmtDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NF
MzgyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA4N0NFMzkyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVF1ZXVlTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMDg3Q0UzQTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUmVuZGVyUGFzc0Vu
Y29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NFbmNvZGVy
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNCMjFBQ0E5NDIw
MEJERTE3NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0MyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVURldmlj
ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGV2aWNlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNEMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlw
ZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0UyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVU3dhcENoYWluTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
ODdDRTNGMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBHUFVUZXh0dXJlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwODdDRTQwMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNDIyNDA2MDFEMDBGM0Y0NDAgLyogV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM1
MjI0MDYwMUQwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNGNDQwIC8qIFdlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDg5MDMzODIyNDA2Mjg5MDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzMzkyMjQwNjQyRDAwRjNG
NDQwIC8qIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDg5MDMzQTIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzM0MyMjQxQTk5RjAwRjNGNDQwIC8qIFdl
YkdQVUNvbXB1dGVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRlUGlwZWxp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4OTAzM0QyMjQxQTk5RjAwRjNG
NDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVDb21wdXRlUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5
MDMzRTIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDg5MDM0MDIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMkQyMjBEMEI5QzAwNThD
NTAyIC8qIEdQVUxvYWRPcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVTG9hZE9wLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMkYyMjBEMEJENTAwNThDNTAyIC8qIEdQVUxvYWRPcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVMb2FkT3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDA4QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVN0b3Jl
T3AuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAzMjIyMEQwRDBCMDA1
OEM1MDIgLyogR1BVU3RvcmVPcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTdG9yZU9wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM2MjIwRDE5REEwMDU4QzUwMiAvKiBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAzNzIyMEQxRDA1MDA1
OEM1MDIgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBHUFVDYW52YXNDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVQ2FudmFzQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwOUFDMDA1MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDlBQzAwNjIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBQzAwNzIzMTcxRjUy
MDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMEEy
MzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDA5QUMwMEIyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxl
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA5QUZBRkYyMkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmljZUVy
cm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAxMjJEMDJFNTMwMEM0NTM4QyAvKiBX
ZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXZp
Y2VFcnJvclNjb3Blcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAy
MjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVFcnJvckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDlBRkIwMzIyRDQwQ0M1MDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVFcnJvckZpbHRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwODIyRDU1NDI4
MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwQzIyRDU1RTkwMDBDNDUzOEMg
LyogR1BVVmFsaWRhdGlvbkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwRDIyRDU1RjNCMDBDNDUzOEMgLyog
R1BVVmFsaWRhdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVZhbGlkYXRpb25FcnJvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwRTIyRDU1RkY1MDBDNDUzOEMg
LyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVZhbGlkYXRp
b25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjE3MjJENjY5
NEUwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPdXRPZk1lbW9y
eUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMTkyMkQ2Njk4
QTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT3V0
T2ZNZW1vcnlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIyRDIy
RDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJy
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIzNzIyRDdENUM2MDBD
NDUzOEMgLyogR1BVT2JqZWN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVPYmplY3RCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYwMEUwQzI1OSAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEEyMEQ1NjIwOTJBMEE2MDBFMEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MEEzQTczMDE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyT3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MjIyMzA5RDc2MDBBMjI5MzUgLyogR1BV
U2FtcGxlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2FtcGxlckRlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjMyMjMwOUQ3NjAwQTIyOTM1
IC8qIEdQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVTYW1wbGVyRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjY4MjIzMEFBQ0IwMEEyMjkz
NSAvKiBHUFVTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNhbXBsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkIyMjMwQUNDMDAwQTIyOTM1IC8qIEdQVVNhbXBs
ZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNhbXBsZXJNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkMyMjMwQkI4RTAwQTIyOTM1IC8qIFdl
YkdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2FtcGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RDIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BVU2Ft
cGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTYW1wbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNkYyMjMwQzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNh
bXBsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEFEQjI3RTIyMzJGMEMwMDBBMjI5MzUgLyogV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjdGMjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaDsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJRDBBREIyOEEyMjM3NzM2MTAwQTIy
OTM1IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEFEQjI4QjIyMzc4NDJFMDBBMjI5MzUgLyogR1BVQ29sb3JTdGF0ZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyOEMyMjM3ODQyRTAwQTIyOTM1IC8qIEdQ
VUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY2MDlDNjcwMDEwMDMwN0U0
MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEIw
NTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlYXRlTGlua0NvbW1hbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQTIyNEVDNjI0MDA2MTA0OUMgLyogR1BVQmxl
bmREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBQjIyNEVDNjI0MDA2MTA0OUMgLyogR1BV
QmxlbmREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCbGVuZERlc2NyaXB0b3IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEI1NkVBRDIyNEVDRTIwMDA2MTA0OUMgLyogR1BVQ29s
b3JXcml0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvcldyaXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFFMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBHUFVDb2xvcldyaXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5
bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRT
dHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVB
MTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0
aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0YXRp
b25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDRBMjFF
Njg3MkYwMEU0MkE4OSAvKiBHUFVCdWZmZXJCaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1
ZmZlckJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNEMyMUU2
OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA0
RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
QnVmZmVyQmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDRF
MjFFNjk1RTIwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBCaW5kaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUJpbmRHcm91cEJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBC
RTEwNEYyMUU2OUY4MzAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEJFMTA1MDIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGlu
Zy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTIyMUU2QUEwRDAwRTQyQTg5IC8qIFdlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MzIxRTZBQTBE
MDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUx
MDVFMjFFNkJBRDMwMEU0MkE4OSAvKiBHUFVCaW5kR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
QmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDYwMjFFNkMw
RUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQmlu
ZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDYxMjFFNkMwRUIw
MEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
QmluZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNjIyMUU2
QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQmluZEdyb3Vw
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVD
MURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjAyMTgzRUIzMTAw
OUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYz
MjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGOTIxODQwNERBMDA5RUMx
REUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5l
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDQUFENTMyMjc3QzJBNjAwODAx
Q0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0OTIy
Mjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT3JpZ2lu
M0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDQ0E5NEEyMjI5OUY5NzAwNjk3
OUI2IC8qIEdQVU9yaWdpbjNELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPcmlnaW4zRC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDY5QzlDMjIyRTAwQzIwMDMyOTI3RSAvKiBHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dERl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBENjlDOUQyMjJFMDBD
MjAwMzI5MjdFIC8qIEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDg2NDg3MjFCNjRDQUEwMDNDOTgzQyAvKiBHUFVCdWZmZXJEZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OEMyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBEODY0OEQyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5
MTIxQjc2MEM0MDAzQzk4M0MgLyogR1BVQnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBE
ODY0OTIyMUI3NjBGMjAwM0M5ODNDIC8qIEdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTQyMUJBMTczRDAw
M0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTYy
MUJBMThGNDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ5ODIxQkExOUE3MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4SW5wdXREZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgz
QyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENo
YWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU2MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2Fw
Q2hhaW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJTdGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hhZGVyU3RhZ2UuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdQVVNoYWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNG
NzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5k
RW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEVBQ0Y4NDIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVy
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEVBQ0Y4NjIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVUZXh0dXJlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEVBQ0Y4ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEVBQ0Y4OTIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBFQUNGOEMyMTk0MDNDOTAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhFMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4RjIxOTQwQTIyMDAwRkE3
NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBFQUNGOTEyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjkyMjE5NDBBNUIwMDBGQTc1QyAv
KiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0ZBRTIxOUUzMEZEMDAwRkE3NUMgLyogR1BV
VGV4dHVyZUZvcm1hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZUZvcm1hdC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRS
YXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzczMTQz
RTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEY3NTU5ODIyMDM5MUMzMDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRl
eENhbGN1bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1
bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBGNzU1OTkyMjAzOTFDMzAw
MTE4MDU4IC8qIFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4MDU4IC8qIEdQVUxpbWl0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMaW1pdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVDMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpbmdMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDJDREI1RUQ2MzhGNDNBRjg2RjA3QUEyIC8qIEpTRXJy
b3JFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0Vycm9yRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkx
NjgsMTAzICsxODc1NSw2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07Ci0JCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAv
KiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmggKi8sCi0JCQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1
MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8sCi0JCQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3
OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCi0JCQkJQzIxQkY3MDkyMUNEODlD
QTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzAyMUNEODlFRDAw
MjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywKLQkJCQk1MjE1ODYyQzIy
OTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLywKLQkJCQlDMjFCRjcwQTIxQ0Q4OUNCMDAy
Mjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjZGQTIx
Q0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLywKLQkJCQlDMjFCRjcxRTIx
Q0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovLAotCQkJCUMyMUJGNkY2MjFDRDg5Qjcw
MDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MUEyMUNEODlE
ODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKLQkJCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2
QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzIyMjFDRDg5REYw
MDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzE2MjFDRDg5
RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDYyMUNE
ODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MzMy
MUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIx
QkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLywKLQkJCQk1MkNCMTFE
QjIyRkREQjJFMDA5RjBBNjQgLyogV0hMU0xEZWZhdWx0RGVsZXRlLmggKi8sCi0JCQkJQzIxQkY3
MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0J
CQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovLAot
CQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8sCi0J
CQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudC5oICovLAotCQkJCTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5
UG9pbnRUeXBlLmggKi8sCi0JCQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8q
IFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKLQkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5
NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKLQkJCQk1MjJEMDdBMzIy
RkJBQjQzMDBCOTA1QkUgLyogV0hMU0xFeHByZXNzaW9uLmNwcCAqLywKLQkJCQlDMjFCRjcwQzIx
Q0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDAyMUNE
ODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKLQkJCQlDMjFCRjczNTIxQ0Q4
OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywKLQkJCQkxQ0I2OUIzODIxREYw
M0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIz
NDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9yTG9vcC5oICovLAotCQkJCUMyMUJGNzA1
MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmggKi8sCi0JCQkJQzIx
QkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAot
CQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5o
ICovLAotCQkJCTUyMkRBM0QzMjI5RTFEMzkwMDQyRDE1MSAvKiBXSExTTEdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlLmggKi8sCi0JCQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZT
dGF0ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRl
eEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJ
bnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0JCQkJQzIxQkY2RjgyMUNEODlCQjAwMjI3OTc5IC8qIFdI
TFNMSW50ZWdlckxpdGVyYWwuaCAqLywKLQkJCQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyog
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM1MjFERUQ2NDkwMDZF
ODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzMyMjFDRDg5
RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTUy
MUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmggKi8sCi0JCQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50
ZXJFeHByZXNzaW9uLmggKi8sCi0JCQkJMUMzMzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNM
TmFtZWRUeXBlLmggKi8sCi0JCQkJQzIzOThFQkQyMzBBMUI3NjAwNjQxNTA3IC8qIFdITFNMTmFt
ZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAv
KiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzIxMjFDRDg5REUw
MDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMy
MUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgg
Ki8sCi0JCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8s
Ci0JCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVy
ZW5jZVR5cGUuaCAqLywKLQkJCQkzMzUxRjcwQjIyQ0FEOERBMDAxNUI0MEQgLyogV0hMU0xSZXBs
YWNlV2l0aC5oICovLAotCQkJCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29s
dmFibGVUeXBlLmggKi8sCi0JCQkJQzIxMzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVz
b3VyY2VTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MDgyMUNEODlDOTAwMjI3OTc5IC8qIFdI
TFNMUmVzb3VyY2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAv
KiBXSExTTFJldHVybi5oICovLAotCQkJCUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExT
TFNlbWFudGljLmggKi8sCi0JCQkJQzIxMzhBMTYyMURERUNGQjAwRjUxNkJBIC8qIFdITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLywKLQkJCQlDMjFCRjczNjIxQ0Q4OUYz
MDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAqLywKLQkJ
CQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
ICovLAotCQkJCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oICovLAotCQkJCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVu
dC5oICovLAotCQkJCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURl
ZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1
Y3R1cmVFbGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MTkyMUNEODlENzAwMjI3OTc5IC8qIFdITFNM
U3dpdGNoQ2FzZS5oICovLAotCQkJCUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3
aXRjaFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzFDMjFDRDg5REEwMDIyNzk3OSAvKiBXSExT
TFRlcm5hcnlFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8q
IFdITFNMVHlwZS5oICovLAotCQkJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5
cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNM
VHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNM
VHlwZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hM
U0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKLQkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyog
V0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCi0JCQkJN0M4NUIyMDEyMkZCMDQ4NTAwMzA2ODRGIC8q
IFdITFNMVW5uYW1lZFR5cGUuY3BwICovLAotCQkJCTFDMzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAv
KiBXSExTTFVubmFtZWRUeXBlLmggKi8sCi0JCQkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRGIC8q
IFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8sCi0JCQkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVB
IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0JCQkJQzIxQkY3MkIyMUNE
ODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFD
QjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LmNwcCAqLywKLQkJCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBX
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFCRjcxNDIxQ0Q4OUQzMDAyMjc5
NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oICovLAotCQkJCUMyMUJG
NzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCi0JCQkJ
QzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmggKi8sCi0JCQkpOwot
CQkJcGF0aCA9IEFTVDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTFDREQ0
NDY2MEJBOUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTI4NCwyNiArMTg3NzQsMjEgQEAKIAkJCXRh
YldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKLQkJMUNFQ0IzQUQyMUYyQjk2NDAw
RjQ0NTQyIC8qIE1ldGFsICovID0geworCQkxQ0UzNDk3ODI2QjMzQjVEMDA4MzA2QkQgLyogZ3B1
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQ0UzNDk3
QjI2QjMzQjhDMDA4MzA2QkQgLyogY29jb2EgKi8sCisJCQkJMUNFMzQ5N0EyNkIzM0I3QTAwODMw
NkJEIC8qIEdQVURldmljZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBncHU7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQkxQ0UzNDk3QjI2QjMzQjhDMDA4MzA2QkQgLyogY29j
b2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFDRUNC
M0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAgKi8s
Ci0JCQkJMUNFQ0IzQkIyMUY1MTFBQTAwRjQ0NTQyIC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmggKi8sCi0JCQkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25X
cml0ZXIuY3BwICovLAotCQkJCTFDRUNCM0IyMjFGMkI5ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0
aW9uV3JpdGVyLmggKi8sCi0JCQkJN0M3Qzc2OUMyMkY2N0VDRDAwMzJCQ0NEIC8qIFdITFNMTWFu
Z2xlZE5hbWVzLmggKi8sCi0JCQkJMUNFQ0IzQjUyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0
YWxDb2RlR2VuZXJhdG9yLmNwcCAqLywKLQkJCQkxQ0VDQjNCNjIxRjUwQUM3MDBGNDQ1NDIgLyog
V0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCAqLywKLQkJCQkxQ0VDQjNCODIxRjUwRDEwMDBGNDQ1
NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjkyMUY1
MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQkxQ0VD
QjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLywKLQkJ
CQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8s
Ci0JCQkJMUNFQ0IzQjEyMUYyQjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmNwcCAqLywK
LQkJCQkxQ0VDQjNCMDIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuaCAqLywKLQkJ
CQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1
bGF0b3IuY3BwICovLAotCQkJCUQwRjc1NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oICovLAorCQkJCTFDRTM0OTdDMjZCMzNCQUUwMDgzMDZC
RCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLywKIAkJCSk7Ci0JCQlwYXRoID0gTWV0YWw7CisJCQlw
YXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQkxRDAwMjY5
QTIzNzRCOUY4MDBDQTZDREYgLyogUGljdHVyZUluUGljdHVyZSAqLyA9IHsKQEAgLTIwNTA0LDgw
ICsxOTk4OSw2IEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OwotCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewotCQkJaXNh
ID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlEMDg3Q0UzNzIxQUNBOTQyMDBCREUx
NzQgLyogY29jb2EgKi8sCi0JCQkJRDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRH
cm91cC5oICovLAotCQkJCUQwNjVCRTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBB
bGxvY2F0b3IuaCAqLywKLQkJCQlEMEJFMTA0RTIxRTY5NUUyMDBFNDJBODkgLyogR1BVQmluZEdy
b3VwQmluZGluZy5oICovLAotCQkJCUQwQkUxMDUxMjFFNkE3MEUwMEU0MkE4OSAvKiBHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAyNDU0RDAyMUM0QTQxQzAwQjczNjI4IC8qIEdQ
VUJpbmRHcm91cExheW91dC5oICovLAotCQkJCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5QyAvKiBH
UFVCbGVuZERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyog
R1BVQnVmZmVyLmNwcCAqLywKLQkJCQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVm
ZmVyLmggKi8sCi0JCQkJRDBCRTEwNEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRp
bmcuaCAqLywKLQkJCQlEMEQ4NjQ4NzIxQjY0Q0FBMDAzQzk4M0MgLyogR1BVQnVmZmVyRGVzY3Jp
cHRvci5oICovLAotCQkJCUQwMUI4MTFEMjIxMzYzNkUwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2Fn
ZS5oICovLAotCQkJCUQwMDFEOUFCMjFCMEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovLAot
CQkJCUQwQURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5o
ICovLAotCQkJCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmggKi8s
Ci0JCQkJMzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywK
LQkJCQlEMDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8s
Ci0JCQkJRDA4OTAzM0YyMjQxQ0U0NjAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlci5o
ICovLAotCQkJCUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmUu
aCAqLywKLQkJCQlEMDg5MDMzOTIyNDA2NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5oICovLAotCQkJCUQwM0M4NDlBMjFGRkM2NjcwMDAyMjI3RiAvKiBHUFVEZXB0
aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhCRjIxQTRDMkYxMDBFQjE5
OUQgLyogR1BVRGV2aWNlLmNwcCAqLywKLQkJCQkzMTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyog
R1BVRGV2aWNlLmggKi8sCi0JCQkJRDA5QUZCMDgyMkQ1NTQyODAwQzQ1MzhDIC8qIEdQVUVycm9y
LmNwcCAqLywKLQkJCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BVRXJyb3IuY3BwICov
LAotCQkJCUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVFcnJvci5oICovLAotCQkJCUQw
OUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRlci5oICovLAotCQkJCUQwMzU4
NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5jcHAgKi8sCi0JCQkJRDAzNTg2
QjEyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmggKi8sCi0JCQkJRDAyNkY0N0Qy
MjBBMkFDNjAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8sCi0JCQkJRDBGNzU1OUYyMjAzQkEx
NDAwMTE4MDU4IC8qIEdQVUxpbWl0cy5oICovLAotCQkJCUQwOEFBMDJGMjIwRDBCRDUwMDU4QzUw
MiAvKiBHUFVMb2FkT3AuaCAqLywKLQkJCQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BV
T2JqZWN0QmFzZS5oICovLAotCQkJCUQwOUFGQjE5MjJENjY5OEEwMEM0NTM4QyAvKiBHUFVPdXRP
Zk1lbW9yeUVycm9yLmggKi8sCi0JCQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3IC8qIEdQVVBp
cGVsaW5lLmNwcCAqLywKLQkJCQk5MTg2RjNCMzIzMjlGQjA1MDBBRkY4NTcgLyogR1BVUGlwZWxp
bmUuaCAqLywKLQkJCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oICovLAotCQkJCUQwMDMyODg3MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBl
bGluZUxheW91dC5jcHAgKi8sCi0JCQkJRDAwMzI4ODYyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBp
cGVsaW5lTGF5b3V0LmggKi8sCi0JCQkJRDAwMzI4ODQyMUM5QTIwRDAwNjIyQUE2IC8qIEdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovLAotCQkJCUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMy
QSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8sCi0JCQkJRDAwMzkxNDEyMjI0OEQ0MDAwOTg5OThD
IC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlEMDMyMTFDRjIxQUM5
NTRFMDA3NjNDRjIgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCAqLywKLQkJCQkzMTJG
RjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJMzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi8sCi0JCQkJ
RDAzMjExRDAyMUFDOTU0RjAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8s
Ci0JCQkJRDAzMjExQ0UyMUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmgg
Ki8sCi0JCQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmgg
Ki8sCi0JCQkJMzEyRkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwNkE5QTIxMjIwMjZDN0EwMDgzQzY2MiAvKiBHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuaCAqLywKLQkJCQlEMEFEQjI2ODIyMzBBQUNCMDBBMjI5MzUgLyogR1BV
U2FtcGxlci5oICovLAotCQkJCUQwQURCMjYyMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVy
RGVzY3JpcHRvci5oICovLAotCQkJCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFk
ZXJNb2R1bGUuaCAqLywKLQkJCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oICovLAotCQkJCUQwOEFBMDMyMjIwRDBEMEIwMDU4QzUwMiAvKiBH
UFVTdG9yZU9wLmggKi8sCi0JCQkJMzEyRkY4QkEyMUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBD
aGFpbi5oICovLAotCQkJCUQwQURCMjdGMjIzMkYxNzMwMEEyMjkzNSAvKiBHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yLmggKi8sCi0JCQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1
cmUuaCAqLywKLQkJCQlEMDI2RjQ4QzIyMEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZv
cm1hdC5oICovLAotCQkJCUQwMjZGNDg1MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNh
Z2UuaCAqLywKLQkJCQlEMDZFRjU1MjIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLywK
LQkJCQlEMDlBRkIwRTIyRDU1RkY1MDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmNwcCAq
LywKLQkJCQlEMDlBRkIwRDIyRDU1RjNCMDBDNDUzOEMgLyogR1BVVmFsaWRhdGlvbkVycm9yLmgg
Ki8sCi0JCQkJRDBEODY0OUIyMUJBMUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaCAqLywKLQkJCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5oICovLAotCQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gZ3B1OwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMy
IC8qIGNhICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0
MzM3LDcgKzIzNzQ4LDYgQEAKIAkJCQk1N0Q4NDYyQTFGRUFGNTdGMDBDQTM2ODIgLyogd2ViYXV0
aG4gKi8sCiAJCQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAog
CQkJCTk5NkU1OURBMURGMDBENDUwMDY2MTJCOSAvKiB3ZWJkcml2ZXIgKi8sCi0JCQkJRDAwRjU5
M0UyMTZFQ0M0MzAwMEQ3MURCIC8qIHdlYmdwdSAqLywKIAkJCQk5N0FBQkNGNzE0RkEwOUI1MDA3
NDU3QUUgLyogd2Vic29ja2V0cyAqLywKIAkJCQlFMUVFOEFDNjI0MTJCMTZGMDBFNzk0RDYgLyog
d2VieHIgKi8sCiAJCQkpOwpAQCAtMjcwMjcsNyArMjY0MzcsNyBAQAogCQkJCUNEOUQ4MjdDMUM3
QkIyRUQwMDZGRjA2NiAvKiBjdiAqLywKIAkJCQkwRkU1RkJDOTFDM0RENTA2MDAwN0EyQ0EgLyog
ZGlzcGxheWxpc3RzICovLAogCQkJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJz
ICovLAotCQkJCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8sCisJCQkJMUNFMzQ5
NzgyNkIzM0I1RDAwODMwNkJEIC8qIGdwdSAqLywKIAkJCQk0NDFBRjBBNzBFQkE3QkJGMDA0NEVE
NEIgLyogaW9zICovLAogCQkJCUNEODkyRjVBMUZCNTJBQ0YwMDkzMzNEMiAvKiBpc28gKi8sCiAJ
CQkJQjI3NTM1NDkwQjA1MzgxNDAwMkNFNjRGIC8qIG1hYyAqLywKQEAgLTI3NDY0LDggKzI2ODc0
LDYgQEAKIAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tICovLAogCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExh
eWVyLmggKi8sCiAJCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0g
Ki8sCi0JCQkJMzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8sCi0J
CQkJMzE4NDM2REQyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLm1tICovLAogCQkJCTA3
RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAog
CQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5t
bSAqLywKIAkJCSk7CkBAIC0yODMyNCw4NCArMjc3MzIsNiBAQAogCQkJbmFtZSA9IG1hYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUMyMTBFOTBEMjFCNEJDQTQwMEI3Rjgz
RCAvKiBXSExTTCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLywKLQkJCQkxQ0VDQjNBRDIxRjJC
OTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8sCi0JCQkJQzIwRjg4QUEyMjk2NkIwRTAwRDYxMEZBIC8q
IFdITFNMQVNURHVtcGVyLmNwcCAqLywKLQkJCQlDMjBGODhBQzIyOTY2QjBGMDBENjEwRkEgLyog
V0hMU0xBU1REdW1wZXIuaCAqLywKLQkJCQkxQzZCOTVERDIyQzg1OEE0MDBFNkYxNEYgLyogV0hM
U0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICovLAotCQkJCUMyMzRBOUIyMjFF
OTJDMUYwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcCAqLywKLQkJ
CQlDMjM0QTlBRTIxRTkyQzFBMDAzQzk4NEQgLyogV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5oICovLAotCQkJCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuY3Bw
ICovLAotCQkJCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLywK
LQkJCQk1MjRCRDQ3RTIzMjc3RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVz
LmNwcCAqLywKLQkJCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVy
ZW5jZVR5cGVzLmggKi8sCi0JCQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hl
Y2tUZXh0dXJlUmVmZXJlbmNlcy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAw
IC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oICovLAotCQkJCTUyMkJBQjk2MjJFNkEz
NjIwMEM1NENFOSAvKiBXSExTTENvZGVMb2NhdGlvbi5oICovLAotCQkJCTFDODZDQTRCMjJBQTE5
RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2Q0E0
QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovLAotCQkJCTFD
QjVGRTg4MjJERUJDOEIwMDk0NDBFMiAvKiBXSExTTEVycm9yLmggKi8sCi0JCQkJMUNBMEMyRTQy
MUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovLAotCQkJ
CTFDQTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgg
Ki8sCi0JCQkJMUM4NDBCOTkyMUVDNDAwODAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2lu
dEl0ZW1zLmNwcCAqLywKLQkJCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuaCAqLywKLQkJCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyog
V0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLywKLQkJCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1
RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8sCi0JCQkJQzIzNEE5OUEyMUU5MEY1NjAw
M0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5jcHAgKi8sCi0JCQkJQzIzNEE5OUIyMUU5MEY1NzAw
M0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovLAotCQkJCUMyMzRBOUI3MjFFOTJDQzEwMDND
OTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovLAotCQkJCUMyMzRBOUI2MjFFOTJDQzAwMDND
OTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLywKLQkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4
M0QgLyogV0hMU0xMZXhlci5jcHAgKi8sCi0JCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8q
IFdITFNMTGV4ZXIuaCAqLywKLQkJCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAv
KiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOThEMjFFODg4ODQwMDND
OTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLywKLQkJCQlDMjM0QTk4RTIxRTg4ODg1MDAz
Qzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5oICovLAotCQkJCUMyMzRBOThBMjFFODg4M0UwMDND
OTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8sCi0JCQkJQzIzNEE5OEMyMUU4ODgzRTAw
M0M5ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8sCi0JCQkJNTIyNTZDQUEyMzBGMTRBRDAw
NDNFMTJGIC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCi0JCQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3
OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLywKLQkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5Nzkg
LyogV0hMU0xQYXJzZXIuaCAqLywKLQkJCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hM
U0xQYXJzaW5nTW9kZS5oICovLAotCQkJCUMyNEE1N0FGMjFGQUQ1M0YwMDRDNkREMSAvKiBXSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUMyNEE1N0JBMjFGRUFGRUEwMDRDNkREMSAv
KiBXSExTTFByZXBhcmUuY3BwICovLAotCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBX
SExTTFByZXBhcmUuaCAqLywKLQkJCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQ
cmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLywKLQkJCQk1MjJFMUExOTIyOTdENkQ0MDBF
NUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJQzIxQkY3
M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAotCQkJCTFDQUE4MkY2MjI0
MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAotCQkJCTFDQUE4
MkY3MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywKLQkJCQk1
MjZCM0YwMTIyRkI3QkREMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmNwcCAqLywKLQkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyog
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCi0JCQkJ
MUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8s
Ci0JCQkJMUNBMEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5o
ICovLAotCQkJCUMyMzRBOUFEMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFJlY3Vyc2l2ZVR5cGVD
aGVja2VyLmNwcCAqLywKLQkJCQlDMjM0QTlBQjIxRTkyQzE4MDAzQzk4NEQgLyogV0hMU0xSZWN1
cnNpdmVUeXBlQ2hlY2tlci5oICovLAotCQkJCUMyMzRBOTk5MjFFOTBGMjkwMDNDOTg0RCAvKiBX
SExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwICovLAotCQkJCUMyMzRBOTk3MjFFOTBGMjgwMDND
OTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCAqLywKLQkJCQlDMjM0QTk5RDIxRTkx
MEJEMDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBlLmggKi8sCi0JCQkJMUM1OUIwMTgyMjM4
Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLywKLQkJCQlDMjRBNTdCMjIx
RkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovLAotCQkJCUMyNEE1
N0IzMjFGQjhEREEwMDRDNkREMSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5oICovLAotCQkJCUMy
MUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCi0J
CQkJMUNEQUJENkIyMkM4NDc5QTAwQkQwQTNBIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuaCAqLywKLQkJCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFy
ZExpYnJhcnlVdGlsaXRpZXMuY3BwICovLAotCQkJCTFDOEQyNkM5MjJDMDk0NTMwMEQxMjVGMyAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oICovLAotCQkJCTFDRUNCM0E5MjFGMkI2
NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCi0JCQkJ
MUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LmggKi8sCi0JCQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNv
bnN0cnVjdG9ycy5jcHAgKi8sCi0JCQkJQzIzNEE5QjEyMUU5MkMxRDAwM0M5ODREIC8qIFdITFNM
U3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oICovLAotCQkJCUMyMzRBOUIzMjFFOTJDMjEwMDNDOTg0
RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgKi8sCi0JCQkJQzIz
NEE5QUMyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmggKi8sCi0JCQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5j
cHAgKi8sCi0JCQkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICov
LAotCQkJKTsKLQkJCXBhdGggPSBXSExTTDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yODg4NiwxNzggKzI4MjE2LDYgQEAKIAkJ
CXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlEMDBGNTkz
RTIxNkVDQzQzMDAwRDcxREIgLyogd2ViZ3B1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQlDMjEwRTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8s
Ci0JCQkJRDBCOEJCMDEyMUM0NkU3ODAwMEM3NjgxIC8qIEdQVUJpbmRHcm91cExheW91dEJpbmRp
bmcuaCAqLywKLQkJCQlEMEQ2OUM5RjIyMkUwMTVFMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZy5pZGwgKi8sCi0JCQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8qIEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEQ2OUM5RDIyMkUwMEMyMDAzMjky
N0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBCNTZFQUIy
MjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDAxQjgx
MTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJCUQw
MUI4MTFDMjIxMzYyNzMwMDYyN0I2QyAvKiBHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCi0JCQkJRDA5
M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuY3BwICovLAotCQkJCUQw
OTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXNDb250ZXh0LmggKi8sCi0JCQkJRDA5
M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaWRsICovLAotCQkJCUQw
MUI4MTEyMjIxMjVBRkMwMDYyN0I2QyAvKiBHUFVDb2xvci5pZGwgKi8sCi0JCQkJRDBBREIyOEMy
MjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlE
MEI1NkVBRTIyNEVDRTIwMDA2MTA0OUMgLyogR1BVQ29sb3JXcml0ZS5pZGwgKi8sCi0JCQkJRDAz
Qzg0OUUyMUZGQ0YwMDAwMDIyMjdGIC8qIEdQVUNvbXBhcmVGdW5jdGlvbi5pZGwgKi8sCi0JCQkJ
RDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRv
ci5pZGwgKi8sCi0JCQkJRDA5QUZCMDYyMkQ0MTdCMzAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVy
LmlkbCAqLywKLQkJCQlEMDI2RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRs
ICovLAotCQkJCUQwOEFBMDJEMjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAot
CQkJCUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAotCQkJCUQw
Q0NBOTRBMjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCi0JCQkJRDA5QUZC
MTcyMkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovLAotCQkJCUQw
MkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICov
LAotCQkJCUQwQURCMjYzMjIzMDlENzYwMEEyMjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5p
ZGwgKi8sCi0JCQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmgg
Ki8sCi0JCQkJRDBERThGQjkyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlLmlkbCAq
LywKLQkJCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8sCi0J
CQkJRDAyNkY0OEIyMjBBNUIwQjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCAq
LywKLQkJCQlEMEVBQ0ZBRTIxOUUzMEZEMDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdC5pZGwg
Ki8sCi0JCQkJRDAyNkY0ODMyMjBBNDcyRjAwQUM1RjQ5IC8qIEdQVVRleHR1cmVVc2FnZS5pZGwg
Ki8sCi0JCQkJRDA5QUMwMDYyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2
ZW50LmNwcCAqLywKLQkJCQlEMDlBQzAwNTIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaCAqLywKLQkJCQlEMDlBQzAwNzIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuaWRsICovLAotCQkJCUQwOUFGQjBDMjJENTVFOTAwMEM0NTM4QyAv
KiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsICovLAotCQkJCUQwRDg2NDk2MjFCQTE4RjQwMDNDOTgz
QyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEQ4NjQ5ODIx
QkExOUE3MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJ
RDBEODY0OTQyMUJBMTczRDAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwg
Ki8sCi0JCQkJRDAwNDg3RUIyMjc0MjgxMjAwRUVEN0Q5IC8qIE5hdmlnYXRvcitHUFUuaWRsICov
LAotCQkJCUQwMDQ4N0VEMjI3NDI4MTMwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuY3BwICovLAot
CQkJCUQwMDQ4N0VFMjI3NDI4MTQwMEVFRDdEOSAvKiBOYXZpZ2F0b3JHUFUuaCAqLywKLQkJCQlE
MDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLywKLQkJCQlEMDBGNTk0NjIx
NkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCi0JCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3
MURCIC8qIFdlYkdQVS5pZGwgKi8sCi0JCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdl
YkdQVUFkYXB0ZXIuY3BwICovLAotCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJH
UFVBZGFwdGVyLmggKi8sCi0JCQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFk
YXB0ZXIuaWRsICovLAotCQkJCUQwQkUxMDYxMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXAuY3BwICovLAotCQkJCUQwQkUxMDYwMjFFNkMwRUIwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXAuaCAqLywKLQkJCQlEMEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdy
b3VwLmlkbCAqLywKLQkJCQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdy
b3VwQmluZGluZy5oICovLAotCQkJCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmlkbCAqLywKLQkJCQlEMDg0MDMzRDIyMUUxODY0MDAwMDcyMDUgLyog
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBCRTEwNTIyMUU2QUEwRDAw
RTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMEJFMTA1MzIx
RTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJ
RDAwMzI4N0EyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5jcHAgKi8s
Ci0JCQkJRDAwMzI4NzkyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJpbmRHcm91cExheW91dC5o
ICovLAotCQkJCUQwMDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlv
dXQuaWRsICovLAotCQkJCUQwRDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIu
Y3BwICovLAotCQkJCUQwRDg2NDhDMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaCAq
LywKLQkJCQlEMEQ4NjQ4RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywK
LQkJCQlEMEJFMTA0QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICov
LAotCQkJCUQwQkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlk
bCAqLywKLQkJCQlEMDVERDZERDIyMzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAgKi8sCi0JCQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRC
dWZmZXIuaCAqLywKLQkJCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5pZGwgKi8sCi0JCQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRFbmNvZGVyLmNwcCAqLywKLQkJCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyog
V2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsICovLAotCQkJCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEy
QyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQwMEQ3N0ZEMjI0MkVE
NDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQlEMDBENzdG
RjIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLywKLQkJ
CQlEMDg5MDMzRDIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAq
LywKLQkJCQlEMDg5MDMzQzIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
LmggKi8sCi0JCQkJRDA4OTAzM0UyMjQxQTk5RjAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBl
bGluZS5pZGwgKi8sCi0JCQkJRDA4OTAzMzgyMjQwNjI4OTAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0
MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4OTAzMzUy
MjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsICov
LAotCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovLAot
CQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKLQkJCQlE
MDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKLQkJCQlEMDlB
RkIwMTIyRDAyRTUzMDBDNDUzOEMgLyogV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuY3BwICovLAot
CQkJCUQwOUFGQUZGMjJEMDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5o
ICovLAotCQkJCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNj
b3Blcy5pZGwgKi8sCi0JCQkJRDA5QUMwMEEyMzE3MzVCRTAwMTg3NzYyIC8qIFdlYkdQVURldmlj
ZUV2ZW50SGFuZGxlci5oICovLAotCQkJCUQwOUFDMDBCMjMxNzM1QkUwMDE4Nzc2MiAvKiBXZWJH
UFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsICovLAotCQkJCTkxODZGM0I2MjMyOUZCNEUwMEFGRjg1
NyAvKiBXZWJHUFVQaXBlbGluZS5jcHAgKi8sCi0JCQkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3
IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8q
IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKLQkJCQlEMEM0MTlGMTIxODNFQjMx
MDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCi0JCQkJRDA1
QTk5RTUyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJ
CQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywK
LQkJCQlEMDVBOTlFNjIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRs
ICovLAotCQkJCUQwMDQ4N0QyMjI0NTdCRUEwMEVFRDdEOSAvKiBXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwNUE5OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDVBOTlFMjIxQzlCNTBGMDAw
MzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEVB
Q0Y5MjIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3Bw
ICovLAotCQkJCUQwRUFDRjkxMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5oICovLAotCQkJCUQwRUFDRjkzMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgKi8sCi0JCQkJRDA4OTAzMzcyMjQwNjFBQzAwRjNG
NDQwIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBD
NDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oICovLAotCQkJCUQwQzQxOUVDMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaWRsICovLAotCQkJCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAv
KiBXZWJHUFVRdWV1ZS5jcHAgKi8sCi0JCQkJMzEyRkY5MzkyMUE2MUM5RjAwRUIxOTlEIC8qIFdl
YkdQVVF1ZXVlLmggKi8sCi0JCQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1
ZXVlLmlkbCAqLywKLQkJCQlEMDhBQTAzNzIyMEQxRDA1MDA1OEM1MDIgLyogV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwRUFDRjhDMjE5NDAzQzkwMDBGQTc1QyAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAotCQkJCUQwOEFBMDM2MjIwRDE5REEwMDU4
QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJRDBFQUNGOEYy
MTk0MEEyMjAwMEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywKLQkJCQlE
MEVBQ0Y4RTIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLywK
LQkJCQlEMEVBQ0Y5MDIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
aWRsICovLAotCQkJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHAgKi8sCi0JCQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lLmggKi8sCi0JCQkJRDBDNDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lLmlkbCAqLywKLQkJCQlEMEFEQjI4QTIyMzc3MzYxMDBBMjI5MzUgLyogV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEM0MTlGMjIxODNFRkVD
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBD
NDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwgKi8sCi0JCQkJRDBBREIyNkQyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuY3Bw
ICovLAotCQkJCUQwQURCMjZDMjIzMEJCOEUwMEEyMjkzNSAvKiBXZWJHUFVTYW1wbGVyLmggKi8s
Ci0JCQkJRDBBREIyNkYyMjMwQzFGMTAwQTIyOTM1IC8qIFdlYkdQVVNhbXBsZXIuaWRsICovLAot
CQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICov
LAotCQkJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAq
LywKLQkJCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlk
bCAqLywKLQkJCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oICovLAotCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUy
QUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKLQkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUy
QUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFD
IC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCi0JCQkJRDAwNDg3RTUyMjZBNjM0MjAwRUVEN0Q5
IC8qIFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQURCMjdFMjIzMkYw
QzAwMEEyMjkzNSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBFQUNG
ODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuY3BwICovLAotCQkJCUQwRUFDRjg0
MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmggKi8sCi0JCQkJRDBFQUNGODYyMTkz
QjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuaWRsICovLAotCQkJCUQwRUFDRjg4MjE5M0VF
NEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5jcHAgKi8sCi0JCQkJRDBFQUNGODcyMTkz
RUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmggKi8sCi0JCQkJRDBFQUNGODkyMTkz
RUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmlkbCAqLywKLQkJCQlEMDA0ODdGRDIy
NzdBRjgxMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8sCi0JCQkJRDBDQUFE
NTMyMjc3QzJBNjAwODAxQ0RGIC8qIFdvcmtlck5hdmlnYXRvckdQVS5jcHAgKi8sCi0JCQkJRDAw
NDg3RkUyMjc3QUY4MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovLAotCQkJKTsK
LQkJCXBhdGggPSB3ZWJncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlE
MDg3Q0UzNzIxQUNBOTQyMDBCREUxNzQgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVC
aW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSAqLywKLQkJCQlEMDIzMkI1ODIxQ0I0OUI3MDA5NDgz
QjkgLyogR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gKi8sCi0JCQkJRDA4NUU2NEEyMjM2REVB
RTAwQzNFMUUyIC8qIEdQVUJpbmRHcm91cE1ldGFsLm1tICovLAotCQkJCUQwRDg2NDkxMjFCNzYw
QzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzODIxQUNBOTQy
MDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODkwMzQwMjI0
MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKLQkJCQlE
MDg5MDMzQjIyNDE3OUI1MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0gKi8s
Ci0JCQkJRDA4N0NFM0MyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVURldmljZU1ldGFsLm1tICovLAot
CQkJCTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExh
eW91dC5jcHAgKi8sCi0JCQkJMUM4NkNBNEYyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5l
TWV0YWxDb252ZXJ0TGF5b3V0LmggKi8sCi0JCQkJQTM4QTg3QTMyNTM4QkVFNzAwMzdBNDcyIC8q
IEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oICovLAotCQkJCUQwODdDRTNCMjFBQ0E5NDIwMEJERTE3
NCAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQwODdDRTM5
MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVRdWV1ZU1ldGFsLm1tICovLAotCQkJCUQwODdDRTNBMjFB
Q0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovLAotCQkJCUQw
ODdDRTNEMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAot
CQkJCUQwQURCMjZCMjIzMEFDQzAwMEEyMjkzNSAvKiBHUFVTYW1wbGVyTWV0YWwubW0gKi8sCi0J
CQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICov
LAotCQkJCUQwODdDRTNFMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAq
LywKLQkJCQlEMDg3Q0UzRjIxQUNBOTQyMDBCREUxNzQgLyogR1BVVGV4dHVyZU1ldGFsLm1tICov
LAotCQkJCUQwNkVGNTUzMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlsc01ldGFsLm1tICovLAot
CQkJKTsKLQkJCXBhdGggPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMyODgzLDE4ICszMjA0MSw2IEBACiAJCQkJQzVE
NEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlE
IC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEyMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTEzMjFB
NEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzMTJGRjkxNDIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQg
LyogR1BVUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE2MjFBNEMzNjUwMEVCMTk5
RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTcyMUE0
QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzEyRkY5MTgyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFBMjFBNEMzNjUwMEVC
MTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTFCMjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxQzIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzk2NDBEMDBCRjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDQ4MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNjA3Myw3ICszNTIxOSw2IEBACiAJCQkJMEMzRjFGNUIxMEM4
ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2Rjk5NUEyNjFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxODQzNkRFMjFCOURBQUYwMEVE
MzgzRSAvKiBXZWJHUFVMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjcxRkFBNDQ2
MjAwMzdEMUU2IC8qIFdlYkhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjUx
ODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjE0Nyw5ICszNTI5Miw2IEBACiAJCQkJMkVCQkMzRDgx
QjY1OTg4MzAwRjUyNTNEIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkU5QjVEOEYxQjY2QTk0RTAwOEM2QTI0IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlck1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVs
RXZlbnRUZXN0TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTE5NTZGMjUyMzMxQUQ1MzAw
NTdFOUQyIC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlB
MTk1NkYyNDIzMzFBRDIxMDA1N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBMTk1NkYyMzIzMzFBQ0YyMDA1N0U5RDIgLyogV0hMU0xSZXBsYWNlV2l0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQxMURDQjExNjRDMzlBODAwRDQ5QkMxIC8qIFdpZHRoQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAwYjVmOGVlMjNlOTNiODRmMWFhNjczZTY5NDgyZWUx
ZjY3YzdmMDQ2Li5jOGRiNjg3OTlmOTYyMDAxNGMyYjQ0NTcyZGRkMmE1MzI3Mzg5N2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBA
IC0xMDQsMzQgKzEwNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHYW1lcGFk
KSBcCiAgICAgbWFjcm8oR2FtZXBhZEJ1dHRvbikgXAogICAgIG1hY3JvKEdhbWVwYWRFdmVudCkg
XAotICAgIG1hY3JvKEdQVSkgXAotICAgIG1hY3JvKEdQVUFkYXB0ZXIpIFwKLSAgICBtYWNybyhH
UFVCaW5kR3JvdXApIFwKLSAgICBtYWNybyhHUFVCaW5kR3JvdXBMYXlvdXQpIFwKLSAgICBtYWNy
byhHUFVCdWZmZXIpIFwKLSAgICBtYWNybyhHUFVCdWZmZXJVc2FnZSkgXAotICAgIG1hY3JvKEdQ
VUNhbnZhc0NvbnRleHQpIFwKLSAgICBtYWNybyhHUFVDb2xvcldyaXRlKSBcCi0gICAgbWFjcm8o
R1BVQ29tbWFuZEJ1ZmZlcikgXAotICAgIG1hY3JvKEdQVUNvbW1hbmRFbmNvZGVyKSBcCi0gICAg
bWFjcm8oR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVQ29tcHV0ZVBpcGVs
aW5lKSBcCi0gICAgbWFjcm8oR1BVRGV2aWNlKSBcCi0gICAgbWFjcm8oR1BVT3V0T2ZNZW1vcnlF
cnJvcikgXAotICAgIG1hY3JvKEdQVVBpcGVsaW5lTGF5b3V0KSBcCi0gICAgbWFjcm8oR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIpIFwKLSAgICBtYWNybyhHUFVRdWV1ZSkgXAotICAgIG1hY3Jv
KEdQVVJlbmRlclBhc3NFbmNvZGVyKSBcCi0gICAgbWFjcm8oR1BVUmVuZGVyUGlwZWxpbmUpIFwK
LSAgICBtYWNybyhHUFVTYW1wbGVyKSBcCi0gICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxlKSBcCi0g
ICAgbWFjcm8oR1BVU2hhZGVyU3RhZ2UpIFwKLSAgICBtYWNybyhHUFVTd2FwQ2hhaW4pIFwKLSAg
ICBtYWNybyhHUFVUZXh0dXJlKSBcCi0gICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdlKSBcCi0gICAg
bWFjcm8oR1BVVGV4dHVyZVZpZXcpIFwKLSAgICBtYWNybyhHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dCkgXAotICAgIG1hY3JvKEdQVVZhbGlkYXRpb25FcnJvcikgXAogICAgIG1hY3JvKEhpZ2hsaWdo
dFJlZ2lzdGVyKSBcCiAgICAgbWFjcm8oSGlnaGxpZ2h0KSBcCiAgICAgbWFjcm8oSFRNTEF0dGFj
aG1lbnRFbGVtZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ODJiNWYyNzVhMzgz
N2RlN2Y2Mjg1Yzg5YWY4MDgyNzIxNGQ1MzA5Li4zMzgxZmJmMWM0OTY0MDY3ZTYzOGVmNzVmZDY4
ZDdlMmMyZjA5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMzNiw5ICszMzYsNiBA
QAogI2lmIEVOQUJMRShXRUJHTDIpCiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
IgogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0
LmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogI2luY2x1
ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYzOTQsMTAgKzYzOTEsNiBAQCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0
IFN0cmluZyYgdHlwZQogICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4
dCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRyPFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0
KSB9IH07CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpczxHUFVDYW52YXND
b250ZXh0PigqY29udGV4dCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVm
UHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpjb250
ZXh0KSB9IH07Ci0jZW5kaWYKIAogICAgIHJldHVybiBSZW5kZXJpbmdDb250ZXh0IHsgUmVmUHRy
PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPigqY29udGV4dCkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjOThlMjA1
ZmFmNzRlNDhhNmRkZmI5ZWZmZWRiZTE4MjdmZWE5ZjM4Li5jNGRmMDM3YjM5NDM5ZDkxNjdjYTdm
YTNkYzA4YjhjNWJkMWVmNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzE4LDkgKzMxOCw2
IEBAIHVzaW5nIFJlbmRlcmluZ0NvbnRleHQgPSBWYXJpYW50PAogI2VuZGlmCiAjaWYgRU5BQkxF
KFdFQkdMMikKICAgICBSZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4sCi0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiwKICNlbmRpZgog
ICAgIFJlZlB0cjxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+LAogICAgIFJlZlB0cjxDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3NTc0MTQw
ODdhNmJjYTYzNWEzZmNjOTVlZmZmNmUyNGRlM2RmMjVlLi42ODA0YjBmNTU2Y2U2NDAwNTQ0NDIx
ZmVlNmFmYzc0MmVjZDFmZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0LDkgKzI0
LDYgQEAgdHlwZWRlZiAoCiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYmIEVO
QUJMRV9XRUJHTDIKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNpZiBk
ZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXNDb250
ZXh0IG9yCiAjZW5kaWYKICAgICBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAgICAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5pbgppbmRleCAxNjAxMWFmNmVmMjMwNDc2OTUyNTgxMThjNjQ5MmIwYmVhMDlkYTJi
Li4yYmNkNzNjM2I4MzgwNmJkMWI3ZTEwOWU2ZmM4OTY3YjFiY2Y5OWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5pbgpAQCAtOTAsNyArOTAsNiBAQCBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFFbmNyeXB0ZWRFdmVudCBjb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUEKIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZ
UFRFRF9NRURJQQogUG9pbnRlckV2ZW50Ci1HUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBjb25kaXRp
b25hbD1XRUJHUFUKIEVudGVyUGljdHVyZUluUGljdHVyZUV2ZW50IGNvbmRpdGlvbmFsPVBJQ1RV
UkVfSU5fUElDVFVSRV9BUEkKIFhSSW5wdXRTb3VyY2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgog
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudCBjb25kaXRpb25hbD1XRUJYUgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZjYwYzg5MjdhNTZiYzM1OGQxMDdiOWRi
OGVjZTlhNGMzNzEyMzZjMi4uMWQ4YmE2NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNkMjUw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Niw3ICs1
Niw2IEBAIFRleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpZGVvVHJhY2tMaXN0IGNv
bmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCi1XZWJHUFVEZXZp
Y2UgY29uZGl0aW9uYWw9V0VCR1BVCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTAxM2NlZGEwMzU3YWMxYWQyMGU1NTZm
ZjI3NzZhMzEzY2M1ZWUzNi4uNzRmOGEyZWJkNzAyNTRkYjk4YzcyZWFjZTNmMDc2YTYxMzI5Njcx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTgxLDEw
ICs4MSw2IEBACiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKFdFQlhSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
Ik5hdmlnYXRvci5oIgpAQCAtMjcwLDE0ICsyNjYsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6
OgogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIGlmICht
X2NvbnRleHQtPmlzV2ViR1BVKCkpIHsKLSAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBlKGNv
bnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25j
YXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKLSAgICAgICAgfQotI2VuZGlm
Ci0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQpAQCAtMzIz
LDE1ICszMTEsNiBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OgogICAgIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsKLSAg
ICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwotICAg
ICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7IGNvbnRl
eHQgfSB9OwotICAgIH0KLSNlbmRpZgotCiAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIApAQCAtMzQ4LDExICszMjcsNiBAQCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25z
dCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR0woSFRNTENhbnZh
c0VsZW1lbnQ6OnRvV2ViR0xWZXJzaW9uKHR5cGUpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKLSAg
ICAgICAgcmV0dXJuIGdldENvbnRleHRXZWJHUFUodHlwZSk7Ci0jZW5kaWYKLQogICAgIHJldHVy
biBudWxscHRyOwogfQogCkBAIC00OTUsNDcgKzQ2OSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0woV2ViR0xWZXJzaW9uIHR5
cGUsCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1i
b29sIEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQot
ewotICAgIHJldHVybiB0eXBlID09ICJncHUiOwotfQotCi1HUFVDYW52YXNDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmIHR5cGUpCi17
Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBl
KHR5cGUpKTsKLSAgICBBU1NFUlQoIW1fY29udGV4dCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50KCku
c2V0dGluZ3MoKS53ZWJHUFVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgbV9jb250ZXh0ID0gR1BVQ2FudmFzQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAo
bV9jb250ZXh0KSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIg
YW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgotICAgICAg
ICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdQVUNhbnZhc0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwotfQot
Ci1HUFVDYW52YXNDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVShj
b25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFz
RWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0
aW5ncygpLndlYkdQVUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBp
ZiAobV9jb250ZXh0ICYmICFtX2NvbnRleHQtPmlzV2ViR1BVKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBjcmVhdGVDb250
ZXh0V2ViR1BVKHR5cGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVDYW52YXNDb250ZXh0
Kj4obV9jb250ZXh0LmdldCgpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIGJv
b2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICByZXR1cm4gdHlwZSA9PSAiYml0bWFwcmVuZGVyZXIiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGY2NzhmMGVkYTNkOTI1NDZiNjUxMWZj
YzA4MjlkM2FkYjg4NjE5M2IuLjBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFlODk3
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTg5LDEyICs4
OSw2IEBAIHB1YmxpYzoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250ZXh0
V2ViR0woV2ViR0xWZXJzaW9uIHR5cGUsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsgfSk7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJHUFVU
eXBlKGNvbnN0IFN0cmluZyYpOwotICAgIEdQVUNhbnZhc0NvbnRleHQqIGNyZWF0ZUNvbnRleHRX
ZWJHUFUoY29uc3QgU3RyaW5nJik7Ci0gICAgR1BVQ2FudmFzQ29udGV4dCogZ2V0Q29udGV4dFdl
YkdQVShjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCiAgICAgc3RhdGljIGJvb2wgaXNCaXRtYXBS
ZW5kZXJlclR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0KiBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRt
YXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0KiBnZXRDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29uc3QgU3RyaW5nJiwgSW1hZ2VCaXRt
YXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaWRsCmluZGV4IGM2ZjFkMGZjNDBkZWUxNTQ3Y2ZmZDdjN2NjYzQ1ZTdhY2I3
MmEwNjYuLmE2Nzc5ZmRhOTk1N2RlYmYwOTIzYzcyNWFkMjNmZWIxMGM2ODQzZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCkBAIC0zMCw5ICszMCw2IEBAIHR5
cGVkZWYgKAogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wyKSAmJiBFTkFCTEVfV0VC
R0wyCiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBvcgotI2VuZGlmCi0jaWYgZGVmaW5lZChF
TkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCi0gICAgR1BVQ2FudmFzQ29udGV4dCBvcgog
I2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IG9yIAogICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCkgUmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5MmMwM2MxOWU0
ZjcxNjRlOGFkODdhODllYmQ2ZDUwNDNmNWI1Y2IyLi43MTliNjMxZTAyNTI2ODdkMDM0YzZlNDFl
MWU3ZmM5MjdkYjFjMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02NCw5ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNXZWJHTDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1dlYkdMMigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1dl
YkdMKCkgY29uc3QgeyByZXR1cm4gaXNXZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9Ci0jaWYgRU5B
QkxFKFdFQkdQVSkKLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHUFUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzR1BVQmFzZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCmluZGV4IGM1ODc0YzcwODc0MTc3OTAyOTQ1OGZiOTJjZWNhNmQ0NmJmNmNhMGYu
LjYxZjc2YzFjZDU4OGY2ODcxZTYwYjM1ZWViMGJkNWVhZDVlYTVmOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFk
aWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlRWxlbWVudC5oIgpAQCAtNjIsNyArNjEsNiBAQAogI2luY2x1ZGUgIkpTSW1hZ2VTbW9vdGhp
bmdRdWFsaXR5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURldmlj
ZS5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgog
I2luY2x1ZGUgIlBhdHRlcm4uaCIKQEAgLTg1LDcgKzgzLDYgQEAKICNpbmNsdWRlICJXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNp
bmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTEwMSw1MyArOTgsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLXN0YXRpYyBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzSWZDb250ZXh0TWF0Y2hlc0Rldmlj
ZShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0LCBXZWJHUFVEZXZpY2UmIGRldmljZSkK
LXsKLSAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpIHsKLSAgICAgICAgYXV0
byYgY29udGV4dEdQVSA9IGRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpOwotICAg
ICAgICBpZiAoYXV0byogd2ViR1BVU3dhcENoYWluID0gY29udGV4dEdQVS5zd2FwQ2hhaW4oKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8qIGdwdVN3YXBDaGFpbiA9IHdlYkdQVVN3YXBDaGFpbi0+
c3dhcENoYWluKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3B1U3dhcENoYWluID09IGRldmlj
ZS5kZXZpY2UoKS5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRN
TENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUuY2FudmFzQmFzZSgpKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHRHUFUu
Y2FudmFzQmFzZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogUmVmPEluc3BlY3Rv
ckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDYW52YXMoY29u
dGV4dCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZjxJbnNwZWN0b3JDYW52YXM+IElu
c3BlY3RvckNhbnZhczo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNhbnZhcyhkZXZpY2UpKTsKLX0KLSNlbmRpZgotCiBJ
bnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KQogICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9y
eTo6Y3JlYXRlSWRlbnRpZmllcigpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0jaWYg
RU5BQkxFKFdFQkdQVSkKLSAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlz
IHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KLSAgICBBU1NFUlQoIWlzPEdQ
VUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLUluc3BlY3RvckNhbnZhczo6SW5zcGVjdG9yQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNl
KQotICAgIDogbV9pZGVudGlmaWVyKCJjYW52YXM6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpKQotICAgICwgbV9jb250ZXh0KGRldmljZSkKLXsKIH0KLSNlbmRpZgog
CiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQo
KSBjb25zdAogewpAQCAtMTY1LDE5ICsxMjUsNiBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVj
dG9yQ2FudmFzOjpjYW52YXNFbGVtZW50KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0LmNhbnZhc0Jhc2UoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VX
cmFwcGVyKSAtPiBIVE1MQ2FudmFzRWxlbWVudCogewotICAgICAgICAgICAgYXV0byYgZGV2aWNl
ID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07
Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpj
YW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbnZhc0VsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAg
W10gKE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NiwyMiArMTMzLDYgQEAgSFRNTENhbnZhc0Vs
ZW1lbnQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotV2ViR1BVRGV2aWNlKiBJbnNwZWN0
b3JDYW52YXM6OmRldmljZUNvbnRleHQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBkZXZpY2VX
cmFwcGVyID0gV1RGOjpnZXRfaWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+
PihtX2NvbnRleHQpKQotICAgICAgICByZXR1cm4gJmRldmljZVdyYXBwZXItPmdldCgpOwotICAg
IHJldHVybiBudWxscHRyOwotfQotCi1ib29sIEluc3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JD
YW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0g
ICAgaWYgKGF1dG8qIGRldmljZSA9IGRldmljZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGNh
bnZhc0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoY29udGV4dCwgKmRldmljZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotI2VuZGlmCi0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckNh
bnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9jb250ZXh0LApAQCAtMjA5LDEyICsxNDAsNiBAQCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
ICAgICAgICAgICAgYXV0byYgY29udGV4dCA9IGNvbnRleHRXcmFwcGVyLmdldCgpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIHsKLSAgICAgICAgICAg
IGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZGV2aWNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgfSwKLSNlbmRpZgogICAg
ICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1LDExICsxNzAsNiBAQCBKU0M6OkpT
VmFsdWUgSW5zcGVjdG9yQ2FudmFzOjpyZXNvbHZlQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0
KiBleGVjKSBjb25zdAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKCk7
CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4gZGV2aWNlV3JhcHBlcikgewotICAgICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBkZXZpY2VXcmFwcGVyLmdldCgpKTsKLSAg
ICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUoKTsK
QEAgLTI2NCwyMSArMTg0LDYgQEAgSGFzaFNldDxFbGVtZW50Kj4gSW5zcGVjdG9yQ2FudmFzOjpj
bGllbnROb2RlcygpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdy
YXBwZXIuZ2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCkuY3Nz
Q2FudmFzQ2xpZW50cygpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAg
IFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIp
IHsKLSAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7Ci0KLSAg
ICAgICAgICAgIEhhc2hTZXQ8RWxlbWVudCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNh
bnZhc1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMo
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZh
c0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNFbGVtZW50Q2xpZW50cy5hZGQoY2FudmFz
RWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGNhbnZhc0VsZW1lbnRDbGllbnRzOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAg
IFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8RWxlbWVudCo+KCk7CkBAIC0zMTcsNyArMjIyLDYgQEAg
dm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSgpCiAKICAgICBhdXRvKiBj
b250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBG
SVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFz
OiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGNvbnRl
eHQtPnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQpAQCAt
ODQ0LDcgKzc0OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oU3RyaW5n
JiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvCiAKICAgICBhdXRvKiBjb250
ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBz
dXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGlmIChpczxJ
bWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpICYmIHNob3VsZFNuYXBzaG90Qml0
bWFwUmVuZGVyZXJBY3Rpb24obmFtZSkpCiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVl
OwpAQCAtOTI4LDExICs4MzEsNiBAQCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNw
ZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAotI2lmIEVOQUJMRShX
RUJHUFUpCi0gICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4p
IHsKLSAgICAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q2FudmFzOjpDb250ZXh0VHlwZTo6V2Vi
R1BVOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTk5NiwyOCArODk0LDYgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICNlbmRp
ZgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLSAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBk
ZXZpY2VXcmFwcGVyKSAtPiBDb250ZXh0QXR0cmlidXRlc1R5cGUgewotICAgICAgICAgICAgYXV0
byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdCBh
dXRvJiBvcHRpb25zID0gZGV2aWNlLmFkYXB0ZXIoKS5vcHRpb25zKCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IFByb3RvY29sOjpDYW52YXM6OkNv
bnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgp
OwotICAgICAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBwb3dlclByZWZlcmVuY2UgPSBvcHRp
b25zLT5wb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwb3dl
clByZWZlcmVuY2UudmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBvd2Vy
UHJlZmVyZW5jZTo6TG93UG93ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0QXR0
cmlidXRlc1BheWxvYWQtPnNldFBvd2VyUHJlZmVyZW5jZSgibG93LXBvd2VyIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEdQVVBv
d2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRQb3dlclByZWZlcmVuY2UoImhpZ2gtcGVyZm9y
bWFuY2UiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfSwKLSNlbmRpZgogICAgICAgICBbXSAoTW9ub3N0YXRl
KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTA0OSw3ICs5MjUsNiBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6
UmVjb3JkaW5nPiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VPYmplY3RGb3JSZWNvcmRpbmcoKQog
CiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4
dCk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNw
ZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNl
CiAKICAgICBQcm90b2NvbDo6UmVjb3JkaW5nOjpUeXBlIHR5cGU7CiAgICAgaWYgKGlzPENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRD4oY29udGV4dCkpCkBAIC0xMjgxLDcgKzExNTYsNiBAQCBSZWY8
UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwog
ICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdz
IGZvciBXZWJHUFVEZXZpY2UKIAogICAgIGF1dG8gaW5pdGlhbFN0YXRlUGF5bG9hZCA9IFByb3Rv
Y29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZTo6Y3JlYXRlKCkucmVsZWFzZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggOGE0N2RlYzI1YWQ2
Yzg4MzEzYzdkNGFkNmYyNTA5NjFjMDA2MmVmZi4uNmE5OWVjZmY0N2I1ODBlYzRjNjk2MTAxMGZk
NjUwMWZkYTM1MzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUg
IldlYkdQVURldmljZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FudmFzR3JhZGllbnQ7CkBAIC02MCwyMCArNTYsMTIgQEAgY2xhc3MgVHlwZWRPTUNTU0ltYWdl
VmFsdWU7CiBjbGFzcyBJbnNwZWN0b3JDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bnNwZWN0b3JDYW52YXM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNhbnZh
cz4gY3JlYXRlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQot
ICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQ2FudmFzPiBjcmVhdGUoV2ViR1BVRGV2aWNlJik7Ci0j
ZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzQ29udGV4
dCgpIGNvbnN0OwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KCkgY29uc3Q7
CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFdlYkdQVURldmljZSogZGV2aWNlQ29udGV4dCgp
IGNvbnN0OwotICAgIGJvb2wgaXNEZXZpY2VGb3JDYW52YXNDb250ZXh0KENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmKSBjb25zdDsKLSNlbmRpZgotCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc29s
dmVDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTExNSw5ICsxMDMsNiBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmKTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvckNhbnZhcyhXZWJH
UFVEZXZpY2UmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBhcHBlbmRBY3Rpb25TbmFwc2hvdElmTmVl
ZGVkKCk7CiAKQEAgLTE1NSw5ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgVmFyaWFudDwKICAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiwKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURl
dmljZT4sCi0jZW5kaWYKICAgICAgICAgTW9ub3N0YXRlCiAgICAgPiBtX2NvbnRleHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggYzEyMTUyMzA3MWEwMjY4ODhjYmQ2MDgwMzFhZDE1ZGM4NWFmMTcxOS4uZmUy
MDZhZWEzNWU2NzkzM2UyMDE5ZmM1YWYxZTkzYWZkYTBlMzgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTY5
LDcgKzY5LDYgQEAKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJE
ZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgot
I2luY2x1ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAj
aW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC04MCwxMCArNzksNiBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtMTEyMiw0MyArMTExNyw2IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
c1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFz
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAg
ICBjYW52YXNBZ2VudC0+ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZp
Y2UpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2Vi
R1BVRGV2aWNlKGRldmljZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4m
IG5ld1N3YXBDaGFpbikKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+d2ls
bENvbmZpZ3VyZVN3YXBDaGFpbihjb250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2
aWNlLCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAg
Y2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKGRldmljZSwgcGlwZWxpbmUpOwot
fQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBl
bGluZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BV
UGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZhc0FnZW50
LT53aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKHBpcGVsaW5lKTsKLX0KLQotSW5zdHJ1bWVudGlu
Z0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzKFdl
YkdQVURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzKGRl
dmljZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQotI2VuZGlmCi0KIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFt
ZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsK
ICAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nQW5pbWF0aW9uQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3ZDVlN2Q1N2JmOTExZmRkZjkwZWQ0MDBh
MjI1YWZhMDgzZTZjODcxLi4zMWYwNWM1MGY4MDVkYjU3OWI4YzkzMGJjOTBiOWY2MWE5MmZhYzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCkBAIC01OSwxMSArNTksNiBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVD
YW52YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogY2xhc3MgU2NyaXB0
QXJndW1lbnRzOwpAQCAtMTA0LDExICs5OSw2IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BV
KQotY2xhc3MgV2ViR1BVRGV2aWNlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotI2VuZGlmCi0K
IGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogCiBzdHJ1Y3QgQ29tcHV0ZWRFZmZl
Y3RUaW1pbmc7CkBAIC0zMDMsMTMgKzI5Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c1dlYkdMUHJvZ3JhbURpc2FibGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFBy
b2dyYW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURl
dmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURl
dmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFz
Q29udGV4dCYsIFdlYkdQVVN3YXBDaGFpbiYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdl
YkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGlj
IHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlm
CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5
ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKQEAgLTUxMywxNCArNDk2LDYg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbURpc2FibGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNX
ZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJv
Z3JhbSYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVXZWJHUFVEZXZpY2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2Um
KTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIFdlYkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxDb25maWd1
cmVTd2FwQ2hhaW5JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBHUFVDYW52YXNDb250ZXh0Jiwg
V2ViR1BVU3dhcENoYWluJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlwZWxp
bmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVEZXZpY2UmLCBXZWJHUFVQaXBlbGlu
ZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBXZWJHUFVQaXBlbGluZSYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKFdlYkdQVURldmljZSYpOwotI2VuZGlmCiAK
ICAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5n
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9uJik7CkBAIC0xNDc1LDQzICsxNDUwLDYgQEAgaW5s
aW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdo
dGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNl
KFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGRl
dmljZSkpCi0gICAgICAgIGRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoKmFnZW50cywgZGV2aWNl
KTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJv
eVdlYkdQVURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50cyhkZXZpY2UpKQotICAgICAgICB3aWxsRGVzdHJveVdlYkdQVURldmljZUltcGwo
KmFnZW50cywgZGV2aWNlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUs
IFdlYkdQVVN3YXBDaGFpbiYgbmV3U3dhcENoYWluKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzKGNvbnRleHRHUFUuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
Ci0gICAgICAgIHdpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKCphZ2VudHMsIGNvbnRleHRHUFUs
IG5ld1N3YXBDaGFpbik7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQVVBp
cGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9p
ZCgpKTsKLSAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkZXZpY2Up
KQotICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgZGV2aWNlLCBw
aXBlbGluZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMocGlwZWxpbmUuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKLSAgICAgICAgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZUltcGwoKmFnZW50cywgcGlwZWxp
bmUpOwotfQotI2VuZGlmCi0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYg
ZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA1NGVkODQwYmUwMTgy
N2QxNzJhNGY4ZjliMzFiOTQ0MDY2NWE3NzcwLi5hMzBlMjE2NDNhMTU3YTgyYzVkZDdlNWI0ZDg1
ODQwYjc0ZmE1MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclNoYWRlclByb2dyYW0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIgogCi0jaWYgRU5BQkxFKFdF
QkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIklu
c3BlY3RvckNhbnZhcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFj
dG9yeS5oPgpAQCAtNDIsMTUgKzQyLDYgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgot
I2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGlu
ZS5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02Miwx
MyArNTMsNiBAQCBSZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbTo6Y3JlYXRlKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbQogfQogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoV0VCR1BVKQotUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclBy
b2dyYW06OmNyZWF0ZShXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZhcyYg
aW5zcGVjdG9yQ2FudmFzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclNo
YWRlclByb2dyYW0ocGlwZWxpbmUsIGluc3BlY3RvckNhbnZhcykpOwotfQotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoV0VCR0wpCiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JD
YW52YXMpCiAgICAgOiBtX2lkZW50aWZpZXIoInByb2dyYW06IiArIElkZW50aWZpZXJzRmFjdG9y
eTo6Y3JlYXRlSWRlbnRpZmllcigpKQpAQCAtNzksMTYgKzYzLDYgQEAgSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIElu
c3BlY3RvckMKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLUluc3BlY3RvclNoYWRl
clByb2dyYW06Okluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5l
LCBJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcykKLSAgICA6IG1faWRlbnRpZmllcigi
cGlwZWxpbmU6IiArIElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAg
ICwgbV9jYW52YXMoaW5zcGVjdG9yQ2FudmFzKQotICAgICwgbV9wcm9ncmFtKHBpcGVsaW5lKQot
ewotICAgIEFTU0VSVChtX2NhbnZhcy5kZXZpY2VDb250ZXh0KCkpOwotfQotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06OnBy
b2dyYW0oKSBjb25zdAogewpAQCAtOTgsMTUgKzcyLDYgQEAgV2ViR0xQcm9ncmFtKiBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFtKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLVdlYkdQVVBpcGVsaW5lKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwaXBlbGlu
ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHBpcGVsaW5lV3JhcHBlciA9IFdURjo6Z2V0X2lm
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+PihtX3Byb2dyYW0pKQotICAg
ICAgICByZXR1cm4gJnBpcGVsaW5lV3JhcHBlci0+Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIHN0YXRpYyBXZWJHTFNoYWRlciogc2hh
ZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNh
bnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewpAQCAtMTI3LDMxICs5Miw2IEBAIHN0YXRp
YyBXZWJHTFNoYWRlciogc2hhZGVyRm9yVHlwZShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1zdGF0
aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gc2hhZGVyRm9yVHlwZShXZWJHUFVQaXBlbGlu
ZSYgcGlwZWxpbmUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFk
ZXJUeXBlKQotewotICAgIHN3aXRjaCAoc2hhZGVyVHlwZSkgewotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlOjpDb21wdXRlOgotICAgICAgICBpZiAoaXM8
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkuY29tcHV0ZVNoYWRlcigpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q2FudmFzOjpTaGFkZXJUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRl
clBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+KHBpcGVsaW5lKS5mcmFnbWVudFNoYWRlcigpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFk
ZXJUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIGlmIChpczxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlw
ZWxpbmUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5l
PihwaXBlbGluZSkudmVydGV4U2hhZGVyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQot
I2VuZGlmCi0KIFN0cmluZyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291
cmNlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcHJvZ3JhbSwKQEAgLTE2MiwxNyArMTAyLDkg
QEAgU3RyaW5nIEluc3BlY3RvclNoYWRlclByb2dyYW06OnJlcXVlc3RTaGFkZXJTb3VyY2UoSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjoKICAgICAgICAgICAgICAgICByZXR1cm4gc2hhZGVy
LT5nZXRTb3VyY2UoKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfSwK
LSNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxXZWJHUFVQaXBlbGluZT4gcGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAgICAgICAgICBh
dXRvJiBwaXBlbGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAgICAgIGlmIChh
dXRvIHNoYWRlciA9IHNoYWRlckZvclR5cGUocGlwZWxpbmUsIHNoYWRlclR5cGUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBzaGFkZXItPnNvdXJjZSgpOwotICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgICAgICB9LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSB7Ci0j
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkBAIC0yMDEsMjQgKzEzMyw5IEBAIGJvb2wgSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlw
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0sCi0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3JhcHBlcikgewotICAgICAgICAgICAgYXV0
byYgcGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoYXV0
byogZGV2aWNlID0gbV9jYW52YXMuZGV2aWNlQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHBpcGVsaW5lLmNsb25lU2hhZGVyTW9kdWxlcygqZGV2aWNlKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBzaGFkZXIgPSBzaGFkZXJGb3JUeXBlKHBpcGVsaW5lLCBzaGFkZXJU
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyLT51cGRhdGUoKmRldmljZSwg
c291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlbGluZS5yZWNvbXBpbGUo
KmRldmljZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChN
b25vc3RhdGUpIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5B
QkxFKFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyOCwzMSArMTQ1LDE1IEBAIGJvb2wgSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbTo6dXBkYXRlU2hhZGVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZh
czo6U2hhZGVyVHlwCiAKIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclBy
b2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3Jh
bSgpCiB7Ci0gICAgYm9vbCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IGZhbHNlOwotCiAg
ICAgdXNpbmcgUHJvZ3JhbVR5cGVUeXBlID0gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OlByb2dyYW1UeXBlPjsKICAgICBhdXRvIHByb2dyYW1UeXBlID0gV1RGOjpz
d2l0Y2hPbihtX3Byb2dyYW0sCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBbJl0gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKICAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBl
OjpSZW5kZXI7CiAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAg
ICBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlwZWxpbmU+IHBpcGVsaW5lV3Jh
cHBlcikgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSAgICAgICAgICAgIGF1dG8mIHBpcGVsaW5lID0g
cGlwZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAgaWYgKGlzPFdlYkdQVUNvbXB1dGVQ
aXBlbGluZT4ocGlwZWxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpDb21wdXRlOwotICAgICAgICAgICAgaWYgKGlz
PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGluZSkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
JiByZW5kZXJQaXBlbGluZSA9IGRvd25jYXN0PFdlYkdQVVJlbmRlclBpcGVsaW5lPihwaXBlbGlu
ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlclBpcGVsaW5lLnZlcnRleFNoYWRlcigpID09
IHJlbmRlclBpcGVsaW5lLmZyYWdtZW50U2hhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAgIHNo
YXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVyOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwKICNl
bmRpZgogICAgICAgICBbJl0gKE1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsKLSNpZiBF
TkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0yNjgsMTEgKzE2OSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDYW52YXM6OlNoYWRlclByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2Jq
CiAgICAgICAgIC5zZXRQcm9ncmFtVHlwZShwcm9ncmFtVHlwZS52YWx1ZSgpKQogICAgICAgICAu
c2V0Q2FudmFzSWQobV9jYW52YXMuaWRlbnRpZmllcigpKQogICAgICAgICAucmVsZWFzZSgpOwot
ICAgIGlmIChzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcikKLSAgICAgICAgcGF5bG9hZC0+c2V0
U2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHBheWxvYWQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAppbmRleCBjY2M3M2NlZjM3
NDY3MDY3MGQ1OTZhOTNiMzJmZTA5YTU1ZDQzNWJiLi5jOTJkZWJiNzdjYzQ1MThjNDE1YmQzYWZi
MzAzYjJmMzcxNGMyOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQog
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQxLDE4ICs0MSwxMSBAQCBjbGFzcyBXZWJHTFBy
b2dyYW07CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoV0VCR1BVKQotY2xhc3MgV2ViR1BVUGlwZWxpbmU7Ci0jZW5kaWYKLQogY2xhc3MgSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclNo
YWRlclByb2dyYW0+IHsKIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBjcmVhdGUoV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9y
Q2FudmFzJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRpYyBSZWY8SW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFdlYkdQVVBpcGVsaW5lJiwgSW5zcGVjdG9yQ2Fu
dmFzJik7Ci0jZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIEluc3BlY3RvckNhbnZhcyYgY2FudmFzKCkgY29u
c3QgeyByZXR1cm4gbV9jYW52YXM7IH0KQEAgLTYwLDkgKzUzLDYgQEAgcHVibGljOgogI2lmIEVO
QUJMRShXRUJHTCkKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0oKSBjb25zdDsKICNlbmRpZgot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgV2ViR1BVUGlwZWxpbmUqIHBpcGVsaW5lKCkgY29uc3Q7
Ci0jZW5kaWYKIAogICAgIFN0cmluZyByZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSk7CiAgICAgYm9vbCB1cGRhdGVTaGFkZXIoSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7
CkBAIC03OSw5ICs2OSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIEluc3Bl
Y3RvclNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiwgSW5zcGVjdG9yQ2FudmFzJik7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIEluc3BlY3RvclNoYWRlclByb2dyYW0oV2ViR1BV
UGlwZWxpbmUmLCBJbnNwZWN0b3JDYW52YXMmKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1faWRl
bnRpZmllcjsKICAgICBJbnNwZWN0b3JDYW52YXMmIG1fY2FudmFzOwpAQCAtODksOSArNzYsNiBA
QCBwcml2YXRlOgogICAgIFZhcmlhbnQ8CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiwKICNl
bmRpZgogICAgICAgICBXVEY6Ok1vbm9zdGF0ZQogICAgID4gbV9wcm9ncmFtOwpAQCAtMTAyLDQg
Kzg2LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAKaW5kZXggYTQwMmMzYjk4NDAzMGNmMGY4ZGQ2NWI2ZTEzYjkwOGZiZmJm
OTZhMy4uNTlmNGQzOWI1YTcxOWUzZTE3ZTU3MzhmMmM2N2VmYzM4ZWFlNDMzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHUFVDYW52YXND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjgsMTEg
KzY3LDYgQEAKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAi
V2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0
LmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BV
RGV2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNG
YWN0b3J5Lmg+CkBAIC0xMDAsOSArOTQsOSBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVj
dG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9p
bnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2FudmFzRGVzdHJv
eWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGlt
ZXJGaXJlZCkKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgICwgbV9wcm9ncmFtRGVzdHJveWVkVGltZXIoKnRoaXMsICZJbnNwZWN0b3JD
YW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ryb3llZFRpbWVyRmlyZWQpCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIHsKIH0K
IApAQCAtMTQxLDI3ICsxMzUsMTIgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CiAgICAgICAgIGZv
ciAoYXV0byogY29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQi
IGZvciBXZWJHUFUgaXMgdGhlIGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgotICAg
ICAgICAgICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICAgICAgICAgICAgIGlm
IChleGlzdHNJbkN1cnJlbnRQYWdlKGNvbnRleHQtPmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKQogICAgICAgICAgICAgICAgIGJpbmRDYW52YXMoKmNvbnRleHQsIGZhbHNl
KTsKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgewotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAg
ICAgZm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7Ci0gICAg
ICAgICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogI2lmIEVOQUJMRShX
RUJHTCkKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3Rh
bmNlc0xvY2soKSB9OwpAQCAtMTcyLDE2ICsxNTEsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICB7Ci0gICAgICAgIExvY2tl
ciBsb2NrZXIgeyBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIGZv
ciAoYXV0byYgW3BpcGVsaW5lLCBkZXZpY2VdIDogV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygp
KSB7Ci0gICAgICAgICAgICBpZiAoZGV2aWNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoZGV2aWNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICYmIHBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICAgICAgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKmRldmljZSwgKnBpcGVsaW5lKTsK
LSAgICAgICAgfQotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMjk3LDcgKzI2Niw2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAK
ICAgICBhdXRvKiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7CiAK
LSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3Rv
cjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKICAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBv
cnRlZCJfcyk7CiAKQEAgLTMyNCw3ICsyOTIsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2NvbAog
CiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwog
Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0
b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAg
ICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBw
b3J0ZWQiX3MpOwogCkBAIC0zMzYsNyArMzAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoY29uc3QgUHJvdG9jb2wK
ICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BV
KQorI2lmIEVOQUJMRShXRUJHTCkKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RTaGFkZXJTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkNh
bnZhczo6UHJvZ3JhbUlkJiBwcm9ncmFtSWQsIFByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUg
c2hhZGVyVHlwZSkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBA
IC0zNjYsNyArMzMzLDYgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihjb25zdCBQcm90b2NvbDoKICAgICByZXR1cm4geyB9
OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNoYWRlclByb2dyYW1EaXNhYmxlZChjb25zdCBQcm90
b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmIHByb2dyYW1JZCwgYm9vbCBkaXNhYmxlZCkKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CkBAIC0zOTMsNyArMzU5LDYgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFNo
YWRlclByb2dyYW1IaWdobGlnaHRlZCgKICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmIC8vIEVO
QUJMRShXRUJHTCkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCiAK
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkK
IHsKQEAgLTQ1MCwxNyArNDE1LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ2hh
bmdlQ2FudmFzTWVtb3J5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JDYW52YXM7CiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkgewotICAgICAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkg
ewotICAgICAgICAgICAgaWYgKGl0ZW0tPmlzRGV2aWNlRm9yQ2FudmFzQ29udGV4dChjb250ZXh0
KSkgewotICAgICAgICAgICAgICAgIGluc3BlY3RvckNhbnZhcyA9IGl0ZW07Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQog
ICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQogICAgICAgICBpbnNwZWN0b3JDYW52YXMgPSBmaW5k
SW5zcGVjdG9yQ2FudmFzKGNvbnRleHQpOwogCkBAIC02MTcsNjkgKzU3MSw2IEBAIGJvb2wgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xQcm9ncmFt
JiBwcm9ncmFtKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJH
UFUpCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVEZXZpY2UoV2Vi
R1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKGZpbmRJbnNwZWN0b3JDYW52YXMoZGV2aWNl
KSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGJpbmRDYW52YXMoZGV2aWNlLCB0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2Up
Ci17Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRldmlj
ZSk7Ci0gICAgQVNTRVJUKGluc3BlY3RvckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDYW52
YXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuYmluZENhbnZhcygqaW5zcGVjdG9yQ2FudmFz
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbENvbmZpZ3VyZVN3YXBDaGFp
bihHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBD
aGFpbikKLXsKLSAgICBhdXRvIG5vdGlmeURldmljZUZvclN3YXBDaGFpbiA9IFsmXSAoV2ViR1BV
U3dhcENoYWluJiB3ZWJHUFVTd2FwQ2hhaW4pIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnNwZWN0
b3JDYW52YXMgOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAg
ICAgICAgICAgaWYgKGF1dG8qIGRldmljZSA9IGluc3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4
dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRldmljZS0+ZGV2aWNlKCkuc3dhcENoYWluKCkg
PT0gd2ViR1BVU3dhcENoYWluLnN3YXBDaGFpbigpKQotICAgICAgICAgICAgICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+Y2xpZW50Tm9kZXNDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+aWRl
bnRpZmllcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAo
YXV0byogZXhpc3RpbmdTd2FwQ2hhaW4gPSBjb250ZXh0R1BVLnN3YXBDaGFpbigpKQotICAgICAg
ICBub3RpZnlEZXZpY2VGb3JTd2FwQ2hhaW4oKmV4aXN0aW5nU3dhcENoYWluKTsKLQotICAgIG5v
dGlmeURldmljZUZvclN3YXBDaGFpbihuZXdTd2FwQ2hhaW4pOwotfQotCi12b2lkIEluc3BlY3Rv
ckNhbnZhc0FnZW50OjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmlj
ZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFz
ID0gZmluZEluc3BlY3RvckNhbnZhcyhkZXZpY2UpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52
YXMpOwotICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQocGlwZWxpbmUuaXNWYWxpZCgpKTsKLQotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbVJl
ZiA9IEluc3BlY3RvclNoYWRlclByb2dyYW06OmNyZWF0ZShwaXBlbGluZSwgKmluc3BlY3RvckNh
bnZhcyk7Ci0gICAgYXV0byYgaW5zcGVjdG9yUHJvZ3JhbSA9IGluc3BlY3RvclByb2dyYW1SZWYu
Z2V0KCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnNldChpbnNwZWN0b3JQ
cm9ncmFtLmlkZW50aWZpZXIoKSwgV1RGTW92ZShpbnNwZWN0b3JQcm9ncmFtUmVmKSk7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnByb2dyYW1DcmVhdGVkKGluc3BlY3RvclByb2dyYW0uYnVp
bGRPYmplY3RGb3JTaGFkZXJQcm9ncmFtKCkpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkK
LXsKLSAgICBhdXRvIGluc3BlY3RvclByb2dyYW0gPSBmaW5kSW5zcGVjdG9yUHJvZ3JhbShwaXBl
bGluZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB1bmJpbmRQcm9ncmFtKCppbnNwZWN0b3JQcm9ncmFtKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQotCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVudFR5
cGUpIFwKIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3Vt
ZW50KSBcCiB7IFwKQEAgLTcxNSw3ICs2MDYsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQwog
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBpbnNw
ZWN0b3JDYW52YXMtPmNhbnZhc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBw
b3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKIAogICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FudmFzUmVuZGVyaW5nQ29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmlu
aXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwpAQCAtNzM4
LDcgKzYyOCw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKElu
c3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzLCBQcm90CiB7CiAgICAgYXV0byogY29udGV4
dCA9IGluc3BlY3RvckNhbnZhcy5jYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQp
OwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVj
dG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQog
CiAgICAgaWYgKCFpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNvbnRleHQpCiAgICAgICAg
ICYmICFpczxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KGNvbnRleHQpCkBAIC03NzcsNyAr
NjY2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkVGltZXJG
aXJlZCgpCiAgICAgbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAotI2lm
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiB2b2lk
IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpCiB7CiAg
ICAgaWYgKCFtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuc2l6ZSgpKQpAQCAtNzg4LDcgKzY3
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZp
cmVkKCkKIAogICAgIG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5jbGVhcigpOwogfQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKIHsKQEAgLTgwMiwx
MiArNjkxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc2V0KCkKICAgICBpZiAo
bV9jYW52YXNEZXN0cm95ZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NhbnZhc0Rlc3Ry
b3llZFRpbWVyLnN0b3AoKTsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkK
KyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLmNs
ZWFyKCk7CiAgICAgbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAgaWYg
KG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcHJvZ3JhbURl
c3Ryb3llZFRpbWVyLnN0b3AoKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgbV9yZWNvcmRpbmdDYW52YXNJ
ZGVudGlmaWVycy5jbGVhcigpOwogfQpAQCAtODM2LDE4ICs3MjUsNiBAQCBJbnNwZWN0b3JDYW52
YXMmIEluc3BlY3RvckNhbnZhc0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleAogICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXM7CiB9CiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotSW5zcGVjdG9yQ2FudmFzJiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YmluZENhbnZh
cyhXZWJHUFVEZXZpY2UmIGRldmljZSwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKQotewotICAgIGF1
dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoZGV2aWNlKTsKLSAg
ICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVu
dGlmaWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCkpOwotCi0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmNhbnZhc0FkZGVkKGluc3BlY3RvckNhbnZhcy0+YnVpbGRPYmplY3RGb3JDYW52
YXMoY2FwdHVyZUJhY2t0cmFjZSkpOwotCi0gICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKLX0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1
bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCiB7CiAjaWYgRU5B
QkxFKFdFQkdMKQpAQCAtODk1LDE4ICs3NzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbgog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLVJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFzKFdl
YkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFzIDog
bV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGlu
c3BlY3RvckNhbnZhcy0+ZGV2aWNlQ29udGV4dCgpID09ICZkZXZpY2UpCi0gICAgICAgICAgICBy
ZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VC
R1BVKQorI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVuYmlu
ZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSYgaW5zcGVjdG9yUHJvZ3JhbSkKIHsKICAg
ICBTdHJpbmcgaWRlbnRpZmllciA9IGluc3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpOwpAQCAt
OTMxLDcgKzc5Nyw2IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShQcm90CiAgICAgcmV0dXJuIGluc3Bl
Y3RvclByb2dyYW07CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCiBSZWZQdHI8SW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dyYW0g
OiBtX2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0udmFsdWVzKCkpIHsKQEAgLTk0MiwxNiAr
ODA3LDQgQEAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHTFAKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+
IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGlu
ZSYgcGlwZWxpbmUpCi17Ci0gICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9pZGVu
dGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpbnNwZWN0
b3JQcm9ncmFtLT5waXBlbGluZSgpID09ICZwaXBlbGluZSkKLSAgICAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JQcm9ncmFtOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGQ3YmRlZjNjODQ0
NTU1MjU1ZGM2ZDIyZjYyZjI3OTg3OTI2ZDUzMjMuLjdmMTAxMmFhMmEyNGY2ODJjZjY4OTFkMTM2
NmRkNGQyNjE1NzMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTQ0LDE5ICs0NCwxMSBAQCBjbGFzcyBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQot
Y2xhc3MgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTsKICNpZiBFTkFCTEUoV0VCR0wpCitjbGFzcyBJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLWNsYXNzIEdQVUNhbnZhc0NvbnRleHQ7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1j
bGFzcyBXZWJHUFVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVN3YXBDaGFpbjsKLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkK
IAogY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIs
IHB1YmxpYyBDYW52YXNPYnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEluc3BlY3RvckNh
bnZhc0FnZW50PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ2FudmFzQWdl
bnQpOwpAQCAtODAsMTQgKzcyLDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFJlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudChp
bnQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnRS
ZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIHN0
ZDo6b3B0aW9uYWw8aW50PiYmIGZyYW1lQ291bnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1lbW9y
eUxpbWl0KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0
b3BSZWNvcmRpbmcoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYp
OwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IHJlcXVlc3RT
aGFkZXJTb3VyY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQm
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUpOwogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gdXBkYXRlU2hhZGVyKGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q2FudmFzOjpTaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0jaWYgRU5BQkxFKFdF
QkdMKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hh
ZGVyUHJvZ3JhbURpc2FibGVkKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJv
Z3JhbUlkJiwgYm9vbCBkaXNhYmxlZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBib29sIGhpZ2hsaWdodGVkKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VC
R1BVKQogCiAgICAgLy8gQ2FudmFzT2JzZXJ2ZXIKICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2Fu
dmFzQmFzZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwpAQCAtMTA5
LDEzICs5OSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQoV2Vi
R0xQcm9ncmFtJik7CiAgICAgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUHJv
Z3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAg
IHZvaWQgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYpOwotICAgIHZvaWQgd2ls
bERlc3Ryb3lXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgdm9pZCB3aWxsQ29uZmln
dXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICB2
b2lkIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIFdlYkdQVVBpcGVsaW5l
Jik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJik7
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUp
IFwKQEAgLTEzNCwzMiArMTE3LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlY29yZGlu
ZyhJbnNwZWN0b3JDYW52YXMmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRp
YXRvciwgUmVjb3JkaW5nT3B0aW9ucyYmID0geyB9KTsKIAogICAgIHZvaWQgY2FudmFzRGVzdHJv
eWVkVGltZXJGaXJlZCgpOwotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCgpOwot
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5k
Q2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwot
I2lmIEVOQUJMRShXRUJHUFUpCi0gICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKFdlYkdQ
VURldmljZSYsIGJvb2wgY2FwdHVyZUJhY2t0cmFjZSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKICAgICB2b2lkIHVuYmluZENhbnZhcyhJbnNwZWN0b3JDYW52YXMmKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yQ2FudmFzPiBhc3NlcnRJbnNwZWN0b3JDYW52YXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yQ2FudmFzPiBmaW5kSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
KTsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZpbmRJ
bnNwZWN0b3JDYW52YXMoV2ViR1BVRGV2aWNlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
IAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgdm9pZCB1bmJpbmRQcm9ncmFtKEluc3BlY3RvclNoYWRlclByb2dyYW0mKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkKTsK
LSNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGZp
bmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFt
PiBmaW5kSW5zcGVjdG9yUHJvZ3JhbShXZWJHUFVQaXBlbGluZSYpOwotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPiBt
X2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpDYW52YXNCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTE3MSwxMSArMTQzLDExIEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnM7CiAg
ICAgVGltZXIgbV9jYW52YXNEZXN0cm95ZWRUaW1lcjsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPj4gbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9n
cmFtOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVyczsKICAg
ICBUaW1lciBtX3Byb2dyYW1EZXN0cm95ZWRUaW1lcjsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
IHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgSGFzaFNl
dDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggYzNhYWM1NGM1N2YyNDA3YjM4ZjAzNmQ4NjUxNWRm
YjIwYWRiZjQ5MS4uZjE2MGM0NzIyNWQwMTkxMWNjZmJiYzgzY2Y3MjQxZjdmMjhhNWI5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKIAog
I2lmIEVOQUJMRShHUFVfRFJJVkVSX1BSRVdBUk1JTkcpCiAjaW5jbHVkZSAiR1BVRGV2aWNlLmgi
Ci0jaW5jbHVkZSAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODEsNyArODAsNyBAQCB2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3
YXJtR2xvYmFsbHkoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX0RSSVZFUl9QUkVXQVJNSU5H
KQotICAgIEdQVURldmljZTo6cHJld2FybSgpOworICAgIHByZXdhcm1HUFUoKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMDcwODQ3YzEzNGI1NjE2M2Y0YTA2
MTM5Mzk4ZjAzYTA1NTlhODc4Yi4uODIzNTg0M2ZhNTEyOTU1YzdjZWI1ZWZkZmNkZjkzZGU0YTU5
ZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTIwLDcgKzEyMCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFZpZXdwb3J0cykgXAogICAgIE0oV2ViQXVkaW8pIFwK
ICAgICBNKFdlYkdMKSBcCi0gICAgTShXZWJHUFUpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0o
V2ViUlRDU3RhdHMpIFwKICAgICBNKFhSKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCmluZGV4IDVhNjBiY2MxZTZiNTMyYTYxZDQ4YWNjMzQ0YmJhYTJhZjhkMDE2ZGQuLjAyYTI2
ZDU3YjU1ZWNhZGU0M2M1ZjJlZTM5NWY4MzMyOTI2ODc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCkBAIC01NywxMCArNTcsNiBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNpZiBFTkFCTEUoV0VC
R1BVKQotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW1wb3J0
ICJXQUtXaW5kb3cuaCIKQEAgLTIxOCwxMSArMjE0LDYgQEAgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxh
dGYKICAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKIAotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHUFVMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotI2Vu
ZGlmCi0KICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yNzUsNyArMjY2LDcg
QEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBs
YXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6
OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBs
YXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycyBvciBXZWJHUFVM
YXllcnMuCisgICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYXMg
d3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTI4ZjczYTA4NjFkMTUyYjcxM2NlYjllOTMzMjgz
Y2E4MjZhNWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgPE1ldGFsL01l
dGFsLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgR1BVU3dhcENoYWluOwotfQotCi1AaW50ZXJmYWNlIFdlYkdQVUxheWVy
IDogQ0FNZXRhbExheWVyIHsKLSAgICBXZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIF9zd2FwQ2hhaW47
Ci0gICAgZmxvYXQgX2RldmljZVNjYWxlRmFjdG9yOwotfQotCi1AcHJvcGVydHkgKG5vbmF0b21p
YykgV2ViQ29yZTo6R1BVU3dhcENoYWluKiBzd2FwQ2hhaW47Ci0KLS0gKENHSW1hZ2VSZWYpY29w
eUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7
Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjZTIzODJlNGViYjJjMWYwMGY5YmJjZDM1ZTBlNjAyZGI5Y2E0NjhmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
Q0cuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdQVUxheWVyCi0KLUBzeW50aGVzaXplIHN3YXBD
aGFpbiA9IF9zd2FwQ2hhaW47Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwotCi0gICAgLy8gRklYTUU6IFdlYkdQVSAtIGhhbmRsZSByZXRpbmEgY29ycmVjdGx5Lgot
ICAgIF9kZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgc2Vs
Zi5jb250ZW50c1NjYWxlID0gX2RldmljZVNjYWxlRmFjdG9yOwotICAgIHNlbGYuY29sb3JzcGFj
ZSA9IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihD
R0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZQotewotICAgIGlmICghX3N3YXBDaGFpbikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIyOTJmMTM0NGI1NGIyMmI5ZTlkODFmMTkxNmZiZmIyMTIxMTgxNmEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1ZGUg
IkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJH
UFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwot
Ci11c2luZyBBcmd1bWVudEJ1ZmZlciA9IHN0ZDo6cGFpcjxjb25zdCBQbGF0Zm9ybUJ1ZmZlcios
IGNvbnN0IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJj47Ci0K
LWNsYXNzIEdQVUJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRHcm91cD4gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlDcmVhdGUoY29uc3Qg
R1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYpOwotCi0gICAg
fkdQVUJpbmRHcm91cCgpOwotICAgIAotICAgIGNvbnN0IEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4geyBtX2FsbG9jYXRvci0+YXJndW1lbnRCdWZmZXIoKSwg
bV9hcmd1bWVudEJ1ZmZlck9mZnNldHMgfTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVUJ1
ZmZlcj4+JiBib3VuZEJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQnVmZmVyczsgfQot
ICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgYm91bmRUZXh0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRUZXh0dXJlczsgfQotCi1wcml2YXRlOgotICAgIEdQVUJpbmRHcm91
cChHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyYmLCBHUFVCaW5k
R3JvdXBBbGxvY2F0b3ImLCBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiYmLCBIYXNoU2V0PFJlZjxH
UFVUZXh0dXJlPj4mJik7Ci0gICAgCi0gICAgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVu
dEJ1ZmZlck9mZnNldHMgbV9hcmd1bWVudEJ1ZmZlck9mZnNldHM7Ci0gICAgUmVmPEdQVUJpbmRH
cm91cEFsbG9jYXRvcj4gbV9hbGxvY2F0b3I7Ci0gICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4g
bV9ib3VuZEJ1ZmZlcnM7Ci0gICAgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+IG1fYm91bmRUZXh0
dXJlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQmluZEdyb3VwQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM4NDMxOTdiZjMzMjgzMDIzMTQzNDdiMzc4M2RhODc0YWY2MzU0MDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEFsbG9jYXRvci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlw
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotY2xhc3Mg
R1BVQmluZEdyb3VwQWxsb2NhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmluZEdyb3VwQWxs
b2NhdG9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+
IGNyZWF0ZShHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgc3RydWN0IEFyZ3VtZW50QnVmZmVyT2Zm
c2V0cyB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IHZl
cnRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gZnJh
Z21lbnQ7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IGNv
bXB1dGU7Ci0gICAgfTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBzdGQ6Om9wdGlvbmFsPEFyZ3Vt
ZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29k
ZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNv
ZGVyICpjb21wdXRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB0cnlSZXNldCgpOwotCi0gICAgY29u
c3QgUGxhdGZvcm1CdWZmZXIqIGFyZ3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1
bWVudEJ1ZmZlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVUJpbmRHcm91
cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYpOwotCi0gICAgYm9vbCByZWFsbG9jYXRlKFBsYXRm
b3JtR1BVQnVmZmVyT2Zmc2V0KTsKLQotICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbV9hcmd1
bWVudEJ1ZmZlcjsKLSAgICBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCBtX2xhc3RPZmZzZXQgeyAw
IH07Ci0KLSAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29wZXM7Ci0gICAgaW50IG1f
bnVtQmluZEdyb3VwcyB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzJjM2EyMzY2ODg3NTZhN2ZjY2U4YzM0M2UwZjVkZjYzYWZiMWFkMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgR1BVQmluZGluZ1Jlc291
cmNlID0gVmFyaWFudDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4sIFJlZjxHUFVUZXh0dXJlPiwgR1BV
QnVmZmVyQmluZGluZz47Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAgICB1bnNp
Z25lZCBiaW5kaW5nOwotICAgIEdQVUJpbmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRH
cm91cERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwOGE5Nzhh
OWU4NmExZWI5NmUyZmNmZGU5NDViY2ZjYWVhZDUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlv
dXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAg
ICBSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0PiBsYXlvdXQ7Ci0gICAgVmVjdG9yPEdQVUJp
bmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTAxNmZjOTg0ODFlMWM0NzgyNWY1MDgzZWZmZTI2ZGNlODY2YTg1
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwTGF5b3V0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotCi1jbGFzcyBHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQ
VUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3ImKTsKLQotICAgIHN0cnVjdCBVbmlmb3JtQnVmZmVyIHsK
LSAgICAgICAgdW5zaWduZWQgaW50ZXJuYWxMZW5ndGhOYW1lOwotICAgIH07Ci0KLSAgICBzdHJ1
Y3QgRHluYW1pY1VuaWZvcm1CdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0
aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBTYW1wbGVyIHsKLSAgICB9OwotCi0gICAgc3Ry
dWN0IFNhbXBsZWRUZXh0dXJlIHsKLSAgICB9OwotCi0gICAgc3RydWN0IFN0b3JhZ2VCdWZmZXIg
ewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsKLQotICAgIHN0
cnVjdCBEeW5hbWljU3RvcmFnZUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVu
Z3RoTmFtZTsKLSAgICB9OwotCi0gICAgdXNpbmcgSW50ZXJuYWxCaW5kaW5nRGV0YWlscyA9IFZh
cmlhbnQ8VW5pZm9ybUJ1ZmZlciwgRHluYW1pY1VuaWZvcm1CdWZmZXIsIFNhbXBsZXIsIFNhbXBs
ZWRUZXh0dXJlLCBTdG9yYWdlQnVmZmVyLCBEeW5hbWljU3RvcmFnZUJ1ZmZlcj47Ci0KLSAgICBz
dHJ1Y3QgQmluZGluZyB7Ci0gICAgICAgIEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgZXh0ZXJu
YWxCaW5kaW5nOwotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWU7Ci0gICAgICAgIEludGVy
bmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlsczsKLSAgICB9OwotCi0gICAg
dXNpbmcgQmluZGluZ3NNYXBUeXBlID0gSGFzaE1hcDx1aW50NjRfdCwgQmluZGluZywgV1RGOjpJ
bnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50
NjRfdD4+OwotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSYgYmluZGluZ3NNYXAoKSBjb25zdCB7
IHJldHVybiBtX2JpbmRpbmdzTWFwOyB9Ci0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEFyZ3VtZW50
RW5jb2RlciAqdmVydGV4RW5jb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4RW5jb2Rlci5n
ZXQoKTsgfQotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnRFbmNvZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFnbWVudEVuY29kZXIuZ2V0KCk7IH0KLSAgICBNVExBcmd1bWVudEVuY29k
ZXIgKmNvbXB1dGVFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlRW5jb2Rlci5nZXQo
KTsgfQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotcHJpdmF0ZToKLSNpZiBVU0UoTUVUQUwpCi0g
ICAgR1BVQmluZEdyb3VwTGF5b3V0KEJpbmRpbmdzTWFwVHlwZSYmLCBSZXRhaW5QdHI8TVRMQXJn
dW1lbnRFbmNvZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBm
cmFnbWVudCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKTsKLQotICAg
IFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fdmVydGV4RW5jb2RlcjsKLSAgICBSZXRh
aW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2ZyYWdtZW50RW5jb2RlcjsKLSAgICBSZXRhaW5Q
dHI8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2NvbXB1dGVFbmNvZGVyOwotI2VuZGlmIC8vIFVTRShN
RVRBTCkKLSAgICBjb25zdCBCaW5kaW5nc01hcFR5cGUgbV9iaW5kaW5nc01hcDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmREZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmxlbmREZXNj
cmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTMzYWMyZTlhY2QxNWMy
MGM2MWM4MDAwMTllOWI5OGJkNWZkOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJs
ZW5kRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1lbnVtIGNsYXNzIEdQVUJsZW5kRmFjdG9yIHsKLSAgICBaZXJvLAotICAgIE9uZSwK
LSAgICBTcmNDb2xvciwKLSAgICBPbmVNaW51c1NyY0NvbG9yLAotICAgIFNyY0FscGhhLAotICAg
IE9uZU1pbnVzU3JjQWxwaGEsCi0gICAgRHN0Q29sb3IsCi0gICAgT25lTWludXNEc3RDb2xvciwK
LSAgICBEc3RBbHBoYSwKLSAgICBPbmVNaW51c0RzdEFscGhhLAotICAgIFNyY0FscGhhU2F0dXJh
dGVkLAotICAgIEJsZW5kQ29sb3IsCi0gICAgT25lTWludXNCbGVuZENvbG9yLAotfTsKLQotZW51
bSBjbGFzcyBHUFVCbGVuZE9wZXJhdGlvbiB7Ci0gICAgQWRkLAotICAgIFN1YnRyYWN0LAotICAg
IFJldmVyc2VTdWJ0cmFjdCwKLSAgICBNaW4sCi0gICAgTWF4LAotfTsKLQotc3RydWN0IEdQVUJs
ZW5kRGVzY3JpcHRvciB7Ci0gICAgR1BVQmxlbmRGYWN0b3Igc3JjRmFjdG9yOwotICAgIEdQVUJs
ZW5kRmFjdG9yIGRzdEZhY3RvcjsKLSAgICBHUFVCbGVuZE9wZXJhdGlvbiBvcGVyYXRpb247Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE3NTU5NDcxMzMwMmQwOTM3Y2RlODQ4
MWU1YTM0MzhmYzJmNzdkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUJ1ZmZlcjo6UGVuZGluZ01hcHBpbmdDYWxsYmFj
azo6UGVuZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiBwZW5kaW5nKQotICAg
IDogY2FsbGJhY2soV1RGTW92ZShwZW5kaW5nKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTM1YTVjM2FmYzRjODYyMmVkMzYwNGRhZmVmMjM2Y2Q3MjI1ZTJjNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIK
LSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3RydWN0IEdQVUJ1
ZmZlckRlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uOwotCi1j
bGFzcyBHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZmZXI+IHsKLXB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIFN0YXRlIHsKLSAgICAgICAgTWFwcGVkLAotICAgICAgICBVbm1hcHBl
ZCwKLSAgICAgICAgRGVzdHJveWVkCi0gICAgfTsKLQotICAgIH5HUFVCdWZmZXIoKTsKLQotICAg
IHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGUoR1BVRGV2aWNlJiwgY29uc3QgR1BV
QnVmZmVyRGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgR1BVRXJyb3JTY29wZXMm
KTsKLQotICAgIFBsYXRmb3JtQnVmZmVyKiBwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCk7IH0KLSAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQotICAgIGJvb2wgaXNDb3B5U291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNvcHlTb3Vy
Y2UpOyB9Ci0gICAgYm9vbCBpc0NvcHlEZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNh
Z2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24pOyB9Ci0g
ICAgYm9vbCBpc0luZGV4KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZm
ZXJVc2FnZTo6RmxhZ3M6OkluZGV4KTsgfQotICAgIGJvb2wgaXNWZXJ0ZXgoKSBjb25zdCB7IHJl
dHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VmVydGV4KTsgfQot
ICAgIGJvb2wgaXNVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0pOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6U3RvcmFn
ZSk7IH0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICBib29sIGlzTWFwcGFibGUo
KSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZs
YWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pOyB9Ci0gICAg
dW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Vc2FnZTsg
fQotICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7Ci0KLSAgICBKU0M6OkFycmF5QnVmZmVyKiBtYXBP
bkNyZWF0aW9uKCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgdm9pZCBjb21tYW5kQnVmZmVyQ29t
bWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKik7Ci0gICAgdm9pZCBjb21tYW5kQnVmZmVyQ29tcGxl
dGVkKCk7Ci0jZW5kaWYKLQotICAgIHVzaW5nIE1hcHBpbmdDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZChKU0M6OkFycmF5QnVmZmVyKik+OwotICAgIHZvaWQgcmVnaXN0ZXJNYXBwaW5nQ2Fs
bGJhY2soTWFwcGluZ0NhbGxiYWNrJiYsIGJvb2wsIEdQVUVycm9yU2NvcGVzJik7Ci0gICAgdm9p
ZCB1bm1hcChHUFVFcnJvclNjb3BlcyopOwotICAgIHZvaWQgZGVzdHJveShHUFVFcnJvclNjb3Bl
cyopOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gewotICAgICAgICBzdGF0aWMg
UmVmPFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2s+IGNyZWF0ZShNYXBwaW5nQ2FsbGJhY2smJiBjYWxs
YmFjaykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGVuZGlu
Z01hcHBpbmdDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgTWFwcGluZ0NhbGxiYWNrIGNhbGxiYWNrOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUGVu
ZGluZ01hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJik7Ci0gICAgfTsKLQotICAgIEdQ
VUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYsIEdQVURldmljZSYsIHNpemVfdCwgT3B0
aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4sIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbik7Ci0g
ICAgc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2FnZShjb25zdCBHUFVEZXZpY2UmLCBPcHRp
b25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIEpT
Qzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JSZWFkKCk7Ci0gICAgSlNDOjpBcnJheUJ1
ZmZlciogc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7Ci0gICAgdm9pZCBydW5NYXBwaW5nQ2FsbGJh
Y2soKTsKLSAgICB2b2lkIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMqKTsK
LQotICAgIGJvb2wgaXNNYXBXcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMo
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSk7IH0KLSAgICBib29sIGlzTWFwUmVhZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpN
YXBSZWFkKTsgfQotICAgIGJvb2wgaXNNYXBXcml0ZWFibGUoKSBjb25zdCB7IHJldHVybiBpc01h
cFdyaXRlKCkgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6VW5tYXBwZWQ7IH0KLSAgICBib29sIGlzTWFw
UmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBpc01hcFJlYWQoKSAmJiBzdGF0ZSgpID09IFN0YXRl
OjpVbm1hcHBlZDsgfQotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQnVm
ZmVyOwotICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwotCi0gICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IG1fc3RhZ2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8UGVuZGluZ01hcHBpbmdDYWxs
YmFjaz4gbV9tYXBwaW5nQ2FsbGJhY2s7Ci0gICAgTWFpblRocmVhZERlZmVycmFibGVUYXNrIG1f
bWFwcGluZ0NhbGxiYWNrVGFzazsKLQotICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7Ci0gICAgT3B0
aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gbV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3Bs
YXRmb3JtVXNhZ2U7Ci0gICAgdW5zaWduZWQgbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVycyB7
IDAgfTsKLSAgICBib29sIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24geyBmYWxzZSB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJCaW5k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyQmlu
ZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTZlZTAxMTEwMWQ0N2MwNDFi
NWY5Njk1MDY4M2U0ZDgzZWM2ZGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZm
ZXJCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVy
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7Ci0gICAgdWlu
dDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMDcyZDllZmYwMjdkMjllOTM3NzliYzhmMDZi
ZDY0MmM0Mzg1NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0
b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCdWZmZXJVc2FnZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVCdWZmZXJEZXNjcmlwdG9yIHsK
LSAgICB1aW50NjRfdCBzaXplOwotICAgIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7Ci19Owot
Ci1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiB7Ci0gICAgSXNNYXBwZWQsCi0gICAg
Tm90TWFwcGVkCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlclVzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQnVmZmVyVXNhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RlMTQx
ZThmZjM1MWFlZjllMDIwNTIyNDY1ZTY2YjU0YTQyNGQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQnVmZmVyVXNhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQVUJ1
ZmZlclVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQnVmZmVyVXNhZ2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVCdWZmZXJVc2FnZT4gewotcHVibGljOgotICAgIGVudW0gY2xhc3Mg
RmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAg
IE1hcFJlYWQgPSAxIDw8IDAsCi0gICAgICAgIE1hcFdyaXRlID0gMSA8PCAxLAotICAgICAgICBD
b3B5U291cmNlID0gMSA8PCAyLAotICAgICAgICBDb3B5RGVzdGluYXRpb24gPSAxIDw8IDMsCi0g
ICAgICAgIEluZGV4ID0gMSA8PCA0LAotICAgICAgICBWZXJ0ZXggPSAxIDw8IDUsCi0gICAgICAg
IFVuaWZvcm0gPSAxIDw8IDYsCi0gICAgICAgIFN0b3JhZ2UgPSAxIDw8IDcsCi0gICAgfTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29sb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmRhNTI2NTZkZTIzZDI2MjRkNmExYjhlMzU2YmQy
NjRhZGMxNjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQ29sb3Ig
ewotICAgIGZsb2F0IHI7Ci0gICAgZmxvYXQgZzsKLSAgICBmbG9hdCBiOwotICAgIGZsb2F0IGE7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bG9yU3RhdGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmQ1NTI3MjhiY2M5YjM4MDU3NDU1OTllNmI1ODY4MTkxYWIxMzZlNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCbGVuZERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVD
b2xvcldyaXRlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAgR1BVVGV4
dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICBHUFVCbGVuZERlc2NyaXB0b3IgYWxwaGFCbGVuZDsK
LSAgICBHUFVCbGVuZERlc2NyaXB0b3IgY29sb3JCbGVuZDsKLSAgICBHUFVDb2xvcldyaXRlRmxh
Z3Mgd3JpdGVNYXNrIHsgc3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldy
aXRlOjpGbGFnczo6QWxsKSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29sb3JXcml0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0YzZkNWM4YzlkZTYxZjQzMjgxNDViNGYzNTUxMmRmYTdiMzJhMTkwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2lu
ZyBHUFVDb2xvcldyaXRlRmxhZ3MgPSB1bnNpZ25lZDsKLQotY2xhc3MgR1BVQ29sb3JXcml0ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbG9yV3JpdGU+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNs
YXNzIEZsYWdzIDogR1BVQ29sb3JXcml0ZUZsYWdzIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAg
ICAgIFJlZCA9IDEgPDwgMCwKLSAgICAgICAgR3JlZW4gPSAxIDw8IDEsCi0gICAgICAgIEJsdWUg
PSAxIDw8IDIsCi0gICAgICAgIEFscGhhID0gMSA8PCAzLAotICAgICAgICBBbGwgPSAoMSA8PCA0
KSAtIDEsCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjJmYjYyZDQ0YzA1YjkxNWE3NTI2YjIzMTU2ZjkxOTY4NDA4YTVhMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVPcmlnaW4zRC5oIgotI2lu
Y2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZp
Y2U7Ci0KLXN0cnVjdCBHUFVFeHRlbnQzRDsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFz
ZSB7Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVuc2lnbmVkIHJvd1BpdGNoOwotICAgIHVu
c2lnbmVkIGltYWdlSGVpZ2h0OwotfTsKLQotc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3IGZpbmFs
IDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKLSAgICBHUFVCdWZmZXJDb3B5VmlldyhSZWY8R1BV
QnVmZmVyPiYmIGJ1ZmZlckNvcHksIGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSYgYmFzZSkK
LSAgICAgICAgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCBidWZmZXIo
V1RGTW92ZShidWZmZXJDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVUJ1ZmZlcj4g
YnVmZmVyOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIHVuc2ln
bmVkIG1pcExldmVsOwotICAgIHVuc2lnbmVkIGFycmF5TGF5ZXI7Ci0gICAgR1BVT3JpZ2luM0Qg
b3JpZ2luOwotfTsKLQotc3RydWN0IEdQVVRleHR1cmVDb3B5VmlldyBmaW5hbCA6IEdQVVRleHR1
cmVDb3B5Vmlld0Jhc2UgewotICAgIEdQVVRleHR1cmVDb3B5VmlldyhSZWY8R1BVVGV4dHVyZT4m
JiB0ZXh0dXJlQ29weSwgY29uc3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSYgYmFzZSkKLSAgICAg
ICAgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlKGJhc2UpCi0gICAgICAgICwgdGV4dHVyZShXVEZN
b3ZlKHRleHR1cmVDb3B5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmPEdQVVRleHR1cmU+IHRl
eHR1cmU7Ci19OwotCi1jbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
R1BVQ29tbWFuZEJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1Db21t
YW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVUJ1ZmZl
cj4+JiB1c2VkQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZEJ1ZmZlcnM7IH0KLSAgICBj
b25zdCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mIHVzZWRUZXh0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlZFRleHR1cmVzOyB9Ci0gICAgYm9vbCBpc0VuY29kaW5nUGFzcygpIGNvbnN0IHsg
cmV0dXJuIG1faXNFbmNvZGluZ1Bhc3M7IH0KLQotICAgIHZvaWQgc2V0SXNFbmNvZGluZ1Bhc3Mo
Ym9vbCBpc0VuY29kaW5nKSB7IG1faXNFbmNvZGluZ1Bhc3MgPSBpc0VuY29kaW5nOyB9Ci0jaWYg
VVNFKE1FVEFMKQotICAgIH5HUFVDb21tYW5kQnVmZmVyKCk7Ci0gICAgdm9pZCBlbmRCbGl0RW5j
b2RpbmcoKTsKLSNlbmRpZgotCi0gICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoUmVmPEdQVUJ1
ZmZlcj4mJiwgdWludDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmLCB1aW50NjRfdCBk
c3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShH
UFVCdWZmZXJDb3B5VmlldyYmLCBHUFVUZXh0dXJlQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50
M0QmKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNvcHlWaWV3JiYs
IEdQVUJ1ZmZlckNvcHlWaWV3JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5
VGV4dHVyZVRvVGV4dHVyZShHUFVUZXh0dXJlQ29weVZpZXcmJiwgR1BVVGV4dHVyZUNvcHlWaWV3
JiYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0KLSAgICB2b2lkIHVzZUJ1ZmZlcihSZWY8R1BVQnVm
ZmVyPiYmIGJ1ZmZlcikgeyBtX3VzZWRCdWZmZXJzLmFkZFZvaWQoV1RGTW92ZShidWZmZXIpKTsg
fQotICAgIHZvaWQgdXNlVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKSB7IG1fdXNl
ZFRleHR1cmVzLmFkZFZvaWQoV1RGTW92ZSh0ZXh0dXJlKSk7IH0KLQotcHJpdmF0ZToKLSAgICBH
UFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYpOwotCi0gICAg
UGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXI7Ci0g
ICAgSGFzaFNldDxSZWY8R1BVQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKLSAgICBIYXNoU2V0PFJl
ZjxHUFVUZXh0dXJlPj4gbV91c2VkVGV4dHVyZXM7Ci0gICAgYm9vbCBtX2lzRW5jb2RpbmdQYXNz
IHsgZmFsc2UgfTsKLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQmxpdENvbW1hbmRFbmNvZGVyICpi
bGl0RW5jb2RlcigpIGNvbnN0OwotICAgIG11dGFibGUgUmV0YWluUHRyPE1UTEJsaXRDb21tYW5k
RW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJlRnVuY3Rpb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwYmJhMzljOWRmZTRkMDAyODkzYzlhYjVjMjhkMTJm
ZTRjMjhmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xh
c3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsKLSAgICBOZXZlciwKLSAgICBMZXNzLAotICAgIEVxdWFs
LAotICAgIExlc3NFcXVhbCwKLSAgICBHcmVhdGVyLAotICAgIE5vdEVxdWFsLAotICAgIEdyZWF0
ZXJFcXVhbCwKLSAgICBBbHdheXMKLX07Ci0KLXVzaW5nIFBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9u
ID0gdW5zaWduZWQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJhMDQxNWQ5MGQ4Y2JjZjg3ZGJjYTJhMmFjY2QyNWJhMTRlYjhhNmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gdHJ5
Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUo
UmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJik7Ci0gICAgdm9pZCBkaXNwYXRjaCh1bnNp
Z25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBHUFVDb21w
dXRlUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRmb3JtQ29tcHV0ZVBh
c3NFbmNvZGVyU21hcnRQdHImJik7Ci0gICAgfkdQVUNvbXB1dGVQYXNzRW5jb2RlcigpIHsgZW5k
UGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcgotICAgIGNvbnN0
IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkgZmluYWwgeyBtX3BsYXRm
b3JtQ29tcHV0ZVBhc3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRBTCkKLSAgICB2
b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVzYWdlKSBmaW5h
bDsKLSAgICB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVn
ZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3Jt
Q29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcjsK
LSAgICBSZWZQdHI8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiBtX3BpcGVsaW5lOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlw
ZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRl
UGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0OWMyN2UzMzA0Mjgz
YWIzZTUwODg5ZDg3Yjg3ZWM4OGZhNThjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
Q29tcHV0ZVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BV
UGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIEdQVVBp
cGVsaW5lTGF5b3V0OwotCi1zdHJ1Y3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKLQot
Y2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIEdQVVBpcGVsaW5lIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVDb21wdXRlUGlwZWxpbmUoKTsKLQotICAgIHN0YXRpYyBS
ZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29u
c3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAg
ICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAg
Ym9vbCByZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yJiYgY29tcHV0ZVN0YWdlKTsKLQotICAgIGNvbnN0IFBsYXRmb3JtQ29tcHV0ZVBpcGVs
aW5lKiBwbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1D
b21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0KLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAg
ICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXB1dGVEaW1lbnNpb25zOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lKFBsYXRmb3JtQ29tcHV0
ZVBpcGVsaW5lU21hcnRQdHImJiwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zLCBjb25zdCBSZWZQ
dHI8R1BVUGlwZWxpbmVMYXlvdXQ+Jik7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3JtQ29tcHV0ZVBp
cGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZTsKLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIG1fY29tcHV0ZURpbWVu
c2lvbnMgeyAwLCAwLCAwIH07Ci0jZW5kaWYKLQotICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIElu
c3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4gbV9s
YXlvdXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfR1BVUElQRUxJTkUoV2ViQ29yZTo6R1BVQ29tcHV0ZVBpcGVsaW5lLCBpc0NvbXB1dGVQ
aXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjM5MTUw
NWVlYzI1OWEyM2Q4MTgxZjY3NGRkZDg3ZmMwNTA2MjZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZSB7Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8R1BVUGlw
ZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiBj
b21wdXRlKQotICAgICAgICA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeyBXVEZNb3ZlKGxh
eW91dCkgfQotICAgICAgICAsIGNvbXB1dGVTdGFnZSB7IFdURk1vdmUoY29tcHV0ZSkgfQotICAg
IHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IgY29tcHV0ZVN0
YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0N2QwM2IzNjJhNjg4YjJkNzkxMGM3ZmIxNzliYjFlOTll
MDZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcGFyZUZ1
bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVURlcHRoU3RlbmNp
bFN0YXRlRGVzY3JpcHRvciB7Ci0gICAgYm9vbCBkZXB0aFdyaXRlRW5hYmxlZDsKLSAgICBHUFVD
b21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGNjZjUyYjllNWRjYTRiMTE5ZGVhZGU0MmRlZmE5YmViZmY1NDQ3ZWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAu
aCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5j
bHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZl
ci5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVDb21t
YW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVz
LmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2lu
Y2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNhbXBs
ZXIuaCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVNo
YWRlck1vZHVsZS5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5o
IgotI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BV
QnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFw
cGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIEdQVUJ1ZmZl
cjo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBpc01hcHBlZCwgZXJyb3JTY29wZXMpOwot
fQotCi1zdGF0aWMgdW5zaWduZWQgbWF4aW11bU1pcExldmVsQ291bnQoR1BVVGV4dHVyZURpbWVu
c2lvbiBkaW1lbnNpb24sIEdQVUV4dGVudDNEIHNpemUpCi17Ci0gICAgdW5zaWduZWQgd2lkdGgg
PSBzaXplLndpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodCA9IDE7Ci0gICAgdW5zaWduZWQgZGVw
dGggPSAxOwotICAgIHN3aXRjaCAoZGltZW5zaW9uKSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGlt
ZW5zaW9uOjpfMWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lv
bjo6XzJkOgotICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6Ci0gICAgICAgIGhlaWdodCA9IHNpemUu
aGVpZ2h0OwotICAgICAgICBkZXB0aCA9IHNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGF1dG8gbWF4RGltZW5zaW9uID0gc3RkOjptYXgoc3RkOjptYXgod2lkdGgsIGhl
aWdodCksIGRlcHRoKTsKLSAgICBpbnQgaSA9IHNpemVvZihHUFVFeHRlbnQzRDo6SW5uZXJUeXBl
KSAqIDggLSAxOwotICAgIHdoaWxlICghKG1heERpbWVuc2lvbiAmICgxIDw8IGkpKSAmJiBpID49
IDApCi0gICAgICAgIC0taTsKLSAgICBBU1NFUlQoaSA+PSAwKTsKLSAgICByZXR1cm4gaSArIDE7
Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUoY29u
c3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKCFk
ZXNjcmlwdG9yLnNpemUud2lkdGggfHwgIWRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgfHwgIWRlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUgMCBkaW1lbnNpb25zLiIpOwotICAgICAgICBy
ZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmICghZGVzY3JpcHRvci5taXBMZXZlbENvdW50KSB7
Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZXMg
Y2FuJ3QgaGF2ZSAwIG1pcGxldmVscy4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0K
LSAgICBpZiAoIWRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Bl
cy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAgc2FtcGxlcy4i
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICAvLyBodHRwczovL2RldmVsb3Bl
ci5hcHBsZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVzLnBkZgotICAgIHVuc2ln
bmVkIG1heFJlZ3VsYXJTaXplID0gODE5MjsKLSAgICB1bnNpZ25lZCBtYXhEZXB0aFNpemUgPSAy
MDQ4OwotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRl
eHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+
IG1heFJlZ3VsYXJTaXplKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IobWFrZVN0cmluZygiMUQgdGV4dHVyZSBpcyB0b28gd2lkZTogIiwgZGVzY3Jp
cHRvci5zaXplLndpZHRoLCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heFJlZ3VsYXJTaXplLCAiLiIp
KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2Ny
aXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JT
Y29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJlIGFycmF5
IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIgbmVlZHMg
dG8gYmUgPD0gIiwgbWF4RGVwdGhTaXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9u
OjpfMmQ6Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUud2lkdGggPiBtYXhSZWd1bGFyU2l6
ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4UmVndWxhclNpemUpIHsKLSAgICAgICAg
ICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0
ZXh0dXJlIGlzIHRvbyBsYXJnZToiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIgYW5kICIsIGRl
c2NyaXB0b3Iuc2l6ZS5oZWlnaHQsICIgbmVlZCB0byBiZSA8PSAiLCBtYXhSZWd1bGFyU2l6ZSwg
Ii4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNpemUuZGVwdGggPiBtYXhEZXB0aFNpemUpIHsKLSAgICAgICAgICAgIG1fZXJy
b3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIyRCB0ZXh0dXJlIGFy
cmF5IGhhcyB0b28gbWFueSBsYXllcnM6ICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwgIiBuZWVk
cyB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNp
b246Ol8zZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1heERlcHRoU2l6
ZSB8fCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbWF4RGVwdGhTaXplIHx8IGRlc2NyaXB0b3Iu
c2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjNEIHRleHR1cmUgaXMgdG9vIGxhcmdl
OiAiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIsICIsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQs
ICIsIGFuZCAiLCBkZXNjcmlwdG9yLnNpemUuZGVwdGgsICIgbmVlZCB0byBiZSA8PSAiLCBtYXhE
ZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gPT0gR1BV
VGV4dHVyZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7
Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQgdGV4dHVy
ZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0g
ICAgYXV0byBtYXhMZXZlbHMgPSBtYXhpbXVtTWlwTGV2ZWxDb3VudChkZXNjcmlwdG9yLmRpbWVu
c2lvbiwgZGVzY3JpcHRvci5zaXplKTsKLSAgICBpZiAoZGVzY3JpcHRvci5taXBMZXZlbENvdW50
ID4gbWF4TGV2ZWxzKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRF
cnJvcihtYWtlU3RyaW5nKCJUb28gbWFueSBtaXBsZXZlbHM6ICIsIGRlc2NyaXB0b3IubWlwTGV2
ZWxDb3VudCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhMZXZlbHMsICIuIikpOwotICAgICAgICBy
ZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEg
JiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSA0KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBzYW1wbGVDb3VudCBjYW4gb25seSBiZSAx
IG9yIDQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0
b3Iuc2FtcGxlQ291bnQgIT0gMSkgewotICAgICAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24g
IT0gR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJkKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVz
LT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmUgZGltZW5zaW9uIGluY29tcGF0aWJsZSB3
aXRoIG11bHRpc2FtcGxpbmcuIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9
Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgIT0gMSkgewotICAgICAgICAg
ICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0aXNhbXBsZWQgdGV4
dHVyZXMgY2FuJ3QgaGF2ZSBtaXBtYXBzLiIpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEpIHsKLSAgICAg
ICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiQXJyYXkgdGV4dHVy
ZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRvci51c2FnZSAmIHN0YXRpY19jYXN0PEdQVVRl
eHR1cmVVc2FnZUZsYWdzPihHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKSkgewotICAg
ICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJNdWx0aXNhbXBs
ZWQgdGV4dHVyZXMgY2FuJ3QgaGF2ZSBTVE9SQUdFIHVzYWdlLiIpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogT25seSBzb21lIHBpeGVsIGZv
cm1hdHMgYXJlIGNhcGFibGUgb2YgTVNBQS4gV2hlbiB3ZSBhZGQgdGhvc2UgbmV3IHBpeGVsIGZv
cm1hdHMsIHdlJ2xsIGhhdmUgdG8gYWRkIGZpbHRlcmluZyBjb2RlIGhlcmUuCi0gICAgfQotCi0g
ICAgLy8gVGhlIGhlaWdodCBjb21wb25lbnQgZm9yIDFkIHRleHR1cmVzIGlzIHRoZSBhcnJheSBs
ZW5ndGguCi0gICAgLy8gVGhlIGRlcHRoIGNvbXBvbmVudCBmb3IgMmQgdGV4dHVyZXMgaXMgdGhl
IGFycmF5IGxlbmd0aC4KLSAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gPT0gR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzFkICYmIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCAhPSAxKSB7Ci0gICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiMUQgdGV4dHVyZXMgY2FuJ3Qg
aGF2ZSBkZXB0aCAhPSAxLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGlm
IChkZXNjcmlwdG9yLmZvcm1hdCA9PSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVu
Y2lsOCAmJiBkZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQp
IHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJEZXB0aC9z
dGVuY2lsIHRleHR1cmVzIG11c3QgYmUgMmQuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
fQotCi0gICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRo
MzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkgewotICAgICAg
ICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkRlcHRoL3N0ZW5jaWwgdGV4
dHVyZXMgY2FuJ3QgYmUgbXVsdGlzYW1wbGVkLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAg
IH0KLQotICAgIGlmIChzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oZGVzY3JpcHRv
ci51c2FnZSkgPj0gc3RhdGljX2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVV
c2FnZTo6RmxhZ3M6Ok1heGltdW1WYWx1ZSkpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIHVzYWdlIGZsYWdzLiIpOwotICAgICAgICByZXR1
cm4geyB9OwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoKnRoaXMs
IGRlc2NyaXB0b3IsIG1ha2VSZWYoKm1fZXJyb3JTY29wZXMpKTsKLX0KLQotUmVmUHRyPEdQVVNh
bXBsZXI+IEdQVURldmljZTo6dHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVU2FtcGxlcjo6dHJ5Q3Jl
YXRlKCp0aGlzLCBkZXNjcmlwdG9yKTsKLX0KLQotUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4g
R1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVQmluZEdy
b3VwTGF5b3V0Ojp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWY8R1BVUGlw
ZWxpbmVMYXlvdXQ+IEdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVUGlw
ZWxpbmVMYXlvdXQ6OmNyZWF0ZShXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLX0KLQotUmVmUHRyPEdQ
VVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICByZXR1cm4g
R1BVU2hhZGVyTW9kdWxlOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWZQ
dHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVURldmljZTo6dHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUo
Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5l
Ojp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsKLX0KLQotUmVmUHRy
PEdQVUNvbXB1dGVQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUo
Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzKSBjb25zdAotewotICAgIHJldHVybiBHUFVDb21wdXRlUGlwZWxp
bmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwotfQotCi1SZWZQ
dHI8R1BVQmluZEdyb3VwPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cChjb25zdCBHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2JpbmRHcm91cEFsbG9jYXRvcikKLSAgICAgICAgbV9i
aW5kR3JvdXBBbGxvY2F0b3IgPSBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0ZShlcnJvclNj
b3Blcyk7Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoZGVzY3JpcHRvciwg
Km1fYmluZEdyb3VwQWxsb2NhdG9yKTsKLX0KLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQ
VURldmljZTo6dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQ
VUNvbW1hbmRCdWZmZXI6OnRyeUNyZWF0ZSgqdGhpcyk7Ci19Ci0KLVJlZlB0cjxHUFVRdWV1ZT4g
R1BVRGV2aWNlOjp0cnlHZXRRdWV1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3F1ZXVlKQotICAg
ICAgICBtX3F1ZXVlID0gR1BVUXVldWU6OnRyeUNyZWF0ZSgqdGhpcyk7Ci0KLSAgICByZXR1cm4g
bV9xdWV1ZTsKLX0KLSAgICAKLXZvaWQgR1BVRGV2aWNlOjpzZXRTd2FwQ2hhaW4oUmVmUHRyPEdQ
VVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCi17Ci0gICAgbV9zd2FwQ2hhaW4gPSBXVEZNb3ZlKHN3
YXBDaGFpbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmgKaW5kZXggZjBiYmJlMzA0ZmYwYjZhNzYyYjlmNDhjNDQxM2ZhMTVlZjVmNDE1NS4u
NzliZDU3NmM5NjY0M2JiODhjNTI2NDMxNjNiOTIwZmY4Y2NiZTZmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsODYgKzI1LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdy
b3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJH
UFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVUXVldWUuaCIKLSNpbmNsdWRlICJHUFVT
d2FwQ2hhaW4uaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHUFVCaW5kR3JvdXA7Ci1jbGFzcyBHUFVCaW5kR3JvdXBMYXlvdXQ7Ci1jbGFzcyBHUFVCdWZm
ZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lOwot
Y2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBHUFVQaXBlbGluZUxheW91dDsKLWNsYXNzIEdQ
VVJlbmRlclBpcGVsaW5lOwotY2xhc3MgR1BVU2FtcGxlcjsKLWNsYXNzIEdQVVNoYWRlck1vZHVs
ZTsKLWNsYXNzIEdQVVRleHR1cmU7Ci0KLXN0cnVjdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOwot
c3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQnVmZmVyRGVz
Y3JpcHRvcjsKLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotc3RydWN0IEdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I7Ci1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zOwotc3RydWN0IEdQVVNhbXBs
ZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7Ci1zdHJ1Y3Qg
R1BVU3dhcENoYWluRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKLQot
ZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247Ci0KLWNsYXNzIEdQVURldmljZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxHUFVEZXZp
Y2U+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3JlYXRlKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwotICAgIHN0YXRp
YyB2b2lkIHByZXdhcm0oKTsKLQotICAgIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZUJ1ZmZl
cihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVF
cnJvclNjb3BlcyYpOwotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGVUZXh0dXJlKGNv
bnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVVNhbXBsZXI+
IHRyeUNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2FtcGxlckRlc2NyaXB0b3ImKSBjb25zdDsKLQot
ICAgIFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IHRyeUNyZWF0ZUJpbmRHcm91cExheW91dChj
b25zdCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPEdQVVBp
cGVsaW5lTGF5b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVUJpbmRHcm91cD4gdHJ5Q3JlYXRlQmluZEdy
b3VwKGNvbnN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpIGNvbnN0
OwotCi0gICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3JlYXRlU2hhZGVyTW9kdWxlKGNv
bnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVUmVu
ZGVyUGlwZWxpbmU+IHRyeUNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0gICAgUmVmUHRyPEdQVUNv
bXB1dGVQaXBlbGluZT4gdHJ5Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IEdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwotCi0gICAgUmVmUHRy
PEdQVUNvbW1hbmRCdWZmZXI+IHRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdDsKLQotICAg
IFJlZlB0cjxHUFVRdWV1ZT4gdHJ5R2V0UXVldWUoKSBjb25zdDsKLSAgICAKLSAgICBQbGF0Zm9y
bURldmljZSogcGxhdGZvcm1EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGV2aWNl
LmdldCgpOyB9Ci0gICAgR1BVU3dhcENoYWluKiBzd2FwQ2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X3N3YXBDaGFpbi5nZXQoKTsgfQotICAgIHZvaWQgc2V0U3dhcENoYWluKFJlZlB0cjxHUFVTd2Fw
Q2hhaW4+JiYpOwotCi0gICAgdm9pZCBzZXRFcnJvclNjb3BlcyhSZWY8R1BVRXJyb3JTY29wZXM+
JiYgZXJyb3JTY29wZXMpIHsgbV9lcnJvclNjb3BlcyA9IFdURk1vdmUoZXJyb3JTY29wZXMpOyB9
Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdXNlV0hMU0wgPSB0cnVlOwotCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IEdQVURldmljZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYpOwotCi0g
ICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciBtX3BsYXRmb3JtRGV2aWNlOwotICAgIG11dGFibGUg
UmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVlOwotICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dh
cENoYWluOwotICAgIG11dGFibGUgUmVmUHRyPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gbV9iaW5k
R3JvdXBBbGxvY2F0b3I7Ci0gICAgUmVmUHRyPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9yU2NvcGVz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQordm9pZCBwcmV3YXJtR1BVKCk7CiAKLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJiMjhkNGZjMTJjOGEyNDcyOGNlMjA2NWJkMjcyMWRiYWY4MmJmZWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3IuaCIK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUVycm9yIGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVy
IGZpbHRlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIHN3aXRjaCAoZmlsdGVyKSB7
Ci0gICAgY2FzZSBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnk6Ci0gICAgICAgIHJldHVybiBH
UFVFcnJvcihSZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4oR1BVT3V0T2ZNZW1vcnlFcnJvcjo6
Y3JlYXRlKCkpKTsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uOgotICAgICAg
ICByZXR1cm4gR1BVRXJyb3IoUmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlv
bkVycm9yOjpjcmVhdGUobWVzc2FnZSkpKTsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpOb25l
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEdQVUVycm9y
KFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+KEdQVVZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKCJC
YWQgZXJyb3IhIikpKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZjOGZh
ZmFmYTQ1ZjBmZjE0N2NiOGJiYjQ3MTMzMjI3NTJjMjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVU91
dE9mTWVtb3J5RXJyb3IuaCIKLSNpbmNsdWRlICJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IEdQVUVycm9yRmlsdGVyOwotCi11c2luZyBHUFVFcnJvciA9IFZhcmlhbnQ8UmVmUHRyPEdQVU91
dE9mTWVtb3J5RXJyb3I+LCBSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj47Ci0KLUdQVUVycm9y
IGNyZWF0ZUVycm9yKEdQVUVycm9yRmlsdGVyLCBjb25zdCBTdHJpbmcmKTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yRmlsdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ1NjlmZWYzMjcwNWQ5OWJmZWNlYTAwODkxZmYxNjQ0YTBhNGQxNzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yRmlsdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVy
IHsKLSAgICBOb25lLAotICAgIE91dE9mTWVtb3J5LAotICAgIFZhbGlkYXRpb24sCi19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Bl
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZWU5Y2YxYmZkMGMwMmMyMDU1
YjcyMjQwMTIxODM4NGQzNmM1OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9y
U2NvcGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgdW5zaWduZWQgbWF4
VW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCA9IDI1NjsKLQotUmVmPEdQVUVycm9yU2NvcGVz
PiBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVRXJyb3JTY29wZXMoV1RGTW92ZShj
YWxsYmFjaykpKTsKLX0KLQotR1BVRXJyb3JTY29wZXM6OkdQVUVycm9yU2NvcGVzKFVuY2FwdHVy
ZWRFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCi0gICAgOiBtX3VuY2FwdHVyZWRFcnJvckNhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKQotICAgICwgbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNB
bGxvd2VkKG1heFVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQpCi17Ci19Ci0KLXZvaWQgR1BV
RXJyb3JTY29wZXM6OnB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAg
ICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQg
fSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IEdQVUVycm9yU2NvcGVzOjpwb3BFcnJv
clNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpCi17Ci0gICAgaWYgKG1fZXJyb3JTY29wZXMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGZhaWxNZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0cyEi
OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gc2NvcGUg
PSBtX2Vycm9yU2NvcGVzLnRha2VMYXN0KCk7Ci0gICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBH
UFVFcnJvckZpbHRlcjo6Tm9uZSA/IHN0ZDo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOwotfQotCi12
b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
R1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRf
aWYobV9lcnJvclNjb3Blcy5yYmVnaW4oKSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtmaWx0ZXJd
KGNvbnN0IEVycm9yU2NvcGUmIHNjb3BlKSB7Ci0gICAgICAgIHJldHVybiBzY29wZS5maWx0ZXIg
PT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUgfHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsKLSAgICB9
KTsKLQotICAgIGlmIChpdGVyYXRvciA9PSBtX2Vycm9yU2NvcGVzLnJlbmQoKSkgewotICAgICAg
ICBpZiAoIW1fbnVtVW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0ZUVycm9yKGZp
bHRlciwgbWVzc2FnZSkpOwotICAgICAgICBpZiAoISgtLW1fbnVtVW5jYXB0dXJlZEVycm9yRXZl
bnRzQWxsb3dlZCkpCi0gICAgICAgICAgICBtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKGNyZWF0
ZUVycm9yKEdQVUVycm9yRmlsdGVyOjpWYWxpZGF0aW9uLCAiV2ViR1BVOiBUb28gbWFueSBlcnJv
cnM7IG5vIG1vcmUgZXJyb3IgZXZlbnRzIHdpbGwgZmlyZSBvbiB0aGlzIEdQVURldmljZS4iKSk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHRoZSBzY29wZSBoYXMgYWxy
ZWFkeSBjYXB0dXJlZCBhbiBlcnJvciwgaWdub3JlIHRoaXMgbmV3IG9uZS4KLSAgICBpZiAoaXRl
cmF0b3ItPmVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpdGVyYXRvci0+ZXJyb3IgPSBj
cmVhdGVFcnJvcihmaWx0ZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIEdQVUVycm9yU2NvcGVzOjpn
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGdlbmVy
YXRlRXJyb3IobV9wcmVmaXggKyBtZXNzYWdlLCBHUFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JTY29wZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJv
clNjb3Blcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTA5YzY4NGE5M2M3NmIz
N2RmN2NkMDczNWY3ZGZlNzhlMmFjN2YyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvclNjb3Blcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9y
LmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JGaWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRXJyb3JTY29wZXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVFcnJvclNjb3Blcz4gewotcHVibGljOgotICAgIHVzaW5nIFVuY2FwdHVyZWRF
cnJvckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChHUFVFcnJvciYmKT47Ci0gICAgc3RhdGljIFJl
ZjxHUFVFcnJvclNjb3Blcz4gY3JlYXRlKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0g
ICAgdm9pZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlcik7Ci0gICAgc3RkOjpvcHRpb25h
bDxHUFVFcnJvcj4gcG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKTsKLQotICAgIHZv
aWQgZ2VuZXJhdGVFcnJvcihjb25zdCBTdHJpbmcmLCBHUFVFcnJvckZpbHRlciA9IEdQVUVycm9y
RmlsdGVyOjpWYWxpZGF0aW9uKTsKLSAgICB2b2lkIGdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEVycm9yUHJlZml4KGNvbnN0IFN0cmluZyYgcHJlZml4
KSB7IG1fcHJlZml4ID0gcHJlZml4OyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEVycm9yU2Nv
cGUgewotICAgICAgICBjb25zdCBHUFVFcnJvckZpbHRlciBmaWx0ZXI7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yOwotICAgIH07Ci0KLSAgICBHUFVFcnJvclNjb3BlcyhV
bmNhcHR1cmVkRXJyb3JDYWxsYmFjayYmKTsKLQotICAgIFVuY2FwdHVyZWRFcnJvckNhbGxiYWNr
IG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBWZWN0b3I8RXJyb3JTY29wZT4gbV9l
cnJvclNjb3BlczsKLSAgICBTdHJpbmcgbV9wcmVmaXg7Ci0gICAgdW5zaWduZWQgbV9udW1VbmNh
cHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFeHRlbnQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU0NDgyNjUyMGNjNWU3ZTBjYzlmZjQzZmQxNDI4MGY1MDQ0YjdlYmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdHJ1Y3QgR1BVRXh0ZW50M0QgewotICAgIHVzaW5n
IElubmVyVHlwZSA9IHVuc2lnbmVkOwotICAgIElubmVyVHlwZSB3aWR0aDsKLSAgICBJbm5lclR5
cGUgaGVpZ2h0OwotICAgIElubmVyVHlwZSBkZXB0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGltaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGltaXRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDEyMmU1MWMzZTczYjk1NjFjYmM4MTU0ZmQwOTc2ZDc4ZTllZjgyYTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpbWl0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCB1bnNpZ25lZCBtYXhWZXJ0ZXhCdWZmZXJzID0g
MTY7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9h
ZE9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTG9hZE9wLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjRlZWY1Mjc0ZmJjMGFkNzY3NGY2YmM1
NmU4ZjE5NmUxYzk2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxvYWRPcC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IEdQVUxvYWRPcCB7Ci0gICAgQ2xlYXIsCi0gICAgTG9hZAotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT2JqZWN0QmFzZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2N2IyZDkxOGMyZTU0NTE3Y2IzN2ZmZmVhNmIyNjJkNDVmODJmYTlm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVU9iamVjdEJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVPYmplY3RCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+R1BVT2JqZWN0QmFzZSgpID0gZGVmYXVsdDsKLQotcHJvdGVjdGVkOgotICAgIEdQVU9i
amVjdEJhc2UoUmVmPEdQVUVycm9yU2NvcGVzPiYmIHJlcG9ydGVyKQotICAgICAgICA6IG1fZXJy
b3JTY29wZXMoV1RGTW92ZShyZXBvcnRlcikpIHsgfQotCi0gICAgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclNjb3BlczsgfQotCi1wcml2YXRlOgot
ICAgIFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY0MjBlOTdkZmUzYmYwNzU2NmM1YjZh
MGZkZWM0NjY4OTYxNzk0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZNZW1v
cnlFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVU91dE9mTWVtb3J5RXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVPdXRPZk1lbW9y
eUVycm9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVPdXRPZk1lbW9yeUVycm9yPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdQVU91dE9mTWVtb3J5RXJyb3IpOyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGlu
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjODgxNjU1NDM1NzEyMzEwNWI2
ZTllN2M4ODMzNDFmYzJiZDgyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVs
aW5lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUGlwZWxpbmU6On5HUFVQaXBlbGlu
ZSgpID0gZGVmYXVsdDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MmVlOGQ3YTNi
N2VmZjE5OTA2ZTk1MDA4MTBmMzQ0MmMzY2ViNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVBpcGVsaW5lPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
R1BVUGlwZWxpbmUoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfR1BVUElQRUxJTkUoVG9WYWx1ZVR5cGVO
YW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5
cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkdQVVBpcGVs
aW5lJiBwaXBlbGluZSkgeyByZXR1cm4gcGlwZWxpbmUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQx
MjJiYTkzNmRmNGQwMDZlYjYxM2U5NjE2OTY2MGMxMWY5OWQ0NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBsYXlv
dXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVBpcGVsaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQaXBlbGluZUxheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi
MTk5M2E5ZTJmMDBiNDJlNDM4NDMxN2NhNjVkYTRlZDRkZWExZWEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlw
ZWxpbmVMYXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKEdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgR1BVUGlwZWxpbmVMYXlvdXQoV1RGTW92ZShkZXNjcmlwdG9yLmJpbmRHcm91
cExheW91dHMpKSk7Ci19Ci0KLUdQVVBpcGVsaW5lTGF5b3V0OjpHUFVQaXBlbGluZUxheW91dChW
ZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+JiYgbGF5b3V0cykKLSAgICA6IG1f
YmluZEdyb3VwTGF5b3V0cyhXVEZNb3ZlKGxheW91dHMpKQotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5OTk0NmZjYmEwMTJjY2VkNDZhN2YxNzIzOTI5
Njc0NTkxOGZjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZUxheW91dCA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVBpcGVsaW5lTGF5b3V0PiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxHUFVQaXBlbGluZUxheW91dD4gY3JlYXRlKEdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0
Pj4mIGJpbmRHcm91cExheW91dHMoKSBjb25zdCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dHM7
IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVQaXBlbGluZUxheW91dChWZWN0b3I8UmVm
PGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+JiYpOwotCi0gICAgVmVjdG9yPFJlZjxjb25zdCBH
UFVCaW5kR3JvdXBMYXlvdXQ+PiBtX2JpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGExZWUy
Yzc3NTFmNDcxZmQ3NTQ1ODEwYjc3OGE1NDMyMmY1ODIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IGJp
bmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVQbGF0Zm9ybVR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkyYzc2NzI2Nzg2MmE1ZTgwMDdmZDhlMzMzMWRlNzZlNjlkZTNiMTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTUVUQUwp
Ci0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlc01ldGFsLmgiCi0jZWxpZiBVU0UoREFXTikKLSNp
bmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzRGF3bi5oIgotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0
ZWQgcGxhdGZvcm0gZm9yIFdlYkdQVSIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDlmYTRhMDUyNjMz
NGYwZjdkM2Y3ZDlkZTg5MTFlZWQ5Y2NhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVDb21tYW5kQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI6OkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5k
QnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShj
b21tYW5kQnVmZmVyKSkKLXsKLSAgICBtX2NvbW1hbmRCdWZmZXItPnNldElzRW5jb2RpbmdQYXNz
KHRydWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzk3MjQ0ZjJlZTFmZGNkNWQxYjE3Mzc1YzllNDExZDBmNjZkYzVhOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlw
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEdQVUJpbmRHcm91cDsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwotCi1jbGFz
cyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKLSAgICB2
b2lkIHNldEJpbmRHcm91cCh1bnNpZ25lZCwgR1BVQmluZEdyb3VwJik7Ci0KLXByb3RlY3RlZDoK
LSAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7
Ci0KLSAgICBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb21tYW5kQnVmZmVyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBQbGF0Zm9ybVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwotCi1w
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpID0gMDsKLSNpZiBV
U0UoTUVUQUwpCi0gICAgdmlydHVhbCB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNl
ICosIHVuc2lnbmVkKSA9IDA7Ci0KLSAgICAvLyBSZW5kZXIgY29tbWFuZCBlbmNvZGVyIG1ldGhv
ZHMuCi0gICAgdmlydHVhbCB2b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwg
TlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFnbWVudEJ1
ZmZlcihjb25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotICAgIC8v
IENvbXB1dGUuCi0gICAgdmlydHVhbCB2b2lkIHNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRMQnVm
ZmVyICosIE5TVUludGVnZXIsIHVuc2lnbmVkKSB7IH0KLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0K
LSAgICBSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjdjMDYyOGVmN2EzMDM1ZTU5MjIxZmVkOTg3ZDVmNTdkYjA3YWQxNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsK
LSAgICBTdHJpbmcgZW50cnlQb2ludDsKLX07Ci0KLXN0cnVjdCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1
bGUsIGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAg
ICAgIDogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAs
IG1vZHVsZSB7IFdURk1vdmUobW9kdWxlKSB9Ci0gICAgewotICAgIH0KLQotICAgIFJlZjxHUFVT
aGFkZXJNb2R1bGU+IG1vZHVsZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ1Mjc4
NTNhMzRhZmUwMzUzYzRmNzg3Nzk5Y2NiZDQ2NmQ4ZWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVRdWV1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkRlZmVy
cmFibGVUYXNrLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7Ci1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQ
VVF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEdQVVF1ZXVlPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQ
bGF0Zm9ybVF1ZXVlKiBwbGF0Zm9ybVF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVF1
ZXVlLmdldCgpOyB9Ci0KLSAgICB2b2lkIHN1Ym1pdChWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZm
ZXI+PiYmKTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgR1BVUXVldWUoUGxhdGZvcm1R
dWV1ZVNtYXJ0UHRyJiYsIGNvbnN0IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1RdWV1ZVNt
YXJ0UHRyIG1fcGxhdGZvcm1RdWV1ZTsKLSAgICBXZWFrUHRyPGNvbnN0IEdQVURldmljZT4gbV9k
ZXZpY2U7Ci0gICAgTWFpblRocmVhZERlZmVycmFibGVUYXNrIG1fcHJlc2VudFRhc2s7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVh
NjRiNDU5NGFlMTNiNGM0NmQ4ZTVjNjZhNzI0NWI3MDExNzk2OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVDb2xvci5oIgotI2luY2x1ZGUgIkdQVUxvYWRPcC5oIgotI2luY2x1
ZGUgIkdQVVN0b3JlT3AuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRPcCBsb2FkT3A7Ci0g
ICAgR1BVU3RvcmVPcCBzdG9yZU9wOwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3IgeyAwLCAwLCAw
LCAxIH07Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2Ugewot
ICAgIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJl
PiYmLCBjb25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsK
LQotICAgIFJlZjxHUFVUZXh0dXJlPiBhdHRhY2htZW50OwotfTsKLQotc3RydWN0IEdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVUxvYWRP
cCBkZXB0aExvYWRPcDsKLSAgICBHUFVTdG9yZU9wIGRlcHRoU3RvcmVPcDsKLSAgICBmbG9hdCBj
bGVhckRlcHRoOwotCi0gICAgLy8gRklYTUU6IEFkZCBzdGVuY2lsIHN1cHBvcnQuCi19OwotCi1z
dHJ1Y3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGZpbmFs
IDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVU
ZXh0dXJlPiYmLCBjb25zdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3JCYXNlJik7Ci0KLSAgICBSZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKLX07Ci0KLXN0
cnVjdCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci0gICAgVmVjdG9yPEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIHN0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM4NDQzZjVkNGMxMjQ1MDBmOGZlM2M1MTI4NzdjMGUxNTM4YWJlYzEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1
ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlw
ZWxpbmUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1BVQnVmZmVyOwotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLQotc3RydWN0IEdQVUNv
bG9yOwotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQ
YXNzRW5jb2RlciA6IHB1YmxpYyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gdHJ5Q3JlYXRlKFJlZjxH
UFVDb21tYW5kQnVmZmVyPiYmLCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmKTsKLQotICAgIHZv
aWQgc2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKLSAgICB2b2lk
IHNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRo
LCBmbG9hdCBtYXhEZXB0aCk7Ci0gICAgdm9pZCBzZXRTY2lzc29yUmVjdCh1bnNpZ25lZCB4LCB1
bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNl
dEluZGV4QnVmZmVyKEdQVUJ1ZmZlciYsIHVpbnQ2NF90IG9mZnNldCk7Ci0gICAgdm9pZCBzZXRW
ZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+
JiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cyk7Ci0gICAgdm9pZCBkcmF3KHVuc2ln
bmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZl
cnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZCh1bnNp
Z25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdElu
ZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSk7Ci0KLXByaXZhdGU6
Ci0gICAgR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIFBsYXRm
b3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciYmKTsKLSAgICB+R1BVUmVuZGVyUGFzc0VuY29k
ZXIoKSB7IGVuZFBhc3MoKTsgfQotCi0gICAgLy8gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIK
LSAgICBjb25zdCBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NF
bmNvZGVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRW5jb2RlcigpIGZpbmFs
IHsgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyID0gbnVsbHB0cjsgfQotI2lmIFVTRShNRVRB
TCkKLSAgICB2b2lkIHVzZVJlc291cmNlKGNvbnN0IE1UTFJlc291cmNlICosIHVuc2lnbmVkIHVz
YWdlKSBmaW5hbDsKLSAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBNVExCdWZmZXIgKiwg
TlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEZy
YWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWdu
ZWQgaW5kZXgpIGZpbmFsOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gbV9pbmRleEJ1ZmZlcjsK
LSAgICB1aW50NjRfdCBtX2luZGV4QnVmZmVyT2Zmc2V0OwotI2VuZGlmIC8vIFVTRShNRVRBTCkK
LQotICAgIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXI7Ci0gICAgUmVmUHRyPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiBtX3BpcGVs
aW5lOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTZh
MjQxYzA0NTMwODliMGJhYTE1MDFiODk1N2I0YjJlYzhmYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5j
bHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RGV2aWNlOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
IGZpbmFsIDogcHVibGljIEdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5HUFVS
ZW5kZXJQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4g
dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZp
Y2UmLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpv
cHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7
Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMRGVwdGhTdGVuY2lsU3RhdGUgKmRlcHRoU3RlbmNp
bFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQotI2Vu
ZGlmCi0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQotICAgIEdQ
VVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5KCkgY29uc3QgeyByZXR1cm4gbV9w
cmltaXRpdmVUb3BvbG9neTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGlu
ZGV4Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleEZvcm1hdDsgfQotCi1wcml2YXRlOgot
I2lmIFVTRShNRVRBTCkKLSAgICBHUFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsU3RhdGU+JiYsIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmLCBHUFVQcmlt
aXRpdmVUb3BvbG9neSwgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0
cjxHUFVQaXBlbGluZUxheW91dD4mLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JC
YXNlJik7Ci0KLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVu
Y2lsU3RhdGU7Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmVTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmU7Ci0gICAgR1BVUHJpbWl0aXZlVG9w
b2xvZ3kgbV9wcmltaXRpdmVUb3BvbG9neTsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9y
bWF0PiBtX2luZGV4Rm9ybWF0OwotCi0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9y
IHJlY29tcGlsYXRpb24uCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX2xheW91dDsK
LSAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIG1fcmVuZGVyRGVzY3JpcHRvckJh
c2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfR1BVUElQRUxJTkUoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmUsIGlzUmVuZGVyUGlwZWxp
bmUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZTJkYTlhYWEzMzZh
N2FmMDFkOTMyODJkZWZlMDJhYzlhNzM5MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVZlcnRleElucHV0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVByaW1pdGl2ZVRvcG9sb2d5
IHsKLSAgICBQb2ludExpc3QsCi0gICAgTGluZUxpc3QsCi0gICAgTGluZVN0cmlwLAotICAgIFRy
aWFuZ2xlTGlzdCwKLSAgICBUcmlhbmdsZVN0cmlwCi19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZl
VG9wb2xvZ3k7Ci0gICAgVmVjdG9yPEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRl
czsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj4gZGVw
dGhTdGVuY2lsU3RhdGU7Ci0gICAgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0
OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IEdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5
b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXgsIHN0ZDo6b3B0aW9u
YWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50LCBjb25zdCBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiBiYXNlKQotICAgICAgICA6IEdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UgeyBXVEZNb3ZlKGxheW91dCkgfQotICAgICAgICAsIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvckJhc2UoYmFzZSkKLSAgICAgICAgLCB2ZXJ0ZXhTdGFnZShXVEZNb3Zl
KHZlcnRleCkpCi0gICAgICAgICwgZnJhZ21lbnRTdGFnZShXVEZNb3ZlKGZyYWdtZW50KSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0
YWdlOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBm
cmFnbWVudFN0YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2JhMGJkMTA2NmIwMWEwNjNjZmMzODZjYmMxZGQ0YzkzZDg0YjE2
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8b3B0aW9uYWw+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVQb3dlclByZWZlcmVuY2UgOiBib29sIHsgTG93
UG93ZXIsIEhpZ2hQZXJmb3JtYW5jZSB9OwotCi1zdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJl
bmNlOwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVNhbXBsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFhNjQ0NjlmY2NlYjY3
NGQ4OWZlZWEwYmJhMTJjZTNmZjNmMmEzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U2FtcGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3Jt
VHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVj
dCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVU2FtcGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEdQVVNhbXBsZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNhbXBs
ZXI+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRv
ciYpOwotCi0gICAgUGxhdGZvcm1TYW1wbGVyKiBwbGF0Zm9ybVNhbXBsZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtU2FtcGxlci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEdQVVNhbXBs
ZXIoUGxhdGZvcm1TYW1wbGVyU21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXJTbWFy
dFB0ciBtX3BsYXRmb3JtU2FtcGxlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzOTM3MGZlZGQ0MDljZmUyYmQzNzYwMTU4MjY2ZTAwMzQwMTcx
MWExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQWRkcmVzc01vZGUgewotICAg
IENsYW1wVG9FZGdlLAotICAgIFJlcGVhdCwKLSAgICBNaXJyb3JSZXBlYXQsCi19OwotCi1lbnVt
IGNsYXNzIEdQVUZpbHRlck1vZGUgewotICAgIE5lYXJlc3QsCi0gICAgTGluZWFyLAotfTsKLQot
c3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yIHsKLSAgICBHUFVBZGRyZXNzTW9kZSBhZGRyZXNz
TW9kZVUgeyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVBZGRyZXNzTW9k
ZSBhZGRyZXNzTW9kZVYgeyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsKLSAgICBHUFVB
ZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVcgeyBHUFVBZGRyZXNzTW9kZTo6Q2xhbXBUb0VkZ2UgfTsK
LSAgICBHUFVGaWx0ZXJNb2RlIG1hZ0ZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsK
LSAgICBHUFVGaWx0ZXJNb2RlIG1pbkZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3QgfTsK
LSAgICBHUFVGaWx0ZXJNb2RlIG1pcG1hcEZpbHRlciB7IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3Qg
fTsKLSAgICBmbG9hdCBsb2RNaW5DbGFtcCB7IDAgfTsKLSAgICBmbG9hdCBsb2RNYXhDbGFtcCB7
IDB4ZmZmZmZmZmYgfTsKLSAgICB1bnNpZ25lZCBtYXhBbmlzb3Ryb3B5IHsgMSB9OwotICAgIEdQ
VUNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24geyBHUFVDb21wYXJlRnVuY3Rpb246Ok5l
dmVyIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVNoYWRlck1vZHVsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWE1NmQx
MTg2OWEyZjkzMDk5NzMxNGZhMGQ2NjQxZWEyMDBjMThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVTaGFkZXJNb2R1bGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8
R1BVU2hhZGVyTW9kdWxlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJN
b2R1bGU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJik7Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0gICAgUGxhdGZvcm1T
aGFkZXJNb2R1bGUqIHBsYXRmb3JtU2hhZGVyTW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aGxz
bE1vZHVsZSA/IG51bGxwdHIgOiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9Ci0gICAg
Y29uc3QgV0hMU0w6OlNoYWRlck1vZHVsZSogd2hsc2xNb2R1bGUoKSBjb25zdCB7IHJldHVybiBt
X3dobHNsTW9kdWxlLmdldCgpOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBHUFVTaGFkZXJN
b2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciYmKTsKLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0gICAgR1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExTTDo6U2hhZGVyTW9k
dWxlPiYmIHdobHNsTW9kdWxlKTsKLSNlbmRpZgotCi0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGVT
bWFydFB0ciBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlOwotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V0hMU0w6OlNoYWRlck1vZHVsZT4gbV93aGxzbE1vZHVs
ZTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2Y2ZlMGFkNWE4N2IzMmM0OGFlMzRiZDc2ZDJmMWM1OTgxYmU3ZDVk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IgewotICAgIFN0cmluZyBjb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU3RvcmVPcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
Mjc4MzI0ODkxM2U0NTFkYzM2YTQ3YWI1ZjBlMjNjYTI0YWRjMzBmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVU3RvcmVPcCB7Ci0gICAgU3RvcmUKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWlu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjc3NDdlM2U3ZTI2ZGRiZTEyNzA3MDAw
ODBkYWQyMDE0YWFmYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIK
LSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLS8vIFBs
YXRmb3JtTGF5ZXIgaW1wbGVtZW50YXRpb24gbmVlZGVkIG90aGVyd2lzZSBjb21waWxpbmcgZGVy
aXZlZCBzb3VyY2VzIHdpbGwgZmFpbC4KLSNpZiBVU0UoTklDT1NJQSkKLSNpbmNsdWRlICJOaWNv
c2lhUGxhdGZvcm1MYXllci5oIgotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlci5oIgotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0K
LXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVG
b3JtYXQ7Ci0KLWNsYXNzIEdQVVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBD
aGFpbj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiB0cnlDcmVh
dGUoY29uc3QgR1BVU3dhcENoYWluRGVzY3JpcHRvciYsIGludCB3aWR0aCwgaW50IGhlaWdodCk7
Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5R2V0Q3VycmVudFRleHR1cmUoKTsKLQotI2lm
IFVTRShNRVRBTCkKLSAgICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiB0YWtlRHJhd2FibGUo
KTsKLSNlbmRpZgotCi0gICAgLy8gRm9yIEdQVUNhbnZhc0NvbnRleHQuCi0gICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCi0gICAgdm9pZCBwcmVzZW50KCk7Ci0gICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkZXN0cm95KCkg
eyBtX2N1cnJlbnREcmF3YWJsZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2Fw
Q2hhaW4oUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVz
YWdlOjpGbGFncz4pOwotCi0gICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBtX3BsYXRmb3Jt
U3dhcExheWVyOwotICAgIFBsYXRmb3JtRHJhd2FibGVTbWFydFB0ciBtX2N1cnJlbnREcmF3YWJs
ZTsKLSAgICBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3MDQy
MDQ2M2NhYWJhMTVmZTdkNzMxNjJhYThlYTdiZDQ4MWY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgR1BVU3dhcENoYWluRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVRleHR1cmVGb3JtYXQgZm9y
bWF0OwotICAgIEdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlIHsgc3RhdGljX2Nhc3Q8R1BVVGV4
dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQp
IH07Ci19OwotCi1zdHJ1Y3QgR1BVU3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRl
c2NyaXB0b3JCYXNlIHsKLSAgICBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKFJlZjxHUFVEZXZpY2U+
JiYgZ3B1RGV2aWNlLCBjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSYgYmFzZSkKLSAg
ICAgICAgOiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIGRldmlj
ZShXVEZNb3ZlKGdwdURldmljZSkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBSZWY8R1BVRGV2
aWNlPiBkZXZpY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZmNkNTZmNDE4
NTU4M2JmOTBjNmRhN2I0NGFjN2Y2YzA0Yjg1MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVRleHR1cmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0
Zm9ybVR5cGVzLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZVVzYWdlLmgiCi0jaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNs
YXNzIEdQVUVycm9yU2NvcGVzOwotCi1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNs
YXNzIEdQVVRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNl
JiwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImLCBHUFVFcnJvclNjb3BlcyYpOwotICAgIHN0
YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9w
dGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmUg
KnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgp
OyB9Ci0gICAgYm9vbCBpc0NvcHlTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRh
aW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UpOyB9Ci0gICAgYm9vbCBpc0Nv
cHlEZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6Q29weURlc3RpbmF0aW9uKTsgfQotICAgIGJvb2wgaXNPdXRwdXRBdHRh
Y2htZW50KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpD
b3B5U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pOyB9Ci0gICAgYm9v
bCBpc1NhbXBsZWQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVV
c2FnZTo6RmxhZ3M6OlNhbXBsZWQpOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpOyB9
Ci0gICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1V
c2FnZTsgfQotCi0gICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRUZXh0dXJl
VmlldygpOwotICAgIHZvaWQgZGVzdHJveSgpIHsgbV9wbGF0Zm9ybVRleHR1cmUgPSBudWxscHRy
OyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVT
bWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwotCi0gICAgUGxh
dGZvcm1UZXh0dXJlU21hcnRQdHIgbV9wbGF0Zm9ybVRleHR1cmU7Ci0KLSAgICBPcHRpb25TZXQ8
R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKLSAgICB1bnNpZ25lZCBtX3BsYXRmb3Jt
VXNhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjJhNjg1YTIxOWYzMjliNjA3MDRkM2U2NTYyM2I1YTZhYjdlZGUyMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVFeHRlbnQzRC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVGb3Jt
YXQuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVEaW1lbnNpb24gewotICAgIF8xZCwKLSAgICBfMmQs
Ci0gICAgXzNkCi19OwotICAgIAotc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yIHsKLSAgICBH
UFVFeHRlbnQzRCBzaXplOwotICAgIHVuc2lnbmVkIG1pcExldmVsQ291bnQ7Ci0gICAgdW5zaWdu
ZWQgc2FtcGxlQ291bnQ7Ci0gICAgR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb247Ci0gICAg
R1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVU
ZXh0dXJlRm9ybWF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDBmZGExNjZi
ODMwMzg4ODVmYjEyMmRjNGI3ZTNhODZhNGE5ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVRleHR1cmVGb3JtYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVUZXh0dXJlRm9ybWF0IHsKLSAgICBSZ2JhOHVub3Jt
LAotICAgIFJnYmE4dWludCwKLSAgICBCZ3JhOHVub3JtLAotICAgIERlcHRoMzJmbG9hdFN0ZW5j
aWw4LAotICAgIEJncmE4dW5vcm1TUkdCLAotICAgIFJnYmExNmZsb2F0LAotfTsKLQotdXNpbmcg
UGxhdGZvcm1UZXh0dXJlRm9ybWF0ID0gdW5zaWduZWQ7Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVGV4dHVyZVVzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVGV4dHVyZVVzYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0M2U2
ZmJhZTllZTQwOTUxZTg1NDhhMTZhOGJkNzI5YWQ4OGJhZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVVc2FnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5n
IEdQVVRleHR1cmVVc2FnZUZsYWdzID0gdW5zaWduZWQ7Ci0gICAgCi1jbGFzcyBHUFVUZXh0dXJl
VXNhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlVXNhZ2U+IHsKLXB1YmxpYzoKLSAg
ICBlbnVtIGNsYXNzIEZsYWdzIDogR1BVVGV4dHVyZVVzYWdlRmxhZ3MgewotICAgICAgICBDb3B5
U291cmNlICAgICAgID0gMSA8PCAwLAotICAgICAgICBDb3B5RGVzdGluYXRpb24gID0gMSA8PCAx
LAotICAgICAgICBTYW1wbGVkICAgICAgICAgID0gMSA8PCAyLAotICAgICAgICBTdG9yYWdlICAg
ICAgICAgID0gMSA8PCAzLAotICAgICAgICBPdXRwdXRBdHRhY2htZW50ID0gMSA8PCA0LAotICAg
ICAgICBNYXhpbXVtVmFsdWUgICAgID0gMSA8PCA1LAotICAgIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDVkOWE1YzcwNzRjNGFlNjMzZThlNjAxMmM1Y2M4NzY4YmZiNGYxMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVDb21wYXJlRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJl
Rm9ybWF0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGxhdGZvcm1UZXh0dXJlRm9ybWF0
IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1h
dCk7Ci1QbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbiBwbGF0Zm9ybUNvbXBhcmVGdW5jdGlvbkZvckdQ
VUNvbXBhcmVGdW5jdGlvbihHUFVDb21wYXJlRnVuY3Rpb24pOwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRpb25FcnJvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk3ZTU0NTQ2MTM4NmNmZmNkNDEwODc3ZGMz
NjE0ZjZkZjE4Mjg3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVy
cm9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVmFsaWRhdGlvbkVycm9yLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVWYWxpZGF0aW9u
RXJyb3I+IEdQVVZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSkp
OwotfQotCi1HUFVWYWxpZGF0aW9uRXJyb3I6OkdQVVZhbGlkYXRpb25FcnJvcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCi0gICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIyNWFjMjA3ZmNhM2JlZGJlNjExNTVh
NzU5N2FkYTU1NjczODVlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlv
bkVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVVmFsaWRhdGlvbkVycm9yIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVVmFsaWRhdGlvbkVycm9yPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxHUFVWYWxpZGF0aW9uRXJyb3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwotCi0gICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLQot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVWYWxpZGF0aW9uRXJyb3IoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKLQotICAgIFN0cmluZyBtX21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYWM2MzVlOGU1
ZDY3OTg0MjZjZTVjZmRiZmVjZGVlMzEyOTgwNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgR1BVVmVydGV4Rm9ybWF0IHsKLSAgICBGbG9hdCwKLSAgICBGbG9hdDIsCi0gICAg
RmxvYXQzLAotICAgIEZsb2F0NCwKLX07Ci0KLXN0cnVjdCBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yIHsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgR1BVVmVydGV4Rm9ybWF0IGZvcm1h
dDsKLSAgICB1bnNpZ25lZCBzaGFkZXJMb2NhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThiYTNmMjM1NDg0MWQ4YWQ0
ZWU4ZjEyNzIyZjQyMDA4MjQ0ZjEwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUg
IkdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVJbnB1dFN0ZXBNb2RlIHsK
LSAgICBWZXJ0ZXgsCi0gICAgSW5zdGFuY2UsCi19OwotCi1zdHJ1Y3QgR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvciB7Ci0gICAgdWludDY0X3Qgc3RyaWRlOwotICAgIEdQVUlucHV0U3RlcE1vZGUg
c3RlcE1vZGU7Ci0gICAgVmVjdG9yPEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+IGF0dHJp
YnV0ZVNldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk4MjMyZmU1OTkxNWVmNWE5MWE4YWE1YWE1OGU3NGMwNjQzOWRhNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51
bSBjbGFzcyBHUFVJbmRleEZvcm1hdCB7Ci0gICAgVWludDE2LAotICAgIFVpbnQzMiwKLX07Ci0K
LXN0cnVjdCBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGlu
ZGV4Rm9ybWF0OwotICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEdQVVZlcnRleEJ1ZmZlckRlc2Ny
aXB0b3I+PiB2ZXJ0ZXhCdWZmZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxv
Y2F0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlMzQ4YzIxMGZl
MDFjY2ZlMDJiNjA1NmI5MGU4NmE4MzVlN2Q0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
NzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
QmluZEdyb3VwQWxsb2NhdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJH
UFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBHUFVC
aW5kR3JvdXBBbGxvY2F0b3I6OmNyZWF0ZShHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJpbmRHcm91cEFsbG9jYXRvcihlcnJvcnMpKTsKLX0K
LQotR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3IoR1BVRXJyb3JT
Y29wZXMmIGVycm9ycykKLSAgICA6IG1fZXJyb3JTY29wZXMobWFrZVJlZihlcnJvcnMpKQotewot
fQotCi0jaWYgVVNFKE1FVEFMKQotCi1zdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRv
cjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRl
QW5kU2V0RW5jb2RlcnMoTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5j
b2RlciAqZnJhZ21lbnQsIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZSkKLXsKLSAgICBpZDxN
VExEZXZpY2U+IGRldmljZSA9IG5pbDsKLSAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2Vk
PE5TVUludGVnZXI+KG1fbGFzdE9mZnNldCk7Ci0KLSAgICBpZiAodmVydGV4KSB7Ci0gICAgICAg
IGRldmljZSA9IHZlcnRleC5kZXZpY2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gdmVydGV4
LmVuY29kZWRMZW5ndGg7Ci0gICAgfQotICAgIGlmIChmcmFnbWVudCkgewotICAgICAgICBkZXZp
Y2UgPSBmcmFnbWVudC5kZXZpY2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gZnJhZ21lbnQu
ZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0gICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgZGV2aWNl
ID0gY29tcHV0ZS5kZXZpY2U7Ci0gICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gY29tcHV0ZS5lbmNv
ZGVkTGVuZ3RoOwotICAgIH0KLQotICAgIC8vIE5vIGFyZ3VtZW50czsgbm90aGluZyB0byBiZSBk
b25lLgotICAgIGlmICghZGV2aWNlKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgaWYgKGNo
ZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdl
bmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJl
dHVybiB7IH07Ci0gICAgfQotCi0gICAgYXV0byBuZXdPZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnZh
bHVlKCk7Ci0KLSAgICBpZiAobV9hcmd1bWVudEJ1ZmZlciAmJiBuZXdPZmZzZXQgPiBtX2FyZ3Vt
ZW50QnVmZmVyLmdldCgpLmxlbmd0aCkgewotICAgICAgICBpZiAoIXJlYWxsb2NhdGUobmV3T2Zm
c2V0KSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgfSBlbHNlIGlmICghbV9hcmd1bWVu
dEJ1ZmZlcikgewotICAgICAgICAvLyBCYXNlZCBvZmYgbWltaW11bSBhbGxvY2F0aW9uIGZvciBh
IHNoYXJlZC1tZW1vcnkgTVRMQnVmZmVyIG9uIG1hY09TLgotICAgICAgICBOU1VJbnRlZ2VyIG1p
bmltdW1TaXplID0gNDA5NjsKLSAgICAgICAgaWYgKG1pbmltdW1TaXplIDwgbmV3T2Zmc2V0KQot
ICAgICAgICAgICAgbWluaW11bVNpemUgPSBuZXdPZmZzZXQ7Ci0KLSAgICAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fYXJndW1lbnRCdWZmZXIgPSBhZG9wdE5TKFtk
ZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDptaW5pbXVtU2l6ZSBvcHRpb25zOjBdKTsKLSAgICAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIGlmICghbV9hcmd1bWVudEJ1
ZmZlcikgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BV
RXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBBcmd1bWVudEJ1ZmZlck9mZnNldHMgb2Zmc2V0czsKLQotICAg
IC8vIE1hdGggaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIGlzIGd1YXJkZWQgYWdhaW5zdCBvdmVy
ZmxvdyBieSBuZXdPZmZzZXQgY2FsY3VsYXRpb24uCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBpZiAodmVydGV4KSB7Ci0gICAgICAgIG9mZnNldHMudmVydGV4ID0gbV9s
YXN0T2Zmc2V0OwotICAgICAgICBbdmVydGV4IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRC
dWZmZXIuZ2V0KCkgb2Zmc2V0OipvZmZzZXRzLnZlcnRleF07Ci0gICAgfQotICAgIGlmIChmcmFn
bWVudCkgewotICAgICAgICBvZmZzZXRzLmZyYWdtZW50ID0gKHZlcnRleCA/IHZlcnRleC5lbmNv
ZGVkTGVuZ3RoIDogMCkgKyBtX2xhc3RPZmZzZXQ7Ci0gICAgICAgIFtmcmFnbWVudCBzZXRBcmd1
bWVudEJ1ZmZlcjptX2FyZ3VtZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5mcmFnbWVu
dF07Ci0gICAgfQotICAgIGlmIChjb21wdXRlKSB7Ci0gICAgICAgIG9mZnNldHMuY29tcHV0ZSA9
ICh2ZXJ0ZXggPyB2ZXJ0ZXguZW5jb2RlZExlbmd0aCA6IDApICsgKGZyYWdtZW50ID8gZnJhZ21l
bnQuZW5jb2RlZExlbmd0aCA6IDApICsgbV9sYXN0T2Zmc2V0OwotICAgICAgICBbY29tcHV0ZSBz
ZXRBcmd1bWVudEJ1ZmZlcjptX2FyZ3VtZW50QnVmZmVyLmdldCgpIG9mZnNldDoqb2Zmc2V0cy5j
b21wdXRlXTsKLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBt
X2xhc3RPZmZzZXQgPSBuZXdPZmZzZXQ7Ci0gICAgKyttX251bUJpbmRHcm91cHM7Ci0KLSAgICBy
ZXR1cm4gb2Zmc2V0czsKLX0KLQotI2VuZGlmIC8vIFVTRShNRVRBTCkKLQotLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NTcsIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NTggT3B0aW1pemUgcmVhbGxvY2F0aW9u
IGFuZCByZXNldCBiZWhhdmlvci4KLWJvb2wgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpyZWFsbG9j
YXRlKE5TVUludGVnZXIgbmV3T2Zmc2V0KQotewotICAgIE1UTEJ1ZmZlciAqbmV3QnVmZmVyID0g
bmlsOwotCi0gICAgYXV0byBuZXdMZW5ndGggPSBDaGVja2VkPE5TVUludGVnZXI+KG1fYXJndW1l
bnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsKLSAgICB3aGlsZSAobmV3TGVuZ3RoIDwgbmV3T2Zmc2V0
KSB7Ci0gICAgICAgIG5ld0xlbmd0aCArPSBuZXdMZW5ndGggLyA0VTsKLQotICAgICAgICBpZiAo
bmV3TGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgewotICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3Rk
OjpudW1lcmljX2xpbWl0czxOU1VJbnRlZ2VyPjo6bWF4KCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgbmV3QnVmZmVyID0gW21fYXJndW1lbnRCdWZmZXIuZ2V0KCkuZGV2aWNlIG5ld0J1ZmZlcldp
dGhMZW5ndGg6bmV3TGVuZ3RoLnZhbHVlKCkgb3B0aW9uczowXTsKLSAgICBtZW1jcHkobmV3QnVm
ZmVyLmNvbnRlbnRzLCBtX2FyZ3VtZW50QnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2FyZ3VtZW50
QnVmZmVyLmdldCgpLmxlbmd0aCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBpZiAoIW5ld0J1ZmZlcikgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVy
cm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgbV9hcmd1bWVudEJ1ZmZlciA9IGFkb3B0TlMobmV3QnVmZmVyKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OnRyeVJl
c2V0KCkKLXsKLSAgICAtLW1fbnVtQmluZEdyb3VwczsKLSAgICAKLSAgICBBU1NFUlQobV9udW1C
aW5kR3JvdXBzID4gLTEpOwotCi0gICAgaWYgKCFtX251bUJpbmRHcm91cHMpIHsKLSAgICAgICAg
bV9hcmd1bWVudEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fbGFzdE9mZnNldCA9IDA7Ci0g
ICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhY2Y3ODZiYmJlZTdhOTFhMDdhMzQ2ZTdmMDFlNGUxYzAw
ZGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRN
ZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5o
IgotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPE1ldGFsL01l
dGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExEYXRhVHlwZSBNVExEYXRhVHlwZUZvckJpbmRpbmdUeXBl
KEdQVUJpbmRpbmdUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBH
UFVCaW5kaW5nVHlwZTo6U2FtcGxlcjoKLSAgICAgICAgcmV0dXJuIE1UTERhdGFUeXBlU2FtcGxl
cjsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVkVGV4dHVyZToKLSAgICAgICAgcmV0
dXJuIE1UTERhdGFUeXBlVGV4dHVyZTsKLSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3Jt
QnVmZmVyOgotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgot
ICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlN0b3JhZ2VCdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5k
aW5nVHlwZTo6RHluYW1pY1N0b3JhZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBNVExEYXRhVHlw
ZVBvaW50ZXI7Ci0gICAgfQotfQotCi11c2luZyBBcmd1bWVudEFycmF5ID0gUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50RGVzY3JpcHRvciAqPj47Ci1zdGF0aWMgdm9pZCBhcHBl
bmRBcmd1bWVudFRvQXJyYXkoQXJndW1lbnRBcnJheSYgYXJyYXksIFJldGFpblB0cjxNVExBcmd1
bWVudERlc2NyaXB0b3I+IGFyZ3VtZW50KQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIGlmICghYXJyYXkpCi0gICAgICAgIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6YXJndW1lbnQuZ2V0KCksIG5pbF0pOwotICAg
IGVsc2UKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDphcmd1bWVudC5nZXQoKV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTEFyZ3VtZW50
RW5jb2Rlcj4gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVyKGNvbnN0IEdQVURldmljZSYgZGV2
aWNlLCBBcmd1bWVudEFycmF5IGFycmF5KQotewotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVu
Y29kZXI+IGVuY29kZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBl
bmNvZGVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3QXJndW1lbnRFbmNv
ZGVyV2l0aEFyZ3VtZW50czphcnJheS5nZXQoKV0pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZiAoIWVuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJpbmRH
cm91cExheW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQXJndW1lbnRFbmNv
ZGVyISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY29k
ZXI7Ci19OwotCi1zdGF0aWMgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1l
bnREZXNjcmlwdG9yKE1UTERhdGFUeXBlIGRhdGFUeXBlLCBOU1VJbnRlZ2VyIGluZGV4KQotewot
ICAgIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50OwotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10bEFyZ3VtZW50ID0gYWRvcHROUyhbTVRM
QXJndW1lbnREZXNjcmlwdG9yIG5ld10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMzg0IFRoaXMgbmVlZHMgdG8gc2V0IHRoZSAidGV4dHVyZVR5cGUiIGZpZWxkCi0gICAgW210
bEFyZ3VtZW50IHNldERhdGFUeXBlOmRhdGFUeXBlXTsKLSAgICBbbXRsQXJndW1lbnQgc2V0SW5k
ZXg6aW5kZXhdOwotICAgIHJldHVybiBtdGxBcmd1bWVudDsKLX0KLQotUmVmUHRyPEdQVUJpbmRH
cm91cExheW91dD4gR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UsIGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Ci17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogSW52YWxpZCBNVExEZXZpY2Uh
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEFyZ3VtZW50QXJyYXkg
dmVydGV4QXJncywgZnJhZ21lbnRBcmdzLCBjb21wdXRlQXJncywgdmVydGV4TGVuZ3RocywgZnJh
Z21lbnRMZW5ndGhzLCBjb21wdXRlTGVuZ3RoczsKLSAgICBCaW5kaW5nc01hcFR5cGUgYmluZGlu
Z3NNYXA7Ci0KLSAgICB1bnNpZ25lZCBpbnRlcm5hbE5hbWUgPSAwOwotICAgIHVuc2lnbmVkIGlu
dGVybmFsTGVuZ3RoQmFzZSA9IGRlc2NyaXB0b3IuYmluZGluZ3Muc2l6ZSgpOwotICAgIGZvciAo
Y29uc3QgYXV0byYgYmluZGluZyA6IGRlc2NyaXB0b3IuYmluZGluZ3MpIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gZXh0cmFJbmRleDsKLSAgICAgICAgYXV0byBpbnRlcm5hbERl
dGFpbHMgPSAoWyZdKCkgLT4gR1BVQmluZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRh
aWxzIHsKLSAgICAgICAgICAgIHN3aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgICAgICAgICBj
YXNlIEdQVUJpbmRpbmdUeXBlOjpVbmlmb3JtQnVmZmVyOgotICAgICAgICAgICAgICAgIGV4dHJh
SW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1BV
QmluZEdyb3VwTGF5b3V0OjpVbmlmb3JtQnVmZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAg
ICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OkR5bmFtaWNVbmlmb3JtQnVmZmVyOgotICAgICAgICAg
ICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlciB7ICpleHRy
YUluZGV4IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAg
ICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXIgeyB9OwotICAg
ICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U2FtcGxlZFRleHR1cmU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlZFRleHR1cmUgeyB9OwotICAg
ICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgICAg
ICAgICBleHRyYUluZGV4ID0gaW50ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciB7ICpleHRyYUluZGV4IH07
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVChiaW5kaW5nLnR5
cGUgPT0gR1BVQmluZGluZ1R5cGU6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKTsKLSAgICAgICAgICAg
ICAgICBleHRyYUluZGV4ID0gaW50ZXJuYWxMZW5ndGhCYXNlKys7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIgeyAqZXh0cmFJ
bmRleCB9OwotICAgICAgICAgICAgfQotICAgICAgICB9KSgpOwotICAgICAgICBCaW5kaW5nIGJp
bmRpbmdEZXRhaWxzID0geyBiaW5kaW5nLCBpbnRlcm5hbE5hbWUrKywgV1RGTW92ZShpbnRlcm5h
bERldGFpbHMpIH07Ci0gICAgICAgIGlmICghYmluZGluZ3NNYXAuYWRkKGJpbmRpbmcuYmluZGlu
ZywgYmluZGluZ0RldGFpbHMpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdy
b3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogRHVwbGljYXRlIGJpbmRpbmcgJXUgZm91bmQgaW4gR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8TVRMQXJn
dW1lbnREZXNjcmlwdG9yPiBtdGxBcmd1bWVudCA9IGFyZ3VtZW50RGVzY3JpcHRvcihNVExEYXRh
VHlwZUZvckJpbmRpbmdUeXBlKGJpbmRpbmcudHlwZSksIGJpbmRpbmdEZXRhaWxzLmludGVybmFs
TmFtZSk7Ci0KLSAgICAgICAgaWYgKCFtdGxBcmd1bWVudCkgewotICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUg
TVRMQXJndW1lbnREZXNjcmlwdG9yIGZvciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmluZGluZyk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8g
YWRkSW5kaWNlcyA9IFsmXShBcmd1bWVudEFycmF5JiBhcmdzLCBBcmd1bWVudEFycmF5JiBsZW5n
dGhzKSAtPiBib29sIHsKLSAgICAgICAgICAgIGFwcGVuZEFyZ3VtZW50VG9BcnJheShhcmdzLCBt
dGxBcmd1bWVudCk7Ci0gICAgICAgICAgICBpZiAoZXh0cmFJbmRleCkgewotICAgICAgICAgICAg
ICAgIFJldGFpblB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1l
bnREZXNjcmlwdG9yKE1UTERhdGFUeXBlVUludDIsICpleHRyYUluZGV4KTsKLSAgICAgICAgICAg
ICAgICBpZiAoIW10bEFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTEFy
Z3VtZW50RGVzY3JpcHRvciBmb3IgYmluZGluZyAldSEiLCBiaW5kaW5nLmJpbmRpbmcpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGFwcGVuZEFyZ3VtZW50VG9BcnJheShsZW5ndGhzLCBtdGxBcmd1bWVudCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAg
ICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OlZlcnRl
eCkgJiYgIWFkZEluZGljZXModmVydGV4QXJncywgdmVydGV4TGVuZ3RocykpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVT
aGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50KSAmJiAhYWRkSW5kaWNlcyhmcmFnbWVudEFyZ3Ms
IGZyYWdtZW50TGVuZ3RocykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
aWYgKChiaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1dGUp
ICYmICFhZGRJbmRpY2VzKGNvbXB1dGVBcmdzLCBjb21wdXRlTGVuZ3RocykpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbdmVydGV4QXJncyBhZGRPYmplY3RzRnJvbUFycmF5OnZlcnRleExlbmd0aHMuZ2V0
KCldOwotICAgIFtmcmFnbWVudEFyZ3MgYWRkT2JqZWN0c0Zyb21BcnJheTpmcmFnbWVudExlbmd0
aHMuZ2V0KCldOwotICAgIFtjb21wdXRlQXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmNvbXB1dGVM
ZW5ndGhzLmdldCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBSZXRh
aW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXgsIGZyYWdtZW50LCBjb21wdXRlOwotCi0g
ICAgaWYgKHZlcnRleEFyZ3MgJiYgISh2ZXJ0ZXggPSB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29k
ZXIoZGV2aWNlLCB2ZXJ0ZXhBcmdzKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlm
IChmcmFnbWVudEFyZ3MgJiYgIShmcmFnbWVudCA9IHRyeUNyZWF0ZU10bEFyZ3VtZW50RW5jb2Rl
cihkZXZpY2UsIGZyYWdtZW50QXJncykpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoY29tcHV0ZUFyZ3MgJiYgIShjb21wdXRlID0gdHJ5Q3JlYXRlTXRsQXJndW1lbnRFbmNvZGVy
KGRldmljZSwgY29tcHV0ZUFyZ3MpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEdQVUJpbmRHcm91cExheW91dChXVEZNb3ZlKGJpbmRpbmdzTWFw
KSwgV1RGTW92ZSh2ZXJ0ZXgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgV1RGTW92ZShjb21wdXRlKSkp
OwotfQotCi1HUFVCaW5kR3JvdXBMYXlvdXQ6OkdQVUJpbmRHcm91cExheW91dChCaW5kaW5nc01h
cFR5cGUmJiBiaW5kaW5nc01hcCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiB2ZXJ0
ZXgsIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+JiYgZnJhZ21lbnQsIFJldGFpblB0cjxN
VExBcmd1bWVudEVuY29kZXI+JiYgY29tcHV0ZSkKLSAgICA6IG1fdmVydGV4RW5jb2RlcihXVEZN
b3ZlKHZlcnRleCkpCi0gICAgLCBtX2ZyYWdtZW50RW5jb2RlcihXVEZNb3ZlKGZyYWdtZW50KSkK
LSAgICAsIG1fY29tcHV0ZUVuY29kZXIoV1RGTW92ZShjb21wdXRlKSkKLSAgICAsIG1fYmluZGlu
Z3NNYXAoV1RGTW92ZShiaW5kaW5nc01hcCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNjk4YjE5YWVjYmYyZTk0OTgzOGU4
YzYxZGRkZDI5ZjA1OWUxYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJp
bmRHcm91cE1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW1w
b3J0ICJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmgiCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVNhbXBs
ZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEdQVUJ1ZmZlckJpbmRpbmc+IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKGNvbnN0
IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9u
TmFtZSkKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1l
KTsKLSNlbmRpZgotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxHUFVCdWZmZXJCaW5k
aW5nPihyZXNvdXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBu
b3QgYSBidWZmZXIgdHlwZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIH0KLSAgICBhdXRvJiBidWZmZXJCaW5kaW5nID0gV1RGOjpnZXQ8R1BVQnVm
ZmVyQmluZGluZz4ocmVzb3VyY2UpOwotICAgIGlmICghYnVmZmVyQmluZGluZy5idWZmZXItPnBs
YXRmb3JtQnVmZmVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTEJ1
ZmZlciBpbiBHUFVCdWZmZXJCaW5kaW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihi
dWZmZXJCaW5kaW5nLnNpemUpIHx8IGJ1ZmZlckJpbmRpbmcuc2l6ZSA+IGJ1ZmZlckJpbmRpbmcu
YnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZm
ZXJCaW5kaW5nIHNpemUgaXMgdG9vIGxhcmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRl
Z2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIGlmICghaXNJbkJvdW5kczxO
U1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLm9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBCdWZmZXIgb2Zmc2V0IGlzIHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICByZXR1cm4gR1BVQnVmZmVyQmluZGlu
ZyB7IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLmNvcHlSZWYoKSwgYnVmZmVyQmluZGluZy5vZmZzZXQs
IGJ1ZmZlckJpbmRpbmcuc2l6ZSB9OwotfQotCi1zdGF0aWMgdm9pZCBzZXRCdWZmZXJPbkVuY29k
ZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1bWVudEVuY29kZXIsIGNvbnN0IEdQVUJ1ZmZlckJp
bmRpbmcmIGJ1ZmZlckJpbmRpbmcsIHVuc2lnbmVkIG5hbWUsIHVuc2lnbmVkIGxlbmd0aE5hbWUp
Ci17Ci0gICAgQVNTRVJUKGFyZ3VtZW50RW5jb2RlciAmJiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+
cGxhdGZvcm1CdWZmZXIoKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAvLyBCb3VuZHMgY2hlY2sgd2hlbiBjb252ZXJ0aW5nIEdQVUJ1ZmZlckJpbmRpbmcgZW5zdXJl
cyB0aGF0IE5TVUludGVnZXIgY2FzdCBvZiB1aW50NjRfdCBvZmZzZXQgaXMgc2FmZS4KLSAgICBb
YXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXJCaW5kaW5nLmJ1ZmZlci0+cGxhdGZvcm1C
dWZmZXIoKSBvZmZzZXQ6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZz
ZXQpIGF0SW5kZXg6bmFtZV07Ci0gICAgdm9pZCogbGVuZ3RoUG9pbnRlciA9IFthcmd1bWVudEVu
Y29kZXIgY29uc3RhbnREYXRhQXRJbmRleDpsZW5ndGhOYW1lXTsKLSAgICBtZW1jcHkobGVuZ3Ro
UG9pbnRlciwgJmJ1ZmZlckJpbmRpbmcuc2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotICAgIAotc3RhdGljIE1UTFNhbXBsZXJTdGF0ZSAq
dHJ5R2V0UmVzb3VyY2VBc010bFNhbXBsZXIoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxF
RAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxjb25zdCBHUFVTYW1wbGVyPj4ocmVzb3VyY2UpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICIlczogUmVzb3VyY2UgaXMgbm90IGEgR1BVU2FtcGxlciEiLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byBz
YW1wbGVyU3RhdGUgPSBXVEY6OmdldDxSZWY8Y29uc3QgR1BVU2FtcGxlcj4+KHJlc291cmNlKS0+
cGxhdGZvcm1TYW1wbGVyKCk7Ci0gICAgaWYgKCFzYW1wbGVyU3RhdGUpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBJbnZhbGlkIE1UTFNhbXBsZXJTdGF0ZSBpbiBHUFVTYW1wbGVyIGJpbmRp
bmchIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAg
IHJldHVybiBzYW1wbGVyU3RhdGU7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFNhbXBsZXJPbkVuY29k
ZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1bWVudEVuY29kZXIsIE1UTFNhbXBsZXJTdGF0ZSAq
c2FtcGxlciwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKGFyZ3VtZW50RW5jb2RlciAm
JiBzYW1wbGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFthcmd1
bWVudEVuY29kZXIgc2V0U2FtcGxlclN0YXRlOnNhbXBsZXIgYXRJbmRleDppbmRleF07Ci0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1zdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+
IHRyeUdldFJlc291cmNlQXNUZXh0dXJlKGNvbnN0IEdQVUJpbmRpbmdSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLSAgICB7Ci0jaWYgTE9HX0RJU0FC
TEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAgICBpZiAoIVdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEdQVVRleHR1cmU+PihyZXNvdXJjZSkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBHUFVUZXh0dXJlVmlldyEiLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byYg
dGV4dHVyZVJlZiA9IFdURjo6Z2V0PFJlZjxHUFVUZXh0dXJlPj4ocmVzb3VyY2UpOwotICAgIGlm
ICghdGV4dHVyZVJlZi0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIE1UTFRleHR1cmUgaW4gR1BVVGV4dHVyZVZpZXcgYmluZGluZyEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHRl
eHR1cmVSZWYuY29weVJlZigpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRUZXh0dXJlT25FbmNvZGVy
KE1UTEFyZ3VtZW50RW5jb2RlciAqYXJndW1lbnRFbmNvZGVyLCBNVExUZXh0dXJlICp0ZXh0dXJl
LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIHRleHR1
cmUpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW2FyZ3VtZW50RW5j
b2RlciBzZXRUZXh0dXJlOnRleHR1cmUgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotfQotCi1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVCaW5kR3JvdXA6OnRy
eUNyZWF0ZShjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCaW5k
R3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRvcikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5j
dGlvbk5hbWUgPSAiR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoKSI7Ci0gICAgCi0gICAgTVRMQXJn
dW1lbnRFbmNvZGVyICp2ZXJ0ZXhFbmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPnZlcnRleEVu
Y29kZXIoKTsKLSAgICBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50RW5jb2RlciA9IGRlc2Ny
aXB0b3IubGF5b3V0LT5mcmFnbWVudEVuY29kZXIoKTsKLSAgICBNVExBcmd1bWVudEVuY29kZXIg
KmNvbXB1dGVFbmNvZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPmNvbXB1dGVFbmNvZGVyKCk7Ci0K
LSAgICBhdXRvIG9mZnNldHMgPSBhbGxvY2F0b3IuYWxsb2NhdGVBbmRTZXRFbmNvZGVycyh2ZXJ0
ZXhFbmNvZGVyLCBmcmFnbWVudEVuY29kZXIsIGNvbXB1dGVFbmNvZGVyKTsKLSAgICBpZiAoIW9m
ZnNldHMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIEhhc2hTZXQ8UmVmPEdQ
VUJ1ZmZlcj4+IGJvdW5kQnVmZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4gYm91
bmRUZXh0dXJlczsKLQotICAgIC8vIFNldCBlYWNoIHJlc291cmNlIG9uIGVhY2ggTVRMQXJndW1l
bnRFbmNvZGVyIGl0IHNob3VsZCBiZSB2aXNpYmxlIG9uLgotICAgIGNvbnN0IGF1dG8mIGxheW91
dEJpbmRpbmdzTWFwID0gZGVzY3JpcHRvci5sYXlvdXQtPmJpbmRpbmdzTWFwKCk7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiByZXNvdXJjZUJpbmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0g
ICAgICAgIGF1dG8gaW5kZXggPSByZXNvdXJjZUJpbmRpbmcuYmluZGluZzsKLSAgICAgICAgYXV0
byBsYXlvdXRJdGVyYXRvciA9IGxheW91dEJpbmRpbmdzTWFwLmZpbmQoaW5kZXgpOwotICAgICAg
ICBpZiAobGF5b3V0SXRlcmF0b3IgPT0gbGF5b3V0QmluZGluZ3NNYXAuZW5kKCkpIHsKLSAgICAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQmluZEdyb3VwQmluZGluZyAldSBub3QgZm91bmQg
aW4gR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBsYXlvdXRCaW5kaW5n
ID0gbGF5b3V0SXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBpZiAobGF5b3V0QmluZGluZy5leHRl
cm5hbEJpbmRpbmcudmlzaWJpbGl0eSA9PSBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6Ok5vbmUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBib29sIGlzRm9yVmVydGV4ID0gbGF5b3V0
QmluZGluZy5leHRlcm5hbEJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFn
czo6VmVydGV4OwotICAgICAgICBib29sIGlzRm9yRnJhZ21lbnQgPSBsYXlvdXRCaW5kaW5nLmV4
dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpGcmFnbWVu
dDsKLSAgICAgICAgYm9vbCBpc0ZvckNvbXB1dGUgPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmlu
ZGluZy52aXNpYmlsaXR5ICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpDb21wdXRlOwotCi0gICAg
ICAgIGlmIChpc0ZvclZlcnRleCAmJiAhdmVydGV4RW5jb2RlcikgewotICAgICAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBObyB2ZXJ0ZXggYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGlu
ZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZvckZyYWdtZW50ICYmICFmcmFnbWVudEVuY29k
ZXIpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gZnJhZ21lbnQgYXJndW1lbnQg
ZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGluZGV4KTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZvckNv
bXB1dGUgJiYgIWNvbXB1dGVFbmNvZGVyKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IE5vIGNvbXB1dGUgYXJndW1lbnQgZW5jb2RlciBmb3VuZCBmb3IgYmluZGluZyAldSEiLCBmdW5j
dGlvbk5hbWUsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9
Ci0KLSAgICAgICAgYXV0byBoYW5kbGVCdWZmZXIgPSBbJl0odW5zaWduZWQgaW50ZXJuYWxMZW5n
dGhOYW1lKSAtPiBib29sIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyUmVzb3VyY2UgPSB0cnlH
ZXRSZXNvdXJjZUFzQnVmZmVyQmluZGluZyhyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZlclJlc291cmNlKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAg
ICAgICAgICBzZXRCdWZmZXJPbkVuY29kZXIodmVydGV4RW5jb2RlciwgKmJ1ZmZlclJlc291cmNl
LCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAg
ICAgICAgIGlmIChpc0ZvckZyYWdtZW50KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5j
b2RlcihmcmFnbWVudEVuY29kZXIsICpidWZmZXJSZXNvdXJjZSwgbGF5b3V0QmluZGluZy5pbnRl
cm5hbE5hbWUsIGludGVybmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21w
dXRlKQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2Rlcihjb21wdXRlRW5jb2Rlciwg
KmJ1ZmZlclJlc291cmNlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5n
dGhOYW1lKTsKLSAgICAgICAgICAgIGJvdW5kQnVmZmVycy5hZGRWb2lkKFdURk1vdmUoYnVmZmVy
UmVzb3VyY2UtPmJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgYXV0byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXImIHVuaWZvcm1CdWZmZXIpIC0+IGJv
b2wgewotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUJ1ZmZlcih1bmlmb3JtQnVmZmVyLmludGVy
bmFsTGVuZ3RoTmFtZSk7Ci0gICAgICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFt
aWNVbmlmb3JtQnVmZmVyJiBkeW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gaGFuZGxlQnVmZmVyKGR5bmFtaWNVbmlmb3JtQnVmZmVyLmludGVybmFsTGVu
Z3RoTmFtZSk7Ci0gICAgICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZXImKSAt
PiBib29sIHsKLSAgICAgICAgICAgIGF1dG8gc2FtcGxlclN0YXRlID0gdHJ5R2V0UmVzb3VyY2VB
c010bFNhbXBsZXIocmVzb3VyY2VCaW5kaW5nLnJlc291cmNlLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgaWYgKCFzYW1wbGVyU3RhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgaWYgKGlzRm9yVmVydGV4KQotICAgICAgICAgICAgICAgIHNldFNhbXBs
ZXJPbkVuY29kZXIodmVydGV4RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmlu
dGVybmFsTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JGcmFnbWVudCkKLSAgICAgICAgICAg
ICAgICBzZXRTYW1wbGVyT25FbmNvZGVyKGZyYWdtZW50RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBs
YXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRl
KQotICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHNh
bXBsZXJTdGF0ZSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0
dXJlJikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBhdXRvIHRleHR1cmVSZXNvdXJjZSA9IHRyeUdl
dFJlc291cmNlQXNUZXh0dXJlKHJlc291cmNlQmluZGluZy5yZXNvdXJjZSwgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgICAgIGlmICghdGV4dHVyZVJlc291cmNlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChpc0ZvclZlcnRleCkKLSAgICAgICAgICAgICAg
ICBzZXRUZXh0dXJlT25FbmNvZGVyKHZlcnRleEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxh
dGZvcm1UZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAg
IGlmIChpc0ZvckZyYWdtZW50KQotICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIo
ZnJhZ21lbnRFbmNvZGVyLCB0ZXh0dXJlUmVzb3VyY2UtPnBsYXRmb3JtVGV4dHVyZSgpLCBsYXlv
dXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3JDb21wdXRlKQot
ICAgICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIoY29tcHV0ZUVuY29kZXIsIHRleHR1
cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1l
KTsKLSAgICAgICAgICAgIGJvdW5kVGV4dHVyZXMuYWRkVm9pZCh0ZXh0dXJlUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZd
KEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciYgc3RvcmFnZUJ1ZmZlcikgLT4gYm9v
bCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlQnVmZmVyKHN0b3JhZ2VCdWZmZXIuaW50ZXJu
YWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1p
Y1N0b3JhZ2VCdWZmZXImIGR5bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVCdWZmZXIoZHluYW1pY1N0b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5n
dGhOYW1lKTsKLSAgICAgICAgfSksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxCaW5kaW5nRGV0YWls
cyk7Ci0gICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUJpbmRHcm91cChXVEZNb3Zl
KCpvZmZzZXRzKSwgYWxsb2NhdG9yLCBXVEZNb3ZlKGJvdW5kQnVmZmVycyksIFdURk1vdmUoYm91
bmRUZXh0dXJlcykpKTsKLX0KLSAgICAKLUdQVUJpbmRHcm91cDo6R1BVQmluZEdyb3VwKEdQVUJp
bmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzJiYgb2Zmc2V0cywgR1BVQmlu
ZEdyb3VwQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYgYnVm
ZmVycywgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiYgdGV4dHVyZXMpCi0gICAgOiBtX2FyZ3Vt
ZW50QnVmZmVyT2Zmc2V0cyhXVEZNb3ZlKG9mZnNldHMpKQotICAgICwgbV9hbGxvY2F0b3IobWFr
ZVJlZihhbGxvY2F0b3IpKQotICAgICwgbV9ib3VuZEJ1ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkK
LSAgICAsIG1fYm91bmRUZXh0dXJlcyhXVEZNb3ZlKHRleHR1cmVzKSkKLXsKLX0KLQotR1BVQmlu
ZEdyb3VwOjp+R1BVQmluZEdyb3VwKCkKLXsKLSAgICBtX2FsbG9jYXRvci0+dHJ5UmVzZXQoKTsK
LX0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDU0ZDA1ZGE4YjEzMDNiZTkzYmYwZDQ5Mjc4YjBkY2Y5YzZhMjg0OTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
Mjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQ
VUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQnVmZmVyRGVz
Y3JpcHRvci5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVFcnJvclNjb3Bl
cy5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHJlYWRPbmx5RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6
OkZsYWdzPiB7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVzYWdlOjpG
bGFnczo6VmVydGV4LCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6Q29weVNvdXJjZSB9OwotCi0KLWJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1
ZmZlclVzYWdlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNh
Z2U6OkZsYWdzPiB1c2FnZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGlm
ICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmICh1c2FnZS5jb250YWluc0FsbCh7IEdQVUJ1ZmZlclVzYWdl
OjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSkgewot
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkJ1ZmZlciBjYW5ub3Qg
aGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2UhIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUmVmUHRyPEdQVUJ1ZmZl
cj4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZl
ckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChO
U1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIg
c2l6ZSA9IDA7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZGVzY3JpcHRvci5zaXplLCBz
aXplKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZp
bHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBhdXRvIHVzYWdlID0gT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXco
ZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZSwg
dXNhZ2UsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBj
b3B5QnVmZmVyVG9CdWZmZXIgY2FsbHMgcmVxdWlyZSA0LWJ5dGUgYWxpZ25tZW50LiAiVW5tYXBw
aW5nIiBhIG1hcHBlZC1vbi1jcmVhdGlvbiBHUFVCdWZmZXIKLSAgICAvLyB0aGF0IGlzIG90aGVy
d2lzZSB1bm1hcHBhYmxlIHJlcXVpcmVzIHN1Y2ggYSBjb3B5IHRvIHVwbG9hZCBkYXRhLgotICAg
IGlmIChpc01hcHBlZCA9PSBHUFVCdWZmZXJNYXBwZWRPcHRpb246OklzTWFwcGVkCi0gICAgICAg
ICYmICF1c2FnZS5jb250YWluc0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUs
IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KQotICAgICAgICAmJiBkZXNjcmlwdG9y
LnNpemUgJSA0KSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
RGF0YSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTWV0YWwgYmVzdCBwcmFj
dGljZXM6IFJlYWQtb25seSBvbmUtdGltZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBzaG91bGQg
bm90IGFsbG9jYXRlIGEgTVRMQnVmZmVyIGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5kRW5jb2Rl
ciBzZXQqQnl0ZXNdIGNhbGxzIGluc3RlYWQuCi0KLSAgICBNVExSZXNvdXJjZU9wdGlvbnMgcmVz
b3VyY2VPcHRpb25zID0gTVRMUmVzb3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7Ci0KLSAg
ICAvLyBNYXBwYWJsZSBidWZmZXJzIHVzZSBzaGFyZWQgc3RvcmFnZSBhbGxvY2F0aW9uLgotICAg
IHJlc291cmNlT3B0aW9ucyB8PSB1c2FnZS5jb250YWluc0FueSh7IEdQVUJ1ZmZlclVzYWdlOjpG
bGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSA/IE1UTFJl
c291cmNlU3RvcmFnZU1vZGVTaGFyZWQgOiBNVExSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZTsK
LQotICAgIFJldGFpblB0cjxNVExCdWZmZXI+IG10bEJ1ZmZlcjsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsQnVmZmVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRm
b3JtRGV2aWNlKCkgbmV3QnVmZmVyV2l0aExlbmd0aDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihk
ZXNjcmlwdG9yLnNpemUpIG9wdGlvbnM6cmVzb3VyY2VPcHRpb25zXSk7Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bEJ1ZmZlcikgewotICAgICAgICBlcnJv
clNjb3Blcy5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHUFVCdWZmZXIoV1RGTW92ZShtdGxCdWZmZXIpLCBkZXZpY2UsIHNpemUsIHVzYWdlLCBpc01h
cHBlZCkpOwotfQotCi1HUFVCdWZmZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYm
IGJ1ZmZlciwgR1BVRGV2aWNlJiBkZXZpY2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8R1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkKQot
ICAgIDogbV9wbGF0Zm9ybUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi0gICAgLCBtX2RldmljZSht
YWtlUmVmKGRldmljZSkpCi0gICAgLCBtX2J5dGVMZW5ndGgoc2l6ZSkKLSAgICAsIG1fdXNhZ2Uo
dXNhZ2UpCi0gICAgLCBtX2lzTWFwcGVkRnJvbUNyZWF0aW9uKGlzTWFwcGVkID09IEdQVUJ1ZmZl
ck1hcHBlZE9wdGlvbjo6SXNNYXBwZWQpCi17Ci0gICAgbV9wbGF0Zm9ybVVzYWdlID0gTVRMUmVz
b3VyY2VVc2FnZVJlYWQ7Ci0gICAgaWYgKGlzU3RvcmFnZSgpKQotICAgICAgICBtX3BsYXRmb3Jt
VXNhZ2UgfD0gTVRMUmVzb3VyY2VVc2FnZVdyaXRlOwotfQotCi1HUFVCdWZmZXI6On5HUFVCdWZm
ZXIoKQotewotICAgIGRlc3Ryb3kobnVsbHB0cik7Ci19Ci0KLWJvb2wgR1BVQnVmZmVyOjppc1Jl
YWRPbmx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91c2FnZS5jb250YWluc0FueShyZWFkT25s
eUZsYWdzKTsKLX0KLQotR1BVQnVmZmVyOjpTdGF0ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fcGxhdGZvcm1CdWZmZXIpCi0gICAgICAgIHJldHVybiBTdGF0ZTo6RGVz
dHJveWVkOwotICAgIGlmIChtX2lzTWFwcGVkRnJvbUNyZWF0aW9uIHx8IG1fbWFwcGluZ0NhbGxi
YWNrKQotICAgICAgICByZXR1cm4gU3RhdGU6Ok1hcHBlZDsKLQotICAgIHJldHVybiBTdGF0ZTo6
VW5tYXBwZWQ7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZlcjo6bWFwT25DcmVhdGlv
bigpCi17Ci0gICAgQVNTRVJUKG1faXNNYXBwZWRGcm9tQ3JlYXRpb24pOwotICAgIHJldHVybiBz
dGFnaW5nQnVmZmVyRm9yV3JpdGUoKTsKLX0KLQotI2lmIFVTRShNRVRBTCkKLXZvaWQgR1BVQnVm
ZmVyOjpjb21tYW5kQnVmZmVyQ29tbWl0dGVkKE1UTENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZm
ZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICArK21fbnVtU2NoZWR1bGVk
Q29tbWFuZEJ1ZmZlcnM7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAv
LyBNYWtlIHN1cmUgfHRoaXN8IG9ubHkgZ2V0cyByZWYnZCAvIGRlcmVmJ2Qgb24gdGhlIG1haW4g
dGhyZWFkIHNpbmNlIGl0IGlzIG5vdCBUaHJlYWRTYWZlUmVmQ291bnRlZC4KLSAgICBbY29tbWFu
ZEJ1ZmZlciBhZGRDb21wbGV0ZWRIYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShpZDxNVExDb21tYW5kQnVmZmVyPikgbXV0YWJsZSB7Ci0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBjb21tYW5kQnVmZmVyQ29tcGxldGVkKCk7Ci0g
ICAgICAgIH0pOwotICAgIH0pLmdldCgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpjb21tYW5kQnVmZmVyQ29tcGxldGVkKCkKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX251bVNjaGVkdWxlZENvbW1hbmRC
dWZmZXJzKTsKLQotICAgIGlmIChtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzID09IDEgJiYg
c3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVkKQotICAgICAgICBydW5NYXBwaW5nQ2FsbGJhY2soKTsK
LQotICAgIC0tbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVyczsKLX0KLSNlbmRpZiAvLyBVU0Uo
TUVUQUwpCi0KLXZvaWQgR1BVQnVmZmVyOjpyZWdpc3Rlck1hcHBpbmdDYWxsYmFjayhNYXBwaW5n
Q2FsbGJhY2smJiBjYWxsYmFjaywgYm9vbCBpc1JlYWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKLXsKLSAgICAvLyBSZWplY3QgaWYgcmVxdWVzdCBpcyBpbnZhbGlkLgotICAgIGlmIChp
c1JlYWQgJiYgIWlzTWFwUmVhZGFibGUoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBjYWxsYmFjayhu
dWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWlzUmVhZCAmJiAhaXNN
YXBXcml0ZWFibGUoKSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIkludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghbV9tYXBwaW5nQ2FsbGJhY2sgJiYg
IW1fbWFwcGluZ0NhbGxiYWNrVGFzay5pc1BlbmRpbmcoKSk7Ci0KLSAgICAvLyBBbiBleGlzdGlu
ZyBjYWxsYmFjayBtZWFucyB0aGlzIGJ1ZmZlciBpcyBpbiB0aGUgbWFwcGVkIHN0YXRlLgotICAg
IG1fbWFwcGluZ0NhbGxiYWNrID0gUGVuZGluZ01hcHBpbmdDYWxsYmFjazo6Y3JlYXRlKFdURk1v
dmUoY2FsbGJhY2spKTsKLQotICAgIC8vIElmIEdQVSBpcyBub3QgdXNpbmcgdGhpcyBidWZmZXIs
IHJ1biB0aGUgY2FsbGJhY2sgQVNBUC4KLSAgICBpZiAoIW1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1
ZmZlcnMpIHsKLSAgICAgICAgbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLnNjaGVkdWxlVGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIHJ1bk1hcHBpbmdDYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQg
R1BVQnVmZmVyOjpydW5NYXBwaW5nQ2FsbGJhY2soKQotewotICAgIGlmIChtX21hcHBpbmdDYWxs
YmFjaykKLSAgICAgICAgbV9tYXBwaW5nQ2FsbGJhY2stPmNhbGxiYWNrKGlzTWFwUmVhZCgpID8g
c3RhZ2luZ0J1ZmZlckZvclJlYWQoKSA6IHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpKTsKLX0KLQot
SlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVhZCgpCi17Ci0g
ICAgaWYgKCFtX3N0YWdpbmdCdWZmZXIpCi0gICAgICAgIG1fc3RhZ2luZ0J1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGUobV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9ieXRlTGVu
Z3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1lbWNweShtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwg
bV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9ieXRlTGVuZ3RoKTsKLQotICAgIHJl
dHVybiBtX3N0YWdpbmdCdWZmZXIuZ2V0KCk7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1
ZmZlcjo6c3RhZ2luZ0J1ZmZlckZvcldyaXRlKCkKLXsKLSAgICBtX3N0YWdpbmdCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKDEsIG1fYnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIG1fc3RhZ2lu
Z0J1ZmZlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNvcHlTdGFnaW5nQnVmZmVyVG9H
UFUoR1BVRXJyb3JTY29wZXMqIGVycm9yU2NvcGVzKQotewotICAgIE1UTENvbW1hbmRRdWV1ZSAq
cXVldWU7Ci0gICAgaWYgKCFtX2RldmljZS0+dHJ5R2V0UXVldWUoKSB8fCAhKHF1ZXVlID0gbV9k
ZXZpY2UtPnRyeUdldFF1ZXVlKCktPnBsYXRmb3JtUXVldWUoKSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJldGFpblB0cjxNVExCdWZmZXI+IHN0YWdpbmdNdGxCdWZmZXI7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAvLyBHUFVCdWZmZXIgY3JlYXRpb24gdmFsaWRh
dGlvbiBlbnN1cmVzIG1fYnl0ZVNpemUgZml0cyBpbiBOU1VJbnRlZ2VyLgotICAgIHN0YWdpbmdN
dGxCdWZmZXIgPSBhZG9wdE5TKFttX2RldmljZS0+cGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJX
aXRoQnl0ZXM6bV9zdGFnaW5nQnVmZmVyLT5kYXRhKCkgbGVuZ3RoOnN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KG1fYnl0ZUxlbmd0aCkgb3B0aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1
bHRDYWNoZV0pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghc3Rh
Z2luZ010bEJ1ZmZlciAmJiBlcnJvclNjb3BlcykgewotICAgICAgICBlcnJvclNjb3Blcy0+Z2Vu
ZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0
byBjb21tYW5kQnVmZmVyID0gcmV0YWluUHRyKFtxdWV1ZSBjb21tYW5kQnVmZmVyXSk7Ci0gICAg
YXV0byBibGl0RW5jb2RlciA9IHJldGFpblB0cihbY29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVu
Y29kZXJdKTsKLQotICAgIFtibGl0RW5jb2RlciBjb3B5RnJvbUJ1ZmZlcjpzdGFnaW5nTXRsQnVm
ZmVyLmdldCgpIHNvdXJjZU9mZnNldDowIHRvQnVmZmVyOm1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkg
ZGVzdGluYXRpb25PZmZzZXQ6MCBzaXplOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1fYnl0ZUxl
bmd0aCldOwotICAgIFtibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0gICAgW2NvbW1hbmRCdWZm
ZXIgY29tbWl0XTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBH
UFVCdWZmZXI6OnVubWFwKEdQVUVycm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAo
IW1faXNNYXBwZWRGcm9tQ3JlYXRpb24gJiYgIWlzTWFwcGFibGUoKSAmJiBlcnJvclNjb3Blcykg
ewotICAgICAgICBlcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9w
ZXJhdGlvbjogR1BVQnVmZmVyIGlzIG5vdCBtYXBwYWJsZSEiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChtX3N0YWdpbmdCdWZmZXIpIHsKLSAgICAgICAgaWYgKGlzTWFwcGFi
bGUoKSkgewotICAgICAgICAgICAgLy8gTUFQX1dSSVRFIGFuZCBNQVBfUkVBRCBidWZmZXJzIGhh
dmUgc2hhcmVkLCBDUFUtYWNjZXNzaWJsZSBzdG9yYWdlLgotICAgICAgICAgICAgQVNTRVJUKG1f
cGxhdGZvcm1CdWZmZXIgJiYgbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cyk7Ci0gICAg
ICAgICAgICBtZW1jcHkobV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKS5jb250ZW50cywgbV9zdGFnaW5n
QnVmZmVyLT5kYXRhKCksIG1fYnl0ZUxlbmd0aCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9pc01h
cHBlZEZyb21DcmVhdGlvbikKLSAgICAgICAgICAgIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoZXJy
b3JTY29wZXMpOwotCi0gICAgICAgIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24gPSBmYWxzZTsKLSAg
ICAgICAgbV9zdGFnaW5nQnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAobV9tYXBw
aW5nQ2FsbGJhY2spIHsKLSAgICAgICAgbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmNhbmNlbFRhc2so
KTsKLSAgICAgICAgbV9tYXBwaW5nQ2FsbGJhY2stPmNhbGxiYWNrKG51bGxwdHIpOwotICAgICAg
ICBtX21hcHBpbmdDYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIEdQVUJ1ZmZl
cjo6ZGVzdHJveShHUFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKHN0YXRl
KCkgPT0gU3RhdGU6Ok1hcHBlZCkKLSAgICAgICAgdW5tYXAoZXJyb3JTY29wZXMpOwotCi0gICAg
bV9wbGF0Zm9ybUJ1ZmZlciA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxZGNjNmIxNmQwMjM0YjNl
YzRkMWMzMzA3ZGM4ZGM1ZWFlMWMxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZm
ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2lt
cG9ydCAiR1BVRXh0ZW50M0QuaCIKLSNpbXBvcnQgIkdQVVF1ZXVlLmgiCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZm
ZXI6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmlj
ZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLQotICAgIGF1dG8gZ3B1Q29tbWFuZFF1ZXVlID0gZGV2aWNlLnRyeUdldFF1
ZXVlKCk7Ci0gICAgaWYgKCFncHVDb21tYW5kUXVldWUpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgYXV0byBtdGxRdWV1ZSA9IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1ZSgp
OwotCi0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYnVmZmVyID0gW210bFF1ZXVlIGNvbW1hbmRC
dWZmZXJdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFidWZm
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBV
bmFibGUgdG8gY3JlYXRlIE1UTENvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZl
cihSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX3BsYXRmb3Jt
Q29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi17Ci19Ci0KLUdQVUNvbW1hbmRCdWZmZXI6
On5HUFVDb21tYW5kQnVmZmVyKCkKLXsKLSAgICBlbmRCbGl0RW5jb2RpbmcoKTsKLX0KLQotTVRM
QmxpdENvbW1hbmRFbmNvZGVyICpHUFVDb21tYW5kQnVmZmVyOjpibGl0RW5jb2RlcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fYmxpdEVuY29kZXIgPyBtX2JsaXRFbmNvZGVyLmdldCgpIDogKG1f
YmxpdEVuY29kZXIgPSBbbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIgYmxpdENvbW1hbmRFbmNvZGVy
XSkuZ2V0KCk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6ZW5kQmxpdEVuY29kaW5nKCkK
LXsKLSAgICBpZiAoIW1fYmxpdEVuY29kZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9ibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fYmxpdEVuY29kZXIgPSBudWxscHRy
OwotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BV
QnVmZmVyPiYmIHNyYywgdWludDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwg
dWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5n
UGFzcygpIHx8ICFzcmMtPmlzQ29weVNvdXJjZSgpIHx8ICFkc3QtPmlzQ29weURlc3RpbmF0aW9u
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJU
b0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoc2l6ZSAlIDQgfHwgc3JjT2Zmc2V0ICUgNCB8
fCBkc3RPZmZzZXQgJSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVy
Ojpjb3B5QnVmZmVyVG9CdWZmZXIoKTogQ29weSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBs
ZSBvZiA0IGJ5dGVzISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAv
LyBUaGlzIGNhbGwgZW5zdXJlcyB0aGF0IHNpemUsIG9mZnNldCwgYW5kIHNpemUgKyBvZmZzZXQg
Y2FuIHNhZmVseSBmaXQgaW4gTlNVSW50ZWdlciByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLgotICAg
IGF1dG8gc3JjTGVuZ3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBzcmNPZmZzZXQp
OwotICAgIGF1dG8gZHN0TGVuZ3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihzaXplLCBkc3RP
ZmZzZXQpOwotICAgIGlmIChzcmNMZW5ndGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0aC5o
YXNPdmVyZmxvd2VkKCkKLSAgICAgICAgfHwgc3JjTGVuZ3RoID4gc3JjLT5ieXRlTGVuZ3RoKCkg
fHwgZHN0TGVuZ3RoID4gZHN0LT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCBv
ciBjb3B5IHNpemUhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIFRoZXNlIGNhc3RzIGFyZSBzYWZlIGR1ZSB0byBl
YXJsaWVyIGNoZWNrZWRTdW0oKSBjaGVja3MuCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAg
Y29weUZyb21CdWZmZXI6c3JjLT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIHNvdXJjZU9mZnNl
dDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzcmNPZmZzZXQpCi0gICAgICAgIHRvQnVmZmVyOmRz
dC0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihkc3RPZmZzZXQpCi0gICAgICAgIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oc2l6ZSldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNl
QnVmZmVyKFdURk1vdmUoc3JjKSk7Ci0gICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0KSk7Ci19Ci0K
LXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5
VmlldyYmIHNyY0J1ZmZlciwgR1BVVGV4dHVyZUNvcHlWaWV3JiYgZHN0VGV4dHVyZSwgY29uc3Qg
R1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyY0J1
ZmZlci5idWZmZXItPmlzQ29weVNvdXJjZSgpIHx8ICFkc3RUZXh0dXJlLnRleHR1cmUtPmlzQ29w
eURlc3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIg
Yml0cyBvbiBzb21lIHBsYXRmb3Jtcy4KLSAgICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IDA7
Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoc3JjQnVmZmVyLm9mZnNldCwgc291cmNlT2Zm
c2V0KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZl
clRvVGV4dHVyZSgpOiBTb3VyY2Ugb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbi4KLQotICAg
IC8vIEdQVUJ1ZmZlckNvcHlWaWV3OjpvZmZzZXQ6IFRoZSBsb2NhdGlvbiBtdXN0IGJlIGFsaWdu
ZWQgdG8gdGhlIHNpemUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBmb3JtYXQu
IFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUn
cyBwaXhlbCBzaXplLCBpbiBieXRlcy4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpyb3dQ
aXRjaDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4
dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLiBUaGUgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gMzIsNzY3IG11bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmXi
gJlzIHBpeGVsIHNpemUuCi0KLSAgICAvLyBHUFVCdWZmZXJDb3B5Vmlldzo6aW1hZ2VIZWlnaHQ6
IFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUn
cyBwaXhlbCBzaXplLCBpbiBieXRlcy4KLQotICAgIC8vIEdQVUV4dGVudDNEOiBXaGVuIHlvdSBj
b3B5IHRvIGEgMUQgdGV4dHVyZSwgaGVpZ2h0IGFuZCBkZXB0aCBtdXN0IGJlIDEuIFdoZW4geW91
IGNvcHkgdG8gYSAyRCB0ZXh0dXJlLCBkZXB0aCBtdXN0IGJlIDEuCi0KLSAgICAvLyBHUFVUZXh0
dXJlQ29weVZpZXc6OnRleHR1cmU6IFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBhIGZyYW1lYnVmZmVy
T25seSB0ZXh0dXJlIGFuZCBtdXN0IG5vdCBoYXZlIGEgUFZSVEMgcGl4ZWwgZm9ybWF0LgotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBbYmxpdEVuY29kZXIoKQotICAg
ICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmNCdWZmZXIuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpCi0g
ICAgICAgIHNvdXJjZU9mZnNldDpzb3VyY2VPZmZzZXQKLSAgICAgICAgc291cmNlQnl0ZXNQZXJS
b3c6c3JjQnVmZmVyLnJvd1BpdGNoCi0gICAgICAgIHNvdXJjZUJ5dGVzUGVySW1hZ2U6c3JjQnVm
ZmVyLmltYWdlSGVpZ2h0Ci0gICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0
aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAgICAgIHRvVGV4dHVyZTpkc3RUZXh0dXJl
LnRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCi0gICAgICAgIGRlc3RpbmF0aW9uU2xpY2U6ZHN0
VGV4dHVyZS5hcnJheUxheWVyCi0gICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0VGV4dHVyZS5t
aXBMZXZlbAotICAgICAgICBkZXN0aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdFRleHR1
cmUub3JpZ2luLngsIGRzdFRleHR1cmUub3JpZ2luLnksIGRzdFRleHR1cmUub3JpZ2luLnopXTsK
LQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZUJ1ZmZlcihXVEZNb3Zl
KHNyY0J1ZmZlci5idWZmZXIpKTsKLSAgICB1c2VUZXh0dXJlKFdURk1vdmUoZHN0VGV4dHVyZS50
ZXh0dXJlKSk7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cihHUFVUZXh0dXJlQ29weVZpZXcmJiBzcmNUZXh0dXJlLCBHUFVCdWZmZXJDb3B5VmlldyYmIGRz
dEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgaWYgKGlzRW5jb2RpbmdQ
YXNzKCkgfHwgIXNyY1RleHR1cmUudGV4dHVyZS0+aXNDb3B5U291cmNlKCkgfHwgIWRzdEJ1ZmZl
ci5idWZmZXItPmlzQ29weURlc3RpbmF0aW9uKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUlu
dGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgTlNVSW50ZWdlciBkZXN0
aW5hdGlvbk9mZnNldCA9IDA7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZHN0QnVmZmVy
Lm9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVD
b21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKCk6IERlc3RpbmF0aW9uIG9mZnNldCBp
cyB0b28gbGFyZ2UhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
QWRkIE1ldGFsIHZhbGlkYXRpb24/Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIFtibGl0RW5jb2RlcigpCi0gICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJl
LnRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCi0gICAgICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1
cmUuYXJyYXlMYXllcgotICAgICAgICBzb3VyY2VMZXZlbDpzcmNUZXh0dXJlLm1pcExldmVsCi0g
ICAgICAgIHNvdXJjZU9yaWdpbjpNVExPcmlnaW5NYWtlKHNyY1RleHR1cmUub3JpZ2luLngsIHNy
Y1RleHR1cmUub3JpZ2luLnksIHNyY1RleHR1cmUub3JpZ2luLnopCi0gICAgICAgIHNvdXJjZVNp
emU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCi0gICAg
ICAgIHRvQnVmZmVyOmRzdEJ1ZmZlci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAg
ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25PZmZzZXQKLSAgICAgICAgZGVzdGluYXRpb25C
eXRlc1BlclJvdzpkc3RCdWZmZXIucm93UGl0Y2gKLSAgICAgICAgZGVzdGluYXRpb25CeXRlc1Bl
ckltYWdlOmRzdEJ1ZmZlci5pbWFnZUhlaWdodF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICB1c2VUZXh0dXJlKFdURk1vdmUoc3JjVGV4dHVyZS50ZXh0dXJlKSk7Ci0g
ICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0QnVmZmVyLmJ1ZmZlcikpOwotfQotCi12b2lkIEdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNy
YywgR1BVVGV4dHVyZUNvcHlWaWV3JiYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsK
LSAgICBpZiAoaXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjLnRleHR1cmUtPmlzQ29weVNvdXJjZSgp
IHx8ICFkc3QudGV4dHVyZS0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRk
IE1ldGFsIHZhbGlkYXRpb24/Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIFtibGl0RW5jb2RlcigpCi0gICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmMudGV4dHVyZS0+
cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgc291cmNlU2xpY2U6c3JjLmFycmF5TGF5ZXIKLSAg
ICAgICAgc291cmNlTGV2ZWw6c3JjLm1pcExldmVsCi0gICAgICAgIHNvdXJjZU9yaWdpbjpNVExP
cmlnaW5NYWtlKHNyYy5vcmlnaW4ueCwgc3JjLm9yaWdpbi55LCBzcmMub3JpZ2luLnopCi0gICAg
ICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUu
ZGVwdGgpCi0gICAgICAgIHRvVGV4dHVyZTpkc3QudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkK
LSAgICAgICAgZGVzdGluYXRpb25TbGljZTpkc3QuYXJyYXlMYXllcgotICAgICAgICBkZXN0aW5h
dGlvbkxldmVsOmRzdC5taXBMZXZlbAotICAgICAgICBkZXN0aW5hdGlvbk9yaWdpbjpNVExPcmln
aW5NYWtlKGRzdC5vcmlnaW4ueCwgZHN0Lm9yaWdpbi55LCBkc3Qub3JpZ2luLnopXTsKLQotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmMu
dGV4dHVyZSkpOwotICAgIHVzZVRleHR1cmUoV1RGTW92ZShkc3QudGV4dHVyZSkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1
dGVQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhYmM2MGU0NTNlN2ZjMmY1ZTRiOTYyNjVhMWVjNzNmOWVkOWEyYTBjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcj4gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIGlmIChidWZmZXItPmlzRW5jb2RpbmdQYXNz
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3Jl
YXRlKCk6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBtdXN0IGJlIGVuZGVkIGZpcnN0ISIpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBidWZmZXItPmVuZEJsaXRFbmNvZGlu
ZygpOwotCi0gICAgUmV0YWluUHRyPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2Rl
cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG10bEVuY29kZXIgPSBb
YnVmZmVyLT5wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb21wdXRlQ29tbWFuZEVuY29kZXJdOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsRW5jb2Rlcikgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoKTog
VW5hYmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlQ29tbWFuZEVuY29kZXIhIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwotfQot
Ci1HUFVDb21wdXRlUGFzc0VuY29kZXI6OkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJiBidWZmZXIsIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+
JiYgZW5jb2RlcikKLSAgICA6IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFdURk1vdmUoYnVm
ZmVyKSkKLSAgICAsIG1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVy
KSkKLXsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxj
b25zdCBHUFVDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3BsYXRm
b3JtQ29tcHV0ZVBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRl
UGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKHBpcGVsaW5lLT5wbGF0Zm9ybUNvbXB1dGVQ
aXBlbGluZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3Bs
YXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIHNldENvbXB1dGVQaXBlbGluZVN0YXRlOnBpcGVsaW5l
LT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICBtX3BpcGVsaW5lID0gV1RGTW92ZShwaXBlbGluZSk7Ci19Ci0KLXZvaWQgR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNp
Z25lZCB6KQotewotICAgIGlmICghbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCgpOiBJbnZh
bGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9w
aXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpk
aXNwYXRjaCgpOiBObyB2YWxpZCBHUFVDb21wdXRlUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9waXBlbGluZS0+cGxhdGZvcm1Db21wdXRl
UGlwZWxpbmUoKSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGF1
dG8gdGhyZWFkc1BlclRocmVhZGdyb3VwID0gTVRMU2l6ZU1ha2UobV9waXBlbGluZS0+Y29tcHV0
ZURpbWVuc2lvbnMoKS53aWR0aCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5oZWln
aHQsIG1fcGlwZWxpbmUtPmNvbXB1dGVEaW1lbnNpb25zKCkuZGVwdGgpOwotCi0gICAgYXV0byB0
aHJlYWRncm91cHNQZXJHcmlkID0gTVRMU2l6ZU1ha2UoeCwgeSwgeik7Ci0KLSAgICBbbV9wbGF0
Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRncm91cHNQ
ZXJHcmlkIHRocmVhZHNQZXJUaHJlYWRncm91cDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXBdOwotCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1jb25zdCBNVExDb21tYW5kRW5jb2Rl
ciAqR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotI2lm
IFVTRShNRVRBTCkKLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnVzZVJlc291cmNlKGNv
bnN0IE1UTFJlc291cmNlICpyZXNvdXJjZSwgdW5zaWduZWQgdXNhZ2UpCi17Ci0gICAgQVNTRVJU
KG1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6
cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0K
LQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnNldENvbXB1dGVCdWZmZXIoY29uc3QgTVRM
QnVmZmVyICpidWZmZXIsIE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAg
ICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciBzZXRC
dWZmZXI6YnVmZmVyIG9mZnNldDpvZmZzZXQgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxp
bmVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYTM3OGEwZWFmZGIz
ZmE2MzYzZWRhMWZhMGMwZmYxZjE5MzkxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tcHV0
ZVBpcGVsaW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQ
VUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0ICJHUFVQaXBlbGluZUxheW91dC5oIgotI2ltcG9ydCAi
R1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5o
IgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgotI2ltcG9ydCA8d3RmL01vbm90b25pY1Rp
bWUuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFy
eSAqY29tcHV0ZU1ldGFsTGlicmFyeSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciAqbXRs
RGVzY3JpcHRvciwgY29uc3QgU3RyaW5nJiBjb21wdXRlRW50cnlQb2ludE5hbWUsIEdQVUVycm9y
U2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIGlmICghY29tcHV0ZU1ldGFsTGlicmFyeSkgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIGNvbXB1dGUgc3RhZ2UgZG9lcyBu
b3QgZXhpc3QhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZ1
bmN0aW9uID0gYWRvcHROUyhbY29tcHV0ZU1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1l
OmNvbXB1dGVFbnRyeVBvaW50TmFtZV0pOwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAg
ZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBjcmVh
dGUgY29tcHV0ZSBNVExGdW5jdGlvbiAnIiwgY29tcHV0ZUVudHJ5UG9pbnROYW1lLCAiJyEiKSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRD
b21wdXRlRnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdI
TFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRp
b25hbDxXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5
PiBjb21wdXRlTGlicmFyeTsKLSAgICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7Ci0KLSAgICBX
SExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnMgeyAxLCAxLCAxIH07Ci0K
LSAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIEFTU0VSVChjb21wdXRlU3RhZ2Uu
bW9kdWxlLT53aGxzbE1vZHVsZSgpKTsKLQotICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmVudHJ5
UG9pbnROYW1lID0gY29tcHV0ZVN0YWdlLmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxz
bENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgqY29tcHV0ZVN0YWdlLm1vZHVsZS0+d2hs
c2xNb2R1bGUoKSwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxl
UmVzdWx0KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
bWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwgd2hsc2xDb21waWxlUmVzdWx0LmVy
cm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb21wdXRlRGltZW5zaW9ucyA9IHdobHNsQ29tcGlsZVJlc3VsdC0+Y29tcHV0ZURp
bWVuc2lvbnM7Ci0KLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0KLSAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1l
OwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAg
IHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjAwNDc0IEFkZCBkaXJlY3QgU3RyaW5nQnVpbGRlciAtPiBOU1N0
cmluZyBjb252ZXJzaW9uIHRvIGF2b2lkIGV4dHJhIGNvcHkgaW50byBhIFdURjo6U3RyaW5nCi0g
ICAgICAgIGNvbXB1dGVMaWJyYXJ5ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkg
bmV3TGlicmFyeVdpdGhTb3VyY2U6d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0
cmluZygpIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1
bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGls
ZSB0aW1lczogIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29u
ZHMoKSwgIiBtcyIpOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jaWZuZGVm
IE5ERUJVRwotICAgICAgICBpZiAoIWNvbXB1dGVMaWJyYXJ5KQotICAgICAgICAgICAgTlNMb2co
QCIlQCIsIGVycm9yKTsKLSNlbmRpZgotICAgICAgICBBU1NFUlQoY29tcHV0ZUxpYnJhcnkpOwot
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTc3MSBPbmNlIHdlIHplcm8tZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3
YXJuaW5ncywgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQot
ICAgICAgICBjb21wdXRlRW50cnlQb2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZEVu
dHJ5UG9pbnROYW1lLnRvU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29tcHV0ZUxp
YnJhcnkgPSBjb21wdXRlU3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAg
ICAgICBjb21wdXRlRW50cnlQb2ludCA9IGNvbXB1dGVTdGFnZS5lbnRyeVBvaW50OwotICAgIH0K
LQotICAgIGlmICh0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRs
RGVzY3JpcHRvciwgY29tcHV0ZUVudHJ5UG9pbnQsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQot
c3RydWN0IENvbnZlcnRSZXN1bHQgewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yPiBwaXBlbGluZURlc2NyaXB0b3I7Ci0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNp
b25zIGNvbXB1dGVEaW1lbnNpb25zOwotfTsKLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udmVy
dFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2Us
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yIG5ld10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ih
Iik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0
byYgY29tcHV0ZVN0YWdlID0gZGVzY3JpcHRvci5jb21wdXRlU3RhZ2U7Ci0KLSAgICBib29sIGlz
V2hsc2wgPSBjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwotCi0gICAgc3RkOjpv
cHRpb25hbDxXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlwdG9y
OwotICAgIGlmIChpc1dobHNsKQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcigpOwotCi0gICAgaWYgKGRlc2NyaXB0b3IubGF5b3V0ICYm
IHdobHNsRGVzY3JpcHRvcikgewotICAgICAgICBpZiAoYXV0byBsYXlvdXQgPSBjb252ZXJ0TGF5
b3V0KCpkZXNjcmlwdG9yLmxheW91dCkpCi0gICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmxh
eW91dCA9IFdURk1vdmUoKmxheW91dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIEdQVVBpcGVs
aW5lTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmIChhdXRvIGNvbXB1dGVEaW1lbnNpb25zID0gdHJ5U2V0RnVuY3Rp
b25zKGNvbXB1dGVTdGFnZSwgZGV2aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2Ny
aXB0b3IsIGVycm9yU2NvcGVzKSkKLSAgICAgICAgcmV0dXJuIHt7IG10bERlc2NyaXB0b3IsICpj
b21wdXRlRGltZW5zaW9ucyB9fTsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0
cnVjdCBDcmVhdGVSZXN1bHQgewotICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0
ZT4gcGlwZWxpbmVTdGF0ZTsKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURp
bWVuc2lvbnM7Ci19OwotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNy
ZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25z
dCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3Bl
cyYgZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewot
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2
aWNlISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8g
Y29udmVydFJlc3VsdCA9IGNvbnZlcnRDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGRlc2NyaXB0
b3IsIGRldmljZSwgZXJyb3JTY29wZXMpOwotICAgIGlmICghY29udmVydFJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBBU1NFUlQoY29udmVydFJlc3VsdC0+cGlwZWxp
bmVEZXNjcmlwdG9yKTsKLSAgICBhdXRvIG10bERlc2NyaXB0b3IgPSBjb252ZXJ0UmVzdWx0LT5w
aXBlbGluZURlc2NyaXB0b3I7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGU+IHBpcGVsaW5lOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVz
Y3JpcHRvci5nZXQoKSBvcHRpb25zOk1UTFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5p
bCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoIXBpcGVsaW5lKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uLlVURjhTdHJpbmcgOiAiVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVTdGF0
ZSEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4ge3sgcGlwZWxpbmUsIGNvbnZlcnRSZXN1
bHQtPmNvbXB1dGVEaW1lbnNpb25zIH19OwotfQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5l
PiBHUFVDb21wdXRlUGlwZWxpbmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gdHJ5Q3JlYXRl
TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7
Ci0gICAgaWYgKCFjcmVhdGVSZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21wdXRlUGlwZWxpbmUoV1RGTW92ZShjcmVhdGVSZXN1
bHQtPnBpcGVsaW5lU3RhdGUpLCBjcmVhdGVSZXN1bHQtPmNvbXB1dGVEaW1lbnNpb25zLCBkZXNj
cmlwdG9yLmxheW91dCkpOwotfQotCi1HUFVDb21wdXRlUGlwZWxpbmU6OkdQVUNvbXB1dGVQaXBl
bGluZShSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+JiYgcGlwZWxpbmUsIFdITFNM
OjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucywgY29uc3QgUmVmUHRyPEdQVVBp
cGVsaW5lTGF5b3V0PiYgbGF5b3V0KQotICAgIDogR1BVUGlwZWxpbmUoKQotICAgICwgbV9wbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkKLSAgICAsIG1fY29tcHV0ZURp
bWVuc2lvbnMoY29tcHV0ZURpbWVuc2lvbnMpCi0gICAgLCBtX2xheW91dChsYXlvdXQpCi17Ci19
Ci0KLUdQVUNvbXB1dGVQaXBlbGluZTo6fkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsK
LQotYm9vbCBHUFVDb21wdXRlUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKQotewot
ICAgIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1f
bGF5b3V0LmdldCgpKSwgV1RGTW92ZShjb21wdXRlU3RhZ2UpKTsKLSAgICBhdXRvIGVycm9yU2Nv
cGVzID0gR1BVRXJyb3JTY29wZXM6OmNyZWF0ZShbXSAoR1BVRXJyb3ImJikgeyB9KTsKLSAgICBp
ZiAoYXV0byBjcmVhdGVSZXN1bHQgPSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShk
ZXZpY2UsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkgewotICAgICAgICBtX3BsYXRmb3JtQ29t
cHV0ZVBpcGVsaW5lID0gV1RGTW92ZShjcmVhdGVSZXN1bHQtPnBpcGVsaW5lU3RhdGUpOwotICAg
ICAgICBtX2NvbXB1dGVEaW1lbnNpb25zID0gY3JlYXRlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9u
czsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURl
dmljZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVURldmljZU1ldGFsLm1tCmluZGV4IGEzOGY2OTVhODczMDJmOTUwMTEyM2U4YjVlM2YyYTlh
YzBlMGM4YWQuLjFkNDYyNmViZjEzZWFiZWUxNjAwNjY3ZDQxN2U3ZTJiYWQzYmI3MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZp
Y2VNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVRGV2aWNlTWV0YWwubW0KQEAgLTI2LDIzICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJHUFVEZXZpY2UuaCIKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBv
cnQgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTWV0YWxTUEkuaD4K
LSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRGV2aWNlKGlkIDxNVExEZXZpY2U+IGRldmlj
ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBHUFVEZXZpY2U6OnByZXdhcm0oKQordm9pZCBwcmV3YXJtR1BVKCkKIHsKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgLy8gQ2FsbCBNVExDb3B5QWxsRGV2aWNlcygpIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgaGFuZ2luZyB0aGUgbWFpbiB0aHJlYWQuCkBAIC01Miw1MCArNDAs
NCBAQCB2b2lkIEdQVURldmljZTo6cHJld2FybSgpCiAjZW5kaWYKIH0KIAotUmVmUHRyPEdQVURl
dmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxNVExEZXZpY2U+IGRl
dmljZVB0cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMtPnBvd2VyUHJlZmVyZW5j
ZSB8fCBvcHRpb25zLT5wb3dlclByZWZlcmVuY2UgPT0gR1BVUG93ZXJQcmVmZXJlbmNlOjpMb3dQ
b3dlcikgewotICAgICAgICBhdXRvIGRldmljZXMgPSBhZG9wdE5TKE1UTENvcHlBbGxEZXZpY2Vz
KCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2UgOiBkZXZp
Y2VzLmdldCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZURldmljZShkZXZpY2Up
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGRldmljZS5sb3dQ
b3dlcikgewotICAgICAgICAgICAgICAgIGRldmljZVB0ciA9IGRldmljZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAgICBpZiAo
IWRldmljZVB0cikKLSAgICAgICAgZGV2aWNlUHRyID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1E
ZWZhdWx0RGV2aWNlKCkpOwotCi0gICAgaWYgKCFpc0FjY2VwdGFibGVEZXZpY2UoZGV2aWNlUHRy
LmdldCgpKSkKLSAgICAgICAgZGV2aWNlUHRyLmNsZWFyKCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KLSAgICBpZiAoIWRldmljZVB0cikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZpY2UhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIExPRyhXZWJHUFUsICJHUFVE
ZXZpY2U6OkdQVURldmljZSgpOiBNVExEZXZpY2UgaXMgJXAiLCBkZXZpY2VQdHIuZ2V0KCkpOwot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlUHRyKSkpOwot
fQotCi1HUFVEZXZpY2U6OkdQVURldmljZShSZXRhaW5QdHI8TVRMRGV2aWNlPiYmIGRldmljZSkK
LSAgICA6IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotewotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVlZTA5ODhjOTMwYTAwYjc0Njc3N2M3YTA2YjdkOWQxZjQxMzE2NjMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0
TGF5b3V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlv
dXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91
dC5oIgotI2luY2x1ZGUgIkdQVVNoYWRlclN0YWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFn
ZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PFdITFNM
OjpTaGFkZXJTdGFnZT4gcmVzdWx0OwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpG
bGFnczo6VmVydGV4KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVy
dGV4KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkZyYWdtZW50KQot
ICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAgIGlm
IChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAgcmVzdWx0
LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4g
Y29udmVydEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cExheW91dDo6SW50ZXJuYWxCaW5kaW5nRGV0
YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKQotewotICAgIHJldHVybiBXVEY6OnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciB1bmlm
b3JtQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWls
cz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VW5pZm9ybUJ1ZmZlckJpbmRpbmcgeyB1bmlm
b3JtQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91
cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxX
SExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHsgV0hMU0w6
OlNhbXBsZXJCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNh
bXBsZWRUZXh0dXJlKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0
YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6VGV4dHVyZUJpbmRpbmcgeyB9IH07Ci0g
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVy
KSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAg
ICAgICByZXR1cm4geyBXSExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVy
LmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJp
bmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSksIGlu
dGVybmFsQmluZGluZ0RldGFpbHMpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+
IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKLXsKLSAgICBX
SExTTDo6TGF5b3V0IHJlc3VsdDsKLSAgICBpZiAobGF5b3V0LmJpbmRHcm91cExheW91dHMoKS5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlvdXQuYmlu
ZEdyb3VwTGF5b3V0cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGJpbmRH
cm91cExheW91dCA9IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKClbaV07Ci0gICAgICAgIFdITFNM
OjpCaW5kR3JvdXAgYmluZEdyb3VwOwotICAgICAgICBiaW5kR3JvdXAubmFtZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIg
OiBiaW5kR3JvdXBMYXlvdXQtPmJpbmRpbmdzTWFwKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGJpbmRpbmdEZXRhaWxzID0ga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICAgICAgV0hM
U0w6OkJpbmRpbmcgYmluZGluZzsKLSAgICAgICAgICAgIGJpbmRpbmcudmlzaWJpbGl0eSA9IGNv
bnZlcnRTaGFkZXJTdGFnZUZsYWdzKGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy52aXNp
YmlsaXR5KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRp
bmdUeXBlKGJpbmRpbmdEZXRhaWxzLmludGVybmFsQmluZGluZ0RldGFpbHMpKQotICAgICAgICAg
ICAgICAgIGJpbmRpbmcuYmluZGluZyA9ICpiaW5kaW5nVHlwZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgaWYgKGJp
bmRpbmdEZXRhaWxzLmV4dGVybmFsQmluZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgICAgICBiaW5kaW5nLmV4dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmV4dGVy
bmFsQmluZGluZy5iaW5kaW5nOwotICAgICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5hbWUgPSBi
aW5kaW5nRGV0YWlscy5pbnRlcm5hbE5hbWU7Ci0gICAgICAgICAgICBiaW5kR3JvdXAuYmluZGlu
Z3MuYXBwZW5kKFdURk1vdmUoYmluZGluZykpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoV1RGTW92ZShiaW5kR3JvdXApKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5N2RkNTJkZDdlNWRhMmFkMWQ0YTFjZGNmMmJjMTIxNWU4
MzUzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxD
b252ZXJ0TGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQ
aXBlbGluZUxheW91dDsKLQotc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5
b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1U
eXBlc01ldGFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVUGxhdGZvcm1UeXBlc01ldGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
OWFiNTQzNTg2ZTE0ZWU4ZmQ1NjA4YzA0ZWQzNmUxNzk4MWQzYzMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBsYXRmb3JtVHlwZXNNZXRhbC5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PG9iamMvTlNPYmpDUnVudGltZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JK
Q19DTEFTUyBDQU1ldGFsRHJhd2FibGU7Ci1PQkpDX0NMQVNTIFdlYkdQVUxheWVyOwotCi1PQkpD
X1BST1RPQ09MKE1UTEFyZ3VtZW50RW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJsaXRDb21t
YW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTEJ1ZmZlcik7Ci1PQkpDX1BST1RPQ09MKE1U
TENvbW1hbmRCdWZmZXIpOwotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kRW5jb2Rlcik7Ci1PQkpD
X1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVDb21t
YW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKLU9C
SkNfUFJPVE9DT0woTVRMRGVwdGhTdGVuY2lsU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExEZXZp
Y2UpOwotT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVy
Q29tbWFuZEVuY29kZXIpOwotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsK
LU9CSkNfUFJPVE9DT0woTVRMUmVzb3VyY2UpOwotT0JKQ19QUk9UT0NPTChNVExTYW1wbGVyU3Rh
dGUpOwotT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci11c2luZyBQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCA9IE5TVUludGVnZXI7Ci0KLS8vIE1ldGFs
IHR5cGVzCi11c2luZyBQbGF0Zm9ybUJ1ZmZlciA9IE1UTEJ1ZmZlcjsKLXVzaW5nIFBsYXRmb3Jt
QnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1CdWZmZXI+OwotCi11c2luZyBQbGF0
Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZvcm1Db21t
YW5kQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVyPjsKLQot
dXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgPSBNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXI7Ci11c2luZyBQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlclNtYXJ0UHRyID0gUmV0YWluUHRy
PFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGlw
ZWxpbmUgPSBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBp
cGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+OwotCi11
c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21h
cnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1EZXZpY2U+OwotCi11c2luZyBQbGF0Zm9ybURyYXdh
YmxlID0gQ0FNZXRhbERyYXdhYmxlOwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyID0g
UmV0YWluUHRyPFBsYXRmb3JtRHJhd2FibGU+OwotCi11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyID0gTVRMQ29tbWFuZEVuY29kZXI7Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1Qcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcj47Ci0KLXVzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Ci11
c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1RdWV1ZT47Ci0K
LXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgPSBNVExSZW5kZXJDb21tYW5kRW5jb2Rl
cjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFpblB0cjxQ
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1SZW5kZXJQaXBlbGluZT47Ci0KLXVzaW5nIFBs
YXRmb3JtU2FtcGxlciA9IE1UTFNhbXBsZXJTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtU2FtcGxlclNt
YXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU2FtcGxlcj47Ci0KLXVzaW5nIFBsYXRmb3JtU2hh
ZGVyTW9kdWxlID0gTVRMTGlicmFyeTsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQ
dHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+OwotCi11c2luZyBQbGF0Zm9ybVN3
YXBMYXllciA9IFdlYkdQVUxheWVyOwotdXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9
IFJldGFpblB0cjxQbGF0Zm9ybVN3YXBMYXllcj47Ci0KLXVzaW5nIFBsYXRmb3JtVGV4dHVyZSA9
IE1UTFRleHR1cmU7Ci11c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0cjxQ
bGF0Zm9ybVRleHR1cmU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzY2I3OWRiODNiYTFlYjZlMGNiZGNiZTlkMGJhOWM5MDI0OWQ3OTg3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJpbmRHcm91cC5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBh
c3NFbmNvZGVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIFtwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgZW5kRW5jb2RpbmddOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGludmFsaWRhdGVFbmNvZGVyKCk7Ci0gICAg
bV9jb21tYW5kQnVmZmVyLT5zZXRJc0VuY29kaW5nUGFzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgR1BV
QmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgaWYgKCFwbGF0Zm9ybVBhc3NFbmNvZGVyKCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBhcmd1bWVudEJ1ZmZlciA9IGJpbmRHcm91
cC5hcmd1bWVudEJ1ZmZlcigpOwotICAgIGlmICghYXJndW1lbnRCdWZmZXIuZmlyc3QpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChhcmd1bWVudEJ1ZmZlci5zZWNvbmQudmVydGV4KQotICAg
ICAgICBzZXRWZXJ0ZXhCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZl
ci5zZWNvbmQudmVydGV4LCBpbmRleCk7Ci0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC5m
cmFnbWVudCkKLSAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXIoYXJndW1lbnRCdWZmZXIuZmlyc3Qs
ICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuZnJhZ21lbnQsIGluZGV4KTsKLSAgICBpZiAoYXJndW1l
bnRCdWZmZXIuc2Vjb25kLmNvbXB1dGUpCi0gICAgICAgIHNldENvbXB1dGVCdWZmZXIoYXJndW1l
bnRCdWZmZXIuZmlyc3QsICphcmd1bWVudEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSwgaW5kZXgpOwot
Ci0gICAgZm9yIChhdXRvJiBidWZmZXIgOiBiaW5kR3JvdXAuYm91bmRCdWZmZXJzKCkpIHsKLSAg
ICAgICAgdXNlUmVzb3VyY2UoYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxN
VExSZXNvdXJjZVVzYWdlPihidWZmZXItPnBsYXRmb3JtVXNhZ2UoKSkpOwotICAgICAgICBtX2Nv
bW1hbmRCdWZmZXItPnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICB9Ci0gICAgZm9y
IChhdXRvJiB0ZXh0dXJlIDogYmluZEdyb3VwLmJvdW5kVGV4dHVyZXMoKSkgewotICAgICAgICB1
c2VSZXNvdXJjZSh0ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKSwgc3RhdGljX2Nhc3Q8TVRMUmVz
b3VyY2VVc2FnZT4odGV4dHVyZS0+cGxhdGZvcm1Vc2FnZSgpKSk7Ci0gICAgICAgIG1fY29tbWFu
ZEJ1ZmZlci0+dXNlVGV4dHVyZSh0ZXh0dXJlLmNvcHlSZWYoKSk7Ci0gICAgfQotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVl
dWVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxYjQyYjU5NDRmNDZi
OWYyN2RhOTBlNjQxNmM2ZGJmMGIwNWExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUXVldWVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
ID0gQCJjb20uYXBwbGUuV2ViS2l0IjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRR
dWV1ZUxhYmVsUHJlZml4ID0gQCJjb20uYXBwbGUuV2ViS2l0LiI7Ci0KLVJlZlB0cjxHUFVRdWV1
ZT4gR1BVUXVldWU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVR
dWV1ZTo6dHJ5Q3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBxdWV1ZTsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcXVldWUgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdDb21tYW5kUXVldWVdKTsKLSAgICBbcXVldWUg
c2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVF1ZXVlOjp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kUXVldWUhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgR1BVUXVldWUoV1RGTW92ZShxdWV1ZSksIGRldmljZSkpOwotfQotCi1HUFVRdWV1ZTo6R1BV
UXVldWUoUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBt
X2RldmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVlOjpzdWJt
aXQoVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKLXsKLSAg
ICBmb3IgKGF1dG8mIGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVycykgewotICAgICAgICAv
LyBWYWxpZGF0ZSByZXNvdXJjZSBpbnRlZ3JpdHkuCi0gICAgICAgIGZvciAoYXV0byYgYnVmZmVy
IDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1ZmZlcnMoKSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZl
ci0+c3RhdGUoKSAhPSBHUFVCdWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkgewotICAgICAgICAgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQnVmZmVyIHNl
dCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoYXV0byYgdGV4dHVyZSA6IGNvbW1h
bmRCdWZmZXItPnVzZWRUZXh0dXJlcygpKSB7Ci0gICAgICAgICAgICBpZiAoIXRleHR1cmUtPnBs
YXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVl
OjpzdWJtaXQoKTogSW52YWxpZCBHUFVUZXh0dXJlIHNldCBvbiBhIEdQVUNvbW1hbmRCdWZmZXIh
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNvbW1hbmRCdWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotICAgICAgICAvLyBPa2F5
IHRvIGNvbW1pdDsgcHJldmVudCBhbnkgYnVmZmVyIG1hcHBpbmcgY2FsbGJhY2tzIGZyb20gZXhl
Y3V0aW5nIHVudGlsIGNvbW1hbmQgYnVmZmVyIGlzIGNvbXBsZXRlLgotICAgICAgICBmb3IgKGF1
dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRCdWZmZXJzKCkpCi0gICAgICAgICAgICBi
dWZmZXItPmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoY29tbWFuZEJ1ZmZlci0+cGxhdGZvcm1Db21t
YW5kQnVmZmVyKCkpOwotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgW2NvbW1hbmRCdWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1pdF07Ci0gICAg
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICBpZiAobV9wcmVzZW50
VGFzay5pc1BlbmRpbmcoKSB8fCAhbV9kZXZpY2UgfHwgIW1fZGV2aWNlLT5zd2FwQ2hhaW4oKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgYSBHUFVTd2FwQ2hhaW4gZXhpc3RzLCBlbnN1
cmUgdGhhdCBhIHByZXNlbnQgaXMgc2NoZWR1bGVkIGFmdGVyIGFsbCBjb21tYW5kIGJ1ZmZlcnMu
Ci0gICAgbV9wcmVzZW50VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgc3dhcENoYWluID0gbWFrZVJlZigqbV9kZXZpY2UtPnN3YXBDaGFpbigp
KV0gKCkgewotICAgICAgICBhdXRvIGN1cnJlbnREcmF3YWJsZSA9IHN3YXBDaGFpbi0+dGFrZURy
YXdhYmxlKCk7Ci0gICAgICAgIC8vIElmIHRoZSBHUFVTd2FwQ2hhaW4gaGFzIG5vIGRyYXdhYmxl
LCBpdCB3YXMgaW52YWxpZGF0ZWQgYmV0d2VlbiBjb21tYW5kIHN1Ym1pc3Npb24gYW5kIHRoaXMg
dGFzay4KLSAgICAgICAgaWYgKCFjdXJyZW50RHJhd2FibGUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgYXV0byBwcmVzZW50Q29tbWFuZEJ1ZmZlciA9IFttX3BsYXRmb3JtUXVldWUg
Y29tbWFuZEJ1ZmZlcl07Ci0gICAgICAgIFtwcmVzZW50Q29tbWFuZEJ1ZmZlciBwcmVzZW50RHJh
d2FibGU6c3RhdGljX2Nhc3Q8aWQ8TVRMRHJhd2FibGU+PihjdXJyZW50RHJhd2FibGUuZ2V0KCkp
XTsKLSAgICAgICAgW3ByZXNlbnRDb21tYW5kQnVmZmVyIGNvbW1pdF07Ci0gICAgfSk7Ci19Ci0K
LVN0cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybVF1
ZXVlKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwcmVm
aXhlZExhYmVsID0gW21fcGxhdGZvcm1RdWV1ZSBsYWJlbF07Ci0KLSAgICBpZiAoW3ByZWZpeGVk
TGFiZWwgaXNFcXVhbFRvU3RyaW5nOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF0pCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgQVNTRVJUKHByZWZpeGVkTGFiZWwubGVuZ3Ro
ID4gY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoKTsKLSAgICByZXR1cm4gW3ByZWZpeGVk
TGFiZWwgc3Vic3RyaW5nRnJvbUluZGV4OmNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4Lmxlbmd0aF07
Ci19Ci0KLXZvaWQgR1BVUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0
Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21fcGxhdGZvcm1RdWV1ZSBz
ZXRMYWJlbDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAgICAgW21f
cGxhdGZvcm1RdWV1ZSBzZXRMYWJlbDpbY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggc3RyaW5nQnlB
cHBlbmRpbmdTdHJpbmc6bGFiZWxdXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNv
ZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMzU1ZTIzYTE4MDk3
MTA3N2QxZmExYmNkMTU5Y2Q4ZmJiYjk2ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVUJ1
ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29sb3IuaCIKLSNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIu
aCIKLSNpbXBvcnQgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5k
ZXJQaXBlbGluZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xWZXJ0ZXhC
dWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgTVRMTG9hZEFjdGlvbiBsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKEdQ
VUxvYWRPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVMb2FkT3A6OkNs
ZWFyOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkNsZWFyOwotICAgIGNhc2UgR1BVTG9h
ZE9wOjpMb2FkOgotICAgICAgICByZXR1cm4gTVRMTG9hZEFjdGlvbkxvYWQ7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTdG9yZUFjdGlvbiBzdG9y
ZUFjdGlvbkZvckdQVVN0b3JlT3AoR1BVU3RvcmVPcCBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7
Ci0gICAgY2FzZSBHUFVTdG9yZU9wOjpTdG9yZToKLSAgICAgICAgcmV0dXJuIE1UTFN0b3JlQWN0
aW9uU3RvcmU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRp
YyBib29sIHBvcHVsYXRlTXRsQ29sb3JBdHRhY2htZW50c0FycmF5KE1UTFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgKmFycmF5LCBjb25zdCBWZWN0b3I8R1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJB
TShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGVzY3JpcHRvcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRv
ciA9IGRlc2NyaXB0b3JzW2ldOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuYXR0YWNobWVudC0+
cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxp
ZCBNVExUZXh0dXJlIGZvciBjb2xvciBhdHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaSk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXV0
byYgY29sb3IgPSBkZXNjcmlwdG9yLmNsZWFyQ29sb3I7Ci0KLSAgICAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgYXV0byBtdGxBdHRhY2htZW50ID0gcmV0YWluUHRy
KFthcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6aV0pOwotICAgICAgICBbbXRsQXR0YWNo
bWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+cGxhdGZvcm1UZXh0dXJlKCld
OwotICAgICAgICBbbXRsQXR0YWNobWVudCBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtl
KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEpXTsKLSAgICAgICAgW210bEF0dGFj
aG1lbnQgc2V0TG9hZEFjdGlvbjpsb2FkQWN0aW9uRm9yR1BVTG9hZE9wKGRlc2NyaXB0b3IubG9h
ZE9wKV07Ci0gICAgICAgIFttdGxBdHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9u
Rm9yR1BVU3RvcmVPcChkZXNjcmlwdG9yLnN0b3JlT3ApXTsKLQotICAgICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBi
b29sIHBvcHVsYXRlTXRsRGVwdGhTdGVuY2lsQXR0YWNobWVudChNVExSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvciAqbXRsQXR0YWNobWVudCwgY29uc3QgR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmICghZGVzY3JpcHRvci5hdHRhY2htZW50
LT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQg
TVRMVGV4dHVyZSBmb3IgZGVwdGggYXR0YWNobWVudCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBbbXRsQXR0YWNobWVudCBzZXRUZXh0dXJlOmRlc2NyaXB0b3IuYXR0YWNobWVudC0+
cGxhdGZvcm1UZXh0dXJlKCldOwotICAgIFttdGxBdHRhY2htZW50IHNldENsZWFyRGVwdGg6ZGVz
Y3JpcHRvci5jbGVhckRlcHRoXTsKLSAgICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0aW9uOmxv
YWRBY3Rpb25Gb3JHUFVMb2FkT3AoZGVzY3JpcHRvci5kZXB0aExvYWRPcCldOwotICAgIFttdGxB
dHRhY2htZW50IHNldFN0b3JlQWN0aW9uOnN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChkZXNjcmlw
dG9yLmRlcHRoU3RvcmVPcCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHVzZUF0dGFjaG1lbnRzKEdQVUNvbW1h
bmRCdWZmZXImIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQot
ewotICAgIGZvciAoYXV0byYgY29sb3JBdHRhY2htZW50IDogZGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBidWZmZXIudXNlVGV4dHVyZShXVEZNb3ZlKGNvbG9yQXR0YWNobWVu
dC5hdHRhY2htZW50KSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCkKLSAgICAgICAgYnVmZmVyLnVzZVRleHR1cmUoV1RGTW92ZSgoKmRlc2NyaXB0b3IuZGVwdGhT
dGVuY2lsQXR0YWNobWVudCkuYXR0YWNobWVudCkpOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGFz
c0VuY29kZXI+IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRC
dWZmZXI+JiYgYnVmZmVyLCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjp0cnlDcmVhdGUoKSI7Ci0KLSAgICAvLyBPbmx5IG9uZSBjb21tYW5kIGVuY29kZXIgbWF5
IGJlIGFjdGl2ZSBhdCBhIHRpbWUuCi0gICAgaWYgKGJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEV4aXN0aW5nIHBhc3MgZW5jb2RlciBtdXN0IGJl
IGVuZGVkIGZpcnN0ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBS
ZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5T
KFtNVExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFwb3B1
bGF0ZU10bENvbG9yQXR0YWNobWVudHNBcnJheShtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0
YWNobWVudHMsIGRlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cywgZnVuY3Rpb25OYW1lKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50Ci0gICAgICAgICYmICFwb3B1bGF0ZU10bERlcHRoU3RlbmNpbEF0dGFjaG1lbnQo
bXRsRGVzY3JpcHRvci5nZXQoKS5kZXB0aEF0dGFjaG1lbnQsICpkZXNjcmlwdG9yLmRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgYnVmZmVyLT5lbmRCbGl0RW5jb2RpbmcoKTsKLQotICAgIFJldGFpblB0cjxNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcj4gbXRsRW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgbXRsRW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZl
cigpIHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQo
KV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bEVuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFJlbmRl
ckNvbW1hbmRFbmNvZGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIC8vIEFsbCBpcyB3ZWxsOyBlbnN1cmUgR1BVQ29tbWFuZEJ1ZmZlciBp
cyBhd2FyZSBvZiBuZXcgYXR0YWNobWVudHMuCi0gICAgdXNlQXR0YWNobWVudHMoYnVmZmVyLCBX
VEZNb3ZlKGRlc2NyaXB0b3IpKTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJl
bmRlclBhc3NFbmNvZGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShtdGxFbmNvZGVyKSkpOwot
fQotCi1HUFVSZW5kZXJQYXNzRW5jb2Rlcjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRF
bmNvZGVyPiYmIGVuY29kZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZN
b3ZlKGNvbW1hbmRCdWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKFdU
Rk1vdmUoZW5jb2RlcikpCi17Ci19Ci0KLWNvbnN0IE1UTENvbW1hbmRFbmNvZGVyICpHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lPiYmIHBp
cGVsaW5lKQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52
YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IE1ldGFsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgTVRMUGlw
ZWxpbmVTdGF0ZSdzIGF0dGFjaG1lbnQgZm9ybWF0cyBkbyBub3QgbWF0Y2ggdGhlIE1UTENvbW1h
bmRFbmNvZGVyJ3MgYXR0YWNobWVudCBmb3JtYXRzLgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBpZiAocGlwZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCkpCi0gICAg
ICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0RGVwdGhTdGVuY2lsU3RhdGU6cGlw
ZWxpbmUtPmRlcHRoU3RlbmNpbFN0YXRlKCldOwotCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlciBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOnBpcGVsaW5lLT5wbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKCldOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9waXBl
bGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fcGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5n
IGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRCbGVu
ZENvbG9yUmVkOmNvbG9yLnIgZ3JlZW46Y29sb3IuZyBibHVlOmNvbG9yLmIgYWxwaGE6Y29sb3Iu
YV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBh
c3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgaWYgKCFt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2Rp
bmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZp
ZXdwb3J0OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCB9XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFNjaXNzb3JSZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lz
c29yUmVjdCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFNjaXNzb3JSZWN0OiB7IHgsIHksIHdp
ZHRoLCBoZWlnaHQgfV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lk
IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1ZmZlciwg
dWludDY0X3Qgb2Zmc2V0KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhC
dWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvZmZzZXQgPj0gYnVmZmVyLmJ5dGVMZW5ndGgoKSB8
fCBvZmZzZXQgJSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0SW5kZXhCdWZmZXIoKTogSW52YWxpZCBvZmZzZXQhIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgQVNTRVJUKGJ1ZmZlci5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAvLyBCdWZm
ZXIgbXVzdCBiZSBjYWNoZWQgdG8gcHJvdmlkZSBpdCB0byBNZXRhbCB2aWEgZHJhd0luZGV4ZWRQ
cmltaXRpdmVzLgotICAgIG1faW5kZXhCdWZmZXIgPSBtYWtlUmVmUHRyKGJ1ZmZlcik7Ci0gICAg
bV9pbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9yPFJlZjxH
UFVCdWZmZXI+PiYgYnVmZmVycywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2Zmc2V0cykKLXsK
LSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoKTogSW52YWxpZCBv
cGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUKGJ1ZmZlcnMuc2l6ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1ZmZlcnMu
c2l6ZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYXV0byBt
dGxCdWZmZXJzID0gYnVmZmVycy5tYXAoW3RoaXNdIChhdXRvJiBidWZmZXIpIHsKLSAgICAgICAg
Y29tbWFuZEJ1ZmZlcigpLnVzZUJ1ZmZlcihidWZmZXIuY29weVJlZigpKTsKLSAgICAgICAgQVNT
RVJUKGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSk7Ci0gICAgICAgIHJldHVybiBidWZmZXItPnBs
YXRmb3JtQnVmZmVyKCk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGluZGV4UmFuZ2VzID0gTlNNYWtl
UmFuZ2UoV0hMU0w6Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCksIGJ1
ZmZlcnMuc2l6ZSgpKTsKLQotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0VmVy
dGV4QnVmZmVyczptdGxCdWZmZXJzLmRhdGEoKSBvZmZzZXRzOihjb25zdCBOU1VJbnRlZ2VyICop
b2Zmc2V0cy5kYXRhKCkgd2l0aFJhbmdlOmluZGV4UmFuZ2VzXTsKLQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLX0KLQotc3RhdGljIE1UTFByaW1pdGl2ZVR5cGUgbXRsUHJpbWl0aXZl
VHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KEdQVVByaW1pdGl2ZVRvcG9sb2d5IHR5cGUpCi17
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6UG9p
bnRMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVBvaW50OwotICAgIGNhc2Ug
R1BVUHJpbWl0aXZlVG9wb2xvZ3k6OkxpbmVMaXN0OgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0
aXZlVHlwZUxpbmU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6TGluZVN0cmlwOgot
ICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZUxpbmVTdHJpcDsKLSAgICBjYXNlIEdQVVBy
aW1pdGl2ZVRvcG9sb2d5OjpUcmlhbmdsZUxpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRp
dmVUeXBlVHJpYW5nbGU7Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5nbGVT
dHJpcDoKLSAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVUcmlhbmdsZVN0cmlwOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50
LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBp
ZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxpZCBvcGVyYXRpb246IEVuY29kaW5n
IGlzIGVuZGVkISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9waXBlbGlu
ZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTog
Tm8gdmFsaWQgR1BVUmVuZGVyUGlwZWxpbmUgZm91bmQhIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyIAotICAgICAgICBkcmF3UHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBl
Rm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkK
LSAgICAgICAgdmVydGV4U3RhcnQ6Zmlyc3RWZXJ0ZXgKLSAgICAgICAgdmVydGV4Q291bnQ6dmVy
dGV4Q291bnQKLSAgICAgICAgaW5zdGFuY2VDb3VudDppbnN0YW5jZUNvdW50Ci0gICAgICAgIGJh
c2VJbnN0YW5jZTpmaXJzdEluc3RhbmNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXN0YXRpYyBNVExJbmRleFR5cGUgbXRsSW5kZXhUeXBlRm9yR1BVSW5kZXhGb3JtYXQo
R1BVSW5kZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2Fz
ZSBHUFVJbmRleEZvcm1hdDo6VWludDE2OgotICAgICAgICByZXR1cm4gTVRMSW5kZXhUeXBlVUlu
dDE2OwotICAgIGNhc2UgR1BVSW5kZXhGb3JtYXQ6OlVpbnQzMjoKLSAgICAgICAgcmV0dXJuIE1U
TEluZGV4VHlwZVVJbnQzMjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhD
b3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJh
c2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0jaWYgIUxPR19ESVNBQkxFRAot
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6ZHJhd0luZGV4ZWQoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uOiBF
bmNvZGluZyBpcyBlbmRlZCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghbV9waXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZh
bGlkIEdQVVJlbmRlclBpcGVsaW5lIGZvdW5kISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICIlczogTm8gR1BVSW5kZXhGb3JtYXQgc3BlY2lmaWVkISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2luZGV4QnVmZmVy
IHx8ICFtX2luZGV4QnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICIlczogTm8gdmFsaWQgaW5kZXggYnVmZmVyIHNldCEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBpbmRleEJ5dGVTaXplID0gKG1fcGlwZWxp
bmUtPmluZGV4Rm9ybWF0KCkgPT0gR1BVSW5kZXhGb3JtYXQ6OlVpbnQxNikgPyBzaXplb2YodWlu
dDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90KTsKLQotICAgIC8vIFRoaXMgY2FsY3VsYXRpb24gY2Fu
bm90IG92ZXJmbG93IGFzIGZpcnN0SW5kZXggaXMgYm91bmRlZCB0byAzMiBiaXRzLCBhbmQgaW5k
ZXhCeXRlU2l6ZSB0byBzaXplb2YodWludDMyX3QpLgotICAgIHVpbnQ2NF90IGZpcnN0SW5kZXhP
ZmZzZXQgPSBmaXJzdEluZGV4ICogaW5kZXhCeXRlU2l6ZTsKLQotICAgIC8vIFRoaXMgY2FsbCBl
bnN1cmVzIHRoYXQgbmVpdGhlciBhcmd1bWVudCBub3IgdGhlaXIgc3VtIHdpbGwgb3ZlcmZsb3cg
TlNVSW50ZWdlci4KLSAgICBhdXRvIHRvdGFsT2Zmc2V0ID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2Vy
PihmaXJzdEluZGV4T2Zmc2V0LCBtX2luZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBpZiAodG90YWxP
ZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IHRvdGFsT2Zmc2V0ID49IG1faW5kZXhCdWZmZXItPmJ5
dGVMZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgZmlyc3RJbmRl
eCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tbWFu
ZEJ1ZmZlcigpLnVzZUJ1ZmZlcihtYWtlUmVmKCptX2luZGV4QnVmZmVyKSk7Ci0KLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVy
Ci0gICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlczptdGxQcmltaXRpdmVUeXBlRm9yR1BVUHJp
bWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKLSAgICAgICAg
aW5kZXhDb3VudDppbmRleENvdW50Ci0gICAgICAgIGluZGV4VHlwZTptdGxJbmRleFR5cGVGb3JH
UFVJbmRleEZvcm1hdCgqbV9waXBlbGluZS0+aW5kZXhGb3JtYXQoKSkKLSAgICAgICAgaW5kZXhC
dWZmZXI6bV9pbmRleEJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQotICAgICAgICBpbmRleEJ1ZmZl
ck9mZnNldDp0b3RhbE9mZnNldC52YWx1ZSgpCi0gICAgICAgIGluc3RhbmNlQ291bnQ6aW5zdGFu
Y2VDb3VudAotICAgICAgICBiYXNlVmVydGV4OmJhc2VWZXJ0ZXgKLSAgICAgICAgYmFzZUluc3Rh
bmNlOmZpcnN0SW5zdGFuY2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
I2lmIFVTRShNRVRBTCkKLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dXNlUmVzb3VyY2Uo
Y29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsKLSAgICBBU1NF
UlQobV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgdXNlUmVzb3VyY2U6
cmVzb3VyY2UgdXNhZ2U6dXNhZ2VdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0K
LQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTEJ1
ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
QVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFZlcnRl
eEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEZy
YWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqYnVmZmVyLCBOU1VJbnRlZ2VyIG9mZnNldCwg
dW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rl
cik7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyIHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zmc2V0IGF0
SW5kZXg6aW5kZXhdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotI2VuZGlm
IC8vIFVTRShNRVRBTCkKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZTc3ZTY5NTdiZmI0OTU0NDEyMjUxYTAzOTg1Njlj
OTY0M2E4YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVs
aW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVRXJy
b3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVUxpbWl0cy5oIgotI2ltcG9ydCAiR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgotI2lt
cG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKLSNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgotI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0jaW1wb3J0
IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhTdGVu
Y2lsU3RhdGU+IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVURlcHRoU3Rl
bmNpbFN0YXRlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2Us
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTERlcHRoU3RlbmNp
bERlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJVbmFibGUgdG8gY3JlYXRlIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gbXRsRGVwdGhDb21w
YXJlID0gc3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5j
dGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmRlcHRoQ29tcGFyZSkpOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOm10bERlcHRoQ29tcGFyZV07
Ci0gICAgW210bERlc2NyaXB0b3Igc2V0RGVwdGhXcml0ZUVuYWJsZWQ6ZGVzY3JpcHRvci5kZXB0
aFdyaXRlRW5hYmxlZF07Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJhY2svZnJvbnRGYWNl
U3RlbmNpbC4KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gc3RhdGU7Ci0K
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHN0YXRlID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRv
cjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4
ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVwdGhTdGVuY2lsU3RhdGUhIik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0ZTsKLX0KLQotc3RhdGlj
IFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQg
dmVydGV4Rm9ybWF0KQotewotICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KSB7Ci0gICAgY2FzZSBH
UFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0NDoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3Jt
YXQ6OkZsb2F0UjMyRzMyQjMyQTMyOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDM6
Ci0gICAgICAgIHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMjsKLSAg
ICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQyOgotICAgICAgICByZXR1cm4gV0hMU0w6OlZl
cnRleEZvcm1hdDo6RmxvYXRSMzJHMzI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHZl
cnRleEZvcm1hdCA9PSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0KTsKLSAgICAgICAgcmV0dXJuIFdI
TFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMyOwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V0hMU0w6OlRleHR1cmVGb3JtYXQ+IGNvbnZlcnRUZXh0dXJlRm9ybWF0KEdQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVU
ZXh0dXJlRm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVG
b3JtYXQ6OlJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3Jt
OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07Ci0gICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRo
aXMuCi0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKLSAgICAgICAg
cmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKLSAgICBjYXNlIEdQ
VVRleHR1cmVGb3JtYXQ6OlJnYmExNmZsb2F0OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1
cmVGb3JtYXQ6OlJHQkExNkZsb2F0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotfQotCi1zdGF0aWMgTVRMVmVydGV4Rm9ybWF0IG10bFZlcnRleEZv
cm1hdEZvckdQVVZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgZm9ybWF0KQotewotICAgIHN3
aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0OgotICAgICAg
ICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQ7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6
OkZsb2F0MjoKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0MjsKLSAgICBjYXNl
IEdQVVZlcnRleEZvcm1hdDo6RmxvYXQzOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0
RmxvYXQzOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDQ6Ci0gICAgICAgIHJldHVy
biBNVExWZXJ0ZXhGb3JtYXRGbG9hdDQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXN0YXRpYyBNVExWZXJ0ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0aW9uRm9y
R1BVSW5wdXRTdGVwTW9kZShHUFVJbnB1dFN0ZXBNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBNb2RlOjpWZXJ0ZXg6Ci0gICAgICAgIHJldHVy
biBNVExWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJWZXJ0ZXg7Ci0gICAgY2FzZSBHUFVJbnB1dFN0ZXBN
b2RlOjpJbnN0YW5jZToKLSAgICAgICAgcmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlvblBlcklu
c3RhbmNlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0vLyBGSVhN
RTogTW92ZSB0aGlzIGludG8gR1BVTGltaXRzIHdoZW4gdGhhdCBpcyBpbXBsZW1lbnRlZCBwcm9w
ZXJseS4KLWNvbnN0ZXhwciB1bnNpZ25lZCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7Ci0KLXN0
YXRpYyBib29sIHRyeVNldFZlcnRleElucHV0KGNvbnN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9y
LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERl
c2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBjb25zdCBhdXRv
JiBidWZmZXJzID0gZGVzY3JpcHRvci52ZXJ0ZXhCdWZmZXJzOwotCi0gICAgaWYgKGJ1ZmZlcnMu
c2l6ZSgpID4gbWF4VmVydGV4QnVmZmVycykgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzISIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBtdGxWZXJ0ZXhEZXNjcmlw
dG9yID0gYWRvcHROUyhbTVRMVmVydGV4RGVzY3JpcHRvciBuZXddKTsKLQotICAgIGF1dG8gbGF5
b3V0QXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzKTsK
LSAgICBhdXRvIGF0dHJpYnV0ZUFycmF5ID0gcmV0YWluUHRyKG10bFZlcnRleERlc2NyaXB0b3Iu
Z2V0KCkuYXR0cmlidXRlcyk7Ci0KLSAgICAvLyBBdHRyaWJ1dGUgc2hhZGVyTG9jYXRpb25zIG11
c3QgYmUgdW5pcXVlbHkgZmxhdC1tYXBwZWQgdG8gWzAsIHttYXggbnVtYmVyIG9mIHZlcnRleCBh
dHRyaWJ1dGVzfV0uCi0gICAgdW5zaWduZWQgYXR0cmlidXRlSW5kZXggPSAwOwotICAgIEhhc2hT
ZXQ8dW5zaWduZWQsIEludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4gbG9jYXRpb25zOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmICghYnVm
ZmVyc1tpbmRleF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRv
JiBhdHRyaWJ1dGVzID0gYnVmZmVyc1tpbmRleF0tPmF0dHJpYnV0ZVNldDsKLQotICAgICAgICBp
ZiAoYXR0cmlidXRlcy5zaXplKCkgKyBhdHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0dHJpYnV0
ZXMpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9v
IG1hbnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMhIik7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBOU1VJbnRlZ2VyIGlucHV0U3RyaWRlID0g
MDsKLSAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYnVmZmVyc1tpbmRleF0tPnN0cmlk
ZSwgaW5wdXRTdHJpZGUpKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IobWFrZVN0cmluZygiU3RyaWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
ICIsIGluZGV4LCAiIGlzIHRvbyBsYXJnZSEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlckluZGV4ID0gV0hMU0w6
Ok1ldGFsOjpjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleChpbmRleCk7Ci0KLSAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIGF1dG8gbXRsTGF5b3V0RGVzYyA9IHJl
dGFpblB0cihbbGF5b3V0QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmNvbnZlcnRlZEJ1
ZmZlckluZGV4XSk7Ci0gICAgICAgIFttdGxMYXlvdXREZXNjIHNldFN0ZXBGdW5jdGlvbjptdGxT
dGVwRnVuY3Rpb25Gb3JHUFVJbnB1dFN0ZXBNb2RlKGJ1ZmZlcnNbaW5kZXhdLT5zdGVwTW9kZSld
OwotICAgICAgICBbbXRsTGF5b3V0RGVzYyBzZXRTdHJpZGU6aW5wdXRTdHJpZGVdOwotICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBh
dHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBpZiAoIWxvY2F0aW9ucy5hZGQo
YXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAg
ZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxpY2F0ZSBz
aGFkZXJMb2NhdGlvbiAiLCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZlcnRleCBh
dHRyaWJ1dGUhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgTlNVSW50ZWdlciBvZmZzZXQgPSAwOwotICAgICAgICAgICAgaWYg
KCFXVEY6OmNvbnZlcnRTYWZlbHkoYXR0cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewotICAgICAg
ICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJC
dWZmZXIgb2Zmc2V0IGZvciB2ZXJ0ZXggYXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFkZXJMb2Nh
dGlvbiwgIiBpcyB0b28gbGFyZ2UhIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgICAgICBhdXRvIG10bEF0dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0dHJpYnV0
ZUFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDphdHRyaWJ1dGVJbmRleF0pOwotICAgICAg
ICAgICAgW210bEF0dHJpYnV0ZURlc2Mgc2V0Rm9ybWF0Om10bFZlcnRleEZvcm1hdEZvckdQVVZl
cnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KV07Ci0gICAgICAgICAgICBbbXRsQXR0cmlidXRl
RGVzYyBzZXRPZmZzZXQ6b2Zmc2V0XTsKLSAgICAgICAgICAgIFttdGxBdHRyaWJ1dGVEZXNjIHNl
dEJ1ZmZlckluZGV4OmNvbnZlcnRlZEJ1ZmZlckluZGV4XTsKLSAgICAgICAgICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICAgICAgaWYgKHdobHNsRGVzY3JpcHRvcikKLSAg
ICAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPnZlcnRleEF0dHJpYnV0ZXMuYXBwZW5kKHsg
Y29udmVydFZlcnRleEZvcm1hdChhdHRyaWJ1dGUuZm9ybWF0KSwgYXR0cmlidXRlLnNoYWRlckxv
Y2F0aW9uLCBhdHRyaWJ1dGVJbmRleCB9KTsKLQotICAgICAgICAgICAgKythdHRyaWJ1dGVJbmRl
eDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleERlc2Ny
aXB0b3I6bXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIE1UTENvbG9yV3JpdGVNYXNrIG10bENvbG9yV3JpdGVNYXNrRm9yR1BVQ29sb3JX
cml0ZUZsYWdzKEdQVUNvbG9yV3JpdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxhZ3MgPT0g
c3RhdGljX2Nhc3Q8R1BVQ29sb3JXcml0ZUZsYWdzPihHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxs
KSkKLSAgICAgICAgcmV0dXJuIE1UTENvbG9yV3JpdGVNYXNrQWxsOwotCi0gICAgYXV0byBvcHRp
b25zID0gT3B0aW9uU2V0PEdQVUNvbG9yV3JpdGU6OkZsYWdzPjo6ZnJvbVJhdyhmbGFncyk7Ci0K
LSAgICBNVExDb2xvcldyaXRlTWFzayBtYXNrID0gTVRMQ29sb3JXcml0ZU1hc2tOb25lOwotICAg
IGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OlJlZCkKLSAgICAgICAgbWFzayB8
PSBNVExDb2xvcldyaXRlTWFza1JlZDsKLSAgICBpZiAob3B0aW9ucyAmIEdQVUNvbG9yV3JpdGU6
OkZsYWdzOjpHcmVlbikKLSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza0dyZWVuOwot
ICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JXcml0ZTo6RmxhZ3M6OkJsdWUpCi0gICAgICAgIG1h
c2sgfD0gTVRMQ29sb3JXcml0ZU1hc2tCbHVlOwotICAgIGlmIChvcHRpb25zICYgR1BVQ29sb3JX
cml0ZTo6RmxhZ3M6OkFscGhhKQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrQWxw
aGE7Ci0KLSAgICByZXR1cm4gbWFzazsKLX0KLQotc3RhdGljIE1UTEJsZW5kT3BlcmF0aW9uIG10
bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRPcGVyYXRpb24oR1BVQmxlbmRPcGVyYXRpb24gb3Ap
Ci17Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OkFkZDoK
LSAgICAgICAgcmV0dXJuIE1UTEJsZW5kT3BlcmF0aW9uQWRkOwotICAgIGNhc2UgR1BVQmxlbmRP
cGVyYXRpb246OlN1YnRyYWN0OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25TdWJ0
cmFjdDsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpSZXZlcnNlU3VidHJhY3Q6Ci0gICAg
ICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdDsKLSAgICBjYXNlIEdQ
VUJsZW5kT3BlcmF0aW9uOjpNaW46Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9wZXJhdGlvbk1p
bjsKLSAgICBjYXNlIEdQVUJsZW5kT3BlcmF0aW9uOjpNYXg6Ci0gICAgICAgIHJldHVybiBNVExC
bGVuZE9wZXJhdGlvbk1heDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIE1UTEJsZW5kRmFjdG9yIG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Io
R1BVQmxlbmRGYWN0b3IgZmFjdG9yKQotewotICAgIHN3aXRjaCAoZmFjdG9yKSB7Ci0gICAgY2Fz
ZSBHUFVCbGVuZEZhY3Rvcjo6WmVybzoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yWmVy
bzsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmU6Ci0gICAgICAgIHJldHVybiBNVExCbGVu
ZEZhY3Rvck9uZTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNDb2xvcjoKLSAgICAgICAg
cmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rv
cjo6T25lTWludXNTcmNDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25lTWlu
dXNTb3VyY2VDb2xvcjsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpTcmNBbHBoYToKLSAgICAg
ICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yU291cmNlQWxwaGE7Ci0gICAgY2FzZSBHUFVCbGVuZEZh
Y3Rvcjo6T25lTWludXNTcmNBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yT25l
TWludXNTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpEc3RDb2xvcjoKLSAg
ICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvcjsKLSAgICBjYXNlIEdQ
VUJsZW5kRmFjdG9yOjpPbmVNaW51c0RzdENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQ29sb3I7Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6
RHN0QWxwaGE6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGE7
Ci0gICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNEc3RBbHBoYToKLSAgICAgICAgcmV0
dXJuIE1UTEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhOwotICAgIGNhc2UgR1BV
QmxlbmRGYWN0b3I6OlNyY0FscGhhU2F0dXJhdGVkOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JTb3VyY2VBbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpCbGVuZENvbG9yOgot
ICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JCbGVuZENvbG9yOwotICAgIGNhc2UgR1BVQmxl
bmRGYWN0b3I6Ok9uZU1pbnVzQmxlbmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFj
dG9yT25lTWludXNCbGVuZENvbG9yOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1zdGF0aWMgYm9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8R1BVQ29s
b3JTdGF0ZURlc2NyaXB0b3I+JiBjb2xvclN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFycmF5LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBl
cnJvclNjb3BlcykKLXsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0gbnVtYmVy
IG9mIGNvbG9yIGF0dGFjaG1lbnRzIHBlciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0cy4KLSAg
ICBpZiAoY29sb3JTdGF0ZXMuc2l6ZSgpID4gNCkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyEiKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbG9yU3RhdGVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gY29sb3JTdGF0ZXNbaV07Ci0gICAgICAg
IGF1dG8gZGVzY3JpcHRvciA9IHJldGFpblB0cihbYXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OmldKTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8
TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQo
c3RhdGUuZm9ybWF0KSldOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRXcml0ZU1hc2s6bXRsQ29s
b3JXcml0ZU1hc2tGb3JHUFVDb2xvcldyaXRlRmxhZ3Moc3RhdGUud3JpdGVNYXNrKV07Ci0gICAg
ICAgIFtkZXNjcmlwdG9yIHNldEJsZW5kaW5nRW5hYmxlZDpZRVNdOwotICAgICAgICBbZGVzY3Jp
cHRvciBzZXRBbHBoYUJsZW5kT3BlcmF0aW9uOm10bEJsZW5kT3BlcmF0aW9uRm9yR1BVQmxlbmRP
cGVyYXRpb24oc3RhdGUuYWxwaGFCbGVuZC5vcGVyYXRpb24pXTsKLSAgICAgICAgW2Rlc2NyaXB0
b3Igc2V0UmdiQmxlbmRPcGVyYXRpb246bXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVuZE9wZXJh
dGlvbihzdGF0ZS5jb2xvckJsZW5kLm9wZXJhdGlvbildOwotICAgICAgICBbZGVzY3JpcHRvciBz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZh
Y3RvcihzdGF0ZS5hbHBoYUJsZW5kLmRzdEZhY3RvcildOwotICAgICAgICBbZGVzY3JpcHRvciBz
ZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0
b3Ioc3RhdGUuY29sb3JCbGVuZC5kc3RGYWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0
U291cmNlQWxwaGFCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZvckdQVUJsZW5kRmFjdG9yKHN0
YXRlLmFscGhhQmxlbmQuc3JjRmFjdG9yKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFNvdXJj
ZVJHQkJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3Ioc3RhdGUuY29s
b3JCbGVuZC5zcmNGYWN0b3IpXTsKLQotICAgICAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBmb3JtYXQgPSBjb252ZXJ0VGV4dHVyZUZvcm1hdChzdGF0ZS5m
b3JtYXQpKQotICAgICAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+YXR0YWNobWVudHNTdGF0
ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwgaX0pOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQ
cmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkludmFsaWQgR1BVVGV4dHVyZUZvcm1hdCBmb3IgR1BV
Q29sb3JTdGF0ZURlc2NyaXB0b3IgIiwgaSwgIiEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHRy
eVNldE1ldGFsRnVuY3Rpb25zKE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwgTVRMTGli
cmFyeSAqZnJhZ21lbnRNZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
bXRsRGVzY3JpcHRvciwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudEVudHJ5UG9pbnROYW1lLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAg
ICAgICAvLyBNZXRhbCByZXF1aXJlcyBhIHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBl
bGluZXMuCi0gICAgICAgIGlmICghdmVydGV4TWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk1UTExpYnJhcnkgZm9yIHZlcnRleCBz
dGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFt2ZXJ0ZXhNZXRhbExpYnJh
cnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2ZXJ0ZXhFbnRyeVBvaW50TmFtZV0pOwotICAgICAgICBp
ZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gJyIsIHZl
cnRleEVudHJ5UG9pbnROYW1lLCAiJyEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLQotICAgICAgICBbbXRsRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5j
dGlvbi5nZXQoKV07Ci0KLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAg
Ly8gSG93ZXZlciwgZnJhZ21lbnQgc2hhZGVycyBhcmUgb3B0aW9uYWwuCi0gICAgICAgIGlmICgh
ZnJhZ21lbnRNZXRhbExpYnJhcnkgfHwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZS5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9w
dE5TKFtmcmFnbWVudE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdtZW50RW50
cnlQb2ludE5hbWVdKTsKLQotICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBl
cnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90IGNyZWF0
ZSBmcmFnbWVudCBNVExGdW5jdGlvbiAnIiwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgIichIikp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgW210bERl
c2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25z
dCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mIGZyYWdtZW50U3RhZ2Us
IGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIG10
bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAg
IFJldGFpblB0cjxNVExMaWJyYXJ5PiB2ZXJ0ZXhMaWJyYXJ5LCBmcmFnbWVudExpYnJhcnk7Ci0g
ICAgU3RyaW5nIHZlcnRleEVudHJ5UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludDsKLQotICAgIGlm
ICh3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKHZlcnRleFN0YWdlLm1vZHVsZS0+
d2hsc2xNb2R1bGUoKSk7Ci0gICAgICAgIEFTU0VSVCghZnJhZ21lbnRTdGFnZSB8fCBmcmFnbWVu
dFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3JpcHRv
ci0+dmVydGV4RW50cnlQb2ludE5hbWUgPSB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50OwotICAgICAg
ICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZnJhZ21l
bnRFbnRyeVBvaW50TmFtZSA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAg
YXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgqdmVydGV4U3RhZ2UubW9k
dWxlLT53aGxzbE1vZHVsZSgpLCBmcmFnbWVudFN0YWdlID8gZnJhZ21lbnRTdGFnZS0+bW9kdWxl
LT53aGxzbE1vZHVsZSgpIDogbnVsbHB0ciwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlm
ICghd2hsc2xDb21waWxlUmVzdWx0KSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0
ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjogIiwgd2hsc2xD
b21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotCi0gICAgICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAg
ICAgICAgaWYgKFdITFNMOjpkdW1wTWV0YWxDb21waWxlVGltZXMpCi0gICAgICAgICAgICBzdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIwMDQ3NCBBZGQgZGlyZWN0IFN0cmluZ0J1aWxkZXIgLT4gTlNTdHJpbmcg
Y29udmVyc2lvbiB0byBhdm9pZCBleHRyYSBjb3B5IGludG8gYSBXVEY6OlN0cmluZwotICAgICAg
ICB2ZXJ0ZXhMaWJyYXJ5ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGli
cmFyeVdpdGhTb3VyY2U6d2hsc2xDb21waWxlUmVzdWx0LT5tZXRhbFNvdXJjZS50b1N0cmluZygp
IG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRh
bENvbXBpbGVUaW1lcykKLSAgICAgICAgICAgIGRhdGFMb2dMbigiTWV0YWwgY29tcGlsZSB0aW1l
czogIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwg
IiBtcyIpOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYg
KCF2ZXJ0ZXhMaWJyYXJ5ICYmIGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5l
cmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7
Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgTlNMb2coQCIlQCIsIGVycm9yKTsKLSNlbmRp
ZgotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKHZlcnRleExpYnJhcnkpOwotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc3MSBP
bmNlIHdlIHplcm8tZmlsbCB2YXJpYWJsZXMsIHRoZXJlIHNob3VsZCBiZSBubyB3YXJuaW5ncywg
c28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKCFlcnJvcikgaGVyZS4KLQotICAgICAgICBm
cmFnbWVudExpYnJhcnkgPSB2ZXJ0ZXhMaWJyYXJ5OwotICAgICAgICB2ZXJ0ZXhFbnRyeVBvaW50
ID0gd2hsc2xDb21waWxlUmVzdWx0LT5tYW5nbGVkVmVydGV4RW50cnlQb2ludE5hbWUudG9TdHJp
bmcoKTsKLSAgICAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCi0gICAgICAgICAgICBmcmFnbWVudEVu
dHJ5UG9pbnQgPSB3aGxzbENvbXBpbGVSZXN1bHQtPm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnRO
YW1lLnRvU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmVydGV4TGlicmFyeSA9IHZl
cnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAgdmVydGV4
RW50cnlQb2ludCA9IHZlcnRleFN0YWdlLmVudHJ5UG9pbnQ7Ci0gICAgICAgIGlmIChmcmFnbWVu
dFN0YWdlKSB7Ci0gICAgICAgICAgICBmcmFnbWVudExpYnJhcnkgPSBmcmFnbWVudFN0YWdlLT5t
b2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0gICAgICAgICAgICBmcmFnbWVudEVudHJ5
UG9pbnQgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50OwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRyeVNldE1ldGFsRnVuY3Rpb25zKHZlcnRleExpYnJhcnkuZ2V0KCksIGZyYWdt
ZW50TGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgdmVydGV4RW50cnlQb2ludCwgZnJhZ21l
bnRFbnRyeVBvaW50LCBlcnJvclNjb3Blcyk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBSZXRhaW5Q
dHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhb
TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEi
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGlm
IHNoYWRlciBzb3VyY2UgaXMgaW4gV0hMU0wgb3IgTVNMLgotICAgIGNvbnN0IGF1dG8mIHZlcnRl
eFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZTsKLSAgICBjb25zdCBhdXRvJiBmcmFnbWVu
dFN0YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlOwotCi0gICAgaWYgKGZyYWdtZW50U3Rh
Z2UgJiYgc3RhdGljX2Nhc3Q8Ym9vbD4odmVydGV4U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgp
KSAhPSBzdGF0aWNfY2FzdDxib29sPihmcmFnbWVudFN0YWdlLT5tb2R1bGUtPndobHNsTW9kdWxl
KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhT
dGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7Ci0KLSAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1l
dGFsIHBpcGVsaW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIHN0
ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gd2hsc2xEZXNjcmlw
dG9yOwotICAgIGlmIChpc1dobHNsKQotICAgICAgICB3aGxzbERlc2NyaXB0b3IgPSBXSExTTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoIXRyeVNldFZlcnRleElucHV0
KGRlc2NyaXB0b3IudmVydGV4SW5wdXQsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3Jp
cHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICgh
dHJ5U2V0Q29sb3JTdGF0ZXMoZGVzY3JpcHRvci5jb2xvclN0YXRlcywgbXRsRGVzY3JpcHRvci5n
ZXQoKS5jb2xvckF0dGFjaG1lbnRzLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hs
c2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQo
KmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0
ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJvclNj
b3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVM
YXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghdHJ5U2V0RnVuY3Rpb25zKHZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBk
ZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwot
fQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNyZWF0ZU10
bFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAg
ZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBtdGxEZXNjcmlwdG9y
ID0gY29udmVydFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZpY2UsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIW10bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKLSAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVy
cm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5n
KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBwaXBlbGlu
ZTsKLX0KLQotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5
Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAg
ICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4g
ZGVwdGhTdGVuY2lsOwotCi0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsU3RhdGUgJiYg
IShkZXB0aFN0ZW5jaWwgPSB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSgqZGVzY3JpcHRv
ci5kZXB0aFN0ZW5jaWxTdGF0ZSwgZGV2aWNlLCBlcnJvclNjb3BlcykpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4Mzg3IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGlzbid0
IGltcGxlbWVudGVkIHlldCBmb3IgV0hMU0wgY29tcGlsZXIuCi0KLSAgICBhdXRvIHBpcGVsaW5l
ID0gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIXBpcGVsaW5lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0
aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9n
eSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5sYXlvdXQs
IGRlc2NyaXB0b3IpKTsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5l
KFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0
cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9n
eSB0b3BvbG9neSwgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gZm9ybWF0LCBjb25zdCBS
ZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvckJhc2UmIHJlbmRlckRlc2NyaXB0b3JCYXNlKQotICAgIDogR1BVUGlwZWxpbmUo
KQotICAgICwgbV9kZXB0aFN0ZW5jaWxTdGF0ZShXVEZNb3ZlKGRlcHRoU3RlbmNpbCkpCi0gICAg
LCBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCi0gICAgLCBtX3By
aW1pdGl2ZVRvcG9sb2d5KHRvcG9sb2d5KQotICAgICwgbV9pbmRleEZvcm1hdChmb3JtYXQpCi0g
ICAgLCBtX2xheW91dChsYXlvdXQpCi0gICAgLCBtX3JlbmRlckRlc2NyaXB0b3JCYXNlKHJlbmRl
ckRlc2NyaXB0b3JCYXNlKQotewotfQotCi1HUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBp
cGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUo
Y29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYm
IHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4mJiBmcmFnbWVudFN0YWdlKQotewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKG1ha2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKHZlcnRleFN0YWdl
KSwgV1RGTW92ZShmcmFnbWVudFN0YWdlKSwgbV9yZW5kZXJEZXNjcmlwdG9yQmFzZSk7Ci0gICAg
YXV0byBlcnJvclNjb3BlcyA9IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoW10gKEdQVUVycm9yJiYp
IHsgfSk7Ci0gICAgaWYgKGF1dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGlu
ZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBsZXJNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmOTczNTQ1YmRkNzhjNjhjZjI4MzA4
ZGJjNjAyZDAxNzZlMGRhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2Ft
cGxlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNhbXBsZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU2FtcGxlckRl
c2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTVRMU2FtcGxlckFkZHJlc3NNb2Rl
IG10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoR1BVQWRkcmVzc01vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZToK
LSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOwotICAgIGNh
c2UgR1BVQWRkcmVzc01vZGU6OlJlcGVhdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRy
ZXNzTW9kZVJlcGVhdDsKLSAgICBjYXNlIEdQVUFkZHJlc3NNb2RlOjpNaXJyb3JSZXBlYXQ6Ci0g
ICAgICAgIHJldHVybiBNVExTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBNVExTYW1wbGVyTWluTWFn
RmlsdGVyIG10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUoR1BVRmlsdGVyTW9kZSBtb2RlKQot
ewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVRmlsdGVyTW9kZTo6TmVhcmVzdDoK
LSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OwotICAgIGNhc2Ug
R1BVRmlsdGVyTW9kZTo6TGluZWFyOgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pbk1hZ0Zp
bHRlckxpbmVhcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3Rh
dGljIE1UTFNhbXBsZXJNaXBGaWx0ZXIgbXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShHUFVGaWx0
ZXJNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVGaWx0ZXJN
b2RlOjpOZWFyZXN0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pcEZpbHRlck5lYXJlc3Q7
Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBNVExTYW1w
bGVyTWlwRmlsdGVyTGluZWFyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1zdGF0aWMgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0ZT4gdHJ5Q3JlYXRlTXRsU2FtcGxl
clN0YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVE
ZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0
cjxNVExTYW1wbGVyRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExTYW1wbGVy
RGVzY3JpcHRvciBuZXddKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBp
ZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRy
eUNyZWF0ZSgpOiBFcnJvciBjcmVhdGluZyBNVExTYW1wbGVyRGVzY3JpcHRvciEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFNhbXBsZXJTdGF0
ZT4gc2FtcGxlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttdGxE
ZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTptdGxBZGRyZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRl
c2NyaXB0b3IuYWRkcmVzc01vZGVVKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U0FkZHJlc3NN
b2RlOm10bEFkZHJlc3NNb2RlRm9yQWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVYp
XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JB
ZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVyldOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldE1pbkZpbHRlcjptdGxNaW5NYWdGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2NyaXB0b3IubWlu
RmlsdGVyKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWFnRmlsdGVyOm10bE1pbk1hZ0ZpbHRl
ckZvckZpbHRlck1vZGUoZGVzY3JpcHRvci5tYWdGaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRv
ciBzZXRNaXBGaWx0ZXI6bXRsTWlwRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9yLm1pcG1h
cEZpbHRlcildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1pbkNsYW1wOmRlc2NyaXB0b3Iu
bG9kTWluQ2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldExvZE1heENsYW1wOmRlc2NyaXB0
b3IubG9kTWF4Q2xhbXBdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldE1heEFuaXNvdHJvcHk6ZGVz
Y3JpcHRvci5tYXhBbmlzb3Ryb3B5XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRDb21wYXJlRnVu
Y3Rpb246c3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1bmN0aW9uPihwbGF0Zm9ybUNvbXBhcmVGdW5j
dGlvbkZvckdQVUNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlvbikpXTsK
LQotICAgIFttdGxEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6WUVTXTsKLQot
ICAgIHNhbXBsZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdTYW1wbGVy
U3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpXSk7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFzYW1wbGVyKQotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBsZXJTdGF0
ZSEiKTsKLQotICAgIHJldHVybiBzYW1wbGVyOwotfQotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BV
U2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1w
bGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBhdXRvIHNhbXBsZXIgPSB0cnlDcmVh
dGVNdGxTYW1wbGVyU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yKTsKLSAgICBpZiAoIXNhbXBsZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVT
YW1wbGVyKFdURk1vdmUoc2FtcGxlcikpKTsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihS
ZXRhaW5QdHI8TVRMU2FtcGxlclN0YXRlPiYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2Ft
cGxlcihXVEZNb3ZlKHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFs
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY0NGMzNWIwYjAwOWQxZDlmNjEw
OTFhM2ZmYmY3ZmQ2M2I5MGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVT
aGFkZXJNb2R1bGVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSwgY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChHUFVEZXZpY2U6
OnVzZVdITFNMKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShX
SExTTDo6Y3JlYXRlU2hhZGVyTW9kdWxlKGRlc2NyaXB0b3IuY29kZSkpKTsKLQotICAgIFBsYXRm
b3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgbW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtb2R1
bGUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJj
ZTpkZXNjcmlwdG9yLmNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFt
b2R1bGUpCi0gICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJyb3I6ICVz
IiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIG1vZHVsZSA/IGFkb3B0UmVmKG5l
dyBHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSkgOiBudWxscHRyOwotfQotCi1HUFVT
aGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRy
JiYgbW9kdWxlKQotICAgIDogbV9wbGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkp
Ci17Ci19Ci0KLUdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFVuaXF1ZVJlZjxXSExT
TDo6U2hhZGVyTW9kdWxlPiYmIHdobHNsTW9kdWxlKQotICAgIDogbV93aGxzbE1vZHVsZSh3aGxz
bE1vZHVsZS5tb3ZlVG9VbmlxdWVQdHIoKSkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzZjYzg5MzUzMjBhMDQ5MmQyZmNkNTM0OTNhNjJhMDJjNDAxOWZjOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1w
b3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNp
bXBvcnQgIkdQVVRleHR1cmVGb3JtYXQuaCIKLSNpbXBvcnQgIkdQVVV0aWxzLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gdHJ5R2V0U3VwcG9ydGVkUGl4ZWxGb3JtYXQoR1BV
VGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgYXV0byBtdGxGb3JtYXQgPSBzdGF0aWNfY2Fz
dDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1h
dChmb3JtYXQpKTsKLQotICAgIHN3aXRjaCAobXRsRm9ybWF0KSB7Ci0gICAgY2FzZSBNVExQaXhl
bEZvcm1hdEJHUkE4VW5vcm06Ci0gICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JH
QjoKLSAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBt
dGxGb3JtYXQ7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENo
YWluOjp0cnlDcmVhdGUoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc2V0
TGF5ZXJTaGFwZShXZWJHUFVMYXllciAqbGF5ZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsK
LSAgICBbbGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOwot
ICAgIFtsYXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8V2ViR1BVTGF5ZXI+IHRyeUNyZWF0ZVdlYkdQVUxheWVyKE1U
TERldmljZSAqZGV2aWNlLCBNVExQaXhlbEZvcm1hdCBmb3JtYXQsIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLXsKLQotICAgIFJldGFpblB0cjxXZWJHUFVMYXllcj4g
bGF5ZXI7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFk
b3B0TlMoW1dlYkdQVUxheWVyIG5ld10pOwotCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWIgR1BV
IExheWVyIl07Ci0gICAgW2xheWVyIHNldE9wYXF1ZTowXTsKLQotICAgIFtsYXllciBzZXREZXZp
Y2U6ZGV2aWNlXTsKLSAgICBbbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5Oih1c2FnZSA9PSBHUFVU
ZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KV07Ci0gICAgW2xheWVyIHNldFBp
eGVsRm9ybWF0OmZvcm1hdF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
aWYgKCFsYXllcikKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRl
KCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOwotCi0gICAgcmV0dXJuIGxheWVy
OwotfQotCi1SZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZShjb25z
dCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCi17Ci0gICAgaWYgKCFkZXNjcmlwdG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogSW52YWxpZCBH
UFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
cGl4ZWxGb3JtYXQgPSB0cnlHZXRTdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1h
dCk7Ci0gICAgaWYgKCFwaXhlbEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBhdXRvIHVzYWdlT3B0aW9ucyA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6
ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXVzYWdlT3B0aW9ucy5jb250YWlu
cyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjp0cnlDcmVhdGUoKTogU3dhcCBjaGFpbiB1c2FnZSBt
dXN0IGluY2x1ZGUgT1VUUFVUX0FUVEFDSE1FTlQhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIGF1dG8gbGF5ZXIgPSB0cnlDcmVhdGVXZWJHUFVMYXllcihkZXNjcmlw
dG9yLmRldmljZS0+cGxhdGZvcm1EZXZpY2UoKSwgKnBpeGVsRm9ybWF0LCB1c2FnZU9wdGlvbnMp
OwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc2V0TGF5
ZXJTaGFwZShsYXllci5nZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhdXRvIHN3YXBDaGFp
biA9IGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShsYXllciksIHVzYWdlT3B0aW9u
cykpOwotICAgIGRlc2NyaXB0b3IuZGV2aWNlLT5zZXRTd2FwQ2hhaW4oc3dhcENoYWluLmNvcHlS
ZWYoKSk7Ci0gICAgcmV0dXJuIHN3YXBDaGFpbjsKLX0KLQotR1BVU3dhcENoYWluOjpHUFVTd2Fw
Q2hhaW4oUmV0YWluUHRyPFdlYkdQVUxheWVyPiYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRmb3JtU3dh
cExheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdlT3B0aW9u
cykKLXsKLSAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRTd2FwQ2hhaW46dGhpc107Ci19Ci0K
LVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkK
LXsKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAg
IG1fY3VycmVudERyYXdhYmxlID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVyIG5leHRE
cmF3YWJsZV0pOwotICAgIG10bFRleHR1cmUgPSBbbV9jdXJyZW50RHJhd2FibGUgdGV4dHVyZV07
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bFRleHR1cmUp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmUo
KTogVW5hYmxlIHRvIGdldCBjdXJyZW50IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSht
dGxUZXh0dXJlKSwgbV91c2FnZSk7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkK
LXsKLSAgICBpZiAoIW1fY3VycmVudERyYXdhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBb
bV9jdXJyZW50RHJhd2FibGUgcHJlc2VudF07Ci0gICAgbV9jdXJyZW50RHJhd2FibGUgPSBudWxs
cHRyOwotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWln
aHQpCi17Ci0gICAgc2V0TGF5ZXJTaGFwZShtX3BsYXRmb3JtU3dhcExheWVyLmdldCgpLCB3aWR0
aCwgaGVpZ2h0KTsKLX0KLQotUGxhdGZvcm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsKLX0K
LQotI2lmIFVTRShNRVRBTCkKLVJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IEdQVVN3YXBDaGFp
bjo6dGFrZURyYXdhYmxlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0FNZXRhbERyYXdhYmxlPiBwdHI7
Ci0gICAgcHRyLnN3YXAobV9jdXJyZW50RHJhd2FibGUpOwotICAgIHJldHVybiBwdHI7Ci19Ci0j
ZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkODIwMGViYjA1OTM0NTNjZGM4NWE2YzcwMjljNTMxYWE2YzBiZTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
R1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNl
LmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBNVExUZXh0dXJlVHlwZSBtdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9y
KGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHN3aXRjaCAo
ZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8x
ZDoKLSAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID09IDEpID8gTVRMVGV4
dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKLSAgICBjYXNlIEdQVVRleHR1cmVE
aW1lbnNpb246Ol8yZDogewotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoID09IDEp
Ci0gICAgICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkgPyBNVExU
ZXh0dXJlVHlwZTJEIDogTVRMVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlOwotICAgICAgICByZXR1
cm4gTVRMVGV4dHVyZVR5cGUyREFycmF5OyAvLyBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVB
cnJheSBpcyB1bmF2YWlsYWJsZSBvbiBpT1MuCi0gICAgfQotICAgIGNhc2UgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzNkOgotICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKLSAgICB9Ci19
Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdl
Rm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+
IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FC
TEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGlmIChm
bGFncy5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4dHVyZVVz
YWdlOjpGbGFnczo6U3RvcmFnZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJl
IGNhbm5vdCBoYXZlIGJvdGggU1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwgZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBNVExU
ZXh0dXJlVXNhZ2UgcmVzdWx0ID0gMDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNobWVudCkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExU
ZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BV
VGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2Ft
cGxlZCB9KSkKLSAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQ7Ci0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKQot
ICAgICAgICByZXN1bHQgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGU7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykKLXN0YXRpYyBNVExTdG9yYWdlTW9k
ZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxGb3JtYXQg
Zm9ybWF0LCB1bnNpZ25lZCBzYW1wbGVzKQotewotICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0
aFN0ZW5jaWwsIGFuZCBNdWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRo
IHRoZSBNVExTdG9yYWdlTW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgotICAgIGlmIChmb3Jt
YXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEp
Ci0gICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0KLSAgICByZXR1cm4gTVRM
U3RvcmFnZU1vZGVTaGFyZWQ7Ci19Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxNVExUZXh0
dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotICAgIFJldGFp
blB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFRl
eHR1cmVEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5h
YmxlIHRvIGNyZWF0ZSBuZXcgTVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2lkdGggPSBk
ZXNjcmlwdG9yLnNpemUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1bnNp
Z25lZCBkZXB0aCA9IDE7Ci0gICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSAxOwotICAgIHN3aXRj
aCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246
Ol8xZDoKLSAgICAgICAgYXJyYXlMZW5ndGggPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAg
aGVpZ2h0ID0gZGVzY3JpcHRvci5zaXplLmhlaWdodDsKLSAgICAgICAgYXJyYXlMZW5ndGggPSBk
ZXNjcmlwdG9yLnNpemUuZGVwdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0
OwotICAgICAgICBkZXB0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgYXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9y
bWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3Iu
Zm9ybWF0KSk7Ci0KLSAgICBhdXRvIG10bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4
dHVyZVVzYWdlRmxhZ3ModXNhZ2UsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgaWYgKCFtdGxVc2FnZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBz
dG9yYWdlTW9kZSA9IE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZTsKLSNlbHNlCi0gICAgYXV0byBzdG9y
YWdlTW9kZSA9IHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChwaXhlbEZv
cm1hdCwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0V2lkdGg6d2lkdGhdOwot
ICAgIFttdGxEZXNjcmlwdG9yIHNldEhlaWdodDpoZWlnaHRdOwotICAgIFttdGxEZXNjcmlwdG9y
IHNldERlcHRoOmRlcHRoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRBcnJheUxlbmd0aDphcnJh
eUxlbmd0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWlwbWFwTGV2ZWxDb3VudDpkZXNjcmlw
dG9yLm1pcExldmVsQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFNhbXBsZUNvdW50OmRl
c2NyaXB0b3Iuc2FtcGxlQ291bnRdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBl
Om10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcildOwotICAg
IFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnBpeGVsRm9ybWF0XTsKLSAgICBbbXRsRGVz
Y3JpcHRvciBzZXRVc2FnZToqbXRsVXNhZ2VdOwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0U3Rv
cmFnZU1vZGU6c3RvcmFnZU1vZGVdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
Ci0gICAgcmV0dXJuIG10bERlc2NyaXB0b3I7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVU
ZXh0dXJlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNy
ZWF0ZSgpIjsKLQotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIVtkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKSBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50
XSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmlu
ZygiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgIiwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCwgIiBz
YW1wbGUgY291bnQuIikpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGF1dG8g
dXNhZ2UgPSBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3Jp
cHRvci51c2FnZSk7Ci0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVy
ZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBkZXNjcmlwdG9yLCB1c2FnZSk7Ci0gICAgaWYgKCFt
dGxEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxN
VExUZXh0dXJlPiBtdGxUZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3
VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsVGV4dHVyZSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEdQVVRleHR1cmUoV1RGTW92ZShtdGxUZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQotUmVm
PEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4mJiB0
ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkp
OwotfQotCi1HUFVUZXh0dXJlOjpHUFVUZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJlPiYmIHRl
eHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKLSAgICA6IG1f
cGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3VzYWdlKHVzYWdlKQot
ewotICAgIG1fcGxhdGZvcm1Vc2FnZSA9IE1UTFJlc291cmNlVXNhZ2VSZWFkOwotICAgIGlmIChp
c1NhbXBsZWQoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNlVXNhZ2VT
YW1wbGU7Ci0gICAgZWxzZSBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAgIG1fcGxhdGZvcm1Vc2Fn
ZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVU
ZXh0dXJlOjp0cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQotewotICAgIFJldGFpblB0cjxN
VExUZXh0dXJlPiB0ZXh0dXJlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICB0ZXh0dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdX
aXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghdGV4dHVyZSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4
dHVyZSksIG1fdXNhZ2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODMwODlmNGE0YzZiMjgzNGE5YWU2ZmFkNDA3NTcxNmFlNWRjNzA5Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVVV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsYXRmb3JtVGV4dHVyZUZvcm1h
dCBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3Jt
YXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVUZXh0dXJl
Rm9ybWF0OjpSZ2JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVu
b3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1aW50OgotICAgICAgICByZXR1
cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpC
Z3JhOHVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwotICAg
IGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJl
dHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICBjYXNlIEdQVVRl
eHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3Jt
YXRCR1JBOFVub3JtX3NSR0I7Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9h
dDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQ7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBs
YXRmb3JtQ29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5j
dGlvbiBmdW5jKQotewotICAgIHN3aXRjaCAoZnVuYykgewotICAgIGNhc2UgR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbk5ldmVyOwot
ICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOgotICAgICAgICByZXR1cm4gTVRMQ29t
cGFyZUZ1bmN0aW9uTGVzczsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw6Ci0g
ICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25FcXVhbDsKLSAgICBjYXNlIEdQVUNvbXBh
cmVGdW5jdGlvbjo6TGVzc0VxdWFsOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9u
TGVzc0VxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOgotICAgICAg
ICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlcjsKLSAgICBjYXNlIEdQVUNvbXBhcmVG
dW5jdGlvbjo6Tm90RXF1YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25Ob3RF
cXVhbDsKLSAgICBjYXNlIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOgotICAgICAg
ICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFsOwotICAgIGNhc2UgR1BVQ29t
cGFyZUZ1bmN0aW9uOjpBbHdheXM6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25B
bHdheXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBBbGxv
Y2F0b3JEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXdu
L0dQVUJpbmRHcm91cEFsbG9jYXRvckRhd24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3ZDZkNThkMzViMTUxN2I3YmViN2VlMTdkZjlhYTk2ZDBiMWIxNzRhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91cEFsbG9jYXRvckRhd24uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6
OmNyZWF0ZShHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdQVUJpbmRHcm91cEFsbG9jYXRvcihlcnJvcnMpKTsKLX0KLQotR1BVQmluZEdyb3VwQWxs
b2NhdG9yOjpHUFVCaW5kR3JvdXBBbGxvY2F0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9ycykKLSAg
ICA6IG1fZXJyb3JTY29wZXMobWFrZVJlZihlcnJvcnMpKQotewotfQotCi1ib29sIEdQVUJpbmRH
cm91cEFsbG9jYXRvcjo6cmVhbGxvY2F0ZShQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldCBuZXdPZmZz
ZXQpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEdQVUJpbmRHcm91cEFsbG9jYXRv
cjo6dHJ5UmVzZXQoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2Rhd24vR1BVQmluZEdyb3VwRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjA1ZTZiY2RjMTdmOWRlZmU4NjcxNzJhNDg2MzA1ZDhhOGIyYWMx
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JT
Y29wZXMuaCIKLSNpbmNsdWRlIDx3ZWJncHUvd2ViZ3B1Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmUHRyPEdQVUJpbmRHcm91cD4gR1BVQmluZEdyb3VwOjp0cnlDcmVhdGUoY29uc3Qg
R1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQmluZEdyb3VwQWxsb2NhdG9y
JiBhbGxvY2F0b3IpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdQVUJpbmRHcm91cDo6
R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRz
JiYgb2Zmc2V0cywgR1BVQmluZEdyb3VwQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEhhc2hTZXQ8UmVm
PEdQVUJ1ZmZlcj4+JiYgYnVmZmVycywgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiYgdGV4dHVy
ZXMpCi0gICAgOiBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyhXVEZNb3ZlKG9mZnNldHMpKQotICAg
ICwgbV9hbGxvY2F0b3IobWFrZVJlZihhbGxvY2F0b3IpKQotICAgICwgbV9ib3VuZEJ1ZmZlcnMo
V1RGTW92ZShidWZmZXJzKSkKLSAgICAsIG1fYm91bmRUZXh0dXJlcyhXVEZNb3ZlKHRleHR1cmVz
KSkKLXsKLX0KLQotR1BVQmluZEdyb3VwOjp+R1BVQmluZEdyb3VwKCkKLXsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91cExh
eW91dERhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24v
R1BVQmluZEdyb3VwTGF5b3V0RGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEyZWNjZTRlNzM2MWVjMjY3OWY4YWY2NGQ1NTc0ZTQ2NzUyODEyZmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2Rhd24vR1BVQmluZEdyb3VwTGF5b3V0RGF3bi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgPHdlYmdwdS93ZWJncHUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBM
YXlvdXQ6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQ
VUJ1ZmZlckRhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVQnVmZmVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiODgy
YTIyOTFmZGFlNDgxMTBhZTRhZTc4MDZjZjgzNmFjZGY3NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2Rhd24vR1BVQnVmZmVyRGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BV
QnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUJ1
ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1
ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBl
ZCwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1HUFVCdWZmZXI6OkdQVUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVy
LCBHUFVEZXZpY2UmIGRldmljZSwgc2l6ZV90IHNpemUsIE9wdGlvblNldDxHUFVCdWZmZXJVc2Fn
ZTo6RmxhZ3M+IHVzYWdlLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24gaXNNYXBwZWQpCi0gICAgOiBt
X3BsYXRmb3JtQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAsIG1fZGV2aWNlKG1ha2VSZWYo
ZGV2aWNlKSkKLSAgICAsIG1fYnl0ZUxlbmd0aChzaXplKQotICAgICwgbV91c2FnZSh1c2FnZSkK
LSAgICAsIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24oaXNNYXBwZWQgPT0gR1BVQnVmZmVyTWFwcGVk
T3B0aW9uOjpJc01hcHBlZCkKLXsKLX0KLQotR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkKLXsKLSAg
ICBkZXN0cm95KG51bGxwdHIpOwotfQotCi1ib29sIEdQVUJ1ZmZlcjo6aXNSZWFkT25seSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUdQVUJ1ZmZlcjo6U3RhdGUgR1BVQnVmZmVy
OjpzdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlND
OjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjptYXBPbkNyZWF0aW9uKCkKLXsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotdm9pZCBHUFVCdWZmZXI6OnJlZ2lzdGVyTWFwcGluZ0NhbGxiYWNrKE1h
cHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29sIGlzUmVhZCwgR1BVRXJyb3JTY29wZXMmIGVy
cm9yU2NvcGVzKQotewotfQotCi12b2lkIEdQVUJ1ZmZlcjo6cnVuTWFwcGluZ0NhbGxiYWNrKCkK
LXsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yUmVh
ZCgpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1
ZmZlcjo6c3RhZ2luZ0J1ZmZlckZvcldyaXRlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotdm9pZCBHUFVCdWZmZXI6OmNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoR1BVRXJyb3JTY29wZXMq
IGVycm9yU2NvcGVzKQotewotfQotCi12b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JTY29w
ZXMqIGVycm9yU2NvcGVzKQotewotfQotCi12b2lkIEdQVUJ1ZmZlcjo6ZGVzdHJveShHUFVFcnJv
clNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21tYW5kQnVmZmVyRGF3bi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21tYW5kQnVmZmVyRGF3bi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTYxMzhmMGQzOTIxNDRiODU2YmE2
MWZlZDNjYzA1NjU0YmY4NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29t
bWFuZEJ1ZmZlckRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVDb21tYW5k
QnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYg
YnVmZmVyKQotICAgIDogbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQot
ewotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BV
QnVmZmVyPiYmIHNyYywgdWludDY0X3Qgc3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmIGRzdCwg
dWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKQotewotfQotCi12b2lkIEdQVUNvbW1h
bmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoR1BVQnVmZmVyQ29weVZpZXcmJiBzcmNCdWZm
ZXIsIEdQVVRleHR1cmVDb3B5VmlldyYmIGRzdFRleHR1cmUsIGNvbnN0IEdQVUV4dGVudDNEJiBz
aXplKQotewotfQotCi12b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIo
R1BVVGV4dHVyZUNvcHlWaWV3JiYgc3JjVGV4dHVyZSwgR1BVQnVmZmVyQ29weVZpZXcmJiBkc3RC
dWZmZXIsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQotewotfQotCi12b2lkIEdQVUNvbW1hbmRC
dWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyYywgR1BV
VGV4dHVyZUNvcHlWaWV3JiYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbXB1
dGVQYXNzRW5jb2RlckRhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMxZDgyYmNkY2E4N2YzZDg0ZmMwMDA0N2E3MmZmNmIwY2QwMjk0MDcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcj4gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjp0cnlDcmVhdGUoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVD
b21wdXRlUGFzc0VuY29kZXI6OkdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1
ZmZlcj4mJiBidWZmZXIsIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHImJiBlbmNv
ZGVyKQotICAgIDogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpKQot
ICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotewot
fQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQ
VUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSkKLXsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFz
c0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopCi17
Ci19Ci0KLWNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIEdQVUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVDb21wdXRlUGlwZWxpbmVEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbXB1dGVQaXBlbGluZURhd24uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYWI5ZWM2Mzc0OTcyYjBjM2EzNmI5ZjAyNWMxYmU5YWFlNGVl
ZmQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbXB1dGVQaXBlbGluZURh
d24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVDb21wdXRl
UGlwZWxpbmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9y
U2NvcGVzKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVDb21wdXRlUGlwZWxpbmU6
On5HUFVDb21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgR1BVQ29tcHV0ZVBpcGVs
aW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciYmIGNvbXB1dGVTdGFnZSkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZp
Y2VEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQ
VURldmljZURhd24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWQzMjg3ODBh
ZTU5ZGJmNTQyYTg0MWFhM2VkZjQzZjEzZWJhNDViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9kYXduL0dQVURldmljZURhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNl
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0
cjxHUFVEZXZpY2U+IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucykKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LX0KLQotdm9pZCBHUFVEZXZpY2U6OnByZXdhcm0oKQotewotfQotCi1HUFVEZXZpY2U6OkdQVURl
dmljZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybURl
dmljZShXVEZNb3ZlKGRldmljZSkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQbGF0Zm9ybVR5cGVzRGF3bi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUGxhdGZvcm1UeXBlc0Rhd24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVhOTliNDU4YjI5OTViMDlkYjE4MTlkZmE4
ZDhmOWY3YmY1OGI5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQbGF0Zm9y
bVR5cGVzRGF3bi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d2ViZ3B1
L3dlYmdwdS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIFBsYXRmb3JtR1BVQnVm
ZmVyT2Zmc2V0ID0gc3RkOjp1aW50NjRfdDsKLQotLy8gRGF3biB0eXBlcwotdXNpbmcgUGxhdGZv
cm1CdWZmZXIgPSBXR1BVQnVmZmVySW1wbDsKLXVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciA9
IFdHUFVDb21tYW5kQnVmZmVySW1wbDsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVy
ID0gV0dQVUNvbXB1dGVQYXNzRW5jb2RlckltcGw7Ci11c2luZyBQbGF0Zm9ybUNvbXB1dGVQaXBl
bGluZSA9IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsOwotdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBX
R1BVRGV2aWNlSW1wbDsKLXVzaW5nIFBsYXRmb3JtRHJhd2FibGUgPSBXR1BVU3VyZmFjZUltcGw7
Ci11c2luZyBQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyID0gV0dQVUNvbW1hbmRFbmNv
ZGVySW1wbDsKLXVzaW5nIFBsYXRmb3JtUXVldWUgPSBXR1BVUXVldWVJbXBsOwotdXNpbmcgUGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlciA9IFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGw7Ci11c2lu
ZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gV0dQVVJlbmRlclBpcGVsaW5lSW1wbDsKLXVzaW5n
IFBsYXRmb3JtU2FtcGxlciA9IFdHUFVTYW1wbGVySW1wbDsKLXVzaW5nIFBsYXRmb3JtU2hhZGVy
TW9kdWxlID0gV0dQVVNoYWRlck1vZHVsZUltcGw7Ci11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9
IFdHUFVTd2FwQ2hhaW5JbXBsOwotdXNpbmcgUGxhdGZvcm1UZXh0dXJlID0gV0dQVVRleHR1cmVJ
bXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEhhbmRsZURlbGV0ZXIgewotcHVi
bGljOgotICAgIHZvaWQgb3BlcmF0b3IoKShUKiBoYW5kbGUpID0gZGVsZXRlOwotfTsKLQotdGVt
cGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1CdWZmZXI+IHsKLSAgICB2b2lk
IG9wZXJhdG9yKCkoUGxhdGZvcm1CdWZmZXIqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmICho
YW5kbGUpCi0gICAgICAgICAgICB3Z3B1QnVmZmVyRGVzdHJveShoYW5kbGUpOwotICAgIH0KLX07
Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtQ29tbWFuZEJ1ZmZl
cj4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybUNvbW1hbmRCdWZmZXIqIGhhbmRsZSkK
LSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1Q29tbWFuZEJ1ZmZl
clJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxl
RGVsZXRlcjxQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcj4gewotICAgIHZvaWQgb3BlcmF0b3Io
KShQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYg
KGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJSZWxlYXNlKGhhbmRs
ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZv
cm1Db21wdXRlUGlwZWxpbmU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1Db21wdXRl
UGlwZWxpbmUqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAg
ICB3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBs
YXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtRGV2aWNlPiB7Ci0gICAgdm9pZCBv
cGVyYXRvcigpKFBsYXRmb3JtRGV2aWNlKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFu
ZGxlKQotICAgICAgICAgICAgd2dwdURldmljZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19Owot
Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybURyYXdhYmxlPiB7Ci0g
ICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtRHJhd2FibGUqIGhhbmRsZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1U3VyZmFjZVJlbGVhc2UoaGFuZGxlKTsK
LSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYW5kbGUp
Ci0gICAgICAgICAgICB3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQot
fTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1RdWV1ZT4gewot
ICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybVF1ZXVlKiBoYW5kbGUpCi0gICAgewotICAgICAg
ICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dwdVF1ZXVlUmVsZWFzZShoYW5kbGUpOwotICAg
IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXI+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2RlciogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdn
cHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVJlbmRlclBpcGVsaW5lPiB7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUqIGhhbmRsZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNl
KGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8
UGxhdGZvcm1TYW1wbGVyPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtU2FtcGxlciog
aGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVTYW1w
bGVyUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5k
bGVEZWxldGVyPFBsYXRmb3JtU2hhZGVyTW9kdWxlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBs
YXRmb3JtU2hhZGVyTW9kdWxlKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQot
ICAgICAgICAgICAgd2dwdVNoYWRlck1vZHVsZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19Owot
Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVN3YXBMYXllcj4gewot
ICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybVN3YXBMYXllciogaGFuZGxlKQotICAgIHsKLSAg
ICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVTd2FwQ2hhaW5SZWxlYXNlKGhhbmRs
ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZv
cm1UZXh0dXJlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtVGV4dHVyZSogaGFuZGxl
KQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVUZXh0dXJlUmVs
ZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXVzaW5nIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIg
PSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1CdWZmZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1C
dWZmZXI+PjsKLXVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybUNvbW1h
bmRCdWZmZXI+PjsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIgPSBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIsIEhhbmRsZURlbGV0ZXI8
UGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXI+PjsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBpcGVs
aW5lU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmUsIEhh
bmRsZURlbGV0ZXI8UGxhdGZvcm1Db21wdXRlUGlwZWxpbmU+PjsKLXVzaW5nIFBsYXRmb3JtRGV2
aWNlU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EZXZpY2UsIEhhbmRsZURlbGV0
ZXI8UGxhdGZvcm1EZXZpY2U+PjsKLXVzaW5nIFBsYXRmb3JtRHJhd2FibGVTbWFydFB0ciA9IHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURyYXdhYmxlLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtRHJh
d2FibGU+PjsKLXVzaW5nIFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJTbWFydFB0ciA9
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLCBIYW5kbGVE
ZWxldGVyPFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+PjsKLXVzaW5nIFBsYXRmb3Jt
UXVldWVTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVF1ZXVlLCBIYW5kbGVEZWxl
dGVyPFBsYXRmb3JtUXVldWU+PjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFy
dFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyLCBIYW5kbGVE
ZWxldGVyPFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI+PjsKLXVzaW5nIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmVTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
LCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUmVuZGVyUGlwZWxpbmU+PjsKLXVzaW5nIFBsYXRmb3Jt
U2FtcGxlclNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtU2FtcGxlciwgSGFuZGxl
RGVsZXRlcjxQbGF0Zm9ybVNhbXBsZXI+PjsKLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21h
cnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1TaGFkZXJNb2R1bGUsIEhhbmRsZURlbGV0
ZXI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+PjsKLXVzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQ
dHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Td2FwTGF5ZXIsIEhhbmRsZURlbGV0ZXI8UGxh
dGZvcm1Td2FwTGF5ZXI+PjsKLXVzaW5nIFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyID0gc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGV4dHVyZSwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVRleHR1cmU+
PjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJEYXdu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM0ZTQ4ZjdiMDI1NTRjY2FiMjQ2NDJlNGNlOWE0ODVjMWQyNTNiZjAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2Rhd24vR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJEYXduLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQotewotfQotCi12b2lkIEdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQgaW5kZXgsIEdQVUJpbmRHcm91cCYgYmlu
ZEdyb3VwKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVUXVldWVEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9kYXduL0dQVVF1ZXVlRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkxZjZjODAzZDllN2IzNWYzNjNkNmM3ZDA0MmQ4ZDY0MzI0MWM2YjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUXVldWVEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkdQVVF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2
aWNlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmUHRyPEdQVVF1ZXVlPiBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVRdWV1ZTo6R1BV
UXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyJiYgcXVldWUsIGNvbnN0IEdQVURldmljZSYgZGV2
aWNlKQotICAgIDogbV9wbGF0Zm9ybVF1ZXVlKFdURk1vdmUocXVldWUpKQotICAgICwgbV9kZXZp
Y2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKLXsKLX0KLQotdm9pZCBHUFVRdWV1ZTo6c3VibWl0KFZl
Y3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZEJ1ZmZlcnMpCi17Ci19Ci0KLVN0
cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBjb25zdAotewotICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwotfQotCi12b2lkIEdQVVF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25z
dAotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVUmVuZGVyUGFzc0VuY29kZXJEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9kYXduL0dQVVJlbmRlclBhc3NFbmNvZGVyRGF3bi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZDliNmQ1ZTI0M2FlOGJkMTM2Y2E3OGMyYmI0ZjBkODcy
MTI3ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGFzc0VuY29k
ZXJEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0ZShSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRC
dWZmZXIsIFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciYmIGVuY29kZXIpCi0gICAg
OiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotICAg
ICwgbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17Ci19Ci0K
LWNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoUmVmPGNvbnN0IEdQ
VVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLX0KLQotdm9p
ZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQot
ewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCh1bnNpZ25l
ZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotfQot
Ci12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihHUFVCdWZmZXImIGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0KQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1
ZmZlcj4+JiBidWZmZXJzLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKQotewotfQot
Ci12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1
bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmly
c3RJbnN0YW5jZSkKLXsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4
ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQg
Zmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFuY2UpCi17Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVS
ZW5kZXJQaXBlbGluZURhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVUmVuZGVyUGlwZWxpbmVEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzUyZmUxZWMwNGZhMWNmOTVmNzMxNjhiNGE5ZTVkZjgzMDU5NGQ2YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBH
UFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25z
dCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVUmVuZGVyUGlw
ZWxpbmU6On5HUFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVSZW5kZXJQ
aXBlbGluZTo6cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3
bi9HUFVTYW1wbGVyRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvZGF3bi9HUFVTYW1wbGVyRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEzYzlkMGFlZmE0MTM5MzM3MWE5OWE0OTBiYmQzZTJkZjNjNDI3NmMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2Rhd24vR1BVU2FtcGxlckRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVU2FtcGxlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWZQdHI8R1BVU2FtcGxlcj4gR1BVU2FtcGxlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
LXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVU2FtcGxlcjo6R1BVU2FtcGxlcihQbGF0
Zm9ybVNhbXBsZXJTbWFydFB0ciYmIHNhbXBsZXIpCi0gICAgOiBtX3BsYXRmb3JtU2FtcGxlcihX
VEZNb3ZlKHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2Rhd24vR1BVU2hhZGVyTW9kdWxlRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXduLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlhNTM0YWQ1YWEwOWYzYWY0M2ZjNTE0MjU1NTcy
NGNjOWI4ZDcxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1
bGVEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU2hh
ZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUo
UGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciYmIG1vZHVsZSkKLSAgICA6IG1fcGxhdGZvcm1T
aGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVU3dhcENoYWluRGF3bi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTd2FwQ2hhaW5EYXduLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE1YTc2ZTA3MDY3MWYyZTQxZGIxYTcz
NjJkNTNmYzU0ZWFhM2I5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTd2Fw
Q2hhaW5EYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU3dh
cENoYWluPiBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLUdQVVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHImJiBwbGF0Zm9ybUxheWVyLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFn
cz4gdXNhZ2VPcHRpb25zKQotICAgIDogbV9wbGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRm
b3JtTGF5ZXIpKQotICAgICwgbV91c2FnZSh1c2FnZU9wdGlvbnMpCi17Ci19Ci0KLVJlZlB0cjxH
UFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKCkKLXsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQotewotICAg
IGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAgIHJldHVybjsKLX0KLQotdm9pZCBHUFVT
d2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotCi19Ci0KLVBsYXRm
b3JtTGF5ZXIqIEdQVVN3YXBDaGFpbjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVUZXh0dXJlRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvZGF3bi9HUFVUZXh0dXJlRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJiNDZkMjQxNzNiNTUxM2Y4NWEwMjk4ZWE4MTVlZmZhOWRlMWJiZjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVVGV4dHVyZURhd24uY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi1SZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFBsYXRmb3JtVGV4
dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+
IHVzYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92ZSh0
ZXh0dXJlKSwgdXNhZ2UpKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVyZShQbGF0Zm9ybVRl
eHR1cmVTbWFydFB0ciYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
PiB1c2FnZSkKLSAgICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAg
LCBtX3VzYWdlKHVzYWdlKQotewotfQotCi1SZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6
dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IDM2MTYwMmU1
N2IyNGZiMTZjYmUyYTdhOTlmNmU1YzgwYTMzOWZhYjcuLmNlOGM3ZDQ4MTc5MGE4YTY1ZGViMWZh
YmI1YjAxMTVhMzYzN2M4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJ
bWFnZUlPUy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQg
Ikdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNh
cHR1cmVyTWFjLm1tCmluZGV4IDEyOTNkYTU1OWY5MjlhN2FlZWM1NGQwN2FhOWFlNGY5OTRmOTVi
NDQuLmYwMmNlOGZkZjBmMGM1OGY0MDcwZDRiNGI3ODFlZGI1ZjFlYzIxZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2Fw
dHVyZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpbXBvcnQgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNmQx
YmU2MTNhMTI5NGI1YWYyOTE4ZDYxNjkwZmNjN2ZlMjFkYjQyMi4uY2U3NjlmODVkNjFhOTRhNDhh
MmQ3MjhkNzEwMDlmYzE4ZmU5MDZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21w
b3NpdGluZ0FuY2VzCiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdHMoKTsKICAgICB9CiAjZW5k
aWYKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTKQorI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMp
CiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5n
U3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAg
IGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9
IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQpAQCAtMjg4NSw3ICsyODg1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2VkKENvbnRlbnRDaGFuZ2VUeXBlIGNoYW5n
ZVR5cGUpCiAgICAgaWYgKChjaGFuZ2VUeXBlID09IE1hc2tJbWFnZUNoYW5nZWQpICYmIG1fbWFz
a0xheWVyKQogICAgICAgICBtX293bmluZ0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1
cmF0aW9uVXBkYXRlKCk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCiAgICAgaWYgKChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQgfHwg
Y2hhbmdlVHlwZSA9PSBDYW52YXNQaXhlbHNDaGFuZ2VkKSAmJiByZW5kZXJlcigpLmlzQ2FudmFz
KCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xh
eWVyQ29udGVudHMpIHsKICAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT0gQ2FudmFzQ2hhbmdlZCkK
ICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9WZXJzaW9ucy9JbnNwZWN0b3It
aU9TLTE0LjAuanNvbiBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9WZXJzaW9ucy9JbnNwZWN0b3It
aU9TLTE0LjAuanNvbgppbmRleCA5ZWY2MTY4ZjE0YTExNjU1NGIxMzc2ZjBlOTAwODI3YTNmYTQz
ZjcxLi42NTk4Y2NlYjcyYjg5MzI1ZDE4NTZhZGJlYWFlMWUxZmEwZjRkOGFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVmVyc2lvbnMvSW5zcGVjdG9yLWlPUy0xNC4wLmpzb24K
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1ZlcnNpb25zL0luc3BlY3Rvci1pT1MtMTQuMC5q
c29uCkBAIC04NDAsNyArODQwLDcgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAg
ICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BV
KSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzaGFkZXIgcHJvZ3Jh
bSBpZGVudGlmaWVyLiIKICAgICAgICAgfSwKQEAgLTg1MiwxMyArODUyLDEzIEBACiAgICAgICAg
IH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJQcm9ncmFtVHlwZSIsCi0gICAgICAg
ICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdM
KSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAg
ICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdM
KSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImVudW0iOiBb
ImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAg
ImlkIjogIlNoYWRlclR5cGUiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkg
JiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInR5cGUiOiAic3Ry
aW5nIiwKICAgICAgICAgICAgICJlbnVtIjogWyJjb21wdXRlIiwgImZyYWdtZW50IiwgInZlcnRl
eCJdCiAgICAgICAgIH0sCkBAIC04OTQsNyArODk0LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgImlkIjogIlNoYWRlclByb2dyYW0iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklu
Zm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFtIG9yIFdlYkdQVSBz
aGFkZXIgcGlwZWxpbmUuIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYm
IEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIiwKICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKQEAgLTk4MCw3ICs5ODAsNyBA
QAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0U2hhZGVyU291cmNlIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGUgc291cmNlIG9mIHRoZSBz
aGFkZXIgb2YgdGhlIGdpdmVuIHR5cGUgZnJvbSB0aGUgcHJvZ3JhbSB3aXRoIHRoZSBnaXZlbiBp
ZC4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQ
VSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkZXJUeXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlwZSIg
fQpAQCAtOTkyLDcgKzk5Miw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInVw
ZGF0ZVNoYWRlciIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGlsZXMgYW5kIGxp
bmtzIHRoZSBzaGFkZXIgd2l0aCBpZGVudGlmaWVyIGFuZCB0eXBlIHdpdGggdGhlIGdpdmVuIHNv
dXJjZSBjb2RlLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9X
RUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFC
TEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9X
RUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIg
fSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFk
ZXJUeXBlIiB9LApAQCAtMTA3NSwxNCArMTA3NSwxNCBAQAogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFtQ3JlYXRlZCIsCi0gICAgICAgICAgICAiY29u
ZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVm
aW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29u
ZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYWRl
clByb2dyYW0iLCAiJHJlZiI6ICJTaGFkZXJQcm9ncmFtIiB9CiAgICAgICAgICAgICBdCiAgICAg
ICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInByb2dyYW1EZWxldGVkIiwK
LSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFC
TEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwK
KyAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFC
TEVfV0VCR0wpIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9CiAgICAgICAgICAg
ICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVmVyc2lvbnMvSW5zcGVjdG9y
LWlPUy0xNC41Lmpzb24gYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVmVyc2lvbnMvSW5zcGVjdG9y
LWlPUy0xNC41Lmpzb24KaW5kZXggMTE2N2E3ZjcyZjdjNDE5YzJhNmU2NjE4ZjVkOTVlOWQ3YzVk
NDM1NC4uYjgwZTUyZmY3NjJmYWU2ZWM5ODg2YjE0MGJjMzRjOGE0Y2UyMWFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1ZlcnNpb25zL0luc3BlY3Rvci1pT1MtMTQuNS5qc29u
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9WZXJzaW9ucy9JbnNwZWN0b3ItaU9TLTE0LjUu
anNvbgpAQCAtODcxLDcgKzg3MSw3IEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAg
ICAgICJpZCI6ICJQcm9ncmFtSWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInR5cGUiOiAi
c3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgc2hhZGVyIHByb2dy
YW0gaWRlbnRpZmllci4iCiAgICAgICAgIH0sCkBAIC04ODMsMTMgKzg4MywxMyBAQAogICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiUHJvZ3JhbVR5cGUiLAotICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJlbnVtIjog
WyJjb21wdXRlIiwgInJlbmRlciJdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAg
ICJpZCI6ICJTaGFkZXJUeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQo
RU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUp
ICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQo
RU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0
cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiY29tcHV0ZSIsICJmcmFnbWVudCIsICJ2ZXJ0
ZXgiXQogICAgICAgICB9LApAQCAtOTI1LDcgKzkyNSw3IEBACiAgICAgICAgIHsKICAgICAgICAg
ICAgICJpZCI6ICJTaGFkZXJQcm9ncmFtIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJ
bmZvcm1hdGlvbiBhYm91dCBhIFdlYkdML1dlYkdMMiBzaGFkZXIgcHJvZ3JhbSBvciBXZWJHUFUg
c2hhZGVyIHBpcGVsaW5lLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAm
JiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVO
QUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAogICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCkBAIC0xMDExLDcgKzEwMTEs
NyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0U2hhZGVyU291cmNl
IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGUgc291cmNlIG9mIHRo
ZSBzaGFkZXIgb2YgdGhlIGdpdmVuIHR5cGUgZnJvbSB0aGUgcHJvZ3JhbSB3aXRoIHRoZSBnaXZl
biBpZC4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wp
ICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dF
QkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wp
ICYmIEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkZXJUeXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlw
ZSIgfQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUi
OiAidXBkYXRlU2hhZGVyIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBh
bmQgbGlua3MgdGhlIHNoYWRlciB3aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2
ZW4gc291cmNlIGNvZGUuIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYm
IEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5B
QkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3Jh
bUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVmIjog
IlNoYWRlclR5cGUiIH0sCkBAIC0xMTA2LDE0ICsxMTA2LDE0IEBACiAgICAgICAgIH0sCiAgICAg
ICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInByb2dyYW1DcmVhdGVkIiwKLSAgICAgICAgICAg
ICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8
IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAg
ICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIiwK
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c2hhZGVyUHJvZ3JhbSIsICIkcmVmIjogIlNoYWRlclByb2dyYW0iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbURlbGV0
ZWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQ
VSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0KICAgICAg
ICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9WZXJzaW9ucy9JbnNw
ZWN0b3ItaU9TLTE1LjAuanNvbiBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9WZXJzaW9ucy9JbnNw
ZWN0b3ItaU9TLTE1LjAuanNvbgppbmRleCAyMDM5NjQwZjcwYWFiZGZiNjM2Yzg1MzMxMmUwMzY1
Zjk3YTQ5OTc2Li4wNGQyZjc5OWVhMjJlOWQwMDYwYzE3OWUwMmVkZTRlOGE4ZTFmYjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVmVyc2lvbnMvSW5zcGVjdG9yLWlPUy0xNS4w
Lmpzb24KKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1ZlcnNpb25zL0luc3BlY3Rvci1pT1Mt
MTUuMC5qc29uCkBAIC05MDEsNyArOTAxLDcgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAg
ICAgICAgICAgImlkIjogIlByb2dyYW1JZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihk
ZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVf
V0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihk
ZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzaGFkZXIg
cHJvZ3JhbSBpZGVudGlmaWVyLiIKICAgICAgICAgfSwKQEAgLTkxMywxMyArOTEzLDEzIEBACiAg
ICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJQcm9ncmFtVHlwZSIsCi0g
ICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxF
X1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisg
ICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxF
X1dFQkdMKSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImVu
dW0iOiBbImNvbXB1dGUiLCAicmVuZGVyIl0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgImlkIjogIlNoYWRlclR5cGUiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVm
aW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dF
QkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVm
aW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInR5cGUi
OiAic3RyaW5nIiwKICAgICAgICAgICAgICJlbnVtIjogWyJjb21wdXRlIiwgImZyYWdtZW50Iiwg
InZlcnRleCJdCiAgICAgICAgIH0sCkBAIC05NTUsNyArOTU1LDcgQEAKICAgICAgICAgewogICAg
ICAgICAgICAgImlkIjogIlNoYWRlclByb2dyYW0iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFtIG9yIFdl
YkdQVSBzaGFkZXIgcGlwZWxpbmUuIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmlu
ZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJH
UFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmlu
ZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIiwKICAgICAgICAgICAgICJ0eXBlIjog
Im9iamVjdCIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKQEAgLTEwNDEsNyAr
MTA0MSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3RTaGFkZXJT
b3VyY2UiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoZSBzb3VyY2Ug
b2YgdGhlIHNoYWRlciBvZiB0aGUgZ2l2ZW4gdHlwZSBmcm9tIHRoZSBwcm9ncmFtIHdpdGggdGhl
IGdpdmVuIGlkLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9X
RUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFC
TEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9X
RUJHTCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIg
fSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFk
ZXJUeXBlIiB9CkBAIC0xMDUzLDcgKzEwNTMsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAi
bmFtZSI6ICJ1cGRhdGVTaGFkZXIiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBp
bGVzIGFuZCBsaW5rcyB0aGUgc2hhZGVyIHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3aXRoIHRo
ZSBnaXZlbiBzb3VyY2UgY29kZS4iLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkiLAogICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQ
cm9ncmFtSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkZXJUeXBlIiwgIiRy
ZWYiOiAiU2hhZGVyVHlwZSIgfSwKQEAgLTExMzYsMTQgKzExMzYsMTQgQEAKICAgICAgICAgfSwK
ICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAicHJvZ3JhbUNyZWF0ZWQiLAotICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAg
ICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJH
TCkiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFkZXJQcm9ncmFtIiwgIiRyZWYiOiAiU2hhZGVyUHJvZ3JhbSIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwcm9ncmFt
RGVsZXRlZCIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVf
V0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMKSIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfQog
ICAgICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2Vi
S2l0LWFwcGxldHZvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1h
cHBsZXR2b3MucGxpc3QKaW5kZXggZjFiNGFhYWVlMGIxNzE0N2QzNjVmYzFlMmJmNzc2MzA5OGIy
N2EzYS4uNDgxNjM3NjUzMTk5MjNlZTllZTM3OWI0ZjlkYmJmN2VhMWIzZjBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CkBAIC0y
LDEwMCArMiw5NSBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0
ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVf
YW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9w
cm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9r
ZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4K
LSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8
a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxl
ZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9j
ZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPGZhbHNlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAg
IDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAg
IDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PkluQXBwQnJv
d3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVtZW50YWxfcGRm
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJYUjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KLSAg
ICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAg
ICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5SQl9mdWxsX21h
bmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19mcmFtZV9hbmRf
b3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJ
PHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRl
cmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8
L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+
CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9k
aWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRj
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCQk8a2V5
PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5Pgor
CQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFj
eTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0
ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3Jt
YXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxr
ZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CmluZGV4IDUwZDAzY2ZiZDc0MTc1
OGRhOTNkZjI2ZWY4ODgzMjhmNzQ0ZGUzNmYuLjc5YTRlM2M5ODQyYjIxZDg0MzVmYzE5MWQxODYz
MjA1YTdhZDIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1pb3MucGxpc3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5w
bGlzdApAQCAtMiwxMDAgKzIsOTUgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxl
Ly9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlM
aXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFz
eW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0
cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmli
dXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVt
ZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25f
YmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5S
Ql9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19m
cmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3Jl
bmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgor
CQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwv
a2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
ZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZh
bHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4K
KwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2Rp
Y3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nl
c3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dz
ZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2Uv
PgorCTwvZGljdD4KKwk8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5
PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVy
X29uX2JhdHRlcnk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxz
ZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53
ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8
a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVk
aW88L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0
IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0CmluZGV4IDUw
ZDAzY2ZiZDc0MTc1OGRhOTNkZjI2ZWY4ODgzMjhmNzQ0ZGUzNmYuLjc5YTRlM2M5ODQyYjIxZDg0
MzVmYzE5MWQxODYzMjA1YTdhZDIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVy
ZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFn
cy9XZWJLaXQtbWFjb3MucGxpc3QKQEAgLTIsMTAwICsyLDk1IEBACiA8IURPQ1RZUEUgcGxpc3Qg
UFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNv
bS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRp
Y3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAg
ICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8
L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgotICAg
IDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAg
ICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8
a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2Rp
Y3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+
QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNv
bXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5
PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3
X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5
X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9k
aWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0
PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9w
cm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtl
eT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5B
dHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJ
CTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8
a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0Pgor
CTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtl
eT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+
V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJ
PC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJ
PGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9k
aWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dl
YktpdC13YXRjaG9zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdh
dGNob3MucGxpc3QKaW5kZXggZjFiNGFhYWVlMGIxNzE0N2QzNjVmYzFlMmJmNzc2MzA5OGIyN2Ez
YS4uNDgxNjM3NjUzMTk5MjNlZTllZTM3OWI0ZjlkYmJmN2VhMWIzZjBmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKQEAgLTIsMTAwICsy
LDk1IEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8v
RU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxw
bGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3Zl
cmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nf
Y2FudmFzX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8
L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAg
ICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAg
ICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1
X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVf
cHJvY2Vzc19tZWRpYTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAg
ICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAg
ICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3By
b2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2Vi
cnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+
Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUv
PgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJp
dmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV93ZWJhdWRpbzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dL
X2pldHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxv
d19zY3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVl
Lz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRl
czwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+
CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJ
PGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJCTxrZXk+QXR0cmli
dXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1
ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFk
ZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9m
dWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5kZXggMWIw
YjZkNDZmYTMzZDBhZmExMjdmY2RjMmE4NjAzNjc2YmE3OGYzOC4uYWZhZmUzYzdlNTMzMDYyNGVh
ODQ2ZWJhMDc1YmYyODU1YTBhMjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCkBAIC0yNTksMTkgKzI1OSw2IEBAIGJv
b2wgZGVmYXVsdFdlYlJUQ0NvZGVjc0luR1BVUHJvY2VzcygpCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX1JUQykKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJs
ZWQoKQotewotI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVh
dHVyZUZsYWdFbmFibGVkKCJXZWJHUFUiKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93c2Vy
UHJpdmFjeSgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXggOGIz
NTNjMGYwZTk1NWVlOTAyYzkxNGVlNmRmOWYwMWU2NmJjNWMxNi4uZTZmZjE4MzYwYjJiZGIwOGVj
ZjE2ZmE4ZmJkZTk0MDk4OTZjNTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTg1LDEwICs4NSw2IEBAIGJvb2wgZGVm
YXVsdENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFdlYlJU
Q0NvZGVjc0luR1BVUHJvY2VzcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotYm9v
bCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KIGJvb2wgZGVmYXVsdEluQXBwQnJv
d3NlclByaXZhY3koKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAppbmRleCA3YWVlM2M1YjBlNDU5NWU5YjZhMWVkNjk5ZTEzZDgyNTM1NTZmOWRh
Li5jMjFkODJiZjJhZTA4YmQ0NTQzNTI5OTE5NDExNjI4MTlhOTM2YTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgKQEAgLTI2MSw3ICsyNjEsNiBAQAogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRpb25z
Q29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0
aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRp
b25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0
aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFdlYkdQ
VUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKICNkZWZpbmUgV2Vi
S2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWFza1dlYkdM
U3RyaW5nc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVu
YWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRTZXJ2ZXJUaW1pbmdFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggZmY3Mzg4NWIxODU0YmNlNGRjMzk0ZTc5MTg5
MWFkYzkxNDBjZmQzMC4uNmRlNGFjMWM4MGMzZGFkM2EwOWZkZTU3YmFjNzRmZTc5NDVlZjUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCkBAIC0zMTcwLDE2ICszMTcwLDYgQEAgLSAodm9pZClzZXRXZWJHTDJFbmFibGVkOihCT09M
KWVuYWJsZWQKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdl
YkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAotLSAoQk9PTCl3ZWJHUFVFbmFibGVkCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwotfQotCi0tICh2b2lkKXNldFdlYkdQVUVuYWJsZWQ6KEJPT0wpZW5hYmxl
ZAotewotICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR1BV
RW5hYmxlZFByZWZlcmVuY2VLZXldOwotfQotCiAtIChCT09MKW1hc2tXZWJHTFN0cmluZ3NFbmFi
bGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TWFza1dlYkdM
U3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmlu
ZGV4IDcxYWNkODA4ODY4MzU5ZmUxNjgxYjcwNGRhNWVhNTA3OWUzNjQ5NjIuLmQwOGNiY2JlY2Yz
NGVjNTE3ZjI0M2Q5ZDA1YWI4MmQwM2U2NTE3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
aApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGlzRmVhdHVyZUZs
YWdFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ym9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQogYm9vbCBkZWZhdWx0SW5jcmVtZW50YWxQREZFbmFibGVkKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggMTZjNTk3MjI5MTk3MWYxOTkxYzQw
YWVhODFkMGZmYmQ2ZjY1OWQzYi4uOWE5NGQ2NWQ4NWQxNzdiNzc3MmI3OWMzODc4NDhhZDRjNzI3
NWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTYyLDE5ICs2Miw2IEBAIGJv
b2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKIAogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCkK
LXsKLSNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQotICAgIHJldHVybiBpc0ZlYXR1cmVG
bGFnRW5hYmxlZCgiV2ViR1BVIik7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElT
KQogCiBib29sIGRlZmF1bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5k
ZXggNTA3OTc1MTQ4OGU1NTFjZmNiMmI5NGI5YjU4MDNmNmYzZTk4Yzc5Zi4uNWIyNzFmMDlhMzM1
OTNhM2Y1NzgxYWEwZWJiN2VkZjJkY2MwZmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMzUsNyAr
MzM1LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2Vk
SW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lUX0RFUFIKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZDsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkdMMkVuYWJsZWQ7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCB3ZWJHUFVFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbWFz
a1dlYkdMU3RyaW5nc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhY2Nlc3Np
YmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2Vy
dmVyVGltaW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKaW5kZXggMGUxMzM5NWQ3OGY2YTU4
NDdkMTNjYjgwNDUxNTNjMjQ1YTE0ZTZhNi4uNTRkMWQ0MmVhYTQ3MDc1N2ExMDg2YzgyNzk0Yzky
MWEyNTdjNjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKQEAgLTEyMyw3ICsxMjMsNiBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFZTUVOVF9SRVFVRVNUIFBSSVZB
VEUgT0ZGKQogCiAjIFdlYkdMCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCR0wyIFBSSVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1dFQkdQVSBQUklWQVRFIE9GRikKIAogIyBPZmYgZm9yIG5vdywgYnV0IHNob3VsZCBi
ZSBvbgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQ
UklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKaW5kZXggMGM4ZmUxMTY0NWMyMDMxNDlhMTg5
NThkMmNkMTQzODY1NTdhZDQ5OC4uNzZhMWVkYmZhYjYxMzVhZmVkYjVlNGIxNzgyZmY5MzQ1NTM3
ZmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKQEAgLTkyLDcgKzkyLDYgQEAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJE
UklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTDIgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHUFUgUFJJVkFURSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gUFJJVkFURSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVUSE4gUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBS
SVZBVEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA1MTIzOTJlNjQyNGVh
NjRmZjY1ZmZmYzE0ZGYzMDM0NGNlNmNiZTk5Li41YjU2N2VmNzlmNjA4ZDRhMGIzNTA5MWRlMDc0
OGZkZjAwYjc5MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTIwLDExICsy
MCw2IEBAIGlmIChFTkFCTEVfWFNMVCkKICAgICBmaW5kX3BhY2thZ2UoTGliWHNsdCAxLjEuMzIg
UkVRVUlSRUQpCiBlbmRpZiAoKQogCi1pZiAoRU5BQkxFX1dFQkdQVSkKLSAgICBmaW5kX3BhY2th
Z2UoRGF3biBSRVFVSVJFRCBDT01QT05FTlRTIGRhd24gbmF0aXZlIE9QVElPTkFMX0NPTVBPTkVO
VFMgd2lyZSkKLSAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfREFXTiBPTikKLWVuZGlm
ICgpCi0KICMgT3B0aW9uYWwgcGFja2FnZXMKIGZpbmRfcGFja2FnZShPcGVuSlBFRyAyLjMuMSkK
IGlmIChPcGVuSlBFR19GT1VORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCAyYzIw
MjBjNTlmOWMzYTkyZjlhNGFiZmI3MjllN2I3NDFiYThiOTkwLi5kNzhlNmQzNDVhMDAyNWI3MDNh
YzhmMDM2MjIzZWVkM2E0NzUzOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVh
dHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC0y
MjYsNyArMjI2LDYgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUyAiVG9nZ2xlIFdl
YkRyaXZlciB3aGVlbCBpbnRlcmFjdGlvbnMiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9XRUJHTCAiVG9nZ2xlIFdlYkdMIHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1dFQkdMMiAiVG9nZ2xlIFdlYkdMMiBz
dXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV0VC
R1BVICJUb2dnbGUgV2ViR1BVIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9XRUJfQVBJX1NUQVRJU1RJQ1MgIlRvZ2dsZSBXZWIgQVBJIHN0YXRp
c3RpY3Mgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1dFQl9BVURJTyAiVG9nZ2xlIFdlYiBBdWRpbyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9XRUJfQVVUSE4gIlRvZ2dsZSBXZWIgQXV0aE4g
c3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDdjY2Y3ZWE1ZGJlODczYjJlZGQyYjZhNDYyMWI2YzBi
MTkwY2RlMWIuLjRhMjI4NDMyYTk0M2JlMmU1ZWViMGZkMDhmMDdiYjI0YWUyNWJlZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisr
KyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC01
NSw3ICs1NSw2IEBACiAgICAgPEVOQUJMRV9XRUJfQVVESU8gLz4KICAgICA8RU5BQkxFX1dFQl9B
VVRITiAvPgogICAgIDxFTkFCTEVfV0VCR0wgLz4KLSAgICA8RU5BQkxFX1dFQkdQVSAvPgogICAg
IDxFTkFCTEVfV0VCWFIgLz4KICAgICA8RU5BQkxFX1hIUl9USU1FT1VUPkVOQUJMRV9YSFJfVElN
RU9VVDwvRU5BQkxFX1hIUl9USU1FT1VUPgogICAgIDxFTkFCTEVfWFNMVD5FTkFCTEVfWFNMVDwv
RU5BQkxFX1hTTFQ+CkBAIC02NSw3ICs2NCw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0
ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9PVkVSRkxPV19TQ1JP
TExJTkdfVE9VQ0gpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NT
U19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5H
KTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lE
RSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJ
WEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9I
QU5ETEVSKTskKEVOQUJMRV9EQVJLX01PREVfQ1NTKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFC
TEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUEpOyQoRU5BQkxFX0ZF
VENIX0FQSSk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTsk
KEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9EUElf
Q0FOVkFTKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gp
OyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUp
OyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUlD
Uk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElP
TlMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NU
WUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxF
X1dFQkdMKTskKEVOQUJMRV9XRUJHUFUpOyQoRU5BQkxFX1dFQlhSKTskKEVOQUJMRV9YSFJfVElN
RU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxF
XzNEX1RSQU5TRk9STVMpOyQoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCk7JChFTkFC
TEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFC
TEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxF
X0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19TRUxF
Q1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJB
TlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNP
Ul9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RB
UktfTU9ERV9DU1MpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5U
KTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQp
OyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSk7JChFTkFCTEVfRkVUQ0hfQVBJKTskKEVOQUJMRV9G
SUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQo
RU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKTskKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9MSU5LX1BS
RVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfU0NSSVBU
RURfU1BFRUNIKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJP
TFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJ
Q1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJM
RV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFC
TEVfVklERU8pOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCR0wpOyQoRU5BQkxFX1dF
QlhSKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgog
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvU291cmNl
L2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCAxMjc2
Yjg3ZmIzMWM3NTI0NjFmZDE4ZWVlYjI4MTAyY2NhYjNjYzM4Li43NTNiZmI5N2ZmOWNiYjdiMGFm
MTgzOTJlYzlhYjkyMTUzNDQ2ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1NvdXJjZS9jbWFrZS90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTU1LDcgKzU1LDYgQEAKICAgICA8
RU5BQkxFX1dFQl9BVURJTyAvPgogICAgIDxFTkFCTEVfV0VCX0FVVEhOIC8+CiAgICAgPEVOQUJM
RV9XRUJHTD5FTkFCTEVfV0VCR0w8L0VOQUJMRV9XRUJHTD4KLSAgICA8RU5BQkxFX1dFQkdQVSAv
PgogICAgIDxFTkFCTEVfV0VCWFIgLz4KICAgICA8RU5BQkxFX1hIUl9USU1FT1VUPkVOQUJMRV9Y
SFJfVElNRU9VVDwvRU5BQkxFX1hIUl9USU1FT1VUPgogICAgIDxFTkFCTEVfWFNMVD5FTkFCTEVf
WFNMVDwvRU5BQkxFX1hTTFQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjJhY2FjNjA1ZTU0MzQ2NTYzMGVjN2M0MTNkYmU4
OTg5MGFlNTI5ZS4uY2NmZDUxYmQ4ZGY1NGI2OGMwNGI3NTE5YTkzYjkyMzkyYWY2NzI4ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQyOSBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUg
YW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvY3JlYXRl
LWNvbnRleHQtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2Vi
Z3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Jl
cXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1v
dmUtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9mYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlw
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0
cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJl
LXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxp
dC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9idWZm
ZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L2J1ZmZlci1lcnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS9idWZmZXItZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJp
YW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZHJhdy1pbmRleGVk
LXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kcmF3
LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Vycm9y
LXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXJy
b3Itc2NvcGVzLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXhwYW5kby1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXhwYW5k
by1wcm9wZXJ0aWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2pzL3dlYmdwdS1m
dW5jdGlvbnMuanM6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9tYXAtcmVhZC1idWZmZXJz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9xdWV1ZS1jcmVhdGlvbi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJlZC5wbmc6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ncmVlbi00MDAucG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS91bmNhcHR1cmVkLWVycm9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmll
d3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2Nh
dGlvbnMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJi
aXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVy
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJy
YXktbGVuZ3RoLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2FycmF5LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9iYWQtYWRkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2JhZC1saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2JhZC1saXRlcmFscy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
aXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvYml0d2lzZS1ib29sLW9wcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2Jvb2xzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYm9v
bHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1m
cmFnbWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItbGVu
Z3RoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVy
LWxlbmd0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItdmVy
dGV4LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZl
ci12ZXJ0ZXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVpbHRpbi12
ZWN0b3JzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
dWlsdGluLXZlY3RvcnMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
dWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9idWlsdGluLXZlY3RvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvY2FzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9j
YXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jaGVja2VyLXNob3Vs
ZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1v
Zi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9jb3B5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29w
eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRl
cmluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RlcmVm
ZXJlbmNlLW9yZGVyaW5nLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Rl
cmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2stZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlw
ZS1jaGVjay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXZpY2UtcHJv
cGVyLXR5cGUtY2hlY2tlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3At
Y29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13
aGlsZS1sb29wLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvbnQtY3Jh
c2gtcGFyc2luZy1lbnVtLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvZG91YmxlLW5vdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUt
Y3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBs
aWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGljYXRlcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBv
aW50ZXItdXNhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxl
LWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12
YXJpYWJsZS1saWZldGltZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9l
bnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3IuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2VudW1zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvZW51bXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZXF1
YWxpdHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lcXVh
bGl0eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9mbG9hdC1tYXRoLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9nZXR0ZXItc2V0
dGVyLXR5cGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaHVnZS1hcnJh
eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2h1Z2UtYXJy
YXkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1l
bnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1l
bnQtZGVjcmVtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luY3Jl
bWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9pbmNyZW1lbnQtc2V0dGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanM6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2xleGluZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xpdGVyYWxzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvZ2lj
YWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sb2dpY2FsLW5lZ2F0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xv
b3BzLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLWNvbnRpbnVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2xvb3BzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xv
b3BzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvdHMtb2Yt
bG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2x2YWx1ZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cmljZXMt
c3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgt
Mi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC0y
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtYWxp
Z25tZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb21w
YXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4
LWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNj
YWxhcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0
cnVjdG9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgt
YXNzaWduLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0
cml4LWluZGV4LWFzc2lnbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YXRyaXgtaW5kZXgtb3JkZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1ZS1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZh
bHVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL25lc3RlZC1sb29w
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3Mt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9udWxsLWFycmF5
LXByb3BlcnR5LWFjY2Vzcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9u
dWxsLWFycmF5LXJlZi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vb2It
YWNjZXNzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9v
b2ItYWNjZXNzLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFj
Y2Vzcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1h
Y2Nlc3MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
ZGl2Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFs
LWVxdWFsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3Bl
cmF0b3ItZXF1YWwtZXF1YWwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
b3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9vcGVyYXRvci1taW51cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9vcGVyYXRvci1vdmVybG9hZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVj
dG9yLWxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
eHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci14eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vdmVybG9hZC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3Rz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVm
aXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVh
dGlvbi1vcmRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1o
aWdoLXpvbWJpZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVhZC1t
b2RpZnktd3JpdGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVjdXJz
aXZlLXN0cnVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZWN1cnNpdmUtc3RydWN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQtZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhw
ZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTctZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjEtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy00Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLWdldHRlci1z
ZXR0ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLXRl
c3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1s
b29wLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxl
LXdoaWxlLWxvb3AuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc21hbGxl
ci10aGFuLTMyLWJpdC10eXBlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3Vw
LTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3Jv
dXAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2Ut
YmluZC1ncm91cC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9yZS1u
dWxsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUt
bnVsbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9yZS10by1wcm9w
ZXJ0eS11cGRhdGVzLXByb3Blcmx5LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNo
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0dXJl
LWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc3dpdGNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMt
c2FtcGxlLWJpYXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVy
ZXMtc2FtcGxlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25h
bC1hcnJheS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90eXBlLW1pc21h
dGNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdHlwZS1t
aXNtYXRjaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91aW50LWJpdHdp
c2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91aW50LWJp
dHdpc2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5l
ZC12YXJpYWJsZS0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJl
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3Rv
cnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3It
Y29uc3RydWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUtcGFyYW1l
dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdm9pZC12
YXJpYWJsZS1wYXJhbWV0ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
d2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1jb250aW51ZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC93aGxzbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy10eXBlcy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0y
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12
YWx1ZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvemVy
by1pbml0aWFsaXplLXZhbHVlcy5odG1sOiBSZW1vdmVkLgorCiAyMDIxLTA3LTI5ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmYXN0L3NwZWVjaHJlY29n
bml0aW9uL2RldGFjaGVkLWlmcmFtZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkOTc2ZWI4
MjhhZWM0NTYyMmVjNjAzNmMwZTg3ZmY1ZDFlMTg3NDI5Li44MGFiOGZmNzc5MzhmMzMwMDEwMTYx
NGJjZThhOGY0N2M4MjE3MzQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzNDYsOCArMzM0Niw2
IEBAIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTkwMzkgZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
cGFyYWdyYXBoLTAwMy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xOTkwMjggd2ViZ3B1
L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwgWyBTbG93IF0KLQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9vZmZzZXRUb3BMZWZ0LWlubGluZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGVzdCBpcyBmYWlsaW5nIGFuZCBpcyBwcmludGlu
ZyBkaWZmZXJlbnQgdmFsdWVzIHdoZW4gaXQgZmFpbHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAppbmRleCBhMWEyMmMzYjUyZWI4NzE0ZGI5NmRiYjhkZGEzY2U0NWViMmI2Y2U1Li41OWE2NTEz
YTVhYTgzYWNhOWNkZGY4Nzc1NTU1ZDZjYmRjYjNlNGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEwLDcgKzEwLDYgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0
b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZp
Z2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2
aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwogbmF2
aWdhdG9yLmxhbmd1YWdlcyBpcyBPSwpAQCAtMzksNyArMzgsNiBAQCBuYXZpZ2F0b3IuY29udGFj
dHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0
b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxh
bmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTIwMmRkNWMyODFj
YmYwYjBjZTY3MDhjMTBjNzUzMjVmYjE5ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29u
dGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBv
ZiBXZWJHUFUgY2FudmFzZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMuQ3Jl
YXRlQ29udGV4dFdlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250
ZXh0V2ViR1BVLk5vQ2FudmFzZXMKLVBBU1M6IENhbnZhc01hbmFnZXIgc2hvdWxkIGhhdmUgbm8g
Y2FudmFzZXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdl
YkdQVS5EZXZpY2UKLVBBU1M6IENhbnZhcyBjb250ZXh0IHNob3VsZCBiZSBXZWIgR1BVLgotCi1Q
QVNTOiBSZW1vdmVkIGNhbnZhcyBoYXMgZXhwZWN0ZWQgSUQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuQXR0YWNoZWQKLVBBU1M6IElu
c3BlY3RvciBjYW52YXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZvciBhdHRhY2hlZCBHUFVDYW52
YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQotLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5EZXRhY2hlZAotUEFT
UzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGRldGFjaGVkIEdQ
VUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLgotCi0tLSBSdW5u
aW5nIHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkNTUwotUEFT
UzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52
YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDBmMTE4ZDA4ODZjYjc1ODAyZmExNTQw
Y2E1Zjg1NzZhYzZhMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2NyZWF0
ZS1jb250ZXh0LXV0aWxpdGllcy5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1jb250ZXh0LXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRXZWJHUFVFbmFibGVkKHRydWUpOwotCi1mdW5jdGlvbiBjcmVhdGVEZXZpY2UoKSB7
Ci0gICAgZnVuY3Rpb24gcmVjZWl2ZWREZXZpY2UoZGV2aWNlKSB7Ci0gICAgICAgIHdpbmRvdy5j
b250ZXh0cy5wdXNoKGRldmljZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcmVjZWl2ZWRBZGFw
dGVyKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihyZWNl
aXZlZERldmljZSk7Ci0gICAgfQotCi0gICAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigp
LnRoZW4ocmVjZWl2ZWRBZGFwdGVyKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LkNyZWF0ZUNvbnRleHRVdGlsaXRpZXMuaW5pdGlhbGl6ZVRl
c3RTdWl0ZSgiQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUiKTsKLQotICAgIEluc3BlY3RvclRl
c3QuQ3JlYXRlQ29udGV4dFV0aWxpdGllcy5hZGRTaW1wbGVUZXN0Q2FzZSh7Ci0gICAgICAgIG5h
bWU6ICJEZXZpY2UiLAotICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRGV2aWNlKClgLAotICAg
ICAgICBjb250ZXh0VHlwZTogV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSwKLSAgICB9KTsK
LQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5DcmVhdGVD
b250ZXh0V2ViR1BVLkNhbnZhcy5BdHRhY2hlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiRW5z
dXJlIHRoYXQgYXR0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNh
bnZhcywgaW5zdGVhZCBvZiB0aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3Qo
KSB7Ci0gICAgICAgICAgICBsZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQXR0YWNoZWRDYW52YXMoImdwdSIpYCkKLQotICAg
ICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZh
cyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGF0dGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgd2l0
aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLiIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0g
ICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLkNyZWF0ZUNvbnRl
eHRXZWJHUFUuQ2FudmFzLkRldGFjaGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUg
dGhhdCBkZXRhY2hlZCBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFzIGEgY2FudmFz
LCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsK
LSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBsZXQgbGlzdGVu
ZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRUeXBlID09PSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBjcmVhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXRhY2hlZENhbnZhcygiZ3B1IilgKQotCi0gICAgICAg
ICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFzIHNo
b3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRob3V0
IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuQ3JlYXRlQ29udGV4dFdl
YkdQVS5DYW52YXMuQ1NTIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBDU1Mg
R1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNhbnZhcywgaW5zdGVhZCBvZiB0
aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBs
ZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY2FudmFz
TWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgY3JlYXRlQ1NTQ2FudmFzKCJncHUiLCAiY3NzLWNhbnZhcyIpYCkKLQotICAgICAgICAgICAg
V0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
Q29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQg
bm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVk
IFdlYkdQVURldmljZS4iKTsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0
aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgY2FudmFzZXMuPC9wPgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xp
ZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52
YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGJhYmU3M2M2MzE1ODUyZDA0YzllY2E5MzA1NjdmYmQ3ZGUyYTcyZTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotegotVGVzdCB0aGF0IENhbnZhc0FnZW50
IHRyYWNrcyBjaGFuZ2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2YgYSBXZWJHUFUgZGV2aWNlLgot
Ci0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RDbGllbnROb2Rlcy5XZWJH
UFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQ
VS5DcmVhdGUKLVBBU1M6IFRoZXJlIHNob3VsZCBiZSBvbmUgY2xpZW50IG5vZGUuCi1QQVNTOiBD
bGllbnQgbm9kZSAiY2FudmFzIiBpcyB2YWxpZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViMzNmZTNmOWQzYTEwZWU1YzRjMTU2OGE4M2Rh
MTQxNjA4OGYwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLXo8IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdQVUVuYWJs
ZWQodHJ1ZSk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsaWVudCgpIHsKLSAgICBsZXQgYWRh
cHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICBsZXQgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBsZXQgY29udGV4dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoImdwdSIpOwotICAg
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQVSIpOwot
Ci0gICAgZnVuY3Rpb24gbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpIHsKLSAgICAgICAgZm9y
IChsZXQgY2xpZW50Tm9kZSBvZiBjbGllbnROb2RlcykgewotICAgICAgICAgICAgaWYgKGNsaWVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBDbGllbnQgbm9kZSAi
JHtjbGllbnROb2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IoKX0iIGlzIHZhbGlkLmApOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiSW52YWxp
ZCBjbGllbnQgbm9kZS4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BVLkNy
ZWF0ZSIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBjcmVhdGluZyBhIFdlYkdQ
VSBkZXZpY2UgY2xpZW50IG5vZGUgaXMgdHJhY2tlZCBjb3JyZWN0bHkuIiwKLSAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLkNhbnZhcy5hd2FpdEV2ZW50KFdJ
LkNhbnZhcy5FdmVudC5DbGllbnROb2Rlc0NoYW5nZWQpCi0gICAgICAgICAgICAudGhlbigoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC50YXJn
ZXQuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUpOwotICAgICAg
ICAgICAgICAgIGV2ZW50LnRhcmdldC5yZXF1ZXN0Q2xpZW50Tm9kZXMoKGNsaWVudE5vZGVzKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2xpZW50
Tm9kZXMubGVuZ3RoLCAxLCAiVGhlcmUgc2hvdWxkIGJlIG9uZSBjbGllbnQgbm9kZS4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpOwotICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQ2xp
ZW50KClgKS5jYXRjaChyZWplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3QgdGhhdCBDYW52YXNBZ2VudCB0cmFja3MgY2hh
bmdlcyBpbiB0aGUgY2xpZW50IG5vZGVzIG9mIGEgV2ViR1BVIGRldmljZS48L3A+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVl
c3RTaGFkZXJTb3VyY2Utd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWEwZTRmMWYwNTU5MzQ4Yzg4M2I0MTljZjc1NGUxY2Jl
YWE1ZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotV2ViR1BVIHRlc3RzIGZv
ciBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZSBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVz
dCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uY29tcHV0
ZS5TaGFkZXIuY29tcHV0ZQotCi1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBj
b21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQz
IHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50KHRocmVh
ZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLQotCi0tLSBSdW5u
aW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0u
Y29tcHV0ZS5TaGFkZXIuZnJhZ21lbnQKLVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlv
bi4KLUVycm9yOiBNaXNzaW5nIHNoYWRlciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBw
cm9ncmFtSWQKLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291
cmNlLldlYkdQVS5Qcm9ncmFtLmNvbXB1dGUuU2hhZGVyLnZlcnRleAotUEFTUzogU2hvdWxkIHBy
b2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE1pc3Npbmcgc2hhZGVyIG9mIGdpdmVuIHNoYWRl
clR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFz
LnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci5jb21wdXRl
Ci1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTWlzc2luZyBzaGFk
ZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi0KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5yZW5k
ZXIuU2hhZGVyLmZyYWdtZW50Ci0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFz
LnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci52ZXJ0ZXgK
LQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRl
KDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4g
cG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9u
OwotfQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVz
dFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMv
cmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzJiZTYwZWQxYTJiOWUwYzlkMDk1OWExY2Y4YTYwMDQzZDJkNjhlOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGls
aXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnJl
cXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVIik7Ci0KLSAgICBmb3IgKGxldCBwcm9ncmFtVHlwZSBv
ZiBPYmplY3QudmFsdWVzKFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUpKSB7Ci0gICAgICAg
IGZvciAobGV0IHNoYWRlclR5cGUgb2YgT2JqZWN0LnZhbHVlcyhXSS5TaGFkZXJQcm9ncmFtLlNo
YWRlclR5cGUpKSB7Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAg
ICAgICAgbmFtZTogYENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlLldlYkdQVS5Qcm9ncmFtLiR7
cHJvZ3JhbVR5cGV9LlNoYWRlci4ke3NoYWRlclR5cGV9YCwKLSAgICAgICAgICAgICAgICBhc3lu
YyB0ZXN0KCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IEluc3Bl
Y3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9ncmFtVHlwZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93ICJNaXNzaW5nIHNoYWRlciBwcm9ncmFtIjsKLQotICAgICAgICAgICAgICAgICAg
ICBsZXQgbG9nU2hhZGVyID0gYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAg
bGV0IHtzb3VyY2V9ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFk
ZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLQot
ICAgICAgICAgICAgICAgICAgICBsZXQgaXNDb21wdXRlUHJvZ3JhbSA9IHByb2dyYW1UeXBlID09
PSBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGU7Ci0gICAgICAgICAgICAgICAg
ICAgIGxldCBpc0NvbXB1dGVTaGFkZXIgPSBzaGFkZXJUeXBlID09PSBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuQ29tcHV0ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcHV0ZVBy
b2dyYW0gIT09IGlzQ29tcHV0ZVNoYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0
IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGxvZ1NoYWRlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGxvZ1NoYWRlcigpCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+V2ViR1BVIHRlc3RzIGZvciBDYW52YXMucmVxdWVz
dFNoYWRlclNvdXJjZSBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2Vi
Z3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxNjkyMjEy
YThmM2Q3N2RkZGM1ZDBjNjE1NWM5MzhiZDg5MGViYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29s
dmVDb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAg
QEAKLVRlc3RzIGZvciB0aGUgQ2FudmFzLnJlc29sdmVDb250ZXh0IGNvbW1hbmQgZm9yIFdlYkdQ
VSBkZXZpY2VzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlc29sdmVDb250
ZXh0V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlc29sdmVDb250ZXh0V2Vi
R1BVLnZhbGlkSWRlbnRpZmllcgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSB0eXBlICJvYmpl
Y3QiLgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQt
d2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0
LXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTI1YjI3MTY0OGY0
NDRjMjNjOWQyYTg1Y2I4NTIwNjI0Y2I2MjU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNv
bnRleHQtd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZURldmljZSgpIHsKLSAgICBu
YXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkudGhlbihmdW5jdGlvbiBhZGFwdGVyUmVxdWVz
dGVkKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihmdW5j
dGlvbiBkZXZpY2VSZXF1ZXN0ZWQoZGV2aWNlKSB7Ci0gICAgICAgICAgICB3aW5kb3cuY29udGV4
dFdlYkdQVSA9IGRldmljZTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
Q2FudmFzLnJlc29sdmVDb250ZXh0V2ViR1BVIik7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
Ci0gICAgICAgIG5hbWU6IGBDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUudmFsaWRJZGVudGlm
aWVyYCwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0
IGZvciB0aGUgZ2l2ZW4gY2FudmFzIGlkZW50aWZpZXIuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5jYW52YXNNYW5hZ2VyLmNh
bnZhc0NvbGxlY3Rpb24uc2l6ZSwgIlRoZXJlIHNob3VsZCBiZSBubyBjYW52YXNlcy4iKTsKLQot
ICAgICAgICAgICAgbGV0IFtjYW52YXNDb2xsZWN0aW9uSXRlbUFkZGVkRXZlbnRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29s
bGVjdGlvbi5hd2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKSwKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXZpY2UoKWAp
LAotICAgICAgICAgICAgXSk7Ci0KLSAgICAgICAgICAgIGxldCBjYW52YXMgPSBjYW52YXNDb2xs
ZWN0aW9uSXRlbUFkZGVkRXZlbnQuZGF0YS5pdGVtOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlLCBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BV
LCAiQWRkZWQgY2FudmFzIHNob3VsZCBiZSBhIFdlYkdQVSBkZXZpY2UuIik7Ci0KLSAgICAgICAg
ICAgIGNvbnN0IG9iamVjdEdyb3VwID0gInRlc3QiOwotICAgICAgICAgICAgbGV0IHtvYmplY3R9
ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVzb2x2ZUNvbnRleHQoY2FudmFzLmlkZW50aWZpZXIsIG9i
amVjdEdyb3VwKQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChvYmplY3Qu
dHlwZSwgIm9iamVjdCIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIHR5cGUgIm9iamVjdCIuYCk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG9iamVjdC5jbGFzc05hbWUsICJH
UFVEZXZpY2UiLCBgUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuYCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAg
PHA+VGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNvbnRleHQgY29tbWFuZCBmb3IgV2ViR1BV
IGRldmljZXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVt
b3ZlLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2
OGQxZmJhZmJmZTM0ZTY4Yzk0ZDk4NzUzY2EwMjRkNTVjNGZlOGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDI4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3Qg
Y29uc3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUg
dG9rZW4KLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgp
OiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgot
Q09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogV0hMU0wg
Y29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUgdG9rZW4KLVRlc3QgdGhh
dCBDYW52YXNNYW5hZ2VyIHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgV2ViR1BV
IHNoYWRlciBwcm9ncmFtcy4KLQotCi09PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENhbnZhcy5TaGFk
ZXJQcm9ncmFtLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5FeGlzdGluZwotUEFTUzogQWRkZWQgImNvbXB1dGUiIFNoYWRlclByb2dyYW0u
Ci1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotUEFTUzogVGhlcmUgc2hvdWxk
IGJlIHR3byBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNo
YWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuVmFsaWQKLVBBU1M6IEFkZGVkICJjb21w
dXRlIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIG5vdCBj
cmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVy
LlZhbGlkCi1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLlJlbmRlci5JbnZh
bGlkCi1QQVNTOiBTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFs
aWQgZGVzY3JpcHRvci4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkCi1QQVNTOiBSZW1vdmVkIFNoYWRlclByb2dy
YW0gYmVmb3JlIENhbnZhcy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nh
bnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmYjg3NzJjMGIzNzVjNDBkNWQ3YTBlNDIwMmE1
NGZmNWQ1MmQwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13
ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci13aW5kb3cuYmVmb3JlVGVzdCA9IGFzeW5jIGZ1bmN0aW9uKCkgewotICAgIGF3YWl0
IFByb21pc2UuYWxsKFsKLSAgICAgICAgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCJJTlZBTElEIiks
Ci0gICAgICAgIGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIiksCi0gICAgXSk7Ci19Owot
Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZShgQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVYCk7Ci0KLSAgICBsZXQgY2Fu
dmFzZXMgPSBBcnJheS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbik7Ci0g
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXMubGVuZ3RoID09PSAxLCAiVGhlcmUgc2hv
dWxkIG9ubHkgYmUgb25lIGNhbnZhcy4iKTsKLQotICAgIGxldCBjYW52YXMgPSBjYW52YXNlc1sw
XTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMsICJUaGVyZSBzaG91bGQgYmUgYSBj
YW52YXMuIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlID09
PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAiQ2FudmFzIHNob3VsZCBiZSBXZWJHUFUu
Iik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFByb2dyYW1BZGRlZChwcm9ncmFtVHlwZSkg
ewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICAgICAgbGV0IGxpc3RlbmVySXRlbUFkZGVkID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xs
ZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChl
dmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtID0gZXZlbnQuZGF0YS5pdGVt
OwotICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLnByb2dyYW1UeXBlICE9PSBwcm9ncmFtVHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KHByb2dyYW0gaW5zdGFuY2VvZiBXSS5TaGFkZXJQcm9ncmFtLCBg
QWRkZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9ncmFtLmApOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KHByb2dyYW0uY2FudmFzID09PSBjYW52YXMsICJTaGFkZXJQ
cm9ncmFtIHNob3VsZCBiZSBmb3IgdGhlIGtub3duIENhbnZhcy4iKTsKLQotICAgICAgICAgICAg
ICAgIHJlc29sdmUocHJvZ3JhbSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkV4aXN0aW5nIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IFNoYWRlclByb2dyYW1BZGRlZCBpcyBzZW50IGZvciBhIHByb2dyYW0gY3JlYXRlZCBiZWZv
cmUgQ2FudmFzQWdlbnQgaXMgZW5hYmxlZC4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAg
ICAgICAgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeGlzdHMocHJvZ3JhbVR5cGUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JUeXBl
KHByb2dyYW1UeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
YEFkZGVkICIke3Byb2dyYW1UeXBlfSIgU2hhZGVyUHJvZ3JhbS5gKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF3YWl0
IGF3YWl0UHJvZ3JhbUFkZGVkKHByb2dyYW1UeXBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGNoZWNrRXhpc3RzKFdJ
LlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZSksCi0gICAgICAgICAgICAgICAgY2hl
Y2tFeGlzdHMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIpLAotICAgICAgICAg
ICAgXSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FudmFzLnNo
YWRlclByb2dyYW1Db2xsZWN0aW9uLnNpemUsIDIsICJUaGVyZSBzaG91bGQgYmUgdHdvIFNoYWRl
clByb2dyYW0uIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5Db21w
dXRlLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGFkZGVkL3JlbW92
ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAg
ICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgYXdhaXRQcm9ncmFtQWRkZWQo
V0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlKSwKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDb21wdXRlUGlwZWxpbmUoKWApLAot
ICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5D
b21wdXRlLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQv
cmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbGV0
IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAoZXZlbnQpID0+IHsKLSAg
ICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0
ZUNvbXB1dGVQaXBlbGluZSgiSU5WQUxJRCIpYCk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy5zaGFk
ZXJQcm9ncmFtQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZl
bnQuSXRlbUFkZGVkLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEZhbHNlKHNoYWRlclByb2dyYW1BZGRlZCwgIlNob3VsZCBub3QgY3JlYXRlIGEgU2hhZGVyUHJv
Z3JhbSBmb3IgYW4gaW52YWxpZCBkZXNjcmlwdG9yLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJv
Z3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5j
IHRlc3QoKSB7Ci0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAg
ICAgYXdhaXRQcm9ncmFtQWRkZWQoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIp
LAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJl
bmRlclBpcGVsaW5lKClgKSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJv
Z3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5
bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsK
LQotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0
aW9uLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVk
LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVl
OwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIilgKTsKLQotICAgICAg
ICAgICAgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uoc2hhZGVyUHJvZ3JhbUFkZGVkLCAiU2hvdWxkIG5vdCBj
cmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuIik7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkIiwKLSAgICAg
ICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBTaGFkZXJQcm9ncmFtIGlzIHJlbW92ZWQg
YmVmb3JlIGl0J3MgcGFyZW50IENhbnZhcy4iLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgbGV0IGNhbnZhc1JlbW92ZWQgPSBmYWxzZTsKLQotICAgICAgICAg
ICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIChldmVudCkgPT4gewotICAgICAg
ICAgICAgICAgIGNhbnZhc1JlbW92ZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQ291bnQgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxl
Y3Rpb24uc2l6ZTsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lckl0ZW1SZW1vdmVkID0gY2FudmFz
LnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtUmVtb3ZlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKC0tc2hh
ZGVyUHJvZ3JhbUNvdW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCBsaXN0ZW5lckl0ZW1SZW1vdmVkKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNhbnZhc1JlbW92ZWQs
ICJSZW1vdmVkIFNoYWRlclByb2dyYW0gYmVmb3JlIENhbnZhcy4iKTsKLSAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgZGVsZXRlRGV2aWNlKClgKTsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLSAgICA8cD5UZXN0IHRoYXQgQ2FudmFzTWFuYWdl
ciB0cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBzaGFkZXIgcHJvZ3Jh
bXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZWQzNzIyM2M3NWMwZmU1ODU2MWU4MmFiMGQxNDk2
NWM0YWNiZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVdlYkdQVSB0ZXN0cyBmb3IgQ2Fu
dmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2Fu
dmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBk
YXRlU2hhZGVyLldlYkdQVS5Db21wdXRlLlZhbGlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhhdmUg
Y2hhbmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgot
RXJyb3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdp
dmVuIHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5WZXJ0ZXguVmFsaWQK
LVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4LkludmFsaWQKLVBBU1M6IFNob3Vs
ZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBGYWlsZWQgdG8gdXBkYXRlIHNoYWRlciBv
ZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQKLVBBU1M6IFNvdXJjZSBzaG91
bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNo
YWRlci5XZWJHUFUuRnJhZ21lbnQuVmFsaWQKLVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFu
Z2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUu
RnJhZ21lbnQuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJy
b3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVu
IHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFy
ZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmFiY2QwMDY2ZTc0YzJkZDRjNTE0NzZj
NGY3MGM4MGE0ODdlZDkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi1XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy51cGRhdGVTaGFkZXIgY29tbWFuZCB3aGVu
IHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb2YgYSByZW5kZXIgcGlwZWxpbmUgc2hh
cmUgdGhlIHNhbWUgbW9kdWxlLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnVw
ZGF0ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQKLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5TaW5n
bGVQaXBlbGluZQotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1QQVNTOiBWZXJ0ZXggYW5k
IEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVVwZGF0aW5nIHZl
cnRleCBzaGFkZXIgc291cmNlLi4uCi1QQVNTOiBWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBz
b3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVBBU1M6IFZlcnRleCBzb3VyY2Ugc2hvdWxkIGhh
dmUgY2hhbmdlZC4KLVVwZGF0aW5nIGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4KLVBBU1M6IFZl
cnRleCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotUEFT
UzogRnJhZ21lbnQgc291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5N
dWx0aXBsZVBpcGVsaW5lcwotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1DcmVhdGluZyBy
ZW5kZXIgcGlwZWxpbmUuLi4KLVBBU1M6IEJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBz
YW1lIHNvdXJjZS4KLVVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJjZS4uLgotUEFTUzog
U291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4KLVBBU1M6IEJvdGggcGlw
ZWxpbmVzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBzb3VyY2VzLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4
RnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4Y2Y5YTQ3NTYyMjQyMWM4MzY4OWM5YWQzN2QyMTkwYTAxY2U5ZTM5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxlZCh0
cnVlKTsKLQotY29uc3QgcmVuZGVyUGlwZWxpbmVTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRy
aWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
KSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1sZXQgZGV2
aWNlID0gbnVsbDsKLWxldCBzaGFkZXJNb2R1bGUgPSBudWxsOwotCi1hc3luYyBmdW5jdGlvbiBj
cmVhdGVSZW5kZXJQaXBlbGluZSgpIHsKLSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBsZXQg
YWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAg
ZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgfQotCi0gICAgaWYg
KCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHJlbmRlclBpcGVsaW5lU291cmNlfSk7Ci0KLSAgICAvLyBDb3BpZWQg
ZnJvbSB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbC4KLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJm
cmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xl
LXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ci
LCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBH
UFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAg
ICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJm
bG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFth
dHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Iik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFBy
b2dyYW1DcmVhdGVkKCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ3JlYXRpbmcgcmVu
ZGVyIHBpcGVsaW5lLi4uIik7Ci0gICAgICAgIGxldCBldmFsdXRlUHJvbWlzZSA9IEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKClgKTsKLQotICAgICAg
ICBpZiAoIVdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5zaXplKQotICAgICAgICAg
ICAgYXdhaXQgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmF3YWl0RXZlbnQoV0ku
Q29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpOwotCi0gICAgICAgIGxldCBjYW52YXMgPSBBcnJh
eS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbilbMF07Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdQVSwgIkNhbnZhcyBzaG91bGQgYmUgV2ViR1BVLiIpOwotCi0gICAgICAgIGxl
dCBpdGVtQWRkZWRFdmVudCA9IGF3YWl0IGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5h
d2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKTsKLSAgICAgICAgbGV0IHNo
YWRlclByb2dyYW0gPSBpdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KHNoYWRlclByb2dyYW0ucHJvZ3JhbVR5cGUgPT09IFdJLlNoYWRlclByb2dy
YW0uUHJvZ3JhbVR5cGUuUmVuZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGJlIGEgcmVuZGVy
IHBpcGVsaW5lLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChzaGFkZXJQcm9ncmFt
LnNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGhhdmUg
YSBzaGFyZWQgdmVydGV4IGFuZCBmcmFnbWVudCBtb2R1bGUuIik7Ci0KLSAgICAgICAgYXdhaXQg
ZXZhbHV0ZVByb21pc2U7Ci0gICAgICAgIHJldHVybiBzaGFkZXJQcm9ncmFtOwotICAgIH0KLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFk
ZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50LlNpbmdsZVBpcGVsaW5lIiwKLSAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIHRoZSB2ZXJ0ZXgvZnJhZ21lbnQgc2hh
ZGVyIHdpbGwgYWxzbyBhZmZlY3QgdGhlIGZyYWdtZW50L3ZlcnRleCBzaGFkZXIgaWYgdGhleSBi
b3RoIHVzZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwot
Ci0gICAgICAgICAgICBsZXQgW29yaWdpbmFsVmVydGV4U291cmNlLCBvcmlnaW5hbEZyYWdtZW50
U291cmNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2Vu
dC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVy
UHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQu
cmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKG9yaWdpbmFsVmVydGV4U291cmNlLCBv
cmlnaW5hbEZyYWdtZW50U291cmNlLCAiVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNl
cyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJVcGRhdGluZyB2ZXJ0ZXggc2hhZGVyIHNvdXJjZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQg
Q2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwgIi8vIE1PRElGSUVEIFZFUlRFWFxuXG4iICsg
b3JpZ2luYWxWZXJ0ZXhTb3VyY2Uuc291cmNlKTsKLQotICAgICAgICAgICAgbGV0IFt2ZXJ0ZXhT
b3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0
ZXhdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJl
cXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1
ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3Jh
bS5TaGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodmVydGV4U291cmNlQWZ0ZXJVcGRhdGluZ1Zl
cnRleCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCAiVmVydGV4IGFuZCBGcmFn
bWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0
aW5nVmVydGV4LCBvcmlnaW5hbFZlcnRleFNvdXJjZSwgIlZlcnRleCBzb3VyY2Ugc2hvdWxkIGhh
dmUgY2hhbmdlZC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5n
IGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4iKTsKLSAgICAgICAgICAgIGF3YWl0IENhbnZhc0Fn
ZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5GcmFnbWVudCwgIi8vIE1PRElGSUVEIEZSQUdNRU5UXG5cbiIgKyBvcmln
aW5hbEZyYWdtZW50U291cmNlLnNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGxldCBbdmVydGV4U291
cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdGcmFn
bWVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQu
cmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJl
cXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5n
RnJhZ21lbnQsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCAiVmVydGV4IGFu
ZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChmcmFnbWVudFNvdXJjZUFm
dGVyVXBkYXRpbmdGcmFnbWVudCwgb3JpZ2luYWxGcmFnbWVudFNvdXJjZSwgIkZyYWdtZW50IHNv
dXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLldl
YkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5NdWx0aXBsZVBpcGVsaW5lcyIsCi0gICAgICAgIGRl
c2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB1cGRhdGluZyBvbmUgcGlwZWxpbmUgd29uJ3QgYWZmZWN0
IGFueSBvdGhlciBwaXBlbGluZXMgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtMSA9IGF3
YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFt
MiA9IGF3YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLQotICAgICAgICAgICAgbGV0IFtvcmln
aW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMl0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShz
aGFkZXJQcm9ncmFtMS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVy
dGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNo
YWRlclByb2dyYW0yLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0
ZXgpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNo
YWxsb3dFcXVhbChvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMiwg
IkJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHNvdXJjZS4iKTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJj
ZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRl
clByb2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgs
ICIvLyBNT0RJRklFRCBWRVJURVhcblxuIiArIG9yaWdpbmFsVmVydGV4U291cmNlMS5zb3VyY2Up
OwotCi0gICAgICAgICAgICBsZXQgW25ld1ZlcnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTJd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVl
c3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbTEuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3Jh
bS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVz
dFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMi5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwob3JpZ2luYWxWZXJ0ZXhTb3VyY2UxLCBuZXdW
ZXJ0ZXhTb3VyY2UxLCAiU291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4i
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFsKG5ld1Zl
cnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTIsICJCb3RoIHBpcGVsaW5lcyBzaG91bGQgaGF2
ZSBkaWZmZXJlbnQgc291cmNlcy4iKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KLTxwPldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRl
ciBjb21tYW5kIHdoZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBvZiBhIHJlbmRl
ciBwaXBlbGluZSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuPC9wPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJn
cHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjMGU4NjRhNDNiNzJiMTdj
MzM1YTY1ODI2NmJmYzkwNzVlOTViMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13
ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUiKTsKLQotICAgIGZ1
bmN0aW9uIHRlc3Qoe25hbWUsIHByb2dyYW1UeXBlLCBzaGFkZXJUeXBlLCBzb3VyY2UsIHNob3Vs
ZFRocm93fSkgewotICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1l
LAotICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgICAgICBsZXQgc2hhZGVy
UHJvZ3JhbSA9IEluc3BlY3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9n
cmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFtKQotICAgICAgICAg
ICAgICAgICAgICB0aHJvdyAiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSI7Ci0KLSAgICAgICAgICAg
ICAgICBsZXQgb3JpZ2luYWxTb3VyY2UgPSBhd2FpdCBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVy
U291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgSW5z
cGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRl
bnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGF3YWl0IENhbnZhc0Fn
ZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUsIHNv
dXJjZSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgbmV3U291cmNlID0gYXdhaXQgQ2FudmFzQWdl
bnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5
cGUpOwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1
YWwob3JpZ2luYWxTb3VyY2UsIG5ld1NvdXJjZSwgIlNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2Vk
LiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICB0ZXN0KHsKLSAg
ICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuVmFsaWQiLAot
ICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRl
LAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuQ29tcHV0
ZSwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBDT01QVVRFCi1bbnVtdGhyZWFkcygyLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6
IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewot
ICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAq
IDIuMDsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZh
cy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuSW52YWxpZCIsCi0gICAgICAgIHByb2dyYW1U
eXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGUsCi0gICAgICAgIHNoYWRl
clR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRlLAotICAgICAgICBzb3Vy
Y2U6ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAg
ICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlZlcnRl
eC5WYWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1U
eXBlLlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJU
eXBlLlZlcnRleCwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBWRVJURVgKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
aSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1Zf
UG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0g
ICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIu
V2ViR1BVLlZlcnRleC5JbnZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclBy
b2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQ
cm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LAotICAgICAgICBzb3VyY2U6ICJJTlZBTElEIiwKLSAg
ICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAg
bmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdtZW50LlZhbGlkIiwKLSAgICAg
ICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAg
ICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQsCi0g
ICAgICAgIHNvdXJjZTogYC8vIENIQU5HRUQgRlJBR01FTlQKLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0
ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDog
U1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0gICAgfSk7Ci0KLSAg
ICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdt
ZW50LkludmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9n
cmFtVHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hh
ZGVyVHlwZS5GcmFnbWVudCwKLSAgICAgICAgc291cmNlOiAiSU5WQUxJRCIsCi0gICAgICAgIHNo
b3VsZFRocm93OiB0cnVlLAotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLTxw
PldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLjwvcD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2M2RlMmJjZGJmY2IzOWRlMWNhODViMTc3MzI3Mjc1N2E4Y2RhYTEwLi5jZWI1ZTM0OWMw
ZmU3YjdmMGZhYWI4ZDg4YjE5ZDIzN2IzOWVjYWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjYxLDE2ICsxNjYxLDYgQEAgaHR0cC93cHQvY3Jl
ZGVudGlhbC1tYW5hZ2VtZW50LyBbIFNraXAgXQogaHR0cC93cHQvd2ViYXV0aG4vIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NyZWRlbnRpYWwtbWFuYWdlbWVudC8g
WyBTa2lwIF0KIAotIyBXZWJHUFUKLXdlYmdwdSBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9j
cmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1
ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVx
dWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9y
ZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9zaGFk
ZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3Vw
ZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQotCiAj
IFdlYkdMMgogd2Via2l0Lm9yZy9iLzE2NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC10cmFu
c2Zvcm1lZC12YXJ5aW5nLW5hbWUtY3Jhc2guaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2
NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItbWl4LXdpdGgtYm9vbC5odG1sIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjNTM4Y2U1
MTI4N2I2MjZlNjY4ZWEwNjE2YTAxMTkzNjA3Y2FlZjYuLmMwYzVlZDA2YmYxY2FhOTRkNTc2Mzli
YmRhMDQzZWY3M2E2ZDlhMTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01NiwxNCArNTYsNiBAQCB3ZWJraXQub3JnL2IvMjAwMzA4IGZhc3QvZXZlbnRz
L3RvdWNoL2lvcy9jb250ZW50LW9ic2VydmF0aW9uL25vbi12aXNpYmxlLWNvbnRlbgogCiBtZWRp
YS92aWRlby1zdXBwb3J0cy1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0KIAotaW5zcGVjdG9yL2Nh
bnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52
YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2Nh
bnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAg
XQotCiAjIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZAogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZjY0MzkxZmI3MTM2MTQ0OGJiOGMwNGY0MWY2ZThlYzQ3NmQyOGMz
OC4uMDAyYTQ3MTBmNTJiZWNiNTJlNzQyY2EzYWQ1Y2E4ZTMwNmE4OTY3ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDcsMTUgKzQ3LDYg
QEAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaSBbIFNraXAgXQogY3NzLXR5cGVkb20gWyBTa2lw
IF0KIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIAotd2ViZ3B1IFsgU2tpcCBdCi1pbnNwZWN0b3Iv
Y2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2Nh
bnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3Iv
Y2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tp
cCBdCi0KICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdL
MSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhY2FwdHVyZS1zdHJlYW1zCkBAIC0xMzgzLDQgKzEzNzQsNCBAQCB3ZWJraXQub3JnL2Iv
MjI3NzYyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlvbi9m
b2N1cy90aGUtYQogd2Via2l0Lm9yZy9iLzIyODU2MSBodHRwL3Rlc3RzL21lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy9tYWNvcy1mdWxsc2NyZWVuLW1lZGlhLWNvbnRyb2xzL21hY29zLWZ1bGxz
Y3JlZW4tbWVkaWEtY29udHJvbHMtbGl2ZS1icm9hZGNhc3QuaHRtbCBbIFBhc3MgVGltZW91dCBd
CiAKICMgd2Via2l0Lm9yZy9iLzIyODIwMCBBZGp1c3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgZm9y
IE1vbnRlcmV5IG9uIE9wZW4gU291cmNlIDxyZGFyOi8vODAzNDUwNDg+OgotWyBNb250ZXJleSBd
IHdlYnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKK1sgTW9udGVyZXkgXSB3ZWJydGMvaDI2NC1oaWdoLmh0bWwgWyBGYWlsdXJlIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxOTA0
NjMxMTNhMzE1NTczZTA3OTJjMjYwNGMzZTZkYzk2MGZkMDAwLi4zNmUxN2Y2NTAxNzg1ODJhMzI4
YTM1ZjQ4N2ZlODYyNzk3NDYxYTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC05NzUsMjEgKzk3NSwxMyBAQCB3ZWJraXQub3JnL2IvMTg3
ODI4IFsgUmVsZWFzZSBdIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2ZsZXgtY29udGVudC1zaXplZC1j
b2x1bW5zLQogCiB3ZWJraXQub3JnL2IvMTk4NjYzIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1zYW1lLXNpdGUtc2hvdWxkLWhh
dmUtYWNjZXNzLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTk4OTIxIHdl
YmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLQotd2Via2l0Lm9yZy9iLzE5OTY1MSBbIE1vamF2ZSBEZWJ1ZyBdIHdlYmdwdS93aGxz
bC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xvdyBdCi0KIHdlYmtpdC5vcmcvYi8xOTkwODkg
WyBEZWJ1ZyBdIHBsdWdpbnMvd2luZG93LW9wZW4uaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8v
cHJvYmxlbS81NjUwNjA2Mz4gTGF5b3V0IFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0
bWwgaXMgYSBmbGFreSBmYWlsdXJlICgyMDMyNTYpCiB3ZWJraXQub3JnL2IvMjAzMjU2IFsgRGVi
dWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8yMDUzMDEgaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdl
YmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNTgwOCBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC91bmljb2RlLWJpZGktb3RoZXItbmV1dHJhbHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTg5NDIgd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJp
YW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcv
Yi8yMDY4NjQgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNjA5MjkyMzk+IFsgbWFj
T1Mgd2syIF0gZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sIGlz
IGEgZmxha3kgdGltZW91dApAQCAtOTk5LDkyICs5OTEsNDggQEAgd2Via2l0Lm9yZy9iLzIwNjcw
OCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBbIFBh
c3MgRmEKIAogd2Via2l0Lm9yZy9iLzIwNjk2MSBbIE1vamF2ZSBdIG1lZGlhL21lZGlhLWZyYWdt
ZW50cy9UQzAwMzUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcwNzgg
d2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzIwNzExNyB3ZWJncHUvd2hsc2wvbmVzdGVk
LWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcx
Mjcgd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXguaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDY5MDMgaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0
Lmh0bWwgWyBQYXNzIENyYXNoIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3MTQxIFsgRGVi
dWcgXSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LWJpdG1hcHJlbmRlcmVyLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3MTY2IGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcxOTkgd2ViZ3B1L3do
bHNsL2xvb3BzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2Iv
MjA3MjAwIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjAyIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUtZ3JhZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9y
Zy9iLzIwNjcxOCBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJn
bDIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMjA3MjA5IGluc3BlY3Rvci9o
ZWFwL2dldFByZXZpZXcuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9y
Zy9iLzIwNzIyMiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0yLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjY3IHdlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3MjY5IFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlcnZlci1jbG9zZS5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtp
dC5vcmcvYi8xODM2ODQgaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA3Mjk0IHdlYmdwdS93aGxz
bC9kb3QtZXhwcmVzc2lvbnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtp
dC5vcmcvYi8yMDczMDMgbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS1pZnJhbWUu
aHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMjA3NDYwIHdlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NDY1IFsgRGVidWcgXSBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc0NjYgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjA3NDc2IHdlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVz
LXByb3Blcmx5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2Iv
MjA3NTA4IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3NTk5IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NjMyIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3N0aWNreS9zdGlja3ktZHVyaW5nLXJ1YmJlcmJhbmQuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2MzEgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvZml4ZWQvZml4ZWQtZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2MzUgZmFzdC9ldmVudHMv
YmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXSAKIAotd2Via2l0Lm9yZy9iLzIwNzYzNiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxl
LWJpYXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDc2
Mzggd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMjA2ODUyIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9i
LzIwNzcwMCB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NzI4IFsgUmVsZWFzZSBdIGFjY2Vz
c2liaWxpdHkvcHJlc3MtdGFyZ2V0cy1jZW50ZXItcG9pbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLXdlYmtpdC5vcmcvYi8yMDc3Nzkgd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXIt
c2hvdWxkLXR5cGUtY2hlY2suaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtp
dC5vcmcvYi8yMDc3OTYgWyBSZWxlYXNlIF0gZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFk
b3cuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc3OTgg
d2VicnRjL2Nvbm5lY3Rpb24tc3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8yMDc4Mzkgd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3ODY0IHdlYmdwdS93aGxzbC9kby13aGlsZS1s
b29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3Jn
L2IvMjA3OTM4IGh0dHAvd3B0L2NyeXB0by9kZXJpdmUtaG1hYy1rZXktY3Jhc2guYW55Lmh0bWwg
WyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwNzk2MiBhY2Nlc3NpYmlsaXR5L21hYy9h
cmlhLW1lbnUtaXRlbS1zZWxlY3RlZC1ub3RpZmljYXRpb24uaHRtbCBbIFNsb3cgXQogCi13ZWJr
aXQub3JnL2IvMjA4MDA1IHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA4MDE0IFsgRGVidWcg
XSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL25vLXN1YnByb3RvY29sLmh0bWwgWyBQ
YXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwODA2MiBodHRwL3dwdC9mZXRjaC9kaXNhYmxl
LXNwZWN1bGF0aXZlLWZvci1yZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMDgyMjIgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA4MzQwIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8y
MDgzOTAgWyBEZWJ1ZyBdIGZhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1yZXBhaW50Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA4Mzk2IGh0dHAvdGVzdHMvbWlzYy9v
YmplY3QtZW1iZWRkaW5nLXN2Zy1kZWxheWVkLXNpemUtbmVnb3RpYXRpb24tMi5odG0gWyBQYXNz
IEZhaWx1cmUgXQpAQCAtMTA5Nyw4ICsxMDQ1LDYgQEAgd2Via2l0Lm9yZy9iLzIwODg4OSBmYXN0
L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT24K
IAogd2Via2l0Lm9yZy9iLzIwOTAwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGlt
aW5nLzA4NS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTAyNCBbIERl
YnVnIF0gd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWwgWyBQYXNzIENyYXNoIF0KLQog
d2Via2l0Lm9yZy9iLzIwOTA3NyBzdmcvY3VzdG9tL29iamVjdC1zaXppbmctZXhwbGljaXQtd2lk
dGgueGh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA5MDUyIGZhc3Qvc2Ny
b2xsaW5nL21hYy9hYnNvbHV0ZS1pbi1vdmVyZmxvdy1zY3JvbGwtZHluYW1pYy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTExOTAsOSArMTEzNiw2IEBAIHdlYmtpdC5vcmcvYi82
ODI3OCBodHRwL3Rlc3RzL2hpc3RvcnkvYmFjay13aXRoLWZyYWdtZW50LWNoYW5nZS5weSBbIFBh
c3MgRmFpbHVyCiAjIDxyZGFyOi8vcHJvYmxlbS8zNzMzMDM3Nz4gQVNhbiB0ZXN0cyBleGl0aW5n
IGVhcmx5IGR1ZSB0byB0aW1lb3V0cwogWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cyBbIFNraXAgXQogCi0jIDxy
ZGFyOi8vcHJvYmxlbS82MDEwNTkyNz4gWyBNYWMgd2syIFJlbGVhc2UgXSB3ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBpcyBmbGFreSBmYWlsaW5nCi1bIFJlbGVhc2UgXSB3
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0K
ICMgPHJkYXI6Ly9wcm9ibGVtLzYwNTA3NTI2PiBSRUdSRVNTSU9OIChyMjU4MTI0LXIyNTgyMzAp
IFsgTWFjIHdrMiBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lv
bnMvYmxvY2tlZC13ZWJzb2NrZXQtY3Jhc2guaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMvYmxvY2tlZC13ZWJzb2Nr
ZXQtY3Jhc2guaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCkBAIC0xMjgwLDggKzEyMjMsNiBAQCB3ZWJr
aXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZh
bGlkYXRpb24tYmFjay1uYXZpZwogCiB3ZWJraXQub3JnL2IvMjE1NTgxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRzLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjE1NjA2IHdlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJr
aXQub3JnL2IvMjE1NjExIFsgRGVidWcgXSBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9v
dmVyZmxvdy1vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQog
CiAjIHJkYXI6Ly82NTI2OTU4OSAoWyBtYWNPUyBhbmQgaU9TIF0gbWVkaWEvdnA5Lmh0bWwgaXMg
ZmFpbGluZyBjb25zaXN0ZW50bHkuKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGYxY2YyNGY0ZjFhYjNkMDY0MGIzMmUyMWE0
ZWM1MDlkYWQyMmJjODEuLmRmOTAxMDkwNGQ1NzdlODVhMDc2NjY3YTkzN2FkNzdlNmQ4ZjU5NTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTksNyArOSw2IEBAIG5hdmlnYXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9y
LmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdh
dG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmln
YXRvci5pc0xvZ2dlZEluKCkgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBu
YXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKQEAgLTQzLDcgKzQyLDYgQEAgbmF2aWdhdG9yLmNvbnRh
Y3RzIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRl
bnRpYWxzIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdh
dG9yLmdwdSBpcyBPSwogbmF2aWdhdG9yLmlzTG9nZ2VkSW4oKSBpcyBPSwogbmF2aWdhdG9yLmph
dmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MmExYjk3Y2U4NzM1MmJjZThlMDYw
NTEyMGUwNTU0N2EwNzQ4MTg3Li4xOTRjMTYxNjk5ZGJiMTk5MzgxNzgwNGY0NTUzNmYzYTE5MDA2
MWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU0
NSwzOCArMTU0NSw2IEBAIHdlYmtpdC5vcmcvYi8yMTIxNzIgWyBDYXRhbGluYSBdIGZhc3QvdGV4
dC9mb250LWNvbGxlY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1CiAKIHdlYmtpdC5vcmcvYi8y
MDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L3ZpZGVvX3RpbWV1cGRhdGVfb25fc2Vlay5o
dG1sIFsgVGltZW91dCBQYXNzIF0KIAotIyByZGFyOi8vNTU0MDU4NTEgKFsgbWFjT1MgXSBMYXlv
dXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5nbGUtc3RyaXAuaHRtbCBhcmUgZmxha3kgZmFpbHVyZXMu
ICgyMDE4MjcpKQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5n
bGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAx
ODI3IHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5n
bGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAx
ODI3IHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgy
NyB3ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10
cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyByZGFyOi8v
NTUyMDQ3NzUgKFJFR1JFU1NJT04gKE1hY09TKTogTWFueSB3ZWJncHUvd2hsc2wvKiB0ZXN0cyBh
cmUgZmxha3kgZmFpbHVyZXMpCi13ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1
dGUtbG9jYXRpb25zLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNs
L25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTcuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdIAotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQot
Ci13ZWJraXQub3JnL2IvMjA1NTI0IHdlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzIwNTUyNSB3ZWJncHUvd2hs
c2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiAjIFRo
ZSB0ZXN0IHJ1bm5lciBpcyBmYWlsaW5nIGluIGFuIHVucmVsYXRlZCwgdW5leHBsYWluZWQsIGlu
dmlzaWJsZSB0byB0aGUgaHVtYW4gZXllLCAyIHBpeGVscyBkaWZmZXJlbmNlLgogd2Via2l0Lm9y
Zy9iLzIwMTQwMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS12aWRlby1pcy12aXNpYmxlLmh0bWwgWyBTa2lwIF0KIApAQCAtMTYxMiwxMCAr
MTU4MCw2IEBAIHdlYmtpdC5vcmcvYi8yMDIwNjQgd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVy
cnVwdGVkLWluLWJhY2tncm91bmQuaHRtbCBbIFBhc3MKIAogd2Via2l0Lm9yZy9iLzIwNTc1NiB3
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvZ2xzbDMvbm8tYXR0cmlidXRlLXZlcnRleC1zaGFkZXIu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDU4NjIgd2ViZ3B1L3dobHNs
L3doaWxlLWxvb3AtYnJlYWsuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjA1ODY1IHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1l
LTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1ODY3IHdl
YmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotCiB3ZWJraXQub3JnL2IvMjA0MzEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3ZnL2ltcG9ydC9zdHJ1Y3QtZG9tLTA2LWItbWFudWFsLnN2ZyBbIEZhaWx1cmUgUGFzcyBdCiAK
ICMgTG9jYWxlLXNwZWNpZmljIHNoYXBpbmcgaXMgb25seSBlbmFibGVkIG9uIGNlcnRhaW4gT1Nl
cy4KQEAgLTE2OTYsOCArMTY2MCw2IEBAIHdlYmtpdC5vcmcvYi8yMDg1OTIgc3ZnL2N1c3RvbS9v
YmplY3Qtc2l6aW5nLWV4cGxpY2l0LWhlaWdodC54aHRtbCBbIFBhc3MgRmFpbHVyCiAKIHdlYmtp
dC5vcmcvYi8yMDkyNTcgc3ZnL2FzLW9iamVjdC9vYmplY3QtYm94LXNpemluZy1uby13aWR0aC1o
ZWlnaHQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDkwNTYgd2ViZ3B1
L3dobHNsL3VpbnQtYml0d2lzZS5odG1sIFsgUGFzcyBDcmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8y
MDkwNzIgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY3NzL3NoYXJlZC1zdHlsZXNoZWV0LW11dGF0aW9u
LXByZWNvbnN0cnVjdC5odG1sIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzIwNzE1MCBwbGF0Zm9ybS9tYWMvd2VicnRjL2NhcHR1cmVDYW52YXMtd2VicnRjLXNvZnR3YXJl
LWVuY29kZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KQEAgLTE3NzEsOCArMTczMyw2
IEBAIHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvCiAKIHdlYmtpdC5vcmcvYi8yMTUxNzcgWyBSZWxl
YXNlIF0gZWRpdGluZy9zZWxlY3Rpb24vbmF2aWdhdGlvbi1jbGVhcnMtZWRpdG9yLXN0YXRlLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjE1MjQ3IHdlYmdwdS93aGxzbC9k
b250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIxNTI3MSBbIERlYnVnIF0gc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL25l
dy1kYXRhYmFzZS1hZnRlci11c2VyLWRlbGV0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzIxNTQ1MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLXBsYXktbmVnYXRpdmUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCkBAIC0xODY5LDExICsxODI5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5LXdpdGhvdXQKICMg
PHJkYXI6Ly9wcm9ibGVtLzYyMzE3NzIzPiBbIEd1YXJkLU1hbGxvYyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3RlLXBsYXliYWNrL3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0
aWFsLWNhbGxiYWNrLmh0bWwgaXMgZmxha3kgY3Jhc2hpbmcgd2l0aCAnV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3RlSGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzQ2hhbmdlZCgpJyBhbGVy
dC4KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxh
eWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRpYWwtY2FsbGJhY2suaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCi0jIDxyZGFyOi8vcHJvYmxlbS81Njk2MTQ5OT4gTWFueSB3ZWJHUFUgdGVzdCBmYWls
IG9uIHByb2R1Y3Rpb24gYW5kIGNyYXNoIG9uIERlYnVnCi1bIEJpZ1N1cisgXSBpbnNwZWN0b3Iv
Y2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLVsgQmlnU3Vy
KyBdIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFn
bWVudC5odG1sIFsgU2tpcCBdCi1bIEJpZ1N1cisgXSBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQotCiAjIFdlYlAgaW1hZ2VzCiBbIEJpZ1N1cisgXSBm
YXN0L2ltYWdlcy93ZWJwLWFzLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQog
WyBCaWdTdXIrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtd2VicC1hcy1pbWFnZS5odG1sIFsgUGFz
cyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZjZWI2
OGZmODgxZjJlYWYyNzkxYTQwM2FhY2VkZjY1NDk4YTFjZDUuLmY0YzIxYjA3Nzk3NGNiZDBlNWRk
MTdkZGZiMDliMDRiYzliN2E2ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00MTI5LDE2ICs0MTI5LDYgQEAgd2Via2l0Lm9yZy9iLzE5MDQ3MiBmYXN0
L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWh0bWxjb2xsZWN0aW9uLmh0bWwgWwog
CiB3ZWJraXQub3JnL2IvMTkwNTIwIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWFjcm9z
cy1zaGFkb3ctYm91bmRhcmllcy13aXRoLXN0eWxlLTIuaHRtbCBbIENyYXNoIEZhaWx1cmUgXQog
Ci0jIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKLXdlYmdwdSBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lw
IF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQu
aHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5s
aW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGlu
Zy1pbWFnZXMyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTExOTQgZmFzdC9kb20v
aW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sIFsgRmFpbHVyZSBdCkBAIC00NjY3
LDQgKzQ2NTcsNCBAQCB3ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zZm9ybS1hbmltYXRp
b24tdG8tc2NhbGUtemVyby13aXRoLWltcGxpY2l0LWZyb20tawogZmFzdC9ldmVudHMvZHJvcHpv
bmUtMDAyLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFn
LWFuZC1kcm9wLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1s
MTBuLWlucHV0Lmh0bWwgWyBQYXNzIENyYXNoIF0KLWZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1z
cGluYnV0dG9uLWluLW11bHRpLWNvbHVtbi5odG1sIFsgUGFzcyBDcmFzaCBdClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorZmFzdC9mb3Jtcy9udW1iZXIvbnVtYmVyLXNwaW5idXR0b24taW4t
bXVsdGktY29sdW1uLmh0bWwgWyBQYXNzIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmlu
ZC1ncm91cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzA2
MDFkMmRjOTQ4NGJjNjJlNzg3YTBlNmQxMTY2MTFiMzgwOWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vw
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBDcmVh
dGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRlIGFuZCB1c2UgbWFu
eSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGNvbXB1dGUgcGFzcy4KLVBBU1MgQ3JlYXRlIGFu
ZCBhY2Nlc3MgYSB1bmlmb3JtLWJ1ZmZlciBpbiBhIEdQVUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRl
IGFuZCBhY2Nlc3MgYSBzYW1wbGVkIHRleHR1cmUgaW4gYSBHUFVCaW5kR3JvdXAuCi1QQVNTIENy
ZWF0ZSBhbmQgdXNlIG11bHRpcGxlIEdQVUJpbmRHcm91cHMgaW4gYSBzaW5nbGUgZGlzcGF0Y2gu
Ci1QQVNTIEJpbmQgYSBzaW5nbGUgR1BVQnVmZmVyIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4g
ZGlmZmVyZW50IEdQVUJpbmRHcm91cHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JpbmQtZ3JvdXBzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3NzEwMjUxMTAyZGRlN2Q0YTk2YzljMjZj
ZTNkNjgwNGFlMTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQ0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
dGl0bGU+Q3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3VwLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRl
c3RzID0ge307Ci0KLWNvbnN0IGJhc2ljQnVmZmVyU2hhZGVyID0gYAotW251bXRocmVhZHMoMSwg
MSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZV9tYWluKGRldmljZSBpbnRbXSBidWZmZXIgOiBy
ZWdpc3Rlcih1MCkpCi17Ci0gICAgKytidWZmZXJbMF07Ci19Ci1gOwotCi1sZXQgYmFzaWNQaXBl
bGluZTsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgdXNlIGEgYmFzaWMgR1BVQmluZEdyb3VwLiJdID0g
YXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXJMYXlvdXRCaW5kaW5nID0gewotICAg
ICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01Q
VVRFLAotICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgfTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeyBiaW5kaW5n
czogW2J1ZmZlckxheW91dEJpbmRpbmddIH0pOwotCi0gICAgY29uc3QgYmFzaWNCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JB
R0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0geyBidWZmZXI6IGJhc2ljQnVmZmVyLCBzaXplOiA0IH07Ci0gICAgY29uc3QgYmluZEdyb3Vw
QmluZGluZyA9IHsgYmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmcgfTsKLQotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoeyBsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXSB9KTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBiYXNpY1NoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBiYXNpY0J1ZmZlclNoYWRl
ciB9KTsKLSAgICBiYXNpY1BpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7
Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTog
ewotICAgICAgICAgICAgbW9kdWxlOiBiYXNpY1NoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29u
c3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAg
cGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMg
PSBuZXcgSW50MzJBcnJheShhd2FpdCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAg
YmFzaWNCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDEsICJT
dG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQot
dGVzdHNbIkNyZWF0ZSBhbmQgdXNlIG1hbnkgR1BVQmluZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21w
dXRlIHBhc3MuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlckxheW91dEJp
bmRpbmcgPSB7Ci0gICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNo
YWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dCh7IGJpbmRpbmdzOiBbYnVmZmVyTGF5b3V0QmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBi
YXNpY0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7IGJ1ZmZlcjogYmFzaWNCdWZmZXIsIHNpemU6IDQgfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0geyBiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZyB9OwotCi0gICAgY29uc3QgbnVtR3JvdXBzID0gMTAwMDsKLSAgICBsZXQgYmluZEdyb3Vw
cyA9IG5ldyBBcnJheShudW1Hcm91cHMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtR3Jv
dXBzOyArK2kpCi0gICAgICAgIGJpbmRHcm91cHNbaV0gPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
KHsgbGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ10g
fSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21w
dXRlUGFzcygpOwotCi0gICAgbGV0IGogPSAwOwotICAgIGZvciAoOyBqIDwgbnVtR3JvdXBzOyAr
K2opIHsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0g
ICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXBzW2pdKTsKLSAgICAg
ICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgfQotCi0gICAgcGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2Fp
dCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgYmFzaWNCdWZmZXIudW5tYXAoKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIGosICJTdG9yYWdlIGJ1ZmZlciBhY2Nlc3Nl
ZCBzdWNjZXNzZnVsbHkgdGhyb3VnaCBtdWx0aXBsZSBiaW5kIGdyb3Vwcy4iKTsKLX07Ci0KLWNv
bnN0IHVuaWZvcm1CdWZmZXJTaGFkZXIgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1
dGUgdm9pZCBjb21wdXRlX21haW4oY29uc3RhbnQgaW50W10gdW5pZm9ybXMgOiByZWdpc3Rlcihi
MCksIGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MSkpCi17Ci0gICAgYnVmZmVyWzBd
ICs9IHVuaWZvcm1zWzBdOwotfQotYDsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgdW5p
Zm9ybS1idWZmZXIgaW4gYSBHUFVCaW5kR3JvdXAuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVC
dWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsK
LSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5QnVmZmVyKS5zZXQoWzQyXSk7Ci0gICAgdW5p
Zm9ybUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAg
ICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0
YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAgICAg
IH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBH
UFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVy
IgotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAg
ICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNv
dXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogdW5pZm9ybUJ1ZmZlciwKLSAgICAgICAg
ICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAg
IGJpbmRpbmc6IDEsCi0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1
ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBM
YXlvdXRdIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1CdWZmZXJTaGFkZXIgfSk7Ci0KLSAgICBjb25zdCBwaXBl
bGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVs
ZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShw
aXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBzdG9yYWdl
QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBzdG9yYWdlQnVmZmVyLnVubWFwKCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCA0MiwgIlN0b3JhZ2UgYnVmZmVyIGJpbmRpbmcgd3Jp
dHRlbiB0byBzdWNjZXNzZnVsbHkuIik7Ci19OwotCi1jb25zdCBzYW1wbGVkVGV4dHVyZVNoYWRl
ciA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihU
ZXh0dXJlMkQ8dWludD4gaW5wdXRUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIGlucHV0
U2FtcGxlciA6IHJlZ2lzdGVyKHMxKSwgZGV2aWNlIHVpbnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1
MikpCi17Ci0gICAgb3V0cHV0WzBdID0gU2FtcGxlKGlucHV0VGV4dHVyZSwgaW5wdXRTYW1wbGVy
LCBmbG9hdDIoMCwgMCkpOwotfQotYDsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgc2Ft
cGxlZCB0ZXh0dXJlIGluIGEgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBjb25zdCBbdGV4dHVyZURhdGFCdWZmZXIsIHRleHR1cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
U1JDIH0pOwotICAgIG5ldyBVaW50MzJBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpLnNldChbNDJd
KTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZVNp
emUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxIH07Ci0gICAgY29uc3QgdGV4dHVy
ZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0g
ICAgICAgIGZvcm1hdDogInJnYmE4dWludCIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNh
Z2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVAotICAgIH0pOwotCi0gICAgY29u
c3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsK
LSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAg
ICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6
ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEs
Ci0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAg
ICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6
IDIsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAg
ICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAg
cmVzb3VyY2U6IGRldmljZS5jcmVhdGVTYW1wbGVyKHt9KQotICAgICAgICB9LCB7Ci0gICAgICAg
ICAgICBiaW5kaW5nOiAyLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAg
ICBidWZmZXI6IG91dHB1dEJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2FtcGxlZFRleHR1cmVTaGFkZXIgfSk7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
eyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgIGNvbnN0IHBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDog
cGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9k
dWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWlu
IgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJU
b1RleHR1cmUoewotICAgICAgICBidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLAotICAgICAgICBy
b3dQaXRjaDogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9LCB7IHRleHR1cmU6IHRl
eHR1cmUgfSwgdGV4dHVyZVNpemUpOwotCi0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmlu
aXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgVWludDMyQXJyYXkoYXdhaXQgb3V0
cHV0QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBvdXRwdXRCdWZmZXIudW5tYXAoKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiQ29ycmVjdCB2YWx1ZSBzYW1wbGVkIGZy
b20gYSBib3VuZCAyRCB0ZXh0dXJlLiIpOwotfTsKLQotY29uc3QgY29tYm9TaGFkZXIgPSBgCi1b
bnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oCi0gICAgVGV4
dHVyZTJEPHVpbnQ+IGlucHV0VGV4dHVyZSA6IHJlZ2lzdGVyKHQwLCBzcGFjZTApLCAKLSAgICBz
YW1wbGVyIGlucHV0U2FtcGxlciA6IHJlZ2lzdGVyKHMwLCBzcGFjZTEpLCAKLSAgICBjb25zdGFu
dCB1aW50W10gaW5wdXQgOiByZWdpc3RlcihiMCwgc3BhY2UyKSwgCi0gICAgZGV2aWNlIHVpbnRb
XSBvdXRwdXQgOiByZWdpc3Rlcih1MCwgc3BhY2UzKSkKLXsKLSAgICBvdXRwdXRbMF0gPSBpbnB1
dFswXSArIFNhbXBsZShpbnB1dFRleHR1cmUsIGlucHV0U2FtcGxlciwgZmxvYXQyKDAsIDApKTsK
LX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIHVzZSBtdWx0aXBsZSBHUFVCaW5kR3JvdXBzIGlu
IGEgc2luZ2xlIGRpc3BhdGNoLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBbdGV4
dHVyZURhdGFCdWZmZXIsIHRleHR1cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVy
TWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIH0pOwotICAg
IG5ldyBVaW50MzJBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpLnNldChbMTddKTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7IHdpZHRo
OiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5j
cmVhdGVUZXh0dXJlKHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1h
dDogInJnYmE4dWludCIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8
IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVAotICAgIH0pOwotCi0gICAgY29uc3QgW2lucHV0QnVm
ZmVyLCBpbnB1dEFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXpl
OiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgVWludDMyQXJy
YXkoaW5wdXRBcnJheUJ1ZmZlcikuc2V0KFsyNV0pOwotICAgIGlucHV0QnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTog
NCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RCB9KTsKLQotICAgIGNvbnN0IGJnbDAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsK
LSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAg
ICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6
ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmdsMSA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAg
ICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJT
dGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH1dCi0g
ICAgfSk7Ci0gICAgY29uc3QgYmdsMiA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewot
ICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAg
ICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTog
InVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnbDMgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAg
ICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3Rh
Z2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAg
fV0KLSAgICB9KQotCi0gICAgY29uc3QgYmcwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0g
ICAgICAgIGxheW91dDogYmdsMCwKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKQotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnMSA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJnbDEsCi0gICAgICAgIGJpbmRpbmdzOiBbewot
ICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiBkZXZpY2UuY3Jl
YXRlU2FtcGxlcih7fSkKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzIgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wyLAotICAgICAgICBiaW5k
aW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTog
ewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogaW5wdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAg
c2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJn
MyA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJnbDMsCi0gICAg
ICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJl
c291cmNlOiB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyOiBvdXRwdXRCdWZmZXIsCi0gICAgICAg
ICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9XQotICAgIH0pOwotCi0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6
IGNvbWJvU2hhZGVyIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JnbDAsIGJnbDEsIGJnbDIsIGJn
bDNdIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVs
aW5lKHsKLSAgICAgICAgbGF5b3V0OiBwaXBlbGluZUxheW91dCwKLSAgICAgICAgY29tcHV0ZVN0
YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZSh7Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVy
ZURhdGFCdWZmZXIsCi0gICAgICAgIHJvd1BpdGNoOiA0LAotICAgICAgICBpbWFnZUhlaWdodDog
MAotICAgIH0sIHsgdGV4dHVyZTogdGV4dHVyZSB9LCB0ZXh0dXJlU2l6ZSk7Ci0KLSAgICBjb25z
dCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBw
YXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJnMCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDEsIGJnMSk7Ci0g
ICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDIsIGJnMik7Ci0gICAgcGFzc0VuY29kZXIuc2V0
QmluZEdyb3VwKDMsIGJnMyk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0g
ICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBV
aW50MzJBcnJheShhd2FpdCBvdXRwdXRCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIG91dHB1
dEJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJDb3Jy
ZWN0IHZhbHVlIHNhbXBsZWQgZnJvbSBhIGJvdW5kIDJEIHRleHR1cmUuIik7Ci19OwotCi10ZXN0
c1siQmluZCBhIHNpbmdsZSBHUFVCdWZmZXIgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBkaWZm
ZXJlbnQgR1BVQmluZEdyb3VwcyJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBudW1J
bnB1dHMgPSA0OwotICAgIGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9
IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0ICogbnVtSW5wdXRzLCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5
QnVmZmVyKS5zZXQoWzEsIDIsIDMsIDM2XSk7Ci0gICAgdW5pZm9ybUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
IH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwK
LSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAg
ICAgICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJp
bmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRF
LAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0p
OwotCi0gICAgbGV0IGJpbmRHcm91cHMgPSBuZXcgQXJyYXkobnVtSW5wdXRzKTsKLSAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytpKSB7Ci0gICAgICAgIGJpbmRHcm91cHNbaV0g
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgICAgIGxheW91dDogYmluZEdyb3Vw
TGF5b3V0LAotICAgICAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICAgICAgYmluZGlu
ZzogMCwKLSAgICAgICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgICAgICBi
dWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldDogaSAqIG51
bUlucHV0cywKLSAgICAgICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAg
ICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1
ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH1dCi0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdW5pZm9ybUJ1ZmZlclNoYWRlciB9KTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxh
eW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAg
ICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0
ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHBpcGVsaW5lKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytp
KSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXBzW2ldKTsK
LSAgICAgICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgfQotICAgIHBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXko
YXdhaXQgc3RvcmFnZUJ1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51
bm1hcCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZl
ciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotcnVuVGVzdHNXaXRo
RGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJh
OTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFz
cyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZh
cyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVmZDYwYjhkNWI2ZDZlYzZjOTRhYjM3ODBiMjBjZGZiNTMzYzI0YmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5X
ZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9
Im1hdGNoIiBocmVmPSJibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4K
LTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4K
LTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hh
ZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0
ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBzd2l0Y2ggKHZp
ZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmVzdWx0ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICByZXN1bHQgPSBmbG9hdDQoLTEs
IC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXN1bHQg
PSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJlc3VsdCA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigp
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMCwgMSwgMSwgMSk7Ci19Ci1gOwot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRl
QmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdp
dGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotCi0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbewotICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgYWxwaGFC
bGVuZDogewotICAgICAgICAgICAgc3JjRmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAgICAgICAg
ICAgZHN0RmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAgICAgICAgICAgb3BlcmF0aW9uOiAiYWRk
IgotICAgICAgICB9LAotICAgICAgICBjb2xvckJsZW5kOiB7Ci0gICAgICAgICAgICBzcmNGYWN0
b3I6ICJibGVuZC1jb2xvciIsCi0gICAgICAgICAgICBkc3RGYWN0b3I6ICJibGVuZC1jb2xvciIs
Ci0gICAgICAgICAgICBvcGVyYXRpb246ICJhZGQiCi0gICAgICAgIH0sCi0gICAgICAgIHdyaXRl
TWFzazogR1BVQ29sb3JXcml0ZS5BTEwKLSAgICB9XTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0g
Y3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgY29sb3JTdGF0ZXMpOwot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4s
IGNvbW1hbmRFbmNvZGVyKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCbGVuZENvbG9yKHsgcjogMCwg
ZzogMSwgYjogMCwgYTogMSB9KTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVy
LCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAg
IHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJl
bG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1z
dHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmEwYTc1NmQ4Y2MwYmNlMTUzYTE5ZmY1
MTJlNWNlM2M3MTNjMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNh
bnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0KLWNvbnN0IHBvc2l0aW9uQXR0cmlidXRlTnVtID0gMDsKLQotY29uc3Qgc2hhZGVyQ29kZSA9
IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgke3Bvc2l0aW9uQXR0
cmlidXRlTnVtfSkpIHsKLSAgICBWZXJ0ZXhPdXQgdk91dDsKLSAgICB2T3V0LnBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCAwLjUsIDAsIDAuNSk7Ci0gICAg
cmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBj
b2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xvcjsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLQot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIs
Ci0gICAgICAgIGFscGhhQmxlbmQ6IHsgZHN0RmFjdG9yOiAib25lIiB9LAotICAgICAgICBjb2xv
ckJsZW5kOiB7IGRzdEZhY3RvcjogIm9uZSIgfQotICAgIH1dOwotCi0gICAgY29uc3QgdmVydGV4
SW5wdXREZXNjcmlwdG9yID0gewotICAgICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAg
ICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiA0LAotICAgICAg
ICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIs
Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHBvc2l0aW9uQXR0cmlidXRlTnVtCi0g
ICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9
IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzLCBu
dWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4RGF0YSA9IG5l
dyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAw
LCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBz
aXplOiB2ZXJ0ZXhEYXRhLmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fSwgdmVydGV4RGF0YS5idWZmZXIpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbih7IGRldmljZTogZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIiB9KTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnQgPSB7Ci0gICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5n
ZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRWaWV3KCksCi0gICAgICAgIGxvYWRPcDog
ImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjog
eyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0KLSAgICB9OwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHM6
IFtjb2xvckF0dGFjaG1lbnRdIH0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVs
aW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJd
LCBbMF0pOwotICAgIHBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0K
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFy
ZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5I
VE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21w
bGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNh
bnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRl
eHR1cmUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRl
eHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNGMxOWVlZTQ2ZGRlOTJiZTZhOWNmZDUwNGIwY2E0MTc3Mjc4OGVmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9i
bGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMg
YmVsb3cgc2hvd3MgYSBncmVlbiBtaXAgY2hhaW4gb24gYSByZWQgYmFja2dyb3VuZC48L3A+Ci08
Y2FudmFzIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlbk1p
cENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1
cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4
dHVyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWJmNjQxN2VkZGFhOGU3
OTZlMTc5NTlkNmQxMDczN2M1NjI5ZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUt
dG8tdGV4dHVyZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkJsaXR0aW5nIFRleHR1cmUg
VG8gVGV4dHVyZTwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkJsaXQgb3Bl
cmF0aW9ucyBwb3B1bGF0ZSBhIHRleHR1cmUgY29ycmVjdGx5IChhbGwgbWlwIGxldmVscykuIj4K
LTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJl
LWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IHNob3dzIGEg
Z3JlZW4gbWlwIGNoYWluIG9uIGEgcmVkIGJhY2tncm91bmQuPC9wPgotPGNhbnZhcyB3aWR0aD0i
NTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxv
YWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFzMmQpIHsKLSAgICBjb25zdCB0ZXh0
dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6ICBjYW52YXMyZC53aWR0aCwKLSAgICAgICAgaGVp
Z2h0OiBjYW52YXMyZC5oZWlnaHQsCi0gICAgICAgIGRlcHRoOiAgMgotICAgIH07Ci0KLSAgICAv
LyBNaXBtYXAgY291bnQKLSAgICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNhbnZhczJk
LndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGxldCBtaXBMZXZlbENvdW50ID0gTWF0aC5j
ZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0aW9uKSk7Ci0gICAgaWYgKG1pcExldmVsQ291bnQgPCAx
KSBtaXBMZXZlbENvdW50ID0gMTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewot
ICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAgICAgbWlwTGV2ZWxDb3VudDogbWlwTGV2
ZWxDb3VudCwKLSAgICAgICAgc2FtcGxlQ291bnQ6IDEsCi0gICAgICAgIGRpbWVuc2lvbjogIjJk
IiwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0
dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJl
VXNhZ2UuU0FNUExFRCAKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIHRleHR1cmUgYW5kIGFsc28g
YWRkIHRoZSBkZXNjcmlwdG9yCi0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0
dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICB0ZXh0dXJlU2l6ZS5kZXB0aCA9IDE7Ci0gICAg
dGV4dHVyZS5kZXNjcmlwdG9yID0gdGV4dHVyZURlc2NyaXB0b3I7Ci0KLSAgICAvLyBUZXh0dXJl
IGRhdGEgCi0gICAgY29uc3QgY29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgnMmQnKTsK
LSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZh
czJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGEuZGF0YS5sZW5ndGgsCi0g
ICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURQotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgdGV4dHVyZVdyaXRlQXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlQXJy
YXlCdWZmZXIpOwotICAgIHRleHR1cmVXcml0ZUFycmF5LnNldChpbWFnZURhdGEuZGF0YSk7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGRhdGFDb3B5VmlldyA9
IHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwKLSAgICAgICAgb2Zmc2V0OiAw
LAotICAgICAgICByb3dQaXRjaDogY2FudmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhl
aWdodDogY2FudmFzMmQud2lkdGggKiBjYW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBj
b25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmUsCi0gICAg
ICAgIG1pcExldmVsOiAwLAotICAgICAgICBhcnJheUxheWVyOiAwLAotICAgICAgICBvcmlnaW46
IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgfTsKLQotICAgIGNvbnN0IGJsaXRDb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGJsaXRDb21tYW5kRW5j
b2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGRhdGFDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCB0
ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtibGl0Q29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLQotICAgIHJldHVybiB0ZXh0dXJlOwotfQotCi1hc3luYyBmdW5j
dGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IGNhbnZhczJkICA9IGF3YWl0IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJk
LmdldENvbnRleHQoJzJkJyk7Ci0KLSAgICAvLyB0ZXh0dXJlQSAobGF5ZXIgMCwgbWlwIDApOiBH
cmVlbgotICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDAsIDI1NSwgMCknOwotICAgIGNv
bnRleHQyZC5maWxsUmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsK
LSAgICBjb25zdCB0ZXh0dXJlQSA9IGF3YWl0IGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmlj
ZSwgY2FudmFzMmQpOwotCi0gICAgLy8gdGV4dHVyZUIgKGxheWVyIDAsIG1pcCAwKTogUmVkCi0g
ICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICdyZ2IoMjU1LCAwLCAwKSc7Ci0gICAgY29udGV4dDJk
LmZpbGxSZWN0KDAsIDAsIGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGNv
bnN0IHRleHR1cmVCID0gYXdhaXQgbG9hZFRleHR1cmVGcm9tQ2FudmFzMmQoZGV2aWNlLCBjYW52
YXMyZCk7Ci0KLSAgICAvLyBDbGVhbiBjYW52YXMgdG8gYmx1ZQotICAgIGNvbnRleHQyZC5maWxs
U3R5bGUgPSAncmdiKDAsIDAsIDI1NSknOwotICAgIGNvbnRleHQyZC5maWxsUmVjdCgwLCAwLCBj
YW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIC8vIFRlc3QgY29weVRleHR1
cmVUb1RleHR1cmUKLQotICAgIGxldCBzaXplID0gT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZUEu
ZGVzY3JpcHRvci5zaXplKTsKLSAgICBsZXQgYmxpdENvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0ZXh0dXJlQS5k
ZXNjcmlwdG9yLm1pcExldmVsQ291bnQ7ICsraSkgewotICAgICAgICBzaXplLndpZHRoICA9IE1h
dGgubWF4KE1hdGguZmxvb3Ioc2l6ZS53aWR0aCAvIDIpLCAxKTsKLSAgICAgICAgc2l6ZS5oZWln
aHQgPSBNYXRoLm1heChNYXRoLmZsb29yKHNpemUuaGVpZ2h0IC8gMiksIDEpOwotCi0gICAgICAg
IGxldCBzcmNUZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJl
QSwKLSAgICAgICAgICAgIG1pcExldmVsOiAwLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMCwK
LSAgICAgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0KLSAgICAgICAgfTsKLSAg
ICAgICAgbGV0IGRzdFRleHR1cmVDb3B5VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRl
eHR1cmVBLAotICAgICAgICAgICAgbWlwTGV2ZWw6IGksCi0gICAgICAgICAgICBhcnJheUxheWVy
OiAxLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6IDAsIHk6IDAsIHo6IDAgfQotICAgICAgICB9
OwotICAgICAgICAvLyBQb3B1bGF0ZSB0ZXh0dXJlQSAobGF5ZXIgMSwgbWlwIGkpCi0gICAgICAg
IGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZShzcmNUZXh0dXJlQ29weVZp
ZXcsIGRzdFRleHR1cmVDb3B5Vmlldywgc2l6ZSk7Ci0KLSAgICAgICAgc3JjVGV4dHVyZUNvcHlW
aWV3ID0gewotICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZUEsCi0gICAgICAgICAgICBtaXBM
ZXZlbDogaSwKLSAgICAgICAgICAgIGFycmF5TGF5ZXI6IDEsCi0gICAgICAgICAgICBvcmlnaW46
IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAgICAgIGRzdFRleHR1cmVDb3B5
VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVCLAotICAgICAgICAgICAgbWlw
TGV2ZWw6IDAsCi0gICAgICAgICAgICBhcnJheUxheWVyOiAwLAotICAgICAgICAgICAgb3JpZ2lu
OiB7IHg6IDAsIHk6IHNpemUuaGVpZ2h0LCB6OiAwIH0KLSAgICAgICAgfTsKLSAgICAgICAgLy8g
UG9wdWxhdGUgdGV4dHVyZUIgKGxheWVyIDAsIG1pcCAwKSB3aXRoIHRleHR1cmVBIChsYXllciAx
LCBtaXAgaSkKLSAgICAgICAgYmxpdENvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJl
KHNyY1RleHR1cmVDb3B5VmlldywgZHN0VGV4dHVyZUNvcHlWaWV3LCBzaXplKTsKLSAgICB9Ci0K
LSAgICAvLyBSZW5kZXIgdGV4dHVyZUIgaW50byBjYW52YXMyZAotCi0gICAgY29uc3QgaW1hZ2VE
YXRhTGVuZ3RoSW5CeXRlcyA9IGNhbnZhczJkLndpZHRoICogY2FudmFzMmQuaGVpZ2h0ICogNDsK
LSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGFM
ZW5ndGhJbkJ5dGVzLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgIH07Ci0gICAgY29uc3QgYnVmZmVyQSA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5
VmlldyA9IHsKLSAgICAgICAgYnVmZmVyOiBidWZmZXJBLAotICAgICAgICByb3dQaXRjaDogY2Fu
dmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhlaWdodDogY2FudmFzMmQud2lkdGggKiBj
YW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7
Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmVCCi0gICAgfTsKLSAgICBibGl0Q29tbWFuZEVuY29k
ZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlQ29weVZpZXcsIGJ1ZmZlckNvcHlWaWV3LCB0
ZXh0dXJlQS5kZXNjcmlwdG9yLnNpemUpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtibGl0Q29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IGFiID0gYXdhaXQg
YnVmZmVyQS5tYXBSZWFkQXN5bmMoKQotICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KGFiKTsKLSAgICBjb25zdCByZXN1bHRJbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKGFy
cmF5LCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIGNvbnRleHQyZC5w
dXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsKLQotICAgIGJ1ZmZlckEuZGVzdHJv
eSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
dGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBjb25z
dCBjYW52YXMyZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGRyYXdH
cmVlbk1pcENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMyZCk7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxp
dC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3OTZhMzc1N2U1NDI1ZGIwOGIxNDMyYWZl
ZWM2ZjQxM2NkOWRiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPkJhc2ljIEJsaXR0aW5nPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29u
dGVudD0iQmxpdCBvcGVyYXRpb25zIGNvcHkgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0i
bWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNx
dWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxib2R5PgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3QgY2FudmFzMmQg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gbG9h
ZEltYWdlKCkgewotICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgaW1hZ2Uuc3Jj
ID0gInJlc291cmNlcy9ncmVlbi00MDAucG5nIjsKLSAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgICAgICAgICAgdGVzdChkZXZpY2UsIGltYWdlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzMmQp
OwotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWFzeW5jIGZ1
bmN0aW9uIHRlc3QoZGV2aWNlLCBpbWFnZSkgewotICAgIGNhbnZhczJkLndpZHRoID0gaW1hZ2Uu
d2lkdGg7Ci0gICAgY2FudmFzMmQuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0OwotICAgIGNvbnN0IGNv
bnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0gICAgY29udGV4dDJkLmRyYXdJ
bWFnZShpbWFnZSwgMCwgMCk7Ci0KLSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0
SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgY29uc3Qg
YnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxl
bmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDCi0gICAgfTsKLSAg
ICBidWZmZXJBID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCBidWZmZXJEZXNjcmlwdG9y
LCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAgYnVmZmVyRGVzY3JpcHRvci51c2FnZSB8
PSBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVDsKLSAgICBjb25zdCBidWZmZXJCID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJWaWV3QiA9IHsK
LSAgICAgICAgYnVmZmVyOiBidWZmZXJCLAotICAgICAgICByb3dQaXRjaDogaW1hZ2Uud2lkdGgg
KiA0LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH07Ci0KLSAgICBjb25zdCB0ZXh0dXJl
U2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGlt
YWdlLmhlaWdodCwKLSAgICAgICAgZGVwdGg6IDEKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVE
ZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAgICAgZm9ybWF0
OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMg
fCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVBID0g
ZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1
cmVWaWV3QSA9IHsgdGV4dHVyZTogdGV4dHVyZUEgfTsKLQotICAgIGNvbnN0IHRleHR1cmVCID0g
ZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1
cmVWaWV3QiA9IHsgdGV4dHVyZTogdGV4dHVyZUIgfTsKLQotICAgIGNvbnN0IHJlYWRCdWZmZXJE
ZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoLAot
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRAotICAgIH07Ci0gICAgY29uc3QgcmVhZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIocmVhZEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlYWRCdWZmZXJWaWV3ID0gewot
ICAgICAgICBidWZmZXI6IHJlYWRCdWZmZXIsCi0gICAgICAgIHJvd1BpdGNoOiBpbWFnZS53aWR0
aCAqIDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAgfTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEsIDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0
YS5kYXRhLmJ5dGVMZW5ndGgpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1
cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4
dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHRleHR1
cmVWaWV3QSwgdGV4dHVyZVZpZXdCLCB0ZXh0dXJlU2l6ZSk7Ci0gICAgY29tbWFuZEVuY29kZXIu
Y29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmlld0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJl
U2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5p
c2goKV0pOwotICAgIGJ1ZmZlckEuZGVzdHJveSgpOwotICAgIGJ1ZmZlckIuZGVzdHJveSgpOwot
ICAgIHRleHR1cmVBLmRlc3Ryb3koKTsKLSAgICB0ZXh0dXJlQi5kZXN0cm95KCk7Ci0KLSAgICBj
b25zdCByZXN1bHRDb250ZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJykuZ2V0
Q29udGV4dCgnMmQnKTsKLQotICAgIGF3YWl0IHJlYWRCdWZmZXIubWFwUmVhZEFzeW5jKCkudGhl
bihhYiA9PiB7Ci0gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFi
KTsKLSAgICAgICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJheSwg
aW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAgICAgICAgcmVzdWx0Q29udGV4dC5wdXRJ
bWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsKLQotICAgICAgICByZWFkQnVmZmVyLmRl
c3Ryb3koKTsKLSAgICB9KTsKLX0KLQotbG9hZEltYWdlKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFj
ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZm
ZXItcmFjZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2
MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNv
bW1hbmQtYnVmZmVyLXJhY2VzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5I
VE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21w
bGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNh
bnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2Vz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjVjMzhlNjRjZGEzMWRlYTNmMmNl
YzRjNzgwZWI1MTAwMTRiOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxl
PgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMg
YSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJ1ZmZlci1jb21tYW5k
LWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBi
ZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhP
dXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29s
b3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZs
b2F0MiB4eSA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQzIHJnYiA6IGF0dHJpYnV0ZSgxKSkgewotICAg
IFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBmbG9hdDQoeHksIDAsIDEpOwot
ICAgIHZPdXQuY29sb3IgPSBmbG9hdDQocmdiLCAxKTsKLSAgICByZXR1cm4gdk91dDsKLX0KLQot
ZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDAp
KSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBj
cmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5k
ZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAg
ICAgc3RyaWRlOiA0ICogMiwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAg
ICAgICAgICBmb3JtYXQ6ICJmbG9hdDIiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9u
OiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBzdHJpZGU6IDQg
KiAzLAotICAgICAgICAgICAgc3RlcE1vZGU6ICJpbnN0YW5jZSIsCi0gICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQzIiwKLSAgICAgICAg
ICAgICAgICBzaGFkZXJMb2NhdGlvbjogMQotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRp
Y2VzKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2Vz
KQotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4
QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhB
cnJheS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNl
LCBwaXBlbGluZSwgYXR0YWNobWVudCwgdmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcikgewotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0g
ICAgY29uc3QgZW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9y
QXR0YWNobWVudHM6IFthdHRhY2htZW50XSB9KTsKLSAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXJdLCBbMCwgMF0pOwotICAgIGVuY29kZXIu
c2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIGVuY29kZXIuZHJhdygzLCAxLCAwLCAwKTsKLSAg
ICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsK
LSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29k
ZSB9KTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IoKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUo
c2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIHZlcnRleElucHV0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB1cHBlckxlZnRCdWZmZXIgPSBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIo
ZGV2aWNlLCBbLTEsIDEsIC0xLCAtMSwgMCwgMV0pOwotICAgIGNvbnN0IG1pZGRsZUJ1ZmZlciA9
IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIFswLCAxLCAtMSwgLTEsIDEsIC0xXSk7
Ci0gICAgY29uc3QgdXBwZXJSaWdodEJ1ZmZlciA9IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihk
ZXZpY2UsIFswLCAxLCAxLCAxLCAxLCAtMV0pOwotCi0gICAgY29uc3QgZ3JlZW4gPSBbMCwgMSwg
MF07Ci0gICAgY29uc3QgYmx1ZSA9IFswLCAwLCAxXTsKLSAgICBjb25zdCBncmVlbkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShncmVlbik7Ci0gICAgY29uc3QgYmx1ZUFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShibHVlKTsKLQotICAgIGNvbnN0IGNvbG9yQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0
aERhdGEoZGV2aWNlLCB7IHNpemU6IGdyZWVuQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9LCBncmVlbkFycmF5
LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCBhdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50
OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAg
ICAgICBsb2FkT3A6ICJsb2FkIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAg
Y2xlYXJDb2xvcjogeyByOiAxLCBnOiAwLCBiOiAwLCBhOiAxIH0KLSAgICB9OwotCi0gICAgLyog
bWFwV3JpdGVBc3luYyBzaG91bGQgcmVzb2x2ZSBhZnRlciBHUFUgY29tbWFuZHMgYXJlIGNvbXBs
ZXRlLCBzbyB0cmlhbmdsZSBzaG91bGQgYmUgZ3JlZW4uICovCi0gICAgZHJhd0FuZFN1Ym1pdENv
bW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIHVwcGVyTGVmdEJ1ZmZlciwgY29s
b3JCdWZmZXIpOwotICAgIGF3YWl0IGNvbG9yQnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKGFi
ID0+IHsKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhYik7Ci0gICAgICAg
IGFycmF5LnNldChibHVlKTsKLSAgICAgICAgY29sb3JCdWZmZXIudW5tYXAoKTsKLSAgICB9KTsK
LQotICAgIGF3YWl0IGNvbG9yQnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKGFiID0+IHsKLSAg
ICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhYik7Ci0gICAgICAgIGFycmF5LnNl
dChncmVlbik7Ci0gICAgfSk7Ci0KLSAgICAvKiBjb2xvckJ1ZmZlciB0aGF0IGlzIHN0aWxsIG1h
cHBlZCBzaG91bGQgYmUgbm90IHN1Ym1pdHRlZCB0byBkcmF3IGEgYmx1ZSB0cmlhbmdsZS4gKi8K
LSAgICBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwg
dXBwZXJMZWZ0QnVmZmVyLCBjb2xvckJ1ZmZlcik7Ci0KLSAgICAvKiBjb2xvckJ1ZmZlciBkb2Vz
IG5vdCBhY3R1YWxseSBjb250YWluICJncmVlbiIgYWdhaW4gdW50aWwgdGhpcyBjYWxsLiAqLwot
ICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7Ci0KLSAgICAvKiBXcml0aW5nIGRhdGEgaW1tZWRpYXRl
bHkgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHByZWNlZGluZyBkcmF3IGNh
bGwuICovCi0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFj
aG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIGF3YWl0IG1hcFdyaXRlRGF0
YVRvQnVmZmVyKGNvbG9yQnVmZmVyLCBibHVlQXJyYXkuYnVmZmVyKTsKLQotICAgIC8qIGRlc3Ry
b3kgcmlnaHQgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGRyYXcgY2FsbC4g
Ki8KLSAgICBhd2FpdCBtYXBXcml0ZURhdGFUb0J1ZmZlcihjb2xvckJ1ZmZlciwgZ3JlZW5BcnJh
eS5idWZmZXIpOwotICAgIGRyYXdBbmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBh
dHRhY2htZW50LCB1cHBlclJpZ2h0QnVmZmVyLCBjb2xvckJ1ZmZlcik7Ci0gICAgdXBwZXJSaWdo
dEJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAgICAvKiBkcmF3IGNvbW1hbmQgd2l0aCBhIGRlc3Ryb3ll
ZCBidWZmZXIgc2hvdWxkIGZhaWwgKi8KLSAgICBjb2xvckJ1ZmZlci5kZXN0cm95KCk7Ci0gICAg
ZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRs
ZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwotCi0gICAgdXBwZXJMZWZ0QnVmZmVyLmRlc3Ryb3koKTsK
LSAgICBtaWRkbGVCdWZmZXIuZGVzdHJveSgpOwotICAgIHVwcGVyUmlnaHRCdWZmZXIuZGVzdHJv
eSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
dGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdH
cmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTA1ZWVhOWQ1MzMzNTNkODZjYmUwZGQyZWRkZjZkNjdjZGQ0MDdh
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTog
QnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLQot
UEFTUyBHUFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNU
T1JBR0UgdXNhZ2VzLgotUEFTUyB1bm1hcCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBwYWJsZSBH
UFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0ZSBlcnJvci4KLVBBU1MgR1BVQnVmZmVyIGNyZWF0
ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBwZWQuCi1QQVNTIEdQVUJ1
ZmZlckRlc2NyaXB0b3Igd2l0aCBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2Ugc2hv
dWxkIGZhaWwuCi1QQVNTIFRvby1sYXJnZSBHUFVCdWZmZXJEZXNjcmlwdG9yIHNpemUgc2hvdWxk
IGZhaWwgd2l0aCBvdXQtb2YtbWVtb3J5IGVycm9yLgotUEFTUyBtYXBSZWFkQXN5bmMgb24gbm9u
LU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgbWFwV3JpdGVBc3luYyBvbiBu
b24tTUFQX1dSSVRFIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgdW5tYXAgb24gbm9uLW1h
cHBhYmxlIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgY3JlYXRlQnVmZmVyTWFwcGVkOiBu
b24tNC1ieXRlLWFsaWduZWQgR1BVQnVmZmVyRGVzcmlwdG9yIHNpemUgc2hvdWxkIGZhaWwuCi1Q
QVNTIEFueSBtZXRob2QgY2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4K
LVBBU1MgQW55IG1ldGhvZCBjYWxsIG9uIGEgZGVzdHJveWVkIEdQVUJ1ZmZlciBzaG91bGQgZmFp
bC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBmYTE0NTgzOWZmMzMwYjUwYzM4NzNiMDA0NjE0YTIyM2Y5NTlmYjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+VGVzdCBHUFVC
dWZmZXIgRXJyb3JzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0KLXRlc3RzWyJH
UFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNUT1JBR0Ug
dXNhZ2VzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUo
InZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTog
NCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdl
LklOREVYIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotICAgIHJldHVybiBwb3BOdWxsRXJy
b3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJ1bm1hcCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBw
YWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0ZSBlcnJvci4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAg
IHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAg
ICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJV
c2FnZS5DT1BZX0RTVCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAotICAg
ICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuSU5ERVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNh
Z2UuVU5JRk9STSB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7
Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIu
dW5tYXAoKTsKLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1si
R1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBw
ZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGNvbnN0IFtidWZmZXIsIF9dID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1h
cHBlZCh7IHNpemU6IDQsIHVzYWdlOiAwIH0pOwotICAgIC8vIFNob3VsZCBub3QgZmFpbC4KLSAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICBhd2FpdCBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLQotICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIC8vIFNob3VsZCBmYWls
LgotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZp
Y2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgLy8g
U2hvdWxkIGZhaWwuCi0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3Nl
cnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxpZGF0
aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJHUFVCdWZmZXJEZXNjcmlwdG9yIHdpdGgg
Ym90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMg
ZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotICAgIHJldHVybiBwb3BWYWxp
ZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJUb28tbGFyZ2UgR1BVQnVmZmVyRGVz
Y3JpcHRvciBzaXplIHNob3VsZCBmYWlsIHdpdGggb3V0LW9mLW1lbW9yeSBlcnJvci4iXSA9IGFz
eW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5
Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDk5OTk5OTk5OTk5LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuTk9ORSB9KTsKLSAgICByZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNl
KTsKLX07Ci0KLXRlc3RzWyJtYXBSZWFkQXN5bmMgb24gbm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBz
aG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEUgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfAotICAgICAgICAgICAg
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVY
IHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfAotICAgICAgICAgICAgR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBh
c3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxp
ZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJtYXBXcml0ZUFzeW5jIG9uIG5vbi1N
QVBfV1JJVEUgR1BVQnVmZmVyIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTogNCwK
LSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwKLSAgICAgICAgICAgIEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlf
RFNUIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBH
UFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCkudGhlbigoKSA9PiB7IGFzc2VydF91bnJlYWNoZWQoKTsgfSkuY2F0Y2goZSA9PiB7fSk7
Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbInVu
bWFwIG9uIG5vbi1tYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZp
Y2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoewotICAgICAg
ICBzaXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAg
ICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAg
ICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNh
Z2UuU1RPUkFHRQotICAgIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0
aW9uIik7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJv
cihkZXZpY2UpOwotfTsKLQotdGVzdHNbImNyZWF0ZUJ1ZmZlck1hcHBlZDogbm9uLTQtYnl0ZS1h
bGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRvciBzaXplIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBk
ZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNSwgdXNhZ2U6IDAgfSk7Ci0gICAgcmV0
dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2Qg
Y2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB9KTsKLSAgICByZXR1cm4gYXNzZXJ0QWxsQnVmZmVyTWV0aG9kc0ZhaWwoZGV2aWNlLCBidWZm
ZXIpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2QgY2FsbCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZm
ZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQgfSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBidWZmZXIuZGVzdHJveSgpOwotICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotCi0g
ICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsKGRldmljZSwgYnVmZmVyKTsKLX07
Ci0KLWNvbnN0IGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsID0gYXN5bmMgKGRldmljZSwgYnVm
ZmVyKSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
YnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0p
LmNhdGNoKGUgPT4ge30pOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgpOyB9KS5jYXRjaChl
ID0+IHt9KTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci51bm1hcCgpOwot
ICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLmRlc3Ryb3koKTsKLSAgICByZXR1
cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZpY2Uo
dGVzdHMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFm
ZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmls
ZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+
Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVl
blNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmY2E1Y2JkODMzOTdhMmU5NDFlMjA0NGVlOGY2ZGNi
MzZjNmFlNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVl
biBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImNvbG9yLXdyaXRlLW1hc2stdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsKLSAgICBm
bG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgdiA9IGZs
b2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAg
diA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0g
ICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkg
OiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gCi0K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJh
c2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAg
ICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAgY29sb3JCbGVuZDoge30sCi0gICAgICAgIHdyaXRl
TWFzazogR1BVQ29sb3JXcml0ZS5HUkVFTiB8IEdQVUNvbG9yV3JpdGUuQUxQSEEKLSAgICB9XTsK
LSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBk
ZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudCA9IHsKLSAg
ICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAi
c3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAsIGE6IDAgfQot
ICAgIH07Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbY29sb3JBdHRhY2htZW50XSB9KTsKLSAgICBlbmNv
ZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUg
PSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIu
ZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjA3NDUwYzU4MTYwZWUzOTBiMzdhMDhkZjA0
YmQ0YTAyOTgzN2FiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIGEgZGVmYXVsdCBHUFVDb21t
YW5kRW5jb2Rlci4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVm
ZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGRlMTc1Y2I3OWVlYThiOWUyZGExNTUzNGI2ODJh
Y2NiNzk1M2M3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoY29tbWFuZEVuY29kZXIgaW5zdGFuY2VvZiBHUFVD
b21tYW5kRW5jb2RlciwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQVUNvbW1hbmRFbmNvZGVyLiIp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BV
Q29tbWFuZEVuY29kZXIuIik7Ci0KLS8vIEZJWE1FOiBjcmVhdGVDb21tYW5kRW5jb2RlciBzaG91
bGQgdGFrZSBhIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciwgd2hpY2ggaXMgY3VycmVudGx5
IGFuIGVtcHR5IGRpY3Rpb25hcnkuCi08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjViYmJiODgzNmZjN2ZiNjE1NDFmNGVlNmY4
ZDg4YzdkZDQwYTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBDb21wdXRlIGNvbXBpbGF0
aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4KLVBBU1MgQ29t
cHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQuCi1QQVNTIE1TTCBwaXBlbGluZSBjcmVh
dGlvbiBmYWlsZWQgZHVlIHRvIGludmFsaWQgR1BVU2hhZGVyTW9kdWxlLgotUEFTUyBNU0wgcGlw
ZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5n
LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJv
cnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTc1NDRkOTNjZTlkOTJmYzIzYzc3MDBi
MjkyNWZlN2Q3OGE1MjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0
IHRlc3RzID0ge307Ci1sZXQgZ29vZE1vZHVsZTsKLQotdGVzdHNbIkNvbXB1dGUgY29tcGlsYXRp
b24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5bmMg
ZGV2aWNlID0+IHsKLSAgICBjb25zdCBnb29kV0hMU0wgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBfY29tcHV0ZV9tYWluKCkgeyB9Ci1gOwotICAgIGdvb2RNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogZ29vZFdITFNMIH0pOwotCi0gICAg
ZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0KLSAgICBkZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBt
b2R1bGU6IGdvb2RNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWlu
IgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRl
dmljZSk7Ci19OwotCi10ZXN0c1siQ29tcHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQu
Il0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRh
dGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNv
bXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBnb29kTW9kdWxlLAotICAgICAgICAg
ICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUg
Y3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbnZhbGlkIEdQVVNoYWRlck1vZHVsZS4iXSA9IGFzeW5j
IGRldmljZSA9PiB7Ci0gICAgY29uc3QgYmFkTVNMID0gYFRoaXMgY29kZSBzaG91bGQgbm90IGNv
bXBpbGUuYDsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgibm9uZSIpOwotCi0gICAgY29u
c3QgYmFkTVNMTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGJhZE1T
TCB9KTsKLQotICAgIGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLQotICAgIGRldmljZS5jcmVhdGVDb21wdXRl
UGlwZWxpbmUoewotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTog
YmFkTVNMTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNl
KTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNv
cnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25z
dCBnb29kTVNMID0gYAota2VybmVsIHZvaWQgX2NvbXB1dGVfbWFpbigpIHsgfQotYDsKLSAgICBj
b25zdCBtc2xNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogZ29vZE1T
TCB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAg
ZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewot
ICAgICAgICAgICAgbW9kdWxlOiBtc2xNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAi
X2NvbXB1dGVfbWFpIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRh
dGlvbkVycm9yKGRldmljZSk7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5h
YmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Rl
cHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVu
YWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEz
NDQyNGJlODY1MmU3YTZmYzY3ODdkMjM0MWEzN2JjMDRkZGY5OWUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVu
YWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUg
SGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2Vi
R1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNo
IiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+
UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNh
bnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBzaGFkZXJD
b2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBW
ZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCB1aW50
IGlpZCA6IFNWX0luc3RhbmNlSUQpCi17Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5w
b3NpdGlvbiA9IHBvc2l0aW9uOwotCi0gICAgaWYgKGlpZCA9PSAwKSB7Ci0gICAgICAgIHZPdXQu
cG9zaXRpb24ueiA9IDAuNTsKLSAgICAgICAgdk91dC5jb2xvciA9IGZsb2F0NCgxLCAwLCAwLCAx
KTsKLSAgICB9IGVsc2UgewotICAgICAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIDEsIDAsIDEp
OwotICAgIH0KLQotICAgIHJldHVybiB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRfbWFpbihmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAg
ICByZXR1cm4gY29sb3I7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZp
Y2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAg
ICAvLyBmbG9hdDQgeHl6dwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAw
LCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwot
ICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJy
YXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJh
eS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7
Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2
ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgICAg
IGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAg
ICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9
XQotICAgIH0KLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0
IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwot
ICAgIGNvbnN0IGRlcHRoU3RhdGVEZXNjcmlwdG9yID0gY3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVz
Y3JpcHRvcigpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFk
ZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgdmVydGV4SW5wdXREZXNjcmlwdG9yLCBkZXB0
aFN0YXRlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIGNvbnN0IGJhc2ljQXR0YWNobWVudCA9IHsKLSAg
ICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAi
c3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDEuMCwgZzogMCwgYjogMCwgYTogMS4w
IH0KLSAgICB9OwotCi0gICAgY29uc3QgZGVwdGhBdHRhY2htZW50ID0gewotICAgICAgICBhdHRh
Y2htZW50OiBjcmVhdGVCYXNpY0RlcHRoVGV4dHVyZShjYW52YXMsIGRldmljZSkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgZGVwdGhMb2FkT3A6ICJjbGVhciIsCi0gICAgICAgIGRlcHRo
U3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJEZXB0aDogMS4wCi0gICAgfTsKLQotICAg
IGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoewotICAgICAg
ICBjb2xvckF0dGFjaG1lbnRzOiBbYmFzaWNBdHRhY2htZW50XSwKLSAgICAgICAgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudDogZGVwdGhBdHRhY2htZW50Ci0gICAgfSk7Ci0KLSAgICBlbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgZW5jb2Rlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7Ci0gICAgZW5jb2Rlci5kcmF3KDQsIDIsIDAsIDApOwotICAgIGVu
Y29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJp
YW5nbGVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRy
aWFuZ2xlcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYw
ZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4
ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJl
ZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5
IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDIyMWIzYmQwNWFmMzlkYjI4Zjc1NWYwODUwZDU2MWQxYmY3YWNh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTIwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9ImRyYXctaW5kZXhlZC10cmlhbmdsZXMtZXhwZWN0ZWQuaHRt
bCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48
L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQg
c3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0
IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQot
dmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IGdyZWVuIDogYXR0cmlidXRlKDEpKQotewotICAgIFZlcnRleE91dCB2T3V0Owot
ICAgIHZPdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAs
IGdyZWVuLCAwLCAxKTsKLSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17
Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIo
ZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAg
ICAgICAgLy8gZmxvYXQ0IHh5encsIGZsb2F0IGcKLSAgICAgICAgLTEsIDEsIDAsIDEsIDAsCi0g
ICAgICAgIC0xLCAxLCAwLCAxLCAxLAotICAgICAgICAtMSwgLTEsIDAsIDEsIDAsCi0gICAgICAg
IC0xLCAtMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgMSwgMCwgMSwgMCwKLSAgICAgICAgMSwgMSwg
MCwgMSwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEsIDAsCi0gICAgICAgIDEsIC0xLCAwLCAxLCAx
Ci0gICAgXSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXpl
OiB2ZXJ0ZXhBcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0s
IHZlcnRleEFycmF5LmJ1ZmZlcik7Ci19Ci0KLWNvbnN0IGluZGV4QnVmZmVyT2Zmc2V0ID0gMjA0
ODsgLy8gVGVzdCBhIGJ1ZmZlciBvZmZzZXQgZm9yIGluZGV4IGFycmF5LgotY29uc3QgaW5kZXhP
ZmZzZXQgPSAtOTAwMTsgLy8gVGVzdCBhIGJhc2UgaW5kZXggdG8gYWRkIHRvIGluZGV4IGFycmF5
IHZhbHVlcy4KLQotZnVuY3Rpb24gY3JlYXRlSW5kZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgb2Zmc2V0QXJyYXkgPSBbMSwgMywgNSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAt
IGluZGV4T2Zmc2V0OyB9KTsKLSAgICBjb25zdCBpbmRleEFycmF5ID0gbmV3IFVpbnQzMkFycmF5
KFsxLCAzLCA1LCAzLCA1LCA3XS5tYXAodiA9PiB7IHJldHVybiB2IC0gaW5kZXhPZmZzZXQ7IH0p
KTsKLSAgICBjb25zdCBidWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2
aWNlLCAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHNpemU6IGluZGV4QXJyYXkuYnl0ZUxlbmd0
aCArIGluZGV4QnVmZmVyT2Zmc2V0LCAKLSAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5JTkRFWCAKLSAgICAgICAgfSwKLSAgICAgICAgaW5kZXhBcnJheS5idWZmZXIsCi0gICAgICAg
IGluZGV4QnVmZmVyT2Zmc2V0Ci0gICAgKTsKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAg
ICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0g
ICAgICAgICAgICBzdHJpZGU6IDQgKiA1LAotICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewot
ICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICAgICAgc2hhZGVy
TG9jYXRpb246IDAKLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICBvZmZzZXQ6IDQg
KiA0LAotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0IiwKLSAgICAgICAgICAgICAgICBz
aGFkZXJMb2NhdGlvbjogMQotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotfQot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVC
YXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0
aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSk7Ci0gICAgY29uc3QgaW5kZXhCdWZmZXIg
PSBjcmVhdGVJbmRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRl
QmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgY3JlYXRlVmVy
dGV4SW5wdXREZXNjcmlwdG9yKCksIG51bGwsICJ0cmlhbmdsZS1saXN0Iik7Ci0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25z
dCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVu
Y29kZXIpOwotCi0gICAgcGFzc0VuY29kZXIuc2V0SW5kZXhCdWZmZXIoaW5kZXhCdWZmZXIsIGlu
ZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5l
KTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3SW5kZXhlZCg2LCAxLCAwLCBpbmRleE9mZnNldCwgMCk7
Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIHZlcnRleEJ1ZmZlci5kZXN0cm95
KCk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICB0
ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dy
ZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZTNmZDA4ODk1N2VkM2Q0ZWJkODFkNDE4NjRhZmIy
YmVmY2UzMDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlk
YXRpb24gZXJyb3IuCi1QQVNTIENhcHR1cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3Iu
Ci1QQVNTIElnbm9yZSBlcnJvcnMgcGFzdCB0aGUgZmlyc3QuCi1QQVNTIENhcHR1cmVkIGVycm9y
cyBtYXRjaCBlcnJvciBzY29wZSBmaWx0ZXIuCi1QQVNTIFJlamVjdCBwb3BFcnJvclNjb3BlIGlm
IG5vIHNjb3BlIGV4aXN0cy4KLVBBU1MgRmlsdGVyICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQg
bm90IHJlcG9ydCBlcnJvcnMuCi1QQVNTIFB1c2ggYW5kIHBvcCBtYW55IGVycm9yIHNjb3BlcyB3
aXRoIG5vIHJlamVjdGlvbnMuCi1QQVNTIENhdGNoIG1hbnkgZXJyb3JzIGluIG5lc3RlZCBzY29w
ZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZWIxMzk3Mjg2MGYwZTkyZGIwZTM5MjFlZWI3NjBjMzVk
NDBkMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRp
dGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0K
LXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlkYXRpb24gZXJyb3IuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAg
IGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhcHR1cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1v
cnkgZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGNhdXNlTWVtb3J5RXJyb3IoZGV2aWNlKTsKLSAgICBy
ZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJJZ25vcmUgZXJyb3Jz
IHBhc3QgdGhlIGZpcnN0LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVy
cm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlk
YXRpb24iKTsKLSAgICBjYXVzZVZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotICAgIGNhdXNlVmFs
aWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgCi0gICAgY29uc3QgZXJyb3IgPSBhd2FpdCBkZXZp
Y2UucG9wRXJyb3JTY29wZSgpOwotICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihlcnJvcik7Ci0K
LSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ2FwdHVyZWQg
ZXJyb3JzIG1hdGNoIGVycm9yIHNjb3BlIGZpbHRlci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5Iik7Ci0gICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2
aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJvclNj
b3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBvcFZh
bGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIlJlamVjdCBwb3BFcnJvclNjb3Bl
IGlmIG5vIHNjb3BlIGV4aXN0cy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgcHJv
bWlzZSA9IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVk
KCksIGFzeW5jIGUgPT4gewotICAgICAgICBhc3NlcnRfZmFsc2UoZSA9PT0gdW5kZWZpbmVkKTsK
LSAgICAgICAgLy8gUG9wIHRoZSBleHRyYSAnbm9uZScgc2NvcGUuCi0gICAgICAgIGF3YWl0IHBv
cE51bGxFcnJvcihkZXZpY2UpOwotICAgIH0pOwotICAgIC8vICdwcm9taXNlJyBzaG91bGQgc3Rp
bGwgcmVqZWN0IGlmIGEgc2NvcGUgaXMgcHVzaGVkIGhlcmUuCi0gICAgZGV2aWNlLnB1c2hFcnJv
clNjb3BlKCJub25lIik7Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19OwotCi10ZXN0c1siRmlsdGVy
ICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQgbm90IHJlcG9ydCBlcnJvcnMuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgibm9uZSIpOwotICAgIGNhdXNlTWVtb3J5RXJyb3Io
ZGV2aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJv
clNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBv
cE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIlB1c2ggYW5kIHBvcCBtYW55IGVycm9y
IHNjb3BlcyB3aXRoIG5vIHJlamVjdGlvbnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNv
bnN0IG51bUl0ZXJhdGlvbnMgPSAxMjg7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVy
YXRpb25zOyArK2kpCi0gICAgICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9y
eSIpOwotICAgIAotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9ucyAtIDE7ICsr
aSkKLSAgICAgICAgYXdhaXQgcG9wTnVsbEVycm9yKGRldmljZSk7Ci0KLSAgICByZXR1cm4gcG9w
TnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ2F0Y2ggbWFueSBlcnJvcnMgaW4gbmVz
dGVkIHNjb3Blcy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgbnVtSXRlcmF0aW9u
cyA9IDEyODsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgewot
ICAgICAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgY2F1
c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLSAgICB9Ci0KLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG51bUl0ZXJhdGlvbnMgLSAxOyArK2kpCi0gICAgICAgIGF3YWl0IHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
fTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLQotLyogSGVscGVyIEZ1bmN0aW9ucyAq
LwotCi1jb25zdCBjYXVzZVZhbGlkYXRpb25FcnJvciA9IGRldmljZSA9PiBkZXZpY2UuY3JlYXRl
QnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotY29uc3QgY2F1c2VNZW1vcnlFcnJvciA9IGRldmljZSA9
PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogOTk5OTk5OTk5OTksIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5OT05FIH0pOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU2NmIwZThhZmUyNTc2MGU5MTFiOWY4ODZiY2IzYzU2NTNiMzJmMTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBWZXJpZnkgZXhwYW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVz
ZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250ZXh0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRv
LXByb3BlcnRpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5Mzg1MTEz
YWMwZWU1YWI5Mjk2NDc1YTE5Yzk5ZDcxMzM3OTgxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0
aWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+RW5zdXJlIGV4cGFuZG8gcHJvcGVydGllcyBh
cmUgcHJlc2VydmVkIG9uIHRoZSBXZWJHUFUgY29udGV4dC48L3RpdGxlPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2Fu
dmFzPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGluaXRpYWxpemUoKSB7Ci0gICAgbGV0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLSAgICBsZXQgY3R4ID0gY2FudmFz
LmdldENvbnRleHQoImdwdSIpOwotICAgIGN0eC5teVByb3BlcnR5ID0gMjsKLX0KLQotZnVuY3Rp
b24gY29sbGVjdEdhcmJhZ2UoKSB7Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAg
ICAgIHdpbmRvdy5HQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICAgIGVsc2UgaWYgKHdpbmRvdy5n
YykKLSAgICAgICAgZ2MoKTsKLSAgICBlbHNlIGlmICh3aW5kb3cuJHZtKQotICAgICAgICB3aW5k
b3cuJHZtLmdjKCk7Ci0gICAgLy8gJHZtIGlzIGV4cG9zZWQgaW4gV2ViS2l0J3MgTWluaUJyb3dz
ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQ6Ci0gICAgLy8g
ICBleHBvcnQgSlNDX3VzZURvbGxhclZNPTEKLSAgICAvLyAgIGV4cG9ydCBfX1hQQ19KU0NfdXNl
RG9sbGFyVk09MQotfQotCi0vLyBGSVhNRTogSFRNTENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgi
Z3B1Iikgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUKLS8vIFdlYkdQVSBzcGVjLiBXaGVuIFdlYktp
dCBpcyB1cGRhdGVkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHNwZWMsIHRoaXMKLS8vIHRlc3QgYW5k
IHRoZSBiaW5kaW5ncyBzaG91bGQgYmUgdXBkYXRlZCB0byBob25vciB0aGUgc3BlYydzCi0vLyBn
dWFyYW50ZWVzIGFib3V0IHByZXNlcnZpbmcgZXhwYW5kbyBwcm9wZXJ0aWVzIG9uIHZhcmlvdXMK
LS8vIGludGVyZmFjZXMuCi1sZXQgdGVzdDEgPSBhc3luY190ZXN0KCdWZXJpZnkgZXhwYW5kbyBw
cm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250ZXh0Jyk7Ci10ZXN0MS5z
dGVwKGZ1bmN0aW9uKCkgewotICAgIGluaXRpYWxpemUoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3Qx
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgY29sbGVjdEdhcmJhZ2UoKTsKLSAgICAg
ICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLSAgICAg
ICAgbGV0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjdHgubXlQcm9wZXJ0eSwgMik7Ci0gICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICB9KSwg
MjAwKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjk1NTNjYjhh
YTcwMTU0NzBlZWFjMzRhMmNjZDk0YzMxYmM4MWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGdl
dEJhc2ljRGV2aWNlKCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1
LnJlcXVlc3RBZGFwdGVyKHsgcG93ZXJQcmVmZXJlbmNlOiAibG93LXBvd2VyIiB9KTsKLSAgICBj
b25zdCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLSAgICByZXR1cm4g
ZGV2aWNlOwotfQotCi1mdW5jdGlvbiBkcmF3R3JlZW5NaXBDaGFpbk9uUmVkQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCIyZCIpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigyNTUsIDAsIDApIjsKLSAgICBj
b250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAg
ICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7Ci0gICAgbGV0IG1pcExldmVsQ291bnQgPSBNYXRoLmNlaWwoTWF0aC5sb2cyKG1heFJlc29s
dXRpb24pKTsKLSAgICBpZiAobWlwTGV2ZWxDb3VudCA8IDEpIG1pcExldmVsQ291bnQgPSAxOwot
Ci0gICAgbGV0IHdpZHRoICA9IGNhbnZhcy53aWR0aDsKLSAgICBsZXQgaGVpZ2h0ID0gY2FudmFz
LmhlaWdodDsKLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IG1pcExldmVsQ291bnQ7ICsraSkgewot
ICAgICAgICB3aWR0aCAgPSBNYXRoLm1heChNYXRoLmZsb29yKHdpZHRoICAvIDIpLCAxKTsKLSAg
ICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5mbG9vcihoZWlnaHQgLyAyKSwgMSk7Ci0gICAg
ICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigwLCAyNTUsIDApIjsKLSAgICAgICAgY29udGV4
dC5maWxsUmVjdCgwLCBoZWlnaHQsIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLQotfQotCi1mdW5j
dGlvbiBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpIHsK
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Ci0gICAgY29udGV4
dC5maWxsU3R5bGUgPSAiYmx1ZSI7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCA0MDAsIDQw
MCk7Ci0gICAgY29udGV4dC5maWxsU3R5bGUgPSAid2hpdGUiOwotICAgIGNvbnRleHQuZmlsbFJl
Y3QoMTAwLCAxMDAsIDIwMCwgMjAwKTsKLX0KLQotZnVuY3Rpb24gZHJhd0JsYWNrU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNh
bnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gImJsdWUiOwot
ICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDApOwotICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gImJsYWNrIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDEwMCwgMTAwLCAyMDAsIDIwMCk7
Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHQuZmls
bFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlbkFuZEJs
dWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLQotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigw
LCAyNTUsIDApJzsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2Fu
dmFzLmhlaWdodCk7Ci0KLSAgICBjb25zdCBudW1Db2x1bW5zID0gNDsKLSAgICBjb25zdCBudW1S
b3dzID0gNDsKLSAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgIGNvbnRleHQuZmlsbFN0eWxl
ID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAgICBmb3IgKGxldCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7
ICsreCkgewotICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAg
ICAgICAgICAgaWYgKCh4ICsgeSkgJSAyID09IDApCi0gICAgICAgICAgICAgICAgY29udGV4dC5y
ZWN0KAotICAgICAgICAgICAgICAgICAgICB4ICogY2FudmFzLndpZHRoIC8gbnVtQ29sdW1ucywK
LSAgICAgICAgICAgICAgICAgICAgeSAqIGNhbnZhcy5oZWlnaHQgLyBudW1Sb3dzLAotICAgICAg
ICAgICAgICAgICAgICBjYW52YXMud2lkdGggLyBudW1Db2x1bW5zLAotICAgICAgICAgICAgICAg
ICAgICBjYW52YXMuaGVpZ2h0IC8gbnVtUm93cwotICAgICAgICAgICAgICAgICAgICApOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGNvbnRleHQuZmlsbCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVC
YXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSkgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgcmV0dXJuIGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHsgZGV2aWNlOiBkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0iIH0pOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVCYXNpY0RlcHRoU3RhdGVEZXNjcmlwdG9yKCkgewotICAgIHJldHVybiB7Ci0g
ICAgICAgIGRlcHRoV3JpdGVFbmFibGVkOiB0cnVlLAotICAgICAgICBkZXB0aENvbXBhcmU6ICJs
ZXNzIgotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJhc2ljRGVwdGhUZXh0dXJlKGNhbnZh
cywgZGV2aWNlKSB7Ci0gICAgY29uc3QgZGVwdGhTaXplID0gewotICAgICAgICB3aWR0aDogY2Fu
dmFzLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgICAgIGRlcHRo
OiAxCi0gICAgfTsKLQotICAgIHJldHVybiBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAg
IHNpemU6IGRlcHRoU2l6ZSwKLSAgICAgICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4
IiwKLSAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVAotICAg
IH0pOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2
aWNlLCBjb2xvclN0YXRlcywgcGlwZWxpbmVMYXlvdXQsIHZlcnRleElucHV0RGVzY3JpcHRvciwg
ZGVwdGhTdGF0ZURlc2NyaXB0b3IsIHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IikgewotICAgIGNvbnN0IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsKLSAgICAgICAgbW9kdWxl
OiBzaGFkZXJNb2R1bGUsCi0gICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCi0gICAg
fTsKLQotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yID0gewotICAgICAgICBtb2R1
bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCi0g
ICAgfTsKLQotICAgIGlmICghY29sb3JTdGF0ZXMpIHsKLSAgICAgICAgY29sb3JTdGF0ZXMgPSBb
eyAKLSAgICAgICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAgICAgICAgYWxwaGFC
bGVuZDoge30sCi0gICAgICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgICAgICB9XTsKLSAgICB9
Ci0KLSAgICBpZiAoIXZlcnRleElucHV0RGVzY3JpcHRvcikKLSAgICAgICAgdmVydGV4SW5wdXRE
ZXNjcmlwdG9yID0geyB2ZXJ0ZXhCdWZmZXJzOiBbXSB9OwotCi0gICAgY29uc3QgcGlwZWxpbmVE
ZXNjcmlwdG9yID0gewotICAgICAgICB2ZXJ0ZXhTdGFnZTogdmVydGV4U3RhZ2VEZXNjcmlwdG9y
LAotICAgICAgICBmcmFnbWVudFN0YWdlOiBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciwKLSAgICAg
ICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHByaW1pdGl2ZVRvcG9sb2d5LAotICAgICAgICBjb2xvclN0
YXRlczogY29sb3JTdGF0ZXMsCi0gICAgICAgIHZlcnRleElucHV0OiB2ZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IKLSAgICB9OwotCi0gICAgaWYgKHBpcGVsaW5lTGF5b3V0KQotICAgICAgICBwaXBlbGlu
ZURlc2NyaXB0b3IubGF5b3V0ID0gcGlwZWxpbmVMYXlvdXQ7Ci0KLSAgICBpZiAoZGVwdGhTdGF0
ZURlc2NyaXB0b3IpCi0gICAgICAgIHBpcGVsaW5lRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0
ZSA9IGRlcHRoU3RhdGVEZXNjcmlwdG9yOwotCi0gICAgcmV0dXJuIGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShwaXBlbGluZURlc2NyaXB0b3IpOwotfQotCi1mdW5jdGlvbiBiZWdpbkJhc2lj
UmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKSB7Ci0gICAgY29uc3QgYmFzaWNB
dHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJjbGVhciIsCi0g
ICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyQ29sb3I6IHsgcjogMS4wLCBn
OiAwLCBiOiAwLCBhOiAxLjAgfQotICAgIH07Ci0KLSAgICAvLyBGSVhNRTogRmxlc2ggb3V0IHRo
ZSByZXN0IG9mIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiAKLSAgICByZXR1cm4gY29tbWFuZEVu
Y29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2htZW50cyA6IFtiYXNpY0F0dGFjaG1l
bnRdIH0pOwotfQotCi1mdW5jdGlvbiBlbmNvZGVCYXNpY0NvbW1hbmRzKHJlbmRlclBhc3NFbmNv
ZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVyKSB7Ci0gICAgaWYgKHZlcnRleEJ1ZmZl
cikKLSAgICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcldp
dGhEYXRhKGRldmljZSwgZGVzY3JpcHRvciwgZGF0YSwgb2Zmc2V0ID0gMCkgewotICAgIGNvbnN0
IG1hcHBlZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoZGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobWFwcGVkQnVmZmVyWzFdKTsKLSAg
ICBkYXRhQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIG1hcHBl
ZEJ1ZmZlclswXS51bm1hcCgpOwotICAgIHJldHVybiBtYXBwZWRCdWZmZXJbMF07Ci19Ci0KLWFz
eW5jIGZ1bmN0aW9uIG1hcFdyaXRlRGF0YVRvQnVmZmVyKGJ1ZmZlciwgZGF0YSwgb2Zmc2V0ID0g
MCkgewotICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCB3cml0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOwot
ICAgIHdyaXRlQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIGJ1
ZmZlci51bm1hcCgpOwotfQotCi0vKioqIEZ1bmN0aW9ucyBiZWxvdyB0aGlzIGxpbmUgcmVxdWly
ZSBXUFQgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3RoYXJuZXNzcmVwb3J0LmpzLiAqKiovCi0KLWZ1
bmN0aW9uIHJ1blRlc3RzV2l0aERldmljZSh0ZXN0cykgewotICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAg
dmFyIGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUp
IHsgLyogV2ViR1BVIGlzIG5vdCBzdXBwb3J0ZWQuICovIH0KLSAgICAKLSAgICAgICAgZm9yIChs
ZXQgbmFtZSBpbiB0ZXN0cykgewotICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8i
KSkKLSAgICAgICAgICAgICAgICBkZXZpY2VQcm9taXNlVGVzdChkZXZpY2UsIHRlc3RzW25hbWVd
LCBuYW1lKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi1mdW5jdGlvbiBkZXZpY2VQcm9taXNl
VGVzdChkZXZpY2UsIGZ1bmMsIG5hbWUpIHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
ewotICAgICAgICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybiBmdW5jKGRldmljZSk7Ci0gICAgfSwg
bmFtZSk7Ci19OwotCi0vLyBBc3NlcnRpbmcgZXJyb3JzLgotCi1jb25zdCBwb3BWYWxpZGF0aW9u
RXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFz
c2VydFZhbGlkYXRpb25FcnJvcihlcnJvcikpOwotY29uc3QgcG9wTWVtb3J5RXJyb3IgPSBkZXZp
Y2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydE1lbW9yeUVy
cm9yKGVycm9yKSk7Ci1jb25zdCBwb3BOdWxsRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVy
cm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydE51bGwoZXJyb3IpKTsKLWNvbnN0IGFzc2Vy
dE51bGwgPSBlcnJvciA9PiB7Ci0gICAgbGV0IGFzc2VydGlvbk1zZyA9ICJObyBlcnJvciBleHBl
Y3RlZCEiOwotICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICBhc3NlcnRp
b25Nc2cgKz0gIiBHb3Q6ICIgKyBlcnJvci5tZXNzYWdlOwotICAgIGFzc2VydF90cnVlKGVycm9y
ID09PSBudWxsLCBhc3NlcnRpb25Nc2cpOwotfTsKLWNvbnN0IGFzc2VydFZhbGlkYXRpb25FcnJv
ciA9IGVycm9yID0+IHsKLSAgICBsZXQgYXNzZXJ0aW9uTXNnID0gIkV4cGVjdGVkIHZhbGlkYXRp
b24gZXJyb3I6ICI7Ci0gICAgaWYgKGVycm9yICYmIGVycm9yLm1lc3NhZ2UpCi0gICAgICAgIGFz
c2VydGlvbk1zZyArPSBlcnJvci5tZXNzYWdlOwotICAgIGFzc2VydF90cnVlKGVycm9yIGluc3Rh
bmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yLCBhc3NlcnRpb25Nc2cpOwotfTsKLWNvbnN0IGFzc2Vy
dE1lbW9yeUVycm9yID0gZXJyb3IgPT4gYXNzZXJ0X3RydWUoZXJyb3IgaW5zdGFuY2VvZiBHUFVP
dXRPZk1lbW9yeUVycm9yLCAiRXhwZWN0ZWQgb3V0LW9mLW1lbW9yeSBlcnJvciEiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiYjYyNGRjODAzNzUwNzRjNmEwNWE4ODNmNWFkMGIz
YzYzNmRkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBSZWFk
QXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVC
dWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdF
OiBHUFVCdWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotCi1QQVNTIG1h
cFJlYWRBc3luYywgdW5tYXAsIGFuZCBkZXN0cm95IG9uIGEgR1BVQnVmZmVyLgotUEFTUyBHUFVC
dWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVyIGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVh
dGVCdWZmZXJNYXBwZWQuCi1QQVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEgYnVmZmVyIG5vdCBj
cmVhdGVkIHdpdGggTUFQX1JFQUQgdXNhZ2UuCi1QQVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEg
bWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEgcGVuZGluZyBtYXAgcmVhZCBpZiBHUFVC
dWZmZXIgaXMgdW5tYXBwZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAt
cmVhZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTYzYTI3OGQyYTM4Njg2YWUzYzZh
N2Y0NDZjOTEwMzgyNDQ4NzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGVCdWZmZXJNYXBwZWQgYW5kIG1hcFJlYWRB
c3luYyBvbiBhIEdQVUJ1ZmZlci48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRl
c3RzKCkgewotICAgIC8vIEJhc2ljIG1hcFJlYWRBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihh
c3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
IH0pOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYnVmZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVy
LCAiY3JlYXRlQnVmZmVyIHJldHVybmVkIGEgR1BVQnVmZmVyIik7Ci0KLSAgICAgICAgICAgIGxl
dCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAg
IGFzc2VydF90cnVlKGFycmF5QnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsICJmaXJzdCBt
YXBSZWFkQXN5bmMgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5Iik7Ci0KLSAgICAgICAgICAgIGNvbnN0
IHJlYWRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZWFkQXJyYXlbMF0sIDAsICJzdWNjZXNzZnVsbHkgYWNjZXNzIGEgdmFs
dWUgZnJvbSBhIG1hcCByZWFkIik7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFJlYWRBc3luYygpOyAvLyBUaGlz
IHdpbGwgZXZlbnR1YWxseSByZWplY3QgZHVlIHRvIGJ1ZmZlci5kZXN0cm95KCkKLQotICAgICAg
ICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKLQotICAgICAgICAgICAgYXdhaXQgcHJvbWlzZS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRl
c3Ryb3llZCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJtYXBSZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVz
dHJveSBvbiBhIEdQVUJ1ZmZlci4iKTsKLQotICAgIC8vIEdQVURldmljZS5jcmVhdGVCdWZmZXJN
YXBwZWQKLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3Qg
YnVmZmVyUmVzdWx0ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDE2LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIg
PSBidWZmZXJSZXN1bHRbMF07Ci0gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGJ1ZmZl
clJlc3VsdFsxXTsKLQotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYnVmZmVyIGluc3RhbmNlb2Yg
R1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJldHVybmVkIGEgR1BVQnVmZmVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVy
LCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJldHVybmVkIGFuIEFycmF5QnVmZmVyIik7Ci0KLSAgICAg
ICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAg
ICAgICAgYXJyYXkuc2V0KFsxLCAyLCAzLCA0XSk7Ci0KLSAgICAgICAgICAgIC8vIEJ1ZmZlciBz
aG91bGQgYWxyZWFkeSBiZSAibWFwcGVkIi4KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBS
ZWFkQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJHUFVCdWZmZXIgY3JlYXRlZCB2aWEgR1BVQnVmZmVyTWFwcGVkIGNhbm5vdCBiZSBtYXBwZWQg
dW50aWwgYWZ0ZXIgZmlyc3QgdW5tYXAhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0K
LSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICAvLyBCdWZmZXIgc2hv
dWxkIG5vdCBiZSByZS1tYXBwYWJsZSBmb3Igd3JpdGVzLgotICAgICAgICAgICAgYXdhaXQgYnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAg
ICAgICAgICAgfSwgKCkgPT4ge30pOwotCi0gICAgICAgICAgICAvLyBSZWFkIHJlc3VsdHMgb2Yg
b3JpZ2luYWwgd3JpdGVzLgotICAgICAgICAgICAgbGV0IHJlc3VsdEFycmF5QnVmZmVyID0gYXdh
aXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgICAgICAgICAgY29uc3QgcmVzdWx0QXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdEFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIHJlc3Vs
dEFycmF5LmZvckVhY2goKHYsIGkpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHYsIGFycmF5W2ldLCAiU3VjY2Vzc2Z1bGx5IG1hcC1yZWFkIHZhbHVlIHdyaXR0ZW4gdG8gR1BV
QnVmZmVyIG1hcHBlZCBvbiBjcmVhdGlvbiIpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIH0pOwotICAgIH0sICJHUFVCdWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVy
IGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQuIik7Ci0KLSAgICAvKiBC
YXNpYyB2YWxpZGF0aW9uICovCi0gICAgLy8gRklYTUU6IFRlc3QgaW52YWxpZCBjb21iaW5hdGlv
bnMgb2YgR1BVQnVmZmVyVXNhZ2UgYWZ0ZXIgaW1wbGVtZW50aW5nIGVycm9yIGhhbmRsaW5nLgot
Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNl
KCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURSB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3
YXMgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+IHt9
KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJSZWplY3Qg
YSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9SRUFEIHVzYWdlLiIp
OwotCi0gICAgLyogRXh0ZW5kZWQgdW5tYXAvZGVzdHJveSBhbmQgcHJvbWlzZSBzZXR0bGluZyB0
ZXN0aW5nICovCi0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci5tYXBSZWFkQXN5
bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLSAgICAg
ICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIk1hcCBvcGVy
YXRpb24gd2FzIGludmFsaWQhIik7IC8vIGJ1ZmZlciB3YXMgc3RpbGwgaW4gbWFwcGVkIHN0YXRl
IGR1cmluZyBwcm9taXNlIGNyZWF0aW9uCi0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0gICAg
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgbWFwIHJl
YWQgb24gYSBtYXBwZWQgR1BVQnVmZmVyLiIpOwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBz
aXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgICAgICAg
ICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgICAgICAgICAgYnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgICAgIGF3YWl0IHByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQnVmZmVyIHdhcyB1bm1hcHBlZCEiKTsg
Ly8gYnVmZmVyIHdhcyB1bm1hcHBlZCwgd2hpY2ggcmVqZWN0cyBwZW5kaW5nIHByb21pc2VzCi0g
ICAgICAgICAgICB9LCgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IH0pOwotICAgIH0sICJSZWplY3QgYSBwZW5kaW5nIG1hcCByZWFkIGlmIEdQVUJ1ZmZlciBpcyB1
bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVzdHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZGQ5NTEwN2YyYmUxOWVhZDhhMTVhYmExMmQ1MjEy
NTcwNzE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwV3Jp
dGVBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi0KLVBBU1MgTWFwIHdyaXRlLCB1
bm1hcCwgYW5kIGRlc3Ryb3kgYSBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIG1hcCB3cml0ZSBv
biBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSB1c2FnZS4KLVBBU1MgUmVqZWN0
IGEgbWFwIHdyaXRlIG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEgcGVuZGlu
ZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFwcGVkLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9tYXAtd3JpdGUtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
OWNmZDlmNTJjNzViNjU4YWRmMjZhNTk2YjAxZGMzNjUwNDQzNTc2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3Jp
dGUtYnVmZmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBtYXBXcml0ZUFz
eW5jIG9uIGEgR1BVQnVmZmVyLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVz
dHMoKSB7Ci0gICAgLy8gQmFzaWMgbWFwV3JpdGVBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihh
c3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB9KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZl
ciwgImNyZWF0ZUJ1ZmZlciByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotCi0gICAgICAgICAgICBs
ZXQgYXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotCi0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiZmly
c3QgbWFwV3JpdGVBc3luYyByZXNvbHZlZCBzdWNjZXNzZnVsbHkiKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFycmF5WzBdLCAwLCAibWFwV3JpdGVBc3luYyB6ZXJv
ZWQgb3V0IHN0b3JhZ2UiKTsKLSAgICAgICAgICAgIGFycmF5LnNldChbMSwgMiwgMywgNF0pOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAg
Y29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7IC8vIFRoaXMgd2lsbCBldmVu
dHVhbGx5IHJlamVjdCBkdWUgdG8gYnVmZmVyLmRlc3Ryb3koKQotCi0gICAgICAgICAgICBidWZm
ZXIuZGVzdHJveSgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgZGVzdHJveWVkISIp
OwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgfSk7Ci0gICAgfSwgIk1hcCB3cml0ZSwgdW5tYXAsIGFuZCBkZXN0cm95IGEgR1BVQnVm
ZmVyLiIpOwotCi0gICAgLyogQmFzaWMgdmFsaWRhdGlvbiAqLwotICAgIC8vIEZJWE1FOiBUZXN0
IGludmFsaWQgY29tYmluYXRpb25zIG9mIEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGlu
ZyBlcnJvciBoYW5kbGluZy4KLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
ICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAg
ICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
fSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3
aXRoIE1BUF9XUklURSB1c2FnZS4iKTsKLQotICAgIC8qIEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kg
YW5kIHByb21pc2Ugc2V0dGxpbmcgdGVzdGluZyAqLwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
eyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLQotICAgICAg
ICAgICAgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICAgICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdh
aXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCJNYXAgb3BlcmF0aW9uIHdhcyBpbnZhbGlkISIpOyAvLyBidWZmZXIg
d2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0ZSBkdXJpbmcgcHJvbWlzZSBjcmVhdGlvbgotICAgICAg
ICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7
Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIG1hcHBlZCBHUFVCdWZmZXIuIik7Ci0K
LSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFIH0pOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICBh
d2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNo
ZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQhIik7IC8vIGJ1ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNo
IHJlamVjdHMgcGVuZGluZyBwcm9taXNlcwotICAgICAgICAgICAgfSwoKSA9PiB7fSk7Ci0gICAg
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgcGVuZGlu
ZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFwcGVkLiIpOwotfQotCi1ydW5UZXN0cygp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcGlw
ZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcGlwZWxpbmUt
bGF5b3V0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NTZl
YjZhYmYwZDVhMTkzMDEzN2E2YjIxYWQ1YmI0YWViMDA0YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxh
eW91dHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mg
Q3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci4KLVBBU1MgQ3JlYXRl
IGEgYmFzaWMgR1BVUGlwZWxpbmVMYXlvdXQgd3RpaCBhIEdQVURldmljZS4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhkMmI3OThlYTY0Y2JhNDNlYmIwMmNmMjliMzhjMmY4YTg3NDIzNzYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Bp
cGVsaW5lLWxheW91dHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5DcmVhdGUgR1BVQmluZEdy
b3VwTGF5b3V0LjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gY3JlYXRlQmluZEdyb3VwTGF5b3V0
QmluZGluZygpIHsKLSAgICByZXR1cm4gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2
aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCB8IEdQVVNoYWRlclN0YWdlLlZFUlRF
WCwKLSAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgIH07Ci19Ci0KLXRlc3QoKCkg
PT4gewotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7IGJpbmRpbmdzOiBb
Y3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpXSB9OwotICAgIGFzc2VydF9ub3RfZXF1YWxz
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGluZ3NbMF0udmlzaWJpbGl0eSAmIEdQVVNo
YWRlclN0YWdlLkZSQUdNRU5ULCAwKTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzWzBdLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZS5W
RVJURVgsIDApOwotICAgIGFzc2VydF9lcXVhbHMoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5i
aW5kaW5nc1swXS50eXBlLCAic3RvcmFnZS1idWZmZXIiKTsKLX0sICJDcmVhdGUgYSBiYXNpYyBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLiIpOyAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
ICAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KHsgYmluZGluZ3M6IFtjcmVhdGVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nKCldIH0pOwotICAgICAg
ICBhc3NlcnRfdHJ1ZShiaW5kR3JvdXBMYXlvdXQgaW5zdGFuY2VvZiBHUFVCaW5kR3JvdXBMYXlv
dXQsICJjcmVhdGVCaW5kR3JvdXBMYXlvdXQgcmV0dXJuZWQgYSBHUFVCaW5kR3JvdXBMYXlvdXQi
KTsKLQotICAgICAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGlu
ZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotICAgICAg
ICBhc3NlcnRfdHJ1ZShwaXBlbGluZUxheW91dCBpbnN0YW5jZW9mIEdQVVBpcGVsaW5lTGF5b3V0
LCAiY3JlYXRlUGlwZWxpbmVMYXlvdXQgcmV0dXJuZWQgYSBHUFVQaXBlbGluZUxheW91dCIpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBhIGJhc2ljIEdQVVBpcGVs
aW5lTGF5b3V0IHd0aWggYSBHUFVEZXZpY2UuIik7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNGVjMjM3NmY3NmI1NmFlYzBjNWQ0NDUwMjA4NGQ3ZTM5OGQ4
YWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBnZXRRdWV1ZSgpIG9uIEdQVURldmljZS4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGM5NWE2Y2M3MDIwY2E5ZTZkZjFkY2MzYWJjZTc1M2JhZTU5YjBhZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcXVl
dWUtY3JlYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5HZXQgdGhlIEdQVURldmljZSBh
bmQgYXNrIGZvciB0aGUgR1BVUXVldWU8L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotJ3VzZSBzdHJpY3QnOwot
Ci1wcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMobmF2aWdh
dG9yLmdwdSwgdW5kZWZpbmVkLCAibmF2aWdhdG9yLmdwdSBleGlzdHMiKTsKLQotICAgIGNvbnN0
IGNvbnRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJn
cHUiKTsKLSAgICBhc3NlcnRfdHJ1ZShjb250ZXh0IGluc3RhbmNlb2YgR1BVQ2FudmFzQ29udGV4
dCwgImdldENvbnRleHQgcmV0dXJuZWQgYSBHUFVDYW52YXNDb250ZXh0LiIpOwotCi0gICAgcmV0
dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAg
ICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUo
cXVldWUgaW5zdGFuY2VvZiBHUFVRdWV1ZSwgImdldFF1ZXVlIHJldHVybmVkIGEgR1BVUXVldWUu
Iik7Ci0KLSAgICAgICAgcXVldWUubGFiZWwgPSAiRXhhbXBsZSBsYWJlbCI7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMocXVldWUubGFiZWwsICJFeGFtcGxlIGxhYmVsIiwgInF1ZXVlLmxhYmVsIHdh
cyBzZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiZ2V0UXVldWUoKSBv
biBHUFVEZXZpY2UuIik7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMzU3OWM0YTk0OTMxYzFhYjg1NGVmNDFiOWE0ZDQ3
YzA4OWQ2MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIEdQVVJlbmRlclBhc3NFbmNvZGVy
IGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0OTQ4YjZlNDMyNTYzZjI4NTBlMDFjOWU4N2M0OTNhOThkNzIyZDZjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9y
ZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPkdldCB0aGUg
R1BVRGV2aWNlIGFuZCBhc2sgZm9yIHRoZSBHUFVRdWV1ZTwvdGl0bGU+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVycyA9IGAKLXN0cnVjdCBWZXJ0ZXgKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKLSAgICBmbG9hdDQgYXR0cmlidXRlUG9zaXRpb24gOiBhdHRyaWJ1dGUoMCk7Ci19
OwotCi12ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKCkKLXsKLSAgICBWZXJ0ZXggcmVzdWx0Owot
ICAgIHJlc3VsdC5wb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKLSAgICByZXN1bHQuYXR0
cmlidXRlUG9zaXRpb24gPSByZXN1bHQucG9zaXRpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYAotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOwotICAgICAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3
YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJzIH0pOwotICAgICAgICBjb25z
dCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwot
Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BV
Q29tbWFuZEVuY29kZXIsICJjcmVhdGVDb21tYW5kRW5jb2RlciByZXR1cm5lZCBhIEdQVUNvbW1h
bmRFbmNvZGVyIik7Ci0KLSAgICAgICAgY29uc3QgZW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShlbmNv
ZGVyIGluc3RhbmNlb2YgR1BVUmVuZGVyUGFzc0VuY29kZXIsICJiZWdpblJlbmRlclBhc3MoKSBy
ZXR1cm5lZCBhIEdQVVJlbmRlclBhc3NFbmNvZGVyIik7Ci0KLSAgICAgICAgZW5jb2Rlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7Ci0gICAgICAgIGVuY29kZXIuZW5kUGFzcygpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5k
IHN1Y2Nlc3NmdWxseSBlbmRlZCIpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFmNjZmNThkYzRkZjY2YjA3ODM0MDY1NGQ3
MGI5MjJkM2U2ZmM2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgR1BVUmVuZGVyUGlwZWxp
bmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJvcnMuCi1QQVNTIEludmFsaWQgR1BVU2hh
ZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEludmFsaWQgR1BV
U2hhZGVyTW9kdWxlIGZvciBmcmFnbWVudCBzdGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgRW1wdHkg
ZW50cnkgcG9pbnQgZm9yIHZlcnRleCBzdGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBH
UFVUZXh0dXJlRm9ybWF0IGluIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHNob3VsZCBmYWlsLgot
UEFTUyBUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNT
IFRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzIHNob3VsZCBmYWlsLgotUEFTUyBU
b28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4KLVBBU1Mg
RHVwbGljYXRlIHNoYWRlckxvY2F0aW9uIGZvciB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZmFp
bC4KLVBBU1MgSW52YWxpZCBlbnRyeSBwb2ludCBzdHJpbmcgc2hvdWxkIGZhaWwuCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwYjliYzczZGM2ZjQ3MmJmYWE0OThjZGI2NDBmNTM5ODBmMjU1
YmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxOTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJq
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3QgcG9zaXRpb25M
b2NhdGlvbiA9IDA7Ci1jb25zdCBjb2xvckxvY2F0aW9uID0gMTsKLQotY29uc3QgY29sb3JPZmZz
ZXQgPSA0ICogNDsKLWNvbnN0IHZlcnRleFN0cmlkZSA9IDggKiA0OwotCi1jb25zdCB3aGxzbFNv
dXJjZSA9IGAKLXN0cnVjdCBGcmFnbWVudERhdGEgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgke2NvbG9yTG9jYXRpb259
KTsKLX0KLQotdmVydGV4IEZyYWdtZW50RGF0YSB2ZXJ0ZXhNYWluKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgke3Bvc2l0aW9uTG9jYXRpb259KSwgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRl
KCR7Y29sb3JMb2NhdGlvbn0pKQotewotICAgIEZyYWdtZW50RGF0YSBvdXQ7Ci0KLSAgICBvdXQu
cG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBvdXQuY29sb3IgPSBjb2xvcjsKLQotICAgIHJldHVy
biBvdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudE1haW4oZmxvYXQ0IGNvbG9yIDog
YXR0cmlidXRlKCR7Y29sb3JMb2NhdGlvbn0pKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJu
IGNvbG9yOwotfQotYDsKLQotbGV0IGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGdvb2RN
b2R1bGU7Ci0KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0c1siR1BVUmVuZGVyUGlwZWxpbmUgY3Jl
YXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJvcnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGdvb2RNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogd2hsc2xTb3Vy
Y2UgfSk7Ci0gICAgCi0gICAgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHsKLSAgICAg
ICAgdmVydGV4U3RhZ2U6IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4
TWFpbiIgfSwKLSAgICAgICAgZnJhZ21lbnRTdGFnZTogeyBtb2R1bGU6IGdvb2RNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudE1haW4iIH0sCi0gICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAi
dHJpYW5nbGUtbGlzdCIsCi0gICAgICAgIGNvbG9yU3RhdGVzOiBbewotICAgICAgICAgICAgZm9y
bWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAg
ICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgICAgIH1dLAotICAgICAgICB2ZXJ0ZXhJbnB1dDogewot
ICAgICAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgICAgICBzdHJpZGU6IHZl
cnRleFN0cmlkZSwKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAg
ICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAg
ICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0OiBjb2xvck9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAi
ZmxvYXQ0IgotICAgICAgICAgICAgICAgIH1dCi0gICAgICAgICAgICB9XQotICAgICAgICB9Ci0g
ICAgfTsKLSAgICBPYmplY3QuZnJlZXplKGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwot
Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJl
dHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRl
ck1vZHVsZSBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+
IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogIkZvbyIgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0
ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhN
YWluIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWRE
ZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgZnJh
Z21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBi
YWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7Ci0gICAgbGV0IGJhZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci5mcmFnbWVudFN0YWdlID0g
eyBtb2R1bGU6IGJhZFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleE1haW4iIH07Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3Ip
OwotfTsKLQotdGVzdHNbIkVtcHR5IGVudHJ5IHBvaW50IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxk
IGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2Jq
ZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJh
ZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAg
fSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICIiIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRF
cnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQgR1BVVGV4
dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciBzaG91bGQgZmFpbC4iXSA9IGFz
eW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9
LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBiYWREZXNjcmlwdG9yLmNvbG9y
U3RhdGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAg
ICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgfV07Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3Ip
OwotfTsKLQotdGVzdHNbIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyBzaG91bGQg
ZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmpl
Y3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFk
Q29sb3JTdGF0ZXMgPSBuZXcgQXJyYXkoMTAwKTsKLSAgICBiYWRDb2xvclN0YXRlcy5maWxsKHsK
LSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6IHt9LAot
ICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgIH0pOwotICAgIGJhZERlc2NyaXB0b3IuY29sb3JT
dGF0ZXMgPSBiYWRDb2xvclN0YXRlczsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVy
cm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0c1siVG9vIG1hbnkgR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewot
ICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFZlcnRleEJ1ZmZlcnMgPSBuZXcgQXJyYXkoMTAw
KTsKLSAgICBiYWRWZXJ0ZXhCdWZmZXJzLmZpbGwoewotICAgICAgICBzdHJpZGU6IHZlcnRleFN0
cmlkZSwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgc2hhZGVyTG9jYXRp
b246IHBvc2l0aW9uTG9jYXRpb24sCi0gICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAg
ICAgIH1dCi0gICAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsgdmVydGV4
QnVmZmVyczogYmFkVmVydGV4QnVmZmVycyB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5l
QW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJUb28gbWFueSBH
UFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkQXR0cmlidXRlcyA9IG5ldyBBcnJh
eSgxMDApOwotICAgIGJhZEF0dHJpYnV0ZXMuZmlsbCh7Ci0gICAgICAgIHNoYWRlckxvY2F0aW9u
OiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgfSk7Ci0K
LSAgICBiYWREZXNjcmlwdG9yLnZlcnRleElucHV0ID0gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJz
OiBbewotICAgICAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhTdHJpZGUsCi0gICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IGJhZEF0dHJpYnV0ZXMKLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJu
IGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRl
c3RzWyJEdXBsaWNhdGUgc2hhZGVyTG9jYXRpb24gZm9yIHZlcnRleCBhdHRyaWJ1dGVzIHNob3Vs
ZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9i
amVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGJhZERl
c2NyaXB0b3IudmVydGV4SW5wdXQgPSB7Ci0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAg
ICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDog
W3sKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgb2Zm
c2V0OiBjb2xvck9mZnNldCwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAg
ICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxp
bmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQg
ZW50cnkgcG9pbnQgc3RyaW5nIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotICAgIGJhZERlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSA9IHsgbW9kdWxl
OiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAiYmFyIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBp
cGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXJ1blRlc3RzV2l0
aERldmljZSh0ZXN0cyk7Ci0KLWNvbnN0IGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IgPSAoZGV2aWNl
LCBkZXNjcmlwdG9yKSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpOwotICAgIHJl
dHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLTwvc2NyaXB0PgotPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWNkYjUwNzkyNjZlOGY4ODRkMTYzZWI0
OWFkNzY1NjNhODgyMTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSBiYXNpYyBHUFVSZW5k
ZXJQaXBlbGluZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVs
aW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MmIzMzFlNmQ3ZDdjZTgyZTc4MzA4M2FhZDRi
YmJlZmM1ODdhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxzY3JpcHQgc3JjPSJq
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyQ29k
ZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkg
OiBTVl9Qb3NpdGlvbgotewotICAgIGZsb2F0NCB2OwotICAgIHN3aXRjaCAodmlkKSB7Ci0gICAg
Y2FzZSAwOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSAxOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwg
MSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0
NCgwLjAsIDEuMCwgMC4wLCAxLjApOwotfQotYAotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAg
IHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBz
aGFkZXJDb2RlIH0pOwotCi0gICAgICAgIGNvbnN0IGxheW91dEJpbmRpbmcgPSB7IGJpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLlZFUlRFWCwgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIiB9OwotICAgICAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtsYXlvdXRCaW5kaW5nXSB9KTsKLSAgICAgICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgICAgICBjb25zdCBwaXBlbGlu
ZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIHBpcGVs
aW5lTGF5b3V0KTsKLSAgICAgICAgYXNzZXJ0X3RydWUocGlwZWxpbmUgaW5zdGFuY2VvZiBHUFVS
ZW5kZXJQaXBlbGluZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQVVJlbmRlclBpcGVsaW5lIik7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIEdQVVJlbmRl
clBpcGVsaW5lIik7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9yZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNiMmJiNmZhM2YzODYwYzAwNzRiMDk4ZmRmMGU5MjIwZmUzNTdjMzkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmxpdGVyYWwgMTMxNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVY0TUtM
OUJlPzVoVyV6fGZEfkpqeDRSMyZlLUs9LWNsbChYMnhveXUKeldIQUUrdz1mN1pHUiZHSTBUZzV9
QCRffE5mNlUxJEVXbVVwJjMtbG0xSXYwKDdzcnJfVFdfeSM8WWhNQ1ZSa2g3Cnp7ci0mNDFmI2FE
LUdVaCR7Tl5fZyQqJChyVGx1Kl97Pzh7dk1nfUlQaDZWLSYxcUtjZDVUWWR5VmhQTCE4dVE/dQp6
MF4zSXQ/fVBrVkJqY0RWIVNqV3V2WTVYJiUyT1VIZ1YoUH1FK2FDR0FXN3N5KnlPVzM/UTZefE4p
XnU/dTZAOWMKek5KTENiJGNZRnFGTnVrUGdAdThVKFpQWDFLbWRlaiQlOXd8dndfQXVoXkgjbk01
ZVdRPnAheWVpX0Nwc19ra0plCnlRTHIxfS1YQDYkYjNQPWpzTHJFdDZyZV5qQm5zflJWbWZ0M1Ry
XnxoRD9lYXEjXkNBZD1kI1d6cCRQIUdlekF4RQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJj
ZXMvZ3JlZW4tNDAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3Zjg4ZTdj
NWFiNTg4YTg2ODFjMTFkN2QxNmMzMmU5ZjZjNDNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
bGl0ZXJhbCAxNDgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlWNE1LTGpMYmxoVTQ9e2ZmZlFx
TGtoPkcoJjY3SXlLbmBidE1gU1NyCnoxR2d7O0djd0dZQkxOZy00KTYoYVclJG92NV9leilrZ01o
Qzt1dW1mPWp9bTVNai1GZGcwS0U+XlZ0PnZuZHFSdwpYKzx5WkRxb3ZzTjNYcUphdERubXtyLVVX
fDRralFzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzY4Zjg2MmEyOGZjNDJjNTg2ZTIx
YWQ0ODI3ZmNkNjUyMjgzYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIFRlc3Qgc2hhZGVyIGNvZGUgdmFs
aWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1vZHVsZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1t
b2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNjJlMTFjYjY2MWYy
ZTRkNzcyNDEwMjBlODI1ZGMyY2Y2NGYwYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0IHNoYWRlciB2YWxpZGF0aW9uLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlcnMgPSBgCi1zdHJ1Y3QgVmVydGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGF0dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmli
dXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4
IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAg
cmVzdWx0LmF0dHJpYnV0ZVBvc2l0aW9uID0gcmVzdWx0LnBvc2l0aW9uOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBwb3NpdGlv
biA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBwb3NpdGlvbjsK
LX0KLWAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlcnMgfSk7Ci0gICAgICAgIGFzc2Vy
dF90cnVlKHNoYWRlck1vZHVsZSBpbnN0YW5jZW9mIEdQVVNoYWRlck1vZHVsZSwgIlNoYWRlciBt
b2R1bGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
fSk7Ci19LCAiVGVzdCBzaGFkZXIgY29kZSB2YWxpZGF0aW9uIHdoZW4gY3JlYXRpbmcgbW9kdWxl
cy4iKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3Ry
aXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcwNGQ0YmQyMTk2NTBkMzQxMjQ5Nzg3ZWM2
YTdhNGEzMTQ1NjAzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2Fu
dmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJzaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQg
dmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBz
d2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwg
MSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwg
LTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9h
dDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYg
PSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAot
ewotICAgIHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKLX0KLWAKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2Fw
Q2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1T
TCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRl
QmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5j
b2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwot
ICAgIGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29kZXIsIHBpcGVsaW5lKTsKLSAgICBjb25z
dCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotCi0gICAgcXVldWUuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4NDU4MjBiMjFkZDBhM2Yy
MzgzYjhmZDcyMWMwYjRkYmUzMTA2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxl
Q291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIC0xIGhlaWdodCAxIGRl
cHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhl
aWdodCAtMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Yg
d2lkdGggMSBoZWlnaHQgMSBkZXB0aCAtMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IC0xIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3Vu
dCAxIHNhbXBsZUNvdW50IC0xIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9y
bSB1c2FnZSAtMS4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDAgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEg
aGVpZ2h0IDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDAgc2FtcGxl
Q291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEwMDAwIGhlaWdodCAxIGRlcHRoIDEg
bWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVu
b3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAz
MDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDFkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRp
bWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRl
eHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMTAwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDMwMDAgaGVpZ2h0IDEgZGVw
dGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVp
Z2h0IDMwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
M2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
MSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENv
dW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5v
cm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIg
ZGVwdGggMiBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIg
aGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDMgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDMgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxl
Q291bnQgNCBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVw
dGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVp
Z2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gM2Qg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMyBkaW1l
bnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMzAwIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVh
dGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMiBkZXB0aCAyIG1pcExldmVsQ291bnQg
MSBzYW1wbGVDb3VudCA0IGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgot
UEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExl
dmVsQ291bnQgMSBzYW1wbGVDb3VudCAyIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1
c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0
aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdi
YTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWln
aHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBm
b3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lk
dGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVu
c2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1
cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3Vu
dCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGlu
ZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBz
YW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFT
UyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVs
Q291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2Fn
ZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAx
IG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgZGVwdGgz
MmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5z
aW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxvYXQtc3RlbmNpbDggdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMiBkaW1lbnNpb24gMmQgZm9ybWF0IGRlcHRoMzJmbG9hdC1zdGVuY2lsOCB1
c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0
aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiBnYXJiYWdlIGZvcm1h
dCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAx
IGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9u
IDJkIGZvcm1hdCBnYXJiYWdlIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVpbnQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IGJncmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IGJncmE4dW5vcm0tc3JnYiB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTE2Zmxv
YXQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMTAwMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMzEuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDguCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZjYwMDU1N2ExZjk0NzhmZjMyNDNhMDg1NzE4YmNmODA0NzA3YzkyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0
dXJlLWNyZWF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGlu
ZyB0ZXh0dXJlIHZpZXdzLjwvdGl0bGU+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBsZXQgdGVzdHMg
PSBbCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCBuZWdhdGl2ZSB2YWx1
ZXMKLSAgICAgICAge3dpZHRoOiAtMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0
OiAtMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9
LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IC0xLCBtaXBMZXZlbENvdW50
OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAtMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IC0xLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDog
MSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246
ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogLTEsIHN1Y2Nlc3M6IGZhbHNlfSwK
LQotICAgICAgICAvLyBUZXN0IHplcm8gdmFsdWVzCi0gICAgICAgIHt3aWR0aDogMCwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0g
ICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMCwg
c2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVz
YWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDAsIGRpbWVuc2lvbjogIjJk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAg
ICAgICAgLy8gVGVzdCBtYXhpbXVtIHNpemVzCi0gICAgICAgIHt3aWR0aDogMTAwMDAsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9
LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMzAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEwMDAwLCBo
ZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEwMDAwLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEs
IGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMzAwMCwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDog
MSwgaGVpZ2h0OiAzMDAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwg
bWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0
OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAgLy8g
VGVzdCBtaXBtYXBwZWQgdGV4dHVyZXMKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRl
cHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQi
LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAg
ICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6
IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMSwgZGVwdGg6
IDEsIG1pcExldmVsQ291bnQ6IDIsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZv
cm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291
bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBz
dWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBt
aXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRo
OiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDog
MSwgZGltZW5zaW9uOiAiM2QiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nl
c3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IG11bHRpc2FtcGxpbmcKLSAgICAgICAge3dp
ZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3Vu
dDogNCwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1
Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBt
aXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6
IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiA0
LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRp
bWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBm
YWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxD
b3VudDogMSwgc2FtcGxlQ291bnQ6IDMsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1
bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDMwMCwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENv
dW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWln
aHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMiwgZGltZW5z
aW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNl
fSwKLQotICAgICAgICAvLyBUZXN0IGRpbWVuc2lvbgotICAgICAgICB7d2lkdGg6IDIsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEs
IGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAg
ICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBz
YW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMiwgZGVw
dGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIs
IGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAg
IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiB0cnVlfSwKLQotICAgICAgICAvLyBUZXN0IGRlcHRoIHRleHR1cmVzCi0gICAg
ICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2Ft
cGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5j
aWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWln
aHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5z
aW9uOiAiMmQiLCBmb3JtYXQ6ICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDIsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAi
ZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAg
ICAgICAvLyBUZXN0IGVudW1zCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogImdhcmJhZ2Ui
LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAg
ICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJnYXJiYWdlIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJyZ2JhOHVpbnQiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiYmdyYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBM
ZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtLXNyZ2IiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTE2ZmxvYXQiLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCB1c2FnZQotICAgICAgICB7d2lkdGg6IDEs
IGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMTAwMCwgc3VjY2Vz
czogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExl
dmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJn
YmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVz
YWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2Uu
U1RPUkFHRSB8IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVCwgc3VjY2VzczogdHJ1
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU1RPUkFHRSwgc3VjY2VzczogZmFsc2V9LAotICAg
IF07Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICAgICAgbGV0IGNhdWdodCA9IGZhbHNlOwotICAgICAgICAg
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUoe3Np
emU6IHt3aWR0aDogdGVzdC53aWR0aCwgaGVpZ2h0OiB0ZXN0LmhlaWdodCwgZGVwdGg6IHRlc3Qu
ZGVwdGh9LCBtaXBMZXZlbENvdW50OiB0ZXN0Lm1pcExldmVsQ291bnQsIHNhbXBsZUNvdW50OiB0
ZXN0LnNhbXBsZUNvdW50LCBkaW1lbnNpb246IHRlc3QuZGltZW5zaW9uLCBmb3JtYXQ6IHRlc3Qu
Zm9ybWF0LCB1c2FnZTogdGVzdC51c2FnZX0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90cnVl
KHRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiQ2Fubm90IGNyZWF0ZSB0ZXh0dXJlLiIp
OwotICAgICAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIXRl
c3Quc3VjY2VzcywgIkNyZWF0aW5nIHRleHR1cmUgc2hvdWxkICIgKyAodGVzdC5zdWNjZXNzID8g
Im5vdCAiIDogIiIpICsgImZhaWwuIik7Ci0gICAgICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCku
dGhlbihmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgICAgIGlmICh0ZXN0LnN1Y2Nlc3Mp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAiQ291bGQgbm90IGNyZWF0ZSB0
ZXh0dXJlOiAiOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2Fn
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyb3IubWVzc2FnZTsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgbnVsbCwgIkNvdWxkIG5vdCBj
cmVhdGUgdGV4dHVyZTogIiArIG1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWNhdWdodCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICJDcmVhdGVkIHRl
eHR1cmU6ICI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdl
KQotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBlcnJvci5tZXNzYWdlOwotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSghIShjYXVnaHQgfHwgZXJyb3IpLCAiQ3JlYXRl
ZCB0ZXh0dXJlIHdoZW4gc2hvdWxkbid0IGhhdmU6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShmYWxzZSwgImRldmljZSBsb3N0Iik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgZnVuY3Rpb24oZSkgewotICAgICAgICB9KTsKLSAgICB9LCBgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoICR7dGVzdC53aWR0aH0gaGVpZ2h0ICR7dGVzdC5oZWlnaHR9IGRlcHRoICR7dGVz
dC5kZXB0aH0gbWlwTGV2ZWxDb3VudCAke3Rlc3QubWlwTGV2ZWxDb3VudH0gc2FtcGxlQ291bnQg
JHt0ZXN0LnNhbXBsZUNvdW50fSBkaW1lbnNpb24gJHt0ZXN0LmRpbWVuc2lvbn0gZm9ybWF0ICR7
dGVzdC5mb3JtYXR9IHVzYWdlICR7dGVzdC51c2FnZX0uYCk7Ci0gICAgfQotfQotCi1ydW5UZXN0
cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tl
cmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODhhMzU5NWYyNmY5ZWEwNDNiMmIwZTczZTE1NDcwMWE4MWNiMjRmNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQ
VSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJX
ZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0
Y2giIGhyZWY9InZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVj
a2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotCi1jb25zdCBwb3NpdGlvbkJ1ZmZlckluZGV4ID0gMDsKLWNvbnN0IHRleENvb3Jkc0J1ZmZl
ckluZGV4ID0gMTsKLWNvbnN0IHBvc2l0aW9uQXR0cmlidXRlTnVtID0gMDsKLWNvbnN0IHRleENv
b3Jkc0F0dHJpYnV0ZU51bSA9IDE7Ci1jb25zdCBiaW5kR3JvdXBJbmRleCA9IDA7Ci1jb25zdCB0
ZXh0dXJlQmluZGluZ051bSA9IDA7Ci1jb25zdCBzYW1wbGVyQmluZGluZ051bSA9IDE7Ci0KLWNv
bnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKTsK
LX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKCR7cG9zaXRpb25BdHRyaWJ1dGVOdW19KSwgZmxvYXQyIHRleENvb3JkcyA6IGF0dHJp
YnV0ZSgke3RleENvb3Jkc0F0dHJpYnV0ZU51bX0pKSB7Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0g
ICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHZPdXQudGV4Q29vcmRzID0gdGV4Q29v
cmRzOwotICAgIHJldHVybiB2T3V0OwotfQotCi1zdHJ1Y3QgVGV4dHVyZVNhbXBsZXIKLXsKLSAg
ICBUZXh0dXJlMkQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodCR7dGV4dHVyZUJpbmRpbmdOdW19LCBz
cGFjZSR7YmluZEdyb3VwSW5kZXh9KTsKLSAgICBzYW1wbGVyIHMgOiByZWdpc3RlcihzJHtzYW1w
bGVyQmluZGluZ051bX0sIHNwYWNlJHtiaW5kR3JvdXBJbmRleH0pOwotfTsKLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKSwgVGV4
dHVyZVNhbXBsZXIgdGV4dHVyZVNhbXBsZXIpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4g
U2FtcGxlKHRleHR1cmVTYW1wbGVyLnQsIHRleHR1cmVTYW1wbGVyLnMsIHRleENvb3Jkcyk7Ci19
Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICB2YXIg
YnVmZmVyRGVzY3JpcHRvcnMgPSBbXTsKLSAgICBidWZmZXJEZXNjcmlwdG9yc1twb3NpdGlvbkJ1
ZmZlckluZGV4XSA9IHsKLSAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgYXR0cmlidXRl
U2V0OiBbewotICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IiwKLSAgICAgICAgICAgIHNoYWRl
ckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJpYnV0ZU51bQotICAgICAgICB9XQotICAgIH07Ci0gICAg
YnVmZmVyRGVzY3JpcHRvcnNbdGV4Q29vcmRzQnVmZmVySW5kZXhdID0gewotICAgICAgICBzdHJp
ZGU6IDQgKiAyLAotICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICBmb3JtYXQ6
ICJmbG9hdDIiLAotICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHRleENvb3Jkc0F0dHJpYnV0
ZU51bQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICByZXR1cm4geyB2ZXJ0ZXhCdWZmZXJzOiBi
dWZmZXJEZXNjcmlwdG9ycyB9OwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0g
ICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUg
fSk7Ci0KLSAgICBjb25zdCBwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCi0gICAg
ICAgIC8vIGZsb2F0NCB4eXp3Ci0gICAgICAgIC0xLCAxLCAwLCAxLAotICAgICAgICAtMSwgLTEs
IDAsIDEsCi0gICAgICAgIDEsIDEsIDAsIDEsIAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0p
OwotICAgIGNvbnN0IHBvc2l0aW9uQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNl
LCB7IHNpemU6IHBvc2l0aW9uQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB9LCBwb3NpdGlvbkFycmF5LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCB0ZXhDb29yZHNB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDIgdGV4Q29vcmRzCi0g
ICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDEsCi0gICAgICAgIDEsIDAsCi0gICAgICAgIDEsIDEK
LSAgICBdKTsKLSAgICBjb25zdCB0ZXh0dXJlQ29vcmRCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRo
RGF0YShkZXZpY2UsIHsgc2l6ZTogdGV4Q29vcmRzQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB0ZXhDb29yZHNBcnJheS5idWZmZXIpOwotCi0gICAgY29u
c3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCk7
Ci0KLSAgICAvLyBMb2FkIHRleHR1cmUgaW1hZ2UKLSAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFn
ZSgpOwotICAgIGNvbnN0IGltYWdlTG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsgCi0gICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTsgCi0gICAgICAgIGlt
YWdlLnNyYyA9ICJyZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nIjsKLSAgICB9KTsKLSAgICBh
d2FpdCBQcm9taXNlLnJlc29sdmUoaW1hZ2VMb2FkUHJvbWlzZSk7Ci0KLSAgICAvLyBDb252ZXJ0
IGltYWdlIHRvIGRhdGEgYW5kIGZpbGwgR1BVQnVmZmVyCi0gICAgY29uc3QgY2FudmFzMmQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjYW52YXMyZC53aWR0aCA9IGlt
YWdlLndpZHRoOwotICAgIGNhbnZhczJkLmhlaWdodCA9IGltYWdlLmhlaWdodDsKLSAgICBjb25z
dCBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQyZC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgIGNvbnN0IGltYWdlRGF0YSA9IGNvbnRleHQyZC5n
ZXRJbWFnZURhdGEoMCwgMCwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAgICBjb25z
dCB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRh
dGEubGVuZ3RoLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICB9
OwotICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2Us
IHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yLCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAg
Ly8gQ3JlYXRlIEdQVVRleHR1cmUKLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAg
d2lkdGg6IGltYWdlLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKLSAgICAg
ICAgZGVwdGg6IDEKLSAgICB9OwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7Ci0g
ICAgICAgIHNpemU6IHsgd2lkdGg6IGltYWdlLndpZHRoLCBoZWlnaHQ6IGltYWdlLmhlaWdodCwg
ZGVwdGg6IDEgfSwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdl
OiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRAotICAg
IH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNj
cmlwdG9yKTsKLQotICAgIC8vIEJpbmQgdGV4dHVyZSBhbmQgYSBzYW1wbGVyIHRvIHBpcGVsaW5l
Ci0gICAgY29uc3QgdGV4dHVyZUxheW91dEJpbmRpbmcgPSB7IAotICAgICAgICBiaW5kaW5nOiB0
ZXh0dXJlQmluZGluZ051bSwgCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZS
QUdNRU5ULCAKLSAgICAgICAgdHlwZTogInNhbXBsZWQtdGV4dHVyZSIgCi0gICAgfTsKLSAgICBj
b25zdCBzYW1wbGVyTGF5b3V0QmluZGluZyA9IHsKLSAgICAgICAgYmluZGluZzogc2FtcGxlckJp
bmRpbmdOdW0sCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAot
ICAgICAgICB0eXBlOiAic2FtcGxlciIKLSAgICB9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHsKLSAgICAgICAgYmluZGluZ3M6IFt0ZXh0dXJlTGF5b3V0QmluZGlu
Zywgc2FtcGxlckxheW91dEJpbmRpbmddCi0gICAgfTsKLSAgICBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsg
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlQmluZGluZyA9IHsgCi0gICAgICAgIGJpbmRpbmc6IHRleHR1cmVCaW5kaW5nTnVtLCAKLSAg
ICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKSAKLSAgICB9OwotICAg
IGNvbnN0IHNhbXBsZXJCaW5kaW5nID0gewotICAgICAgICBiaW5kaW5nOiBzYW1wbGVyQmluZGlu
Z051bSwKLSAgICAgICAgcmVzb3VyY2U6IGRldmljZS5jcmVhdGVTYW1wbGVyKHsgbWluRmlsdGVy
OiAibmVhcmVzdCIsIG1hZ0ZpbHRlcjogIm5lYXJlc3QiIH0pCi0gICAgfTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0
LAotICAgICAgICBiaW5kaW5nczogW3RleHR1cmVCaW5kaW5nLCBzYW1wbGVyQmluZGluZ10KLSAg
ICB9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdy
b3VwRGVzY3JpcHRvcik7Ci0KLSAgICAvLyBQaXBlbGluZSBhbmQgcmVuZGVyCi0gICAgY29uc3Qg
cGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxs
LCBwaXBlbGluZUxheW91dCwgdmVydGV4SW5wdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotCi0gICAgY29uc3Qg
YnVmZmVyQ29weVZpZXcgPSB7Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVyZUJ1ZmZlciwKLSAgICAg
ICAgcm93UGl0Y2g6IGltYWdlLndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAg
ICB9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHsgdGV4dHVyZTogdGV4dHVyZSB9Owot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRl
eHR1cmVDb3B5VmlldywgdGV4dHVyZVNpemUpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVn
aW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2Rlcik7Ci0gICAgcGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cChiaW5kR3JvdXBJbmRleCwgYmluZEdyb3VwKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKHBvc2l0aW9uQnVmZmVySW5kZXgsIFtwb3NpdGlvbkJ1ZmZlciwgdGV4dHVyZUNvb3Jk
QnVmZmVyXSwgWzAsIDBdKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1
ZXVlKCk7Ci0gICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAg
IHBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB0ZXh0dXJlQ29vcmRCdWZmZXIuZGVzdHJv
eSgpOwotICAgIHRleHR1cmUuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNjk0M2RkYTRlYTg2N2QzMTRmYzIyOGY3ZGZiY2ZmMDIwOTA0Zjg1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNyArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hh
aW4uCi1QQVNTIENyZWF0ZSBiYXNpYyBkZXB0aCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBD
cmVhdGUgYmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1cmUuCi1QQVNTIENyZWF0ZSBiYXNpYyAz
RCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBDcmVhdGUgYSByZW5kZXIgdGFyZ2V0IHRleHR1
cmUgKHdoaWNoIGNhbiBiZSBzYW1wbGVkKSBmcm9tIGRldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNzFhOTQzZGQ3Y2EwM2FlM2U5MjNhNWUzMzVmNGY4ODg5N2E1MTczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5CYXNpYyBH
UFVUZXh0dXJlIFRlc3RzLjwvdGl0bGU+Ci08Ym9keT4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJjYW52YXMiKTsgICAgCi1sZXQgY29udGV4dDsKLQotbGV0IHRleFNpemUgPSB7Ci0gICAgd2lk
dGg6IGNhbnZhcy53aWR0aCwKLSAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgZGVwdGg6
IDEKLX07Ci0KLWxldCB0ZXhEZXNjcmlwdG9yID0gewotICAgIHNpemU6IHRleFNpemUsCi0gICAg
Zm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICB1c2FnZTogR1BVVGV4dHVyZVVz
YWdlLk9VVFBVVF9BVFRBQ0hNRU5UCi19OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHN3
YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLQotICAgICAg
ICBjb25zdCB0ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgICAg
IGFzc2VydF90cnVlKHRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5
IGFjcXVpcmVkIG5leHQgdGV4dHVyZS4iKTsKLQotICAgICAgICBjb25zdCB0ZXh0dXJlVmlldyA9
IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUodGV4dHVy
ZVZpZXcgaW5zdGFuY2VvZiBHUFVUZXh0dXJlVmlldywgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRl
eHR1cmUgdmlldyBmcm9tIG5leHQgdGV4dHVyZS4iKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICB9KTsKLX0sICJDcmVhdGUgdGV4dHVyZSB2aWV3IGZyb20gc3dhcCBjaGFpbi4iKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBkZXB0aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRl
VGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVwdGhUZXh0dXJl
IGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIGRlcHRoIHRleHR1
cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIGRl
cHRoIHRleHR1cmUgZnJvbSBkZXZpY2UuIik7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAg
cmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAg
dGV4RGVzY3JpcHRvci5zYW1wbGVDb3VudCA9IDQ7Ci0gICAgICAgIHRleERlc2NyaXB0b3IuZm9y
bWF0ID0gInJnYmE4dW5vcm0iOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4
dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMKLQotICAgICAgICBj
b25zdCBtdWx0aXNhbXBsZWRUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3Jp
cHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKG11bHRpc2FtcGxlZFRleHR1cmUgaW5zdGFuY2Vv
ZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUu
Iik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIDR4IG11
bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVy
biBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERl
c2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7Ci0gICAgICAgIHRleERlc2NyaXB0b3Iuc2FtcGxlQ291
bnQgPSAxOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLmRpbWVuc2lvbiA9ICIzZCI7Ci0KLSAgICAg
ICAgY29uc3QgdGV4dHVyZTNkID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7
Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUzZCBpbnN0YW5jZW9mIEdQVVRleHR1cmUsICJT
dWNjZXNzZnVsbHkgY3JlYXRlZCBiYXNpYyAzRCB0ZXh0dXJlLiIpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyAzRCB0ZXh0dXJlIGZyb20gZGV2aWNlLiIp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERlc2NyaXB0b3IuZm9ybWF0ID0gInJn
YmE4dW5vcm0iOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVyZVVzYWdl
Lk9VVFBVVF9BVFRBQ0hNRU5UIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQ7Ci0KLSAgICAgICAg
Y29uc3QgcmVuZGVyVGFyZ2V0ID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7
Ci0gICAgICAgIGFzc2VydF90cnVlKHJlbmRlclRhcmdldCBpbnN0YW5jZW9mIEdQVVRleHR1cmUs
ICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBvZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQuIik7Ci0gICAg
ICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gcmVuZGVyVGFyZ2V0LmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmVWaWV3IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZp
ZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCB0ZXh0dXJlIHZpZXcgZnJvbSBvZmYtc2NyZWVuIHJl
bmRlciB0YXJnZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRl
IGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlICh3aGljaCBjYW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZp
Y2UuIik7Ci0KLS8vIEZJWE1FOiBBZGQgdGVzdHMgZm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJy
YXlzLCBhbmQgR1BVVGV4dHVyZVZpZXdzLgotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EwMmFjZDY4Y2VjZDBjZjRlN2ExNGUxMDc0
OGEzY2VlZGE1YTE5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5j
cmVhdGVCdWZmZXIoKTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9X
UklURSB1c2FnZSEKLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiBC
dWZmZXIgY2Fubm90IGhhdmUgYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIQotCi1Q
QVNTIEZpcmUgYW4gdW5jYXB0dXJlZCBHUFVEZXZpY2UgZXJyb3IgZXZlbnQgYXQgJ2RldmljZScu
Ci1QQVNTIEludGVyY2VwdCBhbiB1bmNhcHR1cmVkIGVycm9yIHdpdGggR1BVRGV2aWNlLm9udW5j
YXB0dXJlZGVycm9yIEV2ZW50SGFuZGxlci4KLVBBU1MgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQg
YXN5bmMgdGVzdC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQt
ZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUyZWM0MjBkMGRmOWU3YTY5M2FjNjE3Mzk5
ZjU4YTQ5ODEyNzE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTx0aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9
IHt9OwotbGV0IGV2ZW50V2F0Y2hlcjsKLQotY29uc3QgY2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVu
dCA9IGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsK
LX07Ci0KLXRlc3RzWyJGaXJlIGFuIHVuY2FwdHVyZWQgR1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0
ICdkZXZpY2UnLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBhc3luY1Rlc3QgPSBh
c3luY190ZXN0KCJHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBhc3luYyB0ZXN0LiIpOwotICAgIGNv
bnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIoYXN5bmNUZXN0LCBkZXZpY2UsICJ1
bmNhcHR1cmVkZXJyb3IiKTsKLSAgICBjb25zdCBldmVudEZpcmVkID0gZXZlbnRXYXRjaGVyLndh
aXRfZm9yKCJ1bmNhcHR1cmVkZXJyb3IiKS50aGVuKGV2ZW50ID0+IHsKLSAgICAgICAgYXNzZXJ0
X3RydWUoZXZlbnQuZXJyb3IgaW5zdGFuY2VvZiBHUFVWYWxpZGF0aW9uRXJyb3IsICJTdWNjZXNz
ZnVsbHkgZmlyZWQgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuIik7Ci0gICAgICAgIGFzeW5jVGVz
dC5kb25lKCk7Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8s
IHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBv
dXQgd2FpdGluZyBmb3IgZXJyb3IgZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAgICBj
YXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50KGRldmljZSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5y
YWNlKFtldmVudEZpcmVkLCB0aW1lb3V0XSk7Ci19OwotCi10ZXN0c1siSW50ZXJjZXB0IGFuIHVu
Y2FwdHVyZWQgZXJyb3Igd2l0aCBHUFVEZXZpY2Uub251bmNhcHR1cmVkZXJyb3IgRXZlbnRIYW5k
bGVyLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBjYXB0dXJlZEVycm9yUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICBkZXZpY2Uub251bmNhcHR1cmVk
ZXJyb3IgPSBldmVudCA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5lcnJvciBp
bnN0YW5jZW9mIEdQVVZhbGlkYXRpb25FcnJvciwgIlN1Y2Nlc3NmdWxseSBmaXJlZCBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC4iKTsKLSAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjYXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50KGRldmljZSk7Ci0gICAgfSk7Ci0K
LSAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gewotICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXJyb3Ig
ZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtj
YXB0dXJlZEVycm9yUHJvbWlzZSwgdGltZW91dF0pOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNl
KHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlh
bmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgt
YnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBj
b21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1z
dHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JiZTg3NTc3ZTZiMmU0ZTM1
ZmMxY2ExNzBhMjE1ZmJmZjY4ZjhjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1z
dHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwv
dGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVu
ZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNh
bnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBW
ZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9h
dDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9t
YWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgZ3JlZW4gOiBhdHRyaWJ1
dGUoMSkpCi17Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMCwgZ3JlZW4sIDAsIDEpOwotICAgIHJldHVy
biB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3Ig
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1g
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0
ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDQgeHl6dywgZmxv
YXQgZwotICAgICAgICAtMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLCAxLAot
ICAgICAgICAxLCAxLCAwLCAxLCAxLAotICAgICAgICAxLCAtMSwgMCwgMSwgMQotICAgIF0pOwot
Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKAotICAgICAgICBkZXZpY2UsIAotICAg
ICAgICB7IAotICAgICAgICAgICAgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgCi0gICAg
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFCi0gICAgICAgIH0sCi0gICAgICAgIHZlcnRleEFycmF5LmJ1ZmZlcgotICAgICk7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4g
ewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNSwK
LSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJm
bG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9
LCB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0OiA0ICogNCwKLSAgICAgICAgICAgICAgICBmb3Jt
YXQ6ICJmbG9hdCIsCi0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEKLSAgICAgICAg
ICAgIH1dCi0gICAgICAgIH1dCi0gICAgfQotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmlj
ZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRl
ckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRl
dmljZSk7Ci0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5w
dXREZXNjcmlwdG9yKCk7Ci0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5l
KHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hh
aW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVy
LCBwaXBlbGluZSwgdmVydGV4QnVmZmVyKTsKLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRR
dWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1z
Y2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMx
NWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBG
aWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBhIDQgYnkgNCBibHVlL2dyZWVu
IGNoZWNrZXJib2FyZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJj
YW52YXMiKTsKLWRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lz
c29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9y
dC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMGU3OTQxNDYwNjFmZDU3NDUzMWExMjA2MDg4NzliNDg5YTBkYmI5MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4i
PgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xl
LXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlz
IGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRl
eCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlv
bgotewotICAgIGZsb2F0NCB2OwotICAgIHN3aXRjaCAodmlkKSB7Ci0gICAgY2FzZSAwOgotICAg
ICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAx
OgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMjoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50X21haW4oKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwg
MC4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0gICAgY29uc3Qgc3dh
cENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJ
WE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAg
IGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmlj
ZSk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICBjb25zdCBibHVlQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDog
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAg
ICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBj
bGVhckNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDEsIGE6IDEgfQotICAgIH07Ci0gICAgY29uc3Qg
cGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFj
aG1lbnRzOiBbYmx1ZUF0dGFjaG1lbnRdIH0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHBpcGVsaW5lKTsKLQotICAgIGZ1bmN0aW9uIGRyYXdWaWV3cG9ydCh4LCB5KSB7Ci0gICAgICAg
IHBhc3NFbmNvZGVyLnNldFZpZXdwb3J0KHgsIHksIDEwMCwgMTAwLCAwLCAxKTsKLSAgICAgICAg
cGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkcmF3
U2Npc3NvclJlY3QoeCwgeSkgewotICAgICAgICBwYXNzRW5jb2Rlci5zZXRTY2lzc29yUmVjdCh4
LCB5LCAxMDAsIDEwMCk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0g
ICAgfQotCi0gICAgcGFzc0VuY29kZXIuc2V0U2Npc3NvclJlY3QoMCwgMCwgMjAwLCA0MDApOwot
ICAgIGRyYXdWaWV3cG9ydCgxMDAsIDApOwotICAgIGRyYXdWaWV3cG9ydCgwLCAxMDApOwotICAg
IGRyYXdWaWV3cG9ydCgxMDAsIDIwMCk7Ci0gICAgZHJhd1ZpZXdwb3J0KDAsIDMwMCk7Ci0KLSAg
ICAvLyBEcmF3IG91dHNpZGUgb2Ygc2Npc3NvciByZWN0IHNob3VsZCBub3QgYXBwZWFyLgotICAg
IGRyYXdWaWV3cG9ydCgyMDAsIDEwMCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5zZXRWaWV3cG9ydCgy
MDAsIDAsIDIwMCwgNDAwLCAwLCAxKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMzAwLCAwKTsKLSAg
ICBkcmF3U2Npc3NvclJlY3QoMjAwLCAxMDApOwotICAgIGRyYXdTY2lzc29yUmVjdCgzMDAsIDIw
MCk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0KDIwMCwgMzAwKTsKLQotICAgIC8vIERyYXcgb3V0c2lk
ZSBvZiB2aWV3cG9ydCBzaG91bGQgbm90IGFwcGVhci4KLSAgICBkcmF3U2Npc3NvclJlY3QoMCwg
MCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZp
Y2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Yt
c3dpenpsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1v
Zi1zd2l6emxlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRm
ZjRlZWI2Mjk5OGNmY2I0ZmY2ZWM5ODdjOWQzZWI5ZmU1NDIxYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRk
cmVzcy1vZi1zd2l6emxlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBA
QAotCi1QQVNTIGNhbnRUYWtlQWRkcmVzc09mU3dpenpsZQotUEFTUyBjYW50QXNzaWduUnZhbHVl
U3dpenpsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1v
Zi1zd2l6emxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6
emxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmYyNzllNDk5MjBjYWRl
Y2Q5ZGM5YmUzNTU1NjdjOTMzNjU2MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenps
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5iYWQgc3dpenpsZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5jYW50VGFrZUFkZHJlc3NPZlN3aXp6bGUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBp
bnQyIHY7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB4ID0gJnYueDsKLSAgICAgICAgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAg
ICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICB0aHJlYWQgaW50MiogeCA9ICZ2Lnh5OwotICAg
ICAgICB9Ci0gICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmNhbnRBc3NpZ25SdmFsdWVTd2l6emxl
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludDIgeCgp
IHsKLSAgICAgICAgICAgIGludDIgdjsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9
Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgeCgpLnh5ID0gaW50MigxMCwgMjAp
OwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0
cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVl
M2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4
LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTNiZTM0MjA1M2Q2MWMwMTQ3MjM4NmVl
YjVhM2M0Y2UyZWEwZGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0
ZS1sb2NhdGlvbnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXgg
VmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMTczKSwg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoNDk4KSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0g
ICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMTczLCBmb3JtYXQ6ICJm
bG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiA0OTgsIGZv
cm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MjAsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFw
KCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3Jk
ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjRlMDQ4YzFj
MDZjZDUwMTc4Yzc5ODNiNDFmOTZmZmY2NjBjM2JmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1l
dmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIGV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzOGU4ODhiY2UwZjgzY2ExNzhlMzhhY2Y4YWIw
Y2RkMzQ3Mjk2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRl
c3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgeyByZXR1cm4gKmJhcigxMCkgKyAqYmFy
KDIwKTsgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQgdmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCB4ID0gdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkgeyByZXR1cm4gcGx1cyhiYXIoMTApLCBiYXIoMjAp
KTsgfQotCi0gICAgICAgIGludCBwbHVzKHRocmVhZCBpbnQqIHgsIHRocmVhZCBpbnQqIHkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqeCArICp5OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10pLCAzMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImJheiIsIFtdKSwgNDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFkMzJkMmMzZGI4MzQ0NTRkZWRkOThmMGNlN2JlNzY5MGM0ZWIwYTMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhGYWls
Ci1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzczZmNlZDI2OGU3YWMxOTViYTJhZDZkZmRjMjdiNzNi
OTY5MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5ub25BcnJheVJlZkFycmF5TGVuZ3RoRmFpbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB0aHJlYWQgdWludCogbGVuZ3RoUHRy
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnRbNDJdIGFycmF5OwotICAgICAg
ICAgICAgICAgIHJldHVybiAmKGFycmF5Lmxlbmd0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi13aGxzbFRlc3RzLm5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAgcmV0dXJu
IGFycmF5Lmxlbmd0aDsKLSAgICAgICAgfQotICAgICAgICB1aW50IGJhcigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludFs3NTRdIGFycmF5OwotICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxl
bmd0aDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc1NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbXSksIDc1NCk7Ci19Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcx
Y2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZmllbGRTaG91bGRCZU51bGwKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0ZjEzMmEwOTdmYWYxN2Q5NmQyYmI1ODA4MWVhZGE4ZDlhOTUz
ZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+b29iIG9u
IGFycmF5cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNo
b3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgaW50IHk7Ci0g
ICAgICAgICAgICBpbnQgejsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbyh1aW50IGkpIHsK
LSAgICAgICAgICAgIEZvb1sxMF0gZm9vczsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGZvbyA9
ICZmb29zW2ldOwotICAgICAgICAgICAgdGhyZWFkIGludCogcHRyID0gJihmb28tPnopOwotICAg
ICAgICAgICAgKnB0ciA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGZvb3NbMF0ueiA9PSA0MjsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmFyKCkgewotICAgICAgICAgICAgRm9vWzEwXSBm
b29zOwotICAgICAgICAgICAgdGhyZWFkIEZvbyogZm9vID0gJmZvb3NbNDI0MjQyXTsKLSAgICAg
ICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICYoZm9vLT56KTsKLSAgICAgICAgICAgIHJldHVybiBm
b28gPT0gJmZvb3NbMF07Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdDMgcmV0RmxvYXQzKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0MygxMC4wLCAwLjAsIDAuMCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmbG9hdFsxMF0gcmV0RmxvYXRBcnJheSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0WzEwXSB2OwotICAgICAgICAgICAgdlswXSA9IDEwLjA7Ci0gICAg
ICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmF6KCkgewotICAg
ICAgICAgICAgcmV0dXJuIHJldEZsb2F0MygpWzQyXSA9PSAxMC4wOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBqYXooKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV0RmxvYXRBcnJheSgpWzQy
XSA9PSAxMC4wOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTA7ICsraSkKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW21ha2VVaW50KGkpXSksIGkgPT09IDAgPyB0cnVlIDogZmFsc2UpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFttYWtlVWludCgxMCldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VVaW50KDEwMDAwMDApXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFttYWtlVWludCgweGZmZmZmZmZmKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJiYXIiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImJheiIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
amF6IiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3Bl
Yy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3Bl
Yy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmE1
NWZiNjE2YjE1MzQ5ZWFjNDA5ZGQ2NDA3ZGEzYTA4ZDczNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0K
LVBBU1MgYXJyYXlSZWZUb0FycmF5UmVmCi1QQVNTIGFzc2lnbkxlbmd0aAotUEFTUyBhc3NpZ25M
ZW5ndGhIZWxwZXIKLVBBU1MgYnVpbGRBcnJheVRoZW5TdW1JdAotUEFTUyBidWlsZEFycmF5VGhl
blN1bUl0VXNpbmdBcnJheVJlZmVyZW5jZQotUEFTUyBwYXNzaW5nQXJyYXlUb0Z1bmN0aW9uCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDE1MzFiYmM1NjEyZTc0YTg2ZTlkNjJhMmU4N2Ey
YmE2MWNlM2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMuYXJyYXlSZWZUb0FycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IHg7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gcCA9IEB4OwotICAgICAgICAgICAgdGhy
ZWFkIGludFtdW10gcHAgPSBAcDsKLSAgICAgICAgICAgIGludFtddGhyZWFkW110aHJlYWQgcXEg
PSBwcDsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwotICAgICAgICAgICAgeCA9IDQyOwot
ICAgICAgICAgICAgcFswXSA9IDc2OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAg
ICAgICBwcFswXVswXSA9IDM5OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAg
ICBxcVswXVswXSA9IDgzOwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJv
Z3JhbSk7Ci19Ci0KLXdobHNsVGVzdHMuYXNzaWduTGVuZ3RoID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0Wzc1NF0gYXJyYXk7Ci0gICAgICAgICAg
ICAgICAgKEBhcnJheSkubGVuZ3RoID0gNDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5hc3NpZ25MZW5ndGhIZWxwZXIgPSBhc3luYyAoKSA9
PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGJh
cih0aHJlYWQgZmxvYXRbXSBhcnJheSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBh
cnJheS5sZW5ndGggPSA0MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZm9vKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAg
ICAgICAgICAgIGJhcihAYXJyYXkpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQot
d2hsc2xUZXN0cy5idWlsZEFycmF5VGhlblN1bUl0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
WzQyXSBhcnJheTsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSAr
IDEpCi0gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBpbnQoaSArIDUpOwotICAgICAgICAgICAg
aW50IHJlc3VsdDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSAr
IDEpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgYXJyYXlbaV07Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0MiAqIDUgKyA0MiAq
IDQxIC8gMik7Ci19Ci0KLXdobHNsVGVzdHMuYnVpbGRBcnJheVRoZW5TdW1JdFVzaW5nQXJyYXlS
ZWZlcmVuY2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBiYXIodGhyZWFkIGludFtdIGFycmF5KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAgICAgICAgICAgICAgIGFycmF5W2ldID0g
aW50KGkgKyA1KTsKLSAgICAgICAgICAgIGludCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFycmF5W2ldOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzQyXSBhcnJheTsK
LSAgICAgICAgICAgIHJldHVybiBiYXIoQGFycmF5KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NDIgKiA1ICsgNDIgKiA0MSAvIDIpOwotfQotCi13aGxzbFRlc3RzLnBhc3NpbmdBcnJheVRvRnVu
Y3Rpb24gPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzEwXSBhcnI7Ci0gICAgICAgICAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgYXJy
W2ldID0gaW50KGkpICsgMTsKLSAgICAgICAgICAgIHJldHVybiBzdW0oYXJyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGludCBzdW0oaW50WzEwXSB4cykKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IHQgPSAwOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgdCA9IHQgKyB4c1tpXTsKLSAgICAgICAgICAgIHJldHVybiB0
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA1NSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYmFkLWFkZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFk
ZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMTQ5NDgyZDU5
OWI3YzY0OGI1OWYxYjBhOWY1ODdhMjljYmNmMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgYmFkQWRkCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMWQ3NzIzNWE0OGU5NDJjMzI1MGVmZTI3YzQwMTY1MGVjYzFkM2UzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9iYWQtYWRkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkJhZCBhZGQuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuYmFkQWRkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4LCB1aW50
IHkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludCB6ID0geCArIHk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1s
aXRlcmFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVy
YWxzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDczNDg2ZDc5
NDg5NTdiN2UyYzFlMDU2OTg3NDI1NzNjZTExOTgwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVy
YWxzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJh
ZEludExpdGVyYWxGb3JJbnQKLVBBU1MgYmFkSW50TGl0ZXJhbEZvckZsb2F0Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWM4ZWRjZThmNThlYmM2Y2JkYWI0N2MyMzRjZGEwM2Y1NGY0ODU5Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYmFkSW50TGl0ZXJhbEZv
ckludCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCAidm9pZCBmb28oKSB7
IGludCB4ID0gMzAwMDAwMDAwMDsgfSIpOwotfQotCi13aGxzbFRlc3RzLmJhZEludExpdGVyYWxG
b3JGbG9hdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCJ2b2lkIGZvbygp
IHsgZmxvYXQgeCA9IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7IH0iKTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4NWM0NjM0NjVmM2E5ZTQyZDA0ZmYz
NDQ4NTE3ODg1ZjM5NTQ4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBib29sQml0QW5kCi1Q
QVNTIGJvb2xCaXRPcgotUEFTUyBib29sQml0WG9yCi1QQVNTIGJvb2xCaXROb3QKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDlkOTdmZjI3OWY3ZGEzNTUzNWEwYjc1YjE5ZjQwYzBkMjhjOWJh
MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qg
dGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7
Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29sQml0QW5kID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHNvdXJjZSA9IGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBh
LCBib29sIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICYgYjsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVj
dGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
ZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAg
ICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xCaXRPciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYSB8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewot
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNv
dXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZh
bHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxz
ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVk
IGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwg
bWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLX07Ci0KLXdobHNsVGVzdHMu
Ym9vbEJpdFhvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAg
IGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSBeIGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0g
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1h
a2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJv
b2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwg
ImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xCaXROb3QgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gYAotICAgICAgICBib29sIGZvbyhib29sIGEpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB+YTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwg
ImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
ZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1
ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotfTsKLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2YTVlZTZhN2ZhZGU2M2QyMjBlZTAxMDEwZjVmYWZkZDZiZDgzODgzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MSArMCwwIEBACi0KLVBBU1MgYm9vbE1hdHJpeAotUEFTUyBib29sTWF0cml4MgotUEFTUyBib29s
TWF0cml4MwotUEFTUyBib29sTWF0cml4NAotUEFTUyBib29sTWF0cml4NQotUEFTUyBib29sTWF0
cml4QW55Ci1QQVNTIGJvb2xNYXRyaXhBbnkyCi1QQVNTIGJvb2xNYXRyaXhBbGwKLVBBU1MgYm9v
bE1hdHJpeEFsbDIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wt
bWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg5NjVmY2NkOWZlNWM0NTMxOWM1ZjhiYTEx
YTZkMDUxZjZjOGU2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PmJvb2wgbWF0cml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJv
b2xNYXRyaXggPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBi
b29sMih0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICBtWzFdID0gYm9vbDIodHJ1ZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gaW50KG1bMF1bMF0pICsgaW50KG1bMF1bMV0pICsgaW50KG1b
MV1bMF0pICsgaW50KG1bMV1bMV0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAzKTsKLX07
Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBi
b29sMngyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVsw
XVswXSAmJiAhbVswXVsxXSAmJiBtWzFdWzBdICYmICFtWzFdWzFdOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmJvb2xNYXRyaXgzID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAg
ICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuIG1bMF1bMF0gJiYgIW1bMF1bMV0gJiYgbVsxXVswXSAmJiAhbVsx
XVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5ib29sTWF0cml4NCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDMgbSA9IGJvb2wyeDModHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVsw
XVswXSAmJiBtWzBdWzFdICYmIG1bMF1bMl0gJiYgIW1bMV1bMF0gJiYgIW1bMV1bMV0gJiYgIW1b
MV1bMl07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMuYm9vbE1hdHJpeDUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG07Ci0gICAgICAgICAgICBt
WzBdID0gYm9vbDIodHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgbVsxXSA9IGJvb2wyKHRydWUs
IGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBtWzBdWzBdICYmICFtWzBdWzFdICYmIG1bMV1b
MF0gJiYgIW1bMV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMuYm9vbE1hdHJpeEFueSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJv
b2wyeDIoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICFh
bnkobSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMuYm9vbE1hdHJpeEFueTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKGZh
bHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGFueShtKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0
cml4QWxsID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVlLCB0cnVlLCB0
cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gIWFsbChtKTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4QWxsMiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gYWxsKG0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEzMWM5MmVmNDhiZDcwM2EyMjRkNWFmY2M2OTQ3YzczN2I3NmI0
YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAotCi1QQVNTIGJvb2xlYW5NYXRoCi1QQVNTIGlkZW50aXR5Qm9vbAotUEFTUyBs
aXRlcmFsQm9vbAotUEFTUyBvcGVyYXRvckJvb2wKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzMjRhZTM2MzRkYWZiNGIzZTZh
ZTk1NzYxZGJlMDBjOGI0M2QzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PkJvb2xzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJvb2xlYW5N
YXRoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSAmJiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgZm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlICYmIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZSAmJiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJv
b2wgZm9vNCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSAmJiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZSB8fCB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlIHx8IGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGJvb2wgZm9vNygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vOCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZSB8fCBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MiIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b282IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbzciLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vOCIsIFtdKSwgZmFsc2UpOwotfQotCi0KLXdo
bHNsVGVzdHMuaWRlbnRpdHlCb29sID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
ImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1cm4geDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLX0KLQotd2hsc2xUZXN0cy5saXRlcmFs
Qm9vbCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJib29sIGZvbygpIHsgcmV0
dXJuIHRydWU7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLX0KLQotd2hsc2xUZXN0cy5vcGVyYXRvckJvb2wg
PSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGJvb2xG
cm9tVWludEZhbHNlKCkgeyByZXR1cm4gYm9vbCh1aW50KDApKTsgfQotICAgICAgICBib29sIGJv
b2xGcm9tVWludFRydWUoKSB7IHJldHVybiBib29sKHVpbnQoMSkpOyB9Ci0KLSAgICAgICAgYm9v
bCBib29sRnJvbUludEZhbHNlKCkgeyByZXR1cm4gYm9vbChpbnQoMCkpOyB9Ci0gICAgICAgIGJv
b2wgYm9vbEZyb21JbnRUcnVlKCkgeyByZXR1cm4gYm9vbChpbnQoMSkpOyB9Ci0KLSAgICAgICAg
Ym9vbCBib29sRnJvbUZsb2F0RmFsc2UoKSB7IHJldHVybiBib29sKGZsb2F0KDApKTsgfQotICAg
ICAgICBib29sIGJvb2xGcm9tRmxvYXRUcnVlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgxKSk7IH0K
LSAgICAgICAgYm9vbCBib29sRnJvbUZsb2F0TmFOKGZsb2F0IGFyZykgeyByZXR1cm4gYm9vbChh
cmcpOyB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiYm9vbEZyb21VaW50RmFsc2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tVWludFRydWUi
LCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJib29sRnJvbUludEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUludFRydWUiLCBb
XSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJib29sRnJvbUZsb2F0RmFsc2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tRmxvYXRUcnVlIiwg
W10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImJvb2xGcm9tRmxvYXROYU4iLCBbbWFrZUZsb2F0KHByb2dyYW0sIE5hTildKSwgdHJ1
ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQg
Zm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdDMgeDsKLSAgICAgICAg
ICAgICAgICBib29sIHIgPSBib29sKHgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZv
aWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdDN4MyB4OwotICAg
ICAgICAgICAgICAgIGJvb2wgciA9IGJvb2woeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdt
ZW50LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21l
bnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1MTMyYTBjOTA2OWQwZjI4YjYwZjcwN2Ri
NjNkNTkwODFmZmRlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkg
OiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uLCBjb25zdGFudCBmbG9hdFtdIHRoZUJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCh0aGVCdWZmZXJbMF0sIHRoZUJ1ZmZlclswXSwg
dGhlQnVmZmVyWzBdLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsK
LSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25z
dCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAg
ICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOwotICAg
IHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9h
dDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMl0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjEu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklG
T1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFw
V3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTog
NH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTog
YnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHty
OiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3th
dHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9w
OiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0
aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBm
NDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5n
dGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ2MzFkOGU5MWUzMjkzYTZmNTNkNWQ5OGJhNzZlYTI3MzM0YTUyNzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZv
aWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgdWludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxv
YXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclswXSA9IGJ1
ZmZlci5sZW5ndGg7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHNpemUgPSBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDEzMzc7Ci0KLSAgICBjb25z
dCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1
ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyVWlu
dDMyQXJyYXkgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZl
clVpbnQzMkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJl
c3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9S
QUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07
Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1
ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJl
c3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZm
ZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIDEgKiBVaW50MzJBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZm
ZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3Vs
dFVpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAg
aWYgKHJlc3VsdFVpbnQzMkFycmF5WzBdID09IDEzMzcpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51
bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
YnVmZmVyLXZlcnRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTE3ZDZl
MDE0ZTI4MzVhYzUwOWI0ZmQ3Mjc5MWI3MDQ1Zjg4MWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXIt
dmVydGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihjb25zdGFudCBmbG9hdDRbXSBidWZm
ZXIgOiByZWdpc3RlcihiMCksIHVpbnQgaWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIGJ1ZmZlcltpZF07Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLjAsIDEuMCwgMS4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAg
IGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LQotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IFtdfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwg
ZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29s
b3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEs
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBzaXplID0gNCAqIDQgKiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Ci0K
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNv
dXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs2
XSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9
IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0g
MS4wOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0y
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxOTc4MDc5MmMz
MzdhODUxN2EwMzJjNGQzMzRhZTZjMDM1ZGY4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0
b3JzLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mg
YnVpbHRpblZlY3RvckdldHRlcnMKLVBBU1MgYnVpbHRpblZlY3RvclNldHRlcnMKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwYzBmMmFkZjQyNzI5MWM0MWMxYWRiZmViYjYxOGIxNGIw
NzA1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9
IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24sCi0gICAgImludCI6IGNhbGxJbnRGdW5j
dGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLWNvbnN0IHR5cGVOYW1l
cyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwotY29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQg
XTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5IiwgInoiLCAidyIgXTsKLWNvbnN0IGluaXRp
YWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JH
ZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLQotICAgIGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBz
cmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFtZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAg
Zm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0
eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1gOwotICAgICAgICAgICAgICAgIHNyYyArPSBg
JHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlw
ZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlzdC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIp
fSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguJHtlbGVtZW50c1tpXX07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBgOwot
ICAgICAgICAgICAgICAgIHRlc3RzLnB1c2goeyB0eXBlOiB0eXBlTmFtZSwgbmFtZTogZnVuY3Rp
b25OYW1lLCBleHBlY3RhdGlvbjogaW5pdGlhbGl6ZXJMaXN0W2ldIH0pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IHByb2dyYW0gPSBzcmM7Ci0gICAgZm9yIChs
ZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBjb25zdCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNz
W3Rlc3QudHlwZV07Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2hlY2tGdW5jKHByb2dy
YW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9uKTsKLSAgICB9Ci19OwotCi13aGxz
bFRlc3RzLmJ1aWx0aW5WZWN0b3JTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgdGVz
dHMgPSBbXTsKLSAgICBsZXQgc3JjID0gIiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2YgdHlw
ZU5hbWVzKSB7Ci0gICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
ZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAg
ICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFt
ZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2Uo
MCwgc2l6ZSkuam9pbigiLCAiKX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguJHtl
bGVtZW50c1tpXX0gPSAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC4k
e2VsZW1lbnRzW2ldfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGA7Ci0gICAgICAgICAgICAgICAgdGVzdHMucHVzaCh7IHR5cGU6IHR5cGVOYW1l
LCBuYW1lOiBmdW5jdGlvbk5hbWUsIGV4cGVjdGF0aW9uOiAzNCB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0
IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0
ZXN0LnR5cGVdOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFt
LCB0ZXN0Lm5hbWUsIFtdKSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0MTI0OTFmOWM1YTlkNDFkZmFmZjAzNjBhMWFmMDA1YzRkOWZm
ODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpblZlY3RvckluZGV4U2V0dGVycwot
UEFTUyBidWlsdGluVmVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRp
bi12ZWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWM2MTk5YTcw
NmE4YmFmOGQ2NGNmMWVlZTg5ZjRlNmIyNjUyMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVj
dG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24s
Ci0gICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5j
dGlvbgotfTsKLWNvbnN0IHR5cGVOYW1lcyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwot
Y29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQgXTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5Iiwg
InoiLCAidyIgXTsKLWNvbnN0IGluaXRpYWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13
aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JJbmRleFNldHRlcnMgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBzcmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFt
ZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAgZm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1g
OwotICAgICAgICAgICAgICAgIHNyYyArPSBgJHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
e3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlwZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlz
dC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeFske2l9XSA9IDM0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4WyR7
aX1dOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
YDsKLSAgICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHsgdHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1
bmN0aW9uTmFtZSwgZXhwZWN0YXRpb246IDM0IH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgbGV0IHByb2dyYW0gPSBzcmM7Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0
ZXN0cykgewotICAgICAgICBjb25zdCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2hlY2tGdW5jKHByb2dyYW0sIHRlc3QubmFt
ZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9uKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0
aW5WZWN0b3JzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0g
ICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vMigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICBp
bnQzIGIgPSBpbnQzKGEsIDUpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQzIGEgPSBpbnQz
KDMsIDQsIDUpOwotICAgICAgICAgICAgaW50NCBiID0gaW50NCg2LCBhKTsKLSAgICAgICAgICAg
IHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb280KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKLSAgICAgICAgICAgIGludDIgYiA9IGlu
dDIoNSwgNik7Ci0gICAgICAgICAgICBpbnQ0IGMgPSBpbnQ0KGEsIGIpOwotICAgICAgICAgICAg
cmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50NCBhID0gaW50NCgzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIGludDIg
YiA9IGludDIoNCwgNSk7Ci0gICAgICAgICAgICBpbnQ0IGMgPSBpbnQ0KDMsIGIsIDYpOwotICAg
ICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9v
NigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoNCwgNSk7Ci0gICAgICAg
ICAgICBpbnQzIGIgPSBpbnQzKDMsIGEpOwotICAgICAgICAgICAgaW50MyBjID0gaW50MygzLCA0
LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYiA9PSBjKTsKLSAgICAgICAgfQotICAgICAg
ICB1aW50IGZvb3UoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywg
NCk7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZv
b3UyKCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwotICAg
ICAgICAgICAgdWludDMgYiA9IHVpbnQzKGEsIDUpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07
Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBmb291MygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVpbnQzIGEgPSB1aW50MygzLCA0LCA1KTsKLSAgICAgICAgICAgIHVpbnQ0IGIgPSB1aW50NCg2
LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIHVpbnQg
Zm9vdTQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywgNCk7Ci0g
ICAgICAgICAgICB1aW50MiBiID0gdWludDIoNSwgNik7Ci0gICAgICAgICAgICB1aW50NCBjID0g
dWludDQoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4gY1syXTsKLSAgICAgICAgfQotICAgICAg
ICBib29sIGZvb3U1KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDQgYSA9IHVpbnQ0KDMs
IDQsIDUsIDYpOwotICAgICAgICAgICAgdWludDIgYiA9IHVpbnQyKDQsIDUpOwotICAgICAgICAg
ICAgdWludDQgYyA9IHVpbnQ0KDMsIGIsIDYpOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09
IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vdTYoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB1aW50MiBhID0gdWludDIoNCwgNSk7Ci0gICAgICAgICAgICB1aW50MyBiID0gdWludDMo
MywgYSk7Ci0gICAgICAgICAgICB1aW50MyBjID0gdWludDMoMywgNCwgNik7Ci0gICAgICAgICAg
ICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAg
ICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAgICAg
ICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1Lik7Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAg
ICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MyBhID0gZmxvYXQzKDMuLCA0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQ0IGIgPSBmbG9h
dDQoNi4sIGEpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vZjQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0Migz
LiwgNC4pOwotICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoNS4sIDYuKTsKLSAgICAgICAg
ICAgIGZsb2F0NCBjID0gZmxvYXQ0KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0g
ICAgICAgIH0KLSAgICAgICAgYm9vbCBmb29mNSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0NCBhID0gZmxvYXQ0KDMuLCA0LiwgNS4sIDYuKTsKLSAgICAgICAgICAgIGZsb2F0MiBiID0g
ZmxvYXQyKDQuLCA1Lik7Ci0gICAgICAgICAgICBmbG9hdDQgYyA9IGZsb2F0NCgzLiwgYiwgNi4p
OwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJv
b2wgZm9vZjYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0Mig0Liwg
NS4pOwotICAgICAgICAgICAgZmxvYXQzIGIgPSBmbG9hdDMoMy4sIGEpOwotICAgICAgICAgICAg
ZmxvYXQzIGMgPSBmbG9hdDMoMy4sIDQuLCA2Lik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIg
PT0gYyk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28yIiwgW10pLCA0KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgMyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBb
XSksIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291IiwgW10pLCAzKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UyIiwgW10pLCA0
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
b3UzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvb3U0IiwgW10pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U1IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U2IiwgW10pLCBmYWxzZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
ZiIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vZjIiLCBbXSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNCIsIFtdKSwgNSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNSIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb29mNiIsIFtdKSwgZmFsc2UpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2Nhc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNDc4ZjczYzZmNTRlMTU4
NTVmOGYwZjI3Y2FlNzBlMjNkNjQxZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGNhc3RzCi1QQVNTIHNlbGZD
YXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYWY1YzhiZDY5MGU4ZDRmYmEzNWE0YTMxYTg3YzY3YmQxNzYwNGYwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jYXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5CYWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmNhc3RzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgfQotICAgICAgICBzdHJ1Y3QgQmFyIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAg
ICB9Ci0gICAgICAgIG9wZXJhdG9yIEJhcihGb28gZm9vKSB7Ci0gICAgICAgICAgICBCYXIgYjsK
LSAgICAgICAgICAgIGIueSA9IGZvby54ICsgNzsKLSAgICAgICAgICAgIHJldHVybiBiOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBiYXooaW50IHopIHsKLSAgICAgICAgICAgIEZvbyBmb287Ci0g
ICAgICAgICAgICBmb28ueCA9IHo7Ci0gICAgICAgICAgICBCYXIgYiA9IEJhcihmb28pOwotICAg
ICAgICAgICAgcmV0dXJuIGIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFttYWtlSW50KDYpXSksIDEz
KTsKLX0KLQotd2hsc2xUZXN0cy5zZWxmQ2FzdHMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAg
ICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBGb28gZm9v
OwotICAgICAgICAgICAgZm9vLnggPSAyMTsKLSAgICAgICAgICAgIEZvbyBiYXIgPSBGb28oZm9v
KTsKLSAgICAgICAgICAgIGJhci54ID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLnggKyBi
YXIueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEgKyA0Mik7Ci19Ci0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0
ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNr
ZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10
eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUt
b2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQyOGY2YTc1MmI2N2IwZTc2MGJjNWUyMzI0YjNjZGFiZDhiOTZmMjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZh
cmlhYmxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
KGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDog
U1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NCB2ZWM7Ci0gICAgdmVjWzBdICs9IDQy
LjA7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gdmVjWzBdOwotfQotYDsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0
ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JD
fTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAwOwotICAg
IGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVz
dWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2go
MSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlC
dWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJl
c3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7
Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNDIpCi0gICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1
ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZhYTRlNzY5MWY4NTQ2MTJhZTE2YjE1ODExMjY3MWZmZjhkOWU5ZjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLQotUEFTUyB2ZWN0b3JDbGFtcAotUEFTUyBtYXRyaXhDbGFtcAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMxZjM0NmIwMjU3MDVhYTgxNWI5ODc0NjJkMWYyMWQ5YjNlOWUwMzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5DbGFtcC48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVz
dHMudmVjdG9yQ2xhbXAgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZmxvYXQgZm9vKGZsb2F0IGEsIGZsb2F0IGIpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4
OwotICAgICAgICAgICAgeFswXSA9IGE7Ci0gICAgICAgICAgICB4WzFdID0gYjsKLSAgICAgICAg
ICAgIGZsb2F0MiBib3R0b20gPSBmbG9hdDIoMSwgNSk7Ci0gICAgICAgICAgICBmbG9hdDIgdG9w
ID0gZmxvYXQyKDEwLCA3KTsKLSAgICAgICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRvcCk7
Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUZsb2F0KDEyKSwgbWFrZUZsb2F0KDIwKV0pLCAxMCAvIDcsIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUZsb2F0KDgpLCBtYWtlRmxvYXQoNildKSwgOCAvIDYsIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUZsb2F0KC0xMCksIG1ha2VGbG9hdCg2KV0pLCAxIC8gNiwgZXBzaWxvbik7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeENsYW1wID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBj
LCBmbG9hdCBkKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB4OwotICAgICAgICAgICAgeFswXSA9
IGZsb2F0MihhLCBiKTsKLSAgICAgICAgICAgIHhbMV0gPSBmbG9hdDIoYywgZCk7Ci0KLSAgICAg
ICAgICAgIGZsb2F0MngyIGJvdHRvbSA9IGZsb2F0MngyKGZsb2F0MigxLCAyKSwgZmxvYXQyKDMs
IDQpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIHRvcCA9IGZsb2F0MngyKGZsb2F0MigxMCwgMTEp
LCBmbG9hdDIoMTIsIDEzKSk7Ci0KLSAgICAgICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRv
cCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4WzBdWzBdIC8gMSArIHhbMF1bMV0gLyAyICsgeFsx
XVswXSAvIDMgKyB4WzFdWzFdIC8gNDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VGbG9hdCgyKSwgbWFrZUZsb2F0KC0xKSwgbWFrZUZsb2F0KDQpLCBtYWtlRmxvYXQoMTApXSks
IDIvMSArIDIvMiArIDQvMyArIDEwLzQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDEw
MCksIG1ha2VGbG9hdCgxMDApLCBtYWtlRmxvYXQoMTAwKSwgbWFrZUZsb2F0KDEwMCldKSwgMTAv
MSArIDExLzIgKyAxMi8zICsgMTMvNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxvYXQoLTEw
MCksIG1ha2VGbG9hdCgtMTAwKSwgbWFrZUZsb2F0KC0xMDApLCBtYWtlRmxvYXQoLTEwMCldKSwg
MS8xICsgMi8yICsgMy8zICsgNC80LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdChOYU4p
LCBtYWtlRmxvYXQoTmFOKSwgbWFrZUZsb2F0KE5hTiksIG1ha2VGbG9hdChOYU4pXSksIDEvMSAr
IDIvMiArIDMvMyArIDQvNCwgZXBzaWxvbik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDkzZTg4YTZkY2VhOTc1NWEwOTljY2M5NmQ1NjAxMDFlZmJiMWYxNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIGNvbW1lbnRQYXJzaW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9jb21tZW50LXBhcnNpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJi
ZTQzMGJiMTc5ODFhOTA2YzBjMmM1ZGJkNzc2NmQ0NDdkNTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29t
bWVudC1wYXJzaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jb21tZW50UGFyc2luZyA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAgIHJ1
bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxl
IGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTM4MWY4NDAxODhhZDAyZTU5YzBmOTExMGVjM2UxZDdmZjJm
ZTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTAp
LCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyW3Vp
bnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0
MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0g
ICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsg
Ly8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCBy
ZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRj
aCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJh
eUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3Qg
cmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVy
KTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJd
ID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVy
LnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2
aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvY29weS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2
YjI0YmM3NzZjMGNiZmZmOGJmYmNiMWE3OWU3NGMyY2VlMWIxM2EuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
cHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgY29w
eUFycmF5Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZWIzMmIwMTUyY2I2NWU4Y2QwNGVkMGIzMGE0MDI2ZmRiYzcyOThjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jb3B5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuY29weUFycmF5ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludFsxMF0geHM7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9IGludChpKSArIDE7Ci0gICAgICAgICAgICBp
bnRbMTBdIHlzID0geHM7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5n
dGg7IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9IDA7Ci0gICAgICAgICAgICBpbnQgc3Vt
ID0gMDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IHlzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIHlzW2ldOwotICAgICAgICAgICAgcmV0dXJuIHN1
bTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNTUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1NDMzZTZjYTY2MmU0NTAzOWI3YWRlMjg5OWU1ZGI0NTgzZGQ5NmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNhbGxBcmd1bWVudHNBcmVDb3BpZWRJbW1l
ZGlhdGVseUFmdGVyRXZhbHVhdGlvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5OTljOTZjMDVmNTRlNzA5MTZjZTdhNjU4M2U5Njk4NTc5MjI2ZjEwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5EZXJlZmVyZW5jZSBvcmRlcmlu
Zy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jYWxsQXJndW1lbnRz
QXJlQ29waWVkSW1tZWRpYXRlbHlBZnRlckV2YWx1YXRpb24gPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gKmJhcig1KSArICpiYXIoNyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQg
aW50KiBiYXIoaW50IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IHZhbHVl
OwotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEyKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQt
dHlwZS1jaGVjay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVm
ZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2stZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVj
ay1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9p
bnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rl
cmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTJhNzEzY2I0MjNjNzk0MzVmYzNlYWNmZDhiMzdjYWJmMDEwZDhiZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRy
aWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBw
dHIyID0gJnNoYWRlOwotICAgICpwdHIyID0gc2hhZGU7Ci0KLSAgICByZXN1bHQucG9zaXRpb24g
PSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyMjsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hh
ZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJp
YnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNl
LXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1MWRiODU2MjQ2MzhhNjU1ODg5NDkwYTRhY2I0NzNhZjUz
NjRkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXIuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFBv
aW50IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0IHk7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIFBvaW50W10gYnVmZmVyIDog
cmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0g
ICAgZmxvYXQgeCA9IGJ1ZmZlclswXS54OwotICAgIGZsb2F0IHkgPSBidWZmZXJbMF0ueTsKLSAg
ICB4ICs9IDEuMDsKLSAgICB5ICs9IDEuMDsKLSAgICBidWZmZXJbMF0ueCA9IHg7Ci0gICAgYnVm
ZmVyWzBdLnkgPSB5OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMjsKLQotICAgIGNvbnN0
IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSA0Mi4wOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDQz
LjA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVz
YWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3Vs
dHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXpl
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVy
LCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29k
ZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5k
aXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3Vs
dHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5
QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSA0My4wCi0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNDQuMCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVy
LnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4
M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMjlmNDk5YWI3ODE3YWExMmIxZjc5Y2I0ZDA5MjUw
NjZmODFjOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0
ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEp
KSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgZG8g
ewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZhbHNlKSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUs
IHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0
ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0g
ICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQi
LCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJp
YnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0
dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwot
ICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
cmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNv
dXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rv
LXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMmRmNjc3YTg5NjI3MWQ0MDNmODMyNzViMmZmYjExOTRjMWIwY2FmNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7
Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAg
ICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICB1aW50IGkgPSAw
OwotICAgIGRvIHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIHNoYWRlID0gMC4wOwotICAgIH0gd2hpbGUgKChpID0gaSArIDEsIHNo
YWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9z
aXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBz
aGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUw
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwg
b2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1
dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRy
aWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBw
cmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhT
dGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3Vy
Y2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2
YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3Au
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Yzg5N2E3MGUxYjg0NDFkMTg5YWUwNWM1Y2I1N2U2
Yjk3MDQ3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQg
ewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGRvIHsKLSAgICAgICAgc2hhZGUgPSAxLjA7Ci0g
ICAgfSB3aGlsZShmYWxzZSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjAp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0
cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAg
IGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9Owot
ICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3Zl
cnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlm
b3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRv
cG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0
ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwg
c2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNv
dXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHts
YXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7
Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4
dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFp
bihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBv
dXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJl
ZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRz
ID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwg
bG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVu
ZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXco
NCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVu
dW0tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBh
cnNpbmctZW51bS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
M2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
b250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMTZjYTZlYjUyYjQ2ODQ1OGRjZmYxNDgzNmVmOWVkYWMzMzRjNGI5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotCi1lbnVtIERvbnRDcmFzaCB7Ci0gICAg
VmFsdWUKLX0KLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAg
ICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBh
dHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNv
bnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0g
ICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19
OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4
SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywg
dHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwg
cHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRo
U3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1
ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIx
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlb
MV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsK
LQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3Jv
dXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1
NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9u
cy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25z
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1N2NiMjczMTIzN2U1ZmY1MjIzODMwZTU5Mjkx
ZmZjY2UwNWE1NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRl
eE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkp
IHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9u
OwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAx
LjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEg
PSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAg
Y29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBp
bnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZm
ZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4
QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
OV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
M10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9S
TSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9
OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1
ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBi
aW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0
IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjog
MCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0
YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDog
ImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3Mo
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwg
YmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAs
IDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhODZmNWExNTA1N2FlNDBmYTNjODYwZjk1ZTA1MjI0ZDcyYTBi
M2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGRvdWJsZU5vdAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvdWJsZS1ub3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM3Zjc1
NjI1NGRiZmI4MWQ4MDE2N2ExNDE2OWQzN2E0NjliMzliNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG91Ymxl
LW5vdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmRvdWJsZU5vdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICEheDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
dXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1u
b3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0
ZS1jdG9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1u
b3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJhNjEyYjZlMTE0Zjk0OWY0ZmM1Mjg3
ZjFhZTAxNDhjMDNlNGE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5v
dC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFhZWiB7Ci0gICAgaW50IHg7Ci0gICAg
aW50IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXR5cGVkZWYgWFlaMSA9IFhZWjsKLXR5cGVkZWYgWFla
MiA9IFhZWjsKLXR5cGVkZWYgWFlaMyA9IFhZWjsKLQotW251bXRocmVhZHMoMiwgMSwgMSldCi1j
b21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpbnQg
dmFsdWU7Ci0gICAgZmxvYXQgdmFsdWUyOwotICAgIGludFsxMF0gdmFsdWUzOwotCi0gICAgdGhy
ZWFkIGludCogeCA9ICZ2YWx1ZTsKLSAgICB0aHJlYWQgaW50KiB5ID0gJnZhbHVlOwotICAgIHRo
cmVhZCBmbG9hdCogZjEgPSAmdmFsdWUyOwotICAgIHRocmVhZCBmbG9hdCogZjIgPSAmdmFsdWUy
OwotICAgIFhZWjEgYTsKLSAgICBYWVoyIGI7Ci0gICAgWFlaMyBjOwotICAgIHRocmVhZCBpbnRb
XSBpbnRBcnJheVJlZjEgPSBAdmFsdWUzOwotICAgIHRocmVhZCBpbnRbXSBpbnRBcnJheVJlZjIg
PSBAdmFsdWUzOwotICAgIGlmICgqeCA9PSAqeSAmJiB4ID09IHkpIHsKLSAgICAgICAgYnVmZmVy
W3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotICAg
IH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTog
InN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdy
b3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNj
cmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFy
cmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
N10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwg
c2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJj
ZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1
ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogOCk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVn
aW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21w
dXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMiwgMSwgMSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBy
ZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFd
ID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQo
IiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
dXBsaWNhdGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNh
dGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc4NDYwYzY2
ZDg4YTI2YzkyMGU3ZjYyZGY1ZmU2NzExM2IyM2EwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRl
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBkdXBs
aWNhdGVGdW5jdGlvbnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1
cGxpY2F0ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZjZkOGU0Y2NkNmY1NWM4MjVmZmI5OTRk
MDIzMmJlNWFhN2YzOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5kdXBsaWNhdGVGdW5jdGlvbnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKGludCB4KSB7
IH0KLSAgICAgICAgdHlwZWRlZiBBID0gaW50OwotICAgICAgICB2b2lkIGZvbyhBIHgpIHsgfQot
ICAgIGApOwotCi0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGJhcigpIHsKLSAg
ICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKGludCB4KSB7
Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlu
dCBiYXooKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYmFyKDMpOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMyk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAg
ICAgICBpbnQgb3BlcmF0b3ImW10odGhyZWFkIGludFtdIGEsIHVpbnQgYikgewotICAgICAgICAg
ICAgcmV0dXJuIDQ7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHVpbnQgb3BlcmF0b3IubGVuZ3RoKHRocmVhZCBpbnRbXSBhKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gNDsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KHRocmVhZCBpbnRbXSBhLCB0aHJlYWQgaW50W10g
YikgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PSh0aHJlYWQgaW50KiBh
LCB0aHJlYWQgaW50KiBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50
ZXItdXNhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRkYjBkN2FkNGIyODg0NmU1OTMxZGVjZjE4YTkzN2I5OTJmMDhjMTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBub1BvaW50ZXJzSW5TdHJ1Y3RPckFycmF5Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50
ZXItdXNhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBv
aW50ZXItdXNhZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI3MmQxYzQw
NTE1MTY2MzdhNTExMjBjOTdmMDY4Y2YwZDVkZjdhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXBy
b3Blci1wb2ludGVyLXVzYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5jb3JyZWN0IHBvaW50ZXIgdXNhZ2Uu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubm9Qb2ludGVyc0luU3Ry
dWN0T3JBcnJheSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBzdHJ1Y3QgUyB7IGludCB4OyB0aHJlYWQgaW50KiBwdHI7IH0KLSAgICAgICAgdm9pZCBmb28o
KSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYg
VCA9IHRocmVhZCBpbnQqOwotICAgICAgICBzdHJ1Y3QgUyB7IGludCB4OyBUIHB0cjsgfQotICAg
ICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgc3RydWN0IFMgeyB0aHJlYWQgaW50Kls0Ml0gYXJyOyB9Ci0gICAgICAgIHZvaWQgZm9v
KCkgeyB9Ci0gICAgYCk7Ci0KLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQg
Zm9vKCkgewotICAgICAgICAgICAgdGhyZWFkIGludCpbNDJdIGFycjsKLSAgICAgICAgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFk
IGludCo7Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgVFs0Ml0gYXJyOwotICAg
ICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVm
IFQgPSB0aHJlYWQgaW50Kls0Ml07Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAg
IGludCB4OwotICAgICAgICAgICAgdGhyZWFkIGludCogcHRyID0gJng7Ci0gICAgICAgICAgICAo
JnB0cik7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0g
ICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSBpbnQ7
Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJKltdOwotICAgICAgICB2b2lkIGZvbygpIHsg
fQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0g
dGhyZWFkIGludCo7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107Ci0gICAgICAgIHZv
aWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0
eXBlZGVmIEkgPSB0aHJlYWQgaW50W107Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107
Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50KjsKLSAgICAgICAgdHlwZWRlZiBUID0g
dGhyZWFkIEkqOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKLSAgICAgICAgICAgIChAYXJyKTsKLSAg
ICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBm
b28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIg
PSBAeDsKLSAgICAgICAgICAgICgmYXJyKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludFtdOwotICAgICAg
ICB0eXBlZGVmIFQgPSB0aHJlYWQgSSo7Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7
Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmY5
NThhMGNlZmUxNDcxNWYyY2VkMDA2YWRhNzAzM2JhMTIxMzZiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZs
b2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApOwotfQotCi1mbG9hdCBhc3NpZ25Ub1B0cih0aHJlYWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFs
dWUpIHsKLSAgICByZXR1cm4gKnB0ciA9IHZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIHJlYWxQ
dHIoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuICZ2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0
KiBmaXJzdFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiByZWFsUHRyKHZhbHVlKTsKLX0K
LQotdGhyZWFkIGZsb2F0KiBzZWNvbmRQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gZmly
c3RQdHIodmFsdWUpOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZp
cnN0UHRyKHNoYWRlKTsKLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUyID0gc2Vjb25kUHRy
KDEuMCk7Ci0KLSAgICBmbG9hdCBkdW1teTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15UHRyID0g
JmR1bW15OwotCi0gICAgZHVtbXkgPSBhc3NpZ25Ub1B0cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAg
ICB0aHJlYWQgZmxvYXQqIGR1bW15MiA9IHJlYWxQdHIoc2hhZGUpOwotCi0gICAgcmVzdWx0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6
ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRl
MCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0
ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNj
YmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJp
YWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4NjlmYWEwM2U1ZWYyYmM2NzJlMDJiYjQ5MDc5ZDhiNjAy
MDc0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAg
ICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotZmxvYXQgYXNzaWduVG9QdHIodGhy
ZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsK
LX0KLQotdGhyZWFkIGZsb2F0KiByZWFsUHRyKGZsb2F0IHZhbHVlKQotewotICAgIGZsb2F0IHYg
PSB2YWx1ZTsKLSAgICByZXR1cm4gJnY7Ci19Ci0KLXRocmVhZCBmbG9hdCogZmlyc3RQdHIoZmxv
YXQgdmFsdWUpIHsKLSAgICByZXR1cm4gcmVhbFB0cih2YWx1ZSk7Ci19Ci0KLXRocmVhZCBmbG9h
dCogc2Vjb25kUHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIGZpcnN0UHRyKHZhbHVlKTsK
LX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUgPSBmaXJzdFB0cihzaGFkZSk7
Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlMiA9IHNlY29uZFB0cigxLjApOwotCi0gICAg
ZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teVB0ciA9ICZkdW1teTsKLQotICAg
IGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZTIsIDAuMCk7Ci0gICAgdGhyZWFkIGZsb2F0
KiBkdW1teTIgPSByZWFsUHRyKHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBz
aGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZz
ZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFd
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0
ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1p
dGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5j
aWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBl
bGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVy
MERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIg
PSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3Vy
Y2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1
ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAw
LCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5n
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3Jv
dXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
Z3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDog
ImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0g
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZp
ZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNv
bnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12
YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJs
ZS1saWZldGltZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXIt
dmFyaWFibGUtbGlmZXRpbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0
OTZmN2UzNTE3ZjA0NGM3Yjc0ODY5NWVhZTVjMGUzNWMwYTYxNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYy
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRvUHRyKHRocmVhZCBmbG9hdCogcHRyLCBmbG9hdCB2YWx1
ZSkgewotICAgIHJldHVybiAqcHRyID0gdmFsdWU7Ci19Ci0KLXRocmVhZCBmbG9hdCogcmVhbFB0
cihmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gJnZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQq
IGZpcnN0UHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHJlYWxQdHIodmFsdWUpOwotfQot
Ci10aHJlYWQgZmxvYXQqIHNlY29uZFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiBmaXJz
dFB0cih2YWx1ZSk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAg
ICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlID0gZmly
c3RQdHIoc2hhZGUpOwotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIo
MS4wKTsKLQotICAgIGZsb2F0IGR1bW15OwotICAgIHRocmVhZCBmbG9hdCogZHVtbXlQdHIgPSAm
ZHVtbXk7Ci0KLSAgICBkdW1teSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUyLCAwLjApOwotICAg
IGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZSwgc2hhZGUpOwotCi0gICAgcmVzdWx0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6
ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRl
MCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0
ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRhMmUyMWYyYjAwNmIyMzE3MTZlZmNmMTBkZWYzYjgyYjZmMTQw
YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBzaW1wbGVFbnVtRnJvbUludAot
UEFTUyBzaW1wbGVFbnVtRnJvbVVpbnQKLVBBU1Mgd2VpcmRFbnVtRnJvbUludAotUEFTUyB3ZWly
ZEVudW1Gcm9tVWludAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNjNGE1Y2RjZmVkYjZmYTY4N2E1NmQzNGEwYjBmYjg4YTJhOTYzODcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bUZyb21JbnQgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAg
ICAgICAgIEEsCi0gICAgICAgICAgICBCLAotICAgICAgICAgICAgQwotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28oeCkpOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0MildKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDAp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgxKV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKV0pLCAw
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMjE0NzQ4MzY0NyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAw
KTsKLX07Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bUZyb21VaW50ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAgICAgICAg
ICAgQSwKLSAgICAgICAgICAgIEIsCi0gICAgICAgICAgICBDCi0gICAgICAgIH0KLQotICAgICAg
ICB1aW50IGZvbyh1aW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KEZvbyh4KSk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSldKSwg
MSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoMildKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNDIpXSksIDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50
KDEwMDAwMDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5NjcyOTUpXSksIDApOwotfTsKLQotd2hs
c2xUZXN0cy53ZWlyZEVudW1Gcm9tSW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBlbnVtIEZvbyA6IGludCB7Ci0gICAgICAgICAgICBBID0gNDIsCi0gICAg
ICAgICAgICBCID0gLTEwMDAsCi0gICAgICAgICAgICBDID0gMTAxMDEwLAotICAgICAgICAgICAg
RCA9IDAKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmb28oaW50IHgpIHsKLSAgICAgICAgICAg
IHJldHVybiBpbnQoRm9vKHgpKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwg
MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xMDAwKV0pLCAtMTAwMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDEwMTAxMCldKSwgMTAxMDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpXSksIDApOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMTQ3
NDgzNjQ3KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTIxNDc0ODM2NDgpXSksIDApOwotfTsKLQotd2hsc2xU
ZXN0cy53ZWlyZEVudW1Gcm9tVWludCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgIEEgPSA0MiwKLSAgICAg
ICAgICAgIEMgPSAxMDEwMTAsCi0gICAgICAgICAgICBEID0gMAotICAgICAgICB9Ci0KLSAgICAg
ICAgdWludCBmb28odWludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChGb28oeCkpOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyKV0p
LCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoMTAxMDEwKV0pLCAxMDEwMTApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5Njcy
OTUpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQxKV0pLCAwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxMDEwMTEpXSksIDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0t
c3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBm
MjhkY2VjMzI5MDVmMGIxY2UxOWY1YjYxY2I1NDFiOTJhMDc0YjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vu
dW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAK
LQotUEFTUyBlbnVtRHVwbGljYXRlcwotUEFTUyBkZWZhdWx0RW51bUNvbnN0cnVjdG9yCi1QQVNT
IGVudW1BcnJheVJlZkJhc2UKLVBBU1MgZW51bUZsb2F0QmFzZQotUEFTUyBlbnVtUHRyQmFzZQot
UEFTUyBlbnVtU3RydWN0QmFzZQotUEFTUyBlbnVtTm9NZW1iZXJzCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTAxZjc4NzNlNzdhMjBlNDFiMzliNjY3NmJiMDc0YjgyYzM4YzVjNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5lbnVt
RHVwbGljYXRlcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAgIFdhciA9IDQyLAotICAgICAgICAgICAg
ICAgIEZhbWluZSA9IDAsCi0gICAgICAgICAgICAgICAgUGVzdGlsZW5jZSA9IDIzLAotICAgICAg
ICAgICAgICAgIERlYXRoID0gNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13
aGxzbFRlc3RzLmRlZmF1bHRFbnVtQ29uc3RydWN0b3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBXZWVrZGF5IHsKLSAgICAgICAgICAgIE1vbmRh
eSwKLSAgICAgICAgICAgIFR1ZXNkYXksCi0gICAgICAgICAgICBXZWRuZXNkYXksCi0gICAgICAg
ICAgICBUaHVyc2RheSwKLSAgICAgICAgICAgIFBpenphZGF5Ci0gICAgICAgIH0KLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlZWtkYXkgeCA9IFdlZWtkYXkoKTsK
LSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19
OwotCi13aGxzbFRlc3RzLmVudW1BcnJheVJlZkJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHRocmVhZCBp
bnRbXSB7Ci0gICAgICAgICAgICAgICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
fQotCi13aGxzbFRlc3RzLmVudW1GbG9hdEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IGZsb2F0IHsKLSAg
ICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMuZW51bVB0ckJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHRocmVhZCBpbnQqIHsKLSAgICAgICAg
ICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
ZW51bVN0cnVjdEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQotICAgICAgICAgICAgZW51bSBG
b28gOiBUaGluZ3kgewotICAgICAgICAgICAgICAgIEJhcgotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bU5vTWVtYmVycyA9IGFzeW5jICgpID0+IHsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsgfQot
ICAgICAgICBgKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWY3Zjk2YzE5YTMwZjM0ZGU5NWQ3MmVmZTQ2
MTg2M2Y3ZTZlOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mgc2ltcGxlRW51bQotUEFTUyBlbnVtV2l0aEV4
cGxpY2l0SW50QmFzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bXMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTIuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0OWRkZjNiYjAwODc5ZTg2M2ZjNTgxMzRkNzAzMjI1
M2I1ZTFjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MzU5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bSA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gewotICAgICAg
ICAgICAgV2FyLAotICAgICAgICAgICAgRmFtaW5lLAotICAgICAgICAgICAgUGVzdGlsZW5jZSwK
LSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLQotICAgICAgICBGb28gX3dhcigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3dhcigpID09IEZvby5X
YXI7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2ZhbWluZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmYW1p
bmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ZhbWluZSgpID09IEZvby5GYW1p
bmU7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3Blc3RpbGVuY2UoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3Blc3RpbGVu
Y2UoKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfZGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRoOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZGVh
dGgoKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIF9lcXVhbHMoRm9v
IGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVz
dFNpbXBsZUVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9v
LldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyRXF1
YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5j
ZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1
YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uRmFtaW5lLCBG
b28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlTm90RXF1YWwo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uV2FyLCBGb28u
V2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBG
b28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3ROb3RFcXVh
bCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUs
IEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2ludFdhcigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3dhcigpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFdhcigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50
RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGludCBfaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
bnQgaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50UGVz
dGlsZW5jZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnREZWF0aCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IGludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0
aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRXYXJCYWNrd2FyZHMoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgaW50RmFtaW5lQmFja3dhcmRzKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvbyhfaW50RmFtaW5lKCkpID09IEZvby5GYW1pbmU7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0aWxlbmNlKCkpID09IEZvby5QZXN0aWxlbmNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnREZWF0aEJhY2t3YXJkcygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhl
ckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFs
IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwi
LCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJpbnRXYXIiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJpbnRGYW1pbmUiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlIiwgW10pLCAy
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50
RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lQmFja3dhcmRz
IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImludFBlc3RpbGVuY2VCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGhCYWNrd2Fy
ZHMiLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5lbnVtV2l0aEV4cGxpY2l0SW50QmFz
ZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28g
OiBpbnQgewotICAgICAgICAgICAgV2FyLAotICAgICAgICAgICAgRmFtaW5lLAotICAgICAgICAg
ICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLQotICAgICAgICBG
b28gX3dhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uV2FyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
X3dhcigpID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2ZhbWluZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBmYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ZhbWlu
ZSgpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3Blc3RpbGVuY2Uo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEZvbyBfZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRo
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBfZGVhdGgoKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28g
YikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIF9lcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IHRlc3RBbm90aGVyRXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFs
cyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB0ZXN0Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFs
cyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0
U2ltcGxlTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFs
cyhGb28uV2FyLCBGb28uV2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3Ro
ZXJOb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZv
by5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IHRlc3ROb3ROb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1
YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2lu
dFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3dhcigpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2ludFdhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRGYW1pbmUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpbnQgaW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9p
bnRGYW1pbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50UGVzdGlsZW5jZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbnQgaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBfaW50UGVzdGlsZW5jZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRE
ZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaW50IGludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9pbnREZWF0aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRXYXJCYWNr
d2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0g
Rm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RmFtaW5lQmFja3dhcmRzKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50RmFtaW5lKCkpID09IEZvby5G
YW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludFBlc3RpbGVuY2VCYWNrd2FyZHMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0aWxlbmNlKCkpID09
IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnREZWF0aEJhY2t3
YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludERlYXRoKCkpID09
IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
cGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2Up
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVz
dFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxz
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0
ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXIiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRGYW1pbmUiLCBbXSksIDEpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0
aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiaW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50
RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludFBlc3RpbGVuY2VCYWNrd2FyZHMiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
aW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnVtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjdmZTVmNGZlNjdm
YTBmNTgzODE5YjE2OGUzNjI1MDVkM2E5YTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0KLVBBU1MgZmFpbFRyaWNreURv
dWJsZVplcm8KLVBBU1Mgc2ltcGxlRGVjbGFyYXRpb24KLVBBU1MgZW51bVdpdGhVaW50QmFzZQot
UEFTUyBlbnVtV2l0aG91dFplcm8KLVBBU1MgZW51bU5lZ2F0aXZlVWludAotUEFTUyBwYXN0SW50
TWF4Ci1QQVNTIGVudW1XaXRoU29tZU1hbnVhbFZhbHVlcwotUEFTUyBlbnVtU3dpdGNoQnJlYWtF
eGhhdXN0aXZlCi1QQVNTIGVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZh
dWx0Ci1QQVNTIGVudW1XaXRoTWFudWFsVmFsdWVzCi1QQVNTIGVudW1Td2l0Y2hCcmVha05vdFF1
aXRlRXhoYXVzdGl2ZQotUEFTUyBjb3B5Q29uc3RydWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2VudW1zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZThlZmZhMWIxOThh
YjQyM2MxZTZlNDc4OTFkYzJlMDM0NmI2ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5FbnVtcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5m
YWlsVHJpY2t5RG91YmxlWmVybyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBlbnVtIEUgewotICAgICAgICAgICAgRiwKLSAgICAgICAgICAgIEcgPSAtMiwK
LSAgICAgICAgICAgIEgsCi0gICAgICAgICAgICBJIC8vIHNob3VsZCBnZXQgemVybywgYW5kIHRo
YXQncyBhIGR1cGUuCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEUgZSA9IEUuRm9vOwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJvZ3JhbSk7Ci19OwotCi13aGxzbFRlc3Rz
LnNpbXBsZURlY2xhcmF0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGVudW0gRSB7Ci0gICAgICAgICAgICBGb28sCi0gICAgICAgICAgICBCYXIKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRSBlID0g
RS5Gb287Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQy
KTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhVaW50QmFzZSA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAg
IFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAg
ICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF93YXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
d2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93YXIoKSA9PSBGb28uV2FyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZmFtaW5lKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUoKSA9PSBGb28uRmFtaW5lOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBw
ZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNlKCkg
PT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2RlYXRoKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2RlYXRoKCkg
PT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBG
b28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1w
bGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5XYXIs
IEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZv
by5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdEVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRl
YXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBl
c3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90Tm90RXF1YWwoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uRmFtaW5lLCBGb28u
RGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBfdWludFdhcigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB1aW50KF93YXIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB1
aW50IHVpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3VpbnRXYXIoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gdWludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlu
dCB1aW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50RmFtaW5l
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IF91aW50UGVzdGlsZW5jZSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdWludCB1aW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBfdWludFBlc3RpbGVuY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRE
ZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF9kZWF0aCgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHVpbnQgdWludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIF91aW50RGVhdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludFdh
ckJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRXYXIo
KSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludEZhbWluZUJhY2t3
YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRGYW1pbmUoKSkg
PT0gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludFBlc3RpbGVuY2VC
YWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50UGVzdGls
ZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWlu
dERlYXRoQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfdWlu
dERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1p
bmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1w
bGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIs
IFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFs
IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAidWludFdhciIsIFtdKSwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RmFt
aW5lIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgInVpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnREZWF0aCIsIFtdKSwgMyk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRXYXJC
YWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAidWludEZhbWluZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50UGVzdGls
ZW5jZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwot
fTsKLQotCi13aGxzbFRlc3RzLmVudW1XaXRob3V0WmVybyA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsKLSAgICAg
ICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgICAgICBGYW1pbmUgPSA2NCwKLSAgICAg
ICAgICAgICAgICBQZXN0aWxlbmNlID0gMjMsCi0gICAgICAgICAgICAgICAgRGVhdGggPSAtNDIK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1OZWdhdGl2
ZVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAgICAgICAgICAgICAgIFdhciwKLSAgICAg
ICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAg
ICAgICAgICBEZWF0aCA9IC00MgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdo
bHNsVGVzdHMucGFzdEludE1heCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIDogaW50IHsKLSAgICAgICAgICAgICAg
ICBXYXIgPSAyMTQ3NDgzNjQ3LAotICAgICAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAg
ICAgICBQZXN0aWxlbmNlID0gMCwKLSAgICAgICAgICAgICAgICBEZWF0aAotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhTb21lTWFudWFsVmFsdWVz
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7
Ci0gICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAg
IFBlc3RpbGVuY2UgPSAwLAotICAgICAgICAgICAgRGVhdGgKLSAgICAgICAgfQotICAgICAgICBp
bnQgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uV2FyKTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGludChGb28uRmFtaW5lKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgcGVzdGlsZW5jZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLlBlc3RpbGVuY2UpOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBpbnQoRm9vLkRlYXRoKTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgNzIpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIDcz
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVz
dGlsZW5jZSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImRlYXRoIiwgW10pLCAxKTsKLX07Ci0KLQotd2hsc2xUZXN0cy5lbnVtU3dp
dGNoQnJlYWtFeGhhdXN0aXZlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBBLCBCLCBDCi0gICAgICAgIH0KLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7
Ci0gICAgICAgICAgICBzd2l0Y2ggKEZvbyh4KSkgewotICAgICAgICAgICAgY2FzZSBGb28uQToK
LSAgICAgICAgICAgICAgICByZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIEZvby5COgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0Owot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGb28uQzoKLSAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMCldKSwgMjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNDkpOwot
fQotCi0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZlV2l0aERl
ZmF1bHQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0g
Rm9vIHsKLSAgICAgICAgICAgIEEsIEIsIEMKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKGlu
dCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgICAg
IHN3aXRjaCAoRm9vKHgpKSB7Ci0gICAgICAgICAgICBjYXNlIEZvby5BOgotICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSAyNzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRm9vLkI6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IDc2MjQ7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSA0OTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgwKV0pLCAyNyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDEpXSksIDc2MjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyKV0pLCA0OSk7Ci19Ci0KLXdobHNsVGVzdHMu
ZW51bVdpdGhNYW51YWxWYWx1ZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIFdhciA9IDcyLAotICAgICAgICAgICAg
RmFtaW5lID0gMCwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAyMywKLSAgICAgICAgICAgIERl
YXRoID0gLTQyCi0gICAgICAgIH0KLSAgICAgICAgaW50IHdhcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoRm9vLldhcik7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZhbWlu
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLkZhbWluZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW50KEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5EZWF0aCk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJ3YXIiLCBbXSksIDcyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgMjMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwg
LTQyKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZl
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAgIEEsIEIsIEMsIEQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGludCBmb28oRm9vIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh4KSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEZvby5C
OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQzoKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmNvcHlDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBXZWVrZGF5IHsKLSAgICAg
ICAgICAgIE1vbmRheSwKLSAgICAgICAgICAgIFR1ZXNkYXksCi0gICAgICAgICAgICBXZWRuZXNk
YXksCi0gICAgICAgICAgICBUaHVyc2RheSwKLSAgICAgICAgICAgIFBpenphZGF5Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlZWtkYXkgeCA9
IFdlZWtkYXkuTW9uZGF5OwotICAgICAgICAgICAgV2Vla2RheSB5ID0gV2Vla2RheSh4KTsKLSAg
ICAgICAgICAgIGZsb2F0NCB6ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgZmxv
YXQ0IHcgPSBmbG9hdDQoeik7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBwOwotICAgICAgICAgICAg
ZmxvYXQyeDIgcSA9IGZsb2F0MngyKHApOwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFs
aXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzY2NGM5MDk4OTliNjE4
YjBjNGVkMDIyN2RlZGNkNmJkZGUwZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotUEFTUyBlcXVhbGl0eQotUEFT
UyBub3RFcXVhbGl0eQotUEFTUyBlcXVhbGl0eVR5cGVGYWlsdXJlCi1QQVNTIGVxdWFsc1dyb25n
QXJndW1lbnRMZW5ndGgKLVBBU1MgZXF1YWxzV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGxlc3NFcXVh
bFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbGVzc0VxdWFsV3JvbmdSZXR1cm5UeXBlCi1QQVNT
IGxlc3NUaGFuV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBsZXNzVGhhbldyb25nUmV0dXJuVHlw
ZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZWE3YTI2Yzk4YjIzYzVhNjM5YWViZDdlNDU2MWU0NTY3M2EyMWYzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEg
bmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVz
dCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmVxdWFs
aXR5ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKHVpbnQgeCwg
dWludCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDcpXSksIHRydWUpOwotICAgIHByb2dy
YW0gPSAiYm9vbCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNyksIG1ha2VJbnQoNSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNyldKSwg
dHJ1ZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4g
eCA9PSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSksIGZhbHNlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChm
YWxzZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJv
b2wodHJ1ZSldKSwgdHJ1ZSk7Ci19Ci0KLXdobHNsVGVzdHMubm90RXF1YWxpdHkgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIHRydWUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDcpLCBtYWtlVWludCg3KV0pLCBmYWxzZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZv
byhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUlu
dCg1KV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDcpXSksIGZhbHNlKTsKLSAgICBw
cm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCwgYm9vbCB5KSB7IHJldHVybiB4ICE9IHk7IH0iOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1
ZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29s
KGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSksIGZh
bHNlKTsKLX07Ci0KLXdobHNsVGVzdHMuZXF1YWxpdHlUeXBlRmFpbHVyZSA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoImJvb2wgZm9vKGludCB4LCB1aW50IHkpIHsgcmV0dXJu
IHggPT0geTsgfSIpOwotfTsKLQotd2hsc2xUZXN0cy5lcXVhbHNXcm9uZ0FyZ3VtZW50TGVuZ3Ro
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLQot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVxdWFs
c1dyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3I9PShGb28sIEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMubGVzc0VxdWFsV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PSgp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oaW50KSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sZXNzRXF1YWxXcm9uZ1JldHVyblR5cGUgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPD0oRm9vLCBGb28pIHsgcmV0dXJuIDQy
OyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmxlc3NUaGFuV3JvbmdBcmd1bWVudExl
bmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I8KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc1RoYW5X
cm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yPChGb28sIEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIwMWNjMTE5OGZkMjAyMzZjZGQwZDc3ZTdmOTNmNzE0M2ZmOGQxY2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0KLVBBU1MgZmxvYXRNYXRoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9mbG9hdC1tYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0
aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDcxN2YwMDQzZGQ4YWJjNDRh
YjdhMGZhMTcxMWFjNGRmOTEzZmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmZsb2F0TWF0aCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNDIu
NSA9PSA0Mi41OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGJhcihmbG9hdCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb282
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcig3LjUpOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGZvbzkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQo
Ny41KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmbG9hdCg3KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHggPSA3LjU7Ci0gICAgICAgICAgICByZXR1
cm4gZmxvYXQoeCk7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBkaXYoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gMC41IC8gMiA9PSAwLjI1OwotICAgICAgICB9Ci0gICAgYDsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vNiIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10pLCA3LjUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCA3KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMyIs
IFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImRpdiIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBiYXIoaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBiYXIoNC4wZik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB1aW50IGJhcih1aW50
IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHVpbnQgYmFyKHVpbnQgeCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJhcig0LjBmKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Z2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZTNlMGM2MzFlZTAxOTBkN2FkZGU3MjFjMmNhNTRkMThmYzk1MDEzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNCArMCwwIEBACi0KLVBBU1MgZ2V0dGVyVHlwZQotUEFTUyBzZXR0ZXJUeXBlCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4M2RiOWIzY2Q4MWRjOGIyNTUwNTNkNGIwMDZmOTk4
ZTJlMDhlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmdl
dHRlclR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
aW50IG9wZXJhdG9yLngodGhyZWFkIGludFtdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBpbnQgb3BlcmF0b3IueChpbnRbM10gZm9vKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9vWzBdOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvcltdKHRocmVhZCBpbnRbXSBmb28sIGludCBpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1tpbmRleF07Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IG9wZXJhdG9yLngo
aW50WzNdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1swXTsKLSAgICAg
ICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9v
IHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvcltd
KEZvbyBmb28sIHVpbnQ0IGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9v
W2luZGV4LnhdOwotICAgICAgICB9Ci0gICAgYCk7IAotfTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJU
eXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHRocmVh
ZCBpbnRbXSBvcGVyYXRvci54PSh0aHJlYWQgaW50W10gZm9vLCB1aW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgaW50WzNdIG9wZXJhdG9yLng9KGludFszXSBmb28sIHVpbnQg
eCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbzsKLSAgICAgICAgfQotICAgIGAp
OyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0aHJlYWQgaW50W10gb3BlcmF0b3Jb
XT0odGhyZWFkIGludFtdIGZvbywgdWludCB4LCB1aW50IHkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgaW50WzNdIG9wZXJhdG9yLng9KGludFszXSBmb28sIHVpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbzsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4
OwotICAgICAgICB9Ci0gICAgICAgIEZvbyBvcGVyYXRvcltdPShGb28gZm9vLCBmbG9hdDQgeSwg
dWludCB6KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0g
ICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IueShGb28g
Zm9vKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAg
ICAgICAgRm9vIG9wZXJhdG9yLnk9KEZvbyBmb28sIGludDQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgRm9vIHJlc3VsdDsKLSAgICAgICAgICAgIGZvby54ID0geC54OwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODQ2YzkxNjdmNGVhY2MxMDM0MjJiNzJkNmI3NmI3ZGJhN2M2MDk2Zi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFtdIGFycmF5
LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1bbnVtdGhyZWFk
cygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZm
ZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQp
IHsKLSAgICBmbG9hdFsxMDAwXSBhcnJheTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEwMDAp
Ci0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
ICsraSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhcnJheVswXSA9IDAuMTMzNzsKLSAgICBpZiAoYXJyYXlbMF0gIT0gMC4x
MzM3KQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aHJlYWQgZmxvYXRbXSBhcnJheVB0ciA9IEBh
cnJheTsKLSAgICBpZiAoYXJyYXlQdHIubGVuZ3RoICE9IDEwMDApCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZpbGwoYXJyYXlQdHIsIDAuMTAxMCk7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwg
YXJyYXlQdHIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFycmF5UHRyW2ldICE9IDAuMTAx
MCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDAuMTAxMCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmaWxsKEBhcnJheSwgMC4wMTAxKTsK
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoYXJyYXlQdHJbaV0gIT0gMC4wMTAxKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAoYXJyYXlbaV0gIT0gMC4wMTAxKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBi
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9Owot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1
bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0g
ICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NThhMmMzMzFhMWQ0NzAzYWY3YjhkOWU3
OGMxYjA0OWI0NTdjMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBpZlN0YXRlbWVudAotUEFTUyBp
ZkVsc2VTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZFbHNl
U3RhdGVtZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVhODVhZmQ3N2ZjODBhMjVlOGIzYmZjOTIw
OGZjNGU5YzM0NTNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5pZlN0YXRlbWVudCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNjsK
LSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICB5ID0gODsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA2KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNildKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA2KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoOSldKSwgNik7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlU3RhdGVtZW50ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgaWYgKHggPT0gNykgewot
ICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg1KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgOSk7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZT
dGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAg
ICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHggPT0gOCkgewotICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzKV0p
LCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNCldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpXSksIDYpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0p
LCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0p
LCA2KTsKLX0KLQotd2hsc2xUZXN0cy5pZkVsc2VJZkVsc2VTdGF0ZW1lbnQgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0g
ICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgewot
ICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICB5ID0gMTA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgMTApOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg1KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0pLCAxMCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUxMTI0NWM2NTJjYTBiMGYwYmQzZGY2NmYzYTQ0MjIyMDYwNzgz
NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgaW5jcmVtZW50QW5kRGVjcmVtZW50Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmNzFiNGNmNGRjMzg3Mjc1YTI5ZGNl
M2MxMWY2Mzk4ZTkzMmZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuaW5jcmVtZW50QW5kRGVjcmVtZW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vMSgpIHsgaW50IHggPSAwOyByZXR1cm4geCsrOyB9Ci0gICAg
ICAgIGludCBmb28yKCkgeyBpbnQgeCA9IDA7IHgrKzsgcmV0dXJuIHg7IH0KLSAgICAgICAgaW50
IGZvbzMoKSB7IGludCB4ID0gMDsgcmV0dXJuICsreDsgfQotICAgICAgICBpbnQgZm9vNCgpIHsg
aW50IHggPSAwOyArK3g7IHJldHVybiB4OyB9Ci0gICAgICAgIGludCBmb281KCkgeyBpbnQgeCA9
IDA7IHJldHVybiB4LS07IH0KLSAgICAgICAgaW50IGZvbzYoKSB7IGludCB4ID0gMDsgeC0tOyBy
ZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9vNygpIHsgaW50IHggPSAwOyByZXR1cm4gLS14OyB9
Ci0gICAgICAgIGludCBmb284KCkgeyBpbnQgeCA9IDA7IC0teDsgcmV0dXJuIHg7IH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28x
IiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vMiIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzYiLCBbXSks
IC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vNyIsIFtdKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb284IiwgW10pLCAtMSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZkYmI3MzQwYWFjNGZkYjFkYWQyZWUyMjQ1ZDU1YjBhZWExOWUyMmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgaW5jcmVtZW50U2V0dGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiOTQxNDRlM2MzZTY5NjdhNzJjNmRmZmVhMDBiNTAwNTNhNjY2NjAyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuaW5jcmVtZW50U2V0dGVy
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZv
byB7Ci0gICAgICAgICAgICBpbnQgejsKLSAgICAgICAgICAgIGludCB3OwotICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9v
LnogPSAzOwotICAgICAgICAgICAgZm9vLncgPSAxOwotICAgICAgICAgICAgaW50IHZhbHVlID0g
Zm9vLncrKzsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSoxMDAgKyBmb28ueioxMCArIGZvby53
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAxMDAgKyAzMCArIDIpOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjUwZTk0MjkxNTk5NjhkZWVkMTQ3YWY3ODc5NDU3YzJj
ZTMwMzlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHBvaW50ZXJJbmRleEdldHRlcgot
UEFTUyBwb2ludGVyR2V0dGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5k
ZXgtZ2V0dGVyLXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Yy
N2EzM2ViN2M2MjIyMGU4OThlMjZhMWIxZTViOWU5MmYxYjQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRl
eC1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVz
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wb2ludGVySW5kZXhH
ZXR0ZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShkZXZpY2UgaW50KiwgdWludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yW10odGhyZWFkIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKHRocmVhZGdy
b3VwIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0
MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGNvbnN0YW50IGludCosIHVpbnQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMucG9pbnRlckdldHRlciA9IGFzeW5jICgp
ID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBv
cGVyYXRvci5mb28oZGV2aWNlIGludCopCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKHRocmVhZCBpbnQq
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWRncm91cCBpbnQqKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9y
LmZvbyhjb25zdGFudCBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZDZlZjA3YTdhYzMwZDE1YjIzNjI4MTIzNDk2YmZmNzgwZTZhNzE3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCww
IEBACi0KLVBBU1MgaW50Qml0QW5kCi1QQVNTIGludEJpdE9yCi1QQVNTIGludEJpdFhvcgotUEFT
UyBpbnRCaXROb3QKLVBBU1MgaW50TFNoaWZ0Ci1QQVNTIGludFJTaGlmdAotUEFTUyBpbnRTaW1w
bGVNYXRoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1h
dGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3MDVjYzc1NTk4NjFiZTNmMDM1Mjg3MWEzMDUx
NGFhNDE3MjA1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5U
ZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5pbnRCaXRBbmQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCBhLCBpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
JiBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSksIG1ha2VJbnQoNyldKSwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDY1NTM1KSwgbWFrZUludCg0MildKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VJbnQo
LTcpXSksIC03KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDApOwotfQotCi13aGxz
bFRlc3RzLmludEJpdE9yID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBhIHwgYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDcp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBt
YWtlSW50KC03KV0pLCAtMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4NTczMik7
Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0WG9yID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtl
SW50KDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NDkzKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoLTEpLCBtYWtlSW50KC03KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIp
XSksIDg1NzMyKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRCaXROb3QgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gfmE7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAt
Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDY1NTM1KV0pLCAtNjU1MzYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDApXSksIC0xKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRMU2hpZnQgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIDw8IGI7Ci0gICAgICAgIH0KLSAgICBgOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMTI4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlVWlu
dCgyKV0pLCAyNjIxNDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0zMik7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRSU2hpZnQgPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBh
LCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1
KSwgbWFrZVVpbnQoMildKSwgMTYzODMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0x
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMCksIG1ha2VVaW50KDMpXSksIDApOwotfQotCi13aGxzbFRlc3RzLmludFNp
bXBsZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiaW50IGZvbyhpbnQg
eCwgaW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwg
MTIpOwotICAgIHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggLSB5
OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpLCBtYWtlSW50
KDcpXSksIC0yKTsKLSAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVy
biB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDM1KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyks
IG1ha2VJbnQoLTUpXSksIC0zNSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWxp
dGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50
LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZmZmM4NzkwNmUxYTIxOGQyYzhjZGFiMWQyZmZjOWQwNGI5Yjg1ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2ludC1saXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgdHdvSW50TGl0ZXJhbHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNhNjhiYzhhNGMyOGUwMzBmZTVjNGM0ZjJmN2Q1OGFkYjk5ZjMzMjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hM
U0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLnR3b0ludExpdGVyYWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA0MiA9
PSA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotfQotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9q
cy90ZXN0LWhhcm5lc3MuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNTZjOTY4
MjQwOTk2Njc4NWFiMDE5OTFlMmM0ZWI4Y2RjNjVmYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3Qt
aGFybmVzcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDU0NSArMCwwIEBACi0vKiBUeXBlIFV0aWx0
aWVzICovCi0KLS8vIEZJWE1FOiBTdXBwb3J0IGFsbCBXSExTTCBzY2FsYXIgYW5kIHZlY3RvciB0
eXBlcy4KLS8vIEZJWE1FOiBTdXBwb3J0IHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLWNvbnN0IFR5
cGVzID0gT2JqZWN0LmZyZWV6ZSh7Ci0gICAgQk9PTDogU3ltYm9sKCJib29sIiksCi0gICAgSU5U
OiBTeW1ib2woImludCIpLAotICAgIFVDSEFSOiBTeW1ib2woInVjaGFyIiksCi0gICAgVUlOVDog
U3ltYm9sKCJ1aW50IiksCi0gICAgRkxPQVQ6IFN5bWJvbCgiZmxvYXQiKSwKLSAgICBGTE9BVDQ6
IFN5bWJvbCgiZmxvYXQ0IiksCi0gICAgRkxPQVQ0WDQ6IFN5bWJvbCgiZmxvYXQ0eDQiKSwKLSAg
ICBNQVhfU0laRTogNjQgLy8gVGhpcyBuZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW55
IHNpbmd1bGFyIFdITFNMIHR5cGUuCi19KTsKLQotZnVuY3Rpb24gaXNTY2FsYXIodHlwZSkKLXsK
LSAgICBzd2l0Y2godHlwZSkgewotICAgICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAgICAgICAg
Y2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y29udmVydFR5cGVUb0FycmF5VHlwZSh0eXBlKQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgVHlwZXMuQk9PTDoKLSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVzLklOVDoKLSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVzLlVDSEFSOgotICAgICAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXk7Ci0g
ICAgICAgIGNhc2UgVHlwZXMuVUlOVDoKLSAgICAgICAgICAgIHJldHVybiBVaW50MzJBcnJheTsK
LSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0g
ICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0WDQ6Ci0gICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFy
cmF5OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZh
bGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb252ZXJ0VHlwZVRv
V0hMU0xUeXBlKHR5cGUpCi17Ci0gICAgc3dpdGNoKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBl
cy5CT09MOgotICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgY2FzZSBUeXBlcy5J
TlQ6Ci0gICAgICAgICAgICByZXR1cm4gImludCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUNIQVI6
Ci0gICAgICAgICAgICByZXR1cm4gInVjaGFyIjsKLSAgICAgICAgY2FzZSBUeXBlcy5VSU5UOgot
ICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQ0IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoK
LSAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0eDQiOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB3aGxzbEFyZ3VtZW50VHlwZSh0eXBlKQotewotICAgIGlmICh0eXBlID09
PSBUeXBlcy5CT09MKQotICAgICAgICByZXR1cm4gImludCI7Ci0gICAgcmV0dXJuIGNvbnZlcnRU
eXBlVG9XSExTTFR5cGUodHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbnZlcnRUb1dITFNMT3V0cHV0
VHlwZShjb2RlLCB0eXBlKQotewotICAgIGlmICh0eXBlICE9PSBUeXBlcy5CT09MKQotICAgICAg
ICByZXR1cm4gY29kZTsKLSAgICByZXR1cm4gYGludCgke2NvZGV9KWA7Ci19Ci0KLWZ1bmN0aW9u
IGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGNvZGUsIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgIT09
IFR5cGVzLkJPT0wpCi0gICAgICAgIHJldHVybiBjb2RlOwotICAgIHJldHVybiBgYm9vbCgke2Nv
ZGV9KWA7Ci19Ci0KLS8qIEhhcm5lc3MgQ2xhc3NlcyAqLwotCi1jbGFzcyBXZWJHUFVVbnN1cHBv
cnRlZEVycm9yIGV4dGVuZHMgRXJyb3IgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAg
ICAgIHN1cGVyKCJObyBHUFVEZXZpY2UgZGV0ZWN0ZWQhIik7Ci0gICAgfQotfTsKLQotY2xhc3Mg
RGF0YSB7Ci0gICAgLyoqCi0gICAgICogVXBsb2FkIHR5cGVkIGRhdGEgdG8gYW5kIHJldHVybiBh
IHdyYXBwZXIgb2YgYSBHUFVCdWZmZXIuCi0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRo
ZSBXSExTTCB0eXBlIHRvIGJlIHN0b3JlZCBpbiB0aGlzIERhdGEuCi0gICAgICogQHBhcmFtIHtO
dW1iZXIgb3IgQXJyYXlbTnVtYmVyXX0gdmFsdWVzIC0gVGhlIHJhdyBkYXRhIHRvIGJlIHVwbG9h
ZGVkLgotICAgICAqLwotICAgIGNvbnN0cnVjdG9yKGhhcm5lc3MsIHR5cGUsIHZhbHVlcywgaXNC
dWZmZXIgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYXJuZXNzLmRldmljZSA9PT0gdW5k
ZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBPbmUgb3IgbW9yZSBzY2Fs
YXJzIGluIGFuIGFycmF5IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGFycmF5IHJlZmVyZW5j
ZS4KLSAgICAgICAgLy8gSG93ZXZlciwgdmVjdG9yIHR5cGVzIGFyZSBhbHNvIGNyZWF0ZWQgdmlh
IGFuIGFycmF5IG9mIHNjYWxhcnMuCi0gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGJ1ZmZl
cnMgb2YganVzdCBvbmUgdmVjdG9yIGFyZSB1c2FibGUgaW4gYSB0ZXN0IGZ1bmN0aW9uLgotICAg
ICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKQotICAgICAgICAgICAgdGhpcy5faXNCdWZm
ZXIgPSBpc1NjYWxhcih0eXBlKSA/IHRydWUgOiBpc0J1ZmZlcjsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB0aGlzLl9pc0J1ZmZlciA9IGZhbHNlOwotICAgICAgICAgICAgdmFsdWVzID0g
W3ZhbHVlc107Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKLSAgICAg
ICAgdGhpcy5fYnl0ZUxlbmd0aCA9IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKS5CWVRF
U19QRVJfRUxFTUVOVCAqIHZhbHVlcy5sZW5ndGg7Ci0KLSAgICAgICAgY29uc3QgW2J1ZmZlciwg
YXJyYXlCdWZmZXJdID0gaGFybmVzcy5kZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsKLSAgICAg
ICAgICAgIHNpemU6IHRoaXMuX2J5dGVMZW5ndGgsCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFECi0gICAgICAgIH0pOwot
Ci0gICAgICAgIGNvbnN0IHR5cGVkQXJyYXkgPSBuZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUo
dHlwZSkpKGFycmF5QnVmZmVyKTsKLSAgICAgICAgdHlwZWRBcnJheS5zZXQodmFsdWVzKTsKLSAg
ICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyOwot
ICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm5zIEFuIEFycmF5QnVmZmVyIGNvbnRhaW5p
bmcgdGhlIGNvbnRlbnRzIG9mIHRoaXMgRGF0YS4KLSAgICAgKi8KLSAgICBhc3luYyBnZXRBcnJh
eUJ1ZmZlcigpCi0gICAgewotICAgICAgICBpZiAoaGFybmVzcy5kZXZpY2UgPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAg
ICAgICAgbGV0IHJlc3VsdDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGF3
YWl0IHRoaXMuX2J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIHRoaXMuX2J1ZmZl
ci51bm1hcCgpOwotICAgICAgICB9IGNhdGNoIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRGF0YSBlcnJvcjogVW5hYmxlIHRvIGdldCBBcnJheUJ1ZmZlciEiKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGdldCB0eXBlKCkgeyByZXR1cm4g
dGhpcy5fdHlwZTsgfQotICAgIGdldCBpc0J1ZmZlcigpIHsgcmV0dXJuIHRoaXMuX2lzQnVmZmVy
OyB9Ci0gICAgZ2V0IGJ1ZmZlcigpIHsgcmV0dXJuIHRoaXMuX2J1ZmZlcjsgfQotICAgIGdldCBi
eXRlTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aDsgfQotfQotCi1jbGFzcyBIYXJu
ZXNzIHsKLSAgICBjb25zdHJ1Y3RvciAoKQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZGVkID0g
ZmFsc2U7Ci0gICAgfQotCi0gICAgYXN5bmMgcmVxdWVzdERldmljZSgpCi0gICAgewotICAgICAg
ICB0cnkgewotICAgICAgICAgICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUu
cmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAgICAgIHRoaXMuX2RldmljZSA9IGF3YWl0IGFkYXB0
ZXIucmVxdWVzdERldmljZSgpOwotICAgICAgICB9IGNhdGNoIHsKLSAgICAgICAgICAgIC8vIFdl
YkdQVSBpcyBub3Qgc3VwcG9ydGVkLgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBHUFVBZGFwdGVyUmVxdWVzdE9wdGlvbnMgYW5kIEdQVURldmljZURlc2NyaXB0b3IsCi0g
ICAgICAgICAgICAvLyBhbmQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRlc2NyaXB0b3IgdmFsaWRh
dGlvbiBlcnJvcnMgYW5kIG5vIFdlYkdQVSBzdXBwb3J0LgotICAgICAgICB9IGZpbmFsbHkgewot
ICAgICAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8qKgotICAgICAqIFJldHVybiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgV0hMU0wgZnVuY3Rpb24u
Ci0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgV0hM
U0wgZnVuY3Rpb24uCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IGZ1bmN0aW9ucyAtIEN1c3RvbSBX
SExTTCBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRo
ZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5jdGlvbiB3aGljaCBtdXN0IGJlIHByZXNlbnQgaW4gJ2Z1
bmN0aW9ucycuCi0gICAgICogQHBhcmFtIHtEYXRhIG9yIEFycmF5W0RhdGFdfSBhcmdzIC0gRGF0
YSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAgICAgKiBA
cmV0dXJucyB7VHlwZWRBcnJheX0gLSBBIHR5cGVkIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJldHVy
biB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KLSAgICAgKi8KLSAgICBhc3luYyBjYWxsVHlw
ZWRGdW5jdGlvbih0eXBlLCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi0gICAgeyAgIAotICAgICAg
ICBpZiAoIXRoaXMuX2xvYWRlZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRl
dmljZSBub3QgbG9hZGVkLiIpOwotCi0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVm
aW5lZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0K
LSAgICAgICAgY29uc3QgW2FyZ3NMYXlvdXRzLCBhcmdzUmVzb3VyY2VCaW5kaW5ncywgYXJnc0Rl
Y2xhcmF0aW9ucywgZnVuY3Rpb25DYWxsQXJnc10gPSB0aGlzLl9zZXRVcEFyZ3VtZW50cyhhcmdz
KTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0QnVmZmVyKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9jbGVhclJlc3VsdHMoKQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5fcmVz
dWx0QnVmZmVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAg
c2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAgICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5D
T1BZX0RTVAotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhcmdzTGF5b3V0
cy51bnNoaWZ0KHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmls
aXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2Ut
YnVmZmVyIgotICAgICAgICB9KTsKLSAgICAgICAgYXJnc1Jlc291cmNlQmluZGluZ3MudW5zaGlm
dCh7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAg
ICAgICAgICAgICAgICBidWZmZXI6IHRoaXMuX3Jlc3VsdEJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICBzaXplOiBUeXBlcy5NQVhfU0laRQotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAg
ICAgICBsZXQgZW50cnlQb2ludENvZGU7Ci0gICAgICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlm
dChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUodHlwZSl9W10gcmVzdWx0IDogcmVnaXN0ZXIo
dTApYCk7Ci0gICAgICAgIGxldCBjYWxsQ29kZSA9IGAke25hbWV9KCR7ZnVuY3Rpb25DYWxsQXJn
cy5qb2luKCIsICIpfSlgOwotICAgICAgICBjYWxsQ29kZSA9IGNvbnZlcnRUb1dITFNMT3V0cHV0
VHlwZShjYWxsQ29kZSwgdHlwZSk7Ci0gICAgICAgIGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJh
dGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgcmVzdWx0WzBdID0gJHtjYWxsQ29kZX07Ci19Ci1g
OwotICAgICAgICBjb25zdCBjb2RlID0gZnVuY3Rpb25zICsgZW50cnlQb2ludENvZGU7Ci0gICAg
ICAgIGF3YWl0IHRoaXMuX2NhbGxGdW5jdGlvbihjb2RlLCBhcmdzTGF5b3V0cywgYXJnc1Jlc291
cmNlQmluZGluZ3MpOwotICAgIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IGF3YWl0IHRoaXMuX3Jlc3VsdEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgfSBj
YXRjaCB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkhhcm5lc3MgZXJyb3I6IFVuYWJs
ZSB0byByZWFkIHJlc3VsdHMhIik7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXJyYXkgPSBu
ZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkpKHJlc3VsdCk7Ci0gICAgICAgIHRoaXMu
X3Jlc3VsdEJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0K
LSAgICAvKioKLSAgICAgKiBDYWxsIGEgV0hMU0wgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSB2YWx1
ZSBvZiBhcmd1bWVudChidWZmZXIpcy4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnVuY3Rpb25z
IC0gQ3VzdG9tIFdITFNMIGNvZGUgdG8gYmUgdGVzdGVkLgotICAgICAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIFdITFNMIGZ1bmN0aW9uIHdoaWNoIG11c3QgYmUgcHJl
c2VudCBpbiAnZnVuY3Rpb25zJy4KLSAgICAgKiBAcGFyYW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19
IGFyZ3MgLSBEYXRhIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGNhbGwgb2YgJ25hbWUn
LgotICAgICAqLwotICAgIGNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmlu
ZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBB
cmd1bWVudHMoYXJncyk7Ci0KLSAgICAgICAgbGV0IGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJh
dGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9p
bigiLCAiKX0pOwotfWA7Ci0gICAgICAgIGNvbnN0IGNvZGUgPSBmdW5jdGlvbnMgKyBlbnRyeVBv
aW50Q29kZTsKLSAgICAgICAgdGhpcy5fY2FsbEZ1bmN0aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBh
cmdzUmVzb3VyY2VCaW5kaW5ncyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQXNzZXJ0IHRo
YXQgbWFsZm9ybWVkIHNoYWRlciBjb2RlIGRvZXMgbm90IGNvbXBpbGUuCi0gICAgICogQHBhcmFt
IHtTdHJpbmd9IHNvdXJjZSAtIEN1c3RvbSBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKi8KLSAg
ICBhc3luYyBjaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhp
cy5fbG9hZGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBs
b2FkZWQuIik7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IoKTsKLSAgICAgICAgCi0g
ICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29t
cHV0ZSB2b2lkIF9jb21wdXRlX21haW4oKSB7IH1gOwotCi0gICAgICAgIGNvbnN0IGNvZGUgPSBz
b3VyY2UgKyBlbnRyeVBvaW50Q29kZTsKLQotICAgICAgICB0aGlzLl9kZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0
aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAgICAKLSAg
ICAgICAgdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgICAgICBj
b21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAgICAg
ICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVy
cm9yU2NvcGUoKTsKLSAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQ29tcGlsZXIgZXJyb3I6IHNoYWRlciBjb2RlIGRpZCBub3QgZmFpbCB0byBjb21waWxl
ISIpOwotICAgIH0KLQotICAgIGdldCBkZXZpY2UoKSB7IHJldHVybiB0aGlzLl9kZXZpY2U7IH0K
LQotICAgIF9jbGVhclJlc3VsdHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jbGVhckJ1
ZmZlcikgewotICAgICAgICAgICAgdGhpcy5fY2xlYXJCdWZmZXIgPSB0aGlzLl9kZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAgc2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAg
ICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSB0aGlzLl9kZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAgICAgY29tbWFuZEVuY29kZXIuY29weUJ1
ZmZlclRvQnVmZmVyKHRoaXMuX2NsZWFyQnVmZmVyLCAwLCB0aGlzLl9yZXN1bHRCdWZmZXIsIDAs
IFR5cGVzLk1BWF9TSVpFKTsKLSAgICAgICAgdGhpcy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIH0KLQotICAgIF9zZXRVcEFyZ3VtZW50
cyhhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXJncyBpbnN0YW5jZW9mIERhdGEpCi0gICAgICAgICAgICAgICAgYXJncyA9
IFthcmdzXTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFhcmdzKQotICAgICAgICAgICAgICAgIGFy
Z3MgPSBbXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEV4cGFuZCBiaW5kIGdyb3VwIHN0cnVj
dHVyZSB0byByZXByZXNlbnQgYW55IGFyZ3VtZW50cy4KLSAgICAgICAgbGV0IGFyZ3NEZWNsYXJh
dGlvbnMgPSBbXTsKLSAgICAgICAgbGV0IGZ1bmN0aW9uQ2FsbEFyZ3MgPSBbXTsKLSAgICAgICAg
bGV0IGFyZ3NMYXlvdXRzID0gW107Ci0gICAgICAgIGxldCBhcmdzUmVzb3VyY2VCaW5kaW5ncyA9
IFtdOwotCi0gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGFyZ3MubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbaSAtIDFdOwotICAgICAgICAgICAgYXJnc0Rl
Y2xhcmF0aW9ucy5wdXNoKGBkZXZpY2UgJHt3aGxzbEFyZ3VtZW50VHlwZShhcmcudHlwZSl9W10g
YXJnJHtpfSA6IHJlZ2lzdGVyKHUke2l9KWApOwotICAgICAgICAgICAgZnVuY3Rpb25DYWxsQXJn
cy5wdXNoKGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGBhcmcke2l9YCArIChhcmcuaXNCdWZmZXIg
PyAiIiA6ICJbMF0iKSwgYXJnLnR5cGUpKTsKLSAgICAgICAgICAgIGFyZ3NMYXlvdXRzLnB1c2go
ewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IGksCi0gICAgICAgICAgICAgICAgdmlzaWJpbGl0
eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgICAgICB0eXBlOiAic3RvcmFn
ZS1idWZmZXIiCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRp
bmdzLnB1c2goewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IGksCi0gICAgICAgICAgICAgICAg
cmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBhcmcuYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICBzaXplOiBhcmcuYnl0ZUxlbmd0aAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFthcmdzTGF5b3V0
cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFy
Z3NdOwotICAgIH0KLQotICAgIGFzeW5jIF9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMs
IGFyZ3NSZXNvdXJjZUJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgICAgICBi
aW5kaW5nczogYXJnc0xheW91dHMKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSB0aGlzLl9kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgICAgICBjb25zdCBiaW5kR3JvdXAg
PSB0aGlzLl9kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgICAgIGxheW91dDogYmlu
ZEdyb3VwTGF5b3V0LAotICAgICAgICAgICAgYmluZGluZ3M6IGFyZ3NSZXNvdXJjZUJpbmRpbmdz
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2RldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotCi0gICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAgICAKLSAgICAgICAgY29uc3QgcGlwZWxp
bmUgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgICAgIGxh
eW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAg
ICAgICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAgICAgICAgICAgICAgZW50cnlQb2ludDog
Il9jb21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRl
UGFzcygpOwotICAgICAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgICAgICBwYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgICAgICAKLSAgICAgICAgdGhpcy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdGhp
cy5fZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpOwotICAgIH0KLX0KLQotLyogSGFybmVz
cyBTZXR1cCAqLwotCi1jb25zdCBoYXJuZXNzID0gbmV3IEhhcm5lc3MoKTsKLWhhcm5lc3MucmVx
dWVzdERldmljZSgpOwotCi0vKiBHbG9iYWwgSGVscGVyIEZ1bmN0aW9ucyAqLwotCi0vKioKLSAq
IFRoZSBtYWtlX19fIGZ1bmN0aW9ucyBhcmUgd3JhcHBlcnMgYXJvdW5kIHRoZSBEYXRhIGNvbnN0
cnVjdG9yLgotICogVmFsdWVzIHBhc3NlZCBpbiBhcyBhbiBhcnJheSB3aWxsIGJlIHBhc3NlZCBp
biB2aWEgYSBkZXZpY2UtYWRkcmVzc2VkIHBvaW50ZXIgdHlwZSBpbiB0aGUgc2hhZGVyLgotICog
QHBhcmFtIHtCb29sZWFuLCBOdW1iZXIsIG9yIEFycmF5fSB2YWx1ZXMgLSBUaGUgZGF0YSB0byBi
ZSBzdG9yZWQgb24gdGhlIEdQVS4KLSAqIEByZXR1cm5zIEEgbmV3IERhdGEgb2JqZWN0IHdpdGgg
c3RvcmFnZSBhbGxvY2F0ZWQgdG8gc3RvcmUgdmFsdWVzLgotICovCi1mdW5jdGlvbiBtYWtlQm9v
bCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkJPT0wsIHZh
bHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VJbnQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcg
RGF0YShoYXJuZXNzLCBUeXBlcy5JTlQsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VVY2hh
cih2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVDSEFSLCB2
YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlVWludCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5l
dyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVJTlQsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VG
bG9hdCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FU
LCB2YWx1ZXMpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2
YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBvZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVt
YmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0IGJlIGRpdmlzaWJsZSBieSA0LgotICogQSBzaW5nbGUg
NC1lbGVtZW50IGFycmF5IG9mIGZsb2F0cyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgZmxv
YXQ0IGFyZ3VtZW50IGluIHRoZSBzaGFkZXIuCi0gKi8KLWZ1bmN0aW9uIG1ha2VGbG9hdDQodmFs
dWVzKQotewotICAgIGNvbnN0IHJlc3VsdHMgPSBwcm9jZXNzQXJyYXlzKHZhbHVlcywgNCk7Ci0g
ICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FUNCwgcmVzdWx0cy52YWx1ZXMs
IHJlc3VsdHMuaXNCdWZmZXIpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlb
QXJyYXldfSB2YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBvZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUg
dG90YWwgbnVtYmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0IGJlIGRpdmlzaWJsZSBieSAxNi4KLSAq
IEEgc2luZ2xlIDE2LWVsZW1lbnQgYXJyYXkgb2YgZmxvYXRzIHdpbGwgYmUgdHJlYXRlZCBhcyBh
IHNpbmdsZSBmbG9hdDR4NCBhcmd1bWVudCBpbiB0aGUgc2hhZGVyLgotICogVGhpcyBzaG91bGQg
Zm9sbG93IHRoZSBnbE1hdHJpeC9PcGVuR0wgbWV0aG9kIG9mIHN0b3JpbmcgNHg0IG1hdHJpY2Vz
LAotICogd2hlcmUgdGhlIHgsIHksIHogdHJhbnNsYXRpb24gY29tcG9uZW50cyBhcmUgdGhlIDEz
dGgsIDE0dGgsIGFuZCAxNXRoIGVsZW1lbnRzIHJlc3BlY3RpdmVseS4KLSAqLwotZnVuY3Rpb24g
bWFrZUZsb2F0NHg0KHZhbHVlcykKLXsKLSAgICBjb25zdCByZXN1bHRzID0gcHJvY2Vzc0FycmF5
cyh2YWx1ZXMsIDE2KTsKLSAgICByZXR1cm4gbmV3IERhdGEoaGFybmVzcywgVHlwZXMuRkxPQVQ0
WDQsIHJlc3VsdHMudmFsdWVzLCByZXN1bHRzLmlzQnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gcHJv
Y2Vzc0FycmF5cyh2YWx1ZXMsIG1pbmltdW1MZW5ndGgpCi17Ci0gICAgY29uc3Qgb3JpZ2luYWxM
ZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwotICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBmbG9hdDQg
aXMgdGlnaHRseSBwYWNrZWQuCi0gICAgLy8gV2hlbiBpbXBsZW1lbnRpbmcgb3RoZXIgdmVjdG9y
IHR5cGVzLCBhZGQgcGFkZGluZyBpZiBuZWVkZWQuCi0gICAgdmFsdWVzID0gdmFsdWVzLmZsYXQo
KTsKLSAgICBpZiAodmFsdWVzLmxlbmd0aCAlIG1pbmltdW1MZW5ndGggIT0gMCkKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG51bWJlciBvZiBlbGVtZW50cyBpbiBub24tc2NhbGFy
IHR5cGUhIik7Ci0gICAgCi0gICAgcmV0dXJuIHsgdmFsdWVzOiB2YWx1ZXMsIGlzQnVmZmVyOiBv
cmlnaW5hbExlbmd0aCA9PT0gMSB8fCB2YWx1ZXMubGVuZ3RoID4gbWluaW11bUxlbmd0aCB9Owot
fQotCi0vKioKLSAqIEBwYXJhbSB7U3RyaW5nfSBmdW5jdGlvbnMgLSBTaGFkZXIgc291cmNlIGNv
ZGUgdGhhdCBtdXN0IGNvbnRhaW4gYSBkZWZpbml0aW9uIGZvciAnbmFtZScuCi0gKiBAcGFyYW0g
e1N0cmluZ30gbmFtZSAtIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbSAnZnVuY3Rpb25z
Jy4KLSAqIEBwYXJhbSB7RGF0YSBvciBBcnJheVtEYXRhXX0gYXJncyAtIFRoZSBhcmd1bWVudHMg
dG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAqIEByZXR1cm5zIEEgUHJvbWlz
ZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBjYWxsIHRvICduYW1lJyB3
aXRoICdhcmdzJy4KLSAqLwotYXN5bmMgZnVuY3Rpb24gY2FsbEJvb2xGdW5jdGlvbihmdW5jdGlv
bnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuICEhKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVk
RnVuY3Rpb24oVHlwZXMuQk9PTCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFz
eW5jIGZ1bmN0aW9uIGNhbGxJbnRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0g
ICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLklOVCwgZnVu
Y3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxVY2hhckZ1
bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5l
c3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuVUNIQVIsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykp
WzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsVWludEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFt
ZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24o
VHlwZXMuVUlOVCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0
aW9uIGNhbGxGbG9hdEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1
cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuRkxPQVQsIGZ1bmN0aW9u
cywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0RnVuY3Rp
b24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5j
YWxsVHlwZWRGdW5jdGlvbihUeXBlcy5GTE9BVDQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpLnN1
YmFycmF5KDAsIDQpOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0eDRGdW5jdGlvbihm
dW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxU
eXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FUNFg0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJh
cnJheSgwLCAxNik7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNoZWNrRmFpbChzb3VyY2UpIAotewot
ICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkpOwotfQot
Ci0vKioKLSAqIERvZXMgbm90IHJldHVybiBhIFByb21pc2UuIFRvIG9ic2VydmUgdGhlIHJlc3Vs
dHMgb2YgYSBjYWxsLCAKLSAqIGNhbGwgJ2dldEFycmF5QnVmZmVyJyBvbiB0aGUgRGF0YSBvYmpl
Y3QgcmV0YWluaW5nIHlvdXIgb3V0cHV0IGJ1ZmZlci4KLSAqLwotZnVuY3Rpb24gY2FsbFZvaWRG
dW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgaGFybmVzcy5jYWxsVm9pZEZ1
bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncyk7Ci19Ci0KLWNvbnN0IHdlYkdQVVByb21pc2VU
ZXN0ID0gKHRlc3RGdW5jLCBtc2cpID0+IHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
eyAKLSAgICAgICAgcmV0dXJuIHRlc3RGdW5jKCkuY2F0Y2goZSA9PiB7Ci0gICAgICAgIGlmICgh
KGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgIHRocm93
IGU7Ci0gICAgICAgIH0pOwotICAgIH0sIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKG9i
aikgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewot
ICAgICAgICBhd2FpdCBoYXJuZXNzLnJlcXVlc3REZXZpY2UoKTsKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBvYmopIHsKLSAgICAgICAgICAgICAgICBpZiAo
IW5hbWUuc3RhcnRzV2l0aCgiXyIpKSAKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2ViR1BV
UHJvbWlzZVRlc3Qob2JqW25hbWVdLCBuYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0MjA2ZmEzZjQ1NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JJbmRleEFzc2lnbgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDA0NzQ0NDNkMGMyMWIwN2I1N2E4ODJjMGM5YTNmMDNlYjQxODk4OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5MZW5ndGguPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3Rv
ckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeDsK
LSAgICAgICAgICAgIHhbMF0gPSBhOwotICAgICAgICAgICAgeFsxXSA9IGI7Ci0gICAgICAgICAg
ICByZXR1cm4gbGVuZ3RoKHgpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGNvbnN0IGRhdGEg
PSBbCi0gICAgICAgIFtOYU4sIDEwXSwKLSAgICAgICAgWzEwLCBOYU5dLAotICAgICAgICBbMjAs
IDEwXSwKLSAgICAgICAgWzAsIDBdLAotICAgIF07Ci0KLSAgICBmb3IgKGNvbnN0IFt4LCB5XSBv
ZiBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW21ha2VGbG9hdCh4KSwgbWFrZUZsb2F0KHkpXSk7Ci0gICAgICAg
IGlmIChpc05hTih4KSB8fCBpc05hTih5KSkgewotICAgICAgICAgICAgaWYgKCFpc05hTihyZXN1
bHQpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUmVzdWx0IHNob3VsZCBiZSBO
YU4uIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
cmVzdWx0LCBNYXRoLnNxcnQoeCp4ICsgeSp5KSwgZXBzaWxvbik7Ci0gICAgfQotfTsKLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY1MDJhZmNkY2FiMGFhYzE0MGMwMjZkYjExYTk4NGFjMWE4ODEyYTIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2xleGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQot
UEFTUyBsZXhpbmdLZXl3b3JkTGlrZUlkZW50aWZpZXJzCi1QQVNTIGtleXdvcmRzQXNJZGVudGlm
aWVycwotUEFTUyBjb21tZW50cwotUEFTUyBvcGVyYXRvck5hbWVzCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sZXhpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwM2Y5MDM3
YmI5OTVmMjllYzg0MWNiNGJkOTQxOWVjM2IzMWY0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotY29uc3Qga2V5d29yZHMgPSBbCi0gICAg
InN0cnVjdCIKLSAgICAsICJ0eXBlZGVmIgotICAgICwgImVudW0iCi0gICAgLCAib3BlcmF0b3Ii
Ci0gICAgLCAiaWYiCi0gICAgLCAiZWxzZSIKLSAgICAsICJjb250aW51ZSIKLSAgICAsICJicmVh
ayIKLSAgICAsICJzd2l0Y2giCi0gICAgLCAiY2FzZSIKLSAgICAsICJkZWZhdWx0IgotICAgICwg
ImZhbGx0aHJvdWdoIgotICAgICwgImZvciIKLSAgICAsICJ3aGlsZSIKLSAgICAsICJkbyIKLSAg
ICAsICJyZXR1cm4iCi0gICAgLCAibnVsbCIKLSAgICAsICJ0cnVlIgotICAgICwgImZhbHNlIgot
ICAgICwgImNvbnN0YW50IgotICAgICwgImRldmljZSIKLSAgICAsICJ0aHJlYWRncm91cCIKLSAg
ICAsICJ0aHJlYWQiCi0gICAgLCAic3BhY2UiCi0gICAgLCAidmVydGV4IgotICAgICwgImZyYWdt
ZW50IgotICAgICwgImNvbXB1dGUiCi0gICAgLCAibnVtdGhyZWFkcyIKLSAgICAsICJTVl9JbnN0
YW5jZUlEIgotICAgICwgIlNWX1ZlcnRleElEIgotICAgICwgIlBTSVpFIgotICAgICwgIlNWX1Bv
c2l0aW9uIgotICAgICwgIlNWX0lzRnJvbnRGYWNlIgotICAgICwgIlNWX1NhbXBsZUluZGV4Igot
ICAgICwgIlNWX0lubmVyQ292ZXJhZ2UiCi0gICAgLCAiU1ZfVGFyZ2V0IgotICAgICwgIlNWX0Rl
cHRoIgotICAgICwgIlNWX0NvdmVyYWdlIgotICAgICwgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiCi0g
ICAgLCAiU1ZfR3JvdXBJRCIKLSAgICAsICJTVl9Hcm91cEluZGV4IgotICAgICwgIlNWX0dyb3Vw
VGhyZWFkSUQiCi0gICAgLCAiYXR0cmlidXRlIgotICAgICwgInJlZ2lzdGVyIgotICAgICwgInNw
ZWNpYWxpemVkIgotICAgICwgIm5hdGl2ZSIKLSAgICAsICJyZXN0cmljdGVkIgotICAgICwgIl8i
Ci0gICAgLCAiYXV0byIKLSAgICAsICJwcm90b2NvbCIKLSAgICAsICJjb25zdCIKLSAgICAsICJz
dGF0aWMiCi0gICAgLCAibm9pbnRlcnBvbGF0aW9uIgotICAgICwgIm5vcGVyc3BlY3RpdmUiCi0g
ICAgLCAidW5pZm9ybSIKLSAgICAsICJjZW50cm9pZCIKLSAgICAsICJzYW1wbGUiCi1dOwotCi1j
b25zdCBzdWZmaXhlcyA9IFsiZm9vIiwgIjEzMzciLCAiX2ZvbyJdOwotCi13aGxzbFRlc3RzLmxl
eGluZ0tleXdvcmRMaWtlSWRlbnRpZmllcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgZm9yIChjb25z
dCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7Ci0gICAgICAgIGZvciAoY29uc3Qgc3VmZml4IG9mIHN1
ZmZpeGVzKSB7Ci0gICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBrZXl3b3JkICsgc3Vm
Zml4OwotICAgICAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgICAgICAgICBpbnQg
Zm9vKCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgJHt2YXJpYWJsZU5hbWV9ID0gNDI7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiAke3ZhcmlhYmxlTmFtZX07Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYDsKLQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIDQyKTsKLSAgICAgICAgfQotICAg
IH0KLQotfTsKLQotd2hsc2xUZXN0cy5rZXl3b3Jkc0FzSWRlbnRpZmllcnMgPSBhc3luYyAoKSA9
PiB7Ci0KLSAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHMpIHsKLSAgICAgICAgY29u
c3QgdmFyaWFibGVOYW1lID0ga2V5d29yZDsKLSAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIGludCAke3ZhcmlhYmxlTmFt
ZX0gPSA0MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYDsKLSAgICAgICAgYXdhaXQgY2hlY2tG
YWlsKHByb2dyYW0pOwotICAgIH0KLX07Ci0KLXdobHNsVGVzdHMuY29tbWVudHMgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgLyoKLSAgICBgKTsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICAqLwotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIHJldHVybiA0LyoqLzI7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLQotfTsKLQotd2hsc2xUZXN0cy5vcGVyYXRvck5hbWVzID0gYXN5
bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiQoRm9vKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiMo
Rm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IG9wZXJhdG9yLkAoRm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAg
ICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBG
b28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiolKEZvbykgewotICAgICAg
ICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBpbnQgb3BlcmF0b3ImJihpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAg
IHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgYm9vbCBvcGVyYXRvcnx8KGludCB4LCBpbnQgeSkgewotICAgICAgICAgICAgcmV0
dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xpdGVyYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFs
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMjU2YzVjYjY3
MzdjNWU3OWIzZDRjMGZmYjg2MTY5MTBhYWU0OWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxpdGVyYWxz
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBhNjQ2MWIyYjNhYTc2MjY3MDRkZThlZTdiMzc4ZWMwYzA2YTljZWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13
aGxzbFRlc3RzLmxpdGVyYWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBpbnQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtMTA7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMTA7
Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIC4xOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gMS45OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLS4xOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGcoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTEuOTsKLSAgICAgICAgfQotICAg
ICAgICBpbnQgaCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAweGI0ZEIzM0Y7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW50IGkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
LTB4YjRkQjMzRjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC0xMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwgW10pLCAxMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAw
KTsKLQotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICAiZCIsIFtdKSwgMC4xLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDEuOSwgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJmIiwgW10pLCAtMC4xLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImciLCBbXSksIC0xLjksIGVwc2ls
b24pOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ICJoIiwgW10pLCAweGI0ZEIzM0YpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICAiaSIsIFtdKSwgLTB4YjRkQjMzRik7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5YmEzMzE3ZWU3MDRjZmYyZmI2MDQyZjMyNGZmMjIxOWU1MjFiODU3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvZ2ljYWxOZWdhdGlvbgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjQwMGIwMTBhZGFiMGNmNmEwOTg3OTJmMmZjNzZmZjg2Mjk5ODliYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5MdmFsdWVzLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmxvZ2ljYWxOZWdhdGlvbiA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28oYm9vbCB4KSB7IHJl
dHVybiAheDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNl
KV0pLCB0cnVlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWU3ODQ5MjJlMmVlY2M2Yzcw
OWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGYyNjQzY2ExNTU5M2I3MzA2NzVkY2VkZDI3NzNjZDNiMTcyZmM2ZjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0K
LQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1
bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDEwOyAo
aSA9IGkgKyAxLCBzaGFkZSA9IHNoYWRlICsgMS4wKSkgewotICAgICAgICBpZiAoYikgewotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsK
LSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hh
ZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBm
cmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtz
aGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25z
dCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0
MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9
IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAo
KTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVy
QmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRl
eEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNh
OTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjNWUyMTM5ODEwOWViMmY3ZjcyNjZlNTUxZGY4NDYzYjZmNzNiMWY1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBv
c2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19
Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVz
dWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsg
aSA9IGkgKyAxKSB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBzaGFkZSA9IHNoYWRlICsgMS4wOwotICAgIH0KLQotICAgIHJlc3Vs
dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwg
b2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBm
b3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0
cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0
dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwg
ZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29s
b3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEs
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0g
PSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihy
ZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVm
ZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsK
LSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9
IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBC
aW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5n
czogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9y
ID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXco
KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9Owot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVW
aWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9y
ZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQg
PSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVu
dHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNr
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sb29wcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3Bz
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2
YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tn
cm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1ODRkMWQ1MTg4M2I0Y2E2
MmY2Yzg5NzQ3ODMxZmYwMTVhOGQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBkb1doaWxl
Ci1QQVNTIHNpbXBsZVdoaWxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sb29wcy1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMt
c3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM0OTE5OGY4
YWFhYzNkY2Y0YzIzOWQ4NWQyYzBmMjk2MDI3NTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVj
LXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNv
bnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuZG9XaGlsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28xKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
bnQgeSA9IDc7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdoaWxlICh4IDwgMTApOwotICAgICAg
ICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoaW50IHgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgICAgICB5ID0gODsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hp
bGUgKHkgPT0gNyk7Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgICAgICBp
bnQgZm9vMyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHN1bSA9IDA7Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gMTEpIHsKLSAgICAgICAgICAg
ICAgICAgICAgeCA9IDE1OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3VtID0gc3VtICsgeDsKLSAgICAgICAgICAgICAg
ICB4ID0geCArIDE7Ci0gICAgICAgICAgICB9IHdoaWxlICh4IDwgMTMpOwotICAgICAgICAgICAg
cmV0dXJuIHN1bTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEiLCBbbWFrZUludCgxKV0pLCA4KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMSIsIFttYWtl
SW50KDExKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vMiIsIFttYWtlSW50KDEpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28zIiwgW21ha2VJbnQoOSldKSwgMTkpOwot
fQotCi13aGxzbFRlc3RzLnNpbXBsZVdoaWxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAg
d2hpbGUgKHggPCAxMykKLSAgICAgICAgICAgICAgICB4ID0geCAqIDI7Ci0gICAgICAgICAgICBy
ZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpXSksIDE2KTsKLX0KLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xvb3BzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzFlNWI4MWY4YTg0
ZDQ5MTE2NmQ3NzAwNDEyMzNiNjNjZWM1YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3Qg
VmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0
ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIHNoYWRlID0gc2hhZGUgKyAwLjE7Ci0gICAgfQot
Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hh
ZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmli
dXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3Ry
aWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBb
aW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3ti
aW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs0XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjE7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDAuMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIw
XSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNzBmZmQ0ZGU2MDdiMmEwMDNlZmM3
NDdkMjhmZDQ4YjQxYzVhOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvdHNP
ZkxvY2FsVmFyaWFibGVzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b3RzLW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xv
dHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU1NzU2ZjM5MjcwNzQ0NDFhYzRiYzNhN2NkODRlMWJkNzk2ODgxYmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkxvdHMgb2YgbG9jYWwgdmFy
aWFibGVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmxvdHNPZkxv
Y2FsVmFyaWFibGVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgc3JjID0gImludCBzdW0oKSB7
XG4iOwotICAgIHNyYyArPSAiICAgIGludCBpID0gMDtcbiI7Ci0gICAgbGV0IHRhcmdldCA9IDA7
Ci0gICAgY29uc3QgbnVtVmFycyA9IDUwOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVmFy
czsgaSsrKSB7Ci0gICAgICAgIHNyYyArPSBgICAgaSA9ICR7aX07XG5gOwotICAgICAgICBzcmMg
Kz0gYCAgIGludCBWJHtpfSA9IChpICsgMykgKiAoaSArIDMpO1xuYDsKLSAgICAgICAgdGFyZ2V0
ICs9IChpICsgMykgKiAoaSArIDMpOwotICAgIH0KLSAgICBzcmMgKz0gIiAgICBpbnQgcmVzdWx0
ID0gMDtcbiI7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1WYXJzOyBpKyspIHsKLSAgICAg
ICAgc3JjICs9IGAgICAgcmVzdWx0ICs9IFYke2l9O1xuYDsKLSAgICB9Ci0gICAgc3JjICs9ICIg
ICAgcmV0dXJuIHJlc3VsdDtcbiI7Ci0gICAgc3JjICs9ICJ9IjsKLSAgICBsZXQgcHJvZ3JhbSA9
IHNyYzsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
c3VtIiwgW10pLCB0YXJnZXQpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzYxY2VjMmI5MTZiNmVkZjg3
MTRkMmUwMGE5MmU3ZThhZmEzNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbFZhbHVlcwotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDBlOTgwNGQwNjM0YmY2MTBkYjA0ZDQ4OGM3ZTdhYjFhMzViY2I2Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bHZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+THZhbHVlcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5sVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9
IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJih4KyspOwotICAgICAgICAgICAgcmV0
dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAg
ICAgICB0aHJlYWQgaW50KiB5ID0gJigrK3gpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAg
ICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQg
aW50KiB5ID0gJih4ID0gMyk7Ci0gICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAg
ICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAm
MzsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1
cm4geCArIDE7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAmYmFyKDMpOwot
ICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJig3LCB4KTsKLSAgICAgICAgICAg
IHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIGVudW0gRGF5cyB7Ci0gICAgICAgICAgICBNb25kYXksCi0gICAgICAgICAgICBUdWVz
ZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAmKERheXMuTW9uZGF5KTsK
LSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBj
aGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhy
ZWFkIGJvb2wqIHkgPSAmKHRydWUgJiYgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICp5Owot
ICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgYm9vbCogeSA9ICYoIXRydWUpOwot
ICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eCA9IDM7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJng7Ci0gICAgICAgICAgICByZXR1
cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMTEyYTNjZDZjNjY1M2Y4YWI3ODU1
YzlkYTFiMmVlYTFiY2NlYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVz
dHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgbWFr
ZUFycmF5UmVmRnJvbUFycmF5UmVmCi1QQVNTIG1ha2VBcnJheVJlZkZyb21Mb2NhbAotUEFTUyBt
YWtlQXJyYXlSZWZGcm9tUG9pbnRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjNkY2I2YmZlNTUwZDU3NzE3NzkzNTNjNWQzYTA5NjgwNjRmMTA2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0
IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMubWFrZUFycmF5UmVmRnJvbUFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGJhcih0aHJlYWQgaW50
W10gcmVmKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYmF6KHRocmVhZCBpbnRbXSBwdHIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJhcihAcHRyKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGludCB4ID0gNDg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJheihAeCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21Mb2NhbCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIodGhy
ZWFkIGludFtdIHJlZikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZlswXTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHgg
PSA0ODsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQHgpOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCA0OCk7Ci19Ci0KLXdobHNsVGVzdHMubWFrZUFycmF5UmVmRnJvbVBvaW50ZXIgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYmFyKHRocmVhZCBpbnRb
XSByZWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IGJheih0aHJlYWQgaW50KiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBiYXIoQHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludCB4ID0gNDg7Ci0gICAgICAgICAgICByZXR1cm4gYmF6KCZ4KTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDgpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYWtlLWFycmF5LXJlZmVyZW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
a2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNk
OTg3Mzc2MTQ4N2JhNGFhZGYwYjVlZDg2NGM3OTIxOGQ3NWQyMGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
a2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25z
dCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIHRlc3QxKCkgewotICAgIGludCB2YWx1ZSA9IDQyOwot
ICAgIHRocmVhZCBpbnRbXSBhcnJheSA9IEB2YWx1ZTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9
IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMTIwMjEzXSAhPSA0MikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXJyYXlbMF0gPSAxMzM3OwotICAgIGlmICh2YWx1ZSAhPSAx
MzM3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCB0ZXN0MigpIHsKLSAgICBpbnQgdmFsdWUgPSA0MjsKLSAgICB0aHJlYWQgaW50KiBwdHIgPSAm
dmFsdWU7Ci0gICAgaWYgKCpwdHIgIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHRocmVhZCBpbnRbXSBhcnJheSA9IEBwdHI7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzBdICE9IDQyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzEyMzc0MjE3XSAhPSA0MikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgICpwdHIgPSA2NjY7Ci0gICAgaWYgKCpwdHIgIT0gNjY2KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlICE9IDY2NikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChhcnJheVswXSAhPSA2NjYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGFycmF5WzBdID0gNDI0MjsKLSAgICBpZiAoKnB0ciAhPSA0MjQyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlICE9IDQyNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYXJyYXlbMF0gIT0gNDI0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgdGVzdDMoKSB7Ci0gICAgaW50WzQyXSB4OwotICAgIHRocmVhZCBp
bnRbNDJdKiBhcnJheVB0ciA9ICZ4OwotICAgIGlmIChhcnJheVB0ci0+bGVuZ3RoICE9IDQyKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB4WzQxXSA9IDY2NjsKLSAgICBpZiAoKCphcnJh
eVB0cilbNDFdICE9IDY2NikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFycmF5
UHRyKVswXSAhPSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0aHJlYWQgaW50W10g
YXJyYXkgPSBAeDsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhcnJheVswXSA9IDEzMzc7Ci0gICAgaWYgKHhbMF0gIT0gMTMzNykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFycmF5UHRyKVswXSAhPSAxMzM3KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB0ZXN0NCgp
IHsKLSAgICBpbnQgeCA9IDQyOwotICAgIHRocmVhZCBpbnQqIHB0ciA9ICZ4OwotCi0gICAgdGhy
ZWFkIGludFtdIGFycmF5ID0gQHB0cjsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhcnJheVswXSAhPSA0MikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGFycmF5WzEwMDAwMF0gIT0gNDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpZiAo
IXRlc3QxKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdGVzdDIoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCF0ZXN0MygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IXRlc3Q0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29t
cHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
Q307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXko
YnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAg
YnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
RFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1
bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21t
YW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1
ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3Vs
dHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1h
cCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3MmQzZGQzMGY2ODRlOWQ1N2VjNTdiYWQ5ZjUyNGVjZTBm
M2FlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBidWlsdGluTWF0cmljZXMKLVBBU1Mg
bWF0cml4TXVsdGlwbGljYXRpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4
OWM5ZGYzMWZiNDJlOTcyODIzMmM2OWU5MTMwNmMxNDU0ZDhjN2EuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpY2VzLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFy
bmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5idWlsdGluTWF0
cmljZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBh
WzBdWzBdID0gMTsKLSAgICAgICAgICAgIGFbMF1bMV0gPSAyOwotICAgICAgICAgICAgYVsxXVsw
XSA9IDM7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNDsKLSAgICAgICAgICAgIHJldHVybiBhWzBd
WzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MyBhOwotICAgICAgICAgICAgYVswXVswXSA9IDE7Ci0gICAgICAgICAgICBh
WzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMF1bMl0gPSAzOwotICAgICAgICAgICAgYVsxXVsw
XSA9IDQ7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNTsKLSAgICAgICAgICAgIGFbMV1bMl0gPSA2
OwotICAgICAgICAgICAgcmV0dXJuIGFbMV1bMl07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQg
Zm9vMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYVswXVswXTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVswXVswXSA9IDE7Ci0gICAg
ICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMV1bMF0gPSAzOwotICAgICAgICAg
ICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAgYlsw
XVswXSA9IDU7Ci0gICAgICAgICAgICBiWzBdWzFdID0gNjsKLSAgICAgICAgICAgIGJbMV1bMF0g
PSA3OwotICAgICAgICAgICAgYlsxXVsxXSA9IDg7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9
IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCAy
OyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgYVtpXVtqXSArPSA0OwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBiKTsKLSAg
ICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBhOwotICAgICAgICAgICAgYVswXSA9IGZsb2F0MigxLCAyKTsKLSAgICAgICAgICAgIGFb
MV0gPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAg
YlswXVswXSA9IDE7Ci0gICAgICAgICAgICBiWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGJbMV1b
MF0gPSAzOwotICAgICAgICAgICAgYlsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
KGEgPT0gYik7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb282KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyeDIgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAg
ICAgYVswXVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzFdWzBdID0gMzsKLSAgICAgICAgICAgIGFb
MV1bMV0gPSA0OwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1bMF0g
PSA1OwotICAgICAgICAgICAgYlswXVsxXSA9IDEwOwotICAgICAgICAgICAgYlsxXVswXSA9IDE4
OwotICAgICAgICAgICAgYlsxXVsxXSA9IDI0OwotICAgICAgICAgICAgYVswXSAqPSA1OwotICAg
ICAgICAgICAgYVsxXSAqPSA2OwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGIpOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzcoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MyBhID0gZmxvYXQyeDMoZmxvYXQzKDMsIDQsIDUpLCBmbG9hdDMoNiwgNywgOCkpOwotICAg
ICAgICAgICAgcmV0dXJuIGFbMF1bMl07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIs
IFtdKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vMyIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vNCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNiIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vNyIsIFtdKSwgNSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE11bHRpcGxpY2F0
aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdDJ4
NCBtdWx0aXBseShmbG9hdDJ4MyB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgICAgICAgICAvLyBDb3Bp
ZWQgYW5kIHBhc3RlZCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0gICAgICAgICAgICBmbG9h
dDJ4NCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgICAgICAgICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBd
WzBdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMl0gKiB5WzJdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICAgICAg
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzBdICogeVswXVsxXTsKLSAgICAgICAgICAgIHJlc3Vs
dFswXVsxXSArPSB4WzBdWzFdICogeVsxXVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSAr
PSB4WzBdWzJdICogeVsyXVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAg
ICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVswXSAqIHlbMF1bMl07Ci0gICAgICAgICAgICBy
ZXN1bHRbMF1bMl0gKz0geFswXVsxXSAqIHlbMV1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMl1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1bM10gPSAwOwot
ICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMF0gKiB5WzBdWzNdOwotICAgICAgICAg
ICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMV0gKiB5WzFdWzNdOwotICAgICAgICAgICAgcmVzdWx0
WzBdWzNdICs9IHhbMF1bMl0gKiB5WzJdWzNdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVswXVswXTsKLSAgICAg
ICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzFdICogeVsxXVswXTsKLSAgICAgICAgICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzJdICogeVsyXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgICAgICAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgICAgICAgICByZXN1bHRb
MV1bMl0gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMF0gKiB5WzBdWzJd
OwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMV0gKiB5WzFdWzJdOwotICAgICAg
ICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzJdOwotICAgICAgICAgICAgcmVz
dWx0WzFdWzNdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzBdICogeVsw
XVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzFdICogeVsxXVszXTsKLSAg
ICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzJdICogeVsyXVszXTsKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQyeDMgbWF0cml4MSgpIHsK
LSAgICAgICAgICAgIGZsb2F0MngzIHg7Ci0gICAgICAgICAgICB4WzBdWzBdID0gMjsKLSAgICAg
ICAgICAgIHhbMF1bMV0gPSAzOwotICAgICAgICAgICAgeFswXVsyXSA9IDU7Ci0gICAgICAgICAg
ICB4WzFdWzBdID0gNzsKLSAgICAgICAgICAgIHhbMV1bMV0gPSAxMTsKLSAgICAgICAgICAgIHhb
MV1bMl0gPSAxMzsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgICAgIGZs
b2F0M3g0IG1hdHJpeDIoKSB7Ci0gICAgICAgICAgICBmbG9hdDN4NCB5OwotICAgICAgICAgICAg
eVswXVswXSA9IDE3OwotICAgICAgICAgICAgeVswXVsxXSA9IDE5OwotICAgICAgICAgICAgeVsw
XVsyXSA9IDIzOwotICAgICAgICAgICAgeVswXVszXSA9IDI5OwotICAgICAgICAgICAgeVsxXVsw
XSA9IDMxOwotICAgICAgICAgICAgeVsxXVsxXSA9IDM3OwotICAgICAgICAgICAgeVsxXVsyXSA9
IDQxOwotICAgICAgICAgICAgeVsxXVszXSA9IDQzOwotICAgICAgICAgICAgeVsyXVswXSA9IDQ3
OwotICAgICAgICAgICAgeVsyXVsxXSA9IDUzOwotICAgICAgICAgICAgeVsyXVsyXSA9IDU5Owot
ICAgICAgICAgICAgeVsyXVszXSA9IDYxOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZm9vMDAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHko
bWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzAxKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4Migp
KVswXVsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28wMigpIHsKLSAgICAgICAgICAg
IHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMF1bMl07Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgZm9vMDMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0
cml4MSgpLCBtYXRyaXgyKCkpWzBdWzNdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEw
KCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsx
XVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMSgpIHsKLSAgICAgICAgICAgIHJl
dHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bMV07Ci0gICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMTIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4
MSgpLCBtYXRyaXgyKCkpWzFdWzJdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEzKCkg
ewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVsz
XTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vMDAiLCBbXSksIDE3ICogMiArIDMxICogMyArIDQ3ICogNSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MDEiLCBbXSksIDE5ICogMiArIDM3ICogMyArIDUzICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDIiLCBbXSksIDIzICogMiArIDQx
ICogMyArIDU5ICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMDMiLCBbXSksIDI5ICogMiArIDQzICogMyArIDYxICogNSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTAiLCBb
XSksIDE3ICogNyArIDMxICogMTEgKyA0NyAqIDEzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMSIsIFtdKSwgMTkgKiA3ICsgMzcgKiAx
MSArIDUzICogMTMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbzEyIiwgW10pLCAyMyAqIDcgKyA0MSAqIDExICsgNTkgKiAxMyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMiLCBb
XSksIDI5ICogNyArIDQzICogMTEgKyA2MSAqIDEzKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4
LTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmEzYjE2NTAyYWEwZjM0NzEzNTJiZDY3Zjc2NzlmMmQ2ZmRiMWRhYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bWF0cml4LTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLWJvb2wgYWxsRXF1YWwoZmxvYXQ0eDQgbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSArIDEpIHsKLSAgICAgICAgZm9yICh1aW50
IGogPSAwOyBqIDwgNDsgaiA9IGogKyAxKSB7Ci0gICAgICAgICAgICBpZiAobWF0W2ldW2pdICE9
IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBm
bG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAw
OyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFs
dWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIGZpbGwodGhyZWFkIGZsb2F0NCogdmVjLCBmbG9hdCB2
YWx1ZSkKLXsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDQ7
IGkgPSBpICsgMSkgewotICAgICAgICByZXN1bHRbaV0gPSB2YWx1ZTsKLSAgICB9Ci0gICAgKnZl
YyA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBhbGxFcXVhbChmbG9hdDQg
dmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSAr
IDEpIHsKLSAgICAgICAgaWYgKHZlY1tpXSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEp
XQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVn
aXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAg
ZmxvYXQ0eDQgbWF0OwotICAgIGZpbGwoJm1hdCwgMSk7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQs
IDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDQgdmVjOwotICAgIGZpbGwoJnZlYywg
MSk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMsIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBm
bG9hdDQgdmVjMiA9IG11bChtYXQsIHZlYyk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMyLCA0KSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0eDQgbWF0MiA9IG11bChtYXQsIG1hdCk7Ci0g
ICAgaWYgKCFhbGxFcXVhbChtYXQyLCA0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbWF0MiA9
IG11bChtYXQyLCBtYXQyKTsKLSAgICBpZiAoIWFsbEVxdWFsKG1hdDIsIDY0KSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhy
ZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNv
bnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
M10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RP
UkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRp
bmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJp
bmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJp
bmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCg0LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFw
UmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVsw
XSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0g
OCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25t
ZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxODI0OGYyNzM0NDk2Njg4NDkzODczYmY2YzUzMzU1Yjc1OThmZTI3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxOTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgQ29udGFpbmVyMngyIHsK
LSAgICBmbG9hdCB4OwotICAgIGZsb2F0MngyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0
IENvbnRhaW5lcjJ4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDJ4MyBtOwotICAgIGZsb2F0
IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIyeDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQy
eDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVyM3gyIHsKLSAgICBmbG9h
dCB4OwotICAgIGZsb2F0M3gyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5l
cjN4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDN4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0K
LXN0cnVjdCBDb250YWluZXIzeDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQzeDQgbTsKLSAg
ICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVyNHgyIHsKLSAgICBmbG9hdCB4OwotICAg
IGZsb2F0NHgyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjR4MyB7Ci0g
ICAgZmxvYXQgeDsKLSAgICBmbG9hdDR4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBD
b250YWluZXI0eDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQ0eDQgbTsKLSAgICBmbG9hdCB5
OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
MngyKGRldmljZSBDb250YWluZXIyeDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZs
b2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0u
bVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygx
LCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMngzKGRldmljZSBDb250YWluZXIy
eDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0
ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRb
MV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyMng0KGRldmljZSBDb250YWluZXIyeDRbXSBpbnB1dCA6IHJlZ2lzdGVy
KHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0
WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQot
Ci1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gyKGRl
dmljZSBDb250YWluZXIzeDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10g
b3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVsw
XTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gzKGRldmljZSBDb250YWluZXIzeDNbXSBp
bnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEp
KSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBp
bnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21w
dXRlU2hhZGVyM3g0KGRldmljZSBDb250YWluZXIzeDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwg
ZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0g
aW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVt
dGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgyKGRldmljZSBD
b250YWluZXI0eDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0
IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAg
ICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgzKGRldmljZSBDb250YWluZXI0eDNbXSBpbnB1dCA6
IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0g
ICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFsw
XS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyNHg0KGRldmljZSBDb250YWluZXI0eDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNl
IGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRb
MF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotYDsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7
Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGlu
ZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGlucHV0U2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDMyOwotICAgIGNvbnN0IG91dHB1dFNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiAyOwotCi0gICAgY29uc3QgdXBsb2FkQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBpbnB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih1cGxvYWRCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB1cGxvYWRCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHVwbG9hZEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdXBsb2FkQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh1cGxvYWRCdWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgKytpKQotICAgICAg
ICB1cGxvYWRCdWZmZXJGbG9hdDMyQXJyYXlbaV0gPSBpOwotICAgIHVwbG9hZEJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgaW5wdXRCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IGlucHV0U2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RX07Ci0gICAgY29uc3QgaW5wdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGlucHV0QnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IG91dHB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IG91dHB1dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIob3V0cHV0QnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCByZXNvdXJjZToge2J1ZmZlcjogaW5wdXRCdWZmZXIsIHNpemU6IGlucHV0U2l6ZX19LCB7Ymlu
ZGluZzogMSwgcmVzb3VyY2U6IHtidWZmZXI6IG91dHB1dEJ1ZmZlciwgc2l6ZTogb3V0cHV0U2l6
ZX19XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGxldCB0ZXN0cyA9IFsiY29tcHV0ZVNoYWRlcjJ4MiIs
ICJjb21wdXRlU2hhZGVyMngzIiwgImNvbXB1dGVTaGFkZXIyeDQiLCAiY29tcHV0ZVNoYWRlcjN4
MiIsICJjb21wdXRlU2hhZGVyM3gzIiwgImNvbXB1dGVTaGFkZXIzeDQiLCAiY29tcHV0ZVNoYWRl
cjR4MiIsICJjb21wdXRlU2hhZGVyNHgzIiwgImNvbXB1dGVTaGFkZXI0eDQiXTsKLSAgICBsZXQg
cmVzdWx0cyA9IFtdOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Y29tcHV0
ZVN0YWdlOiB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6IHRlc3R9LCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fSk7Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgICAgIGNvbW1hbmRFbmNvZGVyLmNv
cHlCdWZmZXJUb0J1ZmZlcih1cGxvYWRCdWZmZXIsIDAsIGlucHV0QnVmZmVyLCAwLCBpbnB1dFNp
emUpOwotICAgICAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmUpOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICAgICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICAgICAg
Y29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgICAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgICAgICBjb25z
dCBvdXRwdXRBcnJheUJ1ZmZlciA9IGF3YWl0IG91dHB1dEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsK
LSAgICAgICAgY29uc3Qgb3V0cHV0RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShvdXRw
dXRBcnJheUJ1ZmZlcik7Ci0gICAgICAgIHJlc3VsdHMucHVzaChvdXRwdXRGbG9hdDMyQXJyYXlb
MF0pOwotICAgICAgICByZXN1bHRzLnB1c2gob3V0cHV0RmxvYXQzMkFycmF5WzFdKTsKLSAgICAg
ICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7Ci0gICAgfQotICAgIGxldCBleHBlY3RlZCA9IFsyLCA2
LCA0LCAxMiwgNCwgMTIsIDIsIDgsIDQsIDE2LCA0LCAxNiwgMiwgMTAsIDQsIDIwLCA0LCAyMF07
Ci0gICAgbGV0IGVycm9yID0gZmFsc2U7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXSAhPSBleHBlY3RlZFtpXSkg
ewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MzYzFhYjM4ZmVmNzI4
MWJlMzAwNWEwMTc3NDdhZjIyNjQ4NTNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgbWF0cml4
TFQKLVBBU1MgbWF0cml4TFQyCi1QQVNTIG1hdHJpeExURQotUEFTUyBtYXRyaXhMVEUyCi1QQVNT
IG1hdHJpeExURTMKLVBBU1MgbWF0cml4R1QKLVBBU1MgbWF0cml4R1QyCi1QQVNTIG1hdHJpeEdU
RQotUEFTUyBtYXRyaXhHVEUyCi1QQVNTIG1hdHJpeEdURTMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjJiYjk2ODZhNDNjNWVjOTBkNDcwNGM0YzlkYzA5ZGVjODE3MjdjOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVCA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAy
MC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAg
ICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8IHYyKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVDIg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28o
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2
OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLSAgICAgICAgICAgIHYyWzBdWzBdIC09IDExLjA7
Ci0KLSAgICAgICAgICAgIGJvb2wyeDIgcmVzdWx0ID0gdiA8IHYyOwotICAgICAgICAgICAgcmV0
dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVz
dWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeExURSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4Migx
MC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gy
IHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBh
bGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdo
bHNsVGVzdHMubWF0cml4TFRFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4
MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0
M3gyIHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVEUzID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsK
LSAgICAgICAgICAgIHYyWzBdWzBdIC09IDEuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiByZXN1
bHQgPSB2IDw9IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0
WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEdUID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAg
ICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAs
IDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0g
MTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVDIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAg
ICAgICAgdjJbMF1bMF0gKz0gMS4wOwotICAgICAgICAgICAgdjJbMF1bMV0gLT0gMS4wOwotICAg
ICAgICAgICAgdjJbMV1bMF0gLT0gMS4wOwotICAgICAgICAgICAgdjJbMV1bMV0gLT0gMS4wOwot
Ci0gICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPiB2MjsKLSAgICAgICAgICAgIHJldHVy
biAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3Vs
dFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhHVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAu
MCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2
MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gIWFu
eSh2ID49IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhHVEUyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gy
KDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQz
eDIgdjIgPSB2OwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPj0gdjIpOwotICAgICAgICB9
Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEdURTMgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2Owot
ICAgICAgICAgICAgdjJbMF1bMF0gKz0gMS4wOwotCi0gICAgICAgICAgICBib29sMngyIHJlc3Vs
dCA9IHYgPj0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJlc3VsdFswXVswXSAmJiByZXN1bHRb
MF1bMV0gJiYgcmVzdWx0WzFdWzBdICAmJiByZXN1bHRbMV1bMV07Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4
LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM2NDA1OGNkOTI2NDRlOTZhZTQ2YjE3NmNiOGM2MDA1NjY4MWIyYTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0KLVBBU1MgbWF0cml4Q29uc3RydWN0b3IKLVBBU1MgbWF0cml4Q29uc3RydWN0b3Iy
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0
b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzhmYWM3OWQ2NjEzYzg1OGI3YmU2YmI4MjhjNDlj
NmZlMTJhOWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2Nh
bGFycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBs
aXN0T2ZTY2FsYXJzTWF0cml4Q29uc3RydWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2Fs
YXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxY2UxZjQ3MGVmMzIxZjAw
YzA3MjY1ZjE5Yjc1OWZmNjJkYjcyMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3Rv
cnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxz
bFRlc3RzLmxpc3RPZlNjYWxhcnNNYXRyaXhDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgcmV0
dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngzIG0gPSBmbG9hdDJ4MygxLCAyLCAzLCA0LCA1LCA2KTsKLSAgICAg
ICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4NCBtID0gZmxvYXQyeDQoMSwgMiwgMywgNCwgNSwg
NiwgNywgOCk7Ci0gICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQzeDIgbSA9IGZsb2F0M3gy
KDEsIDIsIDMsIDQsIDUsIDYpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0M3gzIG0g
PSBmbG9hdDN4MygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KTsKLSAgICAgICAgICAgIHJldHVy
biBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdDN4NCBtID0gZmxvYXQzeDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
MTAsIDExLCAxMik7Ci0gICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBnKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQ0eDIgbSA9IGZsb2F0
NHgyKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgaCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0NHgzIG0gPSBmbG9hdDR4MygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDR4NCBtID0gZmxvYXQ0eDQoMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYpOwotICAgICAg
ICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJhIiwgW10pLCAzLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiYiIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImMiLCBbXSksIDUsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICJkIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZSIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImYi
LCBbXSksIDUsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJnIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiaCIsIFtdKSwg
NCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgImkiLCBbXSksIDUsIGVwc2lsb24pOwotfQotCi0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmIyMjcxMTFlZmFiOGYwYjFiOThlYmQ4MTE4ZGI5N2EzNDk3MThiNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5tYXRyaXggY3Rvci48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvciA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MihmbG9hdDIoMS4wLCAyLjApLCBm
bG9hdDIoMy4wLCA0LjApLCBmbG9hdDIoNS4wLCA2LjApKTsKLSAgICAgICAgICAgIHJldHVybiB2
WzBdWzBdID09IDEuMCAmJiB2WzBdWzFdID09IDIuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzFd
WzBdID09IDMuMCAmJiB2WzFdWzFdID09IDQuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzJdWzBd
ID09IDUuMCAmJiB2WzJdWzFdID09IDYuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvcjIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAg
ICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMS4wLCAyLjAsIDMuMCwgNC4wLCA1LjAsIDYuMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdlswXVswXSA9PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCi0gICAg
ICAgICAgICAgICAgJiYgdlsxXVswXSA9PSAzLjAgJiYgdlsxXVsxXSA9PSA0LjAgCi0gICAgICAg
ICAgICAgICAgJiYgdlsyXVswXSA9PSA1LjAgJiYgdlsyXVsxXSA9PSA2LjA7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcx
Y2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWdu
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODc4MTc4YmI2YWJiNDIyYjFjNGJlZmZh
NTJlMTBlMWZjY2JkMDIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPm1hdHJpeC1pbmRleC1hc3NpZ24tc3dpenpsZS48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0MngzIG1hdDsKLSAgICAgICAgICAgIG1hdFswXSA9IGZsb2F0MygxMC4wLCAyMC4wLCAz
MC4wKTsKLQotICAgICAgICAgICAgaWYgKCFhbGwobWF0WzBdID09IGZsb2F0MygxMC4wLCAyMC4w
LCAzMC4wKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBp
ZiAoIWFsbChtYXRbMF0ueHkgPT0gZmxvYXQyKDEwLjAsIDIwLjApKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXS55eCA9PSBmbG9h
dDIoMjAuMCwgMTAuMCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgbWF0WzBdLnh5ID0gZmxvYXQyKDEuMCwgMi4wKTsKLSAgICAgICAgICAgIGlmICghYWxs
KG1hdFswXS54eSA9PSBmbG9hdDIoMS4wLCAyLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIG1hdFswXS55eC55eCA9IGZsb2F0MigxMDAuMCwgMjAwLjAp
OwotICAgICAgICAgICAgaWYgKCFhbGwobWF0WzBdLnh5ID09IGZsb2F0MigxMDAuMCwgMjAwLjAp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5YWZkYmQzZGI3Y2UxZjMwY2ZmNGJjNjljZTgxOGRhY2Fj
MzAzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIG1hdE11bAotUEFTUyBtYXRNdWwyCi1Q
QVNTIG1hdE11bDMKLVBBU1MgbWF0TXVsNAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDU5OTQ0MzJhOWY2N2FlMGZmODhmM2UxMWZiNmM0MjE4ODc2NjUwY2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1pbmRleC1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bWF0cml4LWluZGV4LW9yZGVyLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm1hdE11bCA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MngzIGEgPSBmbG9hdDJ4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMoMSwg
MiwgMyksCi0gICAgICAgICAgICAgICAgZmxvYXQzKDQsIDUsIDYpCi0gICAgICAgICAgICApOwot
Ci0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxvYXQzeDIoCi0gICAgICAgICAgICAgICAgZmxv
YXQyKDcsIDgpLAotICAgICAgICAgICAgICAgIGZsb2F0Mig5LCAxMCksCi0gICAgICAgICAgICAg
ICAgZmxvYXQyKDExLCAxMikKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0M3gz
IHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQzeDMgZXhwZWN0ZWQgPSBm
bG9hdDN4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMoMzksIDU0LCA2OSksCi0gICAgICAgICAg
ICAgICAgZmxvYXQzKDQ5LCA2OCwgODcpLAotICAgICAgICAgICAgICAgIGZsb2F0Myg1OSwgODIs
IDEwNSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGV4cGVjdGVkID09
IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNs
VGVzdHMubWF0TXVsMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGEgPSBmbG9hdDJ4MigKLSAg
ICAgICAgICAgICAgICBmbG9hdDIoMSwgOCksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDUsIDEy
KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoMjIsIDQ1
KTsKLQotICAgICAgICAgICAgZmxvYXQyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAg
ICAgZmxvYXQyIGV4cGVjdGVkID0gZmxvYXQyKDI0NywgNzE2KTsKLQotICAgICAgICAgICAgcmV0
dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdE11bDMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBhID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEsIDIpLAotICAgICAgICAg
ICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQy
eDIgYiA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCA2KSwKLSAgICAgICAg
ICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0
MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQg
PSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMjMsIDM0KSwKLSAgICAgICAgICAg
ICAgICBmbG9hdDIoMzEsIDQ2KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJu
IGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBiYXIo
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAg
ZmxvYXQyKDEsIDIpLAotICAgICAgICAgICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgYSA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAg
IGZsb2F0Mig1LCA2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAg
ICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9h
dDIoMTksIDIyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNDMsIDUwKQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiYmFyIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMubWF0TXVsNCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0Mng0IGEgPSBmbG9hdDJ4NCgKLSAgICAg
ICAgICAgICAgICBmbG9hdDQoMSwgMiwgMywgNCksCi0gICAgICAgICAgICAgICAgZmxvYXQ0KDUs
IDYsIDcsIDgpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxv
YXQzeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDksIDEwKSwKLSAgICAgICAgICAgICAgICBm
bG9hdDIoMTEsIDEyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTMsIDE0KQotICAgICAgICAg
ICAgKTsKLQotICAgICAgICAgICAgZmxvYXQzeDQgcmVzdWx0ID0gbXVsKGEsIGIpOwotCi0gICAg
ICAgICAgICBmbG9hdDN4NCBleHBlY3RlZCA9IGZsb2F0M3g0KAotICAgICAgICAgICAgICAgIGZs
b2F0NCg1OSwgNzgsIDk3LCAxMTYpLAotICAgICAgICAgICAgICAgIGZsb2F0NCg3MSwgOTQsIDEx
NywgMTQwKSwKLSAgICAgICAgICAgICAgICBmbG9hdDQoODMsIDExMCwgMTM3LCAxNjQpCi0gICAg
ICAgICAgICApOwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKGV4cGVjdGVkID09IHJlc3VsdCk7
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3
MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzEwMTA4NWEyNGFkZDU4YzAxOTdiZjA2MWYyN2M4ZWFiYTFiMTY5ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0NHg0W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKLSAgICByZXN1
bHRbMV0gPSBmbG9hdDQoNSwgNiwgNywgOCk7Ci0gICAgcmVzdWx0WzJdID0gZmxvYXQ0KDksIDEw
LCAxMSwgMTIpOwotICAgIHJlc3VsdFszXSA9IGZsb2F0NCgxMywgMTQsIDE1LCAxNik7Ci0KLSAg
ICBmbG9hdDR4NCBtYXQgPSBidWZmZXJbMF07Ci0KLSAgICBpZiAobWF0WzBdWzBdID09IDAKLSAg
ICAgICAgJiYgbWF0WzBdWzFdID09IDEKLSAgICAgICAgJiYgbWF0WzBdWzJdID09IDIKLSAgICAg
ICAgJiYgbWF0WzBdWzNdID09IDMKLQotICAgICAgICAmJiBtYXRbMV1bMF0gPT0gNAotICAgICAg
ICAmJiBtYXRbMV1bMV0gPT0gNQotICAgICAgICAmJiBtYXRbMV1bMl0gPT0gNgotICAgICAgICAm
JiBtYXRbMV1bM10gPT0gNwotCi0gICAgICAgICYmIG1hdFsyXVswXSA9PSA4Ci0gICAgICAgICYm
IG1hdFsyXVsxXSA9PSA5Ci0gICAgICAgICYmIG1hdFsyXVsyXSA9PSAxMAotICAgICAgICAmJiBt
YXRbMl1bM10gPT0gMTEKLQotICAgICAgICAmJiBtYXRbM11bMF0gPT0gMTIKLSAgICAgICAgJiYg
bWF0WzNdWzFdID09IDEzCi0gICAgICAgICYmIG1hdFszXVsyXSA9PSAxNAotICAgICAgICAmJiBt
YXRbM11bM10gPT0gMTUpIHsKLSAgICAgICAgYnVmZmVyWzBdID0gcmVzdWx0OwotICAgIH0KLX0K
LWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3Jh
Z2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
LSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE2OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVm
ZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IDA7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFdID0gMTsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMl0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDM7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzRdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA1OwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0g
NzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbOF0gPSA4OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVs5XSA9IDk7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEwOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVsxMV0gPSAxMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMTI7Ci0g
ICAgYnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDEzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsx
NF0gPSAxNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTU7Ci0gICAgYnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVy
LCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAo
cmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PT0gMQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzFdID09PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT09IDMKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PT0gNAotCi0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbNF0gPT09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1
XSA9PT0gNgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzZdID09PSA3Ci0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT09IDgKLQotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzhdID09PSA5Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbOV0gPT09
IDEwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTBdID09PSAxMQotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzExXSA9PT0gMTIKLQotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzEyXSA9PT0gMTMKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxM10g
PT09IDE0Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTRdID09PSAxNQotICAgICAg
ICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzE1XSA9PT0gMTYpCi0gICAgICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZl
ci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM2MDJiYmJlNWUxM2Iw
MmRjNDMyODkxNzQ1N2Q3YTViNzJmZjFjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIGFs
bEVxdWFsKGZsb2F0MngzIG1hdCwgZmxvYXQgdmFsdWUpCi17Ci0gICAgZm9yICh1aW50IGkgPSAw
OyBpIDwgMjsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZvciAodWludCBqID0gMDsgaiA8IDM7IGog
PSBqICsgMSkgewotICAgICAgICAgICAgaWYgKG1hdFtpXVtqXSAhPSB2YWx1ZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIo
ZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBT
Vl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQyeDMgZm9vOwotICAgIGlmICghYWxsRXF1
YWwoZm9vLCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vICsgZmxvYXQyeDMo
ZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBmbG9hdDMoMS4wLCAxLjAsIDEuMCkpOwotICAgIGlmICgh
YWxsRXF1YWwoZm9vLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vICogZmxv
YXQyeDMoZmxvYXQzKDguNSwgOC41LCA4LjUpLCBmbG9hdDMoOC41LCA4LjUsIDguNSkpOwotICAg
IGlmICghYWxsRXF1YWwoZm9vLCA4LjUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBm
b28gLSBmbG9hdDJ4MyhmbG9hdDMoNy41LCA3LjUsIDcuNSksIGZsb2F0Myg3LjUsIDcuNSwgNy41
KSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBm
b28gPSBmb28gKyBmbG9hdDJ4MyhmbG9hdDMoMS4wLCAxLjAsIDEuMCksIGZsb2F0MygxLjAsIDEu
MCwgMS4wKSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDIpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb28gPSBmb28gKyBmb287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmb287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28s
IDgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDMgZm91cnR5VHdvOwotICAgIGZvdXJ0
eVR3by54ID0gNDI7Ci0gICAgZm91cnR5VHdvLnkgPSA0MjsKLSAgICBmb3VydHlUd28ueiA9IDQy
OwotCi0gICAgZm9vWzBdID0gZm91cnR5VHdvOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAg
ICBpZiAoIWFsbEVxdWFsKGZvbywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb29bMTMz
N10gPSBmb3VydHlUd287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDQyKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9vWzEwMDAwMDBdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwo
Zm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3b1sxMzM3XSA9IDUwOwot
ICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm91cnR5
VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1
YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3b1sxMDAwMDAwXSA9
IDUwOwotICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm91cnR5VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFdID0gZm91cnR5VHdvOwotICAgIGlmICgh
YWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0MyBzaG91bGRC
ZUZvdXJ0eVR3byA9IGZvb1sxMDAwMDBdOwotICAgIGlmIChzaG91bGRCZUZvdXJ0eVR3by54ICE9
IDQyIHx8IHNob3VsZEJlRm91cnR5VHdvLnkgIT0gNDIgfHwgc2hvdWxkQmVGb3VydHlUd28ueiAh
PSA0MikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZvdXJ0eVR3b1sxMDAwMDAwMF0gIT0g
NDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1
ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0
ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3Qg
YnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
NzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6
ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5D
b21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRl
UGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goNCwgMSwgMSk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1
bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNG
bG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09
IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5
WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQz
MkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAg
ICAgdGVzdEZhaWxlZCgibm90IGNvcnJlY3QiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2Jm
YTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lv
bi1ydmFsdWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1k
b3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0
ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFiZDcwZTUwNjU1YjAyMzUxZTRlNDdjZDQ0MGY2MDMxYmM1MzhhMTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDE0NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLQotc3RydWN0IEJhciB7Ci0gICAgZmxv
YXQgc2hhZGU7Ci19Ci1zdHJ1Y3QgRm9vIHsKLSAgICBCYXIgYmFyOwotfQotCi1zdHJ1Y3QgV3Jh
cHBlciB7Ci0gICAgRm9vIGZvbzsKLX0KLQotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7
Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBXcmFwcGVyIHdy
YXBwZXI7Ci0gICAgd3JhcHBlci5mb28uYmFyLnNoYWRlID0gc2hhZGU7Ci0gICAgVmVydGV4T3V0
IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hh
ZGUgPSB3cmFwcGVyLmZvby5iYXIuc2hhZGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9
IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBj
b25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlu
cHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZj
YzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9uZXN0ZWQtbG9vcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjdl
ODI2Y2U0MGU2OGVhYjA4ZDRhNTY1NDY3Njk3Y2ZmNmUwYjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0
ZWQtbG9vcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291
cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0
ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9v
bCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0g
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hhZGUgPSAxLjA7Ci0gICAg
ICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlICgoc2hhZGUgPSAxLjAs
IGZhbHNlKSk7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRl
ID0gc2hhZGUgKyAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYg
KGIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSB3aGlsZSAoKHNoYWRlID0gc2hhZGUgLSAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgd2hpbGUg
KChzaGFkZSA9IHNoYWRlICsgMS4wLCB0cnVlKSkgewotICAgICAgICAgICAgaWYgKGIpIHsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IHdoaWxlICgoc2hhZGUgPSBzaGFkZSAtIDEuMCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIGlmIChi
KSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUg
PSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZv
cm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFk
ZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBh
dHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9
IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlu
cHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdz
OiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
PSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJp
emF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQs
IHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTog
RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIw
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsK
LQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3Jv
dXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIg
PSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzJhMTQwMWNlNmU0NzIwOWMyMzZlOGRmNzM3ZmJhODI5ZTNkNzQzMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0KLVBBU1MgbnVsbElzRXJyb3IKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL251bGwtYXJnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhNWQwMzM1MmQ4ZTM1MGIzYzY5
NDE3ZWFjMzNjYWI5YjFmZjdmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+bnVsbC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5udWxsSXNF
cnJvciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50
IGZvbyh0aHJlYWQgaW50KiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqcHRy
OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9vKG51bGwpOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICB2b2lkIGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBp
bnQqIHg7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHZvaWQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGludFtdIHg7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5
LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YjM5MWYxYzlhOWVlYzNkMTc2Nzk5ZDU0MDdhY2JhZGIxOGQyZGE1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBzdG9yZU51bGxBcnJheVJlZgotUEFT
UyBsb2FkTnVsbEFycmF5UmVmCi1QQVNTIG51bGxOYW1lZEFjY2VzcwotUEFTUyBudWxsTmFtZWRB
Y2Nlc3MyCi1QQVNTIG51bGxOYW1lZEFjY2Vzc1NpbmsKLVBBU1MgbnVsbE5hbWVkQWNjZXNzU2lu
azIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJv
cGVydHktYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1w
cm9wZXJ0eS1hY2Nlc3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NhMDlk
ZWZkZTE4ODhiNmViMmEzMzMwODUxNDg2ZGUwMjIyNTcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1h
cnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bG9hZC9zdG9yZSB0byBudWxsLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN0b3JlTnVsbEFycmF5UmVm
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBmb28oKSB7IG51bGxbMF0gPSA0MjsgfQotICAgICAgICBgKTsKLX0KLQotd2hs
c2xUZXN0cy5sb2FkTnVsbEFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBzaW5rKHRocmVhZCBpbnQqIHgpIHsg
fQotICAgICAgICAgICAgdm9pZCBmb28oKSB7IHNpbmsobnVsbFswXSk7IH0KLSAgICAgICAgYCk7
Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKSB7IG51bGwt
Png7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzMiA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IHZvaWQgZm9vKCkgeyBudWxsLng7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVs
bE5hbWVkQWNjZXNzU2luayA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAgICAgICB2
b2lkIGZvbygpIHsgc2luayhudWxsLT54KTsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0
cy5udWxsTmFtZWRBY2Nlc3NTaW5rMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAg
ICAgICB2b2lkIGZvbygpIHsgc2luayhudWxsLngpOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzU1MTdhZDQwM2ZmZWIwZDc2ZjU2Y2RhNDM0OGE1Y2M1MjMzMjIzNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbnVsbC1hcnJheS1yZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5kZXJlZmVyZW5jZURlZmF1bHROdWxsQXJyYXlS
ZWYgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGludFtdIHA7Ci0gICAgICAgICAgICBy
ZXR1cm4gcFswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMu
ZGVmYXVsdEluaXRpYWxpemVkTnVsbEFycmF5UmVmSW50TGl0ZXJhbCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aHJlYWQgaW50W10gcCA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gcFswXTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMucGFzc051bGxUb1B0
ck1vbm9tb3JwaGljQXJyYXlSZWYgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKHRocmVhZCBpbnRbXSBwdHIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBwdHJbMHVdOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vKG51bGwpOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10p
LCAwKTsKLX0KLQotd2hsc2xUZXN0cy5sb2FkTnVsbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsodGhyZWFkIGlu
dCogeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luaygqbnVsbCk7IH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTNhZjg4ZTEyNTllZmY1YWMzMmI4
NjRhMTY0MjExNjJkNmZhNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBvb2IKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkY2NjYTVkZWRlMDdjOWJlYWY3MjI2NWQwMTg3MWI4ZTlkYTc4NzI3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+T09CLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm9vYiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
IHggPSAzOwotICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFb
NDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpbnQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzEwXSB4OwotICAgICAgICAg
ICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAg
ICAgICAgICAgcmV0dXJuIHhbMF07Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50WzEwXSB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtd
IGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJu
IHhbMV07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDI1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMCk7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
b2ItYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzkxNGQ4YzNiNThmMTBkZmU2ZDYzZjk4
YmUxNjVmNDBiN2I0NjFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw5NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDQs
IDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVy
IDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7
Ci0gICAgYnVmZmVyWzEzMzddID0gMC4wOwotICAgIGJ1ZmZlcls0MjQyNDI0Ml0gPSAwLjA7Ci0g
ICAgaWYgKGJ1ZmZlclsxMDAwMDBdID09IDAuMCkKLSAgICAgICAgYnVmZmVyW3VpbnQodGhyZWFk
SUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29t
cHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNo
YWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsK
LSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0
XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVm
ZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9
IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMy
QXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNG
bG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09
IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGNiNTY2MWQ0ZGM2MDA0NmFlYjhlYzRiN2NiMTA4MzI4OGFhN2Y4Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBA
QAotCi1QQVNTIHZlY3RvckRpdgotUEFTUyB2ZWN0b3JEaXZXaXRoU2NhbGFyCi1QQVNTIHZlY3Rv
ckRpdldpdGhTY2FsYXIyCi1QQVNTIG1hdHJpeERpdgotUEFTUyBtYXRyaXhEaXZTY2FsYXIKLVBB
U1MgbWF0cml4RGl2U2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
ZGl2Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNmE5Yjk0ZTNhYTc3MmJm
ZGQ4NjMwZWUxMmViMGVmYzYyOTU0NTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+RGl2LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxv
biA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXYgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQyIHggPSBmbG9hdDIoMTAsIDMwKTsKLSAgICAgICAgICAgIGZsb2F0MiB5ID0gZmxvYXQyKDUs
IDEwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAvIHk7Ci0gICAgICAgICAgICByZXR1cm4g
ci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyLzMsIGVwc2lsb24p
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRoU2NhbGFyID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggLyA1
LjA7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAyLzUsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRo
U2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAg
ICAgICAgICAgZmxvYXQyIHIgPSAxMDAgLyB4OwotICAgICAgICAgICAgcmV0dXJuIHIueCAvIHIu
eTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMTAvNCwgZXBzaWxvbik7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeERpdiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAg
ICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQy
KDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIG0yOwotICAgICAgICAgICAgbTJbMF0g
PSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0gICAgICAgICAgICBtMlsxXSA9IGZsb2F0MigtMS4wLCAt
MS4wKTsKLQotICAgICAgICAgICAgbSA9IG0gLyBtMjsKLQotICAgICAgICAgICAgaWYgKG1bMF1b
MF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1b
MV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtIC8gLTEuMDsKLQotICAgICAgICAgICAg
aWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00
MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAg
bVsxXSA9IGZsb2F0MigyNSwgNTApOwotCi0gICAgICAgICAgICBtID0gMTAwLjAgLyBtOwotCi0g
ICAgICAgICAgICBpZiAobVswXVswXSA9PSAxMC4wICYmIG1bMF1bMV0gPT0gNS4wICYmIG1bMV1b
MF0gPT0gNC4wICYmIG1bMV1bMV0gPT0gMi4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1
YWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDc3ZWFhZWVl
N2Q5NWEzYjAwNThiNjRlNDk3OWRhNGQ2YTBiMmJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1l
cXVhbC1lcXVhbC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQot
UEFTUyBtYXRyaXhFcXVhbAotUEFTUyB2ZWN0b3JFcXVhbHMKLVBBU1Mgc2NhbGFyRXF1YWxzCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVh
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZGEwNDBmNTNkMzhhZTgyMGQ1OTEy
ZTYxNDQ4NDJjMzllY2EyZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxv
biA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhFcXVhbCA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZs
b2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAg
ICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtMyA9IG07Ci0g
ICAgICAgICAgICBtM1swXVsxXSArPSAxMC4wOwotCi0gICAgICAgICAgICBib29sMngyIG0yID0g
bSA9PSBtMzsKLQotICAgICAgICAgICAgcmV0dXJuIG0yWzBdWzBdICYmICFtMlswXVsxXSAmJiBt
MlsxXVswXSAmJiBtMlsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JFcXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9
IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAg
ICAgICAgIGJvb2wyIHJlc3VsdCA9IHYyID09IHY7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnggJiYgcmVzdWx0Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMuc2NhbGFyRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQgeCA9IDEwLjA7
Ci0gICAgICAgICAgICBmbG9hdCB5ID0geDsKLSAgICAgICAgICAgIHJldHVybiB4ID09IHk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2JlZDQ1ODdlNzRmZjExNmQwMGRmODY0OGU4NWUxYjE4ZTcyOWMyNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAg
KzAsMCBAQAotCi1QQVNTIHZlY3Rvck1pbnVzCi1QQVNTIHZlY3Rvck5lZ2F0ZQotUEFTUyB2ZWN0
b3JNaW51c1NjYWxhcgotUEFTUyB2ZWN0b3JNaW51c1NjYWxhcjIKLVBBU1MgbWF0cml4TWludXMK
LVBBU1MgbWF0cml4TWludXNTY2FsYXIKLVBBU1MgbWF0cml4TWludXNTY2FsYXIyCi1QQVNTIG1h
dHJpeE5lZ2F0ZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3ItbWludXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAwZGQ2YmFjZDVlMWNiOWU4NzU5
MTRmZmIzNzU1ODljMTRhMTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+TWludXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9u
ID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3Rvck1pbnVzID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQy
IHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBpbnQyIHkgPSBpbnQyKDIwLCAzMCk7Ci0g
ICAgICAgICAgICBpbnQyIHIgPSB5IC0geDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAyKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTmVn
YXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICB4
ID0gLXg7Ci0gICAgICAgICAgICByZXR1cm4geC54ICsgeC55OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgLTM1KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTWludXNTY2FsYXIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAg
ICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAuMCwgMjUuMCk7Ci0gICAgICAgICAgICB4ID0g
eCAtIDUuMDsKLSAgICAgICAgICAgIHJldHVybiB4LnkgLyB4Lng7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCAyMC81LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9y
TWludXNTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKC0xMC4wLCAt
MjUuMCk7Ci0gICAgICAgICAgICB4ID0gNS4wIC0geDsKLSAgICAgICAgICAgIHJldHVybiB4Lnkg
LyB4Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAzMC8xNSwgZXBzaWxvbik7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0g
PSBmbG9hdDIoNDAsIDUwKTsKLSAgICAgICAgICAgIG0gPSBtIC0gbTsKLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IDAgJiYgbVswXVsxXSA9PSAwICYmIG1bMV1bMF0gPT0gMCAmJiBtWzFdWzFd
ID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdHJpeE1pbnVzU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAg
ICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAs
IDUwKTsKLQotICAgICAgICAgICAgbSA9IG0gLSAxLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBd
WzBdID09IDE5LjAgJiYgbVswXVsxXSA9PSAyOS4wICYmIG1bMV1bMF0gPT0gMzkuMCAmJiBtWzFd
WzFdID09IDQ5LjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAwLjAgLSBtOwotCi0gICAgICAgICAgICBp
ZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQw
LjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMubWF0cml4TmVnYXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0g
PSBmbG9hdDIoNDAsIDUwKTsKLQotICAgICAgICAgICAgbSA9IC1tOwotCi0gICAgICAgICAgICBp
ZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQw
LjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhYzQxYjRkMzkzZDMzYmVlNjAw
YTkxOTA3YmIxMGMyM2Q3MWY4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JX
aXRob3V0VW5pbmZlcnJhYmxlVHlwZVZhcmlhYmxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDExMTg1NGM3ZDIxZmNmZmQxNzVjMWRmOGZiNDc0ODdiNjJmODNmMDguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk9wZXJhdG9yKyBvdmVybG9hZC48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5vcGVyYXRvcldpdGhvdXRV
bmluZmVycmFibGVUeXBlVmFyaWFibGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0K
LSAgICAgICAgRm9vIG9wZXJhdG9yKyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQueCA9IGEueCArIGIueDsKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEZvbyBhOwotICAgICAgICAgICAgYS54ID0gNjQ1OwotICAgICAg
ICAgICAgRm9vIGI7Ci0gICAgICAgICAgICBiLnggPSAtMzU7Ci0gICAgICAgICAgICByZXR1cm4g
KGEgKyBiKS54OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA2NDUgLSAzNSk7Ci19Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY1N2FlN2E2YzIxMTRiYjM1NmE4ZTQzMjRkZGQxYmFhMDNmODBhMmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsOCArMCwwIEBACi0KLVBBU1MgdmVjdG9yUGx1cwotUEFTUyB2ZWN0b3JQbHVzU2NhbGFy
Ci1QQVNTIHZlY3RvclBsdXNTY2FsYXIyCi1QQVNTIG1hdHJpeFBsdXMKLVBBU1MgbWF0cml4VGlt
ZXNTY2FsYXIKLVBBU1MgbWF0cml4VGltZXNTY2FsYXIyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ODQ2YmU1MGI2NDgwYzk5NDMyODFiNWY3NWFmMjI1Mjg3NmViNDA3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
cGVyYXRvci1wbHVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5QbHVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JQbHVzID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBm
bG9hdDIgeSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB5ICsgeDsK
LSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDMwLzU1LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1c1NjYWxh
ciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBm
b28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAg
ICAgZmxvYXQyIHIgPSB4ICsgMTAuMDsKLSAgICAgICAgICAgIHJldHVybiByLnkgLyByLng7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwLzIwLCBlcHNpbG9uKTsKLX07Ci0KLXdo
bHNsVGVzdHMudmVjdG9yUGx1c1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBm
bG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0gMTAuMCArIHg7Ci0gICAgICAg
ICAgICByZXR1cm4gci55IC8gci54OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAz
MC8yMCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFBsdXMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAg
ICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwotICAgICAgICAgICAgZmxvYXQyeDIgbTI7
Ci0gICAgICAgICAgICBtMlswXSA9IGZsb2F0MigtMjAsIC0zMCk7Ci0gICAgICAgICAgICBtMlsx
XSA9IGZsb2F0MigtNDAsIC01MCk7Ci0gICAgICAgICAgICBtID0gbSArIG0yOwotICAgICAgICAg
ICAgaWYgKG1bMF1bMF0gPT0gMCAmJiBtWzBdWzFdID09IDAgJiYgbVsxXVswXSA9PSAwICYmIG1b
MV1bMV0gPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNs
VGVzdHMubWF0cml4VGltZXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAg
ICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0
Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gbSArIDEwLjA7Ci0KLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IDMwLjAgJiYgbVswXVsxXSA9PSA0MC4wICYmIG1bMV1bMF0gPT0gNTAuMCAm
JiBtWzFdWzFdID09IDYwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0Mngy
IG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFd
ID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAxMC4wICsgbTsKLQotICAgICAg
ICAgICAgaWYgKG1bMF1bMF0gPT0gMzAuMCAmJiBtWzBdWzFdID09IDQwLjAgJiYgbVsxXVswXSA9
PSA1MC4wICYmIG1bMV1bMV0gPT0gNjAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTY5MTU2ZGMzMDliMTYxNzU4ODdh
MDRhYTlmYmNkNGYxOWU4NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JTeW50
YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRh
eC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTFiNzc5MzViYzY4YWU2YWYzNzQ2NmQ2YWJj
M2U4NGMyNTNkMjkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+U29tZSBvcGVyYXRvcnMgc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMuPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JTeW50YXggPSBhc3luYyAoKSA9Pgot
ewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
IGludCBvcGVyYXRvci5mb28oRm9vKSB7IHJldHVybiA0MjsgfQotICAgIGApOwotICAgIGF3YWl0
IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRv
ci5mb289KEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9y
Ji5mb28oRm9vKSB7IGludCB4OyByZXR1cm4gJng7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltd
KEZvbywgdWludCkgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltdPShGb28s
IHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXShG
b28sIHVpbnQpIHsgaW50IHg7IHJldHVybiAmeDsgfQotICAgIGApOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE3YzhlNWE1ZmExODA0ZGVjZDQ3YWY4MTBkZWQ4NDFmYzhhNWZmOTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvclRpbWVzCi1QQVNTIHZlY3RvclRpbWVzV2l0aFNj
YWxhcgotUEFTUyB2ZWN0b3JUaW1lc1dpdGhTY2FsYXIyCi1QQVNTIG1hdHJpeFRpbWVzCi1QQVNT
IG1hdHJpeFRpbWVzU2NhbGFyCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyMgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNjQ3ZTAyNDg3NzZhNjE3YzMxYmRkMDg4M2ViYjUwZWM1MjJkMzE3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGltZXMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3Rz
LnZlY3RvclRpbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDIsIDUpOwot
ICAgICAgICAgICAgZmxvYXQyIHkgPSBmbG9hdDIoMywgMTApOwotICAgICAgICAgICAgZmxvYXQy
IHIgPSB5ICogeDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAg
ICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDYvNTAsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JUaW1lc1dpdGhTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAs
IDIwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAqIDIuMDsKLSAgICAgICAgICAgIHJldHVy
biByLnggKiByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIwICogNDAsIGVw
c2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUaW1lc1dpdGhTY2FsYXIyID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBmbG9hdDIg
ciA9IDIuMCAqIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54ICogci55OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCAyMCAqIDQwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMu
bWF0cml4VGltZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwot
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtMjsKLSAgICAgICAgICAgIG0yWzBdID0gZmxvYXQyKC0x
LjAsIC0xLjApOwotICAgICAgICAgICAgbTJbMV0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0KLSAg
ICAgICAgICAgIG0gPSBtICogbTI7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IC0yMC4w
ICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFdWzFdID09IC01
MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5t
YXRyaXhUaW1lc1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAg
ICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1
MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtICogLTEuMDsKLQotICAgICAgICAgICAgaWYgKG1bMF1b
MF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1b
MV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07
Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0g
ZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAtMS4wICogbTsKLQotICAgICAgICAg
ICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09
IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1
ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1h
c3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYyODZm
MzQyMDZmYTNmNDU3MWM5YzliOTM1NjYyZTVjYTNiZWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRv
ci12ZWN0b3ItYXNzaWduLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIHZlY3RvckluZGV4QXNzaWduCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4YjRlNjY0MTZiZTYxMjRlNjMxZTQ5MzllOGUwM2JkMzg2N2M5OWRjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJl
Zml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0g
MC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBp
bnQyIHg7Ci0gICAgICAgICAgICB4WzBdID0gMjA7Ci0gICAgICAgICAgICB4WzFdID0gMTA7Ci0g
ICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55ICsg
eFs1MDAwXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIDQwIC8gMTAgKyA0MCk7Ci19OwotCi1y
dW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NzI1NTcxN2NkNzRlOTE0ZjhjZjY2
NWJhNmVmZGNiZDBlZGEzMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3Rvcklu
ZGV4TG9hZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
dmVjdG9yLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItbG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2IzNzQ2N2EwMjcw
MDBkMGEyZTEyZmVhMDI1ODViOGJiYjVjNDcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JJbmRleExvYWQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHgueCA9IDIw
OwotICAgICAgICAgICAgeC55ID0gMTA7Ci0gICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAg
ICAgICAgICByZXR1cm4geFswXSAvIHhbMV0gKyB4WzUwMDBdOwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgNDAvMTAgKyA0MCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9y
LXh5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYTM5ODBhYWE4MTgx
ZDEwNDBhM2I0ZGE1NWY4YTMxOTM3OGNjMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9y
WFkKLVBBU1MgYXNzaWduT3BlcmF0b3JYWQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3IteHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVy
YXRvci14eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2NhNWE4YzA4OTA2
NWExMTBlZjI1OWQ0NzczOTE3ODgzZDllOTlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT54eS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2ls
b24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaWYg
KGJvb2wyKHRydWUsIGZhbHNlKS54eS54KQotICAgICAgICAgICAgICAgIHJldHVybiA0MjsKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAg
ICAgICAgICBpZiAoYm9vbDIodHJ1ZSwgZmFsc2UpLnl4LnkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDI0OwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJh
eigpIHsKLSAgICAgICAgICAgIGludDIgeCA9IGludDIoMjAsIDEwKTsKLSAgICAgICAgICAgIHgg
PSB4Lnh5OwotICAgICAgICAgICAgcmV0dXJuIHgueCAtIHgueTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImJhciIsIFtdKSwgMjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbXSksIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMuYXNzaWdu
T3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCBhLCBpbnQgYikgewotICAgICAgICAgICAgaW50MiB4OwotICAgICAgICAg
ICAgeC54eSA9IGludDIoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4geC54IC0geC55OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMCksIG1ha2VJbnQoMTApXSksIDEwKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMTApLCBtYWtlSW50KDIwKV0pLCAtMTApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vdmVybG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3Zlcmxv
YWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODVlZjdjMWZk
Y2I5NWU2NjZiZjZiZTc2ZTRkOGZhZDU5YWEyZjM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotUEFTUyBpbnRPdmVy
bG9hZFJlc29sdXRpb24KLVBBU1MgaW50T3ZlcmxvYWRSZXNvbHV0aW9uUmV2ZXJzZU9yZGVyCi1Q
QVNTIG5vdEVxdWFsc092ZXJsb2FkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vdmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTZhZTY0ZDQ1NDQwYzAyNDFjMzU3
MWE0NWE5ZTUxZjQ2YmRjYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
Pk92ZXJsb2FkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmludE92
ZXJsb2FkUmVzb2x1dGlvbiA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oaW50KSB7IHJldHVybiAxOyB9Ci0gICAgICAgIGludCBmb28odWludCkg
eyByZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9Ci0gICAg
ICAgIGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAxKTsKLX0KLQot
d2hsc2xUZXN0cy5pbnRPdmVybG9hZFJlc29sdXRpb25SZXZlcnNlT3JkZXIgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVy
biAzOyB9Ci0gICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBpbnQg
Zm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQy
KTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImJhciIsIFtdKSwgMSk7Ci19Ci0KLXdobHNsVGVzdHMubm90RXF1YWxzT3ZlcmxvYWQg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShGb28sIEZv
bykgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZTgxOGI1MDcyNzUyNjQ4YWIyYjc5ZDhmNTM3NmQ0OGUwY2M2NmU1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9w
bHVzLWVxdWFscy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQot
UEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBsdXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjEwOWI3MjQzY2FlNDJkOWVlNjUzNGZjODhkMjFiOTJiOWIxMDg5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBvdmVycmlkZSBzdWJzY3JpcHRzLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnBsdXNFcXVhbHMgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB4ICs9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSArIDQyKTsKLX0KLQotd2hsc2xUZXN0
cy5wbHVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHgg
Kz0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSArIDQyKTsKLX0K
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk3YjI0ZjMxMTg3NTRmZWRhMzE3
NjlkN2FlY2RmOWQ0ZjdkNzVkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHBvaW50ZXJU
b1BvaW50ZXIKLVBBU1MgcG9pbnRlclRvTWVtYmVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmI4NTUwYjVmZjYwYzZhYzI3Y2Q1NmM1ZjE4MWI3Y2M1Yzk3ZTFhMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wb2lu
dGVyVG9Qb2ludGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAg
dGhyZWFkIGludCogcCA9ICZ4OwotICAgICAgICAgICAgdGhyZWFkIGludCoqIHBwID0gJnA7Ci0g
ICAgICAgICAgICBpbnQqdGhyZWFkKnRocmVhZCBxcSA9IHBwOwotICAgICAgICAgICAgaW50IHJl
c3VsdCA9IDA7Ci0gICAgICAgICAgICB4ID0gNDI7Ci0gICAgICAgICAgICAqcCA9IDc2OwotICAg
ICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICAqKnBwID0gMzk7Ci0gICAgICAgICAg
ICByZXN1bHQgKz0geDsKLSAgICAgICAgICAgICoqcXEgPSA4MzsKLSAgICAgICAgICAgIHJlc3Vs
dCArPSB4OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotfQotCi13aGxzbFRlc3RzLnBvaW50ZXJUb01l
bWJlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQzIHg7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGZsb2F0KiB5ID0gJnhbMV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQzeDMgeDsKLSAgICAgICAgICAgICAgICB0aHJlYWQgZmxvYXQzKiB5ID0gJnhbMV07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3Rm
aXgtcHJlZml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4
LXByZWZpeC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDQz
OTY3MTQ0ZmI1ZTA5NzQwZmYxM2IzM2Y1ODIxZGY1Mzg3NDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3Rm
aXgtcHJlZml4LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQot
UEFTUyBwcmVmaXhQbHVzUGx1cwotUEFTUyBwcmVmaXhQbHVzUGx1c1Jlc3VsdAotUEFTUyBwb3N0
Zml4UGx1c1BsdXMKLVBBU1MgcG9zdGZpeFBsdXNQbHVzUmVzdWx0Ci1QQVNTIHByZWZpeE1pbnVz
TWludXMKLVBBU1MgcHJlZml4TWludXNNaW51c1Jlc3VsdAotUEFTUyBwb3N0Zml4TWludXNNaW51
cwotUEFTUyBwb3N0Zml4TWludXNNaW51c1Jlc3VsdAotUEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBs
dXNFcXVhbHNSZXN1bHQKLVBBU1MgbWludXNFcXVhbHMKLVBBU1MgbWludXNFcXVhbHNSZXN1bHQK
LVBBU1MgdGltZXNFcXVhbHMKLVBBU1MgdGltZXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTMyZjdjYzhlZTExNjZjYTAwYTFmMTU5NmI4OWY1ZmNmNDc1MmFjMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3Rm
aXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucHJlZml4UGx1c1Bs
dXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICArK3g7Ci0gICAgICAgICAgICByZXR1cm4g
eDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVz
dHMucHJlZml4UGx1c1BsdXNSZXN1bHQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gKyt4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDY1KTsKLX0KLQotd2hs
c2xUZXN0cy5wb3N0Zml4UGx1c1BsdXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4Kys7
Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0p
LCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHgrKzsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDY0KV0pLCA2NCk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4TWludXNNaW51cyA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIC0teDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDYzKTsKLX0KLQotd2hsc2xUZXN0cy5wcmVmaXhNaW51
c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0teDsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9z
dGZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4LS07Ci0gICAgICAg
ICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19
Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXNSZXN1bHQgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4geC0tOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSks
IDY0KTsKLX0KLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgeCArPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMucGx1c0VxdWFsc1Jl
c3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICs9IDQyOwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMu
bWludXNFcXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHggLT0gNDI7Ci0gICAgICAg
ICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0g
NDIpOwotfQotCi13aGxzbFRlc3RzLm1pbnVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4geCAtPSA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4
NSldKSwgMzg1IC0gNDIpOwotfQotCi13aGxzbFRlc3RzLnRpbWVzRXF1YWxzID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB4ICo9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAqIDQyKTsKLX0KLQotd2hsc2xUZXN0cy50
aW1lc0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggKj0g
NDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAqIDQyKTsKLX0KLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5MzM5NDJlODFm
ZDgxOTZlNjFiODAxNzMxZmE2MWM4OTMxN2ZlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZh
bHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci0KLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UyCi1QQVNT
IGRvbnRFdmFsdWF0ZVR3aWNlMwotUEFTUyBkb250RXZhbHVhdGVUd2ljZTQKLVBBU1MgZG9udEV2
YWx1YXRlVHdpY2U1Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlNgotUEFTUyBkb250RXZhbHVhdGVU
d2ljZTcKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U4Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlOQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlv
bi1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRp
b24tb3JkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjMjg3MTkxYTc3
ODM0YmVhODY3MWUzOTU1Nzg2YjljOGUzN2NiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZh
bHVhdGlvbi1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+ZXZhbHVhdGlvbiBvcmRlciBhbmQgdGltZXMu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdp
Y2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBi
YXIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAg
ICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMDsKLSAg
ICAgICAgICAgIGludFs0Ml0gYXJyOwotICAgICAgICAgICAgYXJyWzBdID0gNDI7Ci0KLSAgICAg
ICAgICAgIGludCByZXN1bHQgPSBhcnJbYmFyKCZ4KV07Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0ID09IDQyICYmIHggPT0gMTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTIgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnRbXSBhcnIsIHVp
bnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0
cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRyID0gKnB0
ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLQotICAgICAgICAgICAgdWludFszXSBp
bmRpY2VzOwotCi0gICAgICAgICAgICB1aW50WzRdWzRdWzRdIGFycjsKLQotICAgICAgICAgICAg
YXJyW2JhcihAaW5kaWNlcywgMCwgJngpXVtiYXIoQGluZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRp
Y2VzLCAyLCAmeCldID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gYXJyWzBdWzBdWzBdID09IDQy
Ci0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1swXSA9PSAxIAotICAgICAgICAgICAgICAgICYm
IGluZGljZXNbMV0gPT0gMiAKLSAgICAgICAgICAgICAgICAmJiBpbmRpY2VzWzJdID09IDMKLSAg
ICAgICAgICAgICAgICAmJiB4ID09IDQ7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UzID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnRbMl1bMl0gYmFzZSh0aHJlYWQgdWlu
dFtdIGFyciwgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWlu
dCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgYXJyW2luZGV4XSA9IG9sZDsKLSAgICAgICAgICAg
ICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHVpbnRbMl1bMl0gcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0WzBdWzBdID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgs
IHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAg
ICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgdWludCB4ID0gMTsKLQotICAgICAgICAgICAgdWludFszXSBpbmRpY2VzOwot
Ci0gICAgICAgICAgICB1aW50IHJlc3VsdCA9IGJhc2UoQGluZGljZXMsIDAsICZ4KVtiYXIoQGlu
ZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRpY2VzLCAyLCAmeCldOwotCi0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0ID09IDQyCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1swXSA9PSAxCi0gICAg
ICAgICAgICAgICAgJiYgaW5kaWNlc1sxXSA9PSAyIAotICAgICAgICAgICAgICAgICYmIGluZGlj
ZXNbMl0gPT0gMwotICAgICAgICAgICAgICAgICYmIHggPT0gNDsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTQgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhy
ZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAg
ICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludFsyXSBhcnI7Ci0KLSAgICAg
ICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIGFycltiYXIoJngpXSArPSA2NjY7Ci0K
LSAgICAgICAgICAgIHJldHVybiBhcnJbMV0gPT0gNjY2ICYmIHggPT0gMjsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2lj
ZTUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdGhyZWFk
IHVpbnQqIGdldFB0cih0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICAqcHRyID0gKnB0
ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludCByZXN1
bHQgPSAoKmdldFB0cigmeCkpKys7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSAzICYmIHJlc3Vs
dCA9PSAyOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLmRvbnRFdmFsdWF0ZVR3aWNlNiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICB0aHJlYWQgdWludCogZ2V0UHRyKHRocmVhZCB1aW50KiBwdHIpIHsKLSAg
ICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBwdHI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0g
ICAgICAgICAgICB1aW50IHJlc3VsdCA9ICsrKCpnZXRQdHIoJngpKTsKLSAgICAgICAgICAgIHJl
dHVybiB4ID09IDMgJiYgcmVzdWx0ID09IDM7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0
cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U3ID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHRocmVhZCB1aW50W10gZ2V0QXJyKHRo
cmVhZCB1aW50W10gdmFsdWUsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhy
ZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAg
ICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdWludCBnZXRWYWx1ZSh1aW50IHJldCwgdGhyZWFkIHVpbnRbXSBp
bmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRp
Y2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludFszXSBhcnI7Ci0gICAgICAgICAg
ICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAg
ICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAwLCAmeClbZ2V0VmFsdWUoMCwgQGFyciwgMSwgJngpXSAr
PSBnZXRWYWx1ZSg2NjUsIEBhcnIsIDIsICZ4KTsKLSAgICAgICAgICAgIHJldHVybiB4ID09IDQK
LSAgICAgICAgICAgICAgICAmJiBhcnJbMF0gPT0gMQotICAgICAgICAgICAgICAgICYmIGFyclsx
XSA9PSAyCi0gICAgICAgICAgICAgICAgJiYgYXJyWzJdID09IDMKLSAgICAgICAgICAgICAgICAm
JiB2YWx1ZVswXSA9PSA2NjY7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07
Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U4ID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZ2V0VmFsdWUodWludCByZXQsIHRocmVhZCB1
aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAg
ICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwot
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCB1aW50
W10gZ2V0QXJyKHRocmVhZCB1aW50W10gdmFsdWUsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWlu
dCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0g
PSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1
aW50IHggPSAxOwotICAgICAgICAgICAgdWludFszXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFd
IHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICBnZXRBcnIo
QHZhbHVlLCBAYXJyLCAwLCAmeClbYXJyW2dldFZhbHVlKDAsIEBhcnIsIDEsICZ4KV1dICs9IGdl
dFZhbHVlKDY2NSwgQGFyciwgMiwgJngpOwotCi0gICAgICAgICAgICByZXR1cm4geCA9PSA0Ci0g
ICAgICAgICAgICAgICAgJiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiBhcnJbMV0g
PT0gMgotICAgICAgICAgICAgICAgICYmIGFyclsyXSA9PSAzCi0gICAgICAgICAgICAgICAgJiYg
dmFsdWVbMF0gPT0gNjY2OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlOSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWludFsxXSogZ2V0VmFsdWUodGhyZWFkIHVp
bnRbMV0qIGFyciwgdGhyZWFkIHVpbnRbXSBpbmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWlu
dCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRpY2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAg
ICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gYXJyOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAg
ICAgdWludFsxXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAg
dmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICAoKmdldFZhbHVlKCZ2YWx1ZSwgQGFyciwgMCwg
JngpKVswXSArPSA2NjU7Ci0KLSAgICAgICAgICAgIHJldHVybiB4ID09IDIKLSAgICAgICAgICAg
ICAgICAmJiBhcnJbMF0gPT0gMQotICAgICAgICAgICAgICAgICYmIHZhbHVlWzBdID09IDY2NjsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpv
bWJpZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9t
Ymllcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhp
Z2gtem9tYmllcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWI0ZDQ0ZGZj
NjQ1ODA0NTI0NjFiMmQ4MTI2NWVmNzk3YzYyNjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlm
eS13cml0ZS1oaWdoLXpvbWJpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBmbG9h
dCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUs
IHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21w
dXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRo
cmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NHg0IG1hdDsKLSAgICBm
aWxsKCZtYXQsIDQpOwotCi0gICAgZmxvYXQ0IHZlYzsKLSAgICB2ZWNbMF0gKz0gbWF0WzBdWzBd
ICsgbWF0WzBdWzFdICsgbWF0WzNdWzJdOwotCi0gICAgZmxvYXQgdmFsdWUgPSA0MjsKLSAgICB2
YWx1ZSArPSB2ZWNbMF07Ci0KLSAgICBtYXRbMF1bMF0gKz0gKG1hdFswXVswXSArPSAodmFsdWUg
Kz0gbWF0WzBdWzBdKSk7Ci0KLSAgICBidWZmZXJbdWludCh0aHJlYWRJRC54KV0gPSBtYXRbMF1b
MF07Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3Vy
Y2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2Fp
dCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNv
bnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVm
ZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZm
ZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRl
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNv
bnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSA2NikK
LSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3Rh
cnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwNTZhM2FmYmZlM2Y5ZjA5NzU5Nzg2ZjBmMjYy
N2IzNzMxMzhhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRz
KDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZl
ciA6IHJlZ2lzdGVyKHUwKSkgewotICAgIGJ1ZmZlclswXSA9IDE7Ci0gICAgYnVmZmVyWzFdID0g
YnVmZmVyWzBdKys7Ci0KLSAgICBidWZmZXJbMl0gPSAxOwotICAgIGJ1ZmZlclszXSA9ICsrYnVm
ZmVyWzJdOwotCi0gICAgYnVmZmVyWzRdID0gMTsKLSAgICBidWZmZXJbNF0gKz0gNTsKLQotICAg
IGJ1ZmZlcls1XSA9IDE7Ci0gICAgYnVmZmVyWzVdICo9IDc7Ci0KLSAgICBpbnQgdG90YWwgPSAx
NDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpICs9IDIpIHsKLSAgICAgICAgdG90YWwg
Kz0gaTsKLSAgICB9Ci0gICAgYnVmZmVyWzZdID0gdG90YWw7Ci0KLSAgICB0b3RhbCA9IDE0Owot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICB0b3RhbCArPSBpOwot
ICAgIH0KLSAgICBidWZmZXJbN10gPSB0b3RhbDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RB
ZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNl
KCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAg
IGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJp
bmRpbmcgPSB7YnVmZmVyOiBidWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBb
YmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IGNvbXB1
dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAg
Y29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwot
ICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwot
ICAgIGlmIChyZXN1bHRzWzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1sxXSA9PSAxCi0gICAg
ICAgICYmIHJlc3VsdHNbMl0gPT0gMgotICAgICAgICAmJiByZXN1bHRzWzNdID09IDIKLSAgICAg
ICAgJiYgcmVzdWx0c1s0XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNbNV0gPT0gNwotICAgICAg
ICAmJiByZXN1bHRzWzZdID09IDM0Ci0gICAgICAgICYmIHJlc3VsdHNbN10gPT0gNTkpCi0gICAg
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgYnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlv
bigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NjA4NjI2NTFhOWJhM2UwMzVlOTliZmRm
NjdmZjk3NWQzOTJkMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG11dHVhbGx5UmVjdXJz
aXZlU3RydWN0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNp
dmUtc3RydWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1
Y3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzN2RmZThkYzIzYjdiZjY1
Y2NhZTg5YmI4N2FiOGZlZjlmOTVmNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3Rz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0g
ICAgICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cnVj
dCBCYXIgewotICAgICAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotICAgICAgICAKLX0KLQotLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTc2NjogVGhpcyBzaG91bGQgY29tcGlsZS4KLS8vIHdobHNsVGVzdHMu
bXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRlcnNCcm9rZW4gPSBhc3luYyAoKSA9Pgot
Ly8gewotLy8gICAgIGxldCBwcm9ncmFtID0gYAotLy8gICAgICAgICBzdHJ1Y3QgRm9vIHsKLS8v
ICAgICAgICAgICAgIHRocmVhZCBCYXIqIGJhcjsKLS8vICAgICAgICAgICAgIGludCBmb287Ci0v
LyAgICAgICAgIH0KLS8vICAgICAgICAgc3RydWN0IEJhciB7Ci0vLyAgICAgICAgICAgICB0aHJl
YWQgRm9vKiBmb287Ci0vLyAgICAgICAgICAgICBpbnQgYmFyOwotLy8gICAgICAgICB9Ci0vLyAg
ICAgICAgIGludCBmb28oKQotLy8gICAgICAgICB7Ci0vLyAgICAgICAgICAgICBGb28gZm9vOwot
Ly8gICAgICAgICAgICAgQmFyIGJhcjsKLS8vICAgICAgICAgICAgIGZvby5mb28gPSA1NjQ7Ci0v
LyAgICAgICAgICAgICBiYXIuYmFyID0gNTM7Ci0vLyAgICAgICAgICAgICByZXR1cm4gZm9vLmJh
ci0+YmFyIC0gYmFyLmZvby0+Zm9vOwotLy8gICAgICAgICB9Ci0vLyAgICAgYDsKLS8vICAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAw
KTsKLS8vIH0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJs
ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12
YXJpYWJsZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3
YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1
cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Jl
dHVybi1sb2NhbC12YXJpYWJsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NzBjMjgzZmU2OGI3NjVkZjYyNjAyZDczZDE2YjRiMjAwMjlmMzBmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9y
ZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci1mbG9hdCBjb3B5KGZsb2F0IHYpIHsKLSAgICBmbG9hdCBsb2NhbCA9IHY7Ci0gICAgcmV0dXJu
IGxvY2FsOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVy
dGV4T3V0IHJlc3VsdDsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJl
c3VsdC5zaGFkZSA9IGNvcHkoc2hhZGUpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9
IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBj
b25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlu
cHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE5YWFkMDU1NjUyYjBkNWJmMWI0OTdj
ZTcwNTI0YjYyZTQwOGNmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIHJldHVybklmCi1Q
QVNTIHJldHVyblJlZmVyZW5jZVRvU2FtZVBhcmFtZXRlcgotUEFTUyByZXR1cm5SZWZlcmVuY2VU
b1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Q
YXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlV2l0aE5lc3RpbmcK
LVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlCi1QQVNTIHJldHVybkludExpdGVy
YWxVaW50Ci1QQVNTIHJldHVybkludExpdGVyYWxGbG9hdAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlMzlmOGIxNDBhYTczMzljNGI4MjUzYzZkZmE0YTI3YTAyNjc2ZTg0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wg
dGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnJl
dHVybklmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsK
LSAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB5OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHkgPSA4
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oaW50IHgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgICAg
IGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7
Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDg7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAxMDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDEwKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCld
KSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg1KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDEwKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
NyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDgpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgMTApOwotCi0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAg
ICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA4OwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoeCA9PSA5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAx
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gODsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgeSA9IDk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDMpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNSldKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDYpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOCldKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDkpXSksIDkpOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg
eSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gODsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAx
MTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAg
ICAgICAgICBpZiAoeCA9PSA3KQotICAgICAgICAgICAgICAgIGludCB5ID0gODsKLSAgICAgICAg
ICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgNik7Ci19Owot
Ci13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5jZVRvU2FtZVBhcmFtZXRlciA9IGFzeW5jICgpID0+
IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBwbHVzKGJhcig1KSwgYmFyKDcpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBwbHVzKHRocmVhZCBpbnQqIHgsIHRocmVhZCBpbnQqIHkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAqeCArICp5OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGlu
dCogYmFyKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgMTQpOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VU
b1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKmJhcigxMCkgKyAqYmF6KDIwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBp
bnQqIGJhcihpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmF6KGludCB5KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzApOwotfTsKLQotd2hs
c2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlciA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhib29sIGNvbmRpdGlvbikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICpiYXIoY29uZGl0aW9uLCAxLCAyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRocmVhZCBpbnQqIGJhcihib29sIGNvbmRpdGlvbiwgaW50IGEsIGludCBiKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uID8gJmEgOiAmYjsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSks
IDIpOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb0xvY2FsVmFyaWFibGVXaXRo
TmVzdGluZyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYmFyKCkgKyAqYmF6KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgYSA9IDIwOwotICAgICAgICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhyZWFkIGludCogYmF6KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGEgPSAy
MjsKLSAgICAgICAgICAgIHJldHVybiAmYTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7
Ci19OwotCi13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZSA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAqYmFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJl
YWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgYSA9IDQyOwotICAgICAg
ICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdo
bHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbFVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28oKSB7IHJldHVybiA0MjsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdo
bHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbEZsb2F0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gImZsb2F0IGZvbygpIHsgcmV0dXJuIDQyOyB9IjsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4
YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkZWI4NDMxMmZkNTAwYmE1NTEyYzc3NmRlYWRmMWQzNDYxZWY3
M2NmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0xMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
dmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9z
aXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZv
byA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZs
b2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9
IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFk
ZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0g
ICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6
ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIs
IGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0
ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29u
c3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAg
ICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsK
LSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3Zl
cnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0
b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjog
MCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0
YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDog
ImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3Mo
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwg
MSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xMS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRk
YmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS1leHBlY3RlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWUxZjM1YzU4NDU1NjFmMjQxNWVlZGQ1ZmRi
MWM5Mjc2ZGNlN2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICBy
ZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBG
b28gZjsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxl
OiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0g
InRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRG
YWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAx
NX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0g
bnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZv
cm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0
ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTEyLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTEyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNDRiOTZm
NDc2ZDA4M2EzY2NmNTJmMGU1NGMyZDhiYjJjY2M5MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0
ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDog
U1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB2Ci19Ci1mcmFnbWVudCBmbG9hdDQg
ZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0
IDAgewotICAgIEZvbyBmID0gRm9vLnY7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2
ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxT
dGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0
fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2Ny
aXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTog
MX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4
dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDog
InN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRh
Y2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRi
OTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0YjM0MTIyOTRmMDAzNTk3MmYyMTdmYTQyMzA3MWQxOGQ2YTQyYzVkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hh
ZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBpbnQ7Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAg
IHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAK
LXR5cGVkZWYgRm9vID0gaW50OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxv
YXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25z
dCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAg
IGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19Owot
ICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFy
cmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRi
ZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTZkOTM0N2QxMzkzODgzZTZhZjI2OTE4OTQy
MzAwM2JmN2Y2ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsK
LX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0
IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRl
OiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lu
cHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owot
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
OF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
NV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9y
ID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXco
KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9Owot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVW
aWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9y
ZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQg
PSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVu
dHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE1LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYx
MThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODk0MmI3Mjc1OTg0ODI5ZGM5OGI0MzhmZGJlYjEwNDQ4NTdkZWNkOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNv
dXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJl
dHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVu
dW0gRm9vIHsKLSAgICB4Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9h
dDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0
IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAg
Y29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVu
dFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRl
cywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0
OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Nl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25z
dCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9Owot
ICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFp
bkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3Vy
cmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAs
IGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFj
aG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJj
bGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlw
dG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNv
bnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShy
ZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEs
IDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJm
ZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwMTUwOTA4NWE3NTA4MTA2ZWJkNmZjNzY2NzM0
MDg4ZTkzNmE5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0
dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0
IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0
dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwot
fQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1
MWIxNWU3Njc3YWRmMmQwZjIxY2M3NzlkYmVjMmJlMjQ2Y2I4ZDkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBg
Ci10eXBlZGVmIEZvbyA9IGZsb2F0OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9z
aXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZv
byA9IGZsb2F0OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geCA9IDE7Ci0gICAgcmV0
dXJuIGZsb2F0NCh4LCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21l
bnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJp
cCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3Vs
bE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1
bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29s
b3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0g
ICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2Us
IGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNv
bG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAx
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xOC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmM4Yjg3YWY1ODljNWUzYzhmMDMx
NTYyOGEwY2I3NzI4Njc4NDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAg
ZmxvYXQgeDsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7
Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgZmxv
YXQgeDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIGY7Ci0gICAgZi54ID0gMTsK
LSAgICByZXR1cm4gZmxvYXQ0KGYueCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZy
YWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJh
Z21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZl
cnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0
OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2
ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5W
RVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0
OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJl
U3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUg
PSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
VmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJl
ZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0
IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTktZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcyNTA5ZTI4YWJh
NWY2NTg0N2QyY2ZiYWViMWZhMDE5MDk0YjllYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9v
IHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4ID0g
MCwKLSAgICB5ID0gMQotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBpbnQgeSA9IGludChG
b28ueSk7Ci0gICAgcmV0dXJuIGZsb2F0NChmbG9hdCh5KSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9w
b2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9
IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0
ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0
ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwg
YXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsK
LSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIu
ZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7
Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkN2Iz
NjczZWZjMGM3Zjg4NmViMzVkN2EyM2EwNDA2NWU0NzE5YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdt
ZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVy
KCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmlt
aXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVu
Y2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4
QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5E
ZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3
YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9y
QXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2Qx
ZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTIwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkY2Jm
ZjVmMGUzZmIxODJiZjlhOWZlZDZjMWI2MGQ0ODIyZmUzZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAK
LXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZy
YWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxv
YXQ0KDEsIDEsIDEsIDEpOwotfQotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVy
KCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3
MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk0M2VlMzZlZGRiZmY3ZTA1MDA4ZTVjOTdiODA1MjFhMThlODNkN2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIxLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZl
cnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28g
PSBpbnQ7Ci10eXBlZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2
aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIwZDgyYzEzNDhjOTY1OGQxYWM0
NzlhYWY4ODQzMWIyMjdiY2UzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLXN0cnVjdCBGb28gewotICAgIGlu
dCB4OwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEs
IDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9s
b2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwg
dmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgp
OwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7
Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5Yjg4OTMxZWE3YjlmOGVlOTVjM2EwZTFhNGI3MzRjOTBiZTc0NGU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsK
LSAgICB4Ci19Ci1lbnVtIEZvbyB7Ci0gICAgeAotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVy
biBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4
YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJjNjNkYTY2NDVhZDBkMWQzMmNkNTQ4NGU0MjM1ZjdiOGYzMGY5ZDcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIHsKLSAgICByZXR1cm4gMTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NChzYXR1cmF0ZSgzLCA0KSwgc2F0dXJhdGUoMiksIDEsIDEpOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2Ug
PSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYs
IGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07
Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVs
bDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRl
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yNS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQ2ZGY1NmY5ZDhmOWMzNzZl
MzZiOTE3OGZjMmQ1Yjg0MzRlMTcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0
IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRp
b24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyMihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
ZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVU
b3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3Rh
dGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2Nv
cGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
eCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNz
ZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0yNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDI1ZTkzMGY4N2ZmZWE2
MmIyNzdhODM3YzlmZWE0N2I4NzViNGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0
aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZk
ZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjU0MmZlZTU1NTZlOTU0MTU4MzliYmVhYWIyYWJhYTk3NjVjMjQ5OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNl
ID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbiwgYm9vbCBpc0ZvbnRGYWNlIDogU1Zf
SXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmZGNmOTIxNWRjYzhhOTg3ZDk4OTA0ZmJjY2M3MjQ1NWM2ZTM3N2IwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNo
YWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7
Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsK
LSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZp
Y2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVu
dFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAK
LSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0
NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmlj
ZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2Vk
KCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy00LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmNhYmJjYzE4ODRkYjk2NjQzZDc4OTg2NWRh
YWRkMTc1Zjk0NjczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotdmVy
dGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6
IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyB4OwotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0
UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
UEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzlhOGI4NWI5OGE0MjYzOTNjNzE3
MTliMTE2Y2E5NzlkYTllMzdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAg
IGludCB4OwotfQotCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2Nh
dGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAx
NiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkK
LSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy02Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDgy
YWZhNTAyNGEzOGM5MjE3ZjYxZTUxNzQ3OGQzMzlhNGQ3NDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAot
ZW51bSBGb28gewotICAgIHYKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICBGb28geCA9IEZvby52OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy03LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZk
ZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNzdkYjY0MjUxOTc0MmNmZDQ1YzFjOTI1
M2M2OTQyOGQ3MTYwZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxv
YXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
ZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAi
dHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZh
Y2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zv
cm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1
fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBu
dWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25z
dCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9y
bWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmln
dXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0g
ICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6
IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNv
bnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29k
ZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQwNWFkYzk4YzUwYjg3NDM2MjNhM2E4MjBjMjcyY2Zh
YzhhYjU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy04Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQg
c2F0dXJhdGUoZmxvYXQgeCkgewotICAgIHJldHVybiAwOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAw
IHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9
ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250
RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9
IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1
dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2Us
IGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNv
bG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAx
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAg
IHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
IiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy05LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICsw
LDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4M2Y1M2M3ODRlOWFh
N2RmODg1OGZjOGRkN2RjZmZjZDk5NGJjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLXR5cGVkZWYgYm9vbDIgPSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBm
cmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZy
YWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2
ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1h
dDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNl
dDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JT
dGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0
dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3
MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5ZDg1NWU4
NGU5ZTQ1NjkwMmZkOWQ4MTFkZDg1OTUwMzQxNWYwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Q
b3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hh
ZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjI0NDc2N2JlMTdiMWJjOGJlY2ZhYTVj
YTVmN2Y1NzhlY2MxMTQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBzZXR0ZXJXaXRoTWF0
Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWQKLVBBU1Mgc2V0dGVyV2l0
aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZAotUEFTUyByZWN1cnNpdmVTZXR0ZXJzCi1QQVNTIGxvbmVT
ZXR0ZXIKLVBBU1MgbG9uZVNldHRlclBvaW50ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTA0MDUwOWVlNmFjMjE3NDkyYjNlYmQyNWI1ZmEwYTc1YjE1ZGI4OS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJXaXRoTWF0Y2hlZFR5cGUg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVy
YXRvci5mb28oaW50KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNTsKLSAgICAgICAg
fQotICAgICAgICBpbnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAgICAg
ICAgICAgaW50IHg7Ci0gICAgICAgICAgICB4LmZvbyA9IDQyOwotICAgICAgICAgICAgcmV0dXJu
IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcigpIHsKLSAgICAgICAgICAgIGludCB4Owot
ICAgICAgICAgICAgcmV0dXJuIHguZm9vOwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIHN0cnVjdCBCYXIgeyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKEZv
bykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTM0OwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgQmFyIG9wZXJhdG9yLmZvbz0oQmFyLCBpbnQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJhcigpOwotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3Zlcmxv
YWRGaXhlZCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
c3RydWN0IEJhciB7IH0KLSAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhCYXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiA1MzQ7Ci0gICAgICAgIH0KLSAgICAgICAgQmFyIG9wZXJhdG9y
LmZvbz0oQmFyLCBpbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBCYXIoKTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAg
ICAgICAgIHJldHVybiBiYXIuZm9vOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0g
ICAgICAgICAgICBCYXIgYmFyOwotICAgICAgICAgICAgYmFyLmZvbyA9IDUyOwotICAgICAgICAg
ICAgcmV0dXJuIGJhci5mb287Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5y
ZWN1cnNpdmVTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgaW50
IHk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RydWN0IEJhciB7Ci0gICAgICAgICAgICBpbnQgYTsK
LSAgICAgICAgICAgIGludCBiOwotICAgICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvci5jKEJh
ciBiYXIpIHsgcmV0dXJuIGJhci5hOyB9Ci0gICAgICAgIEJhciBvcGVyYXRvci5iYXIoRm9vIGZv
bykgeyBCYXIgYjsgYi5hID0gZm9vLng7IGIuYiA9IGZvby55OyByZXR1cm4gYjsgfQotICAgICAg
ICBCYXIgb3BlcmF0b3IuYz0oQmFyIGJhciwgaW50IG5ld3ZhbCkgeyBiYXIuYSA9IG5ld3ZhbDsg
cmV0dXJuIGJhcjsgfQotICAgICAgICBGb28gb3BlcmF0b3IuYmFyPShGb28gZm9vLCBCYXIgbmV3
dmFsKSB7IGZvby54ID0gbmV3dmFsLmE7IGZvby55ID0gbmV3dmFsLmI7IHJldHVybiBmb287IH0K
LSAgICAgICAgaW50IGYoKSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9v
LnggPSBmb28ueSA9IDM7Ci0gICAgICAgICAgICBmb28uYmFyLmMgPSA4OwotICAgICAgICAgICAg
cmV0dXJuIGZvby54KjEwICsgZm9vLnk7Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xU
ZXN0cy5sb25lU2V0dGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb289KGludCwgaW50KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5sb25lU2V0dGVyUG9pbnRlciA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB0aHJlYWQgaW50KiBvcGVyYXRvci5mb289KHRocmVhZCBpbnQqIHB0ciwgaW50KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwdHI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJy
YXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0
MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTczYWNkNDgyOWYzMTM3Njk0OGU5Y2MwYzZkYzc4MDFmZDNkYWU1MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBpbnRbXSBhcnJheSwgaW50
IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgYXJyYXlbaV0gPSB2YWx1ZTsKLSAgICB9Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGludFs0Ml0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0
dXJuOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIGlmIChhcnJheVtpXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGFycmF5WzBdID0gNTE3OwotICAgIGlmIChhcnJheVswXSAhPSA1MTcpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHRocmVhZCBpbnRbXSBhcnJheVB0ciA9IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQ
dHIubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnRbNDJdIGFycmF5MjsK
LSAgICBhcnJheTIgPSBhcnJheTsKLSAgICBpZiAoYXJyYXkyLmxlbmd0aCAhPSA0MikKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChhcnJheTJbMF0gIT0gNTE3KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmaWxsKGFycmF5UHRyLCAxMzM3KTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJh
eVB0ci5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXlQdHJbaV0gIT0gMTMzNykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDEzMzcpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGFycmF5MlswXSAhPSA1MTcpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoYXJyYXkyLmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwot
ICAgIGZvciAodWludCBpID0gMTsgaSA8IGFycmF5Mi5sZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoYXJyYXkyW2ldICE9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVm
ZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNp
emUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgSW50MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwg
R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAg
Y29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNC
dWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1
ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1
dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAg
Y29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5
bmMoKTsKLSAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRz
QXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAg
ICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmODdiNWM2ODE1OGVm
NDM3OTg4NzBiNzBhZTUyOTJjNTNmZjE0NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXIt
c2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNT
IHNpbXBsZVByb3BlcnR5R2V0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zaW1wbGUtZ2V0dGVyLXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4
OTMzZmU1OGM1MmE2NDYwYzE0OGFlYjJkYzdkNDQxM2JhZTFkMzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFy
bmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1wbGVQcm9w
ZXJ0eUdldCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3Ry
dWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby54ID0g
NzgwNDsKLSAgICAgICAgICAgIHJldHVybiBmb28ueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NzgwNCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmNGU4ZWNkNDU1MTA1NWMzYTQ4OTUw
YmY3YzE0M2FjMDc1NzBjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVVucmVhY2hhYmxl
Q29kZQotUEFTUyBzaW1wbGVOb1JldHVybgotUEFTUyBzaW1wbGVSZWN1cnNpdmVTdHJ1Y3QKLVBB
U1Mgc2ltcGxlUmVjdXJzaW9uCi1QQVNTIHNpbXBsZVJlY3Vyc2lvbjIKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOGRjM2JmYjU0NzI3MTkxMWY5ZDkwZmIwZDAwNTg0MDQ0NDVhMmUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zaW1wbGUtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJu
ZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZVVucmVh
Y2hhYmxlQ29kZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZU5vUmV0dXJuID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbCgiaW50IGZvbygpIHsgfSIpOwotfQotCi13aGxzbFRlc3RzLnNpbXBs
ZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIEZvbyBm
b287Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVJl
Y3Vyc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZvbyh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
c2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpIHsKLSAgICAgICAgICAgICAgICBm
b28oeCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB2b2lkIGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb28o
YmFyKHgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTRiMThhODg4OTY1MmJjY2FhNzBkYmI0Yzk3YjIzNjBlZTUzMDg2Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc2ltcGxlV2hpbGUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODA3MTFjMThlMTZjZjc2NjZmNzJlNmU4MmVjMmZkZjBlMmI3ZjdkYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hM
U0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
LnNpbXBsZVdoaWxlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoeCA8IDEzKQot
ICAgICAgICAgICAgICAgIHggPSB4ICogMjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgMTYpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDQ3ZWJmZjZiN2NiMTJmNDdlYzgwZWVjM2M4OWI0
YjgwMTgzMWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHNtYWxsVHlwZXNT
aG91bGRGYWlsCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVy
LXRoYW4tMzItYml0LXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxl
ci10aGFuLTMyLWJpdC10eXBlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
MDU2MGE3Y2I3ZTllYTRiY2I4ODI0YzQzYTIxY2I0YTdjZTkzMGIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
bWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPnNtYWxsZXIgdGhhbiAzMi1i
aXQgdHlwZXMgc2hvdWxkIG5vdCBwYXJzZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5zbWFsbFR5cGVzU2hvdWxkRmFpbCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVjaGFyIHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgeDsKLSAgICAg
ICAgfQotICAgIGApOyAKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2hvcnQgeDsKLSAgICAgICAgfQotICAgIGApOyAK
LQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdXNob3J0IHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBj
aGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGhh
bGYgeDsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Bh
cnNlLWJpbmQtZ3JvdXAtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Mz
MTdmMDFmMWRiZDRjY2I0MmQzNjJlY2RjOTBmZmY1MmE4MDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFy
c2UtYmluZC1ncm91cC0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1
dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgYnVm
ZmVyWzBdID0gMTc7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywg
dHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6
ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZm
ZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotICAgIGNvbnN0IGJ1ZmZlcjIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7
YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1ZmZlcjEsIHNpemV9fSwge2JpbmRpbmc6
IDEsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIyLCBzaXplfX1dfSk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBh
c3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyMi5tYXBS
ZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBd
ID09IDE3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIudW5tYXAoKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91
cC0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1n
cm91cC0zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNl
LWJpbmQtZ3JvdXAtMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAt
My5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRiZjE1ODU2ODFlZTBlOTI5NzY4ZGYx
MDU0OGE4YzdlZDNlZTBjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVt
dGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9h
dFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUxKSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiAwLCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVC
dWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7
bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHJlc291cmNl
OiB7YnVmZmVyOiBidWZmZXIxLCBzaXplfX0sIHtiaW5kaW5nOiAxLCByZXNvdXJjZToge2J1ZmZl
cjogYnVmZmVyMiwgc2l6ZX19XX0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwot
ICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJl
c3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlcjIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29u
c3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVm
ZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAxNykKLSAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICBidWZm
ZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTkzODIyNGMzZjlkNGNiOWMxNDI3N2YzYjU0ZmZmMmYxYjZmOTVjYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQg
Y29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCwgc3BhY2Ux
KSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXQsIGJpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZm
ZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoe2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZTog
e2J1ZmZlcjogYnVmZmVyMSwgc2l6ZX19XX0pOwotICAgIGNvbnN0IGJpbmRHcm91cDIgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7
YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1ZmZlcjIsIHNpemV9fV19KTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5D
b21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRl
UGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAy
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFu
ZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIy
Lm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJy
YXlbMF0gPT0gMTcpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAg
dGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyMi51bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBh
c3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjZlOTM1OGY1OWRlYjFlOWFm
NzMwNjM0NDY3OGI4ZDIzYzAyYTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHN0b3JlTnVsbAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWVkMmZkMzIyYjJlNzUxOTc3NTUyNDgzNWMzN2Y0MjgzZDcxMDcxNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc3RvcmVOdWxsID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQg
Zm9vKCkgeyAqbnVsbCA9IDQyOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJv
cGVybHktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2Jl
N2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUt
dG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM4OTNjNTkzZTFiYzBlZWY5ZDg0
ZmMxZDQwYTRiYzhmMWU0YjhkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBk
YXRlcy1wcm9wZXJseS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXN0cnVj
dCBCYXIgewotICAgIGludCB4OwotICAgIGZsb2F0IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXN0cnVj
dCBGb28gewotICAgIEJhciBiYXI7Ci0gICAgQmFyIGJhcjI7Ci19Ci0KLXRocmVhZCBGb28qIHB0
cigpIHsKLSAgICBGb28gbG9jYWw7Ci0gICAgcmV0dXJuICZsb2NhbDsKLX0KLQotdmVydGV4IFZl
cnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0
aHJlYWQgRm9vKiBwID0gcHRyKCk7Ci0gICAgcC0+YmFyMi55ID0gMS4wOwotICAgIGZsb2F0IHZh
bHVlID0gcC0+YmFyMi55OwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
cmVzdWx0LnNoYWRlID0gdmFsdWU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJp
YnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07
Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9y
bS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlv
dXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNp
emU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3Vy
Y2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5
b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDNhNTIxMTMwOWYwNmNiZDgzOWIwZGE2ZGFmZWI0MDQ0MTZkZGFk
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDQgKzAsMCBAQAotCi1QQVNTIGVtcHR5U3RydWN0Ci1QQVNTIHNldHRpbmdBbkFycmF5SW5zaWRl
QVN0cnVjdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhkMGY2ODYwNDdlZWUxZjY0NWU1OTc3MDI1NDBjMDYxMDA2OTE1Yjcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZW1wdHlTdHJ1Y3QgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQot
ICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgVGhpbmd5IHRoaW5neTsK
LSAgICAgICAgICAgIHJldHVybiA0NjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDYpOwotfTsK
LQotd2hsc2xUZXN0cy5zZXR0aW5nQW5BcnJheUluc2lkZUFTdHJ1Y3QgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAg
IGludFsxXSBhcnJheTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGJhciA9ICZmb287
Ci0gICAgICAgICAgICBiYXItPmFycmF5WzBdID0gMjE7Ci0gICAgICAgICAgICByZXR1cm4gZm9v
LmFycmF5WzBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMSk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51
bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk1ZTBiZjYwZTUxOGI5ZjliNGNkMjAzNGY0MzU3MDg2NzA3OWU3NzguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHN3aXRjaEJyZWFr
Ci1QQVNTIHVua25vd25WYXJpYWJsZUluRG90RXhwcmVzc2lvbgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQt
Y2xhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51
bWVyYXRpb24tZWxlbWVudC1jbGFzaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMTcyODk0M2MxNTg2NzViY2JkMTU3ZTA1YTdjOGMwNDRjNGFlZTAyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLnN3aXRjaEJyZWFrID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgc3RydWN0IEZvbyB7IGludCB4OyB9Ci0gICAgICAgIGVudW0gQmFyIHsgeCA9IDQy
LCB5ID0gMCB9Ci0gICAgICAgIGludCBmKCkgewotICAgICAgICAgICAgRm9vIEJhcjsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoQmFyLngpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZiIsIFtdKSwgMCk7Ci19Ci13
aGxzbFRlc3RzLnVua25vd25WYXJpYWJsZUluRG90RXhwcmVzc2lvbiA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkg
ewotICAgICAgICAgICAgICAgIGludCBhID0gdmFyaWFibGUueDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmNlNTRjMjI0ZmRhM2FmNzU2OTA2OTczZjFlYjY3NTNl
YTJiYzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc3dpdGNoQnJlYWsKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3N3aXRjaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTU0YTBiOGYwOTY3
MDRkOWZkMzI0MjMzYWNhOWM1ZmNkODk5NzM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2guaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5zd2l0Y2hCcmVhayA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dCByZXN1bHQgPSAwOwotICAgICAgICAgICAgc3dpdGNoICh4KSB7Ci0gICAgICAgICAgICBjYXNl
IDc2NzoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIDY5OgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNzY3KV0pLCAyNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY5KV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgNDkp
OwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOGZhMjdmNjlhMzg1NjhhMzE5
NWJmOWI4ODg5M2RkM2E2MWIyYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHRlcm5hcnlF
eHByZXNzaW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5
LXNwZWMtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10
ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MjRjZTY1N2M5ZmY3NGI3
YWM4MjdhM2Q5MTFhZmZjYjFmNWMxZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgaW50IGJpdCBtYXRoLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLnRlcm5hcnlFeHByZXNzaW9uID0gYXN5bmMgKCkgPT4gewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4geCA8IDMgPyA0IDogNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFy
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCA8IDEwID8gMTEgOiB4IDwg
MTIgPyAxNCA6IDE1OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooaW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAzIDwgNCA/IHggOiA1OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNzY3KV0pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFttYWtlSW50KDgpXSksIDEx
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFy
IiwgW21ha2VJbnQoOSldKSwgMTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMCldKSwgMTQpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMSld
KSwgMTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJiYXIiLCBbbWFrZUludCgxMildKSwgMTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMyldKSwgMTUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbbWFrZUlu
dCgxNCldKSwgMTQpOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAg
ICAgICAgICAgICAgKDQgPCA1ID8geCA6IDcpID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAg
ICBpbnQgeTsKLSAgICAgICAgICAgICAgICAoMCA8IDEgPyB4IDogeSkgPSA0MjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAg
ICAgICAgICAgICB0aHJlYWQgaW50KiB6ID0gJigwIDwgMSA/IHggOiB5KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gKno7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgaW50IHk7Ci0gICAgICAg
ICAgICAgICAgdGhyZWFkIGludFtdIHogPSBAKDAgPCAxID8geCA6IHkpOwotICAgICAgICAgICAg
ICAgIHJldHVybiAqejsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAgICBmbG9hdCB5OwotICAgICAg
ICAgICAgICAgIHJldHVybiA0IDwgNSA/IHggOiB5OwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA0IDwgNSA/IDYgOiA3LjA7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU2Y2Q5YjBiMjQ2MWQ5ZTU2ZjVhNzQ4OGRhNTE4ZjgyN2Q5MjJkMmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDM3ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSA1IGR1cGxpY2F0
ZSB0ZXN0IG5hbWVzOiAiUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4iLCAiUmV0dXJu
IGFuIGV4cGVjdGVkIGludCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUu
IiwgIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0NHg0IHZhbHVlLiIKLQotUEFTUyBSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4K
LVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4
cGVjdGVkIGludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4KLVBBU1MgVXBsb2FkIGFuZCByZXR1
cm4gYSBib29sIHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFT
UyBVcGxvYWQgbWFueSBib29sIHZhbHVlcyBhbmQgcmV0dXJuIGEgY2FsY3VsYXRlZCByZXN1bHQu
Ci1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBl
eHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBl
Y3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3Rl
ZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNT
IFVwbG9hZCBhbmQgY2FsY3VsYXRlIGEgcmVzdWx0IGZyb20gdmFyaWVkIGFyZ3VtZW50IHR5cGVz
LgotUEFTUyBTdG9yZSBpbnRvIGEgZmxvYXQ0W10uCi1QQVNTIFVwbG9hZCBhIGludFtdIGFuZCBz
dG9yZSBpbnRvIGEgaW50W10uCi1QQVNTIFVwbG9hZCBhIGZsb2F0NHg0W10gYW5kIHN0b3JlIGlu
dG8gYSBmbG9hdDR4NFtdLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUu
Ci1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDR4NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFu
IGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0
eDQgdmFsdWUuCi1QQVNTIENvZGUgc2hvdWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3IgaXMg
cmVwb3J0ZWQuCi1QQVNTIFN1Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwg
aXMgYW4gZXJyb3IuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0
LWhhcm5lc3MtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVz
cy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwODM5ODdhOTJiMTFm
YmU2NjFjNmMyMGY0ZjE1MDU4Mjc0MjMwYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10
ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi1jb25zdCBudW1lcmljU2NhbGFyVHlwZXMgPSBb
ImludCIsICJ1aW50IiwgImZsb2F0Il07Ci0KLWNvbnN0IG51bWVyaWNTY2FsYXJGdW5jcyA9IHsK
LSAgICAiaW50IjogY2FsbEludEZ1bmN0aW9uLAotICAgICJ1aW50IjogY2FsbFVpbnRGdW5jdGlv
biwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLQotY29uc3Qgc2NhbGFyQXJn
TWFrZXJzID0gewotICAgICJib29sIjogbWFrZUJvb2wsCi0gICAgImludCI6IG1ha2VJbnQsCi0g
ICAgInVpbnQiOiBtYWtlVWludCwKLSAgICAiZmxvYXQiOiBtYWtlRmxvYXQKLX07Ci0KLWNvbnN0
IGFycmF5VHlwZUxlbmd0aHMgPSB7Ci0gICAgImZsb2F0NCI6IDQsCi0gICAgImZsb2F0NHg0Ijog
MTYKLX07Ci0KLWNvbnN0IGFycmF5RnVuY3MgPSB7Ci0gICAgImZsb2F0NCI6IGNhbGxGbG9hdDRG
dW5jdGlvbiwKLSAgICAiZmxvYXQ0eDQiOiBjYWxsRmxvYXQ0eDRGdW5jdGlvbiwKLX07Ci0KLWNv
bnN0IGFycmF5QXJnTWFrZXJzID0gewotICAgICJmbG9hdDQiOiBtYWtlRmxvYXQ0LAotICAgICJm
bG9hdDR4NCI6IG1ha2VGbG9hdDR4NAotfTsKLQotY29uc3QgZmxvYXQ0eDRleHBlY3RlZCA9IFsw
LCA0LCA4LCAxMiwgMSwgNSwgOSwgMTMsIDIsIDYsIDEwLCAxNCwgMywgNywgMTEsIDE1XTsKLWNv
bnN0IGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQgPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV07Ci1jb25zdCBmbG9hdDRleHBlY3RlZCA9IFswLCAx
LCAyLCAzXTsKLQotbGV0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5saXRlcmFscyA9
ICgpID0+IHsKLSAgICBjaGVja0Jvb2xzKCJSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4i
LCAicmV0dXJuIHRydWU7Iik7Ci0gICAgY2hlY2tBcnJheXMoImZsb2F0NCIsICJyZXR1cm4gZmxv
YXQ0KDAsIDEsIDIsIDMpOyIsIFtdLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmlj
U2NhbGFycygicmV0dXJuIDQyOyIsIFtdLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLnNpbmdsZUFy
Z3VtZW50ID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMoIlVwbG9hZCBhbmQgcmV0dXJuIGEgYm9v
bCB2YWx1ZS4iLCAicmV0dXJuIGluMDsiLCBbdHJ1ZV0pOwotICAgIGNoZWNrQXJyYXlzKCJmbG9h
dDQiLCAicmV0dXJuIGluMDsiLCBbZmxvYXQ0ZXhwZWN0ZWRdLCBmbG9hdDRleHBlY3RlZCk7Ci0g
ICAgY2hlY2tOdW1lcmljU2NhbGFycygicmV0dXJuIGluMDsiLCBbNDJdLCA0Mik7Ci19OwotCi13
aGxzbFRlc3RzLm1hbnlBcmd1bWVudHMgPSAoKSA9PiB7Ci0gICAgY2hlY2tCb29scygiVXBsb2Fk
IG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBhIGNhbGN1bGF0ZWQgcmVzdWx0LiIsCi0gICAg
ICAgICJyZXR1cm4gaW4wICYgaW4xICYgaW4yICYgaW4zICYgaW40ICYgaW41ICYgaW42ICYgaW43
OyIsCi0gICAgICAgIFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlXSk7Ci0KLSAgICBsZXQgYm9keSA9ICJyZXR1cm4gZmxvYXQ0KGluMC54LCBpbjEueSwgaW4y
LnosIGluMy53KTsiCi0gICAgbGV0IGFyZ3MgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDQ7ICsraSkKLSAgICAgICAgYXJncy5wdXNoKGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja0Fy
cmF5cygiZmxvYXQ0IiwgYm9keSwgYXJncywgZmxvYXQ0ZXhwZWN0ZWQpOwotCi0gICAgYm9keSA9
IGByZXR1cm4gaW4wICsgaW4xICsgaW4yICsgaW4zICsgaW40ICsgaW41ICsgaW42ICsgaW43O2A7
Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycyhib2R5LCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10s
IDI4KTsKLX07Ci0KLXdobHNsVGVzdHMuYnVmZmVyc1dpdGhPbmVWYWx1ZSA9ICgpID0+IHsKLSAg
ICBjb25zdCBib2R5ID0gYHJldHVybiBpbjBbMF07YAotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQi
LCBib2R5LCBbW2Zsb2F0NGV4cGVjdGVkXV0sIGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja051
bWVyaWNTY2FsYXJzKGJvZHksIFtbNDJdXSwgNDIpOwotfTsKLQotd2hsc2xUZXN0cy5tdWx0aXBs
ZUJ1ZmZlckFyZ3VtZW50cyA9ICgpID0+IHsKLSAgICBsZXQgYm9keSA9IGAKLSAgICBmbG9hdCB4
ID0gaW4wWzBdLnggKyBpbjBbMV0ueCArIGluMFsyXS54ICsgaW4xLnggKyBpbjJbMF0ueDsKLSAg
ICBmbG9hdCB5ID0gaW4wWzBdLnkgKyBpbjBbMV0ueSArIGluMFsyXS55ICsgaW4xLnkgKyBpbjJb
MF0ueTsKLSAgICBmbG9hdCB6ID0gaW4wWzBdLnogKyBpbjBbMV0ueiArIGluMFsyXS56ICsgaW4x
LnogKyBpbjJbMF0uejsKLSAgICBmbG9hdCB3ID0gaW4wWzBdLncgKyBpbjBbMV0udyArIGluMFsy
XS53ICsgaW4xLncgKyBpbjJbMF0udzsKLQotICAgIHJldHVybiBmbG9hdDQoeCwgeSwgeiwgdyk7
YDsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9keSwgW1tmbG9hdDRleHBlY3RlZCwgZmxv
YXQ0ZXhwZWN0ZWQsIGZsb2F0NGV4cGVjdGVkXSwgZmxvYXQ0ZXhwZWN0ZWQsIFtmbG9hdDRleHBl
Y3RlZF1dLCBbMCwgNSwgMTAsIDE1XSk7Ci0KLSAgICBib2R5ID0gYHJldHVybiBpbjBbMF0gKyBp
bjBbMV0gKyBpbjBbMl0gKyBpbjEgKyBpbjJbMF07YDsKLSAgICBjaGVja051bWVyaWNTY2FsYXJz
KGJvZHksIFtbMCwgMSwgMl0sIDMsIFs0XV0sIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMubXVsdGlw
bGVBcmd1bWVudFR5cGVzID0gKCkgPT4gewotICAgIGNvbnN0IHNyYyA9IGBmbG9hdCB0ZXN0KGlu
dCBpLCB1aW50IGMsIGZsb2F0NCBmNCwgZGV2aWNlIHVpbnRbXSB1LCBkZXZpY2UgZmxvYXRbXSBm
cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmbG9hdChpKSArIGZsb2F0KGMpICsgZjQueCArIGY0
LnkgKyBmNC56ICsgZjQudyArIGZsb2F0KHVbMF0pICsgZnNbMF0gKyBmc1sxXTsKLSAgICB9YDsK
LSAgICBjb25zdCBpID0gbWFrZUludCgxKTsKLSAgICBjb25zdCBjID0gbWFrZVVpbnQoMik7Ci0g
ICAgY29uc3QgZjQgPSBtYWtlRmxvYXQ0KFs0LCA1LCA2LCA3XSk7Ci0gICAgY29uc3QgdSA9IG1h
a2VVaW50KFszXSk7Ci0gICAgY29uc3QgZnMgPSBtYWtlRmxvYXQoWzgsIDldKTsKLSAgICB3ZWJH
UFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjYWxsRmxvYXRGdW5jdGlvbihz
cmMsICJ0ZXN0IiwgW2ksIGMsIGY0LCB1LCBmc10pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAg
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3VsdCwgNDUsIGVwc2lsb24sICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9KTsKLSAgICB9LCAiVXBsb2FkIGFuZCBj
YWxjdWxhdGUgYSByZXN1bHQgZnJvbSB2YXJpZWQgYXJndW1lbnQgdHlwZXMuIik7Ci19OwotCi13
aGxzbFRlc3RzLmJ1ZmZlclN0b3JlcyA9ICgpID0+IHsKLSAgICBsZXQgc3JjID0gYHZvaWQgdGVz
dChkZXZpY2UgZmxvYXQ0W10gb3V0KSB7Ci0gICAgICAgIG91dFswXSA9IGZsb2F0NCgwLCAxLCAy
LCAzKTsKLSAgICB9YDsKLSAgICBjb25zdCBmbG9hdDRPdXQgPSBtYWtlRmxvYXQ0KFtbMCwgMCwg
MCwgMF1dKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBmbG9hdDRPdXQpOwot
Ci0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZmxvYXQ0T3V0
LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25z
dCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZv
ciAobGV0IGk7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyhyZXN1bHRbaV0sIGksICJUZXN0IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sICJTdG9yZSBpbnRvIGEgZmxvYXQ0W10uIik7
Ci0KLSAgICBzcmMgPSBgdm9pZCB0ZXN0KGRldmljZSBpbnRbXSBpbiwgZGV2aWNlIGludFtdIG91
dCkgewotICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA1OyBpID0gaSArIDEpCi0gICAgICAg
ICAgICBvdXRbaV0gPSBpbltpXTsKLSAgICB9YDsKLSAgICBjb25zdCBhcnJheSA9IFswLCAxLCAy
LCAzLCA0XTsKLSAgICBjb25zdCBpbnB1dCA9IG1ha2VJbnQoYXJyYXkpOwotICAgIGNvbnN0IG91
dHB1dCA9IG1ha2VJbnQoWzAsIDAsIDAsIDAsIDBdKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNy
YywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0pOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkg
PT4gewotICAgICAgICByZXR1cm4gb3V0cHV0LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1
ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVWludDMyQXJyYXkoYXJy
YXlCdWZmZXIpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgcmVzdWx0
LCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAgICB9KTsKLSAgICB9LCAi
VXBsb2FkIGEgaW50W10gYW5kIHN0b3JlIGludG8gYSBpbnRbXS4iKTsKLX07Ci0KLXdobHNsVGVz
dHMuZmxvYXQ0eDR0ZXN0cyA9ICgpID0+IHsKLSAgICBjb25zdCBzcmMgPSBgdm9pZCB0ZXN0KGRl
dmljZSBmbG9hdDR4NFtdIGluLCBkZXZpY2UgZmxvYXQ0eDRbXSBvdXQpIHsKLSAgICAgICAgZm9y
ICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKQotICAgICAgICAgICAgb3V0W2ldID0gaW5b
aV07Ci0gICAgfWA7Ci0gICAgY29uc3QgaW5wdXQgPSBtYWtlRmxvYXQ0eDQoW2Zsb2F0NHg0ZXhw
ZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0
ZWRdKTsKLSAgICBjb25zdCBvdXRwdXQgPSBtYWtlRmxvYXQ0eDQobmV3IEFycmF5KDY0KS5maWxs
KDApKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0p
OwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gb3V0cHV0
LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25z
dCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9
IDA7IGogPCAxNjsgKytqKQotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhyZXN1bHRbaSAqIDE2ICsgal0sIGZsb2F0NHg0ZXhwZWN0ZWRbal0sIGVwc2lsb24sICJUZXN0
IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0sICJVcGxvYWQgYSBmbG9hdDR4NFtdIGFuZCBzdG9yZSBpbnRvIGEgZmxvYXQ0eDRbXS4i
KTsKLQotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gZmxvYXQ0eDQoZmxvYXQ0
KDAsIDEsIDIsIDMpLCBmbG9hdDQoNCwgNSwgNiwgNyksIGZsb2F0NCg4LCA5LCAxMCwgMTEpLCBm
bG9hdDQoMTIsIDEzLCAxNCwgMTUpKTsiLCBbXSwgZmxvYXQ0eDRDb2x1bW5FeHBlY3RlZCk7Ci0g
ICAgY2hlY2tBcnJheXMoImZsb2F0NHg0IiwgInJldHVybiBpbjA7IiwgW2Zsb2F0NHg0ZXhwZWN0
ZWRdLCBmbG9hdDR4NGV4cGVjdGVkKTsKLSAgICBsZXQgbXVsdGlwbGU0eDRhcmdzID0gW107Ci0g
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGFyZyA9IG5l
dyBBcnJheSgxNik7Ci0gICAgICAgIGFyZy5maWxsKDApOwotICAgICAgICBhcmdbaV0gPSBpOwot
ICAgICAgICBtdWx0aXBsZTR4NGFyZ3MucHVzaChhcmcpOwotICAgIH0KLSAgICBjaGVja0FycmF5
cygiZmxvYXQ0eDQiLCAicmV0dXJuIGluMCArIGluMSArIGluMiArIGluMyArIGluNCArIGluNSAr
IGluNiArIGluNyArIGluOCArIGluOSArIGluMTAgKyBpbjExICsgaW4xMiArIGluMTMgKyBpbjE0
ICsgaW4xNTsiLCBtdWx0aXBsZTR4NGFyZ3MsIGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAg
IGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gaW4wWzBdOyIsIFtbZmxvYXQ0eDRleHBl
Y3RlZF1dLCBmbG9hdDR4NGV4cGVjdGVkKTsKLX07Ci0KLXdobHNsVGVzdHMuY2hlY2tGYWlsVGVz
dHMgPSAoKSA9PiB7Ci0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1
cm4gY2hlY2tGYWlsKGBEb29ycyBhbmQgY29ybmVycywga2lkLiBUaGF0J3Mgd2hlcmUgdGhleSBn
ZXRjaGEuYCk7Ci0gICAgfSwgIkNvZGUgc2hvdWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3Ig
aXMgcmVwb3J0ZWQuIik7Ci0KLSAgICB3ZWJHUFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBjaGVja0ZhaWwoIiIpLmNhdGNoKGUgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZSBpbnN0YW5jZW9mIEVycm9yLCAiQW4gZXhwZWN0ZWQgRXJyb3Igd2FzIGNhdWdodC4iKTsK
LSAgICAgICAgfSk7Ci0gICAgfSwgIlN1Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVj
a0ZhaWwgaXMgYW4gZXJyb3IuIikKLX07Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgYXN5bmMgKCkgPT4gewotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGhhcm5lc3MucmVxdWVz
dERldmljZSgpOwotICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gd2hsc2xUZXN0cykgewotICAg
ICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICB3aGxz
bFRlc3RzW25hbWVdKCk7Ci0gICAgICAgIH0KLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICAKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19KTsKLQotLyogSGVscGVyIGZ1
bmN0aW9ucyAqLwotCi1jb25zdCBjaGVja051bWVyaWNTY2FsYXJzID0gKGJvZHksIGFyZ1ZhbHVl
cywgZXhwZWN0ZWQpID0+IHsKLSAgICBsZXQgZnVuY3Rpb25zID0gW107Ci0gICAgbGV0IHNyYyA9
ICIiOwotICAgIGZvciAobGV0IHR5cGUgb2YgbnVtZXJpY1NjYWxhclR5cGVzKSB7Ci0gICAgICAg
IGxldCBuYW1lLCB2YWx1ZXM7Ci0gICAgICAgIFtzcmMsIG5hbWUsIHZhbHVlc10gPSBhcHBlbmRT
Y2FsYXJGdW5jdGlvblRvU291cmNlKHNyYywgdHlwZSwgYm9keSwgYXJnVmFsdWVzKTsKLSAgICAg
ICAgZnVuY3Rpb25zLnB1c2goeyB0eXBlOiB0eXBlLCBuYW1lOiBuYW1lLCBhcmdzOiB2YWx1ZXMs
IGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGYgb2YgZnVu
Y3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0IGNhbGxGdW5jID0gbnVtZXJpY1NjYWxhckZ1bmNzW2Yu
dHlwZV07Ci0gICAgICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsKLSAgICAgICAg
ICAgIHJldHVybiBjYWxsRnVuYyhzcmMsIGYubmFtZSwgZi5hcmdzKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0LCBmLmV4cGVjdGVk
LCBlcHNpbG9uLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBgUmV0dXJuIGFuIGV4cGVjdGVkICR7Zi50eXBlfSB2YWx1ZS5gKTsK
LSAgICB9Ci19OwotCi1jb25zdCBjaGVja0Jvb2xzID0gKG1zZyA9ICJSZXR1cm4gYW4gZXhwZWN0
ZWQgYm9vbCB2YWx1ZS4iLCBib2R5LCBhcmdWYWx1ZXMgPSBbXSwgZXhwZWN0ZWQgPSB0cnVlKSA9
PiB7Ci0gICAgY29uc3QgW3NyYywgbmFtZSwgdmFsdWVzXSA9IGFwcGVuZFNjYWxhckZ1bmN0aW9u
VG9Tb3VyY2UoIiIsICJib29sIiwgYm9keSwgYXJnVmFsdWVzKTsgCi0KLSAgICB3ZWJHUFVQcm9t
aXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjYWxsQm9vbEZ1bmN0aW9uKHNy
YywgbmFtZSwgdmFsdWVzKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgZXhwZWN0ZWQsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgICAgICB9LCBlID0+IHsKLSAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVV
bnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9KTsK
LSAgICB9LCBtc2cpOwotfTsKLQotY29uc3QgY2hlY2tBcnJheXMgPSAodHlwZSwgYm9keSwgYXJn
VmFsdWVzID0gW10sIGV4cGVjdGVkKSA9PiB7Ci0gICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAg
IGxldCB2YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAvLyBTdXBwb3J0IGFycmF5cyBvZiBmbG9hdDQsIGluY2x1ZGlu
ZyBvbmUgd2l0aCBhIHNpbmdsZSBmbG9hdDQuCi0gICAgICAgIGNvbnN0IHRvdGFsTGVuZ3RoID0g
YXJnVmFsdWVzW2ldLmZsYXQoKS5sZW5ndGg7Ci0gICAgICAgIGNvbnN0IGlzQnVmZmVyID0gYXJn
VmFsdWVzW2ldLmxlbmd0aCA9PT0gMSB8fCB0b3RhbExlbmd0aCA+IGFycmF5VHlwZUxlbmd0aHNb
dHlwZV07Ci0gICAgICAgIGlucHV0QXJncy5wdXNoKGAke2lzQnVmZmVyID8gImRldmljZSAiIDog
IiJ9JHt0eXBlfSR7aXNCdWZmZXIgPyAiW10iIDogIiJ9IGluJHtpfWApOwotICAgICAgICB2YWx1
ZXMucHVzaChhcnJheUFyZ01ha2Vyc1t0eXBlXShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBzcmMgPSBgJHt0eXBlfSAke3R5cGV9VGVzdCgke2lucHV0QXJncy5qb2luKCIsICIp
fSkgeyAke2JvZHl9IH0KLSAgICBgOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkg
PT4gewotICAgICAgICByZXR1cm4gYXJyYXlGdW5jc1t0eXBlXShzcmMsIGAke3R5cGV9VGVzdGAs
IHZhbHVlcykudGhlbihyZXN1bHQgPT4gewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBhcnJheVR5cGVMZW5ndGhzW3R5cGVdOyArK2kpCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMocmVzdWx0W2ldLCBleHBlY3RlZFtpXSwgZXBzaWxvbiwgIlRlc3QgcmV0dXJu
ZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgIH0pOwotICAgIH0sIGBSZXR1cm4gYW4gZXhw
ZWN0ZWQgJHt0eXBlfSB2YWx1ZS5gKTsKLX0KLQotY29uc3QgYXBwZW5kU2NhbGFyRnVuY3Rpb25U
b1NvdXJjZSA9IChzcmMsIHR5cGUsIGJvZHksIGFyZ1ZhbHVlcykgPT4gewotICAgIGNvbnN0IG5h
bWUgPSBgJHt0eXBlfVRlc3RgOwotCi0gICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAgIGxldCB2
YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICBjb25zdCBpc0J1ZmZlciA9IEFycmF5LmlzQXJyYXkoYXJnVmFsdWVzW2ld
KTsKLSAgICAgICAgaW5wdXRBcmdzLnB1c2goYCR7aXNCdWZmZXIgPyAiZGV2aWNlICIgOiAiIn0k
e3R5cGV9JHtpc0J1ZmZlciA/ICJbXSIgOiAiIn0gaW4ke2l9YCk7Ci0gICAgICAgIHZhbHVlcy5w
dXNoKHNjYWxhckFyZ01ha2Vyc1t0eXBlXShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBz
cmMgKz0gYCR7dHlwZX0gJHtuYW1lfSgke2lucHV0QXJncy5qb2luKCIsICIpfSkgeyAke2JvZHl9
IH0KLSAgICBgOwotICAgIAotICAgIHJldHVybiBbc3JjLCBuYW1lLCB2YWx1ZXNdOwotfTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5NWFjYTM0ODAwMmVkNjNjNGFlMTUyMzkwMTcwYzY1MjcyMWVhODY3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lz
dGVyKHQwKSwgZGV2aWNlIHVpbnRbXSB0aGVCdWZmZXIgOiByZWdpc3Rlcih1MSkpIHsKLSAgICB1
aW50IHdpZHRoOwotICAgIHVpbnQgaGVpZ2h0OwotICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7Ci0g
ICAgR2V0RGltZW5zaW9ucyh0aGVUZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJP
ZkxldmVscyk7Ci0gICAgdGhlQnVmZmVyWzBdID0gd2lkdGg7Ci0gICAgdGhlQnVmZmVyWzFdID0g
aGVpZ2h0OwotICAgIHRoZUJ1ZmZlclsyXSA9IG51bWJlck9mTGV2ZWxzOwotfQotYDsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0
ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJl
In0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7
d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNl
LmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3
ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsK
LSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
dWx0c0J1ZmZlciwgc2l6ZTogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1
cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfV07Ci0gICAgY29u
c3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGlu
Z3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c1VpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5
KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNVaW50MzJBcnJheVswXSA9PSAy
Ci0gICAgICAgICYmIHJlc3VsdHNVaW50MzJBcnJheVsxXSA9PSAyCi0gICAgICAgICYmIHJlc3Vs
dHNVaW50MzJBcnJheVsyXSA9PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNl
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0K
LXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFp
bGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxv
YWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA4MjJjODUwNzlkNjM4YWYx
MjY3MTk0MWRhZDE3ZDA4OGVjZDNkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVy
dGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6
IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIo
dDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gTG9hZCh0aGVUZXh0dXJlLCBpbnQyKDAs
IDApKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQw
ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJl
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1
ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAg
IGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0
YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzZdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOF0gPSAxMjg7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzldID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxMF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMTI4OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzE0XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BV
VGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0
ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3Mg
PSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld31dOwotICAgIGNvbnN0IGJpbmRH
cm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5k
R3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBj
b3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3
LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0p
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNl
OTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0ZDBhZGY1ZGQ3MzBlZDM1ZDA0YTJjMWFi
ZGE3NmU1NGIwYzE5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVj
dCBJbnRlcm1lZGlhdGUgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAg
IGZsb2F0MiB0ZXh0dXJlQ29vcmRpbmF0ZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IElu
dGVybWVkaWF0ZSB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBm
bG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBJbnRlcm1lZGlh
dGUgcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC50
ZXh0dXJlQ29vcmRpbmF0ZSA9IHRleHR1cmVDb29yZGluYXRlOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDIgdGV4dHVyZUNvb3Jk
aW5hdGUgOiBhdHRyaWJ1dGUoMCksIFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdp
c3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQg
MCB7Ci0gICAgcmV0dXJuIFNhbXBsZUJpYXModGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgdGV4dHVy
ZUNvb3JkaW5hdGUsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtz
aGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQyIn07Ci0gICAgY29uc3QgaW5wdXQxID0g
e3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlz
aWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiA0ICsgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMiAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAwOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIw
XSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIxXSA9IDA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMl0gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsyM10gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29u
c3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVE
YXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4
QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzhdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTUK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxMl0gPSAyNTUKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDog
MiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2Uu
Q09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0
dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHthZGRyZXNzTW9k
ZVU6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVY6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVc6ICJyZXBl
YXQiLCBtYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25z
dCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0
dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBi
aW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURh
dGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIs
IGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsK
LSAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNv
bnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVD
b3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZl
cjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAq
IDF9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlw
TGV2ZWw6IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJD
b3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVh
ckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNo
bWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBu
dWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVu
ZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjBdLCBbMCwgRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDRdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1w
bGUtZ3JhZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5MzM2NmVmMDZmNWVlNjk4MTcyOTViZGUxZmMxOGYyOGMwMzBiNzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUyRDxmbG9h
dDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lz
dGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIFNhbXBsZUdyYWQodGhlVGV4dHVy
ZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgZmxvYXQyKDEsIDApLCBmbG9hdDIoMCwg
MSkpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUi
fSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1
cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICog
MSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZl
ckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRl
eHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0gPSAwOwot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAwOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAwOwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEy
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
Nl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1NTsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9E
U1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRW
aWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5l
YXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNy
ZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAx
LCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7
bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7
Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4
dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFp
bihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBv
dXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3Qg
YnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBV
aW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29w
eTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0
aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZl
clRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7
Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIs
IG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0
Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVp
bnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OwotICAgIGNvbnN0IHRleHR1
cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0
IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07Ci0gICAgY29tbWFu
ZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5
MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xv
ckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVz
Y3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2Ni
ZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2
ZWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBs
ZS1sZXZlbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1s
ZXZlbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGM3OGUxNTYxODcxODAz
MzE3NGE4Y2JmODg0ZjU5ZDUzN2E4M2IyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
bGV2ZWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6
IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVyIDogcmVnaXN0ZXIoczEpKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICByZXR1cm4gU2FtcGxlTGV2ZWwodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwg
ZmxvYXQyKDAuNSwgMC41KSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkg
ewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21l
bnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hh
ZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwot
ICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2Rl
OiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0i
LCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3Jp
dGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNv
bnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9Owot
ICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUw
XX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQg
PSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTog
InNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNh
bXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9n
eSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZl
cnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVy
dGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwot
Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0g
bmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs1XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzhdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs5XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDA7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVsxM10gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNF0gPSAwOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzE2XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOF0gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE5XSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6
ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgbWlwTGV2ZWxDb3VudDogMiwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRl
eHR1cmVVc2FnZS5DT1BZX0RTVH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVU
ZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IHNhbXBsZXJEZXNjcmlwdG9yID0g
e21hZ0ZpbHRlcjogImxpbmVhciIsIG1pbkZpbHRlcjogImxpbmVhciJ9OwotICAgIGNvbnN0IHNh
bXBsZXIgPSBkZXZpY2UuY3JlYXRlU2FtcGxlcihzYW1wbGVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVW
aWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBzYW1wbGVyfV07Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRH
cm91cEJpbmRpbmdzfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQu
Y29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5MVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5MVZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3Qg
Y29weTFTaXplID0ge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfTsKLSAgICBjb21tYW5k
RW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkxVmlldywgdGV4dHVyZUNvcHkx
VmlldywgY29weTFTaXplKTsKLSAgICBjb25zdCBidWZmZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0
ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDIgKiAyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAx
LCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMX07
Ci0gICAgY29uc3QgdGV4dHVyZUNvcHkyVmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZl
bDogMX07Ci0gICAgY29uc3QgY29weTJTaXplID0ge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxfTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHky
VmlldywgdGV4dHVyZUNvcHkyVmlldywgY29weTJTaXplKTsKLQotICAgIGNvbnN0IGNsZWFyQ29s
b3IgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50
cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGws
IGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcn1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkODZhYjVkNWI2MTY2ZmNkMGQyMjQxMTFmZjE0Y2Y5
MzNlYzg3MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVy
IHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBT
YW1wbGUodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSk7Ci19Ci1gOwot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4
U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9w
b2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9
IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0
ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0
ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzog
MSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJE
ZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAq
IDIsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0
ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNl0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDI1NTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEz
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9Owot
ICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBt
aW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNh
bXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3Mg
PSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNv
dXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVy
Q29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9
IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVy
ZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25z
dCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1l
bnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdv
LWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28t
ZGltZW5zaW9uYWwtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGlt
ZW5zaW9uYWwtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YjYx
OTM3MTQ5ZmNmMjUzZDY1MmEzYzRlZDU4YzRiZWQ1NDczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRp
bWVuc2lvbmFsLWFycmF5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi12b2lkIGZpbGwodGhyZWFkIGZsb2F0WzEwXVtdIGFycmF5LCBmbG9h
dFsxMF0gdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkg
PSBpICsgMSkgewotICAgICAgICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLX0KLQotdm9pZCBm
aWxsKHRocmVhZCBmbG9hdFtdIGFycmF5LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBp
ID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGFycmF5W2ldID0g
dmFsdWU7Ci0gICAgfQotfQotCi1ib29sIGNvbnRhaW5zKHRocmVhZCBmbG9hdFsxMF1bXSBhcnJh
eSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
IGkgPSBpICsgMSkgewotICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCBhcnJheVtqXS5sZW5n
dGg7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYgKGFycmF5W2ldW2pdICE9IHZhbHVlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBjb250YWlucyh0aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxvYXQg
dmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsg
MSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdp
c3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBm
bG9hdFsxMF1bNV0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA1KQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKCFjb250YWlucyhAYXJyYXksIDApKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAg
ICAgICBmbG9hdFsxMF0gdmFsdWU7Ci0gICAgICAgIGZpbGwoQHZhbHVlLCBmbG9hdChpKSk7Ci0g
ICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotCi0gICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsKLSAgICAgICAgZmxvYXRbMTBdIHZhbHVlID0g
YXJyYXlbaV07Ci0gICAgICAgIGlmICghY29udGFpbnMoQHZhbHVlLCBmbG9hdChpKSkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVmZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBj
b21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRl
U2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShidWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNC
dWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBsZXQgcmVzdWx0c0lu
dDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChy
ZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYjc4ZWI2MWE2YTM4MTYyNGZmMWQ5Mzk3ZDMxZDhlODk0ZTU3YzQzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAs
MCBAQAotCi1QQVNTIHR5cGVNaXNtYXRjaFJldHVybgotUEFTUyB0eXBlTWlzbWF0Y2hWYXJpYWJs
ZURlY2wKLVBBU1MgdHlwZU1pc21hdGNoQXNzaWdubWVudAotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1
cm5QYXJhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlwZS1taXNt
YXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4ZTE0ODFlNWVhMTA2ZTA0NGZjY2RkYThk
ZWZmOTQ0NThiYzkzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hSZXR1cm4gPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEwLjU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB2b2lkIGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkg
PSB4OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy50eXBlTWlz
bWF0Y2hBc3NpZ25tZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKHVpbnQgeCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAgICB5ID0geDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuUGFyYW0g
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLQotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyYzRhYjg5MTZkNzdjZWExOTJjZDgzNGY1Y2JhNzZhYjg1MDZiY2YyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCww
IEBACi0KLVBBU1MgdWludEJpdEFuZAotUEFTUyB1aW50Qml0T3IKLVBBU1MgdWludEJpdFhvcgot
UEFTUyB1aW50Qml0Tm90Ci1QQVNTIHVpbnRMU2hpZnQKLVBBU1MgdWludFJTaGlmdAotUEFTUyB1
aW50U2ltcGxlTWF0aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWlu
dC1iaXR3aXNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiM2Q2YjBiNjJmOWIwOWEyNzM3OWRj
ODVlNWY1NGYzZDc4ZGRhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAmIGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDEpLCBtYWtlVWludCg3KV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQy
KV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4
NTczMildKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgfCBiOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWlu
dCg0MildKSwgNjU1MzUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dChNYXRoLnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2NzI5NSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1h
a2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdFhvciA9IGFz
eW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBh
LCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDYpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCks
IG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdE5vdCA9
IGFzeW5jICgpID0+IHsgCi0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVp
bnQgYSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIH5hOwotICAgICAgICB9Ci0gICAg
YDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5
NDkwMTc2MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMCldKSwgNDI5NDk2NzI5NSk7Ci19Ci0KLXdobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1
aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIDw8IGI7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxMjgpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoMildKSwgMjYyMTQwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50
KDMpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVp
bnQoMildKSwgMTYzODMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dCg1KV0pLCAxMzQyMTc3MjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX07
Ci0KLXdobHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOwotCi0gICAgcHJvZ3JhbSA9ICJ1aW50IGZv
byh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtl
VWludCg1KV0pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7
Ci0KLSAgICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICog
eTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDM1KTsKLQotICAgIC8vIEZJWE1F
OiBtYWtlIHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTYwMgotICAgIC8vIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggLyB5OyB9IjsKLSAgICAvLyBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDkzNTYwZTEyZjg1
ODc2ZmM2OGYzMmIzODFhNWE5Y2U0MzE3OWNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVk
LXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wg
Y29tcGlsZSBlcnJvcjogNDoyNTogQ2Fubm90IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9u
LgotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZh
cmlhYmxlLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZh
cmlhYmxlLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QzMDRhZTU0YTRk
YWI3Mzk5M2YzZmIwOWIwN2EzYjExMGRhZjNhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5l
ZC12YXJpYWJsZS0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVT
aGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFk
SUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0IHZlYyA9IGZsb2F0NCh4LHgs
eCx4KTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0
ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9y
YWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NzNjM2QwMDM5ZTk4NWRiMmM1Zjc0YTIwMjBiZjhiZDU5
OTk0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogNjo5OiBDYW5u
b3QgZmluZCB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uCi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDljNTAwNzM3YjJmY2U2MDYxYzhiNThkODk3Mjg4NjJjMTUwNjkxNGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwg
MSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiBy
ZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAg
ICBmbG9hdCBmb287Ci0gICAgaWYgKGZvbykgewotICAgICAgICB4ID0geCArIDE7Ci0gICAgfQot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgY29uc3QgYWRhcHRlciA9IGF3
YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICBjb25zdCBkZXZpY2UgPSBh
d2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLQotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNv
bXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
dGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zhcmlh
YmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFy
aWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2NiOWIyZDAxZmRjNTdlM2QzZjQ5MGIxMTk5OTRmODAzNjcyM2YwNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIHZhcmlhYmxlU2hhZG93aW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDE1YTBjYmE3ZDE3MGUxYWM0ZjE5ZjJlMDc1NDM1NmQyMmU5MjQ0OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bv
c3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudmFyaWFibGVT
aGFkb3dpbmcgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICBpbnQg
eCA9IDc7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHggPSA4OwotICAgICAg
ICAgICAgICAgIHkgPSB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDgpOwotCi0gICAgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAgICAgICAgaW50IHgg
PSA3OwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gODsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHkgPSB4OwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSksIDcpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1j
b21wYXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29t
cGFyZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmU2NTE2
ZmFhMWUyZmNkMWI1YTlmOTY3YjYxYzFmYWUzN2FjNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1j
b21wYXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotUEFT
UyB2ZWN0b3JMVAotUEFTUyB2ZWN0b3JMVDIKLVBBU1MgdmVjdG9yTFQzCi1QQVNTIHZlY3RvckxU
RQotUEFTUyB2ZWN0b3JMVEUyCi1QQVNTIHZlY3RvckxURTMKLVBBU1MgdmVjdG9yR1QKLVBBU1Mg
dmVjdG9yR1RFCi1QQVNTIHZlY3RvckdURTIKLVBBU1MgdmVjdG9yR1RFMwotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxYWJkNjkzY2NmNzc4MDU2M2FiYmY2M2M0MDQ3ZjFhZDg2MWMxOTJmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+PT0uPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3
aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZl
Y3RvckxUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0g
ICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAg
ICAgICAgICAgcmV0dXJuIGFsbCh2IDwgdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxUMiA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGludDIg
diA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2OwotICAgICAgICAgICAg
djIgLT0gMTA7Ci0KLSAgICAgICAgICAgIHJldHVybiAhYW55KHYgPCB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFQzID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgaW50MiB2ID0gaW50MigxMCwgMjApOwotICAgICAgICAgICAgaW50MiB2MiA9
IHY7Ci0gICAgICAgICAgICB2Mi55ICs9IDEwOwotCi0gICAgICAgICAgICBib29sMiByZXN1bHQg
PSB2IDwgdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJlc3VsdC54ICYmIHJlc3VsdC55OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxU
RSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAg
ICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFRFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2
ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLQotICAg
ICAgICAgICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVEUzID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2Owot
ICAgICAgICAgICAgdjIueSAtPSAxLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYg
PD0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgIXJlc3VsdC55OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckdUID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAg
cmV0dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZs
b2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0gICAgICAgICAg
ICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gIWFueSh2ID49IHYyKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUy
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgaW50MiB2ID0gaW50MigxMCwgMjApOwotICAgICAgICAgICAgaW50
MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA+PSB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFMyA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIg
PSB2OwotICAgICAgICAgICAgdjIueSArPSAxMDsKLQotICAgICAgICAgICAgYm9vbDIgcmVzdWx0
ID0gdiA+PSB2MjsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQueCAmJiAhcmVzdWx0Lnk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE1MDIwMDllZjAzMjBmMDI3NWM0ZWZhYzRlNWJmM2Q5ODY0OGEwNTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgdmVjdG9yQ29uc3RydWN0b3IKLVBBU1MgdmVj
dG9yQ29uc3RydWN0b3IyCi1QQVNTIHZlY3RvckNvbnN0cnVjdG9yMwotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWEyZmM0ZWRhZWU4MjI5Y2U0Y2QyZTQwY2ZlMGJhYjQzMDQ4ZDc4
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT52ZWN0
b3IgY3Rvci48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JD
b25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MyB2ID0gZmxvYXQzKGZsb2F0MigxMC4w
LCAxMS4wKSwgMTIuMCk7Ci0gICAgICAgICAgICByZXR1cm4gdi54ID09IDEwLjAgJiYgdi55ID09
IDExLjAgJiYgdi56ID09IDEyLjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0b3IyID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQzIHYgPSBmbG9hdDMoMTAuMCwgZmxvYXQyKDExLjAsIDEyLjApKTsKLSAgICAgICAgICAgIHJl
dHVybiB2LnggPT0gMTAuMCAmJiB2LnkgPT0gMTEuMCAmJiB2LnogPT0gMTIuMDsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1
Y3RvcjMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMyB2ID0gYm9vbDModHJ1ZSwgYm9vbDIoZmFsc2Us
IHRydWUpKTsKLSAgICAgICAgICAgIHJldHVybiB2LnggJiYgIXYueSAmJiB2Lno7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDI3ODk5MzU3N2JkN2Qx
ZjE1ZGQxMDdjNmZlYjZkZGY4YWRhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRk
aXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi0KLVBBU1MgdmVjdG9yQWRkaXRpb24KLVBBU1MgdmVjdG9yU3VidHJhY3Rpb24KLVBBU1Mg
bWF0cml4QWRkaXRpb24KLVBBU1MgbWF0cml4U3VidHJhY3Rpb24KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1
YnRyYWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OGQ3NDI3Yzc2
YjYxYTg1ZDE1OWU1MDZkMDQzMWU5ZmJiNTY4MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRy
aXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3Rm
aXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwot
Ci13aGxzbFRlc3RzLnZlY3RvckFkZGl0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQy
IHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgKyA3OwotICAgICAg
ICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9h
dDIgdSA9IHYgKyA3OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywg
NCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2OwotICAgICAgICAgICAgcmV0dXJuIHUu
eDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2Owot
ICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0dXJuIHUu
eTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIi
LCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBb
XSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9h
cHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwg
NCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvclN1YnRyYWN0aW9uID0gYXN5bmMg
KCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9h
dDIgdSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywg
NCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJuIHUu
eTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgLSB2Owot
ICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdSA9IDcgLSB2OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQot
ICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9h
dDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IC12OwotICAgICAgICAgICAgcmV0dXJu
IHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IC12Owot
ICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSks
IC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDQs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAtMywgZXBz
aWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eEFkZGl0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZs
b2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtICsg
NzsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQy
KDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IG0gKyA3Owot
ICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywg
NCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyArIG07Ci0gICAg
ICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwg
ZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSA3ICsgbTsKLSAgICAgICAg
ICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9h
dDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9ICttOwotICAgICAgICAgICAgcmV0
dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2
KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gK207Ci0gICAgICAgICAgICByZXR1cm4gblsw
XVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAg
ImIiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQi
LCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtd
KSwgNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFN1YnRyYWN0aW9uID0gYXN5
bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxv
YXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtIC0gNzsKLSAgICAgICAgICAg
IHJldHVybiBuWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIo
NSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IG0gLSA3OwotICAgICAgICAgICAgcmV0
dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2
KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyAtIG07Ci0gICAgICAgICAgICByZXR1cm4g
blswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsK
LSAgICAgICAgICAgIGZsb2F0MngyIG4gPSA3IC0gbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBd
WzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAg
ICAgICAgICAgZmxvYXQyeDIgbiA9IC1tOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMF07Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0
MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MiBuID0gLW07Ci0gICAgICAgICAgICByZXR1cm4gblswXVsxXTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImMiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJlIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7
Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDY0M2E0OGNkOTAyMGJmYTYyOGEwNzQyMTY0
MzhhYjQ5YTYzNmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3RvclR5cGVTeW50YXgKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE5MWY1NmZlZTYwYjY5ZDVkNDgzMDBkZmFhMGY1ZWRkNGViMzBj
Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1
Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnZlY3RvclR5cGVT
eW50YXggPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHZlY3Rv
cjxpbnQsIDI+IHogPSBpbnQyKDMsIDQpOwotICAgICAgICAgICAgeCA9IHo7Ci0gICAgICAgICAg
ICByZXR1cm4geC55OwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQzIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8aW50LCAzPiB6ID0gaW50
MygzLCA0LCA1KTsKLSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAgcmV0dXJuIHguejsK
LSAgICAgICAgfQotCi0gICAgICAgIGludCBmb280KCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50NCB4OwotICAgICAgICAgICAgdmVjdG9yPGludCw0PiB6ID0gaW50NCgzLCA0LCA1LCA2KTsK
LSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAgcmV0dXJuIHgudzsKLSAgICAgICAgfWA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzMiLCBbXSksIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA2KTsKLQotICAgIHByb2dyYW0gPSBgCi0gICAg
ICAgIHR5cGVkZWYgaSA9IGludDsKLSAgICAgICAgaW50IGZvbzIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8aSwgMj4geiA9IGludDIoMywgNCk7
Ci0gICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lnk7Ci0gICAgICAgIH1g
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
bzIiLCBbXSksIDQpOwotfQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBh
cmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJp
YWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NzM4MjhjNzQxYzJlNWQzOTZkN2YxMTYwMTg2OTA0NDFiYjNkMTk4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw0ICswLDAgQEAKLQotUEFTUyB2b2lkVmFyaWFibGUKLVBBU1Mgdm9pZFBhcmFtZXRlcgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWY2MTk1MGZiZDM2OGEyODI3
YzU1MGM4NWNmODRjNDVlNGM4MjAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFt
ZXRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMudm9pZFZhcmlhYmxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAg
ICAgICAgICAgIHZvaWQgeDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMudm9pZFBhcmFtZXRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh2b2lkIHgpIHsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29w
LWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9v
cC1icmVhay1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVl
Nzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFj
a1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1i
cmVhay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODZhMmY0NWM5YWJmMTE2
NmQ4YzUzMjllYTQwMGI4M2Q5OWRkNjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFr
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBg
Ci1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsK
LSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6
IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0
cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCAxMCkgewotICAgICAgICBpZiAo
YikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFk
ZSArIDEuMDsKLSAgICAgICAgaSA9IGkgKyAxOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBz
aGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAw
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJm
bG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwg
YXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNl
dDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0
eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1
ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
N10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAw
LjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1
ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlC
dWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNv
dXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6
IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
e2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRH
cm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQu
Y29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0
IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNv
bHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFy
Q29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwot
ICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1p
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNl
KS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3do
aWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJlZmYzNTcxOWNlODBkN2U0ODFhZDMwZTEwMGIxOGEwNDM3OGFlOGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDAp
OwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0
IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgdWludCBpID0gMDsKLSAgICB3aGls
ZSAoKHNoYWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkpIHsKLSAgICAgICAgaWYgKGIpIHsKLSAg
ICAgICAgICAgIGkgPSBpICsgMTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0g
ICAgICAgIHNoYWRlID0gMC4wOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hh
ZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBj
b25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9m
ZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRl
MV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmli
dXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJp
bWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3Rl
bmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzldID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTRdID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
OF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAg
dmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNv
dXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNl
QnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0
OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJl
U3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUg
PSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
VmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJl
ZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0
IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVy
dGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0g
ICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRl
dmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTky
YzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93aGxzbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3do
bHNsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOWJiMGEzODdjOThlMTcw
YmE5Y2QzNThmYjRhNzZlYmE5MjNlZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkg
OiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hh
ZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xv
Z3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtm
cm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMg
PSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1h
c2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3Rh
dGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dDEgPSB7c3Ry
aWRlOiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRzID0g
W2lucHV0MCwgaW5wdXQxXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMURlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMSA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjFBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjEubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjFBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVswXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsxXSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyMUZsb2F0MzJBcnJheVsyXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsz
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMS51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMCwgdmVydGV4QnVmZmVyMV0s
IFswLCAwXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YjE4MTlmMGEyMTI1YTE4ZjlkYzkzNTEy
OGNlMzA0YzlhOWMyMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLVBBU1MgYml0QW5kV3Jv
bmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGJp
dE9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXRYb3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1Q
QVNTIGRlY1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0
aAotUEFTUyBkb3RPcGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZG90T3Bl
cmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGdyZWF0ZXJFcXVhbFdyb25nQXJndW1lbnRM
ZW5ndGgKLVBBU1MgZ3JlYXRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgaW5jV3JvbmdBcmd1
bWVudExlbmd0aAotUEFTUyBpbmRleE9wZXJhdG9yU2V0dGVyV3JvbmdBcmd1bWVudExlbmd0aAot
UEFTUyBpbmRleE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBsU2hpZnRXcm9uZ0Fy
Z3VtZW50TGVuZ3RoCi1QQVNTIG1pbnVzV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBtb2R1bG9X
cm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHJT
aGlmdFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgdGltZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5n
dGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkYTcxZTJmZmI1OGEzMzBmNzJk
NjM4MjgxNGU0N2JmY2ZmZTY5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3Ro
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNjQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5iaXRBbmRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ImKEZvbykgeyByZXR1cm4gMzI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciYoRm9v
KSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAg
IGludCBvcGVyYXRvciYoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5iaXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcn4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsg
fQotICAgICAgICAgICAgaW50IG9wZXJhdG9yfihGb28sIEZvbykgeyByZXR1cm4gNTM0OyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuYml0T3JXcm9uZ0FyZ3VtZW50TGVu
Z3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3J8KCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvcnwoRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvcnwoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5iaXRYb3JXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yXihGb28pIHsgcmV0dXJuIDUz
NDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9y
XihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19
Ci13aGxzbFRlc3RzLmRlY1dyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0o
KSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAg
aW50IG9wZXJhdG9yLS0oRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLX0KLXdobHNsVGVzdHMuZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3IvKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIGludCBvcGVyYXRvci8oRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci8oRm9vLCBGb28sIEZvbykg
eyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5kb3RP
cGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KEZvbykgeyByZXR1
cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVy
YXRvci5mb289KEZvbywgaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLX0KLXdobHNsVGVzdHMuZG90T3BlcmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvci5mb28oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhGb28sIGludCkgeyByZXR1cm4gNDI7
IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9u
Z0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PSgpIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PShG
b28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I+PShGb28sIEZvbywgRm9vKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZ3JlYXRlcldyb25nQXJndW1lbnRMZW5n
dGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgYm9vbCBvcGVyYXRvcj4oKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPihGb28pIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotfQotd2hsc2xUZXN0cy5pbmNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cisrKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvcisrKEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmluZGV4T3BlcmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcltdPShpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvcltdPShpbnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9y
W109KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotd2hsc2xUZXN0cy5pbmRleE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aCA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBpbnQgb3BlcmF0b3JbXSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdKGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oaW50LCBp
bnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xU
ZXN0cy5sU2hpZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw8KCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvcjw8KEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I8PChGb28sIEZvbywgRm9vKSB7IHJldHVybiA3Njsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLm1pbnVzV3JvbmdBcmd1bWVu
dExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci0oRm9vLCBGb28sIEZvbykg
eyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5tb2R1
bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvciUoKSB7IHJldHVybiAzMjsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJShG
b28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAg
ICAgaW50IG9wZXJhdG9yJShGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLnBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcisoKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsg
fQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKyhGb28sIEZvbywgRm9vKSB7IHJldHVybiA3Njsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLnJTaGlmdFdyb25nQXJndW1l
bnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgaW50IG9wZXJhdG9yPj4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPj4oRm9vKSB7IHJldHVy
biA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVy
YXRvcj4+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLX0KLXdobHNsVGVzdHMudGltZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvciooKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yKihGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKihGb28sIEZvbywgRm9vKSB7IHJl
dHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGQ0OTFlNTMxNmM5ZjY2YThmY2VjOGU5MjEyYjYyNGVlZDczMDc4My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
d3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0K
LVBBU1MgZGVjV3JvbmdUeXBlcwotUEFTUyBpbmNXcm9uZ1R5cGVzCi1QQVNTIGdyZWF0ZXJUaGFu
V3JvbmdSZXR1cm5UeXBlCi1QQVNTIGdyZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZQotUEFTUyBp
bmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlwZQotUEFTUyBzZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5
cGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxYWIyY2ZiZTI0NDQxMjdjMjE5OTU1M2Q1MDUyOTY5YWM3
ZjY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDgxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBpbnQg
Yml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZGVjV3Jv
bmdUeXBlcyA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItLShmbG9hdCkgeyByZXR1cm4gMzI7IH0KLSAgICAg
ICAgYCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLmluY1dyb25nVHlwZXMgPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50
IG9wZXJhdG9yKysoZmxvYXQpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LX0KLQotd2hsc2xUZXN0cy5ncmVhdGVyVGhhbldyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+
Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3I+KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSArIGI7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotCi13aGxzbFRlc3RzLmdyZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZSA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3I+PShpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGEgKyBiOyB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5pbmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlw
ZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBmbG9hdCBvcGVyYXRvcltdKGludCwgdWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gNS40MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdPShpbnQsIHVpbnQsIGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5zZXR0
ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBhc3luYyAoKSA9PgotewotICAgIGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgZmxvYXQgb3BlcmF0b3IuZm9vKGludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvci5mb289KGludCwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNj
NmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUt
dmFsdWVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTNm
Nzk2MWVhZWZiMWZmYTJiOWQzNGY4ODUxZDQ0YTZjOWM4MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJv
LWluaXRpYWxpemUtdmFsdWVzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci1zdHJ1Y3QgQmFyIHsKLSAgICBmbG9hdCB5OwotICAgIGZsb2F0IHkxOwotICAgIGZsb2F0IHky
OwotICAgIGZsb2F0IHkzOwotICAgIGZsb2F0IHk0OwotICAgIGZsb2F0IHk1OwotICAgIGZsb2F0
IHk2OwotICAgIGZsb2F0IHk3OwotICAgIGZsb2F0IHk4OwotICAgIGZsb2F0IHk5OwotICAgIGZs
b2F0IHkxMDsKLSAgICBmbG9hdCB5MTE7Ci0gICAgZmxvYXQgeTEyOwotICAgIGZsb2F0IHkxMzsK
LSAgICBmbG9hdCB5MTQ7Ci0gICAgZmxvYXQgeTE1OwotICAgIGZsb2F0IHkxNjsKLSAgICBmbG9h
dCB5MTc7Ci0gICAgZmxvYXQgeTE4OwotICAgIGZsb2F0IHkxOTsKLSAgICBmbG9hdCB5MjA7Ci19
Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVz
dWx0OwotCi0gICAgQmFyIGJhcjsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwot
ICAgIHJlc3VsdC5zaGFkZSA9IGJhci55MjA7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwg
MS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0
OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsK
LSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVz
fTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
dW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBE
ZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0g
YXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNl
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZm
ZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdw
dSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2Fw
Q2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3
YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3
ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25z
dCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2ht
ZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51
bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXpl
LXZhbHVlcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjAzNmY4NDU0NGM5NTY0NDE1NzY0OGZjZmE0NmEyOTI3ZjcwNWM0OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAg
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCk7Ci19Ci0KLXRocmVhZCBmbG9hdCogcHRyKCkgewotICAgIGZsb2F0IGxvY2FsOwotICAg
IHJldHVybiAmbG9jYWw7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsK
LSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwID0gcHRyKCk7Ci0g
ICAgKnAgPSAxLjA7Ci0gICAgZmxvYXQgdmFsdWUgPSAqcHRyKCk7IC8vIGNhbGxpbmcgcHRyKCkg
emVybyBpbml0aWFsaXplcy4KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAg
IHJlc3VsdC5zaGFkZSA9IHZhbHVlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRy
aWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9
OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAg
Y29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZv
cm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9w
b2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRl
LCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVy
MERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBz
aXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsK
LSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1
bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWlu
KHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hh
aW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91
dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVk
ID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMg
PSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBs
b2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBh
c3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9
OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5k
ZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0
LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3Qg
Y29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRR
dWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDYxNmYwNjBjMThlNjFhOWQ5
MjdmMzRlOTIxNDg4YjliMjJhMmIxNWIuLjFlMTE0ODk1OTJlNmQyMmI5ZWVkMDUzMGM5MmJlNGI2
NDUyMmE0NjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExT
TCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDIxLTA3LTI5ICBBZHJpYW4g
UGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBV
c2UgYW4gaW1wb3J0ZWQgdGFyZ2V0IGZvciB0aGUgbGliZ2NyeXB0IGxpYnJhcnkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434588</attachid>
            <date>2021-07-29 16:36:12 -0700</date>
            <delta_ts>2021-07-29 17:06:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228179-20210729163607.patch</filename>
            <type>text/plain</type>
            <size>3949236</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi45Y2NjMzcyNzlkOTlkZmMx
ODNmOGY1MzdiMGQ1MjI0ODU5YTgxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBX
SExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6
CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUluZGV4IGlzIGluZWZmaWNpZW50IGluIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDhhNWZhY2E3YTEwMTUzNDYyNTliMmYzNDFjOGQ5OWU2NWU2MzJjZjUuLjRkZmMy
ZmZhNmFhNmQwMWFiZDY2OGQ3YzdiZjI0MTYzNzY1MzQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wgY29tcGls
ZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisKIDIwMjEtMDctMjkgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0SWRlbnRpZmllclN0
cmluZ0ZvclByZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZSgpIGlzIGRlcHJlY2F0ZWQgaW4g
TW9udGVyZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2NkODA1MTUzMmViOWIxY2YyMDU2NGI4ODMxMWE0OWU1
MDM5ZWEzLi4zYzdkNzFlMDBhY2EwMzdiMTQ5Y2Y3ZjBiNjhlMWI2Mjc1YmUyMmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTE2IEBACisyMDIxLTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdG9wIGJ1aWxkaW5nIFdlYkdQ
VSBhbmQgdGhlIFdITFNMIGNvbXBpbGVyIHRvIGRlY3JlYXNlIGJpbmFyeSBzaXplCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0
QmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91
cExheW91dEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVCbGVuZERlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdlLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1
ZmZlckRlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvTmF2aWdhdG9yR1BVLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9O
YXZpZ2F0b3JHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2ln
bm1lbnRFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFr
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVp
bHRJblNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhw
cmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnRpbnVlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lv
bi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uTWVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdo
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5k
ZXhFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVw
bGFjZVdpdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvbHZhYmxlVHlwZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJl
RWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaENhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1
bWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGVEZWZpbml0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFt
ZWRUeXBlSGFzaC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE1hbmdsZWROYW1lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVu
Y3Rpb25Xcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlw
ZVdyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQnVpbGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weTog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGlj
YXRlRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4
dHVyZVJlZmVyZW5jZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRl
bXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2ha
b21iaWVGaW5kZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSGlnaFpvbWJpZUZpbmRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1l
Q29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZVJlc29sdmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2luZ01vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRp
bWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
ZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25D
aGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlY3Vyc2lvbkNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBs
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29s
dmVPdmVybG9hZEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFNjb3BlZFNldEFkZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVBZGFwdGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cEJpbmRpbmcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNv
ZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2VFcnJvclNjb3Blcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5l
TGF5b3V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmVMYXlvdXQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1
ZXVlLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVW
aWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZp
ZXcuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
citHUFUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmg6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0
Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29u
dGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dFdlYkdQVSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzV2ViR0wgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNXZWJHUFUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6
OnJlc2V0UmVjb3JkaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6
OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
T2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVs
ZWFzZU9iamVjdEZvclJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0lmQ29udGV4
dE1hdGNoZXNEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpkZXZpY2VDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhczo6aXNEZXZpY2VGb3JDYW52YXNDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJv
eVdlYkdQVURldmljZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmlndXJlU3dhcENoYWluSW1wbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmVJbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95V2ViR1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNoYWRlclNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JTaGFkZXJQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnBpcGVsaW5l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNh
bnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3Jk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3Jk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VD
YW52YXNNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJl
Y29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdl
YkdQVURldmljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNB
Z2VudDo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxDb25maWd1cmVTd2FwQ2hhaW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQ
VVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogcGFnZS9Qcm9j
ZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2Fy
bUdsb2JhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxh
eWVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5
ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRH
cm91cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5k
R3JvdXBBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwQmluZGluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCbGVuZERlc2NyaXB0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckJpbmRpbmcuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJV
c2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb2xvcldyaXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0
aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnBs
YXRmb3JtRGV2aWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmlj
ZTo6c3dhcENoYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmlj
ZTo6c2V0RXJyb3JTY29wZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yRmlsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yU2NvcGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGltaXRzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxvYWRPcC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPYmplY3RCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlv
dXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUXVldWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTYW1wbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRv
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
Rm9ybWF0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVVc2FnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVVdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0
RGVzY3JpcHRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW06IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91
cE1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCdWZmZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
cHV0ZVBpcGVsaW5lTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJld2Fy
bUdQVSk6CisgICAgICAgIChXZWJDb3JlOjppc0FjY2VwdGFibGVEZXZpY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVURldmljZTo6dHJ5Q3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVURldmljZTo6R1BVRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1l
dGFsQ29udmVydExheW91dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRh
bC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UXVldWVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2FtcGxlck1l
dGFsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW06IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3Jv
dXBBbGxvY2F0b3JEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBMYXlvdXREYXduLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCdWZmZXJEYXduLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21t
YW5kQnVmZmVyRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0ZVBpcGVsaW5lRGF3bi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVRGV2aWNl
RGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24v
R1BVUGxhdGZvcm1UeXBlc0Rhd24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvZGF3bi9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlckRhd24uY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVF1ZXVlRGF3bi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVy
UGFzc0VuY29kZXJEYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVNhbXBsZXJEYXduLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXdu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVT
d2FwQ2hhaW5EYXduLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvZGF3bi9HUFVUZXh0dXJlRGF3bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6Y29udGVudENoYW5nZWQpOgorCiAyMDIxLTA3LTI5ICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKSBpcyBkZXByZWNhdGVkIGluIE1vbnRlcmV5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDFhM2JkNjU4MGI3YWIzMjNmY2U4MjMzMWZkZTZkYzhiMDAxOTg2NjUuLjc5NGMz
YThmMDY1ZWQ0MjEwMDM3N2RiMjBhOTQyZWMxYjhhNDJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMjEtMDctMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIFN0b3AgYnVpbGRpbmcgV2ViR1BVIGFuZCB0aGUgV0hMU0wg
Y29tcGlsZXIgdG8gZGVjcmVhc2UgYmluYXJ5IHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3Mu
cGxpc3Q6CisgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3Q6CisgICAgICAg
ICogRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdDoKKyAgICAgICAgKiBGZWF0dXJlRmxh
Z3MvV2ViS2l0LXdhdGNob3MucGxpc3Q6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
Lmg6CisKIDIwMjEtMDctMjkgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaGUgYnVuZGxlIHBhdGggb2YgZG93bmxldmVsIFNhZmFyaSBpcyB3cm9uZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDVhZDcwNGEzYmFjYjZhYTc5YjJmZWEwMzNhZDk4MTA0
OTJkZDdlODUuLjU0ZWFhOTcyMjkyNjY3NmQxN2JiMzJjYjI2NWJmYjA5ZmE5Y2FkYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNy0yOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
U3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBi
aW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHdlYkdQVUVu
YWJsZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0V2ViR1BVRW5h
YmxlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
Lm1tOgorICAgICAgICAoV2ViS2l0OjpkZWZhdWx0V2ViR1BVRW5hYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wNy0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
TW9udGVyZXldIFByZXNzaW5nIEZuK0Ugc2hvdWxkIHByZXNlbnQgdGhlIGVtb2ppIHBpY2tlciB3
aGVuIGVkaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvQ2FudmFzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0NhbnZhcy5qc29uCmluZGV4IDA4YzEwMDUxNzZhOTYwZTczNDFkNDBhOWQ3NTI1ZmE2
NTFiMzRiZmYuLjUxMzNhYzc1YmQ4YTk1ZjU3NDE5NmJjNDIwNDJlZGE2MTMxYTJmZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMu
anNvbgpAQCAtMTEsMjUgKzExLDI1IEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAg
ICAgICJpZCI6ICJQcm9ncmFtSWQiLAotICAgICAgICAgICAgImNvbmRpdGlvbiI6ICIoZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCkgfHwgKGRlZmluZWQoRU5BQkxFX1dFQkdQ
VSkgJiYgRU5BQkxFX1dFQkdQVSkiLAorICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0
cmluZyIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIHNoYWRlciBwcm9ncmFt
IGlkZW50aWZpZXIuIgogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAi
Q29udGV4dFR5cGUiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgICAg
ICJlbnVtIjogWyJjYW52YXMtMmQiLCAiYml0bWFwcmVuZGVyZXIiLCAid2ViZ2wiLCAid2ViZ2wy
IiwgIndlYmdwdSJdLAorICAgICAgICAgICAgImVudW0iOiBbImNhbnZhcy0yZCIsICJiaXRtYXBy
ZW5kZXJlciIsICJ3ZWJnbCIsICJ3ZWJnbDIiXSwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJUaGUgdHlwZSBvZiByZW5kZXJpbmcgY29udGV4dCBiYWNraW5nIHRoZSBjYW52YXMgZWxlbWVu
dC4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJQcm9ncmFtVHlw
ZSIsCi0gICAgICAgICAgICAiY29uZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYg
RU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BV
KSIsCisgICAgICAgICAgICAiY29uZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBF
TkFCTEVfV0VCR0wiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAg
ICJlbnVtIjogWyJjb21wdXRlIiwgInJlbmRlciJdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAg
ICAgICAgICAgICJpZCI6ICJTaGFkZXJUeXBlIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAi
KGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJM
RV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAi
ZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImVudW0iOiBbImNvbXB1dGUiLCAiZnJhZ21lbnQi
LCAidmVydGV4Il0KICAgICAgICAgfSwKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInByZW11bHRpcGxpZWRBbHBoYSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsICJ0eXBlIjogImJvb2xl
YW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfSwK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQi
LCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldl
YkdMLCBXZWJHTDIiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3dlclByZWZlcmVu
Y2UiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
V2ViR0wsIFdlYkdMMiwgV2ViR1BVIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3dl
clByZWZlcmVuY2UiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiV2ViR0wsIFdlYkdMMiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAg
ICAgICB7CkBAIC02NCwxNCArNjQsMTMgQEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgImlkIjogIlNoYWRlclByb2dyYW0iLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkluZm9ybWF0aW9uIGFib3V0IGEgV2ViR0wvV2ViR0wyIHNoYWRlciBwcm9ncmFtIG9yIFdlYkdQ
VSBzaGFkZXIgcGlwZWxpbmUuIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQo
RU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUp
ICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1h
dGlvbiBhYm91dCBhIFdlYkdML1dlYkdMMiBzaGFkZXIgcHJvZ3JhbS4iLAorICAgICAgICAgICAg
ImNvbmRpdGlvbiI6ICJkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMIiwKICAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1J
ZCIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1UeXBlIiwgIiRyZWYiOiAi
UHJvZ3JhbVR5cGUiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYW52YXNJZCIsICIk
cmVmIjogIkNhbnZhc0lkIn0gLAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhcmVzVmVy
dGV4RnJhZ21lbnRTaGFkZXIiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50
IHNoYWRlciBtb2R1bGVzIGFyZSB0aGUgc2FtZSBvYmplY3QgZm9yIGEgcmVuZGVyIHNoYWRlciBw
aXBsZWluZSBmb3IgYSBXZWJHUFUgZGV2aWNlLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52YXNJZCJ9CiAgICAgICAgICAgICBdCiAgICAgICAg
IH0KICAgICBdLApAQCAtMTUxLDcgKzE1MCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJu
YW1lIjogInJlcXVlc3RTaGFkZXJTb3VyY2UiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlJlcXVlc3RzIHRoZSBzb3VyY2Ugb2YgdGhlIHNoYWRlciBvZiB0aGUgZ2l2ZW4gdHlwZSBmcm9t
IHRoZSBwcm9ncmFtIHdpdGggdGhlIGdpdmVuIGlkLiIsCi0gICAgICAgICAgICAiY29uZGl0aW9u
IjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVmaW5lZChF
TkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29uZGl0aW9u
IjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFtSWQiLCAi
JHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkZXJU
eXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlwZSIgfQpAQCAtMTYzLDcgKzE2Miw3IEBACiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogInVwZGF0ZVNoYWRlciIsCiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQ29tcGlsZXMgYW5kIGxpbmtzIHRoZSBzaGFkZXIgd2l0aCBpZGVudGlmaWVy
IGFuZCB0eXBlIHdpdGggdGhlIGdpdmVuIHNvdXJjZSBjb2RlLiIsCi0gICAgICAgICAgICAiY29u
ZGl0aW9uIjogIihkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMKSB8fCAoZGVm
aW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVKSIsCisgICAgICAgICAgICAiY29u
ZGl0aW9uIjogImRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wiLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9ncmFt
SWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJz
aGFkZXJUeXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlwZSIgfSwKQEAgLTI0NiwxNCArMjQ1LDE0IEBA
CiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInByb2dyYW1DcmVh
dGVkIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQoRU5BQkxFX1dFQkdMKSAm
JiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJH
UFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInNoYWRlclByb2dyYW0iLCAiJHJlZiI6ICJTaGFkZXJQcm9ncmFtIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInByb2dyYW1EZWxldGVkIiwKLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiKGRlZmluZWQo
RU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wpIHx8IChkZWZpbmVkKEVOQUJMRV9XRUJHUFUp
ICYmIEVOQUJMRV9XRUJHUFUpIiwKKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZGVmaW5lZChF
TkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dy
YW1JZCIgfQogICAgICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CmluZGV4IDI5YTJk
ZWE3MjRmMGJiZWNmZWJhNmRiOTIwNjA4MTcwMWU1MTBjNTEuLmJjNDg1MGJmZjQzM2M3OTY4NGJl
MDk0MzRhMGUwZGMxODI5ZDQ3MDAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKQEAgLTUxLDcg
KzUxLDYgQEAgX0VOVU1fSURFTlRJRklFUl9SRU5BTUVfTUFQID0gewogICAgICdjYW52YXMtd2Vi
Z2wyJzogJ0NhbnZhc1dlYkdMMicsICAjIFJlY29yZGluZy5UeXBlLmNhbnZhcy13ZWJnbDIKICAg
ICAnd2ViZ2wnOiAnV2ViR0wnLCAgIyBDYW52YXMuQ29udGV4dFR5cGUud2ViZ2wKICAgICAnd2Vi
Z2wyJzogJ1dlYkdMMicsICAjIENhbnZhcy5Db250ZXh0VHlwZS53ZWJnbDIKLSAgICAnd2ViZ3B1
JzogJ1dlYkdQVScsICAjIENhbnZhcy5Db250ZXh0VHlwZS5ncHUKICAgICAnYml0bWFwcmVuZGVy
ZXInOiAnQml0bWFwUmVuZGVyZXInLCAgIyBDYW52YXMuQ29udGV4dFR5cGUuYml0bWFwcmVuZGVy
ZXIKICAgICAnbWVkaWFzb3VyY2UnOiAnTWVkaWFTb3VyY2UnLCAgIyBDb25zb2xlLkNoYW5uZWxT
b3VyY2UubWVkaWFzb3VyY2UKICAgICAnd2VicnRjJzogJ1dlYlJUQycsICAjIENvbnNvbGUuQ2hh
bm5lbFNvdXJjZS53ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMzYwYTBj
ZDgyYzhiNmMzYzhmYWU0Zjg0ZTE1M2JjYTE1OGIzNjRjMy4uOWY5MjYxZDc2NzIwMWQyMjlhNzlk
NDNlMGUxNWViOGQ2MGVkYmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTEy
MjUsMTkgKzEyMjUsNiBAQCBXZWJHTFVzaW5nTWV0YWw6CiAgICAgICAiSEFWRShXRUJHTF9DT01Q
QVRJQkxFX01FVEFMKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKLVdlYkdQVUVuYWJs
ZWQ6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJXZWJHUFUiCi0gIGh1bWFu
UmVhZGFibGVEZXNjcmlwdGlvbjogIldlYkdQVSBTa2V0Y2ggcHJvdG90eXBlIgotICBjb25kaXRp
b246IEVOQUJMRShXRUJHUFUpCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdhY3k6Ci0g
ICAgICBkZWZhdWx0OiBXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVkKCkKLSAgICBXZWJLaXQ6
Ci0gICAgICBkZWZhdWx0OiBXZWJLaXQ6OmRlZmF1bHRXZWJHUFVFbmFibGVkKCkKLSAgICBXZWJD
b3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQogV2ViTUZvcm1hdFJlYWRlckVuYWJsZWQ6CiAg
IHR5cGU6IGJvb2wKICAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGQxMGFhNDJiODBhMmI1NzZjOWU4YzVjNjk5YTVkOGIw
ZWUyZDgwMDkuLmQ4Njg4ZGNlYjYwOWJlMGU3MTIzZTU0MTk5ZDYyZjMyMWM4YWM4ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtOTAyLDEwICs5MDIsNiBAQAogI2Vycm9yICJFTkFCTEUo
V0VCR0wyKSByZXF1aXJlcyBFTkFCTEUoV0VCR0wpIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpICYmICFFTkFCTEUoV0VCR1BVKQotI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09N
UElMRVIpIHJlcXVpcmVzIEVOQUJMRShXRUJHUFUpIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKSAmJiAhRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAj
ZXJyb3IgIkVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpIHJlcXVpcmVzIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTKSIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCmluZGV4IGE5ZTEwYTI1MTllMDkzOTMxM2JmMmY1OGY0YTk2OTZlZTIxZjU3YWQuLjQ0YjQy
ZDJiOTk2Y2E2ZTliOWI5MjNhMDdlZjc3ZGM5YWExMGE5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmgKQEAgLTYxOSwxNCArNjE5LDYgQEAKICNkZWZpbmUgRU5BQkxFX1dFQkdM
MiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmICEoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSNk
ZWZpbmUgRU5BQkxFX1dFQkdQVSAxCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEVOQUJMRV9XSExT
TF9DT01QSUxFUikgJiYgRU5BQkxFKFdFQkdQVSkKLSNkZWZpbmUgRU5BQkxFX1dITFNMX0NPTVBJ
TEVSIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX1dFQlBST0NFU1NfTlNSVU5MT09Q
KSAmJiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEVOQUJMRV9XRUJQUk9DRVNTX05TUlVOTE9PUCAx
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzU0YTI4MjZmNzAxZjQyYWZmNDI2MmYz
ZWU1YmQ0OWI0ZTdlYzQ1YS4uYzg4NDgwMmMyZjZkMGYxODM4YzU4ZWNkYmIzZWE5OGEwNzBmYWQ1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYwMyw2OSArNjAzLDYgQEAgc2V0KFdlYkNvcmVf
Tk9OX1NWR19JRExfRklMRVMKIAogICAgIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJE
cml2ZXIuaWRsCiAKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5n
LmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVQmxlbmREZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQnVm
ZmVyVXNhZ2UuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5pZGwKLSAg
ICBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVDb2xv
clN0YXRlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVDb2xvcldyaXRlLmlk
bAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0Qu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1
L0dQVU9yaWdpbjNELmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5RXJyb3Iu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAotICAg
IE1vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L0dQVVNoYWRlclN0YWdlLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRs
Ci0gICAgTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxl
cy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlVXNhZ2UuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbAotICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9H
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
K0dQVS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsCi0gICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAu
aWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5pZGwKLSAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwK
LSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAotICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRl
UGlwZWxpbmUuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCi0gICAgTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsCi0gICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXQuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmlkbAotICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKLSAgICBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwK
LSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCi0gICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKLSAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW4uaWRsCi0gICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKLSAgICBNb2R1bGVz
L3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbAotCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRz
L0Nsb3NlRXZlbnQuaWRsCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
YmMzMTY4N2Y2MGRiZTBhODk0NjU0NThjNTMzM2JhNGQzOGIxMTBkYy4uNzczOTRiNzZjNDVmNmJh
ZTk3YTA1MDFhYzFiYTIwZWYxMDRiYTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC01NTEsNzQgKzU1MSw2IEBAICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcitXZWJEcml2ZXIu
aWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5k
aW5nLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJsZW5kRGVz
Y3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2Ny
aXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKLSQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVUNvbG9yV3JpdGVCaXRzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVFeHRlbnQzRC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUlu
cHV0U3RhdGVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
TG9hZE9wLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVPdXRPZk1lbW9yeUVycm9yLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlk
bAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlQml0LmlkbAotJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVVmFsaWRhdGlvbkVycm9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3IrR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5Ci0kKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5pZGwKLSQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJ1ZmZlci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJ1ZmZlckJpbmRpbmcuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGlwZWxpbmUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlRXJyb3JTY29wZXMuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAot
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRs
Ci0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1w
bGVyLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCi0k
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5pZGwKLSQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYnhyL05hdmlnYXRvcitXZWJYUi5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNDJiZTU3M2YzM2Q5YjJiNGY3NDE4MGIxNDEy
MDBmOWIyN2UxZWI5MC4uZjQ3ZTU5OTQyMDliYTcyNjU5YjgyNTQ5MTkwMjMzNWE2Mjg1YjI0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTU4Nyw4ICs1ODcsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0RPTVdpbmRvd1dlYkRhdGFiYXNlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93V2ViR1BVLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3dXZWJHUFUuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhQ3VlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGF0YVRyYW5zZmVy
LmNwcApAQCAtODUzLDY4ICs4NTEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0Zvcm1EYXRhRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zvcm1EYXRhRXZlbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQmluZEdy
b3VwTGF5b3V0QmluZGluZy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCbGVuZERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJsZW5kRGVzY3JpcHRvci5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlckRl
c2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJVc2FnZS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXNDb250ZXh0LmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDYW52YXND
b250ZXh0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVQ29sb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUNvbG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3JXcml0ZS5j
cHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29s
b3JXcml0ZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUNvbG9yV3JpdGVCaXRzLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVDb2xvcldyaXRlQml0cy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0aW9u
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRGVw
dGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFcnJvckZpbHRl
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
RXJyb3JGaWx0ZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVFeHRlbnQzRC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVRXh0ZW50M0QuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVJbnB1dFN0YXRlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVSW5wdXRTdGF0ZURlc2NyaXB0
b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVM
b2FkT3AuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVUxvYWRPcC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVU9yaWdpbjNELmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVPcmlnaW4zRC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVU91dE9mTWVtb3J5RXJyb3IuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnMuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTYW1wbGVyRGVzY3Jp
cHRvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVNoYWRlclN0YWdlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVTaGFkZXJTdGFnZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlclN0YWdlQml0LmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJTdGFnZUJpdC5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3AuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVN0b3JlT3Au
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0
dXJlRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVVGV4dHVyZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlRm9ybWF0LmgKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVz
YWdlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
UFVUZXh0dXJlVXNhZ2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWYWxpZGF0aW9u
RXJyb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dQVVZhbGlkYXRpb25FcnJvci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2Fpbk5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluT3B0aW9ucy5jcHAKQEAgLTE0MTksOCAr
MTM1NSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TmF2aWdhdG9yK0NyZWRlbnRpYWxzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrQ3JlZGVudGlhbHMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrRU1FLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9y
K0dQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TmF2aWdhdG9yK0dQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU05hdmlnYXRvcitHYW1lcGFkLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3IrR2FtZXBhZC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcitHZW9sb2NhdGlvbi5jcHAK
QEAgLTE0NDksOCArMTM4Myw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckNyZWRlbnRpYWxzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yRU1FLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0
b3JFTUUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNO
YXZpZ2F0b3JHUFUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU05hdmlnYXRvckdQVS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvckdhbWVwYWQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvckdhbWVwYWQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JHZW9sb2NhdGlvbi5j
cHAKQEAgLTI0MzcsNzIgKzIzNjksNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFUuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVyLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVBZGFwdGVy
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BV
QmluZEdyb3VwLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVCaW5kR3JvdXAuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR1BVQnVmZmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXIuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmgK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29t
bWFuZEJ1ZmZlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21tYW5kRW5jb2Rlci5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21w
dXRlUGlwZWxpbmUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVRGV2aWNlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVEZXZpY2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVE
ZXZpY2VFdmVudEhhbmRsZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUXVldWUuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVF1ZXVlLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBhc3NF
bmNvZGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTYW1wbGVyLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVU2hhZGVyTW9kdWxl
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
UFVTaGFkZXJNb2R1bGUuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVU3dhcENoYWluLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHUFVTd2FwQ2hhaW4uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlLmgKLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdQVVRleHR1
cmVWaWV3LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcApAQCAtMjYwMSwxMiArMjQ2Nyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlckdsb2JhbFNjb3BlLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTG9jYXRpb24u
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtl
ckxvY2F0aW9uLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV29ya2VyTmF2aWdhdG9yK0dQVS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9yK0dQVS5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dvcmtlck5hdmlnYXRvci5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2VyTmF2aWdhdG9y
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2Vy
TmF2aWdhdG9yR1BVLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXb3JrZXJOYXZpZ2F0b3JHUFUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJUeXBlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXb3JrZXJUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV29ya2xldC5jcHAKQEAgLTI3MjksOCArMjU5
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1RyYW5z
Zm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFNjcmlwdHMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTdHlsZVNo
ZWV0cy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExT
TFN0YW5kYXJkTGlicmFyeS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFs
cy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNv
cmVKU0J1aWx0aW5JbnRlcm5hbHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA1Y2NhZWVhMzBkMGViNjJjMWEwMTRlOTRjOTIzMGYzMTAzM2MzMjI4Li5mMTMz
MmMwZDNmOTIzYmEwYTJhNzUzM2RhM2I5ODAzMzk3NDgzOThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTQ2MCw2OCArNDYwLDYgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZHJpdmVyL05hdmln
YXRvcitXZWJEcml2ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNh
bnZhc0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9y
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3Jp
cHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0ZS5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQmxl
bmREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZm
ZXJEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZm
ZXJVc2FnZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1
bmN0aW9uLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5j
aWxTdGF0ZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQ
VUVycm9yRmlsdGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRl
bnQzRC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2UuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVWYWxpZGF0aW9uRXJyb3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJ4ci9OYXZpZ2F0b3IrV2ViWFIuaWRsIFwKQEAgLTE4NDYsMTggKzE3ODQsNiBAQCAk
KEdFTkVSQVRFX1NFVFRJTkdTKSA6ICUgOiAkKFdlYkNvcmUpL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvJS5lcmIgJChXRUJfUFJFRgogCiAjIC0tLS0tLS0tCiAKLSMgV0hMU0wgU3RhbmRhcmQg
TGlicmFyeQotCi1hbGwgOiBXSExTTFN0YW5kYXJkTGlicmFyeS5oIFdITFNMU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25NYXAuY3BwCi0KLVdITFNMU3RhbmRhcmRMaWJyYXJ5LmggOiAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKLQliYXNoIC1jICIkKFBFUkwpICQ8IFdITFNMU3Rh
bmRhcmRMaWJyYXJ5IDwoZ3ppcCAtY24gJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN0YW5kYXJkTGlicmFyeS50eHQpICRAIgotCi1XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwLmNwcCA6ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0Ci0JJChQWVRIT04pICQ8ICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICRACi0KLSMgLS0tLS0t
LS0KLQogIyBDb21tb24gZ2VuZXJhdG9yIHRoaW5ncwogCiBDT01NT05fQklORElOR1NfU0NSSVBU
UyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRH
cm91cExheW91dEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJp
bmRHcm91cExheW91dEJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVk
MGVkZjNjMjIyOWM5MTgyODM4YWZlYWY4YjJmMDZjYTMzNDhmMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVU2hhZGVyU3RhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVt
IGNsYXNzIEdQVUJpbmRpbmdUeXBlIHsKLSAgICBVbmlmb3JtQnVmZmVyLAotICAgIER5bmFtaWNV
bmlmb3JtQnVmZmVyLAotICAgIFNhbXBsZXIsCi0gICAgU2FtcGxlZFRleHR1cmUsCi0gICAgU3Rv
cmFnZUJ1ZmZlciwKLSAgICBEeW5hbWljU3RvcmFnZUJ1ZmZlciwKLX07Ci0KLXN0cnVjdCBHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAgIEdQVVNo
YWRlclN0YWdlRmxhZ3MgdmlzaWJpbGl0eTsKLSAgICBHUFVCaW5kaW5nVHlwZSB0eXBlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91cExheW91
dEJpbmRpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3Vw
TGF5b3V0QmluZGluZy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMGZmMDdi
OTcxMDYyZTVhY2IxOGZlODIyOWQ3MjMwNzE2MmIzNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
QmluZEdyb3VwTGF5b3V0QmluZGluZy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdTMyIEdQVVNoYWRlclN0YWdlRmxhZ3M7Ci0K
LVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVUJpbmRpbmdUeXBlCi1dIGVudW0gR1BVQmluZGluZ1R5
cGUgewotICAgICJ1bmlmb3JtLWJ1ZmZlciIsCi0gICAgImR5bmFtaWMtdW5pZm9ybS1idWZmZXIi
LAotICAgICJzYW1wbGVyIiwKLSAgICAic2FtcGxlZC10ZXh0dXJlIiwKLSAgICAic3RvcmFnZS1i
dWZmZXIiLAotICAgICJkeW5hbWljLXN0b3JhZ2UtYnVmZmVyIgotICAgIC8vIFRPRE8gb3RoZXIg
YmluZGluZyB0eXBlcwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dEJpbmRp
bmcgewotICAgIHJlcXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIEdQVVNoYWRlclN0
YWdlRmxhZ3MgdmlzaWJpbGl0eTsKLSAgICByZXF1aXJlZCBHUFVCaW5kaW5nVHlwZSB0eXBlOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDYzNmJmZTRkNzJlZDlhNGI1NDA3MGE1N2EzYjA5MzM5NWNkZDYyYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZy5oIgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgVmVjdG9yPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+
IGJpbmRpbmdzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRmZGE3YmQ0Y2JiMTg5MTg4OGM2NTI0Y2M1MzQyMzc3OTBmZDA3NzUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc+IGJp
bmRpbmdzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUJsZW5kRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVC
bGVuZERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDIxOTIz
NzdlNmM4NzE4N2ZmZjZkYjdkYmM1MTU3NmFmZjdhZDY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUJsZW5kRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxl
bWVudGVkQXM9R1BVQmxlbmRGYWN0b3IKLV0gZW51bSBHUFVCbGVuZEZhY3RvciB7Ci0gICAgInpl
cm8iLAotICAgICJvbmUiLAotICAgICJzcmMtY29sb3IiLAotICAgICJvbmUtbWludXMtc3JjLWNv
bG9yIiwKLSAgICAic3JjLWFscGhhIiwKLSAgICAib25lLW1pbnVzLXNyYy1hbHBoYSIsCi0gICAg
ImRzdC1jb2xvciIsCi0gICAgIm9uZS1taW51cy1kc3QtY29sb3IiLAotICAgICJkc3QtYWxwaGEi
LAotICAgICJvbmUtbWludXMtZHN0LWFscGhhIiwKLSAgICAic3JjLWFscGhhLXNhdHVyYXRlZCIs
Ci0gICAgImJsZW5kLWNvbG9yIiwKLSAgICAib25lLW1pbnVzLWJsZW5kLWNvbG9yIgotfTsKLQot
WwotICAgIEltcGxlbWVudGVkQXM9R1BVQmxlbmRPcGVyYXRpb24KLV0gZW51bSBHUFVCbGVuZE9w
ZXJhdGlvbiB7Ci0gICAgImFkZCIsCi0gICAgInN1YnRyYWN0IiwKLSAgICAicmV2ZXJzZS1zdWJ0
cmFjdCIsCi0gICAgIm1pbiIsCi0gICAgIm1heCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVCbGVu
ZERlc2NyaXB0b3IgewotICAgIEdQVUJsZW5kRmFjdG9yIHNyY0ZhY3RvciA9ICJvbmUiOwotICAg
IEdQVUJsZW5kRmFjdG9yIGRzdEZhY3RvciA9ICJ6ZXJvIjsKLSAgICBHUFVCbGVuZE9wZXJhdGlv
biBvcGVyYXRpb24gPSAiYWRkIjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1MGRmMjRmZTdmMTFjZTg0YzNkY2ZhNGMxOTE2YWE4MGU5NDhkZmU5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBHUFVCdWZmZXJVc2FnZUZsYWdzOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVQnVmZmVyRGVzY3JpcHRv
ciB7Ci0gICAgcmVxdWlyZWQgdTY0IHNpemU7Ci0gICAgcmVxdWlyZWQgR1BVQnVmZmVyVXNhZ2VG
bGFncyB1c2FnZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVCdWZmZXJVc2FnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVC
dWZmZXJVc2FnZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwODMxNGQ1MmFm
Mzk0ZGRjYzViYWVjMTRiNjNhM2MwNTNjMjMyZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQnVm
ZmVyVXNhZ2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyB1MzI7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVCdWZmZXJVc2Fn
ZSB7Ci0gICAgY29uc3QgdTMyIE5PTkUgPSAwOwotICAgIGNvbnN0IHUzMiBNQVBfUkVBRCA9IDE7
Ci0gICAgY29uc3QgdTMyIE1BUF9XUklURSA9IDI7Ci0gICAgY29uc3QgdTMyIENPUFlfU1JDID0g
NDsKLSAgICBjb25zdCB1MzIgQ09QWV9EU1QgPSA4OwotICAgIGNvbnN0IHUzMiBJTkRFWCA9IDE2
OwotICAgIGNvbnN0IHUzMiBWRVJURVggPSAzMjsKLSAgICBjb25zdCB1MzIgVU5JRk9STSA9IDY0
OwotICAgIGNvbnN0IHUzMiBTVE9SQUdFID0gMTI4OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDM4YjE1MjhmZmMzYTk1MjU4NTBhOTRkNjVlZDI3OTRhNGQ4MDRjMzUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVDYW52YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChHUFVDYW52YXNDb250ZXh0KTsKLQotc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0Nv
bnRleHQ+IEdQVUNhbnZhc0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCi17Ci0g
ICAgYXV0byBjb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+KG5ldyBH
UFVDYW52YXNDb250ZXh0KGNhbnZhcykpOwotICAgIGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgp
OwotICAgIHJldHVybiBjb250ZXh0OwotfQotCi1HUFVDYW52YXNDb250ZXh0OjpHUFVDYW52YXND
b250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcykKLSAgICA6IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dChjYW52YXMpCi17Ci19Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IEdQVUNhbnZhc0Nv
bnRleHQ6OmNvbmZpZ3VyZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQotewotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IuYXNH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAg
ICByZXR1cm4gV2ViR1BVU3dhcENoYWluOjpjcmVhdGUobnVsbHB0cik7Ci0gICAgCi0gICAgYXV0
byBncHVTd2FwQ2hhaW4gPSBHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgqZ3B1RGVzY3JpcHRvciwg
Y2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSk7Ci0gICAgYm9vbCBz
dWNjZXNzID0gZ3B1U3dhcENoYWluOwotICAgIGF1dG8gbmV3U3dhcENoYWluID0gV2ViR1BVU3dh
cENoYWluOjpjcmVhdGUoV1RGTW92ZShncHVTd2FwQ2hhaW4pKTsKLSAgICAKLSAgICAvLyBVcG9u
IHN1Y2Nlc3MsIGludmFsaWRhdGUgYW5kIHJlcGxhY2UgYW55IGV4aXN0aW5nIHN3YXAgY2hhaW4u
Ci0gICAgaWYgKHN1Y2Nlc3MpIHsKLSAgICAgICAgLy8gRklYTUU6IFRlc3QgdGhhdCB0aGlzIHdv
cmtzIGFzIGV4cGVjdGVkIHdpdGggZXJyb3IgcmVwb3J0aW5nLgotICAgICAgICBpZiAobV9zd2Fw
Q2hhaW4pCi0gICAgICAgICAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgpOwotCi0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbmZpZ3VyZVN3YXBDaGFpbigqdGhpcywgbmV3
U3dhcENoYWluLmdldCgpKTsKLQotICAgICAgICBtX3N3YXBDaGFpbiA9IG5ld1N3YXBDaGFpbi5j
b3B5UmVmKCk7Ci0KLSAgICAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5nZWQoKTsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIG5ld1N3YXBDaGFpbjsKLX0KLQotUGxhdGZvcm1MYXllciogR1BV
Q2FudmFzQ29udGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3dhcENo
YWluICYmIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKSkKLSAgICAgICAgcmV0dXJuIG1fc3dhcENo
YWluLT5zd2FwQ2hhaW4oKS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCi12b2lkIEdQVUNhbnZhc0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQotewotICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCi0g
ICAgICAgIG1fc3dhcENoYWluLT5zd2FwQ2hhaW4oKS0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsK
LQotICAgIG5vdGlmeUNhbnZhc0NvbnRlbnRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgR1BVQ2FudmFz
Q29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQotewotICAgIG1faXNEaXNwbGF5
aW5nV2l0aFBhaW50ID0gdHJ1ZTsKLX0KLQotdm9pZCBHUFVDYW52YXNDb250ZXh0OjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCi17Ci0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQu
Ci0gICAgaWYgKG1faXNEaXNwbGF5aW5nV2l0aFBhaW50ICYmIG1fc3dhcENoYWluICYmIG1fc3dh
cENoYWluLT5zd2FwQ2hhaW4oKSkgewotICAgICAgICBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkt
PnByZXNlbnQoKTsKLSAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBmYWxzZTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXNDb250ZXh0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5
NGEwMGQxNjMyZTEzZDBjOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAi
V2ViR1BVU3dhcENoYWluLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCi1jbGFzcyBH
UFVDYW52YXNDb250ZXh0IGZpbmFsIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVDYW52YXNDb250ZXh0KTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdQVUNhbnZhc0NvbnRleHQ+IGNyZWF0
ZShDYW52YXNCYXNlJik7Ci0KLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7IH0KLQot
ICAgIFdlYkdQVVN3YXBDaGFpbiogc3dhcENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwQ2hh
aW4uZ2V0KCk7IH0KLSAgICBSZWY8V2ViR1BVU3dhcENoYWluPiBjb25maWd1cmVTd2FwQ2hhaW4o
Y29uc3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciYpOwotCi1wcml2YXRlOgotICAgIEdQVUNh
bnZhc0NvbnRleHQoQ2FudmFzQmFzZSYpOwotCi0gICAgLy8gR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0Ci0gICAgYm9vbCBpc1dlYkdQVSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Ci0gICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7Ci0gICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoKSBmaW5hbDsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkdQ
VUNhbnZhc0NvbnRleHQiOyB9Ci0gICAgLy8gRklYTUU6IFN0dWJzLgotICAgIHZvaWQgc3RvcCgp
IGZpbmFsIHsgfQotCi0gICAgYm9vbCBtX2lzRGlzcGxheWluZ1dpdGhQYWludCB7IGZhbHNlIH07
Ci0gICAgUmVmUHRyPFdlYkdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci19OwotCi19IC8vIG4B
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklO
R0NPTlRFWFQoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dCwgaXNXZWJHUFUoKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVDYW52YXNDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWEy
NDE2MTFkMDBkNmIxNmRjNTNmYjc3ZTYwYjI2ZmJiOTMyZTAwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5z
aWduZWQgbG9uZyBHUFVUZXh0dXJlVXNhZ2VGbGFnczsKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdl
YkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IKLV0gZGljdGlvbmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVEZXZpY2UgZGV2aWNlOwotICAgIHJlcXVpcmVk
IEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0OwotICAgIEdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdl
OyAvLyBGSVhNRTogZGVmYXVsdCBpcyBHUFVUZXh0dXJlVXNhZ2UuT1VUUFVUX0FUVEFDSE1FTlQu
Ci19OwotCi1bCi0gICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxDYW52YXNCYXNlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVDYW52YXND
b250ZXh0IHsKLSAgICAvLyBiYWNrLXJlZmVyZW5jZSB0byB0aGUgY2FudmFzCi0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhczsKLQotICAgIC8vIENhbGxpbmcg
Y29uZmlndXJlU3dhcENoYWluIGEgc2Vjb25kIHRpbWUgaW52YWxpZGF0ZXMgdGhlIHByZXZpb3Vz
IG9uZSwKLSAgICAvLyBhbmQgYWxsIG9mIHRoZSB0ZXh0dXJlcyBpdOKAmXMgcHJvZHVjZWQuCi0g
ICAgV2ViR1BVU3dhcENoYWluIGNvbmZpZ3VyZVN3YXBDaGFpbihXZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KLSAgICAv
LyBQcm9taXNlPEdQVVRleHR1cmVGb3JtYXQ+IGdldFN3YXBDaGFpblByZWZlcnJlZEZvcm1hdChH
UFVEZXZpY2UgZGV2aWNlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb2xvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVD
b2xvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODk1ZjVmMjIzYTM5MWU0
ZDMxN2VkMjllYWQwYWY0NzI2ZmFkYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVDb2xvciB7Ci0gICAgcmVx
dWlyZWQgZmxvYXQgcjsKLSAgICByZXF1aXJlZCBmbG9hdCBnOwotICAgIHJlcXVpcmVkIGZsb2F0
IGI7Ci0gICAgcmVxdWlyZWQgZmxvYXQgYTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYTAzMDk1ZjYyZTdkZGM4MjhmMjcxYTY4ZjgzNTRjNDEy
ODY1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHUFVDb2xvcldyaXRl
RmxhZ3M7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciB7Ci0gICAgcmVx
dWlyZWQgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICByZXF1aXJlZCBHUFVCbGVuZERl
c2NyaXB0b3IgYWxwaGFCbGVuZDsKLSAgICByZXF1aXJlZCBHUFVCbGVuZERlc2NyaXB0b3IgY29s
b3JCbGVuZDsKLSAgICBHUFVDb2xvcldyaXRlRmxhZ3Mgd3JpdGVNYXNrOyAvLyBHUFVDb2xvcldy
aXRlLkFMTAotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUNvbG9yV3JpdGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JX
cml0ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGRjNTg4MWEwMTc5N2I1
MTAxNDgzOGU1ZTBjN2YxZGI5NjJkZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3JXcml0
ZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsK
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAot
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVUNvbG9yV3JpdGUgewotICAg
IGNvbnN0IHUzMiBOT05FID0gMDsKLSAgICBjb25zdCB1MzIgUkVEID0gMTsKLSAgICBjb25zdCB1
MzIgR1JFRU4gPSAyOwotICAgIGNvbnN0IHUzMiBCTFVFID0gNDsKLSAgICBjb25zdCB1MzIgQUxQ
SEEgPSA4OwotICAgIGNvbnN0IHUzMiBBTEwgPSAxNTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTBmZmI0ZjFkZjJkZGJlOTM0MWFjYzNmZDExZjVhMjcwYWM0ZTQw
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZW51bSBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgICJuZXZlciIsCi0g
ICAgImxlc3MiLAotICAgICJlcXVhbCIsCi0gICAgImxlc3MtZXF1YWwiLAotICAgICJncmVhdGVy
IiwKLSAgICAibm90LWVxdWFsIiwKLSAgICAiZ3JlYXRlci1lcXVhbCIsCi0gICAgImFsd2F5cyIK
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0
ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjBjOTJmYjBkMzg5MzYxYWUyNjZlY2VlOTRkMDRkMGJmZDBmNmE0YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0
b3IgewotICAgIGJvb2xlYW4gZGVwdGhXcml0ZUVuYWJsZWQgPSBmYWxzZTsKLSAgICBHUFVDb21w
YXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlID0gImFsd2F5cyI7Ci0KLS8qIE5vdCBZZXQgSW1wbGVt
ZW50ZWQKLSAgICBHUFVTdGVuY2lsU3RhdGVGYWNlRGVzY3JpcHRvciBzdGVuY2lsRnJvbnQ7Ci0g
ICAgR1BVU3RlbmNpbFN0YXRlRmFjZURlc2NyaXB0b3Igc3RlbmNpbEJhY2s7Ci0KLSAgICB1MzIg
c3RlbmNpbFJlYWRNYXNrOwotICAgIHUzMiBzdGVuY2lsV3JpdGVNYXNrOwotKi8KLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFcnJvckZpbHRlci5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOGY0OWE2MWMyNzllOTAyNjQ4NGM2ZWY5MDY0NWVh
ZDViMWFiYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRXJyb3JGaWx0ZXIuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZW51bSBHUFVFcnJvckZpbHRlciB7Ci0gICAgIm5vbmUiLAotICAg
ICJvdXQtb2YtbWVtb3J5IiwKLSAgICAidmFsaWRhdGlvbiIKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQxMTk3Njk3MzYwNzE1NjY0NWVhZjAzMzViODJlMDg4MjE3YmFjMmEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVk
ZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVJbnRlZ2VyQ29vcmRpbmF0ZTsKLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQot
XSBkaWN0aW9uYXJ5IEdQVUV4dGVudDNEIHsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRp
bmF0ZSB3aWR0aDsKLSAgICByZXF1aXJlZCBHUFVJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQ7Ci0g
ICAgcmVxdWlyZWQgR1BVSW50ZWdlckNvb3JkaW5hdGUgZGVwdGg7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdjMmQ0ZmEyODJmYzY5NjAyN2U5Y2ZhNWYzNWE0NjcyYTc5M2E3M2IuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0g
R1BVTG9hZE9wIHsKLSAgICAiY2xlYXIiLAotICAgICJsb2FkIgotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZjJiN2IzNmRkY2EzYWFjNWNiMzUwZTAwNDA4YTI3NDE2ZDI2NWRmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVPcmlnaW4zRCB7Ci0gICAgdW5zaWduZWQgeCB7IDAg
fTsKLSAgICB1bnNpZ25lZCB5IHsgMCB9OwotICAgIHVuc2lnbmVkIHogeyAwIH07Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyNzcxOWMwMjI0ZDMzN2IxYTE2NjBiOGQwNjA4MTEyN2IzOTViY2Vk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
YgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVT3JpZ2lu
M0QgewotICAgIHUzMiB4ID0gMDsKLSAgICB1MzIgeSA9IDA7Ci0gICAgdTMyIHogPSAwOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU91dE9mTWVtb3J5
RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1vcnlF
cnJvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDgwYWUwMmRhMWZjNWIw
NDAxNzRlYTcyZjkyMzg3NTZjZjFhZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3V0T2ZNZW1v
cnlFcnJvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBHUFVPdXRPZk1lbW9y
eUVycm9yIHsKLSAgICBjb25zdHJ1Y3RvcigpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWEwMGQ2MWFiZjhhNTA0YTQwMTk5NGE3Y2JkYTEx
MmJkMzhlOTdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVUG93ZXJQ
cmVmZXJlbmNlCi1dIGVudW0gR1BVUG93ZXJQcmVmZXJlbmNlIHsKLSAgICAibG93LXBvd2VyIiwK
LSAgICAiaGlnaC1wZXJmb3JtYW5jZSIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUs
Ci0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVSZXF1ZXN0QWRh
cHRlck9wdGlvbnMgewotICAgIEdQVVBvd2VyUHJlZmVyZW5jZT8gcG93ZXJQcmVmZXJlbmNlOwot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNhbXBsZXJE
ZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzMTM2ODQ5OWZj
ZTJmNGJjYzgxOTA5ZDczYWQ4MTBjNWMzZTE2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTYW1w
bGVyRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHUzMjsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVQWRkcmVzc01vZGUKLV0gZW51
bSBHUFVBZGRyZXNzTW9kZSB7Ci0gICAgImNsYW1wLXRvLWVkZ2UiLAotICAgICJyZXBlYXQiLAot
ICAgICJtaXJyb3ItcmVwZWF0IgotfTsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVRmlsdGVy
TW9kZQotXSBlbnVtIEdQVUZpbHRlck1vZGUgewotICAgICJuZWFyZXN0IiwKLSAgICAibGluZWFy
IgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkdQVQotXSBkaWN0aW9uYXJ5IEdQVVNhbXBsZXJEZXNjcmlwdG9yIHsKLSAgICBHUFVBZGRy
ZXNzTW9kZSBhZGRyZXNzTW9kZVUgPSAiY2xhbXBUb0VkZ2UiOwotICAgIEdQVUFkZHJlc3NNb2Rl
IGFkZHJlc3NNb2RlViA9ICJjbGFtcFRvRWRnZSI7Ci0gICAgR1BVQWRkcmVzc01vZGUgYWRkcmVz
c01vZGVXID0gImNsYW1wVG9FZGdlIjsKLSAgICBHUFVGaWx0ZXJNb2RlIG1hZ0ZpbHRlciA9ICJu
ZWFyZXN0IjsKLSAgICBHUFVGaWx0ZXJNb2RlIG1pbkZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBH
UFVGaWx0ZXJNb2RlIG1pcG1hcEZpbHRlciA9ICJuZWFyZXN0IjsKLSAgICBmbG9hdCBsb2RNaW5D
bGFtcCA9IDA7Ci0gICAgZmxvYXQgbG9kTWF4Q2xhbXAgPSAweGZmZmZmZmZmOyAvLyBUT0RPOiBX
aGF0IHNob3VsZCB0aGlzIGJlPyBXYXMgTnVtYmVyLk1BWF9WQUxVRS4KLSAgICB1MzIgbWF4QW5p
c290cm9weSA9IDE7Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbiA9ICJu
ZXZlciI7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
U2hhZGVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0
YWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWFkNDdlZmRkODBlNGM5NTI2
MWU1ZDI5ZWFjMWEzYWI4OTgyNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyU3RhZ2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIEdQVVNoYWRlclN0YWdlRmxhZ3MgPSB1bnNp
Z25lZDsKLQotY2xhc3MgR1BVU2hhZGVyU3RhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFk
ZXJTdGFnZT4gewotcHVibGljOgotICAgIGVudW0gRmxhZ3MgOiBHUFVTaGFkZXJTdGFnZUZsYWdz
IHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFZlcnRleCA9IDEgPDwgMCwKLSAgICAgICAg
RnJhZ21lbnQgPSAxIDw8IDEsCi0gICAgICAgIENvbXB1dGUgPSAxIDw8IDIsCi0gICAgfTsKLX07
Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlclN0YWdlLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMzMWMyMzk1ZTNhYjYyZGE1YTM1YTIzMDg1
NzdjNTg4N2M3NGM2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJTdGFnZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBEb05vdENoZWNrQ29uc3RhbnRzLAotICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIEdQVVNoYWRlclN0YWdlIHsKLSAgICBjb25zdCB1
MzIgTk9ORSA9IDA7Ci0gICAgY29uc3QgdTMyIFZFUlRFWCA9IDE7Ci0gICAgY29uc3QgdTMyIEZS
QUdNRU5UID0gMjsKLSAgICBjb25zdCB1MzIgQ09NUFVURSA9IDQ7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2MxMmI5NTJlODc0ODAwY2U2NmE5ZDc5Nzg4ZjA0NTQ1MmFhMmI4MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVu
dW0gR1BVU3RvcmVPcCB7Ci0gICAgInN0b3JlIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGZhMGMzYzI0OGJkOGZhYzFiYzE1NjhkN2Q2MTJiYTM2OTRmZWVm
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQVUlu
dGVnZXJDb29yZGluYXRlOwotdHlwZWRlZiBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIEdQ
VVNpemUzMjsKLXR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVUZXh0dXJl
VXNhZ2VGbGFnczsKLQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVVGV4dHVyZURpbWVuc2lvbgot
XSBlbnVtIEdQVVRleHR1cmVEaW1lbnNpb24gewotICAgICIxZCIsCi0gICAgIjJkIiwKLSAgICAi
M2QiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRp
bmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVGV4dHVyZURlc2NyaXB0b3IgewotICAgIHJlcXVp
cmVkIEdQVUV4dGVudDNEIHNpemU7Ci0gICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgbWlwTGV2ZWxD
b3VudCA9IDE7Ci0gICAgR1BVU2l6ZTMyIHNhbXBsZUNvdW50ID0gMTsKLSAgICBHUFVUZXh0dXJl
RGltZW5zaW9uIGRpbWVuc2lvbiA9ICIyZCI7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZUZvcm1h
dCBmb3JtYXQ7Ci0gICAgcmVxdWlyZWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1h
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0Lmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhMWY3NzZlNDE3NzUyZDA4YjI4YWQ3
ZWU4ZDc0ZWQyZDUyMjM3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0Lmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGVudW0gR1BV
VGV4dHVyZUZvcm1hdCB7Ci0gICAgInJnYmE4dW5vcm0iLAotICAgICJyZ2JhOHVpbnQiLAotICAg
ICJiZ3JhOHVub3JtIiwKLSAgICAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICAiYmdyYTh1
bm9ybS1zcmdiIiwKLSAgICAicmdiYTE2ZmxvYXQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNhY2MzOGY3ZDY1ZTk1NWU5ZDZiN2I5MTMyYWZlYmExYzUyM2I2ZGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVVzYWdlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgot
Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAotICAgIERvTm90Q2hlY2tDb25zdGFudHMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgR1BVVGV4dHVyZVVzYWdlIHsKLSAgICBjb25zdCB1MzIgQ09QWV9TUkMgPSAxOwot
ICAgIGNvbnN0IHUzMiBDT1BZX0RTVCA9IDI7Ci0gICAgY29uc3QgdTMyIFNBTVBMRUQgPSA0Owot
ICAgIGNvbnN0IHUzMiBTVE9SQUdFID0gODsKLSAgICBjb25zdCB1MzIgT1VUUFVUX0FUVEFDSE1F
TlQgPSAxNjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZmOWQxYmEzYWU0NzcyOTdmZGQ4M2I3YmFhMjJkMTYzNzhjODk5ZTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KTsKLQotUmVm
PEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVVuY2FwdHVyZWRF
cnJvckV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKLX0KLQotUmVmPEdQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50PiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIEdQVUVycm9yJiYgZXJyb3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQodHlwZSwgV1RGTW92ZShlcnJvcikpKTsK
LX0KLQotR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OkdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQg
aXNUcnVzdGVkKQotICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKLSAg
ICAsIG1fZXJyb3IoaW5pdGlhbGl6ZXIuZXJyb3IpCi17Ci19Ci0KLUdQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50OjpHUFVVbmNhcHR1cmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBH
UFVFcnJvciYmIGVycm9yKQotICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5j
ZWxhYmxlOjpObykKLSAgICAsIG1fZXJyb3IoV1RGTW92ZShlcnJvcikpCi17Ci19Ci0KLUV2ZW50
SW50ZXJmYWNlIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW50ZXJmYWNlVHlwZTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJv
ckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJy
b3JFdmVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZTk1ZGFkZWY1YmFi
M2E4YmU2ZWMyZWU0MzNmN2M2ZjNmMjMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRXZlbnQu
aCIKLSNpbmNsdWRlICJHUFVFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBmaW5hbCA6IHB1
YmxpYyBFdmVudCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVVbmNhcHR1cmVkRXJy
b3JFdmVudCk7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEluaXQ6IEV2ZW50SW5pdCB7Ci0gICAgICAg
IEdQVUVycm9yIGVycm9yOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRF
cnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKLSAgICBzdGF0aWMgUmVmPEdQVVVuY2FwdHVyZWRFcnJvckV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIEdQVUVycm9yJiYpOwotCi0gICAgY29uc3Qg
R1BVRXJyb3IgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQm
LCBJc1RydXN0ZWQpOwotICAgIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmLCBHUFVFcnJvciYmKTsKLQotICAgIC8vIEV2ZW50Ci0gICAgRXZlbnRJbnRlcmZhY2UgZXZl
bnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEdQVUVycm9yIG1fZXJyb3I7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2NkODE1Y2Jk
MTVmYmFjZjJlZjFjMTk4NDBmZjQwZDFmZGNlYTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIChH
UFVPdXRPZk1lbW9yeUVycm9yIG9yIEdQVVZhbGlkYXRpb25FcnJvcikgR1BVRXJyb3I7Ci0KLVsK
LSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0g
ZGljdGlvbmFyeSBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgOiBFdmVudEluaXQgewotICAg
IHJlcXVpcmVkIEdQVUVycm9yIGVycm9yOwotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQgOiBFdmVudCB7Ci0gICAgY29uc3RydWN0
b3IoRE9NU3RyaW5nIHR5cGUsIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50SW5pdCBncHVVbmNhcHR1
cmVkRXJyb3JFdmVudEluaXREaWN0KTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHUFVFcnJv
ciBlcnJvcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVWYWxpZGF0aW9uRXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
VmFsaWRhdGlvbkVycm9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjNWIx
NTZmYjcyOGM2MzBmZDczY2VkNjcyMWEzNWE5OTk2NjQwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVWYWxpZGF0aW9uRXJyb3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgR1BV
VmFsaWRhdGlvbkVycm9yIHsKLSAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgbWVzc2FnZSk7Ci0K
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQzZDI2YzUz
MGUyZjYzM2MwZDI3YmMxMTAzNmM1MDM5ZWEzNjVkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0Owot
Ci1bCi0gICAgSW1wbGVtZW50ZWRBcz1HUFVWZXJ0ZXhGb3JtYXQKLV0gZW51bSBHUFVWZXJ0ZXhG
b3JtYXQgewotICAgICJmbG9hdCIsCi0gICAgImZsb2F0MiIsCi0gICAgImZsb2F0MyIsCi0gICAg
ImZsb2F0NCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
IHsKLSAgICB1NjQgb2Zmc2V0ID0gMDsKLSAgICByZXF1aXJlZCBHUFVWZXJ0ZXhGb3JtYXQgZm9y
bWF0OwotICAgIHJlcXVpcmVkIHUzMiBzaGFkZXJMb2NhdGlvbjsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWUwOGY2NTg2ZGQ4OTUyYzE3
NzA3NmNmZjkyNWJjZDQxMzE1NjhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Ci0KLVsKLSAgICBJbXBs
ZW1lbnRlZEFzPUdQVUlucHV0U3RlcE1vZGUKLV0gZW51bSBHUFVJbnB1dFN0ZXBNb2RlIHsKLSAg
ICAidmVydGV4IiwKLSAgICAiaW5zdGFuY2UiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvciB7Ci0gICAgcmVxdWlyZWQgdTY0IHN0cmlkZTsKLSAgICBHUFVJbnB1
dFN0ZXBNb2RlIHN0ZXBNb2RlID0gInZlcnRleCI7Ci0gICAgc2VxdWVuY2U8R1BVVmVydGV4QXR0
cmlidXRlRGVzY3JpcHRvcj4gYXR0cmlidXRlU2V0OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjk3YjEwZWU0MWE4MTFmYzNkMjkyOTMwMmU0
Mjc3NWYwZWE3M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRv
ci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsK
LQotWwotICAgIEltcGxlbWVudGVkQXM9R1BVSW5kZXhGb3JtYXQKLV0gZW51bSBHUFVJbmRleEZv
cm1hdCB7Ci0gICAgInVpbnQxNiIsCi0gICAgInVpbnQzMiIKLX07Ci0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IgewotICAgIEdQVUluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0
ID0gInVpbnQzMiI7Ci0gICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvcj8+IHZlcnRleEJ1ZmZlcnM7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvTmF2aWdhdG9yK0dQVS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9OYXZpZ2F0b3IrR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIw
ZjhmMTc1Njk0OTQwNWI0OTRmMjQyNzgxNzQyNjkxMDkzZjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3IrR1BVLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNuYXZpZ2F0b3ItZ3B1
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BV
LAotICAgIEltcGxlbWVudGVkQnk9TmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIE5h
dmlnYXRvciB7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2ZjMDdiYjY1OGZkNjE5YWZmM2QyNDkz
OGM2MGQ4ZTFkNWNmODUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIk5hdmlnYXRvckdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIk5hdmlnYXRvci5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLU5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRvciog
bmF2aWdhdG9yKQotewotICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0
PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKLSAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7Ci0gICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0KLWNvbnN0IGNoYXIqIE5hdmlnYXRvckdQVTo6c3VwcGxl
bWVudE5hbWUoKQotewotICAgIHJldHVybiAiTmF2aWdhdG9yR1BVIjsKLX0KLQotY29uc3QgV2Vi
R1BVKiBOYXZpZ2F0b3JHUFU6OmdwdShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKLXsKLSAgICBhdXRv
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBuYXZpZ2F0b3Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1
ZXMoKS53ZWJHUFVFbmFibGVkKTsKLSAgICByZXR1cm4gTmF2aWdhdG9yR1BVOjpmcm9tKCZuYXZp
Z2F0b3IpLT5ncHUoKTsKLX0KLQotY29uc3QgV2ViR1BVKiBOYXZpZ2F0b3JHUFU6OmdwdSgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2dwdSkKLSAgICAgICAgbV9ncHUgPSBXZWJHUFU6OmNyZWF0ZSgp
OwotICAgIHJldHVybiBtX2dwdS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvTmF2aWdhdG9yR1BVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NThkMDg0
NmNkNjcyOWY0OGVlOTVlNzcyM2I5ZmRiOTFmNDhiNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiU3VwcGxlbWVu
dGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOYXZpZ2F0b3I7Ci1jbGFz
cyBXZWJHUFU7Ci0KLWNsYXNzIE5hdmlnYXRvckdQVSBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50
PE5hdmlnYXRvcj4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IHN0YXRpYyBjb25zdCBXZWJHUFUqIGdwdShOYXZpZ2F0b3ImKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgTmF2aWdhdG9yR1BVKiBmcm9tKE5hdmlnYXRvciopOwotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkdQVSogZ3B1KCkgY29u
c3Q7Ci0KLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFU+IG1fZ3B1OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY0NjNmOWUwYTE2ZGVlYWUxNTBiZTUxNzJkMTJiMWI3MjdjNDky
OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNULmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKLSNp
bmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlU
eXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50
aWMuaCIKLSNpbmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0
ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5T
ZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTENvbW1hRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xDb250aW51ZS5oIgotI2luY2x1ZGUgIldITFNMRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUg
IldITFNMRG90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRp
b25NZW1iZXIuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgot
I2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2gu
aCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRM
aXRlcmFsVHlwZS5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNM
RnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50Lmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEludGVn
ZXJMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
IldITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2lu
dGVyVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKLSNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFJlc29sdmFibGVUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmgiCi0jaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50
LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRMaXN0LmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1l
bnQuaCIKLSNpbmNsdWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIK
LSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJl
ZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc0VzY2FwZU1vZGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNiMjk2ZDhkMzNkNWJmNmE5NDk2YmIwYzMxMTY3N2Rh
MjljOWUxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzRXNjYXBl
TW9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNz
IEFkZHJlc3NFc2NhcGVNb2RlIDogdWludDhfdCB7Ci0gICAgRXNjYXBlcywgLy8gQ29uc2VydmF0
aXZlbHksIHRoaXMgYWRkcmVzcy1vZiBvcGVyYXRpb24gbWlnaHQgZXNjYXBlLgotICAgIERvZXNO
b3RFc2NhcGUgLy8gVGhpcyBhZGRyZXNzLW9mIG9wZXJhdGlvbiBkZWZpbml0ZWx5IGRvZXMgbm90
IGVzY2FwZS4KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMTg2NjY4YjY2N2U4NDY1Yzc4OTg5YTAwMDZiNmEwZjZkMGQyMTk4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEFkZHJl
c3NTcGFjZSA6IHVpbnQ4X3QgewotICAgIENvbnN0YW50LAotICAgIERldmljZSwKLSAgICBUaHJl
YWRncm91cCwKLSAgICBUaHJlYWQKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyB0b1N0
cmluZyhBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotewotICAgIHN3aXRjaCAoYWRkcmVzc1Nw
YWNlKSB7Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4g
ImNvbnN0YW50IjsKLSAgICBjYXNlIEFkZHJlc3NTcGFjZTo6RGV2aWNlOgotICAgICAgICByZXR1
cm4gImRldmljZSI7Ci0gICAgY2FzZSBBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOgotICAgICAg
ICByZXR1cm4gInRocmVhZGdyb3VwIjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoYWRk
cmVzc1NwYWNlID09IEFkZHJlc3NTcGFjZTo6VGhyZWFkKTsKLSAgICAgICAgcmV0dXJuICJ0aHJl
YWQiOwotICAgIH0KLX0KLQotc3RydWN0IExlZnRWYWx1ZSB7Ci0gICAgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZTsKLX07Ci0KLXN0cnVjdCBBYnN0cmFjdExlZnRWYWx1ZSB7Ci19OwotCi1zdHJ1
Y3QgUmlnaHRWYWx1ZSB7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2Fy
eS4KLWNsYXNzIFR5cGVBbm5vdGF0aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBUeXBlQW5ub3RhdGlvbigpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAg
ICAgOiBtX2VtcHR5KHRydWUpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90
YXRpb24oTGVmdFZhbHVlIHYpCi0gICAgICAgIDogbV9pbm5lcih2KQotICAgIHsKLSAgICB9Ci0K
LSAgICBUeXBlQW5ub3RhdGlvbihBYnN0cmFjdExlZnRWYWx1ZSB2KQotICAgICAgICA6IG1faW5u
ZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24oUmlnaHRWYWx1ZSB2KQot
ICAgICAgICA6IG1faW5uZXIodikKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUFubm90YXRpb24o
Y29uc3QgVHlwZUFubm90YXRpb24mKSA9IGRlZmF1bHQ7Ci0gICAgVHlwZUFubm90YXRpb24oVHlw
ZUFubm90YXRpb24mJiBvdGhlcikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFubm90YXRpb24mIG9w
ZXJhdG9yPShjb25zdCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKLSAgICBUeXBlQW5ub3Rh
dGlvbiYgb3BlcmF0b3I9KFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVmYXVsdDsKLQotICAg
IHN0ZDo6b3B0aW9uYWw8QWRkcmVzc1NwYWNlPiBsZWZ0QWRkcmVzc1NwYWNlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPExlZnRWYWx1ZT4obV9pbm5lcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpn
ZXQ8TGVmdFZhbHVlPihtX2lubmVyKS5hZGRyZXNzU3BhY2U7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYm9vbCBpc1JpZ2h0VmFsdWUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmlnaHRWYWx1ZT4obV9pbm5lcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3QgVmlzaXRvciYgdmlzaXRvcikgLT4gZGVj
bHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxMZWZ0VmFsdWUs
IEFic3RyYWN0TGVmdFZhbHVlLCBSaWdodFZhbHVlPiY+KCkpKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbm5l
cik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Fic3RyYWN0TGVmdFZhbHVlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCghbV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEFic3RyYWN0TGVmdFZhbHVlPihtX2lubmVyKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgVmFyaWFudDxMZWZ0VmFsdWUsIEFic3RyYWN0TGVmdFZhbHVlLCBSaWdodFZhbHVlPiBt
X2lubmVyOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYm9vbCBtX2VtcHR5IHsgZmFsc2UgfTsK
LSNlbmRpZgotfTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEzMjc2MGExNDVmZjk2NjY4MjliZTY4OWY5NjcxZmIzMDliYWM2ZjMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFycmF5UmVmZXJlbmNl
VHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheVJlZmVyZW5jZVR5cGUpOwot
ICAgIHVzaW5nIEJhc2UgPSBSZWZlcmVuY2VUeXBlOwotCi0gICAgQXJyYXlSZWZlcmVuY2VUeXBl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVu
bmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNz
U3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJheVJlZmVyZW5jZSkKLSAgICB7
Ci0gICAgfQotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXJyYXlSZWZlcmVuY2VUeXBlPiBjcmVh
dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8
VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXJyYXlSZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUo
ZWxlbWVudFR5cGUpKSk7Ci0gICAgfQotCi0gICAgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVm
YXVsdDsKLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMtPkJhc2U6Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoKCJh
cnJheSIpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcnJheVJlZmVyZW5j
ZVR5cGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgp
ID09IG90aGVyLmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVu
dFR5cGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50b1N0cmluZygpLCAiW10iKTsK
LSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfVFlQRShBcnJheVJlZmVyZW5jZVR5cGUsIGlzQXJyYXlSZWZlcmVu
Y2VUeXBlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlw
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U1YmZjYjMwMWQzMWY5NzZhMmU4
MDU0MGYyMWJiODk0NGNjNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFy
cmF5VHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1
ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQXJyYXlUeXBlIGZpbmFsIDogcHVi
bGljIFVubmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBcnJheVR5cGUpOwotICAgIEFycmF5VHlwZShDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVuc2lnbmVkIG51bUVsZW1l
bnRzKQotICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKLSAgICAg
ICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQotICAgICAgICAsIG1fbnVt
RWxlbWVudHMobnVtRWxlbWVudHMpCi0gICAgewotICAgIH0KLXB1YmxpYzoKLQotICAgIHN0YXRp
YyBSZWY8QXJyYXlUeXBlPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1l
ZFR5cGU+IGVsZW1lbnRUeXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5VHlwZShsb2NhdGlvbiwgV1RGTW92ZShlbGVtZW50
VHlwZSksIG51bUVsZW1lbnRzKSk7Ci0gICAgfQotCi0gICAgfkFycmF5VHlwZSgpID0gZGVmYXVs
dDsKLQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50VHlwZTsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlw
ZTsgfQotICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVt
ZW50czsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChtX251bUVsZW1lbnRzKSBeIG1fZWxlbWVu
dFR5cGUtPmhhc2goKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJyYXlU
eXBlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBudW1FbGVtZW50cygpID09
IG90aGVyLm51bUVsZW1lbnRzKCkgJiYgdHlwZSgpID09IG90aGVyLnR5cGUoKTsKLSAgICB9Ci0K
LSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcodHlwZSgpLnRvU3RyaW5nKCksICdbJywgbnVtRWxlbWVudHMoKSwgJ10nKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX2VsZW1lbnRUeXBlOwotICAgIHVu
c2lnbmVkIG1fbnVtRWxlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShBcnJheVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfVFlQRShBcnJheVR5cGUsIGlzQXJyYXlUeXBlKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q5OThiNTI1ZmM2ZjNhODU0NDVkN2Ri
ZTQzY2VmNjYzZGUyNzdhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3Np
Z25tZW50RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNz
aW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6QXNzaWdubWVu
dCkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAgLCBtX3JpZ2h0KFdU
Rk1vdmUocmlnaHQpKQotICAgIHsKLSNpZiBDUFUoQUREUkVTUzMyKQotICAgICAgICBVTlVTRURf
UEFSQU0obV9wYWQpOwotI2VuZGlmCi0gICAgfQotCi0gICAgfkFzc2lnbm1lbnRFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVu
dEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25t
ZW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyBy
ZXR1cm4gbV9sZWZ0OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0
OyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1v
dmUobV9yaWdodCk7IH0KLQotcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9s
ZWZ0OwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0OwotI2lmIENQVShBRERSRVNT
MzIpCi0gICAgY2hhciBtX3BhZFsxXTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNU
Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQXNzaWdubWVudEV4cHJlc3Npb24p
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhw
cmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU1NjI1YzhmZGM0MTgxZWI0Y2Q0ZTk2ZjVlNmYx
MWNhNGUzMWZjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVuY3Rp
b25BdHRyaWJ1dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsK
LQotY2xhc3MgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIH5CYXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBk
ZWxldGU7Ci0gICAgQmFzZUZ1bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYm
KSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9u
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODA5ODhhNjBmZmY1YTY4NGQ3YjEzN2QzNWNjNzM5YWZkMjA0NzZlYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3Mg
SW50cmluc2ljczsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlv
bjsKLWNsYXNzIFVubmFtZWRUeXBlOwotCi1jbGFzcyBCYXNlU2VtYW50aWMgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEJhc2VTZW1hbnRpYyhDb2RlTG9jYXRp
b24gbG9jYXRpb24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgewot
ICAgIH0KLQotICAgIHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJh
c2VTZW1hbnRpYyhjb25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCYXNlU2VtYW50
aWMoQmFzZVNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vw
dGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0ID0g
MDsKLQotICAgIGVudW0gY2xhc3MgU2hhZGVySXRlbURpcmVjdGlvbiA6IHVpbnQ4X3QgewotICAg
ICAgICBJbnB1dCwKLSAgICAgICAgT3V0cHV0Ci0gICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0ID0gMDsKLQotcHJpdmF0ZToK
LSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBB
U1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ5MjRiYTc1Y2ZiNmVkZTRkODRjYmVkNTJk
NGRkOTE0YzY1YjM3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCbG9jayBm
aW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIEJsb2NrKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0
YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCbG9jaykKLSAg
ICAgICAgLCBtX3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgfkJsb2NrKCkgPSBkZWZhdWx0OwotCi0gICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRl
bGV0ZTsKLSAgICBCbG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdGF0ZW1lbnRzJiBz
dGF0ZW1lbnRzKCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3Rh
dGVtZW50cyBtX3N0YXRlbWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19
Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShCbG9jaykKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9TVEFURU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKLQotI2VuZGlmIC8vIEVOQUJMRShX
SExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzODM2MDUxNjdmYmE1ZWUwM2FhZmJjNjdjODEzMWM1MzFlMDEwNTE0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBCb29sZWFuTGl0ZXJh
bCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBCb29sZWFuTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGJv
b2wgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxp
dGVyYWwpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkJv
b2xlYW5MaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0gICAgQm9vbGVhbkxpdGVyYWwoY29uc3QgQm9v
bGVhbkxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBCb29sZWFuTGl0ZXJhbChCb29sZWFuTGl0ZXJh
bCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEJv
b2xlYW5MaXRlcmFsJikgPSBkZWxldGU7Ci0gICAgQm9vbGVhbkxpdGVyYWwmIG9wZXJhdG9yPShC
b29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgQm9vbGVhbkxpdGVyYWwgY2xvbmUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQm9vbGVhbkxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVl
KTsKLSAgICAgICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBib29sIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFs
LCBpc0Jvb2xlYW5MaXRlcmFsKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCcmVhay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QnJlYWsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NzYxYmEyOGI3Y2I3MjQ4
NGQ3YzYyMzY3YzQ3OGE0MmRhYmYwZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCcmVhay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJyZWFrIGZpbmFsIDogcHVibGljIFN0
YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQnJl
YWsoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwg
S2luZDo6QnJlYWspCi0gICAgewotICAgIH0KLQotICAgIH5CcmVhaygpID0gZGVmYXVsdDsKLQot
ICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7Ci0gICAgQnJlYWsoQnJlYWsmJikgPSBk
ZWZhdWx0OwotCi1wcml2YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQnJlYWspCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKEJyZWFrLCBpc0JyZWFrKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzNlNGRmMmVjMWI0MTRkMGNiODNjNjliMjc2NjI0NGI5YjZiNjcy
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNz
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWJvb2wgQnVpbHRJ
blNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlw
ZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1f
dmFyaWFibGUpIHsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJl
dHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNh
c2UgVmFyaWFibGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgot
ICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUo
KSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuIG1hdGNo
ZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlh
YmxlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4
OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlw
ZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOwotICAgIGNhc2Ug
VmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWRGVwdGg6Ci0g
ICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgp
KTsKLSAgICBjYXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gbWF0Y2hl
cyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICBjYXNlIFZhcmlhYmxl
OjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cElE
OgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDNU
eXBlKCkpOwotICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgY2FzZSBW
YXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVk
VHlwZSwgaW50cmluc2ljcy5mbG9hdDNUeXBlKCkpOwotICAgIH0KLX0KLQotYm9vbCBCdWlsdElu
U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBl
bnRyeVBvaW50VHlwZSkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKCplbnRyeVBvaW50VHlwZSkgewot
ICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKLSAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKLSAgICAgICAg
ICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJ
bnN0YW5jZUlEOgotICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIFNoYWRlckl0
ZW1EaXJlY3Rpb246Ok91dHB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewot
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVlBvc2l0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKLSAgICAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJ
bnB1dDoKLSAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewotICAgICAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
UG9zaXRpb246Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAg
ICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVjdGlv
bjo6T3V0cHV0OgotICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7Ci0gICAgICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVlRhcmdldDoKLSAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNW
RGVwdGg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBjYXNlIEVudHJ5
UG9pbnRUeXBlOjpDb21wdXRlOgotICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAg
ICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OgotICAgICAgICAgICAgc3dpdGNoICht
X3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFk
SUQ6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSUQ6Ci0gICAgICAgICAgICBj
YXNlIFZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFZhcmlhYmxlOjpT
Vkdyb3VwVGhyZWFkSUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpPdXRwdXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1h
bnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVp
bHRJblNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NWE1MTgyNzEw
NTFjNWQwYzM5OTUxZWM3YWNiMmFjNzQ2YjBjZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTENvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEJ1
aWx0SW5TZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgVmFyaWFibGUgOiB1aW50OF90IHsK
LSAgICAgICAgU1ZJbnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElELAotICAgICAgICBQU2l6
ZSwKLSAgICAgICAgU1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250RmFjZSwKLSAgICAgICAg
U1ZTYW1wbGVJbmRleCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAotICAgICAgICBTVlRhcmdl
dCwKLSAgICAgICAgU1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwKLSAgICAgICAgU1ZEaXNw
YXRjaFRocmVhZElELAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAgIFNWR3JvdXBJbmRleCwK
LSAgICAgICAgU1ZHcm91cFRocmVhZElECi0gICAgfTsKLQotICAgIEJ1aWx0SW5TZW1hbnRpYyhD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiYmIHRhcmdldEluZGV4ID0gc3RkOjpudWxsb3B0KQotICAgICAgICA6IEJhc2VTZW1h
bnRpYyhsb2NhdGlvbikKLSAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQotICAgICAgICAs
IG1fdGFyZ2V0SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCi0gICAgewotICAgIH0KLQotICAg
IHZpcnR1YWwgfkJ1aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIEJ1aWx0SW5TZW1h
bnRpYyhjb25zdCBCdWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBCdWlsdEluU2VtYW50
aWMoQnVpbHRJblNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIFZhcmlhYmxlIHZhcmlhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+JiB0YXJnZXRJbmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdmFyaWFibGUgPT0gb3RoZXIubV92YXJpYWJsZSAmJiBtX3RhcmdldElu
ZGV4ID09IG90aGVyLm1fdGFyZ2V0SW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEJ1aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgU3RyaW5nVmlldyB0b1N0cmluZygp
IGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKLSAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICAgICAgcmV0dXJuICJTVkluc3RhbmNl
SUQiOwotICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAgICAgICAgcmV0
dXJuICJTVlZlcnRleElEIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAg
ICAgICByZXR1cm4gIlBTaXplIjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlvbjoK
LSAgICAgICAgICAgIHJldHVybiAiU1ZQb3NpdGlvbiI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6
OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgICAgICByZXR1cm4gIlNWSXNGcm9udEZhY2UiOwotICAg
ICAgICBjYXNlIFZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICAgICAgcmV0dXJuICJT
VlNhbXBsZUluZGV4IjsKLSAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdlOgot
ICAgICAgICAgICAgcmV0dXJuICJTVklubmVyQ292ZXJhZ2UiOwotICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVlRhcmdldDoKLSAgICAgICAgICAgIHJldHVybiAiU1ZUYXJnZXQiOwotICAgICAgICBj
YXNlIFZhcmlhYmxlOjpTVkRlcHRoOgotICAgICAgICAgICAgcmV0dXJuICJTVkRlcHRoIjsKLSAg
ICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgICAgIHJldHVybiAiU1ZD
b3ZlcmFnZSI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAg
ICAgICAgICAgIHJldHVybiAiU1ZEaXNwYXRjaFRocmVhZElEIjsKLSAgICAgICAgY2FzZSBWYXJp
YWJsZTo6U1ZHcm91cElEOgotICAgICAgICAgICAgcmV0dXJuICJTVkdyb3VwSUQiOwotICAgICAg
ICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gIlNWR3Jv
dXBJbmRleCI7Ci0gICAgICAgIGNhc2UgVmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRDoKLSAgICAg
ICAgICAgIHJldHVybiAiU1ZHcm91cFRocmVhZElEIjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNp
Y3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1E
aXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBv
aW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBWYXJpYWJsZSBtX3Zh
cmlhYmxlOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFyZ2V0SW5kZXg7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmQ0MTE4ZTIxYjM1MDk1Y2Y4NDViMTFmNmI5MTRkOGVlZDc0ZTZlMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlw
ZTsKLQotY2xhc3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ2FsbEV4cHJlc3Npb24o
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBWZWN0b3I8VW5pcXVlUmVmPEV4
cHJlc3Npb24+PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpDYWxsKQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1f
YXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ2FsbEV4
cHJlc3Npb24oY29uc3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDYWxsRXhwcmVz
c2lvbihDYWxsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVm
PEV4cHJlc3Npb24+PiYgYXJndW1lbnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KLQotICAg
IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgfkNhbGxFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCBzZXRDYXN0RGF0YShOYW1lZFR5cGUmIG5hbWVkVHlw
ZSkKLSAgICB7Ci0gICAgICAgIG1fY2FzdFJldHVyblR5cGUgPSAmbmFtZWRUeXBlOwotICAgIH0K
LQotICAgIGJvb2wgaXNDYXN0KCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIE5h
bWVkVHlwZSogY2FzdFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9Ci0g
ICAgRnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fZnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gKm1fZnVuY3Rpb247Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRGdW5jdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9u
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Z1bmN0aW9uKTsKLSAgICAgICAgbV9mdW5jdGlv
biA9ICZmdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcg
bV9uYW1lOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwot
ICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07Ci0gICAgTmFt
ZWRUeXBlKiBtX2Nhc3RSZXR1cm5UeXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24p
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lv
biwgaXNDYWxsRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQ29tbWFFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGI0OGJiMzg4MTUxMzNmOTZkMThiNWY4YjkwMGZkMjVkM2ExMWM3ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgQ29tbWFFeHByZXNzaW9uIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIENvbW1hRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZlY3RvcjxVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4+JiYgbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpDb21tYSkKLSAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKLSAgICB7Ci0gICAg
fQotCi0gICAgfkNvbW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIENvbW1hRXhwcmVz
c2lvbihjb25zdCBDb21tYUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBDb21tYUV4cHJlc3Np
b24oQ29tbWFFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8
RXhwcmVzc2lvbj4+JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAg
VmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9saXN0OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29tbWFFeHByZXNzaW9u
KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNz
aW9uLCBpc0NvbW1hRXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2Q0MTM3ZTg1YmZjYzU4MTdiN2QyNWZkZmY1YjQwNjRlMDhhMzQ2Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAorKysg
L2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRl
cmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCIKLSNpbmNs
dWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwu
aCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLS8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IG1hY09T
IFNpZXJyYSBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBW
YXJpYW50cywKLS8vIHNvIHRoaXMgaXMgYSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0
IGRvZXNuJ3QgaGFwcGVuLiBBcyBzb29uIGFzIHdlIGRvbid0Ci0vLyBoYXZlIHRvIHN1cHBvcnQg
U2llcnJhLCB0aGlzIGNhbiBiZSBtaWdyYXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgotY2xhc3Mg
Q29uc3RhbnRFeHByZXNzaW9uIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwmJiBpbnRlZ2Vy
TGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0ZXJhbCkpCi0g
ICAgewotICAgIH0KLQotICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRF
eHByZXNzaW9uKEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKLSAgICAgICAgOiBtX3Zhcmlh
bnQoV1RGTW92ZShmbG9hdExpdGVyYWwpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb25zdGFudEV4
cHJlc3Npb24oQm9vbGVhbkxpdGVyYWwmJiBib29sZWFuTGl0ZXJhbCkKLSAgICAgICAgOiBtX3Zh
cmlhbnQoV1RGTW92ZShib29sZWFuTGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIENvbnN0
YW50RXhwcmVzc2lvbihFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJiBlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwpCi0gICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uKGNvbnN0IENv
bnN0YW50RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIENvbnN0YW50RXhwcmVzc2lvbihDb25z
dGFudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uJiBv
cGVyYXRvcj0oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgQ29uc3Rh
bnRFeHByZXNzaW9uJiBvcGVyYXRvcj0oQ29uc3RhbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsK
LQotICAgIEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCgpCi0gICAgewotICAgICAgICBB
U1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KSk7
Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxJbnRlZ2VyTGl0ZXJhbD4obV92YXJpYW50KTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNpdChjb25zdCBW
aXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3IsIHN0ZDo6ZGVj
bHZhbDxWYXJpYW50PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBGbG9h
dExpdGVyYWwsIEJvb2xlYW5MaXRlcmFsLCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+Jj4oKSkp
Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhcmlhbnQpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0
IFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0IC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwg
c3RkOjpkZWNsdmFsPFZhcmlhbnQ8SW50ZWdlckxpdGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwsIEZsb2F0TGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bD4mPigpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFy
aWFudCk7Ci0gICAgfQotCi0gICAgQ29uc3RhbnRFeHByZXNzaW9uIGNsb25lKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IEludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsK
LSAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBb
Jl0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkg
LT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVn
ZXJMaXRlcmFsLmNsb25lKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZs
b2F0TGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJldHVybiBm
bG9hdExpdGVyYWwuY2xvbmUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFs
JiBib29sZWFuTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKLSAgICAgICAgICAgIHJl
dHVybiBib29sZWFuTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IENvbnN0YW50
RXhwcmVzc2lvbiB7Ci0gICAgICAgICAgICByZXR1cm4gZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmNsb25lKCk7Ci0gICAgICAgIH0pLCBtX3ZhcmlhbnQpOwotICAgIH0KLQotICAgIGJvb2wgbWF0
Y2hlcyhjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQ7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAg
ICAgICAgdmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGlu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVl
KCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRM
aXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGZsb2F0TGl0ZXJhbC52YWx1ZSgpOwotICAg
ICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAg
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxCb29sZWFuTGl0ZXJhbD4ob3RoZXIu
bV92YXJpYW50KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyQm9vbGVhbkxp
dGVyYWwgPSBXVEY6OmdldDxCb29sZWFuTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID09IG90aGVyQm9vbGVh
bkxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwotICAgICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4ob3RoZXIubV92YXJpYW50
KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIG90aGVyTWVtYmVyUmVmZXJlbmNlID0g
V1RGOjpnZXQ8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOwotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpID09IG90aGVyTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVtYmVyKCk7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAg
ICAgfSkpOwotCi0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gKnJlc3Vs
dDsKLQotICAgICAgICBvdGhlci52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRl
Z2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVl
ID09IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSB2YWx1ZSA9PSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAg
IH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAg
cmVzdWx0ID0gdmFsdWUgPT0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShj
b25zdCBCb29sZWFuTGl0ZXJhbCYpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAg
ICAgICB9LCBbJl0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgewotICAgICAgICAg
ICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0pKTsKLQotICAgICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlh
bnQ8Ci0gICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAgIEJvb2xlYW5MaXRlcmFsLAotICAg
ICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwKLSAgICAgICAgPiBtX3ZhcmlhbnQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb250aW51ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQ29udGludWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA1
MWMyNDJhZjA2ZjhjMzNjNjRkMDU2YmNjYzlhM2RkMGY5MGY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRl
bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIENvbnRp
bnVlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAg
ICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Q29udGludWUpCi0gICAgewotICAgIH0KLQot
ICAgIH5Db250aW51ZSgpID0gZGVmYXVsdDsKLQotICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVl
JikgPSBkZWxldGU7Ci0gICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OwotCi1wcml2
YXRlOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVM
VF9ERUxFVEUoQ29udGludWUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKENvbnRpbnVlLCBpc0NvbnRpbnVlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZWZhdWx0RGVsZXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwYjI1MjU5YTI5Zjc3ODIxOGIzYTM5ZDI4N2FkMGY3ODYyNmFkOTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0KLSNkZWZpbmUgREVGSU5F
X0RFRkFVTFRfREVMRVRFKHR5cGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0
ZW1wbGF0ZTw+IFwKLSAgICAgICAgc3RydWN0IGRlZmF1bHRfZGVsZXRlPFdlYkNvcmU6OldITFNM
OjpBU1Q6OnR5cGU+IHsgXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFwKLSAg
ICAgICAgICAgIHZvaWQgY2FsbERlbGV0ZShUKiB0KSBcCi0gICAgICAgICAgICB7IFwKLSAgICAg
ICAgICAgICAgICBkZWxldGUgdDsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gXAotICAgICAgICAgICAgdm9pZCBjYWxsRGVzdHJveShUKiB0KSBc
Ci0gICAgICAgICAgICB7IFwKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjp0
eXBlOjpkZXN0cm95KCp0KTsgXAotICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICBjb25zdGV4
cHIgdm9pZCBvcGVyYXRvcigpKFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGUqIHZhbHVlKSBcCi0g
ICAgICAgICAgICB7IFwKLSAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmlu
YWw8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT46OnZhbHVlKSBcCi0gICAgICAgICAgICAgICAg
ICAgIGNhbGxEZWxldGUodmFsdWUpOyBcCi0gICAgICAgICAgICAgICAgZWxzZSBcCi0gICAgICAg
ICAgICAgICAgICAgIGNhbGxEZXN0cm95KHZhbHVlKTsgXAotICAgICAgICAgICAgfSBcCi0gICAg
ICAgIH07IFwKLSAgICB9IFwKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkyYzFlMTY0MzFmMzBiZGU5NWQ5ZGU1MTExNmRiOGFhNjdiNGI5NGMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgRGVyZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERl
cmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIHBvaW50ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
RGVyZWZlcmVuY2UpCi0gICAgICAgICwgbV9wb2ludGVyKFdURk1vdmUocG9pbnRlcikpCi0gICAg
ewotICAgIH0KLQotICAgIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNzaW9uJikgPSBk
ZWxldGU7Ci0gICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2lu
dGVyOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcG9pbnRlcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVM
RVRFKERlcmVmZXJlbmNlRXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Np
b24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9v
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2ViZmQ5ZTg0ZjMyOTgzMDZkMTUw
OTQ0ZmJmZmY3OGE1NTkzYWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERv
V2hpbGVMb29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1j
bGFzcyBEb1doaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERvV2hpbGVMb29wKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBjb25kaXRpb25hbCkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRv
V2hpbGVMb29wKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIG1f
Y29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgewotICAgIH0KLQotICAgIH5E
b1doaWxlTG9vcCgpID0gZGVmYXVsdDsKLQotICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVM
b29wJikgPSBkZWxldGU7Ci0gICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0
OwotCi0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9Ci0gICAgRXhwcmVz
c2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9Ci0KLXByaXZhdGU6
Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX2NvbmRpdGlvbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZmI0MjIzMDQ1ZmUwMmY5NmM5MGI4Yzc1N2U5
YjNiNjRiYjc1NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVz
c2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0K
LW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBEb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgRG90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cmluZyYmIGZpZWxkTmFtZSkKLSAgICAgICAgOiBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkK
LSAgICAgICAgLCBtX2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCi0gICAgewotICAgICAg
ICBVTlVTRURfUEFSQU0obV9wYWRkaW5nKTsKLSAgICB9Ci0KLSAgICB+RG90RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKLQotICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0g
ZGVsZXRlOwotICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBTdHJpbmcmIGZpZWxkTmFtZSgpIHsgcmV0dXJuIG1fZmllbGROYW1lOyB9Ci0KLXByaXZh
dGU6Ci0gICAgU3RyaW5nIG1fZmllbGROYW1lOwotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxv
dyBmb3IgcmVwbGFjZVdpdGggaW50byBhIGJpZ2dlciB0eXBlLgotICAgIGNoYXIgbV9wYWRkaW5n
WzEyXTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKERvdEV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihEb3RFeHByZXNzaW9uLCBpc0RvdEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiYTFk
ZDc4ODBlNWM4NmU1NWU2ZTg3Y2U1MWI5N2RlOTA5OTc3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiBlZmZlY3RmdWxFeHByZXNzaW9uKQotICAgICAgICA6IFN0YXRl
bWVudChlZmZlY3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVs
RXhwcmVzc2lvbikKLSAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZl
Y3RmdWxFeHByZXNzaW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQm
JikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsg
cmV0dXJuIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBv
aW50VHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzQ0NmRmMTBiNzU1ZGQ2
YzYwNWIzOTY0OTgzNjFmMTZlYzc3YmIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudHJ5UG9pbnRUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlIDxjc3RkaW50PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIEVudHJ5UG9pbnRUeXBlIDogdWlu
dDhfdCB7Ci0gICAgVmVydGV4LAotICAgIEZyYWdtZW50LAotICAgIENvbXB1dGUsCi19OwotCi1B
TFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgdG9TdHJpbmcoRW50cnlQb2ludFR5cGUgdHlwZSkKLXsK
LSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0g
ICAgICAgIHJldHVybiAidmVydGV4IjsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVu
dDoKLSAgICAgICAgcmV0dXJuICJmcmFnbWVudCI7Ci0gICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6
Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuICJjb21wdXRlIjsKLSAgICB9Ci19Ci0KLX0KLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmlu
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmY4
ZGU1YWMyM2Y0YTdhYmMzNDVkY2U4YTUxY2VmYjY1ZjlkOTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5
cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEVudW1lcmF0
aW9uRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxV
bm5hbWVkVHlwZT4gdHlwZSkKLSAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKLSAgICAgICAgLCBtX3R5cGUoV1RG
TW92ZSh0eXBlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigp
ID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlv
bkRlZmluaXRpb24mKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVy
YXRpb25EZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkg
eyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1l
bWJlcikKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIu
bmFtZSgpLCBtYWtlVW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5OwotICAgIH0KLQotICAgIEVudW1lcmF0
aW9uTWVtYmVyKiBtZW1iZXJCeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG1fbWVtYmVycy5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9tZW1iZXJzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci0gICAgfQotCi0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RW51bWVyYXRpb25NZW1iZXI+PiBlbnVtZXJhdGlvbk1l
bWJlcnMoKQotICAgIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RW51
bWVyYXRpb25NZW1iZXI+PiByZXN1bHQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fbWVt
YmVycykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKnBhaXIudmFsdWUpOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1f
dHlwZTsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEVudW1lcmF0aW9uTWVt
YmVyPj4gbV9tZW1iZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1E
RUZJTkVfREVGQVVMVF9ERUxFVEUoRW51bWVyYXRpb25EZWZpbml0aW9uKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoRW51bWVyYXRpb25EZWZpbml0aW9uLCBpc0VudW1lcmF0
aW9uRGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25NZW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEyODg4ZjM1YTllMGM5ZjhkNGQxN2MxOTI1NGI0YzY5ZmM2NjRiNGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIEVudW1lcmF0aW9uTWVtYmVyKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgaW50NjRfdCB2YWx1ZSkKLSAgICAgICAgOiBtX2NvZGVM
b2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAg
ICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5FbnVtZXJh
dGlvbk1lbWJlcigpID0gZGVmYXVsdDsKLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKGNvbnN0IEVu
dW1lcmF0aW9uTWVtYmVyJikgPSBkZWxldGU7Ci0gICAgRW51bWVyYXRpb25NZW1iZXIoRW51bWVy
YXRpb25NZW1iZXImJikgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2Rl
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFN0cmluZyBu
YW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgaW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIG1f
dmFsdWU7IH0KLQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0g
ICAgU3RyaW5nIG1fbmFtZTsKLSAgICBpbnQ2NF90IG1fdmFsdWU7Ci19OwotCi11c2luZyBFbnVt
ZXJhdGlvbk1lbWJlcnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+OwotCi19IC8vIG5hbWVz
cGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxODM0ZTk3N2FjY2U5MGFmMGYyMTk4ZjE4NWYxZjk5MjJlMTYwNDQ3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
Q29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9u
OwotY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7Ci0KLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCi0gICAgICAg
ICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCi0gICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVm
YXVsdDsKLQotICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKLQotICAgIEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYpID0gZGVsZXRlOwotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9
KEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGF0aWMgRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcm
JiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7
Ci0gICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQobG9jYXRpb24sIFdURk1v
dmUobGVmdCksIFdURk1vdmUocmlnaHQpKTsKLSAgICAgICAgcmVzdWx0Lm1fZW51bWVyYXRpb25E
ZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICAgICAgcmVzdWx0Lm1fZW51
bWVyYXRpb25NZW1iZXIgPSAmZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9s
ZWZ0OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7
IH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBhdXRvIHJlc3VsdCA9IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb2RlTG9jYXRp
b24oKSwgU3RyaW5nKG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7Ci0gICAgICAgIHJlc3VsdC5t
X2VudW1lcmF0aW9uTWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKLSAgICAgICAgY29weVR5
cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEVudW1l
cmF0aW9uRGVmaW5pdGlvbiogZW51bWVyYXRpb25EZWZpbml0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlv
bkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgfQotCi0gICAgRW51bWVyYXRp
b25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vu
dW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJh
dGlvbk1lbWJlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1l
bWJlcjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEVudW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9u
RGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51
bWVyYXRpb25NZW1iZXIpCi0gICAgewotICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9
ICZlbnVtZXJhdGlvbkRlZmluaXRpb247Ci0gICAgICAgIG1fZW51bWVyYXRpb25NZW1iZXIgPSAm
ZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2xlZnQ7
Ci0gICAgU3RyaW5nIG1fcmlnaHQ7Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBtX2VudW1l
cmF0aW9uRGVmaW5pdGlvbiB7IG51bGxwdHIgfTsKLSAgICBFbnVtZXJhdGlvbk1lbWJlciogbV9l
bnVtZXJhdGlvbk1lbWJlciB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkxZThkYzM2YTg5NGIzOTllN2YzY2E2MzBiNjZhOGYyNDE2MGI0
OTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXZvaWQgRXhwcmVzc2lv
bjo6ZGVzdHJveShFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVz
c2lvbi5raW5kKCkpIHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0g
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24p
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRl
cmFsOgotICAgICAgICBkZWxldGUgJmRvd25jYXN0PEJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgotICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Ci0gICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6Ci0gICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpNYWtl
UG9pbnRlcjoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxNYWtlUG9pbnRlckV4cHJlc3Npb24+
KGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6
OkRvdDoKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZT4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6SW5kZXg6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9u
PihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpSZWFkTW9kaWZ5V3JpdGU6Ci0gICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6VGVybmFyeToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUZXJuYXJ5
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0g
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNz
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJs
ZVJlZmVyZW5jZToKLSAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4o
ZXhwcmVzc2lvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBFeHByZXNzaW9u
OjpkZXN0cnVjdChFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHN3aXRjaCAoZXhwcmVz
c2lvbi5raW5kKCkpIHsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6Ci0g
ICAgICAgIGRvd25jYXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKS5+QXNzaWdu
bWVudEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpCb29sZWFuTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4
cHJlc3Npb24pLn5Cb29sZWFuTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
cHJlc3Npb246OktpbmQ6OkNhbGw6Ci0gICAgICAgIGRvd25jYXN0PENhbGxFeHByZXNzaW9uPihl
eHByZXNzaW9uKS5+Q2FsbEV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpDb21tYToKLSAgICAgICAgZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9u
PihleHByZXNzaW9uKS5+Q29tbWFFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGRvd25jYXN0PERlcmVm
ZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoK
LSAgICAgICAgZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKS5+RmxvYXRMaXRlcmFs
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxp
dGVyYWw6Ci0gICAgICAgIGRvd25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+SW50
ZWdlckxpdGVyYWwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpMb2dpY2FsOgotICAgICAgICBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikufkxvZ2ljYWxFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pLn5Mb2dpY2FsTm90RXhwcmVzc2lvbigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKLSAgICAg
ICAgZG93bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKLSAgICAgICAgZG93bmNhc3Q8TWFrZVBvaW50
ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKS5+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RG90OgotICAgICAgICBkb3du
Y2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKS5+RG90RXhwcmVzc2lvbigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlOgotICAgICAgICBkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lv
bikufkdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6Ci0gICAgICAgIGRvd25jYXN0PEluZGV4RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikufkluZGV4RXhwcmVzc2lvbigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKLSAgICAgICAgZG93bmNhc3Q8
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuflJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpU
ZXJuYXJ5OgotICAgICAgICBkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbiku
flRlcm5hcnlFeHByZXNzaW9uKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKLSAgICAgICAgZG93bmNhc3Q8VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikuflVuc2lnbmVkSW50ZWdlckxpdGVyYWwoKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw6Ci0gICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4o
ZXhwcmVzc2lvbikufkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgotICAgICAgICBk
b3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikuflZhcmlhYmxlUmVmZXJlbmNl
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBFeHByZXNzaW9uOjptYXlCZUVm
ZmVjdGZ1bCgpIGNvbnN0Ci17Ci0gICAgYXV0byYgZXhwcmVzc2lvbiA9IGNvbnN0X2Nhc3Q8RXhw
cmVzc2lvbiY+KCp0aGlzKTsKLQotICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKLSAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50
ZWdlckxpdGVyYWw6Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsOgotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToK
LSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikucG9pbnRlcigpLm1heUJlRWZmZWN0ZnVsKCk7Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246Oktp
bmQ6OkxvZ2ljYWw6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbikubGVmdCgpLm1heUJlRWZmZWN0ZnVsKCkgfHwgZG93bmNhc3Q8TG9naWNhbEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pLnJpZ2h0KCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PExvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKS5vcGVyYW5kKCkubWF5QmVFZmZlY3Rm
dWwoKTsKLQotICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgot
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikubGVmdFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKTsKLQotICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxNYWtlUG9p
bnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmxlZnRWYWx1ZSgpLm1heUJlRWZmZWN0ZnVsKCk7
Ci0KLSAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PERvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLmJhc2UoKS5tYXlCZUVmZmVjdGZ1bCgpOwot
Ci0gICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikuYmFzZSgpLm1heUJlRWZmZWN0ZnVsKCkg
fHwgZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKS5pbmRleEV4cHJlc3Npb24o
KS5tYXlCZUVmZmVjdGZ1bCgpOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5h
bWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEzNmEwNDczNDJjNTM0ZmVkMzc2N2RmMGYxZDc1M2VlZjQ3NjhhYzMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUu
aCIKLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEV4cHJlc3Np
b24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfkV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzoKLQotICAgIGVudW0gY2xhc3MgS2luZCA6
IHVpbnQ4X3QgewotICAgICAgICBBc3NpZ25tZW50LAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwK
LSAgICAgICAgQ2FsbCwKLSAgICAgICAgQ29tbWEsCi0gICAgICAgIERlcmVmZXJlbmNlLAotICAg
ICAgICBEb3QsCi0gICAgICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLAotICAgICAgICBGbG9h
dExpdGVyYWwsCi0gICAgICAgIEluZGV4LAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAg
ICAgTG9naWNhbCwKLSAgICAgICAgTG9naWNhbE5vdCwKLSAgICAgICAgTWFrZUFycmF5UmVmZXJl
bmNlLAotICAgICAgICBNYWtlUG9pbnRlciwKLSAgICAgICAgUmVhZE1vZGlmeVdyaXRlLAotICAg
ICAgICBUZXJuYXJ5LAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBW
YXJpYWJsZVJlZmVyZW5jZSwKLSAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLAotICAg
IH07Ci0KLSAgICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2lu
ZCkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCi0gICAgICAgICwgbV9r
aW5kKGtpbmQpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koRXhwcmVz
c2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KEV4cHJlc3Npb24mKTsKLQotICAgIEV4
cHJlc3Npb24oY29uc3QgRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24oRXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0oY29uc3Qg
RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIEV4cHJlc3Npb24mIG9wZXJhdG9yPShFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgp
IHsgcmV0dXJuIG1fdHlwZSA/ICYqbV90eXBlIDogbnVsbHB0cjsgfQotCi0gICAgVW5uYW1lZFR5
cGUmIHJlc29sdmVkVHlwZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlKTsKLSAgICAg
ICAgcmV0dXJuICptX3R5cGU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVk
VHlwZT4gdHlwZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90
eXBlID0gV1RGTW92ZSh0eXBlKTsKLSAgICB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlvbiog
bWF5YmVUeXBlQW5ub3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUFubm90YXRpb24gPyAm
Km1fdHlwZUFubm90YXRpb24gOiBudWxscHRyOyB9Ci0KLSAgICBjb25zdCBUeXBlQW5ub3RhdGlv
biYgdHlwZUFubm90YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZUFu
bm90YXRpb24pOwotICAgICAgICByZXR1cm4gKm1fdHlwZUFubm90YXRpb247Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRUeXBlQW5ub3RhdGlvbihUeXBlQW5ub3RhdGlvbiYmIHR5cGVBbm5vdGF0aW9u
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3R5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgbV90
eXBlQW5ub3RhdGlvbiA9IFdURk1vdmUodHlwZUFubm90YXRpb24pOwotICAgIH0KLQotICAgIHZv
aWQgY29weVR5cGVUbyhFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvbHZlZFR5cGUgPSBjb25zdF9jYXN0PEV4cHJlc3Npb24qPih0aGlzKS0+bWF5
YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgICAgIG90aGVyLnNldFR5cGUoKnJlc29sdmVkVHlw
ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBtYXlCZUVmZmVjdGZ1bCgpIGNvbnN0OwotCi0gICAgS2lu
ZCBraW5kKCkgY29uc3QgIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNBc3NpZ25tZW50
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9
Ci0gICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkJvb2xlYW5MaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNhbGw7IH0KLSAgICBib29sIGlzQ29tbWFFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbW1hOyB9Ci0gICAgYm9vbCBp
c0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpE
ZXJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkRvdDsgfQotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZTsgfQotICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6RmxvYXRMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbmRleDsgfQotICAgIGJvb2wgaXNJbnRlZ2VyTGl0
ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQot
ICAgIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpMb2dpY2FsOyB9Ci0gICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7IH0KLSAgICBib29sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpN
YWtlQXJyYXlSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQb2ludGVyOyB9Ci0gICAgYm9vbCBp
c1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90RXhwcmVzc2lv
bigpIHx8IGlzSW5kZXhFeHByZXNzaW9uKCk7IH0KLSAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFkTW9kaWZ5V3Jp
dGU7IH0KLSAgICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6VGVybmFyeTsgfQotICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFs
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7
IH0KLSAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6VmFyaWFibGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbDsgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KLQotcHJp
dmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgUmVmUHRyPFVubmFt
ZWRUeXBlPiBtX3R5cGU7Ci0gICAgc3RkOjpvcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBl
QW5ub3RhdGlvbjsKLSAgICBLaW5kIG1fa2luZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJlc3Npb24pCi0KLSNkZWZpbmUg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRvVmFsdWVUeXBlTmFtZSwg
cHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSB7IHJldHVybiBleHBy
ZXNzaW9uLnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlNDRmYzU1MGU5YmIzNmQ3MjkxYWRjZDIyYWY5NWJm
OGM4NzRmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9j
YXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEZhbGx0aHJvdWdoIGZpbmFsIDogcHVibGljIFN0YXRl
bWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmFsbHRo
cm91Z2goQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
biwgS2luZDo6RmFsbHRocm91Z2gpCi0gICAgewotICAgIH0KLQotICAgIH5GYWxsdGhyb3VnaCgp
ID0gZGVmYXVsdDsKLQotICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZhbGx0aHJvdWdoJikgPSBkZWxl
dGU7Ci0gICAgRmFsbHRocm91Z2goRmFsbHRocm91Z2gmJikgPSBkZWZhdWx0OwotCi1wcml2YXRl
OgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9E
RUxFVEUoRmFsbHRocm91Z2gpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKEZhbGx0aHJvdWdoLCBpc0ZhbGx0aHJvdWdoKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNjFmOWQ0YjA5ZDc4YmQzMTkzNGM4OTMyZTBhZDhjZTkxMGYxZTZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCisrKyAvZGV2L251bGwK
QEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2Ug
QVNUIHsKLQotY2xhc3MgRmxvYXRMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZsb2F0TGl0ZXJhbChD
b2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIEtpbmQ6OkZsb2F0TGl0ZXJhbCkKLSAgICAgICAgLCBtX3R5cGUobG9jYXRpb24s
IHZhbHVlKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIH5G
bG9hdExpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWwoY29uc3QgRmxvYXRM
aXRlcmFsJikgPSBkZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsKEZsb2F0TGl0ZXJhbCYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWwm
KSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWwmIG9wZXJhdG9yPShGbG9hdExpdGVyYWwmJikg
PSBkZWZhdWx0OwotCi0gICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAg
RmxvYXRMaXRlcmFsIGNsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEZsb2F0TGl0ZXJhbCBy
ZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0g
bV90eXBlLmNsb25lKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUu
bWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShj
b25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNv
cHlUeXBlVG8ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgZmxvYXQgbV92YWx1ZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRF
KEZsb2F0TGl0ZXJhbCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KEZsb2F0TGl0ZXJhbCwgaXNGbG9hdExpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM3MzA4YzAwZTc1ZjA0ZDJhNzgzYjg5MTk2OTk2NTU0MzNkNWI4
MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVS
ZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZShD
b2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUo
S2luZDo6RmxvYXRMaXRlcmFsKQotICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAsIG1fcHJlZmVy
cmVkVHlwZShUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sICJmbG9hdCJfc3RyLCBUeXBl
QXJndW1lbnRzKCkpKQotewotfQotCi1ib29sIEZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUo
Y29uc3QgVHlwZSYgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxO
YW1lZFR5cGU+KHR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1l
ZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAg
IGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudEZsb2F0
KCkobV92YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdW5zaWduZWQgRmxvYXRMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1l
ZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAotewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBl
LCBtX3ByZWZlcnJlZFR5cGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0K
LQotRmxvYXRMaXRlcmFsVHlwZSBGbG9hdExpdGVyYWxUeXBlOjpjbG9uZSgpIGNvbnN0Ci17Ci0g
ICAgRmxvYXRMaXRlcmFsVHlwZSByZXN1bHQobV9wcmVmZXJyZWRUeXBlLT5jb2RlTG9jYXRpb24o
KSwgbV92YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBtYXliZVJlc29sdmVkVHlwZSgpKQot
ICAgICAgICByZXN1bHQucmVzb2x2ZShjb25zdF9jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqdHlw
ZSkpOwotICAgIHJlc3VsdC5tX3ByZWZlcnJlZFR5cGUgPSBtX3ByZWZlcnJlZFR5cGUuY29weVJl
ZigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRM
aXRlcmFsVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTRlMDg1OWI3YzA4
ZjU2MjJkYTRiMGU0ZWE3NDIxYjczNzVmNWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikK
LQotI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZVJlZmVyZW5jZTsKLQotY2xhc3MgRmxvYXRM
aXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRp
b24sIGZsb2F0IHZhbHVlKTsKLQotICAgIH5GbG9hdExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0Owot
Ci0gICAgRmxvYXRMaXRlcmFsVHlwZShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7
Ci0gICAgRmxvYXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQot
ICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikg
PSBkZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5
cGUmJikgPSBkZWZhdWx0OwotCi0gICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9w
cmVmZXJyZWRUeXBlOyB9Ci0KLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0
OwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7
Ci0KLSAgICBGbG9hdExpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
ZmxvYXQgbV92YWx1ZTsKLSAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEg
Y2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+
IExpdGVyYWxUeXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFu
dEV4cHJlc3Npb24KLSAgICBSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUo
RmxvYXRMaXRlcmFsVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKEZs
b2F0TGl0ZXJhbFR5cGUsIGlzRmxvYXRMaXRlcmFsVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2NGE1NzQwZjg3NWZmZGQ3OWVkYWU3MmFmODM1ODRhODg2MjhmZTNjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5o
IgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0
ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEZvckxv
b3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGluaXRpYWxp
emF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBjb25kaXRpb24sIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPiYmIGluY3JlbWVudCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBi
b2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Rm9yTG9vcCkKLSAgICAg
ICAgLCBtX2luaXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRpb24pKQotICAgICAgICAs
IG1fY29uZGl0aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKLSAgICAgICAgLCBtX2luY3JlbWVudChX
VEZNb3ZlKGluY3JlbWVudCkpCi0gICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCi0gICAg
ewotICAgIH0KLQotICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgRm9yTG9vcChjb25z
dCBGb3JMb29wJikgPSBkZWxldGU7Ci0gICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsK
LQotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiBpbml0aWFsaXphdGlvbigpIHsgcmV0dXJuIG1f
aW5pdGlhbGl6YXRpb247IH0KLSAgICBFeHByZXNzaW9uKiBjb25kaXRpb24oKSB7IHJldHVybiBt
X2NvbmRpdGlvbi5nZXQoKTsgfQotICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJu
IG1faW5jcmVtZW50LmdldCgpOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9i
b2R5OyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9pbml0aWFsaXph
dGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb247Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1faW5jcmVtZW50OwotICAgIFVuaXF1ZVJlZjxT
dGF0ZW1lbnQ+IG1fYm9keTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQot
REVGSU5FX0RFRkFVTFRfREVMRVRFKEZvckxvb3ApCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKEZvckxvb3AsIGlzRm9yTG9vcCgpKQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYzViNjc0ZjM0ZjkxNTRiMGNhZTJlYTQyNjVhNjIyY2E3
MzI5Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIEZ1bmN0aW9uQXR0cmlidXRlID0g
VmFyaWFudDxOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+OwotdXNpbmcgQXR0cmlidXRlQmxv
Y2sgPSBWZWN0b3I8RnVuY3Rpb25BdHRyaWJ1dGU+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xh
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYjI0
ZDJlMjhmNjFjZmI1YWRjOTQyZTI2ODhlMzRhNzIzNzI5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUu
aCIKLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMUGFyc2luZ01v
ZGUuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVk
VHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9u
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGdW5jdGlvbkRl
Y2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1
dGVCbG9jaywgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFJl
ZjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMm
JiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wg
aXNPcGVyYXRvciwgUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCi0gICAgICAgIDogbV9jb2RlTG9j
YXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJp
YnV0ZUJsb2NrKSkKLSAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQot
ICAgICAgICAsIG1faXNPcGVyYXRvcihpc09wZXJhdG9yKQotICAgICAgICAsIG1fcGFyc2luZ01v
ZGUocGFyc2luZ01vZGUpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAgICAg
ICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUo
cGFyYW1ldGVycykpCi0gICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVs
dDsKLQotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgRnVuY3Rpb25EZWNsYXJhdGlvbiYp
ID0gZGVsZXRlOwotICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jdGlvbkRlZmluaXRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgQXR0cmlidXRlQmxv
Y2smIGF0dHJpYnV0ZUJsb2NrKCkgeyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZW50cnlQb2ludFR5cGU7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9Ci0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgYm9v
bCBpc0Nhc3QoKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9Ci0g
ICAgY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnM7IH0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygp
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQotICAgIFNlbWFudGljKiBzZW1hbnRpYygpIHsgcmV0
dXJuIG1fc2VtYW50aWMuZ2V0KCk7IH0KLSAgICBib29sIGlzT3BlcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzT3BlcmF0b3I7IH0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLSAgICBQYXJzaW5nTW9kZSBw
YXJzaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2luZ01vZGU7IH0KLQotICAgIE5hbWVT
cGFjZSBuYW1lU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVTcGFjZTsgfQotICAgIHZvaWQg
c2V0TmFtZVNwYWNlKE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9uYW1lU3BhY2UgPSBuYW1lU3Bh
Y2U7IH0KLQotcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAg
QXR0cmlidXRlQmxvY2sgbV9hdHRyaWJ1dGVCbG9jazsKLSAgICBzdGQ6Om9wdGlvbmFsPEVudHJ5
UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOwotICAgIGJvb2wgbV9pc09wZXJhdG9yOwotICAg
IFBhcnNpbmdNb2RlIG1fcGFyc2luZ01vZGU7Ci0gICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7
Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRl
cnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwotICAgIE5hbWVT
cGFjZSBtX25hbWVTcGFjZSB7IE5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0
ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpU
b1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVk
aWNhdGU7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyNDhmYjVhN2E0NTRlZTUyOTcyN2JiZjI3ZGE4
MTkyYWQ3NWRlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRl
ZmluaXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQmxvY2suaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb24g
OiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24m
JiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IEZ1bmN0aW9u
RGVjbGFyYXRpb24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKLSAgICAgICAgLCBtX2Js
b2NrKFdURk1vdmUoYmxvY2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5GdW5jdGlv
bkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBGdW5jdGlvbkRlZmluaXRpb24oY29uc3Qg
RnVuY3Rpb25EZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1
bmN0aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlzRnVuY3Rpb25EZWZp
bml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgQmxvY2smIGJs
b2NrKCkgeyByZXR1cm4gbV9ibG9jazsgfQotCi1wcml2YXRlOgotICAgIEJsb2NrIG1fYmxvY2s7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04oRnVuY3Rpb25EZWZpbml0aW9uLCBpc0Z1
bmN0aW9uRGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkyZTFmYjYwODZkOWYwYjZlMjYxYTNmMWUzM2FlNzJhMWFlNGNhNmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMU3Ry
dWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVj
dEZpZWxkKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Okdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlKQotICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQotICAgICAgICAs
IG1fc3RydWN0RmllbGQoKnN0cnVjdEZpZWxkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVj
dEZpZWxkKTsKLSAgICB9Ci0KLSAgICB+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1
bHQ7Ci0gICAgCi0gICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0RmllbGQoKSB7IHJldHVybiBt
X3N0cnVjdEZpZWxkOyB9Ci0KLSAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gbV9iYXNl
LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsK
LSAgICBTdHJ1Y3R1cmVFbGVtZW50JiBtX3N0cnVjdEZpZWxkOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoR2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZSwgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ZDZkYTNjZDE2MDFhOGI5YTE1ZDNhYWIxNWZiZjliZmNj
ODJkMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBJZlN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIElmU3RhdGVtZW50KENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1
ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBlbHNl
Qm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQotICAgICAgICAs
IG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCi0gICAgICAgICwgbV9ib2R5KFdU
Rk1vdmUoYm9keSkpCi0gICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgSWZTdGF0
ZW1lbnQoY29uc3QgSWZTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBJZlN0YXRlbWVudChJZlN0
YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsg
cmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KLSAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBt
X2JvZHk7IH0KLSAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5n
ZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlv
bmFsOwotICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RhdGVtZW50PiBtX2Vsc2VCb2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0K
LQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoSWZTdGF0ZW1lbnQpCi0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lmU3RhdGVtZW50KCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVz
c2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTc0MTVlMzFiNDM5ZjEwNzll
MTg0YWRhN2UyYjcwNDExZmMzNWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEluZGV4RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBJbmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRl
eCkKLSAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Oklu
ZGV4LCBXVEZNb3ZlKGJhc2UpKQotICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCi0g
ICAgewotI2lmIENQVShBRERSRVNTMzIpCi0gICAgICAgIFVOVVNFRF9QQVJBTShtX3BhZGRpbmcp
OwotI2VuZGlmCi0gICAgfQotCi0gICAgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQot
ICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAg
ICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4
cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mIGluZGV4UmVmZXJlbmNlKCkgeyByZXR1cm4gbV9pbmRleDsgfQot
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlSW5kZXgoKSB7IHJldHVybiBXVEZNb3ZlKG1f
aW5kZXgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1faW5kZXg7
Ci0jaWYgQ1BVKEFERFJFU1MzMikKLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgZm9yIHJl
cGxhY2VXaXRoIGludG8gYSBiaWdnZXIgdHlwZS4KLSAgICBjaGFyIG1fcGFkZGluZ1s0XTsKLSNl
bmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVM
VF9ERUxFVEUoSW5kZXhFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0VYUFJFU1NJT04oSW5kZXhFeHByZXNzaW9uLCBpc0luZGV4RXhwcmVzc2lvbigpKQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTcyN2E4ZjliODBhOTk5MjI3ZGFlNDEx
ZTFlMzg4YzBhNzI3MTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBl
RGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQot
aW50NjRfdCBJbnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdAotewot
ICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihtX3R5cGUu
cmVzb2x2ZWRUeXBlKCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25j
YXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7
Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21JbnRlZ2Vy
KCkobV92YWx1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzA5ZmVkZGQxM2RlYTUxNDg1OThmMjlhMDU3MDRi
OTkyYmYyZGViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNl
IFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIEludGVnZXJMaXRlcmFsIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVl
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQot
ICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwotCi0g
ICAgSW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBJ
bnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBJbnRlZ2Vy
TGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7Ci0gICAg
SW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBp
bnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLSAgICBJbnRlZ2VyTGl0ZXJh
bCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29k
ZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgICAgICByZXN1bHQubV90eXBlID0gbV90eXBlLmNs
b25lKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvbHZlZFR5cGUgPSBtX3R5cGUubWF5YmVSZXNv
bHZlZFR5cGUoKSkKLSAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUucmVzb2x2ZShjb25zdF9jYXN0
PEFTVDo6VW5uYW1lZFR5cGUmPigqcmVzb2x2ZWRUeXBlKSk7Ci0gICAgICAgIGNvcHlUeXBlVG8o
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBpbnQ2NF90IHZh
bHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgSW50ZWdlckxpdGVy
YWxUeXBlIG1fdHlwZTsKLSAgICBpbnQgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJMaXRlcmFsKQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlz
SW50ZWdlckxpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElu
dGVnZXJMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZTY2NzUwYjY0M2ViNjYyMDZhMzdlMjk5MDFhNDY3YzJiYmRlN2RlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJX
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLUludGVnZXJMaXRl
cmFsVHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZh
bHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6SW50ZWdlckxpdGVyYWwpCi0gICAgLCBt
X3ZhbHVlKHZhbHVlKQotICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0
ZShsb2NhdGlvbiwgImludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQotewotfQotCi1ib29sIElu
dGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAotewot
ICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFp
czxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24u
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmNhblJlcHJlc2VudEludGVnZXIoKShtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBJbnRlZ2VyTGl0ZXJhbFR5
cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QK
LXsKLSAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLUludGVnZXJMaXRlcmFsVHlwZSBJbnRl
Z2VyTGl0ZXJhbFR5cGU6OmNsb25lKCkgY29uc3QKLXsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUg
cmVzdWx0KG1fcHJlZmVycmVkVHlwZS0+Y29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwotICAgIGlm
IChhdXRvKiB0eXBlID0gbWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgcmVzdWx0LnJlc29s
dmUoY29uc3RfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKnR5cGUpKTsKLSAgICByZXN1bHQubV9w
cmVmZXJyZWRUeXBlID0gbV9wcmVmZXJyZWRUeXBlLmNvcHlSZWYoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGFlZGY0NzZiMzJiN2ZiZjc5ZThjMGQ3ZGM0N2M4
MzE5MWI2MGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xSZXNvbHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1Qg
ewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgZmlu
YWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGludCB2YWx1
ZSk7Ci0KLSAgICB+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi0gICAgSW50ZWdl
ckxpdGVyYWxUeXBlKGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIElu
dGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi0gICAg
SW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikg
PSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVy
YWxUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBt
X3ByZWZlcnJlZFR5cGU7IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29u
c3Q7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25z
dDsKLQotICAgIEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIGludCBtX3ZhbHVlOwotICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUg
YSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4KLSAgICAvLyBDb25zdGFudEV4cHJlc3Npb24g
LT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0
YW50RXhwcmVzc2lvbgotICAgIFJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVU
RShJbnRlZ2VyTGl0ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQ
RShJbnRlZ2VyTGl0ZXJhbFR5cGUsIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxZTkzMTEwZmUyYjUyYmU4YzZjYTFmMWM0
Njk0YjQ0Nzc3ODBhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2Fs
RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBBbmQsCi0gICAg
ICAgIE9yCi0gICAgfTsKLQotICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVHlwZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpMb2dpY2FsKQotICAgICAgICAsIG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbGVmdChXVEZN
b3ZlKGxlZnQpKQotICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCi0gICAgewotICAg
IH0KLQotICAgIH5Mb2dpY2FsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIExvZ2ljYWxF
eHByZXNzaW9uKGNvbnN0IExvZ2ljYWxFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTG9naWNh
bEV4cHJlc3Npb24oTG9naWNhbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0KCkg
eyByZXR1cm4gbV9sZWZ0OyB9Ci0gICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3Jp
Z2h0OyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IG1fbGVmdDsKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9yaWdodDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKExv
Z2ljYWxFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJ
T04oTG9naWNhbEV4cHJlc3Npb24sIGlzTG9naWNhbEV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lv
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2VkYzM2MzUyYmVhYjA0OGEzOGU5
OGU3M2RjNTY5MTc1YmZjNmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExv
Z2ljYWxOb3RFeHByZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1l
c3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTG9naWNhbE5vdEV4cHJl
c3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWxOb3QpCi0gICAgICAgICwgbV9vcGVyYW5kKFdU
Rk1vdmUob3BlcmFuZCkpCi0gICAgewotICAgIH0KLQotICAgIH5Mb2dpY2FsTm90RXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKLQotICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxO
b3RFeHByZXNzaW9uJikgPSBkZWxldGU7Ci0gICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNh
bE5vdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgb3BlcmFuZCgp
IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX29wZXJhbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsTm90RXhwcmVzc2lvbikKLQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9uLCBpc0xvZ2lj
YWxOb3RFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNWQ2NGNiOTU3MzE2MDIwOTU3MTdiMmJhZmM2NGJl
N2UzNjA5MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFk
ZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1h
a2VBcnJheVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1
ZSkpCi0gICAgICAgICwgbV9hZGRyZXNzRXNjYXBlTW9kZShhZGRyZXNzRXNjYXBlTW9kZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7Ci0KLSAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwotCi0gICAg
RXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLQotICAgIGJv
b2wgbWlnaHRFc2NhcGUoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFk
ZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+IG1fbGVmdFZhbHVlOwotICAgIEFkZHJlc3NFc2NhcGVNb2RlIG1fYWRkcmVzc0Vz
Y2FwZU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9E
RUZBVUxUX0RFTEVURShNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
biwgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTI3YzIxYzUwNWEwMzY4M2NiZTk1NjA0NjIz
Mjk1MWViMTEyZmZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTWFr
ZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBlTW9kZSkK
LSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlUG9pbnRlcikKLSAgICAg
ICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9hZGRyZXNz
RXNjYXBlTW9kZShhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfk1ha2VQ
b2ludGVyRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQotICAgIE1ha2VQb2ludGVyRXhwcmVzc2lv
bihjb25zdCBNYWtlUG9pbnRlckV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBNYWtlUG9pbnRl
ckV4cHJlc3Npb24oTWFrZVBvaW50ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4
cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9Ci0KLSAgICBib29s
IG1pZ2h0RXNjYXBlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzRXNjYXBlTW9kZSA9PSBBZGRy
ZXNzRXNjYXBlTW9kZTo6RXNjYXBlczsgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX2xlZnRWYWx1ZTsKLSAgICBBZGRyZXNzRXNjYXBlTW9kZSBtX2FkZHJlc3NFc2Nh
cGVNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVy
RXhwcmVzc2lvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZVNw
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1l
U3BhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0NmZkZmEyZDI1ZDNhODdm
NTJhZWQyODFiZWU2MGQxMjlkNDNiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYW1lU3BhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLy8g
RGlmZmVyZW50IHNoYWRlciBtb2R1bGVzIG9wZXJhdGUgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMu
Ci0vLyBUaGlzIG1lYW5zIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gZnVuY3Rpb25zIHdpdGgg
dGhlIHNhbWUgc2lnbmF0dXJlcywgYXMgbG9uZyBhcyB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgbW9k
dWxlcy4KLWVudW0gY2xhc3MgTmFtZVNwYWNlIDogdWludDhfdCB7Ci0gICAgU3RhbmRhcmRMaWJy
YXJ5ID0gMCwKLSAgICBOYW1lU3BhY2UxID0gMSwKLSAgICBOYW1lU3BhY2UyID0gMgotfTsKLQot
Y29uc3RleHByIHVuc2lnbmVkIG5hbWVTcGFjZUNvdW50ID0gMzsKLQotfQotCi19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTFmOGJhMzA2Njg4OTQ2Y2I3ZjJmMTk3YjU5NmI1Y2Iz
OTZjMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgQVNUIHsKLQotY2xhc3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfk5hbWVkVHlwZSgpID0gZGVm
YXVsdDsKLQotcHVibGljOgotICAgIE5hbWVkVHlwZShLaW5kIGtpbmQsIENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgU3RyaW5nJiYgbmFtZSkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwg
bV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkp
Ci0gICAgewotICAgIH0KLQotICAgIE5hbWVkVHlwZShjb25zdCBOYW1lZFR5cGUmKSA9IGRlbGV0
ZTsKLSAgICBOYW1lZFR5cGUoTmFtZWRUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIENvZGVMb2Nh
dGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAg
IHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVM
b2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0KLSAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25h
bWU7IH0KLQotICAgIE5hbWVTcGFjZSBuYW1lU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25hbWVT
cGFjZTsgfQotICAgIHZvaWQgc2V0TmFtZVNwYWNlKE5hbWVTcGFjZSBuYW1lU3BhY2UpIHsgbV9u
YW1lU3BhY2UgPSBuYW1lU3BhY2U7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlw
ZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBDb2Rl
TG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBOYW1lU3Bh
Y2UgbV9uYW1lU3BhY2UgeyBOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoTmFtZWRU
eXBlKQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmFtZWRUeXBlLCBpc05h
bWVkVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZGQ5YWFmNWJkZTJjYTdhOGUzOWM1NWNjNTg0ODBiM2NhNDI4YjdlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNs
YXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlv
biB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVuY3Rpb25EZWNsYXJhdGlv
bikKLSAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNsYXJh
dGlvbikpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0
IE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKLSAgICBOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0g
ICAgYm9vbCBpc05hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQot
Ci19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04o
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRhMTYy
Yjc4MTdkNDczYTgyZGQ5NzkzYTBiZTkxMjMwYTM0ZWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1
ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRz
KQotICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGxvY2F0
aW9uLCBXVEZNb3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5
cGVBcmd1bWVudHMpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TmF0aXZlVHlwZURlY2xhcmF0aW9u
KCkgPSBkZWZhdWx0OwotCi0gICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwotICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRp
dmVUeXBlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVHlwZUFyZ3VtZW50cyYgdHlw
ZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlwZUFyZ3VtZW50czsgfQotCi0gICAgYm9vbCBpc0lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnQ7IH0KLSAgICBib29sIGlzTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pc051bWJlcjsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0
dXJuIG1faXNGbG9hdGluZzsgfQotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBt
X2lzQXRvbWljOyB9Ci0gICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNWZWN0
b3I7IH0KLSAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9pc01hdHJpeDsgfQot
ICAgIGJvb2wgaXNPcGFxdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc09wYXF1ZVR5cGU7IH0K
LSAgICBib29sIGlzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlOyB9Ci0gICAg
Ym9vbCBpc1RleHR1cmVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlQXJyYXk7IH0K
LSAgICBib29sIGlzRGVwdGhUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoVGV4dHVy
ZTsgfQotICAgIGJvb2wgaXNXcml0YWJsZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzV3Jp
dGFibGVUZXh0dXJlOyB9Ci0gICAgYm9vbCBpc0N1YmVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0N1YmVUZXh0dXJlOyB9Ci0gICAgdWludCB0ZXh0dXJlRGltZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0dXJlRGltZW5zaW9uOyB9Ci0gICAgYm9vbCBpc1NpZ25lZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTaWduZWQ7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4m
IGNhblJlcHJlc2VudEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEludGVn
ZXI7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYgY2FuUmVwcmVz
ZW50VW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRVbnNpZ25l
ZEludGVnZXI7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYgY2FuUmVw
cmVzZW50RmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEZsb2F0OyB9Ci0gICAg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiYgc3VjY2Vzc29yKCkgY29uc3Qg
eyByZXR1cm4gbV9zdWNjZXNzb3I7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3Qo
aW50KT4mIGZvcm1hdFZhbHVlRnJvbUludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdFZh
bHVlRnJvbUludGVnZXI7IH0KLSAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWdu
ZWQpPiYgZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9m
b3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7IH0KLSAgICB2b2lkIGl0ZXJhdGVBbGxWYWx1
ZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsgbV9pdGVy
YXRlQWxsVmFsdWVzKGNhbGxiYWNrKTsgfQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtYXRyaXhE
aW1lbnNpb24odW5zaWduZWQgdHlwZUFyZ3VtZW50SW5kZXgpCi0gICAgewotICAgICAgICBBU1NF
UlQoaXNNYXRyaXgoKSk7Ci0gICAgICAgIEFTU0VSVCh0eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09
IDMpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KHR5
cGVBcmd1bWVudHMoKVt0eXBlQXJndW1lbnRJbmRleF0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUo
KTsKLSAgICB9Ci1wdWJsaWM6Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZNYXRyaXhSb3dzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMik7Ci0gICAgfQotICAgIHVuc2ln
bmVkIG51bWJlck9mTWF0cml4Q29sdW1ucygpCi0gICAgewotICAgICAgICByZXR1cm4gbWF0cml4
RGltZW5zaW9uKDEpOwotICAgIH0KLQotICAgIFR5cGVSZWZlcmVuY2UmIHZlY3RvclR5cGVBcmd1
bWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNWZWN0b3IoKSk7Ci0gICAgICAgIHJldHVy
biBXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4odHlwZUFyZ3VtZW50cygpWzBdKTsK
LSAgICB9Ci0KLSAgICB1bnNpZ25lZCB2ZWN0b3JTaXplKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc1ZlY3RvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uPih0eXBlQXJndW1lbnRzKClbMV0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKLSAg
ICB9Ci0KLSAgICBUeXBlUmVmZXJlbmNlJiBtYXRyaXhUeXBlQXJndW1lbnQoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzTWF0cml4KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPEFT
VDo6VHlwZVJlZmVyZW5jZT4+KHR5cGVBcmd1bWVudHMoKVswXSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRJc0ludCgpIHsgbV9pc0ludCA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzTnVtYmVyKCkg
eyBtX2lzTnVtYmVyID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNGbG9hdGluZygpIHsgbV9pc0Zs
b2F0aW5nID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNBdG9taWMoKSB7IG1faXNBdG9taWMgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1ZlY3RvcigpIHsgbV9pc1ZlY3RvciA9IHRydWU7IH0KLSAg
ICB2b2lkIHNldElzTWF0cml4KCkgeyBtX2lzTWF0cml4ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
SXNPcGFxdWVUeXBlKCkgeyBtX2lzT3BhcXVlVHlwZSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElz
VGV4dHVyZSgpIHsgbV9pc1RleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc1RleHR1cmVB
cnJheSgpIHsgbV9pc1RleHR1cmVBcnJheSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzRGVwdGhU
ZXh0dXJlKCkgeyBtX2lzRGVwdGhUZXh0dXJlID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNXcml0
YWJsZVRleHR1cmUoKSB7IG1faXNXcml0YWJsZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBz
ZXRJc0N1YmVUZXh0dXJlKCkgeyBtX2lzQ3ViZVRleHR1cmUgPSB0cnVlOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0dXJlRGltZW5zaW9uKHVpbnQgdGV4dHVyZURpbWVuc2lvbikgeyBtX3RleHR1cmVEaW1l
bnNpb24gPSB0ZXh0dXJlRGltZW5zaW9uOyB9Ci0gICAgdm9pZCBzZXRJc1NpZ25lZCgpIHsgbV9p
c1NpZ25lZCA9IHRydWU7IH0KLSAgICB2b2lkIHNldENhblJlcHJlc2VudEludGVnZXIoc3RkOjpm
dW5jdGlvbjxib29sKGludCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50SW50ZWdl
ciA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQotICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50VW5z
aWduZWRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiYgY2FuUmVwcmVzZW50
KSB7IG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNlbnQp
OyB9Ci0gICAgdm9pZCBzZXRDYW5SZXByZXNlbnRGbG9hdChzdGQ6OmZ1bmN0aW9uPGJvb2woZmxv
YXQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEZsb2F0ID0gV1RGTW92ZShjYW5S
ZXByZXNlbnQpOyB9Ci0gICAgdm9pZCBzZXRTdWNjZXNzb3Ioc3RkOjpmdW5jdGlvbjxpbnQ2NF90
KGludDY0X3QpPiYmIHN1Y2Nlc3NvcikgeyBtX3N1Y2Nlc3NvciA9IFdURk1vdmUoc3VjY2Vzc29y
KTsgfQotICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGlu
dDY0X3QoaW50KT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXIgPSBX
VEZNb3ZlKGZvcm1hdFZhbHVlKTsgfQotICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWdu
ZWRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiYgZm9ybWF0VmFsdWUp
IHsgbV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIgPSBXVEZNb3ZlKGZvcm1hdFZhbHVl
KTsgfQotICAgIHZvaWQgc2V0SXRlcmF0ZUFsbFZhbHVlcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYpPiYmIGl0ZXJhdGVBbGxWYWx1ZXMpIHsg
bV9pdGVyYXRlQWxsVmFsdWVzID0gV1RGTW92ZShpdGVyYXRlQWxsVmFsdWVzKTsgfQotCi1wcml2
YXRlOgotICAgIFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOwotICAgIHN0ZDo6ZnVuY3Rp
b248Ym9vbChpbnQpPiBtX2NhblJlcHJlc2VudEludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxi
b29sKHVuc2lnbmVkKT4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7Ci0gICAgc3RkOjpm
dW5jdGlvbjxib29sKGZsb2F0KT4gbV9jYW5SZXByZXNlbnRGbG9hdDsKLSAgICBzdGQ6OmZ1bmN0
aW9uPGludDY0X3QoaW50NjRfdCk+IG1fc3VjY2Vzc29yOwotICAgIHN0ZDo6ZnVuY3Rpb248aW50
NjRfdChpbnQpPiBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjxp
bnQ2NF90KHVuc2lnbmVkKT4gbV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7Ci0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4g
bV9pdGVyYXRlQWxsVmFsdWVzOwotICAgIHVpbnQgbV90ZXh0dXJlRGltZW5zaW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9pc0ludCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTnVtYmVyIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNGbG9hdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQXRvbWlj
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNWZWN0b3IgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9p
c01hdHJpeCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzT3BhcXVlVHlwZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2lzVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzVGV4dHVyZUFycmF5
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNEZXB0aFRleHR1cmUgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9pc1dyaXRhYmxlVGV4dHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ3ViZVRleHR1
cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1NpZ25lZCB7IGZhbHNlIH07Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
VFlQRShOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlNzQ5OThiMTQ0YzFjNGIxNjRiNGVmMmM5YzkwYWEyY2U0ZDA4NTZhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25B
dHRyaWJ1dGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgOiBwdWJsaWMgQmFzZUZ1bmN0aW9uQXR0cmlidXRl
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBkZXB0aCkKLSAgICAgICAgOiBCYXNlRnVuY3Rpb25B
dHRyaWJ1dGUobG9jYXRpb24pCi0gICAgICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAgICAgLCBt
X2hlaWdodChoZWlnaHQpCi0gICAgICAgICwgbV9kZXB0aChkZXB0aCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0Owot
Ci0gICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKGNvbnN0IE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSYpID0gZGVsZXRlOwotICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0OwotCi0gICAgdW5zaWduZWQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB1bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVwdGg7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3dpZHRoOwotICAg
IHVuc2lnbmVkIG1faGVpZ2h0OwotICAgIHVuc2lnbmVkIG1fZGVwdGg7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xQb2ludGVyVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUG9pbnRlclR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVmYmRi
NmFiNGE2ZmI4M2JlNWQzNGMyZDg4OGMwMTUwOThlMjVkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFJlZmVy
ZW5jZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuY2VUeXBl
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQb2ludGVyVHlwZSk7Ci0gICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7Ci0KLSAgICBQ
b2ludGVyVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3Bh
Y2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlv
biwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKLSAg
ICB7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQb2ludGVyVHlwZT4gY3JlYXRl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVu
bmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVs
ZW1lbnRUeXBlKSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIH5Qb2lu
dGVyVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMtPkJhc2U6Omhhc2goKSBeIFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUxpdGVyYWxIYXNoKCJwb2ludGVyIik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFBvaW50ZXJUeXBlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZGRy
ZXNzU3BhY2UoKSA9PSBvdGhlci5hZGRyZXNzU3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90
aGVyLmVsZW1lbnRUeXBlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJpbmco
KSwgJyonKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURF
RklORV9ERUZBVUxUX0RFTEVURShQb2ludGVyVHlwZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWEyM2QwYTM1NmNiNzM0
OGI0MzYwM2U3NzViYjM4NzJjNjc3NzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5j
dGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXBy
b3RlY3RlZDoKLSAgICB+UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCi1w
dWJsaWM6Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgS2luZCBraW5kLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIGtpbmQpCi0gICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkp
Ci0gICAgewotICAgIH0KLQotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKLSAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJl
c3Npb24mIGJhc2UoKSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mIGJhc2VSZWZlcmVuY2UoKSB7IHJldHVybiBtX2Jhc2U7IH0KLSAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gdGFrZUJhc2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fYmFzZSk7IH0KLQotcHJpdmF0
ZToKLSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgQVNUCi0KLX0KLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJ
T04oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4NzdkZjIyZWQyMTZkNmUwZjAzZjQ3ZjRjZjFm
NDg4MzdiOWM4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxv
Y2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1lbnVtIGNsYXNzIFF1
YWxpZmllciA6IHVpbnQ4X3QgewotICAgIE5vaW50ZXJwb2xhdGlvbiwKLSAgICBOb3BlcnNwZWN0
aXZlLAotICAgIFVuaWZvcm0sCi0gICAgQ2VudHJvaWQsCi0gICAgU2FtcGxlCi19OwotCi11c2lu
ZyBRdWFsaWZpZXJzID0gVmVjdG9yPFF1YWxpZmllcj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTEwM2VjOGQxODBjOGI1OWNkMWRiMTRjZjVkNTY3YWIwNTE2OWU1Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotLyoK
LSAqICAxLiBFdmFsdWF0ZSBtX2xlZnRWYWx1ZQotICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRv
IG1fb2xkVmFsdWUKLSAqICAzLiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgotICogIDQu
IEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAqICA1LiBBc3NpZ24gdGhlIHJlc3Vs
dCB0byBtX2xlZnRWYWx1ZQotICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgotICog
IDcuIFJldHVybiB0aGUgcmVzdWx0Ci0gKi8KLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6UmVhZE1vZGlmeVdyaXRlKQotICAgICAgICAsIG1fbGVm
dFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkKLSAgICAgICAgLCBtX29sZFZhbHVlKG1ha2VVbmlx
dWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0
ciwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKQotICAgICAgICAsIG1fbmV3VmFsdWUobWFr
ZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBu
dWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCi0gICAgewotICAgIH0KLQotICAg
IFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlLCBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4g
b2xkVmFsdWUsIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYWx1ZSkKLSAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9kaWZ5V3JpdGUpCi0gICAgICAg
ICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUo
V1RGTW92ZShvbGRWYWx1ZSkpCi0gICAgICAgICwgbV9uZXdWYWx1ZShXVEZNb3ZlKG5ld1ZhbHVl
KSkKLSAgICB7Ci0gICAgfQotCi0KLSAgICB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0g
ZGVmYXVsdDsKLQotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHNl
dE5ld1ZhbHVlRXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJl
c3Npb24pCi0gICAgewotICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3
VmFsdWVFeHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24o
VW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAg
IG1fcmVzdWx0RXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7Ci0gICAgfQot
Ci0gICAgVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4o
VmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9vbGRWYWx1ZSkpOwotICAgIH0KLQotICAgIFVuaXF1
ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVm
ZXJlbmNlOjp3cmFwKG1fbmV3VmFsdWUpKTsKLSAgICB9Ci0KLSAgICBFeHByZXNzaW9uJiBsZWZ0
VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYgbGVmdFZhbHVlUmVmZXJlbmNlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KLSAgICBWYXJp
YWJsZURlY2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KLSAgICBW
YXJpYWJsZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAg
ICBFeHByZXNzaW9uJiBuZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fbmV3VmFsdWVFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX25ld1ZhbHVlRXhwcmVz
c2lvbjsKLSAgICB9Ci0gICAgRXhwcmVzc2lvbiYgcmVzdWx0RXhwcmVzc2lvbigpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9yZXN1bHRFeHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuICptX3Jl
c3VsdEV4cHJlc3Npb247Ci0gICAgfQotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlTGVm
dFZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX2xlZnRWYWx1ZSk7IH0KLSAgICBVbmlxdWVSZWY8
VmFyaWFibGVEZWNsYXJhdGlvbj4gdGFrZU9sZFZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX29s
ZFZhbHVlKTsgfQotICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0YWtlTmV3VmFs
dWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fbmV3VmFsdWUpOyB9Ci0gICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IHRha2VOZXdWYWx1ZUV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBXVEZNb3ZlKG1fbmV3VmFsdWVFeHByZXNzaW9uLnZhbHVlKCkpOwotICAgICAgICBtX25l
d1ZhbHVlRXhwcmVzc2lvbi5yZXNldCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LSAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZVJlc3VsdEV4cHJlc3Npb24oKQotICAgIHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbi52YWx1ZSgp
KTsKLSAgICAgICAgbV9yZXN1bHRFeHByZXNzaW9uLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xl
ZnRWYWx1ZTsKLSAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9vbGRWYWx1ZTsK
LSAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV9uZXdWYWx1ZTsKLSAgICBzdGQ6
Om9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247Ci0g
ICAgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lv
bjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfRVhQUkVTU0lPTihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlZmVyZW5jZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlZmVyZW5jZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZh
Y2QzMTVjMWMyMTQzNTc5ZWE1ZDBkMmUwMjViNWVjNGVmMGU2NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNM
Q29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVi
bGljIFVubmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZWZlcmVuY2VUeXBlKTsKLQotcHJvdGVjdGVkOgotICAgIH5SZWZl
cmVuY2VUeXBlKCkgPSBkZWZhdWx0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVmZXJlbmNlVHlwZShD
b2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5h
bWVkVHlwZT4gZWxlbWVudFR5cGUsIEtpbmQga2luZCkKLSAgICAgICAgOiBVbm5hbWVkVHlwZShs
b2NhdGlvbiwga2luZCkKLSAgICAgICAgLCBtX2FkZHJlc3NTcGFjZShhZGRyZXNzU3BhY2UpCi0g
ICAgICAgICwgbV9lbGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKLSAgICB7Ci0gICAg
fQotCi0KLXB1YmxpYzoKLSAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Ci0gICAgVW5uYW1lZFR5cGUmIGVs
ZW1lbnRUeXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQotCi0gICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gfm1fZWxlbWVudFR5cGUtPmhhc2goKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQWRkcmVzc1NwYWNlIG1fYWRkcmVzc1NwYWNlOwotICAg
IFJlZjxVbm5hbWVkVHlwZT4gbV9lbGVtZW50VHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFT
VAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRfREVMRVRFKFJlZmVyZW5jZVR5cGUpCi0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5j
ZVR5cGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNl
V2l0aC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTE0ZmJjYzhlN2JkMDFmM2Rm
MDUxM2M0MDNlZGJmY2JjYTZmN2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlcGxhY2VXaXRoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBOZXcsIHR5cGVuYW1lIE9sZCwgdHlwZW5hbWUgLi4uQXJncz4KLUFM
V0FZU19JTkxJTkUgTmV3KiByZXBsYWNlV2l0aChPbGQmIG9sZCwgQXJncyYmLi4uIGFyZ3MpCi17
Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoTmV3KSA8PSBzaXplb2YoT2xkKSwgIlRoaXMgaXMg
bmVlZGVkIGZvciB0aGUgcGxhY2VtZW50IG5ldyBiZWxvdyB0byBub3Qgb3ZlcndyaXRlIHVub3du
ZWQgbWVtb3J5LiIpOwotICAgIHZvaWQqIGxvY2F0aW9uID0gJm9sZDsKLSAgICBPbGQ6OmRlc3Ry
dWN0KG9sZCk7Ci0gICAgcmV0dXJuIG5ldyAobG9jYXRpb24pIE5ldyhzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOwotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6V0hMU0w6OkFT
VAotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVU
eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMmExZDdlY2NlZTEyNDE4ODU1
ZGU1MTQ3NGZlZTlhMjRiYjYxNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UmVzb2x2YWJsZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgUmVz
b2x2YWJsZVR5cGUgOiBwdWJsaWMgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0KLXByb3RlY3RlZDoKLSAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLXB1Ymxp
YzoKLSAgICBSZXNvbHZhYmxlVHlwZShLaW5kIGtpbmQpCi0gICAgICAgIDogVHlwZShraW5kKQot
ICAgIHsgfQotCi0KLSAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0g
ZGVsZXRlOwotICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsK
LQotICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2YWJsZVR5cGUmKSA9
IGRlbGV0ZTsKLSAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KFJlc29sdmFibGVUeXBlJiYp
ID0gZGVmYXVsdDsKLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQot
ICAgIGNvbnN0IFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRUeXBlID8gJiptX3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KLSAgICBjb25z
dCBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7Ci0gICAg
fQotCi0gICAgVW5uYW1lZFR5cGUqIG1heWJlUmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV9yZXNv
bHZlZFR5cGUgPyAmKm1fcmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQotICAgIFVubmFtZWRUeXBl
JiByZXNvbHZlZFR5cGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc29s
dmUoUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgIHsKLSAgICAgICAgbV9yZXNvbHZlZFR5cGUg
PSBXVEZNb3ZlKHR5cGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8VW5uYW1lZFR5
cGU+IG1fcmVzb2x2ZWRUeXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVzb2x2YWJsZVR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfVFlQRShSZXNvbHZhYmxlVHlwZSwgaXNSZXNvbHZhYmxlVHlwZSgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNl
bWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ2ZTdhMmJmZjhiMTRm
ZGI2MDhhYTQ0N2RhYzhiYjdmOGM3MjExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJX
SExTTEFkZHJlc3NTcGFjZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5j
bHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25z
dCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3Mp
IGNvbnN0Ci17Ci0gICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIE1vZGU6OlVub3JkZXJl
ZEFjY2Vzc1ZpZXc6Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkp
IHsKLSAgICAgICAgICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VU
eXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlVHlwZS5hZGRy
ZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50IHx8IHJlZmVyZW5jZVR5cGUuYWRk
cmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpEZXZpY2U7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgYXV0byYg
dHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAg
ICAgICAgICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLmlzVGV4dHVyZSgpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1vZGU6OlRleHR1cmU6
Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmFkZHJlc3NTcGFj
ZSgpID09IEFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGlmIChpczxBcnJheVR5cGU+
KHVubmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoaXM8
VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0eXBlUmVm
ZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAg
ICAgaWYgKGlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNUZXh0dXJlKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTW9kZTo6QnVmZmVyOgotICAgICAg
ICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBB
ZGRyZXNzU3BhY2U6OkNvbnN0YW50OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBN
b2RlOjpTYW1wbGVyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmlu
c2ljcy5zYW1wbGVyVHlwZSgpKTsKLSAgICB9Ci19Ci0KLWJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6
aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRp
cmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAotewot
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjhkNWVkMzdlOGFiOTdmZjdhNTkwMmQ3ZjFlYWViZmE2NTVlYWMxMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMu
aCIKLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJlc291cmNlU2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFu
dGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIGNs
YXNzIE1vZGUgOiB1aW50OF90IHsKLSAgICAgICAgVW5vcmRlcmVkQWNjZXNzVmlldywKLSAgICAg
ICAgVGV4dHVyZSwKLSAgICAgICAgQnVmZmVyLAotICAgICAgICBTYW1wbGVyCi0gICAgfTsKLQot
ICAgIFJlc291cmNlU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBNb2RlIG1vZGUsIHVu
c2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzcGFjZSkKLSAgICAgICAgOiBCYXNlU2VtYW50aWMobG9j
YXRpb24pCi0gICAgICAgICwgbV9tb2RlKG1vZGUpCi0gICAgICAgICwgbV9pbmRleChpbmRleCkK
LSAgICAgICAgLCBtX3NwYWNlKHNwYWNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5S
ZXNvdXJjZVNlbWFudGljKCkgPSBkZWZhdWx0OwotCi0gICAgUmVzb3VyY2VTZW1hbnRpYyhjb25z
dCBSZXNvdXJjZVNlbWFudGljJikgPSBkZWxldGU7Ci0gICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNv
dXJjZVNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cmluZ1ZpZXcgdG9TdHJpbmcoKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICAgICAgY2FzZSBNb2RlOjpVbm9y
ZGVyZWRBY2Nlc3NWaWV3OgotICAgICAgICAgICAgcmV0dXJuICJVbm9yZGVyZWRBY2Nlc3NWaWV3
IjsKLSAgICAgICAgY2FzZSBNb2RlOjpUZXh0dXJlOgotICAgICAgICAgICAgcmV0dXJuICJUZXh0
dXJlIjsKLSAgICAgICAgY2FzZSBNb2RlOjpCdWZmZXI6Ci0gICAgICAgICAgICByZXR1cm4gIkJ1
ZmZlciI7Ci0gICAgICAgIGNhc2UgTW9kZTo6U2FtcGxlcjoKLSAgICAgICAgICAgIHJldHVybiAi
U2FtcGxlciI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZGU7IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5k
ZXg7IH0KLSAgICB1bnNpZ25lZCBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX21vZGUgPT0gb3RoZXIubV9tb2RlICYmIG1faW5kZXgg
PT0gb3RoZXIubV9pbmRleCAmJiBtX3NwYWNlID09IG90aGVyLm1fc3BhY2U7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJv
b2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3Mm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJl
Y3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50
VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBNb2RlIG1fbW9kZTsKLSAg
ICB1bnNpZ25lZCBtX2luZGV4OwotICAgIHVuc2lnbmVkIG1fc3BhY2U7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXR1cm4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJldHVybi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiNTZiYzgwZjgwNTA5
Yjg4ZjE0YzZiZWE3OWY5Mjg2ZWRhNDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJldHVybi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFJldHVybiBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFJldHVybihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHZhbHVlKQot
ICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQotICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgewotICAgIH0KLQotICAgIH5SZXR1cm4oKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBSZXR1cm4oY29uc3QgUmV0dXJuJikgPSBkZWxldGU7Ci0gICAgUmV0dXJu
KFJldHVybiYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9uKiB2YWx1ZSgpIHsgcmV0dXJu
IG1fdmFsdWUuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4gbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVG
SU5FX0RFRkFVTFRfREVMRVRFKFJldHVybikKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoUmV0dXJuLCBpc1JldHVybigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNlbWFudGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh
N2JhNjJiZTBkNTdmYjRhYzE5N2Q3MmQ0MDQwODZkNTI1NzJlNzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLXVzaW5nIFNlbWFudGljID0gVmFyaWFudDxCdWls
dEluU2VtYW50aWMsIFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYywgU3RhZ2VJbk91dFNlbWFudGljPjsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE0ZjAxNTM5NGUxZjY2ZWE2NzQ1NzQxZDcwNzk5ZDZhMmQ1YmVhNGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUg
IldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJl
bmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFt
ZXNwYWNlIEFTVCB7Ci0KLWJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0Fj
Y2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50cmlu
c2ljcyYpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNh
c3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgIGlmICghaXM8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLmlzTnVtYmVyKCk7Ci19Ci0KLWJvb2wgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9u
KFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5
UG9pbnRUeXBlPiYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVt
RGlyZWN0aW9uOjpJbnB1dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjYzOWVjMTk2Zjg5OTVjMjA5NWVkMWUyYzA0Zjg4ZmU4OGQxYzhmMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQmFzZVNl
bWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKQotICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKLSAgICB7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkgPSBkZWZh
dWx0OwotCi0gICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKGNvbnN0IFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpID0gZGVsZXRlOwotICAgIFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYyhTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmJikgPSBkZWZhdWx0
OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYyYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWNj
ZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNo
YWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhZ2VJbk91dFNlbWFudGljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZk
YzY0OTY1YjMyMzE2NTUwOWVjNjFjY2UyZGI0YTk2ODBlYmQzMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgQVNUIHsKLQotYm9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0
YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNz
JikgY29uc3QKLXsKLSAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmICghaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0
PFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICBhdXRvJiByZXNvbHZlZFR5cGUgPSB0
eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpOwotICAgIGlmIChpczxFbnVtZXJhdGlvbkRlZmlu
aXRpb24+KHJlc29sdmVkVHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8
TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlw
ZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKLSAgICByZXR1cm4g
bmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTnVtYmVyKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmlzVmVjdG9yKCkKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlz
TWF0cml4KCk7Ci19Ci0KLWJvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsKLSAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpW
ZXJ0ZXg6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZy
YWdtZW50OgotICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246
OklucHV0OwotICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFu
dGljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTIzY2FhNGQ3ZTIxMmY2MmEw
YzUzNmE3ZTNhYzlmNGExMzc5NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhZ2VJbk91dFNlbWFudGljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgU3RhZ2VJbk91
dFNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3RhZ2VJbk91dFNlbWFudGljKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgdW5zaWduZWQgaW5kZXgpCi0gICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQot
ICAgICAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflN0
YWdlSW5PdXRTZW1hbnRpYygpID0gZGVmYXVsdDsKLQotICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhj
b25zdCBTdGFnZUluT3V0U2VtYW50aWMmKSA9IGRlbGV0ZTsKLSAgICBTdGFnZUluT3V0U2VtYW50
aWMoU3RhZ2VJbk91dFNlbWFudGljJiYpID0gZGVmYXVsdDsKLQotICAgIHVuc2lnbmVkIGluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0YWdlSW5PdXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdGFnZUluT3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQotICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlw
ZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURp
cmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVy
cmlkZTsKLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhkY2ZkNzYzZmEx
Y2U4OGNjZTI0MDgwMDU3NjE3OGI1NzI1NjYwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGF0ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0
ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVz
cGFjZSBBU1QgewotCi1jbGFzcyBTdGF0ZW1lbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKLQotcHVibGlj
OgotICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgewotICAgICAgICBCbG9jaywKLSAgICAg
ICAgQnJlYWssCi0gICAgICAgIENvbnRpbnVlLAotICAgICAgICBEb1doaWxlTG9vcCwKLSAgICAg
ICAgRWZmZWN0ZnVsRXhwcmVzc2lvbiwKLSAgICAgICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZv
ckxvb3AsCi0gICAgICAgIElmLAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIFN0YXRlbWVudExp
c3QsCi0gICAgICAgIFN3aXRjaENhc2UsCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgVmFyaWFi
bGVEZWNsYXJhdGlvbnMsCi0gICAgICAgIFdoaWxlTG9vcCwKLSAgICB9OwotICAgIFN0YXRlbWVu
dChDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2Rl
TG9jYXRpb24oY29kZUxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFN0YXRlbWVudCYpOwotICAgIHN0YXRpYyB2
b2lkIGRlc3RydWN0KFN0YXRlbWVudCYpOwotCi0gICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVu
dCYpID0gZGVsZXRlOwotICAgIFN0YXRlbWVudChTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwotCi0g
ICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0KLSAgICBib29sIGlzQmxv
Y2soKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QmxvY2s7IH0KLSAgICBib29sIGlz
QnJlYWsoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QnJlYWs7IH0KLSAgICBib29s
IGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29udGludWU7IH0K
LSAgICBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
RG9XaGlsZUxvb3A7IH0KLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOyB9Ci0g
ICAgYm9vbCBpc0ZhbGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZh
bGx0aHJvdWdoOyB9Ci0gICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6Rm9yTG9vcDsgfQotICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpJZjsgfQotICAgIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6UmV0dXJuOyB9Ci0gICAgYm9vbCBpc1N0YXRlbWVudExpc3Qo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RhdGVtZW50TGlzdDsgfQotICAgIGJv
b2wgaXNTd2l0Y2hDYXNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3aXRjaENh
c2U7IH0KLSAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9u
czsgfQotICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6V2hpbGVMb29wOyB9Ci0KLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihD
b2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQotCi1w
cml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBLaW5kIG1fa2lu
ZDsKLX07Ci0KLXVzaW5nIFN0YXRlbWVudHMgPSBWZWN0b3I8VW5pcXVlUmVmPFN0YXRlbWVudD4+
OwotCi19Ci0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3RhdGVtZW50KQotCi0j
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRvVmFsdWVUeXBl
TmFtZSwgcHJlZGljYXRlKSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkgeyByZXR1cm4g
c3RhdGVtZW50LnByZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVE
ZWZpbml0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMDI3Mzg3M2YxYTYy
MDRlNzk5MWVlNzE3MzI3MDc0NDE1ZmY1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5hbWVk
VHlwZS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIGZpbmFs
IDogcHVibGljIE5hbWVkVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIG5hbWUsIFN0cnVjdHVyZUVsZW1lbnRzJiYgc3RydWN0dXJlRWxlbWVudHMpCi0gICAgICAg
IDogTmFtZWRUeXBlKEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3Zl
KG5hbWUpKQotICAgICAgICAsIG1fc3RydWN0dXJlRWxlbWVudHMoV1RGTW92ZShzdHJ1Y3R1cmVF
bGVtZW50cykpCi0gICAgewotICAgIH0KLQotICAgIH5TdHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBk
ZWZhdWx0OwotCi0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0
aW9uJikgPSBkZWxldGU7Ci0gICAgU3RydWN0dXJlRGVmaW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0
aW9uJiYpID0gZGVmYXVsdDsKLQotICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVt
ZW50cygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KLSAgICBTdHJ1Y3R1cmVFbGVt
ZW50KiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0
b3IgPSBzdGQ6OmZpbmRfaWYobV9zdHJ1Y3R1cmVFbGVtZW50cy5iZWdpbigpLCBtX3N0cnVjdHVy
ZUVsZW1lbnRzLmVuZCgpLCBbJl0oU3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkg
LT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlRWxlbWVudC5uYW1lKCkgPT0g
bmFtZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3N0cnVjdHVyZUVs
ZW1lbnRzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biAmKml0ZXJhdG9yOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJ1Y3R1cmVFbGVtZW50cyBt
X3N0cnVjdHVyZUVsZW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoU3RydWN0dXJlRGVmaW5pdGlvbikKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFN0cnVjdHVyZURlZmluaXRpb24sIGlzU3RydWN0dXJl
RGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0
dXJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2My
ODZjZjJkMDJmM2M0MGRlZGM2YjhhNGEzZWNkMmZhMGRlY2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDgx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9D
T01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hM
U0xRdWFsaWZpZXIuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQgZmluYWwgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN0cnVjdHVyZUVsZW1lbnQoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmPFVubmFtZWRU
eXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2Vt
YW50aWMpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9x
dWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUo
dHlwZSkpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV9zZW1h
bnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN0cnVjdHVyZUVs
ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVy
ZUVsZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1l
bnQmJikgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIFVubmFtZWRUeXBlJiB0eXBl
KCkgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4g
bV9uYW1lOyB9Ci0gICAgU2VtYW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYy5n
ZXQoKTsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAg
ICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKLSAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsK
LSAgICBTdHJpbmcgbV9uYW1lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4gbV9zZW1h
bnRpYzsKLX07Ci0KLXVzaW5nIFN0cnVjdHVyZUVsZW1lbnRzID0gVmVjdG9yPFN0cnVjdHVyZUVs
ZW1lbnQ+OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRkYWRjN2E1YzllZWE5NTU1YmRhN2M0NjQyMWIzZTg1ZWE0ZWRmMzIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldI
TFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTd2l0Y2hDYXNlKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFs
dWUsIEJsb2NrJiYgYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpT
d2l0Y2hDYXNlKQotICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwg
bV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflN3aXRjaENhc2Uo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0
ZTsKLSAgICBTd2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OwotCi0gICAgc3RkOjpv
cHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0K
LSAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9Ci0KLXByaXZhdGU6Ci0gICAg
c3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Ci0gICAgQmxvY2sgbV9i
bG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFV
TFRfREVMRVRFKFN3aXRjaENhc2UpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKFN3aXRjaENhc2UsIGlzU3dpdGNoQ2FzZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjMyOTMyYTMzOGNhOWNmNGIzNzRhNTYxNGVmYWZmY2YwMTI1NmQ0Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNl
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLWNsYXNzIFN3aXRjaFN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1l
bnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFN3aXRjaFN0
YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZh
bHVlLCBWZWN0b3I8U3dpdGNoQ2FzZT4mJiBzd2l0Y2hDYXNlcykKLSAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaCkKLSAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFs
dWUpKQotICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCi0gICAg
ewotICAgIH0KLQotICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTd2l0
Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7Ci0gICAgU3dpdGNo
U3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBFeHByZXNzaW9u
JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBWZWN0b3I8U3dpdGNoQ2FzZT4mIHN3
aXRjaENhc2VzKCkgeyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQotCi1wcml2YXRlOgotICAgIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiBtX3ZhbHVlOwotICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBtX3N3
aXRjaENhc2VzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVf
REVGQVVMVF9ERUxFVEUoU3dpdGNoU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChTd2l0Y2hTdGF0ZW1lbnQsIGlzU3dpdGNoU3RhdGVtZW50KCkpCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJl
c3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ4ZTQ0OTIyMDVjNWU3MGNj
ZjU5MmM4NmRiNTdiMDMzMTVhMTM4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUZXJuYXJ5RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFRlcm5hcnlFeHByZXNz
aW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIFRlcm5hcnlFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBib2R5RXhwcmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWxzZUV4cHJlc3Np
b24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VGVybmFyeSkKLSAgICAg
ICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCi0gICAgICAgICwgbV9ib2R5RXhw
cmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKLSAgICAgICAgLCBtX2Vsc2VFeHByZXNz
aW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB+VGVybmFy
eUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25zdCBU
ZXJuYXJ5RXhwcmVzc2lvbiYpID0gZGVsZXRlOwotICAgIFRlcm5hcnlFeHByZXNzaW9uKFRlcm5h
cnlFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgp
IHsgcmV0dXJuIG1fcHJlZGljYXRlOyB9Ci0gICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24o
KSB7IHJldHVybiBtX2JvZHlFeHByZXNzaW9uOyB9Ci0gICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJl
c3Npb24oKSB7IHJldHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IG1fcHJlZGljYXRlOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiBtX2JvZHlFeHByZXNzaW9uOwotICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Vsc2VFeHBy
ZXNzaW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVG
QVVMVF9ERUxFVEUoVGVybmFyeUV4cHJlc3Npb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihUZXJuYXJ5RXhwcmVzc2lvbiwgaXNUZXJuYXJ5RXhwcmVzc2lvbigp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxZjg4MmRkOTkxYjgwZDlmNTVkNWEwMWJjYjM4YjA4Yzc3OGRkOTZk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNU
IHsKLQotY2xhc3MgVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXByb3Rl
Y3RlZDoKLSAgICB+VHlwZSgpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAgIGVudW0gY2xhc3Mg
S2luZCA6IHVpbnQ4X3QgewotICAgICAgICAvLyBVbm5hbWVkVHlwZXMKLSAgICAgICAgVHlwZVJl
ZmVyZW5jZSwKLSAgICAgICAgUG9pbnRlciwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2UsCi0gICAg
ICAgIEFycmF5LAotICAgICAgICAvLyBOYW1lZFR5cGVzCi0gICAgICAgIFR5cGVEZWZpbml0aW9u
LAotICAgICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uLAotICAgICAgICBFbnVtZXJhdGlvbkRlZmlu
aXRpb24sCi0gICAgICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwKLSAgICAgICAgLy8gUmVzb2x2
YWJsZVR5cGVzCi0gICAgICAgIEZsb2F0TGl0ZXJhbCwKLSAgICAgICAgSW50ZWdlckxpdGVyYWws
Ci0gICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgfTsKLQotICAgIFR5cGUoS2lu
ZCBraW5kKQotICAgICAgICA6IG1fa2luZChraW5kKQotICAgIHsgfQotICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koVHlwZSYpOwotICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFR5cGUmKTsKLQotICAg
IGV4cGxpY2l0IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwotICAgIFR5cGUoVHlwZSYmKSA9
IGRlZmF1bHQ7Ci0KLSAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRlOwot
ICAgIFR5cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKLQotICAgIEtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotCi0gICAgYm9vbCBpc1VubmFtZWRUeXBlKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVSZWZlcmVuY2UgJiYga2luZCgpIDw9IEtp
bmQ6OkFycmF5OyB9Ci0gICAgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA+PSBLaW5kOjpUeXBlRGVmaW5pdGlvbiAmJiBraW5kKCkgPD0gS2luZDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uOyB9Ci0gICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID49IEtpbmQ6OkZsb2F0TGl0ZXJhbCAmJiBraW5kKCkgPD0gS2luZDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbDsgfQotCi0gICAgYm9vbCBpc1R5cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6VHlwZVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNQb2ludGVy
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpQb2ludGVyOyB9Ci0gICAgYm9v
bCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpB
cnJheVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6QXJyYXk7IH0KLSAgICBib29sIGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGlzUG9pbnRlclR5cGUoKSB8fCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpOyB9Ci0K
LSAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6VHlwZURlZmluaXRpb247IH0KLSAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOyB9Ci0gICAg
Ym9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb247IH0KLSAgICBib29sIGlzTmF0aXZlVHlwZURlY2xh
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjsgfQotCi0gICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFs
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQot
ICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9Ci0KLSAgICBUeXBlJiB1bmlm
eU5vZGUoKTsKLSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8VHlwZSo+KHRoaXMpLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgS2luZCBtX2tpbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQot
fQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShUeXBlKQotCi0jZGVmaW5lIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVl
VHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZUFyZ3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVBcmd1bWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5
NGUxMGJmNzU0MjlkODY2ZjY0NDU1MDUzYTk0MzExMjhiYzdmNWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xUeXBlQXJndW1lbnQuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNw
YWNlIEFTVCB7Ci0KLVR5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlw
ZUFyZ3VtZW50cykKLXsKLSAgICBUeXBlQXJndW1lbnRzIHJlc3VsdDsKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVBcmd1bWVudHMpCi0gICAgICAgIHJlc3VsdC5hcHBl
bmQoY2xvbmUodHlwZUFyZ3VtZW50KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVHlwZUFy
Z3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIHJl
dHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNz
aW9uJiBjb25zdGFudEV4cHJlc3Npb24pIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVy
biBjb25zdGFudEV4cHJlc3Npb24uY2xvbmUoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8VHlwZVJl
ZmVyZW5jZT4mIHR5cGVSZWZlcmVuY2UpIC0+IFR5cGVBcmd1bWVudCB7Ci0gICAgICAgIHJldHVy
biB0eXBlUmVmZXJlbmNlLmNvcHlSZWYoKTsKLSAgICB9KSwgdHlwZUFyZ3VtZW50KTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGEyYTMyZWI2ZWI1MTgxZGYzMDY4MmJhMmU0ZDIzZjIyNWQzMTcxYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBUeXBlUmVmZXJlbmNlOwotCi11c2luZyBU
eXBlQXJndW1lbnQgPSBWYXJpYW50PENvbnN0YW50RXhwcmVzc2lvbiwgUmVmPFR5cGVSZWZlcmVu
Y2U+PjsKLXVzaW5nIFR5cGVBcmd1bWVudHMgPSBWZWN0b3I8VHlwZUFyZ3VtZW50PjsKLQotVHlw
ZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYpOwotVHlwZUFyZ3VtZW50cyBjbG9u
ZShjb25zdCBUeXBlQXJndW1lbnRzJik7Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlv
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjkwNTU3YmVlZWZiMGZlNGUyMGNi
MThmMTg2YjIxMmM0M2RiODc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVEZWZpbml0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTENvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0j
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFj
ZSBBU1QgewotCi1jbGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGVEZWZpbml0
aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBl
PiB0eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpUeXBlRGVmaW5pdGlvbiwgbG9jYXRp
b24sIFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCi0gICAg
ewotICAgIH0KLQotICAgIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKLQotICAgIFR5cGVE
ZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7Ci0gICAgVHlwZURlZmlu
aXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwotCi0gICAgVW5uYW1lZFR5cGUmIHR5
cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHlw
ZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5
cGUtPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxF
VEUoVHlwZURlZmluaXRpb24pCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShU
eXBlRGVmaW5pdGlvbiwgaXNUeXBlRGVmaW5pdGlvbigpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMmIzMzFjMzJkNTU0MGY2MzFjMTQxZjJiYzQ2OTFhMTgyMTg0YWViZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotUmVmPFR5cGVSZWZlcmVuY2U+IFR5cGVS
ZWZlcmVuY2U6OndyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVk
VHlwZSkKLXsKLSAgICBUeXBlQXJndW1lbnRzIHR5cGVBcmd1bWVudHM7Ci0gICAgaWYgKGlzPE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKSkKLSAgICAgICAgdHlwZUFyZ3VtZW50
cyA9IEFTVDo6Y2xvbmUoZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5
cGUpLnR5cGVBcmd1bWVudHMoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBUeXBlUmVmZXJlbmNlOjpj
cmVhdGUobG9jYXRpb24sIFN0cmluZyhyZXNvbHZlZFR5cGUubmFtZSgpKSwgV1RGTW92ZSh0eXBl
QXJndW1lbnRzKSk7Ci0gICAgcmVzdWx0LT5zZXRSZXNvbHZlZFR5cGUocmVzb2x2ZWRUeXBlKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZGVlZWZmZWFiMDdkMDQwNDlhODU0NjI3
NzcxY2VmMzA2MmJkNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJl
ZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgQVNUIHsKLQotY2xhc3MgTmFtZWRUeXBlOwotCi1jbGFzcyBUeXBlUmVmZXJlbmNlIGZpbmFs
IDogcHVibGljIFVubmFtZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUeXBlUmVmZXJlbmNlKTsKLSAgICBUeXBlUmVmZXJlbmNl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5
cGVBcmd1bWVudHMpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6OlR5cGVS
ZWZlcmVuY2UpCi0gICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCi0gICAgICAgICwgbV90
eXBlQXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCi0gICAgewotICAgIH0KLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFR5cGVSZWZlcmVuY2UobG9jYXRpb24s
IFdURk1vdmUobmFtZSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpKTsKLSAgICB9Ci0KLSAgICB+
VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVyZW5j
ZT4gd3JhcChDb2RlTG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKTsKLQotICAgIFN0
cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFR5cGVBcmd1bWVudHMmIHR5cGVB
cmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KLSAgICBOYW1lZFR5cGUqIG1h
eWJlUmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGU7IH0KLSAgICBO
YW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9y
ZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlKE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQotICAgIHsK
LSAgICAgICAgbV9yZXNvbHZlZFR5cGUgPSAmcmVzb2x2ZWRUeXBlOwotICAgIH0KLQotICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5
IHVzZSB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRoZSBuYW1lIHJlc29sdmVyIHJ1bnMuCi0gICAgICAg
IC8vIFJlbHlpbmcgb24gaGF2aW5nIGEgcmVzb2x2ZWQgdHlwZSBzaW1wbGlmaWVzIHRoaXMgaW1w
bGVtZW50YXRpb24uCi0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJl
dHVybiBXVEY6OlB0ckhhc2g8Y29uc3QgVHlwZSo+OjpoYXNoKCZ1bmlmeU5vZGUoKSk7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGVSZWZlcmVuY2UmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJu
ICZ1bmlmeU5vZGUoKSA9PSAmb3RoZXIudW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7
Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlwZS0+bmFtZSgpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgVHlwZTsKLSAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3Jl
c29sdmVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKLSAgICBOYW1lZFR5cGUqIG1fcmVzb2x2
ZWRUeXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQot
Ci1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZVJlZmVyZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9UWVBFKFR5cGVSZWZlcmVuY2UsIGlzVHlwZVJlZmVyZW5jZSgpKQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDkwZTc4NDI1MTM3NDlhOThlYWY2YmZjZmRl
YmMyNjcwM2Q0NzdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRU
eXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5
cGUuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotdW5zaWduZWQg
VW5uYW1lZFR5cGU6Omhhc2goKSBjb25zdAotewotICAgIHN3aXRjaCAoa2luZCgpKSB7Ci0gICAg
Y2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJl
ZmVyZW5jZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6Ci0gICAgICAg
IHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtp
bmQ6OkFycmF5UmVmZXJlbmNlOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVu
Y2VUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXk6Ci0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLWJvb2wgVW5u
YW1lZFR5cGU6Om9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmIG90aGVyKSBjb25zdAotewot
ICAgIGlmIChvdGhlci5raW5kKCkgIT0ga2luZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBzd2l0Y2ggKGtpbmQoKSkgewotICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKLSAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxU
eXBlUmVmZXJlbmNlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyOgotICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxQb2ludGVyVHlw
ZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIHJldHVy
biBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVJl
ZmVyZW5jZVR5cGU+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5OgotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlUeXBlPihvdGhl
cik7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbm5hbWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVW5uYW1lZFR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk4
MWU1ZTM4Nzk0MWM2Mjg3ZTQ4N2YxMjg1NTU2NGQzZTBkZGI4ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5
cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBV
bm5hbWVkVHlwZSA6IHB1YmxpYyBUeXBlLCBwdWJsaWMgUmVmQ291bnRlZDxVbm5hbWVkVHlwZT4g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFVubmFtZWRUeXBlKTsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9j
YXRpb24sIEtpbmQga2luZCkKLSAgICAgICAgOiBUeXBlKGtpbmQpCi0gICAgICAgICwgbV9jb2Rl
TG9jYXRpb24obG9jYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQot
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIFR5cGU7Ci0gICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0dXJuICp0
aGlzOyB9Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5uYW1lZFR5cGUp
Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShVbm5hbWVkVHlwZSwgaXNVbm5h
bWVkVHlwZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5
cGVIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZUhhc2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2N2MwZDc0
YmIyNmY0MTk4ZDE2ZjYyYTdhM2I2N2E0YmE1MmY0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbm5hbWVkVHlwZUhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNs
YXNzIFVubmFtZWRUeXBlS2V5IHsKLXB1YmxpYzoKLSAgICBVbm5hbWVkVHlwZUtleSgpID0gZGVm
YXVsdDsKLSAgICBVbm5hbWVkVHlwZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
Ci0gICAgICAgIDogbV90eXBlKGJpdHdpc2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSkpCi0gICAgewotICAgIH0KLQotICAgIFVubmFtZWRUeXBlS2V5
KEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpCi0gICAgICAgIDogbV90eXBlKCZ0eXBlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3R5cGU7
IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IGJpdHdpc2VfY2FzdDxBU1Q6OlVubmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX3R5cGUt
Pmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlwZUtleSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICptX3R5cGUgPT0gKm90aGVyLm1fdHlwZTsgfQotICAgIEFTVDo6
VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gKm1fdHlwZTsgfQotCi0g
ICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVbm5h
bWVkVHlwZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBhLCBjb25zdCBVbm5hbWVkVHlwZUtleSYg
YikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgVHJhaXRzIDog
cHVibGljIFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFVubmFtZWRUeXBlS2V5PiB7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFVubmFtZWRUeXBlS2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5pc0VtcHR5VmFsdWUoKTsgfQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAg
QVNUOjpVbm5hbWVkVHlwZSogbV90eXBlIHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi19Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OldI
TFNMOjpVbm5hbWVkVHlwZUtleT4gOiBXZWJDb3JlOjpXSExTTDo6VW5uYW1lZFR5cGVLZXk6OlRy
YWl0cyB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpXSExTTDo6
VW5uYW1lZFR5cGVLZXk+IDogV2ViQ29yZTo6V0hMU0w6OlVubmFtZWRUeXBlS2V5OjpIYXNoIHsg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2FmYjQxODI2MmY3OGMxMTk4ZjNlODgxMzBjODA2NjMw
NDkxNzcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFT
VCB7Ci0KLWludDY0X3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5
cGUoKSBjb25zdAotewotICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVm
ZXJlbmNlPihtX3R5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5y
ZXNvbHZlZFR5cGUoKSk7Ci0gICAgcmV0dXJuIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5mb3JtYXRW
YWx1ZUZyb21VbnNpZ25lZEludGVnZXIoKShtX3ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlMDAxNmU1YzIyNzIxOTQ2MzRjNGEwNzY0ZmY3ZDYxMzQ2MmU0NDc5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFs
IGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCB1bnNpZ25lZCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQotICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFs
dWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgflVuc2ln
bmVkSW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsKGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwotCi0g
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBvcGVyYXRv
cj0oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHVuc2lnbmVk
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Ci0gICAgICAgIHJlc3VsdC5tX3R5
cGUgPSBtX3R5cGUuY2xvbmUoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc29sdmVkVHlwZSA9IG1f
dHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNv
bHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KCpyZXNvbHZlZFR5cGUpKTsKLSAgICAg
ICAgY29weVR5cGVUbyhyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBtX3R5cGU7Ci0gICAgdW5zaWduZWQgbV92YWx1
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBpc1Vuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTVkMjFmYWEwNGU0NzgxYTAyMTBjM2Q0NGE5NzY1NWIwMjU0M2E2
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNM
SW5mZXJUeXBlcy5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVu
Y2UuaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLVVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9j
YXRpb24sIHVuc2lnbmVkIHZhbHVlKQotICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX3ByZWZlcnJl
ZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAidWludCJfc3RyLCBUeXBlQXJn
dW1lbnRzKCkpKQotewotfQotCi1ib29sIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5S
ZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFpczxOYW1lZFR5cGU+
KHR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmFtZWRUeXBlID0gZG93
bmNhc3Q8TmFtZWRUeXBlPih0eXBlKTsKLSAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4obmFtZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBl
KTsKLSAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0ludCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJl
cHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKG1fdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlOjpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0
Ci17Ci0gICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y2xvbmUoKSBjb25zdAotewotICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIHJlc3VsdChtX3ByZWZlcnJlZFR5cGUtPmNvZGVMb2Nh
dGlvbigpLCBtX3ZhbHVlKTsKLSAgICBpZiAoYXV0byogdHlwZSA9IG1heWJlUmVzb2x2ZWRUeXBl
KCkpCi0gICAgICAgIHJlc3VsdC5yZXNvbHZlKGNvbnN0X2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+
KCp0eXBlKSk7Ci0gICAgcmVzdWx0Lm1fcHJlZmVycmVkVHlwZSA9IG1fcHJlZmVycmVkVHlwZS5j
b3B5UmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0K
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDBhN2VkMzlmODhkZjQ4NTU2ZjBhNzgzYjIxYTM0YmQ0ODU0MmY3MjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMUmVzb2x2
YWJsZVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xh
c3MgVHlwZVJlZmVyZW5jZTsKLQotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgZmlu
YWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwg
dW5zaWduZWQgdmFsdWUpOwotCi0gICAgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBk
ZWZhdWx0OwotCi0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9w
ZXJhdG9yPShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLSAgICB1
bnNpZ25lZCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotICAgIFR5cGVSZWZl
cmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KLQotICAg
IGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgY29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKLQotICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV92
YWx1ZTsKLSAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxU
eXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Np
b24KLSAgICBSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUpCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSwgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgp
KQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTE4YjZjZGRi
YTQxYzljNjA1MDFhMmY5MGUzNjk3Mzk5NmQ4YzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTFF1
YWxpZmllci5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKLSNpbmNsdWRlICJXSExTTFR5
cGUuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBWYXJpYWJsZURlY2xhcmF0
aW9uIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLS8vIEZpbmFsIGJlY2F1
c2Ugd2UgbWFkZSB0aGUgZGVzdHJ1Y3RvciBub24tdmlydHVhbC4KLXB1YmxpYzoKLSAgICBzdHJ1
Y3QgUmFyZURhdGEgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgICAgIFJhcmVEYXRhKFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzQXJndW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpY0FyZ3VtZW50KQotICAgICAgICAgICAgOiBxdWFs
aWZpZXJzKFdURk1vdmUocXVhbGlmaWVyc0FyZ3VtZW50KSkKLSAgICAgICAgICAgICwgc2VtYW50
aWMoV1RGTW92ZShzZW1hbnRpY0FyZ3VtZW50KSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAg
ICAgIFF1YWxpZmllcnMgcXVhbGlmaWVyczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNlbWFu
dGljPiBzZW1hbnRpYzsKLSAgICB9OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbihDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgUmVmUHRyPFVubmFt
ZWRUeXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYg
c2VtYW50aWMsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluaXRpYWxpemVyKQotICAg
ICAgICA6IG1fY29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICAgICAgLCBtX3R5cGUoV1RG
TW92ZSh0eXBlKSkKLSAgICAgICAgLCBtX2luaXRpYWxpemVyKFdURk1vdmUoaW5pdGlhbGl6ZXIp
KQotICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQotICAgIHsKLSAgICAgICAgaWYgKHNl
bWFudGljIHx8ICFxdWFsaWZpZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEg
PSBtYWtlVW5pcXVlPFJhcmVEYXRhPihXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKHNlbWFu
dGljKSk7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7Ci0K
LSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb24mKSA9IGRl
bGV0ZTsKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxlRGVjbGFyYXRpb24mJikgPSBk
ZWZhdWx0OwotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICAv
LyBXZSB1c2UgdGhpcyBmb3IgUmVhZE1vZGlmeVdyaXRlIGV4cHJlc3Npb25zLCBzaW5jZSB3ZSBk
b24ndCBrbm93IHRoZSB0eXBlIG9mIHRoZWlyCi0gICAgLy8gaW50ZXJuYWwgdmFyaWFibGVzIHVu
dGlsIHRoZSBjaGVja2VyIHJ1bnMuIEFsbCBvdGhlciB2YXJpYWJsZXMgc2hvdWxkIHN0YXJ0IGxp
ZmUgb3V0Ci0gICAgLy8gd2l0aCBhIHR5cGUuCi0gICAgdm9pZCBzZXRUeXBlKFJlZjxVbm5hbWVk
VHlwZT4gdHlwZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV90eXBlKTsKLSAgICAgICAgbV90
eXBlID0gV1RGTW92ZSh0eXBlKTsKLSAgICB9Ci0gICAgY29uc3QgUmVmUHRyPFVubmFtZWRUeXBl
PiYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVubmFtZWRUeXBlKiB0eXBl
KCkgeyByZXR1cm4gbV90eXBlID8gJiptX3R5cGUgOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lv
biogaW5pdGlhbGl6ZXIoKSB7IHJldHVybiBtX2luaXRpYWxpemVyLmdldCgpOyB9Ci0gICAgYm9v
bCBpc0Fub255bW91cygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5pc051bGwoKTsgfQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiB0YWtlSW5pdGlhbGl6ZXIoKSB7IHJldHVybiBXVEZN
b3ZlKG1faW5pdGlhbGl6ZXIpOyB9Ci0gICAgdm9pZCBzZXRJbml0aWFsaXplcihzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaW5p
dGlhbGl6ZXIoKSk7Ci0gICAgICAgIEFTU0VSVChleHByZXNzaW9uKTsKLSAgICAgICAgbV9pbml0
aWFsaXplciA9IFdURk1vdmUoZXhwcmVzc2lvbik7Ci0gICAgfQotICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotCi0gICAgU2Vt
YW50aWMqIHNlbWFudGljKCkgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPnNlbWFu
dGljLmdldCgpIDogbnVsbHB0cjsgfQotCi1wcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2Nv
ZGVMb2NhdGlvbjsKLSAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbml0aWFsaXplcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmFyZURhdGE+IG1fcmFyZURhdGEgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLX07
Ci0KLXVzaW5nIFZhcmlhYmxlRGVjbGFyYXRpb25zID0gVmVjdG9yPFVuaXF1ZVJlZjxWYXJpYWJs
ZURlY2xhcmF0aW9uPj47Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NzMyOGM0YjJjZmQ0MmU5MzMxYWE4NTZmOTRhNmY4MjQ0ZWY1ZTk0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURl
Y2xhcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQot
bmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnMpCi0g
ICAgICAgICwgbV92YXJpYWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b25zKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
KCkgPSBkZWZhdWx0OwotCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoY29uc3Qg
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKLSAgICBWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+PiYgdmFy
aWFibGVEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOyB9Ci0K
LXByaXZhdGU6Ci0gICAgVmFyaWFibGVEZWNsYXJhdGlvbnMgbV92YXJpYWJsZURlY2xhcmF0aW9u
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEFTVAotCi19Ci0KLX0KLQotREVGSU5FX0RFRkFVTFRf
REVMRVRFKFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgaXNW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhjYmQwNmFjYWUxZmVlZWE3MDUxN2I4ZGY4Y2I4NjdkZDkzNmM5NmYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFZhcmlhYmxlUmVmZXJlbmNl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKLSAgICAgICAgLCBtX25hbWUo
V1RGTW92ZShuYW1lKSkKLSAgICB7Ci0gICAgfQotCi0gICAgflZhcmlhYmxlUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwotCi0gICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVu
Y2UmKSA9IGRlbGV0ZTsKLSAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGF0aWMgVmFyaWFibGVSZWZlcmVuY2Ugd3JhcChWYXJpYWJs
ZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgVmFyaWFi
bGVSZWZlcmVuY2UgcmVzdWx0KHZhcmlhYmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpOwot
ICAgICAgICByZXN1bHQubV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAg
ICByZXN1bHQubV9uYW1lID0gdmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1l
OyB9Ci0KLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFy
aWFibGU7IH0KLQotICAgIHZvaWQgc2V0VmFyaWFibGUoVmFyaWFibGVEZWNsYXJhdGlvbiYgdmFy
aWFibGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fdmFyaWFibGUgPSAmdmFyaWFibGVE
ZWNsYXJhdGlvbjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmFyaWFibGVSZWZlcmVuY2UoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
OlZhcmlhYmxlUmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIG1fdmFyaWFibGUgeyBudWxscHRyIH07Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBBU1QKLQotfQotCi19Ci0KLURFRklORV9ERUZBVUxUX0RFTEVURShWYXJp
YWJsZVJlZmVyZW5jZSkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KFZhcmlhYmxlUmVmZXJlbmNlLCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNDE5NjQ5YjE1NGYzMDE5Y2E4OTdlYWJjYmI0MWJkOGU2NGRiZDI0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
V0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVi
bGljIFN0YXRlbWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgV2hpbGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OldoaWxlTG9vcCkKLSAgICAgICAgLCBtX2NvbmRpdGlv
bmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQotICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkp
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+V2hpbGVMb29wKCkgPSBkZWZhdWx0OwotCi0gICAgV2hp
bGVMb29wKGNvbnN0IFdoaWxlTG9vcCYpID0gZGVsZXRlOwotICAgIFdoaWxlTG9vcChXaGlsZUxv
b3AmJikgPSBkZWZhdWx0OwotCi0gICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVy
biBtX2NvbmRpdGlvbmFsOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5
OyB9Ci0KLXByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7
Ci0gICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
QVNUCi0KLX0KLQotfQotCi1ERUZJTkVfREVGQVVMVF9ERUxFVEUoV2hpbGVMb29wKQotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGlsZUxvb3AsIGlzV2hpbGVMb29w
KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU2MTEzYTA2MThiYTFjMjcxMzg4ZWYxZDQ0YjBhYjBlNTYxNjk4MzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCi0j
aW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEdhdGhl
ckVudHJ5UG9pbnRJdGVtcy5oIgotI2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1l
ci5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1l
dGFsIHsKLQotc3RhdGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAoYnVpbHRJblNlbWFudGlj
LnZhcmlhYmxlKCkpIHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gIltbaW5zdGFuY2VfaWRdXSJfc3RyOwotICAg
IGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEOgotICAgICAg
ICByZXR1cm4gIltbdmVydGV4X2lkXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiW1twb2ludF9zaXplXV0iX3N0
cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlvbjoK
LSAgICAgICAgcmV0dXJuICJbW3Bvc2l0aW9uXV0iX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJ
blNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJuICJbW2Zy
b250X2ZhY2luZ11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfaWRdXSJfc3RyOwot
ICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVklubmVyQ292ZXJhZ2U6
Ci0gICAgICAgIHJldHVybiAiW1tzYW1wbGVfbWFza11dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1
aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWVGFyZ2V0OgotICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygiW1tjb2xvcigiLCAqYnVpbHRJblNlbWFudGljLnRhcmdldEluZGV4KCksICIpXV0iKTsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAg
ICAgcmV0dXJuICJbW2RlcHRoKGFueSldXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2Vt
YW50aWM6OlZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gIltbc2FtcGxlX21h
c2tdXSJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkRp
c3BhdGNoVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiAiW1t0aHJlYWRfcG9zaXRpb25faW5fZ3Jp
ZF1dIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3Jv
dXBJRDoKLSAgICAgICAgcmV0dXJuICJbW3RocmVhZGdyb3VwX3Bvc2l0aW9uX2luX2dyaWRdXSJf
c3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5k
ZXg6Ci0gICAgICAgIHJldHVybiAiW1t0aHJlYWRfaW5kZXhfaW5fdGhyZWFkZ3JvdXBdXSJfc3Ry
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChidWlsdEluU2VtYW50aWMudmFyaWFibGUo
KSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0g
ICAgICAgIHJldHVybiAiW1t0aHJlYWRfcG9zaXRpb25faW5fdGhyZWFkZ3JvdXBdXSJfc3RyOwot
ICAgIH0KLX0KLQotc3RhdGljIFN0cmluZyBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhBU1Q6OlNlbWFu
dGljJiBzZW1hbnRpYykKLXsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1
aWx0SW5TZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlRm9yU2Vt
YW50aWMoV1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSk7Ci0gICAgYXV0
byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+
KHNlbWFudGljKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiW1t1c2VyKHVzZXIiLCBzdGFnZUlu
T3V0U2VtYW50aWMuaW5kZXgoKSwgIildXSIpOwotfQotCi1FbnRyeVBvaW50U2NhZmZvbGRpbmc6
OkVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25E
ZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwg
RW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFy
aWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotICAgIDogbV9mdW5jdGlv
bkRlZmluaXRpb24oZnVuY3Rpb25EZWZpbml0aW9uKQotICAgICwgbV9pbnRyaW5zaWNzKGludHJp
bnNpY3MpCi0gICAgLCBtX3R5cGVOYW1lcih0eXBlTmFtZXIpCi0gICAgLCBtX2VudHJ5UG9pbnRJ
dGVtcyhlbnRyeVBvaW50SXRlbXMpCi0gICAgLCBtX3Jlc291cmNlTWFwKHJlc291cmNlTWFwKQot
ICAgICwgbV9sYXlvdXQobGF5b3V0KQotICAgICwgbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUo
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQotewotICAgIG1fbmFtZWRCaW5kR3JvdXBzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9sYXlvdXQuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5hbWVkQmluZEdyb3VwIG5h
bWVkQmluZEdyb3VwOwotICAgICAgICBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lID0gbV90eXBl
TmFtZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5kR3JvdXAudmFy
aWFibGVOYW1lID0gbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbmFtZWRC
aW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCA9IG1fbGF5b3V0W2ldLm5hbWU7IC8vIGNvbnZl
cnRMYXlvdXQoKSBpbiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIG1ha2VzIHN1cmUgdGhlc2Ug
ZG9uJ3QgY29sbGlkZS4KLSAgICAgICAgbmFtZWRCaW5kR3JvdXAubmFtZWRCaW5kaW5ncy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKSk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2op
IHsKLSAgICAgICAgICAgIE5hbWVkQmluZGluZyBuYW1lZEJpbmRpbmc7Ci0gICAgICAgICAgICBu
YW1lZEJpbmRpbmcuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5nZW5lcmF0ZU5leHRTdHJ1Y3R1
cmVFbGVtZW50TmFtZSgpOwotICAgICAgICAgICAgbmFtZWRCaW5kaW5nLmluZGV4ID0gbV9sYXlv
dXRbaV0uYmluZGluZ3Nbal0uaW50ZXJuYWxOYW1lOwotICAgICAgICAgICAgV1RGOjp2aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShVbmlmb3JtQnVmZmVyQmluZGluZyYgdW5pZm9ybUJ1ZmZlckJp
bmRpbmcpIHsKLSAgICAgICAgICAgICAgICBMZW5ndGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1h
dGlvbiB7IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1f
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCksIHVuaWZvcm1CdWZmZXJCaW5kaW5nLmxlbmd0aE5h
bWUgfTsKLSAgICAgICAgICAgICAgICBuYW1lZEJpbmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBs
ZW5ndGhJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIH0sIFsmXShTYW1wbGVyQmluZGluZyYpIHsK
LSAgICAgICAgICAgIH0sIFsmXShUZXh0dXJlQmluZGluZyYpIHsKLSAgICAgICAgICAgIH0sIFsm
XShTdG9yYWdlQnVmZmVyQmluZGluZyYgc3RvcmFnZUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAg
ICAgICAgICBMZW5ndGhJbmZvcm1hdGlvbiBsZW5ndGhJbmZvcm1hdGlvbiB7IG1fdHlwZU5hbWVy
LmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCksIG1fZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCksIHN0b3JhZ2VCdWZmZXJCaW5kaW5nLmxlbmd0aE5hbWUgfTsKLSAgICAgICAgICAg
ICAgICBuYW1lZEJpbmRpbmcubGVuZ3RoSW5mb3JtYXRpb24gPSBsZW5ndGhJbmZvcm1hdGlvbjsK
LSAgICAgICAgICAgIH0pLCBtX2xheW91dFtpXS5iaW5kaW5nc1tqXS5iaW5kaW5nKTsKLSAgICAg
ICAgICAgIG5hbWVkQmluZEdyb3VwLm5hbWVkQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUobmFtZWRCaW5kaW5nKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lZEJpbmRHcm91cHMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRCaW5kR3JvdXApKTsKLSAgICB9Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2Vt
YW50aWM+KCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaV0uc2VtYW50aWMpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIE5hbWVkQnVpbHRJbiBuYW1lZEJ1aWx0SW47Ci0gICAgICAg
IG5hbWVkQnVpbHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zID0gaTsKLSAgICAgICAgbmFtZWRC
dWlsdEluLnZhcmlhYmxlTmFtZSA9IG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAg
ICAgIG1fbmFtZWRCdWlsdElucy5hcHBlbmQoV1RGTW92ZShuYW1lZEJ1aWx0SW4pKTsKLSAgICB9
Ci0KLSAgICBtX3BhcmFtZXRlclZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZnVu
Y3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQot
ICAgICAgICBtX3BhcmFtZXRlclZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQobV9nZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUoKSk7Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
UmVzb3VyY2VIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRh
dGlvbjw0PiBpbmRlbnQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW5kZW50LCAic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0cnVj
dE5hbWUsICIge1xuIik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUg
c2NvcGUoaW5kZW50KTsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIFN0
cmluZz4+IHN0cnVjdEl0ZW1zOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBt
X2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGF1dG8m
IGJpbmRpbmcgPSBtX2xheW91dFtpXS5iaW5kaW5nc1tqXTsKLSAgICAgICAgICAgICAgICBpZiAo
IWJpbmRpbmcudmlzaWJpbGl0eS5jb250YWlucyhzaGFkZXJTdGFnZSkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1f
bmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAg
ICAgICAgICAgYXV0byBpbmRleCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nb
al0uaW5kZXg7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gbGVuZ3RoSW5mb3JtYXRpb24gPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uKQot
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobGVu
Z3RoSW5mb3JtYXRpb24tPmluZGV4LCBtYWtlU3RyaW5nKCJ1aW50MiAiLCBsZW5ndGhJbmZvcm1h
dGlvbi0+ZWxlbWVudE5hbWUsICIgW1tpZCgiLCBsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgsICIp
XV07IikpKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFw
LmZpbmQoJm1fbGF5b3V0W2ldLmJpbmRpbmdzW2pdKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRl
cmF0b3IgIT0gbV9yZXNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
JiB0eXBlID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1l
ZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8QVNUOjpVbm5h
bWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihkb3duY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlPih0eXBlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHR5cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5
cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5cGUuZWxl
bWVudFR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZHJlc3NTcGFjZSA9
IHRvU3RyaW5nKHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3Ry
aW5nKGFkZHJlc3NTcGFjZSwgIiAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIGVsZW1lbnROYW1l
LCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUobmFtZWRUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcg
JywgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gVGhlIGJpbmRpbmcgZG9lc24ndCBhcHBlYXIgaW4gdGhlIHNoYWRlciBzb3VyY2UuCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIG11c3Qgc3RpbGwgZW1pdCBhIHBsYWNlaG9s
ZGVyLCBzbyBzdWNjZXNzaXZlIGl0ZW1zIGluIHRoZSBhcmd1bWVudCBidWZmZXIgc3RydWN0IGhh
dmUgdGhlIGNvcnJlY3Qgb2Zmc2V0LgotICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRo
ZSBiaW5kaW5nIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBzaGFkZXIgc291cmNlLCB3ZSBkb24ndCBr
bm93IHdoaWNoIGV4YWN0IHR5cGUgdGhlIGJpbmQgcG9pbnQgc2hvdWxkIGhhdmUuCi0gICAgICAg
ICAgICAgICAgICAgIC8vIFRoZXJlZm9yZSwgd2UgbXVzdCBzeW50aGVzaXplIGEgdHlwZSBvdXQg
b2YgdGhpbiBhaXIuCi0gICAgICAgICAgICAgICAgICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oVW5pZm9ybUJ1ZmZlckJpbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFrZVN0cmluZygiY29u
c3RhbnQgdm9pZCogIiwgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRleCwgIildXTsiKSkpOwot
ICAgICAgICAgICAgICAgICAgICB9LCBbJl0oU2FtcGxlckJpbmRpbmcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFr
ZVN0cmluZygic2FtcGxlciAiLCBlbGVtZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0sIFsmXShUZXh0dXJlQmluZGluZykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEzODQgV2UgZG9uJ3Qga25vdyB3aGljaCB0ZXh0dXJlIHR5cGUgdGhlIGJp
bmRpbmcgcmVwcmVzZW50cy4gVGhpcyBpcyBubyBnb29kIHZlcnkgYmFkLgotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtl
U3RyaW5nKCJ0ZXh0dXJlMmQ8ZmxvYXQ+ICIsIGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgs
ICIpXV07IikpKTsKLSAgICAgICAgICAgICAgICAgICAgfSwgWyZdKFN0b3JhZ2VCdWZmZXJCaW5k
aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RJdGVtcy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoaW5kZXgsIG1ha2VTdHJpbmcoImRldmljZSB2b2lkKiAiLCBlbGVtZW50TmFtZSwg
IiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pLCBiaW5k
aW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHN0ZDo6c29ydChzdHJ1Y3RJdGVtcy5iZWdpbigpLCBzdHJ1Y3RJdGVtcy5lbmQoKSwgW10o
Y29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+JiBsZWZ0LCBjb25zdCBzdGQ6OnBhaXI8
dW5zaWduZWQsIFN0cmluZz4mIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQu
Zmlyc3QgPCByaWdodC5maXJzdDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBzdHJ1Y3RJdGVtIDogc3RydWN0SXRlbXMpCi0gICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBzdHJ1Y3RJdGVtLnNlY29uZCwgJ1xuJyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7Ci0g
ICAgfQotfQotCi1ib29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlU2lnbmF0
dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYSBp
bmNsdWRlUHJlY2VkaW5nQ29tbWEpCi17Ci0gICAgaWYgKCFtX2xheW91dC5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2VkaW5nQ29tbWEgPT0gSW5j
bHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
ICIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIp
OwotICAgICAgICBhdXRvJiBuYW1lZEJpbmRHcm91cCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0
cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigi
LCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIik7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgU3RyaW5nVmlldyBpbnRlcm5hbFR5cGVGb3JTZW1h
bnRpYyhjb25zdCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAg
IHN3aXRjaCAoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkpIHsKLSAgICBjYXNlIEFTVDo6QnVp
bHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gInVp
bnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElE
OgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpQU2l6ZToKLSAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgY2FzZSBBU1Q6
OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVybiAi
ZmxvYXQ0IjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJc0Zy
b250RmFjZToKLSAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNl
bWFudGljOjpWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNvdmVyYWdl
OgotICAgICAgICByZXR1cm4gInVpbnQiOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6
OlZhcmlhYmxlOjpTVlRhcmdldDoKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBjYXNlIEFTVDo6
QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0aDoKLSAgICAgICAgcmV0dXJuICJmbG9h
dCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWQ292ZXJhZ2U6
Ci0gICAgICAgIHJldHVybiAidWludCI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50MyI7Ci0g
ICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAg
ICAgcmV0dXJuICJ1aW50MyI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFi
bGU6OlNWR3JvdXBJbmRleDoKLSAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlQoYnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkgPT0gQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgICAgICByZXR1cm4gInVp
bnQzIjsKLSAgICB9Ci19Ci0KLWJvb2wgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJ
bnNTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGlu
Z0NvbW1hIGluY2x1ZGVQcmVjZWRpbmdDb21tYSkKLXsKLSAgICBpZiAoIW1fbmFtZWRCdWlsdElu
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmNsdWRlUHJlY2Vk
aW5nQ29tbWEgPT0gSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25hbWVk
QnVpbHRJbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgYXV0byYgbmFtZWRCdWlsdEluID0gbV9u
YW1lZEJ1aWx0SW5zW2ldOwotICAgICAgICBhdXRvJiBpdGVtID0gbV9lbnRyeVBvaW50SXRlbXMu
aW5wdXRzW25hbWVkQnVpbHRJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXTsKLSAgICAgICAgYXV0
byYgYnVpbHRJblNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCppdGVt
LnNlbWFudGljKTsKLSAgICAgICAgYXV0byBpbnRlcm5hbFR5cGUgPSBpbnRlcm5hbFR5cGVGb3JT
ZW1hbnRpYyhidWlsdEluU2VtYW50aWMpOwotICAgICAgICBpZiAoIWludGVybmFsVHlwZS5pc051
bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVybmFsVHlwZSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSkpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnICcsIG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmli
dXRlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJbnB1dFBhdGgo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgVmVjdG9yPFN0cmluZz4mIHBhdGgpCi17Ci0g
ICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAg
IEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiogc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKVtpXS0+bmFtZSgpID09IHBhdGhbMF0pIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKLSAgICAgICAgICAgIGF1dG8m
IHVuaWZ5Tm9kZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgp
LT51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChpczxBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZURlZmluaXRpb24gPSAmZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5
cGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IHBhdGguc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5p
dGlvbi0+ZmluZChwYXRoW2ldKTsKLSAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJl
RWxlbWVudCgqbmV4dCkpOwotICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsK
LSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwotICAg
ICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAg
ICAgICAgICAgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKLSAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkT3V0cHV0UGF0aChTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCkKLXsKLSAgICBBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwotICAgIGF1dG8m
IHVuaWZ5Tm9kZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAg
ICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlv
bj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwotICAgIGZvciAoYXV0byYg
Y29tcG9uZW50IDogcGF0aCkgewotICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7
Ci0gICAgICAgIGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVu
dCk7Ci0gICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Jy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsK
LSAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIHVu
aWZ5Tm9kZSA9IG5leHQtPnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgICAgIGlmIChpczxB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlRGVmaW5pdGlvbiA9ICZkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5h
bWVkVHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRW50cnlQb2ludFNjYWZmb2xk
aW5nOjplbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUo
KSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byB2YXJp
YWJsZU5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyArK2opIHsK
LSAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1fbGF5b3V0
W2ldLmJpbmRpbmdzW2pdKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNl
TWFwLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1f
bmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pIHsK
LSAgICAgICAgICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0
ZXJhdG9yLT52YWx1ZV0ucGF0aDsKLSAgICAgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0g
bV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5lbGVtZW50TmFtZTsKLSAgICAg
ICAgICAgICAgICBhdXRvIGxlbmd0aEVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0u
bmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+ZWxlbWVudE5hbWU7Ci0gICAgICAg
ICAgICAgICAgYXV0byBsZW5ndGhUZW1wb3JhcnlOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0u
bmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+dGVtcG9yYXJ5TmFtZTsKLQotICAg
ICAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0
c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBlOwotICAgICAgICAgICAgICAgIGF1dG8gbWFu
Z2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFT
VDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwotCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIGluZGVu
dCwgInNpemVfdCAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgdmFyaWFibGVOYW1lLCAn
LicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLnk7XG4iLAotICAgICAgICAgICAgICAgICAgICBpbmRl
bnQsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8
IDMyO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1l
LCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBs
ZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBs
ZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAvIHNpemVv
ZigiLCBtYW5nbGVkVHlwZU5hbWUsICIpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50
LCAiaWYgKCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKVxuIiwKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZW50LCAiICAgICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAw
eEZGRkZGRkZGO1xuIgotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICAgICAgICAgIGVtaXRNYW5nbGVkSW5w
dXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcu
JywgZWxlbWVudE5hbWUsICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiKSB9O1xuIgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNb
aXRlcmF0b3ItPnZhbHVlXS5wYXRoOwotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUg
PSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCk7Ci0gICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwg
cGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIHZhcmlh
YmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBuYW1lZEJ1aWx0SW4gOiBtX25hbWVkQnVpbHRJ
bnMpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1l
ZEJ1aWx0SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc107Ci0gICAgICAgIGF1dG8mIHBhdGggPSBp
dGVtLnBhdGg7Ci0gICAgICAgIGF1dG8mIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJp
YWJsZU5hbWU7Ci0gICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKCppdGVtLnVubmFtZWRUeXBlKTsKLQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChzdHJpbmdC
dWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1hbmds
ZWRUeXBlTmFtZSwgJygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIik7Ci0gICAgfQotfQotCi1WZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRy
aW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50
SXRlbXMsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxh
eW91dCwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lLCBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4mIG1hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKQotICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVm
aW5pdGlvbiwgaW50cmluc2ljcywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNl
TWFwLCBsYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1f
bWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMobWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpCi0gICAgLCBt
X3N0YWdlSW5TdHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQotICAg
ICwgbV9yZXR1cm5TdHJ1Y3ROYW1lKHR5cGVOYW1lci5nZW5lcmF0ZU5leHRUeXBlTmFtZSgpKQot
ICAgICwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZShtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
KQotewotICAgIG1fbmFtZWRTdGFnZUlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6
IG1fbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgTmFtZWRTdGFnZUluIG5hbWVk
U3RhZ2VJbjsKLSAgICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXMgPSBr
ZXlWYWx1ZVBhaXIudmFsdWU7Ci0gICAgICAgIG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZSA9IG1f
dHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0gICAgICAgIG5h
bWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleCA9IGtleVZhbHVlUGFpci5rZXktPm1ldGFsTG9jYXRp
b247Ci0gICAgICAgIG1fbmFtZWRTdGFnZUlucy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1l
ZFN0YWdlSW4pKTsKLSAgICB9Ci0KLSAgICBtX25hbWVkT3V0cHV0cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0g
ICAgICAgIE5hbWVkT3V0cHV0IG5hbWVkT3V0cHV0OwotICAgICAgICBuYW1lZE91dHB1dC5lbGVt
ZW50TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7
Ci0gICAgICAgIFN0cmluZ1ZpZXcgaW50ZXJuYWxUeXBlOwotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50aWMp
KQotICAgICAgICAgICAgaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50aWMoV1RG
OjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSk7Ci0gICAg
ICAgIGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgbmFtZWRPdXRwdXQu
aW50ZXJuYWxUeXBlTmFtZSA9IGludGVybmFsVHlwZS50b1N0cmluZygpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgbV9u
YW1lZE91dHB1dHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRPdXRwdXQpKTsKLSAgICB9
Ci19Ci0KLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1
Y3ROYW1lLCAiIHtcbiIpOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShp
bmRlbnQpOwotICAgICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlu
cykgewotICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5k
ZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgYXV0byBlbGVt
ZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLSAgICAgICAgICAgIGF1dG8gYXR0
cmlidXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50
TmFtZSwgIiBbW2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICBpbmRlbnQsICJ9
O1xuXG4iLAotICAgICAgICBpbmRlbnQsICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAi
IHtcbiIKLSAgICApOwotICAgIHsKLSAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRl
bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2Vu
dHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBl
TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgICAgICBh
dXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAg
ICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNl
bWFudGljKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgaW50ZXJu
YWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4i
KTsKLSAgICAKLSAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyLCBpbmRl
bnQsIFNoYWRlclN0YWdlOjpWZXJ0ZXgpOwotfQotCi12b2lkIFZlcnRleEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5n
bGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgInZlcnRleCAiLCBtX3JldHVyblN0cnVj
dE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywg
bV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKLSAgICBlbWl0UmVzb3Vy
Y2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwot
ICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5n
Q29tbWE6Olllcyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwotfQotCi12b2lk
IFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1pdFVucGFja1Jl
c291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKLQotICAgIGZv
ciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7Ci0gICAgICAgIGF1dG8m
IHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRy
eVBvaW50SXRlbXNdLnBhdGg7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFn
ZUluLmVsZW1lbnROYW1lOwotICAgICAgICAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
aW5kZW50KTsKLSAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0
aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7Ci0gICAgfQotfQotCi12b2lkIFZlcnRl
eEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlh
YmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBv
dXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKLSAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNp
emUoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVs
ZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZh
cmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAi
O1xuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8m
IGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgIGF1
dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1l
OwotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRo
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFt
ZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRW
YXJpYWJsZU5hbWUpOwotICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVpbGRl
ciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7Ci0gICAgfQot
fQotCi1GcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RnJhZ21lbnRFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbiwgSW50
cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIEVudHJ5UG9pbnRJdGVt
cyYgZW50cnlQb2ludEl0ZW1zLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+JiByZXNvdXJjZU1h
cCwgTGF5b3V0JiBsYXlvdXQsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYm
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvcios
IHNpemVfdD4mKQotICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlv
biwgaW50cmluc2ljcywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBs
YXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLSAgICAsIG1fc3RhZ2VJ
blN0cnVjdE5hbWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBtX3Jl
dHVyblN0cnVjdE5hbWUodHlwZU5hbWVyLmdlbmVyYXRlTmV4dFR5cGVOYW1lKCkpCi0gICAgLCBt
X3N0YWdlSW5QYXJhbWV0ZXJOYW1lKG1fZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgYXV0byYgaW5wdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMuaW5w
dXRzW2ldOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFnZUlu
T3V0U2VtYW50aWM+KCppbnB1dEl0ZW0uc2VtYW50aWMpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljPigqaW5wdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgTmFtZWRTdGFnZUlu
IG5hbWVkU3RhZ2VJbjsKLSAgICAgICAgbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRl
bXMgPSBpOwotICAgICAgICBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1lci5n
ZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBuYW1lZFN0YWdlSW4u
YXR0cmlidXRlSW5kZXggPSBzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKTsKLSAgICAgICAgbV9u
YW1lZFN0YWdlSW5zLmFwcGVuZChXVEZNb3ZlKG5hbWVkU3RhZ2VJbikpOwotICAgIH0KLQotICAg
IG1fbmFtZWRPdXRwdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0cy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0g
bV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgTmFtZWRPdXRwdXQgbmFtZWRP
dXRwdXQ7Ci0gICAgICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2Vu
ZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgU3RyaW5nVmlldyBpbnRl
cm5hbFR5cGU7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6QnVpbHRJ
blNlbWFudGljPigqb3V0cHV0SXRlbS5zZW1hbnRpYykpCi0gICAgICAgICAgICBpbnRlcm5hbFR5
cGUgPSBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yz4oKm91dHB1dEl0ZW0uc2VtYW50aWMpKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNO
dWxsKCkpCi0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gaW50ZXJu
YWxUeXBlLnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0
LmludGVybmFsVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91dHB1
dEl0ZW0udW5uYW1lZFR5cGUpOwotICAgICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShuYW1lZE91dHB1dCkpOwotICAgIH0KLX0KLQotdm9pZCBGcmFnbWVudEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChpbmRlbnQsICJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICB7
Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKLSAgICAgICAgZm9yIChh
dXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgICAgIGF1dG8g
bWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVu
bmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4u
ZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFn
ZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBh
dHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICBpbmRlbnQsICJ9O1xuXG4iLAotICAgICAgICBpbmRlbnQs
ICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKLSAgICApOwotICAgIHsKLSAg
ICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ld
OwotICAgICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ld
LmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1l
ZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0
dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50
TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9O1xuXG4iKTsKLQotICAgIGVtaXRSZXNvdXJjZUhl
bHBlclR5cGVzKHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsK
LX0KLQotdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9u
TmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5h
bWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1l
LCAiIFtbc3RhZ2VfaW5dXSIpOwotICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWls
ZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7Ci0gICAgZW1pdEJ1aWx0SW5zU2lnbmF0
dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW5kZW50
YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0
SW5zKHN0cmluZ0J1aWxkZXIsIGluZGVudCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJ
biA6IG1fbmFtZWRTdGFnZUlucykgewotICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50
SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwot
ICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKLQot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwotICAgICAgICBlbWl0TWFuZ2xl
ZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7
XG4iKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVt
aXRQYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRWYXJpYWJsZU5hbWUg
aW5wdXRWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgb3V0cHV0VmFyaWFibGVOYW1l
LCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7
Ci0gICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50
cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKLSAgICAgICAgYXV0byYgZWxl
bWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRw
dXRzW2ldLmVsZW1lbnROYW1lOwotICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9u
YW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKLSAgICAgICAgYXV0byYgcGF0aCA9IG1f
ZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKLSAgICAgICAgZW1p
dE1hbmdsZWRPdXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKTtcbiIpOwotICAgIH0KLX0KLQotQ29tcHV0ZUVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFt
ZXImIHR5cGVOYW1lciwgRW50cnlQb2ludEl0ZW1zJiBlbnRyeVBvaW50SXRlbXMsIEhhc2hNYXA8
QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmIGxheW91dCwgc3RkOjpmdW5j
dGlvbjxNYW5nbGVkVmFyaWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQot
ICAgIDogRW50cnlQb2ludFNjYWZmb2xkaW5nKGZ1bmN0aW9uRGVmaW5pdGlvbiwgaW50cmluc2lj
cywgdHlwZU5hbWVyLCBlbnRyeVBvaW50SXRlbXMsIHJlc291cmNlTWFwLCBsYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSkKLXsKLX0KLQotdm9pZCBDb21wdXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQotewotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5
cGVzKHN0cmluZ0J1aWxkZXIsIGluZGVudCwgU2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotfQotCi12
b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIElu
ZGVudGF0aW9uPDQ+IGluZGVudCkKLXsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQs
ICJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7Ci0gICAgYm9vbCBhZGRlZFRvU2ln
bmF0dXJlID0gZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVj
ZWRpbmdDb21tYTo6Tm8pOwotICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVy
LCBhZGRlZFRvU2lnbmF0dXJlID8gSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMgOiBJbmNsdWRl
UHJlY2VkaW5nQ29tbWE6Ok5vKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKVxuIik7Ci19
Ci0KLXZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCi17Ci0gICAgZW1p
dFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsK
LX0KLQotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdC
dWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50
YXRpb248ND4pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0KLQotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9s
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xF
bnRyeVBvaW50U2NhZmZvbGRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI1
NjI4OGNiZWEyNTcxYWYxZDA5ZDE1MTEyMzE1ODBiZDVlYmU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5j
bHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlv
bkRlZmluaXRpb247Ci0KLX0KLQotc3RydWN0IEVudHJ5UG9pbnRJdGVtczsKLWNsYXNzIEludHJp
bnNpY3M7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotY2xhc3Mg
RW50cnlQb2ludFNjYWZmb2xkaW5nIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRh
dGlvbjw0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxk
ZXImLCBNYW5nbGVkRnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0PikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxl
TmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRp
b248ND4pID0gMDsKLQotICAgIFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgcGFyYW1ldGVy
VmFyaWFibGVzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJWYXJpYWJsZXM7IH0KLQotcHJvdGVjdGVk
OgotICAgIEVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIElu
dHJpbnNpY3MmLCBUeXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcq
LCBzaXplX3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFy
aWFibGVOYW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLQotICAgIHZvaWQgZW1p
dFJlc291cmNlSGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+LCBTaGFk
ZXJTdGFnZSk7Ci0KLSAgICBlbnVtIGNsYXNzIEluY2x1ZGVQcmVjZWRpbmdDb21tYSB7Ci0gICAg
ICAgIFllcywKLSAgICAgICAgTm8KLSAgICB9OwotICAgIGJvb2wgZW1pdFJlc291cmNlU2lnbmF0
dXJlKFN0cmluZ0J1aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEpOwotICAgIGJvb2wgZW1p
dEJ1aWx0SW5zU2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWEp
OwotCi0gICAgdm9pZCBlbWl0TWFuZ2xlZElucHV0UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVjdG9y
PFN0cmluZz4mIHBhdGgpOwotICAgIHZvaWQgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKFN0cmluZ0J1
aWxkZXImLCBWZWN0b3I8U3RyaW5nPiYgcGF0aCk7Ci0gICAgdm9pZCBlbWl0VW5wYWNrUmVzb3Vy
Y2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pOwotCi0g
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIG1fZnVuY3Rpb25EZWZpbml0aW9uOwotICAgIElu
dHJpbnNpY3MmIG1faW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwotICAg
IEVudHJ5UG9pbnRJdGVtcyYgbV9lbnRyeVBvaW50SXRlbXM7Ci0gICAgSGFzaE1hcDxCaW5kaW5n
Kiwgc2l6ZV90PiYgbV9yZXNvdXJjZU1hcDsKLSAgICBMYXlvdXQmIG1fbGF5b3V0OwotICAgIHN0
ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiBtX2dlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZTsKLQotICAgIHN0cnVjdCBMZW5ndGhJbmZvcm1hdGlvbiB7Ci0gICAgICAgIE1hbmdsZWRT
dHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZFZhcmlhYmxl
TmFtZSB0ZW1wb3JhcnlOYW1lOwotICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICB9OwotICAg
IHN0cnVjdCBOYW1lZEJpbmRpbmcgewotICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5h
bWUgZWxlbWVudE5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aEluZm9ybWF0aW9uPiBsZW5ndGhJbmZvcm1hdGlvbjsKLSAgICB9OwotICAg
IHN0cnVjdCBOYW1lZEJpbmRHcm91cCB7Ci0gICAgICAgIE1hbmdsZWRUeXBlTmFtZSBzdHJ1Y3RO
YW1lOwotICAgICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHZhcmlhYmxlTmFtZTsKLSAgICAgICAg
VmVjdG9yPE5hbWVkQmluZGluZz4gbmFtZWRCaW5kaW5nczsKLSAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRCdWZmZXJJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZEJpbmRHcm91cD4gbV9u
YW1lZEJpbmRHcm91cHM7IC8vIFBhcmFsbGVsIHRvIG1fbGF5b3V0Ci0KLSAgICBzdHJ1Y3QgTmFt
ZWRCdWlsdEluIHsKLSAgICAgICAgc2l6ZV90IGluZGV4SW5FbnRyeVBvaW50SXRlbXM7Ci0gICAg
ICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1lOwotICAgIH07Ci0gICAgVmVjdG9y
PE5hbWVkQnVpbHRJbj4gbV9uYW1lZEJ1aWx0SW5zOwotCi0gICAgVmVjdG9yPE1hbmdsZWRWYXJp
YWJsZU5hbWU+IG1fcGFyYW1ldGVyVmFyaWFibGVzOwotfTsKLQotY2xhc3MgVmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nIGZpbmFsIDogcHVibGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1w
dWJsaWM6Ci0gICAgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hN
YXA8QmluZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9u
PE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hN
YXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwot
ICAgIHZpcnR1YWwgflZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKLQot
cHJpdmF0ZToKLSAgICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50
YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVy
JiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotICAgIHZv
aWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhp
c3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBv
dmVycmlkZTsKLQotICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiYgbV9tYXRj
aGVkVmVydGV4QXR0cmlidXRlczsKLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0
TmFtZTsKLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmds
ZWRWYXJpYWJsZU5hbWUgbV9zdGFnZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1l
ZFN0YWdlSW4gewotICAgICAgICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAg
ICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1f
bmFtZWRTdGFnZUluczsKLQotICAgIHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmds
ZWRTdHJ1Y3R1cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0
aXZlVHlwZU5hbWUgaW50ZXJuYWxUeXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91
dHB1dD4gbV9uYW1lZE91dHB1dHM7Ci19OwotCi1jbGFzcyBGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyBmaW5hbCA6IHB1YmxpYyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgewotcHVibGljOgot
ICAgIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
JiwgSW50cmluc2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8Qmlu
ZGluZyosIHNpemVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmds
ZWRWYXJpYWJsZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUsIEhhc2hNYXA8QXR0
YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+JiBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0g
ICAgdmlydHVhbCB+RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVu
dGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKLSAgICB2
b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4
aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0Pikg
b3ZlcnJpZGU7Ci0KLSAgICBNYW5nbGVkVHlwZU5hbWUgbV9zdGFnZUluU3RydWN0TmFtZTsKLSAg
ICBNYW5nbGVkVHlwZU5hbWUgbV9yZXR1cm5TdHJ1Y3ROYW1lOwotICAgIE1hbmdsZWRWYXJpYWJs
ZU5hbWUgbV9zdGFnZUluUGFyYW1ldGVyTmFtZTsKLQotICAgIHN0cnVjdCBOYW1lZFN0YWdlSW4g
ewotICAgICAgICBzaXplX3QgaW5kZXhJbkVudHJ5UG9pbnRJdGVtczsKLSAgICAgICAgTWFuZ2xl
ZFN0cnVjdHVyZUVsZW1lbnROYW1lIGVsZW1lbnROYW1lOwotICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVJbmRleDsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZFN0YWdlSW4+IG1fbmFtZWRTdGFn
ZUluczsKLQotICAgIHN0cnVjdCBOYW1lZE91dHB1dCB7Ci0gICAgICAgIE1hbmdsZWRTdHJ1Y3R1
cmVFbGVtZW50TmFtZSBlbGVtZW50TmFtZTsKLSAgICAgICAgTWFuZ2xlZE9yTmF0aXZlVHlwZU5h
bWUgaW50ZXJuYWxUeXBlTmFtZTsKLSAgICB9OwotICAgIFZlY3RvcjxOYW1lZE91dHB1dD4gbV9u
YW1lZE91dHB1dHM7Ci19OwotCi1jbGFzcyBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nIGZp
bmFsIDogcHVibGljIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7Ci1wdWJsaWM6Ci0gICAgQ29tcHV0
ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYsIEludHJpbnNp
Y3MmLCBUeXBlTmFtZXImLCBFbnRyeVBvaW50SXRlbXMmLCBIYXNoTWFwPEJpbmRpbmcqLCBzaXpl
X3Q+JiByZXNvdXJjZU1hcCwgTGF5b3V0Jiwgc3RkOjpmdW5jdGlvbjxNYW5nbGVkVmFyaWFibGVO
YW1lKCk+JiYgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKTsKLSAgICB2aXJ0dWFsIH5Db21wdXRl
RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAgIHZvaWQg
ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25O
YW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmlu
Z0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhT
dHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwotfTsKLQotfQot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25X
cml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYjQ1
OTBhNTVmYzMxN2IyNjAyMzFkZTM4YjQyMGZmYTY5N2RhMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVk
ZSAiV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlw
ZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0jaW5jbHVkZSAi
V0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlTmFtZXIuaCIKLSNpbmNsdWRlICJX
SExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0YXRpYyB2b2lkIGRlY2xhcmVGdW5jdGlv
bihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBp
bmcpCi17Ci0gICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpdGVyYXRvciA9IGZ1bmN0aW9uTWFwcGluZy5maW5k
KCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gZnVuY3Rpb25N
YXBwaW5nLmVuZCgpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+
dmFsdWUsICcoJyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpO1xuIik7Ci19Ci0KLXN0cnVjdCBWYXJpYWJsZSB7Ci0gICAgTWFuZ2xlZFZhcmlhYmxlTmFt
ZSBuYW1lOwotICAgIE1hbmdsZWRUeXBlTmFtZSB0eXBlOwotfTsKLQotY2xhc3MgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyIDogcHVibGljIFZpc2l0b3IgewotICAgIGNsYXNzIEhvaXN0ZWRWYXJp
YWJsZUNvbGxlY3RvciA6IHB1YmxpYyBWaXNpdG9yIHsKLSAgICAgICAgcHVibGljOgotICAgICAg
ICBIb2lzdGVkVmFyaWFibGVDb2xsZWN0b3IoRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyJiBmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIpCi0gICAgICAgICAgICA6IGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcihmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvcjxWYXJpYWJsZT4gdmFyaWFibGVz
OwotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5z
aXplKCk7Ci0gICAgICAgICAgICBib29sIGlzVm9pZCA9IG1hdGNoZXMoY2FsbEV4cHJlc3Npb24u
cmVzb2x2ZWRUeXBlKCksIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5tX2ludHJpbnNpY3Mudm9p
ZFR5cGUoKSk7Ci0gICAgICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAgICAgICAgICAgICArK3Np
emU7Ci0gICAgICAgICAgICB2YXJpYWJsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsK
LQotICAgICAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3Vt
ZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0eXBlID0gZnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyLm1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShhcmd1bWVudC0+cmVzb2x2ZWRU
eXBlKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gbmFtZSA9IGZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlci5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgICAgICAgICB2YXJpYWJs
ZXMudW5jaGVja2VkQXBwZW5kKFZhcmlhYmxlIHsgbmFtZSwgdHlwZSB9KTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKCFpc1ZvaWQpCi0gICAgICAgICAgICAgICAgdmFyaWFibGVz
LnVuY2hlY2tlZEFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5nZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSkgfSk7
Ci0KLSAgICAgICAgICAgIHRvSG9pc3QuYWRkKCZjYWxsRXhwcmVzc2lvbiwgV1RGTW92ZSh2YXJp
YWJsZXMpKTsKLQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24mIHJlYWRNb2RpZnlXcml0ZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
VmVjdG9yPFZhcmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAgICAgICAgICB2YXJpYWJsZXMuYXBwZW5k
KFZhcmlhYmxlIHsgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLmdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpLCBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIubV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCpyZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWUoKS50eXBlKCkpIH0pOwotICAgICAgICAg
ICAgdmFyaWFibGVzLmFwcGVuZChWYXJpYWJsZSB7IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci5n
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSwgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLm1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlKCkudHlw
ZSgpKSB9KTsKLQotICAgICAgICAgICAgdG9Ib2lzdC5hZGQoJnJlYWRNb2RpZnlXcml0ZSwgV1RG
TW92ZSh2YXJpYWJsZXMpKTsKLQotICAgICAgICAgICAgVmlzaXRvcjo6dmlzaXQocmVhZE1vZGlm
eVdyaXRlKTsKLSAgICAgICAgfQotCi0gICAgICAgIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciYg
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOwotICAgICAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lv
biosIFZlY3RvcjxWYXJpYWJsZT4+IHRvSG9pc3Q7Ci0gICAgfTsKLQotcHVibGljOgotICAgIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbnRy
aW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5n
LCBMYXlvdXQmIGxheW91dCkKLSAgICAgICAgOiBtX3N0cmluZ0J1aWxkZXIoc3RyaW5nQnVpbGRl
cikKLSAgICAgICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICAgICAgLCBtX3R5cGVO
YW1lcih0eXBlTmFtZXIpCi0gICAgICAgICwgbV9mdW5jdGlvbk1hcHBpbmcoZnVuY3Rpb25NYXBw
aW5nKQotICAgICAgICAsIG1fbGF5b3V0KGxheW91dCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2
aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lk
IHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IGNyZWF0
ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gMDsKLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpEb1doaWxlTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OlN3aXRjaFN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hD
YXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
TG9naWNhbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TG9naWNh
bE5vdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtl
UG9pbnRlckV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpUZXJu
YXJ5RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZSYpIG92ZXJyaWRlOwotCi0gICAgZW51bSBjbGFzcyBMb29wQ29uZGl0aW9uTG9jYXRp
b24gewotICAgICAgICBCZWZvcmVCb2R5LAotICAgICAgICBBZnRlckJvZHkKLSAgICB9OwotICAg
IHZvaWQgZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNv
bmRpdGlvbkV4cHJlc3Npb24sIEFTVDo6RXhwcmVzc2lvbiogaW5jcmVtZW50LCBBU1Q6OlN0YXRl
bWVudCYgYm9keSk7Ci0KLSAgICB2b2lkIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoQVNU
OjpDb25zdGFudEV4cHJlc3Npb24mKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCkgeyByZXR1cm4geyBtX3ZhcmlhYmxlQ291bnQrKyB9OyB9Ci0K
LSAgICBlbnVtIGNsYXNzIEJyZWFrQ29udGV4dCB7Ci0gICAgICAgIExvb3AsCi0gICAgICAgIFN3
aXRjaAotICAgIH07Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEJyZWFrQ29udGV4dD4gbV9jdXJyZW50
QnJlYWtDb250ZXh0OwotCi0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdCdWlsZGVyOwotICAg
IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLSAgICBUeXBlTmFtZXImIG1fdHlwZU5hbWVyOwot
ICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFt
ZT4mIG1fZnVuY3Rpb25NYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uKiwgTWFuZ2xlZFZhcmlhYmxlTmFtZT4gbV92YXJpYWJsZU1hcHBpbmc7Ci0KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBtX2VudHJ5UG9pbnRTY2FmZm9sZGlu
ZzsKLSAgICBMYXlvdXQmIG1fbGF5b3V0OwotICAgIHVuc2lnbmVkIG1fdmFyaWFibGVDb3VudCB7
IDAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRP
ZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZTsKLSAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVudCB7
IDAgfTsKLSAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxWYXJpYWJsZT4+IG1f
aG9pc3RlZFZhcmlhYmxlczsKLX07Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKQotewotICAgIC8vIFdlIGlubGlu
ZSBuYXRpdmUgZnVuY3Rpb24gY2FsbHMuCi19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ewotCi0gICAgewotICAgICAgICBIb2lzdGVkVmFyaWFibGVDb2xsZWN0b3IgY29sbGVjdG9yKCp0
aGlzKTsKLSAgICAgICAgY29sbGVjdG9yLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bik7Ci0gICAgICAgIG1faG9pc3RlZFZhcmlhYmxlcyA9IFdURk1vdmUoY29sbGVjdG9yLnRvSG9p
c3QpOwotICAgIH0KLQotICAgIGF1dG8gZGVmaW5lSG9pc3RlZFZhcmlhYmxlcyA9IFsmXSB7Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgdmVjdG9yIDogbV9ob2lzdGVkVmFyaWFibGVzLnZhbHVl
cygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdmFyaWFibGUgOiB2ZWN0b3IpCi0gICAgICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgdmFyaWFibGUudHlwZSwg
JyAnLCB2YXJpYWJsZS5uYW1lLCAiO1xuIik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgYXV0
byBpdGVyYXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVmaW5pdGlvbik7
Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAgICBp
ZiAoZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICAgICAgYXV0byBl
bnRyeVBvaW50U2NhZmZvbGRpbmcgPSBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoZnVuY3Rp
b25EZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKCFlbnRyeVBvaW50U2NhZmZvbGRpbmcpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gV1RGTW92
ZShlbnRyeVBvaW50U2NhZmZvbGRpbmcpOwotICAgICAgICAKLSAgICAgICAgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmctPmVtaXRIZWxwZXJUeXBlcyhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsK
LSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRTaWduYXR1cmUobV9zdHJpbmdC
dWlsZGVyLCBpdGVyYXRvci0+dmFsdWUsIG1faW5kZW50KTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtX2luZGVudCwgIntcbiIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBJbmRl
bnRhdGlvblNjb3BlIHNjb3BlKG1faW5kZW50KTsKLQotICAgICAgICAgICAgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmctPmVtaXRVbnBhY2sobV9zdHJpbmdCdWlsZGVyLCBtX2luZGVudCk7Ci0gICAg
ICAgIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlZmluaXRp
b24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0
ZXJzKClbaV0sIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtp
XSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmaW5lSG9pc3RlZFZh
cmlhYmxlcygpOwotCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZp
bml0aW9uLmJsb2NrKCkpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn1cblxuIik7Ci0KLSAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRy
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9
PSBudWxscHRyKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAn
ICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIp
OwotICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyID0gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFt
ZXRlcnMoKVtpXTsKLSAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyTmFtZSA9IGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxl
TWFwcGluZy5hZGQoJnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7Ci0gICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBh
cmFtZXRlci0+dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKLQotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ7XG4iKTsKLQotICAgICAgICBkZWZpbmVIb2lzdGVkVmFyaWFibGVzKCk7Ci0K
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0
KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQoc3RhdGVt
ZW50KTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Qmxv
Y2smIGJsb2NrKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4i
KTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAg
ICAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAgICAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwotICAgIH0KLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkJyZWFrJikKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50QnJl
YWtDb250ZXh0KTsKLSAgICBzd2l0Y2ggKCptX2N1cnJlbnRCcmVha0NvbnRleHQpIHsKLSAgICBj
YXNlIEJyZWFrQ29udGV4dDo6U3dpdGNoOgotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCAiYnJlYWs7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCcmVha0Nv
bnRleHQ6Okxvb3A6Ci0gICAgICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5
VmFyaWFibGUpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAg
bV9pbmRlbnQsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVl
O1xuIiwKLSAgICAgICAgICAgIG1faW5kZW50LCAiYnJlYWs7XG4iCi0gICAgICAgICk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6Q29udGludWUmKQotewotICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9v
cEVhcmx5VmFyaWFibGUpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJi
cmVhaztcbiIpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50KQotewotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQpOwotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmVmZmVjdGZ1bEV4cHJl
c3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci19Ci0KLXZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiW1tjbGFuZzo6ZmFsbHRocm91Z2hd
XTtcbiIpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTgwOCBNYWtlIHN1cmUgdGhpcyBpcyBva2F5LiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBk
byBub3RoaW5nIGFuZCBqdXN0IHJldHVybiBoZXJlIGluc3RlYWQuCi19Ci0KLXZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcChMb29wQ29uZGl0aW9uTG9jYXRpb24gbG9vcENv
bmRpdGlvbkxvY2F0aW9uLCBBU1Q6OkV4cHJlc3Npb24qIGNvbmRpdGlvbkV4cHJlc3Npb24sIEFT
VDo6RXhwcmVzc2lvbiogaW5jcmVtZW50LCBBU1Q6OlN0YXRlbWVudCYgYm9keSkKLXsKLSAgICBT
ZXRGb3JTY29wZTxzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+PiBsb29wVmFyaWFi
bGVTY29wZShtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsIGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
IG1faW5kZW50LCAiYm9vbCAiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxl
LCAiID0gZmFsc2U7XG4iLAotICAgICAgICBtX2luZGVudCwgIndoaWxlICh0cnVlKSB7XG4iCi0g
ICAgKTsKLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgd2hpbGVTY29wZShtX2luZGVu
dCk7Ci0KLSAgICAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9u
TG9jYXRpb246OkJlZm9yZUJvZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgewotICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2luZGVudCwgImlm
ICghKCIpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNz
aW9uKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgIikpXG4iLAotICAgICAgICAgICAgICAgICIgICAgYnJlYWs7XG4iKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkbyB7XG4iKTsKLSAg
ICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRl
eHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6Okxvb3ApOwotCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgZG9TY29wZShtX2luZGVudCk7Ci0gICAg
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn0gd2hpbGUoZmFsc2UpOyBcbiIpOwotCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtX2luZGVudCwgImlm
ICgiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKVxuIiwKLSAgICAg
ICAgICAgIG1faW5kZW50LCAiICAgIGJyZWFrO1xuIik7Ci0KLSAgICAgICAgaWYgKGluY3JlbWVu
dCkgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKCIpOwotICAgICAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KCppbmNyZW1lbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKTtcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvb3BDb25k
aXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25k
aXRpb25FeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCEoIik7Ci0gICAgICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiKSlcbiIsCi0gICAgICAgICAgICAgICAg
IiAgICBicmVhaztcbiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgIn0gXG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGVtaXRM
b29wKExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5LCAmZG9XaGlsZUxvb3AuY29uZGl0
aW9uYWwoKSwgbnVsbHB0ciwgZG9XaGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCi17Ci0g
ICAgZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5LCAmd2hpbGVMb29w
LmNvbmRpdGlvbmFsKCksIG51bGxwdHIsIHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKLSAgICB7Ci0gICAg
ICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOwotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKLSAgICAgICAgZW1pdExvb3AoTG9v
cENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5LCBmb3JMb29wLmNvbmRpdGlvbigpLCBmb3JM
b29wLmluY3JlbWVudCgpLCBmb3JMb29wLmJvZHkoKSk7Ci0gICAgfQotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQotewotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJpZiAoIik7Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIikge1xuIik7Ci0KLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgaWZTY29w
ZShtX2luZGVudCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5
KCkpOwotICAgIH0KLQotICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9IGVsc2Uge1xuIik7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgZWxzZVNjb3BlKG1faW5kZW50KTsKLSAg
ICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
fVxuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlJl
dHVybiYgcmV0dXJuU3RhdGVtZW50KQotewotICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUo
KSkgewotICAgICAgICBhdXRvIHRlbXBSZXR1cm5OYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7IAotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJuU3RhdGVtZW50LnZhbHVlKCktPnJlc29sdmVk
VHlwZSgpKSwgJyAnLCB0ZW1wUmV0dXJuTmFtZSwgIiA9ICIpOyAKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoIjtcbiIpOwotCi0gICAgICAgIGlmIChtX2VudHJ5UG9pbnRTY2FmZm9sZGlu
ZykgewotICAgICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKTsKLSAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0UGFjayht
X3N0cmluZ0J1aWxkZXIsIHRlbXBSZXR1cm5OYW1lLCB2YXJpYWJsZU5hbWUsIG1faW5kZW50KTsK
LSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJyZXR1cm4gIiwg
dmFyaWFibGVOYW1lLCAiO1xuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgInJldHVybiAiLCB0ZW1wUmV0dXJuTmFtZSwgIjtc
biIpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50
LCAicmV0dXJuO1xuIik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJzd2l0Y2ggKCIpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSB7Iik7Ci0KLSAgICB7Ci0gICAgICAgIEluZGVudGF0aW9uU2NvcGUgc3dpdGNoU2NvcGUo
bV9pbmRlbnQpOwotICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1l
bnQuc3dpdGNoQ2FzZXMoKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hD
YXNlKTsKLSAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIn1cbiIp
OwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0Y2hD
YXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpIHsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgImNhc2UgIik7Ci0gICAgICAgIGVt
aXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjpcbiIpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAiZGVmYXVsdDpcbiIpOwotICAgIFNldEZvclNj
b3BlPHN0ZDo6b3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJy
ZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzd2l0Y2hDYXNlLmJsb2NrKCkpOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEyIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRv
IGJyZWFrIG9yIGZhbGx0aHJvdWdoLgotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQpCi17Ci0gICAgVmlzaXRvcjo6dmlzaXQodmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQpOwotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5n
bGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaW50ZWdlckxpdGVy
YWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19j
YXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIiki
KTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh1bnNpZ25lZElu
dGVnZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwudmFsdWUoKSwgIikiKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5n
bGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFs
LnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0aWNfY2Fz
dDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKSIpOwot
fQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0
ZXJhbCYgYm9vbGVhbkxpdGVyYWwpCi17Ci0gICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBl
TmFtZSwgIj4oIiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsICIp
Iik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQotewotICAgIEFT
U0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwot
ICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9u
KCkpOwotICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbk1lbWJlcigpKSk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgVmlzaXRvcjo6dmlz
aXQoZXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkK
LXsKLSAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgbWFuZ2xlZEZpZWxkTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS0+IiwgbWFuZ2xlZEZpZWxkTmFtZSk7Ci19
Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Np
b24mIGRvdEV4cHJlc3Npb24pCi17Ci0gICAgYXV0byYgdHlwZSA9IGRvdEV4cHJlc3Npb24uYmFz
ZSgpLnJlc29sdmVkVHlwZSgpLnVuaWZ5Tm9kZSgpOwotCi0gICAgaWYgKGlzPEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlv
biA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSk7Ci0gICAgICAgIGF1
dG8qIHN0cnVjdHVyZUVsZW1lbnQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLmZpbmQoZG90RXhwcmVz
c2lvbi5maWVsZE5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAg
ICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0
dXJlRWxlbWVudCgqc3RydWN0dXJlRWxlbWVudCk7Ci0KLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgnKCcpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbi5i
YXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLiIsIGVsZW1lbnROYW1l
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgPSBkb3RFeHByZXNz
aW9uLmZpZWxkTmFtZSgpOwotICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImxlbmd0aCIgJiYg
KGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih0eXBlKSB8fCBpczxBU1Q6OkFycmF5VHlwZT4o
dHlwZSkgfHwgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKSAmJiBkb3duY2Fz
dDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0b3IoKSkpKSB7Ci0gICAg
ICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKS5sZW5ndGgiKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3RFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiLCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odHlwZSkubnVtRWxlbWVudHMoKSwg
IikiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3RF
eHByZXNzaW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiLCBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkudmVjdG9y
U2l6ZSgpLCAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvdEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIikuIiwgZWxlbWVudE5hbWUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGlu
ZGV4RXhwcmVzc2lvbikKLXsKLSAgICBhdXRvJiB0eXBlID0gaW5kZXhFeHByZXNzaW9uLmJhc2Uo
KS5yZXNvbHZlZFR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU+KHR5cGUpKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLnBvaW50ZXJbKCIpOwotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSA8ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIpLmxlbmd0aCA/ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhF
eHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiIDogMF0iKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkg
ewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24uYmFzZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKS5kYXRhKClbKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5k
ZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKSA8ICIsIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKS5udW1FbGVtZW50
cygpLCAiID8gIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpbmRleEV4cHJlc3Npb24u
aW5kZXhFeHByZXNzaW9uKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgOiAw
XSIpOwotICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUp
KSB7Ci0gICAgICAgIGF1dG8mIG5hdGl2ZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4odHlwZSk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemU7Ci0gICAgICAgIGlmIChu
YXRpdmVUeXBlLmlzTWF0cml4KCkpCi0gICAgICAgICAgICBzaXplID0gbmF0aXZlVHlwZS5udW1i
ZXJPZk1hdHJpeENvbHVtbnMoKTsKLSAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZS5pc1ZlY3Rv
cigpKQotICAgICAgICAgICAgc2l6ZSA9IG5hdGl2ZVR5cGUudmVjdG9yU2l6ZSgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGluZGV4RXhwcmVzc2lvbi5iYXNlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpWygiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5p
bmRleEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA8ICIs
IHNpemUsICIpID8gKCIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW5kZXhFeHByZXNz
aW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
KSA6IDBdIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IAotfQotCi12b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQotewotICAgIEFTU0VSVCh2YXJp
YWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBw
aW5nLmFkZCgmdmFyaWFibGVEZWNsYXJhdGlvbiwgdmFyaWFibGVOYW1lKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBx
dWFsaWZpZXJzLgotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFi
bGVOYW1lLCAiID0gIik7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNs
YXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
O1xuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRl
bnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50
eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgfTtcbiIpOwotfQotCi12b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNz
aWdubWVudEV4cHJlc3Npb24pCi17Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIgPSAoIik7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJp
Z2h0KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHBy
ZXNzaW9uKQotewotICAgIGF1dG8gaXRlciA9IG1faG9pc3RlZFZhcmlhYmxlcy5maW5kKCZjYWxs
RXhwcmVzc2lvbik7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX2hvaXN0ZWRWYXJpYWJs
ZXMuZW5kKCkpOwotICAgIGF1dG8mIHZhcmlhYmxlcyA9IGl0ZXItPnZhbHVlOwotICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSA8PSB2YXJpYWJsZXMu
c2l6ZSgpKTsKLSAgICBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gYXJndW1lbnROYW1lczsK
LQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZTsKLSAgICBpZiAoIW1hdGNoZXMo
Y2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCksIG1faW50cmluc2ljcy52b2lkVHlwZSgpKSkK
LSAgICAgICAgcmVzdWx0TmFtZSA9IHZhcmlhYmxlcy5sYXN0KCkubmFtZTsKLQotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxF
eHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGFyZ3VtZW50TmFt
ZXMuYXBwZW5kKHZhcmlhYmxlc1tpXS5uYW1lKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCh2YXJpYWJsZXNbaV0ubmFtZSwgIiA9ICgiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpW2ldKTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKSwgIik7Ci0gICAgfQotCi0gICAgaWYgKGlzPEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpIHsKLSAgICAgICAgaW5s
aW5lTmF0aXZlRnVuY3Rpb24obV9zdHJpbmdCdWlsZGVyLCBkb3duY2FzdDxBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpLCBhcmd1bWVudE5h
bWVzLCByZXN1bHROYW1lLCBtX3R5cGVOYW1lcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0
aW9uKCkpOwotICAgICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5k
KCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGl0ZXJhdG9yLT52YWx1ZSwgJygn
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRXhwcmVzc2lvbi5hcmd1bWVu
dHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQodmFyaWFibGVzW2ldLm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkNv
bW1hRXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJygnKTsKLSAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGV4
cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7Ci0gICAgICAgIGlmIChyYW5PbmNl
KQotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgcmFu
T25jZSA9IHRydWU7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uKTsKLSAg
ICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotfQotCi12b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVm
ZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIqKCIpOwot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVz
c2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIoKCIpOwotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJyknKTsKLQotICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7
Ci0gICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
U1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiIHx8ICIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNz
aW9uLnJpZ2h0KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIikpIik7Ci19Ci0KLXZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIhKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVy
YW5kKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLX0KLQotdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKLXsKLSAgICAvLyBGSVhNRTogVGhp
cyBuZWVkcyB0byBiZSBtYWRlIHRvIHdvcmsuIEl0IHByb2JhYmx5IHNob3VsZCBiZSB1c2luZyB0
aGUgbGFzdCBsZWZ0VmFsdWUgdG9vLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg4MzgKLSAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29s
dmVkVHlwZSgpKTsKLSAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICJ7ICIpOwotICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMSB9Iik7Ci0gICAgfSBlbHNlIGlm
IChpczxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFs
dWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKLSAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNh
c3Q8QVNUOjpBcnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVl
KCkucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmds
ZWRUeXBlTmFtZSwgIiB7ICIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIi5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH0iKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFt
ZSwgIiB7ICYiKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsIDEgfSIpOwotICAgIH0KLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiJigiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlz
aXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkKLXsKLSAg
ICAvKgotICAgICAqICAxLiBFdmFsdWF0ZSBtX2xlZnRWYWx1ZQotICAgICAqICAyLiBBc3NpZ24g
dGhlIHJlc3VsdCB0byBtX29sZFZhbHVlCi0gICAgICogIDMuIEV2YWx1YXRlIG1fbmV3VmFsdWVF
eHByZXNzaW9uCi0gICAgICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKLSAg
ICAgKiAgNS4gQXNzaWduIHRoZSByZXN1bHQgdG8gbV9sZWZ0VmFsdWUKLSAgICAgKiAgNi4gRXZh
bHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCi0gICAgICogIDcuIFJldHVybiB0aGUgcmVzdWx0Ci0g
ICAgICovCi0KLSAgICBhdXRvIGl0ZXIgPSBtX2hvaXN0ZWRWYXJpYWJsZXMuZmluZCgmcmVhZE1v
ZGlmeVdyaXRlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1faG9pc3RlZFZhcmlhYmxl
cy5lbmQoKSk7Ci0gICAgYXV0byYgdmFyaWFibGVzID0gaXRlci0+dmFsdWU7Ci0gICAgUkVMRUFT
RV9BU1NFUlQodmFyaWFibGVzLnNpemUoKSA9PSAyKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5h
bWUgb2xkVmFsdWVWYXJpYWJsZSA9IHZhcmlhYmxlc1swXS5uYW1lOwotICAgIE1hbmdsZWRWYXJp
YWJsZU5hbWUgbmV3VmFsdWVWYXJpYWJsZSA9IHZhcmlhYmxlc1sxXS5uYW1lOwotCi0gICAgbV92
YXJpYWJsZU1hcHBpbmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWUoKSwgb2xkVmFsdWVW
YXJpYWJsZSk7Ci0gICAgbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZyZWFkTW9kaWZ5V3JpdGUubmV3
VmFsdWUoKSwgbmV3VmFsdWVWYXJpYWJsZSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCcoJyk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG9sZFZhbHVlVmFyaWFibGUsICIg
PSAiKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgp
KTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgbmV3VmFsdWVWYXJpYWJsZSwg
IiA9ICIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUubmV3VmFsdWVF
eHByZXNzaW9uKCkpOwotCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBuZXdWYWx1ZVZhcmlhYmxlLCAiLCAiKTsKLQotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwcmVzc2lvbigpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVz
c2lvbikKLXsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpID8gKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhw
cmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
IDogKCIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhw
cmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci19Ci0KLXZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2
YXJpYWJsZVJlZmVyZW5jZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFi
bGUoKSk7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFi
bGVSZWZlcmVuY2UudmFyaWFibGUoKSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFi
bGVNYXBwaW5nLmVuZCgpKTsKLQotICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFyaWFibGVOYW1l
ID0gaXRlcmF0b3ItPnZhbHVlOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQodmFyaWFibGVO
YW1lKTsKLX0KLQotdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRDb25zdGFudEV4
cHJlc3Npb25TdHJpbmcoQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lv
bikKLXsKLSAgICBjb25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKLSAg
ICAgICAgWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAg
ICAgICB9LAotICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShB
U1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKGZsb2F0TGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAg
WyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgICAgICBp
ZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ0cnVlIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiZmFsc2UiKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKEFT
VDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25E
ZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uTWVtYmVyKCkpKTsKLSAgICAgICAgfQotICAgICkpOwotfQotCi1jbGFzcyBSZW5kZXJG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyIHsKLXB1YmxpYzoKLSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIoU3Ry
aW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5h
bWVyJiB0eXBlTmFtZXIsIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xl
ZEZ1bmN0aW9uTmFtZT4mIGZ1bmN0aW9uTWFwcGluZywgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYm
IG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQotICAgICAgICA6IEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcihzdHJpbmdCdWlsZGVyLCBpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0
aW9uTWFwcGluZywgbGF5b3V0KQotICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZNb3Zl
KG1hdGNoZWRTZW1hbnRpY3MpKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xk
aW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBNYXRjaGVkUmVu
ZGVyU2VtYW50aWNzIG1fbWF0Y2hlZFNlbWFudGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxF
bnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3Jl
YXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlv
bkRlZmluaXRpb24pCi17Ci0gICAgYXV0byBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhp
c10oKSAtPiBNYW5nbGVkVmFyaWFibGVOYW1lIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIH07Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRp
b24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24s
IG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFk
ZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJj
ZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRj
aGVkU2VtYW50aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICBpZiAoJmZ1bmN0aW9u
RGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlv
bkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGlj
cy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWNsYXNzIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKLXB1YmxpYzoK
LSAgICBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmlu
Z0J1aWxkZXIsIEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBI
YXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBm
dW5jdGlvbk1hcHBpbmcsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGlj
cywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0
cmluZ0J1aWxkZXIsIGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBsYXlv
dXQpCi0gICAgICAgICwgbV9tYXRjaGVkU2VtYW50aWNzKFdURk1vdmUobWF0Y2hlZFNlbWFudGlj
cykpCi0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKSBvdmVycmlkZTsKLQotICAgIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIG1f
bWF0Y2hlZFNlbWFudGljczsKLX07Ci0KLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZv
bGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQot
ewotICAgIGF1dG8gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gTWFuZ2xl
ZFZhcmlhYmxlTmFtZSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKTsKLSAgICB9OwotICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hl
ZFNlbWFudGljcy5zaGFkZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2Vt
YW50aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIEhhc2hNYXA8QVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZT4gZ2VuZXJhdGVNZXRhbEZ1
bmN0aW9uc01hcHBpbmcoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICB1bnNpZ25lZCBudW1GdW5j
dGlvbnMgPSAwOwotICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xl
ZEZ1bmN0aW9uTmFtZT4gZnVuY3Rpb25NYXBwaW5nOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25E
ZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBmdW5jdGlvbk1hcHBpbmcuYWRkKCZmdW5jdGlvbkRlZmluaXRpb24sIE1h
bmdsZWRGdW5jdGlvbk5hbWUgeyBudW1GdW5jdGlvbnMrKyB9KTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZnVuY3Rpb25NYXBwaW5nOwotfQotCi1zdGF0aWMgdm9pZCBlbWl0U2hhcmVkTWV0YWxGdW5j
dGlvbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgUHJvZ3JhbSYgcHJvZ3JhbSwgVHlw
ZU5hbWVyJiB0eXBlTmFtZXIsIGNvbnN0IEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
Kj4mIHJlYWNoYWJsZUZ1bmN0aW9ucywgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24q
LCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotewotICAgIGZvciAoYXV0
byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsK
LSAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkgJiYgcmVh
Y2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAg
ICAgZGVjbGFyZUZ1bmN0aW9uKHN0cmluZ0J1aWxkZXIsIGZ1bmN0aW9uRGVmaW5pdGlvbiwgdHlw
ZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcpOwotICAgIH0KLQotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCdcbicpOwotfQotCi1jbGFzcyBSZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciBmaW5hbCA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbkRlY2xhcmF0
aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgVmlzaXRv
cjo6dmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4o
Y2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
PihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiB0YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCkgeyByZXR1cm4g
V1RGTW92ZShtX3JlYWNoYWJsZUZ1bmN0aW9ucyk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOwotfTsKLQot
UmVuZGVyTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVO
YW1lciwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYg
bGF5b3V0KQotewotICAgIGF1dG8mIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSAqbWF0Y2hlZFNl
bWFudGljcy52ZXJ0ZXhTaGFkZXI7Ci0gICAgYXV0byogZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50
ID0gbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcjsKLQotICAgIFJlYWNoYWJsZUZ1bmN0
aW9uc0dhdGhlcmVyIHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyOwotICAgIHJlYWNoYWJsZUZ1
bmN0aW9uc0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwot
ICAgIGlmIChmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpCi0gICAgICAgIHJlYWNoYWJsZUZ1bmN0
aW9uc0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KCpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwot
ICAgIGF1dG8gcmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIu
dGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwotCi0gICAgYXV0byBmdW5jdGlvbk1hcHBpbmcgPSBn
ZW5lcmF0ZU1ldGFsRnVuY3Rpb25zTWFwcGluZyhwcm9ncmFtKTsKLSAgICAKLSAgICBlbWl0U2hh
cmVkTWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFj
aGFibGVGdW5jdGlvbnMsIGZ1bmN0aW9uTWFwcGluZyk7Ci0KLSAgICBSZW5kZXJGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIHBy
b2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZSht
YXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5p
dGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGlmIChyZWFj
aGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAgICAgICAg
ICBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZ2ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50KSwgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID8gZnVuY3Rpb25NYXBwaW5nLmdldChm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnQpIDogTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IDAgfSB9Owot
fQotCi1Db21wdXRlTWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzIGVtaXRNZXRhbEZ1bmN0aW9ucyhT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXIm
IHR5cGVOYW1lciwgTWF0Y2hlZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBM
YXlvdXQmIGxheW91dCkKLXsKLSAgICBhdXRvJiBlbnRyeVBvaW50ID0gKm1hdGNoZWRTZW1hbnRp
Y3Muc2hhZGVyOwotCi0gICAgUmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgcmVhY2hhYmxlRnVu
Y3Rpb25zR2F0aGVyZXI7Ci0gICAgcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIuVmlzaXRvcjo6
dmlzaXQoZW50cnlQb2ludCk7Ci0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFi
bGVGdW5jdGlvbnNHYXRoZXJlci50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7Ci0KLSAgICBhdXRv
IGZ1bmN0aW9uTWFwcGluZyA9IGdlbmVyYXRlTWV0YWxGdW5jdGlvbnNNYXBwaW5nKHByb2dyYW0p
OwotICAgIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhzdHJpbmdCdWlsZGVyLCBwcm9ncmFtLCB0
eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9ucywgZnVuY3Rpb25NYXBwaW5nKTsKLQotICAgIENv
bXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHN0
cmluZ0J1aWxkZXIsIHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFw
cGluZywgV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLSAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0g
ICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlv
bikpCi0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyBmdW5jdGlvbk1hcHBpbmcuZ2V0KCZl
bnRyeVBvaW50KSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFj
ZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU0NDkzOWYxNjE2ZThlMTIzYjU5ZTNlNzgwYjVmOTY2OTQ3MDg4MzMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFt
ZXMuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLW5hbWVzcGFj
ZSBNZXRhbCB7Ci0KLWNsYXNzIFR5cGVOYW1lcjsKLQotc3RydWN0IFJlbmRlck1ldGFsRnVuY3Rp
b25FbnRyeVBvaW50cyB7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkVmVydGV4RW50
cnlQb2ludE5hbWU7Ci0gICAgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRy
eVBvaW50TmFtZTsKLX07Ci1SZW5kZXJNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFs
RnVuY3Rpb25zKFN0cmluZ0J1aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZFJl
bmRlclNlbWFudGljcyYmLCBMYXlvdXQmKTsKLQotc3RydWN0IENvbXB1dGVNZXRhbEZ1bmN0aW9u
RW50cnlQb2ludHMgewotICAgIE1hbmdsZWRGdW5jdGlvbk5hbWUgbWFuZ2xlZEVudHJ5UG9pbnRO
YW1lOwotfTsKLUNvbXB1dGVNZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgZW1pdE1ldGFsRnVuY3Rp
b25zKFN0cmluZ0J1aWxkZXImLCBQcm9ncmFtJiwgVHlwZU5hbWVyJiwgTWF0Y2hlZENvbXB1dGVT
ZW1hbnRpY3MmJiwgTGF5b3V0Jik7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNYW5nbGVkTmFtZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGI2MDRlZDczZTAyNzM4NjEzZGM2ZGNiYjNjNDU4MzRjMjJkZTllYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hbmdsZWROYW1lcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBNZXRhbCB7Ci0KLXN0cnVjdCBNYW5n
bGVkVmFyaWFibGVOYW1lIHsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWUgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0g
ICAgdW5zaWduZWQgdmFsdWUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ2YXJpYWJsZSI7
Ci19OwotCi1zdHJ1Y3QgTWFuZ2xlZFR5cGVOYW1lIHsKLSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHByZWZpeCA9ICJ0eXBlIjsKLX07Ci0KLXN0
cnVjdCBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgewotICAgIHVuc2lnbmVkIHZhbHVlOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0gInN0cnVjdHVyZUVsZW1l
bnQiOwotfTsKLQotc3RydWN0IE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgewotICAgIHVu
c2lnbmVkIHZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcHJlZml4ID0g
ImVudW1lcmF0aW9uTWVtYmVyIjsKLX07Ci0KLXN0cnVjdCBNYW5nbGVkRnVuY3Rpb25OYW1lIHsK
LSAgICB1bnNpZ25lZCB2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHBy
ZWZpeCA9ICJmdW5jdGlvbiI7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtYWtlU3RyaW5nKHByZWZpeCwgdmFsdWUpOyB9Ci19OwotCi11c2luZyBNYW5nbGVkT3JOYXRp
dmVUeXBlTmFtZSA9IFZhcmlhbnQ8TWFuZ2xlZFR5cGVOYW1lLCBTdHJpbmc+OwotCi19IC8vIG5h
bWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYW5nbGVkTmFt
ZVR5cGU+Ci1jbGFzcyBNYW5nbGVkTmFtZUFkYXB0b3IgewotcHVibGljOgotICAgIE1hbmdsZWRO
YW1lQWRhcHRvcihNYW5nbGVkTmFtZVR5cGUgbmFtZSkKLSAgICAgICAgOiBtX25hbWUgeyBuYW1l
IH0KLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gc3RybGVu
KE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSArIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKG1fbmFt
ZS52YWx1ZSk7IH0KLSAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSog
ZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhk
ZXN0aW5hdGlvbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KE1hbmdsZWROYW1lVHlw
ZTo6cHJlZml4KSwgc3RybGVuKE1hbmdsZWROYW1lVHlwZTo6cHJlZml4KSk7Ci0gICAgICAgIHdy
aXRlSW50ZWdlclRvQnVmZmVyKG1fbmFtZS52YWx1ZSwgZGVzdGluYXRpb24gKyBzdHJsZW4oTWFu
Z2xlZE5hbWVUeXBlOjpwcmVmaXgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWFuZ2xlZE5h
bWVUeXBlIG1fbmFtZTsKLX07Ci0KLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lLCB2b2lkPiA6IHB1Ymxp
YyBNYW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVmFyaWFi
bGVOYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpNYW5nbGVkVmFyaWFibGVOYW1lIG5hbWUpCi0gICAgICAgIDogTWFuZ2xlZE5hbWVB
ZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5
cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZFR5cGVOYW1lLCB2b2lkPiA6
IHB1YmxpYyBNYW5nbGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVk
VHlwZU5hbWU+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihXZWJDb3JlOjpXSExT
TDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZSBuYW1lKQotICAgICAgICA6IE1hbmdsZWROYW1lQWRh
cHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBl
QWRhcHRlcjxXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRTdHJ1Y3R1cmVFbGVtZW50TmFt
ZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6TWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXIoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5h
bWUgbmFtZSkKLSAgICAgICAgOiBNYW5nbGVkTmFtZUFkYXB0b3IobmFtZSkKLSAgICB7Ci0gICAg
fQotfTsKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8V2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lLCB2b2lkPiA6IHB1YmxpYyBNYW5n
bGVkTmFtZUFkYXB0b3I8V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkRW51bWVyYXRpb25N
ZW1iZXJOYW1lPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXIoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpNYW5nbGVkRW51bWVyYXRpb25NZW1iZXJOYW1lIG5hbWUpCi0gICAgICAgIDog
TWFuZ2xlZE5hbWVBZGFwdG9yKG5hbWUpCi0gICAgewotICAgIH0KLX07Ci10ZW1wbGF0ZTw+IGNs
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0
aW9uTmFtZSwgdm9pZD4gOiBwdWJsaWMgTWFuZ2xlZE5hbWVBZGFwdG9yPFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBuYW1lKQot
ICAgICAgICA6IE1hbmdsZWROYW1lQWRhcHRvcihuYW1lKQotICAgIHsKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUsIHZvaWQ+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBl
QWRhcHRlcihjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRPck5hdGl2ZVR5cGVO
YW1lJiBuYW1lKQotICAgICAgICA6IG1fbmFtZSB7IG5hbWUgfQotICAgIHsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9uYW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1h
bmdsZWRUeXBlTmFtZSYgbWFuZ2xlZFR5cGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSAr
IGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKG1hbmdsZWRUeXBlTmFtZS52YWx1ZSk7Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAg
ICAgICAgICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0gICAgfQotCi0gICAgYm9vbCBpczhCaXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9uYW1lLAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJDb3JlOjpXSExT
TDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZSYpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5n
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pCi0gICAgewotICAg
ICAgICBXVEY6OnN3aXRjaE9uKG1fbmFtZSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVkVHlwZU5hbWUmIG1hbmdsZWRUeXBlTmFtZSkgewotICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNYW5nbGVk
VHlwZU5hbWU6OnByZWZpeCksIHN0cmxlbihXZWJDb3JlOjpXSExTTDo6TWV0YWw6Ok1hbmdsZWRU
eXBlTmFtZTo6cHJlZml4KSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIo
bWFuZ2xlZFR5cGVOYW1lLnZhbHVlLCBkZXN0aW5hdGlvbiArIHN0cmxlbihXZWJDb3JlOjpXSExT
TDo6TWV0YWw6Ok1hbmdsZWRUeXBlTmFtZTo6cHJlZml4KSk7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICAgICAgICAgIFN0
cmluZ1ZpZXcgeyBzdHJpbmcgfS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlv
bik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNv
bnN0IFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUmIG1fbmFt
ZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxD
b2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjhhZmViZGE1NmQ2ZDY3MzAxOGQ4MzFhZjY0MzJmMzdkMTYxN2IyMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oIgotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbldyaXRlci5oIgotI2luY2x1
ZGUgIldITFNMVHlwZU5hbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotc3RhdGljIGNvbnN0ZXhwciBi
b29sIGR1bXBNZXRhbENvZGUgPSBmYWxzZTsKLQotc3RhdGljIFN0cmluZ1ZpZXcgbWV0YWxDb2Rl
UHJvbG9ndWUoKQotewotICAgIHJldHVybiBTdHJpbmdWaWV3IHsKLSAgICAgICAgIiNpbmNsdWRl
IDxtZXRhbF9zdGRsaWI+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIgot
ICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX21hdGg+XG4iCi0gICAgICAgICIjaW5jbHVkZSA8bWV0
YWxfcmVsYXRpb25hbD5cbiIKLSAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIgot
ICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3RleHR1cmU+XG4iCi0gICAgICAgICJcbiIKLSAgICAg
ICAgInVzaW5nIG5hbWVzcGFjZSBtZXRhbDtcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGludCBDb2xzLCBpbnQgUm93cz5cbiIKLSAgICAgICAgInN0cnVj
dCBXU0xNYXRyaXhcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM8VCwgUm93cz4g
Y29sdW1uc1tDb2xzXTtcbiIKLSAgICAgICAgIiAgICBwcml2YXRlOlxuIgotICAgICAgICAiICAg
IHB1YmxpYzpcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgdGhyZWFkID0gZGVm
YXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KCkgY29uc3RhbnQgPSBkZWZh
dWx0O1xuIgotICAgICAgICAiICAgIGlubGluZSBXU0xNYXRyaXgoY29uc3QgdGhyZWFkIFdTTE1h
dHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgdGhyZWFkID0gZGVmYXVsdDtcbiIKLSAgICAgICAg
IiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IGRldmljZSBXU0xNYXRyaXg8VCwgQ29scywgUm93
cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1h
dHJpeChjb25zdCBjb25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVh
ZCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJl
YWRncm91cCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIHRocmVhZCA9IGRlZmF1bHQ7
XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCB0aHJlYWQgV1NMTWF0cml4
PFQsIENvbHMsIFJvd3M+ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIg
ICAgaW5saW5lIFdTTE1hdHJpeChjb25zdCBkZXZpY2UgV1NMTWF0cml4PFQsIENvbHMsIFJvd3M+
ICZ0aGF0KSBjb25zdGFudCA9IGRlZmF1bHQ7XG4iCi0gICAgICAgICIgICAgaW5saW5lIFdTTE1h
dHJpeChjb25zdCBjb25zdGFudCBXU0xNYXRyaXg8VCwgQ29scywgUm93cz4gJnRoYXQpIGNvbnN0
YW50ID0gZGVmYXVsdDtcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgV1NMTWF0cml4KGNvbnN0IHRo
cmVhZGdyb3VwIFdTTE1hdHJpeDxULCBDb2xzLCBSb3dzPiAmdGhhdCkgY29uc3RhbnQgPSBkZWZh
dWx0O1xuIgotICAgICAgICAiICAgIHB1YmxpYzpcbiIKLSAgICAgICAgIiAgICBpbmxpbmUgdGhy
ZWFkIHZlYzxULCBSb3dzPiAmb3BlcmF0b3JbXShpbnQgcikgdGhyZWFkXG4iCi0gICAgICAgICIg
ICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAg
IiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGRldmljZSB2ZWM8VCwgUm93cz4gJm9wZXJh
dG9yW10oaW50IHIpIGRldmljZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAg
ICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAg
IGlubGluZSB0aHJlYWRncm91cCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIHRocmVh
ZGdyb3VwXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gY29s
dW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW5saW5lIGNvbnN0
IHRocmVhZCB2ZWM8VCwgUm93cz4gJm9wZXJhdG9yW10oaW50IHIpIGNvbnN0IHRocmVhZFxuIgot
ICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4i
Ci0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGlubGluZSBjb25zdCBkZXZpY2UgdmVj
PFQsIFJvd3M+ICZvcGVyYXRvcltdKGludCByKSBjb25zdCBkZXZpY2VcbiIKLSAgICAgICAgIiAg
ICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBjb2x1bW5zW3JdO1xuIgotICAgICAgICAi
ICAgIH1cbiIKLSAgICAgICAgIiAgICBpbmxpbmUgY29uc3QgY29uc3RhbnQgdmVjPFQsIFJvd3M+
ICZvcGVyYXRvcltdKGludCByKSBjb25zdCBjb25zdGFudFxuIgotICAgICAgICAiICAgIHtcbiIK
LSAgICAgICAgIiAgICAgICAgcmV0dXJuIGNvbHVtbnNbcl07XG4iCi0gICAgICAgICIgICAgfVxu
IgotICAgICAgICAiICAgIGlubGluZSBjb25zdCB0aHJlYWRncm91cCB2ZWM8VCwgUm93cz4gJm9w
ZXJhdG9yW10oaW50IHIpIGNvbnN0IHRocmVhZGdyb3VwXG4iCi0gICAgICAgICIgICAge1xuIgot
ICAgICAgICAiICAgICAgICByZXR1cm4gY29sdW1uc1tyXTtcbiIKLSAgICAgICAgIiAgICB9XG4i
Ci0gICAgICAgICJ9O1xuIgotCi0KLSAgICB9OwotCi19Ci0KLXN0YXRpYyB2b2lkIGR1bXBNZXRh
bENvZGVJZk5lZWRlZChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIGlmIChk
dW1wTWV0YWxDb2RlKSB7Ci0gICAgICAgIGRhdGFMb2dMbigiR2VuZXJhdGVkIE1ldGFsIGNvZGU6
ICIpOwotICAgICAgICBkYXRhTG9nTG4oc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9
Ci19Ci0KLVJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9ncmFt
LCBNYXRjaGVkUmVuZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlv
dXQpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ldGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlwZU5hbWVyIHR5cGVOYW1l
cihwcm9ncmFtKTsKLSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMoc3RyaW5nQnVpbGRlcik7
Ci0gICAgCi0gICAgYXV0byBtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMgPSBNZXRhbDo6ZW1pdE1l
dGFsRnVuY3Rpb25zKHN0cmluZ0J1aWxkZXIsIHByb2dyYW0sIHR5cGVOYW1lciwgV1RGTW92ZSht
YXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKLQotICAgIGR1bXBNZXRhbENvZGVJZk5lZWRlZChz
dHJpbmdCdWlsZGVyKTsKLQotICAgIHJldHVybiB7IFdURk1vdmUoc3RyaW5nQnVpbGRlciksIFdU
Rk1vdmUobWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFt
ZSksIFdURk1vdmUobWV0YWxGdW5jdGlvbkVudHJ5UG9pbnRzLm1hbmdsZWRGcmFnbWVudEVudHJ5
UG9pbnROYW1lKSB9OwotfQotCi1Db21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFBy
b2dyYW0mIHByb2dyYW0sIE1hdGNoZWRDb21wdXRlU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGlj
cywgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsQ29kZVByb2xvZ3VlKCkpOwotCi0gICAgVHlw
ZU5hbWVyIHR5cGVOYW1lcihwcm9ncmFtKTsKLSAgICB0eXBlTmFtZXIuZW1pdE1ldGFsVHlwZXMo
c3RyaW5nQnVpbGRlcik7Ci0KLSAgICBhdXRvIG1ldGFsRnVuY3Rpb25FbnRyeVBvaW50cyA9IE1l
dGFsOjplbWl0TWV0YWxGdW5jdGlvbnMoc3RyaW5nQnVpbGRlciwgcHJvZ3JhbSwgdHlwZU5hbWVy
LCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOwotCi0gICAgZHVtcE1ldGFsQ29k
ZUlmTmVlZGVkKHN0cmluZ0J1aWxkZXIpOwotCi0gICAgcmV0dXJuIHsgV1RGTW92ZShzdHJpbmdC
dWlsZGVyKSwgV1RGTW92ZShtZXRhbEZ1bmN0aW9uRW50cnlQb2ludHMubWFuZ2xlZEVudHJ5UG9p
bnROYW1lKSB9OwotfQotCi19Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNjNDg3NjE3Y2I5MDVhZTJlYjA2OTQwYTE3NGU0MDk1ODJiOGMz
YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0
b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTWFu
Z2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJXSExTTFNlbWFudGljTWF0Y2hlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBQcm9ncmFtOwotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1zdHJ1Y3QgUmVuZGVyTWV0YWxD
b2RlIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwotICAgIE1hbmdsZWRGdW5jdGlv
bk5hbWUgbWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lOwotICAgIE1hbmdsZWRGdW5jdGlvbk5h
bWUgbWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7Ci19OwotLy8gQ2FuJ3QgZmFpbC4gQW55
IGZhaWx1cmUgY2hlY2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJsaWVyLCBpbiB0aGUgYmFja2VuZC1h
Z25vc3RpYyBwYXJ0IG9mIHRoZSBjb21waWxlci4KLVJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1l
dGFsQ29kZShQcm9ncmFtJiwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRp
Y3MsIExheW91dCYpOwotCi1zdHJ1Y3QgQ29tcHV0ZU1ldGFsQ29kZSB7Ci0gICAgU3RyaW5nQnVp
bGRlciBtZXRhbFNvdXJjZTsKLSAgICBNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRFbnRyeVBv
aW50TmFtZTsKLX07Ci0vLyBDYW4ndCBmYWlsLiBBbnkgZmFpbHVyZSBjaGVja3MgbmVlZCB0byBi
ZSBkb25lIGVhcmxpZXIsIGluIHRoZSBiYWNrZW5kLWFnbm9zdGljIHBhcnQgb2YgdGhlIGNvbXBp
bGVyLgotQ29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiwgTWF0Y2hl
ZENvbXB1dGVTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmKTsKLQotfQotCi19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNmZDJjOGE4N2JjNjdjOWZlNjJjZTNlNjQ0YTY2NGE4NjRjNDY1ZGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgiCi0KLSNpZiBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUg
IldITFNMQWRkcmVzc1NwYWNlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKLSNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSW5mZXJU
eXBlcy5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotI2luY2x1ZGUgIldITFNMTmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBv
aW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZU5hbWVyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVE
ZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwg
ewotCi1zdGF0aWMgU3RyaW5nIG1hcEZ1bmN0aW9uTmFtZShTdHJpbmcmIGZ1bmN0aW9uTmFtZSkK
LXsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJkZHgiKQotICAgICAgICByZXR1cm4gImRmZHgi
X3N0cjsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJkZHkiKQotICAgICAgICByZXR1cm4gImRm
ZHkiX3N0cjsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJhc2ludCIpCi0gICAgICAgIHJldHVy
biAiYXNfdHlwZTxpbnQzMl90PiJfc3RyOwotICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gImFzdWlu
dCIpCi0gICAgICAgIHJldHVybiAiYXNfdHlwZTx1aW50MzJfdD4iX3N0cjsKLSAgICBpZiAoZnVu
Y3Rpb25OYW1lID09ICJhc2Zsb2F0IikKLSAgICAgICAgcmV0dXJuICJhc190eXBlPGZsb2F0PiJf
c3RyOwotICAgIHJldHVybiBmdW5jdGlvbk5hbWU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYXRvbWlj
TmFtZShTdHJpbmcgaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0ID09ICJBZGQiKQotICAgICAgICBy
ZXR1cm4gImZldGNoX2FkZCJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiQW5kIikKLSAgICAgICAg
cmV0dXJuICJmZXRjaF9hbmQiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIkV4Y2hhbmdlIikKLSAg
ICAgICAgcmV0dXJuICJleGNoYW5nZSJfc3RyOwotICAgIGlmIChpbnB1dCA9PSAiTWF4IikKLSAg
ICAgICAgcmV0dXJuICJmZXRjaF9tYXgiX3N0cjsKLSAgICBpZiAoaW5wdXQgPT0gIk1pbiIpCi0g
ICAgICAgIHJldHVybiAiZmV0Y2hfbWluIl9zdHI7Ci0gICAgaWYgKGlucHV0ID09ICJPciIpCi0g
ICAgICAgIHJldHVybiAiZmV0Y2hfb3IiX3N0cjsKLSAgICBBU1NFUlQoaW5wdXQgPT0gIlhvciIp
OwotICAgICAgICByZXR1cm4gImZldGNoX3hvciJfc3RyOwotfQotCi1zdGF0aWMgaW50IHZlY3Rv
ckxlbmd0aChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
KQotewotICAgIGludCB2ZWN0b3JMZW5ndGggPSAxOwotICAgIGlmICghbmF0aXZlVHlwZURlY2xh
cmF0aW9uLnR5cGVBcmd1bWVudHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBB
U1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkpOwotICAgICAgICB2ZWN0b3JM
ZW5ndGggPSBXVEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xh
cmF0aW9uLnR5cGVBcmd1bWVudHMoKVsxXSkuaW50ZWdlckxpdGVyYWwoKS52YWx1ZSgpOwotICAg
IH0KLSAgICByZXR1cm4gdmVjdG9yTGVuZ3RoOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogdmVj
dG9yU3VmZml4KGludCB2ZWN0b3JMZW5ndGgpCi17Ci0gICAgc3dpdGNoICh2ZWN0b3JMZW5ndGgp
IHsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICBjYXNlIDI6Ci0gICAgICAg
IHJldHVybiAiMiI7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gIjMiOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGggPT0gNCk7Ci0gICAgICAgIHJldHVybiAi
NCI7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNhbXBsZVR5cGUgewotICAgIFNhbXBsZSwKLSAg
ICBTYW1wbGVMZXZlbCwKLSAgICBTYW1wbGVCaWFzLAotICAgIFNhbXBsZUdyYWQKLX07Ci0KLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBm
dW5jdGlvbk5hbWUpCi17Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlIikKLSAgICAg
ICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZTsKLSAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJT
YW1wbGVMZXZlbCIpCi0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDsKLSAg
ICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVCaWFzIikKLSAgICAgICAgcmV0dXJuIFNhbXBs
ZVR5cGU6OlNhbXBsZUJpYXM7Ci0gICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlR3JhZCIp
Ci0gICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOwotICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci19Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIGFyZ3Ms
IE1hbmdsZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIpCi17
Ci0gICAgYXV0byBhc01hdHJpeFR5cGUgPSBbJl0gKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRU
eXBlKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAgICBhdXRvJiByZWFs
VHlwZSA9IHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBpZiAoIXJlYWxUeXBlLmlz
TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICBhdXRvJiBtYXliZU1hdHJpeFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4ocmVhbFR5cGUpOwotICAgICAgICBpZiAobWF5YmVNYXRyaXhUeXBlLmlzTWF0
cml4KCkpCi0gICAgICAgICAgICByZXR1cm4gJm1heWJlTWF0cml4VHlwZTsKLQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9OwotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24uaXNDYXN0KCkpIHsKLSAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24udHlwZSgpOwotICAgICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZU5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUpOwotCi0gICAgICAgIGlmICgh
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVOYW1lLCAiIHsgfSIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBh
dXRvJiBwYXJhbWV0ZXJUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpWzBdLT50eXBlKCk7Ci0KLSAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRlZmluaXRp
b24gPSBbXSAoYXV0byYgdHlwZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBpczxBU1Q6Ok5h
bWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYXV0
byYgdW5pZmllZFJldHVyblR5cGUgPSByZXR1cm5UeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICAg
ICAgaWYgKGlzRW51bWVyYXRpb25EZWZpbml0aW9uKHVuaWZpZWRSZXR1cm5UeXBlKSAmJiAhaXNF
bnVtZXJhdGlvbkRlZmluaXRpb24ocGFyYW1ldGVyVHlwZS51bmlmeU5vZGUoKSkpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZpZWRSZXR1
cm5UeXBlKSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0YXRpY19j
YXN0PCIsIG1ldGFsUmV0dXJuVHlwZU5hbWUsICI+KCgiKTsKLSAgICAgICAgICAgICAgICBib29s
IGxvb3BlZE9uY2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBib29sIGhhc1plcm9DYXNlID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGxvb3BlZE9uY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiIHx8ICIpOwotICAgICAgICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdl
dCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFy
Z3NbMF0sICIgPT0gIiwgbWVtYmVyLmdldCgpLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBsb29wZWRPbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwotCi0gICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgPyAiLCBhcmdzWzBdLCAiIDogMCkiKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdGF0
aWNfY2FzdDwiLCBtZXRhbFJldHVyblR5cGVOYW1lLCAiPigiLCBhcmdzWzBdLCAiKSIpOwotCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byogbWF0cml4
VHlwZSA9IGFzTWF0cml4VHlwZShyZXR1cm5UeXBlKSkgewotICAgICAgICAgICAgLy8gV2UncmUg
ZWl0aGVyIGNvbnN0cnVjdGluZyB3aXRoIGFsbCBpbmRpdmlkdWFsIGVsZW1lbnRzLCBvciB3aXRo
Ci0gICAgICAgICAgICAvLyB2ZWN0b3JzIGZvciBlYWNoIGNvbHVtbi4KLQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgIGlmIChhcmdzLnNpemUoKSA9
PSBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSkgewotICAgICAgICAgICAgICAg
IC8vIENvbnN0cnVjdGluZyB3aXRoIHZlY3RvcnMgZm9yIGVhY2ggY29sdW1uLgotICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChyZXN1bHROYW1lLCAiLmNvbHVtbnNbIiwgaSwgIl0gPSAiLCBhcmdzW2ldKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIENvbnN0
cnVjdGluZyB3aXRoIGFsbCBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChhcmdzLnNpemUoKSA9PSBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKSAqIG1h
dHJpeFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpKTsKLQotICAgICAgICAgICAgICAgIHNpemVf
dCBhcmdOdW1iZXIgPSAwOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4
Um93cygpOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdOdW1iZXIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHROYW1lLCAi
LmNvbHVtbnNbIiwgaSwgIl1bIiwgaiwgIl0gPSAiLCBhcmdzW2FyZ051bWJlcl0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgKythcmdOdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFJldHVyblR5cGVO
YW1lLCAnKCcpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmlzT3BlcmF0b3IoKSkgewotICAgICAgICBh
dXRvIG9wZXJhdG9yTmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0
cmluZygib3BlcmF0b3IiX3N0ci5sZW5ndGgoKSk7Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIGlzIG9rIHRvIGRvIHNpbmNlIHRoZSBhcmdzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIGFs
bCB0ZW1wcy4KLSAgICAgICAgICAgIC8vIFNvIHRoaW5ncyBsaWtlICsrIGFuZCAtLSBhcmUgb2sg
dG8gZG8uCi0KLSAgICAgICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBlID0gYXNNYXRyaXhUeXBl
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSkgewotICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAiXSA9ICIsIG9wZXJhdG9yTmFtZSwgYXJnc1swXSwg
J1snLCBpLCAnXScpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHROYW1lLCAnKScpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3BlcmF0b3JOYW1lLCBhcmdz
WzBdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0gICAg
ICAgIGlmIChhdXRvKiBsZWZ0TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8qIHJpZ2h0TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkgewotICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8
b3A+IG1hdHJpeAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7Ci0g
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlZnRNYXRyaXgtPm51bWJl
ck9mTWF0cml4Q29sdW1ucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0TmFtZSwgJ1snLCBpLCAi
XSA9ICIsIGFyZ3NbMF0sICdbJywgaSwgIl0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0s
ICdbJywgaSwgJ10nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgIiwgcmVzdWx0TmFtZSwgJyknKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgLy8gbWF0cml4IDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVmdE1hdHJpeC0+bnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChyZXN1bHROYW1lLCAnWycsIGksICJdID0gIiwgYXJnc1swXSwgJ1snLCBpLCAi
XSAiLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIHJlc3VsdE5hbWUsICcpJyk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYXV0byogcmlnaHRNYXRyaXggPSBh
c01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50
eXBlKCkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwotICAgICAgICAgICAgLy8g
c2NhbGFyIDxvcD4gbWF0cml4Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKCcp
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJpZ2h0TWF0cml4LT5udW1i
ZXJPZk1hdHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkpCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc3VsdE5hbWUsICdbJywgaSwgIl0gPSAiLCBhcmdz
WzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAnWycsIGksICddJyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCByZXN1bHRO
YW1lLCAnKScpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4g
c2NhbGFyCi0gICAgICAgICAgICAvLyB2ZWN0b3IgPG9wPiB2ZWN0b3IKLSAgICAgICAgICAgIC8v
IHZlY3RvciA8b3A+IHNjYWxhcgotICAgICAgICAgICAgLy8gc2NhbGFyIDxvcD4gdmVjdG9yCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAnKCcsIGFy
Z3NbMF0sICcgJywgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJjb3MiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJzaW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJ0YW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJhY29zIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiYXNpbiIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gImF0YW4iCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJjb3NoIgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
c2luaCIKLSAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRh
bmgiCi0gICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjZWls
IgotICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZXhwIgot
ICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZmxvb3IiCi0g
ICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsb2ciCi0gICAg
ICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJyb3VuZCIKLSAgICAg
ICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInRydW5jIgotICAgICAg
ICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR4IgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR5IgotICAgICAgICB8fCBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNub3JtYWwiCi0gICAgICAgIHx8
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJpc2Zpbml0ZSIKLSAgICAgICAg
fHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImlzaW5mIgotICAgICAgICB8
fCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaXNuYW4iCi0gICAgICAgIHx8
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhc2ludCIKLSAgICAgICAgfHwg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzdWludCIKLSAgICAgICAgfHwg
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImFzZmxvYXQiCi0gICAgICAgIHx8
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJsZW5ndGgiKSB7Ci0gICAgICAg
IEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0g
MSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgbWFwRnVuY3Rp
b25OYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygnLCBhcmdzWzBdLCAn
KScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJwb3ciIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJhdGFuMiIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCi0gICAgICAgICAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgJygnLCBh
cmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAnKScpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJjbGFtcCIpIHsKLSAg
ICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSAzKTsKLQotICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgICAgICBib29sIHJhbk9uY2UgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRyaXhUeXBlLT5udW1iZXJPZk1h
dHJpeENvbHVtbnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IG1hdHJpeFR5cGUtPm51bWJlck9mTWF0cml4Um93cygpOyArK2opIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHJhbk9uY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgcmFuT25jZSA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0TmFtZSwgJ1snLCBpLCAiXVsiLCBqLCAiXSA9IGNsYW1wKCIsIGFy
Z3NbMF0sICdbJywgaSwgIl1bIiwgaiwgIl0sICIsIGFyZ3NbMV0sICdbJywgaSwgIl1bIiwgaiwg
Il0sICIsIGFyZ3NbMl0sICdbJywgaSwgIl1bIiwgaiwgIl0pIik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwg
cmVzdWx0TmFtZSwgIikiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICJjbGFtcCgiLCBhcmdzWzBdLCAiLCAiLCBh
cmdzWzFdLCAiLCAiLCBhcmdzWzJdLCAnKScpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkFs
bE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewotICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgIih0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFn
czo6bWVtX2RldmljZSksIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFk
Z3JvdXApLCB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RleHR1cmUpKSIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAg
ICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJ0aHJlYWRncm91
cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSkiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3JvdXBN
ZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKLSAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJ0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6
bWVtX3RocmVhZGdyb3VwKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVybG9ja2VkIl9z
dHIpKSB7Ci0gICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UiKSB7Ci0gICAgICAgICAgICBBU1NFUlQobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIihhdG9taWNfY29tcGFy
ZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICYiLCBhcmdzWzFdLCAiLCAi
LCBhcmdzWzJdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQp
LCAiLAotICAgICAgICAgICAgICAgICcqJywgYXJnc1szXSwgIiA9ICIsIGFyZ3NbMV0sICcpJyk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMpOwotICAgICAgICBh
dXRvIG5hbWUgPSBhdG9taWNOYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1
YnN0cmluZygiSW50ZXJsb2NrZWQiX3N0ci5sZW5ndGgoKSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICcqJywgYXJnc1syXSwgIiA9IGF0b21pY18iLCBuYW1l
LCAiX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1lbW9yeV9vcmRlcl9y
ZWxheGVkKSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gc2FtcGxl
VHlwZSA9IFdITFNMOjpNZXRhbDo6c2FtcGxlVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lm5hbWUoKSkpIHsKLSAgICAgICAgc2l6ZV90IGJhc2VBcmd1bWVudENvdW50ID0gMDsKLSAgICAg
ICAgc3dpdGNoICgqc2FtcGxlVHlwZSkgewotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBs
ZToKLSAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gMzsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgotICAgICAgICBjYXNlIFNh
bXBsZVR5cGU6OlNhbXBsZUJpYXM6Ci0gICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFk
OgotICAgICAgICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSA1OwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCB8fCBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgKyAxKTsK
LSAgICAgICAgCi0gICAgICAgIGF1dG8mIHRleHR1cmVUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAg
ICAgICBhdXRvJiBsb2NhdGlvblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpWzJdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0gICAgICAgIGF1dG8gbG9j
YXRpb25WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgobG9jYXRpb25UeXBlKTsKLSAgICAgICAg
YXV0byYgcmV0dXJuVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCku
dW5pZnlOb2RlKCkpKTsKLSAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JM
ZW5ndGgocmV0dXJuVHlwZSk7Ci0KLSAgICAgICAgaW50IGFyZ3VtZW50SW5kZXggPSAwOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLnNhbXBsZSgi
LCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIiwgIik7Ci0gICAgICAgIGFyZ3VtZW50SW5kZXgg
Kz0gMjsKLQotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAnLicsICJ4eXp3Il9zdHIu
c3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbYXJndW1l
bnRJbmRleF0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGgg
LSAxLCAxKSk7Ci0gICAgICAgICAgICArK2FyZ3VtZW50SW5kZXg7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4KytdKTsK
LQotICAgICAgICBzd2l0Y2ggKCpzYW1wbGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlw
ZTo6U2FtcGxlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6
U2FtcGxlTGV2ZWw6Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBsZXZlbCgi
LCBhcmdzW2FyZ3VtZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVCaWFzOgotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgYmlhcygiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10sICIpIik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgotICAgICAg
ICAgICAgaWYgKHRleHR1cmVUeXBlLmlzQ3ViZVRleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBncmFkaWVudGN1YmUoIiwgYXJnc1thcmd1bWVudEluZGV4
XSwgIiwgIiwgYXJnc1thcmd1bWVudEluZGV4ICsgMV0sICIpIik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnQyZCgiLCBh
cmdzW2FyZ3VtZW50SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIikiKTsK
LSAgICAgICAgICAgIGFyZ3VtZW50SW5kZXggKz0gMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCArIDEpCi0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKSIpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhU
ZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIsICJ4eXp3Il9z
dHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkxv
YWQiKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMik7Ci0KLSAgICAgICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2Fz
dDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9k
ZSgpKSk7Ci0gICAgICAgIGF1dG8mIGxvY2F0aW9uVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKLSAgICAg
ICAgYXV0byBsb2NhdGlvblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChsb2NhdGlvblR5cGUp
OwotICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnR5cGUoKS51bmlmeU5vZGUoKSkpOwotICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0
aCA9IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKLSAgICAgICAgYXV0byBsb2NhdGlvblR5cGVO
YW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2NhdGlvblR5cGUpOwotCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJywgYXJnc1sxXSwgIiA9ICIpOwotICAgICAgICBp
ZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgQVNTRVJUKGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiY2xhbXAoIiwgYXJnc1sxXSwgIiwgIiwgbG9jYXRpb25UeXBlTmFtZSwgJygnKTsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnMCcp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiksICIs
IGxvY2F0aW9uVHlwZU5hbWUsICcoJyk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25z
W10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAot
ICAgICAgICAgICAgICAgICAgICBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkg
LSAxIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICAgICBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkgLSAxKSkiKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAx
KQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdzWzFd
LCAiLCAwLCAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpIC0gMSkiKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJjbGFtcCgiLCBhcmdz
WzFdLCAiLCAiLCBsb2NhdGlvblR5cGVOYW1lLCAiKDAsIDAiKTsKLSAgICAgICAgICAgICAgICBp
ZiAobG9jYXRpb25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgMCIpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpLCAiLCBsb2NhdGlvblR5cGVOYW1lLCAnKCcsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkg
LSAxLCAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoKSAtIDEiKTsKLSAgICAgICAgICAgICAgICBp
ZiAobG9jYXRpb25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSAtIDEiKTsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSkiKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbMF0sICIu
cmVhZCgiKTsKLQotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewot
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rv
ckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6
dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVj
dG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzFdLCAnKScpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICBpZiAoIXRleHR1cmVUeXBl
LmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLics
ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwotCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKLSAg
ICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSAxKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiYXRv
bWljX2xvYWRfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5uYW1lKCkgPT0gInN0b3JlIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJhdG9taWNfc3RvcmVfZXhwbGljaXQoIiwgYXJnc1sw
XSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIkdldERpbWVuc2lvbnMiKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0KLSAgICAgICAgYXV0byYgdGV4dHVyZVR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9kZSgpKSk7Ci0KLSAgICAgICAg
c2l6ZV90IGluZGV4ID0gMTsKLSAgICAgICAgYm9vbCBoYXNNaXBMZXZlbCA9ICF0ZXh0dXJlVHlw
ZS5pc1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAh
PSAxOwotICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICArK2luZGV4OwotICAg
ICAgICBjb25zdCBNYW5nbGVkVmFyaWFibGVOYW1lJiB3aWR0aE5hbWUgPSBhcmdzW2luZGV4XTsK
LSAgICAgICAgKytpbmRleDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVO
YW1lPiBoZWlnaHROYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lv
bigpID49IDIpIHsKLSAgICAgICAgICAgIGhlaWdodE5hbWUgPSBhcmdzW2luZGV4XTsKLSAgICAg
ICAgICAgICsraW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVk
VmFyaWFibGVOYW1lPiBkZXB0aE5hbWU7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJl
RGltZW5zaW9uKCkgPj0gMykgewotICAgICAgICAgICAgZGVwdGhOYW1lID0gYXJnc1tpbmRleF07
Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
TWFuZ2xlZFZhcmlhYmxlTmFtZT4gZWxlbWVudHNOYW1lOwotICAgICAgICBpZiAodGV4dHVyZVR5
cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAgZWxlbWVudHNOYW1lID0gYXJnc1tp
bmRleF07Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbnVtYmVyT2ZMZXZlbHNOYW1lOwotICAgICAgICBp
ZiAoIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVy
ZURpbWVuc2lvbigpICE9IDEpIHsKLSAgICAgICAgICAgIG51bWJlck9mTGV2ZWxzTmFtZSA9IGFy
Z3NbaW5kZXhdOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlQoaW5kZXggPT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
KTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICcqJywgd2lk
dGhOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoIik7Ci0gICAgICAgIGlmIChoYXNN
aXBMZXZlbCkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAgICAgIGlmIChoZWlnaHROYW1l
KSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAi
LCAqIiwgKmhlaWdodE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoIik7Ci0gICAg
ICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZXB0aE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIsICoiLCAqZGVwdGhOYW1lLCAiID0gIiwg
YXJnc1swXSwgIi5nZXRfZGVwdGgoIik7Ci0gICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlbGVt
ZW50c05hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICIsICoiLCAqZWxlbWVudHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlf
c2l6ZSgpIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG51bWJlck9mTGV2ZWxzTmFtZSkgewot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiwgKiIs
ICpudW1iZXJPZkxldmVsc05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9udW1fbWlwX2xldmVs
cygpIik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJHYXRoZXIiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ubmFtZSgpID09ICJHYXRoZXJSZWQiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0g
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpID09ICJTYW1wbGVDbXAiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0
aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJTYW1wbGVDbXBMZXZlbFplcm8iKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1
ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0g
ICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJTdG9yZSIpIHsKLSAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0K
LSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckFscGhh
IikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIH0KLQotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0
aGVyQmx1ZSIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkg
PT0gIkdhdGhlckNtcCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIkdhdGhlckNtcFJlZCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlckdyZWVuIikgewotICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhp
cwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExT
TAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwODExMGFlNTliYWMwMTRjM2JiNTdkNDkwMDFlZTE0Mjc4
MTE4ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xNYW5nbGVkTmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBJbnRyaW5zaWNzOwotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1jbGFz
cyBUeXBlTmFtZXI7Ci0KLXZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYs
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFy
aWFibGVOYW1lPiYgYXJndW1lbnROYW1lcywgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXN1bHROYW1l
LCBUeXBlTmFtZXImKTsKLQotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYTY4Y2JkMWVjZDVlYWM0YjlmYjM5ZWRjODY1OTliMTE1NTA3
ZGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVXcml0ZXIuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wg
ewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1TdHJpbmcgd3JpdGVOYXRpdmVUeXBlKEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInZvaWQiKQotICAgICAgICByZXR1cm4gInZv
aWQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYm9vbCIp
Ci0gICAgICAgIHJldHVybiAiYm9vbCJfc3RyOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJ1aW50IikKLSAgICAgICAgcmV0dXJuICJ1aW50MzJfdCJfc3RyOwotICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJpbnQiKQotICAgICAgICByZXR1
cm4gImludDMyX3QiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiZmxvYXQiKQotICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY19pbnQiKQotICAgICAgICByZXR1cm4gImF0
b21pY19pbnQiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
YXRvbWljX3VpbnQiKQotICAgICAgICByZXR1cm4gImF0b21pY191aW50Il9zdHI7Ci0gICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gInNhbXBsZXIiKQotICAgICAgICByZXR1
cm4gInNhbXBsZXIiX3N0cjsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9
PSAidmVjdG9yIikgewotICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKS5zaXplKCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlw
ZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBXVEY6Omdl
dDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1
bWVudHMoKVswXSk7Ci0gICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHR5cGVSZWZlcmVuY2UtPnVu
aWZ5Tm9kZSgpOwotICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBhdXRvIHBy
ZWZpeCA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUu
bmFtZSgpID09ICJib29sIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wiOwotICAgICAg
ICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09ICJ1aW50IikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gInVpbnQiOwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclR5cGUubmFtZSgpID09
ICJpbnQiKQotICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKLSAgICAgICAgICAgIEFTU0VS
VChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAi
ZmxvYXQiOwotICAgICAgICB9KSgpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKVsxXSkpOwotICAgICAgICBhdXRvJiBjb25zdGFudEV4cHJlc3Npb24gPSBXVEY6
OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKVsxXSk7Ci0gICAgICAgIGF1dG8mIGludGVnZXJMaXRlcmFsID0gY29uc3RhbnRF
eHByZXNzaW9uLmludGVnZXJMaXRlcmFsKCk7Ci0gICAgICAgIGF1dG8gc3VmZml4ID0gKFsmXSgp
IC0+IFN0cmluZyB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludGVnZXJMaXRlcmFsLnZhbHVlKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjIiX3N0cjsK
LSAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIjMiX3N0cjsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGludGVnZXJMaXRlcmFs
LnZhbHVlKCkgPT0gNCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICI0Il9zdHI7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0pKCk7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwg
c3VmZml4KTsKLSAgICB9Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
Im1hdHJpeCIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJn
dW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKVswXSkpOwotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8
UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1l
bnRzKClbMF0pOwotICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlm
eU5vZGUoKTsKLSAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5
cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgYXV0byBwcmVm
aXggPSAoWyZdIHsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9v
bCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgICAgIEFTU0VSVChw
YXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgICAgIHJldHVybiAiZmxv
YXQiOwotICAgICAgICB9KSgpOwotCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJXU0xNYXRy
aXg8IiwgcHJlZml4LCAiLCAiLCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubnVtYmVyT2ZNYXRyaXhD
b2x1bW5zKCksICIsICIsIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5udW1iZXJPZk1hdHJpeFJvd3Mo
KSwgIj4iKTsKLSAgICB9Ci0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJn
dW1lbnRzKCkuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3Vt
ZW50cygpWzBdKSk7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IFdURjo6Z2V0PFJlZjxBU1Q6
OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBd
KTsKLSAgICBhdXRvIHByZWZpeCA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTFEIikKLSAgICAgICAgICAgIHJl
dHVybiAidGV4dHVyZTFkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJSV1RleHR1cmUxRCIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmUxZCJf
c3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVy
ZTFEQXJyYXkiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAg
ICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEQXJy
YXkiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlMWRfYXJyYXkiX3N0cjsKLSAgICAgICAg
aWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUyRCIpCi0gICAgICAg
ICAgICByZXR1cm4gInRleHR1cmUyZCJfc3RyOwotICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkQiKQotICAgICAgICAgICAgcmV0dXJuICJ0ZXh0
dXJlMmQiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0g
IlRleHR1cmUyREFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9z
dHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1
cmUyREFycmF5IikKLSAgICAgICAgICAgIHJldHVybiAidGV4dHVyZTJkX2FycmF5Il9zdHI7Ci0g
ICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlM0QiKQot
ICAgICAgICAgICAgcmV0dXJuICJ0ZXh0dXJlM2QiX3N0cjsKLSAgICAgICAgaWYgKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTNEIikKLSAgICAgICAgICAgIHJldHVy
biAidGV4dHVyZTNkIl9zdHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFt
ZSgpID09ICJUZXh0dXJlQ3ViZSIpCi0gICAgICAgICAgICByZXR1cm4gInRleHR1cmVjdWJlIl9z
dHI7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJl
RGVwdGgyRCIpCi0gICAgICAgICAgICByZXR1cm4gImRlcHRoMmQiX3N0cjsKLSAgICAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aDJEQXJyYXkiKQot
ICAgICAgICAgICAgcmV0dXJuICJkZXB0aDJkX2FycmF5Il9zdHI7Ci0gICAgICAgIEFTU0VSVChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGhDdWJlIik7Ci0gICAg
ICAgIHJldHVybiAiZGVwdGhjdWJlIl9zdHI7Ci0gICAgfSkoKTsKLSAgICBhdXRvIGlubmVyVHlw
ZSA9IChbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgp
ID09ICJ1aW50IikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgICAgICBpZiAo
dHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJ1aW50MiIpCi0gICAgICAgICAgICByZXR1cm4gInVp
bnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAidWludDMiKQot
ICAgICAgICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgICAgIGlmICh0eXBlUmVmZXJlbmNl
LT5uYW1lKCkgPT0gInVpbnQ0IikKLSAgICAgICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAg
ICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJpbnQiKQotICAgICAgICAgICAgcmV0
dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAiaW50
MiIpCi0gICAgICAgICAgICByZXR1cm4gImludCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVy
ZW5jZS0+bmFtZSgpID09ICJpbnQzIikKLSAgICAgICAgICAgIHJldHVybiAiaW50Il9zdHI7Ci0g
ICAgICAgIGlmICh0eXBlUmVmZXJlbmNlLT5uYW1lKCkgPT0gImludDQiKQotICAgICAgICAgICAg
cmV0dXJuICJpbnQiX3N0cjsKLSAgICAgICAgaWYgKHR5cGVSZWZlcmVuY2UtPm5hbWUoKSA9PSAi
ZmxvYXQiKQotICAgICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBpZiAodHlw
ZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdDIiKQotICAgICAgICAgICAgcmV0dXJuICJmbG9h
dCJfc3RyOwotICAgICAgICBpZiAodHlwZVJlZmVyZW5jZS0+bmFtZSgpID09ICJmbG9hdDMiKQot
ICAgICAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgICAgICBBU1NFUlQodHlwZVJlZmVy
ZW5jZS0+bmFtZSgpID09ICJmbG9hdDQiKTsKLSAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwot
ICAgIH0pKCk7Ci0gICAgYXV0byBpc1JlYWRXcml0ZSA9IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5u
YW1lKCkgPT0gIlJXVGV4dHVyZTFEIgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
bmFtZSgpID09ICJSV1RleHR1cmUxREFycmF5IgotICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUyRCIKLSAgICAgICAgfHwgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIKLSAgICAgICAgfHwgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiOwotICAgIHJldHVybiBtYWtlU3Ry
aW5nKHByZWZpeCwgJzwnLCBpbm5lclR5cGUsICIsICIsIGlzUmVhZFdyaXRlID8gImFjY2Vzczo6
cmVhZF93cml0ZSIgOiAiYWNjZXNzOjpzYW1wbGUiLCAnPicpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBNZXRhbAotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
VHlwZVdyaXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTA3ZTk2MmQ2NDIx
ZTNmY2Q0YjQzYzE2YjhjZWNjZDBmYzU1ODRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNzIE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgTWV0YWwgewotCi1TdHJpbmcgd3Jp
dGVOYXRpdmVUeXBlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0KLX0gLy8gbmFtZXNw
YWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3NzE1NDE0NDQ4NjAzMzhhNDg3
Njg1YzVkMmYxMDM5ZGE1MzY1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFR5cGVOYW1lci5oIgotCi0j
aWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2Uu
aCIKLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
QXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUg
IldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlv
bk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlw
ZS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNp
bmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3Bh
Y2UgTWV0YWwgewotCi1UeXBlTmFtZXI6OlR5cGVOYW1lcihQcm9ncmFtJiBwcm9ncmFtKQotICAg
IDogbV9wcm9ncmFtKHByb2dyYW0pCi17Ci19Ci0KLVR5cGVOYW1lcjo6flR5cGVOYW1lcigpID0g
ZGVmYXVsdDsKLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFt
ZWRUeXBlKQotewotICAgIGdlbmVyYXRlVW5pcXVlZFR5cGVOYW1lKHVubmFtZWRUeXBlKTsKLX0K
LQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24pCi17Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
bmFtZWRUeXBlTWFwcGluZy5hZGQoJmVudW1lcmF0aW9uRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0
VHlwZU5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewotICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmFkZCgmc3RhdGljX2Nh
c3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciY+KGVudW1lcmF0aW9uTWVtYmVyKSwgZ2VuZXJhdGVO
ZXh0RW51bWVyYXRpb25NZW1iZXJOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0
KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9kZXBlbmRlbmN5R3JhcGguYWRkKCZlbnVtZXJhdGlvbkRlZmluaXRpb24sIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiB7IGVudW1lcmF0aW9uRGVm
aW5pdGlvbi50eXBlKCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotfQotCi12b2lkIFR5cGVOYW1lcjo6dmlzaXQoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAgICAv
LyBOYXRpdmUgdHlwZSBkZWNsYXJhdGlvbnMgYWxyZWFkeSBoYXZlIG5hbWVzLCBhbmQgYXJlIGFs
cmVhZHkgZGVjbGFyZWQgaW4gTWV0YWwuCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlcGVuZGVu
Y3lHcmFwaC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHsgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OnZpc2l0
KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKLXsKLSAgICB7
Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgmc3RydWN0
dXJlRGVmaW5pdGlvbiwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotICAgIFZpc2l0
b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgIHsKLSAgICAgICAgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IG5laWdoYm9yczsKLSAgICAg
ICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1
Y3R1cmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RydWN0
dXJlRWxlbWVudE1hcHBpbmcuYWRkKCZzdHJ1Y3R1cmVFbGVtZW50LCBnZW5lcmF0ZU5leHRTdHJ1
Y3R1cmVFbGVtZW50TmFtZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgICAgICBuZWlnaGJvcnMuYXBwZW5kKHN0
cnVjdHVyZUVsZW1lbnQudHlwZSgpKTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgmc3RydWN0dXJlRGVmaW5pdGlvbiwgV1RGTW92ZShu
ZWlnaGJvcnMpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OlR5cGVE
ZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9uYW1lZFR5cGVNYXBwaW5nLmFkZCgmdHlwZURlZmluaXRpb24sIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwotICAgIH0KLSAgICBWaXNpdG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7
Ci0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGVwZW5kZW5jeUdyYXBoLmFkZCgm
dHlwZURlZmluaXRpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1l
ZFR5cGU+PiB7IHR5cGVEZWZpbml0aW9uLnR5cGUoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlw
ZU5hbWVyOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgZ2VuZXJh
dGVVbmlxdWVkVHlwZU5hbWUoZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgVmlzaXRv
cjo6dmlzaXQoZXhwcmVzc2lvbik7Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjp2aXNpdChBU1Q6OkNh
bGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChhcmd1bWVudCk7Ci19Ci0KLVN0cmluZyBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQotewotICAg
IHJldHVybiB3cml0ZU5hdGl2ZVR5cGUobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotc3Rh
dGljIEFTVDo6VW5uYW1lZFR5cGUqIHBhcmVudChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOgotICAgICAgICByZXR1
cm4gJmRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgp
OwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6Ci0gICAg
ICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBl
KS5lbGVtZW50VHlwZSgpOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6
Ci0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50
eXBlKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci19Ci0KLXZvaWQgVHlwZU5hbWVyOjpnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZShB
U1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKLXsKLSAgICBhdXRvKiBwYXJlbnRVbm5hbWVk
VHlwZSA9IHBhcmVudCh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKHBhcmVudFVubmFtZWRUeXBlKQot
ICAgICAgICBnZW5lcmF0ZVVuaXF1ZWRUeXBlTmFtZSgqcGFyZW50VW5uYW1lZFR5cGUpOwotCi0g
ICAgbV91bm5hbWVkVHlwZU1hcHBpbmcuZW5zdXJlKFVubmFtZWRUeXBlS2V5IHsgdW5uYW1lZFR5
cGUgfSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCk7Ci0gICAg
fSk7Ci19Ci0KLWNsYXNzIE1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyIGZpbmFsIDogcHVibGlj
IFZpc2l0b3IgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIE1l
dGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIHN0
ZDo6ZnVuY3Rpb248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUmKT4mJiBt
YW5nbGVkTmFtZUZvck5hbWVkVHlwZSkKLSAgICAgICAgOiBtX21hbmdsZWROYW1lRm9yTmFtZWRU
eXBlKFdURk1vdmUobWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUpKQotICAgICAgICAsIG1fc3RyaW5n
QnVpbGRlcihzdHJpbmdCdWlsZGVyKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwg
bV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwot
ICAgIH0KLQotICAgIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpO
YW1lZFR5cGUmKT4gbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZTsKLSAgICBTdHJpbmdCdWlsZGVy
JiBtX3N0cmluZ0J1aWxkZXI7Ci19OwotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZURl
Y2xhcmF0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewotICAgIE1ldGFsVHlw
ZURlY2xhcmF0aW9uV3JpdGVyIG1ldGFsVHlwZURlY2xhcmF0aW9uV3JpdGVyKHN0cmluZ0J1aWxk
ZXIsIFsmXShBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKSAtPiBNYW5nbGVkT3JOYXRpdmVUeXBl
TmFtZSB7Ci0gICAgICAgIHJldHVybiBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKTsKLSAg
ICB9KTsKLSAgICBtZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlci5WaXNpdG9yOjp2aXNpdChtX3By
b2dyYW0pOwotfQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlw
ZSwgTWFuZ2xlZFR5cGVOYW1lIG1hbmdsZWROYW1lLCBIYXNoU2V0PEFTVDo6TmFtZWRUeXBlKj4m
IGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYgZW1pdHRlZFVubmFt
ZWRUeXBlcykKLXsKLSAgICBpZiAoZW1pdHRlZFVubmFtZWRUeXBlcy5jb250YWlucyhVbm5hbWVk
VHlwZUtleSB7IHVubmFtZWRUeXBlIH0pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2gg
KHVubmFtZWRUeXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
VHlwZVJlZmVyZW5jZTogewotICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8
QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0KLSAgICAgICAgYXV0byYgcGFyZW50
ID0gdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5n
bGVkTmFtZSA9IG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KTsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZGVwZW5kZW5jeUdyYXBoLmZpbmQoJnBhcmVu
dCk7Ci0gICAgICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2RlcGVuZGVuY3lHcmFwaC5lbmQoKSk7
Ci0gICAgICAgIGVtaXROYW1lZFR5cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIHBhcmVudCwg
aXRlcmF0b3ItPnZhbHVlLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7
Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYgIiwgcGFyZW50TWFuZ2xl
ZE5hbWUsICcgJywgbWFuZ2xlZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewotICAgICAgICBhdXRv
JiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsK
LQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBwb2ludGVyVHlwZS5lbGVtZW50VHlwZSgpOwotICAg
ICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7
Ci0gICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50
LCBwYXJlbnRNYW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlw
ZXMpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5n
KHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwYXJlbnRNYW5nbGVkTmFtZSwgIiog
IiwgbWFuZ2xlZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKLSAgICAgICAgYXV0byYg
YXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVu
bmFtZWRUeXBlKTsKLQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVJlZmVyZW5jZVR5cGUu
ZWxlbWVudFR5cGUoKTsKLSAgICAgICAgYXV0byBwYXJlbnRNYW5nbGVkTmFtZSA9IG1hbmdsZWRO
YW1lRm9yVHlwZShwYXJlbnQpOwotICAgICAgICBlbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKHN0
cmluZ0J1aWxkZXIsIHBhcmVudCwgcGFyZW50TWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVz
LCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
LSAgICAgICAgICAgICJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWUsICIge1xuIgotICAgICAgICAgICAg
IiAgICAiLCB0b1N0cmluZyhhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcs
IHBhcmVudE1hbmdsZWROYW1lLCAiKiBwb2ludGVyO1xuIgotICAgICAgICAgICAgIiAgICB1aW50
MzJfdCBsZW5ndGg7XG4iCi0gICAgICAgICAgICAifTtcbiIKLSAgICAgICAgKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsK
LSAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFt
ZWRUeXBlKTsKLQotICAgICAgICBhdXRvJiBwYXJlbnQgPSBhcnJheVR5cGUudHlwZSgpOwotICAg
ICAgICBhdXRvIHBhcmVudE1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmVudCk7
Ci0gICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgcGFyZW50
LCBwYXJlbnRNYW5nbGVkTmFtZSwgZW1pdHRlZE5hbWVkVHlwZXMsIGVtaXR0ZWRVbm5hbWVkVHlw
ZXMpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmIGFycmF5PCIsIHBh
cmVudE1hbmdsZWROYW1lLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwgbWFu
Z2xlZE5hbWUsICI7XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgZW1pdHRl
ZFVubmFtZWRUeXBlcy5hZGQoVW5uYW1lZFR5cGVLZXkgeyB1bm5hbWVkVHlwZSB9KTsKLX0KLQot
dm9pZCBUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIsIEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5cGUsIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiYgbmVpZ2hib3JzLCBIYXNoU2V0PEFTVDo6
TmFtZWRUeXBlKj4mIGVtaXR0ZWROYW1lZFR5cGVzLCBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiYg
ZW1pdHRlZFVubmFtZWRUeXBlcykKLXsKLSAgICBpZiAoZW1pdHRlZE5hbWVkVHlwZXMuY29udGFp
bnMoJm5hbWVkVHlwZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgdW5uYW1l
VHlwZSA6IG5laWdoYm9ycykKLSAgICAgICAgZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvbihzdHJp
bmdCdWlsZGVyLCB1bm5hbWVUeXBlLCBtYW5nbGVkTmFtZUZvclR5cGUodW5uYW1lVHlwZSksIGVt
aXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLQotICAgIHN3aXRjaCAobmFt
ZWRUeXBlLmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbjogewotICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBk
b3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAg
YXV0byYgYmFzZVR5cGUgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgp
OwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWRO
YW1lRm9yVHlwZShlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JU
eXBlKGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwotICAgICAg
ICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVu
dW1lcmF0aW9uTWVtYmVycygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uTWVtYmVyKSwg
IiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIsXG4iKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgQVNUOjpOYW1lZFR5cGU6OktpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjogewotICAg
ICAgICAvLyBOYXRpdmUgdHlwZXMgYWxyZWFkeSBoYXZlIGRlZmluaXRpb25zLiBUaGVyZSdzIG5v
dGhpbmcgdG8gZG8uCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEFTVDo6TmFtZWRU
eXBlOjpLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHN0cnVjdHVy
ZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlw
ZSk7Ci0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFt
ZUZvclR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICIge1xuIik7Ci0gICAgICAgIGZvciAoYXV0
byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVu
dHMoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5h
bWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0
cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIn07XG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
QVNUOjpOYW1lZFR5cGU6OktpbmQ6OlR5cGVEZWZpbml0aW9uOiB7Ci0gICAgICAgIGF1dG8mIHR5
cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsK
LQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZv
clR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlw
ZURlZmluaXRpb24pLCAiO1xuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0
OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGVt
aXR0ZWROYW1lZFR5cGVzLmFkZCgmbmFtZWRUeXBlKTsKLX0KLQotdm9pZCBUeXBlTmFtZXI6OmVt
aXRNZXRhbFR5cGVEZWZpbml0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQotewot
ICAgIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiBlbWl0dGVkTmFtZWRUeXBlczsKLSAgICBIYXNo
U2V0PFVubmFtZWRUeXBlS2V5PiBlbWl0dGVkVW5uYW1lZFR5cGVzOwotICAgIGZvciAoYXV0byYg
W25hbWVkVHlwZSwgbmVpZ2hib3JzXSA6IG1fZGVwZW5kZW5jeUdyYXBoKQotICAgICAgICBlbWl0
TmFtZWRUeXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCAqbmFtZWRUeXBlLCBuZWlnaGJvcnMs
IGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICBmb3IgKGF1dG8m
IFt1bm5hbWVkVHlwZUtleSwgbWFuZ2xlZE5hbWVdIDogbV91bm5hbWVkVHlwZU1hcHBpbmcpCi0g
ICAgICAgIGVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgdW5uYW1lZFR5
cGVLZXkudW5uYW1lZFR5cGUoKSwgbWFuZ2xlZE5hbWUsIGVtaXR0ZWROYW1lZFR5cGVzLCBlbWl0
dGVkVW5uYW1lZFR5cGVzKTsKLX0KLQotTWFuZ2xlZFR5cGVOYW1lIFR5cGVOYW1lcjo6bWFuZ2xl
ZE5hbWVGb3JUeXBlKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3VubmFtZWRUeXBlTWFwcGluZy5maW5kKFVubmFtZWRUeXBlS2V5IHsgdW5u
YW1lZFR5cGUgfSk7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdW5uYW1lZFR5cGVNYXBwaW5n
LmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotfQotCi1NYW5nbGVkT3JOYXRp
dmVUeXBlTmFtZSBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYg
bmFtZWRUeXBlKQotewotICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fbmFtZWRUeXBlTWFwcGluZy5maW5kKCZuYW1lZFR5cGUpOwotICAgIEFTU0VSVChpdGVyYXRv
ciAhPSBtX25hbWVkVHlwZU1hcHBpbmcuZW5kKCkpOwotICAgIHJldHVybiBpdGVyYXRvci0+dmFs
dWU7Ci19Ci0KLU1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgVHlwZU5hbWVyOjptYW5nbGVk
TmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKEFTVDo6RW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0
aW9uTWVtYmVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VudW1lcmF0aW9uTWVtYmVyTWFw
cGluZy5maW5kKCZlbnVtZXJhdGlvbk1lbWJlcik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1f
ZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZh
bHVlOwotfQotCi1NYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgVHlwZU5hbWVyOjptYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVF
bGVtZW50KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3N0cnVjdHVyZUVsZW1lbnRNYXBwaW5n
LmZpbmQoJnN0cnVjdHVyZUVsZW1lbnQpOwotICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3N0cnVj
dHVyZUVsZW1lbnRNYXBwaW5nLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwot
fQotCi12b2lkIFR5cGVOYW1lcjo6ZW1pdE1ldGFsVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5n
QnVpbGRlcikKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwotCi0gICAgZW1pdE1l
dGFsVHlwZURlY2xhcmF0aW9ucyhzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXG4nKTsKLSAgICBlbWl0TWV0YWxUeXBlRGVmaW5pdGlvbnMoc3RyaW5nQnVpbGRlcik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTFR5cGVOYW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFkMWFl
ODEwNDA1YWNiNThkYWY5MjdiMWNjODI2ZjY0Y2MxMGNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xNYW5nbGVkTmFtZXMuaCIKLSNpbmNsdWRlICJXSExTTFVubmFt
ZWRUeXBlSGFzaC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0KLWNsYXNz
IEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyOwotY2xhc3Mg
TmFtZWRUeXBlOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwotY2xhc3MgU3RydWN0dXJl
RGVmaW5pdGlvbjsKLWNsYXNzIFR5cGVEZWZpbml0aW9uOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0K
LX0KLQotY2xhc3MgUHJvZ3JhbTsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotY2xhc3MgQmFzZVR5
cGVOYW1lTm9kZTsKLQotY2xhc3MgVHlwZU5hbWVyIDogcHJpdmF0ZSBWaXNpdG9yIHsKLXB1Ymxp
YzoKLSAgICBUeXBlTmFtZXIoUHJvZ3JhbSYpOwotICAgIHZpcnR1YWwgflR5cGVOYW1lcigpOwot
Ci0gICAgdm9pZCBlbWl0TWV0YWxUeXBlcyhTdHJpbmdCdWlsZGVyJik7Ci0KLSAgICAvLyBNdXN0
IGJlIGNhbGxlZCBhZnRlciBjYWxsaW5nIGVtaXRNZXRhbFR5cGVzKCkuCi0gICAgU3RyaW5nIG1h
bmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIE1hbmds
ZWRUeXBlTmFtZSBtYW5nbGVkTmFtZUZvclR5cGUoQVNUOjpVbm5hbWVkVHlwZSYpOwotICAgIE1h
bmdsZWRPck5hdGl2ZVR5cGVOYW1lIG1hbmdsZWROYW1lRm9yVHlwZShBU1Q6Ok5hbWVkVHlwZSYp
OwotICAgIE1hbmdsZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgbWFuZ2xlZE5hbWVGb3JFbnVtZXJh
dGlvbk1lbWJlcihBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJik7Ci0gICAgTWFuZ2xlZFN0cnVjdHVy
ZUVsZW1lbnROYW1lIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnQmKTsKLQotICAgIE1hbmdsZWRUeXBlTmFtZSBnZW5lcmF0ZU5leHRUeXBlTmFtZSgp
IHsgcmV0dXJuIHsgbV90eXBlQ291bnQrKyB9OyB9Ci0gICAgTWFuZ2xlZFN0cnVjdHVyZUVsZW1l
bnROYW1lIGdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCkgeyByZXR1cm4geyBtX3N0
cnVjdHVyZUVsZW1lbnRDb3VudCsrIH07IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VW5uYW1lZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLQotICAgIE1hbmds
ZWRFbnVtZXJhdGlvbk1lbWJlck5hbWUgZ2VuZXJhdGVOZXh0RW51bWVyYXRpb25NZW1iZXJOYW1l
KCkgeyByZXR1cm4geyBtX2VudW1lcmF0aW9uTWVtYmVyQ291bnQrKyB9OyB9Ci0KLSAgICB2b2lk
IGVtaXROYW1lZFR5cGVEZWZpbml0aW9uKFN0cmluZ0J1aWxkZXImLCBBU1Q6Ok5hbWVkVHlwZSYs
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6VW5uYW1lZFR5cGU+PiYsIEhhc2hT
ZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8VW5uYW1lZFR5
cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRVbm5hbWVkVHlwZURl
ZmluaXRpb24oU3RyaW5nQnVpbGRlciYsIEFTVDo6VW5uYW1lZFR5cGUmLCBNYW5nbGVkVHlwZU5h
bWUsIEhhc2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8
VW5uYW1lZFR5cGVLZXk+JiBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICB2b2lkIGVtaXRNZXRh
bFR5cGVEZWNsYXJhdGlvbnMoU3RyaW5nQnVpbGRlciYpOwotICAgIHZvaWQgZW1pdE1ldGFsVHlw
ZURlZmluaXRpb25zKFN0cmluZ0J1aWxkZXImKTsKLQotICAgIHZvaWQgZ2VuZXJhdGVVbmlxdWVk
VHlwZU5hbWUoQVNUOjpVbm5hbWVkVHlwZSYpOwotCi0gICAgUHJvZ3JhbSYgbV9wcm9ncmFtOwot
ICAgIEhhc2hNYXA8VW5uYW1lZFR5cGVLZXksIE1hbmdsZWRUeXBlTmFtZT4gbV91bm5hbWVkVHlw
ZU1hcHBpbmc7Ci0gICAgSGFzaE1hcDxBU1Q6Ok5hbWVkVHlwZSosIE1hbmdsZWRUeXBlTmFtZT4g
bV9uYW1lZFR5cGVNYXBwaW5nOwotICAgIEhhc2hNYXA8QVNUOjpOYW1lZFR5cGUqLCBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4+IG1fZGVwZW5kZW5jeUdy
YXBoOwotICAgIEhhc2hNYXA8QVNUOjpFbnVtZXJhdGlvbk1lbWJlciosIE1hbmdsZWRFbnVtZXJh
dGlvbk1lbWJlck5hbWU+IG1fZW51bWVyYXRpb25NZW1iZXJNYXBwaW5nOwotICAgIEhhc2hNYXA8
QVNUOjpTdHJ1Y3R1cmVFbGVtZW50KiwgTWFuZ2xlZFN0cnVjdHVyZUVsZW1lbnROYW1lPiBtX3N0
cnVjdHVyZUVsZW1lbnRNYXBwaW5nOwotICAgIHVuc2lnbmVkIG1fdHlwZUNvdW50IHsgMCB9Owot
ICAgIHVuc2lnbmVkIG1fZW51bWVyYXRpb25NZW1iZXJDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX3N0cnVjdHVyZUVsZW1lbnRDb3VudCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIE1l
dGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxj
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTRhZDJkOWQ3ZmZmZmMzNGVjMzY0ZjYxMjU3NDI2MjZjMDg1Nzc1Yi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRv
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIE1ldGFsIHsKLQotdW5zaWduZWQgY2Fs
Y3VsYXRlVmVydGV4QnVmZmVySW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gUmVzZXJ2
ZSB0aGUgZmlyc3QgZmV3IE1UTEJ1ZmZlciBzbG90cyBmb3IgYXJndW1lbnQgYnVmZmVycyBmb3Ig
R1BVQmluZEdyb3Vwcy4KLSAgICByZXR1cm4gaW5kZXggKyA4OwotfQotCi19Ci0KLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENh
bGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMwNTRkMGYzNWJjMjFhNzA2YTY3MjZkZDkxMDk0ZjQyZGJlODc1NzYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgTWV0YWwgewotCi11bnNpZ25lZCBjYWxj
dWxhdGVWZXJ0ZXhCdWZmZXJJbmRleCh1bnNpZ25lZCk7Ci0KLX0KLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEwMDRmZDFkZmQ0ZGVlOTgxZmY3MjY2ZmE3Y2Q2ODQzMmNiMTRhMWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xBU1REdW1wZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgbV9vdXQucHJpbnRsbigpOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXpl
KCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClb
aV0pOwotICAgIGlmIChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCkpCi0g
ICAgICAgIG1fb3V0LnByaW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAg
ICAgdmlzaXQocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKLSAgICBp
ZiAocHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAg
bV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3Jh
bS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXQocHJvZ3JhbS50
eXBlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0udHlwZURlZmluaXRpb25zKCku
c2l6ZSgpKQotICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHZpc2l0KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYg
KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIG1fb3V0LnBy
aW50KCJcblxuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZW51bWVy
YXRpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdChwcm9ncmFtLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgaWYgKHByb2dyYW0uZW51bWVyYXRpb25E
ZWZpbml0aW9ucygpLnNpemUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ld
KTsKLQotICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewotICAgIEJhc2U6OnZpc2l0KHVubmFtZWRU
eXBlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1lZFR5
cGUpCi17Ci0gICAgQmFzZTo6dmlzaXQobmFtZWRUeXBlKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQotewotICAgIG1fb3V0
LnByaW50KCJ0eXBlZGVmICIsIHR5cGVEZWZpbml0aW9uLm5hbWUoKSwgIiA9ICIpOwotICAgIHZp
c2l0KHR5cGVEZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiOyIpOwotfQot
Ci12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1
cmVEZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJzdHJ1Y3QgIiwg
c3RydWN0dXJlRGVmaW5pdGlvbi5uYW1lKCksICIgeyIpOwotICAgIHsKLSAgICAgICAgYXV0byBp
bmRlbnQgPSBidW1wSW5kZW50KCk7Ci0gICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVu
dCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgICAg
IHZpc2l0KHN0cnVjdHVyZUVsZW1lbnQpOwotICAgIH0KLSAgICBtX291dC5wcmludGxuKG1faW5k
ZW50LCAifSIpOwotICAgIG1fb3V0LnByaW50bG4oKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKLXsKLSAgICBtX291
dC5wcmludChtX2luZGVudCk7Ci0gICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpOwot
ICAgIG1fb3V0LnByaW50KCIgIiwgc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwotICAgIGlmIChz
dHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpzdHJ1Y3R1cmVFbGVt
ZW50LnNlbWFudGljKCkpOwotICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmlu
aXRpb24pCi17Ci0gICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJlbnVtICIpOwotICAgIHZpc2l0
KGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCIgeyIpOwot
Ci0gICAgewotICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKLSAgICAgICAgYm9v
bCBvbmNlID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBl
bnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKLSAgICAgICAgICAg
IGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIpOwotICAgICAgICAg
ICAgbV9vdXQucHJpbnRsbigpOwotICAgICAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwot
ICAgICAgICAgICAgdmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgbV9vdXQucHJpbnRsbigpOwotICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7
Ci0gICAgbV9vdXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpF
bnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCi17Ci0gICAgbV9vdXQucHJpbnQo
ZW51bWVyYXRpb25NZW1iZXIubmFtZSgpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIudmFsdWUo
KSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYg
ZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKLSAgICB2
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmlu
aXRpb24pKTsKLSAgICB2aXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0gICAgbV9v
dXQucHJpbnQoIlxuXG4iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBt
X291dC5wcmludChtX2luZGVudCk7Ci0gICAgbV9vdXQucHJpbnQoIm5hdGl2ZSAiKTsKLSAgICB2
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKSk7Ci0gICAgbV9vdXQucHJpbnRsbigpOwotfQotCi12b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xhcmF0aW9uKQot
ewotICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Ci0gICAg
aWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uZW50cnlQb2ludFR5cGUoKSkKLSAgICAgICAgbV9vdXQu
cHJpbnQoQVNUOjp0b1N0cmluZygqZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgp
KSwgIiAiKTsKLSAgICB2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgbV9v
dXQucHJpbnQoIiAiLCBmdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIigiKTsKLSAgICBib29s
IG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgbV9v
dXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICB2aXNpdChwYXJh
bWV0ZXIpOwotICAgIH0KLSAgICBtX291dC5wcmludCgiKSIpOwotICAgIGlmIChmdW5jdGlvbkRl
Y2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIHZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0aW9u
LnNlbWFudGljKCkpOwotICAgIG1fb3V0LnByaW50KCIgIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVy
Ojp2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
KQotewotICAgIG1fb3V0LnByaW50KG1faW5kZW50LCAibmF0aXZlIHR5cGVkZWYgIik7Ci0gICAg
bV9vdXQucHJpbnQobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSk7Ci0gICAgaWYgKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpKSB7Ci0gICAgICAgIG1fb3V0
LnByaW50KCI8Iik7Ci0gICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1
dG8mIHR5cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkp
IHsKLSAgICAgICAgICAgIGlmIChvbmNlKQotICAgICAgICAgICAgICAgIG1fb3V0LnByaW50KCIs
ICIpOwotICAgICAgICAgICAgb25jZSA9IHRydWU7Ci0gICAgICAgICAgICB2aXNpdCh0eXBlQXJn
dW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnByaW50KCI+Iik7Ci0gICAgfQotICAg
IG1fb3V0LnByaW50bG4oIjsiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VHlw
ZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsKLSAgICBtX291dC5wcmludCh0eXBlUmVmZXJl
bmNlLm5hbWUoKSk7Ci0KLSAgICBpZiAodHlwZVJlZmVyZW5jZS50eXBlQXJndW1lbnRzKCkuc2l6
ZSgpKSB7Ci0gICAgICAgIGJvb2wgb25jZSA9IGZhbHNlOwotICAgICAgICBtX291dC5wcmludCgi
PCIpOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlw
ZUFyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgICAgICBt
X291dC5wcmludCgiLCAiKTsKLSAgICAgICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICAgICAg
dmlzaXQodHlwZUFyZ3VtZW50KTsKLSAgICAgICAgfQotICAgICAgICBtX291dC5wcmludCgiPiIp
OwotICAgIH0KLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBv
aW50ZXJUeXBlKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+
KHBvaW50ZXJUeXBlKSk7Ci0gICAgbV9vdXQucHJpbnQoIioiKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi17
Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVu
Y2VUeXBlKSk7Ci0gICAgbV9vdXQucHJpbnQoIltdIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKQotewotICAgIHZpc2l0KGFycmF5VHlwZS50
eXBlKCkpOwotICAgIG1fb3V0LnByaW50KCJbIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICJd
Iik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFy
Z3VtZW50KQotewotICAgIEJhc2U6OnZpc2l0KHR5cGVBcmd1bWVudCk7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCi17Ci0gICAg
bV9vdXQucHJpbnQoQVNUOjp0b1N0cmluZyhyZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwg
IiAiKTsKLSAgICB2aXNpdChyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotfQotCi12b2lk
IEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCi17Ci0gICAgbV9vdXQu
cHJpbnQoIiA6ICIpOwotICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpC
dWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykgewotICAgICAgICB2aXNpdChidWlsdElu
U2VtYW50aWMpOwotICAgIH0sIFsmXShBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2Vt
YW50aWMpIHsKLSAgICAgICAgdmlzaXQocmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFT
VDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMpIHsKLSAgICAgICAgdmlzaXQoc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KTsKLSAgICB9LCBbJl0oQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1hbnRp
YykgewotICAgICAgICB2aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOwotICAgIH0pLCBzZW1hbnRp
Yyk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYg
Y29uc3RhbnRFeHByZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0KGNvbnN0YW50RXhwcmVzc2lv
bik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRy
aWJ1dGVCbG9jaykKLXsKLSAgICBpZiAoYXR0cmlidXRlQmxvY2suaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX291dC5wcmludCgiWyIpOwotICAgIGZvciAoYXV0byYgZnVuY3Rp
b25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVCbG9jaykKLSAgICAgICAgdmlzaXQoZnVuY3Rpb25BdHRy
aWJ1dGUpOwotICAgIG1fb3V0LnByaW50KCJdICIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlz
aXQoQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKLXsKLSAgICBtX291dC5w
cmludChidWlsdEluU2VtYW50aWMudG9TdHJpbmcoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpCi17Ci0gICAgbV9v
dXQucHJpbnQocmVzb3VyY2VTZW1hbnRpYy50b1N0cmluZygpKTsKLX0KLQotdm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikKLXsKLSAgICAv
LyBGSVhNRTogSGFuZGxlIHRoaXMgd2hlbiB3ZSBpbXBsZW1lbnQgaXQuCi19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGlj
KQotewotICAgIG1fb3V0LnByaW50KCJhdHRyaWJ1dGUoIiwgc3RhZ2VJbk91dFNlbWFudGljLmlu
ZGV4KCksICIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkludGVnZXJMaXRl
cmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChpbnRlZ2VyTGl0ZXJhbC52
YWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludCh1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKLXsKLSAgICBtX291dC5wcmludChmbG9h
dExpdGVyYWwudmFsdWUoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkJvb2xl
YW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkKLXsKLSAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFs
dWUoKSkKLSAgICAgICAgbV9vdXQucHJpbnQoInRydWUiKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
b3V0LnByaW50KCJmYWxzZSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpJbnRl
Z2VyTGl0ZXJhbFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYpCi17Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkZsb2F0TGl0ZXJhbFR5cGUmKQotewotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsK
LSAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwubGVmdCgpLCAiLiIsIGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yaWdodCgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRlKQotewotICAgIFdU
Rjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUmIG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICB2aXNpdChudW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19
Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZSYgbnVtVGhyZWFkc0F0dHJpYnV0ZSkKLXsKLSAgICBtX291dC5wcmludCgibnVtdGhyZWFkcygi
LCBudW1UaHJlYWRzQXR0cmlidXRlLndpZHRoKCksICIsICIsIG51bVRocmVhZHNBdHRyaWJ1dGUu
aGVpZ2h0KCksICIsICIsIG51bVRocmVhZHNBdHRyaWJ1dGUuZGVwdGgoKSwgIikiKTsKLX0KLQot
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIG1fb3V0LnBy
aW50bG4oInsiKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZW50ID0gYnVtcEluZGVudCgpOwot
ICAgICAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkgewotICAg
ICAgICAgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOwotICAgICAgICAgICAgdmlzaXQoc3RhdGVt
ZW50KTsKLSAgICAgICAgICAgIG1fb3V0LnByaW50bG4oIjsiKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBtX291dC5wcmludChtX2luZGVudCwgIn0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgQmFzZTo6dmlzaXQoc3RhdGVt
ZW50KTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYgc3Rh
dGVtZW50TGlzdCkKLXsKLSAgICBib29sIG9uY2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN0
YXRlbWVudCA6IHN0YXRlbWVudExpc3Quc3RhdGVtZW50cygpKSB7Ci0gICAgICAgIGlmIChvbmNl
KQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjtcbiIsIG1faW5kZW50KTsKLSAgICAgICAgb25j
ZSA9IHRydWU7Ci0gICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Ci0gICAgfQotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpCcmVhayYpCi17Ci0gICAgbV9vdXQucHJpbnQoImJyZWFrIik7
Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKLXsKLSAgICBtX291
dC5wcmludCgiY29udGludWUiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6V2hp
bGVMb29wJiB3aGlsZUxvb3ApCi17Ci0gICAgbV9vdXQucHJpbnQoIndoaWxlICgiKTsKLSAgICB2
aXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJpbnQoIikiKTsKLSAg
ICB2aXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIG1fb3V0LnByaW50KCJkbyAiKTsK
LSAgICB2aXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIG1fb3V0LnByaW50KCIgd2hpbGUo
Iik7Ci0gICAgdmlzaXQoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgbV9vdXQucHJp
bnQoIikiKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9v
cCkKLXsKLSAgICBtX291dC5wcmludCgiZm9yICgiKTsKLSAgICB2aXNpdChmb3JMb29wLmluaXRp
YWxpemF0aW9uKCkpOwotICAgIG1fb3V0LnByaW50KCI7ICIpOwotICAgIGlmIChmb3JMb29wLmNv
bmRpdGlvbigpKQotICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgbV9v
dXQucHJpbnQoIjsgIik7Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIHZp
c2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLSAgICBtX291dC5wcmludCgiKSAiKTsKLSAgICB2
aXNpdChmb3JMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkV4
cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgYm9vbCBza2lwUGFyZW5zID0gaXM8QVNUOjpC
b29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpGbG9hdExpdGVy
YWw+KGV4cHJlc3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJl
c3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVz
c2lvbikKLSAgICAgICAgfHwgaXM8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJl
c3Npb24pCi0gICAgICAgIHx8IGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9uKQot
ICAgICAgICB8fCBpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKLQotICAg
IGlmIChhdXRvKiBhbm5vdGF0aW9uID0gZXhwcmVzc2lvbi5tYXliZVR5cGVBbm5vdGF0aW9uKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gYWRkcmVzc1NwYWNlID0gYW5ub3RhdGlvbi0+bGVmdEFkZHJl
c3NTcGFjZSgpKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxMVjoiLCBBU1Q6OnRvU3RyaW5n
KCphZGRyZXNzU3BhY2UpKTsKLSAgICAgICAgZWxzZSBpZiAoYW5ub3RhdGlvbi0+aXNBYnN0cmFj
dExlZnRWYWx1ZSgpKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIjxBTFYiKTsKLSAgICAgICAg
ZWxzZSBpZiAoYW5ub3RhdGlvbi0+aXNSaWdodFZhbHVlKCkpCi0gICAgICAgICAgICBtX291dC5w
cmludCgiPFJWIik7Ci0KLSAgICAgICAgbV9vdXQucHJpbnQoIiwgIiwgZXhwcmVzc2lvbi5yZXNv
bHZlZFR5cGUoKS50b1N0cmluZygpLCAiPiIpOwotCi0gICAgICAgIHNraXBQYXJlbnMgPSBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAoIXNraXBQYXJlbnMpCi0gICAgICAgIG1fb3V0LnByaW50KCIo
Iik7Ci0gICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgaWYgKCFza2lwUGFyZW5zKQot
ICAgICAgICBtX291dC5wcmludCgiKSIpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQotewotICAgIHZpc2l0KHN0YXRpY19jYXN0
PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oZG90RXhwcmVzc2lvbikpOwotICAgIG1f
b3V0LnByaW50KCIuIiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSk7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJiBnbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSkKLXsKLSAgICB2aXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkp
OwotICAgIG1fb3V0LnByaW50KCI9PiIsIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZp
ZWxkKCkubmFtZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW5kZXhFeHBy
ZXNzaW9uJiBpbmRleEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mPihpbmRleEV4cHJlc3Npb24pKTsKLSAgICBtX291dC5w
cmludCgiWyIpOwotICAgIHZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKSk7
Ci0gICAgbV9vdXQucHJpbnQoIl0iKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIEJhc2U6OnZpc2l0
KGV4cHJlc3Npb24pOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQotewotICAg
IEJhc2U6OnZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpOwotfQotCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpCi17Ci0gICAgbV9vdXQucHJpbnQoImZh
bGx0aHJvdWdoIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50
JiBpZlN0YXRlbWVudCkKLXsKLSAgICBtX291dC5wcmludCgiaWYgKCIpOwotICAgIHZpc2l0KGlm
U3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fb3V0LnByaW50KCIpICIpOwotICAgIHZp
c2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkp
IHsKLSAgICAgICAgbV9vdXQucHJpbnQoIiBlbHNlICIpOwotICAgICAgICB2aXNpdCgqaWZTdGF0
ZW1lbnQuZWxzZUJvZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNU
OjpSZXR1cm4mIHJldHVyblN0YXRlbWVudCkKLXsKLSAgICBtX291dC5wcmludCgicmV0dXJuIik7
Ci0gICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50
KCIgIik7Ci0gICAgICAgIHZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgfQot
fQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0
YXRlbWVudCkKLXsKLSAgICBtX291dC5wcmludCgic3dpdGNoICgiKTsKLSAgICB2aXNpdChzd2l0
Y2hTdGF0ZW1lbnQudmFsdWUoKSk7Ci0gICAgbV9vdXQucHJpbnRsbigiKSB7Iik7Ci0gICAgYm9v
bCBvbmNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVt
ZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAgICAgaWYgKG9uY2UpCi0gICAgICAgICAgICBtX291
dC5wcmludGxuKCk7Ci0gICAgICAgIG9uY2UgPSB0cnVlOwotICAgICAgICBtX291dC5wcmludCht
X2luZGVudCk7Ci0gICAgICAgIHZpc2l0KHN3aXRjaENhc2UpOwotICAgIH0KLSAgICBtX291dC5w
cmludCgiXG4iLCBtX2luZGVudCwgIn0iKTsKLQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQo
QVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQotewotICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVl
KCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnQoImNhc2UgIik7Ci0gICAgICAgIHZpc2l0KCpzd2l0
Y2hDYXNlLnZhbHVlKCkpOwotICAgICAgICBtX291dC5wcmludCgiOiAiKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgbV9vdXQucHJpbnQoImRlZmF1bHQ6ICIpOwotICAgIHZpc2l0KHN3aXRjaENhc2Uu
YmxvY2soKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKLXsKLSAgICBC
YXNlOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7Ci19Ci0KLXZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRp
b24pCi17Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSB7Ci0gICAgICAgIHZp
c2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIG1fb3V0LnByaW50KCIg
Iik7Ci0gICAgfQotCi0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgbV9vdXQucHJpbnQoIiQiLCBSYXdQb2ludGVyKCZ2YXJpYWJsZURlY2xhcmF0
aW9uKSk7Ci0gICAgZWxzZQotICAgICAgICBtX291dC5wcmludCh2YXJpYWJsZURlY2xhcmF0aW9u
Lm5hbWUoKSk7Ci0KLSAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKQotICAg
ICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLSAgICBpZiAodmFy
aWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50KCIg
PSAiKTsKLSAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7
Ci0gICAgfQotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVz
c2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCi17Ci0gICAgdmlzaXQoYXNzaWdubWVudEV4cHJl
c3Npb24ubGVmdCgpKTsKLSAgICBtX291dC5wcmludCgiID0gIik7Ci0gICAgdmlzaXQoYXNzaWdu
bWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludChjYWxs
RXhwcmVzc2lvbi5uYW1lKCksICIoIik7Ci0gICAgYm9vbCBvbmNlID0gZmFsc2U7Ci0gICAgZm9y
IChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKSB7Ci0gICAgICAg
IGlmIChvbmNlKQotICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7Ci0gICAgICAgIG9uY2Ug
PSB0cnVlOwotICAgICAgICB2aXNpdChhcmd1bWVudCk7Ci0gICAgfQotICAgIG1fb3V0LnByaW50
KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYg
Y29tbWFFeHByZXNzaW9uKQotewotICAgIG1fb3V0LnByaW50KCIoIik7Ci0gICAgYm9vbCBvbmNl
ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBleHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxp
c3QoKSkgewotICAgICAgICBpZiAob25jZSkKLSAgICAgICAgICAgIG1fb3V0LnByaW50KCIsICIp
OwotICAgICAgICBvbmNlID0gdHJ1ZTsKLSAgICAgICAgdmlzaXQoZXhwcmVzc2lvbik7Ci0gICAg
fQotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIG1f
b3V0LnByaW50KCIqIik7Ci0gICAgdmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIo
KSk7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBs
b2dpY2FsRXhwcmVzc2lvbikKLXsKLSAgICBtX291dC5wcmludCgiKCIpOwotICAgIHZpc2l0KGxv
Z2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7Ci0gICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50
eXBlKCkpIHsKLSAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKLSAg
ICAgICAgbV9vdXQucHJpbnQoIiAmJiAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpPcjoKLSAgICAgICAgbV9vdXQucHJpbnQoIiB8fCAi
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJp
Z2h0KCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAg
ICBtX291dC5wcmludCgiISgiKTsKLSAgICB2aXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVy
YW5kKCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24pCi17Ci0gICAgbV9vdXQucHJpbnQoIkAiKTsKLSAgICB2aXNpdChtYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCi17
Ci0gICAgbV9vdXQucHJpbnQoIiYiKTsKLSAgICB2aXNpdChtYWtlUG9pbnRlckV4cHJlc3Npb24u
bGVmdFZhbHVlKCkpOwotfQotCi12b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewotICAgIGF1dG8g
b2xkVmFyaWFibGUgPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhcmlhYmxlUmVmZXJl
bmNlKCk7Ci0gICAgYXV0byBuZXdWYXJpYWJsZSA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
bmV3VmFyaWFibGVSZWZlcmVuY2UoKTsKLQotICAgIG1fb3V0LnByaW50KCJSTVcoIik7Ci0gICAg
dmlzaXQob2xkVmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIgPSAiKTsKLSAgICB2
aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5w
cmludCgiLCAiKTsKLQotICAgIHZpc2l0KG5ld1ZhcmlhYmxlLmdldCgpKTsKLSAgICBtX291dC5w
cmludCgiID0gIik7Ci0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1
ZUV4cHJlc3Npb24oKSk7Ci0gICAgbV9vdXQucHJpbnQoIiwgIik7Ci0KLSAgICB2aXNpdChyZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICBtX291dC5wcmludCgiID0g
Iik7Ci0gICAgdmlzaXQobmV3VmFyaWFibGUuZ2V0KCkpOwotICAgIG1fb3V0LnByaW50KCIsICIp
OwotCi0gICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9u
KCkpOwotICAgIG1fb3V0LnByaW50KCIpIik7Ci19Ci0KLXZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lvbikKLXsKLSAgICB2aXNpdCh0
ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgbV9vdXQucHJpbnQoIiA/ICIpOwot
ICAgIHZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAgIG1fb3V0
LnByaW50KCIgOiAiKTsKLSAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lv
bigpKTsKLX0KLQotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2Um
IHZhcmlhYmxlUmVmZXJlbmNlKQotewotICAgIGlmICh2YXJpYWJsZVJlZmVyZW5jZS5uYW1lKCku
aXNFbXB0eSgpKQotICAgICAgICBtX291dC5wcmludCgiJCIsIFJhd1BvaW50ZXIodmFyaWFibGVS
ZWZlcmVuY2UudmFyaWFibGUoKSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9vdXQucHJpbnQodmFy
aWFibGVSZWZlcmVuY2UubmFtZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1RE
dW1wZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVt
cGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMDI3MzZmYzAyYmQzMTQwZmYz
ODhmN2Q1MDJiOGJjZTJjNGJiNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1RE
dW1wZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TFZpc2l0b3IuaCIKLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgQVNURHVtcGVyIDog
VmlzaXRvciB7Ci0gICAgdXNpbmcgQmFzZSA9IFZpc2l0b3I7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2
aXNpdChQcm9ncmFtJikgb3ZlcnJpZGU7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSB7IHJldHVy
biBtX291dC50b1N0cmluZygpOyB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VW5uYW1lZFR5cGUm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpU
eXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5
cGVBcmd1bWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlNlbWFudGljJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpCdWlsdEluU2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVz
b3VyY2VTZW1hbnRpYyYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3Rh
Z2VJbk91dFNlbWFudGljJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6QmxvY2smKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6U3RhdGVtZW50
TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTdGF0ZW1lbnQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6Q29udGludWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxv
b3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpG
b3JMb29wJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OklmU3RhdGVtZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlN3
aXRjaFN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGls
ZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFT
VDo6VmFyaWFibGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qg
SW5kZW50IHsKLSAgICAgICAgSW5kZW50KEFTVER1bXBlciYgZHVtcGVyKQotICAgICAgICAgICAg
OiBtX3Njb3BlKGR1bXBlci5tX2luZGVudCwgZHVtcGVyLm1faW5kZW50ICsgIiAgICIpCi0gICAg
ICAgIHsgfQotICAgICAgICBTZXRGb3JTY29wZTxTdHJpbmc+IG1fc2NvcGU7Ci0gICAgfTsKLQot
ICAgIEluZGVudCBidW1wSW5kZW50KCkgeyByZXR1cm4gSW5kZW50KCp0aGlzKTsgfQotCi0gICAg
ZnJpZW5kIHN0cnVjdCBJbmRlbnQ7Ci0KLSAgICBTdHJpbmdQcmludFN0cmVhbSBtX291dDsKLSAg
ICBTdHJpbmcgbV9pbmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19J
TkxJTkUgdm9pZCBkdW1wQVNUTm9kZShQcmludFN0cmVhbSYgb3V0LCBUJiB2YWx1ZSkKLXsKLSAg
ICBBU1REdW1wZXIgZHVtcGVyOwotICAgIGR1bXBlci52aXNpdCh2YWx1ZSk7Ci0gICAgb3V0LnBy
aW50KGR1bXBlci50b1N0cmluZygpKTsKLX0KLU1BS0VfUFJJTlRfQURBUFRPUihFeHByZXNzaW9u
RHVtcGVyLCBBU1Q6OkV4cHJlc3Npb24mLCBkdW1wQVNUTm9kZSk7Ci1NQUtFX1BSSU5UX0FEQVBU
T1IoU3RhdGVtZW50RHVtcGVyLCBBU1Q6OlN0YXRlbWVudCYsIGR1bXBBU1ROb2RlKTsKLU1BS0Vf
UFJJTlRfQURBUFRPUihQcm9ncmFtRHVtcGVyLCBQcm9ncmFtJiwgZHVtcEFTVE5vZGUpOwotTUFL
RV9QUklOVF9BREFQVE9SKFN0cnVjdHVyZURlZmluaXRpb25EdW1wZXIsIEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURBUFRPUihGdW5jdGlvbkRl
ZmluaXRpb25EdW1wZXIsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgZHVtcEFTVE5vZGUpOwot
TUFLRV9QUklOVF9BREFQVE9SKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25EdW1wZXIsIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYsIGR1bXBBU1ROb2RlKTsKLU1BS0VfUFJJTlRfQURB
UFRPUihUeXBlRHVtcGVyLCBBU1Q6OlVubmFtZWRUeXBlJiwgZHVtcEFTVE5vZGUpOwotCi0KLXN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZHVtcEFTVChQcm9ncmFtJiBwcm9ncmFtKQotewotICAg
IGRhdGFMb2dMbihQcm9ncmFtRHVtcGVyKHByb2dyYW0pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLnB5IGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xCdWlsZFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
TWFwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjcxNzg5NTQ0ODk5MGRjOGFj
Njg3N2JjMTA0ZDlkYmE4ZTY5MTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQnVp
bGRTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCByZQotCi1yZWd1bGFyRXhwcmVzc2lv
biA9IHJlLmNvbXBpbGUociIvXCogRnVuY3Rpb25zIG5hbWVkICguKikgXCovIikKLQotaW5maWxl
ID0gb3BlbihzeXMuYXJndlsxXSwgInIiKQotY29udGVudHMgPSBpbmZpbGUucmVhZCgpCi1pbmZp
bGUuY2xvc2UoKQotCi1vdXRmaWxlID0gb3BlbihzeXMuYXJndlsyXSwgInciKQotb3V0ZmlsZS53
cml0ZSgiIiIKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUhhc2hN
YXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9uTWFwKCkKLXsKLSAgICBIYXNoTWFwPFN0cmluZywgU3Vic3RyaW5nTG9jYXRpb24+IHJlc3Vs
dDsKLSIiIikKLQotIyBGSVhNRTogQ29tcHV0ZSBTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcCBh
dCBidWlsZC10aW1lIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0
NDgKLQotcHJldmlvdXMgPSAwCi1wcmV2aW91c05hbWUgPSAiIgotYm91bmRhcnkgPSAwCi1mb3Ig
bWF0Y2ggaW4gcmVndWxhckV4cHJlc3Npb24uZmluZGl0ZXIoY29udGVudHMpOgotICAgIGlmIHBy
ZXZpb3VzID09IDA6Ci0gICAgICAgIHByZXZpb3VzID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBi
b3VuZGFyeSA9IHByZXZpb3VzCi0gICAgICAgIHByZXZpb3VzTmFtZSA9IG1hdGNoLmdyb3VwKDEp
Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgb3V0ZmlsZS53cml0ZSgiICAgIHJlc3VsdC5hZGQoXCIi
ICsgcHJldmlvdXNOYW1lICsgIlwiX3N0ciwgU3Vic3RyaW5nTG9jYXRpb24geyAiICsgc3RyKHBy
ZXZpb3VzKSArICIsICIgKyBzdHIobWF0Y2guc3RhcnQoKSkgKyAiIH0pO1xuIikKLSAgICBwcmV2
aW91cyA9IG1hdGNoLnN0YXJ0KCkKLSAgICBwcmV2aW91c05hbWUgPSBtYXRjaC5ncm91cCgxKQot
b3V0ZmlsZS53cml0ZSgiICAgIHJlc3VsdC5hZGQoXCIiICsgcHJldmlvdXNOYW1lICsgIlwiX3N0
ciwgU3Vic3RyaW5nTG9jYXRpb24geyAiICsgc3RyKHByZXZpb3VzKSArICIsICIgKyBzdHIobGVu
KGNvbnRlbnRzKSkgKyAiIH0pO1xuIikKLW91dGZpbGUud3JpdGUoIiIiCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotdW5zaWduZWQgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJyYXJ5
KCkKLXsKLSIiIikKLQotb3V0ZmlsZS53cml0ZSgiICAgIHJldHVybiAiICsgc3RyKGJvdW5kYXJ5
KSArICI7XG4iKQotCi1vdXRmaWxlLndyaXRlKCIiIgotfQotCi19Ci0KLX0KLQotI2VuZGlmCi0i
IiIpCi1vdXRmaWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWJlZDFlY2VkNDZkYjFkN2ZhN2Jm
YjRlMWMzZTM0ODNjMzE3M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1
cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrRHVwbGlj
YXRlRnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRl
ICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNz
IER1cGxpY2F0ZUZ1bmN0aW9uS2V5IHsKLXB1YmxpYzoKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktl
eSgpID0gZGVmYXVsdDsKLSAgICBEdXBsaWNhdGVGdW5jdGlvbktleShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uID0gYml0d2lzZV9jYXN0
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwot
ICAgIH0KLQotICAgIER1cGxpY2F0ZUZ1bmN0aW9uS2V5KGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiYgZnVuY3Rpb24pCi0gICAgICAgIDogbV9mdW5jdGlvbigmZnVuY3Rpb24pCi0gICAg
eyB9Ci0KLSAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bmN0aW9u
OyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnVuY3Rpb24gPT0gYml0d2lzZV9jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbio+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBJbnRIYXNoPHNpemVfdD46Omhhc2gobV9mdW5j
dGlvbi0+cGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIGhhc2ggXj0gbV9mdW5jdGlvbi0+
bmFtZSgpLmhhc2goKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9u
LT5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBoYXNoIF49IG1fZnVuY3Rp
b24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLT5oYXNoKCk7Ci0KLSAgICAgICAgaWYgKG1fZnVu
Y3Rpb24tPmlzQ2FzdCgpKQotICAgICAgICAgICAgaGFzaCBePSBtX2Z1bmN0aW9uLT50eXBlKCku
aGFzaCgpOwotCi0gICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAobV9mdW5jdGlvbi0+cGFyYW1ldGVycygpLnNpemUoKSAhPSBvdGhlci5tX2Z1bmN0
aW9uLT5wYXJhbWV0ZXJzKCkuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIGlmIChtX2Z1bmN0aW9uLT5uYW1lKCkgIT0gb3RoZXIubV9mdW5jdGlvbi0+bmFtZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX2Z1bmN0aW9uLT5u
YW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5Ci0gICAgICAgICAg
ICAmJiBvdGhlci5tX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5Ci0gICAgICAgICAgICAmJiBtX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSAhPSBv
dGhlci5tX2Z1bmN0aW9uLT5uYW1lU3BhY2UoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICBBU1NFUlQobV9mdW5jdGlvbi0+aXNDYXN0KCkgPT0gb3RoZXIubV9mdW5jdGlv
bi0+aXNDYXN0KCkpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlv
bi0+cGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMo
Km1fZnVuY3Rpb24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpLCAqb3RoZXIubV9mdW5jdGlvbi0+
cGFyYW1ldGVycygpW2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghbV9mdW5jdGlvbi0+aXNDYXN0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAobWF0Y2hlcyhtX2Z1bmN0aW9uLT50eXBl
KCksIG90aGVyLm1fZnVuY3Rpb24tPnR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3RydWN0IEhhc2ggewotICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYga2V5
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IER1cGxpY2F0ZUZ1bmN0aW9uS2V5JiBh
LCBjb25zdCBEdXBsaWNhdGVGdW5jdGlvbktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHN0cnVj
dCBUcmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RHVwbGljYXRlRnVu
Y3Rpb25LZXk+IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVu
Y3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRHVw
bGljYXRlRnVuY3Rpb25LZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0g
ICAgfTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIG1f
ZnVuY3Rpb24geyBudWxscHRyIH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tE
dXBsaWNhdGVGdW5jdGlvbnMoY29uc3QgUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBhdXRvIHBh
c3Nlc1N0YXRpY0NoZWNrcyA9IFsmXSAoY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBm
dW5jdGlvbikgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHsKLSAgICAgICAgaWYgKGZ1bmN0aW9u
Lm5hbWUoKSA9PSAib3BlcmF0b3I9PSIKLSAgICAgICAgICAgICYmIGZ1bmN0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMgotICAgICAgICAgICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihz
dGF0aWNfY2FzdDxjb25zdCBBU1Q6OlVubmFtZWRUeXBlJj4oKmZ1bmN0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKSkKLSAgICAgICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3Rh
dGljX2Nhc3Q8Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbi5wYXJhbWV0ZXJzKClb
MV0tPnR5cGUoKSkpCi0gICAgICAgICAgICAmJiBtYXRjaGVzKCpmdW5jdGlvbi5wYXJhbWV0ZXJz
KClbMF0tPnR5cGUoKSwgKmZ1bmN0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGRlZmluZSBvcGVyYXRv
cj09IG9uIHR3byByZWZlcmVuY2UgdHlwZXMuIikpOwotICAgICAgICBlbHNlIGlmIChmdW5jdGlv
bi5pc0Nhc3QoKSAmJiBmdW5jdGlvbi5wYXJhbWV0ZXJzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiB1bmlmeU5vZGUgPSBmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAg
ICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkgJiYgaXM8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSkg
ewotICAgICAgICAgICAgICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09w
YXF1ZVR5cGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yKCJDYW5ub3QgZGVmaW5lIGEgY2FzdCBvbiBhbiBvcGFxdWUgdHlwZS4iKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4geyB9OwotICAgIH07Ci0KLSAgICBI
YXNoU2V0PER1cGxpY2F0ZUZ1bmN0aW9uS2V5LCBEdXBsaWNhdGVGdW5jdGlvbktleTo6SGFzaCwg
RHVwbGljYXRlRnVuY3Rpb25LZXk6OlRyYWl0cz4gZnVuY3Rpb25zOwotCi0gICAgYXV0byBhZGQg
PSBbJl0gKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb24pIC0+IEV4cGVj
dGVkPHZvaWQsIEVycm9yPiB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZnVuY3Rpb25zLmFk
ZChEdXBsaWNhdGVGdW5jdGlvbktleSB7IGZ1bmN0aW9uIH0pOwotICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
KCJGb3VuZCBkdXBsaWNhdGUgZnVuY3Rpb24iKSk7Ci0gICAgICAgIHJldHVybiBwYXNzZXNTdGF0
aWNDaGVja3MoZnVuY3Rpb24pOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVm
aW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKSk7Ci0gICAgICAgIGlmICgh
YWRkUmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdDsKLSAgICB9Ci0KLSAgICBm
b3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgLy8gV2UgZ2VuZXJhdGUgZHVwbGljYXRlIG5h
dGl2ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gc3ludGhlc2l6ZSBjb25zdHJ1Y3RvcnMuCi0g
ICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0PwotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTgwCi0gICAgICAgIC8vCi0gICAgICAgIC8v
IFNpbmNlIHdlIGRvIHRoYXQsIHdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgbm8gbmF0aXZlIGZ1
bmN0aW9uIGlzIGEgZHVwbGljYXRlCi0gICAgICAgIC8vIG9mIGEgdXNlci1kZWZpbmVkIGZ1bmN0
aW9uLgotCi0gICAgICAgIC8vIEZJWE1FOiBBZGQgYmFjayB0aGlzIGFzc2VydCBvbmNlIHdlIGJl
Z2luIHRvIGF1dG8gZ2VuZXJhdGUgdGhlc2UgaW4gdGhlIGNvbXBpbGVyCi0gICAgICAgIC8vIGlu
c3RlYWQgb2YgaGF2aW5nIHRoZW0gaW4gdGhlIHN0ZGxpYgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODYxCi0gICAgICAgIC8vIEFTU0VSVChw
YXNzZXNTdGF0aWNDaGVja3MobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKSkpOwotICAg
ICAgICBpZiAoZnVuY3Rpb25zLmNvbnRhaW5zKER1cGxpY2F0ZUZ1bmN0aW9uS2V5IHsgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5nZXQoKSB9KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hdGl2ZSBmdW5jdGlvbi4iKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0
ZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xD
aGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MDA3ZDMyZTUyZTZhNGUyNzBiMTk4ZDIzNTk1NzI2OTM4YmI3NjBhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
SExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tE
dXBsaWNhdGVGdW5jdGlvbnMoY29uc3QgUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzE1NDczOTQ4NjA0MTZjNWJlNzIyZDI5
ZDY1ZTNiNGVkYzU1NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVy
ZW5jZVR5cGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVz
LmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5o
IgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFJlZmVyZW5jZVR5cGVDaGVja2VyIGZpbmFsIDogcHVi
bGljIFZpc2l0b3IgewotcHVibGljOgotICAgIFJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZh
dWx0OwotICAgIHZpcnR1YWwgflJlZmVyZW5jZVR5cGVDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1w
cml2YXRlOgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja1R5cGUoQVNUOjpVbm5hbWVkVHlw
ZSYgdHlwZSwgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgY29uc3QgY2hhciogZXJyb3IpCi0g
ICAgewotICAgICAgICBhdXRvJiB1bmlmaWVkVHlwZSA9IHR5cGUudW5pZnlOb2RlKCk7Ci0gICAg
ICAgIGlmIChpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVuaWZpZWRUeXBlKSkgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoZXJyb3IsIGNvZGVMb2NhdGlvbikpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZp
ZWRUeXBlKSkKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVu
bmFtZWRUeXBlPih1bmlmaWVkVHlwZSkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpS
ZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hl
Y2tUeXBlKHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSwgcmVmZXJlbmNlVHlwZS5jb2RlTG9j
YXRpb24oKSwgInJlZmVyZW5jZSB0eXBlIGNhbm5vdCBoYXZlIGFub3RoZXIgcmVmZXJlbmNlIHR5
cGUgYXMgYW4gaW5uZXIgdHlwZSIpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJh
eVR5cGUmIGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShhcnJh
eVR5cGUudHlwZSgpLCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCksICJhcnJheSB0eXBlIGNhbm5v
dCBoYXZlIGEgcmVmZXJlbmNlIHR5cGUgYXMgaXRzIGlubmVyIHR5cGUiKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSwg
c3RydWN0dXJlRWxlbWVudC5jb2RlTG9jYXRpb24oKSwgImNhbm5vdCBoYXZlIGEgc3RydWN0dXJl
IGZpZWxkIHdoaWNoIGlzIGEgcmVmZXJlbmNlIHR5cGUiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotRXhwZWN0ZWQ8dm9pZCwg
RXJyb3I+IGNoZWNrUmVmZXJlbmNlVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICAvLyBU
aGlzIHBhc3MgZG9lcyB0aGVzZSB0aGluZ3M6Ci0gICAgLy8gMS4gRGlzYWxsb3cgc3RydWN0cyB0
byBoYXZlIGZpZWxkcyB3aGljaCBhcmUgcmVmZXJlbmNlcy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9t
IGhhdmluZyB0bwotICAgIC8vIGZpZ3VyZSBvdXQgaG93IHRvIGRlZmF1bHQgaW5pdGlhbGl6ZSBz
dWNoIGEgc3RydWN0LiBXZSBjb3VsZCByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgaWYgd2UKLSAg
ICAvLyBkaWQgYW4gYW5hbHlzaXMgb24gd2hpY2ggc3RydWN0cyBjb250YWluIHJlZmVyZW5jZSBm
aWVsZHMsIGFuZCBlbnN1cmUgc3VjaCBzdHJ1Y3QgdmFyaWFibGVzCi0gICAgLy8gYWx3YXlzIGhh
dmUgaW5pdGlhbGl6ZXJzLiBUaGlzIHdvdWxkIGFsc28gcmVxdWlyZSB1cyB0byBjcmVhdGUgY29u
c3RydWN0b3JzIGZvciBzdHJ1Y3RzIHdoaWNoCi0gICAgLy8gaW5pdGlhbGl6ZSBlYWNoIGZpZWxk
LgotICAgIC8vIDIuIFdlIGFsc28gZG8gdGhlIHNhbWUgZm9yIGFycmF5cy4KLSAgICAvLyAzLiBS
ZWZlcmVuY2VzIGNhbiBvbmx5IGJlIG9uZSBsZXZlbCBkZWVwLiBTbyBubyBwb2ludGVycyB0byBw
b2ludGVycy4gTm8gcmVmZXJlbmNlcyB0bwotICAgIC8vIHJlZmVyZW5jZXMsIGV0Yy4gVGhpcyBp
cyB0byBzdXBwb3J0IGxvZ2ljYWwgbW9kZS4KLSAgICBSZWZlcmVuY2VUeXBlQ2hlY2tlciByZWZl
cmVuY2VUeXBlQ2hlY2tlcjsKLSAgICByZWZlcmVuY2VUeXBlQ2hlY2tlci5jaGVja0Vycm9yQW5k
VmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJuIHJlZmVyZW5jZVR5cGVDaGVja2VyLnJlc3VsdCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZlcmVuY2VUeXBl
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTM2MmE4MDQ0MjNiMmEwZmUyODUz
YzM3MzIyZTI2MWU3MTgxNzc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tS
ZWZlcmVuY2VUeXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVj
dGVkPHZvaWQsIEVycm9yPiBjaGVja1JlZmVyZW5jZVR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1
cmVSZWZlcmVuY2VzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjZTZjMDAz
ODdlYzFjYzhlYmFlNTQ0NzdlYjk2MjM5MzljZGJiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hM
U0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUgIldITFNM
QXJyYXlUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKLSNpbmNsdWRlICJXSExTTFZp
c2l0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1w
dWJsaWM6Ci0gICAgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAg
dmlydHVhbCB+VGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRl
OgotICAgIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0
KEFTVDo6QXJyYXlUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkV4cHJlc3Np
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24m
KSBvdmVycmlkZTsKLQotICAgIGJvb2wgY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKEFTVDo6VW5u
YW1lZFR5cGUmKTsKLX07Ci0KLWNsYXNzIFNlYXJjaGVyIDogcHVibGljIFZpc2l0b3IgewotcHVi
bGljOgotICAgIFNlYXJjaGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCB+U2VhcmNoZXIo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGZvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9mb3VuZDsg
fQotCi1wcml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
KTsKLQotICAgIGJvb2wgbV9mb3VuZCB7IGZhbHNlIH07Ci19OwotCi12b2lkIFNlYXJjaGVyOjp2
aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQot
ewotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAgICAg
IG1fZm91bmQgPSB0cnVlOwotfQotCi1ib29sIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6Y29u
dGFpbnNUZXh0dXJlT3JTYW1wbGVyKEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQotewot
ICAgIFNlYXJjaGVyIHNlYXJjaGVyOwotICAgIHNlYXJjaGVyLmNoZWNrRXJyb3JBbmRWaXNpdCh1
bm5hbWVkVHlwZSk7Ci0gICAgcmV0dXJuIHNlYXJjaGVyLmZvdW5kKCk7Ci19Ci0KLXZvaWQgVGV4
dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlw
ZSkKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9y
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKHBv
aW50ZXJUeXBlLmVsZW1lbnRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90
IGhhdmUgYSBwb2ludGVyIHRvIGEgdGV4dHVyZSBvciBzYW1wbGVyLiIsIHBvaW50ZXJUeXBlLmNv
ZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOjp2aXNp
dChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQotewotICAgIFZp
c2l0b3I6OnZpc2l0KGFycmF5UmVmZXJlbmNlVHlwZSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAoY29udGFpbnNUZXh0dXJlT3JTYW1wbGVyKGFycmF5UmVm
ZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKSkKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5v
dCBoYXZlIGFuIGFycmF5IHJlZmVyZW5jZSB0byBhIHRleHR1cmUgb3Igc2FtcGxlci4iLCBhcnJh
eVJlZmVyZW5jZVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBUZXh0dXJlUmVmZXJl
bmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCi17Ci0gICAgVmlz
aXRvcjo6dmlzaXQoYXJyYXlUeXBlKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChjb250YWluc1RleHR1cmVPclNhbXBsZXIoYXJyYXlUeXBlLnR5cGUoKSkp
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgaGF2ZSBhbiBhcnJheSBvZiB0ZXh0dXJl
cyBvciBzYW1wbGVycy4iLCBhcnJheVR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLX0KLQotdm9pZCBU
ZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lv
bikKLXsKLSAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZVJlZmVy
ZW5jZXNDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZp
bml0aW9uKQotewotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSAhPSBQ
YXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5j
dGlvbkRlZmluaXRpb24pOwotfQotCi12b2lkIFRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlcjo6dmlz
aXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikKLXsKLX0KLQotRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IGNoZWNrVGV4dHVyZVJlZmVyZW5jZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAg
ICBUZXh0dXJlUmVmZXJlbmNlc0NoZWNrZXIgdGV4dHVyZVJlZmVyZW5jZXNDaGVja2VyOwotICAg
IHRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbSk7Ci0g
ICAgcmV0dXJuIHRleHR1cmVSZWZlcmVuY2VzQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA2OTQ5NmVlOWQyOWEwYTU4OTY1MzFkZWFkNWY4
MmUzZTc1NmY3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJl
ZmVyZW5jZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gY2hlY2tUZXh0dXJlUmVmZXJlbmNlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdhYTI3YTZjOGE5OGMzZTViZjY3ZmYyOWMyMmFiYTg2MDgzZjJkNGYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE0NTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXSExTTENoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQot
I2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xBcnJh
eVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJX
SExTTERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgot
I2luY2x1ZGUgIldITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgiCi0jaW5jbHVkZSAiV0hMU0xJ
ZlN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMSW5kZXhFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xJbmZlclR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5o
IgotI2luY2x1ZGUgIldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExT
TE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTE1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRleHQuaCIKLSNpbmNsdWRl
ICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVk
ZSAiV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNv
bHZhYmxlVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIgotI2lu
Y2x1ZGUgIldITFNMUmVzb2x2aW5nVHlwZS5oIgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0j
aW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTFRlcm5hcnlF
eHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xX
aGlsZUxvb3AuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQT0RDaGVja2VyIDogcHVibGljIFZpc2l0b3Igewot
cHVibGljOgotICAgIFBPRENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5QT0RD
aGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
VmlzaXRvcjo6dmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24p
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc051
bWJlcigpCi0gICAgICAgICAgICAmJiAhbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzVmVjdG9yKCkK
LSAgICAgICAgICAgICYmICFuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKSkKLSAgICAg
ICAgICAgIHNldEVycm9yKEVycm9yKCJVc2Ugb2YgbmF0aXZlIHR5cGUgaXMgbm90IGEgUE9EIGlu
IGVudHJ5cG9pbnQgc2VtYW50aWMuIiwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNvZGVMb2NhdGlv
bigpKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24m
IHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNpdG9yOjp2
aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
VmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQo
QVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0
b3I6OnZpc2l0KGFycmF5VHlwZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50
ZXJUeXBlJiBwb2ludGVyVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJJbGxlZ2FsIHVzZSBvZiBwb2ludGVyIGluIGVudHJ5cG9pbnQgc2VtYW50aWMuIiwgcG9p
bnRlclR5cGUuY29kZUxvY2F0aW9uKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBzZXRFcnJvcihFcnJvcigiSWxsZWdhbCB1c2Ugb2YgYXJyYXkgcmVmZXJlbmNlIGlu
IGVudHJ5cG9pbnQgc2VtYW50aWMuIiwgYXJyYXlSZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZl
cmVuY2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgfQotfTsKLQotY2xhc3MgRnVuY3Rpb25LZXkg
ewotcHVibGljOgotICAgIEZ1bmN0aW9uS2V5KCkgPSBkZWZhdWx0OwotICAgIEZ1bmN0aW9uS2V5
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICB7Ci0gICAgICAgIG1fY2FzdFJl
dHVyblR5cGUgPSBiaXR3aXNlX2Nhc3Q8QVNUOjpOYW1lZFR5cGUqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKTsKLSAgICB9Ci0KLSAgICBGdW5jdGlvbktleShTdHJpbmcgbmFtZSwgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+IHR5cGVzLCBBU1Q6Ok5h
bWVkVHlwZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyKQotICAgICAgICA6IG1fbmFtZShXVEZN
b3ZlKG5hbWUpKQotICAgICAgICAsIG1fdHlwZXMoV1RGTW92ZSh0eXBlcykpCi0gICAgICAgICwg
bV9jYXN0UmV0dXJuVHlwZShjYXN0UmV0dXJuVHlwZSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNF
bXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9Ci0gICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGUg
PT0gYml0d2lzZV9jYXN0PEFTVDo6TmFtZWRUeXBlKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigx
KSk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgaGFzaCA9IEludEhhc2g8c2l6ZV90Pjo6aGFzaChtX3R5cGVzLnNpemUoKSk7Ci0gICAgICAg
IGhhc2ggXj0gbV9uYW1lLmhhc2goKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3R5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaGFzaCBePSBtX3R5cGVzW2ldLmdldCgp
Lmhhc2goKSArIGk7Ci0KLSAgICAgICAgaWYgKG1fY2FzdFJldHVyblR5cGUpCi0gICAgICAgICAg
ICBoYXNoIF49IFdURjo6UHRySGFzaDxBU1Q6OlR5cGUqPjo6aGFzaCgmbV9jYXN0UmV0dXJuVHlw
ZS0+dW5pZnlOb2RlKCkpOwotCi0gICAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGdW5jdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAobV90eXBlcy5zaXplKCkgIT0gb3RoZXIubV90eXBlcy5zaXplKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3R5cGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMobV90
eXBlc1tpXS5nZXQoKSwgb3RoZXIubV90eXBlc1tpXS5nZXQoKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+
KG1fY2FzdFJldHVyblR5cGUpICE9IHN0YXRpY19jYXN0PGJvb2w+KG90aGVyLm1fY2FzdFJldHVy
blR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICghbV9jYXN0
UmV0dXJuVHlwZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmICgmbV9j
YXN0UmV0dXJuVHlwZS0+dW5pZnlOb2RlKCkgPT0gJm90aGVyLm1fY2FzdFJldHVyblR5cGUtPnVu
aWZ5Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgRnVuY3Rpb25LZXkmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGtleS5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBGdW5jdGlvbktleSYgYSwgY29uc3QgRnVuY3Rpb25LZXkmIGIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgfTsKLQotICAg
IHN0cnVjdCBUcmFpdHMgOiBwdWJsaWMgV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8RnVuY3Rp
b25LZXk+IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rp
b24gPSB0cnVlOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgRnVuY3Rp
b25LZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzRW1wdHlWYWx1ZSgpOyB9Ci0gICAgfTsKLQotcHJp
dmF0ZToKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEFTVDo6VW5uYW1lZFR5cGU+PiBtX3R5cGVzOwotICAgIEFTVDo6TmFtZWRUeXBlKiBtX2Nh
c3RSZXR1cm5UeXBlOwotfTsKLQotc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biByZXNvbHZlV2l0aFJlZmVyZW5jZUNvbXBhcmF0b3IoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBS
ZXNvbHZpbmdUeXBlJiBmaXJzdEFyZ3VtZW50LCBSZXNvbHZpbmdUeXBlJiBzZWNvbmRBcmd1bWVu
dCwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBjb25zdCBib29sIGlzT3Bl
cmF0b3IgPSB0cnVlOwotICAgIGF1dG8gcmV0dXJuVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6
d3JhcChsb2NhdGlvbiwgaW50cmluc2ljcy5ib29sVHlwZSgpKTsKLSAgICBhdXRvIGFyZ3VtZW50
VHlwZSA9IGZpcnN0QXJndW1lbnQudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpV
bm5hbWVkVHlwZT4mIHVubmFtZWRUeXBlKSAtPiBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gewotICAg
ICAgICByZXR1cm4gdW5uYW1lZFR5cGUuY29weVJlZigpOwotICAgIH0sIFsmXShSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAg
ICAgcmV0dXJuIHNlY29uZEFyZ3VtZW50LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oUmVmPEFT
VDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsK
LSAgICAgICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsm
XShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gUmVmPEFTVDo6VW5uYW1lZFR5
cGU+IHsKLSAgICAgICAgICAgIC8vIFdlIGVuY291bnRlcmVkICJudWxsID09IG51bGwiLgotICAg
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTgxNjIgVGhpcyBjYW4gcHJvYmFibHkgYmUgZ2VuZXJhbGl6ZWQsIHVzaW5nIHRoZSAicHJl
ZmVycmVkIHR5cGUiIGluZnJhc3RydWN0dXJlIHVzZWQgYnkgZ2VuZXJpYyBsaXRlcmFscwotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gQVNUOjpU
eXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBpbnRyaW5zaWNzLmludFR5cGUoKSk7Ci0gICAg
ICAgIH0pKTsKLSAgICB9KSk7Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0
ZXJzOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIGFyZ3VtZW50VHlwZS5jb3B5
UmVmKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcGFyYW1ldGVycy5hcHBl
bmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6
OlF1YWxpZmllcnMoKSwgV1RGTW92ZShhcmd1bWVudFR5cGUpLCBTdHJpbmcoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOwotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVyYXRvcj09IiwgU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIs
IGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLX0KLQotZW51bSBj
bGFzcyBBY2NlcHRhYmlsaXR5IHsKLSAgICBZZXMsCi0gICAgTm8KLX07Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFu
dGlhdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29u
c3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBpZiAobmFtZSA9PSAib3BlcmF0b3I9
PSIgJiYgdHlwZXMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgYXV0byBhY2NlcHRhYmlsaXR5ID0g
W10oUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkgLT4gQWNjZXB0YWJpbGl0eSB7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKFJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiYgdW5uYW1lZFR5cGUpIC0+IEFjY2VwdGFiaWxpdHkgewotICAg
ICAgICAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IHVubmFtZWRUeXBlLT51bmlmeU5vZGUoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSAm
JiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5
Tm9kZSkpID8gQWNjZXB0YWJpbGl0eTo6WWVzIDogQWNjZXB0YWJpbGl0eTo6Tm87Ci0gICAgICAg
ICAgICB9LCBbXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gQWNjZXB0YWJp
bGl0eSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFjY2VwdGFiaWxpdHk6Ok5vOwotICAgICAg
ICAgICAgfSkpOwotICAgICAgICB9OwotICAgICAgICBhdXRvIGxlZnRBY2NlcHRhYmlsaXR5ID0g
YWNjZXB0YWJpbGl0eSh0eXBlc1swXS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmlnaHRBY2NlcHRh
YmlsaXR5ID0gYWNjZXB0YWJpbGl0eSh0eXBlc1sxXS5nZXQoKSk7Ci0gICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwotICAgICAgICBpZiAobGVmdEFjY2VwdGFiaWxpdHkgPT0gQWNjZXB0YWJp
bGl0eTo6WWVzICYmIHJpZ2h0QWNjZXB0YWJpbGl0eSA9PSBBY2NlcHRhYmlsaXR5OjpZZXMpIHsK
LSAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlMSA9ICp0eXBlc1swXS5nZXQoKS5nZXRVbm5h
bWVkVHlwZSgpOwotICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUyID0gKnR5cGVzWzFdLmdl
dCgpLmdldFVubmFtZWRUeXBlKCk7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcyh1bm5h
bWVkVHlwZTEsIHVubmFtZWRUeXBlMik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChzdWNjZXNz
KQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihsb2Nh
dGlvbiwgdHlwZXNbMF0uZ2V0KCksIHR5cGVzWzFdLmdldCgpLCBpbnRyaW5zaWNzKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RhdGljIGJvb2wgY2hlY2tTZW1hbnRp
Y3MoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaW5wdXRJdGVtcywgVmVjdG9yPEVudHJ5UG9pbnRJ
dGVtPiYgb3V0cHV0SXRlbXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QVNUOjpFbnRyeVBvaW50VHlw
ZT4mIGVudHJ5UG9pbnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAg
IHsKLSAgICAgICAgYXV0byBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyA9IFsmXShjb25zdCBWZWN0
b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcykgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IGkgKyAxOyBqIDwgaXRlbXMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGl0ZW1zW2ldLnNlbWFudGljID09IGl0ZW1zW2pdLnNlbWFudGljKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAg
ICBpZiAoIWNoZWNrRHVwbGljYXRlU2VtYW50aWNzKGlucHV0SXRlbXMpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWNoZWNrRHVwbGljYXRlU2VtYW50aWNzKG91dHB1
dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIGF1dG8gY2hlY2tTZW1hbnRpY1R5cGVzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50
SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0
ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhY2NlcHRhYmxlID0gV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBBU1Q6OkJhc2VTZW1hbnRpYyYgc2VtYW50aWMpIC0+IGJv
b2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWMuaXNBY2NlcHRhYmxlVHlw
ZSgqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcyk7Ci0gICAgICAgICAgICAgICAgfSksICpp
dGVtLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdGFibGUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9OwotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNUeXBlcyhp
bnB1dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVj
a1NlbWFudGljVHlwZXMob3V0cHV0SXRlbXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZSA9
IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVtcywgQVNUOjpCYXNlU2VtYW50
aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uKSAtPiBib29sIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhY2NlcHRh
YmxlID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBBU1Q6OkJhc2VTZW1h
bnRpYyYgc2VtYW50aWMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vt
YW50aWMuaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihkaXJlY3Rpb24sIGVudHJ5
UG9pbnRUeXBlKTsKLSAgICAgICAgICAgICAgICB9KSwgKml0ZW0uc2VtYW50aWMpOwotICAgICAg
ICAgICAgICAgIGlmICghYWNjZXB0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07
Ci0gICAgICAgIGlmICghY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaW5wdXRJdGVtcywgQVNU
OjpCYXNlU2VtYW50aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0KSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShv
dXRwdXRJdGVtcywgQVNUOjpCYXNlU2VtYW50aWM6OlNoYWRlckl0ZW1EaXJlY3Rpb246Ok91dHB1
dCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgewotICAgICAgICBh
dXRvIGNoZWNrUE9ERGF0YSA9IFsmXShjb25zdCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpdGVt
cykgLT4gYm9vbCB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAg
ICAgICAgICAgICAgIFBPRENoZWNrZXIgcG9kQ2hlY2tlcjsKLSAgICAgICAgICAgICAgICBpZiAo
aXM8QVNUOjpQb2ludGVyVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0gICAgICAgICAgICAgICAg
ICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5
cGU+KCppdGVtLnVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oaXRlbS51bm5hbWVkVHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgIHBvZENoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPigqaXRlbS51bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUo
KSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KGl0ZW0udW5u
YW1lZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICBwb2RDaGVja2VyLmNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4oKml0ZW0udW5uYW1lZFR5cGUpLnR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICBpZiAocG9kQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFjaGVja1BPRERhdGEoaW5wdXRJdGVtcykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hlY2tQT0REYXRhKG91dHB1
dEl0ZW1zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgY2hlY2tPcGVyYXRvck92ZXJsb2FkKGNvbnN0IEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgZW51bSBjbGFz
cyBDaGVja0tpbmQgewotICAgICAgICBJbmRleCwKLSAgICAgICAgRG90Ci0gICAgfTsKLQotICAg
IGlmICghZnVuY3Rpb25EZWZpbml0aW9uLmlzT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5pc0Nhc3QoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yKysi
IHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yLS0iKSB7Ci0gICAgICAg
IHJldHVybiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxCi0gICAg
ICAgICAgICAmJiBtYXRjaGVzKCpmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpWzBdLT50
eXBlKCksIGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLSAgICBpZiAoZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3IrIiB8fCBmdW5jdGlvbkRlZmluaXRpb24u
bmFtZSgpID09ICJvcGVyYXRvci0iKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25EZWZpbml0aW9u
LnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSB8fCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKSA9PSAyOwotICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJv
cGVyYXRvcioiCi0gICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJh
dG9yLyIKLSAgICAgICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3Il
IgotICAgICAgICB8fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvciYiCi0g
ICAgICAgIHx8IGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfCIKLSAgICAg
ICAgfHwgZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSA9PSAib3BlcmF0b3JeIgotICAgICAgICB8
fCBmdW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcjw8IgotICAgICAgICB8fCBm
dW5jdGlvbkRlZmluaXRpb24ubmFtZSgpID09ICJvcGVyYXRvcj4+IikKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDI7Ci0gICAgaWYgKGZ1
bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkgPT0gIm9wZXJhdG9yfiIpCi0gICAgICAgIHJldHVybiBm
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotY2xhc3MgQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAg
ICBDaGVja2VyKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIFByb2dyYW0mIHByb2dyYW0p
Ci0gICAgICAgIDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9wcm9ncmFt
KHByb2dyYW0pCi0gICAgewotICAgICAgICBhdXRvIGFkZEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlw
ZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLmlz
Q2FzdCgpICYmIGlzPEFTVDo6TmFtZWRUeXBlPihmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCkp
KQotICAgICAgICAgICAgICAgIGNhc3RSZXR1cm5UeXBlID0gJmRvd25jYXN0PEFTVDo6TmFtZWRU
eXBlPihmdW5jdGlvbi50eXBlKCkudW5pZnlOb2RlKCkpOwotCi0gICAgICAgICAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OlVubmFtZWRUeXBlPj4gdHlwZXM7Ci0gICAgICAg
ICAgICB0eXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5z
aXplKCkpOwotCi0gICAgICAgICAgICBmb3IgKGF1dG8mIHBhcmFtIDogZnVuY3Rpb24ucGFyYW1l
dGVycygpKQotICAgICAgICAgICAgICAgIHR5cGVzLnVuY2hlY2tlZEFwcGVuZChub3JtYWxpemVk
VHlwZUZvckZ1bmN0aW9uS2V5KCpwYXJhbS0+dHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9mdW5jdGlvbnMuYWRkKEZ1bmN0aW9uS2V5IHsgZnVuY3Rpb24ubmFtZSgp
LCBXVEZNb3ZlKHR5cGVzKSwgY2FzdFJldHVyblR5cGUgfSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmdW5jdGlvbik7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRp
b25zKCkpCi0gICAgICAgICAgICBhZGRGdW5jdGlvbihmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAg
IGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX3Byb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKSkKLSAgICAgICAgICAgIGFkZEZ1bmN0aW9uKGZ1bmN0aW9uLmdldCgpKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIH5DaGVja2VyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCB2aXNpdChQcm9n
cmFtJikgb3ZlcnJpZGU7Ci0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYXNzaWduVHlwZXMo
KTsKLQotcHJpdmF0ZToKLSAgICBib29sIGNoZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbiYpOwotICAgIGJvb2wgaXNCb29sVHlwZShSZXNvbHZpbmdUeXBlJik7Ci0g
ICAgc3RydWN0IFJlY3Vyc2VJbmZvIHsKLSAgICAgICAgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5n
VHlwZTsKLSAgICAgICAgY29uc3QgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbjsK
LSAgICB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJbmZv
KEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAg
c3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4gZ2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29s
IHJlcXVpcmVzTGVmdFZhbHVlID0gZmFsc2UpOwotICAgIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBl
PiByZWN1cnNlQW5kV3JhcEJhc2VUeXBlKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJik7
Ci0gICAgYm9vbCByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYpOwot
ICAgIHZvaWQgYXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYsIFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBhc3NpZ25Db25jcmV0
ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiwgQVNUOjpOYW1lZFR5cGUmLCBBU1Q6OlR5cGVBbm5vdGF0
aW9uKTsKLSAgICB2b2lkIGFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmUHRyPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPiwgQVNUOjpUeXBlQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBmb3J3
YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZXNvbHZpbmdUeXBlJiwgQVNUOjpUeXBlQW5ub3Rh
dGlvbik7Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpNYWtlUG9pbnRlckV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQo
QVNUOjpEb3RFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4
RXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZp
c2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRM
aXRlcmFsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9X
aGlsZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7Ci0KLSAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24qIHJlc29sdmVGdW5jdGlvbihWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNv
bHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiwgQVNU
OjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlID0gbnVsbHB0cik7Ci0KLSAgICBBU1Q6OlVubmFt
ZWRUeXBlJiB3cmFwcGVkRmxvYXRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVk
RmxvYXRUeXBlKQotICAgICAgICAgICAgbV93cmFwcGVkRmxvYXRUeXBlID0gQVNUOjpUeXBlUmVm
ZXJlbmNlOjp3cmFwKHsgfSwgbV9pbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICAgICAgcmV0
dXJuICptX3dyYXBwZWRGbG9hdFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpVbm5hbWVkVHlwZSYg
d3JhcHBlZFVpbnRUeXBlKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93cmFwcGVkVWludFR5cGUp
Ci0gICAgICAgICAgICBtX3dyYXBwZWRVaW50VHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cCh7IH0sIG1faW50cmluc2ljcy51aW50VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICptX3dyYXBw
ZWRVaW50VHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlJiBub3JtYWxpemVkVHlw
ZUZvckZ1bmN0aW9uS2V5KEFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpCi0gICAgewotICAgICAgICBh
dXRvKiB1bmlmeU5vZGUgPSAmdHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgaWYgKHVuaWZ5Tm9k
ZSA9PSAmbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkgfHwgdW5pZnlOb2RlID09ICZtX2ludHJpbnNp
Y3MuaW50VHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRGbG9hdFR5cGUoKTsKLQot
ICAgICAgICByZXR1cm4gdHlwZTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8QVNUOjpUeXBlUmVmZXJl
bmNlPiBtX3dyYXBwZWRGbG9hdFR5cGU7Ci0gICAgUmVmUHRyPEFTVDo6VHlwZVJlZmVyZW5jZT4g
bV93cmFwcGVkVWludFR5cGU7Ci0gICAgSGFzaE1hcDxBU1Q6OkV4cHJlc3Npb24qLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVzb2x2aW5nVHlwZT4+IG1fdHlwZU1hcDsKLSAgICBIYXNoU2V0PFN0cmluZz4g
bV92ZXJ0ZXhFbnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoU2V0PFN0
cmluZz4gbV9mcmFnbWVudEVudHJ5UG9pbnRzW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2NvbXB1dGVFbnRyeVBvaW50c1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsK
LSAgICBjb25zdCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgUHJvZ3JhbSYgbV9wcm9n
cmFtOwotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiBtX2N1cnJlbnRGdW5jdGlvbiB7IG51
bGxwdHIgfTsKLSAgICBIYXNoTWFwPEZ1bmN0aW9uS2V5LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiwgRnVuY3Rpb25LZXk6Okhhc2gs
IEZ1bmN0aW9uS2V5OjpUcmFpdHM+IG1fZnVuY3Rpb25zOwotICAgIEFTVDo6TmFtZVNwYWNlIG1f
Y3VycmVudE5hbWVTcGFjZSB7IEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkgfTsKLSAg
ICBib29sIG1faXNWaXNpdGluZ1BhcmFtZXRlcnMgeyBmYWxzZSB9OwotfTsKLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZXNlIHZpc2l0aW5nIGZ1
bmN0aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBkb24ndCB1c2UgZm9y
ZWFjaCBzeW50YXguCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZp
bml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3Jh
bS50eXBlRGVmaW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9n
cmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmVudW1lcmF0aW9uRGVm
aW5pdGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2
ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMo
KVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChw
cm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotfQotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gQ2hlY2tlcjo6YXNzaWduVHlwZXMoKQotewotICAgIGZvciAoYXV0byYga2V5
VmFsdWVQYWlyIDogbV90eXBlTWFwKSB7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IGtleVZhbHVl
UGFpci52YWx1ZS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JiB1bm5hbWVkVHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBrZXlWYWx1ZVBhaXIua2V5
LT5zZXRUeXBlKHVubmFtZWRUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29s
dmFibGVUeXBlUmVmZXJlbmNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIGlmICghcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkubWF5YmVSZXNvbHZlZFR5cGUoKSkgewot
ICAgICAgICAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4oY29tbWl0KHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpKSkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleVZhbHVlUGFpci5rZXkt
PnNldFR5cGUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2
ZWRUeXBlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pKTsKLSAgICAg
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
KCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUgdHlwZSBvZiBhIGNvbnN0YW50LiIpKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4geyB9OwotfQotCi1ib29sIENoZWNrZXI6OmNoZWNrU2hhZGVyVHlwZShjb25z
dCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGF1
dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAg
ICBzd2l0Y2ggKCpmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKSkgewotICAgIGNh
c2UgQVNUOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obV92ZXJ0ZXhFbnRyeVBvaW50c1tpbmRleF0uYWRkKGZ1bmN0aW9uRGVmaW5pdGlv
bi5uYW1lKCkpKTsKLSAgICBjYXNlIEFTVDo6RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9mcmFnbWVudEVudHJ5UG9pbnRzW2luZGV4
XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwotICAgIGNhc2UgQVNUOjpFbnRyeVBv
aW50VHlwZTo6Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29t
cHV0ZUVudHJ5UG9pbnRzW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwot
ICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgbV9pc1Zpc2l0aW5nUGFyYW1ldGVycyA9IHRy
dWU7Ci0gICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgbV9pc1Zp
c2l0aW5nUGFyYW1ldGVycyA9IGZhbHNlOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCi17Ci0gICAgbV9jdXJyZW50
TmFtZVNwYWNlID0gZnVuY3Rpb25EZWZpbml0aW9uLm5hbWVTcGFjZSgpOwotICAgIG1fY3VycmVu
dEZ1bmN0aW9uID0gJmZ1bmN0aW9uRGVmaW5pdGlvbjsKLSAgICBpZiAoZnVuY3Rpb25EZWZpbml0
aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICAgICAgaWYgKCFjaGVja1NoYWRlclR5cGUoZnVu
Y3Rpb25EZWZpbml0aW9uKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkR1cGxpY2F0
ZSBlbnRyeXBvaW50IGZ1bmN0aW9uLiIsIGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gZW50cnlQ
b2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKG1faW50cmluc2ljcywgZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKGVudHJ5UG9pbnRJdGVtcy5lcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBpZiAoIWNoZWNrU2VtYW50aWNzKGVudHJ5UG9pbnRJdGVtcy0+
aW5wdXRzLCBlbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRy
eVBvaW50VHlwZSgpLCBtX2ludHJpbnNpY3MpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJv
cigiQmFkIHNlbWFudGljcyBmb3IgZW50cnlwb2ludC4iLCBmdW5jdGlvbkRlZmluaXRpb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBpZiAoIWNoZWNrT3BlcmF0b3JPdmVybG9hZChmdW5jdGlvbkRlZmluaXRpb24pKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJPcGVyYXRvciBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBzaWdu
YXR1cmUuIiwgZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwot
fQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KFJlc29s
dmluZ1R5cGUmIGxlZnQsIFJlc29sdmluZ1R5cGUmIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0
LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgbGVmdCkg
LT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJpZ2h0LnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmlnaHQpIC0+IFJl
ZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlcyhsZWZ0LCBy
aWdodCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQuY29weVJlZigpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2U+JiByaWdodCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAg
ICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChsZWZ0LCByaWdodC0+cmVzb2x2YWJsZVR5cGUoKSk7
Ci0gICAgICAgIH0pKTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
PiYgbGVmdCkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgcmV0dXJuIHJp
Z2h0LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmln
aHQpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0
Y2hBbmRDb21taXQocmlnaHQsIGxlZnQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9LCBb
Jl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmlnaHQpIC0+IFJlZlB0cjxBU1Q6
OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21taXQobGVmdC0+
cmVzb2x2YWJsZVR5cGUoKSwgcmlnaHQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9KSk7
Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5k
Q29tbWl0KFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlKQotewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgLT4gUmVmUHRy
PEFTVDo6VW5uYW1lZFR5cGU+IHsKLSAgICAgICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIHJl
c29sdmluZ1R5cGUpKQotICAgICAgICAgICAgcmV0dXJuICZ1bm5hbWVkVHlwZTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZT4mIHJlc29sdmluZ1R5cGUpIC0+IFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAg
IHJldHVybiBtYXRjaEFuZENvbW1pdCh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZS0+cmVzb2x2
YWJsZVR5cGUoKSk7Ci0gICAgfSkpOwotfQotCi1zdGF0aWMgYm9vbCBtYXRjaEFuZENvbW1pdChS
ZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQot
ewotICAgIHJldHVybiByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzb2x2aW5nVHlwZSkgewotICAgICAgICBpZiAobWF0Y2hl
cyhyZXNvbHZpbmdUeXBlLCBuYW1lZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiYgcmVzb2x2aW5nVHlwZSkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiBtYXRjaEFu
ZENvbW1pdChuYW1lZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFibGVUeXBlKCkpOwotICAg
IH0pKTsKLX0KLQotc3RhdGljIFJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoUmVzb2x2
aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNp
dChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBl
KSAtPiBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gewotICAgICAgICByZXR1cm4gdW5uYW1lZFR5
cGUuY29weVJlZigpOwotICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IHsK
LSAgICAgICAgaWYgKCFyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKS5t
YXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdChyZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmcmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0gICAg
fSkpOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIENoZWNrZXI6OnJlc29sdmVGdW5j
dGlvbihWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQVNUOjpOYW1lZFR5
cGUqIGNhc3RSZXR1cm5UeXBlKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEFTVDo6VW5uYW1lZFR5cGU+PiB1bm5hbWVkVHlwZXM7Ci0gICAgdW5uYW1lZFR5cGVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsKLQotICAgIGZvciAoYXV0byByZXNvbHZp
bmdUeXBlIDogdHlwZXMpIHsKLSAgICAgICAgQVNUOjpVbm5hbWVkVHlwZSogdHlwZSA9IHJlc29s
dmluZ1R5cGUuZ2V0KCkudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpVbm5hbWVkVHlwZSogewotICAgICAgICAgICAg
cmV0dXJuIHVubmFtZWRUeXBlLnB0cigpOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IEFTVDo6VW5uYW1l
ZFR5cGUqIHsKLSAgICAgICAgICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2
YWJsZVR5cGUoKS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAm
cmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7
Ci0KLSAgICAgICAgICAgIGlmIChyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5
cGUoKS5pc0Zsb2F0TGl0ZXJhbFR5cGUoKQotICAgICAgICAgICAgICAgIHx8IHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmlzSW50ZWdlckxpdGVyYWxUeXBlKCkKLSAg
ICAgICAgICAgICAgICB8fCByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUo
KS5pc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICZ3cmFwcGVkRmxvYXRUeXBlKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb21taXQocmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkpLmdldCgpOwotICAgICAgICB9KSk7
Ci0KLSAgICAgICAgaWYgKCF0eXBlKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ291
bGQgbm90IHJlc29sdmUgdGhlIHR5cGUgb2YgYSBjb25zdGFudC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHVubmFtZWRUeXBlcy51bmNoZWNr
ZWRBcHBlbmQobm9ybWFsaXplZFR5cGVGb3JGdW5jdGlvbktleSgqdHlwZSkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgYXV0byBpdGVyID0gbV9mdW5jdGlvbnMuZmluZChGdW5jdGlvbktleSB7
IG5hbWUsIFdURk1vdmUodW5uYW1lZFR5cGVzKSwgY2FzdFJldHVyblR5cGUgfSk7Ci0gICAgICAg
IGlmIChpdGVyICE9IG1fZnVuY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAoQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKGl0
ZXItPnZhbHVlLCB0eXBlcywgY2FzdFJldHVyblR5cGUsIG1fY3VycmVudE5hbWVTcGFjZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGF1dG8gbmV3RnVuY3Rpb24gPSByZXNvbHZlQnlJbnN0YW50aWF0aW9uKG5hbWUsIGxvY2F0
aW9uLCB0eXBlcywgbV9pbnRyaW5zaWNzKSkgewotICAgICAgICBtX3Byb2dyYW0uYXBwZW5kKFdU
Rk1vdmUoKm5ld0Z1bmN0aW9uKSk7Ci0gICAgICAgIHJldHVybiAmbV9wcm9ncmFtLm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zKCkubGFzdCgpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRy
OwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBl
bnVtZXJhdGlvbkRlZmluaXRpb24pCi17Ci0gICAgYm9vbCBpc1NpZ25lZDsKLSAgICBhdXRvKiBi
YXNlVHlwZSA9IChbJl0oKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0gICAg
ICAgIGF1dG8mIGJhc2VUeXBlID0gZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5v
ZGUoKTsKLSAgICAgICAgaWYgKCFpczxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0
PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIGlmICghbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmlzSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
aXNTaWduZWQgPSBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNTaWduZWQoKTsKLSAgICAgICAgcmV0
dXJuICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSkoKTsKLSAgICBpZiAoIWJhc2VUeXBl
KSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJJbnZhbGlkIGJhc2UgdHlwZSBmb3IgZW51bS4i
LCBlbnVtZXJhdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGF1dG8gZW51bWVyYXRpb25NZW1iZXJzID0gZW51bWVyYXRpb25EZWZp
bml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpOwotCi0gICAgZm9yIChhdXRvJiBtZW1iZXIgOiBl
bnVtZXJhdGlvbk1lbWJlcnMpIHsKLSAgICAgICAgaW50NjRfdCB2YWx1ZSA9IG1lbWJlci5nZXQo
KS52YWx1ZSgpOwotICAgICAgICBpZiAoaXNTaWduZWQpIHsKLSAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24gdmFs
dWUuIiwgbWVtYmVyLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpICE9IHZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgZW51bWVyYXRpb24g
dmFsdWUuIiwgbWVtYmVyLmdldCgpLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
YXV0byB2YWx1ZSA9IGVudW1lcmF0aW9uTWVtYmVyc1tpXS5nZXQoKS52YWx1ZSgpOwotICAgICAg
ICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBlbnVtZXJhdGlvbk1lbWJlcnMuc2l6ZSgpOyAr
K2opIHsKLSAgICAgICAgICAgIGF1dG8gb3RoZXJWYWx1ZSA9IGVudW1lcmF0aW9uTWVtYmVyc1tq
XS5nZXQoKS52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IG90aGVyVmFsdWUpIHsK
LSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRl
IGVudW1lcmF0aW9uIHZhbHVlcy4iLCBlbnVtZXJhdGlvbk1lbWJlcnNbal0uZ2V0KCkuY29kZUxv
Y2F0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBib29sIGZvdW5kWmVybyA9IGZhbHNlOwotICAgIGZvciAoYXV0
byYgbWVtYmVyIDogZW51bWVyYXRpb25NZW1iZXJzKSB7Ci0gICAgICAgIGlmICghbWVtYmVyLmdl
dCgpLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGZvdW5kWmVybyA9IHRydWU7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWZvdW5kWmVybykgewotICAgICAg
ICBzZXRFcnJvcihFcnJvcigiZW51bSBkZWZpbml0aW9uIG11c3QgY29udGFpbiBhIHplcm8gdmFs
dWUuIiwgZW51bWVyYXRpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNl
JiB0eXBlUmVmZXJlbmNlKQotewotICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLm1heWJlUmVzb2x2
ZWRUeXBlKCkpOwotCi0gICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNl
LnR5cGVBcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVu
dCk7Ci19Ci0KLWF1dG8gQ2hlY2tlcjo6cmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9u
JiBleHByZXNzaW9uLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPFJl
Y3Vyc2VJbmZvPgotewotICAgIFZpc2l0b3I6OnZpc2l0KGV4cHJlc3Npb24pOwotICAgIGlmICho
YXNFcnJvcigpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBnZXRJ
bmZvKGV4cHJlc3Npb24sIHJlcXVpcmVzTGVmdFZhbHVlKTsKLX0KLQotYXV0byBDaGVja2VyOjpn
ZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1
ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KLXsKLSAgICBhdXRvIHR5cGVJdGVyYXRv
ciA9IG1fdHlwZU1hcC5maW5kKCZleHByZXNzaW9uKTsKLSAgICBBU1NFUlQodHlwZUl0ZXJhdG9y
ICE9IG1fdHlwZU1hcC5lbmQoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiB0eXBlQW5ub3RhdGlvbiA9
IGV4cHJlc3Npb24udHlwZUFubm90YXRpb24oKTsKLSAgICBpZiAocmVxdWlyZXNMZWZ0VmFsdWUg
JiYgdHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJy
b3IoIlVuZXhwZWN0ZWQgcnZhbHVlLiIsIGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgcmV0dXJuIHt7ICp0eXBlSXRl
cmF0b3ItPnZhbHVlLCB0eXBlQW5ub3RhdGlvbiB9fTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCi17Ci0gICAg
Ly8gUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbnMgYXJlIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGFu
b255bW91cyB2YXJpYWJsZXMgZXhpc3QsCi0gICAgLy8gYW5kIHRoYXQgZG9lc24ndCByZWN1cnNl
IG9uIHRoZSBhbm9ueW1vdXMgdmFyaWFibGVzLCBzbyB3ZSBjYW4gYXNzdW1lIHRoZSB2YXJpYWJs
ZSBoYXMgYSB0eXBlLgotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlv
bi50eXBlKCkpOwotICAgIGlmIChtYXRjaGVzKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSwg
bV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJWYXJp
YWJsZXMgY2FuJ3QgaGF2ZSB2b2lkIHR5cGUuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2YXJpYWJsZURlY2xh
cmF0aW9uLmluaXRpYWxpemVyKCkpIHsKLSAgICAgICAgYXV0byYgbGhzVHlwZSA9ICp2YXJpYWJs
ZURlY2xhcmF0aW9uLnR5cGUoKTsKLSAgICAgICAgYXV0byBpbml0aWFsaXplckluZm8gPSByZWN1
cnNlQW5kR2V0SW5mbygqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAg
ICAgaWYgKCFpbml0aWFsaXplckluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
ICghbWF0Y2hBbmRDb21taXQoaW5pdGlhbGl6ZXJJbmZvLT5yZXNvbHZpbmdUeXBlLCBsaHNUeXBl
KSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkRlY2xhcmVkIHZhcmlhYmxlIHR5cGUg
ZG9lcyBub3QgbWF0Y2ggaXRzIGluaXRpYWxpemVyJ3MgdHlwZS4iLCB2YXJpYWJsZURlY2xhcmF0
aW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKCFtX2lzVmlzaXRpbmdQYXJhbWV0ZXJzICYmIGlzPEFTVDo6UmVmZXJlbmNl
VHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVuaWZ5Tm9kZSgpKSkgewotICAgICAg
ICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4odmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCktPnVu
aWZ5Tm9kZSgpKSkKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJNdXN0IGFzc2lnbiB0byBh
IHBvaW50ZXIgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gaXRzIGluaXRpYWxpemVyLiIsIHZhcmlh
YmxlRGVjbGFyYXRpb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHZhcmlhYmxlRGVjbGFyYXRp
b24udHlwZSgpLT51bmlmeU5vZGUoKSkpOwotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIk11
c3QgYXNzaWduIHRvIGFuIGFycmF5IHJlZmVyZW5jZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBp
dHMgaW5pdGlhbGl6ZXIuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNz
aWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6VW5u
YW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9u
ID0gQVNUOjpSaWdodFZhbHVlKCkpCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAu
YWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1l
ZFR5cGUpKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90
YXRpb24pKTsKLX0KLQotdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uLCBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSwgQVNUOjpUeXBlQW5ub3Rh
dGlvbiBhbm5vdGF0aW9uKQotewotICAgIGF1dG8gdW5uYW1lZFR5cGUgPSBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAodHlwZS5jb2RlTG9jYXRpb24oKSwgdHlwZSk7Ci0gICAgVmlzaXRvcjo6dmlz
aXQodW5uYW1lZFR5cGUpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShleHByZXNzaW9uLCBXVEZN
b3ZlKHVubmFtZWRUeXBlKSwgYW5ub3RhdGlvbik7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6YXNzaWdu
VHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlw
ZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90
YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwotfQotCi12b2lkIENoZWNrZXI6OmZvcndh
cmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2
aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRW
YWx1ZSgpKQotewotICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0o
UmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJl
c3VsdC5jb3B5UmVmKCkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKLSAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgfSkpOwotICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBl
QW5ub3RhdGlvbikpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4
cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQotewotICAgIGF1dG8gbGVmdEluZm8gPSBy
ZWN1cnNlQW5kR2V0SW5mbyhhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCksIHRydWUpOwotICAg
IGlmICghbGVmdEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmlnaHRJbmZvID0g
cmVjdXJzZUFuZEdldEluZm8oYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci0gICAgaWYg
KCFyaWdodEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1h
dGNoQW5kQ29tbWl0KGxlZnRJbmZvLT5yZXNvbHZpbmdUeXBlLCByaWdodEluZm8tPnJlc29sdmlu
Z1R5cGUpOwotICAgIGlmICghcmVzdWx0VHlwZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigi
TGVmdCBoYW5kIHNpZGUgb2YgYXNzaWdubWVudCBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0
aGUgcmlnaHQgaGFuZCBzaWRlLiIsIGFzc2lnbm1lbnRFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25jcmV0ZVR5cGUoYXNz
aWdubWVudEV4cHJlc3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24pCi17Ci0gICAgYXV0byBsZWZ0VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFs
dWVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
Lm9sZFZhbHVlKCkuc2V0VHlwZSgqbGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZS5nZXRVbm5h
bWVkVHlwZSgpKTsKLQotICAgIGF1dG8gbmV3VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8o
cmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgaWYg
KCFuZXdWYWx1ZUluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChSZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gbWF0Y2hlZFR5cGUgPSBtYXRjaEFuZENvbW1pdChsZWZ0VmFsdWVJbmZvLT5y
ZXNvbHZpbmdUeXBlLCBuZXdWYWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpKQotICAgICAgICByZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkuc2V0VHlwZSgqbWF0Y2hlZFR5cGUpOwot
ICAgIGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQmFzZSBvZiB0aGUgcmVhZC1tb2Rp
Znktd3JpdGUgZXhwcmVzc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgbmV3IHZh
bHVlLiIsIHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gcmVzdWx0SW5mbyA9IHJlY3Vyc2VBbmRHZXRJ
bmZvKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLSAgICBp
ZiAoIXJlc3VsdEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvcndhcmRUeXBlKHJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24sIHJlc3VsdEluZm8tPnJlc29sdmluZ1R5cGUsIEFTVDo6Umln
aHRWYWx1ZSgpKTsKLX0KLQotc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIGdldFVubmFtZWRUeXBl
KFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpCi17Ci0gICAgcmV0dXJuIHJlc29sdmluZ1R5
cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHR5cGUp
IC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsKLSAgICAgICAgcmV0dXJuIHR5cGUucHRyKCk7Ci0gICAg
fSwgW10oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgdHlwZSkgLT4gQVNUOjpVbm5h
bWVkVHlwZSogewotICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHR5cGUgaXNuJ3QgY29tbWl0dGVk
LCBzaG91bGQgd2UganVzdCBjb21taXQoKSBpdCBub3c/Ci0gICAgICAgIHJldHVybiB0eXBlLT5y
ZXNvbHZhYmxlVHlwZSgpLm1heWJlUmVzb2x2ZWRUeXBlKCk7Ci0gICAgfSkpOwotfQotCi12b2lk
IENoZWNrZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4
cHJlc3Npb24pCi17Ci0gICAgYXV0byBwb2ludGVySW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRl
cmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotICAgIGlmICghcG9pbnRlckluZm8pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHVubmFtZWRUeXBlID0gZ2V0VW5uYW1lZFR5cGUo
cG9pbnRlckluZm8tPnJlc29sdmluZ1R5cGUpOwotCi0gICAgYXV0byogcG9pbnRlclR5cGUgPSAo
WyZdKEFTVDo6VW5uYW1lZFR5cGUqIHVubmFtZWRUeXBlKSAtPiBBU1Q6OlBvaW50ZXJUeXBlKiB7
Ci0gICAgICAgIGlmICghdW5uYW1lZFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gdW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAg
ICAgICBpZiAoIWlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byYgdW5uYW1lZFVuaWZ5VHlwZSA9IGRvd25jYXN0
PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghaXM8QVNUOjpQb2lu
dGVyVHlwZT4odW5uYW1lZFVuaWZ5VHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVW5pZnlU
eXBlKTsKLSAgICB9KSh1bm5hbWVkVHlwZSk7Ci0gICAgaWYgKCFwb2ludGVyVHlwZSkgewotICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IGRlcmVmZXJlbmNlIGEgbm9uLXBvaW50ZXIgdHlw
ZS4iLCBkZXJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Np
b24sIHBvaW50ZXJUeXBlLT5lbGVtZW50VHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IHBvaW50ZXJU
eXBlLT5hZGRyZXNzU3BhY2UoKSB9KTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQotewotICAgIGF1dG8g
bGVmdFZhbHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5s
ZWZ0VmFsdWUoKSwgdHJ1ZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVJbmZvKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5u
b3RhdGlvbi5sZWZ0QWRkcmVzc1NwYWNlKCk7Ci0gICAgaWYgKCFsZWZ0QWRkcmVzc1NwYWNlKSB7
Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhIG5v
biBsdmFsdWUuIiwgbWFrZVBvaW50ZXJFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBsZWZ0VmFsdWVUeXBlID0gZ2V0VW5uYW1l
ZFR5cGUobGVmdFZhbHVlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAgaWYgKCFsZWZ0VmFsdWVU
eXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBv
ZiBhIHZhbHVlIHdpdGhvdXQgYSB0eXBlLiIsIG1ha2VQb2ludGVyRXhwcmVzc2lvbi5jb2RlTG9j
YXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXNzaWduQ29uY3JldGVU
eXBlKG1ha2VQb2ludGVyRXhwcmVzc2lvbiwgQVNUOjpQb2ludGVyVHlwZTo6Y3JlYXRlKG1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgKmxlZnRBZGRyZXNzU3BhY2UsICpsZWZ0
VmFsdWVUeXBlKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQotewotICAgIGF1
dG8gbGVmdFZhbHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKG1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24ubGVmdFZhbHVlKCkpOwotICAgIGlmICghbGVmdFZhbHVlSW5mbykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byogbGVmdFZhbHVlVHlwZSA9IGdldFVubmFtZWRUeXBlKGxlZnRW
YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghbGVmdFZhbHVlVHlwZSkgewotICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4gYXJyYXkgcmVmZXJlbmNlIG9mIGEg
dmFsdWUgd2l0aG91dCBhIHR5cGUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2Rl
TG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdW5pZnlO
b2RlID0gbGVmdFZhbHVlVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6VW5uYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKLSAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2Fz
dDxBU1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpOwotICAgICAgICBpZiAoaXM8QVNUOjpQb2lu
dGVyVHlwZT4odW5uYW1lZFR5cGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9
IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpLCBwb2ludGVyVHlwZS5lbGVtZW50
VHlwZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRv
IGxlZnRBZGRyZXNzU3BhY2UgPSBsZWZ0VmFsdWVJbmZvLT50eXBlQW5ub3RhdGlvbi5sZWZ0QWRk
cmVzc1NwYWNlKCk7Ci0gICAgICAgIGlmICghbGVmdEFkZHJlc3NTcGFjZSkgewotICAgICAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBtYWtlIGFuIGFycmF5IHJlZmVyZW5jZSBmcm9tIGEg
bm9uLWxlZnQtdmFsdWUuIiwgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5jb2RlTG9jYXRp
b24oKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlz
PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGFycmF5
VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2
MyBTYXZlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMuCi0gICAgICAgICAgICBhc3NpZ25Db25jcmV0
ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpLCAq
bGVmdEFkZHJlc3NTcGFjZSwgYXJyYXlUeXBlLnR5cGUoKSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXV0byBsZWZ0QWRkcmVzc1NwYWNlID0gbGVmdFZh
bHVlSW5mby0+dHlwZUFubm90YXRpb24ubGVmdEFkZHJlc3NTcGFjZSgpOwotICAgIGlmICghbGVm
dEFkZHJlc3NTcGFjZSkgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IG1ha2UgYW4g
YXJyYXkgcmVmZXJlbmNlIGZyb20gYSBub24tbGVmdC12YWx1ZS4iLCBtYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhc3NpZ25Db25jcmV0ZVR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgQVNU
OjpBcnJheVJlZmVyZW5jZVR5cGU6OmNyZWF0ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmNvZGVMb2NhdGlvbigpLCAqbGVmdEFkZHJlc3NTcGFjZSwgKmxlZnRWYWx1ZVR5cGUpKTsKLX0K
LQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24p
Ci17Ci0gICAgYXV0byBiYXNlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGRvdEV4cHJlc3Npb24u
YmFzZSgpKTsKLSAgICBpZiAoIWJhc2VJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
IGJhc2VVbm5hbWVkVHlwZSA9IGNvbW1pdChiYXNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAg
aWYgKCFiYXNlVW5uYW1lZFR5cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBy
ZXNvbHZlIHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9mIGEgZG90IGV4cHJlc3Npb24uIiwgZG90RXhw
cmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
YXV0byYgdHlwZSA9IGJhc2VVbm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFT
VDo6U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYgc3RydWN0dXJl
ID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsgICAgCi0gICAgICAg
IGlmIChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqIGVsZW1lbnQgPSBzdHJ1Y3R1cmUuZmluZChkb3RF
eHByZXNzaW9uLmZpZWxkTmFtZSgpKSkKLSAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShk
b3RFeHByZXNzaW9uLCBlbGVtZW50LT50eXBlKCksIGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbik7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygi
RmllbGQgbmFtZTogJyIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCksICInIGRvZXMgbm90IGV4
aXN0IG9uIHN0cnVjdHVyZTogIiwgc3RydWN0dXJlLm5hbWUoKSksIGRvdEV4cHJlc3Npb24uY29k
ZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAoZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSA9PSAibGVuZ3RoIikgewotICAgICAgICBp
ZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpCi0gICAgICAgICAgICB8fCBpczxB
U1Q6OkFycmF5VHlwZT4odHlwZSkKLSAgICAgICAgICAgIHx8IChpczxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4odHlwZSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHR5cGUpLmlzVmVjdG9yKCkpKSB7Ci0gICAgICAgICAgICBhc3NpZ25Db25jcmV0ZVR5cGUoZG90
RXhwcmVzc2lvbiwgd3JhcHBlZFVpbnRUeXBlKCksIEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCIubGVuZ3RoIGZpZWxkIGlz
IG9ubHkgYXZhaWxhYmxlIG9uIGFycmF5cywgYXJyYXkgcmVmZXJlbmNlcywgb3IgdmVjdG9ycy4i
LCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0
eXBlKSAmJiBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkuaXNWZWN0
b3IoKSkgewotICAgICAgICBpZiAoIW1fcHJvZ3JhbS5pc1ZhbGlkVmVjdG9yUHJvcGVydHkoZG90
RXhwcmVzc2lvbi5maWVsZE5hbWUoKSkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKG1h
a2VTdHJpbmcoIicuIiwgZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSwgIicgaXMgbm90IGEgdmFs
aWQgcHJvcGVydHkgb24gYSB2ZWN0b3IuIiksIGRvdEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdHlwZUFu
bm90YXRpb24gPSBiYXNlSW5mby0+dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkgPyBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHsgQVNUOjpSaWdodFZhbHVlKCkgfSA6IEFTVDo6VHlwZUFubm90YXRp
b24geyBBU1Q6OkFic3RyYWN0TGVmdFZhbHVlKCkgfTsKLQotICAgICAgICBzaXplX3QgZmllbGRM
ZW5ndGggPSBkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpLmxlbmd0aCgpOwotICAgICAgICBhdXRv
JiBpbm5lclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSku
dmVjdG9yVHlwZUFyZ3VtZW50KCk7Ci0gICAgICAgIGlmIChmaWVsZExlbmd0aCA9PSAxKQotICAg
ICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4cHJlc3Npb24sIGlubmVyVHlwZSwgdHlw
ZUFubm90YXRpb24pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlu
bmVyVHlwZSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2ln
bkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuYm9vbFZlY3RvclR5cGVG
b3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2ljcy5pbnRUeXBlKCkpKQotICAgICAgICAg
ICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2ludHJpbnNpY3MuaW50
VmVjdG9yVHlwZUZvclNpemUoZmllbGRMZW5ndGgpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9pbnRyaW5zaWNzLnVpbnRUeXBlKCkp
KQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlwZShkb3RFeHByZXNzaW9uLCBtX2lu
dHJpbnNpY3MudWludFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3RoKSwgdHlwZUFubm90YXRp
b24pOwotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hlcyhpbm5lclR5cGUsIG1faW50cmluc2lj
cy5mbG9hdFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgYXNzaWduQ29uY3JldGVUeXBlKGRvdEV4
cHJlc3Npb24sIG1faW50cmluc2ljcy5mbG9hdFZlY3RvclR5cGVGb3JTaXplKGZpZWxkTGVuZ3Ro
KSwgdHlwZUFubm90YXRpb24pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAg
ICAgc2V0RXJyb3IoRXJyb3IoIkJhc2UgdmFsdWUgb2YgZG90IGV4cHJlc3Npb24gbXVzdCBiZSBh
IHN0cnVjdHVyZSwgYXJyYXksIG9yIHZlY3Rvci4iLCBkb3RFeHByZXNzaW9uLmNvZGVMb2NhdGlv
bigpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGlu
ZGV4RXhwcmVzc2lvbikKLXsKLSAgICB7Ci0gICAgICAgIGF1dG8gaW5kZXhJbmZvID0gcmVjdXJz
ZUFuZEdldEluZm8oaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAg
aWYgKCFpbmRleEluZm8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtYXRj
aEFuZENvbW1pdChpbmRleEluZm8tPnJlc29sdmluZ1R5cGUsIG1faW50cmluc2ljcy51aW50VHlw
ZSgpKSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkluZGV4IGluIGFuIGluZGV4IGV4
cHJlc3Npb24gbXVzdCBiZSBhIHVpbnQuIiwgaW5kZXhFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGJh
c2VJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oaW5kZXhFeHByZXNzaW9uLmJhc2UoKSk7Ci0gICAg
aWYgKCFiYXNlSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBiYXNlVW5uYW1lZFR5
cGUgPSBjb21taXQoYmFzZUluZm8tPnJlc29sdmluZ1R5cGUpOwotICAgIGlmICghYmFzZVVubmFt
ZWRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgcmVzb2x2ZSB0aGUgdHlw
ZSBvZiB0aGUgYmFzZSBvZiBhbiBpbmRleCBleHByZXNzaW9uLiIsIGluZGV4RXhwcmVzc2lvbi5j
b2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgdHlw
ZSA9IGJhc2VVbm5hbWVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgaWYgKGlzPEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPih0eXBlKSkgewotICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUg
PSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSk7Ci0gICAgICAgIGFzc2ln
bkNvbmNyZXRlVHlwZShpbmRleEV4cHJlc3Npb24sIGFycmF5UmVmZXJlbmNlVHlwZS5lbGVtZW50
VHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2Uo
KSB9KTsKLSAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih0eXBlKSkKLSAgICAgICAg
YXNzaWduQ29uY3JldGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgZG93bmNhc3Q8QVNUOjpBcnJheVR5
cGU+KHR5cGUpLnR5cGUoKSwgYmFzZUluZm8tPnR5cGVBbm5vdGF0aW9uKTsKLSAgICBlbHNlIGlm
IChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZSkpIHsKLSAgICAgICAgYXV0byYg
bmF0aXZlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsK
LSAgICAgICAgYXV0byB0eXBlQW5ub3RhdGlvbiA9IGJhc2VJbmZvLT50eXBlQW5ub3RhdGlvbi5p
c1JpZ2h0VmFsdWUoKSA/IEFTVDo6VHlwZUFubm90YXRpb24geyBBU1Q6OlJpZ2h0VmFsdWUoKSB9
IDogQVNUOjpUeXBlQW5ub3RhdGlvbiB7IEFTVDo6QWJzdHJhY3RMZWZ0VmFsdWUoKSB9OwotICAg
ICAgICBpZiAobmF0aXZlVHlwZS5pc1ZlY3RvcigpKQotICAgICAgICAgICAgYXNzaWduQ29uY3Jl
dGVUeXBlKGluZGV4RXhwcmVzc2lvbiwgbmF0aXZlVHlwZS52ZWN0b3JUeXBlQXJndW1lbnQoKSwg
dHlwZUFubm90YXRpb24pOwotICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlLmlzTWF0cml4KCkp
IHsKLSAgICAgICAgICAgIGF1dG8mIGlubmVyVHlwZSA9IG5hdGl2ZVR5cGUubWF0cml4VHlwZUFy
Z3VtZW50KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gbmF0aXZlVHlwZS5udW1i
ZXJPZk1hdHJpeFJvd3MoKTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzKGlubmVyVHlwZSwgbV9p
bnRyaW5zaWNzLmJvb2xUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2lnbkNvbmNyZXRlVHlw
ZShpbmRleEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5ib29sVmVjdG9yVHlwZUZvclNpemUobnVt
Um93cyksIHR5cGVBbm5vdGF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoZXMoaW5u
ZXJUeXBlLCBtX2ludHJpbnNpY3MuZmxvYXRUeXBlKCkpKQotICAgICAgICAgICAgICAgIGFzc2ln
bkNvbmNyZXRlVHlwZShpbmRleEV4cHJlc3Npb24sIG1faW50cmluc2ljcy5mbG9hdFZlY3RvclR5
cGVGb3JTaXplKG51bVJvd3MpLCB0eXBlQW5ub3RhdGlvbik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJJbmRleCBleHByZXNzaW9uIG9uIHVu
a25vd24gdHlwZS4iLCBpbmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNldEVycm9yKEVy
cm9yKCJJbmRleCBleHByZXNzaW9uIG9uIGFuIHVua25vd24gYmFzZSB0eXBlLiBCYXNlIHR5cGUg
bXVzdCBiZSBhbiBhcnJheSwgYXJyYXkgcmVmZXJlbmNlLCB2ZWN0b3IsIG9yIG1hdHJpeC4iLCBp
bmRleEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJs
ZVJlZmVyZW5jZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7
Ci0gICAgQVNTRVJUKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlhYmxlKCktPnR5cGUoKSk7Ci0gICAg
Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLCAqdmFyaWFibGVSZWZl
cmVuY2UudmFyaWFibGUoKS0+dHlwZSgpLCBBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6QWRkcmVzc1Nw
YWNlOjpUaHJlYWQgfSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJl
dHVyblN0YXRlbWVudCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZUluZm8gPSByZWN1cnNlQW5kR2V0SW5mbygqcmV0dXJuU3RhdGVtZW50
LnZhbHVlKCkpOwotICAgICAgICBpZiAoIXZhbHVlSW5mbykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKCFtYXRjaEFuZENvbW1pdCh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUsIG1f
Y3VycmVudEZ1bmN0aW9uLT50eXBlKCkpKQotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlR5
cGUgb2YgdGhlIHJldHVybiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUg
ZnVuY3Rpb24uIiwgcmV0dXJuU3RhdGVtZW50LmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1hdGNoZXMobV9jdXJyZW50RnVuY3Rpb24tPnR5cGUo
KSwgbV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fu
bm90IHJldHVybiBhIHZhbHVlIGZyb20gYSB2b2lkIGZ1bmN0aW9uLiIsIHJldHVyblN0YXRlbWVu
dC5jb2RlTG9jYXRpb24oKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6UG9pbnRl
clR5cGUmKQotewotICAgIC8vIEZvbGxvd2luZyBwb2ludGVyIHR5cGVzIGNhbiBjYXVzZSBpbmZp
bml0ZSBsb29wcyBiZWNhdXNlIG9mIGRhdGEgc3RydWN0dXJlcwotICAgIC8vIGxpa2UgbGlua2Vk
IGxpc3RzLgotICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
ZW1wdHkKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYp
Ci17Ci0gICAgLy8gRm9sbG93aW5nIGFycmF5IHJlZmVyZW5jZSB0eXBlcyBjYW4gY2F1c2UgaW5m
aW5pdGUgbG9vcHMgYmVjYXVzZSBvZiBkYXRhCi0gICAgLy8gc3RydWN0dXJlcyBsaWtlIGxpbmtl
ZCBsaXN0cy4KLSAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJl
IGVtcHR5Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50
ZWdlckxpdGVyYWwpCi17Ci0gICAgYXNzaWduVHlwZShpbnRlZ2VyTGl0ZXJhbCwgYWRvcHRSZWYo
Km5ldyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUodW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwgYWRvcHRSZWYoKm5ldyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSh1bnNpZ25lZEludGVn
ZXJMaXRlcmFsLnR5cGUoKSkpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkZsb2F0
TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewotICAgIGFzc2lnblR5cGUoZmxvYXRMaXRlcmFsLCBh
ZG9wdFJlZigqbmV3IFJlc29sdmFibGVUeXBlUmVmZXJlbmNlKGZsb2F0TGl0ZXJhbC50eXBlKCkp
KSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVh
bkxpdGVyYWwpCi17Ci0gICAgYXNzaWduQ29uY3JldGVUeXBlKGJvb2xlYW5MaXRlcmFsLCBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoYm9vbGVhbkxpdGVyYWwuY29kZUxvY2F0aW9uKCksIG1faW50
cmluc2ljcy5ib29sVHlwZSgpKSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBB
U1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsK
LSAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSAqZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuY29kZUxvY2F0aW9uKCksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikpOwot
fQotCi1ib29sIENoZWNrZXI6OmlzQm9vbFR5cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlw
ZSkKLXsKLSAgICByZXR1cm4gcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4g
bWF0Y2hlcyhsZWZ0LCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgfSwgWyZdKFJlZlB0
cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIGxlZnQpIC0+IGJvb2wgewotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQobV9pbnRyaW5zaWNzLmJvb2xUeXBl
KCksIGxlZnQtPnJlc29sdmFibGVUeXBlKCkpKTsKLSAgICB9KSk7Ci19Ci0KLWJvb2wgQ2hlY2tl
cjo6cmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24p
Ci17Ci0gICAgYXV0byBleHByZXNzaW9uSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGV4cHJlc3Np
b24pOwotICAgIGlmICghZXhwcmVzc2lvbkluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWlzQm9vbFR5cGUoZXhwcmVzc2lvbkluZm8tPnJlc29sdmluZ1R5cGUpKSB7Ci0gICAg
ICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBib29sIHR5cGUgZnJvbSBleHByZXNzaW9uLiIs
IGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKLXsKLSAgICBpZiAoIXJlY3Vy
c2VBbmRSZXF1aXJlQm9vbFR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGFzc2lnbkNvbmNyZXRlVHlwZShsb2dpY2FsTm90RXhwcmVzc2lv
biwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvZ2ljYWxOb3RFeHByZXNzaW9uLmNvZGVMb2Nh
dGlvbigpLCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSkpOwotfQotCi12b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewotICAgIGlm
ICghcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGxvZ2lj
YWxFeHByZXNzaW9uLnJpZ2h0KCkpKQotICAgICAgICByZXR1cm47Ci0gICAgYXNzaWduQ29uY3Jl
dGVUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9naWNh
bEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCksIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSk7Ci19
Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17
Ci0gICAgaWYgKCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKGlmU3RhdGVtZW50LmNvbmRpdGlv
bmFsKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVt
ZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpCi0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBpZiAoIXJlY3Vy
c2VBbmRSZXF1aXJlQm9vbFR5cGUod2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotfQotCi12
b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIHJlY3Vyc2VBbmRS
ZXF1aXJlQm9vbFR5cGUoZG9XaGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQotewotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmb3JMb29wLmluaXRpYWxpemF0aW9uKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpIHsKLSAgICAgICAgaWYg
KCFyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKCpmb3JMb29wLmNvbmRpdGlvbigpKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5pbmNyZW1lbnQoKSk7Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLX0KLQotdm9pZCBDaGVja2VyOjp2aXNpdChB
U1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQotewotICAgIGF1dG8qIHZhbHVl
VHlwZSA9IChbJl0oKSAtPiBBU1Q6Ok5hbWVkVHlwZSogewotICAgICAgICBhdXRvIHZhbHVlSW5m
byA9IHJlY3Vyc2VBbmRHZXRJbmZvKHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKLSAgICAgICAg
aWYgKCF2YWx1ZUluZm8pCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0
byogdmFsdWVUeXBlID0gZ2V0VW5uYW1lZFR5cGUodmFsdWVJbmZvLT5yZXNvbHZpbmdUeXBlKTsK
LSAgICAgICAgaWYgKCF2YWx1ZVR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgYXV0byYgdmFsdWVVbmlmeU5vZGUgPSB2YWx1ZVR5cGUtPnVuaWZ5Tm9kZSgpOwotICAg
ICAgICBpZiAoIWlzPEFTVDo6TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSkpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byYgdmFsdWVOYW1lZFVuaWZ5Tm9kZSA9IGRv
d25jYXN0PEFTVDo6TmFtZWRUeXBlPih2YWx1ZVVuaWZ5Tm9kZSk7Ci0gICAgICAgIGlmICghKGlz
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih2YWx1ZU5hbWVkVW5pZnlOb2RlKSAmJiBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odmFsdWVOYW1lZFVuaWZ5Tm9kZSkuaXNJ
bnQoKSkKLSAgICAgICAgICAgICYmICFpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odmFs
dWVOYW1lZFVuaWZ5Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuICZ2YWx1ZU5hbWVkVW5pZnlOb2RlOwotICAgIH0pKCk7Ci0gICAgaWYgKCF2YWx1ZVR5
cGUpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFsaWQgdHlwZSBmb3IgdGhlIGV4cHJl
c3Npb24gY29uZGl0aW9uIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiIsIHN3aXRjaFN0YXRlbWVu
dC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBo
YXNEZWZhdWx0ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3Rh
dGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRj
aENhc2UuYmxvY2soKSk7Ci0gICAgICAgIGlmICghc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+
IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29t
bWl0KCp2YWx1ZVR5cGUsIGludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0o
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBi
b29sIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1p
dCgqdmFsdWVUeXBlLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9
LCBbJl0oQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwg
ZmxvYXRMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJh
bCYpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgbV9p
bnRyaW5zaWNzLmJvb2xUeXBlKCkpOwotICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlv
bigpKTsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsICplbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICB9KSk7Ci0g
ICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkludmFs
aWQgdHlwZSBmb3Igc3dpdGNoIGNhc2UuIiwgc3dpdGNoQ2FzZS5jb2RlTG9jYXRpb24oKSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvJiBmaXJzdENhc2UgPSBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKVtp
XTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgc3dpdGNoU3RhdGVtZW50LnN3
aXRjaENhc2VzKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgIGF1dG8mIHNlY29uZENhc2Ug
PSBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKVtqXTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgpKSAhPSBzdGF0aWNf
Y2FzdDxib29sPihzZWNvbmRDYXNlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGZpcnN0Q2FzZS52YWx1ZSgp
KSkgewotICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgZGVmaW5lIG11bHRp
cGxlIGRlZmF1bHQgY2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudC4iLCBzZWNvbmRDYXNlLmNvZGVM
b2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBmaXJzdENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgZmlyc3RJbnRlZ2VyTGl0ZXJhbCkg
LT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENhc2UudmFsdWUoKS0+dmlz
aXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kSW50ZWdl
ckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RJbnRl
Z2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAg
ICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0
YXRpY19jYXN0PGludDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9LCBb
Jl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVlKCkt
PnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZElu
dGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAhPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICAg
ICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNp
Z25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gYm9v
bCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0p
KTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZmly
c3RFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJl
dHVybiBzZWNvbmRDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwp
IC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmlyc3RFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5lbnVtZXJhdGlvbk1lbWJlcigpICE9IHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbk1lbWJlcigpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSkp
OwotICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7
Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWZpbmUgZHVwbGljYXRl
IGNhc2Ugc3RhdGVtZW50cyBpbiBhIHN3aXRjaC4iLCBzZWNvbmRDYXNlLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKCFoYXNEZWZhdWx0KSB7Ci0gICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oKnZhbHVlVHlwZSkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8aW50
NjRfdD4gdmFsdWVzOwotICAgICAgICAgICAgYm9vbCB6ZXJvVmFsdWVFeGlzdHM7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMo
KSkgewotICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBzd2l0Y2hDYXNlLnZhbHVlKCktPnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRl
cmFsKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVnZXJMaXRl
cmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRf
dCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZh
bHVlRm9yU2VsZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGlu
dDY0X3QgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAg
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHplcm9WYWx1ZUV4aXN0cyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMu
YWRkKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRy
dWU7Ci0gICAgICAgICAgICBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnZh
bHVlVHlwZSkuaXRlcmF0ZUFsbFZhbHVlcyhbJl0oaW50NjRfdCB2YWx1ZSkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXpl
cm9WYWx1ZUV4aXN0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlcy5jb250YWlucyh2YWx1ZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAg
ICAgICAgICBzZXRFcnJvcihFcnJvcigiU3dpdGNoIGNhc2VzIG11c3QgYmUgZXhoYXVzdGl2ZSBv
ciB5b3UgbXVzdCBkZWZpbmUgYSBkZWZhdWx0IGNhc2UuIiwgc3dpdGNoU3RhdGVtZW50LmNvZGVM
b2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgSGFzaFNldDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
Kj4gdmFsdWVzOwotICAgICAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3Rh
dGVtZW50LnN3aXRjaENhc2VzKCkpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZhbHVl
KCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWVzLmFkZChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVy
YXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgfSkpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6
IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPigqdmFsdWVUeXBlKS5lbnVtZXJh
dGlvbk1lbWJlcnMoKSkgewotICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmNvbnRhaW5zKCZl
bnVtZXJhdGlvbk1lbWJlci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIlN3aXRjaCBjYXNlcyBvdmVyIGFuIGVudW0gbXVzdCBiZSBleGhhdXN0aXZlIG9yIHlv
dSBtdXN0IGRlZmluZSBhIGRlZmF1bHQgY2FzZS4iLCBzd2l0Y2hTdGF0ZW1lbnQuY29kZUxvY2F0
aW9uKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQotewotICAgIEFTU0VSVChj
b21tYUV4cHJlc3Npb24ubGlzdCgpLnNpemUoKSA+IDApOwotICAgIFZpc2l0b3I6OnZpc2l0KGNv
bW1hRXhwcmVzc2lvbik7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIGxhc3RJbmZvID0gZ2V0SW5mbyhjb21tYUV4cHJlc3Npb24ubGlzdCgpLmxhc3QoKSk7
Ci0gICAgZm9yd2FyZFR5cGUoY29tbWFFeHByZXNzaW9uLCBsYXN0SW5mby0+cmVzb2x2aW5nVHlw
ZSk7Ci19Ci0KLXZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVy
bmFyeUV4cHJlc3Npb24pCi17Ci0gICAgYXV0byBwcmVkaWNhdGVJbmZvID0gcmVjdXJzZUFuZFJl
cXVpcmVCb29sVHlwZSh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7Ci0gICAgaWYgKCFw
cmVkaWNhdGVJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGJvZHlJbmZvID0gcmVj
dXJzZUFuZEdldEluZm8odGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7Ci0gICAg
YXV0byBlbHNlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHRlcm5hcnlFeHByZXNzaW9uLmVsc2VF
eHByZXNzaW9uKCkpOwotICAgIAotICAgIGF1dG8gcmVzdWx0VHlwZSA9IG1hdGNoQW5kQ29tbWl0
KGJvZHlJbmZvLT5yZXNvbHZpbmdUeXBlLCBlbHNlSW5mby0+cmVzb2x2aW5nVHlwZSk7Ci0gICAg
aWYgKCFyZXN1bHRUeXBlKSB7Ci0gICAgICAgIHNldEVycm9yKEVycm9yKCJsaHMgYW5kIHJocyBv
ZiBhIHRlcm5hcnkgZXhwcmVzc2lvbiBtdXN0IG1hdGNoLiIsIHRlcm5hcnlFeHByZXNzaW9uLmNv
ZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhc3NpZ25Db25j
cmV0ZVR5cGUodGVybmFyeUV4cHJlc3Npb24sICpyZXN1bHRUeXBlKTsKLX0KLQotdm9pZCBDaGVj
a2VyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKLXsKLSAgICBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gdHlwZXM7Ci0gICAg
dHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5z
aXplKCkpOwotICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVu
dHMoKSkgewotICAgICAgICBhdXRvIGFyZ3VtZW50SW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKGFy
Z3VtZW50KTsKLSAgICAgICAgaWYgKCFhcmd1bWVudEluZm8pCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHR5cGVzLnVuY2hlY2tlZEFwcGVuZChhcmd1bWVudEluZm8tPnJlc29sdmluZ1R5
cGUpOwotICAgIH0KLSAgICAvLyBEb24ndCByZWN1cnNlIG9uIHRoZSBjYXN0UmV0dXJuVHlwZSwg
YmVjYXVzZSBpdCdzIGd1YXJhbnRlZWQgdG8gYmUgYSBOYW1lZFR5cGUsIHdoaWNoIHdpbGwgZ2V0
IHZpc2l0ZWQgbGF0ZXIuCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZWN1cnNlIHRvIHRoZSBz
YW1lIG5vZGUgdHdpY2UuCi0KLSAgICBhdXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbih0
eXBlcywgY2FsbEV4cHJlc3Npb24ubmFtZSgpLCBjYWxsRXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSk7Ci0gICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZnVu
Y3Rpb24pIHsKLSAgICAgICAgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0ID0gbV9wcm9ncmFtLm5h
bWVDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gY2FzdFR5cGVzID0gbmFtZUNvbnRleHQuZ2V0VHlw
ZXMoY2FsbEV4cHJlc3Npb24ubmFtZSgpLCBtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgICAgICBp
ZiAoY2FzdFR5cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYg
Y2FzdFR5cGUgPSBjYXN0VHlwZXNbMF0uZ2V0KCk7Ci0gICAgICAgICAgICBmdW5jdGlvbiA9IHJl
c29sdmVGdW5jdGlvbih0eXBlcywgIm9wZXJhdG9yIGNhc3QiX3N0ciwgY2FsbEV4cHJlc3Npb24u
Y29kZUxvY2F0aW9uKCksICZjYXN0VHlwZSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24pCi0gICAg
ICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0Q2FzdERhdGEoY2FzdFR5cGUpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICAvLyBGSVhNRTogQWRk
IGJldHRlciBlcnJvciBtZXNzYWdlcyBmb3Igd2h5IHdlIGNhbid0IHJlc29sdmUgdG8gb25lIG9m
IHRoZSBvdmVycmlkZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAxMzMKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZl
IGZ1bmN0aW9uIGNhbGwgdG8gYSBjb25jcmV0ZSBjYWxsZWUuIE1ha2Ugc3VyZSB5b3UgYXJlIHVz
aW5nIGNvbXBhdGlibGUgdHlwZXMuIiwgY2FsbEV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVu
Y3Rpb24tPnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1hdGNoQW5k
Q29tbWl0KHR5cGVzW2ldLmdldCgpLCAqZnVuY3Rpb24tPnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgp
KSkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IobWFrZVN0cmluZygiSW52YWxpZCB0eXBl
IGZvciBwYXJhbWV0ZXIgbnVtYmVyICIsIGkgKyAxLCAiIGluIGZ1bmN0aW9uIGNhbGwuIiksIGNh
bGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsRXhwcmVzc2lvbi5zZXRGdW5jdGlvbigqZnVuY3Rpb24p
OwotCi0gICAgYXNzaWduQ29uY3JldGVUeXBlKGNhbGxFeHByZXNzaW9uLCBmdW5jdGlvbi0+dHlw
ZSgpKTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrKFByb2dyYW0mIHByb2dyYW0p
Ci17Ci0gICAgQ2hlY2tlciBjaGVja2VyKHByb2dyYW0uaW50cmluc2ljcygpLCBwcm9ncmFtKTsK
LSAgICBjaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKLSAgICBpZiAoY2hlY2tl
ci5oYXNFcnJvcigpKQotICAgICAgICByZXR1cm4gY2hlY2tlci5yZXN1bHQoKTsKLSAgICByZXR1
cm4gY2hlY2tlci5hc3NpZ25UeXBlcygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY0ZTNlMTdhOGMwYTJiNzMwNWY1
ODI0MGNlMWY1MjE3NzRlNjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJv
ci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBjaGVjayhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNM
X0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDb2RlTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ29kZUxvY2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVl
ZmZmZDhkODdhOTU0MjA5ZWY3MjllMmM3MjUzZWQxOTE1ZTRlYmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDb2RlTG9jYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlICJXSExTTE5hbWVTcGFjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0cnVjdCBUb2tlbjsKLQotY2xhc3MgQ29kZUxvY2F0
aW9uIHsKLXB1YmxpYzoKLSAgICBDb2RlTG9jYXRpb24oKQotICAgICAgICA6IG1fc3RhcnRPZmZz
ZXQoMHg3RkZGRkZGRikKLSAgICAgICAgLCBtX2VuZE9mZnNldCgweDdGRkZGRkZGKQotICAgICAg
ICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFj
ZSkKLSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5k
T2Zmc2V0KGVuZE9mZnNldCkKLSAgICAgICAgLCBtX25hbWVTcGFjZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obmFtZVNwYWNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uKGNvbnN0
IFRva2VuJik7Ci0KLSAgICBDb2RlTG9jYXRpb24oY29uc3QgQ29kZUxvY2F0aW9uJiBsb2NhdGlv
bjEsIGNvbnN0IENvZGVMb2NhdGlvbiYgbG9jYXRpb24yKQotICAgICAgICA6IG1fc3RhcnRPZmZz
ZXQobG9jYXRpb24xLnN0YXJ0T2Zmc2V0KCkpCi0gICAgICAgICwgbV9lbmRPZmZzZXQobG9jYXRp
b24yLmVuZE9mZnNldCgpKQotICAgICAgICAsIG1fbmFtZVNwYWNlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsb2NhdGlvbjEubmFtZVNwYWNlKCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxvY2F0
aW9uMS5uYW1lU3BhY2UoKSA9PSBsb2NhdGlvbjIubmFtZVNwYWNlKCkpOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0
YXJ0T2Zmc2V0OwotICAgIH0KLQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9lbmRPZmZzZXQ7Ci0gICAgfQotCi0gICAgQVNUOjpOYW1lU3Bh
Y2UgbmFtZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
U1Q6Ok5hbWVTcGFjZT4obV9uYW1lU3BhY2UpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2RlTG9jYXRpb24mIG90aGVyKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKLSAgICAgICAgICAgICYmIG1f
ZW5kT2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX25hbWVTcGFj
ZSA9PSBvdGhlci5tX25hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29kZUxvY2F0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAh
PSBDb2RlTG9jYXRpb24oKTsgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZz
ZXQgOiAzMTsKLSAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1f
bmFtZVNwYWNlIDogMjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVu
c2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21w
dXRlRGltZW5zaW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3Mjk4ZDQ5
Yzg4NmExNjY1Y2I5ODA5YjVlYmUzMmUzZTAwZmIxYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMQ29t
cHV0ZURpbWVuc2lvbnMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1
ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5o
IgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0ZDo6b3B0aW9u
YWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0s
IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQotewotICAgIHN0ZDo6b3B0aW9u
YWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgZm9yIChhdXRv
JiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewot
ICAgICAgICBib29sIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gZmFsc2U7Ci0g
ICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBmdW5jdGlvbkRlZmluaXRpb24t
PmF0dHJpYnV0ZUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IFdURjo6dmlz
aXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUm
IG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3Vu
ZE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSAmZW50
cnlQb2ludCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNvbXB1dGVEaW1lbnNpb25z
KTsKLSAgICAgICAgICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSB7eyBudW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUud2lkdGgoKSwgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmhl
aWdodCgpLCBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuZGVwdGgoKSB9fTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9KSwg
ZnVuY3Rpb25BdHRyaWJ1dGUpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gQ2Fubm90IGRlY2xhcmUgbXVsdGlwbGUgbnVtdGhyZWFkIGF0dHJpYnV0ZXMg
b24gYSBzaW5nbGUgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBjb21wdXRl
RGltZW5zaW9uczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGlt
ZW5zaW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmRkZjBhODNhYTY0Mjdl
M2IzNTc5ZGFjNTUyOTk4N2IzZTUzN2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q29tcHV0ZURpbWVuc2lvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2lu
Y2x1ZGUgIldITFNMUHJlcGFyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247
Ci0KLX0KLQotY2xhc3MgUHJvZ3JhbTsKLQotc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9u
cz4gY29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7
Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xFcnJvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxYjc4NmRmYWZlYzk4MzEwZjMxMTUxYjU4YWFlZGViZDBjYTdk
NDk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRXJyb3IuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBF
cnJvciB7Ci1wdWJsaWM6Ci0gICAgRXJyb3IoU3RyaW5nJiYgbWVzc2FnZSwgQ29kZUxvY2F0aW9u
IGNvZGVMb2NhdGlvbikKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKLSAg
ICAgICAgLCBtX2xvY2F0aW9uKGNvZGVMb2NhdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgRXJy
b3IoU3RyaW5nJiYgbWVzc2FnZSkKLSAgICAgICAgOiBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX21lc3NhZ2U7Ci0gICAg
Q29kZUxvY2F0aW9uIG1fbG9jYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4NjNkZThkYzhlMGJiYTQ1OTc5YTRiODEwOTE3MTJiMTMxYWY0YWI3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xFbnRyeVBvaW50VHlwZS5oIgotI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgot
I2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIEZ1bmN0aW9u
U3RhZ2VDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIEZ1bmN0aW9uU3Rh
Z2VDaGVja2VyKEFTVDo6RW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJp
bnNpY3MmIGludHJpbnNpY3MpCi0gICAgICAgIDogbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50
VHlwZSkKLSAgICAgICAgLCBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKLSAgICB7Ci0gICAgfQot
Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVz
c2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICgoJmNhbGxFeHByZXNzaW9uLmZ1bmN0
aW9uKCkgPT0gbV9pbnRyaW5zaWNzLmRkeCgpIHx8ICZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigp
ID09IG1faW50cmluc2ljcy5kZHkoKSkgJiYgbV9lbnRyeVBvaW50VHlwZSAhPSBBU1Q6OkVudHJ5
UG9pbnRUeXBlOjpGcmFnbWVudCkgewotICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5v
dCB1c2UgZGR4IG9yIGRkeSBpbiBhIG5vbi1mcmFnbWVudCBzaGFkZXIuIiwgY2FsbEV4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoKCZjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpID09IG1faW50cmluc2ljcy5hbGxN
ZW1vcnlCYXJyaWVyKCkgfHwgJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkgPT0gbV9pbnRyaW5z
aWNzLmRldmljZU1lbW9yeUJhcnJpZXIoKSB8fCAmY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSA9
PSBtX2ludHJpbnNpY3MuZ3JvdXBNZW1vcnlCYXJyaWVyKCkpCi0gICAgICAgICAgICAmJiBtX2Vu
dHJ5UG9pbnRUeXBlICE9IEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUpIHsKLSAgICAgICAg
ICAgIHNldEVycm9yKEVycm9yKCJDYW5ub3QgdXNlIG1lbW9yeSBiYXJyaWVyIGluIGEgbm9uLWNv
bXB1dGUgc2hhZGVyLiIsIGNhbGxFeHByZXNzaW9uLmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJl
c3Npb24uZnVuY3Rpb24oKSk7Ci0gICAgfQotCi0gICAgQVNUOjpFbnRyeVBvaW50VHlwZSBtX2Vu
dHJ5UG9pbnRUeXBlOwotICAgIGNvbnN0IEludHJpbnNpY3MmIG1faW50cmluc2ljczsKLX07Ci0K
LUV4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja0Z1bmN0aW9uU3RhZ2VzKFByb2dyYW0mIHByb2dy
YW0pCi17Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50
cnlQb2ludFR5cGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBGdW5jdGlvblN0
YWdlQ2hlY2tlciBmdW5jdGlvblN0YWdlQ2hlY2tlcigqZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRy
eVBvaW50VHlwZSgpLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7Ci0gICAgICAgIGZ1bmN0aW9uU3Rh
Z2VDaGVja2VyLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlm
IChmdW5jdGlvblN0YWdlQ2hlY2tlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGZ1bmN0aW9uU3RhZ2VDaGVja2VyLnJlc3VsdCgpLmVycm9yKCkpOwotICAg
IH0KLSAgICByZXR1cm4geyB9OwotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTEzM2ZkOTJmZGRiMTdkNTRjODIzZDk4YmJhZTMyZTUxNTE0ZTM1Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0j
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNo
ZWNrRnVuY3Rpb25TdGFnZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1ZTg4YTYwMWM4MjExYTc5NWYwYzE2ZTgzOTZm
MDI2ODcyNjA2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgi
Ci0jaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCi0jaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlw
ZS5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldI
TFNMVHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLSNp
bmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0
b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFz
cyBHYXRoZXJlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBHYXRoZXJlcihjb25z
dCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBBU1Q6OlNlbWFudGljKiBzZW1hbnRpYyA9IG51bGxw
dHIpCi0gICAgICAgIDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3MpCi0gICAgICAgICwgbV9jdXJy
ZW50U2VtYW50aWMoc2VtYW50aWMpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkdhdGhl
cmVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBtX2N1
cnJlbnRTZW1hbnRpYyA9IG51bGxwdHI7Ci0gICAgICAgIG1fY3VycmVudFZhcmlhYmxlTG9jYXRp
b24gPSB7IH07Ci0gICAgfQotCi0gICAgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiB0YWtlRW50cnlQ
b2ludEl0ZW1zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnlQb2ludEl0
ZW1zKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
JikKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2VtYW50aWMpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBmb3IgZW50cnlwb2ludCBhcmd1bWVu
dC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9lbnRyeVBvaW50SXRlbXMuYXBwZW5kKEVudHJ5UG9pbnRJdGVt
KG1fdHlwZVJlZmVyZW5jZXMubGFzdCgpLmdldCgpLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0
aCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50U2Vt
YW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJFeHBlY3RlZCBzZW1hbnRpYyBm
b3IgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1hdGNoZXMobmF0aXZl
VHlwZURlY2xhcmF0aW9uLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpIHsKLSAgICAgICAgICAg
IHNldEVycm9yKEVycm9yKCJVbmV4cGVjdGVkIHZvaWQgdHlwZSBmb3IgZW50cnlwb2ludCBhcmd1
bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50cnlQb2lu
dEl0ZW0obV90eXBlUmVmZXJlbmNlcy5sYXN0KCkuZ2V0KCksICptX2N1cnJlbnRTZW1hbnRpYywg
bV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24mIHN0cnVjdHVyZURlZmluaXRpb24pCi0gICAgewotICAgICAgICBpZiAobV9jdXJyZW50U2Vt
YW50aWMpIHsKLSAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJVbmV4cGVjdGVkIHNlbWFudGlj
IGZvciBzdHJ1Y3QgZW50cnlwb2ludCBhcmd1bWVudC4iLCBtX2N1cnJlbnRWYXJpYWJsZUxvY2F0
aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1
dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1l
bnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCi0g
ICAgICAgICAgICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSBzdHJ1Y3R1cmVFbGVtZW50LnNlbWFu
dGljKCk7Ci0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0cnVjdHVyZUVsZW1lbnQubmFtZSgp
KTsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAg
ICAgICAgICAgIG1fcGF0aC50YWtlTGFzdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLSAgICB7Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOwotICAgIH0KLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQotICAgIHsK
LSAgICAgICAgbV90eXBlUmVmZXJlbmNlcy5hcHBlbmQodHlwZVJlZmVyZW5jZSk7Ci0gICAgICAg
IGF1dG8gZGVwdGggPSBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKTsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKGRlcHRoLCBtX3R5cGVSZWZlcmVuY2VzLnNpemUoKSA9PSBkZXB0aCk7Ci0gICAgICAg
IG1fdHlwZVJlZmVyZW5jZXMucmVtb3ZlTGFzdCgpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQo
QVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3Vy
cmVudFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2Vt
YW50aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlv
bikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2lu
dEl0ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShwb2ludGVyVHlwZSwgKm1fY3VycmVudFNlbWFu
dGljLCBtX3BhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVu
Y2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUpCi0gICAgewotICAgICAgICBpZiAoIW1fY3VycmVu
dFNlbWFudGljKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihFcnJvcigiRXhwZWN0ZWQgc2VtYW50
aWMgZm9yIGVudHJ5cG9pbnQgYXJndW1lbnQuIiwgbV9jdXJyZW50VmFyaWFibGVMb2NhdGlvbikp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fZW50cnlQb2ludEl0
ZW1zLmFwcGVuZChFbnRyeVBvaW50SXRlbShhcnJheVJlZmVyZW5jZVR5cGUsICptX2N1cnJlbnRT
ZW1hbnRpYywgbV9wYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlw
ZSYgYXJyYXlUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTZW1hbnRpYykgewot
ICAgICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkV4cGVjdGVkIHNlbWFudGljIGZvciBlbnRyeXBv
aW50IGFyZ3VtZW50LiIsIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24pKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2VudHJ5UG9pbnRJdGVtcy5hcHBlbmQoRW50
cnlQb2ludEl0ZW0oYXJyYXlUeXBlLCAqbV9jdXJyZW50U2VtYW50aWMsIG1fcGF0aCkpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURl
Y2xhcmF0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRTZW1hbnRpYyk7Ci0g
ICAgICAgIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb24gPSB2YXJpYWJsZURlY2xhcmF0aW9uLmNv
ZGVMb2NhdGlvbigpOwotICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRpYygp
KQotICAgICAgICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSB2YXJpYWJsZURlY2xhcmF0aW9uLnNl
bWFudGljKCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0g
ICAgICAgIG1fcGF0aC5hcHBlbmQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOwotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAg
ICAgbV9wYXRoLnRha2VMYXN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxTdHJp
bmc+IG1fcGF0aDsKLSAgICBjb25zdCBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7Ci0gICAgQVNU
OjpTZW1hbnRpYyogbV9jdXJyZW50U2VtYW50aWMgeyBudWxscHRyIH07Ci0gICAgQ29kZUxvY2F0
aW9uIG1fY3VycmVudFZhcmlhYmxlTG9jYXRpb247Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8QVNUOjpUeXBlUmVmZXJlbmNlPj4gbV90eXBlUmVmZXJlbmNlczsKLSAgICBWZWN0
b3I8RW50cnlQb2ludEl0ZW0+IG1fZW50cnlQb2ludEl0ZW1zOwotfTsKLQotRXhwZWN0ZWQ8RW50
cnlQb2ludEl0ZW1zLCBFcnJvcj4gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKGNvbnN0IEludHJpbnNp
Y3MmIGludHJpbnNpY3MsIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRp
b24pCi17Ci0gICAgQVNTRVJUKGZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKTsK
LSAgICBHYXRoZXJlciBpbnB1dEdhdGhlcmVyKGludHJpbnNpY3MpOwotICAgIGZvciAoYXV0byYg
cGFyYW1ldGVyIDogZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKSkgewotICAgICAgICBp
bnB1dEdhdGhlcmVyLnJlc2V0KCk7Ci0gICAgICAgIGlucHV0R2F0aGVyZXIuY2hlY2tFcnJvckFu
ZFZpc2l0KHBhcmFtZXRlcik7Ci0gICAgICAgIGlmIChpbnB1dEdhdGhlcmVyLmhhc0Vycm9yKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW5wdXRHYXRoZXJlci5yZXN1bHQo
KS5lcnJvcigpKTsKLSAgICB9Ci0gICAgR2F0aGVyZXIgb3V0cHV0R2F0aGVyZXIoaW50cmluc2lj
cywgZnVuY3Rpb25EZWZpbml0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICgqZnVuY3Rpb25EZWZp
bml0aW9uLmVudHJ5UG9pbnRUeXBlKCkgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkK
LSAgICAgICAgb3V0cHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5p
dGlvbi50eXBlKCkpOwotICAgIGlmIChvdXRwdXRHYXRoZXJlci5oYXNFcnJvcigpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQob3V0cHV0R2F0aGVyZXIucmVzdWx0KCkuZXJyb3IoKSk7
Ci0KLSAgICByZXR1cm4ge3sgaW5wdXRHYXRoZXJlci50YWtlRW50cnlQb2ludEl0ZW1zKCksIG91
dHB1dEdhdGhlcmVyLnRha2VFbnRyeVBvaW50SXRlbXMoKSB9fTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdiNGI4ZDljZTRjN2MzNDcxOTUyNDQxZDJiOTM4YWE0ZmYyNzI3
NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3Iu
aCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRl
ZmluaXRpb247Ci0KLX0KLQotY2xhc3MgSW50cmluc2ljczsKLWNsYXNzIFVubmFtZWRUeXBlOwot
Ci1zdHJ1Y3QgRW50cnlQb2ludEl0ZW0gewotICAgIEVudHJ5UG9pbnRJdGVtKEFTVDo6VW5uYW1l
ZFR5cGUmIHVubmFtZWRUeXBlLCBBU1Q6OlNlbWFudGljJiBzZW1hbnRpYywgVmVjdG9yPFN0cmlu
Zz4mIHBhdGgpCi0gICAgICAgIDogdW5uYW1lZFR5cGUoJnVubmFtZWRUeXBlKQotICAgICAgICAs
IHNlbWFudGljKCZzZW1hbnRpYykKLSAgICAgICAgLCBwYXRoKHBhdGgpCi0gICAgewotICAgIH0K
LQotICAgIEFTVDo6VW5uYW1lZFR5cGUqIHVubmFtZWRUeXBlOwotICAgIEFTVDo6U2VtYW50aWMq
IHNlbWFudGljOwotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGg7Ci19OwotCi1zdHJ1Y3QgRW50cnlQ
b2ludEl0ZW1zIHsKLSAgICBWZWN0b3I8RW50cnlQb2ludEl0ZW0+IGlucHV0czsKLSAgICBWZWN0
b3I8RW50cnlQb2ludEl0ZW0+IG91dHB1dHM7Ci19OwotCi1FeHBlY3RlZDxFbnRyeVBvaW50SXRl
bXMsIEVycm9yPiBnYXRoZXJFbnRyeVBvaW50SXRlbXMoY29uc3QgSW50cmluc2ljcyYsIEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhp
Z2hab21iaWVGaW5kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGY3MDEx
ODNkNTIyZDVjMWZkNTA1YzY0ODE4ZGU3MTE4MWQ2ZDIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMSGln
aFpvbWJpZUZpbmRlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBIaWdoWm9tYmllRmluZGVyIDog
cHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGUpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlRXhwcmVzc2lvbigp
KTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHBy
ZXNzaW9uKCkpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWFkTW9kaWZ5V3JpdGUubGVm
dFZhbHVlKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZG90RXhwcmVzc2lvbi5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNz
aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZGV4RXhwcmVz
c2lvbi5iYXNlKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFp
bmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSk7Ci0gICAg
fQotfTsKLQotdm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEhpZ2hab21i
aWVGaW5kZXIgZmluZGVyOwotICAgIGZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSNl
bmRpZgotfQotCi19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpv
bWJpZUZpbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xI
aWdoWm9tYmllRmluZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMDNiMjFi
MTAwZDAxN2YzMWYxYTAzY2M4ZDA1MDE5NDQxMmNhY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJv
Z3JhbTsKLQotdm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkZGYzOGU2ZDU0NTVjZmY1ZDg2N2Q0ZGNlMTc5MjZkZjZmN2E4M2Yx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxF
UikKLQotI2luY2x1ZGUgIldITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgiCi0jaW5jbHVkZSAiV0hM
U0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgot
I2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmFt
ZWRUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5o
IgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
VHlwZURlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgYm9vbCBtYXRj
aGVzKGNvbnN0IEFTVDo6VHlwZSYgdW5pZnlUaGlzLCBjb25zdCBBU1Q6OlR5cGUmIHVuaWZ5T3Ro
ZXIpCi17Ci0gICAgaWYgKCZ1bmlmeVRoaXMgPT0gJnVuaWZ5T3RoZXIpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFT
VDo6TmFtZWRUeXBlPih1bmlmeU90aGVyKSkgewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAg
IGF1dG8mIG5hbWVkVGhpcyA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpOwot
ICAgICAgICBhdXRvJiBuYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
T3RoZXIpOwotICAgICAgICBBU1NFUlQoIWlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVGhp
cykgJiYgIWlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkT3RoZXIpKTsKLSNlbmRpZgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih1
bmlmeVRoaXMpICYmIGlzPEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5T3RoZXIpKSB7Ci0gICAgICAg
IGF1dG8mIHVubmFtZWRUaGlzID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlUaGlz
KTsKLSAgICAgICAgYXV0byYgdW5uYW1lZE90aGVyID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlw
ZT4odW5pZnlPdGhlcik7Ci0gICAgICAgIEFTU0VSVCghaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1
bm5hbWVkVGhpcykgJiYgIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZE90aGVyKSk7Ci0g
ICAgICAgIHJldHVybiB1bm5hbWVkVGhpcyA9PSB1bm5hbWVkT3RoZXI7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlJiBvdGhlcikKLXsKLSAgICByZXR1cm4g
bWF0Y2hlcyh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkpOwotfQot
Ci1ib29sIG1hdGNoZXMoY29uc3QgQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgY29uc3QgQVNU
OjpOYW1lZFR5cGUmIG90aGVyKQotewotICAgIHJldHVybiBtYXRjaGVzKG5hbWVkVHlwZS51bmlm
eU5vZGUoKSwgb3RoZXIudW5pZnlOb2RlKCkpOwotfQotCi1ib29sIG1hdGNoZXMoY29uc3QgQVNU
OjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEFTVDo6TmFtZWRUeXBlJiBvdGhlcikK
LXsKLSAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZS51bmlmeU5vZGUoKSwgb3RoZXIudW5p
ZnlOb2RlKCkpOwotfQotCi1zdGF0aWMgUmVmUHRyPEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5k
Q29tbWl0KEFTVDo6VHlwZSYgdW5pZnlOb2RlLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZh
YmxlVHlwZSkKLXsKLSAgICBBU1NFUlQoIXJlc29sdmFibGVUeXBlLm1heWJlUmVzb2x2ZWRUeXBl
KCkpOwotICAgIGlmICghcmVzb2x2YWJsZVR5cGUuY2FuUmVzb2x2ZSh1bmlmeU5vZGUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9k
ZSkpIHsKLSAgICAgICAgYXV0byYgbmFtZWRVbmlmeU5vZGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBBU1Q6OlR5cGVSZWZlcmVu
Y2U6OndyYXAobmFtZWRVbmlmeU5vZGUuY29kZUxvY2F0aW9uKCksIG5hbWVkVW5pZnlOb2RlKTsK
LSAgICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICAg
ICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci0gICAgfQotCi0gICAgUmVmPEFTVDo6VW5u
YW1lZFR5cGU+IHJlc3VsdCA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7
Ci0gICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShyZXN1bHQuY29weVJlZigpKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQo
QVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29s
dmFibGVUeXBlKQotewotICAgIHJldHVybiBtYXRjaEFuZENvbW1pdCh1bm5hbWVkVHlwZS51bmlm
eU5vZGUoKSwgcmVzb2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4g
bWF0Y2hBbmRDb21taXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgQVNUOjpSZXNvbHZhYmxl
VHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KG5hbWVk
VHlwZS51bmlmeU5vZGUoKSwgcmVzb2x2YWJsZVR5cGUpOwotfQotCi1SZWZQdHI8QVNUOjpVbm5h
bWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5
cGUxLCBBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZTIpCi17Ci0gICAgQVNTRVJU
KCFyZXNvbHZhYmxlVHlwZTEubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgQVNTRVJUKCFyZXNv
bHZhYmxlVHlwZTIubWF5YmVSZXNvbHZlZFR5cGUoKSk7Ci0gICAgaWYgKGlzPEFTVDo6RmxvYXRM
aXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+
KHJlc29sdmFibGVUeXBlMikpIHsKLSAgICAgICAgcmVzb2x2YWJsZVR5cGUxLnJlc29sdmUoZG93
bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5
cGUoKSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMi5yZXNvbHZlKGRvd25jYXN0PEFTVDo6Rmxv
YXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAg
ICByZXR1cm4gJmRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUx
KS5wcmVmZXJyZWRUeXBlKCk7Ci0gICAgfQotICAgIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFs
VHlwZT4ocmVzb2x2YWJsZVR5cGUxKSAmJiBpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVz
b2x2YWJsZVR5cGUyKSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZTEucmVzb2x2ZShkb3duY2Fz
dDxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUxKS5wcmVmZXJyZWRUeXBl
KCkpOwotICAgICAgICByZXNvbHZhYmxlVHlwZTIucmVzb2x2ZShkb3duY2FzdDxBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKS5wcmVmZXJyZWRUeXBlKCkpOwotICAgICAg
ICByZXR1cm4gJmRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlw
ZTEpLnByZWZlcnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlMSkgJiYgaXM8QVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUyKSkgewotICAgICAgICByZXNvbHZhYmxlVHlw
ZTEucmVzb2x2ZShkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNv
bHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlMi5y
ZXNvbHZlKGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFi
bGVUeXBlMikucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZTEpLnByZWZlcnJlZFR5
cGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxBU1Q6OlVubmFt
ZWRUeXBlPiBjb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0g
ICAgQVNTRVJUKCFyZXNvbHZhYmxlVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKTsKLSAgICBpZiAo
aXM8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0
byYgZmxvYXRMaXRlcmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVz
b2x2YWJsZVR5cGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGZsb2F0TGl0ZXJh
bFR5cGUucHJlZmVycmVkVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZmbG9hdExpdGVyYWxUeXBl
LnByZWZlcnJlZFR5cGUoKTsKLSAgICB9Ci0gICAgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWxU
eXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAgICAgICAgYXV0byYgaW50ZWdlckxpdGVyYWxUeXBl
ID0gZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKLSAg
ICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVk
VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuICZpbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlw
ZSgpOwotICAgIH0KLSAgICBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8mIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlID0gZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJs
ZVR5cGUpOwotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKHVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Ci0gICAgICAgIHJldHVybiAmdW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVkVHlwZSYg
cG9zc2libGVUeXBlLCBBU1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAg
aWYgKGlzPEFTVDo6VHlwZURlZmluaXRpb24+KHBvc3NpYmxlVHlwZSkKLSAgICAgICAgfHwgaXM8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpCi0gICAgICAgIHx8IGlzPEFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihwb3NzaWJsZVR5cGUpKSB7Ci0gICAgICAgIHJldHVy
biB0eXBlQXJndW1lbnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBhdXRvJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2li
bGVUeXBlKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5z
aXplKCkgIT0gdHlwZUFyZ3VtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1l
bnRzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qIHR5
cGVBcmd1bWVudEV4cHJlc3Npb24gPSBudWxscHRyOwotICAgICAgICBBU1Q6OlR5cGVSZWZlcmVu
Y2UqIHR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UgPSBudWxscHRyOwotICAgICAgICBBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbiogbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lvbiA9IG51bGxwdHI7
Ci0gICAgICAgIEFTVDo6VHlwZVJlZmVyZW5jZSogbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVy
ZW5jZSA9IG51bGxwdHI7Ci0KLSAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0oQVNUOjpUeXBlQXJn
dW1lbnQmIHR5cGVBcmd1bWVudCwgQVNUOjpDb25zdGFudEV4cHJlc3Npb24qJiBleHByZXNzaW9u
LCBBU1Q6OlR5cGVSZWZlcmVuY2UqJiB0eXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25z
dGFudEV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gJmNvbnN0YW50
RXhwcmVzc2lvbjsKLSAgICAgICAgICAgIH0sIFsmXShSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYg
dGhlVHlwZVJlZmVyZW5jZSkgewotICAgICAgICAgICAgICAgIHR5cGVSZWZlcmVuY2UgPSB0aGVU
eXBlUmVmZXJlbmNlLnB0cigpOwotICAgICAgICAgICAgfSksIHR5cGVBcmd1bWVudCk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgYXNzaWduKHR5cGVBcmd1bWVudHNbaV0sIHR5cGVBcmd1bWVudEV4
cHJlc3Npb24sIHR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UpOwotICAgICAgICBhc3NpZ24obmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVtpXSwgbmF0aXZlVHlwZUFyZ3VtZW50
RXhwcmVzc2lvbiwgbmF0aXZlVHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSk7Ci0KLSAgICAgICAg
aWYgKHR5cGVBcmd1bWVudEV4cHJlc3Npb24gJiYgbmF0aXZlVHlwZUFyZ3VtZW50RXhwcmVzc2lv
bikgewotICAgICAgICAgICAgaWYgKCF0eXBlQXJndW1lbnRFeHByZXNzaW9uLT5tYXRjaGVzKCpu
YXRpdmVUeXBlQXJndW1lbnRFeHByZXNzaW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZUFyZ3VtZW50VHlwZVJlZmVyZW5jZSAmJiBuYXRp
dmVUeXBlQXJndW1lbnRUeXBlUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXMo
KnR5cGVBcmd1bWVudFR5cGVSZWZlcmVuY2UsICpuYXRpdmVUeXBlQXJndW1lbnRUeXBlUmVmZXJl
bmNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgotQUxX
QVlTX0lOTElORSBib29sIGluZmVyVHlwZXNGb3JDYWxsSW1wbChBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJl
c29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgVHlwZUtpbmQqIGNhc3RSZXR1cm5U
eXBlKQotewotICAgIGlmIChwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgIT0g
YXJndW1lbnRUeXBlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkg
LT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygqcG9zc2libGVGdW5jdGlvbi5w
YXJhbWV0ZXJzKClbaV0tPnR5cGUoKSwgdW5uYW1lZFR5cGUpOwotICAgICAgICB9LCBbJl0oUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+
IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNv
bHZhYmxlVHlwZSgpLmNhblJlc29sdmUocG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKClbaV0t
PnR5cGUoKS0+dW5pZnlOb2RlKCkpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGlmICghc3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGNhc3RSZXR1cm5U
eXBlICYmICFtYXRjaGVzKHBvc3NpYmxlRnVuY3Rpb24udHlwZSgpLCAqY2FzdFJldHVyblR5cGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaW5m
ZXJUeXBlc0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9u
LCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50
VHlwZXMsIGNvbnN0IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSkKLXsKLSAgICByZXR1
cm4gaW5mZXJUeXBlc0ZvckNhbGxJbXBsKHBvc3NpYmxlRnVuY3Rpb24sIGFyZ3VtZW50VHlwZXMs
IGNhc3RSZXR1cm5UeXBlKTsKLX0KLQotYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgY29uc3QgQVNUOjpVbm5hbWVk
VHlwZSogY2FzdFJldHVyblR5cGUpCi17Ci0gICAgcmV0dXJuIGluZmVyVHlwZXNGb3JDYWxsSW1w
bChwb3NzaWJsZUZ1bmN0aW9uLCBhcmd1bWVudFR5cGVzLCBjYXN0UmV0dXJuVHlwZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGMzMjJmMzdkYzBkODZjODc2MDc1Y2Q3NGFmMDdlOGEyMTRhNzA4ZGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNpbmNsdWRl
ICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3Mg
RnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIFJlc29sdmFibGVU
eXBlOwotY2xhc3MgVW5uYW1lZFR5cGU7Ci0KLX0KLQotYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6
VW5uYW1lZFR5cGUmLCBjb25zdCBBU1Q6OlVubmFtZWRUeXBlJik7Ci1ib29sIG1hdGNoZXMoY29u
c3QgQVNUOjpOYW1lZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotYm9vbCBtYXRjaGVz
KGNvbnN0IEFTVDo6VW5uYW1lZFR5cGUmLCBjb25zdCBBU1Q6Ok5hbWVkVHlwZSYpOwotUmVmUHRy
PEFTVDo6VW5uYW1lZFR5cGU+IG1hdGNoQW5kQ29tbWl0KEFTVDo6VW5uYW1lZFR5cGUmLCBBU1Q6
OlJlc29sdmFibGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21t
aXQoQVNUOjpOYW1lZFR5cGUmLCBBU1Q6OlJlc29sdmFibGVUeXBlJik7Ci1SZWZQdHI8QVNUOjpV
bm5hbWVkVHlwZT4gbWF0Y2hBbmRDb21taXQoQVNUOjpSZXNvbHZhYmxlVHlwZSYsIEFTVDo6UmVz
b2x2YWJsZVR5cGUmKTsKLVJlZlB0cjxBU1Q6OlVubmFtZWRUeXBlPiBjb21taXQoQVNUOjpSZXNv
bHZhYmxlVHlwZSYpOwotYm9vbCBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyhBU1Q6Ok5hbWVk
VHlwZSYgcG9zc2libGVUeXBlLCBBU1Q6OlR5cGVBcmd1bWVudHMmKTsKLWJvb2wgaW5mZXJUeXBl
c0ZvckNhbGwoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBwb3NzaWJsZUZ1bmN0aW9uLCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMs
IGNvbnN0IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci1ib29sIGluZmVyVHlwZXNG
b3JDYWxsKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBj
b25zdCBBU1Q6OlVubmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSk7Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZkNDM3YTJjZTJlYzYwODRiOTViM2NkNTYxN2JiNjhiMjRmODllZTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExT
TFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNz
OjptX3RleHR1cmVUeXBlTmFtZXNbXTsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBJbnRyaW5zaWNz
OjptX3RleHR1cmVJbm5lclR5cGVOYW1lc1tdOwotY29uc3RleHByIGNvbnN0IGNoYXIqIEludHJp
bnNpY3M6Om1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlc1tdOwotCi1JbnRyaW5zaWNzOjpJbnRyaW5z
aWNzKCkKLXsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjphZGQoQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotewotICAgIGlmIChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiZGR4IikKLSAgICAgICAgbV9kZHggPSAmbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiZGR5IikKLSAgICAgICAgbV9kZHkgPSAmbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKQotICAgICAgICBtX2FsbE1lbW9y
eUJhcnJpZXIgPSAmbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiRGV2aWNlTWVtb3J5QmFycmllcldpdGhH
cm91cFN5bmMiKQotICAgICAgICBtX2RldmljZU1lbW9yeUJhcnJpZXIgPSAmbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiR3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpCi0gICAgICAgIG1fZ3Jv
dXBNZW1vcnlCYXJyaWVyID0gJm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Ci19Ci0KLWJvb2wg
SW50cmluc2ljczo6YWRkUHJpbWl0aXZlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBl
QXJndW1lbnRzKCkuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAidm9pZCIpCi0gICAgICAgIG1fdm9pZFR5cGUg
PSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5uYW1lKCkgPT0gImJvb2wiKQotICAgICAgICBtX2Jvb2xUeXBlID0gJm5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJ1aW50IikgewotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAg
ICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCB4KSB7Ci0gICAg
ICAgICAgICByZXR1cm4geCA+PSAwOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihbXSh1bnNpZ25lZCkgewot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50RmxvYXQoW10oZmxvYXQgeCkgewotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkpID09
IHg7Ci0gICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vz
c29yKFtdKGludDY0X3QgeCkgLT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHggKyAxKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5zZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKFtdKGludCB4KSAtPiBpbnQ2NF90
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCk7Ci0gICAgICAg
IH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Rm9ybWF0VmFsdWVGcm9tVW5z
aWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkIHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRJdGVyYXRlQWxsVmFsdWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbChpbnQ2NF90KT4mIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBmb3IgKGludDY0X3Qg
aSA9IDA7IGkgPCAweDEwMDAwMDAwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKGkpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSk7Ci0gICAgICAgIG1fdWludFR5cGUgPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwotICAg
IH0gZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiaW50IikgewotICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNJbnQoKTsKLSAgICAgICAgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRJc1NpZ25lZCgpOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVw
cmVzZW50SW50ZWdlcihbXShpbnQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENhblJlcHJlc2VudFVuc2ln
bmVkSW50ZWdlcihbXSh1bnNpZ25lZCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4geCA8PSAyMTQ3
NDgzNjQ3OwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldENh
blJlcHJlc2VudEZsb2F0KFtdKGZsb2F0IHgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCkpID09IHg7Ci0gICAgICAgIH0pOwot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0U3VjY2Vzc29yKFtdKGludDY0X3QgeCkg
LT4gaW50NjRfdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCAr
IDEpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldEZvcm1h
dFZhbHVlRnJvbUludGVnZXIoW10oaW50IHgpIC0+IGludDY0X3QgewotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpOwotICAgICAgICB9KTsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldEZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihbXSh1bnNp
Z25lZCB4KSAtPiBpbnQ2NF90IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQz
Ml90Pih4KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJ
dGVyYXRlQWxsVmFsdWVzKFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mIGNh
bGxiYWNrKSB7Ci0gICAgICAgICAgICBmb3IgKGludDY0X3QgaSA9IC0yMTQ3NDgzNjQ3OyBpIDwg
MjE0NzQ4MzY0ODsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
ICAgIG1faW50VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJmbG9hdCIpIHsKLSAgICAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldElzTnVtYmVyKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0Zsb2F0aW5nKCk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRD
YW5SZXByZXNlbnRJbnRlZ2VyKFtdKGludCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0pOwotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0Q2FuUmVwcmVzZW50
VW5zaWduZWRJbnRlZ2VyKFtdKHVuc2lnbmVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRDYW5SZXByZXNl
bnRGbG9hdChbXShmbG9hdCkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0p
OwotICAgICAgICBtX2Zsb2F0VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBl
bHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdG9taWNfaW50Iikgewot
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9h
dG9taWNJbnRUeXBlID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICB9IGVsc2UgaWYgKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0b21pY191aW50IikgewotICAgICAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNBdG9taWMoKTsKLSAgICAgICAgbV9hdG9taWNVaW50
VHlwZSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgfSBlbHNlIGlmIChuYXRpdmVUeXBl
RGVjbGFyYXRpb24ubmFtZSgpID09ICJzYW1wbGVyIikgewotICAgICAgICBtX3NhbXBsZXJUeXBl
ID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9u
LnNldElzT3BhcXVlVHlwZSgpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRyaW5zaWNzOjphZGRWZWN0b3Io
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsKLSAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSAhPSAidmVjdG9yIikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJn
dW1lbnRzKCkuc2l6ZSgpID09IDIpOwotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3Vt
ZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpDb25z
dGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMV0p
KTsKLSAgICBhdXRvJiBpbm5lclR5cGUgPSBzdGF0aWNfY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2Um
PihXVEY6OmdldDxSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKVswXSkpOwotICAgIGF1dG8mIGxlbmd0aEV4cHJlc3Npb24gPSBXVEY6
OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVB
cmd1bWVudHMoKVsxXSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlwZUFyZ3VtZW50cygpLnNp
emUoKSk7Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qKiBhcnJheTsKLSAgICBpZiAo
aW5uZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCi0gICAgICAgIGFycmF5ID0gbV92ZWN0b3JCb29s
OwotICAgIGVsc2UgaWYgKGlubmVyVHlwZS5uYW1lKCkgPT0gInVpbnQiKQotICAgICAgICBhcnJh
eSA9IG1fdmVjdG9yVWludDsKLSAgICBlbHNlIGlmIChpbm5lclR5cGUubmFtZSgpID09ICJpbnQi
KQotICAgICAgICBhcnJheSA9IG1fdmVjdG9ySW50OwotICAgIGVsc2UgewotICAgICAgICBBU1NF
UlQoaW5uZXJUeXBlLm5hbWUoKSA9PSAiZmxvYXQiKTsKLSAgICAgICAgYXJyYXkgPSBtX3ZlY3Rv
ckZsb2F0OwotICAgIH0KLSAgICBpbnQgbGVuZ3RoID0gbGVuZ3RoRXhwcmVzc2lvbi5pbnRlZ2Vy
TGl0ZXJhbCgpLnZhbHVlKCk7Ci0gICAgQVNTRVJUKGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA0
KTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNWZWN0b3IoKTsKLSAgICBhcnJheVts
ZW5ndGggLSAyXSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgSW50cmluc2ljczo6YWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5uYW1lKCkgIT0gIm1hdHJpeCIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc01hdHJpeCgpOwotCi0gICAgQVNTRVJUKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkuc2l6ZSgpID09IDMpOwotICAgIEFTU0VSVChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVj
bGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8QVNUOjpDb25zdGFudEV4cHJlc3Npb24+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50
eXBlQXJndW1lbnRzKClbMV0pKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVu
dHMoKVsyXSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEludHJpbnNpY3M6OmFkZEZ1
bGxUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24sIEFTVDo6VHlwZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQotewotICAgIGF1dG8gdGV4dHVyZVR5
cGVJbmRleCA9IHN0ZDo6ZmluZChtX3RleHR1cmVUeXBlTmFtZXMsIG1fdGV4dHVyZVR5cGVOYW1l
cyArIFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKSwgbmF0aXZlVHlwZURlY2xh
cmF0aW9uLm5hbWUoKSkgLSBtX3RleHR1cmVUeXBlTmFtZXM7Ci0gICAgaWYgKHRleHR1cmVUeXBl
SW5kZXggPT0gV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBpbm5lclR5cGVJbmRleCA9IFdURl9BUlJBWV9M
RU5HVEgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXMpOwotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90
ZXh0dXJlSW5uZXJUeXBlTmFtZXMpOyArK2kpIHsKLSAgICAgICAgaWYgKGlubmVyVHlwZS5uYW1l
KCkuc3RhcnRzV2l0aChtX3RleHR1cmVJbm5lclR5cGVOYW1lc1tpXSkpIHsKLSAgICAgICAgICAg
IGlubmVyVHlwZUluZGV4ID0gaTsKLSAgICAgICAgICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09
IG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzW2ldKQotICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0
aCA9IDE7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpID09IHN0cmxlbiht
X3RleHR1cmVJbm5lclR5cGVOYW1lc1tpXSkgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbm5lclR5cGUubmFtZSgpW2lubmVyVHlwZS5uYW1l
KCkubGVuZ3RoKCkgLSAxXSA9PSAnMicKLSAgICAgICAgICAgICAgICAgICAgfHwgaW5uZXJUeXBl
Lm5hbWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gPT0gJzMnCi0gICAgICAgICAg
ICAgICAgICAgIHx8IGlubmVyVHlwZS5uYW1lKClbaW5uZXJUeXBlLm5hbWUoKS5sZW5ndGgoKSAt
IDFdID09ICc0Jyk7Ci0gICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gaW5uZXJUeXBlLm5h
bWUoKVtpbm5lclR5cGUubmFtZSgpLmxlbmd0aCgpIC0gMV0gLSAnMCc7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQodmVjdG9yTGVuZ3RoICYmIHZl
Y3Rvckxlbmd0aCA8IDUpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlu
bmVyVHlwZUluZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXMp
KTsKLSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7Ci0gICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldElzT3BhcXVlVHlwZSgpOwotICAgIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9u
Lm5hbWUoKSA9PSAiVGV4dHVyZTJEQXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlJXVGV4dHVyZTJEQXJyYXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24u
c2V0SXNUZXh0dXJlQXJyYXkoKTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUo
KSA9PSAiUldUZXh0dXJlMUQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJX
VGV4dHVyZTJEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUz
RCIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIg
fHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMkRBcnJheSIpCi0g
ICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc1dyaXRhYmxlVGV4dHVyZSgpOwotICAg
IGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMUQiIHx8IG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTFEIiB8fCBuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlMURBcnJheSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlMURBcnJheSIpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDEpOwotICAgIGlmIChuYXRpdmVUeXBlRGVjbGFy
YXRpb24ubmFtZSgpID09ICJUZXh0dXJlMkQiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlJXVGV4dHVyZTJEIiB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJU
ZXh0dXJlQ3ViZSIgfHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTJE
QXJyYXkiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVyZTJEQXJy
YXkiKQotICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigy
KTsKLSAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZTNEIiB8
fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJSV1RleHR1cmUzRCIpCi0gICAgICAg
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDMpOwotICAgIGlmIChu
YXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlQ3ViZSIpCi0gICAgICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc0N1YmVUZXh0dXJlKCk7Ci0gICAgbV9mdWxsVGV4dHVy
ZXNbdGV4dHVyZVR5cGVJbmRleF1baW5uZXJUeXBlSW5kZXhdW3ZlY3Rvckxlbmd0aCAtIDFdID0g
Jm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbnRy
aW5zaWNzOjphZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNlJiBpbm5lclR5cGUpCi17Ci0gICAg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qKiB0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICBpZiAo
bmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQotICAgICAg
ICB0ZXh0dXJlID0gbV90ZXh0dXJlRGVwdGgyRDsKLSAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVj
bGFyYXRpb24ubmFtZSgpID09ICJUZXh0dXJlRGVwdGgyREFycmF5IikKLSAgICAgICAgdGV4dHVy
ZSA9IG1fdGV4dHVyZURlcHRoMkRBcnJheTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVEZXB0aEN1YmUiKTsKLSAgICAg
ICAgdGV4dHVyZSA9IG1fdGV4dHVyZURlcHRoQ3ViZTsKLSAgICB9Ci0gICAgYXV0byBpbm5lclR5
cGVJbmRleCA9IHN0ZDo6ZmluZChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMsIG1fZGVwdGhUZXh0
dXJlSW5uZXJUeXBlcyArIFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVz
KSwgaW5uZXJUeXBlLm5hbWUoKSkgLSBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXM7Ci0gICAgQVNT
RVJUKGlubmVyVHlwZUluZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5l
clR5cGVzKSk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZSgpOwotICAg
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRJc09wYXF1ZVR5cGUoKTsKLSAgICBpZiAodGV4dHVy
ZSA9PSBtX3RleHR1cmVEZXB0aDJEQXJyYXkpCi0gICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5zZXRJc1RleHR1cmVBcnJheSgpOwotICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZURlcHRo
Q3ViZSkKLSAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQ3ViZVRleHR1cmUoKTsK
LSAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigyKTsKLSAgICBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNEZXB0aFRleHR1cmUoKTsKLSAgICB0ZXh0dXJlW2lu
bmVyVHlwZUluZGV4XSA9ICZuYXRpdmVUeXBlRGVjbGFyYXRpb247Ci19Ci0KLXZvaWQgSW50cmlu
c2ljczo6YWRkVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uKQotewotICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3Vt
ZW50cygpLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVu
dHMoKVswXSkpOwotICAgIGF1dG8mIGlubmVyVHlwZSA9IHN0YXRpY19jYXN0PEFTVDo6VHlwZVJl
ZmVyZW5jZSY+KFdURjo6Z2V0PFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+PihuYXRpdmVUeXBlRGVj
bGFyYXRpb24udHlwZUFyZ3VtZW50cygpWzBdKSk7Ci0gICAgQVNTRVJUKCFpbm5lclR5cGUudHlw
ZUFyZ3VtZW50cygpLnNpemUoKSk7Ci0gICAgaWYgKGFkZEZ1bGxUZXh0dXJlKG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiwgaW5uZXJUeXBlKSkgewotICAgICAgICBtX3RleHR1cmVTZXQuYWRkKCZuYXRp
dmVUeXBlRGVjbGFyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGFkZERlcHRo
VGV4dHVyZShuYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlubmVyVHlwZSk7Ci0gICAgbV90ZXh0dXJl
U2V0LmFkZCgmbmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLX0KLQotdm9pZCBJbnRyaW5zaWNzOjph
ZGQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLXsK
LSAgICBpZiAoYWRkUHJpbWl0aXZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoYWRkVmVjdG9yKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoYWRkTWF0cml4KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpCi0gICAg
ICAgIHJldHVybjsKLSAgICBhZGRUZXh0dXJlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGJmZmZmYTVlNDRlNDBkMzY5NjgyNmFiOGQ4ZDZhZjc2NWM4NTUyZGMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlIDxj
c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1j
bGFzcyBJbnRyaW5zaWNzIHsKLXB1YmxpYzoKLSAgICBJbnRyaW5zaWNzKCk7Ci0KLSAgICB2b2lk
IGFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAgICB2b2lkIGFkZChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mIHZvaWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZvaWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuICptX3ZvaWRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBib29sVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9i
b29sVHlwZSk7Ci0gICAgICAgIHJldHVybiAqbV9ib29sVHlwZTsKLSAgICB9Ci0KLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgYm9vbFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNp
emUpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6
ZSA9PSAzIHx8IHNpemUgPT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JCb29sW3NpemUg
LSAyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludFR5cGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdWludFR5cGUpOwotICAgICAgICByZXR1
cm4gKm1fdWludFR5cGU7Ci0gICAgfQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IGludFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW50VHlwZSk7Ci0gICAg
ICAgIHJldHVybiAqbV9pbnRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiB1aW50MlR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmVjdG9y
VWludFswXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JVaW50WzBdOwotICAgIH0KLQotICAg
IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50NFR5cGUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdmVjdG9yVWludFsyXSk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JV
aW50WzJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VmVj
dG9yVHlwZUZvclNpemUodW5zaWduZWQgc2l6ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHNpemUgPT0gMiB8fCBzaXplID09IDMgfHwgc2l6ZSA9PSA0KTsKLSAgICAgICAg
cmV0dXJuICptX3ZlY3RvclVpbnRbc2l6ZSAtIDJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiBpbnQyVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV92ZWN0b3JJbnRbMF0pOwotICAgICAgICByZXR1cm4gKm1fdmVjdG9ySW50WzBdOwotICAgIH0K
LQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnQ0VHlwZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQobV92ZWN0b3JJbnRbMl0pOwotICAgICAgICByZXR1cm4gKm1fdmVj
dG9ySW50WzJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRW
ZWN0b3JUeXBlRm9yU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZSA9PSAyIHx8IHNpemUgPT0gMyB8fCBzaXplID09IDQpOwotICAgICAg
ICByZXR1cm4gKm1fdmVjdG9ySW50W3NpemUgLSAyXTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgc2FtcGxlclR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fc2FtcGxlclR5cGUpOwotICAgICAgICByZXR1cm4gKm1fc2FtcGxlclR5cGU7Ci0gICAg
fQotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIGZsb2F0VHlwZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQobV9mbG9hdFR5cGUpOwotICAgICAgICByZXR1cm4gKm1fZmxv
YXRUeXBlOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDJU
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzBdKTsKLSAg
ICAgICAgcmV0dXJuICptX3ZlY3RvckZsb2F0WzBdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uJiBmbG9hdDNUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3ZlY3RvckZsb2F0WzFdKTsKLSAgICAgICAgcmV0dXJuICptX3ZlY3RvckZsb2F0WzFdOwot
ICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBmbG9hdDRUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZlY3RvckZsb2F0WzJdKTsKLSAgICAgICAgcmV0
dXJuICptX3ZlY3RvckZsb2F0WzJdOwotICAgIH0KLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uJiBmbG9hdFZlY3RvclR5cGVGb3JTaXplKHVuc2lnbmVkIHNpemUpIGNvbnN0Ci0gICAg
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IDIgfHwgc2l6ZSA9PSAzIHx8IHNpemUg
PT0gNCk7Ci0gICAgICAgIHJldHVybiAqbV92ZWN0b3JGbG9hdFtzaXplIC0gMl07Ci0gICAgfQot
Ci0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIG1heSBoYXZlIGJlZW4gcHJ1bmVkIGZyb20gdGhlIEFT
VCBpZiB0aGV5IGFyZSB1bnVzZWQuCi0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KiBkZHgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGR4OwotICAgIH0KLQotICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiogZGR5KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2RkeTsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIGFsbE1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YWxsTWVtb3J5QmFycmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24qIGRldmljZU1lbW9yeUJhcnJpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZGV2aWNlTWVtb3J5QmFycmllcjsKLSAgICB9Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24qIGdyb3VwTWVtb3J5QmFycmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9ncm91cE1lbW9yeUJhcnJpZXI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wg
YWRkUHJpbWl0aXZlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7Ci0gICAgYm9vbCBhZGRW
ZWN0b3IoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKLSAgICBib29sIGFkZE1hdHJpeChB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpOwotICAgIGJvb2wgYWRkRnVsbFRleHR1cmUoQVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mLCBBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICB2b2lk
IGFkZERlcHRoVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYsIEFTVDo6VHlwZVJl
ZmVyZW5jZSYpOwotICAgIHZvaWQgYWRkVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYpOwotCi0gICAgSGFzaFNldDxjb25zdCBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbio+IG1f
dGV4dHVyZVNldDsKLQotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3ZvaWRUeXBl
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2Jvb2xUeXBl
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3VpbnRUeXBl
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2ludFR5cGUg
eyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZmxvYXRUeXBl
IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX2F0b21pY0lu
dFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fYXRv
bWljVWludFR5cGUgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24q
IG1fc2FtcGxlclR5cGUgeyBudWxscHRyIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiogbV92ZWN0b3JCb29sWzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uKiBtX3ZlY3RvclVpbnRbM10geyAwIH07Ci0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24qIG1fdmVjdG9ySW50WzNdIHsgMCB9OwotICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
KiBtX3ZlY3RvckZsb2F0WzNdIHsgMCB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBtX3RleHR1cmVUeXBlTmFtZXNbXSA9IHsgIlRleHR1cmUxRCIsICJSV1RleHR1cmUxRCIs
ICJUZXh0dXJlMkQiLCAiUldUZXh0dXJlMkQiLCAiVGV4dHVyZTNEIiwgIlJXVGV4dHVyZTNEIiwg
IlRleHR1cmVDdWJlIiwgIlRleHR1cmUxREFycmF5IiwgIlJXVGV4dHVyZTFEQXJyYXkiLCAiVGV4
dHVyZTJEQXJyYXkiLCAiUldUZXh0dXJlMkRBcnJheSIgfTsKLQotICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogbV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNbXSA9IHsgInVpbnQiLCAiaW50
IiwgImZsb2F0IiB9OwotCi0gICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIG1fZnVsbFRl
eHR1cmVzW1dURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKV1bV1RGX0FSUkFZX0xF
TkdUSChtX3RleHR1cmVJbm5lclR5cGVOYW1lcyldWzRdIHt7eyAwIH19fTsKLQotICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzW10gPSAgeyAi
ZmxvYXQiIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVw
dGgyRFtXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyldIHsgMCB9Owot
ICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBtX3RleHR1cmVEZXB0aDJEQXJyYXlbV1RG
X0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpXSB7IDAgfTsKLSAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogbV90ZXh0dXJlRGVwdGhDdWJlW1dURl9BUlJBWV9MRU5H
VEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKV0geyAwIH07Ci0KLSAgICBBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24qIG1fZGR4IHsgbnVsbHB0ciB9OwotICAgIEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiogbV9kZHkgeyBudWxscHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKiBtX2FsbE1lbW9yeUJhcnJpZXIgeyBudWxscHRyIH07Ci0gICAgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2RldmljZU1lbW9yeUJhcnJpZXIgeyBudWxs
cHRyIH07Ci0gICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2dyb3VwTWVtb3J5
QmFycmllciB7IG51bGxwdHIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNmIwZWFjY2Q5NWUxMzE5OGU2ODYzM2Zj
YTk2ZmI0NzQzYjk3YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNv
bnN0IGNoYXIqIFRva2VuOjp0eXBlTmFtZShUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBUeXBlOjpJbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gImludCBsaXRl
cmFsIjsKLSAgICBjYXNlIFR5cGU6OlVpbnRMaXRlcmFsOgotICAgICAgICByZXR1cm4gInVpbnQg
bGl0ZXJhbCI7Ci0gICAgY2FzZSBUeXBlOjpGbG9hdExpdGVyYWw6Ci0gICAgICAgIHJldHVybiAi
ZmxvYXQgbGl0ZXJhbCI7Ci0gICAgY2FzZSBUeXBlOjpTdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiAi
c3RydWN0IjsKLSAgICBjYXNlIFR5cGU6OlR5cGVkZWY6Ci0gICAgICAgIHJldHVybiAidHlwZWRl
ZiI7Ci0gICAgY2FzZSBUeXBlOjpFbnVtOgotICAgICAgICByZXR1cm4gImVudW0iOwotICAgIGNh
c2UgVHlwZTo6T3BlcmF0b3I6Ci0gICAgICAgIHJldHVybiAib3BlcmF0b3IiOwotICAgIGNhc2Ug
VHlwZTo6SWY6Ci0gICAgICAgIHJldHVybiAiaWYiOwotICAgIGNhc2UgVHlwZTo6RWxzZToKLSAg
ICAgICAgcmV0dXJuICJlbHNlIjsKLSAgICBjYXNlIFR5cGU6OkNvbnRpbnVlOgotICAgICAgICBy
ZXR1cm4gImNvbnRpbnVlIjsKLSAgICBjYXNlIFR5cGU6OkJyZWFrOgotICAgICAgICByZXR1cm4g
ImJyZWFrIjsKLSAgICBjYXNlIFR5cGU6OlN3aXRjaDoKLSAgICAgICAgcmV0dXJuICJzd2l0Y2gi
OwotICAgIGNhc2UgVHlwZTo6Q2FzZToKLSAgICAgICAgcmV0dXJuICJjYXNlIjsKLSAgICBjYXNl
IFR5cGU6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiZGVmYXVsdCI7Ci0gICAgY2FzZSBUeXBl
OjpGYWxsdGhyb3VnaDoKLSAgICAgICAgcmV0dXJuICJmYWxsdGhyb3VnaCI7Ci0gICAgY2FzZSBU
eXBlOjpGb3I6Ci0gICAgICAgIHJldHVybiAiZm9yIjsKLSAgICBjYXNlIFR5cGU6OldoaWxlOgot
ICAgICAgICByZXR1cm4gIndoaWxlIjsKLSAgICBjYXNlIFR5cGU6OkRvOgotICAgICAgICByZXR1
cm4gImRvIjsKLSAgICBjYXNlIFR5cGU6OlJldHVybjoKLSAgICAgICAgcmV0dXJuICJyZXR1cm4i
OwotICAgIGNhc2UgVHlwZTo6TnVsbDoKLSAgICAgICAgcmV0dXJuICJudWxsIjsKLSAgICBjYXNl
IFR5cGU6OlRydWU6Ci0gICAgICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgY2FzZSBUeXBlOjpGYWxz
ZToKLSAgICAgICAgcmV0dXJuICJmYWxzZSI7Ci0gICAgY2FzZSBUeXBlOjpDb25zdGFudDoKLSAg
ICAgICAgcmV0dXJuICJjb25zdGFudCI7Ci0gICAgY2FzZSBUeXBlOjpEZXZpY2U6Ci0gICAgICAg
IHJldHVybiAiZGV2aWNlIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICBy
ZXR1cm4gInRocmVhZGdyb3VwIjsKLSAgICBjYXNlIFR5cGU6OlRocmVhZDoKLSAgICAgICAgcmV0
dXJuICJ0aHJlYWQiOwotICAgIGNhc2UgVHlwZTo6U3BhY2U6Ci0gICAgICAgIHJldHVybiAic3Bh
Y2UiOwotICAgIGNhc2UgVHlwZTo6VmVydGV4OgotICAgICAgICByZXR1cm4gInZlcnRleCI7Ci0g
ICAgY2FzZSBUeXBlOjpGcmFnbWVudDoKLSAgICAgICAgcmV0dXJuICJmcmFnbWVudCI7Ci0gICAg
Y2FzZSBUeXBlOjpDb21wdXRlOgotICAgICAgICByZXR1cm4gImNvbXB1dGUiOwotICAgIGNhc2Ug
VHlwZTo6TnVtVGhyZWFkczoKLSAgICAgICAgcmV0dXJuICJudW10aHJlYWRzIjsKLSAgICBjYXNl
IFR5cGU6OlNWSW5zdGFuY2VJRDoKLSAgICAgICAgcmV0dXJuICJTVl9JbnN0YW5jZUlEIjsKLSAg
ICBjYXNlIFR5cGU6OlNWVmVydGV4SUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfVmVydGV4SUQiOwot
ICAgIGNhc2UgVHlwZTo6UFNpemU6Ci0gICAgICAgIHJldHVybiAiUFNJWkUiOwotICAgIGNhc2Ug
VHlwZTo6U1ZQb3NpdGlvbjoKLSAgICAgICAgcmV0dXJuICJTVl9Qb3NpdGlvbiI7Ci0gICAgY2Fz
ZSBUeXBlOjpTVklzRnJvbnRGYWNlOgotICAgICAgICByZXR1cm4gIlNWX0lzRnJvbnRGYWNlIjsK
LSAgICBjYXNlIFR5cGU6OlNWU2FtcGxlSW5kZXg6Ci0gICAgICAgIHJldHVybiAiU1ZfU2FtcGxl
SW5kZXgiOwotICAgIGNhc2UgVHlwZTo6U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4g
IlNWX0lubmVyQ292ZXJhZ2UiOwotICAgIGNhc2UgVHlwZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJl
dHVybiAiU1ZfVGFyZ2V0IjsKLSAgICBjYXNlIFR5cGU6OlNWRGVwdGg6Ci0gICAgICAgIHJldHVy
biAiU1ZfRGVwdGgiOwotICAgIGNhc2UgVHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0dXJu
ICJTVl9Db3ZlcmFnZSI7Ci0gICAgY2FzZSBUeXBlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6Ci0gICAg
ICAgIHJldHVybiAiU1ZfRGlzcGF0Y2hUaHJlYWRJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3Vw
SUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfR3JvdXBJRCI7Ci0gICAgY2FzZSBUeXBlOjpTVkdyb3Vw
SW5kZXg6Ci0gICAgICAgIHJldHVybiAiU1ZfR3JvdXBJbmRleCI7Ci0gICAgY2FzZSBUeXBlOjpT
Vkdyb3VwVGhyZWFkSUQ6Ci0gICAgICAgIHJldHVybiAiU1ZfR3JvdXBUaHJlYWRJRCI7Ci0gICAg
Y2FzZSBUeXBlOjpBdHRyaWJ1dGU6Ci0gICAgICAgIHJldHVybiAiU1ZfQXR0cmlidXRlIjsKLSAg
ICBjYXNlIFR5cGU6OlJlZ2lzdGVyOgotICAgICAgICByZXR1cm4gInJlZ2lzdGVyIjsKLSAgICBj
YXNlIFR5cGU6OlNwZWNpYWxpemVkOgotICAgICAgICByZXR1cm4gInNwZWNpYWxpemVkIjsKLSAg
ICBjYXNlIFR5cGU6Ok5hdGl2ZToKLSAgICAgICAgcmV0dXJuICJuYXRpdmUiOwotICAgIGNhc2Ug
VHlwZTo6UmVzdHJpY3RlZDoKLSAgICAgICAgcmV0dXJuICJyZXN0cmljdGVkIjsKLSAgICBjYXNl
IFR5cGU6OlVuZGVyc2NvcmU6Ci0gICAgICAgIHJldHVybiAiXyI7Ci0gICAgY2FzZSBUeXBlOjpB
dXRvOgotICAgICAgICByZXR1cm4gImF1dG8iOwotICAgIGNhc2UgVHlwZTo6UHJvdG9jb2w6Ci0g
ICAgICAgIHJldHVybiAicHJvdG9jb2wiOwotICAgIGNhc2UgVHlwZTo6Q29uc3Q6Ci0gICAgICAg
IHJldHVybiAiY29uc3QiOwotICAgIGNhc2UgVHlwZTo6U3RhdGljOgotICAgICAgICByZXR1cm4g
InN0YXRpYyI7Ci0gICAgY2FzZSBUeXBlOjpRdWFsaWZpZXI6Ci0gICAgICAgIHJldHVybiAicXVh
bGlmaWVyIjsKLSAgICBjYXNlIFR5cGU6OklkZW50aWZpZXI6Ci0gICAgICAgIHJldHVybiAiaWRl
bnRpZmllciI7Ci0gICAgY2FzZSBUeXBlOjpPcGVyYXRvck5hbWU6Ci0gICAgICAgIHJldHVybiAi
b3BlcmF0b3IgbmFtZSI7Ci0gICAgY2FzZSBUeXBlOjpFcXVhbHNTaWduOgotICAgICAgICByZXR1
cm4gIj0iOwotICAgIGNhc2UgVHlwZTo6U2VtaWNvbG9uOgotICAgICAgICByZXR1cm4gIjsiOwot
ICAgIGNhc2UgVHlwZTo6TGVmdEN1cmx5QnJhY2tldDoKLSAgICAgICAgcmV0dXJuICJ7IjsKLSAg
ICBjYXNlIFR5cGU6OlJpZ2h0Q3VybHlCcmFja2V0OgotICAgICAgICByZXR1cm4gIn0iOwotICAg
IGNhc2UgVHlwZTo6Q29sb246Ci0gICAgICAgIHJldHVybiAiOiI7Ci0gICAgY2FzZSBUeXBlOjpD
b21tYToKLSAgICAgICAgcmV0dXJuICIsIjsKLSAgICBjYXNlIFR5cGU6OkxlZnRQYXJlbnRoZXNp
czoKLSAgICAgICAgcmV0dXJuICIoIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0UGFyZW50aGVzaXM6
Ci0gICAgICAgIHJldHVybiAiKSI7Ci0gICAgY2FzZSBUeXBlOjpTcXVhcmVCcmFja2V0UGFpcjoK
LSAgICAgICAgcmV0dXJuICJbXSI7Ci0gICAgY2FzZSBUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldDoK
LSAgICAgICAgcmV0dXJuICJbIjsKLSAgICBjYXNlIFR5cGU6OlJpZ2h0U3F1YXJlQnJhY2tldDoK
LSAgICAgICAgcmV0dXJuICJdIjsKLSAgICBjYXNlIFR5cGU6OlN0YXI6Ci0gICAgICAgIHJldHVy
biAiKiI7Ci0gICAgY2FzZSBUeXBlOjpMZXNzVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPCI7
Ci0gICAgY2FzZSBUeXBlOjpHcmVhdGVyVGhhblNpZ246Ci0gICAgICAgIHJldHVybiAiPiI7Ci0g
ICAgY2FzZSBUeXBlOjpGdWxsU3RvcDoKLSAgICAgICAgcmV0dXJuICIuIjsKLSAgICBjYXNlIFR5
cGU6OlBsdXNFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiKz0iOwotICAgIGNhc2UgVHlwZTo6TWlu
dXNFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiLT0iOwotICAgIGNhc2UgVHlwZTo6VGltZXNFcXVh
bHM6Ci0gICAgICAgIHJldHVybiAiKj0iOwotICAgIGNhc2UgVHlwZTo6RGl2aWRlRXF1YWxzOgot
ICAgICAgICByZXR1cm4gIi89IjsKLSAgICBjYXNlIFR5cGU6Ok1vZEVxdWFsczoKLSAgICAgICAg
cmV0dXJuICIlPSI7Ci0gICAgY2FzZSBUeXBlOjpYb3JFcXVhbHM6Ci0gICAgICAgIHJldHVybiAi
Xj0iOwotICAgIGNhc2UgVHlwZTo6QW5kRXF1YWxzOgotICAgICAgICByZXR1cm4gIiY9IjsKLSAg
ICBjYXNlIFR5cGU6Ok9yRXF1YWxzOgotICAgICAgICByZXR1cm4gInw9IjsKLSAgICBjYXNlIFR5
cGU6OlJpZ2h0U2hpZnRFcXVhbHM6Ci0gICAgICAgIHJldHVybiAiPj49IjsKLSAgICBjYXNlIFR5
cGU6OkxlZnRTaGlmdEVxdWFsczoKLSAgICAgICAgcmV0dXJuICI8PD0iOwotICAgIGNhc2UgVHlw
ZTo6UGx1c1BsdXM6Ci0gICAgICAgIHJldHVybiAiKysiOwotICAgIGNhc2UgVHlwZTo6TWludXNN
aW51czoKLSAgICAgICAgcmV0dXJuICItLSI7Ci0gICAgY2FzZSBUeXBlOjpBcnJvdzoKLSAgICAg
ICAgcmV0dXJuICItPiI7Ci0gICAgY2FzZSBUeXBlOjpRdWVzdGlvbk1hcms6Ci0gICAgICAgIHJl
dHVybiAiPyI7Ci0gICAgY2FzZSBUeXBlOjpPck9yOgotICAgICAgICByZXR1cm4gInx8IjsKLSAg
ICBjYXNlIFR5cGU6OkFuZEFuZDoKLSAgICAgICAgcmV0dXJuICImJiI7Ci0gICAgY2FzZSBUeXBl
OjpPcjoKLSAgICAgICAgcmV0dXJuICJ8IjsKLSAgICBjYXNlIFR5cGU6OlhvcjoKLSAgICAgICAg
cmV0dXJuICJeIjsKLSAgICBjYXNlIFR5cGU6OkFuZDoKLSAgICAgICAgcmV0dXJuICImIjsKLSAg
ICBjYXNlIFR5cGU6Okxlc3NUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIjw9IjsKLSAg
ICBjYXNlIFR5cGU6OkdyZWF0ZXJUaGFuT3JFcXVhbFRvOgotICAgICAgICByZXR1cm4gIj49IjsK
LSAgICBjYXNlIFR5cGU6OkVxdWFsQ29tcGFyaXNvbjoKLSAgICAgICAgcmV0dXJuICI9PSI7Ci0g
ICAgY2FzZSBUeXBlOjpOb3RFcXVhbDoKLSAgICAgICAgcmV0dXJuICIhPSI7Ci0gICAgY2FzZSBU
eXBlOjpSaWdodFNoaWZ0OgotICAgICAgICByZXR1cm4gIj4+IjsKLSAgICBjYXNlIFR5cGU6Okxl
ZnRTaGlmdDoKLSAgICAgICAgcmV0dXJuICI8PCI7Ci0gICAgY2FzZSBUeXBlOjpQbHVzOgotICAg
ICAgICByZXR1cm4gIisiOwotICAgIGNhc2UgVHlwZTo6TWludXM6Ci0gICAgICAgIHJldHVybiAi
LSI7Ci0gICAgY2FzZSBUeXBlOjpEaXZpZGU6Ci0gICAgICAgIHJldHVybiAiLyI7Ci0gICAgY2Fz
ZSBUeXBlOjpNb2Q6Ci0gICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBUeXBlOjpUaWxkZToK
LSAgICAgICAgcmV0dXJuICJ+IjsKLSAgICBjYXNlIFR5cGU6OkV4Y2xhbWF0aW9uUG9pbnQ6Ci0g
ICAgICAgIHJldHVybiAiISI7Ci0gICAgY2FzZSBUeXBlOjpBdDoKLSAgICAgICAgcmV0dXJuICJA
IjsKLSAgICBjYXNlIFR5cGU6OkVuZE9mRmlsZToKLSAgICAgICAgcmV0dXJuICJFT0YiOwotICAg
IGNhc2UgVHlwZTo6SW52YWxpZDoKLSAgICAgICAgcmV0dXJuICJMRVhJTkdfRVJST1IiOwotICAg
IH0KLX0KLQotc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkSWRlbnRpZmllclN0YXJ0
KFVDaGFyIHRoZUNoYXIpCi17Ci0gICAgcmV0dXJuICh0aGVDaGFyID49ICdhJyAmJiB0aGVDaGFy
IDw9ICd6JykKLSAgICAgICAgfHwgKHRoZUNoYXIgPj0gJ0EnICYmIHRoZUNoYXIgPD0gJ1onKQot
ICAgICAgICB8fCAodGhlQ2hhciA9PSAnXycpOwotfQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKFVDaGFyIHRoZUNoYXIpCi17Ci0g
ICAgcmV0dXJuICh0aGVDaGFyID49ICdhJyAmJiB0aGVDaGFyIDw9ICd6JykKLSAgICAgICAgfHwg
KHRoZUNoYXIgPj0gJ0EnICYmIHRoZUNoYXIgPD0gJ1onKQotICAgICAgICB8fCAodGhlQ2hhciA+
PSAnMCcgJiYgdGhlQ2hhciA8PSAnOScpCi0gICAgICAgIHx8ICh0aGVDaGFyID09ICdfJyk7Ci19
Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNIZXhhZGVjaW1hbENoYXJhY3RlcihVQ2hh
ciBjaGFyYWN0ZXIpCi17Ci0gICAgcmV0dXJuIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3Rl
ciA8PSAnOScpCi0gICAgICAgIHx8IChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAn
ZicpCi0gICAgICAgIHx8IChjaGFyYWN0ZXIgPj0gJ0EnICYmIGNoYXJhY3RlciA8PSAnRicpOwot
fQotCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzRGlnaXQoVUNoYXIgdGhlQ2hhcikKLXsK
LSAgICByZXR1cm4gdGhlQ2hhciA+PSAnMCcgJiYgdGhlQ2hhciA8PSAnOSc7Ci19Ci0KLWF1dG8g
TGV4ZXI6OmNvbnN1bWVUb2tlbkZyb21TdHJlYW0oKSAtPiBUb2tlbgotewotICAgIFVDaGFyIGN1
cnJlbnQgPSAwOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fb2Zmc2V0OwotCi0gICAgYXV0byBw
ZWVrID0gWyZdICgpIC0+IFVDaGFyIHsKLSAgICAgICAgaWYgKG9mZnNldCA8IG1fc3RyaW5nVmll
dy5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiBtX3N0cmluZ1ZpZXdbb2Zmc2V0XTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfTsKLQotICAgIGF1dG8gc2hpZnQgPSBbJl0gewotICAgICAg
ICBpZiAob2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBjdXJy
ZW50ID0gbV9zdHJpbmdWaWV3W29mZnNldF07Ci0gICAgICAgICAgICArK29mZnNldDsKLSAgICAg
ICAgICAgIHJldHVybiBjdXJyZW50OwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnQgPSAwOwot
ICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICB9OwotCi0gICAgYXV0byBjb25zdW1lID0gWyZd
IChVQ2hhciB0aGVDaGFyKSB7Ci0gICAgICAgIGlmIChwZWVrKCkgPT0gdGhlQ2hhcikgewotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBuZXh0SXNJZGVudGlmaWVy
ID0gWyZdIHsKLSAgICAgICAgcmV0dXJuIGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFy
KHBlZWsoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gdG9rZW4gPSBbJl0gKFRva2VuOjpUeXBlIHR5
cGUpIC0+IFRva2VuIHsKLSAgICAgICAgYXV0byBvbGRPZmZzZXQgPSBtX29mZnNldDsKLSAgICAg
ICAgbV9vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMo
KTsKLSAgICAgICAgcmV0dXJuIHsgeyBvbGRPZmZzZXQsIG9mZnNldCwgbV9uYW1lU3BhY2UgfSwg
dHlwZSB9OwotICAgIH07Ci0KLSAgICBzd2l0Y2ggKHNoaWZ0KCkpIHsKLSAgICBjYXNlICdBJzoK
LSAgICBjYXNlICdCJzoKLSAgICBjYXNlICdDJzoKLSAgICBjYXNlICdEJzoKLSAgICBjYXNlICdF
JzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICdIJzoKLSAgICBjYXNl
ICdJJzoKLSAgICBjYXNlICdKJzoKLSAgICBjYXNlICdLJzoKLSAgICBjYXNlICdMJzoKLSAgICBj
YXNlICdNJzoKLSAgICBjYXNlICdOJzoKLSAgICBjYXNlICdPJzoKLSAgICBjYXNlICdRJzoKLSAg
ICBjYXNlICdSJzoKLSAgICBjYXNlICdUJzoKLSAgICBjYXNlICdVJzoKLSAgICBjYXNlICdWJzoK
LSAgICBjYXNlICdXJzoKLSAgICBjYXNlICdYJzoKLSAgICBjYXNlICdZJzoKLSAgICBjYXNlICda
JzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdoJzoKLSAgICBjYXNlICdqJzoKLSAgICBjYXNl
ICdrJzoKLSAgICBjYXNlICdsJzoKLSAgICBjYXNlICdtJzoKLSAgICBjYXNlICdxJzoKLSAgICBj
YXNlICd4JzoKLSAgICBjYXNlICd5JzoKLSAgICBjYXNlICd6JzoKLXBhcnNlSWRlbnRpZmllcjoK
LSAgICAgICAgd2hpbGUgKGlzVmFsaWROb25TdGFydGluZ0lkZW50aWZpZXJDaGFyKHBlZWsoKSkp
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OklkZW50aWZpZXIpOwotCi0gICAgY2FzZSAncyc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7
Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnbScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UXVhbGlmaWVyKTsKLQot
ICAgICAgICBjYXNlICd3JzoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChu
ZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN3aXRjaCk7Ci0KLSAgICAg
ICAgY2FzZSAndCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChw
ZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTdHJ1Y3QpOwotICAgICAgICAgICAgY2FzZSAnYSc6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Qn
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlN0YXRpYyk7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAncCc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNwYWNlKTsKLSAg
ICAgICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3onKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnZCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlNwZWNpYWxpemVkKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2Fz
ZSAnUyc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnVicpKQotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnXycpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAg
Y2FzZSAnRyc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocGVl
aygpKSB7Ci0gICAgICAgICAgICBjYXNlICdJJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAn
RCc6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpTVkdyb3VwSUQpOwotICAgICAgICAgICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3gnKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6U1ZHcm91cEluZGV4KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgY2FzZSAnVCc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnSScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVkdy
b3VwVGhyZWFkSUQpOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdEJzoKLSAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAg
ICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3AnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlNWRGVwdGgpOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3MnKSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdwJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAg
ICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J1QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdoJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdEJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0
SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZEaXNwYXRjaFRo
cmVhZElEKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ0MnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd2Jykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZD
b3ZlcmFnZSk7Ci0gICAgICAgIGNhc2UgJ1QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2cnKSkKLSAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpTVlRhcmdldCk7Ci0gICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J3AnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZSgnbCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50
aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZTYW1wbGVJbmRleCk7Ci0gICAgICAgIGNh
c2UgJ1AnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdp
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6U1ZQb3NpdGlvbik7Ci0gICAgICAgIGNhc2UgJ1YnOgotICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykp
Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd4JykpCi0gICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0knKSkK
LSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnRCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZW
ZXJ0ZXhJRCk7Ci0gICAgICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnRicpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdGJykpCi0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnYScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
U1ZJc0Zyb250RmFjZSk7Ci0gICAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnQycpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghY29uc3VtZSgndicpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnYScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZycpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UpOwotICAgICAgICAgICAg
ICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Mn
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J0knKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ0QnKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6U1ZJbnN0
YW5jZUlEKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgfQotCi0gICAgY2FzZSAndCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0g
ICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpUcnVlKTsKLSAgICAgICAgY2FzZSAneSc6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
ZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OlR5cGVkZWYpOwotICAgICAgICBjYXNlICdoJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLQotICAgICAgICAgICAgaWYgKCFuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaHJlYWQpOwotCi0gICAgICAgICAg
ICBpZiAocGVlaygpICE9ICdnJykKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLQotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGN1
cnJlbnQgPT0gJ2cnKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgncicpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdv
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXApOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnZSc6Ci0g
ICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdtJykpCi0g
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4
dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFbnVtKTsKLSAgICAgICAgY2Fz
ZSAnbCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdz
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6
OkVsc2UpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ28nOgotICAgICAgICBpZiAoIWNvbnN1bWUoJ3An
KSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1
bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ28nKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsK
LSAgICAgICAgY2FzZSAnJic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJz4n
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKCc+JykpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwot
ICAgICAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoJzwnKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0gICAgICAgICAg
ICBpZiAoY29uc3VtZSgnPScpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3JOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBjb25zdW1lKCcrJyk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0KLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgY29uc3VtZSgnLScpOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJ3wn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICc9JzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkludmFsaWQpOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyonOgotICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZSk7Ci0K
LSAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGNhc2UgJyEn
OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6T3BlcmF0b3JOYW1lKTsKLQotICAgICAgICBjYXNlICd+JzoKLSAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFt
ZSk7Ci0KLSAgICAgICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWUpOwotCi0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6T3BlcmF0b3IpOwotCi0gICAgY2FzZSAnaSc6Ci0gICAgICAgIGlm
ICghY29uc3VtZSgnZicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJZik7Ci0KLSAgICBjYXNl
ICdjJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0gICAgICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
J2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkNhc2UpOwotCi0g
ICAgICAgIGNhc2UgJ2UnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnbycpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdpJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9r
ZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdt
JzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkNvbXB1dGUpOwotICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6Q29udGludWUpOwotICAgICAgICAgICAgICAgIGNh
c2UgJ3MnOgotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dElzSWRlbnRpZmllcigp
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpDb25z
dCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkNvbnN0YW50KTsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ2InOgotICAgICAgICBpZiAoIWNv
bnN1bWUoJ3InKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICBpZiAoIWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2snKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QnJl
YWspOwotCi0gICAgY2FzZSAnZCc6Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAg
IGNhc2UgJ28nOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJ
ZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRvKTsKLSAgICAgICAgY2FzZSAnZSc6
Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgJ2YnOgotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndScpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVy
KCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgICAgICBj
YXNlICd2JzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2MnKSkKLSAgICAgICAgICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
RGV2aWNlKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICB9Ci0KLQotICAgIGNhc2UgJ2YnOgot
ICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVy
KCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZvcik7Ci0gICAgICAgIGNhc2UgJ3InOgotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYScpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdn
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ20nKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3Qn
KSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
IChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkZyYWdtZW50KTsKLSAg
ICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKCdsJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0KLSAg
ICAgICAgICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICdsJzoKLSAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3Vt
ZSgnbycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdnJykpCi0gICAg
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZSgnaCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkZhbGx0aHJvdWdoKTsKLQotICAgICAgICAgICAgY2FzZSAncyc6Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2Un
KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBl
OjpGYWxzZSk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAg
Y2FzZSAnZic6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnbCcp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZWZhdWx0KTsKLSAgICAgICAgICAgIGNhc2UgJ3YnOgot
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdp
JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKG5l
eHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEZXZpY2UpOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgJ3cnOgotICAgICAgICBpZiAo
IWNvbnN1bWUoJ2gnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudGlmaWVyOwotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAg
Z290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
V2hpbGUpOwotCi0gICAgY2FzZSAncic6Ci0gICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHN3aXRjaCAocGVlaygpKSB7
Ci0gICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZSgndScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJz
ZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmIChuZXh0SXNJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJldHVybik7Ci0gICAgICAgIGNhc2UgJ2cnOgot
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAg
ICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCdzJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElz
SWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSZWdpc3Rlcik7Ci0gICAgICAgIGNh
c2UgJ3MnOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
dCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnYycpKQotICAgICAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0
JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBp
ZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZSgnZCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6UmVzdHJpY3RlZCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAnbic6Ci0gICAg
ICAgIHN3aXRjaCAocGVlaygpKSB7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICAgICAgc2hp
ZnQoKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3YnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6
VHlwZTo6TmF0aXZlKTsKLSAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgJ2wnOgotICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdsJykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
ICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6
TnVsbCk7Ci0gICAgICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2gnKSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ2EnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdkJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgncycpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBp
ZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok51bVRo
cmVhZHMpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBlZWsoKSkgewotICAgICAgICAgICAg
Y2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNvbnN1bWUoJ24nKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScp
KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdwJykpCi0gICAgICAgICAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnbycpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2wnKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdhJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdvJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgnbicpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQot
ICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAgICAgICBjYXNl
ICdwJzoKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghY29u
c3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdzJykpCi0g
ICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZSgncCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2UnKSkKLSAgICAgICAgICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1l
KCdjJykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ2knKSkKLSAgICAg
ICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjb25zdW1lKCd2JykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBpZiAobmV4dElzSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgY2FzZSAndic6Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICgh
Y29uc3VtZSgncicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0g
ICAgICAgIGlmICghY29uc3VtZSgnZScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZp
ZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgneCcpKQotICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50aWZpZXI7Ci0gICAgICAgIGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpW
ZXJ0ZXgpOwotCi0gICAgY2FzZSAnUCc6Ci0gICAgICAgIGlmICghY29uc3VtZSgnUycpKQotICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3VtZSgnSScp
KQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghY29uc3Vt
ZSgnWicpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICgh
Y29uc3VtZSgnRScpKQotICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
IGlmIChuZXh0SXNJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmll
cjsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQU2l6ZSk7Ci0KLSAgICBjYXNl
ICd1JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCduJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNl
SWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdpJykpCi0gICAgICAgICAgICBnb3Rv
IHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdmJykpCi0gICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykp
Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1l
KCdtJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG5l
eHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1YWxpZmllcik7Ci0KLSAgICBjYXNlICdw
JzoKLSAgICAgICAgaWYgKCFjb25zdW1lKCdyJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCd0JykpCi0gICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdvJykpCi0gICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdjJykpCi0g
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25zdW1lKCdv
JykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFjb25z
dW1lKCdsJykpCi0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlByb3RvY29sKTsKLQotICAgIGNhc2Ug
J18nOgotICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQotICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50aWZpZXI7Ci0gICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6VW5kZXJz
Y29yZSk7Ci0KLSAgICBjYXNlICdhJzoKLSAgICAgICAgc3dpdGNoIChwZWVrKCkpIHsKLSAgICAg
ICAgY2FzZSAndCc6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKCd0JykpCi0gICAgICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoJ3InKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnaScpKQotICAgICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdiJykpCi0gICAg
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoJ3UnKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGlmICghY29uc3VtZSgndCcpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlm
aWVyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCdlJykpCi0gICAgICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAobmV4dElzSWRlbnRpZmllcigpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpBdHRyaWJ1dGUpOwotICAgICAgICBjYXNlICd1JzoKLSAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoJ3QnKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgn
bycpKQotICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKG5leHRJc0lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRp
ZmllcjsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXV0byk7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnRpZmllcjsKLSAgICAgICAg
fQotCi0gICAgY2FzZSAnPic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc+JykpIHsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6UmlnaHRTaGlmdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN1bWUoJz0n
KSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVx
dWFsVG8pOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkdyZWF0ZXJUaGFuU2ln
bik7Ci0gICAgY2FzZSAnPCc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc8JykpIHsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpMZWZ0U2hpZnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25zdW1lKCc9Jykp
Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVhbFRv
KTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ24pOwotCi0g
ICAgY2FzZSAnKyc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlBsdXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgn
KycpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpQbHVzUGx1cyk7Ci0g
ICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6UGx1cyk7Ci0KLSAgICBjYXNlICctJzoK
LSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6TWludXNFcXVhbHMpOwotICAgICAgICBpZiAoY29uc3VtZSgnLScpKQotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsKLSAgICAgICAgaWYg
KGNvbnN1bWUoJz4nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6QXJy
b3cpOwotICAgICAgICBpZiAoaXNEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgZ290byBwYXJzZU51bWJlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
Y29uc3VtZSgnLicpKQotICAgICAgICAgICAgZ290byBwYXJzZUZsb2F0QWZ0ZXJEb3Q7Ci0gICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6TWludXMpOwotCi0gICAgY2FzZSAnKic6Ci0g
ICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OlRpbWVzRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpT
dGFyKTsKLQotICAgIGNhc2UgJy8nOgotICAgICAgICBpZiAoY29uc3VtZSgnPScpKQotICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpEaXZpZGVFcXVhbHMpOwotICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkRpdmlkZSk7Ci0KLSAgICBjYXNlICclJzoKLSAgICAg
ICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlw
ZTo6TW9kRXF1YWxzKTsKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpNb2QpOwot
Ci0gICAgY2FzZSAnXic6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAgICAgICBy
ZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlhvckVxdWFscyk7Ci0gICAgICAgIHJldHVybiB0b2tl
bihUb2tlbjo6VHlwZTo6WG9yKTsKLQotICAgIGNhc2UgJyYnOgotICAgICAgICBpZiAoY29uc3Vt
ZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBbmRFcXVhbHMp
OwotICAgICAgICBpZiAoY29uc3VtZSgnJicpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRv
a2VuOjpUeXBlOjpBbmRBbmQpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkFu
ZCk7Ci0KLSAgICBjYXNlICd8JzoKLSAgICAgICAgaWYgKGNvbnN1bWUoJz0nKSkKLSAgICAgICAg
ICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6T3JFcXVhbHMpOwotICAgICAgICBpZiAoY29u
c3VtZSgnfCcpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPck9yKTsK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpPcik7Ci0KLSAgICBjYXNlICdbJzoK
LSAgICAgICAgaWYgKGNvbnN1bWUoJ10nKSkKLSAgICAgICAgICAgIHJldHVybiB0b2tlbihUb2tl
bjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIpOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KTsKLQotICAgIGNhc2UgJz0nOgotICAgICAgICBpZiAo
Y29uc3VtZSgnPScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpFcXVh
bENvbXBhcmlzb24pOwotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OkVxdWFsc1Np
Z24pOwotCi0gICAgY2FzZSAnISc6Ci0gICAgICAgIGlmIChjb25zdW1lKCc9JykpCi0gICAgICAg
ICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6Ok5vdEVxdWFsKTsKLSAgICAgICAgcmV0dXJu
IHRva2VuKFRva2VuOjpUeXBlOjpFeGNsYW1hdGlvblBvaW50KTsKLQotICAgIGNhc2UgJzsnOgot
ICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlNlbWljb2xvbik7Ci0KLSAgICBjYXNl
ICd7JzoKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpMZWZ0Q3VybHlCcmFja2V0
KTsKLQotICAgIGNhc2UgJ30nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJp
Z2h0Q3VybHlCcmFja2V0KTsKLQotICAgIGNhc2UgJzonOgotICAgICAgICByZXR1cm4gdG9rZW4o
VG9rZW46OlR5cGU6OkNvbG9uKTsKLQotICAgIGNhc2UgJywnOgotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkNvbW1hKTsKLQotICAgIGNhc2UgJygnOgotICAgICAgICByZXR1cm4g
dG9rZW4oVG9rZW46OlR5cGU6OkxlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBjYXNlICcpJzoKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpSaWdodFBhcmVudGhlc2lzKTsKLQotICAg
IGNhc2UgJ10nOgotICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5cGU6OlJpZ2h0U3F1YXJl
QnJhY2tldCk7Ci0KLSAgICBjYXNlICcuJzoKLSAgICAgICAgaWYgKGlzRGlnaXQocGVlaygpKSkK
LSAgICAgICAgICAgIGdvdG8gcGFyc2VGbG9hdEFmdGVyRG90OwotICAgICAgICByZXR1cm4gdG9r
ZW4oVG9rZW46OlR5cGU6OkZ1bGxTdG9wKTsKLQotICAgIGNhc2UgJz8nOgotICAgICAgICByZXR1
cm4gdG9rZW4oVG9rZW46OlR5cGU6OlF1ZXN0aW9uTWFyayk7Ci0KLSAgICBjYXNlICd+JzoKLSAg
ICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpUaWxkZSk7Ci0KLSAgICBjYXNlICdAJzoK
LSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpBdCk7Ci0KLSAgICBjYXNlICcwJzoK
LSAgICBjYXNlICcxJzoKLSAgICBjYXNlICcyJzoKLSAgICBjYXNlICczJzoKLSAgICBjYXNlICc0
JzoKLSAgICBjYXNlICc1JzoKLSAgICBjYXNlICc2JzoKLSAgICBjYXNlICc3JzoKLSAgICBjYXNl
ICc4JzoKLSAgICBjYXNlICc5JzogewotcGFyc2VOdW1iZXI6Ci0gICAgICAgIGlmIChjdXJyZW50
ID09ICcwJyAmJiBjb25zdW1lKCd4JykpIHsKLSAgICAgICAgICAgIHdoaWxlIChpc0hleGFkZWNp
bWFsQ2hhcmFjdGVyKHBlZWsoKSkpCi0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKCd1JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpVaW50TGl0ZXJhbCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9rZW4oVG9rZW46OlR5
cGU6OkludExpdGVyYWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVl
aygpKSkKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnN1bWUoJy4nKSkg
ewotcGFyc2VGbG9hdEFmdGVyRG90OgotICAgICAgICAgICAgd2hpbGUgKGlzRGlnaXQocGVlaygp
KSkKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgY29uc3VtZSgnZicpOwot
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnN1bWUoJ2YnKSkKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsKTsKLQotICAgICAgICBpZiAoY29uc3VtZSgn
dScpKQotICAgICAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCk7
Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsKTsKLSAgICB9
Ci0KLSAgICBkZWZhdWx0OiAKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1fb2Zm
c2V0ID09IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRva2VuKFRva2Vu
OjpUeXBlOjpFbmRPZkZpbGUpOwotICAgIHJldHVybiB0b2tlbihUb2tlbjo6VHlwZTo6SW52YWxp
ZCk7Ci19Ci0KLQotLy8gV2UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHR3byBwcm9wZXJ0aWVzIG9m
IFVuaWNvZGU6Ci0vLyAxLiBUaGUgY29uc2l0dXRlbnQgVVRGLTE2IGNvZGUgdW5pdHMgZm9yIGFs
bCBub24tQk1QIGNvZGUgcG9pbnRzIGFyZSBzdXJyb2dhdGVzLAotLy8gd2hpY2ggbWVhbnMgd2Un
bGwgbmV2ZXIgc2VlIGEgZmFsc2UgbWF0Y2guIElmIHdlIHNlZSBhIEJNUCBjb2RlIHVuaXQsIHdl
Ci0vLyByZWFsbHkgaGF2ZSBhIEJNUCBjb2RlIHBvaW50LgotLy8gMi4gRXZlcnl0aGluZyB3ZSdy
ZSBsb29raW5nIGZvciBpcyBpbiBCTVAKLQotc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFj
ZShVQ2hhciBjb2RlVW5pdCkKLXsKLSAgICBzd2l0Y2ggKGNvZGVVbml0KSB7Ci0gICAgY2FzZSAn
ICc6Ci0gICAgY2FzZSAnXHQnOgotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc05ld2xpbmUoVUNoYXIgY29kZVVuaXQpCi17
Ci0gICAgc3dpdGNoIChjb2RlVW5pdCkgewotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci19Ci0KLWF1dG8gTGV4ZXI6OmxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkgLT4g
TGluZUFuZENvbHVtbgotewotICAgIC8vIENvdW50aW5nIGZyb20gMSB0byBtYXRjaCBtb3N0IHRl
eHQgZWRpdG9ycy4KLSAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gMTsKLSAgICB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIgPSAxOwotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwg
c3RkOjptaW4oc3RyaW5nVmlldy5sZW5ndGgoKSwgdGFyZ2V0T2Zmc2V0KTsgKytvZmZzZXQpIHsK
LSAgICAgICAgKytjb2x1bW5OdW1iZXI7Ci0gICAgICAgIGlmIChpc05ld2xpbmUoc3RyaW5nVmll
d1tvZmZzZXRdKSkgewotICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAgICAgICAgICAgY29s
dW1uTnVtYmVyID0gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4geyBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nVmlldz4g
c291cmNlRnJvbU5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlMSwgY29uc3QgU3RyaW5nKiBzb3VyY2UyKQotewotICAgIHN3aXRjaCAobmFtZVNw
YWNlKSB7Ci0gICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5OgotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFj
ZTE6Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHNvdXJjZTEpOwotICAgIGNhc2UgQVNUOjpO
YW1lU3BhY2U6Ok5hbWVTcGFjZTI6Ci0gICAgICAgIEFTU0VSVChzb3VyY2UyKTsKLSAgICAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcoKnNvdXJjZTIpOwotICAgIH0KLX0KLQotU3RyaW5nIExleGVyOjpl
cnJvclN0cmluZyhFcnJvciBlcnJvciwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJp
bmcqIHNvdXJjZTIpCi17Ci0gICAgaWYgKGF1dG8gY29kZUxvY2F0aW9uID0gZXJyb3IuY29kZUxv
Y2F0aW9uKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc291cmNlID0gc291cmNlRnJvbU5hbWVTcGFj
ZShjb2RlTG9jYXRpb24ubmFtZVNwYWNlKCksIHNvdXJjZTEsIHNvdXJjZTIpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGxpbmVBbmRDb2x1bW4gPSBsaW5lQW5kQ29sdW1uTnVtYmVyRnJvbU9mZnNldCgq
c291cmNlLCBlcnJvci5jb2RlTG9jYXRpb24oKS5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKGxpbmVBbmRDb2x1bW4ubGluZSwgJzonLCBsaW5lQW5kQ29sdW1u
LmNvbHVtbiwgIjogIiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZXJyb3IubWVzc2FnZSgpOwotfQotCi12b2lkIExleGVyOjpza2lwV2hpdGVzcGFjZUFu
ZENvbW1lbnRzKCkKLXsKLSAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3N0cmluZ1ZpZXcubGVuZ3Ro
KCkpIHsKLSAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShtX3N0cmluZ1ZpZXdbbV9vZmZzZXRdKSkK
LSAgICAgICAgICAgICsrbV9vZmZzZXQ7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RyaW5nVmlld1tt
X29mZnNldF0gPT0gJy8nICYmIG1fb2Zmc2V0ICsgMSA8IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgaWYgKG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewot
ICAgICAgICAgICAgICAgIC8vIExpbmUgY29tbWVudAotICAgICAgICAgICAgICAgIG1fb2Zmc2V0
ICs9IDI7Ci0gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIFxyXG4g
dGhpcyBtYWtlcyB0aGUgY29tbWVudCBlbmQgb24gdGhlIFxyLiBJdCBpcyBmaW5lLCBhcyB0aGUg
XG4gYWZ0ZXIgdGhhdCBpcyBzaW1wbGUgd2hpdGVzcGFjZS4KLSAgICAgICAgICAgICAgICBmb3Ig
KCA7IG1fb2Zmc2V0IDwgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpICYmICFpc05ld2xpbmUobV9zdHJp
bmdWaWV3W21fb2Zmc2V0XSk7ICsrbV9vZmZzZXQpIHsgfQotICAgICAgICAgICAgfSBlbHNlIGlm
IChtX3N0cmluZ1ZpZXdbbV9vZmZzZXQgKyAxXSA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICAv
LyBMb25nIGNvbW1lbnQKLSAgICAgICAgICAgICAgICBmb3IgKCA7IG1fb2Zmc2V0IDwgbV9zdHJp
bmdWaWV3Lmxlbmd0aCgpIDsgKyttX29mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9zdHJpbmdWaWV3W21fb2Zmc2V0XSA9PSAnKicgJiYgbV9vZmZzZXQgKyAxIDwgbV9zdHJpbmdW
aWV3Lmxlbmd0aCgpICYmIG1fc3RyaW5nVmlld1ttX29mZnNldCArIDFdID09ICcvJykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vZmZzZXQgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExl
eGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODQzMTcxZDIxODkyNDY0NDZlYTBiNWQz
MTE0NzNkNjUwOGJhYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZVNwYWNl
LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIExleGVyOwotCi1zdHJ1Y3QgVG9rZW4gewotICAgIENvZGVMb2NhdGlvbiBjb2Rl
TG9jYXRpb247Ci0gICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7Ci0gICAgICAgIEludExp
dGVyYWwsCi0gICAgICAgIFVpbnRMaXRlcmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAg
ICAgIFN0cnVjdCwKLSAgICAgICAgVHlwZWRlZiwKLSAgICAgICAgRW51bSwKLSAgICAgICAgT3Bl
cmF0b3IsCi0gICAgICAgIElmLAotICAgICAgICBFbHNlLAotICAgICAgICBDb250aW51ZSwKLSAg
ICAgICAgQnJlYWssCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgQ2FzZSwKLSAgICAgICAgRGVm
YXVsdCwKLSAgICAgICAgRmFsbHRocm91Z2gsCi0gICAgICAgIEZvciwKLSAgICAgICAgV2hpbGUs
Ci0gICAgICAgIERvLAotICAgICAgICBSZXR1cm4sCi0gICAgICAgIE51bGwsCi0gICAgICAgIFRy
dWUsCi0gICAgICAgIEZhbHNlLAotICAgICAgICBDb25zdGFudCwKLSAgICAgICAgRGV2aWNlLAot
ICAgICAgICBUaHJlYWRncm91cCwKLSAgICAgICAgVGhyZWFkLAotICAgICAgICBTcGFjZSwKLSAg
ICAgICAgVmVydGV4LAotICAgICAgICBGcmFnbWVudCwKLSAgICAgICAgQ29tcHV0ZSwKLSAgICAg
ICAgTnVtVGhyZWFkcywKLSAgICAgICAgU1ZJbnN0YW5jZUlELAotICAgICAgICBTVlZlcnRleElE
LAotICAgICAgICBQU2l6ZSwKLSAgICAgICAgU1ZQb3NpdGlvbiwKLSAgICAgICAgU1ZJc0Zyb250
RmFjZSwKLSAgICAgICAgU1ZTYW1wbGVJbmRleCwKLSAgICAgICAgU1ZJbm5lckNvdmVyYWdlLAot
ICAgICAgICBTVlRhcmdldCwKLSAgICAgICAgU1ZEZXB0aCwKLSAgICAgICAgU1ZDb3ZlcmFnZSwK
LSAgICAgICAgU1ZEaXNwYXRjaFRocmVhZElELAotICAgICAgICBTVkdyb3VwSUQsCi0gICAgICAg
IFNWR3JvdXBJbmRleCwKLSAgICAgICAgU1ZHcm91cFRocmVhZElELAotICAgICAgICBBdHRyaWJ1
dGUsCi0gICAgICAgIFJlZ2lzdGVyLAotICAgICAgICBTcGVjaWFsaXplZCwKLSAgICAgICAgTmF0
aXZlLAotICAgICAgICBSZXN0cmljdGVkLAotICAgICAgICBVbmRlcnNjb3JlLAotICAgICAgICBB
dXRvLAotICAgICAgICBQcm90b2NvbCwKLSAgICAgICAgQ29uc3QsCi0gICAgICAgIFN0YXRpYywK
LSAgICAgICAgUXVhbGlmaWVyLAotICAgICAgICBJZGVudGlmaWVyLAotICAgICAgICBPcGVyYXRv
ck5hbWUsCi0gICAgICAgIEVxdWFsc1NpZ24sCi0gICAgICAgIFNlbWljb2xvbiwKLSAgICAgICAg
TGVmdEN1cmx5QnJhY2tldCwKLSAgICAgICAgUmlnaHRDdXJseUJyYWNrZXQsCi0gICAgICAgIENv
bG9uLAotICAgICAgICBDb21tYSwKLSAgICAgICAgTGVmdFBhcmVudGhlc2lzLAotICAgICAgICBS
aWdodFBhcmVudGhlc2lzLAotICAgICAgICBTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgTGVm
dFNxdWFyZUJyYWNrZXQsCi0gICAgICAgIFJpZ2h0U3F1YXJlQnJhY2tldCwKLSAgICAgICAgU3Rh
ciwKLSAgICAgICAgTGVzc1RoYW5TaWduLAotICAgICAgICBHcmVhdGVyVGhhblNpZ24sCi0gICAg
ICAgIEZ1bGxTdG9wLAotICAgICAgICBQbHVzRXF1YWxzLAotICAgICAgICBNaW51c0VxdWFscywK
LSAgICAgICAgVGltZXNFcXVhbHMsCi0gICAgICAgIERpdmlkZUVxdWFscywKLSAgICAgICAgTW9k
RXF1YWxzLAotICAgICAgICBYb3JFcXVhbHMsCi0gICAgICAgIEFuZEVxdWFscywKLSAgICAgICAg
T3JFcXVhbHMsCi0gICAgICAgIFJpZ2h0U2hpZnRFcXVhbHMsCi0gICAgICAgIExlZnRTaGlmdEVx
dWFscywKLSAgICAgICAgUGx1c1BsdXMsCi0gICAgICAgIE1pbnVzTWludXMsCi0gICAgICAgIEFy
cm93LAotICAgICAgICBRdWVzdGlvbk1hcmssCi0gICAgICAgIE9yT3IsCi0gICAgICAgIEFuZEFu
ZCwKLSAgICAgICAgT3IsCi0gICAgICAgIFhvciwKLSAgICAgICAgQW5kLAotICAgICAgICBMZXNz
VGhhbk9yRXF1YWxUbywKLSAgICAgICAgR3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAgIEVx
dWFsQ29tcGFyaXNvbiwKLSAgICAgICAgTm90RXF1YWwsCi0gICAgICAgIFJpZ2h0U2hpZnQsCi0g
ICAgICAgIExlZnRTaGlmdCwKLSAgICAgICAgUGx1cywKLSAgICAgICAgTWludXMsCi0gICAgICAg
IERpdmlkZSwKLSAgICAgICAgTW9kLAotICAgICAgICBUaWxkZSwKLSAgICAgICAgRXhjbGFtYXRp
b25Qb2ludCwKLSAgICAgICAgQXQsCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICAgICAgSW52YWxp
ZAotICAgIH0gdHlwZSB7VHlwZTo6SW52YWxpZH07Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciog
dHlwZU5hbWUoVHlwZSk7Ci0KLSAgICBpbmxpbmUgU3RyaW5nVmlldyBzdHJpbmdWaWV3KGNvbnN0
IExleGVyJikgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgfQotfTsK
LQotaW5saW5lIENvZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKGNvbnN0IFRva2VuJiB0b2tlbikK
LSAgICA6IENvZGVMb2NhdGlvbih0b2tlbi5jb2RlTG9jYXRpb24pCi17Ci19Ci0KLWNsYXNzIExl
eGVyIHsKLXB1YmxpYzoKLSAgICBMZXhlcigpID0gZGVmYXVsdDsKLQotICAgIExleGVyKFN0cmlu
Z1ZpZXcgc3RyaW5nVmlldywgQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlKQotICAgICAgICA6IG1f
c3RyaW5nVmlldyhzdHJpbmdWaWV3KQotICAgICAgICAsIG1fbmFtZVNwYWNlKG5hbWVTcGFjZSkK
LSAgICB7Ci0gICAgICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKLSAgICAgICAgbV9y
aW5nQnVmZmVyWzBdID0gY29uc3VtZVRva2VuRnJvbVN0cmVhbSgpOwotICAgICAgICBtX3JpbmdC
dWZmZXJbMV0gPSBjb25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgfQotCi0gICAgTGV4ZXIo
Y29uc3QgTGV4ZXImKSA9IGRlbGV0ZTsKLSAgICBMZXhlcihMZXhlciYmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBMZXhlciYgb3BlcmF0b3I9KGNvbnN0IExleGVyJikgPSBkZWxldGU7Ci0gICAgTGV4ZXIm
IG9wZXJhdG9yPShMZXhlciYmKSA9IGRlZmF1bHQ7Ci0KLQotICAgIFRva2VuIGNvbnN1bWVUb2tl
bigpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmluZ0J1ZmZlclttX3JpbmdCdWZm
ZXJJbmRleF07Ci0gICAgICAgIG1fcmluZ0J1ZmZlclttX3JpbmdCdWZmZXJJbmRleF0gPSBjb25z
dW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlckluZGV4ID0gKG1fcmlu
Z0J1ZmZlckluZGV4ICsgMSkgJSAyOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIFRva2VuIHBlZWsoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZl
clttX3JpbmdCdWZmZXJJbmRleF07Ci0gICAgfQotCi0gICAgVG9rZW4gcGVla0Z1cnRoZXIoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmluZ0J1ZmZlclsobV9yaW5nQnVmZmVySW5k
ZXggKyAxKSAlIDJdOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQg
dGhpcwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgz
NTcKLSAgICBzdHJ1Y3QgU3RhdGUgewotICAgICAgICBUb2tlbiByaW5nQnVmZmVyWzJdOwotICAg
ICAgICB1bnNpZ25lZCByaW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldDsK
LSAgICB9OwotCi0gICAgU3RhdGUgc3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgU3RhdGUg
c3RhdGU7Ci0gICAgICAgIHN0YXRlLnJpbmdCdWZmZXJbMF0gPSBtX3JpbmdCdWZmZXJbMF07Ci0g
ICAgICAgIHN0YXRlLnJpbmdCdWZmZXJbMV0gPSBtX3JpbmdCdWZmZXJbMV07Ci0gICAgICAgIHN0
YXRlLnJpbmdCdWZmZXJJbmRleCA9IG1fcmluZ0J1ZmZlckluZGV4OwotICAgICAgICBzdGF0ZS5v
ZmZzZXQgPSBtX29mZnNldDsKLSAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgIH0KLQotICAgIHZv
aWQgc2V0U3RhdGUoY29uc3QgU3RhdGUmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9yaW5nQnVm
ZmVyWzBdID0gc3RhdGUucmluZ0J1ZmZlclswXTsKLSAgICAgICAgbV9yaW5nQnVmZmVyWzFdID0g
c3RhdGUucmluZ0J1ZmZlclsxXTsKLSAgICAgICAgbV9yaW5nQnVmZmVySW5kZXggPSBzdGF0ZS5y
aW5nQnVmZmVySW5kZXg7Ci0gICAgICAgIG1fb2Zmc2V0ID0gc3RhdGUub2Zmc2V0OwotCi0gICAg
fQotCi0gICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSYmIHN0YXRlKQotICAgIHsKLSAgICAgICAgbV9y
aW5nQnVmZmVyWzBdID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzBdKTsKLSAgICAgICAgbV9y
aW5nQnVmZmVyWzFdID0gV1RGTW92ZShzdGF0ZS5yaW5nQnVmZmVyWzFdKTsKLSAgICAgICAgbV9y
aW5nQnVmZmVySW5kZXggPSBXVEZNb3ZlKHN0YXRlLnJpbmdCdWZmZXJJbmRleCk7Ci0gICAgICAg
IG1fb2Zmc2V0ID0gV1RGTW92ZShzdGF0ZS5vZmZzZXQpOwotICAgIH0KLQotICAgIGJvb2wgaXNG
dWxseUNvbnN1bWVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwZWVrKCkudHlwZSA9
PSBUb2tlbjo6VHlwZTo6RW5kT2ZGaWxlOwotICAgIH0KLQotICAgIFN0cmluZyBlcnJvclN0cmlu
Zyhjb25zdCBUb2tlbiYgdG9rZW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJQYXJzZSBlcnJvciBhdCBsaW5lICIsIGxpbmVBbmRDb2x1
bW5OdW1iZXJGcm9tT2Zmc2V0KG1fc3RyaW5nVmlldywgdG9rZW4uc3RhcnRPZmZzZXQoKSkubGlu
ZSwgIjogIiwgbWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBlcnJvclN0cmlu
ZyhFcnJvciwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIgPSBu
dWxscHRyKTsKLQotICAgIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZVNwYWNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0cnVjdCBUb2tlbjsKLSAg
ICBUb2tlbiBjb25zdW1lVG9rZW5Gcm9tU3RyZWFtKCk7Ci0KLSAgICB2b2lkIHNraXBXaGl0ZXNw
YWNlQW5kQ29tbWVudHMoKTsKLQotICAgIHN0cnVjdCBMaW5lQW5kQ29sdW1uIHsKLSAgICAgICAg
dW5zaWduZWQgbGluZTsKLSAgICAgICAgdW5zaWduZWQgY29sdW1uOwotICAgIH07Ci0gICAgc3Rh
dGljIExpbmVBbmRDb2x1bW4gbGluZUFuZENvbHVtbk51bWJlckZyb21PZmZzZXQoY29uc3QgU3Ry
aW5nVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7Ci0KLSAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmll
dzsKLSAgICBUb2tlbiBtX3JpbmdCdWZmZXJbMl07Ci0gICAgdW5zaWduZWQgbV9yaW5nQnVmZmVy
SW5kZXggeyAwIH07Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07Ci0gICAgQVNUOjpOYW1l
U3BhY2UgbV9uYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5IH07Ci19
OwotCi1TdHJpbmdWaWV3IFRva2VuOjpzdHJpbmdWaWV3KGNvbnN0IExleGVyJiBsZXhlcikgY29u
c3QKLXsKLSAgICByZXR1cm4gbGV4ZXIubV9zdHJpbmdWaWV3LnN1YnN0cmluZyhjb2RlTG9jYXRp
b24uc3RhcnRPZmZzZXQoKSwgY29kZUxvY2F0aW9uLmVuZE9mZnNldCgpIC0gY29kZUxvY2F0aW9u
LnN0YXJ0T2Zmc2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExp
dGVyYWxUeXBlQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTcx
Y2Y1NjIwMzRkNTc0N2VkOWFlMzM0MDRmMDBjMWQxNjdmODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TExpdGVyYWxUeXBlQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0j
aW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKLSNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUg
IldITFNMVHlwZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLSNpZiBBU1NFUlRfRU5BQkxF
RAotc3RhdGljIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKiBnZXROYXRpdmVUeXBlRGVjbGFy
YXRpb24oQVNUOjpSZXNvbHZhYmxlVHlwZSYgcmVzb2x2YWJsZVR5cGUpCi17Ci0gICAgaWYgKCFp
czxBU1Q6OlR5cGVSZWZlcmVuY2U+KHJlc29sdmFibGVUeXBlLnJlc29sdmVkVHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0
PEFTVDo6VHlwZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAg
IGlmICghaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2
ZWRUeXBlKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJmRvd25jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KTsKLX0KLQotY2xhc3MgTGl0ZXJhbFR5cGVDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVi
bGljOgotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxv
YXRMaXRlcmFsVHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8qIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiA9IGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihmbG9hdExpdGVyYWxUeXBlKTsK
LSAgICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChu
YXRpdmVUeXBlRGVjbGFyYXRpb24tPmNhblJlcHJlc2VudEZsb2F0KCkoZmxvYXRMaXRlcmFsVHlw
ZS52YWx1ZSgpKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFs
VHlwZSYgaW50ZWdlckxpdGVyYWxUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byog
bmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZ2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKGludGVnZXJM
aXRlcmFsVHlwZSk7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwotICAg
ICAgICBBU1NFUlQobmF0aXZlVHlwZURlY2xhcmF0aW9uLT5jYW5SZXByZXNlbnRJbnRlZ2VyKCko
aW50ZWdlckxpdGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byogbmF0aXZlVHlwZURlY2xhcmF0aW9uID0g
Z2V0TmF0aXZlVHlwZURlY2xhcmF0aW9uKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKTsKLSAg
ICAgICAgQVNTRVJUKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChuYXRp
dmVUeXBlRGVjbGFyYXRpb24tPmNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLnZhbHVlKCkpKTsKLSAgICB9Ci19OwotI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECi0KLXZvaWQgY2hlY2tMaXRlcmFsVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKLXsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIExpdGVyYWxUeXBlQ2hlY2tlcigpLlZpc2l0b3I6OnZp
c2l0KHByb2dyYW0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0jZW5kaWYK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxY2FiZjg4YTg5MGIzNzA2M2U4YTIwMGE1
MGQ4MWQyZTY0NTc5MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lkIGNo
ZWNrTGl0ZXJhbFR5cGVzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MDBkYTg0YjhmNDEyMDFhZmViNjA4ZDQxNDEwNjVkZGUxOTRkNGU5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MjY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYW1lQ29udGV4dC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5j
bHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLU5hbWVDb250ZXh0OjpOYW1lQ29udGV4
dChOYW1lQ29udGV4dCogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi1F
eHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlR5cGVEZWZpbml0aW9u
JiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBpZiAoYXV0byBleGlzdGluZyA9IHRvcExldmVsRXhp
c3RzKHR5cGVEZWZpbml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbSIsICpleGlzdGluZykpOwotICAgIHR5
cGVEZWZpbml0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8g
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fdHlwZXNbaW5kZXhdLmFkZCh0eXBlRGVmaW5pdGlvbi5uYW1lKCksIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAg
QVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFw
cGVuZCh0eXBlRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IE5hbWVDb250ZXh0OjphZGQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1
Y3R1cmVEZWZpbml0aW9uKQotewotICAgIGlmIChhdXRvIGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlz
dHMoc3RydWN0dXJlRGVmaW5pdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgKmV4aXN0aW5nKSk7Ci0g
ICAgc3RydWN0dXJlRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsK
LSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFj
ZSk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3R5cGVzW2luZGV4XS5hZGQoc3RydWN0dXJlRGVmaW5p
dGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBl
PiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9
OwotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQotewotICAgIGlmIChhdXRv
IGV4aXN0aW5nID0gdG9wTGV2ZWxFeGlzdHMoZW51bWVyYXRpb25EZWZpbml0aW9uLm5hbWUoKSkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiRHVwbGljYXRlIG5hbWUgaW4g
cHJvZ3JhbS4iLCAqZXhpc3RpbmcpKTsKLSAgICBlbnVtZXJhdGlvbkRlZmluaXRpb24uc2V0TmFt
ZVNwYWNlKG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBl
c1tpbmRleF0uYWRkKGVudW1lcmF0aW9uRGVmaW5pdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgQVNTRVJUKHJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChlbnVtZXJh
dGlvbkRlZmluaXRpb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBOYW1lQ29udGV4dDo6YWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRl
ZmluaXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2VhcmNoVHlwZXMoZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cigiRHVwbGljYXRlIG5hbWUgaW4gcHJvZ3JhbS4iLCB0eXBlLT5jb2RlTG9jYXRpb24oKSkpOwot
ICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5zZXROYW1lU3BhY2UobV9jdXJyZW50TmFtZVNwYWNlKTsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fZnVuY3Rpb25zW2luZGV4XS5hZGQoZnVuY3Rpb25EZWZpbml0
aW9uLm5hbWUoKSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uPiwgMT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZnVu
Y3Rpb25EZWZpbml0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lkLCBF
cnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGlmIChhdXRvKiB0eXBlID0gc2Vh
cmNoVHlwZXMobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgdHlw
ZS0+Y29kZUxvY2F0aW9uKCkpKTsKLSAgICBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnNldE5h
bWVTcGFjZShtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9mdW5jdGlv
bnNbaW5kZXhdLmFkZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4oKSk7Ci0g
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bik7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IE5hbWVDb250
ZXh0OjphZGQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bikKLXsKLSAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5h
bWVTcGFjZSk7Ci0gICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNoRnVuY3Rpb25zKG5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXJyb3IoIkR1cGxpY2F0ZSBuYW1lIGluIHByb2dyYW0uIiwgZnVuY3Rpb24tPmNvZGVMb2NhdGlv
bigpKSk7Ci0gICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldE5hbWVTcGFjZShtX2N1cnJlbnRO
YW1lU3BhY2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbV90eXBlc1tpbmRleF0uYWRkKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5uYW1lKCksIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6
TmFtZWRUeXBlPiwgMT4oKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobmF0
aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeHBlY3RlZDx2b2lk
LCBFcnJvcj4gTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlh
YmxlRGVjbGFyYXRpb24pCi17Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4geyB9OwotICAgIGlmIChhdXRvKiBkZWNsYXJhdGlvbiA9
IGxvY2FsRXhpc3RzKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKCJEdXBsaWNhdGUgbmFtZSBpbiBwcm9ncmFtLiIsIGRlY2xh
cmF0aW9uLT5jb2RlTG9jYXRpb24oKSkpOwotICAgIGF1dG8gcmVzdWx0ID0gbV92YXJpYWJsZXMu
YWRkKFN0cmluZyh2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUoKSksICZ2YXJpYWJsZURlY2xhcmF0
aW9uKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IHJldHVybiB7IH07Ci19Ci0KLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFt
ZWRUeXBlPiwgMT4gTmFtZUNvbnRleHQ6OmdldFR5cGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNU
OjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSkKLXsKLSAgICAvLyBOYW1lZCB0eXBlcyBjYW4gb25s
eSBiZSBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsIG5hbWUgY29udGV4dC4KLSAgICBpZiAobV9wYXJl
bnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVudC0+Z2V0VHlwZXMobmFtZSwgZnJvbU5hbWVzcGFj
ZSk7Ci0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4s
IDE+IHJlc3VsdDsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGZyb21OYW1lc3BhY2UpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3R5cGVzW2luZGV4XS5maW5k
KG5hbWUpOwotICAgIGlmIChpdGVyYXRvciAhPSBtX3R5cGVzW2luZGV4XS5lbmQoKSkgewotICAg
ICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodHlwZSk7Ci0gICAgfQotCi0gICAgaWYgKGZyb21OYW1lc3BhY2UgIT0gQVNUOjpO
YW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KTsKLSAgICAgICAgaXRl
cmF0b3IgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRlcmF0b3Ig
IT0gbV90eXBlc1tpbmRleF0uZW5kKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDog
aXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1WZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBOYW1lQ29udGV4
dDo6Z2V0RnVuY3Rpb25zKGNvbnN0IFN0cmluZyYgbmFtZSwgQVNUOjpOYW1lU3BhY2UgZnJvbU5h
bWVzcGFjZSkKLXsKLSAgICAvLyBGdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhl
IGdsb2JhbCBuYW1lIGNvbnRleHQuCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICByZXR1cm4g
bV9wYXJlbnQtPmdldEZ1bmN0aW9ucyhuYW1lLCBmcm9tTmFtZXNwYWNlKTsKLQotICAgIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IHJl
c3VsdDsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21O
YW1lc3BhY2UpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChu
YW1lKTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0g
ICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh0eXBlKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbU5hbWVzcGFjZSAhPSBBU1Q6
Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGluZGV4ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICBp
dGVyYXRvciA9IG1fZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgICAgICBpZiAoaXRl
cmF0b3IgIT0gbV9mdW5jdGlvbnNbaW5kZXhdLmVuZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8gdHlwZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6Z2V0VmFyaWFibGUoY29uc3QgU3Ry
aW5nJiBuYW1lKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX3ZhcmlhYmxlcy5maW5kKG5hbWUp
OwotICAgIGlmIChpdGVyYXRvciA9PSBtX3ZhcmlhYmxlcy5lbmQoKSkgewotICAgICAgICBpZiAo
bV9wYXJlbnQpCi0gICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPmdldFZhcmlhYmxlKG5hbWUp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZTsKLX0KLQotQVNUOjpOYW1lZFR5cGUqIE5hbWVDb250ZXh0OjpzZWFyY2hUeXBlcyhTdHJp
bmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3Vy
cmVudE5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgdHlwZXMgOiBtX3R5cGVzKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIg
PSB0eXBlcy5maW5kKG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gdHlwZXMuZW5kKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudE5hbWVTcGFjZSk7Ci0gICAgYXV0byBpdGVyID0g
bV90eXBlc1tpbmRleF0uZmluZChuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX3R5cGVzW2luZGV4
XS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQotICAgIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJh
cnkpOwotICAgIGl0ZXIgPSBtX3R5cGVzW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVy
ICE9IG1fdHlwZXNbaW5kZXhdLmVuZCgpKQotICAgICAgICByZXR1cm4gJml0ZXItPnZhbHVlWzBd
LmdldCgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiogTmFtZUNvbnRleHQ6OnNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKCFtX3BhcmVudCk7Ci0gICAgaWYgKG1fY3VycmVudE5hbWVTcGFjZSA9PSBB
U1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZnVu
Y3Rpb25zIDogbV9mdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IGZ1bmN0aW9u
cy5maW5kKG5hbWUpOwotICAgICAgICAgICAgaWYgKGl0ZXIgIT0gZnVuY3Rpb25zLmVuZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAmaXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnROYW1lU3BhY2UpOwotICAgIGF1dG8gaXRlciA9IG1f
ZnVuY3Rpb25zW2luZGV4XS5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fZnVuY3Rpb25z
W2luZGV4XS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZVswXS5nZXQoKTsKLQot
ICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFy
ZExpYnJhcnkpOwotICAgIGl0ZXIgPSBtX2Z1bmN0aW9uc1tpbmRleF0uZmluZChuYW1lKTsKLSAg
ICBpZiAoaXRlciAhPSBtX2Z1bmN0aW9uc1tpbmRleF0uZW5kKCkpCi0gICAgICAgIHJldHVybiAm
aXRlci0+dmFsdWVbMF0uZ2V0KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RkOjpv
cHRpb25hbDxDb2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhTdHJpbmcm
IG5hbWUpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYW1lKSkK
LSAgICAgICAgcmV0dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwotICAgIGlmIChhdXRvKiBmdW5j
dGlvbiA9IHNlYXJjaEZ1bmN0aW9ucyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5j
b2RlTG9jYXRpb24oKTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1BU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24qIE5hbWVDb250ZXh0Ojpsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKG1fcGFyZW50KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxl
cy5maW5kKG5hbWUpOwotICAgIGlmIChpdGVyICE9IG1fdmFyaWFibGVzLmVuZCgpKQotICAgICAg
ICByZXR1cm4gaXRlci0+dmFsdWU7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzQwN2Q1MDZhMmM3ZDE0ZDQyMDNiYmQ2MTVjYmU0NmVjYTFlMjZlYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09N
UElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lU3Bh
Y2UuaCIKLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNl
IEFTVCB7Ci0KLWNsYXNzIE5hbWVkVHlwZTsKLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1j
bGFzcyBUeXBlRGVmaW5pdGlvbjsKLWNsYXNzIFN0cnVjdHVyZURlZmluaXRpb247Ci1jbGFzcyBF
bnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBGdW5jdGlvbkRlZmluaXRpb247Ci1jbGFzcyBO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uOwotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uOwot
Y2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbjsKLQotfQotCi1jbGFzcyBOYW1lQ29udGV4dCB7Ci1w
dWJsaWM6Ci0gICAgTmFtZUNvbnRleHQoTmFtZUNvbnRleHQqIHBhcmVudCA9IG51bGxwdHIpOwot
Ci0gICAgdm9pZCBzZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIGN1cnJlbnROYW1l
U3BhY2UpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKLSAgICAgICAgbV9jdXJy
ZW50TmFtZVNwYWNlID0gY3VycmVudE5hbWVTcGFjZTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gYWRkKEFTVDo6VHlwZURlZmluaXRpb24mKTsKLSAgICBFeHBlY3RlZDx2b2lk
LCBFcnJvcj4gYWRkKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpOwotICAgIEV4cGVjdGVkPHZv
aWQsIEVycm9yPiBhZGQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mKTsKLSAgICBFeHBlY3Rl
ZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7Ci0gICAgRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKLSAg
ICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gYWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7
Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFkZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24m
KTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6TmFtZWRUeXBlPiwg
MT4gZ2V0VHlwZXMoY29uc3QgU3RyaW5nJiwgQVNUOjpOYW1lU3BhY2UgZnJvbU5hbWVzcGFjZSk7
Ci0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uPiwgMT4gZ2V0RnVuY3Rpb25zKGNvbnN0IFN0cmluZyYsIEFTVDo6TmFtZVNwYWNlIGZyb21O
YW1lc3BhY2UpOwotICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiogZ2V0VmFyaWFibGUoY29u
c3QgU3RyaW5nJik7Ci0KLXByaXZhdGU6Ci0gICAgQVNUOjpOYW1lZFR5cGUqIHNlYXJjaFR5cGVz
KFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBzZWFy
Y2hGdW5jdGlvbnMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPENvZGVM
b2NhdGlvbj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24qIGxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0KLSAg
ICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1l
ZFR5cGU+LCAxPj4gbV90eXBlc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uPiwgMT4+IG1fZnVuY3Rpb25zW0FTVDo6bmFtZVNwYWNlQ291bnRdOwotICAgIEhhc2hNYXA8
U3RyaW5nLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qPiBtX3ZhcmlhYmxlczsKLSAgICBOYW1l
Q29udGV4dCogbV9wYXJlbnQ7Ci0gICAgQVNUOjpOYW1lU3BhY2UgbV9jdXJyZW50TmFtZVNwYWNl
IHsgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSB9OwotfTsKLQotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMGNhNTU5NWRkNjQ4MWMwMWNhYjdjZWY1NjA1YWFiYWNk
ZjQzYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJX
SExTTERvdEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oIgotI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgiCi0jaW5jbHVk
ZSAiV0hMU0xGb3JMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lQ29udGV4
dC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMUmVwbGFjZVdp
dGguaCIKLSNpbmNsdWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKLSNpbmNsdWRlICJX
SExTTFNjb3BlZFNldEFkZGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0j
aW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotTmFtZVJlc29sdmVyOjpOYW1lUmVz
b2x2ZXIoTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1lQ29udGV4dChuYW1l
Q29udGV4dCkKLXsKLX0KLQotTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVy
JiBwYXJlbnRSZXNvbHZlciwgTmFtZUNvbnRleHQmIG5hbWVDb250ZXh0KQotICAgIDogbV9uYW1l
Q29udGV4dChuYW1lQ29udGV4dCkKLSAgICAsIG1fcGFyZW50TmFtZVJlc29sdmVyKCZwYXJlbnRS
ZXNvbHZlcikKLSAgICAsIG1fY3VycmVudE5hbWVTcGFjZShwYXJlbnRSZXNvbHZlci5tX2N1cnJl
bnROYW1lU3BhY2UpCi17Ci19Ci0KLU5hbWVSZXNvbHZlcjo6fk5hbWVSZXNvbHZlcigpCi17Ci0g
ICAgaWYgKGhhc0Vycm9yKCkgJiYgbV9wYXJlbnROYW1lUmVzb2x2ZXIpCi0gICAgICAgIG1fcGFy
ZW50TmFtZVJlc29sdmVyLT5zZXRFcnJvcihyZXN1bHQoKS5lcnJvcigpKTsKLX0KLQotdm9pZCBO
YW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKLXsK
LSAgICBTY29wZWRTZXRBZGRlcjxBU1Q6OlR5cGVSZWZlcmVuY2UqPiBhZGRlcihtX3R5cGVSZWZl
cmVuY2VzLCAmdHlwZVJlZmVyZW5jZSk7Ci0gICAgaWYgKCFhZGRlci5pc05ld0VudHJ5KCkpIHsK
LSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgcmVjdXJzaXZlIHR5cGUgYXJndW1l
bnRzLiIsIHR5cGVSZWZlcmVuY2UuY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIGlmIChoYXNF
cnJvcigpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHR5cGVSZWZlcmVuY2UubWF5YmVSZXNv
bHZlZFR5cGUoKSkgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNjEgU2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIgdGhlIHR5cGUgaGFz
IGJlZW4gcmVzb2x2ZWQgb3Igbm90PwotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNhbmRp
ZGF0ZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKHR5cGVSZWZlcmVuY2UubmFtZSgpLCBtX2N1
cnJlbnROYW1lU3BhY2UpOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlcykK
LSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FuZGlkYXRlKTsKLSAgICBpZiAoYXV0byByZXN1bHQg
PSByZXNvbHZlVHlwZU92ZXJsb2FkSW1wbChjYW5kaWRhdGVzLCB0eXBlUmVmZXJlbmNlLnR5cGVB
cmd1bWVudHMoKSkpCi0gICAgICAgIHR5cGVSZWZlcmVuY2Uuc2V0UmVzb2x2ZWRUeXBlKCpyZXN1
bHQpOwotICAgIGVsc2UgewotICAgICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUg
dHlwZSBhcmd1bWVudHMuIiwgdHlwZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGdW5j
dGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKLXsKLSAgICBOYW1lQ29udGV4dCBu
ZXdOYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyIG5ld05hbWVS
ZXNvbHZlcigqdGhpcywgbmV3TmFtZUNvbnRleHQpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChm
dW5jdGlvbkRlZmluaXRpb24udHlwZSgpKTsKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKSkKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChw
YXJhbWV0ZXIpOwotICAgIG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rp
b25EZWZpbml0aW9uLmJsb2NrKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNU
OjpCbG9jayYgYmxvY2spCi17Ci0gICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFtZUNv
bnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250
ZXh0KTsKLSAgICBuZXdOYW1lUmVzb2x2ZXIuVmlzaXRvcjo6dmlzaXQoYmxvY2spOwotfQotCi12
b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAg
IGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIE5hbWVD
b250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0KTsKLSAgICAgICAgTmFtZVJlc29sdmVy
IG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAgICAgICBuZXdOYW1lUmVz
b2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgfQotICAg
IGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaWZTdGF0ZW1lbnQu
ZWxzZUJvZHkoKSkgewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29u
dGV4dCk7Ci0gICAgICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVD
b250ZXh0KTsKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCgqaWZT
dGF0ZW1lbnQuZWxzZUJvZHkoKSk7Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlz
aXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
d2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0g
ICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNvbHZlcigqdGhpcywgbmFtZUNvbnRleHQpOwotICAg
IG5ld05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19
Ci0KLXZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiB3aGlsZUxvb3Ap
Ci17Ci0gICAgewotICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4
dCk7Ci0gICAgICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIoKnRoaXMsIG5hbWVDb250
ZXh0KTsKLSAgICAgICAgbmV3TmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxv
b3AuYm9keSgpKTsKLSAgICB9Ci0KLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmNv
bmRpdGlvbmFsKCkpOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpGb3JMb29w
JiBmb3JMb29wKQotewotICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0KCZtX25hbWVDb250ZXh0
KTsKLSAgICBOYW1lUmVzb2x2ZXIgbmV3TmFtZVJlc29sdmVyKCp0aGlzLCBuYW1lQ29udGV4dCk7
Ci0gICAgbmV3TmFtZVJlc29sdmVyLlZpc2l0b3I6OnZpc2l0KGZvckxvb3ApOwotfQotCi12b2lk
IE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURl
Y2xhcmF0aW9uKQotewotICAgIGlmICghbV9uYW1lQ29udGV4dC5hZGQodmFyaWFibGVEZWNsYXJh
dGlvbikpIHsKLSAgICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWNsYXJlIGR1cGxpY2F0
ZSB2YXJpYWJsZXMuIiwgdmFyaWFibGVEZWNsYXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIFZpc2l0b3I6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRp
b24pOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5j
ZSYgdmFyaWFibGVSZWZlcmVuY2UpCi17Ci0gICAgaWYgKHZhcmlhYmxlUmVmZXJlbmNlLnZhcmlh
YmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvKiB2YXJpYWJsZSA9IG1fbmFt
ZUNvbnRleHQuZ2V0VmFyaWFibGUodmFyaWFibGVSZWZlcmVuY2UubmFtZSgpKSkKLSAgICAgICAg
dmFyaWFibGVSZWZlcmVuY2Uuc2V0VmFyaWFibGUoKnZhcmlhYmxlKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIkNhbm5vdCBmaW5kIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlv
bi4iLCB2YXJpYWJsZVJlZmVyZW5jZS5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9u
JiBkb3RFeHByZXNzaW9uKQotewotICAgIGlmIChpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihk
b3RFeHByZXNzaW9uLmJhc2UoKSkpIHsKLSAgICAgICAgYXV0byYgdmFyaWFibGVSZWZlcmVuY2Ug
PSBkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9uLmJhc2UoKSk7
Ci0gICAgICAgIGlmICghbV9uYW1lQ29udGV4dC5nZXRWYXJpYWJsZSh2YXJpYWJsZVJlZmVyZW5j
ZS5uYW1lKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIGJhc2VOYW1lID0gdmFyaWFibGVSZWZlcmVu
Y2UubmFtZSgpOwotICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29u
dGV4dC5nZXRUeXBlcyhiYXNlTmFtZSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAgICAgICAgICAg
IGlmIChlbnVtZXJhdGlvblR5cGVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgQVNU
OjpOYW1lZFR5cGUmIHR5cGUgPSBlbnVtZXJhdGlvblR5cGVzWzBdOwotICAgICAgICAgICAgICAg
IGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlv
biA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBtZW1iZXJOYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5p
dGlvbi5tZW1iZXJCeU5hbWUobWVtYmVyTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsID0gQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw6OndyYXAoZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShiYXNlTmFt
ZSksIFdURk1vdmUobWVtYmVyTmFtZSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgKm1lbWJlcik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsPihkb3RFeHByZXNzaW9uLCBXVEZNb3ZlKGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKEVycm9yKCJObyBlbnVtIG1l
bWJlciBtYXRjaGVzIHRoZSB1c2VkIG5hbWUuIiwgZG90RXhwcmVzc2lvbi5jb2RlTG9jYXRpb24o
KSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uVHlwZXMu
aXNFbXB0eSgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZpc2l0b3I6OnZpc2l0KGRvdEV4
cHJlc3Npb24pOwotfQotCi12b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKLXsKLSAgICBpZiAoZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMo
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmxlZnQoKSwgbV9jdXJyZW50TmFtZVNwYWNlKTsKLSAg
ICBpZiAoZW51bWVyYXRpb25UeXBlcy5zaXplKCkgPT0gMSkgewotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzNSBUaGlzIG5lZWRz
IHRvIHdvcmsgd2l0aCB0eXBlZGVmJ2VkIGVudW1zLgotICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYg
dHlwZSA9IGVudW1lcmF0aW9uVHlwZXNbMF07Ci0gICAgICAgIGlmIChpczxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4odHlwZSkpIHsKLSAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbj4odHlwZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVy
YXRpb25EZWZpbml0aW9uLm1lbWJlckJ5TmFtZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmln
aHQoKSkpIHsKLSAgICAgICAgICAgICAgICBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuc2V0RW51
bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
ZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgZW51bWVyYXRpb24gbWVtYmVyIGxpdGVyYWwu
IiwgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmNvZGVMb2NhdGlvbigpKSk7Ci19Ci0KLXZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCi17Ci0gICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRleHQo
Jm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIobmV3TmFt
ZUNvbnRleHQpOwotICAgIG5ld05hbWVSZXNvbHZlci5WaXNpdG9yOjp2aXNpdChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKTsKLX0KLQotLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTgxNjcgTWFrZSBzdXJlIGFsbCB0aGUgbmFtZXMgaGF2ZSBiZWVu
IHJlc29sdmVkLgotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVzSW5UeXBlcyhQ
cm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKLXsKLSAgICBmb3Ig
KGF1dG8mIHR5cGVEZWZpbml0aW9uIDogcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKSkgewotICAg
ICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudE5hbWVTcGFjZSh0eXBlRGVmaW5pdGlvbi5nZXQo
KS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQo
dHlwZURlZmluaXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3Ig
KGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gOiBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25z
KCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnROYW1lU3BhY2Uoc3RydWN0dXJl
RGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVj
a0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChuYW1lUmVz
b2x2ZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lUmVzb2x2ZXIucmVzdWx0
KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uIDogcHJvZ3Jh
bS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1
cnJlbnROYW1lU3BhY2UoZW51bWVyYXRpb25EZWZpbml0aW9uLmdldCgpLm5hbWVTcGFjZSgpKTsK
LSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmlu
aXRpb24pOwotICAgICAgICBpZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbmFtZVJlc29sdmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKSB7
Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vy
cm9yQW5kVmlzaXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNv
bHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHJl
c29sdmVUeXBlTmFtZXNJbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXIm
IG5hbWVSZXNvbHZlcikKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRD
dXJyZW50TmFtZVNwYWNlKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKS5uYW1lU3BhY2UoKSk7Ci0g
ICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5oYXNFcnJvcigpKQotICAgICAgICAgICAgcmV0
dXJuIG5hbWVSZXNvbHZlci5yZXN1bHQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygp
KSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5zZXRDdXJyZW50TmFtZVNwYWNlKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24uZ2V0KCkubmFtZVNwYWNlKCkpOwotICAgICAgICBuYW1lUmVzb2x2ZXIu
Y2hlY2tFcnJvckFuZFZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAgICBp
ZiAobmFtZVJlc29sdmVyLmhhc0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbmFtZVJlc29s
dmVyLnJlc3VsdCgpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hM
U0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGFhNGVkYmQ2YTc4N2MzYmUxNDkxNDY5MGUyYTdlODI3YzA4NjQ3NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgIldITFNMTmFtZUNvbnRl
eHQuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5h
bWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIE5hbWVSZXNvbHZlciA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBOYW1lUmVzb2x2ZXIoTmFtZUNvbnRleHQm
KTsKLSAgICBOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiwgTmFtZUNvbnRleHQmKTsKLQotICAg
IHZpcnR1YWwgfk5hbWVSZXNvbHZlcigpOwotCi0gICAgdm9pZCBzZXRDdXJyZW50TmFtZVNwYWNl
KEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkgeyBtX2N1cnJlbnROYW1lU3BhY2UgPSBuYW1lU3Bh
Y2U7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXQoQVNUOjpJZlN0YXRlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGls
ZUxvb3AmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6
OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsJikgb3ZlcnJpZGU7Ci0KLSAgICBOYW1lQ29udGV4dCYgbV9uYW1lQ29u
dGV4dDsKLSAgICBIYXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7
Ci0gICAgTmFtZVJlc29sdmVyKiBtX3BhcmVudE5hbWVSZXNvbHZlciB7IG51bGxwdHIgfTsKLSAg
ICBBU1Q6Ok5hbWVTcGFjZSBtX2N1cnJlbnROYW1lU3BhY2UgeyBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5IH07Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzb2x2ZU5hbWVz
SW5UeXBlcyhQcm9ncmFtJiwgTmFtZVJlc29sdmVyJik7Ci1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
cmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0ZmQ0NzIxNmMyMzJjOWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExT
TFBhcnNlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xBZGRyZXNzU3BhY2UuaCIKLSNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCi0jaW5j
bHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi0j
ZGVmaW5lIFBBUlNFKG5hbWUsIGVsZW1lbnQsIC4uLikgXAotICAgIGF1dG8gbmFtZSA9IHBhcnNl
IyNlbGVtZW50KF9fVkFfQVJHU19fKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsgXAotCi0jZGVmaW5lIENPTlNVTUVfVFlQ
RShuYW1lLCB0eXBlKSBcCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6
OnR5cGUpOyBcCi0gICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChuYW1lLmVycm9yKCkpOwotCi0jZGVmaW5lIFBFRUsobmFtZSkgXAotICAgIGF1dG8gbmFtZSA9
IHBlZWsoKTsgXAotICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobmFtZS5lcnJvcigpKTsKLQotI2RlZmluZSBQRUVLX0ZVUlRIRVIobmFtZSkgXAotICAgIGF1
dG8gbmFtZSA9IHBlZWtGdXJ0aGVyKCk7IFwKLSAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZShQ
cm9ncmFtJiBwcm9ncmFtLCBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlIG1vZGUs
IEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkgLT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+Ci17Ci0g
ICAgbV9sZXhlciA9IExleGVyKHN0cmluZ1ZpZXcsIG5hbWVTcGFjZSk7Ci0gICAgbV9tb2RlID0g
bW9kZTsKLQotICAgIHdoaWxlICghbV9sZXhlci5pc0Z1bGx5Q29uc3VtZWQoKSkgewotICAgICAg
ICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0gICAgICAgIHN3aXRjaCAodG9rZW4udHlw
ZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnZhbGlkOgotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U2VtaWNvbG9uOgotICAgICAgICAg
ICAgbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpUeXBlZGVmOiB7Ci0gICAgICAgICAgICBhdXRvIHR5cGVEZWZp
bml0aW9uID0gcGFyc2VUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCF0eXBlRGVm
aW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZURlZmlu
aXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0u
YXBwZW5kKFdURk1vdmUoKnR5cGVEZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFwcGVu
ZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5kUmVz
dWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6U3RydWN0OiB7Ci0gICAgICAgICAgICBhdXRvIHN0cnVjdHVyZURl
ZmluaXRpb24gPSBwYXJzZVN0cnVjdHVyZURlZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICgh
c3RydWN0dXJlRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoc3RydWN0dXJlRGVmaW5pdGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5k
UmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqc3RydWN0dXJlRGVmaW5pdGlvbikpOwot
ICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVudW06IHsKLSAgICAgICAg
ICAgIGF1dG8gZW51bWVyYXRpb25EZWZpbml0aW9uID0gcGFyc2VFbnVtZXJhdGlvbkRlZmluaXRp
b24oKTsKLSAgICAgICAgICAgIGlmICghZW51bWVyYXRpb25EZWZpbml0aW9uKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlbnVtZXJhdGlvbkRlZmluaXRpb24uZXJyb3Io
KSk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1v
dmUoKmVudW1lcmF0aW9uRGVmaW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1
bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5l
cnJvcigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6Ok5hdGl2ZTogewotICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBQYXJzaW5n
TW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKG1ha2VT
dHJpbmcoIiduYXRpdmUnIGNhbid0IGV4aXN0IG91dHNpZGUgb2YgdGhlIHN0YW5kYXJkIGxpYnJh
cnkuIikpOwotICAgICAgICAgICAgYXV0byBmdXJ0aGVyVG9rZW4gPSBwZWVrRnVydGhlcigpOwot
ICAgICAgICAgICAgaWYgKCFmdXJ0aGVyVG9rZW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgICAgIGlmIChmdXJ0aGVyVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlR5
cGVkZWYpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IHBh
cnNlTmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVU
eXBlRGVjbGFyYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChuYXRpdmVUeXBlRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBh
cHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpuYXRpdmVUeXBlRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA9IHBhcnNlTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigp
OwotICAgICAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmVy
cm9yKCkpOwotICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChX
VEZNb3ZlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFw
cGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5k
UmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVmYXVsdDogewotICAgICAgICAgICAgYXV0byBmdW5jdGlvbkRlZmluaXRpb24gPSBwYXJz
ZUZ1bmN0aW9uRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRp
b24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGZ1bmN0aW9uRGVmaW5p
dGlvbi5lcnJvcigpKTsKLSAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZSgqZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBpZiAoIWFw
cGVuZFJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBwZW5k
UmVzdWx0LmVycm9yKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpmYWlsKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgVHJ5VG9QZWVrIHRyeVRvUGVlaykgLT4gVW5leHBlY3RlZDxF
cnJvcj4KLXsKLSAgICBpZiAodHJ5VG9QZWVrID09IFRyeVRvUGVlazo6WWVzKSB7Ci0gICAgICAg
IGlmIChhdXRvIG5leHRUb2tlbiA9IHBlZWsoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcihtX2xleGVyLmVycm9yU3RyaW5nKCpuZXh0VG9rZW4sIG1lc3NhZ2UpKSk7
Ci0gICAgfQotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJDYW5u
b3QgbGV4OiAiLCBtZXNzYWdlKSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGVlaygpIC0+IEV4cGVj
dGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7Ci0g
ICAgaWYgKHRva2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAh
PSBUb2tlbjo6VHlwZTo6RW5kT2ZGaWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAg
IHJldHVybiBmYWlsKCJDYW5ub3QgY29uc3VtZSB0b2tlbiJfc3RyLCBUcnlUb1BlZWs6Ok5vKTsK
LX0KLQotYXV0byBQYXJzZXI6OnBlZWtGdXJ0aGVyKCkgLT4gRXhwZWN0ZWQ8VG9rZW4sIEVycm9y
PgotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWtGdXJ0aGVyKCk7Ci0gICAgaWYgKHRv
a2VuLnR5cGUgIT0gVG9rZW46OlR5cGU6OkludmFsaWQgJiYgdG9rZW4udHlwZSAhPSBUb2tlbjo6
VHlwZTo6RW5kT2ZGaWxlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVybiBm
YWlsKCJDYW5ub3QgY29uc3VtZSB0d28gdG9rZW5zIl9zdHIsIFRyeVRvUGVlazo6Tm8pOwotfQot
Ci10ZW1wbGF0ZSA8VG9rZW46OlR5cGUgdCwgVG9rZW46OlR5cGUuLi4gdHM+Ci1zdHJ1Y3QgVHlw
ZXMgewotICAgIHN0YXRpYyBib29sIGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gdCA9PSB0eXBlIHx8IFR5cGVzPHRzLi4uPjo6aW5jbHVkZXModHlwZSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIpCi0gICAgewotICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCks
ICIsICIpOwotICAgICAgICBUeXBlczx0cy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKLSAg
ICB9Ci19OwotdGVtcGxhdGUgPFRva2VuOjpUeXBlIHQ+Ci1zdHJ1Y3QgVHlwZXM8dD4gewotICAg
IHN0YXRpYyBib29sIGluY2x1ZGVzKFRva2VuOjpUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdCA9PSB0eXBlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhT
dHJpbmdCdWlsZGVyJiBidWlsZGVyKQotICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9r
ZW46OnR5cGVOYW1lKHQpKTsKLSAgICB9Ci19OwotCi0KLWJvb2wgUGFyc2VyOjpwZWVrVHlwZShU
b2tlbjo6VHlwZSB0eXBlKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAg
ICByZXR1cm4gdG9rZW4udHlwZSA9PSB0eXBlOwotfQotCi10ZW1wbGF0ZSA8VG9rZW46OlR5cGUu
Li4gdHlwZXM+Ci1ib29sIFBhcnNlcjo6cGVla1R5cGVzKCkKLXsKLSAgICBhdXRvIHRva2VuID0g
bV9sZXhlci5wZWVrKCk7Ci0gICAgcmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9r
ZW4udHlwZSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShUb2tl
bjo6VHlwZSB0eXBlKQotewotICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKLSAgICBp
ZiAodG9rZW4udHlwZSA9PSB0eXBlKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVU
b2tlbigpIH07Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdGVtcGxhdGUgPFRva2Vu
OjpUeXBlLi4uIHR5cGVzPgotc3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygp
Ci17Ci0gICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwotICAgIGlmIChUeXBlczx0eXBl
cy4uLj46OmluY2x1ZGVzKHRva2VuLnR5cGUpKQotICAgICAgICByZXR1cm4geyBtX2xleGVyLmNv
bnN1bWVUb2tlbigpIH07Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotYXV0byBQYXJz
ZXI6OmNvbnN1bWVUeXBlKFRva2VuOjpUeXBlIHR5cGUpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJv
cj4KLXsKLSAgICBhdXRvIHRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAo
dG9rZW4udHlwZSA9PSB0eXBlKQotICAgICAgICByZXR1cm4geyB0b2tlbiB9OwotICAgIHJldHVy
biBmYWlsKG1ha2VTdHJpbmcoIlVuZXhwZWN0ZWQgdG9rZW4gKGV4cGVjdGVkICIsIFRva2VuOjp0
eXBlTmFtZSh0eXBlKSwgIiBnb3QgIiwgVG9rZW46OnR5cGVOYW1lKHRva2VuLnR5cGUpLCAiKSIp
KTsKLX0KLQotdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotYXV0byBQYXJzZXI6OmNv
bnN1bWVUeXBlcygpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KLXsKLSAgICBhdXRvIGJ1aWxk
RXhwZWN0ZWRTdHJpbmcgPSBbJl0oKSAtPiBTdHJpbmcgewotICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJbIik7Ci0gICAgICAgIFR5cGVzPHR5
cGVzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XSIpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBh
dXRvIHRva2VuID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLSAgICBpZiAoVHlwZXM8dHlwZXMu
Li4+OjppbmNsdWRlcyh0b2tlbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIHsgdG9rZW4gfTsKLSAg
ICByZXR1cm4gZmFpbChtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHRva2VuIChleHBlY3RlZCBvbmUg
b2YgIiwgYnVpbGRFeHBlY3RlZFN0cmluZygpLCAiIGdvdCAiLCBUb2tlbjo6dHlwZU5hbWUodG9r
ZW4udHlwZSksICIpIikpOwotfQotCi1zdGF0aWMgaW50IGRpZ2l0VmFsdWUoVUNoYXIgY2hhcmFj
dGVyKQotewotICAgIGlmIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXIgLSAnMCc7Ci0gICAgaWYgKGNoYXJhY3RlciA+PSAnYScg
JiYgY2hhcmFjdGVyIDw9ICdmJykKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciAtICdhJyArIDEw
OwotICAgIHJldHVybiBjaGFyYWN0ZXIgLSAnQScgKyAxMDsKLX0KLQotc3RhdGljIEV4cGVjdGVk
PGludCwgRXJyb3I+IGludExpdGVyYWxUb0ludChTdHJpbmdWaWV3IHRleHQpCi17Ci0gICAgYm9v
bCBuZWdhdGUgPSBmYWxzZTsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCItIl9zdHIpKSB7Ci0g
ICAgICAgIG5lZ2F0ZSA9IHRydWU7Ci0gICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygxKTsK
LSAgICB9Ci0gICAgaW50IGJhc2UgPSAxMDsKLSAgICBpZiAodGV4dC5zdGFydHNXaXRoKCIweCJf
c3RyKSkgewotICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMik7Ci0gICAgICAgIGJhc2Ug
PSAxNjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byBj
b2RlUG9pbnQgOiB0ZXh0LmNvZGVQb2ludHMoKSkgewotICAgICAgICB1bnNpZ25lZCBkaWdpdCA9
IGRpZ2l0VmFsdWUoY29kZVBvaW50KTsKLSAgICAgICAgYXV0byBwcmV2aW91cyA9IHJlc3VsdDsK
LSAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogYmFzZSArIGRpZ2l0OwotICAgICAgICBpZiAocmVz
dWx0IDwgcHJldmlvdXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
bWFrZVN0cmluZygiaW50IGxpdGVyYWwgIiwgdGV4dCwgIiBpcyBvdXQgb2YgYm91bmRzIikpKTsK
LSAgICB9Ci0gICAgaWYgKG5lZ2F0ZSkgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihp
bnQ2NF90KSA+IHNpemVvZih1bnNpZ25lZCkgJiYgc2l6ZW9mKGludDY0X3QpID4gc2l6ZW9mKGlu
dCksICJUaGlzIGNvZGUgd291bGQgYmUgd3Jvbmcgb3RoZXJ3aXNlIik7Ci0gICAgICAgIGludDY0
X3QgaW50UmVzdWx0ID0gLXN0YXRpY19jYXN0PGludDY0X3Q+KHJlc3VsdCk7Ci0gICAgICAgIGlm
IChpbnRSZXN1bHQgPCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1pbigpKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtl
U3RyaW5nKCJpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlzIG91dCBvZiBib3VuZHMiKSkpOwotICAg
ICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KGludFJlc3VsdCkgfTsKLSAgICB9Ci0gICAg
aWYgKHJlc3VsdCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJp
bmcoImludCBsaXRlcmFsICIsIHRleHQsICIgaXMgb3V0IG9mIGJvdW5kcyIpKSk7Ci0gICAgcmV0
dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpIH07Ci19Ci0KLXN0YXRpYyBFeHBlY3RlZDx1
bnNpZ25lZCwgRXJyb3I+IHVpbnRMaXRlcmFsVG9VaW50KFN0cmluZ1ZpZXcgdGV4dCkKLXsKLSAg
ICB1bnNpZ25lZCBiYXNlID0gMTA7Ci0gICAgaWYgKHRleHQuc3RhcnRzV2l0aCgiMHgiX3N0cikp
IHsKLSAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDIpOwotICAgICAgICBiYXNlID0gMTY7
Ci0gICAgfQotICAgIEFTU0VSVCh0ZXh0LmVuZHNXaXRoKCJ1IikpOwotICAgIHRleHQgPSB0ZXh0
LnN1YnN0cmluZygwLCB0ZXh0Lmxlbmd0aCgpIC0gMSk7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKLSAgICBmb3IgKGF1dG8gY29kZVBvaW50IDogdGV4dC5jb2RlUG9pbnRzKCkpIHsKLSAgICAg
ICAgdW5zaWduZWQgZGlnaXQgPSBkaWdpdFZhbHVlKGNvZGVQb2ludCk7Ci0gICAgICAgIGF1dG8g
cHJldmlvdXMgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgKyBkaWdp
dDsKLSAgICAgICAgaWYgKHJlc3VsdCA8IHByZXZpb3VzKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoInVpbnQgbGl0ZXJhbCAiLCB0ZXh0LCAiIGlz
IG91dCBvZiBib3VuZHMiKSkpOwotICAgIH0KLSAgICByZXR1cm4geyByZXN1bHQgfTsKLX0KLQot
c3RhdGljIEV4cGVjdGVkPGZsb2F0LCBFcnJvcj4gZmxvYXRMaXRlcmFsVG9GbG9hdChTdHJpbmdW
aWV3IHRleHQpCi17Ci0gICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICBhdXRvIHJlc3VsdCA9
IHBhcnNlRG91YmxlKHRleHQsIHBhcnNlZExlbmd0aCk7Ci0gICAgaWYgKHBhcnNlZExlbmd0aCAh
PSB0ZXh0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFr
ZVN0cmluZygiQ2Fubm90IHBhcnNlIGZsb2F0ICIsIHRleHQpKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihyZXN1bHQpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZUludGVncmFs
TGl0ZXJhbCgpIC0+IEV4cGVjdGVkPFZhcmlhbnQ8aW50LCB1bnNpZ25lZD4sIEVycm9yPgotewot
ICAgIGF1dG8gaW50ZWdyYWxMaXRlcmFsVG9rZW4gPSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6
OkludExpdGVyYWwsIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbD4oKTsKLSAgICBpZiAoIWludGVn
cmFsTGl0ZXJhbFRva2VuKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxM
aXRlcmFsVG9rZW4uZXJyb3IoKSk7Ci0KLSAgICBzd2l0Y2ggKGludGVncmFsTGl0ZXJhbFRva2Vu
LT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBh
dXRvIHJlc3VsdCA9IGludExpdGVyYWxUb0ludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5n
VmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4g
e3sgKnJlc3VsdCB9fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJv
cigpKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBBU1NFUlQoaW50ZWdyYWxMaXRl
cmFsVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFsKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB1aW50TGl0ZXJhbFRvVWludChpbnRlZ3JhbExpdGVyYWxUb2tlbi0+c3RyaW5n
VmlldyhtX2xleGVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4g
e3sgKnJlc3VsdCB9fTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJv
cigpKTsKLSAgICB9Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZl
SW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPgotewotICAgIGF1
dG8gaW50ZWdyYWxMaXRlcmFsID0gY29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICgh
aW50ZWdyYWxMaXRlcmFsKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxM
aXRlcmFsLmVycm9yKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFtdKGludCB4KSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB7Ci0gICAgICAgIGlm
ICh4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVy
biB4OwotICAgIH0sIFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsK
LSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfSksICppbnRlZ3JhbExpdGVyYWwpOwotICAgIGlmIChy
ZXN1bHQpCi0gICAgICAgIHJldHVybiAqcmVzdWx0OwotICAgIHJldHVybiBmYWlsKCJpbnQgbGl0
ZXJhbCBpcyBuZWdhdGl2ZSJfc3RyKTsKLX0KLQotc3RhdGljIEV4cGVjdGVkPHVuc2lnbmVkLCBF
cnJvcj4gcmVjb2duaXplU2ltcGxlVW5zaWduZWRJbnRlZ2VyKFN0cmluZ1ZpZXcgc3RyaW5nVmll
dykKLXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGlmIChzdHJpbmdWaWV3Lmxlbmd0
aCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmco
IlNpbXBsZSB1bnNpZ25lZCBsaXRlcmFsICIsIHN0cmluZ1ZpZXcsICIgaXMgdG9vIHNob3J0Iikp
KTsKLSAgICBmb3IgKGF1dG8gY29kZVBvaW50IDogc3RyaW5nVmlldy5jb2RlUG9pbnRzKCkpIHsK
LSAgICAgICAgaWYgKGNvZGVQb2ludCA8ICcwJyB8fCBjb2RlUG9pbnQgPiAnOScpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygiU2ltcGxlIHVuc2ln
bmVkIGxpdGVyYWwgIiwgc3RyaW5nVmlldywgIiBpc24ndCBvZiB0aGUgZm9ybSBbMC05XSsiKSkp
OwotICAgICAgICBhdXRvIHByZXZpb3VzID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSByZXN1
bHQgKiAxMCArIChjb2RlUG9pbnQgLSAnMCcpOwotICAgICAgICBpZiAocmVzdWx0IDwgcHJldmlv
dXMpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IobWFrZVN0cmluZygi
U2ltcGxlIHVuc2lnbmVkIGxpdGVyYWwgIiwgc3RyaW5nVmlldywgIiBpcyBvdXQgb2YgYm91bmRz
IikpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
Q29uc3RhbnRFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24s
IEVycm9yPgotewotICAgIGF1dG8gdHlwZSA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46
OlR5cGU6OkludExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbCwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok51
bGwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUcnVlLAotICAgICAgICBUb2tlbjo6VHlwZTo6RmFs
c2UsCi0gICAgICAgIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyPigpOwotICAgIGlmICghdHlwZSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7Ci0KLSAgICBzd2l0
Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFsOiB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+c3RyaW5nVmlldyhtX2xl
eGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQodmFsdWUuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7eyBBU1Q6OkludGVnZXJMaXRl
cmFsKHsgKnR5cGUgfSwgKnZhbHVlKSB9fTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
VWludExpdGVyYWw6IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5
cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4g
e3sgQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKHsgKnR5cGUgfSwgKnZhbHVlKSB9fTsKLSAg
ICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmxvYXRMaXRlcmFsOiB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSBmbG9hdExpdGVyYWxUb0Zsb2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwot
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZh
bHVlLmVycm9yKCkpOwotICAgICAgICByZXR1cm4ge3sgQVNUOjpGbG9hdExpdGVyYWwoeyAqdHlw
ZSB9LCAqdmFsdWUpIH19OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpUcnVlOgotICAg
ICAgICByZXR1cm4geyBBU1Q6OkJvb2xlYW5MaXRlcmFsKFdURk1vdmUoKnR5cGUpLCB0cnVlKSB9
OwotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZhbHNlOgotICAgICAgICByZXR1cm4geyBBU1Q6OkJv
b2xlYW5MaXRlcmFsKFdURk1vdmUoKnR5cGUpLCBmYWxzZSkgfTsKLSAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgIEFTU0VSVCh0eXBlLT50eXBlID09IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAg
ICAgICAgQ09OU1VNRV9UWVBFKGZ1bGxTdG9wLCBGdWxsU3RvcCk7Ci0gICAgICAgIENPTlNVTUVf
VFlQRShuZXh0LCBJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwoeyAqdHlwZSwgKm5leHQgfSwgdHlwZS0+c3RyaW5nVmlldyhtX2xleGVy
KS50b1N0cmluZygpLCBuZXh0LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpIH07Ci0g
ICAgfQotICAgIH0KLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlVHlwZUFyZ3VtZW50KCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpUeXBlQXJndW1lbnQsIEVycm9yPgotewotICAgIFBFRUsobmV4dFRva2VuKTsK
LSAgICBQRUVLX0ZVUlRIRVIoZnVydGhlclRva2VuKTsKLSAgICBpZiAobmV4dFRva2VuLT50eXBl
ICE9IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyIHx8IGZ1cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6RnVsbFN0b3ApIHsKLSAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNzaW9uLCBD
b25zdGFudEV4cHJlc3Npb24pOwotICAgICAgICByZXR1cm4gQVNUOjpUeXBlQXJndW1lbnQoV1RG
TW92ZSgqY29uc3RhbnRFeHByZXNzaW9uKSk7Ci0gICAgfQotICAgIENPTlNVTUVfVFlQRShyZXN1
bHQsIElkZW50aWZpZXIpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqcmVzdWx0KTsKLSAg
ICByZXR1cm4gQVNUOjpUeXBlQXJndW1lbnQoQVNUOjpUeXBlUmVmZXJlbmNlOjpjcmVhdGUobG9j
YXRpb24sIHJlc3VsdC0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBBU1Q6OlR5cGVB
cmd1bWVudHMoKSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnRzKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpUeXBlQXJndW1lbnRzLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlR5cGVBcmd1
bWVudHMgdHlwZUFyZ3VtZW50czsKLSAgICBhdXRvIGxlc3NUaGFuU2lnbiA9IHRyeVR5cGUoVG9r
ZW46OlR5cGU6Okxlc3NUaGFuU2lnbik7Ci0gICAgaWYgKCFsZXNzVGhhblNpZ24pCi0gICAgICAg
IHJldHVybiB0eXBlQXJndW1lbnRzOwotCi0gICAgYXV0byBncmVhdGVyVGhhblNpZ24gPSB0cnlU
eXBlKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgIGlmIChncmVhdGVyVGhhblNp
Z24pCi0gICAgICAgIHJldHVybiB0eXBlQXJndW1lbnRzOwotCi0gICAgUEFSU0UodHlwZUFyZ3Vt
ZW50LCBUeXBlQXJndW1lbnQpOwotICAgIHR5cGVBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnR5
cGVBcmd1bWVudCkpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYXV0byBncmVhdGVy
VGhhblNpZ24gPSB0cnlUeXBlKFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhblNpZ24pOwotICAgICAg
ICBpZiAoZ3JlYXRlclRoYW5TaWduKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQ09O
U1VNRV9UWVBFKGNvbW1hLCBDb21tYSk7Ci0gICAgICAgIFBBUlNFKHR5cGVBcmd1bWVudCwgVHlw
ZUFyZ3VtZW50KTsKLSAgICAgICAgdHlwZUFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqdHlwZUFy
Z3VtZW50KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5cGVBcmd1bWVudHM7Ci19Ci0KLWF1dG8g
UGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZm
aXhBYmJyZXZpYXRlZCwgRXJyb3I+Ci17Ci0gICAgYXV0byB0b2tlbiA9IGNvbnN1bWVUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTcXVhcmVC
cmFja2V0UGFpciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwot
ICAgIGlmICghdG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0b2tlbi5lcnJv
cigpKTsKLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFj
a2V0KSB7Ci0gICAgICAgIGF1dG8gbnVtRWxlbWVudHMgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRl
Z3JhbExpdGVyYWwoKTsKLSAgICAgICAgaWYgKCFudW1FbGVtZW50cykKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChudW1FbGVtZW50cy5lcnJvcigpKTsKLSAgICAgICAgQ09OU1VN
RV9UWVBFKHJpZ2h0U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAg
cmV0dXJuIHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgKm51bUVs
ZW1lbnRzIH19OwotICAgIH0KLSAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwgKnRva2VuLCBzdGQ6
Om51bGxvcHQgfX07Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCwgRXJyb3I+Ci17Ci0g
ICAgYXV0byB0b2tlbiA9IGNvbnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OlN0YXIs
Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0UGFpciwKLSAgICAgICAgVG9rZW46
OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlmICghdG9rZW4pCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh0b2tlbi5lcnJvcigpKTsKLSAgICBpZiAodG9rZW4tPnR5cGUg
PT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KSB7Ci0gICAgICAgIGF1dG8gbnVtRWxl
bWVudHMgPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICAgICAgaWYg
KCFudW1FbGVtZW50cykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChudW1FbGVt
ZW50cy5lcnJvcigpKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0U3F1YXJlQnJhY2tldCwg
UmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7IHsgKnRva2VuLCAqcmlnaHRT
cXVhcmVCcmFja2V0IH0sICp0b2tlbiwgc3RkOjpudWxsb3B0LCAqbnVtRWxlbWVudHMgfX07Ci0g
ICAgfQotICAgIGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAg
IFRva2VuOjpUeXBlOjpDb25zdGFudCwKLSAgICAgICAgVG9rZW46OlR5cGU6OkRldmljZSwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhy
ZWFkPigpOwotICAgIGlmICghYWRkcmVzc1NwYWNlVG9rZW4pCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChhZGRyZXNzU3BhY2VUb2tlbi5lcnJvcigpKTsKLSAgICBBU1Q6OkFkZHJlc3NT
cGFjZSBhZGRyZXNzU3BhY2U7Ci0gICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkg
ewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNvbnN0YW50OgotICAgICAgICBhZGRyZXNzU3BhY2Ug
PSBBU1Q6OkFkZHJlc3NTcGFjZTo6Q29uc3RhbnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkRldmljZToKLSAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNz
U3BhY2U6OkRldmljZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhy
ZWFkZ3JvdXA6Ci0gICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJl
YWRncm91cDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGFk
ZHJlc3NTcGFjZVRva2VuLT50eXBlID09IFRva2VuOjpUeXBlOjpUaHJlYWQpOwotICAgICAgICBh
ZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2Ug
fSwgc3RkOjpudWxsb3B0IH19OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gRXhw
ZWN0ZWQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4KLXsKLSAgICBhdXRvIGFkZHJlc3NT
cGFjZVRva2VuID0gdHJ5VHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpDb25zdGFudCwKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkRldmljZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OlRocmVhZGdy
b3VwLAotICAgICAgICBUb2tlbjo6VHlwZTo6VGhyZWFkPigpOwotCi0gICAgQ09OU1VNRV9UWVBF
KG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5cGVBcmd1bWVu
dHMpOwotCi0gICAgaWYgKGFkZHJlc3NTcGFjZVRva2VuKSB7Ci0gICAgICAgIEFTVDo6QWRkcmVz
c1NwYWNlIGFkZHJlc3NTcGFjZTsKLSAgICAgICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+
dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICAgICAgICAg
IGFkZHJlc3NTcGFjZSA9IEFTVDo6QWRkcmVzc1NwYWNlOjpDb25zdGFudDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZpY2U6Ci0gICAgICAgICAgICBh
ZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlRocmVhZGdyb3VwOgotICAgICAgICAgICAg
YWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQoYWRkcmVzc1Nw
YWNlVG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlRocmVhZCk7Ci0gICAgICAgICAgICBhZGRy
ZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeEFiYnJldmlh
dGVkID0gWyZdKGNvbnN0IFR5cGVTdWZmaXhBYmJyZXZpYXRlZCYgdHlwZVN1ZmZpeEFiYnJldmlh
dGVkLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4mJiBwcmV2aW91cykgLT4gUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+IHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqYWRkcmVzc1NwYWNl
VG9rZW4sIHR5cGVTdWZmaXhBYmJyZXZpYXRlZC5sb2NhdGlvbik7Ci0gICAgICAgICAgICBzd2l0
Y2ggKHR5cGVTdWZmaXhBYmJyZXZpYXRlZC50b2tlbi50eXBlKSB7Ci0gICAgICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpTdGFyOgotICAgICAgICAgICAgICAgIHJldHVybiB7IEFTVDo6UG9pbnRl
clR5cGU6OmNyZWF0ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKHByZXZpb3VzKSkg
fTsKLSAgICAgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJyYWNrZXRQYWlyOgotICAg
ICAgICAgICAgICAgIHJldHVybiB7IEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlOjpjcmVhdGUobG9j
YXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlU3VmZml4QWJicmV2aWF0ZWQudG9r
ZW4udHlwZSA9PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiB7IEFTVDo6QXJyYXlUeXBlOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJl
dmlvdXMpLCAqdHlwZVN1ZmZpeEFiYnJldmlhdGVkLm51bUVsZW1lbnRzKSB9OwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotICAgICAgICBQQVJTRShmaXJzdFR5cGVTdWZmaXhBYmJyZXZpYXRl
ZCwgVHlwZVN1ZmZpeEFiYnJldmlhdGVkKTsKLSAgICAgICAgUmVmPEFTVDo6VW5uYW1lZFR5cGU+
IHJlc3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKFdURk1vdmUoKmFkZHJlc3NTcGFj
ZVRva2VuKSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0
eXBlQXJndW1lbnRzKSk7Ci0gICAgICAgIGF1dG8gbmV4dCA9IGNvbnN0cnVjdFR5cGVGcm9tU3Vm
Zml4QWJicmV2aWF0ZWQoKmZpcnN0VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3Vs
dCkpOwotICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKG5leHQpOwotICAgICAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICAgICAgUEVFSyhuZXh0VG9rZW4pOwotICAgICAgICAgICAgaWYgKG5leHRU
b2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3RhcgotICAgICAgICAgICAgICAgICYmIG5leHRU
b2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAgICAgICAg
ICAgICAmJiBuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0
KSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQ
QVJTRSh0eXBlU3VmZml4QWJicmV2aWF0ZWQsIFR5cGVTdWZmaXhBYmJyZXZpYXRlZCk7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogVGhlIG5lc3RpbmcgaGVyZSBtaWdodCBiZSBpbiB0aGUgd3Jvbmcg
b3JkZXIuCi0gICAgICAgICAgICBuZXh0ID0gY29uc3RydWN0VHlwZUZyb21TdWZmaXhBYmJyZXZp
YXRlZCgqdHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gV1RGTW92ZShuZXh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RG
TW92ZShyZXN1bHQpOwotICAgIH0KLQotICAgIGF1dG8gY29uc3RydWN0VHlwZUZyb21TdWZmaXhO
b25BYmJyZXZpYXRlZCA9IFsmXShjb25zdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQmIHR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZCwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYgcHJldmlvdXMpIC0+
IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigq
bmFtZSwgdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmxvY2F0aW9uKTsKLSAgICAgICAgc3dpdGNo
ICh0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQudG9rZW4udHlwZSkgewotICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTdGFyOgotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpQb2ludGVyVHlwZTo6
Y3JlYXRlKGxvY2F0aW9uLCAqdHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLmFkZHJlc3NTcGFjZSwg
V1RGTW92ZShwcmV2aW91cykpIH07Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlNxdWFyZUJy
YWNrZXRQYWlyOgotICAgICAgICAgICAgcmV0dXJuIHsgQVNUOjpBcnJheVJlZmVyZW5jZVR5cGU6
OmNyZWF0ZShsb2NhdGlvbiwgKnR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC5hZGRyZXNzU3BhY2Us
IFdURk1vdmUocHJldmlvdXMpKSB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUKHR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZC50b2tlbi50eXBlID09IFRva2VuOjpUeXBlOjpM
ZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgICAgICByZXR1cm4geyBBU1Q6OkFycmF5VHlwZTo6
Y3JlYXRlKGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgKnR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZC5udW1FbGVtZW50cykgfTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgUmVmPEFTVDo6VW5u
YW1lZFR5cGU+IHJlc3VsdCA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKCpuYW1lLCBuYW1l
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnR5cGVBcmd1bWVudHMp
KTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBQRUVLKG5leHRUb2tlbik7Ci0gICAgICAg
IGlmIChuZXh0VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OlN0YXIKLSAgICAgICAgICAgICYm
IG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6U3F1YXJlQnJhY2tldFBhaXIKLSAgICAg
ICAgICAgICYmIG5leHRUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNr
ZXQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFBBUlNFKHR5cGVT
dWZmaXhOb25BYmJyZXZpYXRlZCwgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKTsKLSAgICAgICAg
Ly8gRklYTUU6IFRoZSBuZXN0aW5nIGhlcmUgbWlnaHQgYmUgaW4gdGhlIHdyb25nIG9yZGVyLgot
ICAgICAgICBhdXRvIG5leHQgPSBjb25zdHJ1Y3RUeXBlRnJvbVN1ZmZpeE5vbkFiYnJldmlhdGVk
KCp0eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIHJl
c3VsdCA9IFdURk1vdmUobmV4dCk7Ci0gICAgfQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVR5cGVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpUeXBlRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgVHlw
ZWRlZik7Ci0gICAgQ09OU1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIENPTlNVTUVf
VFlQRShlcXVhbHMsIEVxdWFsc1NpZ24pOwotICAgIFBBUlNFKHR5cGUsIFR5cGUpOwotICAgIENP
TlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgcmV0dXJuIEFTVDo6VHlwZURl
ZmluaXRpb24oeyAqb3JpZ2luLCAqc2VtaWNvbG9uIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhl
cikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZSkpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VC
dWlsdEluU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYywgRXJyb3I+
Ci17Ci0gICAgYXV0byBvcmlnaW4gPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBl
OjpTVkluc3RhbmNlSUQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlZlcnRleElELAotICAgICAg
ICBUb2tlbjo6VHlwZTo6UFNpemUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVlBvc2l0aW9uLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFjZSwKLSAgICAgICAgVG9rZW46OlR5cGU6
OlNWU2FtcGxlSW5kZXgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2UsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpTVlRhcmdldCwKLSAgICAgICAgVG9rZW46OlR5cGU6OlNWRGVw
dGgsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTVkNvdmVyYWdlLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6U1ZEaXNwYXRjaFRocmVhZElELAotICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cElELAot
ICAgICAgICBUb2tlbjo6VHlwZTo6U1ZHcm91cEluZGV4LAotICAgICAgICBUb2tlbjo6VHlwZTo6
U1ZHcm91cFRocmVhZElEPigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQob3JpZ2luLmVycm9yKCkpOwotCi0gICAgc3dpdGNoIChvcmlnaW4tPnR5cGUp
IHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkluc3RhbmNlSUQ6Ci0gICAgICAgIHJldHVybiBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZh
cmlhYmxlOjpTVkluc3RhbmNlSUQpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVmVydGV4SUQ6
Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpC
dWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlZlcnRleElEKTsKLSAgICBjYXNlIFRva2VuOjpU
eXBlOjpQU2l6ZToKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdp
biB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlBTaXplKTsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpTVlBvc2l0aW9uOgotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZQb3NpdGlv
bik7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZJc0Zyb250RmFjZToKLSAgICAgICAgcmV0dXJu
IEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlNWSXNGcm9udEZhY2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWU2FtcGxl
SW5kZXg6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwg
QVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4KTsKLSAgICBjYXNl
IFRva2VuOjpUeXBlOjpTVklubmVyQ292ZXJhZ2U6Ci0gICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VklubmVyQ292ZXJhZ2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWVGFyZ2V0OiB7Ci0gICAg
ICAgIGF1dG8gdGFyZ2V0ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7IC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODA3IE1h
a2UgdGhpcyB3b3JrIHdpdGggc3RyaW5ncyBsaWtlICJTVl9UYXJnZXQwIi4KLSAgICAgICAgaWYg
KCF0YXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodGFyZ2V0LmVycm9y
KCkpOwotICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQsICp0YXJnZXQpOwotICAgIH0K
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkRlcHRoOgotICAgICAgICByZXR1cm4gQVNUOjpCdWls
dEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZEZXB0aCk7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZDb3ZlcmFnZToKLSAgICAgICAgcmV0
dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdpbiB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRp
Yzo6VmFyaWFibGU6OlNWQ292ZXJhZ2UpOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlNWRGlzcGF0
Y2hUaHJlYWRJRDoKLSAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNlbWFudGljKHsgKm9yaWdp
biB9LCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRCk7
Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6U1ZHcm91cElEOgotICAgICAgICByZXR1cm4gQVNUOjpC
dWlsdEluU2VtYW50aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJs
ZTo6U1ZHcm91cElEKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpTVkdyb3VwSW5kZXg6Ci0gICAg
ICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdElu
U2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVChvcmlnaW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0g
ICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWls
dEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQpOwotICAgIH0KLX0KLQotYXV0
byBQYXJzZXI6OnBhcnNlUmVzb3VyY2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYywgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgUmVnaXN0ZXIp
OwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0K
LSAgICBDT05TVU1FX1RZUEUoaW5mbywgSWRlbnRpZmllcik7Ci0gICAgYXV0byBpbmZvU3RyaW5n
VmlldyA9IGluZm8tPnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgaWYgKGluZm9TdHJpbmdWaWV3
Lmxlbmd0aCgpIDwgMiB8fCAoaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3UnCi0gICAgICAgICYmIGlu
Zm9TdHJpbmdWaWV3WzBdICE9ICd0JwotICAgICAgICAmJiBpbmZvU3RyaW5nVmlld1swXSAhPSAn
YicKLSAgICAgICAgJiYgaW5mb1N0cmluZ1ZpZXdbMF0gIT0gJ3MnKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoaW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5n
KDAsIDEpLCAiIGlzIG5vdCBhIGtub3duIHJlc291cmNlIHR5cGUgKCd1JywgJ3QnLCAnYicsIG9y
ICdzJykiKSkpOwotCi0gICAgQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlIG1vZGU7Ci0gICAg
c3dpdGNoIChpbmZvU3RyaW5nVmlld1swXSkgewotICAgIGNhc2UgJ3UnOgotICAgICAgICBtb2Rl
ID0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlICd0JzoKLSAgICAgICAgbW9kZSA9IEFTVDo6UmVzb3VyY2VT
ZW1hbnRpYzo6TW9kZTo6VGV4dHVyZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnYic6Ci0g
ICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSAncyc6Ci0gICAgICAgIG1vZGUgPSBBU1Q6OlJlc291cmNlU2Vt
YW50aWM6Ok1vZGU6OlNhbXBsZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgYXV0byBpbmRl
eCA9IHJlY29nbml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihpbmZvU3RyaW5nVmlldy5zdWJzdHJp
bmcoMSkpOwotICAgIGlmICghaW5kZXgpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChp
bmRleC5lcnJvcigpKTsKLQotICAgIHVuc2lnbmVkIHNwYWNlID0gMDsKLSAgICBpZiAodHJ5VHlw
ZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzcGFjZVRva2Vu
LCBJZGVudGlmaWVyKTsKLSAgICAgICAgYXV0byBzcGFjZVRva2VuU3RyaW5nVmlldyA9IHNwYWNl
VG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhlcik7Ci0gICAgICAgIFN0cmluZ1ZpZXcgcHJlZml4IHsg
InNwYWNlIiB9OwotICAgICAgICBpZiAoIXNwYWNlVG9rZW5TdHJpbmdWaWV3LnN0YXJ0c1dpdGgo
cHJlZml4KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3Ry
aW5nKCJTZWNvbmQgYXJndW1lbnQgdG8gcmVzb3VyY2Ugc2VtYW50aWMgIiwgc3BhY2VUb2tlblN0
cmluZ1ZpZXcsICIgbmVlZHMgYmUgb2YgdGhlIGZvcm0gJ3NwYWNlMCciKSkpOwotICAgICAgICBp
ZiAoc3BhY2VUb2tlblN0cmluZ1ZpZXcubGVuZ3RoKCkgPD0gcHJlZml4Lmxlbmd0aCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIlNlY29uZCBh
cmd1bWVudCB0byByZXNvdXJjZSBzZW1hbnRpYyAiLCBzcGFjZVRva2VuU3RyaW5nVmlldywgIiBu
ZWVkcyBiZSBvZiB0aGUgZm9ybSAnc3BhY2UwJyIpKSk7Ci0gICAgICAgIGF1dG8gc3BhY2VWYWx1
ZSA9IHJlY29nbml6ZVNpbXBsZVVuc2lnbmVkSW50ZWdlcihzcGFjZVRva2VuU3RyaW5nVmlldy5z
dWJzdHJpbmcocHJlZml4Lmxlbmd0aCgpKSk7Ci0gICAgICAgIGlmICghc3BhY2VWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChzcGFjZVZhbHVlLmVycm9yKCkpOwotICAg
ICAgICBzcGFjZSA9ICpzcGFjZVZhbHVlOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdo
dFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBBU1Q6OlJlc291
cmNlU2VtYW50aWMoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCBtb2RlLCAqaW5kZXgs
IHNwYWNlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMs
IEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFNwZWNpYWxpemVkKTsKLSAgICBy
ZXR1cm4gQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKm9yaWdpbik7Ci19Ci0K
LWF1dG8gUGFyc2VyOjpwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6
U3RhZ2VJbk91dFNlbWFudGljLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBB
dHRyaWJ1dGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRo
ZXNpcyk7Ci0KLSAgICBhdXRvIGluZGV4ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRl
cmFsKCk7Ci0gICAgaWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlu
ZGV4LmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0
UGFyZW50aGVzaXMpOwotCi0gICAgcmV0dXJuIEFTVDo6U3RhZ2VJbk91dFNlbWFudGljKHsgKm9y
aWdpbiwgKnJpZ2h0UGFyZW50aGVzaXMgfSwgKmluZGV4KTsKLX0KLQotYXV0byBQYXJzZXI6OnBh
cnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4s
IEVycm9yPgotewotICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29sb24pKQotICAgICAg
ICByZXR1cm4geyBudWxscHRyIH07Ci0KLSAgICBQRUVLKHRva2VuKTsKLSAgICBzd2l0Y2ggKHRv
a2VuLT50eXBlKSB7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7Ci0gICAgICAg
IFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFr
ZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpTcGVjaWFsaXplZDogIHsKLSAgICAgICAgUEFSU0UocmVzdWx0LCBT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewotICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291cmNl
U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdU
Rk1vdmUoKnJlc3VsdCkpIH07Ci0gICAgfQotICAgIGRlZmF1bHQ6ICB7Ci0gICAgICAgIFBBUlNF
KHJlc3VsdCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwotICAgIH0KLSAgICB9Ci19Ci1BU1Q6
OlF1YWxpZmllcnMgUGFyc2VyOjpwYXJzZVF1YWxpZmllcnMoKQotewotICAgIEFTVDo6UXVhbGlm
aWVycyBxdWFsaWZpZXJzOwotICAgIHdoaWxlIChhdXRvIG5leHQgPSB0cnlUeXBlKFRva2VuOjpU
eXBlOjpRdWFsaWZpZXIpKSB7Ci0gICAgICAgIGF1dG8gbmV4dFN0cmluZ1ZpZXcgPSBuZXh0LT5z
dHJpbmdWaWV3KG1fbGV4ZXIpOwotICAgICAgICBpZiAoIm5vaW50ZXJwb2xhdGlvbiIgPT0gbmV4
dFN0cmluZ1ZpZXcpCi0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmll
cjo6Tm9pbnRlcnBvbGF0aW9uKTsKLSAgICAgICAgZWxzZSBpZiAoIm5vcGVyc3BlY3RpdmUiID09
IG5leHRTdHJpbmdWaWV3KQotICAgICAgICAgICAgcXVhbGlmaWVycy5hcHBlbmQoQVNUOjpRdWFs
aWZpZXI6Ok5vcGVyc3BlY3RpdmUpOwotICAgICAgICBlbHNlIGlmICgidW5pZm9ybSIgPT0gbmV4
dFN0cmluZ1ZpZXcpCi0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmll
cjo6VW5pZm9ybSk7Ci0gICAgICAgIGVsc2UgaWYgKCJjZW50cm9pZCIgPT0gbmV4dFN0cmluZ1Zp
ZXcpCi0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmllcjo6Q2VudHJv
aWQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCgic2FtcGxlIiA9PSBuZXh0
U3RyaW5nVmlldyk7Ci0gICAgICAgICAgICBxdWFsaWZpZXJzLmFwcGVuZChBU1Q6OlF1YWxpZmll
cjo6U2FtcGxlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcXVhbGlmaWVyczsKLX0K
LQotYXV0byBQYXJzZXI6OnBhcnNlU3RydWN0dXJlRWxlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6
U3RydWN0dXJlRWxlbWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotCi0gICAgQVNU
OjpRdWFsaWZpZXJzIHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLQotICAgIFBBUlNF
KHR5cGUsIFR5cGUpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBQ
QVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNl
bWljb2xvbik7Ci0KLSAgICByZXR1cm4gQVNUOjpTdHJ1Y3R1cmVFbGVtZW50KHsgKm9yaWdpbiwg
KnNlbWljb2xvbiB9LCBXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+
c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpzZW1hbnRpYykpOwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2lu
LCBTdHJ1Y3QpOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVudGlmaWVyKTsKLSAgICBDT05T
VU1FX1RZUEUobGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7Ci0KLSAgICBBU1Q6
OlN0cnVjdHVyZUVsZW1lbnRzIHN0cnVjdHVyZUVsZW1lbnRzOwotICAgIHdoaWxlICghcGVla1R5
cGUoVG9rZW46OlR5cGU6OlJpZ2h0Q3VybHlCcmFja2V0KSkgewotICAgICAgICBQQVJTRShzdHJ1
Y3R1cmVFbGVtZW50LCBTdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgc3RydWN0dXJlRWxlbWVu
dHMuYXBwZW5kKFdURk1vdmUoKnN0cnVjdHVyZUVsZW1lbnQpKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHJpZ2h0Q3VybHlCcmFja2V0ID0gbV9sZXhlci5jb25zdW1lVG9rZW4oKTsKLQotICAgIHJldHVy
biBBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24oeyAqb3JpZ2luLCByaWdodEN1cmx5QnJhY2tldCB9
LCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoc3RydWN0dXJl
RWxlbWVudHMpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9u
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIEVycm9yPgotewotICAg
IENPTlNVTUVfVFlQRShvcmlnaW4sIEVudW0pOwotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVu
dGlmaWVyKTsKLQotICAgIGF1dG8gdHlwZSA9IChbJl0oKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpV
bm5hbWVkVHlwZT4sIEVycm9yPiB7Ci0gICAgICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpD
b2xvbikpIHsKLSAgICAgICAgICAgIFBBUlNFKHBhcnNlZFR5cGUsIFR5cGUpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKnBhcnNlZFR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB7IEFTVDo6VHlwZVJlZmVyZW5jZTo6Y3JlYXRlKCpvcmlnaW4sICJpbnQiX3N0ciwgQVNUOjpU
eXBlQXJndW1lbnRzKCkpIH07Ci0gICAgfSkoKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh0eXBlLmVycm9yKCkpOwotCi0gICAgQ09OU1VNRV9UWVBFKGxl
ZnRDdXJseUJyYWNrZXQsIExlZnRDdXJseUJyYWNrZXQpOwotCi0gICAgaW50NjRfdCBuZXh0VmFs
dWUgPSAwOwotICAgIFBBUlNFKGZpcnN0RW51bWVyYXRpb25NZW1iZXIsIEVudW1lcmF0aW9uTWVt
YmVyLCBuZXh0VmFsdWUpOwotICAgIG5leHRWYWx1ZSA9IGZpcnN0RW51bWVyYXRpb25NZW1iZXIt
PnZhbHVlKCkgKyAxOwotCi0gICAgQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24gcmVzdWx0KHsg
fSwgbmFtZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCp0eXBlKSk7
Ci0gICAgYXV0byBzdWNjZXNzID0gcmVzdWx0LmFkZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9u
TWVtYmVyKSk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90
IGFkZCBlbnVtZXJhdGlvbiBtZW1iZXIiX3N0cik7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tl
bjo6VHlwZTo6Q29tbWEpKSB7Ci0gICAgICAgIFBBUlNFKG1lbWJlciwgRW51bWVyYXRpb25NZW1i
ZXIsIG5leHRWYWx1ZSk7Ci0gICAgICAgIG5leHRWYWx1ZSA9IG1lbWJlci0+dmFsdWUoKSArIDE7
Ci0gICAgICAgIHN1Y2Nlc3MgPSByZXN1bHQuYWRkKFdURk1vdmUoKm1lbWJlcikpOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVt
ZXJhdGlvbiBtZW1iZXIiX3N0cik7Ci0gICAgfQotCi0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0Q3Vy
bHlCcmFja2V0LCBSaWdodEN1cmx5QnJhY2tldCk7Ci0gICAgcmVzdWx0LnVwZGF0ZUNvZGVMb2Nh
dGlvbih7ICpvcmlnaW4sICpyaWdodEN1cmx5QnJhY2tldH0pOwotCi0gICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50
NjRfdCBkZWZhdWx0VmFsdWUpIC0+IEV4cGVjdGVkPEFTVDo6RW51bWVyYXRpb25NZW1iZXIsIEVy
cm9yPgotewotICAgIENPTlNVTUVfVFlQRShpZGVudGlmaWVyLCBJZGVudGlmaWVyKTsKLSAgICBh
dXRvIG5hbWUgPSBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCk7Ci0K
LSAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsKLSAgICAgICAgUEFS
U0UoY29uc3RhbnRFeHByZXNzaW9uLCBDb25zdGFudEV4cHJlc3Npb24pOwotCi0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8aW50NjRfdD4gdmFsdWU7Ci0gICAgICAgIGNvbnN0YW50RXhwcmVzc2lvbi0+
dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxp
dGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAg
ICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZh
bHVlKCk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkZsb2F0TGl0ZXJhbCYpIHsKLSAgICAgICAgfSwg
WyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYpIHsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIGlmICghdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoImVudW0gaW5pdGlhbGl6
YXRpb24gdmFsdWVzIGNhbiBvbmx5IGJlIGFuIGludCBvciB1aW50IGNvbnN0YW50LiIpKTsKLSAg
ICAgICAgcmV0dXJuIEFTVDo6RW51bWVyYXRpb25NZW1iZXIoKmlkZW50aWZpZXIsIFdURk1vdmUo
bmFtZSksICp2YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiBBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
KCppZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBkZWZhdWx0VmFsdWUpOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTmF0
aXZlKTsKLSAgICBDT05TVU1FX1RZUEUocGFyc2VkVHlwZWRlZiwgVHlwZWRlZik7Ci0gICAgQ09O
U1VNRV9UWVBFKG5hbWUsIElkZW50aWZpZXIpOwotICAgIFBBUlNFKHR5cGVBcmd1bWVudHMsIFR5
cGVBcmd1bWVudHMpOwotICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0K
LSAgICByZXR1cm4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24oeyAqb3JpZ2luLCAqc2VtaWNv
bG9uIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlw
ZUFyZ3VtZW50cykpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VOdW1UaHJlYWRzRnVuY3Rpb25B
dHRyaWJ1dGUoKSAtPiBFeHBlY3RlZDxBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSwg
RXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwgTnVtVGhyZWFkcyk7Ci0gICAgQ09O
U1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLQotICAgIGF1dG8g
d2lkdGggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIXdp
ZHRoKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQod2lkdGguZXJyb3IoKSk7Ci0KLSAg
ICBDT05TVU1FX1RZUEUoY29tbWEsIENvbW1hKTsKLQotICAgIGF1dG8gaGVpZ2h0ID0gY29uc3Vt
ZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFoZWlnaHQpCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChoZWlnaHQuZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZ
UEUoc2Vjb25kQ29tbWEsIENvbW1hKTsKLQotICAgIGF1dG8gZGVwdGggPSBjb25zdW1lTm9uTmVn
YXRpdmVJbnRlZ3JhbExpdGVyYWwoKTsKLSAgICBpZiAoIWRlcHRoKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoZGVwdGguZXJyb3IoKSk7Ci0KLSAgICBDT05TVU1FX1RZUEUocmlnaHRQ
YXJlbnRoZXNpcywgUmlnaHRQYXJlbnRoZXNpcyk7Ci0KLSAgICByZXR1cm4gQVNUOjpOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUoeyAqb3JpZ2luLCAqcmlnaHRQYXJlbnRoZXNpcyB9LCAqd2lk
dGgsICpoZWlnaHQsICpkZXB0aCk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUF0dHJpYnV0ZUJs
b2NrKCkgLT4gRXhwZWN0ZWQ8QVNUOjpBdHRyaWJ1dGVCbG9jaywgRXJyb3I+Ci17Ci0gICAgQ09O
U1VNRV9UWVBFKGxlZnRTcXVhcmVCcmFja2V0LCBMZWZ0U3F1YXJlQnJhY2tldCk7Ci0KLSAgICBB
U1Q6OkF0dHJpYnV0ZUJsb2NrIHJlc3VsdDsKLQotICAgIHdoaWxlICghdHJ5VHlwZShUb2tlbjo6
VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewotICAgICAgICBQQVJTRShudW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUsIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZSgqbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
UGFyYW1ldGVyKCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uLCBFcnJvcj4K
LXsKLSAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsK
LQotICAgIEFTVDo6UXVhbGlmaWVycyBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7Ci0g
ICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAgICBpZiAoYXV0byB0
b2tlbiA9IHRyeVR5cGUoVG9rZW46OlR5cGU6OklkZW50aWZpZXIpKQotICAgICAgICBuYW1lID0g
dG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIFBBUlNFKHNlbWFu
dGljLCBTZW1hbnRpYyk7Ci0KLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0
YXJ0T2Zmc2V0KCk7Ci0KLSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHF1YWxp
ZmllcnMpLCB7IFdURk1vdmUoKnR5cGUpIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUoKnNlbWFu
dGljKSwgbnVsbHB0cik7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBhcmFtZXRlcnMoKSAtPiBF
eHBlY3RlZDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zLCBFcnJvcj4KLXsKLSAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0KLSAgICBDT05TVU1FX1RZUEUobGVmdFBh
cmVudGhlc2lzLCBMZWZ0UGFyZW50aGVzaXMpOwotCi0gICAgaWYgKHRyeVR5cGUoVG9rZW46OlR5
cGU6OlJpZ2h0UGFyZW50aGVzaXMpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJz
KTsKLQotICAgIFBBUlNFKGZpcnN0UGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgIHBhcmFtZXRl
cnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3Zl
KCpmaXJzdFBhcmFtZXRlcikpKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpD
b21tYSkpIHsKLSAgICAgICAgUEFSU0UocGFyYW1ldGVyLCBQYXJhbWV0ZXIpOwotICAgICAgICBw
YXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
V1RGTW92ZSgqcGFyYW1ldGVyKSkpOwotICAgIH0KLQotICAgIENPTlNVTUVfVFlQRShyaWdodFBh
cmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKHBhcmFt
ZXRlcnMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKSAtPiBF
eHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZnVu
Y3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7Ci0gICAgUEFSU0UoYmxvY2ss
IEJsb2NrKTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlZmluaXRpb24oV1RGTW92ZSgqZnVu
Y3Rpb25EZWNsYXJhdGlvbiksIFdURk1vdmUoKmJsb2NrKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpw
YXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBQQVJTRShh
dHRyaWJ1dGVCbG9jaywgQXR0cmlidXRlQmxvY2spOwotICAgIENPTlNVTUVfVFlQRShjb21wdXRl
LCBDb21wdXRlKTsKLSAgICBQQVJTRSh0eXBlLCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUobmFt
ZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAg
UEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhl
ci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IGZhbHNlOwot
ICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKCphdHRyaWJ1dGVC
bG9jayksIEFTVDo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGUsIFdURk1vdmUoKnR5cGUpLCBuYW1l
LT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBX
VEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7Ci19Ci0KLWF1dG8gUGFyc2Vy
OjpwYXJzZVZlcnRleE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBhdXRvIGVudHJ5UG9pbnQg
PSBjb25zdW1lVHlwZXM8VG9rZW46OlR5cGU6OlZlcnRleCwgVG9rZW46OlR5cGU6OkZyYWdtZW50
PigpOwotICAgIGlmICghZW50cnlQb2ludCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGVudHJ5UG9pbnQuZXJyb3IoKSk7Ci0gICAgYXV0byBlbnRyeVBvaW50VHlwZSA9IChlbnRyeVBv
aW50LT50eXBlID09IFRva2VuOjpUeXBlOjpWZXJ0ZXgpID8gQVNUOjpFbnRyeVBvaW50VHlwZTo6
VmVydGV4IDogQVNUOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ7Ci0KLSAgICBQQVJTRSh0eXBl
LCBUeXBlKTsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgUEFSU0Uo
cGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMsIFNlbWFudGljKTsK
LQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQot
ICAgIGJvb2wgaXNPcGVyYXRvciA9IGZhbHNlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24oeyBlbnRyeVBvaW50LT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIu
bmFtZVNwYWNlKCkgfSwgeyB9LCBlbnRyeVBvaW50VHlwZSwgV1RGTW92ZSgqdHlwZSksIG5hbWUt
PnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdU
Rk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6
OnBhcnNlUmVndWxhckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2luKTsKLQotICAgIFBBUlNF
KHR5cGUsIFR5cGUpOwotCi0gICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGVzPFRva2VuOjpUeXBl
OjpJZGVudGlmaWVyLCBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lPigpOwotICAgIGlmICghbmFt
ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJyb3IoKSk7Ci0gICAgYXV0
byBpc09wZXJhdG9yID0gbmFtZS0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6T3BlcmF0b3JOYW1lOwot
Ci0gICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2VtYW50aWMs
IFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRP
ZmZzZXQoKTsKLQotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4t
PnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9T
dHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVy
YXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlT3BlcmF0b3JGdW5jdGlvbkRl
Y2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4K
LXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBPcGVyYXRvcik7Ci0gICAgUEFSU0UodHlwZSwg
VHlwZSk7Ci0gICAgUEFSU0UocGFyYW1ldGVycywgUGFyYW1ldGVycyk7Ci0gICAgUEFSU0Uoc2Vt
YW50aWMsIFNlbWFudGljKTsKLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCku
c3RhcnRPZmZzZXQoKTsKLQotICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0gICAgcmV0dXJu
IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zm
c2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0
eXBlKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUo
KnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNl
RnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biwgRXJyb3I+Ci17Ci0gICAgUEVFSyh0b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkg
ewotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok9wZXJhdG9yOgotICAgICAgICByZXR1cm4gcGFyc2VP
cGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpWZXJ0
ZXg6Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiBwYXJz
ZVZlcnRleE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ6Ci0gICAgICAgIHJldHVybiBwYXJzZUNvbXB1dGVGdW5j
dGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVn
dWxhckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICB9Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJz
ZU5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24sIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShuYXRpdmUsIE5hdGl2
ZSk7Ci0gICAgUEFSU0UoZnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbik7
Ci0gICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsKLQotICAgIHJldHVybiBB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oV1RGTW92ZSgqZnVuY3Rpb25EZWNsYXJhdGlv
bikpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VCbG9jaygpIC0+IEV4cGVjdGVkPEFTVDo6Qmxv
Y2ssIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIExlZnRDdXJseUJyYWNrZXQp
OwotICAgIFBBUlNFKHJlc3VsdCwgQmxvY2tCb2R5KTsKLSAgICBDT05TVU1FX1RZUEUocmlnaHRD
dXJseUJyYWNrZXQsIFJpZ2h0Q3VybHlCcmFja2V0KTsKLSAgICByZXN1bHQtPnVwZGF0ZUNvZGVM
b2NhdGlvbih7ICpvcmlnaW4sICpyaWdodEN1cmx5QnJhY2tldCB9KTsKLSAgICByZXR1cm4gV1RG
TW92ZSgqcmVzdWx0KTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlQmxvY2tCb2R5KCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+Ci17Ci0gICAgYXV0byBzdGFydE9mZnNldCA9IG1fbGV4
ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50
czsKLSAgICB3aGlsZSAoIXBlZWtUeXBlczxUb2tlbjo6VHlwZTo6UmlnaHRDdXJseUJyYWNrZXQs
IFRva2VuOjpUeXBlOjpDYXNlLCBUb2tlbjo6VHlwZTo6RGVmYXVsdD4oKSkgewotICAgICAgICBQ
QVJTRShzdGF0ZW1lbnQsIFN0YXRlbWVudCk7Ci0gICAgICAgIHN0YXRlbWVudHMuYXBwZW5kKFdU
Rk1vdmUoKnN0YXRlbWVudCkpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhl
ci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKLQotICAgIHJldHVybiBBU1Q6OkJsb2NrKHsgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZNb3ZlKHN0YXRlbWVu
dHMpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxB
U1Q6OklmU3RhdGVtZW50LCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBJZik7
Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRShjb25kaXRpb25hbCwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0
UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVu
dCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTdGF0ZW1lbnQ+IGVsc2VCb2R5KG51bGxw
dHIpOwotICAgIGlmICh0cnlUeXBlKFRva2VuOjpUeXBlOjpFbHNlKSkgewotICAgICAgICBQQVJT
RShwYXJzZWRFbHNlQm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgZWxzZUJvZHkgPSAoKnBhcnNl
ZEVsc2VCb2R5KS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGVuZE9mZnNl
dCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4+IGNhc3RBcmd1bWVudHM7Ci0gICAgY2FzdEFyZ3VtZW50cy5hcHBl
bmQoV1RGTW92ZSgqY29uZGl0aW9uYWwpKTsKLSAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihUb2tlbigqb3JpZ2luKSwgImJvb2wiX3N0ciwgV1RG
TW92ZShjYXN0QXJndW1lbnRzKSk7Ci0gICAgcmV0dXJuIEFTVDo6SWZTdGF0ZW1lbnQoeyBvcmln
aW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCBXVEZN
b3ZlKGJvb2xDYXN0KSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoZWxzZUJvZHkpKTsKLX0KLQot
YXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoU3RhdGVtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0
Y2hTdGF0ZW1lbnQsIEVycm9yPgotewotICAgIENPTlNVTUVfVFlQRShvcmlnaW4sIFN3aXRjaCk7
Ci0gICAgQ09OU1VNRV9UWVBFKGxlZnRQYXJlbnRoZXNpcywgTGVmdFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRSh2YWx1ZSwgRXhwcmVzc2lvbik7Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50
aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0Q3VybHlCcmFj
a2V0LCBMZWZ0Q3VybHlCcmFja2V0KTsKLQotICAgIFZlY3RvcjxBU1Q6OlN3aXRjaENhc2U+IHN3
aXRjaENhc2VzOwotICAgIFBFRUsobmV4dFRva2VuKTsKLSAgICB3aGlsZSAobmV4dFRva2VuLT50
eXBlICE9IFRva2VuOjpUeXBlOjpSaWdodEN1cmx5QnJhY2tldCkgewotICAgICAgICBQQVJTRShz
d2l0Y2hDYXNlLCBTd2l0Y2hDYXNlKTsKLSAgICAgICAgc3dpdGNoQ2FzZXMuYXBwZW5kKFdURk1v
dmUoKnN3aXRjaENhc2UpKTsKLSAgICAgICAgUEVFSyhuZXh0VG9rZW5Jbkxvb3ApOwotICAgICAg
ICBuZXh0VG9rZW4gPSBuZXh0VG9rZW5Jbkxvb3A7Ci0gICAgfQotCi0gICAgYXV0byBlbmRUb2tl
biA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0KLSAgICByZXR1cm4gQVNUOjpTd2l0Y2hTdGF0
ZW1lbnQoeyAqb3JpZ2luLCBlbmRUb2tlbiB9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1vdmUoc3dp
dGNoQ2FzZXMpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoQ2FzZSgpIC0+IEV4cGVj
dGVkPEFTVDo6U3dpdGNoQ2FzZSwgRXJyb3I+Ci17Ci0gICAgYXV0byBvcmlnaW4gPSBjb25zdW1l
VHlwZXM8VG9rZW46OlR5cGU6OkNhc2UsIFRva2VuOjpUeXBlOjpEZWZhdWx0PigpOwotICAgIGlm
ICghb3JpZ2luKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQob3JpZ2luLmVycm9yKCkp
OwotCi0gICAgc3dpdGNoIChvcmlnaW4tPnR5cGUpIHsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpD
YXNlOiB7Ci0gICAgICAgIFBBUlNFKHZhbHVlLCBDb25zdGFudEV4cHJlc3Npb24pOwotICAgICAg
ICBDT05TVU1FX1RZUEUoY29sb24sIENvbG9uKTsKLQotICAgICAgICBQQVJTRShibG9jaywgQmxv
Y2tCb2R5KTsKLQotICAgICAgICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2Rl
TG9jYXRpb24sICBibG9jay0+Y29kZUxvY2F0aW9uKCl9LCBXVEZNb3ZlKCp2YWx1ZSksIFdURk1v
dmUoKmJsb2NrKSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgQVNTRVJUKG9yaWdp
bi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6RGVmYXVsdCk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShj
b2xvbiwgQ29sb24pOwotCi0gICAgICAgIFBBUlNFKGJsb2NrLCBCbG9ja0JvZHkpOwotCi0gICAg
ICAgIHJldHVybiBBU1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2Nr
LT5jb2RlTG9jYXRpb24oKX0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqYmxvY2spKTsKLSAgICB9
Ci0gICAgfQotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VGb3JMb29wKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpGb3JMb29wLCBFcnJvcj4KLXsKLSAgICBDT05TVU1FX1RZUEUob3JpZ2luLCBGb3IpOwotICAg
IENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBh
dXRvIHBhcnNlUmVtYWluZGVyID0gWyZdKFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4mJiBpbml0
aWFsaXphdGlvbikgLT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4gewotICAgICAgICBD
T05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxBU1Q6OkV4cHJlc3Npb24+IGNvbmRpdGlvbihudWxscHRyKTsKLSAgICAgICAgaWYgKCF0
cnlUeXBlKFRva2VuOjpUeXBlOjpTZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBl
eHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAgY29uZGl0aW9u
ID0gKCpleHByZXNzaW9uKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsK
LSAgICAgICAgICAgIENPTlNVTUVfVFlQRShzZWNvbmRTZW1pY29sb24sIFNlbWljb2xvbik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBpbmNy
ZW1lbnQobnVsbHB0cik7Ci0gICAgICAgIGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQ
YXJlbnRoZXNpcykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4
cHJlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAoKmV4cHJlc3Npb24pLm1v
dmVUb1VuaXF1ZVB0cigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotICAgICAgICAgICAgQ09OU1VN
RV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotICAgICAgICB9Ci0K
LSAgICAgICAgUEFSU0UoYm9keSwgU3RhdGVtZW50KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uKG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAoKmJvZHkpLT5jb2RlTG9jYXRpb24oKSk7Ci0g
ICAgICAgIHJldHVybiBBU1Q6OkZvckxvb3AobG9jYXRpb24sIFdURk1vdmUoaW5pdGlhbGl6YXRp
b24pLCBXVEZNb3ZlKGNvbmRpdGlvbiksIFdURk1vdmUoaW5jcmVtZW50KSwgV1RGTW92ZSgqYm9k
eSkpOwotICAgIH07Ci0KLSAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb25zID0gYmFja3RyYWNr
aW5nU2NvcGU8RXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJy
b3I+PihbJl0oKSB7Ci0gICAgICAgIHJldHVybiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7
Ci0gICAgfSk7Ci0gICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb25zKSB7Ci0gICAgICAgIFVuaXF1
ZVJlZjxBU1Q6OlN0YXRlbWVudD4gZGVjbGFyYXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUoKnZhcmlhYmxlRGVj
bGFyYXRpb25zKSk7Ci0gICAgICAgIHJldHVybiBwYXJzZVJlbWFpbmRlcihXVEZNb3ZlKGRlY2xh
cmF0aW9uU3RhdGVtZW50KSk7Ci0gICAgfQotCi0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lv
biwgRWZmZWN0ZnVsRXhwcmVzc2lvbik7Ci0KLSAgICByZXR1cm4gcGFyc2VSZW1haW5kZXIoV1RG
TW92ZSgqZWZmZWN0ZnVsRXhwcmVzc2lvbikpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VXaGls
ZUxvb3AoKSAtPiBFeHBlY3RlZDxBU1Q6OldoaWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VN
RV9UWVBFKG9yaWdpbiwgV2hpbGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMs
IExlZnRQYXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwot
ICAgIENPTlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAg
ICBQQVJTRShib2R5LCBTdGF0ZW1lbnQpOwotCi0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKG9y
aWdpbi0+Y29kZUxvY2F0aW9uLCAgKCpib2R5KS0+Y29kZUxvY2F0aW9uKCkpOwotICAgIHJldHVy
biBBU1Q6OldoaWxlTG9vcChsb2NhdGlvbiwgV1RGTW92ZSgqY29uZGl0aW9uYWwpLCBXVEZNb3Zl
KCpib2R5KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZURvV2hpbGVMb29wKCkgLT4gRXhwZWN0
ZWQ8QVNUOjpEb1doaWxlTG9vcCwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKG9yaWdpbiwg
RG8pOwotICAgIFBBUlNFKGJvZHksIFN0YXRlbWVudCk7Ci0gICAgQ09OU1VNRV9UWVBFKHdoaWxl
S2V5d29yZCwgV2hpbGUpOwotICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQ
YXJlbnRoZXNpcyk7Ci0gICAgUEFSU0UoY29uZGl0aW9uYWwsIEV4cHJlc3Npb24pOwotICAgIENP
TlNVTUVfVFlQRShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKLSAgICBDT05T
VU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotCi0gICAgcmV0dXJuIEFTVDo6RG9XaGls
ZUxvb3AoeyAqb3JpZ2luLCAqc2VtaWNvbG9ufSwgV1RGTW92ZSgqYm9keSksIFdURk1vdmUoKmNv
bmRpdGlvbmFsKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24o
UmVmPEFTVDo6VW5uYW1lZFR5cGU+JiYgdHlwZSkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uLCBFcnJvcj4KLXsKLSAgICBQRUVLKG9yaWdpbik7Ci0KLSAgICBhdXRvIHF1YWxp
ZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKLQotICAgIENPTlNVTUVfVFlQRShuYW1lLCBJZGVu
dGlmaWVyKTsKLSAgICBQQVJTRShzZW1hbnRpYywgU2VtYW50aWMpOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gaW5pdGlhbGl6ZXIgPSBudWxscHRyOwotICAgIGlmICh0
cnlUeXBlKFRva2VuOjpUeXBlOjpFcXVhbHNTaWduKSkgewotICAgICAgICBQQVJTRShpbml0aWFs
aXppbmdFeHByZXNzaW9uLCBQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgICAgIGlu
aXRpYWxpemVyID0gaW5pdGlhbGl6aW5nRXhwcmVzc2lvbi52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0
cigpOwotICAgIH0KLQotICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRP
ZmZzZXQoKTsKLSAgICByZXR1cm4gQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKHsgb3JpZ2luLT5z
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgV1RGTW92ZShx
dWFsaWZpZXJzKSwgeyBXVEZNb3ZlKHR5cGUpIH0sIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlciku
dG9TdHJpbmcoKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBXVEZNb3ZlKGluaXRpYWxpemVyKSk7Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCkgLT4gRXhwZWN0ZWQ8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+Ci17Ci0gICAgUEVFSyhv
cmlnaW4pOwotCi0gICAgUEFSU0UodHlwZSwgVHlwZSk7Ci0KLSAgICBhdXRvIGZpcnN0VmFyaWFi
bGVEZWNsYXJhdGlvbiA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlLT5jb3B5UmVmKCkp
OwotICAgIGlmICghZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uLmVycm9yKCkpOwotCi0gICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+PiByZXN1bHQ7Ci0gICAgcmVz
dWx0LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oV1RGTW92
ZSgqZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uKSkpOwotCi0gICAgd2hpbGUgKHRyeVR5cGUoVG9r
ZW46OlR5cGU6OkNvbW1hKSkgewotICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBw
YXJzZVZhcmlhYmxlRGVjbGFyYXRpb24odHlwZS0+Y29weVJlZigpKTsKLSAgICAgICAgaWYgKCF2
YXJpYWJsZURlY2xhcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZh
cmlhYmxlRGVjbGFyYXRpb24uZXJyb3IoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUoKnZhcmlhYmxlRGVjbGFy
YXRpb24pKSk7Ci0gICAgfQotCi0gICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5z
dGFydE9mZnNldCgpOwotICAgIHJldHVybiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNl
KCkgfSwgV1RGTW92ZShyZXN1bHQpKTsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlU3RhdGVtZW50
KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAg
UEVFSyh0b2tlbik7Ci0gICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46
OlR5cGU6OkxlZnRDdXJseUJyYWNrZXQ6IHsKLSAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrKTsK
LSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJsb2NrPihXVEZNb3ZlKCpibG9j
aykpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OklmOiB7Ci0gICAgICAgIFBBUlNF
KGlmU3RhdGVtZW50LCBJZlN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVS
ZWY8QVNUOjpJZlN0YXRlbWVudD4oV1RGTW92ZSgqaWZTdGF0ZW1lbnQpKSB9OwotICAgIH0KLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpTd2l0Y2g6IHsKLSAgICAgICAgUEFSU0Uoc3dpdGNoU3RhdGVt
ZW50LCBTd2l0Y2hTdGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFT
VDo6U3dpdGNoU3RhdGVtZW50PihXVEZNb3ZlKCpzd2l0Y2hTdGF0ZW1lbnQpKSB9OwotICAgIH0K
LSAgICBjYXNlIFRva2VuOjpUeXBlOjpGb3I6IHsKLSAgICAgICAgUEFSU0UoZm9yTG9vcCwgRm9y
TG9vcCk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpGb3JMb29wPihXVEZN
b3ZlKCpmb3JMb29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6V2hpbGU6IHsK
LSAgICAgICAgUEFSU0Uod2hpbGVMb29wLCBXaGlsZUxvb3ApOwotICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlUmVmPEFTVDo6V2hpbGVMb29wPihXVEZNb3ZlKCp3aGlsZUxvb3ApKSB9OwotICAg
IH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpEbzogewotICAgICAgICBQQVJTRShkb1doaWxlTG9v
cCwgRG9XaGlsZUxvb3ApOwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6RG9X
aGlsZUxvb3A+KFdURk1vdmUoKmRvV2hpbGVMb29wKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tl
bjo6VHlwZTo6QnJlYWs6IHsKLSAgICAgICAgYXV0byBicmVha1Rva2VuID0gbV9sZXhlci5jb25z
dW1lVG9rZW4oKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHNlbWljb2xvbiwgU2VtaWNvbG9uKTsK
LSAgICAgICAgYXV0byBicmVha09iamVjdCA9IEFTVDo6QnJlYWsoV1RGTW92ZShicmVha1Rva2Vu
KSk7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCcmVhaz4oV1RGTW92ZShi
cmVha09iamVjdCkpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkNvbnRpbnVlOiB7
Ci0gICAgICAgIGF1dG8gY29udGludWVUb2tlbiA9IG1fbGV4ZXIuY29uc3VtZVRva2VuKCk7Ci0g
ICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgIGF1dG8g
Y29udGludWVPYmplY3QgPSBBU1Q6OkNvbnRpbnVlKFdURk1vdmUoY29udGludWVUb2tlbikpOwot
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6Q29udGludWU+KFdURk1vdmUoY29u
dGludWVPYmplY3QpKSB9OwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpGYWxsdGhyb3Vn
aDogewotICAgICAgICBhdXRvIGZhbGx0aHJvdWdoVG9rZW4gPSBtX2xleGVyLmNvbnN1bWVUb2tl
bigpOwotICAgICAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAg
ICBhdXRvIGZhbGx0aHJvdWdoT2JqZWN0ID0gQVNUOjpGYWxsdGhyb3VnaChXVEZNb3ZlKGZhbGx0
aHJvdWdoVG9rZW4pKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZhbGx0
aHJvdWdoPihXVEZNb3ZlKGZhbGx0aHJvdWdoT2JqZWN0KSkgfTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6UmV0dXJuOiB7Ci0gICAgICAgIGF1dG8gcmV0dXJuVG9rZW4gPSBtX2xleGVy
LmNvbnN1bWVUb2tlbigpOwotICAgICAgICBpZiAoYXV0byBzZW1pY29sb24gPSB0cnlUeXBlKFRv
a2VuOjpUeXBlOjpTZW1pY29sb24pKSB7Ci0gICAgICAgICAgICBhdXRvIHJldHVybk9iamVjdCA9
IEFTVDo6UmV0dXJuKFdURk1vdmUocmV0dXJuVG9rZW4pLCBudWxscHRyKTsKLSAgICAgICAgICAg
IHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpSZXR1cm4+KFdURk1vdmUocmV0dXJuT2JqZWN0
KSkgfTsKLSAgICAgICAgfQotICAgICAgICBQQVJTRShleHByZXNzaW9uLCBFeHByZXNzaW9uKTsK
LSAgICAgICAgQ09OU1VNRV9UWVBFKGZpbmFsU2VtaWNvbG9uLCBTZW1pY29sb24pOwotICAgICAg
ICBhdXRvIHJldHVybk9iamVjdCA9IEFTVDo6UmV0dXJuKFdURk1vdmUocmV0dXJuVG9rZW4pLCAo
KmV4cHJlc3Npb24pLm1vdmVUb1VuaXF1ZVB0cigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZVJlZjxBU1Q6OlJldHVybj4oV1RGTW92ZShyZXR1cm5PYmplY3QpKSB9OwotICAgIH0KLSAg
ICBjYXNlIFRva2VuOjpUeXBlOjpDb25zdGFudDoKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpEZXZp
Y2U6Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6VGhyZWFkZ3JvdXA6Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6VGhyZWFkOiB7Ci0gICAgICAgIFBBUlNFKHZhcmlhYmxlRGVjbGFyYXRpb25zLCBWYXJp
YWJsZURlY2xhcmF0aW9ucyk7Ci0gICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWlj
b2xvbik7Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotICAg
IH0KLSAgICBjYXNlIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOiB7Ci0gICAgICAgIFBFRUtfRlVS
VEhFUihuZXh0VG9rZW4pOwotICAgICAgICBzd2l0Y2ggKG5leHRUb2tlbi0+dHlwZSkgewotICAg
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpJZGVudGlmaWVyOgotICAgICAgICBjYXNlIFRva2VuOjpU
eXBlOjpMZXNzVGhhblNpZ246Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlN0YXI6Ci0gICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6OlF1YWxpZmllcjogewotICAgICAgICAgICAgUEFSU0UodmFy
aWFibGVEZWNsYXJhdGlvbnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAgICAgICAgICAgIENP
TlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWljb2xvbik7Ci0gICAgICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KFdURk1vdmUo
KnZhcmlhYmxlRGVjbGFyYXRpb25zKSkgfTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0byBl
ZmZlY3RmdWxFeHByZXNzaW9uID0gYmFja3RyYWNraW5nU2NvcGU8RXhwZWN0ZWQ8VW5pcXVlUmVm
PEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+PihbJl0oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNU
OjpTdGF0ZW1lbnQ+LCBFcnJvcj4gewotICAgICAgICAgICAgUEFSU0UocmVzdWx0LCBFZmZlY3Rm
dWxFeHByZXNzaW9uKTsKLSAgICAgICAgICAgIENPTlNVTUVfVFlQRShzZW1pY29sb24sIFNlbWlj
b2xvbik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9KTsKLSAgICAgICAg
aWYgKGVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqZWZm
ZWN0ZnVsRXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgUEFSU0UodmFyaWFibGVEZWNsYXJhdGlv
bnMsIFZhcmlhYmxlRGVjbGFyYXRpb25zKTsKLSAgICBDT05TVU1FX1RZUEUoc2VtaWNvbG9uLCBT
ZW1pY29sb24pOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudD4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbnMpKSB9OwotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCkgLT4gRXhwZWN0ZWQ8VW5p
cXVlUmVmPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+Ci17Ci0gICAgUEVFSyhvcmlnaW4pOwotICAg
IGlmIChvcmlnaW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlNlbWljb2xvbikKLSAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkJsb2NrPigqb3JpZ2luLCBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6U3RhdGVtZW50Pj4oKSkgfTsKLQotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4gZXhwcmVzc2lvbnM7Ci0gICAgUEFSU0UoZWZmZWN0ZnVsRXhwcmVzc2lvbiwgRWZm
ZWN0ZnVsQXNzaWdubWVudCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmVmZmVj
dGZ1bEV4cHJlc3Npb24pKTsKLQotICAgIHdoaWxlICh0cnlUeXBlKFRva2VuOjpUeXBlOjpDb21t
YSkpIHsKLSAgICAgICAgUEFSU0UoZXhwcmVzc2lvbiwgRWZmZWN0ZnVsQXNzaWdubWVudCk7Ci0g
ICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgfQot
Ci0gICAgaWYgKGV4cHJlc3Npb25zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShleHBy
ZXNzaW9uc1swXSkpIH07Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCku
c3RhcnRPZmZzZXQoKTsKLSAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ob3JpZ2luLT5zdGFydE9m
ZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkpOwotICAgIGF1dG8gY29tbWFF
eHByZXNzaW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4obG9jYXRpb24s
IFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oV1RGTW92ZShjb21tYUV4cHJlc3Npb24pKSB9
OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VFZmZlY3RmdWxBc3NpZ25tZW50KCkgLT4gRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsob3JpZ2lu
KTsKLQotICAgIGJvb2wgaXNFZmZlY3RmdWwgPSBmYWxzZTsKLSAgICBQQVJTRShleHByZXNzaW9u
LCBQb3NzaWJsZVByZWZpeCwgJmlzRWZmZWN0ZnVsKTsKLQotICAgIGlmICghaXNFZmZlY3RmdWwg
fHwgcGVla1R5cGVzPAotICAgICAgICBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbiwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlBsdXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c0VxdWFs
cywKLSAgICAgICAgVG9rZW46OlR5cGU6OlRpbWVzRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6RGl2aWRlRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kRXF1YWxzLAotICAgICAg
ICBUb2tlbjo6VHlwZTo6WG9yRXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kRXF1YWxz
LAotICAgICAgICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpS
aWdodFNoaWZ0RXF1YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0RXF1YWxzCi0g
ICAgPigpKSB7Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFzc2lnbm1lbnQoV1RGTW92ZSgqZXhw
cmVzc2lvbikpOwotICAgIH0KLQotICAgIHJldHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBh
cnNlcjo6cGFyc2VMaW1pdGVkU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4mJiBwcmV2aW91cykgLT4gU3VmZml4RXhwcmVzc2lvbgotewotICAgIGF1dG8gdHlwZSA9IGNv
bnN1bWVUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZ1bGxTdG9wLAotICAgICAgICBUb2tl
bjo6VHlwZTo6QXJyb3csCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldD4o
KTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1v
dmUocHJldmlvdXMpLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKLSAgICBj
YXNlIFRva2VuOjpUeXBlOjpGdWxsU3RvcDogewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBj
b25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRp
ZmllcikKLSAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlv
dXMpLCBmYWxzZSk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29k
ZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Np
b24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHBy
ZXZpb3VzKSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1
ZSk7Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkFycm93OiB7Ci0gICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAgICAg
ICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24o
V1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4g
U3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRp
b24sIG1ha2VVbmlxdWVSZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBX
VEZNb3ZlKHByZXZpb3VzKSksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJp
bmcoKSksIHRydWUpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBl
LT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCk7Ci0gICAgICAgIGF1dG8g
ZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBpZiAoIWV4cHJlc3Npb24p
Ci0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwg
ZmFsc2UpOwotICAgICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJyYWNrZXQgPSBjb25zdW1lVHlw
ZShUb2tlbjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewotICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnJpZ2h0U3F1YXJlQnJh
Y2tldCk7Ci0gICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6SW5kZXhFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cyksIFdURk1v
dmUoKmV4cHJlc3Npb24pKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN1ZmZp
eEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICB9Ci0gICAgfQotfQot
Ci1hdXRvIFBhcnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiYmIHByZXZpb3VzKSAtPiBTdWZmaXhFeHByZXNzaW9uCi17Ci0gICAgYXV0byBzdWZmaXgg
PSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpGdWxsU3RvcCwKLSAgICAgICAg
VG9rZW46OlR5cGU6OkFycm93LAotICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNr
ZXQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzUGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6
Ok1pbnVzTWludXM+KCk7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBTdWZmaXhF
eHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKHN1ZmZp
eC0+dHlwZSkgewotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxTdG9wOiB7Ci0gICAgICAgIGF1
dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsKLSAg
ICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Np
b24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwotICAgICAgICByZXR1
cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9j
YXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIp
LnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6QXJyb3c6
IHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6Oklk
ZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4g
U3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7
Ci0gICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RF
eHByZXNzaW9uPihsb2NhdGlvbiwgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVz
c2lvbj4oV1RGTW92ZSgqc3VmZml4KSwgV1RGTW92ZShwcmV2aW91cykpLCBpZGVudGlmaWVyLT5z
dHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCkpLCB0cnVlKTsKLSAgICB9Ci0gICAgY2FzZSBU
b2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ6IHsKLSAgICAgICAgYXV0byBleHByZXNzaW9u
ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAg
ICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7Ci0g
ICAgICAgIGlmIChhdXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpU
eXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpKSB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9j
YXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKLSAg
ICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRl
eEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVz
c2lvbikpLCB0cnVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lv
bihXVEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgIH0KLSAgICBjYXNlIFRva2VuOjpUeXBl
OjpQbHVzUGx1czogewotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNv
ZGVMb2NhdGlvbigpLCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJl
dmlvdXMpKTsKLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxs
QXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlh
YmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbiht
YWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJf
c3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0
RXhwcmVzc2lvbihyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1
cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICBk
ZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVChzdWZmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1p
bnVzTWludXMpOwotICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVM
b2NhdGlvbigpLCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVm
PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlv
dXMpKTsKLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJn
dW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3Ry
LCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhw
cmVzc2lvbihyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICByZXR1cm4g
U3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHJlc3VsdCksIHRydWUpOwotICAgIH0KLSAgICB9Ci19
Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UoZmlyc3QsIFBvc3NpYmxlVGVy
bmFyeUNvbmRpdGlvbmFsKTsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+
IGV4cHJlc3Npb25zOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gKCpmaXJzdCktPmNvZGVM
b2NhdGlvbigpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUo
KmZpcnN0KSk7Ci0KLSAgICB3aGlsZSAodHJ5VHlwZShUb2tlbjo6VHlwZTo6Q29tbWEpKSB7Ci0g
ICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLSAg
ICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0K
LSAgICBpZiAoZXhwcmVzc2lvbnMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBXVEZNb3Zl
KGV4cHJlc3Npb25zWzBdKTsKLSAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0
YXJ0T2Zmc2V0KCk7Ci0gICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkpOwotICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8
QVNUOjpDb21tYUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Npb25zKSkgfTsK
LX0KLQotYXV0byBQYXJzZXI6OmNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+JiYgcHJlZGljYXRlKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgQ09OU1VNRV9UWVBFKHF1ZXN0aW9uTWFyaywgUXVl
c3Rpb25NYXJrKTsKLSAgICBQQVJTRShib2R5RXhwcmVzc2lvbiwgRXhwcmVzc2lvbik7Ci0gICAg
Q09OU1VNRV9UWVBFKGNvbG9uLCBDb2xvbik7Ci0gICAgUEFSU0UoZWxzZUV4cHJlc3Npb24sIFBv
c3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKLQotICAgIENvZGVMb2NhdGlvbiBwcmVkaWNhdGVM
b2NhdGlvbiA9IHByZWRpY2F0ZS0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+PiBjYXN0QXJndW1lbnRzOwotICAgIGNhc3RBcmd1bWVudHMuYXBw
ZW5kKFdURk1vdmUocHJlZGljYXRlKSk7Ci0gICAgYXV0byBib29sQ2FzdCA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4ocHJlZGljYXRlTG9jYXRpb24sICJib29sIl9zdHIsIFdU
Rk1vdmUoY2FzdEFyZ3VtZW50cykpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmVkaWNh
dGVMb2NhdGlvbiwgKCplbHNlRXhwcmVzc2lvbiktPmNvZGVMb2NhdGlvbigpKTsKLSAgICByZXR1
cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZN
b3ZlKGJvb2xDYXN0KSwgV1RGTW92ZSgqYm9keUV4cHJlc3Npb24pLCBXVEZNb3ZlKCplbHNlRXhw
cmVzc2lvbikpIH07Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZUFzc2lnbm1lbnQoVW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBsZWZ0KSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpF
eHByZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgYXV0byBhc3NpZ25tZW50T3BlcmF0b3IgPSBjb25z
dW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpFcXVhbHNTaWduLAotICAgICAgICBUb2tl
bjo6VHlwZTo6UGx1c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6VGltZXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpE
aXZpZGVFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNb2RFcXVhbHMsCi0gICAgICAgIFRv
a2VuOjpUeXBlOjpYb3JFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpBbmRFcXVhbHMsCi0g
ICAgICAgIFRva2VuOjpUeXBlOjpPckVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlJpZ2h0
U2hpZnRFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpMZWZ0U2hpZnRFcXVhbHM+KCk7Ci0g
ICAgaWYgKCFhc3NpZ25tZW50T3BlcmF0b3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChhc3NpZ25tZW50T3BlcmF0b3IuZXJyb3IoKSk7Ci0KLSAgICBQQVJTRShyaWdodCwgUG9zc2li
bGVUZXJuYXJ5Q29uZGl0aW9uYWwpOwotICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbiA9IHsgbGVm
dC0+Y29kZUxvY2F0aW9uKCksICgqcmlnaHQpLT5jb2RlTG9jYXRpb24oKSB9OwotCi0gICAgaWYg
KGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikKLSAg
ICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihs
b2NhdGlvbiwgV1RGTW92ZShsZWZ0KSwgV1RGTW92ZSgqcmlnaHQpKX07Ci0KLSAgICBTdHJpbmcg
bmFtZTsKLSAgICBzd2l0Y2ggKGFzc2lnbm1lbnRPcGVyYXRvci0+dHlwZSkgewotICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlBsdXNFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IrIl9zdHI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1pbnVzRXF1YWxzOgotICAg
ICAgICBuYW1lID0gIm9wZXJhdG9yLSJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpUaW1lc0VxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcioiX3N0cjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2aWRlRXF1YWxzOgotICAg
ICAgICBuYW1lID0gIm9wZXJhdG9yLyJfc3RyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRv
a2VuOjpUeXBlOjpNb2RFcXVhbHM6Ci0gICAgICAgIG5hbWUgPSAib3BlcmF0b3IlIl9zdHI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVG9rZW46OlR5cGU6OlhvckVxdWFsczoKLSAgICAgICAg
bmFtZSA9ICJvcGVyYXRvcl4iX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6
VHlwZTo6QW5kRXF1YWxzOgotICAgICAgICBuYW1lID0gIm9wZXJhdG9yJiJfc3RyOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRva2VuOjpUeXBlOjpPckVxdWFsczoKLSAgICAgICAgbmFtZSA9
ICJvcGVyYXRvcnwiX3N0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6
UmlnaHRTaGlmdEVxdWFsczoKLSAgICAgICAgbmFtZSA9ICJvcGVyYXRvcj4+Il9zdHI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChhc3NpZ25tZW50T3BlcmF0
b3ItPnR5cGUgPT0gVG9rZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscyk7Ci0gICAgICAgIG5hbWUg
PSAib3BlcmF0b3I8PCJfc3RyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2Nh
dGlvbiwgV1RGTW92ZShsZWZ0KSk7Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+PiBjYWxsQXJndW1lbnRzOwotICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xk
VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgq
cmlnaHQpKTsKLSAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKSk7Ci0gICAgcmVzdWx0LT5zZXRSZXN1bHRFeHByZXNzaW9uKHJlc3VsdC0+
bmV3VmFyaWFibGVSZWZlcmVuY2UoKSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07
Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCkgLT4g
RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNF
KGV4cHJlc3Npb24sIFBvc3NpYmxlUHJlZml4KTsKLQotICAgIGlmIChwZWVrVHlwZXM8VG9rZW46
OlR5cGU6OkVxdWFsc1NpZ24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpQbHVzRXF1YWxzLAotICAg
ICAgICBUb2tlbjo6VHlwZTo6TWludXNFcXVhbHMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpUaW1l
c0VxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OkRpdmlkZUVxdWFscywKLSAgICAgICAgVG9r
ZW46OlR5cGU6Ok1vZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6OlhvckVxdWFscywKLSAg
ICAgICAgVG9rZW46OlR5cGU6OkFuZEVxdWFscywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yRXF1
YWxzLAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlmdEVxdWFscywKLSAgICAgICAgVG9r
ZW46OlR5cGU6OkxlZnRTaGlmdEVxdWFscz4oKSkgewotICAgICAgICByZXR1cm4gY29tcGxldGVB
c3NpZ25tZW50KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBleHByZXNzaW9u
ID0gY29tcGxldGVQb3NzaWJsZVNoaWZ0KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAo
IWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVy
cm9yKCkpOwotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVNdWx0aXBseShXVEZN
b3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKLQotICAgIGV4cHJlc3Npb24gPSBj
b21wbGV0ZVBvc3NpYmxlQWRkKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJl
c3Npb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkp
OwotCi0gICAgZXhwcmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3Bl
cmF0aW9uKFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgZXhw
cmVzc2lvbiA9IGNvbXBsZXRlUG9zc2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUo
KmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwotCi0gICAgUEVFSyhuZXh0VG9rZW4pOwot
ICAgIGlmIChuZXh0VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlF1ZXN0aW9uTWFyaykKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRlVGVybmFyeUNvbmRpdGlvbmFsKFdURk1vdmUoKmV4cHJlc3Np
b24pKTsKLSAgICByZXR1cm4gZXhwcmVzc2lvbjsKLX0KLQotYXV0byBQYXJzZXI6OnBhcnNlUG9z
c2libGVMb2dpY2FsQmluYXJ5T3BlcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJs
ZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24pOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxl
TG9naWNhbEJpbmFyeU9wZXJhdGlvbihXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1h
dXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIGxvZ2ljYWxCaW5hcnlP
cGVyYXRpb24gPSB0cnlUeXBlczwKLSAgICAgICAgVG9rZW46OlR5cGU6Ok9yT3IsCi0gICAgICAg
IFRva2VuOjpUeXBlOjpBbmRBbmQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpPciwKLSAgICAgICAg
VG9rZW46OlR5cGU6OlhvciwKLSAgICAgICAgVG9rZW46OlR5cGU6OkFuZAotICAgICAgICA+KCkp
IHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9u
KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24o
KSwgKCpuZXh0KS0+Y29kZUxvY2F0aW9uKCkpOwotCi0gICAgICAgIHN3aXRjaCAobG9naWNhbEJp
bmFyeU9wZXJhdGlvbi0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPck9yOgot
ICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6TG9naWNhbEV4cHJlc3Np
b24+KGxvY2F0aW9uLCBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpPciwgV1RGTW92ZShw
cmV2aW91cyksIFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFRva2VuOjpUeXBlOjpBbmRBbmQ6Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4obG9jYXRpb24sIEFTVDo6TG9naWNhbEV4cHJl
c3Npb246OlR5cGU6OkFuZCwgV1RGTW92ZShwcmV2aW91cyksIFdURk1vdmUoKm5leHQpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpPcjogewotICAgICAg
ICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwot
ICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZShwcmV2aW91cykpOwotICAg
ICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAg
ICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9u
LCAib3BlcmF0b3J8Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6WG9yOiB7Ci0gICAg
ICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7
Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzKSk7Ci0g
ICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAg
ICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRp
b24sICJvcGVyYXRvcl4iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBBU1NF
UlQobG9naWNhbEJpbmFyeU9wZXJhdGlvbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6QW5kKTsKLSAg
ICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50
czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsK
LSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKm5leHQpKTsKLSAgICAg
ICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2Nh
dGlvbiwgIm9wZXJhdG9yJiJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4geyBX
VEZNb3ZlKHByZXZpb3VzKSB9OwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVJlbGF0
aW9uYWxCaW5hcnlPcGVyYXRpb24oKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNz
aW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlU2hpZnQp
OwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlUmVsYXRpb25hbEJpbmFyeU9wZXJhdGlvbihX
VEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwotfQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3Nz
aWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4m
JiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9y
PgotewotICAgIHdoaWxlIChhdXRvIHJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24gPSB0cnlUeXBl
czwKLSAgICAgICAgVG9rZW46OlR5cGU6Okxlc3NUaGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5
cGU6OkdyZWF0ZXJUaGFuU2lnbiwKLSAgICAgICAgVG9rZW46OlR5cGU6Okxlc3NUaGFuT3JFcXVh
bFRvLAotICAgICAgICBUb2tlbjo6VHlwZTo6R3JlYXRlclRoYW5PckVxdWFsVG8sCi0gICAgICAg
IFRva2VuOjpUeXBlOjpFcXVhbENvbXBhcmlzb24sCi0gICAgICAgIFRva2VuOjpUeXBlOjpOb3RF
cXVhbAotICAgICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVTaGlmdCk7
Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCks
ICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBw
ZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RG
TW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRjaCAocmVsYXRpb25hbEJpbmFyeU9wZXJhdGlv
bi0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpMZXNzVGhhblNpZ246IHsKLSAg
ICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihs
b2NhdGlvbiwgIm9wZXJhdG9yPCJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkdyZWF0
ZXJUaGFuU2lnbjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I+Il9zdHIsIFdURk1vdmUoY2FsbEFy
Z3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6TGVzc1RoYW5PckVxdWFsVG86IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yPD0i
X3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWxUbzogewot
ICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+
KGxvY2F0aW9uLCAib3BlcmF0b3I+PSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVx
dWFsQ29tcGFyaXNvbjogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKGNh
bGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChyZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uLT50
eXBlID09IFRva2VuOjpUeXBlOjpOb3RFcXVhbCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1h
a2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj09Il9z
dHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtl
VW5pcXVlUmVmPEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHBy
ZXZpb3VzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFy
c2VQb3NzaWJsZVNoaWZ0KCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4s
IEVycm9yPgotewotICAgIFBBUlNFKHBhcnNlZFByZXZpb3VzLCBQb3NzaWJsZUFkZCk7Ci0gICAg
cmV0dXJuIGNvbXBsZXRlUG9zc2libGVTaGlmdChXVEZNb3ZlKCpwYXJzZWRQcmV2aW91cykpOwot
fQotCi1hdXRvIFBhcnNlcjo6Y29tcGxldGVQb3NzaWJsZVNoaWZ0KFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBzaGlmdCA9IHRyeVR5cGVzPAotICAgICAg
ICBUb2tlbjo6VHlwZTo6TGVmdFNoaWZ0LAotICAgICAgICBUb2tlbjo6VHlwZTo6UmlnaHRTaGlm
dAotICAgICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVBZGQpOwotICAg
ICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlvbigpLCAoKm5l
eHQpLT5jb2RlTG9jYXRpb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChX
VEZNb3ZlKHByZXZpb3VzKSk7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUo
Km5leHQpKTsKLQotICAgICAgICBzd2l0Y2ggKHNoaWZ0LT50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkxlZnRTaGlmdDogewotICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5p
cXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3I8PCJfc3RyLCBX
VEZNb3ZlKGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChzaGlmdC0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6UmlnaHRTaGlmdCk7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcj4+Il9zdHIsIFdURk1v
dmUoY2FsbEFyZ3VtZW50cykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHByZXZpb3VzKTsKLX0KLQotYXV0byBQ
YXJzZXI6OnBhcnNlUG9zc2libGVBZGQoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlTXVs
dGlwbHkpOwotICAgIHJldHVybiBjb21wbGV0ZVBvc3NpYmxlQWRkKFdURk1vdmUoKnBhcnNlZFBy
ZXZpb3VzKSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlQWRkKFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+JiYgcHJldmlvdXMpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+LCBFcnJvcj4KLXsKLSAgICB3aGlsZSAoYXV0byBhZGQgPSB0cnlUeXBlczwK
LSAgICAgICAgVG9rZW46OlR5cGU6OlBsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51cwot
ICAgICAgICA+KCkpIHsKLSAgICAgICAgUEFSU0UobmV4dCwgUG9zc2libGVNdWx0aXBseSk7Ci0g
ICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgq
bmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5k
KFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92
ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRjaCAoYWRkLT50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
VG9rZW46OlR5cGU6OlBsdXM6IHsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKyJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEFTU0VSVChhZGQtPnR5cGUgPT0gVG9rZW46OlR5cGU6
Ok1pbnVzKTsKLSAgICAgICAgICAgIHByZXZpb3VzID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxF
eHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVu
dHMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gV1RGTW92ZShwcmV2aW91cyk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpwYXJzZVBv
c3NpYmxlTXVsdGlwbHkoKSAtPiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+Ci17Ci0gICAgUEFSU0UocGFyc2VkUHJldmlvdXMsIFBvc3NpYmxlUHJlZml4KTsKLSAg
ICByZXR1cm4gY29tcGxldGVQb3NzaWJsZU11bHRpcGx5KFdURk1vdmUoKnBhcnNlZFByZXZpb3Vz
KSk7Ci19Ci0KLWF1dG8gUGFyc2VyOjpjb21wbGV0ZVBvc3NpYmxlTXVsdGlwbHkoVW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cykgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIHdoaWxlIChhdXRvIG11bHRpcGx5ID0gdHJ5VHlw
ZXM8Ci0gICAgICAgIFRva2VuOjpUeXBlOjpTdGFyLAotICAgICAgICBUb2tlbjo6VHlwZTo6RGl2
aWRlLAotICAgICAgICBUb2tlbjo6VHlwZTo6TW9kCi0gICAgICAgID4oKSkgewotICAgICAgICBQ
QVJTRShuZXh0LCBQb3NzaWJsZVByZWZpeCk7Ci0gICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlv
bihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQot
ICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7
Ci0gICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUocHJldmlvdXMpKTsKLSAgICAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotCi0gICAgICAgIHN3aXRj
aCAobXVsdGlwbHktPnR5cGUpIHsKLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3Rhcjogewot
ICAgICAgICAgICAgcHJldmlvdXMgPSBtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+
KGxvY2F0aW9uLCAib3BlcmF0b3IqIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RGl2
aWRlOiB7Ci0gICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhw
cmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci8iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRz
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgICAgICBBU1NFUlQobXVsdGlwbHktPnR5cGUgPT0gVG9rZW46OlR5cGU6Ok1vZCk7Ci0g
ICAgICAgICAgICBwcmV2aW91cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvciUiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IFdURk1vdmUocHJldmlvdXMpOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVByZWZp
eChib29sICppc0VmZmVjdGZ1bCkgLT4gRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lv
bj4sIEVycm9yPgotewotICAgIGlmIChhdXRvIHByZWZpeCA9IHRyeVR5cGVzPAotICAgICAgICBU
b2tlbjo6VHlwZTo6UGx1c1BsdXMsCi0gICAgICAgIFRva2VuOjpUeXBlOjpNaW51c01pbnVzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6UGx1cywKLSAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzLAot
ICAgICAgICBUb2tlbjo6VHlwZTo6VGlsZGUsCi0gICAgICAgIFRva2VuOjpUeXBlOjpFeGNsYW1h
dGlvblBvaW50LAotICAgICAgICBUb2tlbjo6VHlwZTo6QW5kLAotICAgICAgICBUb2tlbjo6VHlw
ZTo6QXQsCi0gICAgICAgIFRva2VuOjpUeXBlOjpTdGFyCi0gICAgPigpKSB7Ci0gICAgICAgIFBB
UlNFKG5leHQsIFBvc3NpYmxlUHJlZml4KTsKLSAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KCpwcmVmaXgsICgqbmV4dCktPmNvZGVMb2NhdGlvbigpKTsKLQotICAgICAgICBzd2l0Y2ggKHBy
ZWZpeC0+dHlwZSkgewotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czogewotICAg
ICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9
IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAg
ICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwot
ICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVy
ZW5jZSgpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VV
bmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIs
IFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0
RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxlUmVmZXJlbmNlKCkpOwotICAgICAgICAgICAg
cmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6TWludXNNaW51czogewotICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAg
ICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlv
biwgV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4
cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBl
bmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+
c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
bG9jYXRpb24sICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKLSAg
ICAgICAgICAgIHJlc3VsdC0+c2V0UmVzdWx0RXhwcmVzc2lvbihyZXN1bHQtPm5ld1ZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1czogewotICAgICAgICAgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwotICAgICAg
ICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqbmV4dCkpOwotICAgICAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9w
ZXJhdG9yKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSB9OwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6Ok1pbnVzOiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYWxsQXJn
dW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItIl9zdHIs
IFdURk1vdmUoY2FsbEFyZ3VtZW50cykpIH07Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6VGlsZGU6IHsKLSAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5k
KFdURk1vdmUoKm5leHQpKTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNU
OjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcn4iX3N0ciwgV1RGTW92ZShjYWxs
QXJndW1lbnRzKSkgfTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpFeGNs
YW1hdGlvblBvaW50OiB7Ci0gICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4+IGNhc3RBcmd1bWVudHM7Ci0gICAgICAgICAgICBjYXN0QXJndW1lbnRzLmFwcGVuZChX
VEZNb3ZlKCpuZXh0KSk7Ci0gICAgICAgICAgICBhdXRvIGJvb2xDYXN0ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgImJvb2wiX3N0ciwgV1RGTW92ZShjYXN0
QXJndW1lbnRzKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGJvb2xDYXN0KSkgfTsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpBbmQ6Ci0gICAgICAgICAgICByZXR1cm4g
eyBtYWtlVW5pcXVlUmVmPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZSgqbmV4dCksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXMpIH07Ci0gICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkF0OgotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJl
ZjxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpu
ZXh0KSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlcykgfTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVChwcmVmaXgtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlN0YXIp
OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkRlcmVmZXJlbmNlRXhw
cmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5leHQpKSB9OwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoaXNFZmZlY3RmdWwpOwotfQotCi1hdXRv
IFBhcnNlcjo6cGFyc2VQb3NzaWJsZVN1ZmZpeChib29sICppc0VmZmVjdGZ1bCkgLT4gRXhwZWN0
ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPgotewotICAgIFBFRUsodG9rZW4p
OwotICAgIFBFRUtfRlVSVEhFUihuZXh0VG9rZW4pOwotCi0gICAgaWYgKHRva2VuLT50eXBlID09
IFRva2VuOjpUeXBlOjpJZGVudGlmaWVyICYmIG5leHRUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6TGVmdFBhcmVudGhlc2lzKSB7Ci0gICAgICAgIFBBUlNFKGV4cHJlc3Npb24sIENhbGxFeHBy
ZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQotICAgICAgICAgICAgKmlzRWZmZWN0
ZnVsID0gdHJ1ZTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIFBFRUsoc3Vm
Zml4VG9rZW4pOwotICAgICAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9IFRva2VuOjpU
eXBlOjpGdWxsU3RvcCAmJiBzdWZmaXhUb2tlbi0+dHlwZSAhPSBUb2tlbjo6VHlwZTo6QXJyb3cg
JiYgc3VmZml4VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0KQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZUxp
bWl0ZWRTdWZmaXhPcGVyYXRvcihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgICAgICAgICBl
eHByZXNzaW9uID0gV1RGTW92ZShyZXN1bHQucmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gZXhwcmVzc2lvbjsKLSAgICB9Ci0KLSAgICBpZiAodG9rZW4tPnR5cGUgPT0gVG9rZW46
OlR5cGU6OkxlZnRQYXJlbnRoZXNpcyAmJiBpc0VmZmVjdGZ1bCkKLSAgICAgICAgKmlzRWZmZWN0
ZnVsID0gdHJ1ZTsKLQotICAgIFBBUlNFKGV4cHJlc3Npb24sIFRlcm0pOwotICAgIGJvb2wgaXNM
YXN0U3VmZml4VG9rZW5FZmZlY3RmdWwgPSBmYWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICBQRUVLKHN1ZmZpeFRva2VuKTsKLSAgICAgICAgaWYgKHN1ZmZpeFRva2VuLT50eXBlICE9
IFRva2VuOjpUeXBlOjpGdWxsU3RvcAotICAgICAgICAgICAgJiYgc3VmZml4VG9rZW4tPnR5cGUg
IT0gVG9rZW46OlR5cGU6OkFycm93Ci0gICAgICAgICAgICAmJiBzdWZmaXhUb2tlbi0+dHlwZSAh
PSBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQKLSAgICAgICAgICAgICYmIHN1ZmZpeFRv
a2VuLT50eXBlICE9IFRva2VuOjpUeXBlOjpQbHVzUGx1cwotICAgICAgICAgICAgJiYgc3VmZml4
VG9rZW4tPnR5cGUgIT0gVG9rZW46OlR5cGU6Ok1pbnVzTWludXMpIHsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlzTGFzdFN1ZmZpeFRva2VuRWZmZWN0ZnVsID0gc3Vm
Zml4VG9rZW4tPnR5cGUgPT0gVG9rZW46OlR5cGU6OlBsdXNQbHVzIHx8IHN1ZmZpeFRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpNaW51c01pbnVzOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHBh
cnNlU3VmZml4T3BlcmF0b3IoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgICAgICBleHByZXNz
aW9uID0gV1RGTW92ZShyZXN1bHQucmVzdWx0KTsKLSAgICB9Ci0gICAgaWYgKGlzTGFzdFN1ZmZp
eFRva2VuRWZmZWN0ZnVsICYmIGlzRWZmZWN0ZnVsKQotICAgICAgICAqaXNFZmZlY3RmdWwgPSB0
cnVlOwotICAgIHJldHVybiBleHByZXNzaW9uOwotfQotCi1hdXRvIFBhcnNlcjo6cGFyc2VDYWxs
RXhwcmVzc2lvbigpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJv
cj4KLXsKLSAgICBDT05TVU1FX1RZUEUobmFtZSwgSWRlbnRpZmllcik7Ci0gICAgYXV0byBjYWxs
TmFtZSA9IG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKTsKLQotICAgIENPTlNV
TUVfVFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7Ci0KLSAgICBWZWN0b3I8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGFyZ3VtZW50czsKLSAgICBpZiAodHJ5VHlwZShU
b2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcykpCi0gICAgICAgIHJldHVybiB7IG1ha2VVbmlx
dWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4oV1RGTW92ZSgqbmFtZSksIFdURk1vdmUoY2FsbE5h
bWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpIH07Ci0KLSAgICBQQVJTRShmaXJzdEFyZ3VtZW50LCBQ
b3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChXVEZNb3Zl
KCpmaXJzdEFyZ3VtZW50KSk7Ci0gICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1h
KSkgewotICAgICAgICBQQVJTRShhcmd1bWVudCwgUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwp
OwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKmFyZ3VtZW50KSk7Ci0gICAgfQot
Ci0gICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwot
ICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbigqbmFtZSwgKnJpZ2h0UGFyZW50aGVzaXMpOwotCi0g
ICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwg
V1RGTW92ZShjYWxsTmFtZSksIFdURk1vdmUoYXJndW1lbnRzKSkgfTsKLX0KLQotYXV0byBQYXJz
ZXI6OnBhcnNlVGVybSgpIC0+IEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBF
cnJvcj4KLXsKLSAgICBhdXRvIHR5cGUgPSBjb25zdW1lVHlwZXM8Ci0gICAgICAgIFRva2VuOjpU
eXBlOjpJbnRMaXRlcmFsLAotICAgICAgICBUb2tlbjo6VHlwZTo6VWludExpdGVyYWwsCi0gICAg
ICAgIFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWwsCi0gICAgICAgIFRva2VuOjpUeXBlOjpOdWxs
LAotICAgICAgICBUb2tlbjo6VHlwZTo6VHJ1ZSwKLSAgICAgICAgVG9rZW46OlR5cGU6OkZhbHNl
LAotICAgICAgICBUb2tlbjo6VHlwZTo6SWRlbnRpZmllciwKLSAgICAgICAgVG9rZW46OlR5cGU6
OkxlZnRQYXJlbnRoZXNpcz4oKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCh0eXBlLmVycm9yKCkpOwotCi0gICAgc3dpdGNoICh0eXBlLT50eXBlKSB7Ci0g
ICAgY2FzZSBUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZhbHVlID0g
aW50TGl0ZXJhbFRvSW50KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAo
IXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVycm9yKCkp
OwotICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6SW50ZWdlckxpdGVyYWw+KCp0
eXBlLCAqdmFsdWUpIH07Ci0gICAgfQotICAgIGNhc2UgVG9rZW46OlR5cGU6OlVpbnRMaXRlcmFs
OiB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB1aW50TGl0ZXJhbFRvVWludCh0eXBlLT5zdHJpbmdW
aWV3KG1fbGV4ZXIpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZVJlZjxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KCp0eXBlLCAqdmFsdWUpIH07Ci0gICAg
fQotICAgIGNhc2UgVG9rZW46OlR5cGU6OkZsb2F0TGl0ZXJhbDogewotICAgICAgICBhdXRvIHZh
bHVlID0gZmxvYXRMaXRlcmFsVG9GbG9hdCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIpKTsKLSAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1
ZS5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OkZsb2F0TGl0
ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKLSAgICB9Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6TnVs
bDoKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCInbnVsbCcgaXMgYSByZXNl
cnZlZCBrZXl3b3JkLiIsIHR5cGUtPmNvZGVMb2NhdGlvbikpOwotICAgIGNhc2UgVG9rZW46OlR5
cGU6OlRydWU6Ci0gICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0
ZXJhbD4oKnR5cGUsIHRydWUpIH07Ci0gICAgY2FzZSBUb2tlbjo6VHlwZTo6RmFsc2U6Ci0gICAg
ICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpCb29sZWFuTGl0ZXJhbD4oKnR5cGUsIGZh
bHNlKSB9OwotICAgIGNhc2UgVG9rZW46OlR5cGU6OklkZW50aWZpZXI6IHsKLSAgICAgICAgYXV0
byBuYW1lID0gdHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpOwotICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KCp0eXBlLCBXVEZN
b3ZlKG5hbWUpKSB9OwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIEFTU0VSVCh0eXBl
LT50eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0UGFyZW50aGVzaXMpOwotICAgICAgICBQQVJTRShl
eHByZXNzaW9uLCBFeHByZXNzaW9uKTsKLSAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0UGFyZW50
aGVzaXMsIFJpZ2h0UGFyZW50aGVzaXMpOwotCi0gICAgICAgIHJldHVybiB7IFdURk1vdmUoKmV4
cHJlc3Npb24pIH07Ci0gICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZWVhMzI2ZGI0NzQ3N2U2ZTllMzM2
OTYzMzdiNmU2NWQzMTc3NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFTVC5o
IgotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5j
bHVkZSAiV0hMU0xQYXJzaW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVz
cGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLWNsYXNzIFBhcnNlciB7Ci1wdWJsaWM6
Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHBhcnNlKFByb2dyYW0mLCBTdHJpbmdWaWV3LCBQ
YXJzaW5nTW9kZSwgQVNUOjpOYW1lU3BhY2UpOwotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90IG5lZWQgdGhpcwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgzNTcKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGJhY2t0cmFj
a2luZ1Njb3BlKHN0ZDo6ZnVuY3Rpb248VCgpPiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGF1
dG8gc3RhdGUgPSBtX2xleGVyLnN0YXRlKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsbGJh
Y2soKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIG1fbGV4ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLQotICAgIGVudW0gY2xhc3MgVHJ5VG9QZWVrIHsKLSAgICAgICAgWWVz
LAotICAgICAgICBObwotICAgIH07Ci0gICAgVW5leHBlY3RlZDxFcnJvcj4gZmFpbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFRyeVRvUGVlayA9IFRyeVRvUGVlazo6WWVzKTsKLSAgICBFeHBlY3Rl
ZDxUb2tlbiwgRXJyb3I+IHBlZWsoKTsKLSAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IHBlZWtG
dXJ0aGVyKCk7Ci0gICAgYm9vbCBwZWVrVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUg
PFRva2VuOjpUeXBlLi4uIHR5cGVzPgotICAgIGJvb2wgcGVla1R5cGVzKCk7Ci0gICAgc3RkOjpv
cHRpb25hbDxUb2tlbj4gdHJ5VHlwZShUb2tlbjo6VHlwZSk7Ci0gICAgdGVtcGxhdGUgPFRva2Vu
OjpUeXBlLi4uIHR5cGVzPgotICAgIHN0ZDo6b3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVzKCk7Ci0g
ICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZShUb2tlbjo6VHlwZSk7Ci0gICAg
dGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotICAgIEV4cGVjdGVkPFRva2VuLCBFcnJv
cj4gY29uc3VtZVR5cGVzKCk7Ci0KLSAgICBFeHBlY3RlZDxWYXJpYW50PGludCwgdW5zaWduZWQ+
LCBFcnJvcj4gY29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIEV4cGVjdGVkPHVuc2lnbmVk
LCBFcnJvcj4gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgRXhwZWN0
ZWQ8QVNUOjpDb25zdGFudEV4cHJlc3Npb24sIEVycm9yPiBwYXJzZUNvbnN0YW50RXhwcmVzc2lv
bigpOwotICAgIEV4cGVjdGVkPEFTVDo6VHlwZUFyZ3VtZW50LCBFcnJvcj4gcGFyc2VUeXBlQXJn
dW1lbnQoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPiBwYXJzZVR5
cGVBcmd1bWVudHMoKTsKLSAgICBzdHJ1Y3QgVHlwZVN1ZmZpeEFiYnJldmlhdGVkIHsKLSAgICAg
ICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uOwotICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7Ci0gICAgfTsKLSAgICBFeHBlY3Rl
ZDxUeXBlU3VmZml4QWJicmV2aWF0ZWQsIEVycm9yPiBwYXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRl
ZCgpOwotICAgIHN0cnVjdCBUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQgewotICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb247Ci0gICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBzdGQ6Om9w
dGlvbmFsPEFTVDo6QWRkcmVzc1NwYWNlPiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwotICAgIH07Ci0gICAgRXhwZWN0ZWQ8VHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQo
KTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZUFkZHJl
c3NTcGFjZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9y
PiBwYXJzZU5vbkFkZHJlc3NTcGFjZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5h
bWVkVHlwZT4sIEVycm9yPiBwYXJzZVR5cGUoKTsKLSAgICBFeHBlY3RlZDxBU1Q6OlR5cGVEZWZp
bml0aW9uLCBFcnJvcj4gcGFyc2VUeXBlRGVmaW5pdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6
QnVpbHRJblNlbWFudGljLCBFcnJvcj4gcGFyc2VCdWlsdEluU2VtYW50aWMoKTsKLSAgICBFeHBl
Y3RlZDxBU1Q6OlJlc291cmNlU2VtYW50aWMsIEVycm9yPiBwYXJzZVJlc291cmNlU2VtYW50aWMo
KTsKLSAgICBFeHBlY3RlZDxBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJy
b3I+IHBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7Ci0gICAgRXhwZWN0ZWQ8
QVNUOjpTdGFnZUluT3V0U2VtYW50aWMsIEVycm9yPiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygp
OwotICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+IHBh
cnNlU2VtYW50aWMoKTsKLSAgICBBU1Q6OlF1YWxpZmllcnMgcGFyc2VRdWFsaWZpZXJzKCk7Ci0g
ICAgRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVFbGVtZW50LCBFcnJvcj4gcGFyc2VTdHJ1Y3R1cmVF
bGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBFcnJvcj4g
cGFyc2VTdHJ1Y3R1cmVEZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlv
bkRlZmluaXRpb24sIEVycm9yPiBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpOwotICAgIEV4
cGVjdGVkPEFTVDo6RW51bWVyYXRpb25NZW1iZXIsIEVycm9yPiBwYXJzZUVudW1lcmF0aW9uTWVt
YmVyKGludDY0X3QgZGVmYXVsdFZhbHVlKTsKLSAgICBFeHBlY3RlZDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlTmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7Ci0gICAgRXhw
ZWN0ZWQ8QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUsIEVycm9yPiBwYXJzZU51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSgpOwotICAgIEV4cGVjdGVkPEFTVDo6QXR0cmlidXRlQmxv
Y2ssIEVycm9yPiBwYXJzZUF0dHJpYnV0ZUJsb2NrKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXIoKTsKLSAgICBFeHBlY3RlZDxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zLCBFcnJvcj4gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAg
RXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VDb21wdXRlRnVu
Y3Rpb25EZWNsYXJhdGlvbigpOwotICAgIEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biwgRXJyb3I+IHBhcnNlVmVydGV4T3JGcmFnbWVudEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAg
ICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZVJlZ3VsYXJG
dW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uLCBFcnJvcj4gcGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICBFeHBl
Y3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPiBwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24oKTsKLSAgICBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiwgRXJyb3I+IHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9uKCk7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLCBFcnJvcj4gcGFyc2VOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0K
LSAgICBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBFcnJvcj4gcGFyc2VCbG9jaygpOwotICAgIEV4cGVj
dGVkPEFTVDo6QmxvY2ssIEVycm9yPiBwYXJzZUJsb2NrQm9keSgpOwotICAgIEV4cGVjdGVkPEFT
VDo6SWZTdGF0ZW1lbnQsIEVycm9yPiBwYXJzZUlmU3RhdGVtZW50KCk7Ci0gICAgRXhwZWN0ZWQ8
QVNUOjpTd2l0Y2hTdGF0ZW1lbnQsIEVycm9yPiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpOwotICAg
IEV4cGVjdGVkPEFTVDo6U3dpdGNoQ2FzZSwgRXJyb3I+IHBhcnNlU3dpdGNoQ2FzZSgpOwotICAg
IEV4cGVjdGVkPEFTVDo6Rm9yTG9vcCwgRXJyb3I+IHBhcnNlRm9yTG9vcCgpOwotICAgIEV4cGVj
dGVkPEFTVDo6V2hpbGVMb29wLCBFcnJvcj4gcGFyc2VXaGlsZUxvb3AoKTsKLSAgICBFeHBlY3Rl
ZDxBU1Q6OkRvV2hpbGVMb29wLCBFcnJvcj4gcGFyc2VEb1doaWxlTG9vcCgpOwotICAgIEV4cGVj
dGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJh
dGlvbihSZWY8QVNUOjpVbm5hbWVkVHlwZT4mJik7Ci0gICAgRXhwZWN0ZWQ8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgRXJyb3I+IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbnMo
KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4gcGFyc2VT
dGF0ZW1lbnQoKTsKLQotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlN0YXRlbWVudD4sIEVy
cm9yPiBwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24oKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8
QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlRWZmZWN0ZnVsQXNzaWdubWVudCgpOwotICAg
IHN0cnVjdCBTdWZmaXhFeHByZXNzaW9uIHsKLSAgICAgICAgU3VmZml4RXhwcmVzc2lvbihVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHJlc3VsdCwgYm9vbCBzdWNjZXNzKQotICAgICAgICAg
ICAgOiByZXN1bHQoV1RGTW92ZShyZXN1bHQpKQotICAgICAgICAgICAgLCBzdWNjZXNzKHN1Y2Nl
c3MpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFVuaXF1ZVJlZjxBU1Q6OkV4cHJl
c3Npb24+IHJlc3VsdDsKLSAgICAgICAgYm9vbCBzdWNjZXNzOwotICAgICAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gc3VjY2VzczsgfQotICAgIH07Ci0gICAgU3VmZml4RXhwcmVz
c2lvbiBwYXJzZUxpbWl0ZWRTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiYmKTsKLSAgICBTdWZmaXhFeHByZXNzaW9uIHBhcnNlU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4mJik7Ci0KLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHBy
ZXNzaW9uPiwgRXJyb3I+IHBhcnNlRXhwcmVzc2lvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gcGFyc2VQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25h
bCgpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4gY29t
cGxldGVUZXJuYXJ5Q29uZGl0aW9uYWwoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmVk
aWNhdGUpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+LCBFcnJvcj4g
Y29tcGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiYgbGVmdCk7Ci0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3Np
YmxlTG9naWNhbEJpbmFyeU9wZXJhdGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZUxvZ2ljYWxCaW5hcnlPcGVyYXRp
b24oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8
VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlUmVsYXRpb25h
bEJpbmFyeU9wZXJhdGlvbigpOwotICAgIEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Np
b24+LCBFcnJvcj4gY29tcGxldGVQb3NzaWJsZVJlbGF0aW9uYWxCaW5hcnlPcGVyYXRpb24oVW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0gICAgRXhwZWN0ZWQ8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3NpYmxlU2hpZnQoKTsKLSAgICBF
eHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBsZXRlUG9zc2li
bGVTaGlmdChVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKTsKLSAgICBFeHBl
Y3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9zc2libGVBZGQo
KTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IGNvbXBs
ZXRlUG9zc2libGVBZGQoVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mJiBwcmV2aW91cyk7Ci0g
ICAgRXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4sIEVycm9yPiBwYXJzZVBvc3Np
YmxlTXVsdGlwbHkoKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+IGNvbXBsZXRlUG9zc2libGVNdWx0aXBseShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9u
PiYmIHByZXZpb3VzKTsKLSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwg
RXJyb3I+IHBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsK
LSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlUG9z
c2libGVTdWZmaXgoYm9vbCAqaXNFZmZlY3RmdWwgPSBudWxscHRyKTsKLSAgICBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsK
LSAgICBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+IHBhcnNlVGVy
bSgpOwotCi0gICAgTGV4ZXIgbV9sZXhlcjsKLSAgICBQYXJzaW5nTW9kZSBtX21vZGU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNpbmdNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJkZjA3Mzc2Y2Y4ZDQwZWM3YmE4YzBjYTM3MDcyMzQwZDQ2MjAxZDMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzaW5nTW9kZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdITFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLWVudW0gY2xhc3MgUGFyc2luZ01vZGUgOiB1aW50OF90IHsKLSAgICBTdGFuZGFyZExp
YnJhcnksCi0gICAgVXNlcgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlw
ZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNzA1OTg4
MGQ1M2RlY2E4YjY0MjRmZTI2MDU1ZmVhMGNlZWZiMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCi0KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotZW51bSBjbGFzcyBWZXJ0ZXhGb3JtYXQgOiB1aW50OF90IHsKLSAg
ICBGbG9hdFIzMkczMkIzMkEzMiwKLSAgICBGbG9hdFIzMkczMkIzMiwKLSAgICBGbG9hdFIzMkcz
MiwKLSAgICBGbG9hdFIzMgotfTsKLQotc3RydWN0IFZlcnRleEF0dHJpYnV0ZSB7Ci0gICAgVmVy
dGV4Rm9ybWF0IHZlcnRleEZvcm1hdDsKLSAgICB1bnNpZ25lZCBzaGFkZXJMb2NhdGlvbjsKLSAg
ICB1bnNpZ25lZCBtZXRhbExvY2F0aW9uOwotfTsKLQotdXNpbmcgVmVydGV4QXR0cmlidXRlcyA9
IFZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+OwotCi0vLyBGSVhNRTogQWRkIGJhY2sgPCAzMiBiaXQg
dGV4dHVyZSB2YWx1ZXMgYW5kIGZpZ3VyZSBvdXQgaG93IHRvIGJveCB0aGVtIGluIHdpZGVyIHR5
cGVzIHdoZW4gd2UgbG9hZCBmcm9tIHRoZW0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwMzE1Ci0KLWVudW0gY2xhc3MgVGV4dHVyZUZvcm1hdCB7Ci0gICAg
UjhVbm9ybSwKLSAgICBSOFVub3JtU3JnYiwKLSAgICBSOFNub3JtLAotICAgIFIxNlVub3JtLAot
ICAgIFIxNlNub3JtLAotICAgIFIxNkZsb2F0LAotICAgIFJHOFVub3JtLAotICAgIFJHOFVub3Jt
U3JnYiwKLSAgICBSRzhTbm9ybSwKLSAgICBCNUc2UjVVbm9ybSwKLSAgICBSMzJVaW50LAotICAg
IFIzMlNpbnQsCi0gICAgUjMyRmxvYXQsCi0gICAgUkcxNlVub3JtLAotICAgIFJHMTZTbm9ybSwK
LSAgICBSRzE2RmxvYXQsCi0gICAgUkdCQThVbm9ybSwKLSAgICBSR0JBOFVub3JtU3JnYiwKLSAg
ICBSR0JBOFNub3JtLAotICAgIEJHUkE4VW5vcm0sCi0gICAgQkdSQThVbm9ybVNyZ2IsCi0gICAg
UkdCMTBBMlVub3JtLAotICAgIFJHMTFCMTBGbG9hdCwKLSAgICBSRzMyVWludCwKLSAgICBSRzMy
U2ludCwKLSAgICBSRzMyRmxvYXQsCi0gICAgUkdCQTE2VW5vcm0sCi0gICAgUkdCQTE2U25vcm0s
Ci0gICAgUkdCQTE2RmxvYXQsCi0gICAgUkdCQTMyVWludCwKLSAgICBSR0JBMzJTaW50LAotICAg
IFJHQkEzMkZsb2F0Ci19OwotCi1zdHJ1Y3QgQXR0YWNobWVudERlc2NyaXB0b3IgewotICAgIFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdDsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotc3Ry
dWN0IEF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8QXR0YWNobWVudERl
c2NyaXB0b3I+IGF0dGFjaG1lbnREZXNjcmlwdG9yczsKLSAgICBzdGQ6Om9wdGlvbmFsPEF0dGFj
aG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKLX07Ci0K
LWVudW0gY2xhc3MgU2hhZGVyU3RhZ2UgOiB1aW50OF90IHsKLSAgICBOb25lID0gMCwKLSAgICBW
ZXJ0ZXggPSAxIDw8IDAsCi0gICAgRnJhZ21lbnQgPSAxIDw8IDEsCi0gICAgQ29tcHV0ZSA9IDEg
PDwgMgotfTsKLQotc3RydWN0IFVuaWZvcm1CdWZmZXJCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBs
ZW5ndGhOYW1lOwotfTsKLQotc3RydWN0IFNhbXBsZXJCaW5kaW5nIHsKLX07Ci0KLXN0cnVjdCBU
ZXh0dXJlQmluZGluZyB7Ci19OwotCi1zdHJ1Y3QgU3RvcmFnZUJ1ZmZlckJpbmRpbmcgewotICAg
IHVuc2lnbmVkIGxlbmd0aE5hbWU7Ci19OwotCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2OCBBZGQgdGhlIGR5bmFtaWMgdHlwZXMKLQotc3Ry
dWN0IEJpbmRpbmcgewotICAgIHVzaW5nIEJpbmRpbmdEZXRhaWxzID0gVmFyaWFudDxVbmlmb3Jt
QnVmZmVyQmluZGluZywgU2FtcGxlckJpbmRpbmcsIFRleHR1cmVCaW5kaW5nLCBTdG9yYWdlQnVm
ZmVyQmluZGluZz47Ci0gICAgT3B0aW9uU2V0PFNoYWRlclN0YWdlPiB2aXNpYmlsaXR5OwotICAg
IEJpbmRpbmdEZXRhaWxzIGJpbmRpbmc7Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxOYW1lOwotICAg
IHVuc2lnbmVkIGV4dGVybmFsTmFtZTsKLX07Ci0KLXN0cnVjdCBCaW5kR3JvdXAgewotICAgIFZl
Y3RvcjxCaW5kaW5nPiBiaW5kaW5nczsKLSAgICB1bnNpZ25lZCBuYW1lOwotfTsKLQotdXNpbmcg
TGF5b3V0ID0gVmVjdG9yPEJpbmRHcm91cD47Ci0KLXN0cnVjdCBSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgewotICAgIFZlcnRleEF0dHJpYnV0ZXMgdmVydGV4QXR0cmlidXRlczsKLSAgICBBdHRh
Y2htZW50c1N0YXRlRGVzY3JpcHRvciBhdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvcjsKLSAgICBM
YXlvdXQgbGF5b3V0OwotICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50TmFtZTsKLSAgICBTdHJp
bmcgZnJhZ21lbnRFbnRyeVBvaW50TmFtZTsKLX07Ci0KLXN0cnVjdCBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yIHsKLSAgICBMYXlvdXQgbGF5b3V0OwotICAgIFN0cmluZyBlbnRyeVBvaW50TmFt
ZTsKLX07Ci0KLXVzaW5nIFBpcGVsaW5lRGVzY3JpcHRvciA9IFZhcmlhbnQ8UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPjsKLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmM1
Y2FjNDNjOTU5YTNlNzE4ZDBhMGI0OGViYzFjNGU0YjgzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJlcGFyZS5o
IgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1REdW1w
ZXIuaCIKLSNpbmNsdWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgiCi0jaW5jbHVk
ZSAiV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja1RleHR1
cmVSZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSAiV0hMU0xDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0hM
U0xDb21wdXRlRGltZW5zaW9ucy5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25TdGFnZUNoZWNr
ZXIuaCIKLSNpbmNsdWRlICJXSExTTEhpZ2hab21iaWVGaW5kZXIuaCIKLSNpbmNsdWRlICJXSExT
TExpdGVyYWxUeXBlQ2hlY2tlci5oIgotI2luY2x1ZGUgIldITFNMTWV0YWxDb2RlR2VuZXJhdG9y
LmgiCi0jaW5jbHVkZSAiV0hMU0xOYW1lUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVT
cGFjZS5oIgotI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVk
ZSAiV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpb25D
aGVja2VyLmgiCi0jaW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgotI2luY2x1
ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJh
cnlVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
IgotI2luY2x1ZGUgIldITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oIgotI2luY2x1ZGUgIldI
TFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewot
Ci1zdHJ1Y3QgU2hhZGVyTW9kdWxlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLQotICAgIFNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmIHdobHNsU291cmNlKQotICAg
ICAgICA6IHdobHNsU291cmNlKHdobHNsU291cmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgd2hsc2xTb3VyY2U7Ci19OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXZvaWQg
ZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZT46Om9wZXJhdG9yKCko
V2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZSogc2hhZGVyTW9kdWxlKSBjb25zdAotewotICAg
IGRlbGV0ZSBzaGFkZXJNb2R1bGU7Ci19Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgV0hMU0wgewotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEJlZm9yZUVh
Y2hQYXNzID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2lu
ZyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IGZhbHNlOwot
c3RhdGljIGNvbnN0ZXhwciBib29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSBmYWxzZTsKLXN0
YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGFzc0ZhaWx1cmUgPSBkdW1wQVNUQmVmb3JlRWFjaFBh
c3MgfHwgZHVtcEFTVEFmdGVyUGFyc2luZyB8fCBkdW1wQVNUQXRFbmQgfHwgYWx3YXlzRHVtcFBh
c3NGYWlsdXJlczsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGhhc2VUaW1lcyA9IGZhbHNl
OwotCi1zdGF0aWMgY29uc3RleHByIGJvb2wgcGFyc2VGdWxsU3RhbmRhcmRMaWJyYXJ5ID0gZmFs
c2U7Ci0KLXN0YXRpYyBib29sIGR1bXBBU1RJZk5lZWRlZChib29sIHNob3VsZER1bXAsIFByb2dy
YW0mIHByb2dyYW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgaWYgKHNob3VsZER1bXAp
IHsKLSAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2UpOwotICAgICAgICBkdW1wQVNUKHByb2dyYW0p
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIGR1bXBBU1RBZnRlclBhcnNpbmdJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFt
KQotewotICAgIHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEFmdGVyUGFyc2luZywgcHJv
Z3JhbSwgIkFTVCBhZnRlciBwYXJzaW5nIik7Ci19Ci0KLXN0YXRpYyBib29sIGR1bXBBU1RCZXR3
ZWVuRWFjaFBhc3NJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQotewotICAgIHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEJlZm9yZUVhY2hQYXNzLCBw
cm9ncmFtLCBtZXNzYWdlKTsKLX0KLQotc3RhdGljIGJvb2wgZHVtcEFTVEF0RW5kSWZOZWVkZWQo
UHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICByZXR1cm4gZHVtcEFTVElmTmVlZGVkKGR1bXBBU1RB
dEVuZCwgcHJvZ3JhbSwgIkFTVCBhdCBlbmQiKTsKLX0KLQotdXNpbmcgUGhhc2VUaW1lcyA9IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTZWNvbmRzPj47Ci0KLXN0YXRpYyB2b2lkIGxvZ1BoYXNl
VGltZXMoUGhhc2VUaW1lcyYgcGhhc2VUaW1lcykKLXsKLSAgICBpZiAoIWR1bXBQaGFzZVRpbWVz
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogcGhhc2VUaW1lcykK
LSAgICAgICAgZGF0YUxvZ0xuKGVudHJ5LmZpcnN0LCAiOiAiLCBlbnRyeS5zZWNvbmQubWlsbGlz
ZWNvbmRzKCksICIgbXMiKTsKLX0KLQotY2xhc3MgUGhhc2VUaW1lciB7Ci1wdWJsaWM6Ci0gICAg
UGhhc2VUaW1lcihjb25zdCBjaGFyKiBwaGFzZU5hbWUsIFBoYXNlVGltZXMmIHBoYXNlVGltZXMp
Ci0gICAgICAgIDogbV9waGFzZVRpbWVzKHBoYXNlVGltZXMpCi0gICAgewotICAgICAgICBpZiAo
ZHVtcFBoYXNlVGltZXMpIHsKLSAgICAgICAgICAgIG1fcGhhc2VOYW1lID0gcGhhc2VOYW1lOwot
ICAgICAgICAgICAgbV9zdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgflBoYXNlVGltZXIoKQotICAgIHsKLSAgICAgICAgaWYgKGR1bXBQaGFzZVRp
bWVzKSB7Ci0gICAgICAgICAgICBhdXRvIHRvdGFsVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9zdGFydDsKLSAgICAgICAgICAgIG1fcGhhc2VUaW1lcy5hcHBlbmQoeyBtX3BoYXNlTmFt
ZSwgdG90YWxUaW1lIH0pOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN0cmlu
ZyBtX3BoYXNlTmFtZTsKLSAgICBQaGFzZVRpbWVzJiBtX3BoYXNlVGltZXM7Ci0gICAgTW9ub3Rv
bmljVGltZSBtX3N0YXJ0OwotfTsKLQotVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hh
ZGVyTW9kdWxlKGNvbnN0IFN0cmluZyYgd2hsc2xTb3VyY2UpCi17Ci0gICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4NzIgV2Ugc2hvdWxkIGNv
bnNpZGVyIG1vdmluZyBhcyBtdWNoIHdvcmsgZnJvbSBwcmVwYXJlKCkgaW50byBoZXJlIGFzIHBv
c3NpYmxlLgotICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFNoYWRlck1vZHVsZT4od2hsc2xTb3Vy
Y2UpOwotfQotCi0jZGVmaW5lIENIRUNLX1BBU1MocGFzcywgLi4uKSBcCi0gICAgZG8geyBcCi0g
ICAgICAgIGR1bXBBU1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNUIGJlZm9y
ZSAiICMgcGFzcyk7IFwKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCNwYXNzLCBwaGFz
ZVRpbWVzKTsgXAotICAgICAgICBhdXRvIHJlc3VsdCA9IHBhc3MoX19WQV9BUkdTX18pOyBcCi0g
ICAgICAgIGlmICghcmVzdWx0KSB7IFwKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0ZhaWx1cmUp
IFwKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCBwYXNzOiAiICMgcGFzcywgTGV4
ZXI6OmVycm9yU3RyaW5nKHJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNl
MikpOyBcCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3Ry
aW5nKHJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOyBcCi0gICAg
ICAgIH0gXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgUlVOX1BBU1MocGFzcywgLi4uKSBc
Ci0gICAgZG8geyBcCi0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigjcGFzcywgcGhhc2VU
aW1lcyk7IFwKLSAgICAgICAgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0s
ICJBU1QgYmVmb3JlICIgIyBwYXNzKTsgXAotICAgICAgICBwYXNzKF9fVkFfQVJHU19fKTsgXAot
ICAgIH0gd2hpbGUgKDApCi0KLXN0YXRpYyBFeHBlY3RlZDxQcm9ncmFtLCBTdHJpbmc+IHByZXBh
cmVTaGFyZWQoUGhhc2VUaW1lcyYgcGhhc2VUaW1lcywgY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJj
ZTEsIGNvbnN0IFN0cmluZyogd2hsc2xTb3VyY2UyID0gbnVsbHB0cikKLXsKLSAgICBQcm9ncmFt
IHByb2dyYW07Ci0gICAgUGFyc2VyIHBhcnNlcjsKLQotICAgIHsKLSAgICAgICAgcHJvZ3JhbS5u
YW1lQ29udGV4dCgpLnNldEN1cnJlbnROYW1lU3BhY2UoQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFj
ZTEpOwotCi0gICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigicGFyc2UiLCBwaGFzZVRpbWVz
KTsKLSAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlci5wYXJzZShwcm9ncmFtLCB3aGxz
bFNvdXJjZTEsIFBhcnNpbmdNb2RlOjpVc2VyLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7
Ci0gICAgICAgIGlmICghcGFyc2VSZXN1bHQpIHsKLSAgICAgICAgICAgIGlmIChkdW1wUGFzc0Zh
aWx1cmUpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgdG8gcGFyc2UgdGhlIHBy
b2dyYW06ICIsIExleGVyOjplcnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNv
dXJjZTEsIHdobHNsU291cmNlMikpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KExleGVyOjplcnJvclN0cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdo
bHNsU291cmNlMikpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGxzbFNvdXJjZTIpIHsKLSAg
ICAgICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQoKS5zZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6
TmFtZVNwYWNlOjpOYW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBw
YXJzZXIucGFyc2UocHJvZ3JhbSwgKndobHNsU291cmNlMiwgUGFyc2luZ01vZGU6OlVzZXIsIEFT
VDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VSZXN1bHQp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oImZhaWxlZCB0byBwYXJzZSB0aGUgcHJvZ3JhbTogIiwgTGV4ZXI6OmVy
cm9yU3RyaW5nKHBhcnNlUmVzdWx0LmVycm9yKCksIHdobHNsU291cmNlMSwgd2hsc2xTb3VyY2Uy
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJvclN0
cmluZyhwYXJzZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHByb2dyYW0ubmFtZUNvbnRleHQoKS5z
ZXRDdXJyZW50TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJpbmNsdWRlU3RhbmRh
cmRMaWJyYXJ5IiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgIGluY2x1ZGVTdGFuZGFyZExpYnJhcnko
cHJvZ3JhbSwgcGFyc2VyLCBwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpOwotICAgIH0KLQotICAg
IGlmICghZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVlZGVkKHByb2dyYW0sICJBU1QgYWZ0ZXIg
cGFyc2luZyIpKQotICAgICAgICBkdW1wQVNUQWZ0ZXJQYXJzaW5nSWZOZWVkZWQocHJvZ3JhbSk7
Ci0KLSAgICBOYW1lUmVzb2x2ZXIgbmFtZVJlc29sdmVyKHByb2dyYW0ubmFtZUNvbnRleHQoKSk7
Ci0gICAgQ0hFQ0tfUEFTUyhyZXNvbHZlTmFtZXNJblR5cGVzLCBwcm9ncmFtLCBuYW1lUmVzb2x2
ZXIpOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWN1cnNpdmVUeXBlcywgcHJvZ3JhbSk7Ci0gICAg
Q0hFQ0tfUEFTUyhzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMsIHByb2dyYW0pOwotICAg
IENIRUNLX1BBU1MocmVzb2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVz
b2x2ZXIpOwotICAgIENIRUNLX1BBU1Moc3ludGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7
Ci0gICAgQ0hFQ0tfUEFTUyhjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucywgcHJvZ3JhbSk7Ci0KLSAg
ICBDSEVDS19QQVNTKGNoZWNrLCBwcm9ncmFtKTsKLSAgICBSVU5fUEFTUyhwcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLCBwcm9ncmFtKTsKLQotICAgIFJVTl9QQVNTKGNo
ZWNrTGl0ZXJhbFR5cGVzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrVGV4dHVyZVJl
ZmVyZW5jZXMsIHByb2dyYW0pOwotICAgIENIRUNLX1BBU1MoY2hlY2tSZWZlcmVuY2VUeXBlcywg
cHJvZ3JhbSk7Ci0gICAgUlVOX1BBU1MocmVzb2x2ZVByb3BlcnRpZXMsIHByb2dyYW0pOwotICAg
IFJVTl9QQVNTKGZpbmRIaWdoWm9tYmllcywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhjaGVj
a1N0YXRlbWVudEJlaGF2aW9yLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrUmVjdXJz
aW9uLCBwcm9ncmFtKTsKLSAgICBDSEVDS19QQVNTKGNoZWNrRnVuY3Rpb25TdGFnZXMsIHByb2dy
YW0pOwotICAgIFJVTl9QQVNTKHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMsIHByb2dyYW0pOwot
Ci0gICAgZHVtcEFTVEF0RW5kSWZOZWVkZWQocHJvZ3JhbSk7Ci0KLSAgICByZXR1cm4gcHJvZ3Jh
bTsKLX0KLQotRXhwZWN0ZWQ8UmVuZGVyUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNv
bnN0IFNoYWRlck1vZHVsZSYgdmVydGV4U2hhZGVyTW9kdWxlLCBjb25zdCBTaGFkZXJNb2R1bGUq
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcikKLXsKLSAgICBQaGFzZVRpbWVzIHBoYXNlVGltZXM7Ci0gICAgTWV0
YWw6OlJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotCi0gICAgewotICAgICAgICBQaGFz
ZVRpbWVyIHBoYXNlVGltZXIoInByZXBhcmUgdG90YWwiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAg
Y29uc3QgU3RyaW5nKiBzZWNvbmRTaGFkZXIgPSBudWxscHRyOwotICAgICAgICBib29sIGRpc3Rp
bmN0RnJhZ21lbnRTaGFkZXIgPSBmYWxzZTsKLSAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyTW9k
dWxlICYmIGZyYWdtZW50U2hhZGVyTW9kdWxlICE9ICZ2ZXJ0ZXhTaGFkZXJNb2R1bGUpIHsKLSAg
ICAgICAgICAgIHNlY29uZFNoYWRlciA9ICZmcmFnbWVudFNoYWRlck1vZHVsZS0+d2hsc2xTb3Vy
Y2U7Ci0gICAgICAgICAgICBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBhdXRvIHByb2dyYW0gPSBwcmVwYXJlU2hhcmVkKHBoYXNlVGltZXMsIHZlcnRl
eFNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVyKTsKLSAgICAgICAgaWYgKCFw
cm9ncmFtKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3Io
KSk7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRj
aGVkU2VtYW50aWNzOwotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGlt
ZXIoIm1hdGNoU2VtYW50aWNzIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2Vt
YW50aWNzID0gbWF0Y2hTZW1hbnRpY3MoKnByb2dyYW0sIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciwgZGlzdGluY3RGcmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJNb2R1bGUpOwotICAgICAg
ICAgICAgaWYgKCFtYXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRjaCBzZW1h
bnRpY3MiX3N0ciksIHZlcnRleFNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSwgc2Vjb25kU2hhZGVy
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNl
VGltZXIoImdlbmVyYXRlTWV0YWxDb2RlIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBnZW5l
cmF0ZWRDb2RlID0gTWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlKCpwcm9ncmFtLCBXVEZNb3ZlKCpt
YXRjaGVkU2VtYW50aWNzKSwgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0gICAgUmVu
ZGVyUHJlcGFyZVJlc3VsdCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92
ZShnZW5lcmF0ZWRDb2RlLm1ldGFsU291cmNlKTsKLSAgICByZXN1bHQubWFuZ2xlZFZlcnRleEVu
dHJ5UG9pbnROYW1lID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRWZXJ0ZXhFbnRyeVBv
aW50TmFtZSk7Ci0gICAgcmVzdWx0Lm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lID0gV1RG
TW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1FeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5n
PiBwcmVwYXJlKGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKQotewotICAgIFBoYXNlVGlt
ZXMgcGhhc2VUaW1lczsKLSAgICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZWRDb2Rl
OwotICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25z
OwotCi0gICAgewotICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoInByZXBhcmUgdG90YWwi
LCBwaGFzZVRpbWVzKTsKLSAgICAgICAgYXV0byBwcm9ncmFtID0gcHJlcGFyZVNoYXJlZChwaGFz
ZVRpbWVzLCBzaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UpOwotICAgICAgICBpZiAoIXByb2dyYW0p
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKLQot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaGVkU2Vt
YW50aWNzOwotICAgICAgICB7Ci0gICAgICAgICAgICBQaGFzZVRpbWVyIHBoYXNlVGltZXIoIm1h
dGNoU2VtYW50aWNzIiwgcGhhc2VUaW1lcyk7Ci0gICAgICAgICAgICBtYXRjaGVkU2VtYW50aWNz
ID0gbWF0Y2hTZW1hbnRpY3MoKnByb2dyYW0sIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwot
ICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2VtYW50aWNzKQotICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcoRXJyb3IoIkNvdWxkIG5vdCBtYXRj
aCBzZW1hbnRpY3MiX3N0ciksIHNoYWRlck1vZHVsZS53aGxzbFNvdXJjZSkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgewotICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJjb21wdXRl
RGltZW5zaW9ucyIsIHBoYXNlVGltZXMpOwotICAgICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMg
PSBXSExTTDo6Y29tcHV0ZURpbWVuc2lvbnMoKnByb2dyYW0sICptYXRjaGVkU2VtYW50aWNzLT5z
aGFkZXIpOwotICAgICAgICAgICAgaWYgKCFjb21wdXRlRGltZW5zaW9ucykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoTGV4ZXI6OmVycm9yU3RyaW5nKEVycm9yKCJDb3Vs
ZCBub3QgbWF0Y2ggY29tcHV0ZSBkaW1lbnNpb25zIl9zdHIpLCBzaGFkZXJNb2R1bGUud2hsc2xT
b3VyY2UpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIFBoYXNlVGltZXIg
cGhhc2VUaW1lcigiZ2VuZXJhdGVNZXRhbENvZGUiLCBwaGFzZVRpbWVzKTsKLSAgICAgICAgICAg
IGdlbmVyYXRlZENvZGUgPSBNZXRhbDo6Z2VuZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1v
dmUoKm1hdGNoZWRTZW1hbnRpY3MpLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb2dQaGFzZVRpbWVzKHBoYXNlVGltZXMpOwotCi0g
ICAgQ29tcHV0ZVByZXBhcmVSZXN1bHQgcmVzdWx0OwotICAgIHJlc3VsdC5tZXRhbFNvdXJjZSA9
IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tZXRhbFNvdXJjZSk7Ci0gICAgcmVzdWx0Lm1hbmdsZWRF
bnRyeVBvaW50TmFtZSA9IFdURk1vdmUoZ2VuZXJhdGVkQ29kZS5tYW5nbGVkRW50cnlQb2ludE5h
bWUpOwotICAgIHJlc3VsdC5jb21wdXRlRGltZW5zaW9ucyA9IFdURk1vdmUoKmNvbXB1dGVEaW1l
bnNpb25zKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByZXBhcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDMzOWFiYjk0M2U4ZDhjYTgz
ZmY0ZjQxOTgzM2IyMzg3NmNhNDNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xF
cnJvci5oIgotI2luY2x1ZGUgIldITFNMTWFuZ2xlZE5hbWVzLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
aXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLS8vIEhp
ZGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBTaGFkZXJNb2R1bGUuIENsaWVudHMgb2YgdGhlIGNvbXBp
bGVyIHNob3VsZG4ndCBjYXJlIHdoYXQncyBpbnNpZGUgaXQuCi1zdHJ1Y3QgU2hhZGVyTW9kdWxl
OwotCi19Ci0KLX0KLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRlZmF1
bHRfZGVsZXRlPFdlYkNvcmU6OldITFNMOjpTaGFkZXJNb2R1bGU+IHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoV2ViQ29yZTo6V0hMU0w6OlNoYWRlck1vZHVsZSopIGNvbnN0OwotfTsKLQotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNvbnN0ZXhwciBib29s
IGR1bXBNZXRhbENvbXBpbGVUaW1lcyA9IGZhbHNlOwotCi1VbmlxdWVSZWY8U2hhZGVyTW9kdWxl
PiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU3RyaW5nJiB3aGxzbFNvdXJjZSk7Ci0KLXN0cnVj
dCBSZW5kZXJQcmVwYXJlUmVzdWx0IHsKLSAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwot
ICAgIE1ldGFsOjpNYW5nbGVkRnVuY3Rpb25OYW1lIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFt
ZTsKLSAgICBNZXRhbDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRnJhZ21lbnRFbnRyeVBv
aW50TmFtZTsKLX07Ci1FeHBlY3RlZDxSZW5kZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBh
cmUoY29uc3QgU2hhZGVyTW9kdWxlJiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGNvbnN0IFNoYWRlck1v
ZHVsZSogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwot
Ci1zdHJ1Y3QgQ29tcHV0ZURpbWVuc2lvbnMgewotICAgIHVuc2lnbmVkIHdpZHRoOwotICAgIHVu
c2lnbmVkIGhlaWdodDsKLSAgICB1bnNpZ25lZCBkZXB0aDsKLX07Ci0KLXN0cnVjdCBDb21wdXRl
UHJlcGFyZVJlc3VsdCB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXRhbFNvdXJjZTsKLSAgICBNZXRh
bDo6TWFuZ2xlZEZ1bmN0aW9uTmFtZSBtYW5nbGVkRW50cnlQb2ludE5hbWU7Ci0gICAgQ29tcHV0
ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotRXhwZWN0ZWQ8Q29tcHV0ZVByZXBh
cmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmLCBDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzODlkMDdkODA4ODY0NGVmYWQ0NDUzNGE5MDZiM2E1NjMzYzQ5MDczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQVNULmgiCi0jaW5jbHVk
ZSAiV0hMU0xBU1REdW1wZXIuaCIKLSNpbmNsdWRlICJXSExTTExleGVyLmgiCi0jaW5jbHVkZSAi
V0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xSZXBsYWNlV2l0aC5oIgotI2luY2x1ZGUg
IldITFNMVmlzaXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLS8vIFRoaXMgcGFzcyB3b3JrcyBieSBlbnN1cmluZyBwcm9wZXIgdmFyaWFibGUgbGlm
ZXRpbWVzLiBJbiBXSExTTCwgZWFjaCB2YXJpYWJsZQotLy8gaGFzIGdsb2JhbCBsaWZldGltZS4g
U28gcmV0dXJuaW5nIGEgcG9pbnRlciB0byBhIGxvY2FsIHZhcmlhYmxlIGlzIGEgdG90YWxseQot
Ly8gbGVnaXRpbWF0ZSBhbmQgd2VsbC1zcGVjaWZpZWQgdGhpbmcgdG8gZG8uCi0vLwotLy8gV2Ug
aW1wbGVtZW50IHRoaXMgYnk6Ci0vLyAtIFdlIG5vdGUgZXZlcnkgdmFyaWFibGUgd2hvc2UgYWRk
cmVzcyB3ZSB0YWtlLgotLy8gLSBFYWNoIHN1Y2ggdmFyaWFibGUgZ2V0cyBkZWZpbmVkIGFzIGEg
ZmllbGQgaW4gYSBzdHJ1Y3QuCi0vLyAtIEVhY2ggZnVuY3Rpb24gd2hpY2ggaXMgYW4gZW50cnkg
cG9pbnQgZGVmaW5lcyB0aGlzIHN0cnVjdC4KLS8vIC0gRWFjaCBub24gZW50cnkgcG9pbnQgdGFr
ZXMgYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0IGFzIGl0cyBmaW5hbCBwYXJhbWV0ZXIuCi0vLyAt
IEVhY2ggY2FsbCB0byBhIG5vbi1uYXRpdmUgZnVuY3Rpb24gaXMgcmV3cml0dGVuIHRvIHBhc3Mg
YSBwb2ludGVyIHRvIHRoZQotLy8gICBzdHJ1Y3QgYXMgdGhlIGxhc3QgY2FsbCBhcmd1bWVudC4K
LS8vIC0gRWFjaCB2YXJpYWJsZSByZWZlcmVuY2UgdG8gIngiLCB3aGVyZSAieCIgZW5kcyB1cCBp
biB0aGUgc3RydWN0LCBpcwotLy8gICBtb2RpZmllZCB0byBpbnN0ZWFkIGJlICJzdHJ1Y3QtPngi
LiBXZSBzdG9yZSB0byAic3RydWN0LT54IiBhZnRlciBkZWNsYXJpbmcKLS8vICAgIngiLiBJZiAi
eCIgaXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIHdlIHN0b3JlIHRvICJzdHJ1Y3QtPngiIGFzIHRo
ZSBmaXJzdAotLy8gICB0aGluZyB3ZSBkbyBpbiB0aGUgZnVuY3Rpb24gYm9keS4KLQotY2xhc3Mg
RXNjYXBlZFZhcmlhYmxlQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotICAgIHVz
aW5nIEJhc2UgPSBWaXNpdG9yOwotcHVibGljOgotCi0gICAgdm9pZCBlc2NhcGVWYXJpYWJsZVVz
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBpZiAoIWlzPEFT
VDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogQXJlIHdlIG1pc3NpbmcgYW55IGludGVyZXN0aW5nIHByb2R1Y3Rpb25zIGhlcmU/Ci0gICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzEx
Ci0gICAgICAgICAgICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gZG93bmNhc3Q8QVNUOjpW
YXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikudmFyaWFibGUoKTsKLSAgICAgICAgQVNTRVJU
KHZhcmlhYmxlKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHNraXAgdGhpcyBpZiB3ZSBt
YXJrIGFsbCBpbnRlcm5hbCB2YXJpYWJsZXMgd2l0aCBhIGJpdCwgc2luY2Ugd2UKLSAgICAgICAg
Ly8gbmV2ZXIgbWFrZSBhbnkgaW50ZXJuYWwgdmFyaWFibGUgZXNjYXBlIHRoZSBjdXJyZW50IHNj
b3BlIGl0IGlzIGRlZmluZWQgaW46Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTgzODMKLSAgICAgICAgbV9lc2NhcGVkVmFyaWFibGVzLmFkZCh2
YXJpYWJsZSwgbWFrZVN0cmluZygiXyIsIHZhcmlhYmxlLT5uYW1lKCksICJfIiwgbV9jb3VudCsr
KSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYg
bWFrZVBvaW50ZXJFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5taWdodEVzY2FwZSgpKQotICAgICAgICAgICAgZXNjYXBlVmFyaWFi
bGVVc2UobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLm1pZ2h0RXNjYXBlKCkpCi0gICAgICAgICAgICBlc2NhcGVWYXJp
YWJsZVVzZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmlu
aXRpb24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb25EZWZpbml0aW9uLnBh
cnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAg
IEJhc2U6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQotCi0gICAgSGFzaE1hcDxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBTdHJpbmc+IHRha2VFc2NhcGVkVmFyaWFibGVzKCkg
eyByZXR1cm4gV1RGTW92ZShtX2VzY2FwZWRWYXJpYWJsZXMpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
c2l6ZV90IG1fY291bnQgeyAxIH07Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24qLCBTdHJpbmc+IG1fZXNjYXBlZFZhcmlhYmxlczsKLX07Ci0KLXN0YXRpYyBBTFdBWVNfSU5M
SU5FIFRva2VuIGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJu
IFRva2VuIHsgeyB9LCB0eXBlIH07Ci19Ci0KLWNsYXNzIFByZXNlcnZlTGlmZXRpbWVzIDogcHVi
bGljIFZpc2l0b3IgewotICAgIHVzaW5nIEJhc2UgPSBWaXNpdG9yOwotcHVibGljOgotICAgIFBy
ZXNlcnZlTGlmZXRpbWVzKFJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+IHN0cnVjdFR5cGUsIGNvbnN0
IEhhc2hNYXA8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiwgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50
Kj4mIHZhcmlhYmxlTWFwcGluZykKLSAgICAgICAgOiBtX3N0cnVjdFR5cGUoV1RGTW92ZShzdHJ1
Y3RUeXBlKSkKLSAgICAgICAgLCBtX3BvaW50ZXJUb1N0cnVjdFR5cGUoQVNUOjpQb2ludGVyVHlw
ZTo6Y3JlYXRlKGFub255bW91c1Rva2VuKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKSwgQVNUOjpB
ZGRyZXNzU3BhY2U6OlRocmVhZCwgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSkpCi0gICAgICAgICwg
bV92YXJpYWJsZU1hcHBpbmcodmFyaWFibGVNYXBwaW5nKQotICAgIHsgfQotCi0gICAgVW5pcXVl
UmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+IG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgp
Ci0gICAgewotICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFw
KCptX3N0cnVjdFZhcmlhYmxlKSk7Ci0gICAgICAgIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5z
ZXRUeXBlKCptX3N0cnVjdFZhcmlhYmxlLT50eXBlKCkpOwotICAgICAgICBzdHJ1Y3RWYXJpYWJs
ZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJl
c3NTcGFjZTo6VGhyZWFkIH0pOwotICAgICAgICByZXR1cm4gc3RydWN0VmFyaWFibGVSZWZlcmVu
Y2U7Ci0gICAgfQotCi0gICAgVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+IGFz
c2lnblZhcmlhYmxlSW50b1N0cnVjdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxl
LCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBhdXRvIGxo
cyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGUu
Y29kZUxvY2F0aW9uKCksIG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpLCBlbGVtZW50KTsK
LSAgICAgICAgbGhzLT5zZXRUeXBlKCp2YXJpYWJsZS50eXBlKCkpOwotICAgICAgICBsaHMtPnNl
dFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVh
ZCB9KTsKLQotICAgICAgICBhdXRvIHJocyA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcCh2YXJpYWJsZSkpOwotICAgICAg
ICByaHMtPnNldFR5cGUoKnZhcmlhYmxlLnR5cGUoKSk7Ci0gICAgICAgIHJocy0+c2V0VHlwZUFu
bm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOwot
Ci0gICAgICAgIGF1dG8gYXNzaWdubWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50
RXhwcmVzc2lvbj4odmFyaWFibGUuY29kZUxvY2F0aW9uKCksIFdURk1vdmUobGhzKSwgV1RGTW92
ZShyaHMpKTsKLSAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZSgqdmFyaWFibGUudHlwZSgpKTsK
LSAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkp
OwotCi0gICAgICAgIHJldHVybiBhc3NpZ25tZW50OwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQo
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbkRlZmluaXRpb24ucGFyc2luZ01vZGUoKSA9PSBQYXJz
aW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGJvb2wgaXNFbnRyeVBvaW50ID0gISFmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUo
KTsKLSAgICAgICAgaWYgKGlzRW50cnlQb2ludCkgewotICAgICAgICAgICAgYXV0byBzdHJ1Y3RW
YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgQVNUOjpRdWFsaWZpZXJzKCks
Ci0gICAgICAgICAgICAgICAgbV9zdHJ1Y3RUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpOwotCi0gICAgICAgICAgICBhdXRvIHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNl
ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxlUmVm
ZXJlbmNlOjp3cmFwKHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIHN0
cnVjdFZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKG1fc3RydWN0VHlwZS5jb3B5UmVmKCkpOwot
ICAgICAgICAgICAgc3RydWN0VmFyaWFibGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFT
VDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCB9KTsKLQotICAgICAgICAg
ICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uczsK
LSAgICAgICAgICAgIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHN0
cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIGF1dG8gc3RydWN0RGVjbGFy
YXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1
Y3RWYXJpYWJsZURlY2xhcmF0aW9ucykpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVNUOjpFeHByZXNzaW9uPiBtYWtlUG9pbnRlckV4cHJlc3Npb24obmV3IEFTVDo6TWFrZVBvaW50
ZXJFeHByZXNzaW9uKGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShz
dHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RF
c2NhcGUpKTsKLSAgICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+c2V0VHlwZShtX3Bv
aW50ZXJUb1N0cnVjdFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIG1ha2VQb2ludGVyRXhw
cmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAg
ICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uPihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVh
bGlmaWVycygpLAotICAgICAgICAgICAgICAgIG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVm
KCksICJ3cmFwcGVyIl9zLCBudWxscHRyLCBXVEZNb3ZlKG1ha2VQb2ludGVyRXhwcmVzc2lvbikp
OwotICAgICAgICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247Ci0K
LSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcG9pbnRlclZhcmlhYmxlRGVj
bGFyYXRpb25zOwotICAgICAgICAgICAgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVu
ZChXVEZNb3ZlKHBvaW50ZXJEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgYXV0byBwb2ludGVy
RGVjbGFyYXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92
ZShwb2ludGVyVmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKLQotICAgICAgICAgICAgZnVuY3Rpb25E
ZWZpbml0aW9uLmJsb2NrKCkuc3RhdGVtZW50cygpLmluc2VydCgwLCBXVEZNb3ZlKHN0cnVjdERl
Y2xhcmF0aW9uU3RhdGVtZW50KSk7Ci0gICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb24uYmxv
Y2soKS5zdGF0ZW1lbnRzKCkuaW5zZXJ0KDEsIFdURk1vdmUocG9pbnRlckRlY2xhcmF0aW9uU3Rh
dGVtZW50KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIHBvaW50ZXJEZWNs
YXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihmdW5jdGlv
bkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIEFTVDo6UXVhbGlmaWVycygpLAotICAgICAgICAg
ICAgICAgIG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCksICJ3cmFwcGVyIl9zLCBudWxs
cHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIG1fc3RydWN0VmFyaWFibGUgPSAmcG9pbnRlckRl
Y2xhcmF0aW9uOwotICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5h
cHBlbmQoV1RGTW92ZShwb2ludGVyRGVjbGFyYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEJhc2U6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBw
YXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlTWFwcGluZy5maW5kKCZwYXJhbWV0ZXIpOwotICAgICAg
ICAgICAgaWYgKGl0ZXIgPT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0
YXRlbWVudHMoKS5pbnNlcnQoaXNFbnRyeVBvaW50ID8gMiA6IDAsCi0gICAgICAgICAgICAgICAg
bWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KGFzc2lnblZh
cmlhYmxlSW50b1N0cnVjdChwYXJhbWV0ZXIsIGl0ZXItPnZhbHVlKSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gSW5uZXIgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBXSExTTC4gU28g
dGhpcyBpcyBmaW5lLgotICAgICAgICBtX3N0cnVjdFZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJpYWJsZSk7
Ci0KLSAgICAgICAgQmFzZTo6dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotCi0gICAgICAgIC8vIFRo
aXMgd29ya3MgYmVjYXVzZSBpdCdzIGlsbGVnYWwgdG8gY2FsbCBhbiBlbnRyeXBvaW50LiBUaGVy
ZWZvcmUsIHdlIGNhbiBvbmx5Ci0gICAgICAgIC8vIGNhbGwgZnVuY3Rpb25zIHdoZXJlIHdlJ3Zl
IGFscmVhZHkgYXBwZW5kZWQgdGhpcyBzdHJ1Y3QgYXMgaXRzIGZpbmFsIHBhcmFtZXRlci4KLSAg
ICAgICAgaWYgKCFjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpLmlzTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbigpICYmIGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkucGFyc2luZ01vZGUoKSAhPSBQ
YXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24u
YXJndW1lbnRzKCkuYXBwZW5kKG1ha2VTdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJl
bmNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdHJ1Y3RWYXJp
YWJsZSk7Ci0KLSAgICAgICAgYXV0byBpdGVyID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJp
YWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gbV92YXJpYWJs
ZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmVmPEFTVDo6
VW5uYW1lZFR5cGU+IHR5cGUgPSAqdmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKS0+dHlwZSgp
OwotICAgICAgICBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gdmFyaWFibGVS
ZWZlcmVuY2UudHlwZUFubm90YXRpb24oKTsKLSAgICAgICAgYXV0byogaW50ZXJuYWxGaWVsZCA9
IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4odmFyaWFibGVS
ZWZlcmVuY2UsIHZhcmlhYmxlUmVmZXJlbmNlLmNvZGVMb2NhdGlvbigpLCBtYWtlU3RydWN0VmFy
aWFibGVSZWZlcmVuY2UoKSwgaXRlci0+dmFsdWUpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5z
ZXRUeXBlKFdURk1vdmUodHlwZSkpOwotICAgICAgICBpbnRlcm5hbEZpZWxkLT5zZXRUeXBlQW5u
b3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3Ry
dWN0VmFyaWFibGUpOwotCi0gICAgICAgIEJhc2U6OnZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50KTsKLQotICAgICAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKLSAgICAg
ICAgZm9yIChVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiYgdmFyaWFibGVEZWNs
YXJhdGlvbiA6IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRp
b25zKCkpIHsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGUg
PSB2YXJpYWJsZURlY2xhcmF0aW9uLmdldCgpOwotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBkZWNsYXJhdGlvbnM7Ci0gICAgICAgICAg
ICAgICAgZGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsK
LSAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHZhcmlhYmxlLmNvZGVMb2NhdGlvbigpLCBXVEZN
b3ZlKGRlY2xhcmF0aW9ucykpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBp
dGVyID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCgmdmFyaWFibGUpOwotICAgICAgICAgICAgaWYg
KGl0ZXIgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgc3RhdGVt
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQ+KGFzc2lnblZhcmlhYmxlSW50b1N0cnVjdCh2YXJpYWJsZSwgaXRlci0+dmFsdWUpKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1Q6OnJlcGxhY2VXaXRoPEFTVDo6U3RhdGVtZW50TGlzdD4o
dmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50LmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0YXRlbWVudHMpKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBtX3N0cnVjdFZhcmlhYmxlIHsgbnVs
bHB0ciB9OwotCi0gICAgUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4gbV9zdHJ1Y3RUeXBlOwotICAg
IFJlZjxBU1Q6OlBvaW50ZXJUeXBlPiBtX3BvaW50ZXJUb1N0cnVjdFR5cGU7Ci0gICAgLy8gSWYg
dGhpcyBtYXBwaW5nIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSwgaXQgbWVhbnMgdGhhdCB0aGUgdmFy
aWFibGUncyBjYW5vbmljYWwgbG9jYXRpb24KLSAgICAvLyBpcyBpbiB0aGUgc3RydWN0IHdlIHVz
ZSB0byBwcmVzZXJ2ZSB2YXJpYWJsZSBsaWZldGltZXMuCi0gICAgY29uc3QgSGFzaE1hcDxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVsZW1lbnQqPiYgbV92YXJpYWJs
ZU1hcHBpbmc7Ci19OwotCi12b2lkIHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMoUHJvZ3JhbSYg
cHJvZ3JhbSkKLXsKLSAgICBIYXNoTWFwPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiosIFN0cmlu
Zz4gZXNjYXBlZFZhcmlhYmxlczsKLSAgICB7Ci0gICAgICAgIEVzY2FwZWRWYXJpYWJsZUNvbGxl
Y3RvciBjb2xsZWN0b3I7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5m
dW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBjb2xsZWN0b3Iu
dmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgICAgICBlc2NhcGVk
VmFyaWFibGVzID0gY29sbGVjdG9yLnRha2VFc2NhcGVkVmFyaWFibGVzKCk7Ci0gICAgfQotCi0g
ICAgQVNUOjpTdHJ1Y3R1cmVFbGVtZW50cyBlbGVtZW50czsKLSAgICBmb3IgKGF1dG8mIHBhaXIg
OiBlc2NhcGVkVmFyaWFibGVzKSB7Ci0gICAgICAgIGF1dG8qIHZhcmlhYmxlID0gcGFpci5rZXk7
Ci0gICAgICAgIFN0cmluZyBuYW1lID0gcGFpci52YWx1ZTsKLSAgICAgICAgZWxlbWVudHMuYXBw
ZW5kKEFTVDo6U3RydWN0dXJlRWxlbWVudCB7IHZhcmlhYmxlLT5jb2RlTG9jYXRpb24oKSwgeyB9
LCAqdmFyaWFibGUtPnR5cGUoKSwgV1RGTW92ZShuYW1lKSwgbnVsbHB0ciB9KTsKLSAgICB9Ci0K
LSAgICAvLyBOYW1lIG9mIHRoaXMgZG9lc24ndCBtYXR0ZXIsIHNpbmNlIHdlIGRvbid0IHVzZSBz
dHJ1Y3QgbmFtZXMgd2hlbgotICAgIC8vIGdlbmVyYXRpbmcgTWV0YWwgdHlwZSBuYW1lcy4gV2Ug
anVzdCBwaWNrIHNvbWV0aGluZyBoZXJlIHRvIG1ha2UgaXQKLSAgICAvLyBlYXN5IHRvIHJlYWQg
aW4gQVNUIGR1bXBzLgotICAgIGF1dG8gd3JhcHBlclN0cnVjdERlZmluaXRpb24gPSBtYWtlVW5p
cXVlUmVmPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5
cGU6OlN0cnVjdCksICJfX1dyYXBwZXJTdHJ1Y3RfXyJfcywgV1RGTW92ZShlbGVtZW50cykpOwot
Ci0gICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBBU1Q6OlN0cnVjdHVyZUVs
ZW1lbnQqPiB2YXJpYWJsZU1hcHBpbmc7Ci0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZv
ciAoYXV0byYgcGFpciA6IGVzY2FwZWRWYXJpYWJsZXMpCi0gICAgICAgIHZhcmlhYmxlTWFwcGlu
Zy5hZGQocGFpci5rZXksICZ3cmFwcGVyU3RydWN0RGVmaW5pdGlvbi0+c3RydWN0dXJlRWxlbWVu
dHMoKVtpbmRleCsrXSk7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gd3JhcHBlclN0cnVjdFR5cGUg
PSBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoYW5vbnltb3VzVG9rZW4oVG9rZW46OlR5cGU6Oklk
ZW50aWZpZXIpLCB3cmFwcGVyU3RydWN0RGVmaW5pdGlvbik7Ci0gICAgICAgIFByZXNlcnZlTGlm
ZXRpbWVzIHByZXNlcnZlTGlmZXRpbWVzKFdURk1vdmUod3JhcHBlclN0cnVjdFR5cGUpLCB2YXJp
YWJsZU1hcHBpbmcpOwotICAgICAgICBwcmVzZXJ2ZUxpZmV0aW1lcy5WaXNpdG9yOjp2aXNpdChw
cm9ncmFtKTsKLSAgICB9Ci0KLSAgICBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUod3JhcHBlclN0cnVjdERlZmluaXRpb24pKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE2NGY3YTI4YmE4NGNmZDBlNDY3ODEwMTk5ZWQw
YWMzOTc0MGJkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFi
bGVMaWZldGltZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi12b2lk
IHByZXNlcnZlVmFyaWFibGVMaWZldGltZXMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGExMWEyZTJjMDM4NzI1NWQ1N2YwOWJhNGQxZTkyYWFmZjRlNGVlZDIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJ
TEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKLSNpbmNsdWRl
ICJXSExTTEVycm9yLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKLSNp
bmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKLSNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0Lmgi
Ci0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURl
ZmluaXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIFByb2dyYW0gewotcHVibGljOgotICAgIFByb2dyYW0oKSA9IGRlZmF1bHQ7Ci0g
ICAgUHJvZ3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKLQotICAgIEV4cGVjdGVkPHZvaWQsIEVy
cm9yPiBhcHBlbmQoQVNUOjpUeXBlRGVmaW5pdGlvbiYmIHR5cGVEZWZpbml0aW9uKQotICAgIHsK
LSAgICAgICAgbV90eXBlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpUeXBl
RGVmaW5pdGlvbj4oV1RGTW92ZSh0eXBlRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1f
bmFtZUNvbnRleHQuYWRkKG1fdHlwZURlZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAg
RXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mJiBz
dHJ1Y3R1cmVEZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmVEZWZpbml0aW9u
cy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KFdURk1vdmUo
c3RydWN0dXJlRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRk
KG1fc3RydWN0dXJlRGVmaW5pdGlvbnMubGFzdCgpKTsKLSAgICB9Ci0KLSAgICBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gYXBwZW5kKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiYgZW51bWVyYXRp
b25EZWZpbml0aW9uKQotICAgIHsKLSAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmFw
cGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihXVEZNb3ZlKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRk
KG1fZW51bWVyYXRpb25EZWZpbml0aW9ucy5sYXN0KCkpOwotICAgIH0KLQotICAgIEV4cGVjdGVk
PHZvaWQsIEVycm9yPiBhcHBlbmQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mJiBmdW5jdGlvbkRl
ZmluaXRpb24pCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1h
a2VVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZnVuY3Rpb25EZWZp
bml0aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQobV9mdW5jdGlvbkRl
ZmluaXRpb25zLmxhc3QoKSk7Ci0gICAgfQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFw
cGVuZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKQotICAgIHsKLSAgICAgICAgbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5hcHBl
bmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KFdURk1vdmUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRyaW5zaWNzLmFkZCht
X25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJldHVybiBtX25h
bWVDb250ZXh0LmFkZChtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAg
fQotCi0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGFwcGVuZChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYmIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1fbmF0aXZl
VHlwZURlY2xhcmF0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4oV1RGTW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKSk7Ci0gICAgICAgIG1faW50
cmluc2ljcy5hZGQobV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmxhc3QoKSk7Ci0gICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsK
LSAgICB9Ci0KLSAgICBib29sIGlzVmFsaWRWZWN0b3JQcm9wZXJ0eShTdHJpbmcpOwotCi0gICAg
TmFtZUNvbnRleHQmIG5hbWVDb250ZXh0KCkgeyByZXR1cm4gbV9uYW1lQ29udGV4dDsgfQotICAg
IEludHJpbnNpY3MmIGludHJpbnNpY3MoKSB7IHJldHVybiBtX2ludHJpbnNpY3M7IH0KLSAgICBj
b25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNz
OyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4mIHR5cGVEZWZp
bml0aW9ucygpIHsgcmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+PiYgc3RydWN0dXJlRGVmaW5pdGlvbnMoKSB7
IHJldHVybiBtX3N0cnVjdHVyZURlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+JiBlbnVtZXJhdGlvbkRlZmluaXRpb25zKCkgeyBy
ZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1
cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9Ci0gICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9Ci0gICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zOyB9Ci0gICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4+
JiBuYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVUeXBlRGVjbGFyYXRp
b25zOyB9Ci0KLXByaXZhdGU6Ci0gICAgTmFtZUNvbnRleHQgbV9uYW1lQ29udGV4dDsKLSAgICBJ
bnRyaW5zaWNzIG1faW50cmluc2ljczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VHlwZURl
ZmluaXRpb24+PiBtX3R5cGVEZWZpbml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
U3RydWN0dXJlRGVmaW5pdGlvbj4+IG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7Ci0gICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+IG1fZW51bWVyYXRpb25EZWZp
bml0aW9uczsKLSAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4g
bV9mdW5jdGlvbkRlZmluaXRpb25zOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uPj4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsKLSAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4gbV9uYXRpdmVUeXBl
RGVjbGFyYXRpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVy
dHlSZXNvbHZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMGZhMGI5OWU4
YTUzYjkwYTMyNTc0MTJhZGVmNGI0OWNhYzhkM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUHJvcGVy
dHlSZXNvbHZlci5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xBU1QuaCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJl
cGxhY2VXaXRoLmgiCi0jaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvcGVydHlSZXNvbHZlciA6IHB1
YmxpYyBWaXNpdG9yIHsKLSAgICB2b2lkIGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UoVW5pcXVlUmVm
PEFTVDo6RXhwcmVzc2lvbj4gYmFzZSwgVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mIHNsb3Qs
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4mIGV4cHJlc3Npb25zKQotICAgIHsK
LSAgICAgICAgaWYgKCFiYXNlLT5tYXlCZUVmZmVjdGZ1bCgpKSB7Ci0gICAgICAgICAgICBzbG90
ID0gV1RGTW92ZShiYXNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGF1dG8gbGVmdEFkZHJlc3NTcGFjZSA9IGJhc2UtPnR5cGVBbm5vdGF0aW9uKCkubGVmdEFk
ZHJlc3NTcGFjZSgpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChsZWZ0QWRkcmVzc1NwYWNlKTsK
LSAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiA9IGJhc2UtPmNvZGVMb2NhdGlvbigp
OwotICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBiYXNlLT5yZXNvbHZl
ZFR5cGUoKTsKLSAgICAgICAgUmVmPEFTVDo6UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlID0gQVNU
OjpQb2ludGVyVHlwZTo6Y3JlYXRlKGNvZGVMb2NhdGlvbiwgKmxlZnRBZGRyZXNzU3BhY2UsIGJh
c2VUeXBlLmNvcHlSZWYoKSk7Ci0KLSAgICAgICAgVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4gcG9pbnRlclZhcmlhYmxlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+KGNvZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgcG9pbnRlclR5cGUu
cHRyKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICBhdXRvIG1ha2VW
YXJpYWJsZVJlZmVyZW5jZSA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlUmVmZXJl
bmNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlOjp3cmFwKHBvaW50ZXJWYXJpYWJsZSkpOwotICAgICAgICAgICAgdmFyaWFibGVS
ZWZlcmVuY2UtPnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIHZh
cmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OkxlZnRWYWx1ZSB7IEFTVDo6
QWRkcmVzc1NwYWNlOjpUaHJlYWQgfSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZl
cmVuY2U7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBwb2ludGVy
T2ZCYXNlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oY29kZUxv
Y2F0aW9uLCBXVEZNb3ZlKGJhc2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNj
YXBlKTsKLSAgICAgICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGUocG9pbnRlclR5cGUuY29w
eVJlZigpKTsKLSAgICAgICAgICAgIHBvaW50ZXJPZkJhc2UtPnNldFR5cGVBbm5vdGF0aW9uKEFT
VDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAgICAgICAgYXV0byBhc3NpZ25tZW50ID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIG1ha2VWYXJp
YWJsZVJlZmVyZW5jZSgpLCBXVEZNb3ZlKHBvaW50ZXJPZkJhc2UpKTsKLSAgICAgICAgICAgIGFz
c2lnbm1lbnQtPnNldFR5cGUocG9pbnRlclR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIGFz
c2lnbm1lbnQtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLQotICAgICAg
ICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoYXNzaWdubWVudCkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBkZXJlZmVyZW5jZSA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGNvZGVMb2NhdGlvbiwgbWFrZVZhcmlhYmxl
UmVmZXJlbmNlKCkpOwotICAgICAgICAgICAgZGVyZWZlcmVuY2UtPnNldFR5cGUoYmFzZVR5cGUu
Y29weVJlZigpKTsKLSAgICAgICAgICAgIGRlcmVmZXJlbmNlLT5zZXRUeXBlQW5ub3RhdGlvbihB
U1Q6OkxlZnRWYWx1ZSB7ICpsZWZ0QWRkcmVzc1NwYWNlIH0pOwotCi0gICAgICAgICAgICBzbG90
ID0gV1RGTW92ZShkZXJlZmVyZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZhcmlhYmxl
cy5hcHBlbmQoV1RGTW92ZShwb2ludGVyVmFyaWFibGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGhh
bmRsZVByb3BlcnR5QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0
eUFjY2VzcywgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiYgZXhwcmVzc2lvbnMp
Ci0gICAgewotICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiogY3VycmVudFB0
ciA9ICZwcm9wZXJ0eUFjY2VzczsKLSAgICAgICAgLy8gYS5iW2NdLmQgd2lsbCBnbyBpbnRvIHRo
aXMgYXJyYXkgYXMgWy5kLCBbY10sIC5iXQotICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4+IGNoYWluOwotCi0gICAgICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biYgY3VycmVudCA9ICpjdXJyZW50UHRyOwotICAgICAgICAgICAgY2hhaW4uYXBwZW5kKGN1cnJl
bnQpOwotICAgICAgICAgICAgaWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihjdXJyZW50KSkK
LSAgICAgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4
cHJlc3Npb24+KGN1cnJlbnQpLmluZGV4RXhwcmVzc2lvbigpKTsKLSAgICAgICAgICAgIGlmICgh
aXM8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKSkKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGN1cnJlbnRQdHIgPSAmZG93bmNhc3Q8QVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGN1cnJlbnQuYmFzZSgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBjdXJyZW50ID0gKmN1cnJl
bnRQdHI7Ci0KLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGN1cnJlbnQuYmFzZSgpKTsKLQot
ICAgICAgICBDb2RlTG9jYXRpb24gYmFzZUNvZGVMb2NhdGlvbiA9IGN1cnJlbnQuYmFzZSgpLmNv
ZGVMb2NhdGlvbigpOwotICAgICAgICAKLSAgICAgICAgaWYgKGN1cnJlbnQuYmFzZSgpLnR5cGVB
bm5vdGF0aW9uKCkuaXNSaWdodFZhbHVlKCkpIHsKLSAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24+IGNvcHkgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbj4oYmFzZUNvZGVMb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzIHsgfSwgJmN1cnJl
bnQuYmFzZSgpLnJlc29sdmVkVHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0g
ICAgICAgICAgICBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gYmFzZVR5cGUgPSBjdXJyZW50LmJhc2Uo
KS5yZXNvbHZlZFR5cGUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYXV0byBtYWtlVmFy
aWFibGVSZWZlcmVuY2UgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVSZWZl
cmVuY2UgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U6OndyYXAoY29weSkpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJl
bmNlLT5zZXRUeXBlKGJhc2VUeXBlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgdmFyaWFi
bGVSZWZlcmVuY2UtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6TGVmdFZhbHVlIHsgQVNUOjpBZGRy
ZXNzU3BhY2U6OlRocmVhZCB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZl
cmVuY2U7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnQgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGJhc2VDb2RlTG9jYXRpb24s
IG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgpLCBjdXJyZW50LnRha2VCYXNlKCkpOwotICAgICAgICAg
ICAgYXNzaWdubWVudC0+c2V0VHlwZShiYXNlVHlwZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAg
YXNzaWdubWVudC0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAg
ICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShhc3NpZ25tZW50KSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGN1cnJlbnQuYmFzZVJlZmVyZW5jZSgpID0gbWFrZVZhcmlhYmxl
UmVmZXJlbmNlKCk7Ci0KLSAgICAgICAgICAgIG1fdmFyaWFibGVzLmFwcGVuZChXVEZNb3ZlKGNv
cHkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBoYW5kbGVMZWZ0SGFuZFNpZGVCYXNl
KGN1cnJlbnQudGFrZUJhc2UoKSwgY3VycmVudC5iYXNlUmVmZXJlbmNlKCksIGV4cHJlc3Npb25z
KTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gY2hhaW4uc2l6ZSgpOyBpLS07ICkgewotICAg
ICAgICAgICAgYXV0byYgYWNjZXNzID0gY2hhaW5baV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
aXM8QVNUOjpJbmRleEV4cHJlc3Npb24+KGFjY2VzcykgJiYgZG93bmNhc3Q8QVNUOjpJbmRleEV4
cHJlc3Npb24+KGFjY2VzcykuaW5kZXhFeHByZXNzaW9uKCkubWF5QmVFZmZlY3RmdWwoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5k
ZXhFeHByZXNzaW9uPihhY2Nlc3MpOwotCi0gICAgICAgICAgICAgICAgUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+IGluZGV4VHlwZSA9IGluZGV4RXhwcmVzc2lvbi5pbmRleEV4cHJlc3Npb24oKS5yZXNv
bHZlZFR5cGUoKTsKLQotICAgICAgICAgICAgICAgIFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+IGluZGV4VmFyaWFibGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4oYWNjZXNzLmNvZGVMb2NhdGlvbigpLCBBU1Q6OlF1YWxpZmllcnMgeyB9LCBpbmRl
eFR5cGUucHRyKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICAgICAg
ICAgIGF1dG8gbWFrZVZhcmlhYmxlUmVmZXJlbmNlID0gWyZdIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byB2YXJpYWJsZVJlZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oQVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChpbmRleFZhcmlhYmxlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlUmVmZXJlbmNlLT5zZXRUeXBlKGluZGV4VHlwZS5j
b3B5UmVmKCkpOwotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlw
ZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0p
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVSZWZlcmVuY2U7Ci0gICAgICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0
byBhc3NpZ25tZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihi
YXNlQ29kZUxvY2F0aW9uLCBtYWtlVmFyaWFibGVSZWZlcmVuY2UoKSwgaW5kZXhFeHByZXNzaW9u
LnRha2VJbmRleCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0VHlwZShp
bmRleFR5cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC0+c2V0
VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotCi0gICAgICAgICAgICAgICAgICAg
IGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3ZlKGFzc2lnbm1lbnQpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBpbmRleEV4cHJlc3Npb24uaW5kZXhSZWZlcmVuY2UoKSA9
IG1ha2VWYXJpYWJsZVJlZmVyZW5jZSgpOwotCi0gICAgICAgICAgICAgICAgbV92YXJpYWJsZXMu
YXBwZW5kKFdURk1vdmUoaW5kZXhWYXJpYWJsZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCBoYW5kbGVQcm9wZXJ0eUFjY2VzcyhBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3MpCi0gICAgewotICAgICAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwotCi0gICAgICAgIGhhbmRsZVBy
b3BlcnR5QWNjZXNzKHByb3BlcnR5QWNjZXNzLCBleHByZXNzaW9ucyk7Ci0KLSAgICAgICAgUmVm
PEFTVDo6VW5uYW1lZFR5cGU+IGFjY2Vzc1R5cGUgPSBwcm9wZXJ0eUFjY2Vzcy5yZXNvbHZlZFR5
cGUoKTsKLQotICAgICAgICBBU1Q6OkNvbW1hRXhwcmVzc2lvbiogY29tbWE7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24gPSBwcm9wZXJ0eUFjY2Vzcy5jb2RlTG9jYXRpb24oKTsK
LSAgICAgICAgaWYgKGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2VzcykpIHsK
LSAgICAgICAgICAgIGF1dG8mIGluZGV4RXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6SW5kZXhF
eHByZXNzaW9uPihwcm9wZXJ0eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3SW5kZXhF
eHByZXNzaW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oY29kZUxvY2F0
aW9uLCBpbmRleEV4cHJlc3Npb24udGFrZUJhc2UoKSwgaW5kZXhFeHByZXNzaW9uLnRha2VJbmRl
eCgpKTsKLSAgICAgICAgICAgIG5ld0luZGV4RXhwcmVzc2lvbi0+c2V0VHlwZShpbmRleEV4cHJl
c3Npb24ucmVzb2x2ZWRUeXBlKCkpOwotICAgICAgICAgICAgbmV3SW5kZXhFeHByZXNzaW9uLT5z
ZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlR5cGVBbm5vdGF0aW9uKGluZGV4RXhwcmVzc2lvbi50eXBl
QW5ub3RhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgIGV4cHJlc3Npb25zLmFwcGVuZChXVEZNb3Zl
KG5ld0luZGV4RXhwcmVzc2lvbikpOwotCi0gICAgICAgICAgICBjb21tYSA9IEFTVDo6cmVwbGFj
ZVdpdGg8QVNUOjpDb21tYUV4cHJlc3Npb24+KGluZGV4RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9u
LCBXVEZNb3ZlKGV4cHJlc3Npb25zKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpczxBU1Q6OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzKSk7Ci0g
ICAgICAgICAgICBhdXRvJiBkb3RFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNz
aW9uPihwcm9wZXJ0eUFjY2Vzcyk7Ci0KLSAgICAgICAgICAgIGF1dG8gbmV3RG90RXhwcmVzc2lv
biA9IG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihjb2RlTG9jYXRpb24sIGRvdEV4
cHJlc3Npb24udGFrZUJhc2UoKSwgU3RyaW5nKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKTsK
LSAgICAgICAgICAgIG5ld0RvdEV4cHJlc3Npb24tPnNldFR5cGUoZG90RXhwcmVzc2lvbi5yZXNv
bHZlZFR5cGUoKSk7Ci0gICAgICAgICAgICBuZXdEb3RFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3Rh
dGlvbihBU1Q6OlR5cGVBbm5vdGF0aW9uKGRvdEV4cHJlc3Npb24udHlwZUFubm90YXRpb24oKSkp
OwotCi0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdEb3RFeHByZXNz
aW9uKSk7Ci0KLSAgICAgICAgICAgIGNvbW1hID0gQVNUOjpyZXBsYWNlV2l0aDxBU1Q6OkNvbW1h
RXhwcmVzc2lvbj4oZG90RXhwcmVzc2lvbiwgY29kZUxvY2F0aW9uLCBXVEZNb3ZlKGV4cHJlc3Np
b25zKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb21tYS0+c2V0VHlwZShXVEZNb3ZlKGFjY2Vz
c1R5cGUpKTsKLSAgICAgICAgY29tbWEtPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1
ZSgpKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lv
biYgZG90RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhhbmRsZVByb3BlcnR5
QWNjZXNzKGRvdEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpJbmRl
eEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGhh
bmRsZVByb3BlcnR5QWNjZXNzKGluZGV4RXhwcmVzc2lvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2
aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGUu
bmV3VmFsdWVFeHByZXNzaW9uKCkpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1v
ZGlmeVdyaXRlLnJlc3VsdEV4cHJlc3Npb24oKSk7Ci0KLSAgICAgICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsKLQotICAgICAgICBDb2RlTG9jYXRpb24g
Y29kZUxvY2F0aW9uID0gcmVhZE1vZGlmeVdyaXRlLmNvZGVMb2NhdGlvbigpOwotCi0gICAgICAg
IFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB0eXBlID0gcmVhZE1vZGlmeVdyaXRlLnJlc29sdmVkVHlw
ZSgpOwotCi0gICAgICAgIGlmIChpczxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj4ocmVh
ZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZSgpKSkKLSAgICAgICAgICAgIGhhbmRsZVByb3BlcnR5QWNj
ZXNzKGRvd25jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihyZWFkTW9kaWZ5V3Jp
dGUubGVmdFZhbHVlKCkpLCBleHByZXNzaW9ucyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGhhbmRsZUxlZnRIYW5kU2lkZUJhc2UocmVhZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwg
cmVhZE1vZGlmeVdyaXRlLmxlZnRWYWx1ZVJlZmVyZW5jZSgpLCBleHByZXNzaW9ucyk7Ci0KLSAg
ICAgICAgewotICAgICAgICAgICAgVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbj4gbmV3UmVhZE1vZGlmeVdyaXRlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24+KAotICAgICAgICAgICAgICAgIHJlYWRNb2RpZnlXcml0ZS5jb2RlTG9j
YXRpb24oKSwgcmVhZE1vZGlmeVdyaXRlLnRha2VMZWZ0VmFsdWUoKSwgcmVhZE1vZGlmeVdyaXRl
LnRha2VPbGRWYWx1ZSgpLCByZWFkTW9kaWZ5V3JpdGUudGFrZU5ld1ZhbHVlKCkpOwotICAgICAg
ICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXROZXdWYWx1ZUV4cHJlc3Npb24ocmVhZE1vZGlm
eVdyaXRlLnRha2VOZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBuZXdSZWFkTW9k
aWZ5V3JpdGUtPnNldFJlc3VsdEV4cHJlc3Npb24ocmVhZE1vZGlmeVdyaXRlLnRha2VSZXN1bHRF
eHByZXNzaW9uKCkpOwotICAgICAgICAgICAgbmV3UmVhZE1vZGlmeVdyaXRlLT5zZXRUeXBlKHR5
cGUuY29weVJlZigpKTsKLSAgICAgICAgICAgIG5ld1JlYWRNb2RpZnlXcml0ZS0+c2V0VHlwZUFu
bm90YXRpb24oQVNUOjpUeXBlQW5ub3RhdGlvbihyZWFkTW9kaWZ5V3JpdGUudHlwZUFubm90YXRp
b24oKSkpOwotCi0gICAgICAgICAgICBleHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShuZXdSZWFk
TW9kaWZ5V3JpdGUpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8qIGNvbW1hID0gQVNUOjpy
ZXBsYWNlV2l0aDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4ocmVhZE1vZGlmeVdyaXRlLCBjb2RlTG9j
YXRpb24sIFdURk1vdmUoZXhwcmVzc2lvbnMpKTsKLSAgICAgICAgY29tbWEtPnNldFR5cGUoV1RG
TW92ZSh0eXBlKSk7Ci0gICAgICAgIGNvbW1hLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0
VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV92YXJpYWJsZXMuaXNFbXB0eSgpKTsKLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4oZnVuY3Rpb25EZWZpbml0
aW9uKSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxv
Y2soKSk7Ci0KLSAgICAgICAgaWYgKCFtX3ZhcmlhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMCwgCi0g
ICAgICAgICAgICAgICAgbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50PihmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKS5jb2RlTG9jYXRpb24oKSwgV1RGTW92
ZShtX3ZhcmlhYmxlcykpKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zIG1fdmFyaWFibGVzOwotfTsKLQotdm9pZCByZXNvbHZlUHJv
cGVydGllcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIC8vIFRoZSBnb2FsIG9mIHRoaXMgcGhh
c2UgaXMgdHdvIGFsbG93IHR3byB0aGluZ3M6Ci0gICAgLy8gMS4gRm9yIHByb3BlcnR5IGFjY2Vz
cyBleHByZXNzaW9ucywgbWV0YWwgY29kZWdlbiBzaG91bGQgYmUgYWxsb3dlZCB0byBldmFsdWF0
ZQotICAgIC8vIHRoZSBiYXNlLCBhbmQgaWYgaXQncyBhbiBpbmRleCBleHByZXNzaW9uLCB0aGUg
aW5kZXgsIGFzIG1hbnkgdGltZXMgYXMgbmVlZGVkLgotICAgIC8vIFNvIHRoaXMgcGF0Y2ggZW5z
dXJlcyB0aGF0IGlmIE1ldGFsIGV2YWx1YXRlcyBzdWNoIHRoaW5ncywgZWZmZWN0cyBhcmVuJ3Qg
cGVyZm9ybWVkCi0gICAgLy8gbW9yZSB0aGFuIG9uY2UuCi0gICAgLy8KLSAgICAvLyAyLiBGb3Ig
UmVhZE1vZGlmeVdyaXRlIGV4cHJlc3Npb25zLCBtZXRhbCBjb2RlZ2VuIHNob3VsZCBiZSBhYmxl
IHRvIGV2YWx1YXRlIHRoZQotICAgIC8vIGxlZnRWYWx1ZUV4cHJlc3Npb24gYXMgbWFueSB0aW1l
cyBhcyBpdCdkIGxpa2Ugd2l0aG91dCBwZXJmb3JtaW5nIHRoZSBlZmZlY3RzIG9mCi0gICAgLy8g
bGVmdFZhbHVlRXhwcmVzc2lvbiBtb3JlIHRoYW4gb25jZS4KLSAgICAvLwotICAgIC8vIFdlIGRv
IHRoZXNlIHRoaW5ncyBiZWNhdXNlIGl0J3MgY29udmVuaWVudCBmb3IgbWV0YWwgY29kZWdlbiB0
byBiZSBhYmxlIHRvIHJlbHkgb24KLSAgICAvLyB0aGlzIHdpdGggdGhlIHdheSBpdCBzdHJ1Y3R1
cmVzIHRoZSBnZW5lcmF0ZWQgY29kZS4KLSAgICBQcm9wZXJ0eVJlc29sdmVyIHJlc29sdmVyOwot
ICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkK
LSAgICAgICAgcmVzb2x2ZXIudmlzaXQoZnVuY3Rpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
SExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xf
Q09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4NmVkYWE0ZThkOGI1MDZhMzZhZmYxYjIwYThlMzhhODYzOTg4N2YxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7
Ci0KLWNsYXNzIFByb2dyYW07Ci0KLXZvaWQgcmVzb2x2ZVByb3BlcnRpZXMoUHJvZ3JhbSYpOwot
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTE2NTc5YzM2MDc1M2ZiYmJjZThm
OGRlYzY1ZGJjYzI1YjFiNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIgotCi0jaWYg
RU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xBU1QuaCIKLSNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBSZWFjaGFibGVTdGRsaWJG
dW5jdGlvbnMgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNp
dChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb24pIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25zLmFkZCgmZnVuY3Rpb24p
OwotICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBWaXNpdG9y
Ojp2aXNpdChmdW5jdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFZpc2l0b3I6
OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKLSAgICAgICAgaWYgKGlzPEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkKLSAgICAgICAgICAgIHZpc2l0KGRv
d25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigp
KSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IHRha2VS
ZWFjaGFibGVGdW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVuY3Rpb25z
KTsgfQotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBt
X3JlYWNoYWJsZUZ1bmN0aW9uczsKLX07Ci0KLXZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlYWNoYWJsZVN0ZGxp
YkZ1bmN0aW9ucyByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnM7Ci0gICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IGZ1bmN0aW9uRGVmaW5pdGlvbnMgPSBXVEZNb3Zl
KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
IDogZnVuY3Rpb25EZWZpbml0aW9ucykgewotICAgICAgICBpZiAoZnVuY3Rpb24tPnBhcnNpbmdN
b2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkKLSAgICAgICAgICAgIHJlYWNo
YWJsZVN0ZGxpYkZ1bmN0aW9ucy52aXNpdChmdW5jdGlvbi5nZXQoKSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbi0+ZW50cnlQb2ludFR5cGUoKSk7
Ci0gICAgfQotCi0gICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVTdGRsaWJG
dW5jdGlvbnMudGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwotICAgIFZlY3RvcjxVbmlxdWVSZWY8
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiBuZXdGdW5jdGlvbkRlZmluaXRpb25zOwotICAgIGZv
ciAoVW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPiYgZW50cnkgOiBmdW5jdGlvbkRl
ZmluaXRpb25zKSB7Ci0gICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmVu
dHJ5LmdldCgpKSkKLSAgICAgICAgICAgIG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoZW50cnkpKTsKLSAgICB9Ci0KLSAgICBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMo
KSA9IFdURk1vdmUobmV3RnVuY3Rpb25EZWZpbml0aW9ucyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExT
TF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3
Yzg0Njk3NWViNjNhODE4ZTQ4ZjlmODkwNWMwYWNjMzdmZDM2YjguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotdm9pZCBwcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBlZTEyNDY4MGFiYmZiYWU2NTgyNzRmYjliY2E2
MmYzY2JhODc3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIKLQotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24u
aCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNM
UHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8g
TWFrZXMgc3VyZSB0aGVyZSBpcyBubyBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBSZWN1cnNp
b25DaGVja2VyIGZpbmFsIDogcHVibGljIFZpc2l0b3IgewotcHJpdmF0ZToKLSAgICB2b2lkIHZp
c2l0KFByb2dyYW0mIHByb2dyYW0pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAg
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0
aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1fZmluaXNoZWRWaXNpdGluZy5jb250
YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RhcnRlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0
aW9uKTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCB1c2UgcmVjdXJzaW9uIGluIHRoZSBjYWxsIGdyYXBoLiIs
IGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJzaW5nTW9k
ZSgpICE9IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpCi0gICAgICAgICAgICBWaXNpdG9y
Ojp2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9maW5pc2hlZFZpc2l0aW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJl
c3Npb24mIGNhbGxFeHByZXNzaW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVmlzaXRvcjo6
dmlzaXQoY2FsbEV4cHJlc3Npb24pOwotICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKQotICAgICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lv
bi5mdW5jdGlvbigpKSk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbio+IG1fc3RhcnRlZFZpc2l0aW5nOwotICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24qPiBtX2ZpbmlzaGVkVmlzaXRpbmc7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4g
Y2hlY2tSZWN1cnNpb24oUHJvZ3JhbSYgcHJvZ3JhbSkKLXsKLSAgICBSZWN1cnNpb25DaGVja2Vy
IHJlY3Vyc2lvbkNoZWNrZXI7Ci0gICAgcmVjdXJzaW9uQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChw
cm9ncmFtKTsKLSAgICByZXR1cm4gcmVjdXJzaW9uQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDdhYzI1MGU0YmM1NGIwYWI5MTkx
NWQxZWYyMDg1NjM1M2VlNmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJz
aW9uQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFByb2dyYW07Ci0KLUV4cGVjdGVk
PHZvaWQsIEVycm9yPiBjaGVja1JlY3Vyc2lvbihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2Vy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxYzUwN2FjNTY4MDEzZmU5MzJm
YzA1YTJjNTI2OGY0OTY5ZWU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlw
ZUNoZWNrZXIuaCIKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24u
aCIKLSNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVu
Y2UuaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFJl
Y3Vyc2l2ZVR5cGVDaGVja2VyIDogcHVibGljIFZpc2l0b3IgewotcHVibGljOgotICAgIHZvaWQg
dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdChBU1Q6OlR5
cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlw
ZSYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8QVNUOjpUeXBlKj4gbV9zdGFy
dGVkVmlzaXRpbmc7Ci0gICAgSGFzaFNldDxBU1Q6OlR5cGUqPiBtX2ZpbmlzaGVkVmlzaXRpbmc7
Ci19OwotCi0jZGVmaW5lIFNUQVJUX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGlmIChtX2Zp
bmlzaGVkVmlzaXRpbmcuY29udGFpbnModCkpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgYXV0
byByZXN1bHRTdGFydGVkVmlzaXRpbmcgPSBtX3N0YXJ0ZWRWaXNpdGluZy5hZGQodCk7IFwKLSAg
ICBpZiAoIXJlc3VsdFN0YXJ0ZWRWaXNpdGluZy5pc05ld0VudHJ5KSB7IFwKLSAgICAgICAgc2V0
RXJyb3IoRXJyb3IoIkNhbm5vdCBkZWNsYXJlIHJlY3Vyc2l2ZSB0eXBlcy4iLCAodCktPmNvZGVM
b2NhdGlvbigpKSk7IFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgfSBcCi19IHdoaWxlIChmYWxz
ZSk7Ci0KLSNkZWZpbmUgRU5EX1ZJU0lUSU5HKHQpIFwKLWRvIHsgXAotICAgIGF1dG8gcmVzdWx0
RmluaXNoZWRWaXNpdGluZyA9IG1fZmluaXNoZWRWaXNpdGluZy5hZGQodCk7IFwKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcsIHJlc3VsdEZpbmlzaGVkVmlzaXRpbmcu
aXNOZXdFbnRyeSk7IFwKLX0gd2hpbGUgKGZhbHNlKTsKLQotdm9pZCBSZWN1cnNpdmVUeXBlQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCi17Ci0gICAg
U1RBUlRfVklTSVRJTkcoJnR5cGVEZWZpbml0aW9uKTsKLQotICAgIFZpc2l0b3I6OnZpc2l0KHR5
cGVEZWZpbml0aW9uKTsKLQotICAgIEVORF9WSVNJVElORygmdHlwZURlZmluaXRpb24pOwotfQot
Ci12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgU1RBUlRfVklTSVRJTkcoJnN0cnVjdHVy
ZURlZmluaXRpb24pOwotCi0gICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7
Ci0KLSAgICBFTkRfVklTSVRJTkcoJnN0cnVjdHVyZURlZmluaXRpb24pOwotfQotCi12b2lkIFJl
Y3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVu
Y2UpCi17Ci0gICAgU1RBUlRfVklTSVRJTkcoJnR5cGVSZWZlcmVuY2UpOwotCi0gICAgZm9yIChh
dXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVSZWZlcmVu
Y2UubWF5YmVSZXNvbHZlZFR5cGUoKSkgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTgxNjEgU2hvdWxkbid0IHdlIGtub3cgYnkgbm93IHdoZXRoZXIg
dGhlIHR5cGUgaGFzIGJlZW4gcmVzb2x2ZWQgb3Igbm90PwotICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQodHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7Ci0KLSAgICBFTkRfVklTSVRJTkco
JnR5cGVSZWZlcmVuY2UpOwotfQotCi12b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2VyOjp2aXNpdChB
U1Q6OlJlZmVyZW5jZVR5cGUmKQotewotfQotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tS
ZWN1cnNpdmVUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQotewotICAgIFJlY3Vyc2l2ZVR5cGVDaGVj
a2VyIHJlY3Vyc2l2ZVR5cGVDaGVja2VyOwotICAgIGZvciAoYXV0byYgdHlwZURlZmluaXRpb24g
OiBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpKQotICAgICAgICByZWN1cnNpdmVUeXBlQ2hlY2tl
ci5jaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24pOwotICAgIGZvciAoYXV0byYgc3Ry
dWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkKLSAgICAg
ICAgcmVjdXJzaXZlVHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZURlZmlu
aXRpb24pOwotICAgIHJldHVybiByZWN1cnNpdmVUeXBlQ2hlY2tlci5yZXN1bHQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjFhYzBmNTcxMzA0YmJlYWE4ODE3NTBkMGRm
YzIwNjJlN2QyNDg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlw
ZUNoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldI
TFNMRXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2
b2lkLCBFcnJvcj4gY2hlY2tSZWN1cnNpdmVUeXBlcyhQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1w
bC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMzZjNDcyNTg2OTY0ODI5OGUy
ODU1NmEwMWM0MzczYzc2YjQzZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZlT3ZlcmxvYWRJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMUmVzb2x2ZU92ZXJs
b2FkSW1wbC5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRlIDxsaW1pdHM+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotc3RhdGljIHVuc2ln
bmVkIGNvbnZlcnNpb25Db3N0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgY2FuZGlkYXRlLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3Vt
ZW50VHlwZXMpCi17Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QgPSAwOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2FuZGlkYXRlLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBjb252ZXJzaW9uQ29zdCArPSBhcmd1bWVudFR5cGVzW2ldLmdldCgpLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYpIC0+IHVuc2lnbmVkIHsK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpIC0+IHVuc2lnbmVkIHsKLSAg
ICAgICAgICAgIHJldHVybiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUo
KS5jb252ZXJzaW9uQ29zdCgqY2FuZGlkYXRlLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKTsKLSAg
ICAgICAgfSkpOwotICAgIH0KLSAgICAvLyBUaGUgcmV0dXJuIHR5cGUgY2FuIG5ldmVyIGJlIGEg
bGl0ZXJhbCB0eXBlLCBzbyBpdHMgY29udmVyc2lvbiBjb3N0IGlzIGFsd2F5cyAwLgotICAgIHJl
dHVybiBjb252ZXJzaW9uQ29zdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVLaW5kPgot
c3RhdGljIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJ
bXBsKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBUeXBlS2luZCogY2FzdFJldHVyblR5cGUs
IEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkKLXsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBjYW5kaWRhdGVzOwotICAgIGZv
ciAoYXV0byYgcG9zc2libGVGdW5jdGlvbiA6IHBvc3NpYmxlRnVuY3Rpb25zKSB7Ci0gICAgICAg
IGlmIChwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaWYgKG5hbWVTcGFjZSA9PSBBU1Q6Ok5hbWVTcGFjZTo6U3Rh
bmRhcmRMaWJyYXJ5KSB7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVGdW5jdGlvbi5nZXQoKS5u
YW1lU3BhY2UoKSAhPSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5KQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHBvc3Np
YmxlRnVuY3Rpb24uZ2V0KCkubmFtZVNwYWNlKCkgIT0gQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJk
TGlicmFyeSAmJiBwb3NzaWJsZUZ1bmN0aW9uLmdldCgpLm5hbWVTcGFjZSgpICE9IG5hbWVTcGFj
ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5m
ZXJUeXBlc0ZvckNhbGwocG9zc2libGVGdW5jdGlvbi5nZXQoKSwgYXJndW1lbnRUeXBlcywgY2Fz
dFJldHVyblR5cGUpKQotICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQocG9zc2libGVGdW5j
dGlvbi5nZXQoKSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbWluaW11bUNvbnZlcnNpb25Db3N0
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwotICAgIGZvciAoYXV0byYg
Y2FuZGlkYXRlIDogY2FuZGlkYXRlcykKLSAgICAgICAgbWluaW11bUNvbnZlcnNpb25Db3N0ID0g
c3RkOjptaW4obWluaW11bUNvbnZlcnNpb25Db3N0LCBjb252ZXJzaW9uQ29zdChjYW5kaWRhdGUu
Z2V0KCksIGFyZ3VtZW50VHlwZXMpKTsKLQotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+IG1pbmltdW1Db3N0Q2FuZGlkYXRlczsK
LSAgICBmb3IgKGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpIHsKLSAgICAgICAgaWYgKGNv
bnZlcnNpb25Db3N0KGNhbmRpZGF0ZS5nZXQoKSwgYXJndW1lbnRUeXBlcykgPT0gbWluaW11bUNv
bnZlcnNpb25Db3N0KQotICAgICAgICAgICAgbWluaW11bUNvc3RDYW5kaWRhdGVzLmFwcGVuZChj
YW5kaWRhdGUpOwotICAgIH0KLQotICAgIGlmIChtaW5pbXVtQ29zdENhbmRpZGF0ZXMuc2l6ZSgp
ID09IDEpCi0gICAgICAgIHJldHVybiAmbWluaW11bUNvc3RDYW5kaWRhdGVzWzBdLmdldCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi1BU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHJlc29s
dmVGdW5jdGlvbk92ZXJsb2FkKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZUZ1bmN0aW9ucywgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiBhcmd1bWVudFR5cGVzLCBBU1Q6Ok5hbWVT
cGFjZSBuYW1lU3BhY2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1w
bChwb3NzaWJsZUZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgc3RhdGljX2Nhc3Q8QVNUOjpOYW1l
ZFR5cGUqPihudWxscHRyKSwgbmFtZVNwYWNlKTsKLX0KLQotQVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKiByZXNvbHZlRnVuY3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywg
QVNUOjpOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2Up
Ci17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkSW1wbChwb3NzaWJsZUZ1bmN0
aW9ucywgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUsIG5hbWVTcGFjZSk7Ci19Ci0KLUFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3Np
YmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6VW5uYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlLCBBU1Q6
Ok5hbWVTcGFjZSBuYW1lU3BhY2UpCi17Ci0gICAgcmV0dXJuIHJlc29sdmVGdW5jdGlvbk92ZXJs
b2FkSW1wbChwb3NzaWJsZUZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgY2FzdFJldHVyblR5cGUs
IG5hbWVTcGFjZSk7Ci19Ci0KLUFTVDo6TmFtZWRUeXBlKiByZXNvbHZlVHlwZU92ZXJsb2FkSW1w
bChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4sIDE+JiBwb3Nz
aWJsZVR5cGVzLCBBU1Q6OlR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMpCi17Ci0gICAgQVNU
OjpOYW1lZFR5cGUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvJiBwb3NzaWJsZVR5
cGUgOiBwb3NzaWJsZVR5cGVzKSB7Ci0gICAgICAgIGlmIChpbmZlclR5cGVzRm9yVHlwZUFyZ3Vt
ZW50cyhwb3NzaWJsZVR5cGUsIHR5cGVBcmd1bWVudHMpKSB7Ci0gICAgICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmVzdWx0
ID0gJnN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4ocG9zc2libGVUeXBlKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNM
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01Q
SUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgwMzIyZTg0NGRmM2ZiOGJhYWE4NjkwODg4Zjc4OTJhMTE2NzM5ZmIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFJlc29sdmluZ1R5cGUuaCIKLSNp
bmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uOwot
Y2xhc3MgTmFtZWRUeXBlOwotCi19Ci0KLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2
ZUZ1bmN0aW9uT3ZlcmxvYWQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZVNw
YWNlKTsKLUFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQo
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwg
MT4mIHBvc3NpYmxlRnVuY3Rpb25zLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNv
bHZpbmdUeXBlPj4mIGFyZ3VtZW50VHlwZXMsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSwgQVNUOjpOYW1lU3BhY2UpOwotQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVu
Y3Rpb25PdmVybG9hZChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVGdW5jdGlvbnMsIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiYgYXJndW1lbnRUeXBlcywgQVNUOjpVbm5hbWVkVHlw
ZSogY2FzdFJldHVyblR5cGUsIEFTVDo6TmFtZVNwYWNlKTsKLUFTVDo6TmFtZWRUeXBlKiByZXNv
bHZlVHlwZU92ZXJsb2FkSW1wbChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5h
bWVkVHlwZT4sIDE+JiwgQVNUOjpUeXBlQXJndW1lbnRzJik7Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWNlYTQ1N2E4NTMyMGI5OWQ5OTlmZDE5NmZiMDE2ODc0ZDc2ZDUyNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotbmFtZXNwYWNlIEFTVCB7Ci0K
LWNsYXNzIFJlc29sdmFibGVUeXBlOwotCi19Ci0KLS8vIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0
aGUgdHlwZSBvZiBvbmUgQVNUIG5vZGUgc2hvdWxkIG1hdGNoIHRoZSB0eXBlIG9mIGFub3RoZXIg
QVNUIG5vZGUuCi0vLyBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBjb21tYSBleHByZXNzaW9u
IC0gdGhlIHR5cGUgb2YgdGhlIGNvbW1hIGV4cHJlc3Npb24gc2hvdWxkIG1hdGNoIHRoZSB0eXBl
IG9mIGl0cyBsYXN0IGl0ZW0uCi0vLyBJZiB0aGlzIHR5cGUgaGFwcGVucyB0byBiZSBhIHJlc29s
dmFibGUgdHlwZSwgaXQgd2lsbCBnZXQgcmVzb2x2ZWQgbGF0ZXIuIFdoZW4gdGhhdCBoYXBwZW5z
LAotLy8gYm90aCBvZiB0aGUgQVNUIG5vZGVzIGhhdmUgdG8gYmUgcmVzb2x2ZWQgdG8gdGhlIHJl
c3VsdCB0eXBlLiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYQotLy8gcmVmZXJlbmNlIGNvdW50ZWQg
d3JhcHBlciBhcm91bmQgYSByZXNvbHZhYmxlIHR5cGUgc28gYm90aCBlbnRyaWVzIGluIHRoZSB0
eXBlIG1hcCBjYW4gcG9pbnQKLS8vIHRvIHRoZSBzYW1lIHJlc29sdmFibGUgdHlwZSwgc28gcmVz
b2x2aW5nIGl0IG9uY2UgcmVzb2x2ZXMgYm90aCB0aGUgZW50cmllcyBpbiB0aGUgbWFwLgotLy8g
VGhpcyBjbGFzcyBjb3VsZCBwcm9iYWJseSBiZSByZXByZXNlbnRlZCBhcwotLy8gImNsYXNzIFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlIDogcHVibGljIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpSZXNvbHZhYmxlVHlwZT4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlIHt9IgotLy8gYnV0IEkgZGlkbid0IHdhbnQgdG8gYmUgdG9vIGNsZXZlci4KLWNsYXNzIFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2U+IHsKLXB1YmxpYzoKLSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZShBU1Q6OlJl
c29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKLSAgICAgICAgOiBtX3Jlc29sdmFibGVUeXBl
KCZyZXNvbHZhYmxlVHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UoY29uc3QgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZShSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsK
LSAgICBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlJikgPSBkZWxldGU7Ci0gICAgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UmIG9w
ZXJhdG9yPShSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSYmKSA9IGRlbGV0ZTsKLQotICAgIEFTVDo6
UmVzb2x2YWJsZVR5cGUmIHJlc29sdmFibGVUeXBlKCkgeyByZXR1cm4gKm1fcmVzb2x2YWJsZVR5
cGU7IH0KLQotcHJpdmF0ZToKLSAgICBBU1Q6OlJlc29sdmFibGVUeXBlKiBtX3Jlc29sdmFibGVU
eXBlOwotfTsKLQotLy8gVGhpcyBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgYSBWYXJpYW50Lgot
Ly8gSXQgZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBkb2VzIHRoZSByaWdodCB0aGluZy4KLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVj
ZXNzYXJ5LgotY2xhc3MgUmVzb2x2aW5nVHlwZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgUmVzb2x2aW5nVHlwZSgpCi0gICAgICAgIDogbV9pbm5lcihSZWZQ
dHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCi0gICAgewotICAgIH0KLQotICAgIFJlc29s
dmluZ1R5cGUoUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHYpCi0gICAgICAgIDogbV9pbm5lcihXVEZN
b3ZlKHYpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvbHZpbmdUeXBlKFJlZlB0cjxSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZT4gdikKLSAgICAgICAgOiBtX2lubmVyKFdURk1vdmUodikpCi0gICAg
ewotICAgIH0KLQotICAgIFJlc29sdmluZ1R5cGUoY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVs
ZXRlOwotICAgIFJlc29sdmluZ1R5cGUoUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgICAgICA6
IG1faW5uZXIoV1RGTW92ZShvdGhlci5tX2lubmVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVz
b2x2aW5nVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmluZ1R5cGUmKSA9IGRlbGV0ZTsKLSAg
ICBSZXNvbHZpbmdUeXBlJiBvcGVyYXRvcj0oUmVzb2x2aW5nVHlwZSYmIG90aGVyKQotICAgIHsK
LSAgICAgICAgbV9pbm5lciA9IFdURk1vdmUob3RoZXIubV9pbm5lcik7Ci0gICAgICAgIHJldHVy
biAqdGhpczsKLSAgICB9Ci0KLSAgICBBU1Q6OlVubmFtZWRUeXBlKiBnZXRVbm5hbWVkVHlwZSgp
Ci0gICAgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QVNUOjpVbm5h
bWVkVHlwZT4+KG1faW5uZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZjxBU1Q6
OlVubmFtZWRUeXBlPj4obV9pbm5lcikucHRyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0
IFZpc2l0b3ImIHZpc2l0b3IpIC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpk
ZWNsdmFsPFZhcmlhbnQ8UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5
cGVSZWZlcmVuY2U+PiY+KCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlz
aXRvciwgbV9pbm5lcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZhcmlhbnQ8UmVmPEFTVDo6
VW5uYW1lZFR5cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+PiBtX2lubmVyOwot
fTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNldEFk
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNjb3BlZFNl
dEFkZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyM2MxMTVlMWMxNGJhOTdk
NzVjZDBhMThmZDE0ODMxYTEwNWI5OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
Y29wZWRTZXRBZGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTY29wZWRTZXRBZGRlciB7Ci1wdWJs
aWM6Ci0gICAgU2NvcGVkU2V0QWRkZXIoSGFzaFNldDxUPiYgc2V0LCBUJiYgaXRlbSkKLSAgICAg
ICAgOiBtX3NldChzZXQpCi0gICAgICAgICwgbV9pdGVtKFdURk1vdmUoaXRlbSkpCi0gICAgewot
ICAgICAgICBtX2lzTmV3RW50cnkgPSBzdGF0aWNfY2FzdDxib29sPihtX3NldC5hZGQobV9pdGVt
KSk7Ci0gICAgfQotCi0gICAgflNjb3BlZFNldEFkZGVyKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
bV9pc05ld0VudHJ5KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHN1Y2Nlc3Mg
PSBtX3NldC5yZW1vdmUobV9pdGVtKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBz
dWNjZXNzKTsKLSAgICB9Ci0KLSAgICBib29sIGlzTmV3RW50cnkoKSBjb25zdCB7IHJldHVybiBt
X2lzTmV3RW50cnk7IH0KLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PFQ+JiBtX3NldDsKLSAgICBU
IG1faXRlbTsKLSAgICBib29sIG1faXNOZXdFbnRyeTsKLX07Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjIwODgyZTkwNTUzMTI2NGEwNzczNTFlZTQ5MDUwMTli
NDJmODU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDMzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgot
I2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNs
dWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5o
IgotI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3Rh
Z2VJbk91dFNlbWFudGljLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXN0YXRpYyBib29sIG1hdGNoTW9k
ZShCaW5kaW5nOjpCaW5kaW5nRGV0YWlscyBiaW5kaW5nVHlwZSwgQVNUOjpSZXNvdXJjZVNlbWFu
dGljOjpNb2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbJl0oVW5pZm9ybUJ1ZmZlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9k
ZSA9PSBBU1Q6OlJlc291cmNlU2VtYW50aWM6Ok1vZGU6OkJ1ZmZlcjsKLSAgICB9LCBbJl0oU2Ft
cGxlckJpbmRpbmcpIC0+IGJvb2wgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBBU1Q6OlJlc291
cmNlU2VtYW50aWM6Ok1vZGU6OlNhbXBsZXI7Ci0gICAgfSwgWyZdKFRleHR1cmVCaW5kaW5nKSAt
PiBib29sIHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gQVNUOjpSZXNvdXJjZVNlbWFudGljOjpN
b2RlOjpUZXh0dXJlOwotICAgIH0sIFsmXShTdG9yYWdlQnVmZmVyQmluZGluZykgLT4gYm9vbCB7
Ci0gICAgICAgIHJldHVybiBtb2RlID09IEFTVDo6UmVzb3VyY2VTZW1hbnRpYzo6TW9kZTo6VW5v
cmRlcmVkQWNjZXNzVmlldzsKLSAgICB9KSwgYmluZGluZ1R5cGUpOwotfQotCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0
b3I8RW50cnlQb2ludEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExheW91dCYgbGF5b3V0LCBTaGFk
ZXJTdGFnZSBzaGFkZXJTdGFnZSkKLXsKLSAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHJl
c3VsdDsKLSAgICBIYXNoU2V0PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3Ig
KGF1dG8mIGJpbmRHcm91cCA6IGxheW91dCkgewotICAgICAgICBhdXRvIHNwYWNlID0gYmluZEdy
b3VwLm5hbWU7Ci0gICAgICAgIGZvciAoYXV0byYgYmluZGluZyA6IGJpbmRHcm91cC5iaW5kaW5n
cykgewotICAgICAgICAgICAgaWYgKCFiaW5kaW5nLnZpc2liaWxpdHkuY29udGFpbnMoc2hhZGVy
U3RhZ2UpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbnRyeVBvaW50SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBpdGVtID0gZW50cnlQb2ludEl0ZW1zW2ldOwotICAgICAgICAgICAgICAgIGF1
dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgICAgICAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBhdXRvJiByZXNvdXJj
ZVNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtYXRjaE1vZGUoYmluZGluZy5iaW5kaW5nLCByZXNvdXJjZVNl
bWFudGljLm1vZGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGlmIChiaW5kaW5nLmV4dGVybmFsTmFtZSAhPSByZXNvdXJjZVNlbWFudGljLmluZGV4
KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChz
cGFjZSAhPSByZXNvdXJjZVNlbWFudGljLnNwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJmJpbmRpbmcsIGkpOwotICAgICAg
ICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlQb2ludEl0ZW1zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBlbnRyeVBvaW50SXRlbXNbaV07Ci0gICAg
ICAgIGF1dG8mIHNlbWFudGljID0gKml0ZW0uc2VtYW50aWM7Ci0gICAgICAgIGlmICghV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1zdGF0aWMgYm9vbCBtYXRjaElucHV0c091dHB1dHMoVmVjdG9yPEVudHJ5UG9p
bnRJdGVtPiYgdmVydGV4T3V0cHV0cywgVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgZnJhZ21lbnRJ
bnB1dHMpCi17Ci0gICAgZm9yIChhdXRvJiBmcmFnbWVudElucHV0IDogZnJhZ21lbnRJbnB1dHMp
IHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNl
bWFudGljPigqZnJhZ21lbnRJbnB1dC5zZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXV0byYgZnJhZ21lbnRJbnB1dFN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0
PEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPigqZnJhZ21lbnRJbnB1dC5zZW1hbnRpYyk7Ci0gICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiB2ZXJ0ZXhPdXRwdXQg
OiB2ZXJ0ZXhPdXRwdXRzKSB7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCp2ZXJ0ZXhPdXRwdXQuc2VtYW50aWMpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgdmVydGV4T3V0cHV0U3Rh
Z2VJbk91dFNlbWFudGljID0gV1RGOjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KCp2ZXJ0
ZXhPdXRwdXQuc2VtYW50aWMpOwotICAgICAgICAgICAgaWYgKGZyYWdtZW50SW5wdXRTdGFnZUlu
T3V0U2VtYW50aWMuaW5kZXgoKSA9PSB2ZXJ0ZXhPdXRwdXRTdGFnZUluT3V0U2VtYW50aWMuaW5k
ZXgoKSkgewotICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKCpmcmFnbWVudElucHV0LnVubmFt
ZWRUeXBlLCAqdmVydGV4T3V0cHV0LnVubmFtZWRUeXBlKSkgewotICAgICAgICAgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1h
dChWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlw
ZSwgSW50cmluc2ljcyYgaW50cmluc2ljcykKLXsKLSAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdCkg
ewotICAgIGNhc2UgVmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMkIzMkEzMjoKLSAgICAgICAgcmV0
dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQ0VHlwZSgpKTsKLSAgICBj
YXNlIFZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzJCMzI6Ci0gICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7Ci0gICAgY2FzZSBWZXJ0ZXhG
b3JtYXQ6OkZsb2F0UjMyRzMyOgotICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5mbG9hdDJUeXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh2
ZXJ0ZXhGb3JtYXQgPT0gVmVydGV4Rm9ybWF0OjpGbG9hdFIzMik7Ci0gICAgICAgIHJldHVybiBt
YXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0VHlwZSgpKTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90Pj4g
bWF0Y2hWZXJ0ZXhBdHRyaWJ1dGVzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIHZlcnRleElucHV0
cywgVmVydGV4QXR0cmlidXRlcyYgdmVydGV4QXR0cmlidXRlcywgSW50cmluc2ljcyYgaW50cmlu
c2ljcykKLXsKLSAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4gcmVzdWx0Owot
ICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwotICAgIGZvciAoYXV0byYg
dmVydGV4QXR0cmlidXRlIDogdmVydGV4QXR0cmlidXRlcykgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZlcnRleElucHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0
byYgaXRlbSA9IHZlcnRleElucHV0c1tpXTsKLSAgICAgICAgICAgIGF1dG8mIHNlbWFudGljID0g
Kml0ZW0uc2VtYW50aWM7Ci0gICAgICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGF1dG8mIHN0YWdlSW5PdXRTZW1hbnRpYyA9IFdURjo6Z2V0PEFT
VDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYyk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJ
bk91dFNlbWFudGljLmluZGV4KCkgIT0gdmVydGV4QXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVG
b3JtYXQodmVydGV4QXR0cmlidXRlLnZlcnRleEZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
ICAgICByZXN1bHQuYWRkKCZ2ZXJ0ZXhBdHRyaWJ1dGUsIGkpOwotICAgICAgICAgICAgaXRlbUlu
ZGljZXMuYWRkKGkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2ZXJ0ZXhJbnB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IHZl
cnRleElucHV0c1tpXTsKLSAgICAgICAgYXV0byYgc2VtYW50aWMgPSAqaXRlbS5zZW1hbnRpYzsK
LSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljPihzZW1hbnRpYykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpdGVt
SW5kaWNlcy5jb250YWlucyhpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxl
Rm9ybWF0KFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW5u
YW1lZFR5cGUsIEludHJpbnNpY3MmIGludHJpbnNpY3MsIGJvb2wgaXNDb2xvcikKLXsKLSAgICBp
ZiAoaXNDb2xvcikgewotICAgICAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKLSAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6
OlI4VW5vcm1TcmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4U25vcm06Ci0gICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UjE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2RmxvYXQ6Ci0g
ICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjMyRmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4g
bWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6Ukc4VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6
Ukc4VW5vcm1TcmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHOFNub3JtOgotICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSRzE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNkZsb2F0
OgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJGbG9hdDoKLSAgICAgICAgICAgIHJl
dHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0MlR5cGUoKSk7Ci0gICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6QjVHNlI1VW5vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVy
ZUZvcm1hdDo6UkcxMUIxMEZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSR0JBOFVub3JtOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkE4VW5vcm1T
cmdiOgotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm06Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UkdCQThTbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0IxMEEyVW5v
cm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2VW5vcm06Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2U25vcm06Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1h
dDo6UkdCQTE2RmxvYXQ6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyRmxvYXQ6
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9h
dDRUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlIzMlVpbnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsK
LSAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMzJTaW50OgotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuaW50VHlwZSgpKTsKLSAgICAgICAgY2Fz
ZSBUZXh0dXJlRm9ybWF0OjpSRzMyVWludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVu
bmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnQyVHlwZSgpKTsKLSAgICAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpSRzMyU2ludDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBl
LCBpbnRyaW5zaWNzLmludDJUeXBlKCkpOwotICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJH
QkEzMlVpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmlu
c2ljcy51aW50NFR5cGUoKSk7Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyU2lu
dDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmlu
dDRUeXBlKCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1l
bnREZXNjcmlwdG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9y
PiYgYXR0YWNobWVudERlc2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQotewotICAg
IEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+IHJlc3VsdDsKLSAgICBIYXNo
U2V0PHNpemVfdCwgRGVmYXVsdEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxzaXplX3Q+PiBpdGVtSW5kaWNlczsKLSAgICBmb3IgKGF1dG8mIGF0dGFjaG1l
bnREZXNjcmlwdG9yIDogYXR0YWNobWVudERlc2NyaXB0b3JzKSB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnJhZ21lbnRPdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBpdGVtID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICAgICAgYXV0byYgc2Vt
YW50aWMgPSAqaXRlbS5zZW1hbnRpYzsKLSAgICAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgc3RhZ2VJbk91dFNlbWFudGljID0gV1RG
OjpnZXQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgICAgIGlm
IChzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgoKSAhPSBhdHRhY2htZW50RGVzY3JpcHRvci5uYW1l
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFi
bGVGb3JtYXQoYXR0YWNobWVudERlc2NyaXB0b3IudGV4dHVyZUZvcm1hdCwgKml0ZW0udW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MsIHRydWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgICAgICByZXN1bHQuYWRkKCZhdHRhY2htZW50RGVzY3JpcHRvciwgaSk7
Ci0gICAgICAgICAgICBpdGVtSW5kaWNlcy5hZGQoaSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYWdtZW50T3V0cHV0cy5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvJiBpdGVtID0gZnJhZ21lbnRPdXRwdXRzW2ldOwotICAgICAgICBhdXRvJiBz
ZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1zdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+
JiBmcmFnbWVudE91dHB1dHMsIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+JiBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgSW50cmluc2ljcyYgaW50cmluc2ljcykK
LXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKGZyYWdtZW50T3V0cHV0cy5iZWdp
bigpLCBmcmFnbWVudE91dHB1dHMuZW5kKCksIFsmXShFbnRyeVBvaW50SXRlbSYgaXRlbSkgewot
ICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwotICAgICAgICBpZiAoIVdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgYnVpbHRJblNlbWFudGljID0g
V1RGOjpnZXQ8QVNUOjpCdWlsdEluU2VtYW50aWM+KHNlbWFudGljKTsKLSAgICAgICAgcmV0dXJu
IGJ1aWx0SW5TZW1hbnRpYy52YXJpYWJsZSgpID09IEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJp
YWJsZTo6U1ZEZXB0aDsKLSAgICB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gZnJhZ21lbnRPdXRw
dXRzLmVuZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvcikgewotICAgICAgICBBU1NFUlQoIWRlcHRoU3RlbmNpbEF0dGFj
aG1lbnREZXNjcmlwdG9yLT5uYW1lKTsKLSAgICAgICAgcmV0dXJuIGlzQWNjZXB0YWJsZUZvcm1h
dChkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvci0+dGV4dHVyZUZvcm1hdCwgKml0ZXJh
dG9yLT51bm5hbWVkVHlwZSwgaW50cmluc2ljcywgZmFsc2UpOwotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hT
ZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciwgYm9vbCBm
cmFnbWVudFNoYWRlckV4aXN0cykKLXsKLSAgICBhdXRvIHZlcnRleEZ1bmN0aW9ucyA9IHByb2dy
YW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZl
cnRleEVudHJ5UG9pbnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYg
KHZlcnRleEZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhdmVydGV4RnVuY3Rpb25zWzBdLmdldCgp
LmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhG
dW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1
dG8mIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbj4odmVydGV4RnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIHZlcnRleFNoYWRlckVu
dHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3Mo
KSwgdmVydGV4U2hhZGVyRW50cnlQb2ludCk7Ci0gICAgaWYgKCF2ZXJ0ZXhTaGFkZXJFbnRyeVBv
aW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byB2ZXJ0ZXhT
aGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJ
dGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFn
ZTo6VmVydGV4KTsKLSAgICBpZiAoIXZlcnRleFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8gbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMgPSBt
YXRjaFZlcnRleEF0dHJpYnV0ZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMs
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtLmludHJp
bnNpY3MoKSk7Ci0gICAgaWYgKCFtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyRXhpc3RzKQotICAgICAg
ICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsIG51bGxwdHIsICp2ZXJ0ZXhTaGFk
ZXJFbnRyeVBvaW50SXRlbXMsIEVudHJ5UG9pbnRJdGVtcygpLCAqdmVydGV4U2hhZGVyUmVzb3Vy
Y2VNYXAsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4oKSwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1
dGVzLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PigpIH19OwotCi0gICAg
YXV0byBmcmFnbWVudE5hbWVTcGFjZSA9IGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIgPyBBU1Q6Ok5h
bWVTcGFjZTo6TmFtZVNwYWNlMiA6IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOwotICAgIGF1
dG8gZnJhZ21lbnRGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25z
KHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudEVudHJ5UG9pbnROYW1lLCBmcmFnbWVu
dE5hbWVTcGFjZSk7Ci0gICAgaWYgKGZyYWdtZW50RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFm
cmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbj4oZnJhZ21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA9
IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1swXS5n
ZXQoKSk7Ci0gICAgYXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVu
dHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFkZXJFbnRyeVBv
aW50KTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCA9
IG1hdGNoUmVzb3VyY2VzKGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpGcmFnbWVudCk7Ci0g
ICAgaWYgKCFmcmFnbWVudFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGlmICghbWF0Y2hJbnB1dHNPdXRwdXRzKHZlcnRleFNoYWRlckVudHJ5UG9p
bnRJdGVtcy0+b3V0cHV0cywgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cykp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBtYXRjaGVkQ29sb3JBdHRh
Y2htZW50cyA9IG1hdGNoQ29sb3JBdHRhY2htZW50cyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJ
dGVtcy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVE
ZXNjcmlwdG9yLmF0dGFjaG1lbnREZXNjcmlwdG9ycywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwot
ICAgIGlmICghbWF0Y2hlZENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFtYXRjaERlcHRoQXR0YWNobWVudChmcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRz
U3RhdGVEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBwcm9ncmFt
LmludHJpbnNpY3MoKSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IHt7ICZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50LCAmZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50LCAq
dmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCAqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRl
bXMsICp2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgKmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAs
ICptYXRjaGVkVmVydGV4QXR0cmlidXRlcywgKm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzIH19Owot
fQotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGlj
cyhQcm9ncmFtJiBwcm9ncmFtLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKQotewotICAgIGF1dG8gZnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29u
dGV4dCgpLmdldEZ1bmN0aW9ucyhjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmVudHJ5UG9pbnRO
YW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7Ci0gICAgaWYgKGZ1bmN0aW9ucy5zaXpl
KCkgIT0gMSB8fCAhZnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8mIGVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKTsKLSAgICBhdXRvIGVudHJ5UG9p
bnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZW50
cnlQb2ludCk7Ci0gICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgQVNTRVJUKGVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cy5pc0VtcHR5KCkp
OwotICAgIGF1dG8gcmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyhlbnRyeVBvaW50SXRlbXMt
PmlucHV0cywgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpD
b21wdXRlKTsKLSAgICBpZiAoIXJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIHJldHVybiB7eyAmZW50cnlQb2ludCwgKmVudHJ5UG9pbnRJdGVtcywgKnJlc291
cmNlTWFwIH19OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNo
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiZjZjNjczZDNkZWI2YzdmYzFm
MzIzOWVhOGIwZmQwYTMyNzg3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFu
dGljTWF0Y2hlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAi
V0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCIKLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotc3RydWN0IE1hdGNo
ZWRSZW5kZXJTZW1hbnRpY3MgewotICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiB2ZXJ0ZXhT
aGFkZXI7Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIGZyYWdtZW50U2hhZGVyOwotICAg
IEVudHJ5UG9pbnRJdGVtcyB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXM7Ci0gICAgRW50cnlQ
b2ludEl0ZW1zIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8Qmlu
ZGluZyosIHNpemVfdD4gdmVydGV4U2hhZGVyUmVzb3VyY2VNYXA7Ci0gICAgSGFzaE1hcDxCaW5k
aW5nKiwgc2l6ZV90PiBmcmFnbWVudFNoYWRlclJlc291cmNlTWFwOwotICAgIEhhc2hNYXA8VmVy
dGV4QXR0cmlidXRlKiwgc2l6ZV90PiBtYXRjaGVkVmVydGV4QXR0cmlidXRlczsKLSAgICBIYXNo
TWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiBtYXRjaGVkQ29sb3JBdHRhY2htZW50
czsKLX07Ci0KLXN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1h
bnRpY3MoUHJvZ3JhbSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIGJvb2wgZGlzdGluY3RG
cmFnbWVudFNoYWRlciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7Ci0KLXN0cnVjdCBNYXRj
aGVkQ29tcHV0ZVNlbWFudGljcyB7Ci0gICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHNoYWRl
cjsKLSAgICBFbnRyeVBvaW50SXRlbXMgZW50cnlQb2ludEl0ZW1zOwotICAgIEhhc2hNYXA8Qmlu
ZGluZyosIHNpemVfdD4gcmVzb3VyY2VNYXA7Ci19OwotCi1zdGQ6Om9wdGlvbmFsPE1hdGNoZWRD
b21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciYpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGli
cmFyeS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4N2MwNTYyMjY3YTdiYmMx
ZDViNGRiOWI4OTM5ZjVkZjcwMWFhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
dGFuZGFyZExpYnJhcnkudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTgwMDMgKzAsMCBAQAotLy8g
VGhpcyB3YXMgYXV0b2dlbmVyYXRlZCBmcm9tIEdlbmVyYXRlX1N0YW5kYXJkX0xpYnJhcnkuanMu
Ci0vLyBUaGlzIHN0YW5kYXJkIGxpYnJhcnkgaGFzIGJlZW4gcHJvY2Vzc2VkIHN1Y2ggdGhhdCBm
dW5jdGlvbnMgd2hpY2ggc2hhcmUgYSBuYW1lIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXIsCi0vLyBh
bmQgYmVmb3JlIGVhY2ggZ3JvdXAgb2YgZnVuY3Rpb25zLCB0aGVyZSdzIGEgcHJlZml4IHRoYXQg
aGFzIHRvIGJlIGluIGEgcGFydGljdWxhciBmb3JtLgotLy8gVGhlIFdlYktpdCBidWlsZCBwcm9j
ZXNzIGV4cGxvaXRzIHRoaXMgc3RydWN0dXJlIHRvIGJ1aWxkIGEgbWFwIG9mIHdoaWNoIGZ1bmN0
aW9uIG5hbWUgY29ycmVzcG9uZHMgdG8gd2hpY2gKLS8vIHBhcnQgb2YgdGhpcyBmaWxlLiBUaGVu
LCB3aGVuIHdlIHBhcnNlIFdITFNMIHByb2dyYW1zLCB3ZSBjYW4gb25seSBwYXJzZSB0aGUgcGll
Y2VzIG9mIHRoaXMgc3RhbmRhcmQgbGlicmFyeQotLy8gd2hpY2ggY29ycmVzcG9uZCB0byBmdW5j
dGlvbnMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZCBpbiB0aGUgdXNlciBwcm9ncmFtLgotCi1uYXRp
dmUgdHlwZWRlZiB2b2lkOwotbmF0aXZlIHR5cGVkZWYgYm9vbDsKLW5hdGl2ZSB0eXBlZGVmIHVp
bnQ7Ci1uYXRpdmUgdHlwZWRlZiBpbnQ7Ci1uYXRpdmUgdHlwZWRlZiBmbG9hdDsKLW5hdGl2ZSB0
eXBlZGVmIGF0b21pY19pbnQ7Ci1uYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKLW5hdGl2ZSB0
eXBlZGVmIHZlY3Rvcjxib29sLCAyPjsKLXR5cGVkZWYgYm9vbDIgPSB2ZWN0b3I8Ym9vbCwgMj47
Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgMz47Ci10eXBlZGVmIGJvb2wzID0gdmVjdG9y
PGJvb2wsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDQ+OwotdHlwZWRlZiBib29s
NCA9IHZlY3Rvcjxib29sLCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAyPjsKLXR5
cGVkZWYgdWludDIgPSB2ZWN0b3I8dWludCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWlu
dCwgMz47Ci10eXBlZGVmIHVpbnQzID0gdmVjdG9yPHVpbnQsIDM+OwotbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPHVpbnQsIDQ+OwotdHlwZWRlZiB1aW50NCA9IHZlY3Rvcjx1aW50LCA0PjsKLW5hdGl2
ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDI+OwotdHlwZWRlZiBpbnQyID0gdmVjdG9yPGludCwgMj47
Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCAzPjsKLXR5cGVkZWYgaW50MyA9IHZlY3Rvcjxp
bnQsIDM+OwotbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgND47Ci10eXBlZGVmIGludDQgPSB2
ZWN0b3I8aW50LCA0PjsKLW5hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMj47Ci10eXBlZGVm
IGZsb2F0MiA9IHZlY3RvcjxmbG9hdCwgMj47Ci1uYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQs
IDM+OwotdHlwZWRlZiBmbG9hdDMgPSB2ZWN0b3I8ZmxvYXQsIDM+OwotbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPGZsb2F0LCA0PjsKLXR5cGVkZWYgZmxvYXQ0ID0gdmVjdG9yPGZsb2F0LCA0PjsKLQot
bmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAyLCAyPjsKLXR5cGVkZWYgZmxvYXQyeDIgPSBt
YXRyaXg8ZmxvYXQsIDIsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAyLCAzPjsK
LXR5cGVkZWYgZmxvYXQyeDMgPSBtYXRyaXg8ZmxvYXQsIDIsIDM+OwotbmF0aXZlIHR5cGVkZWYg
bWF0cml4PGZsb2F0LCAyLCA0PjsKLXR5cGVkZWYgZmxvYXQyeDQgPSBtYXRyaXg8ZmxvYXQsIDIs
IDQ+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAzLCAyPjsKLXR5cGVkZWYgZmxvYXQz
eDIgPSBtYXRyaXg8ZmxvYXQsIDMsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCAz
LCAzPjsKLXR5cGVkZWYgZmxvYXQzeDMgPSBtYXRyaXg8ZmxvYXQsIDMsIDM+OwotbmF0aXZlIHR5
cGVkZWYgbWF0cml4PGZsb2F0LCAzLCA0PjsKLXR5cGVkZWYgZmxvYXQzeDQgPSBtYXRyaXg8Zmxv
YXQsIDMsIDQ+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCAyPjsKLXR5cGVkZWYg
ZmxvYXQ0eDIgPSBtYXRyaXg8ZmxvYXQsIDQsIDI+OwotbmF0aXZlIHR5cGVkZWYgbWF0cml4PGZs
b2F0LCA0LCAzPjsKLXR5cGVkZWYgZmxvYXQ0eDMgPSBtYXRyaXg8ZmxvYXQsIDQsIDM+OwotbmF0
aXZlIHR5cGVkZWYgbWF0cml4PGZsb2F0LCA0LCA0PjsKLXR5cGVkZWYgZmxvYXQ0eDQgPSBtYXRy
aXg8ZmxvYXQsIDQsIDQ+OwotCi1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMiwgMj47Ci10
eXBlZGVmIGJvb2wyeDIgPSBtYXRyaXg8Ym9vbCwgMiwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRy
aXg8Ym9vbCwgMiwgMz47Ci10eXBlZGVmIGJvb2wyeDMgPSBtYXRyaXg8Ym9vbCwgMiwgMz47Ci1u
YXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMiwgND47Ci10eXBlZGVmIGJvb2wyeDQgPSBtYXRy
aXg8Ym9vbCwgMiwgND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywgMj47Ci10eXBl
ZGVmIGJvb2wzeDIgPSBtYXRyaXg8Ym9vbCwgMywgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8
Ym9vbCwgMywgMz47Ci10eXBlZGVmIGJvb2wzeDMgPSBtYXRyaXg8Ym9vbCwgMywgMz47Ci1uYXRp
dmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgMywgND47Ci10eXBlZGVmIGJvb2wzeDQgPSBtYXRyaXg8
Ym9vbCwgMywgND47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgMj47Ci10eXBlZGVm
IGJvb2w0eDIgPSBtYXRyaXg8Ym9vbCwgNCwgMj47Ci1uYXRpdmUgdHlwZWRlZiBtYXRyaXg8Ym9v
bCwgNCwgMz47Ci10eXBlZGVmIGJvb2w0eDMgPSBtYXRyaXg8Ym9vbCwgNCwgMz47Ci1uYXRpdmUg
dHlwZWRlZiBtYXRyaXg8Ym9vbCwgNCwgND47Ci10eXBlZGVmIGJvb2w0eDQgPSBtYXRyaXg8Ym9v
bCwgNCwgND47Ci0KLW5hdGl2ZSB0eXBlZGVmIHNhbXBsZXI7Ci1uYXRpdmUgdHlwZWRlZiBUZXh0
dXJlMUQ8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8dWludDI+OwotbmF0aXZlIHR5
cGVkZWYgVGV4dHVyZTFEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDx1aW50ND47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMUQ8aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUx
RDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUxRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxmbG9hdD47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMUQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxRDxm
bG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlMURBcnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVp
bnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PHVpbnQzPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUxREFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5
PGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxpbnQyPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUxREFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJyYXk8
aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdD47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlMURBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTFEQXJy
YXk8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUxREFycmF5PGZsb2F0ND47Ci1uYXRp
dmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8dWlu
dDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUyRDx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8aW50PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUyRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQzPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyRDxpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUy
RDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkQ8ZmxvYXQyPjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmUyRDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTJEPGZsb2F0ND47
Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTx1aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUyREFycmF5PHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQz
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PHVpbnQ0PjsKLW5hdGl2ZSB0eXBlZGVm
IFRleHR1cmUyREFycmF5PGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxpbnQy
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5PGludDM+OwotbmF0aXZlIHR5cGVkZWYg
VGV4dHVyZTJEQXJyYXk8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9h
dD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlMkRBcnJheTxmbG9hdDI+OwotbmF0aXZlIHR5cGVk
ZWYgVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUyREFycmF5
PGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8dWludD47Ci1uYXRpdmUgdHlwZWRl
ZiBUZXh0dXJlM0Q8dWludDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZTNEPHVpbnQzPjsKLW5h
dGl2ZSB0eXBlZGVmIFRleHR1cmUzRDx1aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8
aW50PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRl
eHR1cmUzRDxpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxpbnQ0PjsKLW5hdGl2ZSB0
eXBlZGVmIFRleHR1cmUzRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlM0Q8ZmxvYXQy
PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmUzRDxmbG9hdDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZTNEPGZsb2F0ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTx1aW50PjsKLW5hdGl2
ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQyPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJl
PHVpbnQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPHVpbnQ0PjsKLW5hdGl2ZSB0eXBl
ZGVmIFRleHR1cmVDdWJlPGludD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxpbnQyPjsK
LW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGludDM+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVy
ZUN1YmU8aW50ND47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdD47Ci1uYXRpdmUg
dHlwZWRlZiBUZXh0dXJlQ3ViZTxmbG9hdDI+OwotbmF0aXZlIHR5cGVkZWYgVGV4dHVyZUN1YmU8
ZmxvYXQzPjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVDdWJlPGZsb2F0ND47Ci1uYXRpdmUgdHlw
ZWRlZiBUZXh0dXJlRGVwdGgyRDxmbG9hdD47Ci1uYXRpdmUgdHlwZWRlZiBUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PjsKLW5hdGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+Owot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgcmV2ZXJzZWJpdHMgKi8KLXVpbnQgcmV2ZXJzZWJpdHModWlu
dCB4KSB7Ci0gICAgcmV0dXJuIHVpbnQoKCh4ICYgdWludCgxIDw8IDApKSA8PCAzMSkgfAotICAg
ICAgICAgICAoKHggJiB1aW50KDEgPDwgMSkpIDw8IDI5KSB8Ci0gICAgICAgICAgICgoeCAmIHVp
bnQoMSA8PCAyKSkgPDwgMjcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8IDMpKSA8PCAy
NSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNCkpIDw8IDIzKSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCA1KSkgPDwgMjEpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgxIDw8
IDYpKSA8PCAxOSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgNykpIDw8IDE3KSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCA4KSkgPDwgMTUpIHwKLSAgICAgICAgICAgKCh4ICYg
dWludCgxIDw8IDkpKSA8PCAxMykgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTApKSA8
PCAxMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTEpKSA8PCA5KSB8Ci0gICAgICAg
ICAgICgoeCAmIHVpbnQoMSA8PCAxMikpIDw8IDcpIHwKLSAgICAgICAgICAgKCh4ICYgdWludCgx
IDw8IDEzKSkgPDwgNSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTQpKSA8PCAzKSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxNSkpIDw8IDEpIHwKLSAgICAgICAgICAgKCh4
ICYgdWludCgxIDw8IDE2KSkgPj4gMSkgfAotICAgICAgICAgICAoKHggJiB1aW50KDEgPDwgMTcp
KSA+PiAzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAxOCkpID4+IDUpIHwKLSAgICAg
ICAgICAgKCh4ICYgdWludCgxIDw8IDE5KSkgPj4gNykgfAotICAgICAgICAgICAoKHggJiB1aW50
KDEgPDwgMjApKSA+PiA5KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMSkpID4+IDEx
KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyMikpID4+IDEzKSB8Ci0gICAgICAgICAg
ICgoeCAmIHVpbnQoMSA8PCAyMykpID4+IDE1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8
PCAyNCkpID4+IDE3KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNSkpID4+IDE5KSB8
Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyNikpID4+IDIxKSB8Ci0gICAgICAgICAgICgo
eCAmIHVpbnQoMSA8PCAyNykpID4+IDIzKSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAy
OCkpID4+IDI1KSB8Ci0gICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAyOSkpID4+IDI3KSB8Ci0g
ICAgICAgICAgICgoeCAmIHVpbnQoMSA8PCAzMCkpID4+IDI5KSB8Ci0gICAgICAgICAgICgoeCAm
IHVpbnQoMSA8PCAzMSkpID4+IDMxKSk7Ci19Ci11aW50MiByZXZlcnNlYml0cyh1aW50MiB4KSB7
Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRzKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci11aW50MyByZXZlcnNlYml0cyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJldmVyc2ViaXRz
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50NCByZXZlcnNlYml0cyh1aW50NCB4KSB7Ci0gICAgdWludDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHJldmVyc2ViaXRzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJl
dmVyc2ViaXRzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJldmVyc2ViaXRzKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IHJldmVyc2ViaXRzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIGlzb3JkZXJlZCAqLwotYm9vbCBpc29yZGVyZWQoZmxvYXQg
eCwgZmxvYXQgeSkgewotICAgIHJldHVybiAoeCA9PSB4KSAmJiAoeSA9PSB5KTsKLX0KLWJvb2wy
IGlzb3JkZXJlZChmbG9hdDIgeCwgZmxvYXQyIHkpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gaXNvcmRlcmVkKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzb3Jk
ZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNvcmRlcmVk
KGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBpc29yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0s
IHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzb3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbDQgaXNvcmRlcmVkKGZsb2F0NCB4LCBmbG9hdDQgeSkgewotICAg
IGJvb2w0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc29yZGVyZWQoeFswXSwgeVswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gaXNvcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlz
b3JkZXJlZCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc29yZGVyZWQoeFszXSwgeVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHRyYW5zcG9z
ZSAqLwotZmxvYXQgdHJhbnNwb3NlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0
MngyIHRyYW5zcG9zZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRyYW5zcG9zZShmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdID0geFswXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3Vs
dFswXVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1
bHRbMl1bMV0gPSB4WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiB0cmFu
c3Bvc2UoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSB4WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJd
WzBdID0geFswXVsyXTsKLSAgICByZXN1bHRbM11bMF0gPSB4WzBdWzNdOwotICAgIHJlc3VsdFsw
XVsxXSA9IHhbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB4WzFdWzJdOwotICAgIHJlc3VsdFszXVsxXSA9IHhbMV1bM107Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIHRyYW5zcG9zZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQy
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ID0geFswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSB4WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0cmFuc3Bvc2Uo
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4
WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHhbMF1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0g
eFswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9
IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geFsxXVsyXTsKLSAgICByZXN1bHRbMF1bMl0g
PSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJd
ID0geFsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdHJhbnNwb3NlKGZs
b2F0M3g0IHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFsw
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhb
MF1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0geFswXVszXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0g
eFsxXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSB4WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9
IHhbMl1bMF07Ci0gICAgcmVzdWx0WzFdWzJdID0geFsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0g
PSB4WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IHhbMl1bM107Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IHRyYW5zcG9zZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSA9IHhb
MV1bMV07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsyXVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4
WzJdWzFdOwotICAgIHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0g
eFszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdHJhbnNwb3NlKGZsb2F0
NHgzIHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzBdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IHhbMF1b
Ml07Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFd
WzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0geFsy
XVswXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IHhb
Ml1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0geFszXVswXTsKLSAgICByZXN1bHRbMV1bM10gPSB4
WzNdWzFdOwotICAgIHJlc3VsdFsyXVszXSA9IHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IHRyYW5zcG9zZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geFswXVsx
XTsKLSAgICByZXN1bHRbMl1bMF0gPSB4WzBdWzJdOwotICAgIHJlc3VsdFszXVswXSA9IHhbMF1b
M107Ci0gICAgcmVzdWx0WzBdWzFdID0geFsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFd
WzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMV1bMl07Ci0gICAgcmVzdWx0WzNdWzFdID0geFsx
XVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4WzJdWzBdOwotICAgIHJlc3VsdFsxXVsyXSA9IHhb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzJdID0geFsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0gPSB4
WzJdWzNdOwotICAgIHJlc3VsdFswXVszXSA9IHhbM11bMF07Ci0gICAgcmVzdWx0WzFdWzNdID0g
eFszXVsxXTsKLSAgICByZXN1bHRbMl1bM10gPSB4WzNdWzJdOwotICAgIHJlc3VsdFszXVszXSA9
IHhbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
SW50ZXJsb2NrZWRBZGQgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFk
ZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRBZGQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBkZXZpY2Ug
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZChkZXZp
Y2UgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWQgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBh
dG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZEFkZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZEFkZCh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHRocmVh
ZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKHRocmVhZGdyb3VwIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
c2F0dXJhdGUgKi8KLWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gY2xhbXAo
eCwgMCwgMSk7Ci19Ci1mbG9hdDIgc2F0dXJhdGUoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNh
dHVyYXRlKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgc2F0dXJhdGUoZmxv
YXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNh
dHVyYXRlKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc2F0dXJhdGUoZmxv
YXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNhdHVyYXRlKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHNhdHVyYXRlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNh
dHVyYXRlKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHNhdHVyYXRlKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzYXR1cmF0ZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVy
YXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBzYXR1cmF0ZShmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBz
YXR1cmF0ZShmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3Vs
dFszXVswXSA9IHNhdHVyYXRlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVy
YXRlKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzYXR1cmF0ZShm
bG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNh
dHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MyBzYXR1cmF0ZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRl
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVy
YXRlKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBzYXR1cmF0ZShm
bG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNh
dHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHNhdHVyYXRlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzYXR1cmF0ZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVy
YXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNh
dHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4NCBzYXR1cmF0ZShmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHNhdHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHNhdHVyYXRlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNhdHVyYXRlKHhb
Ml1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRl
KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IHNhdHVyYXRlKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNhdHVy
YXRlKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzYXR1cmF0ZShm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNh
dHVyYXRlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNhdHVyYXRlKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHNhdHVyYXRlKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IHNhdHVyYXRlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNhdHVyYXRlKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHNhdHVyYXRlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHNhdHVyYXRlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNhdHVyYXRlKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNhdHVyYXRlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHNhdHVyYXRlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNhdHVyYXRlKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHNhdHVyYXRlKHhbM11bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHNhdHVyYXRlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNhdHVyYXRl
KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNhdHVyYXRlKHhbMl1bM10pOwotICAgIHJl
c3VsdFszXVszXSA9IHNhdHVyYXRlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBtYWQgKi8KLQotZmxvYXQgbWFkKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopIHsKLSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIG1hZChmbG9hdDIg
eCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBtYWQoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWFkKHhbMV0sIHlb
MV0sIHpbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWFkKGZsb2F0MyB4LCBm
bG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IG1hZCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwg
elsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWFkKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgbWFkKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxvYXQ0IHopIHsK
LSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1hZCh4WzBdLCB5WzBdLCB6WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBtYWQoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWFkKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IG1hZCh4WzNdLCB5WzNd
LCB6WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbWFkKGZsb2F0MngyIHgs
IGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFk
KHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBtYWQoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVswXSwgeVswXVswXSwgelsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDIgbWFkKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsK
LSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsy
XVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWFkKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IG1hZCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQyeDMgbWFkKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBd
LCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIG1hZChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5LCBmbG9h
dDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1hZCh4
WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYWQoeFsxXVsw
XSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFkKHhbMl1bMF0sIHlb
Ml1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1hZCh4WzBdWzFdLCB5WzBdWzFd
LCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYWQoeFsxXVsxXSwgeVsxXVsxXSwgelsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWFkKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gbWFkKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtYWQoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMg
eikgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtYWQoeFswXVsw
XSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWFkKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1hZCh4WzJdWzBdLCB5WzJdWzBd
LCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtYWQoeFszXVswXSwgeVszXVswXSwgelsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gbWFkKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWFk
KHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IG1hZCh4WzNd
WzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQg
bWFkKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IG1hZCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBtYWQoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFk
KHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFd
WzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQg
bWFkKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWFkKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IG1hZCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBtYWQoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbWFkKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IG1hZCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBtYWQoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFk
KHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFd
WzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwg
eVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWFkKHhbMF1bM10sIHlbMF1b
M10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1hZCh4WzFdWzNdLCB5WzFdWzNdLCB6
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtYWQoeFsyXVszXSwgeVsyXVszXSwgelsyXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1hZChmbG9hdDR4NCB4LCBmbG9h
dDR4NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IG1hZCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtYWQoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWFk
KHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1hZCh4WzNd
WzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYWQoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbWFkKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1hZCh4WzJdWzFdLCB5WzJdWzFdLCB6
WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYWQoeFszXVsxXSwgeVszXVsxXSwgelszXVsx
XSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWFkKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IG1hZCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtYWQoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gbWFkKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IG1hZCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBt
YWQoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWFkKHhb
Ml1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IG1hZCh4WzNdWzNd
LCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBtb2RmICovCi0KLWZsb2F0IG1vZGYoZmxvYXQgeCwgdGhyZWFkIGZsb2F0KiBp
cCkgewotICAgIHVpbnQgcmVzdWx0ID0gdWludCh4KTsKLSAgICAqaXAgPSB4IC0gZmxvYXQocmVz
dWx0KTsKLSAgICByZXR1cm4gZmxvYXQocmVzdWx0KTsKLX0KLWZsb2F0MiBtb2RmKGZsb2F0MiB4
LCB0aHJlYWQgZmxvYXQyKiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgs
IHRocmVhZCBmbG9hdDMqIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG1vZGYoZmxvYXQ0
IHgsIHRocmVhZCBmbG9hdDQqIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF0gPSBtb2RmKHhbMF0sICZidWZmZXIpOwotICAgICgqeSlbMF0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdID0gbW9kZih4WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXSA9IG1vZGYoeFsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM10gPSBtb2RmKHhbM10sICZidWZmZXIpOwot
ICAgICgqeSlbM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1v
ZGYoZmxvYXQyeDIgeCwgdGhyZWFkIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9k
Zih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYoZmxv
YXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAg
IGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsw
XSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDIgbW9kZihmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHkpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IG1vZGYoZmxvYXQyeDMgeCwgdGhyZWFkIGZsb2F0MngzKiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYo
eFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHkp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFsw
XVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0g
PSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9k
Zih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtb2RmKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4Myog
eSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsx
XSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBt
b2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0Mng0IG1vZGYoZmxvYXQyeDQgeCwgdGhyZWFkIGZsb2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhb
MF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2Rm
KGZsb2F0M3g0IHgsIHRocmVhZCBmbG9hdDN4NCogeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYo
eFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1b
MV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9
IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAg
ICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4WzBdWzNdLCAm
YnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVszXSA9IG1v
ZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1bM10gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG1vZGYoZmxvYXQ0eDQgeCwgdGhy
ZWFkIGZsb2F0NHg0KiB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlb
MF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsy
XVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11b
MF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0g
bW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzJdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsyXSA9IG1vZGYo
eFszXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsyXVszXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bM10gPSBtb2RmKHhbM11b
M10sICZidWZmZXIpOwotICAgICgqeSlbM11bM10gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotCi1mbG9hdCBtb2RmKGZsb2F0IHgsIGRldmljZSBmbG9hdCogaXApIHsKLSAgICB1
aW50IHJlc3VsdCA9IHVpbnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAg
cmV0dXJuIGZsb2F0KHJlc3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgZGV2aWNlIGZs
b2F0MiogeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJl
c3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZmZXI7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtb2RmKGZsb2F0MyB4LCBkZXZpY2UgZmxv
YXQzKiB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBidWZm
ZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBtb2RmKGZsb2F0NCB4LCBkZXZpY2Ug
ZmxvYXQ0KiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAg
cmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgqeSlbMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
ID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2RmKGZsb2F0Mngy
IHgsIGRldmljZSBmbG9hdDJ4MiogeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICBmbG9h
dCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBt
b2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVm
ZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBtb2RmKGZsb2F0M3gyIHgsIGRl
dmljZSBmbG9hdDN4MiogeSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhb
Ml1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IG1vZGYoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhbM11bMF0sICZidWZmZXIpOwotICAgICgq
eSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYo
eFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
Ml1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNd
WzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0
MngzIHgsIGRldmljZSBmbG9hdDJ4MyogeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICBm
bG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gzIG1vZGYoZmxvYXQzeDMgeCwgZGV2aWNlIGZsb2F0M3gzKiB5KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2Rm
KHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsy
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIp
OwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFd
WzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsx
XSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgbW9kZihmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHkpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1v
ZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVszXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhb
MF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFd
WzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbM11bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9
IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzNdWzJdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2Rm
KGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYo
eFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFd
WzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFswXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMl0gPSBtb2RmKHhbMV1b
Ml0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gbW9kZih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9
IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbW9kZihmbG9hdDN4NCB4
LCBkZXZpY2UgZmxvYXQzeDQqIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgZmxvYXQg
YnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhbMV1bMF0sICZi
dWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzBdID0gbW9k
Zih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlb
MV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsyXSA9IG1vZGYoeFsw
XVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1b
Ml0gPSBtb2RmKHhbMV1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMl0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gbW9kZih4WzJdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzJd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVszXSA9IG1vZGYoeFswXVszXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVszXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bM10gPSBtb2RmKHhbMV1bM10s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzNdID0g
bW9kZih4WzJdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzNdID0gYnVmZmVyOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtb2RmKGZsb2F0NHg0IHgsIGRldmljZSBmbG9hdDR4
NCogeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4
WzNdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsw
XVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1b
MV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsx
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0g
PSBtb2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9k
Zih4WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsxXVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlb
Ml1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
ZmxvYXQgbW9kZihmbG9hdCB4LCB0aHJlYWRncm91cCBmbG9hdCogaXApIHsKLSAgICB1aW50IHJl
c3VsdCA9IHVpbnQoeCk7Ci0gICAgKmlwID0geCAtIGZsb2F0KHJlc3VsdCk7Ci0gICAgcmV0dXJu
IGZsb2F0KHJlc3VsdCk7Ci19Ci1mbG9hdDIgbW9kZihmbG9hdDIgeCwgdGhyZWFkZ3JvdXAgZmxv
YXQyKiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0gYnVmZmVyOwotICAg
IHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXSA9IGJ1ZmZlcjsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1vZGYoZmxvYXQzIHgsIHRocmVhZGdyb3Vw
IGZsb2F0MyogeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAg
IHJlc3VsdFswXSA9IG1vZGYoeFswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMV0gPSBtb2RmKHhbMV0sICZidWZmZXIpOwotICAgICgqeSlbMV0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzJdID0gbW9kZih4WzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdID0g
YnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbW9kZihmbG9hdDQgeCwgdGhy
ZWFkZ3JvdXAgZmxvYXQ0KiB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZm
ZXI7Ci0gICAgcmVzdWx0WzBdID0gbW9kZih4WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsxXSA9IG1vZGYoeFsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl0gPSBtb2RmKHhbMl0sICZidWZmZXIpOwotICAgICgq
eSlbMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdID0gbW9kZih4WzNdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtb2Rm
KGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVz
dWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0s
ICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0g
bW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJl
c3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgq
eSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG1vZGYo
ZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDIqIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBt
b2RmKHhbMV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzJdWzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4
WzJdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtb2RmKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgy
KiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1
bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZm
ZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkp
WzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMF0gPSBtb2RmKHhb
M11bMF0sICZidWZmZXIpOwotICAgICgqeSlbM11bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBd
WzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsx
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzFdID0gbW9kZih4WzNdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzFdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDJ4MyBtb2RmKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5KSB7
Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1b
MF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMF0gPSBidWZmZXI7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzBd
ID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0g
ICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0s
ICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJl
c3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1
ZmZlcjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbW9kZihmbG9hdDN4MyB4LCB0
aHJlYWRncm91cCBmbG9hdDN4MyogeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBmbG9h
dCBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzBdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBt
b2RmKHhbMl1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbW9kZih4WzBdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzFdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsxXVsxXSA9IG1vZGYoeFsxXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsxXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMV0gPSBtb2RmKHhbMl1bMV0sICZidWZm
ZXIpOwotICAgICgqeSlbMl1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4
WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bMl0gPSBtb2RmKHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1b
Ml0gPSBidWZmZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIG1vZGYoZmxvYXQ0
eDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDMqIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgZmxvYXQgYnVmZmVyOwotICAgIHJlc3VsdFswXVswXSA9IG1vZGYoeFswXVswXSwgJmJ1ZmZl
cik7Ci0gICAgKCp5KVswXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMV1bMF0gPSBtb2RmKHhb
MV1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbW9kZih4WzJdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzJdWzBdID0gYnVmZmVyOwot
ICAgIHJlc3VsdFszXVswXSA9IG1vZGYoeFszXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsw
XSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0gPSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwot
ICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFd
LCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9
IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICBy
ZXN1bHRbM11bMV0gPSBtb2RmKHhbM11bMV0sICZidWZmZXIpOwotICAgICgqeSlbM11bMV0gPSBi
dWZmZXI7Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAo
KnkpWzBdWzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1
ZmZlcik7Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMl0gPSBtb2Rm
KHhbMl1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMl1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0
WzNdWzJdID0gbW9kZih4WzNdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzJdID0gYnVmZmVy
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtb2RmKGZsb2F0Mng0IHgsIHRocmVh
ZGdyb3VwIGZsb2F0Mng0KiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1
ZmZlcjsKLSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgq
eSlbMF1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVm
ZmVyKTsKLSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsxXSA9IG1vZGYo
eFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRb
MV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0gPSBidWZmZXI7
Ci0gICAgcmVzdWx0WzBdWzJdID0gbW9kZih4WzBdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBd
WzJdID0gYnVmZmVyOwotICAgIHJlc3VsdFsxXVsyXSA9IG1vZGYoeFsxXVsyXSwgJmJ1ZmZlcik7
Ci0gICAgKCp5KVsxXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1b
M10sICZidWZmZXIpOwotICAgICgqeSlbMF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gbW9kZih4WzFdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBtb2RmKGZsb2F0M3g0IHgsIHRocmVhZGdyb3Vw
IGZsb2F0M3g0KiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIGZsb2F0IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMF1bMF0gPSBtb2RmKHhbMF1bMF0sICZidWZmZXIpOwotICAgICgqeSlbMF1b
MF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzBdID0gbW9kZih4WzFdWzBdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzFdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVswXSA9IG1vZGYoeFsyXVsw
XSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMV0g
PSBtb2RmKHhbMF1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMV0gPSBidWZmZXI7Ci0gICAg
cmVzdWx0WzFdWzFdID0gbW9kZih4WzFdWzFdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzFdID0g
YnVmZmVyOwotICAgIHJlc3VsdFsyXVsxXSA9IG1vZGYoeFsyXVsxXSwgJmJ1ZmZlcik7Ci0gICAg
KCp5KVsyXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBtb2RmKHhbMF1bMl0sICZi
dWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzJdID0gbW9k
Zih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVmZmVyOwotICAgIHJlc3Vs
dFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVsyXSA9IGJ1ZmZl
cjsKLSAgICByZXN1bHRbMF1bM10gPSBtb2RmKHhbMF1bM10sICZidWZmZXIpOwotICAgICgqeSlb
MF1bM10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzFdWzNdID0gbW9kZih4WzFdWzNdLCAmYnVmZmVy
KTsKLSAgICAoKnkpWzFdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsyXVszXSA9IG1vZGYoeFsy
XVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsyXVszXSA9IGJ1ZmZlcjsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDQgbW9kZihmbG9hdDR4NCB4LCB0aHJlYWRncm91cCBmbG9hdDR4NCog
eSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBmbG9hdCBidWZmZXI7Ci0gICAgcmVzdWx0
WzBdWzBdID0gbW9kZih4WzBdWzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzBdID0gYnVmZmVy
OwotICAgIHJlc3VsdFsxXVswXSA9IG1vZGYoeFsxXVswXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsx
XVswXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMl1bMF0gPSBtb2RmKHhbMl1bMF0sICZidWZmZXIp
OwotICAgICgqeSlbMl1bMF0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzBdID0gbW9kZih4WzNd
WzBdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzNdWzBdID0gYnVmZmVyOwotICAgIHJlc3VsdFswXVsx
XSA9IG1vZGYoeFswXVsxXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVswXVsxXSA9IGJ1ZmZlcjsKLSAg
ICByZXN1bHRbMV1bMV0gPSBtb2RmKHhbMV1bMV0sICZidWZmZXIpOwotICAgICgqeSlbMV1bMV0g
PSBidWZmZXI7Ci0gICAgcmVzdWx0WzJdWzFdID0gbW9kZih4WzJdWzFdLCAmYnVmZmVyKTsKLSAg
ICAoKnkpWzJdWzFdID0gYnVmZmVyOwotICAgIHJlc3VsdFszXVsxXSA9IG1vZGYoeFszXVsxXSwg
JmJ1ZmZlcik7Ci0gICAgKCp5KVszXVsxXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbMF1bMl0gPSBt
b2RmKHhbMF1bMl0sICZidWZmZXIpOwotICAgICgqeSlbMF1bMl0gPSBidWZmZXI7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbW9kZih4WzFdWzJdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzFdWzJdID0gYnVm
ZmVyOwotICAgIHJlc3VsdFsyXVsyXSA9IG1vZGYoeFsyXVsyXSwgJmJ1ZmZlcik7Ci0gICAgKCp5
KVsyXVsyXSA9IGJ1ZmZlcjsKLSAgICByZXN1bHRbM11bMl0gPSBtb2RmKHhbM11bMl0sICZidWZm
ZXIpOwotICAgICgqeSlbM11bMl0gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzBdWzNdID0gbW9kZih4
WzBdWzNdLCAmYnVmZmVyKTsKLSAgICAoKnkpWzBdWzNdID0gYnVmZmVyOwotICAgIHJlc3VsdFsx
XVszXSA9IG1vZGYoeFsxXVszXSwgJmJ1ZmZlcik7Ci0gICAgKCp5KVsxXVszXSA9IGJ1ZmZlcjsK
LSAgICByZXN1bHRbMl1bM10gPSBtb2RmKHhbMl1bM10sICZidWZmZXIpOwotICAgICgqeSlbMl1b
M10gPSBidWZmZXI7Ci0gICAgcmVzdWx0WzNdWzNdID0gbW9kZih4WzNdWzNdLCAmYnVmZmVyKTsK
LSAgICAoKnkpWzNdWzNdID0gYnVmZmVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyog
RnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkTWluICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tl
ZE1pbihkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRl
dmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1pbihkZXZpY2UgYXRvbWljX2lu
dCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oZGV2aWNl
IGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNaW4oZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAg
YXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRN
aW4odGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNl
IGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4odGhyZWFkZ3JvdXAgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1p
bih0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIGxlbmd0aCAqLwotbmF0aXZlIGZsb2F0IGxlbmd0aChmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0Myk7
Ci1uYXRpdmUgZmxvYXQgbGVuZ3RoKGZsb2F0NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVy
YXRvci0tICovCi11aW50IG9wZXJhdG9yLS0odWludCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1
ZSAtIDE7Ci19Ci1pbnQgb3BlcmF0b3ItLShpbnQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUg
LSAxOwotfQotZmxvYXQgb3BlcmF0b3ItLShmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiB2YWx1
ZSAtIDE7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRvcjw8ICovCi1uYXRpdmUgaW50
IG9wZXJhdG9yPDwoaW50LCB1aW50KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCwgdWlu
dCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBleHAyICovCi1mbG9hdCBleHAyKGZsb2F0IHgpIHsK
LSAgICByZXR1cm4gZXhwKHggKiBsb2coZmxvYXQoMikpKTsKLX0KLWZsb2F0MiBleHAyKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBleHAyKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBleHAyKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBl
eHAyKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cDIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
ZXhwMih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGV4cDIoZmxvYXQ0IHgp
IHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cDIoeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZXhwMih4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBleHAyKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IGV4cDIoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGV4cDIoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAy
KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAyKGZsb2F0M3gy
IHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cDIo
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGV4cDIoZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZXhwMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBleHAyKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGV4cDIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGV4cDIoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGV4
cDIoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZXhw
MihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwMih4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGV4cDIoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBleHAyKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAy
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBleHAyKGZsb2F0NHgz
IHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwMih4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGV4cDIoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwMih4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGV4cDIo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBleHAyKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4cDIoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBl
eHAyKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cDIoeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGV4cDIoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4
cDIoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZXhwMih4WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsxXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGV4cDIoZmxvYXQzeDQgeCkgewot
ICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAyKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGV4cDIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhw
Mih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAyKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGV4cDIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwMih4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGV4cDIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBleHAyKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cDIoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZXhwMih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDQgZXhwMihmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGV4cDIoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZXhwMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAyKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGV4cDIoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwMih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGV4cDIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwMih4WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBleHAyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cDIo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZXhwMih4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBleHAyKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGV4cDIoeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gZXhwMih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBl
eHAyKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGV4cDIoeFszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGlzdW5vcmRlcmVkICovCi0KLWJv
b2wgaXN1bm9yZGVyZWQoZmxvYXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiBpc25hbih4KSB8
fCBpc25hbih5KTsKLX0KLWJvb2wyIGlzdW5vcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSkgewot
ICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBpc3Vub3JkZXJlZCh4WzBdLCB5WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBpc3Vub3JkZXJlZCh4WzFdLCB5WzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbDMgaXN1bm9yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAg
Ym9vbDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzdW5vcmRlcmVkKHhbMF0sIHlbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGlzdW5vcmRlcmVkKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGlzdW5vcmRlcmVkKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sNCBp
c3Vub3JkZXJlZChmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gaXN1bm9yZGVyZWQoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXN1
bm9yZGVyZWQoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXN1bm9yZGVyZWQoeFsyXSwg
eVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXN1bm9yZGVyZWQoeFszXSwgeVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGF0YW4gKi8KLW5hdGl2ZSBmbG9h
dCBhdGFuKGZsb2F0KTsKLWZsb2F0MiBhdGFuKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0YW4oeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhdGFuKGZsb2F0MyB4KSB7Ci0gICAg
ZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGF0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXRhbih4WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGF0YW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGF0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXRhbih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBhdGFuKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGF0YW4oeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGF0YW4oZmxvYXQyeDIgeCkgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MiBhdGFuKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGF0YW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICBy
ZXN1bHRbM11bMF0gPSBhdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBhdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGF0YW4oeFszXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGF0YW4oZmxvYXQyeDMgeCkgewotICAgIGZs
b2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgYXRhbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxv
YXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0YW4oeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGF0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gYXRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRhbih4
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBhdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYXRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGF0YW4oeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gYXRhbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXRh
bih4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IGF0YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IGF0YW4oZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFu
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGF0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gYXRhbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IGF0YW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF1bMF0gPSBhdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGF0YW4o
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBhdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGF0YW4oeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gYXRhbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBh
dGFuKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gYXRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGF0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gYXRhbih4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRhbihm
bG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGF0
YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXRhbih4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBhdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGF0YW4oeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBhdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGF0YW4oeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gYXRhbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGF0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gYXRhbih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFuKHhbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGF0YW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXRh
bih4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFuKHhbMl1bM10pOwotICAgIHJlc3Vs
dFszXVszXSA9IGF0YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIGxvZyAqLwotbmF0aXZlIGZsb2F0IGxvZyhmbG9hdCk7Ci1mbG9hdDIgbG9n
KGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2coeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDMgbG9nKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBsb2coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gbG9nKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGxvZyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZyhmbG9hdDQgeCkg
ewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nKHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IGxvZyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2coeFsyXSk7Ci0gICAgcmVz
dWx0WzNdID0gbG9nKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2co
ZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBs
b2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGxvZyhmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZyh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nKHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2coZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBsb2coeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbG9nKHhbM11bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2coZmxvYXQyeDMgeCkgewotICAgIGZsb2F0
MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9n
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgbG9nKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gbG9nKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2coeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bG9nKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMl1bMl0gPSBsb2coeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IGxvZyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGxvZyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2coeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gbG9nKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZyh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbG9nKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBsb2coeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBsb2coeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbG9nKHhbM11bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBsb2coZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbG9nKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBsb2coeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsb2coZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2coeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gbG9nKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZyh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsb2coeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9n
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZyh4WzJdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBsb2coeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGxvZyh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2co
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbG9nKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGxvZyh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9n
KGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bG9nKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsb2coeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxvZyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBs
b2coeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IGxvZyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2coeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gbG9nKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxv
Zyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2coeFszXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gbG9nKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxvZyh4WzFdWzNdKTsK
LSAgICByZXN1bHRbMl1bM10gPSBsb2coeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbG9n
KHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBM
b2FkICovCi1uYXRpdmUgdWludCBMb2FkKFRleHR1cmUxRDx1aW50PiwgaW50IGxvY2F0aW9uKTsK
LW5hdGl2ZSB1aW50IExvYWQoVGV4dHVyZTFEQXJyYXk8dWludD4sIGludDIgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQgTG9hZChUZXh0dXJlMkQ8dWludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludCBMb2FkKFRleHR1cmUzRDx1aW50PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIg
TG9hZChUZXh0dXJlMUQ8dWludDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQo
VGV4dHVyZTFEQXJyYXk8dWludDI+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2Fk
KFRleHR1cmUyRDx1aW50Mj4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIExvYWQoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBMb2FkKFRl
eHR1cmUzRDx1aW50Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQzIExvYWQoVGV4dHVy
ZTFEPHVpbnQzPiwgaW50IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUxREFy
cmF5PHVpbnQzPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlMkQ8
dWludDM+LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBMb2FkKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDMgTG9hZChUZXh0dXJlM0Q8dWlu
dDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBMb2FkKFRleHR1cmUxRDx1aW50ND4s
IGludCBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMURBcnJheTx1aW50ND4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTJEPHVpbnQ0PiwgaW50
MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgTG9hZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIGlu
dDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IExvYWQoVGV4dHVyZTNEPHVpbnQ0PiwgaW50MyBs
b2NhdGlvbik7Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTFEPGludD4sIGludCBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50IExvYWQoVGV4dHVyZTFEQXJyYXk8aW50PiwgaW50MiBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50IExvYWQoVGV4dHVyZTJEPGludD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGlu
dCBMb2FkKFRleHR1cmUyREFycmF5PGludD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGludCBM
b2FkKFRleHR1cmUzRDxpbnQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4
dHVyZTFEPGludDI+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgTG9hZChUZXh0dXJlMURB
cnJheTxpbnQyPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyRDxp
bnQyPiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50MiBMb2FkKFRleHR1cmUyREFycmF5PGlu
dDI+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQyIExvYWQoVGV4dHVyZTNEPGludDI+LCBp
bnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTFEPGludDM+LCBpbnQgbG9j
YXRpb24pOwotbmF0aXZlIGludDMgTG9hZChUZXh0dXJlMURBcnJheTxpbnQzPiwgaW50MiBsb2Nh
dGlvbik7Ci1uYXRpdmUgaW50MyBMb2FkKFRleHR1cmUyRDxpbnQzPiwgaW50MiBsb2NhdGlvbik7
Ci1uYXRpdmUgaW50MyBMb2FkKFRleHR1cmUyREFycmF5PGludDM+LCBpbnQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBpbnQzIExvYWQoVGV4dHVyZTNEPGludDM+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQ0IExvYWQoVGV4dHVyZTFEPGludDQ+LCBpbnQgbG9jYXRpb24pOwotbmF0aXZlIGludDQg
TG9hZChUZXh0dXJlMURBcnJheTxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBM
b2FkKFRleHR1cmUyRDxpbnQ0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBMb2FkKFRl
eHR1cmUyREFycmF5PGludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQ0IExvYWQoVGV4
dHVyZTNEPGludDQ+LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBMb2FkKFRleHR1cmUx
RDxmbG9hdD4sIGludCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMURBcnJh
eTxmbG9hdD4sIGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTJEPGZs
b2F0PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZTNEPGZsb2F0
PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEPGZsb2F0Mj4s
IGludCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQy
PiwgaW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIExvYWQoVGV4dHVyZTJEPGZsb2F0Mj4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBMb2FkKFRleHR1cmUzRDxmbG9hdDI+
LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMUQ8ZmxvYXQzPiwg
aW50IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMURBcnJheTxmbG9hdDM+
LCBpbnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgTG9hZChUZXh0dXJlMkQ8ZmxvYXQzPiwg
aW50MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgaW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIExvYWQoVGV4dHVyZTNEPGZsb2F0Mz4s
IGludDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxRDxmbG9hdDQ+LCBp
bnQgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUxREFycmF5PGZsb2F0ND4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBMb2FkKFRleHR1cmUyRDxmbG9hdDQ+LCBp
bnQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCBpbnQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgTG9hZChUZXh0dXJlM0Q8ZmxvYXQ0Piwg
aW50MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQgTG9hZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IGludDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IExvYWQoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIGludDMgbG9jYXRpb24pOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc2luICovCi1uYXRp
dmUgZmxvYXQgc2luKGZsb2F0KTsKLWZsb2F0MiBzaW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW4o
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzaW4oZmxvYXQzIHgpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHNpbih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBzaW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgc2luKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gc2luKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IHNpbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBzaW4oeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHNpbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgc2luKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
c2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IHNpbihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbih4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbih4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSBzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIHNpbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gc2luKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBzaW4o
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBz
aW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW4oeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNp
bih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2luKGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzaW4oeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbih4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
c2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbih4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBzaW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IHNpbihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gc2luKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IHNpbihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHNpbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc2luKHhbMl1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBzaW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0
NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gc2luKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNpbih4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBzaW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2lu
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gc2luKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHNpbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzaW4o
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHNpbih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW4oeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gc2luKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbih4
WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzaW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHNpbmNvcyAqLwotdm9pZCBzaW5jb3MoZmxv
YXQgeCwgdGhyZWFkIGZsb2F0KiB5LCB0aHJlYWQgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4
KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWQgZmxv
YXQyKiB5LCB0aHJlYWQgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMg
eCwgdGhyZWFkIGZsb2F0MyogeSwgdGhyZWFkIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgdGhy
ZWFkIGZsb2F0NCogeSwgdGhyZWFkIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZCBmbG9hdDJ4MiogeSwgdGhyZWFk
IGZsb2F0MngyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZs
b2F0M3gyKiB5LCB0aHJlYWQgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0g
ICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgdGhyZWFkIGZsb2F0
NHgyKiB5LCB0aHJlYWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAg
ZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZCBmbG9hdDJ4MyogeSwgdGhyZWFkIGZsb2F0Mngz
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkIGZsb2F0M3gzKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsy
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIHRocmVhZCBmbG9hdDR4
MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZCBmbG9hdDJ4NCogeSwg
dGhyZWFkIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVhZCBmbG9hdDN4NCogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDR4NCB4LCB0aHJlYWQgZmxvYXQ0eDQqIHksIHRocmVhZCBmbG9hdDR4NCogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0IHgsIHRocmVhZCBmbG9hdCogeSwgZGV2aWNlIGZsb2F0KiB6KSB7Ci0gICAg
KnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDIgeCwg
dGhyZWFkIGZsb2F0MiogeSwgZGV2aWNlIGZsb2F0MiogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQzIHgsIHRocmVhZCBmbG9hdDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBm
bG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxv
YXQ0IHgsIHRocmVhZCBmbG9hdDQqIHksIGRldmljZSBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10g
PSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIq
IHksIGRldmljZSBmbG9hdDJ4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gyIHgs
IHRocmVhZCBmbG9hdDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRo
cmVhZCBmbG9hdDR4MiogeSwgZGV2aWNlIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIGRldmlj
ZSBmbG9hdDJ4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MyB4LCB0aHJlYWQgZmxvYXQzeDMqIHksIGRldmljZSBm
bG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJl
YWQgZmxvYXQ0eDMqIHksIGRldmljZSBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQgZmxv
YXQyeDQqIHksIGRldmljZSBmbG9hdDJ4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQzeDQgeCwgdGhyZWFkIGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxvYXQz
eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsy
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkIGZsb2F0NHg0KiB5LCBkZXZpY2UgZmxvYXQ0eDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bM10gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCB0aHJlYWQgZmxvYXQqIHksIHRocmVhZGdyb3VwIGZs
b2F0KiB6KSB7Ci0gICAgKnkgPSBzaW4oeCk7Ci0gICAgKnogPSBjb3MoeCk7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDIgeCwgdGhyZWFkIGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkIGZsb2F0MyogeSwgdGhyZWFk
Z3JvdXAgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCB0aHJlYWQgZmxvYXQ0KiB5LCB0aHJlYWRn
cm91cCBmbG9hdDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNv
cyhmbG9hdDJ4MiB4LCB0aHJlYWQgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0MngyKiB6
KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkIGZsb2F0M3gyKiB5LCB0
aHJlYWRncm91cCBmbG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBj
b3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCB0aHJlYWQgZmxvYXQ0eDIqIHks
IHRocmVhZGdyb3VwIGZsb2F0NHgyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lk
IHNpbmNvcyhmbG9hdDJ4MyB4LCB0aHJlYWQgZmxvYXQyeDMqIHksIHRocmVhZGdyb3VwIGZsb2F0
MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZCBmbG9hdDN4MyogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgdGhyZWFk
IGZsb2F0NHgzKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDJ4NCB4LCB0aHJlYWQg
ZmxvYXQyeDQqIHksIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4NCB4LCB0aHJlYWQgZmxvYXQzeDQqIHksIHRocmVh
ZGdyb3VwIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIHRocmVhZCBmbG9hdDR4NCogeSwgdGhyZWFk
Z3JvdXAgZmxvYXQ0eDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzNdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdCB4LCBkZXZpY2UgZmxvYXQq
IHksIHRocmVhZCBmbG9hdCogeikgewotICAgICp5ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgp
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIGRldmljZSBmbG9hdDIqIHksIHRocmVhZCBmbG9h
dDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5
LCB0aHJlYWQgZmxvYXQzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NCB4LCBkZXZpY2UgZmxvYXQ0KiB5LCB0aHJl
YWQgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDIgeCwgZGV2aWNlIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHopIHsKLSAg
ICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZCBm
bG9hdDN4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci19
Ci12b2lkIHNpbmNvcyhmbG9hdDR4MiB4LCBkZXZpY2UgZmxvYXQ0eDIqIHksIHRocmVhZCBmbG9h
dDR4MiogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsz
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMg
eCwgZGV2aWNlIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwg
ZGV2aWNlIGZsb2F0M3gzKiB5LCB0aHJlYWQgZmxvYXQzeDMqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotfQot
dm9pZCBzaW5jb3MoZmxvYXQ0eDMgeCwgZGV2aWNlIGZsb2F0NHgzKiB5LCB0aHJlYWQgZmxvYXQ0
eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBz
aW5jb3MoZmxvYXQyeDQgeCwgZGV2aWNlIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsy
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIGRldmlj
ZSBmbG9hdDN4NCogeSwgdGhyZWFkIGZsb2F0M3g0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0
OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHg0IHgsIGRldmljZSBmbG9h
dDR4NCogeSwgdGhyZWFkIGZsb2F0NHg0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAg
IGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsz
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzNdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQgeCwgZGV2
aWNlIGZsb2F0KiB5LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAq
eiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZpY2UgZmxvYXQyKiB5LCBk
ZXZpY2UgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDMgeCwgZGV2aWNl
IGZsb2F0MyogeSwgZGV2aWNlIGZsb2F0MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAg
ICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDQgeCwgZGV2aWNlIGZsb2F0
NCogeSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9h
dCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZv
aWQgc2luY29zKGZsb2F0MngyIHgsIGRldmljZSBmbG9hdDJ4MiogeSwgZGV2aWNlIGZsb2F0Mngy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgZGV2aWNlIGZsb2F0M3gyKiB5
LCBkZXZpY2UgZmxvYXQzeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQg
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsx
XVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29z
UmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDIgeCwgZGV2aWNlIGZsb2F0NHgyKiB5LCBk
ZXZpY2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0MngzIHgsIGRldmljZSBmbG9hdDJ4MyogeSwgZGV2aWNlIGZsb2F0MngzKiB6KSB7Ci0g
ICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0M3gzIHgsIGRldmljZSBmbG9hdDN4MyogeSwgZGV2aWNlIGZsb2F0M3gzKiB6KSB7Ci0gICAg
ZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsw
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1b
Ml0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgzIHgsIGRldmljZSBmbG9hdDR4MyogeSwgZGV2
aWNlIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
Ml0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgZGV2aWNlIGZs
b2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVz
dWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4
NCB4LCBkZXZpY2UgZmxvYXQzeDQqIHksIGRldmljZSBmbG9hdDN4NCogeikgewotICAgIGZsb2F0
IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4NCB4LCBk
ZXZpY2UgZmxvYXQ0eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0IHgsIGRldmljZSBmbG9hdCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQqIHopIHsKLSAgICAqeSA9
IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCBkZXZp
Y2UgZmxvYXQyKiB5LCB0aHJlYWRncm91cCBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0MyB4LCBkZXZpY2UgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBmbG9hdDMqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5j
b3MoZmxvYXQ0IHgsIGRldmljZSBmbG9hdDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NCogeikgewot
ICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIGRldmlj
ZSBmbG9hdDJ4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5S
ZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilb
MF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDN4MiB4LCBkZXZpY2UgZmxvYXQzeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0NHgyIHgsIGRldmljZSBmbG9hdDR4MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQ0
eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgs
IGRldmljZSBmbG9hdDJ4MyogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9h
dCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMg
eCwgZGV2aWNlIGZsb2F0M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZs
b2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1
bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCBkZXZpY2UgZmxvYXQ0eDMqIHksIHRocmVh
ZGdyb3VwIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIGRldmljZSBmbG9hdDJ4NCogeSwgdGhyZWFk
Z3JvdXAgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsy
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0M3g0IHgsIGRldmljZSBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0eDQgeCwgZGV2aWNlIGZsb2F0NHg0KiB5LCB0aHJlYWRncm91cCBmbG9hdDR4NCogeikg
ewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
Ml1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsK
LX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCB0aHJlYWQgZmxv
YXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNvcyh4KTsKLX0KLXZvaWQgc2lu
Y29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIHRocmVhZCBmbG9hdDIqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jl
c3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRncm91cCBmbG9hdDMqIHksIHRo
cmVhZCBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhy
ZWFkIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29z
KGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCB0aHJlYWQgZmxvYXQyeDIqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NS
ZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJlYWRncm91cCBmbG9hdDN4Miog
eSwgdGhyZWFkIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
MV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3VwIGZsb2F0NHgy
KiB5LCB0aHJlYWQgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
M11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQg
c2luY29zKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0MngzKiB5LCB0aHJlYWQgZmxvYXQy
eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzeDMqIHksIHRocmVhZCBmbG9h
dDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDR4MyB4LCB0aHJlYWRn
cm91cCBmbG9hdDR4MyogeSwgdGhyZWFkIGZsb2F0NHgzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVz
dWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0Mng0IHgsIHRocmVhZGdy
b3VwIGZsb2F0Mng0KiB5LCB0aHJlYWQgZmxvYXQyeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdyb3VwIGZsb2F0M3g0KiB5LCB0
aHJlYWQgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0
OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRo
cmVhZCBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBmbG9hdCBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVszXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMl0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVszXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzNd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzNdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bM10sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsz
XVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0IHgsIHRocmVhZGdyb3VwIGZs
b2F0KiB5LCBkZXZpY2UgZmxvYXQqIHopIHsKLSAgICAqeSA9IHNpbih4KTsKLSAgICAqeiA9IGNv
cyh4KTsKLX0KLXZvaWQgc2luY29zKGZsb2F0MiB4LCB0aHJlYWRncm91cCBmbG9hdDIqIHksIGRl
dmljZSBmbG9hdDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MyB4LCB0aHJlYWRn
cm91cCBmbG9hdDMqIHksIGRldmljZSBmbG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7
Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdy
b3VwIGZsb2F0NCogeSwgZGV2aWNlIGZsb2F0NCogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXSA9IGNvc1Jlc3Vs
dDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngyIHgsIHRocmVhZGdyb3VwIGZsb2F0MngyKiB5LCBk
ZXZpY2UgZmxvYXQyeDIqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9hdDN4MiB4LCB0aHJl
YWRncm91cCBmbG9hdDN4MiogeSwgZGV2aWNlIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2lu
UmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsyXVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRo
cmVhZGdyb3VwIGZsb2F0NHgyKiB5LCBkZXZpY2UgZmxvYXQ0eDIqIHopIHsKLSAgICBmbG9hdCBz
aW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbM11bMV0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNv
c1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0MngzIHgsIHRocmVhZGdyb3VwIGZsb2F0Mngz
KiB5LCBkZXZpY2UgZmxvYXQyeDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxv
YXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQz
eDMqIHksIGRldmljZSBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsKLSAgICBm
bG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzBd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzJdID0g
c2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhm
bG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSwgZGV2aWNlIGZsb2F0NHgzKiB6KSB7
Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsy
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZs
b2F0Mng0IHgsIHRocmVhZGdyb3VwIGZsb2F0Mng0KiB5LCBkZXZpY2UgZmxvYXQyeDQqIHopIHsK
LSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsxXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzFd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMV0gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBd
WzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0
OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3g0IHgsIHRocmVhZGdy
b3VwIGZsb2F0M3g0KiB5LCBkZXZpY2UgZmxvYXQzeDQqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1
bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
MV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsxXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzNdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1b
M10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bM10gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVszXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQ0eDQgeCwgdGhyZWFkZ3Jv
dXAgZmxvYXQ0eDQqIHksIGRldmljZSBmbG9hdDR4NCogeikgewotICAgIGZsb2F0IHNpblJlc3Vs
dDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsw
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMF0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsw
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAgICgq
eilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsxXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsy
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzJdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzJdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilb
M11bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bM10sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVszXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzNdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbM11bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bM10gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVszXVszXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0
IHgsIHRocmVhZGdyb3VwIGZsb2F0KiB5LCB0aHJlYWRncm91cCBmbG9hdCogeikgewotICAgICp5
ID0gc2luKHgpOwotICAgICp6ID0gY29zKHgpOwotfQotdm9pZCBzaW5jb3MoZmxvYXQyIHgsIHRo
cmVhZGdyb3VwIGZsb2F0MiogeSwgdGhyZWFkZ3JvdXAgZmxvYXQyKiB6KSB7Ci0gICAgZmxvYXQg
c2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci19Ci12
b2lkIHNpbmNvcyhmbG9hdDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQzKiB5LCB0aHJlYWRncm91cCBm
bG9hdDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdID0gY29zUmVzdWx0Owot
fQotdm9pZCBzaW5jb3MoZmxvYXQ0IHgsIHRocmVhZGdyb3VwIGZsb2F0NCogeSwgdGhyZWFkZ3Jv
dXAgZmxvYXQ0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsz
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQyeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDIqIHksIHRocmVhZGdyb3VwIGZsb2F0Mngy
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0g
Y29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQzeDIgeCwgdGhyZWFkZ3JvdXAgZmxvYXQz
eDIqIHksIHRocmVhZGdyb3VwIGZsb2F0M3gyKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0Owot
ICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
Ml1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsy
XVsxXSA9IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0NHgyIHgsIHRocmVhZGdyb3Vw
IGZsb2F0NHgyKiB5LCB0aHJlYWRncm91cCBmbG9hdDR4MiogeikgewotICAgIGZsb2F0IHNpblJl
c3VsdDsKLSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
MF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsxXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzFdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzFdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMV0sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsx
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzFdID0gY29zUmVz
dWx0OwotfQotdm9pZCBzaW5jb3MoZmxvYXQyeDMgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDMqIHks
IHRocmVhZGdyb3VwIGZsb2F0MngzKiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZs
b2F0IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVz
dWx0OwotICAgIHNpbmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAo
KnkpWzFdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAg
c2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0g
PSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsx
XVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3Vs
dDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2lu
UmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgq
eilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9
IGNvc1Jlc3VsdDsKLX0KLXZvaWQgc2luY29zKGZsb2F0M3gzIHgsIHRocmVhZGdyb3VwIGZsb2F0
M3gzKiB5LCB0aHJlYWRncm91cCBmbG9hdDN4MyogeikgewotICAgIGZsb2F0IHNpblJlc3VsdDsK
LSAgICBmbG9hdCBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMF0sICZzaW5SZXN1bHQsICZj
b3NSZXN1bHQpOwotICAgICgqeSlbMF1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVswXSA9
IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7
Ci0gICAgKCp5KVsxXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzBdID0gY29zUmVzdWx0
OwotICAgIHNpbmNvcyh4WzJdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkp
WzJdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2lu
Y29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBz
aW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsx
XSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsK
LSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzFdLCAmc2luUmVz
dWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilb
Ml1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1bHQsICZjb3NS
ZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsyXSA9IGNv
c1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0g
ICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJd
WzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNp
bmNvcyhmbG9hdDR4MyB4LCB0aHJlYWRncm91cCBmbG9hdDR4MyogeSwgdGhyZWFkZ3JvdXAgZmxv
YXQ0eDMqIHopIHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0Owot
ICAgIHNpbmNvcyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBd
WzBdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29z
KHhbMV1bMF0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5S
ZXN1bHQ7Ci0gICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwg
JnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAg
ICAoKnopWzJdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzBdLCAmc2luUmVzdWx0
LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzBdID0gc2luUmVzdWx0OwotICAgICgqeilbM11b
MF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1
bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jl
c3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAg
KCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzFdID0gY29zUmVzdWx0OwotICAg
IHNpbmNvcyh4WzJdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzJdWzFd
ID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhb
M11bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11bMV0gPSBzaW5SZXN1
bHQ7Ci0gICAgKCp6KVszXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFswXVsyXSwgJnNp
blJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVsyXSA9IHNpblJlc3VsdDsKLSAgICAo
KnopWzBdWzJdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzJdLCAmc2luUmVzdWx0LCAm
Y29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMV1bMl0g
PSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQp
OwotICAgICgqeSlbMl1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsyXSA9IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFszXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVszXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzJdID0gY29zUmVzdWx0OwotfQotdm9p
ZCBzaW5jb3MoZmxvYXQyeDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQyeDQqIHksIHRocmVhZGdyb3Vw
IGZsb2F0Mng0KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3Vs
dDsKLSAgICBzaW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5
KVswXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNp
bmNvcyh4WzFdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0g
c2luUmVzdWx0OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1b
MV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMV0gPSBzaW5SZXN1bHQ7
Ci0gICAgKCp6KVswXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsxXSwgJnNpblJl
c3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsxXVsxXSA9IHNpblJlc3VsdDsKLSAgICAoKnop
WzFdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzJdLCAmc2luUmVzdWx0LCAmY29z
UmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMl0gPSBj
b3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwot
ICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsK
LSAgICBzaW5jb3MoeFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsw
XVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzFdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci19Ci12b2lkIHNpbmNvcyhmbG9h
dDN4NCB4LCB0aHJlYWRncm91cCBmbG9hdDN4NCogeSwgdGhyZWFkZ3JvdXAgZmxvYXQzeDQqIHop
IHsKLSAgICBmbG9hdCBzaW5SZXN1bHQ7Ci0gICAgZmxvYXQgY29zUmVzdWx0OwotICAgIHNpbmNv
cyh4WzBdWzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzBdID0gc2lu
UmVzdWx0OwotICAgICgqeilbMF1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMF0s
ICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMF0gPSBzaW5SZXN1bHQ7Ci0g
ICAgKCp6KVsxXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVswXSwgJnNpblJlc3Vs
dCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJd
WzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVz
dWx0KTsKLSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NS
ZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAg
ICgqeSlbMV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAg
ICBzaW5jb3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsx
XSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4
WzBdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzBdWzJdID0gc2luUmVz
dWx0OwotICAgICgqeilbMF1bMl0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMV1bMl0sICZz
aW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMV1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAg
KCp6KVsxXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsyXVsyXSwgJnNpblJlc3VsdCwg
JmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzJd
ID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzNdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0
KTsKLSAgICAoKnkpWzBdWzNdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bM10gPSBjb3NSZXN1
bHQ7Ci0gICAgc2luY29zKHhbMV1bM10sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgq
eSlbMV1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVszXSA9IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFsyXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVszXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzJdWzNdID0gY29zUmVzdWx0OwotfQotdm9pZCBzaW5jb3Mo
ZmxvYXQ0eDQgeCwgdGhyZWFkZ3JvdXAgZmxvYXQ0eDQqIHksIHRocmVhZGdyb3VwIGZsb2F0NHg0
KiB6KSB7Ci0gICAgZmxvYXQgc2luUmVzdWx0OwotICAgIGZsb2F0IGNvc1Jlc3VsdDsKLSAgICBz
aW5jb3MoeFswXVswXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVswXSA9
IHNpblJlc3VsdDsKLSAgICAoKnopWzBdWzBdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFd
WzBdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzBdID0gc2luUmVzdWx0
OwotICAgICgqeilbMV1bMF0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bMF0sICZzaW5S
ZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bMF0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6
KVsyXVswXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVswXSwgJnNpblJlc3VsdCwgJmNv
c1Jlc3VsdCk7Ci0gICAgKCp5KVszXVswXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzBdID0g
Y29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzBdWzFdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsK
LSAgICAoKnkpWzBdWzFdID0gc2luUmVzdWx0OwotICAgICgqeilbMF1bMV0gPSBjb3NSZXN1bHQ7
Ci0gICAgc2luY29zKHhbMV1bMV0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlb
MV1bMV0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsxXVsxXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5j
b3MoeFsyXVsxXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVsyXVsxXSA9IHNp
blJlc3VsdDsKLSAgICAoKnopWzJdWzFdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzNdWzFd
LCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzNdWzFdID0gc2luUmVzdWx0Owot
ICAgICgqeilbM11bMV0gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMF1bMl0sICZzaW5SZXN1
bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbMF1bMl0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsw
XVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFsxXVsyXSwgJnNpblJlc3VsdCwgJmNvc1Jl
c3VsdCk7Ci0gICAgKCp5KVsxXVsyXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzFdWzJdID0gY29z
UmVzdWx0OwotICAgIHNpbmNvcyh4WzJdWzJdLCAmc2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAg
ICAoKnkpWzJdWzJdID0gc2luUmVzdWx0OwotICAgICgqeilbMl1bMl0gPSBjb3NSZXN1bHQ7Ci0g
ICAgc2luY29zKHhbM11bMl0sICZzaW5SZXN1bHQsICZjb3NSZXN1bHQpOwotICAgICgqeSlbM11b
Ml0gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVszXVsyXSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3Mo
eFswXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3VsdCk7Ci0gICAgKCp5KVswXVszXSA9IHNpblJl
c3VsdDsKLSAgICAoKnopWzBdWzNdID0gY29zUmVzdWx0OwotICAgIHNpbmNvcyh4WzFdWzNdLCAm
c2luUmVzdWx0LCAmY29zUmVzdWx0KTsKLSAgICAoKnkpWzFdWzNdID0gc2luUmVzdWx0OwotICAg
ICgqeilbMV1bM10gPSBjb3NSZXN1bHQ7Ci0gICAgc2luY29zKHhbMl1bM10sICZzaW5SZXN1bHQs
ICZjb3NSZXN1bHQpOwotICAgICgqeSlbMl1bM10gPSBzaW5SZXN1bHQ7Ci0gICAgKCp6KVsyXVsz
XSA9IGNvc1Jlc3VsdDsKLSAgICBzaW5jb3MoeFszXVszXSwgJnNpblJlc3VsdCwgJmNvc1Jlc3Vs
dCk7Ci0gICAgKCp5KVszXVszXSA9IHNpblJlc3VsdDsKLSAgICAoKnopWzNdWzNdID0gY29zUmVz
dWx0OwotfQotCi0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5n
ZSAqLwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21p
Y191aW50KiwgdWludCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9taWNfaW50KiwgaW50LCBpbnQsIHRocmVhZCBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGRldmljZSBhdG9t
aWNfdWludCosIHVpbnQsIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxv
Y2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCBkZXZpY2Ug
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRv
bWljX3VpbnQqLCB1aW50LCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJ
bnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShkZXZpY2UgYXRvbWljX2ludCosIGludCwgaW50LCB0
aHJlYWRncm91cCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdl
KHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19p
bnQqLCBpbnQsIGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB1aW50LCBkZXZpY2Ug
dWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgaW50LCBkZXZpY2UgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQsIHVp
bnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGludCwgdGhyZWFkZ3JvdXAgaW50
Kik7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzbW9vdGhzdGVwICovCi1mbG9hdCBzbW9vdGhzdGVw
KGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCkgewotICAgIGZsb2F0IHQgPSBjbGFt
cCgoeCAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMCwgMSk7Ci0gICAgcmV0dXJuIHQgKiB0
ICogKDMgLSAyICogdCk7Ci19Ci1mbG9hdDIgc21vb3Roc3RlcChmbG9hdDIgeCwgZmxvYXQyIHks
IGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzbW9vdGhz
dGVwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IHNtb290aHN0ZXAoeFsxXSwg
eVsxXSwgelsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBzbW9vdGhzdGVwKGZs
b2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IHNtb290aHN0ZXAoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0g
c21vb3Roc3RlcCh4WzFdLCB5WzFdLCB6WzFdKTsKLSAgICByZXN1bHRbMl0gPSBzbW9vdGhzdGVw
KHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgc21vb3Ro
c3RlcChmbG9hdDQgeCwgZmxvYXQ0IHksIGZsb2F0NCB6KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBzbW9vdGhzdGVwKHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IHNtb290aHN0ZXAoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc21v
b3Roc3RlcCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXN1bHRbM10gPSBzbW9vdGhzdGVwKHhb
M10sIHlbM10sIHpbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBzbW9vdGhz
dGVwKGZsb2F0MngyIHgsIGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsx
XSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFd
WzFdLCB6WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc21vb3Roc3Rl
cChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5LCBmbG9hdDN4MiB6KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFswXVswXSwgeVswXVswXSwgelsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4WzFdWzBdLCB5WzFdWzBdLCB6
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVwKHhbMl1bMF0sIHlbMl1bMF0s
IHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsx
XSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFd
WzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlb
Ml1bMV0sIHpbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzbW9vdGhz
dGVwKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0NHgyIHopIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVsw
XSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc21vb3Roc3RlcCh4WzNdWzBdLCB5WzNd
WzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1bMV0sIHlb
MF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsxXVsxXSwg
eVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4WzJdWzFd
LCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBzbW9vdGhzdGVwKHhbM11b
MV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBz
bW9vdGhzdGVwKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0MngzIHopIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBd
WzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlb
MV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwg
eVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFd
LCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1b
Ml0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0ZXAoeFsx
XVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gz
IHNtb290aHN0ZXAoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSwgZmxvYXQzeDMgeikgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwg
eVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBd
LCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzbW9vdGhzdGVwKHhbMF1b
MV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNtb290aHN0ZXAoeFsx
XVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc21vb3Roc3RlcCh4
WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzbW9vdGhzdGVw
KHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNtb290aHN0
ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc21vb3Ro
c3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgc21vb3Roc3RlcChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5LCBmbG9hdDR4MyB6KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNtb290aHN0ZXAoeFsw
XVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc21vb3Roc3RlcCh4
WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBzbW9vdGhzdGVw
KHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNtb290aHN0
ZXAoeFszXVswXSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc21vb3Ro
c3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzbW9v
dGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNt
b290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
c21vb3Roc3RlcCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gc21vb3Roc3RlcCh4WzJdWzJdLCB5WzJdWzJdLCB6WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBzbW9vdGhzdGVwKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzbW9vdGhzdGVwKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHks
IGZsb2F0Mng0IHopIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBzbW9vdGhzdGVwKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IHNtb290aHN0ZXAoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzbW9vdGhzdGVwKGZsb2F0M3g0IHgsIGZsb2F0
M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gc21vb3Roc3RlcCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBzbW9vdGhzdGVwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHNtb290aHN0ZXAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gc21vb3Roc3RlcCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBzbW9vdGhzdGVwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IHNtb290aHN0ZXAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc21vb3Roc3RlcCh4WzBdWzNdLCB5WzBdWzNdLCB6WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzbW9vdGhzdGVwKHhbMV1bM10sIHlbMV1bM10sIHpb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNtb290aHN0ZXAoeFsyXVszXSwgeVsyXVszXSwg
elsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNtb290aHN0ZXAoZmxv
YXQ0eDQgeCwgZmxvYXQ0eDQgeSwgZmxvYXQ0eDQgeikgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzbW9vdGhzdGVwKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHNtb290aHN0ZXAoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc21vb3Roc3RlcCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBzbW9vdGhzdGVwKHhbM11bMF0sIHlbM11bMF0sIHpb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNtb290aHN0ZXAoeFswXVsxXSwgeVswXVsxXSwg
elswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc21vb3Roc3RlcCh4WzFdWzFdLCB5WzFdWzFd
LCB6WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzbW9vdGhzdGVwKHhbMl1bMV0sIHlbMl1b
MV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNtb290aHN0ZXAoeFszXVsxXSwgeVsz
XVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc21vb3Roc3RlcCh4WzBdWzJdLCB5
WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzbW9vdGhzdGVwKHhbMV1bMl0s
IHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNtb290aHN0ZXAoeFsyXVsy
XSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gc21vb3Roc3RlcCh4WzNd
WzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzbW9vdGhzdGVwKHhb
MF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNtb290aHN0ZXAo
eFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc21vb3Roc3Rl
cCh4WzJdWzNdLCB5WzJdWzNdLCB6WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzbW9vdGhz
dGVwKHhbM11bM10sIHlbM11bM10sIHpbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS8qIEZ1bmN0aW9ucyBuYW1lZCBleHAgKi8KLW5hdGl2ZSBmbG9hdCBleHAoZmxvYXQpOwotZmxv
YXQyIGV4cChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQzIGV4cChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZXhwKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGV4cCh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBleHAoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBleHAoZmxv
YXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGV4cCh4WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBleHAoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZXhwKHhbMl0pOwot
ICAgIHJlc3VsdFszXSA9IGV4cCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgZXhwKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhb
MV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBleHAoZmxvYXQzeDIgeCkg
ewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBleHAoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGV4
cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZXhwKGZsb2F0NHgyIHgpIHsKLSAgICBm
bG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZXhwKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGV4cCh4WzNdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZXhwKGZsb2F0MngzIHgpIHsKLSAg
ICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGV4cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGV4cChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQz
eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBleHAoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGV4cCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBleHAo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZXhwKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGV4cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0g
ICAgcmVzdWx0WzJdWzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyBleHAoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBleHAoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZXhwKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGV4cCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBl
eHAoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gZXhwKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGV4
cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZXhwKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGV4cCh4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZXhwKGZsb2F0Mng0IHgpIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGV4cCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBleHAoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gZXhwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZXhwKGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZXhwKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGV4cCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBleHAoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZXhwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGV4cCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBleHAoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gZXhwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFd
WzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBleHAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gZXhwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGV4cCh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBleHAoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHg0IGV4cChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IGV4cCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBleHAoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gZXhwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGV4cCh4
WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBleHAoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZXhwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGV4cCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBleHAoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZXhwKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGV4cCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBleHAoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZXhwKHhbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGV4cCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBleHAoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZXhwKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVsz
XSA9IGV4cCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgYWxsICovCi1ib29sIGFsbChib29sIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWJvb2wg
YWxsKGJvb2wyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVl
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzFdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1ib29sIGFsbChib29sNCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFd
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKHVpbnQgeCkgewotICAg
IHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFsbCh1aW50MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQg
PSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxs
KHVpbnQzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYWxsKHVpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChp
bnQgeCkgewotICAgIHJldHVybiB4ICE9IDA7Ci19Ci1ib29sIGFsbChpbnQyIHgpIHsKLSAgICBi
b29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbGwoaW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDApOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sIGFsbChpbnQ0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzNdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sIGFsbChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYWxsKGZsb2F0
MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0
cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdICE9IDAp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDQgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM10gIT0gMCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0MngyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9
IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
MF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChm
bG9hdDR4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMF0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzJdWzBdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
MV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
KHhbM11bMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0Mngz
IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0g
IT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhb
Ml1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzJdICE9IDApOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0
NHgzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsxXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsz
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMl0gIT0gMCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGZsb2F0Mng0IHgpIHsKLSAgICBib29s
IHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsyXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzBd
WzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVszXSAhPSAwKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoZmxvYXQzeDQgeCkgewotICAgIGJvb2wgcmVzdWx0
ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMV0gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bMl0gIT0g
MCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzJdICE9IDApOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiAoeFsyXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1b
M10gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiAoeFsyXVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ym9vbCBhbGwoZmxvYXQ0eDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4
WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsyXVswXSAhPSAwKTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmICh4WzBdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFsxXVsxXSAhPSAw
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmICh4WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAoeFswXVsy
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiAo
eFszXVsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbMF1bM10gIT0gMCk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmICh4WzFdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAoeFsyXVszXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgKHhbM11bM10gIT0g
MCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDIgeCkgewotICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsx
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbGwoYm9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChib29s
NHgyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0ID0g
cmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1b
MV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYWxsKGJvb2wyeDMgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
JiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVsyXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbGwoYm9vbDN4MyB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFd
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFsbChi
b29sNHgzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMF07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMF07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMl07
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWJvb2wgYWxsKGJvb2wyeDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgJiYgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFsxXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYg
eFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVsyXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgJiYgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgeFswXVszXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgeFsxXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBh
bGwoYm9vbDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiB4WzBdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzBdOwotICAgIHJl
c3VsdCA9IHJlc3VsdCAmJiB4WzJdWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzFd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiB4WzJdWzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzJdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCAmJiB4WzFdWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzJdOwotICAg
IHJlc3VsdCA9IHJlc3VsdCAmJiB4WzBdWzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzFd
WzNdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB4WzJdWzNdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sIGFsbChib29sNHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1b
MF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0
ICYmIHhbM11bMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMF1bMV07Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICYmIHhbMV1bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bMV07Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhb
MF1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bMl07Ci0gICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHhbMl1bMl07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbM11bMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICYmIHhbMF1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMV1bM107
Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHhbMl1bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICYm
IHhbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQg
Zmlyc3RiaXRsb3cgKi8KLXVpbnQgZmlyc3RiaXRsb3codWludCB4KSB7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDApKSAhPSAwKQotICAgICAgICByZXR1cm4gMzE7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMzA7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDIpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDMpKSAhPSAwKQotICAgICAgICByZXR1cm4gMjg7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDQp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMjc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDUpKSAh
PSAwKQotICAgICAgICByZXR1cm4gMjY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDYpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMjU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDcpKSAhPSAwKQot
ICAgICAgICByZXR1cm4gMjQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDgpKSAhPSAwKQotICAg
ICAgICByZXR1cm4gMjM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDkpKSAhPSAwKQotICAgICAg
ICByZXR1cm4gMjI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDIxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMSkpICE9IDApCi0gICAgICAgIHJl
dHVybiAyMDsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTIpKSAhPSAwKQotICAgICAgICByZXR1
cm4gMTk7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDE4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNCkpICE9IDApCi0gICAgICAgIHJldHVybiAx
NzsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTUpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTY7
Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDE2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE1Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxNykpICE9IDApCi0gICAgICAgIHJldHVybiAxNDsKLSAg
ICBpZiAoKHggJiB1aW50KDEgPDwgMTgpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTM7Ci0gICAg
aWYgKCh4ICYgdWludCgxIDw8IDE5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAyMCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMTsKLSAgICBpZiAo
KHggJiB1aW50KDEgPDwgMjEpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTA7Ci0gICAgaWYgKCh4
ICYgdWludCgxIDw8IDIyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDk7Ci0gICAgaWYgKCh4ICYg
dWludCgxIDw8IDIzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDI0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgaWYgKCh4ICYgdWludCgx
IDw8IDI1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDI2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDU7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI3
KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI4KSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDI5KSkgIT0g
MCkKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMwKSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDMxKSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDMyOwotfQotdWludCBmaXJzdGJpdGxvdyhpbnQg
eCkgewotICAgIHJldHVybiBmaXJzdGJpdGxvdyh1aW50KHgpKTsKLX0KLXVpbnQyIGZpcnN0Yml0
bG93KHVpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3Ri
aXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXVpbnQzIGZpcnN0Yml0bG93KHVpbnQzIHgpIHsKLSAgICB1aW50MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IGZpcnN0Yml0bG93KHVpbnQ0IHgpIHsKLSAg
ICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmlyc3RiaXRsb3coeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRs
b3coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3RiaXRsb3coeFszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLXVpbnQyIGZpcnN0Yml0bG93KGludDIgeCkgewotICAgIHVpbnQyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGxvdyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBm
aXJzdGJpdGxvdyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRs
b3coaW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0
bG93KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0bG93KHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGZpcnN0Yml0bG93KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBm
aXJzdGJpdGxvdyhpbnQ0IHgpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
Zmlyc3RiaXRsb3coeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRsb3coeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gZmlyc3RiaXRsb3coeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmlyc3Ri
aXRsb3coeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IG9wZXJhdG9yPD0gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOwotbmF0aXZl
IGJvb2wgb3BlcmF0b3I8PSh1aW50LCB1aW50KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oZmxv
YXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KHVpbnQyLCB1aW50Mik7Ci1uYXRp
dmUgYm9vbDMgb3BlcmF0b3I8PSh1aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9y
PD0odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGludDIsIGludDIpOwot
bmF0aXZlIGJvb2wzIG9wZXJhdG9yPD0oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0
b3I8PShpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjw9KGZsb2F0MiwgZmxvYXQy
KTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcjw9KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29s
NCBvcGVyYXRvcjw9KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPD0o
ZmxvYXQyeDIsIGZsb2F0MngyKTsKLW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPD0oZmxvYXQzeDIs
IGZsb2F0M3gyKTsKLW5hdGl2ZSBib29sNHgyIG9wZXJhdG9yPD0oZmxvYXQ0eDIsIGZsb2F0NHgy
KTsKLW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPD0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2
ZSBib29sM3gzIG9wZXJhdG9yPD0oZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgz
IG9wZXJhdG9yPD0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9y
PD0oZmxvYXQyeDQsIGZsb2F0Mng0KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPD0oZmxvYXQz
eDQsIGZsb2F0M3g0KTsKLW5hdGl2ZSBib29sNHg0IG9wZXJhdG9yPD0oZmxvYXQ0eDQsIGZsb2F0
NHg0KTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeF9maW5lICovCi1mbG9hdCBkZHhfZmluZShm
bG9hdCB4KSB7Ci0gICAgcmV0dXJuIGRkeCh4KTsKLX0KLWZsb2F0MiBkZHhfZmluZShmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2ZpbmUoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBkZHhfZmluZShmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NCBkZHhfZmluZShmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZGR4X2ZpbmUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR4X2ZpbmUoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZGR4X2ZpbmUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZGR4X2Zp
bmUoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGRkeF9maW5lKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2Zp
bmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4
X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGRkeF9maW5l
KGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIGRkeF9maW5lKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2Zp
bmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZGR4X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIGRkeF9maW5lKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRkeF9maW5lKGZsb2F0M3gzIHgp
IHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2Zp
bmUoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgzIGRkeF9maW5lKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZGR4X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeF9maW5lKGZsb2F0
Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2Zp
bmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4
X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZGR4X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeF9maW5lKGZsb2F0M3g0IHgpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2ZpbmUoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2Zp
bmUoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gZGR4X2ZpbmUoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IGRkeF9maW5lKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZGR4X2ZpbmUoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
ZGR4X2ZpbmUoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2ZpbmUoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2ZpbmUoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR4X2ZpbmUoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2ZpbmUoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2ZpbmUoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZGR4X2ZpbmUoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2ZpbmUoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4X2ZpbmUoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gZGR4X2ZpbmUoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2ZpbmUo
eFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2ZpbmUoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gZGR4X2ZpbmUoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2Zp
bmUoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZGR4X2ZpbmUoeFszXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yIGNhc3QgKi8K
LW5hdGl2ZSBvcGVyYXRvciB1aW50KGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludChmbG9hdCk7
Ci1uYXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpOwotbmF0aXZlIG9wZXJhdG9yIGludChmbG9hdCk7
Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50
KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQoYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbCh1aW50
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sKGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChmbG9h
dCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDIoYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDMoYm9vbCwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbDIsIGJv
b2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzKGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRv
ciBib29sNChib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChi
b29sMiwgYm9vbCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbDIsIGJv
b2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJvb2wyKTsKLW5hdGl2ZSBv
cGVyYXRvciBib29sNChib29sMiwgYm9vbDIpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wz
LCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMyk7Ci1uYXRpdmUgb3Bl
cmF0b3IgdWludDIodWludCwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludCwgdWlu
dCwgdWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDModWludDIsIHVpbnQpOwotbmF0aXZlIG9w
ZXJhdG9yIHVpbnQzKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1
aW50LCB1aW50LCB1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50MiwgdWludCwgdWlu
dCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDQodWludCwgdWludDIsIHVpbnQpOwotbmF0aXZlIG9w
ZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50NCh1
aW50MiwgdWludDIpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQzLCB1aW50KTsKLW5hdGl2
ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MihpbnQs
IGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MyhpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVy
YXRvciBpbnQzKGludDIsIGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgaW50MyhpbnQsIGludDIpOwot
bmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRv
ciBpbnQ0KGludDIsIGludCwgaW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50Miwg
aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50LCBpbnQyKTsKLW5hdGl2ZSBvcGVy
YXRvciBpbnQ0KGludDIsIGludDIpOwotbmF0aXZlIG9wZXJhdG9yIGludDQoaW50MywgaW50KTsK
LW5hdGl2ZSBvcGVyYXRvciBpbnQ0KGludCwgaW50Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQy
KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0LCBmbG9hdCwgZmxv
YXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MyhmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBvcGVy
YXRvciBmbG9hdDMoZmxvYXQsIGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQyLCBm
bG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQyLCBmbG9h
dCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdCwgZmxvYXQyKTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
NChmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0Myk7
Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIG9wZXJh
dG9yIGZsb2F0MngzKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4NChm
bG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDIoZmxvYXQyLCBmbG9hdDIs
IGZsb2F0Mik7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDMoZmxvYXQzLCBmbG9hdDMsIGZsb2F0
Myk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7Ci1u
YXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDIoZmxvYXQyLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsK
LW5hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MyhmbG9hdDMsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHg0KGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0
NCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQp
OwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0MngzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
ZmxvYXQzeDIoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRp
dmUgb3BlcmF0b3IgZmxvYXQzeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQzeDQoZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDIoZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdDR4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBv
cGVyYXRvciBmbG9hdDR4NChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Mihib29sMiwgYm9vbDIpOwot
bmF0aXZlIG9wZXJhdG9yIGJvb2wyeDMoYm9vbDMsIGJvb2wzKTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sMng0KGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDN4Mihib29sMiwgYm9v
bDIsIGJvb2wyKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gzKGJvb2wzLCBib29sMywgYm9vbDMp
OwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDQoYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUg
b3BlcmF0b3IgYm9vbDR4Mihib29sMiwgYm9vbDIsIGJvb2wyLCBib29sMik7Ci1uYXRpdmUgb3Bl
cmF0b3IgYm9vbDR4Myhib29sMywgYm9vbDMsIGJvb2wzLCBib29sMyk7Ci1uYXRpdmUgb3BlcmF0
b3IgYm9vbDR4NChib29sNCwgYm9vbDQsIGJvb2w0LCBib29sNCk7Ci1uYXRpdmUgb3BlcmF0b3Ig
Ym9vbDJ4Mihib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sMngz
KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJv
b2wyeDQoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1u
YXRpdmUgb3BlcmF0b3IgYm9vbDN4Mihib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
KTsKLW5hdGl2ZSBvcGVyYXRvciBib29sM3gzKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDQoYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbDR4Mihib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sKTsKLW5hdGl2ZSBvcGVyYXRvciBib29sNHgzKGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wpOwotbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDQoYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBsb2FkICovCi1uYXRpdmUg
aW50IGxvYWQoZGV2aWNlIGF0b21pY19pbnQqKTsKLW5hdGl2ZSB1aW50IGxvYWQoZGV2aWNlIGF0
b21pY191aW50Kik7Ci1uYXRpdmUgaW50IGxvYWQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCopOwot
bmF0aXZlIHVpbnQgbG9hZCh0aHJlYWRncm91cCBhdG9taWNfdWludCopOwotCi0vKiBGdW5jdGlv
bnMgbmFtZWQgY291bnRfYml0cyAqLwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcnNxcnQgKi8KLWZs
b2F0IHJzcXJ0KGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHNxcnQoeCk7Ci19Ci1mbG9hdDIg
cnNxcnQoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJz
cXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDMgcnNxcnQoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IHJzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwot
ICAgIHJlc3VsdFsyXSA9IHJzcXJ0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDQgcnNxcnQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHJzcXJ0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsy
XSA9IHJzcXJ0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJzcXJ0KHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByc3FydChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiByc3FydChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJz
cXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MiByc3FydChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJz
cXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByc3FydChmbG9hdDJ4MyB4
KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJz
cXJ0KHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyByc3FydChmbG9h
dDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJz
cXJ0KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyByc3FydChmbG9h
dDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJzcXJ0KHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJz
cXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJzcXJ0KHhb
M11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByc3FydChmbG9hdDJ4NCB4
KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJzcXJ0KHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJz
cXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCByc3FydChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJz
cXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0pOwotICAgIHJl
c3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IHJzcXJ0KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBy
c3FydChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJzcXJ0KHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHJzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJz
cXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJzcXJ0KHhbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IHJzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJzcXJ0KHhb
Ml1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJzcXJ0KHhbM11bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IHJzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJzcXJ0KHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IHJzcXJ0KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IHJzcXJ0KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJzcXJ0KHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHJzcXJ0KHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJzcXJ0
KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJzcXJ0KHhbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBzcXJ0ICovCi1mbG9hdCBzcXJ0KGZs
b2F0IHgpIHsKLSAgICByZXR1cm4gcG93KHgsIDAuNSk7Ci19Ci1mbG9hdDIgc3FydChmbG9hdDIg
eCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3FydCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBzcXJ0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMg
c3FydChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc3Fy
dCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzcXJ0KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHNx
cnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzcXJ0KGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzcXJ0KHhbMF0pOwotICAgIHJl
c3VsdFsxXSA9IHNxcnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc3FydCh4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBzcXJ0KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBz
cXJ0KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4
WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc3FydChmbG9hdDN4MiB4
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBzcXJ0KHhb
Ml1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzcXJ0KGZsb2F0NHgyIHgp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHNxcnQoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc3FydCh4WzNdWzBdKTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBzcXJ0KHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBzcXJ0
KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHNxcnQo
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBz
cXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNxcnQoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzcXJ0KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNxcnQoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gc3FydCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3FydCh4
WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc3FydChmbG9hdDR4MyB4
KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHNxcnQoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc3FydCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBzcXJ0KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNxcnQoeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBzcXJ0KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gc3FydCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gc3Fy
dCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzcXJ0KHhbM11bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzcXJ0KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzcXJ0
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNxcnQoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzBdWzNdID0gc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzcXJ0KGZsb2F0M3g0IHgpIHsKLSAg
ICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc3FydCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzcXJ0KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHNxcnQo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc3FydCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBzcXJ0KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNxcnQoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBz
cXJ0KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVz
dWx0WzBdWzNdID0gc3FydCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBzcXJ0KHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNxcnQoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHg0IHNxcnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBzcXJ0KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNx
cnQoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc3FydCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbM11bMF0gPSBzcXJ0KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNxcnQoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc3FydCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSBzcXJ0KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNxcnQoeFszXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gc3FydCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBzcXJ0KHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNxcnQoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gc3FydCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzcXJ0KHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IHNxcnQoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gc3Fy
dCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzcXJ0KHhbM11bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhY29zICovCi1uYXRpdmUgZmxvYXQg
YWNvcyhmbG9hdCk7Ci1mbG9hdDIgYWNvcyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhY29zKHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYWNvcyhmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYWNvcyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhY29zKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFjb3MoeFsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBhY29zKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBhY29zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFjb3MoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gYWNvcyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhY29zKHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBhY29zKGZsb2F0MngyIHgpIHsKLSAgICBm
bG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgYWNvcyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBhY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBh
Y29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gYWNvcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYWNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhY29zKHhbM11bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBhY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9h
dDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGFjb3MoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0
M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29zKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYWNvcyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGFjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYWNvcyh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3MoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgYWNvcyhmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGFjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
YWNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhY29zKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGFjb3MoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWNvcyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWNvcyh4WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFjb3Mo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWNvcyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBhY29zKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBh
Y29zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYWNvcyh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IGFjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4NCBhY29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYWNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhY29zKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFjb3MoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYWNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhY29zKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGFjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNv
cyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IGFjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gYWNvcyh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBhY29zKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IGFjb3MoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGFjb3MoZmxv
YXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhY29z
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzJdWzBdID0gYWNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhY29zKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGFjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
YWNvcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhY29zKHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGFjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gYWNvcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhY29zKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGFjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gYWNvcyh4WzNdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBhY29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGFjb3Mo
eFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWNvcyh4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBhY29zKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBvcGVyYXRvcj4gKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7
Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj4odWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRv
cj4oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4odWludDIsIHVpbnQyKTsK
LW5hdGl2ZSBib29sMyBvcGVyYXRvcj4odWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVy
YXRvcj4odWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oaW50MiwgaW50Mik7
Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJh
dG9yPihpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcj4oZmxvYXQyLCBmbG9hdDIp
OwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yPihmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQg
b3BlcmF0b3I+KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPihmbG9h
dDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I+KGZsb2F0M3gyLCBmbG9h
dDN4Mik7Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcj4oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5h
dGl2ZSBib29sMngzIG9wZXJhdG9yPihmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wz
eDMgb3BlcmF0b3I+KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRv
cj4oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPihmbG9hdDJ4
NCwgZmxvYXQyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I+KGZsb2F0M3g0LCBmbG9hdDN4
NCk7Ci1uYXRpdmUgYm9vbDR4NCBvcGVyYXRvcj4oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yJiAqLwotYm9vbCBvcGVyYXRvciYoYm9vbCBhLCBib29s
IGIpIHsKLSAgICByZXR1cm4gYSAmJiBiOwotfQotbmF0aXZlIGludCBvcGVyYXRvciYoaW50LCBp
bnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMg
bmFtZWQgdGFuaCAqLwotbmF0aXZlIGZsb2F0IHRhbmgoZmxvYXQpOwotZmxvYXQyIHRhbmgoZmxv
YXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbmgoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzIHRhbmgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHRhbmgoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuaCh4WzFdKTsKLSAgICByZXN1bHRbMl0g
PSB0YW5oKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgdGFuaChmbG9hdDQg
eCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gdGFuaCh4WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSB0YW5oKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHRhbmgoeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gdGFuaCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgdGFuaChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRh
bmgoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHRhbmgoZmxvYXQz
eDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdGFu
aCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgdGFuaChmbG9hdDR4
MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSB0YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbmgoeFszXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5o
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gdGFuaCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMg
dGFuaChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0
YW5oKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW5oKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuaCh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IHRhbmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRh
bmgoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRhbmgoZmxvYXQ0
eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW5oKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gdGFuaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSB0YW5oKHhbM11bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFu
aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHRhbmgoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdGFuaCh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9
IHRhbmgoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdGFuaCh4WzNdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgdGFuaChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
dGFuaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW5oKHhbMV1bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgdGFuaChmbG9hdDN4NCB4KSB7
Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbmgoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0
YW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbmgoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gdGFuaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSB0YW5oKHhbMl1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gdGFuaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IHRhbmgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdGFuaCh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSB0YW5oKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0YW5oKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSB0YW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbmgoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gdGFuaCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW5oKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gdGFuaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSB0YW5oKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHRhbmgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdGFu
aCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSB0YW5oKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IHRhbmgoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdGFuaCh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSB0YW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9
IHRhbmgoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdGFuaCh4WzNdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IqICovCi1uYXRp
dmUgaW50IG9wZXJhdG9yKihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcioodWludCwg
dWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWlu
dDIgb3BlcmF0b3IqKHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IqKHVpbnQy
LCB1aW50KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvcioodWludCwgdWludDIpOwotbmF0aXZlIHVp
bnQzIG9wZXJhdG9yKih1aW50MywgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKih1aW50
MywgdWludCk7Ci1uYXRpdmUgdWludDMgb3BlcmF0b3IqKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1
aW50NCBvcGVyYXRvcioodWludDQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcioodWlu
dDQsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKih1aW50LCB1aW50NCk7Ci1uYXRpdmUg
aW50MiBvcGVyYXRvciooaW50MiwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvciooaW50Miwg
aW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9yKihpbnQsIGludDIpOwotbmF0aXZlIGludDMgb3Bl
cmF0b3IqKGludDMsIGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3IqKGludDMsIGludCk7Ci1u
YXRpdmUgaW50MyBvcGVyYXRvciooaW50LCBpbnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihp
bnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKihpbnQ0LCBpbnQpOwotbmF0aXZlIGlu
dDQgb3BlcmF0b3IqKGludCwgaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIs
IGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKihmbG9hdDIsIGZsb2F0KTsKLW5hdGl2
ZSBmbG9hdDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRv
ciooZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvciooZmxvYXQzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yKihmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9h
dDQgb3BlcmF0b3IqKGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IqKGZs
b2F0NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0NCBvcGVyYXRvciooZmxvYXQsIGZsb2F0NCk7Ci1u
YXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IqKGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxv
YXQyeDIgb3BlcmF0b3IqKGZsb2F0MngyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0
b3IqKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gy
LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0M3gyLCBmbG9hdCk7
Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxv
YXQ0eDIgb3BlcmF0b3IqKGZsb2F0NHgyLCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3Bl
cmF0b3IqKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IqKGZsb2F0
LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdDJ4
Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUg
ZmxvYXQyeDMgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3Bl
cmF0b3IqKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZs
b2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDN4
Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRp
dmUgZmxvYXQ0eDMgb3BlcmF0b3IqKGZsb2F0NHgzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMg
b3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZs
b2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0Mng0LCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRp
dmUgZmxvYXQzeDQgb3BlcmF0b3IqKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQz
eDQgb3BlcmF0b3IqKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3Iq
KGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBm
bG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0NHg0LCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBjb3MgKi8KLW5hdGl2ZSBmbG9hdCBjb3MoZmxvYXQpOwotZmxvYXQyIGNvcyhmbG9h
dDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29zKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
IGNvcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gY29z
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvcyh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3Mo
eFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBjb3MoZmxvYXQ0IHgpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvcyh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBjb3MoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY29zKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGNvcyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgY29zKGZsb2F0
MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjb3MoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0
M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3MoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNvcyh4WzJdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29z
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgY29zKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gY29zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvcyh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
Y29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNvcyh4WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgY29zKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGNvcyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGNvcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3Mo
eFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNvcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3MoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gY29zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gY29zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3Mo
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBj
b3MoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGNvcyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3MoeFszXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNv
cyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0
WzNdWzFdID0gY29zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29z
KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvcyh4WzNdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQyeDQgY29zKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gY29zKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvcyh4WzBdWzJd
KTsKLSAgICByZXN1bHRbMV1bMl0gPSBjb3MoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
Y29zKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgY29zKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGNvcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3MoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gY29zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvcyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3MoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gY29zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICBy
ZXN1bHRbMl1bMl0gPSBjb3MoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gY29zKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvcyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBjb3MoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGNvcyhmbG9h
dDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNvcyh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3MoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gY29zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGNvcyh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBjb3MoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBjb3MoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gY29zKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IGNvcyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3MoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gY29zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGNvcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBjb3MoeFsxXVszXSk7Ci0gICAg
cmVzdWx0WzJdWzNdID0gY29zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGNvcyh4WzNd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0
b3I9PSAqLwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLCBib29sKTsKLW5hdGl2ZSBib29s
IG9wZXJhdG9yPT0oaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I9PSh1aW50LCB1aW50
KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPT0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBv
cGVyYXRvcj09KGJvb2wyLCBib29sMik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PShib29sMywg
Ym9vbDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0oYm9vbDQsIGJvb2w0KTsKLW5hdGl2ZSBi
b29sMiBvcGVyYXRvcj09KHVpbnQyLCB1aW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I9PSh1
aW50MywgdWludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPT0odWludDQsIHVpbnQ0KTsKLW5h
dGl2ZSBib29sMiBvcGVyYXRvcj09KGludDIsIGludDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9y
PT0oaW50MywgaW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I9PShpbnQ0LCBpbnQ0KTsKLW5h
dGl2ZSBib29sMiBvcGVyYXRvcj09KGZsb2F0MiwgZmxvYXQyKTsKLW5hdGl2ZSBib29sMyBvcGVy
YXRvcj09KGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj09KGZsb2F0NCwg
ZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPT0oZmxvYXQyeDIsIGZsb2F0MngyKTsK
LW5hdGl2ZSBib29sM3gyIG9wZXJhdG9yPT0oZmxvYXQzeDIsIGZsb2F0M3gyKTsKLW5hdGl2ZSBi
b29sNHgyIG9wZXJhdG9yPT0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBib29sMngzIG9w
ZXJhdG9yPT0oZmxvYXQyeDMsIGZsb2F0MngzKTsKLW5hdGl2ZSBib29sM3gzIG9wZXJhdG9yPT0o
ZmxvYXQzeDMsIGZsb2F0M3gzKTsKLW5hdGl2ZSBib29sNHgzIG9wZXJhdG9yPT0oZmxvYXQ0eDMs
IGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPT0oZmxvYXQyeDQsIGZsb2F0Mng0
KTsKLW5hdGl2ZSBib29sM3g0IG9wZXJhdG9yPT0oZmxvYXQzeDQsIGZsb2F0M3g0KTsKLW5hdGl2
ZSBib29sNHg0IG9wZXJhdG9yPT0oZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBib29sMngy
IG9wZXJhdG9yPT0oYm9vbDJ4MiwgYm9vbDJ4Mik7Ci1uYXRpdmUgYm9vbDN4MiBvcGVyYXRvcj09
KGJvb2wzeDIsIGJvb2wzeDIpOwotbmF0aXZlIGJvb2w0eDIgb3BlcmF0b3I9PShib29sNHgyLCBi
b29sNHgyKTsKLW5hdGl2ZSBib29sMngzIG9wZXJhdG9yPT0oYm9vbDJ4MywgYm9vbDJ4Myk7Ci1u
YXRpdmUgYm9vbDN4MyBvcGVyYXRvcj09KGJvb2wzeDMsIGJvb2wzeDMpOwotbmF0aXZlIGJvb2w0
eDMgb3BlcmF0b3I9PShib29sNHgzLCBib29sNHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9y
PT0oYm9vbDJ4NCwgYm9vbDJ4NCk7Ci1uYXRpdmUgYm9vbDN4NCBvcGVyYXRvcj09KGJvb2wzeDQs
IGJvb2wzeDQpOwotbmF0aXZlIGJvb2w0eDQgb3BlcmF0b3I9PShib29sNHg0LCBib29sNHg0KTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yPj4gKi8KLW5hdGl2ZSBpbnQgb3BlcmF0b3I+
PihpbnQsIHVpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3I+Pih1aW50LCB1aW50KTsKLQotLyog
RnVuY3Rpb25zIG5hbWVkIHJlZmxlY3QgKi8KLWZsb2F0IHJlZmxlY3QoZmxvYXQgaSwgZmxvYXQg
bikgewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci1mbG9hdDIgcmVmbGVj
dChmbG9hdDIgaSwgZmxvYXQyIG4pIHsKLSAgICByZXR1cm4gaSAtIDIgKiBuICogZG90KGksIG4p
OwotfQotZmxvYXQzIHJlZmxlY3QoZmxvYXQzIGksIGZsb2F0MyBuKSB7Ci0gICAgcmV0dXJuIGkg
LSAyICogbiAqIGRvdChpLCBuKTsKLX0KLWZsb2F0NCByZWZsZWN0KGZsb2F0NCBpLCBmbG9hdDQg
bikgewotICAgIHJldHVybiBpIC0gMiAqIG4gKiBkb3QoaSwgbik7Ci19Ci0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGxpdCAqLwotZmxvYXQ0IGxpdChmbG9hdCBuX2RvdF9sLCBmbG9hdCBuX2RvdF9o
LCBmbG9hdCBtKSB7Ci0gICAgZmxvYXQgYW1iaWVudCA9IDE7Ci0gICAgZmxvYXQgZGlmZnVzZSA9
IG1heCgwLCBuX2RvdF9sKTsKLSAgICBmbG9hdCBzcGVjdWxhciA9IG5fZG90X2wgPCAwIHx8IG5f
ZG90X2ggPCAwID8gMCA6IG5fZG90X2ggKiBtOwotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0LnggPSBhbWJpZW50OwotICAgIHJlc3VsdC55ID0gZGlmZnVzZTsKLSAgICByZXN1bHQueiA9
IHNwZWN1bGFyOwotICAgIHJlc3VsdC53ID0gMTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgbG9nMiAqLwotZmxvYXQgbG9nMihmbG9hdCB4KSB7Ci0gICAgcmV0
dXJuIGxvZyh4KSAvIGxvZyhmbG9hdCgyKSk7Ci19Ci1mbG9hdDIgbG9nMihmbG9hdDIgeCkgewot
ICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsb2cyKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbG9nMihm
bG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbG9nMih4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBsb2cyKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGxvZzIoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsb2cyKGZsb2F0NCB4KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cyKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IGxvZzIoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbG9nMih4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBsb2cyKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsb2cyKGZs
b2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9n
Mih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMihmbG9hdDN4MiB4KSB7Ci0g
ICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cy
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cyKHhbMl1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsb2cyKGZsb2F0NHgyIHgpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbG9nMih4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsb2cyKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9nMih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBs
b2cyKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsb2cyKGZsb2F0
MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxv
ZzIoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGxvZzIoZmxvYXQz
eDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cyKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cyKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGxvZzIoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbG9n
Mih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nMihmbG9hdDR4MyB4KSB7Ci0g
ICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxvZzIoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gbG9nMih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cy
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxvZzIoeFszXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cyKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0g
bG9nMih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1bMl0pOwotICAgIHJl
c3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbG9nMih4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cyKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBsb2cyKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBs
b2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cyKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxvZzIoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNd
ID0gbG9nMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBsb2cyKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9h
dDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbG9nMih4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBsb2cyKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxvZzIoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbG9nMih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsb2cyKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxvZzIoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gbG9nMih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cyKHhbMV1bM10pOwot
ICAgIHJlc3VsdFsyXVszXSA9IGxvZzIoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHg0IGxvZzIoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBsb2cyKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxvZzIoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbG9nMih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBsb2cyKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxvZzIoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbG9nMih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cy
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxvZzIoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbG9nMih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cyKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGxvZzIoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0g
bG9nMih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cyKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGxvZzIoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbG9nMih4WzJd
WzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBsb2cyKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBub3JtYWxpemUgKi8KLWZsb2F0IG5vcm1hbGl6
ZShmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDIgbm9ybWFs
aXplKGZsb2F0MiB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDMgbm9y
bWFsaXplKGZsb2F0MyB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci1mbG9hdDQg
bm9ybWFsaXplKGZsb2F0NCB4KSB7Ci0gICAgcmV0dXJuIHggLyBsZW5ndGgoeCk7Ci19Ci0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIGxkZXhwICovCi1mbG9hdCBsZGV4cChmbG9hdCB4LCBmbG9hdCBl
KSB7Ci0gICAgcmV0dXJuIHggKiBwb3coMiwgZSk7Ci19Ci1mbG9hdDIgbGRleHAoZmxvYXQyIHgs
IGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZGV4cCh4
WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZGV4cCh4WzFdLCB5WzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIGxkZXhwKGZsb2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGRleHAoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gbGRleHAoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbGRleHAoeFsyXSwg
eVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBsZGV4cChmbG9hdDQgeCwgZmxv
YXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGxkZXhwKHhbMF0s
IHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxkZXhwKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGxkZXhwKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGxkZXhwKHhbM10sIHlbM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBsZGV4cChmbG9hdDJ4MiB4LCBmbG9h
dDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhw
KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBsZGV4cChmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxv
YXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxk
ZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0s
IHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBsZGV4cChmbG9hdDR4MiB4LCBmbG9hdDR4
MiB5KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGxkZXhwKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0p
OwotICAgIHJlc3VsdFszXVsxXSA9IGxkZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBsZGV4cChmbG9hdDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0g
ICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhb
MF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBsZGV4cChmbG9hdDN4MyB4LCBm
bG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxk
ZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhw
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyBsZGV4cChmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxv
YXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxk
ZXhwKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0s
IHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGxkZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhw
KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGxkZXhwKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDJ4NCBsZGV4cChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxk
ZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4NCBsZGV4cChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxkZXhwKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxk
ZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0s
IHlbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxkZXhwKHhbMF1bM10sIHlbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGxkZXhwKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGxkZXhwKHhbMl1bM10sIHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4NCBsZGV4cChmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxkZXhwKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IGxkZXhwKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGxkZXhwKHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxkZXhwKHhbM11b
MF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGxkZXhwKHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGxkZXhwKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGxkZXhwKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGxk
ZXhwKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxkZXhwKHhbMF1bMl0s
IHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGxkZXhwKHhbMV1bMl0sIHlbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGxkZXhwKHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IGxkZXhwKHhbM11bMl0sIHlbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxkZXhw
KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGxkZXhwKHhbMV1bM10sIHlb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxkZXhwKHhbMl1bM10sIHlbMl1bM10pOwotICAg
IHJlc3VsdFszXVszXSA9IGxkZXhwKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhYnMgKi8KLXVpbnQgYWJzKHVpbnQgeCkgewot
ICAgIHJldHVybiB4OwotfQotaW50IGFicyhpbnQgeCkgewotICAgIGlmICh4IDwgMCkKLSAgICAg
ICAgcmV0dXJuIC14OwotICAgIHJldHVybiB4OwotfQotZmxvYXQgYWJzKGZsb2F0IHgpIHsKLSAg
ICBpZiAoeCA8IDApCi0gICAgICAgIHJldHVybiAteDsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQy
IGFicyh1aW50MiB4KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LXVpbnQzIGFicyh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
YWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBhYnModWludDQgeCkgewot
ICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0
WzFdID0gYWJzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRb
M10gPSBhYnMoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgYWJzKGludDIgeCkg
ewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgYWJzKGludDMg
eCkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICBy
ZXN1bHRbMV0gPSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGFicyhpbnQ0IHgpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBhYnMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhYnMoeFsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhYnMoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGFicyh4WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBhYnMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYWJzKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDQgYWJzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhYnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYWJzKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGFicyh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhYnMoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGFicyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgYWJzKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFicyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJz
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGFi
cyhmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFicyh4WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
YWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBhYnMoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngz
IGFicyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gYWJzKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBhYnMoZmxv
YXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMo
eFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGFicyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhYnMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYWJzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFicyh4
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gYWJzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgYWJzKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9h
dDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gYWJzKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGFicyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhYnMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gYWJzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFi
cyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFicyh4WzNdWzFdKTsK
LSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYWJz
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGFicyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBhYnMoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFi
cyhmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gYWJzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBhYnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
YWJzKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1
bHRbMV1bM10gPSBhYnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0
IGFicyhmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGFicyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhYnMoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gYWJzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFicyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhYnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gYWJzKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBhYnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGFicyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBhYnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYWJzKHhbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBhYnMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhYnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gYWJzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFicyh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBhYnMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYWJzKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFicyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBhYnMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gYWJzKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGFicyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhYnMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYWJzKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsy
XSA9IGFicyh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhYnMoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gYWJzKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGFicyh4WzJd
WzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBhYnMoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcm91bmQgKi8KLW5hdGl2ZSBmbG9hdCByb3Vu
ZChmbG9hdCk7Ci1mbG9hdDIgcm91bmQoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhbMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgcm91bmQoZmxvYXQzIHgpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsx
XSA9IHJvdW5kKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDQgcm91bmQoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IHJvdW5kKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJvdW5kKHhb
MV0pOwotICAgIHJlc3VsdFsyXSA9IHJvdW5kKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJvdW5k
KHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiByb3VuZChmbG9hdDJ4MiB4
KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiByb3VuZChmbG9hdDN4MiB4KSB7Ci0gICAg
ZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5k
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1b
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByb3VuZChmbG9hdDR4MiB4KSB7
Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5k
KHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MyByb3VuZChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyByb3VuZChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDR4MyByb3VuZChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAgIHJlc3VsdFsz
XVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5k
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFszXVsyXSA9IHJvdW5kKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
NCByb3VuZChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJvdW5kKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJvdW5k
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByb3VuZChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5kKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJvdW5k
KHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IHJvdW5kKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IHJvdW5kKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4NCByb3VuZChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHJvdW5kKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IHJvdW5kKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJvdW5kKHhbMl1bMF0pOwotICAg
IHJlc3VsdFszXVswXSA9IHJvdW5kKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJvdW5k
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJvdW5kKHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IHJvdW5kKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJvdW5kKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJvdW5kKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHJvdW5kKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJvdW5kKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IHJvdW5kKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJv
dW5kKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJvdW5kKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHJvdW5kKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJvdW5kKHhb
M11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBtdWwg
Ki8KLXVpbnQgbXVsKHVpbnQgeCwgdWludCB5KSB7Ci0gICAgcmV0dXJuIHggKiB5OwotfQotaW50
IG11bChpbnQgeCwgaW50IHkpIHsKLSAgICByZXR1cm4geCAqIHk7Ci19Ci1mbG9hdCBtdWwoZmxv
YXQgeCwgZmxvYXQgeSkgewotICAgIHJldHVybiB4ICogeTsKLX0KLXVpbnQyIG11bCh1aW50IHgs
IHVpbnQyIHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07
Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQy
IG11bCh1aW50MiB4LCB1aW50IHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLXVpbnQzIG11bCh1aW50IHgsIHVpbnQzIHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAg
cmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQzIG11bCh1
aW50MyB4LCB1aW50IHkpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFsw
XSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAq
IHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50IHgsIHVpbnQ0IHkpIHsK
LSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0
WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmVzdWx0WzNd
ID0geCAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG11bCh1aW50NCB4LCB1
aW50IHkpIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0g
ICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAg
cmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDIgbXVsKGlu
dCB4LCBpbnQyIHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVsw
XTsKLSAgICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50
MiBtdWwoaW50MiB4LCBpbnQgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1pbnQzIG11bChpbnQgeCwgaW50MyB5KSB7Ci0gICAgaW50MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAgcmVzdWx0
WzJdID0geCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbXVsKGludDMgeCwg
aW50IHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4WzBdICogeTsKLSAg
ICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXN1bHRbMl0gPSB4WzJdICogeTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotaW50NCBtdWwoaW50IHgsIGludDQgeSkgewotICAgIGludDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJlc3VsdFsxXSA9IHggKiB5WzFd
OwotICAgIHJlc3VsdFsyXSA9IHggKiB5WzJdOwotICAgIHJlc3VsdFszXSA9IHggKiB5WzNdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IG11bChpbnQ0IHgsIGludCB5KSB7Ci0gICAgaW50
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0geFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsx
XSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdID0geFszXSAq
IHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQgeCwgZmxvYXQyIHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHggKiB5WzBdOwotICAgIHJl
c3VsdFsxXSA9IHggKiB5WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZs
b2F0MiB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4
WzBdICogeTsKLSAgICByZXN1bHRbMV0gPSB4WzFdICogeTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIG11bChmbG9hdCB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0geCAqIHlbMF07Ci0gICAgcmVzdWx0WzFdID0geCAqIHlbMV07Ci0gICAg
cmVzdWx0WzJdID0geCAqIHlbMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwo
ZmxvYXQzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHhbMF0gKiB5OwotICAgIHJlc3VsdFsxXSA9IHhbMV0gKiB5OwotICAgIHJlc3VsdFsyXSA9IHhb
Ml0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0IHgsIGZsb2F0
NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSB4ICogeVswXTsKLSAg
ICByZXN1bHRbMV0gPSB4ICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSB4ICogeVsyXTsKLSAgICBy
ZXN1bHRbM10gPSB4ICogeVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChm
bG9hdDQgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
eFswXSAqIHk7Ci0gICAgcmVzdWx0WzFdID0geFsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdID0geFsy
XSAqIHk7Ci0gICAgcmVzdWx0WzNdID0geFszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngyIG11bChmbG9hdCB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHgg
KiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsx
XVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtdWwo
ZmxvYXQyeDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSB4WzBdWzBdICogeTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFd
ICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVsKGZsb2F0IHgsIGZsb2F0
M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBd
ID0geCAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4LCBmbG9hdCB5
KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5
OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhb
Ml1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsx
XVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQgeCwgZmxvYXQ0eDIgeSkgewot
ICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsy
XVswXTsKLSAgICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0g
PSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVsKGZsb2F0NHgyIHgsIGZsb2F0IHkp
IHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7
Ci0gICAgcmVzdWx0WzFdWzBdID0geFsxXVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsy
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzBdID0geFszXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBd
WzFdID0geFswXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzJdWzFdID0geFsyXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzFdID0geFszXVsxXSAq
IHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdCB4LCBmbG9hdDJ4
MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBd
WzBdOwotICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9
IHggKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFswXVsyXSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQgeSkg
ewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICogeTsK
LSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4WzBd
WzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRbMF1b
Ml0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbXVsKGZsb2F0IHgsIGZsb2F0M3gzIHkpIHsKLSAg
ICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBdID0geCAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0g
eCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIG11bChmbG9hdDN4MyB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1b
MF0gKiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsx
XSA9IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJl
c3VsdFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5
OwotICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhb
Ml1bMl0gKiB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBtdWwoZmxvYXQgeCwg
ZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4
ICogeVswXVswXTsKLSAgICByZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRb
Ml1bMF0gPSB4ICogeVsyXVswXTsKLSAgICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSB4ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0g
PSB4ICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV1bMl0gPSB4ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsK
LSAgICByZXN1bHRbM11bMl0gPSB4ICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgbXVsKGZsb2F0NHgzIHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsx
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNd
WzBdID0geFszXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAq
IHk7Ci0gICAgcmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
eFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0
WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdCB4LCBmbG9hdDJ4NCB5KSB7
Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHggKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFsxXVswXSA9IHggKiB5WzFdWzBdOwotICAgIHJlc3VsdFswXVsxXSA9IHggKiB5
WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IHggKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVsy
XSA9IHggKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IHggKiB5WzFdWzJdOwotICAgIHJl
c3VsdFswXVszXSA9IHggKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IHggKiB5WzFdWzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtdWwoZmxvYXQyeDQgeCwgZmxvYXQg
eSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4WzBdWzBdICog
eTsKLSAgICByZXN1bHRbMV1bMF0gPSB4WzFdWzBdICogeTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
WzBdWzFdICogeTsKLSAgICByZXN1bHRbMV1bMV0gPSB4WzFdWzFdICogeTsKLSAgICByZXN1bHRb
MF1bMl0gPSB4WzBdWzJdICogeTsKLSAgICByZXN1bHRbMV1bMl0gPSB4WzFdWzJdICogeTsKLSAg
ICByZXN1bHRbMF1bM10gPSB4WzBdWzNdICogeTsKLSAgICByZXN1bHRbMV1bM10gPSB4WzFdWzNd
ICogeTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0IHgsIGZsb2F0
M3g0IHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0geCAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzFdWzBdID0geCAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzJdWzBd
ID0geCAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzBdWzFdID0geCAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzFdWzFdID0geCAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0geCAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzBdWzJdID0geCAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0geCAq
IHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0geCAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBd
WzNdID0geCAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzNdID0geCAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzNdID0geCAqIHlbMl1bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IG11bChmbG9hdDN4NCB4LCBmbG9hdCB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHhbMF1bMF0gKiB5OwotICAgIHJlc3VsdFsxXVswXSA9IHhbMV1bMF0g
KiB5OwotICAgIHJlc3VsdFsyXVswXSA9IHhbMl1bMF0gKiB5OwotICAgIHJlc3VsdFswXVsxXSA9
IHhbMF1bMV0gKiB5OwotICAgIHJlc3VsdFsxXVsxXSA9IHhbMV1bMV0gKiB5OwotICAgIHJlc3Vs
dFsyXVsxXSA9IHhbMl1bMV0gKiB5OwotICAgIHJlc3VsdFswXVsyXSA9IHhbMF1bMl0gKiB5Owot
ICAgIHJlc3VsdFsxXVsyXSA9IHhbMV1bMl0gKiB5OwotICAgIHJlc3VsdFsyXVsyXSA9IHhbMl1b
Ml0gKiB5OwotICAgIHJlc3VsdFswXVszXSA9IHhbMF1bM10gKiB5OwotICAgIHJlc3VsdFsxXVsz
XSA9IHhbMV1bM10gKiB5OwotICAgIHJlc3VsdFsyXVszXSA9IHhbMl1bM10gKiB5OwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxvYXQgeCwgZmxvYXQ0eDQgeSkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB4ICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSB4ICogeVsxXVswXTsKLSAgICByZXN1bHRbMl1bMF0gPSB4ICogeVsyXVsw
XTsKLSAgICByZXN1bHRbM11bMF0gPSB4ICogeVszXVswXTsKLSAgICByZXN1bHRbMF1bMV0gPSB4
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSB4ICogeVsxXVsxXTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB4ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMV0gPSB4ICogeVszXVsxXTsKLSAg
ICByZXN1bHRbMF1bMl0gPSB4ICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSB4ICogeVsx
XVsyXTsKLSAgICByZXN1bHRbMl1bMl0gPSB4ICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMl0g
PSB4ICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bM10gPSB4ICogeVswXVszXTsKLSAgICByZXN1
bHRbMV1bM10gPSB4ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSB4ICogeVsyXVszXTsK
LSAgICByZXN1bHRbM11bM10gPSB4ICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0geFswXVswXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzBdID0geFsx
XVswXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzBdID0geFsyXVswXSAqIHk7Ci0gICAgcmVzdWx0WzNd
WzBdID0geFszXVswXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzFdID0geFswXVsxXSAqIHk7Ci0gICAg
cmVzdWx0WzFdWzFdID0geFsxXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzJdWzFdID0geFsyXVsxXSAq
IHk7Ci0gICAgcmVzdWx0WzNdWzFdID0geFszXVsxXSAqIHk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
eFswXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzJdID0geFsxXVsyXSAqIHk7Ci0gICAgcmVzdWx0
WzJdWzJdID0geFsyXVsyXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzJdID0geFszXVsyXSAqIHk7Ci0g
ICAgcmVzdWx0WzBdWzNdID0geFswXVszXSAqIHk7Ci0gICAgcmVzdWx0WzFdWzNdID0geFsxXVsz
XSAqIHk7Ci0gICAgcmVzdWx0WzJdWzNdID0geFsyXVszXSAqIHk7Ci0gICAgcmVzdWx0WzNdWzNd
ID0geFszXVszXSAqIHk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgbXVsKHVpbnQyIHgs
IHVpbnQyIHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotdWludCBtdWwodWludDMgeCwg
dWludDMgeSkgewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci11aW50IG11bCh1aW50NCB4LCB1
aW50NCB5KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWludCBtdWwoaW50MiB4LCBpbnQy
IHkpIHsKLSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotaW50IG11bChpbnQzIHgsIGludDMgeSkg
ewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1pbnQgbXVsKGludDQgeCwgaW50NCB5KSB7Ci0g
ICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0IG11bChmbG9hdDIgeCwgZmxvYXQyIHkpIHsK
LSAgICByZXR1cm4gZG90KHgsIHkpOwotfQotZmxvYXQgbXVsKGZsb2F0MyB4LCBmbG9hdDMgeSkg
ewotICAgIHJldHVybiBkb3QoeCwgeSk7Ci19Ci1mbG9hdCBtdWwoZmxvYXQ0IHgsIGZsb2F0NCB5
KSB7Ci0gICAgcmV0dXJuIGRvdCh4LCB5KTsKLX0KLWZsb2F0MiBtdWwoZmxvYXQyIHgsIGZsb2F0
MngyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVz
dWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MiBtdWwoZmxvYXQyeDIgeCwgZmxvYXQyIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF1bMF0gKiB5WzBdOwotICAg
IHJlc3VsdFswXSArPSB4WzFdWzBdICogeVsxXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJl
c3VsdFsxXSArPSB4WzBdWzFdICogeVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsxXVsxXSAqIHlb
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQyIHgsIGZsb2F0M3gy
IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0
WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICBy
ZXN1bHRbMl0gKz0geFswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJd
WzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDIgbXVsKGZsb2F0M3gyIHgsIGZsb2F0
MyB5KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3Vs
dFswXSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07
Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFd
ICogeVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBtdWwoZmxvYXQyIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV0gPSAw
OwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV0gKz0geFsx
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsz
XSA9IDA7Ci0gICAgcmVzdWx0WzNdICs9IHhbMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXSAr
PSB4WzFdICogeVszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyIG11bChmbG9h
dDR4MiB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
MDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhb
MV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1
bHRbMF0gKz0geFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRb
MV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwot
ICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsx
XSAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQzIHgsIGZs
b2F0MngzIHkpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0g
MDsKLSAgICByZXN1bHRbMV0gKz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhb
MV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDIgeSkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVsw
XSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSAr
PSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4
WzBdWzJdICogeVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXVsyXSAqIHlbMV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBtdWwoZmxvYXQzIHgsIGZsb2F0M3gzIHkpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0g
KiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRbMV0g
Kz0geFswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV0gKiB5WzFdWzFdOwotICAg
IHJlc3VsdFsxXSArPSB4WzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl0gPSAwOwotICAgIHJl
c3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl0gKz0geFsxXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgbXVsKGZsb2F0M3gzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBdWzBdICogeVswXTsK
LSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0WzBdICs9IHhbMl1b
MF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF1bMV0g
KiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICogeVsxXTsKLSAgICByZXN1bHRbMV0g
Kz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0g
eFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJl
c3VsdFsyXSArPSB4WzJdWzJdICogeVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IG11bChmbG9hdDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdICs9IHhbMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhbMl0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhbMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl0gKz0g
eFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFsw
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdICs9IHhbMV0gKiB5WzNdWzFdOwotICAgIHJlc3Vs
dFszXSArPSB4WzJdICogeVszXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG11
bChmbG9hdDR4MyB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gMDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAg
ICByZXN1bHRbMF0gKz0geFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICBy
ZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5
WzFdOwotICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0g
eFszXVsxXSAqIHlbM107Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFsw
XVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3Vs
dFsyXSArPSB4WzJdWzJdICogeVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MiBtdWwoZmxvYXQ0IHgsIGZsb2F0Mng0IHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IDA7Ci0gICAgcmVzdWx0WzBd
ICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXSArPSB4WzFdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdICs9IHhbM10gKiB5
WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdICs9IHhbMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV0gKz0g
eFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdICs9IHhbM10gKiB5WzFdWzNdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0Mng0IHgsIGZsb2F0MiB5KSB7Ci0gICAg
ZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSArPSB4WzBd
WzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0gICAgcmVzdWx0
WzFdID0gMDsKLSAgICByZXN1bHRbMV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFd
ICs9IHhbMV1bMV0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9
IHhbMF1bMl0gKiB5WzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdWzJdICogeVsxXTsKLSAgICBy
ZXN1bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1
bHRbM10gKz0geFsxXVszXSAqIHlbMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBt
dWwoZmxvYXQ0IHgsIGZsb2F0M3g0IHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IDA7Ci0gICAgcmVzdWx0WzBdICs9IHhbMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XSArPSB4WzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF0gKz0geFsyXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdICs9IHhbMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdICogeVsx
XVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdICs9
IHhbM10gKiB5WzFdWzNdOwotICAgIHJlc3VsdFsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdICs9IHhb
MF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXSArPSB4WzFdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbMl0gKz0geFsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzJdICs9IHhbM10gKiB5WzJdWzNd
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0M3g0IHgsIGZsb2F0MyB5
KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFsw
XSArPSB4WzBdWzBdICogeVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXVswXSAqIHlbMV07Ci0g
ICAgcmVzdWx0WzBdICs9IHhbMl1bMF0gKiB5WzJdOwotICAgIHJlc3VsdFsxXSA9IDA7Ci0gICAg
cmVzdWx0WzFdICs9IHhbMF1bMV0gKiB5WzBdOwotICAgIHJlc3VsdFsxXSArPSB4WzFdWzFdICog
eVsxXTsKLSAgICByZXN1bHRbMV0gKz0geFsyXVsxXSAqIHlbMl07Ci0gICAgcmVzdWx0WzJdID0g
MDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAqIHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhb
MV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSArPSB4WzJdWzJdICogeVsyXTsKLSAgICByZXN1
bHRbM10gPSAwOwotICAgIHJlc3VsdFszXSArPSB4WzBdWzNdICogeVswXTsKLSAgICByZXN1bHRb
M10gKz0geFsxXVszXSAqIHlbMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl1bM10gKiB5WzJdOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbXVsKGZsb2F0NCB4LCBmbG9hdDR4NCB5KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSAwOwotICAgIHJlc3VsdFswXSAr
PSB4WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF0gKz0geFsxXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdICs9IHhbMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXSArPSB4WzNdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV0gPSAwOwotICAgIHJlc3VsdFsxXSArPSB4WzBdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV0gKz0geFsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdICs9IHhb
Ml0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXSArPSB4WzNdICogeVsxXVszXTsKLSAgICByZXN1
bHRbMl0gPSAwOwotICAgIHJlc3VsdFsyXSArPSB4WzBdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml0gKz0geFsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdICs9IHhbMl0gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXSArPSB4WzNdICogeVsyXVszXTsKLSAgICByZXN1bHRbM10gPSAwOwotICAg
IHJlc3VsdFszXSArPSB4WzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM10gKz0geFsxXSAqIHlb
M11bMV07Ci0gICAgcmVzdWx0WzNdICs9IHhbMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFszXSAr
PSB4WzNdICogeVszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IG11bChmbG9h
dDR4NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
MDsKLSAgICByZXN1bHRbMF0gKz0geFswXVswXSAqIHlbMF07Ci0gICAgcmVzdWx0WzBdICs9IHhb
MV1bMF0gKiB5WzFdOwotICAgIHJlc3VsdFswXSArPSB4WzJdWzBdICogeVsyXTsKLSAgICByZXN1
bHRbMF0gKz0geFszXVswXSAqIHlbM107Ci0gICAgcmVzdWx0WzFdID0gMDsKLSAgICByZXN1bHRb
MV0gKz0geFswXVsxXSAqIHlbMF07Ci0gICAgcmVzdWx0WzFdICs9IHhbMV1bMV0gKiB5WzFdOwot
ICAgIHJlc3VsdFsxXSArPSB4WzJdWzFdICogeVsyXTsKLSAgICByZXN1bHRbMV0gKz0geFszXVsx
XSAqIHlbM107Ci0gICAgcmVzdWx0WzJdID0gMDsKLSAgICByZXN1bHRbMl0gKz0geFswXVsyXSAq
IHlbMF07Ci0gICAgcmVzdWx0WzJdICs9IHhbMV1bMl0gKiB5WzFdOwotICAgIHJlc3VsdFsyXSAr
PSB4WzJdWzJdICogeVsyXTsKLSAgICByZXN1bHRbMl0gKz0geFszXVsyXSAqIHlbM107Ci0gICAg
cmVzdWx0WzNdID0gMDsKLSAgICByZXN1bHRbM10gKz0geFswXVszXSAqIHlbMF07Ci0gICAgcmVz
dWx0WzNdICs9IHhbMV1bM10gKiB5WzFdOwotICAgIHJlc3VsdFszXSArPSB4WzJdWzNdICogeVsy
XTsKLSAgICByZXN1bHRbM10gKz0geFszXVszXSAqIHlbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBd
WzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSAr
PSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbXVs
KGZsb2F0MngyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsx
XVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsK
LSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0NHgyIG11bChmbG9hdDJ4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxvYXQ0
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAg
cmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsw
XSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsx
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMF1bMV0gKiB5
WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsyXVsxXTsKLSAgICByZXN1
bHRbM11bMV0gPSAwOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAg
ICByZXN1bHRbM11bMV0gKz0geFsxXVsxXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIG11bChmbG9hdDN4MiB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1b
MF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICog
eVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBd
WzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9
IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsx
XVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAq
IHlbMV1bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIG11bChmbG9hdDN4MiB4
LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAq
IHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsw
XVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0g
PSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MiBtdWwoZmxvYXQzeDIgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0
NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVsw
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11b
MF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1
bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMl1b
MF0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9
IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFd
WzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJd
WzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1b
MV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsz
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJl
c3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsy
XVsxXSAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG11bChmbG9h
dDR4MiB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJl
c3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsy
XVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwot
ICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFd
WzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0g
KiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBtdWwoZmxvYXQ0eDIgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3gyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBd
ICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVsw
XSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAg
IHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJd
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1b
MV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1
bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1b
MV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsKLSAg
ICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVsw
XTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFd
WzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFdICog
eVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBd
WzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0g
ICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsxXSAr
PSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbXVs
KGZsb2F0NHgyIHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsz
XVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICBy
ZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhb
MV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsK
LSAgICByZXN1bHRbM11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFd
ID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsx
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0g
eFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11b
MV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1
bHRbM11bMV0gKz0geFszXVsxXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MngzIG11bChmbG9hdDJ4MyB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0g
MDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQyeDMgeCwgZmxvYXQzeDIgeSkgewot
ICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsw
XVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwot
ICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJd
WzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRb
MF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlb
MV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3Vs
dFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0eDMgbXVsKGZsb2F0MngzIHgsIGZsb2F0NHgyIHkpIHsKLSAgICBmbG9hdDR4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVsw
XSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAg
IHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1b
MF0gPSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1
bHRbMl1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAg
ICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9
IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBd
WzFdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0g
ICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsz
XVsxXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMF1bMV0gKiB5WzNdWzBdOwotICAgIHJl
c3VsdFszXVsxXSArPSB4WzFdWzFdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwot
ICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0g
Kz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRb
MV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhb
MF1bMl0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsK
LSAgICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVsz
XVswXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdDN4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBd
ICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVsw
XVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0
WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAg
cmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4
WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsx
XSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlb
MF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3Vs
dFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwo
ZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAg
ICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzBdICs9
IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFd
WzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICog
eVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVz
dWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSAr
PSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFsw
XVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAq
IHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJl
c3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwot
ICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0g
Kz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRb
Ml1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0g
KiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJd
ICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJd
ICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAg
cmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsy
XSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMg
bXVsKGZsb2F0M3gzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsw
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAg
IHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBd
OwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1b
MF0gKz0geFsyXVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1
bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1b
MF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAg
ICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVsw
XTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBd
WzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFd
WzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1b
MF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsy
XVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbM11bMV0gPSAwOwotICAgIHJl
c3VsdFszXVsxXSArPSB4WzBdWzFdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFsx
XVsxXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMl1bMV0gKiB5WzNdWzJdOwot
ICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICBy
ZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhb
MV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsK
LSAgICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsy
XVswXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0
WzJdWzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFszXVsyXSA9IDA7Ci0gICAg
cmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFszXVsyXSArPSB4
WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsyXVsyXSAqIHlbM11bMl07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG11bChmbG9hdDR4MyB4LCBmbG9hdDJ4
NCB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4
WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsw
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVsw
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAg
IHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBd
OwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1b
MV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5
WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1b
MV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9
IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVz
dWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0g
ICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1b
Ml07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11bMl0gKiB5WzFdWzNdOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtdWwoZmxvYXQ0eDMgeCwgZmxvYXQzeDQgeSkgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzBdWzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1b
MV07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsx
XVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwot
ICAgIHJlc3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0g
PSAwOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRb
Ml1bMF0gKz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0g
KiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICBy
ZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFd
ICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVsw
XVszXTsKLSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFd
ICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAg
cmVzdWx0WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4
WzNdWzFdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlb
Ml1bMV07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3Vs
dFsyXVsxXSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1b
Ml0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAg
ICByZXN1bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVsw
XTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJd
WzJdICs9IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICog
eVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbXVsKGZsb2F0NHgzIHgs
IGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
MDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICog
eVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVz
dWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1b
M107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsz
XVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFswXVswXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNd
WzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRb
M11bMF0gKz0geFszXVswXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
MV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsK
LSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsxXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFd
ID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0geFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAg
cmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlb
Ml1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsx
XSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAg
IHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0gKz0g
eFszXVsxXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAg
ICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9
IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsy
XTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFszXVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJd
WzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVz
dWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJd
WzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0g
ICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICByZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11b
MF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFsz
XVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMl0gKz0geFszXVsyXSAq
IHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdDJ4NCB4
LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFsw
XVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsx
XVswXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0g
KiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsK
LSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsyXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzJd
ID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAg
cmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4
WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVsz
XSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlb
MV1bMV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IG11bChmbG9hdDJ4NCB4LCBm
bG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7
Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsw
XSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3Vs
dFsxXVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVsw
XSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsKLSAgICByZXN1bHRbMl1bMF0gKz0g
eFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMV1bMF0gKiB5WzJdWzFd
OwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMF1bMV0gKiB5
WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFdICogeVswXVsxXTsKLSAgICByZXN1
bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzFdID0g
MDsKLSAgICByZXN1bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJd
WzFdICs9IHhbMV1bMV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFd
WzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSAr
PSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAq
IHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJl
c3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwot
ICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMV1bM10g
PSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRb
MV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICBy
ZXN1bHRbMl1bM10gKz0geFswXVszXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhb
MV1bM10gKiB5WzJdWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtdWwoZmxv
YXQyeDQgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBdWzBdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsyXVswXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzFdWzBd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbM11bMF0gPSAwOwotICAgIHJlc3VsdFszXVswXSArPSB4
WzBdWzBdICogeVszXVswXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFsxXVswXSAqIHlbM11bMV07
Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFsxXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAg
IHJlc3VsdFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gPSAw
OwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1b
MV0gKz0geFsxXVsxXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1
bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1b
MV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9
IHhbMF1bMl0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICog
eVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVz
dWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0g
ICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFszXVsyXSA9
IDA7Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhbMF1bMl0gKiB5WzNdWzBdOwotICAgIHJlc3VsdFsz
XVsyXSArPSB4WzFdWzJdICogeVszXVsxXTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJl
c3VsdFswXVszXSArPSB4WzBdWzNdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsx
XVszXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10g
Kz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFd
WzFdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMF1bM10g
KiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICogeVsyXVsxXTsKLSAgICBy
ZXN1bHRbM11bM10gPSAwOwotICAgIHJlc3VsdFszXVszXSArPSB4WzBdWzNdICogeVszXVswXTsK
LSAgICByZXN1bHRbM11bM10gKz0geFsxXVszXSAqIHlbM11bMV07Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IG11bChmbG9hdDN4NCB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsK
LSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0
WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBd
ICogeVsxXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4
WzBdWzFdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07
Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMl1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3Vs
dFsxXVsxXSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsx
XSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFswXVsyXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFd
OwotICAgIHJlc3VsdFswXVsyXSArPSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1b
Ml0gPSAwOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1b
Ml0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzFd
WzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzJd
WzNdICogeVsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbXVsKGZsb2F0
M3g0IHgsIGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFswXVswXSAqIHlbMF1bMF07Ci0gICAgcmVz
dWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzJd
WzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsy
XVswXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMF1bMF0gKiB5WzJdWzBdOwotICAgIHJl
c3VsdFsyXVswXSArPSB4WzFdWzBdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsy
XVswXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0g
Kz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBd
WzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRb
MV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsKLSAgICBy
ZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhb
Ml1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzFd
ICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFdICogeVsy
XVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0
WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0gICAg
cmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSArPSB4
WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gPSAwOwotICAgIHJlc3VsdFsxXVsy
XSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsxXVsyXSAqIHlb
MV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5WzFdWzJdOwotICAgIHJlc3Vs
dFsyXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMF1bMl0gKiB5WzJdWzBdOwotICAg
IHJlc3VsdFsyXVsyXSArPSB4WzFdWzJdICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMl0gKz0g
eFsyXVsyXSAqIHlbMl1bMl07Ci0gICAgcmVzdWx0WzBdWzNdID0gMDsKLSAgICByZXN1bHRbMF1b
M10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzNdICs9IHhbMV1bM10gKiB5
WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNdICogeVswXVsyXTsKLSAgICByZXN1
bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzBdWzNdICogeVsxXVswXTsKLSAg
ICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzNdICs9
IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVszXSA9IDA7Ci0gICAgcmVzdWx0WzJd
WzNdICs9IHhbMF1bM10gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVszXSArPSB4WzFdWzNdICog
eVsyXVsxXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsyXVszXSAqIHlbMl1bMl07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IG11bChmbG9hdDN4NCB4LCBmbG9hdDR4MyB5KSB7Ci0g
ICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBd
WzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICog
eVswXVsxXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVz
dWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRbMV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0g
ICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSAr
PSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwotICAgIHJlc3VsdFsy
XVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFsxXVswXSAq
IHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJdWzJdOwotICAgIHJl
c3VsdFszXVswXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzBdICs9IHhbMF1bMF0gKiB5WzNdWzBdOwot
ICAgIHJlc3VsdFszXVswXSArPSB4WzFdWzBdICogeVszXVsxXTsKLSAgICByZXN1bHRbM11bMF0g
Kz0geFsyXVswXSAqIHlbM11bMl07Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRb
MF1bMV0gKz0geFswXVsxXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0g
KiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsxXVswXTsK
LSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzFd
ICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsyXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzJdWzFdICs9IHhbMF1bMV0gKiB5WzJdWzBdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzFdWzFd
ICogeVsyXVsxXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsyXVsxXSAqIHlbMl1bMl07Ci0gICAg
cmVzdWx0WzNdWzFdID0gMDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07
Ci0gICAgcmVzdWx0WzNdWzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsx
XSArPSB4WzJdWzFdICogeVszXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsy
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5WzFdWzBd
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1
bHRbMl1bMl0gKz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1b
Ml0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAg
ICByZXN1bHRbM11bMl0gPSAwOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzBdWzJdICogeVszXVsw
XTsKLSAgICByZXN1bHRbM11bMl0gKz0geFsxXVsyXSAqIHlbM11bMV07Ci0gICAgcmVzdWx0WzNd
WzJdICs9IHhbMl1bMl0gKiB5WzNdWzJdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFd
WzNdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0g
ICAgcmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1b
MF07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJl
c3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsx
XVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFszXVszXSA9IDA7Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMF1bM10gKiB5WzNd
WzBdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzFdWzNdICogeVszXVsxXTsKLSAgICByZXN1bHRb
M11bM10gKz0geFsyXVszXSAqIHlbM11bMl07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
Mng0IG11bChmbG9hdDR4NCB4LCBmbG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBd
WzBdOwotICAgIHJlc3VsdFswXVswXSArPSB4WzFdWzBdICogeVswXVsxXTsKLSAgICByZXN1bHRb
MF1bMF0gKz0geFsyXVswXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbM11bMF0g
KiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVswXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhb
MF1bMF0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVsxXVsxXTsK
LSAgICByZXN1bHRbMV1bMF0gKz0geFsyXVswXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzBd
ICs9IHhbM11bMF0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVsxXSA9IDA7Ci0gICAgcmVzdWx0
WzBdWzFdICs9IHhbMF1bMV0gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzFdWzFd
ICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFsyXVsxXSAqIHlbMF1bMl07Ci0gICAg
cmVzdWx0WzBdWzFdICs9IHhbM11bMV0gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVsxXSA9IDA7
Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVsx
XSArPSB4WzFdWzFdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsyXVsxXSAqIHlb
MV1bMl07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbM11bMV0gKiB5WzFdWzNdOwotICAgIHJlc3Vs
dFswXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMF1bMl0gKiB5WzBdWzBdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzFdWzJdICogeVswXVsxXTsKLSAgICByZXN1bHRbMF1bMl0gKz0g
eFsyXVsyXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbM11bMl0gKiB5WzBdWzNd
OwotICAgIHJlc3VsdFsxXVsyXSA9IDA7Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMF1bMl0gKiB5
WzFdWzBdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzFdWzJdICogeVsxXVsxXTsKLSAgICByZXN1
bHRbMV1bMl0gKz0geFsyXVsyXSAqIHlbMV1bMl07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbM11b
Ml0gKiB5WzFdWzNdOwotICAgIHJlc3VsdFswXVszXSA9IDA7Ci0gICAgcmVzdWx0WzBdWzNdICs9
IHhbMF1bM10gKiB5WzBdWzBdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzFdWzNdICogeVswXVsx
XTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsyXVszXSAqIHlbMF1bMl07Ci0gICAgcmVzdWx0WzBd
WzNdICs9IHhbM11bM10gKiB5WzBdWzNdOwotICAgIHJlc3VsdFsxXVszXSA9IDA7Ci0gICAgcmVz
dWx0WzFdWzNdICs9IHhbMF1bM10gKiB5WzFdWzBdOwotICAgIHJlc3VsdFsxXVszXSArPSB4WzFd
WzNdICogeVsxXVsxXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsyXVszXSAqIHlbMV1bMl07Ci0g
ICAgcmVzdWx0WzFdWzNdICs9IHhbM11bM10gKiB5WzFdWzNdOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4NCBtdWwoZmxvYXQ0eDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgIHJlc3VsdFswXVswXSArPSB4WzBd
WzBdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgcmVzdWx0WzBdWzBdICs9IHhbMl1bMF0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVswXSAr
PSB4WzNdWzBdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMF0gPSAwOwotICAgIHJlc3VsdFsx
XVswXSArPSB4WzBdWzBdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bMF0gKz0geFsxXVswXSAq
IHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMl1bMF0gKiB5WzFdWzJdOwotICAgIHJl
c3VsdFsxXVswXSArPSB4WzNdWzBdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMF0gPSAwOwot
ICAgIHJlc3VsdFsyXVswXSArPSB4WzBdWzBdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMF0g
Kz0geFsxXVswXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzBdICs9IHhbMl1bMF0gKiB5WzJd
WzJdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzNdWzBdICogeVsyXVszXTsKLSAgICByZXN1bHRb
MF1bMV0gPSAwOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzFdICogeVswXVswXTsKLSAgICBy
ZXN1bHRbMF1bMV0gKz0geFsxXVsxXSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhb
Ml1bMV0gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVsxXSArPSB4WzNdWzFdICogeVswXVszXTsK
LSAgICByZXN1bHRbMV1bMV0gPSAwOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzBdWzFdICogeVsx
XVswXTsKLSAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0
WzFdWzFdICs9IHhbMl1bMV0gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzNdWzFd
ICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bMV0gPSAwOwotICAgIHJlc3VsdFsyXVsxXSArPSB4
WzBdWzFdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bMV0gKz0geFsxXVsxXSAqIHlbMl1bMV07
Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMl1bMV0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsx
XSArPSB4WzNdWzFdICogeVsyXVszXTsKLSAgICByZXN1bHRbMF1bMl0gPSAwOwotICAgIHJlc3Vs
dFswXVsyXSArPSB4WzBdWzJdICogeVswXVswXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFsxXVsy
XSAqIHlbMF1bMV07Ci0gICAgcmVzdWx0WzBdWzJdICs9IHhbMl1bMl0gKiB5WzBdWzJdOwotICAg
IHJlc3VsdFswXVsyXSArPSB4WzNdWzJdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bMl0gPSAw
OwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzBdWzJdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1b
Ml0gKz0geFsxXVsyXSAqIHlbMV1bMV07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMl1bMl0gKiB5
WzFdWzJdOwotICAgIHJlc3VsdFsxXVsyXSArPSB4WzNdWzJdICogeVsxXVszXTsKLSAgICByZXN1
bHRbMl1bMl0gPSAwOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzBdWzJdICogeVsyXVswXTsKLSAg
ICByZXN1bHRbMl1bMl0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzJdICs9
IHhbMl1bMl0gKiB5WzJdWzJdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzNdWzJdICogeVsyXVsz
XTsKLSAgICByZXN1bHRbMF1bM10gPSAwOwotICAgIHJlc3VsdFswXVszXSArPSB4WzBdWzNdICog
eVswXVswXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFsxXVszXSAqIHlbMF1bMV07Ci0gICAgcmVz
dWx0WzBdWzNdICs9IHhbMl1bM10gKiB5WzBdWzJdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzNd
WzNdICogeVswXVszXTsKLSAgICByZXN1bHRbMV1bM10gPSAwOwotICAgIHJlc3VsdFsxXVszXSAr
PSB4WzBdWzNdICogeVsxXVswXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFsxXVszXSAqIHlbMV1b
MV07Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMl1bM10gKiB5WzFdWzJdOwotICAgIHJlc3VsdFsx
XVszXSArPSB4WzNdWzNdICogeVsxXVszXTsKLSAgICByZXN1bHRbMl1bM10gPSAwOwotICAgIHJl
c3VsdFsyXVszXSArPSB4WzBdWzNdICogeVsyXVswXTsKLSAgICByZXN1bHRbMl1bM10gKz0geFsx
XVszXSAqIHlbMl1bMV07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMl1bM10gKiB5WzJdWzJdOwot
ICAgIHJlc3VsdFsyXVszXSArPSB4WzNdWzNdICogeVsyXVszXTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0eDQgbXVsKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHkpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gMDsKLSAgICByZXN1bHRbMF1bMF0gKz0geFsw
XVswXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0WzBdWzBdICs9IHhbMV1bMF0gKiB5WzBdWzFdOwot
ICAgIHJlc3VsdFswXVswXSArPSB4WzJdWzBdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMF0g
Kz0geFszXVswXSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzBdID0gMDsKLSAgICByZXN1bHRb
MV1bMF0gKz0geFswXVswXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzBdICs9IHhbMV1bMF0g
KiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVswXSArPSB4WzJdWzBdICogeVsxXVsyXTsKLSAgICBy
ZXN1bHRbMV1bMF0gKz0geFszXVswXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzBdID0gMDsK
LSAgICByZXN1bHRbMl1bMF0gKz0geFswXVswXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzBd
ICs9IHhbMV1bMF0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVswXSArPSB4WzJdWzBdICogeVsy
XVsyXTsKLSAgICByZXN1bHRbMl1bMF0gKz0geFszXVswXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0
WzNdWzBdID0gMDsKLSAgICByZXN1bHRbM11bMF0gKz0geFswXVswXSAqIHlbM11bMF07Ci0gICAg
cmVzdWx0WzNdWzBdICs9IHhbMV1bMF0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVswXSArPSB4
WzJdWzBdICogeVszXVsyXTsKLSAgICByZXN1bHRbM11bMF0gKz0geFszXVswXSAqIHlbM11bM107
Ci0gICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICByZXN1bHRbMF1bMV0gKz0geFswXVsxXSAqIHlb
MF1bMF07Ci0gICAgcmVzdWx0WzBdWzFdICs9IHhbMV1bMV0gKiB5WzBdWzFdOwotICAgIHJlc3Vs
dFswXVsxXSArPSB4WzJdWzFdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMV0gKz0geFszXVsx
XSAqIHlbMF1bM107Ci0gICAgcmVzdWx0WzFdWzFdID0gMDsKLSAgICByZXN1bHRbMV1bMV0gKz0g
eFswXVsxXSAqIHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzFdICs9IHhbMV1bMV0gKiB5WzFdWzFd
OwotICAgIHJlc3VsdFsxXVsxXSArPSB4WzJdWzFdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1b
MV0gKz0geFszXVsxXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzFdID0gMDsKLSAgICByZXN1
bHRbMl1bMV0gKz0geFswXVsxXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzFdICs9IHhbMV1b
MV0gKiB5WzJdWzFdOwotICAgIHJlc3VsdFsyXVsxXSArPSB4WzJdWzFdICogeVsyXVsyXTsKLSAg
ICByZXN1bHRbMl1bMV0gKz0geFszXVsxXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzFdID0g
MDsKLSAgICByZXN1bHRbM11bMV0gKz0geFswXVsxXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNd
WzFdICs9IHhbMV1bMV0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsxXSArPSB4WzJdWzFdICog
eVszXVsyXTsKLSAgICByZXN1bHRbM11bMV0gKz0geFszXVsxXSAqIHlbM11bM107Ci0gICAgcmVz
dWx0WzBdWzJdID0gMDsKLSAgICByZXN1bHRbMF1bMl0gKz0geFswXVsyXSAqIHlbMF1bMF07Ci0g
ICAgcmVzdWx0WzBdWzJdICs9IHhbMV1bMl0gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVsyXSAr
PSB4WzJdWzJdICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bMl0gKz0geFszXVsyXSAqIHlbMF1b
M107Ci0gICAgcmVzdWx0WzFdWzJdID0gMDsKLSAgICByZXN1bHRbMV1bMl0gKz0geFswXVsyXSAq
IHlbMV1bMF07Ci0gICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzFdWzFdOwotICAgIHJl
c3VsdFsxXVsyXSArPSB4WzJdWzJdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bMl0gKz0geFsz
XVsyXSAqIHlbMV1bM107Ci0gICAgcmVzdWx0WzJdWzJdID0gMDsKLSAgICByZXN1bHRbMl1bMl0g
Kz0geFswXVsyXSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzJdICs9IHhbMV1bMl0gKiB5WzJd
WzFdOwotICAgIHJlc3VsdFsyXVsyXSArPSB4WzJdWzJdICogeVsyXVsyXTsKLSAgICByZXN1bHRb
Ml1bMl0gKz0geFszXVsyXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzJdID0gMDsKLSAgICBy
ZXN1bHRbM11bMl0gKz0geFswXVsyXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzJdICs9IHhb
MV1bMl0gKiB5WzNdWzFdOwotICAgIHJlc3VsdFszXVsyXSArPSB4WzJdWzJdICogeVszXVsyXTsK
LSAgICByZXN1bHRbM11bMl0gKz0geFszXVsyXSAqIHlbM11bM107Ci0gICAgcmVzdWx0WzBdWzNd
ID0gMDsKLSAgICByZXN1bHRbMF1bM10gKz0geFswXVszXSAqIHlbMF1bMF07Ci0gICAgcmVzdWx0
WzBdWzNdICs9IHhbMV1bM10gKiB5WzBdWzFdOwotICAgIHJlc3VsdFswXVszXSArPSB4WzJdWzNd
ICogeVswXVsyXTsKLSAgICByZXN1bHRbMF1bM10gKz0geFszXVszXSAqIHlbMF1bM107Ci0gICAg
cmVzdWx0WzFdWzNdID0gMDsKLSAgICByZXN1bHRbMV1bM10gKz0geFswXVszXSAqIHlbMV1bMF07
Ci0gICAgcmVzdWx0WzFdWzNdICs9IHhbMV1bM10gKiB5WzFdWzFdOwotICAgIHJlc3VsdFsxXVsz
XSArPSB4WzJdWzNdICogeVsxXVsyXTsKLSAgICByZXN1bHRbMV1bM10gKz0geFszXVszXSAqIHlb
MV1bM107Ci0gICAgcmVzdWx0WzJdWzNdID0gMDsKLSAgICByZXN1bHRbMl1bM10gKz0geFswXVsz
XSAqIHlbMl1bMF07Ci0gICAgcmVzdWx0WzJdWzNdICs9IHhbMV1bM10gKiB5WzJdWzFdOwotICAg
IHJlc3VsdFsyXVszXSArPSB4WzJdWzNdICogeVsyXVsyXTsKLSAgICByZXN1bHRbMl1bM10gKz0g
eFszXVszXSAqIHlbMl1bM107Ci0gICAgcmVzdWx0WzNdWzNdID0gMDsKLSAgICByZXN1bHRbM11b
M10gKz0geFswXVszXSAqIHlbM11bMF07Ci0gICAgcmVzdWx0WzNdWzNdICs9IHhbMV1bM10gKiB5
WzNdWzFdOwotICAgIHJlc3VsdFszXVszXSArPSB4WzJdWzNdICogeVszXVsyXTsKLSAgICByZXN1
bHRbM11bM10gKz0geFszXVszXSAqIHlbM11bM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyogRnVuY3Rpb25zIG5hbWVkIHJhZGlhbnMgKi8KLWZsb2F0IHJhZGlhbnMoZmxvYXQgeCkgewot
ICAgIHJldHVybiB4ICogMy4xNDE1OSAvIDE4MDsKLX0KLWZsb2F0MiByYWRpYW5zKGZsb2F0MiB4
KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSByYWRpYW5zKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyByYWRpYW5zKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSByYWRpYW5zKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IHJhZGlhbnMoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gcmFkaWFucyh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
IHJhZGlhbnMoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IHJhZGlhbnMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmFkaWFucyh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSByYWRpYW5zKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IHJhZGlhbnMoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHJhZGlhbnMoZmxvYXQyeDIgeCkgewotICAg
IGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiByYWRpYW5zKGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IHJhZGlhbnMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9
IHJhZGlhbnMoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIHJhZGlh
bnMoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSByYWRpYW5zKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJhZGlhbnMoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0g
PSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHJhZGlhbnMoeFszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHJhZGlhbnMoZmxvYXQyeDMgeCkgewot
ICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0p
OwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcmFk
aWFucyhmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHJhZGlhbnMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IHJhZGlhbnMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcmFkaWFucyh4WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSByYWRpYW5zKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDR4MyByYWRpYW5zKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmFkaWFucyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSByYWRpYW5zKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJhZGlhbnMoeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmFkaWFucyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJhZGlhbnMoeFsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSByYWRpYW5zKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSByYWRpYW5zKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHJhZGlhbnMoeFszXVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHJhZGlhbnMoZmxvYXQyeDQgeCkg
ewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByYWRpYW5zKHhbMV1b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHJhZGlhbnMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gcmFkaWFucyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1b
M10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJhZGlhbnMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IHJhZGlhbnMoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByYWRpYW5zKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJhZGlhbnMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmFkaWFucyh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByYWRpYW5zKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IHJhZGlhbnMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmFkaWFucyh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsx
XVsyXSA9IHJhZGlhbnMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSByYWRpYW5zKHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IHJhZGlhbnMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcmFkaWFucyh4WzJd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgcmFkaWFucyhmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJhZGlhbnMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmFkaWFucyh4WzFdWzBdKTsKLSAgICByZXN1bHRb
Ml1bMF0gPSByYWRpYW5zKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJhZGlhbnMoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcmFkaWFucyh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSByYWRpYW5zKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJhZGlhbnMoeFsy
XVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmFkaWFucyh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSByYWRpYW5zKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJhZGlhbnMoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcmFkaWFucyh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSByYWRpYW5zKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHJhZGlhbnMoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmFkaWFucyh4WzFdWzNdKTsKLSAgICByZXN1bHRb
Ml1bM10gPSByYWRpYW5zKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHJhZGlhbnMoeFsz
XVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNlaWwg
Ki8KLW5hdGl2ZSBmbG9hdCBjZWlsKGZsb2F0KTsKLWZsb2F0MiBjZWlsKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGNlaWwoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBjZWlsKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjZWlsKHhbMF0p
OwotICAgIHJlc3VsdFsxXSA9IGNlaWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gY2VpbCh4WzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNlaWwoZmxvYXQ0IHgpIHsKLSAgICBm
bG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNlaWwoeFswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gY2VpbCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjZWlsKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGNlaWwoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGNlaWwoZmxv
YXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWls
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjZWlsKGZsb2F0M3gyIHgpIHsKLSAg
ICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNlaWwoZmxvYXQ0eDIgeCkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4
WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjZWlsKHhbM11bMF0pOwotICAgIHJlc3VsdFsw
XVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBjZWlsKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGNl
aWwoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNlaWwoZmxvYXQy
eDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2Vp
bCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY2VpbChmbG9hdDN4
MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGNlaWwoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNlaWwoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gY2VpbCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjZWls
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjZWlsKGZsb2F0NHgzIHgpIHsKLSAg
ICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY2VpbCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBjZWlsKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGNlaWwo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY2VpbCh4WzNdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNlaWwoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBj
ZWlsKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjZWlsKHhbMl1b
Ml0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNlaWwoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGNlaWwoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNl
aWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNlaWwoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY2VpbCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSBjZWlsKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGNlaWwoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0
M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjZWlsKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGNlaWwoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY2VpbCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBjZWlsKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGNlaWwoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY2VpbCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBjZWlsKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNlaWwoeFsxXVszXSk7Ci0g
ICAgcmVzdWx0WzJdWzNdID0gY2VpbCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDQgY2VpbChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGNlaWwoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY2VpbCh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjZWlsKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVsw
XSA9IGNlaWwoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY2VpbCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjZWlsKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNlaWwo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY2VpbCh4WzNdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBjZWlsKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNlaWwoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gY2VpbCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBj
ZWlsKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNlaWwoeFswXVszXSk7Ci0gICAgcmVz
dWx0WzFdWzNdID0gY2VpbCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBjZWlsKHhbMl1b
M10pOwotICAgIHJlc3VsdFszXVszXSA9IGNlaWwoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGFzaW4gKi8KLW5hdGl2ZSBmbG9hdCBhc2luKGZs
b2F0KTsKLWZsb2F0MiBhc2luKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF0gPSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4oeFsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBhc2luKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2luKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW4o
eFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQ0IGFzaW4oZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGFzaW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNpbih4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBhc2luKHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW4oeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGFzaW4oZmxvYXQyeDIgeCkgewotICAgIGZsb2F0Mngy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBhc2luKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0NHgyIGFzaW4oZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbM11b
MF0gPSBhc2luKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gYXNpbih4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2lu
KHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGFzaW4oeFszXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0MngzIGFzaW4oZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4o
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQzeDMgYXNpbihmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhc2luKHhbMl1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGFzaW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gYXNpbih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhc2luKHhbMl1bMV0pOwotICAgIHJlc3VsdFsw
XVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJdKTsK
LSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MyBhc2luKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gYXNpbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhc2luKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGFzaW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gYXNpbih4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhc2luKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gYXNp
bih4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhc2luKHhbM11bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gYXNpbih4WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBhc2luKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGFzaW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGFzaW4oZmxv
YXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhc2lu
KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0
WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGFzaW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
YXNpbih4WzFdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAgIHJl
c3VsdFsxXVszXSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IGFzaW4oZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBhc2luKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGFzaW4oeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gYXNpbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
c2luKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGFzaW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gYXNpbih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gYXNpbih4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhc2luKHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGFzaW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gYXNpbih4
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXNpbihmbG9hdDR4NCB4
KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGFzaW4oeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gYXNpbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBhc2luKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGFzaW4oeFszXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gYXNpbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhc2luKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGFzaW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gYXNpbih4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhc2luKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGFzaW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gYXNp
bih4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhc2luKHhbM11bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGFzaW4oeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gYXNpbih4WzFdWzNd
KTsKLSAgICByZXN1bHRbMl1bM10gPSBhc2luKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9
IGFzaW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIGFzdWludCAqLwotdWludCBhc3VpbnQoaW50IHgpIHsKLSAgICByZXR1cm4gdWludCh4KTsK
LX0KLXVpbnQyIGFzdWludChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotdWludDMgYXN1aW50KGludDMgeCkgewotICAgIHVpbnQzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotdWludDQgYXN1aW50KGludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQgYXN1aW50KHVpbnQgeCkgewotICAgIHJldHVy
biB4OwotfQotdWludDIgYXN1aW50KHVpbnQyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLXVpbnQz
IGFzdWludCh1aW50MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci11aW50NCBhc3VpbnQodWludDQg
eCkgewotICAgIHJldHVybiB4OwotfQotbmF0aXZlIHVpbnQgYXN1aW50KGZsb2F0KTsKLXVpbnQy
IGFzdWludChmbG9hdDIgeCkgewotICAgIHVpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBh
c3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci11aW50MyBhc3VpbnQoZmxvYXQzIHgpIHsKLSAgICB1aW50MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYXN1aW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzdWludCh4WzFd
KTsKLSAgICByZXN1bHRbMl0gPSBhc3VpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LXVpbnQ0IGFzdWludChmbG9hdDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBhc3VpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXN1aW50KHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IGFzdWludCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBhc3VpbnQoeFszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIHBvdyAqLwotbmF0aXZl
IGZsb2F0IHBvdyhmbG9hdCwgZmxvYXQpOwotZmxvYXQyIHBvdyhmbG9hdDIgeCwgZmxvYXQyIHkp
IHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsK
LSAgICByZXN1bHRbMV0gPSBwb3coeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MyBwb3coZmxvYXQzIHgsIGZsb2F0MyB5KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBwb3coeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gcG93KHhbMV0s
IHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IHBvdyh4WzJdLCB5WzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0IHBvdyhmbG9hdDQgeCwgZmxvYXQ0IHkpIHsKLSAgICBmbG9hdDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IHBvdyh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBw
b3coeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gcG93KHhbMl0sIHlbMl0pOwotICAgIHJl
c3VsdFszXSA9IHBvdyh4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDIgcG93KGZsb2F0MngyIHgsIGZsb2F0MngyIHkpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsx
XSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBwb3coZmxvYXQzeDIgeCwgZmxvYXQzeDIg
eSkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1b
MV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFdLCB5WzJdWzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgcG93KGZsb2F0NHgyIHgsIGZsb2F0NHgy
IHkpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1b
MF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gcG93KHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IHBvdyh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgcG93KGZsb2F0MngzIHgsIGZsb2F0MngzIHkpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFsw
XVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIHBvdyhmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHBvdyh4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBwb3coeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0
WzJdWzFdID0gcG93KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4
WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBwb3coZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBwb3coeFswXVswXSwgeVswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcG93KHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHBvdyh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBwb3co
eFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gcG93KHhbMF1bMV0sIHlbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcG93
KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBwb3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gcG93KHhbMl1bMl0sIHlbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IHBv
dyh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgcG93
KGZsb2F0Mng0IHgsIGZsb2F0Mng0IHkpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBv
dyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IHBvdyh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBw
b3coeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlb
MF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgcG93KGZsb2F0M3g0IHgsIGZsb2F0M3g0IHkpIHsK
LSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcG93KHhbMF1bMF0sIHlb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHBvdyh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBwb3coeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cG93KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHBvdyh4WzFdWzFdLCB5
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBwb3coeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAg
cmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsyXSwg
eVsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gcG93KHhbMF1bM10sIHlbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IHBvdyh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10g
PSBwb3coeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IHBvdyhmbG9hdDR4NCB4LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IHBvdyh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBwb3coeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcG93KHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHBvdyh4WzNdWzBdLCB5WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBwb3coeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcG93KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHBvdyh4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBwb3coeFszXVsxXSwgeVszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gcG93KHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IHBvdyh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBwb3coeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcG93KHhbM11bMl0sIHlbM11bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IHBvdyh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBwb3coeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gcG93KHhbMl1b
M10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IHBvdyh4WzNdWzNdLCB5WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgdGFuICovCi1uYXRp
dmUgZmxvYXQgdGFuKGZsb2F0KTsKLWZsb2F0MiB0YW4oZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSB0YW4o
eFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyB0YW4oZmxvYXQzIHgpIHsKLSAg
ICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IHRhbih4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSB0YW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gdGFuKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgdGFuKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSB0YW4oeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdGFuKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IHRhbih4WzJdKTsKLSAgICByZXN1bHRbM10gPSB0YW4oeFszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHRhbihmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQy
eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgdGFuKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHRhbih4WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
dGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IHRhbihmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHRhbih4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRhbih4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbM11bMV0gPSB0YW4oeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MngzIHRhbihmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4
WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gdGFuKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyB0YW4o
ZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0
YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFsyXVswXSA9IHRhbih4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSB0YW4oeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gdGFuKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHRh
bih4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgdGFuKGZsb2F0NHgzIHgpIHsKLSAgICBm
bG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdGFuKHhbMF1bMF0pOwotICAgIHJl
c3VsdFsxXVswXSA9IHRhbih4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSB0YW4oeFsyXVsw
XSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdGFuKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHRhbih4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHRhbih4WzNdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
dGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHRhbih4WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSB0YW4oeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0
IHRhbihmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdGFuKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSB0YW4oeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gdGFuKHhbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSB0YW4oeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3g0IHRhbihmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IHRhbih4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSB0YW4oeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzJdWzBdID0gdGFuKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHRhbih4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSB0YW4oeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gdGFuKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSB0YW4oeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhb
Ml1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IHRhbih4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSB0YW4oeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdGFuKHhbMl1bM10pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCB0YW4oZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0
NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSB0YW4oeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gdGFuKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHRhbih4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSB0YW4oeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdGFu
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHRhbih4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSB0YW4oeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdGFuKHhbM11bMV0pOwot
ICAgIHJlc3VsdFswXVsyXSA9IHRhbih4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSB0YW4o
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdGFuKHhbMl1bMl0pOwotICAgIHJlc3VsdFsz
XVsyXSA9IHRhbih4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSB0YW4oeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gdGFuKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHRhbih4
WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSB0YW4oeFszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGZtYSAqLwotZmxvYXQgZm1hKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHopIHsKLSAgICByZXR1cm4geCAqIHkgKyB6OwotfQotZmxvYXQyIGZt
YShmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiB6KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBmbWEoeFswXSwgeVswXSwgelswXSk7Ci0gICAgcmVzdWx0WzFdID0gZm1h
KHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZm1hKGZs
b2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIHopIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGZtYSh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsx
XSwgeVsxXSwgelsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZm1hKHhbMl0sIHlbMl0sIHpbMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZm1hKGZsb2F0NCB4LCBmbG9hdDQgeSwgZmxv
YXQ0IHopIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtYSh4WzBdLCB5
WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbWEoeFsxXSwgeVsxXSwgelsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gZm1hKHhbMl0sIHlbMl0sIHpbMl0pOwotICAgIHJlc3VsdFszXSA9IGZtYSh4
WzNdLCB5WzNdLCB6WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZm1hKGZs
b2F0MngyIHgsIGZsb2F0MngyIHksIGZsb2F0MngyIHopIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDN4MiBmbWEoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbWEoeFswXVswXSwgeVsw
XVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhbMV1bMF0sIHlbMV1bMF0s
IHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBdLCB5WzJdWzBdLCB6WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZm1hKGZsb2F0NHgyIHgsIGZsb2F0NHgyIHksIGZsb2F0
NHgyIHopIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhb
MF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsy
XVswXSwgelsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZm1hKHhbM11bMF0sIHlbM11bMF0s
IHpbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFdLCB5WzBdWzFdLCB6WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGZtYSh4WzNdWzFdLCB5WzNdWzFdLCB6WzNdWzFdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgZm1hKGZsb2F0MngzIHgsIGZsb2F0MngzIHksIGZsb2F0
MngzIHopIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhb
MF1bMF0sIHlbMF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBd
LCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVsw
XVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0s
IHpbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGZtYShmbG9hdDN4MyB4LCBmbG9hdDN4
MyB5LCBmbG9hdDN4MyB6KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
bWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1hKHhb
Ml1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtYSh4WzBdWzFd
LCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbWEoeFsxXVsxXSwgeVsx
XVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1hKHhbMl1bMV0sIHlbMl1bMV0s
IHpbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbWEoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwg
ZmxvYXQ0eDMgeikgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
bWEoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1hKHhb
MV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtYSh4WzJdWzBd
LCB5WzJdWzBdLCB6WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbWEoeFszXVswXSwgeVsz
XVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0s
IHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1hKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gZm1hKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGZtYSh4WzNdWzJdLCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDQgZm1hKGZsb2F0Mng0IHgsIGZsb2F0Mng0IHksIGZsb2F0Mng0IHopIHsKLSAgICBm
bG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0s
IHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGZtYSh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBmbWEoeFsxXVsyXSwgeVsxXVsyXSwgelsxXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZm1hKHhbMF1bM10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGZtYSh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDQgZm1hKGZsb2F0M3g0IHgsIGZsb2F0M3g0IHksIGZsb2F0M3g0IHopIHsKLSAgICBm
bG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1hKHhbMF1bMF0sIHlbMF1bMF0s
IHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtYSh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbWEoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7
Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1hKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZtYSh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBmbWEoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEo
eFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZm1hKHhbMF1b
M10sIHlbMF1bM10sIHpbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZtYSh4WzFdWzNdLCB5
WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbWEoeFsyXVszXSwgeVsyXVsz
XSwgelsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGZtYShmbG9hdDR4
NCB4LCBmbG9hdDR4NCB5LCBmbG9hdDR4NCB6KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGZtYSh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmbWEoeFsxXVswXSwgeVsxXVswXSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gZm1hKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9
IGZtYSh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbWEo
eFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1hKHhbMV1b
MV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtYSh4WzJdWzFdLCB5
WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmbWEoeFszXVsxXSwgeVszXVsx
XSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZm1hKHhbMF1bMl0sIHlbMF1bMl0sIHpb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtYSh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJd
KTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbWEoeFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gZm1hKHhbM11bMl0sIHlbM11bMl0sIHpbM11bMl0pOwotICAgIHJl
c3VsdFswXVszXSA9IGZtYSh4WzBdWzNdLCB5WzBdWzNdLCB6WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBmbWEoeFsxXVszXSwgeVsxXVszXSwgelsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZm1hKHhbMl1bM10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZt
YSh4WzNdWzNdLCB5WzNdWzNdLCB6WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgZGV0ZXJtaW5hbnQgKi8KLWZsb2F0IGRldGVybWluYW50KGZsb2F0
IHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0IGRldGVybWluYW50KGZsb2F0MngyIHgpIHsK
LSAgICByZXR1cm4geFswXVswXSAqIHhbMV1bMV0gLSB4WzFdWzBdICogeFswXVsxXTsKLX0KLWZs
b2F0IGRldGVybWluYW50KGZsb2F0M3gzIHgpIHsKLSAgICByZXR1cm4geFswXVswXSAqIHhbMV1b
MV0gKiB4WzJdWzJdICsKLSAgICAgICAgICAgeFsxXVswXSAqIHhbMl1bMV0gKiB4WzBdWzJdICsK
LSAgICAgICAgICAgeFsyXVswXSAqIHhbMF1bMV0gKiB4WzFdWzJdIC0KLSAgICAgICAgICAgeFsw
XVsyXSAqIHhbMV1bMV0gKiB4WzJdWzBdIC0KLSAgICAgICAgICAgeFsxXVsyXSAqIHhbMl1bMV0g
KiB4WzBdWzBdIC0KLSAgICAgICAgICAgeFsyXVsyXSAqIHhbMF1bMV0gKiB4WzFdWzBdOwotfQot
ZmxvYXQgZGV0ZXJtaW5hbnQoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0IHJlc3VsdDsKLSAgICBm
bG9hdDN4MyBtaW5vcjsKLSAgICBtaW5vclswXVswXSA9IHhbMV1bMV07Ci0gICAgbWlub3JbMV1b
MF0gPSB4WzJdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFszXVsxXTsKLSAgICBtaW5vclswXVsx
XSA9IHhbMV1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzJdWzJdOwotICAgIG1pbm9yWzJdWzFd
ID0geFszXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMV1bM107Ci0gICAgbWlub3JbMV1bMl0g
PSB4WzJdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFszXVszXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgKyB4WzBdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIG1pbm9yWzBdWzBdID0geFsw
XVsxXTsKLSAgICBtaW5vclsxXVswXSA9IHhbMl1bMV07Ci0gICAgbWlub3JbMl1bMF0gPSB4WzNd
WzFdOwotICAgIG1pbm9yWzBdWzFdID0geFswXVsyXTsKLSAgICBtaW5vclsxXVsxXSA9IHhbMl1b
Ml07Ci0gICAgbWlub3JbMl1bMV0gPSB4WzNdWzJdOwotICAgIG1pbm9yWzBdWzJdID0geFswXVsz
XTsKLSAgICBtaW5vclsxXVsyXSA9IHhbMl1bM107Ci0gICAgbWlub3JbMl1bMl0gPSB4WzNdWzNd
OwotICAgIHJlc3VsdCA9IHJlc3VsdCAtIHhbMV1bMF0gKiBkZXRlcm1pbmFudChtaW5vcik7Ci0g
ICAgbWlub3JbMF1bMF0gPSB4WzBdWzFdOwotICAgIG1pbm9yWzFdWzBdID0geFsxXVsxXTsKLSAg
ICBtaW5vclsyXVswXSA9IHhbM11bMV07Ci0gICAgbWlub3JbMF1bMV0gPSB4WzBdWzJdOwotICAg
IG1pbm9yWzFdWzFdID0geFsxXVsyXTsKLSAgICBtaW5vclsyXVsxXSA9IHhbM11bMl07Ci0gICAg
bWlub3JbMF1bMl0gPSB4WzBdWzNdOwotICAgIG1pbm9yWzFdWzJdID0geFsxXVszXTsKLSAgICBt
aW5vclsyXVsyXSA9IHhbM11bM107Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgeFsyXVswXSAqIGRl
dGVybWluYW50KG1pbm9yKTsKLSAgICBtaW5vclswXVswXSA9IHhbMF1bMV07Ci0gICAgbWlub3Jb
MV1bMF0gPSB4WzFdWzFdOwotICAgIG1pbm9yWzJdWzBdID0geFsyXVsxXTsKLSAgICBtaW5vclsw
XVsxXSA9IHhbMF1bMl07Ci0gICAgbWlub3JbMV1bMV0gPSB4WzFdWzJdOwotICAgIG1pbm9yWzJd
WzFdID0geFsyXVsyXTsKLSAgICBtaW5vclswXVsyXSA9IHhbMF1bM107Ci0gICAgbWlub3JbMV1b
Ml0gPSB4WzFdWzNdOwotICAgIG1pbm9yWzJdWzJdID0geFsyXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgLSB4WzNdWzBdICogZGV0ZXJtaW5hbnQobWlub3IpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmbG9vciAqLwotbmF0aXZlIGZsb2F0IGZsb29yKGZs
b2F0KTsKLWZsb2F0MiBmbG9vcihmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmbG9vcihmbG9hdDMgeCkgewotICAgIGZsb2F0
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
Zmxvb3IoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NCBmbG9vcihmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gZmxvb3IoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmxvb3IoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gZmxvb3IoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gZmxvb3IoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZsb29yKGZsb2F0MngyIHgpIHsK
LSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
Zmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZsb29yKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9h
dDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsy
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZsb29yKGZsb2F0NHgyIHgpIHsKLSAg
ICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0g
ICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxv
b3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsx
XVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNd
WzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZs
b29yKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxv
b3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
M3gzIGZsb29yKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxv
b3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgzIGZsb29yKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBd
ID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxv
b3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNd
WzJdID0gZmxvb3IoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZs
b29yKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxvb3IoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxv
b3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gZmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3IoeFsw
XVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0M3g0IGZsb29yKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZmxvb3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxv
b3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZmxvb3IoeFsx
XVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZmxvb3IoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7
Ci0gICAgcmVzdWx0WzJdWzNdID0gZmxvb3IoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHg0IGZsb29yKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdWzBdID0gZmxvb3IoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZmxv
b3IoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZmxvb3IoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzNdWzBdID0gZmxvb3IoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZmxvb3IoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZmxvb3IoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZmxvb3IoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZmxvb3IoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZmxvb3IoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
Zmxvb3IoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZmxvb3IoeFsyXVsyXSk7Ci0gICAg
cmVzdWx0WzNdWzJdID0gZmxvb3IoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZmxvb3Io
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZmxvb3IoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gZmxvb3IoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZmxvb3IoeFszXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGNyb3NzICov
Ci1mbG9hdDMgY3Jvc3MoZmxvYXQzIHUsIGZsb2F0MyB2KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsK
LSAgICByZXN1bHQueCA9IHUueSAqIHYueiAtIHUueiAqIHYueTsKLSAgICByZXN1bHQueSA9IHUu
eiAqIHYueCAtIHUueCAqIHYuejsKLSAgICByZXN1bHQueiA9IHUueCAqIHYueSAtIHUueSAqIHYu
eDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgaXNmaW5pdGUg
Ki8KLW5hdGl2ZSBib29sIGlzZmluaXRlKGZsb2F0KTsKLWJvb2wyIGlzZmluaXRlKGZsb2F0MiB4
KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzZmluaXRlKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGlzZmluaXRlKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1i
b29sMyBpc2Zpbml0ZShmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF0gPSBpc2Zpbml0ZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2Zpbml0ZSh4WzFdKTsKLSAg
ICByZXN1bHRbMl0gPSBpc2Zpbml0ZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bDQgaXNmaW5pdGUoZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gaXNmaW5pdGUoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNmaW5pdGUoeFsxXSk7Ci0gICAg
cmVzdWx0WzJdID0gaXNmaW5pdGUoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNmaW5pdGUoeFsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9j
a2VkT3IgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50Kiwg
dWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0
b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3Io
ZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2
ZSB2b2lkIEludGVybG9ja2VkT3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3Jv
dXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihkZXZpY2UgYXRvbWljX2ludCos
IGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVh
ZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIElu
dGVybG9ja2VkT3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCopOwot
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRPcih0aHJlYWRncm91cCBhdG9taWNfdWludCosIHVpbnQs
IGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0
b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3Io
dGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRp
dmUgdm9pZCBJbnRlcmxvY2tlZE9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVh
ZGdyb3VwIGludCopOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXRhbjIgKi8KLW5hdGl2ZSBmbG9h
dCBhdGFuMihmbG9hdCwgZmxvYXQpOwotZmxvYXQyIGF0YW4yKGZsb2F0MiB4LCBmbG9hdDIgeSkg
ewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXRhbjIoeFswXSwgeVswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXRhbjIoeFsxXSwgeVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBhdGFuMihmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGF0YW4yKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IGF0
YW4yKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IGF0YW4yKHhbMl0sIHlbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgYXRhbjIoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhdGFuMih4WzBdLCB5WzBdKTsKLSAg
ICByZXN1bHRbMV0gPSBhdGFuMih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBhdGFuMih4
WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBhdGFuMih4WzNdLCB5WzNdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgYXRhbjIoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkgewot
ICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDIgYXRhbjIoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSkgewotICAgIGZsb2F0M3gyIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
dGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFd
LCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0eDIgYXRhbjIoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAg
IGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0g
PSBhdGFuMih4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBd
WzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFd
KTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBhdGFuMih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQyeDMgYXRhbjIoZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0Mngz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4
WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgYXRhbjIoZmxvYXQzeDMgeCwgZmxvYXQzeDMgeSkg
ewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFu
Mih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5
WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAg
ICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1b
Ml0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgYXRhbjIoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSkgewotICAgIGZsb2F0NHgzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBh
dGFuMih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBd
LCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFu
Mih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBhdGFuMih4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDQgYXRhbjIoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBh
dGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFu
Mih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgYXRh
bjIoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBhdGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBh
dGFuMih4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJd
LCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBhdGFuMih4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRb
MV1bM10gPSBhdGFuMih4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBhdGFu
Mih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgYXRh
bjIoZmxvYXQ0eDQgeCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBhdGFuMih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBhdGFuMih4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBhdGFuMih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBhdGFuMih4WzNdWzBdLCB5WzNdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBhdGFuMih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBhdGFuMih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBh
dGFuMih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBhdGFuMih4WzNdWzFd
LCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBhdGFuMih4WzBdWzJdLCB5WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBhdGFuMih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBhdGFuMih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBhdGFu
Mih4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBhdGFuMih4WzBdWzNdLCB5
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBhdGFuMih4WzFdWzNdLCB5WzFdWzNdKTsKLSAg
ICByZXN1bHRbMl1bM10gPSBhdGFuMih4WzJdWzNdLCB5WzJdWzNdKTsKLSAgICByZXN1bHRbM11b
M10gPSBhdGFuMih4WzNdWzNdLCB5WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMgKi8KLW5h
dGl2ZSB2b2lkIERldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1bmN0
aW9ucyBuYW1lZCBmbW9kICovCi0KLWZsb2F0IGZtb2QoZmxvYXQgeCwgZmxvYXQgeSkgewotICAg
IHVpbnQgd2hvbGUgPSB1aW50KHggLyB5KTsKLSAgICBmbG9hdCBtdWx0aXBsZSA9IGZsb2F0KHdo
b2xlKSAqIHk7Ci0gICAgcmV0dXJuIHggLSBtdWx0aXBsZTsKLX0KLWZsb2F0MiBmbW9kKGZsb2F0
MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZm1v
ZCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmbW9kKHhbMV0sIHlbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZm1vZChmbG9hdDMgeCwgZmxvYXQzIHkpIHsKLSAgICBm
bG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVswXSk7Ci0gICAgcmVz
dWx0WzFdID0gZm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBmbW9kKHhbMl0sIHlb
Ml0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZm1vZChmbG9hdDQgeCwgZmxvYXQ0
IHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZtb2QoeFswXSwgeVsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZm1vZCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBm
bW9kKHhbMl0sIHlbMl0pOwotICAgIHJlc3VsdFszXSA9IGZtb2QoeFszXSwgeVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIGZtb2QoZmxvYXQyeDIgeCwgZmxvYXQyeDIgeSkg
ewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0s
IHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MiBmbW9kKGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZtb2Qo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0NHgyIGZtb2QoZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gZm1vZCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmbW9kKHhbM11b
MF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZtb2Qo
eFszXVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZtb2Qo
ZmxvYXQyeDMgeCwgZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZt
b2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZm1vZCh4WzBdWzFdLCB5
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhbMV1bMV0sIHlbMV1bMV0pOwotICAg
IHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQz
eDMgZm1vZChmbG9hdDN4MyB4LCBmbG9hdDN4MyB5KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZm1vZCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhb
Ml1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZtb2QoeFswXVsxXSwgeVswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZm1vZCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSBmbW9kKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZt
b2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBmbW9kKGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkp
IHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZm1vZCh4WzBdWzBd
LCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmbW9kKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGZtb2QoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZm1vZCh4WzNdWzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhb
MF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1
bHRbM11bMV0gPSBmbW9kKHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZt
b2QoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5
WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmbW9kKHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGZtb2QoeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0Mng0IGZtb2QoZmxvYXQyeDQgeCwgZmxvYXQyeDQgeSkgewotICAgIGZsb2F0
Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZtb2QoeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZm1vZCh4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBmbW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZt
b2QoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZt
b2QoZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmbW9kKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9
IGZtb2QoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZm1vZCh4WzJdWzBd
LCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmbW9kKHhbMF1bMV0sIHlbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGZtb2QoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gZm1vZCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmbW9kKHhb
MF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZtb2QoeFsxXVsyXSwgeVsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBmbW9kKHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGZt
b2QoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZm1vZCh4WzJdWzNdLCB5
WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgZm1vZChmbG9hdDR4NCB4
LCBmbG9hdDR4NCB5KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZtb2QoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZm1vZCh4WzFdWzBd
LCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmbW9kKHhbMl1bMF0sIHlbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGZtb2QoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gZm1vZCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmbW9kKHhb
MV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZtb2QoeFsyXVsxXSwgeVsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZm1vZCh4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1
bHRbMF1bMl0gPSBmbW9kKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGZt
b2QoeFsxXVsyXSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZm1vZCh4WzJdWzJdLCB5
WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmbW9kKHhbM11bMl0sIHlbM11bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IGZtb2QoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNd
ID0gZm1vZCh4WzFdWzNdLCB5WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmbW9kKHhbMl1b
M10sIHlbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGZtb2QoeFszXVszXSwgeVszXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLSAq
LwotbmF0aXZlIGludCBvcGVyYXRvci0oaW50LCBpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3It
KHVpbnQsIHVpbnQpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQpOwotbmF0
aXZlIGludCBvcGVyYXRvci0oaW50KTsKLW5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQpOwot
bmF0aXZlIHVpbnQyIG9wZXJhdG9yLSh1aW50MiwgdWludDIpOwotbmF0aXZlIHVpbnQyIG9wZXJh
dG9yLSh1aW50LCB1aW50Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3ItKHVpbnQyLCB1aW50KTsK
LW5hdGl2ZSB1aW50MyBvcGVyYXRvci0odWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50MyBvcGVy
YXRvci0odWludCwgdWludDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLSh1aW50MywgdWludCk7
Ci1uYXRpdmUgdWludDQgb3BlcmF0b3ItKHVpbnQ0LCB1aW50NCk7Ci1uYXRpdmUgdWludDQgb3Bl
cmF0b3ItKHVpbnQsIHVpbnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci0odWludDQsIHVpbnQp
OwotbmF0aXZlIGludDIgb3BlcmF0b3ItKGludDIsIGludDIpOwotbmF0aXZlIGludDIgb3BlcmF0
b3ItKGludCwgaW50Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci0oaW50MiwgaW50KTsKLW5hdGl2
ZSBpbnQzIG9wZXJhdG9yLShpbnQzLCBpbnQzKTsKLW5hdGl2ZSBpbnQzIG9wZXJhdG9yLShpbnQs
IGludDMpOwotbmF0aXZlIGludDMgb3BlcmF0b3ItKGludDMsIGludCk7Ci1uYXRpdmUgaW50NCBv
cGVyYXRvci0oaW50NCwgaW50NCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci0oaW50LCBpbnQ0KTsK
LW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLShpbnQ0LCBpbnQpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRv
ci0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MiBvcGVyYXRvci0oZmxvYXQsIGZsb2F0
Mik7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLShmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9h
dDMgb3BlcmF0b3ItKGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZs
b2F0LCBmbG9hdDMpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci0oZmxvYXQzLCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQ0IG9wZXJhdG9yLShmbG9hdDQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQ0IG9w
ZXJhdG9yLShmbG9hdCwgZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3ItKGZsb2F0NCwg
ZmxvYXQpOwotbmF0aXZlIGludDIgb3BlcmF0b3ItKGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0
b3ItKGludDMpOwotbmF0aXZlIGludDQgb3BlcmF0b3ItKGludDQpOwotbmF0aXZlIGZsb2F0MiBv
cGVyYXRvci0oZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0b3ItKGZsb2F0Myk7Ci1uYXRp
dmUgZmxvYXQ0IG9wZXJhdG9yLShmbG9hdDQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShm
bG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4Miwg
ZmxvYXQpOwotbmF0aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyeDIpOwotbmF0
aXZlIGZsb2F0MngyIG9wZXJhdG9yLShmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0
b3ItKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0
LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyLCBmbG9hdCk7
Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3ItKGZsb2F0M3gyKTsKLW5hdGl2ZSBmbG9hdDR4MiBv
cGVyYXRvci0oZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0o
ZmxvYXQsIGZsb2F0NHgyKTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIsIGZs
b2F0KTsKLW5hdGl2ZSBmbG9hdDR4MiBvcGVyYXRvci0oZmxvYXQ0eDIpOwotbmF0aXZlIGZsb2F0
MngzIG9wZXJhdG9yLShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJh
dG9yLShmbG9hdCwgZmxvYXQyeDMpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4
MywgZmxvYXQpOwotbmF0aXZlIGZsb2F0MngzIG9wZXJhdG9yLShmbG9hdDJ4Myk7Ci1uYXRpdmUg
ZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMg
b3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZs
b2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3ItKGZsb2F0M3gzKTsKLW5h
dGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9h
dDR4MyBvcGVyYXRvci0oZmxvYXQsIGZsb2F0NHgzKTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRv
ci0oZmxvYXQ0eDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4MyBvcGVyYXRvci0oZmxvYXQ0eDMp
OwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShmbG9hdDJ4NCwgZmxvYXQyeDQpOwotbmF0aXZl
IGZsb2F0Mng0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQyeDQpOwotbmF0aXZlIGZsb2F0Mng0IG9w
ZXJhdG9yLShmbG9hdDJ4NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0Mng0IG9wZXJhdG9yLShmbG9h
dDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1u
YXRpdmUgZmxvYXQzeDQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQz
eDQgb3BlcmF0b3ItKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3It
KGZsb2F0M3g0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQ0eDQsIGZsb2F0NHg0
KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0NHg0KTsKLW5hdGl2ZSBm
bG9hdDR4NCBvcGVyYXRvci0oZmxvYXQ0eDQsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDR4NCBvcGVy
YXRvci0oZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgbWluICovCi11aW50IG1pbih1
aW50IHgsIHVpbnQgeSkgewotICAgIHJldHVybiB4ID4geSA/IHkgOiB4OwotfQotdWludDIgbWlu
KHVpbnQyIHgsIHVpbnQyIHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
bWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotdWludDMgbWluKHVpbnQzIHgsIHVpbnQzIHkpIHsKLSAgICB1aW50
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsx
XSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQ0IG1pbih1aW50NCB4LCB1aW50NCB5KSB7Ci0gICAg
dWludDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBdLCB5WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWluKHhbMl0sIHlbMl0p
OwotICAgIHJlc3VsdFszXSA9IG1pbih4WzNdLCB5WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50IG1pbihpbnQgeCwgaW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB5IDogeDsKLX0K
LWludDIgbWluKGludDIgeCwgaW50MiB5KSB7Ci0gICAgaW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBtaW4oaW50MyB4LCBpbnQzIHkpIHsKLSAgICBp
bnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50NCBtaW4oaW50NCB4LCBpbnQ0IHkpIHsKLSAgICBp
bnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtaW4oeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gbWluKHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1pbih4WzJdLCB5WzJdKTsK
LSAgICByZXN1bHRbM10gPSBtaW4oeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0IG1pbihmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geSA6IHg7
Ci19Ci1mbG9hdDIgbWluKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gbWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4
WzFdLCB5WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIG1pbihmbG9hdDMgeCwg
ZmxvYXQzIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1pbih4WzBd
LCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtaW4oeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJd
ID0gbWluKHhbMl0sIHlbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgbWluKGZs
b2F0NCB4LCBmbG9hdDQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
bWluKHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1pbih4WzFdLCB5WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBtaW4oeFsyXSwgeVsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbWluKHhbM10sIHlb
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBtaW4oZmxvYXQyeDIgeCwgZmxv
YXQyeDIgeSkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4o
eFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0M3gyIG1pbihmbG9hdDN4MiB4LCBmbG9hdDN4MiB5KSB7Ci0gICAgZmxvYXQzeDIgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWlu
KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDR4MiBtaW4oZmxvYXQ0eDIgeCwgZmxvYXQ0eDIgeSkgewotICAgIGZsb2F0NHgyIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1p
bih4WzJdWzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBtaW4oeFszXVswXSwgeVsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBt
aW4oeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbWluKHhbM11bMV0sIHlb
M11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBtaW4oZmxvYXQyeDMgeCwg
ZmxvYXQyeDMgeSkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBt
aW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICBy
ZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5
WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbWluKGZsb2F0M3gzIHgs
IGZsb2F0M3gzIHkpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
bWluKHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbWluKHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IG1pbih4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtaW4oeFsyXVsxXSwg
eVsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBtaW4oeFsyXVsyXSwgeVsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgz
IG1pbihmbG9hdDR4MyB4LCBmbG9hdDR4MyB5KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IG1pbih4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBtaW4oeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbWluKHhbMl1bMF0s
IHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1pbih4WzNdWzBdLCB5WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1pbih4WzJdWzFd
LCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtaW4oeFszXVsxXSwgeVszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1bMl0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBtaW4oeFsyXVsy
XSwgeVsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbWluKHhbM11bMl0sIHlbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBtaW4oZmxvYXQyeDQgeCwgZmxvYXQyeDQg
eSkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVsw
XSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IG1pbih4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbWluKHhbMF1b
Ml0sIHlbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IG1pbih4WzFdWzJdLCB5WzFdWzJdKTsK
LSAgICByZXN1bHRbMF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFd
WzNdID0gbWluKHhbMV1bM10sIHlbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4NCBtaW4oZmxvYXQzeDQgeCwgZmxvYXQzeDQgeSkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBtaW4oeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbWluKHhbMV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1pbih4WzJd
WzBdLCB5WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtaW4oeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbWluKHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1pbih4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4oeFsw
XVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBtaW4oeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWluKHhb
MV1bM10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1pbih4WzJdWzNdLCB5WzJdWzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbWluKGZsb2F0NHg0IHgsIGZsb2F0
NHg0IHkpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWluKHhb
MF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IG1pbih4WzFdWzBdLCB5WzFdWzBd
KTsKLSAgICByZXN1bHRbMl1bMF0gPSBtaW4oeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0
WzNdWzBdID0gbWluKHhbM11bMF0sIHlbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1pbih4
WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtaW4oeFsxXVsxXSwgeVsxXVsx
XSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWluKHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3Vs
dFszXVsxXSA9IG1pbih4WzNdWzFdLCB5WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtaW4o
eFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWluKHhbMV1bMl0sIHlbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1pbih4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1
bHRbM11bMl0gPSBtaW4oeFszXVsyXSwgeVszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbWlu
KHhbMF1bM10sIHlbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IG1pbih4WzFdWzNdLCB5WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBtaW4oeFsyXVszXSwgeVsyXVszXSk7Ci0gICAgcmVz
dWx0WzNdWzNdID0gbWluKHhbM11bM10sIHlbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBJbnRlcmxvY2tlZFhvciAqLwotbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRYb3IoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWQg
aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihkZXZpY2UgYXRvbWljX3VpbnQqLCB1
aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRYb3IoZGV2aWNlIGF0
b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9y
KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIHRocmVhZGdyb3VwIHVpbnQqKTsKLW5hdGl2ZSB2
b2lkIEludGVybG9ja2VkWG9yKGRldmljZSBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBp
bnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50
KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVh
ZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsK
LW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQs
IGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKHRocmVhZGdyb3VwIGF0
b21pY191aW50KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRYb3IodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7
Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jICov
Ci1uYXRpdmUgdm9pZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCB0cnVuYyAqLwotbmF0aXZlIGZsb2F0IHRydW5jKGZsb2F0KTsKLWZsb2F0
MiB0cnVuYyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
dHJ1bmMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0MyB0cnVuYyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gdHJ1bmMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7
Ci0gICAgcmVzdWx0WzJdID0gdHJ1bmMoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NCB0cnVuYyhmbG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gdHJ1bmMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gdHJ1bmMoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gdHJ1bmMoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gdHJ1bmMoeFszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIHRydW5jKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0
WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsx
XSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gyIHRydW5jKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
dHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMo
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIHRydW5jKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
dHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMo
eFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIHRydW5jKGZsb2F0Mngz
IHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
dHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIHRydW5jKGZs
b2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1
bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJd
WzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0g
dHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIHRydW5jKGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1
bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gdHJ1bmMoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
dHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gdHJ1bmMo
eFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IHRydW5jKGZsb2F0Mng0
IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gdHJ1bmMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0g
dHJ1bmMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0gICAg
cmVzdWx0WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3g0IHRydW5jKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBd
WzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
dHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gdHJ1bmMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IHRydW5jKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gdHJ1bmMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gdHJ1bmMoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gdHJ1bmMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0g
dHJ1bmMoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gdHJ1bmMoeFswXVsxXSk7Ci0gICAg
cmVzdWx0WzFdWzFdID0gdHJ1bmMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gdHJ1bmMo
eFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gdHJ1bmMoeFszXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gdHJ1bmMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gdHJ1bmMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gdHJ1bmMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJd
ID0gdHJ1bmMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gdHJ1bmMoeFswXVszXSk7Ci0g
ICAgcmVzdWx0WzFdWzNdID0gdHJ1bmMoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gdHJ1
bmMoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gdHJ1bmMoeFszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIG1heCAqLwotdWludCBtYXgodWlu
dCB4LCB1aW50IHkpIHsKLSAgICByZXR1cm4geCA+IHkgPyB4IDogeTsKLX0KLXVpbnQyIG1heCh1
aW50MiB4LCB1aW50MiB5KSB7Ci0gICAgdWludDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1h
eCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXVpbnQzIG1heCh1aW50MyB4LCB1aW50MyB5KSB7Ci0gICAgdWludDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0g
PSBtYXgoeFsxXSwgeVsxXSk7Ci0gICAgcmVzdWx0WzJdID0gbWF4KHhbMl0sIHlbMl0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci11aW50NCBtYXgodWludDQgeCwgdWludDQgeSkgewotICAgIHVp
bnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0
WzFdID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsK
LSAgICByZXN1bHRbM10gPSBtYXgoeFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotCi0KLWludCBtYXgoaW50IHgsIGludCB5KSB7Ci0gICAgcmV0dXJuIHggPiB5ID8geCA6IHk7
Ci19Ci1pbnQyIG1heChpbnQyIHgsIGludDIgeSkgewotICAgIGludDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IG1heCh4WzBdLCB5WzBdKTsKLSAgICByZXN1bHRbMV0gPSBtYXgoeFsxXSwgeVsx
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDMgbWF4KGludDMgeCwgaW50MyB5KSB7Ci0g
ICAgaW50MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWludDQgbWF4KGludDQgeCwgaW50NCB5KSB7Ci0g
ICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbWF4KHhbMF0sIHlbMF0pOwotICAgIHJl
c3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICByZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gbWF4KHhbM10sIHlbM10pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLQotZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4geCA+IHkg
PyB4IDogeTsKLX0KLWZsb2F0MiBtYXgoZmxvYXQyIHgsIGZsb2F0MiB5KSB7Ci0gICAgZmxvYXQy
IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFd
ID0gbWF4KHhbMV0sIHlbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbWF4KGZs
b2F0MyB4LCBmbG9hdDMgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
bWF4KHhbMF0sIHlbMF0pOwotICAgIHJlc3VsdFsxXSA9IG1heCh4WzFdLCB5WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBtYXgoeFsyXSwgeVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NCBtYXgoZmxvYXQ0IHgsIGZsb2F0NCB5KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBtYXgoeFswXSwgeVswXSk7Ci0gICAgcmVzdWx0WzFdID0gbWF4KHhbMV0sIHlbMV0p
OwotICAgIHJlc3VsdFsyXSA9IG1heCh4WzJdLCB5WzJdKTsKLSAgICByZXN1bHRbM10gPSBtYXgo
eFszXSwgeVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngyIG1heChmbG9hdDJ4
MiB4LCBmbG9hdDJ4MiB5KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVsw
XSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQzeDIgbWF4KGZsb2F0M3gyIHgsIGZsb2F0M3gyIHkpIHsKLSAgICBmbG9h
dDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBtYXgoeFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1b
MV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWZsb2F0NHgyIG1heChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJd
WzBdID0gbWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IG1heCh4WzNd
WzBdLCB5WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IG1heCh4WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBtYXgoeFsz
XVsxXSwgeVszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIG1heChmbG9h
dDJ4MyB4LCBmbG9hdDJ4MyB5KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsx
XVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhb
MV1bMl0sIHlbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBtYXgoZmxv
YXQzeDMgeCwgZmxvYXQzeDMgeSkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhb
MV1bMF0sIHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBtYXgoeFswXVsxXSwgeVswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gbWF4KHhbMV1bMV0sIHlbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IG1heCh4
WzJdWzFdLCB5WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3Vs
dFsyXVsyXSA9IG1heCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgbWF4KGZsb2F0NHgzIHgsIGZsb2F0NHgzIHkpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbWF4KHhbMF1bMF0sIHlbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IG1heCh4WzFdWzBdLCB5WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBtYXgo
eFsyXVswXSwgeVsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gbWF4KHhbM11bMF0sIHlbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gbWF4
KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IG1heCh4WzNdWzFdLCB5WzNd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBtYXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVz
dWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IG1h
eCh4WzJdWzJdLCB5WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBtYXgoeFszXVsyXSwgeVsz
XVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IG1heChmbG9hdDJ4NCB4LCBm
bG9hdDJ4NCB5KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1h
eCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsx
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IG1heCh4WzFdWzFdLCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBt
YXgoeFswXVsyXSwgeVswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbWF4KHhbMV1bMl0sIHlb
MV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICBy
ZXN1bHRbMV1bM10gPSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3g0IG1heChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgZmxvYXQzeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IG1heCh4WzBdWzBdLCB5WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBtYXgoeFsxXVswXSwgeVsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
bWF4KHhbMl1bMF0sIHlbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IG1heCh4WzBdWzFdLCB5
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBtYXgoeFsxXVsxXSwgeVsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gbWF4KHhbMl1bMV0sIHlbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsyXSwg
eVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwotICAg
IHJlc3VsdFswXVszXSA9IG1heCh4WzBdWzNdLCB5WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBtYXgoeFsxXVszXSwgeVsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gbWF4KHhbMl1bM10s
IHlbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBtYXgoZmxvYXQ0eDQg
eCwgZmxvYXQ0eDQgeSkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBtYXgoeFswXVswXSwgeVswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbWF4KHhbMV1bMF0s
IHlbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IG1heCh4WzJdWzBdLCB5WzJdWzBdKTsKLSAg
ICByZXN1bHRbM11bMF0gPSBtYXgoeFszXVswXSwgeVszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gbWF4KHhbMF1bMV0sIHlbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IG1heCh4WzFdWzFd
LCB5WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBtYXgoeFsyXVsxXSwgeVsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gbWF4KHhbM11bMV0sIHlbM11bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IG1heCh4WzBdWzJdLCB5WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBtYXgoeFsxXVsy
XSwgeVsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gbWF4KHhbMl1bMl0sIHlbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IG1heCh4WzNdWzJdLCB5WzNdWzJdKTsKLSAgICByZXN1bHRbMF1b
M10gPSBtYXgoeFswXVszXSwgeVswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbWF4KHhbMV1b
M10sIHlbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IG1heCh4WzJdWzNdLCB5WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBtYXgoeFszXVszXSwgeVszXVszXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgYXNpbnQgKi8KLWludCBhc2ludChpbnQg
eCkgewotICAgIHJldHVybiB4OwotfQotaW50MiBhc2ludChpbnQyIHgpIHsKLSAgICByZXR1cm4g
eDsKLX0KLWludDMgYXNpbnQoaW50MyB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1pbnQ0IGFzaW50
KGludDQgeCkgewotICAgIHJldHVybiB4OwotfQotaW50IGFzaW50KHVpbnQgeCkgewotICAgIHJl
dHVybiBpbnQoeCk7Ci19Ci1pbnQyIGFzaW50KHVpbnQyIHgpIHsKLSAgICBpbnQyIHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBhc2ludCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotaW50MyBhc2ludCh1aW50MyB4KSB7Ci0gICAgaW50
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
YXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsyXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLWludDQgYXNpbnQodWludDQgeCkgewotICAgIGludDQgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGFzaW50KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzaW50KHhbM10pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1uYXRpdmUgaW50IGFzaW50KGZsb2F0KTsKLWludDIgYXNp
bnQoZmxvYXQyIHgpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2ludCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2ludCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotaW50MyBhc2ludChmbG9hdDMgeCkgewotICAgIGludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGFzaW50KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFzaW50KHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IGFzaW50KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQ0IGFzaW50KGZs
b2F0NCB4KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNpbnQoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gYXNpbnQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNpbnQoeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gYXNpbnQoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLyogRnVuY3Rpb25zIG5hbWVkIGNsYW1wICovCi1uYXRpdmUgdWludCBjbGFtcCh1aW50LCB1
aW50LCB1aW50KTsKLW5hdGl2ZSB1aW50MiBjbGFtcCh1aW50MiwgdWludDIsIHVpbnQyKTsKLW5h
dGl2ZSB1aW50MyBjbGFtcCh1aW50MywgdWludDMsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBjbGFt
cCh1aW50NCwgdWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBpbnQgY2xhbXAoaW50LCBpbnQsIGludCk7
Ci1uYXRpdmUgaW50MiBjbGFtcChpbnQyLCBpbnQyLCBpbnQyKTsKLW5hdGl2ZSBpbnQzIGNsYW1w
KGludDMsIGludDMsIGludDMpOwotbmF0aXZlIGludDQgY2xhbXAoaW50NCwgaW50NCwgaW50NCk7
Ci1uYXRpdmUgZmxvYXQgY2xhbXAoZmxvYXQsIGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQy
IGNsYW1wKGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBjbGFtcChmbG9h
dDMsIGZsb2F0MywgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgY2xhbXAoZmxvYXQ0LCBmbG9hdDQs
IGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgY2xhbXAoZmxvYXQyeDIsIGZsb2F0MngyLCBmbG9h
dDJ4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgY2xhbXAoZmxvYXQzeDIsIGZsb2F0M3gyLCBmbG9hdDN4
Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgY2xhbXAoZmxvYXQ0eDIsIGZsb2F0NHgyLCBmbG9hdDR4Mik7
Ci1uYXRpdmUgZmxvYXQyeDMgY2xhbXAoZmxvYXQyeDMsIGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1u
YXRpdmUgZmxvYXQzeDMgY2xhbXAoZmxvYXQzeDMsIGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRp
dmUgZmxvYXQ0eDMgY2xhbXAoZmxvYXQ0eDMsIGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUg
ZmxvYXQyeDQgY2xhbXAoZmxvYXQyeDQsIGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxv
YXQzeDQgY2xhbXAoZmxvYXQzeDQsIGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQ0
eDQgY2xhbXAoZmxvYXQ0eDQsIGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBvcGVyYXRvcjwgKi8KLW5hdGl2ZSBib29sIG9wZXJhdG9yPChpbnQsIGludCk7Ci1uYXRp
dmUgYm9vbCBvcGVyYXRvcjwodWludCwgdWludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxv
YXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwodWludDIsIHVpbnQyKTsKLW5hdGl2
ZSBib29sMyBvcGVyYXRvcjwodWludDMsIHVpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcjwo
dWludDQsIHVpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoaW50MiwgaW50Mik7Ci1uYXRp
dmUgYm9vbDMgb3BlcmF0b3I8KGludDMsIGludDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPChp
bnQ0LCBpbnQ0KTsKLW5hdGl2ZSBib29sMiBvcGVyYXRvcjwoZmxvYXQyLCBmbG9hdDIpOwotbmF0
aXZlIGJvb2wzIG9wZXJhdG9yPChmbG9hdDMsIGZsb2F0Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0
b3I8KGZsb2F0NCwgZmxvYXQ0KTsKLW5hdGl2ZSBib29sMngyIG9wZXJhdG9yPChmbG9hdDJ4Miwg
ZmxvYXQyeDIpOwotbmF0aXZlIGJvb2wzeDIgb3BlcmF0b3I8KGZsb2F0M3gyLCBmbG9hdDN4Mik7
Ci1uYXRpdmUgYm9vbDR4MiBvcGVyYXRvcjwoZmxvYXQ0eDIsIGZsb2F0NHgyKTsKLW5hdGl2ZSBi
b29sMngzIG9wZXJhdG9yPChmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3Bl
cmF0b3I8KGZsb2F0M3gzLCBmbG9hdDN4Myk7Ci1uYXRpdmUgYm9vbDR4MyBvcGVyYXRvcjwoZmxv
YXQ0eDMsIGZsb2F0NHgzKTsKLW5hdGl2ZSBib29sMng0IG9wZXJhdG9yPChmbG9hdDJ4NCwgZmxv
YXQyeDQpOwotbmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I8KGZsb2F0M3g0LCBmbG9hdDN4NCk7Ci1u
YXRpdmUgYm9vbDR4NCBvcGVyYXRvcjwoZmxvYXQ0eDQsIGZsb2F0NHg0KTsKLQotLyogRnVuY3Rp
b25zIG5hbWVkIGlzbmFuICovCi1uYXRpdmUgYm9vbCBpc25hbihmbG9hdCk7Ci0KLWJvb2wyIGlz
bmFuKGZsb2F0MiB4KSB7Ci0gICAgYm9vbDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzbmFu
KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlzbmFuKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1ib29sMyBpc25hbihmbG9hdDMgeCkgewotICAgIGJvb2wzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBpc25hbih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25hbih4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBpc25hbih4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbDQgaXNu
YW4oZmxvYXQ0IHgpIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNuYW4o
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNuYW4oeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNu
YW4oeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0gaXNuYW4oeFszXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5j
ICovCi1uYXRpdmUgdm9pZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOwotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgb3BlcmF0b3JeICovCi1ib29sIG9wZXJhdG9yXihib29sIGEsIGJvb2wg
YikgewotICAgIGlmIChhKQotICAgICAgICByZXR1cm4gIWI7Ci0gICAgcmV0dXJuIGI7Ci19Ci1u
YXRpdmUgaW50IG9wZXJhdG9yXihpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcl4odWlu
dCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBpc2luZiAqLwotbmF0aXZlIGJvb2wgaXNp
bmYoZmxvYXQpOwotYm9vbDIgaXNpbmYoZmxvYXQyIHgpIHsKLSAgICBib29sMiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gaXNpbmYoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gaXNpbmYoeFsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wzIGlzaW5mKGZsb2F0MyB4KSB7Ci0gICAgYm9v
bDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGlzaW5mKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9
IGlzaW5mKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzaW5mKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1ib29sNCBpc2luZihmbG9hdDQgeCkgewotICAgIGJvb2w0IHJlc3VsdDsKLSAg
ICByZXN1bHRbMF0gPSBpc2luZih4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc2luZih4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBpc2luZih4WzJdKTsKLSAgICByZXN1bHRbM10gPSBpc2luZih4WzNd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3J8
ICovCi1ib29sIG9wZXJhdG9yfChib29sIGEsIGJvb2wgYikgewotICAgIHJldHVybiBhIHx8IGI7
Ci19Ci1uYXRpdmUgaW50IG9wZXJhdG9yfChpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRv
cnwodWludCwgdWludCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZWdyZWVzICovCi1mbG9hdCBk
ZWdyZWVzKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAqIDE4MCAvIDMuMTQxNTk7Ci19Ci1mbG9h
dDIgZGVncmVlcyhmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gZGVncmVlcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZWdyZWVzKHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGVncmVlcyhmbG9hdDMgeCkgewotICAgIGZsb2F0MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGVncmVlcyh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBk
ZWdyZWVzKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRlZ3JlZXMoeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NCBkZWdyZWVzKGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF0gPSBkZWdyZWVzKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRlZ3Jl
ZXMoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGVncmVlcyh4WzJdKTsKLSAgICByZXN1bHRbM10g
PSBkZWdyZWVzKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZWdyZWVz
KGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
ZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0g
ZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGVncmVl
cyhmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRlZ3JlZXMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsK
LSAgICByZXN1bHRbMl1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDR4MiBkZWdyZWVzKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZGVncmVlcyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRlZ3JlZXMoeFsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBkZWdyZWVzKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZWdy
ZWVzKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBd
ID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0p
OwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGRlZ3JlZXMoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRlZ3JlZXMoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZWdyZWVzKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRlZ3JlZXMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGVncmVlcyh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsy
XSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJd
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgZGVncmVlcyhmbG9hdDR4MyB4KSB7
Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRlZ3JlZXMoeFswXVsw
XSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGVncmVlcyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBkZWdyZWVzKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRlZ3JlZXMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRlZ3JlZXMoeFsyXVsx
XSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGVncmVlcyh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZWdyZWVzKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGVncmVlcyh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBkZWdyZWVzKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBk
ZWdyZWVzKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGVncmVlcyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZWdyZWVzKHhbMF1b
Ml0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRlZ3JlZXMoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBd
WzNdID0gZGVncmVlcyh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZWdyZWVzKGZsb2F0M3g0IHgp
IHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGVncmVlcyh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZWdyZWVzKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IGRlZ3JlZXMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGVncmVlcyh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZWdyZWVzKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRlZ3JlZXMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRlZ3JlZXMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGVncmVlcyh4WzBd
WzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZWdyZWVzKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGRlZ3JlZXMoeFsyXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0
IGRlZ3JlZXMoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZWdyZWVzKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRlZ3JlZXMoeFsx
XVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGVncmVlcyh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBkZWdyZWVzKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRlZ3JlZXMoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGVncmVlcyh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZWdyZWVzKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRlZ3JlZXMoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGVncmVlcyh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZWdyZWVzKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRlZ3JlZXMoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGVncmVlcyh4WzNdWzJdKTsKLSAgICByZXN1bHRb
MF1bM10gPSBkZWdyZWVzKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRlZ3JlZXMoeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGVncmVlcyh4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBkZWdyZWVzKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBTYW1wbGUgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMUQ8dWlu
dD4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJl
MURBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNh
bXBsZShUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUg
dWludCBTYW1wbGUoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50IFNhbXBsZShUZXh0dXJlMkRBcnJh
eTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
dWludCBTYW1wbGUoVGV4dHVyZTNEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwot
bmF0aXZlIHVpbnQgU2FtcGxlKFRleHR1cmUzRDx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGUoVGV4dHVyZUN1YmU8dWludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDIgU2FtcGxlKFRleHR1cmUx
RDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUo
VGV4dHVyZTFEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQyIFNhbXBsZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24p
OwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGUoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBs
ZShUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQyIFNhbXBsZShUZXh0dXJlM0Q8dWludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGUoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZl
IHVpbnQzIFNhbXBsZShUZXh0dXJlMUQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7
Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmUxREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEPHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWlu
dDMgU2FtcGxlKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGUoVGV4dHVy
ZTNEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50MyBTYW1w
bGUoVGV4dHVyZTNEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNl
dCk7Ci1uYXRpdmUgdWludDMgU2FtcGxlKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGUoVGV4dHVyZTFEPHVpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMURBcnJh
eTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxl
KFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgdWlu
dDQgU2FtcGxlKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUyREFy
cmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgdWludDQgU2FtcGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
bik7Ci1uYXRpdmUgdWludDQgU2FtcGxlKFRleHR1cmUzRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZShUZXh0dXJlQ3Vi
ZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50IFNhbXBsZShU
ZXh0dXJlMUQ8aW50Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludCBTYW1w
bGUoVGV4dHVyZTFEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2
ZSBpbnQgU2FtcGxlKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwot
bmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQgU2FtcGxlKFRleHR1cmUyREFy
cmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGludCBTYW1wbGUoVGV4dHVyZTNEPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50IFNhbXBsZShUZXh0dXJlM0Q8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUxRDxpbnQy
Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUx
REFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2Ft
cGxlKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBp
bnQyIFNhbXBsZShUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50
MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGludDIgU2FtcGxlKFRleHR1cmUyREFycmF5
PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBp
bnQyIFNhbXBsZShUZXh0dXJlM0Q8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1u
YXRpdmUgaW50MiBTYW1wbGUoVGV4dHVyZTNEPGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZShUZXh0dXJlQ3ViZTxpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMUQ8
aW50Mz4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0
dXJlMURBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQz
IFNhbXBsZShUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRp
dmUgaW50MyBTYW1wbGUoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRBcnJheTxpbnQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZShUZXh0dXJlMkRB
cnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRp
dmUgaW50MyBTYW1wbGUoVGV4dHVyZTNEPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24p
OwotbmF0aXZlIGludDMgU2FtcGxlKFRleHR1cmUzRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgaW50MyBTYW1wbGUoVGV4dHVyZUN1YmU8aW50
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVy
ZTFEPGludDQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUo
VGV4dHVyZTFEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUg
aW50NCBTYW1wbGUoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwot
bmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgaW50NCBTYW1wbGUoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwot
bmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmUzRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZShUZXh0dXJlM0Q8aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZlIGludDQgU2FtcGxlKFRleHR1cmVDdWJl
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShU
ZXh0dXJlMUQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdCBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQg
U2FtcGxlKFRleHR1cmUxREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1
cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9h
dCBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZTNEPGZs
b2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQzIG9mZnNldCk7Ci1uYXRpdmUgZmxv
YXQgU2FtcGxlKFRleHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsK
LW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUxRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdCBs
b2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJE
PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQyIFNhbXBs
ZShUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MiBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGludDMgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlKFRleHR1cmVD
dWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZShUZXh0dXJlMUQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pOwotbmF0aXZl
IGZsb2F0MyBTYW1wbGUoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4dHVyZTJEPGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0
MyBTYW1wbGUoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGUoVGV4
dHVyZTNEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQz
IFNhbXBsZShUZXh0dXJlM0Q8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQz
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZShUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTFEPGZs
b2F0ND4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRl
eHR1cmUxREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbik7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZShUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbik7Ci1uYXRpdmUgZmxvYXQ0
IFNhbXBsZShUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlKFRleHR1cmUzRDxmbG9hdDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0NCBTYW1wbGUoVGV4dHVyZTNE
PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MyBvZmZzZXQpOwotbmF0aXZl
IGZsb2F0NCBTYW1wbGUoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24pOwotbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGUoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZShUZXh0dXJlRGVwdGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsK
LQotLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBsZUxldmVsICovCi1uYXRpdmUgdWludCBTYW1wbGVM
ZXZlbChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50IFNhbXBs
ZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IExPRCk7Ci1uYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVp
bnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVpbnQy
IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1u
YXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNh
bXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVM
ZXZlbChUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIHVp
bnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVMZXZl
bChUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSB1aW50NCBTYW1w
bGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IGludCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUy
RDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGlu
dDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5h
dGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDIgU2FtcGxl
TGV2ZWwoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBv
ZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUxl
dmVsKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8
aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQ0
IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBMT0QpOwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGlu
dDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQp
OwotbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0
dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRp
dmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZl
bChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxm
bG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxv
YXQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExP
RCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLW5hdGl2ZSBm
bG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVs
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJl
MkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwotbmF0aXZl
IGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Ci1u
YXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNh
bXBsZUxldmVsKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRo
MkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoQ3ViZTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKLQotLyogRnVuY3Rpb25z
IG5hbWVkIFNhbXBsZUJpYXMgKi8KLW5hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVp
bnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQg
U2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRB
cnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2
ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQgU2FtcGxlQmlh
cyhUZXh0dXJlQ3ViZTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0
dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50MiBTYW1w
bGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgdWludDMgU2FtcGxlQmlhcyhU
ZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlh
cywgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWlu
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0
IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBCaWFzKTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50ND4sIHNh
bXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJE
QXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIg
b2Zmc2V0KTsKLW5hdGl2ZSB1aW50NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsK
LW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50IFNhbXBsZUJpYXMo
VGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQgU2Ft
cGxlQmlhcyhUZXh0dXJlQ3ViZTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOwotbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRl
eHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDIgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJl
PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGlu
dDMgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgQmlhcyk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7Ci1uYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0
dXJlMkQ8aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRp
dmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRl
eHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OwotbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgaW50NCBT
YW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVC
aWFzKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlh
cywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZs
b2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFz
KFRleHR1cmVDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9h
dDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDIgU2FtcGxlQmlh
cyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJp
YXMpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFz
KFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMs
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotbmF0aXZlIGZs
b2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MyBTYW1wbGVC
aWFzKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUJp
YXMoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlh
cywgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Ci1uYXRpdmUg
ZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQ0IFNhbXBs
ZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKLW5hdGl2ZSBmbG9hdCBTYW1w
bGVCaWFzKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKLW5hdGl2
ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlR3Jh
ZCAqLwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludCBTYW1w
bGVHcmFkKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIHVp
bnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1
cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFkpOwotbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSB1aW50MyBT
YW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8
dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFks
IGludDIgb2Zmc2V0KTsKLW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsK
LW5hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1u
YXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgdWludDQgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ0
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQy
IG9mZnNldCk7Ci1uYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRp
dmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZl
IHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRl
eHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGludCBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1
cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQz
IEREWSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQyIFNh
bXBsZUdyYWQoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUg
aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7
Ci1uYXRpdmUgaW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5h
dGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgaW50NCBTYW1wbGVHcmFk
KFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZKTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKLW5hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgaW50NCBT
YW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBpbnQ0IFNhbXBs
ZUdyYWQoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQz
IEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwot
bmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUg
ZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQgU2FtcGxlR3Jh
ZChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQo
VGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgs
IGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0
aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBm
bG9hdDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVH
cmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0aXZlIGZsb2F0MiBTYW1wbGVH
cmFkKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQz
IEREWCwgZmxvYXQzIEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZs
b2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7
Ci1uYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwotbmF0
aXZlIGZsb2F0MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7Ci1uYXRpdmUgZmxvYXQzIFNh
bXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDMgRERYLCBmbG9hdDMgRERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJl
MkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKLW5hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7
Ci1uYXRpdmUgZmxvYXQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKLW5hdGl2ZSBmbG9h
dDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9h
dDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFkpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8Zmxv
YXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGlu
dDIgb2Zmc2V0KTsKLW5hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkp
OwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZz
ZXQpOwotbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Ci0KLS8qIEZ1
bmN0aW9ucyBuYW1lZCBzaW5oICovCi1uYXRpdmUgZmxvYXQgc2luaChmbG9hdCk7Ci1mbG9hdDIg
c2luaChmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gc2lu
aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgc2luaChmbG9hdDMgeCkgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gc2luaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBzaW5oKHhbMV0pOwotICAgIHJl
c3VsdFsyXSA9IHNpbmgoeFsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBzaW5o
KGZsb2F0NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBzaW5oKHhb
MF0pOwotICAgIHJlc3VsdFsxXSA9IHNpbmgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gc2luaCh4
WzJdKTsKLSAgICByZXN1bHRbM10gPSBzaW5oKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4MiBzaW5oKGZsb2F0MngyIHgpIHsKLSAgICBmbG9hdDJ4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhb
MV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFd
WzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgc2lu
aChmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBzaW5o
KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0g
c2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJl
c3VsdFsyXVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gc2luaCh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbM11bMV0gPSBzaW5oKHhbM11bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDJ4MyBzaW5oKGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAg
IHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0M3gzIHNpbmgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHNpbmgoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBzaW5oKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHNpbmgoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gc2luaCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5oKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJd
WzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgc2lu
aChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IHNpbmgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gc2luaCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBzaW5oKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHNpbmgoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNpbmgoeFsyXVsxXSk7Ci0g
ICAgcmVzdWx0WzNdWzFdID0gc2luaCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBzaW5o
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0
WzJdWzJdID0gc2luaCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBzaW5oKHhbM11bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBzaW5oKGZsb2F0Mng0IHgpIHsKLSAg
ICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHNpbmgo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBzaW5oKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHNpbmgoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBz
aW5oKHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBzaW5oKGZsb2F0
M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gc2luaCh4
WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBzaW5oKHhbMV1bMF0pOwotICAgIHJlc3VsdFsy
XVswXSA9IHNpbmgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gc2luaCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBzaW5oKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHNp
bmgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsy
XSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gc2luaCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10g
PSBzaW5oKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IHNpbmgoeFsyXVszXSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IHNpbmgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0
NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBzaW5oKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IHNpbmgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gc2luaCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBzaW5oKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IHNpbmgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gc2luaCh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBzaW5oKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IHNpbmgoeFsz
XVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gc2luaCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBzaW5oKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHNpbmgoeFsyXVsyXSk7Ci0g
ICAgcmVzdWx0WzNdWzJdID0gc2luaCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBzaW5o
KHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHNpbmgoeFsxXVszXSk7Ci0gICAgcmVzdWx0
WzJdWzNdID0gc2luaCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBzaW5oKHhbM11bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHkgKi8KLW5h
dGl2ZSBmbG9hdCBkZHkoZmxvYXQpOwotZmxvYXQyIGRkeShmbG9hdDIgeCkgewotICAgIGZsb2F0
MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRk
eSh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGRkeShmbG9hdDMgeCkgewot
ICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR5KHhbMF0pOwotICAgIHJlc3Vs
dFsxXSA9IGRkeSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHkoeFsyXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NCBkZHkoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGRkeSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHkoeFsxXSk7Ci0g
ICAgcmVzdWx0WzJdID0gZGR5KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGRkeSh4WzNdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgZGR5KGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7
Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDN4MiBkZHkoZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5KHhbMV1b
MF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDIgZGR5KGZsb2F0NHgyIHgpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR5KHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5KHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGRkeSh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgZGR5KGZsb2F0MngzIHgpIHsKLSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5
KHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRb
MV1bMl0gPSBkZHkoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gzIGRk
eShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZGR5KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHkoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0g
ZGR5KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHkoZmxvYXQ0eDMgeCkgewotICAg
IGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHkoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZGR5KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeSh4WzJd
WzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHkoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR5KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR5KHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5KHhbMl1bMl0pOwotICAgIHJl
c3VsdFszXVsyXSA9IGRkeSh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQy
eDQgZGR5KGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBkZHkoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAg
IHJlc3VsdFsxXVszXSA9IGRkeSh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDQgZGR5KGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4NCByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR5KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeSh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHkoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeSh4WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBkZHkoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHko
eFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR5KHhbMF1bM10pOwotICAgIHJlc3VsdFsx
XVszXSA9IGRkeSh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBkZHkoeFsyXVszXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeShmbG9hdDR4NCB4KSB7Ci0gICAgZmxv
YXQ0eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHkoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5KHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGRkeSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHkoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRkeSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHkoeFszXVsxXSk7
Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR5KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHkoeFsyXVsyXSk7Ci0gICAgcmVzdWx0
WzNdWzJdID0gZGR5KHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeSh4WzBdWzNdKTsK
LSAgICByZXN1bHRbMV1bM10gPSBkZHkoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR5
KHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeSh4WzNdWzNdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgb3BlcmF0b3I+PSAqLwotbmF0aXZlIGJv
b2wgb3BlcmF0b3I+PShpbnQsIGludCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj49KHVpbnQsIHVp
bnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wy
IG9wZXJhdG9yPj0odWludDIsIHVpbnQyKTsKLW5hdGl2ZSBib29sMyBvcGVyYXRvcj49KHVpbnQz
LCB1aW50Myk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0b3I+PSh1aW50NCwgdWludDQpOwotbmF0aXZl
IGJvb2wyIG9wZXJhdG9yPj0oaW50MiwgaW50Mik7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3I+PShp
bnQzLCBpbnQzKTsKLW5hdGl2ZSBib29sNCBvcGVyYXRvcj49KGludDQsIGludDQpOwotbmF0aXZl
IGJvb2wyIG9wZXJhdG9yPj0oZmxvYXQyLCBmbG9hdDIpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9y
Pj0oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yPj0oZmxvYXQ0LCBmbG9h
dDQpOwotbmF0aXZlIGJvb2wyeDIgb3BlcmF0b3I+PShmbG9hdDJ4MiwgZmxvYXQyeDIpOwotbmF0
aXZlIGJvb2wzeDIgb3BlcmF0b3I+PShmbG9hdDN4MiwgZmxvYXQzeDIpOwotbmF0aXZlIGJvb2w0
eDIgb3BlcmF0b3I+PShmbG9hdDR4MiwgZmxvYXQ0eDIpOwotbmF0aXZlIGJvb2wyeDMgb3BlcmF0
b3I+PShmbG9hdDJ4MywgZmxvYXQyeDMpOwotbmF0aXZlIGJvb2wzeDMgb3BlcmF0b3I+PShmbG9h
dDN4MywgZmxvYXQzeDMpOwotbmF0aXZlIGJvb2w0eDMgb3BlcmF0b3I+PShmbG9hdDR4MywgZmxv
YXQ0eDMpOwotbmF0aXZlIGJvb2wyeDQgb3BlcmF0b3I+PShmbG9hdDJ4NCwgZmxvYXQyeDQpOwot
bmF0aXZlIGJvb2wzeDQgb3BlcmF0b3I+PShmbG9hdDN4NCwgZmxvYXQzeDQpOwotbmF0aXZlIGJv
b2w0eDQgb3BlcmF0b3I+PShmbG9hdDR4NCwgZmxvYXQ0eDQpOwotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgZHN0ICovCi11aW50NCBkc3QodWludDQgc3JjMCwgdWludDQgc3JjMSkgewotICAgIHVpbnQ0
IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IDE7Ci0gICAgcmVzdWx0LnkgPSBzcmMwLnkgKiBzcmMx
Lnk7Ci0gICAgcmVzdWx0LnogPSBzcmMwLno7Ci0gICAgcmVzdWx0LncgPSBzcmMxLnc7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLWludDQgZHN0KGludDQgc3JjMCwgaW50NCBzcmMxKSB7Ci0gICAg
aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55ID0gc3JjMC55ICog
c3JjMS55OwotICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53ID0gc3JjMS53Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZHN0KGZsb2F0NCBzcmMwLCBmbG9hdDQgc3Jj
MSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSAxOwotICAgIHJlc3VsdC55
ID0gc3JjMC55ICogc3JjMS55OwotICAgIHJlc3VsdC56ID0gc3JjMC56OwotICAgIHJlc3VsdC53
ID0gc3JjMS53OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IGRvdCAqLwotdWludCBkb3QodWludCBhLCB1aW50IGIpIHsKLSAgICByZXR1cm4gYSAqIGI7Ci19
Ci11aW50IGRvdCh1aW50MiBhLCB1aW50MiBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAg
IHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFb
MV0gKiBiWzFdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1aW50MyBhLCB1aW50
MyBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0g
KiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9
IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci11aW50IGRvdCh1
aW50NCBhLCB1aW50NCBiKSB7Ci0gICAgdWludCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJlc3VsdCA9IHJlc3VsdCAr
IGFbM10gKiBiWzNdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1pbnQgZG90KGludCBhLCBpbnQg
YikgewotICAgIHJldHVybiBhICogYjsKLX0KLWludCBkb3QoaW50MiBhLCBpbnQyIGIpIHsKLSAg
ICBpbnQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzBdICogYlswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
aW50IGRvdChpbnQzIGEsIGludDMgYikgewotICAgIGludCByZXN1bHQgPSAwOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCArIGFbMF0gKiBiWzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBi
WzFdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1pbnQgZG90KGludDQgYSwgaW50NCBiKSB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsg
YVsxXSAqIGJbMV07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsyXSAqIGJbMl07Ci0gICAgcmVz
dWx0ID0gcmVzdWx0ICsgYVszXSAqIGJbM107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
IGRvdChmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgcmV0dXJuIGEgKiBiOwotfQotZmxvYXQgZG90
KGZsb2F0MiBhLCBmbG9hdDIgYikgewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0ICsgYVswXSAqIGJbMF07Ci0gICAgcmVzdWx0ID0gcmVzdWx0ICsgYVsxXSAqIGJb
MV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0IGRvdChmbG9hdDMgYSwgZmxvYXQzIGIp
IHsKLSAgICBmbG9hdCByZXN1bHQgPSAwOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMF0gKiBi
WzBdOwotICAgIHJlc3VsdCA9IHJlc3VsdCArIGFbMV0gKiBiWzFdOwotICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFbMl0gKiBiWzJdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdCBkb3QoZmxv
YXQ0IGEsIGZsb2F0NCBiKSB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgKyBhWzBdICogYlswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzFdICogYlsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgKyBhWzJdICogYlsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
KyBhWzNdICogYlszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFt
ZWQgYXNmbG9hdCAqLwotbmF0aXZlIGZsb2F0IGFzZmxvYXQoaW50KTsKLWZsb2F0MiBhc2Zsb2F0
KGludDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4
WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgYXNmbG9hdChpbnQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJl
c3VsdFswXSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsK
LSAgICByZXN1bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDQgYXNmbG9hdChpbnQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGFzZmxvYXQoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gYXNmbG9hdCh4WzFdKTsKLSAgICBy
ZXN1bHRbMl0gPSBhc2Zsb2F0KHhbMl0pOwotICAgIHJlc3VsdFszXSA9IGFzZmxvYXQoeFszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW5hdGl2ZSBmbG9hdCBhc2Zsb2F0KHVpbnQpOwotZmxv
YXQyIGFzZmxvYXQodWludDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
ID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0KHhbMV0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgYXNmbG9hdCh1aW50MyB4KSB7Ci0gICAgZmxvYXQzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF0gPSBhc2Zsb2F0KHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGFz
ZmxvYXQoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gYXNmbG9hdCh4WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGFzZmxvYXQodWludDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdID0gYXNmbG9hdCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBhc2Zsb2F0
KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGFzZmxvYXQoeFsyXSk7Ci0gICAgcmVzdWx0WzNdID0g
YXNmbG9hdCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQgYXNmbG9hdChmbG9h
dCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDIgYXNmbG9hdChmbG9hdDIgeCkgewotICAg
IHJldHVybiB4OwotfQotZmxvYXQzIGFzZmxvYXQoZmxvYXQzIHgpIHsKLSAgICByZXR1cm4geDsK
LX0KLWZsb2F0NCBhc2Zsb2F0KGZsb2F0NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4
MiBhc2Zsb2F0KGZsb2F0MngyIHgpIHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3gyIGFzZmxv
YXQoZmxvYXQzeDIgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0eDIgYXNmbG9hdChmbG9h
dDR4MiB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci1mbG9hdDJ4MyBhc2Zsb2F0KGZsb2F0MngzIHgp
IHsKLSAgICByZXR1cm4geDsKLX0KLWZsb2F0M3gzIGFzZmxvYXQoZmxvYXQzeDMgeCkgewotICAg
IHJldHVybiB4OwotfQotZmxvYXQ0eDMgYXNmbG9hdChmbG9hdDR4MyB4KSB7Ci0gICAgcmV0dXJu
IHg7Ci19Ci1mbG9hdDJ4NCBhc2Zsb2F0KGZsb2F0Mng0IHgpIHsKLSAgICByZXR1cm4geDsKLX0K
LWZsb2F0M3g0IGFzZmxvYXQoZmxvYXQzeDQgeCkgewotICAgIHJldHVybiB4OwotfQotZmxvYXQ0
eDQgYXNmbG9hdChmbG9hdDR4NCB4KSB7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLS8qIEZ1bmN0aW9u
cyBuYW1lZCBpc25vcm1hbCAqLwotbmF0aXZlIGJvb2wgaXNub3JtYWwoZmxvYXQpOwotCi1ib29s
MiBpc25vcm1hbChmbG9hdDIgeCkgewotICAgIGJvb2wyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0g
PSBpc25vcm1hbCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBpc25vcm1hbCh4WzFdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotYm9vbDMgaXNub3JtYWwoZmxvYXQzIHgpIHsKLSAgICBib29sMyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gaXNub3JtYWwoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0g
aXNub3JtYWwoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gaXNub3JtYWwoeFsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWJvb2w0IGlzbm9ybWFsKGZsb2F0NCB4KSB7Ci0gICAgYm9vbDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXSA9IGlzbm9ybWFsKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGlz
bm9ybWFsKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGlzbm9ybWFsKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGlzbm9ybWFsKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogRnVu
Y3Rpb25zIG5hbWVkIEludGVybG9ja2VkRXhjaGFuZ2UgKi8KLW5hdGl2ZSB2b2lkIEludGVybG9j
a2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRo
cmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21p
Y191aW50KiwgdWludCwgZGV2aWNlIHVpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhj
aGFuZ2UoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkRXhjaGFuZ2UoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3Jv
dXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShkZXZpY2UgYXRvbWlj
X2ludCosIGludCwgdGhyZWFkZ3JvdXAgaW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4
Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkIHVpbnQqKTsKLW5h
dGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGlu
dCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZSh0aHJlYWRn
cm91cCBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEV4Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIGRldmljZSBpbnQq
KTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2UodGhyZWFkZ3JvdXAgYXRvbWljX3Vp
bnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4
Y2hhbmdlKHRocmVhZGdyb3VwIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwot
Ci0vKiBGdW5jdGlvbnMgbmFtZWQgR2V0RGltZW5zaW9ucyAqLwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWQgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludD4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50PiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludD4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgZGV2
aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEPHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mj4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mj4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQyPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQot
Ci0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50
Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDx1aW50Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIGRldmljZSB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50Mz4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVp
bnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50Mz4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1
aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PHVpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8dWludDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8dWludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTx1aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQzPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBkZXZpY2UgdWlu
dCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8dWludDQ+LCBk
ZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMUQ8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPHVpbnQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTx1aW50ND4sIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVp
bnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PHVpbnQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8dWludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTx1aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPHVpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8dWludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTx1aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxRDxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50PiwgZGV2aWNlIHVpbnQq
IFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludD4sIGRldmlj
ZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4s
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxpbnQ+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8aW50PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVt
ZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludD4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ+LCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0K
LQotCi0KLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVh
ZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQy
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGludDI+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8aW50Mj4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxpbnQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mj4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDI+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGludDI+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mj4s
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQy
PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDI+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxp
bnQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8aW50Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
Ci0KLQotCi0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJl
YWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50
Mz4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxRDxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEPGludDM+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDM+LCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQzPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQz
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxpbnQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDM+
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQzPiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGludDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8
aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGludDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhy
ZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGlu
dDQ+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMUQ8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxpbnQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGludDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxpbnQ0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8aW50ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8
aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxp
bnQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50
ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEQXJyYXk8aW50ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxpbnQ0
PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGlu
dDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8aW50ND4sIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGludDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxpbnQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxp
bnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGlu
dDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxpbnQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGludDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8aW50ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGludDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxpbnQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K
LQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Piwg
ZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dD4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxl
bWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdD4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdD4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0PiwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0K
LQotCi0KLQotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0
aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
ZmxvYXQyPiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEPGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRo
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mj4sIGRldmljZSB1
aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCk7
Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
REFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQyPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFy
cmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVu
dHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDI+LCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxREFycmF5PGZsb2F0Mj4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURB
cnJheTxmbG9hdDI+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQyPiwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVw
dGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVw
dGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDI+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mj4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8Zmxv
YXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDI+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQy
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0KLQotCi0K
LQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4s
IHRocmVhZCB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUx
RDxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMUQ8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0Mz4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lk
dGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8
ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMUQ8ZmxvYXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgpOwotCi1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxm
bG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBF
bGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0
Mz4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDM+LCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
RWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9h
dDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQzPiwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMURBcnJheTxmbG9hdDM+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQzPiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0Mz4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkQ8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdy
b3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRo
cmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmlj
ZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRB
cnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVp
Z2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxm
bG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFk
Z3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRl
dmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8Zmxv
YXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0
aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3Vw
IHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERl
cHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJl
PGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1
YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9h
dDM+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQz
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDM+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0Mz4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLQotCi0KLQotCi0KLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0
aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxRDxmbG9hdDQ+LCB0aHJlYWQg
dWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0
PiwgdGhyZWFkIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTFEPGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUxRDxmbG9hdDQ+LCBkZXZpY2UgdWludCogV2lkdGgpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMUQ8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEPGZsb2F0ND4s
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTFEPGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoKTsKLQotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0Piwg
dGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5
PGZsb2F0ND4sIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFE
QXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCBkZXZp
Y2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmUxREFycmF5PGZsb2F0ND4sIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJh
eTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ0PiwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBFbGVtZW50cyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEVsZW1lbnRzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTFEQXJy
YXk8ZmxvYXQ0PiwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBFbGVtZW50
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUxREFycmF5PGZsb2F0ND4sIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlMURBcnJheTxmbG9hdDQ+LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3Jv
dXAgdWludCogRWxlbWVudHMpOwotCi1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEPGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmUyRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCog
V2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2
aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZp
Y2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUy
REFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQq
IEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50
cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRz
LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywg
dGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
dGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJh
eTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRo
cmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVs
ZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQq
IEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1
aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0Piwg
dWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWln
aHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERl
cHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUz
RDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50
KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVp
bnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQg
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZp
Y2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRl
dmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRo
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhl
aWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
RGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRl
dmljZSB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCBk
ZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZp
Y2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3Vw
IHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwg
dGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNE
PGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAg
dWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxl
dmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQq
IFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFk
Z3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0
LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwg
dGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRGVwdGgsIGRldmlj
ZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9h
dDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQq
IEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQq
IE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZs
b2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIHRocmVhZCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIERlcHRoLCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8
ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBEZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91
cCB1aW50KiBEZXB0aCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBE
ZXB0aCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQq
IFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0aCwgdGhy
ZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
M0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCBkZXZpY2UgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIERlcHRoLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCBkZXZpY2UgdWludCogRGVwdGgsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBk
ZXZpY2UgdWludCogRGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogRGVwdGgsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZTNEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVp
bnQqIERlcHRoLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlM0Q8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAg
dWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RGVwdGgsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmUzRDxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50
KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBEZXB0
aCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+
LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVD
dWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZl
bHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50
IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVh
ZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0
ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdo
dCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWlu
dCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0
aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZUN1YmU8ZmxvYXQ0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVDdWJlPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3Vi
ZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNl
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
Q3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLQotCi0KLQotCi1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNl
IHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZM
ZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2Ug
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmlj
ZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVt
YmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWlu
dCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51
bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVp
bnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci0KLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50
KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRo
LCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgy
REFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQg
dWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwg
ZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7
Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1
aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRo
cmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWlu
dCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJl
YWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5h
dGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVt
ZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0
RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0
aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCBk
ZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgZGV2
aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3Vw
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJl
YWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVp
bnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZCB1aW50KiBXaWR0aCwgdGhy
ZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVh
ZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRl
dmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1
aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJl
YWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50
KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVs
cyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+
LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQs
IHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMp
OwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
dWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0
aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVp
bnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4s
IHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0
aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWQg
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBF
bGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwg
ZGV2aWNlIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2Ug
dWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywg
ZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMo
VGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBX
aWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIEVsZW1lbnRzLCB0aHJl
YWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBFbGVtZW50cywgZGV2aWNl
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdy
b3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0
aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxlbWVudHMsIHRocmVh
ZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRo
LCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVtZW50cywgdGhyZWFk
IHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVy
ZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwg
dGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVudHMsIGRldmljZSB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRo
cmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWRncm91
cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRo
cmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMs
IGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25z
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogRWxlbWVu
dHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERp
bWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVh
ZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogRWxl
bWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIEVsZW1l
bnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5z
aW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3Jv
dXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50
cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFk
Z3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBFbGVt
ZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVu
c2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdy
b3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogRWxlbWVu
dHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRz
LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRn
cm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCog
RWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXRE
aW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJl
YWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWlu
dCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBH
ZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0
aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFkIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAg
dWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlw
TGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCB0aHJl
YWQgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
IHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZv
aWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1
aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmlj
ZSB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVp
bnQqIEVsZW1lbnRzLCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFk
Z3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1p
cExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhy
ZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1u
YXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50
IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgZGV2aWNlIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1
aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91
cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgZGV2aWNlIHVpbnQqIE51bWJl
ck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBFbGVtZW50cywgdGhyZWFkZ3JvdXAgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0aHJlYWQg
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lk
dGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCBkZXZp
Y2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCog
V2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIEVsZW1lbnRzLCB0
aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91
cCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50
KiBFbGVtZW50cywgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdl
dERpbWVuc2lvbnMoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdy
b3VwIHVpbnQqIEVsZW1lbnRzLCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiwgdWludCBNaXBM
ZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwg
dGhyZWFkZ3JvdXAgdWludCogRWxlbWVudHMsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2
ZWxzKTsKLQotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0
PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0
LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9u
cyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdp
ZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVyT2ZMZXZlbHMpOwot
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRn
cm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRp
dmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExl
dmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50
KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0
aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWQgdWludCogV2lkdGgsIGRldmljZSB1
aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2
b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWws
IHRocmVhZCB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCB0aHJlYWQgdWlu
dCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkIHVpbnQqIFdpZHRoLCB0aHJlYWRn
cm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUg
dm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVs
LCB0aHJlYWQgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgdGhyZWFkZ3Jv
dXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0
dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0
aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZl
IHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZl
bCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCog
TnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhD
dWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWlu
dCogSGVpZ2h0LCB0aHJlYWRncm91cCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9p
ZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBk
ZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBOdW1i
ZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIGRldmljZSB1aW50KiBI
ZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1l
bnNpb25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWlu
dCogV2lkdGgsIGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKLW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9h
dD4sIHVpbnQgTWlwTGV2ZWwsIGRldmljZSB1aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCog
SGVpZ2h0LCB0aHJlYWQgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGlt
ZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgZGV2aWNlIHVp
bnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIGRldmljZSB1aW50KiBOdW1iZXJP
ZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1YmU8Zmxv
YXQ+LCB1aW50IE1pcExldmVsLCBkZXZpY2UgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQq
IEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQg
R2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhy
ZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZCB1aW50KiBIZWlnaHQsIHRocmVhZCB1aW50KiBO
dW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVEZXB0aEN1
YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwgdGhyZWFk
IHVpbnQqIEhlaWdodCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2ZSB2b2lk
IEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2ZWwsIHRo
cmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWQgdWludCogSGVpZ2h0LCB0aHJlYWRncm91cCB1
aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNpb25zKFRleHR1cmVE
ZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1aW50KiBXaWR0aCwg
ZGV2aWNlIHVpbnQqIEhlaWdodCwgdGhyZWFkIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKLW5hdGl2
ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQgTWlwTGV2
ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCBkZXZpY2UgdWludCogSGVpZ2h0LCBkZXZpY2Ug
dWludCogTnVtYmVyT2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgs
IGRldmljZSB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsK
LW5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHVpbnQg
TWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWln
aHQsIHRocmVhZCB1aW50KiBOdW1iZXJPZkxldmVscyk7Ci1uYXRpdmUgdm9pZCBHZXREaW1lbnNp
b25zKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCB1aW50IE1pcExldmVsLCB0aHJlYWRncm91cCB1
aW50KiBXaWR0aCwgdGhyZWFkZ3JvdXAgdWludCogSGVpZ2h0LCBkZXZpY2UgdWludCogTnVtYmVy
T2ZMZXZlbHMpOwotbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlRGVwdGhDdWJlPGZs
b2F0PiwgdWludCBNaXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3Vw
IHVpbnQqIEhlaWdodCwgdGhyZWFkZ3JvdXAgdWludCogTnVtYmVyT2ZMZXZlbHMpOwotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgb3BlcmF0b3IrICovCi1uYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGlu
dCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcisodWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3Bl
cmF0b3IrKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyLCB1aW50
Mik7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQsIHVpbnQyKTsKLW5hdGl2ZSB1aW50MiBv
cGVyYXRvcisodWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50MywgdWlu
dDMpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yKyh1aW50LCB1aW50Myk7Ci1uYXRpdmUgdWludDMg
b3BlcmF0b3IrKHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludDQsIHVp
bnQ0KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvcisodWludCwgdWludDQpOwotbmF0aXZlIHVpbnQ0
IG9wZXJhdG9yKyh1aW50NCwgdWludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50MiwgaW50
Mik7Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50LCBpbnQyKTsKLW5hdGl2ZSBpbnQyIG9wZXJh
dG9yKyhpbnQyLCBpbnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IrKGludDMsIGludDMpOwotbmF0
aXZlIGludDMgb3BlcmF0b3IrKGludCwgaW50Myk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50
MywgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yKyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0
IG9wZXJhdG9yKyhpbnQsIGludDQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IrKGludDQsIGludCk7
Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yKyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQy
IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQyKTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IrKGZsb2F0
MiwgZmxvYXQpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzLCBmbG9hdDMpOwotbmF0
aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQsIGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJh
dG9yKyhmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0NCwgZmxv
YXQ0KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDQpOwotbmF0aXZlIGZs
b2F0NCBvcGVyYXRvcisoZmxvYXQ0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3Ir
KGZsb2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0LCBm
bG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0MngyLCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQzeDIgb3BlcmF0b3IrKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxv
YXQzeDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0
b3IrKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgy
LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDR4Mik7
Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IrKGZsb2F0NHgyLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQyeDMgb3BlcmF0b3IrKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3Bl
cmF0b3IrKGZsb2F0LCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0
MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0M3gzLCBmbG9hdDN4
Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUg
ZmxvYXQzeDMgb3BlcmF0b3IrKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3Bl
cmF0b3IrKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZs
b2F0LCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IrKGZsb2F0NHgzLCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRp
dmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQyeDQg
b3BlcmF0b3IrKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZs
b2F0M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9h
dDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IrKGZsb2F0M3g0LCBmbG9hdCk7Ci1uYXRp
dmUgZmxvYXQ0eDQgb3BlcmF0b3IrKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0
eDQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3Ir
KGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IrKHVpbnQyKTsKLW5hdGl2
ZSB1aW50MyBvcGVyYXRvcisodWludDMpOwotbmF0aXZlIHVpbnQ0IG9wZXJhdG9yKyh1aW50NCk7
Ci1uYXRpdmUgaW50MiBvcGVyYXRvcisoaW50Mik7Ci1uYXRpdmUgaW50MyBvcGVyYXRvcisoaW50
Myk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvcisoaW50NCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9y
KyhmbG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvcisoZmxvYXQzKTsKLW5hdGl2ZSBmbG9h
dDQgb3BlcmF0b3IrKGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IrKGZsb2F0Mngy
KTsKLW5hdGl2ZSBmbG9hdDN4MiBvcGVyYXRvcisoZmxvYXQzeDIpOwotbmF0aXZlIGZsb2F0NHgy
IG9wZXJhdG9yKyhmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IrKGZsb2F0Mngz
KTsKLW5hdGl2ZSBmbG9hdDN4MyBvcGVyYXRvcisoZmxvYXQzeDMpOwotbmF0aXZlIGZsb2F0NHgz
IG9wZXJhdG9yKyhmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IrKGZsb2F0Mng0
KTsKLW5hdGl2ZSBmbG9hdDN4NCBvcGVyYXRvcisoZmxvYXQzeDQpOwotbmF0aXZlIGZsb2F0NHg0
IG9wZXJhdG9yKyhmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmcmFjICovCi1mbG9h
dCBmcmFjKGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAtIGZsb29yKHgpOwotfQotZmxvYXQyIGZy
YWMoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZyYWMo
eFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotZmxvYXQzIGZyYWMoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGZyYWMoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZnJhYyh4WzFdKTsKLSAgICByZXN1
bHRbMl0gPSBmcmFjKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZnJhYyhm
bG9hdDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZnJhYyh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBmcmFjKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZyYWMoeFsy
XSk7Ci0gICAgcmVzdWx0WzNdID0gZnJhYyh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQyeDIgZnJhYyhmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJl
c3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIGZyYWMo
ZmxvYXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
cmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgZnJhYyhm
bG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZy
YWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZyYWMoeFszXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBmcmFjKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZnJhYyh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQyeDMgZnJhYyhmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICBy
ZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDN4MyBmcmFjKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmcmFjKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
ZnJhYyh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmcmFjKHhbMV1bMV0pOwotICAgIHJl
c3VsdFsyXVsxXSA9IGZyYWMoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgzIGZyYWMo
ZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBm
cmFjKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZyYWMoeFsxXVswXSk7Ci0gICAgcmVz
dWx0WzJdWzBdID0gZnJhYyh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBmcmFjKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFjKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGZyYWMoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZnJhYyh4
WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGZyYWMoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZnJhYyh4WzNdWzJdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgZnJhYyhmbG9hdDJ4NCB4KSB7Ci0gICAg
ZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBmcmFjKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gZnJhYyh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmcmFjKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZnJh
Yyh4WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgZnJhYyhmbG9hdDN4
NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZyYWMoeFsw
XVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZnJhYyh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1b
MF0gPSBmcmFjKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGZyYWMoeFswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gZnJhYyh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmcmFj
KHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0
WzFdWzJdID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0p
OwotICAgIHJlc3VsdFswXVszXSA9IGZyYWMoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0g
ZnJhYyh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBmcmFjKHhbMl1bM10pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBmcmFjKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZnJhYyh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmcmFjKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZyYWMoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZnJhYyh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBm
cmFjKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZyYWMoeFsxXVsxXSk7Ci0gICAgcmVz
dWx0WzJdWzFdID0gZnJhYyh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBmcmFjKHhbM11b
MV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZyYWMoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJd
ID0gZnJhYyh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBmcmFjKHhbMl1bMl0pOwotICAg
IHJlc3VsdFszXVsyXSA9IGZyYWMoeFszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZnJhYyh4
WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmcmFjKHhbMV1bM10pOwotICAgIHJlc3VsdFsy
XVszXSA9IGZyYWMoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gZnJhYyh4WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgc3RvcmUgKi8KLW5h
dGl2ZSB2b2lkIHN0b3JlKGRldmljZSBhdG9taWNfaW50KiwgaW50KTsKLW5hdGl2ZSB2b2lkIHN0
b3JlKGRldmljZSBhdG9taWNfdWludCosIHVpbnQpOwotbmF0aXZlIHZvaWQgc3RvcmUodGhyZWFk
Z3JvdXAgYXRvbWljX2ludCosIGludCk7Ci1uYXRpdmUgdm9pZCBzdG9yZSh0aHJlYWRncm91cCBh
dG9taWNfdWludCosIHVpbnQpOwotCi0vKiBGdW5jdGlvbnMgbmFtZWQgcmVmcmFjdCAqLwotZmxv
YXQgcmVmcmFjdChmbG9hdCBpLCBmbG9hdCBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdCByZXN1
bHQ7Ci0gICAgZmxvYXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChu
LCBpKSk7Ci0gICAgaWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVy
biBldGEgKiBpIC0gKGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLWZsb2F0MiBy
ZWZyYWN0KGZsb2F0MiBpLCBmbG9hdDIgbiwgZmxvYXQgZXRhKSB7Ci0gICAgZmxvYXQyIHJlc3Vs
dDsKLSAgICBmbG9hdCBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90KG4sIGkpICogZG90KG4s
IGkpKTsKLSAgICBpZiAoayA8IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJu
IGV0YSAqIGkgLSAoZXRhICogZG90KG4sIGkpICsgc3FydChrKSkgKiBuOwotfQotZmxvYXQzIHJl
ZnJhY3QoZmxvYXQzIGksIGZsb2F0MyBuLCBmbG9hdCBldGEpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIGZsb2F0IGsgPSAxIC0gZXRhICogZXRhICogKDEgLSBkb3QobiwgaSkgKiBkb3Qobiwg
aSkpOwotICAgIGlmIChrIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4g
ZXRhICogaSAtIChldGEgKiBkb3QobiwgaSkgKyBzcXJ0KGspKSAqIG47Ci19Ci1mbG9hdDQgcmVm
cmFjdChmbG9hdDQgaSwgZmxvYXQ0IG4sIGZsb2F0IGV0YSkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgZmxvYXQgayA9IDEgLSBldGEgKiBldGEgKiAoMSAtIGRvdChuLCBpKSAqIGRvdChuLCBp
KSk7Ci0gICAgaWYgKGsgPCAwKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBl
dGEgKiBpIC0gKGV0YSAqIGRvdChuLCBpKSArIHNxcnQoaykpICogbjsKLX0KLQotLyogRnVuY3Rp
b25zIG5hbWVkIGxvZzEwICovCi1mbG9hdCBsb2cxMChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIGxv
Zyh4KSAvIGxvZyhmbG9hdCgxMCkpOwotfQotZmxvYXQyIGxvZzEwKGZsb2F0MiB4KSB7Ci0gICAg
ZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1bHRb
MV0gPSBsb2cxMCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzIGxvZzEwKGZs
b2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBsb2cxMCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4
WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGxvZzEwKGZsb2F0NCB4KSB7Ci0g
ICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsb2cxMCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBsb2cxMCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBsb2cxMCh4WzJdKTsKLSAgICBy
ZXN1bHRbM10gPSBsb2cxMCh4WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIg
bG9nMTAoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBs
b2cxMCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgbG9nMTAoZmxv
YXQzeDIgeCkgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cx
MCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1
bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbG9n
MTAoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cx
MCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJd
WzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cxMCh4WzNdWzFdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDMgbG9nMTAoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cx
MCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgbG9nMTAoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cx
MCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJdWzJdKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotZmxvYXQ0eDMgbG9nMTAoZmxvYXQ0eDMgeCkgewotICAgIGZsb2F0NHgz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cxMCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAg
ICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBsb2cx
MCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQyeDQgbG9nMTAoZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3Vs
dDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0g
PSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cx
MCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4WzFd
WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDQgbG9nMTAoZmxvYXQzeDQgeCkg
ewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0g
PSBsb2cxMCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cx
MCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsKLSAgICByZXN1
bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsb2cxMCh4WzJd
WzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBsb2cxMCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQgbG9nMTAoZmxvYXQ0eDQgeCkgewotICAg
IGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsb2cxMCh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBsb2cxMCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsb2cx
MCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBsb2cxMCh4WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsb2cxMCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsb2cxMCh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBsb2cxMCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11b
MV0gPSBsb2cxMCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBsb2cxMCh4WzBdWzJdKTsK
LSAgICByZXN1bHRbMV1bMl0gPSBsb2cxMCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBs
b2cxMCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBsb2cxMCh4WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBsb2cxMCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsb2cxMCh4
WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsb2cxMCh4WzJdWzNdKTsKLSAgICByZXN1bHRb
M11bM10gPSBsb2cxMCh4WzNdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5j
dGlvbnMgbmFtZWQgb3BlcmF0b3IvICovCi1uYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsIGludCk7
Ci1uYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0
b3IvKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50Mik7
Ci1uYXRpdmUgdWludDIgb3BlcmF0b3IvKHVpbnQyLCB1aW50KTsKLW5hdGl2ZSB1aW50MiBvcGVy
YXRvci8odWludCwgdWludDIpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50MywgdWludDMp
OwotbmF0aXZlIHVpbnQzIG9wZXJhdG9yLyh1aW50MywgdWludCk7Ci1uYXRpdmUgdWludDMgb3Bl
cmF0b3IvKHVpbnQsIHVpbnQzKTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQ0
KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci8odWludDQsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9w
ZXJhdG9yLyh1aW50LCB1aW50NCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50MiwgaW50Mik7
Ci1uYXRpdmUgaW50MiBvcGVyYXRvci8oaW50MiwgaW50KTsKLW5hdGl2ZSBpbnQyIG9wZXJhdG9y
LyhpbnQsIGludDIpOwotbmF0aXZlIGludDMgb3BlcmF0b3IvKGludDMsIGludDMpOwotbmF0aXZl
IGludDMgb3BlcmF0b3IvKGludDMsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci8oaW50LCBp
bnQzKTsKLW5hdGl2ZSBpbnQ0IG9wZXJhdG9yLyhpbnQ0LCBpbnQ0KTsKLW5hdGl2ZSBpbnQ0IG9w
ZXJhdG9yLyhpbnQ0LCBpbnQpOwotbmF0aXZlIGludDQgb3BlcmF0b3IvKGludCwgaW50NCk7Ci1u
YXRpdmUgZmxvYXQyIG9wZXJhdG9yLyhmbG9hdDIsIGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQyIG9w
ZXJhdG9yLyhmbG9hdDIsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IvKGZsb2F0LCBm
bG9hdDIpOwotbmF0aXZlIGZsb2F0MyBvcGVyYXRvci8oZmxvYXQzLCBmbG9hdDMpOwotbmF0aXZl
IGZsb2F0MyBvcGVyYXRvci8oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9y
LyhmbG9hdCwgZmxvYXQzKTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQ0
KTsKLW5hdGl2ZSBmbG9hdDQgb3BlcmF0b3IvKGZsb2F0NCwgZmxvYXQpOwotbmF0aXZlIGZsb2F0
NCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0NCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZs
b2F0MngyLCBmbG9hdDJ4Mik7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0MngyLCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDJ4Mik7Ci1uYXRp
dmUgZmxvYXQzeDIgb3BlcmF0b3IvKGZsb2F0M3gyLCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQz
eDIgb3BlcmF0b3IvKGZsb2F0M3gyLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzeDIgb3BlcmF0b3Iv
KGZsb2F0LCBmbG9hdDN4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBm
bG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0NHgyLCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQ0eDIgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Mik7Ci1uYXRpdmUgZmxvYXQy
eDMgb3BlcmF0b3IvKGZsb2F0MngzLCBmbG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0
b3IvKGZsb2F0MngzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDMgb3BlcmF0b3IvKGZsb2F0LCBm
bG9hdDJ4Myk7Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdDN4Myk7
Ci1uYXRpdmUgZmxvYXQzeDMgb3BlcmF0b3IvKGZsb2F0M3gzLCBmbG9hdCk7Ci1uYXRpdmUgZmxv
YXQzeDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDN4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0
b3IvKGZsb2F0NHgzLCBmbG9hdDR4Myk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0
NHgzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDMgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDR4Myk7
Ci1uYXRpdmUgZmxvYXQyeDQgb3BlcmF0b3IvKGZsb2F0Mng0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUg
ZmxvYXQyeDQgb3BlcmF0b3IvKGZsb2F0Mng0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQyeDQgb3Bl
cmF0b3IvKGZsb2F0LCBmbG9hdDJ4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0
M3g0LCBmbG9hdDN4NCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0M3g0LCBmbG9h
dCk7Ci1uYXRpdmUgZmxvYXQzeDQgb3BlcmF0b3IvKGZsb2F0LCBmbG9hdDN4NCk7Ci1uYXRpdmUg
ZmxvYXQ0eDQgb3BlcmF0b3IvKGZsb2F0NHg0LCBmbG9hdDR4NCk7Ci1uYXRpdmUgZmxvYXQ0eDQg
b3BlcmF0b3IvKGZsb2F0NHg0LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQ0eDQgb3BlcmF0b3IvKGZs
b2F0LCBmbG9hdDR4NCk7Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBkZHlfZmluZSAqLwotZmxvYXQg
ZGR5X2ZpbmUoZmxvYXQgeCkgewotICAgIHJldHVybiBkZHkoeCk7Ci19Ci1mbG9hdDIgZGR5X2Zp
bmUoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRkeV9m
aW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9maW5lKHhbMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDMgZGR5X2ZpbmUoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9m
aW5lKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDQgZGR5X2ZpbmUoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXSA9IGRkeV9maW5lKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9m
aW5lKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeV9maW5lKHhbMl0pOwotICAgIHJlc3VsdFsz
XSA9IGRkeV9maW5lKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHlf
ZmluZShmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4
MiBkZHlfZmluZShmbG9hdDN4MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5l
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHlfZmluZShmbG9hdDR4MiB4KSB7Ci0gICAg
ZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1b
MV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHlfZmluZShmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5l
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9m
aW5lKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHlfZmluZShm
bG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRk
eV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsy
XSA9IGRkeV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHlfZmluZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5l
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRk
eV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGRkeV9maW5lKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCBkZHlf
ZmluZShmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9maW5lKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGRkeV9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5l
KHhbMV1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHlfZmluZShmbG9h
dDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9m
aW5lKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRkeV9maW5lKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRk
eV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9maW5lKHhbMV1bMV0pOwot
ICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9
IGRkeV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0p
OwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVsz
XSA9IGRkeV9maW5lKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeV9maW5lKHhbMl1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDR4NCBkZHlfZmluZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeV9maW5lKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeV9maW5lKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9maW5l
KHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeV9maW5lKHhbM11bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9maW5lKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9m
aW5lKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9maW5lKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IGRkeV9maW5lKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRk
eV9maW5lKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9maW5lKHhbMV1bMl0pOwot
ICAgIHJlc3VsdFsyXVsyXSA9IGRkeV9maW5lKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9
IGRkeV9maW5lKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9maW5lKHhbMF1bM10p
OwotICAgIHJlc3VsdFsxXVszXSA9IGRkeV9maW5lKHhbMV1bM10pOwotICAgIHJlc3VsdFsyXVsz
XSA9IGRkeV9maW5lKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRkeV9maW5lKHhbM11b
M10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBhbnkgKi8K
LWJvb2wgYW55KGJvb2wgeCkgewotICAgIHJldHVybiB4OwotfQotYm9vbCBhbnkoYm9vbDIgeCkg
ewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
KTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1ib29sIGFueShib29sMyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbMF0pOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXSk7Ci0g
ICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoYm9vbDQgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0g
cmVzdWx0IHx8ICh4WzBdKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0pOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsyXSk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkodWludCB4KSB7Ci0gICAgcmV0dXJuIHgg
IT0gMDsKLX0KLWJvb2wgYW55KHVpbnQyIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KHVpbnQzIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFu
eSh1aW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wgYW55KGludCB4KSB7
Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLWJvb2wgYW55KGludDIgeCkgewotICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdICE9IDApOwotICAgIHJl
c3VsdCA9IHJlc3VsdCB8fCAoeFsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoaW50MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdICE9IDAp
OwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotYm9vbCBhbnkoaW50NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgKHhbM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWJvb2wg
YW55KGZsb2F0IHgpIHsKLSAgICByZXR1cm4geCAhPSAwOwotfQotYm9vbCBhbnkoZmxvYXQyIHgp
IHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQ0IHgpIHsKLSAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXSAhPSAwKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3Vs
dCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhb
MF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShmbG9hdDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7
Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJl
c3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
ZmxvYXQ0eDIgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzNdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsw
XVsxXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAg
cmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8
fCAoeFszXVsxXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQy
eDMgeCkgewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzFdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWJvb2wgYW55KGZsb2F0M3gzIHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJd
WzBdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzJdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzJdICE9IDApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ib29sIGFueShm
bG9hdDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMF1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbM11bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzNdWzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzJdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVsyXSAh
PSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQyeDQgeCkgewotICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVsyXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoZmxvYXQzeDQgeCkgewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzBdICE9IDApOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMl1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBdWzFdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsxXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMl1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzBd
WzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVszXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bM10gIT0gMCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWJvb2wgYW55KGZsb2F0NHg0IHgpIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwot
ICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVswXSAhPSAwKTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgKHhbMV1bMF0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzJdWzBdICE9
IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFszXVswXSAhPSAwKTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgKHhbMF1bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8ICh4WzFd
WzFdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsyXVsxXSAhPSAwKTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgKHhbM11bMV0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVzdWx0IHx8
ICh4WzBdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsxXVsyXSAhPSAwKTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMl1bMl0gIT0gMCk7Ci0gICAgcmVzdWx0ID0gcmVz
dWx0IHx8ICh4WzNdWzJdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFswXVszXSAh
PSAwKTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgKHhbMV1bM10gIT0gMCk7Ci0gICAgcmVzdWx0
ID0gcmVzdWx0IHx8ICh4WzJdWzNdICE9IDApOwotICAgIHJlc3VsdCA9IHJlc3VsdCB8fCAoeFsz
XVszXSAhPSAwKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4MiB4KSB7
Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDN4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9v
bCBhbnkoYm9vbDR4MiB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsz
XVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnko
Ym9vbDJ4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDN4MyB4KSB7Ci0g
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotYm9vbCBhbnkoYm9vbDR4MyB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsw
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsw
XVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsyXTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDJ4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFswXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVszXTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotYm9vbCBhbnkoYm9vbDN4NCB4KSB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFswXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVsy
XTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQg
fHwgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotYm9vbCBhbnkoYm9vbDR4NCB4KSB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVswXTsKLSAgICByZXN1bHQg
PSByZXN1bHQgfHwgeFsxXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVswXTsKLSAg
ICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVswXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsw
XVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsxXTsKLSAgICByZXN1bHQgPSByZXN1
bHQgfHwgeFsyXVsxXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFszXVsxXTsKLSAgICByZXN1
bHQgPSByZXN1bHQgfHwgeFswXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsxXVsyXTsK
LSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwg
eFszXVsyXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFswXVszXTsKLSAgICByZXN1bHQgPSBy
ZXN1bHQgfHwgeFsxXVszXTsKLSAgICByZXN1bHQgPSByZXN1bHQgfHwgeFsyXVszXTsKLSAgICBy
ZXN1bHQgPSByZXN1bHQgfHwgeFszXVszXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBG
dW5jdGlvbnMgbmFtZWQgZGR5X2NvYXJzZSAqLwotZmxvYXQgZGR5X2NvYXJzZShmbG9hdCB4KSB7
Ci0gICAgcmV0dXJuIGRkeSh4KTsKLX0KLWZsb2F0MiBkZHlfY29hcnNlKGZsb2F0MiB4KSB7Ci0g
ICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHlfY29hcnNlKHhbMF0pOwotICAg
IHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0MyBkZHlfY29hcnNlKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSBkZHlfY29hcnNlKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGRkeV9jb2Fyc2UoeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZGR5X2NvYXJzZSh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotZmxvYXQ0IGRkeV9jb2Fyc2UoZmxvYXQ0IHgpIHsKLSAgICBmbG9hdDQgcmVzdWx0Owot
ICAgIHJlc3VsdFswXSA9IGRkeV9jb2Fyc2UoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZGR5X2Nv
YXJzZSh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBkZHlfY29hcnNlKHhbMl0pOwotICAgIHJlc3Vs
dFszXSA9IGRkeV9jb2Fyc2UoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGRkeV9jb2Fyc2UoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci1mbG9hdDN4MiBkZHlfY29hcnNlKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9j
b2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgy
IGRkeV9jb2Fyc2UoZmxvYXQ0eDIgeCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9j
b2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBkZHlfY29hcnNlKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsx
XSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5X2NvYXJzZSh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0pOwotICAgIHJl
c3VsdFszXVsxXSA9IGRkeV9jb2Fyc2UoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LWZsb2F0MngzIGRkeV9jb2Fyc2UoZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsK
LSAgICByZXN1bHRbMF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGRkeV9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4
WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5
X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgZGR5X2Nv
YXJzZShmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2NvYXJzZSh4
WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwotICAgIHJl
c3VsdFswXVsxXSA9IGRkeV9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR5
X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHlfY29hcnNlKHhbMl1bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBkZHlfY29hcnNl
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBkZHlfY29hcnNlKGZs
b2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR5
X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHlfY29hcnNlKHhbMV1bMF0p
OwotICAgIHJlc3VsdFsyXVswXSA9IGRkeV9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNd
WzBdID0gZGR5X2NvYXJzZSh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNl
KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAg
cmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBk
ZHlfY29hcnNlKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fyc2UoeFswXVsy
XSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSBkZHlfY29hcnNlKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeV9jb2Fy
c2UoeFszXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeV9jb2Fyc2Uo
ZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBk
ZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fyc2UoeFsxXVsw
XSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHlfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeV9jb2Fy
c2UoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR5X2NvYXJzZSh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9
IGRkeV9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRk
eV9jb2Fyc2UoZmxvYXQzeDQgeCkgewotICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRb
MF1bMF0gPSBkZHlfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeV9jb2Fy
c2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR5X2NvYXJzZSh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHlfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9
IGRkeV9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR5X2NvYXJzZSh4WzJd
WzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3Vs
dFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2Nv
YXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBkZHlfY29hcnNlKHhbMF1bM10pOwot
ICAgIHJlc3VsdFsxXVszXSA9IGRkeV9jb2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNd
ID0gZGR5X2NvYXJzZSh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDQg
ZGR5X2NvYXJzZShmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGRkeV9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR5X2Nv
YXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHlfY29hcnNlKHhbMl1bMF0pOwot
ICAgIHJlc3VsdFszXVswXSA9IGRkeV9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFd
ID0gZGR5X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHlfY29hcnNlKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeV9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVz
dWx0WzNdWzFdID0gZGR5X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHlf
Y29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeV9jb2Fyc2UoeFsxXVsyXSk7
Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR5X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11b
Ml0gPSBkZHlfY29hcnNlKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGRkeV9jb2Fyc2Uo
eFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR5X2NvYXJzZSh4WzFdWzNdKTsKLSAgICBy
ZXN1bHRbMl1bM10gPSBkZHlfY29hcnNlKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGRk
eV9jb2Fyc2UoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25z
IG5hbWVkIG9wZXJhdG9yKysgKi8KLXVpbnQgb3BlcmF0b3IrKyh1aW50IHZhbHVlKSB7Ci0gICAg
cmV0dXJuIHZhbHVlICsgMTsKLX0KLWludCBvcGVyYXRvcisrKGludCB2YWx1ZSkgewotICAgIHJl
dHVybiB2YWx1ZSArIDE7Ci19Ci1mbG9hdCBvcGVyYXRvcisrKGZsb2F0IHZhbHVlKSB7Ci0gICAg
cmV0dXJuIHZhbHVlICsgMTsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIEludGVybG9ja2VkQW5k
ICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX3VpbnQqLCB1aW50
LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21p
Y19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGRl
dmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZEFuZChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY191aW50KiwgdWludCwgdGhyZWFkZ3Jv
dXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQoZGV2aWNlIGF0b21pY19pbnQq
LCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhy
ZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgdGhyZWFkIGludCop
OwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1
aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRBbmQodGhyZWFkZ3Jv
dXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRBbmQodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWRncm91cCB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEFuZCh0aHJlYWRncm91cCBhdG9taWNfaW50KiwgaW50
LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yfiAqLwot
Ym9vbCBvcGVyYXRvcn4oYm9vbCB2YWx1ZSkgewotICAgIHJldHVybiAhdmFsdWU7Ci19Ci1uYXRp
dmUgaW50IG9wZXJhdG9yfihpbnQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQpOwotCi0v
KiBGdW5jdGlvbnMgbmFtZWQgZGR4ICovCi1uYXRpdmUgZmxvYXQgZGR4KGZsb2F0KTsKLWZsb2F0
MiBkZHgoZmxvYXQyIHgpIHsKLSAgICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGRk
eCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MyBkZHgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXSA9IGRkeCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHgoeFsxXSk7Ci0gICAgcmVzdWx0
WzJdID0gZGR4KHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZGR4KGZsb2F0
NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHgoeFswXSk7Ci0g
ICAgcmVzdWx0WzFdID0gZGR4KHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeCh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBkZHgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGRkeChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4KGZsb2F0M3gyIHgpIHsK
LSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4KHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHgo
eFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGRkeChmbG9hdDR4MiB4KSB7Ci0gICAgZmxv
YXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1bMF0p
OwotICAgIHJlc3VsdFszXVswXSA9IGRkeCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBk
ZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhbMV1bMV0pOwotICAgIHJlc3Vs
dFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHgoeFszXVsxXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGRkeChmbG9hdDJ4MyB4KSB7Ci0gICAg
ZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0g
PSBkZHgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBkZHgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gz
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gZGR4KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBkZHgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4KHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeCh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQ0eDMgZGR4KGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0
WzBdWzBdID0gZGR4KHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGRkeCh4WzFdWzBdKTsK
LSAgICByZXN1bHRbMl1bMF0gPSBkZHgoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4
KHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwot
ICAgIHJlc3VsdFszXVsxXSA9IGRkeCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHgo
eFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3VsdFsy
XVsyXSA9IGRkeCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBkZHgoeFszXVsyXSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGRkeChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxv
YXQyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0p
OwotICAgIHJlc3VsdFsxXVsxXSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBk
ZHgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZGR4KHhbMV1bMl0pOwotICAgIHJlc3Vs
dFswXVszXSA9IGRkeCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGRkeChmbG9hdDN4NCB4KSB7Ci0gICAg
ZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeCh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4KHhbMl1b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0g
PSBkZHgoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4KHhbMl1bMV0pOwotICAgIHJl
c3VsdFswXVsyXSA9IGRkeCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsy
XSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4KHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGRkeCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHgoeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gZGR4KHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4
NCBkZHgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBkZHgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4KHhbMV1bMF0pOwotICAg
IHJlc3VsdFsyXVswXSA9IGRkeCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHgoeFsz
XVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4KHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGRkeCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHgoeFsyXVsxXSk7Ci0gICAg
cmVzdWx0WzNdWzFdID0gZGR4KHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGRkeCh4WzBd
WzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJd
ID0gZGR4KHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGRkeCh4WzNdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBkZHgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZGR4KHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10g
PSBkZHgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5h
bWVkIEludGVybG9ja2VkTWF4ICovCi1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2Ug
YXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRNYXgoZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZCBpbnQqKTsKLW5hdGl2ZSB2b2lk
IEludGVybG9ja2VkTWF4KGRldmljZSBhdG9taWNfdWludCosIHVpbnQsIGRldmljZSB1aW50Kik7
Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heChkZXZpY2UgYXRvbWljX2ludCosIGludCwgZGV2
aWNlIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgoZGV2aWNlIGF0b21pY191aW50
KiwgdWludCwgdGhyZWFkZ3JvdXAgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgo
ZGV2aWNlIGF0b21pY19pbnQqLCBpbnQsIHRocmVhZGdyb3VwIGludCopOwotbmF0aXZlIHZvaWQg
SW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0aHJlYWQgdWlu
dCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2ludCos
IGludCwgdGhyZWFkIGludCopOwotbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3Jv
dXAgYXRvbWljX3VpbnQqLCB1aW50LCBkZXZpY2UgdWludCopOwotbmF0aXZlIHZvaWQgSW50ZXJs
b2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX2ludCosIGludCwgZGV2aWNlIGludCopOwotbmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgodGhyZWFkZ3JvdXAgYXRvbWljX3VpbnQqLCB1aW50LCB0
aHJlYWRncm91cCB1aW50Kik7Ci1uYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE1heCh0aHJlYWRncm91
cCBhdG9taWNfaW50KiwgaW50LCB0aHJlYWRncm91cCBpbnQqKTsKLQotLyogRnVuY3Rpb25zIG5h
bWVkIGNvc2ggKi8KLW5hdGl2ZSBmbG9hdCBjb3NoKGZsb2F0KTsKLWZsb2F0MiBjb3NoKGZsb2F0
MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBjb3NoKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
MyBjb3NoKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBj
b3NoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGNvc2goeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
Y29zaCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IGNvc2goZmxvYXQ0IHgp
IHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGNvc2goeFswXSk7Ci0gICAg
cmVzdWx0WzFdID0gY29zaCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSBjb3NoKHhbMl0pOwotICAg
IHJlc3VsdFszXSA9IGNvc2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mngy
IGNvc2goZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3No
KHhbMV1bMV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MiBjb3NoKGZsb2F0M3gy
IHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAg
ICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGNvc2go
eFsyXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NHgyIGNvc2goZmxvYXQ0eDIg
eCkgewotICAgIGZsb2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1b
MF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBd
ID0gY29zaCh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBjb3NoKHhbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGNvc2goeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFsz
XVsxXSA9IGNvc2goeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGNv
c2goZmxvYXQyeDMgeCkgewotICAgIGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0g
PSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhb
MV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgY29z
aChmbG9hdDN4MyB4KSB7Ci0gICAgZmxvYXQzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gY29zaCh4WzFdWzBdKTsKLSAgICBy
ZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGNvc2goeFsw
XVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gY29zaCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBjb3NoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7Ci0g
ICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBjb3No
KHhbMl1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MyBjb3NoKGZsb2F0NHgz
IHgpIHsKLSAgICBmbG9hdDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gY29zaCh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBjb3NoKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVsw
XSA9IGNvc2goeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gY29zaCh4WzNdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGNvc2go
eFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
M11bMV0gPSBjb3NoKHhbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNvc2goeFswXVsyXSk7
Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBj
b3NoKHhbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGNvc2goeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGNvc2goZmxvYXQyeDQgeCkgewotICAgIGZsb2F0Mng0
IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBdWzFdKTsK
LSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGNv
c2goeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gY29zaCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsxXVsz
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGNvc2goZmxvYXQzeDQgeCkgewot
ICAgIGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBjb3NoKHhbMF1bMF0pOwot
ICAgIHJlc3VsdFsxXVswXSA9IGNvc2goeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gY29z
aCh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBjb3NoKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGNvc2goeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gY29zaCh4WzJdWzFd
KTsKLSAgICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9
IGNvc2goeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbMF1bM10gPSBjb3NoKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGNvc2goeFsx
XVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gY29zaCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDQgY29zaChmbG9hdDR4NCB4KSB7Ci0gICAgZmxvYXQ0eDQgcmVzdWx0
OwotICAgIHJlc3VsdFswXVswXSA9IGNvc2goeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0g
Y29zaCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBjb3NoKHhbMl1bMF0pOwotICAgIHJl
c3VsdFszXVswXSA9IGNvc2goeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gY29zaCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBjb3NoKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsx
XSA9IGNvc2goeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gY29zaCh4WzNdWzFdKTsKLSAg
ICByZXN1bHRbMF1bMl0gPSBjb3NoKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGNvc2go
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gY29zaCh4WzJdWzJdKTsKLSAgICByZXN1bHRb
M11bMl0gPSBjb3NoKHhbM11bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGNvc2goeFswXVszXSk7
Ci0gICAgcmVzdWx0WzFdWzNdID0gY29zaCh4WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBj
b3NoKHhbMl1bM10pOwotICAgIHJlc3VsdFszXVszXSA9IGNvc2goeFszXVszXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVkIGRkeF9jb2Fyc2UgKi8KLWZsb2F0
IGRkeF9jb2Fyc2UoZmxvYXQgeCkgewotICAgIHJldHVybiBkZHgoeCk7Ci19Ci1mbG9hdDIgZGR4
X2NvYXJzZShmbG9hdDIgeCkgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0g
ZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBkZHhfY29hcnNlKHhbMV0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgZGR4X2NvYXJzZShmbG9hdDMgeCkgewotICAgIGZs
b2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gZGR4X2NvYXJzZSh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBkZHhfY29hcnNlKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGRkeF9jb2Fyc2UoeFsy
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0NCBkZHhfY29hcnNlKGZsb2F0NCB4KSB7
Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBkZHhfY29hcnNlKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IGRkeF9jb2Fyc2UoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0gZGR4X2Nv
YXJzZSh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBkZHhfY29hcnNlKHhbM10pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDJ4MiBkZHhfY29hcnNlKGZsb2F0MngyIHgpIHsKLSAgICBmbG9h
dDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDIgZGR4X2NvYXJzZShmbG9hdDN4
MiB4KSB7Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fy
c2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFd
WzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29hcnNlKHhbMl1bMV0pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci1mbG9hdDR4MiBkZHhfY29hcnNlKGZsb2F0NHgyIHgpIHsKLSAgICBmbG9h
dDR4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAg
ICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9
IGRkeF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gZGR4X2NvYXJzZSh4WzNd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwotICAgIHJlc3Vs
dFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gZGR4X2Nv
YXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBkZHhfY29hcnNlKHhbM11bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyBkZHhfY29hcnNlKGZsb2F0MngzIHgpIHsK
LSAgICBmbG9hdDJ4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBd
WzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3Vs
dFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2Nv
YXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwot
ICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLWZsb2F0M3gzIGRkeF9jb2Fyc2UoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJl
c3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAgIHJlc3Vs
dFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZGR4X2Nv
YXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBkZHhfY29hcnNlKHhbMF1bMV0pOwot
ICAgIHJlc3VsdFsxXVsxXSA9IGRkeF9jb2Fyc2UoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gZGR4X2NvYXJzZSh4WzJdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhb
MF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVz
dWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQ0eDMgZGR4X2NvYXJzZShmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGRkeF9jb2Fyc2UoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBd
ID0gZGR4X2NvYXJzZSh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBkZHhfY29hcnNlKHhb
Ml1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGRkeF9jb2Fyc2UoeFszXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhf
Y29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7
Ci0gICAgcmVzdWx0WzNdWzFdID0gZGR4X2NvYXJzZSh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1b
Ml0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRkeF9jb2Fyc2Uo
eFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZGR4X2NvYXJzZSh4WzJdWzJdKTsKLSAgICBy
ZXN1bHRbM11bMl0gPSBkZHhfY29hcnNlKHhbM11bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1mbG9hdDJ4NCBkZHhfY29hcnNlKGZsb2F0Mng0IHgpIHsKLSAgICBmbG9hdDJ4NCByZXN1bHQ7
Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1b
MF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2Uo
eFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSBkZHhfY29hcnNlKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IGRk
eF9jb2Fyc2UoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gZGR4X2NvYXJzZSh4WzBdWzNd
KTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1bM10pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci1mbG9hdDN4NCBkZHhfY29hcnNlKGZsb2F0M3g0IHgpIHsKLSAgICBmbG9hdDN4
NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZGR4X2NvYXJzZSh4WzBdWzBdKTsKLSAgICBy
ZXN1bHRbMV1bMF0gPSBkZHhfY29hcnNlKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGRk
eF9jb2Fyc2UoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZGR4X2NvYXJzZSh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSBkZHhfY29hcnNlKHhbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGRkeF9jb2Fyc2UoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJz
ZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAg
IHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0g
ZGR4X2NvYXJzZSh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBkZHhfY29hcnNlKHhbMV1b
M10pOwotICAgIHJlc3VsdFsyXVszXSA9IGRkeF9jb2Fyc2UoeFsyXVszXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHg0IGRkeF9jb2Fyc2UoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0
NHg0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBkZHhfY29hcnNlKHhbMF1bMF0pOwotICAg
IHJlc3VsdFsxXVswXSA9IGRkeF9jb2Fyc2UoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0g
ZGR4X2NvYXJzZSh4WzJdWzBdKTsKLSAgICByZXN1bHRbM11bMF0gPSBkZHhfY29hcnNlKHhbM11b
MF0pOwotICAgIHJlc3VsdFswXVsxXSA9IGRkeF9jb2Fyc2UoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gZGR4X2NvYXJzZSh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBkZHhfY29h
cnNlKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGRkeF9jb2Fyc2UoeFszXVsxXSk7Ci0g
ICAgcmVzdWx0WzBdWzJdID0gZGR4X2NvYXJzZSh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBkZHhfY29hcnNlKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGRkeF9jb2Fyc2UoeFsy
XVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gZGR4X2NvYXJzZSh4WzNdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSBkZHhfY29hcnNlKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IGRkeF9j
b2Fyc2UoeFsxXVszXSk7Ci0gICAgcmVzdWx0WzJdWzNdID0gZGR4X2NvYXJzZSh4WzJdWzNdKTsK
LSAgICByZXN1bHRbM11bM10gPSBkZHhfY29hcnNlKHhbM11bM10pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBuYW1lZCBmaXJzdGJpdGhpZ2ggKi8KLXVpbnQgZmlyc3Ri
aXRoaWdoKHVpbnQgeCkgewotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMSkpICE9IDApCi0gICAg
ICAgIHJldHVybiAwOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzMCkpICE9IDApCi0gICAgICAg
IHJldHVybiAxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOSkpICE9IDApCi0gICAgICAgIHJl
dHVybiAyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyOCkpICE9IDApCi0gICAgICAgIHJldHVy
biAzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNykpICE9IDApCi0gICAgICAgIHJldHVybiA0
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNikpICE9IDApCi0gICAgICAgIHJldHVybiA1Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyNSkpICE9IDApCi0gICAgICAgIHJldHVybiA2OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAyNCkpICE9IDApCi0gICAgICAgIHJldHVybiA3OwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAyMykpICE9IDApCi0gICAgICAgIHJldHVybiA4OwotICAgIGlmICgo
eCAmIHVpbnQoMSA8PCAyMikpICE9IDApCi0gICAgICAgIHJldHVybiA5OwotICAgIGlmICgoeCAm
IHVpbnQoMSA8PCAyMSkpICE9IDApCi0gICAgICAgIHJldHVybiAxMDsKLSAgICBpZiAoKHggJiB1
aW50KDEgPDwgMjApKSAhPSAwKQotICAgICAgICByZXR1cm4gMTE7Ci0gICAgaWYgKCh4ICYgdWlu
dCgxIDw8IDE5KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDEyOwotICAgIGlmICgoeCAmIHVpbnQo
MSA8PCAxOCkpICE9IDApCi0gICAgICAgIHJldHVybiAxMzsKLSAgICBpZiAoKHggJiB1aW50KDEg
PDwgMTcpKSAhPSAwKQotICAgICAgICByZXR1cm4gMTQ7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8
IDE2KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDE1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAx
NSkpICE9IDApCi0gICAgICAgIHJldHVybiAxNjsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTQp
KSAhPSAwKQotICAgICAgICByZXR1cm4gMTc7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEzKSkg
IT0gMCkKLSAgICAgICAgcmV0dXJuIDE4OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAxMikpICE9
IDApCi0gICAgICAgIHJldHVybiAxOTsKLSAgICBpZiAoKHggJiB1aW50KDEgPDwgMTEpKSAhPSAw
KQotICAgICAgICByZXR1cm4gMjA7Ci0gICAgaWYgKCh4ICYgdWludCgxIDw8IDEwKSkgIT0gMCkK
LSAgICAgICAgcmV0dXJuIDIxOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA5KSkgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIDIyOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA4KSkgIT0gMCkKLSAgICAg
ICAgcmV0dXJuIDIzOwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA3KSkgIT0gMCkKLSAgICAgICAg
cmV0dXJuIDI0OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA2KSkgIT0gMCkKLSAgICAgICAgcmV0
dXJuIDI1OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA1KSkgIT0gMCkKLSAgICAgICAgcmV0dXJu
IDI2OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCA0KSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI3
OwotICAgIGlmICgoeCAmIHVpbnQoMSA8PCAzKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI4Owot
ICAgIGlmICgoeCAmIHVpbnQoMSA8PCAyKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDI5OwotICAg
IGlmICgoeCAmIHVpbnQoMSA8PCAxKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMwOwotICAgIGlm
ICgoeCAmIHVpbnQoMSA8PCAwKSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIDMxOwotICAgIHJldHVy
biAzMjsKLX0KLXVpbnQgZmlyc3RiaXRoaWdoKGludCB4KSB7Ci0gICAgcmV0dXJuIGZpcnN0Yml0
aGlnaCh1aW50KHgpKTsKLX0KLXVpbnQyIGZpcnN0Yml0aGlnaCh1aW50MiB4KSB7Ci0gICAgdWlu
dDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXVpbnQz
IGZpcnN0Yml0aGlnaCh1aW50MyB4KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdFsw
XSA9IGZpcnN0Yml0aGlnaCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmaXJzdGJpdGhpZ2goeFsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gZmlyc3RiaXRoaWdoKHhbMl0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci11aW50NCBmaXJzdGJpdGhpZ2godWludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmly
c3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAg
ICByZXN1bHRbM10gPSBmaXJzdGJpdGhpZ2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LXVpbnQyIGZpcnN0Yml0aGlnaChpbnQyIHgpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVz
dWx0WzBdID0gZmlyc3RiaXRoaWdoKHhbMF0pOwotICAgIHJlc3VsdFsxXSA9IGZpcnN0Yml0aGln
aCh4WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDMgZmlyc3RiaXRoaWdoKGludDMg
eCkgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJzdGJpdGhpZ2goeFsw
XSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9
IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotdWludDQgZmlyc3Ri
aXRoaWdoKGludDQgeCkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmaXJz
dGJpdGhpZ2goeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gZmlyc3RiaXRoaWdoKHhbMV0pOwotICAg
IHJlc3VsdFsyXSA9IGZpcnN0Yml0aGlnaCh4WzJdKTsKLSAgICByZXN1bHRbM10gPSBmaXJzdGJp
dGhpZ2goeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IHJjcCAqLwotZmxvYXQgcmNwKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gMSAvIHg7Ci19Ci1mbG9h
dDIgcmNwKGZsb2F0MiB4KSB7Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBy
Y3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1mbG9hdDMgcmNwKGZsb2F0MyB4KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1
bHRbMF0gPSByY3AoeFswXSk7Ci0gICAgcmVzdWx0WzFdID0gcmNwKHhbMV0pOwotICAgIHJlc3Vs
dFsyXSA9IHJjcCh4WzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0IHJjcChmbG9h
dDQgeCkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gcmNwKHhbMF0pOwot
ICAgIHJlc3VsdFsxXSA9IHJjcCh4WzFdKTsKLSAgICByZXN1bHRbMl0gPSByY3AoeFsyXSk7Ci0g
ICAgcmVzdWx0WzNdID0gcmNwKHhbM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4
MiByY3AoZmxvYXQyeDIgeCkgewotICAgIGZsb2F0MngyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1b
MF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsx
XVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3gyIHJjcChmbG9hdDN4MiB4KSB7
Ci0gICAgZmxvYXQzeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IHJjcCh4WzBdWzBdKTsK
LSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNw
KHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRb
MV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4MiByY3AoZmxvYXQ0eDIgeCkgewotICAgIGZs
b2F0NHgyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJdWzBd
KTsKLSAgICByZXN1bHRbM11bMF0gPSByY3AoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0g
cmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4WzFdWzFdKTsKLSAgICByZXN1
bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gcmNwKHhbM11bMV0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4MyByY3AoZmxvYXQyeDMgeCkgewotICAg
IGZsb2F0MngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBd
WzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gcmNwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotZmxvYXQzeDMgcmNwKGZsb2F0M3gzIHgpIHsKLSAgICBmbG9hdDN4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsx
XVswXSA9IHJjcCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gcmNwKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IHJjcCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSByY3AoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzBd
WzJdID0gcmNwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAg
ICByZXN1bHRbMl1bMl0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZs
b2F0NHgzIHJjcChmbG9hdDR4MyB4KSB7Ci0gICAgZmxvYXQ0eDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IHJjcCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSByY3AoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gcmNwKHhbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IHJj
cCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0
WzFdWzFdID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsK
LSAgICByZXN1bHRbM11bMV0gPSByY3AoeFszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gcmNw
KHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1bHRb
Ml1bMl0gPSByY3AoeFsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gcmNwKHhbM11bMl0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDJ4NCByY3AoZmxvYXQyeDQgeCkgewotICAgIGZs
b2F0Mng0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFd
KTsKLSAgICByZXN1bHRbMV1bMV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
cmNwKHhbMF1bMl0pOwotICAgIHJlc3VsdFsxXVsyXSA9IHJjcCh4WzFdWzJdKTsKLSAgICByZXN1
bHRbMF1bM10gPSByY3AoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4NCByY3AoZmxvYXQzeDQgeCkgewotICAg
IGZsb2F0M3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSByY3AoeFswXVswXSk7Ci0gICAg
cmVzdWx0WzFdWzBdID0gcmNwKHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IHJjcCh4WzJd
WzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSByY3AoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFd
ID0gcmNwKHhbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IHJjcCh4WzJdWzFdKTsKLSAgICBy
ZXN1bHRbMF1bMl0gPSByY3AoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IHJjcCh4WzJdWzJdKTsKLSAgICByZXN1bHRbMF1bM10g
PSByY3AoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gcmNwKHhbMV1bM10pOwotICAgIHJl
c3VsdFsyXVszXSA9IHJjcCh4WzJdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0
eDQgcmNwKGZsb2F0NHg0IHgpIHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBd
WzBdID0gcmNwKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IHJjcCh4WzFdWzBdKTsKLSAg
ICByZXN1bHRbMl1bMF0gPSByY3AoeFsyXVswXSk7Ci0gICAgcmVzdWx0WzNdWzBdID0gcmNwKHhb
M11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9IHJjcCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1b
MV0gPSByY3AoeFsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFdID0gcmNwKHhbMl1bMV0pOwotICAg
IHJlc3VsdFszXVsxXSA9IHJjcCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSByY3AoeFsw
XVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gcmNwKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsy
XSA9IHJjcCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSByY3AoeFszXVsyXSk7Ci0gICAg
cmVzdWx0WzBdWzNdID0gcmNwKHhbMF1bM10pOwotICAgIHJlc3VsdFsxXVszXSA9IHJjcCh4WzFd
WzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSByY3AoeFsyXVszXSk7Ci0gICAgcmVzdWx0WzNdWzNd
ID0gcmNwKHhbM11bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEZ1bmN0aW9ucyBu
YW1lZCBmd2lkdGggKi8KLQotZmxvYXQgZndpZHRoKGZsb2F0IHgpIHsKLSAgICByZXR1cm4gYWJz
KGRkeCh4KSkgKyBhYnMoZGR5KHgpKTsKLX0KLWZsb2F0MiBmd2lkdGgoZmxvYXQyIHgpIHsKLSAg
ICBmbG9hdDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0aCh4WzBdKTsKLSAgICByZXN1
bHRbMV0gPSBmd2lkdGgoeFsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MyBmd2lk
dGgoZmxvYXQzIHgpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZ3aWR0
aCh4WzBdKTsKLSAgICByZXN1bHRbMV0gPSBmd2lkdGgoeFsxXSk7Ci0gICAgcmVzdWx0WzJdID0g
ZndpZHRoKHhbMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDQgZndpZHRoKGZsb2F0
NCB4KSB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBmd2lkdGgoeFswXSk7
Ci0gICAgcmVzdWx0WzFdID0gZndpZHRoKHhbMV0pOwotICAgIHJlc3VsdFsyXSA9IGZ3aWR0aCh4
WzJdKTsKLSAgICByZXN1bHRbM10gPSBmd2lkdGgoeFszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0MngyIGZ3aWR0aChmbG9hdDJ4MiB4KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0Owot
ICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBm
d2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAg
IHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
ZmxvYXQzeDIgZndpZHRoKGZsb2F0M3gyIHgpIHsKLSAgICBmbG9hdDN4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGZ3aWR0
aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7Ci0gICAgcmVz
dWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4
WzFdWzFdKTsKLSAgICByZXN1bHRbMl1bMV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLWZsb2F0NHgyIGZ3aWR0aChmbG9hdDR4MiB4KSB7Ci0gICAgZmxvYXQ0eDIg
cmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRb
MV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1b
MF0pOwotICAgIHJlc3VsdFszXVswXSA9IGZ3aWR0aCh4WzNdWzBdKTsKLSAgICByZXN1bHRbMF1b
MV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhbMV1bMV0p
OwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0g
PSBmd2lkdGgoeFszXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0MngzIGZ3aWR0
aChmbG9hdDJ4MyB4KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0g
ICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3
aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1m
bG9hdDN4MyBmd2lkdGgoZmxvYXQzeDMgeCkgewotICAgIGZsb2F0M3gzIHJlc3VsdDsKLSAgICBy
ZXN1bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRo
KHhbMV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBmd2lkdGgoeFswXVsxXSk7Ci0gICAgcmVzdWx0WzFdWzFdID0gZndpZHRoKHhb
MV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGZ3aWR0aCh4WzJdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0aCh4WzJdWzJdKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotZmxvYXQ0eDMgZndpZHRoKGZsb2F0NHgzIHgpIHsKLSAgICBmbG9hdDR4MyByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gZndpZHRoKHhbMF1bMF0pOwotICAgIHJlc3VsdFsxXVsw
XSA9IGZ3aWR0aCh4WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBmd2lkdGgoeFsyXVswXSk7
Ci0gICAgcmVzdWx0WzNdWzBdID0gZndpZHRoKHhbM11bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFszXVsxXSA9IGZ3
aWR0aCh4WzNdWzFdKTsKLSAgICByZXN1bHRbMF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAg
cmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGZ3aWR0
aCh4WzJdWzJdKTsKLSAgICByZXN1bHRbM11bMl0gPSBmd2lkdGgoeFszXVsyXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLWZsb2F0Mng0IGZ3aWR0aChmbG9hdDJ4NCB4KSB7Ci0gICAgZmxvYXQy
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1
bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhb
MF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRb
MF1bMl0gPSBmd2lkdGgoeFswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gZndpZHRoKHhbMV1b
Ml0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1b
M10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0M3g0IGZ3
aWR0aChmbG9hdDN4NCB4KSB7Ci0gICAgZmxvYXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVsw
XSA9IGZ3aWR0aCh4WzBdWzBdKTsKLSAgICByZXN1bHRbMV1bMF0gPSBmd2lkdGgoeFsxXVswXSk7
Ci0gICAgcmVzdWx0WzJdWzBdID0gZndpZHRoKHhbMl1bMF0pOwotICAgIHJlc3VsdFswXVsxXSA9
IGZ3aWR0aCh4WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBmd2lkdGgoeFsxXVsxXSk7Ci0g
ICAgcmVzdWx0WzJdWzFdID0gZndpZHRoKHhbMl1bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGZ3
aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAg
cmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGZ3aWR0
aCh4WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBmd2lkdGgoeFsxXVszXSk7Ci0gICAgcmVz
dWx0WzJdWzNdID0gZndpZHRoKHhbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9h
dDR4NCBmd2lkdGgoZmxvYXQ0eDQgeCkgewotICAgIGZsb2F0NHg0IHJlc3VsdDsKLSAgICByZXN1
bHRbMF1bMF0gPSBmd2lkdGgoeFswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gZndpZHRoKHhb
MV1bMF0pOwotICAgIHJlc3VsdFsyXVswXSA9IGZ3aWR0aCh4WzJdWzBdKTsKLSAgICByZXN1bHRb
M11bMF0gPSBmd2lkdGgoeFszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gZndpZHRoKHhbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGZ3aWR0aCh4WzFdWzFdKTsKLSAgICByZXN1bHRbMl1b
MV0gPSBmd2lkdGgoeFsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gZndpZHRoKHhbM11bMV0p
OwotICAgIHJlc3VsdFswXVsyXSA9IGZ3aWR0aCh4WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0g
PSBmd2lkdGgoeFsxXVsyXSk7Ci0gICAgcmVzdWx0WzJdWzJdID0gZndpZHRoKHhbMl1bMl0pOwot
ICAgIHJlc3VsdFszXVsyXSA9IGZ3aWR0aCh4WzNdWzJdKTsKLSAgICByZXN1bHRbMF1bM10gPSBm
d2lkdGgoeFswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gZndpZHRoKHhbMV1bM10pOwotICAg
IHJlc3VsdFsyXVszXSA9IGZ3aWR0aCh4WzJdWzNdKTsKLSAgICByZXN1bHRbM11bM10gPSBmd2lk
dGgoeFszXVszXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogRnVuY3Rpb25zIG5hbWVk
IGxlcnAgKi8KLWZsb2F0IGxlcnAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcykgewotICAgIHJl
dHVybiB4ICogKDEgLSBzKSArIHkgKiBzOwotfQotZmxvYXQyIGxlcnAoZmxvYXQyIHgsIGZsb2F0
MiB5LCBmbG9hdDIgeikgewotICAgIGZsb2F0MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVy
cCh4WzBdLCB5WzBdLCB6WzBdKTsKLSAgICByZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpb
MV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDMgbGVycChmbG9hdDMgeCwgZmxvYXQz
IHksIGZsb2F0MyB6KSB7Ci0gICAgZmxvYXQzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBsZXJw
KHhbMF0sIHlbMF0sIHpbMF0pOwotICAgIHJlc3VsdFsxXSA9IGxlcnAoeFsxXSwgeVsxXSwgelsx
XSk7Ci0gICAgcmVzdWx0WzJdID0gbGVycCh4WzJdLCB5WzJdLCB6WzJdKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotZmxvYXQ0IGxlcnAoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgeikgewot
ICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gbGVycCh4WzBdLCB5WzBdLCB6WzBd
KTsKLSAgICByZXN1bHRbMV0gPSBsZXJwKHhbMV0sIHlbMV0sIHpbMV0pOwotICAgIHJlc3VsdFsy
XSA9IGxlcnAoeFsyXSwgeVsyXSwgelsyXSk7Ci0gICAgcmVzdWx0WzNdID0gbGVycCh4WzNdLCB5
WzNdLCB6WzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDIgbGVycChmbG9hdDJ4
MiB4LCBmbG9hdDJ4MiB5LCBmbG9hdDJ4MiB6KSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAg
IHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVz
dWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRb
MF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsx
XSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLWZsb2F0M3gyIGxlcnAoZmxvYXQzeDIgeCwgZmxvYXQzeDIgeSwgZmxvYXQzeDIgeikgewot
ICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlb
MF1bMF0sIHpbMF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVsw
XSwgelsxXVswXSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6
WzJdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1b
MV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7
Ci0gICAgcmVzdWx0WzJdWzFdID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQ0eDIgbGVycChmbG9hdDR4MiB4LCBmbG9hdDR4MiB5
LCBmbG9hdDR4MiB6KSB7Ci0gICAgZmxvYXQ0eDIgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9
IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVy
cCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhb
Ml1bMF0sIHlbMl1bMF0sIHpbMl1bMF0pOwotICAgIHJlc3VsdFszXVswXSA9IGxlcnAoeFszXVsw
XSwgeVszXVswXSwgelszXVswXSk7Ci0gICAgcmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5
WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1b
MV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsyXVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwg
elsyXVsxXSk7Ci0gICAgcmVzdWx0WzNdWzFdID0gbGVycCh4WzNdWzFdLCB5WzNdWzFdLCB6WzNd
WzFdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDMgbGVycChmbG9hdDJ4MyB4LCBm
bG9hdDJ4MyB5LCBmbG9hdDJ4MyB6KSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAgIHJlc3Vs
dFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7Ci0gICAgcmVzdWx0WzFd
WzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAgICByZXN1bHRbMF1bMV0g
PSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsxXVsxXSA9IGxl
cnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0gbGVycCh4
WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJwKHhbMV1b
Ml0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDN4MyBs
ZXJwKGZsb2F0M3gzIHgsIGZsb2F0M3gzIHksIGZsb2F0M3gzIHopIHsKLSAgICBmbG9hdDN4MyBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzBdWzFdID0gbGVycCh4WzBdWzFdLCB5WzBdWzFdLCB6WzBdWzFdKTsKLSAgICByZXN1
bHRbMV1bMV0gPSBsZXJwKHhbMV1bMV0sIHlbMV1bMV0sIHpbMV1bMV0pOwotICAgIHJlc3VsdFsy
XVsxXSA9IGxlcnAoeFsyXVsxXSwgeVsyXVsxXSwgelsyXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJd
ID0gbGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBs
ZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAo
eFsyXVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLWZsb2F0
NHgzIGxlcnAoZmxvYXQ0eDMgeCwgZmxvYXQ0eDMgeSwgZmxvYXQ0eDMgeikgewotICAgIGZsb2F0
NHgzIHJlc3VsdDsKLSAgICByZXN1bHRbMF1bMF0gPSBsZXJwKHhbMF1bMF0sIHlbMF1bMF0sIHpb
MF1bMF0pOwotICAgIHJlc3VsdFsxXVswXSA9IGxlcnAoeFsxXVswXSwgeVsxXVswXSwgelsxXVsw
XSk7Ci0gICAgcmVzdWx0WzJdWzBdID0gbGVycCh4WzJdWzBdLCB5WzJdWzBdLCB6WzJdWzBdKTsK
LSAgICByZXN1bHRbM11bMF0gPSBsZXJwKHhbM11bMF0sIHlbM11bMF0sIHpbM11bMF0pOwotICAg
IHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0gICAgcmVz
dWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICByZXN1bHRb
Ml1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3VsdFszXVsx
XSA9IGxlcnAoeFszXVsxXSwgeVszXVsxXSwgelszXVsxXSk7Ci0gICAgcmVzdWx0WzBdWzJdID0g
bGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1bMl0gPSBsZXJw
KHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFsyXVsyXSA9IGxlcnAoeFsy
XVsyXSwgeVsyXVsyXSwgelsyXVsyXSk7Ci0gICAgcmVzdWx0WzNdWzJdID0gbGVycCh4WzNdWzJd
LCB5WzNdWzJdLCB6WzNdWzJdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxvYXQyeDQgbGVy
cChmbG9hdDJ4NCB4LCBmbG9hdDJ4NCB5LCBmbG9hdDJ4NCB6KSB7Ci0gICAgZmxvYXQyeDQgcmVz
dWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwgelswXVswXSk7
Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFdWzBdKTsKLSAg
ICByZXN1bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJl
c3VsdFsxXVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0
WzBdWzJdID0gbGVycCh4WzBdWzJdLCB5WzBdWzJdLCB6WzBdWzJdKTsKLSAgICByZXN1bHRbMV1b
Ml0gPSBsZXJwKHhbMV1bMl0sIHlbMV1bMl0sIHpbMV1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9
IGxlcnAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVy
cCh4WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotZmxv
YXQzeDQgbGVycChmbG9hdDN4NCB4LCBmbG9hdDN4NCB5LCBmbG9hdDN4NCB6KSB7Ci0gICAgZmxv
YXQzeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXVswXSA9IGxlcnAoeFswXVswXSwgeVswXVswXSwg
elswXVswXSk7Ci0gICAgcmVzdWx0WzFdWzBdID0gbGVycCh4WzFdWzBdLCB5WzFdWzBdLCB6WzFd
WzBdKTsKLSAgICByZXN1bHRbMl1bMF0gPSBsZXJwKHhbMl1bMF0sIHlbMl1bMF0sIHpbMl1bMF0p
OwotICAgIHJlc3VsdFswXVsxXSA9IGxlcnAoeFswXVsxXSwgeVswXVsxXSwgelswXVsxXSk7Ci0g
ICAgcmVzdWx0WzFdWzFdID0gbGVycCh4WzFdWzFdLCB5WzFdWzFdLCB6WzFdWzFdKTsKLSAgICBy
ZXN1bHRbMl1bMV0gPSBsZXJwKHhbMl1bMV0sIHlbMl1bMV0sIHpbMl1bMV0pOwotICAgIHJlc3Vs
dFswXVsyXSA9IGxlcnAoeFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFd
WzJdID0gbGVycCh4WzFdWzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0g
PSBsZXJwKHhbMl1bMl0sIHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFswXVszXSA9IGxl
cnAoeFswXVszXSwgeVswXVszXSwgelswXVszXSk7Ci0gICAgcmVzdWx0WzFdWzNdID0gbGVycCh4
WzFdWzNdLCB5WzFdWzNdLCB6WzFdWzNdKTsKLSAgICByZXN1bHRbMl1bM10gPSBsZXJwKHhbMl1b
M10sIHlbMl1bM10sIHpbMl1bM10pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1mbG9hdDR4NCBs
ZXJwKGZsb2F0NHg0IHgsIGZsb2F0NHg0IHksIGZsb2F0NHg0IHopIHsKLSAgICBmbG9hdDR4NCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0WzBdWzBdID0gbGVycCh4WzBdWzBdLCB5WzBdWzBdLCB6WzBdWzBd
KTsKLSAgICByZXN1bHRbMV1bMF0gPSBsZXJwKHhbMV1bMF0sIHlbMV1bMF0sIHpbMV1bMF0pOwot
ICAgIHJlc3VsdFsyXVswXSA9IGxlcnAoeFsyXVswXSwgeVsyXVswXSwgelsyXVswXSk7Ci0gICAg
cmVzdWx0WzNdWzBdID0gbGVycCh4WzNdWzBdLCB5WzNdWzBdLCB6WzNdWzBdKTsKLSAgICByZXN1
bHRbMF1bMV0gPSBsZXJwKHhbMF1bMV0sIHlbMF1bMV0sIHpbMF1bMV0pOwotICAgIHJlc3VsdFsx
XVsxXSA9IGxlcnAoeFsxXVsxXSwgeVsxXVsxXSwgelsxXVsxXSk7Ci0gICAgcmVzdWx0WzJdWzFd
ID0gbGVycCh4WzJdWzFdLCB5WzJdWzFdLCB6WzJdWzFdKTsKLSAgICByZXN1bHRbM11bMV0gPSBs
ZXJwKHhbM11bMV0sIHlbM11bMV0sIHpbM11bMV0pOwotICAgIHJlc3VsdFswXVsyXSA9IGxlcnAo
eFswXVsyXSwgeVswXVsyXSwgelswXVsyXSk7Ci0gICAgcmVzdWx0WzFdWzJdID0gbGVycCh4WzFd
WzJdLCB5WzFdWzJdLCB6WzFdWzJdKTsKLSAgICByZXN1bHRbMl1bMl0gPSBsZXJwKHhbMl1bMl0s
IHlbMl1bMl0sIHpbMl1bMl0pOwotICAgIHJlc3VsdFszXVsyXSA9IGxlcnAoeFszXVsyXSwgeVsz
XVsyXSwgelszXVsyXSk7Ci0gICAgcmVzdWx0WzBdWzNdID0gbGVycCh4WzBdWzNdLCB5WzBdWzNd
LCB6WzBdWzNdKTsKLSAgICByZXN1bHRbMV1bM10gPSBsZXJwKHhbMV1bM10sIHlbMV1bM10sIHpb
MV1bM10pOwotICAgIHJlc3VsdFsyXVszXSA9IGxlcnAoeFsyXVszXSwgeVsyXVszXSwgelsyXVsz
XSk7Ci0gICAgcmVzdWx0WzNdWzNdID0gbGVycCh4WzNdWzNdLCB5WzNdWzNdLCB6WzNdWzNdKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBGdW5jdGlvbnMgbmFtZWQgZGlzdGFuY2UgKi8K
LWZsb2F0IGRpc3RhbmNlKGZsb2F0IHgsIGZsb2F0IHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHgg
LSB5KTsKLX0KLWZsb2F0IGRpc3RhbmNlKGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIHJldHVy
biBsZW5ndGgoeCAtIHkpOwotfQotZmxvYXQgZGlzdGFuY2UoZmxvYXQzIHgsIGZsb2F0MyB5KSB7
Ci0gICAgcmV0dXJuIGxlbmd0aCh4IC0geSk7Ci19Ci1mbG9hdCBkaXN0YW5jZShmbG9hdDQgeCwg
ZmxvYXQ0IHkpIHsKLSAgICByZXR1cm4gbGVuZ3RoKHggLSB5KTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTA5MGMyOTlhMmYwZjhlMGVjNzA2ZDkxZDNjZmFjZTFjODgwN2Q2My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1zdHJ1Y3QgU3Vi
c3RyaW5nTG9jYXRpb24gewotICAgIHVuc2lnbmVkIHN0YXJ0OwotICAgIHVuc2lnbmVkIGVuZDsK
LX07Ci0KLUhhc2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4gY29tcHV0ZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9uTWFwKCk7Ci0KLXVuc2lnbmVkIGZpcnN0RnVuY3Rpb25PZmZzZXRJblN0
YW5kYXJkTGlicmFyeSgpOwotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzZDQzMzBkMDE5MzY0M2FhYmU5NDBlOTliMDU2OTAzYzEyZmEzMDMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCIKLQotI2lmIEVOQUJM
RShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKLSNp
bmNsdWRlICJXSExTTFBhcnNlci5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1
ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5LmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbk1hcC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDxwYWwvR3VuemlwLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZh
bHNlOwotCi1zdGF0aWMgU3RyaW5nIGRlY29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnko
KQotewotICAgIGF1dG8gZGVjb21wcmVzc2VkU3RhbmRhcmRMaWJyYXJ5ID0gZ3VuemlwKFdITFNM
U3RhbmRhcmRMaWJyYXJ5LCBzaXplb2YoV0hMU0xTdGFuZGFyZExpYnJhcnkpKTsKLSAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChkZWNvbXByZXNzZWRTdGFuZGFyZExpYnJhcnkuZGF0YSgpLCBk
ZWNvbXByZXNzZWRTdGFuZGFyZExpYnJhcnkuc2l6ZSgpKTsKLX0KLQotY2xhc3MgTmFtZUZpbmRl
ciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBIYXNoU2V0PFN0cmluZz4gdGFrZUZ1
bmN0aW9uTmFtZXMoKQotICAgIHsKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKLSAg
ICAgICAgc3RkOjpzd2FwKHJlc3VsdCwgbV9mdW5jdGlvbk5hbWVzKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rp
b25OYW1lcy5hZGQoY2FsbEV4cHJlc3Npb24ubmFtZSgpKTsKLSAgICAgICAgVmlzaXRvcjo6dmlz
aXQoY2FsbEV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Z1bmN0
aW9uTmFtZXM7Ci19OwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJkTGli
cmFyeShQcm9ncmFtJiBwcm9ncmFtLCBQYXJzZXImIHBhcnNlciwgYm9vbCBwYXJzZUZ1bGxTdGFu
ZGFyZExpYnJhcnkpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRh
cmRMaWJyYXJ5KGRlY29tcHJlc3NBbmREZWNvZGVTdGFuZGFyZExpYnJhcnkoKSk7Ci0gICAgaWYg
KHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSkgewotICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0g
cGFyc2VyLnBhcnNlKHByb2dyYW0sIHN0YW5kYXJkTGlicmFyeS5nZXQoKSwgUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAg
ICAgIGlmICghcGFyc2VSZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
cGFyc2VSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdWJzdHJpbmdMb2NhdGlvbj4+
IHN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwKGNvbXB1dGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcCgpKTsKLQotICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcoc3RhbmRhcmRMaWJy
YXJ5LmdldCgpKS5zdWJzdHJpbmcoMCwgZmlyc3RGdW5jdGlvbk9mZnNldEluU3RhbmRhcmRMaWJy
YXJ5KCkpOwotICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3Ry
aW5nVmlldywgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1lU3BhY2U6OlN0
YW5kYXJkTGlicmFyeSk7Ci0gICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0LmVycm9yKCkpOwotCi0gICAgTmFtZUZpbmRlciBuYW1l
RmluZGVyOwotICAgIG5hbWVGaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgSGFz
aFNldDxTdHJpbmc+IGZ1bmN0aW9uTmFtZXMgPSBuYW1lRmluZGVyLnRha2VGdW5jdGlvbk5hbWVz
KCk7Ci0gICAgSGFzaFNldDxTdHJpbmc+IGFsbEZ1bmN0aW9uTmFtZXM7Ci0gICAgLy8gVGhlIG5h
bWUgb2YgYSBjYWxsIHRvIGEgY2FzdCBvcGVyYXRvciBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSwg
c28gd2UgY2FuJ3QgbWF0Y2ggdGhlbSB1cCBjb3JyZWN0bHkuCi0gICAgLy8gSW5zdGVhZCwganVz
dCBpbmNsdWRlIGFsbCBjYXN0aW5nIG9wZXJhdG9ycy4KLSAgICBmdW5jdGlvbk5hbWVzLmFkZCgi
b3BlcmF0b3IgY2FzdCJfc3RyKTsKLSAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFu
IGF1dGhvciBjYW4ndCB3cml0ZSBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFz
IGFueXRoaW5nIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICAgIC8vIElmIHRoZXkgZG8gc28s
IHdlIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGNvbGxpZGVzLCBzbyB3ZSBpbmNsdWRlIGFsbCBwb3Rl
bnRpYWwgZHVwbGljYXRlcyBoZXJlLCBhbmQgdGhlICJjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyIg
cGFzcyBlbmZvcmNlcyBpdC4KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICBmdW5jdGlvbk5hbWVzLmFkZChm
dW5jdGlvbkRlZmluaXRpb24tPm5hbWUoKSk7Ci0gICAgd2hpbGUgKCFmdW5jdGlvbk5hbWVzLmlz
RW1wdHkoKSkgewotICAgICAgICBhdXRvIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zQ291bnQg
PSBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOwotICAgICAgICBh
dXRvIGZ1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCA9IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9u
cygpLnNpemUoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZnVuY3Rpb25OYW1l
cykgewotICAgICAgICAgICAgaWYgKGFsbEZ1bmN0aW9uTmFtZXMuY29udGFpbnMobmFtZSkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gc3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuZ2V0KCkuZmluZChuYW1lKTsKLSAgICAgICAgICAgIGlm
IChpdGVyYXRvciA9PSBzdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5nZXQoKS5lbmQoKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0
cmluZ1ZpZXcoc3RhbmRhcmRMaWJyYXJ5LmdldCgpKS5zdWJzdHJpbmcoaXRlcmF0b3ItPnZhbHVl
LnN0YXJ0LCBpdGVyYXRvci0+dmFsdWUuZW5kIC0gaXRlcmF0b3ItPnZhbHVlLnN0YXJ0KTsKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oc3Ry
aW5nVmlldyk7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBwcm9n
cmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgICAgICBhdXRvIHBhcnNl
UmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sIHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlOjpT
dGFuZGFyZExpYnJhcnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAg
ICAgICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQocGFyc2VSZXN1bHQuZXJyb3IoKSk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgewot
ICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCkg
IT0gc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibm9uIG5hdGl2ZSBzdGRs
aWIgZnVuY3Rpb246ICciLCBuYW1lLCAiJyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YWxsRnVuY3Rpb25OYW1lcy5hZGQobmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICggOyBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50IDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9ucygpLnNpemUoKTsgKytuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uc0NvdW50KQot
ICAgICAgICAgICAgbmFtZUZpbmRlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtLm5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zKClbbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnNDb3VudF0pOwotICAg
ICAgICBmb3IgKCA7IGZ1bmN0aW9uRGVmaW5pdGlvbnNDb3VudCA8IHByb2dyYW0uZnVuY3Rpb25E
ZWZpbml0aW9ucygpLnNpemUoKTsgKytmdW5jdGlvbkRlZmluaXRpb25zQ291bnQpCi0gICAgICAg
ICAgICBuYW1lRmluZGVyLlZpc2l0b3I6OnZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9u
cygpW2Z1bmN0aW9uRGVmaW5pdGlvbnNDb3VudF0pOwotICAgICAgICBmdW5jdGlvbk5hbWVzID0g
bmFtZUZpbmRlci50YWtlRnVuY3Rpb25OYW1lcygpOwotICAgIH0KLSAgICByZXR1cm4geyB9Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlV
dGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyZjM4MjQ3MWE2MDQ3
ODdiMDcyNDBmMzliNjI3NWU1MjI5NWE2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVS
KQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFBhcnNlcjsKLWNsYXNzIFByb2dyYW07Ci0KLUV4
cGVjdGVkPHZvaWQsIEVycm9yPiBpbmNsdWRlU3RhbmRhcmRMaWJyYXJ5KFByb2dyYW0mLCBQYXJz
ZXImLCBib29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSk7Ci0KLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTgzMmZkMTc2NGNkOTZi
MGJiNWY4ZjQxYTgyZmU1MTlmYzI5MTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50QmVoYXZpb3JDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0K
LSNpbmNsdWRlICJXSExTTEJsb2NrLmgiCi0jaW5jbHVkZSAiV0hMU0xCcmVhay5oIgotI2luY2x1
ZGUgIldITFNMQ29udGludWUuaCIKLSNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCi0jaW5j
bHVkZSAiV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiV0hM
U0xGYWxsdGhyb3VnaC5oIgotI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldI
TFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKLSNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXSExTTFJldHVybi5oIgotI2luY2x1ZGUgIldI
TFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgotI2luY2x1ZGUgIldI
TFNMVmlzaXRvci5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0jaW5jbHVkZSA8Y3N0
ZGludD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLWNsYXNzIFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIEJlaGF2aW9yIDogdWludDhfdCB7Ci0gICAgICAgIFJldHVybiA9IDEgPDwgMCwK
LSAgICAgICAgQnJlYWsgPSAxIDw8IDEsCi0gICAgICAgIENvbnRpbnVlID0gMSA8PCAyLAotICAg
ICAgICBGYWxsdGhyb3VnaCA9IDEgPDwgMywKLSAgICAgICAgTm90aGluZyA9IDEgPDwgNAotICAg
IH07Ci0KLSAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHRha2VGdW5jdGlvbkJlaGF2aW9yKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3N0YWNrLnNpemUoKSA9PSAxKTsKLSAgICAgICAgcmV0dXJu
IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB2aXNpdChB
U1Q6OkJyZWFrJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVo
YXZpb3I6OkJyZWFrIH0pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3Vn
aCYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpG
YWxsdGhyb3VnaCB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Q29udGlu
dWUgfSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpSZXR1cm4gfSk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkp
OwotICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
YXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6
QnJlYWspOwotICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOwotICAgICAgICBi
LmFkZChCZWhhdmlvcjo6Tm90aGluZyk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgLy8gVGhlIGluaXRpYWxpemF0aW9uIGFsd2F5cyBoYXMgYSBiZWhhdmlvciBv
ZiBOb3RoaW5nLCB3aGljaCB3ZSBhbHJlYWR5IGFkZCB1bmNvbmRpdGlvbmFsbHkgYmVsb3csCi0g
ICAgICAgIC8vIHNvIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGUgaW5pdGlhbGl6YXRpb24uCi0KLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsKLSAgICAgICAgaWYgKGhh
c0Vycm9yKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYiA9IG1fc3RhY2su
dGFrZUxhc3QoKTsKLSAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKLSAgICAgICAg
Yi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKLSAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5v
dGhpbmcpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChiKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VM
YXN0KCk7Ci0gICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpCcmVhayk7Ci0gICAgICAgIGIucmVt
b3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7Ci0gICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5n
KTsKLSAgICAgICAgbV9zdGFjay5hcHBlbmQoYik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChB
U1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBWaXNp
dG9yOjp2aXNpdChzd2l0Y2hDYXNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6U3dp
dGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBp
ZiAoc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24g
PSB7IH07Ci0gICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5z
d2l0Y2hDYXNlcygpKSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2Fz
ZSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBy
ZWR1Y3Rpb24gPSByZWR1Y3Rpb24gfCBiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWR1Y3Rp
b24uY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcihF
cnJvcigiU3dpdGNoIHN0YXRlbWVudCBtdXN0IGVuZCBpbiBhIGJyZWFrL2ZhbGx0aHJvdWdoL3Jl
dHVybiIsIHN3aXRjaFN0YXRlbWVudC5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFr
KTsKLSAgICAgICAgcmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6RmFsbHRocm91Z2gpOwotICAg
ICAgICByZWR1Y3Rpb24uYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgbV9zdGFjay5h
cHBlbmQocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1l
bnQmIGlmU3RhdGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAg
ICAgIE9wdGlvblNldDxCZWhhdmlvcj4gYlByaW1lOwotICAgICAgICBpZiAoaWZTdGF0ZW1lbnQu
ZWxzZUJvZHkoKSkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVu
dC5lbHNlQm9keSgpKTsKLSAgICAgICAgICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIGJQcmltZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBiUHJpbWUgPSB7IEJlaGF2aW9yOjpOb3RoaW5nIH07
Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKGIgfCBiUHJpbWUpOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGlmIChibG9jay5zdGF0ZW1lbnRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3N0
YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7IH07
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2suc3RhdGVtZW50cygpLnNpemUo
KSAtIDE7ICsraSkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRl
bWVudHMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0gICAg
ICAgICAgICBpZiAoIWIuY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RXJyb3IoRXJyb3IoIlN0YXRlbWVudCBpbnNpZGUgYW4gaW5uZXIgYmxvY2sgbXVz
dCBiZSByZWFjaGFibGUuIiwgYmxvY2suc3RhdGVtZW50cygpW2ldLT5jb2RlTG9jYXRpb24oKSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGIu
cmVtb3ZlKEJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKEJl
aGF2aW9yOjpGYWxsdGhyb3VnaCkpIHsKLSAgICAgICAgICAgICAgICBzZXRFcnJvcihFcnJvcigi
RmFsbHRocm91Z2ggbXVzdCBiZSB0aGUgbGFzdCBzdGF0ZW1lbnQgaW4gYSBibG9jay4iLCBibG9j
ay5zdGF0ZW1lbnRzKClbaV0tPmNvZGVMb2NhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVkdWN0aW9uID0gcmVkdWN0aW9uIHwg
YjsKLSAgICAgICAgfQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50
cygpW2Jsb2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxXSk7Ci0gICAgICAgIGlmIChoYXNFcnJv
cigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VM
YXN0KCk7Ci0gICAgICAgIG1fc3RhY2suYXBwZW5kKHJlZHVjdGlvbiB8IGIpOwotICAgIH0KLQot
ICAgIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0p
OwotICAgIH0KLQotICAgIFZlY3RvcjxPcHRpb25TZXQ8QmVoYXZpb3I+PiBtX3N0YWNrOwotfTsK
LQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYg
cHJvZ3JhbSkKLXsKLSAgICBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIgc3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyOwotICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5m
dW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgc3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmIChzdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIuaGFzRXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIucmVzdWx0KCk7Ci0gICAgICAgIGF1dG8gYmVoYXZpb3IgPSBzdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIudGFrZUZ1bmN0aW9uQmVoYXZpb3IoKTsKLSAgICAgICAgaWYg
KG1hdGNoZXMoZnVuY3Rpb25EZWZpbml0aW9uLT50eXBlKCksIHByb2dyYW0uaW50cmluc2ljcygp
LnZvaWRUeXBlKCkpKSB7Ci0gICAgICAgICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyOjpCZWhhdmlvcjo6UmV0dXJuKTsKLSAgICAgICAgICAgIGJlaGF2aW9yLnJl
bW92ZShTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpOb3RoaW5nKTsKLSAgICAg
ICAgICAgIGlmIChiZWhhdmlvciAhPSBPcHRpb25TZXQ8U3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
OjpCZWhhdmlvcj4oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIkNhbm5vdCBlbmQgYSB2b2lkIGZ1bmN0aW9uIHdpdGggYSBicmVhaywgY29udGludWUsIG9y
IGZhbGx0aHJvdWdoLiIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChiZWhh
dmlvciAhPSBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9yOjpSZXR1cm4pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJOb24tdm9pZCBmdW5jdGlv
bnMgbXVzdCByZXR1cm4gYSB2YWx1ZSBvbiBhbGwgY29kZSBwYXRocy4iKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRlZWUwM2Q2NjQ1NGY2Y2QwYzY2MzY4ODkzOWUxZjhmZjI3ZDA4NWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hl
Y2tTdGF0ZW1lbnRCZWhhdmlvcihQcm9ncmFtJik7Ci0KLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYzkwYTM2NDA1YTJlZDE3NGRkMzU2MzJk
NjY5YTQ5NzEyOGJmMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXpl
Q29uc3RydWN0b3JzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5oIgotCi0jaWYgRU5BQkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hM
U0xBcnJheVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgotI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xJbmZl
clR5cGVzLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0j
aW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFBv
aW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCi0j
aW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZUhhc2guaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBGaW5kQWxsVHlwZXMgOiBwdWJs
aWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmluZEFsbFR5cGVzKCkgPSBkZWZh
dWx0OwotCi0gICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7
IHBvaW50ZXJUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChwb2ludGVyVHlwZSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZl
cmVuY2VUeXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV91bm5hbWVkVHlwZXMuYWRkKFVu
bmFtZWRUeXBlS2V5IHsgYXJyYXlSZWZlcmVuY2VUeXBlIH0pOwotICAgICAgICBWaXNpdG9yOjp2
aXNpdChhcnJheVJlZmVyZW5jZVR5cGUpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpB
cnJheVR5cGUmIGFycmF5VHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fdW5uYW1lZFR5
cGVzLmFkZChVbm5hbWVkVHlwZUtleSB7IGFycmF5VHlwZSB9KTsKLSAgICAgICAgVmlzaXRvcjo6
dmlzaXQoYXJyYXlUeXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBhcHBlbmROYW1lZFR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICAgICAgVmlz
aXRvcjo6dmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZp
c2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGFwcGVuZE5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKTsK
LSAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgfQotCi0g
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xh
cmF0aW9uKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXBwZW5kTmFtZWRUeXBlKG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbik7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbik7Ci0gICAgfQotCi0gICAgSGFzaFNldDxVbm5hbWVkVHlwZUtleT4gdGFrZVVubmFtZWRU
eXBlcygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX3VubmFtZWRUeXBlcyk7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+
PiB0YWtlTmFtZWRUeXBlcygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGTW92ZShtX25hbWVk
VHlwZXMpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZE5hbWVkVHlwZShBU1Q6
Ok5hbWVkVHlwZSYgdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSB3YXkgd2Ugd2FsayB0aGUg
QVNUIGVuc3VyZXMgd2Ugc2hvdWxkIG5ldmVyIHZpc2l0IGEgbmFtZWQgdHlwZSB0d2ljZS4KLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9uYW1lZFR5cGVz
KQotICAgICAgICAgICAgQVNTRVJUKCZlbnRyeS5nZXQoKS51bmlmeU5vZGUoKSAhPSAmdHlwZS51
bmlmeU5vZGUoKSk7Ci0jZW5kaWYKLSAgICAgICAgbV9uYW1lZFR5cGVzLmFwcGVuZCh0eXBlKTsK
LSAgICB9Ci0KLSAgICBIYXNoU2V0PFVubmFtZWRUeXBlS2V5PiBtX3VubmFtZWRUeXBlczsKLSAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6Ok5hbWVkVHlwZT4+IG1fbmFtZWRU
eXBlczsKLX07Ci0KLUV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0b3Jz
KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgRmluZEFsbFR5cGVzIGZpbmRBbGxUeXBlczsKLSAg
ICBmaW5kQWxsVHlwZXMuY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0pOwotICAgIGF1dG8gdW5u
YW1lZFR5cGVzID0gZmluZEFsbFR5cGVzLnRha2VVbm5hbWVkVHlwZXMoKTsKLSAgICBhdXRvIG5h
bWVkVHlwZXMgPSBmaW5kQWxsVHlwZXMudGFrZU5hbWVkVHlwZXMoKTsKLQotICAgIGJvb2wgaXNP
cGVyYXRvciA9IHRydWU7Ci0KLSAgICBmb3IgKGF1dG8mIHVubmFtZWRUeXBlS2V5IDogdW5uYW1l
ZFR5cGVzKSB7Ci0gICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gdW5uYW1lZFR5cGVLZXkudW5u
YW1lZFR5cGUoKTsKLSAgICAgICAgYXV0byBsb2NhdGlvbiA9IHVubmFtZWRUeXBlLmNvZGVMb2Nh
dGlvbigpOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlv
biA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNU
OjpRdWFsaWZpZXJzKCksICZ1bm5hbWVkVHlwZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OwotICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAg
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7
Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVj
dG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9j
aygpLCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRh
cmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25z
dHJ1Y3RvcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRp
b24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBp
c09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgIGlmICgh
cHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKSkKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVs
dCBjb25zdHJ1Y3RvciIpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkVHlwZSA6IG5h
bWVkVHlwZXMpIHsKLSAgICAgICAgaWYgKG1hdGNoZXMobmFtZWRUeXBlLCBwcm9ncmFtLmludHJp
bnNpY3MoKS52b2lkVHlwZSgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
aXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBl
Jj4obmFtZWRUeXBlKSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0
YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkuaXNBdG9taWMoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8gbG9jYXRpb24gPSBuYW1lZFR5cGUuZ2V0
KCkuY29kZUxvY2F0aW9uKCk7Ci0KLSAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0g
bWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1
YWxpZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUu
Z2V0KCkpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RG
TW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0
aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3Ry
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNv
bnN0cnVjdG9yKSk7Ci0KLSAgICAgICAgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
PihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKTsKLSAg
ICAgICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5
cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBj
YXN0Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRv
ciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0u
YXBwZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3Ry
dWN0b3IiKSk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdI
TFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9D
T01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhMjI1NTBlYTJmYmQyYmIyMTYyMGRhMDI1ZjgxZGFlMWQ0ZmRhNWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEVycm9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1l
cmF0aW9uRnVuY3Rpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA1MDcz
ODIzYzdkYTFkN2ExMjdmM2Q1NmJiNmYyMDUxYTlkZmZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgiCi0KLSNpZiBFTkFC
TEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExTTEFkZHJlc3NTcGFjZS5oIgotI2lu
Y2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLUV4cGVjdGVkPHZv
aWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3Jh
bSkKLXsKLSAgICBib29sIGlzT3BlcmF0b3IgPSB0cnVlOwotICAgIGZvciAoYXV0byYgZW51bWVy
YXRpb25EZWZpbml0aW9uIDogcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkpIHsKLSAg
ICAgICAgYXV0byBsb2NhdGlvbiA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+Y29kZUxvY2F0aW9u
KCk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbjEgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVh
bGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9u
RGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF1
dG8gdmFyaWFibGVEZWNsYXJhdGlvbjIgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6
OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBudWxscHRy
LCBudWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1l
dGVyczsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNs
YXJhdGlvbjEpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbjIpKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihs
b2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJl
ZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSks
ICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0
b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAgIGlmICghcHJv
Z3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIG9wZXJh
dG9yPT0gZm9yIGVudW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxv
Y2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgZW51bWVyYXRpb25E
ZWZpbml0aW9uLT50eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVy
cyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsK
LSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
KCJDYW5ub3QgY3JlYXRlIGNvcHkgY29uc3RydWN0b3IgZm9yIGVudW0gdHlwZS4iKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24g
PSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6
UXVhbGlmaWVycygpLCAmZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCksIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxv
Y2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVm
ZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAib3BlcmF0b3Ig
Y2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJz
aW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBw
ZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQotICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSAnb3BlcmF0b3IgY2Fz
dCcgZm9yIGVudW0gdHlwZS4iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdITFNMX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6
ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJj
NWJlMTRlYzEzYmM2MDA5NGJmYWNkMTU2NDc3ZGFjZDA4MDNhN2QuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLQotI2luY2x1ZGUgIldITFNMRXJyb3IuaCIKLSNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hM
U0wgewotCi1jbGFzcyBQcm9ncmFtOwotCi1FeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6
ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0hMU0xfQ09NUElMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjgwZmQ1MDhjNmNhMmQyNDljZmYwNGU2MjYxYmZmMTVjNzYwZDc0NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTc2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xW
aXNpdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0hMU0xfQ09NUElMRVIpCi0KLSNpbmNsdWRlICJXSExT
TEFTVC5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoUHJvZ3JhbSYgcHJv
Z3JhbSkKLXsKLSAgICAvLyBUaGVzZSB2aXNpdGluZyBmdW5jdGlvbnMgbWlnaHQgYWRkIG5ldyBn
bG9iYWwgc3RhdGVtZW50cywgc28gZG9uJ3QgdXNlIGZvcmVhY2ggc3ludGF4LgotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0p
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9u
cygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5zdHJ1
Y3R1cmVEZWZpbml0aW9ucygpW2ldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dy
YW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLmZ1bmN0aW9uRGVmaW5p
dGlvbnMoKVtpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNs
YXJhdGlvbnMoKVtpXSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUpCi17Ci0gICAgaWYgKGlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1l
ZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+
KHVubmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOwotICAgIGVsc2UK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5h
bWVkVHlwZSkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmFtZWRUeXBlJiBuYW1l
ZFR5cGUpCi17Ci0gICAgaWYgKGlzPEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihu
YW1lZFR5cGUpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5h
bWVkVHlwZSkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RW51bWVy
YXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpOwotICAgIGVs
c2UKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPihuYW1lZFR5cGUpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlR5
cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
dHlwZURlZmluaXRpb24udHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCi17Ci0gICAgZm9yIChhdXRv
JiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50
cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRWxlbWVudCk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZp
bml0aW9uLnR5cGUoKSk7Ci0gICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1l
cmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVyKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5j
dGlvbkRlZmluaXRpb24pKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0
aW9uLmJsb2NrKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKLXsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCi17Ci0gICAgZm9yIChh
dXRvJiB0eXBlQXJndW1lbnQgOiBuYXRpdmVUeXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCi17Ci0gICAg
Zm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVBcmd1bWVudCk7Ci0gICAgaWYgKHR5cGVS
ZWZlcmVuY2UubWF5YmVSZXNvbHZlZFR5cGUoKSAmJiBpczxBU1Q6OlR5cGVEZWZpbml0aW9uPih0
eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkgewotICAgICAgICBhdXRvJiB0eXBlRGVmaW5p
dGlvbiA9IGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2
ZWRUeXBlKCkpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24udHlw
ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYg
cG9pbnRlclR5cGUpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6
UmVmZXJlbmNlVHlwZSY+KHBvaW50ZXJUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkKLXsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZl
cmVuY2VUeXBlKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFy
cmF5VHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Ci19
Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVF
bGVtZW50KQotewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUo
KSk7Ci0gICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCpzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpOwotfQotCi12b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXImKQotewotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVC
bG9jaygpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBl
KCkpOwotICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwYXJhbWV0ZXIpOwotICAgIGlm
IChmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGljKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRpYygpKTsKLX0KLQotdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQotewotICAgIFdURjo6dmlz
aXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50
RXhwcmVzc2lvbikgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY29uc3RhbnRFeHByZXNz
aW9uKTsKLSAgICB9LCBbJl0oUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4mIHR5cGVSZWZlcmVuY2Up
IHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UpOwotICAgIH0pLCB0
eXBlQXJndW1lbnQpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlw
ZSYgcmVmZXJlbmNlVHlwZSkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVmZXJlbmNlVHlw
ZS5lbGVtZW50VHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlNlbWFudGlj
JiBzZW1hbnRpYykKLXsKLSAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRp
YyYgcmVzb3VyY2VTZW1hbnRpYykgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVzb3Vy
Y2VTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgfSwgWyZdKEFT
VDo6U3RhZ2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgfSksIHNlbWFudGljKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3Rh
bnRFeHByZXNzaW9uKQotewotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOwotICAgIH0sIFsmXShB
U1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChmbG9hdExpdGVyYWwpOwotICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29s
ZWFuTGl0ZXJhbCkgewotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9vbGVhbkxpdGVyYWwp
OwotICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwpOwotICAgIH0pKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkF0
dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
QXR0cmlidXRlIDogYXR0cmlidXRlQmxvY2spCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChm
dW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCdWlsdElu
U2VtYW50aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1h
bnRpYyYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMmKQotewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkludGVnZXJM
aXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdl
ckxpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQotewotICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChmbG9hdExpdGVyYWwudHlwZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkludGVnZXJMaXRlcmFsVHlwZSYgaW50ZWdlckxpdGVyYWxUeXBlKQotewotICAgIGlmIChp
bnRlZ2VyTGl0ZXJhbFR5cGUubWF5YmVSZXNvbHZlZFR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGludGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlKQotewotICAgIGlmICh1bnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpOwotICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkpOwotfQot
Ci12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYgZmxvYXRMaXRlcmFs
VHlwZSkKLXsKLSAgICBpZiAoZmxvYXRMaXRlcmFsVHlwZS5tYXliZVJlc29sdmVkVHlwZSgpKQot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUo
KSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlw
ZSgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYpCi17Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0
ZSYgZnVuY3Rpb25BdHRyaWJ1dGUpCi17Ci0gICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9y
KFsmXShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChudW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUpOwotICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKQotewotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQotewotICAgIGZvciAoYXV0byYg
c3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGVtZW50KTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudExp
c3QmIHN0YXRlbWVudExpc3QpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBzdGF0ZW1l
bnRMaXN0LnN0YXRlbWVudHMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVu
dCk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkK
LXsKLSAgICBzd2l0Y2ggKHN0YXRlbWVudC5raW5kKCkpIHsKLSAgICBjYXNlIEFTVDo6U3RhdGVt
ZW50OjpLaW5kOjpCbG9jazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6QmxvY2s+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3Rh
dGVtZW50OjpLaW5kOjpCcmVhazoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpDb250aW51ZToKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpEb1doaWxlTG9vcDoKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpFZmZlY3RmdWxFeHByZXNz
aW9uOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RmFsbHRocm91Z2g6Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Rm9yTG9vcDoKLSAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlJldHVy
bjoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0
ZW1lbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6
U3RhdGVtZW50TGlzdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
U3RhdGVtZW50TGlzdD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaENhc2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6Ci0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlZhcmlhYmxlRGVj
bGFyYXRpb25zOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OldoaWxlTG9vcDoKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnJlYWsmKQot
ewotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q29udGludWUmKQotewotfQotCi12b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQotewotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwotICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgc3dpdGNoIChleHByZXNzaW9u
LmtpbmQoKSkgewotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50Ogot
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVz
c2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6RGVyZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24p
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVn
ZXJMaXRlcmFsOgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbnRl
Z2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Ci0gICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihl
eHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVy
OgotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OkRvdDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Ci0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpJbmRleDoKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6Ci0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OlRlcm5hcnk6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QVNUOjpFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihl
eHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVS
ZWZlcmVuY2U6Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlh
YmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uJj4oZG90RXhwcmVzc2lvbikpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UmIGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJiBpbmRleEV4cHJl
c3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVzc2lvbi5pbmRleEV4
cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oaW5kZXhFeHByZXNzaW9uKSk7Ci19Ci0KLXZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17
Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24uYmFzZSgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQpCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKLXsKLX0KLQotdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZv
ckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7Ci0gICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCi0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgaWYg
KGZvckxvb3AuaW5jcmVtZW50KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9v
cC5pbmNyZW1lbnQoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsK
LX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRlbWVudCkK
LXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Ci0g
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7Ci0gICAgaWYgKGlmU3Rh
dGVtZW50LmVsc2VCb2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1l
bnQuZWxzZUJvZHkoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJl
dHVyblN0YXRlbWVudCkKLXsKLSAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpCi0gICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOwotfQotCi12
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKLXsKLSAgICBp
ZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN3aXRj
aENhc2UudmFsdWUoKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UuYmxvY2so
KSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRj
aFN0YXRlbWVudCkKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZh
bHVlKCkpOwotICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0
Y2hDYXNlcygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7Ci19Ci0K
LXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYg
dmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCi17Ci0gICAgZm9yIChhdXRvJiB2YXJpYWJs
ZURlY2xhcmF0aW9uIDogdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQudmFyaWFibGVEZWNs
YXJhdGlvbnMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHZhcmlhYmxlRGVjbGFyYXRp
b24uZ2V0KCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGls
ZUxvb3ApCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5jb25kaXRpb25hbCgp
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0
aW9uKQotewotICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSkKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgaWYgKHZh
cmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCp2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpOwotICAgIGlmICh2YXJpYWJsZURlY2xh
cmF0aW9uLmluaXRpYWxpemVyKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFi
bGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKLXsKLSAgICBj
aGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgpKTsKLSAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7Ci19Ci0KLXZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCi17Ci0g
ICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJndW1lbnQpOwotICAgIGlmIChjYWxsRXhwcmVzc2lv
bi5jYXN0UmV0dXJuVHlwZSgpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmNhbGxFeHBy
ZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCi17Ci0gICAgZm9yIChhdXRvJiBleHBy
ZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGV4cHJlc3Npb24pOwotfQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RGVyZWZlcmVu
Y2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOwotfQotCi12b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOwotICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKLX0KLQotdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVz
c2lvbikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3Bl
cmFuZCgpKTsKLX0KLQotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24mIG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tF
cnJvckFuZFZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwot
fQotCi12b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtl
UG9pbnRlckV4cHJlc3Npb24pCi17Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVy
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQotewot
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1
ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5v
bGRWYWx1ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5uZXdWYWx1ZSgpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKLX0KLQotdm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9uJiB0ZXJuYXJ5RXhwcmVzc2lv
bikKLXsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRl
KCkpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVz
c2lvbigpKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4
cHJlc3Npb24oKSk7Ci19Ci0KLXZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVy
ZW5jZSYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE1N2MyNTU5MWY2NDFhZTRiZDc2YWNiNTI3NGY5YjY4YWQ3ZDZj
ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdITFNMX0NPTVBJTEVSKQotCi0jaW5jbHVkZSAiV0hMU0xFcnJvci5oIgotI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQcm9n
cmFtOwotCi1uYW1lc3BhY2UgQVNUIHsKLQotY2xhc3MgVHlwZURlZmluaXRpb247Ci1jbGFzcyBT
dHJ1Y3R1cmVEZWZpbml0aW9uOwotY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwotY2xhc3Mg
RnVuY3Rpb25EZWZpbml0aW9uOwotY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKLWNs
YXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLWNsYXNzIFR5cGVSZWZlcmVuY2U7Ci1jbGFzcyBQ
b2ludGVyVHlwZTsKLWNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZTsKLWNsYXNzIEFycmF5VHlwZTsK
LWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQ7Ci1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLWNsYXNz
IEZ1bmN0aW9uRGVjbGFyYXRpb247Ci1jbGFzcyBSZWZlcmVuY2VUeXBlOwotY2xhc3MgQ29uc3Rh
bnRFeHByZXNzaW9uOwotY2xhc3MgQnVpbHRJblNlbWFudGljOwotY2xhc3MgUmVzb3VyY2VTZW1h
bnRpYzsKLWNsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKLWNsYXNzIFN0YWdl
SW5PdXRTZW1hbnRpYzsKLWNsYXNzIEludGVnZXJMaXRlcmFsOwotY2xhc3MgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbDsKLWNsYXNzIEZsb2F0TGl0ZXJhbDsKLWNsYXNzIEJvb2xlYW5MaXRlcmFsOwot
Y2xhc3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOwotY2xhc3MgTnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlOwotY2xhc3MgQmxvY2s7Ci1jbGFzcyBTdGF0ZW1lbnRMaXN0OwotY2xhc3MgU3Rh
dGVtZW50OwotY2xhc3MgQnJlYWs7Ci1jbGFzcyBDb250aW51ZTsKLWNsYXNzIERvV2hpbGVMb29w
OwotY2xhc3MgRXhwcmVzc2lvbjsKLWNsYXNzIERvdEV4cHJlc3Npb247Ci1jbGFzcyBHbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZTsKLWNsYXNzIEluZGV4RXhwcmVzc2lvbjsKLWNsYXNzIFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbjsKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ7Ci1j
bGFzcyBGYWxsdGhyb3VnaDsKLWNsYXNzIEZvckxvb3A7Ci1jbGFzcyBJZlN0YXRlbWVudDsKLWNs
YXNzIFJldHVybjsKLWNsYXNzIFN3aXRjaENhc2U7Ci1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQ7Ci1j
bGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudDsKLWNsYXNzIFdoaWxlTG9vcDsKLWNs
YXNzIFZhcmlhYmxlRGVjbGFyYXRpb247Ci1jbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbjsKLWNs
YXNzIENhbGxFeHByZXNzaW9uOwotY2xhc3MgQ29tbWFFeHByZXNzaW9uOwotY2xhc3MgRGVyZWZl
cmVuY2VFeHByZXNzaW9uOwotY2xhc3MgTG9naWNhbEV4cHJlc3Npb247Ci1jbGFzcyBMb2dpY2Fs
Tm90RXhwcmVzc2lvbjsKLWNsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb247Ci1jbGFz
cyBNYWtlUG9pbnRlckV4cHJlc3Npb247Ci1jbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
OwotY2xhc3MgVGVybmFyeUV4cHJlc3Npb247Ci1jbGFzcyBWYXJpYWJsZVJlZmVyZW5jZTsKLWNs
YXNzIFVubmFtZWRUeXBlOwotY2xhc3MgTmFtZWRUeXBlOwotCi19Ci0KLWNsYXNzIFZpc2l0b3Ig
ewotcHVibGljOgotICAgIHZpcnR1YWwgflZpc2l0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE3MSBBZGQg
YSB3YXkgdG8gdmlzaXQgYSBjb25zdCBQcm9ncmFtCi0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
UHJvZ3JhbSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2Um
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpOwotICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0
cnVjdHVyZUVsZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlciYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6U2VtYW50aWMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb25z
dGFudEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVC
bG9jayYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpGbG9hdExpdGVyYWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29s
ZWFuTGl0ZXJhbCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFs
VHlwZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJik7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpTdGF0ZW1lbnRMaXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3Rh
dGVtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkRvV2hpbGVMb29wJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RXhwcmVzc2lv
biYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSYpOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkZvckxvb3AmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYp
OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpOwotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpT
d2l0Y2hTdGF0ZW1lbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OldoaWxl
TG9vcCYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpN
YWtlUG9pbnRlckV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VGVy
bmFyeUV4cHJlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZSYpOwotCi0gICAgYm9vbCBoYXNFcnJvcigpIGNvbnN0IHsgcmV0dXJuICFtX2V4cGVj
dGVkRXJyb3I7IH0KLSAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzdWx0KCkgeyByZXR1cm4g
bV9leHBlY3RlZEVycm9yOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGNoZWNr
RXJyb3JBbmRWaXNpdChUJiB4KQotICAgIHsKLSAgICAgICAgaWYgKCFoYXNFcnJvcigpKQotICAg
ICAgICAgICAgdmlzaXQoeCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRFcnJv
cihFcnJvciBlcnJvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzRXJyb3IoKSk7Ci0gICAg
ICAgIG1fZXhwZWN0ZWRFcnJvciA9IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IG1fZXhwZWN0ZWRFcnJvcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXSExTTF9DT01QSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ1ODljYWY3NjcyMTE5
YjhhNTQ1OGJiNTdhM2JkZWQ2YWVlNGU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVBZGFwdGVyLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFdlYkdQVT4gV2ViR1BVOjpjcmVhdGUoKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVSk7Ci19Ci0KLXZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihz
dGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zLCBXZWJHUFVB
ZGFwdGVyUHJvbWlzZSYmIGRlZmVycmVkKSBjb25zdAotewotICAgIGF1dG8gYWRhcHRlciA9IFdl
YkdQVUFkYXB0ZXI6OmNyZWF0ZShXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBkZWZlcnJlZC5yZXNv
bHZlKGFkYXB0ZXIuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIwNTI0MGQwMDZiM2M0MjRiNDkwNjdjMjNl
MTQ5M2NhYmQyMzA4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJJRExUeXBlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFdlYkdQVUFkYXB0ZXI7Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJl
ZDsKLQotY2xhc3MgV2ViR1BVIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJHUFU+IGNyZWF0ZSgpOwotCi0gICAgdXNpbmcgV2ViR1BVQWRh
cHRlclByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdlYkdQVUFkYXB0
ZXI+PjsKLQotICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0OwotCi1wcml2
YXRlOgotICAgIFdlYkdQVSgpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZlMjVkODZhMmNh
MjQ4OWRiMTMyNDNiM2M2NzUyMGFkZDA5OGU3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVSwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZh
Y2UgV2ViR1BVIHsKLSAgICBQcm9taXNlPFdlYkdQVUFkYXB0ZXI+IHJlcXVlc3RBZGFwdGVyKG9w
dGlvbmFsIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zKTsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiYjZmOTk0ZmIyMDM1NGIzZWE5ODkzMjM3ZGNjMTExMWI2ZWViMTRm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVBZGFwdGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIkpTV2ViR1BVRGV2aWNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25z
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoV1RGTW92ZShvcHRp
b25zKSkpOwotfQotCi1XZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCi0gICAgOiBtX29wdGlvbnMoV1RG
TW92ZShvcHRpb25zKSkKLXsKLX0KLQotdm9pZCBXZWJHUFVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNl
KERvY3VtZW50JiBkb2N1bWVudCwgRGV2aWNlUmVxdWVzdFByb21pc2UmJiBwcm9taXNlKSBjb25z
dAotewotICAgIGRvY3VtZW50LnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvIGRldmljZSA9IFdlYkdQVURldmlj
ZTo6dHJ5Q3JlYXRlKGNvbnRleHQsIHByb3RlY3RlZFRoaXMuZ2V0KCkpKSB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZSgqZGV2aWNl
KTsKLQotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGRldmljZS5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAgIH0p
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzE5Y2VkNDYyNDJmYThhNDE3MWI3ZTNmODU4MWNl
YWU0NmU1OTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKLSNp
bmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50Owot
Y2xhc3MgV2ViR1BVRGV2aWNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlRGVmZXJyZWQ7Ci0KLWNsYXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVBZGFwdGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVBZGFw
dGVyPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwot
Ci0gICAgdXNpbmcgRGV2aWNlUmVxdWVzdFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURM
SW50ZXJmYWNlPFdlYkdQVURldmljZT4+OwotICAgIHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVu
dCYsIERldmljZVJlcXVlc3RQcm9taXNlJiYpIGNvbnN0OwotICAgIAotICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9uczsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdQVUFkYXB0ZXIo
c3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwotCi0gICAgc3RkOjpv
cHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IG1fb3B0aW9uczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NjYxYWIwMDY0MzkwZDlmZmE5MjE0NmJmOWExOTA2NTcyODhjMzQw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1l
PUdQVUFkYXB0ZXIsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUFkYXB0
ZXIgewotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICAvLyBy
ZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8vIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOyBEb24ndCBleHBvc2UgaGlnaGVy
IGxpbWl0cyBmb3Igbm93LgotCi0gICAgLy8gTWF5IHJlamVjdCB3aXRoIERPTUV4Y2VwdGlvbiAg
Ly8gVE9ETzogRE9NRXhjZXB0aW9uKCJPcGVyYXRpb25FcnJvciIpPwotICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxXZWJHUFVEZXZpY2U+IHJlcXVlc3REZXZpY2UoLypHUFVEZXZpY2VE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IqLyk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI0OGZlMWRmMTYzZmM1NWFjYmNjNTFhNzQyMDkwNmYyZGMxNjRmODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmlu
ZEdyb3VwLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxXZWJHUFVCaW5kR3JvdXA+IFdlYkdQVUJpbmRHcm91cDo6Y3JlYXRlKFJlZlB0cjxHUFVC
aW5kR3JvdXA+JiYgYmluZEdyb3VwKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQ
VUJpbmRHcm91cChXVEZNb3ZlKGJpbmRHcm91cCkpKTsKLX0KLQotV2ViR1BVQmluZEdyb3VwOjpX
ZWJHUFVCaW5kR3JvdXAoUmVmUHRyPEdQVUJpbmRHcm91cD4mJiBiaW5kR3JvdXApCi0gICAgOiBt
X2JpbmRHcm91cChXVEZNb3ZlKGJpbmRHcm91cCkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MjMyNWZiMmFlZjU1NDFiMDM0ZDJkOTFlNWE2NzFjNWMyNmZhNzM3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVUJpbmRHcm91cC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQ
VUJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJpbmRHcm91cD4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQmluZEdyb3VwPiBjcmVhdGUoUmVmUHRyPEdQVUJpbmRH
cm91cD4mJik7Ci0KLSAgICBHUFVCaW5kR3JvdXAqIGJpbmRHcm91cCgpIHsgcmV0dXJuIG1fYmlu
ZEdyb3VwLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQmluZEdyb3Vw
KFJlZlB0cjxHUFVCaW5kR3JvdXA+JiYpOwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91cD4gbV9i
aW5kR3JvdXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OTMwMjk0OGI0NTNi
M2VlN2Y5NTZjNjRhZjM4YjRmYzkwZTlkNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmlu
ZEdyb3VwLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVCaW5kR3JvdXAsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVUJpbmRHcm91cCB7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzgwMDEwM2M5YTdlMzVmNDc2MjY2NTMxZjUxMmE4
Y2JlNzlmYjNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3
LmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11
c2luZyBXZWJHUFVCaW5kaW5nUmVzb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXZWJHUFVTYW1wbGVy
PiwgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiwgV2ViR1BVQnVmZmVyQmluZGluZz47Ci0KLXN0
cnVjdCBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nIHsKLSAgICB1bnNpZ25lZCBiaW5kaW5nOwotICAg
IFdlYkdQVUJpbmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGY2YWVlZjgzOTM5YWE1MjM1MGQ5YzA5YTljMDVkY2Zl
OWMzNTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdl
Yi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVm
IChXZWJHUFVTYW1wbGVyIG9yIFdlYkdQVVRleHR1cmVWaWV3IG9yIFdlYkdQVUJ1ZmZlckJpbmRp
bmcpIFdlYkdQVUJpbmRpbmdSZXNvdXJjZTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
LSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVUJpbmRHcm91
cEJpbmRpbmcgewotICAgIHJlcXVpcmVkIHUzMiBiaW5kaW5nOwotICAgIHJlcXVpcmVkIFdlYkdQ
VUJpbmRpbmdSZXNvdXJjZSByZXNvdXJjZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWM4ZWQ5M2ExODA0YzA5ODc5NzFhOWU3ZmIxMmE2
YTM1MTc2OTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3Iu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB2YWxp
ZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZlciogYnVmZmVyLCBjb25zdCBHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nJiBiaW5kaW5nLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlv
bk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFt
ZSk7Ci0jZW5kaWYKLQotICAgIHN3aXRjaCAoYmluZGluZy50eXBlKSB7Ci0gICAgY2FzZSBHUFVC
aW5kaW5nVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKLSAgICAgICAgaWYgKCFidWZmZXItPmlzVW5pZm9y
bSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEdQVUJ1ZmZlciByZXNvdXJjZSBm
b3IgYmluZGluZyAldSBkb2VzIG5vdCBoYXZlIFVOSUZPUk0gdXNhZ2UhIiwgZnVuY3Rpb25OYW1l
LCBiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlN0b3JhZ2VC
dWZmZXI6Ci0gICAgICAgIGlmICghYnVmZmVyLT5pc1N0b3JhZ2UoKSkgewotICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXIgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUgZG9lcyBu
b3QgaGF2ZSBTVE9SQUdFIHVzYWdlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGluZy5iaW5kaW5nKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IExheW91dCBiaW5kaW5n
ICV1IGlzIG5vdCBhIGJ1ZmZlci10eXBlIHJlc291cmNlISIsIGZ1bmN0aW9uTmFtZSwgYmluZGlu
Zy5iaW5kaW5nKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RkOjpvcHRp
b25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0
cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBjb25zdCBjaGFy
KiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoKSI7Ci0K
LSAgICBpZiAoIWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgaWYgKGJp
bmRpbmdzLnNpemUoKSAhPSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgp
LnNpemUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1pc21hdGNoZWQgbnVtYmVyIG9m
IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmdzIGFuZCBHUFVCaW5kR3JvdXBCaW5kaW5ncyEiLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAg
IGF1dG8gbGF5b3V0TWFwID0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGluZ3NNYXAo
KTsKLQotICAgIFZlY3RvcjxHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5kR3JvdXBCaW5kaW5nczsK
LSAgICBiaW5kR3JvdXBCaW5kaW5ncy5yZXNlcnZlQ2FwYWNpdHkoYmluZGluZ3Muc2l6ZSgpKTsK
LQotICAgIGZvciAoY29uc3QgYXV0byYgYmluZGluZyA6IGJpbmRpbmdzKSB7Ci0gICAgICAgIGF1
dG8gaXRlcmF0b3IgPSBsYXlvdXRNYXAuZmluZChiaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICBp
ZiAoaXRlcmF0b3IgPT0gbGF5b3V0TWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgJXUgbm90IGZvdW5kIGluIEdQVUJpbmRH
cm91cExheW91dCEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgYXV0byBs
YXlvdXRCaW5kaW5nID0gaXRlcmF0b3ItPnZhbHVlOwotCi0gICAgICAgIGF1dG8gYmluZGluZ1Jl
c291cmNlVmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRyPFdlYkdQVVNh
bXBsZXI+JiBzYW1wbGVyKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewot
ICAgICAgICAgICAgaWYgKCFzYW1wbGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVyKCk7
Ci0gICAgICAgICAgICBpZiAoIWdwdVNhbXBsZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdS
ZXNvdXJjZT4obWFrZVJlZigqZ3B1U2FtcGxlcikpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQ
dHI8V2ViR1BVVGV4dHVyZVZpZXc+JiB2aWV3KSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdS
ZXNvdXJjZT4gewotICAgICAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhdXRvIHRleHR1cmUgPSB2aWV3LT50ZXh0dXJl
KCk7Ci0gICAgICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdS
ZXNvdXJjZT4obWFrZVJlZigqdGV4dHVyZSkpOwotICAgICAgICB9LCBbJmxheW91dEJpbmRpbmcs
IGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZykgLT4gc3Rk
OjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKLSAgICAgICAgICAgIGlmICghYnVmZmVy
QmluZGluZy5idWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gYnVmZmVyQmluZGluZy5idWZmZXItPmJ1ZmZlcigpOwot
ICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGJ1ZmZl
ciwgbGF5b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4oR1BVQnVmZmVyQmluZGluZyB7IG1ha2VSZWYoKmJ1
ZmZlciksIGJ1ZmZlckJpbmRpbmcub2Zmc2V0LCBidWZmZXJCaW5kaW5nLnNpemUgfSk7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlID0gV1RGOjp2aXNpdChiaW5k
aW5nUmVzb3VyY2VWaXNpdG9yLCBiaW5kaW5nLnJlc291cmNlKTsKLSAgICAgICAgaWYgKCFiaW5k
aW5nUmVzb3VyY2UpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCByZXNv
dXJjZSBmb3IgYmluZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGxheW91dEJpbmRpbmcuZXh0ZXJu
YWxCaW5kaW5nLmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVuZChHUFVC
aW5kR3JvdXBCaW5kaW5nIHsgYmluZGluZy5iaW5kaW5nLCBXVEZNb3ZlKGJpbmRpbmdSZXNvdXJj
ZS52YWx1ZSgpKSB9KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVQmluZEdyb3VwRGVzY3JpcHRv
ciB7IG1ha2VSZWYoKmxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpLCBXVEZNb3ZlKGJpbmRHcm91
cEJpbmRpbmdzKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMDI1MjEwOGUwNWVlN2NkZTc1ZDc1NzA1ZWZkNGQ2MWE3YWU1MjI5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVQmluZEdyb3VwTGF5b3V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVQmluZEdy
b3VwRGVzY3JpcHRvcjsKLQotc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAg
IHN0ZDo6b3B0aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQmluZEdy
b3VwRGVzY3JpcHRvcigpIGNvbnN0OwotCi0gICAgUmVmUHRyPGNvbnN0IFdlYkdQVUJpbmRHcm91
cExheW91dD4gbGF5b3V0OwotICAgIFZlY3RvcjxXZWJHUFVCaW5kR3JvdXBCaW5kaW5nPiBiaW5k
aW5nczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYjc1YzYzMjU5MDAyOTkxYTE2NmRhNTAwZWQyMmI3NGY4NWE1YTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJH
UFUKLV0gZGljdGlvbmFyeSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJl
ZCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgbGF5b3V0OwotICAgIHJlcXVpcmVkIHNlcXVlbmNlPFdl
YkdQVUJpbmRHcm91cEJpbmRpbmc+IGJpbmRpbmdzOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2QyZjg3OTAxNGU1NjNkZjkxNTM2MDViYjBlMzA1ZjYz
ZmQxNzUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0
PiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0
PiYmIGxheW91dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCaW5kR3JvdXBM
YXlvdXQoV1RGTW92ZShsYXlvdXQpKSk7Ci19Ci0KLVdlYkdQVUJpbmRHcm91cExheW91dDo6V2Vi
R1BVQmluZEdyb3VwTGF5b3V0KFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+JiYgbGF5b3V0KQot
ICAgIDogbV9iaW5kR3JvdXBMYXlvdXQoV1RGTW92ZShsYXlvdXQpKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjYzVhNzUxMmJjMDdhYTViOTUyODYwN2FmMmNk
ODQxYTkyMjAwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXQuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlKFJlZlB0cjxHUFVCaW5kR3JvdXBM
YXlvdXQ+JiYpOwotCi0gICAgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0KiBiaW5kR3JvdXBMYXlv
dXQoKSBjb25zdCB7IHJldHVybiBtX2JpbmRHcm91cExheW91dC5nZXQoKTsgfQotCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IFdlYkdQVUJpbmRHcm91cExheW91dChSZWZQdHI8R1BVQmluZEdyb3Vw
TGF5b3V0PiYmKTsKLQotICAgIFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IG1fYmluZEdyb3Vw
TGF5b3V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cExheW91dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWUz
ZTI0ZjEyYTNhZTgxYWRjZWNjNWU1ZTE4ZjBiYTc4YjEyN2ZkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJpbmRHcm91cExheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVQmluZEdyb3Vw
TGF5b3V0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJHUFVCaW5kR3JvdXBM
YXlvdXQgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY2MjY0OTQxOGI0NjhkYjRm
MDkzMDI4NmI3MWIyM2MyMzk3N2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNy
ZWF0ZShSZWZQdHI8R1BVQnVmZmVyPiYmIGJ1ZmZlciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlciksIGVycm9yU2NvcGVzKSk7Ci19Ci0KLVdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJl
ZlB0cjxHUFVCdWZmZXI+JiYgYnVmZmVyLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0g
ICAgOiBHUFVPYmplY3RCYXNlKG1ha2VSZWYoZXJyb3JTY29wZXMpKQotICAgICwgbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQotewotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6bWFwUmVhZEFzeW5j
KEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICByZWplY3RPclJlZ2lzdGVy
UHJvbWlzZUNhbGxiYWNrKFdURk1vdmUocHJvbWlzZSksIHRydWUpOwotfQotCi12b2lkIFdlYkdQ
VUJ1ZmZlcjo6bWFwV3JpdGVBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21pc2UpCi17
Ci0gICAgcmVqZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhXVEZNb3ZlKHByb21pc2UpLCBm
YWxzZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVyOjp1bm1hcCgpCi17Ci0gICAgZXJyb3JTY29w
ZXMoKS5zZXRFcnJvclByZWZpeCgiR1BVQnVmZmVyLnVubWFwKCk6ICIpOwotCi0gICAgaWYgKCFt
X2J1ZmZlcikKLSAgICAgICAgZXJyb3JTY29wZXMoKS5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIklu
dmFsaWQgb3BlcmF0aW9uOiBpbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fYnVmZmVyLT51bm1hcCgmZXJyb3JTY29wZXMoKSk7Ci19Ci0KLXZvaWQgV2ViR1BVQnVmZmVy
OjpkZXN0cm95KCkKLXsKLSAgICBlcnJvclNjb3BlcygpLnNldEVycm9yUHJlZml4KCJHUFVCdWZm
ZXIuZGVzdHJveSgpOiAiKTsKLQotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIGVycm9yU2Nv
cGVzKCkuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgbV9idWZmZXItPmRlc3Ryb3koJmVycm9yU2NvcGVzKCkpOwotICAgICAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQotfQotCi12b2lkIFdlYkdQVUJ1ZmZlcjo6cmVq
ZWN0T3JSZWdpc3RlclByb21pc2VDYWxsYmFjayhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmIHByb21p
c2UsIGJvb2wgaXNSZWFkKQotewotICAgIGVycm9yU2NvcGVzKCkuc2V0RXJyb3JQcmVmaXgobWFr
ZVN0cmluZygiR1BVQnVmZmVyLm1hcCIsIGlzUmVhZCA/ICJSZWFkIiA6ICJXcml0ZSIsICJBc3lu
YygpOiAiKSk7Ci0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzKCku
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbjogaW52YWxpZCBHUFVCdWZm
ZXIhIik7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBtX2J1ZmZlci0+cmVnaXN0ZXJNYXBwaW5nQ2FsbGJhY2soW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBwcm90ZWN0ZWRFcnJvclNjb3BlcyA9IG1ha2VSZWYoZXJyb3JTY29wZXMo
KSldIChKU0M6OkFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChhcnJheUJ1ZmZlcikKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgqYXJyYXlCdWZmZXIp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHBvc3NpYmxlIHRv
IGhpdCB0aGlzIGNvZGUgcGF0aCBpbiByZXNwb25zZSB0byBhbiB1bm1hcCBjYWxsLCB3aGVyZQot
ICAgICAgICAgICAgLy8gdGhlIEFycmF5QnVmZmVyIHdpbGwgZGVmaW5pdGVseSBiZSBudWxsLCBh
bmQgdGh1cyBhbiBvdXQgb2YgbWVtb3J5IGVycm9yIG1ha2VzIG5vIHNlbnNlLgotICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE2NgotICAg
ICAgICAgICAgcHJvdGVjdGVkRXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9y
RmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOwotICAg
ICAgICB9Ci0gICAgfSwgaXNSZWFkLCBlcnJvclNjb3BlcygpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIyZWVlMjA5MmEzZGVkZjdiNzM1MjZkOWVkOGEzMjkyM2FlZjRiN2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKLSNpbmNsdWRlICJH
UFVPYmplY3RCYXNlLmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci19Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRlc2NyaXB0b3I7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKLQotY2xhc3MgV2Vi
R1BVQnVmZmVyIDogcHVibGljIEdQVU9iamVjdEJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUJ1ZmZlcj4mJiwgR1BVRXJyb3JTY29w
ZXMmKTsKLQotICAgIEdQVUJ1ZmZlciogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7
IH0KLSAgICBjb25zdCBHUFVCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpOyB9Ci0KLSAgICB1c2luZyBCdWZmZXJNYXBwaW5nUHJvbWlzZSA9IERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8SlNDOjpBcnJheUJ1ZmZlcj4+OwotICAgIHZvaWQgbWFwUmVh
ZEFzeW5jKEJ1ZmZlck1hcHBpbmdQcm9taXNlJiYpOwotICAgIHZvaWQgbWFwV3JpdGVBc3luYyhC
dWZmZXJNYXBwaW5nUHJvbWlzZSYmKTsKLSAgICB2b2lkIHVubWFwKCk7Ci0gICAgdm9pZCBkZXN0
cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVC
dWZmZXI+JiYsIEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICB2b2lkIHJlamVjdE9yUmVnaXN0ZXJQ
cm9taXNlQ2FsbGJhY2soQnVmZmVyTWFwcGluZ1Byb21pc2UmJiwgYm9vbCk7Ci0KLSAgICBSZWZQ
dHI8R1BVQnVmZmVyPiBtX2J1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIwYTkw
YzQxMTdjMWYwNDdjY2Q0YzllMTU0MzgyZTc4NTEyMzZkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVUJ1ZmZlciwKLSAgICBFeHBv
c2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVQnVmZmVyIHsKLSAgICBQcm9taXNlPEFycmF5
QnVmZmVyPiBtYXBSZWFkQXN5bmMoKTsKLSAgICBQcm9taXNlPEFycmF5QnVmZmVyPiBtYXBXcml0
ZUFzeW5jKCk7Ci0gICAgdW5kZWZpbmVkIHVubWFwKCk7Ci0KLSAgICB1bmRlZmluZWQgZGVzdHJv
eSgpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJ1ZmZlckJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlckJpbmRpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdkOGI4YzgwZjlk
MGVmOGZmZTU0Y2MwNDZmNjA2ODNlNmM2N2E0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXJCaW5kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BV
QnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBXZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBidWZmZXI7Ci0gICAgdWludDY0X3Qgb2Zmc2V0OwotICAgIHVpbnQ2NF90IHNpemU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGlu
Zy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFkODI2ZGRmNmEwZjZlYjg0ZTk5
NWU1MmM1YTJhNTdiY2I3ZjM5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5k
aW5nLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVCdWZmZXJCaW5kaW5nIHsKLSAgICByZXF1aXJl
ZCBXZWJHUFVCdWZmZXIgYnVmZmVyOwotICAgIHU2NCBvZmZzZXQgPSAwOwotICAgIHJlcXVpcmVk
IHU2NCBzaXplOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1
MTA1MTE3NzZkODdlYjUyNzE4NzU1MjI2MDM1MzgwMzllMWZjNjUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1h
bmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShS
ZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotV2ViR1BV
Q29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ExZGE0ZWEzYzA5YmNkOTdhN2M4
NmQ3NmNlYjhiMDA5YmZlMzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVy
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZl
cj4mJik7Ci0KLSAgICBHUFVDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkgeyByZXR1cm4g
bV9jb21tYW5kQnVmZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViR1BVQ29tbWFuZEJ1
ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDlhZTJmMmRjYmNiMmIxNTc2YTFmMThlZTNiYTYyMDBjZjU3YmU1ODIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9
R1BVQ29tbWFuZEJ1ZmZlciwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BV
Q29tbWFuZEJ1ZmZlciB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhZDNlNDdkNzA1NmU1MTZkMGQ0OTYyY2JlM2E4OGYwMDUzOWY1YWE5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkdQVUNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4
dHVyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVy
Q29weVZpZXc+IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5Vmll
dygpIGNvbnN0Ci17Ci0gICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBm
b3IgY29weSEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAv
LyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJldHVybiBHUFVCdWZmZXJD
b3B5VmlldyB7IG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhpcyB9OwotfQotCi1zdGQ6
Om9wdGlvbmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlD
cmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICghdGV4dHVyZSB8fCAh
dGV4dHVyZS0+dGV4dHVyZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5k
RW5jb2RlcjogSW52YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9u
LgotCi0gICAgcmV0dXJuIEdQVVRleHR1cmVDb3B5VmlldyB7IG1ha2VSZWYoKnRleHR1cmUtPnRl
eHR1cmUoKSksICp0aGlzIH07Ci19Ci0KLVJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2ViR1BV
Q29tbWFuZEVuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEVuY29kZXIoV1RGTW92
ZShidWZmZXIpKSk7Ci19Ci0KLVdlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5kRW5j
b2RlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgOiBtX2NvbW1hbmRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKQotewotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZm
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJl
bmRlclBhc3MoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBhdXRvIGdwdURl
c2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCk7
Ci0gICAgaWYgKCFncHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXI6OmNyZWF0ZShudWxscHRyKTsKLQotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRl
clBhc3NFbmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVmZmVyKSwgV1RGTW92
ZSgqZ3B1RGVzY3JpcHRvcikpOwotICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
Y3JlYXRlKFdURk1vdmUoZW5jb2RlcikpOwotfQotCi1SZWY8V2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcygpCi17Ci0gICAgaWYg
KCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRF
bmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAg
ICByZXR1cm4gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
fQotICAgIGF1dG8gZW5jb2RlciA9IEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKG1h
a2VSZWYoKm1fY29tbWFuZEJ1ZmZlcikpOwotICAgIHJldHVybiBXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXI6OmNyZWF0ZShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYgc3JjLCB1aW50NjRfdCBz
cmNPZmZzZXQsIFdlYkdQVUJ1ZmZlciYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90
IHNpemUpCi17Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFzcmMuYnVmZmVy
KCkgfHwgIWRzdC5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFu
ZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0
aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIobWFrZVJlZigq
c3JjLmJ1ZmZlcigpKSwgc3JjT2Zmc2V0LCBtYWtlUmVmKCpkc3QuYnVmZmVyKCkpLCBkc3RPZmZz
ZXQsIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9U
ZXh0dXJlKGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQ
VVRleHR1cmVDb3B5VmlldyYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17
Ci0gICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQ
VUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9u
ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNy
Y0J1ZmZlci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1VGV4dHVy
ZVZpZXcgPSBkc3RUZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAg
aWYgKCFncHVCdWZmZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRC
dWZmZXItPmNvcHlCdWZmZXJUb1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1v
dmUoKmdwdVRleHR1cmVWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNU
ZXh0dXJlLCBjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVF
eHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAgICAgICBM
T0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTog
SW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBn
cHVUZXh0dXJlVmlldyA9IHNyY1RleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7
Ci0gICAgYXV0byBncHVCdWZmZXJWaWV3ID0gZHN0QnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNv
cHlWaWV3KCk7Ci0KLSAgICBpZiAoIWdwdVRleHR1cmVWaWV3IHx8ICFncHVCdWZmZXJWaWV3KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4K
LQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weVRleHR1cmVUb0J1ZmZlcihXVEZNb3ZlKCpncHVU
ZXh0dXJlVmlldyksIFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBzaXplKTsKLX0KLQotdm9pZCBX
ZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4
dHVyZUNvcHlWaWV3JiBzcmMsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25z
dCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgewotICAg
ICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0
dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGF1dG8gZ3B1U3JjVmlldyA9IHNyYy50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLSAg
ICBhdXRvIGdwdURzdFZpZXcgPSBkc3QudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0K
LSAgICBpZiAoIWdwdVNyY1ZpZXcgfHwgIWdwdURzdFZpZXcpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVm
ZmVyLT5jb3B5VGV4dHVyZVRvVGV4dHVyZShXVEZNb3ZlKCpncHVTcmNWaWV3KSwgV1RGTW92ZSgq
Z3B1RHN0VmlldyksIHNpemUpOwotfQotICAgIAotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdl
YkdQVUNvbW1hbmRFbmNvZGVyOjpmaW5pc2goKQotewotICAgIGlmICghbV9jb21tYW5kQnVmZmVy
IHx8IG1fY29tbWFuZEJ1ZmZlci0+aXNFbmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmZpbmlzaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEi
KTsKLSAgICAgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShudWxscHRyKTsK
LSAgICB9Ci0gICAgLy8gUGFzc2VzIHRoZSByZWZlcmVuY2VkIEdQVUNvbW1hbmRCdWZmZXIgdG8g
dGhlIFdlYkdQVUNvbW1hbmRCdWZmZXIsIGludmFsaWRhdGluZyB0aGlzIFdlYkdQVUNvbW1hbmRF
bmNvZGVyLgotICAgIHJldHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM2ZTE4NGExMTRmMmRkZGZmOTBiZTMzMjhmNWQxZTYwNzQ1Y2I3M2UuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNs
YXNzIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOwotY2xhc3MgV2ViR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUV4dGVudDNEOwotc3RydWN0
IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVQnVmZmVyQ29weVZp
ZXcgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVy
Q29weVZpZXc+IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7Ci0KLSAgICBSZWZQ
dHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3QgV2ViR1BVVGV4dHVyZUNvcHlW
aWV3IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVUZXh0
dXJlQ29weVZpZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0OwotCi0gICAg
UmVmUHRyPFdlYkdQVVRleHR1cmU+IHRleHR1cmU7Ci19OwotCi1jbGFzcyBXZWJHUFVDb21tYW5k
RW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFJlZlB0cjxH
UFVDb21tYW5kQnVmZmVyPiYmKTsKLQotICAgIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4g
YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJik7Ci0gICAg
UmVmPFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHZv
aWQgY29weUJ1ZmZlclRvQnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IHNyY09mZnNldCwg
V2ViR1BVQnVmZmVyJiwgdWludDY0X3QgZHN0T2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLSAgICB2
b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25z
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQg
Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBX
ZWJHUFVCdWZmZXJDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Ci0gICAgdm9pZCBjb3B5
VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJH
UFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwotICAgIFJlZjxXZWJHUFVD
b21tYW5kQnVmZmVyPiBmaW5pc2goKTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kRW5j
b2RlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWZkMjJlMDQ4NDhkMjg1NGI4ZjVjMTMyNDVjNDYyMTY4ODYyMjkxMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHU2NDsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNvcHlWaWV3Ci1d
IGRpY3Rpb25hcnkgR1BVQnVmZmVyQ29weVZpZXcgewotICAgIHJlcXVpcmVkIFdlYkdQVUJ1ZmZl
ciBidWZmZXI7Ci0gICAgdTY0IG9mZnNldCA9IDA7Ci0gICAgcmVxdWlyZWQgdTMyIHJvd1BpdGNo
OwotICAgIHJlcXVpcmVkIHUzMiBpbWFnZUhlaWdodDsKLX07Ci0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRB
cz1XZWJHUFVUZXh0dXJlQ29weVZpZXcKLV0gZGljdGlvbmFyeSBHUFVUZXh0dXJlQ29weVZpZXcg
ewotICAgIHJlcXVpcmVkIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKLSAgICB1MzIgbWlwTGV2ZWwg
PSAwOwotICAgIHUzMiBhcnJheUxheWVyID0gMDsKLSAgICBHUFVPcmlnaW4zRCBvcmlnaW47IC8v
IHt4OiAwLCB5OiAwLCB6OiAwfQotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tbWFuZEVuY29kZXIsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRFbmNvZGVyIHsKLSAgICBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlciBiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVz
Y3JpcHRvcik7Ci0gICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3Mo
KTsKLQotICAgIHVuZGVmaW5lZCBjb3B5QnVmZmVyVG9CdWZmZXIoCi0gICAgICAgIFdlYkdQVUJ1
ZmZlciBzcmMsCi0gICAgICAgIHU2NCBzcmNPZmZzZXQsCi0gICAgICAgIFdlYkdQVUJ1ZmZlciBk
c3QsCi0gICAgICAgIHU2NCBkc3RPZmZzZXQsCi0gICAgICAgIHU2NCBzaXplKTsKLQotICAgIHVu
ZGVmaW5lZCBjb3B5QnVmZmVyVG9UZXh0dXJlKAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBz
b3VyY2UsCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAg
R1BVRXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgdW5kZWZpbmVkIGNvcHlUZXh0dXJlVG9CdWZm
ZXIoCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVUJ1ZmZl
ckNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0K
LSAgICB1bmRlZmluZWQgY29weVRleHR1cmVUb1RleHR1cmUoCi0gICAgICAgIEdQVVRleHR1cmVD
b3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwK
LSAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciBmaW5pc2goKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWNmYTc4OGM4NmJjOTFiOGIwNzNhNmQ1YjNkNTUxNTc3MjcyM2NjZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbmNsdWRlICJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJH
UFVDb21wdXRlUGlwZWxpbmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyPiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShSZWZQ
dHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKLX0K
LQotV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIoUmVm
UHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogbV9wYXNzRW5jb2Rl
ciB7IFdURk1vdmUoZW5jb2RlcikgfQotewotfQotCi12b2lkIFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkK
LXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFwaXBlbGluZS5jb21wdXRlUGlwZWxpbmUo
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBl
bGluZSgpOiBJbnZhbGlkIHBpcGVsaW5lISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fcGFzc0VuY29kZXItPnNldFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLmNvbXB1dGVQaXBl
bGluZSgpKSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCh1
bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB6KQotewotICAgIGlmICghbV9wYXNzRW5j
b2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNw
YXRjaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotICAgIG1fcGFzc0VuY29kZXIt
PmRpc3BhdGNoKHgsIHksIHopOwotfQotCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpCi17Ci0gICAgcmV0dXJuIG1fcGFz
c0VuY29kZXIuZ2V0KCk7Ci19Ci0KLWNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBX
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBhZWRjMTJlMmZjMzI4ZDlhOTc2MThiNWM5MGUzNTM5YmY0M2U3NzIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOwotY2xhc3MgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7
Ci1jbGFzcyBXZWJHUFVDb21wdXRlUGlwZWxpbmU7Ci0KLWNsYXNzIFdlYkdQVUNvbXB1dGVQYXNz
RW5jb2RlciA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShSZWZQdHI8
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3Qg
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBkaXNwYXRjaCh1bnNpZ25lZCB4LCB1
bnNpZ25lZCB5LCB1bnNpZ25lZCB6KTsKLQotcHJpdmF0ZToKLSAgICBXZWJHUFVDb21wdXRlUGFz
c0VuY29kZXIoUmVmUHRyPEdQVUNvbXB1dGVQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAg
IFJlZlB0cjxHUFVDb21wdXRlUGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDZjOTQ4N2NkMTY2Mjkz
ODg0YmFkZTk0YjUzMDk2YjA2MGI4YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVQ29tcHV0ZVBhc3NFbmNvZGVyLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFj
ZSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIgOiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ciB7Ci0gICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZSBwaXBl
bGluZSk7Ci0gICAgdW5kZWZpbmVkIGRpc3BhdGNoKHUzMiB4LCB1MzIgeSwgdTMyIHopOwotCi0g
ICAgLy8gVE9ETyBhZGQgbWlzc2luZyBjb21tYW5kcwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGZmYTI4MGI5Y2U4ZDc0NjE4YTY4MDcyOWNhNjgwNTA4
MTYwMzg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVUVy
cm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BV
RGV2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVDb21wdXRlUGlwZWxp
bmU+IFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKFdlYkdQVURldmljZSYgZGV2aWNlLCBS
ZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcikKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21wdXRlUGlwZWxpbmUoZGV2aWNlLCBX
VEZNb3ZlKHBpcGVsaW5lKSwgZXJyb3JTY29wZXMsIFdURk1vdmUoY29tcHV0ZVNoYWRlcikpKTsK
LX0KLQotV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpXZWJHUFVDb21wdXRlUGlwZWxpbmUoV2ViR1BV
RGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcywgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBj
b21wdXRlU2hhZGVyKQotICAgIDogV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBlcnJvclNjb3BlcykK
LSAgICAsIG1fY29tcHV0ZVBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwgbV9jb21w
dXRlU2hhZGVyKFdURk1vdmUoY29tcHV0ZVNoYWRlcikpCi17Ci19Ci0KLVdlYkdQVUNvbXB1dGVQ
aXBlbGluZTo6fldlYkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJH
UFVDb21wdXRlUGlwZWxpbmU6OmNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJHUFVEZXZpY2Um
IGRldmljZSkKLXsKLSAgICBpZiAobV9jb21wdXRlU2hhZGVyLm1vZHVsZSkgewotICAgICAgICBj
b25zdCBhdXRvJiBjb21wdXRlU291cmNlID0gbV9jb21wdXRlU2hhZGVyLm1vZHVsZS0+c291cmNl
KCk7Ci0gICAgICAgIG1fY29tcHV0ZVNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZShHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgY29t
cHV0ZVNvdXJjZSB9KSwgY29tcHV0ZVNvdXJjZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lOjpy
ZWNvbXBpbGUoY29uc3QgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKG1fY29tcHV0
ZVBpcGVsaW5lICYmIG1fY29tcHV0ZVNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGdwdUNvbXB1dGVTaGFkZXJNb2R1bGUgPSBtX2NvbXB1dGVTaGFkZXIubW9kdWxlLT5tb2R1bGUo
KSkgewotICAgICAgICAgICAgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVT
dGFnZShtYWtlUmVmKCpncHVDb21wdXRlU2hhZGVyTW9kdWxlKSwgeyBtX2NvbXB1dGVTaGFkZXIu
ZW50cnlQb2ludCB9KTsKLSAgICAgICAgICAgIHJldHVybiBtX2NvbXB1dGVQaXBlbGluZS0+cmVj
b21waWxlKGRldmljZS5kZXZpY2UoKSwgV1RGTW92ZShjb21wdXRlU3RhZ2UpKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiODQ3MTM1MmUyODJhNGJlZDg5ZDZkODdhYjgyYmJlMGQ5ZDg4MDRhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmU7
Ci1jbGFzcyBHUFVQaXBlbGluZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BV
RGV2aWNlOwotY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOwotCi1jbGFzcyBXZWJHUFVDb21wdXRl
UGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgV2ViR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZp
cnR1YWwgfldlYkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVD
b21wdXRlUGlwZWxpbmU+IGNyZWF0ZShXZWJHUFVEZXZpY2UmLCBSZWZQdHI8R1BVQ29tcHV0ZVBp
cGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhJiYg
Y29tcHV0ZVNoYWRlcik7Ci0KLSAgICBib29sIGlzQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gY29tcHV0
ZVBpcGVsaW5lKCk7IH0KLSAgICBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmUqIGNvbXB1dGVQaXBl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lLmdldCgpOyB9Ci0gICAgUmVm
UHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY29tcHV0ZVNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcHV0ZVNoYWRlci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNv
bnN0IFdlYkdQVURldmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmlj
ZSYpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZShXZWJHUFVEZXZpY2Um
LCBSZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiYmLCBHUFVFcnJvclNjb3BlcyYsIFdlYkdQVVBp
cGVsaW5lOjpTaGFkZXJEYXRhJiYgY29tcHV0ZVNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVQ29t
cHV0ZVBpcGVsaW5lPiBtX2NvbXB1dGVQaXBlbGluZTsKLQotICAgIC8vIFByZXNlcnZlZCBmb3Ig
V2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJE
YXRhIG1fY29tcHV0ZVNoYWRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XRUJHUFVQSVBFTElORShXZWJDb3JlOjpXZWJHUFVDb21wdXRl
UGlwZWxpbmUsIGlzQ29tcHV0ZVBpcGVsaW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1
dGVQaXBlbGluZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYTJjZTJmNDI5
Yzc1NmJjOWJiZDBmOGQ3OWIyYjMzYmM2YzQwMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFj
ZU5hbWU9R1BVQ29tcHV0ZVBpcGVsaW5lLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFj
ZSBXZWJHUFVDb21wdXRlUGlwZWxpbmUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZGI3ZDM1ODhiN2YxYWY4MjAz
MGI0OWE4NTExMTA4MWY5MWIzNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I+IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKSBj
b25zdAotewotICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBsYXlvdXQgPyBtYWtlUmVmUHRyKGxh
eW91dC0+cGlwZWxpbmVMYXlvdXQoKSkgOiBudWxscHRyOwotCi0gICAgYXV0byBjb21wdXRlID0g
Y29tcHV0ZVN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwot
ICAgIGlmICghY29tcHV0ZSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCJH
UFVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBJbnZhbGlkIEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUocGlw
ZWxpbmVMYXlvdXQpLCBXVEZNb3ZlKCpjb21wdXRlKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWI3ZWYzNjk0MmEyYTk2YjY5
N2IwNDg2YmI4NTVlMDBlM2YzZThlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJX
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1z
dHJ1Y3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3Bl
cyYpIGNvbnN0OwotCi0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1
dGVTdGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMWJjNjczYzk1ZTI4MjJiNWVlYjZlZGMzMWFmZmQ4ZjY2YjM4MTFi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgcmVxdWly
ZWQgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmViZTczZjU3YzA2YzFjZDAwMmRiNTU5MzU1ZDhjZDM3
NmZiZjI0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMzIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwLmgi
Ci0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlckRlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29t
cHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVW5jYXB0dXJlZEVycm9y
RXZlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgotI2luY2x1ZGUgIkpTR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkpT
R1BVVmFsaWRhdGlvbkVycm9yLmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVCdWZmZXIuaCIKLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwLmgiCi0jaW5jbHVkZSAi
V2ViR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKLSNpbmNsdWRlICJX
ZWJHUFVCdWZmZXJCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIK
LSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNp
bmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJXZWJHUFVTYW1wbGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9k
dWxlLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPG1lbW9yeT4K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdQVURldmlj
ZSk7Ci0KLUxvY2sgV2ViR1BVRGV2aWNlOjpzX2luc3RhbmNlc0xvY2s7Ci0KLVJlZlB0cjxXZWJH
UFVEZXZpY2U+IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCi17Ci0gICAgaWYg
KGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjp0cnlDcmVhdGUoYWRhcHRlci0+b3B0aW9ucygpKSkg
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoY29udGV4
dCwgV1RGTW92ZShhZGFwdGVyKSwgbWFrZVJlZigqZGV2aWNlKSkpOwotICAgICAgICBkZXZpY2Ut
PnNldEVycm9yU2NvcGVzKHJlc3VsdC0+bV9lcnJvclNjb3Blcy5jb3B5UmVmKCkpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSGFzaFNl
dDxXZWJHUFVEZXZpY2UqPiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7Ci0gICAg
cmV0dXJuIGluc3RhbmNlczsKLX0KLQotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2Nr
KCkKLXsKLSAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwotfQotCi1XZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2Vi
R1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKLSAgICA6IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV9hZGFwdGVyKFdURk1vdmUo
YWRhcHRlcikpCi0gICAgLCBtX2RldmljZShXVEZNb3ZlKGRldmljZSkpCi0gICAgLCBtX2Vycm9y
U2NvcGVzKEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyldIChHUFVFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAg
ICAgICAgICAgIGRpc3BhdGNoVW5jYXB0dXJlZEVycm9yKFdURk1vdmUoZXJyb3IpKTsKLSAgICB9
KSkKLXsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7
Ci0KLSAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKLSAg
ICAgICAgaW5zdGFuY2VzKCkuYWRkKHRoaXMpOwotICAgIH0KLX0KLQotV2ViR1BVRGV2aWNlOjp+
V2ViR1BVRGV2aWNlKCkKLXsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0
cm95V2ViR1BVRGV2aWNlKCp0aGlzKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7
IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKLSAgICAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewotICAgICAgICAgICAgaWYgKGVu
dHJ5LnZhbHVlID09IHRoaXMpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55
IFdlYkdQVVBpcGVsaW5lIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGls
bCBleGlzdC4KLSAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24g
d2l0aCBhIFdlYkdQVSBkZXZpY2UuCi0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBudWxs
cHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0gICAgICAgIEFTU0VSVChpbnN0YW5j
ZXMoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsK
LSAgICB9Ci19Ci0KLVJlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVy
KGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9l
cnJvclNjb3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVCdWZmZXIoKTogIik7
Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRv
ciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpOb3RNYXBwZWQsIG1fZXJyb3JTY29wZXMpOwotICAg
IHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29w
ZXMpOwotfQotCi1WZWN0b3I8SlNDOjpKU1ZhbHVlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZl
ck1hcHBlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBH
UFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIG1fZXJyb3JTY29w
ZXMtPnNldEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKCk6ICIpOwot
Ci0gICAgSlNDOjpKU1ZhbHVlIHdyYXBwZWRBcnJheUJ1ZmZlciA9IEpTQzo6anNOdWxsKCk7Ci0K
LSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwg
R1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCwgbV9lcnJvclNjb3Blcyk7Ci0gICAgaWYg
KGJ1ZmZlcikgewotICAgICAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLT5tYXBPbkNyZWF0
aW9uKCk7Ci0gICAgICAgIHdyYXBwZWRBcnJheUJ1ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBhcnJheUJ1ZmZlcik7Ci0gICAgfQotCi0gICAgYXV0byB3ZWJCdWZmZXIgPSBXZWJHUFVC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIG1fZXJyb3JTY29wZXMpOwotICAgIGF1dG8g
d3JhcHBlZFdlYkJ1ZmZlciA9IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCB3ZWJCdWZmZXIpOwot
Ci0gICAgcmV0dXJuIHsgd3JhcHBlZFdlYkJ1ZmZlciwgd3JhcHBlZEFycmF5QnVmZmVyIH07Ci19
Ci0KLVJlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3Qg
R1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgbV9lcnJvclNj
b3Blcy0+c2V0RXJyb3JQcmVmaXgoIkdQVURldmljZS5jcmVhdGVUZXh0dXJlKCk6ICIpOwotCi0g
ICAgYXV0byB0ZXh0dXJlID0gbV9kZXZpY2UtPnRyeUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvcik7
Ci0gICAgcmV0dXJuIFdlYkdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUpKTsKLX0K
LQotUmVmPFdlYkdQVVNhbXBsZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBH
UFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIHNhbXBs
ZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
V2ViR1BVU2FtcGxlcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlcikpOwotfQotCi1SZWY8V2ViR1BV
QmluZEdyb3VwTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25z
dCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAg
IGF1dG8gbGF5b3V0ID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoV1RGTW92ZShs
YXlvdXQpKTsKLX0KLQotUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikgY29uc3QKLXsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9y
LnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVz
Y3JpcHRvcikKLSAgICAgICAgcmV0dXJuIFdlYkdQVVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUobnVs
bHB0cik7Ci0gICAgCi0gICAgYXV0byBsYXlvdXQgPSBtX2RldmljZS0+Y3JlYXRlUGlwZWxpbmVM
YXlvdXQoV1RGTW92ZSgqZ3B1RGVzY3JpcHRvcikpOwotICAgIHJldHVybiBXZWJHUFVQaXBlbGlu
ZUxheW91dDo6Y3JlYXRlKFdURk1vdmUobGF5b3V0KSk7Ci19Ci0KLVJlZjxXZWJHUFVCaW5kR3Jv
dXA+IFdlYkdQVURldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgYXV0byBncHVEZXNjcmlwdG9yID0g
ZGVzY3JpcHRvci50cnlDcmVhdGVHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKCFn
cHVEZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4gV2ViR1BVQmluZEdyb3VwOjpjcmVhdGUobnVs
bHB0cik7Ci0KLSAgICBhdXRvIGJpbmRHcm91cCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5kR3Jv
dXAoKmdwdURlc2NyaXB0b3IsIG1fZXJyb3JTY29wZXMpOwotICAgIHJldHVybiBXZWJHUFVCaW5k
R3JvdXA6OmNyZWF0ZShXVEZNb3ZlKGJpbmRHcm91cCkpOwotfQotCi1SZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBX
aGF0IGNhbiBiZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT50
cnlDcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0
b3IuY29kZSB9KTsKLSAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92
ZShtb2R1bGUpLCBkZXNjcmlwdG9yLmNvZGUpOwotfQotCi1SZWY8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+IFdlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIG1fZXJyb3JTY29wZXMtPnNl
dEVycm9yUHJlZml4KCJHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogIik7Ci0KLSAg
ICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcihtX2Vycm9yU2NvcGVzKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0g
ICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBudWxscHRy
LCBtX2Vycm9yU2NvcGVzLCB7IH0sIHsgfSk7Ci0KLSAgICBhdXRvIGdwdVBpcGVsaW5lID0gbV9k
ZXZpY2UtPnRyeUNyZWF0ZVJlbmRlclBpcGVsaW5lKCpncHVEZXNjcmlwdG9yLCBtX2Vycm9yU2Nv
cGVzKTsKLQotICAgIFdlYkdQVVBpcGVsaW5lOjpTaGFkZXJEYXRhIHZlcnRleFNoYWRlciA9IHsg
ZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZS5tb2R1bGUsIGRlc2NyaXB0b3IudmVydGV4U3RhZ2UuZW50
cnlQb2ludCB9OwotCi0gICAgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEgZnJhZ21lbnRTaGFk
ZXI7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgZnJhZ21lbnRT
aGFkZXIgPSB7IGRlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZS52YWx1ZSgpLm1vZHVsZSwgZGVzY3Jp
cHRvci5mcmFnbWVudFN0YWdlLnZhbHVlKCkuZW50cnlQb2ludCB9OwotCi0gICAgYXV0byB3ZWJH
UFVQaXBlbGluZSA9IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUo
Z3B1UGlwZWxpbmUpLCBtX2Vycm9yU2NvcGVzLCBXVEZNb3ZlKHZlcnRleFNoYWRlciksIFdURk1v
dmUoZnJhZ21lbnRTaGFkZXIpKTsKLSAgICBpZiAod2ViR1BVUGlwZWxpbmUtPmlzVmFsaWQoKSkK
LSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBlbGlu
ZSgqdGhpcywgd2ViR1BVUGlwZWxpbmUuZ2V0KCkpOwotICAgIHJldHVybiB3ZWJHUFVQaXBlbGlu
ZTsKLX0KLQotUmVmPFdlYkdQVUNvbXB1dGVQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21wdXRlUGlwZWxpbmUoY29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKLXsKLSAgICBtX2Vycm9yU2NvcGVzLT5zZXRFcnJvclByZWZpeCgiR1BVRGV2aWNl
LmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiAiKTsKLQotICAgIGF1dG8gZ3B1RGVzY3JpcHRvciA9
IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihtX2Vycm9y
U2NvcGVzKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXZWJHUFVD
b21wdXRlUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgbnVsbHB0ciwgbV9lcnJvclNjb3BlcywgeyB9
KTsKLQotICAgIGF1dG8gZ3B1UGlwZWxpbmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKCpncHVEZXNjcmlwdG9yLCBtX2Vycm9yU2NvcGVzKTsKLQotICAgIFdlYkdQVVBpcGVs
aW5lOjpTaGFkZXJEYXRhIGNvbXB1dGVTaGFkZXIgPSB7IGRlc2NyaXB0b3IuY29tcHV0ZVN0YWdl
Lm1vZHVsZSwgZGVzY3JpcHRvci5jb21wdXRlU3RhZ2UuZW50cnlQb2ludCB9OwotCi0gICAgYXV0
byB3ZWJHUFVQaXBlbGluZSA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGdwdVBpcGVsaW5lKSwgbV9lcnJvclNjb3BlcywgV1RGTW92ZShjb21wdXRlU2hhZGVy
KSk7Ci0gICAgaWYgKHdlYkdQVVBpcGVsaW5lLT5pc1ZhbGlkKCkpCi0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoKnRoaXMsIHdlYkdQVVBp
cGVsaW5lLmdldCgpKTsKLSAgICByZXR1cm4gd2ViR1BVUGlwZWxpbmU7Ci19Ci0KLVJlZjxXZWJH
UFVDb21tYW5kRW5jb2Rlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNv
bnN0Ci17Ci0gICAgYXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUNvbW1h
bmRCdWZmZXIoKTsKLSAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbW1hbmRCdWZmZXIpKTsKLX0KLQotUmVmPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZpY2U6
OmdldFF1ZXVlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcXVldWUpCi0gICAgICAgIG1fcXVldWUg
PSBXZWJHUFVRdWV1ZTo6Y3JlYXRlKG1fZGV2aWNlLT50cnlHZXRRdWV1ZSgpKTsKLQotICAgIHJl
dHVybiBtYWtlUmVmKCptX3F1ZXVlLmdldCgpKTsKLX0KLQotdm9pZCBXZWJHUFVEZXZpY2U6OnBv
cEVycm9yU2NvcGUoRXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKLXsKLSAgICBTdHJpbmcgZmFpbE1l
c3NhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVz
LT5wb3BFcnJvclNjb3BlKGZhaWxNZXNzYWdlKTsKLSAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0
eSgpKQotICAgICAgICBwcm9taXNlLnJlc29sdmUoZXJyb3IpOwotICAgIGVsc2UKLSAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJHUFVEZXZpY2U6OnBv
cEVycm9yU2NvcGUoKTogIiArIGZhaWxNZXNzYWdlIH0pOwotfQotCi0vLyBFcnJvcnMgcmVwb3J0
ZWQgdmlhIHRoZSB2YWxpZGF0aW9uIGVycm9yIGV2ZW50IHNob3VsZCBhbHNvIGFwcGVhciBpbiB0
aGUgY29uc29sZSBhcyB3YXJuaW5ncy4KLXN0YXRpYyB2b2lkIHByaW50VmFsaWRhdGlvbkVycm9y
VG9Db25zb2xlKEdQVUVycm9yJiBlcnJvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKLXsKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEdQVVZhbGlkYXRp
b25FcnJvcj4+KGVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB2YWxpZGF0aW9u
RXJyb3IgPSBXVEY6OmdldDxSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPj4oZXJyb3IpOwotICAg
IGlmICghdmFsaWRhdGlvbkVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG1lc3Nh
Z2UgPSB2YWxpZGF0aW9uRXJyb3ItPm1lc3NhZ2UoKTsKLSAgICBhdXRvIGNvbnNvbGVNZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2Fn
ZSk7Ci0KLSAgICBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuYWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOwotfQotCi12b2lkIFdlYkdQVURldmljZTo6ZGlzcGF0
Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJyb3ImJiBlcnJvcikKLXsKLSAgICBwcmludFZhbGlkYXRp
b25FcnJvclRvQ29uc29sZShlcnJvciwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLQotICAg
IGNhbGxPbk1haW5UaHJlYWQoW2Vycm9yID0gV1RGTW92ZShlcnJvciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnQoR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5jYXB0dXJl
ZGVycm9yRXZlbnQsIFdURk1vdmUoZXJyb3IpKSk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmOWFiMDkyZjk2NjFkYWMyM2I2MTAxNTU5OGY4YzI2OGJhMjIxYzYwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotI2luY2x1ZGUgIkdQ
VUVycm9yU2NvcGVzLmgiCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJXZWJHUFVB
ZGFwdGVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKLSNpbmNsdWRlICJXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEpT
VmFsdWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlF
cnJvcjsKLWNsYXNzIEdQVVZhbGlkYXRpb25FcnJvcjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXA7Ci1jbGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlv
dXQ7Ci1jbGFzcyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBXZWJHUFVDb21tYW5kRW5jb2RlcjsKLWNs
YXNzIFdlYkdQVUNvbXB1dGVQaXBlbGluZTsKLWNsYXNzIFdlYkdQVVBpcGVsaW5lTGF5b3V0Owot
Y2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBXZWJHUFVTYW1wbGVyOwotY2xhc3Mg
V2ViR1BVU2hhZGVyTW9kdWxlOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwotY2xhc3MgV2ViR1BV
VGV4dHVyZTsKLQotc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7Ci1zdHJ1Y3Qg
R1BVQnVmZmVyRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKLXN0cnVj
dCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
Owotc3RydWN0IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7Ci1zdHJ1Y3QgV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjsKLXN0cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1lbnVtIGNs
YXNzIEdQVUVycm9yRmlsdGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlRGVmZXJyZWQ7Ci0KLXVzaW5nIEVycm9ySURMVW5pb24gPSBJRExVbmlvbjxJRExJ
bnRlcmZhY2U8R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIElETEludGVyZmFjZTxHUFVWYWxpZGF0aW9u
RXJyb3I+PjsKLXVzaW5nIEVycm9yUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxs
YWJsZTxFcnJvcklETFVuaW9uPj47Ci0KLWNsYXNzIFdlYkdQVURldmljZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVURldmljZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
LSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYkdQVURldmljZSk7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+V2ViR1BVRGV2aWNlKCk7Ci0KLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVURldmlj
ZT4gdHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Y29uc3QgV2ViR1BVQWRh
cHRlcj4mJik7Ci0KLSAgICBzdGF0aWMgSGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgaW5zdGFuY2Vz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKLSAgICBzdGF0aWMgTG9jayYg
aW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKLQotICAg
IGNvbnN0IFdlYkdQVUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIu
Z2V0KCk7IH0KLSAgICBHUFVEZXZpY2UmIGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlLmdldCgp
OyB9Ci0gICAgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZS5nZXQoKTsgfQotCi0gICAgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IEdQ
VUJ1ZmZlckRlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBWZWN0b3I8SlNDOjpKU1ZhbHVlPiBjcmVh
dGVCdWZmZXJNYXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImKSBjb25zdDsKLSAgICBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVTYW1wbGVyPiBj
cmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7Ci0KLSAgICBS
ZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJlZjxXZWJHUFVQaXBlbGlu
ZUxheW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVUJpbmRHcm91cD4gY3JlYXRlQmluZEdy
b3VwKGNvbnN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3ImKSBjb25zdDsKLQotICAgIFJlZjxX
ZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBj
cmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
KTsKLSAgICBSZWY8V2ViR1BVQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGVDb21wdXRlUGlwZWxpbmUo
Y29uc3QgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwotCi0gICAgUmVmPFdlYkdQ
VUNvbW1hbmRFbmNvZGVyPiBjcmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0OwotCi0gICAgUmVm
PFdlYkdQVVF1ZXVlPiBnZXRRdWV1ZSgpIGNvbnN0OwotCi0gICAgdm9pZCBwdXNoRXJyb3JTY29w
ZShHUFVFcnJvckZpbHRlciBmaWx0ZXIpIHsgbV9lcnJvclNjb3Blcy0+cHVzaEVycm9yU2NvcGUo
ZmlsdGVyKTsgfQotICAgIHZvaWQgcG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJik7Ci0KLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotCi0gICAgdXNpbmcg
UmVmQ291bnRlZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwotCi1wcml2YXRl
OgotICAgIFdlYkdQVURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPGNvbnN0IFdl
YkdQVUFkYXB0ZXI+JiYsIFJlZjxHUFVEZXZpY2U+JiYpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQK
LSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFdlYkdQVURldmljZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoVW5jYXB0
dXJlZEVycm9yKEdQVUVycm9yJiYpOwotCi0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2Nr
OwotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotCi0gICAgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+IG1fYWRhcHRlcjsKLSAgICBSZWY8R1BV
RGV2aWNlPiBtX2RldmljZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJHUFVRdWV1ZT4gbV9xdWV1
ZTsKLQotICAgIFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWM3YjQ2ZDQ1ZDc5NjU4ZDAzMTBiYWQ0YWEzMGMzNGRlMWYzNWViMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLXR5cGVkZWYgc2VxdWVuY2U8YW55PiBHUFVNYXBwZWRCdWZmZXI7ICAvLyBbR1BVQnVmZmVy
LCBBcnJheUJ1ZmZlcl0KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVURldmljZSwKLSAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BV
RGV2aWNlIDogRXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVBZGFw
dGVyIGFkYXB0ZXI7Ci0KLSAgICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRl
c2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gR1BVTWFw
cGVkQnVmZmVyIGNyZWF0ZUJ1ZmZlck1hcHBlZChHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOwotICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVTYW1wbGVyIGNyZWF0ZVNhbXBsZXIoR1BVU2FtcGxl
ckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAgICBXZWJHUFVCaW5kR3JvdXBMYXlvdXQgY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgZGVzY3JpcHRv
cik7Ci0gICAgV2ViR1BVUGlwZWxpbmVMYXlvdXQgY3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUJpbmRHcm91
cCBjcmVhdGVCaW5kR3JvdXAoV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
LQotICAgIFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBj
cmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3Jp
cHRvcik7Ci0gICAgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShX
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0gICAgLy8gRklY
TUU6IEN1cnJlbnRseSwgR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGlzIGFuIGVtcHR5IGRp
Y3Rpb25hcnkuCi0gICAgV2ViR1BVQ29tbWFuZEVuY29kZXIgY3JlYXRlQ29tbWFuZEVuY29kZXIo
LypHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IgZGVzY3JpcHRvciovKTsKLQotICAgIFdlYkdQ
VVF1ZXVlIGdldFF1ZXVlKCk7Ci0KLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZC4KLSAgICAv
LyByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVRXh0ZW5zaW9ucyBleHRlbnNpb25zOwotICAgIC8v
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOwotCi0gICAgLy8gV2ViR1BV
RmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotCi0g
ICAgLy8gYXR0cmlidXRlIFdlYkdQVUxvZ0NhbGxiYWNrIG9uTG9nOwotICAgIC8vIFdlYkdQVU9i
amVjdFN0YXR1c1F1ZXJ5IGdldE9iamVjdFN0YXR1cyhTdGF0dXNhYmxlT2JqZWN0IHN0YXR1c2Fi
bGVPYmplY3QpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzkzMTEwMGRiNTQ1MTM4Nzk0NDc1NmMwZmIwMWZkODgyYTMwMWE4MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkdQVURldmljZUVycm9yU2NvcGVzLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVRXJyb3JGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdl
YkdQVURldmljZUVycm9yU2NvcGVzOjpwdXNoRXJyb3JTY29wZShXZWJHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQotewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZShm
aWx0ZXIpOwotfQotCi12b2lkIFdlYkdQVURldmljZUVycm9yU2NvcGVzOjpwb3BFcnJvclNjb3Bl
KFdlYkdQVURldmljZSYgZGV2aWNlLCBFcnJvclByb21pc2UmJiBwcm9taXNlKQotewotICAgIGRl
dmljZS5wb3BFcnJvclNjb3BlKFdURk1vdmUocHJvbWlzZSkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMGYwN2FiZTM5OGJmOWE3MzRkNDQ2YWY1ODk0NTNj
MGRiMGMxMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUVycm9yRmlsdGVyOwotCi1jbGFzcyBX
ZWJHUFVEZXZpY2VFcnJvclNjb3BlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcHVzaEVy
cm9yU2NvcGUoV2ViR1BVRGV2aWNlJiwgR1BVRXJyb3JGaWx0ZXIpOwotICAgIHN0YXRpYyB2b2lk
IHBvcEVycm9yU2NvcGUoV2ViR1BVRGV2aWNlJiwgRXJyb3JQcm9taXNlJiYpOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2NvcGVz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUVycm9yU2Nv
cGVzLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRjNjAyZmFiMGUyZGZmZTJi
NmRhNDEyNmEyOTA4NmQ1MzY2ZGE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VF
cnJvclNjb3Blcy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotdHlwZWRlZiAoR1BVT3V0T2ZN
ZW1vcnlFcnJvciBvciBHUFVWYWxpZGF0aW9uRXJyb3IpIEdQVUVycm9yOwotCi1bCi0gICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxl
bWVudGVkQnk9V2ViR1BVRGV2aWNlRXJyb3JTY29wZXMKLV0gcGFydGlhbCBpbnRlcmZhY2UgV2Vi
R1BVRGV2aWNlIHsKLSAgICB1bmRlZmluZWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIg
ZmlsdGVyKTsKLSAgICBQcm9taXNlPEdQVUVycm9yPz4gcG9wRXJyb3JTY29wZSgpOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZUV2ZW50
SGFuZGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VF
dmVudEhhbmRsZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ0MzQzMjRk
NDVjMzM1NzQwMzFmYWEyYWI4NWFlMzA2Y2MzYmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZUV2ZW50SGFuZGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBs
ZW1lbnRlZEJ5PVdlYkdQVURldmljZUV2ZW50SGFuZGxlcgotXSBwYXJ0aWFsIGludGVyZmFjZSBX
ZWJHUFVEZXZpY2UgewotICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnVuY2FwdHVyZWRlcnJvcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0
Yjc4MTMzMGM2NjQyNGI1NGFjMzgxN2JhNmRkODU4NjM5MDMzMWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotTG9jayBXZWJHUFVQaXBlbGluZTo6c19pbnN0YW5jZXNMb2NrOwotCi1IYXNoTWFwPFdlYkdQ
VVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKQot
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2Vi
R1BVRGV2aWNlKj4+IGluc3RhbmNlczsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotfQotCi1Mb2Nr
JiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpCi17Ci0gICAgcmV0dXJuIHNfaW5zdGFu
Y2VzTG9jazsKLX0KLQotV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmlj
ZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi0gICAgOiBHUFVPYmplY3RC
YXNlKG1ha2VSZWYoZXJyb3JTY29wZXMpKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoZGV2aWNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLXsKLSAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlu
c3RhbmNlc0xvY2soKSB9OwotICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywgJmRldmljZSk7
Ci0gICAgfQotfQotCi1XZWJHUFVQaXBlbGluZTo6fldlYkdQVVBpcGVsaW5lKCkKLXsKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoKnRoaXMp
OwotCi0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Ci0g
ICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3Rh
bmNlcygpLnJlbW92ZSh0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViR1BVUGlwZWxpbmU6OmNv
bnRleHREZXN0cm95ZWQoKQotewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lXZWJHUFVQaXBlbGluZSgqdGhpcyk7Ci0KLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NGNi
YzdhZmFhYjJlYTgxM2Y3ZTU2NGFiZTE5YmVhZTY0YzE3OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKLSNp
bmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotY2xhc3MgV2ViR1BV
RGV2aWNlOwotCi1jbGFzcyBXZWJHUFVQaXBlbGluZSA6IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwg
fldlYkdQVVBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSos
IFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNM
b2NrKCkpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9D
SyhzX2luc3RhbmNlc0xvY2spOwotCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0ID0gMDsKLQotICAgIHN0cnVjdCBTaGFkZXJEYXRhIHsKLSAgICAgICAgUmVmUHRy
PFdlYkdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotICAgICAgICBTdHJpbmcgZW50cnlQb2ludDsK
LSAgICB9OwotCi0gICAgdmlydHVhbCBib29sIGNsb25lU2hhZGVyTW9kdWxlcyhjb25zdCBXZWJH
UFVEZXZpY2UmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlY29tcGlsZShjb25zdCBXZWJHUFVE
ZXZpY2UmKSA9IDA7Ci0KLSAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLQotcHJv
dGVjdGVkOgotICAgIFdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQVUVycm9yU2NvcGVz
Jik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIExvY2sgc19pbnN0YW5jZXNMb2NrOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0VCR1BVUElQRUxJTkUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OldlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkgeyByZXR1cm4gcGlw
ZWxpbmUucHJlZGljYXRlOyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY4YTBiODQ1ZTQyODkwYzU5MjNjZGZkZDQ4ZTA4ZGExNTdkNzI4
ZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UgewotICAgIFJlZlB0cjxXZWJHUFVQaXBlbGluZUxheW91dD4gbGF5b3V0OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjMyYzcwNDM5ZWEx
ZTI0OGRiMDNhYmIwMTA2ZjY2Mjc0MTcxYTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKLV0gZGljdGlv
bmFyeSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBXZWJHUFVQaXBlbGluZUxh
eW91dD8gbGF5b3V0ID0gbnVsbDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwYjVkNGNiNGY5ZjE4ZmRkODg3Mzc2OTAwYmI1MTNkZThlMmIxMmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVVBpcGVsaW5l
TGF5b3V0OjpjcmVhdGUoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91dCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVQaXBlbGluZUxheW91dChXVEZNb3ZlKGxheW91
dCkpKTsKLX0KLQotV2ViR1BVUGlwZWxpbmVMYXlvdXQ6OldlYkdQVVBpcGVsaW5lTGF5b3V0KFJl
ZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlvdXQpCi0gICAgOiBtX3BpcGVsaW5lTGF5b3V0
KFdURk1vdmUobGF5b3V0KSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMzU2Zjg5ZGNkZTExYmE5NDNlYWE4NmNjOTMyMGNiZWQyNzIwOTM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYkdQVVBpcGVsaW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUGlwZWxpbmVM
YXlvdXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVBpcGVsaW5lTGF5b3V0PiBj
cmVhdGUoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmKTsKLQotICAgIEdQVVBpcGVsaW5lTGF5
b3V0KiBwaXBlbGluZUxheW91dCgpIHsgcmV0dXJuIG1fcGlwZWxpbmVMYXlvdXQuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVQaXBlbGluZUxheW91dChSZWZQdHI8R1BV
UGlwZWxpbmVMYXlvdXQ+JiYpOwotCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiBtX3Bp
cGVsaW5lTGF5b3V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2NkODQ1YzcwNmU5MWVmZGVkNGJmMjBkZDRkZDcwYjYzMDNhYTgwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwot
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVUGlwZWxp
bmVMYXlvdXQsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVBpcGVsaW5l
TGF5b3V0IHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzE4YzI4ZWIxNTQxY2NjYmI5YTBiZTgwZGU2YzQyM2NjNWMwMjg1
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
LXN0ZDo6b3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigp
IGNvbnN0Ci17Ci0gICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBncHVM
YXlvdXRzOwotICAgIGdwdUxheW91dHMucmVzZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExheW91dHMu
c2l6ZSgpKTsKLSAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxheW91dCA6IGJpbmRHcm91cExh
eW91dHMpIHsKLSAgICAgICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+YmluZEdyb3VwTGF5b3V0
KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KCk6IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZ3B1TGF5b3V0
cy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkpOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsgV1RG
TW92ZShncHVMYXlvdXRzKSB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODM0Yzc5NTRmMzc3YWEyYTc5Mjc3YmQ1NGEwOTY3YTk3MjY5
MzQ2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlv
dXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYkdQ
VUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZmU1NTJhOGRhYzI0
ZDRkYzEyODI5MGRiMGNhNTNlMTU3OWMwZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rp
b25hcnkgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1
ZW5jZTxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGJpbmRHcm91cExheW91dHM7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzQz
Y2E3MTQ5M2I5MDY3M2Q4NDdiYjVlZTdiNDNkOTUxNGI1NTZlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci12b2lkIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBp
ZiAoIXBhc3NFbmNvZGVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIHBhc3NFbmNvZGVyKCktPmVuZFBhc3MoKTsKLX0KLQotdm9pZCBX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVuc2lnbmVkIGluZGV4
LCBXZWJHUFVCaW5kR3JvdXAmIGJpbmRHcm91cCkKLXsKLSAgICBpZiAoIXBhc3NFbmNvZGVyKCkp
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYmluZCBncm91cHMgc3VwcG9ydGVkIGluIFdlYiBH
UFUuCi0gICAgaWYgKGluZGV4ID49IDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWJpbmRHcm91cC5iaW5kR3JvdXAoKSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRH
cm91cCgpOiBJbnZhbGlkIFdlYkdQVUJpbmRHcm91cCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAvLyBGSVhNRTogQW55IHZhbGlkYXRpb24gKGUuZy4gaW5kZXggZHVwbGljYXRlcywg
bm90IGluIHBpcGVsaW5lIGxheW91dCkuCi0gICAgcGFzc0VuY29kZXIoKS0+c2V0QmluZEdyb3Vw
KGluZGV4LCAqYmluZEdyb3VwLmJpbmRHcm91cCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjVmNTBhNDMyMzNiMjYxNTlkNTU3NzZm
NjAwMzY4MDMxZDFlYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcjsKLWNsYXNzIFdlYkdQVUJpbmRHcm91cDsKLQotY2xhc3MgV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcj4gewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCBlbmRQYXNzKCk7Ci0gICAgdm9pZCBz
ZXRCaW5kR3JvdXAodW5zaWduZWQsIFdlYkdQVUJpbmRHcm91cCYpOwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0
dWFsIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpID0gMDsKLSAgICB2
aXJ0dWFsIGNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGNv
bnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhjOTg3NWJjNDA4MjY2N2Y5NWJjOWQ4YWEyN2FkZDk4MmE5NjBhNDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci0KLVsKLSAgICBD
b25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW50
ZXJmYWNlTmFtZT1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciwKLSAgICBTa2lwVlRhYmxlVmFs
aWRhdGlvbiwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIgewotICAgIHVuZGVmaW5lZCBlbmRQYXNzKCk7Ci0gICAgdW5kZWZpbmVk
IHNldEJpbmRHcm91cCh1MzIgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCBiaW5kR3JvdXAvKiwgb3B0
aW9uYWwgc2VxdWVuY2U8dTMyPiBkeW5hbWljT2Zmc2V0cyovKTsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZh
NGY3ZmJlOWNiMzBjY2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I+IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcjo6dHJ5
Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1vZHVsZSB8fCAhbW9kdWxlLT5tb2R1bGUoKSB8fCBlbnRyeVBvaW50LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IgeyBtYWtlUmVmKCptb2R1bGUtPm1vZHVsZSgpKSwgKnRoaXMgfTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYxYjY5MDI0NjcwNjBiNTZmY2IzYjQxYWJkYjgwYjAyOWRjOTY5MmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BV
U2hhZGVyTW9kdWxlPiBtb2R1bGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOGVkNWQzMjM3ZWNlZmM4YzkzMTkx
MTMzYWMyYTBkZDgyZTQ4N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBXZWJHUFVTaGFkZXJNb2R1
bGUgbW9kdWxlOwotICAgIHJlcXVpcmVkIERPTVN0cmluZyBlbnRyeVBvaW50OwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTNhY2E3YjJkMGQxNWM2ZjEyZjBjMTk2NWYyYzNjNDQ0NmI2YzNh
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkdQVVF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29t
bWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVVF1ZXVlLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8V2ViR1BVUXVldWU+IFdlYkdQVVF1ZXVlOjpjcmVhdGUoUmVmUHRyPEdQVVF1ZXVl
PiYmIHF1ZXVlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVF1ZXVlKFdURk1v
dmUocXVldWUpKSk7Ci19Ci0KLVdlYkdQVVF1ZXVlOjpXZWJHUFVRdWV1ZShSZWZQdHI8R1BVUXVl
dWU+JiYgcXVldWUpCi0gICAgOiBtX3F1ZXVlKFdURk1vdmUocXVldWUpKQotewotfQotCi12b2lk
IFdlYkdQVVF1ZXVlOjpzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVm
ZmVyPj4mIGJ1ZmZlcnMpCi17Ci0gICAgaWYgKCFtX3F1ZXVlKSB7Ci0gICAgICAgIExPRyhXZWJH
UFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIFZlY3RvcjxSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4+IGdwdUJ1ZmZl
cnM7Ci0gICAgZ3B1QnVmZmVycy5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVycy5zaXplKCkpOwotICAg
IAotICAgIGZvciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoIWJ1ZmZl
ciB8fCAhYnVmZmVyLT5jb21tYW5kQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQgR1BVQ29tbWFuZEJ1ZmZlciBpbiBsaXN0ISIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGdwdUJ1ZmZlcnMudW5j
aGVja2VkQXBwZW5kKG1ha2VSZWYoKmJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpKSk7Ci0gICAgfQot
Ci0gICAgbV9xdWV1ZS0+c3VibWl0KFdURk1vdmUoZ3B1QnVmZmVycykpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDg5ODkyMjdlNDBiODI5ZTE3MDE0ZjlmOGMzZGM0ODQ3MWY1MzM4NTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVRdWV1ZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJHUFVDb21t
YW5kQnVmZmVyOwotCi1jbGFzcyBXZWJHUFVRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQ
VVF1ZXVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVRdWV1ZT4gY3JlYXRlKFJl
ZlB0cjxHUFVRdWV1ZT4mJik7Ci0KLSAgICB2b2lkIHN1Ym1pdChjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWV1ZS0+bGFiZWwoKTsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5n
JiBsYWJlbCkgeyBtX3F1ZXVlLT5zZXRMYWJlbChsYWJlbCk7IH0KLQotcHJpdmF0ZToKLSAgICBX
ZWJHUFVRdWV1ZShSZWZQdHI8R1BVUXVldWU+JiYpOwotCi0gICAgUmVmUHRyPEdQVVF1ZXVlPiBt
X3F1ZXVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVF1ZXVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM1NWNlYTk2NTkxZTQyNmRmOTM4Zjk2
MjQ2YTE0OTg3MGIzNjViZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAg
IEludGVyZmFjZU5hbWU9R1BVUXVldWUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNl
IFdlYkdQVVF1ZXVlIHsKLSAgICB1bmRlZmluZWQgc3VibWl0KHNlcXVlbmNlPFdlYkdQVUNvbW1h
bmRCdWZmZXI+IGJ1ZmZlcnMpOwotCi0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQuCi0gICAg
Ly8gdW5kZWZpbmVkIHNpZ25hbChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHNpZ25hbFZhbHVlKTsK
LSAgICAvLyB1bmRlZmluZWQgd2FpdChXZWJHUFVGZW5jZSBmZW5jZSwgdTY0IHZhbHVlVG9XYWl0
KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhhOGI0NzgyYzdlNzM1YWFjNDFiMzE3ZDQwMzMwYTczMmUzMzRlODUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8R1BV
VGV4dHVyZT4mJiB0ZXh0dXJlLCBjb25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UmIGJhc2UpCi0gICAgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UoYmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKLXsK
LX0KLQotR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+
JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yQmFzZSYgYmFzZSkKLSAgICA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvckJhc2UoYmFzZSkKLSAgICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJl
KSkKLXsKLX0KLQotc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogSW1wcm92ZSBlcnJvciBjaGVja2luZyBhcyBXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciBpcyBhZGRlZCB0byBzcGVjLgotICAgIGlmIChjb2xvckF0dGFj
aG1lbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I6IE5vIGNvbG9yIGF0dGFjaG1lbnRzIHNwZWNpZmllZCBmb3IgR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0g
ICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVDb2xv
ckF0dGFjaG1lbnRzOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBj
b2xvckF0dGFjaG1lbnRzKSB7Ci0gICAgICAgIGlmICghY29sb3JBdHRhY2htZW50LmF0dGFjaG1l
bnQKLSAgICAgICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgp
Ci0gICAgICAgICAgICB8fCAhY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+
aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgfQotICAgICAgICBncHVDb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmNvbG9yQXR0YWNobWVu
dC5hdHRhY2htZW50LT50ZXh0dXJlKCkpLCBjb2xvckF0dGFjaG1lbnQgfSk7Ci0gICAgfQotCi0g
ICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I+IGdwdURlcHRoQXR0YWNobWVudDsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50KSB7Ci0gICAgICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudAot
ICAgICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1
cmUoKQotICAgICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQt
PnRleHR1cmUoKS0+aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJH
UFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZ3B1RGVwdGhBdHRhY2ht
ZW50ID0gR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFr
ZVJlZigqZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpKSwgKmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgeyBXVEZNb3ZlKGdwdUNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGdwdURl
cHRoQXR0YWNobWVudCkgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2NWY5NGE0Y2ZmMGQwZTM2NjMxMTc1ODUwZDc3NzZiYWQ4MTc2YzlmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOwotCi1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJh
c2UgewotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gYXR0YWNobWVudDsKLX07Ci0KLXN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgOiBH
UFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlIHsKLSAgICBS
ZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1Y3QgV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAg
ICBWZWN0b3I8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9y
QXR0YWNobWVudHM7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzgzMjQ4MmU1
YTEzMGVkM2Q1MzVmZDJkYjdkZjVlZjAzZTZlYjI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIElt
cGxlbWVudGVkQXM9V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IKLV0g
ZGljdGlvbmFyeSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7Ci0gICAg
cmVxdWlyZWQgV2ViR1BVVGV4dHVyZVZpZXcgYXR0YWNobWVudDsKLSAgICAvLyBHUFVUZXh0dXJl
Vmlldz8gcmVzb2x2ZVRhcmdldDsKLQotICAgIHJlcXVpcmVkIEdQVUxvYWRPcCBsb2FkT3A7Ci0g
ICAgcmVxdWlyZWQgR1BVU3RvcmVPcCBzdG9yZU9wOwotICAgIEdQVUNvbG9yIGNsZWFyQ29sb3I7
IC8vIHtyOiAwLjAsIGc6IDAuMCwgYjogMC4wLCBhOiAxLjB9Ci19OwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVu
dGVkQXM9V2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yCi1d
IGRpY3Rpb25hcnkgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9y
IHsKLSAgICByZXF1aXJlZCBXZWJHUFVUZXh0dXJlVmlldyBhdHRhY2htZW50OwotCi0gICAgcmVx
dWlyZWQgR1BVTG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIHJlcXVpcmVkIEdQVVN0b3JlT3AgZGVw
dGhTdG9yZU9wOwotICAgIHJlcXVpcmVkIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLS8qIE5vdCB5ZXQg
aW1wbGVtZW50ZWQKLSAgICBHUFVMb2FkT3Agc3RlbmNpbExvYWRPcDsKLSAgICBHUFVTdG9yZU9w
IHN0ZW5jaWxTdG9yZU9wOwotICAgIHUzMiBjbGVhclN0ZW5jaWw7Ci0qLwotfTsKLQotWwotICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQotXSBkaWN0
aW9uYXJ5IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICByZXF1aXJlZCBzZXF1ZW5j
ZTxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50
czsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I/IGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJmN2EwZDQwZmZhZmM0YWI0NDJiMWI0MzU5ODZhZTJl
MjRjOWU0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5jbHVkZSAiR1BVTGltaXRz
LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJH
UFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJX
ZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5j
b2RlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cihXVEZNb3ZlKGVuY29kZXIpKSk7Ci19Ci0KLVdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJH
UFVSZW5kZXJQYXNzRW5jb2RlcihSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2Rl
cikKLSAgICA6IG1fcGFzc0VuY29kZXIgeyBXVEZNb3ZlKGVuY29kZXIpIH0KLXsKLX0KLQotdm9p
ZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVy
UGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIGlmICghbV9wYXNzRW5jb2RlcikgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFs
aWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghcGlwZWxp
bmUucmVuZGVyUGlwZWxpbmUoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFz
c0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgcGlwZWxpbmUhIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUobWFrZVJlZigqcGlw
ZWxpbmUucmVuZGVyUGlwZWxpbmUoKSkpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRCbGVuZENvbG9yKGNvbnN0IEdQVUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1f
cGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRCbGVuZENvbG9yKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIG1fcGFzc0VuY29kZXItPnNldEJsZW5kQ29sb3IoY29sb3IpOwotfQotCi12
b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVw
dGgpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoKTogSW52YWxpZCBvcGVyYXRpb24hIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9wYXNzRW5jb2Rlci0+c2V0Vmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKLX0KLQotdm9pZCBXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QodW5zaWduZWQgeCwgdW5zaWduZWQg
eSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fcGFzc0Vu
Y29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRT
Y2lzc29yUmVjdCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdCgpOiBXaWR0aCBvciBoZWlnaHQgbXVz
dCBiZSBncmVhdGVyIHRoYW4gMCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Bh
c3NFbmNvZGVyLT5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotdm9p
ZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiBi
dWZmZXIsIHVpbnQ2NF90IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
IWJ1ZmZlci5idWZmZXIoKSB8fCAhYnVmZmVyLmJ1ZmZlcigpLT5pc0luZGV4KCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJ
bnZhbGlkIEdQVUJ1ZmZlciEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFz
c0VuY29kZXItPnNldEluZGV4QnVmZmVyKCpidWZmZXIuYnVmZmVyKCksIG9mZnNldCk7Ci19Ci0K
LXZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQg
c3RhcnRTbG90LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiBidWZmZXJzLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKQotewotI2lmICFMT0dfRElTQUJMRUQKLSAg
ICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGFzc0VuY29kZXI6
OnNldFZlcnRleEJ1ZmZlcnMoKSI7Ci0jZW5kaWYKLSAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9wZXJhdGlvbiEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChidWZmZXJzLmlzRW1wdHkoKSB8
fCBidWZmZXJzLnNpemUoKSAhPSBvZmZzZXRzLnNpemUoKSkgewotICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IEludmFsaWQgbnVtYmVyIG9mIGJ1ZmZlcnMgb3Igb2Zmc2V0cyEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGFydFNsb3QgKyBidWZmZXJz
LnNpemUoKSA+IG1heFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJ
bnZhbGlkIHN0YXJ0U2xvdCAldSBmb3IgJWx1IGJ1ZmZlcnMhIiwgZnVuY3Rpb25OYW1lLCBzdGFy
dFNsb3QsIGJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZl
Y3RvcjxSZWY8R1BVQnVmZmVyPj4gZ3B1QnVmZmVyczsKLSAgICBncHVCdWZmZXJzLnJlc2VydmVD
YXBhY2l0eShidWZmZXJzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZl
cnMpIHsKLSAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKLSAgICAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBvciBkZXN0cm95ZWQgYnVmZmVyIGluIGxp
c3QhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghYnVmZmVyLT5idWZmZXIoKS0+aXNWZXJ0ZXgoKSkgewotICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggVkVSVEVYIHVzYWdl
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBncHVCdWZmZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpidWZmZXItPmJ1ZmZlcigp
KSk7Ci0gICAgfQotCi0gICAgbV9wYXNzRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVycyhzdGFydFNs
b3QsIGdwdUJ1ZmZlcnMsIG9mZnNldHMpOwotfQotCi12b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpkcmF3KHVuc2lnbmVkIHZlcnRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1
bnNpZ25lZCBmaXJzdFZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBpZiAo
IW1fcGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIC8vIEZJWE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRhdGlvbiBkbyB3ZSBuZWVkIHRvIGhh
bmRsZSBoZXJlPwotICAgIG1fcGFzc0VuY29kZXItPmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNl
Q291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotdm9pZCBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQg
aW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2ln
bmVkIGZpcnN0SW5zdGFuY2UpCi17Ci0gICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJh
dGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBH
UFUgdmFsaWRhdGlvbi4KLSAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3SW5kZXhlZChpbmRleENvdW50
LCBpbnN0YW5jZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsK
LX0KLQotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpwYXNzRW5jb2RlcigpCi17Ci0gICAgcmV0dXJuIG1fcGFzc0VuY29kZXIuZ2V0KCk7Ci19Ci0K
LWNvbnN0IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6cGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YzAyYWJhNzhh
ZWM4YWUyYWYxNjdiMjUwYzU5MWRkMTk0ODMxOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRW5jb2RlcjsK
LWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwotCi1zdHJ1
Y3QgR1BVQ29sb3I7Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiYmKTsKLQotICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUmKTsKLSAgICB2b2lkIHNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImKTsKLSAgICB2
b2lkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0gICAgdm9pZCBzZXRTY2lzc29y
UmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KTsKLSAgICB2b2lkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVpbnQ2NF90IG9m
ZnNldCk7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIHN0YXJ0U2xvdCwgY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IG9mZnNldHMpOwotICAgIHZvaWQgZHJhdyh1bnNpZ25lZCB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQg
aW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGZpcnN0SW5zdGFu
Y2UpOwotICAgIHZvaWQgZHJhd0luZGV4ZWQodW5zaWduZWQgaW5kZXhDb3VudCwgdW5zaWduZWQg
aW5zdGFuY2VDb3VudCwgdW5zaWduZWQgZmlyc3RJbmRleCwgaW50IGJhc2VWZXJ0ZXgsIHVuc2ln
bmVkIGZpcnN0SW5zdGFuY2UpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyKFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7Ci0KLSAgICBHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBmaW5hbDsKLSAgICBjb25zdCBHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlZlB0
cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNmY5Y2I1YzJlM2Q1NWM5ZDE2M2NiNzgz
NTZlZTJhYTliNDlkYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLXR5cGVkZWYgbG9uZyBpMzI7Ci10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAot
ICAgIEludGVyZmFjZU5hbWU9R1BVUmVuZGVyUGFzc0VuY29kZXIsCi0gICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyIDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIHVuZGVmaW5l
ZCBzZXRQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSk7Ci0gICAgdW5kZWZp
bmVkIHNldEJsZW5kQ29sb3IoR1BVQ29sb3IgY29sb3IpOwotCi0gICAgLy8gVGhlIGRlZmF1bHQg
dmlld3BvcnQgaXMgKDAuMCwgMC4wLCB3LCBoLCAwLjAsIDEuMCksIHdoZXJlIHcgYW5kIGggYXJl
IHRoZSBkaW1lbnNpb25zIG9mIGJhY2sgYnVmZmVyCi0gICAgdW5kZWZpbmVkIHNldFZpZXdwb3J0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRl
cHRoLCBmbG9hdCBtYXhEZXB0aCk7Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBzY2lzc29yIHJlY3Rh
bmdsZSBpcyAoMCwgMCwgdywgaCksIHdoZXJlIHcgYW5kIGggYXJlIHRoZSBkaW1lbnNpb25zIG9m
IGJhY2sgYnVmZmVyLgotICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRo
YW4gMC4gT3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KLSAgICB1bmRlZmlu
ZWQgc2V0U2Npc3NvclJlY3QodTMyIHgsIHUzMiB5LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwot
Ci0gICAgdW5kZWZpbmVkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHU2NCBv
ZmZzZXQpOwotICAgIHVuZGVmaW5lZCBzZXRWZXJ0ZXhCdWZmZXJzKHUzMiBzdGFydFNsb3QsIHNl
cXVlbmNlPFdlYkdQVUJ1ZmZlcj4gYnVmZmVycywgc2VxdWVuY2U8dTY0PiBvZmZzZXRzKTsKLQot
ICAgIHVuZGVmaW5lZCBkcmF3KHUzMiB2ZXJ0ZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUz
MiBmaXJzdFZlcnRleCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotICAgIHVuZGVmaW5lZCBkcmF3SW5k
ZXhlZCh1MzIgaW5kZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdEluZGV4LCBp
MzIgYmFzZVZlcnRleCwgdTMyIGZpcnN0SW5zdGFuY2UpOwotCi0vKiBOb3QgWWV0IEltcGxlbWVu
dGVkCi0gICAgdW5kZWZpbmVkIHNldFN0ZW5jaWxSZWZlcmVuY2UodTMyIHJlZmVyZW5jZSk7Ci0q
LwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YzZiZmEw
YTIwNDU0YTE3YjYyNjczMDZmOWI1Nzk5ZDA0NzdhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVs
aW5lLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRXJyb3JTY29wZXMu
aCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVk
ZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1v
ZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoV2Vi
R1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwg
R1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYm
IHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRl
cikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShkZXZp
Y2UsIFdURk1vdmUocGlwZWxpbmUpLCBlcnJvclNjb3BlcywgV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIp
LCBXVEZNb3ZlKGZyYWdtZW50U2hhZGVyKSkpOwotfQotCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6
V2ViR1BVUmVuZGVyUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIFJlZlB0cjxHUFVSZW5k
ZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzLCBXZWJH
UFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNo
YWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcikKLSAgICA6IFdlYkdQVVBpcGVsaW5lKGRldmljZSwg
ZXJyb3JTY29wZXMpCi0gICAgLCBtX3JlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQot
ICAgICwgbV92ZXJ0ZXhTaGFkZXIoV1RGTW92ZSh2ZXJ0ZXhTaGFkZXIpKQotICAgICwgbV9mcmFn
bWVudFNoYWRlcihXVEZNb3ZlKGZyYWdtZW50U2hhZGVyKSkKLXsKLX0KLQotV2ViR1BVUmVuZGVy
UGlwZWxpbmU6On5XZWJHUFVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBXZWJH
UFVSZW5kZXJQaXBlbGluZTo6Y2xvbmVTaGFkZXJNb2R1bGVzKGNvbnN0IFdlYkdQVURldmljZSYg
ZGV2aWNlKQotewotICAgIGlmIChtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKLSAgICAgICAgYm9v
bCBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9k
dWxlID09IG1fdmVydGV4U2hhZGVyLm1vZHVsZTsKLQotICAgICAgICBjb25zdCBhdXRvJiB2ZXJ0
ZXhTb3VyY2UgPSBtX3ZlcnRleFNoYWRlci5tb2R1bGUtPnNvdXJjZSgpOwotICAgICAgICBtX3Zl
cnRleFNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShHUFVTaGFkZXJN
b2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgdmVydGV4U291cmNlIH0pLCB2ZXJ0
ZXhTb3VyY2UpOwotCi0gICAgICAgIGlmIChtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewotICAg
ICAgICAgICAgaWYgKHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyTW9kdWxlKQotICAgICAgICAg
ICAgICAgIG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlID0gbV92ZXJ0ZXhTaGFkZXIubW9kdWxlOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgZnJhZ21lbnRT
b3VyY2UgPSBtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZS0+c291cmNlKCk7Ci0gICAgICAgICAgICAg
ICAgbV9mcmFnbWVudFNoYWRlci5tb2R1bGUgPSBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShH
UFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZShkZXZpY2UuZGV2aWNlKCksIHsgZnJhZ21lbnRTb3Vy
Y2UgfSksIGZyYWdtZW50U291cmNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkK
LXsKLSAgICBpZiAobV9yZW5kZXJQaXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsK
LSAgICAgICAgaWYgKGF1dG8qIGdwdVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4U2hhZGVy
Lm1vZHVsZS0+bW9kdWxlKCkpIHsKLSAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciB2ZXJ0ZXhTdGFnZShtYWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUpLCB7IG1f
dmVydGV4U2hhZGVyLmVudHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLSAgICAgICAgICAg
IGlmIChtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBncHVGcmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5tb2R1
bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNoYWRlck1vZHVsZSksIHsgbV9m
cmFnbWVudFNoYWRlci5lbnRyeVBvaW50IH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUtPnJlY29tcGlsZShkZXZpY2UuZGV2aWNlKCksIFdURk1v
dmUodmVydGV4U3RhZ2UpLCBXVEZNb3ZlKGZyYWdtZW50U3RhZ2UpKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjQ2MGIxMzc5M2ZjYmQyNTM0NTdjNDI4MTFjODJkOTJjZDUxMjJmOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVQaXBlbGluZTsKLWNsYXNzIEdQVVJlbmRl
clBpcGVsaW5lOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1j
bGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7Ci0KLWNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIGZp
bmFsIDogcHVibGljIFdlYkdQVVBpcGVsaW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJH
UFVSZW5kZXJQaXBlbGluZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gY3JlYXRlKFdlYkdQVURldmljZSYsIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiwgR1BV
RXJyb3JTY29wZXMmLCBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwg
V2ViR1BVUGlwZWxpbmU6OlNoYWRlckRhdGEmJiBmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBib29s
IGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiByZW5kZXJQaXBlbGluZSgpOyB9Ci0gICAgY29uc3QgR1BV
UmVuZGVyUGlwZWxpbmUqIHJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQ
aXBlbGluZS5nZXQoKTsgfQotICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IHZlcnRleFNo
YWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyLm1vZHVsZTsgfQotICAgIFJlZlB0
cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFnbWVudFNoYWRlci5tb2R1bGU7IH0KLQotICAgIGJvb2wgY2xvbmVTaGFkZXJNb2R1bGVzKGNv
bnN0IFdlYkdQVURldmljZSYpOwotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IFdlYkdQVURldmlj
ZSYpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lKFdlYkdQVURldmljZSYs
IFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiwgR1BVRXJyb3JTY29wZXMmLCBXZWJHUFVQaXBl
bGluZTo6U2hhZGVyRGF0YSYmIHZlcnRleFNoYWRlciwgV2ViR1BVUGlwZWxpbmU6OlNoYWRlckRh
dGEmJiBmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IG1f
cmVuZGVyUGlwZWxpbmU7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdlYiBJbnNwZWN0b3IgcmVj
b21waWxhdGlvbi4KLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX3ZlcnRleFNoYWRl
cjsKLSAgICBXZWJHUFVQaXBlbGluZTo6U2hhZGVyRGF0YSBtX2ZyYWdtZW50U2hhZGVyOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQkdQ
VVBJUEVMSU5FKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lLCBpc1JlbmRlclBpcGVsaW5l
KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkN2Y4MmMyZDI4Yzc1YzU0NzY4MjQ4NWFhYjBmZmZhN2YxYTk4YjBj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVLAotICAgIEludGVyZmFjZU5hbWU9R1BVUmVuZGVyUGlwZWxpbmUsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjZiY2RiOWRmOTBjODQ1OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgYXV0byBwaXBlbGlu
ZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6
IG51bGxwdHI7Ci0KLSAgICBhdXRvIHZlcnRleCA9IHZlcnRleFN0YWdlLnRyeUNyZWF0ZUdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwotCi0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50OwotICAgIGlmIChmcmFnbWVudFN0YWdl
KQotICAgICAgICBmcmFnbWVudCA9IGZyYWdtZW50U3RhZ2UtPnRyeUNyZWF0ZUdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvcigpOwotCi0gICAgaWYgKCF2ZXJ0ZXggfHwgKGZyYWdtZW50U3Rh
Z2UgJiYgIWZyYWdtZW50KSkgewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIkludmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZWIgR1BVIHZh
bGlkYXRpb24sIGUuZy4gZmFpbCBpZiBjb2xvclN0YXRlcyBpcyBsYXJnZXIgdGhhbiAobWF4IG51
bWJlciBvZiBzdXBwb3J0ZWQgY29sb3Igc3RhdGVzKS4KLQotICAgIHJldHVybiBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0KSwgV1RGTW92ZSgqdmVy
dGV4KSwgV1RGTW92ZShmcmFnbWVudCksICp0aGlzIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjYwZDJlYmU2OTM5NWUzNTFmMWE5
ZDhjNTAwNjM0ODQ2OGJiMGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotc3Ry
dWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IoR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLQotICAgIFdlYkdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQw
ZDk0NmZlZmY5ZTU1Y2IwZDcwYWQ2NzI4NzI5N2E5OWQwNzFlZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
Ci0KLVsKLSAgICBJbXBsZW1lbnRlZEFzPUdQVVByaW1pdGl2ZVRvcG9sb2d5Ci1dIGVudW0gR1BV
UHJpbWl0aXZlVG9wb2xvZ3kgewotICAgICJwb2ludC1saXN0IiwKLSAgICAibGluZS1saXN0IiwK
LSAgICAibGluZS1zdHJpcCIsCi0gICAgInRyaWFuZ2xlLWxpc3QiLAotICAgICJ0cmlhbmdsZS1z
dHJpcCIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0gZGljdGlvbmFyeSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
OiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJlZCBXZWJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yPyBmcmFnbWVudFN0YWdlID0gbnVsbDsKLQotICAgIHJlcXVpcmVk
IEdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OwotICAgIHJlcXVpcmVkIHNl
cXVlbmNlPEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yPiBjb2xvclN0YXRlczsKLSAgICBHUFVEZXB0
aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3I/IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICBy
ZXF1aXJlZCBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IgdmVydGV4SW5wdXQ7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1MjBlNjNhMWEwMDU0OTA5N2U0MDFhZWViOGI0MzJkNWQx
MjYwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTYW1wbGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2ViR1BVU2FtcGxlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWY8V2ViR1BVU2FtcGxlcj4gV2ViR1BVU2FtcGxlcjo6Y3JlYXRlKFJl
ZlB0cjxHUFVTYW1wbGVyPiYmIHNhbXBsZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVU2FtcGxlcihXVEZNb3ZlKHNhbXBsZXIpKSk7Ci19Ci0KLVdlYkdQVVNhbXBsZXI6Oldl
YkdQVVNhbXBsZXIoUmVmUHRyPEdQVVNhbXBsZXI+JiYgc2FtcGxlcikKLSAgICA6IG1fc2FtcGxl
cihXVEZNb3ZlKHNhbXBsZXIpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2FtcGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDI0OTY2YzY5
N2E1NjU1OGM2NjM0Y2JjNGNmMzdmM2QyNWVhMDRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNhbXBsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTYW1wbGVy
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVU2FtcGxlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkdQVVNhbXBsZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQ
VVNhbXBsZXI+IGNyZWF0ZShSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBjb25zdCBHUFVT
YW1wbGVyKiBzYW1wbGVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViR1BVU2FtcGxlcihSZWZQdHI8R1BVU2FtcGxlcj4mJik7Ci0KLSAgICBS
ZWZQdHI8R1BVU2FtcGxlcj4gbV9zYW1wbGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNhbXBsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY2M2FhYzI2OWExNThlYjU4N2JhZjVkNDE0ZDBmMmUyMWZiNDJlNWMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2FtcGxlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVSwKLSAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9R1BVU2FtcGxlciwKLSAg
ICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BVU2FtcGxlciB7Ci19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMTQ1NDVkZDNmNDZjZTg2MjA4ZjNkNTQ2
YWZmNzE0NDI3MzNjOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdU
Rk1vdmUobW9kdWxlKSwgc291cmNlKSk7Ci19Ci0KLVdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BV
U2hhZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSkKLSAgICA6IG1fbW9kdWxlKFdURk1vdmUobW9kdWxlKSkKLSAgICAsIG1fc291
cmNlKHNvdXJjZSkKLXsKLX0KLQotdm9pZCBXZWJHUFVTaGFkZXJNb2R1bGU6OnVwZGF0ZShjb25z
dCBXZWJHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgbV9z
b3VyY2UgPSBzb3VyY2U7Ci0gICAgbV9tb2R1bGUgPSBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0
ZShkZXZpY2UuZGV2aWNlKCksIHsgbV9zb3VyY2UgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4NzBiYjhkMmY2MzY0YzI0ZTFkYTVkY2I0NTUwNTAxYTRmMmQwMTY5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgV2ViR1BVRGV2aWNlOwotCi1jbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1
bGU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlKTsKLQotICAgIEdQVVNoYWRlck1vZHVsZSogbW9k
dWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBTdHJpbmcm
IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZShj
b25zdCBXZWJHUFVEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7Ci0KLXByaXZhdGU6Ci0g
ICAgV2ViR1BVU2hhZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYsIGNvbnN0IFN0
cmluZyYgc291cmNlKTsKLQotICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IG1fbW9kdWxlOwot
Ci0gICAgLy8gUHJlc2VydmVkIGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAg
U3RyaW5nIG1fc291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA1ZDc3ZjA3OWUzMjlkNjVkMzg0NGY4YmVmNTNkODMwNWE1NGI4OTguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSW50ZXJmYWNlTmFtZT1HUFVTaGFkZXJN
b2R1bGUsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVNoYWRlck1vZHVs
ZSB7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhZjMyYTk4OWVkNWM1MDZkZjNhN2RjYjA5MzU1Y2U1MjY4NGMzMDhmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7Ci0gICAgU3Ry
aW5nIGNvZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDBhN2E5ZDRjOGRhNDUzNzY2MDBmOWJhMGJmNmZlMmNhMTZkNDc2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ciB7Ci0gICAgcmVxdWlyZWQgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBjb2RlOyAvLyBGSVhN
RTogRE9NU3RyaW5nIGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzYyNTlkN2Y2ZTEzYmQ2MjYwNjIwODA3N2FlYzk3ZTQzM2UwMjM5
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJHUFVTd2FwQ2hhaW4uaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVTd2FwQ2hhaW4+IFdlYkdQVVN3YXBDaGFp
bjo6Y3JlYXRlKFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVVN3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpKTsKLX0K
LQotV2ViR1BVU3dhcENoYWluOjpXZWJHUFVTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4m
JiBzd2FwQ2hhaW4pCi0gICAgOiBtX3N3YXBDaGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpCi17Ci19
Ci0KLVJlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJl
KCkKLXsKLSAgICBpZiAoIW1fc3dhcENoYWluKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVT
d2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAg
ICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG51bGxwdHIpOwotICAgIH0KLSAgICBt
X2N1cnJlbnRUZXh0dXJlID0gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG1fc3dhcENoYWluLT50cnlH
ZXRDdXJyZW50VGV4dHVyZSgpKTsKLSAgICByZXR1cm4gbWFrZVJlZigqbV9jdXJyZW50VGV4dHVy
ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVU3dhcENoYWluOjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1f
c3dhcENoYWluKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N3YXBDaGFpbi0+ZGVzdHJveSgp
OwotICAgIG1fc3dhcENoYWluID0gbnVsbHB0cjsKLQotICAgIGlmIChtX2N1cnJlbnRUZXh0dXJl
ICYmIG1fY3VycmVudFRleHR1cmUtPnRleHR1cmUoKSkKLSAgICAgICAgbV9jdXJyZW50VGV4dHVy
ZS0+ZGVzdHJveSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
d2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhhMWUwZGY2NDgwNGYx
MTE5ZjMxNWUzMGUxYTA2MTA4YzM0MjdiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW4u
aCIKLSNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWNsYXNzIFdlYkdQVVN3YXBDaGFpbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVN3YXBDaGFpbj4gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViR1BVU3dhcENoYWluPiBjcmVhdGUoUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7Ci0K
LSAgICBHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgp
OyB9Ci0KLSAgICBSZWY8V2ViR1BVVGV4dHVyZT4gZ2V0Q3VycmVudFRleHR1cmUoKTsKLQotICAg
IHZvaWQgZGVzdHJveSgpOwotCi1wcml2YXRlOgotICAgIFdlYkdQVVN3YXBDaGFpbihSZWZQdHI8
R1BVU3dhcENoYWluPiYmKTsKLQotICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWlu
OwotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBtX2N1cnJlbnRUZXh0dXJlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDMyY2YzYTRlNDUwNGM4YmExZmFmZDlhY2FiNmRkYmIx
ZTJmZDBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYkdQVSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVN3YXBDaGFpbiwKLSAgICBTa2lw
VlRhYmxlVmFsaWRhdGlvbiwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgV2ViR1BV
U3dhcENoYWluIHsKLSAgICBXZWJHUFVUZXh0dXJlIGdldEN1cnJlbnRUZXh0dXJlKCk7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzNGZj
ZDMzMzczOTk1ZjZhOThkNDc5YWY0MDJmN2NkOTdiMDY1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6Om9wdGlvbmFsPEdQVVN3YXBD
aGFpbkRlc2NyaXB0b3I+IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I6OmFzR1BVU3dhcENoYWlu
RGVzY3JpcHRvcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXZpY2UpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNhbnZhc0NvbnRleHQ6OmNvbmZpZ3VyZVN3YXBDaGFpbigpOiBJbnZhbGlkIEdQ
VURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgeyBtYWtlUmVmKGRldmljZS0+ZGV2aWNl
KCkpLCAqdGhpcyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMGY4NzRkNmY3MDAwMDM5NTlkYjU4OTExOWI0ZGIwMDJlOWMzMjEyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIDogR1BVU3dhcENoYWluRGVz
Y3JpcHRvckJhc2UgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVU3dhcENoYWluRGVzY3JpcHRvcj4g
YXNHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVRGV2
aWNlPiBkZXZpY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkYTA2MDEyMzFlN2U4
ZjU4Mzk0YzdjNDIzOTUxODRlYjdhMzdjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0
dXJlPiYmIHRleHR1cmUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVy
ZShXVEZNb3ZlKHRleHR1cmUpKSk7Ci19Ci0KLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKLSAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRl
eHR1cmUpKQotewotfQotCi1SZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNy
ZWF0ZURlZmF1bHRWaWV3KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKTogSW52YWxpZCBvcGVyYXRp
b24hIik7Ci0gICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKG51bGxwdHIp
OwotICAgIH0KLQotICAgIGF1dG8gdmlldyA9IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUobV90
ZXh0dXJlLT50cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKSk7Ci0gICAgbV90ZXh0dXJlVmll
d3MuYXBwZW5kKHZpZXcuY29weVJlZigpKTsKLSAgICByZXR1cm4gdmlldzsKLX0KLQotdm9pZCBX
ZWJHUFVUZXh0dXJlOjpkZXN0cm95KCkKLXsKLSAgICBpZiAoIW1fdGV4dHVyZSkgewotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6ZGVzdHJveSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHZpZXcgOiBtX3RleHR1
cmVWaWV3cykKLSAgICAgICAgdmlldy0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZVZpZXdzLmNs
ZWFyKCk7Ci0KLSAgICBtX3RleHR1cmUtPmRlc3Ryb3koKTsKLSAgICBtX3RleHR1cmUgPSBudWxs
cHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4
dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ1OGMyNjQyZmNjNmE2MmYzNzJhY2I0YTI3
MzhlMWM2YjcyNTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVVGV4dHVyZVZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRl
eHR1cmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShS
ZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0KLSAgICBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0
ZURlZmF1bHRWaWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViR1BVVGV4dHVyZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7Ci0KLSAgICBSZWZQdHI8
R1BVVGV4dHVyZT4gbV90ZXh0dXJlOwotICAgIFZlY3RvcjxSZWY8V2ViR1BVVGV4dHVyZVZpZXc+
PiBtX3RleHR1cmVWaWV3czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2U0YTVmOTkz
YjY0NWRhOTVjMmEzZDc4YzhkZjFjMmMzNzM3ZDI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0v
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViCi0KLVsKLSAgICBDb25kaXRpb25hbD1X
RUJHUFUsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUsCi0gICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKLSAgICBJbnRlcmZhY2VOYW1lPUdQVVRleHR1cmUsCi0gICAgRXhwb3NlZD1X
aW5kb3cKLV0gaW50ZXJmYWNlIFdlYkdQVVRleHR1cmUgewotICAgIFdlYkdQVVRleHR1cmVWaWV3
IGNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0gICAgdW5kZWZpbmVkIGRlc3Ryb3koKTsKLQotICAgIC8v
IE5vdCBZZXQgSW1wbGVtZW50ZWQ6Ci0gICAgLy8gV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlVGV4
dHVyZVZpZXcoV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRlc2MpOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwMzJhZjBjMDE2ZGM1ZWJkNWFlNGRkZDZjNjRi
MjM0YjQwNTM5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJiB2aWV3KQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKLX0K
LQotV2ViR1BVVGV4dHVyZVZpZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZlB0cjxHUFVUZXh0dXJl
PiYmIHZpZXcpCi0gICAgOiBtX3RleHR1cmUoV1RGTW92ZSh2aWV3KSkKLXsKLX0KLQotdm9pZCBX
ZWJHUFVUZXh0dXJlVmlldzo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKCFtX3RleHR1cmUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fdGV4dHVyZS0+ZGVzdHJveSgpOwotICAgIG1fdGV4dHVyZSA9
IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjUwZTIxODRjNTIz
Y2Y4NWZkZWQ2YWJkY2ZlYmZjMjM2ZjEyOTAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmVWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVGV4dHVy
ZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwotICAgIH5X
ZWJHUFVUZXh0dXJlVmlldygpIHsgZGVzdHJveSgpOyB9Ci0KLSAgICBHUFVUZXh0dXJlKiB0ZXh0
dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koKTsK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR1BVVGV4dHVyZVZpZXcoUmVmUHRyPEdQVVRleHR1
cmU+JiYpOwotICAgIAotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmZiZGViYmM5MDVhY2Y2ZDcxM2VkMDQyNzc1
ZmFkMzRlZTNiNTA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYgotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0g
ICAgSW50ZXJmYWNlTmFtZT1HUFVUZXh0dXJlVmlldywKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBp
bnRlcmZhY2UgV2ViR1BVVGV4dHVyZVZpZXcgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvcitHUFUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRhMmRhZWU2NDI3NWI1Zjc5MzI3MGNlM2Q1ZjQ1MzcxMTQyZjEyZWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jbmF2aWdhdG9yLWdwdQotLy8gRklYTUU6IFRoZSBzcGVjIHNheXMgdGhpcyBz
aG91bGQgb25seSBiZSBleHBvc2VkIHRvIERlZGljYXRlZFdvcmtlcnMuCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViR1BVLAotICAgIEltcGxlbWVu
dGVkQnk9V29ya2VyTmF2aWdhdG9yR1BVCi1dIHBhcnRpYWwgaW50ZXJmYWNlIFdvcmtlck5hdmln
YXRvciB7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFUgZ3B1Owot
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0
b3JHUFUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA3ZjM2NjgzZGMzMDM4
NDMyNGY1YTcyNGIyMjEwYjkxZDhlZDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvckdQVS5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJXZWJHUFUuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1Xb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQ
VTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKLXsKLSAgICBXb3JrZXJOYXZpZ2F0
b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBw
bGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
KSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOwotICAgICAgICBzdXBwbGVtZW50ID0g
bmV3U3VwcGxlbWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBz
dXBwbGVtZW50OwotfQotCi1jb25zdCBjaGFyKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldvcmtlck5hdmlnYXRvckdQVSI7Ci19Ci0KLWNvbnN0
IFdlYkdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpncHUoV29ya2VyTmF2aWdhdG9yJiBuYXZpZ2F0
b3IpCi17Ci0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbmF2aWdhdG9yLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnNldHRpbmdzVmFsdWVzKCkud2ViR1BVRW5hYmxlZCk7Ci0gICAgcmV0dXJuIFdvcmtlck5h
dmlnYXRvckdQVTo6ZnJvbSgmbmF2aWdhdG9yKS0+Z3B1KCk7Ci19Ci0KLWNvbnN0IFdlYkdQVSog
V29ya2VyTmF2aWdhdG9yR1BVOjpncHUoKSBjb25zdAotewotICAgIGlmICghbV9ncHUpCi0gICAg
ICAgIG1fZ3B1ID0gV2ViR1BVOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gbV9ncHUuZ2V0KCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JH
UFUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjc0NTNmOTRiYmNhNmI5ODliZDU4ZjU5
NWM4MzhiMDFhMTIwYTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR1BVOwotY2xhc3MgV29ya2VyTmF2aWdh
dG9yOwotCi1jbGFzcyBXb3JrZXJOYXZpZ2F0b3JHUFUgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVu
dDxXb3JrZXJOYXZpZ2F0b3I+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3QgV2ViR1BVKiBncHUoV29ya2VyTmF2aWdhdG9yJik7Ci0KLXBy
aXZhdGU6Ci0gICAgc3RhdGljIFdvcmtlck5hdmlnYXRvckdQVSogZnJvbShXb3JrZXJOYXZpZ2F0
b3IqKTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLSAgICAKLSAg
ICBjb25zdCBXZWJHUFUqIGdwdSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBSZWZQdHI8V2ViR1BV
PiBtX2dwdTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJlYTljYzU2OWNmNDVkNWY0Mjg4ZTMwZThiNGYz
ZmEzYjYwODBiMzQuLjU0NDQzZmI4OGE0ZGNhYmNiYjM2ZTUxZjVjMjc3ZTRmZmNjZjVhNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0zMjAsOTEgKzMyMCw2IEBAIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN0YXRl
TWFjaGluZS5jcHAKIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9HUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKLU1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKLU1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNv
dXJjZVNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhZ2VJbk91dFNlbWFudGljLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50LmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
VHlwZU5hbWVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZm
ZXJJbmRleENhbGN1bGF0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBl
ci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCi1Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENvbXB1dGVEaW1lbnNpb25zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50
cnlQb2ludEl0ZW1zLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAotTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMZXhlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVj
a2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKLU1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3Bw
Ci1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uY3BwCi1Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1h
bnRpY01hdGNoZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFy
eVV0aWxpdGllcy5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3Ry
dWN0b3JzLmNwcAotTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRp
b25GdW5jdGlvbnMuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCi1N
b2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNw
cAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwLmNwcAotTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKLU1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
RW5jb2Rlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2VFcnJvclNjb3Blcy5jcHAK
LU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVMYXlvdXQuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5j
cHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAotTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2FtcGxlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZS5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKLU1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCi1Nb2R1bGVzL3dl
YmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVu
dC5jcHAKIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
IE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuY3BwCkBAIC0yMDc5LDE0ICsxOTk0LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Q
b2ludExpZ2h0U291cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRXJyb3JTY29wZXMuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmUu
Y3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAK
QEAgLTMwNzIsMzQgKzI5NzksNiBAQCBKU0ZvY3VzT3B0aW9ucy5jcHAKIEpTRm9udEZhY2UuY3Bw
CiBKU0ZvbnRGYWNlU2V0LmNwcAogSlNGb3JtRGF0YUV2ZW50LmNwcAotSlNHUFVCaW5kR3JvdXBM
YXlvdXRCaW5kaW5nLmNwcAotSlNHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAotSlNH
UFVCbGVuZERlc2NyaXB0b3IuY3BwCi1KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCi1KU0dQVUJ1
ZmZlclVzYWdlLmNwcAotSlNHUFVDYW52YXNDb250ZXh0LmNwcAotSlNHUFVDb2xvci5jcHAKLUpT
R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuY3BwCi1KU0dQVUNvbG9yV3JpdGUuY3BwCi1KU0dQVUNv
bXBhcmVGdW5jdGlvbi5jcHAKLUpTR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcAot
SlNHUFVFcnJvckZpbHRlci5jcHAKLUpTR1BVRXh0ZW50M0QuY3BwCi1KU0dQVUxvYWRPcC5jcHAK
LUpTR1BVT3JpZ2luM0QuY3BwCi1KU0dQVU91dE9mTWVtb3J5RXJyb3IuY3BwCi1KU0dQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucy5jcHAKLUpTR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCi1KU0dQVVNo
YWRlclN0YWdlLmNwcAotSlNHUFVTdG9yZU9wLmNwcAotSlNHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAKLUpTR1BVVGV4dHVyZUZvcm1hdC5jcHAKLUpTR1BVVGV4dHVyZVVzYWdlLmNwcAotSlNHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKLUpTR1BVVmFsaWRhdGlvbkVycm9yLmNwcAotSlNHUFVW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmNwcAotSlNHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9y
LmNwcAotSlNHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuY3BwCiBKU0dhaW5Ob2RlLmNwcAogSlNH
YWluT3B0aW9ucy5jcHAKIEpTR2FtZXBhZC5jcHAKQEAgLTM3NjEsMzggKzM2NDAsNiBAQCBKU1dl
YkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAogSlNX
ZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcAogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cAotSlNXZWJHUFUuY3BwCi1KU1dlYkdQVUFkYXB0ZXIuY3BwCi1KU1dlYkdQVUJpbmRHcm91cC5j
cHAKLUpTV2ViR1BVQmluZEdyb3VwQmluZGluZy5jcHAKLUpTV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5jcHAKLUpTV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAotSlNXZWJHUFVCdWZmZXIuY3Bw
Ci1KU1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwCi1KU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCi1K
U1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAotSlNXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3Bw
Ci1KU1dlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHAKLUpTV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAKLUpTV2ViR1BVRGV2aWNlLmNwcAotSlNXZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5jcHAKLUpTV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmNwcAotSlNXZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmNwcAotSlNXZWJHUFVQaXBlbGluZUxheW91dC5jcHAKLUpTV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5jcHAKLUpTV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVR
dWV1ZS5jcHAKLUpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1KU1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmNwcAotSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKLUpTV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAotSlNXZWJHUFVTYW1wbGVyLmNwcAotSlNXZWJHUFVT
aGFkZXJNb2R1bGUuY3BwCi1KU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCi1KU1dl
YkdQVVN3YXBDaGFpbi5jcHAKLUpTV2ViR1BVVGV4dHVyZS5jcHAKLUpTV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleUVycm9y
LmNwcAogSlNXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDY4MmRiY2MwNmNlYWU3ZDc2YzFlMGU5YTY2YWJmNDI3ZTFjY2I0OWIuLmNhNjEx
NzBjMzRkZjM5YzAxYjE1YjEwMTI0ZWRlYzQ5Njc5NTI4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMzg3LDcgKzM4Nyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250Q29yZVRleHQuY3BwCkBAIC0zOTgsMjQgKzM5Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVURldmljZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxp
bmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVF1ZXVlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQYXNzRW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNhbXBs
ZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1l
dGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0K
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9p
b3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNv
bklPUy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC02MTYsNyArNTk4
LDMgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
RUdMVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBv
cmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5Ci0KLS8vIERlcml2ZWQgU291cmNlcwotCi1X
SExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyZjM2ZmE1MzM4NWUxM2Mz
M2I2ZDY3MDZkNmI1ZjFiN2MzYWFmNGYuLmUwYmRiYjZmMGVmYzU1YTQ4MzNhYTlkZTFiZTI1Nzkw
YTRmZGNiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTkxMSwxOCArOTExLDYgQEAKIAkJMzEyODhFNzUwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNS
dWxlLmggKi87IH07CiAJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkMwQzQx
MTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3Rp
ZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkzMTJGRjkxMTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkQyMUE0QzJG
MTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLzsgfTsKLQkJMzEyRkY5MTIyMUE0QzM2
NTAwRUIxOTlEIC8qIEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEyRkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICov
OyB9OwotCQkzMTJGRjkxMzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEy
RkY4QzQyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLzsg
fTsKLQkJMzEyRkY5MTQyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRkY4QzIyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ci5oICovOyB9OwotCQkzMTJGRjkxNTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUXVldWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMxMjFBNEMy
RjIwMEVCMTk5RCAvKiBHUFVRdWV1ZS5oICovOyB9OwotCQkzMTJGRjkxNjIxQTRDMzY1MDBFQjE5
OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBl
bGluZS5oICovOyB9OwotCQkzMTJGRjkxNzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmggKi87IH07Ci0JCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJN
b2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLzsgfTsKLQkJMzEy
RkY5MTkyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMwMjFBNEMy
RjIwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxMkZG
OTFBMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJBMjFBNEMyRUYwMEVCMTk5RCAvKiBH
UFVTd2FwQ2hhaW4uaCAqLzsgfTsKLQkJMzEyRkY5MUIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRl
eHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MkZGOEM1MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi87IH07Ci0JCTMxMkZGOTFD
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMzIxQTRDMkYzMDBFQjE5OUQgLyog
R1BVVGV4dHVyZUZvcm1hdC5oICovOyB9OwogCQkzMTMxNzE1NjFGQjA3OUU1MDA4RDkxRkMgLyog
Q2FudmFzQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEzMTcxNTQxRkIwNzlEMTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTM1OTEwNjFFN0REQzczMDBG
MzA2MzAgLyogUlRDSWNlQ29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM1OTEwMDFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNl
Q29ubmVjdGlvblN0YXRlLmggKi87IH07CiAJCTMxMzU5MTA3MUU3RERDNzMwMEYzMDYzMCAvKiBS
VENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzNTkxMDExRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0
YXRlLmggKi87IH07CkBAIC05NTcsNyArOTQ1LDYgQEAKIAkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1
QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTMxN0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0QzRkYyMjE1NTk5
RTMwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTgxNUEzMTFGOUE2QzhGMDBGQ0JGODkgLyogSW1hZ2VC
aXRtYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
RDI2QkJGMUY4NkQxODkwMDhGRjI1NSAvKiBJbWFnZUJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxODQzNkRFMjFCOURBQUYwMEVEMzgz
RSAvKiBXZWJHUFVMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE4NDM2REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi87IH07
CiAJCTMxODg5MTYxMUFCN0VFQTEwMEVBNjI3QiAvKiBtaXNzaW5nSW1hZ2VAM3gucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0MTk5OTFBQjBE
QTE0MDA0RTY0RTEgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyAqLzsgfTsKIAkJMzE4RUFENEQxRkE5
MTM4MDAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThFQUQ0QTFGQTkx
MTU3MDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTk4NDgwMTFB
MUQ4MTdCMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOTg0N0ZGMUExRDgxNjcwMEExMzMxOCAvKiBBbmlt
YXRpb25FdmVudC5oICovOyB9OwpAQCAtMzI2OSw5ICszMjU2LDYgQEAKIAkJQTE4ODkwQUYxQUEx
M0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg4OTBBRDFBQTEzRjI1MDAy
NkMzMDEgLyogUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTk1NkYxQzIzMzFBNjc3MDA1N0U5
RDIgLyogSlNBcHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTk1NkYxQjIzMzFBNjQ2MDA1N0U5RDIgLyogSlNBcHBsZVBh
eUNhbmNlbEV2ZW50LmggKi87IH07CiAJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE5NTZGMUQyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9y
LmggKi87IH07Ci0JCUExOTU2RjIzMjMzMUFDRjIwMDU3RTlEMiAvKiBXSExTTFJlcGxhY2VXaXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUxRjcw
QjIyQ0FEOERBMDAxNUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovOyB9OwotCQlBMTk1NkYy
NDIzMzFBRDIxMDA1N0U5RDIgLyogV0hMU0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hM
U0xQcm9ncmFtLmggKi87IH07Ci0JCUExOTU2RjI1MjMzMUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1
bmN0aW9uRGVmaW5pdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0
aW9uLmggKi87IH07CiAJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExOUFFQTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCAqLzsgfTsKIAkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQTE5RDkzNEIxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNjk1MSwyMCArNjkzNSwxNCBAQAogCQkxQzI0RUVBNjFDNzJBN0I0MDA4
MEY4RkMgLyogSlNGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU0ZvbnRGYWNlU2V0LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2VTZXQuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzI4MUM2RDIyQjg3Qjk4MDA2
OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDMjgxQzZFMjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJl
ZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAv
KiBGb250VmFyaWFudEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9udFZhcmlhbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUMzMzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
MzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVW5uYW1lZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMz
OTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2Fs
Q3VycmVudFRyYWl0Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM0M0RFNkEyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVj
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3Vy
cmVudFRyYWl0Q29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0
RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHbHlwaEJ1ZmZlck1lbWJlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM1MEM0OTUyMkM4NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNTlCMDE4MjIzODY4NzkwMDg1
MzgwNSAvKiBXSExTTFNjb3BlZFNldEFkZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2NvcGVk
U2V0QWRkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZFN0NB
NjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2
MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNkI5
NUREMjJDODU4QTQwMEU2RjE0RiAvKiBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25N
YXAucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNkZEOEFDMjUwQTI5NEQw
MEQ2RTkyMCAvKiBGb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM2RkQ4QUQyNTBBMkU1MzAwRDZFOTIwIC8qIEdseXBoUGFnZUNvcmVUZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdseXBoUGFnZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM2RkQ4QUUyNTBBMzExNTAwRDZFOTIwIC8qIEZvbnRDYXNjYWRlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhc2NhZGVDb3JlVGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTczLDcwICs2OTUxLDI3IEBACiAJCTFDODFC
OTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU4
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRW50cnlQb2ludFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDODQwQjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAv
KiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhl
ckVudHJ5UG9pbnRJdGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg0MEI5
QjIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRC
MjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5z
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbXB1dGVEaW1lbnNpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODZDQTRFMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBl
bGluZU1ldGFsQ29udmVydExheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGlu
ZU1ldGFsQ29udmVydExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
ODZDQTRGMjJBQTIzQzkwMDFCRjk2MSAvKiBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhEMjZDOTIyQzA5NDUzMDBEMTI1RjMgLyogV0hMU0xT
dGFuZGFyZExpYnJhcnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RDI2Q0Uy
MkMwOTUxMzAwRDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNv
bXByZXNzaW9uLnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBs
aWJjb21wcmVzc2lvbi50YmQ7IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJz
aW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNBMjFFRDlERjUwMDY5
RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xIaWdoWm9tYmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5
QUU1Q0IyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUNBMEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9u
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAg
LyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUNBMEMyRTUyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFs
VHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8q
IFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBQTgy
RjYyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvcGVydHlSZXNvbHZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUw
NkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAv
KiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNUZFODgy
MkRFQkM4QjAwOTQ0MEUyIC8qIFdITFNMRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFcnJv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0
NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmFi
bGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM0MjFERUQ2M0Ew
MDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM1
MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2
QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNCNjlC
MzkyMURGMDNGMzAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZC
NEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0VW5kZXJsaW5lT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RG
Rm9udENvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVC
QzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDREFCRDZCMjJDODQ3OUEwMEJEMEEzQSAvKiBXSExTTFN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1
RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBC
YXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRTM0OTdBMjZCMzNCN0EwMDgzMDZC
RCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDRTM0OTdDMjZCMzNCQUUwMDgzMDZCRCAvKiBHUFVEZXZpY2VN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURldmljZU1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1v
cnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0YyNjEwNUE1RjAwMEM4
MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlEaXNw
bGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyNTI2MTg1QkQ4
MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDRThEMTJCMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlz
cGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAv
KiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0VDQjNBOTIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIg
LyogV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjAyMUYy
Qjk4NTAwRjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlw
ZU5hbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IxMjFGMkI5ODUw
MEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5
cGVOYW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0IyMjFGMkI5
ODYwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
RnVuY3Rpb25Xcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFQ0IzQjUy
MUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUNFQ0IzQjYyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0I4MjFGNTBEMTAwMEY0NDU0MiAvKiBXSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNC
OTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDRUNCM0JBMjFGNTExQUEwMEY0NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0JCMjFGNTExQUEwMEY0
NDU0MiAvKiBXSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0VDQjNDNjIxRjU5Qzg3MDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5
cGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjBCRkQ0MjI5ODcwNjgwMEVEMjA3NCAvKiBUZXh0
U2l6ZUFkanVzdG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFNpemVBZGp1c3RtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1
OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHls
aWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwogCQkxRDAwMjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJl
V2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGljdHVyZUluUGlj
dHVyZVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2NiwyMiArNzQw
MSw2IEBACiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0tleWZyYW1lc1J1bGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QjkyMUE0QzJFRjAwRUIx
OTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVs
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJBMjFBNEMyRUYwMEVC
MTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU3dhcENoYWluLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJCMjFBNEMyRjAwMEVCMTk5RCAvKiBH
UFVTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEJEMjFB
NEMyRjEwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNv
bW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkUyMUE0
QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyRkY4QkYyMUE0QzJGMTAwRUIxOTlEIC8q
IEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEMxMjFBNEMyRjIw
MEVCMTk5RCAvKiBHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJGRjhD
MzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVUZXh0dXJlRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMkZGOEM0
MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTJG
RjkzOTIxQTYxQzlGMDBFQjE5OUQgLyogV2ViR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzEyRkY5M0IyMUE2MUNBMDAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVRdWV1ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxMkZGOTNDMjFBNjFDQTEwMEVCMTk5RCAvKiBXZWJHUFVRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMkZGOTNEMjFBNjFGMDcwMEVCMTk5RCAvKiBKU1dlYkdQVVF1
ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVUXVldWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRkY5M0UyMUE2MUYwNzAwRUIxOTlEIC8q
IEpTV2ViR1BVUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJHUFVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU0
MUZCMDc5RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbnZhc0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1
NjQsOCArNzQ4Myw2IEBACiAJCTMxN0QzRkVGMjE1NTk5RTEwMDM0RTNCOSAvKiBQb2ludGVyRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFBvaW50ZXJFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxN0QzRkYxMjE1NTk5RTIwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pbnRlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzE3RDNGRjIyMTU1OTlFMzAwMzRFM0I5IC8qIFBvaW50ZXJFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb2ludGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE4NDM2
REIyMUI5REFBMDAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxODQzNkREMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkdQVUxheWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTg5RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IHBsdWdJbnMuY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMThFQUQ0QTFGQTkxMTU3MDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0U2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4RUFE
NEMxRkE5MTM1MjAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjczLDcgKzc1OTAsNiBAQAogCQkzMzUwM0M5RjEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlm
aWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RpZmlj
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzUxRjcwQjIyQ0FEOERB
MDAxNUI0MEQgLyogV0hMU0xSZXBsYWNlV2l0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlcGxh
Y2VXaXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM1Qzc0RkQzMjI4QTE5MTIw
MDBDMjFBMCAvKiBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNUM3NEZENzIyOEExOUE2MDAwQzIxQTAgLyogQ1NTR3JpZEludGVnZXJSZXBlYXRW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM2NjJGOTg0MDQ3Q0VEQkU1REREQUZBQSAvKiBSZW5k
ZXJNYXRoTUxNZW5jbG9zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTE0LDE5ICs5MDMwLDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRl
bnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25T
dHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRl
bnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVB
MUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyMTU4NjJDMjI5Mzc3Qjcw
MDU5MjVFRiAvKiBXSExTTEFTVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFTVC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjI1NkNBQTIzMEYxNEFEMDA0M0UxMkYgLyogV0hMU0xO
YW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0hMU0xOYW1lU3BhY2UuaDsgcGF0aCA9IEFTVC9X
SExTTE5hbWVTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJCQUI5NjIy
RTZBMzYyMDBDNTRDRTkgLyogV0hMU0xDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xDb2RlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIyRDA3QTMy
MkZCQUI0MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjJE
QTNEMzIyOUUxRDM5MDA0MkQxNTEgLyogV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTIy
RTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNM
Q2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjRCRDQ4MDIz
Mjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
NjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2QjNGMDEyMkZCN0JERDAw
NzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjZCM0YwMzIy
RkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M3NDI1
NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1YUkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mjcz
Q0M3NTI1NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtWFJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0M5
QTI1NjNCMjEyMDA4NTAwMDcgLyogSlNXZWJYUlRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJYUlRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTEzOCwxMiArOTA0Myw5IEBACiAJCTUyNzNDQ0FEMjU2NDU3NkMwMDg1MDAwNyAv
KiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSVmlld0luaXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hM
U0xQYXJzaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExT
TEFkZHJlc3NFc2NhcGVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdD
RTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3
RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAv
KiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxl
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEZWZhdWx0RGVsZXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFu
YWdlck9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0xheWVyTWFuYWdlck9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVB
MThFMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXJPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NzcsMTMg
KzEwNjc5LDEwIEBACiAJCTdDN0JGOTQ5MjUxNkZBNTQwMDgwODY4MiAvKiBQZXJmb3JtYW5jZU1l
YXN1cmVPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3QkY5NEIyNTE2RkE1NDAwODA4Njgy
IC8qIFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTWVhc3Vy
ZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzdCRjk1MDI1MTZG
QjU0MDA4MDg2ODIgLyogUGVyZm9ybWFuY2VNZWFzdXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBlcmZvcm1hbmNlTWVhc3VyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdD
N0M3NjlDMjJGNjdFQ0QwMDMyQkNDRCAvKiBXSExTTE1hbmdsZWROYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTE1hbmdsZWROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzgxMzlBMzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RP
TU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVu
bmFtZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4NEYgLyog
V0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZUhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4ODI0QzQyNDlEN0IwNTAwRUQ4
RkM0IC8qIFNWR1BhdGhTZWdWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoU2VnVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RTM0
OTIxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnZlcnRBbnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4RTM0OTMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0QmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1MjcsMTAgKzExNDI2LDYgQEAKIAkJOTE3NUNF
NTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTE3NUNFNUEyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNF
NUEyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxODZGM0Iz
MjMyOUZCMDUwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
MTg2RjNCNjIzMjlGQjRFMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5MTg2RjNCNzIzMjlGQjRGMDBBRkY4NTcgLyogV2ViR1BVUGlw
ZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE4NkYzQkEyMzI5RkU2ODAwQUZGODU3
IC8qIEdQVVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVVBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOEYwQjMy
MTk1M0Q2NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlU3VtbWFyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDZXJ0aWZpY2F0ZVN1bW1hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY29yZGluZ1N3aXp6bGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTMsNyArMTI2MDgsNiBAQAogCQlB
MzdBNDJFMDI1MjdCNDlDMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRTIyNTI3QjQ5
RDAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzOEE4N0Ez
MjUzOEJFRTcwMDM3QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzQUY5RDgxMjAzMjUyRUUwMDZDQUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNl
ckFnZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNl
ckFnZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MjEsNyArMTI2
MTUsNiBAQAogCQlBM0JGN0VGMjI1NkM4RDcyMDA0NEJDNzUgLyogS0hSUGFyYWxsZWxTaGFkZXJD
b21waWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY0MjU2QzhENzIwMDQ0QkM3
NSAvKiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY3RUY1
MjU2QzhENzQwMDQ0QkM3NSAvKiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEtI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNENDJBODQxRjMzQkEzNjAwQTY0QjYyIC8qIExheW91dFVuaXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAv
KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFj
Y2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NzA3LDEyMSArMTQ2MDAsMTYgQEAKIAkJQzFGN0I3MkYyNDQ4RjJB
QzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
R1hDb21waWxlclNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUY3
QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFHWENvbXBpbGVyU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRl
cmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MEY4OEFBMjI5NjZCMEUwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTEFTVER1bXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMEY4OEFDMjI5NjZCMEYwMEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEFTVER1bXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEw
RTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxMEU5MTIy
MUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2
QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xC
dWlsdEluU2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjEzOEEx
NTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMTM4QTE2MjFEREVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5Nzkg
LyogV0hMU0xDb250aW51ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnRpbnVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExT
TEJvb2xlYW5MaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQm9vbGVhbkxpdGVyYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8q
IFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW5kZXhFeHByZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNkY4MjFDRDg5QkIwMDIy
Nzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdl
ckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RjkyMUNEODlC
RDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRp
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5
NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlU2VtYW50
aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3
OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb1doaWxlTG9v
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5
NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjZG
RTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMU3RydWN0dXJlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcwMzIxQ0Q4
OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5
IC8qIFdITFNMV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBX
SExTTEZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25BdHRy
aWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MDYyMUNEODlDNzAw
MjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29t
bWFFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzA4MjFD
RDg5QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xSZXNvdXJjZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcw
QTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRp
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5
NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3
OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAv
KiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVS
ZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTQyMUNEODlE
MzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzE2MjFDRDg5RDUwMDIy
Nzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTgyMUNEODlE
NzAwMjI3OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERv
dEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MTkyMUNE
ODlENzAwMjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3
aXRjaENhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUEyMUNEODlE
ODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCcmVhay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyog
V0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjFCRjcxQzIxQ0Q4OURBMDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzFEMjFDRDg5REIwMDIyNzk3OSAvKiBXSExTTFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJG
NzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MUYyMUNEODlEQzAw
MjI3OTc5IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVS
ZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjAyMUNEODlE
RDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5
NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCdWlsdElu
U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjMyMUNEODlF
MTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVu
Y2VUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExT
TEVudW1lcmF0aW9uTWVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1i
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3
OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0
cnVjdHVyZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdI
TFNMVHlwZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlRGVmaW5pdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyQTIxQ0Q4OUU3MDAyMjc5Nzkg
LyogV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50
ZXJFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3
OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUMyMUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5
NzkgLyogV0hMU0xQb2ludGVyVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBvaW50ZXJUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzMwMjFDRDg5RUQwMDIyNzk3
OSAvKiBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQXNz
aWdubWVudEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMU3dpdGNoU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTG9naWNhbEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAvKiBXSExT
TEZvckxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGb3JMb29wLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0
ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIx
QkY3MzcyMUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIxQkY3
MzgyMUNEOEEwMzAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzNBMjFDRDhENzAw
MDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9ncmFtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMUJGNzQyMjFDRDk2M0IwMDIyNzk3OSAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXSExTTFN0YW5kYXJkTGli
cmFyeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5kYXJkTGlicmFy
eS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlDMjFCRjc0NTIxQ0Q5
Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdITFNMU3RhbmRh
cmRMaWJyYXJ5LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlF
NEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9u
dFZhcmlhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0Zv
bnRWYXJpYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4
NTIxRTg4NkE5MDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdITFNMVmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTg3
MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xW
aXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThBMjFFODg4M0Uw
MDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TE5hbWVSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOThD
MjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE5hbWVSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTk4
RDIxRTg4ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTE5hbWVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzIzNEE5OEUyMUU4ODg4NTAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xOYW1lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MjM0QTk5NzIxRTkwRjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDMjM0QTk5OTIxRTkwRjI5MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3Zl
cmxvYWRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1w
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMzRBOTlBMjFFOTBGNTYwMDND
OTg0RCAvKiBXSExTTEluZmVyVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbmZl
clR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUIyMUU5MEY1
NzAwM0M5ODREIC8qIFdITFNMSW5mZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEluZmVy
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5OUQyMUU5MTBCRDAw
M0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29s
dmluZ1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUIyMUU5MkMx
ODAwM0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTlBQzIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25G
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5j
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QUQyMUU5MkMxOTAw
M0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUMyMzRBOUFFMjFFOTJDMUEwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjAyMUU5MkMxQzAwM0M5ODREIC8q
IFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDMjM0QTlCMTIxRTkyQzFEMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3Jz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM0QTlCMjIxRTkyQzFGMDAzQzk4NEQgLyogV0hMU0xD
aGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTENoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIz
NEE5QjMyMUU5MkMyMTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjYyMUU5MkND
MDAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludHJp
bnNpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIzNEE5QjcyMUU5MkNDMTAw
M0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTElu
dHJpbnNpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjM5OEVCRDIzMEEx
Qjc2MDA2NDE1MDcgLyogV0hMU0xOYW1lU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYW1l
U3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThFNjExRkU4OTc5RTAw
NTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZUNv
cmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNEE1N0FGMjFGQUQ1M0Yw
MDRDNkREMSAvKiBXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRB
NTdCMjIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNo
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpY01hdGNoZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzI0QTU3QkEyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFy
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFByZXBhcmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlcGFyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjYwMTdBMTFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyog
Q1NTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9u
dEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0MxQzZEQjE5
NDAwMTQ1MUI2IC8qIEZvbnRGYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGb250RmFj
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNEMUM2REMyMkMwMDE0
NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTRm9udEZhY2UuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRG
YWNlLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQzI4MDgzM0Ux
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNGb250RmFjZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zv
bnRGYWNlLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODBCM0ZE
MUVGNDYwODkwMEQzNTEzNSAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbk51bGwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25O
dWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI4OEM3MkQyMUM5OTFEQTAw
MkRGNUNBIC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
VHlwZUFyZ3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBBRjQx
RTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY1MUU2QjNDNkMwMDEzNDhDNSAvKiBG
b250U2VsZWN0aW9uQWxnb3JpdGhtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzJBQjBCMDMxRTZERTkyQzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU0MjgsMjI5ICsxNTIxNiwyOCBAQAogCQlEMDAwRUJBMTExQkRB
RkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YmZyYW1lTG9h
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjYxMUMxQjlDRDAw
QzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN1YmZyYW1lTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDFE
OUFCMjFCMEM3QkYwMDIzQjlCQyAvKiBHUFVDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3OTIxQzg2NDVCMDA2MjJB
QTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJpbmRH
cm91cExheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg3QTIxQzg2
NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVUJpbmRHcm91cExheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMDMyODdCMjFDODY0NUIwMDYyMkFBNiAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUJpbmRHcm91cExheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMDMyODg0MjFDOUEyMEQwMDYyMkFBNiAvKiBHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDMyODg2MjFDOUE0RTUwMDYyMkFBNiAvKiBH
UFVQaXBlbGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZUxheW91dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzMjg4NzIxQzlBNEU1MDA2MjJBQTYgLyog
R1BVUGlwZWxpbmVMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVMYXlv
dXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDAzOTE0MTIyMjQ4RDQwMDA5
ODk5OEMgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDA0ODdEMjIyNDU3QkVBMDBFRUQ3RDkgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMDQ4N0U1MjI2QTYz
NDIwMEVFRDdEOSAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDA0ODdFQjIyNzQyODEyMDBFRUQ3RDkgLyogTmF2aWdhdG9yK0dQVS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gIk5hdmlnYXRvcitHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAwNDg3RUQyMjc0MjgxMzAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOYXZpZ2F0b3JHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDA0ODdFRTIyNzQyODE0MDBFRUQ3RDkgLyogTmF2aWdhdG9yR1BVLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRvckdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDA0ODdGRDIy
NzdBRjgxMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yK0dQVS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIldvcmtlck5h
dmlnYXRvcitHUFUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwNDg3RkUy
Mjc3QUY4MjAwRUVEN0Q5IC8qIFdvcmtlck5hdmlnYXRvckdQVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
b3JrZXJOYXZpZ2F0b3JHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRDc3
RkQyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRDc3RkUyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBENzdGRjIyNDJFRDQ1MDA0M0YxMkMg
LyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NjIxNkVGRTU0
MDAwRDcxREIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTRGMjE2RkZBQzIwMDBE
NzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8q
IFdlYkdQVUFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQWRhcHRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAv
KiBXZWJHUFVBZGFwdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVBZGFwdGVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmlj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAwRjU5NTMyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVEZXZpY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFBMjdB
QjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRT
dHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0cmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDFCODExMjIyMTI1QUZDMDA2MjdC
NkMgLyogR1BVQ29sb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDAxQjgxMTkyMjEzNUVCOTAwNjI3QjZDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDFCODExQzIyMTM2MjczMDA2MjdCNkMgLyogR1BVQnVmZmVyVXNhZ2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEdQVUJ1ZmZlclVzYWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDAxQjgxMUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUJ1ZmZlclVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjMy
QjU4MjFDQjQ5QjcwMDk0ODNCOSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dE1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDI0NTREMDIxQzRBNDFDMDBCNzM2MjggLyogR1BVQmluZEdyb3Vw
TGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91cExheW91dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50
M0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRXh0ZW50M0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVFeHRlbnQzRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDgz
MjIwQTQ3MkYwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVRleHR1cmVV
c2FnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDg1MjIwQTQ3NzIw
MEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZVVz
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMjZGNDhCMjIwQTVCMEIwMEFD
NUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDI2RjQ4QzIyMEE1QkFEMDBB
QzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAyQzI2OTIyMTgx
NDE2RDAwRDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAz
MjExQ0UyMUFDOTU0RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwMzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEw
Mjg0IC8qIEdQVUVycm9yU2NvcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yU2NvcGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAv
KiBHUFVFcnJvclNjb3Blcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvclNjb3Blcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMzZERDhEMjA4RkZDMEMwMEY5RjRC
MiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5QTIx
RkZDNjY3MDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXBhcmVGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDNDODQ5RTIxRkZDRjAwMDAwMjIyN0YgLyogR1BVQ29tcGFy
ZUZ1bmN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb21wYXJlRnVuY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDNDODRBMjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFMTIxQzlCNTBGMDAw
MzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyog
V2ViR1BVUGlwZWxpbmVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVMYXlv
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5RTUyMUM5QkYyQzAwMDMy
Qjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA1QTk5
RTYyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVQaXBlbGluZUxheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNF
RDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3Jt
YXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1h
dEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDVERDZERDIy
Mzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZDQzIx
N0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZD
RDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwNjVCRTU3MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQmluZEdyb3VwQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwNjVCRTU4MjJGQjYxNkQwMDc2REQ2MCAvKiBHUFVCaW5kR3JvdXBBbGxvY2F0
b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cEFsbG9jYXRvck1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZBOUEyMTIyMDI2QzdBMDA4
M0M2NjIgLyogR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZD
MEQ4RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwNkMwRDhFMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92
ZUZvcm1hdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDZFRjU1
MjIyMEJBMjZBMDAxODcyNEUgLyogR1BVVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA2RUY1NTMyMjBCQTI2QTAwMTg3MjRF
IC8qIEdQVVV0aWxzTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVVdGlsc01ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDdERUFCNzBBMzY1NTRBMDBDQTMw
RjggLyogSW5zZXJ0TGlzdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDA3REVBQjgwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg0MDMzQTIyMUNCRjU0MDAwMDcyMDUgLyogR1BV
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODQwMzNEMjIxRTE4NjQwMDAwNzIwNSAvKiBXZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg0M0E0QzIwRkVD
MTY1MDBGRTg2MEUgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODVFNjRBMjIzNkRFQUUwMEMzRTFFMiAvKiBHUFVCaW5k
R3JvdXBNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUJpbmRHcm91cE1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDg2RkU5NjA5RDUzQUFCMDA1QkM3NEQg
LyogVW5saW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxp
bmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODZGRTk3MDlENTNB
QUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVubGlua0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDg3Q0UzODIxQUNBOTQyMDBCREUxNzQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUxNzQgLyogR1BVUXVl
dWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVF1ZXVlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODdDRTNBMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVS
ZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVy
UGFzc0VuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NF
M0IyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg3Q0UzQzIxQUNBOTQyMDBCREUxNzQg
LyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4N0NFM0QyMUFDQTk0MjAwQkRF
MTc0IC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDg3Q0UzRTIxQUNBOTQyMDBCREUxNzQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDA4N0NFM0YyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVRleHR1cmVNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRDA4N0NFNDAyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVNoYWRlck1vZHVs
ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzM0MjI0MDYwMUQwMEYzRjQ0MCAv
KiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA4OTAzMzUyMjQwNjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzNzIyNDA2MUFDMDBGM0Y0NDAgLyogV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzM4MjI0MDYyODkwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzOTIy
NDA2NDJEMDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwODkwMzNBMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwODkwMzNCMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlw
ZWxpbmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzQzIyNDFBOTlGMDBG
M0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNv
bXB1dGVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDg5MDMzRDIy
NDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwODkwMzNFMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlwZWxpbmUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQaXBlbGluZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwODkwMzNGMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGFzc0VuY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwODkwMzQwMjI0MUNFNDYwMEYzRjQ0MCAvKiBHUFVDb21wdXRl
UGFzc0VuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQYXNz
RW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRDIy
MEQwQjlDMDA1OEM1MDIgLyogR1BVTG9hZE9wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVMb2FkT3AuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDhBQTAyRjIyMEQwQkQ1MDA1OEM1MDIgLyogR1BV
TG9hZE9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxvYWRPcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDhBQTAzMTIyMEQwQ0U2MDA1OEM1MDIgLyogR1BVU3RvcmVPcC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gR1BVU3RvcmVPcC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDMy
MjIwRDBEMEIwMDU4QzUwMiAvKiBHUFVTdG9yZU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVN0b3Jl
T3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA4QUEwMzYyMjBEMTlEQTAwNThD
NTAyIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOEFBMDM3
MjIwRDFEMDUwMDU4QzUwMiAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBHUFVDYW52YXND
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0Nv
bnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVUNhbnZhc0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDYW52YXNDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUMwMDUyMzE3MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAv
KiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFD
MDA3MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
R1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDlBQzAwQTIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMDlBQzAwQjIzMTczNUJFMDAxODc3NjIgLyogV2ViR1BVRGV2aWNl
RXZlbnRIYW5kbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXZpY2VFdmVudEhhbmRsZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkFGRjIyRDAyRTUzMDBDNDUzOEMgLyogV2Vi
R1BVRGV2aWNlRXJyb3JTY29wZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JT
Y29wZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5QUZCMDEyMkQwMkU1MzAw
QzQ1MzhDIC8qIFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVURldmljZUVycm9yU2NvcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDA5QUZCMDIyMkQwNDcxOTAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwOUFGQjAzMjJENDBDQzUwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VF
cnJvclNjb3Blcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlRXJyb3JTY29wZXMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlBRkIwNjIyRDQxN0IzMDBDNDUzOEMgLyogR1BVRXJy
b3JGaWx0ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEdQVUVycm9yRmlsdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDA5QUZCMDcyMkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFG
QjA4MjJENTU0MjgwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBDMjJENTVF
OTAwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVZhbGlkYXRpb25F
cnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBEMjJENTVGM0Iw
MEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVmFsaWRh
dGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjBFMjJENTVG
RjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVVmFsaWRhdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5
QUZCMTcyMkQ2Njk0RTAwQzQ1MzhDIC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQ
VU91dE9mTWVtb3J5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDlB
RkIxOTIyRDY2OThBMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVPdXRPZk1lbW9yeUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwOUFGQjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOUFGQjM3
MjJEN0Q1QzYwMEM0NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVU9i
amVjdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBB
NjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQTNBNzMwMTQwNUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjYyMjIzMDlENzYwMEEy
MjkzNSAvKiBHUFVTYW1wbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTYW1wbGVy
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2MzIyMzA5
RDc2MDBBMjI5MzUgLyogR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNhbXBsZXJE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyNjgyMjMw
QUFDQjAwQTIyOTM1IC8qIEdQVVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2FtcGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QjIyMzBBQ0MwMDBBMjI5MzUg
LyogR1BVU2FtcGxlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2FtcGxlck1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2QzIyMzBCQjhFMDBB
MjI5MzUgLyogV2ViR1BVU2FtcGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjZEMjIzMEJCOEUwMEEyMjkzNSAv
KiBXZWJHUFVTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVNhbXBsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI2RjIyMzBDMUYxMDBBMjI5MzUg
LyogV2ViR1BVU2FtcGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2FtcGxlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjdFMjIzMkYwQzAwMEEyMjkzNSAvKiBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBBREIyN0YyMjMyRjE3MzAwQTIy
OTM1IC8qIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlEMEFEQjI4QTIy
Mzc3MzYxMDBBMjI5MzUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQURCMjhCMjIzNzg0MkUwMEEyMjkzNSAvKiBHUFVD
b2xvclN0YXRlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb2xvclN0YXRlRGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEFEQjI4QzIyMzc4NDJFMDBB
MjI5MzUgLyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCMDU1NjYwOUM2
NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFBMjI0RUM2MjQwMDYxMDQ5
QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmxlbmREZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFCMjI0RUM2MjQwMDYx
MDQ5QyAvKiBHUFVCbGVuZERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUJsZW5kRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQjU2RUFEMjI0RUNFMjAwMDYxMDQ5
QyAvKiBHUFVDb2xvcldyaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCNTZFQUUyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQ
VUNvbG9yV3JpdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbG9yV3JpdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEI4QkIwMTIxQzQ2RTc4MDAwQzc2ODEgLyogR1BVQmluZEdyb3VwTGF5
b3V0QmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAv
KiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlC
NiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RDBCRTEwNEEyMUU2ODcyRjAwRTQyQTg5IC8qIEdQVUJ1ZmZlckJpbmRpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVQnVmZmVyQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEJFMTA0QzIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVCdWZmZXJCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwQkUxMDREMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBCRTEwNEUyMUU2OTVFMjAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cEJpbmRpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVQmluZEdyb3VwQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEJFMTA0RjIxRTY5RjgzMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwQmluZGlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUxMDUwMjFFNjlGODMwMEU0MkE4OSAvKiBXZWJHUFVCaW5k
R3JvdXBCaW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5IC8qIEdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEJFMTA1MjIxRTZBQTBEMDBFNDJB
ODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQkUx
MDUzMjFFNkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDBCRTEwNUUyMUU2QkFEMzAwRTQyQTg5IC8qIEdQVUJpbmRHcm91cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBC
RTEwNjAyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVCaW5kR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBCRTEw
NjEyMUU2QzBFQjAwRTQyQTg5IC8qIFdlYkdQVUJpbmRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVCaW5kR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MEJFMTA2MjIxRTZDMEVCMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVCaW5kR3JvdXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQjIx
ODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlG
MDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURF
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUY5MjE4
NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENBQUQ1MzIy
NzdDMkE2MDA4MDFDREYgLyogV29ya2VyTmF2aWdhdG9yR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdvcmtlck5hdmlnYXRvckdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVPcmlnaW4zRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMENDQTk0QTIy
Mjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU9yaWdpbjNELmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBENjlDOUMyMjJFMDBDMjAwMzI5MjdFIC8q
IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ2
OUM5RDIyMkUwMEMyMDAzMjkyN0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDY5QzlGMjIyRTAxNUUwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlv
dXRCaW5kaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0ODcyMUI2NENBQTAwM0M5ODNDIC8qIEdQVUJ1
ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQnVmZmVyRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4QzIxQjcwNjc2MDAzQzk4M0MgLyog
V2ViR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVm
ZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZm
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwRDg2NDkxMjFCNzYwQzQwMDNDOTgzQyAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMEQ4NjQ5MjIxQjc2MEYyMDAzQzk4M0MgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQ4NjQ5
NDIxQkExNzNEMDAzQzk4M0MgLyogR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
UFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEQ4NjQ5NjIxQkExOEY0MDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDg2NDk4MjFCQTE5QTcwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhC
dWZmZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8q
IEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEODY0OUIyMUJB
MUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJH
UFVTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRl
clN0YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFn
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR1BVU2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNv
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdl
YkdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBX
ZWJHUFVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRl
eHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVU
ZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBFQUNGODcyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRUFDRjg4MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0
dXJlVmlldy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEMEVBQ0Y4QzIxOTQwM0M5MDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOEUyMTk0MEEyMjAwMEZBNzVD
IC8qIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjhGMjE5
NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUQwRUFDRjkwMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEVBQ0Y5MTIxOTQwQTVCMDAwRkE3NUMgLyogV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTIyMTk0MEE1
QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGOTMyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRkFFMjE5RTMwRkQwMDBG
QTc1QyAvKiBHUFVUZXh0dXJlRm9ybWF0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVUZXh0dXJlRm9ybWF0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8q
IENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRjc1NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZlcnRleEJ1ZmZl
ckluZGV4Q2FsY3VsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5
OTIyMDM5MUMzMDAxMTgwNTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEY3NTU5RjIyMDNCQTE0MDAxMTgwNTgg
LyogR1BVTGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxpbWl0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8q
IFBpbmdMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGluZ0xvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMkNEQjVFRDYzOEY0M0FGODZGMDdB
QTIgLyogSlNFcnJvckV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRXJyb3JFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xOTE2OCwxMDMgKzE4NzU1LDYgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKLQkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTI5MTRDMkMyMkY5M0U1
RDAwNTc4MTUwIC8qIFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCAqLywKLQkJCQkxQzg0MEI5MDIx
RUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIx
Q0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFC
RjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjcz
MDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJ
CTUyMTU4NjJDMjI5Mzc3QjcwMDU5MjVFRiAvKiBXSExTTEFTVC5oICovLAotCQkJCUMyMUJGNzBB
MjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJ
CUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJ
CUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2
RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFC
RjcxQTIxQ0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFE
REVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3
MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIx
QkY3MTYyMUNEODlENTAwMjI3OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAq
LywKLQkJCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAot
CQkJCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERlZmF1bHREZWxldGUuaCAqLywK
LQkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNz
aW9uLmggKi8sCi0JCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxv
b3AuaCAqLywKLQkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50LmggKi8sCi0JCQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8q
IFdITFNMRW50cnlQb2ludFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjcyNjIxQ0Q4OUUz
MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovLAotCQkJCUMyMUJGNzAyMjFD
RDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJ
CTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovLAotCQkJ
CUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovLAotCQkJCUMy
MUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5oICovLAotCQkJCTFD
QjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLAot
CQkJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAq
LywKLQkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCi0J
CQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LywKLQkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0
aW9uLmggKi8sCi0JCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25E
ZWZpbml0aW9uLmggKi8sCi0JCQkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKLQkJCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5Nzkg
LyogV0hMU0xJZlN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAv
KiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1
QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAy
Mjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMw
MDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUy
MURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIx
QkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
ICovLAotCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hM
U0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywKLQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5
RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJCQlDMjM5OEVCRDIzMEExQjc2MDA2NDE1MDcg
LyogV0hMU0xOYW1lU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyog
V0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlF
NzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3
MjEyMUNEODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgg
Ki8sCi0JCQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAq
LywKLQkJCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xRdWFs
aWZpZXIuaCAqLywKLQkJCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5IC8q
IFdITFNMUmVmZXJlbmNlVHlwZS5oICovLAotCQkJCTMzNTFGNzBCMjJDQUQ4REEwMDE1QjQwRCAv
KiBXSExTTFJlcGxhY2VXaXRoLmggKi8sCi0JCQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8q
IFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywKLQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEg
LyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAy
Mjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlD
NTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3
OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEg
LyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJG
NzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5oICovLAotCQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3Rh
Z2VJbk91dFNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdI
TFNMU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNM
U3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAv
KiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5
NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8sCi0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5
IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3
OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxRDIxQ0Q4OURC
MDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8sCi0JCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNB
IC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKLQkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5
NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLywKLQkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5
NzkgLyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcw
QzQ1QSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAotCQkJCUMyMUJGNzFGMjFDRDg5REMw
MDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKLQkJCQk3Qzg1QjIwMTIyRkIwNDg1
MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8sCi0JCQkJMUMzMzI3NzIyMUNGMEQy
RTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKLQkJCQk3Qzg1QjIwNDIyRkIwNjMy
MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLywKLQkJCQlDMjBGNEY2NzIxREZG
M0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlD
MjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgg
Ki8sCi0JCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MTAyMUNEODlEMDAw
MjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzE0MjFD
RDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8s
Ci0JCQkJQzIxQkY3MTMyMUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2Uu
aCAqLywKLQkJCQlDMjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gQVNUOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5Mjg0LDI2ICsxODc3NCwy
MSBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OwotCQkxQ0VDQjNB
RDIxRjJCOTY0MDBGNDQ1NDIgLyogTWV0YWwgKi8gPSB7CisJCTFDRTM0OTc4MjZCMzNCNUQwMDgz
MDZCRCAvKiBncHUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTFDRTM0OTdCMjZCMzNCOEMwMDgzMDZCRCAvKiBjb2NvYSAqLywKKwkJCQkxQ0UzNDk3QTI2
QjMzQjdBMDA4MzA2QkQgLyogR1BVRGV2aWNlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGdwdTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDRTM0OTdCMjZCMzNCOEMwMDgz
MDZCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJMUNFQ0IzQkEyMUY1MTFBQTAwRjQ0NTQyIC8qIFdITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmNwcCAqLywKLQkJCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIgLyogV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuaCAqLywKLQkJCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIgLyogV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAgKi8sCi0JCQkJMUNFQ0IzQjIyMUYyQjk4NjAwRjQ0NTQyIC8q
IFdITFNMRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQk3QzdDNzY5QzIyRjY3RUNEMDAzMkJDQ0Qg
LyogV0hMU0xNYW5nbGVkTmFtZXMuaCAqLywKLQkJCQkxQ0VDQjNCNTIxRjUwQUM3MDBGNDQ1NDIg
LyogV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwICovLAotCQkJCTFDRUNCM0I2MjFGNTBBQzcw
MEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oICovLAotCQkJCTFDRUNCM0I4MjFG
NTBEMTAwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCAqLywKLQkJCQkx
Q0VDQjNCOTIxRjUwRDEwMDBGNDQ1NDIgLyogV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oICov
LAotCQkJCTFDRUNCM0M2MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVXcml0ZXIu
Y3BwICovLAotCQkJCTFDRUNCM0M3MjFGNTlDODcwMEY0NDU0MiAvKiBXSExTTE5hdGl2ZVR5cGVX
cml0ZXIuaCAqLywKLQkJCQkxQ0VDQjNCMTIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xUeXBlTmFt
ZXIuY3BwICovLAotCQkJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1l
ci5oICovLAotCQkJCUQwRjc1NTk5MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZl
ckluZGV4Q2FsY3VsYXRvci5jcHAgKi8sCi0JCQkJRDBGNzU1OTgyMjAzOTFDMzAwMTE4MDU4IC8q
IFdITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggKi8sCisJCQkJMUNFMzQ5N0MyNkIz
M0JBRTAwODMwNkJEIC8qIEdQVURldmljZU1ldGFsLm1tICovLAogCQkJKTsKLQkJCXBhdGggPSBN
ZXRhbDsKKwkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CiAJCTFEMDAyNjlBMjM3NEI5RjgwMENBNkNERiAvKiBQaWN0dXJlSW5QaWN0dXJlICovID0gewpA
QCAtMjA1MDQsODAgKzE5OTg5LDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUQwODdDRTM3MjFB
Q0E5NDIwMEJERTE3NCAvKiBjb2NvYSAqLywKLQkJCQlEMEJFMTA1RTIxRTZCQUQzMDBFNDJBODkg
LyogR1BVQmluZEdyb3VwLmggKi8sCi0JCQkJRDA2NUJFNTcyMkZCNjE2RDAwNzZERDYwIC8qIEdQ
VUJpbmRHcm91cEFsbG9jYXRvci5oICovLAotCQkJCUQwQkUxMDRFMjFFNjk1RTIwMEU0MkE4OSAv
KiBHUFVCaW5kR3JvdXBCaW5kaW5nLmggKi8sCi0JCQkJRDBCRTEwNTEyMUU2QTcwRTAwRTQyQTg5
IC8qIEdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDI0NTREMDIxQzRBNDFDMDBC
NzM2MjggLyogR1BVQmluZEdyb3VwTGF5b3V0LmggKi8sCi0JCQkJRDBCNTZFQUEyMjRFQzYyNDAw
NjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRvci5oICovLAotCQkJCUQwODQwMzNBMjIxQ0JGNTQw
MDAwNzIwNSAvKiBHUFVCdWZmZXIuY3BwICovLAotCQkJCUQwRDg2NDkyMjFCNzYwRjIwMDNDOTgz
QyAvKiBHUFVCdWZmZXIuaCAqLywKLQkJCQlEMEJFMTA0QTIxRTY4NzJGMDBFNDJBODkgLyogR1BV
QnVmZmVyQmluZGluZy5oICovLAotCQkJCUQwRDg2NDg3MjFCNjRDQUEwMDNDOTgzQyAvKiBHUFVC
dWZmZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAxQjgxMUQyMjEzNjM2RTAwNjI3QjZDIC8qIEdQ
VUJ1ZmZlclVzYWdlLmggKi8sCi0JCQkJRDAwMUQ5QUIyMUIwQzdCRjAwMjNCOUJDIC8qIEdQVUNv
bG9yLmggKi8sCi0JCQkJRDBBREIyOEIyMjM3ODQyRTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVE
ZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBCNTZFQUQyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9y
V3JpdGUuaCAqLywKLQkJCQkzMTJGRjhCRDIxQTRDMkYxMDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1
ZmZlci5oICovLAotCQkJCUQwM0M4NDlDMjFGRkM3RkMwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVu
Y3Rpb24uaCAqLywKLQkJCQlEMDg5MDMzRjIyNDFDRTQ2MDBGM0Y0NDAgLyogR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmggKi8sCi0JCQkJRDA4OTAzM0EyMjQxNzlCNTAwRjNGNDQwIC8qIEdQVUNvbXB1
dGVQaXBlbGluZS5oICovLAotCQkJCUQwODkwMzM5MjI0MDY0MkQwMEYzRjQ0MCAvKiBHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAzQzg0OUEyMUZGQzY2NzAwMDIyMjdG
IC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oICovLAotCQkJCTMxMkZGOEJGMjFB
NEMyRjEwMEVCMTk5RCAvKiBHUFVEZXZpY2UuY3BwICovLAotCQkJCTMxMkZGOEJFMjFBNEMyRjEw
MEVCMTk5RCAvKiBHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDlBRkIwODIyRDU1NDI4MDBDNDUzOEMg
LyogR1BVRXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjJEMjJENkMwMTQwMEM0NTM4QyAvKiBHUFVF
cnJvci5jcHAgKi8sCi0JCQkJRDA5QUZCMDcyMkQ1MzkxQjAwQzQ1MzhDIC8qIEdQVUVycm9yLmgg
Ki8sCi0JCQkJRDA5QUZCMDIyMkQwNDcxOTAwQzQ1MzhDIC8qIEdQVUVycm9yRmlsdGVyLmggKi8s
Ci0JCQkJRDAzNTg2QjIyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmNwcCAqLywK
LQkJCQlEMDM1ODZCMTIyRDdGMkVBMDBEQTAyODQgLyogR1BVRXJyb3JTY29wZXMuaCAqLywKLQkJ
CQlEMDI2RjQ3RDIyMEEyQUM2MDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaCAqLywKLQkJCQlEMEY3
NTU5RjIyMDNCQTE0MDAxMTgwNTggLyogR1BVTGltaXRzLmggKi8sCi0JCQkJRDA4QUEwMkYyMjBE
MEJENTAwNThDNTAyIC8qIEdQVUxvYWRPcC5oICovLAotCQkJCUQwOUFGQjM3MjJEN0Q1QzYwMEM0
NTM4QyAvKiBHUFVPYmplY3RCYXNlLmggKi8sCi0JCQkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhD
IC8qIEdQVU91dE9mTWVtb3J5RXJyb3IuaCAqLywKLQkJCQk5MTg2RjNCQTIzMjlGRTY4MDBBRkY4
NTcgLyogR1BVUGlwZWxpbmUuY3BwICovLAotCQkJCTkxODZGM0IzMjMyOUZCMDUwMEFGRjg1NyAv
KiBHUFVQaXBlbGluZS5oICovLAotCQkJCTMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0JCQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2
IC8qIEdQVVBpcGVsaW5lTGF5b3V0LmNwcCAqLywKLQkJCQlEMDAzMjg4NjIxQzlBNEU1MDA2MjJB
QTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuaCAqLywKLQkJCQlEMDAzMjg4NDIxQzlBMjBEMDA2MjJB
QTYgLyogR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8sCi0JCQkJQTNDM0RDNUQyNTNB
MTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRmb3JtVHlwZXMuaCAqLywKLQkJCQlEMDAzOTE0MTIyMjQ4
RDQwMDA5ODk5OEMgLyogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwICovLAotCQkJCUQw
MzIxMUNGMjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICov
LAotCQkJCTMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUu
aCAqLywKLQkJCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCAqLywKLQkJCQlEMDMyMTFDRTIxQUM5NTRFMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCAqLywKLQkJCQkzMTJGRjhCOTIxQTRDMkVGMDBFQjE5OUQgLyogR1BVUmVuZGVy
UGlwZWxpbmUuaCAqLywKLQkJCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyogR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA2QTlBMjEyMjAyNkM3QTAwODNDNjYyIC8q
IEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oICovLAotCQkJCUQwQURCMjY4MjIzMEFBQ0IwMEEy
MjkzNSAvKiBHUFVTYW1wbGVyLmggKi8sCi0JCQkJRDBBREIyNjIyMjMwOUQ3NjAwQTIyOTM1IC8q
IEdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlE
IC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAotCQkJCTMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5RCAv
KiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4QUEwMzIyMjBEMEQwQjAw
NThDNTAyIC8qIEdQVVN0b3JlT3AuaCAqLywKLQkJCQkzMTJGRjhCQTIxQTRDMkVGMDBFQjE5OUQg
LyogR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBBREIyN0YyMjMyRjE3MzAwQTIyOTM1IC8qIEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQg
LyogR1BVVGV4dHVyZS5oICovLAotCQkJCUQwMjZGNDhDMjIwQTVCQUQwMEFDNUY0OSAvKiBHUFVU
ZXh0dXJlRGVzY3JpcHRvci5oICovLAotCQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBH
UFVUZXh0dXJlRm9ybWF0LmggKi8sCi0JCQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQ
VVRleHR1cmVVc2FnZS5oICovLAotCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVV
dGlscy5oICovLAotCQkJCUQwOUFGQjBFMjJENTVGRjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9u
RXJyb3IuY3BwICovLAotCQkJCUQwOUFGQjBEMjJENTVGM0IwMEM0NTM4QyAvKiBHUFVWYWxpZGF0
aW9uRXJyb3IuaCAqLywKLQkJCQlEMEQ4NjQ5QjIxQkExQzJEMDAzQzk4M0MgLyogR1BVVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvci5oICovLAotCQkJCUQwRDg2NDlDMjFCQTFDRTgwMDNDOTgzQyAv
KiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBEODY0OTkyMUJBMUIxRjAw
M0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3JpcHRvci5oICovLAotCQkJKTsKLQkJCXBhdGgg
PSBncHU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk0OTlCM0VDMDEyOEND
QzE4MDBFNzI2QzIgLyogY2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMjQzMzcsNyArMjM3NDgsNiBAQAogCQkJCTU3RDg0NjJBMUZFQUY1N0YwMENBMzY4
MiAvKiB3ZWJhdXRobiAqLywKIAkJCQk5N0JDNjlENTE1MDVGMDU0MDAxQjc0QUMgLyogd2ViZGF0
YWJhc2UgKi8sCiAJCQkJOTk2RTU5REExREYwMEQ0NTAwNjYxMkI5IC8qIHdlYmRyaXZlciAqLywK
LQkJCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIgLyogd2ViZ3B1ICovLAogCQkJCTk3QUFCQ0Y3
MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRzICovLAogCQkJCUUxRUU4QUM2MjQxMkIxNkYw
MEU3OTRENiAvKiB3ZWJ4ciAqLywKIAkJCSk7CkBAIC0yNzAyNyw3ICsyNjQzNyw3IEBACiAJCQkJ
Q0Q5RDgyN0MxQzdCQjJFRDAwNkZGMDY2IC8qIGN2ICovLAogCQkJCTBGRTVGQkM5MUMzREQ1MDYw
MDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMgKi8sCiAJCQkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgx
IC8qIGZpbHRlcnMgKi8sCi0JCQkJNDk4NzcwQzExMjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLywK
KwkJCQkxQ0UzNDk3ODI2QjMzQjVEMDA4MzA2QkQgLyogZ3B1ICovLAogCQkJCTQ0MUFGMEE3MEVC
QTdCQkYwMDQ0RUQ0QiAvKiBpb3MgKi8sCiAJCQkJQ0Q4OTJGNUExRkI1MkFDRjAwOTMzM0QyIC8q
IGlzbyAqLywKIAkJCQlCMjc1MzU0OTBCMDUzODE0MDAyQ0U2NEYgLyogbWFjICovLApAQCAtMjc0
NjQsOCArMjY4NzQsNiBAQAogCQkJCUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb24ubW0gKi8sCiAJCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4
IC8qIFdlYkdMTGF5ZXIuaCAqLywKIAkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2Vi
R0xMYXllci5tbSAqLywKLQkJCQkzMTg0MzZEQjIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5
ZXIuaCAqLywKLQkJCQkzMTg0MzZERDIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIubW0g
Ki8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tICovLAogCQkJKTsKQEAgLTI4MzI0LDg0ICsyNzczMiw2IEBACiAJCQluYW1l
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQzIxMEU5MEQyMUI0
QkNBNDAwQjdGODNEIC8qIFdITFNMICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGls
ZHJlbiA9ICgKLQkJCQkxQ0EwQzJGNjIxRUVEQUQyMDBBMTE4NjAgLyogQVNUICovLAotCQkJCTFD
RUNCM0FEMjFGMkI5NjQwMEY0NDU0MiAvKiBNZXRhbCAqLywKLQkJCQlDMjBGODhBQTIyOTY2QjBF
MDBENjEwRkEgLyogV0hMU0xBU1REdW1wZXIuY3BwICovLAotCQkJCUMyMEY4OEFDMjI5NjZCMEYw
MEQ2MTBGQSAvKiBXSExTTEFTVER1bXBlci5oICovLAotCQkJCTFDNkI5NUREMjJDODU4QTQwMEU2
RjE0RiAvKiBXSExTTEJ1aWxkU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAucHkgKi8sCi0JCQkJ
QzIzNEE5QjIyMUU5MkMxRjAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMu
Y3BwICovLAotCQkJCUMyMzRBOUFFMjFFOTJDMUEwMDNDOTg0RCAvKiBXSExTTENoZWNrRHVwbGlj
YXRlRnVuY3Rpb25zLmggKi8sCi0JCQkJMUM4NDBCOUIyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNM
Q2hlY2tlci5jcHAgKi8sCi0JCQkJMUM4NDBCOTcyMUVDNDAwNzAwRDA1MDBEIC8qIFdITFNMQ2hl
Y2tlci5oICovLAotCQkJCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAvKiBXSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuY3BwICovLAotCQkJCTUyNEJENDgwMjMyNzdFMTYwMDhGNTZDMSAvKiBXSExT
TENoZWNrUmVmZXJlbmNlVHlwZXMuaCAqLywKLQkJCQkxQzI4MUM2RDIyQjg3Qjk4MDA2OTFDMDAg
LyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLywKLQkJCQkxQzI4MUM2RTIyQjg3
Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggKi8sCi0JCQkJNTIy
QkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8sCi0JCQkJMUM4
NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwICovLAot
CQkJCTFDODZDQTRDMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVEaW1lbnNpb25zLmgg
Ki8sCi0JCQkJMUNCNUZFODgyMkRFQkM4QjAwOTQ0MEUyIC8qIFdITFNMRXJyb3IuaCAqLywKLQkJ
CQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5j
cHAgKi8sCi0JCQkJMUNBMEMyRTUyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFn
ZUNoZWNrZXIuaCAqLywKLQkJCQkxQzg0MEI5OTIxRUM0MDA4MDBEMDUwMEQgLyogV0hMU0xHYXRo
ZXJFbnRyeVBvaW50SXRlbXMuY3BwICovLAotCQkJCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAv
KiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oICovLAotCQkJCTFDOUFFNUNBMjFFRDlERjUw
MDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovLAotCQkJCTFDOUFFNUNCMjFF
RDlERjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuaCAqLywKLQkJCQlDMjM0QTk5
QTIxRTkwRjU2MDAzQzk4NEQgLyogV0hMU0xJbmZlclR5cGVzLmNwcCAqLywKLQkJCQlDMjM0QTk5
QjIxRTkwRjU3MDAzQzk4NEQgLyogV0hMU0xJbmZlclR5cGVzLmggKi8sCi0JCQkJQzIzNEE5Qjcy
MUU5MkNDMTAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5jcHAgKi8sCi0JCQkJQzIzNEE5QjYy
MUU5MkNDMDAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5oICovLAotCQkJCUMyMTBFOTExMjFC
NEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmNwcCAqLywKLQkJCQlDMjEwRTkxMjIxQjRCRDEw
MDBCN0Y4M0QgLyogV0hMU0xMZXhlci5oICovLAotCQkJCTFDQTBDMkVDMjFFRUQ2RjYwMEExMTg2
MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAgKi8sCi0JCQkJMUNBMEMyRUEyMUVFRDZG
NTAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmggKi8sCi0JCQkJQzIzNEE5OEQy
MUU4ODg4NDAwM0M5ODREIC8qIFdITFNMTmFtZUNvbnRleHQuY3BwICovLAotCQkJCUMyMzRBOThF
MjFFODg4ODUwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmggKi8sCi0JCQkJQzIzNEE5OEEy
MUU4ODgzRTAwM0M5ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLywKLQkJCQlDMjM0QTk4
QzIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1lUmVzb2x2ZXIuaCAqLywKLQkJCQk1MjI1NkNB
QTIzMEYxNEFEMDA0M0UxMkYgLyogV0hMU0xOYW1lU3BhY2UuaCAqLywKLQkJCQlDMjFCRjczNzIx
Q0Q4QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICovLAotCQkJCUMyMUJGNzM4MjFDRDhB
MDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovLAotCQkJCTUyOTE0QzJBMjJGOTNFNEUwMDU3
ODE1MCAvKiBXSExTTFBhcnNpbmdNb2RlLmggKi8sCi0JCQkJQzI0QTU3QUYyMUZBRDUzRjAwNEM2
REQxIC8qIFdITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJQzI0QTU3QkEyMUZFQUZF
QTAwNEM2REQxIC8qIFdITFNMUHJlcGFyZS5jcHAgKi8sCi0JCQkJQzI0QTU3QkIyMUZFQUZFQTAw
NEM2REQxIC8qIFdITFNMUHJlcGFyZS5oICovLAotCQkJCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2
QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwICovLAotCQkJCTUyMkUxQTE5
MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLywK
LQkJCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8sCi0JCQkJ
MUNBQTgyRjYyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgKi8s
Ci0JCQkJMUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5o
ICovLAotCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFi
bGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovLAotCQkJCTUyNkIzRjAzMjJGQjdCREUw
MDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMu
aCAqLywKLQkJCQkxQ0EwQzJFMDIxRUVCNUY1MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVj
a2VyLmNwcCAqLywKLQkJCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNp
b25DaGVja2VyLmggKi8sCi0JCQkJQzIzNEE5QUQyMUU5MkMxOTAwM0M5ODREIC8qIFdITFNMUmVj
dXJzaXZlVHlwZUNoZWNrZXIuY3BwICovLAotCQkJCUMyMzRBOUFCMjFFOTJDMTgwMDNDOTg0RCAv
KiBXSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmggKi8sCi0JCQkJQzIzNEE5OTkyMUU5MEYyOTAw
M0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAgKi8sCi0JCQkJQzIzNEE5OTcy
MUU5MEYyODAwM0M5ODREIC8qIFdITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5oICovLAotCQkJCUMy
MzRBOTlEMjFFOTEwQkQwMDNDOTg0RCAvKiBXSExTTFJlc29sdmluZ1R5cGUuaCAqLywKLQkJCQkx
QzU5QjAxODIyMzg2ODc5MDA4NTM4MDUgLyogV0hMU0xTY29wZWRTZXRBZGRlci5oICovLAotCQkJ
CUMyNEE1N0IyMjFGQjhEREEwMDRDNkREMSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5jcHAgKi8s
Ci0JCQkJQzI0QTU3QjMyMUZCOEREQTAwNEM2REQxIC8qIFdITFNMU2VtYW50aWNNYXRjaGVyLmgg
Ki8sCi0JCQkJQzIxQkY3NDUyMUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5
LnR4dCAqLywKLQkJCQkxQ0RBQkQ2QjIyQzg0NzlBMDBCRDBBM0EgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbk1hcC5oICovLAotCQkJCTFDOEQyNkNFMjJDMDk1MTMwMEQxMjVGMyAvKiBX
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgKi8sCi0JCQkJMUM4RDI2QzkyMkMwOTQ1
MzAwRDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmggKi8sCi0JCQkJMUNF
Q0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNw
cCAqLywKLQkJCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaCAqLywKLQkJCQlDMjM0QTlCMDIxRTkyQzFDMDAzQzk4NEQgLyogV0hMU0xT
eW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCAqLywKLQkJCQlDMjM0QTlCMTIxRTkyQzFEMDAzQzk4
NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmggKi8sCi0JCQkJQzIzNEE5QjMyMUU5
MkMyMTAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcCAq
LywKLQkJCQlDMjM0QTlBQzIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplRW51bWVy
YXRpb25GdW5jdGlvbnMuaCAqLywKLQkJCQlDMjM0QTk4NTIxRTg4NkE5MDAzQzk4NEQgLyogV0hM
U0xWaXNpdG9yLmNwcCAqLywKLQkJCQlDMjM0QTk4NzIxRTg4NkFEMDAzQzk4NEQgLyogV0hMU0xW
aXNpdG9yLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IFdITFNMOwotCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKLQkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI4ODg2LDE3OCArMjgy
MTYsNiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
Ci0JCUQwMEY1OTNFMjE2RUNDNDMwMDBENzFEQiAvKiB3ZWJncHUgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAv
KiBXSExTTCAqLywKLQkJCQlEMEI4QkIwMTIxQzQ2RTc4MDAwQzc2ODEgLyogR1BVQmluZEdyb3Vw
TGF5b3V0QmluZGluZy5oICovLAotCQkJCUQwRDY5QzlGMjIyRTAxNUUwMDMyOTI3RSAvKiBHUFVC
aW5kR3JvdXBMYXlvdXRCaW5kaW5nLmlkbCAqLywKLQkJCQlEMEQ2OUM5QzIyMkUwMEMyMDAzMjky
N0UgLyogR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oICovLAotCQkJCUQwRDY5QzlEMjIy
RTAwQzIwMDMyOTI3RSAvKiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmlkbCAqLywKLQkJ
CQlEMEI1NkVBQjIyNEVDNjI0MDA2MTA0OUMgLyogR1BVQmxlbmREZXNjcmlwdG9yLmlkbCAqLywK
LQkJCQlEMDFCODExOTIyMTM1RUI5MDA2MjdCNkMgLyogR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwg
Ki8sCi0JCQkJRDAxQjgxMUMyMjEzNjI3MzAwNjI3QjZDIC8qIEdQVUJ1ZmZlclVzYWdlLmlkbCAq
LywKLQkJCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5jcHAg
Ki8sCi0JCQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIEdQVUNhbnZhc0NvbnRleHQuaCAq
LywKLQkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogR1BVQ2FudmFzQ29udGV4dC5pZGwg
Ki8sCi0JCQkJRDAxQjgxMTIyMjEyNUFGQzAwNjI3QjZDIC8qIEdQVUNvbG9yLmlkbCAqLywKLQkJ
CQlEMEFEQjI4QzIyMzc4NDJFMDBBMjI5MzUgLyogR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaWRs
ICovLAotCQkJCUQwQjU2RUFFMjI0RUNFMjAwMDYxMDQ5QyAvKiBHUFVDb2xvcldyaXRlLmlkbCAq
LywKLQkJCQlEMDNDODQ5RTIxRkZDRjAwMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1bmN0aW9uLmlk
bCAqLywKLQkJCQlEMDNDODRBMjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMDlBRkIwNjIyRDQxN0IzMDBDNDUzOEMgLyogR1BV
RXJyb3JGaWx0ZXIuaWRsICovLAotCQkJCUQwMjZGNDgwMjIwQTJCNzAwMEFDNUY0OSAvKiBHUFVF
eHRlbnQzRC5pZGwgKi8sCi0JCQkJRDA4QUEwMkQyMjBEMEI5QzAwNThDNTAyIC8qIEdQVUxvYWRP
cC5pZGwgKi8sCi0JCQkJRDBDQ0E5NDkyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmgg
Ki8sCi0JCQkJRDBDQ0E5NEEyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmlkbCAqLywK
LQkJCQlEMDlBRkIxNzIyRDY2OTRFMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwg
Ki8sCi0JCQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucy5pZGwgKi8sCi0JCQkJRDBBREIyNjMyMjMwOUQ3NjAwQTIyOTM1IC8qIEdQVVNhbXBsZXJE
ZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMERFOEZCODIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hh
ZGVyU3RhZ2UuaCAqLywKLQkJCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hhZGVy
U3RhZ2UuaWRsICovLAotCQkJCUQwOEFBMDMxMjIwRDBDRTYwMDU4QzUwMiAvKiBHUFVTdG9yZU9w
LmlkbCAqLywKLQkJCQlEMDI2RjQ4QjIyMEE1QjBCMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaWRsICovLAotCQkJCUQwRUFDRkFFMjE5RTMwRkQwMDBGQTc1QyAvKiBHUFVUZXh0dXJl
Rm9ybWF0LmlkbCAqLywKLQkJCQlEMDI2RjQ4MzIyMEE0NzJGMDBBQzVGNDkgLyogR1BVVGV4dHVy
ZVVzYWdlLmlkbCAqLywKLQkJCQlEMDlBQzAwNjIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0
dXJlZEVycm9yRXZlbnQuY3BwICovLAotCQkJCUQwOUFDMDA1MjMxNzFGNTIwMDE4Nzc2MiAvKiBH
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oICovLAotCQkJCUQwOUFDMDA3MjMxNzFGNTIwMDE4Nzc2
MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgKi8sCi0JCQkJRDA5QUZCMEMyMkQ1NUU5
MDAwQzQ1MzhDIC8qIEdQVVZhbGlkYXRpb25FcnJvci5pZGwgKi8sCi0JCQkJRDBEODY0OTYyMUJB
MThGNDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsICovLAotCQkJ
CUQwRDg2NDk4MjFCQTE5QTcwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmlk
bCAqLywKLQkJCQlEMEQ4NjQ5NDIxQkExNzNEMDAzQzk4M0MgLyogR1BVVmVydGV4SW5wdXREZXNj
cmlwdG9yLmlkbCAqLywKLQkJCQlEMDA0ODdFQjIyNzQyODEyMDBFRUQ3RDkgLyogTmF2aWdhdG9y
K0dQVS5pZGwgKi8sCi0JCQkJRDAwNDg3RUQyMjc0MjgxMzAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQ
VS5jcHAgKi8sCi0JCQkJRDAwNDg3RUUyMjc0MjgxNDAwRUVEN0Q5IC8qIE5hdmlnYXRvckdQVS5o
ICovLAotCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAotCQkJ
CUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaCAqLywKLQkJCQlEMDBGNTk0ODIx
NkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywKLQkJCQlEMDBGNTk1MDIxNkZGQUMyMDAw
RDcxREIgLyogV2ViR1BVQWRhcHRlci5jcHAgKi8sCi0JCQkJRDAwRjU5NEYyMTZGRkFDMjAwMEQ3
MURCIC8qIFdlYkdQVUFkYXB0ZXIuaCAqLywKLQkJCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIg
LyogV2ViR1BVQWRhcHRlci5pZGwgKi8sCi0JCQkJRDBCRTEwNjEyMUU2QzBFQjAwRTQyQTg5IC8q
IFdlYkdQVUJpbmRHcm91cC5jcHAgKi8sCi0JCQkJRDBCRTEwNjAyMUU2QzBFQjAwRTQyQTg5IC8q
IFdlYkdQVUJpbmRHcm91cC5oICovLAotCQkJCUQwQkUxMDYyMjFFNkMwRUIwMEU0MkE4OSAvKiBX
ZWJHUFVCaW5kR3JvdXAuaWRsICovLAotCQkJCUQwQkUxMDRGMjFFNjlGODMwMEU0MkE4OSAvKiBX
ZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmggKi8sCi0JCQkJRDBCRTEwNTAyMUU2OUY4MzAwRTQyQTg5
IC8qIFdlYkdQVUJpbmRHcm91cEJpbmRpbmcuaWRsICovLAotCQkJCUQwODQwMzNEMjIxRTE4NjQw
MDAwNzIwNSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQlEMEJFMTA1
MjIxRTZBQTBEMDBFNDJBODkgLyogV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwQkUxMDUzMjFFNkFBMEQwMEU0MkE4OSAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmlk
bCAqLywKLQkJCQlEMDAzMjg3QTIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdyb3VwTGF5
b3V0LmNwcCAqLywKLQkJCQlEMDAzMjg3OTIxQzg2NDVCMDA2MjJBQTYgLyogV2ViR1BVQmluZEdy
b3VwTGF5b3V0LmggKi8sCi0JCQkJRDAwMzI4N0IyMUM4NjQ1QjAwNjIyQUE2IC8qIFdlYkdQVUJp
bmRHcm91cExheW91dC5pZGwgKi8sCi0JCQkJRDBEODY0OEQyMUI3MDY3NjAwM0M5ODNDIC8qIFdl
YkdQVUJ1ZmZlci5jcHAgKi8sCi0JCQkJRDBEODY0OEMyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQ
VUJ1ZmZlci5oICovLAotCQkJCUQwRDg2NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZm
ZXIuaWRsICovLAotCQkJCUQwQkUxMDRDMjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJC
aW5kaW5nLmggKi8sCi0JCQkJRDBCRTEwNEQyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZl
ckJpbmRpbmcuaWRsICovLAotCQkJCUQwNURENkREMjIzODg0MDYwMDk3QTgzNCAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmNwcCAqLywKLQkJCQlEMDVERDZERTIyMzg4NDA3MDA5N0E4MzQgLyogV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCUQwNURENkRGMjIzODg0MDcwMDk3QTgzNCAvKiBX
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLywKLQkJCQlEMEVBQ0Y3NzIxOTM3MjI4MDAwRkE3NUMg
LyogV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwICovLAotCQkJCUQwRUFDRjc2MjE5MzcyMjgwMDBG
QTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5oICovLAotCQkJCUQwRUFDRjc4MjE5MzcyMjgw
MDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8sCi0JCQkJRDAwRDc3RkUyMjQy
RUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgKi8sCi0JCQkJRDAw
RDc3RkQyMjQyRUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oICovLAot
CQkJCUQwMEQ3N0ZGMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aWRsICovLAotCQkJCUQwODkwMzNEMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21wdXRlUGlw
ZWxpbmUuY3BwICovLAotCQkJCUQwODkwMzNDMjI0MUE5OUYwMEYzRjQ0MCAvKiBXZWJHUFVDb21w
dXRlUGlwZWxpbmUuaCAqLywKLQkJCQlEMDg5MDMzRTIyNDFBOTlGMDBGM0Y0NDAgLyogV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmlkbCAqLywKLQkJCQlEMDg5MDMzODIyNDA2Mjg5MDBGM0Y0NDAgLyog
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDA4OTAzMzQyMjQw
NjAxRDAwRjNGNDQwIC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKLQkJ
CQlEMDg5MDMzNTIyNDA2MDFEMDBGM0Y0NDAgLyogV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5pZGwgKi8sCi0JCQkJRDAwRjU5NTMyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmlj
ZS5jcHAgKi8sCi0JCQkJRDAwRjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5o
ICovLAotCQkJCUQwMEY1OTU0MjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaWRsICov
LAotCQkJCUQwOUFGQjAxMjJEMDJFNTMwMEM0NTM4QyAvKiBXZWJHUFVEZXZpY2VFcnJvclNjb3Bl
cy5jcHAgKi8sCi0JCQkJRDA5QUZBRkYyMkQwMkU1MzAwQzQ1MzhDIC8qIFdlYkdQVURldmljZUVy
cm9yU2NvcGVzLmggKi8sCi0JCQkJRDA5QUZCMDMyMkQ0MENDNTAwQzQ1MzhDIC8qIFdlYkdQVURl
dmljZUVycm9yU2NvcGVzLmlkbCAqLywKLQkJCQlEMDlBQzAwQTIzMTczNUJFMDAxODc3NjIgLyog
V2ViR1BVRGV2aWNlRXZlbnRIYW5kbGVyLmggKi8sCi0JCQkJRDA5QUMwMEIyMzE3MzVCRTAwMTg3
NzYyIC8qIFdlYkdQVURldmljZUV2ZW50SGFuZGxlci5pZGwgKi8sCi0JCQkJOTE4NkYzQjYyMzI5
RkI0RTAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmNwcCAqLywKLQkJCQk5MTg2RjNCNzIzMjlG
QjRGMDBBRkY4NTcgLyogV2ViR1BVUGlwZWxpbmUuaCAqLywKLQkJCQlEMEM0MTlGMDIxODNFQjMx
MDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAotCQkJCUQwQzQx
OUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAq
LywKLQkJCQlEMDVBOTlFNTIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQu
Y3BwICovLAotCQkJCUQwNUE5OUU0MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxh
eW91dC5oICovLAotCQkJCUQwNUE5OUU2MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGlu
ZUxheW91dC5pZGwgKi8sCi0JCQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDA1QTk5RTEyMUM5QjUwRjAwMDMy
Qjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovLAotCQkJCUQwNUE5OUUy
MjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsICov
LAotCQkJCUQwRUFDRjkyMjE5NDBBNUIwMDBGQTc1QyAvKiBXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5jcHAgKi8sCi0JCQkJRDBFQUNGOTEyMTk0MEE1QjAwMEZBNzVDIC8qIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggKi8sCi0JCQkJRDBFQUNGOTMyMTk0MEE1QjAwMEZBNzVD
IC8qIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbCAqLywKLQkJCQlEMDg5MDMzNzIy
NDA2MUFDMDBGM0Y0NDAgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCAq
LywKLQkJCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8sCi0JCQkJMzEyRkY5M0MyMUE2MUNB
MTAwRUIxOTlEIC8qIFdlYkdQVVF1ZXVlLmNwcCAqLywKLQkJCQkzMTJGRjkzOTIxQTYxQzlGMDBF
QjE5OUQgLyogV2ViR1BVUXVldWUuaCAqLywKLQkJCQkzMTJGRjkzQjIxQTYxQ0EwMDBFQjE5OUQg
LyogV2ViR1BVUXVldWUuaWRsICovLAotCQkJCUQwOEFBMDM3MjIwRDFEMDUwMDU4QzUwMiAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBFQUNGOEMyMTk0MDNDOTAw
MEZBNzVDIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA4QUEwMzYy
MjBEMTlEQTAwNThDNTAyIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLywKLQkJ
CQlEMEVBQ0Y4RjIxOTQwQTIyMDAwRkE3NUMgLyogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
ICovLAotCQkJCUQwRUFDRjhFMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5oICovLAotCQkJCUQwRUFDRjkwMjE5NDBBMjIwMDBGQTc1QyAvKiBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlci5pZGwgKi8sCi0JCQkJRDBDNDE5RjgyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcCAqLywKLQkJCQlEMEM0MTlGNzIxODQwNERBMDA5RUMxREUgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKLQkJCQlEMEM0MTlGOTIxODQwNERBMDA5RUMxREUg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovLAotCQkJCUQwQURCMjhBMjIzNzczNjEwMEEy
MjkzNSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwQzQx
OUYyMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAq
LywKLQkJCQlEMEM0MTlGMzIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCAqLywKLQkJCQlEMEFEQjI2RDIyMzBCQjhFMDBBMjI5MzUgLyogV2ViR1BV
U2FtcGxlci5jcHAgKi8sCi0JCQkJRDBBREIyNkMyMjMwQkI4RTAwQTIyOTM1IC8qIFdlYkdQVVNh
bXBsZXIuaCAqLywKLQkJCQlEMEFEQjI2RjIyMzBDMUYxMDBBMjI5MzUgLyogV2ViR1BVU2FtcGxl
ci5pZGwgKi8sCi0JCQkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1v
ZHVsZS5jcHAgKi8sCi0JCQkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZS5oICovLAotCQkJCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFk
ZXJNb2R1bGUuaWRsICovLAotCQkJCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDA2MEQ4ODQyMTgyNUQ1RjAwMzM5MzE4
IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsICovLAotCQkJCUQwREEwQkU1MjE3
OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovLAotCQkJCUQwREEwQkU0MjE3
OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLywKLQkJCQlEMERBMEJFNjIxNzkz
MEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmlkbCAqLywKLQkJCQlEMDA0ODdFNTIyNkE2
MzQyMDBFRUQ3RDkgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJRDBB
REIyN0UyMjMyRjBDMDAwQTIyOTM1IC8qIFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLywK
LQkJCQlEMEVBQ0Y4NTIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5jcHAgKi8sCi0J
CQkJRDBFQUNGODQyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuaCAqLywKLQkJCQlE
MEVBQ0Y4NjIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8sCi0JCQkJRDBF
QUNGODgyMTkzRUU0RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmNwcCAqLywKLQkJCQlE
MEVBQ0Y4NzIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuaCAqLywKLQkJCQlE
MEVBQ0Y4OTIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuaWRsICovLAotCQkJ
CUQwMDQ4N0ZEMjI3N0FGODEwMEVFRDdEOSAvKiBXb3JrZXJOYXZpZ2F0b3IrR1BVLmlkbCAqLywK
LQkJCQlEMENBQUQ1MzIyNzdDMkE2MDA4MDFDREYgLyogV29ya2VyTmF2aWdhdG9yR1BVLmNwcCAq
LywKLQkJCQlEMDA0ODdGRTIyNzdBRjgyMDBFRUQ3RDkgLyogV29ya2VyTmF2aWdhdG9yR1BVLmgg
Ki8sCi0JCQkpOwotCQkJcGF0aCA9IHdlYmdwdTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07Ci0JCUQwODdDRTM3MjFBQ0E5NDIwMEJERTE3NCAvKiBjb2NvYSAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRDA2NUJFNTgyMkZCNjE2RDAwNzZE
RDYwIC8qIEdQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tICovLAotCQkJCUQwMjMyQjU4MjFD
QjQ5QjcwMDk0ODNCOSAvKiBHUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbSAqLywKLQkJCQlEMDg1
RTY0QTIyMzZERUFFMDBDM0UxRTIgLyogR1BVQmluZEdyb3VwTWV0YWwubW0gKi8sCi0JCQkJRDBE
ODY0OTEyMUI3NjBDNDAwM0M5ODNDIC8qIEdQVUJ1ZmZlck1ldGFsLm1tICovLAotCQkJCUQwODdD
RTM4MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCi0JCQkJ
RDA4OTAzNDAyMjQxQ0U0NjAwRjNGNDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1t
ICovLAotCQkJCUQwODkwMzNCMjI0MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVN
ZXRhbC5tbSAqLywKLQkJCQlEMDg3Q0UzQzIxQUNBOTQyMDBCREUxNzQgLyogR1BVRGV2aWNlTWV0
YWwubW0gKi8sCi0JCQkJMUM4NkNBNEUyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmNwcCAqLywKLQkJCQkxQzg2Q0E0RjIyQUEyM0M5MDAxQkY5NjEgLyog
R1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCAqLywKLQkJCQlBMzhBODdBMzI1MzhCRUU3
MDAzN0E0NzIgLyogR1BVUGxhdGZvcm1UeXBlc01ldGFsLmggKi8sCi0JCQkJRDA4N0NFM0IyMUFD
QTk0MjAwQkRFMTc0IC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0gKi8sCi0J
CQkJRDA4N0NFMzkyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVF1ZXVlTWV0YWwubW0gKi8sCi0JCQkJ
RDA4N0NFM0EyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0g
Ki8sCi0JCQkJRDA4N0NFM0QyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0
YWwubW0gKi8sCi0JCQkJRDBBREIyNkIyMjMwQUNDMDAwQTIyOTM1IC8qIEdQVVNhbXBsZXJNZXRh
bC5tbSAqLywKLQkJCQlEMDg3Q0U0MDIxQUNBOTQyMDBCREUxNzQgLyogR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0gKi8sCi0JCQkJRDA4N0NFM0UyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFp
bk1ldGFsLm1tICovLAotCQkJCUQwODdDRTNGMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJl
TWV0YWwubW0gKi8sCi0JCQkJRDA2RUY1NTMyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0
YWwubW0gKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzI4ODMsMTggKzMyMDQxLDYg
QEAKIAkJCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMTE1MThGQzFFNzhDMTVGMDBFQzUxNEEgLyogR1BVQmFzZWRD
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxMTIxQTRD
MzY1MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEy
RkY5MTIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzEyRkY5MTMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE0MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQcm9ncmFt
bWFibGVTdGFnZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkZGOTE1MjFBNEMz
NjUwMEVCMTk5RCAvKiBHUFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MTYyMUE0
QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggaW4gSGVhZGVycyAqLywKLQkJCQkz
MTJGRjkxNzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxODIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVy
TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJGRjkxOTIxQTRDMzY1MDBFQjE5OUQgLyog
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEyRkY5MUEy
MUE0QzM2NTAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEy
RkY5MUIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxMkZGOTFDMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIwMDcxQjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjA0MTQ2QjVDNkIwMEFBNzgzNCAvKiBHcmFk
aWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2MDczLDcgKzM1MjE5LDYgQEAKIAkJCQkw
QzNGMUY1QjEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZGOTk1QTI2MUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFZlcnRleEFycmF5
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3N0ExN0E3ODEyRjI4NjQyMDA0RTAyRjYgLyog
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE4NDM2REUy
MUI5REFBRjAwRUQzODNFIC8qIFdlYkdQVUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUI4
MUNCNzFGQUE0NDYyMDAzN0QxRTYgLyogV2ViSGVhcEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTM2MTQ3LDkgKzM1MjkyLDYgQEAKIAkJ
CQkyRUJCQzNEODFCNjU5ODgzMDBGNTI1M0QgLyogV2hlZWxFdmVudERlbHRhRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRTlCNUQ4RjFCNjZBOTRFMDA4QzZBMjQgLyogV2hlZWxFdmVudERl
bHRhRmlsdGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUUzMzVGMjFBQ0IwOUUyMDBFNDAx
RUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTk1NkYy
NTIzMzFBRDUzMDA1N0U5RDIgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCBpbiBIZWFkZXJz
ICovLAotCQkJCUExOTU2RjI0MjMzMUFEMjEwMDU3RTlEMiAvKiBXSExTTFByb2dyYW0uaCBpbiBI
ZWFkZXJzICovLAotCQkJCUExOTU2RjIzMjMzMUFDRjIwMDU3RTlEMiAvKiBXSExTTFJlcGxhY2VX
aXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lk
Z2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExRENCMTE2NEMzOUE4MDBENDlCQzEgLyogV2lk
dGhDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5QjAyRUYwRUEyREJDNDAwQzU0NTcwIC8q
IFdpZHRoSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDBiNWY4ZWUyM2U5M2I4NGYxYWE2
NzNlNjk0ODJlZTFmNjdjN2YwNDYuLmM4ZGI2ODc5OWY5NjIwMDE0YzJiNDQ1NzJkZGQyYTUzMjcz
ODk3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKQEAgLTEwNCwzNCArMTA0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1h
Y3JvKEdhbWVwYWQpIFwKICAgICBtYWNybyhHYW1lcGFkQnV0dG9uKSBcCiAgICAgbWFjcm8oR2Ft
ZXBhZEV2ZW50KSBcCi0gICAgbWFjcm8oR1BVKSBcCi0gICAgbWFjcm8oR1BVQWRhcHRlcikgXAot
ICAgIG1hY3JvKEdQVUJpbmRHcm91cCkgXAotICAgIG1hY3JvKEdQVUJpbmRHcm91cExheW91dCkg
XAotICAgIG1hY3JvKEdQVUJ1ZmZlcikgXAotICAgIG1hY3JvKEdQVUJ1ZmZlclVzYWdlKSBcCi0g
ICAgbWFjcm8oR1BVQ2FudmFzQ29udGV4dCkgXAotICAgIG1hY3JvKEdQVUNvbG9yV3JpdGUpIFwK
LSAgICBtYWNybyhHUFVDb21tYW5kQnVmZmVyKSBcCi0gICAgbWFjcm8oR1BVQ29tbWFuZEVuY29k
ZXIpIFwKLSAgICBtYWNybyhHUFVDb21wdXRlUGFzc0VuY29kZXIpIFwKLSAgICBtYWNybyhHUFVD
b21wdXRlUGlwZWxpbmUpIFwKLSAgICBtYWNybyhHUFVEZXZpY2UpIFwKLSAgICBtYWNybyhHUFVP
dXRPZk1lbW9yeUVycm9yKSBcCi0gICAgbWFjcm8oR1BVUGlwZWxpbmVMYXlvdXQpIFwKLSAgICBt
YWNybyhHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcikgXAotICAgIG1hY3JvKEdQVVF1ZXVlKSBc
Ci0gICAgbWFjcm8oR1BVUmVuZGVyUGFzc0VuY29kZXIpIFwKLSAgICBtYWNybyhHUFVSZW5kZXJQ
aXBlbGluZSkgXAotICAgIG1hY3JvKEdQVVNhbXBsZXIpIFwKLSAgICBtYWNybyhHUFVTaGFkZXJN
b2R1bGUpIFwKLSAgICBtYWNybyhHUFVTaGFkZXJTdGFnZSkgXAotICAgIG1hY3JvKEdQVVN3YXBD
aGFpbikgXAotICAgIG1hY3JvKEdQVVRleHR1cmUpIFwKLSAgICBtYWNybyhHUFVUZXh0dXJlVXNh
Z2UpIFwKLSAgICBtYWNybyhHUFVUZXh0dXJlVmlldykgXAotICAgIG1hY3JvKEdQVVVuY2FwdHVy
ZWRFcnJvckV2ZW50KSBcCi0gICAgbWFjcm8oR1BVVmFsaWRhdGlvbkVycm9yKSBcCiAgICAgbWFj
cm8oSGlnaGxpZ2h0UmVnaXN0ZXIpIFwKICAgICBtYWNybyhIaWdobGlnaHQpIFwKICAgICBtYWNy
byhIVE1MQXR0YWNobWVudEVsZW1lbnQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDc4
MmI1ZjI3NWEzODM3ZGU3ZjYyODVjODlhZjgwODI3MjE0ZDUzMDkuLjMzODFmYmYxYzQ5NjQwNjdl
NjM4ZWY3NWZkNjhkN2UyYzJmMDk3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzM2
LDkgKzMzNiw2IEBACiAjaWYgRU5BQkxFKFdFQkdMMikKICNpbmNsdWRlICJXZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgiCiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVUNh
bnZhc0NvbnRleHQuaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9B
UEkpCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjM5NCwxMCArNjM5MSw2IEBA
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4gRG9jdW1lbnQ6OmdldENTU0NhbnZhc0Nv
bnRleHQoY29uc3QgU3RyaW5nJiB0eXBlCiAgICAgaWYgKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ+KCpjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIFJlbmRlcmluZ0NvbnRleHQgeyBSZWZQdHI8
V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4oKmNvbnRleHQpIH0gfTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKGlz
PEdQVUNhbnZhc0NvbnRleHQ+KCpjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFJlbmRlcmluZ0Nv
bnRleHQgeyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4geyAmZG93bmNhc3Q8R1BVQ2FudmFzQ29u
dGV4dD4oKmNvbnRleHQpIH0gfTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFJlbmRlcmluZ0NvbnRl
eHQgeyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+KCpjb250ZXh0KSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IGM5OGUyMDVmYWY3NGU0OGE2ZGRmYjllZmZlZGJlMTgyN2ZlYTlmMzguLmM0ZGYwMzdiMzk0
MzlkOTE2N2NhN2ZhM2RjMDhiOGM1YmQxZWY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0z
MTgsOSArMzE4LDYgQEAgdXNpbmcgUmVuZGVyaW5nQ29udGV4dCA9IFZhcmlhbnQ8CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIFJlZlB0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiwK
LSNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+
LAogI2VuZGlmCiAgICAgUmVmUHRyPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4sCiAgICAg
UmVmUHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmlu
ZGV4IDc1NzQxNDA4N2E2YmNhNjM1YTNmY2M5NWVmZmY2ZTI0ZGUzZGYyNWUuLjY4MDRiMGY1NTZj
ZTY0MDA1NDQ0MjFmZWU2YWZjNzQyZWNkMWZmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApA
QCAtMjQsOSArMjQsNiBAQCB0eXBlZGVmICgKICNlbmRpZgogI2lmIGRlZmluZWQoRU5BQkxFX1dF
QkdMMikgJiYgRU5BQkxFX1dFQkdMMgogICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgb3IKLSNl
bmRpZgotI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdQVSkgJiYgRU5BQkxFX1dFQkdQVQotICAgIEdQ
VUNhbnZhc0NvbnRleHQgb3IKICNlbmRpZgogICAgIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dCBvciAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDE2MDExYWY2ZWYyMzA0NzY5NTI1ODExOGM2NDky
YjBiZWEwOWRhMmIuLjJiY2Q3M2MzYjgzODA2YmQxYjdlMTA5ZTZmYzg5NjdiMWJjZjk5YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC05MCw3ICs5MCw2IEBAIE92ZXJjb25zdHJhaW5l
ZEVycm9yRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYUVuY3J5cHRlZEV2ZW50
IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogTWVkaWFLZXlNZXNzYWdlRXZlbnQgY29uZGl0
aW9uYWw9RU5DUllQVEVEX01FRElBCiBQb2ludGVyRXZlbnQKLUdQVVVuY2FwdHVyZWRFcnJvckV2
ZW50IGNvbmRpdGlvbmFsPVdFQkdQVQogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQgY29uZGl0
aW9uYWw9UElDVFVSRV9JTl9QSUNUVVJFX0FQSQogWFJJbnB1dFNvdXJjZUV2ZW50IGNvbmRpdGlv
bmFsPVdFQlhSCiBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50IGNvbmRpdGlvbmFsPVdFQlhSCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmNjBjODkyN2E1NmJj
MzU4ZDEwN2I5ZGI4ZWNlOWE0YzM3MTIzNmMyLi4xZDhiYTY1NDk4Y2Y2Nzc3YzI3YjgxODA4M2M4
NGVjOWM0M2QyNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
QEAgLTU2LDcgKzU2LDYgQEAgVGV4dFRyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlkZW9U
cmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJBbmltYXRpb24K
LVdlYkdQVURldmljZSBjb25kaXRpb25hbD1XRUJHUFUKIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBj
b25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA1MDEzY2VkYTAzNTdh
YzFhZDIwZTU1NmZmMjc3NmEzMTNjYzVlZTM2Li43NGY4YTJlYmQ3MDI1NGRiOThjNzJlYWNlM2Yw
NzZhNjEzMjk2NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtODEsMTAgKzgxLDYgQEAKICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmgi
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4
dC5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCWFIpCiAjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0yNzAsMTQgKzI2Niw2IEBAIEV4Y2VwdGlvbk9y
PHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KEpTQzo6CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAg
ICAgICAgaWYgKG1fY29udGV4dC0+aXNXZWJHUFUoKSkgewotICAgICAgICAgICAgaWYgKCFpc1dl
YkdQVVR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4
dD4geyAmZG93bmNhc3Q8R1BVQ2FudmFzQ29udGV4dD4oKm1fY29udGV4dCkgfSB9OwotICAgICAg
ICB9Ci0jZW5kaWYKLQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAg
ICB9CkBAIC0zMjMsMTUgKzMxMSw2IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6CiAgICAgfQog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChpc1dlYkdQVVR5cGUoY29udGV4
dElkKSkgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0V2ViR1BVKGNvbnRl
eHRJZCk7Ci0gICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRl
eHQ+IHsgY29udGV4dCB9IH07Ci0gICAgfQotI2VuZGlmCi0KICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCkBAIC0zNDgsMTEg
KzMyNyw2IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIGdldENvbnRleHRXZWJH
TChIVE1MQ2FudmFzRWxlbWVudDo6dG9XZWJHTFZlcnNpb24odHlwZSkpOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBl
KHR5cGUpKQotICAgICAgICByZXR1cm4gZ2V0Q29udGV4dFdlYkdQVSh0eXBlKTsKLSNlbmRpZgot
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ5NSw0NyArNDY5LDYgQEAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHTChXZWJH
TFZlcnNpb24gdHlwZSwKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLWJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCi17Ci0gICAgcmV0dXJuIHR5cGUgPT0gImdwdSI7Ci19Ci0KLUdQVUNhbnZhc0Nv
bnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIEhUTUxDYW52YXNFbGVtZW50Ojpp
c1dlYkdQVVR5cGUodHlwZSkpOwotICAgIEFTU0VSVCghbV9jb250ZXh0KTsKLQotICAgIGlmICgh
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLndlYkdQVUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBtX2NvbnRleHQgPSBHUFVDYW52YXNDb250ZXh0OjpjcmVhdGUoKnRoaXMp
OwotICAgIGlmIChtX2NvbnRleHQpIHsKLSAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBS
ZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52
YXMuCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ2FudmFzQ29udGV4dCo+KG1fY29udGV4dC5n
ZXQoKSk7Ci19Ci0KLUdQVUNhbnZhc0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250
ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUs
IEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlwZSkpOwotCi0gICAgaWYgKCFkb2N1
bWVudCgpLnNldHRpbmdzKCkud2ViR1BVRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXNXZWJHUFUoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUNvbnRleHRXZWJHUFUodHlwZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUNh
bnZhc0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKLQogYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNCaXRtYXBSZW5kZXJlclR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogewogICAgIHJldHVybiB0eXBlID09ICJiaXRtYXByZW5kZXJlciI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggZjY3OGYwZWRhM2Q5
MjU0NmI2NTExZmNjMDgyOWQzYWRiODg2MTkzYi4uMGRkMTkwZTAwNDNjYjgxMmY1MmM2Y2JkMGI4
YWM2NWZkYWU4OTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApA
QCAtODksMTIgKzg5LDYgQEAgcHVibGljOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGdldENvbnRleHRXZWJHTChXZWJHTFZlcnNpb24gdHlwZSwgV2ViR0xDb250ZXh0QXR0cmlidXRl
cyYmID0geyB9KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgYm9v
bCBpc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgR1BVQ2FudmFzQ29udGV4dCogY3Jl
YXRlQ29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKLSAgICBHUFVDYW52YXNDb250ZXh0KiBn
ZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgYm9v
bCBpc0JpdG1hcFJlbmRlcmVyVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQqIGNyZWF0ZUNvbnRleHRCaXRtYXBSZW5kZXJlcihjb25zdCBTdHJpbmcm
LCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncyYmKTsKICAgICBJbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRCaXRtYXBSZW5kZXJlcihjb25zdCBTdHJpbmcm
LCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncyYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKaW5kZXggYzZmMWQwZmM0MGRlZTE1NDdjZmZkN2M3
Y2NjNDVlN2FjYjcyYTA2Ni4uYTY3NzlmZGE5OTU3ZGViZjA5MjNjNzI1YWQyM2ZlYjEwYzY4NDNm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKQEAgLTMwLDkg
KzMwLDYgQEAgdHlwZWRlZiAoCiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTDIpICYm
IEVOQUJMRV9XRUJHTDIKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IG9yCi0jZW5kaWYKLSNp
ZiBkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9XRUJHUFUKLSAgICBHUFVDYW52YXND
b250ZXh0IG9yCiAjZW5kaWYKICAgICBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgb3IgCiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDkyYzAzYzE5ZTRmNzE2NGU4YWQ4N2E4OWViZDZkNTA0M2Y1YjVjYjIuLjcxOWI2MzFlMDI1MjY4
N2QwMzRjNmU0MWUxZTdmYzkyN2RiMWMwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGlzV2ViR0woKSBjb25zdCB7IHJldHVybiBpc1dlYkdMMSgpIHx8IGlzV2ViR0wyKCk7
IH0KLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdQVSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNHUFVCYXNlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcFJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggYzU4NzRjNzA4NzQxNzc5MDI5NDU4ZmI5MmNlY2E2
ZDQ2YmY2Y2EwZi4uNjFmNzZjMWNkNTg4ZjY4NzFlNjBiMzVlZWIwYmQ1ZWFkNWVhNWY5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTM3LDcg
KzM3LDYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC02Miw3ICs2MSw2IEBACiAjaW5jbHVkZSAiSlNJ
bWFnZVNtb290aGluZ1F1YWxpdHkuaCIKICNpbmNsdWRlICJKU1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkpT
V2ViR1BVRGV2aWNlLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAi
UGF0aDJELmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgpAQCAtODUsNyArODMsNiBAQAogI2luY2x1
ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRlICJX
ZWJHUFVEZXZpY2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtMTAxLDUzICs5OCwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLSNpZiBF
TkFCTEUoV0VCR1BVKQotc3RhdGljIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNJZkNvbnRleHRN
YXRjaGVzRGV2aWNlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQsIFdlYkdQVURldmlj
ZSYgZGV2aWNlKQotewotICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkgewot
ICAgICAgICBhdXRvJiBjb250ZXh0R1BVID0gZG93bmNhc3Q8R1BVQ2FudmFzQ29udGV4dD4oY29u
dGV4dCk7Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJHUFVTd2FwQ2hhaW4gPSBjb250ZXh0R1BVLnN3
YXBDaGFpbigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZ3B1U3dhcENoYWluID0gd2ViR1BV
U3dhcENoYWluLT5zd2FwQ2hhaW4oKSkgewotICAgICAgICAgICAgICAgIGlmIChncHVTd2FwQ2hh
aW4gPT0gZGV2aWNlLmRldmljZSgpLnN3YXBDaGFpbigpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpczxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4dEdQVS5jYW52YXNCYXNlKCkpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4o
Y29udGV4dEdQVS5jYW52YXNCYXNlKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiBS
ZWY8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rv
ckNhbnZhcyhjb250ZXh0KSk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotUmVmPEluc3BlY3Rv
ckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQ2FudmFzKGRldmljZSkpOwotfQot
I2VuZGlmCi0KIEluc3BlY3RvckNhbnZhczo6SW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBtX2lkZW50aWZpZXIoImNhbnZhczoiICsgSWRlbnRp
ZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKIHsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQiIGZv
ciBXZWJHUFUgaXMgdGhlIGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgotICAgIEFT
U0VSVCghaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpOwotI2VuZGlmCi19Ci0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotSW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMoV2ViR1BVRGV2
aWNlJiBkZXZpY2UpCi0gICAgOiBtX2lkZW50aWZpZXIoImNhbnZhczoiICsgSWRlbnRpZmllcnNG
YWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX2NvbnRleHQoZGV2aWNlKQotewog
fQotI2VuZGlmCiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEluc3BlY3RvckNhbnZhczo6Y2Fu
dmFzQ29udGV4dCgpIGNvbnN0CiB7CkBAIC0xNjUsMTkgKzEyNSw2IEBAIEhUTUxDYW52YXNFbGVt
ZW50KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQoKSBjb25zdAogICAgICAgICAgICAg
ICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHQuY2FudmFzQmFz
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZp
Y2U+IGRldmljZVdyYXBwZXIpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7Ci0gICAgICAgICAgICBh
dXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5j
ZXNMb2NrKCkgfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZhc0lmQ29udGV4dE1hdGNo
ZXNEZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FudmFzRWxlbWVudDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfSwKLSNlbmRp
ZgogICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg2LDIyICsxMzMsNiBAQCBI
VE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShXRUJHUFUpCi1XZWJHUFVEZXZp
Y2UqIEluc3BlY3RvckNhbnZhczo6ZGV2aWNlQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgaWYgKGF1
dG8qIGRldmljZVdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdl
YkdQVURldmljZT4+KG1fY29udGV4dCkpCi0gICAgICAgIHJldHVybiAmZGV2aWNlV3JhcHBlci0+
Z2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQ2FudmFzOjpp
c0RldmljZUZvckNhbnZhc0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKLXsKLSAgICBpZiAoYXV0byogZGV2aWNlID0gZGV2aWNlQ29udGV4dCgpKQotICAgICAg
ICByZXR1cm4gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZShjb250ZXh0LCAqZGV2aWNlKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRleHQsCkBAIC0yMDksMTIgKzE0MCw2IEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdyYXBwZXIuZ2V0
KCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgICAgICB9LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFtd
IChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4gZGV2aWNlV3JhcHBlcikgewot
ICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5nZXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBkZXZpY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICB9LAot
I2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDUsMTEgKzE3MCw2
IEBAIEpTQzo6SlNWYWx1ZSBJbnNwZWN0b3JDYW52YXM6OnJlc29sdmVDb250ZXh0KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMpIGNvbnN0CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBKU0M6
OkpTVmFsdWUoKTsKICAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbJl0g
KHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPiBkZXZpY2VXcmFwcGVyKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGRldmljZVdyYXBwZXIu
Z2V0KCkpOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZSgpOwpAQCAtMjY0LDIxICsxODQsNiBAQCBIYXNoU2V0PEVsZW1lbnQqPiBJbnNwZWN0
b3JDYW52YXM6OmNsaWVudE5vZGVzKCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQg
PSBjb250ZXh0V3JhcHBlci5nZXQoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZh
c0Jhc2UoKS5jc3NDYW52YXNDbGllbnRzKCk7CiAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4gZGV2
aWNlV3JhcHBlcikgewotICAgICAgICAgICAgYXV0byYgZGV2aWNlID0gZGV2aWNlV3JhcHBlci5n
ZXQoKTsKLQotICAgICAgICAgICAgSGFzaFNldDxFbGVtZW50Kj4gY2FudmFzRWxlbWVudENsaWVu
dHM7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OwotICAgICAgICAgICAgICAgIGZv
ciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
Omluc3RhbmNlcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVt
ZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4
dCwgZGV2aWNlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnRDbGllbnRz
LmFkZChjYW52YXNFbGVtZW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gY2FudmFzRWxlbWVudENsaWVudHM7Ci0gICAgICAgIH0sCi0jZW5k
aWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gSGFzaFNldDxFbGVtZW50Kj4oKTsKQEAgLTMxNyw3
ICsyMjIsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKCkKIAog
ICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQp
OwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVj
dG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQog
CiAgICAgY29udGV4dC0+c2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihmYWxz
ZSk7CiB9CkBAIC04NDQsNyArNzQ4LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFj
dGlvbihTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm8KIAogICAg
IGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwot
ICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9y
OiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAg
ICAgaWYgKGlzPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkgJiYgc2hvdWxk
U25hcHNob3RCaXRtYXBSZW5kZXJlckFjdGlvbihuYW1lKSkKICAgICAgICAgbV9jb250ZW50Q2hh
bmdlZCA9IHRydWU7CkBAIC05MjgsMTEgKzgzMSw2IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpD
YW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJl
CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0sCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2Vi
R1BVRGV2aWNlPikgewotICAgICAgICAgICAgcmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRl
eHRUeXBlOjpXZWJHUFU7Ci0gICAgICAgIH0sCi0jZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0
ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtOTk2LDI4ICs4OTQsNiBAQCBSZWY8UHJvdG9jb2w6OkNhbnZh
czo6Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2Fw
dHVyZQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSNp
ZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJH
UFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIC0+IENvbnRleHRBdHRyaWJ1dGVzVHlwZSB7Ci0gICAg
ICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwotICAgICAgICAgICAg
aWYgKGNvbnN0IGF1dG8mIG9wdGlvbnMgPSBkZXZpY2UuYWRhcHRlcigpLm9wdGlvbnMoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gY29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gUHJvdG9jb2w6
OkNhbnZhczo6Q29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAg
IC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHBvd2VyUHJlZmVy
ZW5jZSA9IG9wdGlvbnMtPnBvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKHBvd2VyUHJlZmVyZW5jZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgR1BVUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0UG93ZXJQcmVmZXJlbmNlKCJsb3ctcG93ZXIi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAg
IGNhc2UgR1BVUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldFBvd2VyUHJlZmVyZW5jZSgi
aGlnaC1wZXJmb3JtYW5jZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUoY29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LAotI2VuZGlmCiAgICAgICAgIFtd
IChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDQ5LDcgKzkyNSw2IEBAIFJlZjxQcm90b2NvbDo6
UmVjb3JkaW5nOjpSZWNvcmRpbmc+IEluc3BlY3RvckNhbnZhczo6cmVsZWFzZU9iamVjdEZvclJl
Y29yZGluZygpCiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFT
U0VSVChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1
MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBX
ZWJHUFVEZXZpY2UKIAogICAgIFByb3RvY29sOjpSZWNvcmRpbmc6OlR5cGUgdHlwZTsKICAgICBp
ZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihjb250ZXh0KSkKQEAgLTEyODEsNyArMTE1
Niw2IEBAIFJlZjxQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNh
bnZhczo6YnVpbGRJbml0aWFsU3RhdGUoKQogewogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXND
b250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFz
IHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAgICAgYXV0byBpbml0aWFsU3RhdGVQYXls
b2FkID0gUHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlOjpjcmVhdGUoKS5yZWxlYXNl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAppbmRleCA4
YTQ3ZGVjMjVhZDZjODgzMTNjN2Q0YWQ2ZjI1MDk2MWMwMDYyZWZmLi42YTk5ZWNmZjQ3YjU4MGVj
NGM2OTYxMDEwZmQ2NTAxZmRhMzUzNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShXRUJHUFUp
Ci0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYW52YXNHcmFkaWVudDsKQEAgLTYwLDIwICs1NiwxMiBAQCBjbGFzcyBUeXBl
ZE9NQ1NTSW1hZ2VWYWx1ZTsKIGNsYXNzIEluc3BlY3RvckNhbnZhcyBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3BlY3RvckNhbnZhcz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5z
cGVjdG9yQ2FudmFzPiBjcmVhdGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwotI2lmIEVOQUJM
RShXRUJHUFUpCi0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JDYW52YXM+IGNyZWF0ZShXZWJHUFVE
ZXZpY2UmKTsKLSNlbmRpZgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
YW52YXNDb250ZXh0KCkgY29uc3Q7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhc0VsZW1l
bnQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgV2ViR1BVRGV2aWNlKiBkZXZp
Y2VDb250ZXh0KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RldmljZUZvckNhbnZhc0NvbnRleHQoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwotI2VuZGlmCi0KICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICBKU0M6OkpT
VmFsdWUgcmVzb2x2ZUNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpAQCAtMTE1
LDkgKzEwMyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDYW52YXMoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYpOwotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgSW5zcGVjdG9y
Q2FudmFzKFdlYkdQVURldmljZSYpOwotI2VuZGlmCiAKICAgICB2b2lkIGFwcGVuZEFjdGlvblNu
YXBzaG90SWZOZWVkZWQoKTsKIApAQCAtMTU1LDkgKzE0MCw2IEBAIHByaXZhdGU6CiAKICAgICBW
YXJpYW50PAogICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ+LAotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8V2ViR1BVRGV2aWNlPiwKLSNlbmRpZgogICAgICAgICBNb25vc3RhdGUKICAgICA+IG1fY29u
dGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAppbmRleCBjMTIxNTIzMDcxYTAyNjg4OGNiZDYwODAzMWFkMTVkYzg1
YWYxNzE5Li5mZTIwNmFlYTM1ZTY3OTMzZTIwMTlmYzVhZjFlOTNhZmRhMGUzODM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcApAQCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgogI2lu
Y2x1ZGUgIldlYkRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKQEAgLTgwLDEwICs3OSw2IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJXZWJHUFVTd2Fw
Q2hhaW4uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CkBAIC0xMTIyLDQzICsxMTE3LDYgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVEZXZpY2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmIChh
dXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50
KCkpCi0gICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVhdGVXZWJHUFVEZXZpY2UoZGV2aWNlKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2
aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVE
ZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+d2ls
bERlc3Ryb3lXZWJHUFVEZXZpY2UoZGV2aWNlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxDb25maWd1cmVTd2FwQ2hhaW5JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUsIFdlYkdQ
VVN3YXBDaGFpbiYgbmV3U3dhcENoYWluKQotewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAgICAgIGNhbnZh
c0FnZW50LT53aWxsQ29uZmlndXJlU3dhcENoYWluKGNvbnRleHRHUFUsIG5ld1N3YXBDaGFpbik7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBl
bGluZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BV
RGV2aWNlJiBkZXZpY2UsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBpZiAoYXV0
byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgp
KQotICAgICAgICBjYW52YXNBZ2VudC0+ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoZGV2aWNlLCBw
aXBlbGluZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJv
eVdlYkdQVVBpcGVsaW5lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKLSAgICAgICAg
Y2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUocGlwZWxpbmUpOwotfQotCi1J
bnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRp
bmdBZ2VudHMoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgcmV0dXJuIGluc3RydW1lbnRp
bmdBZ2VudHMoZGV2aWNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiB0YXJn
ZXQsIEtleWZyYW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVk
VGltaW5nKQogewogICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdBbmltYXRpb25BZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDdkNWU3ZDU3YmY5MTFm
ZGRmOTBlZDQwMGEyMjVhZmEwODNlNmM4NzEuLjMxZjA1YzUwZjgwNWRiNTc5YjhjOTMwYmM5MGI5
ZjYxYTkyZmFjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTU5LDExICs1OSw2IEBACiAjaW5jbHVkZSAiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotI2lu
Y2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBj
bGFzcyBTY3JpcHRBcmd1bWVudHM7CkBAIC0xMDQsMTEgKzk5LDYgQEAgY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBXZWJHTFByb2dyYW07CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShXRUJHUFUpCi1jbGFzcyBXZWJHUFVEZXZpY2U7Ci1jbGFzcyBXZWJHUFVTd2FwQ2hhaW47
Ci0jZW5kaWYKLQogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBD
b21wdXRlZEVmZmVjdFRpbWluZzsKQEAgLTMwMywxMyArMjkzLDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzV2ViR0xQcm9ncmFtRGlzYWJsZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYsIFdlYkdMUHJvZ3JhbSYpOwogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQcm9ncmFtSGlnaGxp
Z2h0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJHUFVEZXZp
Y2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVEZXZp
Y2UoV2ViR1BVRGV2aWNlJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbENvbmZpZ3VyZVN3YXBDaGFp
bihHUFVDYW52YXNDb250ZXh0JiwgV2ViR1BVU3dhcENoYWluJik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgV2ViR1BVUGlwZWxpbmUmKTsK
LSAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5l
Jik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVs
ZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lKFdlYkFuaW1hdGlvbiYpOwpAQCAtNTEz
LDE0ICs0OTYsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQcm9ncmFtRGlz
YWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHTFByb2dyYW0mKTsKICAgICBzdGF0
aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHN0YXRp
YyB2b2lkIGRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdl
YkdQVURldmljZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95V2ViR1BVRGV2aWNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR1BVRGV2aWNlJik7Ci0gICAgc3RhdGljIHZvaWQg
d2lsbENvbmZpZ3VyZVN3YXBDaGFpbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEdQVUNhbnZh
c0NvbnRleHQmLCBXZWJHUFVTd2FwQ2hhaW4mKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVX
ZWJHUFVQaXBlbGluZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdQVURldmljZSYsIFdl
YkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGlu
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdQVVBpcGVsaW5lJik7Ci0gICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoV2ViR1BVRGV2aWNlJik7
Ci0jZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRF
ZmZlY3RUaW1pbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKQEAgLTE0NzUsNDMgKzE0
NTAsNiBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzV2ViR0xQcm9n
cmFtSGlnaGxpZ2h0ZWQoV2ViR0xSZW5kZXJpbmdDbwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
V0VCR1BVKQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVX
ZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHMoZGV2aWNlKSkKLSAgICAgICAgZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbCgqYWdl
bnRzLCBkZXZpY2UpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKFdlYkdQVURldmljZSYgZGV2aWNlKQotewotICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzKGRldmljZSkpCi0gICAgICAgIHdpbGxEZXN0cm95V2ViR1BV
RGV2aWNlSW1wbCgqYWdlbnRzLCBkZXZpY2UpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYg
Y29udGV4dEdQVSwgV2ViR1BVU3dhcENoYWluJiBuZXdTd2FwQ2hhaW4pCi17Ci0gICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoY29udGV4dEdQVS5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKLSAgICAgICAgd2lsbENvbmZpZ3VyZVN3YXBDaGFpbkltcGwoKmFnZW50cywg
Y29udGV4dEdQVSwgbmV3U3dhcENoYWluKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmlj
ZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzKGRldmljZSkpCi0gICAgICAgIGRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lSW1wbCgqYWdlbnRz
LCBkZXZpY2UsIHBpcGVsaW5lKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGlu
ZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAo
YXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhwaXBlbGluZS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKQotICAgICAgICB3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lSW1wbCgqYWdl
bnRzLCBwaXBlbGluZSk7Ci19Ci0jZW5kaWYKLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQsIEtleWZy
YW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5nKQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDU0
ZWQ4NDBiZTAxODI3ZDE3MmE0ZjhmOWIzMWI5NDQwNjY1YTc3NzAuLmEzMGUyMTY0M2ExNTdhODJj
NWRkN2U1YjRkODU4NDBiNzRmYTUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgiCiAKLSNp
ZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRl
bnRpZmllcnNGYWN0b3J5Lmg+CkBAIC00MiwxNSArNDIsNiBAQAogI2luY2x1ZGUgIldlYkdMU2hh
ZGVyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlLmgiCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKQEAgLTYyLDEzICs1Myw2IEBAIFJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjpjcmVhdGUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtCiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXRUJHUFUpCi1SZWY8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSwgSW5zcGVj
dG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShwaXBlbGluZSwgaW5zcGVjdG9yQ2FudmFzKSk7Ci19Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIEluc3BlY3RvclNoYWRlclByb2dyYW06Okluc3Bl
Y3RvclNoYWRlclByb2dyYW0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBJbnNwZWN0b3JDYW52YXMm
IGluc3BlY3RvckNhbnZhcykKICAgICA6IG1faWRlbnRpZmllcigicHJvZ3JhbToiICsgSWRlbnRp
ZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCkBAIC03OSwxNiArNjMsNiBAQCBJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtKFdlYkdMUHJvZ3JhbSYg
cHJvZ3JhbSwgSW5zcGVjdG9yQwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHUFVQaXBlbGlu
ZSYgcGlwZWxpbmUsIEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzKQotICAgIDogbV9p
ZGVudGlmaWVyKCJwaXBlbGluZToiICsgSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCkpCi0gICAgLCBtX2NhbnZhcyhpbnNwZWN0b3JDYW52YXMpCi0gICAgLCBtX3Byb2dyYW0o
cGlwZWxpbmUpCi17Ci0gICAgQVNTRVJUKG1fY2FudmFzLmRldmljZUNvbnRleHQoKSk7Ci19Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIFdlYkdMUHJvZ3JhbSogSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbTo6cHJvZ3JhbSgpIGNvbnN0CiB7CkBAIC05OCwxNSArNzIsNiBAQCBXZWJHTFByb2dy
YW0qIEluc3BlY3RvclNoYWRlclByb2dyYW06OnByb2dyYW0oKSBjb25zdAogfQogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoV0VCR1BVKQotV2ViR1BVUGlwZWxpbmUqIEluc3BlY3RvclNoYWRlclByb2dy
YW06OnBpcGVsaW5lKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogcGlwZWxpbmVXcmFwcGVyID0g
V1RGOjpnZXRfaWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGluZT4+KG1fcHJv
Z3JhbSkpCi0gICAgICAgIHJldHVybiAmcGlwZWxpbmVXcmFwcGVyLT5nZXQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQkdMKQogc3RhdGljIFdlYkdM
U2hhZGVyKiBzaGFkZXJGb3JUeXBlKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUpCiB7CkBAIC0xMjcsMzEgKzky
LDYgQEAgc3RhdGljIFdlYkdMU2hhZGVyKiBzaGFkZXJGb3JUeXBlKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2EKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdF
QkdQVSkKLXN0YXRpYyBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBzaGFkZXJGb3JUeXBlKFdl
YkdQVVBpcGVsaW5lJiBwaXBlbGluZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUpCi17Ci0gICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGU6OkNvbXB1dGU6Ci0gICAg
ICAgIGlmIChpczxXZWJHUFVDb21wdXRlUGlwZWxpbmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxXZWJHUFVDb21wdXRlUGlwZWxpbmU+KHBpcGVsaW5lKS5jb21wdXRl
U2hhZGVyKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGU6OkZyYWdtZW50OgotICAgICAgICBpZiAoaXM8
V2ViR1BVUmVuZGVyUGlwZWxpbmU+KHBpcGVsaW5lKSkKLSAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxXZWJHUFVSZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUpLmZyYWdtZW50U2hhZGVyKCk7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpD
YW52YXM6OlNoYWRlclR5cGU6OlZlcnRleDoKLSAgICAgICAgaWYgKGlzPFdlYkdQVVJlbmRlclBp
cGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR1BVUmVu
ZGVyUGlwZWxpbmU+KHBpcGVsaW5lKS52ZXJ0ZXhTaGFkZXIoKTsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0jZW5kaWYKLQogU3RyaW5nIEluc3BlY3RvclNoYWRlclByb2dyYW06OnJlcXVl
c3RTaGFkZXJTb3VyY2UoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlIHNo
YWRlclR5cGUpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wcm9ncmFtLApAQCAtMTYy
LDE3ICsxMDIsOSBAQCBTdHJpbmcgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6cmVxdWVzdFNoYWRl
clNvdXJjZShJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OgogICAgICAgICAgICAgICAgIHJl
dHVybiBzaGFkZXItPmdldFNvdXJjZSgpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICAgICAgWyZdIChzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVVBpcGVsaW5lPiBwaXBlbGluZVdyYXBwZXIpIHsKLSAg
ICAgICAgICAgIGF1dG8mIHBpcGVsaW5lID0gcGlwZWxpbmVXcmFwcGVyLmdldCgpOwotICAgICAg
ICAgICAgaWYgKGF1dG8gc2hhZGVyID0gc2hhZGVyRm9yVHlwZShwaXBlbGluZSwgc2hhZGVyVHlw
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNoYWRlci0+c291cmNlKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAgWyZdIChNb25v
c3RhdGUpIHsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwMSwyNCArMTMzLDkgQEAgYm9vbCBJbnNwZWN0
b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjpTaGFkZXJUeXAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgICAgIFsmXSAoc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGluZT4gcGlwZWxpbmVXcmFwcGVyKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBwaXBlbGluZSA9IHBpcGVsaW5lV3JhcHBlci5nZXQoKTsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBkZXZpY2UgPSBtX2NhbnZhcy5kZXZpY2VDb250ZXh0KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAocGlwZWxpbmUuY2xvbmVTaGFkZXJNb2R1bGVzKCpkZXZpY2UpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHNoYWRlciA9IHNoYWRlckZvclR5cGUocGlwZWxp
bmUsIHNoYWRlclR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXItPnVwZGF0
ZSgqZGV2aWNlLCBzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpcGVsaW5l
LnJlY29tcGlsZSgqZGV2aWNlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSwKICNlbmRpZgogICAg
ICAgICBbJl0gKE1vbm9zdGF0ZSkgewotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQ
VSkKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI4LDMxICsxNDUsMTUgQEAg
Ym9vbCBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjp1cGRhdGVTaGFkZXIoSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXAKIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZh
czo6U2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6YnVpbGRPYmplY3RGb3JT
aGFkZXJQcm9ncmFtKCkKIHsKLSAgICBib29sIHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyID0g
ZmFsc2U7Ci0KICAgICB1c2luZyBQcm9ncmFtVHlwZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU+OwogICAgIGF1dG8gcHJvZ3JhbVR5
cGUgPSBXVEY6OnN3aXRjaE9uKG1fcHJvZ3JhbSwKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAg
IFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHTFByb2dyYW0+KSAtPiBQcm9ncmFtVHlw
ZVR5cGUgewogICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbVR5cGU6OlJlbmRlcjsKICAgICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJH
UFUpCi0gICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVQaXBlbGluZT4g
cGlwZWxpbmVXcmFwcGVyKSAtPiBQcm9ncmFtVHlwZVR5cGUgewotICAgICAgICAgICAgYXV0byYg
cGlwZWxpbmUgPSBwaXBlbGluZVdyYXBwZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoaXM8V2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lPihwaXBlbGluZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OkNvbXB1dGU7Ci0gICAgICAg
ICAgICBpZiAoaXM8V2ViR1BVUmVuZGVyUGlwZWxpbmU+KHBpcGVsaW5lKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8mIHJlbmRlclBpcGVsaW5lID0gZG93bmNhc3Q8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+KHBpcGVsaW5lKTsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyUGlwZWxpbmUudmVydGV4
U2hhZGVyKCkgPT0gcmVuZGVyUGlwZWxpbmUuZnJhZ21lbnRTaGFkZXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1UeXBlOjpSZW5k
ZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICB9LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSAtPiBQcm9ncmFtVHlwZVR5
cGUgewotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2OCwxMSArMTY5LDkgQEAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6YnVpbGRPYmoKICAgICAgICAgLnNldFByb2dyYW1UeXBlKHByb2dyYW1UeXBlLnZhbHVlKCkp
CiAgICAgICAgIC5zZXRDYW52YXNJZChtX2NhbnZhcy5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5y
ZWxlYXNlKCk7Ci0gICAgaWYgKHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyKQotICAgICAgICBw
YXlsb2FkLT5zZXRTaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlcih0cnVlKTsKICAgICByZXR1cm4g
cGF5bG9hZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCmluZGV4
IGNjYzczY2VmMzc0NjcwNjcwZDU5NmE5M2IzMmZlMDlhNTVkNDM1YmIuLmM5MmRlYmI3N2NjNDUx
OGM0MTViZDNhZmIzMDNiMmYzNzE0YzI4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNpZiBFTkFC
TEUoV0VCR0wpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JQcm90b2NvbE9i
amVjdHMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDEsMTggKzQxLDExIEBAIGNs
YXNzIFdlYkdMUHJvZ3JhbTsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1jbGFzcyBXZWJHUFVQaXBlbGluZTsKLSNlbmRpZgot
CiBjbGFzcyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gewogcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICBzdGF0aWMgUmVmPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGNyZWF0ZShXZWJHTFByb2dyYW0m
LCBJbnNwZWN0b3JDYW52YXMmKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgc3Rh
dGljIFJlZjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBjcmVhdGUoV2ViR1BVUGlwZWxpbmUmLCBJ
bnNwZWN0b3JDYW52YXMmKTsKLSNlbmRpZgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgSW5zcGVjdG9yQ2FudmFzJiBj
YW52YXMoKSBjb25zdCB7IHJldHVybiBtX2NhbnZhczsgfQpAQCAtNjAsOSArNTMsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSgpIGNvbnN0
OwogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBXZWJHUFVQaXBlbGluZSogcGlwZWxp
bmUoKSBjb25zdDsKLSNlbmRpZgogCiAgICAgU3RyaW5nIHJlcXVlc3RTaGFkZXJTb3VyY2UoSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlKTsKICAgICBib29sIHVwZGF0ZVNo
YWRlcihJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUsIGNvbnN0IFN0cmlu
ZyYgc291cmNlKTsKQEAgLTc5LDkgKzY5LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mLCBJbnNwZWN0b3JDYW52
YXMmKTsKICNlbmRpZgotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbShXZWJHUFVQaXBlbGluZSYsIEluc3BlY3RvckNhbnZhcyYpOwotI2VuZGlmCiAKICAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIEluc3BlY3RvckNhbnZhcyYgbV9jYW52YXM7CkBAIC04
OSw5ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgVmFyaWFudDwKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPiwKLSNlbmRpZgotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVUGlw
ZWxpbmU+LAogI2VuZGlmCiAgICAgICAgIFdURjo6TW9ub3N0YXRlCiAgICAgPiBtX3Byb2dyYW07
CkBAIC0xMDIsNCArODYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBhNDAyYzNiOTg0MDMwY2YwZjhkZDY1YjZl
MTNiOTA4ZmJmYmY5NmEzLi41OWY0ZDM5YjVhNzE5ZTNlMTdlNTczOGYyYzY3ZWZjMzhlYWU0MzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUg
IkdQVUNhbnZhc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50Lmgi
CkBAIC02OCwxMSArNjcsNiBAQAogI2luY2x1ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIK
ICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4
QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLSNpbmNs
dWRlICJXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgotI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
ZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTEwMCw5ICs5NCw5IEBAIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9j
YW52YXNEZXN0cm95ZWRUaW1lcigqdGhpcywgJkluc3BlY3RvckNhbnZhc0FnZW50OjpjYW52YXNE
ZXN0cm95ZWRUaW1lckZpcmVkKQotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkK
KyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgLCBtX3Byb2dyYW1EZXN0cm95ZWRUaW1lcigqdGhpcywg
Jkluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9ncmFtRGVzdHJveWVkVGltZXJGaXJlZCkKLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQogewogfQogCkBAIC0xNDEsMjcgKzEzNSwxMiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB7CiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkgfTsK
ICAgICAgICAgZm9yIChhdXRvKiBjb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5z
dGFuY2VzKCkpIHsKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgICAgICAgICAgLy8gVGhlIGFjdHVh
bCAiY29udGV4dCIgZm9yIFdlYkdQVSBpcyB0aGUgYFdlYkdQVURldmljZWAsIG5vdCB0aGUgPGNh
bnZhcz4uCi0gICAgICAgICAgICBpZiAoaXM8R1BVQ2FudmFzQ29udGV4dD4oY29udGV4dCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAogICAg
ICAgICAgICAgaWYgKGV4aXN0c0luQ3VycmVudFBhZ2UoY29udGV4dC0+Y2FudmFzQmFzZSgpLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgYmluZENhbnZhcygqY29u
dGV4dCwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSAg
ICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc0xvY2so
KSB9OwotICAgICAgICBmb3IgKGF1dG8qIGRldmljZSA6IFdlYkdQVURldmljZTo6aW5zdGFuY2Vz
KCkpIHsKLSAgICAgICAgICAgIGlmIChleGlzdHNJbkN1cnJlbnRQYWdlKGRldmljZS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgICAgICAgICBiaW5kQ2FudmFzKCpkZXZpY2Us
IGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQotCiAj
aWYgRU5BQkxFKFdFQkdMKQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJv
Z3JhbTo6aW5zdGFuY2VzTG9jaygpIH07CkBAIC0xNzIsMTYgKzE1MSw2IEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoKQogICAgIH0K
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsK
LSAgICAgICAgZm9yIChhdXRvJiBbcGlwZWxpbmUsIGRldmljZV0gOiBXZWJHUFVQaXBlbGluZTo6
aW5zdGFuY2VzKCkpIHsKLSAgICAgICAgICAgIGlmIChkZXZpY2UgJiYgZXhpc3RzSW5DdXJyZW50
UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgJiYgcGlwZWxpbmUtPmlzVmFs
aWQoKSkKLSAgICAgICAgICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqZGV2aWNlLCAq
cGlwZWxpbmUpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0K
ICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yOTcsNyArMjY2LDYgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKGNvbnN0
IFByb3RvY28KIAogICAgIGF1dG8qIGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0Nv
bnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBX
ZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQ
VURldmljZQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJOb3Qgc3VwcG9ydGVkIl9zKTsKIApAQCAtMzI0LDcgKzI5Miw2IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKGNvbnN0
IFByb3RvY29sCiAKICAgICBhdXRvKiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXND
b250ZXh0KCk7CiAKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4g
V2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJH
UFVEZXZpY2UKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiTm90IHN1cHBvcnRlZCJfcyk7CiAKQEAgLTMzNiw3ICszMDMsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25z
dCBQcm90b2NvbAogICAgIHJldHVybiB7IH07CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
U3RyaW5nPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdFNoYWRlclNvdXJjZShjb25zdCBQ
cm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmIHByb2dyYW1JZCwgUHJvdG9jb2w6OkNhbnZhczo6
U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJv
clN0cmluZzsKQEAgLTM2Niw3ICszMzMsNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRlU2hhZGVyKGNvbnN0IFByb3RvY29sOgogICAg
IHJldHVybiB7IH07CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCiBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0U2hhZGVyUHJvZ3JhbURpc2FibGVk
KGNvbnN0IFByb3RvY29sOjpDYW52YXM6OlByb2dyYW1JZCYgcHJvZ3JhbUlkLCBib29sIGRpc2Fi
bGVkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKQEAgLTM5Myw3
ICszNTksNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6c2V0U2hhZGVyUHJvZ3JhbUhpZ2hsaWdodGVkKAogICAgIHJldHVybiB7IH07CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkKIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRnJh
bWUmIGZyYW1lKQogewpAQCAtNDUwLDE3ICs0MTUsNiBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dAogewogICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhczsKIAotI2lm
IEVOQUJMRShXRUJHUFUpCi0gICAgaWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKSB7
Ci0gICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFz
LnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNEZXZpY2VGb3JDYW52YXNDb250
ZXh0KGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgaW5zcGVjdG9yQ2FudmFzID0gaXRlbTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZgotCiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCiAgICAgICAgIGluc3BlY3RvckNh
bnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY29udGV4dCk7CiAKQEAgLTYxNyw2OSArNTcxLDYg
QEAgYm9vbCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZChX
ZWJHTFByb2dyYW0mIHByb2dyYW0pCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQ
VURldmljZShXZWJHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoZmluZEluc3BlY3RvckNh
bnZhcyhkZXZpY2UpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYmluZENhbnZhcyhkZXZpY2UsIHRydWUpOwotfQotCi12b2lk
IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveVdlYkdQVURldmljZShXZWJHUFVEZXZp
Y2UmIGRldmljZSkKLXsKLSAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JD
YW52YXMoZGV2aWNlKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsKLSAgICBpZiAoIWlu
c3BlY3RvckNhbnZhcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5iaW5kQ2FudmFzKCppbnNw
ZWN0b3JDYW52YXMpOwotfQotCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsQ29uZmln
dXJlU3dhcENoYWluKEdQVUNhbnZhc0NvbnRleHQmIGNvbnRleHRHUFUsIFdlYkdQVVN3YXBDaGFp
biYgbmV3U3dhcENoYWluKQotewotICAgIGF1dG8gbm90aWZ5RGV2aWNlRm9yU3dhcENoYWluID0g
WyZdIChXZWJHUFVTd2FwQ2hhaW4mIHdlYkdQVVN3YXBDaGFpbikgewotICAgICAgICBmb3IgKGF1
dG8mIGluc3BlY3RvckNhbnZhcyA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnZhbHVl
cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZGV2aWNlID0gaW5zcGVjdG9yQ2FudmFzLT5k
ZXZpY2VDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLT5kZXZpY2UoKS5z
d2FwQ2hhaW4oKSA9PSB3ZWJHUFVTd2FwQ2hhaW4uc3dhcENoYWluKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jbGllbnROb2Rlc0NoYW5nZWQoaW5zcGVjdG9y
Q2FudmFzLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsK
LQotICAgIGlmIChhdXRvKiBleGlzdGluZ1N3YXBDaGFpbiA9IGNvbnRleHRHUFUuc3dhcENoYWlu
KCkpCi0gICAgICAgIG5vdGlmeURldmljZUZvclN3YXBDaGFpbigqZXhpc3RpbmdTd2FwQ2hhaW4p
OwotCi0gICAgbm90aWZ5RGV2aWNlRm9yU3dhcENoYWluKG5ld1N3YXBDaGFpbik7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5lKFdlYkdQVURl
dmljZSYgZGV2aWNlLCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgYXV0byBpbnNw
ZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGRldmljZSk7Ci0gICAgQVNTRVJUKGlu
c3BlY3RvckNhbnZhcyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChwaXBlbGluZS5pc1ZhbGlkKCkpOwotCi0gICAgYXV0byBpbnNwZWN0
b3JQcm9ncmFtUmVmID0gSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKHBpcGVsaW5lLCAq
aW5zcGVjdG9yQ2FudmFzKTsKLSAgICBhdXRvJiBpbnNwZWN0b3JQcm9ncmFtID0gaW5zcGVjdG9y
UHJvZ3JhbVJlZi5nZXQoKTsKLSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0uc2V0
KGluc3BlY3RvclByb2dyYW0uaWRlbnRpZmllcigpLCBXVEZNb3ZlKGluc3BlY3RvclByb2dyYW1S
ZWYpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cHJvZ3JhbUNyZWF0ZWQoaW5zcGVjdG9y
UHJvZ3JhbS5idWlsZE9iamVjdEZvclNoYWRlclByb2dyYW0oKSk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUm
IHBpcGVsaW5lKQotewotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbSA9IGZpbmRJbnNwZWN0b3JQ
cm9ncmFtKHBpcGVsaW5lKTsKLSAgICBpZiAoIWluc3BlY3RvclByb2dyYW0pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHVuYmluZFByb2dyYW0oKmluc3BlY3RvclByb2dyYW0pOwotfQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCi0KICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9O
KEFyZ3VtZW50VHlwZSkgXAogc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2Nlc3NBcmd1bWVu
dChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBBcmd1bWVu
dFR5cGUgYXJndW1lbnQpIFwKIHsgXApAQCAtNzE1LDcgKzYwNiw2IEBAIHZvaWQgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnJlY29yZEFjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNS
ZW5kZXJpbmdDCiAKICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FudmFzUmVuZGVyaW5nQ29u
dGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBD
YW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChjYW52YXNSZW5kZXJpbmdDb250ZXh0LT5oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNB
Z2VudC5kaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4
dCk7CkBAIC03MzgsNyArNjI4LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRS
ZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3QKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLmNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NF
UlQoY29udGV4dCk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+
IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2Vi
R1BVRGV2aWNlCiAKICAgICBpZiAoIWlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oY29udGV4
dCkKICAgICAgICAgJiYgIWlzPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkK
QEAgLTc3Nyw3ICs2NjYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpjYW52YXNEZXN0
cm95ZWRUaW1lckZpcmVkKCkKICAgICBtX3JlbW92ZWRDYW52YXNJZGVudGlmaWVycy5jbGVhcigp
OwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShX
RUJHTCkKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnByb2dyYW1EZXN0cm95ZWRUaW1lckZp
cmVkKCkKIHsKICAgICBpZiAoIW1fcmVtb3ZlZFByb2dyYW1JZGVudGlmaWVycy5zaXplKCkpCkBA
IC03ODgsNyArNjc3LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvZ3JhbURlc3Ry
b3llZFRpbWVyRmlyZWQoKQogCiAgICAgbV9yZW1vdmVkUHJvZ3JhbUlkZW50aWZpZXJzLmNsZWFy
KCk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkKIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzZXQoKQog
ewpAQCAtODAyLDEyICs2OTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzZXQo
KQogICAgIGlmIChtX2NhbnZhc0Rlc3Ryb3llZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
Y2FudmFzRGVzdHJveWVkVGltZXIuc3RvcCgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICBtX2lkZW50aWZpZXJUb0luc3BlY3Rv
clByb2dyYW0uY2xlYXIoKTsKICAgICBtX3JlbW92ZWRQcm9ncmFtSWRlbnRpZmllcnMuY2xlYXIo
KTsKICAgICBpZiAobV9wcm9ncmFtRGVzdHJveWVkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
bV9wcm9ncmFtRGVzdHJveWVkVGltZXIuc3RvcCgpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKICAgICBtX3JlY29y
ZGluZ0NhbnZhc0lkZW50aWZpZXJzLmNsZWFyKCk7CiB9CkBAIC04MzYsMTggKzcyNSw2IEBAIElu
c3BlY3RvckNhbnZhcyYgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmJpbmRDYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4CiAgICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKIH0KIAot
I2lmIEVOQUJMRShXRUJHUFUpCi1JbnNwZWN0b3JDYW52YXMmIEluc3BlY3RvckNhbnZhc0FnZW50
OjpiaW5kQ2FudmFzKFdlYkdQVURldmljZSYgZGV2aWNlLCBib29sIGNhcHR1cmVCYWNrdHJhY2Up
Ci17Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShk
ZXZpY2UpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7Ci0KLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2FudmFzQWRkZWQoaW5zcGVjdG9yQ2FudmFzLT5idWlsZE9i
amVjdEZvckNhbnZhcyhjYXB0dXJlQmFja3RyYWNlKSk7Ci0KLSAgICByZXR1cm4gaW5zcGVjdG9y
Q2FudmFzOwotfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnVuYmluZENhbnZhcyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcykK
IHsKICNpZiBFTkFCTEUoV0VCR0wpCkBAIC04OTUsMTggKzc3Miw3IEBAIFJlZlB0cjxJbnNwZWN0
b3JDYW52YXM+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9yQ2FudmFzKENhbnZh
c1JlbmRlcmluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
UmVmUHRyPEluc3BlY3RvckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0
b3JDYW52YXMoV2ViR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgZm9yIChhdXRvJiBpbnNwZWN0
b3JDYW52YXMgOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoaW5zcGVjdG9yQ2FudmFzLT5kZXZpY2VDb250ZXh0KCkgPT0gJmRldmljZSkKLSAg
ICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXM7Ci0gICAgfQotICAgIHJldHVybiBudWxs
cHRyOwotfQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KLSNpZiBFTkFCTEUoV0VCR0wpIHx8
IEVOQUJMRShXRUJHUFUpCisjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6dW5iaW5kUHJvZ3JhbShJbnNwZWN0b3JTaGFkZXJQcm9ncmFtJiBpbnNwZWN0b3JQcm9n
cmFtKQogewogICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5zcGVjdG9yUHJvZ3JhbS5pZGVudGlm
aWVyKCk7CkBAIC05MzEsNyArNzk3LDYgQEAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+
IEluc3BlY3RvckNhbnZhc0FnZW50Ojphc3NlcnRJbnNwZWN0b3JQcm9ncmFtKFByb3QKICAgICBy
ZXR1cm4gaW5zcGVjdG9yUHJvZ3JhbTsKIH0KIAotI2lmIEVOQUJMRShXRUJHTCkKIFJlZlB0cjxJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEluc3BlY3Rv
clByb2dyYW0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGZvciAoYXV0byYgaW5zcGVj
dG9yUHJvZ3JhbSA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS52YWx1ZXMoKSkgewpA
QCAtOTQyLDE2ICs4MDcsNCBAQCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUAogfQogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKIAotI2lmIEVOQUJMRShXRUJHUFUpCi1SZWZQdHI8SW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdl
YkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBmb3IgKGF1dG8mIGluc3BlY3RvclByb2dy
YW0gOiBtX2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0udmFsdWVzKCkpIHsKLSAgICAgICAg
aWYgKGluc3BlY3RvclByb2dyYW0tPnBpcGVsaW5lKCkgPT0gJnBpcGVsaW5lKQotICAgICAgICAg
ICAgcmV0dXJuIGluc3BlY3RvclByb2dyYW07Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBF
TkFCTEUoV0VCR1BVKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXgg
ZDdiZGVmM2M4NDQ1NTUyNTVkYzZkMjJmNjJmMjc5ODc5MjZkNTMyMy4uN2YxMDEyYWEyYTI0ZjY4
MmNmNjg5MWQxMzY2ZGQ0ZDI2MTU3MzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtNDQsMTkgKzQ0LDEx
IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJM
RShXRUJHUFUpCi1jbGFzcyBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOwogI2lmIEVOQUJMRShXRUJH
TCkKK2NsYXNzIEluc3BlY3RvclNoYWRlclByb2dyYW07CiBjbGFzcyBXZWJHTFByb2dyYW07CiBj
bGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
LSNpZiBFTkFCTEUoV0VCR1BVKQotY2xhc3MgR1BVQ2FudmFzQ29udGV4dDsKLWNsYXNzIFdlYkdQ
VURldmljZTsKLWNsYXNzIFdlYkdQVVBpcGVsaW5lOwotY2xhc3MgV2ViR1BVU3dhcENoYWluOwot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR1BVKQogCiBjbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlciwgcHVibGljIENhbnZhc09ic2VydmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW5zcGVjdG9yQ2FudmFzQWdlbnQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JDYW52YXNBZ2VudCk7CkBAIC04MCwxNCArNzIsMTIgQEAgcHVibGljOgogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0UmVjb3JkaW5nQXV0b0NhcHR1cmVG
cmFtZUNvdW50KGludCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBzdGFydFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNh
bnZhc0lkJiwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZnJhbWVDb3VudCwgc3RkOjpvcHRpb25hbDxp
bnQ+JiYgbWVtb3J5TGltaXQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc3RvcFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6
OkNhbnZhc0lkJik7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVO
QUJMRShXRUJHTCkKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmlu
Zz4gcmVxdWVzdFNoYWRlclNvdXJjZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6
OlByb2dyYW1JZCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6U2hhZGVyVHlwZSk7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiB1cGRhdGVTaGFkZXIo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtSWQmLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpDYW52YXM6OlNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc291cmNlKTsKLSNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBzZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q2FudmFzOjpQcm9ncmFtSWQmLCBib29sIGRpc2FibGVkKTsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNoYWRlclByb2dyYW1IaWdobGlnaHRlZChjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlByb2dyYW1JZCYsIGJvb2wgaGlnaGxpZ2h0
ZWQpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8
IEVOQUJMRShXRUJHUFUpCiAKICAgICAvLyBDYW52YXNPYnNlcnZlcgogICAgIHZvaWQgY2FudmFz
Q2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JikgZmlu
YWw7CkBAIC0xMDksMTMgKzk5LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNXZWJHTFByb2dyYW1E
aXNhYmxlZChXZWJHTFByb2dyYW0mKTsKICAgICBib29sIGlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0
ZWQoV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQotI2lmIEVOQUJMRShX
RUJHUFUpCi0gICAgdm9pZCBkaWRDcmVhdGVXZWJHUFVEZXZpY2UoV2ViR1BVRGV2aWNlJik7Ci0g
ICAgdm9pZCB3aWxsRGVzdHJveVdlYkdQVURldmljZShXZWJHUFVEZXZpY2UmKTsKLSAgICB2b2lk
IHdpbGxDb25maWd1cmVTd2FwQ2hhaW4oR1BVQ2FudmFzQ29udGV4dCYsIFdlYkdQVVN3YXBDaGFp
biYpOwotICAgIHZvaWQgZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgV2Vi
R1BVUGlwZWxpbmUmKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BV
UGlwZWxpbmUmKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQogCiAgICAgLy8gSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcgogI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFy
Z3VtZW50VHlwZSkgXApAQCAtMTM0LDMyICsxMTcsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
YXJ0UmVjb3JkaW5nKEluc3BlY3RvckNhbnZhcyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29y
ZGluZzo6SW5pdGlhdG9yLCBSZWNvcmRpbmdPcHRpb25zJiYgPSB7IH0pOwogCiAgICAgdm9pZCBj
YW52YXNEZXN0cm95ZWRUaW1lckZpcmVkKCk7Ci0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHByb2dyYW1EZXN0cm95ZWRUaW1l
ckZpcmVkKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICBJbnNwZWN0b3JD
YW52YXMmIGJpbmRDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGJvb2wgY2FwdHVyZUJh
Y2t0cmFjZSk7Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBJbnNwZWN0b3JDYW52YXMmIGJpbmRD
YW52YXMoV2ViR1BVRGV2aWNlJiwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKTsKLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQogICAgIHZvaWQgdW5iaW5kQ2FudmFzKEluc3BlY3RvckNhbnZhcyYpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGFzc2VydEluc3BlY3RvckNhbnZhcyhJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JDYW52YXM+IGZpbmRJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCYpOwotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgUmVmUHRyPEluc3BlY3RvckNh
bnZhcz4gZmluZEluc3BlY3RvckNhbnZhcyhXZWJHUFVEZXZpY2UmKTsKLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVO
QUJMRShXRUJHTCkKICAgICB2b2lkIHVuYmluZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bSYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBhc3NlcnRJbnNwZWN0b3JQ
cm9ncmFtKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
cm9ncmFtSWQpOwotI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbT4gZmluZEluc3BlY3RvclByb2dyYW0oV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQotI2lmIEVOQUJMRShXRUJHUFUpCi0gICAgUmVmUHRyPEluc3BlY3RvclNo
YWRlclByb2dyYW0+IGZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdQVVBpcGVsaW5lJik7Ci0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShX
RUJHUFUpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkNh
bnZhc0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtMTcxLDExICsx
NDMsMTEgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX3JlbW92ZWRDYW52YXNJZGVu
dGlmaWVyczsKICAgICBUaW1lciBtX2NhbnZhc0Rlc3Ryb3llZFRpbWVyOwogCi0jaWYgRU5BQkxF
KFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQorI2lmIEVOQUJMRShXRUJHTCkKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+PiBtX2lkZW50aWZpZXJUb0lu
c3BlY3RvclByb2dyYW07CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZW1vdmVkUHJvZ3JhbUlkZW50
aWZpZXJzOwogICAgIFRpbWVyIG1fcHJvZ3JhbURlc3Ryb3llZFRpbWVyOwotI2VuZGlmIC8vIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVyczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBjM2FhYzU0YzU3ZjI0MDdiMzhm
MDM2ZDg2NTE1ZGZiMjBhZGJmNDkxLi5mMTYwYzQ3MjI1ZDAxOTExY2NmYmJjODNjZjcyNDFmN2Yy
OGE1YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtNDQsNyAr
NDQsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9EUklWRVJfUFJFV0FSTUlORykKICNpbmNsdWRlICJH
UFVEZXZpY2UuaCIKLSNpbmNsdWRlICJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSw3ICs4MCw3IEBAIHZvaWQgUHJvY2Vzc1dh
cm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfRFJJVkVS
X1BSRVdBUk1JTkcpCi0gICAgR1BVRGV2aWNlOjpwcmV3YXJtKCk7CisgICAgcHJld2FybUdQVSgp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAwNzA4NDdjMTM0
YjU2MTYzZjRhMDYxMzkzOThmMDNhMDU1OWE4NzhiLi44MjM1ODQzZmE1MTI5NTVjN2NlYjVlZmRm
Y2RmOTNkZTRhNTllMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjAsNyAr
MTIwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oVmlld3BvcnRzKSBcCiAgICAgTShX
ZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKLSAgICBNKFdlYkdQVSkgXAogICAgIE0oV2ViUlRD
KSBcCiAgICAgTShXZWJSVENTdGF0cykgXAogICAgIE0oWFIpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EubW0KaW5kZXggNWE2MGJjYzFlNmI1MzJhNjFkNDhhY2MzNDRiYmFhMmFmOGQw
MTZkZC4uMDJhMjZkNTdiNTVlY2FkZTQzYzVmMmVlMzk1ZjgzMzI5MjY4NzlhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTU3LDEwICs1Nyw2IEBACiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2lm
IEVOQUJMRShXRUJHUFUpCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIu
aCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgpAQCAtMjE4LDExICsyMTQsNiBAQCBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZv
cm1MYXllcihQbGF0ZgogICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBj
bGFzc11dKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwog
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdQ
VUxheWVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI7Ci0jZW5kaWYKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTI3
NSw3ICsyNjYsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2Eo
TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICAgICAgbGF5ZXJD
bGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24n
dCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJz
IG9yIFdlYkdQVUxheWVycy4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FM
YXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycy4KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BV
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxh
eWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMjhmNzNhMDg2MWQxNTJiNzEz
Y2ViOWU5MzMyODNjYTgyNmE1ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BV
TGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHUFVTd2FwQ2hhaW47Ci19Ci0KLUBpbnRlcmZhY2Ug
V2ViR1BVTGF5ZXIgOiBDQU1ldGFsTGF5ZXIgewotICAgIFdlYkNvcmU6OkdQVVN3YXBDaGFpbiog
X3N3YXBDaGFpbjsKLSAgICBmbG9hdCBfZGV2aWNlU2NhbGVGYWN0b3I7Ci19Ci0KLUBwcm9wZXJ0
eSAobm9uYXRvbWljKSBXZWJDb3JlOjpHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbjsKLQotLSAoQ0dJ
bWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYp
Y29sb3JTcGFjZTsKLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNlMjM4MmU0ZWJiMmMxZjAwZjliYmNkMzVlMGU2MDJkYjljYTQ2OGYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR1BVTGF5ZXIubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJHUFVMYXllci5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCi0jaW1wb3J0ICJHcmFw
aGljc0NvbnRleHRDRy5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR1BVTGF5ZXIKLQotQHN5bnRo
ZXNpemUgc3dhcENoYWluID0gX3N3YXBDaGFpbjsKLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07Ci0KLSAgICAvLyBGSVhNRTogV2ViR1BVIC0gaGFuZGxlIHJldGluYSBj
b3JyZWN0bHkuCi0gICAgX2RldmljZVNjYWxlRmFjdG9yID0gMTsKLQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBfZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgc2Vs
Zi5jb2xvcnNwYWNlID0gV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAg
IHJldHVybiBzZWxmOwotfQotCi0tIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBzaG90V2l0aENv
bG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlCi17Ci0gICAgaWYgKCFfc3dhcENo
YWluKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFVOVVNFRF9QQVJBTShjb2xvclNw
YWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXAuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5MmYxMzQ0YjU0YjIyYjllOWQ4MWYxOTE2ZmJm
YjIxMjExODE2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgi
Ci0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgot
I2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERl
c2NyaXB0b3I7Ci0KLXVzaW5nIEFyZ3VtZW50QnVmZmVyID0gc3RkOjpwYWlyPGNvbnN0IFBsYXRm
b3JtQnVmZmVyKiwgY29uc3QgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9m
ZnNldHMmPjsKLQotY2xhc3MgR1BVQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQmlu
ZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVCaW5kR3JvdXA+IHRyeUNy
ZWF0ZShjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiwgR1BVQmluZEdyb3VwQWxsb2NhdG9y
Jik7Ci0KLSAgICB+R1BVQmluZEdyb3VwKCk7Ci0gICAgCi0gICAgY29uc3QgQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiB7IG1fYWxsb2NhdG9yLT5hcmd1bWVu
dEJ1ZmZlcigpLCBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0cyB9OyB9Ci0gICAgY29uc3QgSGFzaFNl
dDxSZWY8R1BVQnVmZmVyPj4mIGJvdW5kQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRC
dWZmZXJzOyB9Ci0gICAgY29uc3QgSGFzaFNldDxSZWY8R1BVVGV4dHVyZT4+JiBib3VuZFRleHR1
cmVzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZFRleHR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAg
R1BVQmluZEdyb3VwKEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRz
JiYsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYsIEhhc2hTZXQ8UmVmPEdQVUJ1ZmZlcj4+JiYsIEhh
c2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYmKTsKLSAgICAKLSAgICBHUFVCaW5kR3JvdXBBbGxvY2F0
b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cyBtX2FyZ3VtZW50QnVmZmVyT2Zmc2V0czsKLSAgICBS
ZWY8R1BVQmluZEdyb3VwQWxsb2NhdG9yPiBtX2FsbG9jYXRvcjsKLSAgICBIYXNoU2V0PFJlZjxH
UFVCdWZmZXI+PiBtX2JvdW5kQnVmZmVyczsKLSAgICBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4g
bV9ib3VuZFRleHR1cmVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzg0MzE5N2JmMzMyODMwMjMxNDM0N2IzNzgzZGE4NzRhZjYzNTQwNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BV
UGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUVycm9yU2NvcGVz
OwotCi1jbGFzcyBHUFVCaW5kR3JvdXBBbGxvY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVC
aW5kR3JvdXBBbGxvY2F0b3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91
cEFsbG9jYXRvcj4gY3JlYXRlKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBzdHJ1Y3QgQXJndW1l
bnRCdWZmZXJPZmZzZXRzIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZl
ck9mZnNldD4gdmVydGV4OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVy
T2Zmc2V0PiBmcmFnbWVudDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZl
ck9mZnNldD4gY29tcHV0ZTsKLSAgICB9OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIHN0ZDo6b3B0
aW9uYWw8QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBhbGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFy
Z3VtZW50RW5jb2RlciAqdmVydGV4LCBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExB
cmd1bWVudEVuY29kZXIgKmNvbXB1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lkIHRyeVJlc2V0KCk7
Ci0KLSAgICBjb25zdCBQbGF0Zm9ybUJ1ZmZlciogYXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3VtZW50QnVmZmVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
R1BVQmluZEdyb3VwQWxsb2NhdG9yKEdQVUVycm9yU2NvcGVzJik7Ci0KLSAgICBib29sIHJlYWxs
b2NhdGUoUGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQpOwotCi0gICAgUGxhdGZvcm1CdWZmZXJTbWFy
dFB0ciBtX2FyZ3VtZW50QnVmZmVyOwotICAgIFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0IG1fbGFz
dE9mZnNldCB7IDAgfTsKLQotICAgIFJlZjxHUFVFcnJvclNjb3Blcz4gbV9lcnJvclNjb3BlczsK
LSAgICBpbnQgbV9udW1CaW5kR3JvdXBzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQmluZGluZy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmMzYTIzNjY4ODc1NmE3ZmNjZThjMzQzZTBmNWRm
NjNhZmIxYWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBCaW5kaW5n
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQnVmZmVyQmluZGluZy5o
IgotI2luY2x1ZGUgIkdQVVNhbXBsZXIuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBHUFVC
aW5kaW5nUmVzb3VyY2UgPSBWYXJpYW50PFJlZjxjb25zdCBHUFVTYW1wbGVyPiwgUmVmPEdQVVRl
eHR1cmU+LCBHUFVCdWZmZXJCaW5kaW5nPjsKLQotc3RydWN0IEdQVUJpbmRHcm91cEJpbmRpbmcg
ewotICAgIHVuc2lnbmVkIGJpbmRpbmc7Ci0gICAgR1BVQmluZGluZ1Jlc291cmNlIHJlc291cmNl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMTA4YTk3OGE5ZTg2YTFlYjk2ZTJmY2ZkZTk0NWJjZmNhZWFkNTIwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwQmluZGluZy5oIgotI2luY2x1ZGUgIkdQVUJp
bmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJpbmRHcm91cERlc2Ny
aXB0b3IgewotICAgIFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKLSAgICBW
ZWN0b3I8R1BVQmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cExheW91dC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDE2ZmM5ODQ4MWUxYzQ3ODI1ZjUwODNlZmZl
MjZkY2U4NjZhODUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBMYXlv
dXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVUJpbmRHcm91cExheW91dCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVUJpbmRHcm91cExheW91dD4gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8R1BVQmluZEdyb3VwTGF5b3V0PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwg
Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpOwotCi0gICAgc3RydWN0IFVuaWZv
cm1CdWZmZXIgewotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aE5hbWU7Ci0gICAgfTsK
LQotICAgIHN0cnVjdCBEeW5hbWljVW5pZm9ybUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGlu
dGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFNhbXBsZXIgewotICAgIH07
Ci0KLSAgICBzdHJ1Y3QgU2FtcGxlZFRleHR1cmUgewotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU3Rv
cmFnZUJ1ZmZlciB7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTGVuZ3RoTmFtZTsKLSAgICB9
OwotCi0gICAgc3RydWN0IER5bmFtaWNTdG9yYWdlQnVmZmVyIHsKLSAgICAgICAgdW5zaWduZWQg
aW50ZXJuYWxMZW5ndGhOYW1lOwotICAgIH07Ci0KLSAgICB1c2luZyBJbnRlcm5hbEJpbmRpbmdE
ZXRhaWxzID0gVmFyaWFudDxVbmlmb3JtQnVmZmVyLCBEeW5hbWljVW5pZm9ybUJ1ZmZlciwgU2Ft
cGxlciwgU2FtcGxlZFRleHR1cmUsIFN0b3JhZ2VCdWZmZXIsIER5bmFtaWNTdG9yYWdlQnVmZmVy
PjsKLQotICAgIHN0cnVjdCBCaW5kaW5nIHsKLSAgICAgICAgR1BVQmluZEdyb3VwTGF5b3V0Qmlu
ZGluZyBleHRlcm5hbEJpbmRpbmc7Ci0gICAgICAgIHVuc2lnbmVkIGludGVybmFsTmFtZTsKLSAg
ICAgICAgSW50ZXJuYWxCaW5kaW5nRGV0YWlscyBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzOwotICAg
IH07Ci0KLSAgICB1c2luZyBCaW5kaW5nc01hcFR5cGUgPSBIYXNoTWFwPHVpbnQ2NF90LCBCaW5k
aW5nLCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVpbnQ2NF90Pj47Ci0gICAgY29uc3QgQmluZGluZ3NNYXBUeXBlJiBiaW5kaW5nc01h
cCgpIGNvbnN0IHsgcmV0dXJuIG1fYmluZGluZ3NNYXA7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAg
TVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXhFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0
ZXhFbmNvZGVyLmdldCgpOyB9Ci0gICAgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudEVuY29k
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50RW5jb2Rlci5nZXQoKTsgfQotICAgIE1UTEFy
Z3VtZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVF
bmNvZGVyLmdldCgpOyB9Ci0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi1wcml2YXRlOgotI2lmIFVT
RShNRVRBTCkKLSAgICBHUFVCaW5kR3JvdXBMYXlvdXQoQmluZGluZ3NNYXBUeXBlJiYsIFJldGFp
blB0cjxNVExBcmd1bWVudEVuY29kZXI+JiYgdmVydGV4LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRF
bmNvZGVyPiYmIGZyYWdtZW50LCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNvZGVyPiYmIGNvbXB1
dGUpOwotCi0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4gbV92ZXJ0ZXhFbmNvZGVy
OwotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fZnJhZ21lbnRFbmNvZGVyOwot
ICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IG1fY29tcHV0ZUVuY29kZXI7Ci0jZW5k
aWYgLy8gVVNFKE1FVEFMKQotICAgIGNvbnN0IEJpbmRpbmdzTWFwVHlwZSBtX2JpbmRpbmdzTWFw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
bGVuZERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCbGVuZERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMzNh
YzJlOWFjZDE1YzIwYzYxYzgwMDAxOWU5Yjk4YmQ1ZmQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQmxlbmREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVQmxlbmRGYWN0b3IgewotICAgIFplcm8s
Ci0gICAgT25lLAotICAgIFNyY0NvbG9yLAotICAgIE9uZU1pbnVzU3JjQ29sb3IsCi0gICAgU3Jj
QWxwaGEsCi0gICAgT25lTWludXNTcmNBbHBoYSwKLSAgICBEc3RDb2xvciwKLSAgICBPbmVNaW51
c0RzdENvbG9yLAotICAgIERzdEFscGhhLAotICAgIE9uZU1pbnVzRHN0QWxwaGEsCi0gICAgU3Jj
QWxwaGFTYXR1cmF0ZWQsCi0gICAgQmxlbmRDb2xvciwKLSAgICBPbmVNaW51c0JsZW5kQ29sb3Is
Ci19OwotCi1lbnVtIGNsYXNzIEdQVUJsZW5kT3BlcmF0aW9uIHsKLSAgICBBZGQsCi0gICAgU3Vi
dHJhY3QsCi0gICAgUmV2ZXJzZVN1YnRyYWN0LAotICAgIE1pbiwKLSAgICBNYXgsCi19OwotCi1z
dHJ1Y3QgR1BVQmxlbmREZXNjcmlwdG9yIHsKLSAgICBHUFVCbGVuZEZhY3RvciBzcmNGYWN0b3I7
Ci0gICAgR1BVQmxlbmRGYWN0b3IgZHN0RmFjdG9yOwotICAgIEdQVUJsZW5kT3BlcmF0aW9uIG9w
ZXJhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTc1NTk0NzEzMzAy
ZDA5MzdjZGU4NDgxZTVhMzQzOGZjMmY3N2RmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjpQZW5kaW5nTWFw
cGluZ0NhbGxiYWNrOjpQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIHBl
bmRpbmcpCi0gICAgOiBjYWxsYmFjayhXVEZNb3ZlKHBlbmRpbmcpKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MzVhNWMzYWZjNGM4NjIyZWQzNjA0ZGFmZWYyMzZjZDcyMjVlMmM2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVCdWZm
ZXJVc2FnZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
Zi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFycmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwotCi1z
dHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKLQotZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRP
cHRpb247Ci0KLWNsYXNzIEdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlcj4g
ewotcHVibGljOgotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBNYXBwZWQsCi0gICAg
ICAgIFVubWFwcGVkLAotICAgICAgICBEZXN0cm95ZWQKLSAgICB9OwotCi0gICAgfkdQVUJ1ZmZl
cigpOwotCi0gICAgc3RhdGljIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZShHUFVEZXZpY2Um
LCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVF
cnJvclNjb3BlcyYpOwotCi0gICAgUGxhdGZvcm1CdWZmZXIqIHBsYXRmb3JtQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKTsgfQotICAgIHNpemVfdCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc0NvcHlTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6Q29weVNvdXJjZSk7IH0KLSAgICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkNvcHlEZXN0aW5h
dGlvbik7IH0KLSAgICBib29sIGlzSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRh
aW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6SW5kZXgpOyB9Ci0gICAgYm9vbCBpc1ZlcnRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpW
ZXJ0ZXgpOyB9Ci0gICAgYm9vbCBpc1VuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNv
bnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSk7IH0KLSAgICBib29sIGlzU3Rv
cmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZs
YWdzOjpTdG9yYWdlKTsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwotICAgIGJvb2wg
aXNNYXBwYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnNBbnkoeyBHUFVCdWZm
ZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlLCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQg
fSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybVVzYWdlOyB9Ci0gICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKLQotICAgIEpTQzo6QXJyYXlC
dWZmZXIqIG1hcE9uQ3JlYXRpb24oKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICB2b2lkIGNvbW1h
bmRCdWZmZXJDb21taXR0ZWQoTVRMQ29tbWFuZEJ1ZmZlciAqKTsKLSAgICB2b2lkIGNvbW1hbmRC
dWZmZXJDb21wbGV0ZWQoKTsKLSNlbmRpZgotCi0gICAgdXNpbmcgTWFwcGluZ0NhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKEpTQzo6QXJyYXlCdWZmZXIqKT47Ci0gICAgdm9pZCByZWdpc3Rl
ck1hcHBpbmdDYWxsYmFjayhNYXBwaW5nQ2FsbGJhY2smJiwgYm9vbCwgR1BVRXJyb3JTY29wZXMm
KTsKLSAgICB2b2lkIHVubWFwKEdQVUVycm9yU2NvcGVzKik7Ci0gICAgdm9pZCBkZXN0cm95KEdQ
VUVycm9yU2NvcGVzKik7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFBlbmRpbmdNYXBwaW5nQ2Fs
bGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nTWFwcGluZ0NhbGxiYWNrPiB7Ci0gICAg
ICAgIHN0YXRpYyBSZWY8UGVuZGluZ01hcHBpbmdDYWxsYmFjaz4gY3JlYXRlKE1hcHBpbmdDYWxs
YmFjayYmIGNhbGxiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBNYXBwaW5nQ2FsbGJhY2sgY2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmKTsKLSAgICB9
OwotCi0gICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQdHImJiwgR1BVRGV2aWNlJiwg
c2l6ZV90LCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgR1BVQnVmZmVyTWFwcGVk
T3B0aW9uKTsKLSAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlclVzYWdlKGNvbnN0IEdQVURl
dmljZSYsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBHUFVFcnJvclNjb3BlcyYp
OwotCi0gICAgSlNDOjpBcnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvclJlYWQoKTsKLSAgICBK
U0M6OkFycmF5QnVmZmVyKiBzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKTsKLSAgICB2b2lkIHJ1bk1h
cHBpbmdDYWxsYmFjaygpOwotICAgIHZvaWQgY29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVFcnJv
clNjb3BlcyopOwotCi0gICAgYm9vbCBpc01hcFdyaXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2Fn
ZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlKTsgfQotICAgIGJvb2wg
aXNNYXBSZWFkKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2Fn
ZTo6RmxhZ3M6Ok1hcFJlYWQpOyB9Ci0gICAgYm9vbCBpc01hcFdyaXRlYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGlzTWFwV3JpdGUoKSAmJiBzdGF0ZSgpID09IFN0YXRlOjpVbm1hcHBlZDsgfQotICAg
IGJvb2wgaXNNYXBSZWFkYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzTWFwUmVhZCgpICYmIHN0YXRl
KCkgPT0gU3RhdGU6OlVubWFwcGVkOyB9Ci0KLSAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG1f
cGxhdGZvcm1CdWZmZXI7Ci0gICAgUmVmPEdQVURldmljZT4gbV9kZXZpY2U7Ci0KLSAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9zdGFnaW5nQnVmZmVyOwotICAgIFJlZlB0cjxQZW5kaW5n
TWFwcGluZ0NhbGxiYWNrPiBtX21hcHBpbmdDYWxsYmFjazsKLSAgICBNYWluVGhyZWFkRGVmZXJy
YWJsZVRhc2sgbV9tYXBwaW5nQ2FsbGJhY2tUYXNrOwotCi0gICAgc2l6ZV90IG1fYnl0ZUxlbmd0
aDsKLSAgICBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVu
c2lnbmVkIG1fcGxhdGZvcm1Vc2FnZTsKLSAgICB1bnNpZ25lZCBtX251bVNjaGVkdWxlZENvbW1h
bmRCdWZmZXJzIHsgMCB9OwotICAgIGJvb2wgbV9pc01hcHBlZEZyb21DcmVhdGlvbiB7IGZhbHNl
IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlckJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCdWZmZXJCaW5kaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNmVlMDEx
MTAxZDQ3YzA0MWI1Zjk2OTUwNjgzZTRkODNlYzZkYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlckJpbmRpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IEdQVUJ1ZmZlckJpbmRpbmcgewotICAgIFJlZjxHUFVCdWZmZXI+IGJ1ZmZl
cjsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIwNzJkOWVmZjAyN2QyOWU5
Mzc3OWJjOGYwNmJkNjQyYzQzODU2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVm
ZmVyRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1
ZmZlclVzYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUJ1ZmZlckRl
c2NyaXB0b3IgewotICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgR1BVQnVmZmVyVXNhZ2VGbGFncyB1
c2FnZTsKLX07Ci0KLWVudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9uIHsKLSAgICBJc01h
cHBlZCwKLSAgICBOb3RNYXBwZWQKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3ZGUxNDFlOGZmMzUxYWVmOWUwMjA1MjI0NjVlNjZiNTRhNDI0ZDJkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dXNpbmcgR1BVQnVmZmVyVXNhZ2VGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVCdWZmZXJV
c2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlclVzYWdlPiB7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBGbGFncyA6IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgewotICAgICAgICBOb25lID0g
MCwKLSAgICAgICAgTWFwUmVhZCA9IDEgPDwgMCwKLSAgICAgICAgTWFwV3JpdGUgPSAxIDw8IDEs
Ci0gICAgICAgIENvcHlTb3VyY2UgPSAxIDw8IDIsCi0gICAgICAgIENvcHlEZXN0aW5hdGlvbiA9
IDEgPDwgMywKLSAgICAgICAgSW5kZXggPSAxIDw8IDQsCi0gICAgICAgIFZlcnRleCA9IDEgPDwg
NSwKLSAgICAgICAgVW5pZm9ybSA9IDEgPDwgNiwKLSAgICAgICAgU3RvcmFnZSA9IDEgPDwgNywK
LSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZGE1MjY1NmRlMjNkMjYyNGQ2
YTFiOGUzNTZiZDI2NGFkYzE2MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBHUFVDb2xvciB7Ci0gICAgZmxvYXQgcjsKLSAgICBmbG9hdCBnOwotICAgIGZsb2F0IGI7Ci0g
ICAgZmxvYXQgYTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZDU1MjcyOGJjYzliMzgwNTc0NTU5OWU2YjU4NjgxOTFhYjEzNmU3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvclN0YXRlRGVzY3JpcHRvci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJsZW5kRGVzY3JpcHRvci5oIgotI2lu
Y2x1ZGUgIkdQVUNvbG9yV3JpdGUuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHsK
LSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLQotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBh
bHBoYUJsZW5kOwotICAgIEdQVUJsZW5kRGVzY3JpcHRvciBjb2xvckJsZW5kOwotICAgIEdQVUNv
bG9yV3JpdGVGbGFncyB3cml0ZU1hc2sgeyBzdGF0aWNfY2FzdDxHUFVDb2xvcldyaXRlRmxhZ3M+
KEdQVUNvbG9yV3JpdGU6OkZsYWdzOjpBbGwpIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb2xvcldyaXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRjNmQ1YzhjOWRlNjFmNDMyODE0NWI0ZjM1NTEyZGZhN2IzMmExOTAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbG9yV3JpdGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXVzaW5nIEdQVUNvbG9yV3JpdGVGbGFncyA9IHVuc2lnbmVkOwotCi1jbGFzcyBHUFVD
b2xvcldyaXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29sb3JXcml0ZT4gewotcHVibGljOgot
ICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVDb2xvcldyaXRlRmxhZ3MgewotICAgICAgICBOb25l
ID0gMCwKLSAgICAgICAgUmVkID0gMSA8PCAwLAotICAgICAgICBHcmVlbiA9IDEgPDwgMSwKLSAg
ICAgICAgQmx1ZSA9IDEgPDwgMiwKLSAgICAgICAgQWxwaGEgPSAxIDw8IDMsCi0gICAgICAgIEFs
bCA9ICgxIDw8IDQpIC0gMSwKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMmZiNjJkNDRjMDViOTE1YTc1MjZiMjMxNTZmOTE5Njg0MDhhNWEyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVU9yaWdp
bjNELmgiCi0jaW5jbHVkZSAiR1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1
cmUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVUV4dGVudDNEOwotCi1zdHJ1Y3QgR1BVQnVmZmVy
Q29weVZpZXdCYXNlIHsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgdW5zaWduZWQgcm93UGl0
Y2g7Ci0gICAgdW5zaWduZWQgaW1hZ2VIZWlnaHQ7Ci19OwotCi1zdHJ1Y3QgR1BVQnVmZmVyQ29w
eVZpZXcgZmluYWwgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIEdQVUJ1ZmZlckNvcHlW
aWV3KFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyQ29weSwgY29uc3QgR1BVQnVmZmVyQ29weVZpZXdC
YXNlJiBiYXNlKQotICAgICAgICA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZShiYXNlKQotICAgICAg
ICAsIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlckNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8
R1BVQnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7
Ci0gICAgdW5zaWduZWQgbWlwTGV2ZWw7Ci0gICAgdW5zaWduZWQgYXJyYXlMYXllcjsKLSAgICBH
UFVPcmlnaW4zRCBvcmlnaW47Ci19OwotCi1zdHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFs
IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgR1BVVGV4dHVyZUNvcHlWaWV3KFJlZjxH
UFVUZXh0dXJlPiYmIHRleHR1cmVDb3B5LCBjb25zdCBHUFVUZXh0dXJlQ29weVZpZXdCYXNlJiBi
YXNlKQotICAgICAgICA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UoYmFzZSkKLSAgICAgICAgLCB0
ZXh0dXJlKFdURk1vdmUodGV4dHVyZUNvcHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8R1BV
VGV4dHVyZT4gdGV4dHVyZTsKLX07Ci0KLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVDb21tYW5kQnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxHUFVDb21tYW5kQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQ
bGF0Zm9ybUNvbW1hbmRCdWZmZXIqIHBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyLmdldCgpOyB9Ci0gICAgY29uc3QgSGFzaFNldDxS
ZWY8R1BVQnVmZmVyPj4mIHVzZWRCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVy
czsgfQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiYgdXNlZFRleHR1cmVzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VkVGV4dHVyZXM7IH0KLSAgICBib29sIGlzRW5jb2RpbmdQYXNz
KCkgY29uc3QgeyByZXR1cm4gbV9pc0VuY29kaW5nUGFzczsgfQotCi0gICAgdm9pZCBzZXRJc0Vu
Y29kaW5nUGFzcyhib29sIGlzRW5jb2RpbmcpIHsgbV9pc0VuY29kaW5nUGFzcyA9IGlzRW5jb2Rp
bmc7IH0KLSNpZiBVU0UoTUVUQUwpCi0gICAgfkdQVUNvbW1hbmRCdWZmZXIoKTsKLSAgICB2b2lk
IGVuZEJsaXRFbmNvZGluZygpOwotI2VuZGlmCi0KLSAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZl
cihSZWY8R1BVQnVmZmVyPiYmLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYs
IHVpbnQ2NF90IGRzdE9mZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVy
VG9UZXh0dXJlKEdQVUJ1ZmZlckNvcHlWaWV3JiYsIEdQVVRleHR1cmVDb3B5VmlldyYmLCBjb25z
dCBHUFVFeHRlbnQzRCYpOwotICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihHUFVUZXh0dXJl
Q29weVZpZXcmJiwgR1BVQnVmZmVyQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLSAg
ICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKEdQVVRleHR1cmVDb3B5VmlldyYmLCBHUFVUZXh0
dXJlQ29weVZpZXcmJiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKLQotICAgIHZvaWQgdXNlQnVmZmVy
KFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKSB7IG1fdXNlZEJ1ZmZlcnMuYWRkVm9pZChXVEZNb3Zl
KGJ1ZmZlcikpOyB9Ci0gICAgdm9pZCB1c2VUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUpIHsgbV91c2VkVGV4dHVyZXMuYWRkVm9pZChXVEZNb3ZlKHRleHR1cmUpKTsgfQotCi1wcml2
YXRlOgotICAgIEdQVUNvbW1hbmRCdWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIm
Jik7Ci0KLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tbWFu
ZEJ1ZmZlcjsKLSAgICBIYXNoU2V0PFJlZjxHUFVCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOwotICAg
IEhhc2hTZXQ8UmVmPEdQVVRleHR1cmU+PiBtX3VzZWRUZXh0dXJlczsKLSAgICBib29sIG1faXNF
bmNvZGluZ1Bhc3MgeyBmYWxzZSB9OwotI2lmIFVTRShNRVRBTCkKLSAgICBNVExCbGl0Q29tbWFu
ZEVuY29kZXIgKmJsaXRFbmNvZGVyKCkgY29uc3Q7Ci0gICAgbXV0YWJsZSBSZXRhaW5QdHI8TVRM
QmxpdENvbW1hbmRFbmNvZGVyPiBtX2JsaXRFbmNvZGVyOwotI2VuZGlmCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXBhcmVGdW5jdGlv
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTBiYmEzOWM5ZGZlNGQwMDI4OTNj
OWFiNWMyOGQxMmZlNGMyOGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wYXJl
RnVuY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotZW51bSBjbGFzcyBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgIE5ldmVyLAotICAgIExlc3Ms
Ci0gICAgRXF1YWwsCi0gICAgTGVzc0VxdWFsLAotICAgIEdyZWF0ZXIsCi0gICAgTm90RXF1YWws
Ci0gICAgR3JlYXRlckVxdWFsLAotICAgIEFsd2F5cwotfTsKLQotdXNpbmcgUGxhdGZvcm1Db21w
YXJlRnVuY3Rpb24gPSB1bnNpZ25lZDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmEwNDE1ZDkwZDhjYmNmODdkYmNhMmEyYWNjZDI1YmExNGViOGE2
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgiCi0j
aW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tcHV0ZVBhc3NF
bmNvZGVyPiB0cnlDcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgdm9pZCBz
ZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiYmKTsKLSAgICB2b2lkIGRp
c3BhdGNoKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHopOwotCi1wcml2YXRlOgot
ICAgIEdQVUNvbXB1dGVQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUGxhdGZv
cm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0ciYmKTsKLSAgICB+R1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyKCkgeyBlbmRQYXNzKCk7IH0KLQotICAgIC8vIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
Ci0gICAgY29uc3QgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGxhdGZvcm1QYXNz
RW5jb2RlcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaW52YWxpZGF0ZUVuY29kZXIoKSBmaW5h
bCB7IG1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgPSBudWxscHRyOyB9Ci0jaWYgVVNFKE1F
VEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwgdW5zaWduZWQg
dXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29tcHV0ZUJ1ZmZlcihjb25zdCBNVExCdWZmZXIg
KiwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBmaW5hbDsKLSNlbmRpZgotCi0g
ICAgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBh
c3NFbmNvZGVyOwotICAgIFJlZlB0cjxjb25zdCBHUFVDb21wdXRlUGlwZWxpbmU+IG1fcGlwZWxp
bmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ5
YzI3ZTMzMDQyODNhYjNlNTA4ODlkODdiODdlYzg4ZmE1OGNhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNp
bmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShXSExT
TF9DT01QSUxFUikKLSNpbmNsdWRlICJXSExTTFByZXBhcmUuaCIKLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVUVycm9yU2NvcGVzOwot
Y2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7Ci0KLXN0cnVjdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOwotCi1jbGFzcyBHUFVDb21wdXRlUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlw
ZWxpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfkdQVUNvbXB1dGVQaXBlbGluZSgpOwotCi0g
ICAgc3RhdGljIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IHRyeUNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29w
ZXMmKTsKLQotICAgIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICBib29sIHJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmLCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3ImJiBjb21wdXRlU3RhZ2UpOwotCi0gICAgY29uc3QgUGxhdGZvcm1D
b21wdXRlUGlwZWxpbmUqIHBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZS5nZXQoKTsgfQotCi0jaWYgRU5BQkxFKFdITFNMX0NP
TVBJTEVSKQotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZURpbWVuc2lvbnM7IH0KLSNlbmRpZgotCi1wcml2YXRl
OgotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVDb21wdXRlUGlwZWxpbmUoUGxh
dGZvcm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciYmLCBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMs
IGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mKTsKLSNlbmRpZgotCi0gICAgUGxhdGZv
cm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lOwotI2lm
IEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgbV9j
b21wdXRlRGltZW5zaW9ucyB7IDAsIDAsIDAgfTsKLSNlbmRpZgotCi0gICAgLy8gUHJlc2VydmVk
IGZvciBXZWIgSW5zcGVjdG9yIHJlY29tcGlsYXRpb24uCi0gICAgUmVmUHRyPEdQVVBpcGVsaW5l
TGF5b3V0PiBtX2xheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVDb21wdXRlUGlwZWxpbmUs
IGlzQ29tcHV0ZVBpcGVsaW5lKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNiMzkxNTA1ZWVjMjU5YTIzZDgxODFmNjc0ZGRkODdmYzA1MDYyNmMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCi0j
aW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKFJl
ZlB0cjxHUFVQaXBlbGluZUxheW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciYmIGNvbXB1dGUpCi0gICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
IFdURk1vdmUobGF5b3V0KSB9Ci0gICAgICAgICwgY29tcHV0ZVN0YWdlIHsgV1RGTW92ZShjb21w
dXRlKSB9Ci0gICAgewotICAgIH0KLQotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ciBjb21wdXRlU3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTQ3ZDAzYjM2MmE2ODhiMmQ3OTEwYzdm
YjE3OWJiMWU5OWUwNmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5j
aWxTdGF0ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVDb21wYXJlRnVuY3Rpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yIHsKLSAgICBib29sIGRlcHRoV3JpdGVFbmFibGVk
OwotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2NmNTJiOWU1ZGNhNGIxMTlkZWFkZTQyZGVmYTliZWJmZjU0NDdl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQ
VUJpbmRHcm91cC5oIgotI2luY2x1ZGUgIkdQVUJpbmRHcm91cEFsbG9jYXRvci5oIgotI2luY2x1
ZGUgIkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlv
dXQuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQnVmZmVyRGVzY3JpcHRvci5oIgotI2luY2x1
ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmUuaCIK
LSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BV
RXJyb3JTY29wZXMuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotI2luY2x1ZGUg
IkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVs
aW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW5jbHVk
ZSAiR1BVU2FtcGxlci5oIgotI2luY2x1ZGUgIkdQVVNhbXBsZXJEZXNjcmlwdG9yLmgiCi0jaW5j
bHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVUZXh0dXJlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQnVmZmVyPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZl
cihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCdWZmZXJNYXBwZWRP
cHRpb24gaXNNYXBwZWQsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICByZXR1
cm4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGlzTWFwcGVkLCBlcnJv
clNjb3Blcyk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBtYXhpbXVtTWlwTGV2ZWxDb3VudChHUFVU
ZXh0dXJlRGltZW5zaW9uIGRpbWVuc2lvbiwgR1BVRXh0ZW50M0Qgc2l6ZSkKLXsKLSAgICB1bnNp
Z25lZCB3aWR0aCA9IHNpemUud2lkdGg7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gMTsKLSAgICB1
bnNpZ25lZCBkZXB0aCA9IDE7Ci0gICAgc3dpdGNoIChkaW1lbnNpb24pIHsKLSAgICBjYXNlIEdQ
VVRleHR1cmVEaW1lbnNpb246Ol8xZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUFVUZXh0
dXJlRGltZW5zaW9uOjpfMmQ6Ci0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKLSAgICAgICAgaGVp
Z2h0ID0gc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGRlcHRoID0gc2l6ZS5kZXB0aDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byBtYXhEaW1lbnNpb24gPSBzdGQ6Om1heChzdGQ6Om1h
eCh3aWR0aCwgaGVpZ2h0KSwgZGVwdGgpOwotICAgIGludCBpID0gc2l6ZW9mKEdQVUV4dGVudDNE
OjpJbm5lclR5cGUpICogOCAtIDE7Ci0gICAgd2hpbGUgKCEobWF4RGltZW5zaW9uICYgKDEgPDwg
aSkpICYmIGkgPj0gMCkKLSAgICAgICAgLS1pOwotICAgIEFTU0VSVChpID49IDApOwotICAgIHJl
dHVybiBpICsgMTsKLX0KLQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVURldmljZTo6dHJ5Q3JlYXRl
VGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKLXsK
LSAgICBpZiAoIWRlc2NyaXB0b3Iuc2l6ZS53aWR0aCB8fCAhZGVzY3JpcHRvci5zaXplLmhlaWdo
dCB8fCAhZGVzY3JpcHRvci5zaXplLmRlcHRoKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdl
bmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZXMgY2FuJ3QgaGF2ZSAwIGRpbWVuc2lvbnMuIik7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKCFkZXNjcmlwdG9yLm1pcExl
dmVsQ291bnQpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9y
KCJUZXh0dXJlcyBjYW4ndCBoYXZlIDAgbWlwbGV2ZWxzLiIpOwotICAgICAgICByZXR1cm4geyB9
OwotICAgIH0KLQotICAgIGlmICghZGVzY3JpcHRvci5zYW1wbGVDb3VudCkgewotICAgICAgICBt
X2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRleHR1cmVzIGNhbid0IGhhdmUg
MCBzYW1wbGVzLiIpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIC8vIGh0dHBz
Oi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9tZXRhbC9NZXRhbC1GZWF0dXJlLVNldC1UYWJsZXMucGRm
Ci0gICAgdW5zaWduZWQgbWF4UmVndWxhclNpemUgPSA4MTkyOwotICAgIHVuc2lnbmVkIG1heERl
cHRoU2l6ZSA9IDIwNDg7Ci0gICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAg
IGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5z
aXplLndpZHRoID4gbWF4UmVndWxhclNpemUpIHsKLSAgICAgICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCIxRCB0ZXh0dXJlIGlzIHRvbyB3aWRl
OiAiLCBkZXNjcmlwdG9yLnNpemUud2lkdGgsICIgbmVlZHMgdG8gYmUgPD0gIiwgbWF4UmVndWxh
clNpemUsICIuIikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA+IG1heERlcHRoU2l6ZSkgewotICAgICAgICAg
ICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjFEIHRl
eHR1cmUgYXJyYXkgaGFzIHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmhlaWdo
dCwgIiBuZWVkcyB0byBiZSA8PSAiLCBtYXhEZXB0aFNpemUsICIuIikpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdQVVRleHR1
cmVEaW1lbnNpb246Ol8yZDoKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1h
eFJlZ3VsYXJTaXplIHx8IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhSZWd1bGFyU2l6ZSkg
ewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VT
dHJpbmcoIjJEIHRleHR1cmUgaXMgdG9vIGxhcmdlOiIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwg
IiBhbmQgIiwgZGVzY3JpcHRvci5zaXplLmhlaWdodCwgIiBuZWVkIHRvIGJlIDw9ICIsIG1heFJl
Z3VsYXJTaXplLCAiLiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA+IG1heERlcHRoU2l6ZSkgewotICAgICAg
ICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIjJE
IHRleHR1cmUgYXJyYXkgaGFzIHRvbyBtYW55IGxheWVyczogIiwgZGVzY3JpcHRvci5zaXplLmRl
cHRoLCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heERlcHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4
dHVyZURpbWVuc2lvbjo6XzNkOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4g
bWF4RGVwdGhTaXplIHx8IGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtYXhEZXB0aFNpemUgfHwg
ZGVzY3JpcHRvci5zaXplLmRlcHRoID4gbWF4RGVwdGhTaXplKSB7Ci0gICAgICAgICAgICBtX2Vy
cm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiM0QgdGV4dHVyZSBp
cyB0b28gbGFyZ2U6ICIsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwgIiwgIiwgZGVzY3JpcHRvci5z
aXplLmhlaWdodCwgIiwgYW5kICIsIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aCwgIiBuZWVkIHRvIGJl
IDw9ICIsIG1heERlcHRoU2l6ZSwgIi4iKSk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVu
c2lvbiA9PSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5taXBMZXZlbENv
dW50ICE9IDEpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9y
KCIxRCB0ZXh0dXJlcyBjYW4ndCBoYXZlIG1pcG1hcHMiKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBhdXRvIG1heExldmVscyA9IG1heGltdW1NaXBMZXZlbENvdW50KGRlc2Ny
aXB0b3IuZGltZW5zaW9uLCBkZXNjcmlwdG9yLnNpemUpOwotICAgIGlmIChkZXNjcmlwdG9yLm1p
cExldmVsQ291bnQgPiBtYXhMZXZlbHMpIHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJh
dGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIlRvbyBtYW55IG1pcGxldmVsczogIiwgZGVzY3Jp
cHRvci5taXBMZXZlbENvdW50LCAiIG5lZWRzIHRvIGJlIDw9ICIsIG1heExldmVscywgIi4iKSk7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxl
Q291bnQgIT0gMSAmJiBkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDQpIHsKLSAgICAgICAgbV9l
cnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJUZXh0dXJlIHNhbXBsZUNvdW50IGNh
biBvbmx5IGJlIDEgb3IgNC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBp
ZiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKSB7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9y
LmRpbWVuc2lvbiAhPSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQpIHsKLSAgICAgICAgICAgIG1f
ZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVGV4dHVyZSBkaW1lbnNpb24gaW5j
b21wYXRpYmxlIHdpdGggbXVsdGlzYW1wbGluZy4iKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAhPSAxKSB7
Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIk11bHRp
c2FtcGxlZCB0ZXh0dXJlcyBjYW4ndCBoYXZlIG1pcG1hcHMuIik7Ci0gICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGggIT0g
MSkgewotICAgICAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJB
cnJheSB0ZXh0dXJlcyBjYW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnVzYWdlICYgc3RhdGlj
X2Nhc3Q8R1BVVGV4dHVyZVVzYWdlRmxhZ3M+KEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3Jh
Z2UpKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
Ik11bHRpc2FtcGxlZCB0ZXh0dXJlcyBjYW4ndCBoYXZlIFNUT1JBR0UgdXNhZ2UuIik7Ci0gICAg
ICAgICAgICByZXR1cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBPbmx5IHNv
bWUgcGl4ZWwgZm9ybWF0cyBhcmUgY2FwYWJsZSBvZiBNU0FBLiBXaGVuIHdlIGFkZCB0aG9zZSBu
ZXcgcGl4ZWwgZm9ybWF0cywgd2UnbGwgaGF2ZSB0byBhZGQgZmlsdGVyaW5nIGNvZGUgaGVyZS4K
LSAgICB9Ci0KLSAgICAvLyBUaGUgaGVpZ2h0IGNvbXBvbmVudCBmb3IgMWQgdGV4dHVyZXMgaXMg
dGhlIGFycmF5IGxlbmd0aC4KLSAgICAvLyBUaGUgZGVwdGggY29tcG9uZW50IGZvciAyZCB0ZXh0
dXJlcyBpcyB0aGUgYXJyYXkgbGVuZ3RoLgotICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiA9
PSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMWQgJiYgZGVzY3JpcHRvci5zaXplLmRlcHRoICE9IDEp
IHsKLSAgICAgICAgbV9lcnJvclNjb3Blcy0+Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCIxRCB0ZXh0
dXJlcyBjYW4ndCBoYXZlIGRlcHRoICE9IDEuIik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
fQotCi0gICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRo
MzJmbG9hdFN0ZW5jaWw4ICYmIGRlc2NyaXB0b3IuZGltZW5zaW9uICE9IEdQVVRleHR1cmVEaW1l
bnNpb246Ol8yZCkgewotICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIkRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMgbXVzdCBiZSAyZC4iKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgPT0gR1BVVGV4dHVyZUZv
cm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDggJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAx
KSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRGVwdGgv
c3RlbmNpbCB0ZXh0dXJlcyBjYW4ndCBiZSBtdWx0aXNhbXBsZWQuIik7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgaWYgKHN0YXRpY19jYXN0PEdQVVRleHR1cmVVc2FnZUZsYWdz
PihkZXNjcmlwdG9yLnVzYWdlKSA+PSBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4o
R1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6TWF4aW11bVZhbHVlKSkgewotICAgICAgICBtX2Vycm9y
U2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgdXNhZ2UgZmxhZ3MuIik7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OnRyeUNy
ZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgbWFrZVJlZigqbV9lcnJvclNjb3BlcykpOwotfQotCi1S
ZWZQdHI8R1BVU2FtcGxlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTYW1wbGVyKGNvbnN0IEdQVVNh
bXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVTYW1w
bGVyOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IpOwotfQotCi1SZWZQdHI8R1BVQmluZEdy
b3VwTGF5b3V0PiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBHUFVC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVy
biBHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7Ci19Ci0K
LVJlZjxHUFVQaXBlbGluZUxheW91dD4gR1BVRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChH
UFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJl
dHVybiBHUFVQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoZGVzY3JpcHRvcikpOwotfQot
Ci1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVNoYWRlck1vZHVs
ZShjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAotewot
ICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7
Ci19Ci0KLVJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5k
ZXJQaXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICByZXR1cm4gR1BVUmVu
ZGVyUGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpOwot
fQotCi1SZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUNvbXB1
dGVQaXBlbGluZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQVUNv
bXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yLCBlcnJvclNjb3Blcyk7
Ci19Ci0KLVJlZlB0cjxHUFVCaW5kR3JvdXA+IEdQVURldmljZTo6dHJ5Q3JlYXRlQmluZEdyb3Vw
KGNvbnN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykgY29uc3QKLXsKLSAgICBpZiAoIW1fYmluZEdyb3VwQWxsb2NhdG9yKQot
ICAgICAgICBtX2JpbmRHcm91cEFsbG9jYXRvciA9IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3Jl
YXRlKGVycm9yU2NvcGVzKTsKLQotICAgIHJldHVybiBHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZShk
ZXNjcmlwdG9yLCAqbV9iaW5kR3JvdXBBbGxvY2F0b3IpOwotfQotCi1SZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzKTsKLX0KLQotUmVmUHRy
PEdQVVF1ZXVlPiBHUFVEZXZpY2U6OnRyeUdldFF1ZXVlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
cXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKCp0aGlzKTsKLQot
ICAgIHJldHVybiBtX3F1ZXVlOwotfQotICAgIAotdm9pZCBHUFVEZXZpY2U6OnNldFN3YXBDaGFp
bihSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKLXsKLSAgICBtX3N3YXBDaGFpbiA9
IFdURk1vdmUoc3dhcENoYWluKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXZpY2UuaAppbmRleCBmMGJiYmUzMDRmZjBiNmE3NjJiOWY0OGM0NDEzZmEx
NWVmNWY0MTU1Li43OWJkNTc2Yzk2NjQzYmI4OGM1MjY0MzE2M2I5MjBmZjhjY2JlNmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4NiAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRl
ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgot
I2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVRdWV1ZS5oIgotI2lu
Y2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdQVUJpbmRHcm91cDsKLWNsYXNzIEdQVUJpbmRHcm91cExheW91dDsKLWNs
YXNzIEdQVUJ1ZmZlcjsKLWNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7Ci1jbGFzcyBHUFVDb21wdXRl
UGlwZWxpbmU7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0
OwotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVTYW1wbGVyOwotY2xhc3MgR1BV
U2hhZGVyTW9kdWxlOwotY2xhc3MgR1BVVGV4dHVyZTsKLQotc3RydWN0IEdQVUJpbmRHcm91cERl
c2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKLXN0cnVjdCBH
UFVCdWZmZXJEZXNjcmlwdG9yOwotc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7
Ci1zdHJ1Y3QgR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwotc3RydWN0IEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjsKLXN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7Ci1zdHJ1
Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3I7Ci1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
cjsKLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotc3RydWN0IEdQVVRleHR1cmVEZXNj
cmlwdG9yOwotCi1lbnVtIGNsYXNzIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjsKLQotY2xhc3MgR1BV
RGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPEdQVURldmljZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiB0
cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+Jik7
Ci0gICAgc3RhdGljIHZvaWQgcHJld2FybSgpOwotCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gdHJ5
Q3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBHUFVCdWZmZXJNYXBwZWRP
cHRpb24sIEdQVUVycm9yU2NvcGVzJik7Ci0gICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0
ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKSBjb25zdDsKLSAgICBSZWZQdHI8
R1BVU2FtcGxlcj4gdHJ5Q3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYp
IGNvbnN0OwotCi0gICAgUmVmUHRyPEdQVUJpbmRHcm91cExheW91dD4gdHJ5Q3JlYXRlQmluZEdy
b3VwTGF5b3V0KGNvbnN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImKSBjb25zdDsKLSAg
ICBSZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KEdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciYmKSBjb25zdDsKLSAgICBSZWZQdHI8R1BVQmluZEdyb3VwPiB0cnlD
cmVhdGVCaW5kR3JvdXAoY29uc3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvciYsIEdQVUVycm9yU2Nv
cGVzJikgY29uc3Q7Ci0KLSAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiB0cnlDcmVhdGVTaGFk
ZXJNb2R1bGUoY29uc3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYpIGNvbnN0OwotICAgIFJl
ZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKLSAgICBS
ZWZQdHI8R1BVQ29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3Qg
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJikgY29uc3Q7Ci0K
LSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNv
bnN0OwotCi0gICAgUmVmUHRyPEdQVVF1ZXVlPiB0cnlHZXRRdWV1ZSgpIGNvbnN0OwotICAgIAot
ICAgIFBsYXRmb3JtRGV2aWNlKiBwbGF0Zm9ybURldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1EZXZpY2UuZ2V0KCk7IH0KLSAgICBHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc3dhcENoYWluLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTd2FwQ2hhaW4oUmVm
UHRyPEdQVVN3YXBDaGFpbj4mJik7Ci0KLSAgICB2b2lkIHNldEVycm9yU2NvcGVzKFJlZjxHUFVF
cnJvclNjb3Blcz4mJiBlcnJvclNjb3BlcykgeyBtX2Vycm9yU2NvcGVzID0gV1RGTW92ZShlcnJv
clNjb3Blcyk7IH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VXSExTTCA9IHRydWU7
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQ
dHImJik7Ci0KLSAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRyIG1fcGxhdGZvcm1EZXZpY2U7Ci0g
ICAgbXV0YWJsZSBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci0gICAgUmVmUHRyPEdQVVN3YXBD
aGFpbj4gbV9zd2FwQ2hhaW47Ci0gICAgbXV0YWJsZSBSZWZQdHI8R1BVQmluZEdyb3VwQWxsb2Nh
dG9yPiBtX2JpbmRHcm91cEFsbG9jYXRvcjsKLSAgICBSZWZQdHI8R1BVRXJyb3JTY29wZXM+IG1f
ZXJyb3JTY29wZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit2b2lkIHByZXdhcm1H
UFUoKTsKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmIyOGQ0ZmMxMmM4YTI0NzI4Y2UyMDY1YmQyNzIxZGJhZjgyYmZlZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVFcnJvci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUVycm9yRmls
dGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BV
RXJyb3JGaWx0ZXIgZmlsdGVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgc3dpdGNo
IChmaWx0ZXIpIHsKLSAgICBjYXNlIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeToKLSAgICAg
ICAgcmV0dXJuIEdQVUVycm9yKFJlZlB0cjxHUFVPdXRPZk1lbW9yeUVycm9yPihHUFVPdXRPZk1l
bW9yeUVycm9yOjpjcmVhdGUoKSkpOwotICAgIGNhc2UgR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRp
b246Ci0gICAgICAgIHJldHVybiBHUFVFcnJvcihSZWZQdHI8R1BVVmFsaWRhdGlvbkVycm9yPihH
UFVWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSkpOwotICAgIGNhc2UgR1BVRXJyb3JG
aWx0ZXI6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gR1BVRXJyb3IoUmVmUHRyPEdQVVZhbGlkYXRpb25FcnJvcj4oR1BVVmFsaWRhdGlvbkVycm9y
OjpjcmVhdGUoIkJhZCBlcnJvciEiKSkpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY5ZmM4ZmFmYWZhNDVmMGZmMTQ3Y2I4YmJiNDcxMzMyMjc1MmMyOWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiR1BVT3V0T2ZNZW1vcnlFcnJvci5oIgotI2luY2x1ZGUgIkdQVVZhbGlkYXRpb25FcnJv
ci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVRXJyb3JGaWx0ZXI7Ci0KLXVzaW5nIEdQVUVycm9yID0gVmFyaWFudDxS
ZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4sIFJlZlB0cjxHUFVWYWxpZGF0aW9uRXJyb3I+PjsK
LQotR1BVRXJyb3IgY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXIsIGNvbnN0IFN0cmluZyYpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDU2OWZlZjMyNzA1ZDk5YmZlY2VhMDA4OTFmZjE2NDRhMGE0ZDE3
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JGaWx0ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWVudW0gY2xhc3MgR1BV
RXJyb3JGaWx0ZXIgewotICAgIE5vbmUsCi0gICAgT3V0T2ZNZW1vcnksCi0gICAgVmFsaWRhdGlv
biwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yU2NvcGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJlZTljZjFi
ZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRXJyb3JTY29wZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCB1
bnNpZ25lZCBtYXhVbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkID0gMjU2OwotCi1SZWY8R1BV
RXJyb3JTY29wZXM+IEdQVUVycm9yU2NvcGVzOjpjcmVhdGUoVW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2smJiBjYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVFcnJvclNjb3Bl
cyhXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1HUFVFcnJvclNjb3Blczo6R1BVRXJyb3JTY29w
ZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fdW5jYXB0dXJl
ZEVycm9yQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBtX251bVVuY2FwdHVyZWRF
cnJvckV2ZW50c0FsbG93ZWQobWF4VW5jYXB0dXJlZEVycm9yRXZlbnRzQWxsb3dlZCkKLXsKLX0K
LQotdm9pZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmls
dGVyKQotewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIHN0
ZDo6bnVsbG9wdCB9KTsKLX0KLQotc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gR1BVRXJyb3JTY29w
ZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVzc2FnZSkKLXsKLSAgICBpZiAobV9lcnJv
clNjb3Blcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmFpbE1lc3NhZ2UgPSAiTm8gZXJyb3Igc2Nv
cGUgZXhpc3RzISI7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAg
YXV0byBzY29wZSA9IG1fZXJyb3JTY29wZXMudGFrZUxhc3QoKTsKLSAgICByZXR1cm4gc2NvcGUu
ZmlsdGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxsb3B0IDogc2NvcGUuZXJy
b3I7Ci19Ci0KLXZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJyb3IoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IHN0ZDo6ZmluZF9pZihtX2Vycm9yU2NvcGVzLnJiZWdpbigpLCBtX2Vycm9yU2NvcGVzLnJlbmQo
KSwgW2ZpbHRlcl0oY29uc3QgRXJyb3JTY29wZSYgc2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIHNj
b3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSB8fCBzY29wZS5maWx0ZXIgPT0gZmls
dGVyOwotICAgIH0pOwotCi0gICAgaWYgKGl0ZXJhdG9yID09IG1fZXJyb3JTY29wZXMucmVuZCgp
KSB7Ci0gICAgICAgIGlmICghbV9udW1VbmNhcHR1cmVkRXJyb3JFdmVudHNBbGxvd2VkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soY3Jl
YXRlRXJyb3IoZmlsdGVyLCBtZXNzYWdlKSk7Ci0gICAgICAgIGlmICghKC0tbV9udW1VbmNhcHR1
cmVkRXJyb3JFdmVudHNBbGxvd2VkKSkKLSAgICAgICAgICAgIG1fdW5jYXB0dXJlZEVycm9yQ2Fs
bGJhY2soY3JlYXRlRXJyb3IoR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24sICJXZWJHUFU6IFRv
byBtYW55IGVycm9yczsgbm8gbW9yZSBlcnJvciBldmVudHMgd2lsbCBmaXJlIG9uIHRoaXMgR1BV
RGV2aWNlLiIpKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHNj
b3BlIGhhcyBhbHJlYWR5IGNhcHR1cmVkIGFuIGVycm9yLCBpZ25vcmUgdGhpcyBuZXcgb25lLgot
ICAgIGlmIChpdGVyYXRvci0+ZXJyb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIGl0ZXJhdG9y
LT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgR1BVRXJy
b3JTY29wZXM6OmdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17
Ci0gICAgZ2VuZXJhdGVFcnJvcihtX3ByZWZpeCArIG1lc3NhZ2UsIEdQVUVycm9yRmlsdGVyOjpW
YWxpZGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yU2NvcGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MDlj
Njg0YTkzYzc2YjM3ZGY3Y2QwNzM1ZjdkZmU3OGUyYWM3ZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVk
ZSAiR1BVRXJyb3IuaCIKLSNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgotI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVFcnJvclNjb3BlcyA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVUVycm9yU2NvcGVzPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEdQVUVycm9yJiYpPjsKLSAg
ICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUoVW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2smJik7Ci0KLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyKTsKLSAgICBz
dGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2Up
OwotCi0gICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYsIEdQVUVycm9yRmlsdGVy
ID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwotICAgIHZvaWQgZ2VuZXJhdGVQcmVmaXhl
ZEVycm9yKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0RXJyb3JQcmVmaXgoY29uc3QgU3Ry
aW5nJiBwcmVmaXgpIHsgbV9wcmVmaXggPSBwcmVmaXg7IH0KLQotcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgRXJyb3JTY29wZSB7Ci0gICAgICAgIGNvbnN0IEdQVUVycm9yRmlsdGVyIGZpbHRlcjsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7Ci0gICAgfTsKLQotICAgIEdQVUVy
cm9yU2NvcGVzKFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrJiYpOwotCi0gICAgVW5jYXB0dXJlZEVy
cm9yQ2FsbGJhY2sgbV91bmNhcHR1cmVkRXJyb3JDYWxsYmFjazsKLQotICAgIFZlY3RvcjxFcnJv
clNjb3BlPiBtX2Vycm9yU2NvcGVzOwotICAgIFN0cmluZyBtX3ByZWZpeDsKLSAgICB1bnNpZ25l
ZCBtX251bVVuY2FwdHVyZWRFcnJvckV2ZW50c0FsbG93ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUV4dGVudDNELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTQ0ODI2NTIwY2M1ZTdlMGNjOWZmNDNmZDE0MjgwZjUwNDRiN2ViZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXh0ZW50M0QuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVjdCBHUFVFeHRlbnQzRCB7
Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gdW5zaWduZWQ7Ci0gICAgSW5uZXJUeXBlIHdpZHRoOwot
ICAgIElubmVyVHlwZSBoZWlnaHQ7Ci0gICAgSW5uZXJUeXBlIGRlcHRoOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTIyZTUxYzNlNzNiOTU2MWNiYzgxNTRmZDA5NzZkNzhlOWVmODJh
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGltaXRzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IHVuc2lnbmVkIG1heFZlcnRl
eEJ1ZmZlcnMgPSAxNjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMb2FkT3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEyNGVlZjUyNzRmYmMw
YWQ3Njc0ZjZiYzU2ZThmMTk2ZTFjOTYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TG9hZE9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgR1BVTG9hZE9wIHsKLSAgICBDbGVhciwKLSAgICBMb2FkCi19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjJkOTE4YzJlNTQ1MTdjYjM3ZmZmZWE2YjI2
MmQ0NWY4MmZhOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVT2JqZWN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVU9iamVjdEJhc2U+IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5HUFVPYmplY3RCYXNlKCkgPSBkZWZhdWx0OwotCi1wcm90ZWN0ZWQ6
Ci0gICAgR1BVT2JqZWN0QmFzZShSZWY8R1BVRXJyb3JTY29wZXM+JiYgcmVwb3J0ZXIpCi0gICAg
ICAgIDogbV9lcnJvclNjb3BlcyhXVEZNb3ZlKHJlcG9ydGVyKSkgeyB9Ci0KLSAgICBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU2NvcGVzOyB9Ci0K
LXByaXZhdGU6Ci0gICAgUmVmPEdQVUVycm9yU2NvcGVzPiBtX2Vycm9yU2NvcGVzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPdXRPZk1lbW9y
eUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT3V0T2ZN
ZW1vcnlFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjQyMGU5N2RmZTNi
ZjA3NTY2YzViNmEwZmRlYzQ2Njg5NjE3OTQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVPdXRPZk1lbW9yeUVycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8
d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVT3V0T2ZNZW1vcnlFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VU91dE9mTWVtb3J5RXJyb3I+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVU91dE9mTWVt
b3J5RXJyb3I+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVT3V0T2ZNZW1vcnlF
cnJvcik7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVBpcGVsaW5lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4ODE2NTU0
MzU3MTIzMTA1YjZlOWU3Yzg4MzM0MWZjMmJkODI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVQaXBlbGluZTo6
fkdQVVBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTQyZWU4ZDdhM2I3ZWZmMTk5MDZlOTUwMDgxMGYzNDQyYzNjZWI0NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VVBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmU+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5HUFVQaXBlbGluZSgpOwotCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1
dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShU
b1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6R1BVUGlwZWxpbmUmIHBpcGVsaW5lKSB7IHJldHVybiBwaXBlbGluZS5wcmVkaWNhdGU7IH0g
XAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1ZDEyMmJhOTM2ZGY0ZDAwNmViNjEzZTk2MTY5NjYwYzExZjk5ZDQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVMYXlvdXQuaCIKLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBSZWZQdHI8R1BVUGlwZWxpbmVM
YXlvdXQ+IGxheW91dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2IxOTkzYTllMmYwMGI0MmU0Mzg0MzE3Y2E2NWRhNGVkNGRlYTFlYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHUFVQaXBlbGluZUxheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IEdQVVBpcGVsaW5lTGF5b3V0
OjpjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVQaXBlbGluZUxheW91dChXVEZNb3ZlKGRlc2NyaXB0
b3IuYmluZEdyb3VwTGF5b3V0cykpKTsKLX0KLQotR1BVUGlwZWxpbmVMYXlvdXQ6OkdQVVBpcGVs
aW5lTGF5b3V0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mJiBsYXlvdXRz
KQotICAgIDogbV9iaW5kR3JvdXBMYXlvdXRzKFdURk1vdmUobGF5b3V0cykpCi17Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVMYXlv
dXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZUxh
eW91dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk5OTQ2ZmNiYTAxMmNjZWQ0
NmE3ZjE3MjM5Mjk2NzQ1OTE4ZmMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBl
bGluZUxheW91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVBpcGVs
aW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmVMYXlvdXQ+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yJiYpOwotCi0gICAgY29uc3QgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5k
R3JvdXBMYXlvdXQ+PiYgYmluZEdyb3VwTGF5b3V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEdy
b3VwTGF5b3V0czsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVBpcGVsaW5lTGF5b3V0
KFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3VwTGF5b3V0Pj4mJik7Ci0KLSAgICBWZWN0b3I8
UmVmPGNvbnN0IEdQVUJpbmRHcm91cExheW91dD4+IG1fYmluZEdyb3VwTGF5b3V0czsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4YTFlZTJjNzc1MWY0NzFmZDc1NDU4MTBiNzc4YTU0MzIyZjU4MjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91cExheW91dC5oIgotCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IgewotICAgIFZlY3RvcjxSZWY8Y29uc3QgR1BVQmluZEdyb3Vw
TGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBsYXRmb3JtVHlwZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTJjNzY3MjY3ODYyYTVlODAwN2ZkOGUzMzMxZGU3NmU2OWRlM2IxNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGxhdGZvcm1UeXBlcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IFVTRShNRVRBTCkKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCIKLSNlbGlmIFVT
RShEQVdOKQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXNEYXduLmgiCi0jZWxzZQotI2Vycm9y
ICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSBmb3IgV2ViR1BVIgotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIw
OWZhNGEwNTI2MzM0ZjBmN2QzZjdkOWRlODkxMWVlZDljY2EwMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
I2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZl
cihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKQotewotICAgIG1fY29tbWFuZEJ1ZmZlci0+c2V0SXNF
bmNvZGluZ1Bhc3ModHJ1ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTcyNDRmMmVlMWZkY2Q1ZDFiMTczNzVjOWU0MTFk
MGY2NmRjNWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUJpbmRHcm91
cEJpbmRpbmcuaCIKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BV
UGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQmluZEdyb3VwOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxp
bmU7Ci0KLWNsYXNzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5H
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgZW5kUGFz
cygpOwotICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVkLCBHUFVCaW5kR3JvdXAmKTsKLQot
cHJvdGVjdGVkOgotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxHUFVDb21tYW5k
QnVmZmVyPiYmKTsKLQotICAgIEdQVUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBs
YXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25z
dCA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVFbmNvZGVyKCkg
PSAwOwotI2lmIFVTRShNRVRBTCkKLSAgICB2aXJ0dWFsIHZvaWQgdXNlUmVzb3VyY2UoY29uc3Qg
TVRMUmVzb3VyY2UgKiwgdW5zaWduZWQpID0gMDsKLQotICAgIC8vIFJlbmRlciBjb21tYW5kIGVu
Y29kZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0IE1U
TEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTEJ1ZmZlciAqLCBOU1VJbnRlZ2VyLCB1bnNpZ25lZCkg
eyB9Ci0gICAgLy8gQ29tcHV0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcHV0ZUJ1ZmZlcihj
b25zdCBNVExCdWZmZXIgKiwgTlNVSW50ZWdlciwgdW5zaWduZWQpIHsgfQotI2VuZGlmIC8vIFVT
RShNRVRBTCkKLQotICAgIFJlZjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyN2MwNjI4ZWY3YTMwMzVlNTkyMjFmZWQ5ODdkNWY1N2RiMDdhZDE2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvckJhc2UgewotICAgIFN0cmluZyBlbnRyeVBvaW50OwotfTsKLQotc3RydWN0IEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvciA6IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvckJh
c2UgewotICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcihSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmIG1vZHVsZSwgY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZSYg
YmFzZSkKLSAgICAgICAgOiBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3JCYXNlKGJhc2Up
Ci0gICAgICAgICwgbW9kdWxlIHsgV1RGTW92ZShtb2R1bGUpIH0KLSAgICB7Ci0gICAgfQotCi0g
ICAgUmVmPEdQVVNoYWRlck1vZHVsZT4gbW9kdWxlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc0ZDUyNzg1M2EzNGFmZTAzNTNjNGY3ODc3OTljY2JkNDY2ZDhlYjEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVzLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIEdQVURldmljZTsK
LQotY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVRdWV1ZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
KTsKLQotICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVldWUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0KLQotICAgIHZvaWQgc3VibWl0KFZlY3RvcjxSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4+JiYpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHUFVRdWV1
ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiwgY29uc3QgR1BVRGV2aWNlJik7Ci0KLSAgICBQbGF0
Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1ZXVlOwotICAgIFdlYWtQdHI8Y29uc3QgR1BV
RGV2aWNlPiBtX2RldmljZTsKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgbV9wcmVzZW50
VGFzazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZWE2NGI0NTk0YWUxM2I0YzQ2ZDhlNWM2NmE3MjQ1YjcwMTE3OTY5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbG9yLmgiCi0jaW5jbHVkZSAiR1BVTG9hZE9w
LmgiCi0jaW5jbHVkZSAiR1BVU3RvcmVPcC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVTG9hZE9w
IGxvYWRPcDsKLSAgICBHUFVTdG9yZU9wIHN0b3JlT3A7Ci0gICAgR1BVQ29sb3IgY2xlYXJDb2xv
ciB7IDAsIDAsIDAsIDEgfTsKLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoUmVm
PEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQmFzZSYpOwotCi0gICAgUmVmPEdQVVRleHR1cmU+IGF0dGFjaG1lbnQ7Ci19OwotCi1zdHJ1
Y3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7Ci0g
ICAgR1BVTG9hZE9wIGRlcHRoTG9hZE9wOwotICAgIEdQVVN0b3JlT3AgZGVwdGhTdG9yZU9wOwot
ICAgIGZsb2F0IGNsZWFyRGVwdGg7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHN0ZW5jaWwgc3VwcG9y
dC4KLX07Ci0KLXN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3JCYXNlIHsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3IoUmVmPEdQVVRleHR1cmU+JiYsIGNvbnN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJlZjxHUFVUZXh0dXJlPiBhdHRhY2htZW50
OwotfTsKLQotc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICBWZWN0b3I8R1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0g
ICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0NDNmNWQ0YzEyNDUwMGY4ZmUzYzUxMjg3N2Mw
ZTE1MzhhYmVjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQbGF0Zm9ybVR5cGVz
LmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKLSNpbmNsdWRlICJH
UFVSZW5kZXJQaXBlbGluZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotCi1z
dHJ1Y3QgR1BVQ29sb3I7Ci1zdHJ1Y3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLWNsYXNz
IEdQVVJlbmRlclBhc3NFbmNvZGVyIDogcHVibGljIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiB0cnlD
cmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYp
OwotCi0gICAgdm9pZCBzZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmU+JiYp
OwotICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25zdCBHUFVDb2xvciYpOwotICAgIHZvaWQgc2V0
Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNldFNjaXNzb3JSZWN0KHVu
c2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwot
ICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoR1BVQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0KTsKLSAg
ICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxSZWY8
R1BVQnVmZmVyPj4mLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvZmZzZXRzKTsKLSAgICB2b2lk
IGRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2ln
bmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsKLSAgICB2b2lkIGRyYXdJ
bmRleGVkKHVuc2lnbmVkIGluZGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2ln
bmVkIGZpcnN0SW5kZXgsIGludCBiYXNlVmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNlKTsK
LQotcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8R1BVQ29tbWFuZEJ1ZmZl
cj4mJiwgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyJiYpOwotICAgIH5HUFVSZW5k
ZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9Ci0KLSAgICAvLyBHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2RlcgotICAgIGNvbnN0IFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBs
YXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVFbmNv
ZGVyKCkgZmluYWwgeyBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgPSBudWxscHRyOyB9Ci0j
aWYgVVNFKE1FVEFMKQotICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKiwg
dW5zaWduZWQgdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0IE1U
TEJ1ZmZlciAqLCBOU1VJbnRlZ2VyIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGZpbmFsOwotICAg
IHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMQnVmZmVyICosIE5TVUludGVnZXIgb2Zm
c2V0LCB1bnNpZ25lZCBpbmRleCkgZmluYWw7Ci0KLSAgICBSZWZQdHI8R1BVQnVmZmVyPiBtX2lu
ZGV4QnVmZmVyOwotICAgIHVpbnQ2NF90IG1faW5kZXhCdWZmZXJPZmZzZXQ7Ci0jZW5kaWYgLy8g
VVNFKE1FVEFMKQotCi0gICAgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyIG1fcGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2RlcjsKLSAgICBSZWZQdHI8Y29uc3QgR1BVUmVuZGVyUGlwZWxp
bmU+IG1fcGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzgxNmEyNDFjMDQ1MzA4OWIwYmFhMTUwMWI4OTU3YjRiMmVjOGZhMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZS5oIgotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlw
ZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVFcnJvclNjb3BlczsKLQotY2xhc3MgR1BVUmVu
ZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgR1BVUGlwZWxpbmUgewotcHVibGljOgotICAgIHZp
cnR1YWwgfkdQVVJlbmRlclBpcGVsaW5lKCk7Ci0KLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKTsKLQotICAgIGJvb2wgaXNSZW5kZXJQ
aXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgcmVjb21waWxlKGNv
bnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0
YWdlLCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFn
bWVudFN0YWdlKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
ZGVwdGhTdGVuY2lsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoU3RlbmNpbFN0YXRlLmdl
dCgpOyB9Ci0jZW5kaWYKLSAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lKiBwbGF0Zm9ybVJlbmRl
clBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgp
OyB9Ci0gICAgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdCB7
IHJldHVybiBtX3ByaW1pdGl2ZVRvcG9sb2d5OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVJbmRl
eEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4Rm9ybWF0OyB9Ci0K
LXByaXZhdGU6Ci0jaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0
cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRy
JiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0Piwg
Y29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvckJhc2UmKTsKLQotICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4g
bV9kZXB0aFN0ZW5jaWxTdGF0ZTsKLSNlbmRpZiAvLyBVU0UoTUVUQUwpCi0gICAgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZTsKLSAgICBHUFVQ
cmltaXRpdmVUb3BvbG9neSBtX3ByaW1pdGl2ZVRvcG9sb2d5OwotICAgIHN0ZDo6b3B0aW9uYWw8
R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7Ci0KLSAgICAvLyBQcmVzZXJ2ZWQgZm9yIFdl
YiBJbnNwZWN0b3IgcmVjb21waWxhdGlvbi4KLSAgICBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+
IG1fbGF5b3V0OwotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgbV9yZW5kZXJE
ZXNjcmlwdG9yQmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19HUFVQSVBFTElORShXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZSwgaXNS
ZW5kZXJQaXBlbGluZSgpKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Rl
MmRhOWFhYTMzNmE3YWYwMWQ5MzI4MmRlZmUwMmFjOWE3MzkzMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSAiR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVUHJpbWl0
aXZlVG9wb2xvZ3kgewotICAgIFBvaW50TGlzdCwKLSAgICBMaW5lTGlzdCwKLSAgICBMaW5lU3Ry
aXAsCi0gICAgVHJpYW5nbGVMaXN0LAotICAgIFRyaWFuZ2xlU3RyaXAKLX07Ci0KLXN0cnVjdCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVQcmltaXRpdmVUb3BvbG9n
eSBwcmltaXRpdmVUb3BvbG9neTsKLSAgICBWZWN0b3I8R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+
IGNvbG9yU3RhdGVzOwotICAgIHN0ZDo6b3B0aW9uYWw8R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNj
cmlwdG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3Ig
dmVydGV4SW5wdXQ7Ci19OwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDog
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSB7Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKFJlZlB0cjxHUFVQaXBlbGluZUxh
eW91dD4mJiBsYXlvdXQsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleCwg
c3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnQs
IGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIGJhc2UpCi0gICAgICAgIDog
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUobGF5b3V0KSB9Ci0gICAgICAgICwg
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZShiYXNlKQotICAgICAgICAsIHZlcnRleFN0
YWdlKFdURk1vdmUodmVydGV4KSkKLSAgICAgICAgLCBmcmFnbWVudFN0YWdlKFdURk1vdmUoZnJh
Z21lbnQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IgdmVydGV4U3RhZ2U7Ci0gICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmEwYmQxMDY2YjAxYTA2M2NmYzM4NmNiYzFk
ZDRjOTNkODRiMTYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDxvcHRpb25hbD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVBvd2VyUHJlZmVyZW5jZSA6
IGJvb2wgeyBMb3dQb3dlciwgSGlnaFBlcmZvcm1hbmNlIH07Ci0KLXN0cnVjdCBHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMgewotICAgIHN0ZDo6b3B0aW9uYWw8R1BVUG93ZXJQcmVmZXJlbmNlPiBw
b3dlclByZWZlcmVuY2U7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU2FtcGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWE2
NDQ2OWZjY2ViNjc0ZDg5ZmVlYTBiYmExMmNlM2ZmM2YyYTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTYW1wbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
R1BVUGxhdGZvcm1UeXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmlj
ZTsKLQotc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVTYW1wbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8R1BVU2FtcGxlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8R1BVU2FtcGxlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVNhbXBs
ZXJEZXNjcmlwdG9yJik7Ci0KLSAgICBQbGF0Zm9ybVNhbXBsZXIqIHBsYXRmb3JtU2FtcGxlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1TYW1wbGVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgR1BVU2FtcGxlcihQbGF0Zm9ybVNhbXBsZXJTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3Jt
U2FtcGxlclNtYXJ0UHRyIG1fcGxhdGZvcm1TYW1wbGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTYW1wbGVyRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzcwZmVkZDQwOWNmZTJiZDM3NjAxNTgy
NjZlMDAzNDAxNzExYTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNhbXBsZXJEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tcGFyZUZ1
bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVBZGRyZXNz
TW9kZSB7Ci0gICAgQ2xhbXBUb0VkZ2UsCi0gICAgUmVwZWF0LAotICAgIE1pcnJvclJlcGVhdCwK
LX07Ci0KLWVudW0gY2xhc3MgR1BVRmlsdGVyTW9kZSB7Ci0gICAgTmVhcmVzdCwKLSAgICBMaW5l
YXIsCi19OwotCi1zdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3IgewotICAgIEdQVUFkZHJlc3NN
b2RlIGFkZHJlc3NNb2RlVSB7IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9OwotICAgIEdQ
VUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlViB7IEdQVUFkZHJlc3NNb2RlOjpDbGFtcFRvRWRnZSB9
OwotICAgIEdQVUFkZHJlc3NNb2RlIGFkZHJlc3NNb2RlVyB7IEdQVUFkZHJlc3NNb2RlOjpDbGFt
cFRvRWRnZSB9OwotICAgIEdQVUZpbHRlck1vZGUgbWFnRmlsdGVyIHsgR1BVRmlsdGVyTW9kZTo6
TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWluRmlsdGVyIHsgR1BVRmlsdGVyTW9kZTo6
TmVhcmVzdCB9OwotICAgIEdQVUZpbHRlck1vZGUgbWlwbWFwRmlsdGVyIHsgR1BVRmlsdGVyTW9k
ZTo6TmVhcmVzdCB9OwotICAgIGZsb2F0IGxvZE1pbkNsYW1wIHsgMCB9OwotICAgIGZsb2F0IGxv
ZE1heENsYW1wIHsgMHhmZmZmZmZmZiB9OwotICAgIHVuc2lnbmVkIG1heEFuaXNvdHJvcHkgeyAx
IH07Ci0gICAgR1BVQ29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbiB7IEdQVUNvbXBhcmVG
dW5jdGlvbjo6TmV2ZXIgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU1YTU2ZDExODY5YTJmOTMwOTk3MzE0ZmEwZDY2NDFlYTIwMGMxOGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkK
LQotI2luY2x1ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJXSExTTFByZXBhcmUu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3ImKTsKLQotI2lmIEVOQUJMRShXSExTTF9DT01QSUxFUikKLSAg
ICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3dobHNsTW9kdWxlID8gbnVsbHB0ciA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUuZ2V0
KCk7IH0KLSAgICBjb25zdCBXSExTTDo6U2hhZGVyTW9kdWxlKiB3aGxzbE1vZHVsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2hsc2xNb2R1bGUuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYpOwotI2lmIEVO
QUJMRShXSExTTF9DT01QSUxFUikKLSAgICBHUFVTaGFkZXJNb2R1bGUoVW5pcXVlUmVmPFdITFNM
OjpTaGFkZXJNb2R1bGU+JiYgd2hsc2xNb2R1bGUpOwotI2VuZGlmCi0KLSAgICBQbGF0Zm9ybVNo
YWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7Ci0jaWYgRU5BQkxFKFdI
TFNMX0NPTVBJTEVSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXSExTTDo6U2hhZGVyTW9kdWxlPiBt
X3dobHNsTW9kdWxlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZmUwYWQ1YTg3YjMyYzQ4YWUzNGJkNzZkMmYx
YzU5ODFiZTdkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTdG9yZU9wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYyNzgzMjQ4OTEzZTQ1MWRjMzZhNDdhYjVmMGUyM2NhMjRhZGMzMGYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN0b3JlT3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVTdG9yZU9wIHsKLSAgICBT
dG9yZQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVT
d2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNzc0N2UzZTdlMjZk
ZGJlMTI3MDcwMDA4MGRhZDIwMTRhYWZhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVUGxhdGZv
cm1UeXBlcy5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotLy8gUGxhdGZvcm1MYXllciBpbXBsZW1lbnRhdGlvbiBuZWVkZWQgb3RoZXJ3aXNlIGNv
bXBpbGluZyBkZXJpdmVkIHNvdXJjZXMgd2lsbCBmYWlsLgotI2lmIFVTRShOSUNPU0lBKQotI2lu
Y2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCi0jZWxpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVy
LmgiCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VURldmljZTsKLQotc3RydWN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KLWVudW0gY2xhc3Mg
R1BVVGV4dHVyZUZvcm1hdDsKLQotY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hh
aW4+IHRyeUNyZWF0ZShjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKLQotICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlHZXRDdXJyZW50VGV4dHVy
ZSgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIFJldGFpblB0cjxDQU1ldGFsRHJhd2FibGU+IHRh
a2VEcmF3YWJsZSgpOwotI2VuZGlmCi0KLSAgICAvLyBGb3IgR1BVQ2FudmFzQ29udGV4dC4KLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHByZXNl
bnQoKTsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICB2b2lk
IGRlc3Ryb3koKSB7IG1fY3VycmVudERyYXdhYmxlID0gbnVsbHB0cjsgfQotCi1wcml2YXRlOgot
ICAgIEdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYsIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Ci0KLSAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRy
IG1fcGxhdGZvcm1Td2FwTGF5ZXI7Ci0gICAgUGxhdGZvcm1EcmF3YWJsZVNtYXJ0UHRyIG1fY3Vy
cmVudERyYXdhYmxlOwotICAgIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3Vz
YWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2NTcwNDIwNDYzY2FhYmExNWZlN2Q3MzE2MmFhOGVhN2JkNDgxZjkzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZUZv
cm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtYXQ7Ci0gICAgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBzdGF0aWNf
Y2FzdDxHUFVUZXh0dXJlVXNhZ2VGbGFncz4oR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0
QXR0YWNobWVudCkgfTsKLX07Ci0KLXN0cnVjdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIDogR1BV
U3dhcENoYWluRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVN3YXBDaGFpbkRlc2NyaXB0b3IoUmVm
PEdQVURldmljZT4mJiBncHVEZXZpY2UsIGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNl
JiBiYXNlKQotICAgICAgICA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlKGJhc2UpCi0gICAg
ICAgICwgZGV2aWNlKFdURk1vdmUoZ3B1RGV2aWNlKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IFJlZjxHUFVEZXZpY2U+IGRldmljZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWVmY2Q1NmY0MTg1NTgzYmY5MGM2ZGE3YjQ0YWM3ZjZjMDRiODUwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIkdQVVBsYXRmb3JtVHlwZXMuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RGV2aWNlOwotY2xhc3MgR1BVRXJyb3JTY29wZXM7Ci0KLXN0cnVjdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvcjsKLQotY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmU+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYsIEdQVUVycm9yU2NvcGVz
Jik7Ci0gICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21h
cnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsKLQotICAgIFBsYXRm
b3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVRl
eHR1cmUuZ2V0KCk7IH0KLSAgICBib29sIGlzQ29weVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7IH0KLSAg
ICBib29sIGlzQ29weURlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5RGVzdGluYXRpb24pOyB9Ci0gICAgYm9vbCBp
c091dHB1dEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpOyB9Ci0gICAgYm9vbCBpc1JlYWRP
bmx5KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSk7
IH0KLSAgICBib29sIGlzU2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMo
R1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCk7IH0KLSAgICBib29sIGlzU3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6
U3RvcmFnZSk7IH0KLSAgICB1bnNpZ25lZCBwbGF0Zm9ybVVzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVVzYWdlOyB9Ci0KLSAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlRGVm
YXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgdm9pZCBkZXN0cm95KCkgeyBtX3BsYXRmb3JtVGV4dHVy
ZSA9IG51bGxwdHI7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBsYXRm
b3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7
Ci0KLSAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKLQotICAg
IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwotICAgIHVuc2lnbmVk
IG1fcGxhdGZvcm1Vc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMmE2ODVhMjE5ZjMyOWI2MDcwNGQzZTY1NjIzYjVhNmFiN2VkZTIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUV4dGVudDNELmgiCi0jaW5jbHVkZSAiR1BV
VGV4dHVyZUZvcm1hdC5oIgotI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZURpbWVuc2lvbiB7Ci0gICAgXzFk
LAotICAgIF8yZCwKLSAgICBfM2QKLX07Ci0gICAgCi1zdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0
b3IgewotICAgIEdQVUV4dGVudDNEIHNpemU7Ci0gICAgdW5zaWduZWQgbWlwTGV2ZWxDb3VudDsK
LSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudDsKLSAgICBHUFVUZXh0dXJlRGltZW5zaW9uIGRpbWVu
c2lvbjsKLSAgICBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKLSAgICBHUFVUZXh0dXJlVXNhZ2VG
bGFncyB1c2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVGb3JtYXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjZkMGZkYTE2NmI4MzAzODg4NWZiMTIyZGM0YjdlM2E4NmE0YTllMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXQgewotICAg
IFJnYmE4dW5vcm0sCi0gICAgUmdiYTh1aW50LAotICAgIEJncmE4dW5vcm0sCi0gICAgRGVwdGgz
MmZsb2F0U3RlbmNpbDgsCi0gICAgQmdyYTh1bm9ybVNSR0IsCi0gICAgUmdiYTE2ZmxvYXQsCi19
OwotCi11c2luZyBQbGF0Zm9ybVRleHR1cmVGb3JtYXQgPSB1bnNpZ25lZDsKLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjQzZTZmYmFlOWVlNDA5NTFlODU0OGExNmE4YmQ3MjlhZDg4YmFkNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotdXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKLSAgICAKLWNsYXNz
IEdQVVRleHR1cmVVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmVVc2FnZT4gewot
cHVibGljOgotICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBHUFVUZXh0dXJlVXNhZ2VGbGFncyB7Ci0g
ICAgICAgIENvcHlTb3VyY2UgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIENvcHlEZXN0aW5hdGlv
biAgPSAxIDw8IDEsCi0gICAgICAgIFNhbXBsZWQgICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAg
IFN0b3JhZ2UgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAgIE91dHB1dEF0dGFjaG1lbnQgPSAx
IDw8IDQsCi0gICAgICAgIE1heGltdW1WYWx1ZSAgICAgPSAxIDw8IDUsCi0gICAgfTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWQ5YTVjNzA3NGM0YWU2MzNlOGU2MDEyYzVjYzg3Njhi
ZmI0ZjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVUNvbXBhcmVGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkdQVVRleHR1cmVGb3JtYXQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9ybVRl
eHR1cmVGb3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVU
ZXh0dXJlRm9ybWF0KTsKLVBsYXRmb3JtQ29tcGFyZUZ1bmN0aW9uIHBsYXRmb3JtQ29tcGFyZUZ1
bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbik7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9u
RXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTdlNTQ1NDYxMzg2Y2Zm
Y2Q0MTA4NzdkYzM2MTRmNmRmMTgyODc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVWYWxpZGF0aW9uRXJyb3Iu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQ
VVZhbGlkYXRpb25FcnJvcj4gR1BVVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVZhbGlkYXRpb25FcnJv
cihtZXNzYWdlKSk7Ci19Ci0KLUdQVVZhbGlkYXRpb25FcnJvcjo6R1BVVmFsaWRhdGlvbkVycm9y
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQotewotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlkYXRp
b25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZhbGlk
YXRpb25FcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjI1YWMyMDdmY2Ez
YmVkYmU2MTE1NWE3NTk3YWRhNTU2NzM4NWUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVWYWxpZGF0aW9uRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3
dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVWYWxpZGF0
aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVWYWxpZGF0aW9uRXJyb3I+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdQVVZhbGlkYXRpb25FcnJvcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVZhbGlkYXRpb25FcnJvcihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgU3RyaW5nIG1fbWVzc2FnZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDNhYzYzNWU4ZTVkNjc5ODQyNmNlNWNmZGJmZWNkZWUzMTI5ODA1My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotZW51bSBjbGFzcyBHUFVWZXJ0ZXhGb3JtYXQgewotICAgIEZsb2F0LAotICAgIEZs
b2F0MiwKLSAgICBGbG9hdDMsCi0gICAgRmxvYXQ0LAotfTsKLQotc3RydWN0IEdQVVZlcnRleEF0
dHJpYnV0ZURlc2NyaXB0b3IgewotICAgIHVpbnQ2NF90IG9mZnNldDsKLSAgICBHUFVWZXJ0ZXhG
b3JtYXQgZm9ybWF0OwotICAgIHVuc2lnbmVkIHNoYWRlckxvY2F0aW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGJhM2Yy
MzU0ODQxZDhhZDRlZThmMTI3MjJmNDIwMDgyNDRmMTAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSAiR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUlucHV0
U3RlcE1vZGUgewotICAgIFZlcnRleCwKLSAgICBJbnN0YW5jZSwKLX07Ci0KLXN0cnVjdCBHUFVW
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yIHsKLSAgICB1aW50NjRfdCBzdHJpZGU7Ci0gICAgR1BVSW5w
dXRTdGVwTW9kZSBzdGVwTW9kZTsKLSAgICBWZWN0b3I8R1BVVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcj4gYXR0cmlidXRlU2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyMzJmZTU5OTE1ZWY1YTkxYThhYTVhYTU4ZTc0YzA2
NDM5ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlw
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVVmVydGV4QnVmZmVy
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1lbnVtIGNsYXNzIEdQVUluZGV4Rm9ybWF0IHsKLSAgICBVaW50MTYsCi0gICAgVWlu
dDMyLAotfTsKLQotc3RydWN0IEdQVVZlcnRleElucHV0RGVzY3JpcHRvciB7Ci0gICAgR1BVSW5k
ZXhGb3JtYXQgaW5kZXhGb3JtYXQ7Ci0gICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8R1BVVmVydGV4
QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJp
bmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NmUzNDhjMjEwZmUwMWNjZmUwMmI2MDU2YjkwZTg2YTgzNWU3ZDQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0K
LSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVCaW5kR3JvdXBBbGxv
Y2F0b3I+IEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6Y3JlYXRlKEdQVUVycm9yU2NvcGVzJiBlcnJv
cnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQmluZEdyb3VwQWxsb2NhdG9yKGVy
cm9ycykpOwotfQotCi1HUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJpbmRHcm91cEFsbG9jYXRv
cihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQotICAgIDogbV9lcnJvclNjb3BlcyhtYWtlUmVmKGVy
cm9ycykpCi17Ci19Ci0KLSNpZiBVU0UoTUVUQUwpCi0KLXN0ZDo6b3B0aW9uYWw8R1BVQmluZEdy
b3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHM+IEdQVUJpbmRHcm91cEFsbG9jYXRv
cjo6YWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRM
QXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKQot
ewotICAgIGlkPE1UTERldmljZT4gZGV2aWNlID0gbmlsOwotICAgIGF1dG8gY2hlY2tlZE9mZnNl
dCA9IENoZWNrZWQ8TlNVSW50ZWdlcj4obV9sYXN0T2Zmc2V0KTsKLQotICAgIGlmICh2ZXJ0ZXgp
IHsKLSAgICAgICAgZGV2aWNlID0gdmVydGV4LmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNl
dCArPSB2ZXJ0ZXguZW5jb2RlZExlbmd0aDsKLSAgICB9Ci0gICAgaWYgKGZyYWdtZW50KSB7Ci0g
ICAgICAgIGRldmljZSA9IGZyYWdtZW50LmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNldCAr
PSBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoOwotICAgIH0KLSAgICBpZiAoY29tcHV0ZSkgewotICAg
ICAgICBkZXZpY2UgPSBjb21wdXRlLmRldmljZTsKLSAgICAgICAgY2hlY2tlZE9mZnNldCArPSBj
b21wdXRlLmVuY29kZWRMZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gTm8gYXJndW1lbnRzOyBub3Ro
aW5nIHRvIGJlIGRvbmUuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICBpZiAoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgbV9lcnJv
clNjb3Blcy0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsK
LSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBhdXRvIG5ld09mZnNldCA9IGNoZWNr
ZWRPZmZzZXQudmFsdWUoKTsKLQotICAgIGlmIChtX2FyZ3VtZW50QnVmZmVyICYmIG5ld09mZnNl
dCA+IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKSB7Ci0gICAgICAgIGlmICghcmVhbGxv
Y2F0ZShuZXdPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9IGVsc2UgaWYg
KCFtX2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgIC8vIEJhc2VkIG9mZiBtaW1pbXVtIGFsbG9j
YXRpb24gZm9yIGEgc2hhcmVkLW1lbW9yeSBNVExCdWZmZXIgb24gbWFjT1MuCi0gICAgICAgIE5T
VUludGVnZXIgbWluaW11bVNpemUgPSA0MDk2OwotICAgICAgICBpZiAobWluaW11bVNpemUgPCBu
ZXdPZmZzZXQpCi0gICAgICAgICAgICBtaW5pbXVtU2l6ZSA9IG5ld09mZnNldDsKLQotICAgICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9hcmd1bWVudEJ1ZmZlciA9
IGFkb3B0TlMoW2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm1pbmltdW1TaXplIG9wdGlvbnM6
MF0pOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgaWYgKCFt
X2FyZ3VtZW50QnVmZmVyKSB7Ci0gICAgICAgICAgICBtX2Vycm9yU2NvcGVzLT5nZW5lcmF0ZUVy
cm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFyZ3VtZW50QnVmZmVyT2Zmc2V0cyBvZmZz
ZXRzOwotCi0gICAgLy8gTWF0aCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24gaXMgZ3VhcmRlZCBh
Z2FpbnN0IG92ZXJmbG93IGJ5IG5ld09mZnNldCBjYWxjdWxhdGlvbi4KLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICh2ZXJ0ZXgpIHsKLSAgICAgICAgb2Zmc2V0cy52
ZXJ0ZXggPSBtX2xhc3RPZmZzZXQ7Ci0gICAgICAgIFt2ZXJ0ZXggc2V0QXJndW1lbnRCdWZmZXI6
bV9hcmd1bWVudEJ1ZmZlci5nZXQoKSBvZmZzZXQ6Km9mZnNldHMudmVydGV4XTsKLSAgICB9Ci0g
ICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIG9mZnNldHMuZnJhZ21lbnQgPSAodmVydGV4ID8g
dmVydGV4LmVuY29kZWRMZW5ndGggOiAwKSArIG1fbGFzdE9mZnNldDsKLSAgICAgICAgW2ZyYWdt
ZW50IHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0OipvZmZz
ZXRzLmZyYWdtZW50XTsKLSAgICB9Ci0gICAgaWYgKGNvbXB1dGUpIHsKLSAgICAgICAgb2Zmc2V0
cy5jb21wdXRlID0gKHZlcnRleCA/IHZlcnRleC5lbmNvZGVkTGVuZ3RoIDogMCkgKyAoZnJhZ21l
bnQgPyBmcmFnbWVudC5lbmNvZGVkTGVuZ3RoIDogMCkgKyBtX2xhc3RPZmZzZXQ7Ci0gICAgICAg
IFtjb21wdXRlIHNldEFyZ3VtZW50QnVmZmVyOm1fYXJndW1lbnRCdWZmZXIuZ2V0KCkgb2Zmc2V0
OipvZmZzZXRzLmNvbXB1dGVdOwotICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIG1fbGFzdE9mZnNldCA9IG5ld09mZnNldDsKLSAgICArK21fbnVtQmluZEdyb3Vw
czsKLQotICAgIHJldHVybiBvZmZzZXRzOwotfQotCi0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi0v
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY1Nywg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY1OCBPcHRpbWl6ZSBy
ZWFsbG9jYXRpb24gYW5kIHJlc2V0IGJlaGF2aW9yLgotYm9vbCBHUFVCaW5kR3JvdXBBbGxvY2F0
b3I6OnJlYWxsb2NhdGUoTlNVSW50ZWdlciBuZXdPZmZzZXQpCi17Ci0gICAgTVRMQnVmZmVyICpu
ZXdCdWZmZXIgPSBuaWw7Ci0KLSAgICBhdXRvIG5ld0xlbmd0aCA9IENoZWNrZWQ8TlNVSW50ZWdl
cj4obV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5sZW5ndGgpOwotICAgIHdoaWxlIChuZXdMZW5ndGgg
PCBuZXdPZmZzZXQpIHsKLSAgICAgICAgbmV3TGVuZ3RoICs9IG5ld0xlbmd0aCAvIDRVOwotCi0g
ICAgICAgIGlmIChuZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAgICAgICBuZXdM
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPE5TVUludGVnZXI+OjptYXgoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICBuZXdCdWZmZXIgPSBbbV9hcmd1bWVudEJ1ZmZlci5nZXQoKS5kZXZpY2Ug
bmV3QnVmZmVyV2l0aExlbmd0aDpuZXdMZW5ndGgudmFsdWUoKSBvcHRpb25zOjBdOwotICAgIG1l
bWNweShuZXdCdWZmZXIuY29udGVudHMsIG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkuY29udGVudHMs
IG1fYXJndW1lbnRCdWZmZXIuZ2V0KCkubGVuZ3RoKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIGlmICghbmV3QnVmZmVyKSB7Ci0gICAgICAgIG1fZXJyb3JTY29wZXMt
PmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2FyZ3VtZW50QnVmZmVyID0gYWRvcHROUyhu
ZXdCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdQVUJpbmRHcm91cEFsbG9j
YXRvcjo6dHJ5UmVzZXQoKQotewotICAgIC0tbV9udW1CaW5kR3JvdXBzOwotICAgIAotICAgIEFT
U0VSVChtX251bUJpbmRHcm91cHMgPiAtMSk7Ci0KLSAgICBpZiAoIW1fbnVtQmluZEdyb3Vwcykg
ewotICAgICAgICBtX2FyZ3VtZW50QnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9sYXN0T2Zm
c2V0ID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWFjZjc4NmJiYmVlN2E5MWEwN2EzNDZl
N2YwMWU0ZTFjMDBkZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRH
cm91cExheW91dE1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cExheW91dC5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1UTERhdGFUeXBlIE1UTERhdGFUeXBlRm9y
QmluZGluZ1R5cGUoR1BVQmluZGluZ1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVyOgotICAgICAgICByZXR1cm4gTVRMRGF0
YVR5cGVTYW1wbGVyOwotICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlNhbXBsZWRUZXh0dXJlOgot
ICAgICAgICByZXR1cm4gTVRMRGF0YVR5cGVUZXh0dXJlOwotICAgIGNhc2UgR1BVQmluZGluZ1R5
cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1VuaWZv
cm1CdWZmZXI6Ci0gICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6U3RvcmFnZUJ1ZmZlcjoKLSAgICBj
YXNlIEdQVUJpbmRpbmdUeXBlOjpEeW5hbWljU3RvcmFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IE1UTERhdGFUeXBlUG9pbnRlcjsKLSAgICB9Ci19Ci0KLXVzaW5nIEFyZ3VtZW50QXJyYXkgPSBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnREZXNjcmlwdG9yICo+PjsKLXN0YXRp
YyB2b2lkIGFwcGVuZEFyZ3VtZW50VG9BcnJheShBcmd1bWVudEFycmF5JiBhcnJheSwgUmV0YWlu
UHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gYXJndW1lbnQpCi17Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgaWYgKCFhcnJheSkKLSAgICAgICAgYXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czphcmd1bWVudC5nZXQoKSwg
bmlsXSk7Ci0gICAgZWxzZQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmFyZ3VtZW50LmdldCgp
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
TVRMQXJndW1lbnRFbmNvZGVyPiB0cnlDcmVhdGVNdGxBcmd1bWVudEVuY29kZXIoY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UsIEFyZ3VtZW50QXJyYXkgYXJyYXkpCi17Ci0gICAgUmV0YWluUHRyPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gZW5jb2RlcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIGVuY29kZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdB
cmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOmFycmF5LmdldCgpXSk7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIGlmICghZW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExB
cmd1bWVudEVuY29kZXIhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBy
ZXR1cm4gZW5jb2RlcjsKLX07Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMQXJndW1lbnREZXNjcmlw
dG9yPiBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGUgZGF0YVR5cGUsIE5TVUludGVnZXIg
aW5kZXgpCi17Ci0gICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gbXRsQXJndW1l
bnQ7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsQXJndW1lbnQgPSBh
ZG9wdE5TKFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEzODQgVGhpcyBuZWVkcyB0byBzZXQgdGhlICJ0ZXh0dXJlVHlwZSIgZmll
bGQKLSAgICBbbXRsQXJndW1lbnQgc2V0RGF0YVR5cGU6ZGF0YVR5cGVdOwotICAgIFttdGxBcmd1
bWVudCBzZXRJbmRleDppbmRleF07Ci0gICAgcmV0dXJuIG10bEFyZ3VtZW50OwotfQotCi1SZWZQ
dHI8R1BVQmluZEdyb3VwTGF5b3V0PiBHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBJbnZhbGlk
IE1UTERldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgQXJn
dW1lbnRBcnJheSB2ZXJ0ZXhBcmdzLCBmcmFnbWVudEFyZ3MsIGNvbXB1dGVBcmdzLCB2ZXJ0ZXhM
ZW5ndGhzLCBmcmFnbWVudExlbmd0aHMsIGNvbXB1dGVMZW5ndGhzOwotICAgIEJpbmRpbmdzTWFw
VHlwZSBiaW5kaW5nc01hcDsKLQotICAgIHVuc2lnbmVkIGludGVybmFsTmFtZSA9IDA7Ci0gICAg
dW5zaWduZWQgaW50ZXJuYWxMZW5ndGhCYXNlID0gZGVzY3JpcHRvci5iaW5kaW5ncy5zaXplKCk7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBiaW5kaW5nIDogZGVzY3JpcHRvci5iaW5kaW5ncykgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OwotICAgICAgICBhdXRv
IGludGVybmFsRGV0YWlscyA9IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFs
QmluZGluZ0RldGFpbHMgewotICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6Ci0gICAgICAgICAg
ICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFzZSsrOwotICAgICAgICAgICAgICAg
IHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgeyAqZXh0cmFJbmRleCB9
OwotICAgICAgICAgICAgY2FzZSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1VuaWZvcm1CdWZmZXI6
Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmRleCA9IGludGVybmFsTGVuZ3RoQmFzZSsrOwotICAg
ICAgICAgICAgICAgIHJldHVybiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVm
ZmVyIHsgKmV4dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlNh
bXBsZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxl
ciB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTYW1wbGVkVGV4dHVyZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVy
ZSB7IH07Ci0gICAgICAgICAgICBjYXNlIEdQVUJpbmRpbmdUeXBlOjpTdG9yYWdlQnVmZmVyOgot
ICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyIHsgKmV4
dHJhSW5kZXggfTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGJpbmRpbmcudHlwZSA9PSBHUFVCaW5kaW5nVHlwZTo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpOwot
ICAgICAgICAgICAgICAgIGV4dHJhSW5kZXggPSBpbnRlcm5hbExlbmd0aEJhc2UrKzsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZl
ciB7ICpleHRyYUluZGV4IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pKCk7Ci0gICAgICAg
IEJpbmRpbmcgYmluZGluZ0RldGFpbHMgPSB7IGJpbmRpbmcsIGludGVybmFsTmFtZSsrLCBXVEZN
b3ZlKGludGVybmFsRGV0YWlscykgfTsKLSAgICAgICAgaWYgKCFiaW5kaW5nc01hcC5hZGQoYmlu
ZGluZy5iaW5kaW5nLCBiaW5kaW5nRGV0YWlscykpIHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVCaW5kR3JvdXBMYXlvdXQ6OnRyeUNyZWF0ZSgpOiBEdXBsaWNhdGUgYmluZGluZyAldSBm
b3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yISIsIGJpbmRpbmcuYmluZGluZyk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFJldGFp
blB0cjxNVExBcmd1bWVudERlc2NyaXB0b3I+IG10bEFyZ3VtZW50ID0gYXJndW1lbnREZXNjcmlw
dG9yKE1UTERhdGFUeXBlRm9yQmluZGluZ1R5cGUoYmluZGluZy50eXBlKSwgYmluZGluZ0RldGFp
bHMuaW50ZXJuYWxOYW1lKTsKLQotICAgICAgICBpZiAoIW10bEFyZ3VtZW50KSB7Ci0gICAgICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQmluZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKTogVW5hYmxl
IHRvIGNyZWF0ZSBNVExBcmd1bWVudERlc2NyaXB0b3IgZm9yIGJpbmRpbmcgJXUhIiwgYmluZGlu
Zy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYXV0byBhZGRJbmRpY2VzID0gWyZdKEFyZ3VtZW50QXJyYXkmIGFyZ3MsIEFyZ3VtZW50
QXJyYXkmIGxlbmd0aHMpIC0+IGJvb2wgewotICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRUb0Fy
cmF5KGFyZ3MsIG10bEFyZ3VtZW50KTsKLSAgICAgICAgICAgIGlmIChleHRyYUluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgUmV0YWluUHRyPE1UTEFyZ3VtZW50RGVzY3JpcHRvcj4gbXRsQXJndW1l
bnQgPSBhcmd1bWVudERlc2NyaXB0b3IoTVRMRGF0YVR5cGVVSW50MiwgKmV4dHJhSW5kZXgpOwot
ICAgICAgICAgICAgICAgIGlmICghbXRsQXJndW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCk6IFVuYWJsZSB0byBj
cmVhdGUgTVRMQXJndW1lbnREZXNjcmlwdG9yIGZvciBiaW5kaW5nICV1ISIsIGJpbmRpbmcuYmlu
ZGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kQXJndW1lbnRUb0FycmF5KGxlbmd0aHMsIG10bEFy
Z3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpG
bGFnczo6VmVydGV4KSAmJiAhYWRkSW5kaWNlcyh2ZXJ0ZXhBcmdzLCB2ZXJ0ZXhMZW5ndGhzKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJp
bGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6RnJhZ21lbnQpICYmICFhZGRJbmRpY2VzKGZy
YWdtZW50QXJncywgZnJhZ21lbnRMZW5ndGhzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBpZiAoKGJpbmRpbmcudmlzaWJpbGl0eSAmIEdQVVNoYWRlclN0YWdlOjpGbGFn
czo6Q29tcHV0ZSkgJiYgIWFkZEluZGljZXMoY29tcHV0ZUFyZ3MsIGNvbXB1dGVMZW5ndGhzKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFt2ZXJ0ZXhBcmdzIGFkZE9iamVjdHNGcm9tQXJyYXk6dmVydGV4
TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2ZyYWdtZW50QXJncyBhZGRPYmplY3RzRnJvbUFycmF5OmZy
YWdtZW50TGVuZ3Rocy5nZXQoKV07Ci0gICAgW2NvbXB1dGVBcmdzIGFkZE9iamVjdHNGcm9tQXJy
YXk6Y29tcHV0ZUxlbmd0aHMuZ2V0KCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIFJldGFpblB0cjxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleCwgZnJhZ21lbnQsIGNv
bXB1dGU7Ci0KLSAgICBpZiAodmVydGV4QXJncyAmJiAhKHZlcnRleCA9IHRyeUNyZWF0ZU10bEFy
Z3VtZW50RW5jb2RlcihkZXZpY2UsIHZlcnRleEFyZ3MpKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgaWYgKGZyYWdtZW50QXJncyAmJiAhKGZyYWdtZW50ID0gdHJ5Q3JlYXRlTXRsQXJn
dW1lbnRFbmNvZGVyKGRldmljZSwgZnJhZ21lbnRBcmdzKSkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmIChjb21wdXRlQXJncyAmJiAhKGNvbXB1dGUgPSB0cnlDcmVhdGVNdGxBcmd1
bWVudEVuY29kZXIoZGV2aWNlLCBjb21wdXRlQXJncykpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmluZEdyb3VwTGF5b3V0KFdURk1vdmUo
YmluZGluZ3NNYXApLCBXVEZNb3ZlKHZlcnRleCksIFdURk1vdmUoZnJhZ21lbnQpLCBXVEZNb3Zl
KGNvbXB1dGUpKSk7Ci19Ci0KLUdQVUJpbmRHcm91cExheW91dDo6R1BVQmluZEdyb3VwTGF5b3V0
KEJpbmRpbmdzTWFwVHlwZSYmIGJpbmRpbmdzTWFwLCBSZXRhaW5QdHI8TVRMQXJndW1lbnRFbmNv
ZGVyPiYmIHZlcnRleCwgUmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBmcmFnbWVudCwg
UmV0YWluUHRyPE1UTEFyZ3VtZW50RW5jb2Rlcj4mJiBjb21wdXRlKQotICAgIDogbV92ZXJ0ZXhF
bmNvZGVyKFdURk1vdmUodmVydGV4KSkKLSAgICAsIG1fZnJhZ21lbnRFbmNvZGVyKFdURk1vdmUo
ZnJhZ21lbnQpKQotICAgICwgbV9jb21wdXRlRW5jb2RlcihXVEZNb3ZlKGNvbXB1dGUpKQotICAg
ICwgbV9iaW5kaW5nc01hcChXVEZNb3ZlKGJpbmRpbmdzTWFwKSkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5k
R3JvdXBNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA2OThiMTlhZWNi
ZjJlOTQ5ODM4ZThjNjFkZGRkMjlmMDU5ZTFiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQmluZEdyb3Vw
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVCaW5kR3JvdXBBbGxvY2F0
b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cEJpbmRpbmcuaCIKLSNpbXBvcnQgIkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVUJpbmRHcm91cExheW91dC5oIgotI2ltcG9y
dCAiR1BVU2FtcGxlci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJp
bmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShm
dW5jdGlvbk5hbWUpOwotI2VuZGlmCi0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEdQ
VUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJl
c291cmNlIGlzIG5vdCBhIGJ1ZmZlciB0eXBlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIGF1dG8mIGJ1ZmZlckJpbmRpbmcgPSBXVEY6
OmdldDxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSk7Ci0gICAgaWYgKCFidWZmZXJCaW5kaW5n
LmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgTVRMQnVmZmVyIGluIEdQVUJ1ZmZlckJpbmRpbmchIiwgZnVuY3Rpb25OYW1lKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgaWYgKCFpc0luQm91bmRzPE5T
VUludGVnZXI+KGJ1ZmZlckJpbmRpbmcuc2l6ZSkgfHwgYnVmZmVyQmluZGluZy5zaXplID4gYnVm
ZmVyQmluZGluZy5idWZmZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEdQVUJ1ZmZlckJpbmRpbmcgc2l6ZSBpcyB0b28gbGFyZ2UhIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgLy8gTVRMQnVmZmVyIHNp
emUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgaWYgKCFp
c0luQm91bmRzPE5TVUludGVnZXI+KGJ1ZmZlckJpbmRpbmcub2Zmc2V0KSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IEJ1ZmZlciBvZmZzZXQgaXMgdG9vIGxhcmdlISIsIGZ1bmN0aW9uTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIHJldHVybiBHUFVC
dWZmZXJCaW5kaW5nIHsgYnVmZmVyQmluZGluZy5idWZmZXIuY29weVJlZigpLCBidWZmZXJCaW5k
aW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEJ1
ZmZlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50RW5jb2RlciwgY29uc3Qg
R1BVQnVmZmVyQmluZGluZyYgYnVmZmVyQmluZGluZywgdW5zaWduZWQgbmFtZSwgdW5zaWduZWQg
bGVuZ3RoTmFtZSkKLXsKLSAgICBBU1NFUlQoYXJndW1lbnRFbmNvZGVyICYmIGJ1ZmZlckJpbmRp
bmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIC8vIEJvdW5kcyBjaGVjayB3aGVuIGNvbnZlcnRpbmcgR1BVQnVmZmVyQmlu
ZGluZyBlbnN1cmVzIHRoYXQgTlNVSW50ZWdlciBjYXN0IG9mIHVpbnQ2NF90IG9mZnNldCBpcyBz
YWZlLgotICAgIFthcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZlckJpbmRpbmcuYnVmZmVy
LT5wbGF0Zm9ybUJ1ZmZlcigpIG9mZnNldDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihidWZmZXJC
aW5kaW5nLm9mZnNldCkgYXRJbmRleDpuYW1lXTsKLSAgICB2b2lkKiBsZW5ndGhQb2ludGVyID0g
W2FyZ3VtZW50RW5jb2RlciBjb25zdGFudERhdGFBdEluZGV4Omxlbmd0aE5hbWVdOwotICAgIG1l
bWNweShsZW5ndGhQb2ludGVyLCAmYnVmZmVyQmluZGluZy5zaXplLCBzaXplb2YodWludDY0X3Qp
KTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0gICAgCi1zdGF0aWMgTVRMU2Ft
cGxlclN0YXRlICp0cnlHZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihjb25zdCBHUFVCaW5kaW5nUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYg
TE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLSAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IEdQVVNhbXBsZXI+PihyZXNv
dXJjZSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBHUFVT
YW1wbGVyISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICBhdXRvIHNhbXBsZXJTdGF0ZSA9IFdURjo6Z2V0PFJlZjxjb25zdCBHUFVTYW1wbGVyPj4o
cmVzb3VyY2UpLT5wbGF0Zm9ybVNhbXBsZXIoKTsKLSAgICBpZiAoIXNhbXBsZXJTdGF0ZSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMU2FtcGxlclN0YXRlIGluIEdQVVNh
bXBsZXIgYmluZGluZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0gICAgcmV0dXJuIHNhbXBsZXJTdGF0ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0U2Ft
cGxlck9uRW5jb2RlcihNVExBcmd1bWVudEVuY29kZXIgKmFyZ3VtZW50RW5jb2RlciwgTVRMU2Ft
cGxlclN0YXRlICpzYW1wbGVyLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQoYXJndW1l
bnRFbmNvZGVyICYmIHNhbXBsZXIpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW2FyZ3VtZW50RW5jb2RlciBzZXRTYW1wbGVyU3RhdGU6c2FtcGxlciBhdEluZGV4Omlu
ZGV4XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXN0YXRpYyBSZWZQdHI8
R1BVVGV4dHVyZT4gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUoY29uc3QgR1BVQmluZGluZ1Jlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQotICAgIHsKLSNp
ZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgot
ICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8R1BVVGV4dHVyZT4+KHJlc291cmNl
KSkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFJlc291cmNlIGlzIG5vdCBhIEdQVVRleHR1
cmVWaWV3ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICBhdXRvJiB0ZXh0dXJlUmVmID0gV1RGOjpnZXQ8UmVmPEdQVVRleHR1cmU+PihyZXNvdXJj
ZSk7Ci0gICAgaWYgKCF0ZXh0dXJlUmVmLT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiJXM6IEludmFsaWQgTVRMVGV4dHVyZSBpbiBHUFVUZXh0dXJlVmlldyBiaW5k
aW5nISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAg
ICByZXR1cm4gdGV4dHVyZVJlZi5jb3B5UmVmKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFRleHR1
cmVPbkVuY29kZXIoTVRMQXJndW1lbnRFbmNvZGVyICphcmd1bWVudEVuY29kZXIsIE1UTFRleHR1
cmUgKnRleHR1cmUsIHVuc2lnbmVkIGluZGV4KQotewotICAgIEFTU0VSVChhcmd1bWVudEVuY29k
ZXIgJiYgdGV4dHVyZSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
YXJndW1lbnRFbmNvZGVyIHNldFRleHR1cmU6dGV4dHVyZSBhdEluZGV4OmluZGV4XTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLVJlZlB0cjxHUFVCaW5kR3JvdXA+IEdQVUJp
bmRHcm91cDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIEdQVUJpbmRHcm91cEFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVCaW5kR3JvdXA6OnRyeUNyZWF0ZSgpIjsKLSAgICAK
LSAgICBNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleEVuY29kZXIgPSBkZXNjcmlwdG9yLmxheW91
dC0+dmVydGV4RW5jb2RlcigpOwotICAgIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnRFbmNv
ZGVyID0gZGVzY3JpcHRvci5sYXlvdXQtPmZyYWdtZW50RW5jb2RlcigpOwotICAgIE1UTEFyZ3Vt
ZW50RW5jb2RlciAqY29tcHV0ZUVuY29kZXIgPSBkZXNjcmlwdG9yLmxheW91dC0+Y29tcHV0ZUVu
Y29kZXIoKTsKLQotICAgIGF1dG8gb2Zmc2V0cyA9IGFsbG9jYXRvci5hbGxvY2F0ZUFuZFNldEVu
Y29kZXJzKHZlcnRleEVuY29kZXIsIGZyYWdtZW50RW5jb2RlciwgY29tcHV0ZUVuY29kZXIpOwot
ICAgIGlmICghb2Zmc2V0cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgSGFz
aFNldDxSZWY8R1BVQnVmZmVyPj4gYm91bmRCdWZmZXJzOwotICAgIEhhc2hTZXQ8UmVmPEdQVVRl
eHR1cmU+PiBib3VuZFRleHR1cmVzOwotCi0gICAgLy8gU2V0IGVhY2ggcmVzb3VyY2Ugb24gZWFj
aCBNVExBcmd1bWVudEVuY29kZXIgaXQgc2hvdWxkIGJlIHZpc2libGUgb24uCi0gICAgY29uc3Qg
YXV0byYgbGF5b3V0QmluZGluZ3NNYXAgPSBkZXNjcmlwdG9yLmxheW91dC0+YmluZGluZ3NNYXAo
KTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNlQmluZGluZyA6IGRlc2NyaXB0b3IuYmlu
ZGluZ3MpIHsKLSAgICAgICAgYXV0byBpbmRleCA9IHJlc291cmNlQmluZGluZy5iaW5kaW5nOwot
ICAgICAgICBhdXRvIGxheW91dEl0ZXJhdG9yID0gbGF5b3V0QmluZGluZ3NNYXAuZmluZChpbmRl
eCk7Ci0gICAgICAgIGlmIChsYXlvdXRJdGVyYXRvciA9PSBsYXlvdXRCaW5kaW5nc01hcC5lbmQo
KSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCaW5kR3JvdXBCaW5kaW5nICV1
IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lLCBpbmRleCk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGxh
eW91dEJpbmRpbmcgPSBsYXlvdXRJdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGlmIChsYXlvdXRC
aW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ID09IEdQVVNoYWRlclN0YWdlOjpGbGFn
czo6Tm9uZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGJvb2wgaXNGb3JWZXJ0
ZXggPSBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGluZy52aXNpYmlsaXR5ICYgR1BVU2hhZGVy
U3RhZ2U6OkZsYWdzOjpWZXJ0ZXg7Ci0gICAgICAgIGJvb2wgaXNGb3JGcmFnbWVudCA9IGxheW91
dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6Rmxh
Z3M6OkZyYWdtZW50OwotICAgICAgICBib29sIGlzRm9yQ29tcHV0ZSA9IGxheW91dEJpbmRpbmcu
ZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZTo6RmxhZ3M6OkNvbXB1
dGU7Ci0KLSAgICAgICAgaWYgKGlzRm9yVmVydGV4ICYmICF2ZXJ0ZXhFbmNvZGVyKSB7Ci0gICAg
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBhcmd1bWVudCBlbmNvZGVyIGZvdW5k
IGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQgJiYgIWZy
YWdtZW50RW5jb2RlcikgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyBmcmFnbWVu
dCBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwg
aW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzRm9yQ29tcHV0ZSAmJiAhY29tcHV0ZUVuY29kZXIpIHsKLSAgICAgICAgICAgIExPRyhX
ZWJHUFUsICIlczogTm8gY29tcHV0ZSBhcmd1bWVudCBlbmNvZGVyIGZvdW5kIGZvciBiaW5kaW5n
ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGhhbmRsZUJ1ZmZlciA9IFsmXSh1bnNpZ25lZCBp
bnRlcm5hbExlbmd0aE5hbWUpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0byBidWZmZXJSZXNv
dXJjZSA9IHRyeUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKHJlc291cmNlQmluZGluZy5yZXNv
dXJjZSwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGlmICghYnVmZmVyUmVzb3VyY2UpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzRm9yVmVydGV4
KQotICAgICAgICAgICAgICAgIHNldEJ1ZmZlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVyLCAqYnVm
ZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lLCBpbnRlcm5hbExlbmd0aE5h
bWUpOwotICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgc2V0
QnVmZmVyT25FbmNvZGVyKGZyYWdtZW50RW5jb2RlciwgKmJ1ZmZlclJlc291cmNlLCBsYXlvdXRC
aW5kaW5nLmludGVybmFsTmFtZSwgaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgICAgIGlm
IChpc0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0QnVmZmVyT25FbmNvZGVyKGNvbXB1
dGVFbmNvZGVyLCAqYnVmZmVyUmVzb3VyY2UsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lLCBp
bnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICAgICAgYm91bmRCdWZmZXJzLmFkZFZvaWQoV1RG
TW92ZShidWZmZXJSZXNvdXJjZS0+YnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBXVEY6OnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEdQVUJpbmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciYgdW5pZm9ybUJ1
ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlQnVmZmVyKHVuaWZvcm1C
dWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXImIGR5bmFtaWNVbmlmb3JtQnVmZmVyKSAtPiBib29s
IHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIoZHluYW1pY1VuaWZvcm1CdWZmZXIu
aW50ZXJuYWxMZW5ndGhOYW1lKTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U2FtcGxlciYpIC0+IGJvb2wgewotICAgICAgICAgICAgYXV0byBzYW1wbGVyU3RhdGUgPSB0cnlH
ZXRSZXNvdXJjZUFzTXRsU2FtcGxlcihyZXNvdXJjZUJpbmRpbmcucmVzb3VyY2UsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaXNGb3JWZXJ0ZXgpCi0gICAgICAgICAgICAg
ICAgc2V0U2FtcGxlck9uRW5jb2Rlcih2ZXJ0ZXhFbmNvZGVyLCBzYW1wbGVyU3RhdGUsIGxheW91
dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0ZvckZyYWdtZW50KQot
ICAgICAgICAgICAgICAgIHNldFNhbXBsZXJPbkVuY29kZXIoZnJhZ21lbnRFbmNvZGVyLCBzYW1w
bGVyU3RhdGUsIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChp
c0ZvckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0U2FtcGxlck9uRW5jb2Rlcihjb21wdXRl
RW5jb2Rlciwgc2FtcGxlclN0YXRlLCBsYXlvdXRCaW5kaW5nLmludGVybmFsTmFtZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U2FtcGxlZFRleHR1cmUmKSAtPiBib29sIHsKLSAgICAgICAgICAgIGF1dG8gdGV4dHVyZVJlc291
cmNlID0gdHJ5R2V0UmVzb3VyY2VBc1RleHR1cmUocmVzb3VyY2VCaW5kaW5nLnJlc291cmNlLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKCF0ZXh0dXJlUmVzb3VyY2UpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzRm9yVmVydGV4KQotICAg
ICAgICAgICAgICAgIHNldFRleHR1cmVPbkVuY29kZXIodmVydGV4RW5jb2RlciwgdGV4dHVyZVJl
c291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbE5hbWUpOwot
ICAgICAgICAgICAgaWYgKGlzRm9yRnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVy
ZU9uRW5jb2RlcihmcmFnbWVudEVuY29kZXIsIHRleHR1cmVSZXNvdXJjZS0+cGxhdGZvcm1UZXh0
dXJlKCksIGxheW91dEJpbmRpbmcuaW50ZXJuYWxOYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0Zv
ckNvbXB1dGUpCi0gICAgICAgICAgICAgICAgc2V0VGV4dHVyZU9uRW5jb2Rlcihjb21wdXRlRW5j
b2RlciwgdGV4dHVyZVJlc291cmNlLT5wbGF0Zm9ybVRleHR1cmUoKSwgbGF5b3V0QmluZGluZy5p
bnRlcm5hbE5hbWUpOwotICAgICAgICAgICAgYm91bmRUZXh0dXJlcy5hZGRWb2lkKHRleHR1cmVS
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyJiBzdG9yYWdlQnVm
ZmVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVCdWZmZXIoc3RvcmFnZUJ1
ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5
b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZlciYgZHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IGJvb2wg
ewotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUJ1ZmZlcihkeW5hbWljU3RvcmFnZUJ1ZmZlci5p
bnRlcm5hbExlbmd0aE5hbWUpOwotICAgICAgICB9KSwgbGF5b3V0QmluZGluZy5pbnRlcm5hbEJp
bmRpbmdEZXRhaWxzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQmluZEdy
b3VwKFdURk1vdmUoKm9mZnNldHMpLCBhbGxvY2F0b3IsIFdURk1vdmUoYm91bmRCdWZmZXJzKSwg
V1RGTW92ZShib3VuZFRleHR1cmVzKSkpOwotfQotICAgIAotR1BVQmluZEdyb3VwOjpHUFVCaW5k
R3JvdXAoR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1ZmZlck9mZnNldHMmJiBvZmZz
ZXRzLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgSGFzaFNldDxSZWY8R1BVQnVm
ZmVyPj4mJiBidWZmZXJzLCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJlPj4mJiB0ZXh0dXJlcykKLSAg
ICA6IG1fYXJndW1lbnRCdWZmZXJPZmZzZXRzKFdURk1vdmUob2Zmc2V0cykpCi0gICAgLCBtX2Fs
bG9jYXRvcihtYWtlUmVmKGFsbG9jYXRvcikpCi0gICAgLCBtX2JvdW5kQnVmZmVycyhXVEZNb3Zl
KGJ1ZmZlcnMpKQotICAgICwgbV9ib3VuZFRleHR1cmVzKFdURk1vdmUodGV4dHVyZXMpKQotewot
fQotCi1HUFVCaW5kR3JvdXA6On5HUFVCaW5kR3JvdXAoKQotewotICAgIG1fYWxsb2NhdG9yLT50
cnlSZXNldCgpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRkMDVkYThiMTMwM2JlOTNiZjBkNDkyNzhiMGRjZjljNmEyODQ5MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR1BVQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJH
UFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQ
VUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgY29uc3RleHByIGF1dG8gcmVhZE9ubHlGbGFncyA9IE9wdGlvblNldDxHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M+IHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpJbmRleCwgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpWZXJ0ZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSwg
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlIH07Ci0KLQotYm9vbCBHUFVCdWZmZXI6
OnZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIE9wdGlvblNldDxH
UFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMp
Ci17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBlcnJvclNj
b3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHVzYWdlLmNvbnRhaW5zQWxsKHsgR1BV
QnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBS
ZWFkIH0pKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiQnVm
ZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1SZWZQ
dHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShHUFVEZXZpY2UmIGRldmljZSwgY29u
c3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
IGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgLy8gTVRMQnVm
ZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAg
TlNVSW50ZWdlciBzaXplID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShkZXNjcmlw
dG9yLnNpemUsIHNpemUpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIs
IEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIGF1dG8gdXNhZ2UgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdz
Pjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBpZiAoIXZhbGlkYXRlQnVmZmVyVXNh
Z2UoZGV2aWNlLCB1c2FnZSwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIC8vIGNvcHlCdWZmZXJUb0J1ZmZlciBjYWxscyByZXF1aXJlIDQtYnl0ZSBhbGlnbm1l
bnQuICJVbm1hcHBpbmciIGEgbWFwcGVkLW9uLWNyZWF0aW9uIEdQVUJ1ZmZlcgotICAgIC8vIHRo
YXQgaXMgb3RoZXJ3aXNlIHVubWFwcGFibGUgcmVxdWlyZXMgc3VjaCBhIGNvcHkgdG8gdXBsb2Fk
IGRhdGEuCi0gICAgaWYgKGlzTWFwcGVkID09IEdQVUJ1ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBw
ZWQKLSAgICAgICAgJiYgIXVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdz
OjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pCi0gICAgICAgICYm
IGRlc2NyaXB0b3Iuc2l6ZSAlIDQpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKCJEYXRhIG11c3QgYmUgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMh
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBNZXRh
bCBiZXN0IHByYWN0aWNlczogUmVhZC1vbmx5IG9uZS10aW1lLXVzZSBkYXRhIGxlc3MgdGhhbiA0
IEtCIHNob3VsZCBub3QgYWxsb2NhdGUgYSBNVExCdWZmZXIgYW5kIGJlIHVzZWQgaW4gW01UTENv
bW1hbmRFbmNvZGVyIHNldCpCeXRlc10gY2FsbHMgaW5zdGVhZC4KLQotICAgIE1UTFJlc291cmNl
T3B0aW9ucyByZXNvdXJjZU9wdGlvbnMgPSBNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRD
YWNoZTsKLQotICAgIC8vIE1hcHBhYmxlIGJ1ZmZlcnMgdXNlIHNoYXJlZCBzdG9yYWdlIGFsbG9j
YXRpb24uCi0gICAgcmVzb3VyY2VPcHRpb25zIHw9IHVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFk
IH0pID8gTVRMUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA6IE1UTFJlc291cmNlU3RvcmFnZU1v
ZGVQcml2YXRlOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbXRsQnVmZmVyOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxCdWZmZXIgPSBhZG9wdE5TKFtk
ZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoTGVuZ3RoOnN0YXRpY19jYXN0PE5T
VUludGVnZXI+KGRlc2NyaXB0b3Iuc2l6ZSkgb3B0aW9uczpyZXNvdXJjZU9wdGlvbnNdKTsKLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghbXRsQnVmZmVyKSB7Ci0g
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRP
Zk1lbW9yeSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10bEJ1ZmZlciksIGRldmljZSwgc2l6ZSwg
dXNhZ2UsIGlzTWFwcGVkKSk7Ci19Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKFJldGFpblB0cjxN
VExCdWZmZXI+JiYgYnVmZmVyLCBHUFVEZXZpY2UmIGRldmljZSwgc2l6ZV90IHNpemUsIE9wdGlv
blNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVzYWdlLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24g
aXNNYXBwZWQpCi0gICAgOiBtX3BsYXRmb3JtQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAs
IG1fZGV2aWNlKG1ha2VSZWYoZGV2aWNlKSkKLSAgICAsIG1fYnl0ZUxlbmd0aChzaXplKQotICAg
ICwgbV91c2FnZSh1c2FnZSkKLSAgICAsIG1faXNNYXBwZWRGcm9tQ3JlYXRpb24oaXNNYXBwZWQg
PT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBlZCkKLXsKLSAgICBtX3BsYXRmb3JtVXNh
Z2UgPSBNVExSZXNvdXJjZVVzYWdlUmVhZDsKLSAgICBpZiAoaXNTdG9yYWdlKCkpCi0gICAgICAg
IG1fcGxhdGZvcm1Vc2FnZSB8PSBNVExSZXNvdXJjZVVzYWdlV3JpdGU7Ci19Ci0KLUdQVUJ1ZmZl
cjo6fkdQVUJ1ZmZlcigpCi17Ci0gICAgZGVzdHJveShudWxscHRyKTsKLX0KLQotYm9vbCBHUFVC
dWZmZXI6OmlzUmVhZE9ubHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzYWdlLmNvbnRhaW5z
QW55KHJlYWRPbmx5RmxhZ3MpOwotfQotCi1HUFVCdWZmZXI6OlN0YXRlIEdQVUJ1ZmZlcjo6c3Rh
dGUoKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybUJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IFN0YXRlOjpEZXN0cm95ZWQ7Ci0gICAgaWYgKG1faXNNYXBwZWRGcm9tQ3JlYXRpb24gfHwgbV9t
YXBwaW5nQ2FsbGJhY2spCi0gICAgICAgIHJldHVybiBTdGF0ZTo6TWFwcGVkOwotCi0gICAgcmV0
dXJuIFN0YXRlOjpVbm1hcHBlZDsKLX0KLQotSlNDOjpBcnJheUJ1ZmZlciogR1BVQnVmZmVyOjpt
YXBPbkNyZWF0aW9uKCkKLXsKLSAgICBBU1NFUlQobV9pc01hcHBlZEZyb21DcmVhdGlvbik7Ci0g
ICAgcmV0dXJuIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpOwotfQotCi0jaWYgVVNFKE1FVEFMKQot
dm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21taXR0ZWQoTVRMQ29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICsrbV9u
dW1TY2hlZHVsZWRDb21tYW5kQnVmZmVyczsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIC8vIE1ha2Ugc3VyZSB8dGhpc3wgb25seSBnZXRzIHJlZidkIC8gZGVyZWYnZCBv
biB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaXMgbm90IFRocmVhZFNhZmVSZWZDb3VudGVkLgot
ICAgIFtjb21tYW5kQnVmZmVyIGFkZENvbXBsZXRlZEhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGlkPE1UTENvbW1hbmRCdWZmZXI+KSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGNvbW1hbmRCdWZmZXJDb21w
bGV0ZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuZ2V0KCldOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21wbGV0ZWQo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbnVtU2NoZWR1
bGVkQ29tbWFuZEJ1ZmZlcnMpOwotCi0gICAgaWYgKG1fbnVtU2NoZWR1bGVkQ29tbWFuZEJ1ZmZl
cnMgPT0gMSAmJiBzdGF0ZSgpID09IFN0YXRlOjpNYXBwZWQpCi0gICAgICAgIHJ1bk1hcHBpbmdD
YWxsYmFjaygpOwotCi0gICAgLS1tX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzOwotfQotI2Vu
ZGlmIC8vIFVTRShNRVRBTCkKLQotdm9pZCBHUFVCdWZmZXI6OnJlZ2lzdGVyTWFwcGluZ0NhbGxi
YWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29sIGlzUmVhZCwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIFJlamVjdCBpZiByZXF1ZXN0IGlzIGludmFsaWQu
Ci0gICAgaWYgKGlzUmVhZCAmJiAhaXNNYXBSZWFkYWJsZSgpKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAg
IGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXNS
ZWFkICYmICFpc01hcFdyaXRlYWJsZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRl
UHJlZml4ZWRFcnJvcigiSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIGNhbGxiYWNrKG51
bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX21hcHBpbmdD
YWxsYmFjayAmJiAhbV9tYXBwaW5nQ2FsbGJhY2tUYXNrLmlzUGVuZGluZygpKTsKLQotICAgIC8v
IEFuIGV4aXN0aW5nIGNhbGxiYWNrIG1lYW5zIHRoaXMgYnVmZmVyIGlzIGluIHRoZSBtYXBwZWQg
c3RhdGUuCi0gICAgbV9tYXBwaW5nQ2FsbGJhY2sgPSBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgLy8gSWYgR1BVIGlzIG5vdCB1c2luZyB0
aGlzIGJ1ZmZlciwgcnVuIHRoZSBjYWxsYmFjayBBU0FQLgotICAgIGlmICghbV9udW1TY2hlZHVs
ZWRDb21tYW5kQnVmZmVycykgewotICAgICAgICBtX21hcHBpbmdDYWxsYmFja1Rhc2suc2NoZWR1
bGVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUg
ewotICAgICAgICAgICAgcnVuTWFwcGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0K
LX0KLQotdm9pZCBHUFVCdWZmZXI6OnJ1bk1hcHBpbmdDYWxsYmFjaygpCi17Ci0gICAgaWYgKG1f
bWFwcGluZ0NhbGxiYWNrKQotICAgICAgICBtX21hcHBpbmdDYWxsYmFjay0+Y2FsbGJhY2soaXNN
YXBSZWFkKCkgPyBzdGFnaW5nQnVmZmVyRm9yUmVhZCgpIDogc3RhZ2luZ0J1ZmZlckZvcldyaXRl
KCkpOwotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6OnN0YWdpbmdCdWZmZXJGb3JS
ZWFkKCkKLXsKLSAgICBpZiAoIW1fc3RhZ2luZ0J1ZmZlcikKLSAgICAgICAgbV9zdGFnaW5nQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRz
LCBtX2J5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KG1fc3RhZ2luZ0J1ZmZl
ci0+ZGF0YSgpLCBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX2J5dGVMZW5ndGgp
OwotCi0gICAgcmV0dXJuIG1fc3RhZ2luZ0J1ZmZlci5nZXQoKTsKLX0KLQotSlNDOjpBcnJheUJ1
ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKQotewotICAgIG1fc3RhZ2lu
Z0J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoMSwgbV9ieXRlTGVuZ3RoKTsKLSAgICByZXR1
cm4gbV9zdGFnaW5nQnVmZmVyLmdldCgpOwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6Y29weVN0YWdp
bmdCdWZmZXJUb0dQVShHUFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci0gICAgTVRMQ29t
bWFuZFF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIW1fZGV2aWNlLT50cnlHZXRRdWV1ZSgpIHx8ICEo
cXVldWUgPSBtX2RldmljZS0+dHJ5R2V0UXVldWUoKS0+cGxhdGZvcm1RdWV1ZSgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gc3RhZ2luZ010bEJ1ZmZlcjsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIC8vIEdQVUJ1ZmZlciBjcmVh
dGlvbiB2YWxpZGF0aW9uIGVuc3VyZXMgbV9ieXRlU2l6ZSBmaXRzIGluIE5TVUludGVnZXIuCi0g
ICAgc3RhZ2luZ010bEJ1ZmZlciA9IGFkb3B0TlMoW21fZGV2aWNlLT5wbGF0Zm9ybURldmljZSgp
IG5ld0J1ZmZlcldpdGhCeXRlczptX3N0YWdpbmdCdWZmZXItPmRhdGEoKSBsZW5ndGg6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVuZ3RoKSBvcHRpb25zOk1UTFJlc291cmNlQ1BVQ2Fj
aGVNb2RlRGVmYXVsdENhY2hlXSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0g
ICAgaWYgKCFzdGFnaW5nTXRsQnVmZmVyICYmIGVycm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9y
U2NvcGVzLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSByZXRhaW5QdHIoW3F1ZXVlIGNvbW1hbmRCdWZm
ZXJdKTsKLSAgICBhdXRvIGJsaXRFbmNvZGVyID0gcmV0YWluUHRyKFtjb21tYW5kQnVmZmVyIGJs
aXRDb21tYW5kRW5jb2Rlcl0pOwotCi0gICAgW2JsaXRFbmNvZGVyIGNvcHlGcm9tQnVmZmVyOnN0
YWdpbmdNdGxCdWZmZXIuZ2V0KCkgc291cmNlT2Zmc2V0OjAgdG9CdWZmZXI6bV9wbGF0Zm9ybUJ1
ZmZlci5nZXQoKSBkZXN0aW5hdGlvbk9mZnNldDowIHNpemU6c3RhdGljX2Nhc3Q8TlNVSW50ZWdl
cj4obV9ieXRlTGVuZ3RoKV07Ci0gICAgW2JsaXRFbmNvZGVyIGVuZEVuY29kaW5nXTsKLSAgICBb
Y29tbWFuZEJ1ZmZlciBjb21taXRdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi12b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoR1BVRXJyb3JTY29wZXMqIGVycm9yU2NvcGVzKQot
ewotICAgIGlmICghbV9pc01hcHBlZEZyb21DcmVhdGlvbiAmJiAhaXNNYXBwYWJsZSgpICYmIGVy
cm9yU2NvcGVzKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLT5nZW5lcmF0ZVByZWZpeGVkRXJyb3Io
IkludmFsaWQgb3BlcmF0aW9uOiBHUFVCdWZmZXIgaXMgbm90IG1hcHBhYmxlISIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhZ2luZ0J1ZmZlcikgewotICAgICAgICBp
ZiAoaXNNYXBwYWJsZSgpKSB7Ci0gICAgICAgICAgICAvLyBNQVBfV1JJVEUgYW5kIE1BUF9SRUFE
IGJ1ZmZlcnMgaGF2ZSBzaGFyZWQsIENQVS1hY2Nlc3NpYmxlIHN0b3JhZ2UuCi0gICAgICAgICAg
ICBBU1NFUlQobV9wbGF0Zm9ybUJ1ZmZlciAmJiBtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRl
bnRzKTsKLSAgICAgICAgICAgIG1lbWNweShtX3BsYXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRz
LCBtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9ieXRlTGVuZ3RoKTsKLSAgICAgICAgfSBlbHNl
IGlmIChtX2lzTWFwcGVkRnJvbUNyZWF0aW9uKQotICAgICAgICAgICAgY29weVN0YWdpbmdCdWZm
ZXJUb0dQVShlcnJvclNjb3Blcyk7Ci0KLSAgICAgICAgbV9pc01hcHBlZEZyb21DcmVhdGlvbiA9
IGZhbHNlOwotICAgICAgICBtX3N0YWdpbmdCdWZmZXIgPSBudWxscHRyOwotICAgIH0KLQotICAg
IGlmIChtX21hcHBpbmdDYWxsYmFjaykgewotICAgICAgICBtX21hcHBpbmdDYWxsYmFja1Rhc2su
Y2FuY2VsVGFzaygpOwotICAgICAgICBtX21hcHBpbmdDYWxsYmFjay0+Y2FsbGJhY2sobnVsbHB0
cik7Ci0gICAgICAgIG1fbWFwcGluZ0NhbGxiYWNrID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KLXZv
aWQgR1BVQnVmZmVyOjpkZXN0cm95KEdQVUVycm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLSAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TWFwcGVkKQotICAgICAgICB1bm1hcChlcnJvclNjb3Bl
cyk7Ci0KLSAgICBtX3BsYXRmb3JtQnVmZmVyID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFkY2M2
YjE2ZDAyMzRiM2VjNGQxYzMzMDdkYzhkYzVlYWUxYzE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwy
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
Q29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2
aWNlLmgiCi0jaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgotI2ltcG9ydCAiR1BVUXVldWUuaCIKLSNp
bXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BV
Q29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewotICAg
IGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBncHVDb21tYW5kUXVldWUgPSBkZXZp
Y2UudHJ5R2V0UXVldWUoKTsKLSAgICBpZiAoIWdwdUNvbW1hbmRRdWV1ZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG10bFF1ZXVlID0gZ3B1Q29tbWFuZFF1ZXVlLT5wbGF0
Zm9ybVF1ZXVlKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj4gYnVmZmVyOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBidWZmZXIgPSBbbXRsUXVl
dWUgY29tbWFuZEJ1ZmZlcl07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21t
YW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1HUFVDb21tYW5kQnVmZmVyOjpHUFVD
b21tYW5kQnVmZmVyKFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICA6
IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLX0KLQotR1BVQ29t
bWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKQotewotICAgIGVuZEJsaXRFbmNvZGluZygp
OwotfQotCi1NVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNvbW1hbmRCdWZmZXI6OmJsaXRFbmNv
ZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ibGl0RW5jb2RlciA/IG1fYmxpdEVuY29kZXIu
Z2V0KCkgOiAobV9ibGl0RW5jb2RlciA9IFttX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlciBibGl0Q29t
bWFuZEVuY29kZXJdKS5nZXQoKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjplbmRCbGl0
RW5jb2RpbmcoKQotewotICAgIGlmICghbV9ibGl0RW5jb2RlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2JsaXRFbmNvZGVyIGVuZEVu
Y29kaW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9ibGl0RW5jb2Rl
ciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZm
ZXI+JiYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgaWYg
KGlzRW5jb2RpbmdQYXNzKCkgfHwgIXNyYy0+aXNDb3B5U291cmNlKCkgfHwgIWRzdC0+aXNDb3B5
RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChzaXplICUgNCB8fCBzcmNP
ZmZzZXQgJSA0IHx8IGRzdE9mZnNldCAlIDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBDb3B5IG11c3QgYmUgYWxpZ25lZCB0
byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIFRoaXMgY2FsbCBlbnN1cmVzIHRoYXQgc2l6ZSwgb2Zmc2V0LCBhbmQgc2l6
ZSArIG9mZnNldCBjYW4gc2FmZWx5IGZpdCBpbiBOU1VJbnRlZ2VyIHJlZ2FyZGxlc3Mgb2YgcGxh
dGZvcm0uCi0gICAgYXV0byBzcmNMZW5ndGggPSBjaGVja2VkU3VtPE5TVUludGVnZXI+KHNpemUs
IHNyY09mZnNldCk7Ci0gICAgYXV0byBkc3RMZW5ndGggPSBjaGVja2VkU3VtPE5TVUludGVnZXI+
KHNpemUsIGRzdE9mZnNldCk7Ci0gICAgaWYgKHNyY0xlbmd0aC5oYXNPdmVyZmxvd2VkKCkgfHwg
ZHN0TGVuZ3RoLmhhc092ZXJmbG93ZWQoKQotICAgICAgICB8fCBzcmNMZW5ndGggPiBzcmMtPmJ5
dGVMZW5ndGgoKSB8fCBkc3RMZW5ndGggPiBkc3QtPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFs
aWQgb2Zmc2V0IG9yIGNvcHkgc2l6ZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gVGhlc2UgY2FzdHMgYXJlIHNh
ZmUgZHVlIHRvIGVhcmxpZXIgY2hlY2tlZFN1bSgpIGNoZWNrcy4KLSAgICBbYmxpdEVuY29kZXIo
KQotICAgICAgICBjb3B5RnJvbUJ1ZmZlcjpzcmMtPnBsYXRmb3JtQnVmZmVyKCkKLSAgICAgICAg
c291cmNlT2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNyY09mZnNldCkKLSAgICAgICAg
dG9CdWZmZXI6ZHN0LT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0
OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRzdE9mZnNldCkKLSAgICAgICAgc2l6ZTpzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihzaXplKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICB1c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShk
c3QpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKEdQ
VUJ1ZmZlckNvcHlWaWV3JiYgc3JjQnVmZmVyLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3RUZXh0
dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAoaXNFbmNvZGluZ1Bhc3Mo
KSB8fCAhc3JjQnVmZmVyLmJ1ZmZlci0+aXNDb3B5U291cmNlKCkgfHwgIWRzdFRleHR1cmUudGV4
dHVyZS0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29t
bWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRl
Z2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIE5TVUludGVnZXIgc291cmNl
T2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShzcmNCdWZmZXIub2Zmc2V0
LCBzb3VyY2VPZmZzZXQpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVy
Ojpjb3B5QnVmZmVyVG9UZXh0dXJlKCk6IFNvdXJjZSBvZmZzZXQgaXMgdG9vIGxhcmdlISIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBNZXRhbCB2YWxpZGF0
aW9uLgotCi0gICAgLy8gR1BVQnVmZmVyQ29weVZpZXc6Om9mZnNldDogVGhlIGxvY2F0aW9uIG11
c3QgYmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBp
eGVsIGZvcm1hdC4gVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAgLy8gR1BVQnVmZmVyQ29w
eVZpZXc6OnJvd1BpdGNoOiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBkZXN0
aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuIFRoZSB2YWx1ZSBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byAzMiw3NjcgbXVsdGlwbGllZCBieSB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZeKAmXMgcGl4ZWwgc2l6ZS4KLQotICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3Ojpp
bWFnZUhlaWdodDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZGVzdGluYXRp
b24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgotCi0gICAgLy8gR1BVRXh0ZW50M0Q6
IFdoZW4geW91IGNvcHkgdG8gYSAxRCB0ZXh0dXJlLCBoZWlnaHQgYW5kIGRlcHRoIG11c3QgYmUg
MS4gV2hlbiB5b3UgY29weSB0byBhIDJEIHRleHR1cmUsIGRlcHRoIG11c3QgYmUgMS4KLQotICAg
IC8vIEdQVVRleHR1cmVDb3B5Vmlldzo6dGV4dHVyZTogVGhlIHZhbHVlIG11c3Qgbm90IGJlIGEg
ZnJhbWVidWZmZXJPbmx5IHRleHR1cmUgYW5kIG11c3Qgbm90IGhhdmUgYSBQVlJUQyBwaXhlbCBm
b3JtYXQuCi0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIFtibGl0RW5j
b2RlcigpCi0gICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyY0J1ZmZlci5idWZmZXItPnBsYXRmb3Jt
QnVmZmVyKCkKLSAgICAgICAgc291cmNlT2Zmc2V0OnNvdXJjZU9mZnNldAotICAgICAgICBzb3Vy
Y2VCeXRlc1BlclJvdzpzcmNCdWZmZXIucm93UGl0Y2gKLSAgICAgICAgc291cmNlQnl0ZXNQZXJJ
bWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWlnaHQKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFr
ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJl
OmRzdFRleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgZGVzdGluYXRp
b25TbGljZTpkc3RUZXh0dXJlLmFycmF5TGF5ZXIKLSAgICAgICAgZGVzdGluYXRpb25MZXZlbDpk
c3RUZXh0dXJlLm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1h
a2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwgZHN0VGV4dHVyZS5vcmlnaW4ueSwgZHN0VGV4dHVyZS5v
cmlnaW4ueildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlQnVm
ZmVyKFdURk1vdmUoc3JjQnVmZmVyLmJ1ZmZlcikpOwotICAgIHVzZVRleHR1cmUoV1RGTW92ZShk
c3RUZXh0dXJlLnRleHR1cmUpKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4
dHVyZVRvQnVmZmVyKEdQVVRleHR1cmVDb3B5VmlldyYmIHNyY1RleHR1cmUsIEdQVUJ1ZmZlckNv
cHlWaWV3JiYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBpZiAo
aXNFbmNvZGluZ1Bhc3MoKSB8fCAhc3JjVGV4dHVyZS50ZXh0dXJlLT5pc0NvcHlTb3VyY2UoKSB8
fCAhZHN0QnVmZmVyLmJ1ZmZlci0+aXNDb3B5RGVzdGluYXRpb24oKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlk
IG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBNVExCdWZmZXIg
c2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jtcy4KLSAgICBOU1VJ
bnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKLSAgICBpZiAoIVdURjo6Y29udmVydFNhZmVs
eShkc3RCdWZmZXIub2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogRGVzdGluYXRp
b24gb2Zmc2V0IGlzIHRvbyBsYXJnZSEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21UZXh0dXJl
OnNyY1RleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKLSAgICAgICAgc291cmNlU2xp
Y2U6c3JjVGV4dHVyZS5hcnJheUxheWVyCi0gICAgICAgIHNvdXJjZUxldmVsOnNyY1RleHR1cmUu
bWlwTGV2ZWwKLSAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjVGV4dHVyZS5v
cmlnaW4ueCwgc3JjVGV4dHVyZS5vcmlnaW4ueSwgc3JjVGV4dHVyZS5vcmlnaW4ueikKLSAgICAg
ICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5k
ZXB0aCkKLSAgICAgICAgdG9CdWZmZXI6ZHN0QnVmZmVyLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIo
KQotICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbk9mZnNldAotICAgICAgICBk
ZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5yb3dQaXRjaAotICAgICAgICBkZXN0aW5h
dGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdlSGVpZ2h0XTsKLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHVzZVRleHR1cmUoV1RGTW92ZShzcmNUZXh0dXJlLnRl
eHR1cmUpKTsKLSAgICB1c2VCdWZmZXIoV1RGTW92ZShkc3RCdWZmZXIuYnVmZmVyKSk7Ci19Ci0K
LXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoR1BVVGV4dHVyZUNv
cHlWaWV3JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3QsIGNvbnN0IEdQVUV4dGVudDNE
JiBzaXplKQotewotICAgIGlmIChpc0VuY29kaW5nUGFzcygpIHx8ICFzcmMudGV4dHVyZS0+aXND
b3B5U291cmNlKCkgfHwgIWRzdC50ZXh0dXJlLT5pc0NvcHlEZXN0aW5hdGlvbigpKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgW2JsaXRFbmNvZGVyKCkKLSAgICAgICAgY29weUZyb21UZXh0dXJlOnNy
Yy50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQotICAgICAgICBzb3VyY2VTbGljZTpzcmMuYXJy
YXlMYXllcgotICAgICAgICBzb3VyY2VMZXZlbDpzcmMubWlwTGV2ZWwKLSAgICAgICAgc291cmNl
T3JpZ2luOk1UTE9yaWdpbk1ha2Uoc3JjLm9yaWdpbi54LCBzcmMub3JpZ2luLnksIHNyYy5vcmln
aW4ueikKLSAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhl
aWdodCwgc2l6ZS5kZXB0aCkKLSAgICAgICAgdG9UZXh0dXJlOmRzdC50ZXh0dXJlLT5wbGF0Zm9y
bVRleHR1cmUoKQotICAgICAgICBkZXN0aW5hdGlvblNsaWNlOmRzdC5hcnJheUxheWVyCi0gICAg
ICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0Lm1pcExldmVsCi0gICAgICAgIGRlc3RpbmF0aW9uT3Jp
Z2luOk1UTE9yaWdpbk1ha2UoZHN0Lm9yaWdpbi54LCBkc3Qub3JpZ2luLnksIGRzdC5vcmlnaW4u
eildOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgdXNlVGV4dHVyZShX
VEZNb3ZlKHNyYy50ZXh0dXJlKSk7Ci0gICAgdXNlVGV4dHVyZShXVEZNb3ZlKGRzdC50ZXh0dXJl
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzYwZTQ1M2U3ZmMyZjVlNGI5NjI2NWExZWM3M2Y5
ZWQ5YTJhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNz
RW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5o
IgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lLmgi
Ci0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRyeUNyZWF0
ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgaWYgKGJ1ZmZlci0+aXNF
bmNvZGluZ1Bhc3MoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVyOjp0cnlDcmVhdGUoKTogRXhpc3RpbmcgcGFzcyBlbmNvZGVyIG11c3QgYmUgZW5kZWQgZmly
c3QhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGJ1ZmZlci0+ZW5k
QmxpdEVuY29kaW5nKCk7Ci0KLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
PiBtdGxFbmNvZGVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRs
RW5jb2RlciA9IFtidWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbXB1dGVDb21tYW5k
RW5jb2Rlcl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxF
bmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRy
eUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVDb21tYW5kRW5jb2RlciEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHUFVDb21wdXRlUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKG10bEVuY29k
ZXIpKSk7Ci19Ci0KLUdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgUmV0YWluUHRyPE1UTENvbXB1dGVDb21t
YW5kRW5jb2Rlcj4mJiBlbmNvZGVyKQotICAgIDogR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIo
V1RGTW92ZShidWZmZXIpKQotICAgICwgbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlcihXVEZN
b3ZlKGVuY29kZXIpKQotewotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlw
ZWxpbmUoUmVmPGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSkKLXsKLSAgICBp
ZiAoIW1fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQocGlwZWxpbmUtPnBsYXRm
b3JtQ29tcHV0ZVBpcGVsaW5lKCkpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW21fcGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXIgc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGU6cGlwZWxpbmUtPnBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKCldOwotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLQotICAgIG1fcGlwZWxpbmUgPSBXVEZNb3ZlKHBpcGVsaW5lKTsKLX0K
LQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKHVuc2lnbmVkIHgsIHVuc2ln
bmVkIHksIHVuc2lnbmVkIHopCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNv
ZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGFz
c0VuY29kZXI6OmRpc3BhdGNoKCk6IE5vIHZhbGlkIEdQVUNvbXB1dGVQaXBlbGluZSBmb3VuZCEi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX3BpcGVsaW5lLT5wbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgYXV0byB0aHJlYWRzUGVyVGhyZWFkZ3JvdXAgPSBNVExTaXplTWFrZShtX3BpcGVs
aW5lLT5jb21wdXRlRGltZW5zaW9ucygpLndpZHRoLCBtX3BpcGVsaW5lLT5jb21wdXRlRGltZW5z
aW9ucygpLmhlaWdodCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5kZXB0aCk7Ci0K
LSAgICBhdXRvIHRocmVhZGdyb3Vwc1BlckdyaWQgPSBNVExTaXplTWFrZSh4LCB5LCB6KTsKLQot
ICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyIGRpc3BhdGNoVGhyZWFkZ3JvdXBzOnRo
cmVhZGdyb3Vwc1BlckdyaWQgdGhyZWFkc1BlclRocmVhZGdyb3VwOnRocmVhZHNQZXJUaHJlYWRn
cm91cF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLWNvbnN0IE1UTENv
bW1hbmRFbmNvZGVyICpHUFVDb21wdXRlUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyLmdldCgp
OwotfQotCi0jaWYgVVNFKE1FVEFMKQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6dXNl
UmVzb3VyY2UoY29uc3QgTVRMUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCB1c2FnZSkKLXsK
LSAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciB1
c2VSZXNvdXJjZTpyZXNvdXJjZSB1c2FnZTp1c2FnZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotfQotCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0Q29tcHV0ZUJ1ZmZl
cihjb25zdCBNVExCdWZmZXIgKmJ1ZmZlciwgTlNVSW50ZWdlciBvZmZzZXQsIHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtQ29tcHV0ZVBhc3NF
bmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWNh
Mzc4YTBlYWZkYjNmYTYzNjNlZGExZmEwYzBmZjFmMTkzOTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDIyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVDb21wdXRlUGlwZWxpbmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgot
I2ltcG9ydCAiR1BVRXJyb3JTY29wZXMuaCIKLSNpbXBvcnQgIkdQVVBpcGVsaW5lTGF5b3V0Lmgi
Ci0jaW1wb3J0ICJHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgotI2ltcG9ydCAiV0hM
U0xQcmVwYXJlLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+Ci0jaW1wb3J0IDx3dGYv
TW9ub3RvbmljVGltZS5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9u
cyhNVExMaWJyYXJ5ICpjb21wdXRlTWV0YWxMaWJyYXJ5LCBNVExDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBTdHJpbmcmIGNvbXB1dGVFbnRyeVBvaW50TmFt
ZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgaWYgKCFjb21wdXRlTWV0YWxMaWJyYXJ5KSB7Ci0gICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiTVRMTGlicmFyeSBmb3IgY29tcHV0ZSBz
dGFnZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFtjb21wdXRlTWV0YWxMaWJyYXJ5IG5ld0Z1bmN0
aW9uV2l0aE5hbWU6Y29tcHV0ZUVudHJ5UG9pbnROYW1lXSk7Ci0gICAgaWYgKCFmdW5jdGlvbikg
ewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygi
Q2Fubm90IGNyZWF0ZSBjb21wdXRlIE1UTEZ1bmN0aW9uICciLCBjb21wdXRlRW50cnlQb2ludE5h
bWUsICInISIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFttdGxEZXNj
cmlwdG9yIHNldENvbXB1dGVGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zPiB0cnlTZXRGdW5jdGlvbnMoY29uc3Qg
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiBjb21wdXRlU3RhZ2UsIGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9y
LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xE
ZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgUmV0YWluUHRy
PE1UTExpYnJhcnk+IGNvbXB1dGVMaWJyYXJ5OwotICAgIFN0cmluZyBjb21wdXRlRW50cnlQb2lu
dDsKLQotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucyB7IDEs
IDEsIDEgfTsKLQotICAgIGlmICh3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgQVNTRVJUKGNv
bXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCkpOwotCi0gICAgICAgIHdobHNsRGVzY3Jp
cHRvci0+ZW50cnlQb2ludE5hbWUgPSBjb21wdXRlU3RhZ2UuZW50cnlQb2ludDsKLQotICAgICAg
ICBhdXRvIHdobHNsQ29tcGlsZVJlc3VsdCA9IFdITFNMOjpwcmVwYXJlKCpjb21wdXRlU3RhZ2Uu
bW9kdWxlLT53aGxzbE1vZHVsZSgpLCAqd2hsc2xEZXNjcmlwdG9yKTsKLSAgICAgICAgaWYgKCF3
aGxzbENvbXBpbGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExTTCBjb21waWxlIGVycm9yOiAiLCB3aGxzbENvbXBp
bGVSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hsc2xDb21waWxlUmVzdWx0
LT5jb21wdXRlRGltZW5zaW9uczsKLQotICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLQot
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgTW9ub3RvbmljVGlt
ZSBzdGFydFRpbWU7Ci0gICAgICAgIGlmIChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQot
ICAgICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIC8v
IEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8yMDA0NzQgQWRkIGRpcmVjdCBTdHJpbmdCdWls
ZGVyIC0+IE5TU3RyaW5nIGNvbnZlcnNpb24gdG8gYXZvaWQgZXh0cmEgY29weSBpbnRvIGEgV1RG
OjpTdHJpbmcKLSAgICAgICAgY29tcHV0ZUxpYnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTp3aGxzbENvbXBpbGVSZXN1bHQtPm1ldGFs
U291cmNlLnRvU3RyaW5nKCkgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgICAgIGlm
IChXSExTTDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJN
ZXRhbCBjb21waWxlIHRpbWVzOiAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUp
Lm1pbGxpc2Vjb25kcygpLCAiIG1zIik7Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmICghY29tcHV0ZUxpYnJhcnkpCi0gICAgICAg
ICAgICBOU0xvZyhAIiVAIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgICAgIEFTU0VSVChjb21wdXRl
TGlicmFyeSk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxsIHZhcmlhYmxlcywgdGhlcmUgc2hv
dWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWVycm9y
KSBoZXJlLgotCi0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gd2hsc2xDb21waWxlUmVzdWx0
LT5tYW5nbGVkRW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBjb21wdXRlTGlicmFyeSA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9k
dWxlKCk7Ci0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gY29tcHV0ZVN0YWdlLmVudHJ5UG9p
bnQ7Ci0gICAgfQotCi0gICAgaWYgKHRyeVNldE1ldGFsRnVuY3Rpb25zKGNvbXB1dGVMaWJyYXJ5
LmdldCgpLCBtdGxEZXNjcmlwdG9yLCBjb21wdXRlRW50cnlQb2ludCwgZXJyb3JTY29wZXMpKQot
ICAgICAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci0KLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotfQotCi1zdHJ1Y3QgQ29udmVydFJlc3VsdCB7Ci0gICAgUmV0YWluUHRyPE1UTENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I+IHBpcGVsaW5lRGVzY3JpcHRvcjsKLSAgICBXSExTTDo6Q29t
cHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7Ci19OwotCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25z
dCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0
cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01U
TENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGVycm9yU2NvcGVz
LmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3JlYXRpbmcgTVRMQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICBjb25zdCBhdXRvJiBjb21wdXRlU3RhZ2UgPSBkZXNjcmlwdG9yLmNvbXB1dGVTdGFnZTsKLQot
ICAgIGJvb2wgaXNXaGxzbCA9IGNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB3aGxz
bERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hsc2wpCi0gICAgICAgIHdobHNsRGVzY3JpcHRvciA9
IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICBpZiAoZGVzY3JpcHRv
ci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9
IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3IubGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVz
Y3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRp
bmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSB0
cnlTZXRGdW5jdGlvbnMoY29tcHV0ZVN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCks
IHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQotICAgICAgICByZXR1cm4ge3sgbXRsRGVz
Y3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19OwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLX0KLQotc3RydWN0IENyZWF0ZVJlc3VsdCB7Ci0gICAgUmV0YWluUHRyPE1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlPiBwaXBlbGluZVN0YXRlOwotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9u
cyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPENyZWF0ZVJl
c3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURl
dmljZSgpKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgYXV0byBjb252ZXJ0UmVzdWx0ID0gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7Ci0gICAgaWYgKCFjb252ZXJ0UmVz
dWx0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIEFTU0VSVChjb252ZXJ0UmVz
dWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwotICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IGNvbnZl
cnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKLQotICAgIFJldGFpblB0cjxNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZT4gcGlwZWxpbmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIHBpcGVsaW5lID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIG9wdGlvbnM6TVRMUGlwZWxpbmVPcHRpb25Ob25lIHJl
ZmxlY3Rpb246bmlsIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICghcGlwZWxpbmUpIHsKLSAgICAg
ICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yID8gZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyA6ICJVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlISIpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiB7eyBwaXBlbGluZSwg
Y29udmVydFJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMgfX07Ci19Ci0KLVJlZlB0cjxHUFVDb21w
dXRlUGlwZWxpbmU+IEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQg
PSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IsIGVy
cm9yU2NvcGVzKTsKLSAgICBpZiAoIWNyZWF0ZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbXB1dGVQaXBlbGluZShXVEZNb3Zl
KGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSksIGNyZWF0ZVJlc3VsdC0+Y29tcHV0ZURpbWVu
c2lvbnMsIGRlc2NyaXB0b3IubGF5b3V0KSk7Ci19Ci0KLUdQVUNvbXB1dGVQaXBlbGluZTo6R1BV
Q29tcHV0ZVBpcGVsaW5lKFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4mJiBwaXBl
bGluZSwgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25zLCBjb25zdCBS
ZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiBsYXlvdXQpCi0gICAgOiBHUFVQaXBlbGluZSgpCi0g
ICAgLCBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotICAgICwg
bV9jb21wdXRlRGltZW5zaW9ucyhjb21wdXRlRGltZW5zaW9ucykKLSAgICAsIG1fbGF5b3V0KGxh
eW91dCkKLXsKLX0KLQotR1BVQ29tcHV0ZVBpcGVsaW5lOjp+R1BVQ29tcHV0ZVBpcGVsaW5lKCkg
PSBkZWZhdWx0OwotCi1ib29sIEdQVUNvbXB1dGVQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiBjb21wdXRl
U3RhZ2UpCi17Ci0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKG1h
a2VSZWZQdHIobV9sYXlvdXQuZ2V0KCkpLCBXVEZNb3ZlKGNvbXB1dGVTdGFnZSkpOwotICAgIGF1
dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtdIChHUFVFcnJvciYmKSB7
IH0pOwotICAgIGlmIChhdXRvIGNyZWF0ZVJlc3VsdCA9IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBl
bGluZVN0YXRlKGRldmljZSwgZGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKSB7Ci0gICAgICAgIG1f
cGxhdGZvcm1Db21wdXRlUGlwZWxpbmUgPSBXVEZNb3ZlKGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVT
dGF0ZSk7Ci0gICAgICAgIG1fY29tcHV0ZURpbWVuc2lvbnMgPSBjcmVhdGVSZXN1bHQtPmNvbXB1
dGVEaW1lbnNpb25zOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KaW5kZXggYTM4ZjY5NWE4NzMwMmY5NTAxMTIz
ZThiNWUzZjJhOWFjMGUwYzhhZC4uMWQ0NjI2ZWJmMTNlYWJlZTE2MDA2NjdkNDE3ZTdlMmJhZDNi
YjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVURldmljZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQpAQCAtMjYsMjMgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkdQVURldmljZS5oIgogCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2ltcG9ydCAiR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgiCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9N
ZXRhbFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVEZXZpY2UoaWQgPE1UTERl
dmljZT4gZGV2aWNlKQotewotICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIEdQVURldmljZTo6cHJld2FybSgpCit2b2lkIHByZXdhcm1HUFUoKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBDYWxsIE1UTENvcHlBbGxEZXZpY2VzKCkgb24g
YSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBoYW5naW5nIHRoZSBtYWluIHRocmVhZC4KQEAg
LTUyLDUwICs0MCw0IEBAIHZvaWQgR1BVRGV2aWNlOjpwcmV3YXJtKCkKICNlbmRpZgogfQogCi1S
ZWZQdHI8R1BVRGV2aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZShjb25zdCBzdGQ6Om9wdGlvbmFs
PEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMpCi17Ci0gICAgUmV0YWluUHRyPE1U
TERldmljZT4gZGV2aWNlUHRyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy0+cG93
ZXJQcmVmZXJlbmNlIHx8IG9wdGlvbnMtPnBvd2VyUHJlZmVyZW5jZSA9PSBHUFVQb3dlclByZWZl
cmVuY2U6Okxvd1Bvd2VyKSB7Ci0gICAgICAgIGF1dG8gZGV2aWNlcyA9IGFkb3B0TlMoTVRMQ29w
eUFsbERldmljZXMoKSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGlkIDxNVExEZXZpY2U+IGRl
dmljZSA6IGRldmljZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxlRGV2
aWNlKGRldmljZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
ZGV2aWNlLmxvd1Bvd2VyKSB7Ci0gICAgICAgICAgICAgICAgZGV2aWNlUHRyID0gZGV2aWNlOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQotICAgIGlmICghZGV2aWNlUHRyKQotICAgICAgICBkZXZpY2VQdHIgPSBhZG9wdE5TKE1UTENy
ZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSk7Ci0KLSAgICBpZiAoIWlzQWNjZXB0YWJsZURldmlj
ZShkZXZpY2VQdHIuZ2V0KCkpKQotICAgICAgICBkZXZpY2VQdHIuY2xlYXIoKTsKLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICghZGV2aWNlUHRyKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OkdQVURldmljZSgpOiBVbmFibGUgdG8gY3JlYXRlIEdQ
VURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgTE9HKFdl
YkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IE1UTERldmljZSBpcyAlcCIsIGRldmljZVB0
ci5nZXQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVEZXZpY2UoV1RGTW92ZShkZXZp
Y2VQdHIpKSk7Ci19Ci0KLUdQVURldmljZTo6R1BVRGV2aWNlKFJldGFpblB0cjxNVExEZXZpY2U+
JiYgZGV2aWNlKQotICAgIDogbV9wbGF0Zm9ybURldmljZShXVEZNb3ZlKGRldmljZSkpCi17Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlMDk4OGM5MzBhMDBiNzQ2Nzc3YzdhMDZiN2Q5
ZDFmNDEzMTY2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZU1ldGFs
Q29udmVydExheW91dC5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBp
cGVsaW5lTGF5b3V0LmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyU3RhZ2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgT3B0aW9uU2V0PFdITFNMOjpTaGFkZXJTdGFnZT4gY29udmVy
dFNoYWRlclN0YWdlRmxhZ3MoR1BVU2hhZGVyU3RhZ2VGbGFncyBmbGFncykKLXsKLSAgICBPcHRp
b25TZXQ8V0hMU0w6OlNoYWRlclN0YWdlPiByZXN1bHQ7Ci0gICAgaWYgKGZsYWdzICYgR1BVU2hh
ZGVyU3RhZ2U6OkZsYWdzOjpWZXJ0ZXgpCi0gICAgICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRl
clN0YWdlOjpWZXJ0ZXgpOwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlOjpGbGFnczo6
RnJhZ21lbnQpCi0gICAgICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRlclN0YWdlOjpGcmFnbWVu
dCk7Ci0gICAgaWYgKGZsYWdzICYgR1BVU2hhZGVyU3RhZ2U6OkZsYWdzOjpDb21wdXRlKQotICAg
ICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRp
bmdEZXRhaWxzPiBjb252ZXJ0QmluZGluZ1R5cGUoR1BVQmluZEdyb3VwTGF5b3V0OjpJbnRlcm5h
bEJpbmRpbmdEZXRhaWxzIGludGVybmFsQmluZGluZ0RldGFpbHMpCi17Ci0gICAgcmV0dXJuIFdU
Rjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpVbmlmb3Jt
QnVmZmVyIHVuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJp
bmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVmZmVyQmlu
ZGluZyB7IHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9LCBbJl0o
R1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25h
bDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVyKSAtPiBzdGQ6
Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1
cm4geyBXSExTTDo6U2FtcGxlckJpbmRpbmcgeyB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91
cExheW91dDo6U2FtcGxlZFRleHR1cmUpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6
OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiB7IFdITFNMOjpUZXh0dXJlQmluZGlu
ZyB7IH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyIHN0
b3JhZ2VCdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRh
aWxzPiB7Ci0gICAgICAgIHJldHVybiB7IFdITFNMOjpTdG9yYWdlQnVmZmVyQmluZGluZyB7IHN0
b3JhZ2VCdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdy
b3VwTGF5b3V0OjpEeW5hbWljU3RvcmFnZUJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6
QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICB9KSwgaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8V0hM
U0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYgbGF5b3V0
KQotewotICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OwotICAgIGlmIChsYXlvdXQuYmluZEdyb3Vw
TGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3Qg
YXV0byYgYmluZEdyb3VwTGF5b3V0ID0gbGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtpXTsKLSAg
ICAgICAgV0hMU0w6OkJpbmRHcm91cCBiaW5kR3JvdXA7Ci0gICAgICAgIGJpbmRHcm91cC5uYW1l
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtl
eVZhbHVlUGFpciA6IGJpbmRHcm91cExheW91dC0+YmluZGluZ3NNYXAoKSkgewotICAgICAgICAg
ICAgY29uc3QgYXV0byYgYmluZGluZ0RldGFpbHMgPSBrZXlWYWx1ZVBhaXIudmFsdWU7Ci0gICAg
ICAgICAgICBXSExTTDo6QmluZGluZyBiaW5kaW5nOwotICAgICAgICAgICAgYmluZGluZy52aXNp
YmlsaXR5ID0gY29udmVydFNoYWRlclN0YWdlRmxhZ3MoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxC
aW5kaW5nLnZpc2liaWxpdHkpOwotICAgICAgICAgICAgaWYgKGF1dG8gYmluZGluZ1R5cGUgPSBj
b252ZXJ0QmluZGluZ1R5cGUoYmluZGluZ0RldGFpbHMuaW50ZXJuYWxCaW5kaW5nRGV0YWlscykp
Ci0gICAgICAgICAgICAgICAgYmluZGluZy5iaW5kaW5nID0gKmJpbmRpbmdUeXBlOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
ICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmcgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGJpbmRpbmcuZXh0ZXJuYWxOYW1lID0gYmluZGluZ0Rl
dGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmc7Ci0gICAgICAgICAgICBiaW5kaW5nLmludGVy
bmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZTsKLSAgICAgICAgICAgIGJpbmRH
cm91cC5iaW5kaW5ncy5hcHBlbmQoV1RGTW92ZShiaW5kaW5nKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKGJpbmRHcm91cCkpOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3ZGQ1MmRkN2U1ZGEyYWQxZDRhMWNk
Y2YyYmMxMjE1ZTgzNTMzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlw
ZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwotCi1zdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+
IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmKTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVQbGF0Zm9ybVR5cGVzTWV0YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTM5YWI1NDM1ODZlMTRlZThmZDU2MDhjMDRlZDM2ZTE3OTgxZDNjMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGxhdGZvcm1UeXBlc01ldGFsLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8b2JqYy9OU09iakNSdW50aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1PQkpDX0NMQVNTIENBTWV0YWxEcmF3YWJsZTsKLU9CSkNfQ0xBU1MgV2ViR1BVTGF5
ZXI7Ci0KLU9CSkNfUFJPVE9DT0woTVRMQXJndW1lbnRFbmNvZGVyKTsKLU9CSkNfUFJPVE9DT0wo
TVRMQmxpdENvbW1hbmRFbmNvZGVyKTsKLU9CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKLU9CSkNf
UFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZlcik7Ci1PQkpDX1BST1RPQ09MKE1UTENvbW1hbmRFbmNv
ZGVyKTsKLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZFF1ZXVlKTsKLU9CSkNfUFJPVE9DT0woTVRM
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKTsKLU9CSkNfUFJPVE9DT0woTVRMQ29tcHV0ZVBpcGVsaW5l
U3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExEZXB0aFN0ZW5jaWxTdGF0ZSk7Ci1PQkpDX1BST1RP
Q09MKE1UTERldmljZSk7Ci1PQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOwotT0JKQ19QUk9UT0NP
TChNVExSZW5kZXJDb21tYW5kRW5jb2Rlcik7Ci1PQkpDX1BST1RPQ09MKE1UTFJlbmRlclBpcGVs
aW5lU3RhdGUpOwotT0JKQ19QUk9UT0NPTChNVExSZXNvdXJjZSk7Ci1PQkpDX1BST1RPQ09MKE1U
TFNhbXBsZXJTdGF0ZSk7Ci1PQkpDX1BST1RPQ09MKE1UTFRleHR1cmUpOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXVzaW5nIFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0ID0gTlNVSW50ZWdlcjsK
LQotLy8gTWV0YWwgdHlwZXMKLXVzaW5nIFBsYXRmb3JtQnVmZmVyID0gTVRMQnVmZmVyOwotdXNp
bmcgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybUJ1ZmZlcj47Ci0K
LXVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciA9IE1UTENvbW1hbmRCdWZmZXI7Ci11c2luZyBQ
bGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybUNvbW1hbmRC
dWZmZXI+OwotCi11c2luZyBQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciA9IE1UTENvbXB1dGVD
b21tYW5kRW5jb2RlcjsKLXVzaW5nIFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyU21hcnRQdHIg
PSBSZXRhaW5QdHI8UGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXI+OwotCi11c2luZyBQbGF0Zm9y
bUNvbXB1dGVQaXBlbGluZSA9IE1UTENvbXB1dGVQaXBlbGluZVN0YXRlOwotdXNpbmcgUGxhdGZv
cm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybUNvbXB1dGVQaXBl
bGluZT47Ci0KLXVzaW5nIFBsYXRmb3JtRGV2aWNlID0gTVRMRGV2aWNlOwotdXNpbmcgUGxhdGZv
cm1EZXZpY2VTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybURldmljZT47Ci0KLXVzaW5nIFBs
YXRmb3JtRHJhd2FibGUgPSBDQU1ldGFsRHJhd2FibGU7Ci11c2luZyBQbGF0Zm9ybURyYXdhYmxl
U21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1EcmF3YWJsZT47Ci0KLXVzaW5nIFBsYXRmb3Jt
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgPSBNVExDb21tYW5kRW5jb2RlcjsKLXVzaW5nIFBsYXRm
b3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyPjsKLQotdXNpbmcgUGxhdGZvcm1RdWV1ZSA9IE1UTENvbW1h
bmRRdWV1ZTsKLXVzaW5nIFBsYXRmb3JtUXVldWVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9y
bVF1ZXVlPjsKLQotdXNpbmcgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciA9IE1UTFJlbmRlckNv
bW1hbmRFbmNvZGVyOwotdXNpbmcgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyID0g
UmV0YWluUHRyPFBsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI+OwotCi11c2luZyBQbGF0Zm9ybVJl
bmRlclBpcGVsaW5lID0gTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBsYXRmb3JtUmVu
ZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVJlbmRlclBpcGVsaW5lPjsK
LQotdXNpbmcgUGxhdGZvcm1TYW1wbGVyID0gTVRMU2FtcGxlclN0YXRlOwotdXNpbmcgUGxhdGZv
cm1TYW1wbGVyU21hcnRQdHIgPSBSZXRhaW5QdHI8UGxhdGZvcm1TYW1wbGVyPjsKLQotdXNpbmcg
UGxhdGZvcm1TaGFkZXJNb2R1bGUgPSBNVExMaWJyYXJ5OwotdXNpbmcgUGxhdGZvcm1TaGFkZXJN
b2R1bGVTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybVNoYWRlck1vZHVsZT47Ci0KLXVzaW5n
IFBsYXRmb3JtU3dhcExheWVyID0gV2ViR1BVTGF5ZXI7Ci11c2luZyBQbGF0Zm9ybVN3YXBMYXll
clNtYXJ0UHRyID0gUmV0YWluUHRyPFBsYXRmb3JtU3dhcExheWVyPjsKLQotdXNpbmcgUGxhdGZv
cm1UZXh0dXJlID0gTVRMVGV4dHVyZTsKLXVzaW5nIFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyID0g
UmV0YWluUHRyPFBsYXRmb3JtVGV4dHVyZT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYjc5ZGI4M2JhMWViNmUwY2JkY2JlOWQwYmE5
YzkwMjQ5ZDc5ODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVQmluZEdy
b3VwLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci12b2lkIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBpZiAo
IXBsYXRmb3JtUGFzc0VuY29kZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW3BsYXRmb3JtUGFzc0VuY29kZXIoKSBlbmRFbmNvZGlu
Z107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaW52YWxpZGF0ZUVuY29k
ZXIoKTsKLSAgICBtX2NvbW1hbmRCdWZmZXItPnNldElzRW5jb2RpbmdQYXNzKGZhbHNlKTsKLX0K
LQotdm9pZCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVuc2lnbmVk
IGluZGV4LCBHUFVCaW5kR3JvdXAmIGJpbmRHcm91cCkKLXsKLSAgICBpZiAoIXBsYXRmb3JtUGFz
c0VuY29kZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5k
ZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGFyZ3VtZW50QnVmZmVy
ID0gYmluZEdyb3VwLmFyZ3VtZW50QnVmZmVyKCk7Ci0gICAgaWYgKCFhcmd1bWVudEJ1ZmZlci5m
aXJzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGFyZ3VtZW50QnVmZmVyLnNlY29uZC52
ZXJ0ZXgpCi0gICAgICAgIHNldFZlcnRleEJ1ZmZlcihhcmd1bWVudEJ1ZmZlci5maXJzdCwgKmFy
Z3VtZW50QnVmZmVyLnNlY29uZC52ZXJ0ZXgsIGluZGV4KTsKLSAgICBpZiAoYXJndW1lbnRCdWZm
ZXIuc2Vjb25kLmZyYWdtZW50KQotICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcihhcmd1bWVudEJ1
ZmZlci5maXJzdCwgKmFyZ3VtZW50QnVmZmVyLnNlY29uZC5mcmFnbWVudCwgaW5kZXgpOwotICAg
IGlmIChhcmd1bWVudEJ1ZmZlci5zZWNvbmQuY29tcHV0ZSkKLSAgICAgICAgc2V0Q29tcHV0ZUJ1
ZmZlcihhcmd1bWVudEJ1ZmZlci5maXJzdCwgKmFyZ3VtZW50QnVmZmVyLnNlY29uZC5jb21wdXRl
LCBpbmRleCk7Ci0KLSAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJpbmRHcm91cC5ib3VuZEJ1ZmZl
cnMoKSkgewotICAgICAgICB1c2VSZXNvdXJjZShidWZmZXItPnBsYXRmb3JtQnVmZmVyKCksIHN0
YXRpY19jYXN0PE1UTFJlc291cmNlVXNhZ2U+KGJ1ZmZlci0+cGxhdGZvcm1Vc2FnZSgpKSk7Ci0g
ICAgICAgIG1fY29tbWFuZEJ1ZmZlci0+dXNlQnVmZmVyKGJ1ZmZlci5jb3B5UmVmKCkpOwotICAg
IH0KLSAgICBmb3IgKGF1dG8mIHRleHR1cmUgOiBiaW5kR3JvdXAuYm91bmRUZXh0dXJlcygpKSB7
Ci0gICAgICAgIHVzZVJlc291cmNlKHRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpLCBzdGF0aWNf
Y2FzdDxNVExSZXNvdXJjZVVzYWdlPih0ZXh0dXJlLT5wbGF0Zm9ybVVzYWdlKCkpKTsKLSAgICAg
ICAgbV9jb21tYW5kQnVmZmVyLT51c2VUZXh0dXJlKHRleHR1cmUuY29weVJlZigpKTsKLSAgICB9
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVUXVldWVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVRdWV1ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTFi
NDJiNTk0NGY0NmI5ZjI3ZGE5MGU2NDE2YzZkYmYwYjA1YTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVF1ZXVl
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVDb21tYW5kQnVmZmVyLmgi
Ci0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgotI2ltcG9y
dCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVE
ZWZhdWx0TGFiZWwgPSBAImNvbS5hcHBsZS5XZWJLaXQiOwotc3RhdGljIE5TU3RyaW5nICogY29u
c3QgY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXggPSBAImNvbS5hcHBsZS5XZWJLaXQuIjsKLQotUmVm
UHRyPEdQVVF1ZXVlPiBHUFVRdWV1ZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNl
KQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVF1ZXVlOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExDb21tYW5kUXVl
dWU+IHF1ZXVlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBxdWV1
ZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0NvbW1hbmRRdWV1ZV0pOwot
ICAgIFtxdWV1ZSBzZXRMYWJlbDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFxdWV1ZSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVUXVldWU6OnRyeUNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1h
bmRRdWV1ZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHUFVRdWV1ZShXVEZNb3ZlKHF1ZXVlKSwgZGV2aWNlKSk7Ci19Ci0KLUdQ
VVF1ZXVlOjpHUFVRdWV1ZShSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiYmIHF1ZXVlLCBjb25z
dCBHUFVEZXZpY2UmIGRldmljZSkKLSAgICA6IG1fcGxhdGZvcm1RdWV1ZShXVEZNb3ZlKHF1ZXVl
KSkKLSAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCi17Ci19Ci0KLXZvaWQgR1BV
UXVldWU6OnN1Ym1pdChWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRCdWZm
ZXJzKQotewotICAgIGZvciAoYXV0byYgY29tbWFuZEJ1ZmZlciA6IGNvbW1hbmRCdWZmZXJzKSB7
Ci0gICAgICAgIC8vIFZhbGlkYXRlIHJlc291cmNlIGludGVncml0eS4KLSAgICAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBjb21tYW5kQnVmZmVyLT51c2VkQnVmZmVycygpKSB7Ci0gICAgICAgICAg
ICBpZiAoYnVmZmVyLT5zdGF0ZSgpICE9IEdQVUJ1ZmZlcjo6U3RhdGU6OlVubWFwcGVkKSB7Ci0g
ICAgICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBH
UFVCdWZmZXIgc2V0IG9uIGEgR1BVQ29tbWFuZEJ1ZmZlciEiKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChhdXRvJiB0ZXh0
dXJlIDogY29tbWFuZEJ1ZmZlci0+dXNlZFRleHR1cmVzKCkpIHsKLSAgICAgICAgICAgIGlmICgh
dGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR1BV
LCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlkIEdQVVRleHR1cmUgc2V0IG9uIGEgR1BVQ29t
bWFuZEJ1ZmZlciEiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY29tbWFuZEJ1ZmZlci0+ZW5kQmxpdEVuY29kaW5nKCk7Ci0gICAg
ICAgIC8vIE9rYXkgdG8gY29tbWl0OyBwcmV2ZW50IGFueSBidWZmZXIgbWFwcGluZyBjYWxsYmFj
a3MgZnJvbSBleGVjdXRpbmcgdW50aWwgY29tbWFuZCBidWZmZXIgaXMgY29tcGxldGUuCi0gICAg
ICAgIGZvciAoYXV0byYgYnVmZmVyIDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1ZmZlcnMoKSkKLSAg
ICAgICAgICAgIGJ1ZmZlci0+Y29tbWFuZEJ1ZmZlckNvbW1pdHRlZChjb21tYW5kQnVmZmVyLT5w
bGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSk7Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgICAgICBbY29tbWFuZEJ1ZmZlci0+cGxhdGZvcm1Db21tYW5kQnVmZmVyKCkgY29t
bWl0XTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0KLQotICAgIGlm
IChtX3ByZXNlbnRUYXNrLmlzUGVuZGluZygpIHx8ICFtX2RldmljZSB8fCAhbV9kZXZpY2UtPnN3
YXBDaGFpbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBhIEdQVVN3YXBDaGFpbiBl
eGlzdHMsIGVuc3VyZSB0aGF0IGEgcHJlc2VudCBpcyBzY2hlZHVsZWQgYWZ0ZXIgYWxsIGNvbW1h
bmQgYnVmZmVycy4KLSAgICBtX3ByZXNlbnRUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzd2FwQ2hhaW4gPSBtYWtlUmVmKCptX2RldmljZS0+
c3dhcENoYWluKCkpXSAoKSB7Ci0gICAgICAgIGF1dG8gY3VycmVudERyYXdhYmxlID0gc3dhcENo
YWluLT50YWtlRHJhd2FibGUoKTsKLSAgICAgICAgLy8gSWYgdGhlIEdQVVN3YXBDaGFpbiBoYXMg
bm8gZHJhd2FibGUsIGl0IHdhcyBpbnZhbGlkYXRlZCBiZXR3ZWVuIGNvbW1hbmQgc3VibWlzc2lv
biBhbmQgdGhpcyB0YXNrLgotICAgICAgICBpZiAoIWN1cnJlbnREcmF3YWJsZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHByZXNlbnRDb21tYW5kQnVmZmVyID0gW21fcGxh
dGZvcm1RdWV1ZSBjb21tYW5kQnVmZmVyXTsKLSAgICAgICAgW3ByZXNlbnRDb21tYW5kQnVmZmVy
IHByZXNlbnREcmF3YWJsZTpzdGF0aWNfY2FzdDxpZDxNVExEcmF3YWJsZT4+KGN1cnJlbnREcmF3
YWJsZS5nZXQoKSldOwotICAgICAgICBbcHJlc2VudENvbW1hbmRCdWZmZXIgY29tbWl0XTsKLSAg
ICB9KTsKLX0KLQotU3RyaW5nIEdQVVF1ZXVlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3BsYXRmb3JtUXVldWUpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgTlNT
dHJpbmcgKnByZWZpeGVkTGFiZWwgPSBbbV9wbGF0Zm9ybVF1ZXVlIGxhYmVsXTsKLQotICAgIGlm
IChbcHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
XSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQocHJlZml4ZWRM
YWJlbC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOwotICAgIHJldHVy
biBbcHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVm
aXgubGVuZ3RoXTsKLX0KLQotdm9pZCBHUFVRdWV1ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBs
YWJlbCkgY29uc3QKLXsKLSAgICBpZiAobGFiZWwuaXNFbXB0eSgpKQotICAgICAgICBbbV9wbGF0
Zm9ybVF1ZXVlIHNldExhYmVsOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF07Ci0gICAgZWxzZQot
ICAgICAgICBbbV9wbGF0Zm9ybVF1ZXVlIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZp
eCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGFzc0VuY29kZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMz
NTVlMjNhMTgwOTcxMDc3ZDFmYTFiY2QxNTljZDhmYmJiOTZkYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDQxOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lt
cG9ydCAiR1BVQnVmZmVyLmgiCi0jaW1wb3J0ICJHUFVDb2xvci5oIgotI2ltcG9ydCAiR1BVQ29t
bWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLSNpbXBv
cnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJX
SExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIgotI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExMb2FkQWN0aW9uIGxvYWRBY3Rpb25Gb3JH
UFVMb2FkT3AoR1BVTG9hZE9wIG9wKQotewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIEdQ
VUxvYWRPcDo6Q2xlYXI6Ci0gICAgICAgIHJldHVybiBNVExMb2FkQWN0aW9uQ2xlYXI7Ci0gICAg
Y2FzZSBHUFVMb2FkT3A6OkxvYWQ6Ci0gICAgICAgIHJldHVybiBNVExMb2FkQWN0aW9uTG9hZDsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTFN0b3Jl
QWN0aW9uIHN0b3JlQWN0aW9uRm9yR1BVU3RvcmVPcChHUFVTdG9yZU9wIG9wKQotewotICAgIHN3
aXRjaCAob3ApIHsKLSAgICBjYXNlIEdQVVN0b3JlT3A6OlN0b3JlOgotICAgICAgICByZXR1cm4g
TVRMU3RvcmVBY3Rpb25TdG9yZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotc3RhdGljIGJvb2wgcG9wdWxhdGVNdGxDb2xvckF0dGFjaG1lbnRzQXJyYXkoTVRMUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSAqYXJyYXksIGNvbnN0IFZlY3Rv
cjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBj
b25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAg
VU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkZXNjcmlwdG9ycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBhdXRv
JiBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNbaV07Ci0gICAgICAgIGlmICghZGVzY3JpcHRvci5h
dHRhY2htZW50LT5wbGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIE1UTFRleHR1cmUgZm9yIGNvbG9yIGF0dGFjaG1lbnQgJXUhIiwgZnVuY3Rp
b25OYW1lLCBpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICBjb25zdCBhdXRvJiBjb2xvciA9IGRlc2NyaXB0b3IuY2xlYXJDb2xvcjsKLQotICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICBhdXRvIG10bEF0dGFjaG1lbnQg
PSByZXRhaW5QdHIoW2FycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDppXSk7Ci0gICAgICAg
IFttdGxBdHRhY2htZW50IHNldFRleHR1cmU6ZGVzY3JpcHRvci5hdHRhY2htZW50LT5wbGF0Zm9y
bVRleHR1cmUoKV07Ci0gICAgICAgIFttdGxBdHRhY2htZW50IHNldENsZWFyQ29sb3I6TVRMQ2xl
YXJDb2xvck1ha2UoY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSldOwotICAgICAg
ICBbbXRsQXR0YWNobWVudCBzZXRMb2FkQWN0aW9uOmxvYWRBY3Rpb25Gb3JHUFVMb2FkT3AoZGVz
Y3JpcHRvci5sb2FkT3ApXTsKLSAgICAgICAgW210bEF0dGFjaG1lbnQgc2V0U3RvcmVBY3Rpb246
c3RvcmVBY3Rpb25Gb3JHUFVTdG9yZU9wKGRlc2NyaXB0b3Iuc3RvcmVPcCldOwotCi0gICAgICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGJvb2wgcG9wdWxhdGVNdGxEZXB0aFN0ZW5jaWxBdHRhY2htZW50KE1UTFJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICptdGxBdHRhY2htZW50LCBjb25zdCBHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBV
TlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCi0gICAgaWYgKCFkZXNjcmlwdG9y
LmF0dGFjaG1lbnQtPnBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogSW52YWxpZCBNVExUZXh0dXJlIGZvciBkZXB0aCBhdHRhY2htZW50ISIsIGZ1bmN0aW9uTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIFttdGxBdHRhY2htZW50IHNldFRleHR1cmU6ZGVzY3JpcHRvci5h
dHRhY2htZW50LT5wbGF0Zm9ybVRleHR1cmUoKV07Ci0gICAgW210bEF0dGFjaG1lbnQgc2V0Q2xl
YXJEZXB0aDpkZXNjcmlwdG9yLmNsZWFyRGVwdGhdOwotICAgIFttdGxBdHRhY2htZW50IHNldExv
YWRBY3Rpb246bG9hZEFjdGlvbkZvckdQVUxvYWRPcChkZXNjcmlwdG9yLmRlcHRoTG9hZE9wKV07
Ci0gICAgW210bEF0dGFjaG1lbnQgc2V0U3RvcmVBY3Rpb246c3RvcmVBY3Rpb25Gb3JHUFVTdG9y
ZU9wKGRlc2NyaXB0b3IuZGVwdGhTdG9yZU9wKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgdXNlQXR0YWNobWVu
dHMoR1BVQ29tbWFuZEJ1ZmZlciYgYnVmZmVyLCBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRl
c2NyaXB0b3IpCi17Ci0gICAgZm9yIChhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBkZXNjcmlwdG9y
LmNvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIGJ1ZmZlci51c2VUZXh0dXJlKFdURk1vdmUoY29s
b3JBdHRhY2htZW50LmF0dGFjaG1lbnQpKTsKLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5j
aWxBdHRhY2htZW50KQotICAgICAgICBidWZmZXIudXNlVGV4dHVyZShXVEZNb3ZlKCgqZGVzY3Jp
cHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50KS5hdHRhY2htZW50KSk7Ci19Ci0KLVJlZlB0cjxH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0ZShSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIsIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnRyeUNyZWF0ZSgpIjsKLQotICAgIC8vIE9ubHkgb25lIGNvbW1hbmQg
ZW5jb2RlciBtYXkgYmUgYWN0aXZlIGF0IGEgdGltZS4KLSAgICBpZiAoYnVmZmVyLT5pc0VuY29k
aW5nUGFzcygpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogRXhpc3RpbmcgcGFzcyBlbmNv
ZGVyIG11c3QgYmUgZW5kZWQgZmlyc3QhIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRv
cjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbXRsRGVzY3JpcHRv
ciA9IGFkb3B0TlMoW01UTFJlbmRlclBhc3NEZXNjcmlwdG9yIG5ld10pOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0ZSBNVExSZW5kZXJQYXNzRGVzY3JpcHRv
ciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBpZiAoIXBvcHVsYXRlTXRsQ29sb3JBdHRhY2htZW50c0FycmF5KG10bERlc2NyaXB0b3IuZ2V0
KCkuY29sb3JBdHRhY2htZW50cywgZGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLCBmdW5jdGlv
bk5hbWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChkZXNjcmlwdG9yLmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQKLSAgICAgICAgJiYgIXBvcHVsYXRlTXRsRGVwdGhTdGVuY2ls
QXR0YWNobWVudChtdGxEZXNjcmlwdG9yLmdldCgpLmRlcHRoQXR0YWNobWVudCwgKmRlc2NyaXB0
b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudCwgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBidWZmZXItPmVuZEJsaXRFbmNvZGluZygpOwotCi0gICAgUmV0YWlu
UHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiBtdGxFbmNvZGVyOwotCi0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxFbmNvZGVyID0gW2J1ZmZlci0+cGxhdGZvcm1D
b21tYW5kQnVmZmVyKCkgcmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjptdGxEZXNj
cmlwdG9yLmdldCgpXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlm
ICghbXRsRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVh
dGUgTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgLy8gQWxsIGlzIHdlbGw7IGVuc3VyZSBHUFVDb21t
YW5kQnVmZmVyIGlzIGF3YXJlIG9mIG5ldyBhdHRhY2htZW50cy4KLSAgICB1c2VBdHRhY2htZW50
cyhidWZmZXIsIFdURk1vdmUoZGVzY3JpcHRvcikpOwotICAgIAotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKG10bEVu
Y29kZXIpKSk7Ci19Ci0KLUdQVVJlbmRlclBhc3NFbmNvZGVyOjpHUFVSZW5kZXJQYXNzRW5jb2Rl
cihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZXRhaW5QdHI8TVRMUmVu
ZGVyQ29tbWFuZEVuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IEdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlcikpCi0gICAgLCBtX3BsYXRmb3JtUmVuZGVyUGFz
c0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKLXsKLX0KLQotY29uc3QgTVRMQ29tbWFuZEVuY29k
ZXIgKkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyLmdldCgpOwotfQotCi12b2lk
IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShSZWY8Y29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmU+JiYgcGlwZWxpbmUpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBl
bGluZSgpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTWV0YWwgdGhyb3dzIGFuIGVycm9yIGlm
IHRoZSBNVExQaXBlbGluZVN0YXRlJ3MgYXR0YWNobWVudCBmb3JtYXRzIGRvIG5vdCBtYXRjaCB0
aGUgTVRMQ29tbWFuZEVuY29kZXIncyBhdHRhY2htZW50IGZvcm1hdHMuCi0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmIChwaXBlbGluZS0+ZGVwdGhTdGVuY2lsU3Rh
dGUoKSkKLSAgICAgICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXREZXB0aFN0ZW5j
aWxTdGF0ZTpwaXBlbGluZS0+ZGVwdGhTdGVuY2lsU3RhdGUoKV07Ci0KLSAgICBbbV9wbGF0Zm9y
bVJlbmRlclBhc3NFbmNvZGVyIHNldFJlbmRlclBpcGVsaW5lU3RhdGU6cGlwZWxpbmUtPnBsYXRm
b3JtUmVuZGVyUGlwZWxpbmUoKV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBtX3BpcGVsaW5lID0gV1RGTW92ZShwaXBlbGluZSk7Ci19Ci0KLXZvaWQgR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImIGNvbG9yKQotewotICAg
IGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb2xvcigpOiBJbnZhbGlkIG9wZXJhdGlv
bjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNv
ZGVyIHNldEJsZW5kQ29sb3JSZWQ6Y29sb3IuciBncmVlbjpjb2xvci5nIGJsdWU6Y29sb3IuYiBh
bHBoYTpjb2xvci5hXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQg
R1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKLXsK
LSAgICBpZiAoIW1fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KCk6IEludmFsaWQgb3BlcmF0
aW9uOiBFbmNvZGluZyBpcyBlbmRlZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0Vu
Y29kZXIgc2V0Vmlld3BvcnQ6IHsgeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERl
cHRoIH1dOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1SZW5k
ZXJQYXNzRW5jb2RlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFNjaXNzb3JSZWN0KCk6IEludmFsaWQgb3BlcmF0aW9uOiBFbmNvZGluZyBpcyBlbmRl
ZCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0U2Npc3NvclJlY3Q6
IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKEdQVUJ1ZmZl
ciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3BsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQh
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9mZnNldCA+PSBidWZmZXIuYnl0
ZUxlbmd0aCgpIHx8IG9mZnNldCAlIDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCEiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQoYnVmZmVyLnBsYXRmb3JtQnVmZmVyKCkpOwot
ICAgIC8vIEJ1ZmZlciBtdXN0IGJlIGNhY2hlZCB0byBwcm92aWRlIGl0IHRvIE1ldGFsIHZpYSBk
cmF3SW5kZXhlZFByaW1pdGl2ZXMuCi0gICAgbV9pbmRleEJ1ZmZlciA9IG1ha2VSZWZQdHIoYnVm
ZmVyKTsKLSAgICBtX2luZGV4QnVmZmVyT2Zmc2V0ID0gb2Zmc2V0OwotfQotCi12b2lkIEdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBW
ZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiBidWZmZXJzLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBv
ZmZzZXRzKQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAg
ICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycygp
OiBJbnZhbGlkIG9wZXJhdGlvbjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoYnVmZmVycy5zaXplKCkgJiYgb2Zmc2V0cy5zaXplKCkg
PT0gYnVmZmVycy5zaXplKCkpOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICBhdXRvIG10bEJ1ZmZlcnMgPSBidWZmZXJzLm1hcChbdGhpc10gKGF1dG8mIGJ1ZmZlcikg
ewotICAgICAgICBjb21tYW5kQnVmZmVyKCkudXNlQnVmZmVyKGJ1ZmZlci5jb3B5UmVmKCkpOwot
ICAgICAgICBBU1NFUlQoYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKTsKLSAgICAgICAgcmV0dXJu
IGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKTsKLSAgICB9KTsKLQotICAgIGF1dG8gaW5kZXhSYW5n
ZXMgPSBOU01ha2VSYW5nZShXSExTTDo6TWV0YWw6OmNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4
KGluZGV4KSwgYnVmZmVycy5zaXplKCkpOwotCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5j
b2RlciBzZXRWZXJ0ZXhCdWZmZXJzOm10bEJ1ZmZlcnMuZGF0YSgpIG9mZnNldHM6KGNvbnN0IE5T
VUludGVnZXIgKilvZmZzZXRzLmRhdGEoKSB3aXRoUmFuZ2U6aW5kZXhSYW5nZXNdOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi1zdGF0aWMgTVRMUHJpbWl0aXZlVHlwZSBt
dGxQcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3koR1BVUHJpbWl0aXZlVG9wb2xv
Z3kgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRv
cG9sb2d5OjpQb2ludExpc3Q6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlUG9pbnQ7
Ci0gICAgY2FzZSBHUFVQcmltaXRpdmVUb3BvbG9neTo6TGluZUxpc3Q6Ci0gICAgICAgIHJldHVy
biBNVExQcmltaXRpdmVUeXBlTGluZTsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5OjpM
aW5lU3RyaXA6Ci0gICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlTGluZVN0cmlwOwotICAg
IGNhc2UgR1BVUHJpbWl0aXZlVG9wb2xvZ3k6OlRyaWFuZ2xlTGlzdDoKLSAgICAgICAgcmV0dXJu
IE1UTFByaW1pdGl2ZVR5cGVUcmlhbmdsZTsKLSAgICBjYXNlIEdQVVByaW1pdGl2ZVRvcG9sb2d5
OjpUcmlhbmdsZVN0cmlwOgotICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVRyaWFuZ2xl
U3RyaXA7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgR1BV
UmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5zaWduZWQgdmVydGV4Q291bnQsIHVuc2lnbmVkIGlu
c3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBmaXJzdEluc3RhbmNl
KQotewotICAgIGlmICghbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJhdGlv
bjogRW5jb2RpbmcgaXMgZW5kZWQhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6ZHJhdygpOiBObyB2YWxpZCBHUFVSZW5kZXJQaXBlbGluZSBmb3VuZCEiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFtt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgCi0gICAgICAgIGRyYXdQcmltaXRpdmVzOm10bFBy
aW1pdGl2ZVR5cGVGb3JHUFVQcmltaXRpdmVUb3BvbG9neShtX3BpcGVsaW5lLT5wcmltaXRpdmVU
b3BvbG9neSgpKQotICAgICAgICB2ZXJ0ZXhTdGFydDpmaXJzdFZlcnRleAotICAgICAgICB2ZXJ0
ZXhDb3VudDp2ZXJ0ZXhDb3VudAotICAgICAgICBpbnN0YW5jZUNvdW50Omluc3RhbmNlQ291bnQK
LSAgICAgICAgYmFzZUluc3RhbmNlOmZpcnN0SW5zdGFuY2VdOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLX0KLQotc3RhdGljIE1UTEluZGV4VHlwZSBtdGxJbmRleFR5cGVGb3JHUFVJ
bmRleEZvcm1hdChHUFVJbmRleEZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQp
IHsKLSAgICBjYXNlIEdQVUluZGV4Rm9ybWF0OjpVaW50MTY6Ci0gICAgICAgIHJldHVybiBNVExJ
bmRleFR5cGVVSW50MTY7Ci0gICAgY2FzZSBHUFVJbmRleEZvcm1hdDo6VWludDMyOgotICAgICAg
ICByZXR1cm4gTVRMSW5kZXhUeXBlVUludDMyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZCh1bnNp
Z25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50LCB1bnNpZ25lZCBmaXJzdElu
ZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0YW5jZSkKLXsKLSNpZiAhTE9H
X0RJU0FCTEVECi0gICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZCgpIjsKLSNlbmRpZgotICAgIGlmICghbV9wbGF0Zm9y
bVJlbmRlclBhc3NFbmNvZGVyKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBv
cGVyYXRpb246IEVuY29kaW5nIGlzIGVuZGVkISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX3BpcGVsaW5lKSB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICIlczogTm8gdmFsaWQgR1BVUmVuZGVyUGlwZWxpbmUgZm91bmQhIiwgZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1fcGlwZWxpbmUtPmluZGV4Rm9ybWF0
KCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyBHUFVJbmRleEZvcm1hdCBzcGVjaWZp
ZWQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1f
aW5kZXhCdWZmZXIgfHwgIW1faW5kZXhCdWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2YWxpZCBpbmRleCBidWZmZXIgc2V0ISIsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGluZGV4Qnl0ZVNpemUg
PSAobV9waXBlbGluZS0+aW5kZXhGb3JtYXQoKSA9PSBHUFVJbmRleEZvcm1hdDo6VWludDE2KSA/
IHNpemVvZih1aW50MTZfdCkgOiBzaXplb2YodWludDMyX3QpOwotCi0gICAgLy8gVGhpcyBjYWxj
dWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cgYXMgZmlyc3RJbmRleCBpcyBib3VuZGVkIHRvIDMyIGJp
dHMsIGFuZCBpbmRleEJ5dGVTaXplIHRvIHNpemVvZih1aW50MzJfdCkuCi0gICAgdWludDY0X3Qg
Zmlyc3RJbmRleE9mZnNldCA9IGZpcnN0SW5kZXggKiBpbmRleEJ5dGVTaXplOwotCi0gICAgLy8g
VGhpcyBjYWxsIGVuc3VyZXMgdGhhdCBuZWl0aGVyIGFyZ3VtZW50IG5vciB0aGVpciBzdW0gd2ls
bCBvdmVyZmxvdyBOU1VJbnRlZ2VyLgotICAgIGF1dG8gdG90YWxPZmZzZXQgPSBjaGVja2VkU3Vt
PE5TVUludGVnZXI+KGZpcnN0SW5kZXhPZmZzZXQsIG1faW5kZXhCdWZmZXJPZmZzZXQpOwotICAg
IGlmICh0b3RhbE9mZnNldC5oYXNPdmVyZmxvd2VkKCkgfHwgdG90YWxPZmZzZXQgPj0gbV9pbmRl
eEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxp
ZCBmaXJzdEluZGV4ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjb21tYW5kQnVmZmVyKCkudXNlQnVmZmVyKG1ha2VSZWYoKm1faW5kZXhCdWZmZXIpKTsK
LQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVy
UGFzc0VuY29kZXIKLSAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzOm10bFByaW1pdGl2ZVR5
cGVGb3JHUFVQcmltaXRpdmVUb3BvbG9neShtX3BpcGVsaW5lLT5wcmltaXRpdmVUb3BvbG9neSgp
KQotICAgICAgICBpbmRleENvdW50OmluZGV4Q291bnQKLSAgICAgICAgaW5kZXhUeXBlOm10bElu
ZGV4VHlwZUZvckdQVUluZGV4Rm9ybWF0KCptX3BpcGVsaW5lLT5pbmRleEZvcm1hdCgpKQotICAg
ICAgICBpbmRleEJ1ZmZlcjptX2luZGV4QnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpCi0gICAgICAg
IGluZGV4QnVmZmVyT2Zmc2V0OnRvdGFsT2Zmc2V0LnZhbHVlKCkKLSAgICAgICAgaW5zdGFuY2VD
b3VudDppbnN0YW5jZUNvdW50Ci0gICAgICAgIGJhc2VWZXJ0ZXg6YmFzZVZlcnRleAotICAgICAg
ICBiYXNlSW5zdGFuY2U6Zmlyc3RJbnN0YW5jZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotfQotCi0jaWYgVVNFKE1FVEFMKQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjp1
c2VSZXNvdXJjZShjb25zdCBNVExSZXNvdXJjZSAqcmVzb3VyY2UsIHVuc2lnbmVkIHVzYWdlKQot
ewotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIpOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciB1
c2VSZXNvdXJjZTpyZXNvdXJjZSB1c2FnZTp1c2FnZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIo
Y29uc3QgTVRMQnVmZmVyICpidWZmZXIsIE5TVUludGVnZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRl
eCkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyKTsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIgc2V0VmVydGV4QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMQnVmZmVyICpidWZmZXIsIE5TVUludGVn
ZXIgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJlbmRl
clBhc3NFbmNvZGVyKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFtt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0RnJhZ21lbnRCdWZmZXI6YnVmZmVyIG9mZnNl
dDpvZmZzZXQgYXRJbmRleDppbmRleF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi0jZW5kaWYgLy8gVVNFKE1FVEFMKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZlNzdlNjk1N2JmYjQ5NTQ0MTIy
NTFhMDM5ODU2OWM5NjQzYThhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU1OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGlu
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1w
b3J0ICJHUFVFcnJvclNjb3Blcy5oIgotI2ltcG9ydCAiR1BVTGltaXRzLmgiCi0jaW1wb3J0ICJH
UFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVVdGlscy5oIgotI2ltcG9ydCAiV0hMU0xQcmVw
YXJlLmgiCi0jaW1wb3J0ICJXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oIgotI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
Ci0jaW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbXBvcnQgPHd0Zi9EYXRhTG9n
Lmg+Ci0jaW1wb3J0IDx3dGYvSGFzaFNldC5oPgotI2ltcG9ydCA8d3RmL01vbm90b25pY1RpbWUu
aD4KLSNpbXBvcnQgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFJldGFpblB0cjxN
VExEZXB0aFN0ZW5jaWxTdGF0ZT4gdHJ5Q3JlYXRlTXRsRGVwdGhTdGVuY2lsU3RhdGUoY29uc3Qg
R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIFJldGFpblB0
cjxNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRM
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBlcnJvclNjb3Blcy5n
ZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgTVRMRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBt
dGxEZXB0aENvbXBhcmUgPSBzdGF0aWNfY2FzdDxNVExDb21wYXJlRnVuY3Rpb24+KHBsYXRmb3Jt
Q29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKGRlc2NyaXB0b3IuZGVwdGhDb21w
YXJlKSk7Ci0gICAgW210bERlc2NyaXB0b3Igc2V0RGVwdGhDb21wYXJlRnVuY3Rpb246bXRsRGVw
dGhDb21wYXJlXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXREZXB0aFdyaXRlRW5hYmxlZDpkZXNj
cmlwdG9yLmRlcHRoV3JpdGVFbmFibGVkXTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYmFj
ay9mcm9udEZhY2VTdGVuY2lsLgotCi0gICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRl
PiBzdGF0ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgc3RhdGUg
PSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdp
dGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIGlmICghc3RhdGUpIHsKLSAgICAgICAgZXJyb3JTY29wZXMuZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjcmVhdGluZyBNVExEZXB0aFN0ZW5jaWxTdGF0ZSEi
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRlOwot
fQotCi1zdGF0aWMgV0hMU0w6OlZlcnRleEZvcm1hdCBjb252ZXJ0VmVydGV4Rm9ybWF0KEdQVVZl
cnRleEZvcm1hdCB2ZXJ0ZXhGb3JtYXQpCi17Ci0gICAgc3dpdGNoICh2ZXJ0ZXhGb3JtYXQpIHsK
LSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQ0OgotICAgICAgICByZXR1cm4gV0hMU0w6
OlZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzJCMzJBMzI7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3Jt
YXQ6OkZsb2F0MzoKLSAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6OkZsb2F0UjMy
RzMyQjMyOwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDI6Ci0gICAgICAgIHJldHVy
biBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMjsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlQodmVydGV4Rm9ybWF0ID09IEdQVVZlcnRleEZvcm1hdDo6RmxvYXQpOwotICAgICAg
ICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzI7Ci0gICAgfQotfQotCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6VGV4dHVyZUZvcm1hdD4gY29udmVydFRleHR1cmVGb3Jt
YXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAg
ICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmE4dW5vcm06Ci0gICAgICAgIHJldHVybiBXSExT
TDo6VGV4dHVyZUZvcm1hdDo6UkdCQThVbm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6
OkJncmE4dW5vcm06Ci0gICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThV
bm9ybTsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4Ogot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRv
IGRvIHdpdGggdGhpcy4KLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdC
OgotICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm1TcmdiOwot
ICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTE2ZmxvYXQ6Ci0gICAgICAgIHJldHVybiBX
SExTTDo6VGV4dHVyZUZvcm1hdDo6UkdCQTE2RmxvYXQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBNVExWZXJ0ZXhGb3JtYXQg
bXRsVmVydGV4Rm9ybWF0Rm9yR1BVVmVydGV4Rm9ybWF0KEdQVVZlcnRleEZvcm1hdCBmb3JtYXQp
Ci17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6Rmxv
YXQ6Ci0gICAgICAgIHJldHVybiBNVExWZXJ0ZXhGb3JtYXRGbG9hdDsKLSAgICBjYXNlIEdQVVZl
cnRleEZvcm1hdDo6RmxvYXQyOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4Rm9ybWF0RmxvYXQy
OwotICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDM6Ci0gICAgICAgIHJldHVybiBNVExW
ZXJ0ZXhGb3JtYXRGbG9hdDM7Ci0gICAgY2FzZSBHUFVWZXJ0ZXhGb3JtYXQ6OkZsb2F0NDoKLSAg
ICAgICAgcmV0dXJuIE1UTFZlcnRleEZvcm1hdEZsb2F0NDsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTFZlcnRleFN0ZXBGdW5jdGlvbiBtdGxTdGVw
RnVuY3Rpb25Gb3JHUFVJbnB1dFN0ZXBNb2RlKEdQVUlucHV0U3RlcE1vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEdQVUlucHV0U3RlcE1vZGU6OlZlcnRleDoKLSAg
ICAgICAgcmV0dXJuIE1UTFZlcnRleFN0ZXBGdW5jdGlvblBlclZlcnRleDsKLSAgICBjYXNlIEdQ
VUlucHV0U3RlcE1vZGU6Okluc3RhbmNlOgotICAgICAgICByZXR1cm4gTVRMVmVydGV4U3RlcEZ1
bmN0aW9uUGVySW5zdGFuY2U7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLS8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byBHUFVMaW1pdHMgd2hlbiB0aGF0IGlzIGltcGxl
bWVudGVkIHByb3Blcmx5LgotY29uc3RleHByIHVuc2lnbmVkIG1heFZlcnRleEF0dHJpYnV0ZXMg
PSAxNjsKLQotc3RhdGljIGJvb2wgdHJ5U2V0VmVydGV4SW5wdXQoY29uc3QgR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10
bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAg
IGNvbnN0IGF1dG8mIGJ1ZmZlcnMgPSBkZXNjcmlwdG9yLnZlcnRleEJ1ZmZlcnM7Ci0KLSAgICBp
ZiAoYnVmZmVycy5zaXplKCkgPiBtYXhWZXJ0ZXhCdWZmZXJzKSB7Ci0gICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9vIG1hbnkgR1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvcnMhIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIG10bFZl
cnRleERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExWZXJ0ZXhEZXNjcmlwdG9yIG5ld10pOwotCi0g
ICAgYXV0byBsYXlvdXRBcnJheSA9IHJldGFpblB0cihtdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgp
LmxheW91dHMpOwotICAgIGF1dG8gYXR0cmlidXRlQXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4
RGVzY3JpcHRvci5nZXQoKS5hdHRyaWJ1dGVzKTsKLQotICAgIC8vIEF0dHJpYnV0ZSBzaGFkZXJM
b2NhdGlvbnMgbXVzdCBiZSB1bmlxdWVseSBmbGF0LW1hcHBlZCB0byBbMCwge21heCBudW1iZXIg
b2YgdmVydGV4IGF0dHJpYnV0ZXN9XS4KLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVJbmRleCA9IDA7
Ci0gICAgSGFzaFNldDx1bnNpZ25lZCwgSW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBsb2NhdGlvbnM7Ci0KLSAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgYnVmZmVycy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAg
ICAgaWYgKCFidWZmZXJzW2luZGV4XSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGNvbnN0IGF1dG8mIGF0dHJpYnV0ZXMgPSBidWZmZXJzW2luZGV4XS0+YXR0cmlidXRlU2V0Owot
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzLnNpemUoKSArIGF0dHJpYnV0ZUluZGV4ID4gbWF4VmVy
dGV4QXR0cmlidXRlcykgewotICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhl
ZEVycm9yKCJUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyEiKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIE5TVUludGVnZXIgaW5w
dXRTdHJpZGUgPSAwOwotICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShidWZmZXJzW2lu
ZGV4XS0+c3RyaWRlLCBpbnB1dFN0cmlkZSkpIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdl
bmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJTdHJpZGUgZm9yIEdQVVZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IgIiwgaW5kZXgsICIgaXMgdG9vIGxhcmdlISIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gY29udmVydGVkQnVmZmVySW5k
ZXggPSBXSExTTDo6TWV0YWw6OmNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KGluZGV4KTsKLQot
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgYXV0byBtdGxMYXlv
dXREZXNjID0gcmV0YWluUHRyKFtsYXlvdXRBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
Y29udmVydGVkQnVmZmVySW5kZXhdKTsKLSAgICAgICAgW210bExheW91dERlc2Mgc2V0U3RlcEZ1
bmN0aW9uOm10bFN0ZXBGdW5jdGlvbkZvckdQVUlucHV0U3RlcE1vZGUoYnVmZmVyc1tpbmRleF0t
PnN0ZXBNb2RlKV07Ci0gICAgICAgIFttdGxMYXlvdXREZXNjIHNldFN0cmlkZTppbnB1dFN0cmlk
ZV07Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgIGlmICghbG9j
YXRpb25zLmFkZChhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24pLmlzTmV3RW50cnkpIHsKLSAgICAg
ICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygi
RHVwbGljYXRlIHNoYWRlckxvY2F0aW9uICIsIGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiwgIiBm
b3IgdmVydGV4IGF0dHJpYnV0ZSEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBOU1VJbnRlZ2VyIG9mZnNldCA9IDA7Ci0gICAg
ICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShhdHRyaWJ1dGUub2Zmc2V0LCBvZmZzZXQp
KSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1h
a2VTdHJpbmcoIkJ1ZmZlciBvZmZzZXQgZm9yIHZlcnRleCBhdHRyaWJ1dGUgIiwgYXR0cmlidXRl
LnNoYWRlckxvY2F0aW9uLCAiIGlzIHRvbyBsYXJnZSEiKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICAgICAgICAgIGF1dG8gbXRsQXR0cmlidXRlRGVzYyA9IHJldGFpblB0
cihbYXR0cmlidXRlQXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmF0dHJpYnV0ZUluZGV4
XSk7Ci0gICAgICAgICAgICBbbXRsQXR0cmlidXRlRGVzYyBzZXRGb3JtYXQ6bXRsVmVydGV4Rm9y
bWF0Rm9yR1BVVmVydGV4Rm9ybWF0KGF0dHJpYnV0ZS5mb3JtYXQpXTsKLSAgICAgICAgICAgIFtt
dGxBdHRyaWJ1dGVEZXNjIHNldE9mZnNldDpvZmZzZXRdOwotICAgICAgICAgICAgW210bEF0dHJp
YnV0ZURlc2Mgc2V0QnVmZmVySW5kZXg6Y29udmVydGVkQnVmZmVySW5kZXhdOwotICAgICAgICAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgICAgICBpZiAod2hsc2xEZXNj
cmlwdG9yKQotICAgICAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+dmVydGV4QXR0cmlidXRl
cy5hcHBlbmQoeyBjb252ZXJ0VmVydGV4Rm9ybWF0KGF0dHJpYnV0ZS5mb3JtYXQpLCBhdHRyaWJ1
dGUuc2hhZGVyTG9jYXRpb24sIGF0dHJpYnV0ZUluZGV4IH0pOwotCi0gICAgICAgICAgICArK2F0
dHJpYnV0ZUluZGV4OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgW210bERlc2NyaXB0b3Igc2V0
VmVydGV4RGVzY3JpcHRvcjptdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgpXTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi1zdGF0aWMgTVRMQ29sb3JXcml0ZU1hc2sgbXRsQ29sb3JXcml0ZU1hc2tG
b3JHUFVDb2xvcldyaXRlRmxhZ3MoR1BVQ29sb3JXcml0ZUZsYWdzIGZsYWdzKQotewotICAgIGlm
IChmbGFncyA9PSBzdGF0aWNfY2FzdDxHUFVDb2xvcldyaXRlRmxhZ3M+KEdQVUNvbG9yV3JpdGU6
OkZsYWdzOjpBbGwpKQotICAgICAgICByZXR1cm4gTVRMQ29sb3JXcml0ZU1hc2tBbGw7Ci0KLSAg
ICBhdXRvIG9wdGlvbnMgPSBPcHRpb25TZXQ8R1BVQ29sb3JXcml0ZTo6RmxhZ3M+Ojpmcm9tUmF3
KGZsYWdzKTsKLQotICAgIE1UTENvbG9yV3JpdGVNYXNrIG1hc2sgPSBNVExDb2xvcldyaXRlTWFz
a05vbmU7Ci0gICAgaWYgKG9wdGlvbnMgJiBHUFVDb2xvcldyaXRlOjpGbGFnczo6UmVkKQotICAg
ICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVNYXNrUmVkOwotICAgIGlmIChvcHRpb25zICYgR1BV
Q29sb3JXcml0ZTo6RmxhZ3M6OkdyZWVuKQotICAgICAgICBtYXNrIHw9IE1UTENvbG9yV3JpdGVN
YXNrR3JlZW47Ci0gICAgaWYgKG9wdGlvbnMgJiBHUFVDb2xvcldyaXRlOjpGbGFnczo6Qmx1ZSkK
LSAgICAgICAgbWFzayB8PSBNVExDb2xvcldyaXRlTWFza0JsdWU7Ci0gICAgaWYgKG9wdGlvbnMg
JiBHUFVDb2xvcldyaXRlOjpGbGFnczo6QWxwaGEpCi0gICAgICAgIG1hc2sgfD0gTVRMQ29sb3JX
cml0ZU1hc2tBbHBoYTsKLQotICAgIHJldHVybiBtYXNrOwotfQotCi1zdGF0aWMgTVRMQmxlbmRP
cGVyYXRpb24gbXRsQmxlbmRPcGVyYXRpb25Gb3JHUFVCbGVuZE9wZXJhdGlvbihHUFVCbGVuZE9w
ZXJhdGlvbiBvcCkKLXsKLSAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUFVCbGVuZE9wZXJh
dGlvbjo6QWRkOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRPcGVyYXRpb25BZGQ7Ci0gICAgY2Fz
ZSBHUFVCbGVuZE9wZXJhdGlvbjo6U3VidHJhY3Q6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZE9w
ZXJhdGlvblN1YnRyYWN0OwotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246OlJldmVyc2VTdWJ0
cmFjdDoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kT3BlcmF0aW9uUmV2ZXJzZVN1YnRyYWN0Owot
ICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246Ok1pbjoKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5k
T3BlcmF0aW9uTWluOwotICAgIGNhc2UgR1BVQmxlbmRPcGVyYXRpb246Ok1heDoKLSAgICAgICAg
cmV0dXJuIE1UTEJsZW5kT3BlcmF0aW9uTWF4OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1zdGF0aWMgTVRMQmxlbmRGYWN0b3IgbXRsQmxlbmRGYWN0b3JGb3JHUFVC
bGVuZEZhY3RvcihHUFVCbGVuZEZhY3RvciBmYWN0b3IpCi17Ci0gICAgc3dpdGNoIChmYWN0b3Ip
IHsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpaZXJvOgotICAgICAgICByZXR1cm4gTVRMQmxl
bmRGYWN0b3JaZXJvOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZToKLSAgICAgICAgcmV0
dXJuIE1UTEJsZW5kRmFjdG9yT25lOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OlNyY0NvbG9y
OgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JTb3VyY2VDb2xvcjsKLSAgICBjYXNlIEdQ
VUJsZW5kRmFjdG9yOjpPbmVNaW51c1NyY0NvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRG
YWN0b3JPbmVNaW51c1NvdXJjZUNvbG9yOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OlNyY0Fs
cGhhOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JTb3VyY2VBbHBoYTsKLSAgICBjYXNl
IEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c1NyY0FscGhhOgotICAgICAgICByZXR1cm4gTVRMQmxl
bmRGYWN0b3JPbmVNaW51c1NvdXJjZUFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OkRz
dENvbG9yOgotICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JEZXN0aW5hdGlvbkNvbG9yOwot
ICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6Ok9uZU1pbnVzRHN0Q29sb3I6Ci0gICAgICAgIHJldHVy
biBNVExCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25Db2xvcjsKLSAgICBjYXNlIEdQVUJs
ZW5kRmFjdG9yOjpEc3RBbHBoYToKLSAgICAgICAgcmV0dXJuIE1UTEJsZW5kRmFjdG9yRGVzdGlu
YXRpb25BbHBoYTsKLSAgICBjYXNlIEdQVUJsZW5kRmFjdG9yOjpPbmVNaW51c0RzdEFscGhhOgot
ICAgICAgICByZXR1cm4gTVRMQmxlbmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQWxwaGE7Ci0g
ICAgY2FzZSBHUFVCbGVuZEZhY3Rvcjo6U3JjQWxwaGFTYXR1cmF0ZWQ6Ci0gICAgICAgIHJldHVy
biBNVExCbGVuZEZhY3RvclNvdXJjZUFscGhhOwotICAgIGNhc2UgR1BVQmxlbmRGYWN0b3I6OkJs
ZW5kQ29sb3I6Ci0gICAgICAgIHJldHVybiBNVExCbGVuZEZhY3RvckJsZW5kQ29sb3I7Ci0gICAg
Y2FzZSBHUFVCbGVuZEZhY3Rvcjo6T25lTWludXNCbGVuZENvbG9yOgotICAgICAgICByZXR1cm4g
TVRMQmxlbmRGYWN0b3JPbmVNaW51c0JsZW5kQ29sb3I7Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IFZl
Y3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIHN0ZDo6b3B0aW9uYWw8
V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJy
b3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbWF4
aW11bSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgcGVyIHJlbmRlciBwYXNzIGZyb20gR1BV
TGltaXRzLgotICAgIGlmIChjb2xvclN0YXRlcy5zaXplKCkgPiA0KSB7Ci0gICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiVG9vIG1hbnkgR1BVQ29sb3JTdGF0ZURlc2Ny
aXB0b3JzISIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sb3JT
dGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgc3RhdGUgPSBjb2xvclN0YXRlc1tp
XTsKLSAgICAgICAgYXV0byBkZXNjcmlwdG9yID0gcmV0YWluUHRyKFthcnJheSBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6aV0pOwotICAgICAgICBbZGVzY3JpcHRvciBzZXRQaXhlbEZvcm1hdDpz
dGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4
dHVyZUZvcm1hdChzdGF0ZS5mb3JtYXQpKV07Ci0gICAgICAgIFtkZXNjcmlwdG9yIHNldFdyaXRl
TWFzazptdGxDb2xvcldyaXRlTWFza0ZvckdQVUNvbG9yV3JpdGVGbGFncyhzdGF0ZS53cml0ZU1h
c2spXTsKLSAgICAgICAgW2Rlc2NyaXB0b3Igc2V0QmxlbmRpbmdFbmFibGVkOllFU107Ci0gICAg
ICAgIFtkZXNjcmlwdG9yIHNldEFscGhhQmxlbmRPcGVyYXRpb246bXRsQmxlbmRPcGVyYXRpb25G
b3JHUFVCbGVuZE9wZXJhdGlvbihzdGF0ZS5hbHBoYUJsZW5kLm9wZXJhdGlvbildOwotICAgICAg
ICBbZGVzY3JpcHRvciBzZXRSZ2JCbGVuZE9wZXJhdGlvbjptdGxCbGVuZE9wZXJhdGlvbkZvckdQ
VUJsZW5kT3BlcmF0aW9uKHN0YXRlLmNvbG9yQmxlbmQub3BlcmF0aW9uKV07Ci0gICAgICAgIFtk
ZXNjcmlwdG9yIHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcjptdGxCbGVuZEZhY3RvckZv
ckdQVUJsZW5kRmFjdG9yKHN0YXRlLmFscGhhQmxlbmQuZHN0RmFjdG9yKV07Ci0gICAgICAgIFtk
ZXNjcmlwdG9yIHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JH
UFVCbGVuZEZhY3RvcihzdGF0ZS5jb2xvckJsZW5kLmRzdEZhY3RvcildOwotICAgICAgICBbZGVz
Y3JpcHRvciBzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yOm10bEJsZW5kRmFjdG9yRm9yR1BVQmxl
bmRGYWN0b3Ioc3RhdGUuYWxwaGFCbGVuZC5zcmNGYWN0b3IpXTsKLSAgICAgICAgW2Rlc2NyaXB0
b3Igc2V0U291cmNlUkdCQmxlbmRGYWN0b3I6bXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZhY3Rv
cihzdGF0ZS5jb2xvckJsZW5kLnNyY0ZhY3RvcildOwotCi0gICAgICAgIGlmICh3aGxzbERlc2Ny
aXB0b3IpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGZvcm1hdCA9IGNvbnZlcnRUZXh0dXJlRm9y
bWF0KHN0YXRlLmZvcm1hdCkpCi0gICAgICAgICAgICAgICAgd2hsc2xEZXNjcmlwdG9yLT5hdHRh
Y2htZW50c1N0YXRlRGVzY3JpcHRvci5hdHRhY2htZW50RGVzY3JpcHRvcnMuYXBwZW5kKHsqZm9y
bWF0LCBpfSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiSW52YWxpZCBHUFVUZXh0dXJlRm9y
bWF0IGZvciBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciAiLCBpLCAiISIpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqdmVydGV4TWV0YWxMaWJy
YXJ5LCBNVExMaWJyYXJ5ICpmcmFnbWVudE1ldGFsTGlicmFyeSwgTVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBTdHJpbmcmIHZlcnRleEVudHJ5UG9pbnRO
YW1lLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50RW50cnlQb2ludE5hbWUsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKLXsKLSAgICB7Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgICAgIC8vIE1ldGFsIHJlcXVpcmVzIGEgdmVydGV4IHNoYWRlciBpbiBhbGwg
cmVuZGVyIHBpcGVsaW5lcy4KLSAgICAgICAgaWYgKCF2ZXJ0ZXhNZXRhbExpYnJhcnkpIHsKLSAg
ICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiTVRMTGlicmFyeSBm
b3IgdmVydGV4IHN0YWdlIGRvZXMgbm90IGV4aXN0ISIpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBmdW5jdGlvbiA9IGFkb3B0TlMoW3ZlcnRl
eE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnZlcnRleEVudHJ5UG9pbnROYW1lXSk7
Ci0gICAgICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVy
YXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJDYW5ub3QgY3JlYXRlIHZlcnRleCBNVExGdW5j
dGlvbiAnIiwgdmVydGV4RW50cnlQb2ludE5hbWUsICInISIpKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1
bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKLQotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgfQotCi0gICAgewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgICAgICAvLyBIb3dldmVyLCBmcmFnbWVudCBzaGFkZXJzIGFyZSBvcHRpb25hbC4KLSAg
ICAgICAgaWYgKCFmcmFnbWVudE1ldGFsTGlicmFyeSB8fCBmcmFnbWVudEVudHJ5UG9pbnROYW1l
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgYXV0byBmdW5j
dGlvbiA9IGFkb3B0TlMoW2ZyYWdtZW50TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6
ZnJhZ21lbnRFbnRyeVBvaW50TmFtZV0pOwotCi0gICAgICAgIGlmICghZnVuY3Rpb24pIHsKLSAg
ICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJD
YW5ub3QgY3JlYXRlIGZyYWdtZW50IE1UTEZ1bmN0aW9uICciLCBmcmFnbWVudEVudHJ5UG9pbnRO
YW1lLCAiJyEiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICBbbXRsRGVzY3JpcHRvciBzZXRGcmFnbWVudEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgdHJ5U2V0RnVu
Y3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgdmVydGV4U3RhZ2Us
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYgZnJh
Z21lbnRTdGFnZSwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIE1UTFJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29w
ZXMpCi17Ci0gICAgUmV0YWluUHRyPE1UTExpYnJhcnk+IHZlcnRleExpYnJhcnksIGZyYWdtZW50
TGlicmFyeTsKLSAgICBTdHJpbmcgdmVydGV4RW50cnlQb2ludCwgZnJhZ21lbnRFbnRyeVBvaW50
OwotCi0gICAgaWYgKHdobHNsRGVzY3JpcHRvcikgewotICAgICAgICBBU1NFUlQodmVydGV4U3Rh
Z2UubW9kdWxlLT53aGxzbE1vZHVsZSgpKTsKLSAgICAgICAgQVNTRVJUKCFmcmFnbWVudFN0YWdl
IHx8IGZyYWdtZW50U3RhZ2UtPm1vZHVsZS0+d2hsc2xNb2R1bGUoKSk7Ci0KLSAgICAgICAgd2hs
c2xEZXNjcmlwdG9yLT52ZXJ0ZXhFbnRyeVBvaW50TmFtZSA9IHZlcnRleFN0YWdlLmVudHJ5UG9p
bnQ7Ci0gICAgICAgIGlmIChmcmFnbWVudFN0YWdlKQotICAgICAgICAgICAgd2hsc2xEZXNjcmlw
dG9yLT5mcmFnbWVudEVudHJ5UG9pbnROYW1lID0gZnJhZ21lbnRTdGFnZS0+ZW50cnlQb2ludDsK
LQotICAgICAgICBhdXRvIHdobHNsQ29tcGlsZVJlc3VsdCA9IFdITFNMOjpwcmVwYXJlKCp2ZXJ0
ZXhTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCksIGZyYWdtZW50U3RhZ2UgPyBmcmFnbWVudFN0
YWdlLT5tb2R1bGUtPndobHNsTW9kdWxlKCkgOiBudWxscHRyLCAqd2hsc2xEZXNjcmlwdG9yKTsK
LSAgICAgICAgaWYgKCF3aGxzbENvbXBpbGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExTTCBjb21waWxlIGVycm9y
OiAiLCB3aGxzbENvbXBpbGVSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0KLSAgICAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIE1vbm90b25pY1RpbWUgc3Rh
cnRUaW1lOwotICAgICAgICBpZiAoV0hMU0w6OmR1bXBNZXRhbENvbXBpbGVUaW1lcykKLSAgICAg
ICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly93ZWJraXQub3JnL2IvMjAwNDc0IEFkZCBkaXJlY3QgU3RyaW5nQnVpbGRlciAt
PiBOU1N0cmluZyBjb252ZXJzaW9uIHRvIGF2b2lkIGV4dHJhIGNvcHkgaW50byBhIFdURjo6U3Ry
aW5nCi0gICAgICAgIHZlcnRleExpYnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZp
Y2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTp3aGxzbENvbXBpbGVSZXN1bHQtPm1ldGFsU291cmNl
LnRvU3RyaW5nKCkgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgICAgIGlmIChXSExT
TDo6ZHVtcE1ldGFsQ29tcGlsZVRpbWVzKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJNZXRhbCBj
b21waWxlIHRpbWVzOiAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUpLm1pbGxp
c2Vjb25kcygpLCAiIG1zIik7Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgICAgICBpZiAoIXZlcnRleExpYnJhcnkgJiYgZXJyb3IpIHsKLSAgICAgICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5V
VEY4U3RyaW5nKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBOU0xvZyhAIiVAIiwgZXJy
b3IpOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQodmVydGV4TGlicmFyeSk7
Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxsIHZhcmlhYmxlcywgdGhlcmUgc2hvdWxkIGJlIG5v
IHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWVycm9yKSBoZXJlLgot
Ci0gICAgICAgIGZyYWdtZW50TGlicmFyeSA9IHZlcnRleExpYnJhcnk7Ci0gICAgICAgIHZlcnRl
eEVudHJ5UG9pbnQgPSB3aGxzbENvbXBpbGVSZXN1bHQtPm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50
TmFtZS50b1N0cmluZygpOwotICAgICAgICBpZiAoZnJhZ21lbnRTdGFnZSkKLSAgICAgICAgICAg
IGZyYWdtZW50RW50cnlQb2ludCA9IHdobHNsQ29tcGlsZVJlc3VsdC0+bWFuZ2xlZEZyYWdtZW50
RW50cnlQb2ludE5hbWUudG9TdHJpbmcoKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2ZXJ0ZXhM
aWJyYXJ5ID0gdmVydGV4U3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotICAg
ICAgICB2ZXJ0ZXhFbnRyeVBvaW50ID0gdmVydGV4U3RhZ2UuZW50cnlQb2ludDsKLSAgICAgICAg
aWYgKGZyYWdtZW50U3RhZ2UpIHsKLSAgICAgICAgICAgIGZyYWdtZW50TGlicmFyeSA9IGZyYWdt
ZW50U3RhZ2UtPm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKLSAgICAgICAgICAgIGZy
YWdtZW50RW50cnlQb2ludCA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gdHJ5U2V0TWV0YWxGdW5jdGlvbnModmVydGV4TGlicmFyeS5n
ZXQoKSwgZnJhZ21lbnRMaWJyYXJ5LmdldCgpLCBtdGxEZXNjcmlwdG9yLCB2ZXJ0ZXhFbnRyeVBv
aW50LCBmcmFnbWVudEVudHJ5UG9pbnQsIGVycm9yU2NvcGVzKTsKLX0KLQotc3RhdGljIFJldGFp
blB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBj
b25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewot
ICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIG10bERlc2NyaXB0b3Ig
PSBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAg
ICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjcmVhdGluZyBNVExE
ZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBE
ZXRlcm1pbmUgaWYgc2hhZGVyIHNvdXJjZSBpcyBpbiBXSExTTCBvciBNU0wuCi0gICAgY29uc3Qg
YXV0byYgdmVydGV4U3RhZ2UgPSBkZXNjcmlwdG9yLnZlcnRleFN0YWdlOwotICAgIGNvbnN0IGF1
dG8mIGZyYWdtZW50U3RhZ2UgPSBkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2U7Ci0KLSAgICBpZiAo
ZnJhZ21lbnRTdGFnZSAmJiBzdGF0aWNfY2FzdDxib29sPih2ZXJ0ZXhTdGFnZS5tb2R1bGUtPndo
bHNsTW9kdWxlKCkpICE9IHN0YXRpY19jYXN0PGJvb2w+KGZyYWdtZW50U3RhZ2UtPm1vZHVsZS0+
d2hsc2xNb2R1bGUoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGJvb2wgaXNXaGxz
bCA9IHZlcnRleFN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKTsKLQotICAgIC8vIFNldCBkYXRh
IGZvciB0aGUgTWV0YWwgcGlwZWxpbmUgZGVzY3JpcHRvciAoYW5kIFdITFNMJ3MsIGlmIG5lZWRl
ZCkuCi0gICAgc3RkOjpvcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB3
aGxzbERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hsc2wpCi0gICAgICAgIHdobHNsRGVzY3JpcHRv
ciA9IFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKLQotICAgIGlmICghdHJ5U2V0
VmVydGV4SW5wdXQoZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCwgbXRsRGVzY3JpcHRvci5nZXQoKSwg
d2hsc2xEZXNjcmlwdG9yLCBlcnJvclNjb3BlcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaWYgKCF0cnlTZXRDb2xvclN0YXRlcyhkZXNjcmlwdG9yLmNvbG9yU3RhdGVzLCBtdGxE
ZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHMsIHdobHNsRGVzY3JpcHRvciwgZXJyb3JT
Y29wZXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChkZXNjcmlwdG9yLmxh
eW91dCAmJiB3aGxzbERlc2NyaXB0b3IpIHsKLSAgICAgICAgaWYgKGF1dG8gbGF5b3V0ID0gY29u
dmVydExheW91dCgqZGVzY3JpcHRvci5sYXlvdXQpKQotICAgICAgICAgICAgd2hsc2xEZXNjcmlw
dG9yLT5sYXlvdXQgPSBXVEZNb3ZlKCpsYXlvdXQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY29udmVydGluZyBH
UFVQaXBlbGluZUxheW91dCEiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKCF0cnlTZXRGdW5jdGlvbnModmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIGRldmljZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgd2hsc2xEZXNjcmlwdG9yLCBl
cnJvclNjb3BlcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIG10bERl
c2NyaXB0b3I7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4g
dHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkg
ewotICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkludmFsaWQgR1BV
RGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIG10
bERlc2NyaXB0b3IgPSBjb252ZXJ0UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGRlc2NyaXB0b3Is
IGRldmljZSwgZXJyb3JTY29wZXMpOwotICAgIGlmICghbXRsRGVzY3JpcHRvcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4g
cGlwZWxpbmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwotICAgIHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0
b3IuZ2V0KCkgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFwaXBlbGluZSkKLSAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
LlVURjhTdHJpbmcpOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0
dXJuIHBpcGVsaW5lOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJlbmRlclBp
cGVsaW5lOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2Nv
cGVzKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgZXJy
b3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTERlcHRoU3Rl
bmNpbFN0YXRlPiBkZXB0aFN0ZW5jaWw7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5j
aWxTdGF0ZSAmJiAhKGRlcHRoU3RlbmNpbCA9IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRl
KCpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbFN0YXRlLCBkZXZpY2UsIGVycm9yU2NvcGVzKSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzODcgZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IgaXNuJ3QgaW1wbGVtZW50ZWQgeWV0IGZvciBXSExTTCBjb21waWxlci4KLQotICAgIGF1
dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGRldmljZSwgZGVz
Y3JpcHRvciwgZXJyb3JTY29wZXMpOwotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVSZW5kZXJQaXBlbGluZShX
VEZNb3ZlKGRlcHRoU3RlbmNpbCksIFdURk1vdmUocGlwZWxpbmUpLCBkZXNjcmlwdG9yLnByaW1p
dGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLnZlcnRleElucHV0LmluZGV4Rm9ybWF0LCBkZXNjcmlw
dG9yLmxheW91dCwgZGVzY3JpcHRvcikpOwotfQotCi1HUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVu
ZGVyUGlwZWxpbmUoUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiYmIGRlcHRoU3RlbmNp
bCwgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+JiYgcGlwZWxpbmUsIEdQVVByaW1p
dGl2ZVRvcG9sb2d5IHRvcG9sb2d5LCBzdGQ6Om9wdGlvbmFsPEdQVUluZGV4Rm9ybWF0PiBmb3Jt
YXQsIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mIGxheW91dCwgY29uc3QgR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgcmVuZGVyRGVzY3JpcHRvckJhc2UpCi0gICAgOiBH
UFVQaXBlbGluZSgpCi0gICAgLCBtX2RlcHRoU3RlbmNpbFN0YXRlKFdURk1vdmUoZGVwdGhTdGVu
Y2lsKSkKLSAgICAsIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkK
LSAgICAsIG1fcHJpbWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCi0gICAgLCBtX2luZGV4Rm9ybWF0
KGZvcm1hdCkKLSAgICAsIG1fbGF5b3V0KGxheW91dCkKLSAgICAsIG1fcmVuZGVyRGVzY3JpcHRv
ckJhc2UocmVuZGVyRGVzY3JpcHRvckJhc2UpCi17Ci19Ci0KLUdQVVJlbmRlclBpcGVsaW5lOjp+
R1BVUmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgR1BVUmVuZGVyUGlwZWxpbmU6
OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50U3RhZ2UpCi17Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IobWFrZVJlZlB0cihtX2xheW91dC5nZXQoKSksIFdURk1vdmUo
dmVydGV4U3RhZ2UpLCBXVEZNb3ZlKGZyYWdtZW50U3RhZ2UpLCBtX3JlbmRlckRlc2NyaXB0b3JC
YXNlKTsKLSAgICBhdXRvIGVycm9yU2NvcGVzID0gR1BVRXJyb3JTY29wZXM6OmNyZWF0ZShbXSAo
R1BVRXJyb3ImJikgeyB9KTsKLSAgICBpZiAoYXV0byBwaXBlbGluZSA9IHRyeUNyZWF0ZU10bFJl
bmRlclBpcGVsaW5lU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yLCBlcnJvclNjb3BlcykpIHsKLSAg
ICAgICAgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gV1RGTW92ZShwaXBlbGluZSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTYW1wbGVyTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2Ft
cGxlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWY5NzM1NDViZGQ3
OGM2OGNmMjgzMDhkYmM2MDJkMDE3NmUwZGFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVTYW1wbGVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVU2FtcGxlci5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVTYW1wbGVyRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNVExTYW1wbGVy
QWRkcmVzc01vZGUgbXRsQWRkcmVzc01vZGVGb3JBZGRyZXNzTW9kZShHUFVBZGRyZXNzTW9kZSBt
b2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR1BVQWRkcmVzc01vZGU6OkNs
YW1wVG9FZGdlOgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0Vk
Z2U7Ci0gICAgY2FzZSBHUFVBZGRyZXNzTW9kZTo6UmVwZWF0OgotICAgICAgICByZXR1cm4gTVRM
U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0OwotICAgIGNhc2UgR1BVQWRkcmVzc01vZGU6Ok1pcnJv
clJlcGVhdDoKLSAgICAgICAgcmV0dXJuIE1UTFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvclJlcGVh
dDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIE1UTFNh
bXBsZXJNaW5NYWdGaWx0ZXIgbXRsTWluTWFnRmlsdGVyRm9yRmlsdGVyTW9kZShHUFVGaWx0ZXJN
b2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2Rl
OjpOZWFyZXN0OgotICAgICAgICByZXR1cm4gTVRMU2FtcGxlck1pbk1hZ0ZpbHRlck5lYXJlc3Q7
Ci0gICAgY2FzZSBHUFVGaWx0ZXJNb2RlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVybiBNVExTYW1w
bGVyTWluTWFnRmlsdGVyTGluZWFyOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1zdGF0aWMgTVRMU2FtcGxlck1pcEZpbHRlciBtdGxNaXBGaWx0ZXJGb3JGaWx0ZXJN
b2RlKEdQVUZpbHRlck1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNl
IEdQVUZpbHRlck1vZGU6Ok5lYXJlc3Q6Ci0gICAgICAgIHJldHVybiBNVExTYW1wbGVyTWlwRmls
dGVyTmVhcmVzdDsKLSAgICBjYXNlIEdQVUZpbHRlck1vZGU6OkxpbmVhcjoKLSAgICAgICAgcmV0
dXJuIE1UTFNhbXBsZXJNaXBGaWx0ZXJMaW5lYXI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TVRMU2FtcGxlclN0YXRlPiB0cnlDcmVh
dGVNdGxTYW1wbGVyU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVNhbXBs
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNhbXBsZXI6OnRyeUNyZWF0ZSgpOiBJ
bnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgUmV0YWluUHRyPE1UTFNhbXBsZXJEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMo
W01UTFNhbXBsZXJEZXNjcmlwdG9yIG5ld10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLQotICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BV
U2FtcGxlcjo6dHJ5Q3JlYXRlKCk6IEVycm9yIGNyZWF0aW5nIE1UTFNhbXBsZXJEZXNjcmlwdG9y
ISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TVRM
U2FtcGxlclN0YXRlPiBzYW1wbGVyOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgW210bERlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOm10bEFkZHJlc3NNb2RlRm9yQWRk
cmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVUpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBz
ZXRTQWRkcmVzc01vZGU6bXRsQWRkcmVzc01vZGVGb3JBZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFk
ZHJlc3NNb2RlVildOwotICAgIFttdGxEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTptdGxBZGRy
ZXNzTW9kZUZvckFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVXKV07Ci0gICAgW210
bERlc2NyaXB0b3Igc2V0TWluRmlsdGVyOm10bE1pbk1hZ0ZpbHRlckZvckZpbHRlck1vZGUoZGVz
Y3JpcHRvci5taW5GaWx0ZXIpXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6bXRs
TWluTWFnRmlsdGVyRm9yRmlsdGVyTW9kZShkZXNjcmlwdG9yLm1hZ0ZpbHRlcildOwotICAgIFtt
dGxEZXNjcmlwdG9yIHNldE1pcEZpbHRlcjptdGxNaXBGaWx0ZXJGb3JGaWx0ZXJNb2RlKGRlc2Ny
aXB0b3IubWlwbWFwRmlsdGVyKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TG9kTWluQ2xhbXA6
ZGVzY3JpcHRvci5sb2RNaW5DbGFtcF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TG9kTWF4Q2xh
bXA6ZGVzY3JpcHRvci5sb2RNYXhDbGFtcF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0TWF4QW5p
c290cm9weTpkZXNjcmlwdG9yLm1heEFuaXNvdHJvcHldOwotICAgIFttdGxEZXNjcmlwdG9yIHNl
dENvbXBhcmVGdW5jdGlvbjpzdGF0aWNfY2FzdDxNVExDb21wYXJlRnVuY3Rpb24+KHBsYXRmb3Jt
Q29tcGFyZUZ1bmN0aW9uRm9yR1BVQ29tcGFyZUZ1bmN0aW9uKGRlc2NyaXB0b3IuY29tcGFyZUZ1
bmN0aW9uKSldOwotCi0gICAgW210bERlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVy
czpZRVNdOwotCi0gICAgc2FtcGxlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgp
IG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAoIXNhbXBsZXIpCi0gICAgICAg
IExPRyhXZWJHUFUsICJHUFVTYW1wbGVyOjp0cnlDcmVhdGUoKTogRXJyb3IgY3JlYXRpbmcgTVRM
U2FtcGxlclN0YXRlISIpOwotCi0gICAgcmV0dXJuIHNhbXBsZXI7Ci19Ci0KLVJlZlB0cjxHUFVT
YW1wbGVyPiBHUFVTYW1wbGVyOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNv
bnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIGF1dG8gc2FtcGxl
ciA9IHRyeUNyZWF0ZU10bFNhbXBsZXJTdGF0ZShkZXZpY2UsIGRlc2NyaXB0b3IpOwotICAgIGlm
ICghc2FtcGxlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEdQVVNhbXBsZXIoV1RGTW92ZShzYW1wbGVyKSkpOwotfQotCi1HUFVTYW1wbGVyOjpH
UFVTYW1wbGVyKFJldGFpblB0cjxNVExTYW1wbGVyU3RhdGU+JiYgc2FtcGxlcikKLSAgICA6IG1f
cGxhdGZvcm1TYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVy
TW9kdWxlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjQ0YzM1YjBi
MDA5ZDFkOWY2MTA5MWEzZmZiZjdmZDYzYjkwYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVU2hhZGVy
TW9kdWxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIK
LSNpbXBvcnQgIkdQVUVycm9yU2NvcGVzLmgiCi0jaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKCk6IEludmFsaWQgR1BV
RGV2aWNlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KEdQVURldmljZTo6dXNlV0hMU0wpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVU2hh
ZGVyTW9kdWxlKFdITFNMOjpjcmVhdGVTaGFkZXJNb2R1bGUoZGVzY3JpcHRvci5jb2RlKSkpOwot
Ci0gICAgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtb2R1bGU7Ci0KLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxd
OwotICAgIG1vZHVsZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0xpYnJh
cnlXaXRoU291cmNlOmRlc2NyaXB0b3IuY29kZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsK
LSAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgTE9HKFdlYkdQVSwgIlNoYWRlciBjb21waWxhdGlv
biBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gbW9kdWxlID8g
YWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKSA6IG51bGxwdHI7
Ci19Ci0KLUdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFBsYXRmb3JtU2hhZGVyTW9k
dWxlU21hcnRQdHImJiBtb2R1bGUpCi0gICAgOiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlKFdURk1v
dmUobW9kdWxlKSkKLXsKLX0KLQotR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoVW5p
cXVlUmVmPFdITFNMOjpTaGFkZXJNb2R1bGU+JiYgd2hsc2xNb2R1bGUpCi0gICAgOiBtX3dobHNs
TW9kdWxlKHdobHNsTW9kdWxlLm1vdmVUb1VuaXF1ZVB0cigpKQotewotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmNjODkzNTMyMGEwNDkyZDJmY2Q1MzQ5M2E2MmEwMmM0
MDE5ZmM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZUZvcm1hdC5oIgotI2ltcG9ydCAiR1BVVXRpbHMu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldlYkdQVUxheWVyLmgiCi0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiB0cnlHZXRTdXBwb3J0ZWRQaXhl
bEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBhdXRvIG10bEZvcm1hdCA9
IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVU
ZXh0dXJlRm9ybWF0KGZvcm1hdCkpOwotCi0gICAgc3dpdGNoIChtdGxGb3JtYXQpIHsKLSAgICBj
YXNlIE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybToKLSAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkdS
QThVbm9ybV9zUkdCOgotICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdDoKLSAgICAg
ICAgcmV0dXJuIG10bEZvcm1hdDsKLSAgICBkZWZhdWx0OiB7Ci0gICAgICAgIExPRyhXZWJHUFUs
ICJHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgpOiBVbnN1cHBvcnRlZCBNVExQaXhlbEZvcm1hdCEi
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBzZXRMYXllclNoYXBlKFdlYkdQVUxheWVyICpsYXllciwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQotewotICAgIFtsYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwg
aGVpZ2h0KV07Ci0gICAgW2xheWVyIHNldERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBo
ZWlnaHQpXTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxXZWJHUFVMYXllcj4gdHJ5Q3JlYXRlV2Vi
R1BVTGF5ZXIoTVRMRGV2aWNlICpkZXZpY2UsIE1UTFBpeGVsRm9ybWF0IGZvcm1hdCwgT3B0aW9u
U2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQotewotCi0gICAgUmV0YWluUHRyPFdl
YkdQVUxheWVyPiBsYXllcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IGxheWVyID0gYWRvcHROUyhbV2ViR1BVTGF5ZXIgbmV3XSk7Ci0KLSAgICBbbGF5ZXIgc2V0TmFt
ZTpAIldlYiBHUFUgTGF5ZXIiXTsKLSAgICBbbGF5ZXIgc2V0T3BhcXVlOjBdOwotCi0gICAgW2xh
eWVyIHNldERldmljZTpkZXZpY2VdOwotICAgIFtsYXllciBzZXRGcmFtZWJ1ZmZlck9ubHk6KHVz
YWdlID09IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpXTsKLSAgICBb
bGF5ZXIgc2V0UGl4ZWxGb3JtYXQ6Zm9ybWF0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICBpZiAoIWxheWVyKQotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWlu
Ojp0cnlDcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBDQU1ldGFsTGF5ZXIhIik7Ci0KLSAgICBy
ZXR1cm4gbGF5ZXI7Ci19Ci0KLVJlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBDaGFpbjo6dHJ5
Q3JlYXRlKGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKLXsKLSAgICBpZiAoIWRlc2NyaXB0b3IuZGV2aWNlLT5wbGF0Zm9ybURl
dmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgp
OiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgYXV0byBwaXhlbEZvcm1hdCA9IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9ybWF0KGRlc2Ny
aXB0b3IuZm9ybWF0KTsKLSAgICBpZiAoIXBpeGVsRm9ybWF0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGF1dG8gdXNhZ2VPcHRpb25zID0gT3B0aW9uU2V0PEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M+Ojpmcm9tUmF3KGRlc2NyaXB0b3IudXNhZ2UpOwotICAgIGlmICghdXNhZ2VPcHRp
b25zLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnRyeUNyZWF0ZSgpOiBTd2FwIGNo
YWluIHVzYWdlIG11c3QgaW5jbHVkZSBPVVRQVVRfQVRUQUNITUVOVCEiKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBsYXllciA9IHRyeUNyZWF0ZVdlYkdQVUxh
eWVyKGRlc2NyaXB0b3IuZGV2aWNlLT5wbGF0Zm9ybURldmljZSgpLCAqcGl4ZWxGb3JtYXQsIHVz
YWdlT3B0aW9ucyk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBzZXRMYXllclNoYXBlKGxheWVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGF1
dG8gc3dhcENoYWluID0gYWRvcHRSZWYobmV3IEdQVVN3YXBDaGFpbihXVEZNb3ZlKGxheWVyKSwg
dXNhZ2VPcHRpb25zKSk7Ci0gICAgZGVzY3JpcHRvci5kZXZpY2UtPnNldFN3YXBDaGFpbihzd2Fw
Q2hhaW4uY29weVJlZigpKTsKLSAgICByZXR1cm4gc3dhcENoYWluOwotfQotCi1HUFVTd2FwQ2hh
aW46OkdQVVN3YXBDaGFpbihSZXRhaW5QdHI8V2ViR1BVTGF5ZXI+JiYgcGxhdGZvcm1MYXllciwg
T3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlT3B0aW9ucykKLSAgICA6IG1f
cGxhdGZvcm1Td2FwTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKLSAgICAsIG1fdXNhZ2Uo
dXNhZ2VPcHRpb25zKQotewotICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFN3YXBDaGFpbjp0
aGlzXTsKLX0KLQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVVN3YXBDaGFpbjo6dHJ5R2V0Q3VycmVu
dFRleHR1cmUoKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiBtdGxUZXh0dXJlOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgaWYgKCFtX2N1cnJlbnREcmF3YWJs
ZSkKLSAgICAgICAgbV9jdXJyZW50RHJhd2FibGUgPSByZXRhaW5QdHIoW21fcGxhdGZvcm1Td2Fw
TGF5ZXIgbmV4dERyYXdhYmxlXSk7Ci0gICAgbXRsVGV4dHVyZSA9IFttX2N1cnJlbnREcmF3YWJs
ZSB0ZXh0dXJlXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGlmICgh
bXRsVGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpnZXRDdXJy
ZW50VGV4dHVyZSgpOiBVbmFibGUgdG8gZ2V0IGN1cnJlbnQgTVRMVGV4dHVyZSEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0
ZShXVEZNb3ZlKG10bFRleHR1cmUpLCBtX3VzYWdlKTsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46
OnByZXNlbnQoKQotewotICAgIGlmICghbV9jdXJyZW50RHJhd2FibGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFttX2N1cnJlbnREcmF3YWJsZSBwcmVzZW50XTsKLSAgICBtX2N1cnJlbnREcmF3
YWJsZSA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpyZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCkKLXsKLSAgICBzZXRMYXllclNoYXBlKG1fcGxhdGZvcm1Td2FwTGF5ZXIu
Z2V0KCksIHdpZHRoLCBoZWlnaHQpOwotfQotCi1QbGF0Zm9ybUxheWVyKiBHUFVTd2FwQ2hhaW46
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtU3dhcExheWVy
LmdldCgpOwotfQotCi0jaWYgVVNFKE1FVEFMKQotUmV0YWluUHRyPENBTWV0YWxEcmF3YWJsZT4g
R1BVU3dhcENoYWluOjp0YWtlRHJhd2FibGUoKQotewotICAgIFJldGFpblB0cjxDQU1ldGFsRHJh
d2FibGU+IHB0cjsKLSAgICBwdHIuc3dhcChtX2N1cnJlbnREcmF3YWJsZSk7Ci0gICAgcmV0dXJu
IHB0cjsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4MjAwZWJiMDU5MzQ1M2NkYzg1YTZjNzAyOWM1MzFhYTZjMGJlNGQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDIyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJHUFVUZXh0dXJlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0
ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0jaW1wb3J0
ICJHUFVVdGlscy5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIE1UTFRleHR1cmVUeXBlIG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVy
ZURlc2NyaXB0b3IoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0g
ICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAgIGNhc2UgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzFkOgotICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPT0g
MSkgPyBNVExUZXh0dXJlVHlwZTFEIDogTVRMVGV4dHVyZVR5cGUxREFycmF5OwotICAgIGNhc2Ug
R1BVVGV4dHVyZURpbWVuc2lvbjo6XzJkOiB7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUu
ZGVwdGggPT0gMSkKLSAgICAgICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCA9
PSAxKSA/IE1UTFRleHR1cmVUeXBlMkQgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7Ci0g
ICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTJEQXJyYXk7IC8vIE1UTFRleHR1cmVUeXBlMkRN
dWx0aXNhbXBsZUFycmF5IGlzIHVuYXZhaWxhYmxlIG9uIGlPUy4KLSAgICB9Ci0gICAgY2FzZSBH
UFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6Ci0gICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTNE
OwotICAgIH0KLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMVGV4dHVyZVVzYWdlPiBtdGxU
ZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyhPcHRpb25TZXQ8R1BVVGV4dHVyZVVz
YWdlOjpGbGFncz4gZmxhZ3MsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKLXsKLSNp
ZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgot
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6Q29w
eVNvdXJjZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxlZCB9KSAmJiAoZmxhZ3MgJiBH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IFRleHR1cmUgY2Fubm90IGhhdmUgYm90aCBTVE9SQUdFIGFuZCBhIHJlYWQtb25seSB1c2Fn
ZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0K
LQotICAgIE1UTFRleHR1cmVVc2FnZSByZXN1bHQgPSAwOwotICAgIGlmIChmbGFncy5jb250YWlu
cyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkKLSAgICAgICAgcmVz
dWx0IHw9IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlLCBHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzOjpTYW1wbGVkIH0pKQotICAgICAgICByZXN1bHQgfD0gTVRMVGV4dHVyZVVzYWdlU2hh
ZGVyUmVhZDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6
U3RvcmFnZSkpCi0gICAgICAgIHJlc3VsdCB8PSBNVExUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZTsK
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQotc3RhdGljIE1U
TFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChNVExQ
aXhlbEZvcm1hdCBmb3JtYXQsIHVuc2lnbmVkIHNhbXBsZXMpCi17Ci0gICAgLy8gRGVwdGgsIFN0
ZW5jaWwsIERlcHRoU3RlbmNpbCwgYW5kIE11bHRpc2FtcGxlIHRleHR1cmVzIG11c3QgYmUgYWxs
b2NhdGVkIHdpdGggdGhlIE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZSByZXNvdXJjZSBvcHRpb24uCi0g
ICAgaWYgKGZvcm1hdCA9PSBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsOCB8fCBz
YW1wbGVzID4gMSkKLSAgICAgICAgcmV0dXJuIE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZTsKLQotICAg
IHJldHVybiBNVExTdG9yYWdlTW9kZVNoYXJlZDsKLX0KLSNlbmRpZgotCi1zdGF0aWMgUmV0YWlu
UHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihj
b25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCi17
Ci0gICAgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRv
cHROUyhbTVRMVGV4dHVyZURlc2NyaXB0b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIG5ldyBNVExUZXh0dXJlRGVzY3JpcHRvciEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB1bnNpZ25l
ZCB3aWR0aCA9IGRlc2NyaXB0b3Iuc2l6ZS53aWR0aDsKLSAgICB1bnNpZ25lZCBoZWlnaHQgPSAx
OwotICAgIHVuc2lnbmVkIGRlcHRoID0gMTsKLSAgICB1bnNpZ25lZCBhcnJheUxlbmd0aCA9IDE7
Ci0gICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewotICAgIGNhc2UgR1BVVGV4dHVy
ZURpbWVuc2lvbjo6XzFkOgotICAgICAgICBhcnJheUxlbmd0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5o
ZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJk
OgotICAgICAgICBoZWlnaHQgPSBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0OwotICAgICAgICBhcnJh
eUxlbmd0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6Ci0gICAgICAgIGhlaWdodCA9IGRlc2NyaXB0b3Iu
c2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGRlcHRoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIHBpeGVsRm9ybWF0ID0gc3RhdGljX2Nhc3Q8
TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQo
ZGVzY3JpcHRvci5mb3JtYXQpKTsKLQotICAgIGF1dG8gbXRsVXNhZ2UgPSBtdGxUZXh0dXJlVXNh
Z2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyh1c2FnZSwgZnVuY3Rpb25OYW1lKTsKLSAgICBpZiAo
IW10bFVzYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBhdXRvIHN0b3JhZ2VNb2RlID0gTVRMU3RvcmFnZU1vZGVQcml2YXRlOwotI2Vsc2UKLSAg
ICBhdXRvIHN0b3JhZ2VNb2RlID0gc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNv
dW50KHBpeGVsRm9ybWF0LCBkZXNjcmlwdG9yLnNhbXBsZUNvdW50KTsKLSNlbmRpZgotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBbbXRsRGVzY3JpcHRvciBzZXRXaWR0
aDp3aWR0aF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0SGVpZ2h0OmhlaWdodF07Ci0gICAgW210
bERlc2NyaXB0b3Igc2V0RGVwdGg6ZGVwdGhdOwotICAgIFttdGxEZXNjcmlwdG9yIHNldEFycmF5
TGVuZ3RoOmFycmF5TGVuZ3RoXTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRNaXBtYXBMZXZlbENv
dW50OmRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0U2Ft
cGxlQ291bnQ6ZGVzY3JpcHRvci5zYW1wbGVDb3VudF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0
VGV4dHVyZVR5cGU6bXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcihkZXNjcmlw
dG9yKV07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6cGl4ZWxGb3JtYXRdOwot
ICAgIFttdGxEZXNjcmlwdG9yIHNldFVzYWdlOiptdGxVc2FnZV07Ci0KLSAgICBbbXRsRGVzY3Jp
cHRvciBzZXRTdG9yYWdlTW9kZTpzdG9yYWdlTW9kZV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0KLSAgICByZXR1cm4gbXRsRGVzY3JpcHRvcjsKLX0KLQotUmVmUHRyPEdQVVRl
eHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29u
c3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJv
clNjb3BlcykKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVVGV4
dHVyZTo6dHJ5Q3JlYXRlKCkiOwotCi0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkg
ewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVRGV2aWNlISIsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghW2Rldmlj
ZS5wbGF0Zm9ybURldmljZSgpIHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50OmRlc2NyaXB0b3Iu
c2FtcGxlQ291bnRdKSB7Ci0gICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJv
cihtYWtlU3RyaW5nKCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCAiLCBkZXNjcmlwdG9yLnNhbXBs
ZUNvdW50LCAiIHNhbXBsZSBjb3VudC4iKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgYXV0byB1c2FnZSA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6ZnJv
bVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKLSAgICBhdXRvIG10bERlc2NyaXB0b3IgPSB0cnlDcmVh
dGVNdGxUZXh0dXJlRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIGRlc2NyaXB0b3IsIHVzYWdlKTsK
LSAgICBpZiAoIW10bERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
UmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIG10bFRleHR1cmUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKSBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOwot
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCFtdGxUZXh0dXJlKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0ZSBNVExUZXh0dXJlISIs
IGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKG10bFRleHR1cmUpLCB1c2FnZSkp
OwotfQotCi1SZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFJldGFpblB0cjxNVExU
ZXh0dXJlPiYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2Fn
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVy
ZSksIHVzYWdlKSk7Ci19Ci0KLUdQVVRleHR1cmU6OkdQVVRleHR1cmUoUmV0YWluUHRyPE1UTFRl
eHR1cmU+JiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdl
KQotICAgIDogbV9wbGF0Zm9ybVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLSAgICAsIG1fdXNh
Z2UodXNhZ2UpCi17Ci0gICAgbV9wbGF0Zm9ybVVzYWdlID0gTVRMUmVzb3VyY2VVc2FnZVJlYWQ7
Ci0gICAgaWYgKGlzU2FtcGxlZCgpKQotICAgICAgICBtX3BsYXRmb3JtVXNhZ2UgfD0gTVRMUmVz
b3VyY2VVc2FnZVNhbXBsZTsKLSAgICBlbHNlIGlmIChpc1N0b3JhZ2UoKSkKLSAgICAgICAgbV9w
bGF0Zm9ybVVzYWdlIHw9IE1UTFJlc291cmNlVXNhZ2VXcml0ZTsKLX0KLQotUmVmUHRyPEdQVVRl
eHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCi17Ci0gICAg
UmV0YWluUHRyPE1UTFRleHR1cmU+IHRleHR1cmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLQotICAgIHRleHR1cmUgPSBhZG9wdE5TKFttX3BsYXRmb3JtVGV4dHVyZSBuZXdU
ZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDptX3BsYXRmb3JtVGV4dHVyZS5nZXQoKS5waXhlbEZv
cm1hdF0pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKCF0ZXh0
dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExUZXh0dXJlIHZpZXchIik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUo
V1RGTW92ZSh0ZXh0dXJlKSwgbV91c2FnZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzA4OWY0YTRjNmIyODM0YTlhZTZmYWQ0MDc1NzE2YWU1
ZGM3MDk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiR1BVVXRpbHMuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGxhdGZvcm1U
ZXh0dXJlRm9ybWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BV
VGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNl
IEdQVVRleHR1cmVGb3JtYXQ6OlJnYmE4dW5vcm06Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZv
cm1hdFJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhOHVpbnQ6Ci0g
ICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VWludDsKLSAgICBjYXNlIEdQVVRleHR1
cmVGb3JtYXQ6OkJncmE4dW5vcm06Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdEJHUkE4
VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoK
LSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4OwotICAg
IGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybVNSR0I6Ci0gICAgICAgIHJldHVybiBN
VExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JHQjsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6
OlJnYmExNmZsb2F0OgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdDsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUGxhdGZvcm1Db21wYXJl
RnVuY3Rpb24gcGxhdGZvcm1Db21wYXJlRnVuY3Rpb25Gb3JHUFVDb21wYXJlRnVuY3Rpb24oR1BV
Q29tcGFyZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAgc3dpdGNoIChmdW5jKSB7Ci0gICAgY2FzZSBH
UFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyOgotICAgICAgICByZXR1cm4gTVRMQ29tcGFyZUZ1bmN0
aW9uTmV2ZXI7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rpb246Okxlc3M6Ci0gICAgICAgIHJl
dHVybiBNVExDb21wYXJlRnVuY3Rpb25MZXNzOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9u
OjpFcXVhbDoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVGdW5jdGlvbkVxdWFsOwotICAgIGNh
c2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzRXF1YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21w
YXJlRnVuY3Rpb25MZXNzRXF1YWw7Ci0gICAgY2FzZSBHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0
ZXI6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25HcmVhdGVyOwotICAgIGNhc2Ug
R1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBhcmVG
dW5jdGlvbk5vdEVxdWFsOwotICAgIGNhc2UgR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyRXF1
YWw6Ci0gICAgICAgIHJldHVybiBNVExDb21wYXJlRnVuY3Rpb25HcmVhdGVyRXF1YWw7Ci0gICAg
Y2FzZSBHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5czoKLSAgICAgICAgcmV0dXJuIE1UTENvbXBh
cmVGdW5jdGlvbkFsd2F5czsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJp
bmRHcm91cEFsbG9jYXRvckRhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2Rhd24vR1BVQmluZEdyb3VwQWxsb2NhdG9yRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdkNmQ1OGQzNWIxNTE3YjdiZWI3ZWUxN2RmOWFhOTZkMGIxYjE3NGEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQmluZEdyb3VwQWxsb2NhdG9yRGF3
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxHUFVCaW5kR3JvdXBBbGxvY2F0b3I+IEdQVUJpbmRHcm91
cEFsbG9jYXRvcjo6Y3JlYXRlKEdQVUVycm9yU2NvcGVzJiBlcnJvcnMpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR1BVQmluZEdyb3VwQWxsb2NhdG9yKGVycm9ycykpOwotfQotCi1HUFVC
aW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYg
ZXJyb3JzKQotICAgIDogbV9lcnJvclNjb3BlcyhtYWtlUmVmKGVycm9ycykpCi17Ci19Ci0KLWJv
b2wgR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpyZWFsbG9jYXRlKFBsYXRmb3JtR1BVQnVmZmVyT2Zm
c2V0IG5ld09mZnNldCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgR1BVQmluZEdy
b3VwQWxsb2NhdG9yOjp0cnlSZXNldCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBEYXduLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91cERhd24uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDVlNmJjZGMxN2Y5ZGVmZTg2NzE3MmE0ODYz
MDVkOGE4YjJhYzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUJpbmRHcm91
cERhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVCaW5kR3JvdXAuaCIKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVCaW5kR3JvdXBBbGxvY2F0b3IuaCIKLSNpbmNsdWRl
ICJHUFVFcnJvclNjb3Blcy5oIgotI2luY2x1ZGUgPHdlYmdwdS93ZWJncHUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQmluZEdyb3VwPiBHUFVCaW5kR3JvdXA6OnRyeUNy
ZWF0ZShjb25zdCBHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVCaW5kR3Jv
dXBBbGxvY2F0b3ImIGFsbG9jYXRvcikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BV
QmluZEdyb3VwOjpHUFVCaW5kR3JvdXAoR1BVQmluZEdyb3VwQWxsb2NhdG9yOjpBcmd1bWVudEJ1
ZmZlck9mZnNldHMmJiBvZmZzZXRzLCBHUFVCaW5kR3JvdXBBbGxvY2F0b3ImIGFsbG9jYXRvciwg
SGFzaFNldDxSZWY8R1BVQnVmZmVyPj4mJiBidWZmZXJzLCBIYXNoU2V0PFJlZjxHUFVUZXh0dXJl
Pj4mJiB0ZXh0dXJlcykKLSAgICA6IG1fYXJndW1lbnRCdWZmZXJPZmZzZXRzKFdURk1vdmUob2Zm
c2V0cykpCi0gICAgLCBtX2FsbG9jYXRvcihtYWtlUmVmKGFsbG9jYXRvcikpCi0gICAgLCBtX2Jv
dW5kQnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQotICAgICwgbV9ib3VuZFRleHR1cmVzKFdURk1v
dmUodGV4dHVyZXMpKQotewotfQotCi1HUFVCaW5kR3JvdXA6On5HUFVCaW5kR3JvdXAoKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BV
QmluZEdyb3VwTGF5b3V0RGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBMYXlvdXREYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTJlY2NlNGU3MzYxZWMyNjc5ZjhhZjY0ZDU1NzRlNDY3NTI4MTJmZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCaW5kR3JvdXBMYXlvdXREYXduLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVQmluZEdyb3VwTGF5b3V0LmgiCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8d2ViZ3B1L3dlYmdwdS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IEdQ
VUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25z
dCBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHJldHVy
biBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVQnVmZmVyRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvZGF3bi9HUFVCdWZmZXJEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGI4ODJhMjI5MWZkYWU0ODExMGFlNGFlNzgwNmNmODM2YWNkZjc0YS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVCdWZmZXJEYXduLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJHUFVCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJH
UFVCdWZmZXJEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVQnVmZmVyTWFwcGVkT3B0
aW9uIGlzTWFwcGVkLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQ
dHImJiBidWZmZXIsIEdQVURldmljZSYgZGV2aWNlLCBzaXplX3Qgc2l6ZSwgT3B0aW9uU2V0PEdQ
VUJ1ZmZlclVzYWdlOjpGbGFncz4gdXNhZ2UsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBl
ZCkKLSAgICA6IG1fcGxhdGZvcm1CdWZmZXIoV1RGTW92ZShidWZmZXIpKQotICAgICwgbV9kZXZp
Y2UobWFrZVJlZihkZXZpY2UpKQotICAgICwgbV9ieXRlTGVuZ3RoKHNpemUpCi0gICAgLCBtX3Vz
YWdlKHVzYWdlKQotICAgICwgbV9pc01hcHBlZEZyb21DcmVhdGlvbihpc01hcHBlZCA9PSBHUFVC
dWZmZXJNYXBwZWRPcHRpb246OklzTWFwcGVkKQotewotfQotCi1HUFVCdWZmZXI6On5HUFVCdWZm
ZXIoKQotewotICAgIGRlc3Ryb3kobnVsbHB0cik7Ci19Ci0KLWJvb2wgR1BVQnVmZmVyOjppc1Jl
YWRPbmx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotR1BVQnVmZmVyOjpTdGF0
ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3RhdGU6OlVubWFwcGVk
OwotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6Om1hcE9uQ3JlYXRpb24oKQotewot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6cmVnaXN0ZXJNYXBwaW5n
Q2FsbGJhY2soTWFwcGluZ0NhbGxiYWNrJiYgY2FsbGJhY2ssIGJvb2wgaXNSZWFkLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpydW5NYXBwaW5n
Q2FsbGJhY2soKQotewotfQotCi1KU0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6OnN0YWdpbmdC
dWZmZXJGb3JSZWFkKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNDOjpBcnJheUJ1
ZmZlciogR1BVQnVmZmVyOjpzdGFnaW5nQnVmZmVyRm9yV3JpdGUoKQotewotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi12b2lkIEdQVUJ1ZmZlcjo6Y29weVN0YWdpbmdCdWZmZXJUb0dQVShHUFVF
cnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjp1bm1hcChH
UFVFcnJvclNjb3BlcyogZXJyb3JTY29wZXMpCi17Ci19Ci0KLXZvaWQgR1BVQnVmZmVyOjpkZXN0
cm95KEdQVUVycm9yU2NvcGVzKiBlcnJvclNjb3BlcykKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbW1hbmRCdWZmZXJEYXduLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVUNvbW1hbmRC
dWZmZXJEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdlNjEzOGYwZDM5
MjE0NGI4NTZiYTYxZmVkM2NjMDU2NTRiZjg1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVDb21tYW5kQnVmZmVyRGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVD
b21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVmZmVyOjp0cnlDcmVh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LUdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVy
U21hcnRQdHImJiBidWZmZXIpCi0gICAgOiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCi17Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1aW50NjRfdCBzcmNPZmZzZXQsIFJlZjxHUFVCdWZm
ZXI+JiYgZHN0LCB1aW50NjRfdCBkc3RPZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci19Ci0KLXZv
aWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShHUFVCdWZmZXJDb3B5Vmll
dyYmIHNyY0J1ZmZlciwgR1BVVGV4dHVyZUNvcHlWaWV3JiYgZHN0VGV4dHVyZSwgY29uc3QgR1BV
RXh0ZW50M0QmIHNpemUpCi17Ci19Ci0KLXZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1
cmVUb0J1ZmZlcihHUFVUZXh0dXJlQ29weVZpZXcmJiBzcmNUZXh0dXJlLCBHUFVCdWZmZXJDb3B5
VmlldyYmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci19Ci0KLXZvaWQg
R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoR1BVVGV4dHVyZUNvcHlWaWV3
JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3QsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXpl
KQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVQ29tcHV0ZVBhc3NFbmNvZGVyRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21wdXRlUGFzc0VuY29kZXJEYXduLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFkODJiY2RjYTg3ZjNkODRmYzAwMDQ3YTcyZmY2YjBj
ZDAyOTQwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVDb21wdXRlUGFzc0Vu
Y29kZXJEYXduLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQ
dHI8R1BVQ29tcHV0ZVBhc3NFbmNvZGVyPiBHUFVDb21wdXRlUGFzc0VuY29kZXI6OnRyeUNyZWF0
ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLUdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVyKFJlZjxH
UFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJTbWFy
dFB0ciYmIGVuY29kZXIpCi0gICAgOiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZNb3Zl
KGJ1ZmZlcikpCi0gICAgLCBtX3BsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKFdURk1vdmUoZW5j
b2RlcikpCi17Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShS
ZWY8Y29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lKQotewotfQotCi12b2lkIEdQ
VUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2godW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5z
aWduZWQgeikKLXsKLX0KLQotY29uc3QgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rlciog
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9kYXduL0dQVUNvbXB1dGVQaXBlbGluZURhd24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0ZVBpcGVsaW5lRGF3bi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYjllYzYzNzQ5NzJiMGMzYTM2YjlmMDI1
YzFiZTlhYWU0ZWVmZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVQ29tcHV0
ZVBpcGVsaW5lRGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxp
bmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZUxheW91
dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+
IEdQVUNvbXB1dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBj
b25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdQVUNvbXB1
dGVQaXBlbGluZTo6fkdQVUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotYm9vbCBHUFVD
b21wdXRlUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgY29tcHV0ZVN0YWdlKQotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9k
YXduL0dQVURldmljZURhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2Rhd24vR1BVRGV2aWNlRGF3bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI5ZDMyODc4MGFlNTlkYmY1NDJhODQxYWEzZWRmNDNmMTNlYmE0NWIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2Rhd24vR1BVRGV2aWNlRGF3bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmUHRyPEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpv
cHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQotewotICAgIHJldHVy
biBudWxscHRyOwotfQotCi12b2lkIEdQVURldmljZTo6cHJld2FybSgpCi17Ci19Ci0KLUdQVURl
dmljZTo6R1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQdHImJiBkZXZpY2UpCi0gICAgOiBt
X3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVBsYXRmb3JtVHlwZXNEYXduLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQbGF0Zm9ybVR5
cGVzRGF3bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWE5OWI0NThiMjk5NWIw
OWRiMTgxOWRmYThkOGY5ZjdiZjU4Yjk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXdu
L0dQVVBsYXRmb3JtVHlwZXNEYXduLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx3ZWJncHUvd2ViZ3B1Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgUGxh
dGZvcm1HUFVCdWZmZXJPZmZzZXQgPSBzdGQ6OnVpbnQ2NF90OwotCi0vLyBEYXduIHR5cGVzCi11
c2luZyBQbGF0Zm9ybUJ1ZmZlciA9IFdHUFVCdWZmZXJJbXBsOwotdXNpbmcgUGxhdGZvcm1Db21t
YW5kQnVmZmVyID0gV0dQVUNvbW1hbmRCdWZmZXJJbXBsOwotdXNpbmcgUGxhdGZvcm1Db21wdXRl
UGFzc0VuY29kZXIgPSBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDsKLXVzaW5nIFBsYXRmb3Jt
Q29tcHV0ZVBpcGVsaW5lID0gV0dQVUNvbXB1dGVQaXBlbGluZUltcGw7Ci11c2luZyBQbGF0Zm9y
bURldmljZSA9IFdHUFVEZXZpY2VJbXBsOwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZSA9IFdHUFVT
dXJmYWNlSW1wbDsKLXVzaW5nIFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgPSBXR1BV
Q29tbWFuZEVuY29kZXJJbXBsOwotdXNpbmcgUGxhdGZvcm1RdWV1ZSA9IFdHUFVRdWV1ZUltcGw7
Ci11c2luZyBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyID0gV0dQVVJlbmRlclBhc3NFbmNvZGVy
SW1wbDsKLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBXR1BVUmVuZGVyUGlwZWxpbmVJ
bXBsOwotdXNpbmcgUGxhdGZvcm1TYW1wbGVyID0gV0dQVVNhbXBsZXJJbXBsOwotdXNpbmcgUGxh
dGZvcm1TaGFkZXJNb2R1bGUgPSBXR1BVU2hhZGVyTW9kdWxlSW1wbDsKLXVzaW5nIFBsYXRmb3Jt
U3dhcExheWVyID0gV0dQVVN3YXBDaGFpbkltcGw7Ci11c2luZyBQbGF0Zm9ybVRleHR1cmUgPSBX
R1BVVGV4dHVyZUltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSGFuZGxlRGVs
ZXRlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBvcGVyYXRvcigpKFQqIGhhbmRsZSkgPSBkZWxldGU7
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybUJ1ZmZlcj4g
ewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybUJ1ZmZlciogaGFuZGxlKQotICAgIHsKLSAg
ICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVCdWZmZXJEZXN0cm95KGhhbmRsZSk7
Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1D
b21tYW5kQnVmZmVyPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtQ29tbWFuZEJ1ZmZl
ciogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVD
b21tYW5kQnVmZmVyUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyPiB7Ci0gICAgdm9p
ZCBvcGVyYXRvcigpKFBsYXRmb3JtQ29tcHV0ZVBhc3NFbmNvZGVyKiBoYW5kbGUpCi0gICAgewot
ICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclJl
bGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVs
ZXRlcjxQbGF0Zm9ybUNvbXB1dGVQaXBlbGluZT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZSogaGFuZGxlKQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkK
LSAgICAgICAgICAgIHdncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQot
fTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1EZXZpY2U+IHsK
LSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1EZXZpY2UqIGhhbmRsZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1RGV2aWNlUmVsZWFzZShoYW5kbGUpOwot
ICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtRHJh
d2FibGU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1EcmF3YWJsZSogaGFuZGxlKQot
ICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVTdXJmYWNlUmVsZWFz
ZShoYW5kbGUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVy
PFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCko
UGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciogaGFuZGxlKQotICAgIHsKLSAgICAgICAg
aWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVDb21tYW5kRW5jb2RlclJlbGVhc2UoaGFuZGxl
KTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVsZXRlcjxQbGF0Zm9y
bVF1ZXVlPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtUXVldWUqIGhhbmRsZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1UXVldWVSZWxlYXNlKGhh
bmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEhhbmRsZURlbGV0ZXI8UGxh
dGZvcm1SZW5kZXJQYXNzRW5jb2Rlcj4gewotICAgIHZvaWQgb3BlcmF0b3IoKShQbGF0Zm9ybVJl
bmRlclBhc3NFbmNvZGVyKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAg
ICAgICAgICAgd2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZShoYW5kbGUpOwotICAgIH0KLX07
Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1SZW5kZXJQaXBlbGluZSogaGFuZGxl
KQotICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZSkKLSAgICAgICAgICAgIHdncHVSZW5kZXJQaXBl
bGluZVJlbGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFu
ZGxlRGVsZXRlcjxQbGF0Zm9ybVNhbXBsZXI+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZv
cm1TYW1wbGVyKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAg
ICAgd2dwdVNhbXBsZXJSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgot
c3RydWN0IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1TaGFkZXJNb2R1bGU+IHsKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoUGxhdGZvcm1TaGFkZXJNb2R1bGUqIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGlm
IChoYW5kbGUpCi0gICAgICAgICAgICB3Z3B1U2hhZGVyTW9kdWxlUmVsZWFzZShoYW5kbGUpOwot
ICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtU3dh
cExheWVyPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFBsYXRmb3JtU3dhcExheWVyKiBoYW5kbGUp
Ci0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dwdVN3YXBDaGFpblJl
bGVhc2UoaGFuZGxlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSGFuZGxlRGVs
ZXRlcjxQbGF0Zm9ybVRleHR1cmU+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoUGxhdGZvcm1UZXh0
dXJlKiBoYW5kbGUpCi0gICAgewotICAgICAgICBpZiAoaGFuZGxlKQotICAgICAgICAgICAgd2dw
dVRleHR1cmVSZWxlYXNlKGhhbmRsZSk7Ci0gICAgfQotfTsKLQotdXNpbmcgUGxhdGZvcm1CdWZm
ZXJTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUJ1ZmZlciwgSGFuZGxlRGVsZXRl
cjxQbGF0Zm9ybUJ1ZmZlcj4+OwotdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIg
PSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db21tYW5kQnVmZmVyLCBIYW5kbGVEZWxldGVyPFBs
YXRmb3JtQ29tbWFuZEJ1ZmZlcj4+OwotdXNpbmcgUGxhdGZvcm1Db21wdXRlUGFzc0VuY29kZXJT
bWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2RlciwgSGFu
ZGxlRGVsZXRlcjxQbGF0Zm9ybUNvbXB1dGVQYXNzRW5jb2Rlcj4+OwotdXNpbmcgUGxhdGZvcm1D
b21wdXRlUGlwZWxpbmVTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbXB1dGVQ
aXBlbGluZSwgSGFuZGxlRGVsZXRlcjxQbGF0Zm9ybUNvbXB1dGVQaXBlbGluZT4+OwotdXNpbmcg
UGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURldmljZSwg
SGFuZGxlRGVsZXRlcjxQbGF0Zm9ybURldmljZT4+OwotdXNpbmcgUGxhdGZvcm1EcmF3YWJsZVNt
YXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRHJhd2FibGUsIEhhbmRsZURlbGV0ZXI8
UGxhdGZvcm1EcmF3YWJsZT4+OwotdXNpbmcgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rl
clNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rlcj4+OwotdXNp
bmcgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtUXVldWUs
IEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1RdWV1ZT4+OwotdXNpbmcgUGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlclNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1SZW5kZXJQYXNzRW5jb2Rlcj4+OwotdXNpbmcgUGxh
dGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtUmVu
ZGVyUGlwZWxpbmUsIEhhbmRsZURlbGV0ZXI8UGxhdGZvcm1SZW5kZXJQaXBlbGluZT4+OwotdXNp
bmcgUGxhdGZvcm1TYW1wbGVyU21hcnRQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1TYW1w
bGVyLCBIYW5kbGVEZWxldGVyPFBsYXRmb3JtU2FtcGxlcj4+OwotdXNpbmcgUGxhdGZvcm1TaGFk
ZXJNb2R1bGVTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVNoYWRlck1vZHVsZSwg
SGFuZGxlRGVsZXRlcjxQbGF0Zm9ybVNoYWRlck1vZHVsZT4+OwotdXNpbmcgUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVN3YXBMYXllciwgSGFuZGxl
RGVsZXRlcjxQbGF0Zm9ybVN3YXBMYXllcj4+OwotdXNpbmcgUGxhdGZvcm1UZXh0dXJlU21hcnRQ
dHIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UZXh0dXJlLCBIYW5kbGVEZWxldGVyPFBsYXRm
b3JtVGV4dHVyZT4+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlckRhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rh
d24vR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXJEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzRlNDhmN2IwMjU1NGNjYWIyNDY0MmU0Y2U5YTQ4NWMxZDI1M2JmMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlckRh
d24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci19Ci0KLXZvaWQgR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1bnNpZ25lZCBpbmRleCwgR1BVQmlu
ZEdyb3VwJiBiaW5kR3JvdXApCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvZGF3bi9HUFVRdWV1ZURhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUXVldWVEYXduLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTFmNmM4MDNkOWU3YjM1ZjM2M2Q2YzdkMDQyZDhkNjQzMjQxYzZiOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVRdWV1ZURhd24uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR1BVUXVldWUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNs
dWRlICJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVUXVldWU+IEdQVVF1ZXVlOjp0cnlDcmVhdGUo
Y29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdQ
VVF1ZXVlOjpHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiBxdWV1ZSwgY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UpCi0gICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi0g
ICAgLCBtX2RldmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQotewotfQotCi12b2lkIEdQVVF1ZXVl
OjpzdWJtaXQoVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykK
LXsKLX0KLQotU3RyaW5nIEdQVVF1ZXVlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR1BVUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYg
bGFiZWwpIGNvbnN0Ci17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQYXNzRW5jb2RlckRhd24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGFzc0VuY29kZXJEYXduLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThkOWI2ZDVlMjQzYWU4YmQxMzZjYTc4
YzJiYjRmMGQ4NzIxMjc4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5k
ZXJQYXNzRW5jb2RlckRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5
Q3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlciwgR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3ImJiBkZXNjcmlwdG9yKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6R1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+
JiYgY29tbWFuZEJ1ZmZlciwgUGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyJiYgZW5j
b2RlcikKLSAgICA6IEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1
ZmZlcikpCi0gICAgLCBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVy
KSkKLXsKLX0KLQotY29uc3QgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciogR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdAotewotICAgIHJldHVy
biBudWxscHRyOwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShS
ZWY8Y29uc3QgR1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCi17Ci19Ci0KLXZvaWQgR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29sb3IoY29uc3QgR1BVQ29sb3ImIGNvbG9yKQot
ewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQg
bWF4RGVwdGgpCi17Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JS
ZWN0KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCi17Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKEdQ
VUJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQpCi17Ci19Ci0KLXZvaWQgR1BVUmVuZGVy
UGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3Rv
cjxSZWY8R1BVQnVmZmVyPj4mIGJ1ZmZlcnMsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9mZnNl
dHMpCi17Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5zaWduZWQgdmVy
dGV4Q291bnQsIHVuc2lnbmVkIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGZpcnN0VmVydGV4LCB1
bnNpZ25lZCBmaXJzdEluc3RhbmNlKQotewotfQotCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVy
OjpkcmF3SW5kZXhlZCh1bnNpZ25lZCBpbmRleENvdW50LCB1bnNpZ25lZCBpbnN0YW5jZUNvdW50
LCB1bnNpZ25lZCBmaXJzdEluZGV4LCBpbnQgYmFzZVZlcnRleCwgdW5zaWduZWQgZmlyc3RJbnN0
YW5jZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9kYXduL0dQVVJlbmRlclBpcGVsaW5lRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNTJmZTFlYzA0ZmExY2Y5NWY3MzE2OGI0YTllNWRmODMwNTk0
ZDZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVJlbmRlclBpcGVsaW5lRGF3
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IEdQVVJlbmRlclBpcGVsaW5lOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1H
UFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwotCi1ib29s
IEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBzdGQ6Om9wdGlvbmFs
PEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9kYXduL0dQVVNhbXBsZXJEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9kYXduL0dQVVNhbXBsZXJEYXduLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTNjOWQwYWVmYTQxMzkzMzcxYTk5YTQ5MGJiZDNlMmRmM2M0Mjc2Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTYW1wbGVyRGF3bi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJHUFVTYW1wbGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVTYW1wbGVyPiBHUFVTYW1wbGVyOjp0cnlDcmVh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVTYW1wbGVyOjpHUFVT
YW1wbGVyKFBsYXRmb3JtU2FtcGxlclNtYXJ0UHRyJiYgc2FtcGxlcikKLSAgICA6IG1fcGxhdGZv
cm1TYW1wbGVyKFdURk1vdmUoc2FtcGxlcikpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTaGFkZXJNb2R1bGVEYXduLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVNoYWRlck1vZHVsZURh
d24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWE1MzRhZDVhYTA5ZjNhZjQz
ZmM1MTQyNTU1NzI0Y2M5YjhkNzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQ
VVNoYWRlck1vZHVsZURhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9k
dWxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQVVNo
YWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQotICAgIDog
bV9wbGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCi17Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVTd2FwQ2hhaW5EYXdu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVN3YXBD
aGFpbkRhd24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTVhNzZlMDcwNjcx
ZjJlNDFkYjFhNzM2MmQ1M2ZjNTRlYWEzYjlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9k
YXduL0dQVVN3YXBDaGFpbkRhd24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVU3dhcENo
YWluLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVVN3YXBD
aGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4oUGxhdGZv
cm1Td2FwTGF5ZXJTbWFydFB0ciYmIHBsYXRmb3JtTGF5ZXIsIE9wdGlvblNldDxHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzPiB1c2FnZU9wdGlvbnMpCi0gICAgOiBtX3BsYXRmb3JtU3dhcExheWVyKFdU
Rk1vdmUocGxhdGZvcm1MYXllcikpCi0gICAgLCBtX3VzYWdlKHVzYWdlT3B0aW9ucykKLXsKLX0K
LQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVVN3YXBDaGFpbjo6dHJ5R2V0Q3VycmVudFRleHR1cmUo
KQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6cHJlc2Vu
dCgpCi17Ci0gICAgaWYgKCFtX2N1cnJlbnREcmF3YWJsZSkKLSAgICAgICAgcmV0dXJuOwotfQot
Ci12b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0K
LX0KLQotUGxhdGZvcm1MYXllciogR1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVRleHR1cmVEYXduLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVRleHR1cmVEYXduLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0NmQyNDE3M2I1NTEzZjg1YTAyOThlYTgxNWVmZmE5ZGUx
YmJmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVUZXh0dXJlRGF3bi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJl
Ojp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVRleHR1cmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCi17Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGUo
UGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVz
YWdlOjpGbGFncz4gdXNhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVy
ZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkpOwotfQotCi1HUFVUZXh0dXJlOjpHUFVUZXh0dXJl
KFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQVVRleHR1cmVV
c2FnZTo6RmxhZ3M+IHVzYWdlKQotICAgIDogbV9wbGF0Zm9ybVRleHR1cmUoV1RGTW92ZSh0ZXh0
dXJlKSkKLSAgICAsIG1fdXNhZ2UodXNhZ2UpCi17Ci19Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBH
UFVUZXh0dXJlOjp0cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQotewotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5k
ZXggMzYxNjAyZTU3YjI0ZmIxNmNiZTJhN2E5OWY2ZTVjODBhMzM5ZmFiNy4uY2U4YzdkNDgxNzkw
YThhNjVkZWIxZmFiYjViMDExNWEzNjM3Yzg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJGcmFtZS5o
IgogI2ltcG9ydCAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlLmgiCiAj
aW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUGFnZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggMTI5M2RhNTU5ZjkyOWE3YWVlYzU0ZDA3YWE5
YWU0Zjk5NGY5NWI0NC4uZjAyY2U4ZmRmMGYwYzU4ZjQwNzBkNGI0Yjc4MWVkYjVmMWVjMjFkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRv
d0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2ltcG9y
dCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGlu
ay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCA2ZDFiZTYxM2ExMjk0YjVhZjI5MThkNjE2OTBmY2M3ZmUyMWRiNDIyLi5jZTc2OWY4
NWQ2MWE5NGE0OGEyZDcyOGQ3MTAwOWZjMThmZTkwNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA2Myw3ICsxMDYzLDcgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVy
TGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0cygpOwog
ICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkgfHwgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFz
Q29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMp
IHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhU
TUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRv
KiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCkBAIC0yODg1LDcgKzI4ODUs
NyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5nZWQoQ29udGVudENoYW5n
ZVR5cGUgY2hhbmdlVHlwZSkKICAgICBpZiAoKGNoYW5nZVR5cGUgPT0gTWFza0ltYWdlQ2hhbmdl
ZCkgJiYgbV9tYXNrTGF5ZXIpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxFKFdFQkdMKSB8
fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBpZiAoKGNoYW5nZVR5cGUgPT0gQ2FudmFz
Q2hhbmdlZCB8fCBjaGFuZ2VUeXBlID09IENhbnZhc1BpeGVsc0NoYW5nZWQpICYmIHJlbmRlcmVy
KCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09
IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBpZiAoY2hhbmdlVHlwZSA9PSBDYW52
YXNDaGFuZ2VkKQogICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2Vi
S2l0LWFwcGxldHZvcy5wbGlzdCBiL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1h
cHBsZXR2b3MucGxpc3QKaW5kZXggZjFiNGFhYWVlMGIxNzE0N2QzNjVmYzFlMmJmNzc2MzA5OGIy
N2EzYS4uNDgxNjM3NjUzMTk5MjNlZTllZTM3OWI0ZjlkYmJmN2VhMWIzZjBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWFwcGxldHZvcy5wbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtYXBwbGV0dm9zLnBsaXN0CkBAIC0y
LDEwMCArMiw5NSBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0
ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgotICAgIDxrZXk+YXN5bmNfZnJhbWVf
YW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9w
cm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9r
ZXk+Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4K
LSAgICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8
a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAg
PGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxr
ZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PmdwdV9wcm9jZXNzX3dlYmdsPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxl
ZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PmdwdV9wcm9j
ZXNzX3dlYnJ0Yzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPGZhbHNlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+Ci0gICAgICAg
IDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAgICAgICAgICAg
IDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5PkluQXBwQnJv
d3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVtZW50YWxfcGRm
PC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8
dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25fYmF0dGVyeTwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJs
ZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJYUjwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KLSAg
ICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAg
ICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0PgotICAgICAg
ICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8
a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVk
PC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5SQl9mdWxsX21h
bmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9r
ZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19mcmFtZV9hbmRf
b3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwv
a2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0
dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJ
PHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRl
cmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8
L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+
CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9k
aWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRj
PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCQk8a2V5
PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5Pgor
CQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+SW5BcHBCcm93c2VyUHJpdmFj
eTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVk
PC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0
ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwv
ZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9mb3Jt
YXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxr
ZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC1pb3MucGxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0ZlYXR1cmVGbGFncy9XZWJLaXQtaW9zLnBsaXN0CmluZGV4IDUwZDAzY2ZiZDc0MTc1
OGRhOTNkZjI2ZWY4ODgzMjhmNzQ0ZGUzNmYuLjc5YTRlM2M5ODQyYjIxZDg0MzVmYzE5MWQxODYz
MjA1YTdhZDIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktp
dC1pb3MucGxpc3QKKysrIGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5w
bGlzdApAQCAtMiwxMDAgKzIsOTUgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxl
Ly9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlM
aXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KLSAgICA8a2V5PmFz
eW5jX2ZyYW1lX2FuZF9vdmVyZmxvd19zY3JvbGxpbmc8L2tleT4KLSAgICA8ZGljdD4KLSAgICAg
ICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAg
PGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0
cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBs
ZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2Rp
Y3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAg
IDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+QXR0cmli
dXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8L2RpY3Q+
Ci0gICAgPGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICAgICAgPGtleT5BdHRyaWJ1dGVzPC9rZXk+
Ci0gICAgICAgIDxkaWN0PgotICAgICAgICAgICAgPGtleT5Db2RlQ29tcGxldGU8L2tleT4KLSAg
ICAgICAgICAgIDx0cnVlLz4KLSAgICAgICAgPC9kaWN0PgotICAgIDwvZGljdD4KLSAgICA8a2V5
PkluQXBwQnJvd3NlclByaXZhY3k8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFi
bGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+aW5jcmVt
ZW50YWxfcGRmPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5Pgot
ICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+c3dfdnA5X2RlY29kZXJfb25f
YmF0dGVyeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT52cDlfZGVjb2Rlcjwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PldlYkdQVTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8
a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtl
eT5XZWJYUjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX2Zvcm1hdF9yZWFkZXI8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3BhcnNlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtl
eT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5S
Ql9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+CisJPGtleT5hc3luY19m
cmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3Jl
bmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgor
CQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwv
a2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nf
ZG9tX3JlbmRlcmluZzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZh
bHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgorCTxkaWN0Pgor
CQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4K
KwkJPGRpY3Q+CisJCQk8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2Rp
Y3Q+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KKwk8ZGljdD4KKwkJ
PGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nl
c3Nfd2VicnRjPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+
CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRl
PC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dz
ZXJQcml2YWN5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2Uv
PgorCTwvZGljdD4KKwk8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5
PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVy
X29uX2JhdHRlcnk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxz
ZS8+CisJPC9kaWN0PgorCTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5F
bmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxk
aWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53
ZWJtX2Zvcm1hdF9yZWFkZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8
a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVk
aW88L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT5SQl9mdWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtl
eT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0
IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LW1hY29zLnBsaXN0CmluZGV4IDUw
ZDAzY2ZiZDc0MTc1OGRhOTNkZjI2ZWY4ODgzMjhmNzQ0ZGUzNmYuLjc5YTRlM2M5ODQyYjIxZDg0
MzVmYzE5MWQxODYzMjA1YTdhZDIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRmVhdHVy
ZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0ZlYXR1cmVGbGFn
cy9XZWJLaXQtbWFjb3MucGxpc3QKQEAgLTIsMTAwICsyLDk1IEBACiA8IURPQ1RZUEUgcGxpc3Qg
UFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNv
bS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRp
Y3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3ZlcmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0g
ICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfY2FudmFzX3JlbmRlcmluZzwva2V5Pgot
ICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgot
ICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAg
ICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8
L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwv
a2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPGZh
bHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVfcHJvY2Vzc19tZWRpYTwva2V5PgotICAg
IDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAg
ICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8
a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUvPgotICAgICAgICA8L2Rp
Y3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2VicnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDxrZXk+
QXR0cmlidXRlczwva2V5PgotICAgICAgICA8ZGljdD4KLSAgICAgICAgICAgIDxrZXk+Q29kZUNv
bXBsZXRlPC9rZXk+Ci0gICAgICAgICAgICA8dHJ1ZS8+Ci0gICAgICAgIDwvZGljdD4KLSAgICA8
L2RpY3Q+Ci0gICAgPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+Ci0gICAgPGRpY3Q+Ci0g
ICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4K
LSAgICA8a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5
PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PnN3
X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+dnA5
X2RlY29kZXI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0g
ICAgICAgIDx0cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5XZWJHUFU8L2tleT4KLSAgICA8
ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAg
PC9kaWN0PgotICAgIDxrZXk+V2ViWFI8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5F
bmFibGVkPC9rZXk+Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV9mb3JtYXRfcmVhZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2VibV9wYXJzZXI8
L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0
cnVlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+Ci0gICAgPGRp
Y3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9k
aWN0PgotICAgIDxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+Ci0gICAgPGRpY3Q+
Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0
PgorCTxrZXk+YXN5bmNfZnJhbWVfYW5kX292ZXJmbG93X3Njcm9sbGluZzwva2V5PgorCTxkaWN0
PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PmdwdV9w
cm9jZXNzX2NhbnZhc19yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9r
ZXk+CisJCTx0cnVlLz4KKwkJPGtleT5BdHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtl
eT5Db2RlQ29tcGxldGU8L2tleT4KKwkJCTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8
a2V5PmdwdV9wcm9jZXNzX2RvbV9yZW5kZXJpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFi
bGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0PgorCTxrZXk+Z3B1X3Byb2Nlc3NfbWVkaWE8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwkJPGtleT5B
dHRyaWJ1dGVzPC9rZXk+CisJCTxkaWN0PgorCQkJPGtleT5Db2RlQ29tcGxldGU8L2tleT4KKwkJ
CTx0cnVlLz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PmdwdV9wcm9jZXNzX3dlYmdsPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX3dlYnJ0Yzwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPHRydWUvPgorCQk8a2V5PkF0dHJpYnV0ZXM8L2tleT4KKwkJPGRpY3Q+CisJCQk8
a2V5PkNvZGVDb21wbGV0ZTwva2V5PgorCQkJPHRydWUvPgorCQk8L2RpY3Q+CisJPC9kaWN0Pgor
CTxrZXk+SW5BcHBCcm93c2VyUHJpdmFjeTwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8
L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtl
eT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxl
ZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8a2V5PnZwOV9kZWNvZGVyPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+
V2ViWFI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJ
PC9kaWN0PgorCTxrZXk+d2VibV9mb3JtYXRfcmVhZGVyPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+
RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+d2VibV9wYXJzZXI8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJ
PGtleT53ZWJtX3dlYmF1ZGlvPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5Pgor
CQk8dHJ1ZS8+CisJPC9kaWN0PgorCTxrZXk+UkJfZnVsbF9tYW5hZ2VfV0tfamV0c2FtPC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJPC9kaWN0PgogPC9k
aWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dl
YktpdC13YXRjaG9zLnBsaXN0IGIvU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdh
dGNob3MucGxpc3QKaW5kZXggZjFiNGFhYWVlMGIxNzE0N2QzNjVmYzFlMmJmNzc2MzA5OGIyN2Ez
YS4uNDgxNjM3NjUzMTk5MjNlZTllZTM3OWI0ZjlkYmJmN2VhMWIzZjBmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LXdhdGNob3MucGxpc3QKQEAgLTIsMTAwICsy
LDk1IEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8v
RU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxw
bGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+Ci0gICAgPGtleT5hc3luY19mcmFtZV9hbmRfb3Zl
cmZsb3dfc2Nyb2xsaW5nPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwv
a2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nf
Y2FudmFzX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8
L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAg
ICAgICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAg
ICAgICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1
X3Byb2Nlc3NfZG9tX3JlbmRlcmluZzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVu
YWJsZWQ8L2tleT4KLSAgICAgICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5ncHVf
cHJvY2Vzc19tZWRpYTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tl
eT4KLSAgICAgICAgPHRydWUvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAg
ICAgPGRpY3Q+Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAg
ICAgPHRydWUvPgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3By
b2Nlc3Nfd2ViZ2w8L2tleT4KLSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+
Ci0gICAgICAgIDxmYWxzZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+Z3B1X3Byb2Nlc3Nfd2Vi
cnRjPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAg
ICA8ZmFsc2UvPgotICAgICAgICA8a2V5PkF0dHJpYnV0ZXM8L2tleT4KLSAgICAgICAgPGRpY3Q+
Ci0gICAgICAgICAgICA8a2V5PkNvZGVDb21wbGV0ZTwva2V5PgotICAgICAgICAgICAgPHRydWUv
PgotICAgICAgICA8L2RpY3Q+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+SW5BcHBCcm93c2VyUHJp
dmFjeTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAg
ICAgPGZhbHNlLz4KLSAgICA8L2RpY3Q+Ci0gICAgPGtleT5pbmNyZW1lbnRhbF9wZGY8L2tleT4K
LSAgICA8ZGljdD4KLSAgICAgICAgPGtleT5FbmFibGVkPC9rZXk+Ci0gICAgICAgIDx0cnVlLz4K
LSAgICA8L2RpY3Q+Ci0gICAgPGtleT5zd192cDlfZGVjb2Rlcl9vbl9iYXR0ZXJ5PC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PnZwOV9kZWNvZGVyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAg
ICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAg
IDxrZXk+V2ViR1BVPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5
PgotICAgICAgICA8ZmFsc2UvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PldlYlhSPC9rZXk+Ci0g
ICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+RW5hYmxlZDwva2V5PgotICAgICAgICA8ZmFsc2UvPgot
ICAgIDwvZGljdD4KLSAgICA8a2V5PndlYm1fZm9ybWF0X3JlYWRlcjwva2V5PgotICAgIDxkaWN0
PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAgICAgICAgPHRydWUvPgotICAgIDwvZGlj
dD4KLSAgICA8a2V5PndlYm1fcGFyc2VyPC9rZXk+Ci0gICAgPGRpY3Q+Ci0gICAgICAgIDxrZXk+
RW5hYmxlZDwva2V5PgotICAgICAgICA8dHJ1ZS8+Ci0gICAgPC9kaWN0PgotICAgIDxrZXk+d2Vi
bV93ZWJhdWRpbzwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4K
LSAgICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KLSAgICA8a2V5PlJCX2Z1bGxfbWFuYWdlX1dL
X2pldHNhbTwva2V5PgotICAgIDxkaWN0PgotICAgICAgICA8a2V5PkVuYWJsZWQ8L2tleT4KLSAg
ICAgICAgPHRydWUvPgotICAgIDwvZGljdD4KKwk8a2V5PmFzeW5jX2ZyYW1lX2FuZF9vdmVyZmxv
d19zY3JvbGxpbmc8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVl
Lz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19jYW52YXNfcmVuZGVyaW5nPC9rZXk+CisJ
PGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRl
czwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+
CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc19kb21fcmVuZGVyaW5nPC9r
ZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4K
Kwk8a2V5PmdwdV9wcm9jZXNzX21lZGlhPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwv
a2V5PgorCQk8dHJ1ZS8+CisJCTxrZXk+QXR0cmlidXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxr
ZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJ
PGtleT5ncHVfcHJvY2Vzc193ZWJnbDwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT5ncHVfcHJvY2Vzc193ZWJydGM8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJCTxrZXk+QXR0cmli
dXRlczwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+Q29kZUNvbXBsZXRlPC9rZXk+CisJCQk8dHJ1
ZS8+CisJCTwvZGljdD4KKwk8L2RpY3Q+CisJPGtleT5JbkFwcEJyb3dzZXJQcml2YWN5PC9rZXk+
CisJPGRpY3Q+CisJCTxrZXk+RW5hYmxlZDwva2V5PgorCQk8ZmFsc2UvPgorCTwvZGljdD4KKwk8
a2V5PmluY3JlbWVudGFsX3BkZjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tleT4K
KwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PnN3X3ZwOV9kZWNvZGVyX29uX2JhdHRlcnk8L2tl
eT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTxmYWxzZS8+CisJPC9kaWN0Pgor
CTxrZXk+dnA5X2RlY29kZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJ
CTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5XZWJYUjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVu
YWJsZWQ8L2tleT4KKwkJPGZhbHNlLz4KKwk8L2RpY3Q+CisJPGtleT53ZWJtX2Zvcm1hdF9yZWFk
ZXI8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2Rp
Y3Q+CisJPGtleT53ZWJtX3BhcnNlcjwva2V5PgorCTxkaWN0PgorCQk8a2V5PkVuYWJsZWQ8L2tl
eT4KKwkJPHRydWUvPgorCTwvZGljdD4KKwk8a2V5PndlYm1fd2ViYXVkaW88L2tleT4KKwk8ZGlj
dD4KKwkJPGtleT5FbmFibGVkPC9rZXk+CisJCTx0cnVlLz4KKwk8L2RpY3Q+CisJPGtleT5SQl9m
dWxsX21hbmFnZV9XS19qZXRzYW08L2tleT4KKwk8ZGljdD4KKwkJPGtleT5FbmFibGVkPC9rZXk+
CisJCTx0cnVlLz4KKwk8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5kZXggMWIw
YjZkNDZmYTMzZDBhZmExMjdmY2RjMmE4NjAzNjc2YmE3OGYzOC4uYWZhZmUzYzdlNTMzMDYyNGVh
ODQ2ZWJhMDc1YmYyODU1YTBhMjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCkBAIC0yNTksMTkgKzI1OSw2IEBAIGJv
b2wgZGVmYXVsdFdlYlJUQ0NvZGVjc0luR1BVUHJvY2VzcygpCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX1JUQykKIAotI2lmIEVOQUJMRShXRUJHUFUpCi0KLWJvb2wgZGVmYXVsdFdlYkdQVUVuYWJs
ZWQoKQotewotI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCi0gICAgcmV0dXJuIGlzRmVh
dHVyZUZsYWdFbmFibGVkKCJXZWJHUFUiKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKLQogYm9vbCBkZWZhdWx0SW5BcHBCcm93c2Vy
UHJpdmFjeSgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5kZXggOGIz
NTNjMGYwZTk1NWVlOTAyYzkxNGVlNmRmOWYwMWU2NmJjNWMxNi4uZTZmZjE4MzYwYjJiZGIwOGVj
ZjE2ZmE4ZmJkZTk0MDk4OTZjNTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTg1LDEwICs4NSw2IEBAIGJvb2wgZGVm
YXVsdENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFdlYlJU
Q0NvZGVjc0luR1BVUHJvY2VzcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotYm9v
bCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KIGJvb2wgZGVmYXVsdEluQXBwQnJv
d3NlclByaXZhY3koKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAppbmRleCA3YWVlM2M1YjBlNDU5NWU5YjZhMWVkNjk5ZTEzZDgyNTM1NTZmOWRh
Li5jMjFkODJiZjJhZTA4YmQ0NTQzNTI5OTE5NDExNjI4MTlhOTM2YTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgKQEAgLTI2MSw3ICsyNjEsNiBAQAogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRpb25z
Q29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0
aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJBbmltYXRp
b25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViQW5pbWF0
aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCi0jZGVmaW5lIFdlYktpdFdlYkdQ
VUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKICNkZWZpbmUgV2Vi
S2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWFza1dlYkdM
U3RyaW5nc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVu
YWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRTZXJ2ZXJUaW1pbmdFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggZmY3Mzg4NWIxODU0YmNlNGRjMzk0ZTc5MTg5
MWFkYzkxNDBjZmQzMC4uNmRlNGFjMWM4MGMzZGFkM2EwOWZkZTU3YmFjNzRmZTc5NDVlZjUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCkBAIC0zMTcwLDE2ICszMTcwLDYgQEAgLSAodm9pZClzZXRXZWJHTDJFbmFibGVkOihCT09M
KWVuYWJsZWQKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdl
YkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAotLSAoQk9PTCl3ZWJHUFVFbmFibGVkCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwotfQotCi0tICh2b2lkKXNldFdlYkdQVUVuYWJsZWQ6KEJPT0wpZW5hYmxl
ZAotewotICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR1BV
RW5hYmxlZFByZWZlcmVuY2VLZXldOwotfQotCiAtIChCT09MKW1hc2tXZWJHTFN0cmluZ3NFbmFi
bGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TWFza1dlYkdM
U3RyaW5nc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmlu
ZGV4IDcxYWNkODA4ODY4MzU5ZmUxNjgxYjcwNGRhNWVhNTA3OWUzNjQ5NjIuLmQwOGNiY2JlY2Yz
NGVjNTE3ZjI0M2Q5ZDA1YWI4MmQwM2U2NTE3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
aApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGlzRmVhdHVyZUZs
YWdFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ym9vbCBkZWZhdWx0V2ViR1BVRW5hYmxlZCgpOwotI2VuZGlmCi0KICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQogYm9vbCBkZWZhdWx0SW5jcmVtZW50YWxQREZFbmFibGVkKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggMTZjNTk3MjI5MTk3MWYxOTkxYzQw
YWVhODFkMGZmYmQ2ZjY1OWQzYi4uOWE5NGQ2NWQ4NWQxNzdiNzc3MmI3OWMzODc4NDhhZDRjNzI3
NWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTYyLDE5ICs2Miw2IEBAIGJv
b2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKIAogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1ib29sIGRlZmF1bHRXZWJHUFVFbmFibGVkKCkK
LXsKLSNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQotICAgIHJldHVybiBpc0ZlYXR1cmVG
bGFnRW5hYmxlZCgiV2ViR1BVIik7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCi0KICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElT
KQogCiBib29sIGRlZmF1bHRJbmNyZW1lbnRhbFBERkVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5k
ZXggNTA3OTc1MTQ4OGU1NTFjZmNiMmI5NGI5YjU4MDNmNmYzZTk4Yzc5Zi4uNWIyNzFmMDlhMzM1
OTNhM2Y1NzgxYWEwZWJiN2VkZjJkY2MwZmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMzUsNyAr
MzM1LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2Vk
SW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lUX0RFUFIKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZDsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHdlYkdMMkVuYWJsZWQ7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCB3ZWJHUFVFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbWFz
a1dlYkdMU3RyaW5nc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhY2Nlc3Np
YmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2Vy
dmVyVGltaW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKaW5kZXggMGUxMzM5NWQ3OGY2YTU4
NDdkMTNjYjgwNDUxNTNjMjQ1YTE0ZTZhNi4uNTRkMWQ0MmVhYTQ3MDc1N2ExMDg2YzgyNzk0Yzky
MWEyNTdjNjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKQEAgLTEyMyw3ICsxMjMsNiBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFZTUVOVF9SRVFVRVNUIFBSSVZB
VEUgT0ZGKQogCiAjIFdlYkdMCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCR0wyIFBSSVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1dFQkdQVSBQUklWQVRFIE9GRikKIAogIyBPZmYgZm9yIG5vdywgYnV0IHNob3VsZCBi
ZSBvbgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQ
UklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKaW5kZXggMGM4ZmUxMTY0NWMyMDMxNDlhMTg5
NThkMmNkMTQzODY1NTdhZDQ5OC4uNzZhMWVkYmZhYjYxMzVhZmVkYjVlNGIxNzgyZmY5MzQ1NTM3
ZmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKQEAgLTkyLDcgKzkyLDYgQEAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJE
UklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTDIgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHUFUgUFJJVkFURSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gUFJJVkFURSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVUSE4gUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBS
SVZBVEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA1MTIzOTJlNjQyNGVh
NjRmZjY1ZmZmYzE0ZGYzMDM0NGNlNmNiZTk5Li41YjU2N2VmNzlmNjA4ZDRhMGIzNTA5MWRlMDc0
OGZkZjAwYjc5MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTIwLDExICsy
MCw2IEBAIGlmIChFTkFCTEVfWFNMVCkKICAgICBmaW5kX3BhY2thZ2UoTGliWHNsdCAxLjEuMzIg
UkVRVUlSRUQpCiBlbmRpZiAoKQogCi1pZiAoRU5BQkxFX1dFQkdQVSkKLSAgICBmaW5kX3BhY2th
Z2UoRGF3biBSRVFVSVJFRCBDT01QT05FTlRTIGRhd24gbmF0aXZlIE9QVElPTkFMX0NPTVBPTkVO
VFMgd2lyZSkKLSAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfREFXTiBPTikKLWVuZGlm
ICgpCi0KICMgT3B0aW9uYWwgcGFja2FnZXMKIGZpbmRfcGFja2FnZShPcGVuSlBFRyAyLjMuMSkK
IGlmIChPcGVuSlBFR19GT1VORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCAyYzIw
MjBjNTlmOWMzYTkyZjlhNGFiZmI3MjllN2I3NDFiYThiOTkwLi5kNzhlNmQzNDVhMDAyNWI3MDNh
YzhmMDM2MjIzZWVkM2E0NzUzOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVh
dHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC0y
MjYsNyArMjI2LDYgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUyAiVG9nZ2xlIFdl
YkRyaXZlciB3aGVlbCBpbnRlcmFjdGlvbnMiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9XRUJHTCAiVG9nZ2xlIFdlYkdMIHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1dFQkdMMiAiVG9nZ2xlIFdlYkdMMiBz
dXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV0VC
R1BVICJUb2dnbGUgV2ViR1BVIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9XRUJfQVBJX1NUQVRJU1RJQ1MgIlRvZ2dsZSBXZWIgQVBJIHN0YXRp
c3RpY3Mgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1dFQl9BVURJTyAiVG9nZ2xlIFdlYiBBdWRpbyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9XRUJfQVVUSE4gIlRvZ2dsZSBXZWIgQXV0aE4g
c3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDdjY2Y3ZWE1ZGJlODczYjJlZGQyYjZhNDYyMWI2YzBi
MTkwY2RlMWIuLjRhMjI4NDMyYTk0M2JlMmU1ZWViMGZkMDhmMDdiYjI0YWUyNWJlZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisr
KyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC01
NSw3ICs1NSw2IEBACiAgICAgPEVOQUJMRV9XRUJfQVVESU8gLz4KICAgICA8RU5BQkxFX1dFQl9B
VVRITiAvPgogICAgIDxFTkFCTEVfV0VCR0wgLz4KLSAgICA8RU5BQkxFX1dFQkdQVSAvPgogICAg
IDxFTkFCTEVfV0VCWFIgLz4KICAgICA8RU5BQkxFX1hIUl9USU1FT1VUPkVOQUJMRV9YSFJfVElN
RU9VVDwvRU5BQkxFX1hIUl9USU1FT1VUPgogICAgIDxFTkFCTEVfWFNMVD5FTkFCTEVfWFNMVDwv
RU5BQkxFX1hTTFQ+CkBAIC02NSw3ICs2NCw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0
ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9PVkVSRkxPV19TQ1JP
TExJTkdfVE9VQ0gpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NT
U19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5H
KTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lE
RSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJ
WEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9I
QU5ETEVSKTskKEVOQUJMRV9EQVJLX01PREVfQ1NTKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFC
TEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUEpOyQoRU5BQkxFX0ZF
VENIX0FQSSk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTsk
KEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9EUElf
Q0FOVkFTKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gp
OyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUp
OyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUlD
Uk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElP
TlMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NU
WUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxF
X1dFQkdMKTskKEVOQUJMRV9XRUJHUFUpOyQoRU5BQkxFX1dFQlhSKTskKEVOQUJMRV9YSFJfVElN
RU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxF
XzNEX1RSQU5TRk9STVMpOyQoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCk7JChFTkFC
TEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFC
TEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxF
X0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19TRUxF
Q1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJB
TlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNP
Ul9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RB
UktfTU9ERV9DU1MpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5U
KTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQp
OyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSk7JChFTkFCTEVfRkVUQ0hfQVBJKTskKEVOQUJMRV9G
SUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQo
RU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKTskKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9MSU5LX1BS
RVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfU0NSSVBU
RURfU1BFRUNIKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJP
TFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJ
Q1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJM
RV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFC
TEVfVklERU8pOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCR0wpOyQoRU5BQkxFX1dF
QlhSKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgog
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvU291cmNl
L2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCAxMjc2
Yjg3ZmIzMWM3NTI0NjFmZDE4ZWVlYjI4MTAyY2NhYjNjYzM4Li43NTNiZmI5N2ZmOWNiYjdiMGFm
MTgzOTJlYzlhYjkyMTUzNDQ2ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1NvdXJjZS9jbWFrZS90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTU1LDcgKzU1LDYgQEAKICAgICA8
RU5BQkxFX1dFQl9BVURJTyAvPgogICAgIDxFTkFCTEVfV0VCX0FVVEhOIC8+CiAgICAgPEVOQUJM
RV9XRUJHTD5FTkFCTEVfV0VCR0w8L0VOQUJMRV9XRUJHTD4KLSAgICA8RU5BQkxFX1dFQkdQVSAv
PgogICAgIDxFTkFCTEVfV0VCWFIgLz4KICAgICA8RU5BQkxFX1hIUl9USU1FT1VUPkVOQUJMRV9Y
SFJfVElNRU9VVDwvRU5BQkxFX1hIUl9USU1FT1VUPgogICAgIDxFTkFCTEVfWFNMVD5FTkFCTEVf
WFNMVDwvRU5BQkxFX1hTTFQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjJhY2FjNjA1ZTU0MzQ2NTYzMGVjN2M0MTNkYmU4
OTg5MGFlNTI5ZS4uY2NmZDUxYmQ4ZGY1NGI2OGMwNGI3NTE5YTkzYjkyMzkyYWY2NzI4ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQyOSBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUg
YW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvY3JlYXRl
LWNvbnRleHQtd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2Vi
Z3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Jl
cXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1v
dmUtd2ViZ3B1LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LXNoYXJlZFZlcnRleEZyYWdtZW50Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9mYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JpbmQtZ3JvdXBzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlw
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0
cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJl
LXRvLXRleHR1cmUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvYmxp
dC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1cmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9idWZm
ZXItY29tbWFuZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L2J1ZmZlci1lcnJvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS9idWZmZXItZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJp
YW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZHJhdy1pbmRleGVk
LXRyaWFuZ2xlcy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9kcmF3
LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2Vycm9y
LXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXJy
b3Itc2NvcGVzLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXhwYW5kby1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvZXhwYW5k
by1wcm9wZXJ0aWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L2pzL3dlYmdwdS1m
dW5jdGlvbnMuanM6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9tYXAtcmVhZC1idWZmZXJz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcGlwZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS9xdWV1ZS1jcmVhdGlvbi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJlZC5wbmc6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3Jlc291cmNlcy9ncmVlbi00MDAucG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3RleHR1cmUtY3JlYXRpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS91bmNhcHR1cmVkLWVycm9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvdmll
d3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenpsZS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0ZS1sb2Nh
dGlvbnMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJi
aXRyYXJ5LXZlcnRleC1hdHRyaWJ1dGUtbG9jYXRpb25zLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9hcmd1bWVudC1ldmFsdWF0aW9uLW9yZGVy
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVj
LXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYXJy
YXktbGVuZ3RoLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2FycmF5LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9iYWQtYWRkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2JhZC1saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2JhZC1saXRlcmFscy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
aXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvYml0d2lzZS1ib29sLW9wcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2Jvb2wtbWF0cml4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2Jvb2xzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYm9v
bHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50
LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZlci1m
cmFnbWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItbGVu
Z3RoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVmZmVy
LWxlbmd0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9idWZmZXItdmVy
dGV4LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2J1ZmZl
ci12ZXJ0ZXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvYnVpbHRpbi12
ZWN0b3JzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
dWlsdGluLXZlY3RvcnMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9i
dWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9idWlsdGluLXZlY3RvcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvY2FzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9j
YXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jaGVja2VyLXNob3Vs
ZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1v
Zi1yZWFkLW1vZGlmeS13cml0ZS12YXJpYWJsZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2NvbW1lbnQtcGFyc2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9jb3B5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvY29w
eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1vcmRl
cmluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RlcmVm
ZXJlbmNlLW9yZGVyaW5nLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Rl
cmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2stZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlw
ZS1jaGVjay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kZXZpY2UtcHJv
cGVyLXR5cGUtY2hlY2tlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1icmVhay5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVj
dGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3At
Y29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kby13
aGlsZS1sb29wLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2RvbnQtY3Jh
c2gtcGFyc2luZy1lbnVtLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL2RvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9kb3QtZXhwcmVzc2lvbnMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvZG91YmxlLW5vdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1ub3QtcHJvZHVjZS1kdXBsaWNhdGUt
Y3RvcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBs
aWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9kdXBsaWNhdGVzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZHVwbGljYXRlcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBv
aW50ZXItdXNhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJl
LXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxl
LWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12
YXJpYWJsZS1saWZldGltZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9l
bnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9lbnVtLWludGVnZXItY29uc3RydWN0b3IuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnVtcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2VudW1zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvZW51bXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZXF1
YWxpdHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lcXVh
bGl0eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9mbG9hdC1tYXRoLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9nZXR0ZXItc2V0
dGVyLXR5cGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaHVnZS1hcnJh
eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2h1Z2UtYXJy
YXkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1l
bnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9pbmNyZW1l
bnQtZGVjcmVtZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2luY3Jl
bWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9pbmNyZW1lbnQtc2V0dGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2ludC1iaXQtbWF0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvaW50LWxpdGVyYWwtY29tcGFyZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanM6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL2xleGluZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9saXRlcmFscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xpdGVyYWxzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvZ2lj
YWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9sb2dpY2FsLW5lZ2F0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2xvb3BzLWJyZWFrLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xv
b3BzLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLWNvbnRpbnVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L2xvb3BzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xv
b3BzLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9sb29wcy1zcGVjLXRlc3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2xvb3BzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2xvdHMtb2Yt
bG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvbG90cy1vZi1sb2NhbC12YXJpYWJsZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL2x2YWx1ZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cmljZXMt
c3BlYy10ZXN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgt
Mi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC0y
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtYWxp
Z25tZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb21w
YXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4
LWNvbXBhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2FsYXJzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNj
YWxhcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0
cnVjdG9ycy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgt
YXNzaWduLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0
cml4LWluZGV4LWFzc2lnbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9t
YXRyaXgtaW5kZXgtb3JkZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9tYXRyaXgtaW5kZXgtb3JkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXgtbWVtb3J5LWxheW91dC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9tYXRyaXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvbmVzdGVkLWRvdC1leHByZXNzaW9uLXJ2YWx1ZS1leHBlY3RlZC5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZh
bHVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL25lc3RlZC1sb29wLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL25lc3RlZC1sb29w
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3Mt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9udWxsLWFycmF5
LXByb3BlcnR5LWFjY2Vzcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9u
dWxsLWFycmF5LXJlZi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vb2It
YWNjZXNzLTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9v
b2ItYWNjZXNzLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb29iLWFj
Y2Vzcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29vYi1h
Y2Nlc3MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItZGl2
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
ZGl2Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFs
LWVxdWFsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3Bl
cmF0b3ItZXF1YWwtZXF1YWwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
b3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC9vcGVyYXRvci1taW51cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9vcGVyYXRvci1vdmVybG9hZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3ItdmVj
dG9yLWxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvb3BlcmF0b3It
eHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vcGVyYXRv
ci14eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9vdmVybG9hZC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3Rz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVm
aXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVh
dGlvbi1vcmRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3Byb3BlcnR5LWV2YWx1YXRpb24tb3JkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1o
aWdoLXpvbWJpZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVhZC1t
b2RpZnktd3JpdGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmVjdXJz
aXZlLXN0cnVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZWN1cnNpdmUtc3RydWN0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9yZXR1cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTIuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQtZXhwZWN0ZWQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhw
ZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTctZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0
ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMjEtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMS5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0yMi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTIyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMjMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy00Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy02Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtOC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLWdldHRlci1z
ZXR0ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3Rz
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxlLXRl
c3RzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1s
b29wLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc2ltcGxl
LXdoaWxlLWxvb3AuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc21hbGxl
ci10aGFuLTMyLWJpdC10eXBlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMi1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3Vw
LTMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3Jv
dXAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zcGFyc2Ut
YmluZC1ncm91cC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9yZS1u
dWxsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RvcmUt
bnVsbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9zdG9yZS10by1wcm9w
ZXJ0eS11cGRhdGVzLXByb3Blcmx5LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHkuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNo
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0dXJl
LWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQtY2xhc2guaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wvc3dpdGNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdGVybmFyeS1zcGVjLXRlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJn
cHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxvYWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMt
c2FtcGxlLWJpYXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVy
ZXMtc2FtcGxlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25hbC1hcnJheS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3R3by1kaW1lbnNpb25h
bC1hcnJheS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90eXBlLW1pc21h
dGNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdHlwZS1t
aXNtYXRjaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91aW50LWJpdHdp
c2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC91aW50LWJp
dHdpc2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5l
ZC12YXJpYWJsZS0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
Z3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZhcmlhYmxlLXNoYWRvd2luZy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJl
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3Rv
cnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3It
Y29uc3RydWN0b3JzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rv
ci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1YnRyYWN0aW9uLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3ZvaWQtdmFyaWFibGUtcGFyYW1l
dGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdm9pZC12
YXJpYWJsZS1wYXJhbWV0ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wv
d2hpbGUtbG9vcC1icmVhay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1
L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1jb250aW51ZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHdlYmdwdS93aGxzbC93aGxzbC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC93aGxzbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGguaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmdwdS93aGxzbC93cm9uZy10eXBlcy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLTItZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0y
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12
YWx1ZXMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvemVy
by1pbml0aWFsaXplLXZhbHVlcy5odG1sOiBSZW1vdmVkLgorCiAyMDIxLTA3LTI5ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmYXN0L3NwZWVjaHJlY29n
bml0aW9uL2RldGFjaGVkLWlmcmFtZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkOTc2ZWI4
MjhhZWM0NTYyMmVjNjAzNmMwZTg3ZmY1ZDFlMTg3NDI5Li44MGFiOGZmNzc5MzhmMzMwMDEwMTYx
NGJjZThhOGY0N2M4MjE3MzQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzNDYsOCArMzM0Niw2
IEBAIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTkwMzkgZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
cGFyYWdyYXBoLTAwMy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xOTkwMjggd2ViZ3B1
L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwgWyBTbG93IF0KLQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9vZmZzZXRUb3BMZWZ0LWlubGluZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGVzdCBpcyBmYWlsaW5nIGFuZCBpcyBwcmludGlu
ZyBkaWZmZXJlbnQgdmFsdWVzIHdoZW4gaXQgZmFpbHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAppbmRleCBhMWEyMmMzYjUyZWI4NzE0ZGI5NmRiYjhkZGEzY2U0NWViMmI2Y2U1Li41OWE2NTEz
YTVhYTgzYWNhOWNkZGY4Nzc1NTU1ZDZjYmRjYjNlNGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEwLDcgKzEwLDYgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0
b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZp
Z2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2
aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwogbmF2
aWdhdG9yLmxhbmd1YWdlcyBpcyBPSwpAQCAtMzksNyArMzgsNiBAQCBuYXZpZ2F0b3IuY29udGFj
dHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCi1uYXZpZ2F0
b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxh
bmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTIwMmRkNWMyODFj
YmYwYjBjZTY3MDhjMTBjNzUzMjVmYjE5ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29u
dGV4dC13ZWJncHUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBv
ZiBXZWJHUFUgY2FudmFzZXMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMuQ3Jl
YXRlQ29udGV4dFdlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250
ZXh0V2ViR1BVLk5vQ2FudmFzZXMKLVBBU1M6IENhbnZhc01hbmFnZXIgc2hvdWxkIGhhdmUgbm8g
Y2FudmFzZXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdl
YkdQVS5EZXZpY2UKLVBBU1M6IENhbnZhcyBjb250ZXh0IHNob3VsZCBiZSBXZWIgR1BVLgotCi1Q
QVNTOiBSZW1vdmVkIGNhbnZhcyBoYXMgZXhwZWN0ZWQgSUQuCi0KLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBDYW52YXMuQ3JlYXRlQ29udGV4dFdlYkdQVS5DYW52YXMuQXR0YWNoZWQKLVBBU1M6IElu
c3BlY3RvciBjYW52YXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZvciBhdHRhY2hlZCBHUFVDYW52
YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQotLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy5DcmVhdGVDb250ZXh0V2ViR1BVLkNhbnZhcy5EZXRhY2hlZAotUEFT
UzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGRldGFjaGVkIEdQ
VUNhbnZhc0NvbnRleHQgd2l0aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLgotCi0tLSBSdW5u
aW5nIHRlc3QgY2FzZTogQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUuQ2FudmFzLkNTUwotUEFT
UzogSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52
YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVkIFdlYkdQVURldmljZS4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDBmMTE4ZDA4ODZjYjc1ODAyZmExNTQw
Y2E1Zjg1NzZhYzZhMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2NyZWF0
ZS1jb250ZXh0LXV0aWxpdGllcy5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1jb250ZXh0LXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRXZWJHUFVFbmFibGVkKHRydWUpOwotCi1mdW5jdGlvbiBjcmVhdGVEZXZpY2UoKSB7
Ci0gICAgZnVuY3Rpb24gcmVjZWl2ZWREZXZpY2UoZGV2aWNlKSB7Ci0gICAgICAgIHdpbmRvdy5j
b250ZXh0cy5wdXNoKGRldmljZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcmVjZWl2ZWRBZGFw
dGVyKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihyZWNl
aXZlZERldmljZSk7Ci0gICAgfQotCi0gICAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigp
LnRoZW4ocmVjZWl2ZWRBZGFwdGVyKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LkNyZWF0ZUNvbnRleHRVdGlsaXRpZXMuaW5pdGlhbGl6ZVRl
c3RTdWl0ZSgiQ2FudmFzLkNyZWF0ZUNvbnRleHRXZWJHUFUiKTsKLQotICAgIEluc3BlY3RvclRl
c3QuQ3JlYXRlQ29udGV4dFV0aWxpdGllcy5hZGRTaW1wbGVUZXN0Q2FzZSh7Ci0gICAgICAgIG5h
bWU6ICJEZXZpY2UiLAotICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRGV2aWNlKClgLAotICAg
ICAgICBjb250ZXh0VHlwZTogV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSwKLSAgICB9KTsK
LQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5DcmVhdGVD
b250ZXh0V2ViR1BVLkNhbnZhcy5BdHRhY2hlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiRW5z
dXJlIHRoYXQgYXR0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNh
bnZhcywgaW5zdGVhZCBvZiB0aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3Qo
KSB7Ci0gICAgICAgICAgICBsZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9
PT0gV0kuQ2FudmFzLkNvbnRleHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQXR0YWNoZWRDYW52YXMoImdwdSIpYCkKLQotICAg
ICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZh
cyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGF0dGFjaGVkIEdQVUNhbnZhc0NvbnRleHQgd2l0
aG91dCBjb25uZWN0ZWQgV2ViR1BVRGV2aWNlLiIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0g
ICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLkNyZWF0ZUNvbnRl
eHRXZWJHUFUuQ2FudmFzLkRldGFjaGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUg
dGhhdCBkZXRhY2hlZCBHUFVDYW52YXNDb250ZXh0IGFyZW4ndCB0cmFja2VkIGFzIGEgY2FudmFz
LCBpbnN0ZWFkIG9mIHRoZSBXZWJHUFVEZXZpY2UuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsK
LSAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBsZXQgbGlzdGVu
ZXIgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5pdGVtLmNvbnRleHRUeXBlID09PSBX
SS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVKTsKLSAgICAgICAgICAgICAgICBjcmVhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXRhY2hlZENhbnZhcygiZ3B1IilgKQotCi0gICAgICAg
ICAgICBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc0NvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgbGlzdGVuZXIpOwotCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNyZWF0ZWQsICJJbnNwZWN0b3IgY2FudmFzIHNo
b3VsZCBub3QgYmUgY3JlYXRlZCBmb3IgZGV0YWNoZWQgR1BVQ2FudmFzQ29udGV4dCB3aXRob3V0
IGNvbm5lY3RlZCBXZWJHUFVEZXZpY2UuIik7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuQ3JlYXRlQ29udGV4dFdl
YkdQVS5DYW52YXMuQ1NTIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBDU1Mg
R1BVQ2FudmFzQ29udGV4dCBhcmVuJ3QgdHJhY2tlZCBhcyBhIGNhbnZhcywgaW5zdGVhZCBvZiB0
aGUgV2ViR1BVRGV2aWNlLiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBs
ZXQgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY2FudmFz
TWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtQWRkZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGV2ZW50LmRhdGEuaXRlbS5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdQVSk7Ci0gICAgICAgICAgICAgICAgY3JlYXRlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgY3JlYXRlQ1NTQ2FudmFzKCJncHUiLCAiY3NzLWNhbnZhcyIpYCkKLQotICAgICAgICAgICAg
V0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
Q29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLQotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZShjcmVhdGVkLCAiSW5zcGVjdG9yIGNhbnZhcyBzaG91bGQg
bm90IGJlIGNyZWF0ZWQgZm9yIENTUyBHUFVDYW52YXNDb250ZXh0IHdpdGhvdXQgY29ubmVjdGVk
IFdlYkdQVURldmljZS4iKTsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgdHJhY2tzIGNyZWF0
aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBXZWJHUFUgY2FudmFzZXMuPC9wPgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xp
ZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52
YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGJhYmU3M2M2MzE1ODUyZDA0YzllY2E5MzA1NjdmYmQ3ZGUyYTcyZTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotegotVGVzdCB0aGF0IENhbnZhc0FnZW50
IHRyYWNrcyBjaGFuZ2VzIGluIHRoZSBjbGllbnQgbm9kZXMgb2YgYSBXZWJHUFUgZGV2aWNlLgot
Ci0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RDbGllbnROb2Rlcy5XZWJH
UFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQ
VS5DcmVhdGUKLVBBU1M6IFRoZXJlIHNob3VsZCBiZSBvbmUgY2xpZW50IG5vZGUuCi1QQVNTOiBD
bGllbnQgbm9kZSAiY2FudmFzIiBpcyB2YWxpZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViMzNmZTNmOWQzYTEwZWU1YzRjMTU2OGE4M2Rh
MTQxNjA4OGYwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLXo8IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdQVUVuYWJs
ZWQodHJ1ZSk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsaWVudCgpIHsKLSAgICBsZXQgYWRh
cHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICBsZXQgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBsZXQgY29udGV4dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoImdwdSIpOwotICAg
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMucmVxdWVzdENsaWVudE5vZGVzLldlYkdQVSIpOwot
Ci0gICAgZnVuY3Rpb24gbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpIHsKLSAgICAgICAgZm9y
IChsZXQgY2xpZW50Tm9kZSBvZiBjbGllbnROb2RlcykgewotICAgICAgICAgICAgaWYgKGNsaWVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBDbGllbnQgbm9kZSAi
JHtjbGllbnROb2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IoKX0iIGlzIHZhbGlkLmApOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiSW52YWxp
ZCBjbGllbnQgbm9kZS4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5yZXF1ZXN0Q2xpZW50Tm9kZXMuV2ViR1BVLkNy
ZWF0ZSIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBjcmVhdGluZyBhIFdlYkdQ
VSBkZXZpY2UgY2xpZW50IG5vZGUgaXMgdHJhY2tlZCBjb3JyZWN0bHkuIiwKLSAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLkNhbnZhcy5hd2FpdEV2ZW50KFdJ
LkNhbnZhcy5FdmVudC5DbGllbnROb2Rlc0NoYW5nZWQpCi0gICAgICAgICAgICAudGhlbigoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC50YXJn
ZXQuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJHUFUpOwotICAgICAg
ICAgICAgICAgIGV2ZW50LnRhcmdldC5yZXF1ZXN0Q2xpZW50Tm9kZXMoKGNsaWVudE5vZGVzKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2xpZW50
Tm9kZXMubGVuZ3RoLCAxLCAiVGhlcmUgc2hvdWxkIGJlIG9uZSBjbGllbnQgbm9kZS4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgbG9nQ2xpZW50Tm9kZXMoY2xpZW50Tm9kZXMpOwotICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY3JlYXRlQ2xp
ZW50KClgKS5jYXRjaChyZWplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3QgdGhhdCBDYW52YXNBZ2VudCB0cmFja3MgY2hh
bmdlcyBpbiB0aGUgY2xpZW50IG5vZGVzIG9mIGEgV2ViR1BVIGRldmljZS48L3A+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVl
c3RTaGFkZXJTb3VyY2Utd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWEwZTRmMWYwNTU5MzQ4Yzg4M2I0MTljZjc1NGUxY2Jl
YWE1ZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotV2ViR1BVIHRlc3RzIGZv
ciBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZSBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVz
dCBzdWl0ZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0uY29tcHV0
ZS5TaGFkZXIuY29tcHV0ZQotCi1bbnVtdGhyZWFkcygyLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBj
b21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQz
IHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclt1aW50KHRocmVh
ZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLQotCi0tLSBSdW5u
aW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0u
Y29tcHV0ZS5TaGFkZXIuZnJhZ21lbnQKLVBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlv
bi4KLUVycm9yOiBNaXNzaW5nIHNoYWRlciBvZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBw
cm9ncmFtSWQKLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291
cmNlLldlYkdQVS5Qcm9ncmFtLmNvbXB1dGUuU2hhZGVyLnZlcnRleAotUEFTUzogU2hvdWxkIHBy
b2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE1pc3Npbmcgc2hhZGVyIG9mIGdpdmVuIHNoYWRl
clR5cGUgZm9yIGdpdmVuIHByb2dyYW1JZAotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFz
LnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci5jb21wdXRl
Ci1QQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTWlzc2luZyBzaGFk
ZXIgb2YgZ2l2ZW4gc2hhZGVyVHlwZSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkCi0KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdFNoYWRlclNvdXJjZS5XZWJHUFUuUHJvZ3JhbS5yZW5k
ZXIuU2hhZGVyLmZyYWdtZW50Ci0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3Np
dGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFz
LnJlcXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVLlByb2dyYW0ucmVuZGVyLlNoYWRlci52ZXJ0ZXgK
LQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRl
KDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4g
cG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIHBvc2l0aW9u
OwotfQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVz
dFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMv
cmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzJiZTYwZWQxYTJiOWUwYzlkMDk1OWExY2Y4YTYwMDQzZDJkNjhlOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGls
aXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnJl
cXVlc3RTaGFkZXJTb3VyY2UuV2ViR1BVIik7Ci0KLSAgICBmb3IgKGxldCBwcm9ncmFtVHlwZSBv
ZiBPYmplY3QudmFsdWVzKFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUpKSB7Ci0gICAgICAg
IGZvciAobGV0IHNoYWRlclR5cGUgb2YgT2JqZWN0LnZhbHVlcyhXSS5TaGFkZXJQcm9ncmFtLlNo
YWRlclR5cGUpKSB7Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAg
ICAgICAgbmFtZTogYENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlLldlYkdQVS5Qcm9ncmFtLiR7
cHJvZ3JhbVR5cGV9LlNoYWRlci4ke3NoYWRlclR5cGV9YCwKLSAgICAgICAgICAgICAgICBhc3lu
YyB0ZXN0KCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IEluc3Bl
Y3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9ncmFtVHlwZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93ICJNaXNzaW5nIHNoYWRlciBwcm9ncmFtIjsKLQotICAgICAgICAgICAgICAgICAg
ICBsZXQgbG9nU2hhZGVyID0gYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAg
bGV0IHtzb3VyY2V9ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFk
ZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLQot
ICAgICAgICAgICAgICAgICAgICBsZXQgaXNDb21wdXRlUHJvZ3JhbSA9IHByb2dyYW1UeXBlID09
PSBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGU7Ci0gICAgICAgICAgICAgICAg
ICAgIGxldCBpc0NvbXB1dGVTaGFkZXIgPSBzaGFkZXJUeXBlID09PSBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuQ29tcHV0ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcHV0ZVBy
b2dyYW0gIT09IGlzQ29tcHV0ZVNoYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0
IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGxvZ1NoYWRlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGxvZ1NoYWRlcigpCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHkgb25sb2FkPSJsb2FkKCkiPgotPHA+V2ViR1BVIHRlc3RzIGZvciBDYW52YXMucmVxdWVz
dFNoYWRlclNvdXJjZSBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2Vi
Z3B1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxNjkyMjEy
YThmM2Q3N2RkZGM1ZDBjNjE1NWM5MzhiZDg5MGViYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29s
dmVDb250ZXh0LXdlYmdwdS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAg
QEAKLVRlc3RzIGZvciB0aGUgQ2FudmFzLnJlc29sdmVDb250ZXh0IGNvbW1hbmQgZm9yIFdlYkdQ
VSBkZXZpY2VzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnJlc29sdmVDb250
ZXh0V2ViR1BVCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlc29sdmVDb250ZXh0V2Vi
R1BVLnZhbGlkSWRlbnRpZmllcgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSB0eXBlICJvYmpl
Y3QiLgotUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQt
d2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0
LXdlYmdwdS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTI1YjI3MTY0OGY0
NDRjMjNjOWQyYTg1Y2I4NTIwNjI0Y2I2MjU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNv
bnRleHQtd2ViZ3B1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFdlYkdQVUVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZURldmljZSgpIHsKLSAgICBu
YXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkudGhlbihmdW5jdGlvbiBhZGFwdGVyUmVxdWVz
dGVkKGFkYXB0ZXIpIHsKLSAgICAgICAgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkudGhlbihmdW5j
dGlvbiBkZXZpY2VSZXF1ZXN0ZWQoZGV2aWNlKSB7Ci0gICAgICAgICAgICB3aW5kb3cuY29udGV4
dFdlYkdQVSA9IGRldmljZTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
Q2FudmFzLnJlc29sdmVDb250ZXh0V2ViR1BVIik7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
Ci0gICAgICAgIG5hbWU6IGBDYW52YXMucmVzb2x2ZUNvbnRleHRXZWJHUFUudmFsaWRJZGVudGlm
aWVyYCwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0
IGZvciB0aGUgZ2l2ZW4gY2FudmFzIGlkZW50aWZpZXIuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5jYW52YXNNYW5hZ2VyLmNh
bnZhc0NvbGxlY3Rpb24uc2l6ZSwgIlRoZXJlIHNob3VsZCBiZSBubyBjYW52YXNlcy4iKTsKLQot
ICAgICAgICAgICAgbGV0IFtjYW52YXNDb2xsZWN0aW9uSXRlbUFkZGVkRXZlbnRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29s
bGVjdGlvbi5hd2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKSwKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVEZXZpY2UoKWAp
LAotICAgICAgICAgICAgXSk7Ci0KLSAgICAgICAgICAgIGxldCBjYW52YXMgPSBjYW52YXNDb2xs
ZWN0aW9uSXRlbUFkZGVkRXZlbnQuZGF0YS5pdGVtOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlLCBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BV
LCAiQWRkZWQgY2FudmFzIHNob3VsZCBiZSBhIFdlYkdQVSBkZXZpY2UuIik7Ci0KLSAgICAgICAg
ICAgIGNvbnN0IG9iamVjdEdyb3VwID0gInRlc3QiOwotICAgICAgICAgICAgbGV0IHtvYmplY3R9
ID0gYXdhaXQgQ2FudmFzQWdlbnQucmVzb2x2ZUNvbnRleHQoY2FudmFzLmlkZW50aWZpZXIsIG9i
amVjdEdyb3VwKQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChvYmplY3Qu
dHlwZSwgIm9iamVjdCIsIGBQYXlsb2FkIHNob3VsZCBoYXZlIHR5cGUgIm9iamVjdCIuYCk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG9iamVjdC5jbGFzc05hbWUsICJH
UFVEZXZpY2UiLCBgUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkdQVURldmljZSIuYCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAg
PHA+VGVzdHMgZm9yIHRoZSBDYW52YXMucmVzb2x2ZUNvbnRleHQgY29tbWFuZCBmb3IgV2ViR1BV
IGRldmljZXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVt
b3ZlLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2
OGQxZmJhZmJmZTM0ZTY4Yzk0ZDk4NzUzY2EwMjRkNTVjNGZlOGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDI4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgpOiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3Qg
Y29uc3VtZSB0b2tlbgotQ09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUg
dG9rZW4KLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgp
OiBXSExTTCBjb21waWxlIGVycm9yOiBDYW5ub3QgbGV4OiBDYW5ub3QgY29uc3VtZSB0b2tlbgot
Q09OU09MRSBNRVNTQUdFOiBHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogV0hMU0wg
Y29tcGlsZSBlcnJvcjogQ2Fubm90IGxleDogQ2Fubm90IGNvbnN1bWUgdG9rZW4KLVRlc3QgdGhh
dCBDYW52YXNNYW5hZ2VyIHRyYWNrcyBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgV2ViR1BV
IHNoYWRlciBwcm9ncmFtcy4KLQotCi09PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENhbnZhcy5TaGFk
ZXJQcm9ncmFtLldlYkdQVQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5FeGlzdGluZwotUEFTUzogQWRkZWQgImNvbXB1dGUiIFNoYWRlclByb2dyYW0u
Ci1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotUEFTUzogVGhlcmUgc2hvdWxk
IGJlIHR3byBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNo
YWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuVmFsaWQKLVBBU1M6IEFkZGVkICJjb21w
dXRlIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkFkZGVkLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIG5vdCBj
cmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMuU2hhZGVyUHJvZ3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVy
LlZhbGlkCi1QQVNTOiBBZGRlZCAicmVuZGVyIiBTaGFkZXJQcm9ncmFtLgotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVLkFkZGVkLlJlbmRlci5JbnZh
bGlkCi1QQVNTOiBTaG91bGQgbm90IGNyZWF0ZSBhIFNoYWRlclByb2dyYW0gZm9yIGFuIGludmFs
aWQgZGVzY3JpcHRvci4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5TaGFkZXJQcm9n
cmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkCi1QQVNTOiBSZW1vdmVkIFNoYWRlclByb2dy
YW0gYmVmb3JlIENhbnZhcy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nh
bnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmYjg3NzJjMGIzNzVjNDBkNWQ3YTBlNDIwMmE1
NGZmNWQ1MmQwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13
ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci13aW5kb3cuYmVmb3JlVGVzdCA9IGFzeW5jIGZ1bmN0aW9uKCkgewotICAgIGF3YWl0
IFByb21pc2UuYWxsKFsKLSAgICAgICAgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCJJTlZBTElEIiks
Ci0gICAgICAgIGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIiksCi0gICAgXSk7Ci19Owot
Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZShgQ2FudmFzLlNoYWRlclByb2dyYW0uV2ViR1BVYCk7Ci0KLSAgICBsZXQgY2Fu
dmFzZXMgPSBBcnJheS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbik7Ci0g
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXMubGVuZ3RoID09PSAxLCAiVGhlcmUgc2hv
dWxkIG9ubHkgYmUgb25lIGNhbnZhcy4iKTsKLQotICAgIGxldCBjYW52YXMgPSBjYW52YXNlc1sw
XTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXMsICJUaGVyZSBzaG91bGQgYmUgYSBj
YW52YXMuIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzLmNvbnRleHRUeXBlID09
PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR1BVLCAiQ2FudmFzIHNob3VsZCBiZSBXZWJHUFUu
Iik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFByb2dyYW1BZGRlZChwcm9ncmFtVHlwZSkg
ewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICAgICAgbGV0IGxpc3RlbmVySXRlbUFkZGVkID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xs
ZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIChl
dmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtID0gZXZlbnQuZGF0YS5pdGVt
OwotICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLnByb2dyYW1UeXBlICE9PSBwcm9ncmFtVHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KHByb2dyYW0gaW5zdGFuY2VvZiBXSS5TaGFkZXJQcm9ncmFtLCBg
QWRkZWQgIiR7cHJvZ3JhbVR5cGV9IiBTaGFkZXJQcm9ncmFtLmApOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KHByb2dyYW0uY2FudmFzID09PSBjYW52YXMsICJTaGFkZXJQ
cm9ncmFtIHNob3VsZCBiZSBmb3IgdGhlIGtub3duIENhbnZhcy4iKTsKLQotICAgICAgICAgICAg
ICAgIHJlc29sdmUocHJvZ3JhbSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiQ2FudmFzLlNoYWRl
clByb2dyYW0uV2ViR1BVLkV4aXN0aW5nIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IFNoYWRlclByb2dyYW1BZGRlZCBpcyBzZW50IGZvciBhIHByb2dyYW0gY3JlYXRlZCBiZWZv
cmUgQ2FudmFzQWdlbnQgaXMgZW5hYmxlZC4iLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAg
ICAgICAgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeGlzdHMocHJvZ3JhbVR5cGUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5TaGFkZXJQcm9ncmFtLnByb2dyYW1Gb3JUeXBl
KHByb2dyYW1UeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
YEFkZGVkICIke3Byb2dyYW1UeXBlfSIgU2hhZGVyUHJvZ3JhbS5gKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF3YWl0
IGF3YWl0UHJvZ3JhbUFkZGVkKHByb2dyYW1UeXBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGNoZWNrRXhpc3RzKFdJ
LlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuQ29tcHV0ZSksCi0gICAgICAgICAgICAgICAgY2hl
Y2tFeGlzdHMoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIpLAotICAgICAgICAg
ICAgXSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FudmFzLnNo
YWRlclByb2dyYW1Db2xsZWN0aW9uLnNpemUsIDIsICJUaGVyZSBzaG91bGQgYmUgdHdvIFNoYWRl
clByb2dyYW0uIik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5Db21w
dXRlLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGFkZGVkL3JlbW92
ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAg
ICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgYXdhaXRQcm9ncmFtQWRkZWQo
V0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRlKSwKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjcmVhdGVDb21wdXRlUGlwZWxpbmUoKWApLAot
ICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5BZGRlZC5D
b21wdXRlLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYWRkZWQv
cmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbGV0
IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCAoZXZlbnQpID0+IHsKLSAg
ICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0
ZUNvbXB1dGVQaXBlbGluZSgiSU5WQUxJRCIpYCk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy5zaGFk
ZXJQcm9ncmFtQ29sbGVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZl
bnQuSXRlbUFkZGVkLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEZhbHNlKHNoYWRlclByb2dyYW1BZGRlZCwgIlNob3VsZCBub3QgY3JlYXRlIGEgU2hhZGVyUHJv
Z3JhbSBmb3IgYW4gaW52YWxpZCBkZXNjcmlwdG9yLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJv
Z3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLlZhbGlkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFyZSBzZW50LiIsCi0gICAgICAgIGFzeW5j
IHRlc3QoKSB7Ci0gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAg
ICAgYXdhaXRQcm9ncmFtQWRkZWQoV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5SZW5kZXIp
LAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJl
bmRlclBpcGVsaW5lKClgKSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMuU2hhZGVyUHJv
Z3JhbS5XZWJHUFUuQWRkZWQuUmVuZGVyLkludmFsaWQiLAotICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgYWRkZWQvcmVtb3ZlZCBldmVudHMgYXJlIHNlbnQuIiwKLSAgICAgICAgYXN5
bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQWRkZWQgPSBmYWxzZTsK
LQotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0
aW9uLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVk
LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBzaGFkZXJQcm9ncmFtQWRkZWQgPSB0cnVl
OwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKCJJTlZBTElEIilgKTsKLQotICAgICAg
ICAgICAgY2FudmFzLnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIGxpc3RlbmVyKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uoc2hhZGVyUHJvZ3JhbUFkZGVkLCAiU2hvdWxkIG5vdCBj
cmVhdGUgYSBTaGFkZXJQcm9ncmFtIGZvciBhbiBpbnZhbGlkIGRlc2NyaXB0b3IuIik7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkNhbnZhcy5TaGFkZXJQcm9ncmFtLldlYkdQVS5QYXJlbnREZXZpY2VSZW1vdmVkIiwKLSAgICAg
ICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBTaGFkZXJQcm9ncmFtIGlzIHJlbW92ZWQg
YmVmb3JlIGl0J3MgcGFyZW50IENhbnZhcy4iLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgbGV0IGNhbnZhc1JlbW92ZWQgPSBmYWxzZTsKLQotICAgICAgICAg
ICAgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIChldmVudCkgPT4gewotICAgICAg
ICAgICAgICAgIGNhbnZhc1JlbW92ZWQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtQ291bnQgPSBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxl
Y3Rpb24uc2l6ZTsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lckl0ZW1SZW1vdmVkID0gY2FudmFz
LnNoYWRlclByb2dyYW1Db2xsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5F
dmVudC5JdGVtUmVtb3ZlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKC0tc2hh
ZGVyUHJvZ3JhbUNvdW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICBjYW52YXMuc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCBsaXN0ZW5lckl0ZW1SZW1vdmVkKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNhbnZhc1JlbW92ZWQs
ICJSZW1vdmVkIFNoYWRlclByb2dyYW0gYmVmb3JlIENhbnZhcy4iKTsKLSAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgZGVsZXRlRGV2aWNlKClgKTsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLSAgICA8cD5UZXN0IHRoYXQgQ2FudmFzTWFuYWdl
ciB0cmFja3MgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFdlYkdQVSBzaGFkZXIgcHJvZ3Jh
bXMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZWQzNzIyM2M3NWMwZmU1ODU2MWU4MmFiMGQxNDk2
NWM0YWNiZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVdlYkdQVSB0ZXN0cyBmb3IgQ2Fu
dmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2Fu
dmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBk
YXRlU2hhZGVyLldlYkdQVS5Db21wdXRlLlZhbGlkCi1QQVNTOiBTb3VyY2Ugc2hvdWxkIGhhdmUg
Y2hhbmdlZC4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLkNvbXB1dGUuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgot
RXJyb3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdp
dmVuIHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5WZXJ0ZXguVmFsaWQK
LVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUuVmVydGV4LkludmFsaWQKLVBBU1M6IFNob3Vs
ZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBGYWlsZWQgdG8gdXBkYXRlIHNoYWRlciBv
ZiBnaXZlbiBzaGFkZXJUeXBlIGZvciBnaXZlbiBwcm9ncmFtSWQKLVBBU1M6IFNvdXJjZSBzaG91
bGQgaGF2ZSBjaGFuZ2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNo
YWRlci5XZWJHUFUuRnJhZ21lbnQuVmFsaWQKLVBBU1M6IFNvdXJjZSBzaG91bGQgaGF2ZSBjaGFu
Z2VkLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUu
RnJhZ21lbnQuSW52YWxpZAotUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgotRXJy
b3I6IEZhaWxlZCB0byB1cGRhdGUgc2hhZGVyIG9mIGdpdmVuIHNoYWRlclR5cGUgZm9yIGdpdmVu
IHByb2dyYW1JZAotUEFTUzogU291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFy
ZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmFiY2QwMDY2ZTc0YzJkZDRjNTE0NzZj
NGY3MGM4MGE0ODdlZDkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi1XZWJHUFUgdGVzdHMgZm9yIENhbnZhcy51cGRhdGVTaGFkZXIgY29tbWFuZCB3aGVu
IHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb2YgYSByZW5kZXIgcGlwZWxpbmUgc2hh
cmUgdGhlIHNhbWUgbW9kdWxlLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLnVw
ZGF0ZVNoYWRlci5XZWJHUFUuU2hhcmVkVmVydGV4RnJhZ21lbnQKLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5TaW5n
bGVQaXBlbGluZQotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1QQVNTOiBWZXJ0ZXggYW5k
IEZyYWdtZW50IHNoYWRlciBzb3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVVwZGF0aW5nIHZl
cnRleCBzaGFkZXIgc291cmNlLi4uCi1QQVNTOiBWZXJ0ZXggYW5kIEZyYWdtZW50IHNoYWRlciBz
b3VyY2VzIHNob3VsZCBiZSB0aGUgc2FtZS4KLVBBU1M6IFZlcnRleCBzb3VyY2Ugc2hvdWxkIGhh
dmUgY2hhbmdlZC4KLVVwZGF0aW5nIGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4KLVBBU1M6IFZl
cnRleCBhbmQgRnJhZ21lbnQgc2hhZGVyIHNvdXJjZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgotUEFT
UzogRnJhZ21lbnQgc291cmNlIHNob3VsZCBoYXZlIGNoYW5nZWQuCi0KLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLldlYkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5N
dWx0aXBsZVBpcGVsaW5lcwotQ3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lLi4uCi1DcmVhdGluZyBy
ZW5kZXIgcGlwZWxpbmUuLi4KLVBBU1M6IEJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBz
YW1lIHNvdXJjZS4KLVVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJjZS4uLgotUEFTUzog
U291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4KLVBBU1M6IEJvdGggcGlw
ZWxpbmVzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBzb3VyY2VzLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4
RnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4Y2Y5YTQ3NTYyMjQyMWM4MzY4OWM5YWQzN2QyMTkwYTAxY2U5ZTM5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR1BVRW5hYmxlZCh0
cnVlKTsKLQotY29uc3QgcmVuZGVyUGlwZWxpbmVTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkgOiBhdHRy
aWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
KSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1sZXQgZGV2
aWNlID0gbnVsbDsKLWxldCBzaGFkZXJNb2R1bGUgPSBudWxsOwotCi1hc3luYyBmdW5jdGlvbiBj
cmVhdGVSZW5kZXJQaXBlbGluZSgpIHsKLSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBsZXQg
YWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAg
ZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0gICAgfQotCi0gICAgaWYg
KCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHJlbmRlclBpcGVsaW5lU291cmNlfSk7Ci0KLSAgICAvLyBDb3BpZWQg
ZnJvbSB3ZWJncHUvd2hsc2wvd2hsc2wuaHRtbC4KLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJm
cmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xl
LXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ci
LCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJy
Z2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBH
UFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAg
ICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJm
bG9hdCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFth
dHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy51cGRhdGVTaGFkZXIuV2Vi
R1BVLlNoYXJlZFZlcnRleEZyYWdtZW50Iik7Ci0KLSAgICBhc3luYyBmdW5jdGlvbiBhd2FpdFBy
b2dyYW1DcmVhdGVkKCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ3JlYXRpbmcgcmVu
ZGVyIHBpcGVsaW5lLi4uIik7Ci0gICAgICAgIGxldCBldmFsdXRlUHJvbWlzZSA9IEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGNyZWF0ZVJlbmRlclBpcGVsaW5lKClgKTsKLQotICAgICAg
ICBpZiAoIVdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbi5zaXplKQotICAgICAgICAg
ICAgYXdhaXQgV0kuY2FudmFzTWFuYWdlci5jYW52YXNDb2xsZWN0aW9uLmF3YWl0RXZlbnQoV0ku
Q29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQpOwotCi0gICAgICAgIGxldCBjYW52YXMgPSBBcnJh
eS5mcm9tKFdJLmNhbnZhc01hbmFnZXIuY2FudmFzQ29sbGVjdGlvbilbMF07Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhcy5jb250ZXh0VHlwZSA9PT0gV0kuQ2FudmFzLkNvbnRl
eHRUeXBlLldlYkdQVSwgIkNhbnZhcyBzaG91bGQgYmUgV2ViR1BVLiIpOwotCi0gICAgICAgIGxl
dCBpdGVtQWRkZWRFdmVudCA9IGF3YWl0IGNhbnZhcy5zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbi5h
d2FpdEV2ZW50KFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkKTsKLSAgICAgICAgbGV0IHNo
YWRlclByb2dyYW0gPSBpdGVtQWRkZWRFdmVudC5kYXRhLml0ZW07Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KHNoYWRlclByb2dyYW0ucHJvZ3JhbVR5cGUgPT09IFdJLlNoYWRlclByb2dy
YW0uUHJvZ3JhbVR5cGUuUmVuZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGJlIGEgcmVuZGVy
IHBpcGVsaW5lLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChzaGFkZXJQcm9ncmFt
LnNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyLCAiU2hhZGVyIHByb2dyYW0gc2hvdWxkIGhhdmUg
YSBzaGFyZWQgdmVydGV4IGFuZCBmcmFnbWVudCBtb2R1bGUuIik7Ci0KLSAgICAgICAgYXdhaXQg
ZXZhbHV0ZVByb21pc2U7Ci0gICAgICAgIHJldHVybiBzaGFkZXJQcm9ncmFtOwotICAgIH0KLQot
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFk
ZXIuV2ViR1BVLlNoYXJlZFZlcnRleEZyYWdtZW50LlNpbmdsZVBpcGVsaW5lIiwKLSAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHVwZGF0aW5nIHRoZSB2ZXJ0ZXgvZnJhZ21lbnQgc2hh
ZGVyIHdpbGwgYWxzbyBhZmZlY3QgdGhlIGZyYWdtZW50L3ZlcnRleCBzaGFkZXIgaWYgdGhleSBi
b3RoIHVzZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAg
ICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gYXdhaXQgYXdhaXRQcm9ncmFtQ3JlYXRlZCgpOwot
Ci0gICAgICAgICAgICBsZXQgW29yaWdpbmFsVmVydGV4U291cmNlLCBvcmlnaW5hbEZyYWdtZW50
U291cmNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2Vu
dC5yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVy
UHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQu
cmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5GcmFnbWVudCksCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKG9yaWdpbmFsVmVydGV4U291cmNlLCBv
cmlnaW5hbEZyYWdtZW50U291cmNlLCAiVmVydGV4IGFuZCBGcmFnbWVudCBzaGFkZXIgc291cmNl
cyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJVcGRhdGluZyB2ZXJ0ZXggc2hhZGVyIHNvdXJjZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQg
Q2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJUeXBlLlZlcnRleCwgIi8vIE1PRElGSUVEIFZFUlRFWFxuXG4iICsg
b3JpZ2luYWxWZXJ0ZXhTb3VyY2Uuc291cmNlKTsKLQotICAgICAgICAgICAgbGV0IFt2ZXJ0ZXhT
b3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdWZXJ0
ZXhdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJl
cXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1
ZXN0U2hhZGVyU291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3Jh
bS5TaGFkZXJUeXBlLkZyYWdtZW50KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodmVydGV4U291cmNlQWZ0ZXJVcGRhdGluZ1Zl
cnRleCwgZnJhZ21lbnRTb3VyY2VBZnRlclVwZGF0aW5nVmVydGV4LCAiVmVydGV4IGFuZCBGcmFn
bWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0
aW5nVmVydGV4LCBvcmlnaW5hbFZlcnRleFNvdXJjZSwgIlZlcnRleCBzb3VyY2Ugc2hvdWxkIGhh
dmUgY2hhbmdlZC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5n
IGZyYWdtZW50IHNoYWRlciBzb3VyY2UuLi4iKTsKLSAgICAgICAgICAgIGF3YWl0IENhbnZhc0Fn
ZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dy
YW0uU2hhZGVyVHlwZS5GcmFnbWVudCwgIi8vIE1PRElGSUVEIEZSQUdNRU5UXG5cbiIgKyBvcmln
aW5hbEZyYWdtZW50U291cmNlLnNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGxldCBbdmVydGV4U291
cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCBmcmFnbWVudFNvdXJjZUFmdGVyVXBkYXRpbmdGcmFn
bWVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQu
cmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIFdJLlNoYWRlclBy
b2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgpLAotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJl
cXVlc3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9n
cmFtLlNoYWRlclR5cGUuRnJhZ21lbnQpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbCh2ZXJ0ZXhTb3VyY2VBZnRlclVwZGF0aW5n
RnJhZ21lbnQsIGZyYWdtZW50U291cmNlQWZ0ZXJVcGRhdGluZ0ZyYWdtZW50LCAiVmVydGV4IGFu
ZCBGcmFnbWVudCBzaGFkZXIgc291cmNlcyBzaG91bGQgYmUgdGhlIHNhbWUuIik7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdFNoYWxsb3dFcXVhbChmcmFnbWVudFNvdXJjZUFm
dGVyVXBkYXRpbmdGcmFnbWVudCwgb3JpZ2luYWxGcmFnbWVudFNvdXJjZSwgIkZyYWdtZW50IHNv
dXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLldl
YkdQVS5TaGFyZWRWZXJ0ZXhGcmFnbWVudC5NdWx0aXBsZVBpcGVsaW5lcyIsCi0gICAgICAgIGRl
c2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB1cGRhdGluZyBvbmUgcGlwZWxpbmUgd29uJ3QgYWZmZWN0
IGFueSBvdGhlciBwaXBlbGluZXMgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuIiwKLSAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtMSA9IGF3
YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLSAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFt
MiA9IGF3YWl0IGF3YWl0UHJvZ3JhbUNyZWF0ZWQoKTsKLQotICAgICAgICAgICAgbGV0IFtvcmln
aW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMl0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShz
aGFkZXJQcm9ncmFtMS5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuVmVy
dGV4KSwKLSAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHNo
YWRlclByb2dyYW0yLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0
ZXgpLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNo
YWxsb3dFcXVhbChvcmlnaW5hbFZlcnRleFNvdXJjZTEsIG9yaWdpbmFsVmVydGV4U291cmNlMiwg
IkJvdGggcGlwZWxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHNvdXJjZS4iKTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0aW5nIHBpcGVsaW5lIDEgdmVydGV4IHNvdXJj
ZS4uLiIpOwotICAgICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRl
clByb2dyYW0xLmlkZW50aWZpZXIsIFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5WZXJ0ZXgs
ICIvLyBNT0RJRklFRCBWRVJURVhcblxuIiArIG9yaWdpbmFsVmVydGV4U291cmNlMS5zb3VyY2Up
OwotCi0gICAgICAgICAgICBsZXQgW25ld1ZlcnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTJd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnJlcXVl
c3RTaGFkZXJTb3VyY2Uoc2hhZGVyUHJvZ3JhbTEuaWRlbnRpZmllciwgV0kuU2hhZGVyUHJvZ3Jh
bS5TaGFkZXJUeXBlLlZlcnRleCksCi0gICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVz
dFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtMi5pZGVudGlmaWVyLCBXSS5TaGFkZXJQcm9ncmFt
LlNoYWRlclR5cGUuVmVydGV4KSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1YWwob3JpZ2luYWxWZXJ0ZXhTb3VyY2UxLCBuZXdW
ZXJ0ZXhTb3VyY2UxLCAiU291cmNlIG9mIHBpcGVsaW5lIDEgc2hvdWxkIGhhdmUgY2hhbmdlZC4i
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90U2hhbGxvd0VxdWFsKG5ld1Zl
cnRleFNvdXJjZTEsIG5ld1ZlcnRleFNvdXJjZTIsICJCb3RoIHBpcGVsaW5lcyBzaG91bGQgaGF2
ZSBkaWZmZXJlbnQgc291cmNlcy4iKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KLTxwPldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRl
ciBjb21tYW5kIHdoZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBvZiBhIHJlbmRl
ciBwaXBlbGluZSBzaGFyZSB0aGUgc2FtZSBtb2R1bGUuPC9wPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2Vi
Z3B1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJn
cHUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjMGU4NjRhNDNiNzJiMTdj
MzM1YTY1ODI2NmJmYzkwNzVlOTViMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13
ZWJncHUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMtd2ViZ3B1LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkgewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiQ2FudmFzLnVwZGF0ZVNoYWRlci5XZWJHUFUiKTsKLQotICAgIGZ1
bmN0aW9uIHRlc3Qoe25hbWUsIHByb2dyYW1UeXBlLCBzaGFkZXJUeXBlLCBzb3VyY2UsIHNob3Vs
ZFRocm93fSkgewotICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1l
LAotICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgICAgICBsZXQgc2hhZGVy
UHJvZ3JhbSA9IEluc3BlY3RvclRlc3QuU2hhZGVyUHJvZ3JhbS5wcm9ncmFtRm9yVHlwZShwcm9n
cmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFtKQotICAgICAgICAg
ICAgICAgICAgICB0aHJvdyAiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSI7Ci0KLSAgICAgICAgICAg
ICAgICBsZXQgb3JpZ2luYWxTb3VyY2UgPSBhd2FpdCBDYW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVy
U291cmNlKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlwZSk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgSW5z
cGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRl
bnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGF3YWl0IENhbnZhc0Fn
ZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUsIHNv
dXJjZSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgbmV3U291cmNlID0gYXdhaXQgQ2FudmFzQWdl
bnQucmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5
cGUpOwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RTaGFsbG93RXF1
YWwob3JpZ2luYWxTb3VyY2UsIG5ld1NvdXJjZSwgIlNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2Vk
LiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICB0ZXN0KHsKLSAg
ICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuVmFsaWQiLAot
ICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9ncmFtVHlwZS5Db21wdXRl
LAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuQ29tcHV0
ZSwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBDT01QVVRFCi1bbnVtdGhyZWFkcygyLCAx
LCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6
IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewot
ICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1ZmZlclt1aW50KHRocmVhZElELngpXSAq
IDIuMDsKLX0KLWAsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZh
cy51cGRhdGVTaGFkZXIuV2ViR1BVLkNvbXB1dGUuSW52YWxpZCIsCi0gICAgICAgIHByb2dyYW1U
eXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1UeXBlLkNvbXB1dGUsCi0gICAgICAgIHNoYWRl
clR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hhZGVyVHlwZS5Db21wdXRlLAotICAgICAgICBzb3Vy
Y2U6ICJJTlZBTElEIiwKLSAgICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAg
ICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLlZlcnRl
eC5WYWxpZCIsCi0gICAgICAgIHByb2dyYW1UeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlByb2dyYW1U
eXBlLlJlbmRlciwKLSAgICAgICAgc2hhZGVyVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5TaGFkZXJU
eXBlLlZlcnRleCwKLSAgICAgICAgc291cmNlOiBgLy8gQ0hBTkdFRCBWRVJURVgKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
aSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1Zf
UG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0g
ICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIu
V2ViR1BVLlZlcnRleC5JbnZhbGlkIiwKLSAgICAgICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclBy
b2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAgICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQ
cm9ncmFtLlNoYWRlclR5cGUuVmVydGV4LAotICAgICAgICBzb3VyY2U6ICJJTlZBTElEIiwKLSAg
ICAgICAgc2hvdWxkVGhyb3c6IHRydWUsCi0gICAgfSk7Ci0KLSAgICB0ZXN0KHsKLSAgICAgICAg
bmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdtZW50LlZhbGlkIiwKLSAgICAg
ICAgcHJvZ3JhbVR5cGU6IFdJLlNoYWRlclByb2dyYW0uUHJvZ3JhbVR5cGUuUmVuZGVyLAotICAg
ICAgICBzaGFkZXJUeXBlOiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUuRnJhZ21lbnQsCi0g
ICAgICAgIHNvdXJjZTogYC8vIENIQU5HRUQgRlJBR01FTlQKLXZlcnRleCBmbG9hdDQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0
ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDog
U1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWAsCi0gICAgfSk7Ci0KLSAg
ICB0ZXN0KHsKLSAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuV2ViR1BVLkZyYWdt
ZW50LkludmFsaWQiLAotICAgICAgICBwcm9ncmFtVHlwZTogV0kuU2hhZGVyUHJvZ3JhbS5Qcm9n
cmFtVHlwZS5SZW5kZXIsCi0gICAgICAgIHNoYWRlclR5cGU6IFdJLlNoYWRlclByb2dyYW0uU2hh
ZGVyVHlwZS5GcmFnbWVudCwKLSAgICAgICAgc291cmNlOiAiSU5WQUxJRCIsCi0gICAgICAgIHNo
b3VsZFRocm93OiB0cnVlLAotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLTxw
PldlYkdQVSB0ZXN0cyBmb3IgQ2FudmFzLnVwZGF0ZVNoYWRlciBjb21tYW5kLjwvcD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2M2RlMmJjZGJmY2IzOWRlMWNhODViMTc3MzI3Mjc1N2E4Y2RhYTEwLi5jZWI1ZTM0OWMw
ZmU3YjdmMGZhYWI4ZDg4YjE5ZDIzN2IzOWVjYWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjYxLDE2ICsxNjYxLDYgQEAgaHR0cC93cHQvY3Jl
ZGVudGlhbC1tYW5hZ2VtZW50LyBbIFNraXAgXQogaHR0cC93cHQvd2ViYXV0aG4vIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NyZWRlbnRpYWwtbWFuYWdlbWVudC8g
WyBTa2lwIF0KIAotIyBXZWJHUFUKLXdlYmdwdSBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9j
cmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9yZXF1
ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvcmVx
dWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9y
ZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZhcy9zaGFk
ZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2FudmFzL3Vw
ZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAgXQotCiAj
IFdlYkdMMgogd2Via2l0Lm9yZy9iLzE2NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC10cmFu
c2Zvcm1lZC12YXJ5aW5nLW5hbWUtY3Jhc2guaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2
NjUzNiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItbWl4LXdpdGgtYm9vbC5odG1sIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjNTM4Y2U1
MTI4N2I2MjZlNjY4ZWEwNjE2YTAxMTkzNjA3Y2FlZjYuLmMwYzVlZDA2YmYxY2FhOTRkNTc2Mzli
YmRhMDQzZWY3M2E2ZDlhMTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01NiwxNCArNTYsNiBAQCB3ZWJraXQub3JnL2IvMjAwMzA4IGZhc3QvZXZlbnRz
L3RvdWNoL2lvcy9jb250ZW50LW9ic2VydmF0aW9uL25vbi12aXNpYmxlLWNvbnRlbgogCiBtZWRp
YS92aWRlby1zdXBwb3J0cy1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0KIAotaW5zcGVjdG9yL2Nh
bnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52
YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2Nh
bnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2NhbnZh
cy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQuaHRtbCBbIFNraXAg
XQotCiAjIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZAogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZjY0MzkxZmI3MTM2MTQ0OGJiOGMwNGY0MWY2ZThlYzQ3NmQyOGMz
OC4uMDAyYTQ3MTBmNTJiZWNiNTJlNzQyY2EzYWQ1Y2E4ZTMwNmE4OTY3ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDcsMTUgKzQ3LDYg
QEAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaSBbIFNraXAgXQogY3NzLXR5cGVkb20gWyBTa2lw
IF0KIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIAotd2ViZ3B1IFsgU2tpcCBdCi1pbnNwZWN0b3Iv
Y2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3JlcXVlc3RDbGllbnROb2Rlcy13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVjdG9yL2Nh
bnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3Iv
Y2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi1pbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgU2tp
cCBdCi0KICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdL
MSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhY2FwdHVyZS1zdHJlYW1zCkBAIC0xMzgzLDQgKzEzNzQsNCBAQCB3ZWJraXQub3JnL2Iv
MjI3NzYyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlvbi9m
b2N1cy90aGUtYQogd2Via2l0Lm9yZy9iLzIyODU2MSBodHRwL3Rlc3RzL21lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy9tYWNvcy1mdWxsc2NyZWVuLW1lZGlhLWNvbnRyb2xzL21hY29zLWZ1bGxz
Y3JlZW4tbWVkaWEtY29udHJvbHMtbGl2ZS1icm9hZGNhc3QuaHRtbCBbIFBhc3MgVGltZW91dCBd
CiAKICMgd2Via2l0Lm9yZy9iLzIyODIwMCBBZGp1c3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgZm9y
IE1vbnRlcmV5IG9uIE9wZW4gU291cmNlIDxyZGFyOi8vODAzNDUwNDg+OgotWyBNb250ZXJleSBd
IHdlYnJ0Yy9oMjY0LWhpZ2guaHRtbCBbIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKK1sgTW9udGVyZXkgXSB3ZWJydGMvaDI2NC1oaWdoLmh0bWwgWyBGYWlsdXJlIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxOTA0
NjMxMTNhMzE1NTczZTA3OTJjMjYwNGMzZTZkYzk2MGZkMDAwLi4zNmUxN2Y2NTAxNzg1ODJhMzI4
YTM1ZjQ4N2ZlODYyNzk3NDYxYTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC05NzUsMjEgKzk3NSwxMyBAQCB3ZWJraXQub3JnL2IvMTg3
ODI4IFsgUmVsZWFzZSBdIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2ZsZXgtY29udGVudC1zaXplZC1j
b2x1bW5zLQogCiB3ZWJraXQub3JnL2IvMTk4NjYzIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1zYW1lLXNpdGUtc2hvdWxkLWhh
dmUtYWNjZXNzLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTk4OTIxIHdl
YmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLQotd2Via2l0Lm9yZy9iLzE5OTY1MSBbIE1vamF2ZSBEZWJ1ZyBdIHdlYmdwdS93aGxz
bC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xvdyBdCi0KIHdlYmtpdC5vcmcvYi8xOTkwODkg
WyBEZWJ1ZyBdIHBsdWdpbnMvd2luZG93LW9wZW4uaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8v
cHJvYmxlbS81NjUwNjA2Mz4gTGF5b3V0IFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0
bWwgaXMgYSBmbGFreSBmYWlsdXJlICgyMDMyNTYpCiB3ZWJraXQub3JnL2IvMjAzMjU2IFsgRGVi
dWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8yMDUzMDEgaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdl
YmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwNTgwOCBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC91bmljb2RlLWJpZGktb3RoZXItbmV1dHJhbHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTg5NDIgd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJp
YW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcv
Yi8yMDY4NjQgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNjA5MjkyMzk+IFsgbWFj
T1Mgd2syIF0gZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sIGlz
IGEgZmxha3kgdGltZW91dApAQCAtOTk5LDkyICs5OTEsNDggQEAgd2Via2l0Lm9yZy9iLzIwNjcw
OCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBbIFBh
c3MgRmEKIAogd2Via2l0Lm9yZy9iLzIwNjk2MSBbIE1vamF2ZSBdIG1lZGlhL21lZGlhLWZyYWdt
ZW50cy9UQzAwMzUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcwNzgg
d2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzIwNzExNyB3ZWJncHUvd2hsc2wvbmVzdGVk
LWxvb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDcx
Mjcgd2ViZ3B1L3dobHNsL2J1ZmZlci12ZXJ0ZXguaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDY5MDMgaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0
Lmh0bWwgWyBQYXNzIENyYXNoIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3MTQxIFsgRGVi
dWcgXSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LWJpdG1hcHJlbmRlcmVyLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3MTY2IGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDcxOTkgd2ViZ3B1L3do
bHNsL2xvb3BzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2Iv
MjA3MjAwIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjAyIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUtZ3JhZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9y
Zy9iLzIwNjcxOCBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJn
bDIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMjA3MjA5IGluc3BlY3Rvci9o
ZWFwL2dldFByZXZpZXcuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9y
Zy9iLzIwNzIyMiB3ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy0yLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3MjY3IHdlYmdwdS93aGxz
bC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3MjY5IFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlcnZlci1jbG9zZS5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtp
dC5vcmcvYi8xODM2ODQgaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA3Mjk0IHdlYmdwdS93aGxz
bC9kb3QtZXhwcmVzc2lvbnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtp
dC5vcmcvYi8yMDczMDMgbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS1pZnJhbWUu
aHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMjA3NDYwIHdlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NDY1IFsgRGVidWcgXSBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc0NjYgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjA3NDc2IHdlYmdwdS93aGxzbC9zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVz
LXByb3Blcmx5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2Iv
MjA3NTA4IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1sb2FkLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3NTk5IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NjMyIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3N0aWNreS9zdGlja3ktZHVyaW5nLXJ1YmJlcmJhbmQuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2MzEgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvZml4ZWQvZml4ZWQtZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc2MzUgZmFzdC9ldmVudHMv
YmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXSAKIAotd2Via2l0Lm9yZy9iLzIwNzYzNiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxl
LWJpYXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8yMDc2
Mzggd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMjA2ODUyIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1z
aGFyZWRWZXJ0ZXhGcmFnbWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9i
LzIwNzcwMCB3ZWJncHUvd2hsc2wvcmV0dXJuLWxvY2FsLXZhcmlhYmxlLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA3NzI4IFsgUmVsZWFzZSBdIGFjY2Vz
c2liaWxpdHkvcHJlc3MtdGFyZ2V0cy1jZW50ZXItcG9pbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLXdlYmtpdC5vcmcvYi8yMDc3Nzkgd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLXBvaW50ZXIt
c2hvdWxkLXR5cGUtY2hlY2suaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtp
dC5vcmcvYi8yMDc3OTYgWyBSZWxlYXNlIF0gZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFk
b3cuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc3OTgg
d2VicnRjL2Nvbm5lY3Rpb24tc3RhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8yMDc4Mzkgd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotCi13ZWJraXQub3JnL2IvMjA3ODY0IHdlYmdwdS93aGxzbC9kby13aGlsZS1s
b29wLWNvbnRpbnVlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3Jn
L2IvMjA3OTM4IGh0dHAvd3B0L2NyeXB0by9kZXJpdmUtaG1hYy1rZXktY3Jhc2guYW55Lmh0bWwg
WyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwNzk2MiBhY2Nlc3NpYmlsaXR5L21hYy9h
cmlhLW1lbnUtaXRlbS1zZWxlY3RlZC1ub3RpZmljYXRpb24uaHRtbCBbIFNsb3cgXQogCi13ZWJr
aXQub3JnL2IvMjA4MDA1IHdlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUtdmFsdWVzLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjA4MDE0IFsgRGVidWcg
XSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL25vLXN1YnByb3RvY29sLmh0bWwgWyBQ
YXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIwODA2MiBodHRwL3dwdC9mZXRjaC9kaXNhYmxl
LXNwZWN1bGF0aXZlLWZvci1yZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMDgyMjIgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA4MzQwIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8y
MDgzOTAgWyBEZWJ1ZyBdIGZhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1yZXBhaW50Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA4Mzk2IGh0dHAvdGVzdHMvbWlzYy9v
YmplY3QtZW1iZWRkaW5nLXN2Zy1kZWxheWVkLXNpemUtbmVnb3RpYXRpb24tMi5odG0gWyBQYXNz
IEZhaWx1cmUgXQpAQCAtMTA5Nyw4ICsxMDQ1LDYgQEAgd2Via2l0Lm9yZy9iLzIwODg4OSBmYXN0
L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT24K
IAogd2Via2l0Lm9yZy9iLzIwOTAwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGlt
aW5nLzA4NS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTAyNCBbIERl
YnVnIF0gd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb21wYXJlLmh0bWwgWyBQYXNzIENyYXNoIF0KLQog
d2Via2l0Lm9yZy9iLzIwOTA3NyBzdmcvY3VzdG9tL29iamVjdC1zaXppbmctZXhwbGljaXQtd2lk
dGgueGh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA5MDUyIGZhc3Qvc2Ny
b2xsaW5nL21hYy9hYnNvbHV0ZS1pbi1vdmVyZmxvdy1zY3JvbGwtZHluYW1pYy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTExOTAsOSArMTEzNiw2IEBAIHdlYmtpdC5vcmcvYi82
ODI3OCBodHRwL3Rlc3RzL2hpc3RvcnkvYmFjay13aXRoLWZyYWdtZW50LWNoYW5nZS5weSBbIFBh
c3MgRmFpbHVyCiAjIDxyZGFyOi8vcHJvYmxlbS8zNzMzMDM3Nz4gQVNhbiB0ZXN0cyBleGl0aW5n
IGVhcmx5IGR1ZSB0byB0aW1lb3V0cwogWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cyBbIFNraXAgXQogCi0jIDxy
ZGFyOi8vcHJvYmxlbS82MDEwNTkyNz4gWyBNYWMgd2syIFJlbGVhc2UgXSB3ZWJncHUvd2hsc2wv
bWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBpcyBmbGFreSBmYWlsaW5nCi1bIFJlbGVhc2UgXSB3
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0K
ICMgPHJkYXI6Ly9wcm9ibGVtLzYwNTA3NTI2PiBSRUdSRVNTSU9OIChyMjU4MTI0LXIyNTgyMzAp
IFsgTWFjIHdrMiBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lv
bnMvYmxvY2tlZC13ZWJzb2NrZXQtY3Jhc2guaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMvYmxvY2tlZC13ZWJzb2Nr
ZXQtY3Jhc2guaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCkBAIC0xMjgwLDggKzEyMjMsNiBAQCB3ZWJr
aXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZh
bGlkYXRpb24tYmFjay1uYXZpZwogCiB3ZWJraXQub3JnL2IvMjE1NTgxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRzLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjE1NjA2IHdlYmdwdS93aGxzbC9k
by13aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJr
aXQub3JnL2IvMjE1NjExIFsgRGVidWcgXSBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9v
dmVyZmxvdy1vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQog
CiAjIHJkYXI6Ly82NTI2OTU4OSAoWyBtYWNPUyBhbmQgaU9TIF0gbWVkaWEvdnA5Lmh0bWwgaXMg
ZmFpbGluZyBjb25zaXN0ZW50bHkuKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGYxY2YyNGY0ZjFhYjNkMDY0MGIzMmUyMWE0
ZWM1MDlkYWQyMmJjODEuLmRmOTAxMDkwNGQ1NzdlODVhMDc2NjY3YTkzN2FkNzdlNmQ4ZjU5NTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTksNyArOSw2IEBAIG5hdmlnYXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9y
LmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdh
dG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKLW5hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmln
YXRvci5pc0xvZ2dlZEluKCkgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBu
YXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKQEAgLTQzLDcgKzQyLDYgQEAgbmF2aWdhdG9yLmNvbnRh
Y3RzIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRl
bnRpYWxzIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwotbmF2aWdh
dG9yLmdwdSBpcyBPSwogbmF2aWdhdG9yLmlzTG9nZ2VkSW4oKSBpcyBPSwogbmF2aWdhdG9yLmph
dmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MmExYjk3Y2U4NzM1MmJjZThlMDYw
NTEyMGUwNTU0N2EwNzQ4MTg3Li4xOTRjMTYxNjk5ZGJiMTk5MzgxNzgwNGY0NTUzNmYzYTE5MDA2
MWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU0
NSwzOCArMTU0NSw2IEBAIHdlYmtpdC5vcmcvYi8yMTIxNzIgWyBDYXRhbGluYSBdIGZhc3QvdGV4
dC9mb250LWNvbGxlY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1CiAKIHdlYmtpdC5vcmcvYi8y
MDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L3ZpZGVvX3RpbWV1cGRhdGVfb25fc2Vlay5o
dG1sIFsgVGltZW91dCBQYXNzIF0KIAotIyByZGFyOi8vNTU0MDU4NTEgKFsgbWFjT1MgXSBMYXlv
dXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5nbGUtc3RyaXAuaHRtbCBhcmUgZmxha3kgZmFpbHVyZXMu
ICgyMDE4MjcpKQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5n
bGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAx
ODI3IHdlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5n
bGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAx
ODI3IHdlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgyNyB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMTgy
NyB3ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDE4Mjcgd2ViZ3B1L3ZpZXdwb3J0LXNjaXNzb3ItcmVjdC10
cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyByZGFyOi8v
NTUyMDQ3NzUgKFJFR1JFU1NJT04gKE1hY09TKTogTWFueSB3ZWJncHUvd2hsc2wvKiB0ZXN0cyBh
cmUgZmxha3kgZmFpbHVyZXMpCi13ZWJncHUvd2hsc2wvYXJiaXRyYXJ5LXZlcnRleC1hdHRyaWJ1
dGUtbG9jYXRpb25zLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNs
L25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTAuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTMuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTcuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdIAotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE4Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQotd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI2Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQot
Ci13ZWJraXQub3JnL2IvMjA1NTI0IHdlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzIwNTUyNSB3ZWJncHUvd2hs
c2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiAjIFRo
ZSB0ZXN0IHJ1bm5lciBpcyBmYWlsaW5nIGluIGFuIHVucmVsYXRlZCwgdW5leHBsYWluZWQsIGlu
dmlzaWJsZSB0byB0aGUgaHVtYW4gZXllLCAyIHBpeGVscyBkaWZmZXJlbmNlLgogd2Via2l0Lm9y
Zy9iLzIwMTQwMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS12aWRlby1pcy12aXNpYmxlLmh0bWwgWyBTa2lwIF0KIApAQCAtMTYxMiwxMCAr
MTU4MCw2IEBAIHdlYmtpdC5vcmcvYi8yMDIwNjQgd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVy
cnVwdGVkLWluLWJhY2tncm91bmQuaHRtbCBbIFBhc3MKIAogd2Via2l0Lm9yZy9iLzIwNTc1NiB3
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvZ2xzbDMvbm8tYXR0cmlidXRlLXZlcnRleC1zaGFkZXIu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDU4NjIgd2ViZ3B1L3dobHNs
L3doaWxlLWxvb3AtYnJlYWsuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjA1ODY1IHdlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1l
LTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1ODY3IHdl
YmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotCiB3ZWJraXQub3JnL2IvMjA0MzEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3ZnL2ltcG9ydC9zdHJ1Y3QtZG9tLTA2LWItbWFudWFsLnN2ZyBbIEZhaWx1cmUgUGFzcyBdCiAK
ICMgTG9jYWxlLXNwZWNpZmljIHNoYXBpbmcgaXMgb25seSBlbmFibGVkIG9uIGNlcnRhaW4gT1Nl
cy4KQEAgLTE2OTYsOCArMTY2MCw2IEBAIHdlYmtpdC5vcmcvYi8yMDg1OTIgc3ZnL2N1c3RvbS9v
YmplY3Qtc2l6aW5nLWV4cGxpY2l0LWhlaWdodC54aHRtbCBbIFBhc3MgRmFpbHVyCiAKIHdlYmtp
dC5vcmcvYi8yMDkyNTcgc3ZnL2FzLW9iamVjdC9vYmplY3QtYm94LXNpemluZy1uby13aWR0aC1o
ZWlnaHQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDkwNTYgd2ViZ3B1
L3dobHNsL3VpbnQtYml0d2lzZS5odG1sIFsgUGFzcyBDcmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8y
MDkwNzIgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY3NzL3NoYXJlZC1zdHlsZXNoZWV0LW11dGF0aW9u
LXByZWNvbnN0cnVjdC5odG1sIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzIwNzE1MCBwbGF0Zm9ybS9tYWMvd2VicnRjL2NhcHR1cmVDYW52YXMtd2VicnRjLXNvZnR3YXJl
LWVuY29kZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KQEAgLTE3NzEsOCArMTczMyw2
IEBAIHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvCiAKIHdlYmtpdC5vcmcvYi8yMTUxNzcgWyBSZWxl
YXNlIF0gZWRpdGluZy9zZWxlY3Rpb24vbmF2aWdhdGlvbi1jbGVhcnMtZWRpdG9yLXN0YXRlLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjE1MjQ3IHdlYmdwdS93aGxzbC9k
b250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIxNTI3MSBbIERlYnVnIF0gc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL25l
dy1kYXRhYmFzZS1hZnRlci11c2VyLWRlbGV0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzIxNTQ1MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLXBsYXktbmVnYXRpdmUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCkBAIC0xODY5LDExICsxODI5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5LXdpdGhvdXQKICMg
PHJkYXI6Ly9wcm9ibGVtLzYyMzE3NzIzPiBbIEd1YXJkLU1hbGxvYyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3RlLXBsYXliYWNrL3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0
aWFsLWNhbGxiYWNrLmh0bWwgaXMgZmxha3kgY3Jhc2hpbmcgd2l0aCAnV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3RlSGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzQ2hhbmdlZCgpJyBhbGVy
dC4KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxh
eWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRpYWwtY2FsbGJhY2suaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCi0jIDxyZGFyOi8vcHJvYmxlbS81Njk2MTQ5OT4gTWFueSB3ZWJHUFUgdGVzdCBmYWls
IG9uIHByb2R1Y3Rpb24gYW5kIGNyYXNoIG9uIERlYnVnCi1bIEJpZ1N1cisgXSBpbnNwZWN0b3Iv
Y2FudmFzL3JlcXVlc3RTaGFkZXJTb3VyY2Utd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLVsgQmlnU3Vy
KyBdIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS1zaGFyZWRWZXJ0ZXhGcmFn
bWVudC5odG1sIFsgU2tpcCBdCi1bIEJpZ1N1cisgXSBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci13ZWJncHUuaHRtbCBbIFNraXAgXQotCiAjIFdlYlAgaW1hZ2VzCiBbIEJpZ1N1cisgXSBm
YXN0L2ltYWdlcy93ZWJwLWFzLWltYWdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQog
WyBCaWdTdXIrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtd2VicC1hcy1pbWFnZS5odG1sIFsgUGFz
cyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZjZWI2
OGZmODgxZjJlYWYyNzkxYTQwM2FhY2VkZjY1NDk4YTFjZDUuLmY0YzIxYjA3Nzk3NGNiZDBlNWRk
MTdkZGZiMDliMDRiYzliN2E2ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00MTI5LDE2ICs0MTI5LDYgQEAgd2Via2l0Lm9yZy9iLzE5MDQ3MiBmYXN0
L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWh0bWxjb2xsZWN0aW9uLmh0bWwgWwog
CiB3ZWJraXQub3JnL2IvMTkwNTIwIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWFjcm9z
cy1zaGFkb3ctYm91bmRhcmllcy13aXRoLXN0eWxlLTIuaHRtbCBbIENyYXNoIEZhaWx1cmUgXQog
Ci0jIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKLXdlYmdwdSBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9jcmVhdGUtY29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLWlu
c3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQot
aW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ29udGV4dC13ZWJncHUuaHRtbCBbIFNraXAgXQotaW5z
cGVjdG9yL2NhbnZhcy9zaGFkZXJQcm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lw
IF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi1p
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci13ZWJncHUtc2hhcmVkVmVydGV4RnJhZ21lbnQu
aHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5s
aW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTkxMTk0IGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGlu
Zy1pbWFnZXMyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTExOTQgZmFzdC9kb20v
aW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sIFsgRmFpbHVyZSBdCkBAIC00NjY3
LDQgKzQ2NTcsNCBAQCB3ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zZm9ybS1hbmltYXRp
b24tdG8tc2NhbGUtemVyby13aXRoLWltcGxpY2l0LWZyb20tawogZmFzdC9ldmVudHMvZHJvcHpv
bmUtMDAyLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFn
LWFuZC1kcm9wLmh0bWwgWyBQYXNzIENyYXNoIF0KIGZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1s
MTBuLWlucHV0Lmh0bWwgWyBQYXNzIENyYXNoIF0KLWZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1z
cGluYnV0dG9uLWluLW11bHRpLWNvbHVtbi5odG1sIFsgUGFzcyBDcmFzaCBdClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorZmFzdC9mb3Jtcy9udW1iZXIvbnVtYmVyLXNwaW5idXR0b24taW4t
bXVsdGktY29sdW1uLmh0bWwgWyBQYXNzIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9iaW5kLWdyb3Vwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmlu
ZC1ncm91cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzA2
MDFkMmRjOTQ4NGJjNjJlNzg3YTBlNmQxMTY2MTFiMzgwOWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9iaW5kLWdyb3Vw
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBDcmVh
dGUgYW5kIHVzZSBhIGJhc2ljIEdQVUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRlIGFuZCB1c2UgbWFu
eSBHUFVCaW5kR3JvdXBzIGluIGEgc2luZ2xlIGNvbXB1dGUgcGFzcy4KLVBBU1MgQ3JlYXRlIGFu
ZCBhY2Nlc3MgYSB1bmlmb3JtLWJ1ZmZlciBpbiBhIEdQVUJpbmRHcm91cC4KLVBBU1MgQ3JlYXRl
IGFuZCBhY2Nlc3MgYSBzYW1wbGVkIHRleHR1cmUgaW4gYSBHUFVCaW5kR3JvdXAuCi1QQVNTIENy
ZWF0ZSBhbmQgdXNlIG11bHRpcGxlIEdQVUJpbmRHcm91cHMgaW4gYSBzaW5nbGUgZGlzcGF0Y2gu
Ci1QQVNTIEJpbmQgYSBzaW5nbGUgR1BVQnVmZmVyIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4g
ZGlmZmVyZW50IEdQVUJpbmRHcm91cHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JpbmQtZ3JvdXBzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3NzEwMjUxMTAyZGRlN2Q0YTk2YzljMjZj
ZTNkNjgwNGFlMTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmluZC1ncm91cHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDQ0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
dGl0bGU+Q3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3VwLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRl
c3RzID0ge307Ci0KLWNvbnN0IGJhc2ljQnVmZmVyU2hhZGVyID0gYAotW251bXRocmVhZHMoMSwg
MSwgMSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZV9tYWluKGRldmljZSBpbnRbXSBidWZmZXIgOiBy
ZWdpc3Rlcih1MCkpCi17Ci0gICAgKytidWZmZXJbMF07Ci19Ci1gOwotCi1sZXQgYmFzaWNQaXBl
bGluZTsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgdXNlIGEgYmFzaWMgR1BVQmluZEdyb3VwLiJdID0g
YXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBidWZmZXJMYXlvdXRCaW5kaW5nID0gewotICAg
ICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01Q
VVRFLAotICAgICAgICB0eXBlOiAic3RvcmFnZS1idWZmZXIiCi0gICAgfTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeyBiaW5kaW5n
czogW2J1ZmZlckxheW91dEJpbmRpbmddIH0pOwotCi0gICAgY29uc3QgYmFzaWNCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JB
R0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0geyBidWZmZXI6IGJhc2ljQnVmZmVyLCBzaXplOiA0IH07Ci0gICAgY29uc3QgYmluZEdyb3Vw
QmluZGluZyA9IHsgYmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmcgfTsKLQotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoeyBsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXSB9KTsKLQotICAgIGNvbnN0
IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBiYXNpY1NoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBiYXNpY0J1ZmZlclNoYWRl
ciB9KTsKLSAgICBiYXNpY1BpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7
Ci0gICAgICAgIGxheW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTog
ewotICAgICAgICAgICAgbW9kdWxlOiBiYXNpY1NoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29u
c3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAg
cGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMg
PSBuZXcgSW50MzJBcnJheShhd2FpdCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAg
YmFzaWNCdWZmZXIudW5tYXAoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDEsICJT
dG9yYWdlIGJ1ZmZlciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQot
dGVzdHNbIkNyZWF0ZSBhbmQgdXNlIG1hbnkgR1BVQmluZEdyb3VwcyBpbiBhIHNpbmdsZSBjb21w
dXRlIHBhc3MuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlckxheW91dEJp
bmRpbmcgPSB7Ci0gICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNo
YWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICB9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dCh7IGJpbmRpbmdzOiBbYnVmZmVyTGF5b3V0QmluZGluZ10gfSk7Ci0KLSAgICBjb25zdCBi
YXNpY0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7IGJ1ZmZlcjogYmFzaWNCdWZmZXIsIHNpemU6IDQgfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0geyBiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZyB9OwotCi0gICAgY29uc3QgbnVtR3JvdXBzID0gMTAwMDsKLSAgICBsZXQgYmluZEdyb3Vw
cyA9IG5ldyBBcnJheShudW1Hcm91cHMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtR3Jv
dXBzOyArK2kpCi0gICAgICAgIGJpbmRHcm91cHNbaV0gPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
KHsgbGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ10g
fSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5j
b2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21w
dXRlUGFzcygpOwotCi0gICAgbGV0IGogPSAwOwotICAgIGZvciAoOyBqIDwgbnVtR3JvdXBzOyAr
K2opIHsKLSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoYmFzaWNQaXBlbGluZSk7Ci0g
ICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXBzW2pdKTsKLSAgICAg
ICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgfQotCi0gICAgcGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2Fp
dCBiYXNpY0J1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgYmFzaWNCdWZmZXIudW5tYXAoKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIGosICJTdG9yYWdlIGJ1ZmZlciBhY2Nlc3Nl
ZCBzdWNjZXNzZnVsbHkgdGhyb3VnaCBtdWx0aXBsZSBiaW5kIGdyb3Vwcy4iKTsKLX07Ci0KLWNv
bnN0IHVuaWZvcm1CdWZmZXJTaGFkZXIgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1
dGUgdm9pZCBjb21wdXRlX21haW4oY29uc3RhbnQgaW50W10gdW5pZm9ybXMgOiByZWdpc3Rlcihi
MCksIGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MSkpCi17Ci0gICAgYnVmZmVyWzBd
ICs9IHVuaWZvcm1zWzBdOwotfQotYDsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgdW5p
Zm9ybS1idWZmZXIgaW4gYSBHUFVCaW5kR3JvdXAuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVC
dWZmZXJNYXBwZWQoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsK
LSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5QnVmZmVyKS5zZXQoWzQyXSk7Ci0gICAgdW5p
Zm9ybUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmljZS5j
cmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAg
ICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0
YWdlLkNPTVBVVEUsCi0gICAgICAgICAgICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAgICAg
IH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBH
UFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVy
IgotICAgICAgICB9XQotICAgIH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0LAotICAgICAg
ICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNv
dXJjZTogewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogdW5pZm9ybUJ1ZmZlciwKLSAgICAgICAg
ICAgICAgICBzaXplOiA0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAg
IGJpbmRpbmc6IDEsCi0gICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgIGJ1
ZmZlcjogc3RvcmFnZUJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBM
YXlvdXRdIH0pOwotCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7IGNvZGU6IHVuaWZvcm1CdWZmZXJTaGFkZXIgfSk7Ci0KLSAgICBjb25zdCBwaXBl
bGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoewotICAgICAgICBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0LAotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVs
ZTogc2hhZGVyTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogImNvbXB1dGVfbWFpbiIK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShw
aXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShhd2FpdCBzdG9yYWdl
QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBzdG9yYWdlQnVmZmVyLnVubWFwKCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRzWzBdLCA0MiwgIlN0b3JhZ2UgYnVmZmVyIGJpbmRpbmcgd3Jp
dHRlbiB0byBzdWNjZXNzZnVsbHkuIik7Ci19OwotCi1jb25zdCBzYW1wbGVkVGV4dHVyZVNoYWRl
ciA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVfbWFpbihU
ZXh0dXJlMkQ8dWludD4gaW5wdXRUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIGlucHV0
U2FtcGxlciA6IHJlZ2lzdGVyKHMxKSwgZGV2aWNlIHVpbnRbXSBvdXRwdXQgOiByZWdpc3Rlcih1
MikpCi17Ci0gICAgb3V0cHV0WzBdID0gU2FtcGxlKGlucHV0VGV4dHVyZSwgaW5wdXRTYW1wbGVy
LCBmbG9hdDIoMCwgMCkpOwotfQotYDsKLQotdGVzdHNbIkNyZWF0ZSBhbmQgYWNjZXNzIGEgc2Ft
cGxlZCB0ZXh0dXJlIGluIGEgR1BVQmluZEdyb3VwLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBjb25zdCBbdGV4dHVyZURhdGFCdWZmZXIsIHRleHR1cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
U1JDIH0pOwotICAgIG5ldyBVaW50MzJBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpLnNldChbNDJd
KTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZVNp
emUgPSB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxIH07Ci0gICAgY29uc3QgdGV4dHVy
ZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0g
ICAgICAgIGZvcm1hdDogInJnYmE4dWludCIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNh
Z2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVAotICAgIH0pOwotCi0gICAgY29u
c3Qgb3V0cHV0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAg
ICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsK
LSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAg
ICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6
ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDEs
Ci0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAg
ICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJpbmRpbmc6
IDIsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAg
ICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAgICAg
cmVzb3VyY2U6IGRldmljZS5jcmVhdGVTYW1wbGVyKHt9KQotICAgICAgICB9LCB7Ci0gICAgICAg
ICAgICBiaW5kaW5nOiAyLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAg
ICBidWZmZXI6IG91dHB1dEJ1ZmZlciwKLSAgICAgICAgICAgICAgICBzaXplOiA0Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH1dCi0gICAgfSk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2FtcGxlZFRleHR1cmVTaGFkZXIgfSk7
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
eyBiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgIGNvbnN0IHBp
cGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxheW91dDog
cGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9k
dWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWlu
IgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJU
b1RleHR1cmUoewotICAgICAgICBidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLAotICAgICAgICBy
b3dQaXRjaDogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAgICB9LCB7IHRleHR1cmU6IHRl
eHR1cmUgfSwgdGV4dHVyZVNpemUpOwotCi0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIHBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLQotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmlu
aXNoKCldKTsKLQotICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgVWludDMyQXJyYXkoYXdhaXQgb3V0
cHV0QnVmZmVyLm1hcFJlYWRBc3luYygpKTsKLSAgICBvdXRwdXRCdWZmZXIudW5tYXAoKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdHNbMF0sIDQyLCAiQ29ycmVjdCB2YWx1ZSBzYW1wbGVkIGZy
b20gYSBib3VuZCAyRCB0ZXh0dXJlLiIpOwotfTsKLQotY29uc3QgY29tYm9TaGFkZXIgPSBgCi1b
bnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlX21haW4oCi0gICAgVGV4
dHVyZTJEPHVpbnQ+IGlucHV0VGV4dHVyZSA6IHJlZ2lzdGVyKHQwLCBzcGFjZTApLCAKLSAgICBz
YW1wbGVyIGlucHV0U2FtcGxlciA6IHJlZ2lzdGVyKHMwLCBzcGFjZTEpLCAKLSAgICBjb25zdGFu
dCB1aW50W10gaW5wdXQgOiByZWdpc3RlcihiMCwgc3BhY2UyKSwgCi0gICAgZGV2aWNlIHVpbnRb
XSBvdXRwdXQgOiByZWdpc3Rlcih1MCwgc3BhY2UzKSkKLXsKLSAgICBvdXRwdXRbMF0gPSBpbnB1
dFswXSArIFNhbXBsZShpbnB1dFRleHR1cmUsIGlucHV0U2FtcGxlciwgZmxvYXQyKDAsIDApKTsK
LX0KLWA7Ci0KLXRlc3RzWyJDcmVhdGUgYW5kIHVzZSBtdWx0aXBsZSBHUFVCaW5kR3JvdXBzIGlu
IGEgc2luZ2xlIGRpc3BhdGNoLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBbdGV4
dHVyZURhdGFCdWZmZXIsIHRleHR1cmVBcnJheUJ1ZmZlcl0gPSBkZXZpY2UuY3JlYXRlQnVmZmVy
TWFwcGVkKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIH0pOwotICAg
IG5ldyBVaW50MzJBcnJheSh0ZXh0dXJlQXJyYXlCdWZmZXIpLnNldChbMTddKTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZVNpemUgPSB7IHdpZHRo
OiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxIH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5j
cmVhdGVUZXh0dXJlKHsKLSAgICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCi0gICAgICAgIGZvcm1h
dDogInJnYmE4dWludCIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8
IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVAotICAgIH0pOwotCi0gICAgY29uc3QgW2lucHV0QnVm
ZmVyLCBpbnB1dEFycmF5QnVmZmVyXSA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXpl
OiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgVWludDMyQXJy
YXkoaW5wdXRBcnJheUJ1ZmZlcikuc2V0KFsyNV0pOwotICAgIGlucHV0QnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTog
NCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RCB9KTsKLQotICAgIGNvbnN0IGJnbDAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsK
LSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAg
ICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6
ICJzYW1wbGVkLXRleHR1cmUiCi0gICAgICAgIH1dCi0gICAgfSk7Ci0gICAgY29uc3QgYmdsMSA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewotICAgICAgICBiaW5kaW5nczogW3sKLSAg
ICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJT
dGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInNhbXBsZXIiCi0gICAgICAgIH1dCi0g
ICAgfSk7Ci0gICAgY29uc3QgYmdsMiA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoewot
ICAgICAgICBiaW5kaW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAg
ICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTog
InVuaWZvcm0tYnVmZmVyIgotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnbDMgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAg
ICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgdmlzaWJpbGl0eTogR1BVU2hhZGVyU3Rh
Z2UuQ09NUFVURSwKLSAgICAgICAgICAgIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciIKLSAgICAgICAg
fV0KLSAgICB9KQotCi0gICAgY29uc3QgYmcwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7Ci0g
ICAgICAgIGxheW91dDogYmdsMCwKLSAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICBi
aW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZp
ZXcoKQotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJnMSA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJnbDEsCi0gICAgICAgIGJpbmRpbmdzOiBbewot
ICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJlc291cmNlOiBkZXZpY2UuY3Jl
YXRlU2FtcGxlcih7fSkKLSAgICAgICAgfV0KLSAgICB9KTsKLSAgICBjb25zdCBiZzIgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgbGF5b3V0OiBiZ2wyLAotICAgICAgICBiaW5k
aW5nczogW3sKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICByZXNvdXJjZTog
ewotICAgICAgICAgICAgICAgIGJ1ZmZlcjogaW5wdXRCdWZmZXIsCi0gICAgICAgICAgICAgICAg
c2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9XQotICAgIH0pOwotICAgIGNvbnN0IGJn
MyA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgICBsYXlvdXQ6IGJnbDMsCi0gICAg
ICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwKLSAgICAgICAgICAgIHJl
c291cmNlOiB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyOiBvdXRwdXRCdWZmZXIsCi0gICAgICAg
ICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgfQotICAgICAgICB9XQotICAgIH0pOwotCi0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6
IGNvbWJvU2hhZGVyIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2JnbDAsIGJnbDEsIGJnbDIsIGJn
bDNdIH0pOwotCi0gICAgY29uc3QgcGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVs
aW5lKHsKLSAgICAgICAgbGF5b3V0OiBwaXBlbGluZUxheW91dCwKLSAgICAgICAgY29tcHV0ZVN0
YWdlOiB7Ci0gICAgICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZSh7Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVy
ZURhdGFCdWZmZXIsCi0gICAgICAgIHJvd1BpdGNoOiA0LAotICAgICAgICBpbWFnZUhlaWdodDog
MAotICAgIH0sIHsgdGV4dHVyZTogdGV4dHVyZSB9LCB0ZXh0dXJlU2l6ZSk7Ci0KLSAgICBjb25z
dCBwYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBw
YXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgcGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDAsIGJnMCk7Ci0gICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDEsIGJnMSk7Ci0g
ICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDIsIGJnMik7Ci0gICAgcGFzc0VuY29kZXIuc2V0
QmluZEdyb3VwKDMsIGJnMyk7Ci0gICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0g
ICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBV
aW50MzJBcnJheShhd2FpdCBvdXRwdXRCdWZmZXIubWFwUmVhZEFzeW5jKCkpOwotICAgIG91dHB1
dEJ1ZmZlci51bm1hcCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJDb3Jy
ZWN0IHZhbHVlIHNhbXBsZWQgZnJvbSBhIGJvdW5kIDJEIHRleHR1cmUuIik7Ci19OwotCi10ZXN0
c1siQmluZCBhIHNpbmdsZSBHUFVCdWZmZXIgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBkaWZm
ZXJlbnQgR1BVQmluZEdyb3VwcyJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBudW1J
bnB1dHMgPSA0OwotICAgIGNvbnN0IFt1bmlmb3JtQnVmZmVyLCB3cml0ZUFycmF5QnVmZmVyXSA9
IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoeyBzaXplOiA0ICogbnVtSW5wdXRzLCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKLSAgICBuZXcgSW50MzJBcnJheSh3cml0ZUFycmF5
QnVmZmVyKS5zZXQoWzEsIDIsIDMsIDM2XSk7Ci0gICAgdW5pZm9ybUJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3Qgc3RvcmFnZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
IH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dCh7Ci0gICAgICAgIGJpbmRpbmdzOiBbewotICAgICAgICAgICAgYmluZGluZzogMCwK
LSAgICAgICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEUsCi0gICAgICAg
ICAgICB0eXBlOiAidW5pZm9ybS1idWZmZXIiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIGJp
bmRpbmc6IDEsCi0gICAgICAgICAgICB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRF
LAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgICAgICB9XQotICAgIH0p
OwotCi0gICAgbGV0IGJpbmRHcm91cHMgPSBuZXcgQXJyYXkobnVtSW5wdXRzKTsKLSAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytpKSB7Ci0gICAgICAgIGJpbmRHcm91cHNbaV0g
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgICAgIGxheW91dDogYmluZEdyb3Vw
TGF5b3V0LAotICAgICAgICAgICAgYmluZGluZ3M6IFt7Ci0gICAgICAgICAgICAgICAgYmluZGlu
ZzogMCwKLSAgICAgICAgICAgICAgICByZXNvdXJjZTogewotICAgICAgICAgICAgICAgICAgICBi
dWZmZXI6IHVuaWZvcm1CdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldDogaSAqIG51
bUlucHV0cywKLSAgICAgICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICBiaW5kaW5nOiAxLAotICAgICAgICAg
ICAgICAgIHJlc291cmNlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogc3RvcmFnZUJ1
ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZTogNAotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH1dCi0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdW5pZm9ybUJ1ZmZlclNoYWRlciB9KTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGxh
eW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIGNvbXB1dGVTdGFnZTogewotICAgICAgICAg
ICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0
ZV9tYWluIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0g
Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIHBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHBpcGVsaW5lKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUlucHV0czsgKytp
KSB7Ci0gICAgICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXBzW2ldKTsK
LSAgICAgICAgcGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgfQotICAgIHBhc3NF
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRF
bmNvZGVyLmZpbmlzaCgpXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzID0gbmV3IEludDMyQXJyYXko
YXdhaXQgc3RvcmFnZUJ1ZmZlci5tYXBSZWFkQXN5bmMoKSk7Ci0gICAgc3RvcmFnZUJ1ZmZlci51
bm1hcCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0c1swXSwgNDIsICJTdG9yYWdlIGJ1ZmZl
ciBiaW5kaW5nIHdyaXR0ZW4gdG8gc3VjY2Vzc2Z1bGx5LiIpOwotfTsKLQotcnVuVGVzdHNXaXRo
RGV2aWNlKHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJh
OTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFz
cyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZh
cyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVmZDYwYjhkNWI2ZDZlYzZjOTRhYjM3ODBiMjBjZGZiNTMzYzI0YmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2JsZW5kLWNvbG9yLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5X
ZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9
Im1hdGNoIiBocmVmPSJibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4K
LTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4K
LTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9
ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hh
ZGVyQ29kZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0
ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgZmxvYXQ0IHJlc3VsdDsKLSAgICBzd2l0Y2ggKHZp
ZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmVzdWx0ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICByZXN1bHQgPSBmbG9hdDQoLTEs
IC0xLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXN1bHQg
PSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJlc3VsdCA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbigp
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMCwgMSwgMSwgMSk7Ci19Ci1gOwot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRl
QmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdp
dGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotCi0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbewotICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKLSAgICAgICAgYWxwaGFC
bGVuZDogewotICAgICAgICAgICAgc3JjRmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAgICAgICAg
ICAgZHN0RmFjdG9yOiAiYmxlbmQtY29sb3IiLAotICAgICAgICAgICAgb3BlcmF0aW9uOiAiYWRk
IgotICAgICAgICB9LAotICAgICAgICBjb2xvckJsZW5kOiB7Ci0gICAgICAgICAgICBzcmNGYWN0
b3I6ICJibGVuZC1jb2xvciIsCi0gICAgICAgICAgICBkc3RGYWN0b3I6ICJibGVuZC1jb2xvciIs
Ci0gICAgICAgICAgICBvcGVyYXRpb246ICJhZGQiCi0gICAgICAgIH0sCi0gICAgICAgIHdyaXRl
TWFzazogR1BVQ29sb3JXcml0ZS5BTEwKLSAgICB9XTsKLQotICAgIGNvbnN0IHBpcGVsaW5lID0g
Y3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgY29sb3JTdGF0ZXMpOwot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4s
IGNvbW1hbmRFbmNvZGVyKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRCbGVuZENvbG9yKHsgcjogMCwg
ZzogMSwgYjogMCwgYTogMSB9KTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVy
LCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAg
IHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJl
bG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9
IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1z
dHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmEwYTc1NmQ4Y2MwYmNlMTUzYTE5ZmY1
MTJlNWNlM2M3MTNjMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsZW5kLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNh
bnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmxlbmQtdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0KLWNvbnN0IHBvc2l0aW9uQXR0cmlidXRlTnVtID0gMDsKLQotY29uc3Qgc2hhZGVyQ29kZSA9
IGAKLXN0cnVjdCBWZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlv
bjsKLSAgICBmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4
T3V0IHZlcnRleF9tYWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgke3Bvc2l0aW9uQXR0
cmlidXRlTnVtfSkpIHsKLSAgICBWZXJ0ZXhPdXQgdk91dDsKLSAgICB2T3V0LnBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCAwLjUsIDAsIDAuNSk7Ci0gICAg
cmV0dXJuIHZPdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBj
b2xvciA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBjb2xvcjsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLQot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIs
Ci0gICAgICAgIGFscGhhQmxlbmQ6IHsgZHN0RmFjdG9yOiAib25lIiB9LAotICAgICAgICBjb2xv
ckJsZW5kOiB7IGRzdEZhY3RvcjogIm9uZSIgfQotICAgIH1dOwotCi0gICAgY29uc3QgdmVydGV4
SW5wdXREZXNjcmlwdG9yID0gewotICAgICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAg
ICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAgICAgICAgICBzdHJpZGU6IDQgKiA0LAotICAgICAg
ICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIs
Ci0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHBvc2l0aW9uQXR0cmlidXRlTnVtCi0g
ICAgICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICBjb25zdCBwaXBlbGluZSA9
IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIGNvbG9yU3RhdGVzLCBu
dWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4RGF0YSA9IG5l
dyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAw
LCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBz
aXplOiB2ZXJ0ZXhEYXRhLmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVgg
fSwgdmVydGV4RGF0YS5idWZmZXIpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbih7IGRldmljZTogZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIiB9KTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnQgPSB7Ci0gICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5n
ZXRDdXJyZW50VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRWaWV3KCksCi0gICAgICAgIGxvYWRPcDog
ImNsZWFyIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJDb2xvcjog
eyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0KLSAgICB9OwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHM6
IFtjb2xvckF0dGFjaG1lbnRdIH0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVs
aW5lKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJd
LCBbMF0pOwotICAgIHBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0KLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0K
LWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFy
ZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5I
VE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21w
bGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNh
bnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRl
eHR1cmUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRl
eHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNGMxOWVlZTQ2ZGRlOTJiZTZhOWNmZDUwNGIwY2E0MTc3Mjc4OGVmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9i
bGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4dHVyZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMg
YmVsb3cgc2hvd3MgYSBncmVlbiBtaXAgY2hhaW4gb24gYSByZWQgYmFja2dyb3VuZC48L3A+Ci08
Y2FudmFzIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25z
dCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlbk1p
cENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy10ZXh0dXJlLXRvLXRleHR1
cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUtdG8tdGV4
dHVyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWJmNjQxN2VkZGFhOGU3
OTZlMTc5NTlkNmQxMDczN2M1NjI5ZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLXRleHR1cmUt
dG8tdGV4dHVyZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPkJsaXR0aW5nIFRleHR1cmUg
VG8gVGV4dHVyZTwvdGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkJsaXQgb3Bl
cmF0aW9ucyBwb3B1bGF0ZSBhIHRleHR1cmUgY29ycmVjdGx5IChhbGwgbWlwIGxldmVscykuIj4K
LTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtdGV4dHVyZS10by10ZXh0dXJl
LWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IHNob3dzIGEg
Z3JlZW4gbWlwIGNoYWluIG9uIGEgcmVkIGJhY2tncm91bmQuPC9wPgotPGNhbnZhcyB3aWR0aD0i
NTEyIiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxv
YWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmljZSwgY2FudmFzMmQpIHsKLSAgICBjb25zdCB0ZXh0
dXJlU2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6ICBjYW52YXMyZC53aWR0aCwKLSAgICAgICAgaGVp
Z2h0OiBjYW52YXMyZC5oZWlnaHQsCi0gICAgICAgIGRlcHRoOiAgMgotICAgIH07Ci0KLSAgICAv
LyBNaXBtYXAgY291bnQKLSAgICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNhbnZhczJk
LndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGxldCBtaXBMZXZlbENvdW50ID0gTWF0aC5j
ZWlsKE1hdGgubG9nMihtYXhSZXNvbHV0aW9uKSk7Ci0gICAgaWYgKG1pcExldmVsQ291bnQgPCAx
KSBtaXBMZXZlbENvdW50ID0gMTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewot
ICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAgICAgbWlwTGV2ZWxDb3VudDogbWlwTGV2
ZWxDb3VudCwKLSAgICAgICAgc2FtcGxlQ291bnQ6IDEsCi0gICAgICAgIGRpbWVuc2lvbjogIjJk
IiwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0
dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJl
VXNhZ2UuU0FNUExFRCAKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIHRleHR1cmUgYW5kIGFsc28g
YWRkIHRoZSBkZXNjcmlwdG9yCi0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0
dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICB0ZXh0dXJlU2l6ZS5kZXB0aCA9IDE7Ci0gICAg
dGV4dHVyZS5kZXNjcmlwdG9yID0gdGV4dHVyZURlc2NyaXB0b3I7Ci0KLSAgICAvLyBUZXh0dXJl
IGRhdGEgCi0gICAgY29uc3QgY29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgnMmQnKTsK
LSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZh
czJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGEuZGF0YS5sZW5ndGgsCi0g
ICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURQotICAgIH07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7
Ci0gICAgY29uc3QgdGV4dHVyZVdyaXRlQXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlQXJy
YXlCdWZmZXIpOwotICAgIHRleHR1cmVXcml0ZUFycmF5LnNldChpbWFnZURhdGEuZGF0YSk7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGRhdGFDb3B5VmlldyA9
IHsKLSAgICAgICAgYnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwKLSAgICAgICAgb2Zmc2V0OiAw
LAotICAgICAgICByb3dQaXRjaDogY2FudmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhl
aWdodDogY2FudmFzMmQud2lkdGggKiBjYW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBj
b25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmUsCi0gICAg
ICAgIG1pcExldmVsOiAwLAotICAgICAgICBhcnJheUxheWVyOiAwLAotICAgICAgICBvcmlnaW46
IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgfTsKLQotICAgIGNvbnN0IGJsaXRDb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGJsaXRDb21tYW5kRW5j
b2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGRhdGFDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCB0
ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtibGl0Q29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKLQotICAgIHJldHVybiB0ZXh0dXJlOwotfQotCi1hc3luYyBmdW5j
dGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IGNhbnZhczJkICA9IGF3YWl0IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJk
LmdldENvbnRleHQoJzJkJyk7Ci0KLSAgICAvLyB0ZXh0dXJlQSAobGF5ZXIgMCwgbWlwIDApOiBH
cmVlbgotICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAncmdiKDAsIDI1NSwgMCknOwotICAgIGNv
bnRleHQyZC5maWxsUmVjdCgwLCAwLCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsK
LSAgICBjb25zdCB0ZXh0dXJlQSA9IGF3YWl0IGxvYWRUZXh0dXJlRnJvbUNhbnZhczJkKGRldmlj
ZSwgY2FudmFzMmQpOwotCi0gICAgLy8gdGV4dHVyZUIgKGxheWVyIDAsIG1pcCAwKTogUmVkCi0g
ICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICdyZ2IoMjU1LCAwLCAwKSc7Ci0gICAgY29udGV4dDJk
LmZpbGxSZWN0KDAsIDAsIGNhbnZhczJkLndpZHRoLCBjYW52YXMyZC5oZWlnaHQpOwotICAgIGNv
bnN0IHRleHR1cmVCID0gYXdhaXQgbG9hZFRleHR1cmVGcm9tQ2FudmFzMmQoZGV2aWNlLCBjYW52
YXMyZCk7Ci0KLSAgICAvLyBDbGVhbiBjYW52YXMgdG8gYmx1ZQotICAgIGNvbnRleHQyZC5maWxs
U3R5bGUgPSAncmdiKDAsIDAsIDI1NSknOwotICAgIGNvbnRleHQyZC5maWxsUmVjdCgwLCAwLCBj
YW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIC8vIFRlc3QgY29weVRleHR1
cmVUb1RleHR1cmUKLQotICAgIGxldCBzaXplID0gT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZUEu
ZGVzY3JpcHRvci5zaXplKTsKLSAgICBsZXQgYmxpdENvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0ZXh0dXJlQS5k
ZXNjcmlwdG9yLm1pcExldmVsQ291bnQ7ICsraSkgewotICAgICAgICBzaXplLndpZHRoICA9IE1h
dGgubWF4KE1hdGguZmxvb3Ioc2l6ZS53aWR0aCAvIDIpLCAxKTsKLSAgICAgICAgc2l6ZS5oZWln
aHQgPSBNYXRoLm1heChNYXRoLmZsb29yKHNpemUuaGVpZ2h0IC8gMiksIDEpOwotCi0gICAgICAg
IGxldCBzcmNUZXh0dXJlQ29weVZpZXcgPSB7Ci0gICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJl
QSwKLSAgICAgICAgICAgIG1pcExldmVsOiAwLAotICAgICAgICAgICAgYXJyYXlMYXllcjogMCwK
LSAgICAgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0KLSAgICAgICAgfTsKLSAg
ICAgICAgbGV0IGRzdFRleHR1cmVDb3B5VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRl
eHR1cmVBLAotICAgICAgICAgICAgbWlwTGV2ZWw6IGksCi0gICAgICAgICAgICBhcnJheUxheWVy
OiAxLAotICAgICAgICAgICAgb3JpZ2luOiB7IHg6IDAsIHk6IDAsIHo6IDAgfQotICAgICAgICB9
OwotICAgICAgICAvLyBQb3B1bGF0ZSB0ZXh0dXJlQSAobGF5ZXIgMSwgbWlwIGkpCi0gICAgICAg
IGJsaXRDb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZShzcmNUZXh0dXJlQ29weVZp
ZXcsIGRzdFRleHR1cmVDb3B5Vmlldywgc2l6ZSk7Ci0KLSAgICAgICAgc3JjVGV4dHVyZUNvcHlW
aWV3ID0gewotICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZUEsCi0gICAgICAgICAgICBtaXBM
ZXZlbDogaSwKLSAgICAgICAgICAgIGFycmF5TGF5ZXI6IDEsCi0gICAgICAgICAgICBvcmlnaW46
IHsgeDogMCwgeTogMCwgejogMCB9Ci0gICAgICAgIH07Ci0gICAgICAgIGRzdFRleHR1cmVDb3B5
VmlldyA9IHsKLSAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmVCLAotICAgICAgICAgICAgbWlw
TGV2ZWw6IDAsCi0gICAgICAgICAgICBhcnJheUxheWVyOiAwLAotICAgICAgICAgICAgb3JpZ2lu
OiB7IHg6IDAsIHk6IHNpemUuaGVpZ2h0LCB6OiAwIH0KLSAgICAgICAgfTsKLSAgICAgICAgLy8g
UG9wdWxhdGUgdGV4dHVyZUIgKGxheWVyIDAsIG1pcCAwKSB3aXRoIHRleHR1cmVBIChsYXllciAx
LCBtaXAgaSkKLSAgICAgICAgYmxpdENvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJl
KHNyY1RleHR1cmVDb3B5VmlldywgZHN0VGV4dHVyZUNvcHlWaWV3LCBzaXplKTsKLSAgICB9Ci0K
LSAgICAvLyBSZW5kZXIgdGV4dHVyZUIgaW50byBjYW52YXMyZAotCi0gICAgY29uc3QgaW1hZ2VE
YXRhTGVuZ3RoSW5CeXRlcyA9IGNhbnZhczJkLndpZHRoICogY2FudmFzMmQuaGVpZ2h0ICogNDsK
LSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGFM
ZW5ndGhJbkJ5dGVzLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfUkVBRAotICAgIH07Ci0gICAgY29uc3QgYnVmZmVyQSA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5
VmlldyA9IHsKLSAgICAgICAgYnVmZmVyOiBidWZmZXJBLAotICAgICAgICByb3dQaXRjaDogY2Fu
dmFzMmQud2lkdGggKiA0LAotICAgICAgICBpbWFnZUhlaWdodDogY2FudmFzMmQud2lkdGggKiBj
YW52YXMyZC5oZWlnaHQgKiA0Ci0gICAgfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29weVZpZXcgPSB7
Ci0gICAgICAgIHRleHR1cmU6IHRleHR1cmVCCi0gICAgfTsKLSAgICBibGl0Q29tbWFuZEVuY29k
ZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlQ29weVZpZXcsIGJ1ZmZlckNvcHlWaWV3LCB0
ZXh0dXJlQS5kZXNjcmlwdG9yLnNpemUpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtibGl0Q29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLQotICAgIGNvbnN0IGFiID0gYXdhaXQg
YnVmZmVyQS5tYXBSZWFkQXN5bmMoKQotICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KGFiKTsKLSAgICBjb25zdCByZXN1bHRJbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKGFy
cmF5LCBjYW52YXMyZC53aWR0aCwgY2FudmFzMmQuaGVpZ2h0KTsKLQotICAgIGNvbnRleHQyZC5w
dXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsKLQotICAgIGJ1ZmZlckEuZGVzdHJv
eSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
dGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBjb25z
dCBjYW52YXMyZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotICAgIGRyYXdH
cmVlbk1pcENoYWluT25SZWRCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMyZCk7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0p
OwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxp
dC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3OTZhMzc1N2U1NDI1ZGIwOGIxNDMyYWZl
ZWM2ZjQxM2NkOWRiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPkJhc2ljIEJsaXR0aW5nPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29u
dGVudD0iQmxpdCBvcGVyYXRpb25zIGNvcHkgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0i
bWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNx
dWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxib2R5PgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3QgY2FudmFzMmQg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gbG9h
ZEltYWdlKCkgewotICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgaW1hZ2Uuc3Jj
ID0gInJlc291cmNlcy9ncmVlbi00MDAucG5nIjsKLSAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewot
ICAgICAgICAgICAgdGVzdChkZXZpY2UsIGltYWdlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzMmQp
OwotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWFzeW5jIGZ1
bmN0aW9uIHRlc3QoZGV2aWNlLCBpbWFnZSkgewotICAgIGNhbnZhczJkLndpZHRoID0gaW1hZ2Uu
d2lkdGg7Ci0gICAgY2FudmFzMmQuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0OwotICAgIGNvbnN0IGNv
bnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoJzJkJyk7Ci0gICAgY29udGV4dDJkLmRyYXdJ
bWFnZShpbWFnZSwgMCwgMCk7Ci0KLSAgICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0
SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpOwotCi0gICAgY29uc3Qg
YnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxl
bmd0aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDCi0gICAgfTsKLSAg
ICBidWZmZXJBID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCBidWZmZXJEZXNjcmlwdG9y
LCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAgYnVmZmVyRGVzY3JpcHRvci51c2FnZSB8
PSBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVDsKLSAgICBjb25zdCBidWZmZXJCID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJWaWV3QiA9IHsK
LSAgICAgICAgYnVmZmVyOiBidWZmZXJCLAotICAgICAgICByb3dQaXRjaDogaW1hZ2Uud2lkdGgg
KiA0LAotICAgICAgICBpbWFnZUhlaWdodDogMAotICAgIH07Ci0KLSAgICBjb25zdCB0ZXh0dXJl
U2l6ZSA9IHsKLSAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGlt
YWdlLmhlaWdodCwKLSAgICAgICAgZGVwdGg6IDEKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVE
ZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKLSAgICAgICAgZm9ybWF0
OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMg
fCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QKLSAgICB9OwotICAgIGNvbnN0IHRleHR1cmVBID0g
ZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1
cmVWaWV3QSA9IHsgdGV4dHVyZTogdGV4dHVyZUEgfTsKLQotICAgIGNvbnN0IHRleHR1cmVCID0g
ZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1
cmVWaWV3QiA9IHsgdGV4dHVyZTogdGV4dHVyZUIgfTsKLQotICAgIGNvbnN0IHJlYWRCdWZmZXJE
ZXNjcmlwdG9yID0gewotICAgICAgICBzaXplOiBpbWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoLAot
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5N
QVBfUkVBRAotICAgIH07Ci0gICAgY29uc3QgcmVhZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIocmVhZEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlYWRCdWZmZXJWaWV3ID0gewot
ICAgICAgICBidWZmZXI6IHJlYWRCdWZmZXIsCi0gICAgICAgIHJvd1BpdGNoOiBpbWFnZS53aWR0
aCAqIDQsCi0gICAgICAgIGltYWdlSGVpZ2h0OiAwCi0gICAgfTsKLQotICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEsIDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0
YS5kYXRhLmJ5dGVMZW5ndGgpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1
cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUpOwotICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4
dHVyZVNpemUpOwotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHRleHR1
cmVWaWV3QSwgdGV4dHVyZVZpZXdCLCB0ZXh0dXJlU2l6ZSk7Ci0gICAgY29tbWFuZEVuY29kZXIu
Y29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmlld0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJl
U2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5p
c2goKV0pOwotICAgIGJ1ZmZlckEuZGVzdHJveSgpOwotICAgIGJ1ZmZlckIuZGVzdHJveSgpOwot
ICAgIHRleHR1cmVBLmRlc3Ryb3koKTsKLSAgICB0ZXh0dXJlQi5kZXN0cm95KCk7Ci0KLSAgICBj
b25zdCByZXN1bHRDb250ZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJykuZ2V0
Q29udGV4dCgnMmQnKTsKLQotICAgIGF3YWl0IHJlYWRCdWZmZXIubWFwUmVhZEFzeW5jKCkudGhl
bihhYiA9PiB7Ci0gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFi
KTsKLSAgICAgICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJheSwg
aW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAgICAgICAgcmVzdWx0Q29udGV4dC5wdXRJ
bWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsKLQotICAgICAgICByZWFkQnVmZmVyLmRl
c3Ryb3koKTsKLSAgICB9KTsKLX0KLQotbG9hZEltYWdlKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFj
ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZm
ZXItcmFjZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2
MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNv
bW1hbmQtYnVmZmVyLXJhY2VzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5I
VE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21w
bGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNh
bnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2Vz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjVjMzhlNjRjZGEzMWRlYTNmMmNl
YzRjNzgwZWI1MTAwMTRiOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxl
PgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMg
YSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJ1ZmZlci1jb21tYW5k
LWJ1ZmZlci1yYWNlcy1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBi
ZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBWZXJ0ZXhP
dXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdDQgY29s
b3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9tYWluKGZs
b2F0MiB4eSA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQzIHJnYiA6IGF0dHJpYnV0ZSgxKSkgewotICAg
IFZlcnRleE91dCB2T3V0OwotICAgIHZPdXQucG9zaXRpb24gPSBmbG9hdDQoeHksIDAsIDEpOwot
ICAgIHZPdXQuY29sb3IgPSBmbG9hdDQocmdiLCAxKTsKLSAgICByZXR1cm4gdk91dDsKLX0KLQot
ZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDAp
KSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBj
cmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5k
ZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAg
ICAgc3RyaWRlOiA0ICogMiwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAg
ICAgICAgICBmb3JtYXQ6ICJmbG9hdDIiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9u
OiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9LCB7Ci0gICAgICAgICAgICBzdHJpZGU6IDQg
KiAzLAotICAgICAgICAgICAgc3RlcE1vZGU6ICJpbnN0YW5jZSIsCi0gICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQzIiwKLSAgICAgICAg
ICAgICAgICBzaGFkZXJMb2NhdGlvbjogMQotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRp
Y2VzKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2Vz
KQotICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4
QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhB
cnJheS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNl
LCBwaXBlbGluZSwgYXR0YWNobWVudCwgdmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcikgewotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0g
ICAgY29uc3QgZW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9y
QXR0YWNobWVudHM6IFthdHRhY2htZW50XSB9KTsKLSAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXJdLCBbMCwgMF0pOwotICAgIGVuY29kZXIu
c2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIGVuY29kZXIuZHJhdygzLCAxLCAwLCAwKTsKLSAg
ICBlbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpXSk7Ci19Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAg
IGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsK
LSAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1NU0wgc2hhZGVycy4KLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29k
ZSB9KTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3IgPSBjcmVhdGVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IoKTsKLSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUo
c2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIG51bGwsIHZlcnRleElucHV0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCB1cHBlckxlZnRCdWZmZXIgPSBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIo
ZGV2aWNlLCBbLTEsIDEsIC0xLCAtMSwgMCwgMV0pOwotICAgIGNvbnN0IG1pZGRsZUJ1ZmZlciA9
IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIFswLCAxLCAtMSwgLTEsIDEsIC0xXSk7
Ci0gICAgY29uc3QgdXBwZXJSaWdodEJ1ZmZlciA9IGNyZWF0ZUFuZFNldFZlcnRleEJ1ZmZlcihk
ZXZpY2UsIFswLCAxLCAxLCAxLCAxLCAtMV0pOwotCi0gICAgY29uc3QgZ3JlZW4gPSBbMCwgMSwg
MF07Ci0gICAgY29uc3QgYmx1ZSA9IFswLCAwLCAxXTsKLSAgICBjb25zdCBncmVlbkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShncmVlbik7Ci0gICAgY29uc3QgYmx1ZUFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShibHVlKTsKLQotICAgIGNvbnN0IGNvbG9yQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0
aERhdGEoZGV2aWNlLCB7IHNpemU6IGdyZWVuQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9LCBncmVlbkFycmF5
LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCBhdHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50
OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAg
ICAgICBsb2FkT3A6ICJsb2FkIiwKLSAgICAgICAgc3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAg
Y2xlYXJDb2xvcjogeyByOiAxLCBnOiAwLCBiOiAwLCBhOiAxIH0KLSAgICB9OwotCi0gICAgLyog
bWFwV3JpdGVBc3luYyBzaG91bGQgcmVzb2x2ZSBhZnRlciBHUFUgY29tbWFuZHMgYXJlIGNvbXBs
ZXRlLCBzbyB0cmlhbmdsZSBzaG91bGQgYmUgZ3JlZW4uICovCi0gICAgZHJhd0FuZFN1Ym1pdENv
bW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIHVwcGVyTGVmdEJ1ZmZlciwgY29s
b3JCdWZmZXIpOwotICAgIGF3YWl0IGNvbG9yQnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKGFi
ID0+IHsKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhYik7Ci0gICAgICAg
IGFycmF5LnNldChibHVlKTsKLSAgICAgICAgY29sb3JCdWZmZXIudW5tYXAoKTsKLSAgICB9KTsK
LQotICAgIGF3YWl0IGNvbG9yQnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKGFiID0+IHsKLSAg
ICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhYik7Ci0gICAgICAgIGFycmF5LnNl
dChncmVlbik7Ci0gICAgfSk7Ci0KLSAgICAvKiBjb2xvckJ1ZmZlciB0aGF0IGlzIHN0aWxsIG1h
cHBlZCBzaG91bGQgYmUgbm90IHN1Ym1pdHRlZCB0byBkcmF3IGEgYmx1ZSB0cmlhbmdsZS4gKi8K
LSAgICBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwg
dXBwZXJMZWZ0QnVmZmVyLCBjb2xvckJ1ZmZlcik7Ci0KLSAgICAvKiBjb2xvckJ1ZmZlciBkb2Vz
IG5vdCBhY3R1YWxseSBjb250YWluICJncmVlbiIgYWdhaW4gdW50aWwgdGhpcyBjYWxsLiAqLwot
ICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7Ci0KLSAgICAvKiBXcml0aW5nIGRhdGEgaW1tZWRpYXRl
bHkgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHByZWNlZGluZyBkcmF3IGNh
bGwuICovCi0gICAgZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFj
aG1lbnQsIG1pZGRsZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwotICAgIGF3YWl0IG1hcFdyaXRlRGF0
YVRvQnVmZmVyKGNvbG9yQnVmZmVyLCBibHVlQXJyYXkuYnVmZmVyKTsKLQotICAgIC8qIGRlc3Ry
b3kgcmlnaHQgYWZ0ZXIgYSBzdWJtaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGRyYXcgY2FsbC4g
Ki8KLSAgICBhd2FpdCBtYXBXcml0ZURhdGFUb0J1ZmZlcihjb2xvckJ1ZmZlciwgZ3JlZW5BcnJh
eS5idWZmZXIpOwotICAgIGRyYXdBbmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBh
dHRhY2htZW50LCB1cHBlclJpZ2h0QnVmZmVyLCBjb2xvckJ1ZmZlcik7Ci0gICAgdXBwZXJSaWdo
dEJ1ZmZlci5kZXN0cm95KCk7Ci0KLSAgICAvKiBkcmF3IGNvbW1hbmQgd2l0aCBhIGRlc3Ryb3ll
ZCBidWZmZXIgc2hvdWxkIGZhaWwgKi8KLSAgICBjb2xvckJ1ZmZlci5kZXN0cm95KCk7Ci0gICAg
ZHJhd0FuZFN1Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIG1pZGRs
ZUJ1ZmZlciwgY29sb3JCdWZmZXIpOwotCi0gICAgdXBwZXJMZWZ0QnVmZmVyLmRlc3Ryb3koKTsK
LSAgICBtaWRkbGVCdWZmZXIuZGVzdHJveSgpOwotICAgIHVwcGVyUmlnaHRCdWZmZXIuZGVzdHJv
eSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
dGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdH
cmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTA1ZWVhOWQ1MzMzNTNkODZjYmUwZGQyZWRkZjZkNjdjZGQ0MDdh
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvYnVmZmVyLWVycm9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVCdWZmZXIoKTog
QnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEKLQot
UEFTUyBHUFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNU
T1JBR0UgdXNhZ2VzLgotUEFTUyB1bm1hcCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBwYWJsZSBH
UFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0ZSBlcnJvci4KLVBBU1MgR1BVQnVmZmVyIGNyZWF0
ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBwZWQuCi1QQVNTIEdQVUJ1
ZmZlckRlc2NyaXB0b3Igd2l0aCBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2Ugc2hv
dWxkIGZhaWwuCi1QQVNTIFRvby1sYXJnZSBHUFVCdWZmZXJEZXNjcmlwdG9yIHNpemUgc2hvdWxk
IGZhaWwgd2l0aCBvdXQtb2YtbWVtb3J5IGVycm9yLgotUEFTUyBtYXBSZWFkQXN5bmMgb24gbm9u
LU1BUF9SRUFEIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgbWFwV3JpdGVBc3luYyBvbiBu
b24tTUFQX1dSSVRFIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgdW5tYXAgb24gbm9uLW1h
cHBhYmxlIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4KLVBBU1MgY3JlYXRlQnVmZmVyTWFwcGVkOiBu
b24tNC1ieXRlLWFsaWduZWQgR1BVQnVmZmVyRGVzcmlwdG9yIHNpemUgc2hvdWxkIGZhaWwuCi1Q
QVNTIEFueSBtZXRob2QgY2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4K
LVBBU1MgQW55IG1ldGhvZCBjYWxsIG9uIGEgZGVzdHJveWVkIEdQVUJ1ZmZlciBzaG91bGQgZmFp
bC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItZXJyb3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBmYTE0NTgzOWZmMzMwYjUwYzM4NzNiMDA0NjE0YTIyM2Y5NTlmYjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2J1ZmZlci1lcnJvcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+VGVzdCBHUFVC
dWZmZXIgRXJyb3JzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0KLXRlc3RzWyJH
UFVCdWZmZXJzIGNhbiBiZSBjcmVhdGVkIHdpdGggYm90aCByZWFkLW9ubHkgYW5kIFNUT1JBR0Ug
dXNhZ2VzLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUo
InZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTog
NCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdl
LklOREVYIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotICAgIHJldHVybiBwb3BOdWxsRXJy
b3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJ1bm1hcCBvbiBhbHJlYWR5IHVubWFwcGVkLCBtYXBw
YWJsZSBHUFVCdWZmZXIgc2hvdWxkIG5vdCBnZW5lcmF0ZSBlcnJvci4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAg
IHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8Ci0gICAg
ICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJV
c2FnZS5DT1BZX0RTVCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAotICAg
ICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuSU5ERVggfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNh
Z2UuVU5JRk9STSB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFCi0gICAgfSk7
Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBidWZmZXIu
dW5tYXAoKTsKLSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1si
R1BVQnVmZmVyIGNyZWF0ZWQgdmlhIGNyZWF0ZUJ1ZmZlck1hcHBlZCBjYW5ub3QgYmUgcmVtYXBw
ZWQuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotICAgIGNvbnN0IFtidWZmZXIsIF9dID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1h
cHBlZCh7IHNpemU6IDQsIHVzYWdlOiAwIH0pOwotICAgIC8vIFNob3VsZCBub3QgZmFpbC4KLSAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICBhd2FpdCBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLQotICAg
IGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIC8vIFNob3VsZCBmYWls
LgotICAgIGJ1ZmZlci51bm1hcCgpOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZp
Y2UpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgLy8g
U2hvdWxkIGZhaWwuCi0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3Nl
cnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxpZGF0
aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJHUFVCdWZmZXJEZXNjcmlwdG9yIHdpdGgg
Ym90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMg
ZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotICAgIHJldHVybiBwb3BWYWxp
ZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJUb28tbGFyZ2UgR1BVQnVmZmVyRGVz
Y3JpcHRvciBzaXplIHNob3VsZCBmYWlsIHdpdGggb3V0LW9mLW1lbW9yeSBlcnJvci4iXSA9IGFz
eW5jIGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5
Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDk5OTk5OTk5OTk5LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuTk9ORSB9KTsKLSAgICByZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNl
KTsKLX07Ci0KLXRlc3RzWyJtYXBSZWFkQXN5bmMgb24gbm9uLU1BUF9SRUFEIEdQVUJ1ZmZlciBz
aG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7Ci0gICAgICAgIHNpemU6IDQsCi0gICAgICAgIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEUgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMgfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfAotICAgICAgICAgICAg
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVY
IHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfAotICAgICAgICAgICAgR1BV
QnVmZmVyVXNhZ2UuU1RPUkFHRQotICAgIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBh
c3NlcnRfdW5yZWFjaGVkKCk7IH0pLmNhdGNoKGUgPT4ge30pOwotICAgIHJldHVybiBwb3BWYWxp
ZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJtYXBXcml0ZUFzeW5jIG9uIG5vbi1N
QVBfV1JJVEUgR1BVQnVmZmVyIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICAgICAgc2l6ZTogNCwK
LSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwKLSAgICAgICAgICAgIEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlf
RFNUIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8Ci0gICAgICAgICAgICBH
UFVCdWZmZXJVc2FnZS5JTkRFWCB8Ci0gICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UKLSAgICB9KTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCkudGhlbigoKSA9PiB7IGFzc2VydF91bnJlYWNoZWQoKTsgfSkuY2F0Y2goZSA9PiB7fSk7
Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbInVu
bWFwIG9uIG5vbi1tYXBwYWJsZSBHUFVCdWZmZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZp
Y2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoewotICAgICAg
ICBzaXplOiA0LAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfAotICAg
ICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfAotICAgICAgICAgICAgR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwKLSAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKLSAgICAg
ICAgICAgIEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfAotICAgICAgICAgICAgR1BVQnVmZmVyVXNh
Z2UuU1RPUkFHRQotICAgIH0pOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0
aW9uIik7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJv
cihkZXZpY2UpOwotfTsKLQotdGVzdHNbImNyZWF0ZUJ1ZmZlck1hcHBlZDogbm9uLTQtYnl0ZS1h
bGlnbmVkIEdQVUJ1ZmZlckRlc3JpcHRvciBzaXplIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2
aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBk
ZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsgc2l6ZTogNSwgdXNhZ2U6IDAgfSk7Ci0gICAgcmV0
dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2Qg
Y2FsbCBvbiBhbiBpbnZhbGlkIEdQVUJ1ZmZlciBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB9KTsKLSAgICByZXR1cm4gYXNzZXJ0QWxsQnVmZmVyTWV0aG9kc0ZhaWwoZGV2aWNlLCBidWZm
ZXIpOwotfTsKLQotdGVzdHNbIkFueSBtZXRob2QgY2FsbCBvbiBhIGRlc3Ryb3llZCBHUFVCdWZm
ZXIgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNvbnN0IGJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQgfSk7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAg
ICBidWZmZXIuZGVzdHJveSgpOwotICAgIGF3YWl0IHBvcE51bGxFcnJvcihkZXZpY2UpOwotCi0g
ICAgcmV0dXJuIGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsKGRldmljZSwgYnVmZmVyKTsKLX07
Ci0KLWNvbnN0IGFzc2VydEFsbEJ1ZmZlck1ldGhvZHNGYWlsID0gYXN5bmMgKGRldmljZSwgYnVm
ZmVyKSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
YnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oKCkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCk7IH0p
LmNhdGNoKGUgPT4ge30pOwotICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgpOyB9KS5jYXRjaChl
ID0+IHt9KTsKLSAgICBhd2FpdCBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLQotICAgIGRl
dmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGJ1ZmZlci51bm1hcCgpOwot
ICAgIGF3YWl0IHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotCi0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgYnVmZmVyLmRlc3Ryb3koKTsKLSAgICByZXR1
cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZpY2Uo
dGVzdHMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFm
ZDJhOTRiYTVlZDIzMDQyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvY29sb3Itd3JpdGUtbWFzay10cmlhbmdsZS1zdHJp
cC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmls
ZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+
Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVl
blNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS9jb2xvci13cml0ZS1tYXNrLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmY2E1Y2JkODMzOTdhMmU5NDFlMjA0NGVlOGY2ZGNi
MzZjNmFlNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2NvbG9yLXdyaXRlLW1hc2stdHJpYW5nbGUtc3RyaXAuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVl
biBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImNvbG9yLXdyaXRlLW1hc2stdHJp
YW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZl
cnRleF9tYWluKHVpbnQgdmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsKLSAgICBm
bG9hdDQgdjsKLSAgICBzd2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgdiA9IGZs
b2F0NCgtMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAg
diA9IGZsb2F0NCgtMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0g
ICAgICAgIHYgPSBmbG9hdDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHYgPSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkg
OiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gCi0K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiB0ZXN0KGRldmljZSkgewotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNyZWF0ZUJh
c2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Ci0gICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAg
ICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAgY29sb3JCbGVuZDoge30sCi0gICAgICAgIHdyaXRl
TWFzazogR1BVQ29sb3JXcml0ZS5HUkVFTiB8IEdQVUNvbG9yV3JpdGUuQUxQSEEKLSAgICB9XTsK
LSAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBk
ZXZpY2UsIGNvbG9yU3RhdGVzKTsKLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudCA9IHsKLSAg
ICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAi
c3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAsIGE6IDAgfQot
ICAgIH07Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbY29sb3JBdHRhY2htZW50XSB9KTsKLSAgICBlbmNv
ZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7Ci0gICAgY29uc3QgcXVldWUg
PSBkZXZpY2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIu
ZmluaXNoKCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjA3NDUwYzU4MTYwZWUzOTBiMzdhMDhkZjA0
YmQ0YTAyOTgzN2FiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIGEgZGVmYXVsdCBHUFVDb21t
YW5kRW5jb2Rlci4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVm
ZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGRlMTc1Y2I3OWVlYThiOWUyZGExNTUzNGI2ODJh
Y2NiNzk1M2M3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoY29tbWFuZEVuY29kZXIgaW5zdGFuY2VvZiBHUFVD
b21tYW5kRW5jb2RlciwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQVUNvbW1hbmRFbmNvZGVyLiIp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BV
Q29tbWFuZEVuY29kZXIuIik7Ci0KLS8vIEZJWE1FOiBjcmVhdGVDb21tYW5kRW5jb2RlciBzaG91
bGQgdGFrZSBhIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciwgd2hpY2ggaXMgY3VycmVudGx5
IGFuIGVtcHR5IGRpY3Rpb25hcnkuCi08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjViYmJiODgzNmZjN2ZiNjE1NDFmNGVlNmY4
ZDg4YzdkZDQwYTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBDb21wdXRlIGNvbXBpbGF0
aW9uIGZhaWxlZCBkdWUgdG8gaW5jb3JyZWN0IGVudHJ5IHBvaW50IHN0cmluZy4KLVBBU1MgQ29t
cHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQuCi1QQVNTIE1TTCBwaXBlbGluZSBjcmVh
dGlvbiBmYWlsZWQgZHVlIHRvIGludmFsaWQgR1BVU2hhZGVyTW9kdWxlLgotUEFTUyBNU0wgcGlw
ZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5n
LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1waXBlbGluZS1lcnJv
cnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTc1NDRkOTNjZTlkOTJmYzIzYzc3MDBi
MjkyNWZlN2Q3OGE1MjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXBpcGVsaW5lLWVycm9ycy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxz
Y3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0
IHRlc3RzID0ge307Ci1sZXQgZ29vZE1vZHVsZTsKLQotdGVzdHNbIkNvbXB1dGUgY29tcGlsYXRp
b24gZmFpbGVkIGR1ZSB0byBpbmNvcnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5bmMg
ZGV2aWNlID0+IHsKLSAgICBjb25zdCBnb29kV0hMU0wgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBfY29tcHV0ZV9tYWluKCkgeyB9Ci1gOwotICAgIGdvb2RNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogZ29vZFdITFNMIH0pOwotCi0gICAg
ZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0KLSAgICBkZXZpY2UuY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgY29tcHV0ZVN0YWdlOiB7Ci0gICAgICAgICAgICBt
b2R1bGU6IGdvb2RNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAiY29tcHV0ZV9tYWlu
IgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRhdGlvbkVycm9yKGRl
dmljZSk7Ci19OwotCi10ZXN0c1siQ29tcHV0ZSBwaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkZWQu
Il0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRh
dGlvbiIpOwotCi0gICAgZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNv
bXB1dGVTdGFnZTogewotICAgICAgICAgICAgbW9kdWxlOiBnb29kTW9kdWxlLAotICAgICAgICAg
ICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHJldHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUg
Y3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbnZhbGlkIEdQVVNoYWRlck1vZHVsZS4iXSA9IGFzeW5j
IGRldmljZSA9PiB7Ci0gICAgY29uc3QgYmFkTVNMID0gYFRoaXMgY29kZSBzaG91bGQgbm90IGNv
bXBpbGUuYDsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgibm9uZSIpOwotCi0gICAgY29u
c3QgYmFkTVNMTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IGJhZE1T
TCB9KTsKLQotICAgIGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci0KLSAgICBkZXZpY2Uu
cHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLQotICAgIGRldmljZS5jcmVhdGVDb21wdXRl
UGlwZWxpbmUoewotICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgIG1vZHVsZTog
YmFkTVNMTW9kdWxlLAotICAgICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNl
KTsKLX07Ci0KLXRlc3RzWyJNU0wgcGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIGR1ZSB0byBpbmNv
cnJlY3QgZW50cnkgcG9pbnQgc3RyaW5nLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25z
dCBnb29kTVNMID0gYAota2VybmVsIHZvaWQgX2NvbXB1dGVfbWFpbigpIHsgfQotYDsKLSAgICBj
b25zdCBtc2xNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogZ29vZE1T
TCB9KTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotCi0gICAg
ZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgIGNvbXB1dGVTdGFnZTogewot
ICAgICAgICAgICAgbW9kdWxlOiBtc2xNb2R1bGUsCi0gICAgICAgICAgICBlbnRyeVBvaW50OiAi
X2NvbXB1dGVfbWFpIgotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcG9wVmFsaWRh
dGlvbkVycm9yKGRldmljZSk7Ci19OwotCi1ydW5UZXN0c1dpdGhEZXZpY2UodGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5h
YmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Rl
cHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGY2MGY1YTljNTE3Yzk2MmVmZjJhMGFmZDJhOTRiYTVlZDIzMDQyMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLWRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2Fu
dmFzKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVu
YWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEz
NDQyNGJlODY1MmU3YTZmYzY3ODdkMjM0MWEzN2JjMDRkZGY5OWUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVu
YWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUg
SGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iV2Vi
R1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08bGluayByZWw9Im1hdGNo
IiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+
UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNh
bnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0IHNyYz0ianMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1jb25zdCBzaGFkZXJD
b2RlID0gYAotc3RydWN0IFZlcnRleE91dAotewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgwKTsKLX07Ci0KLXZlcnRleCBW
ZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCB1aW50
IGlpZCA6IFNWX0luc3RhbmNlSUQpCi17Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5w
b3NpdGlvbiA9IHBvc2l0aW9uOwotCi0gICAgaWYgKGlpZCA9PSAwKSB7Ci0gICAgICAgIHZPdXQu
cG9zaXRpb24ueiA9IDAuNTsKLSAgICAgICAgdk91dC5jb2xvciA9IGZsb2F0NCgxLCAwLCAwLCAx
KTsKLSAgICB9IGVsc2UgewotICAgICAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIDEsIDAsIDEp
OwotICAgIH0KLQotICAgIHJldHVybiB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRfbWFpbihmbG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAg
ICByZXR1cm4gY29sb3I7Ci19Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZp
Y2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAg
ICAvLyBmbG9hdDQgeHl6dwotICAgICAgICAtMSwgMSwgMCwgMSwKLSAgICAgICAgLTEsIC0xLCAw
LCAxLAotICAgICAgICAxLCAxLCAwLCAxLAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0pOwot
ICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJy
YXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJh
eS5idWZmZXIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7
Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgaW5kZXhGb3JtYXQ6ICJ1aW50MzIiLAotICAgICAgICB2
ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgICAg
IGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiLAotICAg
ICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9XQotICAgICAgICB9
XQotICAgIH0KLX0KLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0
IHZlcnRleElucHV0RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwot
ICAgIGNvbnN0IGRlcHRoU3RhdGVEZXNjcmlwdG9yID0gY3JlYXRlQmFzaWNEZXB0aFN0YXRlRGVz
Y3JpcHRvcigpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFk
ZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgdmVydGV4SW5wdXREZXNjcmlwdG9yLCBkZXB0
aFN0YXRlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIGNvbnN0IGJhc2ljQXR0YWNobWVudCA9IHsKLSAg
ICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAi
c3RvcmUiLAotICAgICAgICBjbGVhckNvbG9yOiB7IHI6IDEuMCwgZzogMCwgYjogMCwgYTogMS4w
IH0KLSAgICB9OwotCi0gICAgY29uc3QgZGVwdGhBdHRhY2htZW50ID0gewotICAgICAgICBhdHRh
Y2htZW50OiBjcmVhdGVCYXNpY0RlcHRoVGV4dHVyZShjYW52YXMsIGRldmljZSkuY3JlYXRlRGVm
YXVsdFZpZXcoKSwKLSAgICAgICAgZGVwdGhMb2FkT3A6ICJjbGVhciIsCi0gICAgICAgIGRlcHRo
U3RvcmVPcDogInN0b3JlIiwKLSAgICAgICAgY2xlYXJEZXB0aDogMS4wCi0gICAgfTsKLQotICAg
IGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoewotICAgICAg
ICBjb2xvckF0dGFjaG1lbnRzOiBbYmFzaWNBdHRhY2htZW50XSwKLSAgICAgICAgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudDogZGVwdGhBdHRhY2htZW50Ci0gICAgfSk7Ci0KLSAgICBlbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgZW5jb2Rlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7Ci0gICAgZW5jb2Rlci5kcmF3KDQsIDIsIDAsIDApOwotICAgIGVu
Y29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4ZWQtdHJp
YW5nbGVzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRy
aWFuZ2xlcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjYw
ZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3LWluZGV4
ZWQtdHJpYW5nbGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJl
ZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5
IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDIyMWIzYmQwNWFmMzlkYjI4Zjc1NWYwODUwZDU2MWQxYmY3YWNh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTIwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9ImRyYXctaW5kZXhlZC10cmlhbmdsZXMtZXhwZWN0ZWQuaHRt
bCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48
L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQg
c3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWNvbnN0
IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0aW9u
IDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApOwotfTsKLQot
dmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhfbWFpbihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUo
MCksIGZsb2F0IGdyZWVuIDogYXR0cmlidXRlKDEpKQotewotICAgIFZlcnRleE91dCB2T3V0Owot
ICAgIHZPdXQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAs
IGdyZWVuLCAwLCAxKTsKLSAgICByZXR1cm4gdk91dDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50X21haW4oZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwCi17
Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotYAotCi1mdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIo
ZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFsKLSAg
ICAgICAgLy8gZmxvYXQ0IHh5encsIGZsb2F0IGcKLSAgICAgICAgLTEsIDEsIDAsIDEsIDAsCi0g
ICAgICAgIC0xLCAxLCAwLCAxLCAxLAotICAgICAgICAtMSwgLTEsIDAsIDEsIDAsCi0gICAgICAg
IC0xLCAtMSwgMCwgMSwgMSwKLSAgICAgICAgMSwgMSwgMCwgMSwgMCwKLSAgICAgICAgMSwgMSwg
MCwgMSwgMSwKLSAgICAgICAgMSwgLTEsIDAsIDEsIDAsCi0gICAgICAgIDEsIC0xLCAwLCAxLCAx
Ci0gICAgXSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXpl
OiB2ZXJ0ZXhBcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0s
IHZlcnRleEFycmF5LmJ1ZmZlcik7Ci19Ci0KLWNvbnN0IGluZGV4QnVmZmVyT2Zmc2V0ID0gMjA0
ODsgLy8gVGVzdCBhIGJ1ZmZlciBvZmZzZXQgZm9yIGluZGV4IGFycmF5LgotY29uc3QgaW5kZXhP
ZmZzZXQgPSAtOTAwMTsgLy8gVGVzdCBhIGJhc2UgaW5kZXggdG8gYWRkIHRvIGluZGV4IGFycmF5
IHZhbHVlcy4KLQotZnVuY3Rpb24gY3JlYXRlSW5kZXhCdWZmZXIoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgb2Zmc2V0QXJyYXkgPSBbMSwgMywgNSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAt
IGluZGV4T2Zmc2V0OyB9KTsKLSAgICBjb25zdCBpbmRleEFycmF5ID0gbmV3IFVpbnQzMkFycmF5
KFsxLCAzLCA1LCAzLCA1LCA3XS5tYXAodiA9PiB7IHJldHVybiB2IC0gaW5kZXhPZmZzZXQ7IH0p
KTsKLSAgICBjb25zdCBidWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YSgKLSAgICAgICAgZGV2
aWNlLCAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHNpemU6IGluZGV4QXJyYXkuYnl0ZUxlbmd0
aCArIGluZGV4QnVmZmVyT2Zmc2V0LCAKLSAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5JTkRFWCAKLSAgICAgICAgfSwKLSAgICAgICAgaW5kZXhBcnJheS5idWZmZXIsCi0gICAgICAg
IGluZGV4QnVmZmVyT2Zmc2V0Ci0gICAgKTsKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4gewotICAg
ICAgICBpbmRleEZvcm1hdDogInVpbnQzMiIsCi0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0g
ICAgICAgICAgICBzdHJpZGU6IDQgKiA1LAotICAgICAgICAgICAgYXR0cmlidXRlU2V0OiBbewot
ICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIsCi0gICAgICAgICAgICAgICAgc2hhZGVy
TG9jYXRpb246IDAKLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICBvZmZzZXQ6IDQg
KiA0LAotICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0IiwKLSAgICAgICAgICAgICAgICBz
aGFkZXJMb2NhdGlvbjogMQotICAgICAgICAgICAgfV0KLSAgICAgICAgfV0KLSAgICB9OwotfQot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5
bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVC
YXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0
aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSk7Ci0gICAgY29uc3QgaW5kZXhCdWZmZXIg
PSBjcmVhdGVJbmRleEJ1ZmZlcihkZXZpY2UpOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRl
QmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgbnVsbCwgY3JlYXRlVmVy
dGV4SW5wdXREZXNjcmlwdG9yKCksIG51bGwsICJ0cmlhbmdsZS1saXN0Iik7Ci0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25z
dCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVu
Y29kZXIpOwotCi0gICAgcGFzc0VuY29kZXIuc2V0SW5kZXhCdWZmZXIoaW5kZXhCdWZmZXIsIGlu
ZGV4QnVmZmVyT2Zmc2V0KTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5l
KTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3SW5kZXhlZCg2LCAxLCAwLCBpbmRleE9mZnNldCwgMCk7
Ci0gICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwotCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIHZlcnRleEJ1ZmZlci5kZXN0cm95
KCk7Ci19Ci0KLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICB0
ZXN0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0dy
ZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZTNmZDA4ODk1N2VkM2Q0ZWJkODFkNDE4NjRhZmIy
YmVmY2UzMDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlk
YXRpb24gZXJyb3IuCi1QQVNTIENhcHR1cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1vcnkgZXJyb3Iu
Ci1QQVNTIElnbm9yZSBlcnJvcnMgcGFzdCB0aGUgZmlyc3QuCi1QQVNTIENhcHR1cmVkIGVycm9y
cyBtYXRjaCBlcnJvciBzY29wZSBmaWx0ZXIuCi1QQVNTIFJlamVjdCBwb3BFcnJvclNjb3BlIGlm
IG5vIHNjb3BlIGV4aXN0cy4KLVBBU1MgRmlsdGVyICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQg
bm90IHJlcG9ydCBlcnJvcnMuCi1QQVNTIFB1c2ggYW5kIHBvcCBtYW55IGVycm9yIHNjb3BlcyB3
aXRoIG5vIHJlamVjdGlvbnMuCi1QQVNTIENhdGNoIG1hbnkgZXJyb3JzIGluIG5lc3RlZCBzY29w
ZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9lcnJvci1zY29wZXMtdGVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZWIxMzk3Mjg2MGYwZTkyZGIwZTM5MjFlZWI3NjBjMzVk
NDBkMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L2Vycm9yLXNjb3Blcy10ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRp
dGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotbGV0IHRlc3RzID0ge307Ci0K
LXRlc3RzWyJDYXB0dXJlIGEgc2luZ2xlIEdQVVZhbGlkYXRpb24gZXJyb3IuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAg
IGNhdXNlVmFsaWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIkNhcHR1cmUgYSBzaW5nbGUgR1BVT3V0T2ZNZW1v
cnkgZXJyb3IuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29w
ZSgib3V0LW9mLW1lbW9yeSIpOwotICAgIGNhdXNlTWVtb3J5RXJyb3IoZGV2aWNlKTsKLSAgICBy
ZXR1cm4gcG9wTWVtb3J5RXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJJZ25vcmUgZXJyb3Jz
IHBhc3QgdGhlIGZpcnN0LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBkZXZpY2UucHVzaEVy
cm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlk
YXRpb24iKTsKLSAgICBjYXVzZVZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwotICAgIGNhdXNlVmFs
aWRhdGlvbkVycm9yKGRldmljZSk7Ci0gICAgCi0gICAgY29uc3QgZXJyb3IgPSBhd2FpdCBkZXZp
Y2UucG9wRXJyb3JTY29wZSgpOwotICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihlcnJvcik7Ci0K
LSAgICByZXR1cm4gcG9wTnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ2FwdHVyZWQg
ZXJyb3JzIG1hdGNoIGVycm9yIHNjb3BlIGZpbHRlci4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0g
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLnB1c2hF
cnJvclNjb3BlKCJvdXQtb2YtbWVtb3J5Iik7Ci0gICAgY2F1c2VWYWxpZGF0aW9uRXJyb3IoZGV2
aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJvclNj
b3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBvcFZh
bGlkYXRpb25FcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIlJlamVjdCBwb3BFcnJvclNjb3Bl
IGlmIG5vIHNjb3BlIGV4aXN0cy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgcHJv
bWlzZSA9IGRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVk
KCksIGFzeW5jIGUgPT4gewotICAgICAgICBhc3NlcnRfZmFsc2UoZSA9PT0gdW5kZWZpbmVkKTsK
LSAgICAgICAgLy8gUG9wIHRoZSBleHRyYSAnbm9uZScgc2NvcGUuCi0gICAgICAgIGF3YWl0IHBv
cE51bGxFcnJvcihkZXZpY2UpOwotICAgIH0pOwotICAgIC8vICdwcm9taXNlJyBzaG91bGQgc3Rp
bGwgcmVqZWN0IGlmIGEgc2NvcGUgaXMgcHVzaGVkIGhlcmUuCi0gICAgZGV2aWNlLnB1c2hFcnJv
clNjb3BlKCJub25lIik7Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19OwotCi10ZXN0c1siRmlsdGVy
ICdub25lJyBzaG91bGQgY2FwdHVyZSBidXQgbm90IHJlcG9ydCBlcnJvcnMuIl0gPSBhc3luYyBk
ZXZpY2UgPT4gewotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9yeSIpOwot
ICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgibm9uZSIpOwotICAgIGNhdXNlTWVtb3J5RXJyb3Io
ZGV2aWNlKTsKLQotICAgIGNvbnN0IHNob3VsZEJlTnVsbCA9IGF3YWl0IGRldmljZS5wb3BFcnJv
clNjb3BlKCk7Ci0gICAgYXNzZXJ0TnVsbChzaG91bGRCZU51bGwpOwotCi0gICAgcmV0dXJuIHBv
cE51bGxFcnJvcihkZXZpY2UpOwotfTsKLQotdGVzdHNbIlB1c2ggYW5kIHBvcCBtYW55IGVycm9y
IHNjb3BlcyB3aXRoIG5vIHJlamVjdGlvbnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGNv
bnN0IG51bUl0ZXJhdGlvbnMgPSAxMjg7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVy
YXRpb25zOyArK2kpCi0gICAgICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgib3V0LW9mLW1lbW9y
eSIpOwotICAgIAotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9ucyAtIDE7ICsr
aSkKLSAgICAgICAgYXdhaXQgcG9wTnVsbEVycm9yKGRldmljZSk7Ci0KLSAgICByZXR1cm4gcG9w
TnVsbEVycm9yKGRldmljZSk7Ci19OwotCi10ZXN0c1siQ2F0Y2ggbWFueSBlcnJvcnMgaW4gbmVz
dGVkIHNjb3Blcy4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgY29uc3QgbnVtSXRlcmF0aW9u
cyA9IDEyODsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgewot
ICAgICAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgY2F1
c2VWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLSAgICB9Ci0KLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG51bUl0ZXJhdGlvbnMgLSAxOyArK2kpCi0gICAgICAgIGF3YWl0IHBvcFZhbGlkYXRpb25F
cnJvcihkZXZpY2UpOwotCi0gICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOwot
fTsKLQotcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKLQotLyogSGVscGVyIEZ1bmN0aW9ucyAq
LwotCi1jb25zdCBjYXVzZVZhbGlkYXRpb25FcnJvciA9IGRldmljZSA9PiBkZXZpY2UuY3JlYXRl
QnVmZmVyKHsgc2l6ZTogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFIH0pOwotY29uc3QgY2F1c2VNZW1vcnlFcnJvciA9IGRldmljZSA9
PiBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogOTk5OTk5OTk5OTksIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5OT05FIH0pOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS9leHBhbmRvLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU2NmIwZThhZmUyNTc2MGU5MTFiOWY4ODZiY2IzYzU2NTNiMzJmMTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2V4cGFuZG8tcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBWZXJpZnkgZXhwYW5kbyBwcm9wZXJ0aWVzIGFyZSBwcmVz
ZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250ZXh0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9leHBhbmRvLXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9leHBhbmRv
LXByb3BlcnRpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5Mzg1MTEz
YWMwZWU1YWI5Mjk2NDc1YTE5Yzk5ZDcxMzM3OTgxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZXhwYW5kby1wcm9wZXJ0
aWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+RW5zdXJlIGV4cGFuZG8gcHJvcGVydGllcyBh
cmUgcHJlc2VydmVkIG9uIHRoZSBXZWJHUFUgY29udGV4dC48L3RpdGxlPgotPGJvZHk+Ci08Y2Fu
dmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2Fu
dmFzPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGluaXRpYWxpemUoKSB7Ci0gICAgbGV0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLSAgICBsZXQgY3R4ID0gY2FudmFz
LmdldENvbnRleHQoImdwdSIpOwotICAgIGN0eC5teVByb3BlcnR5ID0gMjsKLX0KLQotZnVuY3Rp
b24gY29sbGVjdEdhcmJhZ2UoKSB7Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAg
ICAgIHdpbmRvdy5HQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICAgIGVsc2UgaWYgKHdpbmRvdy5n
YykKLSAgICAgICAgZ2MoKTsKLSAgICBlbHNlIGlmICh3aW5kb3cuJHZtKQotICAgICAgICB3aW5k
b3cuJHZtLmdjKCk7Ci0gICAgLy8gJHZtIGlzIGV4cG9zZWQgaW4gV2ViS2l0J3MgTWluaUJyb3dz
ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQ6Ci0gICAgLy8g
ICBleHBvcnQgSlNDX3VzZURvbGxhclZNPTEKLSAgICAvLyAgIGV4cG9ydCBfX1hQQ19KU0NfdXNl
RG9sbGFyVk09MQotfQotCi0vLyBGSVhNRTogSFRNTENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgi
Z3B1Iikgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUKLS8vIFdlYkdQVSBzcGVjLiBXaGVuIFdlYktp
dCBpcyB1cGRhdGVkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHNwZWMsIHRoaXMKLS8vIHRlc3QgYW5k
IHRoZSBiaW5kaW5ncyBzaG91bGQgYmUgdXBkYXRlZCB0byBob25vciB0aGUgc3BlYydzCi0vLyBn
dWFyYW50ZWVzIGFib3V0IHByZXNlcnZpbmcgZXhwYW5kbyBwcm9wZXJ0aWVzIG9uIHZhcmlvdXMK
LS8vIGludGVyZmFjZXMuCi1sZXQgdGVzdDEgPSBhc3luY190ZXN0KCdWZXJpZnkgZXhwYW5kbyBw
cm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQgb24gdGhlIFdlYkdQVSBjb250ZXh0Jyk7Ci10ZXN0MS5z
dGVwKGZ1bmN0aW9uKCkgewotICAgIGluaXRpYWxpemUoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3Qx
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgY29sbGVjdEdhcmJhZ2UoKTsKLSAgICAg
ICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLSAgICAg
ICAgbGV0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjdHgubXlQcm9wZXJ0eSwgMik7Ci0gICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICB9KSwg
MjAwKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjk1NTNjYjhh
YTcwMTU0NzBlZWFjMzRhMmNjZDk0YzMxYmM4MWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGdl
dEJhc2ljRGV2aWNlKCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1
LnJlcXVlc3RBZGFwdGVyKHsgcG93ZXJQcmVmZXJlbmNlOiAibG93LXBvd2VyIiB9KTsKLSAgICBj
b25zdCBkZXZpY2UgPSBhd2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLSAgICByZXR1cm4g
ZGV2aWNlOwotfQotCi1mdW5jdGlvbiBkcmF3R3JlZW5NaXBDaGFpbk9uUmVkQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCIyZCIpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigyNTUsIDAsIDApIjsKLSAgICBj
b250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAg
ICBsZXQgbWF4UmVzb2x1dGlvbiA9IE1hdGgubWF4KGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7Ci0gICAgbGV0IG1pcExldmVsQ291bnQgPSBNYXRoLmNlaWwoTWF0aC5sb2cyKG1heFJlc29s
dXRpb24pKTsKLSAgICBpZiAobWlwTGV2ZWxDb3VudCA8IDEpIG1pcExldmVsQ291bnQgPSAxOwot
Ci0gICAgbGV0IHdpZHRoICA9IGNhbnZhcy53aWR0aDsKLSAgICBsZXQgaGVpZ2h0ID0gY2FudmFz
LmhlaWdodDsKLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IG1pcExldmVsQ291bnQ7ICsraSkgewot
ICAgICAgICB3aWR0aCAgPSBNYXRoLm1heChNYXRoLmZsb29yKHdpZHRoICAvIDIpLCAxKTsKLSAg
ICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5mbG9vcihoZWlnaHQgLyAyKSwgMSk7Ci0gICAg
ICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigwLCAyNTUsIDApIjsKLSAgICAgICAgY29udGV4
dC5maWxsUmVjdCgwLCBoZWlnaHQsIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLQotfQotCi1mdW5j
dGlvbiBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpIHsK
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Ci0gICAgY29udGV4
dC5maWxsU3R5bGUgPSAiYmx1ZSI7Ci0gICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCA0MDAsIDQw
MCk7Ci0gICAgY29udGV4dC5maWxsU3R5bGUgPSAid2hpdGUiOwotICAgIGNvbnRleHQuZmlsbFJl
Y3QoMTAwLCAxMDAsIDIwMCwgMjAwKTsKLX0KLQotZnVuY3Rpb24gZHJhd0JsYWNrU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAgY29uc3QgY29udGV4dCA9IGNh
bnZhcy5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gImJsdWUiOwot
ICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDApOwotICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gImJsYWNrIjsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDEwMCwgMTAwLCAyMDAsIDIwMCk7
Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKSB7Ci0gICAg
Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHQuZmls
bFN0eWxlID0gJ3JnYigwLCAyNTUsIDApJzsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdHcmVlbkFuZEJs
dWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcykgewotICAgIGNvbnN0IGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLQotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYigw
LCAyNTUsIDApJzsKLSAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2Fu
dmFzLmhlaWdodCk7Ci0KLSAgICBjb25zdCBudW1Db2x1bW5zID0gNDsKLSAgICBjb25zdCBudW1S
b3dzID0gNDsKLSAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgIGNvbnRleHQuZmlsbFN0eWxl
ID0gJ3JnYigwLCAwLCAyNTUpJzsKLSAgICBmb3IgKGxldCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7
ICsreCkgewotICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAg
ICAgICAgICAgaWYgKCh4ICsgeSkgJSAyID09IDApCi0gICAgICAgICAgICAgICAgY29udGV4dC5y
ZWN0KAotICAgICAgICAgICAgICAgICAgICB4ICogY2FudmFzLndpZHRoIC8gbnVtQ29sdW1ucywK
LSAgICAgICAgICAgICAgICAgICAgeSAqIGNhbnZhcy5oZWlnaHQgLyBudW1Sb3dzLAotICAgICAg
ICAgICAgICAgICAgICBjYW52YXMud2lkdGggLyBudW1Db2x1bW5zLAotICAgICAgICAgICAgICAg
ICAgICBjYW52YXMuaGVpZ2h0IC8gbnVtUm93cwotICAgICAgICAgICAgICAgICAgICApOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGNvbnRleHQuZmlsbCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVC
YXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSkgewotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgcmV0dXJuIGNvbnRleHQuY29uZmlndXJlU3dhcENo
YWluKHsgZGV2aWNlOiBkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0iIH0pOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVCYXNpY0RlcHRoU3RhdGVEZXNjcmlwdG9yKCkgewotICAgIHJldHVybiB7Ci0g
ICAgICAgIGRlcHRoV3JpdGVFbmFibGVkOiB0cnVlLAotICAgICAgICBkZXB0aENvbXBhcmU6ICJs
ZXNzIgotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJhc2ljRGVwdGhUZXh0dXJlKGNhbnZh
cywgZGV2aWNlKSB7Ci0gICAgY29uc3QgZGVwdGhTaXplID0gewotICAgICAgICB3aWR0aDogY2Fu
dmFzLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgICAgIGRlcHRo
OiAxCi0gICAgfTsKLQotICAgIHJldHVybiBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAg
IHNpemU6IGRlcHRoU2l6ZSwKLSAgICAgICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4
IiwKLSAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVAotICAg
IH0pOwotfQotCi1mdW5jdGlvbiBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2
aWNlLCBjb2xvclN0YXRlcywgcGlwZWxpbmVMYXlvdXQsIHZlcnRleElucHV0RGVzY3JpcHRvciwg
ZGVwdGhTdGF0ZURlc2NyaXB0b3IsIHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlw
IikgewotICAgIGNvbnN0IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsKLSAgICAgICAgbW9kdWxl
OiBzaGFkZXJNb2R1bGUsCi0gICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCi0gICAg
fTsKLQotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yID0gewotICAgICAgICBtb2R1
bGU6IHNoYWRlck1vZHVsZSwKLSAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCi0g
ICAgfTsKLQotICAgIGlmICghY29sb3JTdGF0ZXMpIHsKLSAgICAgICAgY29sb3JTdGF0ZXMgPSBb
eyAKLSAgICAgICAgICAgIGZvcm1hdDogImJncmE4dW5vcm0iLAotICAgICAgICAgICAgYWxwaGFC
bGVuZDoge30sCi0gICAgICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgICAgICB9XTsKLSAgICB9
Ci0KLSAgICBpZiAoIXZlcnRleElucHV0RGVzY3JpcHRvcikKLSAgICAgICAgdmVydGV4SW5wdXRE
ZXNjcmlwdG9yID0geyB2ZXJ0ZXhCdWZmZXJzOiBbXSB9OwotCi0gICAgY29uc3QgcGlwZWxpbmVE
ZXNjcmlwdG9yID0gewotICAgICAgICB2ZXJ0ZXhTdGFnZTogdmVydGV4U3RhZ2VEZXNjcmlwdG9y
LAotICAgICAgICBmcmFnbWVudFN0YWdlOiBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciwKLSAgICAg
ICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHByaW1pdGl2ZVRvcG9sb2d5LAotICAgICAgICBjb2xvclN0
YXRlczogY29sb3JTdGF0ZXMsCi0gICAgICAgIHZlcnRleElucHV0OiB2ZXJ0ZXhJbnB1dERlc2Ny
aXB0b3IKLSAgICB9OwotCi0gICAgaWYgKHBpcGVsaW5lTGF5b3V0KQotICAgICAgICBwaXBlbGlu
ZURlc2NyaXB0b3IubGF5b3V0ID0gcGlwZWxpbmVMYXlvdXQ7Ci0KLSAgICBpZiAoZGVwdGhTdGF0
ZURlc2NyaXB0b3IpCi0gICAgICAgIHBpcGVsaW5lRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0
ZSA9IGRlcHRoU3RhdGVEZXNjcmlwdG9yOwotCi0gICAgcmV0dXJuIGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShwaXBlbGluZURlc2NyaXB0b3IpOwotfQotCi1mdW5jdGlvbiBiZWdpbkJhc2lj
UmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKSB7Ci0gICAgY29uc3QgYmFzaWNB
dHRhY2htZW50ID0gewotICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRl
eHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLAotICAgICAgICBsb2FkT3A6ICJjbGVhciIsCi0g
ICAgICAgIHN0b3JlT3A6ICJzdG9yZSIsCi0gICAgICAgIGNsZWFyQ29sb3I6IHsgcjogMS4wLCBn
OiAwLCBiOiAwLCBhOiAxLjAgfQotICAgIH07Ci0KLSAgICAvLyBGSVhNRTogRmxlc2ggb3V0IHRo
ZSByZXN0IG9mIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiAKLSAgICByZXR1cm4gY29tbWFuZEVu
Y29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2htZW50cyA6IFtiYXNpY0F0dGFjaG1l
bnRdIH0pOwotfQotCi1mdW5jdGlvbiBlbmNvZGVCYXNpY0NvbW1hbmRzKHJlbmRlclBhc3NFbmNv
ZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVyKSB7Ci0gICAgaWYgKHZlcnRleEJ1ZmZl
cikKLSAgICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4
QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQ
aXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcldp
dGhEYXRhKGRldmljZSwgZGVzY3JpcHRvciwgZGF0YSwgb2Zmc2V0ID0gMCkgewotICAgIGNvbnN0
IG1hcHBlZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoZGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobWFwcGVkQnVmZmVyWzFdKTsKLSAg
ICBkYXRhQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIG1hcHBl
ZEJ1ZmZlclswXS51bm1hcCgpOwotICAgIHJldHVybiBtYXBwZWRCdWZmZXJbMF07Ci19Ci0KLWFz
eW5jIGZ1bmN0aW9uIG1hcFdyaXRlRGF0YVRvQnVmZmVyKGJ1ZmZlciwgZGF0YSwgb2Zmc2V0ID0g
MCkgewotICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMo
KTsKLSAgICBjb25zdCB3cml0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOwot
ICAgIHdyaXRlQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGRhdGEpLCBvZmZzZXQpOwotICAgIGJ1
ZmZlci51bm1hcCgpOwotfQotCi0vKioqIEZ1bmN0aW9ucyBiZWxvdyB0aGlzIGxpbmUgcmVxdWly
ZSBXUFQgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3RoYXJuZXNzcmVwb3J0LmpzLiAqKiovCi0KLWZ1
bmN0aW9uIHJ1blRlc3RzV2l0aERldmljZSh0ZXN0cykgewotICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAg
dmFyIGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUp
IHsgLyogV2ViR1BVIGlzIG5vdCBzdXBwb3J0ZWQuICovIH0KLSAgICAKLSAgICAgICAgZm9yIChs
ZXQgbmFtZSBpbiB0ZXN0cykgewotICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8i
KSkKLSAgICAgICAgICAgICAgICBkZXZpY2VQcm9taXNlVGVzdChkZXZpY2UsIHRlc3RzW25hbWVd
LCBuYW1lKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi1mdW5jdGlvbiBkZXZpY2VQcm9taXNl
VGVzdChkZXZpY2UsIGZ1bmMsIG5hbWUpIHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
ewotICAgICAgICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybiBmdW5jKGRldmljZSk7Ci0gICAgfSwg
bmFtZSk7Ci19OwotCi0vLyBBc3NlcnRpbmcgZXJyb3JzLgotCi1jb25zdCBwb3BWYWxpZGF0aW9u
RXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFz
c2VydFZhbGlkYXRpb25FcnJvcihlcnJvcikpOwotY29uc3QgcG9wTWVtb3J5RXJyb3IgPSBkZXZp
Y2UgPT4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydE1lbW9yeUVy
cm9yKGVycm9yKSk7Ci1jb25zdCBwb3BOdWxsRXJyb3IgPSBkZXZpY2UgPT4gZGV2aWNlLnBvcEVy
cm9yU2NvcGUoKS50aGVuKGVycm9yID0+IGFzc2VydE51bGwoZXJyb3IpKTsKLWNvbnN0IGFzc2Vy
dE51bGwgPSBlcnJvciA9PiB7Ci0gICAgbGV0IGFzc2VydGlvbk1zZyA9ICJObyBlcnJvciBleHBl
Y3RlZCEiOwotICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdlKQotICAgICAgICBhc3NlcnRp
b25Nc2cgKz0gIiBHb3Q6ICIgKyBlcnJvci5tZXNzYWdlOwotICAgIGFzc2VydF90cnVlKGVycm9y
ID09PSBudWxsLCBhc3NlcnRpb25Nc2cpOwotfTsKLWNvbnN0IGFzc2VydFZhbGlkYXRpb25FcnJv
ciA9IGVycm9yID0+IHsKLSAgICBsZXQgYXNzZXJ0aW9uTXNnID0gIkV4cGVjdGVkIHZhbGlkYXRp
b24gZXJyb3I6ICI7Ci0gICAgaWYgKGVycm9yICYmIGVycm9yLm1lc3NhZ2UpCi0gICAgICAgIGFz
c2VydGlvbk1zZyArPSBlcnJvci5tZXNzYWdlOwotICAgIGFzc2VydF90cnVlKGVycm9yIGluc3Rh
bmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yLCBhc3NlcnRpb25Nc2cpOwotfTsKLWNvbnN0IGFzc2Vy
dE1lbW9yeUVycm9yID0gZXJyb3IgPT4gYXNzZXJ0X3RydWUoZXJyb3IgaW5zdGFuY2VvZiBHUFVP
dXRPZk1lbW9yeUVycm9yLCAiRXhwZWN0ZWQgb3V0LW9mLW1lbW9yeSBlcnJvciEiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiYjYyNGRjODAzNzUwNzRjNmEwNWE4ODNmNWFkMGIz
YzYzNmRkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5tYXBSZWFk
QXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi1DT05TT0xFIE1FU1NBR0U6IEdQVUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdFOiBHUFVC
dWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotQ09OU09MRSBNRVNTQUdF
OiBHUFVCdWZmZXIubWFwUmVhZEFzeW5jKCk6IEludmFsaWQgb3BlcmF0aW9uIQotCi1QQVNTIG1h
cFJlYWRBc3luYywgdW5tYXAsIGFuZCBkZXN0cm95IG9uIGEgR1BVQnVmZmVyLgotUEFTUyBHUFVC
dWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVyIGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVh
dGVCdWZmZXJNYXBwZWQuCi1QQVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEgYnVmZmVyIG5vdCBj
cmVhdGVkIHdpdGggTUFQX1JFQUQgdXNhZ2UuCi1QQVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEg
bWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEgcGVuZGluZyBtYXAgcmVhZCBpZiBHUFVC
dWZmZXIgaXMgdW5tYXBwZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAt
cmVhZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTYzYTI3OGQyYTM4Njg2YWUzYzZh
N2Y0NDZjOTEwMzgyNDQ4NzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGVCdWZmZXJNYXBwZWQgYW5kIG1hcFJlYWRB
c3luYyBvbiBhIEdQVUJ1ZmZlci48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHJ1blRl
c3RzKCkgewotICAgIC8vIEJhc2ljIG1hcFJlYWRBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihh
c3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFE
IH0pOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYnVmZmVyIGluc3RhbmNlb2YgR1BVQnVmZmVy
LCAiY3JlYXRlQnVmZmVyIHJldHVybmVkIGEgR1BVQnVmZmVyIik7Ci0KLSAgICAgICAgICAgIGxl
dCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAg
IGFzc2VydF90cnVlKGFycmF5QnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsICJmaXJzdCBt
YXBSZWFkQXN5bmMgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5Iik7Ci0KLSAgICAgICAgICAgIGNvbnN0
IHJlYWRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZWFkQXJyYXlbMF0sIDAsICJzdWNjZXNzZnVsbHkgYWNjZXNzIGEgdmFs
dWUgZnJvbSBhIG1hcCByZWFkIik7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0g
ICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFJlYWRBc3luYygpOyAvLyBUaGlz
IHdpbGwgZXZlbnR1YWxseSByZWplY3QgZHVlIHRvIGJ1ZmZlci5kZXN0cm95KCkKLQotICAgICAg
ICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKLQotICAgICAgICAgICAgYXdhaXQgcHJvbWlzZS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRl
c3Ryb3llZCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJtYXBSZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVz
dHJveSBvbiBhIEdQVUJ1ZmZlci4iKTsKLQotICAgIC8vIEdQVURldmljZS5jcmVhdGVCdWZmZXJN
YXBwZWQKLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3Qg
YnVmZmVyUmVzdWx0ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7IHNpemU6IDE2LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0gICAgICAgICAgICBjb25zdCBidWZmZXIg
PSBidWZmZXJSZXN1bHRbMF07Ci0gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGJ1ZmZl
clJlc3VsdFsxXTsKLQotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYnVmZmVyIGluc3RhbmNlb2Yg
R1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJldHVybmVkIGEgR1BVQnVmZmVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVy
LCAiY3JlYXRlQnVmZmVyTWFwcGVkIHJldHVybmVkIGFuIEFycmF5QnVmZmVyIik7Ci0KLSAgICAg
ICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAg
ICAgICAgYXJyYXkuc2V0KFsxLCAyLCAzLCA0XSk7Ci0KLSAgICAgICAgICAgIC8vIEJ1ZmZlciBz
aG91bGQgYWxyZWFkeSBiZSAibWFwcGVkIi4KLSAgICAgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBS
ZWFkQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJHUFVCdWZmZXIgY3JlYXRlZCB2aWEgR1BVQnVmZmVyTWFwcGVkIGNhbm5vdCBiZSBtYXBwZWQg
dW50aWwgYWZ0ZXIgZmlyc3QgdW5tYXAhIik7Ci0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0K
LSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICAvLyBCdWZmZXIgc2hv
dWxkIG5vdCBiZSByZS1tYXBwYWJsZSBmb3Igd3JpdGVzLgotICAgICAgICAgICAgYXdhaXQgYnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAg
ICAgICAgICAgfSwgKCkgPT4ge30pOwotCi0gICAgICAgICAgICAvLyBSZWFkIHJlc3VsdHMgb2Yg
b3JpZ2luYWwgd3JpdGVzLgotICAgICAgICAgICAgbGV0IHJlc3VsdEFycmF5QnVmZmVyID0gYXdh
aXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgICAgICAgICAgY29uc3QgcmVzdWx0QXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdEFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIHJlc3Vs
dEFycmF5LmZvckVhY2goKHYsIGkpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHYsIGFycmF5W2ldLCAiU3VjY2Vzc2Z1bGx5IG1hcC1yZWFkIHZhbHVlIHdyaXR0ZW4gdG8gR1BV
QnVmZmVyIG1hcHBlZCBvbiBjcmVhdGlvbiIpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIH0pOwotICAgIH0sICJHUFVCdWZmZXIubWFwUmVhZEFzeW5jIG9uIGEgYnVmZmVy
IGNyZWF0ZWQgdmlhIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQuIik7Ci0KLSAgICAvKiBC
YXNpYyB2YWxpZGF0aW9uICovCi0gICAgLy8gRklYTUU6IFRlc3QgaW52YWxpZCBjb21iaW5hdGlv
bnMgb2YgR1BVQnVmZmVyVXNhZ2UgYWZ0ZXIgaW1wbGVtZW50aW5nIGVycm9yIGhhbmRsaW5nLgot
Ci0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNl
KCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
Lk1BUF9XUklURSB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3
YXMgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCEiKTsKLSAgICAgICAgICAgIH0sICgpID0+IHt9
KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0pOwotICAgIH0sICJSZWplY3Qg
YSBtYXAgcmVhZCBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9SRUFEIHVzYWdlLiIp
OwotCi0gICAgLyogRXh0ZW5kZWQgdW5tYXAvZGVzdHJveSBhbmQgcHJvbWlzZSBzZXR0bGluZyB0
ZXN0aW5nICovCi0KLSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAg
Y29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUQgfSk7Ci0KLSAgICAgICAgICAgIGJ1ZmZlci5tYXBSZWFkQXN5
bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLSAgICAg
ICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIk1hcCBvcGVy
YXRpb24gd2FzIGludmFsaWQhIik7IC8vIGJ1ZmZlciB3YXMgc3RpbGwgaW4gbWFwcGVkIHN0YXRl
IGR1cmluZyBwcm9taXNlIGNyZWF0aW9uCi0gICAgICAgICAgICB9LCAoKSA9PiB7fSk7Ci0gICAg
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgbWFwIHJl
YWQgb24gYSBtYXBwZWQgR1BVQnVmZmVyLiIpOwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBz
aXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOwotCi0gICAgICAgICAg
ICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgICAgICAgICAgYnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgICAgIGF3YWl0IHByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQnVmZmVyIHdhcyB1bm1hcHBlZCEiKTsg
Ly8gYnVmZmVyIHdhcyB1bm1hcHBlZCwgd2hpY2ggcmVqZWN0cyBwZW5kaW5nIHByb21pc2VzCi0g
ICAgICAgICAgICB9LCgpID0+IHt9KTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IH0pOwotICAgIH0sICJSZWplY3QgYSBwZW5kaW5nIG1hcCByZWFkIGlmIEdQVUJ1ZmZlciBpcyB1
bm1hcHBlZC4iKTsKLX0KLQotcnVuVGVzdHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3JpdGUtYnVmZmVycy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZGQ5NTEwN2YyYmUxOWVhZDhhMTVhYmExMmQ1MjEy
NTcwNzE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L21hcC13cml0ZS1idWZmZXJzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBHUFVCdWZmZXIubWFwV3Jp
dGVBc3luYygpOiBJbnZhbGlkIG9wZXJhdGlvbiEKLUNPTlNPTEUgTUVTU0FHRTogR1BVQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTogSW52YWxpZCBvcGVyYXRpb24hCi0KLVBBU1MgTWFwIHdyaXRlLCB1
bm1hcCwgYW5kIGRlc3Ryb3kgYSBHUFVCdWZmZXIuCi1QQVNTIFJlamVjdCBhIG1hcCB3cml0ZSBv
biBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3aXRoIE1BUF9XUklURSB1c2FnZS4KLVBBU1MgUmVqZWN0
IGEgbWFwIHdyaXRlIG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4KLVBBU1MgUmVqZWN0IGEgcGVuZGlu
ZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFwcGVkLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvbWFwLXdyaXRlLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9tYXAtd3JpdGUtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
OWNmZDlmNTJjNzViNjU4YWRmMjZhNTk2YjAxZGMzNjUwNDQzNTc2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtd3Jp
dGUtYnVmZmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBtYXBXcml0ZUFz
eW5jIG9uIGEgR1BVQnVmZmVyLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gcnVuVGVz
dHMoKSB7Ci0gICAgLy8gQmFzaWMgbWFwV3JpdGVBc3luYyBmdW5jdGlvbmFsaXR5Ci0gICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihh
c3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB9KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGJ1ZmZlciBpbnN0YW5jZW9mIEdQVUJ1ZmZl
ciwgImNyZWF0ZUJ1ZmZlciByZXR1cm5lZCBhIEdQVUJ1ZmZlciIpOwotCi0gICAgICAgICAgICBs
ZXQgYXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotCi0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCAiZmly
c3QgbWFwV3JpdGVBc3luYyByZXNvbHZlZCBzdWNjZXNzZnVsbHkiKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlcik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFycmF5WzBdLCAwLCAibWFwV3JpdGVBc3luYyB6ZXJv
ZWQgb3V0IHN0b3JhZ2UiKTsKLSAgICAgICAgICAgIGFycmF5LnNldChbMSwgMiwgMywgNF0pOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICAgICAg
Y29uc3QgcHJvbWlzZSA9IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7IC8vIFRoaXMgd2lsbCBldmVu
dHVhbGx5IHJlamVjdCBkdWUgdG8gYnVmZmVyLmRlc3Ryb3koKQotCi0gICAgICAgICAgICBidWZm
ZXIuZGVzdHJveSgpOwotCi0gICAgICAgICAgICBhd2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkJ1ZmZlciB3YXMgZGVzdHJveWVkISIp
OwotICAgICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgfSk7Ci0gICAgfSwgIk1hcCB3cml0ZSwgdW5tYXAsIGFuZCBkZXN0cm95IGEgR1BVQnVm
ZmVyLiIpOwotCi0gICAgLyogQmFzaWMgdmFsaWRhdGlvbiAqLwotICAgIC8vIEZJWE1FOiBUZXN0
IGludmFsaWQgY29tYmluYXRpb25zIG9mIEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGlu
ZyBlcnJvciBoYW5kbGluZy4KLQotICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
ICAgICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKLQotICAgICAgICAgICAgYXdhaXQgYnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBjcmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOwotICAg
ICAgICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
fSk7Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIGJ1ZmZlciBub3QgY3JlYXRlZCB3
aXRoIE1BUF9XUklURSB1c2FnZS4iKTsKLQotICAgIC8qIEV4dGVuZGVkIHVubWFwL2Rlc3Ryb3kg
YW5kIHByb21pc2Ugc2V0dGxpbmcgdGVzdGluZyAqLwotCi0gICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgICAgICAgcmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
eyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKLQotICAgICAg
ICAgICAgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBidWZmZXIudW5tYXAoKTsKLSAgICAgICAgICAgIH0sICgpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYXdh
aXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCJNYXAgb3BlcmF0aW9uIHdhcyBpbnZhbGlkISIpOyAvLyBidWZmZXIg
d2FzIHN0aWxsIGluIG1hcHBlZCBzdGF0ZSBkdXJpbmcgcHJvbWlzZSBjcmVhdGlvbgotICAgICAg
ICAgICAgfSwgKCkgPT4ge30pOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgfSk7
Ci0gICAgfSwgIlJlamVjdCBhIG1hcCB3cml0ZSBvbiBhIG1hcHBlZCBHUFVCdWZmZXIuIik7Ci0K
LSAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGFzeW5jIGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgY29uc3QgYnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDE2LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFIH0pOwotCi0gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gYnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICAgICAgICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgICAgICBh
d2FpdCBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNo
ZWQoIkJ1ZmZlciB3YXMgdW5tYXBwZWQhIik7IC8vIGJ1ZmZlciB3YXMgdW5tYXBwZWQsIHdoaWNo
IHJlamVjdHMgcGVuZGluZyBwcm9taXNlcwotICAgICAgICAgICAgfSwoKSA9PiB7fSk7Ci0gICAg
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB9KTsKLSAgICB9LCAiUmVqZWN0IGEgcGVuZGlu
ZyBtYXAgd3JpdGUgaWYgR1BVQnVmZmVyIGlzIHVubWFwcGVkLiIpOwotfQotCi1ydW5UZXN0cygp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcGlw
ZWxpbmUtbGF5b3V0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcGlwZWxpbmUt
bGF5b3V0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NTZl
YjZhYmYwZDVhMTkzMDEzN2E2YjIxYWQ1YmI0YWViMDA0YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxh
eW91dHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mg
Q3JlYXRlIGEgYmFzaWMgR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci4KLVBBU1MgQ3JlYXRl
IGEgYmFzaWMgR1BVUGlwZWxpbmVMYXlvdXQgd3RpaCBhIEdQVURldmljZS4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3BpcGVsaW5lLWxheW91dHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9waXBlbGluZS1sYXlvdXRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhkMmI3OThlYTY0Y2JhNDNlYmIwMmNmMjliMzhjMmY4YTg3NDIzNzYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3Bp
cGVsaW5lLWxheW91dHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5DcmVhdGUgR1BVQmluZEdy
b3VwTGF5b3V0LjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gY3JlYXRlQmluZEdyb3VwTGF5b3V0
QmluZGluZygpIHsKLSAgICByZXR1cm4gewotICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICB2
aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCB8IEdQVVNoYWRlclN0YWdlLlZFUlRF
WCwKLSAgICAgICAgdHlwZTogInN0b3JhZ2UtYnVmZmVyIgotICAgIH07Ci19Ci0KLXRlc3QoKCkg
PT4gewotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7IGJpbmRpbmdzOiBb
Y3JlYXRlQmluZEdyb3VwTGF5b3V0QmluZGluZygpXSB9OwotICAgIGFzc2VydF9ub3RfZXF1YWxz
KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGluZ3NbMF0udmlzaWJpbGl0eSAmIEdQVVNo
YWRlclN0YWdlLkZSQUdNRU5ULCAwKTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzWzBdLnZpc2liaWxpdHkgJiBHUFVTaGFkZXJTdGFnZS5W
RVJURVgsIDApOwotICAgIGFzc2VydF9lcXVhbHMoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5i
aW5kaW5nc1swXS50eXBlLCAic3RvcmFnZS1idWZmZXIiKTsKLX0sICJDcmVhdGUgYSBiYXNpYyBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLiIpOyAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
ICAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KHsgYmluZGluZ3M6IFtjcmVhdGVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nKCldIH0pOwotICAgICAg
ICBhc3NlcnRfdHJ1ZShiaW5kR3JvdXBMYXlvdXQgaW5zdGFuY2VvZiBHUFVCaW5kR3JvdXBMYXlv
dXQsICJjcmVhdGVCaW5kR3JvdXBMYXlvdXQgcmV0dXJuZWQgYSBHUFVCaW5kR3JvdXBMYXlvdXQi
KTsKLQotICAgICAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGlu
ZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdIH0pOwotICAgICAg
ICBhc3NlcnRfdHJ1ZShwaXBlbGluZUxheW91dCBpbnN0YW5jZW9mIEdQVVBpcGVsaW5lTGF5b3V0
LCAiY3JlYXRlUGlwZWxpbmVMYXlvdXQgcmV0dXJuZWQgYSBHUFVQaXBlbGluZUxheW91dCIpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBhIGJhc2ljIEdQVVBpcGVs
aW5lTGF5b3V0IHd0aWggYSBHUFVEZXZpY2UuIik7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvcXVldWUtY3JlYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNGVjMjM3NmY3NmI1NmFlYzBjNWQ0NDUwMjA4NGQ3ZTM5OGQ4
YWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9xdWV1ZS1jcmVhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyBnZXRRdWV1ZSgpIG9uIEdQVURldmljZS4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3F1ZXVlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvcXVldWUtY3JlYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGM5NWE2Y2M3MDIwY2E5ZTZkZjFkY2MzYWJjZTc1M2JhZTU5YjBhZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcXVl
dWUtY3JlYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5HZXQgdGhlIEdQVURldmljZSBh
bmQgYXNrIGZvciB0aGUgR1BVUXVldWU8L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImpzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotJ3VzZSBzdHJpY3QnOwot
Ci1wcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMobmF2aWdh
dG9yLmdwdSwgdW5kZWZpbmVkLCAibmF2aWdhdG9yLmdwdSBleGlzdHMiKTsKLQotICAgIGNvbnN0
IGNvbnRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJn
cHUiKTsKLSAgICBhc3NlcnRfdHJ1ZShjb250ZXh0IGluc3RhbmNlb2YgR1BVQ2FudmFzQ29udGV4
dCwgImdldENvbnRleHQgcmV0dXJuZWQgYSBHUFVDYW52YXNDb250ZXh0LiIpOwotCi0gICAgcmV0
dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihhc3luYyBmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAg
ICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUo
cXVldWUgaW5zdGFuY2VvZiBHUFVRdWV1ZSwgImdldFF1ZXVlIHJldHVybmVkIGEgR1BVUXVldWUu
Iik7Ci0KLSAgICAgICAgcXVldWUubGFiZWwgPSAiRXhhbXBsZSBsYWJlbCI7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMocXVldWUubGFiZWwsICJFeGFtcGxlIGxhYmVsIiwgInF1ZXVlLmxhYmVsIHdh
cyBzZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiZ2V0UXVldWUoKSBv
biBHUFVEZXZpY2UuIik7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMzU3OWM0YTk0OTMxYzFhYjg1NGVmNDFiOWE0ZDQ3
YzA4OWQ2MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIEdQVVJlbmRlclBhc3NFbmNvZGVy
IGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0OTQ4YjZlNDMyNTYzZjI4NTBlMDFjOWU4N2M0OTNhOThkNzIyZDZjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9y
ZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPkdldCB0aGUg
R1BVRGV2aWNlIGFuZCBhc2sgZm9yIHRoZSBHUFVRdWV1ZTwvdGl0bGU+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qg
c2hhZGVycyA9IGAKLXN0cnVjdCBWZXJ0ZXgKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKLSAgICBmbG9hdDQgYXR0cmlidXRlUG9zaXRpb24gOiBhdHRyaWJ1dGUoMCk7Ci19
OwotCi12ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKCkKLXsKLSAgICBWZXJ0ZXggcmVzdWx0Owot
ICAgIHJlc3VsdC5wb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKLSAgICByZXN1bHQuYXR0
cmlidXRlUG9zaXRpb24gPSByZXN1bHQucG9zaXRpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotYAotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOwotICAgICAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3
YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0gICAgICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJzIH0pOwotICAgICAgICBjb25z
dCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwot
Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7Ci0gICAgICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BV
Q29tbWFuZEVuY29kZXIsICJjcmVhdGVDb21tYW5kRW5jb2RlciByZXR1cm5lZCBhIEdQVUNvbW1h
bmRFbmNvZGVyIik7Ci0KLSAgICAgICAgY29uc3QgZW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShlbmNv
ZGVyIGluc3RhbmNlb2YgR1BVUmVuZGVyUGFzc0VuY29kZXIsICJiZWdpblJlbmRlclBhc3MoKSBy
ZXR1cm5lZCBhIEdQVVJlbmRlclBhc3NFbmNvZGVyIik7Ci0KLSAgICAgICAgZW5jb2Rlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7Ci0gICAgICAgIGVuY29kZXIuZW5kUGFzcygpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgIH0pOwotfSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5k
IHN1Y2Nlc3NmdWxseSBlbmRlZCIpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFmNjZmNThkYzRkZjY2YjA3ODM0MDY1NGQ3
MGI5MjJkM2U2ZmM2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgR1BVUmVuZGVyUGlwZWxp
bmUgY3JlYXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJvcnMuCi1QQVNTIEludmFsaWQgR1BVU2hh
ZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuCi1QQVNTIEludmFsaWQgR1BV
U2hhZGVyTW9kdWxlIGZvciBmcmFnbWVudCBzdGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgRW1wdHkg
ZW50cnkgcG9pbnQgZm9yIHZlcnRleCBzdGFnZSBzaG91bGQgZmFpbC4KLVBBU1MgSW52YWxpZCBH
UFVUZXh0dXJlRm9ybWF0IGluIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHNob3VsZCBmYWlsLgot
UEFTUyBUb28gbWFueSBHUFVDb2xvclN0YXRlRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuCi1QQVNT
IFRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0b3JzIHNob3VsZCBmYWlsLgotUEFTUyBU
b28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4KLVBBU1Mg
RHVwbGljYXRlIHNoYWRlckxvY2F0aW9uIGZvciB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZmFp
bC4KLVBBU1MgSW52YWxpZCBlbnRyeSBwb2ludCBzdHJpbmcgc2hvdWxkIGZhaWwuCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9ycy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwYjliYzczZGM2ZjQ3MmJmYWE0OThjZGI2NDBmNTM5ODBmMjU1
YmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxOTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PHRpdGxlPlRlc3QgRXJyb3IgU2NvcGVzLjwvdGl0bGU+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJq
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3QgcG9zaXRpb25M
b2NhdGlvbiA9IDA7Ci1jb25zdCBjb2xvckxvY2F0aW9uID0gMTsKLQotY29uc3QgY29sb3JPZmZz
ZXQgPSA0ICogNDsKLWNvbnN0IHZlcnRleFN0cmlkZSA9IDggKiA0OwotCi1jb25zdCB3aGxzbFNv
dXJjZSA9IGAKLXN0cnVjdCBGcmFnbWVudERhdGEgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0NCBjb2xvciA6IGF0dHJpYnV0ZSgke2NvbG9yTG9jYXRpb259
KTsKLX0KLQotdmVydGV4IEZyYWdtZW50RGF0YSB2ZXJ0ZXhNYWluKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgke3Bvc2l0aW9uTG9jYXRpb259KSwgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRl
KCR7Y29sb3JMb2NhdGlvbn0pKQotewotICAgIEZyYWdtZW50RGF0YSBvdXQ7Ci0KLSAgICBvdXQu
cG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBvdXQuY29sb3IgPSBjb2xvcjsKLQotICAgIHJldHVy
biBvdXQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudE1haW4oZmxvYXQ0IGNvbG9yIDog
YXR0cmlidXRlKCR7Y29sb3JMb2NhdGlvbn0pKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJu
IGNvbG9yOwotfQotYDsKLQotbGV0IGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGdvb2RN
b2R1bGU7Ci0KLWxldCB0ZXN0cyA9IHt9OwotCi10ZXN0c1siR1BVUmVuZGVyUGlwZWxpbmUgY3Jl
YXRpb24gc3VjY2VlZHMgd2l0aCBubyBlcnJvcnMuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAg
IGdvb2RNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogd2hsc2xTb3Vy
Y2UgfSk7Ci0gICAgCi0gICAgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHsKLSAgICAg
ICAgdmVydGV4U3RhZ2U6IHsgbW9kdWxlOiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4
TWFpbiIgfSwKLSAgICAgICAgZnJhZ21lbnRTdGFnZTogeyBtb2R1bGU6IGdvb2RNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudE1haW4iIH0sCi0gICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAi
dHJpYW5nbGUtbGlzdCIsCi0gICAgICAgIGNvbG9yU3RhdGVzOiBbewotICAgICAgICAgICAgZm9y
bWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgICAgICBhbHBoYUJsZW5kOiB7fSwKLSAgICAgICAg
ICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgICAgIH1dLAotICAgICAgICB2ZXJ0ZXhJbnB1dDogewot
ICAgICAgICAgICAgdmVydGV4QnVmZmVyczogW3sKLSAgICAgICAgICAgICAgICBzdHJpZGU6IHZl
cnRleFN0cmlkZSwKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAg
ICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAg
ICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0OiBjb2xvck9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAi
ZmxvYXQ0IgotICAgICAgICAgICAgICAgIH1dCi0gICAgICAgICAgICB9XQotICAgICAgICB9Ci0g
ICAgfTsKLSAgICBPYmplY3QuZnJlZXplKGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwot
Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJl
dHVybiBwb3BOdWxsRXJyb3IoZGV2aWNlKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRl
ck1vZHVsZSBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+
IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpOwotICAgIGxldCBiYWRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHsgY29kZTogIkZvbyIgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0
ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhN
YWluIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWRE
ZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJJbnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgZnJh
Z21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBi
YWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7Ci0gICAgbGV0IGJhZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiAiRm9vIiAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci5mcmFnbWVudFN0YWdlID0g
eyBtb2R1bGU6IGJhZFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleE1haW4iIH07Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3Ip
OwotfTsKLQotdGVzdHNbIkVtcHR5IGVudHJ5IHBvaW50IGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxk
IGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewotICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2Jq
ZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJh
ZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9vIiAg
fSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhTdGFnZSA9IHsgbW9kdWxlOiBiYWRTaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICIiIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRF
cnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQgR1BVVGV4
dHVyZUZvcm1hdCBpbiBHUFVDb2xvclN0YXRlRGVzY3JpcHRvciBzaG91bGQgZmFpbC4iXSA9IGFz
eW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9
LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBiYWREZXNjcmlwdG9yLmNvbG9y
U3RhdGVzID0gW3sKLSAgICAgICAgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAg
ICAgICAgYWxwaGFCbGVuZDoge30sCi0gICAgICAgIGNvbG9yQmxlbmQ6IHt9Ci0gICAgfV07Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3Ip
OwotfTsKLQotdGVzdHNbIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9ycyBzaG91bGQg
ZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmpl
Y3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFk
Q29sb3JTdGF0ZXMgPSBuZXcgQXJyYXkoMTAwKTsKLSAgICBiYWRDb2xvclN0YXRlcy5maWxsKHsK
LSAgICAgICAgZm9ybWF0OiAiYmdyYTh1bm9ybSIsCi0gICAgICAgIGFscGhhQmxlbmQ6IHt9LAot
ICAgICAgICBjb2xvckJsZW5kOiB7fQotICAgIH0pOwotICAgIGJhZERlc2NyaXB0b3IuY29sb3JT
dGF0ZXMgPSBiYWRDb2xvclN0YXRlczsKLQotICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVy
cm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Ci19OwotCi10ZXN0c1siVG9vIG1hbnkgR1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvcnMgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4gewot
ICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0gICAgbGV0IGJhZFZlcnRleEJ1ZmZlcnMgPSBuZXcgQXJyYXkoMTAw
KTsKLSAgICBiYWRWZXJ0ZXhCdWZmZXJzLmZpbGwoewotICAgICAgICBzdHJpZGU6IHZlcnRleFN0
cmlkZSwKLSAgICAgICAgYXR0cmlidXRlU2V0OiBbewotICAgICAgICAgICAgc2hhZGVyTG9jYXRp
b246IHBvc2l0aW9uTG9jYXRpb24sCi0gICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAg
ICAgIH1dCi0gICAgfSk7Ci0gICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsgdmVydGV4
QnVmZmVyczogYmFkVmVydGV4QnVmZmVycyB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBpcGVsaW5l
QW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRlc3RzWyJUb28gbWFueSBH
UFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmlj
ZSA9PiB7Ci0gICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICBsZXQgYmFkQXR0cmlidXRlcyA9IG5ldyBBcnJh
eSgxMDApOwotICAgIGJhZEF0dHJpYnV0ZXMuZmlsbCh7Ci0gICAgICAgIHNoYWRlckxvY2F0aW9u
OiBwb3NpdGlvbkxvY2F0aW9uLAotICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgfSk7Ci0K
LSAgICBiYWREZXNjcmlwdG9yLnZlcnRleElucHV0ID0gewotICAgICAgICB2ZXJ0ZXhCdWZmZXJz
OiBbewotICAgICAgICAgICAgc3RyaWRlOiB2ZXJ0ZXhTdHJpZGUsCi0gICAgICAgICAgICBhdHRy
aWJ1dGVTZXQ6IGJhZEF0dHJpYnV0ZXMKLSAgICAgICAgfV0KLSAgICB9OwotCi0gICAgcmV0dXJu
IGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXRl
c3RzWyJEdXBsaWNhdGUgc2hhZGVyTG9jYXRpb24gZm9yIHZlcnRleCBhdHRyaWJ1dGVzIHNob3Vs
ZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9i
amVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIGJhZERl
c2NyaXB0b3IudmVydGV4SW5wdXQgPSB7Ci0gICAgICAgIHZlcnRleEJ1ZmZlcnM6IFt7Ci0gICAg
ICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDog
W3sKLSAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAgICAgc2hhZGVyTG9jYXRpb246IGNvbG9yTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgb2Zm
c2V0OiBjb2xvck9mZnNldCwKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCi0gICAg
ICAgICAgICB9XQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICByZXR1cm4gY3JlYXRlUGlwZWxp
bmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwotfTsKLQotdGVzdHNbIkludmFsaWQg
ZW50cnkgcG9pbnQgc3RyaW5nIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAg
ICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotICAgIGJhZERlc2NyaXB0b3IuZnJhZ21lbnRTdGFnZSA9IHsgbW9kdWxl
OiBnb29kTW9kdWxlLCBlbnRyeVBvaW50OiAiYmFyIiB9OwotCi0gICAgcmV0dXJuIGNyZWF0ZVBp
cGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKLX07Ci0KLXJ1blRlc3RzV2l0
aERldmljZSh0ZXN0cyk7Ci0KLWNvbnN0IGNyZWF0ZVBpcGVsaW5lQW5kRXJyb3IgPSAoZGV2aWNl
LCBkZXNjcmlwdG9yKSA9PiB7Ci0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9u
Iik7Ci0gICAgZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpOwotICAgIHJl
dHVybiBwb3BWYWxpZGF0aW9uRXJyb3IoZGV2aWNlKTsKLX07Ci0KLTwvc2NyaXB0PgotPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWNkYjUwNzkyNjZlOGY4ODRkMTYzZWI0
OWFkNzY1NjNhODgyMTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENyZWF0ZSBiYXNpYyBHUFVSZW5k
ZXJQaXBlbGluZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVs
aW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MmIzMzFlNmQ3ZDdjZTgyZTc4MzA4M2FhZDRi
YmJlZmM1ODdhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxzY3JpcHQgc3JjPSJq
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyQ29k
ZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkg
OiBTVl9Qb3NpdGlvbgotewotICAgIGZsb2F0NCB2OwotICAgIHN3aXRjaCAodmlkKSB7Ci0gICAg
Y2FzZSAwOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSAxOgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwg
MSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50X21haW4oKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0
NCgwLjAsIDEuMCwgMC4wLCAxLjApOwotfQotYAotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAg
IHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAg
IGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBz
aGFkZXJDb2RlIH0pOwotCi0gICAgICAgIGNvbnN0IGxheW91dEJpbmRpbmcgPSB7IGJpbmRpbmc6
IDAsIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLlZFUlRFWCwgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIiB9OwotICAgICAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtsYXlvdXRCaW5kaW5nXSB9KTsKLSAgICAgICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3Jv
dXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgICAgICBjb25zdCBwaXBlbGlu
ZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIHBpcGVs
aW5lTGF5b3V0KTsKLSAgICAgICAgYXNzZXJ0X3RydWUocGlwZWxpbmUgaW5zdGFuY2VvZiBHUFVS
ZW5kZXJQaXBlbGluZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQVVJlbmRlclBpcGVsaW5lIik7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIEdQVVJlbmRl
clBpcGVsaW5lIik7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9yZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3Jlc291cmNlcy9ibHVlLWNoZWNrZXJlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNiMmJiNmZhM2YzODYwYzAwNzRiMDk4ZmRmMGU5MjIwZmUzNTdjMzkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmxpdGVyYWwgMTMxNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVY0TUtM
OUJlPzVoVyV6fGZEfkpqeDRSMyZlLUs9LWNsbChYMnhveXUKeldIQUUrdz1mN1pHUiZHSTBUZzV9
QCRffE5mNlUxJEVXbVVwJjMtbG0xSXYwKDdzcnJfVFdfeSM8WWhNQ1ZSa2g3Cnp7ci0mNDFmI2FE
LUdVaCR7Tl5fZyQqJChyVGx1Kl97Pzh7dk1nfUlQaDZWLSYxcUtjZDVUWWR5VmhQTCE4dVE/dQp6
MF4zSXQ/fVBrVkJqY0RWIVNqV3V2WTVYJiUyT1VIZ1YoUH1FK2FDR0FXN3N5KnlPVzM/UTZefE4p
XnU/dTZAOWMKek5KTENiJGNZRnFGTnVrUGdAdThVKFpQWDFLbWRlaiQlOXd8dndfQXVoXkgjbk01
ZVdRPnAheWVpX0Nwc19ra0plCnlRTHIxfS1YQDYkYjNQPWpzTHJFdDZyZV5qQm5zflJWbWZ0M1Ry
XnxoRD9lYXEjXkNBZD1kI1d6cCRQIUdlekF4RQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJj
ZXMvZ3JlZW4tNDAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3Zjg4ZTdj
NWFiNTg4YTg2ODFjMTFkN2QxNmMzMmU5ZjZjNDNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
bGl0ZXJhbCAxNDgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlWNE1LTGpMYmxoVTQ9e2ZmZlFx
TGtoPkcoJjY3SXlLbmBidE1gU1NyCnoxR2d7O0djd0dZQkxOZy00KTYoYVclJG92NV9leilrZ01o
Qzt1dW1mPWp9bTVNai1GZGcwS0U+XlZ0PnZuZHFSdwpYKzx5WkRxb3ZzTjNYcUphdERubXtyLVVX
fDRralFzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzY4Zjg2MmEyOGZjNDJjNTg2ZTIx
YWQ0ODI3ZmNkNjUyMjgzYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIFRlc3Qgc2hhZGVyIGNvZGUgdmFs
aWRhdGlvbiB3aGVuIGNyZWF0aW5nIG1vZHVsZXMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1t
b2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNjJlMTFjYjY2MWYy
ZTRkNzcyNDEwMjBlODI1ZGMyY2Y2NGYwYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5UZXN0IHNoYWRlciB2YWxpZGF0aW9uLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlcnMgPSBgCi1zdHJ1Y3QgVmVydGV4Ci17Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQ0IGF0dHJpYnV0ZVBvc2l0aW9uIDogYXR0cmli
dXRlKDApOwotfTsKLQotdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbigpCi17Ci0gICAgVmVydGV4
IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7Ci0gICAg
cmVzdWx0LmF0dHJpYnV0ZVBvc2l0aW9uID0gcmVzdWx0LnBvc2l0aW9uOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKGZsb2F0NCBwb3NpdGlv
biA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMAotewotICAgIHJldHVybiBwb3NpdGlvbjsK
LX0KLWAKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlcnMgfSk7Ci0gICAgICAgIGFzc2Vy
dF90cnVlKHNoYWRlck1vZHVsZSBpbnN0YW5jZW9mIEdQVVNoYWRlck1vZHVsZSwgIlNoYWRlciBt
b2R1bGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
fSk7Ci19LCAiVGVzdCBzaGFkZXIgY29kZSB2YWxpZGF0aW9uIHdoZW4gY3JlYXRpbmcgbW9kdWxl
cy4iKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NpbXBsZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPkhUTUwgUmVmZXJlbmNlIEZpbGU8L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93
IGlzIGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5TcXVhcmVJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3Ry
aXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcwNGQ0YmQyMTk2NTBkMzQxMjQ5Nzg3ZWM2
YTdhNGEzMTQ1NjAzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KLTxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2Fu
dmFzLiI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJzaW1wbGUtdHJpYW5nbGUtc3RyaXAtZXhw
ZWN0ZWQuaHRtbCI+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVs
eSBncmVlbi48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0KLWNvbnN0IHNoYWRlckNvZGUgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleF9tYWluKHVpbnQg
dmlkIDogU1ZfVmVydGV4SUQpIDogU1ZfUG9zaXRpb24KLXsKLSAgICBmbG9hdDQgdjsKLSAgICBz
d2l0Y2ggKHZpZCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwgMSwgMCwg
MSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgdiA9IGZsb2F0NCgtMSwg
LTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHYgPSBmbG9h
dDQoMSwgMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHYg
PSBmbG9hdDQoMSwgLTEsIDAsIDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHY7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkgOiBTVl9UYXJnZXQgMAot
ewotICAgIHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKLX0KLWAKLQotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0
aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY3JlYXRlQmFzaWNTd2Fw
Q2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1T
TCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRl
QmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICBjb25zdCBwYXNzRW5j
b2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwot
ICAgIGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29kZXIsIHBpcGVsaW5lKTsKLSAgICBjb25z
dCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotCi0gICAgcXVldWUuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4NDU4MjBiMjFkZDBhM2Yy
MzgzYjhmZDcyMWMwYjRkYmUzMTA2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxl
Q291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIC0xIGhlaWdodCAxIGRl
cHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCBy
Z2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhl
aWdodCAtMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAy
ZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Yg
d2lkdGggMSBoZWlnaHQgMSBkZXB0aCAtMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IC0xIHNhbXBs
ZUNvdW50IDEgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENy
ZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3Vu
dCAxIHNhbXBsZUNvdW50IC0xIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9y
bSB1c2FnZSAtMS4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDAgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEg
aGVpZ2h0IDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDAgc2FtcGxl
Q291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgMCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEwMDAwIGhlaWdodCAxIGRlcHRoIDEg
bWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDFkIGZvcm1hdCByZ2JhOHVu
b3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAxIGhlaWdodCAz
MDAwIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9uIDFkIGZv
cm1hdCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxMDAwMCBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRp
bWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRl
eHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMTAwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBMZXZl
bENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNh
Z2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDMwMDAgaGVpZ2h0IDEgZGVw
dGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVp
Z2h0IDMwMDAgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
M2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMzAwMCBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQg
MSBkaW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcg
YSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDIgc2Ft
cGxlQ291bnQgMSBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1Mg
Q3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENv
dW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2Ug
MC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDEgZGVwdGggMSBt
aXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5v
cm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIg
ZGVwdGggMiBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gM2QgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIg
aGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDMgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24g
MmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9m
IHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMiBtaXBMZXZlbENvdW50IDMgc2FtcGxlQ291bnQgMSBk
aW1lbnNpb24gM2QgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0
ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxl
Q291bnQgNCBkaW1lbnNpb24gMWQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3Jl
YXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50
IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4K
LVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBM
ZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0g
dXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVw
dGggMSBtaXBMZXZlbENvdW50IDIgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gMmQgZm9ybWF0IHJn
YmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVp
Z2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgNCBkaW1lbnNpb24gM2Qg
Zm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdp
ZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMyBkaW1l
bnNpb24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDIgaGVpZ2h0IDIgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMzAwIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVh
dGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMiBkZXB0aCAyIG1pcExldmVsQ291bnQg
MSBzYW1wbGVDb3VudCA0IGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgot
UEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1pcExl
dmVsQ291bnQgMSBzYW1wbGVDb3VudCAyIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1
c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0
aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgcmdi
YTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWln
aHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBm
b3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lk
dGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVu
c2lvbiAxZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1
cmUgb2Ygd2lkdGggMiBoZWlnaHQgMSBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3Vu
dCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFTUyBDcmVhdGlu
ZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMiBkZXB0aCAxIG1pcExldmVsQ291bnQgMSBz
YW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2FnZSAwLgotUEFT
UyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAyIG1pcExldmVs
Q291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTh1bm9ybSB1c2Fn
ZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAx
IG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAxZCBmb3JtYXQgZGVwdGgz
MmZsb2F0LXN0ZW5jaWw4IHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0
aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5z
aW9uIDJkIGZvcm1hdCBkZXB0aDMyZmxvYXQtc3RlbmNpbDggdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMiBkaW1lbnNpb24gMmQgZm9ybWF0IGRlcHRoMzJmbG9hdC1zdGVuY2lsOCB1
c2FnZSAwLgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0
aCAxIG1pcExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiBnYXJiYWdlIGZvcm1h
dCByZ2JhOHVub3JtIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3aWR0aCAx
IGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGltZW5zaW9u
IDJkIGZvcm1hdCBnYXJiYWdlIHVzYWdlIDAuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVyZSBvZiB3
aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50IDEgZGlt
ZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVpbnQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0
dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291
bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IGJncmE4dW5vcm0gdXNhZ2UgMC4KLVBBU1MgQ3JlYXRp
bmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEg
c2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0IGJncmE4dW5vcm0tc3JnYiB1c2FnZSAw
LgotUEFTUyBDcmVhdGluZyBhIHRleHR1cmUgb2Ygd2lkdGggMSBoZWlnaHQgMSBkZXB0aCAxIG1p
cExldmVsQ291bnQgMSBzYW1wbGVDb3VudCAxIGRpbWVuc2lvbiAyZCBmb3JtYXQgcmdiYTE2Zmxv
YXQgdXNhZ2UgMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRoIDEgaGVpZ2h0IDEg
ZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNpb24gMmQgZm9ybWF0
IHJnYmE4dW5vcm0gdXNhZ2UgMTAwMC4KLVBBU1MgQ3JlYXRpbmcgYSB0ZXh0dXJlIG9mIHdpZHRo
IDEgaGVpZ2h0IDEgZGVwdGggMSBtaXBMZXZlbENvdW50IDEgc2FtcGxlQ291bnQgMSBkaW1lbnNp
b24gMmQgZm9ybWF0IHJnYmE4dW5vcm0gdXNhZ2UgMzEuCi1QQVNTIENyZWF0aW5nIGEgdGV4dHVy
ZSBvZiB3aWR0aCAxIGhlaWdodCAxIGRlcHRoIDEgbWlwTGV2ZWxDb3VudCAxIHNhbXBsZUNvdW50
IDQgZGltZW5zaW9uIDJkIGZvcm1hdCByZ2JhOHVub3JtIHVzYWdlIDguCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZS1jcmVhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZjYwMDU1N2ExZjk0NzhmZjMyNDNhMDg1NzE4YmNmODA0NzA3YzkyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0
dXJlLWNyZWF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlRlc3RzIGZvciBjcmVhdGlu
ZyB0ZXh0dXJlIHZpZXdzLjwvdGl0bGU+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBsZXQgdGVzdHMg
PSBbCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9u
OiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAot
ICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEs
IHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIzZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1
c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCBuZWdhdGl2ZSB2YWx1
ZXMKLSAgICAgICAge3dpZHRoOiAtMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0
OiAtMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9
LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IC0xLCBtaXBMZXZlbENvdW50
OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6
IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAtMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IC0xLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDog
MSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246
ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogLTEsIHN1Y2Nlc3M6IGZhbHNlfSwK
LQotICAgICAgICAvLyBUZXN0IHplcm8gdmFsdWVzCi0gICAgICAgIHt3aWR0aDogMCwgaGVpZ2h0
OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lv
bjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAx
LCBkZXB0aDogMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjog
IjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0g
ICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMCwg
c2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVz
YWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDAsIGRpbWVuc2lvbjogIjJk
IiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAg
ICAgICAgLy8gVGVzdCBtYXhpbXVtIHNpemVzCi0gICAgICAgIHt3aWR0aDogMTAwMDAsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9
LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMzAwMCwgZGVwdGg6IDEsIG1pcExldmVsQ291
bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5v
cm0iLCB1c2FnZTogMCwgc3VjY2VzczogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEwMDAwLCBo
ZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEwMDAwLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEs
IGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNz
OiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMzAwMCwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAi
cmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDog
MSwgaGVpZ2h0OiAzMDAwLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMzAwMCwg
bWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0
OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0KLSAgICAgICAgLy8g
VGVzdCBtaXBtYXBwZWQgdGV4dHVyZXMKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRl
cHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMWQi
LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAg
ICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAyLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6
IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDIsIGhlaWdodDogMSwgZGVwdGg6
IDEsIG1pcExldmVsQ291bnQ6IDIsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZv
cm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMiwgc2FtcGxlQ291
bnQ6IDEsIGRpbWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBz
dWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxLCBt
aXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRo
OiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAzLCBzYW1wbGVDb3VudDog
MSwgZGltZW5zaW9uOiAiM2QiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nl
c3M6IGZhbHNlfSwKLQotICAgICAgICAvLyBUZXN0IG11bHRpc2FtcGxpbmcKLSAgICAgICAge3dp
ZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3Vu
dDogNCwgZGltZW5zaW9uOiAiMWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1
Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBt
aXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6
IDIsIGhlaWdodDogMiwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiA0
LCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2Vz
czogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2
ZWxDb3VudDogMiwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdi
YTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMSwg
aGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDQsIGRp
bWVuc2lvbjogIjNkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBm
YWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxD
b3VudDogMSwgc2FtcGxlQ291bnQ6IDMsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1
bm9ybSIsIHVzYWdlOiAwLCBzdWNjZXNzOiBmYWxzZX0sCi0gICAgICAgIHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDMwMCwgZGlt
ZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZh
bHNlfSwKLSAgICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAyLCBtaXBMZXZlbENv
dW50OiAxLCBzYW1wbGVDb3VudDogNCwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVu
b3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWln
aHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMiwgZGltZW5z
aW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNl
fSwKLQotICAgICAgICAvLyBUZXN0IGRpbWVuc2lvbgotICAgICAgICB7d2lkdGg6IDIsIGhlaWdo
dDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNp
b246ICIxZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0s
Ci0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAyLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDog
MSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIs
IHVzYWdlOiAwLCBzdWNjZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEs
IGRlcHRoOiAyLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAi
MWQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAg
ICAgICAge3dpZHRoOiAyLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBz
YW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IDAsIHN1Y2Nlc3M6IHRydWV9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMiwgZGVw
dGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIs
IGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAg
IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMiwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxl
Q291bnQ6IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiAw
LCBzdWNjZXNzOiB0cnVlfSwKLQotICAgICAgICAvLyBUZXN0IGRlcHRoIHRleHR1cmVzCi0gICAg
ICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2Ft
cGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogIjFkIiwgZm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5j
aWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWln
aHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5z
aW9uOiAiMmQiLCBmb3JtYXQ6ICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlw
TGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDIsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAi
ZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLQotICAg
ICAgICAvLyBUZXN0IGVudW1zCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDog
MSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6IDEsIGRpbWVuc2lvbjogImdhcmJhZ2Ui
LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IDAsIHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAg
ICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBMZXZlbENvdW50OiAxLCBzYW1w
bGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJnYXJiYWdlIiwgdXNhZ2U6IDAs
IHN1Y2Nlc3M6IGZhbHNlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAx
LCBtaXBMZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3Jt
YXQ6ICJyZ2JhOHVpbnQiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAiYmdyYTh1bm9ybSIsIHVzYWdlOiAwLCBzdWNj
ZXNzOiB0cnVlfSwKLSAgICAgICAge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxLCBtaXBM
ZXZlbENvdW50OiAxLCBzYW1wbGVDb3VudDogMSwgZGltZW5zaW9uOiAiMmQiLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtLXNyZ2IiLCB1c2FnZTogMCwgc3VjY2VzczogdHJ1ZX0sCi0gICAgICAgIHt3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3VudDogMSwgc2FtcGxlQ291bnQ6
IDEsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTE2ZmxvYXQiLCB1c2FnZTogMCwgc3Vj
Y2VzczogdHJ1ZX0sCi0KLSAgICAgICAgLy8gVGVzdCB1c2FnZQotICAgICAgICB7d2lkdGg6IDEs
IGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExldmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBk
aW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogMTAwMCwgc3VjY2Vz
czogZmFsc2V9LAotICAgICAgICB7d2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGg6IDEsIG1pcExl
dmVsQ291bnQ6IDEsIHNhbXBsZUNvdW50OiAxLCBkaW1lbnNpb246ICIyZCIsIGZvcm1hdDogInJn
YmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVz
YWdlLkNPUFlfRFNUIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2Uu
U1RPUkFHRSB8IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVCwgc3VjY2VzczogdHJ1
ZX0sCi0gICAgICAgIHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbWlwTGV2ZWxDb3Vu
dDogMSwgc2FtcGxlQ291bnQ6IDQsIGRpbWVuc2lvbjogIjJkIiwgZm9ybWF0OiAicmdiYTh1bm9y
bSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU1RPUkFHRSwgc3VjY2VzczogZmFsc2V9LAotICAg
IF07Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4gewotICAgICAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGFzeW5jIGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICAgICAgbGV0IGNhdWdodCA9IGZhbHNlOwotICAgICAgICAg
ICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUoe3Np
emU6IHt3aWR0aDogdGVzdC53aWR0aCwgaGVpZ2h0OiB0ZXN0LmhlaWdodCwgZGVwdGg6IHRlc3Qu
ZGVwdGh9LCBtaXBMZXZlbENvdW50OiB0ZXN0Lm1pcExldmVsQ291bnQsIHNhbXBsZUNvdW50OiB0
ZXN0LnNhbXBsZUNvdW50LCBkaW1lbnNpb246IHRlc3QuZGltZW5zaW9uLCBmb3JtYXQ6IHRlc3Qu
Zm9ybWF0LCB1c2FnZTogdGVzdC51c2FnZX0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90cnVl
KHRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiQ2Fubm90IGNyZWF0ZSB0ZXh0dXJlLiIp
OwotICAgICAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIXRl
c3Quc3VjY2VzcywgIkNyZWF0aW5nIHRleHR1cmUgc2hvdWxkICIgKyAodGVzdC5zdWNjZXNzID8g
Im5vdCAiIDogIiIpICsgImZhaWwuIik7Ci0gICAgICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF3YWl0IGRldmljZS5wb3BFcnJvclNjb3BlKCku
dGhlbihmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgICAgIGlmICh0ZXN0LnN1Y2Nlc3Mp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAiQ291bGQgbm90IGNyZWF0ZSB0
ZXh0dXJlOiAiOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2Fn
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyb3IubWVzc2FnZTsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgbnVsbCwgIkNvdWxkIG5vdCBj
cmVhdGUgdGV4dHVyZTogIiArIG1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWNhdWdodCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICJDcmVhdGVkIHRl
eHR1cmU6ICI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5tZXNzYWdl
KQotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBlcnJvci5tZXNzYWdlOwotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSghIShjYXVnaHQgfHwgZXJyb3IpLCAiQ3JlYXRl
ZCB0ZXh0dXJlIHdoZW4gc2hvdWxkbid0IGhhdmU6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShmYWxzZSwgImRldmljZSBsb3N0Iik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgZnVuY3Rpb24oZSkgewotICAgICAgICB9KTsKLSAgICB9LCBgQ3JlYXRpbmcgYSB0ZXh0dXJl
IG9mIHdpZHRoICR7dGVzdC53aWR0aH0gaGVpZ2h0ICR7dGVzdC5oZWlnaHR9IGRlcHRoICR7dGVz
dC5kZXB0aH0gbWlwTGV2ZWxDb3VudCAke3Rlc3QubWlwTGV2ZWxDb3VudH0gc2FtcGxlQ291bnQg
JHt0ZXN0LnNhbXBsZUNvdW50fSBkaW1lbnNpb24gJHt0ZXN0LmRpbWVuc2lvbn0gZm9ybWF0ICR7
dGVzdC5mb3JtYXR9IHVzYWdlICR7dGVzdC51c2FnZX0uYCk7Ci0gICAgfQotfQotCi1ydW5UZXN0
cygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMxNWQyMzk2MDYwMDgwMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVs
b3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVja2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci1kcmF3R3JlZW5BbmRCbHVlQ2hlY2tl
cmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODhhMzU5NWYyNmY5ZWEwNDNiMmIwZTczZTE1NDcwMWE4MWNiMjRmNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdQ
VSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJX
ZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52YXMuIj4KLTxsaW5rIHJlbD0ibWF0
Y2giIGhyZWY9InZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCI+Ci08
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgYSA0IGJ5IDQgYmx1ZS9ncmVlbiBjaGVj
a2VyYm9hcmQuPC9wPgotPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+
Ci08c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotCi1jb25zdCBwb3NpdGlvbkJ1ZmZlckluZGV4ID0gMDsKLWNvbnN0IHRleENvb3Jkc0J1ZmZl
ckluZGV4ID0gMTsKLWNvbnN0IHBvc2l0aW9uQXR0cmlidXRlTnVtID0gMDsKLWNvbnN0IHRleENv
b3Jkc0F0dHJpYnV0ZU51bSA9IDE7Ci1jb25zdCBiaW5kR3JvdXBJbmRleCA9IDA7Ci1jb25zdCB0
ZXh0dXJlQmluZGluZ051bSA9IDA7Ci1jb25zdCBzYW1wbGVyQmluZGluZ051bSA9IDE7Ci0KLWNv
bnN0IHNoYWRlckNvZGUgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0Ci17Ci0gICAgZmxvYXQ0IHBvc2l0
aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKTsK
LX07Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4X21haW4oZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKCR7cG9zaXRpb25BdHRyaWJ1dGVOdW19KSwgZmxvYXQyIHRleENvb3JkcyA6IGF0dHJp
YnV0ZSgke3RleENvb3Jkc0F0dHJpYnV0ZU51bX0pKSB7Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0g
ICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHZPdXQudGV4Q29vcmRzID0gdGV4Q29v
cmRzOwotICAgIHJldHVybiB2T3V0OwotfQotCi1zdHJ1Y3QgVGV4dHVyZVNhbXBsZXIKLXsKLSAg
ICBUZXh0dXJlMkQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodCR7dGV4dHVyZUJpbmRpbmdOdW19LCBz
cGFjZSR7YmluZEdyb3VwSW5kZXh9KTsKLSAgICBzYW1wbGVyIHMgOiByZWdpc3RlcihzJHtzYW1w
bGVyQmluZGluZ051bX0sIHNwYWNlJHtiaW5kR3JvdXBJbmRleH0pOwotfTsKLQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50X21haW4oZmxvYXQyIHRleENvb3JkcyA6IGF0dHJpYnV0ZSgwKSwgVGV4
dHVyZVNhbXBsZXIgdGV4dHVyZVNhbXBsZXIpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4g
U2FtcGxlKHRleHR1cmVTYW1wbGVyLnQsIHRleHR1cmVTYW1wbGVyLnMsIHRleENvb3Jkcyk7Ci19
Ci1gCi0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICB2YXIg
YnVmZmVyRGVzY3JpcHRvcnMgPSBbXTsKLSAgICBidWZmZXJEZXNjcmlwdG9yc1twb3NpdGlvbkJ1
ZmZlckluZGV4XSA9IHsKLSAgICAgICAgc3RyaWRlOiA0ICogNCwKLSAgICAgICAgYXR0cmlidXRl
U2V0OiBbewotICAgICAgICAgICAgZm9ybWF0OiAiZmxvYXQ0IiwKLSAgICAgICAgICAgIHNoYWRl
ckxvY2F0aW9uOiBwb3NpdGlvbkF0dHJpYnV0ZU51bQotICAgICAgICB9XQotICAgIH07Ci0gICAg
YnVmZmVyRGVzY3JpcHRvcnNbdGV4Q29vcmRzQnVmZmVySW5kZXhdID0gewotICAgICAgICBzdHJp
ZGU6IDQgKiAyLAotICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7Ci0gICAgICAgICAgICBmb3JtYXQ6
ICJmbG9hdDIiLAotICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHRleENvb3Jkc0F0dHJpYnV0
ZU51bQotICAgICAgICB9XQotICAgIH07Ci0KLSAgICByZXR1cm4geyB2ZXJ0ZXhCdWZmZXJzOiBi
dWZmZXJEZXNjcmlwdG9ycyB9OwotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmljZSk7Ci0g
ICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNvZGUg
fSk7Ci0KLSAgICBjb25zdCBwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCi0gICAg
ICAgIC8vIGZsb2F0NCB4eXp3Ci0gICAgICAgIC0xLCAxLCAwLCAxLAotICAgICAgICAtMSwgLTEs
IDAsIDEsCi0gICAgICAgIDEsIDEsIDAsIDEsIAotICAgICAgICAxLCAtMSwgMCwgMQotICAgIF0p
OwotICAgIGNvbnN0IHBvc2l0aW9uQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNl
LCB7IHNpemU6IHBvc2l0aW9uQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB9LCBwb3NpdGlvbkFycmF5LmJ1ZmZlcik7Ci0KLSAgICBjb25zdCB0ZXhDb29yZHNB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDIgdGV4Q29vcmRzCi0g
ICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDEsCi0gICAgICAgIDEsIDAsCi0gICAgICAgIDEsIDEK
LSAgICBdKTsKLSAgICBjb25zdCB0ZXh0dXJlQ29vcmRCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRo
RGF0YShkZXZpY2UsIHsgc2l6ZTogdGV4Q29vcmRzQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB0ZXhDb29yZHNBcnJheS5idWZmZXIpOwotCi0gICAgY29u
c3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5wdXREZXNjcmlwdG9yKCk7
Ci0KLSAgICAvLyBMb2FkIHRleHR1cmUgaW1hZ2UKLSAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFn
ZSgpOwotICAgIGNvbnN0IGltYWdlTG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsgCi0gICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTsgCi0gICAgICAgIGlt
YWdlLnNyYyA9ICJyZXNvdXJjZXMvYmx1ZS1jaGVja2VyZWQucG5nIjsKLSAgICB9KTsKLSAgICBh
d2FpdCBQcm9taXNlLnJlc29sdmUoaW1hZ2VMb2FkUHJvbWlzZSk7Ci0KLSAgICAvLyBDb252ZXJ0
IGltYWdlIHRvIGRhdGEgYW5kIGZpbGwgR1BVQnVmZmVyCi0gICAgY29uc3QgY2FudmFzMmQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjYW52YXMyZC53aWR0aCA9IGlt
YWdlLndpZHRoOwotICAgIGNhbnZhczJkLmhlaWdodCA9IGltYWdlLmhlaWdodDsKLSAgICBjb25z
dCBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCIyZCIpOwotICAgIGNvbnRleHQyZC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgIGNvbnN0IGltYWdlRGF0YSA9IGNvbnRleHQyZC5n
ZXRJbWFnZURhdGEoMCwgMCwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7Ci0KLSAgICBjb25z
dCB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRh
dGEubGVuZ3RoLAotICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMKLSAgICB9
OwotICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2Us
IHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yLCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwotCi0gICAg
Ly8gQ3JlYXRlIEdQVVRleHR1cmUKLSAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKLSAgICAgICAg
d2lkdGg6IGltYWdlLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKLSAgICAg
ICAgZGVwdGg6IDEKLSAgICB9OwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7Ci0g
ICAgICAgIHNpemU6IHsgd2lkdGg6IGltYWdlLndpZHRoLCBoZWlnaHQ6IGltYWdlLmhlaWdodCwg
ZGVwdGg6IDEgfSwKLSAgICAgICAgZm9ybWF0OiAicmdiYTh1bm9ybSIsCi0gICAgICAgIHVzYWdl
OiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRAotICAg
IH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNj
cmlwdG9yKTsKLQotICAgIC8vIEJpbmQgdGV4dHVyZSBhbmQgYSBzYW1wbGVyIHRvIHBpcGVsaW5l
Ci0gICAgY29uc3QgdGV4dHVyZUxheW91dEJpbmRpbmcgPSB7IAotICAgICAgICBiaW5kaW5nOiB0
ZXh0dXJlQmluZGluZ051bSwgCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZS
QUdNRU5ULCAKLSAgICAgICAgdHlwZTogInNhbXBsZWQtdGV4dHVyZSIgCi0gICAgfTsKLSAgICBj
b25zdCBzYW1wbGVyTGF5b3V0QmluZGluZyA9IHsKLSAgICAgICAgYmluZGluZzogc2FtcGxlckJp
bmRpbmdOdW0sCi0gICAgICAgIHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAot
ICAgICAgICB0eXBlOiAic2FtcGxlciIKLSAgICB9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHsKLSAgICAgICAgYmluZGluZ3M6IFt0ZXh0dXJlTGF5b3V0QmluZGlu
Zywgc2FtcGxlckxheW91dEJpbmRpbmddCi0gICAgfTsKLSAgICBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsg
YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF0gfSk7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlQmluZGluZyA9IHsgCi0gICAgICAgIGJpbmRpbmc6IHRleHR1cmVCaW5kaW5nTnVtLCAKLSAg
ICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKSAKLSAgICB9OwotICAg
IGNvbnN0IHNhbXBsZXJCaW5kaW5nID0gewotICAgICAgICBiaW5kaW5nOiBzYW1wbGVyQmluZGlu
Z051bSwKLSAgICAgICAgcmVzb3VyY2U6IGRldmljZS5jcmVhdGVTYW1wbGVyKHsgbWluRmlsdGVy
OiAibmVhcmVzdCIsIG1hZ0ZpbHRlcjogIm5lYXJlc3QiIH0pCi0gICAgfTsKLQotICAgIGNvbnN0
IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGxheW91dDogYmluZEdyb3VwTGF5b3V0
LAotICAgICAgICBiaW5kaW5nczogW3RleHR1cmVCaW5kaW5nLCBzYW1wbGVyQmluZGluZ10KLSAg
ICB9OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdy
b3VwRGVzY3JpcHRvcik7Ci0KLSAgICAvLyBQaXBlbGluZSBhbmQgcmVuZGVyCi0gICAgY29uc3Qg
cGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxs
LCBwaXBlbGluZUxheW91dCwgdmVydGV4SW5wdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwotCi0gICAgY29uc3Qg
YnVmZmVyQ29weVZpZXcgPSB7Ci0gICAgICAgIGJ1ZmZlcjogdGV4dHVyZUJ1ZmZlciwKLSAgICAg
ICAgcm93UGl0Y2g6IGltYWdlLndpZHRoICogNCwKLSAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKLSAg
ICB9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHsgdGV4dHVyZTogdGV4dHVyZSB9Owot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRl
eHR1cmVDb3B5VmlldywgdGV4dHVyZVNpemUpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVn
aW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2Rlcik7Ci0gICAgcGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cChiaW5kR3JvdXBJbmRleCwgYmluZEdyb3VwKTsKLSAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKHBvc2l0aW9uQnVmZmVySW5kZXgsIFtwb3NpdGlvbkJ1ZmZlciwgdGV4dHVyZUNvb3Jk
QnVmZmVyXSwgWzAsIDBdKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLQotICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1
ZXVlKCk7Ci0gICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAg
IHBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKTsKLSAgICB0ZXh0dXJlQ29vcmRCdWZmZXIuZGVzdHJv
eSgpOwotICAgIHRleHR1cmUuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJl
KGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNjk0M2RkYTRlYTg2N2QzMTRmYzIyOGY3ZGZiY2ZmMDIwOTA0Zjg1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNyArMCwwIEBACi0KLVBBU1MgQ3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hh
aW4uCi1QQVNTIENyZWF0ZSBiYXNpYyBkZXB0aCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBD
cmVhdGUgYmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1cmUuCi1QQVNTIENyZWF0ZSBiYXNpYyAz
RCB0ZXh0dXJlIGZyb20gZGV2aWNlLgotUEFTUyBDcmVhdGUgYSByZW5kZXIgdGFyZ2V0IHRleHR1
cmUgKHdoaWNoIGNhbiBiZSBzYW1wbGVkKSBmcm9tIGRldmljZS4KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNzFhOTQzZGQ3Y2EwM2FlM2U5MjNhNWUzMzVmNGY4ODg5N2E1MTczLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0aXRsZT5CYXNpYyBH
UFVUZXh0dXJlIFRlc3RzLjwvdGl0bGU+Ci08Ym9keT4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJjYW52YXMiKTsgICAgCi1sZXQgY29udGV4dDsKLQotbGV0IHRleFNpemUgPSB7Ci0gICAgd2lk
dGg6IGNhbnZhcy53aWR0aCwKLSAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCi0gICAgZGVwdGg6
IDEKLX07Ci0KLWxldCB0ZXhEZXNjcmlwdG9yID0gewotICAgIHNpemU6IHRleFNpemUsCi0gICAg
Zm9ybWF0OiAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAgICB1c2FnZTogR1BVVGV4dHVyZVVz
YWdlLk9VVFBVVF9BVFRBQ0hNRU5UCi19OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJl
dHVybiBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHN3
YXBDaGFpbiA9IGNyZWF0ZUJhc2ljU3dhcENoYWluKGNhbnZhcywgZGV2aWNlKTsKLQotICAgICAg
ICBjb25zdCB0ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgICAg
IGFzc2VydF90cnVlKHRleHR1cmUgaW5zdGFuY2VvZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5
IGFjcXVpcmVkIG5leHQgdGV4dHVyZS4iKTsKLQotICAgICAgICBjb25zdCB0ZXh0dXJlVmlldyA9
IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLSAgICAgICAgYXNzZXJ0X3RydWUodGV4dHVy
ZVZpZXcgaW5zdGFuY2VvZiBHUFVUZXh0dXJlVmlldywgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRl
eHR1cmUgdmlldyBmcm9tIG5leHQgdGV4dHVyZS4iKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICB9KTsKLX0sICJDcmVhdGUgdGV4dHVyZSB2aWV3IGZyb20gc3dhcCBjaGFpbi4iKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgICByZXR1cm4gZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0
aW9uKGRldmljZSkgewotICAgICAgICBjb25zdCBkZXB0aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRl
VGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVwdGhUZXh0dXJl
IGluc3RhbmNlb2YgR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIGRlcHRoIHRleHR1
cmUuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIGRl
cHRoIHRleHR1cmUgZnJvbSBkZXZpY2UuIik7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAg
cmV0dXJuIGdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICAgICAg
dGV4RGVzY3JpcHRvci5zYW1wbGVDb3VudCA9IDQ7Ci0gICAgICAgIHRleERlc2NyaXB0b3IuZm9y
bWF0ID0gInJnYmE4dW5vcm0iOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4
dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMKLQotICAgICAgICBj
b25zdCBtdWx0aXNhbXBsZWRUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3Jp
cHRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKG11bHRpc2FtcGxlZFRleHR1cmUgaW5zdGFuY2Vv
ZiBHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUu
Iik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRlIGJhc2ljIDR4IG11
bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVy
biBnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERl
c2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7Ci0gICAgICAgIHRleERlc2NyaXB0b3Iuc2FtcGxlQ291
bnQgPSAxOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLmRpbWVuc2lvbiA9ICIzZCI7Ci0KLSAgICAg
ICAgY29uc3QgdGV4dHVyZTNkID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7
Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmUzZCBpbnN0YW5jZW9mIEdQVVRleHR1cmUsICJT
dWNjZXNzZnVsbHkgY3JlYXRlZCBiYXNpYyAzRCB0ZXh0dXJlLiIpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgIH0pOwotfSwgIkNyZWF0ZSBiYXNpYyAzRCB0ZXh0dXJlIGZyb20gZGV2aWNlLiIp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIHJldHVybiBnZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgIHRleERlc2NyaXB0b3IuZm9ybWF0ID0gInJn
YmE4dW5vcm0iOwotICAgICAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVyZVVzYWdl
Lk9VVFBVVF9BVFRBQ0hNRU5UIHwgR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQ7Ci0KLSAgICAgICAg
Y29uc3QgcmVuZGVyVGFyZ2V0ID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7
Ci0gICAgICAgIGFzc2VydF90cnVlKHJlbmRlclRhcmdldCBpbnN0YW5jZW9mIEdQVVRleHR1cmUs
ICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBvZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQuIik7Ci0gICAg
ICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gcmVuZGVyVGFyZ2V0LmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0gICAgICAgIGFzc2VydF90cnVlKHRleHR1cmVWaWV3IGluc3RhbmNlb2YgR1BVVGV4dHVyZVZp
ZXcsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCB0ZXh0dXJlIHZpZXcgZnJvbSBvZmYtc2NyZWVuIHJl
bmRlciB0YXJnZXQuIik7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgfSk7Ci19LCAiQ3JlYXRl
IGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlICh3aGljaCBjYW4gYmUgc2FtcGxlZCkgZnJvbSBkZXZp
Y2UuIik7Ci0KLS8vIEZJWE1FOiBBZGQgdGVzdHMgZm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJy
YXlzLCBhbmQgR1BVVGV4dHVyZVZpZXdzLgotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQtZXJyb3JzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EwMmFjZDY4Y2VjZDBjZjRlN2ExNGUxMDc0
OGEzY2VlZGE1YTE5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5j
cmVhdGVCdWZmZXIoKTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9X
UklURSB1c2FnZSEKLUNPTlNPTEUgTUVTU0FHRTogR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZlcigpOiBC
dWZmZXIgY2Fubm90IGhhdmUgYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlIQotCi1Q
QVNTIEZpcmUgYW4gdW5jYXB0dXJlZCBHUFVEZXZpY2UgZXJyb3IgZXZlbnQgYXQgJ2RldmljZScu
Ci1QQVNTIEludGVyY2VwdCBhbiB1bmNhcHR1cmVkIGVycm9yIHdpdGggR1BVRGV2aWNlLm9udW5j
YXB0dXJlZGVycm9yIEV2ZW50SGFuZGxlci4KLVBBU1MgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQg
YXN5bmMgdGVzdC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3VuY2FwdHVyZWQt
ZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUyZWM0MjBkMGRmOWU3YTY5M2FjNjE3Mzk5
ZjU4YTQ5ODEyNzE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdW5jYXB0dXJlZC1lcnJvcnMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTx0aXRsZT5UZXN0IEVycm9yIFNjb3Blcy48L3RpdGxlPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWxldCB0ZXN0cyA9
IHt9OwotbGV0IGV2ZW50V2F0Y2hlcjsKLQotY29uc3QgY2F1c2VVbmNhcHR1cmVkRXJyb3JFdmVu
dCA9IGRldmljZSA9PiB7Ci0gICAgZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsK
LX07Ci0KLXRlc3RzWyJGaXJlIGFuIHVuY2FwdHVyZWQgR1BVRGV2aWNlIGVycm9yIGV2ZW50IGF0
ICdkZXZpY2UnLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBhc3luY1Rlc3QgPSBh
c3luY190ZXN0KCJHUFVVbmNhcHR1cmVkRXJyb3JFdmVudCBhc3luYyB0ZXN0LiIpOwotICAgIGNv
bnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIoYXN5bmNUZXN0LCBkZXZpY2UsICJ1
bmNhcHR1cmVkZXJyb3IiKTsKLSAgICBjb25zdCBldmVudEZpcmVkID0gZXZlbnRXYXRjaGVyLndh
aXRfZm9yKCJ1bmNhcHR1cmVkZXJyb3IiKS50aGVuKGV2ZW50ID0+IHsKLSAgICAgICAgYXNzZXJ0
X3RydWUoZXZlbnQuZXJyb3IgaW5zdGFuY2VvZiBHUFVWYWxpZGF0aW9uRXJyb3IsICJTdWNjZXNz
ZnVsbHkgZmlyZWQgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuIik7Ci0gICAgICAgIGFzeW5jVGVz
dC5kb25lKCk7Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8s
IHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBv
dXQgd2FpdGluZyBmb3IgZXJyb3IgZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAgICBj
YXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50KGRldmljZSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5y
YWNlKFtldmVudEZpcmVkLCB0aW1lb3V0XSk7Ci19OwotCi10ZXN0c1siSW50ZXJjZXB0IGFuIHVu
Y2FwdHVyZWQgZXJyb3Igd2l0aCBHUFVEZXZpY2Uub251bmNhcHR1cmVkZXJyb3IgRXZlbnRIYW5k
bGVyLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKLSAgICBjb25zdCBjYXB0dXJlZEVycm9yUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICBkZXZpY2Uub251bmNhcHR1cmVk
ZXJyb3IgPSBldmVudCA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5lcnJvciBp
bnN0YW5jZW9mIEdQVVZhbGlkYXRpb25FcnJvciwgIlN1Y2Nlc3NmdWxseSBmaXJlZCBHUFVVbmNh
cHR1cmVkRXJyb3JFdmVudC4iKTsKLSAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjYXVzZVVuY2FwdHVyZWRFcnJvckV2ZW50KGRldmljZSk7Ci0gICAgfSk7Ci0K
LSAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gewotICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXJyb3Ig
ZXZlbnQhIikgfSwgMzAwMCk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtj
YXB0dXJlZEVycm9yUHJvbWlzZSwgdGltZW91dF0pOwotfTsKLQotcnVuVGVzdHNXaXRoRGV2aWNl
KHRlc3RzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlh
bmdsZS1zdHJpcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZjYwZjVhOWM1MTdjOTYyZWZmMmEwYWZkMmE5NGJhNWVkMjMwNDIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgt
YnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBj
b21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImNhbnZhcyIpOwotZHJhd0dyZWVuU3F1YXJlSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1z
dHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JiZTg3NTc3ZTZiMmU0ZTM1
ZmMxY2ExNzBhMjE1ZmJmZjY4ZjhjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1z
dHJpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwv
dGl0bGU+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVu
ZGVycyBhIGdyZWVuIGNhbnZhcy4iPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC1leHBlY3RlZC5odG1sIj4KLTxwPlBhc3MgaWYgc3F1YXJlIGNh
bnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXN0cnVjdCBW
ZXJ0ZXhPdXQKLXsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9h
dDQgY29sb3IgOiBhdHRyaWJ1dGUoMCk7Ci19OwotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleF9t
YWluKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgZ3JlZW4gOiBhdHRyaWJ1
dGUoMSkpCi17Ci0gICAgVmVydGV4T3V0IHZPdXQ7Ci0gICAgdk91dC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHZPdXQuY29sb3IgPSBmbG9hdDQoMCwgZ3JlZW4sIDAsIDEpOwotICAgIHJldHVy
biB2T3V0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihmbG9hdDQgY29sb3Ig
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAKLXsKLSAgICByZXR1cm4gY29sb3I7Ci19Ci1g
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0
ZXhBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWwotICAgICAgICAvLyBmbG9hdDQgeHl6dywgZmxv
YXQgZwotICAgICAgICAtMSwgMSwgMCwgMSwgMSwKLSAgICAgICAgLTEsIC0xLCAwLCAxLCAxLAot
ICAgICAgICAxLCAxLCAwLCAxLCAxLAotICAgICAgICAxLCAtMSwgMCwgMSwgMQotICAgIF0pOwot
Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKAotICAgICAgICBkZXZpY2UsIAotICAg
ICAgICB7IAotICAgICAgICAgICAgc2l6ZTogdmVydGV4QXJyYXkuYnl0ZUxlbmd0aCwgCi0gICAg
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFCi0gICAgICAgIH0sCi0gICAgICAgIHZlcnRleEFycmF5LmJ1ZmZlcgotICAgICk7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpIHsKLSAgICByZXR1cm4g
ewotICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBbewotICAgICAgICAgICAgc3RyaWRlOiA0ICogNSwK
LSAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogW3sKLSAgICAgICAgICAgICAgICBmb3JtYXQ6ICJm
bG9hdDQiLAotICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwCi0gICAgICAgICAgICB9
LCB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0OiA0ICogNCwKLSAgICAgICAgICAgICAgICBmb3Jt
YXQ6ICJmbG9hdCIsCi0gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEKLSAgICAgICAg
ICAgIH1dCi0gICAgICAgIH1dCi0gICAgfQotfQotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gdGVzdChkZXZpY2UpIHsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjcmVhdGVCYXNpY1N3YXBDaGFpbihjYW52YXMsIGRldmlj
ZSk7Ci0gICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCi0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRl
ckNvZGUgfSk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlVmVydGV4QnVmZmVyKGRl
dmljZSk7Ci0gICAgY29uc3QgdmVydGV4SW5wdXREZXNjcmlwdG9yID0gY3JlYXRlVmVydGV4SW5w
dXREZXNjcmlwdG9yKCk7Ci0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5l
KHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBudWxsLCB2ZXJ0ZXhJbnB1dERlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hh
aW4sIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVy
LCBwaXBlbGluZSwgdmVydGV4QnVmZmVyKTsKLSAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRR
dWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpOwotfQotCi1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgdGVzdChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIGRyYXdHcmVlblNxdWFyZUluU29mdHdhcmUoY2FudmFzKTsKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1z
Y2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS92aWV3cG9ydC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4ZmUyYjljZTM2NzQ1ZWY2ZWQ4NTBiYjMx
NWQyMzk2MDYwMDgwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0
cmlwLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5IVE1MIFJlZmVyZW5jZSBG
aWxlPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBhIDQgYnkgNCBibHVlL2dyZWVu
IGNoZWNrZXJib2FyZC48L3A+Ci08Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJj
YW52YXMiKTsKLWRyYXdHcmVlbkFuZEJsdWVDaGVja2VyYm9hcmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9ydC1zY2lz
c29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92aWV3cG9y
dC1zY2lzc29yLXJlY3QtdHJpYW5nbGUtc3RyaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMGU3OTQxNDYwNjFmZDU3NDUzMWExMjA2MDg4NzliNDg5YTBkYmI5MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvdmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+V2ViR1BVIEhlbGxvIFRyaWFuZ2xlczwvdGl0bGU+Ci08bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IldlYkdQVSBjb3JyZWN0bHkgcmVuZGVycyBhIGdyZWVuIGNhbnZhcy4i
PgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0idmlld3BvcnQtc2Npc3Nvci1yZWN0LXRyaWFuZ2xl
LXN0cmlwLWV4cGVjdGVkLmh0bWwiPgotPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlz
IGEgNCBieSA0IGJsdWUvZ3JlZW4gY2hlY2tlcmJvYXJkLjwvcD4KLTxjYW52YXMgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotY29uc3Qgc2hhZGVyQ29kZSA9IGAKLXZlcnRl
eCBmbG9hdDQgdmVydGV4X21haW4odWludCB2aWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlv
bgotewotICAgIGZsb2F0NCB2OwotICAgIHN3aXRjaCAodmlkKSB7Ci0gICAgY2FzZSAwOgotICAg
ICAgICB2ID0gZmxvYXQ0KC0xLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAx
OgotICAgICAgICB2ID0gZmxvYXQ0KC0xLCAtMSwgMCwgMSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMjoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAxLCAwLCAxKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdiA9IGZsb2F0NCgxLCAtMSwgMCwgMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50X21haW4oKSA6IFNWX1RhcmdldCAwCi17Ci0gICAgcmV0dXJuIGZsb2F0NCgwLjAsIDEuMCwg
MC4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHRlc3QoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7Ci0gICAgY29uc3Qgc3dh
cENoYWluID0gY3JlYXRlQmFzaWNTd2FwQ2hhaW4oY2FudmFzLCBkZXZpY2UpOwotICAgIC8vIEZJ
WE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBzaGFkZXJzLgotICAgIGNvbnN0IHNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwotICAg
IGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmlj
ZSk7Ci0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsKLSAgICBjb25zdCBibHVlQXR0YWNobWVudCA9IHsKLSAgICAgICAgYXR0YWNobWVudDog
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSwKLSAgICAg
ICAgbG9hZE9wOiAiY2xlYXIiLAotICAgICAgICBzdG9yZU9wOiAic3RvcmUiLAotICAgICAgICBj
bGVhckNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDEsIGE6IDEgfQotICAgIH07Ci0gICAgY29uc3Qg
cGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFj
aG1lbnRzOiBbYmx1ZUF0dGFjaG1lbnRdIH0pOwotICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHBpcGVsaW5lKTsKLQotICAgIGZ1bmN0aW9uIGRyYXdWaWV3cG9ydCh4LCB5KSB7Ci0gICAgICAg
IHBhc3NFbmNvZGVyLnNldFZpZXdwb3J0KHgsIHksIDEwMCwgMTAwLCAwLCAxKTsKLSAgICAgICAg
cGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkcmF3
U2Npc3NvclJlY3QoeCwgeSkgewotICAgICAgICBwYXNzRW5jb2Rlci5zZXRTY2lzc29yUmVjdCh4
LCB5LCAxMDAsIDEwMCk7Ci0gICAgICAgIHBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0g
ICAgfQotCi0gICAgcGFzc0VuY29kZXIuc2V0U2Npc3NvclJlY3QoMCwgMCwgMjAwLCA0MDApOwot
ICAgIGRyYXdWaWV3cG9ydCgxMDAsIDApOwotICAgIGRyYXdWaWV3cG9ydCgwLCAxMDApOwotICAg
IGRyYXdWaWV3cG9ydCgxMDAsIDIwMCk7Ci0gICAgZHJhd1ZpZXdwb3J0KDAsIDMwMCk7Ci0KLSAg
ICAvLyBEcmF3IG91dHNpZGUgb2Ygc2Npc3NvciByZWN0IHNob3VsZCBub3QgYXBwZWFyLgotICAg
IGRyYXdWaWV3cG9ydCgyMDAsIDEwMCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5zZXRWaWV3cG9ydCgy
MDAsIDAsIDIwMCwgNDAwLCAwLCAxKTsKLSAgICBkcmF3U2Npc3NvclJlY3QoMzAwLCAwKTsKLSAg
ICBkcmF3U2Npc3NvclJlY3QoMjAwLCAxMDApOwotICAgIGRyYXdTY2lzc29yUmVjdCgzMDAsIDIw
MCk7Ci0gICAgZHJhd1NjaXNzb3JSZWN0KDIwMCwgMzAwKTsKLQotICAgIC8vIERyYXcgb3V0c2lk
ZSBvZiB2aWV3cG9ydCBzaG91bGQgbm90IGFwcGVhci4KLSAgICBkcmF3U2Npc3NvclJlY3QoMCwg
MCk7Ci0KLSAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgcXVldWUgPSBkZXZp
Y2UuZ2V0UXVldWUoKTsKLQotICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKLX0KLQotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHRlc3QoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
R3JlZW5BbmRCbHVlQ2hlY2tlcmJvYXJkSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Yt
c3dpenpsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1v
Zi1zd2l6emxlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRm
ZjRlZWI2Mjk5OGNmY2I0ZmY2ZWM5ODdjOWQzZWI5ZmU1NDIxYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRk
cmVzcy1vZi1zd2l6emxlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBA
QAotCi1QQVNTIGNhbnRUYWtlQWRkcmVzc09mU3dpenpsZQotUEFTUyBjYW50QXNzaWduUnZhbHVl
U3dpenpsZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1v
Zi1zd2l6emxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYWRkcmVzcy1vZi1zd2l6
emxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmYyNzllNDk5MjBjYWRl
Y2Q5ZGM5YmUzNTU1NjdjOTMzNjU2MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FkZHJlc3Mtb2Ytc3dpenps
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5iYWQgc3dpenpsZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5jYW50VGFrZUFkZHJlc3NPZlN3aXp6bGUgPSBhc3luYyAoKSA9PiB7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBp
bnQyIHY7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB4ID0gJnYueDsKLSAgICAgICAgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAg
ICAgICAgICBpbnQyIHY7Ci0gICAgICAgICAgICB0aHJlYWQgaW50MiogeCA9ICZ2Lnh5OwotICAg
ICAgICB9Ci0gICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmNhbnRBc3NpZ25SdmFsdWVTd2l6emxl
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludDIgeCgp
IHsKLSAgICAgICAgICAgIGludDIgdjsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9
Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgeCgpLnh5ID0gaW50MigxMCwgMjAp
OwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyYml0
cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVl
M2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4
LWF0dHJpYnV0ZS1sb2NhdGlvbnMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwot
ZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2FyYml0cmFyeS12ZXJ0ZXgtYXR0cmlidXRlLWxvY2F0aW9ucy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTNiZTM0MjA1M2Q2MWMwMTQ3MjM4NmVl
YjVhM2M0Y2UyZWEwZGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmJpdHJhcnktdmVydGV4LWF0dHJpYnV0
ZS1sb2NhdGlvbnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNW
X1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXgg
VmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMTczKSwg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoNDk4KSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0g
ICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVy
KGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4g
ZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwot
Ci0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMTczLCBmb3JtYXQ6ICJm
bG9hdDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiA0OTgsIGZv
cm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MjAsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFw
KCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJG
bG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9Owot
ICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZl
ckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5k
R3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJp
bmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0
IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0g
ICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWlu
RGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJy
ZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwg
ZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNo
bWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNs
ZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVw
dGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDAp
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3Vi
bWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3Jk
ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjRlMDQ4YzFj
MDZjZDUwMTc4Yzc5ODNiNDFmOTZmZmY2NjBjM2JmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcmd1bWVudC1l
dmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIGV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FyZ3VtZW50LWV2YWx1YXRpb24tb3JkZXIuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzOGU4ODhiY2UwZjgzY2ExNzhlMzhhY2Y4YWIw
Y2RkMzQ3Mjk2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJndW1lbnQtZXZhbHVhdGlvbi1vcmRlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25n
Ij4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRl
c3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgeyByZXR1cm4gKmJhcigxMCkgKyAqYmFy
KDIwKTsgfQotCi0gICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQgdmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCB4ID0gdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkgeyByZXR1cm4gcGx1cyhiYXIoMTApLCBiYXIoMjAp
KTsgfQotCi0gICAgICAgIGludCBwbHVzKHRocmVhZCBpbnQqIHgsIHRocmVhZCBpbnQqIHkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqeCArICp5OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10pLCAzMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImJheiIsIFtdKSwgNDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Njcmlw
dD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFkMzJkMmMzZGI4MzQ0NTRkZWRkOThmMGNlN2JlNzY5MGM0ZWIwYTMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhGYWls
Ci1QQVNTIG5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1sZW5ndGgtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzczZmNlZDI2OGU3YWMxOTViYTJhZDZkZmRjMjdiNzNi
OTY5MDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LWxlbmd0aC1zcGVjLXRlc3RzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEg
Y2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRp
dGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5ub25BcnJheVJlZkFycmF5TGVuZ3RoRmFpbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB0aHJlYWQgdWludCogbGVuZ3RoUHRy
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnRbNDJdIGFycmF5OwotICAgICAg
ICAgICAgICAgIHJldHVybiAmKGFycmF5Lmxlbmd0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi13aGxzbFRlc3RzLm5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAgICAgICAgcmV0dXJu
IGFycmF5Lmxlbmd0aDsKLSAgICAgICAgfQotICAgICAgICB1aW50IGJhcigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludFs3NTRdIGFycmF5OwotICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxl
bmd0aDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc1NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbXSksIDc1NCk7Ci19Ci0KLXJ1
blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktb29iLWFsaWFzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcx
Y2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgZmllbGRTaG91bGRCZU51bGwKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LW9vYi1hbGlhcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0ZjEzMmEwOTdmYWYxN2Q5NmQyYmI1ODA4MWVhZGE4ZDlhOTUz
ZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1vb2ItYWxpYXMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0
Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+b29iIG9u
IGFycmF5cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNo
b3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgaW50IHk7Ci0g
ICAgICAgICAgICBpbnQgejsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbyh1aW50IGkpIHsK
LSAgICAgICAgICAgIEZvb1sxMF0gZm9vczsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGZvbyA9
ICZmb29zW2ldOwotICAgICAgICAgICAgdGhyZWFkIGludCogcHRyID0gJihmb28tPnopOwotICAg
ICAgICAgICAgKnB0ciA9IDQyOwotICAgICAgICAgICAgcmV0dXJuIGZvb3NbMF0ueiA9PSA0MjsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmFyKCkgewotICAgICAgICAgICAgRm9vWzEwXSBm
b29zOwotICAgICAgICAgICAgdGhyZWFkIEZvbyogZm9vID0gJmZvb3NbNDI0MjQyXTsKLSAgICAg
ICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICYoZm9vLT56KTsKLSAgICAgICAgICAgIHJldHVybiBm
b28gPT0gJmZvb3NbMF07Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdDMgcmV0RmxvYXQzKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZsb2F0MygxMC4wLCAwLjAsIDAuMCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmbG9hdFsxMF0gcmV0RmxvYXRBcnJheSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZsb2F0WzEwXSB2OwotICAgICAgICAgICAgdlswXSA9IDEwLjA7Ci0gICAg
ICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYmF6KCkgewotICAg
ICAgICAgICAgcmV0dXJuIHJldEZsb2F0MygpWzQyXSA9PSAxMC4wOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBqYXooKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV0RmxvYXRBcnJheSgpWzQy
XSA9PSAxMC4wOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTA7ICsraSkKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW21ha2VVaW50KGkpXSksIGkgPT09IDAgPyB0cnVlIDogZmFsc2UpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFttYWtlVWludCgxMCldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW21ha2VVaW50KDEwMDAwMDApXSksIHRydWUpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFttYWtlVWludCgweGZmZmZmZmZmKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJiYXIiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImJheiIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
amF6IiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3Bl
Yy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3Bl
Yy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmE1
NWZiNjE2YjE1MzQ5ZWFjNDA5ZGQ2NDA3ZGEzYTA4ZDczNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0K
LVBBU1MgYXJyYXlSZWZUb0FycmF5UmVmCi1QQVNTIGFzc2lnbkxlbmd0aAotUEFTUyBhc3NpZ25M
ZW5ndGhIZWxwZXIKLVBBU1MgYnVpbGRBcnJheVRoZW5TdW1JdAotUEFTUyBidWlsZEFycmF5VGhl
blN1bUl0VXNpbmdBcnJheVJlZmVyZW5jZQotUEFTUyBwYXNzaW5nQXJyYXlUb0Z1bmN0aW9uCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDE1MzFiYmM1NjEyZTc0YTg2ZTlkNjJhMmU4N2Ey
YmE2MWNlM2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307
Ci0KLXdobHNsVGVzdHMuYXJyYXlSZWZUb0FycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGxl
dCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IHg7Ci0gICAgICAgICAgICB0aHJlYWQgaW50W10gcCA9IEB4OwotICAgICAgICAgICAgdGhy
ZWFkIGludFtdW10gcHAgPSBAcDsKLSAgICAgICAgICAgIGludFtddGhyZWFkW110aHJlYWQgcXEg
PSBwcDsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAwOwotICAgICAgICAgICAgeCA9IDQyOwot
ICAgICAgICAgICAgcFswXSA9IDc2OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAg
ICAgICBwcFswXVswXSA9IDM5OwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAg
ICBxcVswXVswXSA9IDgzOwotICAgICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJv
Z3JhbSk7Ci19Ci0KLXdobHNsVGVzdHMuYXNzaWduTGVuZ3RoID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0Wzc1NF0gYXJyYXk7Ci0gICAgICAgICAg
ICAgICAgKEBhcnJheSkubGVuZ3RoID0gNDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5hc3NpZ25MZW5ndGhIZWxwZXIgPSBhc3luYyAoKSA9
PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGJh
cih0aHJlYWQgZmxvYXRbXSBhcnJheSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBh
cnJheS5sZW5ndGggPSA0MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZm9vKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwotICAgICAg
ICAgICAgICAgIGJhcihAYXJyYXkpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQot
d2hsc2xUZXN0cy5idWlsZEFycmF5VGhlblN1bUl0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
WzQyXSBhcnJheTsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSAr
IDEpCi0gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBpbnQoaSArIDUpOwotICAgICAgICAgICAg
aW50IHJlc3VsdDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IDQyOyBpID0gaSAr
IDEpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgYXJyYXlbaV07Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0MiAqIDUgKyA0MiAq
IDQxIC8gMik7Ci19Ci0KLXdobHNsVGVzdHMuYnVpbGRBcnJheVRoZW5TdW1JdFVzaW5nQXJyYXlS
ZWZlcmVuY2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGlu
dCBiYXIodGhyZWFkIGludFtdIGFycmF5KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAgICAgICAgICAgICAgIGFycmF5W2ldID0g
aW50KGkgKyA1KTsKLSAgICAgICAgICAgIGludCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQgaSA9IDA7IGkgPCA0MjsgaSA9IGkgKyAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJl
c3VsdCArIGFycmF5W2ldOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzQyXSBhcnJheTsK
LSAgICAgICAgICAgIHJldHVybiBiYXIoQGFycmF5KTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NDIgKiA1ICsgNDIgKiA0MSAvIDIpOwotfQotCi13aGxzbFRlc3RzLnBhc3NpbmdBcnJheVRvRnVu
Y3Rpb24gPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzEwXSBhcnI7Ci0gICAgICAgICAgICBm
b3IgKHVpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgYXJy
W2ldID0gaW50KGkpICsgMTsKLSAgICAgICAgICAgIHJldHVybiBzdW0oYXJyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGludCBzdW0oaW50WzEwXSB4cykKLSAgICAgICAgewotICAgICAgICAgICAg
aW50IHQgPSAwOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgdCA9IHQgKyB4c1tpXTsKLSAgICAgICAgICAgIHJldHVybiB0
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA1NSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMp
OwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYmFkLWFkZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFk
ZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMTQ5NDgyZDU5
OWI3YzY0OGI1OWYxYjBhOWY1ODdhMjljYmNmMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1hZGQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgYmFkQWRkCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtYWRkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWFkZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMWQ3NzIzNWE0OGU5NDJjMzI1MGVmZTI3YzQwMTY1MGVjYzFkM2UzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9iYWQtYWRkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkJhZCBhZGQuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuYmFkQWRkID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4LCB1aW50
IHkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludCB6ID0geCArIHk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JhZC1s
aXRlcmFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVy
YWxzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDczNDg2ZDc5
NDg5NTdiN2UyYzFlMDU2OTg3NDI1NzNjZTExOTgwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYmFkLWxpdGVy
YWxzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGJh
ZEludExpdGVyYWxGb3JJbnQKLVBBU1MgYmFkSW50TGl0ZXJhbEZvckZsb2F0Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9iYWQtbGl0ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWM4ZWRjZThmNThlYmM2Y2JkYWI0N2MyMzRjZGEwM2Y1NGY0ODU5Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvYmFkLWxpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuYmFkSW50TGl0ZXJhbEZv
ckludCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCAidm9pZCBmb28oKSB7
IGludCB4ID0gMzAwMDAwMDAwMDsgfSIpOwotfQotCi13aGxzbFRlc3RzLmJhZEludExpdGVyYWxG
b3JGbG9hdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKCJ2b2lkIGZvbygp
IHsgZmxvYXQgeCA9IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7IH0iKTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4NWM0NjM0NjVmM2E5ZTQyZDA0ZmYz
NDQ4NTE3ODg1ZjM5NTQ4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYml0d2lzZS1ib29sLW9wcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBib29sQml0QW5kCi1Q
QVNTIGJvb2xCaXRPcgotUEFTUyBib29sQml0WG9yCi1QQVNTIGJvb2xCaXROb3QKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9iaXR3aXNlLWJvb2wtb3BzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDlkOTdmZjI3OWY3ZGEzNTUzNWEwYjc1YjE5ZjQwYzBkMjhjOWJh
MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2JpdHdpc2UtYm9vbC1vcHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11
dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qg
dGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7
Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5ib29sQml0QW5kID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHNvdXJjZSA9IGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBh
LCBib29sIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICYgYjsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVj
dGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
ZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAg
ICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xCaXRPciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBzb3VyY2UgPSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYSB8IGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewot
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNv
dXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZh
bHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxz
ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVk
IGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwg
bWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLX07Ci0KLXdobHNsVGVzdHMu
Ym9vbEJpdFhvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBzb3VyY2UgPSBgCi0gICAgICAg
IGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSBeIGI7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0g
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1h
a2VCb29sKHRydWUpXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJv
b2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwg
ImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJvb2xCaXROb3QgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gYAotICAgICAgICBib29sIGZvbyhib29sIGEpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB+YTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwg
ImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
ZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1
ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgfQotfTsKLQotcnVuVGVz
dHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2YTVlZTZhN2ZhZGU2M2QyMjBlZTAxMDEwZjVmYWZkZDZiZDgzODgzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9ib29sLW1hdHJpeC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MSArMCwwIEBACi0KLVBBU1MgYm9vbE1hdHJpeAotUEFTUyBib29sTWF0cml4MgotUEFTUyBib29s
TWF0cml4MwotUEFTUyBib29sTWF0cml4NAotUEFTUyBib29sTWF0cml4NQotUEFTUyBib29sTWF0
cml4QW55Ci1QQVNTIGJvb2xNYXRyaXhBbnkyCi1QQVNTIGJvb2xNYXRyaXhBbGwKLVBBU1MgYm9v
bE1hdHJpeEFsbDIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2wt
bWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg5NjVmY2NkOWZlNWM0NTMxOWM1ZjhiYTEx
YTZkMDUxZjZjOGU2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbC1tYXRyaXguaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PmJvb2wgbWF0cml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJv
b2xNYXRyaXggPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbTsKLSAgICAgICAgICAgIG1bMF0gPSBi
b29sMih0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICBtWzFdID0gYm9vbDIodHJ1ZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gaW50KG1bMF1bMF0pICsgaW50KG1bMF1bMV0pICsgaW50KG1b
MV1bMF0pICsgaW50KG1bMV1bMV0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAzKTsKLX07
Ci0KLXdobHNsVGVzdHMuYm9vbE1hdHJpeDIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBi
b29sMngyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVsw
XVswXSAmJiAhbVswXVsxXSAmJiBtWzFdWzBdICYmICFtWzFdWzFdOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLmJvb2xNYXRyaXgzID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAg
ICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuIG1bMF1bMF0gJiYgIW1bMF1bMV0gJiYgbVsxXVswXSAmJiAhbVsx
XVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0
cy5ib29sTWF0cml4NCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDMgbSA9IGJvb2wyeDModHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbVsw
XVswXSAmJiBtWzBdWzFdICYmIG1bMF1bMl0gJiYgIW1bMV1bMF0gJiYgIW1bMV1bMV0gJiYgIW1b
MV1bMl07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMuYm9vbE1hdHJpeDUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG07Ci0gICAgICAgICAgICBt
WzBdID0gYm9vbDIodHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgbVsxXSA9IGJvb2wyKHRydWUs
IGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBtWzBdWzBdICYmICFtWzBdWzFdICYmIG1bMV1b
MF0gJiYgIW1bMV1bMV07Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMuYm9vbE1hdHJpeEFueSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJv
b2wyeDIoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICFh
bnkobSk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMuYm9vbE1hdHJpeEFueTIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMngyIG0gPSBib29sMngyKGZh
bHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGFueShtKTsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0
cml4QWxsID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgYm9vbDJ4MiBtID0gYm9vbDJ4Mih0cnVlLCB0cnVlLCB0
cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gIWFsbChtKTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5ib29sTWF0cml4QWxsMiA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGJvb2wyeDIgbSA9IGJvb2wyeDIodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gYWxsKG0pOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9ib29scy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEzMWM5MmVmNDhiZDcwM2EyMjRkNWFmY2M2OTQ3YzczN2I3NmI0
YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Jvb2xzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAotCi1QQVNTIGJvb2xlYW5NYXRoCi1QQVNTIGlkZW50aXR5Qm9vbAotUEFTUyBs
aXRlcmFsQm9vbAotUEFTUyBvcGVyYXRvckJvb2wKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2Jvb2xzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzMjRhZTM2MzRkYWZiNGIzZTZh
ZTk1NzYxZGJlMDBjOGI0M2QzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYm9vbHMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
PkJvb2xzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmJvb2xlYW5N
YXRoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZSAmJiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgZm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlICYmIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZSAmJiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJv
b2wgZm9vNCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSAmJiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZSB8fCB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlIHx8IGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGJvb2wgZm9vNygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vOCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZSB8fCBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MiIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b282IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbzciLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vOCIsIFtdKSwgZmFsc2UpOwotfQotCi0KLXdo
bHNsVGVzdHMuaWRlbnRpdHlCb29sID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
ImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1cm4geDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLX0KLQotd2hsc2xUZXN0cy5saXRlcmFs
Qm9vbCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9ICJib29sIGZvbygpIHsgcmV0
dXJuIHRydWU7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLX0KLQotd2hsc2xUZXN0cy5vcGVyYXRvckJvb2wg
PSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGJvb2xG
cm9tVWludEZhbHNlKCkgeyByZXR1cm4gYm9vbCh1aW50KDApKTsgfQotICAgICAgICBib29sIGJv
b2xGcm9tVWludFRydWUoKSB7IHJldHVybiBib29sKHVpbnQoMSkpOyB9Ci0KLSAgICAgICAgYm9v
bCBib29sRnJvbUludEZhbHNlKCkgeyByZXR1cm4gYm9vbChpbnQoMCkpOyB9Ci0gICAgICAgIGJv
b2wgYm9vbEZyb21JbnRUcnVlKCkgeyByZXR1cm4gYm9vbChpbnQoMSkpOyB9Ci0KLSAgICAgICAg
Ym9vbCBib29sRnJvbUZsb2F0RmFsc2UoKSB7IHJldHVybiBib29sKGZsb2F0KDApKTsgfQotICAg
ICAgICBib29sIGJvb2xGcm9tRmxvYXRUcnVlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgxKSk7IH0K
LSAgICAgICAgYm9vbCBib29sRnJvbUZsb2F0TmFOKGZsb2F0IGFyZykgeyByZXR1cm4gYm9vbChh
cmcpOyB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAiYm9vbEZyb21VaW50RmFsc2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tVWludFRydWUi
LCBbXSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJib29sRnJvbUludEZhbHNlIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJib29sRnJvbUludFRydWUiLCBb
XSksIHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJib29sRnJvbUZsb2F0RmFsc2UiLCBbXSksIGZhbHNlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImJvb2xGcm9tRmxvYXRUcnVlIiwg
W10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImJvb2xGcm9tRmxvYXROYU4iLCBbbWFrZUZsb2F0KHByb2dyYW0sIE5hTildKSwgdHJ1
ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQg
Zm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdDMgeDsKLSAgICAgICAg
ICAgICAgICBib29sIHIgPSBib29sKHgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZv
aWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdDN4MyB4OwotICAg
ICAgICAgICAgICAgIGJvb2wgciA9IGJvb2woeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdt
ZW50LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21l
bnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXItZnJhZ21lbnQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1MTMyYTBjOTA2OWQwZjI4YjYwZjcwN2Ri
NjNkNTkwODFmZmRlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWZyYWdtZW50Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkg
OiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uLCBjb25zdGFudCBmbG9hdFtdIHRoZUJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9U
YXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCh0aGVCdWZmZXJbMF0sIHRoZUJ1ZmZlclswXSwg
dGhlQnVmZmVyWzBdLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsK
LSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50
U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25z
dCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAg
ICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGUwXX07Ci0gICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAg
IHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNj
cmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIxLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOwotICAg
IHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9h
dDMyQXJyYXlbMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMl0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjEu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklG
T1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFw
V3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQot
ICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTog
NH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTog
YnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHty
OiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3th
dHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9w
OiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVmZmVyLWxlbmd0
aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBm
NDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5n
dGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWZmZXItbGVuZ3RoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ2MzFkOGU5MWUzMjkzYTZmNTNkNWQ5OGJhNzZlYTI3MzM0YTUyNzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2J1ZmZlci1sZW5ndGguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZv
aWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgdWludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxv
YXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGJ1ZmZlclswXSA9IGJ1
ZmZlci5sZW5ndGg7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHNpemUgPSBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDEzMzc7Ci0KLSAgICBjb25z
dCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1
ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyVWlu
dDMyQXJyYXkgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZl
clVpbnQzMkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJl
c3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9S
QUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07
Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1
ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJl
c3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZm
ZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIDEgKiBVaW50MzJBcnJheS5C
WVRFU19QRVJfRUxFTUVOVCk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5k
R3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwg
MSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZm
ZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3Vs
dFVpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAg
aWYgKHJlc3VsdFVpbnQzMkFycmF5WzBdID09IDEzMzcpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIp
OwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51
bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvYnVmZmVyLXZlcnRleC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9idWZmZXItdmVydGV4LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFz
PgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9idWZmZXItdmVydGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
YnVmZmVyLXZlcnRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTE3ZDZl
MDE0ZTI4MzVhYzUwOWI0ZmQ3Mjc5MWI3MDQ1Zjg4MWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9idWZmZXIt
dmVydGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihjb25zdGFudCBmbG9hdDRbXSBidWZm
ZXIgOiByZWdpc3RlcihiMCksIHVpbnQgaWQgOiBTVl9WZXJ0ZXhJRCkgOiBTVl9Qb3NpdGlvbiB7
Ci0gICAgcmV0dXJuIGJ1ZmZlcltpZF07Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLjAsIDEuMCwgMS4wLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAg
IGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LQotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IFtdfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwg
ZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29s
b3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEs
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCBzaXplID0gNCAqIDQgKiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Ci0K
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNv
dXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs2
XSA9IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgcmVz
b3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9
IDEuMDsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0g
MS4wOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0y
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxOTc4MDc5MmMz
MzdhODUxN2EwMzJjNGQzMzRhZTZjMDM1ZGY4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0
b3JzLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mg
YnVpbHRpblZlY3RvckdldHRlcnMKLVBBU1MgYnVpbHRpblZlY3RvclNldHRlcnMKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwYzBmMmFkZjQyNzI5MWM0MWMxYWRiZmViYjYxOGIxNGIw
NzA1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLTIuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0
PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVz
dCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9
IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24sCi0gICAgImludCI6IGNhbGxJbnRGdW5j
dGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLWNvbnN0IHR5cGVOYW1l
cyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwotY29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQg
XTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5IiwgInoiLCAidyIgXTsKLWNvbnN0IGluaXRp
YWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JH
ZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLQotICAgIGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBz
cmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFtZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAg
Zm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0
eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1gOwotICAgICAgICAgICAgICAgIHNyYyArPSBg
JHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlw
ZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlzdC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIp
fSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguJHtlbGVtZW50c1tpXX07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBgOwot
ICAgICAgICAgICAgICAgIHRlc3RzLnB1c2goeyB0eXBlOiB0eXBlTmFtZSwgbmFtZTogZnVuY3Rp
b25OYW1lLCBleHBlY3RhdGlvbjogaW5pdGlhbGl6ZXJMaXN0W2ldIH0pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IHByb2dyYW0gPSBzcmM7Ci0gICAgZm9yIChs
ZXQgdGVzdCBvZiB0ZXN0cykgewotICAgICAgICBjb25zdCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNz
W3Rlc3QudHlwZV07Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2hlY2tGdW5jKHByb2dy
YW0sIHRlc3QubmFtZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9uKTsKLSAgICB9Ci19OwotCi13aGxz
bFRlc3RzLmJ1aWx0aW5WZWN0b3JTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgdGVz
dHMgPSBbXTsKLSAgICBsZXQgc3JjID0gIiI7Ci0gICAgZm9yIChsZXQgdHlwZU5hbWUgb2YgdHlw
ZU5hbWVzKSB7Ci0gICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKLSAgICAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
ZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAg
ICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFt
ZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2Uo
MCwgc2l6ZSkuam9pbigiLCAiKX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguJHtl
bGVtZW50c1tpXX0gPSAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC4k
e2VsZW1lbnRzW2ldfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGA7Ci0gICAgICAgICAgICAgICAgdGVzdHMucHVzaCh7IHR5cGU6IHR5cGVOYW1l
LCBuYW1lOiBmdW5jdGlvbk5hbWUsIGV4cGVjdGF0aW9uOiAzNCB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBwcm9ncmFtID0gc3JjOwotICAgIGZvciAobGV0
IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29uc3QgY2hlY2tGdW5jID0gY2hlY2tGdW5jc1t0
ZXN0LnR5cGVdOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNoZWNrRnVuYyhwcm9ncmFt
LCB0ZXN0Lm5hbWUsIFtdKSwgdGVzdC5leHBlY3RhdGlvbik7Ci0gICAgfQotfQotCi1ydW5UZXN0
cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRpbi12ZWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0MTI0OTFmOWM1YTlkNDFkZmFmZjAzNjBhMWFmMDA1YzRkOWZm
ODI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1MgYnVpbHRpblZlY3RvckluZGV4U2V0dGVycwot
UEFTUyBidWlsdGluVmVjdG9ycwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvYnVpbHRpbi12ZWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYnVpbHRp
bi12ZWN0b3JzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWM2MTk5YTcw
NmE4YmFmOGQ2NGNmMWVlZTg5ZjRlNmIyNjUyMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVj
dG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29u
dGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotY29uc3QgY2hlY2tGdW5jcyA9IHsKLSAgICAidWludCI6IGNhbGxVaW50RnVuY3Rpb24s
Ci0gICAgImludCI6IGNhbGxJbnRGdW5jdGlvbiwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5j
dGlvbgotfTsKLWNvbnN0IHR5cGVOYW1lcyA9IFsgInVpbnQiLCAiaW50IiwgImZsb2F0IiBdOwot
Y29uc3Qgc2l6ZXMgPSBbIDIsIDMsIDQgXTsKLWNvbnN0IGVsZW1lbnRzID0gWyAieCIsICJ5Iiwg
InoiLCAidyIgXTsKLWNvbnN0IGluaXRpYWxpemVyTGlzdCA9IFsgMSwgMiwgMywgNCBdOwotCi13
aGxzbFRlc3RzLmJ1aWx0aW5WZWN0b3JJbmRleFNldHRlcnMgPSBhc3luYyAoKSA9PgotewotICAg
IGxldCB0ZXN0cyA9IFtdOwotICAgIGxldCBzcmMgPSAiIjsKLSAgICBmb3IgKGxldCB0eXBlTmFt
ZSBvZiB0eXBlTmFtZXMpIHsKLSAgICAgICAgZm9yIChsZXQgc2l6ZSBvZiBzaXplcykgewotICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBmdW5jdGlvbk5hbWUgPSBgJHt0eXBlTmFtZX0ke3NpemV9JHtlbGVtZW50c1tpXX1g
OwotICAgICAgICAgICAgICAgIHNyYyArPSBgJHt0eXBlTmFtZX0gJHtmdW5jdGlvbk5hbWV9KCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
e3R5cGVOYW1lfSR7c2l6ZX0geCA9ICR7dHlwZU5hbWV9JHtzaXplfSgke2luaXRpYWxpemVyTGlz
dC5zbGljZSgwLCBzaXplKS5qb2luKCIsICIpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeFske2l9XSA9IDM0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4WyR7
aX1dOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
YDsKLSAgICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHsgdHlwZTogdHlwZU5hbWUsIG5hbWU6IGZ1
bmN0aW9uTmFtZSwgZXhwZWN0YXRpb246IDM0IH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgbGV0IHByb2dyYW0gPSBzcmM7Ci0gICAgZm9yIChsZXQgdGVzdCBvZiB0
ZXN0cykgewotICAgICAgICBjb25zdCBjaGVja0Z1bmMgPSBjaGVja0Z1bmNzW3Rlc3QudHlwZV07
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2hlY2tGdW5jKHByb2dyYW0sIHRlc3QubmFt
ZSwgW10pLCB0ZXN0LmV4cGVjdGF0aW9uKTsKLSAgICB9Ci19OwotCi13aGxzbFRlc3RzLmJ1aWx0
aW5WZWN0b3JzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0g
ICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vMigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoMywgNCk7Ci0gICAgICAgICAgICBp
bnQzIGIgPSBpbnQzKGEsIDUpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQzIGEgPSBpbnQz
KDMsIDQsIDUpOwotICAgICAgICAgICAgaW50NCBiID0gaW50NCg2LCBhKTsKLSAgICAgICAgICAg
IHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIGludCBmb280KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKLSAgICAgICAgICAgIGludDIgYiA9IGlu
dDIoNSwgNik7Ci0gICAgICAgICAgICBpbnQ0IGMgPSBpbnQ0KGEsIGIpOwotICAgICAgICAgICAg
cmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb281KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW50NCBhID0gaW50NCgzLCA0LCA1LCA2KTsKLSAgICAgICAgICAgIGludDIg
YiA9IGludDIoNCwgNSk7Ci0gICAgICAgICAgICBpbnQ0IGMgPSBpbnQ0KDMsIGIsIDYpOwotICAg
ICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9v
NigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgYSA9IGludDIoNCwgNSk7Ci0gICAgICAg
ICAgICBpbnQzIGIgPSBpbnQzKDMsIGEpOwotICAgICAgICAgICAgaW50MyBjID0gaW50MygzLCA0
LCA2KTsKLSAgICAgICAgICAgIHJldHVybiBhbGwoYiA9PSBjKTsKLSAgICAgICAgfQotICAgICAg
ICB1aW50IGZvb3UoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywg
NCk7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICB1aW50IGZv
b3UyKCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwotICAg
ICAgICAgICAgdWludDMgYiA9IHVpbnQzKGEsIDUpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07
Ci0gICAgICAgIH0KLSAgICAgICAgdWludCBmb291MygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVpbnQzIGEgPSB1aW50MygzLCA0LCA1KTsKLSAgICAgICAgICAgIHVpbnQ0IGIgPSB1aW50NCg2
LCBhKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIHVpbnQg
Zm9vdTQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywgNCk7Ci0g
ICAgICAgICAgICB1aW50MiBiID0gdWludDIoNSwgNik7Ci0gICAgICAgICAgICB1aW50NCBjID0g
dWludDQoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4gY1syXTsKLSAgICAgICAgfQotICAgICAg
ICBib29sIGZvb3U1KCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDQgYSA9IHVpbnQ0KDMs
IDQsIDUsIDYpOwotICAgICAgICAgICAgdWludDIgYiA9IHVpbnQyKDQsIDUpOwotICAgICAgICAg
ICAgdWludDQgYyA9IHVpbnQ0KDMsIGIsIDYpOwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09
IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vdTYoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB1aW50MiBhID0gdWludDIoNCwgNSk7Ci0gICAgICAgICAgICB1aW50MyBiID0gdWludDMo
MywgYSk7Ci0gICAgICAgICAgICB1aW50MyBjID0gdWludDMoMywgNCwgNik7Ci0gICAgICAgICAg
ICByZXR1cm4gYWxsKGIgPT0gYyk7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vZigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAg
ICAgICByZXR1cm4gYVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7Ci0gICAgICAgICAg
ICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1Lik7Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAg
ICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0MyBhID0gZmxvYXQzKDMuLCA0LiwgNS4pOwotICAgICAgICAgICAgZmxvYXQ0IGIgPSBmbG9h
dDQoNi4sIGEpOwotICAgICAgICAgICAgcmV0dXJuIGJbMV07Ci0gICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vZjQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0Migz
LiwgNC4pOwotICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoNS4sIDYuKTsKLSAgICAgICAg
ICAgIGZsb2F0NCBjID0gZmxvYXQ0KGEsIGIpOwotICAgICAgICAgICAgcmV0dXJuIGNbMl07Ci0g
ICAgICAgIH0KLSAgICAgICAgYm9vbCBmb29mNSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0NCBhID0gZmxvYXQ0KDMuLCA0LiwgNS4sIDYuKTsKLSAgICAgICAgICAgIGZsb2F0MiBiID0g
ZmxvYXQyKDQuLCA1Lik7Ci0gICAgICAgICAgICBmbG9hdDQgYyA9IGZsb2F0NCgzLiwgYiwgNi4p
OwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGMpOwotICAgICAgICB9Ci0gICAgICAgIGJv
b2wgZm9vZjYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0Mig0Liwg
NS4pOwotICAgICAgICAgICAgZmxvYXQzIGIgPSBmbG9hdDMoMy4sIGEpOwotICAgICAgICAgICAg
ZmxvYXQzIGMgPSBmbG9hdDMoMy4sIDQuLCA2Lik7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGIg
PT0gYyk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28yIiwgW10pLCA0KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgMyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBb
XSksIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFt
LCAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb291IiwgW10pLCAzKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UyIiwgW10pLCA0
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
b3UzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvb3U0IiwgW10pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U1IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U2IiwgW10pLCBmYWxzZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
ZiIsIFtdKSwgMyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vZjIiLCBbXSksIDQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZs
b2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YzIiwgW10pLCAzKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNCIsIFtdKSwgNSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNSIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb29mNiIsIFtdKSwgZmFsc2UpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2Nhc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNDc4ZjczYzZmNTRlMTU4
NTVmOGYwZjI3Y2FlNzBlMjNkNjQxZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nhc3RzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIGNhc3RzCi1QQVNTIHNlbGZD
YXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2FzdHMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jYXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYWY1YzhiZDY5MGU4ZDRmYmEzNWE0YTMxYTg3YzY3YmQxNzYwNGYwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jYXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5CYWQgYWRkLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmNhc3RzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQg
cHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgfQotICAgICAgICBzdHJ1Y3QgQmFyIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAg
ICB9Ci0gICAgICAgIG9wZXJhdG9yIEJhcihGb28gZm9vKSB7Ci0gICAgICAgICAgICBCYXIgYjsK
LSAgICAgICAgICAgIGIueSA9IGZvby54ICsgNzsKLSAgICAgICAgICAgIHJldHVybiBiOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBiYXooaW50IHopIHsKLSAgICAgICAgICAgIEZvbyBmb287Ci0g
ICAgICAgICAgICBmb28ueCA9IHo7Ci0gICAgICAgICAgICBCYXIgYiA9IEJhcihmb28pOwotICAg
ICAgICAgICAgcmV0dXJuIGIueTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFttYWtlSW50KDYpXSksIDEz
KTsKLX0KLQotd2hsc2xUZXN0cy5zZWxmQ2FzdHMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBw
cm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAg
ICAgICB9Ci0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBGb28gZm9v
OwotICAgICAgICAgICAgZm9vLnggPSAyMTsKLSAgICAgICAgICAgIEZvbyBiYXIgPSBGb28oZm9v
KTsKLSAgICAgICAgICAgIGJhci54ID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLnggKyBi
YXIueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEgKyA0Mik7Ci19Ci0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9jaGVja2VyLXNob3VsZC1zZXQtdHlwZS1vZi1yZWFkLW1vZGlmeS13cml0
ZS12YXJpYWJsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNr
ZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10
eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZhcmlhYmxlcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUtb2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2hlY2tlci1zaG91bGQtc2V0LXR5cGUt
b2YtcmVhZC1tb2RpZnktd3JpdGUtdmFyaWFibGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQyOGY2YTc1MmI2N2IwZTc2MGJjNWUyMzI0YjNjZGFiZDhiOTZmMjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2NoZWNrZXItc2hvdWxkLXNldC10eXBlLW9mLXJlYWQtbW9kaWZ5LXdyaXRlLXZh
cmlhYmxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3Vy
Y2UgPSBgCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
KGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDog
U1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NCB2ZWM7Ci0gICAgdmVjWzBdICs9IDQy
LjA7Ci0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gdmVjWzBdOwotfQotYDsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0
ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JD
fTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRl
QXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAwOwotICAg
IGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVy
ID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVz
dWx0c0J1ZmZlciwgMCwgc2l6ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5z
ZXRQaXBlbGluZShjb21wdXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2go
MSwgMSwgMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlC
dWZmZXIgPSBhd2FpdCByZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJl
c3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7
Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gPT0gNDIpCi0gICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1
ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNE
ZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihm
dW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9jbGFtcC1zdGRsaWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZhYTRlNzY5MWY4NTQ2MTJhZTE2YjE1ODExMjY3MWZmZjhkOWU5ZjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLQotUEFTUyB2ZWN0b3JDbGFtcAotUEFTUyBtYXRyaXhDbGFtcAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY2xhbXAtc3RkbGliLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMxZjM0NmIwMjU3MDVhYTgxNWI5ODc0NjJkMWYyMWQ5YjNlOWUwMzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2NsYW1wLXN0ZGxpYi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08
bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5DbGFtcC48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2lsb24gPSAwLjAwMDE7Ci0KLXdobHNsVGVz
dHMudmVjdG9yQ2xhbXAgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgZmxvYXQgZm9vKGZsb2F0IGEsIGZsb2F0IGIpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4
OwotICAgICAgICAgICAgeFswXSA9IGE7Ci0gICAgICAgICAgICB4WzFdID0gYjsKLSAgICAgICAg
ICAgIGZsb2F0MiBib3R0b20gPSBmbG9hdDIoMSwgNSk7Ci0gICAgICAgICAgICBmbG9hdDIgdG9w
ID0gZmxvYXQyKDEwLCA3KTsKLSAgICAgICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRvcCk7
Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55OwotICAgICAgICB9Ci0gICAgYDsKLQotICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUZsb2F0KDEyKSwgbWFrZUZsb2F0KDIwKV0pLCAxMCAvIDcsIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUZsb2F0KDgpLCBtYWtlRmxvYXQoNildKSwgOCAvIDYsIGVwc2lsb24pOwot
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUZsb2F0KC0xMCksIG1ha2VGbG9hdCg2KV0pLCAxIC8gNiwgZXBzaWxvbik7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeENsYW1wID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBj
LCBmbG9hdCBkKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB4OwotICAgICAgICAgICAgeFswXSA9
IGZsb2F0MihhLCBiKTsKLSAgICAgICAgICAgIHhbMV0gPSBmbG9hdDIoYywgZCk7Ci0KLSAgICAg
ICAgICAgIGZsb2F0MngyIGJvdHRvbSA9IGZsb2F0MngyKGZsb2F0MigxLCAyKSwgZmxvYXQyKDMs
IDQpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIHRvcCA9IGZsb2F0MngyKGZsb2F0MigxMCwgMTEp
LCBmbG9hdDIoMTIsIDEzKSk7Ci0KLSAgICAgICAgICAgIHggPSBjbGFtcCh4LCBib3R0b20sIHRv
cCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4WzBdWzBdIC8gMSArIHhbMF1bMV0gLyAyICsgeFsx
XVswXSAvIDMgKyB4WzFdWzFdIC8gNDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VGbG9hdCgyKSwgbWFrZUZsb2F0KC0xKSwgbWFrZUZsb2F0KDQpLCBtYWtlRmxvYXQoMTApXSks
IDIvMSArIDIvMiArIDQvMyArIDEwLzQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUZsb2F0KDEw
MCksIG1ha2VGbG9hdCgxMDApLCBtYWtlRmxvYXQoMTAwKSwgbWFrZUZsb2F0KDEwMCldKSwgMTAv
MSArIDExLzIgKyAxMi8zICsgMTMvNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlRmxvYXQoLTEw
MCksIG1ha2VGbG9hdCgtMTAwKSwgbWFrZUZsb2F0KC0xMDApLCBtYWtlRmxvYXQoLTEwMCldKSwg
MS8xICsgMi8yICsgMy8zICsgNC80LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VGbG9hdChOYU4p
LCBtYWtlRmxvYXQoTmFOKSwgbWFrZUZsb2F0KE5hTiksIG1ha2VGbG9hdChOYU4pXSksIDEvMSAr
IDIvMiArIDMvMyArIDQvNCwgZXBzaWxvbik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2NvbW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Y29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDkzZTg4YTZkY2VhOTc1NWEwOTljY2M5NmQ1NjAxMDFlZmJiMWYxNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvY29tbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotCi1QQVNTIGNvbW1lbnRQYXJzaW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jb21tZW50LXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9jb21tZW50LXBhcnNpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJi
ZTQzMGJiMTc5ODFhOTA2YzBjMmM1ZGJkNzc2NmQ0NDdkNTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29t
bWVudC1wYXJzaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVv
dXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxlPgotPHNjcmlw
dCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNs
VGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jb21tZW50UGFyc2luZyA9IGFzeW5jICgpID0+IHsK
LSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAgIHJ1
bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxl
IGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsK
LX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2NvbXB1dGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29tcHV0ZS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTM4MWY4NDAxODhhZDAyZTU5YzBmOTExMGVjM2UxZDdmZjJm
ZTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9jb21wdXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDIsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTAp
LCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgYnVmZmVyW3Vp
bnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRl
c2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1h
cFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAx
OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5
WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0
MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0g
ICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9
IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsg
Ly8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCBy
ZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBj
b21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRj
aCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJh
eUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3Qg
cmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVy
KTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAyCi0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJd
ID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVy
LnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2
aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvY29weS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvY29weS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2
YjI0YmM3NzZjMGNiZmZmOGJmYmNiMWE3OWU3NGMyY2VlMWIxM2EuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Nv
cHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgY29w
eUFycmF5Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9jb3B5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvY29weS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZWIzMmIwMTUyY2I2NWU4Y2QwNGVkMGIzMGE0MDI2ZmRiYzcyOThjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9jb3B5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRl
c3RzID0ge307Ci0KLXdobHNsVGVzdHMuY29weUFycmF5ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludFsxMF0geHM7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9IGludChpKSArIDE7Ci0gICAgICAgICAgICBp
bnRbMTBdIHlzID0geHM7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCB4cy5sZW5n
dGg7IGkrKykKLSAgICAgICAgICAgICAgICB4c1tpXSA9IDA7Ci0gICAgICAgICAgICBpbnQgc3Vt
ID0gMDsKLSAgICAgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IHlzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIHlzW2ldOwotICAgICAgICAgICAgcmV0dXJuIHN1
bTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNTUpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kZXJlZmVyZW5jZS1vcmRlcmluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1NDMzZTZjYTY2MmU0NTAzOWI3YWRlMjg5OWU1ZGI0NTgzZGQ5NmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RlcmVmZXJlbmNlLW9yZGVyaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGNhbGxBcmd1bWVudHNBcmVDb3BpZWRJbW1l
ZGlhdGVseUFmdGVyRXZhbHVhdGlvbgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZGVyZWZlcmVuY2Utb3JkZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5OTljOTZjMDVmNTRlNzA5MTZjZTdhNjU4M2U5Njk4NTc5MjI2ZjEwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kZXJlZmVyZW5jZS1vcmRlcmluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5EZXJlZmVyZW5jZSBvcmRlcmlu
Zy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5jYWxsQXJndW1lbnRz
QXJlQ29waWVkSW1tZWRpYXRlbHlBZnRlckV2YWx1YXRpb24gPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gKmJhcig1KSArICpiYXIoNyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJlYWQg
aW50KiBiYXIoaW50IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IHZhbHVl
OwotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDEyKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQt
dHlwZS1jaGVjay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RlcmVm
ZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2stZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVj
ay1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9p
bnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rl
cmVmZXJlbmNlLXBvaW50ZXItc2hvdWxkLXR5cGUtY2hlY2suaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTJhNzEzY2I0MjNjNzk0MzVmYzNlYWNmZDhiMzdjYWJmMDEwZDhiZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1jaGVjay5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3Ry
dWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAg
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRy
aWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBw
dHIyID0gJnNoYWRlOwotICAgICpwdHIyID0gc2hhZGU7Ci0KLSAgICByZXN1bHQucG9zaXRpb24g
PSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyMjsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0
dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hh
ZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJp
YnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07
Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxv
YXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6
IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
KTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0
czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3Rh
Z2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBp
cGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVm
ZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5Wzdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdh
aXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVm
ZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHti
aW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3Vw
RGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3Jv
dXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2Us
IGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNv
bmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRU
ZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0
VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBj
b25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7
fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2
ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNv
bG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAg
ICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJh
c2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1
ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNl
LXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXItZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RldmljZS1wcm9wZXItdHlwZS1jaGVja2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1MWRiODU2MjQ2MzhhNjU1ODg5NDkwYTRhY2I0NzNhZjUz
NjRkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZGV2aWNlLXByb3Blci10eXBlLWNoZWNrZXIuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFBv
aW50IHsKLSAgICBmbG9hdCB4OwotICAgIGZsb2F0IHk7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIFBvaW50W10gYnVmZmVyIDog
cmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0g
ICAgZmxvYXQgeCA9IGJ1ZmZlclswXS54OwotICAgIGZsb2F0IHkgPSBidWZmZXJbMF0ueTsKLSAg
ICB4ICs9IDEuMDsKLSAgICB5ICs9IDEuMDsKLSAgICBidWZmZXJbMF0ueCA9IHg7Ci0gICAgYnVm
ZmVyWzBdLnkgPSB5OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMjsKLQotICAgIGNvbnN0
IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklU
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSA0Mi4wOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDQz
LjA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3Jp
cHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVz
YWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3Vs
dHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXpl
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBi
dWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDog
YmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVy
LCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29k
ZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5k
aXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3Vs
dHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAg
Y29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5
QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSA0My4wCi0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNDQuMCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVy
LnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0Rldmlj
ZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwot
fSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWU3ODQ5MjJlMmVlY2M2YzcwOWY2MTgwZjY4
M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWstZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLWJyZWFrLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMjlmNDk5YWI3ODE3YWExMmIxZjc5Y2I0ZDA5MjUw
NjZmODFjOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtYnJlYWsuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAi
PjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0
ZXhPdXQgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNo
YWRlIDogYXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEp
KSB7Ci0gICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgZG8g
ewotICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
IHdoaWxlICgoc2hhZGUgPSAxLjAsIGZhbHNlKSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUs
IHNoYWRlLCAxLjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2Ug
PSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0
ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0g
ICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQi
LCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJp
YnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0
dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRl
eElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5N
QVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIw
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwot
ICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQg
cmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVy
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVy
KTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNv
dXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5k
aW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVz
Y3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBC
aW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChi
aW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJh
Y2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG8td2hpbGUt
bG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Rv
LXdoaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52
YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AtY29udGludWUuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMmRmNjc3YTg5NjI3MWQ0MDNmODMyNzViMmZmYjExOTRjMWIwY2FmNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC1jb250aW51ZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7
Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBh
dHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAg
ICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICB1aW50IGkgPSAw
OwotICAgIGRvIHsKLSAgICAgICAgaWYgKGIpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIHNoYWRlID0gMC4wOwotICAgIH0gd2hpbGUgKChpID0gaSArIDEsIHNo
YWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkpOwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9z
aXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hhZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBz
aGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUw
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAg
IGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwg
b2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1
dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRy
aWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFti
aW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVh
dGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBw
cmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhT
dGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFy
cmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNF0gPSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDAuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJl
c291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7
Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVm
ZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3Vy
Y2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGlu
ZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2Ny
aXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmlu
ZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmlu
ZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3Jt
YXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1
cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVy
ZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JB
dHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJn
ZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjog
cmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29u
c3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2ls
QXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NF
bmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsK
LSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0Rl
dmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29w
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2
YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxv
b3AtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3Au
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Yzg5N2E3MGUxYjg0NDFkMTg5YWUwNWM1Y2I1N2U2
Yjk3MDQ3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQg
ewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIGRvIHsKLSAgICAgICAgc2hhZGUgPSAxLjA7Ci0g
ICAgfSB3aGlsZShmYWxzZSk7Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICByZXN1bHQuc2hhZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdt
ZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBT
Vl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjAp
OwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBz
aGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHBy
aW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0
aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25z
dCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0
IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JC
bGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0
cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAg
IGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9Owot
ICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3Zl
cnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlm
b3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRv
cG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0
ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs5XSA9IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJj
ZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNv
dXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwg
c2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNv
dXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHts
YXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7
Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4
dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFp
bihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBv
dXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJl
ZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRz
ID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwg
bG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVu
ZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXco
NCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0
IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0
UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhl
bihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNv
ZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVu
dW0tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kb250LWNyYXNoLXBh
cnNpbmctZW51bS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
M2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
b250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxz
Y3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMTZjYTZlYjUyYjQ2ODQ1OGRjZmYxNDgzNmVmOWVkYWMzMzRjNGI5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotCi1lbnVtIERvbnRDcmFzaCB7Ci0gICAg
VmFsdWUKLX0KLQotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDog
YXR0cmlidXRlKDApLCBmbG9hdCBpIDogYXR0cmlidXRlKDEpKSA6IFNWX1Bvc2l0aW9uIHsKLSAg
ICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJT
b3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBh
dHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCJ9OwotICAgIGNv
bnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0g
ICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogNCwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19
OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0gICAgY29uc3QgdmVydGV4
SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywg
dHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwg
cHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRo
U3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1
ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNd
ID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIx
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlcjFGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlb
MV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXlbMl0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjFGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjEudW5tYXAoKTsK
LQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3Jv
dXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1
NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9u
cy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25z
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG90LWV4cHJlc3Npb25zLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1N2NiMjczMTIzN2U1ZmY1MjIzODMwZTU5Mjkx
ZmZjY2UwNWE1NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdC1leHByZXNzaW9ucy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRl
eE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hh
ZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkp
IHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9u
OwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZy
YWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAx
LjApOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hh
ZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEg
PSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAg
Y29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBp
bnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZm
ZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4
QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
OV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
M10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0KLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9S
TSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9
OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1
ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBi
aW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0
IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjog
MCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0
YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDog
ImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3Mo
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwg
YmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2
ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAs
IDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5k
QnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2RvdWJsZS1ub3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhODZmNWExNTA1N2FlNDBmYTNjODYwZjk1ZTA1MjI0ZDcyYTBi
M2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9kb3VibGUtbm90LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGRvdWJsZU5vdAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvZG91YmxlLW5vdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2RvdWJsZS1ub3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM3Zjc1
NjI1NGRiZmI4MWQ4MDE2N2ExNDE2OWQzN2E0NjliMzliNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZG91Ymxl
LW5vdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5Db3B5aW5nLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmRvdWJsZU5vdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICEheDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08
L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
dXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1u
b3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0
ZS1jdG9ycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRlLXR5cGVzLXNob3VsZC1u
b3QtcHJvZHVjZS1kdXBsaWNhdGUtY3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5vdC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJhNjEyYjZlMTE0Zjk0OWY0ZmM1Mjg3
ZjFhZTAxNDhjMDNlNGE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGUtdHlwZXMtc2hvdWxkLW5v
dC1wcm9kdWNlLWR1cGxpY2F0ZS1jdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFhZWiB7Ci0gICAgaW50IHg7Ci0gICAg
aW50IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXR5cGVkZWYgWFlaMSA9IFhZWjsKLXR5cGVkZWYgWFla
MiA9IFhZWjsKLXR5cGVkZWYgWFlaMyA9IFhZWjsKLQotW251bXRocmVhZHMoMiwgMSwgMSldCi1j
b21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpbnQg
dmFsdWU7Ci0gICAgZmxvYXQgdmFsdWUyOwotICAgIGludFsxMF0gdmFsdWUzOwotCi0gICAgdGhy
ZWFkIGludCogeCA9ICZ2YWx1ZTsKLSAgICB0aHJlYWQgaW50KiB5ID0gJnZhbHVlOwotICAgIHRo
cmVhZCBmbG9hdCogZjEgPSAmdmFsdWUyOwotICAgIHRocmVhZCBmbG9hdCogZjIgPSAmdmFsdWUy
OwotICAgIFhZWjEgYTsKLSAgICBYWVoyIGI7Ci0gICAgWFlaMyBjOwotICAgIHRocmVhZCBpbnRb
XSBpbnRBcnJheVJlZjEgPSBAdmFsdWUzOwotICAgIHRocmVhZCBpbnRbXSBpbnRBcnJheVJlZjIg
PSBAdmFsdWUzOwotICAgIGlmICgqeCA9PSAqeSAmJiB4ID09IHkpIHsKLSAgICAgICAgYnVmZmVy
W3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotICAg
IH0KLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTog
InN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdy
b3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNj
cmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFy
cmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0gNzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
N10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwg
c2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJj
ZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlv
dXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAg
Y29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1
ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogOCk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVn
aW5Db21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21w
dXRlUGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMiwgMSwgMSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBy
ZXN1bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3Vs
dHNGbG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFd
ID09IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYm
IHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAg
ICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAg
ICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQo
IiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewot
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9k
dXBsaWNhdGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNh
dGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc4NDYwYzY2
ZDg4YTI2YzkyMGU3ZjYyZGY1ZmU2NzExM2IyM2EwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZHVwbGljYXRl
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBkdXBs
aWNhdGVGdW5jdGlvbnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1
cGxpY2F0ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9kdXBsaWNhdGVzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZjZkOGU0Y2NkNmY1NWM4MjVmZmI5OTRk
MDIzMmJlNWFhN2YzOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2R1cGxpY2F0ZXMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFy
c2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+
VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5kdXBsaWNhdGVGdW5jdGlvbnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAgICAgICAgdm9pZCBmb28oKSB7IH0KLSAg
ICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKGludCB4KSB7
IH0KLSAgICAgICAgdHlwZWRlZiBBID0gaW50OwotICAgICAgICB2b2lkIGZvbyhBIHgpIHsgfQot
ICAgIGApOwotCi0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGJhcigpIHsKLSAg
ICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFyKGludCB4KSB7
Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlu
dCBiYXooKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYmFyKDMpOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMyk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAg
ICAgICBpbnQgb3BlcmF0b3ImW10odGhyZWFkIGludFtdIGEsIHVpbnQgYikgewotICAgICAgICAg
ICAgcmV0dXJuIDQ7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChg
Ci0gICAgICAgIHVpbnQgb3BlcmF0b3IubGVuZ3RoKHRocmVhZCBpbnRbXSBhKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gNDsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KHRocmVhZCBpbnRbXSBhLCB0aHJlYWQgaW50W10g
YikgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PSh0aHJlYWQgaW50KiBh
LCB0aHJlYWQgaW50KiBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIGApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50
ZXItdXNhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRkYjBkN2FkNGIyODg0NmU1OTMxZGVjZjE4YTkzN2I5OTJmMDhjMTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBub1BvaW50ZXJzSW5TdHJ1Y3RPckFycmF5Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50
ZXItdXNhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBv
aW50ZXItdXNhZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI3MmQxYzQw
NTE1MTY2MzdhNTExMjBjOTdmMDY4Y2YwZDVkZjdhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXBy
b3Blci1wb2ludGVyLXVzYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5jb3JyZWN0IHBvaW50ZXIgdXNhZ2Uu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMubm9Qb2ludGVyc0luU3Ry
dWN0T3JBcnJheSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICBzdHJ1Y3QgUyB7IGludCB4OyB0aHJlYWQgaW50KiBwdHI7IH0KLSAgICAgICAgdm9pZCBmb28o
KSB7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHR5cGVkZWYg
VCA9IHRocmVhZCBpbnQqOwotICAgICAgICBzdHJ1Y3QgUyB7IGludCB4OyBUIHB0cjsgfQotICAg
ICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAg
ICAgICAgc3RydWN0IFMgeyB0aHJlYWQgaW50Kls0Ml0gYXJyOyB9Ci0gICAgICAgIHZvaWQgZm9v
KCkgeyB9Ci0gICAgYCk7Ci0KLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQg
Zm9vKCkgewotICAgICAgICAgICAgdGhyZWFkIGludCpbNDJdIGFycjsKLSAgICAgICAgfQotICAg
IGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFk
IGludCo7Ci0gICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgVFs0Ml0gYXJyOwotICAg
ICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVm
IFQgPSB0aHJlYWQgaW50Kls0Ml07Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0K
LSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpIHsKLSAgICAgICAgICAg
IGludCB4OwotICAgICAgICAgICAgdGhyZWFkIGludCogcHRyID0gJng7Ci0gICAgICAgICAgICAo
JnB0cik7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqW107Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0g
ICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0eXBlZGVmIEkgPSBpbnQ7
Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJKltdOwotICAgICAgICB2b2lkIGZvbygpIHsg
fQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0g
dGhyZWFkIGludCo7Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107Ci0gICAgICAgIHZv
aWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0
eXBlZGVmIEkgPSB0aHJlYWQgaW50W107Ci0gICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107
Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50KjsKLSAgICAgICAgdHlwZWRlZiBUID0g
dGhyZWFkIEkqOwotICAgICAgICB2b2lkIGZvbygpIHsgfQotICAgIGApOwotCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAg
ICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKLSAgICAgICAgICAgIChAYXJyKTsKLSAg
ICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdm9pZCBm
b28oKSB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIg
PSBAeDsKLSAgICAgICAgICAgICgmYXJyKTsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdh
aXQgY2hlY2tGYWlsKGAKLSAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludFtdOwotICAgICAg
ICB0eXBlZGVmIFQgPSB0aHJlYWQgSSo7Ci0gICAgICAgIHZvaWQgZm9vKCkgeyB9Ci0gICAgYCk7
Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTItZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmY5
NThhMGNlZmUxNDcxNWYyY2VkMDA2YWRhNzAzM2JhMTIxMzZiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZs
b2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApOwotfQotCi1mbG9hdCBhc3NpZ25Ub1B0cih0aHJlYWQgZmxvYXQqIHB0ciwgZmxvYXQgdmFs
dWUpIHsKLSAgICByZXR1cm4gKnB0ciA9IHZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQqIHJlYWxQ
dHIoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuICZ2YWx1ZTsKLX0KLQotdGhyZWFkIGZsb2F0
KiBmaXJzdFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiByZWFsUHRyKHZhbHVlKTsKLX0K
LQotdGhyZWFkIGZsb2F0KiBzZWNvbmRQdHIoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gZmly
c3RQdHIodmFsdWUpOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0g
ICAgVmVydGV4T3V0IHJlc3VsdDsKLQotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZSA9IGZp
cnN0UHRyKHNoYWRlKTsKLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUyID0gc2Vjb25kUHRy
KDEuMCk7Ci0KLSAgICBmbG9hdCBkdW1teTsKLSAgICB0aHJlYWQgZmxvYXQqIGR1bW15UHRyID0g
JmR1bW15OwotCi0gICAgZHVtbXkgPSBhc3NpZ25Ub1B0cihwdHJUb1NoYWRlMiwgMC4wKTsKLSAg
ICB0aHJlYWQgZmxvYXQqIGR1bW15MiA9IHJlYWxQdHIoc2hhZGUpOwotCi0gICAgcmVzdWx0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6
ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRl
MCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0
ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNj
YmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJp
YWJsZS1saWZldGltZS0zLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9lbnN1cmUtcHJvcGVyLXZhcmlhYmxlLWxpZmV0aW1lLTMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4NjlmYWEwM2U1ZWYyYmM2NzJlMDJiYjQ5MDc5ZDhiNjAy
MDc0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0zLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAg
ICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotZmxvYXQgYXNzaWduVG9QdHIodGhy
ZWFkIGZsb2F0KiBwdHIsIGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuICpwdHIgPSB2YWx1ZTsK
LX0KLQotdGhyZWFkIGZsb2F0KiByZWFsUHRyKGZsb2F0IHZhbHVlKQotewotICAgIGZsb2F0IHYg
PSB2YWx1ZTsKLSAgICByZXR1cm4gJnY7Ci19Ci0KLXRocmVhZCBmbG9hdCogZmlyc3RQdHIoZmxv
YXQgdmFsdWUpIHsKLSAgICByZXR1cm4gcmVhbFB0cih2YWx1ZSk7Ci19Ci0KLXRocmVhZCBmbG9h
dCogc2Vjb25kUHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIGZpcnN0UHRyKHZhbHVlKTsK
LX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0
cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCBy
ZXN1bHQ7Ci0KLSAgICB0aHJlYWQgZmxvYXQqIHB0clRvU2hhZGUgPSBmaXJzdFB0cihzaGFkZSk7
Ci0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlMiA9IHNlY29uZFB0cigxLjApOwotCi0gICAg
ZmxvYXQgZHVtbXk7Ci0gICAgdGhyZWFkIGZsb2F0KiBkdW1teVB0ciA9ICZkdW1teTsKLQotICAg
IGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZTIsIDAuMCk7Ci0gICAgdGhyZWFkIGZsb2F0
KiBkdW1teTIgPSByZWFsUHRyKHNoYWRlKTsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotCi0gICAgcmVzdWx0LnNoYWRlID0gKnB0clRvU2hhZGUyOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBz
aGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZz
ZXQ6IDE2fTsKLSAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFd
OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0
ZXN9OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1p
dGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5j
aWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5
b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBl
bGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVy
MERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRl
eEJ1ZmZlcjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIg
PSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlC
dWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs5XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTBdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEzXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5VTklGT1JNIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3Vy
Y2VCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAg
ICByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1
ZmZlciwgc2l6ZTogNH07Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAw
LCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRv
ciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5n
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3Jv
dXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
Z3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDog
ImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3
YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0g
c3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZp
ZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21t
YW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNv
bnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFj
aG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDog
bnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12
YXJpYWJsZS1saWZldGltZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMz
YzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJs
ZS1saWZldGltZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXIt
dmFyaWFibGUtbGlmZXRpbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0
OTZmN2UzNTE3ZjA0NGM3Yjc0ODY5NWVhZTVjMGUzNWMwYTYxNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5z
dXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYy
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2Ny
aXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxv
YXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUo
MCk7Ci19Ci0KLWZsb2F0IGFzc2lnblRvUHRyKHRocmVhZCBmbG9hdCogcHRyLCBmbG9hdCB2YWx1
ZSkgewotICAgIHJldHVybiAqcHRyID0gdmFsdWU7Ci19Ci0KLXRocmVhZCBmbG9hdCogcmVhbFB0
cihmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gJnZhbHVlOwotfQotCi10aHJlYWQgZmxvYXQq
IGZpcnN0UHRyKGZsb2F0IHZhbHVlKSB7Ci0gICAgcmV0dXJuIHJlYWxQdHIodmFsdWUpOwotfQot
Ci10aHJlYWQgZmxvYXQqIHNlY29uZFB0cihmbG9hdCB2YWx1ZSkgewotICAgIHJldHVybiBmaXJz
dFB0cih2YWx1ZSk7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAg
ICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwdHJUb1NoYWRlID0gZmly
c3RQdHIoc2hhZGUpOwotICAgIHRocmVhZCBmbG9hdCogcHRyVG9TaGFkZTIgPSBzZWNvbmRQdHIo
MS4wKTsKLQotICAgIGZsb2F0IGR1bW15OwotICAgIHRocmVhZCBmbG9hdCogZHVtbXlQdHIgPSAm
ZHVtbXk7Ci0KLSAgICBkdW1teSA9IGFzc2lnblRvUHRyKHB0clRvU2hhZGUyLCAwLjApOwotICAg
IGR1bW15ID0gYXNzaWduVG9QdHIocHRyVG9TaGFkZSwgc2hhZGUpOwotCi0gICAgcmVzdWx0LnBv
c2l0aW9uID0gcG9zaXRpb247Ci0KLSAgICByZXN1bHQuc2hhZGUgPSAqcHRyVG9TaGFkZTI7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIo
ZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBm
bG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
ZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmds
ZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3
IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAi
cmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8g
R1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0K
LSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9h
dDQifTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6
ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRl
MCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0
ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
MV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5l
bmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
Z2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmlj
ZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9l
bnVtLWludGVnZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRhMmUyMWYyYjAwNmIyMzE3MTZlZmNmMTBkZWYzYjgyYjZmMTQw
YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBzaW1wbGVFbnVtRnJvbUludAot
UEFTUyBzaW1wbGVFbnVtRnJvbVVpbnQKLVBBU1Mgd2VpcmRFbnVtRnJvbUludAotUEFTUyB3ZWly
ZEVudW1Gcm9tVWludAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bS1pbnRlZ2VyLWNvbnN0cnVjdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNjNGE1Y2RjZmVkYjZmYTY4N2E1NmQzNGEwYjBmYjg4YTJhOTYzODcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2VudW0taW50ZWdlci1jb25zdHJ1Y3Rvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bUZyb21JbnQgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0gRm9vIHsKLSAgICAg
ICAgICAgIEEsCi0gICAgICAgICAgICBCLAotICAgICAgICAgICAgQwotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28oeCkpOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0MildKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSksIDAp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgxKV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKV0pLCAw
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMjE0NzQ4MzY0NyldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0yMTQ3NDgzNjQ4KV0pLCAw
KTsKLX07Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bUZyb21VaW50ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAgICAgICAg
ICAgQSwKLSAgICAgICAgICAgIEIsCi0gICAgICAgICAgICBDCi0gICAgICAgIH0KLQotICAgICAg
ICB1aW50IGZvbyh1aW50IHgpIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KEZvbyh4KSk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCldKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSldKSwg
MSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoMildKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNDIpXSksIDApOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50
KDEwMDAwMDApXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5NjcyOTUpXSksIDApOwotfTsKLQotd2hs
c2xUZXN0cy53ZWlyZEVudW1Gcm9tSW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBlbnVtIEZvbyA6IGludCB7Ci0gICAgICAgICAgICBBID0gNDIsCi0gICAg
ICAgICAgICBCID0gLTEwMDAsCi0gICAgICAgICAgICBDID0gMTAxMDEwLAotICAgICAgICAgICAg
RCA9IDAKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmb28oaW50IHgpIHsKLSAgICAgICAgICAg
IHJldHVybiBpbnQoRm9vKHgpKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwg
MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDQyKV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xMDAwKV0pLCAtMTAwMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDEwMTAxMCldKSwgMTAxMDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpXSksIDApOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMTQ3
NDgzNjQ3KV0pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTIxNDc0ODM2NDgpXSksIDApOwotfTsKLQotd2hsc2xU
ZXN0cy53ZWlyZEVudW1Gcm9tVWludCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAgIEEgPSA0MiwKLSAgICAg
ICAgICAgIEMgPSAxMDEwMTAsCi0gICAgICAgICAgICBEID0gMAotICAgICAgICB9Ci0KLSAgICAg
ICAgdWludCBmb28odWludCB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChGb28oeCkpOwot
ICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyKV0p
LCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoMTAxMDEwKV0pLCAxMDEwMTApOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQyOTQ5Njcy
OTUpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDQxKV0pLCAwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxMDEwMTEpXSksIDApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3Nj
cmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVt
LXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW0t
c3BlYy10ZXN0cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBm
MjhkY2VjMzI5MDVmMGIxY2UxOWY1YjYxY2I1NDFiOTJhMDc0YjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vu
dW0tc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAK
LQotUEFTUyBlbnVtRHVwbGljYXRlcwotUEFTUyBkZWZhdWx0RW51bUNvbnN0cnVjdG9yCi1QQVNT
IGVudW1BcnJheVJlZkJhc2UKLVBBU1MgZW51bUZsb2F0QmFzZQotUEFTUyBlbnVtUHRyQmFzZQot
UEFTUyBlbnVtU3RydWN0QmFzZQotUEFTUyBlbnVtTm9NZW1iZXJzCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lbnVtLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTAxZjc4NzNlNzdhMjBlNDFiMzliNjY3NmJiMDc0YjgyYzM4YzVjNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZW51bS1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5lbnVt
RHVwbGljYXRlcyA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAgIFdhciA9IDQyLAotICAgICAgICAgICAg
ICAgIEZhbWluZSA9IDAsCi0gICAgICAgICAgICAgICAgUGVzdGlsZW5jZSA9IDIzLAotICAgICAg
ICAgICAgICAgIERlYXRoID0gNDIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13
aGxzbFRlc3RzLmRlZmF1bHRFbnVtQ29uc3RydWN0b3IgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBXZWVrZGF5IHsKLSAgICAgICAgICAgIE1vbmRh
eSwKLSAgICAgICAgICAgIFR1ZXNkYXksCi0gICAgICAgICAgICBXZWRuZXNkYXksCi0gICAgICAg
ICAgICBUaHVyc2RheSwKLSAgICAgICAgICAgIFBpenphZGF5Ci0gICAgICAgIH0KLSAgICAgICAg
aW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlZWtkYXkgeCA9IFdlZWtkYXkoKTsK
LSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19
OwotCi13aGxzbFRlc3RzLmVudW1BcnJheVJlZkJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHRocmVhZCBp
bnRbXSB7Ci0gICAgICAgICAgICAgICAgQmFyCi0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
fQotCi13aGxzbFRlc3RzLmVudW1GbG9hdEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IGZsb2F0IHsKLSAg
ICAgICAgICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMuZW51bVB0ckJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAot
ICAgICAgICBgCi0gICAgICAgICAgICBlbnVtIEZvbyA6IHRocmVhZCBpbnQqIHsKLSAgICAgICAg
ICAgICAgICBCYXIKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
ZW51bVN0cnVjdEJhc2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQotICAgICAgICAgICAgZW51bSBG
b28gOiBUaGluZ3kgewotICAgICAgICAgICAgICAgIEJhcgotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bU5vTWVtYmVycyA9IGFzeW5jICgpID0+IHsKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsgfQot
ICAgICAgICBgKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWY3Zjk2YzE5YTMwZjM0ZGU5NWQ3MmVmZTQ2
MTg2M2Y3ZTZlOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0KLVBBU1Mgc2ltcGxlRW51bQotUEFTUyBlbnVtV2l0aEV4
cGxpY2l0SW50QmFzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51
bXMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLTIuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0OWRkZjNiYjAwODc5ZTg2M2ZjNTgxMzRkNzAzMjI1
M2I1ZTFjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MzU5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+RW51bXMuPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc2ltcGxlRW51bSA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gewotICAgICAg
ICAgICAgV2FyLAotICAgICAgICAgICAgRmFtaW5lLAotICAgICAgICAgICAgUGVzdGlsZW5jZSwK
LSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLQotICAgICAgICBGb28gX3dhcigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uV2FyOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3dhcigpID09IEZvby5X
YXI7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2ZhbWluZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmYW1p
bmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ZhbWluZSgpID09IEZvby5GYW1p
bmU7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3Blc3RpbGVuY2UoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3Blc3RpbGVu
Y2UoKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIEZvbyBfZGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRoOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZGVh
dGgoKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIF9lcXVhbHMoRm9v
IGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28gYikKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVz
dFNpbXBsZUVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9v
LldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyRXF1
YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5j
ZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1
YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uRmFtaW5lLCBG
b28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0U2ltcGxlTm90RXF1YWwo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uV2FyLCBGb28u
V2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBG
b28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3ROb3ROb3RFcXVh
bCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUs
IEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2ludFdhcigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3dhcigpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ludFdhcigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW50
RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnRGYW1pbmUoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGludCBfaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
bnQgaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfaW50UGVz
dGlsZW5jZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnREZWF0aCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW50IGludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0
aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRXYXJCYWNrd2FyZHMoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0gRm9vLldhcjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgaW50RmFtaW5lQmFja3dhcmRzKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEZvbyhfaW50RmFtaW5lKCkpID09IEZvby5GYW1pbmU7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0aWxlbmNlKCkpID09IEZvby5QZXN0aWxlbmNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnREZWF0aEJhY2t3YXJkcygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAg
ICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhl
ckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFs
IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwi
LCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJpbnRXYXIiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJpbnRGYW1pbmUiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0aWxlbmNlIiwgW10pLCAy
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiaW50
RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RmFtaW5lQmFja3dhcmRz
IiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImludFBlc3RpbGVuY2VCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50RGVhdGhCYWNrd2Fy
ZHMiLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5lbnVtV2l0aEV4cGxpY2l0SW50QmFz
ZSA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28g
OiBpbnQgewotICAgICAgICAgICAgV2FyLAotICAgICAgICAgICAgRmFtaW5lLAotICAgICAgICAg
ICAgUGVzdGlsZW5jZSwKLSAgICAgICAgICAgIERlYXRoCi0gICAgICAgIH0KLQotICAgICAgICBG
b28gX3dhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uV2FyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCB3YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
X3dhcigpID09IEZvby5XYXI7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2ZhbWluZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28uRmFtaW5lOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBmYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2ZhbWlu
ZSgpID09IEZvby5GYW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX3Blc3RpbGVuY2Uo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX3Blc3RpbGVuY2UoKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEZvbyBfZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRo
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBfZGVhdGgoKSA9PSBGb28uRGVhdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YSA9PSBiOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28g
YikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIF9lcXVhbHMoRm9vLldhciwgRm9vLldhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IHRlc3RBbm90aGVyRXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFs
cyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCB0ZXN0Tm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2VxdWFs
cyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0
U2ltcGxlTm90RXF1YWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFs
cyhGb28uV2FyLCBGb28uV2FyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdEFub3Ro
ZXJOb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZv
by5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IHRlc3ROb3ROb3RFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfbm90RXF1
YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgX2lu
dFdhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3dhcigpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gX2ludFdhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRGYW1pbmUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KF9mYW1pbmUoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpbnQgaW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9p
bnRGYW1pbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBfaW50UGVzdGlsZW5jZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbnQgaW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBfaW50UGVzdGlsZW5jZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IF9pbnRE
ZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaW50IGludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIF9pbnREZWF0aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnRXYXJCYWNr
d2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSkgPT0g
Rm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW50RmFtaW5lQmFja3dhcmRzKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50RmFtaW5lKCkpID09IEZvby5G
YW1pbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGludFBlc3RpbGVuY2VCYWNrd2FyZHMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0aWxlbmNlKCkpID09
IEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbnREZWF0aEJhY2t3
YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX2ludERlYXRoKCkpID09
IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
cGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1wbGVFcXVhbCIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIsIFtdKSwgZmFsc2Up
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAidGVz
dFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFsIiwgW10pLCBmYWxz
ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0
ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXIiLCBbXSksIDApOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRGYW1pbmUiLCBbXSksIDEpOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJpbnRQZXN0
aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlv
bihwcm9ncmFtLCAiaW50RGVhdGgiLCBbXSksIDMpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJpbnRXYXJCYWNrd2FyZHMiLCBbXSksIHRydWUp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiaW50
RmFtaW5lQmFja3dhcmRzIiwgW10pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImludFBlc3RpbGVuY2VCYWNrd2FyZHMiLCBbXSksIHRy
dWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAi
aW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9lbnVtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW51bXMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjdmZTVmNGZlNjdm
YTBmNTgzODE5YjE2OGUzNjI1MDVkM2E5YTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0KLVBBU1MgZmFpbFRyaWNreURv
dWJsZVplcm8KLVBBU1Mgc2ltcGxlRGVjbGFyYXRpb24KLVBBU1MgZW51bVdpdGhVaW50QmFzZQot
UEFTUyBlbnVtV2l0aG91dFplcm8KLVBBU1MgZW51bU5lZ2F0aXZlVWludAotUEFTUyBwYXN0SW50
TWF4Ci1QQVNTIGVudW1XaXRoU29tZU1hbnVhbFZhbHVlcwotUEFTUyBlbnVtU3dpdGNoQnJlYWtF
eGhhdXN0aXZlCi1QQVNTIGVudW1Td2l0Y2hCcmVha05vdFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZh
dWx0Ci1QQVNTIGVudW1XaXRoTWFudWFsVmFsdWVzCi1QQVNTIGVudW1Td2l0Y2hCcmVha05vdFF1
aXRlRXhoYXVzdGl2ZQotUEFTUyBjb3B5Q29uc3RydWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9lbnVtcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2VudW1zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZThlZmZhMWIxOThh
YjQyM2MxZTZlNDc4OTFkYzJlMDM0NmI2ZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VudW1zLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5FbnVtcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5m
YWlsVHJpY2t5RG91YmxlWmVybyA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBlbnVtIEUgewotICAgICAgICAgICAgRiwKLSAgICAgICAgICAgIEcgPSAtMiwK
LSAgICAgICAgICAgIEgsCi0gICAgICAgICAgICBJIC8vIHNob3VsZCBnZXQgemVybywgYW5kIHRo
YXQncyBhIGR1cGUuCi0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEUgZSA9IEUuRm9vOwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhd2FpdCBjaGVja0ZhaWwocHJvZ3JhbSk7Ci19OwotCi13aGxzbFRlc3Rz
LnNpbXBsZURlY2xhcmF0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGVudW0gRSB7Ci0gICAgICAgICAgICBGb28sCi0gICAgICAgICAgICBCYXIKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgRSBlID0g
RS5Gb287Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQy
KTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhVaW50QmFzZSA9IGFzeW5jICgpID0+IHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBGb28gOiB1aW50IHsKLSAgICAgICAgICAg
IFdhciwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UsCi0gICAg
ICAgICAgICBEZWF0aAotICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF93YXIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
d2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF93YXIoKSA9PSBGb28uV2FyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9mYW1pbmUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZmFtaW5lKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUoKSA9PSBGb28uRmFtaW5lOwot
ICAgICAgICB9Ci0KLSAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBw
ZXN0aWxlbmNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNlKCkg
PT0gRm9vLlBlc3RpbGVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBGb28gX2RlYXRoKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZGVhdGgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX2RlYXRoKCkg
PT0gRm9vLkRlYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBG
b28gYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhICE9IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RTaW1w
bGVFcXVhbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5XYXIs
IEZvby5XYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZv
by5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdE5vdEVxdWFsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRl
YXRoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBl
c3RpbGVuY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB0ZXN0Tm90Tm90RXF1YWwoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uRmFtaW5lLCBGb28u
RGVhdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludCBfdWludFdhcigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB1aW50KF93YXIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB1
aW50IHVpbnRXYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX3VpbnRXYXIoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRGYW1pbmUoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gdWludChfZmFtaW5lKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlu
dCB1aW50RmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF91aW50RmFtaW5l
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50IF91aW50UGVzdGlsZW5jZSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF9wZXN0aWxlbmNlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdWludCB1aW50UGVzdGlsZW5jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBfdWludFBlc3RpbGVuY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQgX3VpbnRE
ZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KF9kZWF0aCgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHVpbnQgdWludERlYXRoKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIF91aW50RGVhdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludFdh
ckJhY2t3YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRXYXIo
KSkgPT0gRm9vLldhcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludEZhbWluZUJhY2t3
YXJkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRGYW1pbmUoKSkg
PT0gRm9vLkZhbWluZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWludFBlc3RpbGVuY2VC
YWNrd2FyZHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKF91aW50UGVzdGls
ZW5jZSgpKSA9PSBGb28uUGVzdGlsZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdWlu
dERlYXRoQmFja3dhcmRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhfdWlu
dERlYXRoKCkpID09IEZvby5EZWF0aDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgdHJ1ZSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmYW1p
bmUiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwgdHJ1ZSk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3RTaW1w
bGVFcXVhbCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlckVxdWFsIiwgW10pLCB0cnVlKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInRlc3ROb3RFcXVhbCIs
IFtdKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAidGVzdFNpbXBsZU5vdEVxdWFsIiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ0ZXN0QW5vdGhlck5vdEVxdWFs
IiwgW10pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJ0ZXN0Tm90Tm90RXF1YWwiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAidWludFdhciIsIFtdKSwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RmFt
aW5lIiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgInVpbnRQZXN0aWxlbmNlIiwgW10pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgInVpbnREZWF0aCIsIFtdKSwgMyk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgInVpbnRXYXJC
YWNrd2FyZHMiLCBbXSksIHRydWUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihwcm9ncmFtLCAidWludEZhbWluZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50UGVzdGls
ZW5jZUJhY2t3YXJkcyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICJ1aW50RGVhdGhCYWNrd2FyZHMiLCBbXSksIHRydWUpOwot
fTsKLQotCi13aGxzbFRlc3RzLmVudW1XaXRob3V0WmVybyA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIHsKLSAgICAg
ICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgICAgICBGYW1pbmUgPSA2NCwKLSAgICAg
ICAgICAgICAgICBQZXN0aWxlbmNlID0gMjMsCi0gICAgICAgICAgICAgICAgRGVhdGggPSAtNDIK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVudW1OZWdhdGl2
ZVVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBlbnVtIEZvbyA6IHVpbnQgewotICAgICAgICAgICAgICAgIFdhciwKLSAgICAg
ICAgICAgICAgICBGYW1pbmUsCi0gICAgICAgICAgICAgICAgUGVzdGlsZW5jZSwKLSAgICAgICAg
ICAgICAgICBEZWF0aCA9IC00MgotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX07Ci0KLXdo
bHNsVGVzdHMucGFzdEludE1heCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwo
Ci0gICAgICAgIGAKLSAgICAgICAgICAgIGVudW0gRm9vIDogaW50IHsKLSAgICAgICAgICAgICAg
ICBXYXIgPSAyMTQ3NDgzNjQ3LAotICAgICAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAg
ICAgICBQZXN0aWxlbmNlID0gMCwKLSAgICAgICAgICAgICAgICBEZWF0aAotICAgICAgICAgICAg
fQotICAgICAgICBgKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVdpdGhTb21lTWFudWFsVmFsdWVz
ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBlbnVtIEZvbyB7
Ci0gICAgICAgICAgICBXYXIgPSA3MiwKLSAgICAgICAgICAgIEZhbWluZSwKLSAgICAgICAgICAg
IFBlc3RpbGVuY2UgPSAwLAotICAgICAgICAgICAgRGVhdGgKLSAgICAgICAgfQotICAgICAgICBp
bnQgd2FyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChGb28uV2FyKTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZmFtaW5lKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGludChGb28uRmFtaW5lKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgcGVzdGlsZW5jZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLlBlc3RpbGVuY2UpOwotICAg
ICAgICB9Ci0gICAgICAgIGludCBkZWF0aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBpbnQoRm9vLkRlYXRoKTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgNzIpOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmYW1pbmUiLCBbXSksIDcz
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVz
dGlsZW5jZSIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImRlYXRoIiwgW10pLCAxKTsKLX07Ci0KLQotd2hsc2xUZXN0cy5lbnVtU3dp
dGNoQnJlYWtFeGhhdXN0aXZlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBlbnVtIEZvbyB7Ci0gICAgICAgICAgICBBLCBCLCBDCi0gICAgICAgIH0KLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7
Ci0gICAgICAgICAgICBzd2l0Y2ggKEZvbyh4KSkgewotICAgICAgICAgICAgY2FzZSBGb28uQToK
LSAgICAgICAgICAgICAgICByZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIEZvby5COgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0Owot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGb28uQzoKLSAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMCldKSwgMjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNDkpOwot
fQotCi0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZlV2l0aERl
ZmF1bHQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGVudW0g
Rm9vIHsKLSAgICAgICAgICAgIEEsIEIsIEMKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKGlu
dCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgICAg
IHN3aXRjaCAoRm9vKHgpKSB7Ci0gICAgICAgICAgICBjYXNlIEZvby5BOgotICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSAyNzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRm9vLkI6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IDc2MjQ7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSA0OTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgwKV0pLCAyNyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDEpXSksIDc2MjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyKV0pLCA0OSk7Ci19Ci0KLXdobHNsVGVzdHMu
ZW51bVdpdGhNYW51YWxWYWx1ZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGVudW0gRm9vIHsKLSAgICAgICAgICAgIFdhciA9IDcyLAotICAgICAgICAgICAg
RmFtaW5lID0gMCwKLSAgICAgICAgICAgIFBlc3RpbGVuY2UgPSAyMywKLSAgICAgICAgICAgIERl
YXRoID0gLTQyCi0gICAgICAgIH0KLSAgICAgICAgaW50IHdhcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoRm9vLldhcik7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZhbWlu
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoRm9vLkZhbWluZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW50KEZvby5QZXN0aWxlbmNlKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZGVhdGgo
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50KEZvby5EZWF0aCk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJ3YXIiLCBbXSksIDcyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZmFtaW5lIiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAicGVzdGlsZW5jZSIsIFtdKSwgMjMpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJkZWF0aCIsIFtdKSwg
LTQyKTsKLX07Ci0KLXdobHNsVGVzdHMuZW51bVN3aXRjaEJyZWFrTm90UXVpdGVFeGhhdXN0aXZl
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgZW51bSBGb28gewotICAgICAgICAgICAgICAgIEEsIEIsIEMsIEQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGludCBmb28oRm9vIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh4KSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBGb28uQToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDI3
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEZvby5C
OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gNzYyNDsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb28uQzoKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IDQ5OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmNvcHlDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZW51bSBXZWVrZGF5IHsKLSAgICAg
ICAgICAgIE1vbmRheSwKLSAgICAgICAgICAgIFR1ZXNkYXksCi0gICAgICAgICAgICBXZWRuZXNk
YXksCi0gICAgICAgICAgICBUaHVyc2RheSwKLSAgICAgICAgICAgIFBpenphZGF5Ci0gICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlZWtkYXkgeCA9
IFdlZWtkYXkuTW9uZGF5OwotICAgICAgICAgICAgV2Vla2RheSB5ID0gV2Vla2RheSh4KTsKLSAg
ICAgICAgICAgIGZsb2F0NCB6ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgZmxv
YXQ0IHcgPSBmbG9hdDQoeik7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBwOwotICAgICAgICAgICAg
ZmxvYXQyeDIgcSA9IGZsb2F0MngyKHApOwotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10pLCA0Mik7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFs
aXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzY2NGM5MDk4OTliNjE4
YjBjNGVkMDIyN2RlZGNkNmJkZGUwZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2VxdWFsaXR5LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotUEFTUyBlcXVhbGl0eQotUEFT
UyBub3RFcXVhbGl0eQotUEFTUyBlcXVhbGl0eVR5cGVGYWlsdXJlCi1QQVNTIGVxdWFsc1dyb25n
QXJndW1lbnRMZW5ndGgKLVBBU1MgZXF1YWxzV3JvbmdSZXR1cm5UeXBlCi1QQVNTIGxlc3NFcXVh
bFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgbGVzc0VxdWFsV3JvbmdSZXR1cm5UeXBlCi1QQVNT
IGxlc3NUaGFuV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBsZXNzVGhhbldyb25nUmV0dXJuVHlw
ZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZXF1YWxpdHkuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZWE3YTI2Yzk4YjIzYzVhNjM5YWViZDdlNDU2MWU0NTY3M2EyMWYzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9lcXVhbGl0eS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEg
bmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVz
dCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmVxdWFs
aXR5ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gImJvb2wgZm9vKHVpbnQgeCwg
dWludCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDcpXSksIHRydWUpOwotICAgIHByb2dy
YW0gPSAiYm9vbCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ID09IHk7IH0iOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNyksIG1ha2VJbnQoNSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNyldKSwg
dHJ1ZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4g
eCA9PSB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSksIGZhbHNlKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSksIGZhbHNlKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChm
YWxzZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJv
b2wodHJ1ZSldKSwgdHJ1ZSk7Ci19Ci0KLXdobHNsVGVzdHMubm90RXF1YWxpdHkgPSBhc3luYyAo
KSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIHRydWUpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VVaW50KDcpLCBtYWtlVWludCg3KV0pLCBmYWxzZSk7Ci0gICAgcHJvZ3JhbSA9ICJib29sIGZv
byhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUlu
dCg1KV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDcpXSksIGZhbHNlKTsKLSAgICBw
cm9ncmFtID0gImJvb2wgZm9vKGJvb2wgeCwgYm9vbCB5KSB7IHJldHVybiB4ICE9IHk7IH0iOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1
ZSksIG1ha2VCb29sKGZhbHNlKV0pLCB0cnVlKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29s
KGZhbHNlKV0pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSksIGZh
bHNlKTsKLX07Ci0KLXdobHNsVGVzdHMuZXF1YWxpdHlUeXBlRmFpbHVyZSA9IGFzeW5jICgpID0+
IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoImJvb2wgZm9vKGludCB4LCB1aW50IHkpIHsgcmV0dXJu
IHggPT0geTsgfSIpOwotfTsKLQotd2hsc2xUZXN0cy5lcXVhbHNXcm9uZ0FyZ3VtZW50TGVuZ3Ro
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLQot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19OwotCi13aGxzbFRlc3RzLmVxdWFs
c1dyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3I9PShGb28sIEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMubGVzc0VxdWFsV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PSgp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oaW50KSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAg
ICAgICBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5sZXNzRXF1YWxXcm9uZ1JldHVyblR5cGUgPSBhc3lu
YyAoKSA9PiB7Ci0gICAgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPD0oRm9vLCBGb28pIHsgcmV0dXJuIDQy
OyB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLmxlc3NUaGFuV3JvbmdBcmd1bWVudExl
bmd0aCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I8KGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubGVzc1RoYW5X
cm9uZ1JldHVyblR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAg
ICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJh
dG9yPChGb28sIEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3Rz
KHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvZmxvYXQtbWF0aC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIwMWNjMTE5OGZkMjAyMzZjZGQwZDc3ZTdmOTNmNzE0M2ZmOGQxY2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2Zsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0KLVBBU1MgZmxvYXRNYXRoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9mbG9hdC1tYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZmxvYXQtbWF0
aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDcxN2YwMDQzZGQ4YWJjNDRh
YjdhMGZhMTcxMWFjNGRmOTEzZmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9mbG9hdC1tYXRoLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4K
LTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9Owot
Ci13aGxzbFRlc3RzLmZsb2F0TWF0aCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9
IGAKLSAgICAgICAgYm9vbCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNDIu
NSA9PSA0Mi41OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGJhcihmbG9hdCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb282
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJhcig3LjUpOwotICAgICAgICB9Ci0g
ICAgICAgIGZsb2F0IGZvbzkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQo
Ny41KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmbG9hdCg3KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHggPSA3LjU7Ci0gICAgICAgICAgICByZXR1
cm4gZmxvYXQoeCk7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBkaXYoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gMC41IC8gMiA9PSAwLjI1OwotICAgICAgICB9Ci0gICAgYDsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vNiIsIFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10pLCA3LjUpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCA3KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMyIs
IFtdKSwgNy41KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgImRpdiIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBiYXIoaW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBiYXIoNC4wZik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB1aW50IGJhcih1aW50
IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBiYXIoNC4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVj
a0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHVpbnQgYmFyKHVpbnQgeCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJhcig0LjBmKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
Z2V0dGVyLXNldHRlci10eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZTNlMGM2MzFlZTAxOTBkN2FkZGU3MjFjMmNhNTRkMThmYzk1MDEzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNCArMCwwIEBACi0KLVBBU1MgZ2V0dGVyVHlwZQotUEFTUyBzZXR0ZXJUeXBlCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9nZXR0ZXItc2V0dGVyLXR5cGUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4M2RiOWIzY2Q4MWRjOGIyNTUwNTNkNGIwMDZmOTk4
ZTJlMDhlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZ2V0dGVyLXNldHRlci10eXBlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IGxvb3BzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmdl
dHRlclR5cGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
aW50IG9wZXJhdG9yLngodGhyZWFkIGludFtdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZvb1swXTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwo
YAotICAgICAgICBpbnQgb3BlcmF0b3IueChpbnRbM10gZm9vKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9vWzBdOwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBvcGVyYXRvcltdKHRocmVhZCBpbnRbXSBmb28sIGludCBpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1tpbmRleF07Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IG9wZXJhdG9yLngo
aW50WzNdIGZvbykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvb1swXTsKLSAgICAg
ICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9v
IHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvcltd
KEZvbyBmb28sIHVpbnQ0IGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9v
W2luZGV4LnhdOwotICAgICAgICB9Ci0gICAgYCk7IAotfTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJU
eXBlID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHRocmVh
ZCBpbnRbXSBvcGVyYXRvci54PSh0aHJlYWQgaW50W10gZm9vLCB1aW50IHgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKGAKLSAgICAgICAgaW50WzNdIG9wZXJhdG9yLng9KGludFszXSBmb28sIHVpbnQg
eCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbzsKLSAgICAgICAgfQotICAgIGAp
OyAKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAotICAgICAgICB0aHJlYWQgaW50W10gb3BlcmF0b3Jb
XT0odGhyZWFkIGludFtdIGZvbywgdWludCB4LCB1aW50IHkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmb287Ci0gICAgICAgIH0KLSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWls
KGAKLSAgICAgICAgaW50WzNdIG9wZXJhdG9yLng9KGludFszXSBmb28sIHVpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbzsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4
OwotICAgICAgICB9Ci0gICAgICAgIEZvbyBvcGVyYXRvcltdPShGb28gZm9vLCBmbG9hdDQgeSwg
dWludCB6KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0K
LSAgICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgc3RydWN0IEZvbyB7Ci0g
ICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgb3BlcmF0b3IueShGb28g
Zm9vKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vLng7Ci0gICAgICAgIH0KLSAg
ICAgICAgRm9vIG9wZXJhdG9yLnk9KEZvbyBmb28sIGludDQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgRm9vIHJlc3VsdDsKLSAgICAgICAgICAgIGZvby54ID0geC54OwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9odWdlLWFycmF5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaHVnZS1hcnJheS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2h1Z2UtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODQ2YzkxNjdmNGVhY2MxMDM0MjJiNzJkNmI3NmI3ZGJhN2M2MDk2Zi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvaHVnZS1hcnJheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBmbG9hdFtdIGFycmF5
LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotfQotCi1bbnVtdGhyZWFk
cygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZm
ZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQp
IHsKLSAgICBmbG9hdFsxMDAwXSBhcnJheTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEwMDAp
Ci0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
ICsraSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhcnJheVswXSA9IDAuMTMzNzsKLSAgICBpZiAoYXJyYXlbMF0gIT0gMC4x
MzM3KQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aHJlYWQgZmxvYXRbXSBhcnJheVB0ciA9IEBh
cnJheTsKLSAgICBpZiAoYXJyYXlQdHIubGVuZ3RoICE9IDEwMDApCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZpbGwoYXJyYXlQdHIsIDAuMTAxMCk7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwg
YXJyYXlQdHIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGFycmF5UHRyW2ldICE9IDAuMTAx
MCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDAuMTAxMCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmaWxsKEBhcnJheSwgMC4wMTAxKTsK
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoYXJyYXlQdHJbaV0gIT0gMC4wMTAxKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAoYXJyYXlbaV0gIT0gMC4wMTAxKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
c2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5
OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVh
dGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBzaXplID0gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBi
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUg
fCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQz
MkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1
bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9Owot
ICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1
bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0g
ICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NThhMmMzMzFhMWQ0NzAzYWY3YjhkOWU3
OGMxYjA0OWI0NTdjMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2lmLXN0YXRlbWVudC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBpZlN0YXRlbWVudAotUEFTUyBp
ZkVsc2VTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZTdGF0ZW1lbnQKLVBBU1MgaWZFbHNlSWZFbHNl
U3RhdGVtZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pZi1zdGF0ZW1lbnQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVhODVhZmQ3N2ZjODBhMjVlOGIzYmZjOTIw
OGZjNGU5YzM0NTNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaWYtc3RhdGVtZW50Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xU
ZXN0cy5pZlN0YXRlbWVudCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNjsK
LSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICB5ID0gODsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMyldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KV0pLCA2KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNildKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg4KV0pLCA2KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoOSldKSwgNik7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlU3RhdGVtZW50ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgaWYgKHggPT0gNykgewot
ICAgICAgICAgICAgICAgIHkgPSA4OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICB5ID0gOTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB5OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMyldKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDQpXSksIDkpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg1KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNildKSwgOSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpXSksIDgpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg4KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgOSk7Ci19Ci0KLXdobHNsVGVzdHMuaWZFbHNlSWZT
dGF0ZW1lbnQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAg
ICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHggPT0gOCkgewotICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzKV0p
LCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNCldKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpXSksIDYpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2KV0p
LCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0p
LCA2KTsKLX0KLQotd2hsc2xUZXN0cy5pZkVsc2VJZkVsc2VTdGF0ZW1lbnQgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0g
ICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgewot
ICAgICAgICAgICAgICAgIHkgPSA5OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICB5ID0gMTA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAg
ICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCldKSwgMTApOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg1KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgOCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDgpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg5KV0pLCAxMCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUxMTI0NWM2NTJjYTBiMGYwYmQzZGY2NmYzYTQ0MjIyMDYwNzgz
NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2luY3JlbWVudC1kZWNyZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgaW5jcmVtZW50QW5kRGVjcmVtZW50Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5jcmVtZW50LWRlY3JlbWVudC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmNzFiNGNmNGRjMzg3Mjc1YTI5ZGNl
M2MxMWY2Mzk4ZTkzMmZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtZGVjcmVtZW50Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPkNvcHlpbmcuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVz
dHMuaW5jcmVtZW50QW5kRGVjcmVtZW50ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vMSgpIHsgaW50IHggPSAwOyByZXR1cm4geCsrOyB9Ci0gICAg
ICAgIGludCBmb28yKCkgeyBpbnQgeCA9IDA7IHgrKzsgcmV0dXJuIHg7IH0KLSAgICAgICAgaW50
IGZvbzMoKSB7IGludCB4ID0gMDsgcmV0dXJuICsreDsgfQotICAgICAgICBpbnQgZm9vNCgpIHsg
aW50IHggPSAwOyArK3g7IHJldHVybiB4OyB9Ci0gICAgICAgIGludCBmb281KCkgeyBpbnQgeCA9
IDA7IHJldHVybiB4LS07IH0KLSAgICAgICAgaW50IGZvbzYoKSB7IGludCB4ID0gMDsgeC0tOyBy
ZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9vNygpIHsgaW50IHggPSAwOyByZXR1cm4gLS14OyB9
Ci0gICAgICAgIGludCBmb284KCkgeyBpbnQgeCA9IDA7IC0teDsgcmV0dXJuIHg7IH0KLSAgICBg
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28x
IiwgW10pLCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vMiIsIFtdKSwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCAxKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzYiLCBbXSks
IC0xKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vNyIsIFtdKSwgLTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb284IiwgW10pLCAtMSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvaW5jcmVtZW50LXNldHRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZkYmI3MzQwYWFjNGZkYjFkYWQyZWUyMjQ1ZDU1YjBhZWExOWUyMmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL2luY3JlbWVudC1zZXR0ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgaW5jcmVtZW50U2V0dGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW5jcmVtZW50LXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiOTQxNDRlM2MzZTY5NjdhNzJjNmRmZmVhMDBiNTAwNTNhNjY2NjAyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbmNyZW1lbnQtc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuaW5jcmVtZW50U2V0dGVy
ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3RydWN0IEZv
byB7Ci0gICAgICAgICAgICBpbnQgejsKLSAgICAgICAgICAgIGludCB3OwotICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXIoKSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9v
LnogPSAzOwotICAgICAgICAgICAgZm9vLncgPSAxOwotICAgICAgICAgICAgaW50IHZhbHVlID0g
Zm9vLncrKzsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSoxMDAgKyBmb28ueioxMCArIGZvby53
OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAxMDAgKyAzMCArIDIpOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2luZGV4LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjUwZTk0MjkxNTk5NjhkZWVkMTQ3YWY3ODc5NDU3YzJj
ZTMwMzlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHBvaW50ZXJJbmRleEdldHRlcgot
UEFTUyBwb2ludGVyR2V0dGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW5k
ZXgtZ2V0dGVyLXNldHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Yy
N2EzM2ViN2M2MjIyMGU4OThlMjZhMWIxZTViOWU5MmYxYjQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbmRl
eC1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRp
bWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVz
cy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wb2ludGVySW5kZXhH
ZXR0ZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShkZXZpY2UgaW50KiwgdWludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9w
ZXJhdG9yW10odGhyZWFkIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBj
aGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKHRocmVhZGdy
b3VwIGludCosIHVpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0
MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGNvbnN0YW50IGludCosIHVpbnQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMucG9pbnRlckdldHRlciA9IGFzeW5jICgp
ID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBv
cGVyYXRvci5mb28oZGV2aWNlIGludCopCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDU0MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKHRocmVhZCBpbnQq
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWRncm91cCBpbnQqKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9y
LmZvbyhjb25zdGFudCBpbnQqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvaW50LWJpdC1tYXRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZDZlZjA3YTdhYzMwZDE1YjIzNjI4MTIzNDk2YmZmNzgwZTZhNzE3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCww
IEBACi0KLVBBU1MgaW50Qml0QW5kCi1QQVNTIGludEJpdE9yCi1QQVNTIGludEJpdFhvcgotUEFT
UyBpbnRCaXROb3QKLVBBU1MgaW50TFNoaWZ0Ci1QQVNTIGludFJTaGlmdAotUEFTUyBpbnRTaW1w
bGVNYXRoCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1h
dGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9pbnQtYml0LW1hdGguaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3MDVjYzc1NTk4NjFiZTNmMDM1Mjg3MWEzMDUx
NGFhNDE3MjA1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWJpdC1tYXRoLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5U
ZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0
cy5pbnRCaXRBbmQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCBhLCBpbnQgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
JiBiOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSksIG1ha2VJbnQoNyldKSwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDY1NTM1KSwgbWFrZUludCg0MildKSwgNDIpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VJbnQo
LTcpXSksIC03KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDApOwotfQotCi13aGxz
bFRlc3RzLmludEJpdE9yID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBhIHwgYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDcp
OwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NTM1KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBt
YWtlSW50KC03KV0pLCAtMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4NTczMik7
Ci19Ci0KLXdobHNsVGVzdHMuaW50Qml0WG9yID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtl
SW50KDcpXSksIDYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NDkzKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoLTEpLCBtYWtlSW50KC03KV0pLCA2KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIp
XSksIDg1NzMyKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRCaXROb3QgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gfmE7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAt
Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDY1NTM1KV0pLCAtNjU1MzYpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDApXSksIC0xKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRMU2hpZnQgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIDw8IGI7Ci0gICAgICAgIH0KLSAgICBgOwot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMTI4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlVWlu
dCgyKV0pLCAyNjIxNDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0zMik7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX0KLQotd2hsc2xUZXN0cy5pbnRSU2hpZnQgPSBh
c3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCBh
LCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1
KSwgbWFrZVVpbnQoMildKSwgMTYzODMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0x
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMCksIG1ha2VVaW50KDMpXSksIDApOwotfQotCi13aGxzbFRlc3RzLmludFNp
bXBsZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSAiaW50IGZvbyhpbnQg
eCwgaW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwg
MTIpOwotICAgIHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggLSB5
OyB9IjsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpLCBtYWtlSW50
KDcpXSksIC0yKTsKLSAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVy
biB4ICogeTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDM1KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyks
IG1ha2VJbnQoLTUpXSksIC0zNSk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3Jp
cHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50LWxp
dGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvaW50
LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZmZmM4NzkwNmUxYTIxOGQyYzhjZGFiMWQyZmZjOWQwNGI5Yjg1ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2ludC1saXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0KLVBBU1MgdHdvSW50TGl0ZXJhbHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNhNjhiYzhhNGMyOGUwMzBmZTVjNGM0ZjJmN2Q1OGFkYjk5ZjMzMjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2ludC1saXRlcmFsLWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hM
U0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLnR3b0ludExpdGVyYWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA0MiA9
PSA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotfQotCi1ydW5UZXN0cyh3aGxz
bFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9q
cy90ZXN0LWhhcm5lc3MuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNTZjOTY4
MjQwOTk2Njc4NWFiMDE5OTFlMmM0ZWI4Y2RjNjVmYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3Qt
aGFybmVzcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDU0NSArMCwwIEBACi0vKiBUeXBlIFV0aWx0
aWVzICovCi0KLS8vIEZJWE1FOiBTdXBwb3J0IGFsbCBXSExTTCBzY2FsYXIgYW5kIHZlY3RvciB0
eXBlcy4KLS8vIEZJWE1FOiBTdXBwb3J0IHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLWNvbnN0IFR5
cGVzID0gT2JqZWN0LmZyZWV6ZSh7Ci0gICAgQk9PTDogU3ltYm9sKCJib29sIiksCi0gICAgSU5U
OiBTeW1ib2woImludCIpLAotICAgIFVDSEFSOiBTeW1ib2woInVjaGFyIiksCi0gICAgVUlOVDog
U3ltYm9sKCJ1aW50IiksCi0gICAgRkxPQVQ6IFN5bWJvbCgiZmxvYXQiKSwKLSAgICBGTE9BVDQ6
IFN5bWJvbCgiZmxvYXQ0IiksCi0gICAgRkxPQVQ0WDQ6IFN5bWJvbCgiZmxvYXQ0eDQiKSwKLSAg
ICBNQVhfU0laRTogNjQgLy8gVGhpcyBuZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW55
IHNpbmd1bGFyIFdITFNMIHR5cGUuCi19KTsKLQotZnVuY3Rpb24gaXNTY2FsYXIodHlwZSkKLXsK
LSAgICBzd2l0Y2godHlwZSkgewotICAgICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAgICAgICAg
Y2FzZSBUeXBlcy5GTE9BVDRYNDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y29udmVydFR5cGVUb0FycmF5VHlwZSh0eXBlKQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgVHlwZXMuQk9PTDoKLSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVzLklOVDoKLSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVzLlVDSEFSOgotICAgICAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXk7Ci0g
ICAgICAgIGNhc2UgVHlwZXMuVUlOVDoKLSAgICAgICAgICAgIHJldHVybiBVaW50MzJBcnJheTsK
LSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDQ6Ci0g
ICAgICAgIGNhc2UgVHlwZXMuRkxPQVQ0WDQ6Ci0gICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFy
cmF5OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZh
bGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb252ZXJ0VHlwZVRv
V0hMU0xUeXBlKHR5cGUpCi17Ci0gICAgc3dpdGNoKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBl
cy5CT09MOgotICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgY2FzZSBUeXBlcy5J
TlQ6Ci0gICAgICAgICAgICByZXR1cm4gImludCI7Ci0gICAgICAgIGNhc2UgVHlwZXMuVUNIQVI6
Ci0gICAgICAgICAgICByZXR1cm4gInVjaGFyIjsKLSAgICAgICAgY2FzZSBUeXBlcy5VSU5UOgot
ICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDoKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAgICBjYXNlIFR5cGVzLkZMT0FUNDoKLSAg
ICAgICAgICAgIHJldHVybiAiZmxvYXQ0IjsKLSAgICAgICAgY2FzZSBUeXBlcy5GTE9BVDRYNDoK
LSAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0eDQiOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFRZUEUgcHJvdmlkZWQhIik7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB3aGxzbEFyZ3VtZW50VHlwZSh0eXBlKQotewotICAgIGlmICh0eXBlID09
PSBUeXBlcy5CT09MKQotICAgICAgICByZXR1cm4gImludCI7Ci0gICAgcmV0dXJuIGNvbnZlcnRU
eXBlVG9XSExTTFR5cGUodHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbnZlcnRUb1dITFNMT3V0cHV0
VHlwZShjb2RlLCB0eXBlKQotewotICAgIGlmICh0eXBlICE9PSBUeXBlcy5CT09MKQotICAgICAg
ICByZXR1cm4gY29kZTsKLSAgICByZXR1cm4gYGludCgke2NvZGV9KWA7Ci19Ci0KLWZ1bmN0aW9u
IGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGNvZGUsIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgIT09
IFR5cGVzLkJPT0wpCi0gICAgICAgIHJldHVybiBjb2RlOwotICAgIHJldHVybiBgYm9vbCgke2Nv
ZGV9KWA7Ci19Ci0KLS8qIEhhcm5lc3MgQ2xhc3NlcyAqLwotCi1jbGFzcyBXZWJHUFVVbnN1cHBv
cnRlZEVycm9yIGV4dGVuZHMgRXJyb3IgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAg
ICAgIHN1cGVyKCJObyBHUFVEZXZpY2UgZGV0ZWN0ZWQhIik7Ci0gICAgfQotfTsKLQotY2xhc3Mg
RGF0YSB7Ci0gICAgLyoqCi0gICAgICogVXBsb2FkIHR5cGVkIGRhdGEgdG8gYW5kIHJldHVybiBh
IHdyYXBwZXIgb2YgYSBHUFVCdWZmZXIuCi0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRo
ZSBXSExTTCB0eXBlIHRvIGJlIHN0b3JlZCBpbiB0aGlzIERhdGEuCi0gICAgICogQHBhcmFtIHtO
dW1iZXIgb3IgQXJyYXlbTnVtYmVyXX0gdmFsdWVzIC0gVGhlIHJhdyBkYXRhIHRvIGJlIHVwbG9h
ZGVkLgotICAgICAqLwotICAgIGNvbnN0cnVjdG9yKGhhcm5lc3MsIHR5cGUsIHZhbHVlcywgaXNC
dWZmZXIgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlmIChoYXJuZXNzLmRldmljZSA9PT0gdW5k
ZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBPbmUgb3IgbW9yZSBzY2Fs
YXJzIGluIGFuIGFycmF5IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGFycmF5IHJlZmVyZW5j
ZS4KLSAgICAgICAgLy8gSG93ZXZlciwgdmVjdG9yIHR5cGVzIGFyZSBhbHNvIGNyZWF0ZWQgdmlh
IGFuIGFycmF5IG9mIHNjYWxhcnMuCi0gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGJ1ZmZl
cnMgb2YganVzdCBvbmUgdmVjdG9yIGFyZSB1c2FibGUgaW4gYSB0ZXN0IGZ1bmN0aW9uLgotICAg
ICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKQotICAgICAgICAgICAgdGhpcy5faXNCdWZm
ZXIgPSBpc1NjYWxhcih0eXBlKSA/IHRydWUgOiBpc0J1ZmZlcjsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB0aGlzLl9pc0J1ZmZlciA9IGZhbHNlOwotICAgICAgICAgICAgdmFsdWVzID0g
W3ZhbHVlc107Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKLSAgICAg
ICAgdGhpcy5fYnl0ZUxlbmd0aCA9IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKS5CWVRF
U19QRVJfRUxFTUVOVCAqIHZhbHVlcy5sZW5ndGg7Ci0KLSAgICAgICAgY29uc3QgW2J1ZmZlciwg
YXJyYXlCdWZmZXJdID0gaGFybmVzcy5kZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkKHsKLSAgICAg
ICAgICAgIHNpemU6IHRoaXMuX2J5dGVMZW5ndGgsCi0gICAgICAgICAgICB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFECi0gICAgICAgIH0pOwot
Ci0gICAgICAgIGNvbnN0IHR5cGVkQXJyYXkgPSBuZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUo
dHlwZSkpKGFycmF5QnVmZmVyKTsKLSAgICAgICAgdHlwZWRBcnJheS5zZXQodmFsdWVzKTsKLSAg
ICAgICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICAgICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyOwot
ICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm5zIEFuIEFycmF5QnVmZmVyIGNvbnRhaW5p
bmcgdGhlIGNvbnRlbnRzIG9mIHRoaXMgRGF0YS4KLSAgICAgKi8KLSAgICBhc3luYyBnZXRBcnJh
eUJ1ZmZlcigpCi0gICAgewotICAgICAgICBpZiAoaGFybmVzcy5kZXZpY2UgPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0KLSAg
ICAgICAgbGV0IHJlc3VsdDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGF3
YWl0IHRoaXMuX2J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgICAgIHRoaXMuX2J1ZmZl
ci51bm1hcCgpOwotICAgICAgICB9IGNhdGNoIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRGF0YSBlcnJvcjogVW5hYmxlIHRvIGdldCBBcnJheUJ1ZmZlciEiKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGdldCB0eXBlKCkgeyByZXR1cm4g
dGhpcy5fdHlwZTsgfQotICAgIGdldCBpc0J1ZmZlcigpIHsgcmV0dXJuIHRoaXMuX2lzQnVmZmVy
OyB9Ci0gICAgZ2V0IGJ1ZmZlcigpIHsgcmV0dXJuIHRoaXMuX2J1ZmZlcjsgfQotICAgIGdldCBi
eXRlTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aDsgfQotfQotCi1jbGFzcyBIYXJu
ZXNzIHsKLSAgICBjb25zdHJ1Y3RvciAoKQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZGVkID0g
ZmFsc2U7Ci0gICAgfQotCi0gICAgYXN5bmMgcmVxdWVzdERldmljZSgpCi0gICAgewotICAgICAg
ICB0cnkgewotICAgICAgICAgICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IG5hdmlnYXRvci5ncHUu
cmVxdWVzdEFkYXB0ZXIoKTsKLSAgICAgICAgICAgIHRoaXMuX2RldmljZSA9IGF3YWl0IGFkYXB0
ZXIucmVxdWVzdERldmljZSgpOwotICAgICAgICB9IGNhdGNoIHsKLSAgICAgICAgICAgIC8vIFdl
YkdQVSBpcyBub3Qgc3VwcG9ydGVkLgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBHUFVBZGFwdGVyUmVxdWVzdE9wdGlvbnMgYW5kIEdQVURldmljZURlc2NyaXB0b3IsCi0g
ICAgICAgICAgICAvLyBhbmQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRlc2NyaXB0b3IgdmFsaWRh
dGlvbiBlcnJvcnMgYW5kIG5vIFdlYkdQVSBzdXBwb3J0LgotICAgICAgICB9IGZpbmFsbHkgewot
ICAgICAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8qKgotICAgICAqIFJldHVybiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgV0hMU0wgZnVuY3Rpb24u
Ci0gICAgICogQHBhcmFtIHtUeXBlc30gdHlwZSAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgV0hM
U0wgZnVuY3Rpb24uCi0gICAgICogQHBhcmFtIHtTdHJpbmd9IGZ1bmN0aW9ucyAtIEN1c3RvbSBX
SExTTCBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRo
ZSBuYW1lIG9mIHRoZSBXSExTTCBmdW5jdGlvbiB3aGljaCBtdXN0IGJlIHByZXNlbnQgaW4gJ2Z1
bmN0aW9ucycuCi0gICAgICogQHBhcmFtIHtEYXRhIG9yIEFycmF5W0RhdGFdfSBhcmdzIC0gRGF0
YSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAgICAgKiBA
cmV0dXJucyB7VHlwZWRBcnJheX0gLSBBIHR5cGVkIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJldHVy
biB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KLSAgICAgKi8KLSAgICBhc3luYyBjYWxsVHlw
ZWRGdW5jdGlvbih0eXBlLCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi0gICAgeyAgIAotICAgICAg
ICBpZiAoIXRoaXMuX2xvYWRlZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRl
dmljZSBub3QgbG9hZGVkLiIpOwotCi0gICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVm
aW5lZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKCk7Ci0K
LSAgICAgICAgY29uc3QgW2FyZ3NMYXlvdXRzLCBhcmdzUmVzb3VyY2VCaW5kaW5ncywgYXJnc0Rl
Y2xhcmF0aW9ucywgZnVuY3Rpb25DYWxsQXJnc10gPSB0aGlzLl9zZXRVcEFyZ3VtZW50cyhhcmdz
KTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0QnVmZmVyKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9jbGVhclJlc3VsdHMoKQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5fcmVz
dWx0QnVmZmVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAg
c2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAgICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5D
T1BZX0RTVAotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhcmdzTGF5b3V0
cy51bnNoaWZ0KHsKLSAgICAgICAgICAgIGJpbmRpbmc6IDAsCi0gICAgICAgICAgICB2aXNpYmls
aXR5OiBHUFVTaGFkZXJTdGFnZS5DT01QVVRFLAotICAgICAgICAgICAgdHlwZTogInN0b3JhZ2Ut
YnVmZmVyIgotICAgICAgICB9KTsKLSAgICAgICAgYXJnc1Jlc291cmNlQmluZGluZ3MudW5zaGlm
dCh7Ci0gICAgICAgICAgICBiaW5kaW5nOiAwLAotICAgICAgICAgICAgcmVzb3VyY2U6IHsKLSAg
ICAgICAgICAgICAgICBidWZmZXI6IHRoaXMuX3Jlc3VsdEJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICBzaXplOiBUeXBlcy5NQVhfU0laRQotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAg
ICAgICBsZXQgZW50cnlQb2ludENvZGU7Ci0gICAgICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlm
dChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUodHlwZSl9W10gcmVzdWx0IDogcmVnaXN0ZXIo
dTApYCk7Ci0gICAgICAgIGxldCBjYWxsQ29kZSA9IGAke25hbWV9KCR7ZnVuY3Rpb25DYWxsQXJn
cy5qb2luKCIsICIpfSlgOwotICAgICAgICBjYWxsQ29kZSA9IGNvbnZlcnRUb1dITFNMT3V0cHV0
VHlwZShjYWxsQ29kZSwgdHlwZSk7Ci0gICAgICAgIGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJh
dGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgcmVzdWx0WzBdID0gJHtjYWxsQ29kZX07Ci19Ci1g
OwotICAgICAgICBjb25zdCBjb2RlID0gZnVuY3Rpb25zICsgZW50cnlQb2ludENvZGU7Ci0gICAg
ICAgIGF3YWl0IHRoaXMuX2NhbGxGdW5jdGlvbihjb2RlLCBhcmdzTGF5b3V0cywgYXJnc1Jlc291
cmNlQmluZGluZ3MpOwotICAgIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IGF3YWl0IHRoaXMuX3Jlc3VsdEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAgfSBj
YXRjaCB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkhhcm5lc3MgZXJyb3I6IFVuYWJs
ZSB0byByZWFkIHJlc3VsdHMhIik7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgYXJyYXkgPSBu
ZXcgKGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkpKHJlc3VsdCk7Ci0gICAgICAgIHRoaXMu
X3Jlc3VsdEJ1ZmZlci51bm1hcCgpOwotCi0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0K
LSAgICAvKioKLSAgICAgKiBDYWxsIGEgV0hMU0wgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSB2YWx1
ZSBvZiBhcmd1bWVudChidWZmZXIpcy4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnVuY3Rpb25z
IC0gQ3VzdG9tIFdITFNMIGNvZGUgdG8gYmUgdGVzdGVkLgotICAgICAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIFdITFNMIGZ1bmN0aW9uIHdoaWNoIG11c3QgYmUgcHJl
c2VudCBpbiAnZnVuY3Rpb25zJy4KLSAgICAgKiBAcGFyYW0ge0RhdGEgb3IgQXJyYXlbRGF0YV19
IGFyZ3MgLSBEYXRhIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGNhbGwgb2YgJ25hbWUn
LgotICAgICAqLwotICAgIGNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IFthcmdzTGF5b3V0cywgYXJnc1Jlc291cmNlQmlu
ZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFyZ3NdID0gdGhpcy5fc2V0VXBB
cmd1bWVudHMoYXJncyk7Ci0KLSAgICAgICAgbGV0IGVudHJ5UG9pbnRDb2RlID0gYAotW251bXRo
cmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJh
dGlvbnMuam9pbigiLCAiKX0pCi17Ci0gICAgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9p
bigiLCAiKX0pOwotfWA7Ci0gICAgICAgIGNvbnN0IGNvZGUgPSBmdW5jdGlvbnMgKyBlbnRyeVBv
aW50Q29kZTsKLSAgICAgICAgdGhpcy5fY2FsbEZ1bmN0aW9uKGNvZGUsIGFyZ3NMYXlvdXRzLCBh
cmdzUmVzb3VyY2VCaW5kaW5ncyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQXNzZXJ0IHRo
YXQgbWFsZm9ybWVkIHNoYWRlciBjb2RlIGRvZXMgbm90IGNvbXBpbGUuCi0gICAgICogQHBhcmFt
IHtTdHJpbmd9IHNvdXJjZSAtIEN1c3RvbSBjb2RlIHRvIGJlIHRlc3RlZC4KLSAgICAgKi8KLSAg
ICBhc3luYyBjaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhp
cy5fbG9hZGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBs
b2FkZWQuIik7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IoKTsKLSAgICAgICAgCi0g
ICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29t
cHV0ZSB2b2lkIF9jb21wdXRlX21haW4oKSB7IH1gOwotCi0gICAgICAgIGNvbnN0IGNvZGUgPSBz
b3VyY2UgKyBlbnRyeVBvaW50Q29kZTsKLQotICAgICAgICB0aGlzLl9kZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0
aGlzLl9kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAgICAKLSAg
ICAgICAgdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Ci0gICAgICAgICAgICBj
b21wdXRlU3RhZ2U6IHsKLSAgICAgICAgICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAgICAg
ICAgICAgICAgZW50cnlQb2ludDogIl9jb21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdGhpcy5fZGV2aWNlLnBvcEVy
cm9yU2NvcGUoKTsKLSAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQ29tcGlsZXIgZXJyb3I6IHNoYWRlciBjb2RlIGRpZCBub3QgZmFpbCB0byBjb21waWxl
ISIpOwotICAgIH0KLQotICAgIGdldCBkZXZpY2UoKSB7IHJldHVybiB0aGlzLl9kZXZpY2U7IH0K
LQotICAgIF9jbGVhclJlc3VsdHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jbGVhckJ1
ZmZlcikgewotICAgICAgICAgICAgdGhpcy5fY2xlYXJCdWZmZXIgPSB0aGlzLl9kZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgCi0gICAgICAgICAgICAgICAgc2l6ZTogVHlwZXMuTUFYX1NJWkUsIAotICAg
ICAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSB0aGlzLl9kZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAgICAgY29tbWFuZEVuY29kZXIuY29weUJ1
ZmZlclRvQnVmZmVyKHRoaXMuX2NsZWFyQnVmZmVyLCAwLCB0aGlzLl9yZXN1bHRCdWZmZXIsIDAs
IFR5cGVzLk1BWF9TSVpFKTsKLSAgICAgICAgdGhpcy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0
KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwotICAgIH0KLQotICAgIF9zZXRVcEFyZ3VtZW50
cyhhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXJncyBpbnN0YW5jZW9mIERhdGEpCi0gICAgICAgICAgICAgICAgYXJncyA9
IFthcmdzXTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFhcmdzKQotICAgICAgICAgICAgICAgIGFy
Z3MgPSBbXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEV4cGFuZCBiaW5kIGdyb3VwIHN0cnVj
dHVyZSB0byByZXByZXNlbnQgYW55IGFyZ3VtZW50cy4KLSAgICAgICAgbGV0IGFyZ3NEZWNsYXJh
dGlvbnMgPSBbXTsKLSAgICAgICAgbGV0IGZ1bmN0aW9uQ2FsbEFyZ3MgPSBbXTsKLSAgICAgICAg
bGV0IGFyZ3NMYXlvdXRzID0gW107Ci0gICAgICAgIGxldCBhcmdzUmVzb3VyY2VCaW5kaW5ncyA9
IFtdOwotCi0gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGFyZ3MubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbaSAtIDFdOwotICAgICAgICAgICAgYXJnc0Rl
Y2xhcmF0aW9ucy5wdXNoKGBkZXZpY2UgJHt3aGxzbEFyZ3VtZW50VHlwZShhcmcudHlwZSl9W10g
YXJnJHtpfSA6IHJlZ2lzdGVyKHUke2l9KWApOwotICAgICAgICAgICAgZnVuY3Rpb25DYWxsQXJn
cy5wdXNoKGNvbnZlcnRUb1dITFNMSW5wdXRUeXBlKGBhcmcke2l9YCArIChhcmcuaXNCdWZmZXIg
PyAiIiA6ICJbMF0iKSwgYXJnLnR5cGUpKTsKLSAgICAgICAgICAgIGFyZ3NMYXlvdXRzLnB1c2go
ewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IGksCi0gICAgICAgICAgICAgICAgdmlzaWJpbGl0
eTogR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwKLSAgICAgICAgICAgICAgICB0eXBlOiAic3RvcmFn
ZS1idWZmZXIiCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGFyZ3NSZXNvdXJjZUJpbmRp
bmdzLnB1c2goewotICAgICAgICAgICAgICAgIGJpbmRpbmc6IGksCi0gICAgICAgICAgICAgICAg
cmVzb3VyY2U6IHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBhcmcuYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICBzaXplOiBhcmcuYnl0ZUxlbmd0aAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFthcmdzTGF5b3V0
cywgYXJnc1Jlc291cmNlQmluZGluZ3MsIGFyZ3NEZWNsYXJhdGlvbnMsIGZ1bmN0aW9uQ2FsbEFy
Z3NdOwotICAgIH0KLQotICAgIGFzeW5jIF9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMs
IGFyZ3NSZXNvdXJjZUJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0ID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7Ci0gICAgICAgICAgICBi
aW5kaW5nczogYXJnc0xheW91dHMKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSB0aGlzLl9kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XSB9KTsKLQotICAgICAgICBjb25zdCBiaW5kR3JvdXAg
PSB0aGlzLl9kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKLSAgICAgICAgICAgIGxheW91dDogYmlu
ZEdyb3VwTGF5b3V0LAotICAgICAgICAgICAgYmluZGluZ3M6IGFyZ3NSZXNvdXJjZUJpbmRpbmdz
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2RldmljZS5wdXNoRXJyb3JTY29wZSgidmFs
aWRhdGlvbiIpOwotCi0gICAgICAgIGNvbnN0IHNoYWRlcnMgPSB0aGlzLl9kZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHsgY29kZTogY29kZSB9KTsKLSAgICAKLSAgICAgICAgY29uc3QgcGlwZWxp
bmUgPSB0aGlzLl9kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKLSAgICAgICAgICAgIGxh
eW91dDogcGlwZWxpbmVMYXlvdXQsCi0gICAgICAgICAgICBjb21wdXRlU3RhZ2U6IHsKLSAgICAg
ICAgICAgICAgICBtb2R1bGU6IHNoYWRlcnMsCi0gICAgICAgICAgICAgICAgZW50cnlQb2ludDog
Il9jb21wdXRlX21haW4iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5fZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
Ci0gICAgICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRl
UGFzcygpOwotICAgICAgICBwYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwotICAgICAgICBwYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICAgICAgcGFzc0VuY29kZXIuZW5kUGFzcygp
OwotICAgICAgICAKLSAgICAgICAgdGhpcy5fZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kRW5jb2Rlci5maW5pc2goKV0pOwotCi0gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdGhp
cy5fZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpOwotICAgIH0KLX0KLQotLyogSGFybmVz
cyBTZXR1cCAqLwotCi1jb25zdCBoYXJuZXNzID0gbmV3IEhhcm5lc3MoKTsKLWhhcm5lc3MucmVx
dWVzdERldmljZSgpOwotCi0vKiBHbG9iYWwgSGVscGVyIEZ1bmN0aW9ucyAqLwotCi0vKioKLSAq
IFRoZSBtYWtlX19fIGZ1bmN0aW9ucyBhcmUgd3JhcHBlcnMgYXJvdW5kIHRoZSBEYXRhIGNvbnN0
cnVjdG9yLgotICogVmFsdWVzIHBhc3NlZCBpbiBhcyBhbiBhcnJheSB3aWxsIGJlIHBhc3NlZCBp
biB2aWEgYSBkZXZpY2UtYWRkcmVzc2VkIHBvaW50ZXIgdHlwZSBpbiB0aGUgc2hhZGVyLgotICog
QHBhcmFtIHtCb29sZWFuLCBOdW1iZXIsIG9yIEFycmF5fSB2YWx1ZXMgLSBUaGUgZGF0YSB0byBi
ZSBzdG9yZWQgb24gdGhlIEdQVS4KLSAqIEByZXR1cm5zIEEgbmV3IERhdGEgb2JqZWN0IHdpdGgg
c3RvcmFnZSBhbGxvY2F0ZWQgdG8gc3RvcmUgdmFsdWVzLgotICovCi1mdW5jdGlvbiBtYWtlQm9v
bCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkJPT0wsIHZh
bHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VJbnQodmFsdWVzKQotewotICAgIHJldHVybiBuZXcg
RGF0YShoYXJuZXNzLCBUeXBlcy5JTlQsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VVY2hh
cih2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVDSEFSLCB2
YWx1ZXMpOwotfQotCi1mdW5jdGlvbiBtYWtlVWludCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5l
dyBEYXRhKGhhcm5lc3MsIFR5cGVzLlVJTlQsIHZhbHVlcyk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VG
bG9hdCh2YWx1ZXMpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FU
LCB2YWx1ZXMpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlbQXJyYXldfSB2
YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBvZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUgdG90YWwgbnVt
YmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0IGJlIGRpdmlzaWJsZSBieSA0LgotICogQSBzaW5nbGUg
NC1lbGVtZW50IGFycmF5IG9mIGZsb2F0cyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgZmxv
YXQ0IGFyZ3VtZW50IGluIHRoZSBzaGFkZXIuCi0gKi8KLWZ1bmN0aW9uIG1ha2VGbG9hdDQodmFs
dWVzKQotewotICAgIGNvbnN0IHJlc3VsdHMgPSBwcm9jZXNzQXJyYXlzKHZhbHVlcywgNCk7Ci0g
ICAgcmV0dXJuIG5ldyBEYXRhKGhhcm5lc3MsIFR5cGVzLkZMT0FUNCwgcmVzdWx0cy52YWx1ZXMs
IHJlc3VsdHMuaXNCdWZmZXIpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7QXJyYXkgb3IgQXJyYXlb
QXJyYXldfSB2YWx1ZXMgLSAxRCBvciAyRCBhcnJheSBvZiBmbG9hdCB2YWx1ZXMuCi0gKiBUaGUg
dG90YWwgbnVtYmVyIG9mIGZsb2F0IHZhbHVlcyBtdXN0IGJlIGRpdmlzaWJsZSBieSAxNi4KLSAq
IEEgc2luZ2xlIDE2LWVsZW1lbnQgYXJyYXkgb2YgZmxvYXRzIHdpbGwgYmUgdHJlYXRlZCBhcyBh
IHNpbmdsZSBmbG9hdDR4NCBhcmd1bWVudCBpbiB0aGUgc2hhZGVyLgotICogVGhpcyBzaG91bGQg
Zm9sbG93IHRoZSBnbE1hdHJpeC9PcGVuR0wgbWV0aG9kIG9mIHN0b3JpbmcgNHg0IG1hdHJpY2Vz
LAotICogd2hlcmUgdGhlIHgsIHksIHogdHJhbnNsYXRpb24gY29tcG9uZW50cyBhcmUgdGhlIDEz
dGgsIDE0dGgsIGFuZCAxNXRoIGVsZW1lbnRzIHJlc3BlY3RpdmVseS4KLSAqLwotZnVuY3Rpb24g
bWFrZUZsb2F0NHg0KHZhbHVlcykKLXsKLSAgICBjb25zdCByZXN1bHRzID0gcHJvY2Vzc0FycmF5
cyh2YWx1ZXMsIDE2KTsKLSAgICByZXR1cm4gbmV3IERhdGEoaGFybmVzcywgVHlwZXMuRkxPQVQ0
WDQsIHJlc3VsdHMudmFsdWVzLCByZXN1bHRzLmlzQnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gcHJv
Y2Vzc0FycmF5cyh2YWx1ZXMsIG1pbmltdW1MZW5ndGgpCi17Ci0gICAgY29uc3Qgb3JpZ2luYWxM
ZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwotICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBmbG9hdDQg
aXMgdGlnaHRseSBwYWNrZWQuCi0gICAgLy8gV2hlbiBpbXBsZW1lbnRpbmcgb3RoZXIgdmVjdG9y
IHR5cGVzLCBhZGQgcGFkZGluZyBpZiBuZWVkZWQuCi0gICAgdmFsdWVzID0gdmFsdWVzLmZsYXQo
KTsKLSAgICBpZiAodmFsdWVzLmxlbmd0aCAlIG1pbmltdW1MZW5ndGggIT0gMCkKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG51bWJlciBvZiBlbGVtZW50cyBpbiBub24tc2NhbGFy
IHR5cGUhIik7Ci0gICAgCi0gICAgcmV0dXJuIHsgdmFsdWVzOiB2YWx1ZXMsIGlzQnVmZmVyOiBv
cmlnaW5hbExlbmd0aCA9PT0gMSB8fCB2YWx1ZXMubGVuZ3RoID4gbWluaW11bUxlbmd0aCB9Owot
fQotCi0vKioKLSAqIEBwYXJhbSB7U3RyaW5nfSBmdW5jdGlvbnMgLSBTaGFkZXIgc291cmNlIGNv
ZGUgdGhhdCBtdXN0IGNvbnRhaW4gYSBkZWZpbml0aW9uIGZvciAnbmFtZScuCi0gKiBAcGFyYW0g
e1N0cmluZ30gbmFtZSAtIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbSAnZnVuY3Rpb25z
Jy4KLSAqIEBwYXJhbSB7RGF0YSBvciBBcnJheVtEYXRhXX0gYXJncyAtIFRoZSBhcmd1bWVudHMg
dG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsIG9mICduYW1lJy4KLSAqIEByZXR1cm5zIEEgUHJvbWlz
ZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBjYWxsIHRvICduYW1lJyB3
aXRoICdhcmdzJy4KLSAqLwotYXN5bmMgZnVuY3Rpb24gY2FsbEJvb2xGdW5jdGlvbihmdW5jdGlv
bnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuICEhKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVk
RnVuY3Rpb24oVHlwZXMuQk9PTCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFz
eW5jIGZ1bmN0aW9uIGNhbGxJbnRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0g
ICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBlZEZ1bmN0aW9uKFR5cGVzLklOVCwgZnVu
Y3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNhbGxVY2hhckZ1
bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5l
c3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuVUNIQVIsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykp
WzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsVWludEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFt
ZSwgYXJncykKLXsKLSAgICByZXR1cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24o
VHlwZXMuVUlOVCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSlbMF07Ci19Ci0KLWFzeW5jIGZ1bmN0
aW9uIGNhbGxGbG9hdEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKLXsKLSAgICByZXR1
cm4gKGF3YWl0IGhhcm5lc3MuY2FsbFR5cGVkRnVuY3Rpb24oVHlwZXMuRkxPQVQsIGZ1bmN0aW9u
cywgbmFtZSwgYXJncykpWzBdOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0RnVuY3Rp
b24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQotewotICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5j
YWxsVHlwZWRGdW5jdGlvbihUeXBlcy5GTE9BVDQsIGZ1bmN0aW9ucywgbmFtZSwgYXJncykpLnN1
YmFycmF5KDAsIDQpOwotfQotCi1hc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0eDRGdW5jdGlvbihm
dW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxU
eXBlZEZ1bmN0aW9uKFR5cGVzLkZMT0FUNFg0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJh
cnJheSgwLCAxNik7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNoZWNrRmFpbChzb3VyY2UpIAotewot
ICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkpOwotfQot
Ci0vKioKLSAqIERvZXMgbm90IHJldHVybiBhIFByb21pc2UuIFRvIG9ic2VydmUgdGhlIHJlc3Vs
dHMgb2YgYSBjYWxsLCAKLSAqIGNhbGwgJ2dldEFycmF5QnVmZmVyJyBvbiB0aGUgRGF0YSBvYmpl
Y3QgcmV0YWluaW5nIHlvdXIgb3V0cHV0IGJ1ZmZlci4KLSAqLwotZnVuY3Rpb24gY2FsbFZvaWRG
dW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCi17Ci0gICAgaGFybmVzcy5jYWxsVm9pZEZ1
bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncyk7Ci19Ci0KLWNvbnN0IHdlYkdQVVByb21pc2VU
ZXN0ID0gKHRlc3RGdW5jLCBtc2cpID0+IHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
eyAKLSAgICAgICAgcmV0dXJuIHRlc3RGdW5jKCkuY2F0Y2goZSA9PiB7Ci0gICAgICAgIGlmICgh
KGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgIHRocm93
IGU7Ci0gICAgICAgIH0pOwotICAgIH0sIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKG9i
aikgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewot
ICAgICAgICBhd2FpdCBoYXJuZXNzLnJlcXVlc3REZXZpY2UoKTsKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBvYmopIHsKLSAgICAgICAgICAgICAgICBpZiAo
IW5hbWUuc3RhcnRzV2l0aCgiXyIpKSAKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2ViR1BV
UHJvbWlzZVRlc3Qob2JqW25hbWVdLCBuYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sZW5ndGgtc3RkbGliLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjc2Mjg2ZjM0MjA2ZmEzZjQ1NzFjOWM5YjkzNTY2MmU1Y2EzYmVkZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLQotUEFTUyB2ZWN0b3JJbmRleEFzc2lnbgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xlbmd0aC1zdGRsaWIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDA0NzQ0NDNkMGMyMWIwN2I1N2E4ODJjMGM5YTNmMDNlYjQxODk4OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbGVuZ3RoLXN0ZGxpYi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5MZW5ndGguPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3Rv
ckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbyhmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeDsK
LSAgICAgICAgICAgIHhbMF0gPSBhOwotICAgICAgICAgICAgeFsxXSA9IGI7Ci0gICAgICAgICAg
ICByZXR1cm4gbGVuZ3RoKHgpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGNvbnN0IGRhdGEg
PSBbCi0gICAgICAgIFtOYU4sIDEwXSwKLSAgICAgICAgWzEwLCBOYU5dLAotICAgICAgICBbMjAs
IDEwXSwKLSAgICAgICAgWzAsIDBdLAotICAgIF07Ci0KLSAgICBmb3IgKGNvbnN0IFt4LCB5XSBv
ZiBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9u
KHByb2dyYW0sICAiZm9vIiwgW21ha2VGbG9hdCh4KSwgbWFrZUZsb2F0KHkpXSk7Ci0gICAgICAg
IGlmIChpc05hTih4KSB8fCBpc05hTih5KSkgewotICAgICAgICAgICAgaWYgKCFpc05hTihyZXN1
bHQpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUmVzdWx0IHNob3VsZCBiZSBO
YU4uIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
cmVzdWx0LCBNYXRoLnNxcnQoeCp4ICsgeSp5KSwgZXBzaWxvbik7Ci0gICAgfQotfTsKLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xleGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY1MDJhZmNkY2FiMGFhYzE0MGMwMjZkYjExYTk4NGFjMWE4ODEyYTIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2xleGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQot
UEFTUyBsZXhpbmdLZXl3b3JkTGlrZUlkZW50aWZpZXJzCi1QQVNTIGtleXdvcmRzQXNJZGVudGlm
aWVycwotUEFTUyBjb21tZW50cwotUEFTUyBvcGVyYXRvck5hbWVzCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sZXhpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sZXhpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwM2Y5MDM3
YmI5OTVmMjllYzg0MWNiNGJkOTQxOWVjM2IzMWY0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbGV4aW5nLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotY29uc3Qga2V5d29yZHMgPSBbCi0gICAg
InN0cnVjdCIKLSAgICAsICJ0eXBlZGVmIgotICAgICwgImVudW0iCi0gICAgLCAib3BlcmF0b3Ii
Ci0gICAgLCAiaWYiCi0gICAgLCAiZWxzZSIKLSAgICAsICJjb250aW51ZSIKLSAgICAsICJicmVh
ayIKLSAgICAsICJzd2l0Y2giCi0gICAgLCAiY2FzZSIKLSAgICAsICJkZWZhdWx0IgotICAgICwg
ImZhbGx0aHJvdWdoIgotICAgICwgImZvciIKLSAgICAsICJ3aGlsZSIKLSAgICAsICJkbyIKLSAg
ICAsICJyZXR1cm4iCi0gICAgLCAibnVsbCIKLSAgICAsICJ0cnVlIgotICAgICwgImZhbHNlIgot
ICAgICwgImNvbnN0YW50IgotICAgICwgImRldmljZSIKLSAgICAsICJ0aHJlYWRncm91cCIKLSAg
ICAsICJ0aHJlYWQiCi0gICAgLCAic3BhY2UiCi0gICAgLCAidmVydGV4IgotICAgICwgImZyYWdt
ZW50IgotICAgICwgImNvbXB1dGUiCi0gICAgLCAibnVtdGhyZWFkcyIKLSAgICAsICJTVl9JbnN0
YW5jZUlEIgotICAgICwgIlNWX1ZlcnRleElEIgotICAgICwgIlBTSVpFIgotICAgICwgIlNWX1Bv
c2l0aW9uIgotICAgICwgIlNWX0lzRnJvbnRGYWNlIgotICAgICwgIlNWX1NhbXBsZUluZGV4Igot
ICAgICwgIlNWX0lubmVyQ292ZXJhZ2UiCi0gICAgLCAiU1ZfVGFyZ2V0IgotICAgICwgIlNWX0Rl
cHRoIgotICAgICwgIlNWX0NvdmVyYWdlIgotICAgICwgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiCi0g
ICAgLCAiU1ZfR3JvdXBJRCIKLSAgICAsICJTVl9Hcm91cEluZGV4IgotICAgICwgIlNWX0dyb3Vw
VGhyZWFkSUQiCi0gICAgLCAiYXR0cmlidXRlIgotICAgICwgInJlZ2lzdGVyIgotICAgICwgInNw
ZWNpYWxpemVkIgotICAgICwgIm5hdGl2ZSIKLSAgICAsICJyZXN0cmljdGVkIgotICAgICwgIl8i
Ci0gICAgLCAiYXV0byIKLSAgICAsICJwcm90b2NvbCIKLSAgICAsICJjb25zdCIKLSAgICAsICJz
dGF0aWMiCi0gICAgLCAibm9pbnRlcnBvbGF0aW9uIgotICAgICwgIm5vcGVyc3BlY3RpdmUiCi0g
ICAgLCAidW5pZm9ybSIKLSAgICAsICJjZW50cm9pZCIKLSAgICAsICJzYW1wbGUiCi1dOwotCi1j
b25zdCBzdWZmaXhlcyA9IFsiZm9vIiwgIjEzMzciLCAiX2ZvbyJdOwotCi13aGxzbFRlc3RzLmxl
eGluZ0tleXdvcmRMaWtlSWRlbnRpZmllcnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgZm9yIChjb25z
dCBrZXl3b3JkIG9mIGtleXdvcmRzKSB7Ci0gICAgICAgIGZvciAoY29uc3Qgc3VmZml4IG9mIHN1
ZmZpeGVzKSB7Ci0gICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBrZXl3b3JkICsgc3Vm
Zml4OwotICAgICAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgICAgICAgICBpbnQg
Zm9vKCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgJHt2YXJpYWJsZU5hbWV9ID0gNDI7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiAke3ZhcmlhYmxlTmFtZX07Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYDsKLQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIDQyKTsKLSAgICAgICAgfQotICAg
IH0KLQotfTsKLQotd2hsc2xUZXN0cy5rZXl3b3Jkc0FzSWRlbnRpZmllcnMgPSBhc3luYyAoKSA9
PiB7Ci0KLSAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHMpIHsKLSAgICAgICAgY29u
c3QgdmFyaWFibGVOYW1lID0ga2V5d29yZDsKLSAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAgICAgICAgICAgIGludCAke3ZhcmlhYmxlTmFt
ZX0gPSA0MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYDsKLSAgICAgICAgYXdhaXQgY2hlY2tG
YWlsKHByb2dyYW0pOwotICAgIH0KLX07Ci0KLXdobHNsVGVzdHMuY29tbWVudHMgPSBhc3luYyAo
KSA9PiB7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgLyoKLSAgICBgKTsKLSAgICBh
d2FpdCBjaGVja0ZhaWwoYAotICAgICAgICAqLwotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tG
YWlsKGAKLSAgICAgICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIHJldHVybiA0LyoqLzI7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLQotfTsKLQotd2hsc2xUZXN0cy5vcGVyYXRvck5hbWVzID0gYXN5
bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiQoRm9vKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiMo
Rm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAg
IGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IG9wZXJhdG9yLkAoRm9vKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAg
ICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBG
b28gewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG9wZXJhdG9yLiolKEZvbykgewotICAgICAg
ICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICBpbnQgb3BlcmF0b3ImJihpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAg
IHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAK
LSAgICAgICAgYm9vbCBvcGVyYXRvcnx8KGludCB4LCBpbnQgeSkgewotICAgICAgICAgICAgcmV0
dXJuIDQyOwotICAgICAgICB9Ci0gICAgYCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xpdGVyYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFs
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMjU2YzVjYjY3
MzdjNWU3OWIzZDRjMGZmYjg2MTY5MTBhYWU0OWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxpdGVyYWxz
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9saXRlcmFscy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBhNjQ2MWIyYjNhYTc2MjY3MDRkZThlZTdiMzc4ZWMwYzA2YTljZWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXgu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13
aGxzbFRlc3RzLmxpdGVyYWxzID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBpbnQgYSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtMTA7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW50IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMTA7
Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGMoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIC4xOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gMS45OwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLS4xOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGcoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTEuOTsKLSAgICAgICAgfQotICAg
ICAgICBpbnQgaCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAweGI0ZEIzM0Y7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW50IGkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
LTB4YjRkQjMzRjsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC0xMCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJiIiwgW10pLCAxMCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgICJjIiwgW10pLCAw
KTsKLQotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICAiZCIsIFtdKSwgMC4xLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDEuOSwgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJmIiwgW10pLCAtMC4xLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImciLCBbXSksIC0xLjksIGVwc2ls
b24pOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ICJoIiwgW10pLCAweGI0ZEIzM0YpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICAiaSIsIFtdKSwgLTB4YjRkQjMzRik7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5YmEzMzE3ZWU3MDRjZmYyZmI2MDQyZjMyNGZmMjIxOWU1MjFiODU3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9sb2dpY2FsLW5lZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvZ2ljYWxOZWdhdGlvbgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvZ2ljYWwtbmVnYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjQwMGIwMTBhZGFiMGNmNmEwOTg3OTJmMmZjNzZmZjg2Mjk5ODliYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbG9naWNhbC1uZWdhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+
Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5MdmFsdWVzLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmxvZ2ljYWxOZWdhdGlvbiA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSAiYm9vbCBmb28oYm9vbCB4KSB7IHJl
dHVybiAheDsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUJvb2wodHJ1ZSldKSwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKGZhbHNl
KV0pLCB0cnVlKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWU3ODQ5MjJlMmVlY2M2Yzcw
OWY2MTgwZjY4M2E5NmNjNGUwZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1icmVhay5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGYyNjQzY2ExNTU5M2I3MzA2NzVkY2VkZDI3NzNjZDNiMTcyZmM2ZjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9z
aXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0K
LQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1
bHQ7Ci0KLSAgICBib29sIGIgPSB0cnVlOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDEwOyAo
aSA9IGkgKyAxLCBzaGFkZSA9IHNoYWRlICsgMS4wKSkgewotICAgICAgICBpZiAoYikgewotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFkZSArIDEuMDsK
LSAgICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hh
ZGUgPSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBm
cmFnbWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2
ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAs
IGZvcm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtz
aGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25z
dCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0
MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0
ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5w
dXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBy
ZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
KTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9
IDAuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAo
KTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBy
ZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZs
b2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVy
QmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRH
cm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmlu
ZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qg
c3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAg
ICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5E
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJl
bnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJl
LmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBn
OiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2ht
ZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xl
YXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25z
dCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5k
R3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRl
eEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNh
OTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtY29udGludWUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjNWUyMTM5ODEwOWViMmY3ZjcyNjZlNTUxZGY4NDYzYjZmNzNiMWY1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9sb29wcy1jb250aW51ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBv
c2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19
Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVz
dWx0OwotCi0gICAgYm9vbCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsg
aSA9IGkgKyAxKSB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBzaGFkZSA9IHNoYWRlICsgMS4wOwotICAgIH0KLQotICAgIHJlc3Vs
dC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0
KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdt
ZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3Ry
aXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1
bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4
dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNv
bG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAg
Y29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwg
b2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBm
b3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0
cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0
dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwg
ZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29s
b3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEs
IGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygp
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0g
PSAwLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxOV0gPSAwLjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBf
V1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihy
ZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlC
dWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3Qg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVm
ZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsK
LSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9
IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBC
aW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5n
czogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9y
ID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXco
KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9Owot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVW
aWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9y
ZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQg
PSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVu
dHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd0JsYWNr
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9sb29wcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3Bz
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2
YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tn
cm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1ODRkMWQ1MTg4M2I0Y2E2
MmY2Yzg5NzQ3ODMxZmYwMTVhOGQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMtc3BlYy10ZXN0cy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBkb1doaWxl
Ci1QQVNTIHNpbXBsZVdoaWxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9sb29wcy1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbG9vcHMt
c3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM0OTE5OGY4
YWFhYzNkY2Y0YzIzOWQ4NWQyYzBmMjk2MDI3NTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy1zcGVj
LXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNv
bnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMuZG9XaGlsZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28xKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
bnQgeSA9IDc7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdoaWxlICh4IDwgMTApOwotICAgICAg
ICAgICAgcmV0dXJuIHk7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoaW50IHgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGludCB5ID0gNzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgICAgICB5ID0gODsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hp
bGUgKHkgPT0gNyk7Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgICAgICBp
bnQgZm9vMyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHN1bSA9IDA7Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gMTEpIHsKLSAgICAgICAgICAg
ICAgICAgICAgeCA9IDE1OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3VtID0gc3VtICsgeDsKLSAgICAgICAgICAgICAg
ICB4ID0geCArIDE7Ci0gICAgICAgICAgICB9IHdoaWxlICh4IDwgMTMpOwotICAgICAgICAgICAg
cmV0dXJuIHN1bTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEiLCBbbWFrZUludCgxKV0pLCA4KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMSIsIFttYWtl
SW50KDExKV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vMiIsIFttYWtlSW50KDEpXSksIDgpOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28zIiwgW21ha2VJbnQoOSldKSwgMTkpOwot
fQotCi13aGxzbFRlc3RzLnNpbXBsZVdoaWxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJv
Z3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAg
d2hpbGUgKHggPCAxMykKLSAgICAgICAgICAgICAgICB4ID0geCAqIDI7Ci0gICAgICAgICAgICBy
ZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpXSksIDE2KTsKLX0KLQotcnVu
VGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9sb29wcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xvb3BzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzFlNWI4MWY4YTg0
ZDQ5MTE2NmQ3NzAwNDEyMzNiNjNjZWM1YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvb3BzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3Qg
VmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKLSAgICBmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0
ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkg
PCAxMDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIHNoYWRlID0gc2hhZGUgKyAwLjE7Ci0gICAgfQot
Ci0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgcmVzdWx0LnNoYWRlID0gc2hh
ZGU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJl
dHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0
cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFj
ZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9y
bWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9
XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51
bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07Ci0gICAgY29uc3QgYXR0cmli
dXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBjb25zdCBpbnB1dDAgPSB7c3Ry
aWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAgICBjb25zdCBpbnB1dHMgPSBb
aW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9
OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3ti
aW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OwotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBX
cml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs0XSA9IDAuMTsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAwLjE7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDAuMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJy
YXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBidWZm
ZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjog
MSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0
cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3Rv
cmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29s
b3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVy
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIw
XSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9sb3RzLW9mLWxvY2FsLXZhcmlhYmxlcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNzBmZmQ0ZGU2MDdiMmEwMDNlZmM3
NDdkMjhmZDQ4YjQxYzVhOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xvdHMtb2YtbG9jYWwtdmFyaWFibGVz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGxvdHNP
ZkxvY2FsVmFyaWFibGVzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9s
b3RzLW9mLWxvY2FsLXZhcmlhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2xv
dHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU1NzU2ZjM5MjcwNzQ0NDFhYzRiYzNhN2NkODRlMWJkNzk2ODgxYmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2xvdHMtb2YtbG9jYWwtdmFyaWFibGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPkxvdHMgb2YgbG9jYWwgdmFy
aWFibGVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmxvdHNPZkxv
Y2FsVmFyaWFibGVzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgc3JjID0gImludCBzdW0oKSB7
XG4iOwotICAgIHNyYyArPSAiICAgIGludCBpID0gMDtcbiI7Ci0gICAgbGV0IHRhcmdldCA9IDA7
Ci0gICAgY29uc3QgbnVtVmFycyA9IDUwOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVmFy
czsgaSsrKSB7Ci0gICAgICAgIHNyYyArPSBgICAgaSA9ICR7aX07XG5gOwotICAgICAgICBzcmMg
Kz0gYCAgIGludCBWJHtpfSA9IChpICsgMykgKiAoaSArIDMpO1xuYDsKLSAgICAgICAgdGFyZ2V0
ICs9IChpICsgMykgKiAoaSArIDMpOwotICAgIH0KLSAgICBzcmMgKz0gIiAgICBpbnQgcmVzdWx0
ID0gMDtcbiI7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1WYXJzOyBpKyspIHsKLSAgICAg
ICAgc3JjICs9IGAgICAgcmVzdWx0ICs9IFYke2l9O1xuYDsKLSAgICB9Ci0gICAgc3JjICs9ICIg
ICAgcmV0dXJuIHJlc3VsdDtcbiI7Ci0gICAgc3JjICs9ICJ9IjsKLSAgICBsZXQgcHJvZ3JhbSA9
IHNyYzsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
c3VtIiwgW10pLCB0YXJnZXQpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzYxY2VjMmI5MTZiNmVkZjg3
MTRkMmUwMGE5MmU3ZThhZmEzNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2x2YWx1ZXMtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1MgbFZhbHVlcwotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbHZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL2x2YWx1ZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDBlOTgwNGQwNjM0YmY2MTBkYjA0ZDQ4OGM3ZTdhYjFhMzViY2I2Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bHZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Ci08dGl0bGU+THZhbHVlcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9Impz
L3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy5sVmFsdWVzID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9
IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJih4KyspOwotICAgICAgICAgICAgcmV0
dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAg
ICAgICB0aHJlYWQgaW50KiB5ID0gJigrK3gpOwotICAgICAgICAgICAgcmV0dXJuICp5OwotICAg
ICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBmb28o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQg
aW50KiB5ID0gJih4ID0gMyk7Ci0gICAgICAgICAgICByZXR1cm4gKnk7Ci0gICAgICAgIH0KLSAg
ICBgKTsgCi0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAm
MzsKLSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICBpbnQgYmFyKGludCB4KSB7Ci0gICAgICAgICAgICByZXR1
cm4geCArIDE7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAmYmFyKDMpOwot
ICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eCA9IDA7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJig3LCB4KTsKLSAgICAgICAgICAg
IHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOwotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0g
ICAgICAgIGVudW0gRGF5cyB7Ci0gICAgICAgICAgICBNb25kYXksCi0gICAgICAgICAgICBUdWVz
ZGF5Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludCB4ID0gMDsKLSAgICAgICAgICAgIHRocmVhZCBpbnQqIHkgPSAmKERheXMuTW9uZGF5KTsK
LSAgICAgICAgICAgIHJldHVybiAqeTsKLSAgICAgICAgfQotICAgIGApOyAKLSAgICBhd2FpdCBj
aGVja0ZhaWwoYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhy
ZWFkIGJvb2wqIHkgPSAmKHRydWUgJiYgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuICp5Owot
ICAgICAgICB9Ci0gICAgYCk7IAotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBm
b28oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJlYWQgYm9vbCogeSA9ICYoIXRydWUpOwot
ICAgICAgICAgICAgcmV0dXJuICp5OwotICAgICAgICB9Ci0gICAgYCk7IAotICAgIGNvbnN0IHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eCA9IDM7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiB5ID0gJng7Ci0gICAgICAgICAgICByZXR1
cm4gKnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMTEyYTNjZDZjNjY1M2Y4YWI3ODU1
YzlkYTFiMmVlYTFiY2NlYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVz
dHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgbWFr
ZUFycmF5UmVmRnJvbUFycmF5UmVmCi1QQVNTIG1ha2VBcnJheVJlZkZyb21Mb2NhbAotUEFTUyBt
YWtlQXJyYXlSZWZGcm9tUG9pbnRlcgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjNkY2I2YmZlNTUwZDU3NzE3NzkzNTNjNWQzYTA5NjgwNjRmMTA2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0
IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdo
bHNsVGVzdHMubWFrZUFycmF5UmVmRnJvbUFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGJhcih0aHJlYWQgaW50
W10gcmVmKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYmF6KHRocmVhZCBpbnRbXSBwdHIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJhcihAcHRyKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGludCBmb28oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGludCB4ID0gNDg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJheihAeCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21Mb2NhbCA9
IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBiYXIodGhy
ZWFkIGludFtdIHJlZikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZlswXTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHgg
PSA0ODsKLSAgICAgICAgICAgIHJldHVybiBiYXIoQHgpOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCA0OCk7Ci19Ci0KLXdobHNsVGVzdHMubWFrZUFycmF5UmVmRnJvbVBvaW50ZXIgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgYmFyKHRocmVhZCBpbnRb
XSByZWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWZbMF07Ci0gICAgICAgIH0K
LSAgICAgICAgaW50IGJheih0aHJlYWQgaW50KiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBiYXIoQHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGludCB4ID0gNDg7Ci0gICAgICAgICAgICByZXR1cm4gYmF6KCZ4KTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDgpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9tYWtlLWFycmF5LXJlZmVyZW5jZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21ha2UtYXJyYXktcmVmZXJlbmNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9tYWtlLWFycmF5LXJlZmVyZW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
a2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNk
OTg3Mzc2MTQ4N2JhNGFhZGYwYjVlZDg2NGM3OTIxOGQ3NWQyMGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
a2UtYXJyYXktcmVmZXJlbmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25z
dCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIHRlc3QxKCkgewotICAgIGludCB2YWx1ZSA9IDQyOwot
ICAgIHRocmVhZCBpbnRbXSBhcnJheSA9IEB2YWx1ZTsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9
IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMF0gIT0gNDIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXJyYXlbMTIwMjEzXSAhPSA0MikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXJyYXlbMF0gPSAxMzM3OwotICAgIGlmICh2YWx1ZSAhPSAx
MzM3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCB0ZXN0MigpIHsKLSAgICBpbnQgdmFsdWUgPSA0MjsKLSAgICB0aHJlYWQgaW50KiBwdHIgPSAm
dmFsdWU7Ci0gICAgaWYgKCpwdHIgIT0gNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHRocmVhZCBpbnRbXSBhcnJheSA9IEBwdHI7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSAxKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzBdICE9IDQyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFycmF5WzEyMzc0MjE3XSAhPSA0MikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgICpwdHIgPSA2NjY7Ci0gICAgaWYgKCpwdHIgIT0gNjY2KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlICE9IDY2NikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChhcnJheVswXSAhPSA2NjYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGFycmF5WzBdID0gNDI0MjsKLSAgICBpZiAoKnB0ciAhPSA0MjQyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlICE9IDQyNDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYXJyYXlbMF0gIT0gNDI0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChhcnJheS5sZW5ndGggIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgdGVzdDMoKSB7Ci0gICAgaW50WzQyXSB4OwotICAgIHRocmVhZCBp
bnRbNDJdKiBhcnJheVB0ciA9ICZ4OwotICAgIGlmIChhcnJheVB0ci0+bGVuZ3RoICE9IDQyKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB4WzQxXSA9IDY2NjsKLSAgICBpZiAoKCphcnJh
eVB0cilbNDFdICE9IDY2NikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFycmF5
UHRyKVswXSAhPSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0aHJlYWQgaW50W10g
YXJyYXkgPSBAeDsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhcnJheVswXSA9IDEzMzc7Ci0gICAgaWYgKHhbMF0gIT0gMTMzNykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgoKmFycmF5UHRyKVswXSAhPSAxMzM3KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB0ZXN0NCgp
IHsKLSAgICBpbnQgeCA9IDQyOwotICAgIHRocmVhZCBpbnQqIHB0ciA9ICZ4OwotCi0gICAgdGhy
ZWFkIGludFtdIGFycmF5ID0gQHB0cjsKLSAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDEpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhcnJheVswXSAhPSA0MikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGFycmF5WzEwMDAwMF0gIT0gNDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0K
LWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rl
cih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBpZiAo
IXRlc3QxKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdGVzdDIoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCF0ZXN0MygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IXRlc3Q0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJ1ZmZlclswXSA9IDE7Ci19Ci1gOwot
YXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29t
cHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZm
ZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gSW50MzJBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NS
Q307Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0
ZUFzeW5jKCk7Ci0gICAgY29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEludDMyQXJyYXko
YnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IDA7Ci0gICAg
YnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlf
RFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5k
aW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3Vw
TGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8g
e30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1
bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21t
YW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNl
dFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1
ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgbGV0IHJlc3Vs
dHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZlci51bm1h
cCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50
aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigp
IHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1
bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaWNlcy1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3MmQzZGQzMGY2ODRlOWQ1N2VjNTdiYWQ5ZjUyNGVjZTBm
M2FlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cmljZXMtc3BlYy10ZXN0cy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBidWlsdGluTWF0cmljZXMKLVBBU1Mg
bWF0cml4TXVsdGlwbGljYXRpb24KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL21hdHJpY2VzLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaWNlcy1zcGVjLXRlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4
OWM5ZGYzMWZiNDJlOTcyODIzMmM2OWU5MTMwNmMxNDU0ZDhjN2EuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpY2VzLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFy
bmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5idWlsdGluTWF0
cmljZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBh
WzBdWzBdID0gMTsKLSAgICAgICAgICAgIGFbMF1bMV0gPSAyOwotICAgICAgICAgICAgYVsxXVsw
XSA9IDM7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNDsKLSAgICAgICAgICAgIHJldHVybiBhWzBd
WzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MyBhOwotICAgICAgICAgICAgYVswXVswXSA9IDE7Ci0gICAgICAgICAgICBh
WzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMF1bMl0gPSAzOwotICAgICAgICAgICAgYVsxXVsw
XSA9IDQ7Ci0gICAgICAgICAgICBhWzFdWzFdID0gNTsKLSAgICAgICAgICAgIGFbMV1bMl0gPSA2
OwotICAgICAgICAgICAgcmV0dXJuIGFbMV1bMl07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQg
Zm9vMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYVswXVswXTsKLSAgICAgICAgfQotICAgICAgICBib29sIGZvbzQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBhOwotICAgICAgICAgICAgYVswXVswXSA9IDE7Ci0gICAg
ICAgICAgICBhWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGFbMV1bMF0gPSAzOwotICAgICAgICAg
ICAgYVsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAgYlsw
XVswXSA9IDU7Ci0gICAgICAgICAgICBiWzBdWzFdID0gNjsKLSAgICAgICAgICAgIGJbMV1bMF0g
PSA3OwotICAgICAgICAgICAgYlsxXVsxXSA9IDg7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9
IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCAy
OyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgYVtpXVtqXSArPSA0OwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhbGwoYSA9PSBiKTsKLSAg
ICAgICAgfQotICAgICAgICBib29sIGZvbzUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBhOwotICAgICAgICAgICAgYVswXSA9IGZsb2F0MigxLCAyKTsKLSAgICAgICAgICAgIGFb
MV0gPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiOwotICAgICAgICAgICAg
YlswXVswXSA9IDE7Ci0gICAgICAgICAgICBiWzBdWzFdID0gMjsKLSAgICAgICAgICAgIGJbMV1b
MF0gPSAzOwotICAgICAgICAgICAgYlsxXVsxXSA9IDQ7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
KGEgPT0gYik7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb282KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZmxvYXQyeDIgYTsKLSAgICAgICAgICAgIGFbMF1bMF0gPSAxOwotICAgICAgICAg
ICAgYVswXVsxXSA9IDI7Ci0gICAgICAgICAgICBhWzFdWzBdID0gMzsKLSAgICAgICAgICAgIGFb
MV1bMV0gPSA0OwotICAgICAgICAgICAgZmxvYXQyeDIgYjsKLSAgICAgICAgICAgIGJbMF1bMF0g
PSA1OwotICAgICAgICAgICAgYlswXVsxXSA9IDEwOwotICAgICAgICAgICAgYlsxXVswXSA9IDE4
OwotICAgICAgICAgICAgYlsxXVsxXSA9IDI0OwotICAgICAgICAgICAgYVswXSAqPSA1OwotICAg
ICAgICAgICAgYVsxXSAqPSA2OwotICAgICAgICAgICAgcmV0dXJuIGFsbChhID09IGIpOwotICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzcoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MyBhID0gZmxvYXQyeDMoZmxvYXQzKDMsIDQsIDUpLCBmbG9hdDMoNiwgNywgOCkpOwotICAg
ICAgICAgICAgcmV0dXJuIGFbMF1bMl07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIs
IFtdKSwgNik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vMyIsIFtdKSwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vNCIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNSIsIFtdKSwgdHJ1ZSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vNiIsIFtd
KSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vNyIsIFtdKSwgNSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE11bHRpcGxpY2F0
aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdDJ4
NCBtdWx0aXBseShmbG9hdDJ4MyB4LCBmbG9hdDN4NCB5KSB7Ci0gICAgICAgICAgICAvLyBDb3Bp
ZWQgYW5kIHBhc3RlZCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0gICAgICAgICAgICBmbG9h
dDJ4NCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHRbMF1bMF0gPSAwOwotICAgICAgICAgICAg
cmVzdWx0WzBdWzBdICs9IHhbMF1bMF0gKiB5WzBdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBd
WzBdICs9IHhbMF1bMV0gKiB5WzFdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzBdICs9IHhb
MF1bMl0gKiB5WzJdWzBdOwotICAgICAgICAgICAgcmVzdWx0WzBdWzFdID0gMDsKLSAgICAgICAg
ICAgIHJlc3VsdFswXVsxXSArPSB4WzBdWzBdICogeVswXVsxXTsKLSAgICAgICAgICAgIHJlc3Vs
dFswXVsxXSArPSB4WzBdWzFdICogeVsxXVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsxXSAr
PSB4WzBdWzJdICogeVsyXVsxXTsKLSAgICAgICAgICAgIHJlc3VsdFswXVsyXSA9IDA7Ci0gICAg
ICAgICAgICByZXN1bHRbMF1bMl0gKz0geFswXVswXSAqIHlbMF1bMl07Ci0gICAgICAgICAgICBy
ZXN1bHRbMF1bMl0gKz0geFswXVsxXSAqIHlbMV1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1b
Ml0gKz0geFswXVsyXSAqIHlbMl1bMl07Ci0gICAgICAgICAgICByZXN1bHRbMF1bM10gPSAwOwot
ICAgICAgICAgICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMF0gKiB5WzBdWzNdOwotICAgICAgICAg
ICAgcmVzdWx0WzBdWzNdICs9IHhbMF1bMV0gKiB5WzFdWzNdOwotICAgICAgICAgICAgcmVzdWx0
WzBdWzNdICs9IHhbMF1bMl0gKiB5WzJdWzNdOwotICAgICAgICAgICAgcmVzdWx0WzFdWzBdID0g
MDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzBdICogeVswXVswXTsKLSAgICAg
ICAgICAgIHJlc3VsdFsxXVswXSArPSB4WzFdWzFdICogeVsxXVswXTsKLSAgICAgICAgICAgIHJl
c3VsdFsxXVswXSArPSB4WzFdWzJdICogeVsyXVswXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVsx
XSA9IDA7Ci0gICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVswXSAqIHlbMF1bMV07Ci0g
ICAgICAgICAgICByZXN1bHRbMV1bMV0gKz0geFsxXVsxXSAqIHlbMV1bMV07Ci0gICAgICAgICAg
ICByZXN1bHRbMV1bMV0gKz0geFsxXVsyXSAqIHlbMl1bMV07Ci0gICAgICAgICAgICByZXN1bHRb
MV1bMl0gPSAwOwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMF0gKiB5WzBdWzJd
OwotICAgICAgICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMV0gKiB5WzFdWzJdOwotICAgICAg
ICAgICAgcmVzdWx0WzFdWzJdICs9IHhbMV1bMl0gKiB5WzJdWzJdOwotICAgICAgICAgICAgcmVz
dWx0WzFdWzNdID0gMDsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzBdICogeVsw
XVszXTsKLSAgICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzFdICogeVsxXVszXTsKLSAg
ICAgICAgICAgIHJlc3VsdFsxXVszXSArPSB4WzFdWzJdICogeVsyXVszXTsKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQyeDMgbWF0cml4MSgpIHsK
LSAgICAgICAgICAgIGZsb2F0MngzIHg7Ci0gICAgICAgICAgICB4WzBdWzBdID0gMjsKLSAgICAg
ICAgICAgIHhbMF1bMV0gPSAzOwotICAgICAgICAgICAgeFswXVsyXSA9IDU7Ci0gICAgICAgICAg
ICB4WzFdWzBdID0gNzsKLSAgICAgICAgICAgIHhbMV1bMV0gPSAxMTsKLSAgICAgICAgICAgIHhb
MV1bMl0gPSAxMzsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgICAgIGZs
b2F0M3g0IG1hdHJpeDIoKSB7Ci0gICAgICAgICAgICBmbG9hdDN4NCB5OwotICAgICAgICAgICAg
eVswXVswXSA9IDE3OwotICAgICAgICAgICAgeVswXVsxXSA9IDE5OwotICAgICAgICAgICAgeVsw
XVsyXSA9IDIzOwotICAgICAgICAgICAgeVswXVszXSA9IDI5OwotICAgICAgICAgICAgeVsxXVsw
XSA9IDMxOwotICAgICAgICAgICAgeVsxXVsxXSA9IDM3OwotICAgICAgICAgICAgeVsxXVsyXSA9
IDQxOwotICAgICAgICAgICAgeVsxXVszXSA9IDQzOwotICAgICAgICAgICAgeVsyXVswXSA9IDQ3
OwotICAgICAgICAgICAgeVsyXVsxXSA9IDUzOwotICAgICAgICAgICAgeVsyXVsyXSA9IDU5Owot
ICAgICAgICAgICAgeVsyXVszXSA9IDYxOwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZm9vMDAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHko
bWF0cml4MSgpLCBtYXRyaXgyKCkpWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzAxKCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4Migp
KVswXVsxXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28wMigpIHsKLSAgICAgICAgICAg
IHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMF1bMl07Ci0gICAgICAgIH0K
LSAgICAgICAgZmxvYXQgZm9vMDMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0
cml4MSgpLCBtYXRyaXgyKCkpWzBdWzNdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEw
KCkgewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsx
XVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMSgpIHsKLSAgICAgICAgICAgIHJl
dHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bMV07Ci0gICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMTIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4
MSgpLCBtYXRyaXgyKCkpWzFdWzJdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEzKCkg
ewotICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVsz
XTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vMDAiLCBbXSksIDE3ICogMiArIDMxICogMyArIDQ3ICogNSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MDEiLCBbXSksIDE5ICogMiArIDM3ICogMyArIDUzICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMDIiLCBbXSksIDIzICogMiArIDQx
ICogMyArIDU5ICogNSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMDMiLCBbXSksIDI5ICogMiArIDQzICogMyArIDYxICogNSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTAiLCBb
XSksIDE3ICogNyArIDMxICogMTEgKyA0NyAqIDEzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMSIsIFtdKSwgMTkgKiA3ICsgMzcgKiAx
MSArIDUzICogMTMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbzEyIiwgW10pLCAyMyAqIDcgKyA0MSAqIDExICsgNTkgKiAxMyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMiLCBb
XSksIDI5ICogNyArIDQzICogMTEgKyA2MSAqIDEzKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21h
dHJpeC0yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4
LTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmEzYjE2NTAyYWEwZjM0NzEzNTJiZDY3Zjc2NzlmMmQ2ZmRiMWRhYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bWF0cml4LTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLWJvb2wgYWxsRXF1YWwoZmxvYXQ0eDQgbWF0LCBmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSArIDEpIHsKLSAgICAgICAgZm9yICh1aW50
IGogPSAwOyBqIDwgNDsgaiA9IGogKyAxKSB7Ci0gICAgICAgICAgICBpZiAobWF0W2ldW2pdICE9
IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBm
bG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAw
OyBpIDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFs
dWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIGZpbGwodGhyZWFkIGZsb2F0NCogdmVjLCBmbG9hdCB2
YWx1ZSkKLXsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIGZvciAodWludCBpID0gMDsgaSA8IDQ7
IGkgPSBpICsgMSkgewotICAgICAgICByZXN1bHRbaV0gPSB2YWx1ZTsKLSAgICB9Ci0gICAgKnZl
YyA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBhbGxFcXVhbChmbG9hdDQg
dmVjLCBmbG9hdCB2YWx1ZSkKLXsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA0OyBpID0gaSAr
IDEpIHsKLSAgICAgICAgaWYgKHZlY1tpXSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEp
XQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVn
aXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAg
ZmxvYXQ0eDQgbWF0OwotICAgIGZpbGwoJm1hdCwgMSk7Ci0gICAgaWYgKCFhbGxFcXVhbChtYXQs
IDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDQgdmVjOwotICAgIGZpbGwoJnZlYywg
MSk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMsIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBm
bG9hdDQgdmVjMiA9IG11bChtYXQsIHZlYyk7Ci0gICAgaWYgKCFhbGxFcXVhbCh2ZWMyLCA0KSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQ0eDQgbWF0MiA9IG11bChtYXQsIG1hdCk7Ci0g
ICAgaWYgKCFhbGxFcXVhbChtYXQyLCA0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbWF0MiA9
IG11bChtYXQyLCBtYXQyKTsKLSAgICBpZiAoIWFsbEVxdWFsKG1hdDIsIDY0KSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYnVmZmVyW3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhy
ZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAgIGNv
bnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5
QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICBi
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7
Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlb
M10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBy
ZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RP
UkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9
OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiBy
ZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRp
bmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJp
bmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJp
bmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVm
ZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCg0LCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFw
UmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVsw
XSA9PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMV0gPT0gNAotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJB
cnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNF0gPT0gNQotICAg
ICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zs
b2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT0g
OCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgi
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1hbGlnbm1lbnQt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQz
MDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25t
ZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWFsaWdubWVudC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxODI0OGYyNzM0NDk2Njg4NDkzODczYmY2YzUzMzU1Yjc1OThmZTI3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtYWxpZ25tZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxOTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgQ29udGFpbmVyMngyIHsK
LSAgICBmbG9hdCB4OwotICAgIGZsb2F0MngyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0
IENvbnRhaW5lcjJ4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDJ4MyBtOwotICAgIGZsb2F0
IHk7Ci19Ci0KLXN0cnVjdCBDb250YWluZXIyeDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQy
eDQgbTsKLSAgICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVyM3gyIHsKLSAgICBmbG9h
dCB4OwotICAgIGZsb2F0M3gyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5l
cjN4MyB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdDN4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0K
LXN0cnVjdCBDb250YWluZXIzeDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQzeDQgbTsKLSAg
ICBmbG9hdCB5OwotfQotCi1zdHJ1Y3QgQ29udGFpbmVyNHgyIHsKLSAgICBmbG9hdCB4OwotICAg
IGZsb2F0NHgyIG07Ci0gICAgZmxvYXQgeTsKLX0KLQotc3RydWN0IENvbnRhaW5lcjR4MyB7Ci0g
ICAgZmxvYXQgeDsKLSAgICBmbG9hdDR4MyBtOwotICAgIGZsb2F0IHk7Ci19Ci0KLXN0cnVjdCBD
b250YWluZXI0eDQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQ0eDQgbTsKLSAgICBmbG9hdCB5
OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVy
MngyKGRldmljZSBDb250YWluZXIyeDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZs
b2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0u
bVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygx
LCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyMngzKGRldmljZSBDb250YWluZXIy
eDNbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0
ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRb
MV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9p
ZCBjb21wdXRlU2hhZGVyMng0KGRldmljZSBDb250YWluZXIyeDRbXSBpbnB1dCA6IHJlZ2lzdGVy
KHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0
WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQot
Ci1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gyKGRl
dmljZSBDb250YWluZXIzeDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10g
b3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVsw
XTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyM3gzKGRldmljZSBDb250YWluZXIzeDNbXSBp
bnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEp
KSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBp
bnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21w
dXRlU2hhZGVyM3g0KGRldmljZSBDb250YWluZXIzeDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwg
ZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0g
aW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVt
dGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgyKGRldmljZSBD
b250YWluZXI0eDJbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0
IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAg
ICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNv
bXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyNHgzKGRldmljZSBDb250YWluZXI0eDNbXSBpbnB1dCA6
IHJlZ2lzdGVyKHUwKSwgZGV2aWNlIGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0g
ICAgb3V0cHV0WzBdID0gaW5wdXRbMF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFsw
XS55OwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hh
ZGVyNHg0KGRldmljZSBDb250YWluZXI0eDRbXSBpbnB1dCA6IHJlZ2lzdGVyKHUwKSwgZGV2aWNl
IGZsb2F0W10gb3V0cHV0IDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgb3V0cHV0WzBdID0gaW5wdXRb
MF0ubVswXVswXTsKLSAgICBvdXRwdXRbMV0gPSBpbnB1dFswXS55OwotfQotYDsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7
Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2Jp
bmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGlu
ZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGlucHV0U2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDMyOwotICAgIGNvbnN0IG91dHB1dFNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiAyOwotCi0gICAgY29uc3QgdXBsb2FkQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBpbnB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3QgdXBsb2FkQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih1cGxvYWRCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB1cGxvYWRCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHVwbG9hZEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdXBsb2FkQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh1cGxvYWRCdWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgKytpKQotICAgICAg
ICB1cGxvYWRCdWZmZXJGbG9hdDMyQXJyYXlbaV0gPSBpOwotICAgIHVwbG9hZEJ1ZmZlci51bm1h
cCgpOwotCi0gICAgY29uc3QgaW5wdXRCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IGlucHV0U2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuU1RPUkFH
RX07Ci0gICAgY29uc3QgaW5wdXRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGlucHV0QnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBvdXRwdXRCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IG91dHB1dFNpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IG91dHB1dEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIob3V0cHV0QnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBEZXNj
cmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCByZXNvdXJjZToge2J1ZmZlcjogaW5wdXRCdWZmZXIsIHNpemU6IGlucHV0U2l6ZX19LCB7Ymlu
ZGluZzogMSwgcmVzb3VyY2U6IHtidWZmZXI6IG91dHB1dEJ1ZmZlciwgc2l6ZTogb3V0cHV0U2l6
ZX19XX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5k
R3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGxldCB0ZXN0cyA9IFsiY29tcHV0ZVNoYWRlcjJ4MiIs
ICJjb21wdXRlU2hhZGVyMngzIiwgImNvbXB1dGVTaGFkZXIyeDQiLCAiY29tcHV0ZVNoYWRlcjN4
MiIsICJjb21wdXRlU2hhZGVyM3gzIiwgImNvbXB1dGVTaGFkZXIzeDQiLCAiY29tcHV0ZVNoYWRl
cjR4MiIsICJjb21wdXRlU2hhZGVyNHgzIiwgImNvbXB1dGVTaGFkZXI0eDQiXTsKLSAgICBsZXQg
cmVzdWx0cyA9IFtdOwotICAgIGZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKLSAgICAgICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Y29tcHV0
ZVN0YWdlOiB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6IHRlc3R9LCBsYXlvdXQ6
IHBpcGVsaW5lTGF5b3V0fSk7Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgICAgIGNvbW1hbmRFbmNvZGVyLmNv
cHlCdWZmZXJUb0J1ZmZlcih1cGxvYWRCdWZmZXIsIDAsIGlucHV0QnVmZmVyLCAwLCBpbnB1dFNp
emUpOwotICAgICAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmUpOwotICAgICAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgx
LCAxLCAxKTsKLSAgICAgICAgY29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICAgICAg
Y29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgICAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgICAgICBjb25z
dCBvdXRwdXRBcnJheUJ1ZmZlciA9IGF3YWl0IG91dHB1dEJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsK
LSAgICAgICAgY29uc3Qgb3V0cHV0RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShvdXRw
dXRBcnJheUJ1ZmZlcik7Ci0gICAgICAgIHJlc3VsdHMucHVzaChvdXRwdXRGbG9hdDMyQXJyYXlb
MF0pOwotICAgICAgICByZXN1bHRzLnB1c2gob3V0cHV0RmxvYXQzMkFycmF5WzFdKTsKLSAgICAg
ICAgb3V0cHV0QnVmZmVyLnVubWFwKCk7Ci0gICAgfQotICAgIGxldCBleHBlY3RlZCA9IFsyLCA2
LCA0LCAxMiwgNCwgMTIsIDIsIDgsIDQsIDE2LCA0LCAxNiwgMiwgMTAsIDQsIDIwLCA0LCAyMF07
Ci0gICAgbGV0IGVycm9yID0gZmFsc2U7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXSAhPSBleHBlY3RlZFtpXSkg
ewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbXBhcmUtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MzYzFhYjM4ZmVmNzI4
MWJlMzAwNWEwMTc3NDdhZjIyNjQ4NTNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29tcGFyZS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLVBBU1MgbWF0cml4
TFQKLVBBU1MgbWF0cml4TFQyCi1QQVNTIG1hdHJpeExURQotUEFTUyBtYXRyaXhMVEUyCi1QQVNT
IG1hdHJpeExURTMKLVBBU1MgbWF0cml4R1QKLVBBU1MgbWF0cml4R1QyCi1QQVNTIG1hdHJpeEdU
RQotUEFTUyBtYXRyaXhHVEUyCi1QQVNTIG1hdHJpeEdURTMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWNvbXBhcmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjJiYjk2ODZhNDNjNWVjOTBkNDcwNGM0YzlkYzA5ZGVjODE3MjdjOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWNvbXBhcmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVCA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MigxMC4wLCAxMC4wLCAxMC4wLCAy
MC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYyID0gdjsKLSAgICAgICAg
ICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA8IHYyKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVDIg
PSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28o
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2
OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLSAgICAgICAgICAgIHYyWzBdWzBdIC09IDExLjA7
Ci0KLSAgICAgICAgICAgIGJvb2wyeDIgcmVzdWx0ID0gdiA8IHYyOwotICAgICAgICAgICAgcmV0
dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVz
dWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeExURSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4Migx
MC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0M3gy
IHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAgICAgIHJldHVybiBh
bGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdo
bHNsVGVzdHMubWF0cml4TFRFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0g
YAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4
MigxMC4wLCAxMC4wLCAxMC4wLCAyMC4wLCAyMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0
M3gyIHYyID0gdjsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhMVEUzID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyeDIgdjsKLSAgICAgICAgICAgIGZsb2F0MngyIHYyID0gdjsK
LSAgICAgICAgICAgIHYyWzBdWzBdIC09IDEuMDsKLQotICAgICAgICAgICAgYm9vbDJ4MiByZXN1
bHQgPSB2IDw9IHYyOwotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRbMF1bMF0gJiYgcmVzdWx0
WzBdWzFdICYmIHJlc3VsdFsxXVswXSAgJiYgcmVzdWx0WzFdWzFdOwotICAgICAgICB9Ci0gICAg
YDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAg
ImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEdUID0gYXN5bmMgKCkg
PT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAg
ICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gyKDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAs
IDIwLjApOwotICAgICAgICAgICAgZmxvYXQzeDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0g
MTAuMDsKLQotICAgICAgICAgICAgcmV0dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQotICAg
IGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwg
ICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhHVDIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2OwotICAgICAg
ICAgICAgdjJbMF1bMF0gKz0gMS4wOwotICAgICAgICAgICAgdjJbMF1bMV0gLT0gMS4wOwotICAg
ICAgICAgICAgdjJbMV1bMF0gLT0gMS4wOwotICAgICAgICAgICAgdjJbMV1bMV0gLT0gMS4wOwot
Ci0gICAgICAgICAgICBib29sMngyIHJlc3VsdCA9IHYgPiB2MjsKLSAgICAgICAgICAgIHJldHVy
biAhcmVzdWx0WzBdWzBdICYmIHJlc3VsdFswXVsxXSAmJiByZXN1bHRbMV1bMF0gICYmIHJlc3Vs
dFsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xU
ZXN0cy5tYXRyaXhHVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMTAu
MCwgMTAuMCwgMTAuMCwgMjAuMCwgMjAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDN4MiB2
MiA9IHY7Ci0gICAgICAgICAgICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gIWFu
eSh2ID49IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hs
c2xUZXN0cy5tYXRyaXhHVEUyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQzeDIgdiA9IGZsb2F0M3gy
KDEwLjAsIDEwLjAsIDEwLjAsIDIwLjAsIDIwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQz
eDIgdjIgPSB2OwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKHYgPj0gdjIpOwotICAgICAgICB9
Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeEdURTMgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiB2OwotICAgICAgICAgICAgZmxvYXQyeDIgdjIgPSB2Owot
ICAgICAgICAgICAgdjJbMF1bMF0gKz0gMS4wOwotCi0gICAgICAgICAgICBib29sMngyIHJlc3Vs
dCA9IHYgPj0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJlc3VsdFswXVswXSAmJiByZXN1bHRb
MF1bMV0gJiYgcmVzdWx0WzFdWzBdICAmJiByZXN1bHRbMV1bMV07Ci0gICAgICAgIH0KLSAgICBg
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAi
Zm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4
LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM2NDA1OGNkOTI2NDRlOTZhZTQ2YjE3NmNiOGM2MDA1NjY4MWIyYTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0KLVBBU1MgbWF0cml4Q29uc3RydWN0b3IKLVBBU1MgbWF0cml4Q29uc3RydWN0b3Iy
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0
b3JzLWxpc3Qtb2Ytc2NhbGFycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWNvbnN0cnVjdG9ycy1saXN0LW9mLXNjYWxhcnMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzhmYWM3OWQ2NjEzYzg1OGI3YmU2YmI4MjhjNDlj
NmZlMTJhOWQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2Nh
bGFycy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBs
aXN0T2ZTY2FsYXJzTWF0cml4Q29uc3RydWN0b3JzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWxpc3Qtb2Ytc2NhbGFycy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtbGlzdC1vZi1zY2Fs
YXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxY2UxZjQ3MGVmMzIxZjAw
YzA3MjY1ZjE5Yjc1OWZmNjJkYjcyMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3Rv
cnMtbGlzdC1vZi1zY2FsYXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90
aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxz
bFRlc3RzLmxpc3RPZlNjYWxhcnNNYXRyaXhDb25zdHJ1Y3RvcnMgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKDEsIDIsIDMsIDQpOwotICAgICAgICAgICAgcmV0
dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngzIG0gPSBmbG9hdDJ4MygxLCAyLCAzLCA0LCA1LCA2KTsKLSAgICAg
ICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGMoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4NCBtID0gZmxvYXQyeDQoMSwgMiwgMywgNCwgNSwg
NiwgNywgOCk7Ci0gICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQzeDIgbSA9IGZsb2F0M3gy
KDEsIDIsIDMsIDQsIDUsIDYpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0M3gzIG0g
PSBmbG9hdDN4MygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KTsKLSAgICAgICAgICAgIHJldHVy
biBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGYoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmbG9hdDN4NCBtID0gZmxvYXQzeDQoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
MTAsIDExLCAxMik7Ci0gICAgICAgICAgICByZXR1cm4gbVsxXVswXTsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBnKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQ0eDIgbSA9IGZsb2F0
NHgyKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgpOwotICAgICAgICAgICAgcmV0dXJuIG1bMV1bMF07
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgaCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZs
b2F0NHgzIG0gPSBmbG9hdDR4MygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
KTsKLSAgICAgICAgICAgIHJldHVybiBtWzFdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDR4NCBtID0gZmxvYXQ0eDQoMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYpOwotICAgICAg
ICAgICAgcmV0dXJuIG1bMV1bMF07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJhIiwgW10pLCAzLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAiYiIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImMiLCBbXSksIDUsIGVwc2lsb24p
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICJkIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZSIsIFtdKSwgNCwgZXBzaWxvbik7Ci0gICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImYi
LCBbXSksIDUsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJnIiwgW10pLCAzLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiaCIsIFtdKSwg
NCwgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgImkiLCBbXSksIDUsIGVwc2lsb24pOwotfQotCi0KLXJ1blRlc3RzKHdo
bHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmIyMjcxMTFlZmFiOGYwYjFiOThlYmQ4MTE4ZGI5N2EzNDk3MThiNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5tYXRyaXggY3Rvci48L3Rp
dGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvciA9
IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0M3gyIHYgPSBmbG9hdDN4MihmbG9hdDIoMS4wLCAyLjApLCBm
bG9hdDIoMy4wLCA0LjApLCBmbG9hdDIoNS4wLCA2LjApKTsKLSAgICAgICAgICAgIHJldHVybiB2
WzBdWzBdID09IDEuMCAmJiB2WzBdWzFdID09IDIuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzFd
WzBdID09IDMuMCAmJiB2WzFdWzFdID09IDQuMCAKLSAgICAgICAgICAgICAgICAmJiB2WzJdWzBd
ID09IDUuMCAmJiB2WzJdWzFdID09IDYuMDsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotd2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvcjIgPSBhc3luYyAoKSA9PiB7
Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAg
ICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMS4wLCAyLjAsIDMuMCwgNC4wLCA1LjAsIDYuMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdlswXVswXSA9PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCi0gICAg
ICAgICAgICAgICAgJiYgdlsxXVswXSA9PSAzLjAgJiYgdlsxXVsxXSA9PSA0LjAgCi0gICAgICAg
ICAgICAgICAgJiYgdlsyXVswXSA9PSA1LjAgJiYgdlsyXVsxXSA9PSA2LjA7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9z
Y3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0
cml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRk
ZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1hc3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTMxN2VlY2QzNTQ4NGIwNWM5NjRjMmNhZTE4MGEzZDcx
Y2RjMTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIGZpZWxkU2hvdWxkQmVOdWxsCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWdu
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LWFzc2lnbi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODc4MTc4YmI2YWJiNDIyYjFjNGJlZmZh
NTJlMTBlMWZjY2JkMDIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtaW5kZXgtYXNzaWduLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxvbmci
PgotPHRpdGxlPm1hdHJpeC1pbmRleC1hc3NpZ24tc3dpenpsZS48L3RpdGxlPgotPHNjcmlwdCBz
cmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVz
dHMgPSB7fTsKLQotd2hsc2xUZXN0cy5maWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsK
LSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0MngzIG1hdDsKLSAgICAgICAgICAgIG1hdFswXSA9IGZsb2F0MygxMC4wLCAyMC4wLCAz
MC4wKTsKLQotICAgICAgICAgICAgaWYgKCFhbGwobWF0WzBdID09IGZsb2F0MygxMC4wLCAyMC4w
LCAzMC4wKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBp
ZiAoIWFsbChtYXRbMF0ueHkgPT0gZmxvYXQyKDEwLjAsIDIwLjApKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmICghYWxsKG1hdFswXS55eCA9PSBmbG9h
dDIoMjAuMCwgMTAuMCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgbWF0WzBdLnh5ID0gZmxvYXQyKDEuMCwgMi4wKTsKLSAgICAgICAgICAgIGlmICghYWxs
KG1hdFswXS54eSA9PSBmbG9hdDIoMS4wLCAyLjApKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIG1hdFswXS55eC55eCA9IGZsb2F0MigxMDAuMCwgMjAwLjAp
OwotICAgICAgICAgICAgaWYgKCFhbGwobWF0WzBdLnh5ID09IGZsb2F0MigxMDAuMCwgMjAwLjAp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1pbmRleC1vcmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5YWZkYmQzZGI3Y2UxZjMwY2ZmNGJjNjljZTgxOGRhY2Fj
MzAzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIG1hdE11bAotUEFTUyBtYXRNdWwyCi1Q
QVNTIG1hdE11bDMKLVBBU1MgbWF0TXVsNAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbWF0cml4LWluZGV4LW9yZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDU5OTQ0MzJhOWY2N2FlMGZmODhmM2UxMWZiNmM0MjE4ODc2NjUwY2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1pbmRleC1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bWF0cml4LWluZGV4LW9yZGVyLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm1hdE11bCA9IGFzeW5jICgp
ID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAg
ICAgICAgIGZsb2F0MngzIGEgPSBmbG9hdDJ4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMoMSwg
MiwgMyksCi0gICAgICAgICAgICAgICAgZmxvYXQzKDQsIDUsIDYpCi0gICAgICAgICAgICApOwot
Ci0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxvYXQzeDIoCi0gICAgICAgICAgICAgICAgZmxv
YXQyKDcsIDgpLAotICAgICAgICAgICAgICAgIGZsb2F0Mig5LCAxMCksCi0gICAgICAgICAgICAg
ICAgZmxvYXQyKDExLCAxMikKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0M3gz
IHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQzeDMgZXhwZWN0ZWQgPSBm
bG9hdDN4MygKLSAgICAgICAgICAgICAgICBmbG9hdDMoMzksIDU0LCA2OSksCi0gICAgICAgICAg
ICAgICAgZmxvYXQzKDQ5LCA2OCwgODcpLAotICAgICAgICAgICAgICAgIGZsb2F0Myg1OSwgODIs
IDEwNSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICByZXR1cm4gYWxsKGV4cGVjdGVkID09
IHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNs
VGVzdHMubWF0TXVsMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAg
ICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIGEgPSBmbG9hdDJ4MigKLSAg
ICAgICAgICAgICAgICBmbG9hdDIoMSwgOCksCi0gICAgICAgICAgICAgICAgZmxvYXQyKDUsIDEy
KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoMjIsIDQ1
KTsKLQotICAgICAgICAgICAgZmxvYXQyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAg
ICAgZmxvYXQyIGV4cGVjdGVkID0gZmxvYXQyKDI0NywgNzE2KTsKLQotICAgICAgICAgICAgcmV0
dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLm1hdE11bDMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29u
c3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4
MiBhID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDEsIDIpLAotICAgICAgICAg
ICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgZmxvYXQy
eDIgYiA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAgIGZsb2F0Mig1LCA2KSwKLSAgICAgICAg
ICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGZsb2F0
MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQg
PSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9hdDIoMjMsIDM0KSwKLSAgICAgICAgICAg
ICAgICBmbG9hdDIoMzEsIDQ2KQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgcmV0dXJu
IGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBiYXIo
KSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBiID0gZmxvYXQyeDIoCi0gICAgICAgICAgICAgICAg
ZmxvYXQyKDEsIDIpLAotICAgICAgICAgICAgICAgIGZsb2F0MigzLCA0KQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgZmxvYXQyeDIgYSA9IGZsb2F0MngyKAotICAgICAgICAgICAgICAg
IGZsb2F0Mig1LCA2KSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNywgOCkKLSAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIHJlc3VsdCA9IG11bChhLCBiKTsKLQotICAgICAg
ICAgICAgZmxvYXQyeDIgZXhwZWN0ZWQgPSBmbG9hdDJ4MigKLSAgICAgICAgICAgICAgICBmbG9h
dDIoMTksIDIyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoNDMsIDUwKQotICAgICAgICAgICAg
KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFsbChleHBlY3RlZCA9PSByZXN1bHQpOwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiYmFyIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVz
dHMubWF0TXVsNCA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0Mng0IGEgPSBmbG9hdDJ4NCgKLSAgICAg
ICAgICAgICAgICBmbG9hdDQoMSwgMiwgMywgNCksCi0gICAgICAgICAgICAgICAgZmxvYXQ0KDUs
IDYsIDcsIDgpCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBmbG9hdDN4MiBiID0gZmxv
YXQzeDIoCi0gICAgICAgICAgICAgICAgZmxvYXQyKDksIDEwKSwKLSAgICAgICAgICAgICAgICBm
bG9hdDIoMTEsIDEyKSwKLSAgICAgICAgICAgICAgICBmbG9hdDIoMTMsIDE0KQotICAgICAgICAg
ICAgKTsKLQotICAgICAgICAgICAgZmxvYXQzeDQgcmVzdWx0ID0gbXVsKGEsIGIpOwotCi0gICAg
ICAgICAgICBmbG9hdDN4NCBleHBlY3RlZCA9IGZsb2F0M3g0KAotICAgICAgICAgICAgICAgIGZs
b2F0NCg1OSwgNzgsIDk3LCAxMTYpLAotICAgICAgICAgICAgICAgIGZsb2F0NCg3MSwgOTQsIDEx
NywgMTQwKSwKLSAgICAgICAgICAgICAgICBmbG9hdDQoODMsIDExMCwgMTM3LCAxNjQpCi0gICAg
ICAgICAgICApOwotCi0gICAgICAgICAgICByZXR1cm4gYWxsKGV4cGVjdGVkID09IHJlc3VsdCk7
Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3
MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL21hdHJpeC1tZW1vcnktbGF5b3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzEwMTA4NWEyNGFkZDU4YzAxOTdiZjA2MWYyN2M4ZWFiYTFiMTY5ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvbWF0cml4LW1lbW9yeS1sYXlvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0NHg0W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0
eDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKLSAgICByZXN1
bHRbMV0gPSBmbG9hdDQoNSwgNiwgNywgOCk7Ci0gICAgcmVzdWx0WzJdID0gZmxvYXQ0KDksIDEw
LCAxMSwgMTIpOwotICAgIHJlc3VsdFszXSA9IGZsb2F0NCgxMywgMTQsIDE1LCAxNik7Ci0KLSAg
ICBmbG9hdDR4NCBtYXQgPSBidWZmZXJbMF07Ci0KLSAgICBpZiAobWF0WzBdWzBdID09IDAKLSAg
ICAgICAgJiYgbWF0WzBdWzFdID09IDEKLSAgICAgICAgJiYgbWF0WzBdWzJdID09IDIKLSAgICAg
ICAgJiYgbWF0WzBdWzNdID09IDMKLQotICAgICAgICAmJiBtYXRbMV1bMF0gPT0gNAotICAgICAg
ICAmJiBtYXRbMV1bMV0gPT0gNQotICAgICAgICAmJiBtYXRbMV1bMl0gPT0gNgotICAgICAgICAm
JiBtYXRbMV1bM10gPT0gNwotCi0gICAgICAgICYmIG1hdFsyXVswXSA9PSA4Ci0gICAgICAgICYm
IG1hdFsyXVsxXSA9PSA5Ci0gICAgICAgICYmIG1hdFsyXVsyXSA9PSAxMAotICAgICAgICAmJiBt
YXRbMl1bM10gPT0gMTEKLQotICAgICAgICAmJiBtYXRbM11bMF0gPT0gMTIKLSAgICAgICAgJiYg
bWF0WzNdWzFdID09IDEzCi0gICAgICAgICYmIG1hdFszXVsyXSA9PSAxNAotICAgICAgICAmJiBt
YXRbM11bM10gPT0gMTUpIHsKLSAgICAgICAgYnVmZmVyWzBdID0gcmVzdWx0OwotICAgIH0KLX0K
LWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImNvbXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3Jh
Z2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
LSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE2OwotCi0gICAgY29uc3QgYnVmZmVyRGVzY3JpcHRv
ciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVmZmVyVXNh
Z2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVm
ZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsw
XSA9IDA7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFdID0gMTsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMl0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDM7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzRdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA1OwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzddID0g
NzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbOF0gPSA4OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVs5XSA9IDk7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEwOwotICAgIGJ1ZmZlckZs
b2F0MzJBcnJheVsxMV0gPSAxMTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMTI7Ci0g
ICAgYnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDEzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsx
NF0gPSAxNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTU7Ci0gICAgYnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBi
aW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVy
LCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rl
ci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsK
LSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3
YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAo
cmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PT0gMQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFy
cmF5WzFdID09PSAyCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMl0gPT09IDMKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PT0gNAotCi0gICAgICAgICYmIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbNF0gPT09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1
XSA9PT0gNgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzZdID09PSA3Ci0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbN10gPT09IDgKLQotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzhdID09PSA5Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbOV0gPT09
IDEwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTBdID09PSAxMQotICAgICAgICAm
JiByZXN1bHRzRmxvYXQzMkFycmF5WzExXSA9PT0gMTIKLQotICAgICAgICAmJiByZXN1bHRzRmxv
YXQzMkFycmF5WzEyXSA9PT0gMTMKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsxM10g
PT09IDE0Ci0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbMTRdID09PSAxNQotICAgICAg
ICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzE1XSA9PT0gMTYpCi0gICAgICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgcmVzdWx0c0J1ZmZl
ci51bm1hcCgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsK
LX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9t
YXRyaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM2MDJiYmJlNWUxM2Iw
MmRjNDMyODkxNzQ1N2Q3YTViNzJmZjFjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1ib29sIGFs
bEVxdWFsKGZsb2F0MngzIG1hdCwgZmxvYXQgdmFsdWUpCi17Ci0gICAgZm9yICh1aW50IGkgPSAw
OyBpIDwgMjsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGZvciAodWludCBqID0gMDsgaiA8IDM7IGog
PSBqICsgMSkgewotICAgICAgICAgICAgaWYgKG1hdFtpXVtqXSAhPSB2YWx1ZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIo
ZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBT
Vl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQyeDMgZm9vOwotICAgIGlmICghYWxsRXF1
YWwoZm9vLCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vICsgZmxvYXQyeDMo
ZmxvYXQzKDEuMCwgMS4wLCAxLjApLCBmbG9hdDMoMS4wLCAxLjAsIDEuMCkpOwotICAgIGlmICgh
YWxsRXF1YWwoZm9vLCAxKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9vID0gZm9vICogZmxv
YXQyeDMoZmxvYXQzKDguNSwgOC41LCA4LjUpLCBmbG9hdDMoOC41LCA4LjUsIDguNSkpOwotICAg
IGlmICghYWxsRXF1YWwoZm9vLCA4LjUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb28gPSBm
b28gLSBmbG9hdDJ4MyhmbG9hdDMoNy41LCA3LjUsIDcuNSksIGZsb2F0Myg3LjUsIDcuNSwgNy41
KSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBm
b28gPSBmb28gKyBmbG9hdDJ4MyhmbG9hdDMoMS4wLCAxLjAsIDEuMCksIGZsb2F0MygxLjAsIDEu
MCwgMS4wKSk7Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDIpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb28gPSBmb28gKyBmb287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb28gPSBmb28gKyBmb287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28s
IDgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdDMgZm91cnR5VHdvOwotICAgIGZvdXJ0
eVR3by54ID0gNDI7Ci0gICAgZm91cnR5VHdvLnkgPSA0MjsKLSAgICBmb3VydHlUd28ueiA9IDQy
OwotCi0gICAgZm9vWzBdID0gZm91cnR5VHdvOwotICAgIGZvb1sxXSA9IGZvdXJ0eVR3bzsKLSAg
ICBpZiAoIWFsbEVxdWFsKGZvbywgNDIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb29bMTMz
N10gPSBmb3VydHlUd287Ci0gICAgaWYgKCFhbGxFcXVhbChmb28sIDQyKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9vWzEwMDAwMDBdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1YWwo
Zm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3b1sxMzM3XSA9IDUwOwot
ICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm91cnR5
VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFdID0gZm91cnR5VHdvOwotICAgIGlmICghYWxsRXF1
YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvdXJ0eVR3b1sxMDAwMDAwXSA9
IDUwOwotICAgIGlmIChmb3VydHlUd28ueCAhPSA1MCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm91cnR5VHdvWzEzMzddID0gNDI7Ci0gICAgZm9vWzFdID0gZm91cnR5VHdvOwotICAgIGlmICgh
YWxsRXF1YWwoZm9vLCA0MikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0MyBzaG91bGRC
ZUZvdXJ0eVR3byA9IGZvb1sxMDAwMDBdOwotICAgIGlmIChzaG91bGRCZUZvdXJ0eVR3by54ICE9
IDQyIHx8IHNob3VsZEJlRm91cnR5VHdvLnkgIT0gNDIgfHwgc2hvdWxkQmVGb3VydHlUd28ueiAh
PSA0MikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZvdXJ0eVR3b1sxMDAwMDAwMF0gIT0g
NDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJ1ZmZlclt1aW50KHRocmVhZElELngpXSA9IGJ1
ZmZlclt1aW50KHRocmVhZElELngpXSAqIDIuMDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9
IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNvbXB1dGVTaGFkZXIifTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91
cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0
ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxp
bmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IpOwotCi0gICAgY29uc3Qgc2l6ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDg7Ci0KLSAgICBjb25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ307Ci0gICAgY29uc3Qg
YnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAg
Y29uc3QgYnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbMV0gPSAyOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDM7Ci0gICAgYnVmZmVy
RmxvYXQzMkFycmF5WzNdID0gNDsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNF0gPSA1OwotICAg
IGJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDY7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
NzsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbN10gPSA4OwotICAgIGJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9SRUFEfTsKLSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihyZXN1bHRzQnVmZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5n
ID0ge2J1ZmZlcjogcmVzdWx0c0J1ZmZlciwgc2l6ZX07Ci0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmluZGluZ307Ci0gICAgY29uc3Qg
YmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6
IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlciwgMCwgcmVzdWx0c0J1ZmZlciwgMCwgc2l6
ZSk7Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5D
b21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRl
UGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goNCwgMSwgMSk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29t
bWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCByZXN1
bHRzQnVmZmVyLm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNG
bG9hdDMyQXJyYXlbMF0gPT0gMgotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzFdID09
IDQKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSA9PSA2Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbM10gPT0gOAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5
WzRdID09IDUKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSA9PSA2Ci0gICAgICAg
ICYmIHJlc3VsdHNGbG9hdDMyQXJyYXlbNl0gPT0gNwotICAgICAgICAmJiByZXN1bHRzRmxvYXQz
MkFycmF5WzddID09IDgpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAg
ICAgdGVzdEZhaWxlZCgibm90IGNvcnJlY3QiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2Jm
YTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1kb3QtZXhwcmVzc2lv
bi1ydmFsdWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL25lc3RlZC1k
b3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0
ZWQtZG90LWV4cHJlc3Npb24tcnZhbHVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFiZDcwZTUwNjU1YjAyMzUxZTRlNDdjZDQ0MGY2MDMxYmM1MzhhMTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL25lc3RlZC1kb3QtZXhwcmVzc2lvbi1ydmFsdWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDE0NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgot
PHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLQotc3RydWN0IEJhciB7Ci0gICAgZmxv
YXQgc2hhZGU7Ci19Ci1zdHJ1Y3QgRm9vIHsKLSAgICBCYXIgYmFyOwotfQotCi1zdHJ1Y3QgV3Jh
cHBlciB7Ci0gICAgRm9vIGZvbzsKLX0KLQotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7
Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBXcmFwcGVyIHdy
YXBwZXI7Ci0gICAgd3JhcHBlci5mb28uYmFyLnNoYWRlID0gc2hhZGU7Ci0gICAgVmVydGV4T3V0
IHJlc3VsdDsKLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hh
ZGUgPSB3cmFwcGVyLmZvby5iYXIuc2hhZGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9
IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBj
b25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlu
cHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZj
YzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0ZWQtbG9vcC1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48
L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShj
YW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvbmVzdGVkLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9uZXN0ZWQtbG9vcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjdl
ODI2Y2U0MGU2OGVhYjA4ZDRhNTY1NDY3Njk3Y2ZmNmUwYjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9uZXN0
ZWQtbG9vcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291
cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXZlcnRleCBWZXJ0
ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQg
c2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgYm9v
bCBiID0gdHJ1ZTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCAxMDsgaSA9IGkgKyAxKSB7Ci0g
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hhZGUgPSAxLjA7Ci0gICAg
ICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoYikgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlICgoc2hhZGUgPSAxLjAs
IGZhbHNlKSk7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGIpIHsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoKHNoYWRl
ID0gc2hhZGUgKyAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYg
KGIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSB3aGlsZSAoKHNoYWRlID0gc2hhZGUgLSAxLjAsIGZhbHNlKSk7Ci0KLSAgICAgICAgd2hpbGUg
KChzaGFkZSA9IHNoYWRlICsgMS4wLCB0cnVlKSkgewotICAgICAgICAgICAgaWYgKGIpIHsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IHdoaWxlICgoc2hhZGUgPSBzaGFkZSAtIDEuMCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIGlmIChi
KSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICByZXN1bHQuc2hhZGUg
PSBzaGFkZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9UYXJnZXQgMCB7Ci0g
ICAgcmV0dXJuIGZsb2F0NChzaGFkZSwgc2hhZGUsIHNoYWRlLCAxLjApOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRl
ID0gbnVsbDsKLQotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZv
cm1hdDogImZsb2F0NCIsIG9mZnNldDogMH07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtzaGFk
ZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBjb25zdCBh
dHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlucHV0MCA9
IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlu
cHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdz
OiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07
Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
PSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJp
emF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQs
IHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5k
ZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTog
RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsK
LSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIw
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IDAu
MDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDAuMDsKLQotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTddID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMC4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsK
LQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJy
YXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JNIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9IGRldmlj
ZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCByZXNv
dXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3JpdGVBc3lu
YygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0
IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07Ci0gICAg
Y29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVmZmVyQmlu
ZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91
cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3QgYmluZEdy
b3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3Jv
dXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIg
PSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQo
W2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL251bGwtYXJnLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzJhMTQwMWNlNmU0NzIwOWMyMzZlOGRmNzM3ZmJhODI5ZTNkNzQzMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbnVsbC1hcmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0KLVBBU1MgbnVsbElzRXJyb3IKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL251bGwtYXJnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhNWQwMzM1MmQ4ZTM1MGIzYzY5
NDE3ZWFjMzNjYWI5YjFmZjdmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcmcuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+bnVsbC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5udWxsSXNF
cnJvciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAgaW50
IGZvbyh0aHJlYWQgaW50KiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqcHRy
OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9vKG51bGwpOwotICAgICAgICB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0Zh
aWwoYAotICAgICAgICB2b2lkIGJhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBp
bnQqIHg7Ci0gICAgICAgIH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAg
ICAgIHZvaWQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGludFtdIHg7Ci0g
ICAgICAgIH0KLSAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9udWxsLWFycmF5
LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
bnVsbC1hcnJheS1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YjM5MWYxYzlhOWVlYzNkMTc2Nzk5ZDU0MDdhY2JhZGIxOGQyZGE1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9udWxsLWFycmF5LXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBzdG9yZU51bGxBcnJheVJlZgotUEFT
UyBsb2FkTnVsbEFycmF5UmVmCi1QQVNTIG51bGxOYW1lZEFjY2VzcwotUEFTUyBudWxsTmFtZWRB
Y2Nlc3MyCi1QQVNTIG51bGxOYW1lZEFjY2Vzc1NpbmsKLVBBU1MgbnVsbE5hbWVkQWNjZXNzU2lu
azIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcHJv
cGVydHktYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1hcnJheS1w
cm9wZXJ0eS1hY2Nlc3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NhMDlk
ZWZkZTE4ODhiNmViMmEzMzMwODUxNDg2ZGUwMjIyNTcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbnVsbC1h
cnJheS1wcm9wZXJ0eS1hY2Nlc3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+bG9hZC9zdG9yZSB0byBudWxsLjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnN0b3JlTnVsbEFycmF5UmVm
ID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgdm9pZCBmb28oKSB7IG51bGxbMF0gPSA0MjsgfQotICAgICAgICBgKTsKLX0KLQotd2hs
c2xUZXN0cy5sb2FkTnVsbEFycmF5UmVmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBzaW5rKHRocmVhZCBpbnQqIHgpIHsg
fQotICAgICAgICAgICAgdm9pZCBmb28oKSB7IHNpbmsobnVsbFswXSk7IH0KLSAgICAgICAgYCk7
Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzID0gYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgdm9pZCBmb28oKSB7IG51bGwt
Png7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVsbE5hbWVkQWNjZXNzMiA9IGFz
eW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IHZvaWQgZm9vKCkgeyBudWxsLng7IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMubnVs
bE5hbWVkQWNjZXNzU2luayA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAgICAgICB2
b2lkIGZvbygpIHsgc2luayhudWxsLT54KTsgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0
cy5udWxsTmFtZWRBY2Nlc3NTaW5rMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgc2luayhpbnQgeCkgeyB9Ci0gICAgICAg
ICAgICB2b2lkIGZvbygpIHsgc2luayhudWxsLngpOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL251bGwtYXJyYXktcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvbnVsbC1hcnJheS1yZWYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzU1MTdhZDQwM2ZmZWIwZDc2ZjU2Y2RhNDM0OGE1Y2M1MjMzMjIzNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvbnVsbC1hcnJheS1yZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBsb29wcy48L3RpdGxlPgotPHNj
cmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdo
bHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5kZXJlZmVyZW5jZURlZmF1bHROdWxsQXJyYXlS
ZWYgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGludFtdIHA7Ci0gICAgICAgICAgICBy
ZXR1cm4gcFswXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMu
ZGVmYXVsdEluaXRpYWxpemVkTnVsbEFycmF5UmVmSW50TGl0ZXJhbCA9IGFzeW5jICgpID0+Ci17
Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aHJlYWQgaW50W10gcCA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gcFswXTsK
LSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMucGFzc051bGxUb1B0
ck1vbm9tb3JwaGljQXJyYXlSZWYgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0g
YAotICAgICAgICBpbnQgZm9vKHRocmVhZCBpbnRbXSBwdHIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBwdHJbMHVdOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9vKG51bGwpOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10p
LCAwKTsKLX0KLQotd2hsc2xUZXN0cy5sb2FkTnVsbCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdh
aXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIHNpbmsodGhyZWFkIGlu
dCogeCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2luaygqbnVsbCk7IH0KLSAgICAg
ICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTNhZjg4ZTEyNTllZmY1YWMzMmI4
NjRhMTY0MjExNjJkNmZhNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBvb2IKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkY2NjYTVkZWRlMDdjOWJlYWY3MjI2NWQwMTg3MWI4ZTlkYTc4NzI3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9vb2ItYWNjZXNzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+T09CLjwvdGl0bGU+Ci08c2NyaXB0
IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLm9vYiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50
IHggPSAzOwotICAgICAgICAgICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFb
NDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpbnQgYmFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50WzEwXSB4OwotICAgICAgICAg
ICAgdGhyZWFkIGludFtdIGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAg
ICAgICAgICAgcmV0dXJuIHhbMF07Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmF6KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50WzEwXSB4OwotICAgICAgICAgICAgdGhyZWFkIGludFtd
IGEgPSBAeDsKLSAgICAgICAgICAgIGFbNDI0MjQyXSA9IDI1OwotICAgICAgICAgICAgcmV0dXJu
IHhbMV07Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDI1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAyNSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMCk7Ci19
OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29vYi1hY2Nlc3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
b2ItYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb29iLWFjY2Vzcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzkxNGQ4YzNiNThmMTBkZmU2ZDYzZjk4
YmUxNjVmNDBiN2I0NjFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vb2ItYWNjZXNzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw5NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDQs
IDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVy
IDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7
Ci0gICAgYnVmZmVyWzEzMzddID0gMC4wOwotICAgIGJ1ZmZlcls0MjQyNDI0Ml0gPSAwLjA7Ci0g
ICAgaWYgKGJ1ZmZlclsxMDAwMDBdID09IDAuMCkKLSAgICAgICAgYnVmZmVyW3VpbnQodGhyZWFk
SUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwotfQotYDsKLQotYXN5bmMg
ZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29t
cHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNo
YWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5n
czogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBzaXplID0gRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogODsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGJ1
ZmZlckFycmF5QnVmZmVyKTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIGJ1
ZmZlckZsb2F0MzJBcnJheVsxXSA9IDI7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMzsK
LSAgICBidWZmZXJGbG9hdDMyQXJyYXlbM10gPSA0OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs0
XSA9IDU7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzVdID0gNjsKLSAgICBidWZmZXJGbG9hdDMy
QXJyYXlbNl0gPSA3OwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDg7Ci0gICAgYnVmZmVy
LnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplfTsKLSAgICBjb25zdCBi
aW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsK
LSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0
LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAg
ICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVm
ZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVs
aW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9
IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBp
ZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAwCi0gICAgICAgICYmIHJlc3VsdHNGbG9hdDMy
QXJyYXlbMV0gPT0gNAotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzJdID09IDYKLSAg
ICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVszXSA9PSA4Ci0gICAgICAgICYmIHJlc3VsdHNG
bG9hdDMyQXJyYXlbNF0gPT0gNQotICAgICAgICAmJiByZXN1bHRzRmxvYXQzMkFycmF5WzVdID09
IDYKLSAgICAgICAgJiYgcmVzdWx0c0Zsb2F0MzJBcnJheVs2XSA9PSA3Ci0gICAgICAgICYmIHJl
c3VsdHNGbG9hdDMyQXJyYXlbN10gPT0gOCkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGNiNTY2MWQ0ZGM2MDA0NmFlYjhlYzRiN2NiMTA4MzI4OGFhN2Y4Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBA
QAotCi1QQVNTIHZlY3RvckRpdgotUEFTUyB2ZWN0b3JEaXZXaXRoU2NhbGFyCi1QQVNTIHZlY3Rv
ckRpdldpdGhTY2FsYXIyCi1QQVNTIG1hdHJpeERpdgotUEFTUyBtYXRyaXhEaXZTY2FsYXIKLVBB
U1MgbWF0cml4RGl2U2NhbGFyMgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvb3BlcmF0b3ItZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
ZGl2Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNmE5Yjk0ZTNhYTc3MmJm
ZGQ4NjMwZWUxMmViMGVmYzYyOTU0NTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWRpdi5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Ci08dGl0bGU+RGl2LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxv
biA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXYgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQyIHggPSBmbG9hdDIoMTAsIDMwKTsKLSAgICAgICAgICAgIGZsb2F0MiB5ID0gZmxvYXQyKDUs
IDEwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAvIHk7Ci0gICAgICAgICAgICByZXR1cm4g
ci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhh
d2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyLzMsIGVwc2lsb24p
OwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRoU2NhbGFyID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAg
IGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBmbG9hdDIgciA9IHggLyA1
LjA7Ci0gICAgICAgICAgICByZXR1cm4gci54IC8gci55OwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAyLzUsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JEaXZXaXRo
U2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjUpOwotICAg
ICAgICAgICAgZmxvYXQyIHIgPSAxMDAgLyB4OwotICAgICAgICAgICAgcmV0dXJuIHIueCAvIHIu
eTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2Fs
bEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMTAvNCwgZXBzaWxvbik7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeERpdiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAg
ICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQy
KDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIGZsb2F0MngyIG0yOwotICAgICAgICAgICAgbTJbMF0g
PSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0gICAgICAgICAgICBtMlsxXSA9IGZsb2F0MigtMS4wLCAt
MS4wKTsKLQotICAgICAgICAgICAgbSA9IG0gLyBtMjsKLQotICAgICAgICAgICAgaWYgKG1bMF1b
MF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1b
MV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtIC8gLTEuMDsKLQotICAgICAgICAgICAg
aWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00
MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeERpdlNjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9h
dDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAgICAg
bVsxXSA9IGZsb2F0MigyNSwgNTApOwotCi0gICAgICAgICAgICBtID0gMTAwLjAgLyBtOwotCi0g
ICAgICAgICAgICBpZiAobVswXVswXSA9PSAxMC4wICYmIG1bMF1bMV0gPT0gNS4wICYmIG1bMV1b
MF0gPT0gNC4wICYmIG1bMV1bMV0gPT0gMi4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRy
dWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVhbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItZXF1YWwtZXF1
YWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDc3ZWFhZWVl
N2Q5NWEzYjAwNThiNjRlNDk3OWRhNGQ2YTBiMmJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1l
cXVhbC1lcXVhbC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQot
UEFTUyBtYXRyaXhFcXVhbAotUEFTUyB2ZWN0b3JFcXVhbHMKLVBBU1Mgc2NhbGFyRXF1YWxzCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1lcXVhbC1lcXVh
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZGEwNDBmNTNkMzhhZTgyMGQ1OTEy
ZTYxNDQ4NDJjMzllY2EyZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLWVxdWFsLWVxdWFsLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgotPHRpdGxlPj09LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxv
biA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy5tYXRyaXhFcXVhbCA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZs
b2F0MngyIG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAg
ICBtWzFdID0gZmxvYXQyKDQwLCA1MCk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtMyA9IG07Ci0g
ICAgICAgICAgICBtM1swXVsxXSArPSAxMC4wOwotCi0gICAgICAgICAgICBib29sMngyIG0yID0g
bSA9PSBtMzsKLQotICAgICAgICAgICAgcmV0dXJuIG0yWzBdWzBdICYmICFtMlswXVsxXSAmJiBt
MlsxXVswXSAmJiBtMlsxXVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JFcXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3Qg
cHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9
IGZsb2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0KLSAgICAg
ICAgICAgIGJvb2wyIHJlc3VsdCA9IHYyID09IHY7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnggJiYgcmVzdWx0Lnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0K
LXdobHNsVGVzdHMuc2NhbGFyRXF1YWxzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dy
YW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQgeCA9IDEwLjA7
Ci0gICAgICAgICAgICBmbG9hdCB5ID0geDsKLSAgICAgICAgICAgIHJldHVybiB4ID09IHk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW1pbnVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2JlZDQ1ODdlNzRmZjExNmQwMGRmODY0OGU4NWUxYjE4ZTcyOWMyNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItbWludXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAg
KzAsMCBAQAotCi1QQVNTIHZlY3Rvck1pbnVzCi1QQVNTIHZlY3Rvck5lZ2F0ZQotUEFTUyB2ZWN0
b3JNaW51c1NjYWxhcgotUEFTUyB2ZWN0b3JNaW51c1NjYWxhcjIKLVBBU1MgbWF0cml4TWludXMK
LVBBU1MgbWF0cml4TWludXNTY2FsYXIKLVBBU1MgbWF0cml4TWludXNTY2FsYXIyCi1QQVNTIG1h
dHJpeE5lZ2F0ZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0
b3ItbWludXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAwZGQ2YmFjZDVlMWNiOWU4NzU5
MTRmZmIzNzU1ODljMTRhMTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1taW51cy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+TWludXMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9u
ID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3Rvck1pbnVzID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBpbnQy
IHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBpbnQyIHkgPSBpbnQyKDIwLCAzMCk7Ci0g
ICAgICAgICAgICBpbnQyIHIgPSB5IC0geDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7
Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAyKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTmVn
YXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oKSB7Ci0gICAgICAgICAgICBpbnQyIHggPSBpbnQyKDEwLCAyNSk7Ci0gICAgICAgICAgICB4
ID0gLXg7Ci0gICAgICAgICAgICByZXR1cm4geC54ICsgeC55OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgLTM1KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTWludXNTY2FsYXIgPSBhc3luYyAo
KSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAg
ICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAuMCwgMjUuMCk7Ci0gICAgICAgICAgICB4ID0g
eCAtIDUuMDsKLSAgICAgICAgICAgIHJldHVybiB4LnkgLyB4Lng7Ci0gICAgICAgIH0KLSAgICBg
OwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCAyMC81LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9y
TWludXNTY2FsYXIyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKC0xMC4wLCAt
MjUuMCk7Ci0gICAgICAgICAgICB4ID0gNS4wIC0geDsKLSAgICAgICAgICAgIHJldHVybiB4Lnkg
LyB4Lng7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCAzMC8xNSwgZXBzaWxvbik7
Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeE1pbnVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0g
PSBmbG9hdDIoNDAsIDUwKTsKLSAgICAgICAgICAgIG0gPSBtIC0gbTsKLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IDAgJiYgbVswXVsxXSA9PSAwICYmIG1bMV1bMF0gPT0gMCAmJiBtWzFdWzFd
ID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3Rz
Lm1hdHJpeE1pbnVzU2NhbGFyID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBg
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIgbTsKLSAgICAgICAg
ICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0gPSBmbG9hdDIoNDAs
IDUwKTsKLQotICAgICAgICAgICAgbSA9IG0gLSAxLjA7Ci0KLSAgICAgICAgICAgIGlmIChtWzBd
WzBdID09IDE5LjAgJiYgbVswXVsxXSA9PSAyOS4wICYmIG1bMV1bMF0gPT0gMzkuMCAmJiBtWzFd
WzFdID09IDQ5LjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxz
bFRlc3RzLm1hdHJpeE1pbnVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9n
cmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0g
ICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxv
YXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAwLjAgLSBtOwotCi0gICAgICAgICAgICBp
ZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQw
LjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMubWF0cml4TmVnYXRlID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0
IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyeDIg
bTsKLSAgICAgICAgICAgIG1bMF0gPSBmbG9hdDIoMjAsIDMwKTsKLSAgICAgICAgICAgIG1bMV0g
PSBmbG9hdDIoNDAsIDUwKTsKLQotICAgICAgICAgICAgbSA9IC1tOwotCi0gICAgICAgICAgICBp
ZiAobVswXVswXSA9PSAtMjAuMCAmJiBtWzBdWzFdID09IC0zMC4wICYmIG1bMV1bMF0gPT0gLTQw
LjAgJiYgbVsxXVsxXSA9PSAtNTAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhYzQxYjRkMzkzZDMzYmVlNjAw
YTkxOTA3YmIxMGMyM2Q3MWY4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itb3ZlcmxvYWQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JX
aXRob3V0VW5pbmZlcnJhYmxlVHlwZVZhcmlhYmxlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9vcGVyYXRvci1vdmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDExMTg1NGM3ZDIxZmNmZmQxNzVjMWRmOGZiNDc0ODdiNjJmODNmMDguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL29wZXJhdG9yLW92ZXJsb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPk9wZXJhdG9yKyBvdmVybG9hZC48
L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5vcGVyYXRvcldpdGhvdXRV
bmluZmVycmFibGVUeXBlVmFyaWFibGUgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0g
PSBgCi0gICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgIH0K
LSAgICAgICAgRm9vIG9wZXJhdG9yKyhGb28gYSwgRm9vIGIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQueCA9IGEueCArIGIueDsKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEZvbyBhOwotICAgICAgICAgICAgYS54ID0gNjQ1OwotICAgICAg
ICAgICAgRm9vIGI7Ci0gICAgICAgICAgICBiLnggPSAtMzU7Ci0gICAgICAgICAgICByZXR1cm4g
KGEgKyBiKS54OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA2NDUgLSAzNSk7Ci19Ci0KLXJ1blRl
c3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItcGx1cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY1N2FlN2E2YzIxMTRiYjM1NmE4ZTQzMjRkZGQxYmFhMDNmODBhMmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXBsdXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsOCArMCwwIEBACi0KLVBBU1MgdmVjdG9yUGx1cwotUEFTUyB2ZWN0b3JQbHVzU2NhbGFy
Ci1QQVNTIHZlY3RvclBsdXNTY2FsYXIyCi1QQVNTIG1hdHJpeFBsdXMKLVBBU1MgbWF0cml4VGlt
ZXNTY2FsYXIKLVBBU1MgbWF0cml4VGltZXNTY2FsYXIyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1wbHVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvb3BlcmF0b3ItcGx1cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ODQ2YmU1MGI2NDgwYzk5NDMyODFiNWY3NWFmMjI1Mjg3NmViNDA3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9v
cGVyYXRvci1wbHVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1l
b3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5QbHVzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0b3JQbHVzID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygp
IHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyNSk7Ci0gICAgICAgICAgICBm
bG9hdDIgeSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgZmxvYXQyIHIgPSB5ICsgeDsK
LSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSksIDMwLzU1LCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yUGx1c1NjYWxh
ciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBm
b28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgeCA9IGZsb2F0MigxMCwgMjApOwotICAgICAgICAg
ICAgZmxvYXQyIHIgPSB4ICsgMTAuMDsKLSAgICAgICAgICAgIHJldHVybiByLnkgLyByLng7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9h
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDMwLzIwLCBlcHNpbG9uKTsKLX07Ci0KLXdo
bHNsVGVzdHMudmVjdG9yUGx1c1NjYWxhcjIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBm
bG9hdDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0gMTAuMCArIHg7Ci0gICAgICAg
ICAgICByZXR1cm4gci55IC8gci54OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAz
MC8yMCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFBsdXMgPSBhc3luYyAoKSA9
PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAg
ICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAg
ICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwotICAgICAgICAgICAgZmxvYXQyeDIgbTI7
Ci0gICAgICAgICAgICBtMlswXSA9IGZsb2F0MigtMjAsIC0zMCk7Ci0gICAgICAgICAgICBtMlsx
XSA9IGZsb2F0MigtNDAsIC01MCk7Ci0gICAgICAgICAgICBtID0gbSArIG0yOwotICAgICAgICAg
ICAgaWYgKG1bMF1bMF0gPT0gMCAmJiBtWzBdWzFdID09IDAgJiYgbVsxXVswXSA9PSAwICYmIG1b
MV1bMV0gPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNs
VGVzdHMubWF0cml4VGltZXNTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3Jh
bSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAg
ICAgICAgICAgbVswXSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0
Mig0MCwgNTApOwotCi0gICAgICAgICAgICBtID0gbSArIDEwLjA7Ci0KLSAgICAgICAgICAgIGlm
IChtWzBdWzBdID09IDMwLjAgJiYgbVswXVsxXSA9PSA0MC4wICYmIG1bMV1bMF0gPT0gNTAuMCAm
JiBtWzFdWzFdID09IDYwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0Mngy
IG07Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFd
ID0gZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAxMC4wICsgbTsKLQotICAgICAg
ICAgICAgaWYgKG1bMF1bMF0gPT0gMzAuMCAmJiBtWzBdWzFdID09IDQwLjAgJiYgbVsxXVswXSA9
PSA1MC4wICYmIG1bMV1bMV0gPT0gNjAuMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3Itc3ludGF4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTY5MTU2ZGMzMDliMTYxNzU4ODdh
MDRhYTlmYmNkNGYxOWU4NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXgtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgb3BlcmF0b3JTeW50
YXgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRh
eC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXN5bnRheC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTFiNzc5MzViYzY4YWU2YWYzNzQ2NmQ2YWJj
M2U4NGMyNTNkMjkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci1zeW50YXguaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBj
aGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0
bGU+U29tZSBvcGVyYXRvcnMgc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMuPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxz
bFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JTeW50YXggPSBhc3luYyAoKSA9Pgot
ewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAg
IGludCBvcGVyYXRvci5mb28oRm9vKSB7IHJldHVybiA0MjsgfQotICAgIGApOwotICAgIGF3YWl0
IGNoZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRv
ci5mb289KEZvbykgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9y
Ji5mb28oRm9vKSB7IGludCB4OyByZXR1cm4gJng7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNo
ZWNrRmFpbChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltd
KEZvbywgdWludCkgeyByZXR1cm4gNDI7IH0KLSAgICBgKTsKLQotICAgIGF3YWl0IGNoZWNrRmFp
bChgCi0gICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgIGludCBvcGVyYXRvcltdPShGb28s
IHVpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgYCk7Ci0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXShG
b28sIHVpbnQpIHsgaW50IHg7IHJldHVybiAmeDsgfQotICAgIGApOwotfQotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE3YzhlNWE1ZmExODA0ZGVjZDQ3YWY4MTBkZWQ4NDFmYzhhNWZmOTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL29wZXJhdG9yLXRpbWVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDggKzAsMCBAQAotCi1QQVNTIHZlY3RvclRpbWVzCi1QQVNTIHZlY3RvclRpbWVzV2l0aFNj
YWxhcgotUEFTUyB2ZWN0b3JUaW1lc1dpdGhTY2FsYXIyCi1QQVNTIG1hdHJpeFRpbWVzCi1QQVNT
IG1hdHJpeFRpbWVzU2NhbGFyCi1QQVNTIG1hdHJpeFRpbWVzU2NhbGFyMgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3ItdGltZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNjQ3ZTAyNDg3NzZhNjE3YzMxYmRkMDg4M2ViYjUwZWM1MjJkMzE3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci10aW1lcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGltZXMuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25z
dCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3Rz
LnZlY3RvclRpbWVzID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAg
ICAgIGZsb2F0IGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDIsIDUpOwot
ICAgICAgICAgICAgZmxvYXQyIHkgPSBmbG9hdDIoMywgMTApOwotICAgICAgICAgICAgZmxvYXQy
IHIgPSB5ICogeDsKLSAgICAgICAgICAgIHJldHVybiByLnggLyByLnk7Ci0gICAgICAgIH0KLSAg
ICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDYvNTAsIGVwc2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JUaW1lc1dpdGhTY2FsYXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAK
LSAgICAgICAgZmxvYXQgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHggPSBmbG9hdDIoMTAs
IDIwKTsKLSAgICAgICAgICAgIGZsb2F0MiByID0geCAqIDIuMDsKLSAgICAgICAgICAgIHJldHVy
biByLnggKiByLnk7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIwICogNDAsIGVw
c2lsb24pOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JUaW1lc1dpdGhTY2FsYXIyID0gYXN5bmMg
KCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGZsb2F0IGZvbygpIHsKLSAg
ICAgICAgICAgIGZsb2F0MiB4ID0gZmxvYXQyKDEwLCAyMCk7Ci0gICAgICAgICAgICBmbG9hdDIg
ciA9IDIuMCAqIHg7Ci0gICAgICAgICAgICByZXR1cm4gci54ICogci55OwotICAgICAgICB9Ci0g
ICAgYDsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCAyMCAqIDQwLCBlcHNpbG9uKTsKLX07Ci0KLXdobHNsVGVzdHMu
bWF0cml4VGltZXMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtOwotICAgICAgICAgICAgbVsw
XSA9IGZsb2F0MigyMCwgMzApOwotICAgICAgICAgICAgbVsxXSA9IGZsb2F0Mig0MCwgNTApOwot
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtMjsKLSAgICAgICAgICAgIG0yWzBdID0gZmxvYXQyKC0x
LjAsIC0xLjApOwotICAgICAgICAgICAgbTJbMV0gPSBmbG9hdDIoLTEuMCwgLTEuMCk7Ci0KLSAg
ICAgICAgICAgIG0gPSBtICogbTI7Ci0KLSAgICAgICAgICAgIGlmIChtWzBdWzBdID09IC0yMC4w
ICYmIG1bMF1bMV0gPT0gLTMwLjAgJiYgbVsxXVswXSA9PSAtNDAuMCAmJiBtWzFdWzFdID09IC01
MC4wKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5t
YXRyaXhUaW1lc1NjYWxhciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAot
ICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07Ci0gICAgICAgICAg
ICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0gZmxvYXQyKDQwLCA1
MCk7Ci0KLSAgICAgICAgICAgIG0gPSBtICogLTEuMDsKLQotICAgICAgICAgICAgaWYgKG1bMF1b
MF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09IC00MC4wICYmIG1b
MV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13
aGxzbFRlc3RzLm1hdHJpeFRpbWVzU2NhbGFyMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBw
cm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG07
Ci0gICAgICAgICAgICBtWzBdID0gZmxvYXQyKDIwLCAzMCk7Ci0gICAgICAgICAgICBtWzFdID0g
ZmxvYXQyKDQwLCA1MCk7Ci0KLSAgICAgICAgICAgIG0gPSAtMS4wICogbTsKLQotICAgICAgICAg
ICAgaWYgKG1bMF1bMF0gPT0gLTIwLjAgJiYgbVswXVsxXSA9PSAtMzAuMCAmJiBtWzFdWzBdID09
IC00MC4wICYmIG1bMV1bMV0gPT0gLTUwLjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1
ZSk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1hc3NpZ24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1h
c3NpZ24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYyODZm
MzQyMDZmYTNmNDU3MWM5YzliOTM1NjYyZTVjYTNiZWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRv
ci12ZWN0b3ItYXNzaWduLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotCi1QQVNTIHZlY3RvckluZGV4QXNzaWduCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3ItdmVjdG9yLWFzc2lnbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4YjRlNjY0MTZiZTYxMjRlNjMxZTQ5MzllOGUwM2JkMzg2N2M5OWRjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItYXNzaWduLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJl
Zml4L3Bvc3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0g
MC4wMDAxOwotCi13aGxzbFRlc3RzLnZlY3RvckluZGV4QXNzaWduID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKSB7Ci0gICAgICAgICAgICBp
bnQyIHg7Ci0gICAgICAgICAgICB4WzBdID0gMjA7Ci0gICAgICAgICAgICB4WzFdID0gMTA7Ci0g
ICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAgICAgICAgICByZXR1cm4geC54IC8geC55ICsg
eFs1MDAwXTsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIDQwIC8gMTAgKyA0MCk7Ci19OwotCi1y
dW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0b3ItbG9hZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NzI1NTcxN2NkNzRlOTE0ZjhjZjY2
NWJhNmVmZGNiZDBlZGEzMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXZlY3Rvci1sb2FkLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3Rvcklu
ZGV4TG9hZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3BlcmF0b3It
dmVjdG9yLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItbG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2IzNzQ2N2EwMjcw
MDBkMGEyZTEyZmVhMDI1ODViOGJiYjVjNDcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci12ZWN0
b3ItbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OwotY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKLQotd2hsc2xUZXN0cy52ZWN0
b3JJbmRleExvYWQgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbygpIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHgueCA9IDIw
OwotICAgICAgICAgICAgeC55ID0gMTA7Ci0gICAgICAgICAgICB4WzUwMDBdID0gNDA7Ci0gICAg
ICAgICAgICByZXR1cm4geFswXSAvIHhbMV0gKyB4WzUwMDBdOwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIs
IFtdKSwgNDAvMTAgKyA0MCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9y
LXh5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYTM5ODBhYWE4MTgx
ZDEwNDBhM2I0ZGE1NWY4YTMxOTM3OGNjMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL29wZXJhdG9yLXh5LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIG9wZXJhdG9y
WFkKLVBBU1MgYXNzaWduT3BlcmF0b3JYWQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvb3BlcmF0b3IteHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVy
YXRvci14eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2NhNWE4YzA4OTA2
NWExMTBlZjI1OWQ0NzczOTE3ODgzZDllOTlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vcGVyYXRvci14eS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KLTx0aXRsZT54eS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLWNvbnN0IGVwc2ls
b24gPSAwLjAwMDE7Ci0KLXdobHNsVGVzdHMub3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAg
ICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgaWYg
KGJvb2wyKHRydWUsIGZhbHNlKS54eS54KQotICAgICAgICAgICAgICAgIHJldHVybiA0MjsKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0gICAg
ICAgICAgICBpZiAoYm9vbDIodHJ1ZSwgZmFsc2UpLnl4LnkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDI0OwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJh
eigpIHsKLSAgICAgICAgICAgIGludDIgeCA9IGludDIoMjAsIDEwKTsKLSAgICAgICAgICAgIHgg
PSB4Lnh5OwotICAgICAgICAgICAgcmV0dXJuIHgueCAtIHgueTsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImJhciIsIFtdKSwgMjQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbXSksIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMuYXNzaWdu
T3BlcmF0b3JYWSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCBhLCBpbnQgYikgewotICAgICAgICAgICAgaW50MiB4OwotICAgICAgICAg
ICAgeC54eSA9IGludDIoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4geC54IC0geC55OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgyMCksIG1ha2VJbnQoMTApXSksIDEwKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMTApLCBtYWtlSW50KDIwKV0pLCAtMTApOwotfTsKLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7
Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9vdmVybG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvb3Zlcmxv
YWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODVlZjdjMWZk
Y2I5NWU2NjZiZjZiZTc2ZTRkOGZhZDU5YWEyZjM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9vdmVybG9hZC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotUEFTUyBpbnRPdmVy
bG9hZFJlc29sdXRpb24KLVBBU1MgaW50T3ZlcmxvYWRSZXNvbHV0aW9uUmV2ZXJzZU9yZGVyCi1Q
QVNTIG5vdEVxdWFsc092ZXJsb2FkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9vdmVybG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTZhZTY0ZDQ1NDQwYzAyNDFjMzU3
MWE0NWE5ZTUxZjQ2YmRjYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL292ZXJsb2FkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hh
cnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxl
Pk92ZXJsb2FkLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLmludE92
ZXJsb2FkUmVzb2x1dGlvbiA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0g
ICAgICAgIGludCBmb28oaW50KSB7IHJldHVybiAxOyB9Ci0gICAgICAgIGludCBmb28odWludCkg
eyByZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9Ci0gICAg
ICAgIGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10pLCAxKTsKLX0KLQot
d2hsc2xUZXN0cy5pbnRPdmVybG9hZFJlc29sdXRpb25SZXZlcnNlT3JkZXIgPSBhc3luYyAoKSA9
PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVy
biAzOyB9Ci0gICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBpbnQg
Zm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQy
KTsgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImJhciIsIFtdKSwgMSk7Ci19Ci0KLXdobHNsVGVzdHMubm90RXF1YWxzT3ZlcmxvYWQg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShGb28sIEZv
bykgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKTsKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0
cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9wbHVzLWVxdWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZTgxOGI1MDcyNzUyNjQ4YWIyYjc5ZDhmNTM3NmQ0OGUwY2M2NmU1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9w
bHVzLWVxdWFscy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQot
UEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBsdXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BsdXMtZXF1YWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcGx1cy1lcXVhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjEwOWI3MjQzY2FlNDJkOWVlNjUzNGZjODhkMjFiOTJiOWIxMDg5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cGx1cy1lcXVhbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBvdmVycmlkZSBzdWJzY3JpcHRzLjwvdGl0
bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnBsdXNFcXVhbHMgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB4ICs9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAg
ICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSArIDQyKTsKLX0KLQotd2hsc2xUZXN0
cy5wbHVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHgg
Kz0gNDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSArIDQyKTsKLX0K
LQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk3YjI0ZjMxMTg3NTRmZWRhMzE3
NjlkN2FlY2RmOWQ0ZjdkNzVkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHBvaW50ZXJU
b1BvaW50ZXIKLVBBU1MgcG9pbnRlclRvTWVtYmVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmI4NTUwYjVmZjYwYzZhYzI3Y2Q1NmM1ZjE4MWI3Y2M1Yzk3ZTFhMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRl
c3QgaGFybmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5wb2lu
dGVyVG9Qb2ludGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAg
dGhyZWFkIGludCogcCA9ICZ4OwotICAgICAgICAgICAgdGhyZWFkIGludCoqIHBwID0gJnA7Ci0g
ICAgICAgICAgICBpbnQqdGhyZWFkKnRocmVhZCBxcSA9IHBwOwotICAgICAgICAgICAgaW50IHJl
c3VsdCA9IDA7Ci0gICAgICAgICAgICB4ID0gNDI7Ci0gICAgICAgICAgICAqcCA9IDc2OwotICAg
ICAgICAgICAgcmVzdWx0ICs9IHg7Ci0gICAgICAgICAgICAqKnBwID0gMzk7Ci0gICAgICAgICAg
ICByZXN1bHQgKz0geDsKLSAgICAgICAgICAgICoqcXEgPSA4MzsKLSAgICAgICAgICAgIHJlc3Vs
dCArPSB4OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwotfQotCi13aGxzbFRlc3RzLnBvaW50ZXJUb01l
bWJlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQzIHg7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGZsb2F0KiB5ID0gJnhbMV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQzeDMgeDsKLSAgICAgICAgICAgICAgICB0aHJlYWQgZmxvYXQzKiB5ID0gJnhbMV07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2Ny
aXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3Rm
aXgtcHJlZml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb3N0Zml4
LXByZWZpeC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDQz
OTY3MTQ0ZmI1ZTA5NzQwZmYxM2IzM2Y1ODIxZGY1Mzg3NDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3Rm
aXgtcHJlZml4LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQot
UEFTUyBwcmVmaXhQbHVzUGx1cwotUEFTUyBwcmVmaXhQbHVzUGx1c1Jlc3VsdAotUEFTUyBwb3N0
Zml4UGx1c1BsdXMKLVBBU1MgcG9zdGZpeFBsdXNQbHVzUmVzdWx0Ci1QQVNTIHByZWZpeE1pbnVz
TWludXMKLVBBU1MgcHJlZml4TWludXNNaW51c1Jlc3VsdAotUEFTUyBwb3N0Zml4TWludXNNaW51
cwotUEFTUyBwb3N0Zml4TWludXNNaW51c1Jlc3VsdAotUEFTUyBwbHVzRXF1YWxzCi1QQVNTIHBs
dXNFcXVhbHNSZXN1bHQKLVBBU1MgbWludXNFcXVhbHMKLVBBU1MgbWludXNFcXVhbHNSZXN1bHQK
LVBBU1MgdGltZXNFcXVhbHMKLVBBU1MgdGltZXNFcXVhbHNSZXN1bHQKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Bvc3RmaXgtcHJlZml4Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTMyZjdjYzhlZTExNjZjYTAwYTFmMTU5NmI4OWY1ZmNmNDc1MmFjMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcG9zdGZpeC1wcmVmaXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3Rm
aXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMucHJlZml4UGx1c1Bs
dXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9v
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICArK3g7Ci0gICAgICAgICAgICByZXR1cm4g
eDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Ci19Ci0KLXdobHNsVGVz
dHMucHJlZml4UGx1c1BsdXNSZXN1bHQgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gKyt4OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDY1KTsKLX0KLQotd2hs
c2xUZXN0cy5wb3N0Zml4UGx1c1BsdXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFt
ID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4Kys7
Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0p
LCA2NSk7Ci19Ci0KLXdobHNsVGVzdHMucG9zdGZpeFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHgrKzsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDY0KV0pLCA2NCk7Ci19Ci0KLXdobHNsVGVzdHMucHJlZml4TWludXNNaW51cyA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIC0teDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9
Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDYzKTsKLX0KLQotd2hsc2xUZXN0cy5wcmVmaXhNaW51
c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAg
ICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIC0teDsKLSAg
ICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19Ci0KLXdobHNsVGVzdHMucG9z
dGZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4LS07Ci0gICAgICAg
ICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2Myk7Ci19
Ci0KLXdobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXNSZXN1bHQgPSBhc3luYyAoKSA9Pgotewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4geC0tOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSks
IDY0KTsKLX0KLQotd2hsc2xUZXN0cy5wbHVzRXF1YWxzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAg
ICAgICAgeCArPSA0MjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMucGx1c0VxdWFsc1Jl
c3VsdCA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBm
b28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB4ICs9IDQyOwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Ci19Ci0KLXdobHNsVGVzdHMu
bWludXNFcXVhbHMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAg
IGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHggLT0gNDI7Ci0gICAgICAg
ICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0g
NDIpOwotfQotCi13aGxzbFRlc3RzLm1pbnVzRXF1YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4geCAtPSA0MjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4
NSldKSwgMzg1IC0gNDIpOwotfQotCi13aGxzbFRlc3RzLnRpbWVzRXF1YWxzID0gYXN5bmMgKCkg
PT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB4ICo9IDQyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAqIDQyKTsKLX0KLQotd2hsc2xUZXN0cy50
aW1lc0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHggKj0g
NDI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAqIDQyKTsKLX0KLQot
cnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wcm9wZXJ0eS1ldmFsdWF0aW9uLW9yZGVy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5MzM5NDJlODFm
ZDgxOTZlNjFiODAxNzMxZmE2MWM4OTMxN2ZlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZh
bHVhdGlvbi1vcmRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci0KLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2UyCi1QQVNT
IGRvbnRFdmFsdWF0ZVR3aWNlMwotUEFTUyBkb250RXZhbHVhdGVUd2ljZTQKLVBBU1MgZG9udEV2
YWx1YXRlVHdpY2U1Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlNgotUEFTUyBkb250RXZhbHVhdGVU
d2ljZTcKLVBBU1MgZG9udEV2YWx1YXRlVHdpY2U4Ci1QQVNTIGRvbnRFdmFsdWF0ZVR3aWNlOQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZhbHVhdGlv
bi1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Byb3BlcnR5LWV2YWx1YXRp
b24tb3JkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjMjg3MTkxYTc3
ODM0YmVhODY3MWUzOTU1Nzg2YjljOGUzN2NiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcHJvcGVydHktZXZh
bHVhdGlvbi1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+ZXZhbHVhdGlvbiBvcmRlciBhbmQgdGltZXMu
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdp
Y2UgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBi
YXIodGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAg
ICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMDsKLSAg
ICAgICAgICAgIGludFs0Ml0gYXJyOwotICAgICAgICAgICAgYXJyWzBdID0gNDI7Ci0KLSAgICAg
ICAgICAgIGludCByZXN1bHQgPSBhcnJbYmFyKCZ4KV07Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0ID09IDQyICYmIHggPT0gMTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTIgPSBhc3luYyAoKSA9PiB7Ci0gICAg
Y29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnRbXSBhcnIsIHVp
bnQgaW5kZXgsIHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0
cjsKLSAgICAgICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRyID0gKnB0
ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
Zm9vKCkgewotICAgICAgICAgICAgdWludCB4ID0gMTsKLQotICAgICAgICAgICAgdWludFszXSBp
bmRpY2VzOwotCi0gICAgICAgICAgICB1aW50WzRdWzRdWzRdIGFycjsKLQotICAgICAgICAgICAg
YXJyW2JhcihAaW5kaWNlcywgMCwgJngpXVtiYXIoQGluZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRp
Y2VzLCAyLCAmeCldID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gYXJyWzBdWzBdWzBdID09IDQy
Ci0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1swXSA9PSAxIAotICAgICAgICAgICAgICAgICYm
IGluZGljZXNbMV0gPT0gMiAKLSAgICAgICAgICAgICAgICAmJiBpbmRpY2VzWzJdID09IDMKLSAg
ICAgICAgICAgICAgICAmJiB4ID09IDQ7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2UzID0gYXN5bmMgKCkgPT4gewot
ICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnRbMl1bMl0gYmFzZSh0aHJlYWQgdWlu
dFtdIGFyciwgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWlu
dCBvbGQgPSAqcHRyOwotICAgICAgICAgICAgYXJyW2luZGV4XSA9IG9sZDsKLSAgICAgICAgICAg
ICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHVpbnRbMl1bMl0gcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0WzBdWzBdID0gNDI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgdWludCBiYXIodGhyZWFkIHVpbnRbXSBhcnIsIHVpbnQgaW5kZXgs
IHRocmVhZCB1aW50KiBwdHIpIHsKLSAgICAgICAgICAgIHVpbnQgb2xkID0gKnB0cjsKLSAgICAg
ICAgICAgIGFycltpbmRleF0gPSBvbGQ7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgdWludCB4ID0gMTsKLQotICAgICAgICAgICAgdWludFszXSBpbmRpY2VzOwot
Ci0gICAgICAgICAgICB1aW50IHJlc3VsdCA9IGJhc2UoQGluZGljZXMsIDAsICZ4KVtiYXIoQGlu
ZGljZXMsIDEsICZ4KV1bYmFyKEBpbmRpY2VzLCAyLCAmeCldOwotCi0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0ID09IDQyCi0gICAgICAgICAgICAgICAgJiYgaW5kaWNlc1swXSA9PSAxCi0gICAg
ICAgICAgICAgICAgJiYgaW5kaWNlc1sxXSA9PSAyIAotICAgICAgICAgICAgICAgICYmIGluZGlj
ZXNbMl0gPT0gMwotICAgICAgICAgICAgICAgICYmIHggPT0gNDsKLSAgICAgICAgfQotICAgIGA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJm
b28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2ljZTQgPSBh
c3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBiYXIodGhy
ZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgdWludCBvbGQgPSAqcHRyOwotICAgICAgICAg
ICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG9sZDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgdWludFsyXSBhcnI7Ci0KLSAgICAg
ICAgICAgIHVpbnQgeCA9IDE7Ci0KLSAgICAgICAgICAgIGFycltiYXIoJngpXSArPSA2NjY7Ci0K
LSAgICAgICAgICAgIHJldHVybiBhcnJbMV0gPT0gNjY2ICYmIHggPT0gMjsKLSAgICAgICAgfQot
ICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3Jh
bSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy5kb250RXZhbHVhdGVUd2lj
ZTUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgdGhyZWFk
IHVpbnQqIGdldFB0cih0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICAqcHRyID0gKnB0
ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gcHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludCByZXN1
bHQgPSAoKmdldFB0cigmeCkpKys7Ci0gICAgICAgICAgICByZXR1cm4geCA9PSAzICYmIHJlc3Vs
dCA9PSAyOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRl
c3RzLmRvbnRFdmFsdWF0ZVR3aWNlNiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFt
ID0gYAotICAgICAgICB0aHJlYWQgdWludCogZ2V0UHRyKHRocmVhZCB1aW50KiBwdHIpIHsKLSAg
ICAgICAgICAgICpwdHIgPSAqcHRyICsgMTsKLSAgICAgICAgICAgIHJldHVybiBwdHI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIHVpbnQgeCA9IDE7Ci0g
ICAgICAgICAgICB1aW50IHJlc3VsdCA9ICsrKCpnZXRQdHIoJngpKTsKLSAgICAgICAgICAgIHJl
dHVybiB4ID09IDMgJiYgcmVzdWx0ID09IDM7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0
cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U3ID0gYXN5bmMgKCkgPT4g
ewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHRocmVhZCB1aW50W10gZ2V0QXJyKHRo
cmVhZCB1aW50W10gdmFsdWUsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhy
ZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAg
ICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdWludCBnZXRWYWx1ZSh1aW50IHJldCwgdGhyZWFkIHVpbnRbXSBp
bmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWludCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRp
Y2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAgICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAg
ICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAgICAgdWludFszXSBhcnI7Ci0gICAgICAgICAg
ICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAg
ICBnZXRBcnIoQHZhbHVlLCBAYXJyLCAwLCAmeClbZ2V0VmFsdWUoMCwgQGFyciwgMSwgJngpXSAr
PSBnZXRWYWx1ZSg2NjUsIEBhcnIsIDIsICZ4KTsKLSAgICAgICAgICAgIHJldHVybiB4ID09IDQK
LSAgICAgICAgICAgICAgICAmJiBhcnJbMF0gPT0gMQotICAgICAgICAgICAgICAgICYmIGFyclsx
XSA9PSAyCi0gICAgICAgICAgICAgICAgJiYgYXJyWzJdID09IDMKLSAgICAgICAgICAgICAgICAm
JiB2YWx1ZVswXSA9PSA2NjY7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07
Ci0KLXdobHNsVGVzdHMuZG9udEV2YWx1YXRlVHdpY2U4ID0gYXN5bmMgKCkgPT4gewotICAgIGNv
bnN0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZ2V0VmFsdWUodWludCByZXQsIHRocmVhZCB1
aW50W10gaW5kaWNlcywgdWludCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAg
ICAgaW5kaWNlc1tpbmRleF0gPSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwot
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCB1aW50
W10gZ2V0QXJyKHRocmVhZCB1aW50W10gdmFsdWUsIHRocmVhZCB1aW50W10gaW5kaWNlcywgdWlu
dCBpbmRleCwgdGhyZWFkIHVpbnQqIHB0cikgewotICAgICAgICAgICAgaW5kaWNlc1tpbmRleF0g
PSAqcHRyOwotICAgICAgICAgICAgKnB0ciA9ICpwdHIgKyAxOwotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1
aW50IHggPSAxOwotICAgICAgICAgICAgdWludFszXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFd
IHZhbHVlOwotICAgICAgICAgICAgdmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICBnZXRBcnIo
QHZhbHVlLCBAYXJyLCAwLCAmeClbYXJyW2dldFZhbHVlKDAsIEBhcnIsIDEsICZ4KV1dICs9IGdl
dFZhbHVlKDY2NSwgQGFyciwgMiwgJngpOwotCi0gICAgICAgICAgICByZXR1cm4geCA9PSA0Ci0g
ICAgICAgICAgICAgICAgJiYgYXJyWzBdID09IDEKLSAgICAgICAgICAgICAgICAmJiBhcnJbMV0g
PT0gMgotICAgICAgICAgICAgICAgICYmIGFyclsyXSA9PSAzCi0gICAgICAgICAgICAgICAgJiYg
dmFsdWVbMF0gPT0gNjY2OwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19Owot
Ci13aGxzbFRlc3RzLmRvbnRFdmFsdWF0ZVR3aWNlOSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICB0aHJlYWQgdWludFsxXSogZ2V0VmFsdWUodGhyZWFkIHVp
bnRbMV0qIGFyciwgdGhyZWFkIHVpbnRbXSBpbmRpY2VzLCB1aW50IGluZGV4LCB0aHJlYWQgdWlu
dCogcHRyKSB7Ci0gICAgICAgICAgICBpbmRpY2VzW2luZGV4XSA9ICpwdHI7Ci0gICAgICAgICAg
ICAqcHRyID0gKnB0ciArIDE7Ci0gICAgICAgICAgICByZXR1cm4gYXJyOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICB1aW50IHggPSAxOwotICAgICAgICAg
ICAgdWludFsxXSBhcnI7Ci0gICAgICAgICAgICB1aW50WzFdIHZhbHVlOwotICAgICAgICAgICAg
dmFsdWVbMF0gPSAxOwotCi0gICAgICAgICAgICAoKmdldFZhbHVlKCZ2YWx1ZSwgQGFyciwgMCwg
JngpKVswXSArPSA2NjU7Ci0KLSAgICAgICAgICAgIHJldHVybiB4ID09IDIKLSAgICAgICAgICAg
ICAgICAmJiBhcnJbMF0gPT0gMQotICAgICAgICAgICAgICAgICYmIHZhbHVlWzBdID09IDY2NjsK
LSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
cmVhZC1tb2RpZnktd3JpdGUtaGlnaC16b21iaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpvbWJpZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1
N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlmeS13cml0ZS1oaWdoLXpv
bWJpZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhpZ2gtem9t
Ymllcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLWhp
Z2gtem9tYmllcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWI0ZDQ0ZGZj
NjQ1ODA0NTI0NjFiMmQ4MTI2NWVmNzk3YzYyNjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWFkLW1vZGlm
eS13cml0ZS1oaWdoLXpvbWJpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotYm9vbCBmaWxsKHRocmVhZCBmbG9hdDR4NCogbWF0LCBmbG9h
dCB2YWx1ZSkKLXsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgNDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBmbG9hdDQodmFsdWUs
IHZhbHVlLCB2YWx1ZSwgdmFsdWUpOwotICAgIH0KLSAgICAqbWF0ID0gcmVzdWx0OwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21w
dXRlU2hhZGVyKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRo
cmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAgIGZsb2F0NHg0IG1hdDsKLSAgICBm
aWxsKCZtYXQsIDQpOwotCi0gICAgZmxvYXQ0IHZlYzsKLSAgICB2ZWNbMF0gKz0gbWF0WzBdWzBd
ICsgbWF0WzBdWzFdICsgbWF0WzNdWzJdOwotCi0gICAgZmxvYXQgdmFsdWUgPSA0MjsKLSAgICB2
YWx1ZSArPSB2ZWNbMF07Ci0KLSAgICBtYXRbMF1bMF0gKz0gKG1hdFswXVswXSArPSAodmFsdWUg
Kz0gbWF0WzBdWzBdKSk7Ci0KLSAgICBidWZmZXJbdWludCh0aHJlYWRJRC54KV0gPSBtYXRbMF1b
MF07Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBz
aGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3Vy
Y2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQ
aXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBG
bG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFIHwgR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZm
ZXIoYnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2Fp
dCBidWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IDA7Ci0gICAgYnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNv
bnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVm
ZmVyLCBzaXplfTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJl
c291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0g
e2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsK
LSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZm
ZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKLSAgICBjb25zdCBjb21wdXRl
UGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFz
cygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNv
bnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5j
KCk7Ci0gICAgY29uc3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVz
dWx0c0FycmF5QnVmZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSA2NikK
LSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIi
KTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3Rh
cnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlYWQtbW9kaWZ5LXdyaXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwNTZhM2FmYmZlM2Y5ZjA5NzU5Nzg2ZjBmMjYy
N2IzNzMxMzhhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmVhZC1tb2RpZnktd3JpdGUuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRz
KDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZl
ciA6IHJlZ2lzdGVyKHUwKSkgewotICAgIGJ1ZmZlclswXSA9IDE7Ci0gICAgYnVmZmVyWzFdID0g
YnVmZmVyWzBdKys7Ci0KLSAgICBidWZmZXJbMl0gPSAxOwotICAgIGJ1ZmZlclszXSA9ICsrYnVm
ZmVyWzJdOwotCi0gICAgYnVmZmVyWzRdID0gMTsKLSAgICBidWZmZXJbNF0gKz0gNTsKLQotICAg
IGJ1ZmZlcls1XSA9IDE7Ci0gICAgYnVmZmVyWzVdICo9IDc7Ci0KLSAgICBpbnQgdG90YWwgPSAx
NDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpICs9IDIpIHsKLSAgICAgICAgdG90YWwg
Kz0gaTsKLSAgICB9Ci0gICAgYnVmZmVyWzZdID0gdG90YWw7Ci0KLSAgICB0b3RhbCA9IDE0Owot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICB0b3RhbCArPSBpOwot
ICAgIH0KLSAgICBidWZmZXJbN10gPSB0b3RhbDsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RB
ZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNl
KCk7Ci0KLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZp
c2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwg
bGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2
aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogODsKLQotICAg
IGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1ZmZlckJp
bmRpbmcgPSB7YnVmZmVyOiBidWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRp
bmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBb
YmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IGNvbXB1
dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAg
Y29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOwot
ICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwot
ICAgIGlmIChyZXN1bHRzWzBdID09IDIKLSAgICAgICAgJiYgcmVzdWx0c1sxXSA9PSAxCi0gICAg
ICAgICYmIHJlc3VsdHNbMl0gPT0gMgotICAgICAgICAmJiByZXN1bHRzWzNdID09IDIKLSAgICAg
ICAgJiYgcmVzdWx0c1s0XSA9PSA2Ci0gICAgICAgICYmIHJlc3VsdHNbNV0gPT0gNwotICAgICAg
ICAmJiByZXN1bHRzWzZdID09IDM0Ci0gICAgICAgICYmIHJlc3VsdHNbN10gPT0gNTkpCi0gICAg
ICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgYnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlv
bigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNpdmUtc3RydWN0cy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NjA4NjI2NTFhOWJhM2UwMzVlOTliZmRm
NjdmZjk3NWQzOTJkMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3RzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIG11dHVhbGx5UmVjdXJz
aXZlU3RydWN0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZWN1cnNp
dmUtc3RydWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1
Y3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzN2RmZThkYzIzYjdiZjY1
Y2NhZTg5YmI4N2FiOGZlZjlmOTVmNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JlY3Vyc2l2ZS1zdHJ1Y3Rz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgbG9vcHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0K
LXdobHNsVGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3QgPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0g
ICAgICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cnVj
dCBCYXIgewotICAgICAgICAgICAgICAgIEZvbyBmb287Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotICAgICAgICAKLX0KLQotLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTc2NjogVGhpcyBzaG91bGQgY29tcGlsZS4KLS8vIHdobHNsVGVzdHMu
bXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRlcnNCcm9rZW4gPSBhc3luYyAoKSA9Pgot
Ly8gewotLy8gICAgIGxldCBwcm9ncmFtID0gYAotLy8gICAgICAgICBzdHJ1Y3QgRm9vIHsKLS8v
ICAgICAgICAgICAgIHRocmVhZCBCYXIqIGJhcjsKLS8vICAgICAgICAgICAgIGludCBmb287Ci0v
LyAgICAgICAgIH0KLS8vICAgICAgICAgc3RydWN0IEJhciB7Ci0vLyAgICAgICAgICAgICB0aHJl
YWQgRm9vKiBmb287Ci0vLyAgICAgICAgICAgICBpbnQgYmFyOwotLy8gICAgICAgICB9Ci0vLyAg
ICAgICAgIGludCBmb28oKQotLy8gICAgICAgICB7Ci0vLyAgICAgICAgICAgICBGb28gZm9vOwot
Ly8gICAgICAgICAgICAgQmFyIGJhcjsKLS8vICAgICAgICAgICAgIGZvby5mb28gPSA1NjQ7Ci0v
LyAgICAgICAgICAgICBiYXIuYmFyID0gNTM7Ci0vLyAgICAgICAgICAgICByZXR1cm4gZm9vLmJh
ci0+YmFyIC0gYmFyLmZvby0+Zm9vOwotLy8gICAgICAgICB9Ci0vLyAgICAgYDsKLS8vICAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAw
KTsKLS8vIH0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12YXJpYWJs
ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1sb2NhbC12
YXJpYWJsZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3
YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9yZXR1
cm4tbG9jYWwtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJh
d1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3JldHVybi1sb2NhbC12YXJpYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Jl
dHVybi1sb2NhbC12YXJpYWJsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NzBjMjgzZmU2OGI3NjVkZjYyNjAyZDczZDE2YjRiMjAwMjlmMzBmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9y
ZXR1cm4tbG9jYWwtdmFyaWFibGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci1mbG9hdCBjb3B5KGZsb2F0IHYpIHsKLSAgICBmbG9hdCBsb2NhbCA9IHY7Ci0gICAgcmV0dXJu
IGxvY2FsOwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVy
dGV4T3V0IHJlc3VsdDsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJl
c3VsdC5zaGFkZSA9IGNvcHkoc2hhZGUpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJh
Z21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEu
MCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRl
ck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFk
ZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9
IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQiLCBvZmZzZXQ6IDE2fTsKLSAgICBj
b25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0dHJpYnV0ZTFdOwotICAgIGNvbnN0IGlu
cHV0MCA9IHtzdHJpZGU6IDIwLCBhdHRyaWJ1dGVTZXQ6IGF0dHJpYnV0ZXN9OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJ1bmlmb3JtLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCBy
YXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4
SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNSAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhC
dWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAx
LjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzRdID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs1XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5
XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzEyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEz
XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLQotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTdd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjAudW5t
YXAoKTsKLQotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5VTklGT1JN
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlciA9
IGRldmljZS5jcmVhdGVCdWZmZXIocmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25z
dCByZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgcmVzb3VyY2VCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShyZXNvdXJjZUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICByZXNvdXJjZUJ1ZmZl
ckZsb2F0MzJBcnJheVswXSA9IDE7Ci0gICAgcmVzb3VyY2VCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXNvdXJjZUJ1ZmZlciwgc2l6ZTogNH07
Ci0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZyA9IHtiaW5kaW5nOiAwLCByZXNvdXJjZTogYnVm
ZmVyQmluZGluZ307Ci0gICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJp
bmRHcm91cExheW91dCwgYmluZGluZ3M6IFtiaW5kR3JvdXBCaW5kaW5nXX07Ci0gICAgY29uc3Qg
YmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBi
aW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwg
MCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5z
dWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlv
bihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0
aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3JldHVybi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE5YWFkMDU1NjUyYjBkNWJmMWI0OTdj
ZTcwNTI0YjYyZTQwOGNmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIHJldHVybklmCi1Q
QVNTIHJldHVyblJlZmVyZW5jZVRvU2FtZVBhcmFtZXRlcgotUEFTUyByZXR1cm5SZWZlcmVuY2VU
b1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Q
YXJhbWV0ZXIKLVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlV2l0aE5lc3RpbmcK
LVBBU1MgcmV0dXJuUmVmZXJlbmNlVG9Mb2NhbFZhcmlhYmxlCi1QQVNTIHJldHVybkludExpdGVy
YWxVaW50Ci1QQVNTIHJldHVybkludExpdGVyYWxGbG9hdAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvcmV0dXJuLXNwZWMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlMzlmOGIxNDBhYTczMzljNGI4MjUzYzZkZmE0YTI3YTAyNjc2ZTg0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9yZXR1cm4tc3BlYy10ZXN0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wg
dGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnJl
dHVybklmID0gYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpbnQgeSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsK
LSAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB5OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHkgPSA4
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBh
d2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28oaW50IHgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkgPSA2OwotICAgICAgICAgICAgICAg
IGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICAgICAgeSA9IDg7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLQotICAgIGxldCBwcm9ncmFtID0gYAot
ICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7
Ci0gICAgICAgICAgICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDg7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAxMDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDMpXSksIDEwKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNCld
KSwgMTApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg1KV0pLCAxMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDYpXSksIDEwKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQo
NyldKSwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDgpXSksIDEwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOSldKSwgMTApOwotCi0gICAg
YXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKGludCB4KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB5ID0gNjsKLSAgICAgICAgICAgICAg
ICBpZiAoeCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA4OwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoeCA9PSA5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAx
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIHBy
b2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludCB5ID0gNjsKLSAgICAgICAgICAgIGlmICh4ID09IDcpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gODsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgeSA9IDk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4geTsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDMpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg0KV0pLCA5KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNSldKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDYpXSksIDkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg3KV0pLCA4KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoOCldKSwgOSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDkpXSksIDkpOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg
eSA9IDY7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gNykgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gODsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAx
MTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0KLSAgICBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgeSA9IDY7Ci0gICAg
ICAgICAgICBpZiAoeCA9PSA3KQotICAgICAgICAgICAgICAgIGludCB5ID0gODsKLSAgICAgICAg
ICAgIHJldHVybiB5OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyldKSwgNik7Ci19Owot
Ci13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5jZVRvU2FtZVBhcmFtZXRlciA9IGFzeW5jICgpID0+
IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBwbHVzKGJhcig1KSwgYmFyKDcpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBwbHVzKHRocmVhZCBpbnQqIHgsIHRocmVhZCBpbnQqIHkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAqeCArICp5OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyZWFkIGlu
dCogYmFyKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJng7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdKSwgMTQpOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VU
b1BhcmFtZXRlcldpdGhEaWZmZXJlbnRGdW5jdGlvbnMgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0
IHByb2dyYW0gPSBgCi0gICAgICAgIGludCBmb28oKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKmJhcigxMCkgKyAqYmF6KDIwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocmVhZCBp
bnQqIGJhcihpbnQgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZ4OwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhyZWFkIGludCogYmF6KGludCB5KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJnk7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzApOwotfTsKLQotd2hs
c2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb1BhcmFtZXRlciA9IGFzeW5jICgpID0+IHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbyhib29sIGNvbmRpdGlvbikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICpiYXIoY29uZGl0aW9uLCAxLCAyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRocmVhZCBpbnQqIGJhcihib29sIGNvbmRpdGlvbiwgaW50IGEsIGludCBiKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uID8gJmEgOiAmYjsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSksIDEpOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSks
IDIpOwotfTsKLQotd2hsc2xUZXN0cy5yZXR1cm5SZWZlcmVuY2VUb0xvY2FsVmFyaWFibGVXaXRo
TmVzdGluZyA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYmFyKCkgKyAqYmF6KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aHJlYWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgYSA9IDIwOwotICAgICAgICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhyZWFkIGludCogYmF6KCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGEgPSAy
MjsKLSAgICAgICAgICAgIHJldHVybiAmYTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7
Ci19OwotCi13aGxzbFRlc3RzLnJldHVyblJlZmVyZW5jZVRvTG9jYWxWYXJpYWJsZSA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50IGZvbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAqYmFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJl
YWQgaW50KiBiYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgYSA9IDQyOwotICAgICAg
ICAgICAgcmV0dXJuICZhOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdo
bHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbFVpbnQgPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28oKSB7IHJldHVybiA0MjsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0KLXdo
bHNsVGVzdHMucmV0dXJuSW50TGl0ZXJhbEZsb2F0ID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBw
cm9ncmFtID0gImZsb2F0IGZvbygpIHsgcmV0dXJuIDQyOyB9IjsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQyKTsKLX07Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMTAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4
YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtMTAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkZWI4NDMxMmZkNTAwYmE1NTEyYzc3NmRlYWRmMWQzNDYxZWY3
M2NmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0xMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
dmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9z
aXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZv
byA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZs
b2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0g
ICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1
bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxl
LCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9
IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFk
ZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0g
ICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6
ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIs
IGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0
ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29u
c3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAg
ICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsK
LSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3Zl
cnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0
b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0K
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJB
cnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10g
PSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNv
bnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07
Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENo
YWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRD
dXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBk
ZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjog
MCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0
YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDog
ImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3Qg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAg
Y29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3Mo
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5l
KHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwg
MSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNv
bW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVl
dWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihm
dW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0s
IGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3
YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xMS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRk
YmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS1leHBlY3RlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5k
SW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMtMTEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWUxZjM1YzU4NDU1NjFmMjQxNWVlZGQ1ZmRi
MWM5Mjc2ZGNlN2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0
PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFk
ZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICBy
ZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi1z
dHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBG
b28gZjsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlv
biBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxl
OiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBj
b25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0g
InRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRG
YWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307
Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAx
NX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0g
bnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZv
cm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0
ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29u
c3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9
IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6
YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwg
c2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRl
clBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZs
b2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2
ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZv
cm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZp
Z3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4
dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xv
ckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRh
cmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9y
OiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBj
b25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNv
ZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0
QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSku
dGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTEyLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTEyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNDRiOTZm
NDc2ZDA4M2EzY2NmNTJmMGU1NGMyZDhiYjJjY2M5MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTEyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0
ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDog
U1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB2Ci19Ci1mcmFnbWVudCBmbG9hdDQg
ZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0
IDAgewotICAgIEZvbyBmID0gRm9vLnY7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVy
U291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVy
dGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50
U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBw
cmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXph
dGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29u
c3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9y
QmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtz
dHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMg
PSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0
c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5
b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2
ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxT
dGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0
fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4QnVmZmVyRGVz
Y3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07
Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZm
ZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2Ny
aXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENo
YWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwot
ICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0
VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTog
MX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4
dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDog
InN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRh
Y2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsK
LSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAg
IGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRi
OTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMtMTMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0YjM0MTIyOTRmMDAzNTk3MmYyMTdmYTQyMzA3MWQxOGQ2YTQyYzVkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0xMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hh
ZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28gPSBpbnQ7Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAg
IHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAK
LXR5cGVkZWYgRm9vID0gaW50OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxv
YXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0g
e21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRl
ciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAg
ICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTog
Im5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVu
ZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwg
YWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRl
LkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25z
dCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAg
IGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19Owot
ICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVy
VXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFy
cmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZl
ckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsK
LQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29u
c3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsK
LSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hh
aW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1
cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0
dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAw
LCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRh
Y2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAi
Y2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3Jp
cHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBj
b25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1
bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdh
cmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRi
ZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0LWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVp
Z2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy0xNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTZkOTM0N2QxMzkzODgzZTZhZjI2OTE4OTQy
MzAwM2JmN2Y2ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsK
LX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0
ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0
IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgaW50IHg7Ci19Ci1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1g
OwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0K
LWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJj
ZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRl
ck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhT
dGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNo
YWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRl
ck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0
aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25T
dGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFs
cGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29s
b3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5k
LCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRl
OiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lu
cHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owot
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6
IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0
ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
OF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
NV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9y
ID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9
IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNv
bnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBj
b25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXco
KTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9Owot
ICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVW
aWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9y
ZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQg
PSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVu
dHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVy
ID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
LSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBd
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVu
Y29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVm
ZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAg
c3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsK
LTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LTE1LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYx
MThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE1
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODk0MmI3Mjc1OTg0ODI5ZGM5OGI0MzhmZGJlYjEwNDQ4NTdkZWNkOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNv
dXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJl
dHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVu
dW0gRm9vIHsKLSAgICB4Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9h
dDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAg
IGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7
bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0
IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAg
Y29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVu
dFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRl
cywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0
OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJV
c2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJy
YXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVy
QXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Nl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwot
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25z
dCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9Owot
ICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFp
bkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3Vy
cmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAs
IGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFj
aG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJj
bGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlw
dG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNv
bnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShy
ZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEs
IDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21t
YW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVu
Y3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBm
dW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2Fy
ZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTE2LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJm
ZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYtZXhwZWN0ZWQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZElu
U29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2Vw
YXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwMTUwOTA4NWE3NTA4MTA2ZWJkNmZjNzY2NzM0
MDg4ZTkzNmE5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0
dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0
IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBk
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAg
ICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
e2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7
bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsK
LSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9s
b2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7
ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVz
ID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVN
YXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0
YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0
dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZs
b2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0gMC41
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsK
LSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVz
b2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVh
ckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsK
LSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1h
bmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBh
c3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwot
fQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTE3LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4K
LWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xNy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1
MWIxNWU3Njc3YWRmMmQwZjIxY2M3NzlkYmVjMmJlMjQ2Y2I4ZDkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE3Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBg
Ci10eXBlZGVmIEZvbyA9IGZsb2F0OwotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9z
aXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBgCi10eXBlZGVmIEZv
byA9IGZsb2F0OwotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBGb28geCA9IDE7Ci0gICAgcmV0
dXJuIGZsb2F0NCh4LCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNl
KSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRl
clNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21l
bnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJp
cCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3Vs
bE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNv
bG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1
bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29s
b3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0g
ICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQi
fTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1
dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0
ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERl
c2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2Us
IGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNv
bG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAx
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQ
VUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0g
LTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlckZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0g
PSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTNdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTgtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0xOC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNr
Z3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmM4Yjg3YWY1ODljNWUzYzhmMDMx
NTYyOGEwY2I3NzI4Njc4NDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0xOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAg
ZmxvYXQgeDsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7
Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotc3RydWN0IEZvbyB7Ci0gICAgZmxv
YXQgeDsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgRm9vIGY7Ci0gICAgZi54ID0gMTsK
LSAgICByZXR1cm4gZmxvYXQ0KGYueCwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVh
dGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZy
YWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJh
Z21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZl
cnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0
IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2lu
dDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJp
YW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6
ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAg
ICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1h
dDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07
IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxs
OwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0
OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2
ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5W
RVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVB
c3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMy
QXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAt
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0
OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJl
U3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUg
PSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
VmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJl
ZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0
IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0g
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5LWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMTktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3MDczNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMt
MTktZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJl
T25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTE5Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMtMTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcyNTA5ZTI4YWJh
NWY2NTg0N2QyY2ZiYWViMWZhMDE5MDk0YjllYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMTkuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9v
IHsKLSAgICB4Ci19Ci12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsKLSAgICB4ID0g
MCwKLSAgICB5ID0gMQotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICBpbnQgeSA9IGludChG
b28ueSk7Ci0gICAgcmV0dXJuIGZsb2F0NChmbG9hdCh5KSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9
IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9
OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9w
b2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9
IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0
ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0
ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwg
YXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsK
LSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwg
cmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRl
eElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7
c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZm
ZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5
WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsK
LSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIu
ZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7
Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVT
cXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3
MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkN2Iz
NjczZWZjMGM3Zjg4NmViMzVkN2EyM2EwNDA2NWU0NzE5YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0
MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZl
cnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkg
OiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdt
ZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVy
KCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRl
eFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNo
YWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25z
dCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
InZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFn
bWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29u
c3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rl
cml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAg
IGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBj
b2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29u
c3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5w
dXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBp
bnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQ
aXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmlt
aXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVu
Y2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxh
eW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJ
VEV9OwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4
QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
Ml0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3Qg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5E
ZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3
YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVm
YXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9y
QXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBh
c3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGlu
ZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVm
ZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAg
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0g
Y29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtj
b21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNl
KSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRlN2Qx
ZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNo
YWRlci1tb2R1bGVzLTIwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkY2Jm
ZjVmMGUzZmIxODJiZjlhOWZlZDZjMWI2MGQ0ODIyZmUzZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIwLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAK
LXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZy
YWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxv
YXQ0KDEsIDEsIDEsIDEpOwotfQotZmxvYXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0
KDEsIDEsIDEsIDEpOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVy
KCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3
MTI3YTBmYjBmNDMwNjQ2ZGRlN2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIxLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk0M2VlMzZlZGRiZmY3ZTA1MDA4ZTVjOTdiODA1MjFhMThlODNkN2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTIxLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZl
cnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotdHlwZWRlZiBGb28g
PSBpbnQ7Ci10eXBlZGVmIEZvbyA9IGludDsKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRl
dmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRT
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25z
dCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAg
IAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxv
YXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0
cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2Ny
aXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2
aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdl
dEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2Up
LnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkg
ewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Q
QVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTIyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIwZDgyYzEzNDhjOTY1OGQxYWM0
NzlhYWY4ODQzMWIyMjdiY2UzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVs
ZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSBgCi1zdHJ1Y3QgRm9vIHsKLSAgICBpbnQgeDsKLX0KLXN0cnVjdCBGb28gewotICAgIGlu
dCB4OwotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEs
IDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZp
Y2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9s
b2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwg
dmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAg
ICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgp
OwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVu
KGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7
Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMtMjMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yMy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5Yjg4OTMxZWE3YjlmOGVlOTVjM2EwZTFhNGI3MzRjOTBiZTc0NGU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy0yMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWVudW0gRm9vIHsK
LSAgICB4Ci19Ci1lbnVtIEZvbyB7Ci0gICAgeAotfQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50
U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3Rh
cnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJh
Z21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFn
bWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVy
dGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3Qg
ZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlh
bmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTog
ImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAg
IGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0
OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsg
Ly8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7
Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6
IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZl
cnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRpb24iKTsK
LSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAgIHJldHVy
biBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRl
dmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIpOwot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRl
ci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4
YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRl
LXNoYWRlci1tb2R1bGVzLTI0LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJjNjNkYTY2NDVhZDBkMWQzMmNkNTQ4NGU0MjM1ZjdiOGYzMGY5ZDcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI0Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIHsKLSAgICByZXR1cm4gMTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRl
cihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0
dXJuIGZsb2F0NChzYXR1cmF0ZSgzLCA0KSwgc2F0dXJhdGUoMiksIDEsIDEpOwotfQotYDsKLQot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUg
PSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2Ug
PSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIi
fTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRv
cG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3Rh
dGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3Jp
dGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNp
bFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYs
IGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07
Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ks
IHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0
ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yID0g
e3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BV
QnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhC
dWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJh
eVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNV0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzhdID0g
MC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJy
YXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTVdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKLSAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVs
bDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNv
bW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFswXSk7Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0p
OwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0
KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRl
U3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy0yNS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0y
NS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQ2ZGY1NmY5ZDhmOWMzNzZl
MzZiOTE3OGZjMmQ1Yjg0MzRlMTcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0
IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRp
b24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVy
U291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyMihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNv
bnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0g
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50
cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9k
dWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07
Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNv
bnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9u
ZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0g
e307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBo
YUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxM
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0
dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29u
c3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhC
dWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0g
e2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
ZGV2aWNlLnB1c2hFcnJvclNjb3BlKCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVU
b3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3Rh
dGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2Nv
cGUoKTsKLX0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
eCkgewotICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNz
ZWQoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy0yNi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZGQxODRkYmZlYmE0M2M4YTI3MjE1YTRiOTZmZjExOGJiNzcwNzM1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjYuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0yNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDI1ZTkzMGY4N2ZmZWE2
MmIyNzdhODM3YzlmZWE0N2I4NzViNGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0yNi5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTA3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0
NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0
aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qg
dmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVy
dGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAg
IGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAg
ICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3Qg
cmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07
Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxl
bmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmli
dXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBp
bnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25z
dCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZl
cnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZEdyb3VwTGF5b3V0czogW119OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgdmVydGV4
QnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2
ZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXJBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4
QnVmZmVyRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXJBcnJheUJ1
ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJB
cnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbM10gPSAxOwotICAg
IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxv
YXQzMkFycmF5WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
ckZsb2F0MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTNdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyLnVubWFwKCk7Ci0KLSAgICBj
b25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwotICAgIGNvbnN0IHN3YXBD
aGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07Ci0gICAgY29u
c3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3Jp
cHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4
dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVh
dGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQgPSB7cjogMCwgZzogMCwg
YjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDog
b3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwg
c3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBp
cGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0
ZXhCdWZmZXJdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZm
ZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihk
ZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9u
KCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3LWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZk
ZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTI3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjU0MmZlZTU1NTZlOTU0MTU4MzliYmVhYWIyYWJhYTk3NjVjMjQ5OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMjcuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNl
ID0gYAotdmVydGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmli
dXRlKDApKSA6IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1j
b25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbiwgYm9vbCBpc0ZvbnRGYWNlIDogU1Zf
SXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzLTMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzEy
N2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy0zLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy0zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1v
ZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmZGNmOTIxNWRjYzhhOTg3ZDk4OTA0ZmJjY2M3MjQ1NWM2ZTM3N2IwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy0zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNo
YWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAx
LCAxLCAxKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7
Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdt
ZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsK
LSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZp
Y2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNo
YWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hh
ZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVu
dFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0
cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBj
dWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2Jh
OHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVD
b2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAK
LSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0
NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmlj
ZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2Vk
KCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVk
KCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsK
LSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy00LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9z
ZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmNhYmJjYzE4ODRkYjk2NjQzZDc4OTg2NWRh
YWRkMTc1Zjk0NjczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBh
cmF0ZS1zaGFkZXItbW9kdWxlcy00Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXR5cGVkZWYgRm9vID0gaW50OwotdmVy
dGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6
IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19YDsKLQotY29uc3QgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBgCi1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIEZvbyB4OwotICAg
IHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFy
dChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRl
U2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFn
bWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdt
ZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0
ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBm
cmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFu
Z2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAi
Y3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAg
Y29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAv
LyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
LSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDog
ImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDog
W2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVy
dGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21l
bnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0
ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0
UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcx
OGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFk
ZXItbW9kdWxlcy01LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
UEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzlhOGI4NWI5OGE0MjYzOTNjNzE3
MTliMTE2Y2E5NzlkYTllMzdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxl
cy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy01Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBGb28gewotICAg
IGludCB4OwotfQotCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1g
OwotCi1jb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGAKLWZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbikgOiBTVl9UYXJnZXQgMCB7
Ci0gICAgRm9vIHg7Ci0gICAgcmV0dXJuIGZsb2F0NCgxLCAxLCAxLCAxKTsKLX0KLWA7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVs
ZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0p
OwotICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFn
ZSA9IHttb2R1bGU6IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZl
VG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0
ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhh
QmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JT
dGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3
cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVu
Y2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2Nh
dGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAx
NiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
XTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgZGV2aWNlLnB1c2hFcnJvclNjb3Bl
KCJ2YWxpZGF0aW9uIik7Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gZGV2aWNlLnBvcEVycm9yU2NvcGUoKTsKLX0KLXdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oeCkgewotICAgICAgICBpZiAoeCkK
LSAgICAgICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMtNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
c2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtNi1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MTI3YTBmYjBmNDMwNjQ2ZGRl
N2QxZDU3YWQzNTYzYWNmNzE4ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy02Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDgy
YWZhNTAyNGEzOGM5MjE3ZjYxZTUxNzQ3OGQzMzlhNGQ3NDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTYuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29uc3QgdmVydGV4U2hhZGVyU291cmNlID0gYAot
ZW51bSBGb28gewotICAgIHYKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBw
b3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxv
YXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICBGb28geCA9IEZvby52OwotICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwg
MSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2
ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0
ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTog
ZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAg
IGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCBy
YXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsK
LSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9Owot
ICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVu
ZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1
dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlu
cHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0
IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
R3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGRldmlj
ZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIpOwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsK
LSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1t
b2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXIt
bW9kdWxlcy03LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZk
ZDE4NGRiZmViYTQzYzhhMjcyMTVhNGI5NmZmMTE4YmI3NzA3MzUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTctZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
L3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy03Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNzdkYjY0MjUxOTc0MmNmZDQ1YzFjOTI1
M2M2OTQyOGQ3MTYwZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzLTcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLWZsb2F0NCBoZWxwZXIoKSB7Ci0gICAg
cmV0dXJuIGZsb2F0NCgwLCAwLCAwLCAwKTsKLX0KLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVy
KGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0
dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxv
YXQ0IGhlbHBlcigpIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6
IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gaGVscGVyKCk7Ci19Ci1gOwotCi1jb25zdCBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHZlcnRleFNoYWRlck1vZHVsZSA9IGRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHZlcnRleFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IGZyYWdtZW50U2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTog
ZnJhZ21lbnRTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6
IHZlcnRleFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNv
bnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBmcmFnbWVudFNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAi
dHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZh
Y2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsK
LSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zv
cm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1
fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBu
dWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9y
bWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRl
U2V0OiBbYXR0cmlidXRlXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0XTsKLSAgICBjb25z
dCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtdfTsKLSAgICBjb25z
dCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0g
e3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXph
dGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBz
YW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2Fn
ZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHZlcnRleEJ1
ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyRGVzY3JpcHRvcik7Ci0gICAg
Y29uc3QgdmVydGV4QnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9h
dDMyQXJyYXkodmVydGV4QnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0
MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzFdID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNF0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFy
cmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAg
dmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMV0gPSAx
OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlb
MTRdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZl
cnRleEJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9y
bWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmln
dXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1
cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0
dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0
IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0g
ICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6
IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNv
bnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29k
ZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsKLSAgICByZW5kZXJQ
YXNzRW5jb2Rlci5kcmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7
Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFy
YXRlLXNoYWRlci1tb2R1bGVzLTgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy04
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0
ZS1zaGFkZXItbW9kdWxlcy04Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQwNWFkYzk4YzUwYjg3NDM2MjNhM2E4MjBjMjcyY2Zh
YzhhYjU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy04Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNv
bnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJu
IHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hhZGVyU291cmNlID0gYAotZmxvYXQg
c2F0dXJhdGUoZmxvYXQgeCkgewotICAgIHJldHVybiAwOwotfQotZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAw
IHsKLSAgICByZXR1cm4gZmxvYXQ0KDEsIDEsIDEsIDEpOwotfQotYDsKLQotYXN5bmMgZnVuY3Rp
b24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3QgdmVydGV4U2hhZGVyTW9kdWxlID0gZGV2aWNl
LmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogdmVydGV4U2hhZGVyU291cmNlfSk7Ci0gICAgY29u
c3QgZnJhZ21lbnRTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2Rl
OiBmcmFnbWVudFNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVs
ZTogdmVydGV4U2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IGZyYWdtZW50U2hhZGVyTW9kdWxlLCBlbnRy
eVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9
ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250
RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9
IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlID0ge3NoYWRlckxvY2F0aW9uOiAwLCBm
b3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1
dGVTZXQ6IFthdHRyaWJ1dGVdfTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXRdOwotICAgIGNv
bnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307Ci0KLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW119OwotICAgIGNv
bnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUoInZhbGlkYXRp
b24iKTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2Us
IGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNv
bG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAx
LCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRl
dmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOwotICAg
IHJldHVybiBkZXZpY2UucG9wRXJyb3JTY29wZSgpOwotfQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbih4KSB7Ci0gICAgICAgIGlmICh4KQotICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
IiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9k
dWxlcy05LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXBhcmF0ZS1z
aGFkZXItbW9kdWxlcy9zZXBhcmF0ZS1zaGFkZXItbW9kdWxlcy05LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJh
dGUtc2hhZGVyLW1vZHVsZXMtOS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICsw
LDAgQEAKLVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1
bGVzLTkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4M2Y1M2M3ODRlOWFh
N2RmODg1OGZjOGRkN2RjZmZjZDk5NGJjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtOS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9z
aXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX1gOwotCi1jb25zdCBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IGAKLXR5cGVkZWYgYm9vbDIgPSBpbnQ7Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24pIDogU1ZfVGFyZ2V0IDAgewot
ICAgIHJldHVybiBmbG9hdDQoMSwgMSwgMSwgMSk7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBz
dGFydChkZXZpY2UpIHsKLSAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3Jl
YXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBm
cmFnbWVudFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZy
YWdtZW50U2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2
ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25z
dCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRy
aWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNl
OiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3Jt
YXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1d
OyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1h
dDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNl
dDogW2F0dHJpYnV0ZV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3Qg
cGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yKTsKLQotICAgIGRldmljZS5wdXNoRXJyb3JTY29wZSgidmFsaWRhdGlvbiIp
OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJh
Z21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JT
dGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxh
eW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNl
LmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0gICAgcmV0
dXJuIGRldmljZS5wb3BFcnJvclNjb3BlKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQo
ZGV2aWNlKS50aGVuKGZ1bmN0aW9uKHgpIHsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0
ZXN0UGFzc2VkKCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5j
dGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVz
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVy
LW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkMTg0ZGJmZWJhNDNjOGEyNzIxNWE0Yjk2ZmYxMThiYjc3
MDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0Pgot
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Nl
cGFyYXRlLXNoYWRlci1tb2R1bGVzL3NlcGFyYXRlLXNoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hh
ZGVyLW1vZHVsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5ZDg1NWU4
NGU5ZTQ1NjkwMmZkOWQ4MTFkZDg1OTUwMzQxNWYwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2VwYXJhdGUt
c2hhZGVyLW1vZHVsZXMvc2VwYXJhdGUtc2hhZGVyLW1vZHVsZXMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHZlcnRleFNoYWRlclNvdXJjZSA9IGAKLXZlcnRleCBm
bG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Q
b3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfWA7Ci0KLWNvbnN0IGZyYWdtZW50U2hh
ZGVyU291cmNlID0gYAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KDEs
IDEsIDEsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25z
dCB2ZXJ0ZXhTaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiB2
ZXJ0ZXhTaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBmcmFnbWVudFNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IGZyYWdtZW50U2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiB2ZXJ0ZXhTaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogZnJhZ21lbnRTaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9Owot
ICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25z
dCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUi
fTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9
OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFC
bGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAot
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRy
aWJ1dGUgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0
IGlucHV0ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZV19OwotICAgIGNv
bnN0IGlucHV0cyA9IFtpbnB1dF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVm
ZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHti
aW5kR3JvdXBMYXlvdXRzOiBbXX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2Uu
Y3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFn
ZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRl
cHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlw
ZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHZlcnRleEJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlckFycmF5QnVm
ZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0
ZXhCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlckFycmF5
QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZl
cnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXJG
bG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVs5
XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXJGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXJGbG9hdDMy
QXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlckZsb2F0MzJBcnJheVsxM10gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXJGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIudW5tYXAoKTsKLQotICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKLSAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3Zl
cnRleEJ1ZmZlcl0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAw
KTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1
ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1
Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9u
KGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2Fu
dmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjI0NDc2N2JlMTdiMWJjOGJlY2ZhYTVj
YTVmN2Y1NzhlY2MxMTQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zZXR0ZXItc3BlYy10ZXN0cy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBzZXR0ZXJXaXRoTWF0
Y2hlZFR5cGUKLVBBU1Mgc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWQKLVBBU1Mgc2V0dGVyV2l0
aE5vR2V0dGVyT3ZlcmxvYWRGaXhlZAotUEFTUyByZWN1cnNpdmVTZXR0ZXJzCi1QQVNTIGxvbmVT
ZXR0ZXIKLVBBU1MgbG9uZVNldHRlclBvaW50ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NldHRlci1zcGVjLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTA0MDUwOWVlNmFjMjE3NDkyYjNlYmQyNWI1ZmEwYTc1YjE1ZGI4OS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc2V0dGVyLXNwZWMtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5h
bWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3Qgc3RydWN0cy48L3RpdGxl
PgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNv
bnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zZXR0ZXJXaXRoTWF0Y2hlZFR5cGUg
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIGludCBvcGVy
YXRvci5mb28oaW50KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gNTsKLSAgICAgICAg
fQotICAgICAgICBpbnQgb3BlcmF0b3IuZm9vPShpbnQsIGludCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIDU0MzsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAgICAg
ICAgICAgaW50IHg7Ci0gICAgICAgICAgICB4LmZvbyA9IDQyOwotICAgICAgICAgICAgcmV0dXJu
IHg7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IGJhcigpIHsKLSAgICAgICAgICAgIGludCB4Owot
ICAgICAgICAgICAgcmV0dXJuIHguZm9vOwotICAgICAgICB9Ci0gICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3ZlcmxvYWQgPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIHN0cnVjdCBCYXIgeyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKEZv
bykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNTM0OwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgQmFyIG9wZXJhdG9yLmZvbz0oQmFyLCBpbnQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJhcigpOwotICAgICAgICAgICAgfQotICAgICAg
ICBgKTsKLSAgICAgICAgCi19Ci0KLXdobHNsVGVzdHMuc2V0dGVyV2l0aE5vR2V0dGVyT3Zlcmxv
YWRGaXhlZCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKGAKLSAgICAgICAg
c3RydWN0IEJhciB7IH0KLSAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhCYXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiA1MzQ7Ci0gICAgICAgIH0KLSAgICAgICAgQmFyIG9wZXJhdG9y
LmZvbz0oQmFyLCBpbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBCYXIoKTsKLSAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKCkgewotICAgICAgICAgICAgQmFyIGJhcjsKLSAgICAg
ICAgICAgIHJldHVybiBiYXIuZm9vOwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKSB7Ci0g
ICAgICAgICAgICBCYXIgYmFyOwotICAgICAgICAgICAgYmFyLmZvbyA9IDUyOwotICAgICAgICAg
ICAgcmV0dXJuIGJhci5mb287Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5y
ZWN1cnNpdmVTZXR0ZXJzID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIGludCB4OwotICAgICAgICAgICAgaW50
IHk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RydWN0IEJhciB7Ci0gICAgICAgICAgICBpbnQgYTsK
LSAgICAgICAgICAgIGludCBiOwotICAgICAgICB9Ci0gICAgICAgIGludCBvcGVyYXRvci5jKEJh
ciBiYXIpIHsgcmV0dXJuIGJhci5hOyB9Ci0gICAgICAgIEJhciBvcGVyYXRvci5iYXIoRm9vIGZv
bykgeyBCYXIgYjsgYi5hID0gZm9vLng7IGIuYiA9IGZvby55OyByZXR1cm4gYjsgfQotICAgICAg
ICBCYXIgb3BlcmF0b3IuYz0oQmFyIGJhciwgaW50IG5ld3ZhbCkgeyBiYXIuYSA9IG5ld3ZhbDsg
cmV0dXJuIGJhcjsgfQotICAgICAgICBGb28gb3BlcmF0b3IuYmFyPShGb28gZm9vLCBCYXIgbmV3
dmFsKSB7IGZvby54ID0gbmV3dmFsLmE7IGZvby55ID0gbmV3dmFsLmI7IHJldHVybiBmb287IH0K
LSAgICAgICAgaW50IGYoKSB7Ci0gICAgICAgICAgICBGb28gZm9vOwotICAgICAgICAgICAgZm9v
LnggPSBmb28ueSA9IDM7Ci0gICAgICAgICAgICBmb28uYmFyLmMgPSA4OwotICAgICAgICAgICAg
cmV0dXJuIGZvby54KjEwICsgZm9vLnk7Ci0gICAgICAgIH0KLSAgICBgKTsKLX0KLQotd2hsc2xU
ZXN0cy5sb25lU2V0dGVyID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvci5mb289KGludCwgaW50KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5sb25lU2V0dGVyUG9pbnRlciA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB0aHJlYWQgaW50KiBvcGVyYXRvci5mb289KHRocmVhZCBpbnQqIHB0ciwgaW50KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwdHI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJy
YXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtYXJyYXlz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0
MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBBU1MKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1hcnJheXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTczYWNkNDgyOWYzMTM3Njk0OGU5Y2MwYzZkYzc4MDFmZDNkYWU1MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLWFycmF5cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Y29uc3Qgc2hhZGVyU291cmNlID0gYAotdm9pZCBmaWxsKHRocmVhZCBpbnRbXSBhcnJheSwgaW50
IHZhbHVlKSB7Ci0gICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgYXJyYXlbaV0gPSB2YWx1ZTsKLSAgICB9Ci19Ci0KLVtudW10aHJlYWRzKDEsIDEs
IDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJl
Z2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElEIDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgewotICAg
IGludFs0Ml0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0
dXJuOwotICAgIGZvciAodWludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIGlmIChhcnJheVtpXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGFycmF5WzBdID0gNTE3OwotICAgIGlmIChhcnJheVswXSAhPSA1MTcpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHRocmVhZCBpbnRbXSBhcnJheVB0ciA9IEBhcnJheTsKLSAgICBpZiAoYXJyYXlQ
dHIubGVuZ3RoICE9IDQyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnRbNDJdIGFycmF5MjsK
LSAgICBhcnJheTIgPSBhcnJheTsKLSAgICBpZiAoYXJyYXkyLmxlbmd0aCAhPSA0MikKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChhcnJheTJbMF0gIT0gNTE3KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmaWxsKGFycmF5UHRyLCAxMzM3KTsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJh
eVB0ci5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYXJyYXlQdHJbaV0gIT0gMTMzNykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGFycmF5W2ldICE9IDEzMzcpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGFycmF5MlswXSAhPSA1MTcpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoYXJyYXkyLmxlbmd0aCAhPSA0MikKLSAgICAgICAgcmV0dXJuOwot
ICAgIGZvciAodWludCBpID0gMTsgaSA8IGFycmF5Mi5sZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoYXJyYXkyW2ldICE9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVm
ZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBj
b25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFk
ZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1
bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
LSAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBl
bGluZUxheW91dH07Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNv
bXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNp
emUgPSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsKLSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0g
YXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJy
YXkgPSBuZXcgSW50MzJBcnJheShidWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQz
MkFycmF5WzBdID0gMDsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwg
R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAg
Y29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRl
c2NyaXB0b3IpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNC
dWZmZXIsIHNpemV9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1
ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1
dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBj
b21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAg
Y29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5
bmMoKTsKLSAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRz
QXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAg
ICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAg
ICByZXN1bHRzQnVmZmVyLnVubWFwKCk7Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXItc2V0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zaW1wbGUtZ2V0dGVyLXNldHRlci1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmODdiNWM2ODE1OGVm
NDM3OTg4NzBiNzBhZTUyOTJjNTNmZjE0NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS1nZXR0ZXIt
c2V0dGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNT
IHNpbXBsZVByb3BlcnR5R2V0Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zaW1wbGUtZ2V0dGVyLXNldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4
OTMzZmU1OGM1MmE2NDYwYzE0OGFlYjJkYzdkNDQxM2JhZTFkMzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Np
bXBsZS1nZXR0ZXItc2V0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9
InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFy
bmVzcy48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5zaW1wbGVQcm9w
ZXJ0eUdldCA9IGFzeW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgc3Ry
dWN0IEZvbyB7Ci0gICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIGZvby54ID0g
NzgwNDsKLSAgICAgICAgICAgIHJldHVybiBmb28ueDsKLSAgICAgICAgfQotICAgIGA7Ci0gICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwg
NzgwNCk7Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmNGU4ZWNkNDU1MTA1NWMzYTQ4OTUw
YmY3YzE0M2FjMDc1NzBjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIHNpbXBsZVVucmVhY2hhYmxl
Q29kZQotUEFTUyBzaW1wbGVOb1JldHVybgotUEFTUyBzaW1wbGVSZWN1cnNpdmVTdHJ1Y3QKLVBB
U1Mgc2ltcGxlUmVjdXJzaW9uCi1QQVNTIHNpbXBsZVJlY3Vyc2lvbjIKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NpbXBsZS10ZXN0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOGRjM2JmYjU0NzI3MTkxMWY5ZDkwZmIwZDAwNTg0MDQ0NDVhMmUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zaW1wbGUtdGVzdHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0i
dGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJu
ZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnNpbXBsZVVucmVh
Y2hhYmxlQ29kZSA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAg
IGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZU5vUmV0dXJuID0gYXN5bmMgKCkgPT4gewotICAg
IGF3YWl0IGNoZWNrRmFpbCgiaW50IGZvbygpIHsgfSIpOwotfQotCi13aGxzbFRlc3RzLnNpbXBs
ZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIEZvbyBm
b287Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnNpbXBsZVJl
Y3Vyc2lvbiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZvbyh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMu
c2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGludCBiYXIoaW50IHgpIHsKLSAgICAgICAgICAgICAgICBm
b28oeCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB2b2lkIGZvbyhpbnQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb28o
YmFyKHgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNs
VGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTRiMThhODg4OTY1MmJjY2FhNzBkYmI0Yzk3YjIzNjBlZTUzMDg2Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc2ltcGxlV2hpbGUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NpbXBsZS13aGlsZS1sb29wLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODA3MTFjMThlMTZjZjc2NjZmNzJlNmU4MmVjMmZkZjBlMmI3ZjdkYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc2ltcGxlLXdoaWxlLWxvb3AuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04Pgot
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCB0aGUgV0hM
U0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3Rz
LnNpbXBsZVdoaWxlID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoeCA8IDEzKQot
ICAgICAgICAgICAgICAgIHggPSB4ICogMjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAg
ICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgMTYpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3Rz
KTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NtYWxsZXItdGhhbi0zMi1iaXQtdHlwZXMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDQ3ZWJmZjZiN2NiMTJmNDdlYzgwZWVjM2M4OWI0
YjgwMTgzMWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHNtYWxsVHlwZXNT
aG91bGRGYWlsCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zbWFsbGVy
LXRoYW4tMzItYml0LXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc21hbGxl
ci10aGFuLTMyLWJpdC10eXBlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
MDU2MGE3Y2I3ZTllYTRiY2I4ODI0YzQzYTIxY2I0YTdjZTkzMGIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9z
bWFsbGVyLXRoYW4tMzItYml0LXR5cGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPnNtYWxsZXIgdGhhbiAzMi1i
aXQgdHlwZXMgc2hvdWxkIG5vdCBwYXJzZS48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQot
d2hsc2xUZXN0cy5zbWFsbFR5cGVzU2hvdWxkRmFpbCA9IGFzeW5jICgpID0+IHsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVjaGFyIHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBjaGVja0ZhaWwoYAot
ICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgeDsKLSAgICAg
ICAgfQotICAgIGApOyAKLQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9v
KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2hvcnQgeDsKLSAgICAgICAgfQotICAgIGApOyAK
LQotICAgIGF3YWl0IGNoZWNrRmFpbChgCi0gICAgICAgIHZvaWQgZm9vKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdXNob3J0IHg7Ci0gICAgICAgIH0KLSAgICBgKTsgCi0KLSAgICBhd2FpdCBj
aGVja0ZhaWwoYAotICAgICAgICB2b2lkIGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGhh
bGYgeDsKLSAgICAgICAgfQotICAgIGApOyAKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91cC0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zcGFyc2UtYmluZC1ncm91cC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3Bh
cnNlLWJpbmQtZ3JvdXAtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Mz
MTdmMDFmMWRiZDRjY2I0MmQzNjJlY2RjOTBmZmY1MmE4MDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFy
c2UtYmluZC1ncm91cC0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNo
YWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1
dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTEpKSB7Ci0gICAgYnVm
ZmVyWzBdID0gMTc7Ci19Ci1gOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJN
b2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywg
dHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3Jl
YXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0
IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVs
aW5lTGF5b3V0fTsKLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qgc2l6
ZSA9IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDE7Ci0KLSAgICBjb25zdCBidWZm
ZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH0pOwotICAgIGNvbnN0IGJ1ZmZlcjIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8
IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfSk7Ci0KLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7
YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1ZmZlcjEsIHNpemV9fSwge2JpbmRpbmc6
IDEsIHJlc291cmNlOiB7YnVmZmVyOiBidWZmZXIyLCBzaXplfX1dfSk7Ci0KLSAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotICAg
IGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBh
c3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOwotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyMi5tYXBS
ZWFkQXN5bmMoKTsKLSAgICBjb25zdCByZXN1bHRzRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJB
cnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChyZXN1bHRzRmxvYXQzMkFycmF5WzBd
ID09IDE3KQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RG
YWlsZWQoIiIpOwotICAgIGJ1ZmZlcjIudW5tYXAoKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAg
IHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQo
IiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1ncm91
cC0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zcGFyc2UtYmluZC1n
cm91cC0zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdh
MGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNl
LWJpbmQtZ3JvdXAtMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LVBBU1MKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAt
My5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLTMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRiZjE1ODU2ODFlZTBlOTI5NzY4ZGYx
MDU0OGE4YzdlZDNlZTBjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtMy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi1bbnVt
dGhyZWFkcygxLCAxLCAxKV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBmbG9h
dFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUxKSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsK
LQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxl
ID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAg
Y29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAi
Y29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9
IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiAwLCB0eXBlOiAic3RvcmFnZS1i
dWZmZXIifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZl
ciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91
cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19Owot
ICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29u
c3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVC
dWZmZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7
bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHJlc291cmNl
OiB7YnVmZmVyOiBidWZmZXIxLCBzaXplfX0sIHtiaW5kaW5nOiAxLCByZXNvdXJjZToge2J1ZmZl
cjogYnVmZmVyMiwgc2l6ZX19XX0pOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBjb21wdXRlUGFzc0Vu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgY29tcHV0ZVBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOwot
ICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGNvbnN0IHJl
c3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlcjIubWFwUmVhZEFzeW5jKCk7Ci0gICAgY29u
c3QgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0c0FycmF5QnVm
ZmVyKTsKLSAgICBpZiAocmVzdWx0c0Zsb2F0MzJBcnJheVswXSA9PSAxNykKLSAgICAgICAgdGVz
dFBhc3NlZCgiIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICBidWZm
ZXIyLnVubWFwKCk7Ci19Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2lj
RGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkg
ewotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1
NjNhY2Y3MThkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3NwYXJzZS1iaW5kLWdyb3VwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTkzODIyNGMzZjlkNGNiOWMxNDI3N2YzYjU0ZmZmMmYxYjZmOTVjYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvc3BhcnNlLWJpbmQtZ3JvdXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwgMSldCi1jb21wdXRlIHZvaWQg
Y29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCwgc3BhY2Ux
KSkgewotICAgIGJ1ZmZlclswXSA9IDE3OwotfQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQo
ZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAg
Y29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJp
bmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2Jp
bmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXQsIGJpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBGbG9hdDMyQXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiAxOwotCi0gICAgY29uc3QgYnVmZmVyMSA9IGRldmljZS5jcmVhdGVCdWZm
ZXIoe3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2Uu
TUFQX1JFQUR9KTsKLSAgICBjb25zdCBidWZmZXIyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6
ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVB
RH0pOwotCi0gICAgY29uc3QgYmluZEdyb3VwMSA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoe2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW3tiaW5kaW5nOiAwLCByZXNvdXJjZTog
e2J1ZmZlcjogYnVmZmVyMSwgc2l6ZX19XX0pOwotICAgIGNvbnN0IGJpbmRHcm91cDIgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IFt7
YmluZGluZzogMCwgcmVzb3VyY2U6IHtidWZmZXI6IGJ1ZmZlcjIsIHNpemV9fV19KTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29uc3QgY29tcHV0ZVBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5D
b21wdXRlUGFzcygpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShjb21wdXRl
UGlwZWxpbmUpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdy
b3VwMSk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAy
KTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2goMSwgMSwgMSk7Ci0gICAgY29tcHV0
ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFu
ZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7Ci0KLSAgICBjb25zdCByZXN1bHRzQXJyYXlCdWZmZXIgPSBhd2FpdCBidWZmZXIy
Lm1hcFJlYWRBc3luYygpOwotICAgIGNvbnN0IHJlc3VsdHNGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNGbG9hdDMyQXJy
YXlbMF0gPT0gMTcpCi0gICAgICAgIHRlc3RQYXNzZWQoIiIpOwotICAgIGVsc2UKLSAgICAgICAg
dGVzdEZhaWxlZCgiIik7Ci0gICAgYnVmZmVyMi51bm1hcCgpOwotfQotCi13aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFBh
c3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjZlOTM1OGY1OWRlYjFlOWFm
NzMwNjM0NDY3OGI4ZDIzYzAyYTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdG9yZS1udWxsLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHN0b3JlTnVsbAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLW51bGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWVkMmZkMzIyYjJlNzUxOTc3NTUyNDgzNWMzN2Y0MjgzZDcxMDcxNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtbnVsbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuc3RvcmVOdWxsID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQg
Zm9vKCkgeyAqbnVsbCA9IDQyOyB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJv
cGVybHktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2Jl
N2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUt
dG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KLTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci1kcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM4OTNjNTkzZTFiYzBlZWY5ZDg0
ZmMxZDQwYTRiYzhmMWU0YjhkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RvcmUtdG8tcHJvcGVydHktdXBk
YXRlcy1wcm9wZXJseS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hh
ZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAgZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Ci19Ci0KLXN0cnVj
dCBCYXIgewotICAgIGludCB4OwotICAgIGZsb2F0IHk7Ci0gICAgaW50IHo7Ci19Ci0KLXN0cnVj
dCBGb28gewotICAgIEJhciBiYXI7Ci0gICAgQmFyIGJhcjI7Ci19Ci0KLXRocmVhZCBGb28qIHB0
cigpIHsKLSAgICBGb28gbG9jYWw7Ci0gICAgcmV0dXJuICZsb2NhbDsKLX0KLQotdmVydGV4IFZl
cnRleE91dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9h
dCBzaGFkZSA6IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICB0
aHJlYWQgRm9vKiBwID0gcHRyKCk7Ci0gICAgcC0+YmFyMi55ID0gMS4wOwotICAgIGZsb2F0IHZh
bHVlID0gcC0+YmFyMi55OwotCi0gICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
cmVzdWx0LnNoYWRlID0gdmFsdWU7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mcmFnbWVu
dCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1Zf
VGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsK
LX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9k
dWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0g
ICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6
ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25zdCBwcmlt
aXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVyaXphdGlv
blN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAgY29uc3Qg
YWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBjb25zdCBj
b2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxl
bmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25zdCBkZXB0
aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxv
Y2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0IGF0dHJp
YnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0OiAxNn07
Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVzfTsKLSAg
ICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0
ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9y
bS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlv
dXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxh
eW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3Bv
bG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUs
IHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0g
ICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0LCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIw
RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQg
dmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7
Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6
ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2Uu
VU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVy
Lm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7
Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNp
emU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3Vy
Y2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5
b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAg
IGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3Jp
cHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOwot
ICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVu
b3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4o
c3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFp
bi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0
cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCByZWQg
PSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9
IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxv
YWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07Ci0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNobWVudH07
Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRl
clBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJz
KDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19
LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0
d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDNhNTIxMTMwOWYwNmNiZDgzOWIwZGE2ZGFmZWI0MDQ0MTZkZGFk
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDQgKzAsMCBAQAotCi1QQVNTIGVtcHR5U3RydWN0Ci1QQVNTIHNldHRpbmdBbkFycmF5SW5zaWRl
QVN0cnVjdAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhkMGY2ODYwNDdlZWUxZjY0NWU1OTc3MDI1NDBjMDYxMDA2OTE1Yjcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3N0cnVjdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBu
YW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1j
b25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZW1wdHlTdHJ1Y3QgPSBhc3luYyAo
KSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQot
ICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgVGhpbmd5IHRoaW5neTsK
LSAgICAgICAgICAgIHJldHVybiA0NjsKLSAgICAgICAgfQotICAgIGA7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNDYpOwotfTsK
LQotd2hsc2xUZXN0cy5zZXR0aW5nQW5BcnJheUluc2lkZUFTdHJ1Y3QgPSBhc3luYyAoKSA9Pgot
ewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAg
IGludFsxXSBhcnJheTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgRm9vIGZvbzsKLSAgICAgICAgICAgIHRocmVhZCBGb28qIGJhciA9ICZmb287
Ci0gICAgICAgICAgICBiYXItPmFycmF5WzBdID0gMjE7Ci0gICAgICAgICAgICByZXR1cm4gZm9v
LmFycmF5WzBdOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMSk7Ci19OwotCi1ydW5UZXN0cyh3
aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51
bWVyYXRpb24tZWxlbWVudC1jbGFzaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk1ZTBiZjYwZTUxOGI5ZjliNGNkMjAzNGY0MzU3MDg2NzA3OWU3NzguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1lbnVtZXJhdGlvbi1lbGVtZW50LWNsYXNoLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIHN3aXRjaEJyZWFr
Ci1QQVNTIHVua25vd25WYXJpYWJsZUluRG90RXhwcmVzc2lvbgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWVudW1lcmF0aW9uLWVsZW1lbnQt
Y2xhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtZW51
bWVyYXRpb24tZWxlbWVudC1jbGFzaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMTcyODk0M2MxNTg2NzViY2JkMTU3ZTA1YTdjOGMwNDRjNGFlZTAyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC9zdHJ1Y3R1cmUtZmllbGQtZW51bWVyYXRpb24tZWxlbWVudC1jbGFzaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxz
bFRlc3RzLnN3aXRjaEJyZWFrID0gYXN5bmMgKCkgPT4KLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGAK
LSAgICAgICAgc3RydWN0IEZvbyB7IGludCB4OyB9Ci0gICAgICAgIGVudW0gQmFyIHsgeCA9IDQy
LCB5ID0gMCB9Ci0gICAgICAgIGludCBmKCkgewotICAgICAgICAgICAgRm9vIEJhcjsKLSAgICAg
ICAgICAgIHJldHVybiBpbnQoQmFyLngpOwotICAgICAgICB9Ci0gICAgYDsKLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZiIsIFtdKSwgMCk7Ci19Ci13
aGxzbFRlc3RzLnVua25vd25WYXJpYWJsZUluRG90RXhwcmVzc2lvbiA9IGFzeW5jICgpID0+IHsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkg
ewotICAgICAgICAgICAgICAgIGludCBhID0gdmFyaWFibGUueDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3dpdGNoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmNlNTRjMjI0ZmRhM2FmNzU2OTA2OTczZjFlYjY3NTNl
YTJiYzQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi0KLVBBU1Mgc3dpdGNoQnJlYWsKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3N3aXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3N3aXRjaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTU0YTBiOGYwOTY3
MDRkOWZkMzI0MjMzYWNhOWM1ZmNkODk5NzM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zd2l0Y2guaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Ci08dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rl
c3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsK
LQotd2hsc2xUZXN0cy5zd2l0Y2hCcmVhayA9IGFzeW5jICgpID0+Ci17Ci0gICAgbGV0IHByb2dy
YW0gPSBgCi0gICAgICAgIGludCBmb28oaW50IHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
dCByZXN1bHQgPSAwOwotICAgICAgICAgICAgc3dpdGNoICh4KSB7Ci0gICAgICAgICAgICBjYXNl
IDc2NzoKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gMjc7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIDY5OgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSA3NjI0
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gNDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgYDsKLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoNzY3KV0pLCAyNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY5KV0pLCA3NjI0KTsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCldKSwgNDkp
OwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5LXNwZWMtdGVzdC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOGZhMjdmNjlhMzg1NjhhMzE5
NWJmOWI4ODg5M2RkM2E2MWIyYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHRlcm5hcnlF
eHByZXNzaW9uCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXJuYXJ5
LXNwZWMtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10
ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MjRjZTY1N2M5ZmY3NGI3
YWM4MjdhM2Q5MTFhZmZjYjFmNWMxZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlcm5hcnktc3BlYy10ZXN0
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9
ImxvbmciPgotPHRpdGxlPlRlc3QgaW50IGJpdCBtYXRoLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OwotCi13aGxzbFRlc3RzLnRlcm5hcnlFeHByZXNzaW9uID0gYXN5bmMgKCkgPT4gewotICAg
IGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQgZm9vKGludCB4KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4geCA8IDMgPyA0IDogNTsKLSAgICAgICAgfQotICAgICAgICBpbnQgYmFy
KGludCB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geCA8IDEwID8gMTEgOiB4IDwg
MTIgPyAxNCA6IDE1OwotICAgICAgICB9Ci0gICAgICAgIGludCBiYXooaW50IHgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAzIDwgNCA/IHggOiA1OwotICAgICAgICB9Ci0gICAgYDsK
LSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQoNzY3KV0pLCA1KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMildKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImJhciIsIFttYWtlSW50KDgpXSksIDEx
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiYmFy
IiwgW21ha2VJbnQoOSldKSwgMTEpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMCldKSwgMTQpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMSld
KSwgMTQpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJiYXIiLCBbbWFrZUludCgxMildKSwgMTUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbbWFrZUludCgxMyldKSwgMTUpOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJiYXoiLCBbbWFrZUlu
dCgxNCldKSwgMTQpOwotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAg
ICAgaW50IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAg
ICAgICAgICAgICAgKDQgPCA1ID8geCA6IDcpID0gODsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
YCk7Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9v
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAg
ICBpbnQgeTsKLSAgICAgICAgICAgICAgICAoMCA8IDEgPyB4IDogeSkgPSA0MjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAgICBpbnQgeTsKLSAgICAg
ICAgICAgICAgICB0aHJlYWQgaW50KiB6ID0gJigwIDwgMSA/IHggOiB5KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gKno7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICAgICAgaW50IHk7Ci0gICAgICAg
ICAgICAgICAgdGhyZWFkIGludFtdIHogPSBAKDAgPCAxID8geCA6IHkpOwotICAgICAgICAgICAg
ICAgIHJldHVybiAqejsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgZm9vKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpbnQgeDsKLSAgICAgICAgICAgICAgICBmbG9hdCB5OwotICAgICAg
ICAgICAgICAgIHJldHVybiA0IDwgNSA/IHggOiB5OwotICAgICAgICAgICAgfQotICAgICAgICBg
KTsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBmb28o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiA0IDwgNSA/IDYgOiA3LjA7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsK
LTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC90ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU2Y2Q5YjBiMjQ2MWQ5ZTU2ZjVhNzQ4OGRhNTE4ZjgyN2Q5MjJkMmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDM3ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSA1IGR1cGxpY2F0
ZSB0ZXN0IG5hbWVzOiAiUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4iLCAiUmV0dXJu
IGFuIGV4cGVjdGVkIGludCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUu
IiwgIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4iLCAiUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0NHg0IHZhbHVlLiIKLQotUEFTUyBSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4K
LVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4
cGVjdGVkIGludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIHVpbnQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdCB2YWx1ZS4KLVBBU1MgVXBsb2FkIGFuZCByZXR1
cm4gYSBib29sIHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0IHZhbHVlLgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgdWludCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0IHZhbHVlLgotUEFT
UyBVcGxvYWQgbWFueSBib29sIHZhbHVlcyBhbmQgcmV0dXJuIGEgY2FsY3VsYXRlZCByZXN1bHQu
Ci1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBl
eHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgot
UEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBl
Y3RlZCBmbG9hdDQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0
ZWQgZmxvYXQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuCi1Q
QVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuCi1QQVNTIFJldHVybiBhbiBleHBlY3Rl
ZCB1aW50IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuCi1QQVNT
IFVwbG9hZCBhbmQgY2FsY3VsYXRlIGEgcmVzdWx0IGZyb20gdmFyaWVkIGFyZ3VtZW50IHR5cGVz
LgotUEFTUyBTdG9yZSBpbnRvIGEgZmxvYXQ0W10uCi1QQVNTIFVwbG9hZCBhIGludFtdIGFuZCBz
dG9yZSBpbnRvIGEgaW50W10uCi1QQVNTIFVwbG9hZCBhIGZsb2F0NHg0W10gYW5kIHN0b3JlIGlu
dG8gYSBmbG9hdDR4NFtdLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0eDQgdmFsdWUu
Ci1QQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDR4NCB2YWx1ZS4KLVBBU1MgUmV0dXJuIGFu
IGV4cGVjdGVkIGZsb2F0NHg0IHZhbHVlLgotUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQ0
eDQgdmFsdWUuCi1QQVNTIENvZGUgc2hvdWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3IgaXMg
cmVwb3J0ZWQuCi1QQVNTIFN1Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwg
aXMgYW4gZXJyb3IuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXN0
LWhhcm5lc3MtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVz
cy10ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwODM5ODdhOTJiMTFm
YmU2NjFjNmMyMGY0ZjE1MDU4Mjc0MjMwYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10
ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4K
LTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi1jb25zdCBudW1lcmljU2NhbGFyVHlwZXMgPSBb
ImludCIsICJ1aW50IiwgImZsb2F0Il07Ci0KLWNvbnN0IG51bWVyaWNTY2FsYXJGdW5jcyA9IHsK
LSAgICAiaW50IjogY2FsbEludEZ1bmN0aW9uLAotICAgICJ1aW50IjogY2FsbFVpbnRGdW5jdGlv
biwKLSAgICAiZmxvYXQiOiBjYWxsRmxvYXRGdW5jdGlvbgotfTsKLQotY29uc3Qgc2NhbGFyQXJn
TWFrZXJzID0gewotICAgICJib29sIjogbWFrZUJvb2wsCi0gICAgImludCI6IG1ha2VJbnQsCi0g
ICAgInVpbnQiOiBtYWtlVWludCwKLSAgICAiZmxvYXQiOiBtYWtlRmxvYXQKLX07Ci0KLWNvbnN0
IGFycmF5VHlwZUxlbmd0aHMgPSB7Ci0gICAgImZsb2F0NCI6IDQsCi0gICAgImZsb2F0NHg0Ijog
MTYKLX07Ci0KLWNvbnN0IGFycmF5RnVuY3MgPSB7Ci0gICAgImZsb2F0NCI6IGNhbGxGbG9hdDRG
dW5jdGlvbiwKLSAgICAiZmxvYXQ0eDQiOiBjYWxsRmxvYXQ0eDRGdW5jdGlvbiwKLX07Ci0KLWNv
bnN0IGFycmF5QXJnTWFrZXJzID0gewotICAgICJmbG9hdDQiOiBtYWtlRmxvYXQ0LAotICAgICJm
bG9hdDR4NCI6IG1ha2VGbG9hdDR4NAotfTsKLQotY29uc3QgZmxvYXQ0eDRleHBlY3RlZCA9IFsw
LCA0LCA4LCAxMiwgMSwgNSwgOSwgMTMsIDIsIDYsIDEwLCAxNCwgMywgNywgMTEsIDE1XTsKLWNv
bnN0IGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQgPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV07Ci1jb25zdCBmbG9hdDRleHBlY3RlZCA9IFswLCAx
LCAyLCAzXTsKLQotbGV0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy5saXRlcmFscyA9
ICgpID0+IHsKLSAgICBjaGVja0Jvb2xzKCJSZXR1cm4gYSBsaXRlcmFsIG9mIHR5cGUgYm9vbC4i
LCAicmV0dXJuIHRydWU7Iik7Ci0gICAgY2hlY2tBcnJheXMoImZsb2F0NCIsICJyZXR1cm4gZmxv
YXQ0KDAsIDEsIDIsIDMpOyIsIFtdLCBmbG9hdDRleHBlY3RlZCk7Ci0gICAgY2hlY2tOdW1lcmlj
U2NhbGFycygicmV0dXJuIDQyOyIsIFtdLCA0Mik7Ci19OwotCi13aGxzbFRlc3RzLnNpbmdsZUFy
Z3VtZW50ID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMoIlVwbG9hZCBhbmQgcmV0dXJuIGEgYm9v
bCB2YWx1ZS4iLCAicmV0dXJuIGluMDsiLCBbdHJ1ZV0pOwotICAgIGNoZWNrQXJyYXlzKCJmbG9h
dDQiLCAicmV0dXJuIGluMDsiLCBbZmxvYXQ0ZXhwZWN0ZWRdLCBmbG9hdDRleHBlY3RlZCk7Ci0g
ICAgY2hlY2tOdW1lcmljU2NhbGFycygicmV0dXJuIGluMDsiLCBbNDJdLCA0Mik7Ci19OwotCi13
aGxzbFRlc3RzLm1hbnlBcmd1bWVudHMgPSAoKSA9PiB7Ci0gICAgY2hlY2tCb29scygiVXBsb2Fk
IG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBhIGNhbGN1bGF0ZWQgcmVzdWx0LiIsCi0gICAg
ICAgICJyZXR1cm4gaW4wICYgaW4xICYgaW4yICYgaW4zICYgaW40ICYgaW41ICYgaW42ICYgaW43
OyIsCi0gICAgICAgIFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlXSk7Ci0KLSAgICBsZXQgYm9keSA9ICJyZXR1cm4gZmxvYXQ0KGluMC54LCBpbjEueSwgaW4y
LnosIGluMy53KTsiCi0gICAgbGV0IGFyZ3MgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDQ7ICsraSkKLSAgICAgICAgYXJncy5wdXNoKGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja0Fy
cmF5cygiZmxvYXQ0IiwgYm9keSwgYXJncywgZmxvYXQ0ZXhwZWN0ZWQpOwotCi0gICAgYm9keSA9
IGByZXR1cm4gaW4wICsgaW4xICsgaW4yICsgaW4zICsgaW40ICsgaW41ICsgaW42ICsgaW43O2A7
Ci0gICAgY2hlY2tOdW1lcmljU2NhbGFycyhib2R5LCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10s
IDI4KTsKLX07Ci0KLXdobHNsVGVzdHMuYnVmZmVyc1dpdGhPbmVWYWx1ZSA9ICgpID0+IHsKLSAg
ICBjb25zdCBib2R5ID0gYHJldHVybiBpbjBbMF07YAotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDQi
LCBib2R5LCBbW2Zsb2F0NGV4cGVjdGVkXV0sIGZsb2F0NGV4cGVjdGVkKTsKLSAgICBjaGVja051
bWVyaWNTY2FsYXJzKGJvZHksIFtbNDJdXSwgNDIpOwotfTsKLQotd2hsc2xUZXN0cy5tdWx0aXBs
ZUJ1ZmZlckFyZ3VtZW50cyA9ICgpID0+IHsKLSAgICBsZXQgYm9keSA9IGAKLSAgICBmbG9hdCB4
ID0gaW4wWzBdLnggKyBpbjBbMV0ueCArIGluMFsyXS54ICsgaW4xLnggKyBpbjJbMF0ueDsKLSAg
ICBmbG9hdCB5ID0gaW4wWzBdLnkgKyBpbjBbMV0ueSArIGluMFsyXS55ICsgaW4xLnkgKyBpbjJb
MF0ueTsKLSAgICBmbG9hdCB6ID0gaW4wWzBdLnogKyBpbjBbMV0ueiArIGluMFsyXS56ICsgaW4x
LnogKyBpbjJbMF0uejsKLSAgICBmbG9hdCB3ID0gaW4wWzBdLncgKyBpbjBbMV0udyArIGluMFsy
XS53ICsgaW4xLncgKyBpbjJbMF0udzsKLQotICAgIHJldHVybiBmbG9hdDQoeCwgeSwgeiwgdyk7
YDsKLSAgICBjaGVja0FycmF5cygiZmxvYXQ0IiwgYm9keSwgW1tmbG9hdDRleHBlY3RlZCwgZmxv
YXQ0ZXhwZWN0ZWQsIGZsb2F0NGV4cGVjdGVkXSwgZmxvYXQ0ZXhwZWN0ZWQsIFtmbG9hdDRleHBl
Y3RlZF1dLCBbMCwgNSwgMTAsIDE1XSk7Ci0KLSAgICBib2R5ID0gYHJldHVybiBpbjBbMF0gKyBp
bjBbMV0gKyBpbjBbMl0gKyBpbjEgKyBpbjJbMF07YDsKLSAgICBjaGVja051bWVyaWNTY2FsYXJz
KGJvZHksIFtbMCwgMSwgMl0sIDMsIFs0XV0sIDEwKTsKLX07Ci0KLXdobHNsVGVzdHMubXVsdGlw
bGVBcmd1bWVudFR5cGVzID0gKCkgPT4gewotICAgIGNvbnN0IHNyYyA9IGBmbG9hdCB0ZXN0KGlu
dCBpLCB1aW50IGMsIGZsb2F0NCBmNCwgZGV2aWNlIHVpbnRbXSB1LCBkZXZpY2UgZmxvYXRbXSBm
cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmbG9hdChpKSArIGZsb2F0KGMpICsgZjQueCArIGY0
LnkgKyBmNC56ICsgZjQudyArIGZsb2F0KHVbMF0pICsgZnNbMF0gKyBmc1sxXTsKLSAgICB9YDsK
LSAgICBjb25zdCBpID0gbWFrZUludCgxKTsKLSAgICBjb25zdCBjID0gbWFrZVVpbnQoMik7Ci0g
ICAgY29uc3QgZjQgPSBtYWtlRmxvYXQ0KFs0LCA1LCA2LCA3XSk7Ci0gICAgY29uc3QgdSA9IG1h
a2VVaW50KFszXSk7Ci0gICAgY29uc3QgZnMgPSBtYWtlRmxvYXQoWzgsIDldKTsKLSAgICB3ZWJH
UFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjYWxsRmxvYXRGdW5jdGlvbihz
cmMsICJ0ZXN0IiwgW2ksIGMsIGY0LCB1LCBmc10pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAg
ICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHJlc3VsdCwgNDUsIGVwc2lsb24sICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICB9KTsKLSAgICB9LCAiVXBsb2FkIGFuZCBj
YWxjdWxhdGUgYSByZXN1bHQgZnJvbSB2YXJpZWQgYXJndW1lbnQgdHlwZXMuIik7Ci19OwotCi13
aGxzbFRlc3RzLmJ1ZmZlclN0b3JlcyA9ICgpID0+IHsKLSAgICBsZXQgc3JjID0gYHZvaWQgdGVz
dChkZXZpY2UgZmxvYXQ0W10gb3V0KSB7Ci0gICAgICAgIG91dFswXSA9IGZsb2F0NCgwLCAxLCAy
LCAzKTsKLSAgICB9YDsKLSAgICBjb25zdCBmbG9hdDRPdXQgPSBtYWtlRmxvYXQ0KFtbMCwgMCwg
MCwgMF1dKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBmbG9hdDRPdXQpOwot
Ci0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gZmxvYXQ0T3V0
LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25z
dCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZv
ciAobGV0IGk7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyhyZXN1bHRbaV0sIGksICJUZXN0IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sICJTdG9yZSBpbnRvIGEgZmxvYXQ0W10uIik7
Ci0KLSAgICBzcmMgPSBgdm9pZCB0ZXN0KGRldmljZSBpbnRbXSBpbiwgZGV2aWNlIGludFtdIG91
dCkgewotICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCA1OyBpID0gaSArIDEpCi0gICAgICAg
ICAgICBvdXRbaV0gPSBpbltpXTsKLSAgICB9YDsKLSAgICBjb25zdCBhcnJheSA9IFswLCAxLCAy
LCAzLCA0XTsKLSAgICBjb25zdCBpbnB1dCA9IG1ha2VJbnQoYXJyYXkpOwotICAgIGNvbnN0IG91
dHB1dCA9IG1ha2VJbnQoWzAsIDAsIDAsIDAsIDBdKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNy
YywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0pOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkg
PT4gewotICAgICAgICByZXR1cm4gb3V0cHV0LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1
ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVWludDMyQXJyYXkoYXJy
YXlCdWZmZXIpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgcmVzdWx0
LCAiVGVzdCBzdG9yZWQgZXhwZWN0ZWQgdmFsdWVzLiIpOwotICAgICAgICB9KTsKLSAgICB9LCAi
VXBsb2FkIGEgaW50W10gYW5kIHN0b3JlIGludG8gYSBpbnRbXS4iKTsKLX07Ci0KLXdobHNsVGVz
dHMuZmxvYXQ0eDR0ZXN0cyA9ICgpID0+IHsKLSAgICBjb25zdCBzcmMgPSBgdm9pZCB0ZXN0KGRl
dmljZSBmbG9hdDR4NFtdIGluLCBkZXZpY2UgZmxvYXQ0eDRbXSBvdXQpIHsKLSAgICAgICAgZm9y
ICh1aW50IGkgPSAwOyBpIDwgNDsgaSA9IGkgKyAxKQotICAgICAgICAgICAgb3V0W2ldID0gaW5b
aV07Ci0gICAgfWA7Ci0gICAgY29uc3QgaW5wdXQgPSBtYWtlRmxvYXQ0eDQoW2Zsb2F0NHg0ZXhw
ZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0ZWQsIGZsb2F0NHg0ZXhwZWN0
ZWRdKTsKLSAgICBjb25zdCBvdXRwdXQgPSBtYWtlRmxvYXQ0eDQobmV3IEFycmF5KDY0KS5maWxs
KDApKTsKLSAgICBjYWxsVm9pZEZ1bmN0aW9uKHNyYywgInRlc3QiLCBbaW5wdXQsIG91dHB1dF0p
OwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1cm4gb3V0cHV0
LmdldEFycmF5QnVmZmVyKCkudGhlbihhcnJheUJ1ZmZlciA9PiB7Ci0gICAgICAgICAgICBjb25z
dCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9
IDA7IGogPCAxNjsgKytqKQotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFs
cyhyZXN1bHRbaSAqIDE2ICsgal0sIGZsb2F0NHg0ZXhwZWN0ZWRbal0sIGVwc2lsb24sICJUZXN0
IHN0b3JlZCBleHBlY3RlZCB2YWx1ZXMuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0sICJVcGxvYWQgYSBmbG9hdDR4NFtdIGFuZCBzdG9yZSBpbnRvIGEgZmxvYXQ0eDRbXS4i
KTsKLQotICAgIGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gZmxvYXQ0eDQoZmxvYXQ0
KDAsIDEsIDIsIDMpLCBmbG9hdDQoNCwgNSwgNiwgNyksIGZsb2F0NCg4LCA5LCAxMCwgMTEpLCBm
bG9hdDQoMTIsIDEzLCAxNCwgMTUpKTsiLCBbXSwgZmxvYXQ0eDRDb2x1bW5FeHBlY3RlZCk7Ci0g
ICAgY2hlY2tBcnJheXMoImZsb2F0NHg0IiwgInJldHVybiBpbjA7IiwgW2Zsb2F0NHg0ZXhwZWN0
ZWRdLCBmbG9hdDR4NGV4cGVjdGVkKTsKLSAgICBsZXQgbXVsdGlwbGU0eDRhcmdzID0gW107Ci0g
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGFyZyA9IG5l
dyBBcnJheSgxNik7Ci0gICAgICAgIGFyZy5maWxsKDApOwotICAgICAgICBhcmdbaV0gPSBpOwot
ICAgICAgICBtdWx0aXBsZTR4NGFyZ3MucHVzaChhcmcpOwotICAgIH0KLSAgICBjaGVja0FycmF5
cygiZmxvYXQ0eDQiLCAicmV0dXJuIGluMCArIGluMSArIGluMiArIGluMyArIGluNCArIGluNSAr
IGluNiArIGluNyArIGluOCArIGluOSArIGluMTAgKyBpbjExICsgaW4xMiArIGluMTMgKyBpbjE0
ICsgaW4xNTsiLCBtdWx0aXBsZTR4NGFyZ3MsIGZsb2F0NHg0Q29sdW1uRXhwZWN0ZWQpOwotICAg
IGNoZWNrQXJyYXlzKCJmbG9hdDR4NCIsICJyZXR1cm4gaW4wWzBdOyIsIFtbZmxvYXQ0eDRleHBl
Y3RlZF1dLCBmbG9hdDR4NGV4cGVjdGVkKTsKLX07Ci0KLXdobHNsVGVzdHMuY2hlY2tGYWlsVGVz
dHMgPSAoKSA9PiB7Ci0gICAgd2ViR1BVUHJvbWlzZVRlc3QoKCkgPT4gewotICAgICAgICByZXR1
cm4gY2hlY2tGYWlsKGBEb29ycyBhbmQgY29ybmVycywga2lkLiBUaGF0J3Mgd2hlcmUgdGhleSBn
ZXRjaGEuYCk7Ci0gICAgfSwgIkNvZGUgc2hvdWxkIG5vdCBjb21waWxlLCBhbmQgbm8gZXJyb3Ig
aXMgcmVwb3J0ZWQuIik7Ci0KLSAgICB3ZWJHUFVQcm9taXNlVGVzdCgoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBjaGVja0ZhaWwoIiIpLmNhdGNoKGUgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZSBpbnN0YW5jZW9mIEVycm9yLCAiQW4gZXhwZWN0ZWQgRXJyb3Igd2FzIGNhdWdodC4iKTsK
LSAgICAgICAgfSk7Ci0gICAgfSwgIlN1Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVj
a0ZhaWwgaXMgYW4gZXJyb3IuIikKLX07Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgYXN5bmMgKCkgPT4gewotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGhhcm5lc3MucmVxdWVz
dERldmljZSgpOwotICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gd2hsc2xUZXN0cykgewotICAg
ICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICB3aGxz
bFRlc3RzW25hbWVdKCk7Ci0gICAgICAgIH0KLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICAKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19KTsKLQotLyogSGVscGVyIGZ1
bmN0aW9ucyAqLwotCi1jb25zdCBjaGVja051bWVyaWNTY2FsYXJzID0gKGJvZHksIGFyZ1ZhbHVl
cywgZXhwZWN0ZWQpID0+IHsKLSAgICBsZXQgZnVuY3Rpb25zID0gW107Ci0gICAgbGV0IHNyYyA9
ICIiOwotICAgIGZvciAobGV0IHR5cGUgb2YgbnVtZXJpY1NjYWxhclR5cGVzKSB7Ci0gICAgICAg
IGxldCBuYW1lLCB2YWx1ZXM7Ci0gICAgICAgIFtzcmMsIG5hbWUsIHZhbHVlc10gPSBhcHBlbmRT
Y2FsYXJGdW5jdGlvblRvU291cmNlKHNyYywgdHlwZSwgYm9keSwgYXJnVmFsdWVzKTsKLSAgICAg
ICAgZnVuY3Rpb25zLnB1c2goeyB0eXBlOiB0eXBlLCBuYW1lOiBuYW1lLCBhcmdzOiB2YWx1ZXMs
IGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGYgb2YgZnVu
Y3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0IGNhbGxGdW5jID0gbnVtZXJpY1NjYWxhckZ1bmNzW2Yu
dHlwZV07Ci0gICAgICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsKLSAgICAgICAg
ICAgIHJldHVybiBjYWxsRnVuYyhzcmMsIGYubmFtZSwgZi5hcmdzKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocmVzdWx0LCBmLmV4cGVjdGVk
LCBlcHNpbG9uLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBgUmV0dXJuIGFuIGV4cGVjdGVkICR7Zi50eXBlfSB2YWx1ZS5gKTsK
LSAgICB9Ci19OwotCi1jb25zdCBjaGVja0Jvb2xzID0gKG1zZyA9ICJSZXR1cm4gYW4gZXhwZWN0
ZWQgYm9vbCB2YWx1ZS4iLCBib2R5LCBhcmdWYWx1ZXMgPSBbXSwgZXhwZWN0ZWQgPSB0cnVlKSA9
PiB7Ci0gICAgY29uc3QgW3NyYywgbmFtZSwgdmFsdWVzXSA9IGFwcGVuZFNjYWxhckZ1bmN0aW9u
VG9Tb3VyY2UoIiIsICJib29sIiwgYm9keSwgYXJnVmFsdWVzKTsgCi0KLSAgICB3ZWJHUFVQcm9t
aXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjYWxsQm9vbEZ1bmN0aW9uKHNy
YywgbmFtZSwgdmFsdWVzKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgZXhwZWN0ZWQsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgICAgICB9LCBlID0+IHsKLSAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVV
bnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9KTsK
LSAgICB9LCBtc2cpOwotfTsKLQotY29uc3QgY2hlY2tBcnJheXMgPSAodHlwZSwgYm9keSwgYXJn
VmFsdWVzID0gW10sIGV4cGVjdGVkKSA9PiB7Ci0gICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAg
IGxldCB2YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAvLyBTdXBwb3J0IGFycmF5cyBvZiBmbG9hdDQsIGluY2x1ZGlu
ZyBvbmUgd2l0aCBhIHNpbmdsZSBmbG9hdDQuCi0gICAgICAgIGNvbnN0IHRvdGFsTGVuZ3RoID0g
YXJnVmFsdWVzW2ldLmZsYXQoKS5sZW5ndGg7Ci0gICAgICAgIGNvbnN0IGlzQnVmZmVyID0gYXJn
VmFsdWVzW2ldLmxlbmd0aCA9PT0gMSB8fCB0b3RhbExlbmd0aCA+IGFycmF5VHlwZUxlbmd0aHNb
dHlwZV07Ci0gICAgICAgIGlucHV0QXJncy5wdXNoKGAke2lzQnVmZmVyID8gImRldmljZSAiIDog
IiJ9JHt0eXBlfSR7aXNCdWZmZXIgPyAiW10iIDogIiJ9IGluJHtpfWApOwotICAgICAgICB2YWx1
ZXMucHVzaChhcnJheUFyZ01ha2Vyc1t0eXBlXShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBzcmMgPSBgJHt0eXBlfSAke3R5cGV9VGVzdCgke2lucHV0QXJncy5qb2luKCIsICIp
fSkgeyAke2JvZHl9IH0KLSAgICBgOwotCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkg
PT4gewotICAgICAgICByZXR1cm4gYXJyYXlGdW5jc1t0eXBlXShzcmMsIGAke3R5cGV9VGVzdGAs
IHZhbHVlcykudGhlbihyZXN1bHQgPT4gewotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBhcnJheVR5cGVMZW5ndGhzW3R5cGVdOyArK2kpCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2Fw
cHJveF9lcXVhbHMocmVzdWx0W2ldLCBleHBlY3RlZFtpXSwgZXBzaWxvbiwgIlRlc3QgcmV0dXJu
ZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgIH0pOwotICAgIH0sIGBSZXR1cm4gYW4gZXhw
ZWN0ZWQgJHt0eXBlfSB2YWx1ZS5gKTsKLX0KLQotY29uc3QgYXBwZW5kU2NhbGFyRnVuY3Rpb25U
b1NvdXJjZSA9IChzcmMsIHR5cGUsIGJvZHksIGFyZ1ZhbHVlcykgPT4gewotICAgIGNvbnN0IG5h
bWUgPSBgJHt0eXBlfVRlc3RgOwotCi0gICAgbGV0IGlucHV0QXJncyA9IFtdOwotICAgIGxldCB2
YWx1ZXMgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ1ZhbHVlcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICBjb25zdCBpc0J1ZmZlciA9IEFycmF5LmlzQXJyYXkoYXJnVmFsdWVzW2ld
KTsKLSAgICAgICAgaW5wdXRBcmdzLnB1c2goYCR7aXNCdWZmZXIgPyAiZGV2aWNlICIgOiAiIn0k
e3R5cGV9JHtpc0J1ZmZlciA/ICJbXSIgOiAiIn0gaW4ke2l9YCk7Ci0gICAgICAgIHZhbHVlcy5w
dXNoKHNjYWxhckFyZ01ha2Vyc1t0eXBlXShhcmdWYWx1ZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBz
cmMgKz0gYCR7dHlwZX0gJHtuYW1lfSgke2lucHV0QXJncy5qb2luKCIsICIpfSkgeyAke2JvZHl9
IH0KLSAgICBgOwotICAgIAotICAgIHJldHVybiBbc3JjLCBuYW1lLCB2YWx1ZXNdOwotfTsKLTwv
c2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3RleHR1cmVzLWdldGRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzEyN2EwZmIwZjQzMDY0NmRkZTdkMWQ1N2FkMzU2M2FjZjcxOGQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtZ2V0ZGltZW5zaW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5NWFjYTM0ODAwMmVkNjNjNGFlMTUyMzkwMTcwYzY1MjcyMWVhODY3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1nZXRkaW1lbnNpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0
ZSB2b2lkIGNvbXB1dGVTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lz
dGVyKHQwKSwgZGV2aWNlIHVpbnRbXSB0aGVCdWZmZXIgOiByZWdpc3Rlcih1MSkpIHsKLSAgICB1
aW50IHdpZHRoOwotICAgIHVpbnQgaGVpZ2h0OwotICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7Ci0g
ICAgR2V0RGltZW5zaW9ucyh0aGVUZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJP
ZkxldmVscyk7Ci0gICAgdGhlQnVmZmVyWzBdID0gd2lkdGg7Ci0gICAgdGhlQnVmZmVyWzFdID0g
aGVpZ2h0OwotICAgIHRoZUJ1ZmZlclsyXSA9IG51bWJlck9mTGV2ZWxzOwotfQotYDsKLQotYXN5
bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlfSk7Ci0gICAgY29uc3Qg
Y29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0
ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJl
In0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19
OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBj
b25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciA9IHtjb21wdXRlU3RhZ2UsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNv
bXB1dGVQaXBlbGluZSA9IGRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7
d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNl
LmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3
ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgcmVzdWx0c0J1ZmZl
ckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzLCB1
c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfTsK
LSAgICBjb25zdCByZXN1bHRzQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXN1bHRzQnVm
ZmVyRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVz
dWx0c0J1ZmZlciwgc2l6ZTogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAzfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1
cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfV07Ci0gICAgY29u
c3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGlu
Z3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3Jl
YXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29tbWFuZEVu
Y29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNvbXB1
dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIu
ZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5p
c2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQot
ICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVh
ZEFzeW5jKCk7Ci0gICAgY29uc3QgcmVzdWx0c1VpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5
KHJlc3VsdHNBcnJheUJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdHNVaW50MzJBcnJheVswXSA9PSAy
Ci0gICAgICAgICYmIHJlc3VsdHNVaW50MzJBcnJheVsxXSA9PSAyCi0gICAgICAgICYmIHJlc3Vs
dHNVaW50MzJBcnJheVsyXSA9PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBlbHNl
Ci0gICAgICAgIHRlc3RGYWlsZWQoIiIpOwotICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKLX0K
LXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWdldEJhc2ljRGV2aWNlKCkudGhlbihmdW5j
dGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFp
bGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLWxvYWQtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGV4dHVyZXMtbG9hZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci1kcmF3
V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLWxv
YWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA4MjJjODUwNzlkNjM4YWYx
MjY3MTk0MWRhZDE3ZDA4OGVjZDNkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtbG9hZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVy
dGV4IGZsb2F0NCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6
IFNWX1Bvc2l0aW9uIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudFNoYWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIo
dDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gTG9hZCh0aGVUZXh0dXJlLCBpbnQyKDAs
IDApKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0gICAgCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0In07Ci0gICAgY29uc3QgaW5wdXQw
ID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBp
bnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJl
In1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3Vw
TGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0g
ICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJh
c3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJ
bnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0
IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtz
aXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3Qg
dmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1
ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEu
MDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzVdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVs4XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAg
IGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0
YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0g
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1Owot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzZdID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOF0gPSAxMjg7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzldID0gMTI4OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxMF0gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMTI4OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAxMjg7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzE0XSA9IDEyODsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVd
ID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7Ci0KLSAgICBjb25zdCB0ZXh0
dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBm
b3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BV
VGV4dHVyZVVzYWdlLkNPUFlfRFNUfTsKLSAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNyZWF0
ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4
dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3Mg
PSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld31dOwotICAgIGNvbnN0IGJpbmRH
cm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5k
R3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRH
cm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZp
Y2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0
LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0
cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAg
ICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAv
LyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBj
b3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVu
Y29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3
LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0p
OwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZhYTU1ZTNjYmZhNTRkODNl
OTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0ZDBhZGY1ZGQ3MzBlZDM1ZDA0YTJjMWFi
ZGE3NmU1NGIwYzE5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVj
dCBJbnRlcm1lZGlhdGUgewotICAgIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAg
IGZsb2F0MiB0ZXh0dXJlQ29vcmRpbmF0ZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IElu
dGVybWVkaWF0ZSB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBm
bG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBJbnRlcm1lZGlh
dGUgcmVzdWx0OwotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC50
ZXh0dXJlQ29vcmRpbmF0ZSA9IHRleHR1cmVDb29yZGluYXRlOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNoYWRlcihmbG9hdDIgdGV4dHVyZUNvb3Jk
aW5hdGUgOiBhdHRyaWJ1dGUoMCksIFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdp
c3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQg
MCB7Ci0gICAgcmV0dXJuIFNhbXBsZUJpYXModGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgdGV4dHVy
ZUNvb3JkaW5hdGUsIDEpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAg
ICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBz
aGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3Rh
Z2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9
OwotICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBj
b25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5v
bmUifTsKLSAgICBjb25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9
IHt9OwotICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxw
aGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFM
TAotICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBh
dHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBj
b25zdCBpbnB1dDAgPSB7c3RyaWRlOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgYXR0cmlidXRlMSA9IHtz
aGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQyIn07Ci0gICAgY29uc3QgaW5wdXQxID0g
e3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlMV19OwotICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDAsIGlucHV0MV07Ci0g
ICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNv
bnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwg
dmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlz
aWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91
dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0
YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywg
ZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBw
aXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQgKiA0ICsgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMiAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIp
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs1XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTJdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzE2XSA9IDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAwOwot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0gMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE5XSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIw
XSA9IDEwMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIxXSA9IDA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMl0gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsyM10gPSAxMDA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29u
c3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2Fn
ZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHRleHR1cmVE
YXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4
QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJV
aW50OEFycmF5WzRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzhdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAyNTUK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxMl0gPSAyNTUKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVsxNl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1
cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIu
dW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDog
MiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4
dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2Uu
Q09QWV9EU1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0
dXJlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURl
ZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHthZGRyZXNzTW9k
ZVU6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVY6ICJyZXBlYXQiLCBhZGRyZXNzTW9kZVc6ICJyZXBl
YXQiLCBtYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25z
dCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0
dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJp
bmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBi
aW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtk
ZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250
ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qg
b3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0K
LSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcigp
OyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURh
dGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIs
IGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsK
LSAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNv
bnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29t
bWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVD
b3B5MVZpZXcsIGNvcHkxU2l6ZSk7Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZl
cjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAq
IDF9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlw
TGV2ZWw6IDF9OwotICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBk
ZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJD
b3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVh
ckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNo
bWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBu
dWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAg
ICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVu
ZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRH
cm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRleEJ1ZmZlcjAsIHZlcnRleEJ1ZmZlcjBdLCBbMCwgRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDRdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDQs
IDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBjb25zdCBj
b21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNlLmdldFF1
ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2Uo
KS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
IH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3Vu
ZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlN2JlN2Y0MTZh
YTU1ZTNjYmZhNTRkODNlOTJjM2FlYTMzYzBmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9u
Qmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1w
bGUtZ3JhZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNj
cmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
LWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5MzM2NmVmMDZmNWVlNjk4MTcyOTViZGUxZmMxOGYyOGMwMzBiNzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1j
b25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQg
cG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3Np
dGlvbjsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUyRDxmbG9h
dDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6IHJlZ2lz
dGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgcmV0dXJuIFNhbXBsZUdyYWQodGhlVGV4dHVy
ZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgZmxvYXQyKDEsIDApLCBmbG9hdDIoMCwg
MSkpOwotfQotYDsKLQotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotCi1hc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFk
ZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9
KTsKLSAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQ
b2ludDogInZlcnRleFNoYWRlciJ9OwotICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxl
OiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OwotICAgIGNvbnN0
IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsKLSAgICBjb25zdCByYXN0ZXJp
emF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKLSAgICBj
b25zdCBhbHBoYUJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OwotICAgIGNv
bnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29s
b3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlLkFMTAotICAgIGNvbnN0
IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKLSAgICAKLSAgICBjb25zdCBhdHRyaWJ1dGUwID0g
e3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKLSAgICBjb25zdCBpbnB1dDAg
PSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OwotICAgIGNvbnN0IGlu
cHV0cyA9IFtpbnB1dDBdOwotICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6
IGlucHV0c307Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUi
fSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKLSAgICBj
b25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlw
ZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0
ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25T
dGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxl
Q291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMy
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZF
UlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVy
MCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3Jp
dGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9
IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzRdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVs3XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9
IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzExXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxNV0gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1
cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICog
MSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFfTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZl
ckFycmF5QnVmZmVyID0gYXdhaXQgdGV4dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOwot
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRl
eHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVswXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0gPSAwOwot
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzNdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs0XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNV0gPSAwOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs2XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZm
ZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAwOwotICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMF0gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxMV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEy
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTNdID0gMDsKLSAgICB0
ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTVdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
Nl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE3XSA9IDI1NTsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1OwotICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXIudW5tYXAo
KTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZvcm1hdDogInJnYmE4dW5vcm0i
LCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9E
U1R9OwotICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRW
aWV3KCk7Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5l
YXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNy
ZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmlu
ZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAx
LCByZXNvdXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7
bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0g
ICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNj
cmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7
Ci0gICAgY29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4
dW5vcm0ifTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFp
bihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENo
YWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBv
dXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3Qg
YnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBV
aW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKLSAgICBjb25zdCB0ZXh0dXJlQ29w
eTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9OwotICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0
aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZl
clRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7
Ci0gICAgY29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIs
IG9mZnNldDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0
Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVp
bnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OwotICAgIGNvbnN0IHRleHR1
cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9OwotICAgIGNvbnN0
IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07Ci0gICAgY29tbWFu
ZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5
MlZpZXcsIGNvcHkyU2l6ZSk7Ci0KLSAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAs
IGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6
IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIs
IHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xv
ckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQ
YXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVz
Y3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBd
LCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21t
YW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2
aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigp
IHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U3YmU3ZjQxNmFhNTVlM2Ni
ZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2
ZWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25C
bHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBs
ZS1sZXZlbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1s
ZXZlbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGM3OGUxNTYxODcxODAz
MzE3NGE4Y2JmODg0ZjU5ZDUzN2E4M2IyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
bGV2ZWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1mcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhlVGV4dHVyZSA6
IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVyIDogcmVnaXN0ZXIoczEpKSA6IFNWX1Rh
cmdldCAwIHsKLSAgICByZXR1cm4gU2FtcGxlTGV2ZWwodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwg
ZmxvYXQyKDAuNSwgMC41KSwgMSk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkg
ewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2Nv
ZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21l
bnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hh
ZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwot
ICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2Rl
OiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJs
ZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0i
LCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3Jp
dGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotICAgIAotICAgIGNv
bnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9Owot
ICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUw
XX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQg
PSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERl
c2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTog
InNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNh
bXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRd
fTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91
dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9n
eSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZl
cnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAg
Y29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9y
ID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVy
dGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJd
ID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsK
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAu
NTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwot
Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVC
dWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0
IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0g
bmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVsxXSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsK
LSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs1XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKLSAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzhdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVs5XSA9IDA7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDA7Ci0gICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVsxM10gPSAwOwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNF0gPSAwOwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzE2XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOF0gPSAyNTU7
Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE5XSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6
ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgbWlwTGV2ZWxDb3VudDogMiwgZm9y
bWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRl
eHR1cmVVc2FnZS5DT1BZX0RTVH07Ci0gICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVU
ZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IHNhbXBsZXJEZXNjcmlwdG9yID0g
e21hZ0ZpbHRlcjogImxpbmVhciIsIG1pbkZpbHRlcjogImxpbmVhciJ9OwotICAgIGNvbnN0IHNh
bXBsZXIgPSBkZXZpY2UuY3JlYXRlU2FtcGxlcihzYW1wbGVyRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVW
aWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBzYW1wbGVyfV07Ci0gICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRH
cm91cEJpbmRpbmdzfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQu
Y29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0KLSAgICBjb25zdCBidWZmZXJDb3B5MVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAg
IGNvbnN0IHRleHR1cmVDb3B5MVZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZX07Ci0gICAgY29uc3Qg
Y29weTFTaXplID0ge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfTsKLSAgICBjb21tYW5k
RW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkxVmlldywgdGV4dHVyZUNvcHkx
VmlldywgY29weTFTaXplKTsKLSAgICBjb25zdCBidWZmZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0
ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDIgKiAyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAx
LCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMX07
Ci0gICAgY29uc3QgdGV4dHVyZUNvcHkyVmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZl
bDogMX07Ci0gICAgY29uc3QgY29weTJTaXplID0ge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxfTsKLSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHky
VmlldywgdGV4dHVyZUNvcHkyVmlldywgY29weTJTaXplKTsKLQotICAgIGNvbnN0IGNsZWFyQ29s
b3IgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2htZW50
cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGws
IGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcn1dOwotICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owot
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkODZhYjVkNWI2MTY2ZmNkMGQyMjQxMTFmZjE0Y2Y5
MzNlYzg3MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9j
YW52YXM+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotdmVydGV4IGZsb2F0NCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApKSA6IFNWX1Bvc2l0aW9u
IHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci0KLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudFNo
YWRlcihUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDogcmVnaXN0ZXIodDApLCBzYW1wbGVy
IHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBT
YW1wbGUodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSk7Ci19Ci1gOwot
Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFz
eW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0
IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4
U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVs
ZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9w
b2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9
IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxl
bmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0
ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0
ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2ls
U3RhdGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRp
b246IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IDE2
LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0
MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQot
ICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGlu
ZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVyZSJ9LCB7YmluZGluZzog
MSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwot
Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5
b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVm
ZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNy
ZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVy
dGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBd
ID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAwLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMC41OwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0g
MTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0g
ICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJE
ZXNjcmlwdG9yID0ge3NpemU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAq
IDIsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdGV4dHVyZURhdGFCdWZm
ZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsK
LSAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0
ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbMF0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMjU1
OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsyXSA9IDI1NTsKLSAgICB0ZXh0dXJl
RGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzRdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDI1
NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNl0gPSAyNTU7Ci0gICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVs4XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOV0gPSAy
NTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9IDI1NTsKLSAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OwotICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxMl0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEz
XSA9IDI1NTsKLSAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMjU1OwotICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0gPSAyNTU7Ci0gICAgdGV4dHVyZURhdGFC
dWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3NpemU6IHt3
aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIGZvcm1hdDogInJnYmE4dW5vcm0iLCB1c2Fn
ZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1R9Owot
ICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
Ci0KLSAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBt
aW5GaWx0ZXI6ICJsaW5lYXIifTsKLSAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNh
bXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3Mg
PSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNv
dXJjZTogc2FtcGxlcn1dOwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307Ci0gICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKLQotICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7Ci0gICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKLSAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7Ci0KLSAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQotCi0gICAgY29uc3QgYnVmZmVy
Q29weVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OwotICAgIGNvbnN0IHRleHR1cmVDb3B5VmlldyA9
IHt0ZXh0dXJlOiB0ZXh0dXJlfTsKLSAgICBjb25zdCBjb3B5U2l6ZSA9IHt3aWR0aDogMiwgaGVp
Z2h0OiAyLCBkZXB0aDogMX07Ci0gICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVy
ZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCBjb3B5U2l6ZSk7Ci0KLSAgICBjb25z
dCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9y
QXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFy
Z2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9
XTsKLSAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKLSAgICBjb25zdCBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50fTsKLSAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRl
eEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKLSAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNp
Y0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVu
KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVC
YWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R3by1kaW1l
bnNpb25hbC1hcnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdv
LWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTcxMjdhMGZiMGY0MzA2NDZkZGU3ZDFkNTdhZDM1NjNhY2Y3MThkNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdHdvLWRpbWVuc2lvbmFsLWFycmF5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28t
ZGltZW5zaW9uYWwtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90d28tZGlt
ZW5zaW9uYWwtYXJyYXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YjYx
OTM3MTQ5ZmNmMjUzZDY1MmEzYzRlZDU4YzRiZWQ1NDczZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHdvLWRp
bWVuc2lvbmFsLWFycmF5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1jb25zdCBz
aGFkZXJTb3VyY2UgPSBgCi12b2lkIGZpbGwodGhyZWFkIGZsb2F0WzEwXVtdIGFycmF5LCBmbG9h
dFsxMF0gdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkg
PSBpICsgMSkgewotICAgICAgICBhcnJheVtpXSA9IHZhbHVlOwotICAgIH0KLX0KLQotdm9pZCBm
aWxsKHRocmVhZCBmbG9hdFtdIGFycmF5LCBmbG9hdCB2YWx1ZSkgewotICAgIGZvciAodWludCBp
ID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSA9IGkgKyAxKSB7Ci0gICAgICAgIGFycmF5W2ldID0g
dmFsdWU7Ci0gICAgfQotfQotCi1ib29sIGNvbnRhaW5zKHRocmVhZCBmbG9hdFsxMF1bXSBhcnJh
eSwgZmxvYXQgdmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
IGkgPSBpICsgMSkgewotICAgICAgICBmb3IgKHVpbnQgaiA9IDA7IGogPCBhcnJheVtqXS5sZW5n
dGg7IGogPSBqICsgMSkgewotICAgICAgICAgICAgaWYgKGFycmF5W2ldW2pdICE9IHZhbHVlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBjb250YWlucyh0aHJlYWQgZmxvYXRbXSBhcnJheSwgZmxvYXQg
dmFsdWUpIHsKLSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsg
MSkgewotICAgICAgICBpZiAoYXJyYXlbaV0gIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1bbnVtdGhyZWFkcygxLCAxLCAx
KV0KLWNvbXB1dGUgdm9pZCBjb21wdXRlU2hhZGVyKGRldmljZSBpbnRbXSBidWZmZXIgOiByZWdp
c3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBm
bG9hdFsxMF1bNV0gYXJyYXk7Ci0gICAgaWYgKGFycmF5Lmxlbmd0aCAhPSA1KQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKCFjb250YWlucyhAYXJyYXksIDApKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkgewotICAg
ICAgICBmbG9hdFsxMF0gdmFsdWU7Ci0gICAgICAgIGZpbGwoQHZhbHVlLCBmbG9hdChpKSk7Ci0g
ICAgICAgIGFycmF5W2ldID0gdmFsdWU7Ci0gICAgfQotCi0gICAgZm9yICh1aW50IGkgPSAwOyBp
IDwgYXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHsKLSAgICAgICAgZmxvYXRbMTBdIHZhbHVlID0g
YXJyYXlbaV07Ci0gICAgICAgIGlmICghY29udGFpbnMoQHZhbHVlLCBmbG9hdChpKSkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYnVmZmVyWzBdID0gMTsKLX0KLWA7Ci1hc3lu
YyBmdW5jdGlvbiBzdGFydChkZXZpY2UpIHsKLSAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKLSAgICBjb25zdCBj
b21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJjb21wdXRl
U2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRp
bmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9
XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExh
eW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91
dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
Y29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHNpemUgPSBJbnQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMTsKLQotICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDfTsK
LSAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5
bmMoKTsKLSAgICBjb25zdCBidWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShidWZm
ZXJBcnJheUJ1ZmZlcik7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMDsKLSAgICBidWZm
ZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yID0ge3NpemUs
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qg
fCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRH07Ci0gICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIocmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IpOwotCi0gICAgY29uc3Qg
YnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OwotICAgIGNvbnN0
IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9
OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlv
dXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OwotICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7Ci0KLSAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQot
ICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNC
dWZmZXIsIDAsIHNpemUpOwotICAgIGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRF
bmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlw
ZWxpbmUoY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEs
IDEpOwotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotCi0gICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVy
ID0gYXdhaXQgcmVzdWx0c0J1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICBsZXQgcmVzdWx0c0lu
dDMyQXJyYXkgPSBuZXcgSW50MzJBcnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOwotICAgIGlmIChy
ZXN1bHRzSW50MzJBcnJheVswXSA9PT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0gICAg
ZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCIiKTsKLSAgICByZXN1bHRzQnVmZmVyLnVubWFwKCk7
Ci19Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rp
b24oKSB7Ci0gICAgdGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3R5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYjc4ZWI2MWE2YTM4MTYyNGZmMWQ5Mzk3ZDMxZDhlODk0ZTU3YzQzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAs
MCBAQAotCi1QQVNTIHR5cGVNaXNtYXRjaFJldHVybgotUEFTUyB0eXBlTWlzbWF0Y2hWYXJpYWJs
ZURlY2wKLVBBU1MgdHlwZU1pc21hdGNoQXNzaWdubWVudAotUEFTUyB0eXBlTWlzbWF0Y2hSZXR1
cm5QYXJhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlwZS1taXNt
YXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3R5cGUtbWlzbWF0Y2guaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4ZTE0ODFlNWVhMTA2ZTA0NGZjY2RkYThk
ZWZmOTQ0NThiYzkzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdHlwZS1taXNtYXRjaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNo
YXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRs
ZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5j
dGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWNvbnN0IHdobHNsVGVzdHMgPSB7
fTsKLQotd2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hSZXR1cm4gPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IGZvbygpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEwLjU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIGApOwotfQotCi13aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICB2b2lkIGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHkg
PSB4OwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy50eXBlTWlz
bWF0Y2hBc3NpZ25tZW50ID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKHVpbnQgeCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpbnQgeTsKLSAgICAgICAgICAgICAgICB5ID0geDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuUGFyYW0g
PSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAg
ICAgICAgaW50IGZvbyh1aW50IHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5UZXN0cyh3aGxzbFRl
c3RzKTsKLQotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyYzRhYjg5MTZkNzdjZWExOTJjZDgzNGY1Y2JhNzZhYjg1MDZiY2YyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC91aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCww
IEBACi0KLVBBU1MgdWludEJpdEFuZAotUEFTUyB1aW50Qml0T3IKLVBBU1MgdWludEJpdFhvcgot
UEFTUyB1aW50Qml0Tm90Ci1QQVNTIHVpbnRMU2hpZnQKLVBBU1MgdWludFJTaGlmdAotUEFTUyB1
aW50U2ltcGxlTWF0aAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWlu
dC1iaXR3aXNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdWludC1iaXR3aXNlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiM2Q2YjBiNjJmOWIwOWEyNzM3OWRj
ODVlNWY1NGYzZDc4ZGRhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VpbnQtYml0d2lzZS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08
dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0i
anMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7Ci0gICAg
bGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAmIGI7Ci0gICAgICAgIH0KLSAgICBgOwotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDEpLCBtYWtlVWludCg3KV0pLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQy
KV0pLCA0Mik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4
NTczMildKSwgMCk7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgfCBiOwotICAgICAgICB9Ci0gICAgYDsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWlu
dCg0MildKSwgNjU1MzUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dChNYXRoLnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2NzI5NSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1h
a2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdFhvciA9IGFz
eW5jICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBh
LCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIF4gYjsKLSAgICAgICAg
fQotICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDYpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCks
IG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Ci19Ci0KLXdobHNsVGVzdHMudWludEJpdE5vdCA9
IGFzeW5jICgpID0+IHsgCi0gICAgbGV0IHByb2dyYW0gPSBgCi0gICAgICAgIHVpbnQgZm9vKHVp
bnQgYSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIH5hOwotICAgICAgICB9Ci0gICAg
YDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5
NDkwMTc2MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMCldKSwgNDI5NDk2NzI5NSk7Ci19Ci0KLXdobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5j
ICgpID0+IHsKLSAgICBsZXQgcHJvZ3JhbSA9IGAKLSAgICAgICAgdWludCBmb28odWludCBhLCB1
aW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIDw8IGI7Ci0gICAgICAgIH0K
LSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxMjgpOwotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoMildKSwgMjYyMTQwKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50
KDMpXSksIDApOwotfTsKLQotd2hsc2xUZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewot
ICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjsKLSAgICAgICAgfQotICAgIGA7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDApOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVp
bnQoMildKSwgMTYzODMpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dCg1KV0pLCAxMzQyMTc3MjcpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKLX07
Ci0KLXdobHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7Ci0gICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKLSAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOwotCi0gICAgcHJvZ3JhbSA9ICJ1aW50IGZv
byh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iOwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtl
VWludCg1KV0pLCAyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7
Ci0KLSAgICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICog
eTsgfSI7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDM1KTsKLQotICAgIC8vIEZJWE1F
OiBtYWtlIHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTYwMgotICAgIC8vIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggLyB5OyB9IjsKLSAgICAvLyBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Ci19Ci0K
LXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLTIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDkzNTYwZTEyZjg1
ODc2ZmM2OGYzMmIzODFhNWE5Y2U0MzE3OWNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVk
LXZhcmlhYmxlLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IEdQVURldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wg
Y29tcGlsZSBlcnJvcjogNDoyNTogQ2Fubm90IGZpbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9u
LgotUEFTUwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZh
cmlhYmxlLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZh
cmlhYmxlLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QzMDRhZTU0YTRk
YWI3Mzk5M2YzZmIwOWIwN2EzYjExMGRhZjNhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5l
ZC12YXJpYWJsZS0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0
aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWNvbnN0IHNoYWRl
clNvdXJjZSA9IGAKLVtudW10aHJlYWRzKDEsIDEsIDEpXQotY29tcHV0ZSB2b2lkIGNvbXB1dGVT
aGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIodTApLCBmbG9hdDMgdGhyZWFk
SUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7Ci0gICAgZmxvYXQ0IHZlYyA9IGZsb2F0NCh4LHgs
eCx4KTsKLX0KLWA7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgIGNvbnN0IGFkYXB0
ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCk7Ci0gICAgY29uc3QgZGV2
aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBzaGFkZXJN
b2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsK
LSAgICBjb25zdCBjb21wdXRlU3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJjb21wdXRlU2hhZGVyIn07Ci0KLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzdG9y
YWdlLWJ1ZmZlciJ9XX07Ci0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKLSAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07
Ci0gICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKLX0KLQotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0
YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0
RmFpbGVkKCIiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0UGFzc2VkKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdXNlLXVuZGVmaW5lZC12YXJpYWJsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NzNjM2QwMDM5ZTk4NWRiMmM1Zjc0YTIwMjBiZjhiZDU5
OTk0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEdQVURldmlj
ZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogV0hMU0wgY29tcGlsZSBlcnJvcjogNjo5OiBDYW5u
b3QgZmluZCB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uCi1QQVNTCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC91c2UtdW5kZWZpbmVkLXZhcmlhYmxlLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDljNTAwNzM3YjJmY2U2MDYxYzhiNThkODk3Mjg4NjJjMTUwNjkxNGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3VzZS11bmRlZmluZWQtdmFyaWFibGUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMSwgMSwg
MSldCi1jb21wdXRlIHZvaWQgY29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiBy
ZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAg
ICBmbG9hdCBmb287Ci0gICAgaWYgKGZvbykgewotICAgICAgICB4ID0geCArIDE7Ci0gICAgfQot
fQotYDsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgY29uc3QgYWRhcHRlciA9IGF3
YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKLSAgICBjb25zdCBkZXZpY2UgPSBh
d2FpdCBhZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKLQotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9
IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNv
bnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImNv
bXB1dGVTaGFkZXIifTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7
YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVm
ZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07
Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
cGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKLSAgICBj
b25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IpOwotfQotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1nZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2
aWNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgIHRlc3RQYXNzZWQoIiIpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAg
dGVzdFBhc3NlZCgiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19KTsKLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Zhcmlh
YmxlLXNoYWRvd2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmFy
aWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2NiOWIyZDAxZmRjNTdlM2QzZjQ5MGIxMTk5OTRmODAzNjcyM2YwNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdmFyaWFibGUtc2hhZG93aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1QQVNTIHZhcmlhYmxlU2hhZG93aW5nCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92YXJpYWJsZS1zaGFkb3dpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDE1YTBjYmE3ZDE3MGUxYWM0ZjE5ZjJlMDc1NDM1NmQyMmU5MjQ0OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmFyaWFibGUtc2hhZG93aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxt
ZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bv
c3RmaXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMudmFyaWFibGVT
aGFkb3dpbmcgPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBp
bnQgZm9vKCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHk7Ci0gICAgICAgICAgICBpbnQg
eCA9IDc7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHggPSA4OwotICAgICAg
ICAgICAgICAgIHkgPSB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHk7Ci0g
ICAgICAgIH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIDgpOwotCi0gICAgcHJvZ3JhbSA9IGAKLSAgICAgICAgaW50
IGZvbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5OwotICAgICAgICAgICAgaW50IHgg
PSA3OwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCB4ID0gODsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHkgPSB4OwotICAgICAgICAgICAgcmV0dXJuIHk7Ci0gICAgICAg
IH0KLSAgICBgOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSksIDcpOwotfQotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1j
b21wYXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29t
cGFyZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmU2NTE2
ZmFhMWUyZmNkMWI1YTlmOTY3YjYxYzFmYWUzN2FjNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1j
b21wYXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotUEFT
UyB2ZWN0b3JMVAotUEFTUyB2ZWN0b3JMVDIKLVBBU1MgdmVjdG9yTFQzCi1QQVNTIHZlY3RvckxU
RQotUEFTUyB2ZWN0b3JMVEUyCi1QQVNTIHZlY3RvckxURTMKLVBBU1MgdmVjdG9yR1QKLVBBU1Mg
dmVjdG9yR1RFCi1QQVNTIHZlY3RvckdURTIKLVBBU1MgdmVjdG9yR1RFMwotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbXBhcmUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxYWJkNjkzY2NmNzc4MDU2M2FiYmY2M2M0MDQ3ZjFhZDg2MWMxOTJmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93aGxzbC92ZWN0b3ItY29tcGFyZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+PT0uPC90aXRsZT4KLTxz
Y3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3
aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwotCi13aGxzbFRlc3RzLnZl
Y3RvckxUID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJv
b2wgZm9vKCkgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0g
ICAgICAgICAgICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAg
ICAgICAgICAgcmV0dXJuIGFsbCh2IDwgdjIpOwotICAgICAgICB9Ci0gICAgYDsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwg
dHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxUMiA9IGFzeW5jICgpID0+IHsKLSAgICBj
b25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGludDIg
diA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIgPSB2OwotICAgICAgICAgICAg
djIgLT0gMTA7Ci0KLSAgICAgICAgICAgIHJldHVybiAhYW55KHYgPCB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFQzID0gYXN5
bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewot
ICAgICAgICAgICAgaW50MiB2ID0gaW50MigxMCwgMjApOwotICAgICAgICAgICAgaW50MiB2MiA9
IHY7Ci0gICAgICAgICAgICB2Mi55ICs9IDEwOwotCi0gICAgICAgICAgICBib29sMiByZXN1bHQg
PSB2IDwgdjI7Ci0gICAgICAgICAgICByZXR1cm4gIXJlc3VsdC54ICYmIHJlc3VsdC55OwotICAg
ICAgICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckxU
RSA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZv
bygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAg
ICAgICAgZmxvYXQyIHYyID0gdjsKLSAgICAgICAgICAgIHYyICs9IDEwLjA7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBhbGwodiA8PSB2Mik7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVl
KTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yTFRFMiA9IGFzeW5jICgpID0+IHsKLSAgICBjb25z
dCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MiB2
ID0gZmxvYXQyKDEwLjAsIDIwLjApOwotICAgICAgICAgICAgZmxvYXQyIHYyID0gdjsKLQotICAg
ICAgICAgICAgcmV0dXJuIGFsbCh2IDw9IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSks
IHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JMVEUzID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAgICBmbG9hdDIgdjIgPSB2Owot
ICAgICAgICAgICAgdjIueSAtPSAxLjA7Ci0KLSAgICAgICAgICAgIGJvb2wyIHJlc3VsdCA9IHYg
PD0gdjI7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnggJiYgIXJlc3VsdC55OwotICAgICAg
ICB9Ci0gICAgYDsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihw
cm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvckdUID0g
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMTAuMCwgMjAuMCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdjIgPSB2OwotICAgICAgICAgICAgdjIgKz0gMTAuMDsKLQotICAgICAgICAgICAg
cmV0dXJuICFhbnkodiA+IHYyKTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwot
fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJv
Z3JhbSA9IGAKLSAgICAgICAgYm9vbCBmb28oKSB7Ci0gICAgICAgICAgICBmbG9hdDIgdiA9IGZs
b2F0MigxMC4wLCAyMC4wKTsKLSAgICAgICAgICAgIGZsb2F0MiB2MiA9IHY7Ci0gICAgICAgICAg
ICB2MiArPSAxMC4wOwotCi0gICAgICAgICAgICByZXR1cm4gIWFueSh2ID49IHYyKTsKLSAgICAg
ICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
cHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JHVEUy
ID0gYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9v
KCkgewotICAgICAgICAgICAgaW50MiB2ID0gaW50MigxMCwgMjApOwotICAgICAgICAgICAgaW50
MiB2MiA9IHY7Ci0KLSAgICAgICAgICAgIHJldHVybiBhbGwodiA+PSB2Mik7Ci0gICAgICAgIH0K
LSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXdobHNsVGVzdHMudmVjdG9yR1RFMyA9IGFz
eW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAgICBib29sIGZvbygpIHsK
LSAgICAgICAgICAgIGludDIgdiA9IGludDIoMTAsIDIwKTsKLSAgICAgICAgICAgIGludDIgdjIg
PSB2OwotICAgICAgICAgICAgdjIueSArPSAxMDsKLQotICAgICAgICAgICAgYm9vbDIgcmVzdWx0
ID0gdiA+PSB2MjsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQueCAmJiAhcmVzdWx0Lnk7Ci0g
ICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE1MDIwMDllZjAzMjBmMDI3NWM0ZWZhYzRlNWJmM2Q5ODY0OGEwNTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi0KLVBBU1MgdmVjdG9yQ29uc3RydWN0b3IKLVBBU1MgdmVj
dG9yQ29uc3RydWN0b3IyCi1QQVNTIHZlY3RvckNvbnN0cnVjdG9yMwotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWEyZmM0ZWRhZWU4MjI5Y2U0Y2QyZTQwY2ZlMGJhYjQzMDQ4ZDc4
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVjdG9ycy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9
dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT52ZWN0
b3IgY3Rvci48L3RpdGxlPgotPHNjcmlwdCBzcmM9ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMgPSB7fTsKLQotd2hsc2xUZXN0cy52ZWN0b3JD
b25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBwcm9ncmFtID0gYAotICAgICAg
ICBib29sIGZvbygpIHsKLSAgICAgICAgICAgIGZsb2F0MyB2ID0gZmxvYXQzKGZsb2F0MigxMC4w
LCAxMS4wKSwgMTIuMCk7Ci0gICAgICAgICAgICByZXR1cm4gdi54ID09IDEwLjAgJiYgdi55ID09
IDExLjAgJiYgdi56ID09IDEyLjA7Ci0gICAgICAgIH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
LX07Ci0KLXdobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0b3IyID0gYXN5bmMgKCkgPT4gewotICAg
IGNvbnN0IHByb2dyYW0gPSBgCi0gICAgICAgIGJvb2wgZm9vKCkgewotICAgICAgICAgICAgZmxv
YXQzIHYgPSBmbG9hdDMoMTAuMCwgZmxvYXQyKDExLjAsIDEyLjApKTsKLSAgICAgICAgICAgIHJl
dHVybiB2LnggPT0gMTAuMCAmJiB2LnkgPT0gMTEuMCAmJiB2LnogPT0gMTIuMDsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJv
Z3JhbSwgICJmb28iLCBbXSksIHRydWUpOwotfTsKLQotd2hsc2xUZXN0cy52ZWN0b3JDb25zdHJ1
Y3RvcjMgPSBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgcHJvZ3JhbSA9IGAKLSAgICAgICAgYm9v
bCBmb28oKSB7Ci0gICAgICAgICAgICBib29sMyB2ID0gYm9vbDModHJ1ZSwgYm9vbDIoZmFsc2Us
IHRydWUpKTsKLSAgICAgICAgICAgIHJldHVybiB2LnggJiYgIXYueSAmJiB2Lno7Ci0gICAgICAg
IH0KLSAgICBgOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKLX07Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLW1hdHJpeC1hZGRpdGlvbi1zdWJ0cmFjdGlvbi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDI3ODk5MzU3N2JkN2Qx
ZjE1ZGQxMDdjNmZlYjZkZGY4YWRhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRk
aXRpb24tc3VidHJhY3Rpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi0KLVBBU1MgdmVjdG9yQWRkaXRpb24KLVBBU1MgdmVjdG9yU3VidHJhY3Rpb24KLVBBU1Mg
bWF0cml4QWRkaXRpb24KLVBBU1MgbWF0cml4U3VidHJhY3Rpb24KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRyaXgtYWRkaXRpb24tc3VidHJhY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItbWF0cml4LWFkZGl0aW9uLXN1
YnRyYWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OGQ3NDI3Yzc2
YjYxYTg1ZDE1OWU1MDZkMDQzMWU5ZmJiNTY4MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1tYXRy
aXgtYWRkaXRpb24tc3VidHJhY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTxtZXRh
IG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgotPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3Rm
aXguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci1jb25zdCBlcHNpbG9uID0gMC4wMDAxOwot
Ci13aGxzbFRlc3RzLnZlY3RvckFkZGl0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9n
cmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQy
IHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgKyA3OwotICAgICAg
ICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBiKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9h
dDIgdSA9IHYgKyA3OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywg
NCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2OwotICAgICAgICAgICAgcmV0dXJuIHUu
eDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgKyB2Owot
ICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAg
ICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIo
MywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9ICt2OwotICAgICAgICAgICAgcmV0dXJuIHUu
eTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIi
LCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBhc3Nl
cnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQiLCBb
XSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxv
YXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2VydF9h
cHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtdKSwg
NCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLnZlY3RvclN1YnRyYWN0aW9uID0gYXN5bmMg
KCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9h
dDIgdSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAg
ICBmbG9hdCBiKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywg
NCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IHYgLSA3OwotICAgICAgICAgICAgcmV0dXJuIHUu
eTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBjKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IDcgLSB2Owot
ICAgICAgICAgICAgcmV0dXJuIHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAg
ICBmbG9hdDIgdSA9IDcgLSB2OwotICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQot
ICAgICAgICBmbG9hdCBlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyIHYgPSBmbG9h
dDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IC12OwotICAgICAgICAgICAgcmV0dXJu
IHUueDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBmKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmxvYXQyIHYgPSBmbG9hdDIoMywgNCk7Ci0gICAgICAgICAgICBmbG9hdDIgdSA9IC12Owot
ICAgICAgICAgICAgcmV0dXJuIHUueTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSks
IC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRG
dW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDQs
IGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0
aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9l
cXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJlIiwgW10pLCAtMywgZXBz
aWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24o
cHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJp
eEFkZGl0aW9uID0gYXN5bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBm
bG9hdCBhKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZs
b2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtICsg
NzsKLSAgICAgICAgICAgIHJldHVybiBuWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQy
KDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IG0gKyA3Owot
ICAgICAgICAgICAgcmV0dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywg
NCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyArIG07Ci0gICAg
ICAgICAgICByZXR1cm4gblswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwg
ZmxvYXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSA3ICsgbTsKLSAgICAgICAg
ICAgIHJldHVybiBuWzBdWzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9h
dDIoNSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9ICttOwotICAgICAgICAgICAgcmV0
dXJuIG5bMF1bMF07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2
KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gK207Ci0gICAgICAgICAgICByZXR1cm4gblsw
XVsxXTsKLSAgICAgICAgfQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2Fp
dCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImEiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAg
ImIiLCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBj
YWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImMiLCBbXSksIDEwLCBlcHNpbG9uKTsKLSAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImQi
LCBbXSksIDExLCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxs
RmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImUiLCBbXSksIDMsIGVwc2lsb24pOwotICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZiIsIFtd
KSwgNCwgZXBzaWxvbik7Ci19OwotCi13aGxzbFRlc3RzLm1hdHJpeFN1YnRyYWN0aW9uID0gYXN5
bmMgKCkgPT4gewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBmbG9hdCBhKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxv
YXQyKDUsIDYpKTsKLSAgICAgICAgICAgIGZsb2F0MngyIG4gPSBtIC0gNzsKLSAgICAgICAgICAg
IHJldHVybiBuWzBdWzBdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGIoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIo
NSwgNikpOwotICAgICAgICAgICAgZmxvYXQyeDIgbiA9IG0gLSA3OwotICAgICAgICAgICAgcmV0
dXJuIG5bMF1bMV07Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgYygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2
KSk7Ci0gICAgICAgICAgICBmbG9hdDJ4MiBuID0gNyAtIG07Ci0gICAgICAgICAgICByZXR1cm4g
blswXVswXTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBkKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQyeDIgbSA9IGZsb2F0MngyKGZsb2F0MigzLCA0KSwgZmxvYXQyKDUsIDYpKTsK
LSAgICAgICAgICAgIGZsb2F0MngyIG4gPSA3IC0gbTsKLSAgICAgICAgICAgIHJldHVybiBuWzBd
WzFdOwotICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MiBtID0gZmxvYXQyeDIoZmxvYXQyKDMsIDQpLCBmbG9hdDIoNSwgNikpOwotICAg
ICAgICAgICAgZmxvYXQyeDIgbiA9IC1tOwotICAgICAgICAgICAgcmV0dXJuIG5bMF1bMF07Ci0g
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0
MngyIG0gPSBmbG9hdDJ4MihmbG9hdDIoMywgNCksIGZsb2F0Mig1LCA2KSk7Ci0gICAgICAgICAg
ICBmbG9hdDJ4MiBuID0gLW07Ci0gICAgICAgICAgICByZXR1cm4gblswXVsxXTsKLSAgICAgICAg
fQotICAgIGA7Ci0KLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5j
dGlvbihwcm9ncmFtLCAgImEiLCBbXSksIC00LCBlcHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAgImIiLCBbXSksIC0zLCBl
cHNpbG9uKTsKLSAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlv
bihwcm9ncmFtLCAgImMiLCBbXSksIDQsIGVwc2lsb24pOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICAiZCIsIFtdKSwgMywgZXBzaWxv
bik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJv
Z3JhbSwgICJlIiwgW10pLCAtMywgZXBzaWxvbik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMo
YXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgICJmIiwgW10pLCAtNCwgZXBzaWxvbik7
Ci19OwotCi1ydW5UZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXgtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDY0M2E0OGNkOTAyMGJmYTYyOGEwNzQyMTY0
MzhhYjQ5YTYzNmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIHZlY3RvclR5cGVTeW50YXgKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3Itc3ludGF4Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE5MWY1NmZlZTYwYjY5ZDVkNDgzMDBkZmFhMGY1ZWRkNGViMzBj
Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1zeW50YXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBzdHJ1
Y3RzLjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwotCi13aGxzbFRlc3RzLnZlY3RvclR5cGVT
eW50YXggPSBhc3luYyAoKSA9PgotewotICAgIGxldCBwcm9ncmFtID0gYAotICAgICAgICBpbnQg
Zm9vMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludDIgeDsKLSAgICAgICAgICAgIHZlY3Rv
cjxpbnQsIDI+IHogPSBpbnQyKDMsIDQpOwotICAgICAgICAgICAgeCA9IHo7Ci0gICAgICAgICAg
ICByZXR1cm4geC55OwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGZvbzMoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQzIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8aW50LCAzPiB6ID0gaW50
MygzLCA0LCA1KTsKLSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAgcmV0dXJuIHguejsK
LSAgICAgICAgfQotCi0gICAgICAgIGludCBmb280KCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW50NCB4OwotICAgICAgICAgICAgdmVjdG9yPGludCw0PiB6ID0gaW50NCgzLCA0LCA1LCA2KTsK
LSAgICAgICAgICAgIHggPSB6OwotICAgICAgICAgICAgcmV0dXJuIHgudzsKLSAgICAgICAgfWA7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
MiIsIFtdKSwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzMiLCBbXSksIDUpOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA2KTsKLQotICAgIHByb2dyYW0gPSBgCi0gICAg
ICAgIHR5cGVkZWYgaSA9IGludDsKLSAgICAgICAgaW50IGZvbzIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQyIHg7Ci0gICAgICAgICAgICB2ZWN0b3I8aSwgMj4geiA9IGludDIoMywgNCk7
Ci0gICAgICAgICAgICB4ID0gejsKLSAgICAgICAgICAgIHJldHVybiB4Lnk7Ci0gICAgICAgIH1g
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
bzIiLCBbXSksIDQpOwotfQotcnVuVGVzdHMod2hsc2xUZXN0cyk7Ci08L3NjcmlwdD4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBh
cmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJp
YWJsZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NzM4MjhjNzQxYzJlNWQzOTZkN2YxMTYwMTg2OTA0NDFiYjNkMTk4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC92b2lkLXZhcmlhYmxlLXBhcmFtZXRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw0ICswLDAgQEAKLQotUEFTUyB2b2lkVmFyaWFibGUKLVBBU1Mgdm9pZFBhcmFtZXRlcgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdm9pZC12YXJpYWJsZS1wYXJhbWV0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFtZXRl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWY2MTk1MGZiZDM2OGEyODI3
YzU1MGM4NWNmODRjNDVlNGM4MjAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC92b2lkLXZhcmlhYmxlLXBhcmFt
ZXRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KLTx0aXRsZT5UZXN0IHN0cnVjdHMuPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJq
cy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0g
e307Ci0KLXdobHNsVGVzdHMudm9pZFZhcmlhYmxlID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHZvaWQgZm9vKCkgewotICAgICAg
ICAgICAgICAgIHZvaWQgeDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgYCk7Ci19Ci0KLXdobHNs
VGVzdHMudm9pZFBhcmFtZXRlciA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWls
KAotICAgICAgICBgCi0gICAgICAgICAgICB2b2lkIGZvbyh2b2lkIHgpIHsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgYCk7Ci19Ci0KLXJ1blRlc3RzKHdobHNsVGVzdHMpOwotPC9zY3JpcHQ+Ci08
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29w
LWJyZWFrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9v
cC1icmVhay1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVl
Nzg0OTIyZTJlZWNjNmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLWRyYXdCbGFj
a1NxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1i
cmVhay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODZhMmY0NWM5YWJmMTE2
NmQ4YzUzMjllYTQwMGI4M2Q5OWRkNjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFr
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBg
Ci1zdHJ1Y3QgVmVydGV4T3V0IHsKLSAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsK
LSAgICBmbG9hdCBzaGFkZSA6IGF0dHJpYnV0ZSgwKTsKLX0KLQotdmVydGV4IFZlcnRleE91dCB2
ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6
IGF0dHJpYnV0ZSgxKSkgewotICAgIFZlcnRleE91dCByZXN1bHQ7Ci0KLSAgICBib29sIGIgPSB0
cnVlOwotICAgIHVpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCAxMCkgewotICAgICAgICBpZiAo
YikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2hhZGUgPSBzaGFk
ZSArIDEuMDsKLSAgICAgICAgaSA9IGkgKyAxOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDog
YXR0cmlidXRlKDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBz
aGFkZSwgc2hhZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewot
ICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6
IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVy
TW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRT
dGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVy
In07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAg
IGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAi
bm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5k
ID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBh
bHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUu
QUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0
cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAw
fTsKLSAgICBjb25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJm
bG9hdCIsIG9mZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwg
YXR0cmlidXRlMV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNl
dDogYXR0cmlidXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3Qg
dmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0
eTogNywgdHlwZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpOwotICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlv
dXRzOiBbYmluZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRT
dGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMs
IGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDog
cGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0
ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA1ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVC
dWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNv
bnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1
ZmZlcjBBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0w
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjA7Ci0K
LSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
N10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0g
PSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXlbMTRdID0gMC4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0g
PSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxOF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAw
LjA7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZm
ZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1
ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBh
d2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlC
dWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNv
dXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6
IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0g
e2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3Jv
dXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRH
cm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQu
Y29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1
dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRw
dXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0
IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNv
bHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFy
Q29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwot
ICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1p
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1n
ZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNl
KS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSk7Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVP
bkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3do
aWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxz
bC93aGlsZS1sb29wLWNvbnRpbnVlLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52
YXM+Ci08c2NyaXB0PgotY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFz
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC93aGlsZS1sb29wLWNvbnRpbnVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJlZmYzNTcxOWNlODBkN2U0ODFhZDMwZTEwMGIxOGEwNDM3OGFlOGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3doaWxlLWxvb3AtY29udGludWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlw
dD4KLWNvbnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0
NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDAp
OwotfQotCi12ZXJ0ZXggVmVydGV4T3V0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBh
dHRyaWJ1dGUoMCksIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDEpKSB7Ci0gICAgVmVydGV4T3V0
IHJlc3VsdDsKLQotICAgIGJvb2wgYiA9IHRydWU7Ci0gICAgdWludCBpID0gMDsKLSAgICB3aGls
ZSAoKHNoYWRlID0gc2hhZGUgKyAwLjEsIGkgPCAxMCkpIHsKLSAgICAgICAgaWYgKGIpIHsKLSAg
ICAgICAgICAgIGkgPSBpICsgMTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0g
ICAgICAgIHNoYWRlID0gMC4wOwotICAgIH0KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0
aW9uOwotICAgIHJlc3VsdC5zaGFkZSA9IHNoYWRlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRl
KDApKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hh
ZGUsIDEuMCk7Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOwotICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owot
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0g
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAg
Y29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9
IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBj
b25zdCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9m
ZnNldDogMTZ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRl
MV07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmli
dXRlc307Ci0gICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5w
dXQgPSB7dmVydGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlw
ZTogInVuaWZvcm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJp
bWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3Rl
bmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OwotICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0g
MS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAwLjE7Ci0KLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzZdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzldID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxMF0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41Owot
ICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
MTRdID0gMC4xOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0g
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
OF0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAwLjE7Ci0gICAg
dmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlw
dG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0
IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2Ny
aXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNv
dXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwot
ICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZl
ci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNl
QnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6
IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlw
dG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRp
bmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRH
cm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0
KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0
OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJl
U3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUg
PSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJl
VmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAg
Y29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0
YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0
OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJl
ZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0
IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIu
YmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIu
c2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVy
dGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0g
ICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRl
dmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZp
Y2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkgewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0gICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dy
b3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93aGxzbC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTdiZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTky
YzNhZWEzM2MwZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgotPHNjcmlwdD4KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKLWRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNh
bnZhcyk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93aGxzbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3do
bHNsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOWJiMGEzODdjOThlMTcw
YmE5Y2QzNThmYjRhNzZlYmE5MjNlZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dobHNsLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAw
Ij48L2NhbnZhcz4KLTxzY3JpcHQ+Ci1jb25zdCBzaGFkZXJTb3VyY2UgPSBgCi12ZXJ0ZXggZmxv
YXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0IGkg
OiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24gewotICAgIHJldHVybiBwb3NpdGlvbjsKLX0K
LQotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bv
c2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKLSAgICByZXR1cm4gcG9zaXRpb247Ci19Ci1gOwotCi1j
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0KLWFzeW5j
IGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwotICAgIGNvbnN0IHZl
cnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hh
ZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwg
ZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJpbWl0aXZlVG9wb2xv
Z3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtm
cm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0IGFscGhhQmxlbmQg
PSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3QgY29sb3JTdGF0ZXMg
PSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1h
c2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVwdGhTdGVuY2lsU3Rh
dGUgPSBudWxsOwotICAgIAotICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGZvcm1hdDogImZsb2F0NCJ9OwotICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9j
YXRpb246IDEsIGZvcm1hdDogImZsb2F0In07Ci0gICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTog
MTYsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKLSAgICBjb25zdCBpbnB1dDEgPSB7c3Ry
aWRlOiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUxXX07Ci0gICAgY29uc3QgaW5wdXRzID0g
W2lucHV0MCwgaW5wdXQxXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJz
OiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5k
aW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIi
fV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAg
ICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFz
dGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElu
cHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07Ci0gICAgY29uc3Qg
cmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKLSAgICBjb25zdCB2
ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0gYXdhaXQgdmVydGV4QnVm
ZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVmZmVyKTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzJdID0gMS4w
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxOwotICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbNF0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
NV0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs2XSA9IDEuMDsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzddID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzhdID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOV0gPSAtMC41
OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTBdID0gMS4wOwotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTFdID0gMTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5
WzEyXSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEzXSA9IDAuNTsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE0XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzE1XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMC51bm1hcCgpOwotCi0gICAg
Y29uc3QgdmVydGV4QnVmZmVyMURlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMSA9IGRldmljZS5jcmVh
dGVCdWZmZXIodmVydGV4QnVmZmVyMURlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZl
cjFBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjEubWFwV3JpdGVBc3luYygpOwotICAg
IGNvbnN0IHZlcnRleEJ1ZmZlcjFGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRl
eEJ1ZmZlcjFBcnJheUJ1ZmZlcik7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVswXSA9
IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsxXSA9IDE7Ci0gICAgdmVydGV4QnVm
ZmVyMUZsb2F0MzJBcnJheVsyXSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMUZsb2F0MzJBcnJheVsz
XSA9IDE7Ci0gICAgdmVydGV4QnVmZmVyMS51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VC
dWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9
OwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJj
ZUJ1ZmZlckRlc2NyaXB0b3IpOwotICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIg
PSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3Vy
Y2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJy
YXlCdWZmZXIpOwotICAgIHJlc291cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICBy
ZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5n
ID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5k
R3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2Jp
bmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJncHUiKTsKLSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rl
dmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRl
eHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91
dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBv
dXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQot
ICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
IC8vIHt9Ci0gICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNv
bnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCBy
ZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNs
ZWFyQ29sb3I6IHJlZH1dOwotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxs
OwotICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnR9OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMCwgdmVydGV4QnVmZmVyMV0s
IFswLCAwXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29t
bWFuZEJ1ZmZlcl0pOwotfQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotZ2V0QmFzaWNEZXZpY2UoKS50aGVuKGZ1bmN0aW9uKGRldmljZSkg
ewotICAgIHN0YXJ0KGRldmljZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfSwgZnVuY3Rpb24oKSB7Ci0g
ICAgZHJhd1doaXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YjE4MTlmMGEyMTI1YTE4ZjlkYzkzNTEy
OGNlMzA0YzlhOWMyMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLWFyZ3VtZW50LWxlbmd0aC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLVBBU1MgYml0QW5kV3Jv
bmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGJp
dE9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBiaXRYb3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1Q
QVNTIGRlY1dyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0
aAotUEFTUyBkb3RPcGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgZG90T3Bl
cmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIGdyZWF0ZXJFcXVhbFdyb25nQXJndW1lbnRM
ZW5ndGgKLVBBU1MgZ3JlYXRlcldyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgaW5jV3JvbmdBcmd1
bWVudExlbmd0aAotUEFTUyBpbmRleE9wZXJhdG9yU2V0dGVyV3JvbmdBcmd1bWVudExlbmd0aAot
UEFTUyBpbmRleE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBsU2hpZnRXcm9uZ0Fy
Z3VtZW50TGVuZ3RoCi1QQVNTIG1pbnVzV3JvbmdBcmd1bWVudExlbmd0aAotUEFTUyBtb2R1bG9X
cm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi1QQVNTIHJT
aGlmdFdyb25nQXJndW1lbnRMZW5ndGgKLVBBU1MgdGltZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5n
dGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC93cm9uZy1hcmd1bWVudC1sZW5ndGgu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkYTcxZTJmZmI1OGEzMzBmNzJk
NjM4MjgxNGU0N2JmY2ZmZTY5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctYXJndW1lbnQtbGVuZ3Ro
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNjQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KLTx0aXRsZT5UZXN0IGludCBiaXQgbWF0aC48L3RpdGxlPgotPHNjcmlwdCBzcmM9
ImpzL3Rlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IHdobHNsVGVzdHMg
PSB7fTsKLQotd2hsc2xUZXN0cy5iaXRBbmRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkg
PT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ImKEZvbykgeyByZXR1cm4gMzI7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvciYoRm9v
KSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNr
RmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAg
IGludCBvcGVyYXRvciYoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5iaXROb3RXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcn4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsg
fQotICAgICAgICAgICAgaW50IG9wZXJhdG9yfihGb28sIEZvbykgeyByZXR1cm4gNTM0OyB9Ci0g
ICAgICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuYml0T3JXcm9uZ0FyZ3VtZW50TGVu
Z3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAg
ICAgICAgICAgIHN0cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3J8KCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvcnwoRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0K
LSAgICAgICAgICAgIGludCBvcGVyYXRvcnwoRm9vLCBGb28sIEZvbykgeyByZXR1cm4gNzY7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5iaXRYb3JXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcl4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yXihGb28pIHsgcmV0dXJuIDUz
NDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAg
ICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9y
XihGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19
Ci13aGxzbFRlc3RzLmRlY1dyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAg
IGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0o
KSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tG
YWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAg
aW50IG9wZXJhdG9yLS0oRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLX0KLXdobHNsVGVzdHMuZGl2aWRlV3JvbmdBcmd1bWVudExlbmd0aCA9IGFzeW5jICgp
ID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQg
b3BlcmF0b3IvKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIGludCBvcGVyYXRvci8oRm9vKSB7IHJldHVybiA1MzQ7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci8oRm9vLCBGb28sIEZvbykg
eyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5kb3RP
cGVyYXRvclNldHRlcldyb25nQXJndW1lbnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3
YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAg
ICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVyYXRvci5mb289KEZvbykgeyByZXR1
cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIEZvbyBvcGVy
YXRvci5mb289KEZvbywgaW50LCBpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAg
ICAgICAKLX0KLXdobHNsVGVzdHMuZG90T3BlcmF0b3JXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvci5mb28oKSB7IHJldHVybiA0MjsgfQotICAgICAgICBgKTsKLSAgICAgICAg
Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyhGb28sIGludCkgeyByZXR1cm4gNDI7
IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5ncmVhdGVyRXF1YWxXcm9u
Z0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0g
ICAgICAgIGAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PSgpIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PShG
b28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I+PShGb28sIEZvbywgRm9vKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIGApOwotICAgICAgICAKLX0KLXdobHNsVGVzdHMuZ3JlYXRlcldyb25nQXJndW1lbnRMZW5n
dGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAg
ICAgICAgICAgYm9vbCBvcGVyYXRvcj4oKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGApOwot
ICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0
cnVjdCBGb28geyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPihGb28pIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAg
ICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYCk7Ci0gICAgICAg
IAotfQotd2hsc2xUZXN0cy5pbmNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cisrKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNo
ZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvcisrKEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBgKTsK
LSAgICAgICAgCi19Ci13aGxzbFRlc3RzLmluZGV4T3BlcmF0b3JTZXR0ZXJXcm9uZ0FyZ3VtZW50
TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAK
LSAgICAgICAgICAgIGludCBvcGVyYXRvcltdPSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcltdPShpbnQpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvcltdPShpbnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAot
ICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9y
W109KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotd2hsc2xUZXN0cy5pbmRleE9wZXJhdG9yV3JvbmdBcmd1bWVudExlbmd0aCA9IGFz
eW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBpbnQgb3BlcmF0b3JbXSgpIHsgcmV0dXJuIDQyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdKGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0
IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oaW50LCBp
bnQsIGludCkgeyByZXR1cm4gNDI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xU
ZXN0cy5sU2hpZnRXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2Fp
dCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcjw8KCkgeyBy
ZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgK
LSAgICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBv
cGVyYXRvcjw8KEZvbykgeyByZXR1cm4gNTM0OyB9Ci0gICAgICAgIGApOwotICAgICAgICAKLSAg
ICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28geyB9
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3I8PChGb28sIEZvbywgRm9vKSB7IHJldHVybiA3Njsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLm1pbnVzV3JvbmdBcmd1bWVu
dExlbmd0aCA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItKCkgeyByZXR1cm4gMzI7IH0KLSAgICAgICAgYCk7
Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAg
c3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVyYXRvci0oRm9vLCBGb28sIEZvbykg
eyByZXR1cm4gNzY7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotfQotd2hsc2xUZXN0cy5tb2R1
bG9Xcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0Zh
aWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvciUoKSB7IHJldHVybiAzMjsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJShG
b28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hl
Y2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAg
ICAgaW50IG9wZXJhdG9yJShGb28sIEZvbywgRm9vKSB7IHJldHVybiA3NjsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLnBsdXNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5
bmMgKCkgPT4KLXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAg
IGludCBvcGVyYXRvcisoKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0g
ICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsg
fQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKyhGb28sIEZvbywgRm9vKSB7IHJldHVybiA3Njsg
fQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci13aGxzbFRlc3RzLnJTaGlmdFdyb25nQXJndW1l
bnRMZW5ndGggPSBhc3luYyAoKSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAg
YAotICAgICAgICAgICAgaW50IG9wZXJhdG9yPj4oKSB7IHJldHVybiAzMjsgfQotICAgICAgICBg
KTsKLSAgICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yPj4oRm9vKSB7IHJldHVy
biA1MzQ7IH0KLSAgICAgICAgYCk7Ci0gICAgICAgIAotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7IH0KLSAgICAgICAgICAgIGludCBvcGVy
YXRvcj4+KEZvbywgRm9vLCBGb28pIHsgcmV0dXJuIDc2OyB9Ci0gICAgICAgIGApOwotICAgICAg
ICAKLX0KLXdobHNsVGVzdHMudGltZXNXcm9uZ0FyZ3VtZW50TGVuZ3RoID0gYXN5bmMgKCkgPT4K
LXsKLSAgICBhd2FpdCBjaGVja0ZhaWwoCi0gICAgICAgIGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvciooKSB7IHJldHVybiAzMjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi0gICAgYXdhaXQg
Y2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsgfQotICAgICAg
ICAgICAgaW50IG9wZXJhdG9yKihGb28pIHsgcmV0dXJuIDUzNDsgfQotICAgICAgICBgKTsKLSAg
ICAgICAgCi0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yKihGb28sIEZvbywgRm9vKSB7IHJl
dHVybiA3NjsgfQotICAgICAgICBgKTsKLSAgICAgICAgCi19Ci0KLXJ1blRlc3RzKHdobHNsVGVz
dHMpOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvd3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3dyb25nLXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGQ0OTFlNTMxNmM5ZjY2YThmY2VjOGU5MjEyYjYyNGVlZDczMDc4My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
d3JvbmctdHlwZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0K
LVBBU1MgZGVjV3JvbmdUeXBlcwotUEFTUyBpbmNXcm9uZ1R5cGVzCi1QQVNTIGdyZWF0ZXJUaGFu
V3JvbmdSZXR1cm5UeXBlCi1QQVNTIGdyZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZQotUEFTUyBp
bmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlwZQotUEFTUyBzZXR0ZXJXaXRoTWlzbWF0Y2hlZFR5
cGUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3dyb25nLXR5cGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxYWIyY2ZiZTI0NDQxMjdjMjE5OTU1M2Q1MDUyOTY5YWM3
ZjY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvd3JvbmctdHlwZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDgxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04
PgotPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Ci08dGl0bGU+VGVzdCBpbnQg
Yml0IG1hdGguPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1jb25zdCB3aGxzbFRlc3RzID0ge307Ci0KLXdobHNsVGVzdHMuZGVjV3Jv
bmdUeXBlcyA9IGFzeW5jICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBg
Ci0gICAgICAgICAgICBpbnQgb3BlcmF0b3ItLShmbG9hdCkgeyByZXR1cm4gMzI7IH0KLSAgICAg
ICAgYCk7Ci0gICAgICAgIAotfQotCi13aGxzbFRlc3RzLmluY1dyb25nVHlwZXMgPSBhc3luYyAo
KSA9PgotewotICAgIGF3YWl0IGNoZWNrRmFpbCgKLSAgICAgICAgYAotICAgICAgICAgICAgaW50
IG9wZXJhdG9yKysoZmxvYXQpIHsgcmV0dXJuIDMyOyB9Ci0gICAgICAgIGApOwotICAgICAgICAK
LX0KLQotd2hsc2xUZXN0cy5ncmVhdGVyVGhhbldyb25nUmV0dXJuVHlwZSA9IGFzeW5jICgpID0+
Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBpbnQgb3Bl
cmF0b3I+KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSArIGI7IH0KLSAgICAgICAgYCk7Ci0gICAg
ICAgIAotfQotCi13aGxzbFRlc3RzLmdyZWF0ZXJFcXVhbFdyb25nUmV0dXJuVHlwZSA9IGFzeW5j
ICgpID0+Ci17Ci0gICAgYXdhaXQgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAgICBp
bnQgb3BlcmF0b3I+PShpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGEgKyBiOyB9Ci0gICAgICAgIGAp
OwotICAgICAgICAKLX0KLQotd2hsc2xUZXN0cy5pbmRleFNldHRlcldpdGhNaXNtYXRjaGVkVHlw
ZSA9IGFzeW5jICgpID0+Ci17Ci0gICAgY2hlY2tGYWlsKAotICAgICAgICBgCi0gICAgICAgICAg
ICBmbG9hdCBvcGVyYXRvcltdKGludCwgdWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gNS40MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBvcGVyYXRv
cltdPShpbnQsIHVpbnQsIGludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gNTQzOwotICAgICAgICAgICAgfQotICAgICAgICBgKTsKLX0KLQotd2hsc2xUZXN0cy5zZXR0
ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBhc3luYyAoKSA9PgotewotICAgIGNoZWNrRmFpbCgKLSAg
ICAgICAgYAotICAgICAgICAgICAgZmxvYXQgb3BlcmF0b3IuZm9vKGludCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludCBvcGVyYXRvci5mb289KGludCwgaW50KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiA1NDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApOwotfQotCi1ydW5U
ZXN0cyh3aGxzbFRlc3RzKTsKLTwvc2NyaXB0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMtMi1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWVlNzg0OTIyZTJlZWNj
NmM3MDlmNjE4MGY2ODNhOTZjYzRlMGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJvLWluaXRpYWxpemUt
dmFsdWVzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08c2NyaXB0PgotY29uc3Qg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotZHJhd0JsYWNrU3F1
YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTNm
Nzk2MWVhZWZiMWZmYTJiOWQzNGY4ODUxZDQ0YTZjOWM4MGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC96ZXJv
LWluaXRpYWxpemUtdmFsdWVzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgotPHNjcmlwdD4KLWNv
bnN0IHNoYWRlclNvdXJjZSA9IGAKLXN0cnVjdCBWZXJ0ZXhPdXQgewotICAgIGZsb2F0NCBwb3Np
dGlvbiA6IFNWX1Bvc2l0aW9uOwotICAgIGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApOwotfQot
Ci1zdHJ1Y3QgQmFyIHsKLSAgICBmbG9hdCB5OwotICAgIGZsb2F0IHkxOwotICAgIGZsb2F0IHky
OwotICAgIGZsb2F0IHkzOwotICAgIGZsb2F0IHk0OwotICAgIGZsb2F0IHk1OwotICAgIGZsb2F0
IHk2OwotICAgIGZsb2F0IHk3OwotICAgIGZsb2F0IHk4OwotICAgIGZsb2F0IHk5OwotICAgIGZs
b2F0IHkxMDsKLSAgICBmbG9hdCB5MTE7Ci0gICAgZmxvYXQgeTEyOwotICAgIGZsb2F0IHkxMzsK
LSAgICBmbG9hdCB5MTQ7Ci0gICAgZmxvYXQgeTE1OwotICAgIGZsb2F0IHkxNjsKLSAgICBmbG9h
dCB5MTc7Ci0gICAgZmxvYXQgeTE4OwotICAgIGZsb2F0IHkxOTsKLSAgICBmbG9hdCB5MjA7Ci19
Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJp
YnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsKLSAgICBWZXJ0ZXhPdXQgcmVz
dWx0OwotCi0gICAgQmFyIGJhcjsKLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwot
ICAgIHJlc3VsdC5zaGFkZSA9IGJhci55MjA7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1m
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkp
IDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwg
MS4wKTsKLX0KLWA7Ci0KLWNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKLQotYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7Ci0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
fSk7Ci0gICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5
UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKLSAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVs
ZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKLSAgICBjb25z
dCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Ci0gICAgY29uc3QgcmFzdGVy
aXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07Ci0gICAg
Y29uc3QgYWxwaGFCbGVuZCA9IHt9OwotICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKLSAgICBj
b25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNv
bG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZS5BTEwKLSAgICBjb25z
dCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7Ci0KLSAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3No
YWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQiLCBvZmZzZXQ6IDB9OwotICAgIGNvbnN0
IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGZvcm1hdDogImZsb2F0Iiwgb2Zmc2V0
OiAxNn07Ci0gICAgY29uc3QgYXR0cmlidXRlcyA9IFthdHRyaWJ1dGUwLCBhdHRyaWJ1dGUxXTsK
LSAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAyMCwgYXR0cmlidXRlU2V0OiBhdHRyaWJ1dGVz
fTsKLSAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKLSAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9
IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OwotCi0gICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAi
dW5pZm9ybS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7Ci0gICAgY29u
c3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3Jv
dXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0gICAgY29uc3QgcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRp
dmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2ls
U3RhdGUsIHZlcnRleElucHV0LCBzYW1wbGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07Ci0gICAgY29uc3QgcmVuZGVyUGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBE
ZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDUgKiA0
LCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRF
fTsKLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgdmVydGV4QnVmZmVyMEFycmF5QnVmZmVyID0g
YXdhaXQgdmVydGV4QnVmZmVyMC5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMEFycmF5QnVm
ZmVyKTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzBdID0gLTAuNTsKLSAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzFdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbM10gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IDEuMDsKLQotICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbNV0gPSAtMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDEuMDsKLSAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzhdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbOV0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IC0wLjU7Ci0gICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxM10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0g
PSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE1XSA9IDAuNTsKLSAgICB2
ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzE3XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE4XSA9
IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEuMDsKLSAgICB2ZXJ0
ZXhCdWZmZXIwLnVubWFwKCk7Ci0KLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3Ig
PSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0gICAgY29uc3QgcmVz
b3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRv
cik7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNl
QnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKLSAgICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzb3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7Ci0gICAg
cmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlbMF0gPSAxOwotICAgIHJlc291cmNlQnVmZmVyLnVu
bWFwKCk7Ci0KLSAgICBjb25zdCBidWZmZXJCaW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZm
ZXIsIHNpemU6IDR9OwotICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwg
cmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OwotICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3Ig
PSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119
OwotICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3Vw
RGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdw
dSIpOwotICAgIGNvbnN0IHN3YXBDaGFpbkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJi
Z3JhOHVub3JtIn07Ci0gICAgY29uc3Qgc3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2Fw
Q2hhaW4oc3dhcENoYWluRGVzY3JpcHRvcik7Ci0gICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3
YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3
ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOwotCi0gICAgY29uc3QgY29tbWFu
ZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30KLSAgICBjb25z
dCByZWQgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07Ci0gICAgY29uc3QgY29sb3JBdHRhY2ht
ZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51
bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcjogcmVkfV07
Ci0gICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVu
ZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudH07Ci0gICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdp
blJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOwotICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhC
dWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwXSwgWzBdKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKLSAgICBj
b25zdCBjb21tYW5kQnVmZmVyID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7Ci0gICAgZGV2aWNl
LmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Ci19Ci0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLWdldEJhc2ljRGV2aWNl
KCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKLSAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9KTsKLX0sIGZ1bmN0aW9uKCkgewotICAgIGRyYXdCbGFja1NxdWFyZU9uQmx1ZUJhY2tncm91
bmRJblNvZnR3YXJlKGNhbnZhcyk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvemVyby1pbml0aWFsaXpl
LXZhbHVlcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3plcm8taW5p
dGlhbGl6ZS12YWx1ZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2FlZTc4NDkyMmUyZWVjYzZjNzA5ZjYxODBmNjgzYTk2Y2M0ZTBlMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvemVyby1pbml0aWFsaXplLXZhbHVlcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4K
LTxzY3JpcHQ+Ci1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci1kcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3plcm8taW5pdGlhbGl6ZS12YWx1ZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjAzNmY4NDU0NGM5NTY0NDE1NzY0OGZjZmE0NmEyOTI3ZjcwNWM0OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvemVyby1pbml0aWFsaXplLXZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Ci08
c2NyaXB0PgotY29uc3Qgc2hhZGVyU291cmNlID0gYAotc3RydWN0IFZlcnRleE91dCB7Ci0gICAg
ZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Ci0gICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1
dGUoMCk7Ci19Ci0KLXRocmVhZCBmbG9hdCogcHRyKCkgewotICAgIGZsb2F0IGxvY2FsOwotICAg
IHJldHVybiAmbG9jYWw7Ci19Ci0KLXZlcnRleCBWZXJ0ZXhPdXQgdmVydGV4U2hhZGVyKGZsb2F0
NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMSkpIHsK
LSAgICBWZXJ0ZXhPdXQgcmVzdWx0OwotCi0gICAgdGhyZWFkIGZsb2F0KiBwID0gcHRyKCk7Ci0g
ICAgKnAgPSAxLjA7Ci0gICAgZmxvYXQgdmFsdWUgPSAqcHRyKCk7IC8vIGNhbGxpbmcgcHRyKCkg
emVybyBpbml0aWFsaXplcy4KLQotICAgIHJlc3VsdC5wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAg
IHJlc3VsdC5zaGFkZSA9IHZhbHVlOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0IHNoYWRlIDogYXR0cmlidXRlKDApKSA6IFNW
X1RhcmdldCAwIHsKLSAgICByZXR1cm4gZmxvYXQ0KHNoYWRlLCBzaGFkZSwgc2hhZGUsIDEuMCk7
Ci19Ci1gOwotCi1jb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgewotICAgIGNvbnN0IHNoYWRlck1v
ZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOwot
ICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50
OiAidmVydGV4U2hhZGVyIn07Ci0gICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07Ci0gICAgY29uc3QgcHJp
bWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOwotICAgIGNvbnN0IHJhc3Rlcml6YXRp
b25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OwotICAgIGNvbnN0
IGFscGhhQmxlbmQgPSB7fTsKLSAgICBjb25zdCBjb2xvckJsZW5kID0ge307Ci0gICAgY29uc3Qg
Y29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJs
ZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGUuQUxMCi0gICAgY29uc3QgZGVw
dGhTdGVuY2lsU3RhdGUgPSBudWxsOwotCi0gICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJM
b2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKLSAgICBjb25zdCBhdHRy
aWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9
OwotICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07Ci0gICAg
Y29uc3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307Ci0g
ICAgY29uc3QgaW5wdXRzID0gW2lucHV0MF07Ci0gICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVy
dGV4QnVmZmVyczogaW5wdXRzfTsKLQotICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZv
cm0tYnVmZmVyIn1dfTsKLSAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5
b3V0XX07Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVM
YXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9w
b2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRl
LCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9Owot
ICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07Ci0g
ICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVy
MERlc2NyaXB0b3IpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0
IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsyXSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOwotICAg
IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7Ci0KLSAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzVdID0gLTAuNTsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZd
ID0gMC41OwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7Ci0gICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKLSAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQz
MkFycmF5WzldID0gMS4wOwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAw
LjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OwotICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMTNdID0gMS4wOwotICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4w
OwotCi0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7Ci0gICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxN10gPSAxLjA7Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7
Ci0gICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7Ci0gICAgdmVydGV4QnVm
ZmVyMC51bm1hcCgpOwotCi0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlVOSUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OwotICAgIGNvbnN0IHJlc291cmNl
QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOwot
ICAgIGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7Ci0gICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIHJlc291
cmNlQnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKLSAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgp
OwotCi0gICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBz
aXplOiA0fTsKLSAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOwotCi0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsK
LSAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1
bm9ybSJ9OwotICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWlu
KHN3YXBDaGFpbkRlc2NyaXB0b3IpOwotICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hh
aW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKLSAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91
dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKLQotICAgIGNvbnN0IGNvbW1hbmRFbmNv
ZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9Ci0gICAgY29uc3QgcmVk
ID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OwotICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMg
PSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBs
b2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOwotICAg
IGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwotICAgIGNvbnN0IHJlbmRlclBh
c3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9
OwotICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5k
ZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShyZW5kZXJQaXBlbGluZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdy
b3VwKDAsIGJpbmRHcm91cCk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVy
cygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0
LCAxLCAwLCAwKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgY29uc3Qg
Y29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwotICAgIGRldmljZS5nZXRR
dWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwotfQotCi1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1nZXRCYXNpY0RldmljZSgpLnRo
ZW4oZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19LCBmdW5jdGlvbigpIHsKLSAgICBkcmF3QmxhY2tTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDYxNmYwNjBjMThlNjFhOWQ5
MjdmMzRlOTIxNDg4YjliMjJhMmIxNWIuLjFlMTE0ODk1OTJlNmQyMmI5ZWVkMDUzMGM5MmJlNGI2
NDUyMmE0NjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gU3RvcCBidWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExT
TCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDIxLTA3LTI5ICBBZHJpYW4g
UGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBV
c2UgYW4gaW1wb3J0ZWQgdGFyZ2V0IGZvciB0aGUgbGliZ2NyeXB0IGxpYnJhcnkK
</data>
<flag name="review"
          id="457122"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>